From 64bf731a6cabf9a7cbde70876eeeb97f8700f2f5 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Mon, 23 Dec 2024 09:40:23 +0100 Subject: [PATCH] Fixes --- .../System/PSC/Invoice/InvoiceTS/deno.json | 4 +- .../System/PSC/Invoice/InvoiceTS/deno.lock | 108 +- .../PSC/Invoice/InvoiceTS/src/app/app.tsx | 4 +- .../Invoice/InvoiceTS/src/assets/index.css | 5 + .../System/PSC/Invoice/InvoiceTS/src/main.tsx | 2 +- .../PSC/Invoice/InvoiceTS/src/model/order.ts | 6 +- .../account/AccountSelectComponent.tsx | 8 +- .../src/modules/base/BaseComponent.tsx | 8 +- .../InvoiceTS/src/modules/base/Button.tsx | 3 - .../src/modules/button/ButtonComponent.tsx | 10 +- .../src/modules/calc/CalcComponent.tsx | 8 +- .../src/modules/contact/AddressModal.tsx | 2 +- .../src/modules/contact/AddressSelect.tsx | 6 +- .../src/modules/contact/ContactComponent.tsx | 6 +- .../src/modules/contact/ContactModal.tsx | 2 +- .../modules/contact/ContactModalComponent.tsx | 4 +- .../src/modules/contact/ContactSelect.tsx | 8 +- .../src/modules/draft/DraftComponent.tsx | 4 +- .../src/modules/info/InfoFieldComponent.tsx | 8 +- .../src/modules/order/OrderAliasComponent.tsx | 4 +- .../src/modules/payment/PaymentComponent.tsx | 8 +- .../positions/AddPositionComponent.tsx | 2 +- .../modules/positions/PositionsComponent.tsx | 5 +- .../src/modules/product/ProductForm.tsx | 4 +- .../modules/product/ProductGroupSelect.tsx | 6 +- .../src/modules/product/ProductSelect.tsx | 6 +- .../modules/shipping/ShippingComponent.tsx | 8 +- .../src/modules/shop/ShopSelectComponent.tsx | 8 +- .../src/modules/topbar/TopBarComponent.tsx | 2 +- .../src/modules/type/TypeSelectComponent.tsx | 4 +- .../Invoice/InvoiceTS/src/services/account.ts | 6 +- .../Invoice/InvoiceTS/src/services/address.ts | 6 +- .../Invoice/InvoiceTS/src/services/contact.ts | 6 +- .../Invoice/InvoiceTS/src/services/country.ts | 6 +- .../Invoice/InvoiceTS/src/services/order.ts | 10 +- .../Invoice/InvoiceTS/src/services/payment.ts | 6 +- .../Invoice/InvoiceTS/src/services/product.ts | 6 +- .../InvoiceTS/src/services/productgroup.ts | 6 +- .../InvoiceTS/src/services/shipping.ts | 6 +- .../Invoice/InvoiceTS/src/services/shop.ts | 11 +- .../Invoice/InvoiceTS/src/services/token.ts | 6 +- .../PSC/Invoice/InvoiceTS/src/state/order.ts | 8 +- .../PSC/Invoice/InvoiceTS/tailwind.config.js | 2 +- .../PSC/Invoice/InvoiceTS/tsconfig.app.json | 24 + .../PSC/Invoice/InvoiceTS/tsconfig.json | 10 +- .../PSC/Invoice/InvoiceTS/tsconfig.node.json | 22 + .../public/invoicets/assets/index.css | 4992 +++++++++++++++++ .../public/invoicets/assets/index.js | 2353 ++++---- .../Resources/public/invoicets/index.html | 1 + .../views/backend/index/index.html.twig | 2 +- 50 files changed, 6617 insertions(+), 1135 deletions(-) create mode 100644 src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/assets/index.css create mode 100644 src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.app.json create mode 100644 src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.node.json create mode 100644 src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.css diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.json b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.json index b7aaea8be..97999b7b9 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.json +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.json @@ -27,8 +27,8 @@ "flowbite-react": "npm:flowbite-react@^0.10.2", "postcss": "npm:postcss@^8.4.49", "prop-types": "npm:prop-types@^15.8.1", - "react": "npm:react@^18.3.1", - "react-dom": "npm:react-dom@^18.3.1", + "react": "https://esm.sh/react@18.2.0", + "react-dom": "https://esm.sh/react-dom@18.2.0", "react-router-dom": "npm:react-router-dom@^7.0.2", "react-select-async-paginate": "npm:react-select-async-paginate@^0.7.7", "reflect-metadata": "npm:reflect-metadata@^0.2.2", diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.lock b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.lock index c98c62b02..5b1c7331f 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.lock +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.lock @@ -7,7 +7,7 @@ "jsr:@std/path@1": "1.0.8", "jsr:@udibo/esbuild-plugin-postcss@~0.1.3": "0.1.3", "npm:@deno/vite-plugin@1": "1.0.2_vite@6.0.5", - "npm:@ebay/nice-modal-react@^1.2.13": "1.2.13_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "npm:@ebay/nice-modal-react@^1.2.13": "1.2.13_react@18.3.1_react-dom@19.0.0__react@19.0.0", "npm:@rjsf/core@^5.23.2": "5.23.2_@rjsf+utils@5.23.2__react@18.3.1_react@18.3.1", "npm:@rjsf/validator-ajv6@^5.23.2": "5.23.2_@rjsf+utils@5.23.2__react@18.3.1_react@18.3.1", "npm:@types/react-dom@^18.3.1": "18.3.5_@types+react@18.3.18", @@ -15,20 +15,19 @@ "npm:@vitejs/plugin-react-swc@^3.7.1": "3.7.2_vite@6.0.5", "npm:autoprefixer@^10.4.20": "10.4.20_postcss@8.4.49", "npm:axios@^1.7.9": "1.7.9", - "npm:flowbite-react@~0.10.2": "0.10.2_react@18.3.1_react-dom@18.3.1__react@18.3.1_tailwindcss@3.4.17__postcss@8.4.49", + "npm:flowbite-react@~0.10.2": "0.10.2_react@18.3.1_react-dom@19.0.0__react@19.0.0_tailwindcss@3.4.17__postcss@8.4.49", "npm:postcss-modules@6": "6.0.1_postcss@8.4.49", "npm:postcss@8": "8.4.49", "npm:postcss@^8.4.49": "8.4.49", "npm:preact@10.22.1": "10.22.1", "npm:preact@^10.22.1": "10.25.3", "npm:prop-types@^15.8.1": "15.8.1", - "npm:react-dom@^18.3.1": "18.3.1_react@18.3.1", - "npm:react-router-dom@^7.0.2": "7.0.2_react@18.3.1_react-dom@18.3.1__react@18.3.1", - "npm:react-select-async-paginate@~0.7.7": "0.7.7_react@18.3.1_react-select@5.9.0__react@18.3.1__react-dom@18.3.1___react@18.3.1__@types+react@18.3.18_react-dom@18.3.1__react@18.3.1_@types+react@18.3.18", + "npm:react-router-dom@^7.0.2": "7.1.0_react@18.3.1_react-dom@19.0.0__react@19.0.0", + "npm:react-select-async-paginate@~0.7.7": "0.7.7_react@18.3.1_react-select@5.9.0__react@18.3.1__react-dom@19.0.0___react@19.0.0__@types+react@18.3.18_@types+react@18.3.18", "npm:react@^18.3.1": "18.3.1", "npm:reflect-metadata@~0.2.2": "0.2.2", "npm:rxjs@^7.8.1": "7.8.1", - "npm:styled-components@^6.1.13": "6.1.13_react@18.3.1_react-dom@18.3.1__react@18.3.1", + "npm:styled-components@^6.1.13": "6.1.13_react@18.3.1_react-dom@19.0.0__react@19.0.0", "npm:tailwindcss@^3.4.17": "3.4.17_postcss@8.4.49", "npm:tsyringe-neo@^5.1.0": "5.1.0", "npm:use-debounce@^10.0.4": "10.0.4_react@18.3.1", @@ -151,10 +150,10 @@ "vite" ] }, - "@ebay/nice-modal-react@1.2.13_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "@ebay/nice-modal-react@1.2.13_react@18.3.1_react-dom@19.0.0__react@19.0.0": { "integrity": "sha512-jx8xIWe/Up4tpNuM02M+rbnLoxdngTGk3Y8LjJsLGXXcSoKd/+eZStZcAlIO/jwxyz/bhPZnpqPJZWAmhOofuA==", "dependencies": [ - "react", + "react@18.3.1", "react-dom" ] }, @@ -210,7 +209,7 @@ "@emotion/utils", "@emotion/weak-memoize", "hoist-non-react-statics", - "react" + "react@18.3.1" ] }, "@emotion/serialize@1.3.3": { @@ -235,7 +234,7 @@ "@emotion/use-insertion-effect-with-fallbacks@1.2.0_react@18.3.1": { "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", "dependencies": [ - "react" + "react@18.3.1" ] }, "@emotion/utils@1.4.2": { @@ -329,20 +328,20 @@ "@floating-ui/utils" ] }, - "@floating-ui/react-dom@2.1.2_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "@floating-ui/react-dom@2.1.2_react@18.3.1_react-dom@19.0.0__react@19.0.0": { "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", "dependencies": [ "@floating-ui/dom", - "react", + "react@18.3.1", "react-dom" ] }, - "@floating-ui/react@0.26.21_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "@floating-ui/react@0.26.21_react@18.3.1_react-dom@19.0.0__react@19.0.0": { "integrity": "sha512-7P5ncDIiYd6RrwpCDbKyFzvabM014QlzlumtDbK3Bck0UueC+Rp8BLS34qcGBcN1pZCTodl4QNnCVmKv4tSxfQ==", "dependencies": [ "@floating-ui/react-dom", "@floating-ui/utils", - "react", + "react@18.3.1", "react-dom", "tabbable" ] @@ -417,7 +416,7 @@ "markdown-to-jsx", "nanoid", "prop-types", - "react" + "react@18.3.1" ] }, "@rjsf/utils@5.23.2_react@18.3.1": { @@ -427,7 +426,7 @@ "jsonpointer", "lodash", "lodash-es", - "react", + "react@18.3.1", "react-is@18.3.1" ] }, @@ -621,7 +620,7 @@ "@vtaits/use-lazy-ref@0.1.3_react@18.3.1": { "integrity": "sha512-ZTLuFBHSivPcgWrwkXe5ExVt6R3/ybD+N0yFPy4ClzCztk/9bUD/1udKQ/jd7eCal+lapSrRWXbffqI9jkpDlg==", "dependencies": [ - "react" + "react@18.3.1" ] }, "ajv@6.12.6": { @@ -945,7 +944,7 @@ "flowbite" ] }, - "flowbite-react@0.10.2_react@18.3.1_react-dom@18.3.1__react@18.3.1_tailwindcss@3.4.17__postcss@8.4.49": { + "flowbite-react@0.10.2_react@18.3.1_react-dom@19.0.0__react@19.0.0_tailwindcss@3.4.17__postcss@8.4.49": { "integrity": "sha512-qkayK6IFmfH7zuuDnHmS0hJxLtL0KpW4vo4i/VQfZ6ZfaNlUsNLQxCGcmXwbZZtUm2WVw8x71aaDOAxftG9tmg==", "dependencies": [ "@floating-ui/core", @@ -953,7 +952,7 @@ "classnames", "debounce", "flowbite", - "react", + "react@18.3.1", "react-dom", "react-icons", "tailwind-merge", @@ -1160,7 +1159,7 @@ "markdown-to-jsx@7.7.2_react@18.3.1": { "integrity": "sha512-N3AKfYRvxNscvcIH6HDnDKILp4S8UWbebp+s92Y8SwIq0CuSbLW4Jgmrbjku3CWKjTQO0OyIMS6AhzqrwjEa3g==", "dependencies": [ - "react" + "react@18.3.1" ] }, "memoize-one@6.0.0": { @@ -1405,18 +1404,17 @@ "queue-microtask@1.2.3": { "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, - "react-dom@18.3.1_react@18.3.1": { - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "react-dom@19.0.0_react@19.0.0": { + "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", "dependencies": [ - "loose-envify", - "react", + "react@19.0.0", "scheduler" ] }, "react-icons@5.2.1_react@18.3.1": { "integrity": "sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==", "dependencies": [ - "react" + "react@18.3.1" ] }, "react-is@16.13.1": { @@ -1425,39 +1423,39 @@ "react-is@18.3.1": { "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, - "react-router-dom@7.0.2_react@18.3.1_react-dom@18.3.1__react@18.3.1": { - "integrity": "sha512-VJOQ+CDWFDGaWdrG12Nl+d7yHtLaurNgAQZVgaIy7/Xd+DojgmYLosFfZdGz1wpxmjJIAkAMVTKWcvkx1oggAw==", + "react-router-dom@7.1.0_react@18.3.1_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-F4/nYBC9e4s0/ZjxM8GkZ9a68DpX76LN1a9W9mfPl2GfbDJ9/vzJro6MThNR5qGBH6KkgcK1BziyEzXhHV46Xw==", "dependencies": [ - "react", + "react@18.3.1", "react-dom", "react-router" ] }, - "react-router@7.0.2_react@18.3.1_react-dom@18.3.1__react@18.3.1": { - "integrity": "sha512-m5AcPfTRUcjwmhBzOJGEl6Y7+Crqyju0+TgTQxoS4SO+BkWbhOrcfZNq6wSWdl2BBbJbsAoBUb8ZacOFT+/JlA==", + "react-router@7.1.0_react@18.3.1_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-VcFhWqkNIcojDRYaUO8qV0Jib52s9ULpCp3nkBbmrvtoCVFRp6tmk3tJ2w9BZauVctA1YRnJlFYDn9iJRuCpGA==", "dependencies": [ "@types/cookie", "cookie", - "react", + "react@18.3.1", "react-dom", "set-cookie-parser", "turbo-stream" ] }, - "react-select-async-paginate@0.7.7_react@18.3.1_react-select@5.9.0__react@18.3.1__react-dom@18.3.1___react@18.3.1__@types+react@18.3.18_react-dom@18.3.1__react@18.3.1_@types+react@18.3.18": { + "react-select-async-paginate@0.7.7_react@18.3.1_react-select@5.9.0__react@18.3.1__react-dom@19.0.0___react@19.0.0__@types+react@18.3.18_@types+react@18.3.18": { "integrity": "sha512-4u8ULcwVOY9CFMuEMwb8LnTqcVaalZHWJEYuaTlhkORh20/jGMcMKwzAfOsBD/eViUYYCOYBARbFoZ1hwcVt/g==", "dependencies": [ "@seznam/compose-react-refs", "@vtaits/use-lazy-ref", "krustykrab", - "react", + "react@18.3.1", "react-select", "sleep-promise", "use-is-mounted-ref", "use-latest" ] }, - "react-select@5.9.0_react@18.3.1_react-dom@18.3.1__react@18.3.1_@types+react@18.3.18": { + "react-select@5.9.0_react@18.3.1_react-dom@19.0.0__react@19.0.0_@types+react@18.3.18": { "integrity": "sha512-nwRKGanVHGjdccsnzhFte/PULziueZxGD8LL2WojON78Mvnq7LdAMEtu2frrwld1fr3geixg3iiMBIc/LLAZpw==", "dependencies": [ "@babel/runtime", @@ -1467,20 +1465,20 @@ "@types/react-transition-group", "memoize-one", "prop-types", - "react", + "react@18.3.1", "react-dom", "react-transition-group", "use-isomorphic-layout-effect" ] }, - "react-transition-group@4.4.5_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "react-transition-group@4.4.5_react@18.3.1_react-dom@19.0.0__react@19.0.0": { "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", "dependencies": [ "@babel/runtime", "dom-helpers", "loose-envify", "prop-types", - "react", + "react@18.3.1", "react-dom" ] }, @@ -1490,6 +1488,9 @@ "loose-envify" ] }, + "react@19.0.0": { + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==" + }, "read-cache@1.0.0": { "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dependencies": [ @@ -1560,11 +1561,8 @@ "tslib@2.8.1" ] }, - "scheduler@0.23.2": { - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "dependencies": [ - "loose-envify" - ] + "scheduler@0.25.0": { + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==" }, "set-cookie-parser@2.7.1": { "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==" @@ -1624,7 +1622,7 @@ "ansi-regex@6.1.0" ] }, - "styled-components@6.1.13_react@18.3.1_react-dom@18.3.1__react@18.3.1": { + "styled-components@6.1.13_react@18.3.1_react-dom@19.0.0__react@19.0.0": { "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==", "dependencies": [ "@emotion/is-prop-valid", @@ -1633,7 +1631,7 @@ "css-to-react-native", "csstype", "postcss@8.4.38", - "react", + "react@18.3.1", "react-dom", "shallowequal", "stylis@4.3.2", @@ -1747,25 +1745,25 @@ "use-debounce@10.0.4_react@18.3.1": { "integrity": "sha512-6Cf7Yr7Wk7Kdv77nnJMf6de4HuDE4dTxKij+RqE9rufDsI6zsbjyAxcH5y2ueJCQAnfgKbzXbZHYlkFwmBlWkw==", "dependencies": [ - "react" + "react@18.3.1" ] }, "use-is-mounted-ref@1.5.0_react@18.3.1": { "integrity": "sha512-p5FksHf/ospZUr5KU9ese6u3jp9fzvZ3wuSb50i0y6fdONaHWgmOqQtxR/PUcwi6hnhQDbNxWSg3eTK3N6m+dg==", "dependencies": [ - "react" + "react@18.3.1" ] }, "use-isomorphic-layout-effect@1.2.0_react@18.3.1": { "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==", "dependencies": [ - "react" + "react@18.3.1" ] }, "use-latest@1.3.0_react@18.3.1": { "integrity": "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==", "dependencies": [ - "react", + "react@18.3.1", "use-isomorphic-layout-effect" ] }, @@ -1835,6 +1833,18 @@ "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==" } }, + "redirects": { + "https://esm.sh/v128/@types/react@~18.2/index.d.ts": "https://esm.sh/v128/@types/react@18.2.38/index.d.ts", + "https://esm.sh/v135/@types/react-dom@~18.2/index.d.ts": "https://esm.sh/v135/@types/react-dom@18.2.25/index.d.ts" + }, + "remote": { + "https://esm.sh/react-dom@18.2.0": "0f6e9183d72c65d9873a8eae2c6c872df9b85cde317dbc0ca3d7447bab8e4ec3", + "https://esm.sh/react@18.2.0": "04ad7dc6d11fa27b24c136686a334ecdd19e972fae627cd98cbdc13cdac238c2", + "https://esm.sh/stable/react@18.2.0/denonext/react.mjs": "3c4f23bcfc53b256fcfaf6f834fa9f584c3bb7be667b2682c6cb6ba8ef88f8e6", + "https://esm.sh/v135/react-dom@18.2.0/denonext/react-dom.mjs": "8191fc377ea7083cca5640699c4abd75de033089eb932799e29aa04bb136838f", + "https://esm.sh/v135/scheduler@0.23.0/denonext/scheduler.mjs": "cdbc6d2823e2c6fffcb14501146ff2602a38c48d3c9dd9268f308e833ede2b49", + "https://esm.sh/v135/scheduler@0.23.2/denonext/scheduler.mjs": "dc96e5be52b14a40ce36295d938d5211e520c4da3183fe2ad4283ed103747d82" + }, "workspace": { "dependencies": [ "jsr:@preact-icons/bs@^1.0.12", @@ -1852,10 +1862,8 @@ "npm:flowbite-react@~0.10.2", "npm:postcss@^8.4.49", "npm:prop-types@^15.8.1", - "npm:react-dom@^18.3.1", "npm:react-router-dom@^7.0.2", "npm:react-select-async-paginate@~0.7.7", - "npm:react@^18.3.1", "npm:reflect-metadata@~0.2.2", "npm:rxjs@^7.8.1", "npm:styled-components@^6.1.13", diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/app/app.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/app/app.tsx index 82563eb09..62b57582c 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/app/app.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/app/app.tsx @@ -1,6 +1,6 @@ import * as Eta from 'eta' -import { Token } from '../services/token' -import {container} from "tsyringe" +import Token from '../services/token' +import {container} from "tsyringe-neo" import React from 'react' import ReactDOM from 'react-dom/client' import NiceModal from "@ebay/nice-modal-react" diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/assets/index.css b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/assets/index.css new file mode 100644 index 000000000..bcf21ebb3 --- /dev/null +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/assets/index.css @@ -0,0 +1,5 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + + diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/main.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/main.tsx index 97c0f01ad..3b1cd99f3 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/main.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/main.tsx @@ -1,9 +1,9 @@ +import "./assets/index.css" import "reflect-metadata"; import * as $ from "jquery"; import { App } from "./app/app"; declare var jwt_token: String; - let app = new App(jwt_token); app.init(); app.run(); diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/model/order.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/model/order.ts index f51d79fb3..ad93a53f1 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/model/order.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/model/order.ts @@ -7,7 +7,7 @@ import {Payment} from "./payment" import {Shipping} from "./shipping" import {Shop} from "./shop" -export class Order { +class Order { alias: String uuid: String @@ -70,4 +70,6 @@ export class Order { this.positions.push(pos) }) } -} \ No newline at end of file +} + +export default Order diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/account/AccountSelectComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/account/AccountSelectComponent.tsx index 317ac6de6..7091044da 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/account/AccountSelectComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/account/AccountSelectComponent.tsx @@ -1,11 +1,11 @@ import { AsyncPaginate } from "react-select-async-paginate" -import { AccountService } from '../../services/account' -import { container } from 'tsyringe' -import { OrderState } from '../../state/order' +import AccountService from '../../services/account' +import { container } from 'tsyringe-neo' +import OrderState from '../../state/order' import {useEffect, useState} from 'react' import * as PropTypes from 'prop-types' import { Shop } from '../../model/shop' -import {Order} from "../../model/order" +import Order from "../../model/order" import { SelectLabel } from "../base/SelectLabel" import React from 'react' const AccountSelectComponent = ({shop, order}) => { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/BaseComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/BaseComponent.tsx index 29435c5a6..a1fd9264d 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/BaseComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/BaseComponent.tsx @@ -3,14 +3,14 @@ import ContactComponent from '../contact/ContactComponent' import TopBarComponent from '../topbar/TopBarComponent' import PositionsComponent from '../positions/PositionsComponent' import {useEffect, useState} from 'react' -import {Order} from "../../model/order" +import Order from "../../model/order" import PaymentComponent from "../payment/PaymentComponent" import ShippingComponent from "../shipping/ShippingComponent" import ButtonComponent from "../button/ButtonComponent" import {useParams} from "react-router-dom" -import {container} from "tsyringe" -import {OrderState} from "../../state/order" -import {OrderService} from "../../services/order" +import {container} from "tsyringe-neo" +import OrderState from "../../state/order" +import OrderService from "../../services/order" import InfoFieldComponent from "../info/InfoFieldComponent" import React from 'react' import OrderAliasComponent from '../order/OrderAliasComponent' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/Button.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/Button.tsx index 68e1f5723..a47d7fedb 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/Button.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/Button.tsx @@ -1,6 +1,3 @@ -import { BsPlus } from "@react-icons/all-files/bs/BsPlus" -import { BsPencil } from "@react-icons/all-files/bs/BsPencil" -import { RiSaveFill } from "@react-icons/all-files/ri/RiSaveFill" import { RiDeleteBin2Line, RiSaveFill } from "@preact-icons/ri" import { BsXCircle, BsPlus, BsPencil } from "@preact-icons/bs" import { Button as BaseButton } from "flowbite-react" diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/button/ButtonComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/button/ButtonComponent.tsx index aab7f1ffe..0ad7b94ee 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/button/ButtonComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/button/ButtonComponent.tsx @@ -1,6 +1,6 @@ -import { OrderState } from '../../state/order' -import {container} from "tsyringe" -import { OrderService } from '../../services/order' +import OrderState from '../../state/order' +import {container} from "tsyringe-neo" +import OrderService from '../../services/order' import { Component } from 'react' import {debounceTime} from "rxjs" import {Order} from "../../model/order" @@ -54,10 +54,10 @@ class ButtonComponent extends Component<{loadOrder},{disabled: boolean}> { return (
) diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/calc/CalcComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/calc/CalcComponent.tsx index 899f260f5..62c393695 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/calc/CalcComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/calc/CalcComponent.tsx @@ -1,10 +1,10 @@ import React from 'react' import * as PropTypes from "prop-types" -import {Order} from "../../model/order" -import {container} from "tsyringe" -import {OrderState} from "../../state/order" +import Order from "../../model/order" +import {container} from "tsyringe-neo" +import OrderState from "../../state/order" import { debounceTime } from 'rxjs' -import {OrderService} from "../../services/order" +import OrderService from "../../services/order" import Currency from "../base/Currency" type MyState = { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/AddressModal.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/AddressModal.tsx index a724ce7b1..5091dff40 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/AddressModal.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/AddressModal.tsx @@ -4,7 +4,7 @@ import Button from '../base/Button' import {RJSFSchema} from "@rjsf/utils" import validator from "@rjsf/validator-ajv6" import Form from "@rjsf/core" -import { CountryService } from '../../services/country' +import CountryService from '../../services/country' import { Modal } from "flowbite-react" import React from 'react' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/AddressSelect.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/AddressSelect.tsx index 9cacc16f5..8dc8b44a7 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/AddressSelect.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/AddressSelect.tsx @@ -2,10 +2,10 @@ import * as PropTypes from 'prop-types' import { AsyncPaginate } from "react-select-async-paginate" import { Contact } from '../../model/contact' import { Address } from '../../model/address' -import {container} from "tsyringe" +import {container} from "tsyringe-neo" import {useEffect,useState} from 'react' -import {OrderState} from "../../state/order" -import {AddressService} from "../../services/address" +import OrderState from "../../state/order" +import AddressService from "../../services/address" import AddressModalComponent from "./AddressModalComponent" import { SelectLabel } from '../base/SelectLabel' import AddressDetail from './AddressDetail' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactComponent.tsx index 301a12a8c..44eb63545 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactComponent.tsx @@ -5,10 +5,10 @@ import AddressSelect from './AddressSelect' import {Contact} from '../../model/contact' import {Address} from '../../model/address' import {useEffect, useState} from 'react' -import { OrderState } from '../../state/order' -import {container} from "tsyringe" +import OrderState from '../../state/order' +import {container} from "tsyringe-neo" import AccountSelectComponent from '../account/AccountSelectComponent' -import { Order } from '../../model/order' +import Order from '../../model/order' import { Shop } from '../../model/shop' import React from 'react' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactModal.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactModal.tsx index f1641d217..dfe9ed026 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactModal.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactModal.tsx @@ -5,7 +5,7 @@ import {RJSFSchema} from "@rjsf/utils"; import {Contact} from "../../model/contact"; import validator from "@rjsf/validator-ajv6"; import Form from "@rjsf/core"; -import {CountryService} from "../../services/country"; +import CountryService from "../../services/country"; import { Modal } from "flowbite-react"; import React from 'react' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactModalComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactModalComponent.tsx index 19f2d9ce4..0a561012c 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactModalComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactModalComponent.tsx @@ -5,9 +5,9 @@ import Button from "../base/Button" import ContactModal from "./ContactModal" import { useCallback } from 'react' import { useModal } from '@ebay/nice-modal-react' -import { ContactService } from "../../services/contact" +import ContactService from "../../services/contact" import { Address } from "../../model/address" -import { AddressService } from "../../services/address" +import AddressService from "../../services/address" import React from 'react' const ContactModalComponent = ({shop, handleAdd, handleEdit, contact}) => { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactSelect.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactSelect.tsx index b7e9d9a1d..62d53c82f 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactSelect.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/contact/ContactSelect.tsx @@ -1,13 +1,13 @@ import * as PropTypes from 'prop-types' import { AsyncPaginate } from "react-select-async-paginate" import { Contact } from '../../model/contact' -import {ContactService} from '../../services/contact' +import ContactService from '../../services/contact' import { Shop } from '../../model/shop' import {useEffect, useState} from 'react' -import { container } from 'tsyringe' -import { OrderState } from '../../state/order' +import { container } from 'tsyringe-neo' +import OrderState from '../../state/order' import ContactModalComponent from "./ContactModalComponent" -import { Order } from '../../model/order' +import Order from '../../model/order' import { SelectLabel } from '../base/SelectLabel' import React from 'react' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/draft/DraftComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/draft/DraftComponent.tsx index 376f86fbf..9e937729d 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/draft/DraftComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/draft/DraftComponent.tsx @@ -1,6 +1,6 @@ import {useEffect, useState} from 'react' -import { container } from 'tsyringe' -import { OrderState } from '../../state/order' +import { container } from 'tsyringe-neo' +import OrderState from'../../state/order' import { SelectLabel } from '../base/SelectLabel' import React from 'react' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/info/InfoFieldComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/info/InfoFieldComponent.tsx index 2a32470f9..3e4764328 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/info/InfoFieldComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/info/InfoFieldComponent.tsx @@ -1,10 +1,10 @@ import { AsyncPaginate } from "react-select-async-paginate" -import {ShippingService} from "../../services/shipping" +import ShippingService from "../../services/shipping" import * as PropTypes from "prop-types" import {Shop} from "../../model/shop" -import {container} from "tsyringe" -import {OrderState} from "../../state/order" -import {Order} from "../../model/order" +import {container} from "tsyringe-neo" +import OrderState from "../../state/order" +import Order from "../../model/order" import {useEffect, useState} from "react" import React from 'react' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/order/OrderAliasComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/order/OrderAliasComponent.tsx index c8b88c8a3..63e8ca7bd 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/order/OrderAliasComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/order/OrderAliasComponent.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import * as PropTypes from "prop-types"; -import {Order} from "../../model/order"; +import Order from "../../model/order"; const OrderAliasComponent = ({order}) => { @@ -15,4 +15,4 @@ OrderAliasComponent.propTypes = { order: PropTypes.instanceOf(Order), }; -export default OrderAliasComponent; \ No newline at end of file +export default OrderAliasComponent; diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/payment/PaymentComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/payment/PaymentComponent.tsx index 9c7f00b2c..7ad4f248d 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/payment/PaymentComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/payment/PaymentComponent.tsx @@ -1,11 +1,11 @@ import * as React from 'react' import { AsyncPaginate } from "react-select-async-paginate" -import { PaymentService } from "../../services/payment" +import PaymentService from "../../services/payment" import * as PropTypes from "prop-types" import { Shop } from "../../model/shop" -import { container } from "tsyringe" -import { OrderState } from "../../state/order" -import { Order } from "../../model/order" +import { container } from "tsyringe-neo" +import OrderState from "../../state/order" +import Order from "../../model/order" import { useEffect, useState } from "react" import Select from 'react-select' import { SelectLabel } from '../base/SelectLabel' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/AddPositionComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/AddPositionComponent.tsx index 772a84869..0694eabdb 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/AddPositionComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/AddPositionComponent.tsx @@ -7,7 +7,7 @@ import {ProductGroup} from "../../model/productGroup" import ProductGroupSelect from "../product/ProductGroupSelect" import ProductSelect from "../product/ProductSelect" import ProductForm from "../product/ProductForm" -import {Order} from "../../model/order" +import Order from "../../model/order" import { Pos } from '../../model/pos' import Button from '../base/Button' import { Modal } from "flowbite-react"; diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/PositionsComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/PositionsComponent.tsx index 642f6ff80..c784d050e 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/PositionsComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/PositionsComponent.tsx @@ -5,9 +5,8 @@ import * as PropTypes from "prop-types" import { Shop } from '../../model/shop' import {useEffect, useState} from "react" import {Pos} from "../../model/pos" -import {Order} from "../../model/order" -import {container} from "tsyringe" -import {OrderState} from "../../state/order" +import Order from "../../model/order" +import OrderState from "../../state/order" const PositionsComponent = ({order, shop, updateOrder}) => { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductForm.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductForm.tsx index 3c7b6f271..e7e96b60e 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductForm.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductForm.tsx @@ -3,9 +3,9 @@ import { Shop } from '../../model/shop' import {Product} from "../../model/product" import validator from "@rjsf/validator-ajv6" import { JSONSchema7 } from "json-schema" -import { container } from 'tsyringe' +import { container } from 'tsyringe-neo' import Form from "@rjsf/core" -import {ProductService} from "../../services/product" +import ProductService from "../../services/product" import {useEffect, useRef, useState} from "react" import {Price} from "../../model/price" import {Pos} from "../../model/pos" diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductGroupSelect.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductGroupSelect.tsx index f57196c3d..e1a36a0dd 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductGroupSelect.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductGroupSelect.tsx @@ -1,9 +1,9 @@ import * as PropTypes from 'prop-types'; import { Shop } from '../../model/shop'; -import { container } from 'tsyringe'; -import { OrderState } from '../../state/order'; +import { container } from 'tsyringe-neo'; +import OrderState from '../../state/order'; import {ProductGroup} from "../../model/productGroup"; -import {ProductGroupService} from "../../services/productgroup"; +import ProductGroupService from "../../services/productgroup"; import AsyncSelect , { useAsync } from 'react-select/async'; import React from 'react' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductSelect.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductSelect.tsx index 8b04ff9d4..5ac9aaef1 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductSelect.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/product/ProductSelect.tsx @@ -1,11 +1,11 @@ import * as PropTypes from 'prop-types'; import { Shop } from '../../model/shop'; -import { container } from 'tsyringe'; -import { OrderState } from '../../state/order'; +import { container } from 'tsyringe-neo'; +import OrderState from '../../state/order'; import {Product} from "../../model/product"; import {ProductGroup} from "../../model/productGroup"; import AsyncSelect from "react-select/async"; -import {ProductService} from "../../services/product"; +import ProductService from "../../services/product"; import {useDebounce} from "use-debounce"; import React from 'react' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shipping/ShippingComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shipping/ShippingComponent.tsx index 5177885d8..99a5e6b9c 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shipping/ShippingComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shipping/ShippingComponent.tsx @@ -1,11 +1,11 @@ import * as React from 'react' import { AsyncPaginate } from "react-select-async-paginate" -import {ShippingService} from "../../services/shipping" +import ShippingService from "../../services/shipping" import * as PropTypes from "prop-types" import {Shop} from "../../model/shop" -import {container} from "tsyringe" -import {OrderState} from "../../state/order" -import {Order} from "../../model/order" +import {container} from "tsyringe-neo" +import OrderState from "../../state/order" +import Order from "../../model/order" import {useEffect, useState} from "react" import { SelectLabel } from '../base/SelectLabel' import React from 'react' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shop/ShopSelectComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shop/ShopSelectComponent.tsx index ba2062b33..3d37db6c7 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shop/ShopSelectComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shop/ShopSelectComponent.tsx @@ -1,7 +1,7 @@ import { AsyncPaginate } from "react-select-async-paginate" -import { ShopService } from '../../services/shop' -import { container } from 'tsyringe' -import { OrderState } from '../../state/order' +import ShopService from '../../services/shop' +import { container } from 'tsyringe-neo' +import OrderState from '../../state/order' import { SelectLabel } from '../base/SelectLabel' import React from 'react' @@ -10,9 +10,11 @@ const ShopSelectComponent = (props) => { const orderState = container.resolve(OrderState) const shop_service = container.resolve(ShopService) + const token_service = container.resolve(Token) const loadOptions = async (searchQuery, loadedOptions) => { + console.log(token_service) const data = await shop_service.getShops() return { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/topbar/TopBarComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/topbar/TopBarComponent.tsx index 95156958f..bd4950edc 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/topbar/TopBarComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/topbar/TopBarComponent.tsx @@ -3,7 +3,7 @@ import ShopSelectComponent from '../shop/ShopSelectComponent' import * as PropTypes from "prop-types" import {Shop} from "../../model/shop" import DraftComponent from "../draft/DraftComponent" -import {Order} from "../../model/order" +import Order from "../../model/order" import CalcComponent from '../calc/CalcComponent' import React from 'react' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/type/TypeSelectComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/type/TypeSelectComponent.tsx index 5549baae8..ad3ad3cd1 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/type/TypeSelectComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/type/TypeSelectComponent.tsx @@ -1,7 +1,7 @@ import Select from 'react-select' import {useEffect, useState} from 'react' -import { container } from 'tsyringe' -import { OrderState } from '../../state/order' +import { container } from 'tsyringe-neo' +import OrderState from '../../state/order' import { SelectLabel } from '../base/SelectLabel' import React from 'react' diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/account.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/account.ts index f17ba0182..96080a451 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/account.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/account.ts @@ -1,4 +1,4 @@ -import {autoInjectable, singleton} from "tsyringe"; +import {autoInjectable, singleton} from "tsyringe-neo"; import { Token } from "./token"; import axios from 'axios'; import { Account } from "../model/account"; @@ -6,7 +6,7 @@ import { Shop } from "../model/shop"; @singleton() @autoInjectable() -export class AccountService { +class AccountService { constructor(private token?: Token) {} async getAccounts(shop: Shop): Promise { @@ -28,3 +28,5 @@ export class AccountService { }); } } + +export default AccountService diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/address.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/address.ts index 9be239e39..c51a80b90 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/address.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/address.ts @@ -1,11 +1,11 @@ -import {autoInjectable, singleton} from "tsyringe" +import {autoInjectable, singleton} from "tsyringe-neo" import { Token } from "./token" import axios from 'axios' import { Address } from "../model/address" @singleton() @autoInjectable() -export class AddressService { +class AddressService { constructor(private token?: Token) {} async create(address: Address): Promise
{ @@ -55,3 +55,5 @@ export class AddressService { }) } } + +export default AddressService diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/contact.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/contact.ts index 8015a9cd9..c5284c0b6 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/contact.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/contact.ts @@ -1,4 +1,4 @@ -import {autoInjectable, singleton} from "tsyringe"; +import {autoInjectable, singleton} from "tsyringe-neo"; import { Token } from "./token"; import axios from 'axios'; import { Contact } from "../model/contact"; @@ -7,7 +7,7 @@ import { Shop } from "../model/shop"; @singleton() @autoInjectable() -export class ContactService { +class ContactService { constructor(private token?: Token) {} async createContact(contact: Contact): Promise { @@ -49,3 +49,5 @@ export class ContactService { } } + +export default ContactService diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/country.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/country.ts index bbba575bb..7aa19eeb6 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/country.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/country.ts @@ -1,11 +1,11 @@ -import {autoInjectable, singleton} from "tsyringe" +import {autoInjectable, singleton} from "tsyringe-neo" import axios from 'axios' import { Shop } from "../model/shop" import { Country } from "../model/country" @singleton() @autoInjectable() -export class CountryService { +class CountryService { async getCountry(shop: Shop): Promise { @@ -19,3 +19,5 @@ export class CountryService { }) } } + +export default CountryService diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/order.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/order.ts index 461b2dbc3..6ef5391d2 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/order.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/order.ts @@ -1,11 +1,11 @@ -import {autoInjectable, singleton} from "tsyringe"; +import {autoInjectable, singleton} from "tsyringe-neo"; import { Token } from "./token"; import axios from 'axios'; -import {Order} from "../model/order"; +import Order from "../model/order"; @singleton() @autoInjectable() -export class OrderService { +class OrderService { constructor(private token?: Token) {} @@ -35,7 +35,7 @@ export class OrderService { }); } - async calcOrder(order: Order): Promise { + public async calcOrder(order: Order): Promise { return await axios.post('/apps/api/order/calc', order ,{ headers: { @@ -47,3 +47,5 @@ export class OrderService { } } + +export default OrderService diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/payment.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/payment.ts index e73dfb4b7..ed290c493 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/payment.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/payment.ts @@ -1,4 +1,4 @@ -import {autoInjectable, singleton} from "tsyringe" +import {autoInjectable, singleton} from "tsyringe-neo" import { Token } from "./token" import axios from 'axios' import { Shop } from "../model/shop" @@ -6,7 +6,7 @@ import {Payment} from "../model/payment" @singleton() @autoInjectable() -export class PaymentService { +class PaymentService { constructor(private token?: Token) {} async getPayments(shop: Shop): Promise { @@ -27,3 +27,5 @@ export class PaymentService { }) } } + +export default PaymentService diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/product.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/product.ts index af22acda3..669c2cdc5 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/product.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/product.ts @@ -1,4 +1,4 @@ -import {autoInjectable, singleton} from "tsyringe"; +import {autoInjectable, singleton} from "tsyringe-neo"; import { Token } from "./token"; import axios from 'axios'; import { Shop } from "../model/shop"; @@ -8,7 +8,7 @@ import {JSONSchema7} from "json-schema"; @singleton() @autoInjectable() -export class ProductService { +class ProductService { constructor(private token?: Token) {} async getProductsByTerm(term: string, shop: Shop): Promise { @@ -71,3 +71,5 @@ export class ProductService { }) } } + +export default ProductService diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/productgroup.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/productgroup.ts index 8f5c64750..80ba7f37b 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/productgroup.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/productgroup.ts @@ -1,4 +1,4 @@ -import {autoInjectable, singleton} from "tsyringe"; +import {autoInjectable, singleton} from "tsyringe-neo"; import { Token } from "./token"; import axios from 'axios'; import { Shop } from "../model/shop"; @@ -6,7 +6,7 @@ import {ProductGroup} from "../model/productGroup"; @singleton() @autoInjectable() -export class ProductGroupService { +class ProductGroupService { constructor(private token?: Token) {} async getProductGroups(searchQuery: String, shop: Shop): Promise { @@ -42,3 +42,5 @@ export class ProductGroupService { }) } } + +export default ProductGroupService diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shipping.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shipping.ts index 79eec138d..6edcf0e23 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shipping.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shipping.ts @@ -1,4 +1,4 @@ -import {autoInjectable, singleton} from "tsyringe" +import {autoInjectable, singleton} from "tsyringe-neo" import { Token } from "./token" import axios from 'axios' import { Shop } from "../model/shop" @@ -6,7 +6,7 @@ import {Shipping} from "../model/shipping" @singleton() @autoInjectable() -export class ShippingService { +class ShippingService { constructor(private token?: Token) {} async getShipping(shop: Shop): Promise { @@ -27,3 +27,5 @@ export class ShippingService { }) } } + +export default ShippingService diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shop.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shop.ts index 08340e2f2..e41c412b6 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shop.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shop.ts @@ -1,16 +1,17 @@ -import {autoInjectable, singleton} from "tsyringe" +import {autoInjectable, singleton} from "tsyringe-neo" import { Token } from "./token" import axios from 'axios' import { Shop } from "../model/shop" @singleton() @autoInjectable() -export class ShopService { - constructor(private token: Token) {} +class ShopService { + constructor(token?: Token) { + console.log(token) + } async getShops(): Promise { - console.log(this.token) return await axios.get('/apps/api/shops', { headers: { 'Authorization': 'Bearer ' + this.token.currentToken @@ -25,3 +26,5 @@ export class ShopService { }) } } + +export default ShopService diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/token.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/token.ts index da1d3b064..f9dede8cb 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/token.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/token.ts @@ -1,8 +1,8 @@ import axios from "axios" -import {singleton} from "tsyringe" +import {singleton} from "tsyringe-neo" @singleton() -export class Token { +class Token { public currentToken:String init() { @@ -20,3 +20,5 @@ export class Token { }) } } + +export default Token diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/state/order.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/state/order.ts index c3d3b70c2..b61d6897a 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/state/order.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/state/order.ts @@ -1,10 +1,10 @@ -import {singleton} from "tsyringe" -import {Order} from "../model/order" +import {singleton} from "tsyringe-neo" +import Order from "../model/order" import {observeObject} from "../lib/ob-ob" import {BehaviorSubject, Observable, of, Subject} from "rxjs" @singleton() -export class OrderState { +class OrderState { orders: Array private currentOrder: BehaviorSubject @@ -29,3 +29,5 @@ export class OrderState { this.orders.push(order) } } + +export default OrderState diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tailwind.config.js b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tailwind.config.js index 910b2c6a4..674fc8cb3 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tailwind.config.js +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tailwind.config.js @@ -1,4 +1,4 @@ -const flowbite = require("flowbite-react/tailwind"); +import flowbite from "flowbite-react/tailwind" /** @type {import('tailwindcss').Config} */ module.exports = { content: [ diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.app.json b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.app.json new file mode 100644 index 000000000..f0a235055 --- /dev/null +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.app.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.json b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.json index 11646208d..1ffef600d 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.json +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.json @@ -1,7 +1,7 @@ { - "compilerOptions": { - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "target": "ES6", - } + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] } diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.node.json b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.node.json new file mode 100644 index 000000000..0d3d71446 --- /dev/null +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.css b/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.css new file mode 100644 index 000000000..7c8c417a8 --- /dev/null +++ b/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.css @@ -0,0 +1,4992 @@ +*, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(63 131 248 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(63 131 248 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +}/* +! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com +*//* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; /* 1 */ + border-width: 0; /* 2 */ + border-style: solid; /* 2 */ + border-color: #E5E7EB; /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +7. Disable tap highlights on iOS +*/ + +html, +:host { + line-height: 1.5; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -moz-tab-size: 4; /* 3 */ + -o-tab-size: 4; + tab-size: 4; /* 3 */ + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */ + font-feature-settings: normal; /* 5 */ + font-variation-settings: normal; /* 6 */ + -webkit-tap-highlight-color: transparent; /* 7 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; /* 1 */ + line-height: inherit; /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ + border-top-width: 1px; /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font-family by default. +2. Use the user's configured `mono` font-feature-settings by default. +3. Use the user's configured `mono` font-variation-settings by default. +4. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */ + font-feature-settings: normal; /* 2 */ + font-variation-settings: normal; /* 3 */ + font-size: 1em; /* 4 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ + border-collapse: collapse; /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-feature-settings: inherit; /* 1 */ + font-variation-settings: inherit; /* 1 */ + font-size: 100%; /* 1 */ + font-weight: inherit; /* 1 */ + line-height: inherit; /* 1 */ + letter-spacing: inherit; /* 1 */ + color: inherit; /* 1 */ + margin: 0; /* 2 */ + padding: 0; /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +input:where([type='button']), +input:where([type='reset']), +input:where([type='submit']) { + -webkit-appearance: button; /* 1 */ + background-color: transparent; /* 2 */ + background-image: none; /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Reset default styling for dialogs. +*/ +dialog { + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; /* 1 */ + color: #9CA3AF; /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; /* 1 */ + color: #9CA3AF; /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; /* 1 */ + vertical-align: middle; /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ +[hidden]:where(:not([hidden="until-found"])) { + display: none; +} + +[data-tooltip-style^='light'] + .tooltip > .tooltip-arrow:before { + border-style: solid; + border-color: #e5e7eb; +} + +[data-tooltip-style^='light'] + .tooltip[data-popper-placement^='top'] > .tooltip-arrow:before { + border-bottom-width: 1px; + border-right-width: 1px; +} + +[data-tooltip-style^='light'] + .tooltip[data-popper-placement^='right'] > .tooltip-arrow:before { + border-bottom-width: 1px; + border-left-width: 1px; +} + +[data-tooltip-style^='light'] + .tooltip[data-popper-placement^='bottom'] > .tooltip-arrow:before { + border-top-width: 1px; + border-left-width: 1px; +} + +[data-tooltip-style^='light'] + .tooltip[data-popper-placement^='left'] > .tooltip-arrow:before { + border-top-width: 1px; + border-right-width: 1px; +} + +.tooltip[data-popper-placement^='top'] > .tooltip-arrow { + bottom: -4px; +} + +.tooltip[data-popper-placement^='bottom'] > .tooltip-arrow { + top: -4px; +} + +.tooltip[data-popper-placement^='left'] > .tooltip-arrow { + right: -4px; +} + +.tooltip[data-popper-placement^='right'] > .tooltip-arrow { + left: -4px; +} + +.tooltip.invisible > .tooltip-arrow:before { + visibility: hidden; +} + +[data-popper-arrow],[data-popper-arrow]:before { + position: absolute; + width: 8px; + height: 8px; + background: inherit; +} + +[data-popper-arrow] { + visibility: hidden; +} + +[data-popper-arrow]:before { + content: ""; + visibility: visible; + transform: rotate(45deg); +} + +[data-popper-arrow]:after { + content: ""; + visibility: visible; + transform: rotate(45deg); + position: absolute; + width: 9px; + height: 9px; + background: inherit; +} + +[role="tooltip"] > [data-popper-arrow]:before { + border-style: solid; + border-color: #e5e7eb; +} + +.dark [role="tooltip"] > [data-popper-arrow]:before { + border-style: solid; + border-color: #4b5563; +} + +[role="tooltip"] > [data-popper-arrow]:after { + border-style: solid; + border-color: #e5e7eb; +} + +.dark [role="tooltip"] > [data-popper-arrow]:after { + border-style: solid; + border-color: #4b5563; +} + +[data-popover][role="tooltip"][data-popper-placement^='top'] > [data-popper-arrow]:before { + border-bottom-width: 1px; + border-right-width: 1px; +} + +[data-popover][role="tooltip"][data-popper-placement^='top'] > [data-popper-arrow]:after { + border-bottom-width: 1px; + border-right-width: 1px; +} + +[data-popover][role="tooltip"][data-popper-placement^='right'] > [data-popper-arrow]:before { + border-bottom-width: 1px; + border-left-width: 1px; +} + +[data-popover][role="tooltip"][data-popper-placement^='right'] > [data-popper-arrow]:after { + border-bottom-width: 1px; + border-left-width: 1px; +} + +[data-popover][role="tooltip"][data-popper-placement^='bottom'] > [data-popper-arrow]:before { + border-top-width: 1px; + border-left-width: 1px; +} + +[data-popover][role="tooltip"][data-popper-placement^='bottom'] > [data-popper-arrow]:after { + border-top-width: 1px; + border-left-width: 1px; +} + +[data-popover][role="tooltip"][data-popper-placement^='left'] > [data-popper-arrow]:before { + border-top-width: 1px; + border-right-width: 1px; +} + +[data-popover][role="tooltip"][data-popper-placement^='left'] > [data-popper-arrow]:after { + border-top-width: 1px; + border-right-width: 1px; +} + +[data-popover][role="tooltip"][data-popper-placement^='top'] > [data-popper-arrow] { + bottom: -5px; +} + +[data-popover][role="tooltip"][data-popper-placement^='bottom'] > [data-popper-arrow] { + top: -5px; +} + +[data-popover][role="tooltip"][data-popper-placement^='left'] > [data-popper-arrow] { + right: -5px; +} + +[data-popover][role="tooltip"][data-popper-placement^='right'] > [data-popper-arrow] { + left: -5px; +} + +[role="tooltip"].invisible > [data-popper-arrow]:before { + visibility: hidden; +} + +[role="tooltip"].invisible > [data-popper-arrow]:after { + visibility: hidden; +} + +[type='text'],[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #6B7280; + border-width: 1px; + border-radius: 0px; + padding-top: 0.5rem; + padding-right: 0.75rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + font-size: 1rem; + line-height: 1.5rem; + --tw-shadow: 0 0 #0000; +} + +[type='text']:focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus { + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: #1C64F2; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + border-color: #1C64F2; +} + +input::-moz-placeholder, textarea::-moz-placeholder { + color: #6B7280; + opacity: 1; +} + +input::placeholder,textarea::placeholder { + color: #6B7280; + opacity: 1; +} + +::-webkit-datetime-edit-fields-wrapper { + padding: 0; +} + +input[type="time"]::-webkit-calendar-picker-indicator { + background: none; +} + +select:not([size]) { + background-image: url("data:image/svg+xml,%3csvg aria-hidden='true' xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 10 6'%3e %3cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m1 1 4 4 4-4'/%3e %3c/svg%3e"); + background-position: right 0.75rem center; + background-repeat: no-repeat; + background-size: 0.75em 0.75em; + padding-right: 2.5rem; + -webkit-print-color-adjust: exact; + print-color-adjust: exact; +} + +:is([dir=rtl]) select:not([size]) { + background-position: left 0.75rem center; + padding-right: 0.75rem; + padding-left: 0; +} + +[multiple] { + background-image: initial; + background-position: initial; + background-repeat: unset; + background-size: initial; + padding-right: 0.75rem; + -webkit-print-color-adjust: unset; + print-color-adjust: unset; +} + +[type='checkbox'],[type='radio'] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding: 0; + -webkit-print-color-adjust: exact; + print-color-adjust: exact; + display: inline-block; + vertical-align: middle; + background-origin: border-box; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + flex-shrink: 0; + height: 1rem; + width: 1rem; + color: #1C64F2; + background-color: #fff; + border-color: #6B7280; + border-width: 1px; + --tw-shadow: 0 0 #0000; +} + +[type='checkbox'] { + border-radius: 0px; +} + +[type='radio'] { + border-radius: 100%; +} + +[type='checkbox']:focus,[type='radio']:focus { + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); + --tw-ring-offset-width: 2px; + --tw-ring-offset-color: #fff; + --tw-ring-color: #1C64F2; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); +} + +[type='checkbox']:checked,[type='radio']:checked,.dark [type='checkbox']:checked,.dark [type='radio']:checked { + border-color: transparent; + background-color: currentColor; + background-size: 0.55em 0.55em; + background-position: center; + background-repeat: no-repeat; +} + +[type='checkbox']:checked { + background-image: url("data:image/svg+xml,%3csvg aria-hidden='true' xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 12'%3e %3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3e %3c/svg%3e"); + background-repeat: no-repeat; + background-size: 0.55em 0.55em; + -webkit-print-color-adjust: exact; + print-color-adjust: exact; +} + +[type='radio']:checked { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e"); + background-size: 1em 1em; +} + +.dark [type='radio']:checked { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e"); + background-size: 1em 1em; +} + +[type='checkbox']:indeterminate { + background-image: url("data:image/svg+xml,%3csvg aria-hidden='true' xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 12'%3e %3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M0.5 6h14'/%3e %3c/svg%3e"); + background-color: currentColor; + border-color: transparent; + background-position: center; + background-repeat: no-repeat; + background-size: 0.55em 0.55em; + -webkit-print-color-adjust: exact; + print-color-adjust: exact; +} + +[type='checkbox']:indeterminate:hover,[type='checkbox']:indeterminate:focus { + border-color: transparent; + background-color: currentColor; +} + +[type='file'] { + background: unset; + border-color: inherit; + border-width: 0; + border-radius: 0; + padding: 0; + font-size: unset; + line-height: inherit; +} + +[type='file']:focus { + outline: 1px auto inherit; +} + +input[type=file]::file-selector-button { + color: white; + background: #1F2937; + border: 0; + font-weight: 500; + font-size: 0.875rem; + cursor: pointer; + padding-top: 0.625rem; + padding-bottom: 0.625rem; + padding-left: 2rem; + padding-right: 1rem; + margin-inline-start: -1rem; + margin-inline-end: 1rem; +} + +input[type=file]::file-selector-button:hover { + background: #374151; +} + +:is([dir=rtl]) input[type=file]::file-selector-button { + padding-right: 2rem; + padding-left: 1rem; +} + +.dark input[type=file]::file-selector-button { + color: white; + background: #4B5563; +} + +.dark input[type=file]::file-selector-button:hover { + background: #6B7280; +} + +input[type="range"]::-webkit-slider-thumb { + height: 1.25rem; + width: 1.25rem; + background: #1C64F2; + border-radius: 9999px; + border: 0; + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + cursor: pointer; +} + +input[type="range"]:disabled::-webkit-slider-thumb { + background: #9CA3AF; +} + +.dark input[type="range"]:disabled::-webkit-slider-thumb { + background: #6B7280; +} + +input[type="range"]:focus::-webkit-slider-thumb { + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-opacity: 1px; + --tw-ring-color: rgb(164 202 254 / var(--tw-ring-opacity)); +} + +input[type="range"]::-moz-range-thumb { + height: 1.25rem; + width: 1.25rem; + background: #1C64F2; + border-radius: 9999px; + border: 0; + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + cursor: pointer; +} + +input[type="range"]:disabled::-moz-range-thumb { + background: #9CA3AF; +} + +.dark input[type="range"]:disabled::-moz-range-thumb { + background: #6B7280; +} + +input[type="range"]::-moz-range-progress { + background: #3F83F8; +} + +input[type="range"]::-ms-fill-lower { + background: #3F83F8; +} +.container { + width: 100%; +} +@media (min-width: 640px) { + + .container { + max-width: 640px; + } +} +@media (min-width: 768px) { + + .container { + max-width: 768px; + } +} +@media (min-width: 1024px) { + + .container { + max-width: 1024px; + } +} +@media (min-width: 1280px) { + + .container { + max-width: 1280px; + } +} +@media (min-width: 1536px) { + + .container { + max-width: 1536px; + } +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} +.pointer-events-none { + pointer-events: none; +} +.visible { + visibility: visible; +} +.invisible { + visibility: hidden; +} +.collapse { + visibility: collapse; +} +.fixed { + position: fixed; +} +.absolute { + position: absolute; +} +.relative { + position: relative; +} +.inset-0 { + inset: 0px; +} +.inset-x-0 { + left: 0px; + right: 0px; +} +.inset-y-0 { + top: 0px; + bottom: 0px; +} +.-bottom-1 { + bottom: -0.25rem; +} +.-left-1 { + left: -0.25rem; +} +.-left-1\.5 { + left: -0.375rem; +} +.-left-3 { + left: -0.75rem; +} +.-right-1 { + right: -0.25rem; +} +.-top-1 { + top: -0.25rem; +} +.bottom-0 { + bottom: 0px; +} +.bottom-16 { + bottom: 4rem; +} +.bottom-5 { + bottom: 1.25rem; +} +.end-2 { + inset-inline-end: 0.5rem; +} +.end-2\.5 { + inset-inline-end: 0.625rem; +} +.left-0 { + left: 0px; +} +.left-1 { + left: 0.25rem; +} +.left-1\/2 { + left: 50%; +} +.left-2 { + left: 0.5rem; +} +.left-2\.5 { + left: 0.625rem; +} +.left-3 { + left: 0.75rem; +} +.left-4 { + left: 1rem; +} +.left-5 { + left: 1.25rem; +} +.left-6 { + left: 1.5rem; +} +.right-0 { + right: 0px; +} +.top-0 { + top: 0px; +} +.top-1\/2 { + top: 50%; +} +.top-10 { + top: 2.5rem; +} +.top-2 { + top: 0.5rem; +} +.top-2\.5 { + top: 0.625rem; +} +.top-3 { + top: 0.75rem; +} +.top-4 { + top: 1rem; +} +.-z-10 { + z-index: -10; +} +.z-0 { + z-index: 0; +} +.z-10 { + z-index: 10; +} +.z-20 { + z-index: 20; +} +.z-30 { + z-index: 30; +} +.z-40 { + z-index: 40; +} +.z-50 { + z-index: 50; +} +.z-auto { + z-index: auto; +} +.-m-1\.5 { + margin: -0.375rem; +} +.m-0 { + margin: 0px; +} +.m-1 { + margin: 0.25rem; +} +.mx-1 { + margin-left: 0.25rem; + margin-right: 0.25rem; +} +.mx-4 { + margin-left: 1rem; + margin-right: 1rem; +} +.mx-auto { + margin-left: auto; + margin-right: auto; +} +.my-1 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} +.my-4 { + margin-top: 1rem; + margin-bottom: 1rem; +} +.my-6 { + margin-top: 1.5rem; + margin-bottom: 1.5rem; +} +.my-8 { + margin-top: 2rem; + margin-bottom: 2rem; +} +.-mb-px { + margin-bottom: -1px; +} +.mb-1 { + margin-bottom: 0.25rem; +} +.mb-10 { + margin-bottom: 2.5rem; +} +.mb-2 { + margin-bottom: 0.5rem; +} +.mb-4 { + margin-bottom: 1rem; +} +.mb-5 { + margin-bottom: 1.25rem; +} +.mb-6 { + margin-bottom: 1.5rem; +} +.me-1\.5 { + margin-inline-end: 0.375rem; +} +.me-2 { + margin-inline-end: 0.5rem; +} +.me-2\.5 { + margin-inline-end: 0.625rem; +} +.me-4 { + margin-inline-end: 1rem; +} +.ml-0 { + margin-left: 0px; +} +.ml-1 { + margin-left: 0.25rem; +} +.ml-2 { + margin-left: 0.5rem; +} +.ml-3 { + margin-left: 0.75rem; +} +.ml-6 { + margin-left: 1.5rem; +} +.ml-auto { + margin-left: auto; +} +.mr-1 { + margin-right: 0.25rem; +} +.mr-2 { + margin-right: 0.5rem; +} +.mr-3 { + margin-right: 0.75rem; +} +.ms-3 { + margin-inline-start: 0.75rem; +} +.mt-0\.5 { + margin-top: 0.125rem; +} +.mt-1 { + margin-top: 0.25rem; +} +.mt-1\.5 { + margin-top: 0.375rem; +} +.mt-2 { + margin-top: 0.5rem; +} +.mt-3 { + margin-top: 0.75rem; +} +.mt-4 { + margin-top: 1rem; +} +.mt-6 { + margin-top: 1.5rem; +} +.block { + display: block; +} +.inline-block { + display: inline-block; +} +.\!inline { + display: inline !important; +} +.inline { + display: inline; +} +.flex { + display: flex; +} +.inline-flex { + display: inline-flex; +} +.table { + display: table; +} +.grid { + display: grid; +} +.hidden { + display: none; +} +.h-0\.5 { + height: 0.125rem; +} +.h-1 { + height: 0.25rem; +} +.h-1\.5 { + height: 0.375rem; +} +.h-10 { + height: 2.5rem; +} +.h-2 { + height: 0.5rem; +} +.h-2\.5 { + height: 0.625rem; +} +.h-20 { + height: 5rem; +} +.h-3 { + height: 0.75rem; +} +.h-3\.5 { + height: 0.875rem; +} +.h-36 { + height: 9rem; +} +.h-4 { + height: 1rem; +} +.h-5 { + height: 1.25rem; +} +.h-6 { + height: 1.5rem; +} +.h-7 { + height: 1.75rem; +} +.h-8 { + height: 2rem; +} +.h-9 { + height: 2.25rem; +} +.h-96 { + height: 24rem; +} +.h-auto { + height: auto; +} +.h-fit { + height: -moz-fit-content; + height: fit-content; +} +.h-full { + height: 100%; +} +.h-px { + height: 1px; +} +.h-screen { + height: 100vh; +} +.max-h-\[90dvh\] { + max-height: 90dvh; +} +.min-h-96 { + min-height: 24rem; +} +.w-1\/2 { + width: 50%; +} +.w-10 { + width: 2.5rem; +} +.w-11 { + width: 2.75rem; +} +.w-12 { + width: 3rem; +} +.w-14 { + width: 3.5rem; +} +.w-16 { + width: 4rem; +} +.w-2 { + width: 0.5rem; +} +.w-2\/4 { + width: 50%; +} +.w-20 { + width: 5rem; +} +.w-3 { + width: 0.75rem; +} +.w-3\.5 { + width: 0.875rem; +} +.w-36 { + width: 9rem; +} +.w-4 { + width: 1rem; +} +.w-48 { + width: 12rem; +} +.w-5 { + width: 1.25rem; +} +.w-6 { + width: 1.5rem; +} +.w-64 { + width: 16rem; +} +.w-7 { + width: 1.75rem; +} +.w-8 { + width: 2rem; +} +.w-80 { + width: 20rem; +} +.w-9 { + width: 2.25rem; +} +.w-auto { + width: auto; +} +.w-fit { + width: -moz-fit-content; + width: fit-content; +} +.w-full { + width: 100%; +} +.w-max { + width: -moz-max-content; + width: max-content; +} +.min-w-11 { + min-width: 2.75rem; +} +.min-w-14 { + min-width: 3.5rem; +} +.min-w-9 { + min-width: 2.25rem; +} +.max-w-2xl { + max-width: 42rem; +} +.max-w-3xl { + max-width: 48rem; +} +.max-w-4xl { + max-width: 56rem; +} +.max-w-5xl { + max-width: 64rem; +} +.max-w-6xl { + max-width: 72rem; +} +.max-w-7xl { + max-width: 80rem; +} +.max-w-\[100vw\] { + max-width: 100vw; +} +.max-w-lg { + max-width: 32rem; +} +.max-w-md { + max-width: 28rem; +} +.max-w-sm { + max-width: 24rem; +} +.max-w-xl { + max-width: 36rem; +} +.max-w-xs { + max-width: 20rem; +} +.flex-1 { + flex: 1 1 0%; +} +.flex-auto { + flex: 1 1 auto; +} +.flex-shrink-0 { + flex-shrink: 0; +} +.shrink-0 { + flex-shrink: 0; +} +.origin-\[0\] { + transform-origin: 0; +} +.-translate-x-1\/2 { + --tw-translate-x: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.-translate-x-full { + --tw-translate-x: -100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.-translate-y-1\/2 { + --tw-translate-y: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.-translate-y-4 { + --tw-translate-y: -1rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.-translate-y-6 { + --tw-translate-y: -1.5rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.-translate-y-full { + --tw-translate-y: -100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.translate-x-full { + --tw-translate-x: 100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.translate-y-full { + --tw-translate-y: 100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.rotate-180 { + --tw-rotate: 180deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.rotate-45 { + --tw-rotate: 45deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.scale-75 { + --tw-scale-x: .75; + --tw-scale-y: .75; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.transform { + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.transform-none { + transform: none; +} +@keyframes spin { + + to { + transform: rotate(360deg); + } +} +.animate-spin { + animation: spin 1s linear infinite; +} +.cursor-default { + cursor: default; +} +.cursor-grab { + cursor: grab; +} +.cursor-not-allowed { + cursor: not-allowed; +} +.cursor-pointer { + cursor: pointer; +} +.cursor-wait { + cursor: wait; +} +.snap-x { + scroll-snap-type: x var(--tw-scroll-snap-strictness); +} +.snap-mandatory { + --tw-scroll-snap-strictness: mandatory; +} +.snap-center { + scroll-snap-align: center; +} +.list-inside { + list-style-position: inside; +} +.list-decimal { + list-style-type: decimal; +} +.list-disc { + list-style-type: disc; +} +.list-none { + list-style-type: none; +} +.appearance-none { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.grid-flow-col { + grid-auto-flow: column; +} +.grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); +} +.grid-cols-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); +} +.flex-col { + flex-direction: column; +} +.flex-wrap { + flex-wrap: wrap; +} +.items-start { + align-items: flex-start; +} +.items-end { + align-items: flex-end; +} +.items-center { + align-items: center; +} +.items-stretch { + align-items: stretch; +} +.justify-start { + justify-content: flex-start; +} +.justify-end { + justify-content: flex-end; +} +.justify-center { + justify-content: center; +} +.justify-between { + justify-content: space-between; +} +.gap-1 { + gap: 0.25rem; +} +.gap-2 { + gap: 0.5rem; +} +.gap-3 { + gap: 0.75rem; +} +.gap-4 { + gap: 1rem; +} +.-space-x-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(-1rem * var(--tw-space-x-reverse)); + margin-left: calc(-1rem * calc(1 - var(--tw-space-x-reverse))); +} +.-space-x-px > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(-1px * var(--tw-space-x-reverse)); + margin-left: calc(-1px * calc(1 - var(--tw-space-x-reverse))); +} +.space-x-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); +} +.space-x-3 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.75rem * var(--tw-space-x-reverse)); + margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse))); +} +.space-x-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1rem * var(--tw-space-x-reverse)); + margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); +} +.space-y-0 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0px * var(--tw-space-y-reverse)); +} +.space-y-1 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); +} +.space-y-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); +} +.space-y-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1rem * var(--tw-space-y-reverse)); +} +.divide-x > :not([hidden]) ~ :not([hidden]) { + --tw-divide-x-reverse: 0; + border-right-width: calc(1px * var(--tw-divide-x-reverse)); + border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse))); +} +.divide-y > :not([hidden]) ~ :not([hidden]) { + --tw-divide-y-reverse: 0; + border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); + border-bottom-width: calc(1px * var(--tw-divide-y-reverse)); +} +.divide-gray-100 > :not([hidden]) ~ :not([hidden]) { + --tw-divide-opacity: 1; + border-color: rgb(243 244 246 / var(--tw-divide-opacity, 1)); +} +.divide-gray-200 > :not([hidden]) ~ :not([hidden]) { + --tw-divide-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-divide-opacity, 1)); +} +.self-center { + align-self: center; +} +.overflow-auto { + overflow: auto; +} +.overflow-hidden { + overflow: hidden; +} +.overflow-y-auto { + overflow-y: auto; +} +.\!overflow-x-hidden { + overflow-x: hidden !important; +} +.overflow-x-hidden { + overflow-x: hidden; +} +.overflow-y-hidden { + overflow-y: hidden; +} +.overflow-x-scroll { + overflow-x: scroll; +} +.\!scroll-auto { + scroll-behavior: auto !important; +} +.scroll-smooth { + scroll-behavior: smooth; +} +.whitespace-nowrap { + white-space: nowrap; +} +.rounded { + border-radius: 0.25rem; +} +.rounded-\[7px\] { + border-radius: 7px; +} +.rounded-full { + border-radius: 9999px; +} +.rounded-lg { + border-radius: 0.5rem; +} +.rounded-md { + border-radius: 0.375rem; +} +.rounded-none { + border-radius: 0px; +} +.rounded-b { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.rounded-e-lg { + border-start-end-radius: 0.5rem; + border-end-end-radius: 0.5rem; +} +.rounded-l-lg { + border-top-left-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; +} +.rounded-l-md { + border-top-left-radius: 0.375rem; + border-bottom-left-radius: 0.375rem; +} +.rounded-l-none { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} +.rounded-r-lg { + border-top-right-radius: 0.5rem; + border-bottom-right-radius: 0.5rem; +} +.rounded-r-none { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} +.rounded-s-lg { + border-start-start-radius: 0.5rem; + border-end-start-radius: 0.5rem; +} +.rounded-t { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} +.rounded-t-lg { + border-top-left-radius: 0.5rem; + border-top-right-radius: 0.5rem; +} +.border { + border-width: 1px; +} +.border-0 { + border-width: 0px; +} +.border-2 { + border-width: 2px; +} +.border-b { + border-bottom-width: 1px; +} +.border-b-0 { + border-bottom-width: 0px; +} +.border-b-2 { + border-bottom-width: 2px; +} +.border-l { + border-left-width: 1px; +} +.border-l-0 { + border-left-width: 0px; +} +.border-r-0 { + border-right-width: 0px; +} +.border-t { + border-top-width: 1px; +} +.border-t-4 { + border-top-width: 4px; +} +.border-blue-500 { + --tw-border-opacity: 1; + border-color: rgb(63 131 248 / var(--tw-border-opacity, 1)); +} +.border-cyan-300 { + --tw-border-opacity: 1; + border-color: rgb(103 232 249 / var(--tw-border-opacity, 1)); +} +.border-cyan-500 { + --tw-border-opacity: 1; + border-color: rgb(6 182 212 / var(--tw-border-opacity, 1)); +} +.border-cyan-600 { + --tw-border-opacity: 1; + border-color: rgb(8 145 178 / var(--tw-border-opacity, 1)); +} +.border-cyan-700 { + --tw-border-opacity: 1; + border-color: rgb(14 116 144 / var(--tw-border-opacity, 1)); +} +.border-gray-100 { + --tw-border-opacity: 1; + border-color: rgb(243 244 246 / var(--tw-border-opacity, 1)); +} +.border-gray-200 { + --tw-border-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-border-opacity, 1)); +} +.border-gray-300 { + --tw-border-opacity: 1; + border-color: rgb(209 213 219 / var(--tw-border-opacity, 1)); +} +.border-gray-400 { + --tw-border-opacity: 1; + border-color: rgb(156 163 175 / var(--tw-border-opacity, 1)); +} +.border-gray-500 { + --tw-border-opacity: 1; + border-color: rgb(107 114 128 / var(--tw-border-opacity, 1)); +} +.border-gray-600 { + --tw-border-opacity: 1; + border-color: rgb(75 85 99 / var(--tw-border-opacity, 1)); +} +.border-gray-900 { + --tw-border-opacity: 1; + border-color: rgb(17 24 39 / var(--tw-border-opacity, 1)); +} +.border-green-300 { + --tw-border-opacity: 1; + border-color: rgb(132 225 188 / var(--tw-border-opacity, 1)); +} +.border-green-500 { + --tw-border-opacity: 1; + border-color: rgb(14 159 110 / var(--tw-border-opacity, 1)); +} +.border-green-600 { + --tw-border-opacity: 1; + border-color: rgb(5 122 85 / var(--tw-border-opacity, 1)); +} +.border-green-700 { + --tw-border-opacity: 1; + border-color: rgb(4 108 78 / var(--tw-border-opacity, 1)); +} +.border-indigo-300 { + --tw-border-opacity: 1; + border-color: rgb(180 198 252 / var(--tw-border-opacity, 1)); +} +.border-indigo-400 { + --tw-border-opacity: 1; + border-color: rgb(141 162 251 / var(--tw-border-opacity, 1)); +} +.border-indigo-500 { + --tw-border-opacity: 1; + border-color: rgb(104 117 245 / var(--tw-border-opacity, 1)); +} +.border-lime-300 { + --tw-border-opacity: 1; + border-color: rgb(190 242 100 / var(--tw-border-opacity, 1)); +} +.border-lime-400 { + --tw-border-opacity: 1; + border-color: rgb(163 230 53 / var(--tw-border-opacity, 1)); +} +.border-lime-500 { + --tw-border-opacity: 1; + border-color: rgb(132 204 22 / var(--tw-border-opacity, 1)); +} +.border-pink-300 { + --tw-border-opacity: 1; + border-color: rgb(248 180 217 / var(--tw-border-opacity, 1)); +} +.border-pink-500 { + --tw-border-opacity: 1; + border-color: rgb(231 70 148 / var(--tw-border-opacity, 1)); +} +.border-pink-600 { + --tw-border-opacity: 1; + border-color: rgb(214 31 105 / var(--tw-border-opacity, 1)); +} +.border-purple-500 { + --tw-border-opacity: 1; + border-color: rgb(144 97 249 / var(--tw-border-opacity, 1)); +} +.border-purple-900 { + --tw-border-opacity: 1; + border-color: rgb(74 29 150 / var(--tw-border-opacity, 1)); +} +.border-red-300 { + --tw-border-opacity: 1; + border-color: rgb(248 180 180 / var(--tw-border-opacity, 1)); +} +.border-red-500 { + --tw-border-opacity: 1; + border-color: rgb(240 82 82 / var(--tw-border-opacity, 1)); +} +.border-red-600 { + --tw-border-opacity: 1; + border-color: rgb(224 36 36 / var(--tw-border-opacity, 1)); +} +.border-red-900 { + --tw-border-opacity: 1; + border-color: rgb(119 29 29 / var(--tw-border-opacity, 1)); +} +.border-slate-200 { + --tw-border-opacity: 1; + border-color: rgb(226 232 240 / var(--tw-border-opacity, 1)); +} +.border-teal-300 { + --tw-border-opacity: 1; + border-color: rgb(126 220 226 / var(--tw-border-opacity, 1)); +} +.border-teal-500 { + --tw-border-opacity: 1; + border-color: rgb(6 148 162 / var(--tw-border-opacity, 1)); +} +.border-transparent { + border-color: transparent; +} +.border-white { + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity, 1)); +} +.border-yellow-300 { + --tw-border-opacity: 1; + border-color: rgb(250 202 21 / var(--tw-border-opacity, 1)); +} +.border-yellow-400 { + --tw-border-opacity: 1; + border-color: rgb(227 160 8 / var(--tw-border-opacity, 1)); +} +.border-yellow-500 { + --tw-border-opacity: 1; + border-color: rgb(194 120 3 / var(--tw-border-opacity, 1)); +} +.border-yellow-600 { + --tw-border-opacity: 1; + border-color: rgb(159 88 10 / var(--tw-border-opacity, 1)); +} +.\!bg-gray-50 { + --tw-bg-opacity: 1 !important; + background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)) !important; +} +.\!bg-transparent { + background-color: transparent !important; +} +.bg-blue-100 { + --tw-bg-opacity: 1; + background-color: rgb(225 239 254 / var(--tw-bg-opacity, 1)); +} +.bg-blue-600 { + --tw-bg-opacity: 1; + background-color: rgb(28 100 242 / var(--tw-bg-opacity, 1)); +} +.bg-blue-700 { + --tw-bg-opacity: 1; + background-color: rgb(26 86 219 / var(--tw-bg-opacity, 1)); +} +.bg-cyan-100 { + --tw-bg-opacity: 1; + background-color: rgb(207 250 254 / var(--tw-bg-opacity, 1)); +} +.bg-cyan-200 { + --tw-bg-opacity: 1; + background-color: rgb(165 243 252 / var(--tw-bg-opacity, 1)); +} +.bg-cyan-50 { + --tw-bg-opacity: 1; + background-color: rgb(236 254 255 / var(--tw-bg-opacity, 1)); +} +.bg-cyan-500 { + --tw-bg-opacity: 1; + background-color: rgb(6 182 212 / var(--tw-bg-opacity, 1)); +} +.bg-cyan-600 { + --tw-bg-opacity: 1; + background-color: rgb(8 145 178 / var(--tw-bg-opacity, 1)); +} +.bg-cyan-700 { + --tw-bg-opacity: 1; + background-color: rgb(14 116 144 / var(--tw-bg-opacity, 1)); +} +.bg-gray-100 { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); +} +.bg-gray-200 { + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); +} +.bg-gray-400 { + --tw-bg-opacity: 1; + background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1)); +} +.bg-gray-50 { + --tw-bg-opacity: 1; + background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)); +} +.bg-gray-500 { + --tw-bg-opacity: 1; + background-color: rgb(107 114 128 / var(--tw-bg-opacity, 1)); +} +.bg-gray-600 { + --tw-bg-opacity: 1; + background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1)); +} +.bg-gray-700 { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1)); +} +.bg-gray-800 { + --tw-bg-opacity: 1; + background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1)); +} +.bg-gray-900 { + --tw-bg-opacity: 1; + background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1)); +} +.bg-gray-900\/50 { + background-color: rgb(17 24 39 / 0.5); +} +.bg-green-100 { + --tw-bg-opacity: 1; + background-color: rgb(222 247 236 / var(--tw-bg-opacity, 1)); +} +.bg-green-400 { + --tw-bg-opacity: 1; + background-color: rgb(49 196 141 / var(--tw-bg-opacity, 1)); +} +.bg-green-50 { + --tw-bg-opacity: 1; + background-color: rgb(243 250 247 / var(--tw-bg-opacity, 1)); +} +.bg-green-500 { + --tw-bg-opacity: 1; + background-color: rgb(14 159 110 / var(--tw-bg-opacity, 1)); +} +.bg-green-600 { + --tw-bg-opacity: 1; + background-color: rgb(5 122 85 / var(--tw-bg-opacity, 1)); +} +.bg-green-700 { + --tw-bg-opacity: 1; + background-color: rgb(4 108 78 / var(--tw-bg-opacity, 1)); +} +.bg-indigo-100 { + --tw-bg-opacity: 1; + background-color: rgb(229 237 255 / var(--tw-bg-opacity, 1)); +} +.bg-indigo-400 { + --tw-bg-opacity: 1; + background-color: rgb(141 162 251 / var(--tw-bg-opacity, 1)); +} +.bg-indigo-600 { + --tw-bg-opacity: 1; + background-color: rgb(88 80 236 / var(--tw-bg-opacity, 1)); +} +.bg-lime-100 { + --tw-bg-opacity: 1; + background-color: rgb(236 252 203 / var(--tw-bg-opacity, 1)); +} +.bg-lime-400 { + --tw-bg-opacity: 1; + background-color: rgb(163 230 53 / var(--tw-bg-opacity, 1)); +} +.bg-lime-600 { + --tw-bg-opacity: 1; + background-color: rgb(101 163 13 / var(--tw-bg-opacity, 1)); +} +.bg-pink-100 { + --tw-bg-opacity: 1; + background-color: rgb(252 232 243 / var(--tw-bg-opacity, 1)); +} +.bg-pink-500 { + --tw-bg-opacity: 1; + background-color: rgb(231 70 148 / var(--tw-bg-opacity, 1)); +} +.bg-pink-600 { + --tw-bg-opacity: 1; + background-color: rgb(214 31 105 / var(--tw-bg-opacity, 1)); +} +.bg-purple-100 { + --tw-bg-opacity: 1; + background-color: rgb(237 235 254 / var(--tw-bg-opacity, 1)); +} +.bg-purple-50 { + --tw-bg-opacity: 1; + background-color: rgb(246 245 255 / var(--tw-bg-opacity, 1)); +} +.bg-purple-600 { + --tw-bg-opacity: 1; + background-color: rgb(126 58 242 / var(--tw-bg-opacity, 1)); +} +.bg-purple-700 { + --tw-bg-opacity: 1; + background-color: rgb(108 43 217 / var(--tw-bg-opacity, 1)); +} +.bg-red-100 { + --tw-bg-opacity: 1; + background-color: rgb(253 232 232 / var(--tw-bg-opacity, 1)); +} +.bg-red-400 { + --tw-bg-opacity: 1; + background-color: rgb(249 128 128 / var(--tw-bg-opacity, 1)); +} +.bg-red-50 { + --tw-bg-opacity: 1; + background-color: rgb(253 242 242 / var(--tw-bg-opacity, 1)); +} +.bg-red-600 { + --tw-bg-opacity: 1; + background-color: rgb(224 36 36 / var(--tw-bg-opacity, 1)); +} +.bg-red-700 { + --tw-bg-opacity: 1; + background-color: rgb(200 30 30 / var(--tw-bg-opacity, 1)); +} +.bg-teal-100 { + --tw-bg-opacity: 1; + background-color: rgb(213 245 246 / var(--tw-bg-opacity, 1)); +} +.bg-teal-600 { + --tw-bg-opacity: 1; + background-color: rgb(4 116 129 / var(--tw-bg-opacity, 1)); +} +.bg-transparent { + background-color: transparent; +} +.bg-white { + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); +} +.bg-white\/30 { + background-color: rgb(255 255 255 / 0.3); +} +.bg-white\/50 { + background-color: rgb(255 255 255 / 0.5); +} +.bg-yellow-100 { + --tw-bg-opacity: 1; + background-color: rgb(253 246 178 / var(--tw-bg-opacity, 1)); +} +.bg-yellow-400 { + --tw-bg-opacity: 1; + background-color: rgb(227 160 8 / var(--tw-bg-opacity, 1)); +} +.bg-yellow-50 { + --tw-bg-opacity: 1; + background-color: rgb(253 253 234 / var(--tw-bg-opacity, 1)); +} +.bg-yellow-600 { + --tw-bg-opacity: 1; + background-color: rgb(159 88 10 / var(--tw-bg-opacity, 1)); +} +.bg-opacity-50 { + --tw-bg-opacity: 0.5; +} +.bg-gradient-to-br { + background-image: linear-gradient(to bottom right, var(--tw-gradient-stops)); +} +.bg-gradient-to-r { + background-image: linear-gradient(to right, var(--tw-gradient-stops)); +} +.from-cyan-400 { + --tw-gradient-from: #22d3ee var(--tw-gradient-from-position); + --tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.from-cyan-500 { + --tw-gradient-from: #06b6d4 var(--tw-gradient-from-position); + --tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.from-green-400 { + --tw-gradient-from: #31C48D var(--tw-gradient-from-position); + --tw-gradient-to: rgb(49 196 141 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.from-lime-200 { + --tw-gradient-from: #d9f99d var(--tw-gradient-from-position); + --tw-gradient-to: rgb(217 249 157 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.from-pink-400 { + --tw-gradient-from: #F17EB8 var(--tw-gradient-from-position); + --tw-gradient-to: rgb(241 126 184 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.from-pink-500 { + --tw-gradient-from: #E74694 var(--tw-gradient-from-position); + --tw-gradient-to: rgb(231 70 148 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.from-purple-500 { + --tw-gradient-from: #9061F9 var(--tw-gradient-from-position); + --tw-gradient-to: rgb(144 97 249 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.from-purple-600 { + --tw-gradient-from: #7E3AF2 var(--tw-gradient-from-position); + --tw-gradient-to: rgb(126 58 242 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.from-red-200 { + --tw-gradient-from: #FBD5D5 var(--tw-gradient-from-position); + --tw-gradient-to: rgb(251 213 213 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.from-red-400 { + --tw-gradient-from: #F98080 var(--tw-gradient-from-position); + --tw-gradient-to: rgb(249 128 128 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.from-teal-200 { + --tw-gradient-from: #AFECEF var(--tw-gradient-from-position); + --tw-gradient-to: rgb(175 236 239 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.from-teal-400 { + --tw-gradient-from: #16BDCA var(--tw-gradient-from-position); + --tw-gradient-to: rgb(22 189 202 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.via-cyan-500 { + --tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), #06b6d4 var(--tw-gradient-via-position), var(--tw-gradient-to); +} +.via-cyan-600 { + --tw-gradient-to: rgb(8 145 178 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), #0891b2 var(--tw-gradient-via-position), var(--tw-gradient-to); +} +.via-green-500 { + --tw-gradient-to: rgb(14 159 110 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), #0E9F6E var(--tw-gradient-via-position), var(--tw-gradient-to); +} +.via-lime-400 { + --tw-gradient-to: rgb(163 230 53 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), #a3e635 var(--tw-gradient-via-position), var(--tw-gradient-to); +} +.via-pink-500 { + --tw-gradient-to: rgb(231 70 148 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), #E74694 var(--tw-gradient-via-position), var(--tw-gradient-to); +} +.via-purple-600 { + --tw-gradient-to: rgb(126 58 242 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), #7E3AF2 var(--tw-gradient-via-position), var(--tw-gradient-to); +} +.via-red-300 { + --tw-gradient-to: rgb(248 180 180 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), #F8B4B4 var(--tw-gradient-via-position), var(--tw-gradient-to); +} +.via-red-500 { + --tw-gradient-to: rgb(240 82 82 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), #F05252 var(--tw-gradient-via-position), var(--tw-gradient-to); +} +.via-teal-500 { + --tw-gradient-to: rgb(6 148 162 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), #0694A2 var(--tw-gradient-via-position), var(--tw-gradient-to); +} +.to-cyan-500 { + --tw-gradient-to: #06b6d4 var(--tw-gradient-to-position); +} +.to-cyan-600 { + --tw-gradient-to: #0891b2 var(--tw-gradient-to-position); +} +.to-cyan-700 { + --tw-gradient-to: #0e7490 var(--tw-gradient-to-position); +} +.to-green-600 { + --tw-gradient-to: #057A55 var(--tw-gradient-to-position); +} +.to-lime-200 { + --tw-gradient-to: #d9f99d var(--tw-gradient-to-position); +} +.to-lime-500 { + --tw-gradient-to: #84cc16 var(--tw-gradient-to-position); +} +.to-orange-400 { + --tw-gradient-to: #FF8A4C var(--tw-gradient-to-position); +} +.to-pink-500 { + --tw-gradient-to: #E74694 var(--tw-gradient-to-position); +} +.to-pink-600 { + --tw-gradient-to: #D61F69 var(--tw-gradient-to-position); +} +.to-purple-700 { + --tw-gradient-to: #6C2BD9 var(--tw-gradient-to-position); +} +.to-red-600 { + --tw-gradient-to: #E02424 var(--tw-gradient-to-position); +} +.to-teal-600 { + --tw-gradient-to: #047481 var(--tw-gradient-to-position); +} +.to-yellow-200 { + --tw-gradient-to: #FCE96A var(--tw-gradient-to-position); +} +.fill-current { + fill: currentColor; +} +.fill-cyan-600 { + fill: #0891b2; +} +.fill-gray-600 { + fill: #4B5563; +} +.fill-green-500 { + fill: #0E9F6E; +} +.fill-pink-600 { + fill: #D61F69; +} +.fill-purple-600 { + fill: #7E3AF2; +} +.fill-red-600 { + fill: #E02424; +} +.fill-yellow-400 { + fill: #E3A008; +} +.object-cover { + -o-object-fit: cover; + object-fit: cover; +} +.p-0\.5 { + padding: 0.125rem; +} +.p-1 { + padding: 0.25rem; +} +.p-1\.5 { + padding: 0.375rem; +} +.p-2 { + padding: 0.5rem; +} +.p-2\.5 { + padding: 0.625rem; +} +.p-4 { + padding: 1rem; +} +.p-5 { + padding: 1.25rem; +} +.p-6 { + padding: 1.5rem; +} +.px-0 { + padding-left: 0px; + padding-right: 0px; +} +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.px-2\.5 { + padding-left: 0.625rem; + padding-right: 0.625rem; +} +.px-3 { + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} +.px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; +} +.px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.py-0\.5 { + padding-top: 0.125rem; + padding-bottom: 0.125rem; +} +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} +.py-1\.5 { + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.py-2\.5 { + padding-top: 0.625rem; + padding-bottom: 0.625rem; +} +.py-3 { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} +.pb-2\.5 { + padding-bottom: 0.625rem; +} +.pl-0 { + padding-left: 0px; +} +.pl-10 { + padding-left: 2.5rem; +} +.pl-12 { + padding-left: 3rem; +} +.pl-16 { + padding-left: 4rem; +} +.pl-2\.5 { + padding-left: 0.625rem; +} +.pl-20 { + padding-left: 5rem; +} +.pl-3 { + padding-left: 0.75rem; +} +.pl-8 { + padding-left: 2rem; +} +.pr-10 { + padding-right: 2.5rem; +} +.pr-3 { + padding-right: 0.75rem; +} +.pr-4 { + padding-right: 1rem; +} +.ps-5 { + padding-inline-start: 1.25rem; +} +.pt-0 { + padding-top: 0px; +} +.pt-2 { + padding-top: 0.5rem; +} +.pt-4 { + padding-top: 1rem; +} +.pt-5 { + padding-top: 1.25rem; +} +.text-left { + text-align: left; +} +.text-center { + text-align: center; +} +.text-start { + text-align: start; +} +.text-end { + text-align: end; +} +.text-2xl { + font-size: 1.5rem; + line-height: 2rem; +} +.text-\[17px\] { + font-size: 17px; +} +.text-base { + font-size: 1rem; + line-height: 1.5rem; +} +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} +.text-xs { + font-size: 0.75rem; + line-height: 1rem; +} +.font-bold { + font-weight: 700; +} +.font-medium { + font-weight: 500; +} +.font-normal { + font-weight: 400; +} +.font-semibold { + font-weight: 600; +} +.uppercase { + text-transform: uppercase; +} +.italic { + font-style: italic; +} +.leading-6 { + line-height: 1.5rem; +} +.leading-9 { + line-height: 2.25rem; +} +.leading-none { + line-height: 1; +} +.leading-tight { + line-height: 1.25; +} +.text-blue-500 { + --tw-text-opacity: 1; + color: rgb(63 131 248 / var(--tw-text-opacity, 1)); +} +.text-blue-700 { + --tw-text-opacity: 1; + color: rgb(26 86 219 / var(--tw-text-opacity, 1)); +} +.text-blue-800 { + --tw-text-opacity: 1; + color: rgb(30 66 159 / var(--tw-text-opacity, 1)); +} +.text-cyan-300 { + --tw-text-opacity: 1; + color: rgb(103 232 249 / var(--tw-text-opacity, 1)); +} +.text-cyan-500 { + --tw-text-opacity: 1; + color: rgb(6 182 212 / var(--tw-text-opacity, 1)); +} +.text-cyan-600 { + --tw-text-opacity: 1; + color: rgb(8 145 178 / var(--tw-text-opacity, 1)); +} +.text-cyan-700 { + --tw-text-opacity: 1; + color: rgb(14 116 144 / var(--tw-text-opacity, 1)); +} +.text-cyan-800 { + --tw-text-opacity: 1; + color: rgb(21 94 117 / var(--tw-text-opacity, 1)); +} +.text-cyan-900 { + --tw-text-opacity: 1; + color: rgb(22 78 99 / var(--tw-text-opacity, 1)); +} +.text-gray-100 { + --tw-text-opacity: 1; + color: rgb(243 244 246 / var(--tw-text-opacity, 1)); +} +.text-gray-200 { + --tw-text-opacity: 1; + color: rgb(229 231 235 / var(--tw-text-opacity, 1)); +} +.text-gray-300 { + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity, 1)); +} +.text-gray-400 { + --tw-text-opacity: 1; + color: rgb(156 163 175 / var(--tw-text-opacity, 1)); +} +.text-gray-500 { + --tw-text-opacity: 1; + color: rgb(107 114 128 / var(--tw-text-opacity, 1)); +} +.text-gray-600 { + --tw-text-opacity: 1; + color: rgb(75 85 99 / var(--tw-text-opacity, 1)); +} +.text-gray-700 { + --tw-text-opacity: 1; + color: rgb(55 65 81 / var(--tw-text-opacity, 1)); +} +.text-gray-800 { + --tw-text-opacity: 1; + color: rgb(31 41 55 / var(--tw-text-opacity, 1)); +} +.text-gray-900 { + --tw-text-opacity: 1; + color: rgb(17 24 39 / var(--tw-text-opacity, 1)); +} +.text-green-500 { + --tw-text-opacity: 1; + color: rgb(14 159 110 / var(--tw-text-opacity, 1)); +} +.text-green-600 { + --tw-text-opacity: 1; + color: rgb(5 122 85 / var(--tw-text-opacity, 1)); +} +.text-green-700 { + --tw-text-opacity: 1; + color: rgb(4 108 78 / var(--tw-text-opacity, 1)); +} +.text-green-800 { + --tw-text-opacity: 1; + color: rgb(3 84 63 / var(--tw-text-opacity, 1)); +} +.text-green-900 { + --tw-text-opacity: 1; + color: rgb(1 71 55 / var(--tw-text-opacity, 1)); +} +.text-indigo-500 { + --tw-text-opacity: 1; + color: rgb(104 117 245 / var(--tw-text-opacity, 1)); +} +.text-indigo-700 { + --tw-text-opacity: 1; + color: rgb(81 69 205 / var(--tw-text-opacity, 1)); +} +.text-indigo-800 { + --tw-text-opacity: 1; + color: rgb(66 56 157 / var(--tw-text-opacity, 1)); +} +.text-indigo-900 { + --tw-text-opacity: 1; + color: rgb(54 47 120 / var(--tw-text-opacity, 1)); +} +.text-lime-500 { + --tw-text-opacity: 1; + color: rgb(132 204 22 / var(--tw-text-opacity, 1)); +} +.text-lime-700 { + --tw-text-opacity: 1; + color: rgb(77 124 15 / var(--tw-text-opacity, 1)); +} +.text-lime-800 { + --tw-text-opacity: 1; + color: rgb(63 98 18 / var(--tw-text-opacity, 1)); +} +.text-lime-900 { + --tw-text-opacity: 1; + color: rgb(54 83 20 / var(--tw-text-opacity, 1)); +} +.text-pink-500 { + --tw-text-opacity: 1; + color: rgb(231 70 148 / var(--tw-text-opacity, 1)); +} +.text-pink-600 { + --tw-text-opacity: 1; + color: rgb(214 31 105 / var(--tw-text-opacity, 1)); +} +.text-pink-700 { + --tw-text-opacity: 1; + color: rgb(191 18 93 / var(--tw-text-opacity, 1)); +} +.text-pink-800 { + --tw-text-opacity: 1; + color: rgb(153 21 75 / var(--tw-text-opacity, 1)); +} +.text-pink-900 { + --tw-text-opacity: 1; + color: rgb(117 26 61 / var(--tw-text-opacity, 1)); +} +.text-purple-500 { + --tw-text-opacity: 1; + color: rgb(144 97 249 / var(--tw-text-opacity, 1)); +} +.text-purple-600 { + --tw-text-opacity: 1; + color: rgb(126 58 242 / var(--tw-text-opacity, 1)); +} +.text-purple-700 { + --tw-text-opacity: 1; + color: rgb(108 43 217 / var(--tw-text-opacity, 1)); +} +.text-purple-800 { + --tw-text-opacity: 1; + color: rgb(85 33 181 / var(--tw-text-opacity, 1)); +} +.text-red-500 { + --tw-text-opacity: 1; + color: rgb(240 82 82 / var(--tw-text-opacity, 1)); +} +.text-red-600 { + --tw-text-opacity: 1; + color: rgb(224 36 36 / var(--tw-text-opacity, 1)); +} +.text-red-700 { + --tw-text-opacity: 1; + color: rgb(200 30 30 / var(--tw-text-opacity, 1)); +} +.text-red-800 { + --tw-text-opacity: 1; + color: rgb(155 28 28 / var(--tw-text-opacity, 1)); +} +.text-red-900 { + --tw-text-opacity: 1; + color: rgb(119 29 29 / var(--tw-text-opacity, 1)); +} +.text-teal-500 { + --tw-text-opacity: 1; + color: rgb(6 148 162 / var(--tw-text-opacity, 1)); +} +.text-teal-600 { + --tw-text-opacity: 1; + color: rgb(4 116 129 / var(--tw-text-opacity, 1)); +} +.text-teal-700 { + --tw-text-opacity: 1; + color: rgb(3 102 114 / var(--tw-text-opacity, 1)); +} +.text-teal-800 { + --tw-text-opacity: 1; + color: rgb(5 80 92 / var(--tw-text-opacity, 1)); +} +.text-teal-900 { + --tw-text-opacity: 1; + color: rgb(1 68 81 / var(--tw-text-opacity, 1)); +} +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); +} +.text-yellow-400 { + --tw-text-opacity: 1; + color: rgb(227 160 8 / var(--tw-text-opacity, 1)); +} +.text-yellow-500 { + --tw-text-opacity: 1; + color: rgb(194 120 3 / var(--tw-text-opacity, 1)); +} +.text-yellow-700 { + --tw-text-opacity: 1; + color: rgb(142 75 16 / var(--tw-text-opacity, 1)); +} +.text-yellow-800 { + --tw-text-opacity: 1; + color: rgb(114 59 19 / var(--tw-text-opacity, 1)); +} +.text-yellow-900 { + --tw-text-opacity: 1; + color: rgb(99 49 18 / var(--tw-text-opacity, 1)); +} +.underline { + text-decoration-line: underline; +} +.placeholder-cyan-700::-moz-placeholder { + --tw-placeholder-opacity: 1; + color: rgb(14 116 144 / var(--tw-placeholder-opacity, 1)); +} +.placeholder-cyan-700::placeholder { + --tw-placeholder-opacity: 1; + color: rgb(14 116 144 / var(--tw-placeholder-opacity, 1)); +} +.placeholder-green-700::-moz-placeholder { + --tw-placeholder-opacity: 1; + color: rgb(4 108 78 / var(--tw-placeholder-opacity, 1)); +} +.placeholder-green-700::placeholder { + --tw-placeholder-opacity: 1; + color: rgb(4 108 78 / var(--tw-placeholder-opacity, 1)); +} +.placeholder-red-700::-moz-placeholder { + --tw-placeholder-opacity: 1; + color: rgb(200 30 30 / var(--tw-placeholder-opacity, 1)); +} +.placeholder-red-700::placeholder { + --tw-placeholder-opacity: 1; + color: rgb(200 30 30 / var(--tw-placeholder-opacity, 1)); +} +.placeholder-yellow-700::-moz-placeholder { + --tw-placeholder-opacity: 1; + color: rgb(142 75 16 / var(--tw-placeholder-opacity, 1)); +} +.placeholder-yellow-700::placeholder { + --tw-placeholder-opacity: 1; + color: rgb(142 75 16 / var(--tw-placeholder-opacity, 1)); +} +.opacity-0 { + opacity: 0; +} +.opacity-50 { + opacity: 0.5; +} +.mix-blend-lighten { + mix-blend-mode: lighten; +} +.shadow { + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-lg { + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-md { + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-sm { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.outline-none { + outline: 2px solid transparent; + outline-offset: 2px; +} +.outline { + outline-style: solid; +} +.ring-2 { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.ring-8 { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(8px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.ring-cyan-400 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(34 211 238 / var(--tw-ring-opacity, 1)); +} +.ring-cyan-700 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(14 116 144 / var(--tw-ring-opacity, 1)); +} +.ring-gray-300 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity, 1)); +} +.ring-gray-500 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity, 1)); +} +.ring-gray-800 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity, 1)); +} +.ring-green-500 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(14 159 110 / var(--tw-ring-opacity, 1)); +} +.ring-pink-500 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(231 70 148 / var(--tw-ring-opacity, 1)); +} +.ring-purple-500 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(144 97 249 / var(--tw-ring-opacity, 1)); +} +.ring-red-500 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(240 82 82 / var(--tw-ring-opacity, 1)); +} +.ring-white { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity, 1)); +} +.ring-yellow-300 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(250 202 21 / var(--tw-ring-opacity, 1)); +} +.drop-shadow-md { + --tw-drop-shadow: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06)); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +} +.filter { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +} +.transition { + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-\[color\2c background-color\2c border-color\2c text-decoration-color\2c fill\2c stroke\2c box-shadow\] { + transition-property: color,background-color,border-color,text-decoration-color,fill,stroke,box-shadow; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-all { + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-opacity { + transition-property: opacity; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-transform { + transition-property: transform; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.delay-0 { + transition-delay: 0s; +} +.duration-100 { + transition-duration: 100ms; +} +.duration-1000 { + transition-duration: 1000ms; +} +.duration-150 { + transition-duration: 150ms; +} +.duration-200 { + transition-duration: 200ms; +} +.duration-300 { + transition-duration: 300ms; +} +.duration-500 { + transition-duration: 500ms; +} +.duration-700 { + transition-duration: 700ms; +} +.duration-75 { + transition-duration: 75ms; +} +.ease-in { + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); +} +.ease-in-out { + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.ease-out { + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); +} +.\[overflow\:-moz-scrollbars-none\] { + overflow: -moz-scrollbars-none; +} +.\[scrollbar-width\:none\] { + scrollbar-width: none; +} +.after\:absolute::after { + content: var(--tw-content); + position: absolute; +} +.after\:left-1::after { + content: var(--tw-content); + left: 0.25rem; +} +.after\:left-px::after { + content: var(--tw-content); + left: 1px; +} +.after\:start-\[2px\]::after { + content: var(--tw-content); + inset-inline-start: 2px; +} +.after\:top-0\.5::after { + content: var(--tw-content); + top: 0.125rem; +} +.after\:top-px::after { + content: var(--tw-content); + top: 1px; +} +.after\:h-4::after { + content: var(--tw-content); + height: 1rem; +} +.after\:h-5::after { + content: var(--tw-content); + height: 1.25rem; +} +.after\:h-6::after { + content: var(--tw-content); + height: 1.5rem; +} +.after\:w-4::after { + content: var(--tw-content); + width: 1rem; +} +.after\:w-5::after { + content: var(--tw-content); + width: 1.25rem; +} +.after\:w-6::after { + content: var(--tw-content); + width: 1.5rem; +} +.after\:translate-x-full::after { + content: var(--tw-content); + --tw-translate-x: 100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.after\:rounded-full::after { + content: var(--tw-content); + border-radius: 9999px; +} +.after\:border::after { + content: var(--tw-content); + border-width: 1px; +} +.after\:border-gray-300::after { + content: var(--tw-content); + --tw-border-opacity: 1; + border-color: rgb(209 213 219 / var(--tw-border-opacity, 1)); +} +.after\:border-white::after { + content: var(--tw-content); + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity, 1)); +} +.after\:bg-white::after { + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); +} +.after\:transition-all::after { + content: var(--tw-content); + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.after\:content-\[\'\'\]::after { + --tw-content: ''; + content: var(--tw-content); +} +.first\:ml-0:first-child { + margin-left: 0px; +} +.first\:mt-0:first-child { + margin-top: 0px; +} +.first\:rounded-t-lg:first-child { + border-top-left-radius: 0.5rem; + border-top-right-radius: 0.5rem; +} +.first\:border-t-0:first-child { + border-top-width: 0px; +} +.first\:pt-0:first-child { + padding-top: 0px; +} +.last\:mr-0:last-child { + margin-right: 0px; +} +.last\:rounded-b-lg:last-child { + border-bottom-right-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; +} +.odd\:bg-white:nth-child(odd) { + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); +} +.even\:bg-gray-50:nth-child(even) { + --tw-bg-opacity: 1; + background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)); +} +.hover\:cursor-not-allowed:hover { + cursor: not-allowed; +} +.hover\:border-gray-300:hover { + --tw-border-opacity: 1; + border-color: rgb(209 213 219 / var(--tw-border-opacity, 1)); +} +.hover\:bg-blue-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(195 221 253 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-blue-800:hover { + --tw-bg-opacity: 1; + background-color: rgb(30 66 159 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-cyan-100:hover { + --tw-bg-opacity: 1; + background-color: rgb(207 250 254 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-cyan-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(165 243 252 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-cyan-600:hover { + --tw-bg-opacity: 1; + background-color: rgb(8 145 178 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-cyan-800:hover { + --tw-bg-opacity: 1; + background-color: rgb(21 94 117 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-gray-100:hover { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-gray-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-gray-50:hover { + --tw-bg-opacity: 1; + background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-gray-600:hover { + --tw-bg-opacity: 1; + background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-green-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(188 240 218 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-indigo-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(205 219 254 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-lime-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(217 249 157 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-pink-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(250 209 232 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-purple-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(220 215 254 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-red-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(251 213 213 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-teal-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(175 236 239 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-white:hover { + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-yellow-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(252 233 106 / var(--tw-bg-opacity, 1)); +} +.hover\:bg-gradient-to-br:hover { + background-image: linear-gradient(to bottom right, var(--tw-gradient-stops)); +} +.hover\:text-cyan-700:hover { + --tw-text-opacity: 1; + color: rgb(14 116 144 / var(--tw-text-opacity, 1)); +} +.hover\:text-gray-600:hover { + --tw-text-opacity: 1; + color: rgb(75 85 99 / var(--tw-text-opacity, 1)); +} +.hover\:text-gray-700:hover { + --tw-text-opacity: 1; + color: rgb(55 65 81 / var(--tw-text-opacity, 1)); +} +.hover\:text-gray-900:hover { + --tw-text-opacity: 1; + color: rgb(17 24 39 / var(--tw-text-opacity, 1)); +} +.hover\:underline:hover { + text-decoration-line: underline; +} +.focus\:z-10:focus { + z-index: 10; +} +.focus\:border-blue-500:focus { + --tw-border-opacity: 1; + border-color: rgb(63 131 248 / var(--tw-border-opacity, 1)); +} +.focus\:border-blue-600:focus { + --tw-border-opacity: 1; + border-color: rgb(28 100 242 / var(--tw-border-opacity, 1)); +} +.focus\:border-cyan-500:focus { + --tw-border-opacity: 1; + border-color: rgb(6 182 212 / var(--tw-border-opacity, 1)); +} +.focus\:border-green-500:focus { + --tw-border-opacity: 1; + border-color: rgb(14 159 110 / var(--tw-border-opacity, 1)); +} +.focus\:border-green-600:focus { + --tw-border-opacity: 1; + border-color: rgb(5 122 85 / var(--tw-border-opacity, 1)); +} +.focus\:border-red-500:focus { + --tw-border-opacity: 1; + border-color: rgb(240 82 82 / var(--tw-border-opacity, 1)); +} +.focus\:border-red-600:focus { + --tw-border-opacity: 1; + border-color: rgb(224 36 36 / var(--tw-border-opacity, 1)); +} +.focus\:border-yellow-500:focus { + --tw-border-opacity: 1; + border-color: rgb(194 120 3 / var(--tw-border-opacity, 1)); +} +.focus\:bg-gray-100:focus { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); +} +.focus\:text-cyan-700:focus { + --tw-text-opacity: 1; + color: rgb(14 116 144 / var(--tw-text-opacity, 1)); +} +.focus\:text-gray-900:focus { + --tw-text-opacity: 1; + color: rgb(17 24 39 / var(--tw-text-opacity, 1)); +} +.focus\:outline-none:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} +.focus\:ring-0:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.focus\:ring-2:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.focus\:ring-4:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.focus\:ring-blue-300:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(164 202 254 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-blue-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(118 169 250 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-blue-500:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(63 131 248 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-blue-600:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(28 100 242 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-cyan-300:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(103 232 249 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-cyan-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(34 211 238 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-cyan-500:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(6 182 212 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-cyan-600:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(8 145 178 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-cyan-700:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(14 116 144 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-cyan-800:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(21 94 117 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-gray-200:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(229 231 235 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-gray-300:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-gray-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(156 163 175 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-gray-800:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-gray-900:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(17 24 39 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-green-200:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(188 240 218 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-green-300:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(132 225 188 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-green-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(49 196 141 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-green-500:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(14 159 110 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-green-600:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(5 122 85 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-green-800:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(3 84 63 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-indigo-300:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(180 198 252 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-indigo-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(141 162 251 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-indigo-700:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(81 69 205 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-lime-200:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(217 249 157 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-lime-300:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(190 242 100 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-lime-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(163 230 53 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-lime-700:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(77 124 15 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-pink-200:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(250 209 232 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-pink-300:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(248 180 217 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-pink-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(241 126 184 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-pink-600:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(214 31 105 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-purple-200:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(220 215 254 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-purple-300:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(202 191 253 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-purple-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(172 148 250 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-purple-600:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(126 58 242 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-red-100:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(253 232 232 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-red-300:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(248 180 180 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-red-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(249 128 128 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-red-500:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(240 82 82 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-red-600:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(224 36 36 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-red-900:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(119 29 29 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-teal-300:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(126 220 226 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-teal-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(22 189 202 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-teal-600:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(4 116 129 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-yellow-300:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(250 202 21 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-yellow-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(227 160 8 / var(--tw-ring-opacity, 1)); +} +.focus\:ring-yellow-500:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(194 120 3 / var(--tw-ring-opacity, 1)); +} +.enabled\:hover\:bg-blue-800:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(30 66 159 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-cyan-100:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(207 250 254 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-cyan-800:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(21 94 117 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-gray-100:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-gray-900:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-green-100:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(222 247 236 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-green-800:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(3 84 63 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-indigo-100:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(229 237 255 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-lime-100:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(236 252 203 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-pink-100:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(252 232 243 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-purple-800:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(85 33 181 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-red-100:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(253 232 232 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-red-800:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(155 28 28 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-teal-100:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(213 245 246 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-yellow-100:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(253 246 178 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-yellow-500:hover:enabled { + --tw-bg-opacity: 1; + background-color: rgb(194 120 3 / var(--tw-bg-opacity, 1)); +} +.enabled\:hover\:bg-gradient-to-bl:hover:enabled { + background-image: linear-gradient(to bottom left, var(--tw-gradient-stops)); +} +.enabled\:hover\:bg-gradient-to-br:hover:enabled { + background-image: linear-gradient(to bottom right, var(--tw-gradient-stops)); +} +.enabled\:hover\:bg-gradient-to-l:hover:enabled { + background-image: linear-gradient(to left, var(--tw-gradient-stops)); +} +.enabled\:hover\:from-teal-200:hover:enabled { + --tw-gradient-from: #AFECEF var(--tw-gradient-from-position); + --tw-gradient-to: rgb(175 236 239 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} +.enabled\:hover\:to-lime-200:hover:enabled { + --tw-gradient-to: #d9f99d var(--tw-gradient-to-position); +} +.enabled\:hover\:text-cyan-700:hover:enabled { + --tw-text-opacity: 1; + color: rgb(14 116 144 / var(--tw-text-opacity, 1)); +} +.enabled\:hover\:text-gray-700:hover:enabled { + --tw-text-opacity: 1; + color: rgb(55 65 81 / var(--tw-text-opacity, 1)); +} +.enabled\:hover\:text-gray-900:hover:enabled { + --tw-text-opacity: 1; + color: rgb(17 24 39 / var(--tw-text-opacity, 1)); +} +.disabled\:cursor-not-allowed:disabled { + cursor: not-allowed; +} +.disabled\:text-gray-400:disabled { + --tw-text-opacity: 1; + color: rgb(156 163 175 / var(--tw-text-opacity, 1)); +} +.disabled\:opacity-50:disabled { + opacity: 0.5; +} +.group:first-child .group-first\:hidden { + display: none; +} +.group\/body:first-child .group\/row:first-child .group-first\/body\:group-first\/row\:first\:rounded-tl-lg:first-child { + border-top-left-radius: 0.5rem; +} +.group\/head:first-child .group-first\/head\:first\:rounded-tl-lg:first-child { + border-top-left-radius: 0.5rem; +} +.group\/body:first-child .group\/row:first-child .group-first\/body\:group-first\/row\:last\:rounded-tr-lg:last-child { + border-top-right-radius: 0.5rem; +} +.group\/head:first-child .group-first\/head\:last\:rounded-tr-lg:last-child { + border-top-right-radius: 0.5rem; +} +.group\/body:last-child .group\/row:last-child .group-last\/body\:group-last\/row\:first\:rounded-bl-lg:first-child { + border-bottom-left-radius: 0.5rem; +} +.group\/body:last-child .group\/row:last-child .group-last\/body\:group-last\/row\:last\:rounded-br-lg:last-child { + border-bottom-right-radius: 0.5rem; +} +.group:hover .group-hover\:bg-blue-200 { + --tw-bg-opacity: 1; + background-color: rgb(195 221 253 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-cyan-200 { + --tw-bg-opacity: 1; + background-color: rgb(165 243 252 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-gray-200 { + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-gray-300 { + --tw-bg-opacity: 1; + background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-gray-500 { + --tw-bg-opacity: 1; + background-color: rgb(107 114 128 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-green-200 { + --tw-bg-opacity: 1; + background-color: rgb(188 240 218 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-indigo-200 { + --tw-bg-opacity: 1; + background-color: rgb(205 219 254 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-lime-200 { + --tw-bg-opacity: 1; + background-color: rgb(217 249 157 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-pink-200 { + --tw-bg-opacity: 1; + background-color: rgb(250 209 232 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-purple-200 { + --tw-bg-opacity: 1; + background-color: rgb(220 215 254 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-red-200 { + --tw-bg-opacity: 1; + background-color: rgb(251 213 213 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-teal-200 { + --tw-bg-opacity: 1; + background-color: rgb(175 236 239 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:bg-white\/50 { + background-color: rgb(255 255 255 / 0.5); +} +.group:hover .group-hover\:bg-yellow-200 { + --tw-bg-opacity: 1; + background-color: rgb(252 233 106 / var(--tw-bg-opacity, 1)); +} +.group:hover .group-hover\:text-gray-900 { + --tw-text-opacity: 1; + color: rgb(17 24 39 / var(--tw-text-opacity, 1)); +} +.group:focus .group-focus\:outline-none { + outline: 2px solid transparent; + outline-offset: 2px; +} +.group:focus .group-focus\:ring-4 { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.group:focus .group-focus\:ring-cyan-500\/25 { + --tw-ring-color: rgb(6 182 212 / 0.25); +} +.group:focus .group-focus\:ring-white { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity, 1)); +} +.group:enabled:hover .group-enabled\:group-hover\:bg-opacity-0 { + --tw-bg-opacity: 0; +} +.group:enabled:hover .group-enabled\:group-hover\:text-inherit { + color: inherit; +} +.peer:checked ~ .peer-checked\:bg-blue-600 { + --tw-bg-opacity: 1; + background-color: rgb(28 100 242 / var(--tw-bg-opacity, 1)); +} +.peer:checked ~ .peer-checked\:after\:translate-x-full::after { + content: var(--tw-content); + --tw-translate-x: 100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.peer:checked ~ .peer-checked\:after\:border-white::after { + content: var(--tw-content); + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity, 1)); +} +.peer:-moz-placeholder-shown ~ .peer-placeholder-shown\:top-1\/2 { + top: 50%; +} +.peer:placeholder-shown ~ .peer-placeholder-shown\:top-1\/2 { + top: 50%; +} +.peer:-moz-placeholder-shown ~ .peer-placeholder-shown\:-translate-y-1\/2 { + --tw-translate-y: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.peer:placeholder-shown ~ .peer-placeholder-shown\:-translate-y-1\/2 { + --tw-translate-y: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.peer:-moz-placeholder-shown ~ .peer-placeholder-shown\:translate-y-0 { + --tw-translate-y: 0px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.peer:placeholder-shown ~ .peer-placeholder-shown\:translate-y-0 { + --tw-translate-y: 0px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.peer:-moz-placeholder-shown ~ .peer-placeholder-shown\:scale-100 { + --tw-scale-x: 1; + --tw-scale-y: 1; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.peer:placeholder-shown ~ .peer-placeholder-shown\:scale-100 { + --tw-scale-x: 1; + --tw-scale-y: 1; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.peer:focus ~ .peer-focus\:left-0 { + left: 0px; +} +.peer:focus ~ .peer-focus\:top-2 { + top: 0.5rem; +} +.peer:focus ~ .peer-focus\:-translate-y-4 { + --tw-translate-y: -1rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.peer:focus ~ .peer-focus\:-translate-y-6 { + --tw-translate-y: -1.5rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.peer:focus ~ .peer-focus\:scale-75 { + --tw-scale-x: .75; + --tw-scale-y: .75; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.peer:focus ~ .peer-focus\:px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.peer:focus ~ .peer-focus\:text-blue-600 { + --tw-text-opacity: 1; + color: rgb(28 100 242 / var(--tw-text-opacity, 1)); +} +.peer:focus ~ .peer-focus\:ring-4 { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.peer:focus ~ .peer-focus\:ring-blue-300 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(164 202 254 / var(--tw-ring-opacity, 1)); +} +.dark\:block:is(.dark *) { + display: block; +} +.dark\:hidden:is(.dark *) { + display: none; +} +.dark\:divide-gray-700:is(.dark *) > :not([hidden]) ~ :not([hidden]) { + --tw-divide-opacity: 1; + border-color: rgb(55 65 81 / var(--tw-divide-opacity, 1)); +} +.dark\:border-none:is(.dark *) { + border-style: none; +} +.dark\:border-cyan-400:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(34 211 238 / var(--tw-border-opacity, 1)); +} +.dark\:border-cyan-500:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(6 182 212 / var(--tw-border-opacity, 1)); +} +.dark\:border-cyan-600:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(8 145 178 / var(--tw-border-opacity, 1)); +} +.dark\:border-gray-500:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(107 114 128 / var(--tw-border-opacity, 1)); +} +.dark\:border-gray-600:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(75 85 99 / var(--tw-border-opacity, 1)); +} +.dark\:border-gray-700:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(55 65 81 / var(--tw-border-opacity, 1)); +} +.dark\:border-gray-800:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(31 41 55 / var(--tw-border-opacity, 1)); +} +.dark\:border-gray-900:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(17 24 39 / var(--tw-border-opacity, 1)); +} +.dark\:border-green-400:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(49 196 141 / var(--tw-border-opacity, 1)); +} +.dark\:border-green-500:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(14 159 110 / var(--tw-border-opacity, 1)); +} +.dark\:border-green-600:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(5 122 85 / var(--tw-border-opacity, 1)); +} +.dark\:border-indigo-600:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(88 80 236 / var(--tw-border-opacity, 1)); +} +.dark\:border-lime-600:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(101 163 13 / var(--tw-border-opacity, 1)); +} +.dark\:border-pink-600:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(214 31 105 / var(--tw-border-opacity, 1)); +} +.dark\:border-red-400:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(249 128 128 / var(--tw-border-opacity, 1)); +} +.dark\:border-red-500:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(240 82 82 / var(--tw-border-opacity, 1)); +} +.dark\:border-red-600:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(224 36 36 / var(--tw-border-opacity, 1)); +} +.dark\:border-teal-600:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(4 116 129 / var(--tw-border-opacity, 1)); +} +.dark\:border-white:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity, 1)); +} +.dark\:border-yellow-400:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(227 160 8 / var(--tw-border-opacity, 1)); +} +.dark\:border-yellow-600:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(159 88 10 / var(--tw-border-opacity, 1)); +} +.dark\:\!bg-gray-700:is(.dark *) { + --tw-bg-opacity: 1 !important; + background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1)) !important; +} +.dark\:bg-black:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-blue-200:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(195 221 253 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-blue-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(28 100 242 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-cyan-100:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(207 250 254 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-cyan-200:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(165 243 252 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-cyan-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(8 145 178 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-cyan-900:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(22 78 99 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-gray-200:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-gray-300:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-gray-400:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-gray-500:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(107 114 128 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-gray-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-gray-700:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-gray-800:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-gray-800\/30:is(.dark *) { + background-color: rgb(31 41 55 / 0.3); +} +.dark\:bg-gray-800\/50:is(.dark *) { + background-color: rgb(31 41 55 / 0.5); +} +.dark\:bg-gray-900:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-gray-900\/80:is(.dark *) { + background-color: rgb(17 24 39 / 0.8); +} +.dark\:bg-green-100:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(222 247 236 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-green-200:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(188 240 218 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-green-500:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(14 159 110 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-green-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(5 122 85 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-green-900:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(1 71 55 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-indigo-200:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(205 219 254 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-indigo-500:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(104 117 245 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-indigo-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(88 80 236 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-lime-200:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(217 249 157 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-lime-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(101 163 13 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-pink-200:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(250 209 232 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-pink-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(214 31 105 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-purple-200:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(220 215 254 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-purple-500:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(144 97 249 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-purple-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(126 58 242 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-purple-900:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(74 29 150 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-red-100:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(253 232 232 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-red-200:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(251 213 213 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-red-500:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(240 82 82 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-red-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(224 36 36 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-red-900:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(119 29 29 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-teal-200:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(175 236 239 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-teal-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(4 116 129 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-transparent:is(.dark *) { + background-color: transparent; +} +.dark\:bg-yellow-100:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(253 246 178 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-yellow-200:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(252 233 106 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-yellow-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(159 88 10 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-yellow-900:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(99 49 18 / var(--tw-bg-opacity, 1)); +} +.dark\:bg-opacity-80:is(.dark *) { + --tw-bg-opacity: 0.8; +} +.dark\:fill-gray-300:is(.dark *) { + fill: #D1D5DB; +} +.dark\:text-blue-500:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(63 131 248 / var(--tw-text-opacity, 1)); +} +.dark\:text-blue-600:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(28 100 242 / var(--tw-text-opacity, 1)); +} +.dark\:text-blue-800:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(30 66 159 / var(--tw-text-opacity, 1)); +} +.dark\:text-blue-900:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(35 56 118 / var(--tw-text-opacity, 1)); +} +.dark\:text-cyan-100:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(207 250 254 / var(--tw-text-opacity, 1)); +} +.dark\:text-cyan-300:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(103 232 249 / var(--tw-text-opacity, 1)); +} +.dark\:text-cyan-500:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(6 182 212 / var(--tw-text-opacity, 1)); +} +.dark\:text-cyan-600:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(8 145 178 / var(--tw-text-opacity, 1)); +} +.dark\:text-cyan-800:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(21 94 117 / var(--tw-text-opacity, 1)); +} +.dark\:text-cyan-900:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(22 78 99 / var(--tw-text-opacity, 1)); +} +.dark\:text-gray-100:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(243 244 246 / var(--tw-text-opacity, 1)); +} +.dark\:text-gray-200:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(229 231 235 / var(--tw-text-opacity, 1)); +} +.dark\:text-gray-300:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity, 1)); +} +.dark\:text-gray-400:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(156 163 175 / var(--tw-text-opacity, 1)); +} +.dark\:text-gray-500:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(107 114 128 / var(--tw-text-opacity, 1)); +} +.dark\:text-gray-600:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(75 85 99 / var(--tw-text-opacity, 1)); +} +.dark\:text-gray-800:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(31 41 55 / var(--tw-text-opacity, 1)); +} +.dark\:text-gray-900:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(17 24 39 / var(--tw-text-opacity, 1)); +} +.dark\:text-green-400:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(49 196 141 / var(--tw-text-opacity, 1)); +} +.dark\:text-green-500:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(14 159 110 / var(--tw-text-opacity, 1)); +} +.dark\:text-green-600:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(5 122 85 / var(--tw-text-opacity, 1)); +} +.dark\:text-green-800:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(3 84 63 / var(--tw-text-opacity, 1)); +} +.dark\:text-green-900:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(1 71 55 / var(--tw-text-opacity, 1)); +} +.dark\:text-indigo-600:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(88 80 236 / var(--tw-text-opacity, 1)); +} +.dark\:text-indigo-800:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(66 56 157 / var(--tw-text-opacity, 1)); +} +.dark\:text-indigo-900:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(54 47 120 / var(--tw-text-opacity, 1)); +} +.dark\:text-lime-600:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(101 163 13 / var(--tw-text-opacity, 1)); +} +.dark\:text-lime-800:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(63 98 18 / var(--tw-text-opacity, 1)); +} +.dark\:text-lime-900:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(54 83 20 / var(--tw-text-opacity, 1)); +} +.dark\:text-pink-600:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(214 31 105 / var(--tw-text-opacity, 1)); +} +.dark\:text-pink-800:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(153 21 75 / var(--tw-text-opacity, 1)); +} +.dark\:text-pink-900:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(117 26 61 / var(--tw-text-opacity, 1)); +} +.dark\:text-purple-600:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(126 58 242 / var(--tw-text-opacity, 1)); +} +.dark\:text-purple-800:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(85 33 181 / var(--tw-text-opacity, 1)); +} +.dark\:text-purple-900:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(74 29 150 / var(--tw-text-opacity, 1)); +} +.dark\:text-red-400:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(249 128 128 / var(--tw-text-opacity, 1)); +} +.dark\:text-red-500:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(240 82 82 / var(--tw-text-opacity, 1)); +} +.dark\:text-red-600:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(224 36 36 / var(--tw-text-opacity, 1)); +} +.dark\:text-red-800:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(155 28 28 / var(--tw-text-opacity, 1)); +} +.dark\:text-red-900:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(119 29 29 / var(--tw-text-opacity, 1)); +} +.dark\:text-teal-600:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(4 116 129 / var(--tw-text-opacity, 1)); +} +.dark\:text-teal-800:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(5 80 92 / var(--tw-text-opacity, 1)); +} +.dark\:text-teal-900:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(1 68 81 / var(--tw-text-opacity, 1)); +} +.dark\:text-white:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); +} +.dark\:text-yellow-600:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(159 88 10 / var(--tw-text-opacity, 1)); +} +.dark\:text-yellow-800:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(114 59 19 / var(--tw-text-opacity, 1)); +} +.dark\:text-yellow-900:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(99 49 18 / var(--tw-text-opacity, 1)); +} +.dark\:placeholder-gray-400:is(.dark *)::-moz-placeholder { + --tw-placeholder-opacity: 1; + color: rgb(156 163 175 / var(--tw-placeholder-opacity, 1)); +} +.dark\:placeholder-gray-400:is(.dark *)::placeholder { + --tw-placeholder-opacity: 1; + color: rgb(156 163 175 / var(--tw-placeholder-opacity, 1)); +} +.dark\:mix-blend-color:is(.dark *) { + mix-blend-mode: color; +} +.dark\:shadow-sm-light:is(.dark *) { + --tw-shadow: 0 2px 5px 0px rgba(255, 255, 255, 0.08); + --tw-shadow-colored: 0 2px 5px 0px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.dark\:ring-cyan-800:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(21 94 117 / var(--tw-ring-opacity, 1)); +} +.dark\:ring-gray-400:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(156 163 175 / var(--tw-ring-opacity, 1)); +} +.dark\:ring-gray-500:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity, 1)); +} +.dark\:ring-gray-800:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity, 1)); +} +.dark\:ring-gray-900:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(17 24 39 / var(--tw-ring-opacity, 1)); +} +.dark\:ring-green-500:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(14 159 110 / var(--tw-ring-opacity, 1)); +} +.dark\:ring-pink-500:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(231 70 148 / var(--tw-ring-opacity, 1)); +} +.dark\:ring-purple-600:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(126 58 242 / var(--tw-ring-opacity, 1)); +} +.dark\:ring-red-700:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(200 30 30 / var(--tw-ring-opacity, 1)); +} +.dark\:ring-yellow-500:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(194 120 3 / var(--tw-ring-opacity, 1)); +} +.dark\:ring-offset-blue-700:is(.dark *) { + --tw-ring-offset-color: #1A56DB; +} +.dark\:ring-offset-cyan-600:is(.dark *) { + --tw-ring-offset-color: #0891b2; +} +.dark\:ring-offset-gray-800:is(.dark *) { + --tw-ring-offset-color: #1F2937; +} +.dark\:ring-offset-gray-900:is(.dark *) { + --tw-ring-offset-color: #111827; +} +.dark\:ring-offset-green-600:is(.dark *) { + --tw-ring-offset-color: #057A55; +} +.dark\:ring-offset-green-800:is(.dark *) { + --tw-ring-offset-color: #03543F; +} +.dark\:ring-offset-indigo-700:is(.dark *) { + --tw-ring-offset-color: #5145CD; +} +.dark\:ring-offset-lime-700:is(.dark *) { + --tw-ring-offset-color: #4d7c0f; +} +.dark\:ring-offset-pink-600:is(.dark *) { + --tw-ring-offset-color: #D61F69; +} +.dark\:ring-offset-purple-600:is(.dark *) { + --tw-ring-offset-color: #7E3AF2; +} +.dark\:ring-offset-red-600:is(.dark *) { + --tw-ring-offset-color: #E02424; +} +.dark\:ring-offset-red-900:is(.dark *) { + --tw-ring-offset-color: #771D1D; +} +.dark\:ring-offset-teal-600:is(.dark *) { + --tw-ring-offset-color: #047481; +} +.dark\:ring-offset-yellow-400:is(.dark *) { + --tw-ring-offset-color: #E3A008; +} +.odd\:dark\:bg-gray-800:is(.dark *):nth-child(odd) { + --tw-bg-opacity: 1; + background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1)); +} +.even\:dark\:bg-gray-700:is(.dark *):nth-child(even) { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-blue-300:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(164 202 254 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-blue-700:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(26 86 219 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-cyan-300:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(103 232 249 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-cyan-700:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(14 116 144 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-gray-300:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-gray-600:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-gray-700:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-gray-800:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-green-300:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(132 225 188 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-indigo-300:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(180 198 252 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-lime-300:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(190 242 100 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-pink-300:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(248 180 217 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-purple-300:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(202 191 253 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-red-300:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(248 180 180 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-teal-300:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(126 220 226 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:bg-yellow-300:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(250 202 21 / var(--tw-bg-opacity, 1)); +} +.dark\:hover\:text-gray-300:hover:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity, 1)); +} +.dark\:hover\:text-white:hover:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); +} +.dark\:focus\:border-blue-500:focus:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(63 131 248 / var(--tw-border-opacity, 1)); +} +.dark\:focus\:border-cyan-500:focus:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(6 182 212 / var(--tw-border-opacity, 1)); +} +.dark\:focus\:border-green-500:focus:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(14 159 110 / var(--tw-border-opacity, 1)); +} +.dark\:focus\:border-red-500:focus:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(240 82 82 / var(--tw-border-opacity, 1)); +} +.dark\:focus\:border-yellow-500:focus:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(194 120 3 / var(--tw-border-opacity, 1)); +} +.dark\:focus\:bg-cyan-600:focus:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(8 145 178 / var(--tw-bg-opacity, 1)); +} +.dark\:focus\:bg-gray-600:focus:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1)); +} +.dark\:focus\:text-white:focus:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); +} +.dark\:focus\:ring-blue-500:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(63 131 248 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-blue-700:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(26 86 219 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-blue-800:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(30 66 159 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-cyan-500:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(6 182 212 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-cyan-600:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(8 145 178 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-cyan-700:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(14 116 144 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-cyan-800:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(21 94 117 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-gray-500:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-gray-600:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(75 85 99 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-gray-700:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(55 65 81 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-gray-800:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-gray-900:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(17 24 39 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-green-500:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(14 159 110 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-green-600:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(5 122 85 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-green-700:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(4 108 78 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-green-800:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(3 84 63 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-indigo-700:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(81 69 205 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-lime-700:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(77 124 15 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-lime-800:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(63 98 18 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-pink-600:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(214 31 105 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-pink-700:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(191 18 93 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-pink-800:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(153 21 75 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-purple-600:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(126 58 242 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-purple-800:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(85 33 181 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-purple-900:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(74 29 150 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-red-400:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(249 128 128 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-red-500:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(240 82 82 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-red-600:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(224 36 36 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-red-700:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(200 30 30 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-red-800:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(155 28 28 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-red-900:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(119 29 29 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-teal-600:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(4 116 129 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-teal-700:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(3 102 114 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-teal-800:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(5 80 92 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-yellow-400:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(227 160 8 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-yellow-500:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(194 120 3 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-yellow-700:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(142 75 16 / var(--tw-ring-opacity, 1)); +} +.dark\:focus\:ring-yellow-900:focus:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(99 49 18 / var(--tw-ring-opacity, 1)); +} +.dark\:enabled\:hover\:border-cyan-700:hover:enabled:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(14 116 144 / var(--tw-border-opacity, 1)); +} +.dark\:enabled\:hover\:border-gray-700:hover:enabled:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(55 65 81 / var(--tw-border-opacity, 1)); +} +.dark\:enabled\:hover\:border-green-700:hover:enabled:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(4 108 78 / var(--tw-border-opacity, 1)); +} +.dark\:enabled\:hover\:border-indigo-700:hover:enabled:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(81 69 205 / var(--tw-border-opacity, 1)); +} +.dark\:enabled\:hover\:border-lime-700:hover:enabled:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(77 124 15 / var(--tw-border-opacity, 1)); +} +.dark\:enabled\:hover\:border-pink-700:hover:enabled:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(191 18 93 / var(--tw-border-opacity, 1)); +} +.dark\:enabled\:hover\:border-red-700:hover:enabled:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(200 30 30 / var(--tw-border-opacity, 1)); +} +.dark\:enabled\:hover\:border-teal-700:hover:enabled:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(3 102 114 / var(--tw-border-opacity, 1)); +} +.dark\:enabled\:hover\:border-yellow-700:hover:enabled:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(142 75 16 / var(--tw-border-opacity, 1)); +} +.dark\:enabled\:hover\:bg-cyan-700:hover:enabled:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(14 116 144 / var(--tw-bg-opacity, 1)); +} +.dark\:enabled\:hover\:bg-gray-700:hover:enabled:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1)); +} +.dark\:enabled\:hover\:bg-green-700:hover:enabled:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(4 108 78 / var(--tw-bg-opacity, 1)); +} +.dark\:enabled\:hover\:bg-indigo-700:hover:enabled:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(81 69 205 / var(--tw-bg-opacity, 1)); +} +.dark\:enabled\:hover\:bg-lime-700:hover:enabled:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(77 124 15 / var(--tw-bg-opacity, 1)); +} +.dark\:enabled\:hover\:bg-pink-700:hover:enabled:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(191 18 93 / var(--tw-bg-opacity, 1)); +} +.dark\:enabled\:hover\:bg-purple-700:hover:enabled:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(108 43 217 / var(--tw-bg-opacity, 1)); +} +.dark\:enabled\:hover\:bg-red-700:hover:enabled:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(200 30 30 / var(--tw-bg-opacity, 1)); +} +.dark\:enabled\:hover\:bg-teal-700:hover:enabled:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(3 102 114 / var(--tw-bg-opacity, 1)); +} +.dark\:enabled\:hover\:bg-yellow-700:hover:enabled:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(142 75 16 / var(--tw-bg-opacity, 1)); +} +.enabled\:dark\:hover\:bg-gray-700:hover:is(.dark *):enabled { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1)); +} +.dark\:enabled\:hover\:text-white:hover:enabled:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); +} +.enabled\:dark\:hover\:text-white:hover:is(.dark *):enabled { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); +} +.disabled\:dark\:text-gray-500:is(.dark *):disabled { + --tw-text-opacity: 1; + color: rgb(107 114 128 / var(--tw-text-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-blue-300:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(164 202 254 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-cyan-300:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(103 232 249 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-gray-500:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(107 114 128 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-gray-600:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-gray-700:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-gray-800\/60:is(.dark *) { + background-color: rgb(31 41 55 / 0.6); +} +.group:hover .dark\:group-hover\:bg-green-300:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(132 225 188 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-indigo-300:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(180 198 252 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-lime-300:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(190 242 100 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-pink-300:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(248 180 217 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-purple-300:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(202 191 253 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-red-300:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(248 180 180 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-teal-300:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(126 220 226 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:bg-yellow-300:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(250 202 21 / var(--tw-bg-opacity, 1)); +} +.group:hover .dark\:group-hover\:text-white:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); +} +.group:focus .dark\:group-focus\:ring-gray-800\/70:is(.dark *) { + --tw-ring-color: rgb(31 41 55 / 0.7); +} +.peer:focus ~ .peer-focus\:dark\:text-blue-500:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(63 131 248 / var(--tw-text-opacity, 1)); +} +.peer:focus ~ .dark\:peer-focus\:ring-blue-800:is(.dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(30 66 159 / var(--tw-ring-opacity, 1)); +} +@media (min-width: 640px) { + + .sm\:mx-auto { + margin-left: auto; + margin-right: auto; + } + + .sm\:mb-0 { + margin-bottom: 0px; + } + + .sm\:flex { + display: flex; + } + + .sm\:h-10 { + height: 2.5rem; + } + + .sm\:h-6 { + height: 1.5rem; + } + + .sm\:h-7 { + height: 1.75rem; + } + + .sm\:w-10 { + width: 2.5rem; + } + + .sm\:w-6 { + width: 1.5rem; + } + + .sm\:w-auto { + width: auto; + } + + .sm\:px-4 { + padding-left: 1rem; + padding-right: 1rem; + } + + .sm\:pr-8 { + padding-right: 2rem; + } + + .sm\:text-center { + text-align: center; + } + + .sm\:text-base { + font-size: 1rem; + line-height: 1.5rem; + } + + .sm\:text-xs { + font-size: 0.75rem; + line-height: 1rem; + } +} +@media (min-width: 768px) { + + .md\:inset-0 { + inset: 0px; + } + + .md\:mx-2 { + margin-left: 0.5rem; + margin-right: 0.5rem; + } + + .md\:my-10 { + margin-top: 2.5rem; + margin-bottom: 2.5rem; + } + + .md\:my-12 { + margin-top: 3rem; + margin-bottom: 3rem; + } + + .md\:mr-6 { + margin-right: 1.5rem; + } + + .md\:mt-0 { + margin-top: 0px; + } + + .md\:block { + display: block; + } + + .md\:flex { + display: flex; + } + + .md\:hidden { + display: none; + } + + .md\:h-auto { + height: auto; + } + + .md\:h-full { + height: 100%; + } + + .md\:w-48 { + width: 12rem; + } + + .md\:w-auto { + width: auto; + } + + .md\:max-w-xl { + max-width: 36rem; + } + + .md\:flex-row { + flex-direction: row; + } + + .md\:items-center { + align-items: center; + } + + .md\:justify-between { + justify-content: space-between; + } + + .md\:space-x-8 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(2rem * var(--tw-space-x-reverse)); + margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse))); + } + + .md\:rounded-none { + border-radius: 0px; + } + + .md\:rounded-l-lg { + border-top-left-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; + } + + .md\:border-0 { + border-width: 0px; + } + + .md\:bg-transparent { + background-color: transparent; + } + + .md\:p-0 { + padding: 0px; + } + + .md\:text-sm { + font-size: 0.875rem; + line-height: 1.25rem; + } + + .md\:font-medium { + font-weight: 500; + } + + .md\:text-cyan-700 { + --tw-text-opacity: 1; + color: rgb(14 116 144 / var(--tw-text-opacity, 1)); + } + + .md\:hover\:bg-transparent:hover { + background-color: transparent; + } + + .md\:hover\:text-cyan-700:hover { + --tw-text-opacity: 1; + color: rgb(14 116 144 / var(--tw-text-opacity, 1)); + } + + .md\:dark\:hover\:bg-transparent:hover:is(.dark *) { + background-color: transparent; + } + + .md\:dark\:hover\:text-white:hover:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); + } +} +@media (min-width: 1024px) { + + .lg\:my-8 { + margin-top: 2rem; + margin-bottom: 2rem; + } +} +.rtl\:after\:right-1:where([dir="rtl"], [dir="rtl"] *)::after { + content: var(--tw-content); + right: 0.25rem; +} +.rtl\:after\:right-px:where([dir="rtl"], [dir="rtl"] *)::after { + content: var(--tw-content); + right: 1px; +} +.rtl\:after\:-translate-x-full:where([dir="rtl"], [dir="rtl"] *)::after { + content: var(--tw-content); + --tw-translate-x: -100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.peer:checked ~ .rtl\:peer-checked\:after\:-translate-x-full:where([dir="rtl"], [dir="rtl"] *)::after { + content: var(--tw-content); + --tw-translate-x: -100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.\[\&\:\:-webkit-scrollbar\]\:\!hidden::-webkit-scrollbar { + display: none !important; +} +.\[\&\:\:-webkit-scrollbar\]\:\!h-0::-webkit-scrollbar { + height: 0px !important; +} +.\[\&\:\:-webkit-scrollbar\]\:\!w-0::-webkit-scrollbar { + width: 0px !important; +} +.\[\&\:\:-webkit-scrollbar\]\:\!bg-transparent::-webkit-scrollbar { + background-color: transparent !important; +} +.\[\&\>\*\]\:pointer-events-none>* { + pointer-events: none; +} +.\[\&\>\*\]\:cursor-grab>* { + cursor: grab; +} +.\[\&\>\*\]\:first\:rounded-t-lg:first-child>* { + border-top-left-radius: 0.5rem; + border-top-right-radius: 0.5rem; +} +.\[\&\>\*\]\:last\:rounded-b-lg:last-child>* { + border-bottom-right-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; +} +.\[\&\>\*\]\:last\:border-b-0:last-child>* { + border-bottom-width: 0px; +} +.\[\&_\*\]\:cursor-pointer * { + cursor: pointer; +} + + diff --git a/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.js b/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.js index 2414a3bec..b8935d589 100644 --- a/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.js +++ b/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.js @@ -1,6 +1,52 @@ +var __create = Object.create; var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name); +var __typeError = (msg) => { + throw TypeError(msg); +}; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)]; +var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"]; +var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn; +var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) }); +var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]); +var __runInitializers = (array, flags, self2, value) => { + for (var i2 = 0, fns = array[flags >> 1], n2 = fns && fns.length; i2 < n2; i2++) flags & 1 ? fns[i2].call(self2) : value = fns[i2].call(self2, value); + return value; +}; +var __decorateElement = (array, flags, name, decorators, target, extra) => { + var fn, it2, done, ctx, access, k2 = flags & 7, s2 = !!(flags & 8), p2 = !!(flags & 16); + var j2 = k2 > 3 ? array.length + 1 : k2 ? s2 ? 1 : 2 : 0, key = __decoratorStrings[k2 + 5]; + var initializers = k2 > 3 && (array[j2 - 1] = []), extraInitializers = array[j2] || (array[j2] = []); + var desc = k2 && (!p2 && !s2 && (target = target.prototype), k2 < 5 && (k2 > 3 || !p2) && __getOwnPropDesc(k2 < 4 ? target : { get [name]() { + return __privateGet(this, extra); + }, set [name](x2) { + return __privateSet(this, extra, x2); + } }, name)); + k2 ? p2 && k2 < 4 && __name(extra, (k2 > 2 ? "set " : k2 > 1 ? "get " : "") + name) : __name(target, name); + for (var i2 = decorators.length - 1; i2 >= 0; i2--) { + ctx = __decoratorContext(k2, name, done = {}, array[3], extraInitializers); + if (k2) { + ctx.static = s2, ctx.private = p2, access = ctx.access = { has: p2 ? (x2) => __privateIn(target, x2) : (x2) => name in x2 }; + if (k2 ^ 3) access.get = p2 ? (x2) => (k2 ^ 1 ? __privateGet : __privateMethod)(x2, target, k2 ^ 4 ? extra : desc.get) : (x2) => x2[name]; + if (k2 > 2) access.set = p2 ? (x2, y2) => __privateSet(x2, target, y2, k2 ^ 4 ? extra : desc.set) : (x2, y2) => x2[name] = y2; + } + it2 = (0, decorators[i2])(k2 ? k2 < 4 ? p2 ? extra : desc[key] : k2 > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1; + if (k2 ^ 4 || it2 === void 0) __expectFn(it2) && (k2 > 4 ? initializers.unshift(it2) : k2 ? p2 ? extra = it2 : desc[key] = it2 : target = it2); + else if (typeof it2 !== "object" || it2 === null) __typeError("Object expected"); + else __expectFn(fn = it2.get) && (desc.get = fn), __expectFn(fn = it2.set) && (desc.set = fn), __expectFn(fn = it2.init) && initializers.unshift(fn); + } + return k2 || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p2 ? k2 ^ 4 ? extra : desc : target; +}; var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); +var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); +var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj); +var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); +var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); +var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method); +var _Token_decorators, _init, _a, _ContactService_decorators, _init2, _OrderState_decorators, _init3, _CountryService_decorators, _init4, _AddressService_decorators, _init5, _AccountService_decorators, _init6, _ShopService_decorators, _init7, _OrderService_decorators, _init8, _ProductGroupService_decorators, _init9, _ProductService_decorators, _init10, _PaymentService_decorators, _init11, _ShippingService_decorators, _init12; function _mergeNamespaces(n2, m2) { for (var i2 = 0; i2 < m2.length; i2++) { const e2 = m2[i2]; @@ -374,8 +420,8 @@ function require_Reflect() { keys.push(key); } } - for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) { - var key = parentKeys_1[_a]; + for (var _a2 = 0, parentKeys_1 = parentKeys; _a2 < parentKeys_1.length; _a2++) { + var key = parentKeys_1[_a2]; var hasKey = set2.has(key); if (!hasKey) { set2.add(key); @@ -1172,7 +1218,7 @@ function require_Reflect() { require_Reflect(); var jsxRuntime = { exports: {} }; var reactJsxRuntime_production_min = {}; -var react = { exports: {} }; +var react$1 = { exports: {} }; var react_production_min = {}; /** * @license React @@ -1437,14 +1483,14 @@ function requireReact_production_min() { react_production_min.version = "18.3.1"; return react_production_min; } -var hasRequiredReact; -function requireReact() { - if (hasRequiredReact) return react.exports; - hasRequiredReact = 1; +var hasRequiredReact$1; +function requireReact$1() { + if (hasRequiredReact$1) return react$1.exports; + hasRequiredReact$1 = 1; { - react.exports = requireReact_production_min(); + react$1.exports = requireReact_production_min(); } - return react.exports; + return react$1.exports; } /** * @license React @@ -1459,7 +1505,7 @@ var hasRequiredReactJsxRuntime_production_min; function requireReactJsxRuntime_production_min() { if (hasRequiredReactJsxRuntime_production_min) return reactJsxRuntime_production_min; hasRequiredReactJsxRuntime_production_min = 1; - var f2 = requireReact(), k2 = Symbol.for("react.element"), l2 = Symbol.for("react.fragment"), m2 = Object.prototype.hasOwnProperty, n2 = f2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p2 = { key: true, ref: true, __self: true, __source: true }; + var f2 = requireReact$1(), k2 = Symbol.for("react.element"), l2 = Symbol.for("react.fragment"), m2 = Object.prototype.hasOwnProperty, n2 = f2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p2 = { key: true, ref: true, __self: true, __source: true }; function q2(c2, a2, g2) { var b2, d2 = {}, e2 = null, h2 = null; void 0 !== g2 && (e2 = "" + g2); @@ -3847,189 +3893,81 @@ axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new For axios.getAdapter = adapters.getAdapter; axios.HttpStatusCode = HttpStatusCode; axios.default = axios; -var Lifecycle; -(function(Lifecycle2) { - Lifecycle2[Lifecycle2["Transient"] = 0] = "Transient"; - Lifecycle2[Lifecycle2["Singleton"] = 1] = "Singleton"; - Lifecycle2[Lifecycle2["ResolutionScoped"] = 2] = "ResolutionScoped"; - Lifecycle2[Lifecycle2["ContainerScoped"] = 3] = "ContainerScoped"; -})(Lifecycle || (Lifecycle = {})); -const Lifecycle$1 = Lifecycle; -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -var extendStatics$1 = function(d2, b2) { - extendStatics$1 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) { - d3.__proto__ = b3; - } || function(d3, b3) { - for (var p2 in b3) if (b3.hasOwnProperty(p2)) d3[p2] = b3[p2]; - }; - return extendStatics$1(d2, b2); -}; -function __extends$1(d2, b2) { - extendStatics$1(d2, b2); - function __() { - this.constructor = d2; +function formatDependency(params, idx) { + if (params === null) { + return `at position #${idx}`; } - d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __()); + const argName = params.split(",")[idx].trim(); + return `"${argName}" at position #${idx}`; } -function __awaiter(thisArg, _arguments, P2, generator) { - function adopt(value) { - return value instanceof P2 ? value : new P2(function(resolve) { - resolve(value); - }); - } - return new (P2 || (P2 = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e2) { - reject(e2); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e2) { - reject(e2); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, [])).next()); - }); +function composeErrorMessage(msg, e2, indent = " ") { + return [msg, ...e2.message.split("\n").map((l2) => indent + l2)].join("\n"); } -function __generator(thisArg, body) { - var _2 = { label: 0, sent: function() { - if (t2[0] & 1) throw t2[1]; - return t2[1]; - }, trys: [], ops: [] }, f2, y2, t2, g2; - return g2 = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g2[Symbol.iterator] = function() { - return this; - }), g2; - function verb(n2) { - return function(v2) { - return step([n2, v2]); - }; +function formatErrorCtor(ctor, paramIdx, error) { + const [, params = null] = ctor.toString().match(/constructor\(([\w, ]+)\)/) || []; + const dep = formatDependency(params, paramIdx); + return composeErrorMessage( + `Cannot inject the dependency ${dep} of "${ctor.name}" constructor. Reason:`, + error + ); +} +class RegistryBase { + constructor() { + this._registryMap = /* @__PURE__ */ new Map(); } - function step(op) { - if (f2) throw new TypeError("Generator is already executing."); - while (_2) try { - if (f2 = 1, y2 && (t2 = op[0] & 2 ? y2["return"] : op[0] ? y2["throw"] || ((t2 = y2["return"]) && t2.call(y2), 0) : y2.next) && !(t2 = t2.call(y2, op[1])).done) return t2; - if (y2 = 0, t2) op = [op[0] & 2, t2.value]; - switch (op[0]) { - case 0: - case 1: - t2 = op; - break; - case 4: - _2.label++; - return { value: op[1], done: false }; - case 5: - _2.label++; - y2 = op[1]; - op = [0]; - continue; - case 7: - op = _2.ops.pop(); - _2.trys.pop(); - continue; - default: - if (!(t2 = _2.trys, t2 = t2.length > 0 && t2[t2.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _2 = 0; - continue; - } - if (op[0] === 3 && (!t2 || op[1] > t2[0] && op[1] < t2[3])) { - _2.label = op[1]; - break; - } - if (op[0] === 6 && _2.label < t2[1]) { - _2.label = t2[1]; - t2 = op; - break; - } - if (t2 && _2.label < t2[2]) { - _2.label = t2[2]; - _2.ops.push(op); - break; - } - if (t2[2]) _2.ops.pop(); - _2.trys.pop(); - continue; - } - op = body.call(thisArg, _2); - } catch (e2) { - op = [6, e2]; - y2 = 0; - } finally { - f2 = t2 = 0; + tokens() { + return Array.from(this._registryMap.keys()); + } + entries() { + return this._registryMap.entries(); + } + getAll(key) { + this.ensure(key); + return this._registryMap.get(key); + } + get(key) { + this.ensure(key); + const value = this._registryMap.get(key); + return value[value.length - 1] || null; + } + set(key, value) { + this.ensure(key); + this._registryMap.get(key).push(value); + } + setAll(key, value) { + this._registryMap.set(key, value); + } + has(key) { + this.ensure(key); + return this._registryMap.get(key).length > 0; + } + clear() { + this._registryMap.clear(); + } + delete(key) { + this._registryMap.delete(key); + } + ensure(key) { + if (!this._registryMap.has(key)) { + this._registryMap.set(key, []); } - if (op[0] & 5) throw op[1]; - return { value: op[0] ? op[1] : void 0, done: true }; } } -function __values$1(o2) { - var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o2[s2], i2 = 0; - if (m2) return m2.call(o2); - if (o2 && typeof o2.length === "number") return { - next: function() { - if (o2 && i2 >= o2.length) o2 = void 0; - return { value: o2 && o2[i2++], done: !o2 }; - } - }; - throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined."); +class PostRegistrationInterceptors extends RegistryBase { } -function __read$1(o2, n2) { - var m2 = typeof Symbol === "function" && o2[Symbol.iterator]; - if (!m2) return o2; - var i2 = m2.call(o2), r2, ar = [], e2; - try { - while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value); - } catch (error) { - e2 = { error }; - } finally { - try { - if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2); - } finally { - if (e2) throw e2.error; - } +class PreResolutionInterceptors extends RegistryBase { +} +class PostResolutionInterceptors extends RegistryBase { +} +class Interceptors { + constructor() { + this.postRegistration = new PostRegistrationInterceptors(); + this.preResolution = new PreResolutionInterceptors(); + this.postResolution = new PostResolutionInterceptors(); } - return ar; } -function __spread() { - for (var ar = [], i2 = 0; i2 < arguments.length; i2++) - ar = ar.concat(__read$1(arguments[i2])); - return ar; -} -var INJECTION_TOKEN_METADATA_KEY = "injectionTokens"; -function getParamInfo(target) { - var params = Reflect.getMetadata("design:paramtypes", target) || []; - var injectionTokens = Reflect.getOwnMetadata(INJECTION_TOKEN_METADATA_KEY, target) || {}; - Object.keys(injectionTokens).forEach(function(key) { - params[+key] = injectionTokens[key]; - }); - return params; -} -function isClassProvider(provider) { - return !!provider.useClass; -} -function isFactoryProvider(provider) { - return !!provider.useFactory; -} -var DelayedConstructor = function() { - function DelayedConstructor2(wrap) { +class DelayedConstructor { + constructor(wrap) { this.wrap = wrap; this.reflectMethods = [ "get", @@ -4045,38 +3983,38 @@ var DelayedConstructor = function() { "ownKeys" ]; } - DelayedConstructor2.prototype.createProxy = function(createObject) { - var _this = this; - var target = {}; - var init = false; - var value; - var delayedObject = function() { + createProxy(createObject) { + const target = {}; + let init = false; + let value; + const delayedObject = () => { if (!init) { - value = createObject(_this.wrap()); + value = createObject(this.wrap()); init = true; } return value; }; return new Proxy(target, this.createHandler(delayedObject)); - }; - DelayedConstructor2.prototype.createHandler = function(delayedObject) { - var handler = {}; - var install = function(name) { - handler[name] = function() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } + } + createHandler(delayedObject) { + const handler = {}; + const install = (name) => { + handler[name] = (...args) => { args[0] = delayedObject(); - var method = Reflect[name]; - return method.apply(void 0, __spread(args)); + const method = Reflect[name]; + return method(...args); }; }; this.reflectMethods.forEach(install); return handler; - }; - return DelayedConstructor2; -}(); + } +} +function isClassProvider(provider) { + return Boolean(provider.useClass); +} +function isFactoryProvider(provider) { + return Boolean(provider.useFactory); +} function isNormalToken(token2) { return typeof token2 === "string" || typeof token2 === "symbol"; } @@ -4090,144 +4028,78 @@ function isConstructorToken(token2) { return typeof token2 === "function" || token2 instanceof DelayedConstructor; } function isTokenProvider(provider) { - return !!provider.useToken; + return Boolean(provider.useToken); } function isValueProvider(provider) { - return provider.useValue != void 0; + return Object.prototype.hasOwnProperty.call(provider, "useValue"); } function isProvider(provider) { return isClassProvider(provider) || isValueProvider(provider) || isTokenProvider(provider) || isFactoryProvider(provider); } -var RegistryBase = function() { - function RegistryBase2() { - this._registryMap = /* @__PURE__ */ new Map(); - } - RegistryBase2.prototype.entries = function() { - return this._registryMap.entries(); - }; - RegistryBase2.prototype.getAll = function(key) { - this.ensure(key); - return this._registryMap.get(key); - }; - RegistryBase2.prototype.get = function(key) { - this.ensure(key); - var value = this._registryMap.get(key); - return value[value.length - 1] || null; - }; - RegistryBase2.prototype.set = function(key, value) { - this.ensure(key); - this._registryMap.get(key).push(value); - }; - RegistryBase2.prototype.setAll = function(key, value) { - this._registryMap.set(key, value); - }; - RegistryBase2.prototype.has = function(key) { - this.ensure(key); - return this._registryMap.get(key).length > 0; - }; - RegistryBase2.prototype.clear = function() { - this._registryMap.clear(); - }; - RegistryBase2.prototype.ensure = function(key) { - if (!this._registryMap.has(key)) { - this._registryMap.set(key, []); - } - }; - return RegistryBase2; -}(); -var Registry = function(_super) { - __extends$1(Registry2, _super); - function Registry2() { - return _super !== null && _super.apply(this, arguments) || this; - } - return Registry2; -}(RegistryBase); -var ResolutionContext = /* @__PURE__ */ function() { - function ResolutionContext2() { +const INJECTION_TOKEN_METADATA_KEY = "injectionTokens"; +const PARAM_INFOS_METADATA_KEY = "paramInfos"; +function getParamInfo(target) { + const params = Reflect.getMetadata("design:paramtypes", target) || []; + const injectionTokens = Reflect.getOwnMetadata(INJECTION_TOKEN_METADATA_KEY, target) || {}; + Object.keys(injectionTokens).forEach((key) => { + params[Number(key)] = injectionTokens[key]; + }); + return params; +} +class Registry extends RegistryBase { +} +class ResolutionContext { + constructor() { this.scopedResolutions = /* @__PURE__ */ new Map(); } - return ResolutionContext2; -}(); -function formatDependency(params, idx) { - if (params === null) { - return "at position #" + idx; - } - var argName = params.split(",")[idx].trim(); - return '"' + argName + '" at position #' + idx; -} -function composeErrorMessage(msg, e2, indent) { - if (indent === void 0) { - indent = " "; - } - return __spread([msg], e2.message.split("\n").map(function(l2) { - return indent + l2; - })).join("\n"); -} -function formatErrorCtor(ctor, paramIdx, error) { - var _a = __read$1(ctor.toString().match(/constructor\(([\w, ]+)\)/) || [], 2), _b = _a[1], params = _b === void 0 ? null : _b; - var dep = formatDependency(params, paramIdx); - return composeErrorMessage("Cannot inject the dependency " + dep + ' of "' + ctor.name + '" constructor. Reason:', error); } function isDisposable(value) { - if (typeof value.dispose !== "function") - return false; - var disposeFun = value.dispose; - if (disposeFun.length > 0) { + if (typeof value !== "object" || value === null) return false; + if (!("dispose" in value)) return false; + if (typeof value.dispose !== "function") return false; + const disposeFn = value.dispose; + if (disposeFn.length > 0) { return false; } return true; } -var PreResolutionInterceptors = function(_super) { - __extends$1(PreResolutionInterceptors2, _super); - function PreResolutionInterceptors2() { - return _super !== null && _super.apply(this, arguments) || this; - } - return PreResolutionInterceptors2; -}(RegistryBase); -var PostResolutionInterceptors = function(_super) { - __extends$1(PostResolutionInterceptors2, _super); - function PostResolutionInterceptors2() { - return _super !== null && _super.apply(this, arguments) || this; - } - return PostResolutionInterceptors2; -}(RegistryBase); -var Interceptors = /* @__PURE__ */ function() { - function Interceptors2() { - this.preResolution = new PreResolutionInterceptors(); - this.postResolution = new PostResolutionInterceptors(); - } - return Interceptors2; -}(); -var typeInfo = /* @__PURE__ */ new Map(); -var InternalDependencyContainer = function() { - function InternalDependencyContainer2(parent) { +var Lifecycle = /* @__PURE__ */ ((Lifecycle2) => { + Lifecycle2[Lifecycle2["Transient"] = 0] = "Transient"; + Lifecycle2[Lifecycle2["Singleton"] = 1] = "Singleton"; + Lifecycle2[Lifecycle2["ResolutionScoped"] = 2] = "ResolutionScoped"; + Lifecycle2[Lifecycle2["ContainerScoped"] = 3] = "ContainerScoped"; + return Lifecycle2; +})(Lifecycle || {}); +class InternalDependencyContainer { + constructor(parent) { this.parent = parent; this._registry = new Registry(); this.interceptors = new Interceptors(); this.disposed = false; this.disposables = /* @__PURE__ */ new Set(); } - InternalDependencyContainer2.prototype.register = function(token2, providerOrConstructor, options2) { - if (options2 === void 0) { - options2 = { lifecycle: Lifecycle$1.Transient }; - } + register(token2, providerOrConstructor, options2 = { lifecycle: Lifecycle.Transient }) { this.ensureNotDisposed(); - var provider; + let provider; if (!isProvider(providerOrConstructor)) { provider = { useClass: providerOrConstructor }; } else { provider = providerOrConstructor; } if (isTokenProvider(provider)) { - var path = [token2]; - var tokenProvider = provider; + const path = [token2]; + let tokenProvider = provider; while (tokenProvider != null) { - var currentToken = tokenProvider.useToken; + const currentToken = tokenProvider.useToken; if (path.includes(currentToken)) { - throw new Error("Token registration cycle detected! " + __spread(path, [currentToken]).join(" -> ")); + throw new Error( + `Token registration cycle detected! ${[...path, currentToken].join( + " -> " + )}` + ); } path.push(currentToken); - var registration = this._registry.get(currentToken); + const registration = this._registry.get(currentToken); if (registration && isTokenProvider(registration.provider)) { tokenProvider = registration.provider; } else { @@ -4235,15 +4107,16 @@ var InternalDependencyContainer = function() { } } } - if (options2.lifecycle === Lifecycle$1.Singleton || options2.lifecycle == Lifecycle$1.ContainerScoped || options2.lifecycle == Lifecycle$1.ResolutionScoped) { - if (isValueProvider(provider) || isFactoryProvider(provider)) { - throw new Error('Cannot use lifecycle "' + Lifecycle$1[options2.lifecycle] + '" with ValueProviders or FactoryProviders'); - } + if ((options2.lifecycle === Lifecycle.Singleton || options2.lifecycle === Lifecycle.ContainerScoped || options2.lifecycle === Lifecycle.ResolutionScoped) && (isValueProvider(provider) || isFactoryProvider(provider))) { + throw new Error( + `Cannot use lifecycle "${Lifecycle[options2.lifecycle]}" with ValueProviders or FactoryProviders` + ); } this._registry.set(token2, { provider, options: options2 }); + this.executePostRegistrationInterceptor(token2); return this; - }; - InternalDependencyContainer2.prototype.registerType = function(from2, to) { + } + registerType(from2, to) { this.ensureNotDisposed(); if (isNormalToken(to)) { return this.register(from2, { @@ -4253,262 +4126,282 @@ var InternalDependencyContainer = function() { return this.register(from2, { useClass: to }); - }; - InternalDependencyContainer2.prototype.registerInstance = function(token2, instance2) { + } + registerInstance(token2, instance2) { this.ensureNotDisposed(); return this.register(token2, { useValue: instance2 }); - }; - InternalDependencyContainer2.prototype.registerSingleton = function(from2, to) { + } + registerSingleton(from2, to) { this.ensureNotDisposed(); if (isNormalToken(from2)) { if (isNormalToken(to)) { - return this.register(from2, { - useToken: to - }, { lifecycle: Lifecycle$1.Singleton }); - } else if (to) { - return this.register(from2, { - useClass: to - }, { lifecycle: Lifecycle$1.Singleton }); + return this.register( + from2, + { + useToken: to + }, + { lifecycle: Lifecycle.Singleton } + ); } - throw new Error('Cannot register a type name as a singleton without a "to" token'); + if (to) { + return this.register( + from2, + { + useClass: to + }, + { lifecycle: Lifecycle.Singleton } + ); + } + throw new Error( + 'Cannot register a type name as a singleton without a "to" token' + ); } - var useClass = from2; + let useClass = from2; if (to && !isNormalToken(to)) { useClass = to; } - return this.register(from2, { - useClass - }, { lifecycle: Lifecycle$1.Singleton }); - }; - InternalDependencyContainer2.prototype.resolve = function(token2, context) { - if (context === void 0) { - context = new ResolutionContext(); - } + return this.register( + from2, + { + useClass + }, + { lifecycle: Lifecycle.Singleton } + ); + } + resolve(token2, context = new ResolutionContext()) { this.ensureNotDisposed(); - var registration = this.getRegistration(token2); + const registration = this.getRegistration(token2); if (!registration && isNormalToken(token2)) { - throw new Error('Attempted to resolve unregistered dependency token: "' + token2.toString() + '"'); + throw new Error( + `Attempted to resolve unregistered dependency token: "${token2.toString()}"` + ); } this.executePreResolutionInterceptor(token2, "Single"); if (registration) { - var result = this.resolveRegistration(registration, context); + const result = this.resolveRegistration(registration, context); this.executePostResolutionInterceptor(token2, result, "Single"); return result; } if (isConstructorToken(token2)) { - var result = this.construct(token2, context); + const result = this.construct(token2, context); this.executePostResolutionInterceptor(token2, result, "Single"); return result; } - throw new Error("Attempted to construct an undefined constructor. Could mean a circular dependency problem. Try using `delay` function."); - }; - InternalDependencyContainer2.prototype.executePreResolutionInterceptor = function(token2, resolutionType) { - var e_1, _a; + throw new Error( + "Attempted to construct an undefined constructor. Could mean a circular dependency problem. Try using `delay` function." + ); + } + executePostRegistrationInterceptor(token2) { + if (this.interceptors.postRegistration.has(token2)) { + const remainingInterceptors = []; + for (const interceptor of this.interceptors.postRegistration.getAll(token2)) { + if (interceptor.options.frequency !== "Once") { + remainingInterceptors.push(interceptor); + } + interceptor.callback(token2); + } + this.interceptors.postRegistration.setAll(token2, remainingInterceptors); + } + if (this.interceptors.postAnyRegistration) { + this.interceptors.postAnyRegistration(token2); + } + } + executePreResolutionInterceptor(token2, resolutionType) { if (this.interceptors.preResolution.has(token2)) { - var remainingInterceptors = []; - try { - for (var _b = __values$1(this.interceptors.preResolution.getAll(token2)), _c = _b.next(); !_c.done; _c = _b.next()) { - var interceptor = _c.value; - if (interceptor.options.frequency != "Once") { - remainingInterceptors.push(interceptor); - } - interceptor.callback(token2, resolutionType); - } - } catch (e_1_1) { - e_1 = { error: e_1_1 }; - } finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } finally { - if (e_1) throw e_1.error; + const remainingInterceptors = []; + for (const interceptor of this.interceptors.preResolution.getAll(token2)) { + if (interceptor.options.frequency !== "Once") { + remainingInterceptors.push(interceptor); } + interceptor.callback(token2, resolutionType); } this.interceptors.preResolution.setAll(token2, remainingInterceptors); } - }; - InternalDependencyContainer2.prototype.executePostResolutionInterceptor = function(token2, result, resolutionType) { - var e_2, _a; + if (this.interceptors.preAnyResolution) { + this.interceptors.preAnyResolution(token2, resolutionType); + } + } + executePostResolutionInterceptor(token2, result, resolutionType) { if (this.interceptors.postResolution.has(token2)) { - var remainingInterceptors = []; - try { - for (var _b = __values$1(this.interceptors.postResolution.getAll(token2)), _c = _b.next(); !_c.done; _c = _b.next()) { - var interceptor = _c.value; - if (interceptor.options.frequency != "Once") { - remainingInterceptors.push(interceptor); - } - interceptor.callback(token2, result, resolutionType); - } - } catch (e_2_1) { - e_2 = { error: e_2_1 }; - } finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } finally { - if (e_2) throw e_2.error; + const remainingInterceptors = []; + for (const interceptor of this.interceptors.postResolution.getAll( + token2 + )) { + if (interceptor.options.frequency !== "Once") { + remainingInterceptors.push(interceptor); } + interceptor.callback(token2, result, resolutionType); } this.interceptors.postResolution.setAll(token2, remainingInterceptors); } - }; - InternalDependencyContainer2.prototype.resolveRegistration = function(registration, context) { + if (this.interceptors.postAnyResolution) { + this.interceptors.postAnyResolution(token2, result, resolutionType); + } + } + resolveRegistration(registration, context) { this.ensureNotDisposed(); - if (registration.options.lifecycle === Lifecycle$1.ResolutionScoped && context.scopedResolutions.has(registration)) { + if (registration.options.lifecycle === Lifecycle.ResolutionScoped && context.scopedResolutions.has(registration)) { return context.scopedResolutions.get(registration); } - var isSingleton = registration.options.lifecycle === Lifecycle$1.Singleton; - var isContainerScoped = registration.options.lifecycle === Lifecycle$1.ContainerScoped; - var returnInstance = isSingleton || isContainerScoped; - var resolved; + const isSingleton = registration.options.lifecycle === Lifecycle.Singleton; + const isContainerScoped = registration.options.lifecycle === Lifecycle.ContainerScoped; + const returnInstance = isSingleton || isContainerScoped; + let newResolution = true; + let resolved; if (isValueProvider(registration.provider)) { resolved = registration.provider.useValue; } else if (isTokenProvider(registration.provider)) { - resolved = returnInstance ? registration.instance || (registration.instance = this.resolve(registration.provider.useToken, context)) : this.resolve(registration.provider.useToken, context); + newResolution = returnInstance; + resolved = returnInstance ? registration.instance || (registration.instance = this.resolve( + registration.provider.useToken, + context + )) : this.resolve(registration.provider.useToken, context); } else if (isClassProvider(registration.provider)) { - resolved = returnInstance ? registration.instance || (registration.instance = this.construct(registration.provider.useClass, context)) : this.construct(registration.provider.useClass, context); + newResolution = returnInstance; + resolved = returnInstance ? registration.instance || (registration.instance = this.construct( + registration.provider.useClass, + context + )) : this.construct(registration.provider.useClass, context); } else if (isFactoryProvider(registration.provider)) { resolved = registration.provider.useFactory(this); } else { + newResolution = false; resolved = this.construct(registration.provider, context); } - if (registration.options.lifecycle === Lifecycle$1.ResolutionScoped) { + if (registration.options.lifecycle === Lifecycle.ResolutionScoped) { context.scopedResolutions.set(registration, resolved); } - return resolved; - }; - InternalDependencyContainer2.prototype.resolveAll = function(token2, context) { - var _this = this; - if (context === void 0) { - context = new ResolutionContext(); + if (newResolution && isDisposable(resolved)) { + this.disposables.add(resolved); } + return resolved; + } + resolveAll(token2, context = new ResolutionContext()) { this.ensureNotDisposed(); - var registrations = this.getAllRegistrations(token2); + const registrations = this.getAllRegistrations(token2); if (!registrations && isNormalToken(token2)) { - throw new Error('Attempted to resolve unregistered dependency token: "' + token2.toString() + '"'); + throw new Error( + `Attempted to resolve unregistered dependency token: "${token2.toString()}"` + ); } this.executePreResolutionInterceptor(token2, "All"); if (registrations) { - var result_1 = registrations.map(function(item) { - return _this.resolveRegistration(item, context); - }); - this.executePostResolutionInterceptor(token2, result_1, "All"); - return result_1; + const result2 = registrations.map( + (item) => this.resolveRegistration(item, context) + ); + this.executePostResolutionInterceptor(token2, result2, "All"); + return result2; } - var result = [this.construct(token2, context)]; + const result = [this.construct(token2, context)]; this.executePostResolutionInterceptor(token2, result, "All"); return result; - }; - InternalDependencyContainer2.prototype.isRegistered = function(token2, recursive) { - if (recursive === void 0) { - recursive = false; - } + } + registeredTokens() { + return this._registry.tokens(); + } + isRegistered(token2, recursive = false) { + var _a2; this.ensureNotDisposed(); - return this._registry.has(token2) || recursive && (this.parent || false) && this.parent.isRegistered(token2, true); - }; - InternalDependencyContainer2.prototype.reset = function() { + return this._registry.has(token2) || ((recursive && ((_a2 = this.parent) == null ? void 0 : _a2.isRegistered(token2, true))) ?? false); + } + reset() { this.ensureNotDisposed(); this._registry.clear(); this.interceptors.preResolution.clear(); this.interceptors.postResolution.clear(); - }; - InternalDependencyContainer2.prototype.clearInstances = function() { - var e_3, _a; + } + unregisterAll() { + this._registry.clear(); + this.interceptors.preResolution.clear(); + this.interceptors.postResolution.clear(); + } + unregister(token2) { + const registration = this.getRegistration(token2); + if (!registration) { + throw new Error( + `Attempted to delete unregistered dependency token: "${token2.toString()}"` + ); + } + this._registry.delete(token2); + this.interceptors.preResolution.delete(token2); + this.interceptors.postResolution.delete(token2); + } + clearInstances() { this.ensureNotDisposed(); - try { - for (var _b = __values$1(this._registry.entries()), _c = _b.next(); !_c.done; _c = _b.next()) { - var _d = __read$1(_c.value, 2), token2 = _d[0], registrations = _d[1]; - this._registry.setAll(token2, registrations.filter(function(registration) { - return !isValueProvider(registration.provider); - }).map(function(registration) { + for (const [token2, registrations] of this._registry.entries()) { + this._registry.setAll( + token2, + registrations.filter((registration) => !isValueProvider(registration.provider)).map((registration) => { registration.instance = void 0; return registration; - })); - } - } catch (e_3_1) { - e_3 = { error: e_3_1 }; - } finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } finally { - if (e_3) throw e_3.error; - } + }) + ); } - }; - InternalDependencyContainer2.prototype.createChildContainer = function() { - var e_4, _a; + } + createChildContainer() { this.ensureNotDisposed(); - var childContainer = new InternalDependencyContainer2(this); - try { - for (var _b = __values$1(this._registry.entries()), _c = _b.next(); !_c.done; _c = _b.next()) { - var _d = __read$1(_c.value, 2), token2 = _d[0], registrations = _d[1]; - if (registrations.some(function(_a2) { - var options2 = _a2.options; - return options2.lifecycle === Lifecycle$1.ContainerScoped; - })) { - childContainer._registry.setAll(token2, registrations.map(function(registration) { - if (registration.options.lifecycle === Lifecycle$1.ContainerScoped) { + const childContainer = new InternalDependencyContainer(this); + for (const [token2, registrations] of this._registry.entries()) { + if (registrations.some( + ({ options: options2 }) => options2.lifecycle === Lifecycle.ContainerScoped + )) { + childContainer._registry.setAll( + token2, + registrations.map((registration) => { + if (registration.options.lifecycle === Lifecycle.ContainerScoped) { return { provider: registration.provider, options: registration.options }; } return registration; - })); - } - } - } catch (e_4_1) { - e_4 = { error: e_4_1 }; - } finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } finally { - if (e_4) throw e_4.error; + }) + ); } } return childContainer; - }; - InternalDependencyContainer2.prototype.beforeResolution = function(token2, callback, options2) { - if (options2 === void 0) { - options2 = { frequency: "Always" }; - } + } + afterRegistration(token2, callback, options2 = { frequency: "Always" }) { + this.interceptors.postRegistration.set(token2, { + callback, + options: options2 + }); + } + afterAnyRegistration(callback) { + this.interceptors.postAnyRegistration = callback; + } + beforeResolution(token2, callback, options2 = { frequency: "Always" }) { this.interceptors.preResolution.set(token2, { callback, options: options2 }); - }; - InternalDependencyContainer2.prototype.afterResolution = function(token2, callback, options2) { - if (options2 === void 0) { - options2 = { frequency: "Always" }; - } + } + beforeAnyResolution(callback) { + this.interceptors.preAnyResolution = callback; + } + afterResolution(token2, callback, options2 = { frequency: "Always" }) { this.interceptors.postResolution.set(token2, { callback, options: options2 }); - }; - InternalDependencyContainer2.prototype.dispose = function() { - return __awaiter(this, void 0, void 0, function() { - var promises; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - this.disposed = true; - promises = []; - this.disposables.forEach(function(disposable) { - var maybePromise = disposable.dispose(); - if (maybePromise) { - promises.push(maybePromise); - } - }); - return [4, Promise.all(promises)]; - case 1: - _a.sent(); - return [2]; - } - }); + } + afterAnyResolution(callback) { + this.interceptors.postAnyResolution = callback; + } + async dispose() { + this.disposed = true; + const promises = []; + this.disposables.forEach((disposable) => { + const maybePromise = disposable.dispose(); + if (maybePromise) { + promises.push(maybePromise); + } }); - }; - InternalDependencyContainer2.prototype.getRegistration = function(token2) { + await Promise.all(promises); + } + getRegistration(token2) { if (this.isRegistered(token2)) { return this._registry.get(token2); } @@ -4516,8 +4409,8 @@ var InternalDependencyContainer = function() { return this.parent.getRegistration(token2); } return null; - }; - InternalDependencyContainer2.prototype.getAllRegistrations = function(token2) { + } + getAllRegistrations(token2) { if (this.isRegistered(token2)) { return this._registry.getAll(token2); } @@ -4525,95 +4418,110 @@ var InternalDependencyContainer = function() { return this.parent.getAllRegistrations(token2); } return null; - }; - InternalDependencyContainer2.prototype.construct = function(ctor, context) { - var _this = this; + } + construct(ctor, context) { if (ctor instanceof DelayedConstructor) { - return ctor.createProxy(function(target) { - return _this.resolve(target, context); - }); + return ctor.createProxy( + (target) => this.resolve(target, context) + ); } - var instance2 = function() { - var paramInfo = typeInfo.get(ctor); + const instance2 = (() => { + const paramInfo = Reflect.getMetadata(PARAM_INFOS_METADATA_KEY, ctor); if (!paramInfo || paramInfo.length === 0) { if (ctor.length === 0) { return new ctor(); - } else { - throw new Error('TypeInfo not known for "' + ctor.name + '"'); } + throw new Error(`TypeInfo not known for "${ctor.name}"`); } - var params = paramInfo.map(_this.resolveParams(context, ctor)); - return new (ctor.bind.apply(ctor, __spread([void 0], params)))(); - }(); + const params = paramInfo.map(this.resolveParams(context, ctor)); + return new ctor(...params); + })(); if (isDisposable(instance2)) { this.disposables.add(instance2); } return instance2; - }; - InternalDependencyContainer2.prototype.resolveParams = function(context, ctor) { - var _this = this; - return function(param, idx) { - var _a, _b, _c; + } + resolveParams(context, ctor) { + return (param, idx) => { try { if (isTokenDescriptor(param)) { if (isTransformDescriptor(param)) { - return param.multiple ? (_a = _this.resolve(param.transform)).transform.apply(_a, __spread([_this.resolveAll(param.token)], param.transformArgs)) : (_b = _this.resolve(param.transform)).transform.apply(_b, __spread([_this.resolve(param.token, context)], param.transformArgs)); - } else { - return param.multiple ? _this.resolveAll(param.token) : _this.resolve(param.token, context); + return param.multiple ? this.resolve(param.transform).transform( + this.resolveAll(param.token), + ...param.transformArgs + ) : this.resolve(param.transform).transform( + this.resolve(param.token, context), + ...param.transformArgs + ); } - } else if (isTransformDescriptor(param)) { - return (_c = _this.resolve(param.transform, context)).transform.apply(_c, __spread([_this.resolve(param.token, context)], param.transformArgs)); + return param.multiple ? this.resolveAll(param.token) : this.resolve(param.token, context); } - return _this.resolve(param, context); - } catch (e2) { - throw new Error(formatErrorCtor(ctor, idx, e2)); + if (isTransformDescriptor(param)) { + return this.resolve(param.transform, context).transform( + this.resolve(param.token, context), + ...param.transformArgs + ); + } + return this.resolve(param, context); + } catch (error) { + throw new Error(formatErrorCtor(ctor, idx, error)); } }; - }; - InternalDependencyContainer2.prototype.ensureNotDisposed = function() { + } + ensureNotDisposed() { if (this.disposed) { - throw new Error("This container has been disposed, you cannot interact with a disposed container"); + throw new Error( + "This container has been disposed, you cannot interact with a disposed container" + ); } - }; - return InternalDependencyContainer2; -}(); -var instance = new InternalDependencyContainer(); + } +} +const instance = new InternalDependencyContainer(); function autoInjectable() { return function(target) { - var paramInfo = getParamInfo(target); - return function(_super) { - __extends$1(class_1, _super); - function class_1() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return _super.apply(this, __spread(args.concat(paramInfo.slice(args.length).map(function(type2, index2) { - var _a, _b, _c; - try { - if (isTokenDescriptor(type2)) { - if (isTransformDescriptor(type2)) { - return type2.multiple ? (_a = instance.resolve(type2.transform)).transform.apply(_a, __spread([instance.resolveAll(type2.token)], type2.transformArgs)) : (_b = instance.resolve(type2.transform)).transform.apply(_b, __spread([instance.resolve(type2.token)], type2.transformArgs)); - } else { - return type2.multiple ? instance.resolveAll(type2.token) : instance.resolve(type2.token); + const paramInfo = getParamInfo(target); + return class extends target { + constructor(...args) { + super( + ...args.concat( + paramInfo.slice(args.length).map((type2, index2) => { + try { + if (isTokenDescriptor(type2)) { + if (isTransformDescriptor(type2)) { + return type2.multiple ? instance.resolve(type2.transform).transform( + instance.resolveAll(type2.token), + ...type2.transformArgs + ) : instance.resolve(type2.transform).transform( + instance.resolve(type2.token), + ...type2.transformArgs + ); + } + return type2.multiple ? instance.resolveAll(type2.token) : instance.resolve(type2.token); + } + if (isTransformDescriptor(type2)) { + return instance.resolve(type2.transform).transform( + instance.resolve(type2.token), + ...type2.transformArgs + ); + } + return instance.resolve(type2); + } catch (error) { + const argIndex = index2 + args.length; + throw new Error( + formatErrorCtor(target, argIndex, error) + ); } - } else if (isTransformDescriptor(type2)) { - return (_c = instance.resolve(type2.transform)).transform.apply(_c, __spread([instance.resolve(type2.token)], type2.transformArgs)); - } - return instance.resolve(type2); - } catch (e2) { - var argIndex = index2 + args.length; - throw new Error(formatErrorCtor(target, argIndex, e2)); - } - })))) || this; + }) + ) + ); } - return class_1; - }(target); + }; }; } function injectable() { return function(target) { - typeInfo.set(target, getParamInfo(target)); + const paramInfo = getParamInfo(target); + Reflect.defineMetadata(PARAM_INFOS_METADATA_KEY, paramInfo, target); }; } function singleton() { @@ -4623,19 +4531,11 @@ function singleton() { }; } if (typeof Reflect === "undefined" || !Reflect.getMetadata) { - throw new Error(`tsyringe requires a reflect polyfill. Please add 'import "reflect-metadata"' to the top of your entry point.`); + throw new Error( + `tsyringe-neo requires a reflect polyfill. Please add 'import "reflect-metadata"' to the top of your entry point.` + ); } -var __defProp$c = Object.defineProperty; -var __getOwnPropDesc$b = Object.getOwnPropertyDescriptor; -var __decorateClass$b = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$b(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp$c(target, key, result); - return result; -}; -let Token = class { +let Token$1 = (_Token_decorators = [singleton()], _a = class { constructor() { __publicField(this, "currentToken"); } @@ -4653,12 +4553,9 @@ let Token = class { this.currentToken = response.data.token; }); } -}; -Token = __decorateClass$b([ - singleton() -], Token); +}, _init = __decoratorStart(null), _a = __decorateElement(_init, 0, "Token", _Token_decorators, _a), __runInitializers(_init, 1, _a), _a); var client = {}; -var reactDom = { exports: {} }; +var reactDom$1 = { exports: {} }; var reactDom_production_min = {}; var scheduler = { exports: {} }; var scheduler_production_min = {}; @@ -4928,7 +4825,7 @@ var hasRequiredReactDom_production_min; function requireReactDom_production_min() { if (hasRequiredReactDom_production_min) return reactDom_production_min; hasRequiredReactDom_production_min = 1; - var aa = requireReact(), ca = requireScheduler(); + var aa = requireReact$1(), ca = requireScheduler(); function p2(a2) { for (var b2 = "https://reactjs.org/docs/error-decoder.html?invariant=" + a2, c2 = 1; c2 < arguments.length; c2++) b2 += "&args[]=" + encodeURIComponent(arguments[c2]); return "Minified React error #" + a2 + "; visit " + b2 + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."; @@ -11327,10 +11224,10 @@ function requireReactDom_production_min() { reactDom_production_min.version = "18.3.1-next-f1338f8080-20240426"; return reactDom_production_min; } -var hasRequiredReactDom; -function requireReactDom() { - if (hasRequiredReactDom) return reactDom.exports; - hasRequiredReactDom = 1; +var hasRequiredReactDom$1; +function requireReactDom$1() { + if (hasRequiredReactDom$1) return reactDom$1.exports; + hasRequiredReactDom$1 = 1; function checkDCE() { if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") { return; @@ -11343,15 +11240,15 @@ function requireReactDom() { } { checkDCE(); - reactDom.exports = requireReactDom_production_min(); + reactDom$1.exports = requireReactDom_production_min(); } - return reactDom.exports; + return reactDom$1.exports; } var hasRequiredClient; function requireClient() { if (hasRequiredClient) return client; hasRequiredClient = 1; - var m2 = requireReactDom(); + var m2 = requireReactDom$1(); { client.createRoot = m2.createRoot; client.hydrateRoot = m2.hydrateRoot; @@ -11360,7 +11257,7 @@ function requireClient() { } var clientExports = requireClient(); const ReactDOM = /* @__PURE__ */ getDefaultExportFromCjs(clientExports); -var reactExports = requireReact(); +var reactExports = requireReact$1(); const React$1 = /* @__PURE__ */ getDefaultExportFromCjs(reactExports); const React$2 = /* @__PURE__ */ _mergeNamespaces({ __proto__: null, @@ -11402,14 +11299,14 @@ var getUid = function() { return "_nice_modal_" + uidSeed++; }; var reducer = function(state, action) { - var _a, _b, _c; + var _a2, _b, _c; if (state === void 0) { state = initialState; } switch (action.type) { case "nice-modal/show": { var _d = action.payload, modalId = _d.modalId, args = _d.args; - return __assign$1(__assign$1({}, state), (_a = {}, _a[modalId] = __assign$1(__assign$1({}, state[modalId]), { + return __assign$1(__assign$1({}, state), (_a2 = {}, _a2[modalId] = __assign$1(__assign$1({}, state[modalId]), { id: modalId, args, // If modal is not mounted, mount it first then make it visible. @@ -11417,7 +11314,7 @@ var reducer = function(state, action) { // This mechanism ensures the entering transition. visible: !!ALREADY_MOUNTED[modalId], delayVisible: !ALREADY_MOUNTED[modalId] - }), _a)); + }), _a2)); } case "nice-modal/hide": { var modalId = action.payload.modalId; @@ -11440,8 +11337,8 @@ var reducer = function(state, action) { } }; function getModal(modalId) { - var _a; - return (_a = MODAL_REGISTRY[modalId]) === null || _a === void 0 ? void 0 : _a.comp; + var _a2; + return (_a2 = MODAL_REGISTRY[modalId]) === null || _a2 === void 0 ? void 0 : _a2.comp; } function showModal(modalId, args) { return { @@ -11565,18 +11462,18 @@ function useModal(modal, args) { return remove(mid); }, [mid]); var resolveCallback = reactExports.useCallback(function(args2) { - var _a; - (_a = modalCallbacks[mid]) === null || _a === void 0 ? void 0 : _a.resolve(args2); + var _a2; + (_a2 = modalCallbacks[mid]) === null || _a2 === void 0 ? void 0 : _a2.resolve(args2); delete modalCallbacks[mid]; }, [mid]); var rejectCallback = reactExports.useCallback(function(args2) { - var _a; - (_a = modalCallbacks[mid]) === null || _a === void 0 ? void 0 : _a.reject(args2); + var _a2; + (_a2 = modalCallbacks[mid]) === null || _a2 === void 0 ? void 0 : _a2.reject(args2); delete modalCallbacks[mid]; }, [mid]); var resolveHide = reactExports.useCallback(function(args2) { - var _a; - (_a = hideModalCallbacks[mid]) === null || _a === void 0 ? void 0 : _a.resolve(args2); + var _a2; + (_a2 = hideModalCallbacks[mid]) === null || _a2 === void 0 ? void 0 : _a2.resolve(args2); delete hideModalCallbacks[mid]; }, [mid]); return reactExports.useMemo(function() { @@ -11606,9 +11503,9 @@ function useModal(modal, args) { ]); } var create = function(Comp) { - return function(_a) { + return function(_a2) { var _b; - var defaultVisible = _a.defaultVisible, keepMounted = _a.keepMounted, id = _a.id, props = __rest(_a, ["defaultVisible", "keepMounted", "id"]); + var defaultVisible = _a2.defaultVisible, keepMounted = _a2.keepMounted, id = _a2.id, props = __rest(_a2, ["defaultVisible", "keepMounted", "id"]); var _c = useModal(id), args = _c.args, show2 = _c.show; var modals = reactExports.useContext(NiceModalContext); var shouldMount = !!modals[id]; @@ -11670,8 +11567,8 @@ var NiceModalPlaceholder = function() { return React$1.createElement(t2.comp, __assign$1({ key: t2.id, id: t2.id }, t2.props)); })); }; -var InnerContextProvider = function(_a) { - var children = _a.children; +var InnerContextProvider = function(_a2) { + var children = _a2.children; var arr = reactExports.useReducer(reducer, initialState); var modals = arr[0]; dispatch = arr[1]; @@ -11682,8 +11579,8 @@ var InnerContextProvider = function(_a) { React$1.createElement(NiceModalPlaceholder, null) ); }; -var Provider = function(_a) { - var children = _a.children, givenDispatch = _a.dispatch, givenModals = _a.modals; +var Provider = function(_a2) { + var children = _a2.children, givenDispatch = _a2.dispatch, givenModals = _a2.modals; if (!givenDispatch || !givenModals) { return React$1.createElement(InnerContextProvider, null, children); } @@ -11695,8 +11592,8 @@ var Provider = function(_a) { React$1.createElement(NiceModalPlaceholder, null) ); }; -var ModalDef = function(_a) { - var id = _a.id, component = _a.component; +var ModalDef = function(_a2) { + var id = _a2.id, component = _a2.component; reactExports.useEffect(function() { register(id, component); return function() { @@ -11705,9 +11602,9 @@ var ModalDef = function(_a) { }, [id, component]); return null; }; -var ModalHolder = function(_a) { +var ModalHolder = function(_a2) { var _b; - var modal = _a.modal, _c = _a.handler, handler = _c === void 0 ? {} : _c, restProps = __rest(_a, ["modal", "handler"]); + var modal = _a2.modal, _c = _a2.handler, handler = _c === void 0 ? {} : _c, restProps = __rest(_a2, ["modal", "handler"]); var mid = reactExports.useMemo(function() { return getUid(); }, []); @@ -12880,10 +12777,10 @@ var createCache = function createCache2(options2) { } var stylisPlugins = options2.stylisPlugins || defaultStylisPlugins; var inserted = {}; - var container; + var container2; var nodesToHydrate = []; { - container = options2.container || document.head; + container2 = options2.container || document.head; Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which // means that the style elements we're looking at are only Emotion 11 server-rendered style elements @@ -12920,7 +12817,7 @@ var createCache = function createCache2(options2) { key, sheet: new StyleSheet({ key, - container, + container: container2, nonce: options2.nonce, speedy: options2.speedy, prepend: options2.prepend, @@ -13750,6 +13647,626 @@ function _taggedTemplateLiteral(e2, t2) { } })); } +var reactDom = { exports: {} }; +var reactDom_production = {}; +var react = { exports: {} }; +var react_production = {}; +/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var hasRequiredReact_production; +function requireReact_production() { + if (hasRequiredReact_production) return react_production; + hasRequiredReact_production = 1; + var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), MAYBE_ITERATOR_SYMBOL = Symbol.iterator; + function getIteratorFn(maybeIterable) { + if (null === maybeIterable || "object" !== typeof maybeIterable) return null; + maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"]; + return "function" === typeof maybeIterable ? maybeIterable : null; + } + var ReactNoopUpdateQueue = { + isMounted: function() { + return false; + }, + enqueueForceUpdate: function() { + }, + enqueueReplaceState: function() { + }, + enqueueSetState: function() { + } + }, assign2 = Object.assign, emptyObject = {}; + function Component(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + Component.prototype.isReactComponent = {}; + Component.prototype.setState = function(partialState, callback) { + if ("object" !== typeof partialState && "function" !== typeof partialState && null != partialState) + throw Error( + "takes an object of state variables to update or a function which returns an object of state variables." + ); + this.updater.enqueueSetState(this, partialState, callback, "setState"); + }; + Component.prototype.forceUpdate = function(callback) { + this.updater.enqueueForceUpdate(this, callback, "forceUpdate"); + }; + function ComponentDummy() { + } + ComponentDummy.prototype = Component.prototype; + function PureComponent(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); + pureComponentPrototype.constructor = PureComponent; + assign2(pureComponentPrototype, Component.prototype); + pureComponentPrototype.isPureReactComponent = true; + var isArrayImpl = Array.isArray, ReactSharedInternals = { H: null, A: null, T: null, S: null }, hasOwnProperty2 = Object.prototype.hasOwnProperty; + function ReactElement(type2, key, self2, source, owner, props) { + self2 = props.ref; + return { + $$typeof: REACT_ELEMENT_TYPE, + type: type2, + key, + ref: void 0 !== self2 ? self2 : null, + props + }; + } + function cloneAndReplaceKey(oldElement, newKey) { + return ReactElement( + oldElement.type, + newKey, + void 0, + void 0, + void 0, + oldElement.props + ); + } + function isValidElement(object) { + return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE; + } + function escape(key) { + var escaperLookup = { "=": "=0", ":": "=2" }; + return "$" + key.replace(/[=:]/g, function(match2) { + return escaperLookup[match2]; + }); + } + var userProvidedKeyEscapeRegex = /\/+/g; + function getElementKey(element, index2) { + return "object" === typeof element && null !== element && null != element.key ? escape("" + element.key) : index2.toString(36); + } + function noop$12() { + } + function resolveThenable(thenable) { + switch (thenable.status) { + case "fulfilled": + return thenable.value; + case "rejected": + throw thenable.reason; + default: + switch ("string" === typeof thenable.status ? thenable.then(noop$12, noop$12) : (thenable.status = "pending", thenable.then( + function(fulfilledValue) { + "pending" === thenable.status && (thenable.status = "fulfilled", thenable.value = fulfilledValue); + }, + function(error) { + "pending" === thenable.status && (thenable.status = "rejected", thenable.reason = error); + } + )), thenable.status) { + case "fulfilled": + return thenable.value; + case "rejected": + throw thenable.reason; + } + } + throw thenable; + } + function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) { + var type2 = typeof children; + if ("undefined" === type2 || "boolean" === type2) children = null; + var invokeCallback = false; + if (null === children) invokeCallback = true; + else + switch (type2) { + case "bigint": + case "string": + case "number": + invokeCallback = true; + break; + case "object": + switch (children.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_PORTAL_TYPE: + invokeCallback = true; + break; + case REACT_LAZY_TYPE: + return invokeCallback = children._init, mapIntoArray( + invokeCallback(children._payload), + array, + escapedPrefix, + nameSoFar, + callback + ); + } + } + if (invokeCallback) + return callback = callback(children), invokeCallback = "" === nameSoFar ? "." + getElementKey(children, 0) : nameSoFar, isArrayImpl(callback) ? (escapedPrefix = "", null != invokeCallback && (escapedPrefix = invokeCallback.replace(userProvidedKeyEscapeRegex, "$&/") + "/"), mapIntoArray(callback, array, escapedPrefix, "", function(c2) { + return c2; + })) : null != callback && (isValidElement(callback) && (callback = cloneAndReplaceKey( + callback, + escapedPrefix + (null == callback.key || children && children.key === callback.key ? "" : ("" + callback.key).replace( + userProvidedKeyEscapeRegex, + "$&/" + ) + "/") + invokeCallback + )), array.push(callback)), 1; + invokeCallback = 0; + var nextNamePrefix = "" === nameSoFar ? "." : nameSoFar + ":"; + if (isArrayImpl(children)) + for (var i2 = 0; i2 < children.length; i2++) + nameSoFar = children[i2], type2 = nextNamePrefix + getElementKey(nameSoFar, i2), invokeCallback += mapIntoArray( + nameSoFar, + array, + escapedPrefix, + type2, + callback + ); + else if (i2 = getIteratorFn(children), "function" === typeof i2) + for (children = i2.call(children), i2 = 0; !(nameSoFar = children.next()).done; ) + nameSoFar = nameSoFar.value, type2 = nextNamePrefix + getElementKey(nameSoFar, i2++), invokeCallback += mapIntoArray( + nameSoFar, + array, + escapedPrefix, + type2, + callback + ); + else if ("object" === type2) { + if ("function" === typeof children.then) + return mapIntoArray( + resolveThenable(children), + array, + escapedPrefix, + nameSoFar, + callback + ); + array = String(children); + throw Error( + "Objects are not valid as a React child (found: " + ("[object Object]" === array ? "object with keys {" + Object.keys(children).join(", ") + "}" : array) + "). If you meant to render a collection of children, use an array instead." + ); + } + return invokeCallback; + } + function mapChildren(children, func, context) { + if (null == children) return children; + var result = [], count2 = 0; + mapIntoArray(children, result, "", "", function(child) { + return func.call(context, child, count2++); + }); + return result; + } + function lazyInitializer(payload) { + if (-1 === payload._status) { + var ctor = payload._result; + ctor = ctor(); + ctor.then( + function(moduleObject) { + if (0 === payload._status || -1 === payload._status) + payload._status = 1, payload._result = moduleObject; + }, + function(error) { + if (0 === payload._status || -1 === payload._status) + payload._status = 2, payload._result = error; + } + ); + -1 === payload._status && (payload._status = 0, payload._result = ctor); + } + if (1 === payload._status) return payload._result.default; + throw payload._result; + } + var reportGlobalError = "function" === typeof reportError ? reportError : function(error) { + if ("object" === typeof window && "function" === typeof window.ErrorEvent) { + var event = new window.ErrorEvent("error", { + bubbles: true, + cancelable: true, + message: "object" === typeof error && null !== error && "string" === typeof error.message ? String(error.message) : String(error), + error + }); + if (!window.dispatchEvent(event)) return; + } else if ("object" === typeof process && "function" === typeof process.emit) { + process.emit("uncaughtException", error); + return; + } + console.error(error); + }; + function noop3() { + } + react_production.Children = { + map: mapChildren, + forEach: function(children, forEachFunc, forEachContext) { + mapChildren( + children, + function() { + forEachFunc.apply(this, arguments); + }, + forEachContext + ); + }, + count: function(children) { + var n2 = 0; + mapChildren(children, function() { + n2++; + }); + return n2; + }, + toArray: function(children) { + return mapChildren(children, function(child) { + return child; + }) || []; + }, + only: function(children) { + if (!isValidElement(children)) + throw Error( + "React.Children.only expected to receive a single React element child." + ); + return children; + } + }; + react_production.Component = Component; + react_production.Fragment = REACT_FRAGMENT_TYPE; + react_production.Profiler = REACT_PROFILER_TYPE; + react_production.PureComponent = PureComponent; + react_production.StrictMode = REACT_STRICT_MODE_TYPE; + react_production.Suspense = REACT_SUSPENSE_TYPE; + react_production.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = ReactSharedInternals; + react_production.act = function() { + throw Error("act(...) is not supported in production builds of React."); + }; + react_production.cache = function(fn) { + return function() { + return fn.apply(null, arguments); + }; + }; + react_production.cloneElement = function(element, config2, children) { + if (null === element || void 0 === element) + throw Error( + "The argument must be a React element, but you passed " + element + "." + ); + var props = assign2({}, element.props), key = element.key, owner = void 0; + if (null != config2) + for (propName in void 0 !== config2.ref && (owner = void 0), void 0 !== config2.key && (key = "" + config2.key), config2) + !hasOwnProperty2.call(config2, propName) || "key" === propName || "__self" === propName || "__source" === propName || "ref" === propName && void 0 === config2.ref || (props[propName] = config2[propName]); + var propName = arguments.length - 2; + if (1 === propName) props.children = children; + else if (1 < propName) { + for (var childArray = Array(propName), i2 = 0; i2 < propName; i2++) + childArray[i2] = arguments[i2 + 2]; + props.children = childArray; + } + return ReactElement(element.type, key, void 0, void 0, owner, props); + }; + react_production.createContext = function(defaultValue) { + defaultValue = { + $$typeof: REACT_CONTEXT_TYPE, + _currentValue: defaultValue, + _currentValue2: defaultValue, + _threadCount: 0, + Provider: null, + Consumer: null + }; + defaultValue.Provider = defaultValue; + defaultValue.Consumer = { + $$typeof: REACT_CONSUMER_TYPE, + _context: defaultValue + }; + return defaultValue; + }; + react_production.createElement = function(type2, config2, children) { + var propName, props = {}, key = null; + if (null != config2) + for (propName in void 0 !== config2.key && (key = "" + config2.key), config2) + hasOwnProperty2.call(config2, propName) && "key" !== propName && "__self" !== propName && "__source" !== propName && (props[propName] = config2[propName]); + var childrenLength = arguments.length - 2; + if (1 === childrenLength) props.children = children; + else if (1 < childrenLength) { + for (var childArray = Array(childrenLength), i2 = 0; i2 < childrenLength; i2++) + childArray[i2] = arguments[i2 + 2]; + props.children = childArray; + } + if (type2 && type2.defaultProps) + for (propName in childrenLength = type2.defaultProps, childrenLength) + void 0 === props[propName] && (props[propName] = childrenLength[propName]); + return ReactElement(type2, key, void 0, void 0, null, props); + }; + react_production.createRef = function() { + return { current: null }; + }; + react_production.forwardRef = function(render) { + return { $$typeof: REACT_FORWARD_REF_TYPE, render }; + }; + react_production.isValidElement = isValidElement; + react_production.lazy = function(ctor) { + return { + $$typeof: REACT_LAZY_TYPE, + _payload: { _status: -1, _result: ctor }, + _init: lazyInitializer + }; + }; + react_production.memo = function(type2, compare) { + return { + $$typeof: REACT_MEMO_TYPE, + type: type2, + compare: void 0 === compare ? null : compare + }; + }; + react_production.startTransition = function(scope) { + var prevTransition = ReactSharedInternals.T, currentTransition = {}; + ReactSharedInternals.T = currentTransition; + try { + var returnValue = scope(), onStartTransitionFinish = ReactSharedInternals.S; + null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue); + "object" === typeof returnValue && null !== returnValue && "function" === typeof returnValue.then && returnValue.then(noop3, reportGlobalError); + } catch (error) { + reportGlobalError(error); + } finally { + ReactSharedInternals.T = prevTransition; + } + }; + react_production.unstable_useCacheRefresh = function() { + return ReactSharedInternals.H.useCacheRefresh(); + }; + react_production.use = function(usable) { + return ReactSharedInternals.H.use(usable); + }; + react_production.useActionState = function(action, initialState2, permalink) { + return ReactSharedInternals.H.useActionState(action, initialState2, permalink); + }; + react_production.useCallback = function(callback, deps) { + return ReactSharedInternals.H.useCallback(callback, deps); + }; + react_production.useContext = function(Context) { + return ReactSharedInternals.H.useContext(Context); + }; + react_production.useDebugValue = function() { + }; + react_production.useDeferredValue = function(value, initialValue) { + return ReactSharedInternals.H.useDeferredValue(value, initialValue); + }; + react_production.useEffect = function(create2, deps) { + return ReactSharedInternals.H.useEffect(create2, deps); + }; + react_production.useId = function() { + return ReactSharedInternals.H.useId(); + }; + react_production.useImperativeHandle = function(ref2, create2, deps) { + return ReactSharedInternals.H.useImperativeHandle(ref2, create2, deps); + }; + react_production.useInsertionEffect = function(create2, deps) { + return ReactSharedInternals.H.useInsertionEffect(create2, deps); + }; + react_production.useLayoutEffect = function(create2, deps) { + return ReactSharedInternals.H.useLayoutEffect(create2, deps); + }; + react_production.useMemo = function(create2, deps) { + return ReactSharedInternals.H.useMemo(create2, deps); + }; + react_production.useOptimistic = function(passthrough, reducer2) { + return ReactSharedInternals.H.useOptimistic(passthrough, reducer2); + }; + react_production.useReducer = function(reducer2, initialArg, init) { + return ReactSharedInternals.H.useReducer(reducer2, initialArg, init); + }; + react_production.useRef = function(initialValue) { + return ReactSharedInternals.H.useRef(initialValue); + }; + react_production.useState = function(initialState2) { + return ReactSharedInternals.H.useState(initialState2); + }; + react_production.useSyncExternalStore = function(subscribe, getSnapshot, getServerSnapshot) { + return ReactSharedInternals.H.useSyncExternalStore( + subscribe, + getSnapshot, + getServerSnapshot + ); + }; + react_production.useTransition = function() { + return ReactSharedInternals.H.useTransition(); + }; + react_production.version = "19.0.0"; + return react_production; +} +var hasRequiredReact; +function requireReact() { + if (hasRequiredReact) return react.exports; + hasRequiredReact = 1; + { + react.exports = requireReact_production(); + } + return react.exports; +} +/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var hasRequiredReactDom_production; +function requireReactDom_production() { + if (hasRequiredReactDom_production) return reactDom_production; + hasRequiredReactDom_production = 1; + var React2 = requireReact(); + function formatProdErrorMessage(code) { + var url = "https://react.dev/errors/" + code; + if (1 < arguments.length) { + url += "?args[]=" + encodeURIComponent(arguments[1]); + for (var i2 = 2; i2 < arguments.length; i2++) + url += "&args[]=" + encodeURIComponent(arguments[i2]); + } + return "Minified React error #" + code + "; visit " + url + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."; + } + function noop3() { + } + var Internals = { + d: { + f: noop3, + r: function() { + throw Error(formatProdErrorMessage(522)); + }, + D: noop3, + C: noop3, + L: noop3, + m: noop3, + X: noop3, + S: noop3, + M: noop3 + }, + p: 0, + findDOMNode: null + }, REACT_PORTAL_TYPE = Symbol.for("react.portal"); + function createPortal$1(children, containerInfo, implementation) { + var key = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null; + return { + $$typeof: REACT_PORTAL_TYPE, + key: null == key ? null : "" + key, + children, + containerInfo, + implementation + }; + } + var ReactSharedInternals = React2.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE; + function getCrossOriginStringAs(as, input) { + if ("font" === as) return ""; + if ("string" === typeof input) + return "use-credentials" === input ? input : ""; + } + reactDom_production.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Internals; + reactDom_production.createPortal = function(children, container2) { + var key = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null; + if (!container2 || 1 !== container2.nodeType && 9 !== container2.nodeType && 11 !== container2.nodeType) + throw Error(formatProdErrorMessage(299)); + return createPortal$1(children, container2, null, key); + }; + reactDom_production.flushSync = function(fn) { + var previousTransition = ReactSharedInternals.T, previousUpdatePriority = Internals.p; + try { + if (ReactSharedInternals.T = null, Internals.p = 2, fn) return fn(); + } finally { + ReactSharedInternals.T = previousTransition, Internals.p = previousUpdatePriority, Internals.d.f(); + } + }; + reactDom_production.preconnect = function(href, options2) { + "string" === typeof href && (options2 ? (options2 = options2.crossOrigin, options2 = "string" === typeof options2 ? "use-credentials" === options2 ? options2 : "" : void 0) : options2 = null, Internals.d.C(href, options2)); + }; + reactDom_production.prefetchDNS = function(href) { + "string" === typeof href && Internals.d.D(href); + }; + reactDom_production.preinit = function(href, options2) { + if ("string" === typeof href && options2 && "string" === typeof options2.as) { + var as = options2.as, crossOrigin = getCrossOriginStringAs(as, options2.crossOrigin), integrity = "string" === typeof options2.integrity ? options2.integrity : void 0, fetchPriority = "string" === typeof options2.fetchPriority ? options2.fetchPriority : void 0; + "style" === as ? Internals.d.S( + href, + "string" === typeof options2.precedence ? options2.precedence : void 0, + { + crossOrigin, + integrity, + fetchPriority + } + ) : "script" === as && Internals.d.X(href, { + crossOrigin, + integrity, + fetchPriority, + nonce: "string" === typeof options2.nonce ? options2.nonce : void 0 + }); + } + }; + reactDom_production.preinitModule = function(href, options2) { + if ("string" === typeof href) + if ("object" === typeof options2 && null !== options2) { + if (null == options2.as || "script" === options2.as) { + var crossOrigin = getCrossOriginStringAs( + options2.as, + options2.crossOrigin + ); + Internals.d.M(href, { + crossOrigin, + integrity: "string" === typeof options2.integrity ? options2.integrity : void 0, + nonce: "string" === typeof options2.nonce ? options2.nonce : void 0 + }); + } + } else null == options2 && Internals.d.M(href); + }; + reactDom_production.preload = function(href, options2) { + if ("string" === typeof href && "object" === typeof options2 && null !== options2 && "string" === typeof options2.as) { + var as = options2.as, crossOrigin = getCrossOriginStringAs(as, options2.crossOrigin); + Internals.d.L(href, as, { + crossOrigin, + integrity: "string" === typeof options2.integrity ? options2.integrity : void 0, + nonce: "string" === typeof options2.nonce ? options2.nonce : void 0, + type: "string" === typeof options2.type ? options2.type : void 0, + fetchPriority: "string" === typeof options2.fetchPriority ? options2.fetchPriority : void 0, + referrerPolicy: "string" === typeof options2.referrerPolicy ? options2.referrerPolicy : void 0, + imageSrcSet: "string" === typeof options2.imageSrcSet ? options2.imageSrcSet : void 0, + imageSizes: "string" === typeof options2.imageSizes ? options2.imageSizes : void 0, + media: "string" === typeof options2.media ? options2.media : void 0 + }); + } + }; + reactDom_production.preloadModule = function(href, options2) { + if ("string" === typeof href) + if (options2) { + var crossOrigin = getCrossOriginStringAs(options2.as, options2.crossOrigin); + Internals.d.m(href, { + as: "string" === typeof options2.as && "script" !== options2.as ? options2.as : void 0, + crossOrigin, + integrity: "string" === typeof options2.integrity ? options2.integrity : void 0 + }); + } else Internals.d.m(href); + }; + reactDom_production.requestFormReset = function(form) { + Internals.d.r(form); + }; + reactDom_production.unstable_batchedUpdates = function(fn, a2) { + return fn(a2); + }; + reactDom_production.useFormState = function(action, initialState2, permalink) { + return ReactSharedInternals.H.useFormState(action, initialState2, permalink); + }; + reactDom_production.useFormStatus = function() { + return ReactSharedInternals.H.useHostTransitionStatus(); + }; + reactDom_production.version = "19.0.0"; + return reactDom_production; +} +var hasRequiredReactDom; +function requireReactDom() { + if (hasRequiredReactDom) return reactDom.exports; + hasRequiredReactDom = 1; + function checkDCE() { + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") { + return; + } + try { + __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE); + } catch (err) { + console.error(err); + } + } + { + checkDCE(); + reactDom.exports = requireReactDom_production(); + } + return reactDom.exports; +} var reactDomExports = requireReactDom(); const sides = ["top", "right", "bottom", "left"]; const alignments = ["start", "end"]; @@ -19516,45 +20033,36 @@ class Contact { } } } -var __defProp$b = Object.defineProperty; -var __getOwnPropDesc$a = Object.getOwnPropertyDescriptor; -var __decorateClass$a = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$a(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp$b(target, key, result); - return result; -}; -let ContactService = class { +_ContactService_decorators = [singleton(), autoInjectable()]; +class ContactService { constructor(token2) { this.token = token2; } async createContact(contact) { - var _a; + var _a2; return await axios.post("/apps/api/contact/create", { "contact": contact }, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data; }); } async updateContact(contact) { - var _a; + var _a2; return await axios.put("/apps/api/contact/update/" + contact.uuid, { "contact": contact }, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data; }); } async getContacts(searchQuery, page, shop) { - var _a; + var _a2; return await axios.get("/apps/api/contact/allbyshop/" + shop.uuid + "?term=" + searchQuery + "&page=" + page, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -19564,11 +20072,10 @@ let ContactService = class { }); }); } -}; -ContactService = __decorateClass$a([ - singleton(), - autoInjectable() -], ContactService); +} +_init2 = __decoratorStart(null); +ContactService = __decorateElement(_init2, 0, "ContactService", _ContactService_decorators, ContactService); +__runInitializers(_init2, 1, ContactService); const byteToHex = []; for (let i2 = 0; i2 < 256; ++i2) { byteToHex.push((i2 + 256).toString(16).slice(1)); @@ -19913,7 +20420,7 @@ var Subscription = function() { this._finalizers = null; } Subscription2.prototype.unsubscribe = function() { - var e_1, _a, e_2, _b; + var e_1, _a2, e_2, _b; var errors; if (!this.closed) { this.closed = true; @@ -19930,7 +20437,7 @@ var Subscription = function() { e_1 = { error: e_1_1 }; } finally { try { - if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1); + if (_parentage_1_1 && !_parentage_1_1.done && (_a2 = _parentage_1.return)) _a2.call(_parentage_1); } finally { if (e_1) throw e_1.error; } @@ -19980,7 +20487,7 @@ var Subscription = function() { } }; Subscription2.prototype.add = function(teardown) { - var _a; + var _a2; if (teardown && teardown !== this) { if (this.closed) { execFinalizer(teardown); @@ -19991,7 +20498,7 @@ var Subscription = function() { } teardown._addParent(this); } - (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown); + (this._finalizers = (_a2 = this._finalizers) !== null && _a2 !== void 0 ? _a2 : []).push(teardown); } } }; @@ -20257,7 +20764,7 @@ var Observable = function() { var _this = this; var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete); errorContext(function() { - var _a = _this, operator = _a.operator, source = _a.source; + var _a2 = _this, operator = _a2.operator, source = _a2.source; subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber)); }); return subscriber; @@ -20289,8 +20796,8 @@ var Observable = function() { }); }; Observable2.prototype._subscribe = function(subscriber) { - var _a; - return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber); + var _a2; + return (_a2 = this.source) === null || _a2 === void 0 ? void 0 : _a2.subscribe(subscriber); }; Observable2.prototype[observable] = function() { return this; @@ -20322,8 +20829,8 @@ var Observable = function() { return Observable2; }(); function getPromiseCtor(promiseCtor) { - var _a; - return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise; + var _a2; + return (_a2 = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a2 !== void 0 ? _a2 : Promise; } function isObserver(value) { return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete); @@ -20385,11 +20892,11 @@ var OperatorSubscriber = function(_super) { return _this; } OperatorSubscriber2.prototype.unsubscribe = function() { - var _a; + var _a2; if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { var closed_1 = this.closed; _super.prototype.unsubscribe.call(this); - !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); + !closed_1 && ((_a2 = this.onFinalize) === null || _a2 === void 0 ? void 0 : _a2.call(this)); } }; return OperatorSubscriber2; @@ -20426,7 +20933,7 @@ var Subject = function(_super) { Subject2.prototype.next = function(value) { var _this = this; errorContext(function() { - var e_1, _a; + var e_1, _a2; _this._throwIfClosed(); if (!_this.isStopped) { if (!_this.currentObservers) { @@ -20441,7 +20948,7 @@ var Subject = function(_super) { e_1 = { error: e_1_1 }; } finally { try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + if (_c && !_c.done && (_a2 = _b.return)) _a2.call(_b); } finally { if (e_1) throw e_1.error; } @@ -20482,8 +20989,8 @@ var Subject = function(_super) { }; Object.defineProperty(Subject2.prototype, "observed", { get: function() { - var _a; - return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0; + var _a2; + return ((_a2 = this.observers) === null || _a2 === void 0 ? void 0 : _a2.length) > 0; }, enumerable: false, configurable: true @@ -20499,7 +21006,7 @@ var Subject = function(_super) { }; Subject2.prototype._innerSubscribe = function(subscriber) { var _this = this; - var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers; + var _a2 = this, hasError = _a2.hasError, isStopped = _a2.isStopped, observers = _a2.observers; if (hasError || isStopped) { return EMPTY_SUBSCRIPTION; } @@ -20511,7 +21018,7 @@ var Subject = function(_super) { }); }; Subject2.prototype._checkFinalizedStatuses = function(subscriber) { - var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped; + var _a2 = this, hasError = _a2.hasError, thrownError = _a2.thrownError, isStopped = _a2.isStopped; if (hasError) { subscriber.error(thrownError); } else if (isStopped) { @@ -20537,20 +21044,20 @@ var AnonymousSubject = function(_super) { return _this; } AnonymousSubject2.prototype.next = function(value) { - var _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value); + var _a2, _b; + (_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.next) === null || _b === void 0 ? void 0 : _b.call(_a2, value); }; AnonymousSubject2.prototype.error = function(err) { - var _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err); + var _a2, _b; + (_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.error) === null || _b === void 0 ? void 0 : _b.call(_a2, err); }; AnonymousSubject2.prototype.complete = function() { - var _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a); + var _a2, _b; + (_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.complete) === null || _b === void 0 ? void 0 : _b.call(_a2); }; AnonymousSubject2.prototype._subscribe = function(subscriber) { - var _a, _b; - return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION; + var _a2, _b; + return (_b = (_a2 = this.source) === null || _a2 === void 0 ? void 0 : _a2.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION; }; return AnonymousSubject2; }(Subject); @@ -20574,7 +21081,7 @@ var BehaviorSubject = function(_super) { return subscription; }; BehaviorSubject2.prototype.getValue = function() { - var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value; + var _a2 = this, hasError = _a2.hasError, thrownError = _a2.thrownError, _value = _a2._value; if (hasError) { throw thrownError; } @@ -20625,7 +21132,7 @@ var AsyncAction = function(_super) { return _this; } AsyncAction2.prototype.schedule = function(state, delay) { - var _a; + var _a2; if (delay === void 0) { delay = 0; } @@ -20640,7 +21147,7 @@ var AsyncAction = function(_super) { } this.pending = true; this.delay = delay; - this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler2, this.id, delay); + this.id = (_a2 = this.id) !== null && _a2 !== void 0 ? _a2 : this.requestAsyncId(scheduler2, this.id, delay); return this; }; AsyncAction2.prototype.requestAsyncId = function(scheduler2, _id, delay) { @@ -20689,7 +21196,7 @@ var AsyncAction = function(_super) { }; AsyncAction2.prototype.unsubscribe = function() { if (!this.closed) { - var _a = this, id = _a.id, scheduler2 = _a.scheduler; + var _a2 = this, id = _a2.id, scheduler2 = _a2.scheduler; var actions = scheduler2.actions; this.work = this.state = this.scheduler = null; this.pending = false; @@ -20797,17 +21304,8 @@ function debounceTime(dueTime, scheduler2) { })); }); } -var __defProp$a = Object.defineProperty; -var __getOwnPropDesc$9 = Object.getOwnPropertyDescriptor; -var __decorateClass$9 = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$9(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp$a(target, key, result); - return result; -}; -let OrderState = class { +_OrderState_decorators = [singleton()]; +class OrderState { constructor() { __publicField(this, "orders"); __publicField(this, "currentOrder"); @@ -20825,10 +21323,10 @@ let OrderState = class { updateOrder(order) { this.orders.push(order); } -}; -OrderState = __decorateClass$9([ - singleton() -], OrderState); +} +_init3 = __decoratorStart(null); +OrderState = __decorateElement(_init3, 0, "OrderState", _OrderState_decorators, OrderState); +__runInitializers(_init3, 1, OrderState); var n$1, l$1, u$1, i$2, r$1, o$1, e, f$2, c$2, s$1, a$2, h$1, p$1 = {}, v$2 = [], y$2 = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i, d$1 = Array.isArray; function w$2(n2, l2) { for (var u2 in l2) n2[u2] = l2[u2]; @@ -21160,9 +21658,6 @@ function IconBase$1(props) { function RiDeleteBin2Line(props) { return GenIcon$1({ tag: "svg", attr: { viewBox: "0 0 24 24", fill: "currentColor" }, child: [{ tag: "path", attr: { d: "M17 6H22V8H20V21C20 21.5523 19.5523 22 19 22H5C4.44772 22 4 21.5523 4 21V8H2V6H7V3C7 2.44772 7.44772 2 8 2H16C16.5523 2 17 2.44772 17 3V6ZM18 8H6V20H18V8ZM13.4142 13.9997L15.182 15.7675L13.7678 17.1817L12 15.4139L10.2322 17.1817L8.81802 15.7675L10.5858 13.9997L8.81802 12.232L10.2322 10.8178L12 12.5855L13.7678 10.8178L15.182 12.232L13.4142 13.9997ZM9 4V6H15V4H9Z" } }] })(props); } -function RiPrinterFill(props) { - return GenIcon$1({ tag: "svg", attr: { viewBox: "0 0 24 24", fill: "currentColor" }, child: [{ tag: "path", attr: { d: "M7 17H17V22H7V17ZM19 20V15H5V20H3C2.44772 20 2 19.5523 2 19V9C2 8.44772 2.44772 8 3 8H21C21.5523 8 22 8.44772 22 9V19C22 19.5523 21.5523 20 21 20H19ZM5 10V12H8V10H5ZM7 2H17C17.5523 2 18 2.44772 18 3V6H6V3C6 2.44772 6.44772 2 7 2Z" } }] })(props); -} function RiSaveFill(props) { return GenIcon$1({ tag: "svg", attr: { viewBox: "0 0 24 24", fill: "currentColor" }, child: [{ tag: "path", attr: { d: "M18 21V13H6V21H4C3.44772 21 3 20.5523 3 20V4C3 3.44772 3.44772 3 4 3H17L21 7V20C21 20.5523 20.5523 21 20 21H18ZM16 21H8V15H16V21Z" } }] })(props); } @@ -21371,7 +21866,7 @@ function createClassGroupUtils(config2) { }; } function getGroupRecursive(classParts, classPartObject) { - var _a; + var _a2; if (classParts.length === 0) { return classPartObject.classGroupId; } @@ -21385,9 +21880,9 @@ function getGroupRecursive(classParts, classPartObject) { return void 0; } const classRest = classParts.join(CLASS_PART_SEPARATOR); - return (_a = classPartObject.validators.find(({ + return (_a2 = classPartObject.validators.find(({ validator: validator2 - }) => validator2(classRest))) == null ? void 0 : _a.classGroupId; + }) => validator2(classRest))) == null ? void 0 : _a2.classGroupId; } const arbitraryPropertyRegex = /^\[(.+)\]$/; function getGroupIdForArbitraryProperty(className) { @@ -25965,8 +26460,8 @@ function requireDebounce() { } var debounceExports = /* @__PURE__ */ requireDebounce(); const debounce = /* @__PURE__ */ getDefaultExportFromCjs(debounceExports); -var __defProp$9 = Object.defineProperty; -var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __defProp2 = Object.defineProperty; +var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== "symbol" ? key + "" : key, value); const SCROLL_END_DEBOUNCE = 300; const LEFT_BUTTON = 0; @@ -25990,8 +26485,8 @@ class ScrollContainer extends reactExports.PureComponent { } }); __publicField2(this, "onScroll", () => { - const container = this.container.current; - if (container.scrollLeft !== this.scrollLeft || container.scrollTop !== this.scrollTop) { + const container2 = this.container.current; + if (container2.scrollLeft !== this.scrollLeft || container2.scrollTop !== this.scrollTop) { this.scrolling = true; this.processScroll(); this.onEndScroll(); @@ -26037,10 +26532,10 @@ class ScrollContainer extends reactExports.PureComponent { } }); __publicField2(this, "onMouseDown", (e2) => { - var _a, _b; + var _a2, _b; if (this.isDraggable(e2.target) && this.isScrollable()) { this.internal = true; - if (((_b = (_a = this.props) == null ? void 0 : _a.buttons) == null ? void 0 : _b.indexOf(e2.button)) !== -1) { + if (((_b = (_a2 = this.props) == null ? void 0 : _a2.buttons) == null ? void 0 : _b.indexOf(e2.button)) !== -1) { this.processClick(e2.clientX, e2.clientY); e2.preventDefault(); if (this.props.stopPropagation) { @@ -26086,15 +26581,15 @@ class ScrollContainer extends reactExports.PureComponent { } componentDidMount() { const { nativeMobileScroll } = this.props; - const container = this.container.current; + const container2 = this.container.current; window.addEventListener("mouseup", this.onMouseUp); window.addEventListener("mousemove", this.onMouseMove); window.addEventListener("touchmove", this.onTouchMove, { passive: false }); window.addEventListener("touchend", this.onTouchEnd); - container.addEventListener("touchstart", this.onTouchStart, { + container2.addEventListener("touchstart", this.onTouchStart, { passive: false }); - container.addEventListener("mousedown", this.onMouseDown, { + container2.addEventListener("mousedown", this.onMouseDown, { passive: false }); if (nativeMobileScroll) { @@ -26126,13 +26621,13 @@ class ScrollContainer extends reactExports.PureComponent { } } isScrollable() { - const container = this.container.current; - return container && (container.scrollWidth > container.clientWidth || container.scrollHeight > container.clientHeight); + const container2 = this.container.current; + return container2 && (container2.scrollWidth > container2.clientWidth || container2.scrollHeight > container2.clientHeight); } processClick(clientX, clientY) { - const container = this.container.current; - this.scrollLeft = container == null ? void 0 : container.scrollLeft; - this.scrollTop = container == null ? void 0 : container.scrollTop; + const container2 = this.container.current; + this.scrollLeft = container2 == null ? void 0 : container2.scrollLeft; + this.scrollTop = container2 == null ? void 0 : container2.scrollTop; this.clientX = clientX; this.clientY = clientY; this.pressed = true; @@ -26166,7 +26661,7 @@ class ScrollContainer extends reactExports.PureComponent { // Process non-native scroll processMove(newClientX, newClientY) { const { horizontal, vertical, activationDistance, onScroll } = this.props; - const container = this.container.current; + const container2 = this.container.current; if (!this.started) { if (horizontal && Math.abs(newClientX - this.clientX) > activationDistance || vertical && Math.abs(newClientY - this.clientY) > activationDistance) { this.clientX = newClientX; @@ -26175,24 +26670,24 @@ class ScrollContainer extends reactExports.PureComponent { } } else { if (horizontal) { - container.scrollLeft -= newClientX - this.clientX; + container2.scrollLeft -= newClientX - this.clientX; } if (vertical) { - container.scrollTop -= newClientY - this.clientY; + container2.scrollTop -= newClientY - this.clientY; } if (onScroll) { onScroll({ external: !this.internal }); } this.clientX = newClientX; this.clientY = newClientY; - this.scrollLeft = container.scrollLeft; - this.scrollTop = container.scrollTop; + this.scrollLeft = container2.scrollLeft; + this.scrollTop = container2.scrollTop; } } processEnd() { const { onEndScroll } = this.props; - const container = this.container.current; - if (container && onEndScroll) { + const container2 = this.container.current; + if (container2 && onEndScroll) { onEndScroll({ external: !this.internal }); @@ -26660,18 +27155,18 @@ var sortByOrder = function sortByOrder2(candidates) { return acc; }, []).concat(regularTabbables); }; -var tabbable = function tabbable2(container, options2) { +var tabbable = function tabbable2(container2, options2) { options2 = options2 || {}; var candidates; if (options2.getShadowRoot) { - candidates = getCandidatesIteratively([container], options2.includeContainer, { + candidates = getCandidatesIteratively([container2], options2.includeContainer, { filter: isNodeMatchingSelectorTabbable.bind(null, options2), flatten: false, getShadowRoot: options2.getShadowRoot, shadowRootFilter: isValidShadowRootTabbable }); } else { - candidates = getCandidates(container, options2.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options2)); + candidates = getCandidates(container2, options2.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options2)); } return sortByOrder(candidates); }; @@ -27852,12 +28347,12 @@ const getTabbableOptions = () => ({ typeof ResizeObserver === "function" && ResizeObserver.toString().includes("[native code]") ? "full" : "none" ) }); -function getTabbableIn(container, direction) { - const allTabbable = tabbable(container, getTabbableOptions()); +function getTabbableIn(container2, direction) { + const allTabbable = tabbable(container2, getTabbableOptions()); if (direction === "prev") { allTabbable.reverse(); } - const activeIndex = allTabbable.indexOf(activeElement(getDocument(container))); + const activeIndex = allTabbable.indexOf(activeElement(getDocument(container2))); const nextTabbableElements = allTabbable.slice(activeIndex + 1); return nextTabbableElements[0]; } @@ -27867,20 +28362,20 @@ function getNextTabbable() { function getPreviousTabbable() { return getTabbableIn(document.body, "prev"); } -function isOutsideEvent(event, container) { - const containerElement = container || event.currentTarget; +function isOutsideEvent(event, container2) { + const containerElement = container2 || event.currentTarget; const relatedTarget = event.relatedTarget; return !relatedTarget || !contains$1(containerElement, relatedTarget); } -function disableFocusInside(container) { - const tabbableElements = tabbable(container, getTabbableOptions()); +function disableFocusInside(container2) { + const tabbableElements = tabbable(container2, getTabbableOptions()); tabbableElements.forEach((element) => { element.dataset.tabindex = element.getAttribute("tabindex") || ""; element.setAttribute("tabindex", "-1"); }); } -function enableFocusInside(container) { - const elements = container.querySelectorAll("[data-tabindex]"); +function enableFocusInside(container2) { + const elements = container2.querySelectorAll("[data-tabindex]"); elements.forEach((element) => { const tabindex = element.dataset.tabindex; delete element.dataset.tabindex; @@ -27992,20 +28487,20 @@ function useFloatingPortalNode(props) { index(() => { if (!uniqueId) return; if (portalNodeRef.current) return; - let container = root || (portalContext == null ? void 0 : portalContext.portalNode); - if (container && !isElement(container)) container = container.current; - container = container || document.body; + let container2 = root || (portalContext == null ? void 0 : portalContext.portalNode); + if (container2 && !isElement(container2)) container2 = container2.current; + container2 = container2 || document.body; let idWrapper = null; if (id) { idWrapper = document.createElement("div"); idWrapper.id = id; - container.appendChild(idWrapper); + container2.appendChild(idWrapper); } const subRoot = document.createElement("div"); subRoot.id = uniqueId; subRoot.setAttribute(attr, ""); - container = idWrapper || container; - container.appendChild(subRoot); + container2 = idWrapper || container2; + container2.appendChild(subRoot); portalNodeRef.current = subRoot; setPortalNode(subRoot); }, [id, root, uniqueId, portalContext]); @@ -28164,14 +28659,14 @@ function FloatingFocusManager(props) { const isInsidePortal = portalContext != null; const firstElementChild = floating == null ? void 0 : floating.firstElementChild; const floatingFocusNode = (firstElementChild == null ? void 0 : firstElementChild.id) === floatingId ? firstElementChild : floating; - const getTabbableContent = useEffectEvent(function(container) { - if (container === void 0) { - container = floatingFocusNode; + const getTabbableContent = useEffectEvent(function(container2) { + if (container2 === void 0) { + container2 = floatingFocusNode; } - return container ? tabbable(container, getTabbableOptions()) : []; + return container2 ? tabbable(container2, getTabbableOptions()) : []; }); - const getTabbableElements = useEffectEvent((container) => { - const content = getTabbableContent(container); + const getTabbableElements = useEffectEvent((container2) => { + const content = getTabbableContent(container2); return orderRef.current.map((type2) => { if (domReference && type2 === "reference") { return domReference; @@ -30257,9 +30752,9 @@ function FaQuoteRight(props) { return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 448 512" }, "child": [{ "tag": "path", "attr": { "d": "M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z" }, "child": [] }] })(props); } const copyToClipboard = (valueToCopy, setIsJustCopied) => { - var _a; + var _a2; setIsJustCopied(true); - (_a = navigator == null ? void 0 : navigator.clipboard) == null ? void 0 : _a.writeText(valueToCopy).then(() => { + (_a2 = navigator == null ? void 0 : navigator.clipboard) == null ? void 0 : _a2.writeText(valueToCopy).then(() => { console.log("Copy Successfull"); }).catch((error) => { console.error("Failed to Copy text: ", error); @@ -30692,8 +31187,8 @@ const DatepickerRender = ({ }; reactExports.useImperativeHandle(ref2, () => ({ focus() { - var _a; - (_a = inputRef.current) == null ? void 0 : _a.focus(); + var _a2; + (_a2 = inputRef.current) == null ? void 0 : _a2.focus(); }, clear() { clearDate(); @@ -30752,8 +31247,8 @@ const DatepickerRender = ({ }; reactExports.useEffect(() => { const handleClickOutside = (event) => { - var _a, _b; - const clickedInsideDatepicker = (_a = datepickerRef == null ? void 0 : datepickerRef.current) == null ? void 0 : _a.contains(event.target); + var _a2, _b; + const clickedInsideDatepicker = (_a2 = datepickerRef == null ? void 0 : datepickerRef.current) == null ? void 0 : _a2.contains(event.target); const clickedInsideInput = (_b = inputRef == null ? void 0 : inputRef.current) == null ? void 0 : _b.contains(event.target); if (!clickedInsideDatepicker && !clickedInsideInput) { setIsOpen(false); @@ -31348,7 +31843,7 @@ const FooterComponent = ({ bgDark = false, children, className, - container = false, + container: container2 = false, theme: customTheme = {}, ...props }) => { @@ -31357,7 +31852,7 @@ const FooterComponent = ({ "footer", { "data-testid": "flowbite-footer", - className: twMerge(theme2.root.base, bgDark && theme2.root.bgDark, container && theme2.root.container, className), + className: twMerge(theme2.root.base, bgDark && theme2.root.bgDark, container2 && theme2.root.container, className), ...props, children } @@ -31697,13 +32192,13 @@ const MegaMenuDropdown = ({ const id = reactExports.useId(); const ref2 = reactExports.useRef(null); reactExports.useEffect(() => { - var _a; + var _a2; const findToggle = function() { - var _a2; - const megaMenu = (_a2 = ref2.current) == null ? void 0 : _a2.closest("nav"); + var _a3; + const megaMenu = (_a3 = ref2.current) == null ? void 0 : _a3.closest("nav"); return megaMenu == null ? void 0 : megaMenu.querySelector('[aria-haspopup="menu"]'); }; - setLabelledBy((_a = findToggle()) == null ? void 0 : _a.id); + setLabelledBy((_a2 = findToggle()) == null ? void 0 : _a2.id); }, []); return /* @__PURE__ */ jsxRuntimeExports.jsx( "div", @@ -31731,13 +32226,13 @@ const MegaMenuDropdownToggle = ({ const [isExpanded, setExpanded] = reactExports.useState(void 0); const theme2 = mergeDeep(getTheme2().megaMenu.dropdownToggle, customTheme); const findDropdown = function() { - var _a; - const megaMenu = (_a = ref2.current) == null ? void 0 : _a.closest("nav"); + var _a2; + const megaMenu = (_a2 = ref2.current) == null ? void 0 : _a2.closest("nav"); return megaMenu == null ? void 0 : megaMenu.querySelector('[role="menu"]'); }; const onClick = function() { - var _a; - (_a = findDropdown()) == null ? void 0 : _a.classList.toggle("hidden"); + var _a2; + (_a2 = findDropdown()) == null ? void 0 : _a2.classList.toggle("hidden"); setExpanded(!isExpanded); }; reactExports.useEffect(() => { @@ -32234,7 +32729,7 @@ const SidebarItem = reactExports.forwardRef( theme: customTheme = {}, ...props }, ref2) => { - var _a, _b, _c, _d; + var _a2, _b, _c, _d; const id = reactExports.useId(); const { theme: rootTheme, isCollapsed } = useSidebarContext(); const { isInsideCollapse } = useSidebarItemContext(); @@ -32247,7 +32742,7 @@ const SidebarItem = reactExports.forwardRef( className: twMerge( theme2.base, isActive && theme2.active, - !isCollapsed && isInsideCollapse && ((_a = theme2.collapsed) == null ? void 0 : _a.insideCollapse), + !isCollapsed && isInsideCollapse && ((_a2 = theme2.collapsed) == null ? void 0 : _a2.insideCollapse), className ), ...props, @@ -32477,8 +32972,8 @@ const TabsComponent = reactExports.forwardRef( const tabItemStyle = theme2.tablist.tabitem.variant[variant]; const tabItemContainerStyle = theme2.tabitemcontainer.variant[variant]; reactExports.useEffect(() => { - var _a; - (_a = tabRefs.current[focusedTab]) == null ? void 0 : _a.focus(); + var _a2; + (_a2 = tabRefs.current[focusedTab]) == null ? void 0 : _a2.focus(); }, [focusedTab]); reactExports.useImperativeHandle(ref2, () => ({ setActiveTab: setActiveTabWithCallback @@ -36284,7 +36779,7 @@ function requireTimes() { var timesExports = requireTimes(); const times = /* @__PURE__ */ getDefaultExportFromCjs(timesExports); function getOptionMatchingSimpleDiscriminator(formData, options2, discriminatorField) { - var _a; + var _a2; if (formData && discriminatorField) { const value = _get(formData, discriminatorField); if (value === void 0) { @@ -36299,7 +36794,7 @@ function getOptionMatchingSimpleDiscriminator(formData, options2, discriminatorF if (discriminator.const === value) { return i2; } - if ((_a = discriminator.enum) === null || _a === void 0 ? void 0 : _a.includes(value)) { + if ((_a2 = discriminator.enum) === null || _a2 === void 0 ? void 0 : _a2.includes(value)) { return i2; } } @@ -38451,7 +38946,7 @@ function retrieveSchemaInternal(validator2, schema, rootSchema, rawFormData, exp } const resolvedSchemas = resolveSchema(validator2, schema, rootSchema, expandAllBranches, recurseList, rawFormData, experimental_customMergeAllOf); return resolvedSchemas.flatMap((s2) => { - var _a; + var _a2; let resolvedSchema = s2; if (IF_KEY in resolvedSchema) { return resolveCondition(validator2, resolvedSchema, rootSchema, expandAllBranches, recurseList, rawFormData, experimental_customMergeAllOf); @@ -38464,7 +38959,7 @@ function retrieveSchemaInternal(validator2, schema, rootSchema, rawFormData, exp try { const withContainsSchemas = []; const withoutContainsSchemas = []; - (_a = resolvedSchema.allOf) === null || _a === void 0 ? void 0 : _a.forEach((s3) => { + (_a2 = resolvedSchema.allOf) === null || _a2 === void 0 ? void 0 : _a2.forEach((s3) => { if (typeof s3 === "object" && s3.contains) { withContainsSchemas.push(s3); } else { @@ -38883,7 +39378,7 @@ function getObjectDefaults(validator2, rawSchema, { rawFormData, rootSchema = {} const retrievedSchema = (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.allOf) === "populateDefaults" && ALL_OF_KEY in schema ? retrieveSchema(validator2, schema, rootSchema, formData, experimental_customMergeAllOf) : schema; const parentConst = retrievedSchema[CONST_KEY]; const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce((acc, key) => { - var _a; + var _a2; const propertySchema = _get(retrievedSchema, [PROPERTIES_KEY, key]); const hasParentConst = isObject$1(parentConst) && parentConst[key] !== void 0; const hasConst = (isObject$1(propertySchema) && CONST_KEY in propertySchema || hasParentConst) && (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.constAsDefaults) !== "never"; @@ -38895,7 +39390,7 @@ function getObjectDefaults(validator2, rawSchema, { rawFormData, rootSchema = {} includeUndefinedValues: includeUndefinedValues === true, parentDefaults: _get(defaults2, [key]), rawFormData: _get(formData, [key]), - required: (_a = retrievedSchema.required) === null || _a === void 0 ? void 0 : _a.includes(key) + required: (_a2 = retrievedSchema.required) === null || _a2 === void 0 ? void 0 : _a2.includes(key) }); maybeAddDefaultToObject(acc, key, computedDefault, includeUndefinedValues, required2, retrievedSchema.required, experimental_defaultFormStateBehavior, hasConst); return acc; @@ -38912,7 +39407,7 @@ function getObjectDefaults(validator2, rawSchema, { rawFormData, rootSchema = {} formDataRequired.push(key); }); keys.forEach((key) => { - var _a; + var _a2; const computedDefault = computeDefaults(validator2, additionalPropertiesSchema, { rootSchema, _recurseList, @@ -38921,7 +39416,7 @@ function getObjectDefaults(validator2, rawSchema, { rawFormData, rootSchema = {} includeUndefinedValues: includeUndefinedValues === true, parentDefaults: _get(defaults2, [key]), rawFormData: _get(formData, [key]), - required: (_a = retrievedSchema.required) === null || _a === void 0 ? void 0 : _a.includes(key) + required: (_a2 = retrievedSchema.required) === null || _a2 === void 0 ? void 0 : _a2.includes(key) }); maybeAddDefaultToObject(objectDefaults, key, computedDefault, includeUndefinedValues, required2, formDataRequired); }); @@ -38930,9 +39425,9 @@ function getObjectDefaults(validator2, rawSchema, { rawFormData, rootSchema = {} } } function getArrayDefaults(validator2, rawSchema, { rawFormData, rootSchema = {}, _recurseList = [], experimental_defaultFormStateBehavior = void 0, experimental_customMergeAllOf = void 0, required: required2 } = {}, defaults2) { - var _a, _b; + var _a2, _b; const schema = rawSchema; - const arrayMinItemsStateBehavior = (_a = experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.arrayMinItems) !== null && _a !== void 0 ? _a : {}; + const arrayMinItemsStateBehavior = (_a2 = experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.arrayMinItems) !== null && _a2 !== void 0 ? _a2 : {}; const { populate: arrayMinItemsPopulate, mergeExtraDefaults: arrayMergeExtraDefaults } = arrayMinItemsStateBehavior; const neverPopulate = arrayMinItemsPopulate === "never"; const ignoreMinItemsFlagSet = arrayMinItemsPopulate === "requiredOnly"; @@ -39468,7 +39963,7 @@ function createSchemaUtils(validator2, rootSchema, experimental_defaultFormState return new SchemaUtils(validator2, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf); } function dataURItoBlob(dataURILike) { - var _a; + var _a2; if (dataURILike.indexOf("data:") === -1) { throw new Error("File is invalid: URI must be a dataURI"); } @@ -39483,7 +39978,7 @@ function dataURItoBlob(dataURILike) { const name = decodeURI( // parse the parameters into key-value pairs, find a key, and extract a value // if no key is found, then the name is unknown - ((_a = mediaparams.map((param) => param.split("=")).find(([key]) => key === "name")) === null || _a === void 0 ? void 0 : _a[1]) || "unknown" + ((_a2 = mediaparams.map((param) => param.split("=")).find(([key]) => key === "name")) === null || _a2 === void 0 ? void 0 : _a2[1]) || "unknown" ); try { const binary = atob(base64); @@ -46478,11 +46973,11 @@ class AJV6Validator { * @param rootSchema - The root schema used to provide $ref resolutions */ handleSchemaUpdate(rootSchema) { - var _a; + var _a2; const rootSchemaId = ROOT_SCHEMA_PREFIX; if (this.ajv.getSchema(ROOT_SCHEMA_PREFIX) === void 0) { this.ajv.addSchema(rootSchema, ROOT_SCHEMA_PREFIX); - } else if (!deepEquals(rootSchema, (_a = this.ajv.getSchema(ROOT_SCHEMA_PREFIX)) === null || _a === void 0 ? void 0 : _a.schema)) { + } else if (!deepEquals(rootSchema, (_a2 = this.ajv.getSchema(ROOT_SCHEMA_PREFIX)) === null || _a2 === void 0 ? void 0 : _a2.schema)) { this.ajv.removeSchema(rootSchemaId); this.ajv.addSchema(rootSchema, rootSchemaId); } @@ -46918,38 +47413,38 @@ class ArrayField extends reactExports.Component { /** Renders an array using the custom widget provided by the user in the `uiSchema` */ renderCustomWidget() { - var _a; + var _a2; const { schema, idSchema, uiSchema, disabled = false, readonly = false, autofocus = false, required: required2 = false, hideError, placeholder, onBlur, onFocus: onFocus2, formData: items2 = [], registry, rawErrors, name } = this.props; const { widgets: widgets2, formContext, globalUiOptions, schemaUtils } = registry; const { widget, title: uiTitle, ...options2 } = getUiOptions(uiSchema, globalUiOptions); const Widget = getWidget(schema, widget, widgets2); - const label = (_a = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a !== void 0 ? _a : name; + const label = (_a2 = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a2 !== void 0 ? _a2 : name; const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions); return jsxRuntimeExports.jsx(Widget, { id: idSchema.$id, name, multiple: true, onChange: this.onSelectChange, onBlur, onFocus: onFocus2, options: options2, schema, uiSchema, registry, value: items2, disabled, readonly, hideError, required: required2, label, hideLabel: !displayLabel, placeholder, formContext, autofocus, rawErrors }); } /** Renders an array as a set of checkboxes */ renderMultiSelect() { - var _a; + var _a2; const { schema, idSchema, uiSchema, formData: items2 = [], disabled = false, readonly = false, autofocus = false, required: required2 = false, placeholder, onBlur, onFocus: onFocus2, registry, rawErrors, name } = this.props; const { widgets: widgets2, schemaUtils, formContext, globalUiOptions } = registry; const itemsSchema = schemaUtils.retrieveSchema(schema.items, items2); const enumOptions = optionsList(itemsSchema, uiSchema); const { widget = "select", title: uiTitle, ...options2 } = getUiOptions(uiSchema, globalUiOptions); const Widget = getWidget(schema, widget, widgets2); - const label = (_a = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a !== void 0 ? _a : name; + const label = (_a2 = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a2 !== void 0 ? _a2 : name; const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions); return jsxRuntimeExports.jsx(Widget, { id: idSchema.$id, name, multiple: true, onChange: this.onSelectChange, onBlur, onFocus: onFocus2, options: { ...options2, enumOptions }, schema, uiSchema, registry, value: items2, disabled, readonly, required: required2, label, hideLabel: !displayLabel, placeholder, formContext, autofocus, rawErrors }); } /** Renders an array of files using the `FileWidget` */ renderFiles() { - var _a; + var _a2; const { schema, uiSchema, idSchema, name, disabled = false, readonly = false, autofocus = false, required: required2 = false, onBlur, onFocus: onFocus2, registry, formData: items2 = [], rawErrors } = this.props; const { widgets: widgets2, formContext, globalUiOptions, schemaUtils } = registry; const { widget = "files", title: uiTitle, ...options2 } = getUiOptions(uiSchema, globalUiOptions); const Widget = getWidget(schema, widget, widgets2); - const label = (_a = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a !== void 0 ? _a : name; + const label = (_a2 = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a2 !== void 0 ? _a2 : name; const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions); return jsxRuntimeExports.jsx(Widget, { options: options2, id: idSchema.$id, name, multiple: true, onChange: this.onSelectChange, onBlur, onFocus: onFocus2, schema, uiSchema, value: items2, disabled, readonly, required: required2, registry, formContext, autofocus, rawErrors, label, hideLabel: !displayLabel }); } @@ -47064,7 +47559,7 @@ class ArrayField extends reactExports.Component { } } function BooleanField(props) { - var _a, _b, _c; + var _a2, _b, _c; const { schema, name, uiSchema, idSchema, formData, registry, required: required2, disabled, readonly, hideError, autofocus, title: title2, onChange: onChange2, onFocus: onFocus2, onBlur, rawErrors } = props; const { title: schemaTitle } = schema; const { widgets: widgets2, formContext, translateString, globalUiOptions } = registry; @@ -47079,7 +47574,7 @@ function BooleanField(props) { const yes = translateString(TranslatableString.YesLabel); const no = translateString(TranslatableString.NoLabel); let enumOptions; - const label = (_b = (_a = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schemaTitle) !== null && _a !== void 0 ? _a : title2) !== null && _b !== void 0 ? _b : name; + const label = (_b = (_a2 = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schemaTitle) !== null && _a2 !== void 0 ? _a2 : title2) !== null && _b !== void 0 ? _b : name; if (Array.isArray(schema.oneOf)) { enumOptions = optionsList({ oneOf: schema.oneOf.map((option) => { @@ -47634,7 +48129,7 @@ class ObjectField extends reactExports.Component { }; }; this.handleAddClick = (schema) => () => { - var _a; + var _a2; if (!schema.additionalProperties) { return; } @@ -47660,7 +48155,7 @@ class ObjectField extends reactExports.Component { } } const newKey = this.getAvailableKey("newKey", newFormData); - const newValue = (_a = constValue !== null && constValue !== void 0 ? constValue : defaultValue) !== null && _a !== void 0 ? _a : this.getDefaultValue(type2); + const newValue = (_a2 = constValue !== null && constValue !== void 0 ? constValue : defaultValue) !== null && _a2 !== void 0 ? _a2 : this.getDefaultValue(type2); set(newFormData, newKey, newValue); onChange2(newFormData); }; @@ -47699,14 +48194,14 @@ class ObjectField extends reactExports.Component { /** Renders the `ObjectField` from the given props */ render() { - var _a, _b, _c, _d; + var _a2, _b, _c, _d; const { schema: rawSchema, uiSchema = {}, formData, errorSchema, idSchema, name, required: required2 = false, disabled, readonly, hideError, idPrefix, idSeparator, onBlur, onFocus: onFocus2, registry, title: title2 } = this.props; const { fields: fields2, formContext, schemaUtils, translateString, globalUiOptions } = registry; const { SchemaField: SchemaField2 } = fields2; const schema = schemaUtils.retrieveSchema(rawSchema, formData); const uiOptions = getUiOptions(uiSchema, globalUiOptions); const { properties: schemaProperties = {} } = schema; - const templateTitle = (_c = (_b = (_a = uiOptions.title) !== null && _a !== void 0 ? _a : schema.title) !== null && _b !== void 0 ? _b : title2) !== null && _c !== void 0 ? _c : name; + const templateTitle = (_c = (_b = (_a2 = uiOptions.title) !== null && _a2 !== void 0 ? _a2 : schema.title) !== null && _b !== void 0 ? _b : title2) !== null && _c !== void 0 ? _c : name; const description2 = (_d = uiOptions.description) !== null && _d !== void 0 ? _d : schema.description; let orderedProperties; try { @@ -47782,7 +48277,7 @@ function getFieldComponent(schema, uiOptions, idSchema, registry) { }; } function SchemaFieldRender(props) { - var _a, _b, _c; + var _a2, _b, _c; const { schema: _schema, idSchema: _idSchema, uiSchema, formData, errorSchema, idPrefix, idSeparator, name, onChange: onChange2, onKeyChange, onDropPropertyClick, required: required2, registry, wasPropertyKeyModified = false } = props; const { formContext, schemaUtils, globalUiOptions } = registry; const uiOptions = getUiOptions(uiSchema, globalUiOptions); @@ -47798,7 +48293,7 @@ function SchemaFieldRender(props) { return onChange2(formData2, newErrorSchema, theId); }, [fieldId, onChange2]); const FieldComponent = getFieldComponent(schema, uiOptions, idSchema, registry); - const disabled = Boolean((_a = uiOptions.disabled) !== null && _a !== void 0 ? _a : props.disabled); + const disabled = Boolean((_a2 = uiOptions.disabled) !== null && _a2 !== void 0 ? _a2 : props.disabled); const readonly = Boolean((_b = uiOptions.readonly) !== null && _b !== void 0 ? _b : props.readonly || props.schema.readOnly || schema.readOnly); const uiSchemaHideError = uiOptions.hideError; const hideError = uiSchemaHideError === void 0 ? props.hideError : Boolean(uiSchemaHideError); @@ -47876,7 +48371,7 @@ class SchemaField extends reactExports.Component { } } function StringField(props) { - var _a; + var _a2; const { schema, name, uiSchema, idSchema, formData, required: required2, disabled = false, readonly = false, autofocus = false, onChange: onChange2, onBlur, onFocus: onFocus2, registry, rawErrors, hideError } = props; const { title: title2, format: format2 } = schema; const { widgets: widgets2, formContext, schemaUtils, globalUiOptions } = registry; @@ -47887,7 +48382,7 @@ function StringField(props) { } const { widget = defaultWidget, placeholder = "", title: uiTitle, ...options2 } = getUiOptions(uiSchema); const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions); - const label = (_a = uiTitle !== null && uiTitle !== void 0 ? uiTitle : title2) !== null && _a !== void 0 ? _a : name; + const label = (_a2 = uiTitle !== null && uiTitle !== void 0 ? uiTitle : title2) !== null && _a2 !== void 0 ? _a2 : name; const Widget = getWidget(schema, widget, widgets2); return jsxRuntimeExports.jsx(Widget, { options: { ...options2, enumOptions }, schema, uiSchema, id: idSchema.$id, name, label, hideLabel: !displayLabel, hideError, value: formData, onChange: onChange2, onBlur, onFocus: onFocus2, required: required2, disabled, readonly, formContext, autofocus, registry, placeholder, rawErrors }); } @@ -48206,13 +48701,13 @@ function AltDateTimeWidget({ time = true, ...props }) { return jsxRuntimeExports.jsx(AltDateWidget2, { time, ...props }); } function CheckboxWidget({ schema, uiSchema, options: options2, id, value, disabled, readonly, label, hideLabel, autofocus = false, onBlur, onFocus: onFocus2, onChange: onChange2, registry }) { - var _a; + var _a2; const DescriptionFieldTemplate = getTemplate("DescriptionFieldTemplate", registry, options2); const required2 = schemaRequiresTrueValue(schema); const handleChange = reactExports.useCallback((event) => onChange2(event.target.checked), [onChange2]); const handleBlur = reactExports.useCallback((event) => onBlur(id, event.target.checked), [onBlur, id]); const handleFocus = reactExports.useCallback((event) => onFocus2(id, event.target.checked), [onFocus2, id]); - const description2 = (_a = options2.description) !== null && _a !== void 0 ? _a : schema.description; + const description2 = (_a2 = options2.description) !== null && _a2 !== void 0 ? _a2 : schema.description; return jsxRuntimeExports.jsxs("div", { className: `checkbox ${disabled || readonly ? "disabled" : ""}`, children: [!hideLabel && !!description2 && jsxRuntimeExports.jsx(DescriptionFieldTemplate, { id: descriptionId(id), description: description2, schema, uiSchema, registry }), jsxRuntimeExports.jsxs("label", { children: [jsxRuntimeExports.jsx("input", { type: "checkbox", id, name: id, checked: typeof value === "undefined" ? false : value, required: required2, disabled: disabled || readonly, autoFocus: autofocus, onChange: handleChange, onBlur: handleBlur, onFocus: handleFocus, "aria-describedby": ariaDescribedByIds(id) }), labelValue(jsxRuntimeExports.jsx("span", { children: label }), hideLabel)] })] }); } function CheckboxesWidget({ id, disabled, options: { inline: inline2 = false, enumOptions, enumDisabled, emptyValue }, value, autofocus = false, readonly, onChange: onChange2, onBlur, onFocus: onFocus2 }) { @@ -48267,8 +48762,8 @@ function processFile(file) { const reader = new window.FileReader(); reader.onerror = reject; reader.onload = (event) => { - var _a; - if (typeof ((_a = event.target) === null || _a === void 0 ? void 0 : _a.result) === "string") { + var _a2; + if (typeof ((_a2 = event.target) === null || _a2 === void 0 ? void 0 : _a2.result) === "string") { resolve({ dataURL: addNameToDataURL(event.target.result, name), name, @@ -48762,7 +49257,7 @@ let Form$1 = class Form extends reactExports.Component { * @returns - The new state for the `Form` */ getStateFromProps(props, inputFormData, retrievedSchema, isSchemaChanged = false) { - var _a; + var _a2; const state = this.state || {}; const schema = "schema" in props ? props.schema : this.props.schema; const uiSchema = ("uiSchema" in props ? props.uiSchema : this.props.uiSchema) || {}; @@ -48802,7 +49297,7 @@ let Form$1 = class Form extends reactExports.Component { if (retrievedSchema === void 0) { errorSchema = schemaValidation.errorSchema; } else { - errorSchema = mergeObjects((_a = this.state) === null || _a === void 0 ? void 0 : _a.errorSchema, schemaValidation.errorSchema, "preventDuplicates"); + errorSchema = mergeObjects((_a2 = this.state) === null || _a2 === void 0 ? void 0 : _a2.errorSchema, schemaValidation.errorSchema, "preventDuplicates"); } schemaValidationErrors = errors; schemaValidationErrorSchema = errorSchema; @@ -48889,7 +49384,7 @@ let Form$1 = class Form extends reactExports.Component { } /** Returns the registry for the form */ getRegistry() { - var _a; + var _a2; const { translateString: customTranslateString, uiSchema = {} } = this.props; const { schemaUtils } = this.state; const { fields: fields2, templates: templates2, widgets: widgets2, formContext, translateString } = getDefaultRegistry(); @@ -48900,7 +49395,7 @@ let Form$1 = class Form extends reactExports.Component { ...this.props.templates, ButtonTemplates: { ...templates2.ButtonTemplates, - ...(_a = this.props.templates) === null || _a === void 0 ? void 0 : _a.ButtonTemplates + ...(_a2 = this.props.templates) === null || _a2 === void 0 ? void 0 : _a2.ButtonTemplates } }, widgets: { ...widgets2, ...this.props.widgets }, @@ -48987,17 +49482,8 @@ class Country { this.useVatWithoutUstId = item.useVatWithoutUstId; } } -var __defProp$8 = Object.defineProperty; -var __getOwnPropDesc$8 = Object.getOwnPropertyDescriptor; -var __decorateClass$8 = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$8(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp$8(target, key, result); - return result; -}; -let CountryService = class { +_CountryService_decorators = [singleton(), autoInjectable()]; +class CountryService { async getCountry(shop) { return await axios.get("/apps/api/country/by/shop/" + shop.uuid).then((response) => { return response.data.data.map((item) => { @@ -49007,11 +49493,10 @@ let CountryService = class { }); }); } -}; -CountryService = __decorateClass$8([ - singleton(), - autoInjectable() -], CountryService); +} +_init4 = __decoratorStart(null); +CountryService = __decorateElement(_init4, 0, "CountryService", _CountryService_decorators, CountryService); +__runInitializers(_init4, 1, CountryService); const ContactModal = NiceModal.create( ({ title: title2, action, contact, shop }) => { const country_api = new CountryService(); @@ -49117,45 +49602,36 @@ const ContactModal = NiceModal.create( ] }); } ); -var __defProp$7 = Object.defineProperty; -var __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor; -var __decorateClass$7 = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$7(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp$7(target, key, result); - return result; -}; -let AddressService = class { +_AddressService_decorators = [singleton(), autoInjectable()]; +class AddressService { constructor(token2) { this.token = token2; } async create(address) { - var _a; + var _a2; return await axios.post("/apps/api/contact/address/create", { "address": address }, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data; }); } async update(address) { - var _a; + var _a2; return await axios.put("/apps/api/contact/address/update/" + address.uuid, { "address": address }, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data; }); } async getContactAddress(contact, type2) { - var _a; + var _a2; return await axios.get("/apps/api/contact/address/getallfortype/" + contact + "/" + type2, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -49176,11 +49652,10 @@ let AddressService = class { }); }); } -}; -AddressService = __decorateClass$7([ - singleton(), - autoInjectable() -], AddressService); +} +_init5 = __decoratorStart(null); +AddressService = __decorateElement(_init5, 0, "AddressService", _AddressService_decorators, AddressService); +__runInitializers(_init5, 1, AddressService); const ContactModalComponent = ({ shop, handleAdd, handleEdit, contact }) => { const contactModal = useModal(ContactModal); const showAddModal = reactExports.useCallback(() => { @@ -50619,7 +51094,7 @@ function requireUseStateManagerCe23061c_cjs_prod() { var _objectSpread3 = requireObjectSpread2(); var _slicedToArray2 = requireSlicedToArray(); var _objectWithoutProperties2 = requireObjectWithoutProperties(); - var React2 = requireReact(); + var React2 = requireReact$1(); var _excluded3 = ["defaultInputValue", "defaultMenuIsOpen", "defaultValue", "inputValue", "menuIsOpen", "onChange", "onInputChange", "onMenuClose", "onMenuOpen", "value"]; function useStateManager2(_ref3) { var _ref$defaultInputValu = _ref3.defaultInputValue, defaultInputValue = _ref$defaultInputValu === void 0 ? "" : _ref$defaultInputValu, _ref$defaultMenuIsOpe = _ref3.defaultMenuIsOpen, defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe, _ref$defaultValue = _ref3.defaultValue, defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue, propsInputValue = _ref3.inputValue, propsMenuIsOpen = _ref3.menuIsOpen, propsOnChange = _ref3.onChange, propsOnInputChange = _ref3.onInputChange, propsOnMenuClose = _ref3.onMenuClose, propsOnMenuOpen = _ref3.onMenuOpen, propsValue = _ref3.value, restSelectProps = _objectWithoutProperties2(_ref3, _excluded3); @@ -51547,7 +52022,7 @@ function requireIndex665c4ed8_cjs_prod() { var _typeof2 = require_typeof(); var _taggedTemplateLiteral2 = requireTaggedTemplateLiteral(); var _defineProperty2 = requireDefineProperty(); - var React2 = requireReact(); + var React2 = requireReact$1(); var reactDom2 = requireReactDom(); var dom = require$$10$1; var useLayoutEffect = require$$11; @@ -52626,7 +53101,7 @@ function requireSelect36d15f93_cjs_prod() { var _inherits2 = requireInherits(); var _createSuper2 = requireCreateSuper(); var _toConsumableArray2 = requireToConsumableArray(); - var React2 = requireReact(); + var React2 = requireReact$1(); var index2 = /* @__PURE__ */ requireIndex665c4ed8_cjs_prod(); var react2 = require$$4; var memoizeOne2 = require$$10; @@ -54955,7 +55430,7 @@ function requireReactSelect_cjs_prod() { Object.defineProperty(exports, "__esModule", { value: true }); var useStateManager2 = /* @__PURE__ */ requireUseStateManagerCe23061c_cjs_prod(); var _extends2 = require_extends(); - var React2 = requireReact(); + var React2 = requireReact$1(); var Select2 = /* @__PURE__ */ requireSelect36d15f93_cjs_prod(); var react2 = require$$4; var createCache3 = require$$5; @@ -55355,25 +55830,16 @@ AddressSelect.propTypes = { changeAddress: propTypesExports.func, name: propTypesExports.string }; -var __defProp$6 = Object.defineProperty; -var __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor; -var __decorateClass$6 = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$6(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp$6(target, key, result); - return result; -}; -let AccountService = class { +_AccountService_decorators = [singleton(), autoInjectable()]; +class AccountService { constructor(token2) { this.token = token2; } async getAccounts(shop) { - var _a; + var _a2; return await axios.get("/apps/api/account/allbyshop/" + shop.uuid, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -55386,11 +55852,10 @@ let AccountService = class { }); }); } -}; -AccountService = __decorateClass$6([ - singleton(), - autoInjectable() -], AccountService); +} +_init6 = __decoratorStart(null); +AccountService = __decorateElement(_init6, 0, "AccountService", _AccountService_decorators, AccountService); +__runInitializers(_init6, 1, AccountService); const AccountSelectComponent = ({ shop, order }) => { const [shopUuid, setShopUuid] = reactExports.useState(null); const [account, setAccount] = reactExports.useState(0); @@ -55549,22 +56014,12 @@ const TypeSelectComponent = ({ order }) => { } ) }); }; -var __defProp$5 = Object.defineProperty; -var __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor; -var __decorateClass$5 = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$5(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp$5(target, key, result); - return result; -}; -let ShopService = class { +_ShopService_decorators = [singleton(), autoInjectable()]; +class ShopService { constructor(token2) { - this.token = token2; + console.log(token2); } async getShops() { - console.log(this.token); return await axios.get("/apps/api/shops", { headers: { "Authorization": "Bearer " + this.token.currentToken @@ -55577,15 +56032,16 @@ let ShopService = class { }); }); } -}; -ShopService = __decorateClass$5([ - singleton(), - autoInjectable() -], ShopService); +} +_init7 = __decoratorStart(null); +ShopService = __decorateElement(_init7, 0, "ShopService", _ShopService_decorators, ShopService); +__runInitializers(_init7, 1, ShopService); const ShopSelectComponent = (props) => { const orderState = instance.resolve(OrderState); const shop_service = instance.resolve(ShopService); + const token_service = instance.resolve(Token); const loadOptions = async (searchQuery, loadedOptions) => { + console.log(token_service); const data2 = await shop_service.getShops(); return { options: data2, @@ -55630,25 +56086,16 @@ const DraftComponent = ({ order }) => { /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ms-3 text-sm font-medium text-gray-900 dark:text-gray-300", children: "Entwurf" }) ] }) }); }; -var __defProp$4 = Object.defineProperty; -var __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor; -var __decorateClass$4 = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$4(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp$4(target, key, result); - return result; -}; -let OrderService = class { +_OrderService_decorators = [singleton(), autoInjectable()]; +class OrderService { constructor(token2) { this.token = token2; } async getOrder(uuid) { - var _a; + var _a2; return await axios.post("/apps/api/order/getonebyuuid", { uuid }, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { let order = new Order(); @@ -55657,30 +56104,29 @@ let OrderService = class { }); } async saveOrder(order) { - var _a; + var _a2; return await axios.post("/apps/api/order/create", order, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data; }); } async calcOrder(order) { - var _a; + var _a2; return await axios.post("/apps/api/order/calc", order, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data; }); } -}; -OrderService = __decorateClass$4([ - singleton(), - autoInjectable() -], OrderService); +} +_init8 = __decoratorStart(null); +OrderService = __decorateElement(_init8, 0, "OrderService", _OrderService_decorators, OrderService); +__runInitializers(_init8, 1, OrderService); const Currency = ({ price }) => { return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: Intl.NumberFormat("de-DE", { style: "currency", @@ -55742,17 +56188,8 @@ class ProductGroup { } //options: ProductGroup[] = [] } -var __defProp$3 = Object.defineProperty; -var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor; -var __decorateClass$3 = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp$3(target, key, result); - return result; -}; -let ProductGroupService = class { +_ProductGroupService_decorators = [singleton(), autoInjectable()]; +class ProductGroupService { constructor(token2) { this.token = token2; } @@ -55781,11 +56218,10 @@ let ProductGroupService = class { return temp; }); } -}; -ProductGroupService = __decorateClass$3([ - singleton(), - autoInjectable() -], ProductGroupService); +} +_init9 = __decoratorStart(null); +ProductGroupService = __decorateElement(_init9, 0, "ProductGroupService", _ProductGroupService_decorators, ProductGroupService); +__runInitializers(_init9, 1, ProductGroupService); var reactSelectAsync_cjs = { exports: {} }; var reactSelectAsync_cjs_prod = {}; var useAsyncBe659a57_cjs_prod = {}; @@ -55797,7 +56233,7 @@ function requireUseAsyncBe659a57_cjs_prod() { var _objectSpread3 = requireObjectSpread2(); var _slicedToArray2 = requireSlicedToArray(); var _objectWithoutProperties2 = requireObjectWithoutProperties(); - var React2 = requireReact(); + var React2 = requireReact$1(); var index2 = /* @__PURE__ */ requireIndex665c4ed8_cjs_prod(); var _excluded3 = ["defaultOptions", "cacheOptions", "loadOptions", "options", "isLoading", "onInputChange", "filterOption"]; function useAsync(_ref3) { @@ -55900,7 +56336,7 @@ function requireReactSelectAsync_cjs_prod() { (function(exports) { Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require_extends(); - var React2 = requireReact(); + var React2 = requireReact$1(); var Select2 = /* @__PURE__ */ requireSelect36d15f93_cjs_prod(); var useStateManager2 = /* @__PURE__ */ requireUseStateManagerCe23061c_cjs_prod(); var useAsync = /* @__PURE__ */ requireUseAsyncBe659a57_cjs_prod(); @@ -55997,25 +56433,16 @@ ProductGroupSelect.propTypes = { value: propTypesExports.instanceOf(ProductGroup), onChange: propTypesExports.func }; -var __defProp$2 = Object.defineProperty; -var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor; -var __decorateClass$2 = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp$2(target, key, result); - return result; -}; -let ProductService = class { +_ProductService_decorators = [singleton(), autoInjectable()]; +class ProductService { constructor(token2) { this.token = token2; } async getProductsByTerm(term, shop) { - var _a; + var _a2; return await axios.get("/apps/api/product/getallbyterm/" + shop.uuid + "/" + term, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -56029,10 +56456,10 @@ let ProductService = class { }); } async getProducts(productGroup) { - var _a; + var _a2; return await axios.get("/apps/api/product/getallbyproductgroup/" + productGroup.uuid, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -56046,30 +56473,29 @@ let ProductService = class { }); } async getAddProductSchema(product, formData) { - var _a; + var _a2; return await axios.post("/apps/api/product/get/form/json/" + product.uuid, formData, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data; }); } async calcProduct(product, formData) { - var _a; + var _a2; return await axios.post("/apps/api/product/get/form/json/" + product.uuid, formData, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data; }); } -}; -ProductService = __decorateClass$2([ - singleton(), - autoInjectable() -], ProductService); +} +_init10 = __decoratorStart(null); +ProductService = __decorateElement(_init10, 0, "ProductService", _ProductService_decorators, ProductService); +__runInitializers(_init10, 1, ProductService); function c(e2, u2, c2) { var i2 = this, a2 = reactExports.useRef(null), o2 = reactExports.useRef(0), f2 = reactExports.useRef(null), l2 = reactExports.useRef([]), v2 = reactExports.useRef(), m2 = reactExports.useRef(), d2 = reactExports.useRef(e2), g2 = reactExports.useRef(true); d2.current = e2; @@ -56403,7 +56829,7 @@ ItemsComponent.propTypes = { shop: propTypesExports.instanceOf(Shop) }; const PositionsComponent = ({ order, shop, updateOrder }) => { - const orderState = instance.resolve(OrderState); + const orderState = container.resolve(OrderState); const [positions, setPositions] = reactExports.useState(order.positions); const addPos = (posObj) => { setPositions([...positions, posObj]); @@ -56437,25 +56863,16 @@ PositionsComponent.propTypes = { order: propTypesExports.instanceOf(Order), updateOrder: propTypesExports.func }; -var __defProp$1 = Object.defineProperty; -var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor; -var __decorateClass$1 = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp$1(target, key, result); - return result; -}; -let PaymentService = class { +_PaymentService_decorators = [singleton(), autoInjectable()]; +class PaymentService { constructor(token2) { this.token = token2; } async getPayments(shop) { - var _a; + var _a2; return await axios.get("/apps/api/payment/by/shop/" + shop.uuid, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -56467,11 +56884,10 @@ let PaymentService = class { }); }); } -}; -PaymentService = __decorateClass$1([ - singleton(), - autoInjectable() -], PaymentService); +} +_init11 = __decoratorStart(null); +PaymentService = __decorateElement(_init11, 0, "PaymentService", _PaymentService_decorators, PaymentService); +__runInitializers(_init11, 1, PaymentService); const PaymentComponent = ({ shop, order }) => { const [shopUuid, setShopUuid] = reactExports.useState(null); const orderState = instance.resolve(OrderState); @@ -56519,25 +56935,16 @@ PaymentComponent.propTypes = { shop: propTypesExports.instanceOf(Shop), order: propTypesExports.instanceOf(Order) }; -var __defProp2 = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __decorateClass = (decorators, target, key, kind) => { - var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target; - for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) - if (decorator = decorators[i2]) - result = (kind ? decorator(target, key, result) : decorator(result)) || result; - if (kind && result) __defProp2(target, key, result); - return result; -}; -let ShippingService = class { +_ShippingService_decorators = [singleton(), autoInjectable()]; +class ShippingService { constructor(token2) { this.token = token2; } async getShipping(shop) { - var _a; + var _a2; return await axios.get("/apps/api/shipping/by/shop/" + shop.uuid, { headers: { - "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) + "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -56549,11 +56956,10 @@ let ShippingService = class { }); }); } -}; -ShippingService = __decorateClass([ - singleton(), - autoInjectable() -], ShippingService); +} +_init12 = __decoratorStart(null); +ShippingService = __decorateElement(_init12, 0, "ShippingService", _ShippingService_decorators, ShippingService); +__runInitializers(_init12, 1, ShippingService); const ShippingComponent = ({ shop, order }) => { const [shopUuid, setShopUuid] = reactExports.useState(null); const orderState = instance.resolve(OrderState); @@ -56631,11 +57037,11 @@ class ButtonComponent extends reactExports.Component { render() { return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-3", children: [ /* @__PURE__ */ jsxRuntimeExports.jsxs(Button$1, { size: "xs", color: "info", disabled: this.state.disabled, onClick: (e2) => this.handleSave(e2), children: [ - /* @__PURE__ */ jsxRuntimeExports.jsx(RiSaveFill, { className: "mr-2 h-5 w-5" }), + /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mr-2 h-5 w-5" }), " Speichern" ] }), /* @__PURE__ */ jsxRuntimeExports.jsxs(Button$1, { size: "xs", color: "success", disabled: !this.orderState.getCurrentOrder().value.saved, onClick: (e2) => this.handlePrint(e2), children: [ - /* @__PURE__ */ jsxRuntimeExports.jsx(RiPrinterFill, { className: "mr-2 h-5 w-5" }), + /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mr-2 h-5 w-5" }), " Drucken" ] }) ] }); @@ -56802,7 +57208,7 @@ function requireDist() { } requireDist(); /** - * react-router v7.0.2 + * react-router v7.1.0 * * Copyright (c) Remix Software Inc. * @@ -57084,8 +57490,8 @@ function flattenRoutes(routes, branches = [], parentsMeta = [], parentPath = "") }); }; routes.forEach((route, index2) => { - var _a; - if (route.path === "" || !((_a = route.path) == null ? void 0 : _a.includes("?"))) { + var _a2; + if (route.path === "" || !((_a2 = route.path) == null ? void 0 : _a2.includes("?"))) { flattenRoute(route, index2); } else { for (let exploded of explodeOptionalSegments(route.path)) { @@ -57535,7 +57941,7 @@ function useRoutes(routes, locationArg) { return useRoutesImpl(routes, locationArg); } function useRoutesImpl(routes, locationArg, dataRouterState, future) { - var _a; + var _a2; invariant( useInRouterContext(), // TODO: This error is probably because they somehow have 2 versions of the @@ -57564,7 +57970,7 @@ Please change the parent to \` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${parentPathnameBase}" but pathname "${parsedLocationArg.pathname}" was given in the \`location\` prop.` ); location = parsedLocationArg; @@ -57849,7 +58255,7 @@ function useRouteId() { ); } function useRouteError() { - var _a; + var _a2; let error = reactExports.useContext(RouteErrorContext); let state = useDataRouterState( "useRouteError" @@ -57862,7 +58268,7 @@ function useRouteError() { if (error !== void 0) { return error; } - return (_a = state.errors) == null ? void 0 : _a[routeId]; + return (_a2 = state.errors) == null ? void 0 : _a2[routeId]; } function useNavigateStable() { let { router } = useDataRouterContext( @@ -58191,12 +58597,12 @@ function getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, loca return match2.route.id !== currentMatches[index2].route.id; }; let matchPathChanged = (match2, index2) => { - var _a; + var _a2; return ( // param change, /users/123 -> /users/456 currentMatches[index2].pathname !== match2.pathname || // splat param changed, which is not present in match.path // e.g. /files/images/avatar.jpg -> files/finances.xls - ((_a = currentMatches[index2].route.path) == null ? void 0 : _a.endsWith("*")) && currentMatches[index2].params["*"] !== match2.params["*"] + ((_a2 = currentMatches[index2].route.path) == null ? void 0 : _a2.endsWith("*")) && currentMatches[index2].params["*"] !== match2.params["*"] ); }; if (mode === "assets") { @@ -58206,7 +58612,7 @@ function getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, loca } if (mode === "data") { return nextMatches.filter((match2, index2) => { - var _a; + var _a2; let manifestRoute = manifest.routes[match2.route.id]; if (!manifestRoute || !manifestRoute.hasLoader) { return false; @@ -58220,7 +58626,7 @@ function getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, loca location.pathname + location.search + location.hash, window.origin ), - currentParams: ((_a = currentMatches[0]) == null ? void 0 : _a.params) || {}, + currentParams: ((_a2 = currentMatches[0]) == null ? void 0 : _a2.params) || {}, nextUrl: new URL(page, window.origin), nextParams: match2.params, defaultShouldRevalidate: true @@ -58386,7 +58792,6 @@ function PrefetchPageLinks({ [router.routes, page, router.basename] ); if (!matches2) { - console.warn(`Tried to prefetch ${page} but no routes matched.`); return null; } return /* @__PURE__ */ reactExports.createElement(PrefetchPageLinksImpl, { page, matches: matches2, ...dataLinkProps }); @@ -58446,12 +58851,12 @@ function PrefetchPageLinksImpl({ let routesParams = /* @__PURE__ */ new Set(); let foundOptOutRoute = false; nextMatches.forEach((m2) => { - var _a; + var _a2; let manifestRoute = manifest.routes[m2.route.id]; if (!manifestRoute || !manifestRoute.hasLoader) { return; } - if (!newMatchesForData.some((m22) => m22.route.id === m2.route.id) && m2.route.id in loaderData && ((_a = routeModules[m2.route.id]) == null ? void 0 : _a.shouldRevalidate)) { + if (!newMatchesForData.some((m22) => m22.route.id === m2.route.id) && m2.route.id in loaderData && ((_a2 = routeModules[m2.route.id]) == null ? void 0 : _a2.shouldRevalidate)) { foundOptOutRoute = true; } else if (manifestRoute.hasClientLoader) { foundOptOutRoute = true; @@ -58504,7 +58909,7 @@ function mergeRefs(...refs) { var isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"; try { if (isBrowser) { - window.__reactRouterVersion = "7.0.2"; + window.__reactRouterVersion = "7.1.0"; } } catch (e2) { } @@ -58949,7 +59354,7 @@ class App { constructor(jwt) { __publicField(this, "searchParams"); __publicField(this, "setSearchParams"); - let token2 = instance.resolve(Token); + let token2 = instance.resolve(Token$1); console.log(jwt); token2.currentToken = jwt; token2.init(); @@ -58972,4 +59377,4 @@ class App { let app = new App(jwt_token); app.init(); app.run(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVmbGVjdC1tZXRhZGF0YUAwLjIuMi9ub2RlX21vZHVsZXMvcmVmbGVjdC1tZXRhZGF0YS9SZWZsZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdEAxOC4zLjEvbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3RAMTguMy4xL25vZGVfbW9kdWxlcy9yZWFjdC9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3RAMTguMy4xL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0QDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3V0aWxzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3NFcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL251bGwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b0Zvcm1EYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvQXhpb3NVUkxTZWFyY2hQYXJhbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9idWlsZFVSTC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL1VSTFNlYXJjaFBhcmFtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9wbGF0Zm9ybS9icm93c2VyL2NsYXNzZXMvRm9ybURhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL0Jsb2IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9wbGF0Zm9ybS9jb21tb24vdXRpbHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b1VSTEVuY29kZWRGb3JtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvZm9ybURhdGFUb0pTT04uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZUhlYWRlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvc0hlYWRlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS90cmFuc2Zvcm1EYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3NldHRsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlUHJvdG9jb2wuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcGVlZG9tZXRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3Rocm90dGxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcHJvZ3Jlc3NFdmVudFJlZHVjZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc1VSTFNhbWVPcmlnaW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL21lcmdlQ29uZmlnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcmVzb2x2ZUNvbmZpZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9hZGFwdGVycy94aHIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21wb3NlU2lnbmFscy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3RyYWNrU3RyZWFtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL2ZldGNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL2FkYXB0ZXJzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2Vudi9kYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvc3ByZWFkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvSHR0cFN0YXR1c0NvZGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlQDQuOC4wL25vZGVfbW9kdWxlcy90c3lyaW5nZS9kaXN0L2VzbTUvdHlwZXMvbGlmZWN5Y2xlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c2xpYkAxLjE0LjEvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdHN5cmluZ2VANC44LjAvbm9kZV9tb2R1bGVzL3RzeXJpbmdlL2Rpc3QvZXNtNS9yZWZsZWN0aW9uLWhlbHBlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlQDQuOC4wL25vZGVfbW9kdWxlcy90c3lyaW5nZS9kaXN0L2VzbTUvcHJvdmlkZXJzL2NsYXNzLXByb3ZpZGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c3lyaW5nZUA0LjguMC9ub2RlX21vZHVsZXMvdHN5cmluZ2UvZGlzdC9lc201L3Byb3ZpZGVycy9mYWN0b3J5LXByb3ZpZGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c3lyaW5nZUA0LjguMC9ub2RlX21vZHVsZXMvdHN5cmluZ2UvZGlzdC9lc201L2xhenktaGVscGVycy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdHN5cmluZ2VANC44LjAvbm9kZV9tb2R1bGVzL3RzeXJpbmdlL2Rpc3QvZXNtNS9wcm92aWRlcnMvaW5qZWN0aW9uLXRva2VuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c3lyaW5nZUA0LjguMC9ub2RlX21vZHVsZXMvdHN5cmluZ2UvZGlzdC9lc201L3Byb3ZpZGVycy90b2tlbi1wcm92aWRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdHN5cmluZ2VANC44LjAvbm9kZV9tb2R1bGVzL3RzeXJpbmdlL2Rpc3QvZXNtNS9wcm92aWRlcnMvdmFsdWUtcHJvdmlkZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlQDQuOC4wL25vZGVfbW9kdWxlcy90c3lyaW5nZS9kaXN0L2VzbTUvcHJvdmlkZXJzL3Byb3ZpZGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c3lyaW5nZUA0LjguMC9ub2RlX21vZHVsZXMvdHN5cmluZ2UvZGlzdC9lc201L3JlZ2lzdHJ5LWJhc2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlQDQuOC4wL25vZGVfbW9kdWxlcy90c3lyaW5nZS9kaXN0L2VzbTUvcmVnaXN0cnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlQDQuOC4wL25vZGVfbW9kdWxlcy90c3lyaW5nZS9kaXN0L2VzbTUvcmVzb2x1dGlvbi1jb250ZXh0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c3lyaW5nZUA0LjguMC9ub2RlX21vZHVsZXMvdHN5cmluZ2UvZGlzdC9lc201L2Vycm9yLWhlbHBlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlQDQuOC4wL25vZGVfbW9kdWxlcy90c3lyaW5nZS9kaXN0L2VzbTUvdHlwZXMvZGlzcG9zYWJsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdHN5cmluZ2VANC44LjAvbm9kZV9tb2R1bGVzL3RzeXJpbmdlL2Rpc3QvZXNtNS9pbnRlcmNlcHRvcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlQDQuOC4wL25vZGVfbW9kdWxlcy90c3lyaW5nZS9kaXN0L2VzbTUvZGVwZW5kZW5jeS1jb250YWluZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlQDQuOC4wL25vZGVfbW9kdWxlcy90c3lyaW5nZS9kaXN0L2VzbTUvZGVjb3JhdG9ycy9hdXRvLWluamVjdGFibGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlQDQuOC4wL25vZGVfbW9kdWxlcy90c3lyaW5nZS9kaXN0L2VzbTUvZGVjb3JhdG9ycy9pbmplY3RhYmxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c3lyaW5nZUA0LjguMC9ub2RlX21vZHVsZXMvdHN5cmluZ2UvZGlzdC9lc201L2RlY29yYXRvcnMvc2luZ2xldG9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c3lyaW5nZUA0LjguMC9ub2RlX21vZHVsZXMvdHN5cmluZ2UvZGlzdC9lc201L2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy90b2tlbi50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc2NoZWR1bGVyQDAuMjMuMi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3NjaGVkdWxlckAwLjIzLjIvbm9kZV9tb2R1bGVzL3NjaGVkdWxlci9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtZG9tQDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWRvbUAxOC4zLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtZG9tQDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2NsaWVudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGViYXkrbmljZS1tb2RhbC1yZWFjdEAxLjIuMTMvbm9kZV9tb2R1bGVzL0BlYmF5L25pY2UtbW9kYWwtcmVhY3QvbGliL2VzbS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvc2hvcC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcHJvcC10eXBlc0AxNS44LjEvbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9wcm9wLXR5cGVzQDE1LjguMS9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3Byb3AtdHlwZXNAMTUuOC4xL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlMaWtlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L3VzZVN0YXRlTWFuYWdlci03ZTFlODQ4OS5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRob3V0SG9sZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbitzaGVldEAxLjQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vc2hlZXQvZGlzdC9lbW90aW9uLXNoZWV0LmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMi4wL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL0VudW0uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjIuMC9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9VdGlsaXR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVG9rZW5pemVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvUGFyc2VyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvU2VyaWFsaXplci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMi4wL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL01pZGRsZXdhcmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3dlYWstbWVtb2l6ZUAwLjQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vd2Vhay1tZW1vaXplL2Rpc3QvZW1vdGlvbi13ZWFrLW1lbW9pemUuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbittZW1vaXplQDAuOS4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9tZW1vaXplL2Rpc3QvZW1vdGlvbi1tZW1vaXplLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rY2FjaGVAMTEuMTQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vY2FjaGUvZGlzdC9lbW90aW9uLWNhY2hlLmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pc0AxNi4xMy4xL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWlzQDE2LjEzLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9ob2lzdC1ub24tcmVhY3Qtc3RhdGljc0AzLjMuMi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvZGlzdC9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy5janMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3JlYWN0QDExLjE0LjAvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rdXRpbHNAMS40LjIvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3V0aWxzL2Rpc3QvZW1vdGlvbi11dGlscy5icm93c2VyLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24raGFzaEAwLjkuMi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vaGFzaC9kaXN0L2Vtb3Rpb24taGFzaC5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3VuaXRsZXNzQDAuMTAuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdW5pdGxlc3MvZGlzdC9lbW90aW9uLXVuaXRsZXNzLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rc2VyaWFsaXplQDEuMy4zL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9zZXJpYWxpemUvZGlzdC9lbW90aW9uLXNlcmlhbGl6ZS5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzQDEuMi4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcy9kaXN0L2Vtb3Rpb24tdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MuYnJvd3Nlci5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3JlYWN0QDExLjE0LjAvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L2Rpc3QvZW1vdGlvbi1lbGVtZW50LWYwZGU5NjhlLmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbityZWFjdEAxMS4xNC4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9yZWFjdC9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdGFnZ2VkVGVtcGxhdGVMaXRlcmFsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrdXRpbHNAMC4yLjgvbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGZsb2F0aW5nLXVpK2NvcmVAMS42LjYvbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9jb3JlL2Rpc3QvZmxvYXRpbmctdWkuY29yZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BmbG9hdGluZy11aSt1dGlsc0AwLjIuOC9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMuZG9tLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGZsb2F0aW5nLXVpK2RvbUAxLjYuMTIvbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0QDEuMi4wL25vZGVfbW9kdWxlcy91c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0L2Rpc3QvdXNlLWlzb21vcnBoaWMtbGF5b3V0LWVmZmVjdC5icm93c2VyLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC9pbmRleC02NDFlZTViOC5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL21lbW9pemUtb25lQDYuMC4wL25vZGVfbW9kdWxlcy9tZW1vaXplLW9uZS9kaXN0L21lbW9pemUtb25lLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC9TZWxlY3QtYWFiMDI3ZjMuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L3JlYWN0LXNlbGVjdC5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0B2dGFpdHMrdXNlLWxhenktcmVmQDAuMS4zL25vZGVfbW9kdWxlcy9AdnRhaXRzL3VzZS1sYXp5LXJlZi9kaXN0L2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91c2UtaXMtbW91bnRlZC1yZWZAMS41LjAvbm9kZV9tb2R1bGVzL3VzZS1pcy1tb3VudGVkLXJlZi9kaXN0L3VzZS1pcy1tb3VudGVkLXJlZi5lcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdXNlLWxhdGVzdEAxLjMuMC9ub2RlX21vZHVsZXMvdXNlLWxhdGVzdC9kaXN0L3VzZS1sYXRlc3QuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9rcnVzdHlrcmFiQDEuMS4wL25vZGVfbW9kdWxlcy9rcnVzdHlrcmFiL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zbGVlcC1wcm9taXNlQDkuMS4wL25vZGVfbW9kdWxlcy9zbGVlcC1wcm9taXNlL2J1aWxkL2VzbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BzZXpuYW0rY29tcG9zZS1yZWFjdC1yZWZzQDEuMC42L25vZGVfbW9kdWxlcy9Ac2V6bmFtL2NvbXBvc2UtcmVhY3QtcmVmcy9jb21wb3NlUmVmcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0LWFzeW5jLXBhZ2luYXRlQDAuNy43L25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGUvZGlzdC9lc20vaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL2NvbnRhY3QudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL2NvbnRhY3QudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3V1aWRAMTEuMC4zL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvc3RyaW5naWZ5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91dWlkQDExLjAuMy9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3JuZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdXVpZEAxMS4wLjMvbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9uYXRpdmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3V1aWRAMTEuMC4zL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL2FjY291bnQudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL2FkZHJlc3MudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL3Byb2R1Y3QudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL3ByaWNlLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2RlbC9wb3MudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL3BheW1lbnQudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL3NoaXBwaW5nLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2RlbC9vcmRlci50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdHNsaWJAMi44LjEvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvaXNGdW5jdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9jcmVhdGVFcnJvckNsYXNzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL1Vuc3Vic2NyaXB0aW9uRXJyb3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvYXJyUmVtb3ZlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9TdWJzY3JpcHRpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL2NvbmZpZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc2NoZWR1bGVyL3RpbWVvdXRQcm92aWRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9yZXBvcnRVbmhhbmRsZWRFcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9ub29wLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL2Vycm9yQ29udGV4dC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvU3Vic2NyaWJlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc3ltYm9sL29ic2VydmFibGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvaWRlbnRpdHkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvcGlwZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvT2JzZXJ2YWJsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9saWZ0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9vcGVyYXRvcnMvT3BlcmF0b3JTdWJzY3JpYmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL09iamVjdFVuc3Vic2NyaWJlZEVycm9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9TdWJqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9CZWhhdmlvclN1YmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3NjaGVkdWxlci9kYXRlVGltZXN0YW1wUHJvdmlkZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3NjaGVkdWxlci9BY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3NjaGVkdWxlci9pbnRlcnZhbFByb3ZpZGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9zY2hlZHVsZXIvQXN5bmNBY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL1NjaGVkdWxlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc2NoZWR1bGVyL0FzeW5jU2NoZWR1bGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9zY2hlZHVsZXIvYXN5bmMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL29wZXJhdG9ycy9kZWJvdW5jZVRpbWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3N0YXRlL29yZGVyLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9wcmVhY3RAMTAuMjUuMy9ub2RlX21vZHVsZXMvcHJlYWN0L2Rpc3QvcHJlYWN0Lm1vZHVsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtaWNvbnNANS4yLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL2xpYi9pY29uQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWljb25zQDUuMi4xL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9saWIvaWNvbkJhc2UubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pY29uc0A1LjIuMS9ub2RlX21vZHVsZXMvcmVhY3QtaWNvbnMvaGkvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90YWlsd2luZC1tZXJnZUAyLjQuMC9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2UvZGlzdC9idW5kbGUtbWpzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9oZWxwZXJzL2lzLW9iamVjdC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vaGVscGVycy9jbG9uZS1kZWVwLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9oZWxwZXJzL21lcmdlLWRlZXAubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0FjY29yZGlvbi90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BbGVydC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BdmF0YXIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQmFkZ2UvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQmxvY2txdW90ZS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CcmVhZGNydW1iL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0J1dHRvbi90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9DYXJkL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Nhcm91c2VsL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0NoZWNrYm94L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0NsaXBib2FyZC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXJrVGhlbWVUb2dnbGUvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRGF0ZXBpY2tlci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EcmF3ZXIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJvcGRvd24vdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRmlsZUlucHV0L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zsb2F0aW5nTGFiZWwvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0hlbHBlclRleHQvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSFIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvS2JkL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0xhYmVsL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0xpc3QvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTGlzdEdyb3VwL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL05hdmJhci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9NZWdhTWVudS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Nb2RhbC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9QYWdpbmF0aW9uL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1BvcG92ZXIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUHJvZ3Jlc3MvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUmFkaW8vdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUmFuZ2VTbGlkZXIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUmF0aW5nL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NlbGVjdC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NwaW5uZXIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFicy90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UZXh0YXJlYS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UZXh0SW5wdXQvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVG9hc3QvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVG9nZ2xlU3dpdGNoL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1Rvb2x0aXAvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS90aGVtZS1zdG9yZS9pbmRleC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BY2NvcmRpb24vQWNjb3JkaW9uUGFuZWxDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0FjY29yZGlvbi9BY2NvcmRpb25Db250ZW50Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0FjY29yZGlvbi9BY2NvcmRpb25QYW5lbC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BY2NvcmRpb24vQWNjb3JkaW9uVGl0bGUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQWNjb3JkaW9uL0FjY29yZGlvbi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BdmF0YXIvQXZhdGFyR3JvdXAubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQXZhdGFyL0F2YXRhckdyb3VwQ291bnRlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BdmF0YXIvQXZhdGFyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0JhZGdlL0JhZGdlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NwaW5uZXIvU3Bpbm5lci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CdXR0b24vQnV0dG9uQmFzZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CdXR0b24vQnV0dG9uR3JvdXAubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CYW5uZXIvQmFubmVyQ29sbGFwc2VCdXR0b24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQmFubmVyL0Jhbm5lci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CcmVhZGNydW1iL0JyZWFkY3J1bWJJdGVtLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0JyZWFkY3J1bWIvQnJlYWRjcnVtYi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2NsYXNzbmFtZXNAMi41LjEvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2RlYm91bmNlQDIuMS4wL25vZGVfbW9kdWxlcy9kZWJvdW5jZS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9oZWxwZXJzL2RyYWctc2Nyb2xsL2luZGV4Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0NoZWNrYm94L0NoZWNrYm94Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGZsb2F0aW5nLXVpK3JlYWN0QDAuMjYuMjEvbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9yZWFjdC9kaXN0L2Zsb2F0aW5nLXVpLnJlYWN0LnV0aWxzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdGFiYmFibGVANi4yLjAvbm9kZV9tb2R1bGVzL3RhYmJhYmxlL2Rpc3QvaW5kZXguZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrcmVhY3QtZG9tQDIuMS4yL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvcmVhY3QtZG9tL2Rpc3QvZmxvYXRpbmctdWkucmVhY3QtZG9tLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGZsb2F0aW5nLXVpK3JlYWN0QDAuMjYuMjEvbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9yZWFjdC9kaXN0L2Zsb2F0aW5nLXVpLnJlYWN0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zsb2F0aW5nL2hlbHBlcnMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2hvb2tzL3VzZS1mbG9hdGluZy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9GbG9hdGluZy9GbG9hdGluZy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub29sdGlwL1Rvb2x0aXAubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pY29uc0A1LjIuMS9ub2RlX21vZHVsZXMvcmVhY3QtaWNvbnMvZmE2L2luZGV4Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0NsaXBib2FyZC9oZWxwZXJzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0NsaXBib2FyZC9DbGlwYm9hcmRXaXRoSWNvbi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9DbGlwYm9hcmQvQ2xpcGJvYXJkV2l0aEljb25UZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0NsaXBib2FyZC9DbGlwYm9hcmQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSGVscGVyVGV4dC9IZWxwZXJUZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RleHRJbnB1dC9UZXh0SW5wdXQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRGF0ZXBpY2tlci9EYXRlcGlja2VyQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXRlcGlja2VyL2hlbHBlcnMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRGF0ZXBpY2tlci9WaWV3cy9EYXlzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhdGVwaWNrZXIvVmlld3MvRGVjYWRlcy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXRlcGlja2VyL1ZpZXdzL01vbnRocy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXRlcGlja2VyL1ZpZXdzL1llYXJzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhdGVwaWNrZXIvRGF0ZXBpY2tlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EcmF3ZXIvRHJhd2VyQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWljb25zQDUuMi4xL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9tZC9pbmRleC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EcmF3ZXIvRHJhd2VySGVhZGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RyYXdlci9EcmF3ZXJJdGVtcy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EcmF3ZXIvRHJhd2VyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bkRpdmlkZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd25IZWFkZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd25JdGVtLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0ZpbGVJbnB1dC9GaWxlSW5wdXQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRmxvYXRpbmdMYWJlbC9GbG9hdGluZ0xhYmVsLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zvb3Rlci9Gb290ZXJCcmFuZC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Gb290ZXIvRm9vdGVyQ29weXJpZ2h0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zvb3Rlci9Gb290ZXJEaXZpZGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zvb3Rlci9Gb290ZXJJY29uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zvb3Rlci9Gb290ZXJMaW5rLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zvb3Rlci9Gb290ZXJMaW5rR3JvdXAubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3RlclRpdGxlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zvb3Rlci9Gb290ZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSFIvSFJJY29uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0hSL0hSU3F1YXJlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0hSL0hSVGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IUi9IUlRyaW1tZWQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSFIvSFIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTGlzdC9MaXN0SXRlbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9MaXN0L0xpc3QubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTGlzdEdyb3VwL0xpc3RHcm91cEl0ZW0ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTGlzdEdyb3VwL0xpc3RHcm91cC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9OYXZiYXIvTmF2YmFyQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9OYXZiYXIvTmF2YmFyQnJhbmQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTmF2YmFyL05hdmJhckNvbGxhcHNlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL05hdmJhci9OYXZiYXJMaW5rLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtaWNvbnNANS4yLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL2ZhL2luZGV4Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL05hdmJhci9OYXZiYXJUb2dnbGUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTmF2YmFyL05hdmJhci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9NZWdhTWVudS9NZWdhTWVudURyb3Bkb3duLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01lZ2FNZW51L01lZ2FNZW51RHJvcGRvd25Ub2dnbGUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTWVnYU1lbnUvTWVnYU1lbnUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTW9kYWwvTW9kYWxDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01vZGFsL01vZGFsQm9keS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Nb2RhbC9Nb2RhbEZvb3Rlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Nb2RhbC9Nb2RhbEhlYWRlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9QYWdpbmF0aW9uL2hlbHBlcnMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUGFnaW5hdGlvbi9QYWdpbmF0aW9uQnV0dG9uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1BhZ2luYXRpb24vUGFnaW5hdGlvbi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYWRpby9SYWRpby5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYW5nZVNsaWRlci9SYW5nZVNsaWRlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYXRpbmcvUmF0aW5nQWR2YW5jZWQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUmF0aW5nL1JhdGluZ0NvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUmF0aW5nL1JhdGluZ1N0YXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUmF0aW5nL1JhdGluZy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhckNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFySXRlbUNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFyQ29sbGFwc2UubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFyQ1RBLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhckl0ZW0ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFySXRlbUdyb3VwLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhckl0ZW1zLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhckxvZ28ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlQm9keUNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvVGFibGVDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlQm9keS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZUNlbGwubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvVGFibGVIZWFkQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZUhlYWQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvVGFibGVIZWFkQ2VsbC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZVJvdy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJzL1RhYkl0ZW0ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFicy9UYWJzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RleHRhcmVhL1RleHRhcmVhLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lQ29udGVudENvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVCb2R5Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZUl0ZW1Db250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lQ29udGVudC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZUl0ZW0ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVQb2ludC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZVRpbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVUaXRsZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub2FzdC9Ub2FzdENvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVG9hc3QvVG9hc3RUb2dnbGUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVG9hc3QvVG9hc3QubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVG9nZ2xlU3dpdGNoL1RvZ2dsZVN3aXRjaC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvYmFzZS9CdXR0b24udHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9pc09iamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvYWxsb3dBZGRpdGlvbmFsSXRlbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2FzTnVtYmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9jb25zdGFudHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldFVpT3B0aW9ucy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvY2FuRXhwYW5kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19mcmVlR2xvYmFsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFJhd1RhZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRUYWcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX292ZXJBcmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFByb3RvdHlwZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdExpa2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNQbGFpbk9iamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvY3JlYXRlRXJyb3JIYW5kbGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVDbGVhci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9lcS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzb2NJbmRleE9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlSGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0xpc3RDYWNoZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tDbGVhci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tEZWxldGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrR2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0hhcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Z1bmN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3JlSnNEYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9Tb3VyY2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VmFsdWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE5hdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fTWFwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hDbGVhci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaERlbGV0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEhhcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaFNldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVDbGVhci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXlhYmxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXBEYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZURlbGV0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVHZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZVNldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fTWFwQ2FjaGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19TdGFjay5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVBZGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlSGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXRDYWNoZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlTb21lLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jYWNoZUhhcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxBcnJheXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1VpbnQ4QXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcFRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQnlUYWcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5UHVzaC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0QWxsS2V5cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlGaWx0ZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVGltZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0FyZ3VtZW50cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FyZ3VtZW50cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViRmFsc2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNCdWZmZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNMZW5ndGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1R5cGVkQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VVbmFyeS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbm9kZVV0aWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNUeXBlZEFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1Byb3RvdHlwZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gva2V5cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxPYmplY3RzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19EYXRhVmlldy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19XZWFrTWFwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRUYWcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0VxdWFsRGVlcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNFcXVhbFdpdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2RlZXBFcXVhbHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTeW1ib2wuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzS2V5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL21lbW9pemUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21lbW9pemVDYXBwZWQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0cmluZ1RvUGF0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlNYXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUb1N0cmluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC90b1N0cmluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFBhdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvS2V5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VtcHR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9qc29ucG9pbnRlckA1LjAuMS9ub2RlX21vZHVsZXMvanNvbnBvaW50ZXIvanNvbnBvaW50ZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RWFjaC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZGVmaW5lUHJvcGVydHkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25WYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzaWduVmFsdWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlPYmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUtleXNJbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXNJbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzSW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25Jbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVCdWZmZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weVN5bWJvbHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHNJbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weVN5bWJvbHNJbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5c0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVBcnJheUJ1ZmZlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVEYXRhVmlldy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVSZWdFeHAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lU3ltYm9sLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVR5cGVkQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUJ5VGFnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ3JlYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc01hcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ2xvbmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvbGFzdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNsaWNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19wYXJlbnQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VVbnNldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3VzdG9tT21pdENsb25lLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0ZsYXR0ZW5hYmxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmxhdHRlbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9mbGF0dGVuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcHBseS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlclJlc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvY29uc3RhbnQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaWRlbnRpdHkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXRUb1N0cmluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2hvcnRPdXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19mbGF0UmVzdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9vbWl0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9maW5kU2NoZW1hRGVmaW5pdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUhhcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzUGF0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9oYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNOdW1iZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTdHJpbmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5UmVkdWNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRm9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRm9yT3duLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRWFjaC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUVhY2guanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hdGNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1N0cmljdENvbXBhcmFibGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hdGNoRGF0YS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNYXRjaGVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzSW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaGFzSW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNYXRjaGVzUHJvcGVydHkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5RGVlcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9wcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUl0ZXJhdGVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVkdWNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3JlZHVjZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdEZ1bmN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL190cmltbWVkRW5kSW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUcmltLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvRmluaXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvSW50ZWdlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC90aW1lcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0T3B0aW9uTWF0Y2hpbmdTaW1wbGVEaXNjcmltaW5hdG9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvZ2V0TWF0Y2hpbmdPcHRpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9nZXRGaXJzdE1hdGNoaW5nT3B0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRXF1YWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvc2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RyYW5zZm9ybS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzaWduTWVyZ2VWYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZU9iamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2FmZUdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC90b1BsYWluT2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2VEZWVwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSZXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0l0ZXJhdGVlQ2FsbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQXNzaWduZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVyZ2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvZmxhdHRlbkRlZXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGaW5kSW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hTi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaWN0SW5kZXhPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUluZGV4T2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5SW5jbHVkZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5SW5jbHVkZXNXaXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZVNldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuaXEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdW5pcS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZURlZXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNYXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTb3J0QnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvbXBhcmVBc2NlbmRpbmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvbXBhcmVNdWx0aXBsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU9yZGVyQnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvc29ydEJ5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXFXaXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2RlZmF1bHRzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSW50ZXJzZWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0QXJyYXlMaWtlT2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2ludGVyc2VjdGlvbldpdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNCb29sZWFuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9qc29uLXNjaGVtYS1jb21wYXJlQDAuMi4yL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1jb21wYXJlL3NyYy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdmFsaWRhdGUuaW8tYXJyYXlAMS4wLjYvbm9kZV9tb2R1bGVzL3ZhbGlkYXRlLmlvLWFycmF5L2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdmFsaWRhdGUuaW8tbnVtYmVyQDEuMC4zL25vZGVfbW9kdWxlcy92YWxpZGF0ZS5pby1udW1iZXIvbGliL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby92YWxpZGF0ZS5pby1pbnRlZ2VyQDEuMC41L25vZGVfbW9kdWxlcy92YWxpZGF0ZS5pby1pbnRlZ2VyL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdmFsaWRhdGUuaW8taW50ZWdlci1hcnJheUAxLjAuMC9ub2RlX21vZHVsZXMvdmFsaWRhdGUuaW8taW50ZWdlci1hcnJheS9saWIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3ZhbGlkYXRlLmlvLWZ1bmN0aW9uQDEuMC4yL25vZGVfbW9kdWxlcy92YWxpZGF0ZS5pby1mdW5jdGlvbi9saWIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2NvbXB1dGUtZ2NkQDEuMi4xL25vZGVfbW9kdWxlcy9jb21wdXRlLWdjZC9saWIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2NvbXB1dGUtbGNtQDEuMS4yL25vZGVfbW9kdWxlcy9jb21wdXRlLWxjbS9saWIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2N1c3RvbURlZmF1bHRzTWVyZ2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVyZ2VXaXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2RlZmF1bHRzRGVlcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pbnRlcnNlY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJbmRleE9mV2l0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVB1bGxBbGwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvcHVsbEFsbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9mb3JFYWNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRGlmZmVyZW5jZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC93aXRob3V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZkAwLjguMS9ub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2Yvc3JjL2NvbW1vbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2ZAMC44LjEvbm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mL3NyYy9jb21wbGV4LXJlc29sdmVycy9wcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZkAwLjguMS9ub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2Yvc3JjL2NvbXBsZXgtcmVzb2x2ZXJzL2l0ZW1zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZkAwLjguMS9ub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2Yvc3JjL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9nZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9ndWVzc1R5cGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdW5pb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldFNjaGVtYVR5cGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL21lcmdlU2NoZW1hcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL3JldHJpZXZlU2NoZW1hLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9pc0ZpeGVkSXRlbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL21lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL21lcmdlT2JqZWN0cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvaXNDb25zdGFudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL2lzU2VsZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvaXNNdWx0aVNlbGVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL2dldERlZmF1bHRGb3JtU3RhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2lzQ3VzdG9tV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvaXNGaWxlc0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvZ2V0RGlzcGxheUxhYmVsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvbWVyZ2VWYWxpZGF0aW9uRGF0YS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL3Nhbml0aXplRGF0YUZvck5ld1NjaGVtYS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL3RvSWRTY2hlbWEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS90b1BhdGhTY2hlbWEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2NyZWF0ZVNjaGVtYVV0aWxzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9kYXRhVVJJdG9CbG9iLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9wYWQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2RhdGVSYW5nZU9wdGlvbnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3JlcGxhY2VTdHJpbmdQYXJhbWV0ZXJzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9lbmdsaXNoU3RyaW5nVHJhbnNsYXRvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9lbnVtT3B0aW9uc0Rlc2VsZWN0VmFsdWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2VudW1PcHRpb25zSXNTZWxlY3RlZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZW51bU9wdGlvbnNJbmRleEZvclZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTmlsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9lbnVtT3B0aW9uc1NlbGVjdFZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3NldFdpdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL0Vycm9yU2NoZW1hQnVpbGRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0RGF0ZUVsZW1lbnRQcm9wcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvcmFuZ2VTcGVjLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9nZXRJbnB1dFByb3BzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9nZXRTdWJtaXRCdXR0b25PcHRpb25zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9nZXRUZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtaXNAMTguMy4xL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWlzQDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldFdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvaGFzV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9pZEdlbmVyYXRvcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2xhYmVsVmFsdWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2xvY2FsVG9VVEMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3RvQ29uc3RhbnQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL29wdGlvbnNMaXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9vcmRlclByb3BlcnRpZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3BhcnNlRGF0ZVN0cmluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hUmVxdWlyZXNUcnVlVmFsdWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3Nob3VsZFJlbmRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvdG9EYXRlU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi90b0Vycm9yTGlzdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC90b1BhdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3RvRXJyb3JTY2hlbWEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3Vud3JhcEVycm9ySGFuZGxlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvdXRjVG9Mb2NhbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvdmFsaWRhdGlvbkRhdGFNZXJnZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvd2l0aElkUmVmUHJlZml4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9lbnVtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdXJpLWpzQDQuNC4xL25vZGVfbW9kdWxlcy91cmktanMvZGlzdC9lczUvdXJpLmFsbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmFzdC1kZWVwLWVxdWFsQDMuMS4zL25vZGVfbW9kdWxlcy9mYXN0LWRlZXAtZXF1YWwvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS91Y3MybGVuZ3RoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvdXRpbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3NjaGVtYV9vYmouanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb24tc2NoZW1hLXRyYXZlcnNlQDAuNC4xL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS10cmF2ZXJzZS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3Jlc29sdmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9lcnJvcl9jbGFzc2VzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mYXN0LWpzb24tc3RhYmxlLXN0cmluZ2lmeUAyLjEuMC9ub2RlX21vZHVsZXMvZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnkvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvdmFsaWRhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jYWNoZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL2Zvcm1hdHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvcmVmLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2FsbE9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2FueU9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2NvbW1lbnQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvY29uc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvY29udGFpbnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvZGVwZW5kZW5jaWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2VudW0uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvZm9ybWF0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2lmLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2l0ZW1zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL19saW1pdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9fbGltaXRJdGVtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9fbGltaXRMZW5ndGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvX2xpbWl0UHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9tdWx0aXBsZU9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL25vdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9vbmVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9wYXR0ZXJuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL3Byb3BlcnRpZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvcHJvcGVydHlOYW1lcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9yZXF1aXJlZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy91bmlxdWVJdGVtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3J1bGVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9hc3luYy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9jdXN0b20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZGVmaW5pdGlvbl9zY2hlbWEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIva2V5d29yZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9hanYuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3ZhbGlkYXRvci1hanY2QDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdmFsaWRhdG9yLWFqdjYvbGliL2NyZWF0ZUFqdkluc3RhbmNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit2YWxpZGF0b3ItYWp2NkA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3ZhbGlkYXRvci1hanY2L2xpYi92YWxpZGF0b3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3ZhbGlkYXRvci1hanY2QDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdmFsaWRhdG9yLWFqdjYvbGliL2N1c3RvbWl6ZVZhbGlkYXRvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdmFsaWRhdG9yLWFqdjZANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi92YWxpZGF0b3ItYWp2Ni9saWIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQaWNrQnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQaWNrLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3BpY2suanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL25hbm9pZEAzLjMuOC9ub2RlX21vZHVsZXMvbmFub2lkL2luZGV4LmJyb3dzZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9BcnJheUZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvQm9vbGVhbkZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvTXVsdGlTY2hlbWFGaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvZmllbGRzL051bWJlckZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9tYXJrZG93bi10by1qc3hANy43LjIvbm9kZV9tb2R1bGVzL21hcmtkb3duLXRvLWpzeC9kaXN0L2luZGV4Lm1vZGVybi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC91bnNldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvZmllbGRzL09iamVjdEZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvU2NoZW1hRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9TdHJpbmdGaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvZmllbGRzL051bGxGaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvZmllbGRzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9BcnJheUZpZWxkSXRlbVRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvQXJyYXlGaWVsZFRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvQXJyYXlGaWVsZFRpdGxlVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9CYXNlSW5wdXRUZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0J1dHRvblRlbXBsYXRlcy9TdWJtaXRCdXR0b24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9CdXR0b25UZW1wbGF0ZXMvSWNvbkJ1dHRvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0J1dHRvblRlbXBsYXRlcy9BZGRCdXR0b24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9CdXR0b25UZW1wbGF0ZXMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9EZXNjcmlwdGlvbkZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvRXJyb3JMaXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvRmllbGRUZW1wbGF0ZS9MYWJlbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0ZpZWxkVGVtcGxhdGUvRmllbGRUZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0ZpZWxkRXJyb3JUZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0ZpZWxkSGVscFRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvT2JqZWN0RmllbGRUZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL1RpdGxlRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9VbnN1cHBvcnRlZEZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvQWx0RGF0ZVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9BbHREYXRlVGltZVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9DaGVja2JveFdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9DaGVja2JveGVzV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0NvbG9yV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0RhdGVXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvRGF0ZVRpbWVXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvRW1haWxXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvRmlsZVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9IaWRkZW5XaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvUGFzc3dvcmRXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvUmFkaW9XaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvUmFuZ2VXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvU2VsZWN0V2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL1RleHRhcmVhV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL1RleHRXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvVGltZVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9VUkxXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvVXBEb3duV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvZ2V0RGVmYXVsdFJlZ2lzdHJ5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9Gb3JtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2RlbC9jb3VudHJ5LnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9jb3VudHJ5LnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NvbnRhY3QvQ29udGFjdE1vZGFsLnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvYWRkcmVzcy50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9jb250YWN0L0NvbnRhY3RNb2RhbENvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzbGliQDIuNi4yL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4zLjIvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvRW51bS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMy4yL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1V0aWxpdHkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjMuMi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9Ub2tlbml6ZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjMuMi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9QYXJzZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjMuMi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9QcmVmaXhlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMy4yL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1NlcmlhbGl6ZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjMuMi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9NaWRkbGV3YXJlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbit1bml0bGVzc0AwLjguMS9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdW5pdGxlc3MvZGlzdC9lbW90aW9uLXVuaXRsZXNzLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGVkLWNvbXBvbmVudHNANi4xLjEzL25vZGVfbW9kdWxlcy9zdHlsZWQtY29tcG9uZW50cy9kaXN0L3N0eWxlZC1jb21wb25lbnRzLmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9QcmltaXRpdmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRoSG9sZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5TGlrZVRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlUmVzdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvdXNlU3RhdGVNYW5hZ2VyLWNlMjMwNjFjLmNqcy5wcm9kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhvdXRIb2xlcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90YWdnZWRUZW1wbGF0ZUxpdGVyYWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BmbG9hdGluZy11aStkb21AMS42LjEyL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC9pbmRleC02NjVjNGVkOC5janMucHJvZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC9TZWxlY3QtMzZkMTVmOTMuY2pzLnByb2QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvcmVhY3Qtc2VsZWN0LmNqcy5wcm9kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L3JlYWN0LXNlbGVjdC5janMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvcmVhY3Qtc2VsZWN0LmNqcy5kZWZhdWx0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2Jhc2UvU2VsZWN0TGFiZWwudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NvbnRhY3QvQ29udGFjdFNlbGVjdC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9BZGRyZXNzTW9kYWwudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NvbnRhY3QvQWRkcmVzc01vZGFsQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9jb250YWN0L0FkZHJlc3NEZXRhaWwudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NvbnRhY3QvQWRkcmVzc1NlbGVjdC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL2FjY291bnQudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvYWNjb3VudC9BY2NvdW50U2VsZWN0Q29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9jb250YWN0L0NvbnRhY3RDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3R5cGUvVHlwZVNlbGVjdENvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL3Nob3AudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvc2hvcC9TaG9wU2VsZWN0Q29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9kcmFmdC9EcmFmdENvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL29yZGVyLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2Jhc2UvQ3VycmVuY3kudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NhbGMvQ2FsY0NvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvdG9wYmFyL1RvcEJhckNvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL3Byb2R1Y3RHcm91cC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvcHJvZHVjdGdyb3VwLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L3VzZUFzeW5jLWJlNjU5YTU3LmNqcy5wcm9kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9hc3luYy9kaXN0L3JlYWN0LXNlbGVjdC1hc3luYy5janMucHJvZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvYXN5bmMvZGlzdC9yZWFjdC1zZWxlY3QtYXN5bmMuY2pzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9hc3luYy9kaXN0L3JlYWN0LXNlbGVjdC1hc3luYy5janMuZGVmYXVsdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wcm9kdWN0L1Byb2R1Y3RHcm91cFNlbGVjdC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL3Byb2R1Y3QudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3VzZS1kZWJvdW5jZUAxMC4wLjQvbm9kZV9tb2R1bGVzL3VzZS1kZWJvdW5jZS9kaXN0L2luZGV4Lm1vZHVsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wcm9kdWN0L1Byb2R1Y3RTZWxlY3QudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Byb2R1Y3QvUHJvZHVjdEZvcm0udHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Bvc2l0aW9ucy9BZGRQb3NpdGlvbkNvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvcG9zaXRpb25zL0VkaXRQb3NpdGlvbkNvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvcG9zaXRpb25zL1Bvc0NvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvcG9zaXRpb25zL0l0ZW1zQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wb3NpdGlvbnMvUG9zaXRpb25zQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvcGF5bWVudC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wYXltZW50L1BheW1lbnRDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9zaGlwcGluZy50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9zaGlwcGluZy9TaGlwcGluZ0NvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvYnV0dG9uL0J1dHRvbkNvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Nvb2tpZUAxLjAuMi9ub2RlX21vZHVsZXMvY29va2llL2Rpc3QvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXJvdXRlckA3LjAuMi9ub2RlX21vZHVsZXMvcmVhY3Qtcm91dGVyL2Rpc3QvZGV2ZWxvcG1lbnQvY2h1bmstRDUyWEc2SUEubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2luZm8vSW5mb0ZpZWxkQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9vcmRlci9PcmRlckFsaWFzQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9iYXNlL0Jhc2VDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9hcHAvYXBwLnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbWFpbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKEMpIE1pY3Jvc29mdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxudGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGVcbkxpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbktJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gQU5ZIElNUExJRURcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXG5NRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULlxuXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbmFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG52YXIgUmVmbGVjdDtcbihmdW5jdGlvbiAoUmVmbGVjdCkge1xuICAgIC8vIE1ldGFkYXRhIFByb3Bvc2FsXG4gICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS9cbiAgICAoZnVuY3Rpb24gKGZhY3RvcnkpIHtcbiAgICAgICAgdmFyIHJvb3QgPSB0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gXCJvYmplY3RcIiA/IGdsb2JhbFRoaXMgOlxuICAgICAgICAgICAgdHlwZW9mIGdsb2JhbCA9PT0gXCJvYmplY3RcIiA/IGdsb2JhbCA6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMgPT09IFwib2JqZWN0XCIgPyB0aGlzIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsb3BweU1vZGVUaGlzKCk7XG4gICAgICAgIHZhciBleHBvcnRlciA9IG1ha2VFeHBvcnRlcihSZWZsZWN0KTtcbiAgICAgICAgaWYgKHR5cGVvZiByb290LlJlZmxlY3QgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIGV4cG9ydGVyID0gbWFrZUV4cG9ydGVyKHJvb3QuUmVmbGVjdCwgZXhwb3J0ZXIpO1xuICAgICAgICB9XG4gICAgICAgIGZhY3RvcnkoZXhwb3J0ZXIsIHJvb3QpO1xuICAgICAgICBpZiAodHlwZW9mIHJvb3QuUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgcm9vdC5SZWZsZWN0ID0gUmVmbGVjdDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBtYWtlRXhwb3J0ZXIodGFyZ2V0LCBwcmV2aW91cykge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXMpXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmdW5jdGlvblRoaXMoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbihcInJldHVybiB0aGlzO1wiKSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF8pIHsgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGluZGlyZWN0RXZhbFRoaXMoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiAodm9pZCAwLCBldmFsKShcIihmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pKClcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykgeyB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2xvcHB5TW9kZVRoaXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25UaGlzKCkgfHwgaW5kaXJlY3RFdmFsVGhpcygpO1xuICAgICAgICB9XG4gICAgfSkoZnVuY3Rpb24gKGV4cG9ydGVyLCByb290KSB7XG4gICAgICAgIHZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuICAgICAgICAvLyBmZWF0dXJlIHRlc3QgZm9yIFN5bWJvbCBzdXBwb3J0XG4gICAgICAgIHZhciBzdXBwb3J0c1N5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIjtcbiAgICAgICAgdmFyIHRvUHJpbWl0aXZlU3ltYm9sID0gc3VwcG9ydHNTeW1ib2wgJiYgdHlwZW9mIFN5bWJvbC50b1ByaW1pdGl2ZSAhPT0gXCJ1bmRlZmluZWRcIiA/IFN5bWJvbC50b1ByaW1pdGl2ZSA6IFwiQEB0b1ByaW1pdGl2ZVwiO1xuICAgICAgICB2YXIgaXRlcmF0b3JTeW1ib2wgPSBzdXBwb3J0c1N5bWJvbCAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yICE9PSBcInVuZGVmaW5lZFwiID8gU3ltYm9sLml0ZXJhdG9yIDogXCJAQGl0ZXJhdG9yXCI7XG4gICAgICAgIHZhciBzdXBwb3J0c0NyZWF0ZSA9IHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSBcImZ1bmN0aW9uXCI7IC8vIGZlYXR1cmUgdGVzdCBmb3IgT2JqZWN0LmNyZWF0ZSBzdXBwb3J0XG4gICAgICAgIHZhciBzdXBwb3J0c1Byb3RvID0geyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheTsgLy8gZmVhdHVyZSB0ZXN0IGZvciBfX3Byb3RvX18gc3VwcG9ydFxuICAgICAgICB2YXIgZG93bkxldmVsID0gIXN1cHBvcnRzQ3JlYXRlICYmICFzdXBwb3J0c1Byb3RvO1xuICAgICAgICB2YXIgSGFzaE1hcCA9IHtcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBhbiBvYmplY3QgaW4gZGljdGlvbmFyeSBtb2RlIChhLmsuYS4gXCJzbG93XCIgbW9kZSBpbiB2OClcbiAgICAgICAgICAgIGNyZWF0ZTogc3VwcG9ydHNDcmVhdGVcbiAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1ha2VEaWN0aW9uYXJ5KE9iamVjdC5jcmVhdGUobnVsbCkpOyB9XG4gICAgICAgICAgICAgICAgOiBzdXBwb3J0c1Byb3RvXG4gICAgICAgICAgICAgICAgICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gTWFrZURpY3Rpb25hcnkoeyBfX3Byb3RvX186IG51bGwgfSk7IH1cbiAgICAgICAgICAgICAgICAgICAgOiBmdW5jdGlvbiAoKSB7IHJldHVybiBNYWtlRGljdGlvbmFyeSh7fSk7IH0sXG4gICAgICAgICAgICBoYXM6IGRvd25MZXZlbFxuICAgICAgICAgICAgICAgID8gZnVuY3Rpb24gKG1hcCwga2V5KSB7IHJldHVybiBoYXNPd24uY2FsbChtYXAsIGtleSk7IH1cbiAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4ga2V5IGluIG1hcDsgfSxcbiAgICAgICAgICAgIGdldDogZG93bkxldmVsXG4gICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAobWFwLCBrZXkpIHsgcmV0dXJuIGhhc093bi5jYWxsKG1hcCwga2V5KSA/IG1hcFtrZXldIDogdW5kZWZpbmVkOyB9XG4gICAgICAgICAgICAgICAgOiBmdW5jdGlvbiAobWFwLCBrZXkpIHsgcmV0dXJuIG1hcFtrZXldOyB9LFxuICAgICAgICB9O1xuICAgICAgICAvLyBMb2FkIGdsb2JhbCBvciBzaGltIHZlcnNpb25zIG9mIE1hcCwgU2V0LCBhbmQgV2Vha01hcFxuICAgICAgICB2YXIgZnVuY3Rpb25Qcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoRnVuY3Rpb24pO1xuICAgICAgICB2YXIgX01hcCA9IHR5cGVvZiBNYXAgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgTWFwLnByb3RvdHlwZS5lbnRyaWVzID09PSBcImZ1bmN0aW9uXCIgPyBNYXAgOiBDcmVhdGVNYXBQb2x5ZmlsbCgpO1xuICAgICAgICB2YXIgX1NldCA9IHR5cGVvZiBTZXQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU2V0LnByb3RvdHlwZS5lbnRyaWVzID09PSBcImZ1bmN0aW9uXCIgPyBTZXQgOiBDcmVhdGVTZXRQb2x5ZmlsbCgpO1xuICAgICAgICB2YXIgX1dlYWtNYXAgPSB0eXBlb2YgV2Vha01hcCA9PT0gXCJmdW5jdGlvblwiID8gV2Vha01hcCA6IENyZWF0ZVdlYWtNYXBQb2x5ZmlsbCgpO1xuICAgICAgICB2YXIgcmVnaXN0cnlTeW1ib2wgPSBzdXBwb3J0c1N5bWJvbCA/IFN5bWJvbC5mb3IoXCJAcmVmbGVjdC1tZXRhZGF0YTpyZWdpc3RyeVwiKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIG1ldGFkYXRhUmVnaXN0cnkgPSBHZXRPckNyZWF0ZU1ldGFkYXRhUmVnaXN0cnkoKTtcbiAgICAgICAgdmFyIG1ldGFkYXRhUHJvdmlkZXIgPSBDcmVhdGVNZXRhZGF0YVByb3ZpZGVyKG1ldGFkYXRhUmVnaXN0cnkpO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXBwbGllcyBhIHNldCBvZiBkZWNvcmF0b3JzIHRvIGEgcHJvcGVydHkgb2YgYSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gZGVjb3JhdG9ycyBBbiBhcnJheSBvZiBkZWNvcmF0b3JzLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IHRvIGRlY29yYXRlLlxuICAgICAgICAgKiBAcGFyYW0gYXR0cmlidXRlcyAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgdGFyZ2V0IGtleS5cbiAgICAgICAgICogQHJlbWFya3MgRGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpbiByZXZlcnNlIG9yZGVyLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICBFeGFtcGxlID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgIFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9yc0FycmF5LCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpKSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIixcbiAgICAgICAgICogICAgICAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIsXG4gICAgICAgICAqICAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpKSk7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBkZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSkge1xuICAgICAgICAgICAgICAgIGlmICghSXNBcnJheShkZWNvcmF0b3JzKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QoYXR0cmlidXRlcykgJiYgIUlzVW5kZWZpbmVkKGF0dHJpYnV0ZXMpICYmICFJc051bGwoYXR0cmlidXRlcykpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBpZiAoSXNOdWxsKGF0dHJpYnV0ZXMpKVxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIERlY29yYXRlUHJvcGVydHkoZGVjb3JhdG9ycywgdGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIUlzQXJyYXkoZGVjb3JhdG9ycykpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzQ29uc3RydWN0b3IodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBEZWNvcmF0ZUNvbnN0cnVjdG9yKGRlY29yYXRvcnMsIHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJkZWNvcmF0ZVwiLCBkZWNvcmF0ZSk7XG4gICAgICAgIC8vIDQuMS4yIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI3JlZmxlY3QubWV0YWRhdGFcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgZGVmYXVsdCBtZXRhZGF0YSBkZWNvcmF0b3IgZmFjdG9yeSB0aGF0IGNhbiBiZSB1c2VkIG9uIGEgY2xhc3MsIGNsYXNzIG1lbWJlciwgb3IgcGFyYW1ldGVyLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgVGhlIGtleSBmb3IgdGhlIG1ldGFkYXRhIGVudHJ5LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFWYWx1ZSBUaGUgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBlbnRyeS5cbiAgICAgICAgICogQHJldHVybnMgQSBkZWNvcmF0b3IgZnVuY3Rpb24uXG4gICAgICAgICAqIEByZW1hcmtzXG4gICAgICAgICAqIElmIGBtZXRhZGF0YUtleWAgaXMgYWxyZWFkeSBkZWZpbmVkIGZvciB0aGUgdGFyZ2V0IGFuZCB0YXJnZXQga2V5LCB0aGVcbiAgICAgICAgICogbWV0YWRhdGFWYWx1ZSBmb3IgdGhhdCBrZXkgd2lsbCBiZSBvdmVyd3JpdHRlbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IsIFR5cGVTY3JpcHQgb25seSlcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSwgVHlwZVNjcmlwdCBvbmx5KVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBwcm9wZXJ0eTtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBtZXRob2QoKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIG1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpICYmICFJc1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlY29yYXRvcjtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcIm1ldGFkYXRhXCIsIG1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlZmluZSBhIHVuaXF1ZSBtZXRhZGF0YSBlbnRyeSBvbiB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YVZhbHVlIEEgdmFsdWUgdGhhdCBjb250YWlucyBhdHRhY2hlZCBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0byBkZWZpbmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgb3B0aW9ucywgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBkZWNvcmF0b3IgZmFjdG9yeSBhcyBtZXRhZGF0YS1wcm9kdWNpbmcgYW5ub3RhdGlvbi5cbiAgICAgICAgICogICAgIGZ1bmN0aW9uIE15QW5ub3RhdGlvbihvcHRpb25zKTogRGVjb3JhdG9yIHtcbiAgICAgICAgICogICAgICAgICByZXR1cm4gKHRhcmdldCwga2V5PykgPT4gUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIHRhcmdldCwga2V5KTtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGRlZmluZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImRlZmluZU1ldGFkYXRhXCIsIGRlZmluZU1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbiBoYXMgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWV0YWRhdGEga2V5IHdhcyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0IG9yIGl0cyBwcm90b3R5cGUgY2hhaW47IG90aGVyd2lzZSwgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImhhc01ldGFkYXRhXCIsIGhhc01ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhcmdldCBvYmplY3QgaGFzIHRoZSBwcm92aWRlZCBtZXRhZGF0YSBrZXkgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG1ldGFkYXRhIGtleSB3YXMgZGVmaW5lZCBvbiB0aGUgdGFyZ2V0IG9iamVjdDsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gaGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5SGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiaGFzT3duTWV0YWRhdGFcIiwgaGFzT3duTWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyB0aGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBwcm92aWRlZCBtZXRhZGF0YSBrZXkgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbi5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBUaGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBrZXkgaWYgZm91bmQ7IG90aGVyd2lzZSwgYHVuZGVmaW5lZGAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRNZXRhZGF0YVwiLCBnZXRNZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBvbiB0aGUgdGFyZ2V0IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBUaGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBrZXkgaWYgZm91bmQ7IG90aGVyd2lzZSwgYHVuZGVmaW5lZGAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRPd25NZXRhZGF0YVwiLCBnZXRPd25NZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSBrZXlzIGRlZmluZWQgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbi5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdW5pcXVlIG1ldGFkYXRhIGtleXMuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ2V0TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZ2V0TWV0YWRhdGFLZXlzXCIsIGdldE1ldGFkYXRhS2V5cyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSB1bmlxdWUgbWV0YWRhdGEga2V5cyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB1bmlxdWUgbWV0YWRhdGEga2V5cy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlPd25NZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRPd25NZXRhZGF0YUtleXNcIiwgZ2V0T3duTWV0YWRhdGFLZXlzKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlbGV0ZXMgdGhlIG1ldGFkYXRhIGVudHJ5IGZyb20gdGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgcHJvdmlkZWQga2V5LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWV0YWRhdGEgZW50cnkgd2FzIGZvdW5kIGFuZCBkZWxldGVkOyBvdGhlcndpc2UsIGZhbHNlLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5kZWxldGVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZGVsZXRlTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBHZXRNZXRhZGF0YVByb3ZpZGVyKHRhcmdldCwgcHJvcGVydHlLZXksIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHByb3ZpZGVyKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuT3JkaW5hcnlEZWxldGVNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJkZWxldGVNZXRhZGF0YVwiLCBkZWxldGVNZXRhZGF0YSk7XG4gICAgICAgIGZ1bmN0aW9uIERlY29yYXRlQ29uc3RydWN0b3IoZGVjb3JhdG9ycywgdGFyZ2V0KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWNvcmF0b3IgPSBkZWNvcmF0b3JzW2ldO1xuICAgICAgICAgICAgICAgIHZhciBkZWNvcmF0ZWQgPSBkZWNvcmF0b3IodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKGRlY29yYXRlZCkgJiYgIUlzTnVsbChkZWNvcmF0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNDb25zdHJ1Y3RvcihkZWNvcmF0ZWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBkZWNvcmF0ZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBEZWNvcmF0ZVByb3BlcnR5KGRlY29yYXRvcnMsIHRhcmdldCwgcHJvcGVydHlLZXksIGRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRlZCA9IGRlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKGRlY29yYXRlZCkgJiYgIUlzTnVsbChkZWNvcmF0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QoZGVjb3JhdGVkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvciA9IGRlY29yYXRlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuMS4xIE9yZGluYXJ5SGFzTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5aGFzbWV0YWRhdGFcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlIYXNNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkge1xuICAgICAgICAgICAgdmFyIGhhc093biA9IE9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICAgICAgICAgICAgaWYgKGhhc093bilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXJlbnQgPSBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pO1xuICAgICAgICAgICAgaWYgKCFJc051bGwocGFyZW50KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlIYXNNZXRhZGF0YShNZXRhZGF0YUtleSwgcGFyZW50LCBQKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuMi4xIE9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5aGFzb3dubWV0YWRhdGFcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkge1xuICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gR2V0TWV0YWRhdGFQcm92aWRlcihPLCBQLCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChwcm92aWRlcikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIFRvQm9vbGVhbihwcm92aWRlci5PcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjMuMSBPcmRpbmFyeUdldE1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWdldG1ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBoYXNPd24gPSBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgICAgICAgICAgIGlmIChoYXNPd24pXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICAgICAgICAgICAgdmFyIHBhcmVudCA9IE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTyk7XG4gICAgICAgICAgICBpZiAoIUlzTnVsbChwYXJlbnQpKVxuICAgICAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE1ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNC4xIE9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5Z2V0b3dubWV0YWRhdGFcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkge1xuICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gR2V0TWV0YWRhdGFQcm92aWRlcihPLCBQLCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChwcm92aWRlcikpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyLk9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS41LjEgT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlkZWZpbmVvd25tZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlLCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBHZXRNZXRhZGF0YVByb3ZpZGVyKE8sIFAsIC8qQ3JlYXRlKi8gdHJ1ZSk7XG4gICAgICAgICAgICBwcm92aWRlci5PcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlLCBPLCBQKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNi4xIE9yZGluYXJ5TWV0YWRhdGFLZXlzKE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5bWV0YWRhdGFrZXlzXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5TWV0YWRhdGFLZXlzKE8sIFApIHtcbiAgICAgICAgICAgIHZhciBvd25LZXlzID0gT3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUCk7XG4gICAgICAgICAgICB2YXIgcGFyZW50ID0gT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG93bktleXM7XG4gICAgICAgICAgICB2YXIgcGFyZW50S2V5cyA9IE9yZGluYXJ5TWV0YWRhdGFLZXlzKHBhcmVudCwgUCk7XG4gICAgICAgICAgICBpZiAocGFyZW50S2V5cy5sZW5ndGggPD0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gb3duS2V5cztcbiAgICAgICAgICAgIGlmIChvd25LZXlzLmxlbmd0aCA8PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRLZXlzO1xuICAgICAgICAgICAgdmFyIHNldCA9IG5ldyBfU2V0KCk7XG4gICAgICAgICAgICB2YXIga2V5cyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBvd25LZXlzXzEgPSBvd25LZXlzOyBfaSA8IG93bktleXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gb3duS2V5c18xW19pXTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzS2V5ID0gc2V0LmhhcyhrZXkpO1xuICAgICAgICAgICAgICAgIGlmICghaGFzS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgX2EgPSAwLCBwYXJlbnRLZXlzXzEgPSBwYXJlbnRLZXlzOyBfYSA8IHBhcmVudEtleXNfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gcGFyZW50S2V5c18xW19hXTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzS2V5ID0gc2V0LmhhcyhrZXkpO1xuICAgICAgICAgICAgICAgIGlmICghaGFzS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjcuMSBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeW93bm1ldGFkYXRha2V5c1xuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKSB7XG4gICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBHZXRNZXRhZGF0YVByb3ZpZGVyKE8sIFAsIC8qY3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKCFwcm92aWRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlci5PcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKTtcbiAgICAgICAgfVxuICAgICAgICAvLyA2IEVDTUFTY3JpcHQgRGF0YSBUeXBlcyBhbmQgVmFsdWVzXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtZGF0YS10eXBlcy1hbmQtdmFsdWVzXG4gICAgICAgIGZ1bmN0aW9uIFR5cGUoeCkge1xuICAgICAgICAgICAgaWYgKHggPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLyogTnVsbCAqLztcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIHgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwidW5kZWZpbmVkXCI6IHJldHVybiAwIC8qIFVuZGVmaW5lZCAqLztcbiAgICAgICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOiByZXR1cm4gMiAvKiBCb29sZWFuICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjogcmV0dXJuIDMgLyogU3RyaW5nICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzeW1ib2xcIjogcmV0dXJuIDQgLyogU3ltYm9sICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjogcmV0dXJuIDUgLyogTnVtYmVyICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjogcmV0dXJuIHggPT09IG51bGwgPyAxIC8qIE51bGwgKi8gOiA2IC8qIE9iamVjdCAqLztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gNiAvKiBPYmplY3QgKi87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gNi4xLjEgVGhlIFVuZGVmaW5lZCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMtdW5kZWZpbmVkLXR5cGVcbiAgICAgICAgZnVuY3Rpb24gSXNVbmRlZmluZWQoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHggPT09IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuMiBUaGUgTnVsbCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMtbnVsbC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzTnVsbCh4KSB7XG4gICAgICAgICAgICByZXR1cm4geCA9PT0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuNSBUaGUgU3ltYm9sIFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcy1zeW1ib2wtdHlwZVxuICAgICAgICBmdW5jdGlvbiBJc1N5bWJvbCh4KSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNi4xLjcgVGhlIE9iamVjdCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzT2JqZWN0KHgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiA/IHggIT09IG51bGwgOiB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMSBUeXBlIENvbnZlcnNpb25cbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdHlwZS1jb252ZXJzaW9uXG4gICAgICAgIC8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxuICAgICAgICBmdW5jdGlvbiBUb1ByaW1pdGl2ZShpbnB1dCwgUHJlZmVycmVkVHlwZSkge1xuICAgICAgICAgICAgc3dpdGNoIChUeXBlKGlucHV0KSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMCAvKiBVbmRlZmluZWQgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDEgLyogTnVsbCAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgMiAvKiBCb29sZWFuICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSAzIC8qIFN0cmluZyAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgNCAvKiBTeW1ib2wgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDUgLyogTnVtYmVyICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaGludCA9IFByZWZlcnJlZFR5cGUgPT09IDMgLyogU3RyaW5nICovID8gXCJzdHJpbmdcIiA6IFByZWZlcnJlZFR5cGUgPT09IDUgLyogTnVtYmVyICovID8gXCJudW1iZXJcIiA6IFwiZGVmYXVsdFwiO1xuICAgICAgICAgICAgdmFyIGV4b3RpY1RvUHJpbSA9IEdldE1ldGhvZChpbnB1dCwgdG9QcmltaXRpdmVTeW1ib2wpO1xuICAgICAgICAgICAgaWYgKGV4b3RpY1RvUHJpbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGV4b3RpY1RvUHJpbS5jYWxsKGlucHV0LCBoaW50KTtcbiAgICAgICAgICAgICAgICBpZiAoSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgaGludCA9PT0gXCJkZWZhdWx0XCIgPyBcIm51bWJlclwiIDogaGludCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xLjEuMSBPcmRpbmFyeVRvUHJpbWl0aXZlKE8sIGhpbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlUb1ByaW1pdGl2ZShPLCBoaW50KSB7XG4gICAgICAgICAgICBpZiAoaGludCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHZhciB0b1N0cmluZ18xID0gTy50b1N0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh0b1N0cmluZ18xKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdG9TdHJpbmdfMS5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVPZiA9IE8udmFsdWVPZjtcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh2YWx1ZU9mKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdmFsdWVPZi5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZU9mID0gTy52YWx1ZU9mO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHZhbHVlT2YpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB2YWx1ZU9mLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB0b1N0cmluZ18yID0gTy50b1N0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh0b1N0cmluZ18yKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdG9TdHJpbmdfMi5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMiBUb0Jvb2xlYW4oYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8yMDE2LyNzZWMtdG9ib29sZWFuXG4gICAgICAgIGZ1bmN0aW9uIFRvQm9vbGVhbihhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuICEhYXJndW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xLjEyIFRvU3RyaW5nKGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3N0cmluZ1xuICAgICAgICBmdW5jdGlvbiBUb1N0cmluZyhhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBhcmd1bWVudDtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMTQgVG9Qcm9wZXJ0eUtleShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxuICAgICAgICBmdW5jdGlvbiBUb1Byb3BlcnR5S2V5KGFyZ3VtZW50KSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gVG9QcmltaXRpdmUoYXJndW1lbnQsIDMgLyogU3RyaW5nICovKTtcbiAgICAgICAgICAgIGlmIChJc1N5bWJvbChrZXkpKVxuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICByZXR1cm4gVG9TdHJpbmcoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjIgVGVzdGluZyBhbmQgQ29tcGFyaXNvbiBPcGVyYXRpb25zXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRlc3RpbmctYW5kLWNvbXBhcmlzb24tb3BlcmF0aW9uc1xuICAgICAgICAvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2FycmF5XG4gICAgICAgIGZ1bmN0aW9uIElzQXJyYXkoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5XG4gICAgICAgICAgICAgICAgPyBBcnJheS5pc0FycmF5KGFyZ3VtZW50KVxuICAgICAgICAgICAgICAgIDogYXJndW1lbnQgaW5zdGFuY2VvZiBPYmplY3RcbiAgICAgICAgICAgICAgICAgICAgPyBhcmd1bWVudCBpbnN0YW5jZW9mIEFycmF5XG4gICAgICAgICAgICAgICAgICAgIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMi4zIElzQ2FsbGFibGUoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzY2FsbGFibGVcbiAgICAgICAgZnVuY3Rpb24gSXNDYWxsYWJsZShhcmd1bWVudCkge1xuICAgICAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhbiBhcHByb3hpbWF0aW9uIGFzIHdlIGNhbm5vdCBjaGVjayBmb3IgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kLlxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMi40IElzQ29uc3RydWN0b3IoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzY29uc3RydWN0b3JcbiAgICAgICAgZnVuY3Rpb24gSXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkge1xuICAgICAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhbiBhcHByb3hpbWF0aW9uIGFzIHdlIGNhbm5vdCBjaGVjayBmb3IgW1tDb25zdHJ1Y3RdXSBpbnRlcm5hbCBtZXRob2QuXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4yLjcgSXNQcm9wZXJ0eUtleShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNwcm9wZXJ0eWtleVxuICAgICAgICBmdW5jdGlvbiBJc1Byb3BlcnR5S2V5KGFyZ3VtZW50KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKFR5cGUoYXJndW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAzIC8qIFN0cmluZyAqLzogcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgY2FzZSA0IC8qIFN5bWJvbCAqLzogcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIFNhbWVWYWx1ZVplcm8oeCwgeSkge1xuICAgICAgICAgICAgcmV0dXJuIHggPT09IHkgfHwgeCAhPT0geCAmJiB5ICE9PSB5O1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMyBPcGVyYXRpb25zIG9uIE9iamVjdHNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3BlcmF0aW9ucy1vbi1vYmplY3RzXG4gICAgICAgIC8vIDcuMy45IEdldE1ldGhvZChWLCBQKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXRtZXRob2RcbiAgICAgICAgZnVuY3Rpb24gR2V0TWV0aG9kKFYsIFApIHtcbiAgICAgICAgICAgIHZhciBmdW5jID0gVltQXTtcbiAgICAgICAgICAgIGlmIChmdW5jID09PSB1bmRlZmluZWQgfHwgZnVuYyA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKCFJc0NhbGxhYmxlKGZ1bmMpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuNCBPcGVyYXRpb25zIG9uIEl0ZXJhdG9yIE9iamVjdHNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3BlcmF0aW9ucy1vbi1pdGVyYXRvci1vYmplY3RzXG4gICAgICAgIGZ1bmN0aW9uIEdldEl0ZXJhdG9yKG9iaikge1xuICAgICAgICAgICAgdmFyIG1ldGhvZCA9IEdldE1ldGhvZChvYmosIGl0ZXJhdG9yU3ltYm9sKTtcbiAgICAgICAgICAgIGlmICghSXNDYWxsYWJsZShtZXRob2QpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTsgLy8gZnJvbSBDYWxsXG4gICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBtZXRob2QuY2FsbChvYmopO1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdChpdGVyYXRvcikpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuNC40IEl0ZXJhdG9yVmFsdWUoaXRlclJlc3VsdClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLzIwMTYvI3NlYy1pdGVyYXRvcnZhbHVlXG4gICAgICAgIGZ1bmN0aW9uIEl0ZXJhdG9yVmFsdWUoaXRlclJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZXJSZXN1bHQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40LjUgSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pdGVyYXRvcnN0ZXBcbiAgICAgICAgZnVuY3Rpb24gSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gZmFsc2UgOiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXRlcmF0b3JjbG9zZVxuICAgICAgICBmdW5jdGlvbiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yKSB7XG4gICAgICAgICAgICB2YXIgZiA9IGl0ZXJhdG9yW1wicmV0dXJuXCJdO1xuICAgICAgICAgICAgaWYgKGYpXG4gICAgICAgICAgICAgICAgZi5jYWxsKGl0ZXJhdG9yKTtcbiAgICAgICAgfVxuICAgICAgICAvLyA5LjEgT3JkaW5hcnkgT2JqZWN0IEludGVybmFsIE1ldGhvZHMgYW5kIEludGVybmFsIFNsb3RzXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5LW9iamVjdC1pbnRlcm5hbC1tZXRob2RzLWFuZC1pbnRlcm5hbC1zbG90c1xuICAgICAgICAvLyA5LjEuMS4xIE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTylcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnlnZXRwcm90b3R5cGVvZlxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pIHtcbiAgICAgICAgICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgTyAhPT0gXCJmdW5jdGlvblwiIHx8IE8gPT09IGZ1bmN0aW9uUHJvdG90eXBlKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIFR5cGVTY3JpcHQgZG9lc24ndCBzZXQgX19wcm90b19fIGluIEVTNSwgYXMgaXQncyBub24tc3RhbmRhcmQuXG4gICAgICAgICAgICAvLyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLiBDb21wYXRpYmxlIGltcGxlbWVudGF0aW9uc1xuICAgICAgICAgICAgLy8gbXVzdCBlaXRoZXIgc2V0IF9fcHJvdG9fXyBvbiBhIHN1YmNsYXNzIGNvbnN0cnVjdG9yIHRvIHRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLFxuICAgICAgICAgICAgLy8gb3IgZW5zdXJlIGVhY2ggY2xhc3MgaGFzIGEgdmFsaWQgYGNvbnN0cnVjdG9yYCBwcm9wZXJ0eSBvbiBpdHMgcHJvdG90eXBlIHRoYXRcbiAgICAgICAgICAgIC8vIHBvaW50cyBiYWNrIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIEZ1bmN0aW9uLltbUHJvdG90eXBlXV0sIHRoZW4gdGhpcyBpcyBkZWZpbmF0ZWx5IGluaGVyaXRlZC5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlbiBpbiBFUzYgb3Igd2hlbiB1c2luZyBfX3Byb3RvX18gaW4gYSBjb21wYXRpYmxlIGJyb3dzZXIuXG4gICAgICAgICAgICBpZiAocHJvdG8gIT09IGZ1bmN0aW9uUHJvdG90eXBlKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIElmIHRoZSBzdXBlciBwcm90b3R5cGUgaXMgT2JqZWN0LnByb3RvdHlwZSwgbnVsbCwgb3IgdW5kZWZpbmVkLCB0aGVuIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgdmFyIHByb3RvdHlwZSA9IE8ucHJvdG90eXBlO1xuICAgICAgICAgICAgdmFyIHByb3RvdHlwZVByb3RvID0gcHJvdG90eXBlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpO1xuICAgICAgICAgICAgaWYgKHByb3RvdHlwZVByb3RvID09IG51bGwgfHwgcHJvdG90eXBlUHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gSWYgdGhlIGNvbnN0cnVjdG9yIHdhcyBub3QgYSBmdW5jdGlvbiwgdGhlbiB3ZSBjYW5ub3QgZGV0ZXJtaW5lIHRoZSBoZXJpdGFnZS5cbiAgICAgICAgICAgIHZhciBjb25zdHJ1Y3RvciA9IHByb3RvdHlwZVByb3RvLmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zdHJ1Y3RvciAhPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgc29tZSBraW5kIG9mIHNlbGYtcmVmZXJlbmNlLCB0aGVuIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBPKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIHdlIGhhdmUgYSBwcmV0dHkgZ29vZCBndWVzcyBhdCB0aGUgaGVyaXRhZ2UuXG4gICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gICAgICAgIH1cbiAgICAgICAgLy8gR2xvYmFsIG1ldGFkYXRhIHJlZ2lzdHJ5XG4gICAgICAgIC8vIC0gQWxsb3dzIGBpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCJgIGFuZCBgaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YS9uby1jb25mbGljdFwiYCB0byBpbnRlcm9wZXJhdGUuXG4gICAgICAgIC8vIC0gVXNlcyBpc29sYXRlZCBtZXRhZGF0YSBpZiBgUmVmbGVjdGAgaXMgZnJvemVuIGJlZm9yZSB0aGUgcmVnaXN0cnkgY2FuIGJlIGluc3RhbGxlZC5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSByZWdpc3RyeSB1c2VkIHRvIGFsbG93IG11bHRpcGxlIGByZWZsZWN0LW1ldGFkYXRhYCBwcm92aWRlcnMuXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBDcmVhdGVNZXRhZGF0YVJlZ2lzdHJ5KCkge1xuICAgICAgICAgICAgdmFyIGZhbGxiYWNrO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChyZWdpc3RyeVN5bWJvbCkgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2Ygcm9vdC5SZWZsZWN0ICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICAgICAgICAgICAgIShyZWdpc3RyeVN5bWJvbCBpbiByb290LlJlZmxlY3QpICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIHJvb3QuUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgLy8gaW50ZXJvcGVyYXRlIHdpdGggb2xkZXIgdmVyc2lvbiBvZiBgcmVmbGVjdC1tZXRhZGF0YWAgdGhhdCBkaWQgbm90IHN1cHBvcnQgYSByZWdpc3RyeS5cbiAgICAgICAgICAgICAgICBmYWxsYmFjayA9IENyZWF0ZUZhbGxiYWNrUHJvdmlkZXIocm9vdC5SZWZsZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBmaXJzdDtcbiAgICAgICAgICAgIHZhciBzZWNvbmQ7XG4gICAgICAgICAgICB2YXIgcmVzdDtcbiAgICAgICAgICAgIHZhciB0YXJnZXRQcm92aWRlck1hcCA9IG5ldyBfV2Vha01hcCgpO1xuICAgICAgICAgICAgdmFyIHJlZ2lzdHJ5ID0ge1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyUHJvdmlkZXI6IHJlZ2lzdGVyUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgZ2V0UHJvdmlkZXI6IGdldFByb3ZpZGVyLFxuICAgICAgICAgICAgICAgIHNldFByb3ZpZGVyOiBzZXRQcm92aWRlcixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gcmVnaXN0cnk7XG4gICAgICAgICAgICBmdW5jdGlvbiByZWdpc3RlclByb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFPYmplY3QuaXNFeHRlbnNpYmxlKHJlZ2lzdHJ5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYWRkIHByb3ZpZGVyIHRvIGEgZnJvemVuIHJlZ2lzdHJ5LlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgZmFsbGJhY2sgPT09IHByb3ZpZGVyOiBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZChmaXJzdCk6XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IHByb3ZpZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgZmlyc3QgPT09IHByb3ZpZGVyOiBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZChzZWNvbmQpOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kID0gcHJvdmlkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBzZWNvbmQgPT09IHByb3ZpZGVyOiBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN0ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdCA9IG5ldyBfU2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0LmFkZChwcm92aWRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRQcm92aWRlck5vQ2FjaGUoTywgUCkge1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoZmlyc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdC5pc1Byb3ZpZGVyRm9yKE8sIFApKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHNlY29uZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWNvbmQuaXNQcm92aWRlckZvcihPLCBQKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHJlc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZXJhdG9yID0gR2V0SXRlcmF0b3IocmVzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5leHQgPSBJdGVyYXRvclN0ZXAoaXRlcmF0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gSXRlcmF0b3JWYWx1ZShuZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3ZpZGVyLmlzUHJvdmlkZXJGb3IoTywgUCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoZmFsbGJhY2spICYmIGZhbGxiYWNrLmlzUHJvdmlkZXJGb3IoTywgUCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0UHJvdmlkZXIoTywgUCkge1xuICAgICAgICAgICAgICAgIHZhciBwcm92aWRlck1hcCA9IHRhcmdldFByb3ZpZGVyTWFwLmdldChPKTtcbiAgICAgICAgICAgICAgICB2YXIgcHJvdmlkZXI7XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm92aWRlck1hcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXIgPSBwcm92aWRlck1hcC5nZXQoUCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvdmlkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm92aWRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcHJvdmlkZXIgPSBnZXRQcm92aWRlck5vQ2FjaGUoTywgUCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm92aWRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHByb3ZpZGVyTWFwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJNYXAgPSBuZXcgX01hcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UHJvdmlkZXJNYXAuc2V0KE8sIHByb3ZpZGVyTWFwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlck1hcC5zZXQoUCwgcHJvdmlkZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBoYXNQcm92aWRlcihwcm92aWRlcikge1xuICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChwcm92aWRlcikpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3QgPT09IHByb3ZpZGVyIHx8IHNlY29uZCA9PT0gcHJvdmlkZXIgfHwgIUlzVW5kZWZpbmVkKHJlc3QpICYmIHJlc3QuaGFzKHByb3ZpZGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIHNldFByb3ZpZGVyKE8sIFAsIHByb3ZpZGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNQcm92aWRlcihwcm92aWRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0YWRhdGEgcHJvdmlkZXIgbm90IHJlZ2lzdGVyZWQuXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgZXhpc3RpbmdQcm92aWRlciA9IGdldFByb3ZpZGVyKE8sIFApO1xuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1Byb3ZpZGVyICE9PSBwcm92aWRlcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKGV4aXN0aW5nUHJvdmlkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb3ZpZGVyTWFwID0gdGFyZ2V0UHJvdmlkZXJNYXAuZ2V0KE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQocHJvdmlkZXJNYXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlck1hcCA9IG5ldyBfTWFwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm92aWRlck1hcC5zZXQoTywgcHJvdmlkZXJNYXApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyTWFwLnNldChQLCBwcm92aWRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIG9yIGNyZWF0ZXMgdGhlIHNoYXJlZCByZWdpc3RyeSBvZiBtZXRhZGF0YSBwcm92aWRlcnMuXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBHZXRPckNyZWF0ZU1ldGFkYXRhUmVnaXN0cnkoKSB7XG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFSZWdpc3RyeTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocmVnaXN0cnlTeW1ib2wpICYmIElzT2JqZWN0KHJvb3QuUmVmbGVjdCkgJiYgT2JqZWN0LmlzRXh0ZW5zaWJsZShyb290LlJlZmxlY3QpKSB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFSZWdpc3RyeSA9IHJvb3QuUmVmbGVjdFtyZWdpc3RyeVN5bWJvbF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFSZWdpc3RyeSkpIHtcbiAgICAgICAgICAgICAgICBtZXRhZGF0YVJlZ2lzdHJ5ID0gQ3JlYXRlTWV0YWRhdGFSZWdpc3RyeSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChyZWdpc3RyeVN5bWJvbCkgJiYgSXNPYmplY3Qocm9vdC5SZWZsZWN0KSAmJiBPYmplY3QuaXNFeHRlbnNpYmxlKHJvb3QuUmVmbGVjdCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocm9vdC5SZWZsZWN0LCByZWdpc3RyeVN5bWJvbCwge1xuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbWV0YWRhdGFSZWdpc3RyeVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhUmVnaXN0cnk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlTWV0YWRhdGFQcm92aWRlcihyZWdpc3RyeSkge1xuICAgICAgICAgICAgLy8gW1tNZXRhZGF0YV1dIGludGVybmFsIHNsb3RcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5LW9iamVjdC1pbnRlcm5hbC1tZXRob2RzLWFuZC1pbnRlcm5hbC1zbG90c1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhID0gbmV3IF9XZWFrTWFwKCk7XG4gICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSB7XG4gICAgICAgICAgICAgICAgaXNQcm92aWRlckZvcjogZnVuY3Rpb24gKE8sIFApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldE1ldGFkYXRhID0gbWV0YWRhdGEuZ2V0KE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQodGFyZ2V0TWV0YWRhdGEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0TWV0YWRhdGEuaGFzKFApO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YTogT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeUhhc093bk1ldGFkYXRhOiBPcmRpbmFyeUhhc093bk1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5R2V0T3duTWV0YWRhdGE6IE9yZGluYXJ5R2V0T3duTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlPd25NZXRhZGF0YUtleXM6IE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5RGVsZXRlTWV0YWRhdGE6IE9yZGluYXJ5RGVsZXRlTWV0YWRhdGEsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbWV0YWRhdGFSZWdpc3RyeS5yZWdpc3RlclByb3ZpZGVyKHByb3ZpZGVyKTtcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlcjtcbiAgICAgICAgICAgIGZ1bmN0aW9uIEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgQ3JlYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldE1ldGFkYXRhID0gbWV0YWRhdGEuZ2V0KE8pO1xuICAgICAgICAgICAgICAgIHZhciBjcmVhdGVkVGFyZ2V0TWV0YWRhdGEgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQodGFyZ2V0TWV0YWRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghQ3JlYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TWV0YWRhdGEgPSBuZXcgX01hcCgpO1xuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5zZXQoTywgdGFyZ2V0TWV0YWRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkVGFyZ2V0TWV0YWRhdGEgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSB0YXJnZXRNZXRhZGF0YS5nZXQoUCk7XG4gICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUNyZWF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhTWFwID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TWV0YWRhdGEuc2V0KFAsIG1ldGFkYXRhTWFwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdpc3RyeS5zZXRQcm92aWRlcihPLCBQLCBwcm92aWRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE1ldGFkYXRhLmRlbGV0ZShQKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjcmVhdGVkVGFyZ2V0TWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5kZWxldGUoTyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJXcm9uZyBwcm92aWRlciBmb3IgdGFyZ2V0LlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0YWRhdGFNYXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAzLjEuMi4xIE9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApXG4gICAgICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWhhc293bm1ldGFkYXRhXG4gICAgICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFNYXApKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRvQm9vbGVhbihtZXRhZGF0YU1hcC5oYXMoTWV0YWRhdGFLZXkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIDMuMS40LjEgT3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5Z2V0b3dubWV0YWRhdGFcbiAgICAgICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhTWFwLmdldChNZXRhZGF0YUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAzLjEuNS4xIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApXG4gICAgICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWRlZmluZW93bm1ldGFkYXRhXG4gICAgICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlLCBPLCBQKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIHRydWUpO1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhTWFwLnNldChNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAzLjEuNy4xIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApXG4gICAgICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeW93bm1ldGFkYXRha2V5c1xuICAgICAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUCkge1xuICAgICAgICAgICAgICAgIHZhciBrZXlzID0gW107XG4gICAgICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFNYXApKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgICAgICAgICB2YXIga2V5c09iaiA9IG1ldGFkYXRhTWFwLmtleXMoKTtcbiAgICAgICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBHZXRJdGVyYXRvcihrZXlzT2JqKTtcbiAgICAgICAgICAgICAgICB2YXIgayA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHQgPSBJdGVyYXRvclN0ZXAoaXRlcmF0b3IpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleXMubGVuZ3RoID0gaztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0VmFsdWUgPSBJdGVyYXRvclZhbHVlKG5leHQpO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5c1trXSA9IG5leHRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5RGVsZXRlTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhTWFwLmRlbGV0ZShNZXRhZGF0YUtleSkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAobWV0YWRhdGFNYXAuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBtZXRhZGF0YS5nZXQoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQodGFyZ2V0TWV0YWRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRNZXRhZGF0YS5kZWxldGUoUCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0TWV0YWRhdGEuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRlbGV0ZSh0YXJnZXRNZXRhZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlRmFsbGJhY2tQcm92aWRlcihyZWZsZWN0KSB7XG4gICAgICAgICAgICB2YXIgZGVmaW5lTWV0YWRhdGEgPSByZWZsZWN0LmRlZmluZU1ldGFkYXRhLCBoYXNPd25NZXRhZGF0YSA9IHJlZmxlY3QuaGFzT3duTWV0YWRhdGEsIGdldE93bk1ldGFkYXRhID0gcmVmbGVjdC5nZXRPd25NZXRhZGF0YSwgZ2V0T3duTWV0YWRhdGFLZXlzID0gcmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMsIGRlbGV0ZU1ldGFkYXRhID0gcmVmbGVjdC5kZWxldGVNZXRhZGF0YTtcbiAgICAgICAgICAgIHZhciBtZXRhZGF0YU93bmVyID0gbmV3IF9XZWFrTWFwKCk7XG4gICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSB7XG4gICAgICAgICAgICAgICAgaXNQcm92aWRlckZvcjogZnVuY3Rpb24gKE8sIFApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1ldGFkYXRhUHJvcGVydHlTZXQgPSBtZXRhZGF0YU93bmVyLmdldChPKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChtZXRhZGF0YVByb3BlcnR5U2V0KSAmJiBtZXRhZGF0YVByb3BlcnR5U2V0LmhhcyhQKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldE93bk1ldGFkYXRhS2V5cyhPLCBQKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YVByb3BlcnR5U2V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhUHJvcGVydHlTZXQgPSBuZXcgX1NldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhT3duZXIuc2V0KE8sIG1ldGFkYXRhUHJvcGVydHlTZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFQcm9wZXJ0eVNldC5hZGQoUCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhOiBkZWZpbmVNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeUhhc093bk1ldGFkYXRhOiBoYXNPd25NZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeUdldE93bk1ldGFkYXRhOiBnZXRPd25NZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeU93bk1ldGFkYXRhS2V5czogZ2V0T3duTWV0YWRhdGFLZXlzLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5RGVsZXRlTWV0YWRhdGE6IGRlbGV0ZU1ldGFkYXRhLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlcjtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyB0aGUgbWV0YWRhdGEgcHJvdmlkZXIgZm9yIGFuIG9iamVjdC4gSWYgdGhlIG9iamVjdCBoYXMgbm8gbWV0YWRhdGEgcHJvdmlkZXIgYW5kIHRoaXMgaXMgZm9yIGEgY3JlYXRlIG9wZXJhdGlvbixcbiAgICAgICAgICogdGhlbiB0aGlzIG1vZHVsZSdzIG1ldGFkYXRhIHByb3ZpZGVyIGlzIGFzc2lnbmVkIHRvIHRoZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBHZXRNZXRhZGF0YVByb3ZpZGVyKE8sIFAsIENyZWF0ZSkge1xuICAgICAgICAgICAgdmFyIHJlZ2lzdGVyZWRQcm92aWRlciA9IG1ldGFkYXRhUmVnaXN0cnkuZ2V0UHJvdmlkZXIoTywgUCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHJlZ2lzdGVyZWRQcm92aWRlcikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJlZFByb3ZpZGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKENyZWF0ZSkge1xuICAgICAgICAgICAgICAgIGlmIChtZXRhZGF0YVJlZ2lzdHJ5LnNldFByb3ZpZGVyKE8sIFAsIG1ldGFkYXRhUHJvdmlkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YVByb3ZpZGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbGxlZ2FsIHN0YXRlLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmFpdmUgTWFwIHNoaW1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlTWFwUG9seWZpbGwoKSB7XG4gICAgICAgICAgICB2YXIgY2FjaGVTZW50aW5lbCA9IHt9O1xuICAgICAgICAgICAgdmFyIGFycmF5U2VudGluZWwgPSBbXTtcbiAgICAgICAgICAgIHZhciBNYXBJdGVyYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBNYXBJdGVyYXRvcihrZXlzLCB2YWx1ZXMsIHNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGtleXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlW1wiQEBpdGVyYXRvclwiXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2luZGV4O1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuX2tleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fc2VsZWN0b3IodGhpcy5fa2V5c1tpbmRleF0sIHRoaXMuX3ZhbHVlc1tpbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ICsgMSA+PSB0aGlzLl9rZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzdWx0LCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcEl0ZXJhdG9yLnByb3RvdHlwZS50aHJvdyA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcEl0ZXJhdG9yLnByb3RvdHlwZS5yZXR1cm4gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWFwSXRlcmF0b3I7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgdmFyIE1hcCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBNYXAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlS2V5ID0gY2FjaGVTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IC0yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWFwLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9rZXlzLmxlbmd0aDsgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAoa2V5KSB7IHJldHVybiB0aGlzLl9maW5kKGtleSwgLyppbnNlcnQqLyBmYWxzZSkgPj0gMDsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZChrZXksIC8qaW5zZXJ0Ki8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMuX3ZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXNbaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaXplID0gdGhpcy5fa2V5cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gaW5kZXggKyAxOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5c1tpIC0gMV0gPSB0aGlzLl9rZXlzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlc1tpIC0gMV0gPSB0aGlzLl92YWx1ZXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzLmxlbmd0aC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzLmxlbmd0aC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNhbWVWYWx1ZVplcm8oa2V5LCB0aGlzLl9jYWNoZUtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUtleSA9IGNhY2hlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IC0yO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVLZXkgPSBjYWNoZVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gLTI7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgTWFwSXRlcmF0b3IodGhpcy5fa2V5cywgdGhpcy5fdmFsdWVzLCBnZXRLZXkpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IE1hcEl0ZXJhdG9yKHRoaXMuX2tleXMsIHRoaXMuX3ZhbHVlcywgZ2V0VmFsdWUpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBNYXBJdGVyYXRvcih0aGlzLl9rZXlzLCB0aGlzLl92YWx1ZXMsIGdldEVudHJ5KTsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlW1wiQEBpdGVyYXRvclwiXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuZW50cmllcygpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5fZmluZCA9IGZ1bmN0aW9uIChrZXksIGluc2VydCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVNhbWVWYWx1ZVplcm8odGhpcy5fY2FjaGVLZXksIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlSW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fa2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTYW1lVmFsdWVaZXJvKHRoaXMuX2tleXNbaV0sIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2FjaGVJbmRleCA8IDAgJiYgaW5zZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gdGhpcy5fa2V5cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlSW5kZXg7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWFwO1xuICAgICAgICAgICAgfSgpKTtcbiAgICAgICAgICAgIHJldHVybiBNYXA7XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRLZXkoa2V5LCBfKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFZhbHVlKF8sIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0RW50cnkoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBba2V5LCB2YWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmFpdmUgU2V0IHNoaW1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlU2V0UG9seWZpbGwoKSB7XG4gICAgICAgICAgICB2YXIgU2V0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFNldCgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWFwID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUsIFwic2l6ZVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbWFwLnNpemU7IH0sXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9tYXAuaGFzKHZhbHVlKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdGhpcy5fbWFwLnNldCh2YWx1ZSwgdmFsdWUpLCB0aGlzOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9tYXAuZGVsZXRlKHZhbHVlKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkgeyB0aGlzLl9tYXAuY2xlYXIoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9tYXAua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbWFwLmtleXMoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9tYXAuZW50cmllcygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGVbXCJAQGl0ZXJhdG9yXCJdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5rZXlzKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmtleXMoKTsgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gU2V0O1xuICAgICAgICAgICAgfSgpKTtcbiAgICAgICAgICAgIHJldHVybiBTZXQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmFpdmUgV2Vha01hcCBzaGltXG4gICAgICAgIGZ1bmN0aW9uIENyZWF0ZVdlYWtNYXBQb2x5ZmlsbCgpIHtcbiAgICAgICAgICAgIHZhciBVVUlEX1NJWkUgPSAxNjtcbiAgICAgICAgICAgIHZhciBrZXlzID0gSGFzaE1hcC5jcmVhdGUoKTtcbiAgICAgICAgICAgIHZhciByb290S2V5ID0gQ3JlYXRlVW5pcXVlS2V5KCk7XG4gICAgICAgICAgICByZXR1cm4gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFdlYWtNYXAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleSA9IENyZWF0ZVVuaXF1ZUtleSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZSAhPT0gdW5kZWZpbmVkID8gSGFzaE1hcC5oYXModGFibGUsIHRoaXMuX2tleSkgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gR2V0T3JDcmVhdGVXZWFrTWFwVGFibGUodGFyZ2V0LCAvKmNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlICE9PSB1bmRlZmluZWQgPyBIYXNoTWFwLmdldCh0YWJsZSwgdGhpcy5fa2V5KSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uICh0YXJnZXQsIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVbdGhpcy5fa2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gR2V0T3JDcmVhdGVXZWFrTWFwVGFibGUodGFyZ2V0LCAvKmNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlICE9PSB1bmRlZmluZWQgPyBkZWxldGUgdGFibGVbdGhpcy5fa2V5XSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IG5vdCBhIHJlYWwgY2xlYXIsIGp1c3QgbWFrZXMgdGhlIHByZXZpb3VzIGRhdGEgdW5yZWFjaGFibGVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5ID0gQ3JlYXRlVW5pcXVlS2V5KCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gV2Vha01hcDtcbiAgICAgICAgICAgIH0oKSk7XG4gICAgICAgICAgICBmdW5jdGlvbiBDcmVhdGVVbmlxdWVLZXkoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleTtcbiAgICAgICAgICAgICAgICBkb1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBcIkBAV2Vha01hcEBAXCIgKyBDcmVhdGVVVUlEKCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKEhhc2hNYXAuaGFzKGtleXMsIGtleSkpO1xuICAgICAgICAgICAgICAgIGtleXNba2V5XSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgY3JlYXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNPd24uY2FsbCh0YXJnZXQsIHJvb3RLZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3JlYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcm9vdEtleSwgeyB2YWx1ZTogSGFzaE1hcC5jcmVhdGUoKSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtyb290S2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIEZpbGxSYW5kb21CeXRlcyhidWZmZXIsIHNpemUpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSlcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2ldID0gTWF0aC5yYW5kb20oKSAqIDB4ZmYgfCAwO1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBHZW5SYW5kb21CeXRlcyhzaXplKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBVaW50OEFycmF5ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY3J5cHRvICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgbXNDcnlwdG8gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBGaWxsUmFuZG9tQnl0ZXMoYXJyYXksIHNpemUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGxSYW5kb21CeXRlcyhuZXcgQXJyYXkoc2l6ZSksIHNpemUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gQ3JlYXRlVVVJRCgpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IEdlblJhbmRvbUJ5dGVzKFVVSURfU0laRSk7XG4gICAgICAgICAgICAgICAgLy8gbWFyayBhcyByYW5kb20gLSBSRkMgNDEyMiDCpyA0LjRcbiAgICAgICAgICAgICAgICBkYXRhWzZdID0gZGF0YVs2XSAmIDB4NGYgfCAweDQwO1xuICAgICAgICAgICAgICAgIGRhdGFbOF0gPSBkYXRhWzhdICYgMHhiZiB8IDB4ODA7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgVVVJRF9TSVpFOyArK29mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnl0ZSA9IGRhdGFbb2Zmc2V0XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldCA9PT0gNCB8fCBvZmZzZXQgPT09IDYgfHwgb2Zmc2V0ID09PSA4KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFwiLVwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnl0ZSA8IDE2KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFwiMFwiO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYnl0ZS50b1N0cmluZygxNikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyB1c2VzIGEgaGV1cmlzdGljIHVzZWQgYnkgdjggYW5kIGNoYWtyYSB0byBmb3JjZSBhbiBvYmplY3QgaW50byBkaWN0aW9uYXJ5IG1vZGUuXG4gICAgICAgIGZ1bmN0aW9uIE1ha2VEaWN0aW9uYXJ5KG9iaikge1xuICAgICAgICAgICAgb2JqLl9fID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgZGVsZXRlIG9iai5fXztcbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH1cbiAgICB9KTtcbn0pKFJlZmxlY3QgfHwgKFJlZmxlY3QgPSB7fSkpO1xuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBsPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLG49U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxwPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxxPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxyPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSx0PVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSx1PVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLHY9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLHc9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLHg9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIikseT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKSx6PVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBBKGEpe2lmKG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGEpcmV0dXJuIG51bGw7YT16JiZhW3pdfHxhW1wiQEBpdGVyYXRvclwiXTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYT9hOm51bGx9XG52YXIgQj17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sQz1PYmplY3QuYXNzaWduLEQ9e307ZnVuY3Rpb24gRShhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1EO3RoaXMudXBkYXRlcj1lfHxCfUUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e307XG5FLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihhLGIpe2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGEmJm51bGwhPWEpdGhyb3cgRXJyb3IoXCJzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy5cIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGEsYixcInNldFN0YXRlXCIpfTtFLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihhKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsYSxcImZvcmNlVXBkYXRlXCIpfTtmdW5jdGlvbiBGKCl7fUYucHJvdG90eXBlPUUucHJvdG90eXBlO2Z1bmN0aW9uIEcoYSxiLGUpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9RDt0aGlzLnVwZGF0ZXI9ZXx8Qn12YXIgSD1HLnByb3RvdHlwZT1uZXcgRjtcbkguY29uc3RydWN0b3I9RztDKEgsRS5wcm90b3R5cGUpO0guaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIEk9QXJyYXkuaXNBcnJheSxKPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksSz17Y3VycmVudDpudWxsfSxMPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBNKGEsYixlKXt2YXIgZCxjPXt9LGs9bnVsbCxoPW51bGw7aWYobnVsbCE9Yilmb3IoZCBpbiB2b2lkIDAhPT1iLnJlZiYmKGg9Yi5yZWYpLHZvaWQgMCE9PWIua2V5JiYoaz1cIlwiK2Iua2V5KSxiKUouY2FsbChiLGQpJiYhTC5oYXNPd25Qcm9wZXJ0eShkKSYmKGNbZF09YltkXSk7dmFyIGc9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1nKWMuY2hpbGRyZW49ZTtlbHNlIGlmKDE8Zyl7Zm9yKHZhciBmPUFycmF5KGcpLG09MDttPGc7bSsrKWZbbV09YXJndW1lbnRzW20rMl07Yy5jaGlsZHJlbj1mfWlmKGEmJmEuZGVmYXVsdFByb3BzKWZvcihkIGluIGc9YS5kZWZhdWx0UHJvcHMsZyl2b2lkIDA9PT1jW2RdJiYoY1tkXT1nW2RdKTtyZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEsa2V5OmsscmVmOmgscHJvcHM6Yyxfb3duZXI6Sy5jdXJyZW50fX1cbmZ1bmN0aW9uIE4oYSxiKXtyZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEudHlwZSxrZXk6YixyZWY6YS5yZWYscHJvcHM6YS5wcm9wcyxfb3duZXI6YS5fb3duZXJ9fWZ1bmN0aW9uIE8oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWx9ZnVuY3Rpb24gZXNjYXBlKGEpe3ZhciBiPXtcIj1cIjpcIj0wXCIsXCI6XCI6XCI9MlwifTtyZXR1cm5cIiRcIithLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihhKXtyZXR1cm4gYlthXX0pfXZhciBQPS9cXC8rL2c7ZnVuY3Rpb24gUShhLGIpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJm51bGwhPWEua2V5P2VzY2FwZShcIlwiK2Eua2V5KTpiLnRvU3RyaW5nKDM2KX1cbmZ1bmN0aW9uIFIoYSxiLGUsZCxjKXt2YXIgaz10eXBlb2YgYTtpZihcInVuZGVmaW5lZFwiPT09a3x8XCJib29sZWFuXCI9PT1rKWE9bnVsbDt2YXIgaD0hMTtpZihudWxsPT09YSloPSEwO2Vsc2Ugc3dpdGNoKGspe2Nhc2UgXCJzdHJpbmdcIjpjYXNlIFwibnVtYmVyXCI6aD0hMDticmVhaztjYXNlIFwib2JqZWN0XCI6c3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgbDpjYXNlIG46aD0hMH19aWYoaClyZXR1cm4gaD1hLGM9YyhoKSxhPVwiXCI9PT1kP1wiLlwiK1EoaCwwKTpkLEkoYyk/KGU9XCJcIixudWxsIT1hJiYoZT1hLnJlcGxhY2UoUCxcIiQmL1wiKStcIi9cIiksUihjLGIsZSxcIlwiLGZ1bmN0aW9uKGEpe3JldHVybiBhfSkpOm51bGwhPWMmJihPKGMpJiYoYz1OKGMsZSsoIWMua2V5fHxoJiZoLmtleT09PWMua2V5P1wiXCI6KFwiXCIrYy5rZXkpLnJlcGxhY2UoUCxcIiQmL1wiKStcIi9cIikrYSkpLGIucHVzaChjKSksMTtoPTA7ZD1cIlwiPT09ZD9cIi5cIjpkK1wiOlwiO2lmKEkoYSkpZm9yKHZhciBnPTA7ZzxhLmxlbmd0aDtnKyspe2s9XG5hW2ddO3ZhciBmPWQrUShrLGcpO2grPVIoayxiLGUsZixjKX1lbHNlIGlmKGY9QShhKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZilmb3IoYT1mLmNhbGwoYSksZz0wOyEoaz1hLm5leHQoKSkuZG9uZTspaz1rLnZhbHVlLGY9ZCtRKGssZysrKSxoKz1SKGssYixlLGYsYyk7ZWxzZSBpZihcIm9iamVjdFwiPT09ayl0aHJvdyBiPVN0cmluZyhhKSxFcnJvcihcIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogXCIrKFwiW29iamVjdCBPYmplY3RdXCI9PT1iP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYSkuam9pbihcIiwgXCIpK1wifVwiOmIpK1wiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLlwiKTtyZXR1cm4gaH1cbmZ1bmN0aW9uIFMoYSxiLGUpe2lmKG51bGw9PWEpcmV0dXJuIGE7dmFyIGQ9W10sYz0wO1IoYSxkLFwiXCIsXCJcIixmdW5jdGlvbihhKXtyZXR1cm4gYi5jYWxsKGUsYSxjKyspfSk7cmV0dXJuIGR9ZnVuY3Rpb24gVChhKXtpZigtMT09PWEuX3N0YXR1cyl7dmFyIGI9YS5fcmVzdWx0O2I9YigpO2IudGhlbihmdW5jdGlvbihiKXtpZigwPT09YS5fc3RhdHVzfHwtMT09PWEuX3N0YXR1cylhLl9zdGF0dXM9MSxhLl9yZXN1bHQ9Yn0sZnVuY3Rpb24oYil7aWYoMD09PWEuX3N0YXR1c3x8LTE9PT1hLl9zdGF0dXMpYS5fc3RhdHVzPTIsYS5fcmVzdWx0PWJ9KTstMT09PWEuX3N0YXR1cyYmKGEuX3N0YXR1cz0wLGEuX3Jlc3VsdD1iKX1pZigxPT09YS5fc3RhdHVzKXJldHVybiBhLl9yZXN1bHQuZGVmYXVsdDt0aHJvdyBhLl9yZXN1bHQ7fVxudmFyIFU9e2N1cnJlbnQ6bnVsbH0sVj17dHJhbnNpdGlvbjpudWxsfSxXPXtSZWFjdEN1cnJlbnREaXNwYXRjaGVyOlUsUmVhY3RDdXJyZW50QmF0Y2hDb25maWc6VixSZWFjdEN1cnJlbnRPd25lcjpLfTtmdW5jdGlvbiBYKCl7dGhyb3cgRXJyb3IoXCJhY3QoLi4uKSBpcyBub3Qgc3VwcG9ydGVkIGluIHByb2R1Y3Rpb24gYnVpbGRzIG9mIFJlYWN0LlwiKTt9XG5leHBvcnRzLkNoaWxkcmVuPXttYXA6Uyxmb3JFYWNoOmZ1bmN0aW9uKGEsYixlKXtTKGEsZnVuY3Rpb24oKXtiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZSl9LGNvdW50OmZ1bmN0aW9uKGEpe3ZhciBiPTA7UyhhLGZ1bmN0aW9uKCl7YisrfSk7cmV0dXJuIGJ9LHRvQXJyYXk6ZnVuY3Rpb24oYSl7cmV0dXJuIFMoYSxmdW5jdGlvbihhKXtyZXR1cm4gYX0pfHxbXX0sb25seTpmdW5jdGlvbihhKXtpZighTyhhKSl0aHJvdyBFcnJvcihcIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLlwiKTtyZXR1cm4gYX19O2V4cG9ydHMuQ29tcG9uZW50PUU7ZXhwb3J0cy5GcmFnbWVudD1wO2V4cG9ydHMuUHJvZmlsZXI9cjtleHBvcnRzLlB1cmVDb21wb25lbnQ9RztleHBvcnRzLlN0cmljdE1vZGU9cTtleHBvcnRzLlN1c3BlbnNlPXc7XG5leHBvcnRzLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPVc7ZXhwb3J0cy5hY3Q9WDtcbmV4cG9ydHMuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGEsYixlKXtpZihudWxsPT09YXx8dm9pZCAwPT09YSl0aHJvdyBFcnJvcihcIlJlYWN0LmNsb25lRWxlbWVudCguLi4pOiBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQsIGJ1dCB5b3UgcGFzc2VkIFwiK2ErXCIuXCIpO3ZhciBkPUMoe30sYS5wcm9wcyksYz1hLmtleSxrPWEucmVmLGg9YS5fb3duZXI7aWYobnVsbCE9Yil7dm9pZCAwIT09Yi5yZWYmJihrPWIucmVmLGg9Sy5jdXJyZW50KTt2b2lkIDAhPT1iLmtleSYmKGM9XCJcIitiLmtleSk7aWYoYS50eXBlJiZhLnR5cGUuZGVmYXVsdFByb3BzKXZhciBnPWEudHlwZS5kZWZhdWx0UHJvcHM7Zm9yKGYgaW4gYilKLmNhbGwoYixmKSYmIUwuaGFzT3duUHJvcGVydHkoZikmJihkW2ZdPXZvaWQgMD09PWJbZl0mJnZvaWQgMCE9PWc/Z1tmXTpiW2ZdKX12YXIgZj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWYpZC5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxmKXtnPUFycmF5KGYpO1xuZm9yKHZhciBtPTA7bTxmO20rKylnW21dPWFyZ3VtZW50c1ttKzJdO2QuY2hpbGRyZW49Z31yZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEudHlwZSxrZXk6YyxyZWY6ayxwcm9wczpkLF9vd25lcjpofX07ZXhwb3J0cy5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGEpe2E9eyQkdHlwZW9mOnUsX2N1cnJlbnRWYWx1ZTphLF9jdXJyZW50VmFsdWUyOmEsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsLF9kZWZhdWx0VmFsdWU6bnVsbCxfZ2xvYmFsTmFtZTpudWxsfTthLlByb3ZpZGVyPXskJHR5cGVvZjp0LF9jb250ZXh0OmF9O3JldHVybiBhLkNvbnN1bWVyPWF9O2V4cG9ydHMuY3JlYXRlRWxlbWVudD1NO2V4cG9ydHMuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihhKXt2YXIgYj1NLmJpbmQobnVsbCxhKTtiLnR5cGU9YTtyZXR1cm4gYn07ZXhwb3J0cy5jcmVhdGVSZWY9ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX07XG5leHBvcnRzLmZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJueyQkdHlwZW9mOnYscmVuZGVyOmF9fTtleHBvcnRzLmlzVmFsaWRFbGVtZW50PU87ZXhwb3J0cy5sYXp5PWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjp5LF9wYXlsb2FkOntfc3RhdHVzOi0xLF9yZXN1bHQ6YX0sX2luaXQ6VH19O2V4cG9ydHMubWVtbz1mdW5jdGlvbihhLGIpe3JldHVybnskJHR5cGVvZjp4LHR5cGU6YSxjb21wYXJlOnZvaWQgMD09PWI/bnVsbDpifX07ZXhwb3J0cy5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9Vi50cmFuc2l0aW9uO1YudHJhbnNpdGlvbj17fTt0cnl7YSgpfWZpbmFsbHl7Vi50cmFuc2l0aW9uPWJ9fTtleHBvcnRzLnVuc3RhYmxlX2FjdD1YO2V4cG9ydHMudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUNhbGxiYWNrKGEsYil9O2V4cG9ydHMudXNlQ29udGV4dD1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZUNvbnRleHQoYSl9O1xuZXhwb3J0cy51c2VEZWJ1Z1ZhbHVlPWZ1bmN0aW9uKCl7fTtleHBvcnRzLnVzZURlZmVycmVkVmFsdWU9ZnVuY3Rpb24oYSl7cmV0dXJuIFUuY3VycmVudC51c2VEZWZlcnJlZFZhbHVlKGEpfTtleHBvcnRzLnVzZUVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlRWZmZWN0KGEsYil9O2V4cG9ydHMudXNlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gVS5jdXJyZW50LnVzZUlkKCl9O2V4cG9ydHMudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihhLGIsZSl7cmV0dXJuIFUuY3VycmVudC51c2VJbXBlcmF0aXZlSGFuZGxlKGEsYixlKX07ZXhwb3J0cy51c2VJbnNlcnRpb25FZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUluc2VydGlvbkVmZmVjdChhLGIpfTtleHBvcnRzLnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlTGF5b3V0RWZmZWN0KGEsYil9O1xuZXhwb3J0cy51c2VNZW1vPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VNZW1vKGEsYil9O2V4cG9ydHMudXNlUmVkdWNlcj1mdW5jdGlvbihhLGIsZSl7cmV0dXJuIFUuY3VycmVudC51c2VSZWR1Y2VyKGEsYixlKX07ZXhwb3J0cy51c2VSZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIFUuY3VycmVudC51c2VSZWYoYSl9O2V4cG9ydHMudXNlU3RhdGU9ZnVuY3Rpb24oYSl7cmV0dXJuIFUuY3VycmVudC51c2VTdGF0ZShhKX07ZXhwb3J0cy51c2VTeW5jRXh0ZXJuYWxTdG9yZT1mdW5jdGlvbihhLGIsZSl7cmV0dXJuIFUuY3VycmVudC51c2VTeW5jRXh0ZXJuYWxTdG9yZShhLGIsZSl9O2V4cG9ydHMudXNlVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiBVLmN1cnJlbnQudXNlVHJhbnNpdGlvbigpfTtleHBvcnRzLnZlcnNpb249XCIxOC4zLjFcIjtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBiaW5kKGZuLCB0aGlzQXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKCkge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpO1xuICB9O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgYmluZCBmcm9tICcuL2hlbHBlcnMvYmluZC5qcyc7XG5cbi8vIHV0aWxzIGlzIGEgbGlicmFyeSBvZiBnZW5lcmljIGhlbHBlciBmdW5jdGlvbnMgbm9uLXNwZWNpZmljIHRvIGF4aW9zXG5cbmNvbnN0IHt0b1N0cmluZ30gPSBPYmplY3QucHJvdG90eXBlO1xuY29uc3Qge2dldFByb3RvdHlwZU9mfSA9IE9iamVjdDtcblxuY29uc3Qga2luZE9mID0gKGNhY2hlID0+IHRoaW5nID0+IHtcbiAgICBjb25zdCBzdHIgPSB0b1N0cmluZy5jYWxsKHRoaW5nKTtcbiAgICByZXR1cm4gY2FjaGVbc3RyXSB8fCAoY2FjaGVbc3RyXSA9IHN0ci5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKSk7XG59KShPYmplY3QuY3JlYXRlKG51bGwpKTtcblxuY29uc3Qga2luZE9mVGVzdCA9ICh0eXBlKSA9PiB7XG4gIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiAodGhpbmcpID0+IGtpbmRPZih0aGluZykgPT09IHR5cGVcbn1cblxuY29uc3QgdHlwZU9mVGVzdCA9IHR5cGUgPT4gdGhpbmcgPT4gdHlwZW9mIHRoaW5nID09PSB0eXBlO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3Qge2lzQXJyYXl9ID0gQXJyYXk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNVbmRlZmluZWQgPSB0eXBlT2ZUZXN0KCd1bmRlZmluZWQnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0J1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsKSAmJiB2YWwuY29uc3RydWN0b3IgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbC5jb25zdHJ1Y3RvcilcbiAgICAmJiBpc0Z1bmN0aW9uKHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikgJiYgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNBcnJheUJ1ZmZlciA9IGtpbmRPZlRlc3QoJ0FycmF5QnVmZmVyJyk7XG5cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXJWaWV3KHZhbCkge1xuICBsZXQgcmVzdWx0O1xuICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpICYmIChBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgcmVzdWx0ID0gQXJyYXlCdWZmZXIuaXNWaWV3KHZhbCk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gKHZhbCkgJiYgKHZhbC5idWZmZXIpICYmIChpc0FycmF5QnVmZmVyKHZhbC5idWZmZXIpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyaW5nXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmluZywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzU3RyaW5nID0gdHlwZU9mVGVzdCgnc3RyaW5nJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNGdW5jdGlvbiA9IHR5cGVPZlRlc3QoJ2Z1bmN0aW9uJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBOdW1iZXJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgTnVtYmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNOdW1iZXIgPSB0eXBlT2ZUZXN0KCdudW1iZXInKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHRoaW5nIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNPYmplY3QgPSAodGhpbmcpID0+IHRoaW5nICE9PSBudWxsICYmIHR5cGVvZiB0aGluZyA9PT0gJ29iamVjdCc7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCb29sZWFuXG4gKlxuICogQHBhcmFtIHsqfSB0aGluZyBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCb29sZWFuLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNCb29sZWFuID0gdGhpbmcgPT4gdGhpbmcgPT09IHRydWUgfHwgdGhpbmcgPT09IGZhbHNlO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzUGxhaW5PYmplY3QgPSAodmFsKSA9PiB7XG4gIGlmIChraW5kT2YodmFsKSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBwcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZih2YWwpO1xuICByZXR1cm4gKHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGUgfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvdHlwZSkgPT09IG51bGwpICYmICEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIHZhbCkgJiYgIShTeW1ib2wuaXRlcmF0b3IgaW4gdmFsKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIERhdGVcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRGF0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzRGF0ZSA9IGtpbmRPZlRlc3QoJ0RhdGUnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZpbGVcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzRmlsZSA9IGtpbmRPZlRlc3QoJ0ZpbGUnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJsb2JcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzQmxvYiA9IGtpbmRPZlRlc3QoJ0Jsb2InKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZpbGVMaXN0XG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0ZpbGVMaXN0ID0ga2luZE9mVGVzdCgnRmlsZUxpc3QnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJlYW0sIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1N0cmVhbSA9ICh2YWwpID0+IGlzT2JqZWN0KHZhbCkgJiYgaXNGdW5jdGlvbih2YWwucGlwZSk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGb3JtRGF0YVxuICpcbiAqIEBwYXJhbSB7Kn0gdGhpbmcgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBGb3JtRGF0YSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzRm9ybURhdGEgPSAodGhpbmcpID0+IHtcbiAgbGV0IGtpbmQ7XG4gIHJldHVybiB0aGluZyAmJiAoXG4gICAgKHR5cGVvZiBGb3JtRGF0YSA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGluZyBpbnN0YW5jZW9mIEZvcm1EYXRhKSB8fCAoXG4gICAgICBpc0Z1bmN0aW9uKHRoaW5nLmFwcGVuZCkgJiYgKFxuICAgICAgICAoa2luZCA9IGtpbmRPZih0aGluZykpID09PSAnZm9ybWRhdGEnIHx8XG4gICAgICAgIC8vIGRldGVjdCBmb3JtLWRhdGEgaW5zdGFuY2VcbiAgICAgICAgKGtpbmQgPT09ICdvYmplY3QnICYmIGlzRnVuY3Rpb24odGhpbmcudG9TdHJpbmcpICYmIHRoaW5nLnRvU3RyaW5nKCkgPT09ICdbb2JqZWN0IEZvcm1EYXRhXScpXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0XG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1VSTFNlYXJjaFBhcmFtcyA9IGtpbmRPZlRlc3QoJ1VSTFNlYXJjaFBhcmFtcycpO1xuXG5jb25zdCBbaXNSZWFkYWJsZVN0cmVhbSwgaXNSZXF1ZXN0LCBpc1Jlc3BvbnNlLCBpc0hlYWRlcnNdID0gWydSZWFkYWJsZVN0cmVhbScsICdSZXF1ZXN0JywgJ1Jlc3BvbnNlJywgJ0hlYWRlcnMnXS5tYXAoa2luZE9mVGVzdCk7XG5cbi8qKlxuICogVHJpbSBleGNlc3Mgd2hpdGVzcGFjZSBvZmYgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGEgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBUaGUgU3RyaW5nIHRvIHRyaW1cbiAqXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXG4gKi9cbmNvbnN0IHRyaW0gPSAoc3RyKSA9PiBzdHIudHJpbSA/XG4gIHN0ci50cmltKCkgOiBzdHIucmVwbGFjZSgvXltcXHNcXHVGRUZGXFx4QTBdK3xbXFxzXFx1RkVGRlxceEEwXSskL2csICcnKTtcblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0IGludm9raW5nIGEgZnVuY3Rpb24gZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiBgb2JqYCBpcyBhbiBBcnJheSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGluZGV4LCBhbmQgY29tcGxldGUgYXJyYXkgZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiAnb2JqJyBpcyBhbiBPYmplY3QgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBrZXksIGFuZCBjb21wbGV0ZSBvYmplY3QgZm9yIGVhY2ggcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG9iaiBUaGUgb2JqZWN0IHRvIGl0ZXJhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBjYWxsYmFjayB0byBpbnZva2UgZm9yIGVhY2ggaXRlbVxuICpcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW2FsbE93bktleXMgPSBmYWxzZV1cbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmZ1bmN0aW9uIGZvckVhY2gob2JqLCBmbiwge2FsbE93bktleXMgPSBmYWxzZX0gPSB7fSkge1xuICAvLyBEb24ndCBib3RoZXIgaWYgbm8gdmFsdWUgcHJvdmlkZWRcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBpO1xuICBsZXQgbDtcblxuICAvLyBGb3JjZSBhbiBhcnJheSBpZiBub3QgYWxyZWFkeSBzb21ldGhpbmcgaXRlcmFibGVcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgb2JqID0gW29ial07XG4gIH1cblxuICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIGFycmF5IHZhbHVlc1xuICAgIGZvciAoaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtpXSwgaSwgb2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIG9iamVjdCBrZXlzXG4gICAgY29uc3Qga2V5cyA9IGFsbE93bktleXMgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopIDogT2JqZWN0LmtleXMob2JqKTtcbiAgICBjb25zdCBsZW4gPSBrZXlzLmxlbmd0aDtcbiAgICBsZXQga2V5O1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kS2V5KG9iaiwga2V5KSB7XG4gIGtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgbGV0IGkgPSBrZXlzLmxlbmd0aDtcbiAgbGV0IF9rZXk7XG4gIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgX2tleSA9IGtleXNbaV07XG4gICAgaWYgKGtleSA9PT0gX2tleS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICByZXR1cm4gX2tleTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmNvbnN0IF9nbG9iYWwgPSAoKCkgPT4ge1xuICAvKmVzbGludCBuby11bmRlZjowKi9cbiAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gZ2xvYmFsVGhpcztcbiAgcmV0dXJuIHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IGdsb2JhbClcbn0pKCk7XG5cbmNvbnN0IGlzQ29udGV4dERlZmluZWQgPSAoY29udGV4dCkgPT4gIWlzVW5kZWZpbmVkKGNvbnRleHQpICYmIGNvbnRleHQgIT09IF9nbG9iYWw7XG5cbi8qKlxuICogQWNjZXB0cyB2YXJhcmdzIGV4cGVjdGluZyBlYWNoIGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCwgdGhlblxuICogaW1tdXRhYmx5IG1lcmdlcyB0aGUgcHJvcGVydGllcyBvZiBlYWNoIG9iamVjdCBhbmQgcmV0dXJucyByZXN1bHQuXG4gKlxuICogV2hlbiBtdWx0aXBsZSBvYmplY3RzIGNvbnRhaW4gdGhlIHNhbWUga2V5IHRoZSBsYXRlciBvYmplY3QgaW5cbiAqIHRoZSBhcmd1bWVudHMgbGlzdCB3aWxsIHRha2UgcHJlY2VkZW5jZS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYGpzXG4gKiB2YXIgcmVzdWx0ID0gbWVyZ2Uoe2ZvbzogMTIzfSwge2ZvbzogNDU2fSk7XG4gKiBjb25zb2xlLmxvZyhyZXN1bHQuZm9vKTsgLy8gb3V0cHV0cyA0NTZcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmoxIE9iamVjdCB0byBtZXJnZVxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJlc3VsdCBvZiBhbGwgbWVyZ2UgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBtZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgY29uc3Qge2Nhc2VsZXNzfSA9IGlzQ29udGV4dERlZmluZWQodGhpcykgJiYgdGhpcyB8fCB7fTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGNvbnN0IGFzc2lnblZhbHVlID0gKHZhbCwga2V5KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0S2V5ID0gY2FzZWxlc3MgJiYgZmluZEtleShyZXN1bHQsIGtleSkgfHwga2V5O1xuICAgIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdFt0YXJnZXRLZXldKSAmJiBpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFt0YXJnZXRLZXldID0gbWVyZ2UocmVzdWx0W3RhcmdldEtleV0sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFt0YXJnZXRLZXldID0gbWVyZ2Uoe30sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgIHJlc3VsdFt0YXJnZXRLZXldID0gdmFsLnNsaWNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFt0YXJnZXRLZXldID0gdmFsO1xuICAgIH1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGFyZ3VtZW50c1tpXSAmJiBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0ZW5kcyBvYmplY3QgYSBieSBtdXRhYmx5IGFkZGluZyB0byBpdCB0aGUgcHJvcGVydGllcyBvZiBvYmplY3QgYi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYSBUaGUgb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gKiBAcGFyYW0ge09iamVjdH0gYiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgb2JqZWN0IHRvIGJpbmQgZnVuY3Rpb24gdG9cbiAqXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFthbGxPd25LZXlzXVxuICogQHJldHVybnMge09iamVjdH0gVGhlIHJlc3VsdGluZyB2YWx1ZSBvZiBvYmplY3QgYVxuICovXG5jb25zdCBleHRlbmQgPSAoYSwgYiwgdGhpc0FyZywge2FsbE93bktleXN9PSB7fSkgPT4ge1xuICBmb3JFYWNoKGIsICh2YWwsIGtleSkgPT4ge1xuICAgIGlmICh0aGlzQXJnICYmIGlzRnVuY3Rpb24odmFsKSkge1xuICAgICAgYVtrZXldID0gYmluZCh2YWwsIHRoaXNBcmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhW2tleV0gPSB2YWw7XG4gICAgfVxuICB9LCB7YWxsT3duS2V5c30pO1xuICByZXR1cm4gYTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYnl0ZSBvcmRlciBtYXJrZXIuIFRoaXMgY2F0Y2hlcyBFRiBCQiBCRiAodGhlIFVURi04IEJPTSlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCB3aXRoIEJPTVxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IGNvbnRlbnQgdmFsdWUgd2l0aG91dCBCT01cbiAqL1xuY29uc3Qgc3RyaXBCT00gPSAoY29udGVudCkgPT4ge1xuICBpZiAoY29udGVudC5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHtcbiAgICBjb250ZW50ID0gY29udGVudC5zbGljZSgxKTtcbiAgfVxuICByZXR1cm4gY29udGVudDtcbn1cblxuLyoqXG4gKiBJbmhlcml0IHRoZSBwcm90b3R5cGUgbWV0aG9kcyBmcm9tIG9uZSBjb25zdHJ1Y3RvciBpbnRvIGFub3RoZXJcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge29iamVjdH0gW3Byb3BzXVxuICogQHBhcmFtIHtvYmplY3R9IFtkZXNjcmlwdG9yc11cbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuY29uc3QgaW5oZXJpdHMgPSAoY29uc3RydWN0b3IsIHN1cGVyQ29uc3RydWN0b3IsIHByb3BzLCBkZXNjcmlwdG9ycykgPT4ge1xuICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ29uc3RydWN0b3IucHJvdG90eXBlLCBkZXNjcmlwdG9ycyk7XG4gIGNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IsICdzdXBlcicsIHtcbiAgICB2YWx1ZTogc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfSk7XG4gIHByb3BzICYmIE9iamVjdC5hc3NpZ24oY29uc3RydWN0b3IucHJvdG90eXBlLCBwcm9wcyk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBvYmplY3Qgd2l0aCBkZWVwIHByb3RvdHlwZSBjaGFpbiB0byBhIGZsYXQgb2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlT2JqIHNvdXJjZSBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBbZGVzdE9ial1cbiAqIEBwYXJhbSB7RnVuY3Rpb258Qm9vbGVhbn0gW2ZpbHRlcl1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcm9wRmlsdGVyXVxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbmNvbnN0IHRvRmxhdE9iamVjdCA9IChzb3VyY2VPYmosIGRlc3RPYmosIGZpbHRlciwgcHJvcEZpbHRlcikgPT4ge1xuICBsZXQgcHJvcHM7XG4gIGxldCBpO1xuICBsZXQgcHJvcDtcbiAgY29uc3QgbWVyZ2VkID0ge307XG5cbiAgZGVzdE9iaiA9IGRlc3RPYmogfHwge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lcS1udWxsLGVxZXFlcVxuICBpZiAoc291cmNlT2JqID09IG51bGwpIHJldHVybiBkZXN0T2JqO1xuXG4gIGRvIHtcbiAgICBwcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZU9iaik7XG4gICAgaSA9IHByb3BzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgcHJvcCA9IHByb3BzW2ldO1xuICAgICAgaWYgKCghcHJvcEZpbHRlciB8fCBwcm9wRmlsdGVyKHByb3AsIHNvdXJjZU9iaiwgZGVzdE9iaikpICYmICFtZXJnZWRbcHJvcF0pIHtcbiAgICAgICAgZGVzdE9ialtwcm9wXSA9IHNvdXJjZU9ialtwcm9wXTtcbiAgICAgICAgbWVyZ2VkW3Byb3BdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgc291cmNlT2JqID0gZmlsdGVyICE9PSBmYWxzZSAmJiBnZXRQcm90b3R5cGVPZihzb3VyY2VPYmopO1xuICB9IHdoaWxlIChzb3VyY2VPYmogJiYgKCFmaWx0ZXIgfHwgZmlsdGVyKHNvdXJjZU9iaiwgZGVzdE9iaikpICYmIHNvdXJjZU9iaiAhPT0gT2JqZWN0LnByb3RvdHlwZSk7XG5cbiAgcmV0dXJuIGRlc3RPYmo7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgY2hhcmFjdGVycyBvZiBhIHNwZWNpZmllZCBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VhcmNoU3RyaW5nXG4gKiBAcGFyYW0ge051bWJlcn0gW3Bvc2l0aW9uPSAwXVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5jb25zdCBlbmRzV2l0aCA9IChzdHIsIHNlYXJjaFN0cmluZywgcG9zaXRpb24pID0+IHtcbiAgc3RyID0gU3RyaW5nKHN0cik7XG4gIGlmIChwb3NpdGlvbiA9PT0gdW5kZWZpbmVkIHx8IHBvc2l0aW9uID4gc3RyLmxlbmd0aCkge1xuICAgIHBvc2l0aW9uID0gc3RyLmxlbmd0aDtcbiAgfVxuICBwb3NpdGlvbiAtPSBzZWFyY2hTdHJpbmcubGVuZ3RoO1xuICBjb25zdCBsYXN0SW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hTdHJpbmcsIHBvc2l0aW9uKTtcbiAgcmV0dXJuIGxhc3RJbmRleCAhPT0gLTEgJiYgbGFzdEluZGV4ID09PSBwb3NpdGlvbjtcbn1cblxuXG4vKipcbiAqIFJldHVybnMgbmV3IGFycmF5IGZyb20gYXJyYXkgbGlrZSBvYmplY3Qgb3IgbnVsbCBpZiBmYWlsZWRcbiAqXG4gKiBAcGFyYW0geyp9IFt0aGluZ11cbiAqXG4gKiBAcmV0dXJucyB7P0FycmF5fVxuICovXG5jb25zdCB0b0FycmF5ID0gKHRoaW5nKSA9PiB7XG4gIGlmICghdGhpbmcpIHJldHVybiBudWxsO1xuICBpZiAoaXNBcnJheSh0aGluZykpIHJldHVybiB0aGluZztcbiAgbGV0IGkgPSB0aGluZy5sZW5ndGg7XG4gIGlmICghaXNOdW1iZXIoaSkpIHJldHVybiBudWxsO1xuICBjb25zdCBhcnIgPSBuZXcgQXJyYXkoaSk7XG4gIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgYXJyW2ldID0gdGhpbmdbaV07XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLyoqXG4gKiBDaGVja2luZyBpZiB0aGUgVWludDhBcnJheSBleGlzdHMgYW5kIGlmIGl0IGRvZXMsIGl0IHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiB0aGVcbiAqIHRoaW5nIHBhc3NlZCBpbiBpcyBhbiBpbnN0YW5jZSBvZiBVaW50OEFycmF5XG4gKlxuICogQHBhcmFtIHtUeXBlZEFycmF5fVxuICpcbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbmNvbnN0IGlzVHlwZWRBcnJheSA9IChUeXBlZEFycmF5ID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuIHRoaW5nID0+IHtcbiAgICByZXR1cm4gVHlwZWRBcnJheSAmJiB0aGluZyBpbnN0YW5jZW9mIFR5cGVkQXJyYXk7XG4gIH07XG59KSh0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2V0UHJvdG90eXBlT2YoVWludDhBcnJheSkpO1xuXG4vKipcbiAqIEZvciBlYWNoIGVudHJ5IGluIHRoZSBvYmplY3QsIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGtleSBhbmQgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3Q8YW55LCBhbnk+fSBvYmogLSBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggZW50cnkuXG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmNvbnN0IGZvckVhY2hFbnRyeSA9IChvYmosIGZuKSA9PiB7XG4gIGNvbnN0IGdlbmVyYXRvciA9IG9iaiAmJiBvYmpbU3ltYm9sLml0ZXJhdG9yXTtcblxuICBjb25zdCBpdGVyYXRvciA9IGdlbmVyYXRvci5jYWxsKG9iaik7XG5cbiAgbGV0IHJlc3VsdDtcblxuICB3aGlsZSAoKHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKSkgJiYgIXJlc3VsdC5kb25lKSB7XG4gICAgY29uc3QgcGFpciA9IHJlc3VsdC52YWx1ZTtcbiAgICBmbi5jYWxsKG9iaiwgcGFpclswXSwgcGFpclsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJdCB0YWtlcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBhbmQgYSBzdHJpbmcsIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIGFsbCB0aGUgbWF0Y2hlc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWdFeHAgLSBUaGUgcmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIGFnYWluc3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIHN0cmluZyB0byBzZWFyY2guXG4gKlxuICogQHJldHVybnMge0FycmF5PGJvb2xlYW4+fVxuICovXG5jb25zdCBtYXRjaEFsbCA9IChyZWdFeHAsIHN0cikgPT4ge1xuICBsZXQgbWF0Y2hlcztcbiAgY29uc3QgYXJyID0gW107XG5cbiAgd2hpbGUgKChtYXRjaGVzID0gcmVnRXhwLmV4ZWMoc3RyKSkgIT09IG51bGwpIHtcbiAgICBhcnIucHVzaChtYXRjaGVzKTtcbiAgfVxuXG4gIHJldHVybiBhcnI7XG59XG5cbi8qIENoZWNraW5nIGlmIHRoZSBraW5kT2ZUZXN0IGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIHBhc3NlZCBhbiBIVE1MRm9ybUVsZW1lbnQuICovXG5jb25zdCBpc0hUTUxGb3JtID0ga2luZE9mVGVzdCgnSFRNTEZvcm1FbGVtZW50Jyk7XG5cbmNvbnN0IHRvQ2FtZWxDYXNlID0gc3RyID0+IHtcbiAgcmV0dXJuIHN0ci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX1xcc10oW2EtelxcZF0pKFxcdyopL2csXG4gICAgZnVuY3Rpb24gcmVwbGFjZXIobSwgcDEsIHAyKSB7XG4gICAgICByZXR1cm4gcDEudG9VcHBlckNhc2UoKSArIHAyO1xuICAgIH1cbiAgKTtcbn07XG5cbi8qIENyZWF0aW5nIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGNoZWNrIGlmIGFuIG9iamVjdCBoYXMgYSBwcm9wZXJ0eS4gKi9cbmNvbnN0IGhhc093blByb3BlcnR5ID0gKCh7aGFzT3duUHJvcGVydHl9KSA9PiAob2JqLCBwcm9wKSA9PiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpKE9iamVjdC5wcm90b3R5cGUpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgUmVnRXhwIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBSZWdFeHAgb2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNSZWdFeHAgPSBraW5kT2ZUZXN0KCdSZWdFeHAnKTtcblxuY29uc3QgcmVkdWNlRGVzY3JpcHRvcnMgPSAob2JqLCByZWR1Y2VyKSA9PiB7XG4gIGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKTtcbiAgY29uc3QgcmVkdWNlZERlc2NyaXB0b3JzID0ge307XG5cbiAgZm9yRWFjaChkZXNjcmlwdG9ycywgKGRlc2NyaXB0b3IsIG5hbWUpID0+IHtcbiAgICBsZXQgcmV0O1xuICAgIGlmICgocmV0ID0gcmVkdWNlcihkZXNjcmlwdG9yLCBuYW1lLCBvYmopKSAhPT0gZmFsc2UpIHtcbiAgICAgIHJlZHVjZWREZXNjcmlwdG9yc1tuYW1lXSA9IHJldCB8fCBkZXNjcmlwdG9yO1xuICAgIH1cbiAgfSk7XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMob2JqLCByZWR1Y2VkRGVzY3JpcHRvcnMpO1xufVxuXG4vKipcbiAqIE1ha2VzIGFsbCBtZXRob2RzIHJlYWQtb25seVxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICovXG5cbmNvbnN0IGZyZWV6ZU1ldGhvZHMgPSAob2JqKSA9PiB7XG4gIHJlZHVjZURlc2NyaXB0b3JzKG9iaiwgKGRlc2NyaXB0b3IsIG5hbWUpID0+IHtcbiAgICAvLyBza2lwIHJlc3RyaWN0ZWQgcHJvcHMgaW4gc3RyaWN0IG1vZGVcbiAgICBpZiAoaXNGdW5jdGlvbihvYmopICYmIFsnYXJndW1lbnRzJywgJ2NhbGxlcicsICdjYWxsZWUnXS5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gb2JqW25hbWVdO1xuXG4gICAgaWYgKCFpc0Z1bmN0aW9uKHZhbHVlKSkgcmV0dXJuO1xuXG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoJ3dyaXRhYmxlJyBpbiBkZXNjcmlwdG9yKSB7XG4gICAgICBkZXNjcmlwdG9yLndyaXRhYmxlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkZXNjcmlwdG9yLnNldCkge1xuICAgICAgZGVzY3JpcHRvci5zZXQgPSAoKSA9PiB7XG4gICAgICAgIHRocm93IEVycm9yKCdDYW4gbm90IHJld3JpdGUgcmVhZC1vbmx5IG1ldGhvZCBcXCcnICsgbmFtZSArICdcXCcnKTtcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cblxuY29uc3QgdG9PYmplY3RTZXQgPSAoYXJyYXlPclN0cmluZywgZGVsaW1pdGVyKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHt9O1xuXG4gIGNvbnN0IGRlZmluZSA9IChhcnIpID0+IHtcbiAgICBhcnIuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICBvYmpbdmFsdWVdID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzQXJyYXkoYXJyYXlPclN0cmluZykgPyBkZWZpbmUoYXJyYXlPclN0cmluZykgOiBkZWZpbmUoU3RyaW5nKGFycmF5T3JTdHJpbmcpLnNwbGl0KGRlbGltaXRlcikpO1xuXG4gIHJldHVybiBvYmo7XG59XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fVxuXG5jb25zdCB0b0Zpbml0ZU51bWJlciA9ICh2YWx1ZSwgZGVmYXVsdFZhbHVlKSA9PiB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSA9ICt2YWx1ZSkgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcbn1cblxuY29uc3QgQUxQSEEgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonXG5cbmNvbnN0IERJR0lUID0gJzAxMjM0NTY3ODknO1xuXG5jb25zdCBBTFBIQUJFVCA9IHtcbiAgRElHSVQsXG4gIEFMUEhBLFxuICBBTFBIQV9ESUdJVDogQUxQSEEgKyBBTFBIQS50b1VwcGVyQ2FzZSgpICsgRElHSVRcbn1cblxuY29uc3QgZ2VuZXJhdGVTdHJpbmcgPSAoc2l6ZSA9IDE2LCBhbHBoYWJldCA9IEFMUEhBQkVULkFMUEhBX0RJR0lUKSA9PiB7XG4gIGxldCBzdHIgPSAnJztcbiAgY29uc3Qge2xlbmd0aH0gPSBhbHBoYWJldDtcbiAgd2hpbGUgKHNpemUtLSkge1xuICAgIHN0ciArPSBhbHBoYWJldFtNYXRoLnJhbmRvbSgpICogbGVuZ3RofDBdXG4gIH1cblxuICByZXR1cm4gc3RyO1xufVxuXG4vKipcbiAqIElmIHRoZSB0aGluZyBpcyBhIEZvcm1EYXRhIG9iamVjdCwgcmV0dXJuIHRydWUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB0aGluZyAtIFRoZSB0aGluZyB0byBjaGVjay5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNTcGVjQ29tcGxpYW50Rm9ybSh0aGluZykge1xuICByZXR1cm4gISEodGhpbmcgJiYgaXNGdW5jdGlvbih0aGluZy5hcHBlbmQpICYmIHRoaW5nW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdGb3JtRGF0YScgJiYgdGhpbmdbU3ltYm9sLml0ZXJhdG9yXSk7XG59XG5cbmNvbnN0IHRvSlNPTk9iamVjdCA9IChvYmopID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgQXJyYXkoMTApO1xuXG4gIGNvbnN0IHZpc2l0ID0gKHNvdXJjZSwgaSkgPT4ge1xuXG4gICAgaWYgKGlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIGlmIChzdGFjay5pbmRleE9mKHNvdXJjZSkgPj0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmKCEoJ3RvSlNPTicgaW4gc291cmNlKSkge1xuICAgICAgICBzdGFja1tpXSA9IHNvdXJjZTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gaXNBcnJheShzb3VyY2UpID8gW10gOiB7fTtcblxuICAgICAgICBmb3JFYWNoKHNvdXJjZSwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICBjb25zdCByZWR1Y2VkVmFsdWUgPSB2aXNpdCh2YWx1ZSwgaSArIDEpO1xuICAgICAgICAgICFpc1VuZGVmaW5lZChyZWR1Y2VkVmFsdWUpICYmICh0YXJnZXRba2V5XSA9IHJlZHVjZWRWYWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0YWNrW2ldID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIHJldHVybiB2aXNpdChvYmosIDApO1xufVxuXG5jb25zdCBpc0FzeW5jRm4gPSBraW5kT2ZUZXN0KCdBc3luY0Z1bmN0aW9uJyk7XG5cbmNvbnN0IGlzVGhlbmFibGUgPSAodGhpbmcpID0+XG4gIHRoaW5nICYmIChpc09iamVjdCh0aGluZykgfHwgaXNGdW5jdGlvbih0aGluZykpICYmIGlzRnVuY3Rpb24odGhpbmcudGhlbikgJiYgaXNGdW5jdGlvbih0aGluZy5jYXRjaCk7XG5cbi8vIG9yaWdpbmFsIGNvZGVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EaWdpdGFsQnJhaW5KUy9BeGlvc1Byb21pc2UvYmxvYi8xNmRlYWIxMzcxMGVjMDk3Nzk5MjIxMzFmM2ZhNTk1NDMyMGY4M2FiL2xpYi91dGlscy5qcyNMMTEtTDM0XG5cbmNvbnN0IF9zZXRJbW1lZGlhdGUgPSAoKHNldEltbWVkaWF0ZVN1cHBvcnRlZCwgcG9zdE1lc3NhZ2VTdXBwb3J0ZWQpID0+IHtcbiAgaWYgKHNldEltbWVkaWF0ZVN1cHBvcnRlZCkge1xuICAgIHJldHVybiBzZXRJbW1lZGlhdGU7XG4gIH1cblxuICByZXR1cm4gcG9zdE1lc3NhZ2VTdXBwb3J0ZWQgPyAoKHRva2VuLCBjYWxsYmFja3MpID0+IHtcbiAgICBfZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsICh7c291cmNlLCBkYXRhfSkgPT4ge1xuICAgICAgaWYgKHNvdXJjZSA9PT0gX2dsb2JhbCAmJiBkYXRhID09PSB0b2tlbikge1xuICAgICAgICBjYWxsYmFja3MubGVuZ3RoICYmIGNhbGxiYWNrcy5zaGlmdCgpKCk7XG4gICAgICB9XG4gICAgfSwgZmFsc2UpO1xuXG4gICAgcmV0dXJuIChjYikgPT4ge1xuICAgICAgY2FsbGJhY2tzLnB1c2goY2IpO1xuICAgICAgX2dsb2JhbC5wb3N0TWVzc2FnZSh0b2tlbiwgXCIqXCIpO1xuICAgIH1cbiAgfSkoYGF4aW9zQCR7TWF0aC5yYW5kb20oKX1gLCBbXSkgOiAoY2IpID0+IHNldFRpbWVvdXQoY2IpO1xufSkoXG4gIHR5cGVvZiBzZXRJbW1lZGlhdGUgPT09ICdmdW5jdGlvbicsXG4gIGlzRnVuY3Rpb24oX2dsb2JhbC5wb3N0TWVzc2FnZSlcbik7XG5cbmNvbnN0IGFzYXAgPSB0eXBlb2YgcXVldWVNaWNyb3Rhc2sgIT09ICd1bmRlZmluZWQnID9cbiAgcXVldWVNaWNyb3Rhc2suYmluZChfZ2xvYmFsKSA6ICggdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MubmV4dFRpY2sgfHwgX3NldEltbWVkaWF0ZSk7XG5cbi8vICoqKioqKioqKioqKioqKioqKioqKlxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlzQXJyYXksXG4gIGlzQXJyYXlCdWZmZXIsXG4gIGlzQnVmZmVyLFxuICBpc0Zvcm1EYXRhLFxuICBpc0FycmF5QnVmZmVyVmlldyxcbiAgaXNTdHJpbmcsXG4gIGlzTnVtYmVyLFxuICBpc0Jvb2xlYW4sXG4gIGlzT2JqZWN0LFxuICBpc1BsYWluT2JqZWN0LFxuICBpc1JlYWRhYmxlU3RyZWFtLFxuICBpc1JlcXVlc3QsXG4gIGlzUmVzcG9uc2UsXG4gIGlzSGVhZGVycyxcbiAgaXNVbmRlZmluZWQsXG4gIGlzRGF0ZSxcbiAgaXNGaWxlLFxuICBpc0Jsb2IsXG4gIGlzUmVnRXhwLFxuICBpc0Z1bmN0aW9uLFxuICBpc1N0cmVhbSxcbiAgaXNVUkxTZWFyY2hQYXJhbXMsXG4gIGlzVHlwZWRBcnJheSxcbiAgaXNGaWxlTGlzdCxcbiAgZm9yRWFjaCxcbiAgbWVyZ2UsXG4gIGV4dGVuZCxcbiAgdHJpbSxcbiAgc3RyaXBCT00sXG4gIGluaGVyaXRzLFxuICB0b0ZsYXRPYmplY3QsXG4gIGtpbmRPZixcbiAga2luZE9mVGVzdCxcbiAgZW5kc1dpdGgsXG4gIHRvQXJyYXksXG4gIGZvckVhY2hFbnRyeSxcbiAgbWF0Y2hBbGwsXG4gIGlzSFRNTEZvcm0sXG4gIGhhc093blByb3BlcnR5LFxuICBoYXNPd25Qcm9wOiBoYXNPd25Qcm9wZXJ0eSwgLy8gYW4gYWxpYXMgdG8gYXZvaWQgRVNMaW50IG5vLXByb3RvdHlwZS1idWlsdGlucyBkZXRlY3Rpb25cbiAgcmVkdWNlRGVzY3JpcHRvcnMsXG4gIGZyZWV6ZU1ldGhvZHMsXG4gIHRvT2JqZWN0U2V0LFxuICB0b0NhbWVsQ2FzZSxcbiAgbm9vcCxcbiAgdG9GaW5pdGVOdW1iZXIsXG4gIGZpbmRLZXksXG4gIGdsb2JhbDogX2dsb2JhbCxcbiAgaXNDb250ZXh0RGVmaW5lZCxcbiAgQUxQSEFCRVQsXG4gIGdlbmVyYXRlU3RyaW5nLFxuICBpc1NwZWNDb21wbGlhbnRGb3JtLFxuICB0b0pTT05PYmplY3QsXG4gIGlzQXN5bmNGbixcbiAgaXNUaGVuYWJsZSxcbiAgc2V0SW1tZWRpYXRlOiBfc2V0SW1tZWRpYXRlLFxuICBhc2FwXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSwgY29uZmlnLCBlcnJvciBjb2RlLCByZXF1ZXN0IGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW2NvbmZpZ10gVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cbiAqL1xuZnVuY3Rpb24gQXhpb3NFcnJvcihtZXNzYWdlLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIEVycm9yLmNhbGwodGhpcyk7XG5cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5zdGFjayA9IChuZXcgRXJyb3IoKSkuc3RhY2s7XG4gIH1cblxuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB0aGlzLm5hbWUgPSAnQXhpb3NFcnJvcic7XG4gIGNvZGUgJiYgKHRoaXMuY29kZSA9IGNvZGUpO1xuICBjb25maWcgJiYgKHRoaXMuY29uZmlnID0gY29uZmlnKTtcbiAgcmVxdWVzdCAmJiAodGhpcy5yZXF1ZXN0ID0gcmVxdWVzdCk7XG4gIGlmIChyZXNwb25zZSkge1xuICAgIHRoaXMucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICB0aGlzLnN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1cyA/IHJlc3BvbnNlLnN0YXR1cyA6IG51bGw7XG4gIH1cbn1cblxudXRpbHMuaW5oZXJpdHMoQXhpb3NFcnJvciwgRXJyb3IsIHtcbiAgdG9KU09OOiBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFN0YW5kYXJkXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAvLyBNaWNyb3NvZnRcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgbnVtYmVyOiB0aGlzLm51bWJlcixcbiAgICAgIC8vIE1vemlsbGFcbiAgICAgIGZpbGVOYW1lOiB0aGlzLmZpbGVOYW1lLFxuICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxuICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcixcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgLy8gQXhpb3NcbiAgICAgIGNvbmZpZzogdXRpbHMudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxcbiAgICAgIGNvZGU6IHRoaXMuY29kZSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXNcbiAgICB9O1xuICB9XG59KTtcblxuY29uc3QgcHJvdG90eXBlID0gQXhpb3NFcnJvci5wcm90b3R5cGU7XG5jb25zdCBkZXNjcmlwdG9ycyA9IHt9O1xuXG5bXG4gICdFUlJfQkFEX09QVElPTl9WQUxVRScsXG4gICdFUlJfQkFEX09QVElPTicsXG4gICdFQ09OTkFCT1JURUQnLFxuICAnRVRJTUVET1VUJyxcbiAgJ0VSUl9ORVRXT1JLJyxcbiAgJ0VSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMnLFxuICAnRVJSX0RFUFJFQ0FURUQnLFxuICAnRVJSX0JBRF9SRVNQT05TRScsXG4gICdFUlJfQkFEX1JFUVVFU1QnLFxuICAnRVJSX0NBTkNFTEVEJyxcbiAgJ0VSUl9OT1RfU1VQUE9SVCcsXG4gICdFUlJfSU5WQUxJRF9VUkwnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuXS5mb3JFYWNoKGNvZGUgPT4ge1xuICBkZXNjcmlwdG9yc1tjb2RlXSA9IHt2YWx1ZTogY29kZX07XG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQXhpb3NFcnJvciwgZGVzY3JpcHRvcnMpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgJ2lzQXhpb3NFcnJvcicsIHt2YWx1ZTogdHJ1ZX0pO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuQXhpb3NFcnJvci5mcm9tID0gKGVycm9yLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlLCBjdXN0b21Qcm9wcykgPT4ge1xuICBjb25zdCBheGlvc0Vycm9yID0gT2JqZWN0LmNyZWF0ZShwcm90b3R5cGUpO1xuXG4gIHV0aWxzLnRvRmxhdE9iamVjdChlcnJvciwgYXhpb3NFcnJvciwgZnVuY3Rpb24gZmlsdGVyKG9iaikge1xuICAgIHJldHVybiBvYmogIT09IEVycm9yLnByb3RvdHlwZTtcbiAgfSwgcHJvcCA9PiB7XG4gICAgcmV0dXJuIHByb3AgIT09ICdpc0F4aW9zRXJyb3InO1xuICB9KTtcblxuICBBeGlvc0Vycm9yLmNhbGwoYXhpb3NFcnJvciwgZXJyb3IubWVzc2FnZSwgY29kZSwgY29uZmlnLCByZXF1ZXN0LCByZXNwb25zZSk7XG5cbiAgYXhpb3NFcnJvci5jYXVzZSA9IGVycm9yO1xuXG4gIGF4aW9zRXJyb3IubmFtZSA9IGVycm9yLm5hbWU7XG5cbiAgY3VzdG9tUHJvcHMgJiYgT2JqZWN0LmFzc2lnbihheGlvc0Vycm9yLCBjdXN0b21Qcm9wcyk7XG5cbiAgcmV0dXJuIGF4aW9zRXJyb3I7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBeGlvc0Vycm9yO1xuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHN0cmljdFxuZXhwb3J0IGRlZmF1bHQgbnVsbDtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4uL2NvcmUvQXhpb3NFcnJvci5qcyc7XG4vLyB0ZW1wb3JhcnkgaG90Zml4IHRvIGF2b2lkIGNpcmN1bGFyIHJlZmVyZW5jZXMgdW50aWwgQXhpb3NVUkxTZWFyY2hQYXJhbXMgaXMgcmVmYWN0b3JlZFxuaW1wb3J0IFBsYXRmb3JtRm9ybURhdGEgZnJvbSAnLi4vcGxhdGZvcm0vbm9kZS9jbGFzc2VzL0Zvcm1EYXRhLmpzJztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiB0aGluZyBpcyBhIGFycmF5IG9yIGpzIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGhpbmcgLSBUaGUgb2JqZWN0IG9yIGFycmF5IHRvIGJlIHZpc2l0ZWQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVmlzaXRhYmxlKHRoaW5nKSB7XG4gIHJldHVybiB1dGlscy5pc1BsYWluT2JqZWN0KHRoaW5nKSB8fCB1dGlscy5pc0FycmF5KHRoaW5nKTtcbn1cblxuLyoqXG4gKiBJdCByZW1vdmVzIHRoZSBicmFja2V0cyBmcm9tIHRoZSBlbmQgb2YgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGtleSBvZiB0aGUgcGFyYW1ldGVyLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBrZXkgd2l0aG91dCB0aGUgYnJhY2tldHMuXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUJyYWNrZXRzKGtleSkge1xuICByZXR1cm4gdXRpbHMuZW5kc1dpdGgoa2V5LCAnW10nKSA/IGtleS5zbGljZSgwLCAtMikgOiBrZXk7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBwYXRoLCBhIGtleSwgYW5kIGEgYm9vbGVhbiwgYW5kIHJldHVybnMgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IGtleS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBjdXJyZW50IG9iamVjdCBiZWluZyBpdGVyYXRlZCBvdmVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGRvdHMgLSBJZiB0cnVlLCB0aGUga2V5IHdpbGwgYmUgcmVuZGVyZWQgd2l0aCBkb3RzIGluc3RlYWQgb2YgYnJhY2tldHMuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIHBhdGggdG8gdGhlIGN1cnJlbnQga2V5LlxuICovXG5mdW5jdGlvbiByZW5kZXJLZXkocGF0aCwga2V5LCBkb3RzKSB7XG4gIGlmICghcGF0aCkgcmV0dXJuIGtleTtcbiAgcmV0dXJuIHBhdGguY29uY2F0KGtleSkubWFwKGZ1bmN0aW9uIGVhY2godG9rZW4sIGkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICB0b2tlbiA9IHJlbW92ZUJyYWNrZXRzKHRva2VuKTtcbiAgICByZXR1cm4gIWRvdHMgJiYgaSA/ICdbJyArIHRva2VuICsgJ10nIDogdG9rZW47XG4gIH0pLmpvaW4oZG90cyA/ICcuJyA6ICcnKTtcbn1cblxuLyoqXG4gKiBJZiB0aGUgYXJyYXkgaXMgYW4gYXJyYXkgYW5kIG5vbmUgb2YgaXRzIGVsZW1lbnRzIGFyZSB2aXNpdGFibGUsIHRoZW4gaXQncyBhIGZsYXQgYXJyYXkuXG4gKlxuICogQHBhcmFtIHtBcnJheTxhbnk+fSBhcnIgLSBUaGUgYXJyYXkgdG8gY2hlY2tcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNGbGF0QXJyYXkoYXJyKSB7XG4gIHJldHVybiB1dGlscy5pc0FycmF5KGFycikgJiYgIWFyci5zb21lKGlzVmlzaXRhYmxlKTtcbn1cblxuY29uc3QgcHJlZGljYXRlcyA9IHV0aWxzLnRvRmxhdE9iamVjdCh1dGlscywge30sIG51bGwsIGZ1bmN0aW9uIGZpbHRlcihwcm9wKSB7XG4gIHJldHVybiAvXmlzW0EtWl0vLnRlc3QocHJvcCk7XG59KTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgZGF0YSBvYmplY3QgdG8gRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcGFyYW0gez9PYmplY3R9IFtmb3JtRGF0YV1cbiAqIEBwYXJhbSB7P09iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy52aXNpdG9yXVxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5tZXRhVG9rZW5zID0gdHJ1ZV1cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuZG90cyA9IGZhbHNlXVxuICogQHBhcmFtIHs/Qm9vbGVhbn0gW29wdGlvbnMuaW5kZXhlcyA9IGZhbHNlXVxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKiovXG5cbi8qKlxuICogSXQgY29udmVydHMgYW4gb2JqZWN0IGludG8gYSBGb3JtRGF0YSBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdDxhbnksIGFueT59IG9iaiAtIFRoZSBvYmplY3QgdG8gY29udmVydCB0byBmb3JtIGRhdGEuXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybURhdGEgLSBUaGUgRm9ybURhdGEgb2JqZWN0IHRvIGFwcGVuZCB0by5cbiAqIEBwYXJhbSB7T2JqZWN0PHN0cmluZywgYW55Pn0gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIHRvRm9ybURhdGEob2JqLCBmb3JtRGF0YSwgb3B0aW9ucykge1xuICBpZiAoIXV0aWxzLmlzT2JqZWN0KG9iaikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBmb3JtRGF0YSA9IGZvcm1EYXRhIHx8IG5ldyAoUGxhdGZvcm1Gb3JtRGF0YSB8fCBGb3JtRGF0YSkoKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgb3B0aW9ucyA9IHV0aWxzLnRvRmxhdE9iamVjdChvcHRpb25zLCB7XG4gICAgbWV0YVRva2VuczogdHJ1ZSxcbiAgICBkb3RzOiBmYWxzZSxcbiAgICBpbmRleGVzOiBmYWxzZVxuICB9LCBmYWxzZSwgZnVuY3Rpb24gZGVmaW5lZChvcHRpb24sIHNvdXJjZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lcS1udWxsLGVxZXFlcVxuICAgIHJldHVybiAhdXRpbHMuaXNVbmRlZmluZWQoc291cmNlW29wdGlvbl0pO1xuICB9KTtcblxuICBjb25zdCBtZXRhVG9rZW5zID0gb3B0aW9ucy5tZXRhVG9rZW5zO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgY29uc3QgdmlzaXRvciA9IG9wdGlvbnMudmlzaXRvciB8fCBkZWZhdWx0VmlzaXRvcjtcbiAgY29uc3QgZG90cyA9IG9wdGlvbnMuZG90cztcbiAgY29uc3QgaW5kZXhlcyA9IG9wdGlvbnMuaW5kZXhlcztcbiAgY29uc3QgX0Jsb2IgPSBvcHRpb25zLkJsb2IgfHwgdHlwZW9mIEJsb2IgIT09ICd1bmRlZmluZWQnICYmIEJsb2I7XG4gIGNvbnN0IHVzZUJsb2IgPSBfQmxvYiAmJiB1dGlscy5pc1NwZWNDb21wbGlhbnRGb3JtKGZvcm1EYXRhKTtcblxuICBpZiAoIXV0aWxzLmlzRnVuY3Rpb24odmlzaXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2aXNpdG9yIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgZnVuY3Rpb24gY29udmVydFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gJyc7XG5cbiAgICBpZiAodXRpbHMuaXNEYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKCF1c2VCbG9iICYmIHV0aWxzLmlzQmxvYih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKCdCbG9iIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBhIEJ1ZmZlciBpbnN0ZWFkLicpO1xuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyKHZhbHVlKSB8fCB1dGlscy5pc1R5cGVkQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdXNlQmxvYiAmJiB0eXBlb2YgQmxvYiA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyBCbG9iKFt2YWx1ZV0pIDogQnVmZmVyLmZyb20odmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHZpc2l0b3IuXG4gICAqXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfSBrZXlcbiAgICogQHBhcmFtIHtBcnJheTxTdHJpbmd8TnVtYmVyPn0gcGF0aFxuICAgKiBAdGhpcyB7Rm9ybURhdGF9XG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSByZXR1cm4gdHJ1ZSB0byB2aXNpdCB0aGUgZWFjaCBwcm9wIG9mIHRoZSB2YWx1ZSByZWN1cnNpdmVseVxuICAgKi9cbiAgZnVuY3Rpb24gZGVmYXVsdFZpc2l0b3IodmFsdWUsIGtleSwgcGF0aCkge1xuICAgIGxldCBhcnIgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSAmJiAhcGF0aCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAodXRpbHMuZW5kc1dpdGgoa2V5LCAne30nKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAga2V5ID0gbWV0YVRva2VucyA/IGtleSA6IGtleS5zbGljZSgwLCAtMik7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICh1dGlscy5pc0FycmF5KHZhbHVlKSAmJiBpc0ZsYXRBcnJheSh2YWx1ZSkpIHx8XG4gICAgICAgICgodXRpbHMuaXNGaWxlTGlzdCh2YWx1ZSkgfHwgdXRpbHMuZW5kc1dpdGgoa2V5LCAnW10nKSkgJiYgKGFyciA9IHV0aWxzLnRvQXJyYXkodmFsdWUpKVxuICAgICAgICApKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBrZXkgPSByZW1vdmVCcmFja2V0cyhrZXkpO1xuXG4gICAgICAgIGFyci5mb3JFYWNoKGZ1bmN0aW9uIGVhY2goZWwsIGluZGV4KSB7XG4gICAgICAgICAgISh1dGlscy5pc1VuZGVmaW5lZChlbCkgfHwgZWwgPT09IG51bGwpICYmIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXN0ZWQtdGVybmFyeVxuICAgICAgICAgICAgaW5kZXhlcyA9PT0gdHJ1ZSA/IHJlbmRlcktleShba2V5XSwgaW5kZXgsIGRvdHMpIDogKGluZGV4ZXMgPT09IG51bGwgPyBrZXkgOiBrZXkgKyAnW10nKSxcbiAgICAgICAgICAgIGNvbnZlcnRWYWx1ZShlbClcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc1Zpc2l0YWJsZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZvcm1EYXRhLmFwcGVuZChyZW5kZXJLZXkocGF0aCwga2V5LCBkb3RzKSwgY29udmVydFZhbHVlKHZhbHVlKSk7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzdGFjayA9IFtdO1xuXG4gIGNvbnN0IGV4cG9zZWRIZWxwZXJzID0gT2JqZWN0LmFzc2lnbihwcmVkaWNhdGVzLCB7XG4gICAgZGVmYXVsdFZpc2l0b3IsXG4gICAgY29udmVydFZhbHVlLFxuICAgIGlzVmlzaXRhYmxlXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGJ1aWxkKHZhbHVlLCBwYXRoKSB7XG4gICAgaWYgKHV0aWxzLmlzVW5kZWZpbmVkKHZhbHVlKSkgcmV0dXJuO1xuXG4gICAgaWYgKHN0YWNrLmluZGV4T2YodmFsdWUpICE9PSAtMSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0NpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCBpbiAnICsgcGF0aC5qb2luKCcuJykpO1xuICAgIH1cblxuICAgIHN0YWNrLnB1c2godmFsdWUpO1xuXG4gICAgdXRpbHMuZm9yRWFjaCh2YWx1ZSwgZnVuY3Rpb24gZWFjaChlbCwga2V5KSB7XG4gICAgICBjb25zdCByZXN1bHQgPSAhKHV0aWxzLmlzVW5kZWZpbmVkKGVsKSB8fCBlbCA9PT0gbnVsbCkgJiYgdmlzaXRvci5jYWxsKFxuICAgICAgICBmb3JtRGF0YSwgZWwsIHV0aWxzLmlzU3RyaW5nKGtleSkgPyBrZXkudHJpbSgpIDoga2V5LCBwYXRoLCBleHBvc2VkSGVscGVyc1xuICAgICAgKTtcblxuICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkge1xuICAgICAgICBidWlsZChlbCwgcGF0aCA/IHBhdGguY29uY2F0KGtleSkgOiBba2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzdGFjay5wb3AoKTtcbiAgfVxuXG4gIGlmICghdXRpbHMuaXNPYmplY3Qob2JqKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2RhdGEgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuXG4gIGJ1aWxkKG9iaik7XG5cbiAgcmV0dXJuIGZvcm1EYXRhO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0b0Zvcm1EYXRhO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdG9Gb3JtRGF0YSBmcm9tICcuL3RvRm9ybURhdGEuanMnO1xuXG4vKipcbiAqIEl0IGVuY29kZXMgYSBzdHJpbmcgYnkgcmVwbGFjaW5nIGFsbCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBpbiB0aGUgdW5yZXNlcnZlZCBzZXQgd2l0aFxuICogdGhlaXIgcGVyY2VudC1lbmNvZGVkIGVxdWl2YWxlbnRzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIFRoZSBzdHJpbmcgdG8gZW5jb2RlLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbmNvZGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZW5jb2RlKHN0cikge1xuICBjb25zdCBjaGFyTWFwID0ge1xuICAgICchJzogJyUyMScsXG4gICAgXCInXCI6ICclMjcnLFxuICAgICcoJzogJyUyOCcsXG4gICAgJyknOiAnJTI5JyxcbiAgICAnfic6ICclN0UnLFxuICAgICclMjAnOiAnKycsXG4gICAgJyUwMCc6ICdcXHgwMCdcbiAgfTtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLCBmdW5jdGlvbiByZXBsYWNlcihtYXRjaCkge1xuICAgIHJldHVybiBjaGFyTWFwW21hdGNoXTtcbiAgfSk7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBwYXJhbXMgb2JqZWN0IGFuZCBjb252ZXJ0cyBpdCB0byBhIEZvcm1EYXRhIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0PHN0cmluZywgYW55Pn0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gYmUgY29udmVydGVkIHRvIGEgRm9ybURhdGEgb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3Q8c3RyaW5nLCBhbnk+fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0IHBhc3NlZCB0byB0aGUgQXhpb3MgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIEF4aW9zVVJMU2VhcmNoUGFyYW1zKHBhcmFtcywgb3B0aW9ucykge1xuICB0aGlzLl9wYWlycyA9IFtdO1xuXG4gIHBhcmFtcyAmJiB0b0Zvcm1EYXRhKHBhcmFtcywgdGhpcywgb3B0aW9ucyk7XG59XG5cbmNvbnN0IHByb3RvdHlwZSA9IEF4aW9zVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcblxucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIGFwcGVuZChuYW1lLCB2YWx1ZSkge1xuICB0aGlzLl9wYWlycy5wdXNoKFtuYW1lLCB2YWx1ZV0pO1xufTtcblxucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoZW5jb2Rlcikge1xuICBjb25zdCBfZW5jb2RlID0gZW5jb2RlciA/IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGVuY29kZXIuY2FsbCh0aGlzLCB2YWx1ZSwgZW5jb2RlKTtcbiAgfSA6IGVuY29kZTtcblxuICByZXR1cm4gdGhpcy5fcGFpcnMubWFwKGZ1bmN0aW9uIGVhY2gocGFpcikge1xuICAgIHJldHVybiBfZW5jb2RlKHBhaXJbMF0pICsgJz0nICsgX2VuY29kZShwYWlyWzFdKTtcbiAgfSwgJycpLmpvaW4oJyYnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF4aW9zVVJMU2VhcmNoUGFyYW1zO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IEF4aW9zVVJMU2VhcmNoUGFyYW1zIGZyb20gJy4uL2hlbHBlcnMvQXhpb3NVUkxTZWFyY2hQYXJhbXMuanMnO1xuXG4vKipcbiAqIEl0IHJlcGxhY2VzIGFsbCBpbnN0YW5jZXMgb2YgdGhlIGNoYXJhY3RlcnMgYDpgLCBgJGAsIGAsYCwgYCtgLCBgW2AsIGFuZCBgXWAgd2l0aCB0aGVpclxuICogVVJJIGVuY29kZWQgY291bnRlcnBhcnRzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCBUaGUgdmFsdWUgdG8gYmUgZW5jb2RlZC5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW5jb2RlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEBwYXJhbSB7PyhvYmplY3R8RnVuY3Rpb24pfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZvcm1hdHRlZCB1cmxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIG9wdGlvbnMpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuICBcbiAgY29uc3QgX2VuY29kZSA9IG9wdGlvbnMgJiYgb3B0aW9ucy5lbmNvZGUgfHwgZW5jb2RlO1xuXG4gIGlmICh1dGlscy5pc0Z1bmN0aW9uKG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIHNlcmlhbGl6ZTogb3B0aW9uc1xuICAgIH07XG4gIH0gXG5cbiAgY29uc3Qgc2VyaWFsaXplRm4gPSBvcHRpb25zICYmIG9wdGlvbnMuc2VyaWFsaXplO1xuXG4gIGxldCBzZXJpYWxpemVkUGFyYW1zO1xuXG4gIGlmIChzZXJpYWxpemVGbikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBzZXJpYWxpemVGbihwYXJhbXMsIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSB1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMpID9cbiAgICAgIHBhcmFtcy50b1N0cmluZygpIDpcbiAgICAgIG5ldyBBeGlvc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMsIG9wdGlvbnMpLnRvU3RyaW5nKF9lbmNvZGUpO1xuICB9XG5cbiAgaWYgKHNlcmlhbGl6ZWRQYXJhbXMpIHtcbiAgICBjb25zdCBoYXNobWFya0luZGV4ID0gdXJsLmluZGV4T2YoXCIjXCIpO1xuXG4gICAgaWYgKGhhc2htYXJrSW5kZXggIT09IC0xKSB7XG4gICAgICB1cmwgPSB1cmwuc2xpY2UoMCwgaGFzaG1hcmtJbmRleCk7XG4gICAgfVxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLy4uL3V0aWxzLmpzJztcblxuY2xhc3MgSW50ZXJjZXB0b3JNYW5hZ2VyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5oYW5kbGVycyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBpbnRlcmNlcHRvciB0byB0aGUgc3RhY2tcbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVsZmlsbGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHRoZW5gIGZvciBhIGBQcm9taXNlYFxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3RlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGByZWplY3RgIGZvciBhIGBQcm9taXNlYFxuICAgKlxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9IEFuIElEIHVzZWQgdG8gcmVtb3ZlIGludGVyY2VwdG9yIGxhdGVyXG4gICAqL1xuICB1c2UoZnVsZmlsbGVkLCByZWplY3RlZCwgb3B0aW9ucykge1xuICAgIHRoaXMuaGFuZGxlcnMucHVzaCh7XG4gICAgICBmdWxmaWxsZWQsXG4gICAgICByZWplY3RlZCxcbiAgICAgIHN5bmNocm9ub3VzOiBvcHRpb25zID8gb3B0aW9ucy5zeW5jaHJvbm91cyA6IGZhbHNlLFxuICAgICAgcnVuV2hlbjogb3B0aW9ucyA/IG9wdGlvbnMucnVuV2hlbiA6IG51bGxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVycy5sZW5ndGggLSAxO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBpbnRlcmNlcHRvciBmcm9tIHRoZSBzdGFja1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gaWQgVGhlIElEIHRoYXQgd2FzIHJldHVybmVkIGJ5IGB1c2VgXG4gICAqXG4gICAqIEByZXR1cm5zIHtCb29sZWFufSBgdHJ1ZWAgaWYgdGhlIGludGVyY2VwdG9yIHdhcyByZW1vdmVkLCBgZmFsc2VgIG90aGVyd2lzZVxuICAgKi9cbiAgZWplY3QoaWQpIHtcbiAgICBpZiAodGhpcy5oYW5kbGVyc1tpZF0pIHtcbiAgICAgIHRoaXMuaGFuZGxlcnNbaWRdID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGludGVyY2VwdG9ycyBmcm9tIHRoZSBzdGFja1xuICAgKlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGNsZWFyKCkge1xuICAgIGlmICh0aGlzLmhhbmRsZXJzKSB7XG4gICAgICB0aGlzLmhhbmRsZXJzID0gW107XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlZ2lzdGVyZWQgaW50ZXJjZXB0b3JzXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNraXBwaW5nIG92ZXIgYW55XG4gICAqIGludGVyY2VwdG9ycyB0aGF0IG1heSBoYXZlIGJlY29tZSBgbnVsbGAgY2FsbGluZyBgZWplY3RgLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBpbnRlcmNlcHRvclxuICAgKlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZvckVhY2goZm4pIHtcbiAgICB1dGlscy5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsIGZ1bmN0aW9uIGZvckVhY2hIYW5kbGVyKGgpIHtcbiAgICAgIGlmIChoICE9PSBudWxsKSB7XG4gICAgICAgIGZuKGgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEludGVyY2VwdG9yTWFuYWdlcjtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBzaWxlbnRKU09OUGFyc2luZzogdHJ1ZSxcbiAgZm9yY2VkSlNPTlBhcnNpbmc6IHRydWUsXG4gIGNsYXJpZnlUaW1lb3V0RXJyb3I6IGZhbHNlXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgQXhpb3NVUkxTZWFyY2hQYXJhbXMgZnJvbSAnLi4vLi4vLi4vaGVscGVycy9BeGlvc1VSTFNlYXJjaFBhcmFtcy5qcyc7XG5leHBvcnQgZGVmYXVsdCB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zICE9PSAndW5kZWZpbmVkJyA/IFVSTFNlYXJjaFBhcmFtcyA6IEF4aW9zVVJMU2VhcmNoUGFyYW1zO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCB0eXBlb2YgRm9ybURhdGEgIT09ICd1bmRlZmluZWQnID8gRm9ybURhdGEgOiBudWxsO1xuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydCBkZWZhdWx0IHR5cGVvZiBCbG9iICE9PSAndW5kZWZpbmVkJyA/IEJsb2IgOiBudWxsXG4iLCJpbXBvcnQgVVJMU2VhcmNoUGFyYW1zIGZyb20gJy4vY2xhc3Nlcy9VUkxTZWFyY2hQYXJhbXMuanMnXG5pbXBvcnQgRm9ybURhdGEgZnJvbSAnLi9jbGFzc2VzL0Zvcm1EYXRhLmpzJ1xuaW1wb3J0IEJsb2IgZnJvbSAnLi9jbGFzc2VzL0Jsb2IuanMnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaXNCcm93c2VyOiB0cnVlLFxuICBjbGFzc2VzOiB7XG4gICAgVVJMU2VhcmNoUGFyYW1zLFxuICAgIEZvcm1EYXRhLFxuICAgIEJsb2JcbiAgfSxcbiAgcHJvdG9jb2xzOiBbJ2h0dHAnLCAnaHR0cHMnLCAnZmlsZScsICdibG9iJywgJ3VybCcsICdkYXRhJ11cbn07XG4iLCJjb25zdCBoYXNCcm93c2VyRW52ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcblxuY29uc3QgX25hdmlnYXRvciA9IHR5cGVvZiBuYXZpZ2F0b3IgPT09ICdvYmplY3QnICYmIG5hdmlnYXRvciB8fCB1bmRlZmluZWQ7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50XG4gKlxuICogVGhpcyBhbGxvd3MgYXhpb3MgdG8gcnVuIGluIGEgd2ViIHdvcmtlciwgYW5kIHJlYWN0LW5hdGl2ZS5cbiAqIEJvdGggZW52aXJvbm1lbnRzIHN1cHBvcnQgWE1MSHR0cFJlcXVlc3QsIGJ1dCBub3QgZnVsbHkgc3RhbmRhcmQgZ2xvYmFscy5cbiAqXG4gKiB3ZWIgd29ya2VyczpcbiAqICB0eXBlb2Ygd2luZG93IC0+IHVuZGVmaW5lZFxuICogIHR5cGVvZiBkb2N1bWVudCAtPiB1bmRlZmluZWRcbiAqXG4gKiByZWFjdC1uYXRpdmU6XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ1JlYWN0TmF0aXZlJ1xuICogbmF0aXZlc2NyaXB0XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ05hdGl2ZVNjcmlwdCcgb3IgJ05TJ1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5jb25zdCBoYXNTdGFuZGFyZEJyb3dzZXJFbnYgPSBoYXNCcm93c2VyRW52ICYmXG4gICghX25hdmlnYXRvciB8fCBbJ1JlYWN0TmF0aXZlJywgJ05hdGl2ZVNjcmlwdCcsICdOUyddLmluZGV4T2YoX25hdmlnYXRvci5wcm9kdWN0KSA8IDApO1xuXG4vKipcbiAqIERldGVybWluZSBpZiB3ZSdyZSBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciB3ZWJXb3JrZXIgZW52aXJvbm1lbnRcbiAqXG4gKiBBbHRob3VnaCB0aGUgYGlzU3RhbmRhcmRCcm93c2VyRW52YCBtZXRob2QgaW5kaWNhdGVzIHRoYXRcbiAqIGBhbGxvd3MgYXhpb3MgdG8gcnVuIGluIGEgd2ViIHdvcmtlcmAsIHRoZSBXZWJXb3JrZXIgd2lsbCBzdGlsbCBiZVxuICogZmlsdGVyZWQgb3V0IGR1ZSB0byBpdHMganVkZ21lbnQgc3RhbmRhcmRcbiAqIGB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnYC5cbiAqIFRoaXMgbGVhZHMgdG8gYSBwcm9ibGVtIHdoZW4gYXhpb3MgcG9zdCBgRm9ybURhdGFgIGluIHdlYldvcmtlclxuICovXG5jb25zdCBoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYgPSAoKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICBzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUgJiZcbiAgICB0eXBlb2Ygc2VsZi5pbXBvcnRTY3JpcHRzID09PSAnZnVuY3Rpb24nXG4gICk7XG59KSgpO1xuXG5jb25zdCBvcmlnaW4gPSBoYXNCcm93c2VyRW52ICYmIHdpbmRvdy5sb2NhdGlvbi5ocmVmIHx8ICdodHRwOi8vbG9jYWxob3N0JztcblxuZXhwb3J0IHtcbiAgaGFzQnJvd3NlckVudixcbiAgaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52LFxuICBoYXNTdGFuZGFyZEJyb3dzZXJFbnYsXG4gIF9uYXZpZ2F0b3IgYXMgbmF2aWdhdG9yLFxuICBvcmlnaW5cbn1cbiIsImltcG9ydCBwbGF0Zm9ybSBmcm9tICcuL25vZGUvaW5kZXguanMnO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi9jb21tb24vdXRpbHMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC4uLnV0aWxzLFxuICAuLi5wbGF0Zm9ybVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IHRvRm9ybURhdGEgZnJvbSAnLi90b0Zvcm1EYXRhLmpzJztcbmltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvVVJMRW5jb2RlZEZvcm0oZGF0YSwgb3B0aW9ucykge1xuICByZXR1cm4gdG9Gb3JtRGF0YShkYXRhLCBuZXcgcGxhdGZvcm0uY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMoKSwgT2JqZWN0LmFzc2lnbih7XG4gICAgdmlzaXRvcjogZnVuY3Rpb24odmFsdWUsIGtleSwgcGF0aCwgaGVscGVycykge1xuICAgICAgaWYgKHBsYXRmb3JtLmlzTm9kZSAmJiB1dGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoa2V5LCB2YWx1ZS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBoZWxwZXJzLmRlZmF1bHRWaXNpdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9LCBvcHRpb25zKSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5cbi8qKlxuICogSXQgdGFrZXMgYSBzdHJpbmcgbGlrZSBgZm9vW3hdW3ldW3pdYCBhbmQgcmV0dXJucyBhbiBhcnJheSBsaWtlIGBbJ2ZvbycsICd4JywgJ3knLCAneiddXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICpcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUHJvcFBhdGgobmFtZSkge1xuICAvLyBmb29beF1beV1bel1cbiAgLy8gZm9vLngueS56XG4gIC8vIGZvby14LXktelxuICAvLyBmb28geCB5IHpcbiAgcmV0dXJuIHV0aWxzLm1hdGNoQWxsKC9cXHcrfFxcWyhcXHcqKV0vZywgbmFtZSkubWFwKG1hdGNoID0+IHtcbiAgICByZXR1cm4gbWF0Y2hbMF0gPT09ICdbXScgPyAnJyA6IG1hdGNoWzFdIHx8IG1hdGNoWzBdO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFuIGFycmF5IHRvIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PGFueT59IGFyciAtIFRoZSBhcnJheSB0byBjb252ZXJ0IHRvIGFuIG9iamVjdC5cbiAqXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFuZCB2YWx1ZXMgYXMgdGhlIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheVRvT2JqZWN0KGFycikge1xuICBjb25zdCBvYmogPSB7fTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGFycik7XG4gIGxldCBpO1xuICBjb25zdCBsZW4gPSBrZXlzLmxlbmd0aDtcbiAgbGV0IGtleTtcbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAga2V5ID0ga2V5c1tpXTtcbiAgICBvYmpba2V5XSA9IGFycltrZXldO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBGb3JtRGF0YSBvYmplY3QgYW5kIHJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtRGF0YSBUaGUgRm9ybURhdGEgb2JqZWN0IHRvIGNvbnZlcnQgdG8gSlNPTi5cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0PHN0cmluZywgYW55PiB8IG51bGx9IFRoZSBjb252ZXJ0ZWQgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBmb3JtRGF0YVRvSlNPTihmb3JtRGF0YSkge1xuICBmdW5jdGlvbiBidWlsZFBhdGgocGF0aCwgdmFsdWUsIHRhcmdldCwgaW5kZXgpIHtcbiAgICBsZXQgbmFtZSA9IHBhdGhbaW5kZXgrK107XG5cbiAgICBpZiAobmFtZSA9PT0gJ19fcHJvdG9fXycpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgaXNOdW1lcmljS2V5ID0gTnVtYmVyLmlzRmluaXRlKCtuYW1lKTtcbiAgICBjb25zdCBpc0xhc3QgPSBpbmRleCA+PSBwYXRoLmxlbmd0aDtcbiAgICBuYW1lID0gIW5hbWUgJiYgdXRpbHMuaXNBcnJheSh0YXJnZXQpID8gdGFyZ2V0Lmxlbmd0aCA6IG5hbWU7XG5cbiAgICBpZiAoaXNMYXN0KSB7XG4gICAgICBpZiAodXRpbHMuaGFzT3duUHJvcCh0YXJnZXQsIG5hbWUpKSB7XG4gICAgICAgIHRhcmdldFtuYW1lXSA9IFt0YXJnZXRbbmFtZV0sIHZhbHVlXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldFtuYW1lXSA9IHZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gIWlzTnVtZXJpY0tleTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldFtuYW1lXSB8fCAhdXRpbHMuaXNPYmplY3QodGFyZ2V0W25hbWVdKSkge1xuICAgICAgdGFyZ2V0W25hbWVdID0gW107XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYnVpbGRQYXRoKHBhdGgsIHZhbHVlLCB0YXJnZXRbbmFtZV0sIGluZGV4KTtcblxuICAgIGlmIChyZXN1bHQgJiYgdXRpbHMuaXNBcnJheSh0YXJnZXRbbmFtZV0pKSB7XG4gICAgICB0YXJnZXRbbmFtZV0gPSBhcnJheVRvT2JqZWN0KHRhcmdldFtuYW1lXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICFpc051bWVyaWNLZXk7XG4gIH1cblxuICBpZiAodXRpbHMuaXNGb3JtRGF0YShmb3JtRGF0YSkgJiYgdXRpbHMuaXNGdW5jdGlvbihmb3JtRGF0YS5lbnRyaWVzKSkge1xuICAgIGNvbnN0IG9iaiA9IHt9O1xuXG4gICAgdXRpbHMuZm9yRWFjaEVudHJ5KGZvcm1EYXRhLCAobmFtZSwgdmFsdWUpID0+IHtcbiAgICAgIGJ1aWxkUGF0aChwYXJzZVByb3BQYXRoKG5hbWUpLCB2YWx1ZSwgb2JqLCAwKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZm9ybURhdGFUb0pTT047XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuaW1wb3J0IHRyYW5zaXRpb25hbERlZmF1bHRzIGZyb20gJy4vdHJhbnNpdGlvbmFsLmpzJztcbmltcG9ydCB0b0Zvcm1EYXRhIGZyb20gJy4uL2hlbHBlcnMvdG9Gb3JtRGF0YS5qcyc7XG5pbXBvcnQgdG9VUkxFbmNvZGVkRm9ybSBmcm9tICcuLi9oZWxwZXJzL3RvVVJMRW5jb2RlZEZvcm0uanMnO1xuaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4uL3BsYXRmb3JtL2luZGV4LmpzJztcbmltcG9ydCBmb3JtRGF0YVRvSlNPTiBmcm9tICcuLi9oZWxwZXJzL2Zvcm1EYXRhVG9KU09OLmpzJztcblxuLyoqXG4gKiBJdCB0YWtlcyBhIHN0cmluZywgdHJpZXMgdG8gcGFyc2UgaXQsIGFuZCBpZiBpdCBmYWlscywgaXQgcmV0dXJucyB0aGUgc3RyaW5naWZpZWQgdmVyc2lvblxuICogb2YgdGhlIGlucHV0XG4gKlxuICogQHBhcmFtIHthbnl9IHJhd1ZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIHN0cmluZ2lmaWVkLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyc2VyIC0gQSBmdW5jdGlvbiB0aGF0IHBhcnNlcyBhIHN0cmluZyBpbnRvIGEgSmF2YVNjcmlwdCBvYmplY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlbmNvZGVyIC0gQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdmFsdWUgYW5kIHJldHVybnMgYSBzdHJpbmcuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gQSBzdHJpbmdpZmllZCB2ZXJzaW9uIG9mIHRoZSByYXdWYWx1ZS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5U2FmZWx5KHJhd1ZhbHVlLCBwYXJzZXIsIGVuY29kZXIpIHtcbiAgaWYgKHV0aWxzLmlzU3RyaW5nKHJhd1ZhbHVlKSkge1xuICAgIHRyeSB7XG4gICAgICAocGFyc2VyIHx8IEpTT04ucGFyc2UpKHJhd1ZhbHVlKTtcbiAgICAgIHJldHVybiB1dGlscy50cmltKHJhd1ZhbHVlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5uYW1lICE9PSAnU3ludGF4RXJyb3InKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChlbmNvZGVyIHx8IEpTT04uc3RyaW5naWZ5KShyYXdWYWx1ZSk7XG59XG5cbmNvbnN0IGRlZmF1bHRzID0ge1xuXG4gIHRyYW5zaXRpb25hbDogdHJhbnNpdGlvbmFsRGVmYXVsdHMsXG5cbiAgYWRhcHRlcjogWyd4aHInLCAnaHR0cCcsICdmZXRjaCddLFxuXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXF1ZXN0KGRhdGEsIGhlYWRlcnMpIHtcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IGhlYWRlcnMuZ2V0Q29udGVudFR5cGUoKSB8fCAnJztcbiAgICBjb25zdCBoYXNKU09OQ29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pbmRleE9mKCdhcHBsaWNhdGlvbi9qc29uJykgPiAtMTtcbiAgICBjb25zdCBpc09iamVjdFBheWxvYWQgPSB1dGlscy5pc09iamVjdChkYXRhKTtcblxuICAgIGlmIChpc09iamVjdFBheWxvYWQgJiYgdXRpbHMuaXNIVE1MRm9ybShkYXRhKSkge1xuICAgICAgZGF0YSA9IG5ldyBGb3JtRGF0YShkYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0Zvcm1EYXRhID0gdXRpbHMuaXNGb3JtRGF0YShkYXRhKTtcblxuICAgIGlmIChpc0Zvcm1EYXRhKSB7XG4gICAgICByZXR1cm4gaGFzSlNPTkNvbnRlbnRUeXBlID8gSlNPTi5zdHJpbmdpZnkoZm9ybURhdGFUb0pTT04oZGF0YSkpIDogZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzU3RyZWFtKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0ZpbGUoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQmxvYihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNSZWFkYWJsZVN0cmVhbShkYXRhKVxuICAgICkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyVmlldyhkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMoZGF0YSkpIHtcbiAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04JywgZmFsc2UpO1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBsZXQgaXNGaWxlTGlzdDtcblxuICAgIGlmIChpc09iamVjdFBheWxvYWQpIHtcbiAgICAgIGlmIChjb250ZW50VHlwZS5pbmRleE9mKCdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSA+IC0xKSB7XG4gICAgICAgIHJldHVybiB0b1VSTEVuY29kZWRGb3JtKGRhdGEsIHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICgoaXNGaWxlTGlzdCA9IHV0aWxzLmlzRmlsZUxpc3QoZGF0YSkpIHx8IGNvbnRlbnRUeXBlLmluZGV4T2YoJ211bHRpcGFydC9mb3JtLWRhdGEnKSA+IC0xKSB7XG4gICAgICAgIGNvbnN0IF9Gb3JtRGF0YSA9IHRoaXMuZW52ICYmIHRoaXMuZW52LkZvcm1EYXRhO1xuXG4gICAgICAgIHJldHVybiB0b0Zvcm1EYXRhKFxuICAgICAgICAgIGlzRmlsZUxpc3QgPyB7J2ZpbGVzW10nOiBkYXRhfSA6IGRhdGEsXG4gICAgICAgICAgX0Zvcm1EYXRhICYmIG5ldyBfRm9ybURhdGEoKSxcbiAgICAgICAgICB0aGlzLmZvcm1TZXJpYWxpemVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzT2JqZWN0UGF5bG9hZCB8fCBoYXNKU09OQ29udGVudFR5cGUgKSB7XG4gICAgICBoZWFkZXJzLnNldENvbnRlbnRUeXBlKCdhcHBsaWNhdGlvbi9qc29uJywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHN0cmluZ2lmeVNhZmVseShkYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgdHJhbnNmb3JtUmVzcG9uc2U6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXNwb25zZShkYXRhKSB7XG4gICAgY29uc3QgdHJhbnNpdGlvbmFsID0gdGhpcy50cmFuc2l0aW9uYWwgfHwgZGVmYXVsdHMudHJhbnNpdGlvbmFsO1xuICAgIGNvbnN0IGZvcmNlZEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5mb3JjZWRKU09OUGFyc2luZztcbiAgICBjb25zdCBKU09OUmVxdWVzdGVkID0gdGhpcy5yZXNwb25zZVR5cGUgPT09ICdqc29uJztcblxuICAgIGlmICh1dGlscy5pc1Jlc3BvbnNlKGRhdGEpIHx8IHV0aWxzLmlzUmVhZGFibGVTdHJlYW0oZGF0YSkpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGlmIChkYXRhICYmIHV0aWxzLmlzU3RyaW5nKGRhdGEpICYmICgoZm9yY2VkSlNPTlBhcnNpbmcgJiYgIXRoaXMucmVzcG9uc2VUeXBlKSB8fCBKU09OUmVxdWVzdGVkKSkge1xuICAgICAgY29uc3Qgc2lsZW50SlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLnNpbGVudEpTT05QYXJzaW5nO1xuICAgICAgY29uc3Qgc3RyaWN0SlNPTlBhcnNpbmcgPSAhc2lsZW50SlNPTlBhcnNpbmcgJiYgSlNPTlJlcXVlc3RlZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChzdHJpY3RKU09OUGFyc2luZykge1xuICAgICAgICAgIGlmIChlLm5hbWUgPT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgICAgIHRocm93IEF4aW9zRXJyb3IuZnJvbShlLCBBeGlvc0Vycm9yLkVSUl9CQURfUkVTUE9OU0UsIHRoaXMsIG51bGwsIHRoaXMucmVzcG9uc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIC8qKlxuICAgKiBBIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGFib3J0IGEgcmVxdWVzdC4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGFcbiAgICogdGltZW91dCBpcyBub3QgY3JlYXRlZC5cbiAgICovXG4gIHRpbWVvdXQ6IDAsXG5cbiAgeHNyZkNvb2tpZU5hbWU6ICdYU1JGLVRPS0VOJyxcbiAgeHNyZkhlYWRlck5hbWU6ICdYLVhTUkYtVE9LRU4nLFxuXG4gIG1heENvbnRlbnRMZW5ndGg6IC0xLFxuICBtYXhCb2R5TGVuZ3RoOiAtMSxcblxuICBlbnY6IHtcbiAgICBGb3JtRGF0YTogcGxhdGZvcm0uY2xhc3Nlcy5Gb3JtRGF0YSxcbiAgICBCbG9iOiBwbGF0Zm9ybS5jbGFzc2VzLkJsb2JcbiAgfSxcblxuICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXMoc3RhdHVzKSB7XG4gICAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xuICB9LFxuXG4gIGhlYWRlcnM6IHtcbiAgICBjb21tb246IHtcbiAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJyxcbiAgICAgICdDb250ZW50LVR5cGUnOiB1bmRlZmluZWRcbiAgICB9XG4gIH1cbn07XG5cbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgKG1ldGhvZCkgPT4ge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB7fTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0cztcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuXG4vLyBSYXdBeGlvc0hlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG5jb25zdCBpZ25vcmVEdXBsaWNhdGVPZiA9IHV0aWxzLnRvT2JqZWN0U2V0KFtcbiAgJ2FnZScsICdhdXRob3JpemF0aW9uJywgJ2NvbnRlbnQtbGVuZ3RoJywgJ2NvbnRlbnQtdHlwZScsICdldGFnJyxcbiAgJ2V4cGlyZXMnLCAnZnJvbScsICdob3N0JywgJ2lmLW1vZGlmaWVkLXNpbmNlJywgJ2lmLXVubW9kaWZpZWQtc2luY2UnLFxuICAnbGFzdC1tb2RpZmllZCcsICdsb2NhdGlvbicsICdtYXgtZm9yd2FyZHMnLCAncHJveHktYXV0aG9yaXphdGlvbicsXG4gICdyZWZlcmVyJywgJ3JldHJ5LWFmdGVyJywgJ3VzZXItYWdlbnQnXG5dKTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHJhd0hlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IEhlYWRlcnMgcGFyc2VkIGludG8gYW4gb2JqZWN0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IHJhd0hlYWRlcnMgPT4ge1xuICBjb25zdCBwYXJzZWQgPSB7fTtcbiAgbGV0IGtleTtcbiAgbGV0IHZhbDtcbiAgbGV0IGk7XG5cbiAgcmF3SGVhZGVycyAmJiByYXdIZWFkZXJzLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGZ1bmN0aW9uIHBhcnNlcihsaW5lKSB7XG4gICAgaSA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgIGtleSA9IGxpbmUuc3Vic3RyaW5nKDAsIGkpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbCA9IGxpbmUuc3Vic3RyaW5nKGkgKyAxKS50cmltKCk7XG5cbiAgICBpZiAoIWtleSB8fCAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2Zba2V5XSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgIGlmIChwYXJzZWRba2V5XSkge1xuICAgICAgICBwYXJzZWRba2V5XS5wdXNoKHZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRba2V5XSA9IFt2YWxdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWRba2V5XSA9IHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gKyAnLCAnICsgdmFsIDogdmFsO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgcGFyc2VIZWFkZXJzIGZyb20gJy4uL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzJztcblxuY29uc3QgJGludGVybmFscyA9IFN5bWJvbCgnaW50ZXJuYWxzJyk7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlcihoZWFkZXIpIHtcbiAgcmV0dXJuIGhlYWRlciAmJiBTdHJpbmcoaGVhZGVyKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHV0aWxzLmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKG5vcm1hbGl6ZVZhbHVlKSA6IFN0cmluZyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVG9rZW5zKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCB0b2tlbnNSRSA9IC8oW15cXHMsOz1dKylcXHMqKD86PVxccyooW14sO10rKSk/L2c7XG4gIGxldCBtYXRjaDtcblxuICB3aGlsZSAoKG1hdGNoID0gdG9rZW5zUkUuZXhlYyhzdHIpKSkge1xuICAgIHRva2Vuc1ttYXRjaFsxXV0gPSBtYXRjaFsyXTtcbiAgfVxuXG4gIHJldHVybiB0b2tlbnM7XG59XG5cbmNvbnN0IGlzVmFsaWRIZWFkZXJOYW1lID0gKHN0cikgPT4gL15bLV9hLXpBLVowLTleYHx+LCEjJCUmJyorLl0rJC8udGVzdChzdHIudHJpbSgpKTtcblxuZnVuY3Rpb24gbWF0Y2hIZWFkZXJWYWx1ZShjb250ZXh0LCB2YWx1ZSwgaGVhZGVyLCBmaWx0ZXIsIGlzSGVhZGVyTmFtZUZpbHRlcikge1xuICBpZiAodXRpbHMuaXNGdW5jdGlvbihmaWx0ZXIpKSB7XG4gICAgcmV0dXJuIGZpbHRlci5jYWxsKHRoaXMsIHZhbHVlLCBoZWFkZXIpO1xuICB9XG5cbiAgaWYgKGlzSGVhZGVyTmFtZUZpbHRlcikge1xuICAgIHZhbHVlID0gaGVhZGVyO1xuICB9XG5cbiAgaWYgKCF1dGlscy5pc1N0cmluZyh2YWx1ZSkpIHJldHVybjtcblxuICBpZiAodXRpbHMuaXNTdHJpbmcoZmlsdGVyKSkge1xuICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKGZpbHRlcikgIT09IC0xO1xuICB9XG5cbiAgaWYgKHV0aWxzLmlzUmVnRXhwKGZpbHRlcikpIHtcbiAgICByZXR1cm4gZmlsdGVyLnRlc3QodmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEhlYWRlcihoZWFkZXIpIHtcbiAgcmV0dXJuIGhlYWRlci50cmltKClcbiAgICAudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxcZF0pKFxcdyopL2csICh3LCBjaGFyLCBzdHIpID0+IHtcbiAgICAgIHJldHVybiBjaGFyLnRvVXBwZXJDYXNlKCkgKyBzdHI7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQWNjZXNzb3JzKG9iaiwgaGVhZGVyKSB7XG4gIGNvbnN0IGFjY2Vzc29yTmFtZSA9IHV0aWxzLnRvQ2FtZWxDYXNlKCcgJyArIGhlYWRlcik7XG5cbiAgWydnZXQnLCAnc2V0JywgJ2hhcyddLmZvckVhY2gobWV0aG9kTmFtZSA9PiB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgbWV0aG9kTmFtZSArIGFjY2Vzc29yTmFtZSwge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uKGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbbWV0aG9kTmFtZV0uY2FsbCh0aGlzLCBoZWFkZXIsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICAgICAgfSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9KTtcbn1cblxuY2xhc3MgQXhpb3NIZWFkZXJzIHtcbiAgY29uc3RydWN0b3IoaGVhZGVycykge1xuICAgIGhlYWRlcnMgJiYgdGhpcy5zZXQoaGVhZGVycyk7XG4gIH1cblxuICBzZXQoaGVhZGVyLCB2YWx1ZU9yUmV3cml0ZSwgcmV3cml0ZSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gc2V0SGVhZGVyKF92YWx1ZSwgX2hlYWRlciwgX3Jld3JpdGUpIHtcbiAgICAgIGNvbnN0IGxIZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoX2hlYWRlcik7XG5cbiAgICAgIGlmICghbEhlYWRlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkoc2VsZiwgbEhlYWRlcik7XG5cbiAgICAgIGlmKCFrZXkgfHwgc2VsZltrZXldID09PSB1bmRlZmluZWQgfHwgX3Jld3JpdGUgPT09IHRydWUgfHwgKF9yZXdyaXRlID09PSB1bmRlZmluZWQgJiYgc2VsZltrZXldICE9PSBmYWxzZSkpIHtcbiAgICAgICAgc2VsZltrZXkgfHwgX2hlYWRlcl0gPSBub3JtYWxpemVWYWx1ZShfdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNldEhlYWRlcnMgPSAoaGVhZGVycywgX3Jld3JpdGUpID0+XG4gICAgICB1dGlscy5mb3JFYWNoKGhlYWRlcnMsIChfdmFsdWUsIF9oZWFkZXIpID0+IHNldEhlYWRlcihfdmFsdWUsIF9oZWFkZXIsIF9yZXdyaXRlKSk7XG5cbiAgICBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChoZWFkZXIpIHx8IGhlYWRlciBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpIHtcbiAgICAgIHNldEhlYWRlcnMoaGVhZGVyLCB2YWx1ZU9yUmV3cml0ZSlcbiAgICB9IGVsc2UgaWYodXRpbHMuaXNTdHJpbmcoaGVhZGVyKSAmJiAoaGVhZGVyID0gaGVhZGVyLnRyaW0oKSkgJiYgIWlzVmFsaWRIZWFkZXJOYW1lKGhlYWRlcikpIHtcbiAgICAgIHNldEhlYWRlcnMocGFyc2VIZWFkZXJzKGhlYWRlciksIHZhbHVlT3JSZXdyaXRlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzSGVhZGVycyhoZWFkZXIpKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBoZWFkZXIuZW50cmllcygpKSB7XG4gICAgICAgIHNldEhlYWRlcih2YWx1ZSwga2V5LCByZXdyaXRlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVyICE9IG51bGwgJiYgc2V0SGVhZGVyKHZhbHVlT3JSZXdyaXRlLCBoZWFkZXIsIHJld3JpdGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0KGhlYWRlciwgcGFyc2VyKSB7XG4gICAgaGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKGhlYWRlcik7XG5cbiAgICBpZiAoaGVhZGVyKSB7XG4gICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KHRoaXMsIGhlYWRlcik7XG5cbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzW2tleV07XG5cbiAgICAgICAgaWYgKCFwYXJzZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyc2VyID09PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVG9rZW5zKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1dGlscy5pc0Z1bmN0aW9uKHBhcnNlcikpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VyLmNhbGwodGhpcywgdmFsdWUsIGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXRpbHMuaXNSZWdFeHAocGFyc2VyKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZXIuZXhlYyh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXJzZXIgbXVzdCBiZSBib29sZWFufHJlZ2V4cHxmdW5jdGlvbicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhcyhoZWFkZXIsIG1hdGNoZXIpIHtcbiAgICBoZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoaGVhZGVyKTtcblxuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkodGhpcywgaGVhZGVyKTtcblxuICAgICAgcmV0dXJuICEhKGtleSAmJiB0aGlzW2tleV0gIT09IHVuZGVmaW5lZCAmJiAoIW1hdGNoZXIgfHwgbWF0Y2hIZWFkZXJWYWx1ZSh0aGlzLCB0aGlzW2tleV0sIGtleSwgbWF0Y2hlcikpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBkZWxldGUoaGVhZGVyLCBtYXRjaGVyKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgbGV0IGRlbGV0ZWQgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGRlbGV0ZUhlYWRlcihfaGVhZGVyKSB7XG4gICAgICBfaGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKF9oZWFkZXIpO1xuXG4gICAgICBpZiAoX2hlYWRlcikge1xuICAgICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KHNlbGYsIF9oZWFkZXIpO1xuXG4gICAgICAgIGlmIChrZXkgJiYgKCFtYXRjaGVyIHx8IG1hdGNoSGVhZGVyVmFsdWUoc2VsZiwgc2VsZltrZXldLCBrZXksIG1hdGNoZXIpKSkge1xuICAgICAgICAgIGRlbGV0ZSBzZWxmW2tleV07XG5cbiAgICAgICAgICBkZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0FycmF5KGhlYWRlcikpIHtcbiAgICAgIGhlYWRlci5mb3JFYWNoKGRlbGV0ZUhlYWRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZUhlYWRlcihoZWFkZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVkO1xuICB9XG5cbiAgY2xlYXIobWF0Y2hlcikge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzKTtcbiAgICBsZXQgaSA9IGtleXMubGVuZ3RoO1xuICAgIGxldCBkZWxldGVkID0gZmFsc2U7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgaWYoIW1hdGNoZXIgfHwgbWF0Y2hIZWFkZXJWYWx1ZSh0aGlzLCB0aGlzW2tleV0sIGtleSwgbWF0Y2hlciwgdHJ1ZSkpIHtcbiAgICAgICAgZGVsZXRlIHRoaXNba2V5XTtcbiAgICAgICAgZGVsZXRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZWQ7XG4gIH1cblxuICBub3JtYWxpemUoZm9ybWF0KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgaGVhZGVycyA9IHt9O1xuXG4gICAgdXRpbHMuZm9yRWFjaCh0aGlzLCAodmFsdWUsIGhlYWRlcikgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleShoZWFkZXJzLCBoZWFkZXIpO1xuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHNlbGZba2V5XSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgZGVsZXRlIHNlbGZbaGVhZGVyXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBub3JtYWxpemVkID0gZm9ybWF0ID8gZm9ybWF0SGVhZGVyKGhlYWRlcikgOiBTdHJpbmcoaGVhZGVyKS50cmltKCk7XG5cbiAgICAgIGlmIChub3JtYWxpemVkICE9PSBoZWFkZXIpIHtcbiAgICAgICAgZGVsZXRlIHNlbGZbaGVhZGVyXTtcbiAgICAgIH1cblxuICAgICAgc2VsZltub3JtYWxpemVkXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcblxuICAgICAgaGVhZGVyc1tub3JtYWxpemVkXSA9IHRydWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbmNhdCguLi50YXJnZXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsIC4uLnRhcmdldHMpO1xuICB9XG5cbiAgdG9KU09OKGFzU3RyaW5ncykge1xuICAgIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICB1dGlscy5mb3JFYWNoKHRoaXMsICh2YWx1ZSwgaGVhZGVyKSA9PiB7XG4gICAgICB2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9PSBmYWxzZSAmJiAob2JqW2hlYWRlcl0gPSBhc1N0cmluZ3MgJiYgdXRpbHMuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5qb2luKCcsICcpIDogdmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIFtTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbaGVhZGVyLCB2YWx1ZV0pID0+IGhlYWRlciArICc6ICcgKyB2YWx1ZSkuam9pbignXFxuJyk7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdBeGlvc0hlYWRlcnMnO1xuICB9XG5cbiAgc3RhdGljIGZyb20odGhpbmcpIHtcbiAgICByZXR1cm4gdGhpbmcgaW5zdGFuY2VvZiB0aGlzID8gdGhpbmcgOiBuZXcgdGhpcyh0aGluZyk7XG4gIH1cblxuICBzdGF0aWMgY29uY2F0KGZpcnN0LCAuLi50YXJnZXRzKSB7XG4gICAgY29uc3QgY29tcHV0ZWQgPSBuZXcgdGhpcyhmaXJzdCk7XG5cbiAgICB0YXJnZXRzLmZvckVhY2goKHRhcmdldCkgPT4gY29tcHV0ZWQuc2V0KHRhcmdldCkpO1xuXG4gICAgcmV0dXJuIGNvbXB1dGVkO1xuICB9XG5cbiAgc3RhdGljIGFjY2Vzc29yKGhlYWRlcikge1xuICAgIGNvbnN0IGludGVybmFscyA9IHRoaXNbJGludGVybmFsc10gPSAodGhpc1skaW50ZXJuYWxzXSA9IHtcbiAgICAgIGFjY2Vzc29yczoge31cbiAgICB9KTtcblxuICAgIGNvbnN0IGFjY2Vzc29ycyA9IGludGVybmFscy5hY2Nlc3NvcnM7XG4gICAgY29uc3QgcHJvdG90eXBlID0gdGhpcy5wcm90b3R5cGU7XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVBY2Nlc3NvcihfaGVhZGVyKSB7XG4gICAgICBjb25zdCBsSGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKF9oZWFkZXIpO1xuXG4gICAgICBpZiAoIWFjY2Vzc29yc1tsSGVhZGVyXSkge1xuICAgICAgICBidWlsZEFjY2Vzc29ycyhwcm90b3R5cGUsIF9oZWFkZXIpO1xuICAgICAgICBhY2Nlc3NvcnNbbEhlYWRlcl0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHV0aWxzLmlzQXJyYXkoaGVhZGVyKSA/IGhlYWRlci5mb3JFYWNoKGRlZmluZUFjY2Vzc29yKSA6IGRlZmluZUFjY2Vzc29yKGhlYWRlcik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5BeGlvc0hlYWRlcnMuYWNjZXNzb3IoWydDb250ZW50LVR5cGUnLCAnQ29udGVudC1MZW5ndGgnLCAnQWNjZXB0JywgJ0FjY2VwdC1FbmNvZGluZycsICdVc2VyLUFnZW50JywgJ0F1dGhvcml6YXRpb24nXSk7XG5cbi8vIHJlc2VydmVkIG5hbWVzIGhvdGZpeFxudXRpbHMucmVkdWNlRGVzY3JpcHRvcnMoQXhpb3NIZWFkZXJzLnByb3RvdHlwZSwgKHt2YWx1ZX0sIGtleSkgPT4ge1xuICBsZXQgbWFwcGVkID0ga2V5WzBdLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSk7IC8vIG1hcCBgc2V0YCA9PiBgU2V0YFxuICByZXR1cm4ge1xuICAgIGdldDogKCkgPT4gdmFsdWUsXG4gICAgc2V0KGhlYWRlclZhbHVlKSB7XG4gICAgICB0aGlzW21hcHBlZF0gPSBoZWFkZXJWYWx1ZTtcbiAgICB9XG4gIH1cbn0pO1xuXG51dGlscy5mcmVlemVNZXRob2RzKEF4aW9zSGVhZGVycyk7XG5cbmV4cG9ydCBkZWZhdWx0IEF4aW9zSGVhZGVycztcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4uL2RlZmF1bHRzL2luZGV4LmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSAnLi4vY29yZS9BeGlvc0hlYWRlcnMuanMnO1xuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgZGF0YSBmb3IgYSByZXF1ZXN0IG9yIGEgcmVzcG9uc2VcbiAqXG4gKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufSBmbnMgQSBzaW5nbGUgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zXG4gKiBAcGFyYW0gez9PYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZSBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBkYXRhXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZm5zLCByZXNwb25zZSkge1xuICBjb25zdCBjb25maWcgPSB0aGlzIHx8IGRlZmF1bHRzO1xuICBjb25zdCBjb250ZXh0ID0gcmVzcG9uc2UgfHwgY29uZmlnO1xuICBjb25zdCBoZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oY29udGV4dC5oZWFkZXJzKTtcbiAgbGV0IGRhdGEgPSBjb250ZXh0LmRhdGE7XG5cbiAgdXRpbHMuZm9yRWFjaChmbnMsIGZ1bmN0aW9uIHRyYW5zZm9ybShmbikge1xuICAgIGRhdGEgPSBmbi5jYWxsKGNvbmZpZywgZGF0YSwgaGVhZGVycy5ub3JtYWxpemUoKSwgcmVzcG9uc2UgPyByZXNwb25zZS5zdGF0dXMgOiB1bmRlZmluZWQpO1xuICB9KTtcblxuICBoZWFkZXJzLm5vcm1hbGl6ZSgpO1xuXG4gIHJldHVybiBkYXRhO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0NhbmNlbCh2YWx1ZSkge1xuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWUuX19DQU5DRUxfXyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4uL2NvcmUvQXhpb3NFcnJvci5qcyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuXG4vKipcbiAqIEEgYENhbmNlbGVkRXJyb3JgIGlzIGFuIG9iamVjdCB0aGF0IGlzIHRocm93biB3aGVuIGFuIG9wZXJhdGlvbiBpcyBjYW5jZWxlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UgVGhlIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge09iamVjdD19IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtPYmplY3Q9fSByZXF1ZXN0IFRoZSByZXF1ZXN0LlxuICpcbiAqIEByZXR1cm5zIHtDYW5jZWxlZEVycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsZWRFcnJvcihtZXNzYWdlLCBjb25maWcsIHJlcXVlc3QpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVxLW51bGwsZXFlcWVxXG4gIEF4aW9zRXJyb3IuY2FsbCh0aGlzLCBtZXNzYWdlID09IG51bGwgPyAnY2FuY2VsZWQnIDogbWVzc2FnZSwgQXhpb3NFcnJvci5FUlJfQ0FOQ0VMRUQsIGNvbmZpZywgcmVxdWVzdCk7XG4gIHRoaXMubmFtZSA9ICdDYW5jZWxlZEVycm9yJztcbn1cblxudXRpbHMuaW5oZXJpdHMoQ2FuY2VsZWRFcnJvciwgQXhpb3NFcnJvciwge1xuICBfX0NBTkNFTF9fOiB0cnVlXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgQ2FuY2VsZWRFcnJvcjtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi9BeGlvc0Vycm9yLmpzJztcblxuLyoqXG4gKiBSZXNvbHZlIG9yIHJlamVjdCBhIFByb21pc2UgYmFzZWQgb24gcmVzcG9uc2Ugc3RhdHVzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmUgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0IEEgZnVuY3Rpb24gdGhhdCByZWplY3RzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgcmVzcG9uc2UuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKSB7XG4gIGNvbnN0IHZhbGlkYXRlU3RhdHVzID0gcmVzcG9uc2UuY29uZmlnLnZhbGlkYXRlU3RhdHVzO1xuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXG4gICAgICBbQXhpb3NFcnJvci5FUlJfQkFEX1JFUVVFU1QsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVNQT05TRV1bTWF0aC5mbG9vcihyZXNwb25zZS5zdGF0dXMgLyAxMDApIC0gNF0sXG4gICAgICByZXNwb25zZS5jb25maWcsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZVByb3RvY29sKHVybCkge1xuICBjb25zdCBtYXRjaCA9IC9eKFstK1xcd117MSwyNX0pKDo/XFwvXFwvfDopLy5leGVjKHVybCk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDYWxjdWxhdGUgZGF0YSBtYXhSYXRlXG4gKiBAcGFyYW0ge051bWJlcn0gW3NhbXBsZXNDb3VudD0gMTBdXG4gKiBAcGFyYW0ge051bWJlcn0gW21pbj0gMTAwMF1cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gc3BlZWRvbWV0ZXIoc2FtcGxlc0NvdW50LCBtaW4pIHtcbiAgc2FtcGxlc0NvdW50ID0gc2FtcGxlc0NvdW50IHx8IDEwO1xuICBjb25zdCBieXRlcyA9IG5ldyBBcnJheShzYW1wbGVzQ291bnQpO1xuICBjb25zdCB0aW1lc3RhbXBzID0gbmV3IEFycmF5KHNhbXBsZXNDb3VudCk7XG4gIGxldCBoZWFkID0gMDtcbiAgbGV0IHRhaWwgPSAwO1xuICBsZXQgZmlyc3RTYW1wbGVUUztcblxuICBtaW4gPSBtaW4gIT09IHVuZGVmaW5lZCA/IG1pbiA6IDEwMDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHB1c2goY2h1bmtMZW5ndGgpIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgY29uc3Qgc3RhcnRlZEF0ID0gdGltZXN0YW1wc1t0YWlsXTtcblxuICAgIGlmICghZmlyc3RTYW1wbGVUUykge1xuICAgICAgZmlyc3RTYW1wbGVUUyA9IG5vdztcbiAgICB9XG5cbiAgICBieXRlc1toZWFkXSA9IGNodW5rTGVuZ3RoO1xuICAgIHRpbWVzdGFtcHNbaGVhZF0gPSBub3c7XG5cbiAgICBsZXQgaSA9IHRhaWw7XG4gICAgbGV0IGJ5dGVzQ291bnQgPSAwO1xuXG4gICAgd2hpbGUgKGkgIT09IGhlYWQpIHtcbiAgICAgIGJ5dGVzQ291bnQgKz0gYnl0ZXNbaSsrXTtcbiAgICAgIGkgPSBpICUgc2FtcGxlc0NvdW50O1xuICAgIH1cblxuICAgIGhlYWQgPSAoaGVhZCArIDEpICUgc2FtcGxlc0NvdW50O1xuXG4gICAgaWYgKGhlYWQgPT09IHRhaWwpIHtcbiAgICAgIHRhaWwgPSAodGFpbCArIDEpICUgc2FtcGxlc0NvdW50O1xuICAgIH1cblxuICAgIGlmIChub3cgLSBmaXJzdFNhbXBsZVRTIDwgbWluKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFzc2VkID0gc3RhcnRlZEF0ICYmIG5vdyAtIHN0YXJ0ZWRBdDtcblxuICAgIHJldHVybiBwYXNzZWQgPyBNYXRoLnJvdW5kKGJ5dGVzQ291bnQgKiAxMDAwIC8gcGFzc2VkKSA6IHVuZGVmaW5lZDtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3BlZWRvbWV0ZXI7XG4iLCIvKipcbiAqIFRocm90dGxlIGRlY29yYXRvclxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqIEBwYXJhbSB7TnVtYmVyfSBmcmVxXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gdGhyb3R0bGUoZm4sIGZyZXEpIHtcbiAgbGV0IHRpbWVzdGFtcCA9IDA7XG4gIGxldCB0aHJlc2hvbGQgPSAxMDAwIC8gZnJlcTtcbiAgbGV0IGxhc3RBcmdzO1xuICBsZXQgdGltZXI7XG5cbiAgY29uc3QgaW52b2tlID0gKGFyZ3MsIG5vdyA9IERhdGUubm93KCkpID0+IHtcbiAgICB0aW1lc3RhbXAgPSBub3c7XG4gICAgbGFzdEFyZ3MgPSBudWxsO1xuICAgIGlmICh0aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIHRpbWVyID0gbnVsbDtcbiAgICB9XG4gICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XG4gIH1cblxuICBjb25zdCB0aHJvdHRsZWQgPSAoLi4uYXJncykgPT4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcGFzc2VkID0gbm93IC0gdGltZXN0YW1wO1xuICAgIGlmICggcGFzc2VkID49IHRocmVzaG9sZCkge1xuICAgICAgaW52b2tlKGFyZ3MsIG5vdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhc3RBcmdzID0gYXJncztcbiAgICAgIGlmICghdGltZXIpIHtcbiAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aW1lciA9IG51bGw7XG4gICAgICAgICAgaW52b2tlKGxhc3RBcmdzKVxuICAgICAgICB9LCB0aHJlc2hvbGQgLSBwYXNzZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZsdXNoID0gKCkgPT4gbGFzdEFyZ3MgJiYgaW52b2tlKGxhc3RBcmdzKTtcblxuICByZXR1cm4gW3Rocm90dGxlZCwgZmx1c2hdO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0aHJvdHRsZTtcbiIsImltcG9ydCBzcGVlZG9tZXRlciBmcm9tIFwiLi9zcGVlZG9tZXRlci5qc1wiO1xuaW1wb3J0IHRocm90dGxlIGZyb20gXCIuL3Rocm90dGxlLmpzXCI7XG5pbXBvcnQgdXRpbHMgZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBjb25zdCBwcm9ncmVzc0V2ZW50UmVkdWNlciA9IChsaXN0ZW5lciwgaXNEb3dubG9hZFN0cmVhbSwgZnJlcSA9IDMpID0+IHtcbiAgbGV0IGJ5dGVzTm90aWZpZWQgPSAwO1xuICBjb25zdCBfc3BlZWRvbWV0ZXIgPSBzcGVlZG9tZXRlcig1MCwgMjUwKTtcblxuICByZXR1cm4gdGhyb3R0bGUoZSA9PiB7XG4gICAgY29uc3QgbG9hZGVkID0gZS5sb2FkZWQ7XG4gICAgY29uc3QgdG90YWwgPSBlLmxlbmd0aENvbXB1dGFibGUgPyBlLnRvdGFsIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHByb2dyZXNzQnl0ZXMgPSBsb2FkZWQgLSBieXRlc05vdGlmaWVkO1xuICAgIGNvbnN0IHJhdGUgPSBfc3BlZWRvbWV0ZXIocHJvZ3Jlc3NCeXRlcyk7XG4gICAgY29uc3QgaW5SYW5nZSA9IGxvYWRlZCA8PSB0b3RhbDtcblxuICAgIGJ5dGVzTm90aWZpZWQgPSBsb2FkZWQ7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgbG9hZGVkLFxuICAgICAgdG90YWwsXG4gICAgICBwcm9ncmVzczogdG90YWwgPyAobG9hZGVkIC8gdG90YWwpIDogdW5kZWZpbmVkLFxuICAgICAgYnl0ZXM6IHByb2dyZXNzQnl0ZXMsXG4gICAgICByYXRlOiByYXRlID8gcmF0ZSA6IHVuZGVmaW5lZCxcbiAgICAgIGVzdGltYXRlZDogcmF0ZSAmJiB0b3RhbCAmJiBpblJhbmdlID8gKHRvdGFsIC0gbG9hZGVkKSAvIHJhdGUgOiB1bmRlZmluZWQsXG4gICAgICBldmVudDogZSxcbiAgICAgIGxlbmd0aENvbXB1dGFibGU6IHRvdGFsICE9IG51bGwsXG4gICAgICBbaXNEb3dubG9hZFN0cmVhbSA/ICdkb3dubG9hZCcgOiAndXBsb2FkJ106IHRydWVcbiAgICB9O1xuXG4gICAgbGlzdGVuZXIoZGF0YSk7XG4gIH0sIGZyZXEpO1xufVxuXG5leHBvcnQgY29uc3QgcHJvZ3Jlc3NFdmVudERlY29yYXRvciA9ICh0b3RhbCwgdGhyb3R0bGVkKSA9PiB7XG4gIGNvbnN0IGxlbmd0aENvbXB1dGFibGUgPSB0b3RhbCAhPSBudWxsO1xuXG4gIHJldHVybiBbKGxvYWRlZCkgPT4gdGhyb3R0bGVkWzBdKHtcbiAgICBsZW5ndGhDb21wdXRhYmxlLFxuICAgIHRvdGFsLFxuICAgIGxvYWRlZFxuICB9KSwgdGhyb3R0bGVkWzFdXTtcbn1cblxuZXhwb3J0IGNvbnN0IGFzeW5jRGVjb3JhdG9yID0gKGZuKSA9PiAoLi4uYXJncykgPT4gdXRpbHMuYXNhcCgoKSA9PiBmbiguLi5hcmdzKSk7XG4iLCJpbXBvcnQgcGxhdGZvcm0gZnJvbSAnLi4vcGxhdGZvcm0vaW5kZXguanMnO1xuXG5leHBvcnQgZGVmYXVsdCBwbGF0Zm9ybS5oYXNTdGFuZGFyZEJyb3dzZXJFbnYgPyAoKG9yaWdpbiwgaXNNU0lFKSA9PiAodXJsKSA9PiB7XG4gIHVybCA9IG5ldyBVUkwodXJsLCBwbGF0Zm9ybS5vcmlnaW4pO1xuXG4gIHJldHVybiAoXG4gICAgb3JpZ2luLnByb3RvY29sID09PSB1cmwucHJvdG9jb2wgJiZcbiAgICBvcmlnaW4uaG9zdCA9PT0gdXJsLmhvc3QgJiZcbiAgICAoaXNNU0lFIHx8IG9yaWdpbi5wb3J0ID09PSB1cmwucG9ydClcbiAgKTtcbn0pKFxuICBuZXcgVVJMKHBsYXRmb3JtLm9yaWdpbiksXG4gIHBsYXRmb3JtLm5hdmlnYXRvciAmJiAvKG1zaWV8dHJpZGVudCkvaS50ZXN0KHBsYXRmb3JtLm5hdmlnYXRvci51c2VyQWdlbnQpXG4pIDogKCkgPT4gdHJ1ZTtcbiIsImltcG9ydCB1dGlscyBmcm9tICcuLy4uL3V0aWxzLmpzJztcbmltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudiA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIHN1cHBvcnQgZG9jdW1lbnQuY29va2llXG4gIHtcbiAgICB3cml0ZShuYW1lLCB2YWx1ZSwgZXhwaXJlcywgcGF0aCwgZG9tYWluLCBzZWN1cmUpIHtcbiAgICAgIGNvbnN0IGNvb2tpZSA9IFtuYW1lICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKV07XG5cbiAgICAgIHV0aWxzLmlzTnVtYmVyKGV4cGlyZXMpICYmIGNvb2tpZS5wdXNoKCdleHBpcmVzPScgKyBuZXcgRGF0ZShleHBpcmVzKS50b0dNVFN0cmluZygpKTtcblxuICAgICAgdXRpbHMuaXNTdHJpbmcocGF0aCkgJiYgY29va2llLnB1c2goJ3BhdGg9JyArIHBhdGgpO1xuXG4gICAgICB1dGlscy5pc1N0cmluZyhkb21haW4pICYmIGNvb2tpZS5wdXNoKCdkb21haW49JyArIGRvbWFpbik7XG5cbiAgICAgIHNlY3VyZSA9PT0gdHJ1ZSAmJiBjb29raWUucHVzaCgnc2VjdXJlJyk7XG5cbiAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZS5qb2luKCc7ICcpO1xuICAgIH0sXG5cbiAgICByZWFkKG5hbWUpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDtcXFxccyopKCcgKyBuYW1lICsgJyk9KFteO10qKScpKTtcbiAgICAgIHJldHVybiAobWF0Y2ggPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbM10pIDogbnVsbCk7XG4gICAgfSxcblxuICAgIHJlbW92ZShuYW1lKSB7XG4gICAgICB0aGlzLndyaXRlKG5hbWUsICcnLCBEYXRlLm5vdygpIC0gODY0MDAwMDApO1xuICAgIH1cbiAgfVxuXG4gIDpcblxuICAvLyBOb24tc3RhbmRhcmQgYnJvd3NlciBlbnYgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gIHtcbiAgICB3cml0ZSgpIHt9LFxuICAgIHJlYWQoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIHJlbW92ZSgpIHt9XG4gIH07XG5cbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNBYnNvbHV0ZVVSTCh1cmwpIHtcbiAgLy8gQSBVUkwgaXMgY29uc2lkZXJlZCBhYnNvbHV0ZSBpZiBpdCBiZWdpbnMgd2l0aCBcIjxzY2hlbWU+Oi8vXCIgb3IgXCIvL1wiIChwcm90b2NvbC1yZWxhdGl2ZSBVUkwpLlxuICAvLyBSRkMgMzk4NiBkZWZpbmVzIHNjaGVtZSBuYW1lIGFzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBiZWdpbm5pbmcgd2l0aCBhIGxldHRlciBhbmQgZm9sbG93ZWRcbiAgLy8gYnkgYW55IGNvbWJpbmF0aW9uIG9mIGxldHRlcnMsIGRpZ2l0cywgcGx1cywgcGVyaW9kLCBvciBoeXBoZW4uXG4gIHJldHVybiAvXihbYS16XVthLXpcXGQrXFwtLl0qOik/XFwvXFwvL2kudGVzdCh1cmwpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgc3BlY2lmaWVkIFVSTHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVVSTCBUaGUgcmVsYXRpdmUgVVJMXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIFVSTFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xuICByZXR1cm4gcmVsYXRpdmVVUkxcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvP1xcLyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgIDogYmFzZVVSTDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IGlzQWJzb2x1dGVVUkwgZnJvbSAnLi4vaGVscGVycy9pc0Fic29sdXRlVVJMLmpzJztcbmltcG9ydCBjb21iaW5lVVJMcyBmcm9tICcuLi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIGJhc2VVUkwgd2l0aCB0aGUgcmVxdWVzdGVkVVJMLFxuICogb25seSB3aGVuIHRoZSByZXF1ZXN0ZWRVUkwgaXMgbm90IGFscmVhZHkgYW4gYWJzb2x1dGUgVVJMLlxuICogSWYgdGhlIHJlcXVlc3RVUkwgaXMgYWJzb2x1dGUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxdWVzdGVkVVJMIHVudG91Y2hlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0ZWRVUkwgQWJzb2x1dGUgb3IgcmVsYXRpdmUgVVJMIHRvIGNvbWJpbmVcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgZnVsbCBwYXRoXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkRnVsbFBhdGgoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKSB7XG4gIGlmIChiYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKHJlcXVlc3RlZFVSTCkpIHtcbiAgICByZXR1cm4gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKTtcbiAgfVxuICByZXR1cm4gcmVxdWVzdGVkVVJMO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tIFwiLi9BeGlvc0hlYWRlcnMuanNcIjtcblxuY29uc3QgaGVhZGVyc1RvT2JqZWN0ID0gKHRoaW5nKSA9PiB0aGluZyBpbnN0YW5jZW9mIEF4aW9zSGVhZGVycyA/IHsgLi4udGhpbmcgfSA6IHRoaW5nO1xuXG4vKipcbiAqIENvbmZpZy1zcGVjaWZpYyBtZXJnZS1mdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbmZpZy1vYmplY3RcbiAqIGJ5IG1lcmdpbmcgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0b2dldGhlci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzJcbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBOZXcgb2JqZWN0IHJlc3VsdGluZyBmcm9tIG1lcmdpbmcgY29uZmlnMiB0byBjb25maWcxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQ29uZmlnKGNvbmZpZzEsIGNvbmZpZzIpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGNvbmZpZzIgPSBjb25maWcyIHx8IHt9O1xuICBjb25zdCBjb25maWcgPSB7fTtcblxuICBmdW5jdGlvbiBnZXRNZXJnZWRWYWx1ZSh0YXJnZXQsIHNvdXJjZSwgcHJvcCwgY2FzZWxlc3MpIHtcbiAgICBpZiAodXRpbHMuaXNQbGFpbk9iamVjdCh0YXJnZXQpICYmIHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlLmNhbGwoe2Nhc2VsZXNzfSwgdGFyZ2V0LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2Uoe30sIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2Uuc2xpY2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURlZXBQcm9wZXJ0aWVzKGEsIGIsIHByb3AgLCBjYXNlbGVzcykge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYikpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShhLCBiLCBwcm9wICwgY2FzZWxlc3MpO1xuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGEpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBhLCBwcm9wICwgY2FzZWxlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiB2YWx1ZUZyb21Db25maWcyKGEsIGIpIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGIpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBiKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gZGVmYXVsdFRvQ29uZmlnMihhLCBiKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChiKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYik7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURpcmVjdEtleXMoYSwgYiwgcHJvcCkge1xuICAgIGlmIChwcm9wIGluIGNvbmZpZzIpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShhLCBiKTtcbiAgICB9IGVsc2UgaWYgKHByb3AgaW4gY29uZmlnMSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWVyZ2VNYXAgPSB7XG4gICAgdXJsOiB2YWx1ZUZyb21Db25maWcyLFxuICAgIG1ldGhvZDogdmFsdWVGcm9tQ29uZmlnMixcbiAgICBkYXRhOiB2YWx1ZUZyb21Db25maWcyLFxuICAgIGJhc2VVUkw6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdHJhbnNmb3JtUmVxdWVzdDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0cmFuc2Zvcm1SZXNwb25zZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBwYXJhbXNTZXJpYWxpemVyOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHRpbWVvdXQ6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdGltZW91dE1lc3NhZ2U6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgd2l0aENyZWRlbnRpYWxzOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHdpdGhYU1JGVG9rZW46IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgYWRhcHRlcjogZGVmYXVsdFRvQ29uZmlnMixcbiAgICByZXNwb25zZVR5cGU6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgeHNyZkNvb2tpZU5hbWU6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgeHNyZkhlYWRlck5hbWU6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgb25VcGxvYWRQcm9ncmVzczogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBvbkRvd25sb2FkUHJvZ3Jlc3M6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgZGVjb21wcmVzczogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBtYXhDb250ZW50TGVuZ3RoOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIG1heEJvZHlMZW5ndGg6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgYmVmb3JlUmVkaXJlY3Q6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdHJhbnNwb3J0OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGh0dHBBZ2VudDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBodHRwc0FnZW50OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGNhbmNlbFRva2VuOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHNvY2tldFBhdGg6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgcmVzcG9uc2VFbmNvZGluZzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB2YWxpZGF0ZVN0YXR1czogbWVyZ2VEaXJlY3RLZXlzLFxuICAgIGhlYWRlcnM6IChhLCBiICwgcHJvcCkgPT4gbWVyZ2VEZWVwUHJvcGVydGllcyhoZWFkZXJzVG9PYmplY3QoYSksIGhlYWRlcnNUb09iamVjdChiKSxwcm9wLCB0cnVlKVxuICB9O1xuXG4gIHV0aWxzLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnMSwgY29uZmlnMikpLCBmdW5jdGlvbiBjb21wdXRlQ29uZmlnVmFsdWUocHJvcCkge1xuICAgIGNvbnN0IG1lcmdlID0gbWVyZ2VNYXBbcHJvcF0gfHwgbWVyZ2VEZWVwUHJvcGVydGllcztcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IG1lcmdlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0sIHByb3ApO1xuICAgICh1dGlscy5pc1VuZGVmaW5lZChjb25maWdWYWx1ZSkgJiYgbWVyZ2UgIT09IG1lcmdlRGlyZWN0S2V5cykgfHwgKGNvbmZpZ1twcm9wXSA9IGNvbmZpZ1ZhbHVlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cbiIsImltcG9ydCBwbGF0Zm9ybSBmcm9tIFwiLi4vcGxhdGZvcm0vaW5kZXguanNcIjtcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBpc1VSTFNhbWVPcmlnaW4gZnJvbSBcIi4vaXNVUkxTYW1lT3JpZ2luLmpzXCI7XG5pbXBvcnQgY29va2llcyBmcm9tIFwiLi9jb29raWVzLmpzXCI7XG5pbXBvcnQgYnVpbGRGdWxsUGF0aCBmcm9tIFwiLi4vY29yZS9idWlsZEZ1bGxQYXRoLmpzXCI7XG5pbXBvcnQgbWVyZ2VDb25maWcgZnJvbSBcIi4uL2NvcmUvbWVyZ2VDb25maWcuanNcIjtcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSBcIi4uL2NvcmUvQXhpb3NIZWFkZXJzLmpzXCI7XG5pbXBvcnQgYnVpbGRVUkwgZnJvbSBcIi4vYnVpbGRVUkwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGNvbmZpZykgPT4ge1xuICBjb25zdCBuZXdDb25maWcgPSBtZXJnZUNvbmZpZyh7fSwgY29uZmlnKTtcblxuICBsZXQge2RhdGEsIHdpdGhYU1JGVG9rZW4sIHhzcmZIZWFkZXJOYW1lLCB4c3JmQ29va2llTmFtZSwgaGVhZGVycywgYXV0aH0gPSBuZXdDb25maWc7XG5cbiAgbmV3Q29uZmlnLmhlYWRlcnMgPSBoZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oaGVhZGVycyk7XG5cbiAgbmV3Q29uZmlnLnVybCA9IGJ1aWxkVVJMKGJ1aWxkRnVsbFBhdGgobmV3Q29uZmlnLmJhc2VVUkwsIG5ld0NvbmZpZy51cmwpLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplcik7XG5cbiAgLy8gSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvblxuICBpZiAoYXV0aCkge1xuICAgIGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgJ0Jhc2ljICcgK1xuICAgICAgYnRvYSgoYXV0aC51c2VybmFtZSB8fCAnJykgKyAnOicgKyAoYXV0aC5wYXNzd29yZCA/IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChhdXRoLnBhc3N3b3JkKSkgOiAnJykpXG4gICAgKTtcbiAgfVxuXG4gIGxldCBjb250ZW50VHlwZTtcblxuICBpZiAodXRpbHMuaXNGb3JtRGF0YShkYXRhKSkge1xuICAgIGlmIChwbGF0Zm9ybS5oYXNTdGFuZGFyZEJyb3dzZXJFbnYgfHwgcGxhdGZvcm0uaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52KSB7XG4gICAgICBoZWFkZXJzLnNldENvbnRlbnRUeXBlKHVuZGVmaW5lZCk7IC8vIExldCB0aGUgYnJvd3NlciBzZXQgaXRcbiAgICB9IGVsc2UgaWYgKChjb250ZW50VHlwZSA9IGhlYWRlcnMuZ2V0Q29udGVudFR5cGUoKSkgIT09IGZhbHNlKSB7XG4gICAgICAvLyBmaXggc2VtaWNvbG9uIGR1cGxpY2F0aW9uIGlzc3VlIGZvciBSZWFjdE5hdGl2ZSBGb3JtRGF0YSBpbXBsZW1lbnRhdGlvblxuICAgICAgY29uc3QgW3R5cGUsIC4uLnRva2Vuc10gPSBjb250ZW50VHlwZSA/IGNvbnRlbnRUeXBlLnNwbGl0KCc7JykubWFwKHRva2VuID0+IHRva2VuLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pIDogW107XG4gICAgICBoZWFkZXJzLnNldENvbnRlbnRUeXBlKFt0eXBlIHx8ICdtdWx0aXBhcnQvZm9ybS1kYXRhJywgLi4udG9rZW5zXS5qb2luKCc7ICcpKTtcbiAgICB9XG4gIH1cblxuICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgLy8gVGhpcyBpcyBvbmx5IGRvbmUgaWYgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnQuXG4gIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG5cbiAgaWYgKHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudikge1xuICAgIHdpdGhYU1JGVG9rZW4gJiYgdXRpbHMuaXNGdW5jdGlvbih3aXRoWFNSRlRva2VuKSAmJiAod2l0aFhTUkZUb2tlbiA9IHdpdGhYU1JGVG9rZW4obmV3Q29uZmlnKSk7XG5cbiAgICBpZiAod2l0aFhTUkZUb2tlbiB8fCAod2l0aFhTUkZUb2tlbiAhPT0gZmFsc2UgJiYgaXNVUkxTYW1lT3JpZ2luKG5ld0NvbmZpZy51cmwpKSkge1xuICAgICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgICBjb25zdCB4c3JmVmFsdWUgPSB4c3JmSGVhZGVyTmFtZSAmJiB4c3JmQ29va2llTmFtZSAmJiBjb29raWVzLnJlYWQoeHNyZkNvb2tpZU5hbWUpO1xuXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XG4gICAgICAgIGhlYWRlcnMuc2V0KHhzcmZIZWFkZXJOYW1lLCB4c3JmVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdDb25maWc7XG59XG5cbiIsImltcG9ydCB1dGlscyBmcm9tICcuLy4uL3V0aWxzLmpzJztcbmltcG9ydCBzZXR0bGUgZnJvbSAnLi8uLi9jb3JlL3NldHRsZS5qcyc7XG5pbXBvcnQgdHJhbnNpdGlvbmFsRGVmYXVsdHMgZnJvbSAnLi4vZGVmYXVsdHMvdHJhbnNpdGlvbmFsLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4uL2NvcmUvQXhpb3NFcnJvci5qcyc7XG5pbXBvcnQgQ2FuY2VsZWRFcnJvciBmcm9tICcuLi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qcyc7XG5pbXBvcnQgcGFyc2VQcm90b2NvbCBmcm9tICcuLi9oZWxwZXJzL3BhcnNlUHJvdG9jb2wuanMnO1xuaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4uL3BsYXRmb3JtL2luZGV4LmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSAnLi4vY29yZS9BeGlvc0hlYWRlcnMuanMnO1xuaW1wb3J0IHtwcm9ncmVzc0V2ZW50UmVkdWNlcn0gZnJvbSAnLi4vaGVscGVycy9wcm9ncmVzc0V2ZW50UmVkdWNlci5qcyc7XG5pbXBvcnQgcmVzb2x2ZUNvbmZpZyBmcm9tIFwiLi4vaGVscGVycy9yZXNvbHZlQ29uZmlnLmpzXCI7XG5cbmNvbnN0IGlzWEhSQWRhcHRlclN1cHBvcnRlZCA9IHR5cGVvZiBYTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGlzWEhSQWRhcHRlclN1cHBvcnRlZCAmJiBmdW5jdGlvbiAoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBkaXNwYXRjaFhoclJlcXVlc3QocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgY29uc3QgX2NvbmZpZyA9IHJlc29sdmVDb25maWcoY29uZmlnKTtcbiAgICBsZXQgcmVxdWVzdERhdGEgPSBfY29uZmlnLmRhdGE7XG4gICAgY29uc3QgcmVxdWVzdEhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShfY29uZmlnLmhlYWRlcnMpLm5vcm1hbGl6ZSgpO1xuICAgIGxldCB7cmVzcG9uc2VUeXBlLCBvblVwbG9hZFByb2dyZXNzLCBvbkRvd25sb2FkUHJvZ3Jlc3N9ID0gX2NvbmZpZztcbiAgICBsZXQgb25DYW5jZWxlZDtcbiAgICBsZXQgdXBsb2FkVGhyb3R0bGVkLCBkb3dubG9hZFRocm90dGxlZDtcbiAgICBsZXQgZmx1c2hVcGxvYWQsIGZsdXNoRG93bmxvYWQ7XG5cbiAgICBmdW5jdGlvbiBkb25lKCkge1xuICAgICAgZmx1c2hVcGxvYWQgJiYgZmx1c2hVcGxvYWQoKTsgLy8gZmx1c2ggZXZlbnRzXG4gICAgICBmbHVzaERvd25sb2FkICYmIGZsdXNoRG93bmxvYWQoKTsgLy8gZmx1c2ggZXZlbnRzXG5cbiAgICAgIF9jb25maWcuY2FuY2VsVG9rZW4gJiYgX2NvbmZpZy5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShvbkNhbmNlbGVkKTtcblxuICAgICAgX2NvbmZpZy5zaWduYWwgJiYgX2NvbmZpZy5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkNhbmNlbGVkKTtcbiAgICB9XG5cbiAgICBsZXQgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXG4gICAgcmVxdWVzdC5vcGVuKF9jb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksIF9jb25maWcudXJsLCB0cnVlKTtcblxuICAgIC8vIFNldCB0aGUgcmVxdWVzdCB0aW1lb3V0IGluIE1TXG4gICAgcmVxdWVzdC50aW1lb3V0ID0gX2NvbmZpZy50aW1lb3V0O1xuXG4gICAgZnVuY3Rpb24gb25sb2FkZW5kKCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIFByZXBhcmUgdGhlIHJlc3BvbnNlXG4gICAgICBjb25zdCByZXNwb25zZUhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShcbiAgICAgICAgJ2dldEFsbFJlc3BvbnNlSGVhZGVycycgaW4gcmVxdWVzdCAmJiByZXF1ZXN0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpXG4gICAgICApO1xuICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gIXJlc3BvbnNlVHlwZSB8fCByZXNwb25zZVR5cGUgPT09ICd0ZXh0JyB8fCByZXNwb25zZVR5cGUgPT09ICdqc29uJyA/XG4gICAgICAgIHJlcXVlc3QucmVzcG9uc2VUZXh0IDogcmVxdWVzdC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiByZXNwb25zZURhdGEsXG4gICAgICAgIHN0YXR1czogcmVxdWVzdC5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlcXVlc3Quc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcmVzcG9uc2VIZWFkZXJzLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIHNldHRsZShmdW5jdGlvbiBfcmVzb2x2ZSh2YWx1ZSkge1xuICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgZnVuY3Rpb24gX3JlamVjdChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sIHJlc3BvbnNlKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCdvbmxvYWRlbmQnIGluIHJlcXVlc3QpIHtcbiAgICAgIC8vIFVzZSBvbmxvYWRlbmQgaWYgYXZhaWxhYmxlXG4gICAgICByZXF1ZXN0Lm9ubG9hZGVuZCA9IG9ubG9hZGVuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGlzdGVuIGZvciByZWFkeSBzdGF0ZSB0byBlbXVsYXRlIG9ubG9hZGVuZFxuICAgICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiBoYW5kbGVMb2FkKCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QgfHwgcmVxdWVzdC5yZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIHJlcXVlc3QgZXJyb3JlZCBvdXQgYW5kIHdlIGRpZG4ndCBnZXQgYSByZXNwb25zZSwgdGhpcyB3aWxsIGJlXG4gICAgICAgIC8vIGhhbmRsZWQgYnkgb25lcnJvciBpbnN0ZWFkXG4gICAgICAgIC8vIFdpdGggb25lIGV4Y2VwdGlvbjogcmVxdWVzdCB0aGF0IHVzaW5nIGZpbGU6IHByb3RvY29sLCBtb3N0IGJyb3dzZXJzXG4gICAgICAgIC8vIHdpbGwgcmV0dXJuIHN0YXR1cyBhcyAwIGV2ZW4gdGhvdWdoIGl0J3MgYSBzdWNjZXNzZnVsIHJlcXVlc3RcbiAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAwICYmICEocmVxdWVzdC5yZXNwb25zZVVSTCAmJiByZXF1ZXN0LnJlc3BvbnNlVVJMLmluZGV4T2YoJ2ZpbGU6JykgPT09IDApKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlYWR5c3RhdGUgaGFuZGxlciBpcyBjYWxsaW5nIGJlZm9yZSBvbmVycm9yIG9yIG9udGltZW91dCBoYW5kbGVycyxcbiAgICAgICAgLy8gc28gd2Ugc2hvdWxkIGNhbGwgb25sb2FkZW5kIG9uIHRoZSBuZXh0ICd0aWNrJ1xuICAgICAgICBzZXRUaW1lb3V0KG9ubG9hZGVuZCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBicm93c2VyIHJlcXVlc3QgY2FuY2VsbGF0aW9uIChhcyBvcHBvc2VkIHRvIGEgbWFudWFsIGNhbmNlbGxhdGlvbilcbiAgICByZXF1ZXN0Lm9uYWJvcnQgPSBmdW5jdGlvbiBoYW5kbGVBYm9ydCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcignUmVxdWVzdCBhYm9ydGVkJywgQXhpb3NFcnJvci5FQ09OTkFCT1JURUQsIGNvbmZpZywgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIGxvdyBsZXZlbCBuZXR3b3JrIGVycm9yc1xuICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uIGhhbmRsZUVycm9yKCkge1xuICAgICAgLy8gUmVhbCBlcnJvcnMgYXJlIGhpZGRlbiBmcm9tIHVzIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBvbmVycm9yIHNob3VsZCBvbmx5IGZpcmUgaWYgaXQncyBhIG5ldHdvcmsgZXJyb3JcbiAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcignTmV0d29yayBFcnJvcicsIEF4aW9zRXJyb3IuRVJSX05FVFdPUkssIGNvbmZpZywgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIHRpbWVvdXRcbiAgICByZXF1ZXN0Lm9udGltZW91dCA9IGZ1bmN0aW9uIGhhbmRsZVRpbWVvdXQoKSB7XG4gICAgICBsZXQgdGltZW91dEVycm9yTWVzc2FnZSA9IF9jb25maWcudGltZW91dCA/ICd0aW1lb3V0IG9mICcgKyBfY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnIDogJ3RpbWVvdXQgZXhjZWVkZWQnO1xuICAgICAgY29uc3QgdHJhbnNpdGlvbmFsID0gX2NvbmZpZy50cmFuc2l0aW9uYWwgfHwgdHJhbnNpdGlvbmFsRGVmYXVsdHM7XG4gICAgICBpZiAoX2NvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBfY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2U7XG4gICAgICB9XG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoXG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UsXG4gICAgICAgIHRyYW5zaXRpb25hbC5jbGFyaWZ5VGltZW91dEVycm9yID8gQXhpb3NFcnJvci5FVElNRURPVVQgOiBBeGlvc0Vycm9yLkVDT05OQUJPUlRFRCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBSZW1vdmUgQ29udGVudC1UeXBlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gICAgcmVxdWVzdERhdGEgPT09IHVuZGVmaW5lZCAmJiByZXF1ZXN0SGVhZGVycy5zZXRDb250ZW50VHlwZShudWxsKTtcblxuICAgIC8vIEFkZCBoZWFkZXJzIHRvIHRoZSByZXF1ZXN0XG4gICAgaWYgKCdzZXRSZXF1ZXN0SGVhZGVyJyBpbiByZXF1ZXN0KSB7XG4gICAgICB1dGlscy5mb3JFYWNoKHJlcXVlc3RIZWFkZXJzLnRvSlNPTigpLCBmdW5jdGlvbiBzZXRSZXF1ZXN0SGVhZGVyKHZhbCwga2V5KSB7XG4gICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihrZXksIHZhbCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aENyZWRlbnRpYWxzIHRvIHJlcXVlc3QgaWYgbmVlZGVkXG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChfY29uZmlnLndpdGhDcmVkZW50aWFscykpIHtcbiAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gISFfY29uZmlnLndpdGhDcmVkZW50aWFscztcbiAgICB9XG5cbiAgICAvLyBBZGQgcmVzcG9uc2VUeXBlIHRvIHJlcXVlc3QgaWYgbmVlZGVkXG4gICAgaWYgKHJlc3BvbnNlVHlwZSAmJiByZXNwb25zZVR5cGUgIT09ICdqc29uJykge1xuICAgICAgcmVxdWVzdC5yZXNwb25zZVR5cGUgPSBfY29uZmlnLnJlc3BvbnNlVHlwZTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcHJvZ3Jlc3MgaWYgbmVlZGVkXG4gICAgaWYgKG9uRG93bmxvYWRQcm9ncmVzcykge1xuICAgICAgKFtkb3dubG9hZFRocm90dGxlZCwgZmx1c2hEb3dubG9hZF0gPSBwcm9ncmVzc0V2ZW50UmVkdWNlcihvbkRvd25sb2FkUHJvZ3Jlc3MsIHRydWUpKTtcbiAgICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBkb3dubG9hZFRocm90dGxlZCk7XG4gICAgfVxuXG4gICAgLy8gTm90IGFsbCBicm93c2VycyBzdXBwb3J0IHVwbG9hZCBldmVudHNcbiAgICBpZiAob25VcGxvYWRQcm9ncmVzcyAmJiByZXF1ZXN0LnVwbG9hZCkge1xuICAgICAgKFt1cGxvYWRUaHJvdHRsZWQsIGZsdXNoVXBsb2FkXSA9IHByb2dyZXNzRXZlbnRSZWR1Y2VyKG9uVXBsb2FkUHJvZ3Jlc3MpKTtcblxuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB1cGxvYWRUaHJvdHRsZWQpO1xuXG4gICAgICByZXF1ZXN0LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdsb2FkZW5kJywgZmx1c2hVcGxvYWQpO1xuICAgIH1cblxuICAgIGlmIChfY29uZmlnLmNhbmNlbFRva2VuIHx8IF9jb25maWcuc2lnbmFsKSB7XG4gICAgICAvLyBIYW5kbGUgY2FuY2VsbGF0aW9uXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgb25DYW5jZWxlZCA9IGNhbmNlbCA9PiB7XG4gICAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZWplY3QoIWNhbmNlbCB8fCBjYW5jZWwudHlwZSA/IG5ldyBDYW5jZWxlZEVycm9yKG51bGwsIGNvbmZpZywgcmVxdWVzdCkgOiBjYW5jZWwpO1xuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgICAgfTtcblxuICAgICAgX2NvbmZpZy5jYW5jZWxUb2tlbiAmJiBfY29uZmlnLmNhbmNlbFRva2VuLnN1YnNjcmliZShvbkNhbmNlbGVkKTtcbiAgICAgIGlmIChfY29uZmlnLnNpZ25hbCkge1xuICAgICAgICBfY29uZmlnLnNpZ25hbC5hYm9ydGVkID8gb25DYW5jZWxlZCgpIDogX2NvbmZpZy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkNhbmNlbGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwcm90b2NvbCA9IHBhcnNlUHJvdG9jb2woX2NvbmZpZy51cmwpO1xuXG4gICAgaWYgKHByb3RvY29sICYmIHBsYXRmb3JtLnByb3RvY29scy5pbmRleE9mKHByb3RvY29sKSA9PT0gLTEpIHtcbiAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcignVW5zdXBwb3J0ZWQgcHJvdG9jb2wgJyArIHByb3RvY29sICsgJzonLCBBeGlvc0Vycm9yLkVSUl9CQURfUkVRVUVTVCwgY29uZmlnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG5cbiAgICAvLyBTZW5kIHRoZSByZXF1ZXN0XG4gICAgcmVxdWVzdC5zZW5kKHJlcXVlc3REYXRhIHx8IG51bGwpO1xuICB9KTtcbn1cbiIsImltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gXCIuLi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qc1wiO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSBcIi4uL2NvcmUvQXhpb3NFcnJvci5qc1wiO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcblxuY29uc3QgY29tcG9zZVNpZ25hbHMgPSAoc2lnbmFscywgdGltZW91dCkgPT4ge1xuICBjb25zdCB7bGVuZ3RofSA9IChzaWduYWxzID0gc2lnbmFscyA/IHNpZ25hbHMuZmlsdGVyKEJvb2xlYW4pIDogW10pO1xuXG4gIGlmICh0aW1lb3V0IHx8IGxlbmd0aCkge1xuICAgIGxldCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgbGV0IGFib3J0ZWQ7XG5cbiAgICBjb25zdCBvbmFib3J0ID0gZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgaWYgKCFhYm9ydGVkKSB7XG4gICAgICAgIGFib3J0ZWQgPSB0cnVlO1xuICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICBjb25zdCBlcnIgPSByZWFzb24gaW5zdGFuY2VvZiBFcnJvciA/IHJlYXNvbiA6IHRoaXMucmVhc29uO1xuICAgICAgICBjb250cm9sbGVyLmFib3J0KGVyciBpbnN0YW5jZW9mIEF4aW9zRXJyb3IgPyBlcnIgOiBuZXcgQ2FuY2VsZWRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHRpbWVyID0gdGltZW91dCAmJiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRpbWVyID0gbnVsbDtcbiAgICAgIG9uYWJvcnQobmV3IEF4aW9zRXJyb3IoYHRpbWVvdXQgJHt0aW1lb3V0fSBvZiBtcyBleGNlZWRlZGAsIEF4aW9zRXJyb3IuRVRJTUVET1VUKSlcbiAgICB9LCB0aW1lb3V0KVxuXG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSAoKSA9PiB7XG4gICAgICBpZiAoc2lnbmFscykge1xuICAgICAgICB0aW1lciAmJiBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICB0aW1lciA9IG51bGw7XG4gICAgICAgIHNpZ25hbHMuZm9yRWFjaChzaWduYWwgPT4ge1xuICAgICAgICAgIHNpZ25hbC51bnN1YnNjcmliZSA/IHNpZ25hbC51bnN1YnNjcmliZShvbmFib3J0KSA6IHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uYWJvcnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2lnbmFscyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2lnbmFscy5mb3JFYWNoKChzaWduYWwpID0+IHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uYWJvcnQpKTtcblxuICAgIGNvbnN0IHtzaWduYWx9ID0gY29udHJvbGxlcjtcblxuICAgIHNpZ25hbC51bnN1YnNjcmliZSA9ICgpID0+IHV0aWxzLmFzYXAodW5zdWJzY3JpYmUpO1xuXG4gICAgcmV0dXJuIHNpZ25hbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlU2lnbmFscztcbiIsIlxuZXhwb3J0IGNvbnN0IHN0cmVhbUNodW5rID0gZnVuY3Rpb24qIChjaHVuaywgY2h1bmtTaXplKSB7XG4gIGxldCBsZW4gPSBjaHVuay5ieXRlTGVuZ3RoO1xuXG4gIGlmICghY2h1bmtTaXplIHx8IGxlbiA8IGNodW5rU2l6ZSkge1xuICAgIHlpZWxkIGNodW5rO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBwb3MgPSAwO1xuICBsZXQgZW5kO1xuXG4gIHdoaWxlIChwb3MgPCBsZW4pIHtcbiAgICBlbmQgPSBwb3MgKyBjaHVua1NpemU7XG4gICAgeWllbGQgY2h1bmsuc2xpY2UocG9zLCBlbmQpO1xuICAgIHBvcyA9IGVuZDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcmVhZEJ5dGVzID0gYXN5bmMgZnVuY3Rpb24qIChpdGVyYWJsZSwgY2h1bmtTaXplKSB7XG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgcmVhZFN0cmVhbShpdGVyYWJsZSkpIHtcbiAgICB5aWVsZCogc3RyZWFtQ2h1bmsoY2h1bmssIGNodW5rU2l6ZSk7XG4gIH1cbn1cblxuY29uc3QgcmVhZFN0cmVhbSA9IGFzeW5jIGZ1bmN0aW9uKiAoc3RyZWFtKSB7XG4gIGlmIChzdHJlYW1bU3ltYm9sLmFzeW5jSXRlcmF0b3JdKSB7XG4gICAgeWllbGQqIHN0cmVhbTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7XG4gIHRyeSB7XG4gICAgZm9yICg7Oykge1xuICAgICAgY29uc3Qge2RvbmUsIHZhbHVlfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7XG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHlpZWxkIHZhbHVlO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCByZWFkZXIuY2FuY2VsKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHRyYWNrU3RyZWFtID0gKHN0cmVhbSwgY2h1bmtTaXplLCBvblByb2dyZXNzLCBvbkZpbmlzaCkgPT4ge1xuICBjb25zdCBpdGVyYXRvciA9IHJlYWRCeXRlcyhzdHJlYW0sIGNodW5rU2l6ZSk7XG5cbiAgbGV0IGJ5dGVzID0gMDtcbiAgbGV0IGRvbmU7XG4gIGxldCBfb25GaW5pc2ggPSAoZSkgPT4ge1xuICAgIGlmICghZG9uZSkge1xuICAgICAgZG9uZSA9IHRydWU7XG4gICAgICBvbkZpbmlzaCAmJiBvbkZpbmlzaChlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBhc3luYyBwdWxsKGNvbnRyb2xsZXIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHtkb25lLCB2YWx1ZX0gPSBhd2FpdCBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgIF9vbkZpbmlzaCgpO1xuICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGVuID0gdmFsdWUuYnl0ZUxlbmd0aDtcbiAgICAgICAgaWYgKG9uUHJvZ3Jlc3MpIHtcbiAgICAgICAgICBsZXQgbG9hZGVkQnl0ZXMgPSBieXRlcyArPSBsZW47XG4gICAgICAgICAgb25Qcm9ncmVzcyhsb2FkZWRCeXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgX29uRmluaXNoKGVycik7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNhbmNlbChyZWFzb24pIHtcbiAgICAgIF9vbkZpbmlzaChyZWFzb24pO1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yLnJldHVybigpO1xuICAgIH1cbiAgfSwge1xuICAgIGhpZ2hXYXRlck1hcms6IDJcbiAgfSlcbn1cbiIsImltcG9ydCBwbGF0Zm9ybSBmcm9tIFwiLi4vcGxhdGZvcm0vaW5kZXguanNcIjtcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gXCIuLi9jb3JlL0F4aW9zRXJyb3IuanNcIjtcbmltcG9ydCBjb21wb3NlU2lnbmFscyBmcm9tIFwiLi4vaGVscGVycy9jb21wb3NlU2lnbmFscy5qc1wiO1xuaW1wb3J0IHt0cmFja1N0cmVhbX0gZnJvbSBcIi4uL2hlbHBlcnMvdHJhY2tTdHJlYW0uanNcIjtcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSBcIi4uL2NvcmUvQXhpb3NIZWFkZXJzLmpzXCI7XG5pbXBvcnQge3Byb2dyZXNzRXZlbnRSZWR1Y2VyLCBwcm9ncmVzc0V2ZW50RGVjb3JhdG9yLCBhc3luY0RlY29yYXRvcn0gZnJvbSBcIi4uL2hlbHBlcnMvcHJvZ3Jlc3NFdmVudFJlZHVjZXIuanNcIjtcbmltcG9ydCByZXNvbHZlQ29uZmlnIGZyb20gXCIuLi9oZWxwZXJzL3Jlc29sdmVDb25maWcuanNcIjtcbmltcG9ydCBzZXR0bGUgZnJvbSBcIi4uL2NvcmUvc2V0dGxlLmpzXCI7XG5cbmNvbnN0IGlzRmV0Y2hTdXBwb3J0ZWQgPSB0eXBlb2YgZmV0Y2ggPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFJlcXVlc3QgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFJlc3BvbnNlID09PSAnZnVuY3Rpb24nO1xuY29uc3QgaXNSZWFkYWJsZVN0cmVhbVN1cHBvcnRlZCA9IGlzRmV0Y2hTdXBwb3J0ZWQgJiYgdHlwZW9mIFJlYWRhYmxlU3RyZWFtID09PSAnZnVuY3Rpb24nO1xuXG4vLyB1c2VkIG9ubHkgaW5zaWRlIHRoZSBmZXRjaCBhZGFwdGVyXG5jb25zdCBlbmNvZGVUZXh0ID0gaXNGZXRjaFN1cHBvcnRlZCAmJiAodHlwZW9mIFRleHRFbmNvZGVyID09PSAnZnVuY3Rpb24nID9cbiAgICAoKGVuY29kZXIpID0+IChzdHIpID0+IGVuY29kZXIuZW5jb2RlKHN0cikpKG5ldyBUZXh0RW5jb2RlcigpKSA6XG4gICAgYXN5bmMgKHN0cikgPT4gbmV3IFVpbnQ4QXJyYXkoYXdhaXQgbmV3IFJlc3BvbnNlKHN0cikuYXJyYXlCdWZmZXIoKSlcbik7XG5cbmNvbnN0IHRlc3QgPSAoZm4sIC4uLmFyZ3MpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFmbiguLi5hcmdzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmNvbnN0IHN1cHBvcnRzUmVxdWVzdFN0cmVhbSA9IGlzUmVhZGFibGVTdHJlYW1TdXBwb3J0ZWQgJiYgdGVzdCgoKSA9PiB7XG4gIGxldCBkdXBsZXhBY2Nlc3NlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGhhc0NvbnRlbnRUeXBlID0gbmV3IFJlcXVlc3QocGxhdGZvcm0ub3JpZ2luLCB7XG4gICAgYm9keTogbmV3IFJlYWRhYmxlU3RyZWFtKCksXG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgZ2V0IGR1cGxleCgpIHtcbiAgICAgIGR1cGxleEFjY2Vzc2VkID0gdHJ1ZTtcbiAgICAgIHJldHVybiAnaGFsZic7XG4gICAgfSxcbiAgfSkuaGVhZGVycy5oYXMoJ0NvbnRlbnQtVHlwZScpO1xuXG4gIHJldHVybiBkdXBsZXhBY2Nlc3NlZCAmJiAhaGFzQ29udGVudFR5cGU7XG59KTtcblxuY29uc3QgREVGQVVMVF9DSFVOS19TSVpFID0gNjQgKiAxMDI0O1xuXG5jb25zdCBzdXBwb3J0c1Jlc3BvbnNlU3RyZWFtID0gaXNSZWFkYWJsZVN0cmVhbVN1cHBvcnRlZCAmJlxuICB0ZXN0KCgpID0+IHV0aWxzLmlzUmVhZGFibGVTdHJlYW0obmV3IFJlc3BvbnNlKCcnKS5ib2R5KSk7XG5cblxuY29uc3QgcmVzb2x2ZXJzID0ge1xuICBzdHJlYW06IHN1cHBvcnRzUmVzcG9uc2VTdHJlYW0gJiYgKChyZXMpID0+IHJlcy5ib2R5KVxufTtcblxuaXNGZXRjaFN1cHBvcnRlZCAmJiAoKChyZXMpID0+IHtcbiAgWyd0ZXh0JywgJ2FycmF5QnVmZmVyJywgJ2Jsb2InLCAnZm9ybURhdGEnLCAnc3RyZWFtJ10uZm9yRWFjaCh0eXBlID0+IHtcbiAgICAhcmVzb2x2ZXJzW3R5cGVdICYmIChyZXNvbHZlcnNbdHlwZV0gPSB1dGlscy5pc0Z1bmN0aW9uKHJlc1t0eXBlXSkgPyAocmVzKSA9PiByZXNbdHlwZV0oKSA6XG4gICAgICAoXywgY29uZmlnKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKGBSZXNwb25zZSB0eXBlICcke3R5cGV9JyBpcyBub3Qgc3VwcG9ydGVkYCwgQXhpb3NFcnJvci5FUlJfTk9UX1NVUFBPUlQsIGNvbmZpZyk7XG4gICAgICB9KVxuICB9KTtcbn0pKG5ldyBSZXNwb25zZSkpO1xuXG5jb25zdCBnZXRCb2R5TGVuZ3RoID0gYXN5bmMgKGJvZHkpID0+IHtcbiAgaWYgKGJvZHkgPT0gbnVsbCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgaWYodXRpbHMuaXNCbG9iKGJvZHkpKSB7XG4gICAgcmV0dXJuIGJvZHkuc2l6ZTtcbiAgfVxuXG4gIGlmKHV0aWxzLmlzU3BlY0NvbXBsaWFudEZvcm0oYm9keSkpIHtcbiAgICBjb25zdCBfcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHBsYXRmb3JtLm9yaWdpbiwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5LFxuICAgIH0pO1xuICAgIHJldHVybiAoYXdhaXQgX3JlcXVlc3QuYXJyYXlCdWZmZXIoKSkuYnl0ZUxlbmd0aDtcbiAgfVxuXG4gIGlmKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGJvZHkpIHx8IHV0aWxzLmlzQXJyYXlCdWZmZXIoYm9keSkpIHtcbiAgICByZXR1cm4gYm9keS5ieXRlTGVuZ3RoO1xuICB9XG5cbiAgaWYodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMoYm9keSkpIHtcbiAgICBib2R5ID0gYm9keSArICcnO1xuICB9XG5cbiAgaWYodXRpbHMuaXNTdHJpbmcoYm9keSkpIHtcbiAgICByZXR1cm4gKGF3YWl0IGVuY29kZVRleHQoYm9keSkpLmJ5dGVMZW5ndGg7XG4gIH1cbn1cblxuY29uc3QgcmVzb2x2ZUJvZHlMZW5ndGggPSBhc3luYyAoaGVhZGVycywgYm9keSkgPT4ge1xuICBjb25zdCBsZW5ndGggPSB1dGlscy50b0Zpbml0ZU51bWJlcihoZWFkZXJzLmdldENvbnRlbnRMZW5ndGgoKSk7XG5cbiAgcmV0dXJuIGxlbmd0aCA9PSBudWxsID8gZ2V0Qm9keUxlbmd0aChib2R5KSA6IGxlbmd0aDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNGZXRjaFN1cHBvcnRlZCAmJiAoYXN5bmMgKGNvbmZpZykgPT4ge1xuICBsZXQge1xuICAgIHVybCxcbiAgICBtZXRob2QsXG4gICAgZGF0YSxcbiAgICBzaWduYWwsXG4gICAgY2FuY2VsVG9rZW4sXG4gICAgdGltZW91dCxcbiAgICBvbkRvd25sb2FkUHJvZ3Jlc3MsXG4gICAgb25VcGxvYWRQcm9ncmVzcyxcbiAgICByZXNwb25zZVR5cGUsXG4gICAgaGVhZGVycyxcbiAgICB3aXRoQ3JlZGVudGlhbHMgPSAnc2FtZS1vcmlnaW4nLFxuICAgIGZldGNoT3B0aW9uc1xuICB9ID0gcmVzb2x2ZUNvbmZpZyhjb25maWcpO1xuXG4gIHJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlVHlwZSA/IChyZXNwb25zZVR5cGUgKyAnJykudG9Mb3dlckNhc2UoKSA6ICd0ZXh0JztcblxuICBsZXQgY29tcG9zZWRTaWduYWwgPSBjb21wb3NlU2lnbmFscyhbc2lnbmFsLCBjYW5jZWxUb2tlbiAmJiBjYW5jZWxUb2tlbi50b0Fib3J0U2lnbmFsKCldLCB0aW1lb3V0KTtcblxuICBsZXQgcmVxdWVzdDtcblxuICBjb25zdCB1bnN1YnNjcmliZSA9IGNvbXBvc2VkU2lnbmFsICYmIGNvbXBvc2VkU2lnbmFsLnVuc3Vic2NyaWJlICYmICgoKSA9PiB7XG4gICAgICBjb21wb3NlZFNpZ25hbC51bnN1YnNjcmliZSgpO1xuICB9KTtcblxuICBsZXQgcmVxdWVzdENvbnRlbnRMZW5ndGg7XG5cbiAgdHJ5IHtcbiAgICBpZiAoXG4gICAgICBvblVwbG9hZFByb2dyZXNzICYmIHN1cHBvcnRzUmVxdWVzdFN0cmVhbSAmJiBtZXRob2QgIT09ICdnZXQnICYmIG1ldGhvZCAhPT0gJ2hlYWQnICYmXG4gICAgICAocmVxdWVzdENvbnRlbnRMZW5ndGggPSBhd2FpdCByZXNvbHZlQm9keUxlbmd0aChoZWFkZXJzLCBkYXRhKSkgIT09IDBcbiAgICApIHtcbiAgICAgIGxldCBfcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogZGF0YSxcbiAgICAgICAgZHVwbGV4OiBcImhhbGZcIlxuICAgICAgfSk7XG5cbiAgICAgIGxldCBjb250ZW50VHlwZUhlYWRlcjtcblxuICAgICAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZGF0YSkgJiYgKGNvbnRlbnRUeXBlSGVhZGVyID0gX3JlcXVlc3QuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSkge1xuICAgICAgICBoZWFkZXJzLnNldENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlSGVhZGVyKVxuICAgICAgfVxuXG4gICAgICBpZiAoX3JlcXVlc3QuYm9keSkge1xuICAgICAgICBjb25zdCBbb25Qcm9ncmVzcywgZmx1c2hdID0gcHJvZ3Jlc3NFdmVudERlY29yYXRvcihcbiAgICAgICAgICByZXF1ZXN0Q29udGVudExlbmd0aCxcbiAgICAgICAgICBwcm9ncmVzc0V2ZW50UmVkdWNlcihhc3luY0RlY29yYXRvcihvblVwbG9hZFByb2dyZXNzKSlcbiAgICAgICAgKTtcblxuICAgICAgICBkYXRhID0gdHJhY2tTdHJlYW0oX3JlcXVlc3QuYm9keSwgREVGQVVMVF9DSFVOS19TSVpFLCBvblByb2dyZXNzLCBmbHVzaCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF1dGlscy5pc1N0cmluZyh3aXRoQ3JlZGVudGlhbHMpKSB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHMgPSB3aXRoQ3JlZGVudGlhbHMgPyAnaW5jbHVkZScgOiAnb21pdCc7XG4gICAgfVxuXG4gICAgLy8gQ2xvdWRmbGFyZSBXb3JrZXJzIHRocm93cyB3aGVuIGNyZWRlbnRpYWxzIGFyZSBkZWZpbmVkXG4gICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jbG91ZGZsYXJlL3dvcmtlcmQvaXNzdWVzLzkwMlxuICAgIGNvbnN0IGlzQ3JlZGVudGlhbHNTdXBwb3J0ZWQgPSBcImNyZWRlbnRpYWxzXCIgaW4gUmVxdWVzdC5wcm90b3R5cGU7XG4gICAgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwge1xuICAgICAgLi4uZmV0Y2hPcHRpb25zLFxuICAgICAgc2lnbmFsOiBjb21wb3NlZFNpZ25hbCxcbiAgICAgIG1ldGhvZDogbWV0aG9kLnRvVXBwZXJDYXNlKCksXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLm5vcm1hbGl6ZSgpLnRvSlNPTigpLFxuICAgICAgYm9keTogZGF0YSxcbiAgICAgIGR1cGxleDogXCJoYWxmXCIsXG4gICAgICBjcmVkZW50aWFsczogaXNDcmVkZW50aWFsc1N1cHBvcnRlZCA/IHdpdGhDcmVkZW50aWFscyA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2gocmVxdWVzdCk7XG5cbiAgICBjb25zdCBpc1N0cmVhbVJlc3BvbnNlID0gc3VwcG9ydHNSZXNwb25zZVN0cmVhbSAmJiAocmVzcG9uc2VUeXBlID09PSAnc3RyZWFtJyB8fCByZXNwb25zZVR5cGUgPT09ICdyZXNwb25zZScpO1xuXG4gICAgaWYgKHN1cHBvcnRzUmVzcG9uc2VTdHJlYW0gJiYgKG9uRG93bmxvYWRQcm9ncmVzcyB8fCAoaXNTdHJlYW1SZXNwb25zZSAmJiB1bnN1YnNjcmliZSkpKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0ge307XG5cbiAgICAgIFsnc3RhdHVzJywgJ3N0YXR1c1RleHQnLCAnaGVhZGVycyddLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgIG9wdGlvbnNbcHJvcF0gPSByZXNwb25zZVtwcm9wXTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXNwb25zZUNvbnRlbnRMZW5ndGggPSB1dGlscy50b0Zpbml0ZU51bWJlcihyZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC1sZW5ndGgnKSk7XG5cbiAgICAgIGNvbnN0IFtvblByb2dyZXNzLCBmbHVzaF0gPSBvbkRvd25sb2FkUHJvZ3Jlc3MgJiYgcHJvZ3Jlc3NFdmVudERlY29yYXRvcihcbiAgICAgICAgcmVzcG9uc2VDb250ZW50TGVuZ3RoLFxuICAgICAgICBwcm9ncmVzc0V2ZW50UmVkdWNlcihhc3luY0RlY29yYXRvcihvbkRvd25sb2FkUHJvZ3Jlc3MpLCB0cnVlKVxuICAgICAgKSB8fCBbXTtcblxuICAgICAgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoXG4gICAgICAgIHRyYWNrU3RyZWFtKHJlc3BvbnNlLmJvZHksIERFRkFVTFRfQ0hVTktfU0laRSwgb25Qcm9ncmVzcywgKCkgPT4ge1xuICAgICAgICAgIGZsdXNoICYmIGZsdXNoKCk7XG4gICAgICAgICAgdW5zdWJzY3JpYmUgJiYgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmVzcG9uc2VUeXBlID0gcmVzcG9uc2VUeXBlIHx8ICd0ZXh0JztcblxuICAgIGxldCByZXNwb25zZURhdGEgPSBhd2FpdCByZXNvbHZlcnNbdXRpbHMuZmluZEtleShyZXNvbHZlcnMsIHJlc3BvbnNlVHlwZSkgfHwgJ3RleHQnXShyZXNwb25zZSwgY29uZmlnKTtcblxuICAgICFpc1N0cmVhbVJlc3BvbnNlICYmIHVuc3Vic2NyaWJlICYmIHVuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwge1xuICAgICAgICBkYXRhOiByZXNwb25zZURhdGEsXG4gICAgICAgIGhlYWRlcnM6IEF4aW9zSGVhZGVycy5mcm9tKHJlc3BvbnNlLmhlYWRlcnMpLFxuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByZXF1ZXN0XG4gICAgICB9KVxuICAgIH0pXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHVuc3Vic2NyaWJlICYmIHVuc3Vic2NyaWJlKCk7XG5cbiAgICBpZiAoZXJyICYmIGVyci5uYW1lID09PSAnVHlwZUVycm9yJyAmJiAvZmV0Y2gvaS50ZXN0KGVyci5tZXNzYWdlKSkge1xuICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgbmV3IEF4aW9zRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBBeGlvc0Vycm9yLkVSUl9ORVRXT1JLLCBjb25maWcsIHJlcXVlc3QpLFxuICAgICAgICB7XG4gICAgICAgICAgY2F1c2U6IGVyci5jYXVzZSB8fCBlcnJcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cblxuICAgIHRocm93IEF4aW9zRXJyb3IuZnJvbShlcnIsIGVyciAmJiBlcnIuY29kZSwgY29uZmlnLCByZXF1ZXN0KTtcbiAgfVxufSk7XG5cblxuIiwiaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCBodHRwQWRhcHRlciBmcm9tICcuL2h0dHAuanMnO1xuaW1wb3J0IHhockFkYXB0ZXIgZnJvbSAnLi94aHIuanMnO1xuaW1wb3J0IGZldGNoQWRhcHRlciBmcm9tICcuL2ZldGNoLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gXCIuLi9jb3JlL0F4aW9zRXJyb3IuanNcIjtcblxuY29uc3Qga25vd25BZGFwdGVycyA9IHtcbiAgaHR0cDogaHR0cEFkYXB0ZXIsXG4gIHhocjogeGhyQWRhcHRlcixcbiAgZmV0Y2g6IGZldGNoQWRhcHRlclxufVxuXG51dGlscy5mb3JFYWNoKGtub3duQWRhcHRlcnMsIChmbiwgdmFsdWUpID0+IHtcbiAgaWYgKGZuKSB7XG4gICAgdHJ5IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmbiwgJ25hbWUnLCB7dmFsdWV9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHlcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCAnYWRhcHRlck5hbWUnLCB7dmFsdWV9KTtcbiAgfVxufSk7XG5cbmNvbnN0IHJlbmRlclJlYXNvbiA9IChyZWFzb24pID0+IGAtICR7cmVhc29ufWA7XG5cbmNvbnN0IGlzUmVzb2x2ZWRIYW5kbGUgPSAoYWRhcHRlcikgPT4gdXRpbHMuaXNGdW5jdGlvbihhZGFwdGVyKSB8fCBhZGFwdGVyID09PSBudWxsIHx8IGFkYXB0ZXIgPT09IGZhbHNlO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldEFkYXB0ZXI6IChhZGFwdGVycykgPT4ge1xuICAgIGFkYXB0ZXJzID0gdXRpbHMuaXNBcnJheShhZGFwdGVycykgPyBhZGFwdGVycyA6IFthZGFwdGVyc107XG5cbiAgICBjb25zdCB7bGVuZ3RofSA9IGFkYXB0ZXJzO1xuICAgIGxldCBuYW1lT3JBZGFwdGVyO1xuICAgIGxldCBhZGFwdGVyO1xuXG4gICAgY29uc3QgcmVqZWN0ZWRSZWFzb25zID0ge307XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBuYW1lT3JBZGFwdGVyID0gYWRhcHRlcnNbaV07XG4gICAgICBsZXQgaWQ7XG5cbiAgICAgIGFkYXB0ZXIgPSBuYW1lT3JBZGFwdGVyO1xuXG4gICAgICBpZiAoIWlzUmVzb2x2ZWRIYW5kbGUobmFtZU9yQWRhcHRlcikpIHtcbiAgICAgICAgYWRhcHRlciA9IGtub3duQWRhcHRlcnNbKGlkID0gU3RyaW5nKG5hbWVPckFkYXB0ZXIpKS50b0xvd2VyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoYWRhcHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoYFVua25vd24gYWRhcHRlciAnJHtpZH0nYCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFkYXB0ZXIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHJlamVjdGVkUmVhc29uc1tpZCB8fCAnIycgKyBpXSA9IGFkYXB0ZXI7XG4gICAgfVxuXG4gICAgaWYgKCFhZGFwdGVyKSB7XG5cbiAgICAgIGNvbnN0IHJlYXNvbnMgPSBPYmplY3QuZW50cmllcyhyZWplY3RlZFJlYXNvbnMpXG4gICAgICAgIC5tYXAoKFtpZCwgc3RhdGVdKSA9PiBgYWRhcHRlciAke2lkfSBgICtcbiAgICAgICAgICAoc3RhdGUgPT09IGZhbHNlID8gJ2lzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50JyA6ICdpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBidWlsZCcpXG4gICAgICAgICk7XG5cbiAgICAgIGxldCBzID0gbGVuZ3RoID9cbiAgICAgICAgKHJlYXNvbnMubGVuZ3RoID4gMSA/ICdzaW5jZSA6XFxuJyArIHJlYXNvbnMubWFwKHJlbmRlclJlYXNvbikuam9pbignXFxuJykgOiAnICcgKyByZW5kZXJSZWFzb24ocmVhc29uc1swXSkpIDpcbiAgICAgICAgJ2FzIG5vIGFkYXB0ZXIgc3BlY2lmaWVkJztcblxuICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoXG4gICAgICAgIGBUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0IGAgKyBzLFxuICAgICAgICAnRVJSX05PVF9TVVBQT1JUJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWRhcHRlcjtcbiAgfSxcbiAgYWRhcHRlcnM6IGtub3duQWRhcHRlcnNcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHRyYW5zZm9ybURhdGEgZnJvbSAnLi90cmFuc2Zvcm1EYXRhLmpzJztcbmltcG9ydCBpc0NhbmNlbCBmcm9tICcuLi9jYW5jZWwvaXNDYW5jZWwuanMnO1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4uL2RlZmF1bHRzL2luZGV4LmpzJztcbmltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gJy4uL2NhbmNlbC9DYW5jZWxlZEVycm9yLmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSAnLi4vY29yZS9BeGlvc0hlYWRlcnMuanMnO1xuaW1wb3J0IGFkYXB0ZXJzIGZyb20gXCIuLi9hZGFwdGVycy9hZGFwdGVycy5qc1wiO1xuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxlZEVycm9yYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XG4gIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5zaWduYWwgJiYgY29uZmlnLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IENhbmNlbGVkRXJyb3IobnVsbCwgY29uZmlnKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBjb25maWd1cmVkIGFkYXB0ZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpc3BhdGNoUmVxdWVzdChjb25maWcpIHtcbiAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gIGNvbmZpZy5oZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oY29uZmlnLmhlYWRlcnMpO1xuXG4gIC8vIFRyYW5zZm9ybSByZXF1ZXN0IGRhdGFcbiAgY29uZmlnLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgY29uZmlnLFxuICAgIGNvbmZpZy50cmFuc2Zvcm1SZXF1ZXN0XG4gICk7XG5cbiAgaWYgKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXS5pbmRleE9mKGNvbmZpZy5tZXRob2QpICE9PSAtMSkge1xuICAgIGNvbmZpZy5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLCBmYWxzZSk7XG4gIH1cblxuICBjb25zdCBhZGFwdGVyID0gYWRhcHRlcnMuZ2V0QWRhcHRlcihjb25maWcuYWRhcHRlciB8fCBkZWZhdWx0cy5hZGFwdGVyKTtcblxuICByZXR1cm4gYWRhcHRlcihjb25maWcpLnRoZW4oZnVuY3Rpb24gb25BZGFwdGVyUmVzb2x1dGlvbihyZXNwb25zZSkge1xuICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgcmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICAgIGNvbmZpZyxcbiAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZSxcbiAgICAgIHJlc3BvbnNlXG4gICAgKTtcblxuICAgIHJlc3BvbnNlLmhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShyZXNwb25zZS5oZWFkZXJzKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfSwgZnVuY3Rpb24gb25BZGFwdGVyUmVqZWN0aW9uKHJlYXNvbikge1xuICAgIGlmICghaXNDYW5jZWwocmVhc29uKSkge1xuICAgICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgICAgaWYgKHJlYXNvbiAmJiByZWFzb24ucmVzcG9uc2UpIHtcbiAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZSxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2VcbiAgICAgICAgKTtcbiAgICAgICAgcmVhc29uLnJlc3BvbnNlLmhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShyZWFzb24ucmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gIH0pO1xufVxuIiwiZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIjEuNy45XCI7IiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQge1ZFUlNJT059IGZyb20gJy4uL2Vudi9kYXRhLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4uL2NvcmUvQXhpb3NFcnJvci5qcyc7XG5cbmNvbnN0IHZhbGlkYXRvcnMgPSB7fTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblsnb2JqZWN0JywgJ2Jvb2xlYW4nLCAnbnVtYmVyJywgJ2Z1bmN0aW9uJywgJ3N0cmluZycsICdzeW1ib2wnXS5mb3JFYWNoKCh0eXBlLCBpKSA9PiB7XG4gIHZhbGlkYXRvcnNbdHlwZV0gPSBmdW5jdGlvbiB2YWxpZGF0b3IodGhpbmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaW5nID09PSB0eXBlIHx8ICdhJyArIChpIDwgMSA/ICduICcgOiAnICcpICsgdHlwZTtcbiAgfTtcbn0pO1xuXG5jb25zdCBkZXByZWNhdGVkV2FybmluZ3MgPSB7fTtcblxuLyoqXG4gKiBUcmFuc2l0aW9uYWwgb3B0aW9uIHZhbGlkYXRvclxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb258Ym9vbGVhbj99IHZhbGlkYXRvciAtIHNldCB0byBmYWxzZSBpZiB0aGUgdHJhbnNpdGlvbmFsIG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkXG4gKiBAcGFyYW0ge3N0cmluZz99IHZlcnNpb24gLSBkZXByZWNhdGVkIHZlcnNpb24gLyByZW1vdmVkIHNpbmNlIHZlcnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nP30gbWVzc2FnZSAtIHNvbWUgbWVzc2FnZSB3aXRoIGFkZGl0aW9uYWwgaW5mb1xuICpcbiAqIEByZXR1cm5zIHtmdW5jdGlvbn1cbiAqL1xudmFsaWRhdG9ycy50cmFuc2l0aW9uYWwgPSBmdW5jdGlvbiB0cmFuc2l0aW9uYWwodmFsaWRhdG9yLCB2ZXJzaW9uLCBtZXNzYWdlKSB7XG4gIGZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2Uob3B0LCBkZXNjKSB7XG4gICAgcmV0dXJuICdbQXhpb3MgdicgKyBWRVJTSU9OICsgJ10gVHJhbnNpdGlvbmFsIG9wdGlvbiBcXCcnICsgb3B0ICsgJ1xcJycgKyBkZXNjICsgKG1lc3NhZ2UgPyAnLiAnICsgbWVzc2FnZSA6ICcnKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHJldHVybiAodmFsdWUsIG9wdCwgb3B0cykgPT4ge1xuICAgIGlmICh2YWxpZGF0b3IgPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShvcHQsICcgaGFzIGJlZW4gcmVtb3ZlZCcgKyAodmVyc2lvbiA/ICcgaW4gJyArIHZlcnNpb24gOiAnJykpLFxuICAgICAgICBBeGlvc0Vycm9yLkVSUl9ERVBSRUNBVEVEXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh2ZXJzaW9uICYmICFkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSkge1xuICAgICAgZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0gPSB0cnVlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShcbiAgICAgICAgICBvcHQsXG4gICAgICAgICAgJyBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYnICsgdmVyc2lvbiArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUnXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvciA/IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRzKSA6IHRydWU7XG4gIH07XG59O1xuXG52YWxpZGF0b3JzLnNwZWxsaW5nID0gZnVuY3Rpb24gc3BlbGxpbmcoY29ycmVjdFNwZWxsaW5nKSB7XG4gIHJldHVybiAodmFsdWUsIG9wdCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS53YXJuKGAke29wdH0gaXMgbGlrZWx5IGEgbWlzc3BlbGxpbmcgb2YgJHtjb3JyZWN0U3BlbGxpbmd9YCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cbi8qKlxuICogQXNzZXJ0IG9iamVjdCdzIHByb3BlcnRpZXMgdHlwZVxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hXG4gKiBAcGFyYW0ge2Jvb2xlYW4/fSBhbGxvd1Vua25vd25cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5cbmZ1bmN0aW9uIGFzc2VydE9wdGlvbnMob3B0aW9ucywgc2NoZW1hLCBhbGxvd1Vua25vd24pIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0JywgQXhpb3NFcnJvci5FUlJfQkFEX09QVElPTl9WQUxVRSk7XG4gIH1cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9wdGlvbnMpO1xuICBsZXQgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIGNvbnN0IG9wdCA9IGtleXNbaV07XG4gICAgY29uc3QgdmFsaWRhdG9yID0gc2NoZW1hW29wdF07XG4gICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zW29wdF07XG4gICAgICBjb25zdCByZXN1bHQgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRpb25zKTtcbiAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ29wdGlvbiAnICsgb3B0ICsgJyBtdXN0IGJlICcgKyByZXN1bHQsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT05fVkFMVUUpO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChhbGxvd1Vua25vd24gIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKCdVbmtub3duIG9wdGlvbiAnICsgb3B0LCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBhc3NlcnRPcHRpb25zLFxuICB2YWxpZGF0b3JzXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5pbXBvcnQgYnVpbGRVUkwgZnJvbSAnLi4vaGVscGVycy9idWlsZFVSTC5qcyc7XG5pbXBvcnQgSW50ZXJjZXB0b3JNYW5hZ2VyIGZyb20gJy4vSW50ZXJjZXB0b3JNYW5hZ2VyLmpzJztcbmltcG9ydCBkaXNwYXRjaFJlcXVlc3QgZnJvbSAnLi9kaXNwYXRjaFJlcXVlc3QuanMnO1xuaW1wb3J0IG1lcmdlQ29uZmlnIGZyb20gJy4vbWVyZ2VDb25maWcuanMnO1xuaW1wb3J0IGJ1aWxkRnVsbFBhdGggZnJvbSAnLi9idWlsZEZ1bGxQYXRoLmpzJztcbmltcG9ydCB2YWxpZGF0b3IgZnJvbSAnLi4vaGVscGVycy92YWxpZGF0b3IuanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tICcuL0F4aW9zSGVhZGVycy5qcyc7XG5cbmNvbnN0IHZhbGlkYXRvcnMgPSB2YWxpZGF0b3IudmFsaWRhdG9ycztcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaW5zdGFuY2VDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcbiAqXG4gKiBAcmV0dXJuIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuY2xhc3MgQXhpb3Mge1xuICBjb25zdHJ1Y3RvcihpbnN0YW5jZUNvbmZpZykge1xuICAgIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZztcbiAgICB0aGlzLmludGVyY2VwdG9ycyA9IHtcbiAgICAgIHJlcXVlc3Q6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKSxcbiAgICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoIGEgcmVxdWVzdFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGNvbmZpZ09yVXJsIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAgICogQHBhcmFtIHs/T2JqZWN0fSBjb25maWdcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2V9IFRoZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZFxuICAgKi9cbiAgYXN5bmMgcmVxdWVzdChjb25maWdPclVybCwgY29uZmlnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9yZXF1ZXN0KGNvbmZpZ09yVXJsLCBjb25maWcpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGxldCBkdW1teSA9IHt9O1xuXG4gICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlID8gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZHVtbXkpIDogKGR1bW15ID0gbmV3IEVycm9yKCkpO1xuXG4gICAgICAgIC8vIHNsaWNlIG9mZiB0aGUgRXJyb3I6IC4uLiBsaW5lXG4gICAgICAgIGNvbnN0IHN0YWNrID0gZHVtbXkuc3RhY2sgPyBkdW1teS5zdGFjay5yZXBsYWNlKC9eLitcXG4vLCAnJykgOiAnJztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIWVyci5zdGFjaykge1xuICAgICAgICAgICAgZXJyLnN0YWNrID0gc3RhY2s7XG4gICAgICAgICAgICAvLyBtYXRjaCB3aXRob3V0IHRoZSAyIHRvcCBzdGFjayBsaW5lc1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RhY2sgJiYgIVN0cmluZyhlcnIuc3RhY2spLmVuZHNXaXRoKHN0YWNrLnJlcGxhY2UoL14uK1xcbi4rXFxuLywgJycpKSkge1xuICAgICAgICAgICAgZXJyLnN0YWNrICs9ICdcXG4nICsgc3RhY2tcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpZ25vcmUgdGhlIGNhc2Ugd2hlcmUgXCJzdGFja1wiIGlzIGFuIHVuLXdyaXRhYmxlIHByb3BlcnR5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIF9yZXF1ZXN0KGNvbmZpZ09yVXJsLCBjb25maWcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICAvLyBBbGxvdyBmb3IgYXhpb3MoJ2V4YW1wbGUvdXJsJ1ssIGNvbmZpZ10pIGEgbGEgZmV0Y2ggQVBJXG4gICAgaWYgKHR5cGVvZiBjb25maWdPclVybCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbmZpZyA9IGNvbmZpZyB8fCB7fTtcbiAgICAgIGNvbmZpZy51cmwgPSBjb25maWdPclVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnID0gY29uZmlnT3JVcmwgfHwge307XG4gICAgfVxuXG4gICAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcblxuICAgIGNvbnN0IHt0cmFuc2l0aW9uYWwsIHBhcmFtc1NlcmlhbGl6ZXIsIGhlYWRlcnN9ID0gY29uZmlnO1xuXG4gICAgaWYgKHRyYW5zaXRpb25hbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWxpZGF0b3IuYXNzZXJ0T3B0aW9ucyh0cmFuc2l0aW9uYWwsIHtcbiAgICAgICAgc2lsZW50SlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXG4gICAgICAgIGZvcmNlZEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxuICAgICAgICBjbGFyaWZ5VGltZW91dEVycm9yOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pXG4gICAgICB9LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtc1NlcmlhbGl6ZXIgIT0gbnVsbCkge1xuICAgICAgaWYgKHV0aWxzLmlzRnVuY3Rpb24ocGFyYW1zU2VyaWFsaXplcikpIHtcbiAgICAgICAgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIgPSB7XG4gICAgICAgICAgc2VyaWFsaXplOiBwYXJhbXNTZXJpYWxpemVyXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbGlkYXRvci5hc3NlcnRPcHRpb25zKHBhcmFtc1NlcmlhbGl6ZXIsIHtcbiAgICAgICAgICBlbmNvZGU6IHZhbGlkYXRvcnMuZnVuY3Rpb24sXG4gICAgICAgICAgc2VyaWFsaXplOiB2YWxpZGF0b3JzLmZ1bmN0aW9uXG4gICAgICAgIH0sIHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhbGlkYXRvci5hc3NlcnRPcHRpb25zKGNvbmZpZywge1xuICAgICAgYmFzZVVybDogdmFsaWRhdG9ycy5zcGVsbGluZygnYmFzZVVSTCcpLFxuICAgICAgd2l0aFhzcmZUb2tlbjogdmFsaWRhdG9ycy5zcGVsbGluZygnd2l0aFhTUkZUb2tlbicpXG4gICAgfSwgdHJ1ZSk7XG5cbiAgICAvLyBTZXQgY29uZmlnLm1ldGhvZFxuICAgIGNvbmZpZy5tZXRob2QgPSAoY29uZmlnLm1ldGhvZCB8fCB0aGlzLmRlZmF1bHRzLm1ldGhvZCB8fCAnZ2V0JykudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIEZsYXR0ZW4gaGVhZGVyc1xuICAgIGxldCBjb250ZXh0SGVhZGVycyA9IGhlYWRlcnMgJiYgdXRpbHMubWVyZ2UoXG4gICAgICBoZWFkZXJzLmNvbW1vbixcbiAgICAgIGhlYWRlcnNbY29uZmlnLm1ldGhvZF1cbiAgICApO1xuXG4gICAgaGVhZGVycyAmJiB1dGlscy5mb3JFYWNoKFxuICAgICAgWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnLCAnY29tbW9uJ10sXG4gICAgICAobWV0aG9kKSA9PiB7XG4gICAgICAgIGRlbGV0ZSBoZWFkZXJzW21ldGhvZF07XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbmZpZy5oZWFkZXJzID0gQXhpb3NIZWFkZXJzLmNvbmNhdChjb250ZXh0SGVhZGVycywgaGVhZGVycyk7XG5cbiAgICAvLyBmaWx0ZXIgb3V0IHNraXBwZWQgaW50ZXJjZXB0b3JzXG4gICAgY29uc3QgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgICBsZXQgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gdHJ1ZTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24gdW5zaGlmdFJlcXVlc3RJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICAgIGlmICh0eXBlb2YgaW50ZXJjZXB0b3IucnVuV2hlbiA9PT0gJ2Z1bmN0aW9uJyAmJiBpbnRlcmNlcHRvci5ydW5XaGVuKGNvbmZpZykgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzICYmIGludGVyY2VwdG9yLnN5bmNocm9ub3VzO1xuXG4gICAgICByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluID0gW107XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbiBwdXNoUmVzcG9uc2VJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICAgIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5wdXNoKGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgbGV0IHByb21pc2U7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBsZW47XG5cbiAgICBpZiAoIXN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycykge1xuICAgICAgY29uc3QgY2hhaW4gPSBbZGlzcGF0Y2hSZXF1ZXN0LmJpbmQodGhpcyksIHVuZGVmaW5lZF07XG4gICAgICBjaGFpbi51bnNoaWZ0LmFwcGx5KGNoYWluLCByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbik7XG4gICAgICBjaGFpbi5wdXNoLmFwcGx5KGNoYWluLCByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4pO1xuICAgICAgbGVuID0gY2hhaW4ubGVuZ3RoO1xuXG4gICAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZyk7XG5cbiAgICAgIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oY2hhaW5baSsrXSwgY2hhaW5baSsrXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIGxlbiA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLmxlbmd0aDtcblxuICAgIGxldCBuZXdDb25maWcgPSBjb25maWc7XG5cbiAgICBpID0gMDtcblxuICAgIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgICBjb25zdCBvbkZ1bGZpbGxlZCA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluW2krK107XG4gICAgICBjb25zdCBvblJlamVjdGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW5baSsrXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ld0NvbmZpZyA9IG9uRnVsZmlsbGVkKG5ld0NvbmZpZyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBvblJlamVjdGVkLmNhbGwodGhpcywgZXJyb3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcHJvbWlzZSA9IGRpc3BhdGNoUmVxdWVzdC5jYWxsKHRoaXMsIG5ld0NvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfVxuXG4gICAgaSA9IDA7XG4gICAgbGVuID0gcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLmxlbmd0aDtcblxuICAgIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbltpKytdLCByZXNwb25zZUludGVyY2VwdG9yQ2hhaW5baSsrXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICBnZXRVcmkoY29uZmlnKSB7XG4gICAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcbiAgICBjb25zdCBmdWxsUGF0aCA9IGJ1aWxkRnVsbFBhdGgoY29uZmlnLmJhc2VVUkwsIGNvbmZpZy51cmwpO1xuICAgIHJldHVybiBidWlsZFVSTChmdWxsUGF0aCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpO1xuICB9XG59XG5cbi8vIFByb3ZpZGUgYWxpYXNlcyBmb3Igc3VwcG9ydGVkIHJlcXVlc3QgbWV0aG9kc1xudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdvcHRpb25zJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kLFxuICAgICAgdXJsLFxuICAgICAgZGF0YTogKGNvbmZpZyB8fCB7fSkuZGF0YVxuICAgIH0pKTtcbiAgfTtcbn0pO1xuXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuXG4gIGZ1bmN0aW9uIGdlbmVyYXRlSFRUUE1ldGhvZChpc0Zvcm0pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gaHR0cE1ldGhvZCh1cmwsIGRhdGEsIGNvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBoZWFkZXJzOiBpc0Zvcm0gPyB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJ1xuICAgICAgICB9IDoge30sXG4gICAgICAgIHVybCxcbiAgICAgICAgZGF0YVxuICAgICAgfSkpO1xuICAgIH07XG4gIH1cblxuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGdlbmVyYXRlSFRUUE1ldGhvZCgpO1xuXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2QgKyAnRm9ybSddID0gZ2VuZXJhdGVIVFRQTWV0aG9kKHRydWUpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IEF4aW9zO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgQ2FuY2VsZWRFcnJvciBmcm9tICcuL0NhbmNlbGVkRXJyb3IuanMnO1xuXG4vKipcbiAqIEEgYENhbmNlbFRva2VuYCBpcyBhbiBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byByZXF1ZXN0IGNhbmNlbGxhdGlvbiBvZiBhbiBvcGVyYXRpb24uXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXhlY3V0b3IgVGhlIGV4ZWN1dG9yIGZ1bmN0aW9uLlxuICpcbiAqIEByZXR1cm5zIHtDYW5jZWxUb2tlbn1cbiAqL1xuY2xhc3MgQ2FuY2VsVG9rZW4ge1xuICBjb25zdHJ1Y3RvcihleGVjdXRvcikge1xuICAgIGlmICh0eXBlb2YgZXhlY3V0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICBsZXQgcmVzb2x2ZVByb21pc2U7XG5cbiAgICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZVByb21pc2UgPSByZXNvbHZlO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICB0aGlzLnByb21pc2UudGhlbihjYW5jZWwgPT4ge1xuICAgICAgaWYgKCF0b2tlbi5fbGlzdGVuZXJzKSByZXR1cm47XG5cbiAgICAgIGxldCBpID0gdG9rZW4uX2xpc3RlbmVycy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgIHRva2VuLl9saXN0ZW5lcnNbaV0oY2FuY2VsKTtcbiAgICAgIH1cbiAgICAgIHRva2VuLl9saXN0ZW5lcnMgPSBudWxsO1xuICAgIH0pO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICB0aGlzLnByb21pc2UudGhlbiA9IG9uZnVsZmlsbGVkID0+IHtcbiAgICAgIGxldCBfcmVzb2x2ZTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgIHRva2VuLnN1YnNjcmliZShyZXNvbHZlKTtcbiAgICAgICAgX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgICAgfSkudGhlbihvbmZ1bGZpbGxlZCk7XG5cbiAgICAgIHByb21pc2UuY2FuY2VsID0gZnVuY3Rpb24gcmVqZWN0KCkge1xuICAgICAgICB0b2tlbi51bnN1YnNjcmliZShfcmVzb2x2ZSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9O1xuXG4gICAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UsIGNvbmZpZywgcmVxdWVzdCkge1xuICAgICAgaWYgKHRva2VuLnJlYXNvbikge1xuICAgICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsZWRFcnJvcihtZXNzYWdlLCBjb25maWcsIHJlcXVlc3QpO1xuICAgICAgcmVzb2x2ZVByb21pc2UodG9rZW4ucmVhc29uKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaHJvd3MgYSBgQ2FuY2VsZWRFcnJvcmAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAgICovXG4gIHRocm93SWZSZXF1ZXN0ZWQoKSB7XG4gICAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgICB0aHJvdyB0aGlzLnJlYXNvbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHRoZSBjYW5jZWwgc2lnbmFsXG4gICAqL1xuXG4gIHN1YnNjcmliZShsaXN0ZW5lcikge1xuICAgIGlmICh0aGlzLnJlYXNvbikge1xuICAgICAgbGlzdGVuZXIodGhpcy5yZWFzb24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzID0gW2xpc3RlbmVyXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW5zdWJzY3JpYmUgZnJvbSB0aGUgY2FuY2VsIHNpZ25hbFxuICAgKi9cblxuICB1bnN1YnNjcmliZShsaXN0ZW5lcikge1xuICAgIGlmICghdGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuX2xpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIHRvQWJvcnRTaWduYWwoKSB7XG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIGNvbnN0IGFib3J0ID0gKGVycikgPT4ge1xuICAgICAgY29udHJvbGxlci5hYm9ydChlcnIpO1xuICAgIH07XG5cbiAgICB0aGlzLnN1YnNjcmliZShhYm9ydCk7XG5cbiAgICBjb250cm9sbGVyLnNpZ25hbC51bnN1YnNjcmliZSA9ICgpID0+IHRoaXMudW5zdWJzY3JpYmUoYWJvcnQpO1xuXG4gICAgcmV0dXJuIGNvbnRyb2xsZXIuc2lnbmFsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBuZXcgYENhbmNlbFRva2VuYCBhbmQgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCxcbiAgICogY2FuY2VscyB0aGUgYENhbmNlbFRva2VuYC5cbiAgICovXG4gIHN0YXRpYyBzb3VyY2UoKSB7XG4gICAgbGV0IGNhbmNlbDtcbiAgICBjb25zdCB0b2tlbiA9IG5ldyBDYW5jZWxUb2tlbihmdW5jdGlvbiBleGVjdXRvcihjKSB7XG4gICAgICBjYW5jZWwgPSBjO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbixcbiAgICAgIGNhbmNlbFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ2FuY2VsVG9rZW47XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU3ludGFjdGljIHN1Z2FyIGZvciBpbnZva2luZyBhIGZ1bmN0aW9uIGFuZCBleHBhbmRpbmcgYW4gYXJyYXkgZm9yIGFyZ3VtZW50cy5cbiAqXG4gKiBDb21tb24gdXNlIGNhc2Ugd291bGQgYmUgdG8gdXNlIGBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHlgLlxuICpcbiAqICBgYGBqc1xuICogIGZ1bmN0aW9uIGYoeCwgeSwgeikge31cbiAqICB2YXIgYXJncyA9IFsxLCAyLCAzXTtcbiAqICBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICogIGBgYFxuICpcbiAqIFdpdGggYHNwcmVhZGAgdGhpcyBleGFtcGxlIGNhbiBiZSByZS13cml0dGVuLlxuICpcbiAqICBgYGBqc1xuICogIHNwcmVhZChmdW5jdGlvbih4LCB5LCB6KSB7fSkoWzEsIDIsIDNdKTtcbiAqICBgYGBcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICpcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ByZWFkKGNhbGxiYWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKGFycikge1xuICAgIHJldHVybiBjYWxsYmFjay5hcHBseShudWxsLCBhcnIpO1xuICB9O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvc1xuICpcbiAqIEBwYXJhbSB7Kn0gcGF5bG9hZCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvcywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQXhpb3NFcnJvcihwYXlsb2FkKSB7XG4gIHJldHVybiB1dGlscy5pc09iamVjdChwYXlsb2FkKSAmJiAocGF5bG9hZC5pc0F4aW9zRXJyb3IgPT09IHRydWUpO1xufVxuIiwiY29uc3QgSHR0cFN0YXR1c0NvZGUgPSB7XG4gIENvbnRpbnVlOiAxMDAsXG4gIFN3aXRjaGluZ1Byb3RvY29sczogMTAxLFxuICBQcm9jZXNzaW5nOiAxMDIsXG4gIEVhcmx5SGludHM6IDEwMyxcbiAgT2s6IDIwMCxcbiAgQ3JlYXRlZDogMjAxLFxuICBBY2NlcHRlZDogMjAyLFxuICBOb25BdXRob3JpdGF0aXZlSW5mb3JtYXRpb246IDIwMyxcbiAgTm9Db250ZW50OiAyMDQsXG4gIFJlc2V0Q29udGVudDogMjA1LFxuICBQYXJ0aWFsQ29udGVudDogMjA2LFxuICBNdWx0aVN0YXR1czogMjA3LFxuICBBbHJlYWR5UmVwb3J0ZWQ6IDIwOCxcbiAgSW1Vc2VkOiAyMjYsXG4gIE11bHRpcGxlQ2hvaWNlczogMzAwLFxuICBNb3ZlZFBlcm1hbmVudGx5OiAzMDEsXG4gIEZvdW5kOiAzMDIsXG4gIFNlZU90aGVyOiAzMDMsXG4gIE5vdE1vZGlmaWVkOiAzMDQsXG4gIFVzZVByb3h5OiAzMDUsXG4gIFVudXNlZDogMzA2LFxuICBUZW1wb3JhcnlSZWRpcmVjdDogMzA3LFxuICBQZXJtYW5lbnRSZWRpcmVjdDogMzA4LFxuICBCYWRSZXF1ZXN0OiA0MDAsXG4gIFVuYXV0aG9yaXplZDogNDAxLFxuICBQYXltZW50UmVxdWlyZWQ6IDQwMixcbiAgRm9yYmlkZGVuOiA0MDMsXG4gIE5vdEZvdW5kOiA0MDQsXG4gIE1ldGhvZE5vdEFsbG93ZWQ6IDQwNSxcbiAgTm90QWNjZXB0YWJsZTogNDA2LFxuICBQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6IDQwNyxcbiAgUmVxdWVzdFRpbWVvdXQ6IDQwOCxcbiAgQ29uZmxpY3Q6IDQwOSxcbiAgR29uZTogNDEwLFxuICBMZW5ndGhSZXF1aXJlZDogNDExLFxuICBQcmVjb25kaXRpb25GYWlsZWQ6IDQxMixcbiAgUGF5bG9hZFRvb0xhcmdlOiA0MTMsXG4gIFVyaVRvb0xvbmc6IDQxNCxcbiAgVW5zdXBwb3J0ZWRNZWRpYVR5cGU6IDQxNSxcbiAgUmFuZ2VOb3RTYXRpc2ZpYWJsZTogNDE2LFxuICBFeHBlY3RhdGlvbkZhaWxlZDogNDE3LFxuICBJbUFUZWFwb3Q6IDQxOCxcbiAgTWlzZGlyZWN0ZWRSZXF1ZXN0OiA0MjEsXG4gIFVucHJvY2Vzc2FibGVFbnRpdHk6IDQyMixcbiAgTG9ja2VkOiA0MjMsXG4gIEZhaWxlZERlcGVuZGVuY3k6IDQyNCxcbiAgVG9vRWFybHk6IDQyNSxcbiAgVXBncmFkZVJlcXVpcmVkOiA0MjYsXG4gIFByZWNvbmRpdGlvblJlcXVpcmVkOiA0MjgsXG4gIFRvb01hbnlSZXF1ZXN0czogNDI5LFxuICBSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6IDQzMSxcbiAgVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM6IDQ1MSxcbiAgSW50ZXJuYWxTZXJ2ZXJFcnJvcjogNTAwLFxuICBOb3RJbXBsZW1lbnRlZDogNTAxLFxuICBCYWRHYXRld2F5OiA1MDIsXG4gIFNlcnZpY2VVbmF2YWlsYWJsZTogNTAzLFxuICBHYXRld2F5VGltZW91dDogNTA0LFxuICBIdHRwVmVyc2lvbk5vdFN1cHBvcnRlZDogNTA1LFxuICBWYXJpYW50QWxzb05lZ290aWF0ZXM6IDUwNixcbiAgSW5zdWZmaWNpZW50U3RvcmFnZTogNTA3LFxuICBMb29wRGV0ZWN0ZWQ6IDUwOCxcbiAgTm90RXh0ZW5kZWQ6IDUxMCxcbiAgTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6IDUxMSxcbn07XG5cbk9iamVjdC5lbnRyaWVzKEh0dHBTdGF0dXNDb2RlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgSHR0cFN0YXR1c0NvZGVbdmFsdWVdID0ga2V5O1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IEh0dHBTdGF0dXNDb2RlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscy5qcyc7XG5pbXBvcnQgYmluZCBmcm9tICcuL2hlbHBlcnMvYmluZC5qcyc7XG5pbXBvcnQgQXhpb3MgZnJvbSAnLi9jb3JlL0F4aW9zLmpzJztcbmltcG9ydCBtZXJnZUNvbmZpZyBmcm9tICcuL2NvcmUvbWVyZ2VDb25maWcuanMnO1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4vZGVmYXVsdHMvaW5kZXguanMnO1xuaW1wb3J0IGZvcm1EYXRhVG9KU09OIGZyb20gJy4vaGVscGVycy9mb3JtRGF0YVRvSlNPTi5qcyc7XG5pbXBvcnQgQ2FuY2VsZWRFcnJvciBmcm9tICcuL2NhbmNlbC9DYW5jZWxlZEVycm9yLmpzJztcbmltcG9ydCBDYW5jZWxUb2tlbiBmcm9tICcuL2NhbmNlbC9DYW5jZWxUb2tlbi5qcyc7XG5pbXBvcnQgaXNDYW5jZWwgZnJvbSAnLi9jYW5jZWwvaXNDYW5jZWwuanMnO1xuaW1wb3J0IHtWRVJTSU9OfSBmcm9tICcuL2Vudi9kYXRhLmpzJztcbmltcG9ydCB0b0Zvcm1EYXRhIGZyb20gJy4vaGVscGVycy90b0Zvcm1EYXRhLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4vY29yZS9BeGlvc0Vycm9yLmpzJztcbmltcG9ydCBzcHJlYWQgZnJvbSAnLi9oZWxwZXJzL3NwcmVhZC5qcyc7XG5pbXBvcnQgaXNBeGlvc0Vycm9yIGZyb20gJy4vaGVscGVycy9pc0F4aW9zRXJyb3IuanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tIFwiLi9jb3JlL0F4aW9zSGVhZGVycy5qc1wiO1xuaW1wb3J0IGFkYXB0ZXJzIGZyb20gJy4vYWRhcHRlcnMvYWRhcHRlcnMuanMnO1xuaW1wb3J0IEh0dHBTdGF0dXNDb2RlIGZyb20gJy4vaGVscGVycy9IdHRwU3RhdHVzQ29kZS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlIGFuIGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGRlZmF1bHRDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcbiAqXG4gKiBAcmV0dXJucyB7QXhpb3N9IEEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRDb25maWcpIHtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBBeGlvcyhkZWZhdWx0Q29uZmlnKTtcbiAgY29uc3QgaW5zdGFuY2UgPSBiaW5kKEF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0LCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGF4aW9zLnByb3RvdHlwZSB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIEF4aW9zLnByb3RvdHlwZSwgY29udGV4dCwge2FsbE93bktleXM6IHRydWV9KTtcblxuICAvLyBDb3B5IGNvbnRleHQgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBjb250ZXh0LCBudWxsLCB7YWxsT3duS2V5czogdHJ1ZX0pO1xuXG4gIC8vIEZhY3RvcnkgZm9yIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXNcbiAgaW5zdGFuY2UuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGluc3RhbmNlQ29uZmlnKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUluc3RhbmNlKG1lcmdlQ29uZmlnKGRlZmF1bHRDb25maWcsIGluc3RhbmNlQ29uZmlnKSk7XG4gIH07XG5cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG4vLyBDcmVhdGUgdGhlIGRlZmF1bHQgaW5zdGFuY2UgdG8gYmUgZXhwb3J0ZWRcbmNvbnN0IGF4aW9zID0gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdHMpO1xuXG4vLyBFeHBvc2UgQXhpb3MgY2xhc3MgdG8gYWxsb3cgY2xhc3MgaW5oZXJpdGFuY2VcbmF4aW9zLkF4aW9zID0gQXhpb3M7XG5cbi8vIEV4cG9zZSBDYW5jZWwgJiBDYW5jZWxUb2tlblxuYXhpb3MuQ2FuY2VsZWRFcnJvciA9IENhbmNlbGVkRXJyb3I7XG5heGlvcy5DYW5jZWxUb2tlbiA9IENhbmNlbFRva2VuO1xuYXhpb3MuaXNDYW5jZWwgPSBpc0NhbmNlbDtcbmF4aW9zLlZFUlNJT04gPSBWRVJTSU9OO1xuYXhpb3MudG9Gb3JtRGF0YSA9IHRvRm9ybURhdGE7XG5cbi8vIEV4cG9zZSBBeGlvc0Vycm9yIGNsYXNzXG5heGlvcy5BeGlvc0Vycm9yID0gQXhpb3NFcnJvcjtcblxuLy8gYWxpYXMgZm9yIENhbmNlbGVkRXJyb3IgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmF4aW9zLkNhbmNlbCA9IGF4aW9zLkNhbmNlbGVkRXJyb3I7XG5cbi8vIEV4cG9zZSBhbGwvc3ByZWFkXG5heGlvcy5hbGwgPSBmdW5jdGlvbiBhbGwocHJvbWlzZXMpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn07XG5cbmF4aW9zLnNwcmVhZCA9IHNwcmVhZDtcblxuLy8gRXhwb3NlIGlzQXhpb3NFcnJvclxuYXhpb3MuaXNBeGlvc0Vycm9yID0gaXNBeGlvc0Vycm9yO1xuXG4vLyBFeHBvc2UgbWVyZ2VDb25maWdcbmF4aW9zLm1lcmdlQ29uZmlnID0gbWVyZ2VDb25maWc7XG5cbmF4aW9zLkF4aW9zSGVhZGVycyA9IEF4aW9zSGVhZGVycztcblxuYXhpb3MuZm9ybVRvSlNPTiA9IHRoaW5nID0+IGZvcm1EYXRhVG9KU09OKHV0aWxzLmlzSFRNTEZvcm0odGhpbmcpID8gbmV3IEZvcm1EYXRhKHRoaW5nKSA6IHRoaW5nKTtcblxuYXhpb3MuZ2V0QWRhcHRlciA9IGFkYXB0ZXJzLmdldEFkYXB0ZXI7XG5cbmF4aW9zLkh0dHBTdGF0dXNDb2RlID0gSHR0cFN0YXR1c0NvZGU7XG5cbmF4aW9zLmRlZmF1bHQgPSBheGlvcztcblxuLy8gdGhpcyBtb2R1bGUgc2hvdWxkIG9ubHkgaGF2ZSBhIGRlZmF1bHQgZXhwb3J0XG5leHBvcnQgZGVmYXVsdCBheGlvc1xuIiwidmFyIExpZmVjeWNsZTtcbihmdW5jdGlvbiAoTGlmZWN5Y2xlKSB7XG4gICAgTGlmZWN5Y2xlW0xpZmVjeWNsZVtcIlRyYW5zaWVudFwiXSA9IDBdID0gXCJUcmFuc2llbnRcIjtcbiAgICBMaWZlY3ljbGVbTGlmZWN5Y2xlW1wiU2luZ2xldG9uXCJdID0gMV0gPSBcIlNpbmdsZXRvblwiO1xuICAgIExpZmVjeWNsZVtMaWZlY3ljbGVbXCJSZXNvbHV0aW9uU2NvcGVkXCJdID0gMl0gPSBcIlJlc29sdXRpb25TY29wZWRcIjtcbiAgICBMaWZlY3ljbGVbTGlmZWN5Y2xlW1wiQ29udGFpbmVyU2NvcGVkXCJdID0gM10gPSBcIkNvbnRhaW5lclNjb3BlZFwiO1xufSkoTGlmZWN5Y2xlIHx8IChMaWZlY3ljbGUgPSB7fSkpO1xuZXhwb3J0IGRlZmF1bHQgTGlmZWN5Y2xlO1xuIiwiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY3JlYXRlQmluZGluZyhvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBleHBvcnRzKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShwKSkgZXhwb3J0c1twXSA9IG1bcF07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgcHJpdmF0ZU1hcCkge1xyXG4gICAgaWYgKCFwcml2YXRlTWFwLmhhcyhyZWNlaXZlcikpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcml2YXRlTWFwLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwLCB2YWx1ZSkge1xyXG4gICAgaWYgKCFwcml2YXRlTWFwLmhhcyhyZWNlaXZlcikpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIHNldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtcclxuICAgIH1cclxuICAgIHByaXZhdGVNYXAuc2V0KHJlY2VpdmVyLCB2YWx1ZSk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuIiwiZXhwb3J0IHZhciBJTkpFQ1RJT05fVE9LRU5fTUVUQURBVEFfS0VZID0gXCJpbmplY3Rpb25Ub2tlbnNcIjtcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbUluZm8odGFyZ2V0KSB7XG4gICAgdmFyIHBhcmFtcyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCB0YXJnZXQpIHx8IFtdO1xuICAgIHZhciBpbmplY3Rpb25Ub2tlbnMgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKElOSkVDVElPTl9UT0tFTl9NRVRBREFUQV9LRVksIHRhcmdldCkgfHwge307XG4gICAgT2JqZWN0LmtleXMoaW5qZWN0aW9uVG9rZW5zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcGFyYW1zWytrZXldID0gaW5qZWN0aW9uVG9rZW5zW2tleV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVJbmplY3Rpb25Ub2tlbk1ldGFkYXRhKGRhdGEsIHRyYW5zZm9ybSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBfcHJvcGVydHlLZXksIHBhcmFtZXRlckluZGV4KSB7XG4gICAgICAgIHZhciBkZXNjcmlwdG9ycyA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoSU5KRUNUSU9OX1RPS0VOX01FVEFEQVRBX0tFWSwgdGFyZ2V0KSB8fCB7fTtcbiAgICAgICAgZGVzY3JpcHRvcnNbcGFyYW1ldGVySW5kZXhdID0gdHJhbnNmb3JtXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICB0b2tlbjogZGF0YSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zZm9ybS50cmFuc2Zvcm1Ub2tlbixcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1BcmdzOiB0cmFuc2Zvcm0uYXJncyB8fCBbXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBkYXRhO1xuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKElOSkVDVElPTl9UT0tFTl9NRVRBREFUQV9LRVksIGRlc2NyaXB0b3JzLCB0YXJnZXQpO1xuICAgIH07XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gaXNDbGFzc1Byb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgcmV0dXJuICEhcHJvdmlkZXIudXNlQ2xhc3M7XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gaXNGYWN0b3J5UHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgICByZXR1cm4gISFwcm92aWRlci51c2VGYWN0b3J5O1xufVxuIiwiaW1wb3J0IHsgX19yZWFkLCBfX3NwcmVhZCB9IGZyb20gXCJ0c2xpYlwiO1xudmFyIERlbGF5ZWRDb25zdHJ1Y3RvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGVsYXllZENvbnN0cnVjdG9yKHdyYXApIHtcbiAgICAgICAgdGhpcy53cmFwID0gd3JhcDtcbiAgICAgICAgdGhpcy5yZWZsZWN0TWV0aG9kcyA9IFtcbiAgICAgICAgICAgIFwiZ2V0XCIsXG4gICAgICAgICAgICBcImdldFByb3RvdHlwZU9mXCIsXG4gICAgICAgICAgICBcInNldFByb3RvdHlwZU9mXCIsXG4gICAgICAgICAgICBcImdldE93blByb3BlcnR5RGVzY3JpcHRvclwiLFxuICAgICAgICAgICAgXCJkZWZpbmVQcm9wZXJ0eVwiLFxuICAgICAgICAgICAgXCJoYXNcIixcbiAgICAgICAgICAgIFwic2V0XCIsXG4gICAgICAgICAgICBcImRlbGV0ZVByb3BlcnR5XCIsXG4gICAgICAgICAgICBcImFwcGx5XCIsXG4gICAgICAgICAgICBcImNvbnN0cnVjdFwiLFxuICAgICAgICAgICAgXCJvd25LZXlzXCJcbiAgICAgICAgXTtcbiAgICB9XG4gICAgRGVsYXllZENvbnN0cnVjdG9yLnByb3RvdHlwZS5jcmVhdGVQcm94eSA9IGZ1bmN0aW9uIChjcmVhdGVPYmplY3QpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHRhcmdldCA9IHt9O1xuICAgICAgICB2YXIgaW5pdCA9IGZhbHNlO1xuICAgICAgICB2YXIgdmFsdWU7XG4gICAgICAgIHZhciBkZWxheWVkT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCFpbml0KSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBjcmVhdGVPYmplY3QoX3RoaXMud3JhcCgpKTtcbiAgICAgICAgICAgICAgICBpbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0YXJnZXQsIHRoaXMuY3JlYXRlSGFuZGxlcihkZWxheWVkT2JqZWN0KSk7XG4gICAgfTtcbiAgICBEZWxheWVkQ29uc3RydWN0b3IucHJvdG90eXBlLmNyZWF0ZUhhbmRsZXIgPSBmdW5jdGlvbiAoZGVsYXllZE9iamVjdCkge1xuICAgICAgICB2YXIgaGFuZGxlciA9IHt9O1xuICAgICAgICB2YXIgaW5zdGFsbCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICBoYW5kbGVyW25hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcmdzWzBdID0gZGVsYXllZE9iamVjdCgpO1xuICAgICAgICAgICAgICAgIHZhciBtZXRob2QgPSBSZWZsZWN0W25hbWVdO1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodm9pZCAwLCBfX3NwcmVhZChhcmdzKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlZmxlY3RNZXRob2RzLmZvckVhY2goaW5zdGFsbCk7XG4gICAgICAgIHJldHVybiBoYW5kbGVyO1xuICAgIH07XG4gICAgcmV0dXJuIERlbGF5ZWRDb25zdHJ1Y3Rvcjtcbn0oKSk7XG5leHBvcnQgeyBEZWxheWVkQ29uc3RydWN0b3IgfTtcbmV4cG9ydCBmdW5jdGlvbiBkZWxheSh3cmFwcGVkQ29uc3RydWN0b3IpIHtcbiAgICBpZiAodHlwZW9mIHdyYXBwZWRDb25zdHJ1Y3RvciA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRlbXB0IHRvIGBkZWxheWAgdW5kZWZpbmVkLiBDb25zdHJ1Y3RvciBtdXN0IGJlIHdyYXBwZWQgaW4gYSBjYWxsYmFja1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEZWxheWVkQ29uc3RydWN0b3Iod3JhcHBlZENvbnN0cnVjdG9yKTtcbn1cbiIsImltcG9ydCB7IERlbGF5ZWRDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9sYXp5LWhlbHBlcnNcIjtcbmV4cG9ydCBmdW5jdGlvbiBpc05vcm1hbFRva2VuKHRva2VuKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0b2tlbiA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdG9rZW4gPT09IFwic3ltYm9sXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUb2tlbkRlc2NyaXB0b3IoZGVzY3JpcHRvcikge1xuICAgIHJldHVybiAodHlwZW9mIGRlc2NyaXB0b3IgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgXCJ0b2tlblwiIGluIGRlc2NyaXB0b3IgJiZcbiAgICAgICAgXCJtdWx0aXBsZVwiIGluIGRlc2NyaXB0b3IpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVHJhbnNmb3JtRGVzY3JpcHRvcihkZXNjcmlwdG9yKSB7XG4gICAgcmV0dXJuICh0eXBlb2YgZGVzY3JpcHRvciA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICBcInRva2VuXCIgaW4gZGVzY3JpcHRvciAmJlxuICAgICAgICBcInRyYW5zZm9ybVwiIGluIGRlc2NyaXB0b3IpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3RydWN0b3JUb2tlbih0b2tlbikge1xuICAgIHJldHVybiB0eXBlb2YgdG9rZW4gPT09IFwiZnVuY3Rpb25cIiB8fCB0b2tlbiBpbnN0YW5jZW9mIERlbGF5ZWRDb25zdHJ1Y3Rvcjtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Rva2VuUHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgICByZXR1cm4gISFwcm92aWRlci51c2VUb2tlbjtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1ZhbHVlUHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgICByZXR1cm4gcHJvdmlkZXIudXNlVmFsdWUgIT0gdW5kZWZpbmVkO1xufVxuIiwiaW1wb3J0IHsgaXNDbGFzc1Byb3ZpZGVyIH0gZnJvbSBcIi4vY2xhc3MtcHJvdmlkZXJcIjtcbmltcG9ydCB7IGlzVmFsdWVQcm92aWRlciB9IGZyb20gXCIuL3ZhbHVlLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBpc1Rva2VuUHJvdmlkZXIgfSBmcm9tIFwiLi90b2tlbi1wcm92aWRlclwiO1xuaW1wb3J0IHsgaXNGYWN0b3J5UHJvdmlkZXIgfSBmcm9tIFwiLi9mYWN0b3J5LXByb3ZpZGVyXCI7XG5leHBvcnQgZnVuY3Rpb24gaXNQcm92aWRlcihwcm92aWRlcikge1xuICAgIHJldHVybiAoaXNDbGFzc1Byb3ZpZGVyKHByb3ZpZGVyKSB8fFxuICAgICAgICBpc1ZhbHVlUHJvdmlkZXIocHJvdmlkZXIpIHx8XG4gICAgICAgIGlzVG9rZW5Qcm92aWRlcihwcm92aWRlcikgfHxcbiAgICAgICAgaXNGYWN0b3J5UHJvdmlkZXIocHJvdmlkZXIpKTtcbn1cbiIsInZhciBSZWdpc3RyeUJhc2UgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFJlZ2lzdHJ5QmFzZSgpIHtcbiAgICAgICAgdGhpcy5fcmVnaXN0cnlNYXAgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIFJlZ2lzdHJ5QmFzZS5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5TWFwLmVudHJpZXMoKTtcbiAgICB9O1xuICAgIFJlZ2lzdHJ5QmFzZS5wcm90b3R5cGUuZ2V0QWxsID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB0aGlzLmVuc3VyZShrZXkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnlNYXAuZ2V0KGtleSk7XG4gICAgfTtcbiAgICBSZWdpc3RyeUJhc2UucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdGhpcy5lbnN1cmUoa2V5KTtcbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5fcmVnaXN0cnlNYXAuZ2V0KGtleSk7XG4gICAgICAgIHJldHVybiB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSB8fCBudWxsO1xuICAgIH07XG4gICAgUmVnaXN0cnlCYXNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmVuc3VyZShrZXkpO1xuICAgICAgICB0aGlzLl9yZWdpc3RyeU1hcC5nZXQoa2V5KS5wdXNoKHZhbHVlKTtcbiAgICB9O1xuICAgIFJlZ2lzdHJ5QmFzZS5wcm90b3R5cGUuc2V0QWxsID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5fcmVnaXN0cnlNYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgIH07XG4gICAgUmVnaXN0cnlCYXNlLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHRoaXMuZW5zdXJlKGtleSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWdpc3RyeU1hcC5nZXQoa2V5KS5sZW5ndGggPiAwO1xuICAgIH07XG4gICAgUmVnaXN0cnlCYXNlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fcmVnaXN0cnlNYXAuY2xlYXIoKTtcbiAgICB9O1xuICAgIFJlZ2lzdHJ5QmFzZS5wcm90b3R5cGUuZW5zdXJlID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIXRoaXMuX3JlZ2lzdHJ5TWFwLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWdpc3RyeU1hcC5zZXQoa2V5LCBbXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBSZWdpc3RyeUJhc2U7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cnlCYXNlO1xuIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgUmVnaXN0cnlCYXNlIGZyb20gXCIuL3JlZ2lzdHJ5LWJhc2VcIjtcbnZhciBSZWdpc3RyeSA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFJlZ2lzdHJ5LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFJlZ2lzdHJ5KCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIHJldHVybiBSZWdpc3RyeTtcbn0oUmVnaXN0cnlCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyeTtcbiIsInZhciBSZXNvbHV0aW9uQ29udGV4dCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUmVzb2x1dGlvbkNvbnRleHQoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVkUmVzb2x1dGlvbnMgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIHJldHVybiBSZXNvbHV0aW9uQ29udGV4dDtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBSZXNvbHV0aW9uQ29udGV4dDtcbiIsImltcG9ydCB7IF9fcmVhZCwgX19zcHJlYWQgfSBmcm9tIFwidHNsaWJcIjtcbmZ1bmN0aW9uIGZvcm1hdERlcGVuZGVuY3kocGFyYW1zLCBpZHgpIHtcbiAgICBpZiAocGFyYW1zID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBcImF0IHBvc2l0aW9uICNcIiArIGlkeDtcbiAgICB9XG4gICAgdmFyIGFyZ05hbWUgPSBwYXJhbXMuc3BsaXQoXCIsXCIpW2lkeF0udHJpbSgpO1xuICAgIHJldHVybiBcIlxcXCJcIiArIGFyZ05hbWUgKyBcIlxcXCIgYXQgcG9zaXRpb24gI1wiICsgaWR4O1xufVxuZnVuY3Rpb24gY29tcG9zZUVycm9yTWVzc2FnZShtc2csIGUsIGluZGVudCkge1xuICAgIGlmIChpbmRlbnQgPT09IHZvaWQgMCkgeyBpbmRlbnQgPSBcIiAgICBcIjsgfVxuICAgIHJldHVybiBfX3NwcmVhZChbbXNnXSwgZS5tZXNzYWdlLnNwbGl0KFwiXFxuXCIpLm1hcChmdW5jdGlvbiAobCkgeyByZXR1cm4gaW5kZW50ICsgbDsgfSkpLmpvaW4oXCJcXG5cIik7XG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RXJyb3JDdG9yKGN0b3IsIHBhcmFtSWR4LCBlcnJvcikge1xuICAgIHZhciBfYSA9IF9fcmVhZChjdG9yLnRvU3RyaW5nKCkubWF0Y2goL2NvbnN0cnVjdG9yXFwoKFtcXHcsIF0rKVxcKS8pIHx8IFtdLCAyKSwgX2IgPSBfYVsxXSwgcGFyYW1zID0gX2IgPT09IHZvaWQgMCA/IG51bGwgOiBfYjtcbiAgICB2YXIgZGVwID0gZm9ybWF0RGVwZW5kZW5jeShwYXJhbXMsIHBhcmFtSWR4KTtcbiAgICByZXR1cm4gY29tcG9zZUVycm9yTWVzc2FnZShcIkNhbm5vdCBpbmplY3QgdGhlIGRlcGVuZGVuY3kgXCIgKyBkZXAgKyBcIiBvZiBcXFwiXCIgKyBjdG9yLm5hbWUgKyBcIlxcXCIgY29uc3RydWN0b3IuIFJlYXNvbjpcIiwgZXJyb3IpO1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGlzRGlzcG9zYWJsZSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUuZGlzcG9zZSAhPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgdmFyIGRpc3Bvc2VGdW4gPSB2YWx1ZS5kaXNwb3NlO1xuICAgIGlmIChkaXNwb3NlRnVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbiIsImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFJlZ2lzdHJ5QmFzZSBmcm9tIFwiLi9yZWdpc3RyeS1iYXNlXCI7XG52YXIgUHJlUmVzb2x1dGlvbkludGVyY2VwdG9ycyA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFByZVJlc29sdXRpb25JbnRlcmNlcHRvcnMsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUHJlUmVzb2x1dGlvbkludGVyY2VwdG9ycygpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gUHJlUmVzb2x1dGlvbkludGVyY2VwdG9ycztcbn0oUmVnaXN0cnlCYXNlKSk7XG5leHBvcnQgeyBQcmVSZXNvbHV0aW9uSW50ZXJjZXB0b3JzIH07XG52YXIgUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcnMgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQb3N0UmVzb2x1dGlvbkludGVyY2VwdG9ycywgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQb3N0UmVzb2x1dGlvbkludGVyY2VwdG9ycygpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcnM7XG59KFJlZ2lzdHJ5QmFzZSkpO1xuZXhwb3J0IHsgUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcnMgfTtcbnZhciBJbnRlcmNlcHRvcnMgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEludGVyY2VwdG9ycygpIHtcbiAgICAgICAgdGhpcy5wcmVSZXNvbHV0aW9uID0gbmV3IFByZVJlc29sdXRpb25JbnRlcmNlcHRvcnMoKTtcbiAgICAgICAgdGhpcy5wb3N0UmVzb2x1dGlvbiA9IG5ldyBQb3N0UmVzb2x1dGlvbkludGVyY2VwdG9ycygpO1xuICAgIH1cbiAgICByZXR1cm4gSW50ZXJjZXB0b3JzO1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IEludGVyY2VwdG9ycztcbiIsImltcG9ydCB7IF9fYXdhaXRlciwgX19nZW5lcmF0b3IsIF9fcmVhZCwgX19zcHJlYWQsIF9fdmFsdWVzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc0NsYXNzUHJvdmlkZXIsIGlzRmFjdG9yeVByb3ZpZGVyLCBpc05vcm1hbFRva2VuLCBpc1Rva2VuUHJvdmlkZXIsIGlzVmFsdWVQcm92aWRlciB9IGZyb20gXCIuL3Byb3ZpZGVyc1wiO1xuaW1wb3J0IHsgaXNQcm92aWRlciB9IGZyb20gXCIuL3Byb3ZpZGVycy9wcm92aWRlclwiO1xuaW1wb3J0IHsgaXNDb25zdHJ1Y3RvclRva2VuLCBpc1Rva2VuRGVzY3JpcHRvciwgaXNUcmFuc2Zvcm1EZXNjcmlwdG9yIH0gZnJvbSBcIi4vcHJvdmlkZXJzL2luamVjdGlvbi10b2tlblwiO1xuaW1wb3J0IFJlZ2lzdHJ5IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgTGlmZWN5Y2xlIGZyb20gXCIuL3R5cGVzL2xpZmVjeWNsZVwiO1xuaW1wb3J0IFJlc29sdXRpb25Db250ZXh0IGZyb20gXCIuL3Jlc29sdXRpb24tY29udGV4dFwiO1xuaW1wb3J0IHsgZm9ybWF0RXJyb3JDdG9yIH0gZnJvbSBcIi4vZXJyb3ItaGVscGVyc1wiO1xuaW1wb3J0IHsgRGVsYXllZENvbnN0cnVjdG9yIH0gZnJvbSBcIi4vbGF6eS1oZWxwZXJzXCI7XG5pbXBvcnQgeyBpc0Rpc3Bvc2FibGUgfSBmcm9tIFwiLi90eXBlcy9kaXNwb3NhYmxlXCI7XG5pbXBvcnQgSW50ZXJjZXB0b3JzIGZyb20gXCIuL2ludGVyY2VwdG9yc1wiO1xuZXhwb3J0IHZhciB0eXBlSW5mbyA9IG5ldyBNYXAoKTtcbnZhciBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lcihwYXJlbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMuX3JlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0b3JzID0gbmV3IEludGVyY2VwdG9ycygpO1xuICAgICAgICB0aGlzLmRpc3Bvc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGlzcG9zYWJsZXMgPSBuZXcgU2V0KCk7XG4gICAgfVxuICAgIEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lci5wcm90b3R5cGUucmVnaXN0ZXIgPSBmdW5jdGlvbiAodG9rZW4sIHByb3ZpZGVyT3JDb25zdHJ1Y3Rvciwgb3B0aW9ucykge1xuICAgICAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7IGxpZmVjeWNsZTogTGlmZWN5Y2xlLlRyYW5zaWVudCB9OyB9XG4gICAgICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICAgICAgdmFyIHByb3ZpZGVyO1xuICAgICAgICBpZiAoIWlzUHJvdmlkZXIocHJvdmlkZXJPckNvbnN0cnVjdG9yKSkge1xuICAgICAgICAgICAgcHJvdmlkZXIgPSB7IHVzZUNsYXNzOiBwcm92aWRlck9yQ29uc3RydWN0b3IgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb3ZpZGVyID0gcHJvdmlkZXJPckNvbnN0cnVjdG9yO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Rva2VuUHJvdmlkZXIocHJvdmlkZXIpKSB7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IFt0b2tlbl07XG4gICAgICAgICAgICB2YXIgdG9rZW5Qcm92aWRlciA9IHByb3ZpZGVyO1xuICAgICAgICAgICAgd2hpbGUgKHRva2VuUHJvdmlkZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VG9rZW4gPSB0b2tlblByb3ZpZGVyLnVzZVRva2VuO1xuICAgICAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKGN1cnJlbnRUb2tlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG9rZW4gcmVnaXN0cmF0aW9uIGN5Y2xlIGRldGVjdGVkISBcIiArIF9fc3ByZWFkKHBhdGgsIFtjdXJyZW50VG9rZW5dKS5qb2luKFwiIC0+IFwiKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhdGgucHVzaChjdXJyZW50VG9rZW4pO1xuICAgICAgICAgICAgICAgIHZhciByZWdpc3RyYXRpb24gPSB0aGlzLl9yZWdpc3RyeS5nZXQoY3VycmVudFRva2VuKTtcbiAgICAgICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uICYmIGlzVG9rZW5Qcm92aWRlcihyZWdpc3RyYXRpb24ucHJvdmlkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuUHJvdmlkZXIgPSByZWdpc3RyYXRpb24ucHJvdmlkZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b2tlblByb3ZpZGVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMubGlmZWN5Y2xlID09PSBMaWZlY3ljbGUuU2luZ2xldG9uIHx8XG4gICAgICAgICAgICBvcHRpb25zLmxpZmVjeWNsZSA9PSBMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkIHx8XG4gICAgICAgICAgICBvcHRpb25zLmxpZmVjeWNsZSA9PSBMaWZlY3ljbGUuUmVzb2x1dGlvblNjb3BlZCkge1xuICAgICAgICAgICAgaWYgKGlzVmFsdWVQcm92aWRlcihwcm92aWRlcikgfHwgaXNGYWN0b3J5UHJvdmlkZXIocHJvdmlkZXIpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHVzZSBsaWZlY3ljbGUgXFxcIlwiICsgTGlmZWN5Y2xlW29wdGlvbnMubGlmZWN5Y2xlXSArIFwiXFxcIiB3aXRoIFZhbHVlUHJvdmlkZXJzIG9yIEZhY3RvcnlQcm92aWRlcnNcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVnaXN0cnkuc2V0KHRva2VuLCB7IHByb3ZpZGVyOiBwcm92aWRlciwgb3B0aW9uczogb3B0aW9ucyB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIucHJvdG90eXBlLnJlZ2lzdGVyVHlwZSA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgICAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgICAgIGlmIChpc05vcm1hbFRva2VuKHRvKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0ZXIoZnJvbSwge1xuICAgICAgICAgICAgICAgIHVzZVRva2VuOiB0b1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0ZXIoZnJvbSwge1xuICAgICAgICAgICAgdXNlQ2xhc3M6IHRvXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgSW50ZXJuYWxEZXBlbmRlbmN5Q29udGFpbmVyLnByb3RvdHlwZS5yZWdpc3Rlckluc3RhbmNlID0gZnVuY3Rpb24gKHRva2VuLCBpbnN0YW5jZSkge1xuICAgICAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyKHRva2VuLCB7XG4gICAgICAgICAgICB1c2VWYWx1ZTogaW5zdGFuY2VcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIucHJvdG90eXBlLnJlZ2lzdGVyU2luZ2xldG9uID0gZnVuY3Rpb24gKGZyb20sIHRvKSB7XG4gICAgICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICAgICAgaWYgKGlzTm9ybWFsVG9rZW4oZnJvbSkpIHtcbiAgICAgICAgICAgIGlmIChpc05vcm1hbFRva2VuKHRvKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyKGZyb20sIHtcbiAgICAgICAgICAgICAgICAgICAgdXNlVG9rZW46IHRvXG4gICAgICAgICAgICAgICAgfSwgeyBsaWZlY3ljbGU6IExpZmVjeWNsZS5TaW5nbGV0b24gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0bykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyKGZyb20sIHtcbiAgICAgICAgICAgICAgICAgICAgdXNlQ2xhc3M6IHRvXG4gICAgICAgICAgICAgICAgfSwgeyBsaWZlY3ljbGU6IExpZmVjeWNsZS5TaW5nbGV0b24gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZWdpc3RlciBhIHR5cGUgbmFtZSBhcyBhIHNpbmdsZXRvbiB3aXRob3V0IGEgXCJ0b1wiIHRva2VuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHVzZUNsYXNzID0gZnJvbTtcbiAgICAgICAgaWYgKHRvICYmICFpc05vcm1hbFRva2VuKHRvKSkge1xuICAgICAgICAgICAgdXNlQ2xhc3MgPSB0bztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3Rlcihmcm9tLCB7XG4gICAgICAgICAgICB1c2VDbGFzczogdXNlQ2xhc3NcbiAgICAgICAgfSwgeyBsaWZlY3ljbGU6IExpZmVjeWNsZS5TaW5nbGV0b24gfSk7XG4gICAgfTtcbiAgICBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIucHJvdG90eXBlLnJlc29sdmUgPSBmdW5jdGlvbiAodG9rZW4sIGNvbnRleHQpIHtcbiAgICAgICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0gbmV3IFJlc29sdXRpb25Db250ZXh0KCk7IH1cbiAgICAgICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgICAgICB2YXIgcmVnaXN0cmF0aW9uID0gdGhpcy5nZXRSZWdpc3RyYXRpb24odG9rZW4pO1xuICAgICAgICBpZiAoIXJlZ2lzdHJhdGlvbiAmJiBpc05vcm1hbFRva2VuKHRva2VuKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGVkIHRvIHJlc29sdmUgdW5yZWdpc3RlcmVkIGRlcGVuZGVuY3kgdG9rZW46IFxcXCJcIiArIHRva2VuLnRvU3RyaW5nKCkgKyBcIlxcXCJcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5leGVjdXRlUHJlUmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCBcIlNpbmdsZVwiKTtcbiAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbikge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMucmVzb2x2ZVJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb24sIGNvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy5leGVjdXRlUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgcmVzdWx0LCBcIlNpbmdsZVwiKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ29uc3RydWN0b3JUb2tlbih0b2tlbikpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLmNvbnN0cnVjdCh0b2tlbiwgY29udGV4dCk7XG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVQb3N0UmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCByZXN1bHQsIFwiU2luZ2xlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRlbXB0ZWQgdG8gY29uc3RydWN0IGFuIHVuZGVmaW5lZCBjb25zdHJ1Y3Rvci4gQ291bGQgbWVhbiBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgcHJvYmxlbS4gVHJ5IHVzaW5nIGBkZWxheWAgZnVuY3Rpb24uXCIpO1xuICAgIH07XG4gICAgSW50ZXJuYWxEZXBlbmRlbmN5Q29udGFpbmVyLnByb3RvdHlwZS5leGVjdXRlUHJlUmVzb2x1dGlvbkludGVyY2VwdG9yID0gZnVuY3Rpb24gKHRva2VuLCByZXNvbHV0aW9uVHlwZSkge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgaWYgKHRoaXMuaW50ZXJjZXB0b3JzLnByZVJlc29sdXRpb24uaGFzKHRva2VuKSkge1xuICAgICAgICAgICAgdmFyIHJlbWFpbmluZ0ludGVyY2VwdG9ycyA9IFtdO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMuaW50ZXJjZXB0b3JzLnByZVJlc29sdXRpb24uZ2V0QWxsKHRva2VuKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGludGVyY2VwdG9yID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcmNlcHRvci5vcHRpb25zLmZyZXF1ZW5jeSAhPSBcIk9uY2VcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nSW50ZXJjZXB0b3JzLnB1c2goaW50ZXJjZXB0b3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGludGVyY2VwdG9yLmNhbGxiYWNrKHRva2VuLCByZXNvbHV0aW9uVHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbnRlcmNlcHRvcnMucHJlUmVzb2x1dGlvbi5zZXRBbGwodG9rZW4sIHJlbWFpbmluZ0ludGVyY2VwdG9ycyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lci5wcm90b3R5cGUuZXhlY3V0ZVBvc3RSZXNvbHV0aW9uSW50ZXJjZXB0b3IgPSBmdW5jdGlvbiAodG9rZW4sIHJlc3VsdCwgcmVzb2x1dGlvblR5cGUpIHtcbiAgICAgICAgdmFyIGVfMiwgX2E7XG4gICAgICAgIGlmICh0aGlzLmludGVyY2VwdG9ycy5wb3N0UmVzb2x1dGlvbi5oYXModG9rZW4pKSB7XG4gICAgICAgICAgICB2YXIgcmVtYWluaW5nSW50ZXJjZXB0b3JzID0gW107XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlc29sdXRpb24uZ2V0QWxsKHRva2VuKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGludGVyY2VwdG9yID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcmNlcHRvci5vcHRpb25zLmZyZXF1ZW5jeSAhPSBcIk9uY2VcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nSW50ZXJjZXB0b3JzLnB1c2goaW50ZXJjZXB0b3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGludGVyY2VwdG9yLmNhbGxiYWNrKHRva2VuLCByZXN1bHQsIHJlc29sdXRpb25UeXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmludGVyY2VwdG9ycy5wb3N0UmVzb2x1dGlvbi5zZXRBbGwodG9rZW4sIHJlbWFpbmluZ0ludGVyY2VwdG9ycyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lci5wcm90b3R5cGUucmVzb2x2ZVJlZ2lzdHJhdGlvbiA9IGZ1bmN0aW9uIChyZWdpc3RyYXRpb24sIGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgICAgICBpZiAocmVnaXN0cmF0aW9uLm9wdGlvbnMubGlmZWN5Y2xlID09PSBMaWZlY3ljbGUuUmVzb2x1dGlvblNjb3BlZCAmJlxuICAgICAgICAgICAgY29udGV4dC5zY29wZWRSZXNvbHV0aW9ucy5oYXMocmVnaXN0cmF0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuc2NvcGVkUmVzb2x1dGlvbnMuZ2V0KHJlZ2lzdHJhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlzU2luZ2xldG9uID0gcmVnaXN0cmF0aW9uLm9wdGlvbnMubGlmZWN5Y2xlID09PSBMaWZlY3ljbGUuU2luZ2xldG9uO1xuICAgICAgICB2YXIgaXNDb250YWluZXJTY29wZWQgPSByZWdpc3RyYXRpb24ub3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5Db250YWluZXJTY29wZWQ7XG4gICAgICAgIHZhciByZXR1cm5JbnN0YW5jZSA9IGlzU2luZ2xldG9uIHx8IGlzQ29udGFpbmVyU2NvcGVkO1xuICAgICAgICB2YXIgcmVzb2x2ZWQ7XG4gICAgICAgIGlmIChpc1ZhbHVlUHJvdmlkZXIocmVnaXN0cmF0aW9uLnByb3ZpZGVyKSkge1xuICAgICAgICAgICAgcmVzb2x2ZWQgPSByZWdpc3RyYXRpb24ucHJvdmlkZXIudXNlVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNUb2tlblByb3ZpZGVyKHJlZ2lzdHJhdGlvbi5wcm92aWRlcikpIHtcbiAgICAgICAgICAgIHJlc29sdmVkID0gcmV0dXJuSW5zdGFuY2VcbiAgICAgICAgICAgICAgICA/IHJlZ2lzdHJhdGlvbi5pbnN0YW5jZSB8fFxuICAgICAgICAgICAgICAgICAgICAocmVnaXN0cmF0aW9uLmluc3RhbmNlID0gdGhpcy5yZXNvbHZlKHJlZ2lzdHJhdGlvbi5wcm92aWRlci51c2VUb2tlbiwgY29udGV4dCkpXG4gICAgICAgICAgICAgICAgOiB0aGlzLnJlc29sdmUocmVnaXN0cmF0aW9uLnByb3ZpZGVyLnVzZVRva2VuLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0NsYXNzUHJvdmlkZXIocmVnaXN0cmF0aW9uLnByb3ZpZGVyKSkge1xuICAgICAgICAgICAgcmVzb2x2ZWQgPSByZXR1cm5JbnN0YW5jZVxuICAgICAgICAgICAgICAgID8gcmVnaXN0cmF0aW9uLmluc3RhbmNlIHx8XG4gICAgICAgICAgICAgICAgICAgIChyZWdpc3RyYXRpb24uaW5zdGFuY2UgPSB0aGlzLmNvbnN0cnVjdChyZWdpc3RyYXRpb24ucHJvdmlkZXIudXNlQ2xhc3MsIGNvbnRleHQpKVxuICAgICAgICAgICAgICAgIDogdGhpcy5jb25zdHJ1Y3QocmVnaXN0cmF0aW9uLnByb3ZpZGVyLnVzZUNsYXNzLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0ZhY3RvcnlQcm92aWRlcihyZWdpc3RyYXRpb24ucHJvdmlkZXIpKSB7XG4gICAgICAgICAgICByZXNvbHZlZCA9IHJlZ2lzdHJhdGlvbi5wcm92aWRlci51c2VGYWN0b3J5KHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZWQgPSB0aGlzLmNvbnN0cnVjdChyZWdpc3RyYXRpb24ucHJvdmlkZXIsIGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWdpc3RyYXRpb24ub3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5SZXNvbHV0aW9uU2NvcGVkKSB7XG4gICAgICAgICAgICBjb250ZXh0LnNjb3BlZFJlc29sdXRpb25zLnNldChyZWdpc3RyYXRpb24sIHJlc29sdmVkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gICAgfTtcbiAgICBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIucHJvdG90eXBlLnJlc29sdmVBbGwgPSBmdW5jdGlvbiAodG9rZW4sIGNvbnRleHQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0gbmV3IFJlc29sdXRpb25Db250ZXh0KCk7IH1cbiAgICAgICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgICAgICB2YXIgcmVnaXN0cmF0aW9ucyA9IHRoaXMuZ2V0QWxsUmVnaXN0cmF0aW9ucyh0b2tlbik7XG4gICAgICAgIGlmICghcmVnaXN0cmF0aW9ucyAmJiBpc05vcm1hbFRva2VuKHRva2VuKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGVkIHRvIHJlc29sdmUgdW5yZWdpc3RlcmVkIGRlcGVuZGVuY3kgdG9rZW46IFxcXCJcIiArIHRva2VuLnRvU3RyaW5nKCkgKyBcIlxcXCJcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5leGVjdXRlUHJlUmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCBcIkFsbFwiKTtcbiAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbnMpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRfMSA9IHJlZ2lzdHJhdGlvbnMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnJlc29sdmVSZWdpc3RyYXRpb24oaXRlbSwgY29udGV4dCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZVBvc3RSZXNvbHV0aW9uSW50ZXJjZXB0b3IodG9rZW4sIHJlc3VsdF8xLCBcIkFsbFwiKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRfMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzdWx0ID0gW3RoaXMuY29uc3RydWN0KHRva2VuLCBjb250ZXh0KV07XG4gICAgICAgIHRoaXMuZXhlY3V0ZVBvc3RSZXNvbHV0aW9uSW50ZXJjZXB0b3IodG9rZW4sIHJlc3VsdCwgXCJBbGxcIik7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIucHJvdG90eXBlLmlzUmVnaXN0ZXJlZCA9IGZ1bmN0aW9uICh0b2tlbiwgcmVjdXJzaXZlKSB7XG4gICAgICAgIGlmIChyZWN1cnNpdmUgPT09IHZvaWQgMCkgeyByZWN1cnNpdmUgPSBmYWxzZTsgfVxuICAgICAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgICAgIHJldHVybiAodGhpcy5fcmVnaXN0cnkuaGFzKHRva2VuKSB8fFxuICAgICAgICAgICAgKHJlY3Vyc2l2ZSAmJlxuICAgICAgICAgICAgICAgICh0aGlzLnBhcmVudCB8fCBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5pc1JlZ2lzdGVyZWQodG9rZW4sIHRydWUpKSk7XG4gICAgfTtcbiAgICBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgICAgIHRoaXMuX3JlZ2lzdHJ5LmNsZWFyKCk7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0b3JzLnByZVJlc29sdXRpb24uY2xlYXIoKTtcbiAgICAgICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlc29sdXRpb24uY2xlYXIoKTtcbiAgICB9O1xuICAgIEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lci5wcm90b3R5cGUuY2xlYXJJbnN0YW5jZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzMsIF9hO1xuICAgICAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMuX3JlZ2lzdHJ5LmVudHJpZXMoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDIpLCB0b2tlbiA9IF9kWzBdLCByZWdpc3RyYXRpb25zID0gX2RbMV07XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVnaXN0cnkuc2V0QWxsKHRva2VuLCByZWdpc3RyYXRpb25zXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHJlZ2lzdHJhdGlvbikgeyByZXR1cm4gIWlzVmFsdWVQcm92aWRlcihyZWdpc3RyYXRpb24ucHJvdmlkZXIpOyB9KVxuICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChyZWdpc3RyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uLmluc3RhbmNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVnaXN0cmF0aW9uO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8zXzEpIHsgZV8zID0geyBlcnJvcjogZV8zXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzMpIHRocm93IGVfMy5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIucHJvdG90eXBlLmNyZWF0ZUNoaWxkQ29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZV80LCBfYTtcbiAgICAgICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgICAgICB2YXIgY2hpbGRDb250YWluZXIgPSBuZXcgSW50ZXJuYWxEZXBlbmRlbmN5Q29udGFpbmVyKHRoaXMpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLl9yZWdpc3RyeS5lbnRyaWVzKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAyKSwgdG9rZW4gPSBfZFswXSwgcmVnaXN0cmF0aW9ucyA9IF9kWzFdO1xuICAgICAgICAgICAgICAgIGlmIChyZWdpc3RyYXRpb25zLnNvbWUoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcHRpb25zID0gX2Eub3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMubGlmZWN5Y2xlID09PSBMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkO1xuICAgICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkQ29udGFpbmVyLl9yZWdpc3RyeS5zZXRBbGwodG9rZW4sIHJlZ2lzdHJhdGlvbnMubWFwKGZ1bmN0aW9uIChyZWdpc3RyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWdpc3RyYXRpb24ub3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcjogcmVnaXN0cmF0aW9uLnByb3ZpZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiByZWdpc3RyYXRpb24ub3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVnaXN0cmF0aW9uO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzRfMSkgeyBlXzQgPSB7IGVycm9yOiBlXzRfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNCkgdGhyb3cgZV80LmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoaWxkQ29udGFpbmVyO1xuICAgIH07XG4gICAgSW50ZXJuYWxEZXBlbmRlbmN5Q29udGFpbmVyLnByb3RvdHlwZS5iZWZvcmVSZXNvbHV0aW9uID0gZnVuY3Rpb24gKHRva2VuLCBjYWxsYmFjaywgb3B0aW9ucykge1xuICAgICAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7IGZyZXF1ZW5jeTogXCJBbHdheXNcIiB9OyB9XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0b3JzLnByZVJlc29sdXRpb24uc2V0KHRva2VuLCB7XG4gICAgICAgICAgICBjYWxsYmFjazogY2FsbGJhY2ssXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgSW50ZXJuYWxEZXBlbmRlbmN5Q29udGFpbmVyLnByb3RvdHlwZS5hZnRlclJlc29sdXRpb24gPSBmdW5jdGlvbiAodG9rZW4sIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHsgZnJlcXVlbmN5OiBcIkFsd2F5c1wiIH07IH1cbiAgICAgICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlc29sdXRpb24uc2V0KHRva2VuLCB7XG4gICAgICAgICAgICBjYWxsYmFjazogY2FsbGJhY2ssXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgSW50ZXJuYWxEZXBlbmRlbmN5Q29udGFpbmVyLnByb3RvdHlwZS5kaXNwb3NlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcHJvbWlzZXM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3Bvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3Bvc2FibGVzLmZvckVhY2goZnVuY3Rpb24gKGRpc3Bvc2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWF5YmVQcm9taXNlID0gZGlzcG9zYWJsZS5kaXNwb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1heWJlUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKG1heWJlUHJvbWlzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQsIFByb21pc2UuYWxsKHByb21pc2VzKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgSW50ZXJuYWxEZXBlbmRlbmN5Q29udGFpbmVyLnByb3RvdHlwZS5nZXRSZWdpc3RyYXRpb24gPSBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWdpc3RlcmVkKHRva2VuKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5LmdldCh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0UmVnaXN0cmF0aW9uKHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lci5wcm90b3R5cGUuZ2V0QWxsUmVnaXN0cmF0aW9ucyA9IGZ1bmN0aW9uICh0b2tlbikge1xuICAgICAgICBpZiAodGhpcy5pc1JlZ2lzdGVyZWQodG9rZW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnkuZ2V0QWxsKHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRBbGxSZWdpc3RyYXRpb25zKHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lci5wcm90b3R5cGUuY29uc3RydWN0ID0gZnVuY3Rpb24gKGN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGN0b3IgaW5zdGFuY2VvZiBEZWxheWVkQ29uc3RydWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBjdG9yLmNyZWF0ZVByb3h5KGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMucmVzb2x2ZSh0YXJnZXQsIGNvbnRleHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGluc3RhbmNlID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwYXJhbUluZm8gPSB0eXBlSW5mby5nZXQoY3Rvcik7XG4gICAgICAgICAgICBpZiAoIXBhcmFtSW5mbyB8fCBwYXJhbUluZm8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN0b3IubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgY3RvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVHlwZUluZm8gbm90IGtub3duIGZvciBcXFwiXCIgKyBjdG9yLm5hbWUgKyBcIlxcXCJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IHBhcmFtSW5mby5tYXAoX3RoaXMucmVzb2x2ZVBhcmFtcyhjb250ZXh0LCBjdG9yKSk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IChjdG9yLmJpbmQuYXBwbHkoY3RvciwgX19zcHJlYWQoW3ZvaWQgMF0sIHBhcmFtcykpKSgpO1xuICAgICAgICB9KSgpO1xuICAgICAgICBpZiAoaXNEaXNwb3NhYmxlKGluc3RhbmNlKSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQoaW5zdGFuY2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9O1xuICAgIEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lci5wcm90b3R5cGUucmVzb2x2ZVBhcmFtcyA9IGZ1bmN0aW9uIChjb250ZXh0LCBjdG9yKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIGlkeCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChpc1Rva2VuRGVzY3JpcHRvcihwYXJhbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVHJhbnNmb3JtRGVzY3JpcHRvcihwYXJhbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbS5tdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKF9hID0gX3RoaXMucmVzb2x2ZShwYXJhbS50cmFuc2Zvcm0pKS50cmFuc2Zvcm0uYXBwbHkoX2EsIF9fc3ByZWFkKFtfdGhpcy5yZXNvbHZlQWxsKHBhcmFtLnRva2VuKV0sIHBhcmFtLnRyYW5zZm9ybUFyZ3MpKSA6IChfYiA9IF90aGlzLnJlc29sdmUocGFyYW0udHJhbnNmb3JtKSkudHJhbnNmb3JtLmFwcGx5KF9iLCBfX3NwcmVhZChbX3RoaXMucmVzb2x2ZShwYXJhbS50b2tlbiwgY29udGV4dCldLCBwYXJhbS50cmFuc2Zvcm1BcmdzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW0ubXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF90aGlzLnJlc29sdmVBbGwocGFyYW0udG9rZW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGhpcy5yZXNvbHZlKHBhcmFtLnRva2VuLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc1RyYW5zZm9ybURlc2NyaXB0b3IocGFyYW0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2MgPSBfdGhpcy5yZXNvbHZlKHBhcmFtLnRyYW5zZm9ybSwgY29udGV4dCkpLnRyYW5zZm9ybS5hcHBseShfYywgX19zcHJlYWQoW190aGlzLnJlc29sdmUocGFyYW0udG9rZW4sIGNvbnRleHQpXSwgcGFyYW0udHJhbnNmb3JtQXJncykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMucmVzb2x2ZShwYXJhbSwgY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXRFcnJvckN0b3IoY3RvciwgaWR4LCBlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIucHJvdG90eXBlLmVuc3VyZU5vdERpc3Bvc2VkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNwb3NlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBjb250YWluZXIgaGFzIGJlZW4gZGlzcG9zZWQsIHlvdSBjYW5ub3QgaW50ZXJhY3Qgd2l0aCBhIGRpc3Bvc2VkIGNvbnRhaW5lclwiKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lcjtcbn0oKSk7XG5leHBvcnQgdmFyIGluc3RhbmNlID0gbmV3IEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lcigpO1xuZXhwb3J0IGRlZmF1bHQgaW5zdGFuY2U7XG4iLCJpbXBvcnQgeyBfX2V4dGVuZHMsIF9fcmVhZCwgX19zcHJlYWQgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGdldFBhcmFtSW5mbyB9IGZyb20gXCIuLi9yZWZsZWN0aW9uLWhlbHBlcnNcIjtcbmltcG9ydCB7IGluc3RhbmNlIGFzIGdsb2JhbENvbnRhaW5lciB9IGZyb20gXCIuLi9kZXBlbmRlbmN5LWNvbnRhaW5lclwiO1xuaW1wb3J0IHsgaXNUb2tlbkRlc2NyaXB0b3IsIGlzVHJhbnNmb3JtRGVzY3JpcHRvciB9IGZyb20gXCIuLi9wcm92aWRlcnMvaW5qZWN0aW9uLXRva2VuXCI7XG5pbXBvcnQgeyBmb3JtYXRFcnJvckN0b3IgfSBmcm9tIFwiLi4vZXJyb3ItaGVscGVyc1wiO1xuZnVuY3Rpb24gYXV0b0luamVjdGFibGUoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgdmFyIHBhcmFtSW5mbyA9IGdldFBhcmFtSW5mbyh0YXJnZXQpO1xuICAgICAgICByZXR1cm4gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICAgICAgICAgIF9fZXh0ZW5kcyhjbGFzc18xLCBfc3VwZXIpO1xuICAgICAgICAgICAgZnVuY3Rpb24gY2xhc3NfMSgpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBfX3NwcmVhZChhcmdzLmNvbmNhdChwYXJhbUluZm8uc2xpY2UoYXJncy5sZW5ndGgpLm1hcChmdW5jdGlvbiAodHlwZSwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNUb2tlbkRlc2NyaXB0b3IodHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1EZXNjcmlwdG9yKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlLm11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChfYSA9IGdsb2JhbENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXNvbHZlKHR5cGUudHJhbnNmb3JtKSkudHJhbnNmb3JtLmFwcGx5KF9hLCBfX3NwcmVhZChbZ2xvYmFsQ29udGFpbmVyLnJlc29sdmVBbGwodHlwZS50b2tlbildLCB0eXBlLnRyYW5zZm9ybUFyZ3MpKSA6IChfYiA9IGdsb2JhbENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlc29sdmUodHlwZS50cmFuc2Zvcm0pKS50cmFuc2Zvcm0uYXBwbHkoX2IsIF9fc3ByZWFkKFtnbG9iYWxDb250YWluZXIucmVzb2x2ZSh0eXBlLnRva2VuKV0sIHR5cGUudHJhbnNmb3JtQXJncykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUubXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2xvYmFsQ29udGFpbmVyLnJlc29sdmVBbGwodHlwZS50b2tlbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2xvYmFsQ29udGFpbmVyLnJlc29sdmUodHlwZS50b2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNUcmFuc2Zvcm1EZXNjcmlwdG9yKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfYyA9IGdsb2JhbENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVzb2x2ZSh0eXBlLnRyYW5zZm9ybSkpLnRyYW5zZm9ybS5hcHBseShfYywgX19zcHJlYWQoW2dsb2JhbENvbnRhaW5lci5yZXNvbHZlKHR5cGUudG9rZW4pXSwgdHlwZS50cmFuc2Zvcm1BcmdzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsQ29udGFpbmVyLnJlc29sdmUodHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhcmdJbmRleCA9IGluZGV4ICsgYXJncy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZm9ybWF0RXJyb3JDdG9yKHRhcmdldCwgYXJnSW5kZXgsIGUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pKSkpIHx8IHRoaXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2xhc3NfMTtcbiAgICAgICAgfSh0YXJnZXQpKTtcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgYXV0b0luamVjdGFibGU7XG4iLCJpbXBvcnQgeyBnZXRQYXJhbUluZm8gfSBmcm9tIFwiLi4vcmVmbGVjdGlvbi1oZWxwZXJzXCI7XG5pbXBvcnQgeyB0eXBlSW5mbyB9IGZyb20gXCIuLi9kZXBlbmRlbmN5LWNvbnRhaW5lclwiO1xuZnVuY3Rpb24gaW5qZWN0YWJsZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICB0eXBlSW5mby5zZXQodGFyZ2V0LCBnZXRQYXJhbUluZm8odGFyZ2V0KSk7XG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IGluamVjdGFibGU7XG4iLCJpbXBvcnQgaW5qZWN0YWJsZSBmcm9tIFwiLi9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBpbnN0YW5jZSBhcyBnbG9iYWxDb250YWluZXIgfSBmcm9tIFwiLi4vZGVwZW5kZW5jeS1jb250YWluZXJcIjtcbmZ1bmN0aW9uIHNpbmdsZXRvbigpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICBpbmplY3RhYmxlKCkodGFyZ2V0KTtcbiAgICAgICAgZ2xvYmFsQ29udGFpbmVyLnJlZ2lzdGVyU2luZ2xldG9uKHRhcmdldCk7XG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IHNpbmdsZXRvbjtcbiIsImlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5nZXRNZXRhZGF0YSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInRzeXJpbmdlIHJlcXVpcmVzIGEgcmVmbGVjdCBwb2x5ZmlsbC4gUGxlYXNlIGFkZCAnaW1wb3J0IFxcXCJyZWZsZWN0LW1ldGFkYXRhXFxcIicgdG8gdGhlIHRvcCBvZiB5b3VyIGVudHJ5IHBvaW50LlwiKTtcbn1cbmV4cG9ydCB7IExpZmVjeWNsZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mYWN0b3JpZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3ZpZGVyc1wiO1xuZXhwb3J0IHsgZGVsYXkgfSBmcm9tIFwiLi9sYXp5LWhlbHBlcnNcIjtcbmV4cG9ydCB7IGluc3RhbmNlIGFzIGNvbnRhaW5lciB9IGZyb20gXCIuL2RlcGVuZGVuY3ktY29udGFpbmVyXCI7XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCJcbmltcG9ydCB7c2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2VcIlxuXG5Ac2luZ2xldG9uKClcbmV4cG9ydCBjbGFzcyBUb2tlbiB7XG4gICAgcHVibGljIGN1cnJlbnRUb2tlbjpTdHJpbmdcblxuICAgIGluaXQoKSB7XG4gICAgICAgIHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuKClcbiAgICAgICAgfSwgMio2MCoxMDAwKVxuICAgIH1cbiAgICByZWZyZXNoVG9rZW4oKTogdm9pZCB7XG4gICAgICAgIGF4aW9zLmdldCgnL2FwcHMvYXBpL2NvbnRhY3QvcmVmcmVzaCcsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMuY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gcmVzcG9uc2UuZGF0YS50b2tlblxuICAgICAgICB9KVxuICAgIH1cbn1cbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHNjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7ZnVuY3Rpb24gZihhLGIpe3ZhciBjPWEubGVuZ3RoO2EucHVzaChiKTthOmZvcig7MDxjOyl7dmFyIGQ9Yy0xPj4+MSxlPWFbZF07aWYoMDxnKGUsYikpYVtkXT1iLGFbY109ZSxjPWQ7ZWxzZSBicmVhayBhfX1mdW5jdGlvbiBoKGEpe3JldHVybiAwPT09YS5sZW5ndGg/bnVsbDphWzBdfWZ1bmN0aW9uIGsoYSl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3ZhciBiPWFbMF0sYz1hLnBvcCgpO2lmKGMhPT1iKXthWzBdPWM7YTpmb3IodmFyIGQ9MCxlPWEubGVuZ3RoLHc9ZT4+PjE7ZDx3Oyl7dmFyIG09MiooZCsxKS0xLEM9YVttXSxuPW0rMSx4PWFbbl07aWYoMD5nKEMsYykpbjxlJiYwPmcoeCxDKT8oYVtkXT14LGFbbl09YyxkPW4pOihhW2RdPUMsYVttXT1jLGQ9bSk7ZWxzZSBpZihuPGUmJjA+Zyh4LGMpKWFbZF09eCxhW25dPWMsZD1uO2Vsc2UgYnJlYWsgYX19cmV0dXJuIGJ9XG5mdW5jdGlvbiBnKGEsYil7dmFyIGM9YS5zb3J0SW5kZXgtYi5zb3J0SW5kZXg7cmV0dXJuIDAhPT1jP2M6YS5pZC1iLmlkfWlmKFwib2JqZWN0XCI9PT10eXBlb2YgcGVyZm9ybWFuY2UmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe3ZhciBsPXBlcmZvcm1hbmNlO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGwubm93KCl9fWVsc2V7dmFyIHA9RGF0ZSxxPXAubm93KCk7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gcC5ub3coKS1xfX12YXIgcj1bXSx0PVtdLHU9MSx2PW51bGwseT0zLHo9ITEsQT0hMSxCPSExLEQ9XCJmdW5jdGlvblwiPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpudWxsLEU9XCJmdW5jdGlvblwiPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6bnVsbCxGPVwidW5kZWZpbmVkXCIhPT10eXBlb2Ygc2V0SW1tZWRpYXRlP3NldEltbWVkaWF0ZTpudWxsO1xuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBuYXZpZ2F0b3ImJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZyYmbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcuYmluZChuYXZpZ2F0b3Iuc2NoZWR1bGluZyk7ZnVuY3Rpb24gRyhhKXtmb3IodmFyIGI9aCh0KTtudWxsIT09Yjspe2lmKG51bGw9PT1iLmNhbGxiYWNrKWsodCk7ZWxzZSBpZihiLnN0YXJ0VGltZTw9YSlrKHQpLGIuc29ydEluZGV4PWIuZXhwaXJhdGlvblRpbWUsZihyLGIpO2Vsc2UgYnJlYWs7Yj1oKHQpfX1mdW5jdGlvbiBIKGEpe0I9ITE7RyhhKTtpZighQSlpZihudWxsIT09aChyKSlBPSEwLEkoSik7ZWxzZXt2YXIgYj1oKHQpO251bGwhPT1iJiZLKEgsYi5zdGFydFRpbWUtYSl9fVxuZnVuY3Rpb24gSihhLGIpe0E9ITE7QiYmKEI9ITEsRShMKSxMPS0xKTt6PSEwO3ZhciBjPXk7dHJ5e0coYik7Zm9yKHY9aChyKTtudWxsIT09diYmKCEodi5leHBpcmF0aW9uVGltZT5iKXx8YSYmIU0oKSk7KXt2YXIgZD12LmNhbGxiYWNrO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2LmNhbGxiYWNrPW51bGw7eT12LnByaW9yaXR5TGV2ZWw7dmFyIGU9ZCh2LmV4cGlyYXRpb25UaW1lPD1iKTtiPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGU/di5jYWxsYmFjaz1lOnY9PT1oKHIpJiZrKHIpO0coYil9ZWxzZSBrKHIpO3Y9aChyKX1pZihudWxsIT09dil2YXIgdz0hMDtlbHNle3ZhciBtPWgodCk7bnVsbCE9PW0mJksoSCxtLnN0YXJ0VGltZS1iKTt3PSExfXJldHVybiB3fWZpbmFsbHl7dj1udWxsLHk9Yyx6PSExfX12YXIgTj0hMSxPPW51bGwsTD0tMSxQPTUsUT0tMTtcbmZ1bmN0aW9uIE0oKXtyZXR1cm4gZXhwb3J0cy51bnN0YWJsZV9ub3coKS1RPFA/ITE6ITB9ZnVuY3Rpb24gUigpe2lmKG51bGwhPT1PKXt2YXIgYT1leHBvcnRzLnVuc3RhYmxlX25vdygpO1E9YTt2YXIgYj0hMDt0cnl7Yj1PKCEwLGEpfWZpbmFsbHl7Yj9TKCk6KE49ITEsTz1udWxsKX19ZWxzZSBOPSExfXZhciBTO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBGKVM9ZnVuY3Rpb24oKXtGKFIpfTtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBUPW5ldyBNZXNzYWdlQ2hhbm5lbCxVPVQucG9ydDI7VC5wb3J0MS5vbm1lc3NhZ2U9UjtTPWZ1bmN0aW9uKCl7VS5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSBTPWZ1bmN0aW9uKCl7RChSLDApfTtmdW5jdGlvbiBJKGEpe089YTtOfHwoTj0hMCxTKCkpfWZ1bmN0aW9uIEsoYSxiKXtMPUQoZnVuY3Rpb24oKXthKGV4cG9ydHMudW5zdGFibGVfbm93KCkpfSxiKX1cbmV4cG9ydHMudW5zdGFibGVfSWRsZVByaW9yaXR5PTU7ZXhwb3J0cy51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xO2V4cG9ydHMudW5zdGFibGVfTG93UHJpb3JpdHk9NDtleHBvcnRzLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTM7ZXhwb3J0cy51bnN0YWJsZV9Qcm9maWxpbmc9bnVsbDtleHBvcnRzLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTI7ZXhwb3J0cy51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihhKXthLmNhbGxiYWNrPW51bGx9O2V4cG9ydHMudW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtBfHx6fHwoQT0hMCxJKEopKX07XG5leHBvcnRzLnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPWZ1bmN0aW9uKGEpezA+YXx8MTI1PGE/Y29uc29sZS5lcnJvcihcImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZFwiKTpQPTA8YT9NYXRoLmZsb29yKDFFMy9hKTo1fTtleHBvcnRzLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHl9O2V4cG9ydHMudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gaChyKX07ZXhwb3J0cy51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGEpe3N3aXRjaCh5KXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgYj0zO2JyZWFrO2RlZmF1bHQ6Yj15fXZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYSgpfWZpbmFsbHl7eT1jfX07ZXhwb3J0cy51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe307XG5leHBvcnRzLnVuc3RhYmxlX3JlcXVlc3RQYWludD1mdW5jdGlvbigpe307ZXhwb3J0cy51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OmE9M312YXIgYz15O3k9YTt0cnl7cmV0dXJuIGIoKX1maW5hbGx5e3k9Y319O1xuZXhwb3J0cy51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1leHBvcnRzLnVuc3RhYmxlX25vdygpO1wib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWM/KGM9Yy5kZWxheSxjPVwibnVtYmVyXCI9PT10eXBlb2YgYyYmMDxjP2QrYzpkKTpjPWQ7c3dpdGNoKGEpe2Nhc2UgMTp2YXIgZT0tMTticmVhaztjYXNlIDI6ZT0yNTA7YnJlYWs7Y2FzZSA1OmU9MTA3Mzc0MTgyMzticmVhaztjYXNlIDQ6ZT0xRTQ7YnJlYWs7ZGVmYXVsdDplPTVFM31lPWMrZTthPXtpZDp1KyssY2FsbGJhY2s6Yixwcmlvcml0eUxldmVsOmEsc3RhcnRUaW1lOmMsZXhwaXJhdGlvblRpbWU6ZSxzb3J0SW5kZXg6LTF9O2M+ZD8oYS5zb3J0SW5kZXg9YyxmKHQsYSksbnVsbD09PWgocikmJmE9PT1oKHQpJiYoQj8oRShMKSxMPS0xKTpCPSEwLEsoSCxjLWQpKSk6KGEuc29ydEluZGV4PWUsZihyLGEpLEF8fHp8fChBPSEwLEkoSikpKTtyZXR1cm4gYX07XG5leHBvcnRzLnVuc3RhYmxlX3Nob3VsZFlpZWxkPU07ZXhwb3J0cy51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7dmFyIGI9eTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz15O3k9Yjt0cnl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7eT1jfX19O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4vKlxuIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVFxuKi9cbid1c2Ugc3RyaWN0Jzt2YXIgYWE9cmVxdWlyZShcInJlYWN0XCIpLGNhPXJlcXVpcmUoXCJzY2hlZHVsZXJcIik7ZnVuY3Rpb24gcChhKXtmb3IodmFyIGI9XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIithLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWIrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKTtyZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIithK1wiOyB2aXNpdCBcIitiK1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn12YXIgZGE9bmV3IFNldCxlYT17fTtmdW5jdGlvbiBmYShhLGIpe2hhKGEsYik7aGEoYStcIkNhcHR1cmVcIixiKX1cbmZ1bmN0aW9uIGhhKGEsYil7ZWFbYV09Yjtmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKWRhLmFkZChiW2FdKX1cbnZhciBpYT0hKFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93fHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudHx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksamE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxrYT0vXls6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRF1bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MF0qJC8sbGE9XG57fSxtYT17fTtmdW5jdGlvbiBvYShhKXtpZihqYS5jYWxsKG1hLGEpKXJldHVybiEwO2lmKGphLmNhbGwobGEsYSkpcmV0dXJuITE7aWYoa2EudGVzdChhKSlyZXR1cm4gbWFbYV09ITA7bGFbYV09ITA7cmV0dXJuITF9ZnVuY3Rpb24gcGEoYSxiLGMsZCl7aWYobnVsbCE9PWMmJjA9PT1jLnR5cGUpcmV0dXJuITE7c3dpdGNoKHR5cGVvZiBiKXtjYXNlIFwiZnVuY3Rpb25cIjpjYXNlIFwic3ltYm9sXCI6cmV0dXJuITA7Y2FzZSBcImJvb2xlYW5cIjppZihkKXJldHVybiExO2lmKG51bGwhPT1jKXJldHVybiFjLmFjY2VwdHNCb29sZWFuczthPWEudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpO3JldHVyblwiZGF0YS1cIiE9PWEmJlwiYXJpYS1cIiE9PWE7ZGVmYXVsdDpyZXR1cm4hMX19XG5mdW5jdGlvbiBxYShhLGIsYyxkKXtpZihudWxsPT09Ynx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBifHxwYShhLGIsYyxkKSlyZXR1cm4hMDtpZihkKXJldHVybiExO2lmKG51bGwhPT1jKXN3aXRjaChjLnR5cGUpe2Nhc2UgMzpyZXR1cm4hYjtjYXNlIDQ6cmV0dXJuITE9PT1iO2Nhc2UgNTpyZXR1cm4gaXNOYU4oYik7Y2FzZSA2OnJldHVybiBpc05hTihiKXx8MT5ifXJldHVybiExfWZ1bmN0aW9uIHYoYSxiLGMsZCxlLGYsZyl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PWJ8fDM9PT1ifHw0PT09Yjt0aGlzLmF0dHJpYnV0ZU5hbWU9ZDt0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1lO3RoaXMubXVzdFVzZVByb3BlcnR5PWM7dGhpcy5wcm9wZXJ0eU5hbWU9YTt0aGlzLnR5cGU9Yjt0aGlzLnNhbml0aXplVVJMPWY7dGhpcy5yZW1vdmVFbXB0eVN0cmluZz1nfXZhciB6PXt9O1xuXCJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMCwhMSxhLG51bGwsITEsITEpfSk7W1tcImFjY2VwdENoYXJzZXRcIixcImFjY2VwdC1jaGFyc2V0XCJdLFtcImNsYXNzTmFtZVwiLFwiY2xhc3NcIl0sW1wiaHRtbEZvclwiLFwiZm9yXCJdLFtcImh0dHBFcXVpdlwiLFwiaHR0cC1lcXVpdlwiXV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hWzBdO3pbYl09bmV3IHYoYiwxLCExLGFbMV0sbnVsbCwhMSwhMSl9KTtbXCJjb250ZW50RWRpdGFibGVcIixcImRyYWdnYWJsZVwiLFwic3BlbGxDaGVja1wiLFwidmFsdWVcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMiwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbltcImF1dG9SZXZlcnNlXCIsXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCIsXCJmb2N1c2FibGVcIixcInByZXNlcnZlQWxwaGFcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMiwhMSxhLG51bGwsITEsITEpfSk7XCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDMsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG5bXCJjaGVja2VkXCIsXCJtdWx0aXBsZVwiLFwibXV0ZWRcIixcInNlbGVjdGVkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDMsITAsYSxudWxsLCExLCExKX0pO1tcImNhcHR1cmVcIixcImRvd25sb2FkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDQsITEsYSxudWxsLCExLCExKX0pO1tcImNvbHNcIixcInJvd3NcIixcInNpemVcIixcInNwYW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNiwhMSxhLG51bGwsITEsITEpfSk7W1wicm93U3BhblwiLFwic3RhcnRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTt2YXIgcmE9L1tcXC06XShbYS16XSkvZztmdW5jdGlvbiBzYShhKXtyZXR1cm4gYVsxXS50b1VwcGVyQ2FzZSgpfVxuXCJhY2NlbnQtaGVpZ2h0IGFsaWdubWVudC1iYXNlbGluZSBhcmFiaWMtZm9ybSBiYXNlbGluZS1zaGlmdCBjYXAtaGVpZ2h0IGNsaXAtcGF0aCBjbGlwLXJ1bGUgY29sb3ItaW50ZXJwb2xhdGlvbiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMgY29sb3ItcHJvZmlsZSBjb2xvci1yZW5kZXJpbmcgZG9taW5hbnQtYmFzZWxpbmUgZW5hYmxlLWJhY2tncm91bmQgZmlsbC1vcGFjaXR5IGZpbGwtcnVsZSBmbG9vZC1jb2xvciBmbG9vZC1vcGFjaXR5IGZvbnQtZmFtaWx5IGZvbnQtc2l6ZSBmb250LXNpemUtYWRqdXN0IGZvbnQtc3RyZXRjaCBmb250LXN0eWxlIGZvbnQtdmFyaWFudCBmb250LXdlaWdodCBnbHlwaC1uYW1lIGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwgZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwgaG9yaXotYWR2LXggaG9yaXotb3JpZ2luLXggaW1hZ2UtcmVuZGVyaW5nIGxldHRlci1zcGFjaW5nIGxpZ2h0aW5nLWNvbG9yIG1hcmtlci1lbmQgbWFya2VyLW1pZCBtYXJrZXItc3RhcnQgb3ZlcmxpbmUtcG9zaXRpb24gb3ZlcmxpbmUtdGhpY2tuZXNzIHBhaW50LW9yZGVyIHBhbm9zZS0xIHBvaW50ZXItZXZlbnRzIHJlbmRlcmluZy1pbnRlbnQgc2hhcGUtcmVuZGVyaW5nIHN0b3AtY29sb3Igc3RvcC1vcGFjaXR5IHN0cmlrZXRocm91Z2gtcG9zaXRpb24gc3RyaWtldGhyb3VnaC10aGlja25lc3Mgc3Ryb2tlLWRhc2hhcnJheSBzdHJva2UtZGFzaG9mZnNldCBzdHJva2UtbGluZWNhcCBzdHJva2UtbGluZWpvaW4gc3Ryb2tlLW1pdGVybGltaXQgc3Ryb2tlLW9wYWNpdHkgc3Ryb2tlLXdpZHRoIHRleHQtYW5jaG9yIHRleHQtZGVjb3JhdGlvbiB0ZXh0LXJlbmRlcmluZyB1bmRlcmxpbmUtcG9zaXRpb24gdW5kZXJsaW5lLXRoaWNrbmVzcyB1bmljb2RlLWJpZGkgdW5pY29kZS1yYW5nZSB1bml0cy1wZXItZW0gdi1hbHBoYWJldGljIHYtaGFuZ2luZyB2LWlkZW9ncmFwaGljIHYtbWF0aGVtYXRpY2FsIHZlY3Rvci1lZmZlY3QgdmVydC1hZHYteSB2ZXJ0LW9yaWdpbi14IHZlcnQtb3JpZ2luLXkgd29yZC1zcGFjaW5nIHdyaXRpbmctbW9kZSB4bWxuczp4bGluayB4LWhlaWdodFwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxcbnNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLG51bGwsITEsITEpfSk7XCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITEsITEpfSk7W1wieG1sOmJhc2VcIixcInhtbDpsYW5nXCIsXCJ4bWw6c3BhY2VcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIiwhMSwhMSl9KTtbXCJ0YWJJbmRleFwiLFwiY3Jvc3NPcmlnaW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbnoueGxpbmtIcmVmPW5ldyB2KFwieGxpbmtIcmVmXCIsMSwhMSxcInhsaW5rOmhyZWZcIixcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMCwhMSk7W1wic3JjXCIsXCJocmVmXCIsXCJhY3Rpb25cIixcImZvcm1BY3Rpb25cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMCwhMCl9KTtcbmZ1bmN0aW9uIHRhKGEsYixjLGQpe3ZhciBlPXouaGFzT3duUHJvcGVydHkoYik/eltiXTpudWxsO2lmKG51bGwhPT1lPzAhPT1lLnR5cGU6ZHx8ISgyPGIubGVuZ3RoKXx8XCJvXCIhPT1iWzBdJiZcIk9cIiE9PWJbMF18fFwiblwiIT09YlsxXSYmXCJOXCIhPT1iWzFdKXFhKGIsYyxlLGQpJiYoYz1udWxsKSxkfHxudWxsPT09ZT9vYShiKSYmKG51bGw9PT1jP2EucmVtb3ZlQXR0cmlidXRlKGIpOmEuc2V0QXR0cmlidXRlKGIsXCJcIitjKSk6ZS5tdXN0VXNlUHJvcGVydHk/YVtlLnByb3BlcnR5TmFtZV09bnVsbD09PWM/Mz09PWUudHlwZT8hMTpcIlwiOmM6KGI9ZS5hdHRyaWJ1dGVOYW1lLGQ9ZS5hdHRyaWJ1dGVOYW1lc3BhY2UsbnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6KGU9ZS50eXBlLGM9Mz09PWV8fDQ9PT1lJiYhMD09PWM/XCJcIjpcIlwiK2MsZD9hLnNldEF0dHJpYnV0ZU5TKGQsYixjKTphLnNldEF0dHJpYnV0ZShiLGMpKSl9XG52YXIgdWE9YWEuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsdmE9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksd2E9U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSx5YT1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksemE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLEFhPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSxCYT1TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIiksQ2E9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksRGE9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLEVhPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxGYT1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKSxHYT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxIYT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTtTeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik7U3ltYm9sLmZvcihcInJlYWN0LmRlYnVnX3RyYWNlX21vZGVcIik7XG52YXIgSWE9U3ltYm9sLmZvcihcInJlYWN0Lm9mZnNjcmVlblwiKTtTeW1ib2wuZm9yKFwicmVhY3QubGVnYWN5X2hpZGRlblwiKTtTeW1ib2wuZm9yKFwicmVhY3QuY2FjaGVcIik7U3ltYm9sLmZvcihcInJlYWN0LnRyYWNpbmdfbWFya2VyXCIpO3ZhciBKYT1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gS2EoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPUphJiZhW0phXXx8YVtcIkBAaXRlcmF0b3JcIl07cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGE/YTpudWxsfXZhciBBPU9iamVjdC5hc3NpZ24sTGE7ZnVuY3Rpb24gTWEoYSl7aWYodm9pZCAwPT09TGEpdHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKGMpe3ZhciBiPWMuc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7TGE9YiYmYlsxXXx8XCJcIn1yZXR1cm5cIlxcblwiK0xhK2F9dmFyIE5hPSExO1xuZnVuY3Rpb24gT2EoYSxiKXtpZighYXx8TmEpcmV0dXJuXCJcIjtOYT0hMDt2YXIgYz1FcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT12b2lkIDA7dHJ5e2lmKGIpaWYoYj1mdW5jdGlvbigpe3Rocm93IEVycm9yKCk7fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYi5wcm90b3R5cGUsXCJwcm9wc1wiLHtzZXQ6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpO319KSxcIm9iamVjdFwiPT09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuY29uc3RydWN0KXt0cnl7UmVmbGVjdC5jb25zdHJ1Y3QoYixbXSl9Y2F0Y2gobCl7dmFyIGQ9bH1SZWZsZWN0LmNvbnN0cnVjdChhLFtdLGIpfWVsc2V7dHJ5e2IuY2FsbCgpfWNhdGNoKGwpe2Q9bH1hLmNhbGwoYi5wcm90b3R5cGUpfWVsc2V7dHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKGwpe2Q9bH1hKCl9fWNhdGNoKGwpe2lmKGwmJmQmJlwic3RyaW5nXCI9PT10eXBlb2YgbC5zdGFjayl7Zm9yKHZhciBlPWwuc3RhY2suc3BsaXQoXCJcXG5cIiksXG5mPWQuc3RhY2suc3BsaXQoXCJcXG5cIiksZz1lLmxlbmd0aC0xLGg9Zi5sZW5ndGgtMTsxPD1nJiYwPD1oJiZlW2ddIT09ZltoXTspaC0tO2Zvcig7MTw9ZyYmMDw9aDtnLS0saC0tKWlmKGVbZ10hPT1mW2hdKXtpZigxIT09Z3x8MSE9PWgpe2RvIGlmKGctLSxoLS0sMD5ofHxlW2ddIT09ZltoXSl7dmFyIGs9XCJcXG5cIitlW2ddLnJlcGxhY2UoXCIgYXQgbmV3IFwiLFwiIGF0IFwiKTthLmRpc3BsYXlOYW1lJiZrLmluY2x1ZGVzKFwiPGFub255bW91cz5cIikmJihrPWsucmVwbGFjZShcIjxhbm9ueW1vdXM+XCIsYS5kaXNwbGF5TmFtZSkpO3JldHVybiBrfXdoaWxlKDE8PWcmJjA8PWgpfWJyZWFrfX19ZmluYWxseXtOYT0hMSxFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT1jfXJldHVybihhPWE/YS5kaXNwbGF5TmFtZXx8YS5uYW1lOlwiXCIpP01hKGEpOlwiXCJ9XG5mdW5jdGlvbiBQYShhKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTpyZXR1cm4gTWEoYS50eXBlKTtjYXNlIDE2OnJldHVybiBNYShcIkxhenlcIik7Y2FzZSAxMzpyZXR1cm4gTWEoXCJTdXNwZW5zZVwiKTtjYXNlIDE5OnJldHVybiBNYShcIlN1c3BlbnNlTGlzdFwiKTtjYXNlIDA6Y2FzZSAyOmNhc2UgMTU6cmV0dXJuIGE9T2EoYS50eXBlLCExKSxhO2Nhc2UgMTE6cmV0dXJuIGE9T2EoYS50eXBlLnJlbmRlciwhMSksYTtjYXNlIDE6cmV0dXJuIGE9T2EoYS50eXBlLCEwKSxhO2RlZmF1bHQ6cmV0dXJuXCJcIn19XG5mdW5jdGlvbiBRYShhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBhLmRpc3BsYXlOYW1lfHxhLm5hbWV8fG51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKXJldHVybiBhO3N3aXRjaChhKXtjYXNlIHlhOnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIHdhOnJldHVyblwiUG9ydGFsXCI7Y2FzZSBBYTpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSB6YTpyZXR1cm5cIlN0cmljdE1vZGVcIjtjYXNlIEVhOnJldHVyblwiU3VzcGVuc2VcIjtjYXNlIEZhOnJldHVyblwiU3VzcGVuc2VMaXN0XCJ9aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhKXN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIENhOnJldHVybihhLmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuQ29uc3VtZXJcIjtjYXNlIEJhOnJldHVybihhLl9jb250ZXh0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuUHJvdmlkZXJcIjtjYXNlIERhOnZhciBiPWEucmVuZGVyO2E9YS5kaXNwbGF5TmFtZTthfHwoYT1iLmRpc3BsYXlOYW1lfHxcbmIubmFtZXx8XCJcIixhPVwiXCIhPT1hP1wiRm9yd2FyZFJlZihcIithK1wiKVwiOlwiRm9yd2FyZFJlZlwiKTtyZXR1cm4gYTtjYXNlIEdhOnJldHVybiBiPWEuZGlzcGxheU5hbWV8fG51bGwsbnVsbCE9PWI/YjpRYShhLnR5cGUpfHxcIk1lbW9cIjtjYXNlIEhhOmI9YS5fcGF5bG9hZDthPWEuX2luaXQ7dHJ5e3JldHVybiBRYShhKGIpKX1jYXRjaChjKXt9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gUmEoYSl7dmFyIGI9YS50eXBlO3N3aXRjaChhLnRhZyl7Y2FzZSAyNDpyZXR1cm5cIkNhY2hlXCI7Y2FzZSA5OnJldHVybihiLmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuQ29uc3VtZXJcIjtjYXNlIDEwOnJldHVybihiLl9jb250ZXh0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuUHJvdmlkZXJcIjtjYXNlIDE4OnJldHVyblwiRGVoeWRyYXRlZEZyYWdtZW50XCI7Y2FzZSAxMTpyZXR1cm4gYT1iLnJlbmRlcixhPWEuZGlzcGxheU5hbWV8fGEubmFtZXx8XCJcIixiLmRpc3BsYXlOYW1lfHwoXCJcIiE9PWE/XCJGb3J3YXJkUmVmKFwiK2ErXCIpXCI6XCJGb3J3YXJkUmVmXCIpO2Nhc2UgNzpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSA1OnJldHVybiBiO2Nhc2UgNDpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgMzpyZXR1cm5cIlJvb3RcIjtjYXNlIDY6cmV0dXJuXCJUZXh0XCI7Y2FzZSAxNjpyZXR1cm4gUWEoYik7Y2FzZSA4OnJldHVybiBiPT09emE/XCJTdHJpY3RNb2RlXCI6XCJNb2RlXCI7Y2FzZSAyMjpyZXR1cm5cIk9mZnNjcmVlblwiO1xuY2FzZSAxMjpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSAyMTpyZXR1cm5cIlNjb3BlXCI7Y2FzZSAxMzpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSAxOTpyZXR1cm5cIlN1c3BlbnNlTGlzdFwiO2Nhc2UgMjU6cmV0dXJuXCJUcmFjaW5nTWFya2VyXCI7Y2FzZSAxOmNhc2UgMDpjYXNlIDE3OmNhc2UgMjpjYXNlIDE0OmNhc2UgMTU6aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIpcmV0dXJuIGIuZGlzcGxheU5hbWV8fGIubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGIpcmV0dXJuIGJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gU2EoYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlIFwiYm9vbGVhblwiOmNhc2UgXCJudW1iZXJcIjpjYXNlIFwic3RyaW5nXCI6Y2FzZSBcInVuZGVmaW5lZFwiOnJldHVybiBhO2Nhc2UgXCJvYmplY3RcIjpyZXR1cm4gYTtkZWZhdWx0OnJldHVyblwiXCJ9fVxuZnVuY3Rpb24gVGEoYSl7dmFyIGI9YS50eXBlO3JldHVybihhPWEubm9kZU5hbWUpJiZcImlucHV0XCI9PT1hLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1ifHxcInJhZGlvXCI9PT1iKX1cbmZ1bmN0aW9uIFVhKGEpe3ZhciBiPVRhKGEpP1wiY2hlY2tlZFwiOlwidmFsdWVcIixjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYiksZD1cIlwiK2FbYl07aWYoIWEuaGFzT3duUHJvcGVydHkoYikmJlwidW5kZWZpbmVkXCIhPT10eXBlb2YgYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGMuZ2V0JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5zZXQpe3ZhciBlPWMuZ2V0LGY9Yy5zZXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihhKXtkPVwiXCIrYTtmLmNhbGwodGhpcyxhKX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtlbnVtZXJhYmxlOmMuZW51bWVyYWJsZX0pO3JldHVybntnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBkfSxzZXRWYWx1ZTpmdW5jdGlvbihhKXtkPVwiXCIrYX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7YS5fdmFsdWVUcmFja2VyPVxubnVsbDtkZWxldGUgYVtiXX19fX1mdW5jdGlvbiBWYShhKXthLl92YWx1ZVRyYWNrZXJ8fChhLl92YWx1ZVRyYWNrZXI9VWEoYSkpfWZ1bmN0aW9uIFdhKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWEuX3ZhbHVlVHJhY2tlcjtpZighYilyZXR1cm4hMDt2YXIgYz1iLmdldFZhbHVlKCk7dmFyIGQ9XCJcIjthJiYoZD1UYShhKT9hLmNoZWNrZWQ/XCJ0cnVlXCI6XCJmYWxzZVwiOmEudmFsdWUpO2E9ZDtyZXR1cm4gYSE9PWM/KGIuc2V0VmFsdWUoYSksITApOiExfWZ1bmN0aW9uIFhhKGEpe2E9YXx8KFwidW5kZWZpbmVkXCIhPT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKTtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBhLmFjdGl2ZUVsZW1lbnR8fGEuYm9keX1jYXRjaChiKXtyZXR1cm4gYS5ib2R5fX1cbmZ1bmN0aW9uIFlhKGEsYil7dmFyIGM9Yi5jaGVja2VkO3JldHVybiBBKHt9LGIse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPWM/YzphLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1mdW5jdGlvbiBaYShhLGIpe3ZhciBjPW51bGw9PWIuZGVmYXVsdFZhbHVlP1wiXCI6Yi5kZWZhdWx0VmFsdWUsZD1udWxsIT1iLmNoZWNrZWQ/Yi5jaGVja2VkOmIuZGVmYXVsdENoZWNrZWQ7Yz1TYShudWxsIT1iLnZhbHVlP2IudmFsdWU6Yyk7YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpkLGluaXRpYWxWYWx1ZTpjLGNvbnRyb2xsZWQ6XCJjaGVja2JveFwiPT09Yi50eXBlfHxcInJhZGlvXCI9PT1iLnR5cGU/bnVsbCE9Yi5jaGVja2VkOm51bGwhPWIudmFsdWV9fWZ1bmN0aW9uIGFiKGEsYil7Yj1iLmNoZWNrZWQ7bnVsbCE9YiYmdGEoYSxcImNoZWNrZWRcIixiLCExKX1cbmZ1bmN0aW9uIGJiKGEsYil7YWIoYSxiKTt2YXIgYz1TYShiLnZhbHVlKSxkPWIudHlwZTtpZihudWxsIT1jKWlmKFwibnVtYmVyXCI9PT1kKXtpZigwPT09YyYmXCJcIj09PWEudmFsdWV8fGEudmFsdWUhPWMpYS52YWx1ZT1cIlwiK2N9ZWxzZSBhLnZhbHVlIT09XCJcIitjJiYoYS52YWx1ZT1cIlwiK2MpO2Vsc2UgaWYoXCJzdWJtaXRcIj09PWR8fFwicmVzZXRcIj09PWQpe2EucmVtb3ZlQXR0cmlidXRlKFwidmFsdWVcIik7cmV0dXJufWIuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKT9jYihhLGIudHlwZSxjKTpiLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFZhbHVlXCIpJiZjYihhLGIudHlwZSxTYShiLmRlZmF1bHRWYWx1ZSkpO251bGw9PWIuY2hlY2tlZCYmbnVsbCE9Yi5kZWZhdWx0Q2hlY2tlZCYmKGEuZGVmYXVsdENoZWNrZWQ9ISFiLmRlZmF1bHRDaGVja2VkKX1cbmZ1bmN0aW9uIGRiKGEsYixjKXtpZihiLmhhc093blByb3BlcnR5KFwidmFsdWVcIil8fGIuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikpe3ZhciBkPWIudHlwZTtpZighKFwic3VibWl0XCIhPT1kJiZcInJlc2V0XCIhPT1kfHx2b2lkIDAhPT1iLnZhbHVlJiZudWxsIT09Yi52YWx1ZSkpcmV0dXJuO2I9XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlO2N8fGI9PT1hLnZhbHVlfHwoYS52YWx1ZT1iKTthLmRlZmF1bHRWYWx1ZT1ifWM9YS5uYW1lO1wiXCIhPT1jJiYoYS5uYW1lPVwiXCIpO2EuZGVmYXVsdENoZWNrZWQ9ISFhLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQ7XCJcIiE9PWMmJihhLm5hbWU9Yyl9XG5mdW5jdGlvbiBjYihhLGIsYyl7aWYoXCJudW1iZXJcIiE9PWJ8fFhhKGEub3duZXJEb2N1bWVudCkhPT1hKW51bGw9PWM/YS5kZWZhdWx0VmFsdWU9XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmEuZGVmYXVsdFZhbHVlIT09XCJcIitjJiYoYS5kZWZhdWx0VmFsdWU9XCJcIitjKX12YXIgZWI9QXJyYXkuaXNBcnJheTtcbmZ1bmN0aW9uIGZiKGEsYixjLGQpe2E9YS5vcHRpb25zO2lmKGIpe2I9e307Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspYltcIiRcIitjW2VdXT0hMDtmb3IoYz0wO2M8YS5sZW5ndGg7YysrKWU9Yi5oYXNPd25Qcm9wZXJ0eShcIiRcIithW2NdLnZhbHVlKSxhW2NdLnNlbGVjdGVkIT09ZSYmKGFbY10uc2VsZWN0ZWQ9ZSksZSYmZCYmKGFbY10uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2M9XCJcIitTYShjKTtiPW51bGw7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKyl7aWYoYVtlXS52YWx1ZT09PWMpe2FbZV0uc2VsZWN0ZWQ9ITA7ZCYmKGFbZV0uZGVmYXVsdFNlbGVjdGVkPSEwKTtyZXR1cm59bnVsbCE9PWJ8fGFbZV0uZGlzYWJsZWR8fChiPWFbZV0pfW51bGwhPT1iJiYoYi5zZWxlY3RlZD0hMCl9fVxuZnVuY3Rpb24gZ2IoYSxiKXtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXRocm93IEVycm9yKHAoOTEpKTtyZXR1cm4gQSh7fSxiLHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjpcIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiBoYihhLGIpe3ZhciBjPWIudmFsdWU7aWYobnVsbD09Yyl7Yz1iLmNoaWxkcmVuO2I9Yi5kZWZhdWx0VmFsdWU7aWYobnVsbCE9Yyl7aWYobnVsbCE9Yil0aHJvdyBFcnJvcihwKDkyKSk7aWYoZWIoYykpe2lmKDE8Yy5sZW5ndGgpdGhyb3cgRXJyb3IocCg5MykpO2M9Y1swXX1iPWN9bnVsbD09YiYmKGI9XCJcIik7Yz1ifWEuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOlNhKGMpfX1cbmZ1bmN0aW9uIGliKGEsYil7dmFyIGM9U2EoYi52YWx1ZSksZD1TYShiLmRlZmF1bHRWYWx1ZSk7bnVsbCE9YyYmKGM9XCJcIitjLGMhPT1hLnZhbHVlJiYoYS52YWx1ZT1jKSxudWxsPT1iLmRlZmF1bHRWYWx1ZSYmYS5kZWZhdWx0VmFsdWUhPT1jJiYoYS5kZWZhdWx0VmFsdWU9YykpO251bGwhPWQmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2QpfWZ1bmN0aW9uIGpiKGEpe3ZhciBiPWEudGV4dENvbnRlbnQ7Yj09PWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUmJlwiXCIhPT1iJiZudWxsIT09YiYmKGEudmFsdWU9Yil9ZnVuY3Rpb24ga2IoYSl7c3dpdGNoKGEpe2Nhc2UgXCJzdmdcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7Y2FzZSBcIm1hdGhcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIjtkZWZhdWx0OnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwifX1cbmZ1bmN0aW9uIGxiKGEsYil7cmV0dXJuIG51bGw9PWF8fFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09YT9rYihiKTpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI9PT1hJiZcImZvcmVpZ25PYmplY3RcIj09PWI/XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI6YX1cbnZhciBtYixuYj1mdW5jdGlvbihhKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbihiLGMsZCxlKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBhKGIsYyxkLGUpfSl9OmF9KGZ1bmN0aW9uKGEsYil7aWYoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIT09YS5uYW1lc3BhY2VVUkl8fFwiaW5uZXJIVE1MXCJpbiBhKWEuaW5uZXJIVE1MPWI7ZWxzZXttYj1tYnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTttYi5pbm5lckhUTUw9XCI8c3ZnPlwiK2IudmFsdWVPZigpLnRvU3RyaW5nKCkrXCI8L3N2Zz5cIjtmb3IoYj1tYi5maXJzdENoaWxkO2EuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Zvcig7Yi5maXJzdENoaWxkOylhLmFwcGVuZENoaWxkKGIuZmlyc3RDaGlsZCl9fSk7XG5mdW5jdGlvbiBvYihhLGIpe2lmKGIpe3ZhciBjPWEuZmlyc3RDaGlsZDtpZihjJiZjPT09YS5sYXN0Q2hpbGQmJjM9PT1jLm5vZGVUeXBlKXtjLm5vZGVWYWx1ZT1iO3JldHVybn19YS50ZXh0Q29udGVudD1ifVxudmFyIHBiPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGNvbHVtbnM6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRBcmVhOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsXG56b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LHFiPVtcIldlYmtpdFwiLFwibXNcIixcIk1velwiLFwiT1wiXTtPYmplY3Qua2V5cyhwYikuZm9yRWFjaChmdW5jdGlvbihhKXtxYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2I9YithLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyaW5nKDEpO3BiW2JdPXBiW2FdfSl9KTtmdW5jdGlvbiByYihhLGIsYyl7cmV0dXJuIG51bGw9PWJ8fFwiYm9vbGVhblwiPT09dHlwZW9mIGJ8fFwiXCI9PT1iP1wiXCI6Y3x8XCJudW1iZXJcIiE9PXR5cGVvZiBifHwwPT09Ynx8cGIuaGFzT3duUHJvcGVydHkoYSkmJnBiW2FdPyhcIlwiK2IpLnRyaW0oKTpiK1wicHhcIn1cbmZ1bmN0aW9uIHNiKGEsYil7YT1hLnN0eWxlO2Zvcih2YXIgYyBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoYykpe3ZhciBkPTA9PT1jLmluZGV4T2YoXCItLVwiKSxlPXJiKGMsYltjXSxkKTtcImZsb2F0XCI9PT1jJiYoYz1cImNzc0Zsb2F0XCIpO2Q/YS5zZXRQcm9wZXJ0eShjLGUpOmFbY109ZX19dmFyIHRiPUEoe21lbnVpdGVtOiEwfSx7YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSk7XG5mdW5jdGlvbiB1YihhLGIpe2lmKGIpe2lmKHRiW2FdJiYobnVsbCE9Yi5jaGlsZHJlbnx8bnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IocCgxMzcsYSkpO2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpe2lmKG51bGwhPWIuY2hpbGRyZW4pdGhyb3cgRXJyb3IocCg2MCkpO2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTHx8IShcIl9faHRtbFwiaW4gYi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IocCg2MSkpO31pZihudWxsIT1iLnN0eWxlJiZcIm9iamVjdFwiIT09dHlwZW9mIGIuc3R5bGUpdGhyb3cgRXJyb3IocCg2MikpO319XG5mdW5jdGlvbiB2YihhLGIpe2lmKC0xPT09YS5pbmRleE9mKFwiLVwiKSlyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGIuaXM7c3dpdGNoKGEpe2Nhc2UgXCJhbm5vdGF0aW9uLXhtbFwiOmNhc2UgXCJjb2xvci1wcm9maWxlXCI6Y2FzZSBcImZvbnQtZmFjZVwiOmNhc2UgXCJmb250LWZhY2Utc3JjXCI6Y2FzZSBcImZvbnQtZmFjZS11cmlcIjpjYXNlIFwiZm9udC1mYWNlLWZvcm1hdFwiOmNhc2UgXCJmb250LWZhY2UtbmFtZVwiOmNhc2UgXCJtaXNzaW5nLWdseXBoXCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19dmFyIHdiPW51bGw7ZnVuY3Rpb24geGIoYSl7YT1hLnRhcmdldHx8YS5zcmNFbGVtZW50fHx3aW5kb3c7YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKGE9YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCk7cmV0dXJuIDM9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphfXZhciB5Yj1udWxsLHpiPW51bGwsQWI9bnVsbDtcbmZ1bmN0aW9uIEJiKGEpe2lmKGE9Q2IoYSkpe2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiB5Yil0aHJvdyBFcnJvcihwKDI4MCkpO3ZhciBiPWEuc3RhdGVOb2RlO2ImJihiPURiKGIpLHliKGEuc3RhdGVOb2RlLGEudHlwZSxiKSl9fWZ1bmN0aW9uIEViKGEpe3piP0FiP0FiLnB1c2goYSk6QWI9W2FdOnpiPWF9ZnVuY3Rpb24gRmIoKXtpZih6Yil7dmFyIGE9emIsYj1BYjtBYj16Yj1udWxsO0JiKGEpO2lmKGIpZm9yKGE9MDthPGIubGVuZ3RoO2ErKylCYihiW2FdKX19ZnVuY3Rpb24gR2IoYSxiKXtyZXR1cm4gYShiKX1mdW5jdGlvbiBIYigpe312YXIgSWI9ITE7ZnVuY3Rpb24gSmIoYSxiLGMpe2lmKEliKXJldHVybiBhKGIsYyk7SWI9ITA7dHJ5e3JldHVybiBHYihhLGIsYyl9ZmluYWxseXtpZihJYj0hMSxudWxsIT09emJ8fG51bGwhPT1BYilIYigpLEZiKCl9fVxuZnVuY3Rpb24gS2IoYSxiKXt2YXIgYz1hLnN0YXRlTm9kZTtpZihudWxsPT09YylyZXR1cm4gbnVsbDt2YXIgZD1EYihjKTtpZihudWxsPT09ZClyZXR1cm4gbnVsbDtjPWRbYl07YTpzd2l0Y2goYil7Y2FzZSBcIm9uQ2xpY2tcIjpjYXNlIFwib25DbGlja0NhcHR1cmVcIjpjYXNlIFwib25Eb3VibGVDbGlja1wiOmNhc2UgXCJvbkRvdWJsZUNsaWNrQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlRG93blwiOmNhc2UgXCJvbk1vdXNlRG93bkNhcHR1cmVcIjpjYXNlIFwib25Nb3VzZU1vdmVcIjpjYXNlIFwib25Nb3VzZU1vdmVDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VVcFwiOmNhc2UgXCJvbk1vdXNlVXBDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VFbnRlclwiOihkPSFkLmRpc2FibGVkKXx8KGE9YS50eXBlLGQ9IShcImJ1dHRvblwiPT09YXx8XCJpbnB1dFwiPT09YXx8XCJzZWxlY3RcIj09PWF8fFwidGV4dGFyZWFcIj09PWEpKTthPSFkO2JyZWFrIGE7ZGVmYXVsdDphPSExfWlmKGEpcmV0dXJuIG51bGw7aWYoYyYmXCJmdW5jdGlvblwiIT09XG50eXBlb2YgYyl0aHJvdyBFcnJvcihwKDIzMSxiLHR5cGVvZiBjKSk7cmV0dXJuIGN9dmFyIExiPSExO2lmKGlhKXRyeXt2YXIgTWI9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KE1iLFwicGFzc2l2ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtMYj0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixNYixNYik7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsTWIsTWIpfWNhdGNoKGEpe0xiPSExfWZ1bmN0aW9uIE5iKGEsYixjLGQsZSxmLGcsaCxrKXt2YXIgbD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMyk7dHJ5e2IuYXBwbHkoYyxsKX1jYXRjaChtKXt0aGlzLm9uRXJyb3IobSl9fXZhciBPYj0hMSxQYj1udWxsLFFiPSExLFJiPW51bGwsU2I9e29uRXJyb3I6ZnVuY3Rpb24oYSl7T2I9ITA7UGI9YX19O2Z1bmN0aW9uIFRiKGEsYixjLGQsZSxmLGcsaCxrKXtPYj0hMTtQYj1udWxsO05iLmFwcGx5KFNiLGFyZ3VtZW50cyl9XG5mdW5jdGlvbiBVYihhLGIsYyxkLGUsZixnLGgsayl7VGIuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKE9iKXtpZihPYil7dmFyIGw9UGI7T2I9ITE7UGI9bnVsbH1lbHNlIHRocm93IEVycm9yKHAoMTk4KSk7UWJ8fChRYj0hMCxSYj1sKX19ZnVuY3Rpb24gVmIoYSl7dmFyIGI9YSxjPWE7aWYoYS5hbHRlcm5hdGUpZm9yKDtiLnJldHVybjspYj1iLnJldHVybjtlbHNle2E9YjtkbyBiPWEsMCE9PShiLmZsYWdzJjQwOTgpJiYoYz1iLnJldHVybiksYT1iLnJldHVybjt3aGlsZShhKX1yZXR1cm4gMz09PWIudGFnP2M6bnVsbH1mdW5jdGlvbiBXYihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1hLm1lbW9pemVkU3RhdGU7bnVsbD09PWImJihhPWEuYWx0ZXJuYXRlLG51bGwhPT1hJiYoYj1hLm1lbW9pemVkU3RhdGUpKTtpZihudWxsIT09YilyZXR1cm4gYi5kZWh5ZHJhdGVkfXJldHVybiBudWxsfWZ1bmN0aW9uIFhiKGEpe2lmKFZiKGEpIT09YSl0aHJvdyBFcnJvcihwKDE4OCkpO31cbmZ1bmN0aW9uIFliKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO2lmKCFiKXtiPVZiKGEpO2lmKG51bGw9PT1iKXRocm93IEVycm9yKHAoMTg4KSk7cmV0dXJuIGIhPT1hP251bGw6YX1mb3IodmFyIGM9YSxkPWI7Oyl7dmFyIGU9Yy5yZXR1cm47aWYobnVsbD09PWUpYnJlYWs7dmFyIGY9ZS5hbHRlcm5hdGU7aWYobnVsbD09PWYpe2Q9ZS5yZXR1cm47aWYobnVsbCE9PWQpe2M9ZDtjb250aW51ZX1icmVha31pZihlLmNoaWxkPT09Zi5jaGlsZCl7Zm9yKGY9ZS5jaGlsZDtmOyl7aWYoZj09PWMpcmV0dXJuIFhiKGUpLGE7aWYoZj09PWQpcmV0dXJuIFhiKGUpLGI7Zj1mLnNpYmxpbmd9dGhyb3cgRXJyb3IocCgxODgpKTt9aWYoYy5yZXR1cm4hPT1kLnJldHVybiljPWUsZD1mO2Vsc2V7Zm9yKHZhciBnPSExLGg9ZS5jaGlsZDtoOyl7aWYoaD09PWMpe2c9ITA7Yz1lO2Q9ZjticmVha31pZihoPT09ZCl7Zz0hMDtkPWU7Yz1mO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXtmb3IoaD1mLmNoaWxkO2g7KXtpZihoPT09XG5jKXtnPSEwO2M9ZjtkPWU7YnJlYWt9aWYoaD09PWQpe2c9ITA7ZD1mO2M9ZTticmVha31oPWguc2libGluZ31pZighZyl0aHJvdyBFcnJvcihwKDE4OSkpO319aWYoYy5hbHRlcm5hdGUhPT1kKXRocm93IEVycm9yKHAoMTkwKSk7fWlmKDMhPT1jLnRhZyl0aHJvdyBFcnJvcihwKDE4OCkpO3JldHVybiBjLnN0YXRlTm9kZS5jdXJyZW50PT09Yz9hOmJ9ZnVuY3Rpb24gWmIoYSl7YT1ZYihhKTtyZXR1cm4gbnVsbCE9PWE/JGIoYSk6bnVsbH1mdW5jdGlvbiAkYihhKXtpZig1PT09YS50YWd8fDY9PT1hLnRhZylyZXR1cm4gYTtmb3IoYT1hLmNoaWxkO251bGwhPT1hOyl7dmFyIGI9JGIoYSk7aWYobnVsbCE9PWIpcmV0dXJuIGI7YT1hLnNpYmxpbmd9cmV0dXJuIG51bGx9XG52YXIgYWM9Y2EudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxiYz1jYS51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxjYz1jYS51bnN0YWJsZV9zaG91bGRZaWVsZCxkYz1jYS51bnN0YWJsZV9yZXF1ZXN0UGFpbnQsQj1jYS51bnN0YWJsZV9ub3csZWM9Y2EudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsZmM9Y2EudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksZ2M9Y2EudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksaGM9Y2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksaWM9Y2EudW5zdGFibGVfTG93UHJpb3JpdHksamM9Y2EudW5zdGFibGVfSWRsZVByaW9yaXR5LGtjPW51bGwsbGM9bnVsbDtmdW5jdGlvbiBtYyhhKXtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uQ29tbWl0RmliZXJSb290KXRyeXtsYy5vbkNvbW1pdEZpYmVyUm9vdChrYyxhLHZvaWQgMCwxMjg9PT0oYS5jdXJyZW50LmZsYWdzJjEyOCkpfWNhdGNoKGIpe319XG52YXIgb2M9TWF0aC5jbHozMj9NYXRoLmNsejMyOm5jLHBjPU1hdGgubG9nLHFjPU1hdGguTE4yO2Z1bmN0aW9uIG5jKGEpe2E+Pj49MDtyZXR1cm4gMD09PWE/MzI6MzEtKHBjKGEpL3FjfDApfDB9dmFyIHJjPTY0LHNjPTQxOTQzMDQ7XG5mdW5jdGlvbiB0YyhhKXtzd2l0Y2goYSYtYSl7Y2FzZSAxOnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMjtjYXNlIDQ6cmV0dXJuIDQ7Y2FzZSA4OnJldHVybiA4O2Nhc2UgMTY6cmV0dXJuIDE2O2Nhc2UgMzI6cmV0dXJuIDMyO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIGEmNDE5NDI0MDtjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OnJldHVybiBhJjEzMDAyMzQyNDtjYXNlIDEzNDIxNzcyODpyZXR1cm4gMTM0MjE3NzI4O2Nhc2UgMjY4NDM1NDU2OnJldHVybiAyNjg0MzU0NTY7Y2FzZSA1MzY4NzA5MTI6cmV0dXJuIDUzNjg3MDkxMjtjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuIDEwNzM3NDE4MjQ7XG5kZWZhdWx0OnJldHVybiBhfX1mdW5jdGlvbiB1YyhhLGIpe3ZhciBjPWEucGVuZGluZ0xhbmVzO2lmKDA9PT1jKXJldHVybiAwO3ZhciBkPTAsZT1hLnN1c3BlbmRlZExhbmVzLGY9YS5waW5nZWRMYW5lcyxnPWMmMjY4NDM1NDU1O2lmKDAhPT1nKXt2YXIgaD1nJn5lOzAhPT1oP2Q9dGMoaCk6KGYmPWcsMCE9PWYmJihkPXRjKGYpKSl9ZWxzZSBnPWMmfmUsMCE9PWc/ZD10YyhnKTowIT09ZiYmKGQ9dGMoZikpO2lmKDA9PT1kKXJldHVybiAwO2lmKDAhPT1iJiZiIT09ZCYmMD09PShiJmUpJiYoZT1kJi1kLGY9YiYtYixlPj1mfHwxNj09PWUmJjAhPT0oZiY0MTk0MjQwKSkpcmV0dXJuIGI7MCE9PShkJjQpJiYoZHw9YyYxNik7Yj1hLmVudGFuZ2xlZExhbmVzO2lmKDAhPT1iKWZvcihhPWEuZW50YW5nbGVtZW50cyxiJj1kOzA8YjspYz0zMS1vYyhiKSxlPTE8PGMsZHw9YVtjXSxiJj1+ZTtyZXR1cm4gZH1cbmZ1bmN0aW9uIHZjKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiBiKzI1MDtjYXNlIDg6Y2FzZSAxNjpjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIGIrNUUzO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuLTE7Y2FzZSAxMzQyMTc3Mjg6Y2FzZSAyNjg0MzU0NTY6Y2FzZSA1MzY4NzA5MTI6Y2FzZSAxMDczNzQxODI0OnJldHVybi0xO2RlZmF1bHQ6cmV0dXJuLTF9fVxuZnVuY3Rpb24gd2MoYSxiKXtmb3IodmFyIGM9YS5zdXNwZW5kZWRMYW5lcyxkPWEucGluZ2VkTGFuZXMsZT1hLmV4cGlyYXRpb25UaW1lcyxmPWEucGVuZGluZ0xhbmVzOzA8Zjspe3ZhciBnPTMxLW9jKGYpLGg9MTw8ZyxrPWVbZ107aWYoLTE9PT1rKXtpZigwPT09KGgmYyl8fDAhPT0oaCZkKSllW2ddPXZjKGgsYil9ZWxzZSBrPD1iJiYoYS5leHBpcmVkTGFuZXN8PWgpO2YmPX5ofX1mdW5jdGlvbiB4YyhhKXthPWEucGVuZGluZ0xhbmVzJi0xMDczNzQxODI1O3JldHVybiAwIT09YT9hOmEmMTA3Mzc0MTgyND8xMDczNzQxODI0OjB9ZnVuY3Rpb24geWMoKXt2YXIgYT1yYztyYzw8PTE7MD09PShyYyY0MTk0MjQwKSYmKHJjPTY0KTtyZXR1cm4gYX1mdW5jdGlvbiB6YyhhKXtmb3IodmFyIGI9W10sYz0wOzMxPmM7YysrKWIucHVzaChhKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEFjKGEsYixjKXthLnBlbmRpbmdMYW5lc3w9Yjs1MzY4NzA5MTIhPT1iJiYoYS5zdXNwZW5kZWRMYW5lcz0wLGEucGluZ2VkTGFuZXM9MCk7YT1hLmV2ZW50VGltZXM7Yj0zMS1vYyhiKTthW2JdPWN9ZnVuY3Rpb24gQmMoYSxiKXt2YXIgYz1hLnBlbmRpbmdMYW5lcyZ+YjthLnBlbmRpbmdMYW5lcz1iO2Euc3VzcGVuZGVkTGFuZXM9MDthLnBpbmdlZExhbmVzPTA7YS5leHBpcmVkTGFuZXMmPWI7YS5tdXRhYmxlUmVhZExhbmVzJj1iO2EuZW50YW5nbGVkTGFuZXMmPWI7Yj1hLmVudGFuZ2xlbWVudHM7dmFyIGQ9YS5ldmVudFRpbWVzO2ZvcihhPWEuZXhwaXJhdGlvblRpbWVzOzA8Yzspe3ZhciBlPTMxLW9jKGMpLGY9MTw8ZTtiW2VdPTA7ZFtlXT0tMTthW2VdPS0xO2MmPX5mfX1cbmZ1bmN0aW9uIENjKGEsYil7dmFyIGM9YS5lbnRhbmdsZWRMYW5lc3w9Yjtmb3IoYT1hLmVudGFuZ2xlbWVudHM7Yzspe3ZhciBkPTMxLW9jKGMpLGU9MTw8ZDtlJmJ8YVtkXSZiJiYoYVtkXXw9Yik7YyY9fmV9fXZhciBDPTA7ZnVuY3Rpb24gRGMoYSl7YSY9LWE7cmV0dXJuIDE8YT80PGE/MCE9PShhJjI2ODQzNTQ1NSk/MTY6NTM2ODcwOTEyOjQ6MX12YXIgRWMsRmMsR2MsSGMsSWMsSmM9ITEsS2M9W10sTGM9bnVsbCxNYz1udWxsLE5jPW51bGwsT2M9bmV3IE1hcCxQYz1uZXcgTWFwLFFjPVtdLFJjPVwibW91c2Vkb3duIG1vdXNldXAgdG91Y2hjYW5jZWwgdG91Y2hlbmQgdG91Y2hzdGFydCBhdXhjbGljayBkYmxjbGljayBwb2ludGVyY2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJ1cCBkcmFnZW5kIGRyYWdzdGFydCBkcm9wIGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCB0ZXh0SW5wdXQgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0IHN1Ym1pdFwiLnNwbGl0KFwiIFwiKTtcbmZ1bmN0aW9uIFNjKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJmb2N1c2luXCI6Y2FzZSBcImZvY3Vzb3V0XCI6TGM9bnVsbDticmVhaztjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdsZWF2ZVwiOk1jPW51bGw7YnJlYWs7Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJtb3VzZW91dFwiOk5jPW51bGw7YnJlYWs7Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpPYy5kZWxldGUoYi5wb2ludGVySWQpO2JyZWFrO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpQYy5kZWxldGUoYi5wb2ludGVySWQpfX1cbmZ1bmN0aW9uIFRjKGEsYixjLGQsZSxmKXtpZihudWxsPT09YXx8YS5uYXRpdmVFdmVudCE9PWYpcmV0dXJuIGE9e2Jsb2NrZWRPbjpiLGRvbUV2ZW50TmFtZTpjLGV2ZW50U3lzdGVtRmxhZ3M6ZCxuYXRpdmVFdmVudDpmLHRhcmdldENvbnRhaW5lcnM6W2VdfSxudWxsIT09YiYmKGI9Q2IoYiksbnVsbCE9PWImJkZjKGIpKSxhO2EuZXZlbnRTeXN0ZW1GbGFnc3w9ZDtiPWEudGFyZ2V0Q29udGFpbmVycztudWxsIT09ZSYmLTE9PT1iLmluZGV4T2YoZSkmJmIucHVzaChlKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIFVjKGEsYixjLGQsZSl7c3dpdGNoKGIpe2Nhc2UgXCJmb2N1c2luXCI6cmV0dXJuIExjPVRjKExjLGEsYixjLGQsZSksITA7Y2FzZSBcImRyYWdlbnRlclwiOnJldHVybiBNYz1UYyhNYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJtb3VzZW92ZXJcIjpyZXR1cm4gTmM9VGMoTmMsYSxiLGMsZCxlKSwhMDtjYXNlIFwicG9pbnRlcm92ZXJcIjp2YXIgZj1lLnBvaW50ZXJJZDtPYy5zZXQoZixUYyhPYy5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSk7cmV0dXJuITA7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6cmV0dXJuIGY9ZS5wb2ludGVySWQsUGMuc2V0KGYsVGMoUGMuZ2V0KGYpfHxudWxsLGEsYixjLGQsZSkpLCEwfXJldHVybiExfVxuZnVuY3Rpb24gVmMoYSl7dmFyIGI9V2MoYS50YXJnZXQpO2lmKG51bGwhPT1iKXt2YXIgYz1WYihiKTtpZihudWxsIT09YylpZihiPWMudGFnLDEzPT09Yil7aWYoYj1XYihjKSxudWxsIT09Yil7YS5ibG9ja2VkT249YjtJYyhhLnByaW9yaXR5LGZ1bmN0aW9uKCl7R2MoYyl9KTtyZXR1cm59fWVsc2UgaWYoMz09PWImJmMuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe2EuYmxvY2tlZE9uPTM9PT1jLnRhZz9jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7cmV0dXJufX1hLmJsb2NrZWRPbj1udWxsfVxuZnVuY3Rpb24gWGMoYSl7aWYobnVsbCE9PWEuYmxvY2tlZE9uKXJldHVybiExO2Zvcih2YXIgYj1hLnRhcmdldENvbnRhaW5lcnM7MDxiLmxlbmd0aDspe3ZhciBjPVljKGEuZG9tRXZlbnROYW1lLGEuZXZlbnRTeXN0ZW1GbGFncyxiWzBdLGEubmF0aXZlRXZlbnQpO2lmKG51bGw9PT1jKXtjPWEubmF0aXZlRXZlbnQ7dmFyIGQ9bmV3IGMuY29uc3RydWN0b3IoYy50eXBlLGMpO3diPWQ7Yy50YXJnZXQuZGlzcGF0Y2hFdmVudChkKTt3Yj1udWxsfWVsc2UgcmV0dXJuIGI9Q2IoYyksbnVsbCE9PWImJkZjKGIpLGEuYmxvY2tlZE9uPWMsITE7Yi5zaGlmdCgpfXJldHVybiEwfWZ1bmN0aW9uIFpjKGEsYixjKXtYYyhhKSYmYy5kZWxldGUoYil9ZnVuY3Rpb24gJGMoKXtKYz0hMTtudWxsIT09TGMmJlhjKExjKSYmKExjPW51bGwpO251bGwhPT1NYyYmWGMoTWMpJiYoTWM9bnVsbCk7bnVsbCE9PU5jJiZYYyhOYykmJihOYz1udWxsKTtPYy5mb3JFYWNoKFpjKTtQYy5mb3JFYWNoKFpjKX1cbmZ1bmN0aW9uIGFkKGEsYil7YS5ibG9ja2VkT249PT1iJiYoYS5ibG9ja2VkT249bnVsbCxKY3x8KEpjPSEwLGNhLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soY2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksJGMpKSl9XG5mdW5jdGlvbiBiZChhKXtmdW5jdGlvbiBiKGIpe3JldHVybiBhZChiLGEpfWlmKDA8S2MubGVuZ3RoKXthZChLY1swXSxhKTtmb3IodmFyIGM9MTtjPEtjLmxlbmd0aDtjKyspe3ZhciBkPUtjW2NdO2QuYmxvY2tlZE9uPT09YSYmKGQuYmxvY2tlZE9uPW51bGwpfX1udWxsIT09TGMmJmFkKExjLGEpO251bGwhPT1NYyYmYWQoTWMsYSk7bnVsbCE9PU5jJiZhZChOYyxhKTtPYy5mb3JFYWNoKGIpO1BjLmZvckVhY2goYik7Zm9yKGM9MDtjPFFjLmxlbmd0aDtjKyspZD1RY1tjXSxkLmJsb2NrZWRPbj09PWEmJihkLmJsb2NrZWRPbj1udWxsKTtmb3IoOzA8UWMubGVuZ3RoJiYoYz1RY1swXSxudWxsPT09Yy5ibG9ja2VkT24pOylWYyhjKSxudWxsPT09Yy5ibG9ja2VkT24mJlFjLnNoaWZ0KCl9dmFyIGNkPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLGRkPSEwO1xuZnVuY3Rpb24gZWQoYSxiLGMsZCl7dmFyIGU9QyxmPWNkLnRyYW5zaXRpb247Y2QudHJhbnNpdGlvbj1udWxsO3RyeXtDPTEsZmQoYSxiLGMsZCl9ZmluYWxseXtDPWUsY2QudHJhbnNpdGlvbj1mfX1mdW5jdGlvbiBnZChhLGIsYyxkKXt2YXIgZT1DLGY9Y2QudHJhbnNpdGlvbjtjZC50cmFuc2l0aW9uPW51bGw7dHJ5e0M9NCxmZChhLGIsYyxkKX1maW5hbGx5e0M9ZSxjZC50cmFuc2l0aW9uPWZ9fVxuZnVuY3Rpb24gZmQoYSxiLGMsZCl7aWYoZGQpe3ZhciBlPVljKGEsYixjLGQpO2lmKG51bGw9PT1lKWhkKGEsYixkLGlkLGMpLFNjKGEsZCk7ZWxzZSBpZihVYyhlLGEsYixjLGQpKWQuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihTYyhhLGQpLGImNCYmLTE8UmMuaW5kZXhPZihhKSl7Zm9yKDtudWxsIT09ZTspe3ZhciBmPUNiKGUpO251bGwhPT1mJiZFYyhmKTtmPVljKGEsYixjLGQpO251bGw9PT1mJiZoZChhLGIsZCxpZCxjKTtpZihmPT09ZSlicmVhaztlPWZ9bnVsbCE9PWUmJmQuc3RvcFByb3BhZ2F0aW9uKCl9ZWxzZSBoZChhLGIsZCxudWxsLGMpfX12YXIgaWQ9bnVsbDtcbmZ1bmN0aW9uIFljKGEsYixjLGQpe2lkPW51bGw7YT14YihkKTthPVdjKGEpO2lmKG51bGwhPT1hKWlmKGI9VmIoYSksbnVsbD09PWIpYT1udWxsO2Vsc2UgaWYoYz1iLnRhZywxMz09PWMpe2E9V2IoYik7aWYobnVsbCE9PWEpcmV0dXJuIGE7YT1udWxsfWVsc2UgaWYoMz09PWMpe2lmKGIuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpcmV0dXJuIDM9PT1iLnRhZz9iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7YT1udWxsfWVsc2UgYiE9PWEmJihhPW51bGwpO2lkPWE7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBqZChhKXtzd2l0Y2goYSl7Y2FzZSBcImNhbmNlbFwiOmNhc2UgXCJjbGlja1wiOmNhc2UgXCJjbG9zZVwiOmNhc2UgXCJjb250ZXh0bWVudVwiOmNhc2UgXCJjb3B5XCI6Y2FzZSBcImN1dFwiOmNhc2UgXCJhdXhjbGlja1wiOmNhc2UgXCJkYmxjbGlja1wiOmNhc2UgXCJkcmFnZW5kXCI6Y2FzZSBcImRyYWdzdGFydFwiOmNhc2UgXCJkcm9wXCI6Y2FzZSBcImZvY3VzaW5cIjpjYXNlIFwiZm9jdXNvdXRcIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwiaW52YWxpZFwiOmNhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXByZXNzXCI6Y2FzZSBcImtleXVwXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcInBhc3RlXCI6Y2FzZSBcInBhdXNlXCI6Y2FzZSBcInBsYXlcIjpjYXNlIFwicG9pbnRlcmNhbmNlbFwiOmNhc2UgXCJwb2ludGVyZG93blwiOmNhc2UgXCJwb2ludGVydXBcIjpjYXNlIFwicmF0ZWNoYW5nZVwiOmNhc2UgXCJyZXNldFwiOmNhc2UgXCJyZXNpemVcIjpjYXNlIFwic2Vla2VkXCI6Y2FzZSBcInN1Ym1pdFwiOmNhc2UgXCJ0b3VjaGNhbmNlbFwiOmNhc2UgXCJ0b3VjaGVuZFwiOmNhc2UgXCJ0b3VjaHN0YXJ0XCI6Y2FzZSBcInZvbHVtZWNoYW5nZVwiOmNhc2UgXCJjaGFuZ2VcIjpjYXNlIFwic2VsZWN0aW9uY2hhbmdlXCI6Y2FzZSBcInRleHRJbnB1dFwiOmNhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6Y2FzZSBcImJlZm9yZWJsdXJcIjpjYXNlIFwiYWZ0ZXJibHVyXCI6Y2FzZSBcImJlZm9yZWlucHV0XCI6Y2FzZSBcImJsdXJcIjpjYXNlIFwiZnVsbHNjcmVlbmNoYW5nZVwiOmNhc2UgXCJmb2N1c1wiOmNhc2UgXCJoYXNoY2hhbmdlXCI6Y2FzZSBcInBvcHN0YXRlXCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJzZWxlY3RzdGFydFwiOnJldHVybiAxO2Nhc2UgXCJkcmFnXCI6Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnZXhpdFwiOmNhc2UgXCJkcmFnbGVhdmVcIjpjYXNlIFwiZHJhZ292ZXJcIjpjYXNlIFwibW91c2Vtb3ZlXCI6Y2FzZSBcIm1vdXNlb3V0XCI6Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJwb2ludGVybW92ZVwiOmNhc2UgXCJwb2ludGVyb3V0XCI6Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInNjcm9sbFwiOmNhc2UgXCJ0b2dnbGVcIjpjYXNlIFwidG91Y2htb3ZlXCI6Y2FzZSBcIndoZWVsXCI6Y2FzZSBcIm1vdXNlZW50ZXJcIjpjYXNlIFwibW91c2VsZWF2ZVwiOmNhc2UgXCJwb2ludGVyZW50ZXJcIjpjYXNlIFwicG9pbnRlcmxlYXZlXCI6cmV0dXJuIDQ7XG5jYXNlIFwibWVzc2FnZVwiOnN3aXRjaChlYygpKXtjYXNlIGZjOnJldHVybiAxO2Nhc2UgZ2M6cmV0dXJuIDQ7Y2FzZSBoYzpjYXNlIGljOnJldHVybiAxNjtjYXNlIGpjOnJldHVybiA1MzY4NzA5MTI7ZGVmYXVsdDpyZXR1cm4gMTZ9ZGVmYXVsdDpyZXR1cm4gMTZ9fXZhciBrZD1udWxsLGxkPW51bGwsbWQ9bnVsbDtmdW5jdGlvbiBuZCgpe2lmKG1kKXJldHVybiBtZDt2YXIgYSxiPWxkLGM9Yi5sZW5ndGgsZCxlPVwidmFsdWVcImluIGtkP2tkLnZhbHVlOmtkLnRleHRDb250ZW50LGY9ZS5sZW5ndGg7Zm9yKGE9MDthPGMmJmJbYV09PT1lW2FdO2ErKyk7dmFyIGc9Yy1hO2ZvcihkPTE7ZDw9ZyYmYltjLWRdPT09ZVtmLWRdO2QrKyk7cmV0dXJuIG1kPWUuc2xpY2UoYSwxPGQ/MS1kOnZvaWQgMCl9XG5mdW5jdGlvbiBvZChhKXt2YXIgYj1hLmtleUNvZGU7XCJjaGFyQ29kZVwiaW4gYT8oYT1hLmNoYXJDb2RlLDA9PT1hJiYxMz09PWImJihhPTEzKSk6YT1iOzEwPT09YSYmKGE9MTMpO3JldHVybiAzMjw9YXx8MTM9PT1hP2E6MH1mdW5jdGlvbiBwZCgpe3JldHVybiEwfWZ1bmN0aW9uIHFkKCl7cmV0dXJuITF9XG5mdW5jdGlvbiByZChhKXtmdW5jdGlvbiBiKGIsZCxlLGYsZyl7dGhpcy5fcmVhY3ROYW1lPWI7dGhpcy5fdGFyZ2V0SW5zdD1lO3RoaXMudHlwZT1kO3RoaXMubmF0aXZlRXZlbnQ9Zjt0aGlzLnRhcmdldD1nO3RoaXMuY3VycmVudFRhcmdldD1udWxsO2Zvcih2YXIgYyBpbiBhKWEuaGFzT3duUHJvcGVydHkoYykmJihiPWFbY10sdGhpc1tjXT1iP2IoZik6ZltjXSk7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG51bGwhPWYuZGVmYXVsdFByZXZlbnRlZD9mLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1mLnJldHVyblZhbHVlKT9wZDpxZDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXFkO3JldHVybiB0aGlzfUEoYi5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOlwidW5rbm93blwiIT09dHlwZW9mIGEucmV0dXJuVmFsdWUmJlxuKGEucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXBkKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5uYXRpdmVFdmVudDthJiYoYS5zdG9wUHJvcGFnYXRpb24/YS5zdG9wUHJvcGFnYXRpb24oKTpcInVua25vd25cIiE9PXR5cGVvZiBhLmNhbmNlbEJ1YmJsZSYmKGEuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXBkKX0scGVyc2lzdDpmdW5jdGlvbigpe30saXNQZXJzaXN0ZW50OnBkfSk7cmV0dXJuIGJ9XG52YXIgc2Q9e2V2ZW50UGhhc2U6MCxidWJibGVzOjAsY2FuY2VsYWJsZTowLHRpbWVTdGFtcDpmdW5jdGlvbihhKXtyZXR1cm4gYS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6MCxpc1RydXN0ZWQ6MH0sdGQ9cmQoc2QpLHVkPUEoe30sc2Qse3ZpZXc6MCxkZXRhaWw6MH0pLHZkPXJkKHVkKSx3ZCx4ZCx5ZCxBZD1BKHt9LHVkLHtzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAscGFnZVg6MCxwYWdlWTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxnZXRNb2RpZmllclN0YXRlOnpkLGJ1dHRvbjowLGJ1dHRvbnM6MCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDA9PT1hLnJlbGF0ZWRUYXJnZXQ/YS5mcm9tRWxlbWVudD09PWEuc3JjRWxlbWVudD9hLnRvRWxlbWVudDphLmZyb21FbGVtZW50OmEucmVsYXRlZFRhcmdldH0sbW92ZW1lbnRYOmZ1bmN0aW9uKGEpe2lmKFwibW92ZW1lbnRYXCJpblxuYSlyZXR1cm4gYS5tb3ZlbWVudFg7YSE9PXlkJiYoeWQmJlwibW91c2Vtb3ZlXCI9PT1hLnR5cGU/KHdkPWEuc2NyZWVuWC15ZC5zY3JlZW5YLHhkPWEuc2NyZWVuWS15ZC5zY3JlZW5ZKTp4ZD13ZD0wLHlkPWEpO3JldHVybiB3ZH0sbW92ZW1lbnRZOmZ1bmN0aW9uKGEpe3JldHVyblwibW92ZW1lbnRZXCJpbiBhP2EubW92ZW1lbnRZOnhkfX0pLEJkPXJkKEFkKSxDZD1BKHt9LEFkLHtkYXRhVHJhbnNmZXI6MH0pLERkPXJkKENkKSxFZD1BKHt9LHVkLHtyZWxhdGVkVGFyZ2V0OjB9KSxGZD1yZChFZCksR2Q9QSh7fSxzZCx7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksSGQ9cmQoR2QpLElkPUEoe30sc2Qse2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuXCJjbGlwYm9hcmREYXRhXCJpbiBhP2EuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19KSxKZD1yZChJZCksS2Q9QSh7fSxzZCx7ZGF0YTowfSksTGQ9cmQoS2QpLE1kPXtFc2M6XCJFc2NhcGVcIixcblNwYWNlYmFyOlwiIFwiLExlZnQ6XCJBcnJvd0xlZnRcIixVcDpcIkFycm93VXBcIixSaWdodDpcIkFycm93UmlnaHRcIixEb3duOlwiQXJyb3dEb3duXCIsRGVsOlwiRGVsZXRlXCIsV2luOlwiT1NcIixNZW51OlwiQ29udGV4dE1lbnVcIixBcHBzOlwiQ29udGV4dE1lbnVcIixTY3JvbGw6XCJTY3JvbGxMb2NrXCIsTW96UHJpbnRhYmxlS2V5OlwiVW5pZGVudGlmaWVkXCJ9LE5kPXs4OlwiQmFja3NwYWNlXCIsOTpcIlRhYlwiLDEyOlwiQ2xlYXJcIiwxMzpcIkVudGVyXCIsMTY6XCJTaGlmdFwiLDE3OlwiQ29udHJvbFwiLDE4OlwiQWx0XCIsMTk6XCJQYXVzZVwiLDIwOlwiQ2Fwc0xvY2tcIiwyNzpcIkVzY2FwZVwiLDMyOlwiIFwiLDMzOlwiUGFnZVVwXCIsMzQ6XCJQYWdlRG93blwiLDM1OlwiRW5kXCIsMzY6XCJIb21lXCIsMzc6XCJBcnJvd0xlZnRcIiwzODpcIkFycm93VXBcIiwzOTpcIkFycm93UmlnaHRcIiw0MDpcIkFycm93RG93blwiLDQ1OlwiSW5zZXJ0XCIsNDY6XCJEZWxldGVcIiwxMTI6XCJGMVwiLDExMzpcIkYyXCIsMTE0OlwiRjNcIiwxMTU6XCJGNFwiLDExNjpcIkY1XCIsMTE3OlwiRjZcIiwxMTg6XCJGN1wiLFxuMTE5OlwiRjhcIiwxMjA6XCJGOVwiLDEyMTpcIkYxMFwiLDEyMjpcIkYxMVwiLDEyMzpcIkYxMlwiLDE0NDpcIk51bUxvY2tcIiwxNDU6XCJTY3JvbGxMb2NrXCIsMjI0OlwiTWV0YVwifSxPZD17QWx0OlwiYWx0S2V5XCIsQ29udHJvbDpcImN0cmxLZXlcIixNZXRhOlwibWV0YUtleVwiLFNoaWZ0Olwic2hpZnRLZXlcIn07ZnVuY3Rpb24gUGQoYSl7dmFyIGI9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gYi5nZXRNb2RpZmllclN0YXRlP2IuZ2V0TW9kaWZpZXJTdGF0ZShhKTooYT1PZFthXSk/ISFiW2FdOiExfWZ1bmN0aW9uIHpkKCl7cmV0dXJuIFBkfVxudmFyIFFkPUEoe30sdWQse2tleTpmdW5jdGlvbihhKXtpZihhLmtleSl7dmFyIGI9TWRbYS5rZXldfHxhLmtleTtpZihcIlVuaWRlbnRpZmllZFwiIT09YilyZXR1cm4gYn1yZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/KGE9b2QoYSksMTM9PT1hP1wiRW50ZXJcIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP05kW2Eua2V5Q29kZV18fFwiVW5pZGVudGlmaWVkXCI6XCJcIn0sY29kZTowLGxvY2F0aW9uOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLHJlcGVhdDowLGxvY2FsZTowLGdldE1vZGlmaWVyU3RhdGU6emQsY2hhckNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09YS50eXBlP29kKGEpOjB9LGtleUNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9hLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09XG5hLnR5cGU/b2QoYSk6XCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9hLmtleUNvZGU6MH19KSxSZD1yZChRZCksU2Q9QSh7fSxBZCx7cG9pbnRlcklkOjAsd2lkdGg6MCxoZWlnaHQ6MCxwcmVzc3VyZTowLHRhbmdlbnRpYWxQcmVzc3VyZTowLHRpbHRYOjAsdGlsdFk6MCx0d2lzdDowLHBvaW50ZXJUeXBlOjAsaXNQcmltYXJ5OjB9KSxUZD1yZChTZCksVWQ9QSh7fSx1ZCx7dG91Y2hlczowLHRhcmdldFRvdWNoZXM6MCxjaGFuZ2VkVG91Y2hlczowLGFsdEtleTowLG1ldGFLZXk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxnZXRNb2RpZmllclN0YXRlOnpkfSksVmQ9cmQoVWQpLFdkPUEoe30sc2Qse3Byb3BlcnR5TmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksWGQ9cmQoV2QpLFlkPUEoe30sQWQse2RlbHRhWDpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWFwiaW4gYT9hLmRlbHRhWDpcIndoZWVsRGVsdGFYXCJpbiBhPy1hLndoZWVsRGVsdGFYOjB9LFxuZGVsdGFZOmZ1bmN0aW9uKGEpe3JldHVyblwiZGVsdGFZXCJpbiBhP2EuZGVsdGFZOlwid2hlZWxEZWx0YVlcImluIGE/LWEud2hlZWxEZWx0YVk6XCJ3aGVlbERlbHRhXCJpbiBhPy1hLndoZWVsRGVsdGE6MH0sZGVsdGFaOjAsZGVsdGFNb2RlOjB9KSxaZD1yZChZZCksJGQ9WzksMTMsMjcsMzJdLGFlPWlhJiZcIkNvbXBvc2l0aW9uRXZlbnRcImluIHdpbmRvdyxiZT1udWxsO2lhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJihiZT1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciBjZT1pYSYmXCJUZXh0RXZlbnRcImluIHdpbmRvdyYmIWJlLGRlPWlhJiYoIWFlfHxiZSYmODxiZSYmMTE+PWJlKSxlZT1TdHJpbmcuZnJvbUNoYXJDb2RlKDMyKSxmZT0hMTtcbmZ1bmN0aW9uIGdlKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJrZXl1cFwiOnJldHVybi0xIT09JGQuaW5kZXhPZihiLmtleUNvZGUpO2Nhc2UgXCJrZXlkb3duXCI6cmV0dXJuIDIyOSE9PWIua2V5Q29kZTtjYXNlIFwia2V5cHJlc3NcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcImZvY3Vzb3V0XCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gaGUoYSl7YT1hLmRldGFpbDtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJlwiZGF0YVwiaW4gYT9hLmRhdGE6bnVsbH12YXIgaWU9ITE7ZnVuY3Rpb24gamUoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIGhlKGIpO2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDMyIT09Yi53aGljaClyZXR1cm4gbnVsbDtmZT0hMDtyZXR1cm4gZWU7Y2FzZSBcInRleHRJbnB1dFwiOnJldHVybiBhPWIuZGF0YSxhPT09ZWUmJmZlP251bGw6YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbmZ1bmN0aW9uIGtlKGEsYil7aWYoaWUpcmV0dXJuXCJjb21wb3NpdGlvbmVuZFwiPT09YXx8IWFlJiZnZShhLGIpPyhhPW5kKCksbWQ9bGQ9a2Q9bnVsbCxpZT0hMSxhKTpudWxsO3N3aXRjaChhKXtjYXNlIFwicGFzdGVcIjpyZXR1cm4gbnVsbDtjYXNlIFwia2V5cHJlc3NcIjppZighKGIuY3RybEtleXx8Yi5hbHRLZXl8fGIubWV0YUtleSl8fGIuY3RybEtleSYmYi5hbHRLZXkpe2lmKGIuY2hhciYmMTxiLmNoYXIubGVuZ3RoKXJldHVybiBiLmNoYXI7aWYoYi53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gZGUmJlwia29cIiE9PWIubG9jYWxlP251bGw6Yi5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fVxudmFyIGxlPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLFwiZGF0ZXRpbWUtbG9jYWxcIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2Z1bmN0aW9uIG1lKGEpe3ZhciBiPWEmJmEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1iPyEhbGVbYS50eXBlXTpcInRleHRhcmVhXCI9PT1iPyEwOiExfWZ1bmN0aW9uIG5lKGEsYixjLGQpe0ViKGQpO2I9b2UoYixcIm9uQ2hhbmdlXCIpOzA8Yi5sZW5ndGgmJihjPW5ldyB0ZChcIm9uQ2hhbmdlXCIsXCJjaGFuZ2VcIixudWxsLGMsZCksYS5wdXNoKHtldmVudDpjLGxpc3RlbmVyczpifSkpfXZhciBwZT1udWxsLHFlPW51bGw7ZnVuY3Rpb24gcmUoYSl7c2UoYSwwKX1mdW5jdGlvbiB0ZShhKXt2YXIgYj11ZShhKTtpZihXYShiKSlyZXR1cm4gYX1cbmZ1bmN0aW9uIHZlKGEsYil7aWYoXCJjaGFuZ2VcIj09PWEpcmV0dXJuIGJ9dmFyIHdlPSExO2lmKGlhKXt2YXIgeGU7aWYoaWEpe3ZhciB5ZT1cIm9uaW5wdXRcImluIGRvY3VtZW50O2lmKCF5ZSl7dmFyIHplPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7emUuc2V0QXR0cmlidXRlKFwib25pbnB1dFwiLFwicmV0dXJuO1wiKTt5ZT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgemUub25pbnB1dH14ZT15ZX1lbHNlIHhlPSExO3dlPXhlJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OTxkb2N1bWVudC5kb2N1bWVudE1vZGUpfWZ1bmN0aW9uIEFlKCl7cGUmJihwZS5kZXRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixCZSkscWU9cGU9bnVsbCl9ZnVuY3Rpb24gQmUoYSl7aWYoXCJ2YWx1ZVwiPT09YS5wcm9wZXJ0eU5hbWUmJnRlKHFlKSl7dmFyIGI9W107bmUoYixxZSxhLHhiKGEpKTtKYihyZSxiKX19XG5mdW5jdGlvbiBDZShhLGIsYyl7XCJmb2N1c2luXCI9PT1hPyhBZSgpLHBlPWIscWU9YyxwZS5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixCZSkpOlwiZm9jdXNvdXRcIj09PWEmJkFlKCl9ZnVuY3Rpb24gRGUoYSl7aWYoXCJzZWxlY3Rpb25jaGFuZ2VcIj09PWF8fFwia2V5dXBcIj09PWF8fFwia2V5ZG93blwiPT09YSlyZXR1cm4gdGUocWUpfWZ1bmN0aW9uIEVlKGEsYil7aWYoXCJjbGlja1wiPT09YSlyZXR1cm4gdGUoYil9ZnVuY3Rpb24gRmUoYSxiKXtpZihcImlucHV0XCI9PT1hfHxcImNoYW5nZVwiPT09YSlyZXR1cm4gdGUoYil9ZnVuY3Rpb24gR2UoYSxiKXtyZXR1cm4gYT09PWImJigwIT09YXx8MS9hPT09MS9iKXx8YSE9PWEmJmIhPT1ifXZhciBIZT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczpHZTtcbmZ1bmN0aW9uIEllKGEsYil7aWYoSGUoYSxiKSlyZXR1cm4hMDtpZihcIm9iamVjdFwiIT09dHlwZW9mIGF8fG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGJ8fG51bGw9PT1iKXJldHVybiExO3ZhciBjPU9iamVjdC5rZXlzKGEpLGQ9T2JqZWN0LmtleXMoYik7aWYoYy5sZW5ndGghPT1kLmxlbmd0aClyZXR1cm4hMTtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO2lmKCFqYS5jYWxsKGIsZSl8fCFIZShhW2VdLGJbZV0pKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIEplKGEpe2Zvcig7YSYmYS5maXJzdENoaWxkOylhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX1cbmZ1bmN0aW9uIEtlKGEsYil7dmFyIGM9SmUoYSk7YT0wO2Zvcih2YXIgZDtjOyl7aWYoMz09PWMubm9kZVR5cGUpe2Q9YStjLnRleHRDb250ZW50Lmxlbmd0aDtpZihhPD1iJiZkPj1iKXJldHVybntub2RlOmMsb2Zmc2V0OmItYX07YT1kfWE6e2Zvcig7Yzspe2lmKGMubmV4dFNpYmxpbmcpe2M9Yy5uZXh0U2libGluZzticmVhayBhfWM9Yy5wYXJlbnROb2RlfWM9dm9pZCAwfWM9SmUoYyl9fWZ1bmN0aW9uIExlKGEsYil7cmV0dXJuIGEmJmI/YT09PWI/ITA6YSYmMz09PWEubm9kZVR5cGU/ITE6YiYmMz09PWIubm9kZVR5cGU/TGUoYSxiLnBhcmVudE5vZGUpOlwiY29udGFpbnNcImluIGE/YS5jb250YWlucyhiKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPyEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpOiExOiExfVxuZnVuY3Rpb24gTWUoKXtmb3IodmFyIGE9d2luZG93LGI9WGEoKTtiIGluc3RhbmNlb2YgYS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgYz1cInN0cmluZ1wiPT09dHlwZW9mIGIuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmfWNhdGNoKGQpe2M9ITF9aWYoYylhPWIuY29udGVudFdpbmRvdztlbHNlIGJyZWFrO2I9WGEoYS5kb2N1bWVudCl9cmV0dXJuIGJ9ZnVuY3Rpb24gTmUoYSl7dmFyIGI9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBiJiYoXCJpbnB1dFwiPT09YiYmKFwidGV4dFwiPT09YS50eXBlfHxcInNlYXJjaFwiPT09YS50eXBlfHxcInRlbFwiPT09YS50eXBlfHxcInVybFwiPT09YS50eXBlfHxcInBhc3N3b3JkXCI9PT1hLnR5cGUpfHxcInRleHRhcmVhXCI9PT1ifHxcInRydWVcIj09PWEuY29udGVudEVkaXRhYmxlKX1cbmZ1bmN0aW9uIE9lKGEpe3ZhciBiPU1lKCksYz1hLmZvY3VzZWRFbGVtLGQ9YS5zZWxlY3Rpb25SYW5nZTtpZihiIT09YyYmYyYmYy5vd25lckRvY3VtZW50JiZMZShjLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGMpKXtpZihudWxsIT09ZCYmTmUoYykpaWYoYj1kLnN0YXJ0LGE9ZC5lbmQsdm9pZCAwPT09YSYmKGE9YiksXCJzZWxlY3Rpb25TdGFydFwiaW4gYyljLnNlbGVjdGlvblN0YXJ0PWIsYy5zZWxlY3Rpb25FbmQ9TWF0aC5taW4oYSxjLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihhPShiPWMub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZiLmRlZmF1bHRWaWV3fHx3aW5kb3csYS5nZXRTZWxlY3Rpb24pe2E9YS5nZXRTZWxlY3Rpb24oKTt2YXIgZT1jLnRleHRDb250ZW50Lmxlbmd0aCxmPU1hdGgubWluKGQuc3RhcnQsZSk7ZD12b2lkIDA9PT1kLmVuZD9mOk1hdGgubWluKGQuZW5kLGUpOyFhLmV4dGVuZCYmZj5kJiYoZT1kLGQ9ZixmPWUpO2U9S2UoYyxmKTt2YXIgZz1LZShjLFxuZCk7ZSYmZyYmKDEhPT1hLnJhbmdlQ291bnR8fGEuYW5jaG9yTm9kZSE9PWUubm9kZXx8YS5hbmNob3JPZmZzZXQhPT1lLm9mZnNldHx8YS5mb2N1c05vZGUhPT1nLm5vZGV8fGEuZm9jdXNPZmZzZXQhPT1nLm9mZnNldCkmJihiPWIuY3JlYXRlUmFuZ2UoKSxiLnNldFN0YXJ0KGUubm9kZSxlLm9mZnNldCksYS5yZW1vdmVBbGxSYW5nZXMoKSxmPmQ/KGEuYWRkUmFuZ2UoYiksYS5leHRlbmQoZy5ub2RlLGcub2Zmc2V0KSk6KGIuc2V0RW5kKGcubm9kZSxnLm9mZnNldCksYS5hZGRSYW5nZShiKSkpfWI9W107Zm9yKGE9YzthPWEucGFyZW50Tm9kZTspMT09PWEubm9kZVR5cGUmJmIucHVzaCh7ZWxlbWVudDphLGxlZnQ6YS5zY3JvbGxMZWZ0LHRvcDphLnNjcm9sbFRvcH0pO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBjLmZvY3VzJiZjLmZvY3VzKCk7Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKylhPWJbY10sYS5lbGVtZW50LnNjcm9sbExlZnQ9YS5sZWZ0LGEuZWxlbWVudC5zY3JvbGxUb3A9YS50b3B9fVxudmFyIFBlPWlhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJjExPj1kb2N1bWVudC5kb2N1bWVudE1vZGUsUWU9bnVsbCxSZT1udWxsLFNlPW51bGwsVGU9ITE7XG5mdW5jdGlvbiBVZShhLGIsYyl7dmFyIGQ9Yy53aW5kb3c9PT1jP2MuZG9jdW1lbnQ6OT09PWMubm9kZVR5cGU/YzpjLm93bmVyRG9jdW1lbnQ7VGV8fG51bGw9PVFlfHxRZSE9PVhhKGQpfHwoZD1RZSxcInNlbGVjdGlvblN0YXJ0XCJpbiBkJiZOZShkKT9kPXtzdGFydDpkLnNlbGVjdGlvblN0YXJ0LGVuZDpkLnNlbGVjdGlvbkVuZH06KGQ9KGQub3duZXJEb2N1bWVudCYmZC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLGQ9e2FuY2hvck5vZGU6ZC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpkLmFuY2hvck9mZnNldCxmb2N1c05vZGU6ZC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6ZC5mb2N1c09mZnNldH0pLFNlJiZJZShTZSxkKXx8KFNlPWQsZD1vZShSZSxcIm9uU2VsZWN0XCIpLDA8ZC5sZW5ndGgmJihiPW5ldyB0ZChcIm9uU2VsZWN0XCIsXCJzZWxlY3RcIixudWxsLGIsYyksYS5wdXNoKHtldmVudDpiLGxpc3RlbmVyczpkfSksYi50YXJnZXQ9UWUpKSl9XG5mdW5jdGlvbiBWZShhLGIpe3ZhciBjPXt9O2NbYS50b0xvd2VyQ2FzZSgpXT1iLnRvTG93ZXJDYXNlKCk7Y1tcIldlYmtpdFwiK2FdPVwid2Via2l0XCIrYjtjW1wiTW96XCIrYV09XCJtb3pcIitiO3JldHVybiBjfXZhciBXZT17YW5pbWF0aW9uZW5kOlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25FbmRcIiksYW5pbWF0aW9uaXRlcmF0aW9uOlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25JdGVyYXRpb25cIiksYW5pbWF0aW9uc3RhcnQ6VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvblN0YXJ0XCIpLHRyYW5zaXRpb25lbmQ6VmUoXCJUcmFuc2l0aW9uXCIsXCJUcmFuc2l0aW9uRW5kXCIpfSxYZT17fSxZZT17fTtcbmlhJiYoWWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKS5zdHlsZSxcIkFuaW1hdGlvbkV2ZW50XCJpbiB3aW5kb3d8fChkZWxldGUgV2UuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgV2UuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgV2UuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSxcIlRyYW5zaXRpb25FdmVudFwiaW4gd2luZG93fHxkZWxldGUgV2UudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTtmdW5jdGlvbiBaZShhKXtpZihYZVthXSlyZXR1cm4gWGVbYV07aWYoIVdlW2FdKXJldHVybiBhO3ZhciBiPVdlW2FdLGM7Zm9yKGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpJiZjIGluIFllKXJldHVybiBYZVthXT1iW2NdO3JldHVybiBhfXZhciAkZT1aZShcImFuaW1hdGlvbmVuZFwiKSxhZj1aZShcImFuaW1hdGlvbml0ZXJhdGlvblwiKSxiZj1aZShcImFuaW1hdGlvbnN0YXJ0XCIpLGNmPVplKFwidHJhbnNpdGlvbmVuZFwiKSxkZj1uZXcgTWFwLGVmPVwiYWJvcnQgYXV4Q2xpY2sgY2FuY2VsIGNhblBsYXkgY2FuUGxheVRocm91Z2ggY2xpY2sgY2xvc2UgY29udGV4dE1lbnUgY29weSBjdXQgZHJhZyBkcmFnRW5kIGRyYWdFbnRlciBkcmFnRXhpdCBkcmFnTGVhdmUgZHJhZ092ZXIgZHJhZ1N0YXJ0IGRyb3AgZHVyYXRpb25DaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgZ290UG9pbnRlckNhcHR1cmUgaW5wdXQgaW52YWxpZCBrZXlEb3duIGtleVByZXNzIGtleVVwIGxvYWQgbG9hZGVkRGF0YSBsb2FkZWRNZXRhZGF0YSBsb2FkU3RhcnQgbG9zdFBvaW50ZXJDYXB0dXJlIG1vdXNlRG93biBtb3VzZU1vdmUgbW91c2VPdXQgbW91c2VPdmVyIG1vdXNlVXAgcGFzdGUgcGF1c2UgcGxheSBwbGF5aW5nIHBvaW50ZXJDYW5jZWwgcG9pbnRlckRvd24gcG9pbnRlck1vdmUgcG9pbnRlck91dCBwb2ludGVyT3ZlciBwb2ludGVyVXAgcHJvZ3Jlc3MgcmF0ZUNoYW5nZSByZXNldCByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1lVXBkYXRlIHRvdWNoQ2FuY2VsIHRvdWNoRW5kIHRvdWNoU3RhcnQgdm9sdW1lQ2hhbmdlIHNjcm9sbCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWxcIi5zcGxpdChcIiBcIik7XG5mdW5jdGlvbiBmZihhLGIpe2RmLnNldChhLGIpO2ZhKGIsW2FdKX1mb3IodmFyIGdmPTA7Z2Y8ZWYubGVuZ3RoO2dmKyspe3ZhciBoZj1lZltnZl0samY9aGYudG9Mb3dlckNhc2UoKSxrZj1oZlswXS50b1VwcGVyQ2FzZSgpK2hmLnNsaWNlKDEpO2ZmKGpmLFwib25cIitrZil9ZmYoJGUsXCJvbkFuaW1hdGlvbkVuZFwiKTtmZihhZixcIm9uQW5pbWF0aW9uSXRlcmF0aW9uXCIpO2ZmKGJmLFwib25BbmltYXRpb25TdGFydFwiKTtmZihcImRibGNsaWNrXCIsXCJvbkRvdWJsZUNsaWNrXCIpO2ZmKFwiZm9jdXNpblwiLFwib25Gb2N1c1wiKTtmZihcImZvY3Vzb3V0XCIsXCJvbkJsdXJcIik7ZmYoY2YsXCJvblRyYW5zaXRpb25FbmRcIik7aGEoXCJvbk1vdXNlRW50ZXJcIixbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdKTtoYShcIm9uTW91c2VMZWF2ZVwiLFtcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl0pO2hhKFwib25Qb2ludGVyRW50ZXJcIixbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXSk7XG5oYShcIm9uUG9pbnRlckxlYXZlXCIsW1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl0pO2ZhKFwib25DaGFuZ2VcIixcImNoYW5nZSBjbGljayBmb2N1c2luIGZvY3Vzb3V0IGlucHV0IGtleWRvd24ga2V5dXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uU2VsZWN0XCIsXCJmb2N1c291dCBjb250ZXh0bWVudSBkcmFnZW5kIGZvY3VzaW4ga2V5ZG93biBrZXl1cCBtb3VzZWRvd24gbW91c2V1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIikpO2ZhKFwib25CZWZvcmVJbnB1dFwiLFtcImNvbXBvc2l0aW9uZW5kXCIsXCJrZXlwcmVzc1wiLFwidGV4dElucHV0XCIsXCJwYXN0ZVwiXSk7ZmEoXCJvbkNvbXBvc2l0aW9uRW5kXCIsXCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvbkNvbXBvc2l0aW9uU3RhcnRcIixcImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO1xuZmEoXCJvbkNvbXBvc2l0aW9uVXBkYXRlXCIsXCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7dmFyIGxmPVwiYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmdcIi5zcGxpdChcIiBcIiksbWY9bmV3IFNldChcImNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHRvZ2dsZVwiLnNwbGl0KFwiIFwiKS5jb25jYXQobGYpKTtcbmZ1bmN0aW9uIG5mKGEsYixjKXt2YXIgZD1hLnR5cGV8fFwidW5rbm93bi1ldmVudFwiO2EuY3VycmVudFRhcmdldD1jO1ViKGQsYix2b2lkIDAsYSk7YS5jdXJyZW50VGFyZ2V0PW51bGx9XG5mdW5jdGlvbiBzZShhLGIpe2I9MCE9PShiJjQpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9ZC5ldmVudDtkPWQubGlzdGVuZXJzO2E6e3ZhciBmPXZvaWQgMDtpZihiKWZvcih2YXIgZz1kLmxlbmd0aC0xOzA8PWc7Zy0tKXt2YXIgaD1kW2ddLGs9aC5pbnN0YW5jZSxsPWguY3VycmVudFRhcmdldDtoPWgubGlzdGVuZXI7aWYoayE9PWYmJmUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBhO25mKGUsaCxsKTtmPWt9ZWxzZSBmb3IoZz0wO2c8ZC5sZW5ndGg7ZysrKXtoPWRbZ107az1oLmluc3RhbmNlO2w9aC5jdXJyZW50VGFyZ2V0O2g9aC5saXN0ZW5lcjtpZihrIT09ZiYmZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGE7bmYoZSxoLGwpO2Y9a319fWlmKFFiKXRocm93IGE9UmIsUWI9ITEsUmI9bnVsbCxhO31cbmZ1bmN0aW9uIEQoYSxiKXt2YXIgYz1iW29mXTt2b2lkIDA9PT1jJiYoYz1iW29mXT1uZXcgU2V0KTt2YXIgZD1hK1wiX19idWJibGVcIjtjLmhhcyhkKXx8KHBmKGIsYSwyLCExKSxjLmFkZChkKSl9ZnVuY3Rpb24gcWYoYSxiLGMpe3ZhciBkPTA7YiYmKGR8PTQpO3BmKGMsYSxkLGIpfXZhciByZj1cIl9yZWFjdExpc3RlbmluZ1wiK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO2Z1bmN0aW9uIHNmKGEpe2lmKCFhW3JmXSl7YVtyZl09ITA7ZGEuZm9yRWFjaChmdW5jdGlvbihiKXtcInNlbGVjdGlvbmNoYW5nZVwiIT09YiYmKG1mLmhhcyhiKXx8cWYoYiwhMSxhKSxxZihiLCEwLGEpKX0pO3ZhciBiPTk9PT1hLm5vZGVUeXBlP2E6YS5vd25lckRvY3VtZW50O251bGw9PT1ifHxiW3JmXXx8KGJbcmZdPSEwLHFmKFwic2VsZWN0aW9uY2hhbmdlXCIsITEsYikpfX1cbmZ1bmN0aW9uIHBmKGEsYixjLGQpe3N3aXRjaChqZChiKSl7Y2FzZSAxOnZhciBlPWVkO2JyZWFrO2Nhc2UgNDplPWdkO2JyZWFrO2RlZmF1bHQ6ZT1mZH1jPWUuYmluZChudWxsLGIsYyxhKTtlPXZvaWQgMDshTGJ8fFwidG91Y2hzdGFydFwiIT09YiYmXCJ0b3VjaG1vdmVcIiE9PWImJlwid2hlZWxcIiE9PWJ8fChlPSEwKTtkP3ZvaWQgMCE9PWU/YS5hZGRFdmVudExpc3RlbmVyKGIsYyx7Y2FwdHVyZTohMCxwYXNzaXZlOmV9KTphLmFkZEV2ZW50TGlzdGVuZXIoYixjLCEwKTp2b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse3Bhc3NpdmU6ZX0pOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITEpfVxuZnVuY3Rpb24gaGQoYSxiLGMsZCxlKXt2YXIgZj1kO2lmKDA9PT0oYiYxKSYmMD09PShiJjIpJiZudWxsIT09ZClhOmZvcig7Oyl7aWYobnVsbD09PWQpcmV0dXJuO3ZhciBnPWQudGFnO2lmKDM9PT1nfHw0PT09Zyl7dmFyIGg9ZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztpZihoPT09ZXx8OD09PWgubm9kZVR5cGUmJmgucGFyZW50Tm9kZT09PWUpYnJlYWs7aWYoND09PWcpZm9yKGc9ZC5yZXR1cm47bnVsbCE9PWc7KXt2YXIgaz1nLnRhZztpZigzPT09a3x8ND09PWspaWYoaz1nLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGs9PT1lfHw4PT09ay5ub2RlVHlwZSYmay5wYXJlbnROb2RlPT09ZSlyZXR1cm47Zz1nLnJldHVybn1mb3IoO251bGwhPT1oOyl7Zz1XYyhoKTtpZihudWxsPT09ZylyZXR1cm47az1nLnRhZztpZig1PT09a3x8Nj09PWspe2Q9Zj1nO2NvbnRpbnVlIGF9aD1oLnBhcmVudE5vZGV9fWQ9ZC5yZXR1cm59SmIoZnVuY3Rpb24oKXt2YXIgZD1mLGU9eGIoYyksZz1bXTtcbmE6e3ZhciBoPWRmLmdldChhKTtpZih2b2lkIDAhPT1oKXt2YXIgaz10ZCxuPWE7c3dpdGNoKGEpe2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDA9PT1vZChjKSlicmVhayBhO2Nhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXVwXCI6az1SZDticmVhaztjYXNlIFwiZm9jdXNpblwiOm49XCJmb2N1c1wiO2s9RmQ7YnJlYWs7Y2FzZSBcImZvY3Vzb3V0XCI6bj1cImJsdXJcIjtrPUZkO2JyZWFrO2Nhc2UgXCJiZWZvcmVibHVyXCI6Y2FzZSBcImFmdGVyYmx1clwiOms9RmQ7YnJlYWs7Y2FzZSBcImNsaWNrXCI6aWYoMj09PWMuYnV0dG9uKWJyZWFrIGE7Y2FzZSBcImF1eGNsaWNrXCI6Y2FzZSBcImRibGNsaWNrXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJtb3VzZW1vdmVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJtb3VzZW91dFwiOmNhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwiY29udGV4dG1lbnVcIjprPUJkO2JyZWFrO2Nhc2UgXCJkcmFnXCI6Y2FzZSBcImRyYWdlbmRcIjpjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdleGl0XCI6Y2FzZSBcImRyYWdsZWF2ZVwiOmNhc2UgXCJkcmFnb3ZlclwiOmNhc2UgXCJkcmFnc3RhcnRcIjpjYXNlIFwiZHJvcFwiOms9XG5EZDticmVhaztjYXNlIFwidG91Y2hjYW5jZWxcIjpjYXNlIFwidG91Y2hlbmRcIjpjYXNlIFwidG91Y2htb3ZlXCI6Y2FzZSBcInRvdWNoc3RhcnRcIjprPVZkO2JyZWFrO2Nhc2UgJGU6Y2FzZSBhZjpjYXNlIGJmOms9SGQ7YnJlYWs7Y2FzZSBjZjprPVhkO2JyZWFrO2Nhc2UgXCJzY3JvbGxcIjprPXZkO2JyZWFrO2Nhc2UgXCJ3aGVlbFwiOms9WmQ7YnJlYWs7Y2FzZSBcImNvcHlcIjpjYXNlIFwiY3V0XCI6Y2FzZSBcInBhc3RlXCI6az1KZDticmVhaztjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcInBvaW50ZXJjYW5jZWxcIjpjYXNlIFwicG9pbnRlcmRvd25cIjpjYXNlIFwicG9pbnRlcm1vdmVcIjpjYXNlIFwicG9pbnRlcm91dFwiOmNhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJwb2ludGVydXBcIjprPVRkfXZhciB0PTAhPT0oYiY0KSxKPSF0JiZcInNjcm9sbFwiPT09YSx4PXQ/bnVsbCE9PWg/aCtcIkNhcHR1cmVcIjpudWxsOmg7dD1bXTtmb3IodmFyIHc9ZCx1O251bGwhPT1cbnc7KXt1PXc7dmFyIEY9dS5zdGF0ZU5vZGU7NT09PXUudGFnJiZudWxsIT09RiYmKHU9RixudWxsIT09eCYmKEY9S2Iodyx4KSxudWxsIT1GJiZ0LnB1c2godGYodyxGLHUpKSkpO2lmKEopYnJlYWs7dz13LnJldHVybn0wPHQubGVuZ3RoJiYoaD1uZXcgayhoLG4sbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6aCxsaXN0ZW5lcnM6dH0pKX19aWYoMD09PShiJjcpKXthOntoPVwibW91c2VvdmVyXCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hO2s9XCJtb3VzZW91dFwiPT09YXx8XCJwb2ludGVyb3V0XCI9PT1hO2lmKGgmJmMhPT13YiYmKG49Yy5yZWxhdGVkVGFyZ2V0fHxjLmZyb21FbGVtZW50KSYmKFdjKG4pfHxuW3VmXSkpYnJlYWsgYTtpZihrfHxoKXtoPWUud2luZG93PT09ZT9lOihoPWUub3duZXJEb2N1bWVudCk/aC5kZWZhdWx0Vmlld3x8aC5wYXJlbnRXaW5kb3c6d2luZG93O2lmKGspe2lmKG49Yy5yZWxhdGVkVGFyZ2V0fHxjLnRvRWxlbWVudCxrPWQsbj1uP1djKG4pOm51bGwsbnVsbCE9PVxubiYmKEo9VmIobiksbiE9PUp8fDUhPT1uLnRhZyYmNiE9PW4udGFnKSluPW51bGx9ZWxzZSBrPW51bGwsbj1kO2lmKGshPT1uKXt0PUJkO0Y9XCJvbk1vdXNlTGVhdmVcIjt4PVwib25Nb3VzZUVudGVyXCI7dz1cIm1vdXNlXCI7aWYoXCJwb2ludGVyb3V0XCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hKXQ9VGQsRj1cIm9uUG9pbnRlckxlYXZlXCIseD1cIm9uUG9pbnRlckVudGVyXCIsdz1cInBvaW50ZXJcIjtKPW51bGw9PWs/aDp1ZShrKTt1PW51bGw9PW4/aDp1ZShuKTtoPW5ldyB0KEYsdytcImxlYXZlXCIsayxjLGUpO2gudGFyZ2V0PUo7aC5yZWxhdGVkVGFyZ2V0PXU7Rj1udWxsO1djKGUpPT09ZCYmKHQ9bmV3IHQoeCx3K1wiZW50ZXJcIixuLGMsZSksdC50YXJnZXQ9dSx0LnJlbGF0ZWRUYXJnZXQ9SixGPXQpO0o9RjtpZihrJiZuKWI6e3Q9azt4PW47dz0wO2Zvcih1PXQ7dTt1PXZmKHUpKXcrKzt1PTA7Zm9yKEY9eDtGO0Y9dmYoRikpdSsrO2Zvcig7MDx3LXU7KXQ9dmYodCksdy0tO2Zvcig7MDx1LXc7KXg9XG52Zih4KSx1LS07Zm9yKDt3LS07KXtpZih0PT09eHx8bnVsbCE9PXgmJnQ9PT14LmFsdGVybmF0ZSlicmVhayBiO3Q9dmYodCk7eD12Zih4KX10PW51bGx9ZWxzZSB0PW51bGw7bnVsbCE9PWsmJndmKGcsaCxrLHQsITEpO251bGwhPT1uJiZudWxsIT09SiYmd2YoZyxKLG4sdCwhMCl9fX1hOntoPWQ/dWUoZCk6d2luZG93O2s9aC5ub2RlTmFtZSYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKFwic2VsZWN0XCI9PT1rfHxcImlucHV0XCI9PT1rJiZcImZpbGVcIj09PWgudHlwZSl2YXIgbmE9dmU7ZWxzZSBpZihtZShoKSlpZih3ZSluYT1GZTtlbHNle25hPURlO3ZhciB4YT1DZX1lbHNlKGs9aC5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWsudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWgudHlwZXx8XCJyYWRpb1wiPT09aC50eXBlKSYmKG5hPUVlKTtpZihuYSYmKG5hPW5hKGEsZCkpKXtuZShnLG5hLGMsZSk7YnJlYWsgYX14YSYmeGEoYSxoLGQpO1wiZm9jdXNvdXRcIj09PWEmJih4YT1oLl93cmFwcGVyU3RhdGUpJiZcbnhhLmNvbnRyb2xsZWQmJlwibnVtYmVyXCI9PT1oLnR5cGUmJmNiKGgsXCJudW1iZXJcIixoLnZhbHVlKX14YT1kP3VlKGQpOndpbmRvdztzd2l0Y2goYSl7Y2FzZSBcImZvY3VzaW5cIjppZihtZSh4YSl8fFwidHJ1ZVwiPT09eGEuY29udGVudEVkaXRhYmxlKVFlPXhhLFJlPWQsU2U9bnVsbDticmVhaztjYXNlIFwiZm9jdXNvdXRcIjpTZT1SZT1RZT1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZWRvd25cIjpUZT0hMDticmVhaztjYXNlIFwiY29udGV4dG1lbnVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJkcmFnZW5kXCI6VGU9ITE7VWUoZyxjLGUpO2JyZWFrO2Nhc2UgXCJzZWxlY3Rpb25jaGFuZ2VcIjppZihQZSlicmVhaztjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXl1cFwiOlVlKGcsYyxlKX12YXIgJGE7aWYoYWUpYjp7c3dpdGNoKGEpe2Nhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6dmFyIGJhPVwib25Db21wb3NpdGlvblN0YXJ0XCI7YnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpiYT1cIm9uQ29tcG9zaXRpb25FbmRcIjtcbmJyZWFrIGI7Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6YmE9XCJvbkNvbXBvc2l0aW9uVXBkYXRlXCI7YnJlYWsgYn1iYT12b2lkIDB9ZWxzZSBpZT9nZShhLGMpJiYoYmE9XCJvbkNvbXBvc2l0aW9uRW5kXCIpOlwia2V5ZG93blwiPT09YSYmMjI5PT09Yy5rZXlDb2RlJiYoYmE9XCJvbkNvbXBvc2l0aW9uU3RhcnRcIik7YmEmJihkZSYmXCJrb1wiIT09Yy5sb2NhbGUmJihpZXx8XCJvbkNvbXBvc2l0aW9uU3RhcnRcIiE9PWJhP1wib25Db21wb3NpdGlvbkVuZFwiPT09YmEmJmllJiYoJGE9bmQoKSk6KGtkPWUsbGQ9XCJ2YWx1ZVwiaW4ga2Q/a2QudmFsdWU6a2QudGV4dENvbnRlbnQsaWU9ITApKSx4YT1vZShkLGJhKSwwPHhhLmxlbmd0aCYmKGJhPW5ldyBMZChiYSxhLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmJhLGxpc3RlbmVyczp4YX0pLCRhP2JhLmRhdGE9JGE6KCRhPWhlKGMpLG51bGwhPT0kYSYmKGJhLmRhdGE9JGEpKSkpO2lmKCRhPWNlP2plKGEsYyk6a2UoYSxjKSlkPW9lKGQsXCJvbkJlZm9yZUlucHV0XCIpLFxuMDxkLmxlbmd0aCYmKGU9bmV3IExkKFwib25CZWZvcmVJbnB1dFwiLFwiYmVmb3JlaW5wdXRcIixudWxsLGMsZSksZy5wdXNoKHtldmVudDplLGxpc3RlbmVyczpkfSksZS5kYXRhPSRhKX1zZShnLGIpfSl9ZnVuY3Rpb24gdGYoYSxiLGMpe3JldHVybntpbnN0YW5jZTphLGxpc3RlbmVyOmIsY3VycmVudFRhcmdldDpjfX1mdW5jdGlvbiBvZShhLGIpe2Zvcih2YXIgYz1iK1wiQ2FwdHVyZVwiLGQ9W107bnVsbCE9PWE7KXt2YXIgZT1hLGY9ZS5zdGF0ZU5vZGU7NT09PWUudGFnJiZudWxsIT09ZiYmKGU9ZixmPUtiKGEsYyksbnVsbCE9ZiYmZC51bnNoaWZ0KHRmKGEsZixlKSksZj1LYihhLGIpLG51bGwhPWYmJmQucHVzaCh0ZihhLGYsZSkpKTthPWEucmV0dXJufXJldHVybiBkfWZ1bmN0aW9uIHZmKGEpe2lmKG51bGw9PT1hKXJldHVybiBudWxsO2RvIGE9YS5yZXR1cm47d2hpbGUoYSYmNSE9PWEudGFnKTtyZXR1cm4gYT9hOm51bGx9XG5mdW5jdGlvbiB3ZihhLGIsYyxkLGUpe2Zvcih2YXIgZj1iLl9yZWFjdE5hbWUsZz1bXTtudWxsIT09YyYmYyE9PWQ7KXt2YXIgaD1jLGs9aC5hbHRlcm5hdGUsbD1oLnN0YXRlTm9kZTtpZihudWxsIT09ayYmaz09PWQpYnJlYWs7NT09PWgudGFnJiZudWxsIT09bCYmKGg9bCxlPyhrPUtiKGMsZiksbnVsbCE9ayYmZy51bnNoaWZ0KHRmKGMsayxoKSkpOmV8fChrPUtiKGMsZiksbnVsbCE9ayYmZy5wdXNoKHRmKGMsayxoKSkpKTtjPWMucmV0dXJufTAhPT1nLmxlbmd0aCYmYS5wdXNoKHtldmVudDpiLGxpc3RlbmVyczpnfSl9dmFyIHhmPS9cXHJcXG4/L2cseWY9L1xcdTAwMDB8XFx1RkZGRC9nO2Z1bmN0aW9uIHpmKGEpe3JldHVybihcInN0cmluZ1wiPT09dHlwZW9mIGE/YTpcIlwiK2EpLnJlcGxhY2UoeGYsXCJcXG5cIikucmVwbGFjZSh5ZixcIlwiKX1mdW5jdGlvbiBBZihhLGIsYyl7Yj16ZihiKTtpZih6ZihhKSE9PWImJmMpdGhyb3cgRXJyb3IocCg0MjUpKTt9ZnVuY3Rpb24gQmYoKXt9XG52YXIgQ2Y9bnVsbCxEZj1udWxsO2Z1bmN0aW9uIEVmKGEsYil7cmV0dXJuXCJ0ZXh0YXJlYVwiPT09YXx8XCJub3NjcmlwdFwiPT09YXx8XCJzdHJpbmdcIj09PXR5cGVvZiBiLmNoaWxkcmVufHxcIm51bWJlclwiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwib2JqZWN0XCI9PT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfVxudmFyIEZmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6dm9pZCAwLEdmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMCxIZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgUHJvbWlzZT9Qcm9taXNlOnZvaWQgMCxKZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgcXVldWVNaWNyb3Rhc2s/cXVldWVNaWNyb3Rhc2s6XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBIZj9mdW5jdGlvbihhKXtyZXR1cm4gSGYucmVzb2x2ZShudWxsKS50aGVuKGEpLmNhdGNoKElmKX06RmY7ZnVuY3Rpb24gSWYoYSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGE7fSl9XG5mdW5jdGlvbiBLZihhLGIpe3ZhciBjPWIsZD0wO2Rve3ZhciBlPWMubmV4dFNpYmxpbmc7YS5yZW1vdmVDaGlsZChjKTtpZihlJiY4PT09ZS5ub2RlVHlwZSlpZihjPWUuZGF0YSxcIi8kXCI9PT1jKXtpZigwPT09ZCl7YS5yZW1vdmVDaGlsZChlKTtiZChiKTtyZXR1cm59ZC0tfWVsc2VcIiRcIiE9PWMmJlwiJD9cIiE9PWMmJlwiJCFcIiE9PWN8fGQrKztjPWV9d2hpbGUoYyk7YmQoYil9ZnVuY3Rpb24gTGYoYSl7Zm9yKDtudWxsIT1hO2E9YS5uZXh0U2libGluZyl7dmFyIGI9YS5ub2RlVHlwZTtpZigxPT09Ynx8Mz09PWIpYnJlYWs7aWYoOD09PWIpe2I9YS5kYXRhO2lmKFwiJFwiPT09Ynx8XCIkIVwiPT09Ynx8XCIkP1wiPT09YilicmVhaztpZihcIi8kXCI9PT1iKXJldHVybiBudWxsfX1yZXR1cm4gYX1cbmZ1bmN0aW9uIE1mKGEpe2E9YS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciBiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoXCIkXCI9PT1jfHxcIiQhXCI9PT1jfHxcIiQ/XCI9PT1jKXtpZigwPT09YilyZXR1cm4gYTtiLS19ZWxzZVwiLyRcIj09PWMmJmIrK31hPWEucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfXZhciBOZj1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxPZj1cIl9fcmVhY3RGaWJlciRcIitOZixQZj1cIl9fcmVhY3RQcm9wcyRcIitOZix1Zj1cIl9fcmVhY3RDb250YWluZXIkXCIrTmYsb2Y9XCJfX3JlYWN0RXZlbnRzJFwiK05mLFFmPVwiX19yZWFjdExpc3RlbmVycyRcIitOZixSZj1cIl9fcmVhY3RIYW5kbGVzJFwiK05mO1xuZnVuY3Rpb24gV2MoYSl7dmFyIGI9YVtPZl07aWYoYilyZXR1cm4gYjtmb3IodmFyIGM9YS5wYXJlbnROb2RlO2M7KXtpZihiPWNbdWZdfHxjW09mXSl7Yz1iLmFsdGVybmF0ZTtpZihudWxsIT09Yi5jaGlsZHx8bnVsbCE9PWMmJm51bGwhPT1jLmNoaWxkKWZvcihhPU1mKGEpO251bGwhPT1hOyl7aWYoYz1hW09mXSlyZXR1cm4gYzthPU1mKGEpfXJldHVybiBifWE9YztjPWEucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBDYihhKXthPWFbT2ZdfHxhW3VmXTtyZXR1cm4hYXx8NSE9PWEudGFnJiY2IT09YS50YWcmJjEzIT09YS50YWcmJjMhPT1hLnRhZz9udWxsOmF9ZnVuY3Rpb24gdWUoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGEuc3RhdGVOb2RlO3Rocm93IEVycm9yKHAoMzMpKTt9ZnVuY3Rpb24gRGIoYSl7cmV0dXJuIGFbUGZdfHxudWxsfXZhciBTZj1bXSxUZj0tMTtmdW5jdGlvbiBVZihhKXtyZXR1cm57Y3VycmVudDphfX1cbmZ1bmN0aW9uIEUoYSl7MD5UZnx8KGEuY3VycmVudD1TZltUZl0sU2ZbVGZdPW51bGwsVGYtLSl9ZnVuY3Rpb24gRyhhLGIpe1RmKys7U2ZbVGZdPWEuY3VycmVudDthLmN1cnJlbnQ9Yn12YXIgVmY9e30sSD1VZihWZiksV2Y9VWYoITEpLFhmPVZmO2Z1bmN0aW9uIFlmKGEsYil7dmFyIGM9YS50eXBlLmNvbnRleHRUeXBlcztpZighYylyZXR1cm4gVmY7dmFyIGQ9YS5zdGF0ZU5vZGU7aWYoZCYmZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PT09YilyZXR1cm4gZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dDt2YXIgZT17fSxmO2ZvcihmIGluIGMpZVtmXT1iW2ZdO2QmJihhPWEuc3RhdGVOb2RlLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1iLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9ZSk7cmV0dXJuIGV9XG5mdW5jdGlvbiBaZihhKXthPWEuY2hpbGRDb250ZXh0VHlwZXM7cmV0dXJuIG51bGwhPT1hJiZ2b2lkIDAhPT1hfWZ1bmN0aW9uICRmKCl7RShXZik7RShIKX1mdW5jdGlvbiBhZyhhLGIsYyl7aWYoSC5jdXJyZW50IT09VmYpdGhyb3cgRXJyb3IocCgxNjgpKTtHKEgsYik7RyhXZixjKX1mdW5jdGlvbiBiZyhhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7Yj1iLmNoaWxkQ29udGV4dFR5cGVzO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBkLmdldENoaWxkQ29udGV4dClyZXR1cm4gYztkPWQuZ2V0Q2hpbGRDb250ZXh0KCk7Zm9yKHZhciBlIGluIGQpaWYoIShlIGluIGIpKXRocm93IEVycm9yKHAoMTA4LFJhKGEpfHxcIlVua25vd25cIixlKSk7cmV0dXJuIEEoe30sYyxkKX1cbmZ1bmN0aW9uIGNnKGEpe2E9KGE9YS5zdGF0ZU5vZGUpJiZhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0fHxWZjtYZj1ILmN1cnJlbnQ7RyhILGEpO0coV2YsV2YuY3VycmVudCk7cmV0dXJuITB9ZnVuY3Rpb24gZGcoYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2lmKCFkKXRocm93IEVycm9yKHAoMTY5KSk7Yz8oYT1iZyhhLGIsWGYpLGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ9YSxFKFdmKSxFKEgpLEcoSCxhKSk6RShXZik7RyhXZixjKX12YXIgZWc9bnVsbCxmZz0hMSxnZz0hMTtmdW5jdGlvbiBoZyhhKXtudWxsPT09ZWc/ZWc9W2FdOmVnLnB1c2goYSl9ZnVuY3Rpb24gaWcoYSl7Zmc9ITA7aGcoYSl9XG5mdW5jdGlvbiBqZygpe2lmKCFnZyYmbnVsbCE9PWVnKXtnZz0hMDt2YXIgYT0wLGI9Qzt0cnl7dmFyIGM9ZWc7Zm9yKEM9MTthPGMubGVuZ3RoO2ErKyl7dmFyIGQ9Y1thXTtkbyBkPWQoITApO3doaWxlKG51bGwhPT1kKX1lZz1udWxsO2ZnPSExfWNhdGNoKGUpe3Rocm93IG51bGwhPT1lZyYmKGVnPWVnLnNsaWNlKGErMSkpLGFjKGZjLGpnKSxlO31maW5hbGx5e0M9YixnZz0hMX19cmV0dXJuIG51bGx9dmFyIGtnPVtdLGxnPTAsbWc9bnVsbCxuZz0wLG9nPVtdLHBnPTAscWc9bnVsbCxyZz0xLHNnPVwiXCI7ZnVuY3Rpb24gdGcoYSxiKXtrZ1tsZysrXT1uZztrZ1tsZysrXT1tZzttZz1hO25nPWJ9XG5mdW5jdGlvbiB1ZyhhLGIsYyl7b2dbcGcrK109cmc7b2dbcGcrK109c2c7b2dbcGcrK109cWc7cWc9YTt2YXIgZD1yZzthPXNnO3ZhciBlPTMyLW9jKGQpLTE7ZCY9figxPDxlKTtjKz0xO3ZhciBmPTMyLW9jKGIpK2U7aWYoMzA8Zil7dmFyIGc9ZS1lJTU7Zj0oZCYoMTw8ZyktMSkudG9TdHJpbmcoMzIpO2Q+Pj1nO2UtPWc7cmc9MTw8MzItb2MoYikrZXxjPDxlfGQ7c2c9ZithfWVsc2Ugcmc9MTw8ZnxjPDxlfGQsc2c9YX1mdW5jdGlvbiB2ZyhhKXtudWxsIT09YS5yZXR1cm4mJih0ZyhhLDEpLHVnKGEsMSwwKSl9ZnVuY3Rpb24gd2coYSl7Zm9yKDthPT09bWc7KW1nPWtnWy0tbGddLGtnW2xnXT1udWxsLG5nPWtnWy0tbGddLGtnW2xnXT1udWxsO2Zvcig7YT09PXFnOylxZz1vZ1stLXBnXSxvZ1twZ109bnVsbCxzZz1vZ1stLXBnXSxvZ1twZ109bnVsbCxyZz1vZ1stLXBnXSxvZ1twZ109bnVsbH12YXIgeGc9bnVsbCx5Zz1udWxsLEk9ITEsemc9bnVsbDtcbmZ1bmN0aW9uIEFnKGEsYil7dmFyIGM9QmcoNSxudWxsLG51bGwsMCk7Yy5lbGVtZW50VHlwZT1cIkRFTEVURURcIjtjLnN0YXRlTm9kZT1iO2MucmV0dXJuPWE7Yj1hLmRlbGV0aW9ucztudWxsPT09Yj8oYS5kZWxldGlvbnM9W2NdLGEuZmxhZ3N8PTE2KTpiLnB1c2goYyl9XG5mdW5jdGlvbiBDZyhhLGIpe3N3aXRjaChhLnRhZyl7Y2FzZSA1OnZhciBjPWEudHlwZTtiPTEhPT1iLm5vZGVUeXBlfHxjLnRvTG93ZXJDYXNlKCkhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/bnVsbDpiO3JldHVybiBudWxsIT09Yj8oYS5zdGF0ZU5vZGU9Yix4Zz1hLHlnPUxmKGIuZmlyc3RDaGlsZCksITApOiExO2Nhc2UgNjpyZXR1cm4gYj1cIlwiPT09YS5wZW5kaW5nUHJvcHN8fDMhPT1iLm5vZGVUeXBlP251bGw6YixudWxsIT09Yj8oYS5zdGF0ZU5vZGU9Yix4Zz1hLHlnPW51bGwsITApOiExO2Nhc2UgMTM6cmV0dXJuIGI9OCE9PWIubm9kZVR5cGU/bnVsbDpiLG51bGwhPT1iPyhjPW51bGwhPT1xZz97aWQ6cmcsb3ZlcmZsb3c6c2d9Om51bGwsYS5tZW1vaXplZFN0YXRlPXtkZWh5ZHJhdGVkOmIsdHJlZUNvbnRleHQ6YyxyZXRyeUxhbmU6MTA3Mzc0MTgyNH0sYz1CZygxOCxudWxsLG51bGwsMCksYy5zdGF0ZU5vZGU9YixjLnJldHVybj1hLGEuY2hpbGQ9Yyx4Zz1hLHlnPVxubnVsbCwhMCk6ITE7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gRGcoYSl7cmV0dXJuIDAhPT0oYS5tb2RlJjEpJiYwPT09KGEuZmxhZ3MmMTI4KX1mdW5jdGlvbiBFZyhhKXtpZihJKXt2YXIgYj15ZztpZihiKXt2YXIgYz1iO2lmKCFDZyhhLGIpKXtpZihEZyhhKSl0aHJvdyBFcnJvcihwKDQxOCkpO2I9TGYoYy5uZXh0U2libGluZyk7dmFyIGQ9eGc7YiYmQ2coYSxiKT9BZyhkLGMpOihhLmZsYWdzPWEuZmxhZ3MmLTQwOTd8MixJPSExLHhnPWEpfX1lbHNle2lmKERnKGEpKXRocm93IEVycm9yKHAoNDE4KSk7YS5mbGFncz1hLmZsYWdzJi00MDk3fDI7ST0hMTt4Zz1hfX19ZnVuY3Rpb24gRmcoYSl7Zm9yKGE9YS5yZXR1cm47bnVsbCE9PWEmJjUhPT1hLnRhZyYmMyE9PWEudGFnJiYxMyE9PWEudGFnOylhPWEucmV0dXJuO3hnPWF9XG5mdW5jdGlvbiBHZyhhKXtpZihhIT09eGcpcmV0dXJuITE7aWYoIUkpcmV0dXJuIEZnKGEpLEk9ITAsITE7dmFyIGI7KGI9MyE9PWEudGFnKSYmIShiPTUhPT1hLnRhZykmJihiPWEudHlwZSxiPVwiaGVhZFwiIT09YiYmXCJib2R5XCIhPT1iJiYhRWYoYS50eXBlLGEubWVtb2l6ZWRQcm9wcykpO2lmKGImJihiPXlnKSl7aWYoRGcoYSkpdGhyb3cgSGcoKSxFcnJvcihwKDQxOCkpO2Zvcig7YjspQWcoYSxiKSxiPUxmKGIubmV4dFNpYmxpbmcpfUZnKGEpO2lmKDEzPT09YS50YWcpe2E9YS5tZW1vaXplZFN0YXRlO2E9bnVsbCE9PWE/YS5kZWh5ZHJhdGVkOm51bGw7aWYoIWEpdGhyb3cgRXJyb3IocCgzMTcpKTthOnthPWEubmV4dFNpYmxpbmc7Zm9yKGI9MDthOyl7aWYoOD09PWEubm9kZVR5cGUpe3ZhciBjPWEuZGF0YTtpZihcIi8kXCI9PT1jKXtpZigwPT09Yil7eWc9TGYoYS5uZXh0U2libGluZyk7YnJlYWsgYX1iLS19ZWxzZVwiJFwiIT09YyYmXCIkIVwiIT09YyYmXCIkP1wiIT09Y3x8YisrfWE9YS5uZXh0U2libGluZ315Zz1cbm51bGx9fWVsc2UgeWc9eGc/TGYoYS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9ZnVuY3Rpb24gSGcoKXtmb3IodmFyIGE9eWc7YTspYT1MZihhLm5leHRTaWJsaW5nKX1mdW5jdGlvbiBJZygpe3lnPXhnPW51bGw7ST0hMX1mdW5jdGlvbiBKZyhhKXtudWxsPT09emc/emc9W2FdOnpnLnB1c2goYSl9dmFyIEtnPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnO1xuZnVuY3Rpb24gTGcoYSxiLGMpe2E9Yy5yZWY7aWYobnVsbCE9PWEmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhJiZcIm9iamVjdFwiIT09dHlwZW9mIGEpe2lmKGMuX293bmVyKXtjPWMuX293bmVyO2lmKGMpe2lmKDEhPT1jLnRhZyl0aHJvdyBFcnJvcihwKDMwOSkpO3ZhciBkPWMuc3RhdGVOb2RlfWlmKCFkKXRocm93IEVycm9yKHAoMTQ3LGEpKTt2YXIgZT1kLGY9XCJcIithO2lmKG51bGwhPT1iJiZudWxsIT09Yi5yZWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLnJlZiYmYi5yZWYuX3N0cmluZ1JlZj09PWYpcmV0dXJuIGIucmVmO2I9ZnVuY3Rpb24oYSl7dmFyIGI9ZS5yZWZzO251bGw9PT1hP2RlbGV0ZSBiW2ZdOmJbZl09YX07Yi5fc3RyaW5nUmVmPWY7cmV0dXJuIGJ9aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKHAoMjg0KSk7aWYoIWMuX293bmVyKXRocm93IEVycm9yKHAoMjkwLGEpKTt9cmV0dXJuIGF9XG5mdW5jdGlvbiBNZyhhLGIpe2E9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpO3Rocm93IEVycm9yKHAoMzEsXCJbb2JqZWN0IE9iamVjdF1cIj09PWE/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhiKS5qb2luKFwiLCBcIikrXCJ9XCI6YSkpO31mdW5jdGlvbiBOZyhhKXt2YXIgYj1hLl9pbml0O3JldHVybiBiKGEuX3BheWxvYWQpfVxuZnVuY3Rpb24gT2coYSl7ZnVuY3Rpb24gYihiLGMpe2lmKGEpe3ZhciBkPWIuZGVsZXRpb25zO251bGw9PT1kPyhiLmRlbGV0aW9ucz1bY10sYi5mbGFnc3w9MTYpOmQucHVzaChjKX19ZnVuY3Rpb24gYyhjLGQpe2lmKCFhKXJldHVybiBudWxsO2Zvcig7bnVsbCE9PWQ7KWIoYyxkKSxkPWQuc2libGluZztyZXR1cm4gbnVsbH1mdW5jdGlvbiBkKGEsYil7Zm9yKGE9bmV3IE1hcDtudWxsIT09YjspbnVsbCE9PWIua2V5P2Euc2V0KGIua2V5LGIpOmEuc2V0KGIuaW5kZXgsYiksYj1iLnNpYmxpbmc7cmV0dXJuIGF9ZnVuY3Rpb24gZShhLGIpe2E9UGcoYSxiKTthLmluZGV4PTA7YS5zaWJsaW5nPW51bGw7cmV0dXJuIGF9ZnVuY3Rpb24gZihiLGMsZCl7Yi5pbmRleD1kO2lmKCFhKXJldHVybiBiLmZsYWdzfD0xMDQ4NTc2LGM7ZD1iLmFsdGVybmF0ZTtpZihudWxsIT09ZClyZXR1cm4gZD1kLmluZGV4LGQ8Yz8oYi5mbGFnc3w9MixjKTpkO2IuZmxhZ3N8PTI7cmV0dXJuIGN9ZnVuY3Rpb24gZyhiKXthJiZcbm51bGw9PT1iLmFsdGVybmF0ZSYmKGIuZmxhZ3N8PTIpO3JldHVybiBifWZ1bmN0aW9uIGgoYSxiLGMsZCl7aWYobnVsbD09PWJ8fDYhPT1iLnRhZylyZXR1cm4gYj1RZyhjLGEubW9kZSxkKSxiLnJldHVybj1hLGI7Yj1lKGIsYyk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBrKGEsYixjLGQpe3ZhciBmPWMudHlwZTtpZihmPT09eWEpcmV0dXJuIG0oYSxiLGMucHJvcHMuY2hpbGRyZW4sZCxjLmtleSk7aWYobnVsbCE9PWImJihiLmVsZW1lbnRUeXBlPT09Znx8XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09ZiYmZi4kJHR5cGVvZj09PUhhJiZOZyhmKT09PWIudHlwZSkpcmV0dXJuIGQ9ZShiLGMucHJvcHMpLGQucmVmPUxnKGEsYixjKSxkLnJldHVybj1hLGQ7ZD1SZyhjLnR5cGUsYy5rZXksYy5wcm9wcyxudWxsLGEubW9kZSxkKTtkLnJlZj1MZyhhLGIsYyk7ZC5yZXR1cm49YTtyZXR1cm4gZH1mdW5jdGlvbiBsKGEsYixjLGQpe2lmKG51bGw9PT1ifHw0IT09Yi50YWd8fFxuYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyE9PWMuY29udGFpbmVySW5mb3x8Yi5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24hPT1jLmltcGxlbWVudGF0aW9uKXJldHVybiBiPVNnKGMsYS5tb2RlLGQpLGIucmV0dXJuPWEsYjtiPWUoYixjLmNoaWxkcmVufHxbXSk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBtKGEsYixjLGQsZil7aWYobnVsbD09PWJ8fDchPT1iLnRhZylyZXR1cm4gYj1UZyhjLGEubW9kZSxkLGYpLGIucmV0dXJuPWEsYjtiPWUoYixjKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIHEoYSxiLGMpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYiYmXCJcIiE9PWJ8fFwibnVtYmVyXCI9PT10eXBlb2YgYilyZXR1cm4gYj1RZyhcIlwiK2IsYS5tb2RlLGMpLGIucmV0dXJuPWEsYjtpZihcIm9iamVjdFwiPT09dHlwZW9mIGImJm51bGwhPT1iKXtzd2l0Y2goYi4kJHR5cGVvZil7Y2FzZSB2YTpyZXR1cm4gYz1SZyhiLnR5cGUsYi5rZXksYi5wcm9wcyxudWxsLGEubW9kZSxjKSxcbmMucmVmPUxnKGEsbnVsbCxiKSxjLnJldHVybj1hLGM7Y2FzZSB3YTpyZXR1cm4gYj1TZyhiLGEubW9kZSxjKSxiLnJldHVybj1hLGI7Y2FzZSBIYTp2YXIgZD1iLl9pbml0O3JldHVybiBxKGEsZChiLl9wYXlsb2FkKSxjKX1pZihlYihiKXx8S2EoYikpcmV0dXJuIGI9VGcoYixhLm1vZGUsYyxudWxsKSxiLnJldHVybj1hLGI7TWcoYSxiKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiByKGEsYixjLGQpe3ZhciBlPW51bGwhPT1iP2Iua2V5Om51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBjJiZcIlwiIT09Y3x8XCJudW1iZXJcIj09PXR5cGVvZiBjKXJldHVybiBudWxsIT09ZT9udWxsOmgoYSxiLFwiXCIrYyxkKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGMmJm51bGwhPT1jKXtzd2l0Y2goYy4kJHR5cGVvZil7Y2FzZSB2YTpyZXR1cm4gYy5rZXk9PT1lP2soYSxiLGMsZCk6bnVsbDtjYXNlIHdhOnJldHVybiBjLmtleT09PWU/bChhLGIsYyxkKTpudWxsO2Nhc2UgSGE6cmV0dXJuIGU9Yy5faW5pdCxyKGEsXG5iLGUoYy5fcGF5bG9hZCksZCl9aWYoZWIoYyl8fEthKGMpKXJldHVybiBudWxsIT09ZT9udWxsOm0oYSxiLGMsZCxudWxsKTtNZyhhLGMpfXJldHVybiBudWxsfWZ1bmN0aW9uIHkoYSxiLGMsZCxlKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGQmJlwiXCIhPT1kfHxcIm51bWJlclwiPT09dHlwZW9mIGQpcmV0dXJuIGE9YS5nZXQoYyl8fG51bGwsaChiLGEsXCJcIitkLGUpO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgZCYmbnVsbCE9PWQpe3N3aXRjaChkLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBhPWEuZ2V0KG51bGw9PT1kLmtleT9jOmQua2V5KXx8bnVsbCxrKGIsYSxkLGUpO2Nhc2Ugd2E6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLGwoYixhLGQsZSk7Y2FzZSBIYTp2YXIgZj1kLl9pbml0O3JldHVybiB5KGEsYixjLGYoZC5fcGF5bG9hZCksZSl9aWYoZWIoZCl8fEthKGQpKXJldHVybiBhPWEuZ2V0KGMpfHxudWxsLG0oYixhLGQsZSxudWxsKTtNZyhiLGQpfXJldHVybiBudWxsfVxuZnVuY3Rpb24gbihlLGcsaCxrKXtmb3IodmFyIGw9bnVsbCxtPW51bGwsdT1nLHc9Zz0wLHg9bnVsbDtudWxsIT09dSYmdzxoLmxlbmd0aDt3Kyspe3UuaW5kZXg+dz8oeD11LHU9bnVsbCk6eD11LnNpYmxpbmc7dmFyIG49cihlLHUsaFt3XSxrKTtpZihudWxsPT09bil7bnVsbD09PXUmJih1PXgpO2JyZWFrfWEmJnUmJm51bGw9PT1uLmFsdGVybmF0ZSYmYihlLHUpO2c9ZihuLGcsdyk7bnVsbD09PW0/bD1uOm0uc2libGluZz1uO209bjt1PXh9aWYodz09PWgubGVuZ3RoKXJldHVybiBjKGUsdSksSSYmdGcoZSx3KSxsO2lmKG51bGw9PT11KXtmb3IoO3c8aC5sZW5ndGg7dysrKXU9cShlLGhbd10sayksbnVsbCE9PXUmJihnPWYodSxnLHcpLG51bGw9PT1tP2w9dTptLnNpYmxpbmc9dSxtPXUpO0kmJnRnKGUsdyk7cmV0dXJuIGx9Zm9yKHU9ZChlLHUpO3c8aC5sZW5ndGg7dysrKXg9eSh1LGUsdyxoW3ddLGspLG51bGwhPT14JiYoYSYmbnVsbCE9PXguYWx0ZXJuYXRlJiZ1LmRlbGV0ZShudWxsPT09XG54LmtleT93Ongua2V5KSxnPWYoeCxnLHcpLG51bGw9PT1tP2w9eDptLnNpYmxpbmc9eCxtPXgpO2EmJnUuZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mdW5jdGlvbiB0KGUsZyxoLGspe3ZhciBsPUthKGgpO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBsKXRocm93IEVycm9yKHAoMTUwKSk7aD1sLmNhbGwoaCk7aWYobnVsbD09aCl0aHJvdyBFcnJvcihwKDE1MSkpO2Zvcih2YXIgdT1sPW51bGwsbT1nLHc9Zz0wLHg9bnVsbCxuPWgubmV4dCgpO251bGwhPT1tJiYhbi5kb25lO3crKyxuPWgubmV4dCgpKXttLmluZGV4Pnc/KHg9bSxtPW51bGwpOng9bS5zaWJsaW5nO3ZhciB0PXIoZSxtLG4udmFsdWUsayk7aWYobnVsbD09PXQpe251bGw9PT1tJiYobT14KTticmVha31hJiZtJiZudWxsPT09dC5hbHRlcm5hdGUmJmIoZSxtKTtnPWYodCxnLHcpO251bGw9PT11P2w9dDp1LnNpYmxpbmc9dDt1PXQ7bT14fWlmKG4uZG9uZSlyZXR1cm4gYyhlLFxubSksSSYmdGcoZSx3KSxsO2lmKG51bGw9PT1tKXtmb3IoOyFuLmRvbmU7dysrLG49aC5uZXh0KCkpbj1xKGUsbi52YWx1ZSxrKSxudWxsIT09biYmKGc9ZihuLGcsdyksbnVsbD09PXU/bD1uOnUuc2libGluZz1uLHU9bik7SSYmdGcoZSx3KTtyZXR1cm4gbH1mb3IobT1kKGUsbSk7IW4uZG9uZTt3Kyssbj1oLm5leHQoKSluPXkobSxlLHcsbi52YWx1ZSxrKSxudWxsIT09biYmKGEmJm51bGwhPT1uLmFsdGVybmF0ZSYmbS5kZWxldGUobnVsbD09PW4ua2V5P3c6bi5rZXkpLGc9ZihuLGcsdyksbnVsbD09PXU/bD1uOnUuc2libGluZz1uLHU9bik7YSYmbS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiKGUsYSl9KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZ1bmN0aW9uIEooYSxkLGYsaCl7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09ZiYmZi50eXBlPT09eWEmJm51bGw9PT1mLmtleSYmKGY9Zi5wcm9wcy5jaGlsZHJlbik7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zil7c3dpdGNoKGYuJCR0eXBlb2Ype2Nhc2UgdmE6YTp7Zm9yKHZhciBrPVxuZi5rZXksbD1kO251bGwhPT1sOyl7aWYobC5rZXk9PT1rKXtrPWYudHlwZTtpZihrPT09eWEpe2lmKDc9PT1sLnRhZyl7YyhhLGwuc2libGluZyk7ZD1lKGwsZi5wcm9wcy5jaGlsZHJlbik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX19ZWxzZSBpZihsLmVsZW1lbnRUeXBlPT09a3x8XCJvYmplY3RcIj09PXR5cGVvZiBrJiZudWxsIT09ayYmay4kJHR5cGVvZj09PUhhJiZOZyhrKT09PWwudHlwZSl7YyhhLGwuc2libGluZyk7ZD1lKGwsZi5wcm9wcyk7ZC5yZWY9TGcoYSxsLGYpO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9YyhhLGwpO2JyZWFrfWVsc2UgYihhLGwpO2w9bC5zaWJsaW5nfWYudHlwZT09PXlhPyhkPVRnKGYucHJvcHMuY2hpbGRyZW4sYS5tb2RlLGgsZi5rZXkpLGQucmV0dXJuPWEsYT1kKTooaD1SZyhmLnR5cGUsZi5rZXksZi5wcm9wcyxudWxsLGEubW9kZSxoKSxoLnJlZj1MZyhhLGQsZiksaC5yZXR1cm49YSxhPWgpfXJldHVybiBnKGEpO2Nhc2Ugd2E6YTp7Zm9yKGw9Zi5rZXk7bnVsbCE9PVxuZDspe2lmKGQua2V5PT09bClpZig0PT09ZC50YWcmJmQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT1mLmNvbnRhaW5lckluZm8mJmQuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uPT09Zi5pbXBsZW1lbnRhdGlvbil7YyhhLGQuc2libGluZyk7ZD1lKGQsZi5jaGlsZHJlbnx8W10pO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9ZWxzZXtjKGEsZCk7YnJlYWt9ZWxzZSBiKGEsZCk7ZD1kLnNpYmxpbmd9ZD1TZyhmLGEubW9kZSxoKTtkLnJldHVybj1hO2E9ZH1yZXR1cm4gZyhhKTtjYXNlIEhhOnJldHVybiBsPWYuX2luaXQsSihhLGQsbChmLl9wYXlsb2FkKSxoKX1pZihlYihmKSlyZXR1cm4gbihhLGQsZixoKTtpZihLYShmKSlyZXR1cm4gdChhLGQsZixoKTtNZyhhLGYpfXJldHVyblwic3RyaW5nXCI9PT10eXBlb2YgZiYmXCJcIiE9PWZ8fFwibnVtYmVyXCI9PT10eXBlb2YgZj8oZj1cIlwiK2YsbnVsbCE9PWQmJjY9PT1kLnRhZz8oYyhhLGQuc2libGluZyksZD1lKGQsZiksZC5yZXR1cm49YSxhPWQpOlxuKGMoYSxkKSxkPVFnKGYsYS5tb2RlLGgpLGQucmV0dXJuPWEsYT1kKSxnKGEpKTpjKGEsZCl9cmV0dXJuIEp9dmFyIFVnPU9nKCEwKSxWZz1PZyghMSksV2c9VWYobnVsbCksWGc9bnVsbCxZZz1udWxsLFpnPW51bGw7ZnVuY3Rpb24gJGcoKXtaZz1ZZz1YZz1udWxsfWZ1bmN0aW9uIGFoKGEpe3ZhciBiPVdnLmN1cnJlbnQ7RShXZyk7YS5fY3VycmVudFZhbHVlPWJ9ZnVuY3Rpb24gYmgoYSxiLGMpe2Zvcig7bnVsbCE9PWE7KXt2YXIgZD1hLmFsdGVybmF0ZTsoYS5jaGlsZExhbmVzJmIpIT09Yj8oYS5jaGlsZExhbmVzfD1iLG51bGwhPT1kJiYoZC5jaGlsZExhbmVzfD1iKSk6bnVsbCE9PWQmJihkLmNoaWxkTGFuZXMmYikhPT1iJiYoZC5jaGlsZExhbmVzfD1iKTtpZihhPT09YylicmVhazthPWEucmV0dXJufX1cbmZ1bmN0aW9uIGNoKGEsYil7WGc9YTtaZz1ZZz1udWxsO2E9YS5kZXBlbmRlbmNpZXM7bnVsbCE9PWEmJm51bGwhPT1hLmZpcnN0Q29udGV4dCYmKDAhPT0oYS5sYW5lcyZiKSYmKGRoPSEwKSxhLmZpcnN0Q29udGV4dD1udWxsKX1mdW5jdGlvbiBlaChhKXt2YXIgYj1hLl9jdXJyZW50VmFsdWU7aWYoWmchPT1hKWlmKGE9e2NvbnRleHQ6YSxtZW1vaXplZFZhbHVlOmIsbmV4dDpudWxsfSxudWxsPT09WWcpe2lmKG51bGw9PT1YZyl0aHJvdyBFcnJvcihwKDMwOCkpO1lnPWE7WGcuZGVwZW5kZW5jaWVzPXtsYW5lczowLGZpcnN0Q29udGV4dDphfX1lbHNlIFlnPVlnLm5leHQ9YTtyZXR1cm4gYn12YXIgZmg9bnVsbDtmdW5jdGlvbiBnaChhKXtudWxsPT09Zmg/Zmg9W2FdOmZoLnB1c2goYSl9XG5mdW5jdGlvbiBoaChhLGIsYyxkKXt2YXIgZT1iLmludGVybGVhdmVkO251bGw9PT1lPyhjLm5leHQ9YyxnaChiKSk6KGMubmV4dD1lLm5leHQsZS5uZXh0PWMpO2IuaW50ZXJsZWF2ZWQ9YztyZXR1cm4gaWgoYSxkKX1mdW5jdGlvbiBpaChhLGIpe2EubGFuZXN8PWI7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbCE9PWMmJihjLmxhbmVzfD1iKTtjPWE7Zm9yKGE9YS5yZXR1cm47bnVsbCE9PWE7KWEuY2hpbGRMYW5lc3w9YixjPWEuYWx0ZXJuYXRlLG51bGwhPT1jJiYoYy5jaGlsZExhbmVzfD1iKSxjPWEsYT1hLnJldHVybjtyZXR1cm4gMz09PWMudGFnP2Muc3RhdGVOb2RlOm51bGx9dmFyIGpoPSExO2Z1bmN0aW9uIGtoKGEpe2EudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTphLm1lbW9pemVkU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm51bGwsbGFzdEJhc2VVcGRhdGU6bnVsbCxzaGFyZWQ6e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjB9LGVmZmVjdHM6bnVsbH19XG5mdW5jdGlvbiBsaChhLGIpe2E9YS51cGRhdGVRdWV1ZTtiLnVwZGF0ZVF1ZXVlPT09YSYmKGIudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTphLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6YS5maXJzdEJhc2VVcGRhdGUsbGFzdEJhc2VVcGRhdGU6YS5sYXN0QmFzZVVwZGF0ZSxzaGFyZWQ6YS5zaGFyZWQsZWZmZWN0czphLmVmZmVjdHN9KX1mdW5jdGlvbiBtaChhLGIpe3JldHVybntldmVudFRpbWU6YSxsYW5lOmIsdGFnOjAscGF5bG9hZDpudWxsLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfX1cbmZ1bmN0aW9uIG5oKGEsYixjKXt2YXIgZD1hLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1kKXJldHVybiBudWxsO2Q9ZC5zaGFyZWQ7aWYoMCE9PShLJjIpKXt2YXIgZT1kLnBlbmRpbmc7bnVsbD09PWU/Yi5uZXh0PWI6KGIubmV4dD1lLm5leHQsZS5uZXh0PWIpO2QucGVuZGluZz1iO3JldHVybiBpaChhLGMpfWU9ZC5pbnRlcmxlYXZlZDtudWxsPT09ZT8oYi5uZXh0PWIsZ2goZCkpOihiLm5leHQ9ZS5uZXh0LGUubmV4dD1iKTtkLmludGVybGVhdmVkPWI7cmV0dXJuIGloKGEsYyl9ZnVuY3Rpb24gb2goYSxiLGMpe2I9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09YiYmKGI9Yi5zaGFyZWQsMCE9PShjJjQxOTQyNDApKSl7dmFyIGQ9Yi5sYW5lcztkJj1hLnBlbmRpbmdMYW5lcztjfD1kO2IubGFuZXM9YztDYyhhLGMpfX1cbmZ1bmN0aW9uIHBoKGEsYil7dmFyIGM9YS51cGRhdGVRdWV1ZSxkPWEuYWx0ZXJuYXRlO2lmKG51bGwhPT1kJiYoZD1kLnVwZGF0ZVF1ZXVlLGM9PT1kKSl7dmFyIGU9bnVsbCxmPW51bGw7Yz1jLmZpcnN0QmFzZVVwZGF0ZTtpZihudWxsIT09Yyl7ZG97dmFyIGc9e2V2ZW50VGltZTpjLmV2ZW50VGltZSxsYW5lOmMubGFuZSx0YWc6Yy50YWcscGF5bG9hZDpjLnBheWxvYWQsY2FsbGJhY2s6Yy5jYWxsYmFjayxuZXh0Om51bGx9O251bGw9PT1mP2U9Zj1nOmY9Zi5uZXh0PWc7Yz1jLm5leHR9d2hpbGUobnVsbCE9PWMpO251bGw9PT1mP2U9Zj1iOmY9Zi5uZXh0PWJ9ZWxzZSBlPWY9YjtjPXtiYXNlU3RhdGU6ZC5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOmUsbGFzdEJhc2VVcGRhdGU6ZixzaGFyZWQ6ZC5zaGFyZWQsZWZmZWN0czpkLmVmZmVjdHN9O2EudXBkYXRlUXVldWU9YztyZXR1cm59YT1jLmxhc3RCYXNlVXBkYXRlO251bGw9PT1hP2MuZmlyc3RCYXNlVXBkYXRlPWI6YS5uZXh0PVxuYjtjLmxhc3RCYXNlVXBkYXRlPWJ9XG5mdW5jdGlvbiBxaChhLGIsYyxkKXt2YXIgZT1hLnVwZGF0ZVF1ZXVlO2poPSExO3ZhciBmPWUuZmlyc3RCYXNlVXBkYXRlLGc9ZS5sYXN0QmFzZVVwZGF0ZSxoPWUuc2hhcmVkLnBlbmRpbmc7aWYobnVsbCE9PWgpe2Uuc2hhcmVkLnBlbmRpbmc9bnVsbDt2YXIgaz1oLGw9ay5uZXh0O2submV4dD1udWxsO251bGw9PT1nP2Y9bDpnLm5leHQ9bDtnPWs7dmFyIG09YS5hbHRlcm5hdGU7bnVsbCE9PW0mJihtPW0udXBkYXRlUXVldWUsaD1tLmxhc3RCYXNlVXBkYXRlLGghPT1nJiYobnVsbD09PWg/bS5maXJzdEJhc2VVcGRhdGU9bDpoLm5leHQ9bCxtLmxhc3RCYXNlVXBkYXRlPWspKX1pZihudWxsIT09Zil7dmFyIHE9ZS5iYXNlU3RhdGU7Zz0wO209bD1rPW51bGw7aD1mO2Rve3ZhciByPWgubGFuZSx5PWguZXZlbnRUaW1lO2lmKChkJnIpPT09cil7bnVsbCE9PW0mJihtPW0ubmV4dD17ZXZlbnRUaW1lOnksbGFuZTowLHRhZzpoLnRhZyxwYXlsb2FkOmgucGF5bG9hZCxjYWxsYmFjazpoLmNhbGxiYWNrLFxubmV4dDpudWxsfSk7YTp7dmFyIG49YSx0PWg7cj1iO3k9Yztzd2l0Y2godC50YWcpe2Nhc2UgMTpuPXQucGF5bG9hZDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygbil7cT1uLmNhbGwoeSxxLHIpO2JyZWFrIGF9cT1uO2JyZWFrIGE7Y2FzZSAzOm4uZmxhZ3M9bi5mbGFncyYtNjU1Mzd8MTI4O2Nhc2UgMDpuPXQucGF5bG9hZDtyPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBuP24uY2FsbCh5LHEscik6bjtpZihudWxsPT09cnx8dm9pZCAwPT09cilicmVhayBhO3E9QSh7fSxxLHIpO2JyZWFrIGE7Y2FzZSAyOmpoPSEwfX1udWxsIT09aC5jYWxsYmFjayYmMCE9PWgubGFuZSYmKGEuZmxhZ3N8PTY0LHI9ZS5lZmZlY3RzLG51bGw9PT1yP2UuZWZmZWN0cz1baF06ci5wdXNoKGgpKX1lbHNlIHk9e2V2ZW50VGltZTp5LGxhbmU6cix0YWc6aC50YWcscGF5bG9hZDpoLnBheWxvYWQsY2FsbGJhY2s6aC5jYWxsYmFjayxuZXh0Om51bGx9LG51bGw9PT1tPyhsPW09eSxrPXEpOm09bS5uZXh0PXksZ3w9cjtcbmg9aC5uZXh0O2lmKG51bGw9PT1oKWlmKGg9ZS5zaGFyZWQucGVuZGluZyxudWxsPT09aClicmVhaztlbHNlIHI9aCxoPXIubmV4dCxyLm5leHQ9bnVsbCxlLmxhc3RCYXNlVXBkYXRlPXIsZS5zaGFyZWQucGVuZGluZz1udWxsfXdoaWxlKDEpO251bGw9PT1tJiYoaz1xKTtlLmJhc2VTdGF0ZT1rO2UuZmlyc3RCYXNlVXBkYXRlPWw7ZS5sYXN0QmFzZVVwZGF0ZT1tO2I9ZS5zaGFyZWQuaW50ZXJsZWF2ZWQ7aWYobnVsbCE9PWIpe2U9YjtkbyBnfD1lLmxhbmUsZT1lLm5leHQ7d2hpbGUoZSE9PWIpfWVsc2UgbnVsbD09PWYmJihlLnNoYXJlZC5sYW5lcz0wKTtyaHw9ZzthLmxhbmVzPWc7YS5tZW1vaXplZFN0YXRlPXF9fVxuZnVuY3Rpb24gc2goYSxiLGMpe2E9Yi5lZmZlY3RzO2IuZWZmZWN0cz1udWxsO2lmKG51bGwhPT1hKWZvcihiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBkPWFbYl0sZT1kLmNhbGxiYWNrO2lmKG51bGwhPT1lKXtkLmNhbGxiYWNrPW51bGw7ZD1jO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlKXRocm93IEVycm9yKHAoMTkxLGUpKTtlLmNhbGwoZCl9fX12YXIgdGg9e30sdWg9VWYodGgpLHZoPVVmKHRoKSx3aD1VZih0aCk7ZnVuY3Rpb24geGgoYSl7aWYoYT09PXRoKXRocm93IEVycm9yKHAoMTc0KSk7cmV0dXJuIGF9XG5mdW5jdGlvbiB5aChhLGIpe0cod2gsYik7Ryh2aCxhKTtHKHVoLHRoKTthPWIubm9kZVR5cGU7c3dpdGNoKGEpe2Nhc2UgOTpjYXNlIDExOmI9KGI9Yi5kb2N1bWVudEVsZW1lbnQpP2IubmFtZXNwYWNlVVJJOmxiKG51bGwsXCJcIik7YnJlYWs7ZGVmYXVsdDphPTg9PT1hP2IucGFyZW50Tm9kZTpiLGI9YS5uYW1lc3BhY2VVUkl8fG51bGwsYT1hLnRhZ05hbWUsYj1sYihiLGEpfUUodWgpO0codWgsYil9ZnVuY3Rpb24gemgoKXtFKHVoKTtFKHZoKTtFKHdoKX1mdW5jdGlvbiBBaChhKXt4aCh3aC5jdXJyZW50KTt2YXIgYj14aCh1aC5jdXJyZW50KTt2YXIgYz1sYihiLGEudHlwZSk7YiE9PWMmJihHKHZoLGEpLEcodWgsYykpfWZ1bmN0aW9uIEJoKGEpe3ZoLmN1cnJlbnQ9PT1hJiYoRSh1aCksRSh2aCkpfXZhciBMPVVmKDApO1xuZnVuY3Rpb24gQ2goYSl7Zm9yKHZhciBiPWE7bnVsbCE9PWI7KXtpZigxMz09PWIudGFnKXt2YXIgYz1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWMmJihjPWMuZGVoeWRyYXRlZCxudWxsPT09Y3x8XCIkP1wiPT09Yy5kYXRhfHxcIiQhXCI9PT1jLmRhdGEpKXJldHVybiBifWVsc2UgaWYoMTk9PT1iLnRhZyYmdm9pZCAwIT09Yi5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyKXtpZigwIT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gYn1lbHNlIGlmKG51bGwhPT1iLmNoaWxkKXtiLmNoaWxkLnJldHVybj1iO2I9Yi5jaGlsZDtjb250aW51ZX1pZihiPT09YSlicmVhaztmb3IoO251bGw9PT1iLnNpYmxpbmc7KXtpZihudWxsPT09Yi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4gbnVsbDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9cmV0dXJuIG51bGx9dmFyIERoPVtdO1xuZnVuY3Rpb24gRWgoKXtmb3IodmFyIGE9MDthPERoLmxlbmd0aDthKyspRGhbYV0uX3dvcmtJblByb2dyZXNzVmVyc2lvblByaW1hcnk9bnVsbDtEaC5sZW5ndGg9MH12YXIgRmg9dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixHaD11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxIaD0wLE09bnVsbCxOPW51bGwsTz1udWxsLEloPSExLEpoPSExLEtoPTAsTGg9MDtmdW5jdGlvbiBQKCl7dGhyb3cgRXJyb3IocCgzMjEpKTt9ZnVuY3Rpb24gTWgoYSxiKXtpZihudWxsPT09YilyZXR1cm4hMTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoJiZjPGEubGVuZ3RoO2MrKylpZighSGUoYVtjXSxiW2NdKSlyZXR1cm4hMTtyZXR1cm4hMH1cbmZ1bmN0aW9uIE5oKGEsYixjLGQsZSxmKXtIaD1mO009YjtiLm1lbW9pemVkU3RhdGU9bnVsbDtiLnVwZGF0ZVF1ZXVlPW51bGw7Yi5sYW5lcz0wO0ZoLmN1cnJlbnQ9bnVsbD09PWF8fG51bGw9PT1hLm1lbW9pemVkU3RhdGU/T2g6UGg7YT1jKGQsZSk7aWYoSmgpe2Y9MDtkb3tKaD0hMTtLaD0wO2lmKDI1PD1mKXRocm93IEVycm9yKHAoMzAxKSk7Zis9MTtPPU49bnVsbDtiLnVwZGF0ZVF1ZXVlPW51bGw7RmguY3VycmVudD1RaDthPWMoZCxlKX13aGlsZShKaCl9RmguY3VycmVudD1SaDtiPW51bGwhPT1OJiZudWxsIT09Ti5uZXh0O0hoPTA7Tz1OPU09bnVsbDtJaD0hMTtpZihiKXRocm93IEVycm9yKHAoMzAwKSk7cmV0dXJuIGF9ZnVuY3Rpb24gU2goKXt2YXIgYT0wIT09S2g7S2g9MDtyZXR1cm4gYX1cbmZ1bmN0aW9uIFRoKCl7dmFyIGE9e21lbW9pemVkU3RhdGU6bnVsbCxiYXNlU3RhdGU6bnVsbCxiYXNlUXVldWU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH07bnVsbD09PU8/TS5tZW1vaXplZFN0YXRlPU89YTpPPU8ubmV4dD1hO3JldHVybiBPfWZ1bmN0aW9uIFVoKCl7aWYobnVsbD09PU4pe3ZhciBhPU0uYWx0ZXJuYXRlO2E9bnVsbCE9PWE/YS5tZW1vaXplZFN0YXRlOm51bGx9ZWxzZSBhPU4ubmV4dDt2YXIgYj1udWxsPT09Tz9NLm1lbW9pemVkU3RhdGU6Ty5uZXh0O2lmKG51bGwhPT1iKU89YixOPWE7ZWxzZXtpZihudWxsPT09YSl0aHJvdyBFcnJvcihwKDMxMCkpO049YTthPXttZW1vaXplZFN0YXRlOk4ubWVtb2l6ZWRTdGF0ZSxiYXNlU3RhdGU6Ti5iYXNlU3RhdGUsYmFzZVF1ZXVlOk4uYmFzZVF1ZXVlLHF1ZXVlOk4ucXVldWUsbmV4dDpudWxsfTtudWxsPT09Tz9NLm1lbW9pemVkU3RhdGU9Tz1hOk89Ty5uZXh0PWF9cmV0dXJuIE99XG5mdW5jdGlvbiBWaChhLGIpe3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBiP2IoYSk6Yn1cbmZ1bmN0aW9uIFdoKGEpe3ZhciBiPVVoKCksYz1iLnF1ZXVlO2lmKG51bGw9PT1jKXRocm93IEVycm9yKHAoMzExKSk7Yy5sYXN0UmVuZGVyZWRSZWR1Y2VyPWE7dmFyIGQ9TixlPWQuYmFzZVF1ZXVlLGY9Yy5wZW5kaW5nO2lmKG51bGwhPT1mKXtpZihudWxsIT09ZSl7dmFyIGc9ZS5uZXh0O2UubmV4dD1mLm5leHQ7Zi5uZXh0PWd9ZC5iYXNlUXVldWU9ZT1mO2MucGVuZGluZz1udWxsfWlmKG51bGwhPT1lKXtmPWUubmV4dDtkPWQuYmFzZVN0YXRlO3ZhciBoPWc9bnVsbCxrPW51bGwsbD1mO2Rve3ZhciBtPWwubGFuZTtpZigoSGgmbSk9PT1tKW51bGwhPT1rJiYoaz1rLm5leHQ9e2xhbmU6MCxhY3Rpb246bC5hY3Rpb24saGFzRWFnZXJTdGF0ZTpsLmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTpsLmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksZD1sLmhhc0VhZ2VyU3RhdGU/bC5lYWdlclN0YXRlOmEoZCxsLmFjdGlvbik7ZWxzZXt2YXIgcT17bGFuZTptLGFjdGlvbjpsLmFjdGlvbixoYXNFYWdlclN0YXRlOmwuaGFzRWFnZXJTdGF0ZSxcbmVhZ2VyU3RhdGU6bC5lYWdlclN0YXRlLG5leHQ6bnVsbH07bnVsbD09PWs/KGg9az1xLGc9ZCk6az1rLm5leHQ9cTtNLmxhbmVzfD1tO3JofD1tfWw9bC5uZXh0fXdoaWxlKG51bGwhPT1sJiZsIT09Zik7bnVsbD09PWs/Zz1kOmsubmV4dD1oO0hlKGQsYi5tZW1vaXplZFN0YXRlKXx8KGRoPSEwKTtiLm1lbW9pemVkU3RhdGU9ZDtiLmJhc2VTdGF0ZT1nO2IuYmFzZVF1ZXVlPWs7Yy5sYXN0UmVuZGVyZWRTdGF0ZT1kfWE9Yy5pbnRlcmxlYXZlZDtpZihudWxsIT09YSl7ZT1hO2RvIGY9ZS5sYW5lLE0ubGFuZXN8PWYscmh8PWYsZT1lLm5leHQ7d2hpbGUoZSE9PWEpfWVsc2UgbnVsbD09PWUmJihjLmxhbmVzPTApO3JldHVybltiLm1lbW9pemVkU3RhdGUsYy5kaXNwYXRjaF19XG5mdW5jdGlvbiBYaChhKXt2YXIgYj1VaCgpLGM9Yi5xdWV1ZTtpZihudWxsPT09Yyl0aHJvdyBFcnJvcihwKDMxMSkpO2MubGFzdFJlbmRlcmVkUmVkdWNlcj1hO3ZhciBkPWMuZGlzcGF0Y2gsZT1jLnBlbmRpbmcsZj1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWUpe2MucGVuZGluZz1udWxsO3ZhciBnPWU9ZS5uZXh0O2RvIGY9YShmLGcuYWN0aW9uKSxnPWcubmV4dDt3aGlsZShnIT09ZSk7SGUoZixiLm1lbW9pemVkU3RhdGUpfHwoZGg9ITApO2IubWVtb2l6ZWRTdGF0ZT1mO251bGw9PT1iLmJhc2VRdWV1ZSYmKGIuYmFzZVN0YXRlPWYpO2MubGFzdFJlbmRlcmVkU3RhdGU9Zn1yZXR1cm5bZixkXX1mdW5jdGlvbiBZaCgpe31cbmZ1bmN0aW9uIFpoKGEsYil7dmFyIGM9TSxkPVVoKCksZT1iKCksZj0hSGUoZC5tZW1vaXplZFN0YXRlLGUpO2YmJihkLm1lbW9pemVkU3RhdGU9ZSxkaD0hMCk7ZD1kLnF1ZXVlOyRoKGFpLmJpbmQobnVsbCxjLGQsYSksW2FdKTtpZihkLmdldFNuYXBzaG90IT09Ynx8Znx8bnVsbCE9PU8mJk8ubWVtb2l6ZWRTdGF0ZS50YWcmMSl7Yy5mbGFnc3w9MjA0ODtiaSg5LGNpLmJpbmQobnVsbCxjLGQsZSxiKSx2b2lkIDAsbnVsbCk7aWYobnVsbD09PVEpdGhyb3cgRXJyb3IocCgzNDkpKTswIT09KEhoJjMwKXx8ZGkoYyxiLGUpfXJldHVybiBlfWZ1bmN0aW9uIGRpKGEsYixjKXthLmZsYWdzfD0xNjM4NDthPXtnZXRTbmFwc2hvdDpiLHZhbHVlOmN9O2I9TS51cGRhdGVRdWV1ZTtudWxsPT09Yj8oYj17bGFzdEVmZmVjdDpudWxsLHN0b3JlczpudWxsfSxNLnVwZGF0ZVF1ZXVlPWIsYi5zdG9yZXM9W2FdKTooYz1iLnN0b3JlcyxudWxsPT09Yz9iLnN0b3Jlcz1bYV06Yy5wdXNoKGEpKX1cbmZ1bmN0aW9uIGNpKGEsYixjLGQpe2IudmFsdWU9YztiLmdldFNuYXBzaG90PWQ7ZWkoYikmJmZpKGEpfWZ1bmN0aW9uIGFpKGEsYixjKXtyZXR1cm4gYyhmdW5jdGlvbigpe2VpKGIpJiZmaShhKX0pfWZ1bmN0aW9uIGVpKGEpe3ZhciBiPWEuZ2V0U25hcHNob3Q7YT1hLnZhbHVlO3RyeXt2YXIgYz1iKCk7cmV0dXJuIUhlKGEsYyl9Y2F0Y2goZCl7cmV0dXJuITB9fWZ1bmN0aW9uIGZpKGEpe3ZhciBiPWloKGEsMSk7bnVsbCE9PWImJmdpKGIsYSwxLC0xKX1cbmZ1bmN0aW9uIGhpKGEpe3ZhciBiPVRoKCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGEmJihhPWEoKSk7Yi5tZW1vaXplZFN0YXRlPWIuYmFzZVN0YXRlPWE7YT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6VmgsbGFzdFJlbmRlcmVkU3RhdGU6YX07Yi5xdWV1ZT1hO2E9YS5kaXNwYXRjaD1paS5iaW5kKG51bGwsTSxhKTtyZXR1cm5bYi5tZW1vaXplZFN0YXRlLGFdfVxuZnVuY3Rpb24gYmkoYSxiLGMsZCl7YT17dGFnOmEsY3JlYXRlOmIsZGVzdHJveTpjLGRlcHM6ZCxuZXh0Om51bGx9O2I9TS51cGRhdGVRdWV1ZTtudWxsPT09Yj8oYj17bGFzdEVmZmVjdDpudWxsLHN0b3JlczpudWxsfSxNLnVwZGF0ZVF1ZXVlPWIsYi5sYXN0RWZmZWN0PWEubmV4dD1hKTooYz1iLmxhc3RFZmZlY3QsbnVsbD09PWM/Yi5sYXN0RWZmZWN0PWEubmV4dD1hOihkPWMubmV4dCxjLm5leHQ9YSxhLm5leHQ9ZCxiLmxhc3RFZmZlY3Q9YSkpO3JldHVybiBhfWZ1bmN0aW9uIGppKCl7cmV0dXJuIFVoKCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiBraShhLGIsYyxkKXt2YXIgZT1UaCgpO00uZmxhZ3N8PWE7ZS5tZW1vaXplZFN0YXRlPWJpKDF8YixjLHZvaWQgMCx2b2lkIDA9PT1kP251bGw6ZCl9XG5mdW5jdGlvbiBsaShhLGIsYyxkKXt2YXIgZT1VaCgpO2Q9dm9pZCAwPT09ZD9udWxsOmQ7dmFyIGY9dm9pZCAwO2lmKG51bGwhPT1OKXt2YXIgZz1OLm1lbW9pemVkU3RhdGU7Zj1nLmRlc3Ryb3k7aWYobnVsbCE9PWQmJk1oKGQsZy5kZXBzKSl7ZS5tZW1vaXplZFN0YXRlPWJpKGIsYyxmLGQpO3JldHVybn19TS5mbGFnc3w9YTtlLm1lbW9pemVkU3RhdGU9YmkoMXxiLGMsZixkKX1mdW5jdGlvbiBtaShhLGIpe3JldHVybiBraSg4MzkwNjU2LDgsYSxiKX1mdW5jdGlvbiAkaChhLGIpe3JldHVybiBsaSgyMDQ4LDgsYSxiKX1mdW5jdGlvbiBuaShhLGIpe3JldHVybiBsaSg0LDIsYSxiKX1mdW5jdGlvbiBvaShhLGIpe3JldHVybiBsaSg0LDQsYSxiKX1cbmZ1bmN0aW9uIHBpKGEsYil7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIpcmV0dXJuIGE9YSgpLGIoYSksZnVuY3Rpb24oKXtiKG51bGwpfTtpZihudWxsIT09YiYmdm9pZCAwIT09YilyZXR1cm4gYT1hKCksYi5jdXJyZW50PWEsZnVuY3Rpb24oKXtiLmN1cnJlbnQ9bnVsbH19ZnVuY3Rpb24gcWkoYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiBsaSg0LDQscGkuYmluZChudWxsLGIsYSksYyl9ZnVuY3Rpb24gcmkoKXt9ZnVuY3Rpb24gc2koYSxiKXt2YXIgYz1VaCgpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmTWgoYixkWzFdKSlyZXR1cm4gZFswXTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9XG5mdW5jdGlvbiB0aShhLGIpe3ZhciBjPVVoKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZNaChiLGRbMV0pKXJldHVybiBkWzBdO2E9YSgpO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1mdW5jdGlvbiB1aShhLGIsYyl7aWYoMD09PShIaCYyMSkpcmV0dXJuIGEuYmFzZVN0YXRlJiYoYS5iYXNlU3RhdGU9ITEsZGg9ITApLGEubWVtb2l6ZWRTdGF0ZT1jO0hlKGMsYil8fChjPXljKCksTS5sYW5lc3w9YyxyaHw9YyxhLmJhc2VTdGF0ZT0hMCk7cmV0dXJuIGJ9ZnVuY3Rpb24gdmkoYSxiKXt2YXIgYz1DO0M9MCE9PWMmJjQ+Yz9jOjQ7YSghMCk7dmFyIGQ9R2gudHJhbnNpdGlvbjtHaC50cmFuc2l0aW9uPXt9O3RyeXthKCExKSxiKCl9ZmluYWxseXtDPWMsR2gudHJhbnNpdGlvbj1kfX1mdW5jdGlvbiB3aSgpe3JldHVybiBVaCgpLm1lbW9pemVkU3RhdGV9XG5mdW5jdGlvbiB4aShhLGIsYyl7dmFyIGQ9eWkoYSk7Yz17bGFuZTpkLGFjdGlvbjpjLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07aWYoemkoYSkpQWkoYixjKTtlbHNlIGlmKGM9aGgoYSxiLGMsZCksbnVsbCE9PWMpe3ZhciBlPVIoKTtnaShjLGEsZCxlKTtCaShjLGIsZCl9fVxuZnVuY3Rpb24gaWkoYSxiLGMpe3ZhciBkPXlpKGEpLGU9e2xhbmU6ZCxhY3Rpb246YyxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9O2lmKHppKGEpKUFpKGIsZSk7ZWxzZXt2YXIgZj1hLmFsdGVybmF0ZTtpZigwPT09YS5sYW5lcyYmKG51bGw9PT1mfHwwPT09Zi5sYW5lcykmJihmPWIubGFzdFJlbmRlcmVkUmVkdWNlcixudWxsIT09ZikpdHJ5e3ZhciBnPWIubGFzdFJlbmRlcmVkU3RhdGUsaD1mKGcsYyk7ZS5oYXNFYWdlclN0YXRlPSEwO2UuZWFnZXJTdGF0ZT1oO2lmKEhlKGgsZykpe3ZhciBrPWIuaW50ZXJsZWF2ZWQ7bnVsbD09PWs/KGUubmV4dD1lLGdoKGIpKTooZS5uZXh0PWsubmV4dCxrLm5leHQ9ZSk7Yi5pbnRlcmxlYXZlZD1lO3JldHVybn19Y2F0Y2gobCl7fWZpbmFsbHl7fWM9aGgoYSxiLGUsZCk7bnVsbCE9PWMmJihlPVIoKSxnaShjLGEsZCxlKSxCaShjLGIsZCkpfX1cbmZ1bmN0aW9uIHppKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO3JldHVybiBhPT09TXx8bnVsbCE9PWImJmI9PT1NfWZ1bmN0aW9uIEFpKGEsYil7Smg9SWg9ITA7dmFyIGM9YS5wZW5kaW5nO251bGw9PT1jP2IubmV4dD1iOihiLm5leHQ9Yy5uZXh0LGMubmV4dD1iKTthLnBlbmRpbmc9Yn1mdW5jdGlvbiBCaShhLGIsYyl7aWYoMCE9PShjJjQxOTQyNDApKXt2YXIgZD1iLmxhbmVzO2QmPWEucGVuZGluZ0xhbmVzO2N8PWQ7Yi5sYW5lcz1jO0NjKGEsYyl9fVxudmFyIFJoPXtyZWFkQ29udGV4dDplaCx1c2VDYWxsYmFjazpQLHVzZUNvbnRleHQ6UCx1c2VFZmZlY3Q6UCx1c2VJbXBlcmF0aXZlSGFuZGxlOlAsdXNlSW5zZXJ0aW9uRWZmZWN0OlAsdXNlTGF5b3V0RWZmZWN0OlAsdXNlTWVtbzpQLHVzZVJlZHVjZXI6UCx1c2VSZWY6UCx1c2VTdGF0ZTpQLHVzZURlYnVnVmFsdWU6UCx1c2VEZWZlcnJlZFZhbHVlOlAsdXNlVHJhbnNpdGlvbjpQLHVzZU11dGFibGVTb3VyY2U6UCx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpQLHVzZUlkOlAsdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxPaD17cmVhZENvbnRleHQ6ZWgsdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oYSxiKXtUaCgpLm1lbW9pemVkU3RhdGU9W2Esdm9pZCAwPT09Yj9udWxsOmJdO3JldHVybiBhfSx1c2VDb250ZXh0OmVoLHVzZUVmZmVjdDptaSx1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGEsYixjKXtjPW51bGwhPT1jJiZ2b2lkIDAhPT1jP2MuY29uY2F0KFthXSk6bnVsbDtyZXR1cm4ga2koNDE5NDMwOCxcbjQscGkuYmluZChudWxsLGIsYSksYyl9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiBraSg0MTk0MzA4LDQsYSxiKX0sdXNlSW5zZXJ0aW9uRWZmZWN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGtpKDQsMixhLGIpfSx1c2VNZW1vOmZ1bmN0aW9uKGEsYil7dmFyIGM9VGgoKTtiPXZvaWQgMD09PWI/bnVsbDpiO2E9YSgpO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX0sdXNlUmVkdWNlcjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9VGgoKTtiPXZvaWQgMCE9PWM/YyhiKTpiO2QubWVtb2l6ZWRTdGF0ZT1kLmJhc2VTdGF0ZT1iO2E9e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmEsbGFzdFJlbmRlcmVkU3RhdGU6Yn07ZC5xdWV1ZT1hO2E9YS5kaXNwYXRjaD14aS5iaW5kKG51bGwsTSxhKTtyZXR1cm5bZC5tZW1vaXplZFN0YXRlLGFdfSx1c2VSZWY6ZnVuY3Rpb24oYSl7dmFyIGI9XG5UaCgpO2E9e2N1cnJlbnQ6YX07cmV0dXJuIGIubWVtb2l6ZWRTdGF0ZT1hfSx1c2VTdGF0ZTpoaSx1c2VEZWJ1Z1ZhbHVlOnJpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIFRoKCkubWVtb2l6ZWRTdGF0ZT1hfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9aGkoITEpLGI9YVswXTthPXZpLmJpbmQobnVsbCxhWzFdKTtUaCgpLm1lbW9pemVkU3RhdGU9YTtyZXR1cm5bYixhXX0sdXNlTXV0YWJsZVNvdXJjZTpmdW5jdGlvbigpe30sdXNlU3luY0V4dGVybmFsU3RvcmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU0sZT1UaCgpO2lmKEkpe2lmKHZvaWQgMD09PWMpdGhyb3cgRXJyb3IocCg0MDcpKTtjPWMoKX1lbHNle2M9YigpO2lmKG51bGw9PT1RKXRocm93IEVycm9yKHAoMzQ5KSk7MCE9PShIaCYzMCl8fGRpKGQsYixjKX1lLm1lbW9pemVkU3RhdGU9Yzt2YXIgZj17dmFsdWU6YyxnZXRTbmFwc2hvdDpifTtlLnF1ZXVlPWY7bWkoYWkuYmluZChudWxsLGQsXG5mLGEpLFthXSk7ZC5mbGFnc3w9MjA0ODtiaSg5LGNpLmJpbmQobnVsbCxkLGYsYyxiKSx2b2lkIDAsbnVsbCk7cmV0dXJuIGN9LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGE9VGgoKSxiPVEuaWRlbnRpZmllclByZWZpeDtpZihJKXt2YXIgYz1zZzt2YXIgZD1yZztjPShkJn4oMTw8MzItb2MoZCktMSkpLnRvU3RyaW5nKDMyKStjO2I9XCI6XCIrYitcIlJcIitjO2M9S2grKzswPGMmJihiKz1cIkhcIitjLnRvU3RyaW5nKDMyKSk7Yis9XCI6XCJ9ZWxzZSBjPUxoKyssYj1cIjpcIitiK1wiclwiK2MudG9TdHJpbmcoMzIpK1wiOlwiO3JldHVybiBhLm1lbW9pemVkU3RhdGU9Yn0sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxQaD17cmVhZENvbnRleHQ6ZWgsdXNlQ2FsbGJhY2s6c2ksdXNlQ29udGV4dDplaCx1c2VFZmZlY3Q6JGgsdXNlSW1wZXJhdGl2ZUhhbmRsZTpxaSx1c2VJbnNlcnRpb25FZmZlY3Q6bmksdXNlTGF5b3V0RWZmZWN0Om9pLHVzZU1lbW86dGksdXNlUmVkdWNlcjpXaCx1c2VSZWY6amksdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gV2goVmgpfSxcbnVzZURlYnVnVmFsdWU6cmksdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhKXt2YXIgYj1VaCgpO3JldHVybiB1aShiLE4ubWVtb2l6ZWRTdGF0ZSxhKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPVdoKFZoKVswXSxiPVVoKCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bYSxiXX0sdXNlTXV0YWJsZVNvdXJjZTpZaCx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpaaCx1c2VJZDp3aSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LFFoPXtyZWFkQ29udGV4dDplaCx1c2VDYWxsYmFjazpzaSx1c2VDb250ZXh0OmVoLHVzZUVmZmVjdDokaCx1c2VJbXBlcmF0aXZlSGFuZGxlOnFpLHVzZUluc2VydGlvbkVmZmVjdDpuaSx1c2VMYXlvdXRFZmZlY3Q6b2ksdXNlTWVtbzp0aSx1c2VSZWR1Y2VyOlhoLHVzZVJlZjpqaSx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBYaChWaCl9LHVzZURlYnVnVmFsdWU6cmksdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhKXt2YXIgYj1VaCgpO3JldHVybiBudWxsPT09XG5OP2IubWVtb2l6ZWRTdGF0ZT1hOnVpKGIsTi5tZW1vaXplZFN0YXRlLGEpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9WGgoVmgpWzBdLGI9VWgoKS5tZW1vaXplZFN0YXRlO3JldHVyblthLGJdfSx1c2VNdXRhYmxlU291cmNlOlloLHVzZVN5bmNFeHRlcm5hbFN0b3JlOlpoLHVzZUlkOndpLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX07ZnVuY3Rpb24gQ2koYSxiKXtpZihhJiZhLmRlZmF1bHRQcm9wcyl7Yj1BKHt9LGIpO2E9YS5kZWZhdWx0UHJvcHM7Zm9yKHZhciBjIGluIGEpdm9pZCAwPT09YltjXSYmKGJbY109YVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGJ9ZnVuY3Rpb24gRGkoYSxiLGMsZCl7Yj1hLm1lbW9pemVkU3RhdGU7Yz1jKGQsYik7Yz1udWxsPT09Y3x8dm9pZCAwPT09Yz9iOkEoe30sYixjKTthLm1lbW9pemVkU3RhdGU9YzswPT09YS5sYW5lcyYmKGEudXBkYXRlUXVldWUuYmFzZVN0YXRlPWMpfVxudmFyIEVpPXtpc01vdW50ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5fcmVhY3RJbnRlcm5hbHMpP1ZiKGEpPT09YTohMX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGEsYixjKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBkPVIoKSxlPXlpKGEpLGY9bWgoZCxlKTtmLnBheWxvYWQ9Yjt2b2lkIDAhPT1jJiZudWxsIT09YyYmKGYuY2FsbGJhY2s9Yyk7Yj1uaChhLGYsZSk7bnVsbCE9PWImJihnaShiLGEsZSxkKSxvaChiLGEsZSkpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGEsYixjKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBkPVIoKSxlPXlpKGEpLGY9bWgoZCxlKTtmLnRhZz0xO2YucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZi5jYWxsYmFjaz1jKTtiPW5oKGEsZixlKTtudWxsIT09YiYmKGdpKGIsYSxlLGQpLG9oKGIsYSxlKSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihhLGIpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGM9UigpLGQ9XG55aShhKSxlPW1oKGMsZCk7ZS50YWc9Mjt2b2lkIDAhPT1iJiZudWxsIT09YiYmKGUuY2FsbGJhY2s9Yik7Yj1uaChhLGUsZCk7bnVsbCE9PWImJihnaShiLGEsZCxjKSxvaChiLGEsZCkpfX07ZnVuY3Rpb24gRmkoYSxiLGMsZCxlLGYsZyl7YT1hLnN0YXRlTm9kZTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5zaG91bGRDb21wb25lbnRVcGRhdGU/YS5zaG91bGRDb21wb25lbnRVcGRhdGUoZCxmLGcpOmIucHJvdG90eXBlJiZiLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudD8hSWUoYyxkKXx8IUllKGUsZik6ITB9XG5mdW5jdGlvbiBHaShhLGIsYyl7dmFyIGQ9ITEsZT1WZjt2YXIgZj1iLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWY/Zj1laChmKTooZT1aZihiKT9YZjpILmN1cnJlbnQsZD1iLmNvbnRleHRUeXBlcyxmPShkPW51bGwhPT1kJiZ2b2lkIDAhPT1kKT9ZZihhLGUpOlZmKTtiPW5ldyBiKGMsZik7YS5tZW1vaXplZFN0YXRlPW51bGwhPT1iLnN0YXRlJiZ2b2lkIDAhPT1iLnN0YXRlP2Iuc3RhdGU6bnVsbDtiLnVwZGF0ZXI9RWk7YS5zdGF0ZU5vZGU9YjtiLl9yZWFjdEludGVybmFscz1hO2QmJihhPWEuc3RhdGVOb2RlLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1lLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9Zik7cmV0dXJuIGJ9XG5mdW5jdGlvbiBIaShhLGIsYyxkKXthPWIuc3RhdGU7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmIuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtiLnN0YXRlIT09YSYmRWkuZW5xdWV1ZVJlcGxhY2VTdGF0ZShiLGIuc3RhdGUsbnVsbCl9XG5mdW5jdGlvbiBJaShhLGIsYyxkKXt2YXIgZT1hLnN0YXRlTm9kZTtlLnByb3BzPWM7ZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGU7ZS5yZWZzPXt9O2toKGEpO3ZhciBmPWIuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zj9lLmNvbnRleHQ9ZWgoZik6KGY9WmYoYik/WGY6SC5jdXJyZW50LGUuY29udGV4dD1ZZihhLGYpKTtlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtmPWIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBmJiYoRGkoYSxiLGYsYyksZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGUpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc3x8XCJmdW5jdGlvblwiPT09dHlwZW9mIGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLmNvbXBvbmVudFdpbGxNb3VudHx8KGI9ZS5zdGF0ZSxcblwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmNvbXBvbmVudFdpbGxNb3VudCYmZS5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSxiIT09ZS5zdGF0ZSYmRWkuZW5xdWV1ZVJlcGxhY2VTdGF0ZShlLGUuc3RhdGUsbnVsbCkscWgoYSxjLGUsZCksZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGUpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmNvbXBvbmVudERpZE1vdW50JiYoYS5mbGFnc3w9NDE5NDMwOCl9ZnVuY3Rpb24gSmkoYSxiKXt0cnl7dmFyIGM9XCJcIixkPWI7ZG8gYys9UGEoZCksZD1kLnJldHVybjt3aGlsZShkKTt2YXIgZT1jfWNhdGNoKGYpe2U9XCJcXG5FcnJvciBnZW5lcmF0aW5nIHN0YWNrOiBcIitmLm1lc3NhZ2UrXCJcXG5cIitmLnN0YWNrfXJldHVybnt2YWx1ZTphLHNvdXJjZTpiLHN0YWNrOmUsZGlnZXN0Om51bGx9fVxuZnVuY3Rpb24gS2koYSxiLGMpe3JldHVybnt2YWx1ZTphLHNvdXJjZTpudWxsLHN0YWNrOm51bGwhPWM/YzpudWxsLGRpZ2VzdDpudWxsIT1iP2I6bnVsbH19ZnVuY3Rpb24gTGkoYSxiKXt0cnl7Y29uc29sZS5lcnJvcihiLnZhbHVlKX1jYXRjaChjKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYzt9KX19dmFyIE1pPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBXZWFrTWFwP1dlYWtNYXA6TWFwO2Z1bmN0aW9uIE5pKGEsYixjKXtjPW1oKC0xLGMpO2MudGFnPTM7Yy5wYXlsb2FkPXtlbGVtZW50Om51bGx9O3ZhciBkPWIudmFsdWU7Yy5jYWxsYmFjaz1mdW5jdGlvbigpe09pfHwoT2k9ITAsUGk9ZCk7TGkoYSxiKX07cmV0dXJuIGN9XG5mdW5jdGlvbiBRaShhLGIsYyl7Yz1taCgtMSxjKTtjLnRhZz0zO3ZhciBkPWEudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBlPWIudmFsdWU7Yy5wYXlsb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIGQoZSl9O2MuY2FsbGJhY2s9ZnVuY3Rpb24oKXtMaShhLGIpfX12YXIgZj1hLnN0YXRlTm9kZTtudWxsIT09ZiYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGYuY29tcG9uZW50RGlkQ2F0Y2gmJihjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7TGkoYSxiKTtcImZ1bmN0aW9uXCIhPT10eXBlb2YgZCYmKG51bGw9PT1SaT9SaT1uZXcgU2V0KFt0aGlzXSk6UmkuYWRkKHRoaXMpKTt2YXIgYz1iLnN0YWNrO3RoaXMuY29tcG9uZW50RGlkQ2F0Y2goYi52YWx1ZSx7Y29tcG9uZW50U3RhY2s6bnVsbCE9PWM/YzpcIlwifSl9KTtyZXR1cm4gY31cbmZ1bmN0aW9uIFNpKGEsYixjKXt2YXIgZD1hLnBpbmdDYWNoZTtpZihudWxsPT09ZCl7ZD1hLnBpbmdDYWNoZT1uZXcgTWk7dmFyIGU9bmV3IFNldDtkLnNldChiLGUpfWVsc2UgZT1kLmdldChiKSx2b2lkIDA9PT1lJiYoZT1uZXcgU2V0LGQuc2V0KGIsZSkpO2UuaGFzKGMpfHwoZS5hZGQoYyksYT1UaS5iaW5kKG51bGwsYSxiLGMpLGIudGhlbihhLGEpKX1mdW5jdGlvbiBVaShhKXtkb3t2YXIgYjtpZihiPTEzPT09YS50YWcpYj1hLm1lbW9pemVkU3RhdGUsYj1udWxsIT09Yj9udWxsIT09Yi5kZWh5ZHJhdGVkPyEwOiExOiEwO2lmKGIpcmV0dXJuIGE7YT1hLnJldHVybn13aGlsZShudWxsIT09YSk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBWaShhLGIsYyxkLGUpe2lmKDA9PT0oYS5tb2RlJjEpKXJldHVybiBhPT09Yj9hLmZsYWdzfD02NTUzNjooYS5mbGFnc3w9MTI4LGMuZmxhZ3N8PTEzMTA3MixjLmZsYWdzJj0tNTI4MDUsMT09PWMudGFnJiYobnVsbD09PWMuYWx0ZXJuYXRlP2MudGFnPTE3OihiPW1oKC0xLDEpLGIudGFnPTIsbmgoYyxiLDEpKSksYy5sYW5lc3w9MSksYTthLmZsYWdzfD02NTUzNjthLmxhbmVzPWU7cmV0dXJuIGF9dmFyIFdpPXVhLlJlYWN0Q3VycmVudE93bmVyLGRoPSExO2Z1bmN0aW9uIFhpKGEsYixjLGQpe2IuY2hpbGQ9bnVsbD09PWE/VmcoYixudWxsLGMsZCk6VWcoYixhLmNoaWxkLGMsZCl9XG5mdW5jdGlvbiBZaShhLGIsYyxkLGUpe2M9Yy5yZW5kZXI7dmFyIGY9Yi5yZWY7Y2goYixlKTtkPU5oKGEsYixjLGQsZixlKTtjPVNoKCk7aWYobnVsbCE9PWEmJiFkaClyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZmxhZ3MmPS0yMDUzLGEubGFuZXMmPX5lLFppKGEsYixlKTtJJiZjJiZ2ZyhiKTtiLmZsYWdzfD0xO1hpKGEsYixkLGUpO3JldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gJGkoYSxiLGMsZCxlKXtpZihudWxsPT09YSl7dmFyIGY9Yy50eXBlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmJiYhYWooZikmJnZvaWQgMD09PWYuZGVmYXVsdFByb3BzJiZudWxsPT09Yy5jb21wYXJlJiZ2b2lkIDA9PT1jLmRlZmF1bHRQcm9wcylyZXR1cm4gYi50YWc9MTUsYi50eXBlPWYsYmooYSxiLGYsZCxlKTthPVJnKGMudHlwZSxudWxsLGQsYixiLm1vZGUsZSk7YS5yZWY9Yi5yZWY7YS5yZXR1cm49YjtyZXR1cm4gYi5jaGlsZD1hfWY9YS5jaGlsZDtpZigwPT09KGEubGFuZXMmZSkpe3ZhciBnPWYubWVtb2l6ZWRQcm9wcztjPWMuY29tcGFyZTtjPW51bGwhPT1jP2M6SWU7aWYoYyhnLGQpJiZhLnJlZj09PWIucmVmKXJldHVybiBaaShhLGIsZSl9Yi5mbGFnc3w9MTthPVBnKGYsZCk7YS5yZWY9Yi5yZWY7YS5yZXR1cm49YjtyZXR1cm4gYi5jaGlsZD1hfVxuZnVuY3Rpb24gYmooYSxiLGMsZCxlKXtpZihudWxsIT09YSl7dmFyIGY9YS5tZW1vaXplZFByb3BzO2lmKEllKGYsZCkmJmEucmVmPT09Yi5yZWYpaWYoZGg9ITEsYi5wZW5kaW5nUHJvcHM9ZD1mLDAhPT0oYS5sYW5lcyZlKSkwIT09KGEuZmxhZ3MmMTMxMDcyKSYmKGRoPSEwKTtlbHNlIHJldHVybiBiLmxhbmVzPWEubGFuZXMsWmkoYSxiLGUpfXJldHVybiBjaihhLGIsYyxkLGUpfVxuZnVuY3Rpb24gZGooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9ZC5jaGlsZHJlbixmPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKFwiaGlkZGVuXCI9PT1kLm1vZGUpaWYoMD09PShiLm1vZGUmMSkpYi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxHKGVqLGZqKSxmanw9YztlbHNle2lmKDA9PT0oYyYxMDczNzQxODI0KSlyZXR1cm4gYT1udWxsIT09Zj9mLmJhc2VMYW5lc3xjOmMsYi5sYW5lcz1iLmNoaWxkTGFuZXM9MTA3Mzc0MTgyNCxiLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczphLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LGIudXBkYXRlUXVldWU9bnVsbCxHKGVqLGZqKSxmanw9YSxudWxsO2IubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjAsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH07ZD1udWxsIT09Zj9mLmJhc2VMYW5lczpjO0coZWosZmopO2ZqfD1kfWVsc2UgbnVsbCE9PVxuZj8oZD1mLmJhc2VMYW5lc3xjLGIubWVtb2l6ZWRTdGF0ZT1udWxsKTpkPWMsRyhlaixmaiksZmp8PWQ7WGkoYSxiLGUsYyk7cmV0dXJuIGIuY2hpbGR9ZnVuY3Rpb24gZ2ooYSxiKXt2YXIgYz1iLnJlZjtpZihudWxsPT09YSYmbnVsbCE9PWN8fG51bGwhPT1hJiZhLnJlZiE9PWMpYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTJ9ZnVuY3Rpb24gY2ooYSxiLGMsZCxlKXt2YXIgZj1aZihjKT9YZjpILmN1cnJlbnQ7Zj1ZZihiLGYpO2NoKGIsZSk7Yz1OaChhLGIsYyxkLGYsZSk7ZD1TaCgpO2lmKG51bGwhPT1hJiYhZGgpcmV0dXJuIGIudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZSxiLmZsYWdzJj0tMjA1MyxhLmxhbmVzJj1+ZSxaaShhLGIsZSk7SSYmZCYmdmcoYik7Yi5mbGFnc3w9MTtYaShhLGIsYyxlKTtyZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGhqKGEsYixjLGQsZSl7aWYoWmYoYykpe3ZhciBmPSEwO2NnKGIpfWVsc2UgZj0hMTtjaChiLGUpO2lmKG51bGw9PT1iLnN0YXRlTm9kZSlpaihhLGIpLEdpKGIsYyxkKSxJaShiLGMsZCxlKSxkPSEwO2Vsc2UgaWYobnVsbD09PWEpe3ZhciBnPWIuc3RhdGVOb2RlLGg9Yi5tZW1vaXplZFByb3BzO2cucHJvcHM9aDt2YXIgaz1nLmNvbnRleHQsbD1jLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgbCYmbnVsbCE9PWw/bD1laChsKToobD1aZihjKT9YZjpILmN1cnJlbnQsbD1ZZihiLGwpKTt2YXIgbT1jLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyxxPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBtfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTtxfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8XG4oaCE9PWR8fGshPT1sKSYmSGkoYixnLGQsbCk7amg9ITE7dmFyIHI9Yi5tZW1vaXplZFN0YXRlO2cuc3RhdGU9cjtxaChiLGQsZyxlKTtrPWIubWVtb2l6ZWRTdGF0ZTtoIT09ZHx8ciE9PWt8fFdmLmN1cnJlbnR8fGpoPyhcImZ1bmN0aW9uXCI9PT10eXBlb2YgbSYmKERpKGIsYyxtLGQpLGs9Yi5tZW1vaXplZFN0YXRlKSwoaD1qaHx8RmkoYixjLGgsZCxyLGssbCkpPyhxfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsTW91bnR8fChcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnRXaWxsTW91bnQmJmcuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NDE5NDMwOCkpOlxuKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NDE5NDMwOCksYi5tZW1vaXplZFByb3BzPWQsYi5tZW1vaXplZFN0YXRlPWspLGcucHJvcHM9ZCxnLnN0YXRlPWssZy5jb250ZXh0PWwsZD1oKTooXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSxkPSExKX1lbHNle2c9Yi5zdGF0ZU5vZGU7bGgoYSxiKTtoPWIubWVtb2l6ZWRQcm9wcztsPWIudHlwZT09PWIuZWxlbWVudFR5cGU/aDpDaShiLnR5cGUsaCk7Zy5wcm9wcz1sO3E9Yi5wZW5kaW5nUHJvcHM7cj1nLmNvbnRleHQ7az1jLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgayYmbnVsbCE9PWs/az1laChrKTooaz1aZihjKT9YZjpILmN1cnJlbnQsaz1ZZihiLGspKTt2YXIgeT1jLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczsobT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgeXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpfHxcblwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwoaCE9PXF8fHIhPT1rKSYmSGkoYixnLGQsayk7amg9ITE7cj1iLm1lbW9pemVkU3RhdGU7Zy5zdGF0ZT1yO3FoKGIsZCxnLGUpO3ZhciBuPWIubWVtb2l6ZWRTdGF0ZTtoIT09cXx8ciE9PW58fFdmLmN1cnJlbnR8fGpoPyhcImZ1bmN0aW9uXCI9PT10eXBlb2YgeSYmKERpKGIsYyx5LGQpLG49Yi5tZW1vaXplZFN0YXRlKSwobD1qaHx8RmkoYixjLGwsZCxyLG4sayl8fCExKT8obXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxVcGRhdGV8fChcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnRXaWxsVXBkYXRlJiZnLmNvbXBvbmVudFdpbGxVcGRhdGUoZCxuLGspLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcbmcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUoZCxuLGspKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGUmJihiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSYmKGIuZmxhZ3N8PTEwMjQpKTooXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09YS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD0xMDI0KSxiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9biksZy5wcm9wcz1kLGcuc3RhdGU9bixnLmNvbnRleHQ9ayxkPWwpOihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1cbmEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09YS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9MTAyNCksZD0hMSl9cmV0dXJuIGpqKGEsYixjLGQsZixlKX1cbmZ1bmN0aW9uIGpqKGEsYixjLGQsZSxmKXtnaihhLGIpO3ZhciBnPTAhPT0oYi5mbGFncyYxMjgpO2lmKCFkJiYhZylyZXR1cm4gZSYmZGcoYixjLCExKSxaaShhLGIsZik7ZD1iLnN0YXRlTm9kZTtXaS5jdXJyZW50PWI7dmFyIGg9ZyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGMuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yP251bGw6ZC5yZW5kZXIoKTtiLmZsYWdzfD0xO251bGwhPT1hJiZnPyhiLmNoaWxkPVVnKGIsYS5jaGlsZCxudWxsLGYpLGIuY2hpbGQ9VWcoYixudWxsLGgsZikpOlhpKGEsYixoLGYpO2IubWVtb2l6ZWRTdGF0ZT1kLnN0YXRlO2UmJmRnKGIsYywhMCk7cmV0dXJuIGIuY2hpbGR9ZnVuY3Rpb24ga2ooYSl7dmFyIGI9YS5zdGF0ZU5vZGU7Yi5wZW5kaW5nQ29udGV4dD9hZyhhLGIucGVuZGluZ0NvbnRleHQsYi5wZW5kaW5nQ29udGV4dCE9PWIuY29udGV4dCk6Yi5jb250ZXh0JiZhZyhhLGIuY29udGV4dCwhMSk7eWgoYSxiLmNvbnRhaW5lckluZm8pfVxuZnVuY3Rpb24gbGooYSxiLGMsZCxlKXtJZygpO0pnKGUpO2IuZmxhZ3N8PTI1NjtYaShhLGIsYyxkKTtyZXR1cm4gYi5jaGlsZH12YXIgbWo9e2RlaHlkcmF0ZWQ6bnVsbCx0cmVlQ29udGV4dDpudWxsLHJldHJ5TGFuZTowfTtmdW5jdGlvbiBuaihhKXtyZXR1cm57YmFzZUxhbmVzOmEsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH19XG5mdW5jdGlvbiBvaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1MLmN1cnJlbnQsZj0hMSxnPTAhPT0oYi5mbGFncyYxMjgpLGg7KGg9Zyl8fChoPW51bGwhPT1hJiZudWxsPT09YS5tZW1vaXplZFN0YXRlPyExOjAhPT0oZSYyKSk7aWYoaClmPSEwLGIuZmxhZ3MmPS0xMjk7ZWxzZSBpZihudWxsPT09YXx8bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSllfD0xO0coTCxlJjEpO2lmKG51bGw9PT1hKXtFZyhiKTthPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YSYmKGE9YS5kZWh5ZHJhdGVkLG51bGwhPT1hKSlyZXR1cm4gMD09PShiLm1vZGUmMSk/Yi5sYW5lcz0xOlwiJCFcIj09PWEuZGF0YT9iLmxhbmVzPTg6Yi5sYW5lcz0xMDczNzQxODI0LG51bGw7Zz1kLmNoaWxkcmVuO2E9ZC5mYWxsYmFjaztyZXR1cm4gZj8oZD1iLm1vZGUsZj1iLmNoaWxkLGc9e21vZGU6XCJoaWRkZW5cIixjaGlsZHJlbjpnfSwwPT09KGQmMSkmJm51bGwhPT1mPyhmLmNoaWxkTGFuZXM9MCxmLnBlbmRpbmdQcm9wcz1cbmcpOmY9cGooZyxkLDAsbnVsbCksYT1UZyhhLGQsYyxudWxsKSxmLnJldHVybj1iLGEucmV0dXJuPWIsZi5zaWJsaW5nPWEsYi5jaGlsZD1mLGIuY2hpbGQubWVtb2l6ZWRTdGF0ZT1uaihjKSxiLm1lbW9pemVkU3RhdGU9bWosYSk6cWooYixnKX1lPWEubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZSYmKGg9ZS5kZWh5ZHJhdGVkLG51bGwhPT1oKSlyZXR1cm4gcmooYSxiLGcsZCxoLGUsYyk7aWYoZil7Zj1kLmZhbGxiYWNrO2c9Yi5tb2RlO2U9YS5jaGlsZDtoPWUuc2libGluZzt2YXIgaz17bW9kZTpcImhpZGRlblwiLGNoaWxkcmVuOmQuY2hpbGRyZW59OzA9PT0oZyYxKSYmYi5jaGlsZCE9PWU/KGQ9Yi5jaGlsZCxkLmNoaWxkTGFuZXM9MCxkLnBlbmRpbmdQcm9wcz1rLGIuZGVsZXRpb25zPW51bGwpOihkPVBnKGUsayksZC5zdWJ0cmVlRmxhZ3M9ZS5zdWJ0cmVlRmxhZ3MmMTQ2ODAwNjQpO251bGwhPT1oP2Y9UGcoaCxmKTooZj1UZyhmLGcsYyxudWxsKSxmLmZsYWdzfD0yKTtmLnJldHVybj1cbmI7ZC5yZXR1cm49YjtkLnNpYmxpbmc9ZjtiLmNoaWxkPWQ7ZD1mO2Y9Yi5jaGlsZDtnPWEuY2hpbGQubWVtb2l6ZWRTdGF0ZTtnPW51bGw9PT1nP25qKGMpOntiYXNlTGFuZXM6Zy5iYXNlTGFuZXN8YyxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpnLnRyYW5zaXRpb25zfTtmLm1lbW9pemVkU3RhdGU9ZztmLmNoaWxkTGFuZXM9YS5jaGlsZExhbmVzJn5jO2IubWVtb2l6ZWRTdGF0ZT1tajtyZXR1cm4gZH1mPWEuY2hpbGQ7YT1mLnNpYmxpbmc7ZD1QZyhmLHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmQuY2hpbGRyZW59KTswPT09KGIubW9kZSYxKSYmKGQubGFuZXM9Yyk7ZC5yZXR1cm49YjtkLnNpYmxpbmc9bnVsbDtudWxsIT09YSYmKGM9Yi5kZWxldGlvbnMsbnVsbD09PWM/KGIuZGVsZXRpb25zPVthXSxiLmZsYWdzfD0xNik6Yy5wdXNoKGEpKTtiLmNoaWxkPWQ7Yi5tZW1vaXplZFN0YXRlPW51bGw7cmV0dXJuIGR9XG5mdW5jdGlvbiBxaihhLGIpe2I9cGooe21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46Yn0sYS5tb2RlLDAsbnVsbCk7Yi5yZXR1cm49YTtyZXR1cm4gYS5jaGlsZD1ifWZ1bmN0aW9uIHNqKGEsYixjLGQpe251bGwhPT1kJiZKZyhkKTtVZyhiLGEuY2hpbGQsbnVsbCxjKTthPXFqKGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4pO2EuZmxhZ3N8PTI7Yi5tZW1vaXplZFN0YXRlPW51bGw7cmV0dXJuIGF9XG5mdW5jdGlvbiByaihhLGIsYyxkLGUsZixnKXtpZihjKXtpZihiLmZsYWdzJjI1NilyZXR1cm4gYi5mbGFncyY9LTI1NyxkPUtpKEVycm9yKHAoNDIyKSkpLHNqKGEsYixnLGQpO2lmKG51bGwhPT1iLm1lbW9pemVkU3RhdGUpcmV0dXJuIGIuY2hpbGQ9YS5jaGlsZCxiLmZsYWdzfD0xMjgsbnVsbDtmPWQuZmFsbGJhY2s7ZT1iLm1vZGU7ZD1waih7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpkLmNoaWxkcmVufSxlLDAsbnVsbCk7Zj1UZyhmLGUsZyxudWxsKTtmLmZsYWdzfD0yO2QucmV0dXJuPWI7Zi5yZXR1cm49YjtkLnNpYmxpbmc9ZjtiLmNoaWxkPWQ7MCE9PShiLm1vZGUmMSkmJlVnKGIsYS5jaGlsZCxudWxsLGcpO2IuY2hpbGQubWVtb2l6ZWRTdGF0ZT1uaihnKTtiLm1lbW9pemVkU3RhdGU9bWo7cmV0dXJuIGZ9aWYoMD09PShiLm1vZGUmMSkpcmV0dXJuIHNqKGEsYixnLG51bGwpO2lmKFwiJCFcIj09PWUuZGF0YSl7ZD1lLm5leHRTaWJsaW5nJiZlLm5leHRTaWJsaW5nLmRhdGFzZXQ7XG5pZihkKXZhciBoPWQuZGdzdDtkPWg7Zj1FcnJvcihwKDQxOSkpO2Q9S2koZixkLHZvaWQgMCk7cmV0dXJuIHNqKGEsYixnLGQpfWg9MCE9PShnJmEuY2hpbGRMYW5lcyk7aWYoZGh8fGgpe2Q9UTtpZihudWxsIT09ZCl7c3dpdGNoKGcmLWcpe2Nhc2UgNDplPTI7YnJlYWs7Y2FzZSAxNjplPTg7YnJlYWs7Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OmU9MzI7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6ZT0yNjg0MzU0NTY7YnJlYWs7ZGVmYXVsdDplPTB9ZT0wIT09KGUmKGQuc3VzcGVuZGVkTGFuZXN8ZykpPzA6ZTtcbjAhPT1lJiZlIT09Zi5yZXRyeUxhbmUmJihmLnJldHJ5TGFuZT1lLGloKGEsZSksZ2koZCxhLGUsLTEpKX10aigpO2Q9S2koRXJyb3IocCg0MjEpKSk7cmV0dXJuIHNqKGEsYixnLGQpfWlmKFwiJD9cIj09PWUuZGF0YSlyZXR1cm4gYi5mbGFnc3w9MTI4LGIuY2hpbGQ9YS5jaGlsZCxiPXVqLmJpbmQobnVsbCxhKSxlLl9yZWFjdFJldHJ5PWIsbnVsbDthPWYudHJlZUNvbnRleHQ7eWc9TGYoZS5uZXh0U2libGluZyk7eGc9YjtJPSEwO3pnPW51bGw7bnVsbCE9PWEmJihvZ1twZysrXT1yZyxvZ1twZysrXT1zZyxvZ1twZysrXT1xZyxyZz1hLmlkLHNnPWEub3ZlcmZsb3cscWc9Yik7Yj1xaihiLGQuY2hpbGRyZW4pO2IuZmxhZ3N8PTQwOTY7cmV0dXJuIGJ9ZnVuY3Rpb24gdmooYSxiLGMpe2EubGFuZXN8PWI7dmFyIGQ9YS5hbHRlcm5hdGU7bnVsbCE9PWQmJihkLmxhbmVzfD1iKTtiaChhLnJldHVybixiLGMpfVxuZnVuY3Rpb24gd2ooYSxiLGMsZCxlKXt2YXIgZj1hLm1lbW9pemVkU3RhdGU7bnVsbD09PWY/YS5tZW1vaXplZFN0YXRlPXtpc0JhY2t3YXJkczpiLHJlbmRlcmluZzpudWxsLHJlbmRlcmluZ1N0YXJ0VGltZTowLGxhc3Q6ZCx0YWlsOmMsdGFpbE1vZGU6ZX06KGYuaXNCYWNrd2FyZHM9YixmLnJlbmRlcmluZz1udWxsLGYucmVuZGVyaW5nU3RhcnRUaW1lPTAsZi5sYXN0PWQsZi50YWlsPWMsZi50YWlsTW9kZT1lKX1cbmZ1bmN0aW9uIHhqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPWQucmV2ZWFsT3JkZXIsZj1kLnRhaWw7WGkoYSxiLGQuY2hpbGRyZW4sYyk7ZD1MLmN1cnJlbnQ7aWYoMCE9PShkJjIpKWQ9ZCYxfDIsYi5mbGFnc3w9MTI4O2Vsc2V7aWYobnVsbCE9PWEmJjAhPT0oYS5mbGFncyYxMjgpKWE6Zm9yKGE9Yi5jaGlsZDtudWxsIT09YTspe2lmKDEzPT09YS50YWcpbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSYmdmooYSxjLGIpO2Vsc2UgaWYoMTk9PT1hLnRhZyl2aihhLGMsYik7ZWxzZSBpZihudWxsIT09YS5jaGlsZCl7YS5jaGlsZC5yZXR1cm49YTthPWEuY2hpbGQ7Y29udGludWV9aWYoYT09PWIpYnJlYWsgYTtmb3IoO251bGw9PT1hLnNpYmxpbmc7KXtpZihudWxsPT09YS5yZXR1cm58fGEucmV0dXJuPT09YilicmVhayBhO2E9YS5yZXR1cm59YS5zaWJsaW5nLnJldHVybj1hLnJldHVybjthPWEuc2libGluZ31kJj0xfUcoTCxkKTtpZigwPT09KGIubW9kZSYxKSliLm1lbW9pemVkU3RhdGU9XG5udWxsO2Vsc2Ugc3dpdGNoKGUpe2Nhc2UgXCJmb3J3YXJkc1wiOmM9Yi5jaGlsZDtmb3IoZT1udWxsO251bGwhPT1jOylhPWMuYWx0ZXJuYXRlLG51bGwhPT1hJiZudWxsPT09Q2goYSkmJihlPWMpLGM9Yy5zaWJsaW5nO2M9ZTtudWxsPT09Yz8oZT1iLmNoaWxkLGIuY2hpbGQ9bnVsbCk6KGU9Yy5zaWJsaW5nLGMuc2libGluZz1udWxsKTt3aihiLCExLGUsYyxmKTticmVhaztjYXNlIFwiYmFja3dhcmRzXCI6Yz1udWxsO2U9Yi5jaGlsZDtmb3IoYi5jaGlsZD1udWxsO251bGwhPT1lOyl7YT1lLmFsdGVybmF0ZTtpZihudWxsIT09YSYmbnVsbD09PUNoKGEpKXtiLmNoaWxkPWU7YnJlYWt9YT1lLnNpYmxpbmc7ZS5zaWJsaW5nPWM7Yz1lO2U9YX13aihiLCEwLGMsbnVsbCxmKTticmVhaztjYXNlIFwidG9nZXRoZXJcIjp3aihiLCExLG51bGwsbnVsbCx2b2lkIDApO2JyZWFrO2RlZmF1bHQ6Yi5tZW1vaXplZFN0YXRlPW51bGx9cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBpaihhLGIpezA9PT0oYi5tb2RlJjEpJiZudWxsIT09YSYmKGEuYWx0ZXJuYXRlPW51bGwsYi5hbHRlcm5hdGU9bnVsbCxiLmZsYWdzfD0yKX1mdW5jdGlvbiBaaShhLGIsYyl7bnVsbCE9PWEmJihiLmRlcGVuZGVuY2llcz1hLmRlcGVuZGVuY2llcyk7cmh8PWIubGFuZXM7aWYoMD09PShjJmIuY2hpbGRMYW5lcykpcmV0dXJuIG51bGw7aWYobnVsbCE9PWEmJmIuY2hpbGQhPT1hLmNoaWxkKXRocm93IEVycm9yKHAoMTUzKSk7aWYobnVsbCE9PWIuY2hpbGQpe2E9Yi5jaGlsZDtjPVBnKGEsYS5wZW5kaW5nUHJvcHMpO2IuY2hpbGQ9Yztmb3IoYy5yZXR1cm49YjtudWxsIT09YS5zaWJsaW5nOylhPWEuc2libGluZyxjPWMuc2libGluZz1QZyhhLGEucGVuZGluZ1Byb3BzKSxjLnJldHVybj1iO2Muc2libGluZz1udWxsfXJldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24geWooYSxiLGMpe3N3aXRjaChiLnRhZyl7Y2FzZSAzOmtqKGIpO0lnKCk7YnJlYWs7Y2FzZSA1OkFoKGIpO2JyZWFrO2Nhc2UgMTpaZihiLnR5cGUpJiZjZyhiKTticmVhaztjYXNlIDQ6eWgoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTticmVhaztjYXNlIDEwOnZhciBkPWIudHlwZS5fY29udGV4dCxlPWIubWVtb2l6ZWRQcm9wcy52YWx1ZTtHKFdnLGQuX2N1cnJlbnRWYWx1ZSk7ZC5fY3VycmVudFZhbHVlPWU7YnJlYWs7Y2FzZSAxMzpkPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCl7aWYobnVsbCE9PWQuZGVoeWRyYXRlZClyZXR1cm4gRyhMLEwuY3VycmVudCYxKSxiLmZsYWdzfD0xMjgsbnVsbDtpZigwIT09KGMmYi5jaGlsZC5jaGlsZExhbmVzKSlyZXR1cm4gb2ooYSxiLGMpO0coTCxMLmN1cnJlbnQmMSk7YT1aaShhLGIsYyk7cmV0dXJuIG51bGwhPT1hP2Euc2libGluZzpudWxsfUcoTCxMLmN1cnJlbnQmMSk7YnJlYWs7Y2FzZSAxOTpkPTAhPT0oYyZcbmIuY2hpbGRMYW5lcyk7aWYoMCE9PShhLmZsYWdzJjEyOCkpe2lmKGQpcmV0dXJuIHhqKGEsYixjKTtiLmZsYWdzfD0xMjh9ZT1iLm1lbW9pemVkU3RhdGU7bnVsbCE9PWUmJihlLnJlbmRlcmluZz1udWxsLGUudGFpbD1udWxsLGUubGFzdEVmZmVjdD1udWxsKTtHKEwsTC5jdXJyZW50KTtpZihkKWJyZWFrO2Vsc2UgcmV0dXJuIG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBiLmxhbmVzPTAsZGooYSxiLGMpfXJldHVybiBaaShhLGIsYyl9dmFyIHpqLEFqLEJqLENqO1xuemo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9Yi5jaGlsZDtudWxsIT09Yzspe2lmKDU9PT1jLnRhZ3x8Nj09PWMudGFnKWEuYXBwZW5kQ2hpbGQoYy5zdGF0ZU5vZGUpO2Vsc2UgaWYoNCE9PWMudGFnJiZudWxsIT09Yy5jaGlsZCl7Yy5jaGlsZC5yZXR1cm49YztjPWMuY2hpbGQ7Y29udGludWV9aWYoYz09PWIpYnJlYWs7Zm9yKDtudWxsPT09Yy5zaWJsaW5nOyl7aWYobnVsbD09PWMucmV0dXJufHxjLnJldHVybj09PWIpcmV0dXJuO2M9Yy5yZXR1cm59Yy5zaWJsaW5nLnJldHVybj1jLnJldHVybjtjPWMuc2libGluZ319O0FqPWZ1bmN0aW9uKCl7fTtcbkJqPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEubWVtb2l6ZWRQcm9wcztpZihlIT09ZCl7YT1iLnN0YXRlTm9kZTt4aCh1aC5jdXJyZW50KTt2YXIgZj1udWxsO3N3aXRjaChjKXtjYXNlIFwiaW5wdXRcIjplPVlhKGEsZSk7ZD1ZYShhLGQpO2Y9W107YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmU9QSh7fSxlLHt2YWx1ZTp2b2lkIDB9KTtkPUEoe30sZCx7dmFsdWU6dm9pZCAwfSk7Zj1bXTticmVhaztjYXNlIFwidGV4dGFyZWFcIjplPWdiKGEsZSk7ZD1nYihhLGQpO2Y9W107YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5vbkNsaWNrJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5vbkNsaWNrJiYoYS5vbmNsaWNrPUJmKX11YihjLGQpO3ZhciBnO2M9bnVsbDtmb3IobCBpbiBlKWlmKCFkLmhhc093blByb3BlcnR5KGwpJiZlLmhhc093blByb3BlcnR5KGwpJiZudWxsIT1lW2xdKWlmKFwic3R5bGVcIj09PWwpe3ZhciBoPWVbbF07Zm9yKGcgaW4gaCloLmhhc093blByb3BlcnR5KGcpJiZcbihjfHwoYz17fSksY1tnXT1cIlwiKX1lbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiIT09bCYmXCJjaGlsZHJlblwiIT09bCYmXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWwmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1sJiZcImF1dG9Gb2N1c1wiIT09bCYmKGVhLmhhc093blByb3BlcnR5KGwpP2Z8fChmPVtdKTooZj1mfHxbXSkucHVzaChsLG51bGwpKTtmb3IobCBpbiBkKXt2YXIgaz1kW2xdO2g9bnVsbCE9ZT9lW2xdOnZvaWQgMDtpZihkLmhhc093blByb3BlcnR5KGwpJiZrIT09aCYmKG51bGwhPWt8fG51bGwhPWgpKWlmKFwic3R5bGVcIj09PWwpaWYoaCl7Zm9yKGcgaW4gaCkhaC5oYXNPd25Qcm9wZXJ0eShnKXx8ayYmay5oYXNPd25Qcm9wZXJ0eShnKXx8KGN8fChjPXt9KSxjW2ddPVwiXCIpO2ZvcihnIGluIGspay5oYXNPd25Qcm9wZXJ0eShnKSYmaFtnXSE9PWtbZ10mJihjfHwoYz17fSksY1tnXT1rW2ddKX1lbHNlIGN8fChmfHwoZj1bXSksZi5wdXNoKGwsXG5jKSksYz1rO2Vsc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1sPyhrPWs/ay5fX2h0bWw6dm9pZCAwLGg9aD9oLl9faHRtbDp2b2lkIDAsbnVsbCE9ayYmaCE9PWsmJihmPWZ8fFtdKS5wdXNoKGwsaykpOlwiY2hpbGRyZW5cIj09PWw/XCJzdHJpbmdcIiE9PXR5cGVvZiBrJiZcIm51bWJlclwiIT09dHlwZW9mIGt8fChmPWZ8fFtdKS5wdXNoKGwsXCJcIitrKTpcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09bCYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWwmJihlYS5oYXNPd25Qcm9wZXJ0eShsKT8obnVsbCE9ayYmXCJvblNjcm9sbFwiPT09bCYmRChcInNjcm9sbFwiLGEpLGZ8fGg9PT1rfHwoZj1bXSkpOihmPWZ8fFtdKS5wdXNoKGwsaykpfWMmJihmPWZ8fFtdKS5wdXNoKFwic3R5bGVcIixjKTt2YXIgbD1mO2lmKGIudXBkYXRlUXVldWU9bCliLmZsYWdzfD00fX07Q2o9ZnVuY3Rpb24oYSxiLGMsZCl7YyE9PWQmJihiLmZsYWdzfD00KX07XG5mdW5jdGlvbiBEaihhLGIpe2lmKCFJKXN3aXRjaChhLnRhaWxNb2RlKXtjYXNlIFwiaGlkZGVuXCI6Yj1hLnRhaWw7Zm9yKHZhciBjPW51bGw7bnVsbCE9PWI7KW51bGwhPT1iLmFsdGVybmF0ZSYmKGM9YiksYj1iLnNpYmxpbmc7bnVsbD09PWM/YS50YWlsPW51bGw6Yy5zaWJsaW5nPW51bGw7YnJlYWs7Y2FzZSBcImNvbGxhcHNlZFwiOmM9YS50YWlsO2Zvcih2YXIgZD1udWxsO251bGwhPT1jOyludWxsIT09Yy5hbHRlcm5hdGUmJihkPWMpLGM9Yy5zaWJsaW5nO251bGw9PT1kP2J8fG51bGw9PT1hLnRhaWw/YS50YWlsPW51bGw6YS50YWlsLnNpYmxpbmc9bnVsbDpkLnNpYmxpbmc9bnVsbH19XG5mdW5jdGlvbiBTKGEpe3ZhciBiPW51bGwhPT1hLmFsdGVybmF0ZSYmYS5hbHRlcm5hdGUuY2hpbGQ9PT1hLmNoaWxkLGM9MCxkPTA7aWYoYilmb3IodmFyIGU9YS5jaGlsZDtudWxsIT09ZTspY3w9ZS5sYW5lc3xlLmNoaWxkTGFuZXMsZHw9ZS5zdWJ0cmVlRmxhZ3MmMTQ2ODAwNjQsZHw9ZS5mbGFncyYxNDY4MDA2NCxlLnJldHVybj1hLGU9ZS5zaWJsaW5nO2Vsc2UgZm9yKGU9YS5jaGlsZDtudWxsIT09ZTspY3w9ZS5sYW5lc3xlLmNoaWxkTGFuZXMsZHw9ZS5zdWJ0cmVlRmxhZ3MsZHw9ZS5mbGFncyxlLnJldHVybj1hLGU9ZS5zaWJsaW5nO2Euc3VidHJlZUZsYWdzfD1kO2EuY2hpbGRMYW5lcz1jO3JldHVybiBifVxuZnVuY3Rpb24gRWooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzO3dnKGIpO3N3aXRjaChiLnRhZyl7Y2FzZSAyOmNhc2UgMTY6Y2FzZSAxNTpjYXNlIDA6Y2FzZSAxMTpjYXNlIDc6Y2FzZSA4OmNhc2UgMTI6Y2FzZSA5OmNhc2UgMTQ6cmV0dXJuIFMoYiksbnVsbDtjYXNlIDE6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksUyhiKSxudWxsO2Nhc2UgMzpkPWIuc3RhdGVOb2RlO3poKCk7RShXZik7RShIKTtFaCgpO2QucGVuZGluZ0NvbnRleHQmJihkLmNvbnRleHQ9ZC5wZW5kaW5nQ29udGV4dCxkLnBlbmRpbmdDb250ZXh0PW51bGwpO2lmKG51bGw9PT1hfHxudWxsPT09YS5jaGlsZClHZyhiKT9iLmZsYWdzfD00Om51bGw9PT1hfHxhLm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYwPT09KGIuZmxhZ3MmMjU2KXx8KGIuZmxhZ3N8PTEwMjQsbnVsbCE9PXpnJiYoRmooemcpLHpnPW51bGwpKTtBaihhLGIpO1MoYik7cmV0dXJuIG51bGw7Y2FzZSA1OkJoKGIpO3ZhciBlPXhoKHdoLmN1cnJlbnQpO1xuYz1iLnR5cGU7aWYobnVsbCE9PWEmJm51bGwhPWIuc3RhdGVOb2RlKUJqKGEsYixjLGQsZSksYS5yZWYhPT1iLnJlZiYmKGIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyKTtlbHNle2lmKCFkKXtpZihudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjYpKTtTKGIpO3JldHVybiBudWxsfWE9eGgodWguY3VycmVudCk7aWYoR2coYikpe2Q9Yi5zdGF0ZU5vZGU7Yz1iLnR5cGU7dmFyIGY9Yi5tZW1vaXplZFByb3BzO2RbT2ZdPWI7ZFtQZl09ZjthPTAhPT0oYi5tb2RlJjEpO3N3aXRjaChjKXtjYXNlIFwiZGlhbG9nXCI6RChcImNhbmNlbFwiLGQpO0QoXCJjbG9zZVwiLGQpO2JyZWFrO2Nhc2UgXCJpZnJhbWVcIjpjYXNlIFwib2JqZWN0XCI6Y2FzZSBcImVtYmVkXCI6RChcImxvYWRcIixkKTticmVhaztjYXNlIFwidmlkZW9cIjpjYXNlIFwiYXVkaW9cIjpmb3IoZT0wO2U8bGYubGVuZ3RoO2UrKylEKGxmW2VdLGQpO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpEKFwiZXJyb3JcIixkKTticmVhaztjYXNlIFwiaW1nXCI6Y2FzZSBcImltYWdlXCI6Y2FzZSBcImxpbmtcIjpEKFwiZXJyb3JcIixcbmQpO0QoXCJsb2FkXCIsZCk7YnJlYWs7Y2FzZSBcImRldGFpbHNcIjpEKFwidG9nZ2xlXCIsZCk7YnJlYWs7Y2FzZSBcImlucHV0XCI6WmEoZCxmKTtEKFwiaW52YWxpZFwiLGQpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpkLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhZi5tdWx0aXBsZX07RChcImludmFsaWRcIixkKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpoYihkLGYpLEQoXCJpbnZhbGlkXCIsZCl9dWIoYyxmKTtlPW51bGw7Zm9yKHZhciBnIGluIGYpaWYoZi5oYXNPd25Qcm9wZXJ0eShnKSl7dmFyIGg9ZltnXTtcImNoaWxkcmVuXCI9PT1nP1wic3RyaW5nXCI9PT10eXBlb2YgaD9kLnRleHRDb250ZW50IT09aCYmKCEwIT09Zi5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkFmKGQudGV4dENvbnRlbnQsaCxhKSxlPVtcImNoaWxkcmVuXCIsaF0pOlwibnVtYmVyXCI9PT10eXBlb2YgaCYmZC50ZXh0Q29udGVudCE9PVwiXCIraCYmKCEwIT09Zi5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkFmKGQudGV4dENvbnRlbnQsXG5oLGEpLGU9W1wiY2hpbGRyZW5cIixcIlwiK2hdKTplYS5oYXNPd25Qcm9wZXJ0eShnKSYmbnVsbCE9aCYmXCJvblNjcm9sbFwiPT09ZyYmRChcInNjcm9sbFwiLGQpfXN3aXRjaChjKXtjYXNlIFwiaW5wdXRcIjpWYShkKTtkYihkLGYsITApO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOlZhKGQpO2piKGQpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpjYXNlIFwib3B0aW9uXCI6YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5vbkNsaWNrJiYoZC5vbmNsaWNrPUJmKX1kPWU7Yi51cGRhdGVRdWV1ZT1kO251bGwhPT1kJiYoYi5mbGFnc3w9NCl9ZWxzZXtnPTk9PT1lLm5vZGVUeXBlP2U6ZS5vd25lckRvY3VtZW50O1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09YSYmKGE9a2IoYykpO1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09YT9cInNjcmlwdFwiPT09Yz8oYT1nLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksYS5pbm5lckhUTUw9XCI8c2NyaXB0PlxceDNjL3NjcmlwdD5cIixhPWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKSk6XG5cInN0cmluZ1wiPT09dHlwZW9mIGQuaXM/YT1nLmNyZWF0ZUVsZW1lbnQoYyx7aXM6ZC5pc30pOihhPWcuY3JlYXRlRWxlbWVudChjKSxcInNlbGVjdFwiPT09YyYmKGc9YSxkLm11bHRpcGxlP2cubXVsdGlwbGU9ITA6ZC5zaXplJiYoZy5zaXplPWQuc2l6ZSkpKTphPWcuY3JlYXRlRWxlbWVudE5TKGEsYyk7YVtPZl09YjthW1BmXT1kO3pqKGEsYiwhMSwhMSk7Yi5zdGF0ZU5vZGU9YTthOntnPXZiKGMsZCk7c3dpdGNoKGMpe2Nhc2UgXCJkaWFsb2dcIjpEKFwiY2FuY2VsXCIsYSk7RChcImNsb3NlXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpZnJhbWVcIjpjYXNlIFwib2JqZWN0XCI6Y2FzZSBcImVtYmVkXCI6RChcImxvYWRcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcInZpZGVvXCI6Y2FzZSBcImF1ZGlvXCI6Zm9yKGU9MDtlPGxmLmxlbmd0aDtlKyspRChsZltlXSxhKTtlPWQ7YnJlYWs7Y2FzZSBcInNvdXJjZVwiOkQoXCJlcnJvclwiLGEpO2U9ZDticmVhaztjYXNlIFwiaW1nXCI6Y2FzZSBcImltYWdlXCI6Y2FzZSBcImxpbmtcIjpEKFwiZXJyb3JcIixcbmEpO0QoXCJsb2FkXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RChcInRvZ2dsZVwiLGEpO2U9ZDticmVhaztjYXNlIFwiaW5wdXRcIjpaYShhLGQpO2U9WWEoYSxkKTtEKFwiaW52YWxpZFwiLGEpO2JyZWFrO2Nhc2UgXCJvcHRpb25cIjplPWQ7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmEuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFkLm11bHRpcGxlfTtlPUEoe30sZCx7dmFsdWU6dm9pZCAwfSk7RChcImludmFsaWRcIixhKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpoYihhLGQpO2U9Z2IoYSxkKTtEKFwiaW52YWxpZFwiLGEpO2JyZWFrO2RlZmF1bHQ6ZT1kfXViKGMsZSk7aD1lO2ZvcihmIGluIGgpaWYoaC5oYXNPd25Qcm9wZXJ0eShmKSl7dmFyIGs9aFtmXTtcInN0eWxlXCI9PT1mP3NiKGEsayk6XCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09Zj8oaz1rP2suX19odG1sOnZvaWQgMCxudWxsIT1rJiZuYihhLGspKTpcImNoaWxkcmVuXCI9PT1mP1wic3RyaW5nXCI9PT10eXBlb2Ygaz8oXCJ0ZXh0YXJlYVwiIT09XG5jfHxcIlwiIT09aykmJm9iKGEsayk6XCJudW1iZXJcIj09PXR5cGVvZiBrJiZvYihhLFwiXCIrayk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWYmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1mJiZcImF1dG9Gb2N1c1wiIT09ZiYmKGVhLmhhc093blByb3BlcnR5KGYpP251bGwhPWsmJlwib25TY3JvbGxcIj09PWYmJkQoXCJzY3JvbGxcIixhKTpudWxsIT1rJiZ0YShhLGYsayxnKSl9c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOlZhKGEpO2RiKGEsZCwhMSk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6VmEoYSk7amIoYSk7YnJlYWs7Y2FzZSBcIm9wdGlvblwiOm51bGwhPWQudmFsdWUmJmEuc2V0QXR0cmlidXRlKFwidmFsdWVcIixcIlwiK1NhKGQudmFsdWUpKTticmVhaztjYXNlIFwic2VsZWN0XCI6YS5tdWx0aXBsZT0hIWQubXVsdGlwbGU7Zj1kLnZhbHVlO251bGwhPWY/ZmIoYSwhIWQubXVsdGlwbGUsZiwhMSk6bnVsbCE9ZC5kZWZhdWx0VmFsdWUmJmZiKGEsISFkLm11bHRpcGxlLGQuZGVmYXVsdFZhbHVlLFxuITApO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiPT09dHlwZW9mIGUub25DbGljayYmKGEub25jbGljaz1CZil9c3dpdGNoKGMpe2Nhc2UgXCJidXR0b25cIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInRleHRhcmVhXCI6ZD0hIWQuYXV0b0ZvY3VzO2JyZWFrIGE7Y2FzZSBcImltZ1wiOmQ9ITA7YnJlYWsgYTtkZWZhdWx0OmQ9ITF9fWQmJihiLmZsYWdzfD00KX1udWxsIT09Yi5yZWYmJihiLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mil9UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDY6aWYoYSYmbnVsbCE9Yi5zdGF0ZU5vZGUpQ2ooYSxiLGEubWVtb2l6ZWRQcm9wcyxkKTtlbHNle2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZCYmbnVsbD09PWIuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTY2KSk7Yz14aCh3aC5jdXJyZW50KTt4aCh1aC5jdXJyZW50KTtpZihHZyhiKSl7ZD1iLnN0YXRlTm9kZTtjPWIubWVtb2l6ZWRQcm9wcztkW09mXT1iO2lmKGY9ZC5ub2RlVmFsdWUhPT1jKWlmKGE9XG54ZyxudWxsIT09YSlzd2l0Y2goYS50YWcpe2Nhc2UgMzpBZihkLm5vZGVWYWx1ZSxjLDAhPT0oYS5tb2RlJjEpKTticmVhaztjYXNlIDU6ITAhPT1hLm1lbW9pemVkUHJvcHMuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLm5vZGVWYWx1ZSxjLDAhPT0oYS5tb2RlJjEpKX1mJiYoYi5mbGFnc3w9NCl9ZWxzZSBkPSg5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoZCksZFtPZl09YixiLnN0YXRlTm9kZT1kfVMoYik7cmV0dXJuIG51bGw7Y2FzZSAxMzpFKEwpO2Q9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT1hfHxudWxsIT09YS5tZW1vaXplZFN0YXRlJiZudWxsIT09YS5tZW1vaXplZFN0YXRlLmRlaHlkcmF0ZWQpe2lmKEkmJm51bGwhPT15ZyYmMCE9PShiLm1vZGUmMSkmJjA9PT0oYi5mbGFncyYxMjgpKUhnKCksSWcoKSxiLmZsYWdzfD05ODU2MCxmPSExO2Vsc2UgaWYoZj1HZyhiKSxudWxsIT09ZCYmbnVsbCE9PWQuZGVoeWRyYXRlZCl7aWYobnVsbD09PVxuYSl7aWYoIWYpdGhyb3cgRXJyb3IocCgzMTgpKTtmPWIubWVtb2l6ZWRTdGF0ZTtmPW51bGwhPT1mP2YuZGVoeWRyYXRlZDpudWxsO2lmKCFmKXRocm93IEVycm9yKHAoMzE3KSk7ZltPZl09Yn1lbHNlIElnKCksMD09PShiLmZsYWdzJjEyOCkmJihiLm1lbW9pemVkU3RhdGU9bnVsbCksYi5mbGFnc3w9NDtTKGIpO2Y9ITF9ZWxzZSBudWxsIT09emcmJihGaih6Zyksemc9bnVsbCksZj0hMDtpZighZilyZXR1cm4gYi5mbGFncyY2NTUzNj9iOm51bGx9aWYoMCE9PShiLmZsYWdzJjEyOCkpcmV0dXJuIGIubGFuZXM9YyxiO2Q9bnVsbCE9PWQ7ZCE9PShudWxsIT09YSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSkmJmQmJihiLmNoaWxkLmZsYWdzfD04MTkyLDAhPT0oYi5tb2RlJjEpJiYobnVsbD09PWF8fDAhPT0oTC5jdXJyZW50JjEpPzA9PT1UJiYoVD0zKTp0aigpKSk7bnVsbCE9PWIudXBkYXRlUXVldWUmJihiLmZsYWdzfD00KTtTKGIpO3JldHVybiBudWxsO2Nhc2UgNDpyZXR1cm4gemgoKSxcbkFqKGEsYiksbnVsbD09PWEmJnNmKGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLFMoYiksbnVsbDtjYXNlIDEwOnJldHVybiBhaChiLnR5cGUuX2NvbnRleHQpLFMoYiksbnVsbDtjYXNlIDE3OnJldHVybiBaZihiLnR5cGUpJiYkZigpLFMoYiksbnVsbDtjYXNlIDE5OkUoTCk7Zj1iLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PWYpcmV0dXJuIFMoYiksbnVsbDtkPTAhPT0oYi5mbGFncyYxMjgpO2c9Zi5yZW5kZXJpbmc7aWYobnVsbD09PWcpaWYoZClEaihmLCExKTtlbHNle2lmKDAhPT1UfHxudWxsIT09YSYmMCE9PShhLmZsYWdzJjEyOCkpZm9yKGE9Yi5jaGlsZDtudWxsIT09YTspe2c9Q2goYSk7aWYobnVsbCE9PWcpe2IuZmxhZ3N8PTEyODtEaihmLCExKTtkPWcudXBkYXRlUXVldWU7bnVsbCE9PWQmJihiLnVwZGF0ZVF1ZXVlPWQsYi5mbGFnc3w9NCk7Yi5zdWJ0cmVlRmxhZ3M9MDtkPWM7Zm9yKGM9Yi5jaGlsZDtudWxsIT09YzspZj1jLGE9ZCxmLmZsYWdzJj0xNDY4MDA2Nixcbmc9Zi5hbHRlcm5hdGUsbnVsbD09PWc/KGYuY2hpbGRMYW5lcz0wLGYubGFuZXM9YSxmLmNoaWxkPW51bGwsZi5zdWJ0cmVlRmxhZ3M9MCxmLm1lbW9pemVkUHJvcHM9bnVsbCxmLm1lbW9pemVkU3RhdGU9bnVsbCxmLnVwZGF0ZVF1ZXVlPW51bGwsZi5kZXBlbmRlbmNpZXM9bnVsbCxmLnN0YXRlTm9kZT1udWxsKTooZi5jaGlsZExhbmVzPWcuY2hpbGRMYW5lcyxmLmxhbmVzPWcubGFuZXMsZi5jaGlsZD1nLmNoaWxkLGYuc3VidHJlZUZsYWdzPTAsZi5kZWxldGlvbnM9bnVsbCxmLm1lbW9pemVkUHJvcHM9Zy5tZW1vaXplZFByb3BzLGYubWVtb2l6ZWRTdGF0ZT1nLm1lbW9pemVkU3RhdGUsZi51cGRhdGVRdWV1ZT1nLnVwZGF0ZVF1ZXVlLGYudHlwZT1nLnR5cGUsYT1nLmRlcGVuZGVuY2llcyxmLmRlcGVuZGVuY2llcz1udWxsPT09YT9udWxsOntsYW5lczphLmxhbmVzLGZpcnN0Q29udGV4dDphLmZpcnN0Q29udGV4dH0pLGM9Yy5zaWJsaW5nO0coTCxMLmN1cnJlbnQmMXwyKTtyZXR1cm4gYi5jaGlsZH1hPVxuYS5zaWJsaW5nfW51bGwhPT1mLnRhaWwmJkIoKT5HaiYmKGIuZmxhZ3N8PTEyOCxkPSEwLERqKGYsITEpLGIubGFuZXM9NDE5NDMwNCl9ZWxzZXtpZighZClpZihhPUNoKGcpLG51bGwhPT1hKXtpZihiLmZsYWdzfD0xMjgsZD0hMCxjPWEudXBkYXRlUXVldWUsbnVsbCE9PWMmJihiLnVwZGF0ZVF1ZXVlPWMsYi5mbGFnc3w9NCksRGooZiwhMCksbnVsbD09PWYudGFpbCYmXCJoaWRkZW5cIj09PWYudGFpbE1vZGUmJiFnLmFsdGVybmF0ZSYmIUkpcmV0dXJuIFMoYiksbnVsbH1lbHNlIDIqQigpLWYucmVuZGVyaW5nU3RhcnRUaW1lPkdqJiYxMDczNzQxODI0IT09YyYmKGIuZmxhZ3N8PTEyOCxkPSEwLERqKGYsITEpLGIubGFuZXM9NDE5NDMwNCk7Zi5pc0JhY2t3YXJkcz8oZy5zaWJsaW5nPWIuY2hpbGQsYi5jaGlsZD1nKTooYz1mLmxhc3QsbnVsbCE9PWM/Yy5zaWJsaW5nPWc6Yi5jaGlsZD1nLGYubGFzdD1nKX1pZihudWxsIT09Zi50YWlsKXJldHVybiBiPWYudGFpbCxmLnJlbmRlcmluZz1cbmIsZi50YWlsPWIuc2libGluZyxmLnJlbmRlcmluZ1N0YXJ0VGltZT1CKCksYi5zaWJsaW5nPW51bGwsYz1MLmN1cnJlbnQsRyhMLGQ/YyYxfDI6YyYxKSxiO1MoYik7cmV0dXJuIG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBIaigpLGQ9bnVsbCE9PWIubWVtb2l6ZWRTdGF0ZSxudWxsIT09YSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSE9PWQmJihiLmZsYWdzfD04MTkyKSxkJiYwIT09KGIubW9kZSYxKT8wIT09KGZqJjEwNzM3NDE4MjQpJiYoUyhiKSxiLnN1YnRyZWVGbGFncyY2JiYoYi5mbGFnc3w9ODE5MikpOlMoYiksbnVsbDtjYXNlIDI0OnJldHVybiBudWxsO2Nhc2UgMjU6cmV0dXJuIG51bGx9dGhyb3cgRXJyb3IocCgxNTYsYi50YWcpKTt9XG5mdW5jdGlvbiBJaihhLGIpe3dnKGIpO3N3aXRjaChiLnRhZyl7Y2FzZSAxOnJldHVybiBaZihiLnR5cGUpJiYkZigpLGE9Yi5mbGFncyxhJjY1NTM2PyhiLmZsYWdzPWEmLTY1NTM3fDEyOCxiKTpudWxsO2Nhc2UgMzpyZXR1cm4gemgoKSxFKFdmKSxFKEgpLEVoKCksYT1iLmZsYWdzLDAhPT0oYSY2NTUzNikmJjA9PT0oYSYxMjgpPyhiLmZsYWdzPWEmLTY1NTM3fDEyOCxiKTpudWxsO2Nhc2UgNTpyZXR1cm4gQmgoYiksbnVsbDtjYXNlIDEzOkUoTCk7YT1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJm51bGwhPT1hLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT1iLmFsdGVybmF0ZSl0aHJvdyBFcnJvcihwKDM0MCkpO0lnKCl9YT1iLmZsYWdzO3JldHVybiBhJjY1NTM2PyhiLmZsYWdzPWEmLTY1NTM3fDEyOCxiKTpudWxsO2Nhc2UgMTk6cmV0dXJuIEUoTCksbnVsbDtjYXNlIDQ6cmV0dXJuIHpoKCksbnVsbDtjYXNlIDEwOnJldHVybiBhaChiLnR5cGUuX2NvbnRleHQpLG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBIaigpLFxubnVsbDtjYXNlIDI0OnJldHVybiBudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXZhciBKaj0hMSxVPSExLEtqPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBXZWFrU2V0P1dlYWtTZXQ6U2V0LFY9bnVsbDtmdW5jdGlvbiBMaihhLGIpe3ZhciBjPWEucmVmO2lmKG51bGwhPT1jKWlmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBjKXRyeXtjKG51bGwpfWNhdGNoKGQpe1coYSxiLGQpfWVsc2UgYy5jdXJyZW50PW51bGx9ZnVuY3Rpb24gTWooYSxiLGMpe3RyeXtjKCl9Y2F0Y2goZCl7VyhhLGIsZCl9fXZhciBOaj0hMTtcbmZ1bmN0aW9uIE9qKGEsYil7Q2Y9ZGQ7YT1NZSgpO2lmKE5lKGEpKXtpZihcInNlbGVjdGlvblN0YXJ0XCJpbiBhKXZhciBjPXtzdGFydDphLnNlbGVjdGlvblN0YXJ0LGVuZDphLnNlbGVjdGlvbkVuZH07ZWxzZSBhOntjPShjPWEub3duZXJEb2N1bWVudCkmJmMuZGVmYXVsdFZpZXd8fHdpbmRvdzt2YXIgZD1jLmdldFNlbGVjdGlvbiYmYy5nZXRTZWxlY3Rpb24oKTtpZihkJiYwIT09ZC5yYW5nZUNvdW50KXtjPWQuYW5jaG9yTm9kZTt2YXIgZT1kLmFuY2hvck9mZnNldCxmPWQuZm9jdXNOb2RlO2Q9ZC5mb2N1c09mZnNldDt0cnl7Yy5ub2RlVHlwZSxmLm5vZGVUeXBlfWNhdGNoKEYpe2M9bnVsbDticmVhayBhfXZhciBnPTAsaD0tMSxrPS0xLGw9MCxtPTAscT1hLHI9bnVsbDtiOmZvcig7Oyl7Zm9yKHZhciB5Ozspe3EhPT1jfHwwIT09ZSYmMyE9PXEubm9kZVR5cGV8fChoPWcrZSk7cSE9PWZ8fDAhPT1kJiYzIT09cS5ub2RlVHlwZXx8KGs9ZytkKTszPT09cS5ub2RlVHlwZSYmKGcrPVxucS5ub2RlVmFsdWUubGVuZ3RoKTtpZihudWxsPT09KHk9cS5maXJzdENoaWxkKSlicmVhaztyPXE7cT15fWZvcig7Oyl7aWYocT09PWEpYnJlYWsgYjtyPT09YyYmKytsPT09ZSYmKGg9Zyk7cj09PWYmJisrbT09PWQmJihrPWcpO2lmKG51bGwhPT0oeT1xLm5leHRTaWJsaW5nKSlicmVhaztxPXI7cj1xLnBhcmVudE5vZGV9cT15fWM9LTE9PT1ofHwtMT09PWs/bnVsbDp7c3RhcnQ6aCxlbmQ6a319ZWxzZSBjPW51bGx9Yz1jfHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBjPW51bGw7RGY9e2ZvY3VzZWRFbGVtOmEsc2VsZWN0aW9uUmFuZ2U6Y307ZGQ9ITE7Zm9yKFY9YjtudWxsIT09VjspaWYoYj1WLGE9Yi5jaGlsZCwwIT09KGIuc3VidHJlZUZsYWdzJjEwMjgpJiZudWxsIT09YSlhLnJldHVybj1iLFY9YTtlbHNlIGZvcig7bnVsbCE9PVY7KXtiPVY7dHJ5e3ZhciBuPWIuYWx0ZXJuYXRlO2lmKDAhPT0oYi5mbGFncyYxMDI0KSlzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6YnJlYWs7XG5jYXNlIDE6aWYobnVsbCE9PW4pe3ZhciB0PW4ubWVtb2l6ZWRQcm9wcyxKPW4ubWVtb2l6ZWRTdGF0ZSx4PWIuc3RhdGVOb2RlLHc9eC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShiLmVsZW1lbnRUeXBlPT09Yi50eXBlP3Q6Q2koYi50eXBlLHQpLEopO3guX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9d31icmVhaztjYXNlIDM6dmFyIHU9Yi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzsxPT09dS5ub2RlVHlwZT91LnRleHRDb250ZW50PVwiXCI6OT09PXUubm9kZVR5cGUmJnUuZG9jdW1lbnRFbGVtZW50JiZ1LnJlbW92ZUNoaWxkKHUuZG9jdW1lbnRFbGVtZW50KTticmVhaztjYXNlIDU6Y2FzZSA2OmNhc2UgNDpjYXNlIDE3OmJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjMpKTt9fWNhdGNoKEYpe1coYixiLnJldHVybixGKX1hPWIuc2libGluZztpZihudWxsIT09YSl7YS5yZXR1cm49Yi5yZXR1cm47Vj1hO2JyZWFrfVY9Yi5yZXR1cm59bj1OajtOaj0hMTtyZXR1cm4gbn1cbmZ1bmN0aW9uIFBqKGEsYixjKXt2YXIgZD1iLnVwZGF0ZVF1ZXVlO2Q9bnVsbCE9PWQ/ZC5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWQpe3ZhciBlPWQ9ZC5uZXh0O2Rve2lmKChlLnRhZyZhKT09PWEpe3ZhciBmPWUuZGVzdHJveTtlLmRlc3Ryb3k9dm9pZCAwO3ZvaWQgMCE9PWYmJk1qKGIsYyxmKX1lPWUubmV4dH13aGlsZShlIT09ZCl9fWZ1bmN0aW9uIFFqKGEsYil7Yj1iLnVwZGF0ZVF1ZXVlO2I9bnVsbCE9PWI/Yi5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWIpe3ZhciBjPWI9Yi5uZXh0O2Rve2lmKChjLnRhZyZhKT09PWEpe3ZhciBkPWMuY3JlYXRlO2MuZGVzdHJveT1kKCl9Yz1jLm5leHR9d2hpbGUoYyE9PWIpfX1mdW5jdGlvbiBSaihhKXt2YXIgYj1hLnJlZjtpZihudWxsIT09Yil7dmFyIGM9YS5zdGF0ZU5vZGU7c3dpdGNoKGEudGFnKXtjYXNlIDU6YT1jO2JyZWFrO2RlZmF1bHQ6YT1jfVwiZnVuY3Rpb25cIj09PXR5cGVvZiBiP2IoYSk6Yi5jdXJyZW50PWF9fVxuZnVuY3Rpb24gU2ooYSl7dmFyIGI9YS5hbHRlcm5hdGU7bnVsbCE9PWImJihhLmFsdGVybmF0ZT1udWxsLFNqKGIpKTthLmNoaWxkPW51bGw7YS5kZWxldGlvbnM9bnVsbDthLnNpYmxpbmc9bnVsbDs1PT09YS50YWcmJihiPWEuc3RhdGVOb2RlLG51bGwhPT1iJiYoZGVsZXRlIGJbT2ZdLGRlbGV0ZSBiW1BmXSxkZWxldGUgYltvZl0sZGVsZXRlIGJbUWZdLGRlbGV0ZSBiW1JmXSkpO2Euc3RhdGVOb2RlPW51bGw7YS5yZXR1cm49bnVsbDthLmRlcGVuZGVuY2llcz1udWxsO2EubWVtb2l6ZWRQcm9wcz1udWxsO2EubWVtb2l6ZWRTdGF0ZT1udWxsO2EucGVuZGluZ1Byb3BzPW51bGw7YS5zdGF0ZU5vZGU9bnVsbDthLnVwZGF0ZVF1ZXVlPW51bGx9ZnVuY3Rpb24gVGooYSl7cmV0dXJuIDU9PT1hLnRhZ3x8Mz09PWEudGFnfHw0PT09YS50YWd9XG5mdW5jdGlvbiBVaihhKXthOmZvcig7Oyl7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxUaihhLnJldHVybikpcmV0dXJuIG51bGw7YT1hLnJldHVybn1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuO2ZvcihhPWEuc2libGluZzs1IT09YS50YWcmJjYhPT1hLnRhZyYmMTghPT1hLnRhZzspe2lmKGEuZmxhZ3MmMiljb250aW51ZSBhO2lmKG51bGw9PT1hLmNoaWxkfHw0PT09YS50YWcpY29udGludWUgYTtlbHNlIGEuY2hpbGQucmV0dXJuPWEsYT1hLmNoaWxkfWlmKCEoYS5mbGFncyYyKSlyZXR1cm4gYS5zdGF0ZU5vZGV9fVxuZnVuY3Rpb24gVmooYSxiLGMpe3ZhciBkPWEudGFnO2lmKDU9PT1kfHw2PT09ZClhPWEuc3RhdGVOb2RlLGI/OD09PWMubm9kZVR5cGU/Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGIpOmMuaW5zZXJ0QmVmb3JlKGEsYik6KDg9PT1jLm5vZGVUeXBlPyhiPWMucGFyZW50Tm9kZSxiLmluc2VydEJlZm9yZShhLGMpKTooYj1jLGIuYXBwZW5kQ2hpbGQoYSkpLGM9Yy5fcmVhY3RSb290Q29udGFpbmVyLG51bGwhPT1jJiZ2b2lkIDAhPT1jfHxudWxsIT09Yi5vbmNsaWNrfHwoYi5vbmNsaWNrPUJmKSk7ZWxzZSBpZig0IT09ZCYmKGE9YS5jaGlsZCxudWxsIT09YSkpZm9yKFZqKGEsYixjKSxhPWEuc2libGluZztudWxsIT09YTspVmooYSxiLGMpLGE9YS5zaWJsaW5nfVxuZnVuY3Rpb24gV2ooYSxiLGMpe3ZhciBkPWEudGFnO2lmKDU9PT1kfHw2PT09ZClhPWEuc3RhdGVOb2RlLGI/Yy5pbnNlcnRCZWZvcmUoYSxiKTpjLmFwcGVuZENoaWxkKGEpO2Vsc2UgaWYoNCE9PWQmJihhPWEuY2hpbGQsbnVsbCE9PWEpKWZvcihXaihhLGIsYyksYT1hLnNpYmxpbmc7bnVsbCE9PWE7KVdqKGEsYixjKSxhPWEuc2libGluZ312YXIgWD1udWxsLFhqPSExO2Z1bmN0aW9uIFlqKGEsYixjKXtmb3IoYz1jLmNoaWxkO251bGwhPT1jOylaaihhLGIsYyksYz1jLnNpYmxpbmd9XG5mdW5jdGlvbiBaaihhLGIsYyl7aWYobGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBsYy5vbkNvbW1pdEZpYmVyVW5tb3VudCl0cnl7bGMub25Db21taXRGaWJlclVubW91bnQoa2MsYyl9Y2F0Y2goaCl7fXN3aXRjaChjLnRhZyl7Y2FzZSA1OlV8fExqKGMsYik7Y2FzZSA2OnZhciBkPVgsZT1YajtYPW51bGw7WWooYSxiLGMpO1g9ZDtYaj1lO251bGwhPT1YJiYoWGo/KGE9WCxjPWMuc3RhdGVOb2RlLDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjKTphLnJlbW92ZUNoaWxkKGMpKTpYLnJlbW92ZUNoaWxkKGMuc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSAxODpudWxsIT09WCYmKFhqPyhhPVgsYz1jLnN0YXRlTm9kZSw4PT09YS5ub2RlVHlwZT9LZihhLnBhcmVudE5vZGUsYyk6MT09PWEubm9kZVR5cGUmJktmKGEsYyksYmQoYSkpOktmKFgsYy5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDQ6ZD1YO2U9WGo7WD1jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1hqPSEwO1xuWWooYSxiLGMpO1g9ZDtYaj1lO2JyZWFrO2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTppZighVSYmKGQ9Yy51cGRhdGVRdWV1ZSxudWxsIT09ZCYmKGQ9ZC5sYXN0RWZmZWN0LG51bGwhPT1kKSkpe2U9ZD1kLm5leHQ7ZG97dmFyIGY9ZSxnPWYuZGVzdHJveTtmPWYudGFnO3ZvaWQgMCE9PWcmJigwIT09KGYmMik/TWooYyxiLGcpOjAhPT0oZiY0KSYmTWooYyxiLGcpKTtlPWUubmV4dH13aGlsZShlIT09ZCl9WWooYSxiLGMpO2JyZWFrO2Nhc2UgMTppZighVSYmKExqKGMsYiksZD1jLnN0YXRlTm9kZSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnRXaWxsVW5tb3VudCkpdHJ5e2QucHJvcHM9Yy5tZW1vaXplZFByb3BzLGQuc3RhdGU9Yy5tZW1vaXplZFN0YXRlLGQuY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChoKXtXKGMsYixoKX1ZaihhLGIsYyk7YnJlYWs7Y2FzZSAyMTpZaihhLGIsYyk7YnJlYWs7Y2FzZSAyMjpjLm1vZGUmMT8oVT0oZD1VKXx8bnVsbCE9PVxuYy5tZW1vaXplZFN0YXRlLFlqKGEsYixjKSxVPWQpOllqKGEsYixjKTticmVhaztkZWZhdWx0OllqKGEsYixjKX19ZnVuY3Rpb24gYWsoYSl7dmFyIGI9YS51cGRhdGVRdWV1ZTtpZihudWxsIT09Yil7YS51cGRhdGVRdWV1ZT1udWxsO3ZhciBjPWEuc3RhdGVOb2RlO251bGw9PT1jJiYoYz1hLnN0YXRlTm9kZT1uZXcgS2opO2IuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZD1iay5iaW5kKG51bGwsYSxiKTtjLmhhcyhiKXx8KGMuYWRkKGIpLGIudGhlbihkLGQpKX0pfX1cbmZ1bmN0aW9uIGNrKGEsYil7dmFyIGM9Yi5kZWxldGlvbnM7aWYobnVsbCE9PWMpZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF07dHJ5e3ZhciBmPWEsZz1iLGg9ZzthOmZvcig7bnVsbCE9PWg7KXtzd2l0Y2goaC50YWcpe2Nhc2UgNTpYPWguc3RhdGVOb2RlO1hqPSExO2JyZWFrIGE7Y2FzZSAzOlg9aC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztYaj0hMDticmVhayBhO2Nhc2UgNDpYPWguc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WGo9ITA7YnJlYWsgYX1oPWgucmV0dXJufWlmKG51bGw9PT1YKXRocm93IEVycm9yKHAoMTYwKSk7WmooZixnLGUpO1g9bnVsbDtYaj0hMTt2YXIgaz1lLmFsdGVybmF0ZTtudWxsIT09ayYmKGsucmV0dXJuPW51bGwpO2UucmV0dXJuPW51bGx9Y2F0Y2gobCl7VyhlLGIsbCl9fWlmKGIuc3VidHJlZUZsYWdzJjEyODU0KWZvcihiPWIuY2hpbGQ7bnVsbCE9PWI7KWRrKGIsYSksYj1iLnNpYmxpbmd9XG5mdW5jdGlvbiBkayhhLGIpe3ZhciBjPWEuYWx0ZXJuYXRlLGQ9YS5mbGFncztzd2l0Y2goYS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpjayhiLGEpO2VrKGEpO2lmKGQmNCl7dHJ5e1BqKDMsYSxhLnJldHVybiksUWooMyxhKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9dHJ5e1BqKDUsYSxhLnJldHVybil9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1icmVhaztjYXNlIDE6Y2soYixhKTtlayhhKTtkJjUxMiYmbnVsbCE9PWMmJkxqKGMsYy5yZXR1cm4pO2JyZWFrO2Nhc2UgNTpjayhiLGEpO2VrKGEpO2QmNTEyJiZudWxsIT09YyYmTGooYyxjLnJldHVybik7aWYoYS5mbGFncyYzMil7dmFyIGU9YS5zdGF0ZU5vZGU7dHJ5e29iKGUsXCJcIil9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1pZihkJjQmJihlPWEuc3RhdGVOb2RlLG51bGwhPWUpKXt2YXIgZj1hLm1lbW9pemVkUHJvcHMsZz1udWxsIT09Yz9jLm1lbW9pemVkUHJvcHM6ZixoPWEudHlwZSxrPWEudXBkYXRlUXVldWU7XG5hLnVwZGF0ZVF1ZXVlPW51bGw7aWYobnVsbCE9PWspdHJ5e1wiaW5wdXRcIj09PWgmJlwicmFkaW9cIj09PWYudHlwZSYmbnVsbCE9Zi5uYW1lJiZhYihlLGYpO3ZiKGgsZyk7dmFyIGw9dmIoaCxmKTtmb3IoZz0wO2c8ay5sZW5ndGg7Zys9Mil7dmFyIG09a1tnXSxxPWtbZysxXTtcInN0eWxlXCI9PT1tP3NiKGUscSk6XCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09bT9uYihlLHEpOlwiY2hpbGRyZW5cIj09PW0/b2IoZSxxKTp0YShlLG0scSxsKX1zd2l0Y2goaCl7Y2FzZSBcImlucHV0XCI6YmIoZSxmKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjppYihlLGYpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjp2YXIgcj1lLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPSEhZi5tdWx0aXBsZTt2YXIgeT1mLnZhbHVlO251bGwhPXk/ZmIoZSwhIWYubXVsdGlwbGUseSwhMSk6ciE9PSEhZi5tdWx0aXBsZSYmKG51bGwhPWYuZGVmYXVsdFZhbHVlP2ZiKGUsISFmLm11bHRpcGxlLFxuZi5kZWZhdWx0VmFsdWUsITApOmZiKGUsISFmLm11bHRpcGxlLGYubXVsdGlwbGU/W106XCJcIiwhMSkpfWVbUGZdPWZ9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1icmVhaztjYXNlIDY6Y2soYixhKTtlayhhKTtpZihkJjQpe2lmKG51bGw9PT1hLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2MikpO2U9YS5zdGF0ZU5vZGU7Zj1hLm1lbW9pemVkUHJvcHM7dHJ5e2Uubm9kZVZhbHVlPWZ9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1icmVhaztjYXNlIDM6Y2soYixhKTtlayhhKTtpZihkJjQmJm51bGwhPT1jJiZjLm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXRyeXtiZChiLmNvbnRhaW5lckluZm8pfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX1icmVhaztjYXNlIDQ6Y2soYixhKTtlayhhKTticmVhaztjYXNlIDEzOmNrKGIsYSk7ZWsoYSk7ZT1hLmNoaWxkO2UuZmxhZ3MmODE5MiYmKGY9bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSxlLnN0YXRlTm9kZS5pc0hpZGRlbj1mLCFmfHxcbm51bGwhPT1lLmFsdGVybmF0ZSYmbnVsbCE9PWUuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGV8fChmaz1CKCkpKTtkJjQmJmFrKGEpO2JyZWFrO2Nhc2UgMjI6bT1udWxsIT09YyYmbnVsbCE9PWMubWVtb2l6ZWRTdGF0ZTthLm1vZGUmMT8oVT0obD1VKXx8bSxjayhiLGEpLFU9bCk6Y2soYixhKTtlayhhKTtpZihkJjgxOTIpe2w9bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZTtpZigoYS5zdGF0ZU5vZGUuaXNIaWRkZW49bCkmJiFtJiYwIT09KGEubW9kZSYxKSlmb3IoVj1hLG09YS5jaGlsZDtudWxsIT09bTspe2ZvcihxPVY9bTtudWxsIT09Vjspe3I9Vjt5PXIuY2hpbGQ7c3dpdGNoKHIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6UGooNCxyLHIucmV0dXJuKTticmVhaztjYXNlIDE6TGoocixyLnJldHVybik7dmFyIG49ci5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIG4uY29tcG9uZW50V2lsbFVubW91bnQpe2Q9cjtjPXIucmV0dXJuO3RyeXtiPWQsbi5wcm9wcz1cbmIubWVtb2l6ZWRQcm9wcyxuLnN0YXRlPWIubWVtb2l6ZWRTdGF0ZSxuLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2godCl7VyhkLGMsdCl9fWJyZWFrO2Nhc2UgNTpMaihyLHIucmV0dXJuKTticmVhaztjYXNlIDIyOmlmKG51bGwhPT1yLm1lbW9pemVkU3RhdGUpe2drKHEpO2NvbnRpbnVlfX1udWxsIT09eT8oeS5yZXR1cm49cixWPXkpOmdrKHEpfW09bS5zaWJsaW5nfWE6Zm9yKG09bnVsbCxxPWE7Oyl7aWYoNT09PXEudGFnKXtpZihudWxsPT09bSl7bT1xO3RyeXtlPXEuc3RhdGVOb2RlLGw/KGY9ZS5zdHlsZSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5zZXRQcm9wZXJ0eT9mLnNldFByb3BlcnR5KFwiZGlzcGxheVwiLFwibm9uZVwiLFwiaW1wb3J0YW50XCIpOmYuZGlzcGxheT1cIm5vbmVcIik6KGg9cS5zdGF0ZU5vZGUsaz1xLm1lbW9pemVkUHJvcHMuc3R5bGUsZz12b2lkIDAhPT1rJiZudWxsIT09ayYmay5oYXNPd25Qcm9wZXJ0eShcImRpc3BsYXlcIik/ay5kaXNwbGF5Om51bGwsaC5zdHlsZS5kaXNwbGF5PVxucmIoXCJkaXNwbGF5XCIsZykpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19fWVsc2UgaWYoNj09PXEudGFnKXtpZihudWxsPT09bSl0cnl7cS5zdGF0ZU5vZGUubm9kZVZhbHVlPWw/XCJcIjpxLm1lbW9pemVkUHJvcHN9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1lbHNlIGlmKCgyMiE9PXEudGFnJiYyMyE9PXEudGFnfHxudWxsPT09cS5tZW1vaXplZFN0YXRlfHxxPT09YSkmJm51bGwhPT1xLmNoaWxkKXtxLmNoaWxkLnJldHVybj1xO3E9cS5jaGlsZDtjb250aW51ZX1pZihxPT09YSlicmVhayBhO2Zvcig7bnVsbD09PXEuc2libGluZzspe2lmKG51bGw9PT1xLnJldHVybnx8cS5yZXR1cm49PT1hKWJyZWFrIGE7bT09PXEmJihtPW51bGwpO3E9cS5yZXR1cm59bT09PXEmJihtPW51bGwpO3Euc2libGluZy5yZXR1cm49cS5yZXR1cm47cT1xLnNpYmxpbmd9fWJyZWFrO2Nhc2UgMTk6Y2soYixhKTtlayhhKTtkJjQmJmFrKGEpO2JyZWFrO2Nhc2UgMjE6YnJlYWs7ZGVmYXVsdDpjayhiLFxuYSksZWsoYSl9fWZ1bmN0aW9uIGVrKGEpe3ZhciBiPWEuZmxhZ3M7aWYoYiYyKXt0cnl7YTp7Zm9yKHZhciBjPWEucmV0dXJuO251bGwhPT1jOyl7aWYoVGooYykpe3ZhciBkPWM7YnJlYWsgYX1jPWMucmV0dXJufXRocm93IEVycm9yKHAoMTYwKSk7fXN3aXRjaChkLnRhZyl7Y2FzZSA1OnZhciBlPWQuc3RhdGVOb2RlO2QuZmxhZ3MmMzImJihvYihlLFwiXCIpLGQuZmxhZ3MmPS0zMyk7dmFyIGY9VWooYSk7V2ooYSxmLGUpO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dmFyIGc9ZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxoPVVqKGEpO1ZqKGEsaCxnKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMTYxKSk7fX1jYXRjaChrKXtXKGEsYS5yZXR1cm4sayl9YS5mbGFncyY9LTN9YiY0MDk2JiYoYS5mbGFncyY9LTQwOTcpfWZ1bmN0aW9uIGhrKGEsYixjKXtWPWE7aWsoYSxiLGMpfVxuZnVuY3Rpb24gaWsoYSxiLGMpe2Zvcih2YXIgZD0wIT09KGEubW9kZSYxKTtudWxsIT09Vjspe3ZhciBlPVYsZj1lLmNoaWxkO2lmKDIyPT09ZS50YWcmJmQpe3ZhciBnPW51bGwhPT1lLm1lbW9pemVkU3RhdGV8fEpqO2lmKCFnKXt2YXIgaD1lLmFsdGVybmF0ZSxrPW51bGwhPT1oJiZudWxsIT09aC5tZW1vaXplZFN0YXRlfHxVO2g9Smo7dmFyIGw9VTtKaj1nO2lmKChVPWspJiYhbClmb3IoVj1lO251bGwhPT1WOylnPVYsaz1nLmNoaWxkLDIyPT09Zy50YWcmJm51bGwhPT1nLm1lbW9pemVkU3RhdGU/amsoZSk6bnVsbCE9PWs/KGsucmV0dXJuPWcsVj1rKTpqayhlKTtmb3IoO251bGwhPT1mOylWPWYsaWsoZixiLGMpLGY9Zi5zaWJsaW5nO1Y9ZTtKaj1oO1U9bH1rayhhLGIsYyl9ZWxzZSAwIT09KGUuc3VidHJlZUZsYWdzJjg3NzIpJiZudWxsIT09Zj8oZi5yZXR1cm49ZSxWPWYpOmtrKGEsYixjKX19XG5mdW5jdGlvbiBrayhhKXtmb3IoO251bGwhPT1WOyl7dmFyIGI9VjtpZigwIT09KGIuZmxhZ3MmODc3Mikpe3ZhciBjPWIuYWx0ZXJuYXRlO3RyeXtpZigwIT09KGIuZmxhZ3MmODc3Mikpc3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlV8fFFqKDUsYik7YnJlYWs7Y2FzZSAxOnZhciBkPWIuc3RhdGVOb2RlO2lmKGIuZmxhZ3MmNCYmIVUpaWYobnVsbD09PWMpZC5jb21wb25lbnREaWRNb3VudCgpO2Vsc2V7dmFyIGU9Yi5lbGVtZW50VHlwZT09PWIudHlwZT9jLm1lbW9pemVkUHJvcHM6Q2koYi50eXBlLGMubWVtb2l6ZWRQcm9wcyk7ZC5jb21wb25lbnREaWRVcGRhdGUoZSxjLm1lbW9pemVkU3RhdGUsZC5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSl9dmFyIGY9Yi51cGRhdGVRdWV1ZTtudWxsIT09ZiYmc2goYixmLGQpO2JyZWFrO2Nhc2UgMzp2YXIgZz1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1nKXtjPW51bGw7aWYobnVsbCE9PWIuY2hpbGQpc3dpdGNoKGIuY2hpbGQudGFnKXtjYXNlIDU6Yz1cbmIuY2hpbGQuc3RhdGVOb2RlO2JyZWFrO2Nhc2UgMTpjPWIuY2hpbGQuc3RhdGVOb2RlfXNoKGIsZyxjKX1icmVhaztjYXNlIDU6dmFyIGg9Yi5zdGF0ZU5vZGU7aWYobnVsbD09PWMmJmIuZmxhZ3MmNCl7Yz1oO3ZhciBrPWIubWVtb2l6ZWRQcm9wcztzd2l0Y2goYi50eXBlKXtjYXNlIFwiYnV0dG9uXCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJ0ZXh0YXJlYVwiOmsuYXV0b0ZvY3VzJiZjLmZvY3VzKCk7YnJlYWs7Y2FzZSBcImltZ1wiOmsuc3JjJiYoYy5zcmM9ay5zcmMpfX1icmVhaztjYXNlIDY6YnJlYWs7Y2FzZSA0OmJyZWFrO2Nhc2UgMTI6YnJlYWs7Y2FzZSAxMzppZihudWxsPT09Yi5tZW1vaXplZFN0YXRlKXt2YXIgbD1iLmFsdGVybmF0ZTtpZihudWxsIT09bCl7dmFyIG09bC5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1tKXt2YXIgcT1tLmRlaHlkcmF0ZWQ7bnVsbCE9PXEmJmJkKHEpfX19YnJlYWs7Y2FzZSAxOTpjYXNlIDE3OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDIzOmNhc2UgMjU6YnJlYWs7XG5kZWZhdWx0OnRocm93IEVycm9yKHAoMTYzKSk7fVV8fGIuZmxhZ3MmNTEyJiZSaihiKX1jYXRjaChyKXtXKGIsYi5yZXR1cm4scil9fWlmKGI9PT1hKXtWPW51bGw7YnJlYWt9Yz1iLnNpYmxpbmc7aWYobnVsbCE9PWMpe2MucmV0dXJuPWIucmV0dXJuO1Y9YzticmVha31WPWIucmV0dXJufX1mdW5jdGlvbiBnayhhKXtmb3IoO251bGwhPT1WOyl7dmFyIGI9VjtpZihiPT09YSl7Vj1udWxsO2JyZWFrfXZhciBjPWIuc2libGluZztpZihudWxsIT09Yyl7Yy5yZXR1cm49Yi5yZXR1cm47Vj1jO2JyZWFrfVY9Yi5yZXR1cm59fVxuZnVuY3Rpb24gamsoYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7dHJ5e3N3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTp2YXIgYz1iLnJldHVybjt0cnl7UWooNCxiKX1jYXRjaChrKXtXKGIsYyxrKX1icmVhaztjYXNlIDE6dmFyIGQ9Yi5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50RGlkTW91bnQpe3ZhciBlPWIucmV0dXJuO3RyeXtkLmNvbXBvbmVudERpZE1vdW50KCl9Y2F0Y2goayl7VyhiLGUsayl9fXZhciBmPWIucmV0dXJuO3RyeXtSaihiKX1jYXRjaChrKXtXKGIsZixrKX1icmVhaztjYXNlIDU6dmFyIGc9Yi5yZXR1cm47dHJ5e1JqKGIpfWNhdGNoKGspe1coYixnLGspfX19Y2F0Y2goayl7VyhiLGIucmV0dXJuLGspfWlmKGI9PT1hKXtWPW51bGw7YnJlYWt9dmFyIGg9Yi5zaWJsaW5nO2lmKG51bGwhPT1oKXtoLnJldHVybj1iLnJldHVybjtWPWg7YnJlYWt9Vj1iLnJldHVybn19XG52YXIgbGs9TWF0aC5jZWlsLG1rPXVhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsbms9dWEuUmVhY3RDdXJyZW50T3duZXIsb2s9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsSz0wLFE9bnVsbCxZPW51bGwsWj0wLGZqPTAsZWo9VWYoMCksVD0wLHBrPW51bGwscmg9MCxxaz0wLHJrPTAsc2s9bnVsbCx0az1udWxsLGZrPTAsR2o9SW5maW5pdHksdWs9bnVsbCxPaT0hMSxQaT1udWxsLFJpPW51bGwsdms9ITEsd2s9bnVsbCx4az0wLHlrPTAsems9bnVsbCxBaz0tMSxCaz0wO2Z1bmN0aW9uIFIoKXtyZXR1cm4gMCE9PShLJjYpP0IoKTotMSE9PUFrP0FrOkFrPUIoKX1cbmZ1bmN0aW9uIHlpKGEpe2lmKDA9PT0oYS5tb2RlJjEpKXJldHVybiAxO2lmKDAhPT0oSyYyKSYmMCE9PVopcmV0dXJuIFomLVo7aWYobnVsbCE9PUtnLnRyYW5zaXRpb24pcmV0dXJuIDA9PT1CayYmKEJrPXljKCkpLEJrO2E9QztpZigwIT09YSlyZXR1cm4gYTthPXdpbmRvdy5ldmVudDthPXZvaWQgMD09PWE/MTY6amQoYS50eXBlKTtyZXR1cm4gYX1mdW5jdGlvbiBnaShhLGIsYyxkKXtpZig1MDx5ayl0aHJvdyB5az0wLHprPW51bGwsRXJyb3IocCgxODUpKTtBYyhhLGMsZCk7aWYoMD09PShLJjIpfHxhIT09USlhPT09USYmKDA9PT0oSyYyKSYmKHFrfD1jKSw0PT09VCYmQ2soYSxaKSksRGsoYSxkKSwxPT09YyYmMD09PUsmJjA9PT0oYi5tb2RlJjEpJiYoR2o9QigpKzUwMCxmZyYmamcoKSl9XG5mdW5jdGlvbiBEayhhLGIpe3ZhciBjPWEuY2FsbGJhY2tOb2RlO3djKGEsYik7dmFyIGQ9dWMoYSxhPT09UT9aOjApO2lmKDA9PT1kKW51bGwhPT1jJiZiYyhjKSxhLmNhbGxiYWNrTm9kZT1udWxsLGEuY2FsbGJhY2tQcmlvcml0eT0wO2Vsc2UgaWYoYj1kJi1kLGEuY2FsbGJhY2tQcmlvcml0eSE9PWIpe251bGwhPWMmJmJjKGMpO2lmKDE9PT1iKTA9PT1hLnRhZz9pZyhFay5iaW5kKG51bGwsYSkpOmhnKEVrLmJpbmQobnVsbCxhKSksSmYoZnVuY3Rpb24oKXswPT09KEsmNikmJmpnKCl9KSxjPW51bGw7ZWxzZXtzd2l0Y2goRGMoZCkpe2Nhc2UgMTpjPWZjO2JyZWFrO2Nhc2UgNDpjPWdjO2JyZWFrO2Nhc2UgMTY6Yz1oYzticmVhaztjYXNlIDUzNjg3MDkxMjpjPWpjO2JyZWFrO2RlZmF1bHQ6Yz1oY31jPUZrKGMsR2suYmluZChudWxsLGEpKX1hLmNhbGxiYWNrUHJpb3JpdHk9YjthLmNhbGxiYWNrTm9kZT1jfX1cbmZ1bmN0aW9uIEdrKGEsYil7QWs9LTE7Qms9MDtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTt2YXIgYz1hLmNhbGxiYWNrTm9kZTtpZihIaygpJiZhLmNhbGxiYWNrTm9kZSE9PWMpcmV0dXJuIG51bGw7dmFyIGQ9dWMoYSxhPT09UT9aOjApO2lmKDA9PT1kKXJldHVybiBudWxsO2lmKDAhPT0oZCYzMCl8fDAhPT0oZCZhLmV4cGlyZWRMYW5lcyl8fGIpYj1JayhhLGQpO2Vsc2V7Yj1kO3ZhciBlPUs7S3w9Mjt2YXIgZj1KaygpO2lmKFEhPT1hfHxaIT09Yil1az1udWxsLEdqPUIoKSs1MDAsS2soYSxiKTtkbyB0cnl7TGsoKTticmVha31jYXRjaChoKXtNayhhLGgpfXdoaWxlKDEpOyRnKCk7bWsuY3VycmVudD1mO0s9ZTtudWxsIT09WT9iPTA6KFE9bnVsbCxaPTAsYj1UKX1pZigwIT09Yil7Mj09PWImJihlPXhjKGEpLDAhPT1lJiYoZD1lLGI9TmsoYSxlKSkpO2lmKDE9PT1iKXRocm93IGM9cGssS2soYSwwKSxDayhhLGQpLERrKGEsQigpKSxjO2lmKDY9PT1iKUNrKGEsZCk7XG5lbHNle2U9YS5jdXJyZW50LmFsdGVybmF0ZTtpZigwPT09KGQmMzApJiYhT2soZSkmJihiPUlrKGEsZCksMj09PWImJihmPXhjKGEpLDAhPT1mJiYoZD1mLGI9TmsoYSxmKSkpLDE9PT1iKSl0aHJvdyBjPXBrLEtrKGEsMCksQ2soYSxkKSxEayhhLEIoKSksYzthLmZpbmlzaGVkV29yaz1lO2EuZmluaXNoZWRMYW5lcz1kO3N3aXRjaChiKXtjYXNlIDA6Y2FzZSAxOnRocm93IEVycm9yKHAoMzQ1KSk7Y2FzZSAyOlBrKGEsdGssdWspO2JyZWFrO2Nhc2UgMzpDayhhLGQpO2lmKChkJjEzMDAyMzQyNCk9PT1kJiYoYj1mays1MDAtQigpLDEwPGIpKXtpZigwIT09dWMoYSwwKSlicmVhaztlPWEuc3VzcGVuZGVkTGFuZXM7aWYoKGUmZCkhPT1kKXtSKCk7YS5waW5nZWRMYW5lc3w9YS5zdXNwZW5kZWRMYW5lcyZlO2JyZWFrfWEudGltZW91dEhhbmRsZT1GZihQay5iaW5kKG51bGwsYSx0ayx1ayksYik7YnJlYWt9UGsoYSx0ayx1ayk7YnJlYWs7Y2FzZSA0OkNrKGEsZCk7aWYoKGQmNDE5NDI0MCk9PT1cbmQpYnJlYWs7Yj1hLmV2ZW50VGltZXM7Zm9yKGU9LTE7MDxkOyl7dmFyIGc9MzEtb2MoZCk7Zj0xPDxnO2c9YltnXTtnPmUmJihlPWcpO2QmPX5mfWQ9ZTtkPUIoKS1kO2Q9KDEyMD5kPzEyMDo0ODA+ZD80ODA6MTA4MD5kPzEwODA6MTkyMD5kPzE5MjA6M0UzPmQ/M0UzOjQzMjA+ZD80MzIwOjE5NjAqbGsoZC8xOTYwKSktZDtpZigxMDxkKXthLnRpbWVvdXRIYW5kbGU9RmYoUGsuYmluZChudWxsLGEsdGssdWspLGQpO2JyZWFrfVBrKGEsdGssdWspO2JyZWFrO2Nhc2UgNTpQayhhLHRrLHVrKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMzI5KSk7fX19RGsoYSxCKCkpO3JldHVybiBhLmNhbGxiYWNrTm9kZT09PWM/R2suYmluZChudWxsLGEpOm51bGx9XG5mdW5jdGlvbiBOayhhLGIpe3ZhciBjPXNrO2EuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmKEtrKGEsYikuZmxhZ3N8PTI1Nik7YT1JayhhLGIpOzIhPT1hJiYoYj10ayx0az1jLG51bGwhPT1iJiZGaihiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gRmooYSl7bnVsbD09PXRrP3RrPWE6dGsucHVzaC5hcHBseSh0ayxhKX1cbmZ1bmN0aW9uIE9rKGEpe2Zvcih2YXIgYj1hOzspe2lmKGIuZmxhZ3MmMTYzODQpe3ZhciBjPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWMmJihjPWMuc3RvcmVzLG51bGwhPT1jKSlmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXSxmPWUuZ2V0U25hcHNob3Q7ZT1lLnZhbHVlO3RyeXtpZighSGUoZigpLGUpKXJldHVybiExfWNhdGNoKGcpe3JldHVybiExfX19Yz1iLmNoaWxkO2lmKGIuc3VidHJlZUZsYWdzJjE2Mzg0JiZudWxsIT09YyljLnJldHVybj1iLGI9YztlbHNle2lmKGI9PT1hKWJyZWFrO2Zvcig7bnVsbD09PWIuc2libGluZzspe2lmKG51bGw9PT1iLnJldHVybnx8Yi5yZXR1cm49PT1hKXJldHVybiEwO2I9Yi5yZXR1cm59Yi5zaWJsaW5nLnJldHVybj1iLnJldHVybjtiPWIuc2libGluZ319cmV0dXJuITB9XG5mdW5jdGlvbiBDayhhLGIpe2ImPX5yaztiJj1+cWs7YS5zdXNwZW5kZWRMYW5lc3w9YjthLnBpbmdlZExhbmVzJj1+Yjtmb3IoYT1hLmV4cGlyYXRpb25UaW1lczswPGI7KXt2YXIgYz0zMS1vYyhiKSxkPTE8PGM7YVtjXT0tMTtiJj1+ZH19ZnVuY3Rpb24gRWsoYSl7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzI3KSk7SGsoKTt2YXIgYj11YyhhLDApO2lmKDA9PT0oYiYxKSlyZXR1cm4gRGsoYSxCKCkpLG51bGw7dmFyIGM9SWsoYSxiKTtpZigwIT09YS50YWcmJjI9PT1jKXt2YXIgZD14YyhhKTswIT09ZCYmKGI9ZCxjPU5rKGEsZCkpfWlmKDE9PT1jKXRocm93IGM9cGssS2soYSwwKSxDayhhLGIpLERrKGEsQigpKSxjO2lmKDY9PT1jKXRocm93IEVycm9yKHAoMzQ1KSk7YS5maW5pc2hlZFdvcms9YS5jdXJyZW50LmFsdGVybmF0ZTthLmZpbmlzaGVkTGFuZXM9YjtQayhhLHRrLHVrKTtEayhhLEIoKSk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBRayhhLGIpe3ZhciBjPUs7S3w9MTt0cnl7cmV0dXJuIGEoYil9ZmluYWxseXtLPWMsMD09PUsmJihHaj1CKCkrNTAwLGZnJiZqZygpKX19ZnVuY3Rpb24gUmsoYSl7bnVsbCE9PXdrJiYwPT09d2sudGFnJiYwPT09KEsmNikmJkhrKCk7dmFyIGI9SztLfD0xO3ZhciBjPW9rLnRyYW5zaXRpb24sZD1DO3RyeXtpZihvay50cmFuc2l0aW9uPW51bGwsQz0xLGEpcmV0dXJuIGEoKX1maW5hbGx5e0M9ZCxvay50cmFuc2l0aW9uPWMsSz1iLDA9PT0oSyY2KSYmamcoKX19ZnVuY3Rpb24gSGooKXtmaj1lai5jdXJyZW50O0UoZWopfVxuZnVuY3Rpb24gS2soYSxiKXthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO3ZhciBjPWEudGltZW91dEhhbmRsZTstMSE9PWMmJihhLnRpbWVvdXRIYW5kbGU9LTEsR2YoYykpO2lmKG51bGwhPT1ZKWZvcihjPVkucmV0dXJuO251bGwhPT1jOyl7dmFyIGQ9Yzt3ZyhkKTtzd2l0Y2goZC50YWcpe2Nhc2UgMTpkPWQudHlwZS5jaGlsZENvbnRleHRUeXBlcztudWxsIT09ZCYmdm9pZCAwIT09ZCYmJGYoKTticmVhaztjYXNlIDM6emgoKTtFKFdmKTtFKEgpO0VoKCk7YnJlYWs7Y2FzZSA1OkJoKGQpO2JyZWFrO2Nhc2UgNDp6aCgpO2JyZWFrO2Nhc2UgMTM6RShMKTticmVhaztjYXNlIDE5OkUoTCk7YnJlYWs7Y2FzZSAxMDphaChkLnR5cGUuX2NvbnRleHQpO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyMzpIaigpfWM9Yy5yZXR1cm59UT1hO1k9YT1QZyhhLmN1cnJlbnQsbnVsbCk7Wj1maj1iO1Q9MDtwaz1udWxsO3JrPXFrPXJoPTA7dGs9c2s9bnVsbDtpZihudWxsIT09Zmgpe2ZvcihiPVxuMDtiPGZoLmxlbmd0aDtiKyspaWYoYz1maFtiXSxkPWMuaW50ZXJsZWF2ZWQsbnVsbCE9PWQpe2MuaW50ZXJsZWF2ZWQ9bnVsbDt2YXIgZT1kLm5leHQsZj1jLnBlbmRpbmc7aWYobnVsbCE9PWYpe3ZhciBnPWYubmV4dDtmLm5leHQ9ZTtkLm5leHQ9Z31jLnBlbmRpbmc9ZH1maD1udWxsfXJldHVybiBhfVxuZnVuY3Rpb24gTWsoYSxiKXtkb3t2YXIgYz1ZO3RyeXskZygpO0ZoLmN1cnJlbnQ9Umg7aWYoSWgpe2Zvcih2YXIgZD1NLm1lbW9pemVkU3RhdGU7bnVsbCE9PWQ7KXt2YXIgZT1kLnF1ZXVlO251bGwhPT1lJiYoZS5wZW5kaW5nPW51bGwpO2Q9ZC5uZXh0fUloPSExfUhoPTA7Tz1OPU09bnVsbDtKaD0hMTtLaD0wO25rLmN1cnJlbnQ9bnVsbDtpZihudWxsPT09Y3x8bnVsbD09PWMucmV0dXJuKXtUPTE7cGs9YjtZPW51bGw7YnJlYWt9YTp7dmFyIGY9YSxnPWMucmV0dXJuLGg9YyxrPWI7Yj1aO2guZmxhZ3N8PTMyNzY4O2lmKG51bGwhPT1rJiZcIm9iamVjdFwiPT09dHlwZW9mIGsmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBrLnRoZW4pe3ZhciBsPWssbT1oLHE9bS50YWc7aWYoMD09PShtLm1vZGUmMSkmJigwPT09cXx8MTE9PT1xfHwxNT09PXEpKXt2YXIgcj1tLmFsdGVybmF0ZTtyPyhtLnVwZGF0ZVF1ZXVlPXIudXBkYXRlUXVldWUsbS5tZW1vaXplZFN0YXRlPXIubWVtb2l6ZWRTdGF0ZSxcbm0ubGFuZXM9ci5sYW5lcyk6KG0udXBkYXRlUXVldWU9bnVsbCxtLm1lbW9pemVkU3RhdGU9bnVsbCl9dmFyIHk9VWkoZyk7aWYobnVsbCE9PXkpe3kuZmxhZ3MmPS0yNTc7VmkoeSxnLGgsZixiKTt5Lm1vZGUmMSYmU2koZixsLGIpO2I9eTtrPWw7dmFyIG49Yi51cGRhdGVRdWV1ZTtpZihudWxsPT09bil7dmFyIHQ9bmV3IFNldDt0LmFkZChrKTtiLnVwZGF0ZVF1ZXVlPXR9ZWxzZSBuLmFkZChrKTticmVhayBhfWVsc2V7aWYoMD09PShiJjEpKXtTaShmLGwsYik7dGooKTticmVhayBhfWs9RXJyb3IocCg0MjYpKX19ZWxzZSBpZihJJiZoLm1vZGUmMSl7dmFyIEo9VWkoZyk7aWYobnVsbCE9PUopezA9PT0oSi5mbGFncyY2NTUzNikmJihKLmZsYWdzfD0yNTYpO1ZpKEosZyxoLGYsYik7SmcoSmkoayxoKSk7YnJlYWsgYX19Zj1rPUppKGssaCk7NCE9PVQmJihUPTIpO251bGw9PT1zaz9zaz1bZl06c2sucHVzaChmKTtmPWc7ZG97c3dpdGNoKGYudGFnKXtjYXNlIDM6Zi5mbGFnc3w9NjU1MzY7XG5iJj0tYjtmLmxhbmVzfD1iO3ZhciB4PU5pKGYsayxiKTtwaChmLHgpO2JyZWFrIGE7Y2FzZSAxOmg9azt2YXIgdz1mLnR5cGUsdT1mLnN0YXRlTm9kZTtpZigwPT09KGYuZmxhZ3MmMTI4KSYmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiB3LmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8bnVsbCE9PXUmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiB1LmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PVJpfHwhUmkuaGFzKHUpKSkpe2YuZmxhZ3N8PTY1NTM2O2ImPS1iO2YubGFuZXN8PWI7dmFyIEY9UWkoZixoLGIpO3BoKGYsRik7YnJlYWsgYX19Zj1mLnJldHVybn13aGlsZShudWxsIT09Zil9U2soYyl9Y2F0Y2gobmEpe2I9bmE7WT09PWMmJm51bGwhPT1jJiYoWT1jPWMucmV0dXJuKTtjb250aW51ZX1icmVha313aGlsZSgxKX1mdW5jdGlvbiBKaygpe3ZhciBhPW1rLmN1cnJlbnQ7bWsuY3VycmVudD1SaDtyZXR1cm4gbnVsbD09PWE/Umg6YX1cbmZ1bmN0aW9uIHRqKCl7aWYoMD09PVR8fDM9PT1UfHwyPT09VClUPTQ7bnVsbD09PVF8fDA9PT0ocmgmMjY4NDM1NDU1KSYmMD09PShxayYyNjg0MzU0NTUpfHxDayhRLFopfWZ1bmN0aW9uIElrKGEsYil7dmFyIGM9SztLfD0yO3ZhciBkPUprKCk7aWYoUSE9PWF8fFohPT1iKXVrPW51bGwsS2soYSxiKTtkbyB0cnl7VGsoKTticmVha31jYXRjaChlKXtNayhhLGUpfXdoaWxlKDEpOyRnKCk7Sz1jO21rLmN1cnJlbnQ9ZDtpZihudWxsIT09WSl0aHJvdyBFcnJvcihwKDI2MSkpO1E9bnVsbDtaPTA7cmV0dXJuIFR9ZnVuY3Rpb24gVGsoKXtmb3IoO251bGwhPT1ZOylVayhZKX1mdW5jdGlvbiBMaygpe2Zvcig7bnVsbCE9PVkmJiFjYygpOylVayhZKX1mdW5jdGlvbiBVayhhKXt2YXIgYj1WayhhLmFsdGVybmF0ZSxhLGZqKTthLm1lbW9pemVkUHJvcHM9YS5wZW5kaW5nUHJvcHM7bnVsbD09PWI/U2soYSk6WT1iO25rLmN1cnJlbnQ9bnVsbH1cbmZ1bmN0aW9uIFNrKGEpe3ZhciBiPWE7ZG97dmFyIGM9Yi5hbHRlcm5hdGU7YT1iLnJldHVybjtpZigwPT09KGIuZmxhZ3MmMzI3NjgpKXtpZihjPUVqKGMsYixmaiksbnVsbCE9PWMpe1k9YztyZXR1cm59fWVsc2V7Yz1JaihjLGIpO2lmKG51bGwhPT1jKXtjLmZsYWdzJj0zMjc2NztZPWM7cmV0dXJufWlmKG51bGwhPT1hKWEuZmxhZ3N8PTMyNzY4LGEuc3VidHJlZUZsYWdzPTAsYS5kZWxldGlvbnM9bnVsbDtlbHNle1Q9NjtZPW51bGw7cmV0dXJufX1iPWIuc2libGluZztpZihudWxsIT09Yil7WT1iO3JldHVybn1ZPWI9YX13aGlsZShudWxsIT09Yik7MD09PVQmJihUPTUpfWZ1bmN0aW9uIFBrKGEsYixjKXt2YXIgZD1DLGU9b2sudHJhbnNpdGlvbjt0cnl7b2sudHJhbnNpdGlvbj1udWxsLEM9MSxXayhhLGIsYyxkKX1maW5hbGx5e29rLnRyYW5zaXRpb249ZSxDPWR9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBXayhhLGIsYyxkKXtkbyBIaygpO3doaWxlKG51bGwhPT13ayk7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzI3KSk7Yz1hLmZpbmlzaGVkV29yazt2YXIgZT1hLmZpbmlzaGVkTGFuZXM7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7YS5maW5pc2hlZFdvcms9bnVsbDthLmZpbmlzaGVkTGFuZXM9MDtpZihjPT09YS5jdXJyZW50KXRocm93IEVycm9yKHAoMTc3KSk7YS5jYWxsYmFja05vZGU9bnVsbDthLmNhbGxiYWNrUHJpb3JpdHk9MDt2YXIgZj1jLmxhbmVzfGMuY2hpbGRMYW5lcztCYyhhLGYpO2E9PT1RJiYoWT1RPW51bGwsWj0wKTswPT09KGMuc3VidHJlZUZsYWdzJjIwNjQpJiYwPT09KGMuZmxhZ3MmMjA2NCl8fHZrfHwodms9ITAsRmsoaGMsZnVuY3Rpb24oKXtIaygpO3JldHVybiBudWxsfSkpO2Y9MCE9PShjLmZsYWdzJjE1OTkwKTtpZigwIT09KGMuc3VidHJlZUZsYWdzJjE1OTkwKXx8Zil7Zj1vay50cmFuc2l0aW9uO29rLnRyYW5zaXRpb249bnVsbDtcbnZhciBnPUM7Qz0xO3ZhciBoPUs7S3w9NDtuay5jdXJyZW50PW51bGw7T2ooYSxjKTtkayhjLGEpO09lKERmKTtkZD0hIUNmO0RmPUNmPW51bGw7YS5jdXJyZW50PWM7aGsoYyxhLGUpO2RjKCk7Sz1oO0M9Zztvay50cmFuc2l0aW9uPWZ9ZWxzZSBhLmN1cnJlbnQ9Yzt2ayYmKHZrPSExLHdrPWEseGs9ZSk7Zj1hLnBlbmRpbmdMYW5lczswPT09ZiYmKFJpPW51bGwpO21jKGMuc3RhdGVOb2RlLGQpO0RrKGEsQigpKTtpZihudWxsIT09Yilmb3IoZD1hLm9uUmVjb3ZlcmFibGVFcnJvcixjPTA7YzxiLmxlbmd0aDtjKyspZT1iW2NdLGQoZS52YWx1ZSx7Y29tcG9uZW50U3RhY2s6ZS5zdGFjayxkaWdlc3Q6ZS5kaWdlc3R9KTtpZihPaSl0aHJvdyBPaT0hMSxhPVBpLFBpPW51bGwsYTswIT09KHhrJjEpJiYwIT09YS50YWcmJkhrKCk7Zj1hLnBlbmRpbmdMYW5lczswIT09KGYmMSk/YT09PXprP3lrKys6KHlrPTAsems9YSk6eWs9MDtqZygpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gSGsoKXtpZihudWxsIT09d2spe3ZhciBhPURjKHhrKSxiPW9rLnRyYW5zaXRpb24sYz1DO3RyeXtvay50cmFuc2l0aW9uPW51bGw7Qz0xNj5hPzE2OmE7aWYobnVsbD09PXdrKXZhciBkPSExO2Vsc2V7YT13azt3az1udWxsO3hrPTA7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzMxKSk7dmFyIGU9SztLfD00O2ZvcihWPWEuY3VycmVudDtudWxsIT09Vjspe3ZhciBmPVYsZz1mLmNoaWxkO2lmKDAhPT0oVi5mbGFncyYxNikpe3ZhciBoPWYuZGVsZXRpb25zO2lmKG51bGwhPT1oKXtmb3IodmFyIGs9MDtrPGgubGVuZ3RoO2srKyl7dmFyIGw9aFtrXTtmb3IoVj1sO251bGwhPT1WOyl7dmFyIG09Vjtzd2l0Y2gobS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6UGooOCxtLGYpfXZhciBxPW0uY2hpbGQ7aWYobnVsbCE9PXEpcS5yZXR1cm49bSxWPXE7ZWxzZSBmb3IoO251bGwhPT1WOyl7bT1WO3ZhciByPW0uc2libGluZyx5PW0ucmV0dXJuO1NqKG0pO2lmKG09PT1cbmwpe1Y9bnVsbDticmVha31pZihudWxsIT09cil7ci5yZXR1cm49eTtWPXI7YnJlYWt9Vj15fX19dmFyIG49Zi5hbHRlcm5hdGU7aWYobnVsbCE9PW4pe3ZhciB0PW4uY2hpbGQ7aWYobnVsbCE9PXQpe24uY2hpbGQ9bnVsbDtkb3t2YXIgSj10LnNpYmxpbmc7dC5zaWJsaW5nPW51bGw7dD1KfXdoaWxlKG51bGwhPT10KX19Vj1mfX1pZigwIT09KGYuc3VidHJlZUZsYWdzJjIwNjQpJiZudWxsIT09ZylnLnJldHVybj1mLFY9ZztlbHNlIGI6Zm9yKDtudWxsIT09Vjspe2Y9VjtpZigwIT09KGYuZmxhZ3MmMjA0OCkpc3dpdGNoKGYudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlBqKDksZixmLnJldHVybil9dmFyIHg9Zi5zaWJsaW5nO2lmKG51bGwhPT14KXt4LnJldHVybj1mLnJldHVybjtWPXg7YnJlYWsgYn1WPWYucmV0dXJufX12YXIgdz1hLmN1cnJlbnQ7Zm9yKFY9dztudWxsIT09Vjspe2c9Vjt2YXIgdT1nLmNoaWxkO2lmKDAhPT0oZy5zdWJ0cmVlRmxhZ3MmMjA2NCkmJm51bGwhPT1cbnUpdS5yZXR1cm49ZyxWPXU7ZWxzZSBiOmZvcihnPXc7bnVsbCE9PVY7KXtoPVY7aWYoMCE9PShoLmZsYWdzJjIwNDgpKXRyeXtzd2l0Y2goaC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6UWooOSxoKX19Y2F0Y2gobmEpe1coaCxoLnJldHVybixuYSl9aWYoaD09PWcpe1Y9bnVsbDticmVhayBifXZhciBGPWguc2libGluZztpZihudWxsIT09Ril7Ri5yZXR1cm49aC5yZXR1cm47Vj1GO2JyZWFrIGJ9Vj1oLnJldHVybn19Sz1lO2pnKCk7aWYobGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBsYy5vblBvc3RDb21taXRGaWJlclJvb3QpdHJ5e2xjLm9uUG9zdENvbW1pdEZpYmVyUm9vdChrYyxhKX1jYXRjaChuYSl7fWQ9ITB9cmV0dXJuIGR9ZmluYWxseXtDPWMsb2sudHJhbnNpdGlvbj1ifX1yZXR1cm4hMX1mdW5jdGlvbiBYayhhLGIsYyl7Yj1KaShjLGIpO2I9TmkoYSxiLDEpO2E9bmgoYSxiLDEpO2I9UigpO251bGwhPT1hJiYoQWMoYSwxLGIpLERrKGEsYikpfVxuZnVuY3Rpb24gVyhhLGIsYyl7aWYoMz09PWEudGFnKVhrKGEsYSxjKTtlbHNlIGZvcig7bnVsbCE9PWI7KXtpZigzPT09Yi50YWcpe1hrKGIsYSxjKTticmVha31lbHNlIGlmKDE9PT1iLnRhZyl7dmFyIGQ9Yi5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PVJpfHwhUmkuaGFzKGQpKSl7YT1KaShjLGEpO2E9UWkoYixhLDEpO2I9bmgoYixhLDEpO2E9UigpO251bGwhPT1iJiYoQWMoYiwxLGEpLERrKGIsYSkpO2JyZWFrfX1iPWIucmV0dXJufX1cbmZ1bmN0aW9uIFRpKGEsYixjKXt2YXIgZD1hLnBpbmdDYWNoZTtudWxsIT09ZCYmZC5kZWxldGUoYik7Yj1SKCk7YS5waW5nZWRMYW5lc3w9YS5zdXNwZW5kZWRMYW5lcyZjO1E9PT1hJiYoWiZjKT09PWMmJig0PT09VHx8Mz09PVQmJihaJjEzMDAyMzQyNCk9PT1aJiY1MDA+QigpLWZrP0trKGEsMCk6cmt8PWMpO0RrKGEsYil9ZnVuY3Rpb24gWWsoYSxiKXswPT09YiYmKDA9PT0oYS5tb2RlJjEpP2I9MTooYj1zYyxzYzw8PTEsMD09PShzYyYxMzAwMjM0MjQpJiYoc2M9NDE5NDMwNCkpKTt2YXIgYz1SKCk7YT1paChhLGIpO251bGwhPT1hJiYoQWMoYSxiLGMpLERrKGEsYykpfWZ1bmN0aW9uIHVqKGEpe3ZhciBiPWEubWVtb2l6ZWRTdGF0ZSxjPTA7bnVsbCE9PWImJihjPWIucmV0cnlMYW5lKTtZayhhLGMpfVxuZnVuY3Rpb24gYmsoYSxiKXt2YXIgYz0wO3N3aXRjaChhLnRhZyl7Y2FzZSAxMzp2YXIgZD1hLnN0YXRlTm9kZTt2YXIgZT1hLm1lbW9pemVkU3RhdGU7bnVsbCE9PWUmJihjPWUucmV0cnlMYW5lKTticmVhaztjYXNlIDE5OmQ9YS5zdGF0ZU5vZGU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDMxNCkpO31udWxsIT09ZCYmZC5kZWxldGUoYik7WWsoYSxjKX12YXIgVms7XG5Waz1mdW5jdGlvbihhLGIsYyl7aWYobnVsbCE9PWEpaWYoYS5tZW1vaXplZFByb3BzIT09Yi5wZW5kaW5nUHJvcHN8fFdmLmN1cnJlbnQpZGg9ITA7ZWxzZXtpZigwPT09KGEubGFuZXMmYykmJjA9PT0oYi5mbGFncyYxMjgpKXJldHVybiBkaD0hMSx5aihhLGIsYyk7ZGg9MCE9PShhLmZsYWdzJjEzMTA3Mik/ITA6ITF9ZWxzZSBkaD0hMSxJJiYwIT09KGIuZmxhZ3MmMTA0ODU3NikmJnVnKGIsbmcsYi5pbmRleCk7Yi5sYW5lcz0wO3N3aXRjaChiLnRhZyl7Y2FzZSAyOnZhciBkPWIudHlwZTtpaihhLGIpO2E9Yi5wZW5kaW5nUHJvcHM7dmFyIGU9WWYoYixILmN1cnJlbnQpO2NoKGIsYyk7ZT1OaChudWxsLGIsZCxhLGUsYyk7dmFyIGY9U2goKTtiLmZsYWdzfD0xO1wib2JqZWN0XCI9PT10eXBlb2YgZSYmbnVsbCE9PWUmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLnJlbmRlciYmdm9pZCAwPT09ZS4kJHR5cGVvZj8oYi50YWc9MSxiLm1lbW9pemVkU3RhdGU9bnVsbCxiLnVwZGF0ZVF1ZXVlPVxubnVsbCxaZihkKT8oZj0hMCxjZyhiKSk6Zj0hMSxiLm1lbW9pemVkU3RhdGU9bnVsbCE9PWUuc3RhdGUmJnZvaWQgMCE9PWUuc3RhdGU/ZS5zdGF0ZTpudWxsLGtoKGIpLGUudXBkYXRlcj1FaSxiLnN0YXRlTm9kZT1lLGUuX3JlYWN0SW50ZXJuYWxzPWIsSWkoYixkLGEsYyksYj1qaihudWxsLGIsZCwhMCxmLGMpKTooYi50YWc9MCxJJiZmJiZ2ZyhiKSxYaShudWxsLGIsZSxjKSxiPWIuY2hpbGQpO3JldHVybiBiO2Nhc2UgMTY6ZD1iLmVsZW1lbnRUeXBlO2E6e2lqKGEsYik7YT1iLnBlbmRpbmdQcm9wcztlPWQuX2luaXQ7ZD1lKGQuX3BheWxvYWQpO2IudHlwZT1kO2U9Yi50YWc9WmsoZCk7YT1DaShkLGEpO3N3aXRjaChlKXtjYXNlIDA6Yj1jaihudWxsLGIsZCxhLGMpO2JyZWFrIGE7Y2FzZSAxOmI9aGoobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTE6Yj1ZaShudWxsLGIsZCxhLGMpO2JyZWFrIGE7Y2FzZSAxNDpiPSRpKG51bGwsYixkLENpKGQudHlwZSxhKSxjKTticmVhayBhfXRocm93IEVycm9yKHAoMzA2LFxuZCxcIlwiKSk7fXJldHVybiBiO2Nhc2UgMDpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6Q2koZCxlKSxjaihhLGIsZCxlLGMpO2Nhc2UgMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6Q2koZCxlKSxoaihhLGIsZCxlLGMpO2Nhc2UgMzphOntraihiKTtpZihudWxsPT09YSl0aHJvdyBFcnJvcihwKDM4NykpO2Q9Yi5wZW5kaW5nUHJvcHM7Zj1iLm1lbW9pemVkU3RhdGU7ZT1mLmVsZW1lbnQ7bGgoYSxiKTtxaChiLGQsbnVsbCxjKTt2YXIgZz1iLm1lbW9pemVkU3RhdGU7ZD1nLmVsZW1lbnQ7aWYoZi5pc0RlaHlkcmF0ZWQpaWYoZj17ZWxlbWVudDpkLGlzRGVoeWRyYXRlZDohMSxjYWNoZTpnLmNhY2hlLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6Zy5wZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzLHRyYW5zaXRpb25zOmcudHJhbnNpdGlvbnN9LGIudXBkYXRlUXVldWUuYmFzZVN0YXRlPVxuZixiLm1lbW9pemVkU3RhdGU9ZixiLmZsYWdzJjI1Nil7ZT1KaShFcnJvcihwKDQyMykpLGIpO2I9bGooYSxiLGQsYyxlKTticmVhayBhfWVsc2UgaWYoZCE9PWUpe2U9SmkoRXJyb3IocCg0MjQpKSxiKTtiPWxqKGEsYixkLGMsZSk7YnJlYWsgYX1lbHNlIGZvcih5Zz1MZihiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLmZpcnN0Q2hpbGQpLHhnPWIsST0hMCx6Zz1udWxsLGM9VmcoYixudWxsLGQsYyksYi5jaGlsZD1jO2M7KWMuZmxhZ3M9Yy5mbGFncyYtM3w0MDk2LGM9Yy5zaWJsaW5nO2Vsc2V7SWcoKTtpZihkPT09ZSl7Yj1aaShhLGIsYyk7YnJlYWsgYX1YaShhLGIsZCxjKX1iPWIuY2hpbGR9cmV0dXJuIGI7Y2FzZSA1OnJldHVybiBBaChiKSxudWxsPT09YSYmRWcoYiksZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxmPW51bGwhPT1hP2EubWVtb2l6ZWRQcm9wczpudWxsLGc9ZS5jaGlsZHJlbixFZihkLGUpP2c9bnVsbDpudWxsIT09ZiYmRWYoZCxmKSYmKGIuZmxhZ3N8PTMyKSxcbmdqKGEsYiksWGkoYSxiLGcsYyksYi5jaGlsZDtjYXNlIDY6cmV0dXJuIG51bGw9PT1hJiZFZyhiKSxudWxsO2Nhc2UgMTM6cmV0dXJuIG9qKGEsYixjKTtjYXNlIDQ6cmV0dXJuIHloKGIsYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksZD1iLnBlbmRpbmdQcm9wcyxudWxsPT09YT9iLmNoaWxkPVVnKGIsbnVsbCxkLGMpOlhpKGEsYixkLGMpLGIuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6Q2koZCxlKSxZaShhLGIsZCxlLGMpO2Nhc2UgNzpyZXR1cm4gWGkoYSxiLGIucGVuZGluZ1Byb3BzLGMpLGIuY2hpbGQ7Y2FzZSA4OnJldHVybiBYaShhLGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sYyksYi5jaGlsZDtjYXNlIDEyOnJldHVybiBYaShhLGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sYyksYi5jaGlsZDtjYXNlIDEwOmE6e2Q9Yi50eXBlLl9jb250ZXh0O2U9Yi5wZW5kaW5nUHJvcHM7Zj1iLm1lbW9pemVkUHJvcHM7XG5nPWUudmFsdWU7RyhXZyxkLl9jdXJyZW50VmFsdWUpO2QuX2N1cnJlbnRWYWx1ZT1nO2lmKG51bGwhPT1mKWlmKEhlKGYudmFsdWUsZykpe2lmKGYuY2hpbGRyZW49PT1lLmNoaWxkcmVuJiYhV2YuY3VycmVudCl7Yj1aaShhLGIsYyk7YnJlYWsgYX19ZWxzZSBmb3IoZj1iLmNoaWxkLG51bGwhPT1mJiYoZi5yZXR1cm49Yik7bnVsbCE9PWY7KXt2YXIgaD1mLmRlcGVuZGVuY2llcztpZihudWxsIT09aCl7Zz1mLmNoaWxkO2Zvcih2YXIgaz1oLmZpcnN0Q29udGV4dDtudWxsIT09azspe2lmKGsuY29udGV4dD09PWQpe2lmKDE9PT1mLnRhZyl7az1taCgtMSxjJi1jKTtrLnRhZz0yO3ZhciBsPWYudXBkYXRlUXVldWU7aWYobnVsbCE9PWwpe2w9bC5zaGFyZWQ7dmFyIG09bC5wZW5kaW5nO251bGw9PT1tP2submV4dD1rOihrLm5leHQ9bS5uZXh0LG0ubmV4dD1rKTtsLnBlbmRpbmc9a319Zi5sYW5lc3w9YztrPWYuYWx0ZXJuYXRlO251bGwhPT1rJiYoay5sYW5lc3w9Yyk7YmgoZi5yZXR1cm4sXG5jLGIpO2gubGFuZXN8PWM7YnJlYWt9az1rLm5leHR9fWVsc2UgaWYoMTA9PT1mLnRhZylnPWYudHlwZT09PWIudHlwZT9udWxsOmYuY2hpbGQ7ZWxzZSBpZigxOD09PWYudGFnKXtnPWYucmV0dXJuO2lmKG51bGw9PT1nKXRocm93IEVycm9yKHAoMzQxKSk7Zy5sYW5lc3w9YztoPWcuYWx0ZXJuYXRlO251bGwhPT1oJiYoaC5sYW5lc3w9Yyk7YmgoZyxjLGIpO2c9Zi5zaWJsaW5nfWVsc2UgZz1mLmNoaWxkO2lmKG51bGwhPT1nKWcucmV0dXJuPWY7ZWxzZSBmb3IoZz1mO251bGwhPT1nOyl7aWYoZz09PWIpe2c9bnVsbDticmVha31mPWcuc2libGluZztpZihudWxsIT09Zil7Zi5yZXR1cm49Zy5yZXR1cm47Zz1mO2JyZWFrfWc9Zy5yZXR1cm59Zj1nfVhpKGEsYixlLmNoaWxkcmVuLGMpO2I9Yi5jaGlsZH1yZXR1cm4gYjtjYXNlIDk6cmV0dXJuIGU9Yi50eXBlLGQ9Yi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sY2goYixjKSxlPWVoKGUpLGQ9ZChlKSxiLmZsYWdzfD0xLFhpKGEsYixkLGMpLFxuYi5jaGlsZDtjYXNlIDE0OnJldHVybiBkPWIudHlwZSxlPUNpKGQsYi5wZW5kaW5nUHJvcHMpLGU9Q2koZC50eXBlLGUpLCRpKGEsYixkLGUsYyk7Y2FzZSAxNTpyZXR1cm4gYmooYSxiLGIudHlwZSxiLnBlbmRpbmdQcm9wcyxjKTtjYXNlIDE3OnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpDaShkLGUpLGlqKGEsYiksYi50YWc9MSxaZihkKT8oYT0hMCxjZyhiKSk6YT0hMSxjaChiLGMpLEdpKGIsZCxlKSxJaShiLGQsZSxjKSxqaihudWxsLGIsZCwhMCxhLGMpO2Nhc2UgMTk6cmV0dXJuIHhqKGEsYixjKTtjYXNlIDIyOnJldHVybiBkaihhLGIsYyl9dGhyb3cgRXJyb3IocCgxNTYsYi50YWcpKTt9O2Z1bmN0aW9uIEZrKGEsYil7cmV0dXJuIGFjKGEsYil9XG5mdW5jdGlvbiAkayhhLGIsYyxkKXt0aGlzLnRhZz1hO3RoaXMua2V5PWM7dGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbDt0aGlzLmluZGV4PTA7dGhpcy5yZWY9bnVsbDt0aGlzLnBlbmRpbmdQcm9wcz1iO3RoaXMuZGVwZW5kZW5jaWVzPXRoaXMubWVtb2l6ZWRTdGF0ZT10aGlzLnVwZGF0ZVF1ZXVlPXRoaXMubWVtb2l6ZWRQcm9wcz1udWxsO3RoaXMubW9kZT1kO3RoaXMuc3VidHJlZUZsYWdzPXRoaXMuZmxhZ3M9MDt0aGlzLmRlbGV0aW9ucz1udWxsO3RoaXMuY2hpbGRMYW5lcz10aGlzLmxhbmVzPTA7dGhpcy5hbHRlcm5hdGU9bnVsbH1mdW5jdGlvbiBCZyhhLGIsYyxkKXtyZXR1cm4gbmV3ICRrKGEsYixjLGQpfWZ1bmN0aW9uIGFqKGEpe2E9YS5wcm90b3R5cGU7cmV0dXJuISghYXx8IWEuaXNSZWFjdENvbXBvbmVudCl9XG5mdW5jdGlvbiBaayhhKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSlyZXR1cm4gYWooYSk/MTowO2lmKHZvaWQgMCE9PWEmJm51bGwhPT1hKXthPWEuJCR0eXBlb2Y7aWYoYT09PURhKXJldHVybiAxMTtpZihhPT09R2EpcmV0dXJuIDE0fXJldHVybiAyfVxuZnVuY3Rpb24gUGcoYSxiKXt2YXIgYz1hLmFsdGVybmF0ZTtudWxsPT09Yz8oYz1CZyhhLnRhZyxiLGEua2V5LGEubW9kZSksYy5lbGVtZW50VHlwZT1hLmVsZW1lbnRUeXBlLGMudHlwZT1hLnR5cGUsYy5zdGF0ZU5vZGU9YS5zdGF0ZU5vZGUsYy5hbHRlcm5hdGU9YSxhLmFsdGVybmF0ZT1jKTooYy5wZW5kaW5nUHJvcHM9YixjLnR5cGU9YS50eXBlLGMuZmxhZ3M9MCxjLnN1YnRyZWVGbGFncz0wLGMuZGVsZXRpb25zPW51bGwpO2MuZmxhZ3M9YS5mbGFncyYxNDY4MDA2NDtjLmNoaWxkTGFuZXM9YS5jaGlsZExhbmVzO2MubGFuZXM9YS5sYW5lcztjLmNoaWxkPWEuY2hpbGQ7Yy5tZW1vaXplZFByb3BzPWEubWVtb2l6ZWRQcm9wcztjLm1lbW9pemVkU3RhdGU9YS5tZW1vaXplZFN0YXRlO2MudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZTtiPWEuZGVwZW5kZW5jaWVzO2MuZGVwZW5kZW5jaWVzPW51bGw9PT1iP251bGw6e2xhbmVzOmIubGFuZXMsZmlyc3RDb250ZXh0OmIuZmlyc3RDb250ZXh0fTtcbmMuc2libGluZz1hLnNpYmxpbmc7Yy5pbmRleD1hLmluZGV4O2MucmVmPWEucmVmO3JldHVybiBjfVxuZnVuY3Rpb24gUmcoYSxiLGMsZCxlLGYpe3ZhciBnPTI7ZD1hO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKWFqKGEpJiYoZz0xKTtlbHNlIGlmKFwic3RyaW5nXCI9PT10eXBlb2YgYSlnPTU7ZWxzZSBhOnN3aXRjaChhKXtjYXNlIHlhOnJldHVybiBUZyhjLmNoaWxkcmVuLGUsZixiKTtjYXNlIHphOmc9ODtlfD04O2JyZWFrO2Nhc2UgQWE6cmV0dXJuIGE9QmcoMTIsYyxiLGV8MiksYS5lbGVtZW50VHlwZT1BYSxhLmxhbmVzPWYsYTtjYXNlIEVhOnJldHVybiBhPUJnKDEzLGMsYixlKSxhLmVsZW1lbnRUeXBlPUVhLGEubGFuZXM9ZixhO2Nhc2UgRmE6cmV0dXJuIGE9QmcoMTksYyxiLGUpLGEuZWxlbWVudFR5cGU9RmEsYS5sYW5lcz1mLGE7Y2FzZSBJYTpyZXR1cm4gcGooYyxlLGYsYik7ZGVmYXVsdDppZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIEJhOmc9MTA7YnJlYWsgYTtjYXNlIENhOmc9OTticmVhayBhO2Nhc2UgRGE6Zz0xMTtcbmJyZWFrIGE7Y2FzZSBHYTpnPTE0O2JyZWFrIGE7Y2FzZSBIYTpnPTE2O2Q9bnVsbDticmVhayBhfXRocm93IEVycm9yKHAoMTMwLG51bGw9PWE/YTp0eXBlb2YgYSxcIlwiKSk7fWI9QmcoZyxjLGIsZSk7Yi5lbGVtZW50VHlwZT1hO2IudHlwZT1kO2IubGFuZXM9ZjtyZXR1cm4gYn1mdW5jdGlvbiBUZyhhLGIsYyxkKXthPUJnKDcsYSxkLGIpO2EubGFuZXM9YztyZXR1cm4gYX1mdW5jdGlvbiBwaihhLGIsYyxkKXthPUJnKDIyLGEsZCxiKTthLmVsZW1lbnRUeXBlPUlhO2EubGFuZXM9YzthLnN0YXRlTm9kZT17aXNIaWRkZW46ITF9O3JldHVybiBhfWZ1bmN0aW9uIFFnKGEsYixjKXthPUJnKDYsYSxudWxsLGIpO2EubGFuZXM9YztyZXR1cm4gYX1cbmZ1bmN0aW9uIFNnKGEsYixjKXtiPUJnKDQsbnVsbCE9PWEuY2hpbGRyZW4/YS5jaGlsZHJlbjpbXSxhLmtleSxiKTtiLmxhbmVzPWM7Yi5zdGF0ZU5vZGU9e2NvbnRhaW5lckluZm86YS5jb250YWluZXJJbmZvLHBlbmRpbmdDaGlsZHJlbjpudWxsLGltcGxlbWVudGF0aW9uOmEuaW1wbGVtZW50YXRpb259O3JldHVybiBifVxuZnVuY3Rpb24gYWwoYSxiLGMsZCxlKXt0aGlzLnRhZz1iO3RoaXMuY29udGFpbmVySW5mbz1hO3RoaXMuZmluaXNoZWRXb3JrPXRoaXMucGluZ0NhY2hlPXRoaXMuY3VycmVudD10aGlzLnBlbmRpbmdDaGlsZHJlbj1udWxsO3RoaXMudGltZW91dEhhbmRsZT0tMTt0aGlzLmNhbGxiYWNrTm9kZT10aGlzLnBlbmRpbmdDb250ZXh0PXRoaXMuY29udGV4dD1udWxsO3RoaXMuY2FsbGJhY2tQcmlvcml0eT0wO3RoaXMuZXZlbnRUaW1lcz16YygwKTt0aGlzLmV4cGlyYXRpb25UaW1lcz16YygtMSk7dGhpcy5lbnRhbmdsZWRMYW5lcz10aGlzLmZpbmlzaGVkTGFuZXM9dGhpcy5tdXRhYmxlUmVhZExhbmVzPXRoaXMuZXhwaXJlZExhbmVzPXRoaXMucGluZ2VkTGFuZXM9dGhpcy5zdXNwZW5kZWRMYW5lcz10aGlzLnBlbmRpbmdMYW5lcz0wO3RoaXMuZW50YW5nbGVtZW50cz16YygwKTt0aGlzLmlkZW50aWZpZXJQcmVmaXg9ZDt0aGlzLm9uUmVjb3ZlcmFibGVFcnJvcj1lO3RoaXMubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1cbm51bGx9ZnVuY3Rpb24gYmwoYSxiLGMsZCxlLGYsZyxoLGspe2E9bmV3IGFsKGEsYixjLGgsayk7MT09PWI/KGI9MSwhMD09PWYmJihifD04KSk6Yj0wO2Y9QmcoMyxudWxsLG51bGwsYik7YS5jdXJyZW50PWY7Zi5zdGF0ZU5vZGU9YTtmLm1lbW9pemVkU3RhdGU9e2VsZW1lbnQ6ZCxpc0RlaHlkcmF0ZWQ6YyxjYWNoZTpudWxsLHRyYW5zaXRpb25zOm51bGwscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczpudWxsfTtraChmKTtyZXR1cm4gYX1mdW5jdGlvbiBjbChhLGIsYyl7dmFyIGQ9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJueyQkdHlwZW9mOndhLGtleTpudWxsPT1kP251bGw6XCJcIitkLGNoaWxkcmVuOmEsY29udGFpbmVySW5mbzpiLGltcGxlbWVudGF0aW9uOmN9fVxuZnVuY3Rpb24gZGwoYSl7aWYoIWEpcmV0dXJuIFZmO2E9YS5fcmVhY3RJbnRlcm5hbHM7YTp7aWYoVmIoYSkhPT1hfHwxIT09YS50YWcpdGhyb3cgRXJyb3IocCgxNzApKTt2YXIgYj1hO2Rve3N3aXRjaChiLnRhZyl7Y2FzZSAzOmI9Yi5zdGF0ZU5vZGUuY29udGV4dDticmVhayBhO2Nhc2UgMTppZihaZihiLnR5cGUpKXtiPWIuc3RhdGVOb2RlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0O2JyZWFrIGF9fWI9Yi5yZXR1cm59d2hpbGUobnVsbCE9PWIpO3Rocm93IEVycm9yKHAoMTcxKSk7fWlmKDE9PT1hLnRhZyl7dmFyIGM9YS50eXBlO2lmKFpmKGMpKXJldHVybiBiZyhhLGMsYil9cmV0dXJuIGJ9XG5mdW5jdGlvbiBlbChhLGIsYyxkLGUsZixnLGgsayl7YT1ibChjLGQsITAsYSxlLGYsZyxoLGspO2EuY29udGV4dD1kbChudWxsKTtjPWEuY3VycmVudDtkPVIoKTtlPXlpKGMpO2Y9bWgoZCxlKTtmLmNhbGxiYWNrPXZvaWQgMCE9PWImJm51bGwhPT1iP2I6bnVsbDtuaChjLGYsZSk7YS5jdXJyZW50LmxhbmVzPWU7QWMoYSxlLGQpO0RrKGEsZCk7cmV0dXJuIGF9ZnVuY3Rpb24gZmwoYSxiLGMsZCl7dmFyIGU9Yi5jdXJyZW50LGY9UigpLGc9eWkoZSk7Yz1kbChjKTtudWxsPT09Yi5jb250ZXh0P2IuY29udGV4dD1jOmIucGVuZGluZ0NvbnRleHQ9YztiPW1oKGYsZyk7Yi5wYXlsb2FkPXtlbGVtZW50OmF9O2Q9dm9pZCAwPT09ZD9udWxsOmQ7bnVsbCE9PWQmJihiLmNhbGxiYWNrPWQpO2E9bmgoZSxiLGcpO251bGwhPT1hJiYoZ2koYSxlLGcsZiksb2goYSxlLGcpKTtyZXR1cm4gZ31cbmZ1bmN0aW9uIGdsKGEpe2E9YS5jdXJyZW50O2lmKCFhLmNoaWxkKXJldHVybiBudWxsO3N3aXRjaChhLmNoaWxkLnRhZyl7Y2FzZSA1OnJldHVybiBhLmNoaWxkLnN0YXRlTm9kZTtkZWZhdWx0OnJldHVybiBhLmNoaWxkLnN0YXRlTm9kZX19ZnVuY3Rpb24gaGwoYSxiKXthPWEubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YSYmbnVsbCE9PWEuZGVoeWRyYXRlZCl7dmFyIGM9YS5yZXRyeUxhbmU7YS5yZXRyeUxhbmU9MCE9PWMmJmM8Yj9jOmJ9fWZ1bmN0aW9uIGlsKGEsYil7aGwoYSxiKTsoYT1hLmFsdGVybmF0ZSkmJmhsKGEsYil9ZnVuY3Rpb24gamwoKXtyZXR1cm4gbnVsbH12YXIga2w9XCJmdW5jdGlvblwiPT09dHlwZW9mIHJlcG9ydEVycm9yP3JlcG9ydEVycm9yOmZ1bmN0aW9uKGEpe2NvbnNvbGUuZXJyb3IoYSl9O2Z1bmN0aW9uIGxsKGEpe3RoaXMuX2ludGVybmFsUm9vdD1hfVxubWwucHJvdG90eXBlLnJlbmRlcj1sbC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX2ludGVybmFsUm9vdDtpZihudWxsPT09Yil0aHJvdyBFcnJvcihwKDQwOSkpO2ZsKGEsYixudWxsLG51bGwpfTttbC5wcm90b3R5cGUudW5tb3VudD1sbC5wcm90b3R5cGUudW5tb3VudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuX2ludGVybmFsUm9vdDtpZihudWxsIT09YSl7dGhpcy5faW50ZXJuYWxSb290PW51bGw7dmFyIGI9YS5jb250YWluZXJJbmZvO1JrKGZ1bmN0aW9uKCl7ZmwobnVsbCxhLG51bGwsbnVsbCl9KTtiW3VmXT1udWxsfX07ZnVuY3Rpb24gbWwoYSl7dGhpcy5faW50ZXJuYWxSb290PWF9XG5tbC5wcm90b3R5cGUudW5zdGFibGVfc2NoZWR1bGVIeWRyYXRpb249ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI9SGMoKTthPXtibG9ja2VkT246bnVsbCx0YXJnZXQ6YSxwcmlvcml0eTpifTtmb3IodmFyIGM9MDtjPFFjLmxlbmd0aCYmMCE9PWImJmI8UWNbY10ucHJpb3JpdHk7YysrKTtRYy5zcGxpY2UoYywwLGEpOzA9PT1jJiZWYyhhKX19O2Z1bmN0aW9uIG5sKGEpe3JldHVybiEoIWF8fDEhPT1hLm5vZGVUeXBlJiY5IT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlKX1mdW5jdGlvbiBvbChhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSYmOSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZSYmKDghPT1hLm5vZGVUeXBlfHxcIiByZWFjdC1tb3VudC1wb2ludC11bnN0YWJsZSBcIiE9PWEubm9kZVZhbHVlKSl9ZnVuY3Rpb24gcGwoKXt9XG5mdW5jdGlvbiBxbChhLGIsYyxkLGUpe2lmKGUpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgZj1kO2Q9ZnVuY3Rpb24oKXt2YXIgYT1nbChnKTtmLmNhbGwoYSl9fXZhciBnPWVsKGIsZCxhLDAsbnVsbCwhMSwhMSxcIlwiLHBsKTthLl9yZWFjdFJvb3RDb250YWluZXI9ZzthW3VmXT1nLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO1JrKCk7cmV0dXJuIGd9Zm9yKDtlPWEubGFzdENoaWxkOylhLnJlbW92ZUNoaWxkKGUpO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgaD1kO2Q9ZnVuY3Rpb24oKXt2YXIgYT1nbChrKTtoLmNhbGwoYSl9fXZhciBrPWJsKGEsMCwhMSxudWxsLG51bGwsITEsITEsXCJcIixwbCk7YS5fcmVhY3RSb290Q29udGFpbmVyPWs7YVt1Zl09ay5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtSayhmdW5jdGlvbigpe2ZsKGIsayxjLGQpfSk7cmV0dXJuIGt9XG5mdW5jdGlvbiBybChhLGIsYyxkLGUpe3ZhciBmPWMuX3JlYWN0Um9vdENvbnRhaW5lcjtpZihmKXt2YXIgZz1mO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlKXt2YXIgaD1lO2U9ZnVuY3Rpb24oKXt2YXIgYT1nbChnKTtoLmNhbGwoYSl9fWZsKGIsZyxhLGUpfWVsc2UgZz1xbChjLGIsYSxlLGQpO3JldHVybiBnbChnKX1FYz1mdW5jdGlvbihhKXtzd2l0Y2goYS50YWcpe2Nhc2UgMzp2YXIgYj1hLnN0YXRlTm9kZTtpZihiLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe3ZhciBjPXRjKGIucGVuZGluZ0xhbmVzKTswIT09YyYmKENjKGIsY3wxKSxEayhiLEIoKSksMD09PShLJjYpJiYoR2o9QigpKzUwMCxqZygpKSl9YnJlYWs7Y2FzZSAxMzpSayhmdW5jdGlvbigpe3ZhciBiPWloKGEsMSk7aWYobnVsbCE9PWIpe3ZhciBjPVIoKTtnaShiLGEsMSxjKX19KSxpbChhLDEpfX07XG5GYz1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1paChhLDEzNDIxNzcyOCk7aWYobnVsbCE9PWIpe3ZhciBjPVIoKTtnaShiLGEsMTM0MjE3NzI4LGMpfWlsKGEsMTM0MjE3NzI4KX19O0djPWZ1bmN0aW9uKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPXlpKGEpLGM9aWgoYSxiKTtpZihudWxsIT09Yyl7dmFyIGQ9UigpO2dpKGMsYSxiLGQpfWlsKGEsYil9fTtIYz1mdW5jdGlvbigpe3JldHVybiBDfTtJYz1mdW5jdGlvbihhLGIpe3ZhciBjPUM7dHJ5e3JldHVybiBDPWEsYigpfWZpbmFsbHl7Qz1jfX07XG55Yj1mdW5jdGlvbihhLGIsYyl7c3dpdGNoKGIpe2Nhc2UgXCJpbnB1dFwiOmJiKGEsYyk7Yj1jLm5hbWU7aWYoXCJyYWRpb1wiPT09Yy50eXBlJiZudWxsIT1iKXtmb3IoYz1hO2MucGFyZW50Tm9kZTspYz1jLnBhcmVudE5vZGU7Yz1jLnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dFtuYW1lPVwiK0pTT04uc3RyaW5naWZ5KFwiXCIrYikrJ11bdHlwZT1cInJhZGlvXCJdJyk7Zm9yKGI9MDtiPGMubGVuZ3RoO2IrKyl7dmFyIGQ9Y1tiXTtpZihkIT09YSYmZC5mb3JtPT09YS5mb3JtKXt2YXIgZT1EYihkKTtpZighZSl0aHJvdyBFcnJvcihwKDkwKSk7V2EoZCk7YmIoZCxlKX19fWJyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmliKGEsYyk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmI9Yy52YWx1ZSxudWxsIT1iJiZmYihhLCEhYy5tdWx0aXBsZSxiLCExKX19O0diPVFrO0hiPVJrO1xudmFyIHNsPXt1c2luZ0NsaWVudEVudHJ5UG9pbnQ6ITEsRXZlbnRzOltDYix1ZSxEYixFYixGYixRa119LHRsPXtmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTpXYyxidW5kbGVUeXBlOjAsdmVyc2lvbjpcIjE4LjMuMVwiLHJlbmRlcmVyUGFja2FnZU5hbWU6XCJyZWFjdC1kb21cIn07XG52YXIgdWw9e2J1bmRsZVR5cGU6dGwuYnVuZGxlVHlwZSx2ZXJzaW9uOnRsLnZlcnNpb24scmVuZGVyZXJQYWNrYWdlTmFtZTp0bC5yZW5kZXJlclBhY2thZ2VOYW1lLHJlbmRlcmVyQ29uZmlnOnRsLnJlbmRlcmVyQ29uZmlnLG92ZXJyaWRlSG9va1N0YXRlOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVSZW5hbWVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wczpudWxsLG92ZXJyaWRlUHJvcHNEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wc1JlbmFtZVBhdGg6bnVsbCxzZXRFcnJvckhhbmRsZXI6bnVsbCxzZXRTdXNwZW5zZUhhbmRsZXI6bnVsbCxzY2hlZHVsZVVwZGF0ZTpudWxsLGN1cnJlbnREaXNwYXRjaGVyUmVmOnVhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZmluZEhvc3RJbnN0YW5jZUJ5RmliZXI6ZnVuY3Rpb24oYSl7YT1aYihhKTtyZXR1cm4gbnVsbD09PWE/bnVsbDphLnN0YXRlTm9kZX0sZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6dGwuZmluZEZpYmVyQnlIb3N0SW5zdGFuY2V8fFxuamwsZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOm51bGwsc2NoZWR1bGVSZWZyZXNoOm51bGwsc2NoZWR1bGVSb290Om51bGwsc2V0UmVmcmVzaEhhbmRsZXI6bnVsbCxnZXRDdXJyZW50RmliZXI6bnVsbCxyZWNvbmNpbGVyVmVyc2lvbjpcIjE4LjMuMS1uZXh0LWYxMzM4ZjgwODAtMjAyNDA0MjZcIn07aWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pe3ZhciB2bD1fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX187aWYoIXZsLmlzRGlzYWJsZWQmJnZsLnN1cHBvcnRzRmliZXIpdHJ5e2tjPXZsLmluamVjdCh1bCksbGM9dmx9Y2F0Y2goYSl7fX1leHBvcnRzLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPXNsO1xuZXhwb3J0cy5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oYSxiKXt2YXIgYz0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZighbmwoYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gY2woYSxiLG51bGwsYyl9O2V4cG9ydHMuY3JlYXRlUm9vdD1mdW5jdGlvbihhLGIpe2lmKCFubChhKSl0aHJvdyBFcnJvcihwKDI5OSkpO3ZhciBjPSExLGQ9XCJcIixlPWtsO251bGwhPT1iJiZ2b2lkIDAhPT1iJiYoITA9PT1iLnVuc3RhYmxlX3N0cmljdE1vZGUmJihjPSEwKSx2b2lkIDAhPT1iLmlkZW50aWZpZXJQcmVmaXgmJihkPWIuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09Yi5vblJlY292ZXJhYmxlRXJyb3ImJihlPWIub25SZWNvdmVyYWJsZUVycm9yKSk7Yj1ibChhLDEsITEsbnVsbCxudWxsLGMsITEsZCxlKTthW3VmXT1iLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO3JldHVybiBuZXcgbGwoYil9O1xuZXhwb3J0cy5maW5kRE9NTm9kZT1mdW5jdGlvbihhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKDE9PT1hLm5vZGVUeXBlKXJldHVybiBhO3ZhciBiPWEuX3JlYWN0SW50ZXJuYWxzO2lmKHZvaWQgMD09PWIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnJlbmRlcil0aHJvdyBFcnJvcihwKDE4OCkpO2E9T2JqZWN0LmtleXMoYSkuam9pbihcIixcIik7dGhyb3cgRXJyb3IocCgyNjgsYSkpO31hPVpiKGIpO2E9bnVsbD09PWE/bnVsbDphLnN0YXRlTm9kZTtyZXR1cm4gYX07ZXhwb3J0cy5mbHVzaFN5bmM9ZnVuY3Rpb24oYSl7cmV0dXJuIFJrKGEpfTtleHBvcnRzLmh5ZHJhdGU9ZnVuY3Rpb24oYSxiLGMpe2lmKCFvbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBybChudWxsLGEsYiwhMCxjKX07XG5leHBvcnRzLmh5ZHJhdGVSb290PWZ1bmN0aW9uKGEsYixjKXtpZighbmwoYSkpdGhyb3cgRXJyb3IocCg0MDUpKTt2YXIgZD1udWxsIT1jJiZjLmh5ZHJhdGVkU291cmNlc3x8bnVsbCxlPSExLGY9XCJcIixnPWtsO251bGwhPT1jJiZ2b2lkIDAhPT1jJiYoITA9PT1jLnVuc3RhYmxlX3N0cmljdE1vZGUmJihlPSEwKSx2b2lkIDAhPT1jLmlkZW50aWZpZXJQcmVmaXgmJihmPWMuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09Yy5vblJlY292ZXJhYmxlRXJyb3ImJihnPWMub25SZWNvdmVyYWJsZUVycm9yKSk7Yj1lbChiLG51bGwsYSwxLG51bGwhPWM/YzpudWxsLGUsITEsZixnKTthW3VmXT1iLmN1cnJlbnQ7c2YoYSk7aWYoZClmb3IoYT0wO2E8ZC5sZW5ndGg7YSsrKWM9ZFthXSxlPWMuX2dldFZlcnNpb24sZT1lKGMuX3NvdXJjZSksbnVsbD09Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhP2IubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1bYyxlXTpiLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEucHVzaChjLFxuZSk7cmV0dXJuIG5ldyBtbChiKX07ZXhwb3J0cy5yZW5kZXI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFvbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBybChudWxsLGEsYiwhMSxjKX07ZXhwb3J0cy51bm1vdW50Q29tcG9uZW50QXROb2RlPWZ1bmN0aW9uKGEpe2lmKCFvbChhKSl0aHJvdyBFcnJvcihwKDQwKSk7cmV0dXJuIGEuX3JlYWN0Um9vdENvbnRhaW5lcj8oUmsoZnVuY3Rpb24oKXtybChudWxsLG51bGwsYSwhMSxmdW5jdGlvbigpe2EuX3JlYWN0Um9vdENvbnRhaW5lcj1udWxsO2FbdWZdPW51bGx9KX0pLCEwKTohMX07ZXhwb3J0cy51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1RaztcbmV4cG9ydHMudW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIW9sKGMpKXRocm93IEVycm9yKHAoMjAwKSk7aWYobnVsbD09YXx8dm9pZCAwPT09YS5fcmVhY3RJbnRlcm5hbHMpdGhyb3cgRXJyb3IocCgzOCkpO3JldHVybiBybChhLGIsYywhMSxkKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTguMy4xLW5leHQtZjEzMzhmODA4MC0yMDI0MDQyNlwiO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBjaGVja0RDRSgpIHtcbiAgLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuICBpZiAoXG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFRoaXMgYnJhbmNoIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZFxuICAgIC8vIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgY29uZGl0aW9uIGlzIHRydWUgb25seSBpbiBkZXZlbG9wbWVudC5cbiAgICAvLyBUaGVyZWZvcmUgaWYgdGhlIGJyYW5jaCBpcyBzdGlsbCBoZXJlLCBkZWFkIGNvZGUgZWxpbWluYXRpb24gd2Fzbid0XG4gICAgLy8gcHJvcGVybHkgYXBwbGllZC5cbiAgICAvLyBEb24ndCBjaGFuZ2UgdGhlIG1lc3NhZ2UuIFJlYWN0IERldlRvb2xzIHJlbGllcyBvbiBpdC4gQWxzbyBtYWtlIHN1cmVcbiAgICAvLyB0aGlzIG1lc3NhZ2UgZG9lc24ndCBvY2N1ciBlbHNld2hlcmUgaW4gdGhpcyBmdW5jdGlvbiwgb3IgaXQgd2lsbCBjYXVzZVxuICAgIC8vIGEgZmFsc2UgcG9zaXRpdmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdeX14nKTtcbiAgfVxuICB0cnkge1xuICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjb2RlIGFib3ZlIGhhcyBiZWVuIGRlYWQgY29kZSBlbGltaW5hdGVkIChEQ0UnZCkuXG4gICAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGNoZWNrRENFKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gRGV2VG9vbHMgc2hvdWxkbid0IGNyYXNoIFJlYWN0LCBubyBtYXR0ZXIgd2hhdC5cbiAgICAvLyBXZSBzaG91bGQgc3RpbGwgcmVwb3J0IGluIGNhc2Ugd2UgYnJlYWsgdGhpcyBjb2RlLlxuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAvLyBEQ0UgY2hlY2sgc2hvdWxkIGhhcHBlbiBiZWZvcmUgUmVhY3RET00gYnVuZGxlIGV4ZWN1dGVzIHNvIHRoYXRcbiAgLy8gRGV2VG9vbHMgY2FuIHJlcG9ydCBiYWQgbWluaWZpY2F0aW9uIGR1cmluZyBpbmplY3Rpb24uXG4gIGNoZWNrRENFKCk7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgbSA9IHJlcXVpcmUoJ3JlYWN0LWRvbScpO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgZXhwb3J0cy5jcmVhdGVSb290ID0gbS5jcmVhdGVSb290O1xuICBleHBvcnRzLmh5ZHJhdGVSb290ID0gbS5oeWRyYXRlUm9vdDtcbn0gZWxzZSB7XG4gIHZhciBpID0gbS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtcbiAgZXhwb3J0cy5jcmVhdGVSb290ID0gZnVuY3Rpb24oYywgbykge1xuICAgIGkudXNpbmdDbGllbnRFbnRyeVBvaW50ID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG0uY3JlYXRlUm9vdChjLCBvKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaS51c2luZ0NsaWVudEVudHJ5UG9pbnQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG4gIGV4cG9ydHMuaHlkcmF0ZVJvb3QgPSBmdW5jdGlvbihjLCBoLCBvKSB7XG4gICAgaS51c2luZ0NsaWVudEVudHJ5UG9pbnQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbS5oeWRyYXRlUm9vdChjLCBoLCBvKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaS51c2luZ0NsaWVudEVudHJ5UG9pbnQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG59XG4iLCIvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCAyMDIxIGVCYXkgSW5jLlxuXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGVcbiAqIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBvciBhdFxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qKlxuICogQG1vZHVsZSBOaWNlTW9kYWxcbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlUmVkdWNlciwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbnZhciBzeW1Nb2RhbElkID0gU3ltYm9sKCdOaWNlTW9kYWxJZCcpO1xudmFyIGluaXRpYWxTdGF0ZSA9IHt9O1xuZXhwb3J0IHZhciBOaWNlTW9kYWxDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChpbml0aWFsU3RhdGUpO1xudmFyIE5pY2VNb2RhbElkQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG52YXIgTU9EQUxfUkVHSVNUUlkgPSB7fTtcbnZhciBBTFJFQURZX01PVU5URUQgPSB7fTtcbnZhciB1aWRTZWVkID0gMDtcbnZhciBkaXNwYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGRpc3BhdGNoIG1ldGhvZCBkZXRlY3RlZCwgZGlkIHlvdSBlbWJlZCB5b3VyIGFwcCB3aXRoIE5pY2VNb2RhbC5Qcm92aWRlcj8nKTtcbn07XG52YXIgZ2V0VWlkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gXCJfbmljZV9tb2RhbF9cIiArIHVpZFNlZWQrKzsgfTtcbi8vIE1vZGFsIHJlZHVjZXIgdXNlZCBpbiB1c2VSZWR1Y2VyIGhvb2suXG5leHBvcnQgdmFyIHJlZHVjZXIgPSBmdW5jdGlvbiAoc3RhdGUsIGFjdGlvbikge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGlmIChzdGF0ZSA9PT0gdm9pZCAwKSB7IHN0YXRlID0gaW5pdGlhbFN0YXRlOyB9XG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgICBjYXNlICduaWNlLW1vZGFsL3Nob3cnOiB7XG4gICAgICAgICAgICB2YXIgX2QgPSBhY3Rpb24ucGF5bG9hZCwgbW9kYWxJZCA9IF9kLm1vZGFsSWQsIGFyZ3MgPSBfZC5hcmdzO1xuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIChfYSA9IHt9LCBfYVttb2RhbElkXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZVttb2RhbElkXSksIHsgaWQ6IG1vZGFsSWQsIGFyZ3M6IGFyZ3MsIFxuICAgICAgICAgICAgICAgIC8vIElmIG1vZGFsIGlzIG5vdCBtb3VudGVkLCBtb3VudCBpdCBmaXJzdCB0aGVuIG1ha2UgaXQgdmlzaWJsZS5cbiAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBsb2dpYyBpbnNpZGUgSE9DIHdyYXBwZXIgdG8gbWFrZSBpdCB2aXNpYmxlIGFmdGVyIGl0cyBmaXJzdCBtb3VudC5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIG1lY2hhbmlzbSBlbnN1cmVzIHRoZSBlbnRlcmluZyB0cmFuc2l0aW9uLlxuICAgICAgICAgICAgICAgIHZpc2libGU6ICEhQUxSRUFEWV9NT1VOVEVEW21vZGFsSWRdLCBkZWxheVZpc2libGU6ICFBTFJFQURZX01PVU5URURbbW9kYWxJZF0gfSksIF9hKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbmljZS1tb2RhbC9oaWRlJzoge1xuICAgICAgICAgICAgdmFyIG1vZGFsSWQgPSBhY3Rpb24ucGF5bG9hZC5tb2RhbElkO1xuICAgICAgICAgICAgaWYgKCFzdGF0ZVttb2RhbElkXSlcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgKF9iID0ge30sIF9iW21vZGFsSWRdID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlW21vZGFsSWRdKSwgeyB2aXNpYmxlOiBmYWxzZSB9KSwgX2IpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICduaWNlLW1vZGFsL3JlbW92ZSc6IHtcbiAgICAgICAgICAgIHZhciBtb2RhbElkID0gYWN0aW9uLnBheWxvYWQubW9kYWxJZDtcbiAgICAgICAgICAgIHZhciBuZXdTdGF0ZSA9IF9fYXNzaWduKHt9LCBzdGF0ZSk7XG4gICAgICAgICAgICBkZWxldGUgbmV3U3RhdGVbbW9kYWxJZF07XG4gICAgICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbmljZS1tb2RhbC9zZXQtZmxhZ3MnOiB7XG4gICAgICAgICAgICB2YXIgX2UgPSBhY3Rpb24ucGF5bG9hZCwgbW9kYWxJZCA9IF9lLm1vZGFsSWQsIGZsYWdzID0gX2UuZmxhZ3M7XG4gICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgKF9jID0ge30sIF9jW21vZGFsSWRdID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlW21vZGFsSWRdKSwgZmxhZ3MpLCBfYykpO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxufTtcbi8vIEdldCBtb2RhbCBjb21wb25lbnQgYnkgbW9kYWwgaWRcbmZ1bmN0aW9uIGdldE1vZGFsKG1vZGFsSWQpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IE1PREFMX1JFR0lTVFJZW21vZGFsSWRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29tcDtcbn1cbi8vIGFjdGlvbiBjcmVhdG9yIHRvIHNob3cgYSBtb2RhbFxuZnVuY3Rpb24gc2hvd01vZGFsKG1vZGFsSWQsIGFyZ3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnbmljZS1tb2RhbC9zaG93JyxcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgbW9kYWxJZDogbW9kYWxJZCxcbiAgICAgICAgICAgIGFyZ3M6IGFyZ3MsXG4gICAgICAgIH0sXG4gICAgfTtcbn1cbi8vIGFjdGlvbiBjcmVhdG9yIHRvIHNldCBmbGFncyBvZiBhIG1vZGFsXG5mdW5jdGlvbiBzZXRNb2RhbEZsYWdzKG1vZGFsSWQsIGZsYWdzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ25pY2UtbW9kYWwvc2V0LWZsYWdzJyxcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgbW9kYWxJZDogbW9kYWxJZCxcbiAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgfSxcbiAgICB9O1xufVxuLy8gYWN0aW9uIGNyZWF0b3IgdG8gaGlkZSBhIG1vZGFsXG5mdW5jdGlvbiBoaWRlTW9kYWwobW9kYWxJZCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICduaWNlLW1vZGFsL2hpZGUnLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBtb2RhbElkOiBtb2RhbElkLFxuICAgICAgICB9LFxuICAgIH07XG59XG4vLyBhY3Rpb24gY3JlYXRvciB0byByZW1vdmUgYSBtb2RhbFxuZnVuY3Rpb24gcmVtb3ZlTW9kYWwobW9kYWxJZCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICduaWNlLW1vZGFsL3JlbW92ZScsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIG1vZGFsSWQ6IG1vZGFsSWQsXG4gICAgICAgIH0sXG4gICAgfTtcbn1cbnZhciBtb2RhbENhbGxiYWNrcyA9IHt9O1xudmFyIGhpZGVNb2RhbENhbGxiYWNrcyA9IHt9O1xudmFyIGdldE1vZGFsSWQgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICBpZiAodHlwZW9mIG1vZGFsID09PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIG1vZGFsO1xuICAgIGlmICghbW9kYWxbc3ltTW9kYWxJZF0pIHtcbiAgICAgICAgbW9kYWxbc3ltTW9kYWxJZF0gPSBnZXRVaWQoKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGFsW3N5bU1vZGFsSWRdO1xufTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG5leHBvcnQgZnVuY3Rpb24gc2hvdyhtb2RhbCwgYXJncykge1xuICAgIHZhciBtb2RhbElkID0gZ2V0TW9kYWxJZChtb2RhbCk7XG4gICAgaWYgKHR5cGVvZiBtb2RhbCAhPT0gJ3N0cmluZycgJiYgIU1PREFMX1JFR0lTVFJZW21vZGFsSWRdKSB7XG4gICAgICAgIHJlZ2lzdGVyKG1vZGFsSWQsIG1vZGFsKTtcbiAgICB9XG4gICAgZGlzcGF0Y2goc2hvd01vZGFsKG1vZGFsSWQsIGFyZ3MpKTtcbiAgICBpZiAoIW1vZGFsQ2FsbGJhY2tzW21vZGFsSWRdKSB7XG4gICAgICAgIC8vIGAhYCB0ZWxsIHRzIHRoYXQgdGhlUmVzb2x2ZSB3aWxsIGJlIHdyaXR0ZW4gYmVmb3JlIGl0IGlzIHVzZWRcbiAgICAgICAgdmFyIHRoZVJlc29sdmVfMTtcbiAgICAgICAgLy8gYCFgIHRlbGwgdHMgdGhhdCB0aGVSZXNvbHZlIHdpbGwgYmUgd3JpdHRlbiBiZWZvcmUgaXQgaXMgdXNlZFxuICAgICAgICB2YXIgdGhlUmVqZWN0XzE7XG4gICAgICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdGhlUmVzb2x2ZV8xID0gcmVzb2x2ZTtcbiAgICAgICAgICAgIHRoZVJlamVjdF8xID0gcmVqZWN0O1xuICAgICAgICB9KTtcbiAgICAgICAgbW9kYWxDYWxsYmFja3NbbW9kYWxJZF0gPSB7XG4gICAgICAgICAgICByZXNvbHZlOiB0aGVSZXNvbHZlXzEsXG4gICAgICAgICAgICByZWplY3Q6IHRoZVJlamVjdF8xLFxuICAgICAgICAgICAgcHJvbWlzZTogcHJvbWlzZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGFsQ2FsbGJhY2tzW21vZGFsSWRdLnByb21pc2U7XG59XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuZXhwb3J0IGZ1bmN0aW9uIGhpZGUobW9kYWwpIHtcbiAgICB2YXIgbW9kYWxJZCA9IGdldE1vZGFsSWQobW9kYWwpO1xuICAgIGRpc3BhdGNoKGhpZGVNb2RhbChtb2RhbElkKSk7XG4gICAgLy8gU2hvdWxkIGFsc28gZGVsZXRlIHRoZSBjYWxsYmFjayBmb3IgbW9kYWwucmVzb2x2ZSAjMzVcbiAgICBkZWxldGUgbW9kYWxDYWxsYmFja3NbbW9kYWxJZF07XG4gICAgaWYgKCFoaWRlTW9kYWxDYWxsYmFja3NbbW9kYWxJZF0pIHtcbiAgICAgICAgLy8gYCFgIHRlbGwgdHMgdGhhdCB0aGVSZXNvbHZlIHdpbGwgYmUgd3JpdHRlbiBiZWZvcmUgaXQgaXMgdXNlZFxuICAgICAgICB2YXIgdGhlUmVzb2x2ZV8yO1xuICAgICAgICAvLyBgIWAgdGVsbCB0cyB0aGF0IHRoZVJlc29sdmUgd2lsbCBiZSB3cml0dGVuIGJlZm9yZSBpdCBpcyB1c2VkXG4gICAgICAgIHZhciB0aGVSZWplY3RfMjtcbiAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB0aGVSZXNvbHZlXzIgPSByZXNvbHZlO1xuICAgICAgICAgICAgdGhlUmVqZWN0XzIgPSByZWplY3Q7XG4gICAgICAgIH0pO1xuICAgICAgICBoaWRlTW9kYWxDYWxsYmFja3NbbW9kYWxJZF0gPSB7XG4gICAgICAgICAgICByZXNvbHZlOiB0aGVSZXNvbHZlXzIsXG4gICAgICAgICAgICByZWplY3Q6IHRoZVJlamVjdF8yLFxuICAgICAgICAgICAgcHJvbWlzZTogcHJvbWlzZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGhpZGVNb2RhbENhbGxiYWNrc1ttb2RhbElkXS5wcm9taXNlO1xufVxuZXhwb3J0IHZhciByZW1vdmUgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICB2YXIgbW9kYWxJZCA9IGdldE1vZGFsSWQobW9kYWwpO1xuICAgIGRpc3BhdGNoKHJlbW92ZU1vZGFsKG1vZGFsSWQpKTtcbiAgICBkZWxldGUgbW9kYWxDYWxsYmFja3NbbW9kYWxJZF07XG4gICAgZGVsZXRlIGhpZGVNb2RhbENhbGxiYWNrc1ttb2RhbElkXTtcbn07XG52YXIgc2V0RmxhZ3MgPSBmdW5jdGlvbiAobW9kYWxJZCwgZmxhZ3MpIHtcbiAgICBkaXNwYXRjaChzZXRNb2RhbEZsYWdzKG1vZGFsSWQsIGZsYWdzKSk7XG59O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbmV4cG9ydCBmdW5jdGlvbiB1c2VNb2RhbChtb2RhbCwgYXJncykge1xuICAgIHZhciBtb2RhbHMgPSB1c2VDb250ZXh0KE5pY2VNb2RhbENvbnRleHQpO1xuICAgIHZhciBjb250ZXh0TW9kYWxJZCA9IHVzZUNvbnRleHQoTmljZU1vZGFsSWRDb250ZXh0KTtcbiAgICB2YXIgbW9kYWxJZCA9IG51bGw7XG4gICAgdmFyIGlzVXNlQ29tcG9uZW50ID0gbW9kYWwgJiYgdHlwZW9mIG1vZGFsICE9PSAnc3RyaW5nJztcbiAgICBpZiAoIW1vZGFsKSB7XG4gICAgICAgIG1vZGFsSWQgPSBjb250ZXh0TW9kYWxJZDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG1vZGFsSWQgPSBnZXRNb2RhbElkKG1vZGFsKTtcbiAgICB9XG4gICAgLy8gT25seSBpZiBjb250ZXh0TW9kYWxJZCBkb2Vzbid0IGV4aXN0XG4gICAgaWYgKCFtb2RhbElkKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG1vZGFsIGlkIGZvdW5kIGluIE5pY2VNb2RhbC51c2VNb2RhbC4nKTtcbiAgICB2YXIgbWlkID0gbW9kYWxJZDtcbiAgICAvLyBJZiB1c2UgYSBjb21wb25lbnQgZGlyZWN0bHksIHJlZ2lzdGVyIGl0LlxuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChpc1VzZUNvbXBvbmVudCAmJiAhTU9EQUxfUkVHSVNUUllbbWlkXSkge1xuICAgICAgICAgICAgcmVnaXN0ZXIobWlkLCBtb2RhbCwgYXJncyk7XG4gICAgICAgIH1cbiAgICB9LCBbaXNVc2VDb21wb25lbnQsIG1pZCwgbW9kYWwsIGFyZ3NdKTtcbiAgICB2YXIgbW9kYWxJbmZvID0gbW9kYWxzW21pZF07XG4gICAgdmFyIHNob3dDYWxsYmFjayA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChhcmdzKSB7IHJldHVybiBzaG93KG1pZCwgYXJncyk7IH0sIFttaWRdKTtcbiAgICB2YXIgaGlkZUNhbGxiYWNrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkgeyByZXR1cm4gaGlkZShtaWQpOyB9LCBbbWlkXSk7XG4gICAgdmFyIHJlbW92ZUNhbGxiYWNrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlKG1pZCk7IH0sIFttaWRdKTtcbiAgICB2YXIgcmVzb2x2ZUNhbGxiYWNrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAoX2EgPSBtb2RhbENhbGxiYWNrc1ttaWRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVzb2x2ZShhcmdzKTtcbiAgICAgICAgZGVsZXRlIG1vZGFsQ2FsbGJhY2tzW21pZF07XG4gICAgfSwgW21pZF0pO1xuICAgIHZhciByZWplY3RDYWxsYmFjayA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgKF9hID0gbW9kYWxDYWxsYmFja3NbbWlkXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlamVjdChhcmdzKTtcbiAgICAgICAgZGVsZXRlIG1vZGFsQ2FsbGJhY2tzW21pZF07XG4gICAgfSwgW21pZF0pO1xuICAgIHZhciByZXNvbHZlSGlkZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgKF9hID0gaGlkZU1vZGFsQ2FsbGJhY2tzW21pZF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXNvbHZlKGFyZ3MpO1xuICAgICAgICBkZWxldGUgaGlkZU1vZGFsQ2FsbGJhY2tzW21pZF07XG4gICAgfSwgW21pZF0pO1xuICAgIHJldHVybiB1c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gICAgICAgIGlkOiBtaWQsXG4gICAgICAgIGFyZ3M6IG1vZGFsSW5mbyA9PT0gbnVsbCB8fCBtb2RhbEluZm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vZGFsSW5mby5hcmdzLFxuICAgICAgICB2aXNpYmxlOiAhIShtb2RhbEluZm8gPT09IG51bGwgfHwgbW9kYWxJbmZvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtb2RhbEluZm8udmlzaWJsZSksXG4gICAgICAgIGtlZXBNb3VudGVkOiAhIShtb2RhbEluZm8gPT09IG51bGwgfHwgbW9kYWxJbmZvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtb2RhbEluZm8ua2VlcE1vdW50ZWQpLFxuICAgICAgICBzaG93OiBzaG93Q2FsbGJhY2ssXG4gICAgICAgIGhpZGU6IGhpZGVDYWxsYmFjayxcbiAgICAgICAgcmVtb3ZlOiByZW1vdmVDYWxsYmFjayxcbiAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZUNhbGxiYWNrLFxuICAgICAgICByZWplY3Q6IHJlamVjdENhbGxiYWNrLFxuICAgICAgICByZXNvbHZlSGlkZTogcmVzb2x2ZUhpZGUsXG4gICAgfSk7IH0sIFtcbiAgICAgICAgbWlkLFxuICAgICAgICBtb2RhbEluZm8gPT09IG51bGwgfHwgbW9kYWxJbmZvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtb2RhbEluZm8uYXJncyxcbiAgICAgICAgbW9kYWxJbmZvID09PSBudWxsIHx8IG1vZGFsSW5mbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbW9kYWxJbmZvLnZpc2libGUsXG4gICAgICAgIG1vZGFsSW5mbyA9PT0gbnVsbCB8fCBtb2RhbEluZm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vZGFsSW5mby5rZWVwTW91bnRlZCxcbiAgICAgICAgc2hvd0NhbGxiYWNrLFxuICAgICAgICBoaWRlQ2FsbGJhY2ssXG4gICAgICAgIHJlbW92ZUNhbGxiYWNrLFxuICAgICAgICByZXNvbHZlQ2FsbGJhY2ssXG4gICAgICAgIHJlamVjdENhbGxiYWNrLFxuICAgICAgICByZXNvbHZlSGlkZSxcbiAgICBdKTtcbn1cbmV4cG9ydCB2YXIgY3JlYXRlID0gZnVuY3Rpb24gKENvbXApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGRlZmF1bHRWaXNpYmxlID0gX2EuZGVmYXVsdFZpc2libGUsIGtlZXBNb3VudGVkID0gX2Eua2VlcE1vdW50ZWQsIGlkID0gX2EuaWQsIHByb3BzID0gX19yZXN0KF9hLCBbXCJkZWZhdWx0VmlzaWJsZVwiLCBcImtlZXBNb3VudGVkXCIsIFwiaWRcIl0pO1xuICAgICAgICB2YXIgX2MgPSB1c2VNb2RhbChpZCksIGFyZ3MgPSBfYy5hcmdzLCBzaG93ID0gX2Muc2hvdztcbiAgICAgICAgLy8gSWYgdGhlcmUncyBtb2RhbCBzdGF0ZSwgdGhlbiBzaG91bGQgbW91bnQgaXQuXG4gICAgICAgIHZhciBtb2RhbHMgPSB1c2VDb250ZXh0KE5pY2VNb2RhbENvbnRleHQpO1xuICAgICAgICB2YXIgc2hvdWxkTW91bnQgPSAhIW1vZGFsc1tpZF07XG4gICAgICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvLyBJZiBkZWZhdWx0VmlzaWJsZSwgc2hvdyBpdCBhZnRlciBtb3VudGVkLlxuICAgICAgICAgICAgaWYgKGRlZmF1bHRWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgc2hvdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQUxSRUFEWV9NT1VOVEVEW2lkXSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBBTFJFQURZX01PVU5URURbaWRdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwgW2lkLCBzaG93LCBkZWZhdWx0VmlzaWJsZV0pO1xuICAgICAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGtlZXBNb3VudGVkKVxuICAgICAgICAgICAgICAgIHNldEZsYWdzKGlkLCB7IGtlZXBNb3VudGVkOiB0cnVlIH0pO1xuICAgICAgICB9LCBbaWQsIGtlZXBNb3VudGVkXSk7XG4gICAgICAgIHZhciBkZWxheVZpc2libGUgPSAoX2IgPSBtb2RhbHNbaWRdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZGVsYXlWaXNpYmxlO1xuICAgICAgICAvLyBJZiBtb2RhbC5zaG93IGlzIGNhbGxlZFxuICAgICAgICAvLyAgMS4gSWYgbW9kYWwgd2FzIG1vdW50ZWQsIHNob3VsZCBtYWtlIGl0IHZpc2libGUgZGlyZWN0bHlcbiAgICAgICAgLy8gIDIuIElmIG1vZGFsIGhhcyBub3QgYmVlbiBtb3VudGVkLCBzaG91bGQgbW91bnQgaXQgZmlyc3QsIHRoZW4gbWFrZSBpdCB2aXNpYmxlXG4gICAgICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZGVsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgLy8gZGVsYXlWaXNpYmxlOiBmYWxzZSA9PiB0cnVlLCBpdCBtZWFucyB0aGUgbW9kYWwuc2hvdygpIGlzIGNhbGxlZCwgc2hvdWxkIHNob3cgaXQuXG4gICAgICAgICAgICAgICAgc2hvdyhhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW2RlbGF5VmlzaWJsZSwgYXJncywgc2hvd10pO1xuICAgICAgICBpZiAoIXNob3VsZE1vdW50KVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChOaWNlTW9kYWxJZENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGlkIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENvbXAsIF9fYXNzaWduKHt9LCBwcm9wcywgYXJncykpKSk7XG4gICAgfTtcbn07XG4vLyBBbGwgcmVnaXN0ZXJlZCBtb2RhbHMgd2lsbCBiZSByZW5kZXJlZCBpbiBtb2RhbCBwbGFjZWhvbGRlclxuZXhwb3J0IHZhciByZWdpc3RlciA9IGZ1bmN0aW9uIChpZCwgY29tcCwgcHJvcHMpIHtcbiAgICBpZiAoIU1PREFMX1JFR0lTVFJZW2lkXSkge1xuICAgICAgICBNT0RBTF9SRUdJU1RSWVtpZF0gPSB7IGNvbXA6IGNvbXAsIHByb3BzOiBwcm9wcyB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgTU9EQUxfUkVHSVNUUllbaWRdLnByb3BzID0gcHJvcHM7XG4gICAgfVxufTtcbi8qKlxuICogVW5yZWdpc3RlciBhIG1vZGFsLlxuICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBtb2RhbC5cbiAqL1xuZXhwb3J0IHZhciB1bnJlZ2lzdGVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgZGVsZXRlIE1PREFMX1JFR0lTVFJZW2lkXTtcbn07XG4vLyBUaGUgcGxhY2Vob2xkZXIgY29tcG9uZW50IGlzIHVzZWQgdG8gYXV0byByZW5kZXIgbW9kYWxzIHdoZW4gY2FsbCBtb2RhbC5zaG93KClcbi8vIFdoZW4gbW9kYWwuc2hvdygpIGlzIGNhbGxlZCwgaXQgbWVhbnMgdGhlcmUndmUgYmVlbiBtb2RhbCBpbmZvXG52YXIgTmljZU1vZGFsUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1vZGFscyA9IHVzZUNvbnRleHQoTmljZU1vZGFsQ29udGV4dCk7XG4gICAgdmFyIHZpc2libGVNb2RhbElkcyA9IE9iamVjdC5rZXlzKG1vZGFscykuZmlsdGVyKGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gISFtb2RhbHNbaWRdOyB9KTtcbiAgICB2aXNpYmxlTW9kYWxJZHMuZm9yRWFjaChmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgaWYgKCFNT0RBTF9SRUdJU1RSWVtpZF0gJiYgIUFMUkVBRFlfTU9VTlRFRFtpZF0pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIk5vIG1vZGFsIGZvdW5kIGZvciBpZDogXCIgKyBpZCArIFwiLiBQbGVhc2UgY2hlY2sgdGhlIGlkIG9yIGlmIGl0IGlzIHJlZ2lzdGVyZWQgb3IgZGVjbGFyZWQgdmlhIEpTWC5cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgdG9SZW5kZXIgPSB2aXNpYmxlTW9kYWxJZHNcbiAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoaWQpIHsgcmV0dXJuIE1PREFMX1JFR0lTVFJZW2lkXTsgfSlcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoaWQpIHsgcmV0dXJuIChfX2Fzc2lnbih7IGlkOiBpZCB9LCBNT0RBTF9SRUdJU1RSWVtpZF0pKTsgfSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCB0b1JlbmRlci5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KHQuY29tcCwgX19hc3NpZ24oeyBrZXk6IHQuaWQsIGlkOiB0LmlkIH0sIHQucHJvcHMpKSk7IH0pKSk7XG59O1xudmFyIElubmVyQ29udGV4dFByb3ZpZGVyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gX2EuY2hpbGRyZW47XG4gICAgdmFyIGFyciA9IHVzZVJlZHVjZXIocmVkdWNlciwgaW5pdGlhbFN0YXRlKTtcbiAgICB2YXIgbW9kYWxzID0gYXJyWzBdO1xuICAgIGRpc3BhdGNoID0gYXJyWzFdO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChOaWNlTW9kYWxDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBtb2RhbHMgfSxcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTmljZU1vZGFsUGxhY2Vob2xkZXIsIG51bGwpKSk7XG59O1xuZXhwb3J0IHZhciBQcm92aWRlciA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLCBnaXZlbkRpc3BhdGNoID0gX2EuZGlzcGF0Y2gsIGdpdmVuTW9kYWxzID0gX2EubW9kYWxzO1xuICAgIGlmICghZ2l2ZW5EaXNwYXRjaCB8fCAhZ2l2ZW5Nb2RhbHMpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5uZXJDb250ZXh0UHJvdmlkZXIsIG51bGwsIGNoaWxkcmVuKTtcbiAgICB9XG4gICAgZGlzcGF0Y2ggPSBnaXZlbkRpc3BhdGNoO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChOaWNlTW9kYWxDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBnaXZlbk1vZGFscyB9LFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChOaWNlTW9kYWxQbGFjZWhvbGRlciwgbnVsbCkpKTtcbn07XG4vKipcbiAqIERlY2xhcmF0aXZlIHdheSB0byByZWdpc3RlciBhIG1vZGFsLlxuICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBtb2RhbC5cbiAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgbW9kYWwgQ29tcG9uZW50LlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IHZhciBNb2RhbERlZiA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBpZCA9IF9hLmlkLCBjb21wb25lbnQgPSBfYS5jb21wb25lbnQ7XG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVnaXN0ZXIoaWQsIGNvbXBvbmVudCk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB1bnJlZ2lzdGVyKGlkKTtcbiAgICAgICAgfTtcbiAgICB9LCBbaWQsIGNvbXBvbmVudF0pO1xuICAgIHJldHVybiBudWxsO1xufTtcbi8qKlxuICogQSBwbGFjZSBob2xkZXIgYWxsb3dzIHRvIGJpbmQgcHJvcHMgdG8gYSBtb2RhbC5cbiAqIEl0IGFzc2lnbnMgc2hvdy9oaWRlIG1ldGhvZHMgdG8gaGFuZGxlciBvYmplY3QgdG8gc2hvdy9oaWRlIHRoZSBtb2RhbC5cbiAqXG4gKiBDb21wYXJpbmcgdG8gdXNlIHRoZSA8TXlOaWNlTW9kYWwgaWQ9Li4vPiBkaXJlY3RseSwgdGhpcyBhcHByb2FjaCBhbGxvd3MgdXNlIHJlZ2lzdGVyZWQgbW9kYWwgaWQgdG8gZmluZCB0aGUgbW9kYWwgY29tcG9uZW50LlxuICogQWxzbyBpdCBhdm9pZHMgdG8gY3JlYXRlIHVuaXF1ZSBpZCBmb3IgTXlOaWNlTW9kYWwuXG4gKlxuICogQHBhcmFtIG1vZGFsIC0gVGhlIG1vZGFsIGlkIHJlZ2lzdGVyZWQgb3IgYSBtb2RhbCBjb21wb25lbnQuXG4gKiBAcGFyYW0gaGFuZGxlciAtIFRoZSBoYW5kbGVyIG9iamVjdCB0byBjb250cm9sIHRoZSBtb2RhbC5cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCB2YXIgTW9kYWxIb2xkZXIgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgX2I7XG4gICAgdmFyIG1vZGFsID0gX2EubW9kYWwsIF9jID0gX2EuaGFuZGxlciwgaGFuZGxlciA9IF9jID09PSB2b2lkIDAgPyB7fSA6IF9jLCByZXN0UHJvcHMgPSBfX3Jlc3QoX2EsIFtcIm1vZGFsXCIsIFwiaGFuZGxlclwiXSk7XG4gICAgdmFyIG1pZCA9IHVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0VWlkKCk7IH0sIFtdKTtcbiAgICB2YXIgTW9kYWxDb21wID0gdHlwZW9mIG1vZGFsID09PSAnc3RyaW5nJyA/IChfYiA9IE1PREFMX1JFR0lTVFJZW21vZGFsXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNvbXAgOiBtb2RhbDtcbiAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBoYW5kbGVyIGZvdW5kIGluIE5pY2VNb2RhbC5Nb2RhbEhvbGRlci4nKTtcbiAgICB9XG4gICAgaWYgKCFNb2RhbENvbXApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbW9kYWwgZm91bmQgZm9yIGlkOiBcIiArIG1vZGFsICsgXCIgaW4gTmljZU1vZGFsLk1vZGFsSG9sZGVyLlwiKTtcbiAgICB9XG4gICAgaGFuZGxlci5zaG93ID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGFyZ3MpIHsgcmV0dXJuIHNob3cobWlkLCBhcmdzKTsgfSwgW21pZF0pO1xuICAgIGhhbmRsZXIuaGlkZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGhpZGUobWlkKTsgfSwgW21pZF0pO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KE1vZGFsQ29tcCwgX19hc3NpZ24oeyBpZDogbWlkIH0sIHJlc3RQcm9wcykpO1xufTtcbmV4cG9ydCB2YXIgYW50ZE1vZGFsID0gZnVuY3Rpb24gKG1vZGFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmlzaWJsZTogbW9kYWwudmlzaWJsZSxcbiAgICAgICAgb25PazogZnVuY3Rpb24gKCkgeyByZXR1cm4gbW9kYWwuaGlkZSgpOyB9LFxuICAgICAgICBvbkNhbmNlbDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbW9kYWwuaGlkZSgpOyB9LFxuICAgICAgICBhZnRlckNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHJlc29sdmUgYmVmb3JlIHJlbW92ZVxuICAgICAgICAgICAgbW9kYWwucmVzb2x2ZUhpZGUoKTtcbiAgICAgICAgICAgIGlmICghbW9kYWwua2VlcE1vdW50ZWQpXG4gICAgICAgICAgICAgICAgbW9kYWwucmVtb3ZlKCk7XG4gICAgICAgIH0sXG4gICAgfTtcbn07XG5leHBvcnQgdmFyIGFudGRNb2RhbFY1ID0gZnVuY3Rpb24gKG1vZGFsKSB7XG4gICAgdmFyIF9hID0gYW50ZE1vZGFsKG1vZGFsKSwgb25PayA9IF9hLm9uT2ssIG9uQ2FuY2VsID0gX2Eub25DYW5jZWwsIGFmdGVyQ2xvc2UgPSBfYS5hZnRlckNsb3NlO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9wZW46IG1vZGFsLnZpc2libGUsXG4gICAgICAgIG9uT2s6IG9uT2ssXG4gICAgICAgIG9uQ2FuY2VsOiBvbkNhbmNlbCxcbiAgICAgICAgYWZ0ZXJDbG9zZTogYWZ0ZXJDbG9zZSxcbiAgICB9O1xufTtcbmV4cG9ydCB2YXIgYW50ZERyYXdlciA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHZpc2libGU6IG1vZGFsLnZpc2libGUsXG4gICAgICAgIG9uQ2xvc2U6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1vZGFsLmhpZGUoKTsgfSxcbiAgICAgICAgYWZ0ZXJWaXNpYmxlQ2hhbmdlOiBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgaWYgKCF2KSB7XG4gICAgICAgICAgICAgICAgbW9kYWwucmVzb2x2ZUhpZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICF2ICYmICFtb2RhbC5rZWVwTW91bnRlZCAmJiBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbmV4cG9ydCB2YXIgYW50ZERyYXdlclY1ID0gZnVuY3Rpb24gKG1vZGFsKSB7XG4gICAgdmFyIF9hID0gYW50ZERyYXdlcihtb2RhbCksIG9uQ2xvc2UgPSBfYS5vbkNsb3NlLCBhZnRlck9wZW5DaGFuZ2UgPSBfYS5hZnRlclZpc2libGVDaGFuZ2U7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb3BlbjogbW9kYWwudmlzaWJsZSxcbiAgICAgICAgb25DbG9zZTogb25DbG9zZSxcbiAgICAgICAgYWZ0ZXJPcGVuQ2hhbmdlOiBhZnRlck9wZW5DaGFuZ2UsXG4gICAgfTtcbn07XG5leHBvcnQgdmFyIG11aURpYWxvZyA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG9wZW46IG1vZGFsLnZpc2libGUsXG4gICAgICAgIG9uQ2xvc2U6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1vZGFsLmhpZGUoKTsgfSxcbiAgICAgICAgb25FeGl0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG1vZGFsLnJlc29sdmVIaWRlKCk7XG4gICAgICAgICAgICAhbW9kYWwua2VlcE1vdW50ZWQgJiYgbW9kYWwucmVtb3ZlKCk7XG4gICAgICAgIH0sXG4gICAgfTtcbn07XG5leHBvcnQgdmFyIG11aURpYWxvZ1Y1ID0gZnVuY3Rpb24gKG1vZGFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb3BlbjogbW9kYWwudmlzaWJsZSxcbiAgICAgICAgb25DbG9zZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gbW9kYWwuaGlkZSgpOyB9LFxuICAgICAgICBUcmFuc2l0aW9uUHJvcHM6IHtcbiAgICAgICAgICAgIG9uRXhpdGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbW9kYWwucmVzb2x2ZUhpZGUoKTtcbiAgICAgICAgICAgICAgICAhbW9kYWwua2VlcE1vdW50ZWQgJiYgbW9kYWwucmVtb3ZlKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH07XG59O1xuZXhwb3J0IHZhciBib290c3RyYXBEaWFsb2cgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzaG93OiBtb2RhbC52aXNpYmxlLFxuICAgICAgICBvbkhpZGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1vZGFsLmhpZGUoKTsgfSxcbiAgICAgICAgb25FeGl0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG1vZGFsLnJlc29sdmVIaWRlKCk7XG4gICAgICAgICAgICAhbW9kYWwua2VlcE1vdW50ZWQgJiYgbW9kYWwucmVtb3ZlKCk7XG4gICAgICAgIH0sXG4gICAgfTtcbn07XG52YXIgTmljZU1vZGFsID0ge1xuICAgIFByb3ZpZGVyOiBQcm92aWRlcixcbiAgICBNb2RhbERlZjogTW9kYWxEZWYsXG4gICAgTW9kYWxIb2xkZXI6IE1vZGFsSG9sZGVyLFxuICAgIE5pY2VNb2RhbENvbnRleHQ6IE5pY2VNb2RhbENvbnRleHQsXG4gICAgY3JlYXRlOiBjcmVhdGUsXG4gICAgcmVnaXN0ZXI6IHJlZ2lzdGVyLFxuICAgIGdldE1vZGFsOiBnZXRNb2RhbCxcbiAgICBzaG93OiBzaG93LFxuICAgIGhpZGU6IGhpZGUsXG4gICAgcmVtb3ZlOiByZW1vdmUsXG4gICAgdXNlTW9kYWw6IHVzZU1vZGFsLFxuICAgIHJlZHVjZXI6IHJlZHVjZXIsXG4gICAgYW50ZE1vZGFsOiBhbnRkTW9kYWwsXG4gICAgYW50ZERyYXdlcjogYW50ZERyYXdlcixcbiAgICBtdWlEaWFsb2c6IG11aURpYWxvZyxcbiAgICBib290c3RyYXBEaWFsb2c6IGJvb3RzdHJhcERpYWxvZyxcbn07XG5leHBvcnQgZGVmYXVsdCBOaWNlTW9kYWw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJcbmV4cG9ydCBjbGFzcyBTaG9wIHtcbiAgICBpZDogbnVtYmVyID0gMFxuICAgIG5hbWU6IHN0cmluZyA9IFwiXCJcbiAgICB1dWlkOiBzdHJpbmcgPSBcIlwiXG4gICAgYmFza2V0RmllbGQxOiBzdHJpbmcgPSBcIlwiXG4gICAgYmFza2V0RmllbGQyOiBzdHJpbmcgPSBcIlwiXG4gICAgYmFza2V0UG9zRmllbGQxOiBzdHJpbmcgPSBcIlwiXG4gICAgYmFza2V0UG9zRmllbGQyOiBzdHJpbmcgPSBcIlwiXG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLmlkID0gaXRlbS5zaG9wLmlkXG4gICAgICAgIHRoaXMubmFtZSA9IGl0ZW0uc2hvcC5uYW1lXG4gICAgICAgIHRoaXMudXVpZCA9IGl0ZW0uc2hvcC51dWlkXG4gICAgICAgIHRoaXMuYmFza2V0RmllbGQxID0gaXRlbS5zaG9wLmJhc2tldEZpZWxkMVxuICAgICAgICB0aGlzLmJhc2tldEZpZWxkMiA9IGl0ZW0uc2hvcC5iYXNrZXRGaWVsZDJcbiAgICAgICAgdGhpcy5iYXNrZXRQb3NGaWVsZDEgPSBpdGVtLnNob3AuYmFza2V0UG9zRmllbGQxXG4gICAgICAgIHRoaXMuYmFza2V0UG9zRmllbGQyID0gaXRlbS5zaG9wLmJhc2tldFBvc0ZpZWxkMlxuICAgIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsImZ1bmN0aW9uIF90eXBlb2Yobykge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIF90eXBlb2Yobyk7XG59XG5leHBvcnQgeyBfdHlwZW9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59XG5leHBvcnQgeyB0b1ByaW1pdGl2ZSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5pbXBvcnQgdG9QcmltaXRpdmUgZnJvbSBcIi4vdG9QcmltaXRpdmUuanNcIjtcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiO1xufVxuZXhwb3J0IHsgdG9Qcm9wZXJ0eUtleSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IHRvUHJvcGVydHlLZXkgZnJvbSBcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbmV4cG9ydCB7IF9kZWZpbmVQcm9wZXJ0eSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gXCIuL2RlZmluZVByb3BlcnR5LmpzXCI7XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHtcbiAgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlO1xuICAgIH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pO1xuICB9XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZDIoZSkge1xuICBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykge1xuICAgIHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTtcbiAgICByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikge1xuICAgICAgZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7XG4gICAgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGU7XG59XG5leHBvcnQgeyBfb2JqZWN0U3ByZWFkMiBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxuZXhwb3J0IHsgX2FycmF5V2l0aEhvbGVzIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkge1xuICB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAobnVsbCAhPSB0KSB7XG4gICAgdmFyIGUsXG4gICAgICBuLFxuICAgICAgaSxcbiAgICAgIHUsXG4gICAgICBhID0gW10sXG4gICAgICBmID0gITAsXG4gICAgICBvID0gITE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHtcbiAgICAgICAgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuO1xuICAgICAgICBmID0gITE7XG4gICAgICB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgbyA9ICEwLCBuID0gcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG8pIHRocm93IG47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG59XG5leHBvcnQgeyBfaXRlcmFibGVUb0FycmF5TGltaXQgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5leHBvcnQgeyBfYXJyYXlMaWtlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiO1xuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHtcbiAgaWYgKHIpIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkociwgYSk7XG4gICAgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTtcbiAgICByZXR1cm4gXCJPYmplY3RcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXCJNYXBcIiA9PT0gdCB8fCBcIlNldFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFwiQXJndW1lbnRzXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBhcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwO1xuICB9XG59XG5leHBvcnQgeyBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5leHBvcnQgeyBfbm9uSXRlcmFibGVSZXN0IGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlXaXRoSG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRoSG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXlMaW1pdCBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVSZXN0IGZyb20gXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5leHBvcnQgeyBfc2xpY2VkVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoZS5pbmNsdWRlcyhuKSkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGUsIHQpIHtcbiAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9O1xuICB2YXIgbyxcbiAgICByLFxuICAgIGkgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKGUsIHQpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtcbiAgICBmb3IgKHIgPSAwOyByIDwgcy5sZW5ndGg7IHIrKykgbyA9IHNbcl0sIHQuaW5jbHVkZXMobykgfHwge30ucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLCBvKSAmJiAoaVtvXSA9IGVbb10pO1xuICB9XG4gIHJldHVybiBpO1xufVxuZXhwb3J0IHsgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyJztcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5JztcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiZGVmYXVsdElucHV0VmFsdWVcIiwgXCJkZWZhdWx0TWVudUlzT3BlblwiLCBcImRlZmF1bHRWYWx1ZVwiLCBcImlucHV0VmFsdWVcIiwgXCJtZW51SXNPcGVuXCIsIFwib25DaGFuZ2VcIiwgXCJvbklucHV0Q2hhbmdlXCIsIFwib25NZW51Q2xvc2VcIiwgXCJvbk1lbnVPcGVuXCIsIFwidmFsdWVcIl07XG5mdW5jdGlvbiB1c2VTdGF0ZU1hbmFnZXIoX3JlZikge1xuICB2YXIgX3JlZiRkZWZhdWx0SW5wdXRWYWx1ID0gX3JlZi5kZWZhdWx0SW5wdXRWYWx1ZSxcbiAgICBkZWZhdWx0SW5wdXRWYWx1ZSA9IF9yZWYkZGVmYXVsdElucHV0VmFsdSA9PT0gdm9pZCAwID8gJycgOiBfcmVmJGRlZmF1bHRJbnB1dFZhbHUsXG4gICAgX3JlZiRkZWZhdWx0TWVudUlzT3BlID0gX3JlZi5kZWZhdWx0TWVudUlzT3BlbixcbiAgICBkZWZhdWx0TWVudUlzT3BlbiA9IF9yZWYkZGVmYXVsdE1lbnVJc09wZSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmJGRlZmF1bHRNZW51SXNPcGUsXG4gICAgX3JlZiRkZWZhdWx0VmFsdWUgPSBfcmVmLmRlZmF1bHRWYWx1ZSxcbiAgICBkZWZhdWx0VmFsdWUgPSBfcmVmJGRlZmF1bHRWYWx1ZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYkZGVmYXVsdFZhbHVlLFxuICAgIHByb3BzSW5wdXRWYWx1ZSA9IF9yZWYuaW5wdXRWYWx1ZSxcbiAgICBwcm9wc01lbnVJc09wZW4gPSBfcmVmLm1lbnVJc09wZW4sXG4gICAgcHJvcHNPbkNoYW5nZSA9IF9yZWYub25DaGFuZ2UsXG4gICAgcHJvcHNPbklucHV0Q2hhbmdlID0gX3JlZi5vbklucHV0Q2hhbmdlLFxuICAgIHByb3BzT25NZW51Q2xvc2UgPSBfcmVmLm9uTWVudUNsb3NlLFxuICAgIHByb3BzT25NZW51T3BlbiA9IF9yZWYub25NZW51T3BlbixcbiAgICBwcm9wc1ZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICByZXN0U2VsZWN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHByb3BzSW5wdXRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNJbnB1dFZhbHVlIDogZGVmYXVsdElucHV0VmFsdWUpLFxuICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgIHN0YXRlSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZTJbMF0sXG4gICAgc2V0U3RhdGVJbnB1dFZhbHVlID0gX3VzZVN0YXRlMlsxXTtcbiAgdmFyIF91c2VTdGF0ZTMgPSB1c2VTdGF0ZShwcm9wc01lbnVJc09wZW4gIT09IHVuZGVmaW5lZCA/IHByb3BzTWVudUlzT3BlbiA6IGRlZmF1bHRNZW51SXNPcGVuKSxcbiAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgc3RhdGVNZW51SXNPcGVuID0gX3VzZVN0YXRlNFswXSxcbiAgICBzZXRTdGF0ZU1lbnVJc09wZW4gPSBfdXNlU3RhdGU0WzFdO1xuICB2YXIgX3VzZVN0YXRlNSA9IHVzZVN0YXRlKHByb3BzVmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzVmFsdWUgOiBkZWZhdWx0VmFsdWUpLFxuICAgIF91c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU1LCAyKSxcbiAgICBzdGF0ZVZhbHVlID0gX3VzZVN0YXRlNlswXSxcbiAgICBzZXRTdGF0ZVZhbHVlID0gX3VzZVN0YXRlNlsxXTtcbiAgdmFyIG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wc09uQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wc09uQ2hhbmdlKHZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9XG4gICAgc2V0U3RhdGVWYWx1ZSh2YWx1ZSk7XG4gIH0sIFtwcm9wc09uQ2hhbmdlXSk7XG4gIHZhciBvbklucHV0Q2hhbmdlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgdmFyIG5ld1ZhbHVlO1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbklucHV0Q2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBuZXdWYWx1ZSA9IHByb3BzT25JbnB1dENoYW5nZSh2YWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgfVxuICAgIHNldFN0YXRlSW5wdXRWYWx1ZShuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkID8gbmV3VmFsdWUgOiB2YWx1ZSk7XG4gIH0sIFtwcm9wc09uSW5wdXRDaGFuZ2VdKTtcbiAgdmFyIG9uTWVudU9wZW4gPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wc09uTWVudU9wZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BzT25NZW51T3BlbigpO1xuICAgIH1cbiAgICBzZXRTdGF0ZU1lbnVJc09wZW4odHJ1ZSk7XG4gIH0sIFtwcm9wc09uTWVudU9wZW5dKTtcbiAgdmFyIG9uTWVudUNsb3NlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbk1lbnVDbG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcHNPbk1lbnVDbG9zZSgpO1xuICAgIH1cbiAgICBzZXRTdGF0ZU1lbnVJc09wZW4oZmFsc2UpO1xuICB9LCBbcHJvcHNPbk1lbnVDbG9zZV0pO1xuICB2YXIgaW5wdXRWYWx1ZSA9IHByb3BzSW5wdXRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNJbnB1dFZhbHVlIDogc3RhdGVJbnB1dFZhbHVlO1xuICB2YXIgbWVudUlzT3BlbiA9IHByb3BzTWVudUlzT3BlbiAhPT0gdW5kZWZpbmVkID8gcHJvcHNNZW51SXNPcGVuIDogc3RhdGVNZW51SXNPcGVuO1xuICB2YXIgdmFsdWUgPSBwcm9wc1ZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm9wc1ZhbHVlIDogc3RhdGVWYWx1ZTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdFNlbGVjdFByb3BzKSwge30sIHtcbiAgICBpbnB1dFZhbHVlOiBpbnB1dFZhbHVlLFxuICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW4sXG4gICAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICAgIG9uSW5wdXRDaGFuZ2U6IG9uSW5wdXRDaGFuZ2UsXG4gICAgb25NZW51Q2xvc2U6IG9uTWVudUNsb3NlLFxuICAgIG9uTWVudU9wZW46IG9uTWVudU9wZW4sXG4gICAgdmFsdWU6IHZhbHVlXG4gIH0pO1xufVxuXG5leHBvcnQgeyB1c2VTdGF0ZU1hbmFnZXIgYXMgdSB9O1xuIiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIHJldHVybiBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uIChuKSB7XG4gICAgZm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHtcbiAgICAgIHZhciB0ID0gYXJndW1lbnRzW2VdO1xuICAgICAgZm9yICh2YXIgciBpbiB0KSAoe30pLmhhc093blByb3BlcnR5LmNhbGwodCwgcikgJiYgKG5bcl0gPSB0W3JdKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH0sIF9leHRlbmRzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5leHBvcnQgeyBfZXh0ZW5kcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxuZXhwb3J0IHsgX2NsYXNzQ2FsbENoZWNrIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxuZXhwb3J0IHsgX2NyZWF0ZUNsYXNzIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxuZXhwb3J0IHsgX3NldFByb3RvdHlwZU9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbmV4cG9ydCB7IF9pbmhlcml0cyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKHQpIHtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIF9nZXRQcm90b3R5cGVPZih0KTtcbn1cbmV4cG9ydCB7IF9nZXRQcm90b3R5cGVPZiBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7XG4gIH0gY2F0Y2ggKHQpIHt9XG4gIHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gICAgcmV0dXJuICEhdDtcbiAgfSkoKTtcbn1cbmV4cG9ydCB7IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxuZXhwb3J0IHsgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5pbXBvcnQgYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiO1xuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgZSkge1xuICBpZiAoZSAmJiAoXCJvYmplY3RcIiA9PSBfdHlwZW9mKGUpIHx8IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZSkpIHJldHVybiBlO1xuICBpZiAodm9pZCAwICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCk7XG59XG5leHBvcnQgeyBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGdldFByb3RvdHlwZU9mIGZyb20gXCIuL2dldFByb3RvdHlwZU9mLmpzXCI7XG5pbXBvcnQgaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IGZyb20gXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiO1xuaW1wb3J0IHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIi4vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qc1wiO1xuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKHQpIHtcbiAgdmFyIHIgPSBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZSxcbiAgICAgIG8gPSBnZXRQcm90b3R5cGVPZih0KTtcbiAgICBpZiAocikge1xuICAgICAgdmFyIHMgPSBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjtcbiAgICAgIGUgPSBSZWZsZWN0LmNvbnN0cnVjdChvLCBhcmd1bWVudHMsIHMpO1xuICAgIH0gZWxzZSBlID0gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIGUpO1xuICB9O1xufVxuZXhwb3J0IHsgX2NyZWF0ZVN1cGVyIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5leHBvcnQgeyBfYXJyYXlXaXRob3V0SG9sZXMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxuZXhwb3J0IHsgX2l0ZXJhYmxlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbmV4cG9ydCB7IF9ub25JdGVyYWJsZVNwcmVhZCBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGFycmF5V2l0aG91dEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVTcHJlYWQgZnJvbSBcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIjtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbmV4cG9ydCB7IF90b0NvbnN1bWFibGVBcnJheSBhcyBkZWZhdWx0IH07IiwidmFyIGlzRGV2ZWxvcG1lbnQgPSBmYWxzZTtcblxuLypcblxuQmFzZWQgb2ZmIGdsYW1vcidzIFN0eWxlU2hlZXQsIHRoYW5rcyBTdW5pbCDinaTvuI9cblxuaGlnaCBwZXJmb3JtYW5jZSBTdHlsZVNoZWV0IGZvciBjc3MtaW4tanMgc3lzdGVtc1xuXG4tIHVzZXMgbXVsdGlwbGUgc3R5bGUgdGFncyBiZWhpbmQgdGhlIHNjZW5lcyBmb3IgbWlsbGlvbnMgb2YgcnVsZXNcbi0gdXNlcyBgaW5zZXJ0UnVsZWAgZm9yIGFwcGVuZGluZyBpbiBwcm9kdWN0aW9uIGZvciAqbXVjaCogZmFzdGVyIHBlcmZvcm1hbmNlXG5cbi8vIHVzYWdlXG5cbmltcG9ydCB7IFN0eWxlU2hlZXQgfSBmcm9tICdAZW1vdGlvbi9zaGVldCdcblxubGV0IHN0eWxlU2hlZXQgPSBuZXcgU3R5bGVTaGVldCh7IGtleTogJycsIGNvbnRhaW5lcjogZG9jdW1lbnQuaGVhZCB9KVxuXG5zdHlsZVNoZWV0Lmluc2VydCgnI2JveCB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfScpXG4tIGFwcGVuZHMgYSBjc3MgcnVsZSBpbnRvIHRoZSBzdHlsZXNoZWV0XG5cbnN0eWxlU2hlZXQuZmx1c2goKVxuLSBlbXB0aWVzIHRoZSBzdHlsZXNoZWV0IG9mIGFsbCBpdHMgY29udGVudHNcblxuKi9cblxuZnVuY3Rpb24gc2hlZXRGb3JUYWcodGFnKSB7XG4gIGlmICh0YWcuc2hlZXQpIHtcbiAgICByZXR1cm4gdGFnLnNoZWV0O1xuICB9IC8vIHRoaXMgd2VpcmRuZXNzIGJyb3VnaHQgdG8geW91IGJ5IGZpcmVmb3hcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkb2N1bWVudC5zdHlsZVNoZWV0c1tpXS5vd25lck5vZGUgPT09IHRhZykge1xuICAgICAgcmV0dXJuIGRvY3VtZW50LnN0eWxlU2hlZXRzW2ldO1xuICAgIH1cbiAgfSAvLyB0aGlzIGZ1bmN0aW9uIHNob3VsZCBhbHdheXMgcmV0dXJuIHdpdGggYSB2YWx1ZVxuICAvLyBUUyBjYW4ndCB1bmRlcnN0YW5kIGl0IHRob3VnaCBzbyB3ZSBtYWtlIGl0IHN0b3AgY29tcGxhaW5pbmcgaGVyZVxuXG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIHRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHRhZy5zZXRBdHRyaWJ1dGUoJ2RhdGEtZW1vdGlvbicsIG9wdGlvbnMua2V5KTtcblxuICBpZiAob3B0aW9ucy5ub25jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdGFnLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCBvcHRpb25zLm5vbmNlKTtcbiAgfVxuXG4gIHRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJykpO1xuICB0YWcuc2V0QXR0cmlidXRlKCdkYXRhLXMnLCAnJyk7XG4gIHJldHVybiB0YWc7XG59XG5cbnZhciBTdHlsZVNoZWV0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgLy8gVXNpbmcgTm9kZSBpbnN0ZWFkIG9mIEhUTUxFbGVtZW50IHNpbmNlIGNvbnRhaW5lciBtYXkgYmUgYSBTaGFkb3dSb290XG4gIGZ1bmN0aW9uIFN0eWxlU2hlZXQob3B0aW9ucykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLl9pbnNlcnRUYWcgPSBmdW5jdGlvbiAodGFnKSB7XG4gICAgICB2YXIgYmVmb3JlO1xuXG4gICAgICBpZiAoX3RoaXMudGFncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKF90aGlzLmluc2VydGlvblBvaW50KSB7XG4gICAgICAgICAgYmVmb3JlID0gX3RoaXMuaW5zZXJ0aW9uUG9pbnQubmV4dFNpYmxpbmc7XG4gICAgICAgIH0gZWxzZSBpZiAoX3RoaXMucHJlcGVuZCkge1xuICAgICAgICAgIGJlZm9yZSA9IF90aGlzLmNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJlZm9yZSA9IF90aGlzLmJlZm9yZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmVmb3JlID0gX3RoaXMudGFnc1tfdGhpcy50YWdzLmxlbmd0aCAtIDFdLm5leHRTaWJsaW5nO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKHRhZywgYmVmb3JlKTtcblxuICAgICAgX3RoaXMudGFncy5wdXNoKHRhZyk7XG4gICAgfTtcblxuICAgIHRoaXMuaXNTcGVlZHkgPSBvcHRpb25zLnNwZWVkeSA9PT0gdW5kZWZpbmVkID8gIWlzRGV2ZWxvcG1lbnQgOiBvcHRpb25zLnNwZWVkeTtcbiAgICB0aGlzLnRhZ3MgPSBbXTtcbiAgICB0aGlzLmN0ciA9IDA7XG4gICAgdGhpcy5ub25jZSA9IG9wdGlvbnMubm9uY2U7IC8vIGtleSBpcyB0aGUgdmFsdWUgb2YgdGhlIGRhdGEtZW1vdGlvbiBhdHRyaWJ1dGUsIGl0J3MgdXNlZCB0byBpZGVudGlmeSBkaWZmZXJlbnQgc2hlZXRzXG5cbiAgICB0aGlzLmtleSA9IG9wdGlvbnMua2V5O1xuICAgIHRoaXMuY29udGFpbmVyID0gb3B0aW9ucy5jb250YWluZXI7XG4gICAgdGhpcy5wcmVwZW5kID0gb3B0aW9ucy5wcmVwZW5kO1xuICAgIHRoaXMuaW5zZXJ0aW9uUG9pbnQgPSBvcHRpb25zLmluc2VydGlvblBvaW50O1xuICAgIHRoaXMuYmVmb3JlID0gbnVsbDtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBTdHlsZVNoZWV0LnByb3RvdHlwZTtcblxuICBfcHJvdG8uaHlkcmF0ZSA9IGZ1bmN0aW9uIGh5ZHJhdGUobm9kZXMpIHtcbiAgICBub2Rlcy5mb3JFYWNoKHRoaXMuX2luc2VydFRhZyk7XG4gIH07XG5cbiAgX3Byb3RvLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydChydWxlKSB7XG4gICAgLy8gdGhlIG1heCBsZW5ndGggaXMgaG93IG1hbnkgcnVsZXMgd2UgaGF2ZSBwZXIgc3R5bGUgdGFnLCBpdCdzIDY1MDAwIGluIHNwZWVkeSBtb2RlXG4gICAgLy8gaXQncyAxIGluIGRldiBiZWNhdXNlIHdlIGluc2VydCBzb3VyY2UgbWFwcyB0aGF0IG1hcCBhIHNpbmdsZSBydWxlIHRvIGEgbG9jYXRpb25cbiAgICAvLyBhbmQgeW91IGNhbiBvbmx5IGhhdmUgb25lIHNvdXJjZSBtYXAgcGVyIHN0eWxlIHRhZ1xuICAgIGlmICh0aGlzLmN0ciAlICh0aGlzLmlzU3BlZWR5ID8gNjUwMDAgOiAxKSA9PT0gMCkge1xuICAgICAgdGhpcy5faW5zZXJ0VGFnKGNyZWF0ZVN0eWxlRWxlbWVudCh0aGlzKSk7XG4gICAgfVxuXG4gICAgdmFyIHRhZyA9IHRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAodGhpcy5pc1NwZWVkeSkge1xuICAgICAgdmFyIHNoZWV0ID0gc2hlZXRGb3JUYWcodGFnKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gdGhpcyBpcyB0aGUgdWx0cmFmYXN0IHZlcnNpb24sIHdvcmtzIGFjcm9zcyBicm93c2Vyc1xuICAgICAgICAvLyB0aGUgYmlnIGRyYXdiYWNrIGlzIHRoYXQgdGhlIGNzcyB3b24ndCBiZSBlZGl0YWJsZSBpbiBkZXZ0b29sc1xuICAgICAgICBzaGVldC5pbnNlcnRSdWxlKHJ1bGUsIHNoZWV0LmNzc1J1bGVzLmxlbmd0aCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShydWxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5jdHIrKztcbiAgfTtcblxuICBfcHJvdG8uZmx1c2ggPSBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICB0aGlzLnRhZ3MuZm9yRWFjaChmdW5jdGlvbiAodGFnKSB7XG4gICAgICB2YXIgX3RhZyRwYXJlbnROb2RlO1xuXG4gICAgICByZXR1cm4gKF90YWckcGFyZW50Tm9kZSA9IHRhZy5wYXJlbnROb2RlKSA9PSBudWxsID8gdm9pZCAwIDogX3RhZyRwYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRhZyk7XG4gICAgfSk7XG4gICAgdGhpcy50YWdzID0gW107XG4gICAgdGhpcy5jdHIgPSAwO1xuICB9O1xuXG4gIHJldHVybiBTdHlsZVNoZWV0O1xufSgpO1xuXG5leHBvcnQgeyBTdHlsZVNoZWV0IH07XG4iLCJleHBvcnQgdmFyIE1TID0gJy1tcy0nXG5leHBvcnQgdmFyIE1PWiA9ICctbW96LSdcbmV4cG9ydCB2YXIgV0VCS0lUID0gJy13ZWJraXQtJ1xuXG5leHBvcnQgdmFyIENPTU1FTlQgPSAnY29tbSdcbmV4cG9ydCB2YXIgUlVMRVNFVCA9ICdydWxlJ1xuZXhwb3J0IHZhciBERUNMQVJBVElPTiA9ICdkZWNsJ1xuXG5leHBvcnQgdmFyIFBBR0UgPSAnQHBhZ2UnXG5leHBvcnQgdmFyIE1FRElBID0gJ0BtZWRpYSdcbmV4cG9ydCB2YXIgSU1QT1JUID0gJ0BpbXBvcnQnXG5leHBvcnQgdmFyIENIQVJTRVQgPSAnQGNoYXJzZXQnXG5leHBvcnQgdmFyIFZJRVdQT1JUID0gJ0B2aWV3cG9ydCdcbmV4cG9ydCB2YXIgU1VQUE9SVFMgPSAnQHN1cHBvcnRzJ1xuZXhwb3J0IHZhciBET0NVTUVOVCA9ICdAZG9jdW1lbnQnXG5leHBvcnQgdmFyIE5BTUVTUEFDRSA9ICdAbmFtZXNwYWNlJ1xuZXhwb3J0IHZhciBLRVlGUkFNRVMgPSAnQGtleWZyYW1lcydcbmV4cG9ydCB2YXIgRk9OVF9GQUNFID0gJ0Bmb250LWZhY2UnXG5leHBvcnQgdmFyIENPVU5URVJfU1RZTEUgPSAnQGNvdW50ZXItc3R5bGUnXG5leHBvcnQgdmFyIEZPTlRfRkVBVFVSRV9WQUxVRVMgPSAnQGZvbnQtZmVhdHVyZS12YWx1ZXMnXG5leHBvcnQgdmFyIExBWUVSID0gJ0BsYXllcidcbiIsIi8qKlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCB2YXIgYWJzID0gTWF0aC5hYnNcblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IHZhciBmcm9tID0gU3RyaW5nLmZyb21DaGFyQ29kZVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgdmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ25cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2ggKHZhbHVlLCBsZW5ndGgpIHtcblx0cmV0dXJuIGNoYXJhdCh2YWx1ZSwgMCkgXiA0NSA/ICgoKCgoKChsZW5ndGggPDwgMikgXiBjaGFyYXQodmFsdWUsIDApKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMSkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAyKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDMpIDogMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbSAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLnRyaW0oKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAqIEByZXR1cm4ge3N0cmluZz99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaCAodmFsdWUsIHBhdHRlcm4pIHtcblx0cmV0dXJuICh2YWx1ZSA9IHBhdHRlcm4uZXhlYyh2YWx1ZSkpID8gdmFsdWVbMF0gOiB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHsoc3RyaW5nfFJlZ0V4cCl9IHBhdHRlcm5cbiAqIEBwYXJhbSB7c3RyaW5nfSByZXBsYWNlbWVudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZSAodmFsdWUsIHBhdHRlcm4sIHJlcGxhY2VtZW50KSB7XG5cdHJldHVybiB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhvZiAodmFsdWUsIHNlYXJjaCkge1xuXHRyZXR1cm4gdmFsdWUuaW5kZXhPZihzZWFyY2gpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXJhdCAodmFsdWUsIGluZGV4KSB7XG5cdHJldHVybiB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSB8IDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBiZWdpblxuICogQHBhcmFtIHtudW1iZXJ9IGVuZFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RyICh2YWx1ZSwgYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gdmFsdWUuc2xpY2UoYmVnaW4sIGVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmxlbiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLmxlbmd0aFxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55W119IHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaXplb2YgKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS5sZW5ndGhcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEBwYXJhbSB7YW55W119IGFycmF5XG4gKiBAcmV0dXJuIHthbnl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmQgKHZhbHVlLCBhcnJheSkge1xuXHRyZXR1cm4gYXJyYXkucHVzaCh2YWx1ZSksIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJyYXlcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lIChhcnJheSwgY2FsbGJhY2spIHtcblx0cmV0dXJuIGFycmF5Lm1hcChjYWxsYmFjaykuam9pbignJylcbn1cbiIsImltcG9ydCB7ZnJvbSwgdHJpbSwgY2hhcmF0LCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCBhc3NpZ259IGZyb20gJy4vVXRpbGl0eS5qcydcblxuZXhwb3J0IHZhciBsaW5lID0gMVxuZXhwb3J0IHZhciBjb2x1bW4gPSAxXG5leHBvcnQgdmFyIGxlbmd0aCA9IDBcbmV4cG9ydCB2YXIgcG9zaXRpb24gPSAwXG5leHBvcnQgdmFyIGNoYXJhY3RlciA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVycyA9ICcnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdCB8IG51bGx9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0W10gfCBzdHJpbmd9IGNoaWxkcmVuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub2RlICh2YWx1ZSwgcm9vdCwgcGFyZW50LCB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aCkge1xuXHRyZXR1cm4ge3ZhbHVlOiB2YWx1ZSwgcm9vdDogcm9vdCwgcGFyZW50OiBwYXJlbnQsIHR5cGU6IHR5cGUsIHByb3BzOiBwcm9wcywgY2hpbGRyZW46IGNoaWxkcmVuLCBsaW5lOiBsaW5lLCBjb2x1bW46IGNvbHVtbiwgbGVuZ3RoOiBsZW5ndGgsIHJldHVybjogJyd9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weSAocm9vdCwgcHJvcHMpIHtcblx0cmV0dXJuIGFzc2lnbihub2RlKCcnLCBudWxsLCBudWxsLCAnJywgbnVsbCwgbnVsbCwgMCksIHJvb3QsIHtsZW5ndGg6IC1yb290Lmxlbmd0aH0sIHByb3BzKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXIgKCkge1xuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJldiAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uID4gMCA/IGNoYXJhdChjaGFyYWN0ZXJzLCAtLXBvc2l0aW9uKSA6IDBcblxuXHRpZiAoY29sdW1uLS0sIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZS0tXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHQgKCkge1xuXHRjaGFyYWN0ZXIgPSBwb3NpdGlvbiA8IGxlbmd0aCA/IGNoYXJhdChjaGFyYWN0ZXJzLCBwb3NpdGlvbisrKSA6IDBcblxuXHRpZiAoY29sdW1uKyssIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZSsrXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlZWsgKCkge1xuXHRyZXR1cm4gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhcmV0ICgpIHtcblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGljZSAoYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gc3Vic3RyKGNoYXJhY3RlcnMsIGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuICh0eXBlKSB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdC8vIFxcMCBcXHQgXFxuIFxcciBcXHMgd2hpdGVzcGFjZSB0b2tlblxuXHRcdGNhc2UgMDogY2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0cmV0dXJuIDVcblx0XHQvLyAhICsgLCAvID4gQCB+IGlzb2xhdGUgdG9rZW5cblx0XHRjYXNlIDMzOiBjYXNlIDQzOiBjYXNlIDQ0OiBjYXNlIDQ3OiBjYXNlIDYyOiBjYXNlIDY0OiBjYXNlIDEyNjpcblx0XHQvLyA7IHsgfSBicmVha3BvaW50IHRva2VuXG5cdFx0Y2FzZSA1OTogY2FzZSAxMjM6IGNhc2UgMTI1OlxuXHRcdFx0cmV0dXJuIDRcblx0XHQvLyA6IGFjY29tcGFuaWVkIHRva2VuXG5cdFx0Y2FzZSA1ODpcblx0XHRcdHJldHVybiAzXG5cdFx0Ly8gXCIgJyAoIFsgb3BlbmluZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA0MDogY2FzZSA5MTpcblx0XHRcdHJldHVybiAyXG5cdFx0Ly8gKSBdIGNsb3NpbmcgZGVsaW1pdCB0b2tlblxuXHRcdGNhc2UgNDE6IGNhc2UgOTM6XG5cdFx0XHRyZXR1cm4gMVxuXHR9XG5cblx0cmV0dXJuIDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBsaW5lID0gY29sdW1uID0gMSwgbGVuZ3RoID0gc3RybGVuKGNoYXJhY3RlcnMgPSB2YWx1ZSksIHBvc2l0aW9uID0gMCwgW11cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJzID0gJycsIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXQgKHR5cGUpIHtcblx0cmV0dXJuIHRyaW0oc2xpY2UocG9zaXRpb24gLSAxLCBkZWxpbWl0ZXIodHlwZSA9PT0gOTEgPyB0eXBlICsgMiA6IHR5cGUgPT09IDQwID8gdHlwZSArIDEgOiB0eXBlKSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyh0b2tlbml6ZXIoYWxsb2ModmFsdWUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hpdGVzcGFjZSAodHlwZSkge1xuXHR3aGlsZSAoY2hhcmFjdGVyID0gcGVlaygpKVxuXHRcdGlmIChjaGFyYWN0ZXIgPCAzMylcblx0XHRcdG5leHQoKVxuXHRcdGVsc2Vcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuIHRva2VuKHR5cGUpID4gMiB8fCB0b2tlbihjaGFyYWN0ZXIpID4gMyA/ICcnIDogJyAnXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemVyIChjaGlsZHJlbikge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAodG9rZW4oY2hhcmFjdGVyKSkge1xuXHRcdFx0Y2FzZSAwOiBhcHBlbmQoaWRlbnRpZmllcihwb3NpdGlvbiAtIDEpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgMjogYXBwZW5kKGRlbGltaXQoY2hhcmFjdGVyKSwgY2hpbGRyZW4pXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRkZWZhdWx0OiBhcHBlbmQoZnJvbShjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHR9XG5cblx0cmV0dXJuIGNoaWxkcmVuXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gY291bnRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwaW5nIChpbmRleCwgY291bnQpIHtcblx0d2hpbGUgKC0tY291bnQgJiYgbmV4dCgpKVxuXHRcdC8vIG5vdCAwLTkgQS1GIGEtZlxuXHRcdGlmIChjaGFyYWN0ZXIgPCA0OCB8fCBjaGFyYWN0ZXIgPiAxMDIgfHwgKGNoYXJhY3RlciA+IDU3ICYmIGNoYXJhY3RlciA8IDY1KSB8fCAoY2hhcmFjdGVyID4gNzAgJiYgY2hhcmFjdGVyIDwgOTcpKVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIGNhcmV0KCkgKyAoY291bnQgPCA2ICYmIHBlZWsoKSA9PSAzMiAmJiBuZXh0KCkgPT0gMzIpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ZXIgKHR5cGUpIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHRzd2l0Y2ggKGNoYXJhY3Rlcikge1xuXHRcdFx0Ly8gXSApIFwiICdcblx0XHRcdGNhc2UgdHlwZTpcblx0XHRcdFx0cmV0dXJuIHBvc2l0aW9uXG5cdFx0XHQvLyBcIiAnXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OlxuXHRcdFx0XHRpZiAodHlwZSAhPT0gMzQgJiYgdHlwZSAhPT0gMzkpXG5cdFx0XHRcdFx0ZGVsaW1pdGVyKGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmICh0eXBlID09PSA0MSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIodHlwZSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRuZXh0KClcblx0XHRcdFx0YnJlYWtcblx0XHR9XG5cblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudGVyICh0eXBlLCBpbmRleCkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdC8vIC8vXG5cdFx0aWYgKHR5cGUgKyBjaGFyYWN0ZXIgPT09IDQ3ICsgMTApXG5cdFx0XHRicmVha1xuXHRcdC8vIC8qXG5cdFx0ZWxzZSBpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDIgKyA0MiAmJiBwZWVrKCkgPT09IDQ3KVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gJy8qJyArIHNsaWNlKGluZGV4LCBwb3NpdGlvbiAtIDEpICsgJyonICsgZnJvbSh0eXBlID09PSA0NyA/IHR5cGUgOiBuZXh0KCkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyIChpbmRleCkge1xuXHR3aGlsZSAoIXRva2VuKHBlZWsoKSkpXG5cdFx0bmV4dCgpXG5cblx0cmV0dXJuIHNsaWNlKGluZGV4LCBwb3NpdGlvbilcbn1cbiIsImltcG9ydCB7Q09NTUVOVCwgUlVMRVNFVCwgREVDTEFSQVRJT059IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7YWJzLCBjaGFyYXQsIHRyaW0sIGZyb20sIHNpemVvZiwgc3RybGVuLCBzdWJzdHIsIGFwcGVuZCwgcmVwbGFjZSwgaW5kZXhvZn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuaW1wb3J0IHtub2RlLCBjaGFyLCBwcmV2LCBuZXh0LCBwZWVrLCBjYXJldCwgYWxsb2MsIGRlYWxsb2MsIGRlbGltaXQsIHdoaXRlc3BhY2UsIGVzY2FwaW5nLCBpZGVudGlmaWVyLCBjb21tZW50ZXJ9IGZyb20gJy4vVG9rZW5pemVyLmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7b2JqZWN0W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyhwYXJzZSgnJywgbnVsbCwgbnVsbCwgbnVsbCwgWycnXSwgdmFsdWUgPSBhbGxvYyh2YWx1ZSksIDAsIFswXSwgdmFsdWUpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNldHNcbiAqIEBwYXJhbSB7bnVtYmVyW119IHBzZXVkb1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBkZWNsYXJhdGlvbnNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBydWxlLCBydWxlcywgcnVsZXNldHMsIHBzZXVkbywgcG9pbnRzLCBkZWNsYXJhdGlvbnMpIHtcblx0dmFyIGluZGV4ID0gMFxuXHR2YXIgb2Zmc2V0ID0gMFxuXHR2YXIgbGVuZ3RoID0gcHNldWRvXG5cdHZhciBhdHJ1bGUgPSAwXG5cdHZhciBwcm9wZXJ0eSA9IDBcblx0dmFyIHByZXZpb3VzID0gMFxuXHR2YXIgdmFyaWFibGUgPSAxXG5cdHZhciBzY2FubmluZyA9IDFcblx0dmFyIGFtcGVyc2FuZCA9IDFcblx0dmFyIGNoYXJhY3RlciA9IDBcblx0dmFyIHR5cGUgPSAnJ1xuXHR2YXIgcHJvcHMgPSBydWxlc1xuXHR2YXIgY2hpbGRyZW4gPSBydWxlc2V0c1xuXHR2YXIgcmVmZXJlbmNlID0gcnVsZVxuXHR2YXIgY2hhcmFjdGVycyA9IHR5cGVcblxuXHR3aGlsZSAoc2Nhbm5pbmcpXG5cdFx0c3dpdGNoIChwcmV2aW91cyA9IGNoYXJhY3RlciwgY2hhcmFjdGVyID0gbmV4dCgpKSB7XG5cdFx0XHQvLyAoXG5cdFx0XHRjYXNlIDQwOlxuXHRcdFx0XHRpZiAocHJldmlvdXMgIT0gMTA4ICYmIGNoYXJhdChjaGFyYWN0ZXJzLCBsZW5ndGggLSAxKSA9PSA1OCkge1xuXHRcdFx0XHRcdGlmIChpbmRleG9mKGNoYXJhY3RlcnMgKz0gcmVwbGFjZShkZWxpbWl0KGNoYXJhY3RlciksICcmJywgJyZcXGYnKSwgJyZcXGYnKSAhPSAtMSlcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IC0xXG5cdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0fVxuXHRcdFx0Ly8gXCIgJyBbXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OiBjYXNlIDkxOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQoY2hhcmFjdGVyKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFx0IFxcbiBcXHIgXFxzXG5cdFx0XHRjYXNlIDk6IGNhc2UgMTA6IGNhc2UgMTM6IGNhc2UgMzI6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gd2hpdGVzcGFjZShwcmV2aW91cylcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IGVzY2FwaW5nKGNhcmV0KCkgLSAxLCA3KVxuXHRcdFx0XHRjb250aW51ZVxuXHRcdFx0Ly8gL1xuXHRcdFx0Y2FzZSA0Nzpcblx0XHRcdFx0c3dpdGNoIChwZWVrKCkpIHtcblx0XHRcdFx0XHRjYXNlIDQyOiBjYXNlIDQ3OlxuXHRcdFx0XHRcdFx0YXBwZW5kKGNvbW1lbnQoY29tbWVudGVyKG5leHQoKSwgY2FyZXQoKSksIHJvb3QsIHBhcmVudCksIGRlY2xhcmF0aW9ucylcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGNoYXJhY3RlcnMgKz0gJy8nXG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIHtcblx0XHRcdGNhc2UgMTIzICogdmFyaWFibGU6XG5cdFx0XHRcdHBvaW50c1tpbmRleCsrXSA9IHN0cmxlbihjaGFyYWN0ZXJzKSAqIGFtcGVyc2FuZFxuXHRcdFx0Ly8gfSA7IFxcMFxuXHRcdFx0Y2FzZSAxMjUgKiB2YXJpYWJsZTogY2FzZSA1OTogY2FzZSAwOlxuXHRcdFx0XHRzd2l0Y2ggKGNoYXJhY3Rlcikge1xuXHRcdFx0XHRcdC8vIFxcMCB9XG5cdFx0XHRcdFx0Y2FzZSAwOiBjYXNlIDEyNTogc2Nhbm5pbmcgPSAwXG5cdFx0XHRcdFx0Ly8gO1xuXHRcdFx0XHRcdGNhc2UgNTkgKyBvZmZzZXQ6IGlmIChhbXBlcnNhbmQgPT0gLTEpIGNoYXJhY3RlcnMgPSByZXBsYWNlKGNoYXJhY3RlcnMsIC9cXGYvZywgJycpXG5cdFx0XHRcdFx0XHRpZiAocHJvcGVydHkgPiAwICYmIChzdHJsZW4oY2hhcmFjdGVycykgLSBsZW5ndGgpKVxuXHRcdFx0XHRcdFx0XHRhcHBlbmQocHJvcGVydHkgPiAzMiA/IGRlY2xhcmF0aW9uKGNoYXJhY3RlcnMgKyAnOycsIHJ1bGUsIHBhcmVudCwgbGVuZ3RoIC0gMSkgOiBkZWNsYXJhdGlvbihyZXBsYWNlKGNoYXJhY3RlcnMsICcgJywgJycpICsgJzsnLCBydWxlLCBwYXJlbnQsIGxlbmd0aCAtIDIpLCBkZWNsYXJhdGlvbnMpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIEAgO1xuXHRcdFx0XHRcdGNhc2UgNTk6IGNoYXJhY3RlcnMgKz0gJzsnXG5cdFx0XHRcdFx0Ly8geyBydWxlL2F0LXJ1bGVcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0YXBwZW5kKHJlZmVyZW5jZSA9IHJ1bGVzZXQoY2hhcmFjdGVycywgcm9vdCwgcGFyZW50LCBpbmRleCwgb2Zmc2V0LCBydWxlcywgcG9pbnRzLCB0eXBlLCBwcm9wcyA9IFtdLCBjaGlsZHJlbiA9IFtdLCBsZW5ndGgpLCBydWxlc2V0cylcblxuXHRcdFx0XHRcdFx0aWYgKGNoYXJhY3RlciA9PT0gMTIzKVxuXHRcdFx0XHRcdFx0XHRpZiAob2Zmc2V0ID09PSAwKVxuXHRcdFx0XHRcdFx0XHRcdHBhcnNlKGNoYXJhY3RlcnMsIHJvb3QsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBwcm9wcywgcnVsZXNldHMsIGxlbmd0aCwgcG9pbnRzLCBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoYXRydWxlID09PSA5OSAmJiBjaGFyYXQoY2hhcmFjdGVycywgMykgPT09IDExMCA/IDEwMCA6IGF0cnVsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gZCBsIG0gc1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMDA6IGNhc2UgMTA4OiBjYXNlIDEwOTogY2FzZSAxMTU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlKHZhbHVlLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcnVsZSAmJiBhcHBlbmQocnVsZXNldCh2YWx1ZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIDAsIDAsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHJ1bGVzLCBwcm9wcyA9IFtdLCBsZW5ndGgpLCBjaGlsZHJlbiksIHJ1bGVzLCBjaGlsZHJlbiwgbGVuZ3RoLCBwb2ludHMsIHJ1bGUgPyBwcm9wcyA6IGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyc2UoY2hhcmFjdGVycywgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgWycnXSwgY2hpbGRyZW4sIDAsIHBvaW50cywgY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aW5kZXggPSBvZmZzZXQgPSBwcm9wZXJ0eSA9IDAsIHZhcmlhYmxlID0gYW1wZXJzYW5kID0gMSwgdHlwZSA9IGNoYXJhY3RlcnMgPSAnJywgbGVuZ3RoID0gcHNldWRvXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyA6XG5cdFx0XHRjYXNlIDU4OlxuXHRcdFx0XHRsZW5ndGggPSAxICsgc3RybGVuKGNoYXJhY3RlcnMpLCBwcm9wZXJ0eSA9IHByZXZpb3VzXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZiAodmFyaWFibGUgPCAxKVxuXHRcdFx0XHRcdGlmIChjaGFyYWN0ZXIgPT0gMTIzKVxuXHRcdFx0XHRcdFx0LS12YXJpYWJsZVxuXHRcdFx0XHRcdGVsc2UgaWYgKGNoYXJhY3RlciA9PSAxMjUgJiYgdmFyaWFibGUrKyA9PSAwICYmIHByZXYoKSA9PSAxMjUpXG5cdFx0XHRcdFx0XHRjb250aW51ZVxuXG5cdFx0XHRcdHN3aXRjaCAoY2hhcmFjdGVycyArPSBmcm9tKGNoYXJhY3RlciksIGNoYXJhY3RlciAqIHZhcmlhYmxlKSB7XG5cdFx0XHRcdFx0Ly8gJlxuXHRcdFx0XHRcdGNhc2UgMzg6XG5cdFx0XHRcdFx0XHRhbXBlcnNhbmQgPSBvZmZzZXQgPiAwID8gMSA6IChjaGFyYWN0ZXJzICs9ICdcXGYnLCAtMSlcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gLFxuXHRcdFx0XHRcdGNhc2UgNDQ6XG5cdFx0XHRcdFx0XHRwb2ludHNbaW5kZXgrK10gPSAoc3RybGVuKGNoYXJhY3RlcnMpIC0gMSkgKiBhbXBlcnNhbmQsIGFtcGVyc2FuZCA9IDFcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gQFxuXHRcdFx0XHRcdGNhc2UgNjQ6XG5cdFx0XHRcdFx0XHQvLyAtXG5cdFx0XHRcdFx0XHRpZiAocGVlaygpID09PSA0NSlcblx0XHRcdFx0XHRcdFx0Y2hhcmFjdGVycyArPSBkZWxpbWl0KG5leHQoKSlcblxuXHRcdFx0XHRcdFx0YXRydWxlID0gcGVlaygpLCBvZmZzZXQgPSBsZW5ndGggPSBzdHJsZW4odHlwZSA9IGNoYXJhY3RlcnMgKz0gaWRlbnRpZmllcihjYXJldCgpKSksIGNoYXJhY3RlcisrXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIC1cblx0XHRcdFx0XHRjYXNlIDQ1OlxuXHRcdFx0XHRcdFx0aWYgKHByZXZpb3VzID09PSA0NSAmJiBzdHJsZW4oY2hhcmFjdGVycykgPT0gMilcblx0XHRcdFx0XHRcdFx0dmFyaWFibGUgPSAwXG5cdFx0XHRcdH1cblx0XHR9XG5cblx0cmV0dXJuIHJ1bGVzZXRzXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldFxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNcbiAqIEBwYXJhbSB7bnVtYmVyW119IHBvaW50c1xuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nW119IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBjaGlsZHJlblxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNldCAodmFsdWUsIHJvb3QsIHBhcmVudCwgaW5kZXgsIG9mZnNldCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgpIHtcblx0dmFyIHBvc3QgPSBvZmZzZXQgLSAxXG5cdHZhciBydWxlID0gb2Zmc2V0ID09PSAwID8gcnVsZXMgOiBbJyddXG5cdHZhciBzaXplID0gc2l6ZW9mKHJ1bGUpXG5cblx0Zm9yICh2YXIgaSA9IDAsIGogPSAwLCBrID0gMDsgaSA8IGluZGV4OyArK2kpXG5cdFx0Zm9yICh2YXIgeCA9IDAsIHkgPSBzdWJzdHIodmFsdWUsIHBvc3QgKyAxLCBwb3N0ID0gYWJzKGogPSBwb2ludHNbaV0pKSwgeiA9IHZhbHVlOyB4IDwgc2l6ZTsgKyt4KVxuXHRcdFx0aWYgKHogPSB0cmltKGogPiAwID8gcnVsZVt4XSArICcgJyArIHkgOiByZXBsYWNlKHksIC8mXFxmL2csIHJ1bGVbeF0pKSlcblx0XHRcdFx0cHJvcHNbaysrXSA9IHpcblxuXHRyZXR1cm4gbm9kZSh2YWx1ZSwgcm9vdCwgcGFyZW50LCBvZmZzZXQgPT09IDAgPyBSVUxFU0VUIDogdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1lbnQgKHZhbHVlLCByb290LCBwYXJlbnQpIHtcblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgQ09NTUVOVCwgZnJvbShjaGFyKCkpLCBzdWJzdHIodmFsdWUsIDIsIC0yKSwgMClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyYXRpb24gKHZhbHVlLCByb290LCBwYXJlbnQsIGxlbmd0aCkge1xuXHRyZXR1cm4gbm9kZSh2YWx1ZSwgcm9vdCwgcGFyZW50LCBERUNMQVJBVElPTiwgc3Vic3RyKHZhbHVlLCAwLCBsZW5ndGgpLCBzdWJzdHIodmFsdWUsIGxlbmd0aCArIDEsIC0xKSwgbGVuZ3RoKVxufVxuIiwiaW1wb3J0IHtJTVBPUlQsIExBWUVSLCBDT01NRU5ULCBSVUxFU0VULCBERUNMQVJBVElPTiwgS0VZRlJBTUVTfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge3N0cmxlbiwgc2l6ZW9mfSBmcm9tICcuL1V0aWxpdHkuanMnXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUgKGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHR2YXIgb3V0cHV0ID0gJydcblx0dmFyIGxlbmd0aCA9IHNpemVvZihjaGlsZHJlbilcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKVxuXHRcdG91dHB1dCArPSBjYWxsYmFjayhjaGlsZHJlbltpXSwgaSwgY2hpbGRyZW4sIGNhbGxiYWNrKSB8fCAnJ1xuXG5cdHJldHVybiBvdXRwdXRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdGNhc2UgTEFZRVI6IGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgYnJlYWtcblx0XHRjYXNlIElNUE9SVDogY2FzZSBERUNMQVJBVElPTjogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC5yZXR1cm4gfHwgZWxlbWVudC52YWx1ZVxuXHRcdGNhc2UgQ09NTUVOVDogcmV0dXJuICcnXG5cdFx0Y2FzZSBLRVlGUkFNRVM6IHJldHVybiBlbGVtZW50LnJldHVybiA9IGVsZW1lbnQudmFsdWUgKyAneycgKyBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spICsgJ30nXG5cdFx0Y2FzZSBSVUxFU0VUOiBlbGVtZW50LnZhbHVlID0gZWxlbWVudC5wcm9wcy5qb2luKCcsJylcblx0fVxuXG5cdHJldHVybiBzdHJsZW4oY2hpbGRyZW4gPSBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spKSA/IGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIGNoaWxkcmVuICsgJ30nIDogJydcbn1cbiIsImltcG9ydCB7TVMsIE1PWiwgV0VCS0lULCBSVUxFU0VULCBLRVlGUkFNRVMsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge21hdGNoLCBjaGFyYXQsIHN1YnN0ciwgc3RybGVuLCBzaXplb2YsIHJlcGxhY2UsIGNvbWJpbmV9IGZyb20gJy4vVXRpbGl0eS5qcydcbmltcG9ydCB7Y29weSwgdG9rZW5pemV9IGZyb20gJy4vVG9rZW5pemVyLmpzJ1xuaW1wb3J0IHtzZXJpYWxpemV9IGZyb20gJy4vU2VyaWFsaXplci5qcydcbmltcG9ydCB7cHJlZml4fSBmcm9tICcuL1ByZWZpeGVyLmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb25bXX0gY29sbGVjdGlvblxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaWRkbGV3YXJlIChjb2xsZWN0aW9uKSB7XG5cdHZhciBsZW5ndGggPSBzaXplb2YoY29sbGVjdGlvbilcblxuXHRyZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcblx0XHR2YXIgb3V0cHV0ID0gJydcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspXG5cdFx0XHRvdXRwdXQgKz0gY29sbGVjdGlvbltpXShlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB8fCAnJ1xuXG5cdFx0cmV0dXJuIG91dHB1dFxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNoZWV0IChjYWxsYmFjaykge1xuXHRyZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcblx0XHRpZiAoIWVsZW1lbnQucm9vdClcblx0XHRcdGlmIChlbGVtZW50ID0gZWxlbWVudC5yZXR1cm4pXG5cdFx0XHRcdGNhbGxiYWNrKGVsZW1lbnQpXG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeGVyIChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdGlmIChlbGVtZW50Lmxlbmd0aCA+IC0xKVxuXHRcdGlmICghZWxlbWVudC5yZXR1cm4pXG5cdFx0XHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdFx0XHRjYXNlIERFQ0xBUkFUSU9OOiBlbGVtZW50LnJldHVybiA9IHByZWZpeChlbGVtZW50LnZhbHVlLCBlbGVtZW50Lmxlbmd0aCwgY2hpbGRyZW4pXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdGNhc2UgS0VZRlJBTUVTOlxuXHRcdFx0XHRcdHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge3ZhbHVlOiByZXBsYWNlKGVsZW1lbnQudmFsdWUsICdAJywgJ0AnICsgV0VCS0lUKX0pXSwgY2FsbGJhY2spXG5cdFx0XHRcdGNhc2UgUlVMRVNFVDpcblx0XHRcdFx0XHRpZiAoZWxlbWVudC5sZW5ndGgpXG5cdFx0XHRcdFx0XHRyZXR1cm4gY29tYmluZShlbGVtZW50LnByb3BzLCBmdW5jdGlvbiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChtYXRjaCh2YWx1ZSwgLyg6OnBsYWNcXHcrfDpyZWFkLVxcdyspLykpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyA6cmVhZC0ob25seXx3cml0ZSlcblx0XHRcdFx0XHRcdFx0XHRjYXNlICc6cmVhZC1vbmx5JzogY2FzZSAnOnJlYWQtd3JpdGUnOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihyZWFkLVxcdyspLywgJzonICsgTU9aICsgJyQxJyldfSldLCBjYWxsYmFjaylcblx0XHRcdFx0XHRcdFx0XHQvLyA6cGxhY2Vob2xkZXJcblx0XHRcdFx0XHRcdFx0XHRjYXNlICc6OnBsYWNlaG9sZGVyJzpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzZXJpYWxpemUoW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIFdFQktJVCArICdpbnB1dC0kMScpXX0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIE1PWiArICckMScpXX0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sIE1TICsgJ2lucHV0LSQxJyldfSlcblx0XHRcdFx0XHRcdFx0XHRcdF0sIGNhbGxiYWNrKVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0cmV0dXJuICcnXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lc3BhY2UgKGVsZW1lbnQpIHtcblx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRjYXNlIFJVTEVTRVQ6XG5cdFx0XHRlbGVtZW50LnByb3BzID0gZWxlbWVudC5wcm9wcy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG5cdFx0XHRcdHJldHVybiBjb21iaW5lKHRva2VuaXplKHZhbHVlKSwgZnVuY3Rpb24gKHZhbHVlLCBpbmRleCwgY2hpbGRyZW4pIHtcblx0XHRcdFx0XHRzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgMCkpIHtcblx0XHRcdFx0XHRcdC8vIFxcZlxuXHRcdFx0XHRcdFx0Y2FzZSAxMjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHN1YnN0cih2YWx1ZSwgMSwgc3RybGVuKHZhbHVlKSlcblx0XHRcdFx0XHRcdC8vIFxcMCAoICsgPiB+XG5cdFx0XHRcdFx0XHRjYXNlIDA6IGNhc2UgNDA6IGNhc2UgNDM6IGNhc2UgNjI6IGNhc2UgMTI2OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHRcdC8vIDpcblx0XHRcdFx0XHRcdGNhc2UgNTg6XG5cdFx0XHRcdFx0XHRcdGlmIChjaGlsZHJlblsrK2luZGV4XSA9PT0gJ2dsb2JhbCcpXG5cdFx0XHRcdFx0XHRcdFx0Y2hpbGRyZW5baW5kZXhdID0gJycsIGNoaWxkcmVuWysraW5kZXhdID0gJ1xcZicgKyBzdWJzdHIoY2hpbGRyZW5baW5kZXhdLCBpbmRleCA9IDEsIC0xKVxuXHRcdFx0XHRcdFx0Ly8gXFxzXG5cdFx0XHRcdFx0XHRjYXNlIDMyOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaW5kZXggPT09IDEgPyAnJyA6IHZhbHVlXG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGluZGV4KSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOiBlbGVtZW50ID0gdmFsdWVcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzaXplb2YoY2hpbGRyZW4pID4gMSA/ICcnIDogdmFsdWVcblx0XHRcdFx0XHRcdFx0XHRjYXNlIGluZGV4ID0gc2l6ZW9mKGNoaWxkcmVuKSAtIDE6IGNhc2UgMjpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBpbmRleCA9PT0gMiA/IHZhbHVlICsgZWxlbWVudCArIGVsZW1lbnQgOiB2YWx1ZSArIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHR9XG59XG4iLCJ2YXIgd2Vha01lbW9pemUgPSBmdW5jdGlvbiB3ZWFrTWVtb2l6ZShmdW5jKSB7XG4gIHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgaWYgKGNhY2hlLmhhcyhhcmcpKSB7XG4gICAgICAvLyBVc2Ugbm9uLW51bGwgYXNzZXJ0aW9uIGJlY2F1c2Ugd2UganVzdCBjaGVja2VkIHRoYXQgdGhlIGNhY2hlIGBoYXNgIGl0XG4gICAgICAvLyBUaGlzIGFsbG93cyB1cyB0byByZW1vdmUgYHVuZGVmaW5lZGAgZnJvbSB0aGUgcmV0dXJuIHZhbHVlXG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGFyZyk7XG4gICAgfVxuXG4gICAgdmFyIHJldCA9IGZ1bmMoYXJnKTtcbiAgICBjYWNoZS5zZXQoYXJnLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG59O1xuXG5leHBvcnQgeyB3ZWFrTWVtb2l6ZSBhcyBkZWZhdWx0IH07XG4iLCJmdW5jdGlvbiBtZW1vaXplKGZuKSB7XG4gIHZhciBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgaWYgKGNhY2hlW2FyZ10gPT09IHVuZGVmaW5lZCkgY2FjaGVbYXJnXSA9IGZuKGFyZyk7XG4gICAgcmV0dXJuIGNhY2hlW2FyZ107XG4gIH07XG59XG5cbmV4cG9ydCB7IG1lbW9pemUgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHsgU3R5bGVTaGVldCB9IGZyb20gJ0BlbW90aW9uL3NoZWV0JztcbmltcG9ydCB7IGRlYWxsb2MsIGFsbG9jLCBuZXh0LCB0b2tlbiwgZnJvbSwgcGVlaywgZGVsaW1pdCwgc2xpY2UsIHBvc2l0aW9uLCBSVUxFU0VULCBjb21iaW5lLCBtYXRjaCwgc2VyaWFsaXplLCBjb3B5LCByZXBsYWNlLCBXRUJLSVQsIE1PWiwgTVMsIEtFWUZSQU1FUywgREVDTEFSQVRJT04sIGhhc2gsIGNoYXJhdCwgc3RybGVuLCBpbmRleG9mLCBzdHJpbmdpZnksIHJ1bGVzaGVldCwgbWlkZGxld2FyZSwgY29tcGlsZSB9IGZyb20gJ3N0eWxpcyc7XG5pbXBvcnQgJ0BlbW90aW9uL3dlYWstbWVtb2l6ZSc7XG5pbXBvcnQgJ0BlbW90aW9uL21lbW9pemUnO1xuXG52YXIgaWRlbnRpZmllcldpdGhQb2ludFRyYWNraW5nID0gZnVuY3Rpb24gaWRlbnRpZmllcldpdGhQb2ludFRyYWNraW5nKGJlZ2luLCBwb2ludHMsIGluZGV4KSB7XG4gIHZhciBwcmV2aW91cyA9IDA7XG4gIHZhciBjaGFyYWN0ZXIgPSAwO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgcHJldmlvdXMgPSBjaGFyYWN0ZXI7XG4gICAgY2hhcmFjdGVyID0gcGVlaygpOyAvLyAmXFxmXG5cbiAgICBpZiAocHJldmlvdXMgPT09IDM4ICYmIGNoYXJhY3RlciA9PT0gMTIpIHtcbiAgICAgIHBvaW50c1tpbmRleF0gPSAxO1xuICAgIH1cblxuICAgIGlmICh0b2tlbihjaGFyYWN0ZXIpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBuZXh0KCk7XG4gIH1cblxuICByZXR1cm4gc2xpY2UoYmVnaW4sIHBvc2l0aW9uKTtcbn07XG5cbnZhciB0b1J1bGVzID0gZnVuY3Rpb24gdG9SdWxlcyhwYXJzZWQsIHBvaW50cykge1xuICAvLyBwcmV0ZW5kIHdlJ3ZlIHN0YXJ0ZWQgd2l0aCBhIGNvbW1hXG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgY2hhcmFjdGVyID0gNDQ7XG5cbiAgZG8ge1xuICAgIHN3aXRjaCAodG9rZW4oY2hhcmFjdGVyKSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICAvLyAmXFxmXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IDM4ICYmIHBlZWsoKSA9PT0gMTIpIHtcbiAgICAgICAgICAvLyB0aGlzIGlzIG5vdCAxMDAlIGNvcnJlY3QsIHdlIGRvbid0IGFjY291bnQgZm9yIGxpdGVyYWwgc2VxdWVuY2VzIGhlcmUgLSBsaWtlIGZvciBleGFtcGxlIHF1b3RlZCBzdHJpbmdzXG4gICAgICAgICAgLy8gc3R5bGlzIGluc2VydHMgXFxmIGFmdGVyICYgdG8ga25vdyB3aGVuICYgd2hlcmUgaXQgc2hvdWxkIHJlcGxhY2UgdGhpcyBzZXF1ZW5jZSB3aXRoIHRoZSBjb250ZXh0IHNlbGVjdG9yXG4gICAgICAgICAgLy8gYW5kIHdoZW4gaXQgc2hvdWxkIGp1c3QgY29uY2F0ZW5hdGUgdGhlIG91dGVyIGFuZCBpbm5lciBzZWxlY3RvcnNcbiAgICAgICAgICAvLyBpdCdzIHZlcnkgdW5saWtlbHkgZm9yIHRoaXMgc2VxdWVuY2UgdG8gYWN0dWFsbHkgYXBwZWFyIGluIGEgZGlmZmVyZW50IGNvbnRleHQsIHNvIHdlIGp1c3QgbGV2ZXJhZ2UgdGhpcyBmYWN0IGhlcmVcbiAgICAgICAgICBwb2ludHNbaW5kZXhdID0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcnNlZFtpbmRleF0gKz0gaWRlbnRpZmllcldpdGhQb2ludFRyYWNraW5nKHBvc2l0aW9uIC0gMSwgcG9pbnRzLCBpbmRleCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDI6XG4gICAgICAgIHBhcnNlZFtpbmRleF0gKz0gZGVsaW1pdChjaGFyYWN0ZXIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSA0OlxuICAgICAgICAvLyBjb21tYVxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSA0NCkge1xuICAgICAgICAgIC8vIGNvbG9uXG4gICAgICAgICAgcGFyc2VkWysraW5kZXhdID0gcGVlaygpID09PSA1OCA/ICcmXFxmJyA6ICcnO1xuICAgICAgICAgIHBvaW50c1tpbmRleF0gPSBwYXJzZWRbaW5kZXhdLmxlbmd0aDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAvLyBmYWxsdGhyb3VnaFxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBwYXJzZWRbaW5kZXhdICs9IGZyb20oY2hhcmFjdGVyKTtcbiAgICB9XG4gIH0gd2hpbGUgKGNoYXJhY3RlciA9IG5leHQoKSk7XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG5cbnZhciBnZXRSdWxlcyA9IGZ1bmN0aW9uIGdldFJ1bGVzKHZhbHVlLCBwb2ludHMpIHtcbiAgcmV0dXJuIGRlYWxsb2ModG9SdWxlcyhhbGxvYyh2YWx1ZSksIHBvaW50cykpO1xufTsgLy8gV2Vha1NldCB3b3VsZCBiZSBtb3JlIGFwcHJvcHJpYXRlLCBidXQgb25seSBXZWFrTWFwIGlzIHN1cHBvcnRlZCBpbiBJRTExXG5cblxudmFyIGZpeGVkRWxlbWVudHMgPSAvKiAjX19QVVJFX18gKi9uZXcgV2Vha01hcCgpO1xudmFyIGNvbXBhdCA9IGZ1bmN0aW9uIGNvbXBhdChlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50LnR5cGUgIT09ICdydWxlJyB8fCAhZWxlbWVudC5wYXJlbnQgfHwgLy8gcG9zaXRpdmUgLmxlbmd0aCBpbmRpY2F0ZXMgdGhhdCB0aGlzIHJ1bGUgY29udGFpbnMgcHNldWRvXG4gIC8vIG5lZ2F0aXZlIC5sZW5ndGggaW5kaWNhdGVzIHRoYXQgdGhpcyBydWxlIGhhcyBiZWVuIGFscmVhZHkgcHJlZml4ZWRcbiAgZWxlbWVudC5sZW5ndGggPCAxKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHZhbHVlID0gZWxlbWVudC52YWx1ZTtcbiAgdmFyIHBhcmVudCA9IGVsZW1lbnQucGFyZW50O1xuICB2YXIgaXNJbXBsaWNpdFJ1bGUgPSBlbGVtZW50LmNvbHVtbiA9PT0gcGFyZW50LmNvbHVtbiAmJiBlbGVtZW50LmxpbmUgPT09IHBhcmVudC5saW5lO1xuXG4gIHdoaWxlIChwYXJlbnQudHlwZSAhPT0gJ3J1bGUnKSB7XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuO1xuICB9IC8vIHNob3J0LWNpcmN1aXQgZm9yIHRoZSBzaW1wbGVzdCBjYXNlXG5cblxuICBpZiAoZWxlbWVudC5wcm9wcy5sZW5ndGggPT09IDEgJiYgdmFsdWUuY2hhckNvZGVBdCgwKSAhPT0gNThcbiAgLyogY29sb24gKi9cbiAgJiYgIWZpeGVkRWxlbWVudHMuZ2V0KHBhcmVudCkpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gaWYgdGhpcyBpcyBhbiBpbXBsaWNpdGx5IGluc2VydGVkIHJ1bGUgKHRoZSBvbmUgZWFnZXJseSBpbnNlcnRlZCBhdCB0aGUgZWFjaCBuZXcgbmVzdGVkIGxldmVsKVxuICAvLyB0aGVuIHRoZSBwcm9wcyBoYXMgYWxyZWFkeSBiZWVuIG1hbmlwdWxhdGVkIGJlZm9yZWhhbmQgYXMgdGhleSB0aGF0IGFycmF5IGlzIHNoYXJlZCBiZXR3ZWVuIGl0IGFuZCBpdHMgXCJydWxlIHBhcmVudFwiXG5cblxuICBpZiAoaXNJbXBsaWNpdFJ1bGUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmaXhlZEVsZW1lbnRzLnNldChlbGVtZW50LCB0cnVlKTtcbiAgdmFyIHBvaW50cyA9IFtdO1xuICB2YXIgcnVsZXMgPSBnZXRSdWxlcyh2YWx1ZSwgcG9pbnRzKTtcbiAgdmFyIHBhcmVudFJ1bGVzID0gcGFyZW50LnByb3BzO1xuXG4gIGZvciAodmFyIGkgPSAwLCBrID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBwYXJlbnRSdWxlcy5sZW5ndGg7IGorKywgaysrKSB7XG4gICAgICBlbGVtZW50LnByb3BzW2tdID0gcG9pbnRzW2ldID8gcnVsZXNbaV0ucmVwbGFjZSgvJlxcZi9nLCBwYXJlbnRSdWxlc1tqXSkgOiBwYXJlbnRSdWxlc1tqXSArIFwiIFwiICsgcnVsZXNbaV07XG4gICAgfVxuICB9XG59O1xudmFyIHJlbW92ZUxhYmVsID0gZnVuY3Rpb24gcmVtb3ZlTGFiZWwoZWxlbWVudCkge1xuICBpZiAoZWxlbWVudC50eXBlID09PSAnZGVjbCcpIHtcbiAgICB2YXIgdmFsdWUgPSBlbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKCAvLyBjaGFyY29kZSBmb3IgbFxuICAgIHZhbHVlLmNoYXJDb2RlQXQoMCkgPT09IDEwOCAmJiAvLyBjaGFyY29kZSBmb3IgYlxuICAgIHZhbHVlLmNoYXJDb2RlQXQoMikgPT09IDk4KSB7XG4gICAgICAvLyB0aGlzIGlnbm9yZXMgbGFiZWxcbiAgICAgIGVsZW1lbnRbXCJyZXR1cm5cIl0gPSAnJztcbiAgICAgIGVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cbn07XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLWZhbGx0aHJvdWdoICovXG5cbmZ1bmN0aW9uIHByZWZpeCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHN3aXRjaCAoaGFzaCh2YWx1ZSwgbGVuZ3RoKSkge1xuICAgIC8vIGNvbG9yLWFkanVzdFxuICAgIGNhc2UgNTEwMzpcbiAgICAgIHJldHVybiBXRUJLSVQgKyAncHJpbnQtJyArIHZhbHVlICsgdmFsdWU7XG4gICAgLy8gYW5pbWF0aW9uLCBhbmltYXRpb24tKGRlbGF5fGRpcmVjdGlvbnxkdXJhdGlvbnxmaWxsLW1vZGV8aXRlcmF0aW9uLWNvdW50fG5hbWV8cGxheS1zdGF0ZXx0aW1pbmctZnVuY3Rpb24pXG5cbiAgICBjYXNlIDU3Mzc6XG4gICAgY2FzZSA0MjAxOlxuICAgIGNhc2UgMzE3NzpcbiAgICBjYXNlIDM0MzM6XG4gICAgY2FzZSAxNjQxOlxuICAgIGNhc2UgNDQ1NzpcbiAgICBjYXNlIDI5MjE6IC8vIHRleHQtZGVjb3JhdGlvbiwgZmlsdGVyLCBjbGlwLXBhdGgsIGJhY2tmYWNlLXZpc2liaWxpdHksIGNvbHVtbiwgYm94LWRlY29yYXRpb24tYnJlYWtcblxuICAgIGNhc2UgNTU3MjpcbiAgICBjYXNlIDYzNTY6XG4gICAgY2FzZSA1ODQ0OlxuICAgIGNhc2UgMzE5MTpcbiAgICBjYXNlIDY2NDU6XG4gICAgY2FzZSAzMDA1OiAvLyBtYXNrLCBtYXNrLWltYWdlLCBtYXNrLShtb2RlfGNsaXB8c2l6ZSksIG1hc2stKHJlcGVhdHxvcmlnaW4pLCBtYXNrLXBvc2l0aW9uLCBtYXNrLWNvbXBvc2l0ZSxcblxuICAgIGNhc2UgNjM5MTpcbiAgICBjYXNlIDU4Nzk6XG4gICAgY2FzZSA1NjIzOlxuICAgIGNhc2UgNjEzNTpcbiAgICBjYXNlIDQ1OTk6XG4gICAgY2FzZSA0ODU1OiAvLyBiYWNrZ3JvdW5kLWNsaXAsIGNvbHVtbnMsIGNvbHVtbi0oY291bnR8ZmlsbHxnYXB8cnVsZXxydWxlLWNvbG9yfHJ1bGUtc3R5bGV8cnVsZS13aWR0aHxzcGFufHdpZHRoKVxuXG4gICAgY2FzZSA0MjE1OlxuICAgIGNhc2UgNjM4OTpcbiAgICBjYXNlIDUxMDk6XG4gICAgY2FzZSA1MzY1OlxuICAgIGNhc2UgNTYyMTpcbiAgICBjYXNlIDM4Mjk6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBhcHBlYXJhbmNlLCB1c2VyLXNlbGVjdCwgdHJhbnNmb3JtLCBoeXBoZW5zLCB0ZXh0LXNpemUtYWRqdXN0XG5cbiAgICBjYXNlIDUzNDk6XG4gICAgY2FzZSA0MjQ2OlxuICAgIGNhc2UgNDgxMDpcbiAgICBjYXNlIDY5Njg6XG4gICAgY2FzZSAyNzU2OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTU9aICsgdmFsdWUgKyBNUyArIHZhbHVlICsgdmFsdWU7XG4gICAgLy8gZmxleCwgZmxleC1kaXJlY3Rpb25cblxuICAgIGNhc2UgNjgyODpcbiAgICBjYXNlIDQyNjg6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHZhbHVlICsgdmFsdWU7XG4gICAgLy8gb3JkZXJcblxuICAgIGNhc2UgNjE2NTpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgJ2ZsZXgtJyArIHZhbHVlICsgdmFsdWU7XG4gICAgLy8gYWxpZ24taXRlbXNcblxuICAgIGNhc2UgNTE4NzpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIHJlcGxhY2UodmFsdWUsIC8oXFx3KykuKyg6W15dKykvLCBXRUJLSVQgKyAnYm94LSQxJDInICsgTVMgKyAnZmxleC0kMSQyJykgKyB2YWx1ZTtcbiAgICAvLyBhbGlnbi1zZWxmXG5cbiAgICBjYXNlIDU0NDM6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LWl0ZW0tJyArIHJlcGxhY2UodmFsdWUsIC9mbGV4LXwtc2VsZi8sICcnKSArIHZhbHVlO1xuICAgIC8vIGFsaWduLWNvbnRlbnRcblxuICAgIGNhc2UgNDY3NTpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgJ2ZsZXgtbGluZS1wYWNrJyArIHJlcGxhY2UodmFsdWUsIC9hbGlnbi1jb250ZW50fGZsZXgtfC1zZWxmLywgJycpICsgdmFsdWU7XG4gICAgLy8gZmxleC1zaHJpbmtcblxuICAgIGNhc2UgNTU0ODpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgJ3NocmluaycsICduZWdhdGl2ZScpICsgdmFsdWU7XG4gICAgLy8gZmxleC1iYXNpc1xuXG4gICAgY2FzZSA1MjkyOlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAnYmFzaXMnLCAncHJlZmVycmVkLXNpemUnKSArIHZhbHVlO1xuICAgIC8vIGZsZXgtZ3Jvd1xuXG4gICAgY2FzZSA2MDYwOlxuICAgICAgcmV0dXJuIFdFQktJVCArICdib3gtJyArIHJlcGxhY2UodmFsdWUsICctZ3JvdycsICcnKSArIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAnZ3JvdycsICdwb3NpdGl2ZScpICsgdmFsdWU7XG4gICAgLy8gdHJhbnNpdGlvblxuXG4gICAgY2FzZSA0NTU0OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHJlcGxhY2UodmFsdWUsIC8oW14tXSkodHJhbnNmb3JtKS9nLCAnJDEnICsgV0VCS0lUICsgJyQyJykgKyB2YWx1ZTtcbiAgICAvLyBjdXJzb3JcblxuICAgIGNhc2UgNjE4NzpcbiAgICAgIHJldHVybiByZXBsYWNlKHJlcGxhY2UocmVwbGFjZSh2YWx1ZSwgLyh6b29tLXxncmFiKS8sIFdFQktJVCArICckMScpLCAvKGltYWdlLXNldCkvLCBXRUJLSVQgKyAnJDEnKSwgdmFsdWUsICcnKSArIHZhbHVlO1xuICAgIC8vIGJhY2tncm91bmQsIGJhY2tncm91bmQtaW1hZ2VcblxuICAgIGNhc2UgNTQ5NTpcbiAgICBjYXNlIDM5NTk6XG4gICAgICByZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyhpbWFnZS1zZXRcXChbXl0qKS8sIFdFQktJVCArICckMScgKyAnJGAkMScpO1xuICAgIC8vIGp1c3RpZnktY29udGVudFxuXG4gICAgY2FzZSA0OTY4OlxuICAgICAgcmV0dXJuIHJlcGxhY2UocmVwbGFjZSh2YWx1ZSwgLyguKzopKGZsZXgtKT8oLiopLywgV0VCS0lUICsgJ2JveC1wYWNrOiQzJyArIE1TICsgJ2ZsZXgtcGFjazokMycpLCAvcy4rLWJbXjtdKy8sICdqdXN0aWZ5JykgKyBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIChtYXJnaW58cGFkZGluZyktaW5saW5lLShzdGFydHxlbmQpXG5cbiAgICBjYXNlIDQwOTU6XG4gICAgY2FzZSAzNTgzOlxuICAgIGNhc2UgNDA2ODpcbiAgICBjYXNlIDI1MzI6XG4gICAgICByZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKyktaW5saW5lKC4rKS8sIFdFQktJVCArICckMSQyJykgKyB2YWx1ZTtcbiAgICAvLyAobWlufG1heCk/KHdpZHRofGhlaWdodHxpbmxpbmUtc2l6ZXxibG9jay1zaXplKVxuXG4gICAgY2FzZSA4MTE2OlxuICAgIGNhc2UgNzA1OTpcbiAgICBjYXNlIDU3NTM6XG4gICAgY2FzZSA1NTM1OlxuICAgIGNhc2UgNTQ0NTpcbiAgICBjYXNlIDU3MDE6XG4gICAgY2FzZSA0OTMzOlxuICAgIGNhc2UgNDY3NzpcbiAgICBjYXNlIDU1MzM6XG4gICAgY2FzZSA1Nzg5OlxuICAgIGNhc2UgNTAyMTpcbiAgICBjYXNlIDQ3NjU6XG4gICAgICAvLyBzdHJldGNoLCBtYXgtY29udGVudCwgbWluLWNvbnRlbnQsIGZpbGwtYXZhaWxhYmxlXG4gICAgICBpZiAoc3RybGVuKHZhbHVlKSAtIDEgLSBsZW5ndGggPiA2KSBzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMSkpIHtcbiAgICAgICAgLy8gKG0pYXgtY29udGVudCwgKG0paW4tY29udGVudFxuICAgICAgICBjYXNlIDEwOTpcbiAgICAgICAgICAvLyAtXG4gICAgICAgICAgaWYgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgNCkgIT09IDQ1KSBicmVhaztcbiAgICAgICAgLy8gKGYpaWxsLWF2YWlsYWJsZSwgKGYpaXQtY29udGVudFxuXG4gICAgICAgIGNhc2UgMTAyOlxuICAgICAgICAgIHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rOikoLispLShbXl0rKS8sICckMScgKyBXRUJLSVQgKyAnJDItJDMnICsgJyQxJyArIE1PWiArIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDMpID09IDEwOCA/ICckMycgOiAnJDItJDMnKSkgKyB2YWx1ZTtcbiAgICAgICAgLy8gKHMpdHJldGNoXG5cbiAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgcmV0dXJuIH5pbmRleG9mKHZhbHVlLCAnc3RyZXRjaCcpID8gcHJlZml4KHJlcGxhY2UodmFsdWUsICdzdHJldGNoJywgJ2ZpbGwtYXZhaWxhYmxlJyksIGxlbmd0aCkgKyB2YWx1ZSA6IHZhbHVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgLy8gcG9zaXRpb246IHN0aWNreVxuXG4gICAgY2FzZSA0OTQ5OlxuICAgICAgLy8gKHMpdGlja3k/XG4gICAgICBpZiAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyAxKSAhPT0gMTE1KSBicmVhaztcbiAgICAvLyBkaXNwbGF5OiAoZmxleHxpbmxpbmUtZmxleClcblxuICAgIGNhc2UgNjQ0NDpcbiAgICAgIHN3aXRjaCAoY2hhcmF0KHZhbHVlLCBzdHJsZW4odmFsdWUpIC0gMyAtICh+aW5kZXhvZih2YWx1ZSwgJyFpbXBvcnRhbnQnKSAmJiAxMCkpKSB7XG4gICAgICAgIC8vIHN0aWMoayl5XG4gICAgICAgIGNhc2UgMTA3OlxuICAgICAgICAgIHJldHVybiByZXBsYWNlKHZhbHVlLCAnOicsICc6JyArIFdFQktJVCkgKyB2YWx1ZTtcbiAgICAgICAgLy8gKGlubGluZS0pP2ZsKGUpeFxuXG4gICAgICAgIGNhc2UgMTAxOlxuICAgICAgICAgIHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rOikoW147IV0rKSg7fCEuKyk/LywgJyQxJyArIFdFQktJVCArIChjaGFyYXQodmFsdWUsIDE0KSA9PT0gNDUgPyAnaW5saW5lLScgOiAnJykgKyAnYm94JDMnICsgJyQxJyArIFdFQktJVCArICckMiQzJyArICckMScgKyBNUyArICckMmJveCQzJykgKyB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgLy8gd3JpdGluZy1tb2RlXG5cbiAgICBjYXNlIDU5MzY6XG4gICAgICBzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMTEpKSB7XG4gICAgICAgIC8vIHZlcnRpY2FsLWwocilcbiAgICAgICAgY2FzZSAxMTQ6XG4gICAgICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICd0YicpICsgdmFsdWU7XG4gICAgICAgIC8vIHZlcnRpY2FsLXIobClcblxuICAgICAgICBjYXNlIDEwODpcbiAgICAgICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsIC9bc3ZoXVxcdystW3RibHJdezJ9LywgJ3RiLXJsJykgKyB2YWx1ZTtcbiAgICAgICAgLy8gaG9yaXpvbnRhbCgtKXRiXG5cbiAgICAgICAgY2FzZSA0NTpcbiAgICAgICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsIC9bc3ZoXVxcdystW3RibHJdezJ9LywgJ2xyJykgKyB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52YXIgcHJlZml4ZXIgPSBmdW5jdGlvbiBwcmVmaXhlcihlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG4gIGlmIChlbGVtZW50Lmxlbmd0aCA+IC0xKSBpZiAoIWVsZW1lbnRbXCJyZXR1cm5cIl0pIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG4gICAgY2FzZSBERUNMQVJBVElPTjpcbiAgICAgIGVsZW1lbnRbXCJyZXR1cm5cIl0gPSBwcmVmaXgoZWxlbWVudC52YWx1ZSwgZWxlbWVudC5sZW5ndGgpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIEtFWUZSQU1FUzpcbiAgICAgIHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge1xuICAgICAgICB2YWx1ZTogcmVwbGFjZShlbGVtZW50LnZhbHVlLCAnQCcsICdAJyArIFdFQktJVClcbiAgICAgIH0pXSwgY2FsbGJhY2spO1xuXG4gICAgY2FzZSBSVUxFU0VUOlxuICAgICAgaWYgKGVsZW1lbnQubGVuZ3RoKSByZXR1cm4gY29tYmluZShlbGVtZW50LnByb3BzLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgc3dpdGNoIChtYXRjaCh2YWx1ZSwgLyg6OnBsYWNcXHcrfDpyZWFkLVxcdyspLykpIHtcbiAgICAgICAgICAvLyA6cmVhZC0ob25seXx3cml0ZSlcbiAgICAgICAgICBjYXNlICc6cmVhZC1vbmx5JzpcbiAgICAgICAgICBjYXNlICc6cmVhZC13cml0ZSc6XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgcHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihyZWFkLVxcdyspLywgJzonICsgTU9aICsgJyQxJyldXG4gICAgICAgICAgICB9KV0sIGNhbGxiYWNrKTtcbiAgICAgICAgICAvLyA6cGxhY2Vob2xkZXJcblxuICAgICAgICAgIGNhc2UgJzo6cGxhY2Vob2xkZXInOlxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7XG4gICAgICAgICAgICAgIHByb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgJzonICsgV0VCS0lUICsgJ2lucHV0LSQxJyldXG4gICAgICAgICAgICB9KSwgY29weShlbGVtZW50LCB7XG4gICAgICAgICAgICAgIHByb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgJzonICsgTU9aICsgJyQxJyldXG4gICAgICAgICAgICB9KSwgY29weShlbGVtZW50LCB7XG4gICAgICAgICAgICAgIHByb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgTVMgKyAnaW5wdXQtJDEnKV1cbiAgICAgICAgICAgIH0pXSwgY2FsbGJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfSk7XG4gIH1cbn07XG5cbnZhciBkZWZhdWx0U3R5bGlzUGx1Z2lucyA9IFtwcmVmaXhlcl07XG5cbnZhciBjcmVhdGVDYWNoZSA9IGZ1bmN0aW9uIGNyZWF0ZUNhY2hlKG9wdGlvbnMpIHtcbiAgdmFyIGtleSA9IG9wdGlvbnMua2V5O1xuXG4gIGlmIChrZXkgPT09ICdjc3MnKSB7XG4gICAgdmFyIHNzclN0eWxlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzdHlsZVtkYXRhLWVtb3Rpb25dOm5vdChbZGF0YS1zXSlcIik7IC8vIGdldCBTU1JlZCBzdHlsZXMgb3V0IG9mIHRoZSB3YXkgb2YgUmVhY3QncyBoeWRyYXRpb25cbiAgICAvLyBkb2N1bWVudC5oZWFkIGlzIGEgc2FmZSBwbGFjZSB0byBtb3ZlIHRoZW0gdG8odGhvdWdoIG5vdGUgZG9jdW1lbnQuaGVhZCBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIGxhc3QgcGxhY2UgdGhleSB3aWxsIGJlKVxuICAgIC8vIG5vdGUgdGhpcyB2ZXJ5IHZlcnkgaW50ZW50aW9uYWxseSB0YXJnZXRzIGFsbCBzdHlsZSBlbGVtZW50cyByZWdhcmRsZXNzIG9mIHRoZSBrZXkgdG8gZW5zdXJlXG4gICAgLy8gdGhhdCBjcmVhdGluZyBhIGNhY2hlIHdvcmtzIGluc2lkZSBvZiByZW5kZXIgb2YgYSBSZWFjdCBjb21wb25lbnRcblxuICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoc3NyU3R5bGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgLy8gd2Ugd2FudCB0byBvbmx5IG1vdmUgZWxlbWVudHMgd2hpY2ggaGF2ZSBhIHNwYWNlIGluIHRoZSBkYXRhLWVtb3Rpb24gYXR0cmlidXRlIHZhbHVlXG4gICAgICAvLyBiZWNhdXNlIHRoYXQgaW5kaWNhdGVzIHRoYXQgaXQgaXMgYW4gRW1vdGlvbiAxMSBzZXJ2ZXItc2lkZSByZW5kZXJlZCBzdHlsZSBlbGVtZW50c1xuICAgICAgLy8gd2hpbGUgd2Ugd2lsbCBhbHJlYWR5IGlnbm9yZSBFbW90aW9uIDExIGNsaWVudC1zaWRlIGluc2VydGVkIHN0eWxlcyBiZWNhdXNlIG9mIHRoZSA6bm90KFtkYXRhLXNdKSBwYXJ0IGluIHRoZSBzZWxlY3RvclxuICAgICAgLy8gRW1vdGlvbiAxMCBjbGllbnQtc2lkZSBpbnNlcnRlZCBzdHlsZXMgZGlkIG5vdCBoYXZlIGRhdGEtcyAoYnV0IGltcG9ydGFudGx5IGRpZCBub3QgaGF2ZSBhIHNwYWNlIGluIHRoZWlyIGRhdGEtZW1vdGlvbiBhdHRyaWJ1dGVzKVxuICAgICAgLy8gc28gY2hlY2tpbmcgZm9yIHRoZSBzcGFjZSBlbnN1cmVzIHRoYXQgbG9hZGluZyBFbW90aW9uIDExIGFmdGVyIEVtb3Rpb24gMTAgaGFzIGluc2VydGVkIHNvbWUgc3R5bGVzXG4gICAgICAvLyB3aWxsIG5vdCByZXN1bHQgaW4gdGhlIEVtb3Rpb24gMTAgc3R5bGVzIGJlaW5nIGRlc3Ryb3llZFxuICAgICAgdmFyIGRhdGFFbW90aW9uQXR0cmlidXRlID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZW1vdGlvbicpO1xuXG4gICAgICBpZiAoZGF0YUVtb3Rpb25BdHRyaWJ1dGUuaW5kZXhPZignICcpID09PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1zJywgJycpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIHN0eWxpc1BsdWdpbnMgPSBvcHRpb25zLnN0eWxpc1BsdWdpbnMgfHwgZGVmYXVsdFN0eWxpc1BsdWdpbnM7XG5cbiAgdmFyIGluc2VydGVkID0ge307XG4gIHZhciBjb250YWluZXI7XG4gIHZhciBub2Rlc1RvSHlkcmF0ZSA9IFtdO1xuXG4gIHtcbiAgICBjb250YWluZXIgPSBvcHRpb25zLmNvbnRhaW5lciB8fCBkb2N1bWVudC5oZWFkO1xuICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoIC8vIHRoaXMgbWVhbnMgd2Ugd2lsbCBpZ25vcmUgZWxlbWVudHMgd2hpY2ggZG9uJ3QgaGF2ZSBhIHNwYWNlIGluIHRoZW0gd2hpY2hcbiAgICAvLyBtZWFucyB0aGF0IHRoZSBzdHlsZSBlbGVtZW50cyB3ZSdyZSBsb29raW5nIGF0IGFyZSBvbmx5IEVtb3Rpb24gMTEgc2VydmVyLXJlbmRlcmVkIHN0eWxlIGVsZW1lbnRzXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW2RhdGEtZW1vdGlvbl49XFxcIlwiICsga2V5ICsgXCIgXFxcIl1cIiksIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgYXR0cmliID0gbm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWVtb3Rpb25cIikuc3BsaXQoJyAnKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhdHRyaWIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaW5zZXJ0ZWRbYXR0cmliW2ldXSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIG5vZGVzVG9IeWRyYXRlLnB1c2gobm9kZSk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgX2luc2VydDtcblxuICB2YXIgb21uaXByZXNlbnRQbHVnaW5zID0gW2NvbXBhdCwgcmVtb3ZlTGFiZWxdO1xuXG4gIHtcbiAgICB2YXIgY3VycmVudFNoZWV0O1xuICAgIHZhciBmaW5hbGl6aW5nUGx1Z2lucyA9IFtzdHJpbmdpZnksIHJ1bGVzaGVldChmdW5jdGlvbiAocnVsZSkge1xuICAgICAgY3VycmVudFNoZWV0Lmluc2VydChydWxlKTtcbiAgICB9KV07XG4gICAgdmFyIHNlcmlhbGl6ZXIgPSBtaWRkbGV3YXJlKG9tbmlwcmVzZW50UGx1Z2lucy5jb25jYXQoc3R5bGlzUGx1Z2lucywgZmluYWxpemluZ1BsdWdpbnMpKTtcblxuICAgIHZhciBzdHlsaXMgPSBmdW5jdGlvbiBzdHlsaXMoc3R5bGVzKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplKGNvbXBpbGUoc3R5bGVzKSwgc2VyaWFsaXplcik7XG4gICAgfTtcblxuICAgIF9pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnQoc2VsZWN0b3IsIHNlcmlhbGl6ZWQsIHNoZWV0LCBzaG91bGRDYWNoZSkge1xuICAgICAgY3VycmVudFNoZWV0ID0gc2hlZXQ7XG5cbiAgICAgIHN0eWxpcyhzZWxlY3RvciA/IHNlbGVjdG9yICsgXCJ7XCIgKyBzZXJpYWxpemVkLnN0eWxlcyArIFwifVwiIDogc2VyaWFsaXplZC5zdHlsZXMpO1xuXG4gICAgICBpZiAoc2hvdWxkQ2FjaGUpIHtcbiAgICAgICAgY2FjaGUuaW5zZXJ0ZWRbc2VyaWFsaXplZC5uYW1lXSA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHZhciBjYWNoZSA9IHtcbiAgICBrZXk6IGtleSxcbiAgICBzaGVldDogbmV3IFN0eWxlU2hlZXQoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBjb250YWluZXI6IGNvbnRhaW5lcixcbiAgICAgIG5vbmNlOiBvcHRpb25zLm5vbmNlLFxuICAgICAgc3BlZWR5OiBvcHRpb25zLnNwZWVkeSxcbiAgICAgIHByZXBlbmQ6IG9wdGlvbnMucHJlcGVuZCxcbiAgICAgIGluc2VydGlvblBvaW50OiBvcHRpb25zLmluc2VydGlvblBvaW50XG4gICAgfSksXG4gICAgbm9uY2U6IG9wdGlvbnMubm9uY2UsXG4gICAgaW5zZXJ0ZWQ6IGluc2VydGVkLFxuICAgIHJlZ2lzdGVyZWQ6IHt9LFxuICAgIGluc2VydDogX2luc2VydFxuICB9O1xuICBjYWNoZS5zaGVldC5oeWRyYXRlKG5vZGVzVG9IeWRyYXRlKTtcbiAgcmV0dXJuIGNhY2hlO1xufTtcblxuZXhwb3J0IHsgY3JlYXRlQ2FjaGUgYXMgZGVmYXVsdCB9O1xuIiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xMy4xXG4gKiByZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0Jzt2YXIgYj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLGM9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxkPWI/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixlPWI/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGY9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsZz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCxoPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LGs9Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCxsPWI/U3ltYm9sLmZvcihcInJlYWN0LmFzeW5jX21vZGVcIik6NjAxMTEsbT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsbj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixwPWI/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLHE9Yj9cblN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpOjYwMTIwLHI9Yj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSx0PWI/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6NjAxMTYsdj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5ibG9ja1wiKTo2MDEyMSx3PWI/U3ltYm9sLmZvcihcInJlYWN0LmZ1bmRhbWVudGFsXCIpOjYwMTE3LHg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucmVzcG9uZGVyXCIpOjYwMTE4LHk9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik6NjAxMTk7XG5mdW5jdGlvbiB6KGEpe2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpe3ZhciB1PWEuJCR0eXBlb2Y7c3dpdGNoKHUpe2Nhc2UgYzpzd2l0Y2goYT1hLnR5cGUsYSl7Y2FzZSBsOmNhc2UgbTpjYXNlIGU6Y2FzZSBnOmNhc2UgZjpjYXNlIHA6cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgazpjYXNlIG46Y2FzZSB0OmNhc2UgcjpjYXNlIGg6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdX19Y2FzZSBkOnJldHVybiB1fX19ZnVuY3Rpb24gQShhKXtyZXR1cm4geihhKT09PW19ZXhwb3J0cy5Bc3luY01vZGU9bDtleHBvcnRzLkNvbmN1cnJlbnRNb2RlPW07ZXhwb3J0cy5Db250ZXh0Q29uc3VtZXI9aztleHBvcnRzLkNvbnRleHRQcm92aWRlcj1oO2V4cG9ydHMuRWxlbWVudD1jO2V4cG9ydHMuRm9yd2FyZFJlZj1uO2V4cG9ydHMuRnJhZ21lbnQ9ZTtleHBvcnRzLkxhenk9dDtleHBvcnRzLk1lbW89cjtleHBvcnRzLlBvcnRhbD1kO1xuZXhwb3J0cy5Qcm9maWxlcj1nO2V4cG9ydHMuU3RyaWN0TW9kZT1mO2V4cG9ydHMuU3VzcGVuc2U9cDtleHBvcnRzLmlzQXN5bmNNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiBBKGEpfHx6KGEpPT09bH07ZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlPUE7ZXhwb3J0cy5pc0NvbnRleHRDb25zdW1lcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWt9O2V4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ofTtleHBvcnRzLmlzRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09Y307ZXhwb3J0cy5pc0ZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ufTtleHBvcnRzLmlzRnJhZ21lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1lfTtleHBvcnRzLmlzTGF6eT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXR9O1xuZXhwb3J0cy5pc01lbW89ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1yfTtleHBvcnRzLmlzUG9ydGFsPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZH07ZXhwb3J0cy5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Z307ZXhwb3J0cy5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1mfTtleHBvcnRzLmlzU3VzcGVuc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1wfTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGF8fGE9PT1lfHxhPT09bXx8YT09PWd8fGE9PT1mfHxhPT09cHx8YT09PXF8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09dHx8YS4kJHR5cGVvZj09PXJ8fGEuJCR0eXBlb2Y9PT1ofHxhLiQkdHlwZW9mPT09a3x8YS4kJHR5cGVvZj09PW58fGEuJCR0eXBlb2Y9PT13fHxhLiQkdHlwZW9mPT09eHx8YS4kJHR5cGVvZj09PXl8fGEuJCR0eXBlb2Y9PT12KX07ZXhwb3J0cy50eXBlT2Y9ejtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vISBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbnZhciBSRUFDVF9TVEFUSUNTID0ge1xuICBjaGlsZENvbnRleHRUeXBlczogdHJ1ZSxcbiAgY29udGV4dFR5cGU6IHRydWUsXG4gIGNvbnRleHRUeXBlczogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgZ2V0RGVmYXVsdFByb3BzOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczogdHJ1ZSxcbiAgbWl4aW5zOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgS05PV05fU1RBVElDUyA9IHtcbiAgbmFtZTogdHJ1ZSxcbiAgbGVuZ3RoOiB0cnVlLFxuICBwcm90b3R5cGU6IHRydWUsXG4gIGNhbGxlcjogdHJ1ZSxcbiAgY2FsbGVlOiB0cnVlLFxuICBhcmd1bWVudHM6IHRydWUsXG4gIGFyaXR5OiB0cnVlXG59O1xudmFyIEZPUldBUkRfUkVGX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIHJlbmRlcjogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlXG59O1xudmFyIE1FTU9fU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgY29tcGFyZTogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIFRZUEVfU1RBVElDUyA9IHt9O1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuRm9yd2FyZFJlZl0gPSBGT1JXQVJEX1JFRl9TVEFUSUNTO1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuTWVtb10gPSBNRU1PX1NUQVRJQ1M7XG5cbmZ1bmN0aW9uIGdldFN0YXRpY3MoY29tcG9uZW50KSB7XG4gIC8vIFJlYWN0IHYxNi4xMSBhbmQgYmVsb3dcbiAgaWYgKHJlYWN0SXMuaXNNZW1vKGNvbXBvbmVudCkpIHtcbiAgICByZXR1cm4gTUVNT19TVEFUSUNTO1xuICB9IC8vIFJlYWN0IHYxNi4xMiBhbmQgYWJvdmVcblxuXG4gIHJldHVybiBUWVBFX1NUQVRJQ1NbY29tcG9uZW50WyckJHR5cGVvZiddXSB8fCBSRUFDVF9TVEFUSUNTO1xufVxuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbnZhciBvYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xuZnVuY3Rpb24gaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQsIGJsYWNrbGlzdCkge1xuICBpZiAodHlwZW9mIHNvdXJjZUNvbXBvbmVudCAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBkb24ndCBob2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xuICAgIGlmIChvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgIHZhciBpbmhlcml0ZWRDb21wb25lbnQgPSBnZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgICBpZiAoaW5oZXJpdGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVudCAhPT0gb2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICAgIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgaW5oZXJpdGVkQ29tcG9uZW50LCBibGFja2xpc3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgaWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAga2V5cyA9IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2VDb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0U3RhdGljcyA9IGdldFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50KTtcbiAgICB2YXIgc291cmNlU3RhdGljcyA9IGdldFN0YXRpY3Moc291cmNlQ29tcG9uZW50KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmICghS05PV05fU1RBVElDU1trZXldICYmICEoYmxhY2tsaXN0ICYmIGJsYWNrbGlzdFtrZXldKSAmJiAhKHNvdXJjZVN0YXRpY3MgJiYgc291cmNlU3RhdGljc1trZXldKSAmJiAhKHRhcmdldFN0YXRpY3MgJiYgdGFyZ2V0U3RhdGljc1trZXldKSkge1xuICAgICAgICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2VDb21wb25lbnQsIGtleSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBBdm9pZCBmYWlsdXJlcyBmcm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG4gICAgICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0Q29tcG9uZW50LCBrZXksIGRlc2NyaXB0b3IpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRDb21wb25lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaG9pc3ROb25SZWFjdFN0YXRpY3M7XG4iLCJpbXBvcnQgaG9pc3ROb25SZWFjdFN0YXRpY3MkMSBmcm9tICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5cbi8vIHRoaXMgZmlsZSBpc29sYXRlcyB0aGlzIHBhY2thZ2UgdGhhdCBpcyBub3QgdHJlZS1zaGFrZWFibGVcbi8vIGFuZCBpZiB0aGlzIG1vZHVsZSBkb2Vzbid0IGFjdHVhbGx5IGNvbnRhaW4gYW55IGxvZ2ljIG9mIGl0cyBvd25cbi8vIHRoZW4gUm9sbHVwIGp1c3QgdXNlICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcycgZGlyZWN0bHkgaW4gb3RoZXIgY2h1bmtzXG5cbnZhciBob2lzdE5vblJlYWN0U3RhdGljcyA9IChmdW5jdGlvbiAodGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQpIHtcbiAgcmV0dXJuIGhvaXN0Tm9uUmVhY3RTdGF0aWNzJDEodGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQpO1xufSk7XG5cbmV4cG9ydCB7IGhvaXN0Tm9uUmVhY3RTdGF0aWNzIGFzIGRlZmF1bHQgfTtcbiIsInZhciBpc0Jyb3dzZXIgPSB0cnVlO1xuXG5mdW5jdGlvbiBnZXRSZWdpc3RlcmVkU3R5bGVzKHJlZ2lzdGVyZWQsIHJlZ2lzdGVyZWRTdHlsZXMsIGNsYXNzTmFtZXMpIHtcbiAgdmFyIHJhd0NsYXNzTmFtZSA9ICcnO1xuICBjbGFzc05hbWVzLnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbiAoY2xhc3NOYW1lKSB7XG4gICAgaWYgKHJlZ2lzdGVyZWRbY2xhc3NOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZWdpc3RlcmVkU3R5bGVzLnB1c2gocmVnaXN0ZXJlZFtjbGFzc05hbWVdICsgXCI7XCIpO1xuICAgIH0gZWxzZSBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICByYXdDbGFzc05hbWUgKz0gY2xhc3NOYW1lICsgXCIgXCI7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJhd0NsYXNzTmFtZTtcbn1cbnZhciByZWdpc3RlclN0eWxlcyA9IGZ1bmN0aW9uIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBpc1N0cmluZ1RhZykge1xuICB2YXIgY2xhc3NOYW1lID0gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG5cbiAgaWYgKCAvLyB3ZSBvbmx5IG5lZWQgdG8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIHJlZ2lzdGVyZWQgY2FjaGUgaWYgdGhlXG4gIC8vIGNsYXNzIG5hbWUgY291bGQgYmUgdXNlZCBmdXJ0aGVyIGRvd25cbiAgLy8gdGhlIHRyZWUgYnV0IGlmIGl0J3MgYSBzdHJpbmcgdGFnLCB3ZSBrbm93IGl0IHdvbid0XG4gIC8vIHNvIHdlIGRvbid0IGhhdmUgdG8gYWRkIGl0IHRvIHJlZ2lzdGVyZWQgY2FjaGUuXG4gIC8vIHRoaXMgaW1wcm92ZXMgbWVtb3J5IHVzYWdlIHNpbmNlIHdlIGNhbiBhdm9pZCBzdG9yaW5nIHRoZSB3aG9sZSBzdHlsZSBzdHJpbmdcbiAgKGlzU3RyaW5nVGFnID09PSBmYWxzZSB8fCAvLyB3ZSBuZWVkIHRvIGFsd2F5cyBzdG9yZSBpdCBpZiB3ZSdyZSBpbiBjb21wYXQgbW9kZSBhbmRcbiAgLy8gaW4gbm9kZSBzaW5jZSBlbW90aW9uLXNlcnZlciByZWxpZXMgb24gd2hldGhlciBhIHN0eWxlIGlzIGluXG4gIC8vIHRoZSByZWdpc3RlcmVkIGNhY2hlIHRvIGtub3cgd2hldGhlciBhIHN0eWxlIGlzIGdsb2JhbCBvciBub3RcbiAgLy8gYWxzbywgbm90ZSB0aGF0IHRoaXMgY2hlY2sgd2lsbCBiZSBkZWFkIGNvZGUgZWxpbWluYXRlZCBpbiB0aGUgYnJvd3NlclxuICBpc0Jyb3dzZXIgPT09IGZhbHNlICkgJiYgY2FjaGUucmVnaXN0ZXJlZFtjbGFzc05hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICBjYWNoZS5yZWdpc3RlcmVkW2NsYXNzTmFtZV0gPSBzZXJpYWxpemVkLnN0eWxlcztcbiAgfVxufTtcbnZhciBpbnNlcnRTdHlsZXMgPSBmdW5jdGlvbiBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKSB7XG4gIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBpc1N0cmluZ1RhZyk7XG4gIHZhciBjbGFzc05hbWUgPSBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcblxuICBpZiAoY2FjaGUuaW5zZXJ0ZWRbc2VyaWFsaXplZC5uYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBzZXJpYWxpemVkO1xuXG4gICAgZG8ge1xuICAgICAgY2FjaGUuaW5zZXJ0KHNlcmlhbGl6ZWQgPT09IGN1cnJlbnQgPyBcIi5cIiArIGNsYXNzTmFtZSA6ICcnLCBjdXJyZW50LCBjYWNoZS5zaGVldCwgdHJ1ZSk7XG5cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgfSB3aGlsZSAoY3VycmVudCAhPT0gdW5kZWZpbmVkKTtcbiAgfVxufTtcblxuZXhwb3J0IHsgZ2V0UmVnaXN0ZXJlZFN0eWxlcywgaW5zZXJ0U3R5bGVzLCByZWdpc3RlclN0eWxlcyB9O1xuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbi8vIEluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9nYXJ5Y291cnQvbXVybXVyaGFzaC1qc1xuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FhcHBsZWJ5L3NtaGFzaGVyL2Jsb2IvNjFhMDUzMGYyODI3N2YyZTg1MGJmYzM5NjAwY2U2MWQwMmI1MThkZS9zcmMvTXVybXVySGFzaDIuY3BwI0wzNy1MODZcbmZ1bmN0aW9uIG11cm11cjIoc3RyKSB7XG4gIC8vICdtJyBhbmQgJ3InIGFyZSBtaXhpbmcgY29uc3RhbnRzIGdlbmVyYXRlZCBvZmZsaW5lLlxuICAvLyBUaGV5J3JlIG5vdCByZWFsbHkgJ21hZ2ljJywgdGhleSBqdXN0IGhhcHBlbiB0byB3b3JrIHdlbGwuXG4gIC8vIGNvbnN0IG0gPSAweDViZDFlOTk1O1xuICAvLyBjb25zdCByID0gMjQ7XG4gIC8vIEluaXRpYWxpemUgdGhlIGhhc2hcbiAgdmFyIGggPSAwOyAvLyBNaXggNCBieXRlcyBhdCBhIHRpbWUgaW50byB0aGUgaGFzaFxuXG4gIHZhciBrLFxuICAgICAgaSA9IDAsXG4gICAgICBsZW4gPSBzdHIubGVuZ3RoO1xuXG4gIGZvciAoOyBsZW4gPj0gNDsgKytpLCBsZW4gLT0gNCkge1xuICAgIGsgPSBzdHIuY2hhckNvZGVBdChpKSAmIDB4ZmYgfCAoc3RyLmNoYXJDb2RlQXQoKytpKSAmIDB4ZmYpIDw8IDggfCAoc3RyLmNoYXJDb2RlQXQoKytpKSAmIDB4ZmYpIDw8IDE2IHwgKHN0ci5jaGFyQ29kZUF0KCsraSkgJiAweGZmKSA8PCAyNDtcbiAgICBrID1cbiAgICAvKiBNYXRoLmltdWwoaywgbSk6ICovXG4gICAgKGsgJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoayA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgICBrIF49XG4gICAgLyogayA+Pj4gcjogKi9cbiAgICBrID4+PiAyNDtcbiAgICBoID1cbiAgICAvKiBNYXRoLmltdWwoaywgbSk6ICovXG4gICAgKGsgJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoayA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KSBeXG4gICAgLyogTWF0aC5pbXVsKGgsIG0pOiAqL1xuICAgIChoICYgMHhmZmZmKSAqIDB4NWJkMWU5OTUgKyAoKGggPj4+IDE2KSAqIDB4ZTk5NSA8PCAxNik7XG4gIH0gLy8gSGFuZGxlIHRoZSBsYXN0IGZldyBieXRlcyBvZiB0aGUgaW5wdXQgYXJyYXlcblxuXG4gIHN3aXRjaCAobGVuKSB7XG4gICAgY2FzZSAzOlxuICAgICAgaCBePSAoc3RyLmNoYXJDb2RlQXQoaSArIDIpICYgMHhmZikgPDwgMTY7XG5cbiAgICBjYXNlIDI6XG4gICAgICBoIF49IChzdHIuY2hhckNvZGVBdChpICsgMSkgJiAweGZmKSA8PCA4O1xuXG4gICAgY2FzZSAxOlxuICAgICAgaCBePSBzdHIuY2hhckNvZGVBdChpKSAmIDB4ZmY7XG4gICAgICBoID1cbiAgICAgIC8qIE1hdGguaW11bChoLCBtKTogKi9cbiAgICAgIChoICYgMHhmZmZmKSAqIDB4NWJkMWU5OTUgKyAoKGggPj4+IDE2KSAqIDB4ZTk5NSA8PCAxNik7XG4gIH0gLy8gRG8gYSBmZXcgZmluYWwgbWl4ZXMgb2YgdGhlIGhhc2ggdG8gZW5zdXJlIHRoZSBsYXN0IGZld1xuICAvLyBieXRlcyBhcmUgd2VsbC1pbmNvcnBvcmF0ZWQuXG5cblxuICBoIF49IGggPj4+IDEzO1xuICBoID1cbiAgLyogTWF0aC5pbXVsKGgsIG0pOiAqL1xuICAoaCAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChoID4+PiAxNikgKiAweGU5OTUgPDwgMTYpO1xuICByZXR1cm4gKChoIF4gaCA+Pj4gMTUpID4+PiAwKS50b1N0cmluZygzNik7XG59XG5cbmV4cG9ydCB7IG11cm11cjIgYXMgZGVmYXVsdCB9O1xuIiwidmFyIHVuaXRsZXNzS2V5cyA9IHtcbiAgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6IDEsXG4gIGFzcGVjdFJhdGlvOiAxLFxuICBib3JkZXJJbWFnZU91dHNldDogMSxcbiAgYm9yZGVySW1hZ2VTbGljZTogMSxcbiAgYm9yZGVySW1hZ2VXaWR0aDogMSxcbiAgYm94RmxleDogMSxcbiAgYm94RmxleEdyb3VwOiAxLFxuICBib3hPcmRpbmFsR3JvdXA6IDEsXG4gIGNvbHVtbkNvdW50OiAxLFxuICBjb2x1bW5zOiAxLFxuICBmbGV4OiAxLFxuICBmbGV4R3JvdzogMSxcbiAgZmxleFBvc2l0aXZlOiAxLFxuICBmbGV4U2hyaW5rOiAxLFxuICBmbGV4TmVnYXRpdmU6IDEsXG4gIGZsZXhPcmRlcjogMSxcbiAgZ3JpZFJvdzogMSxcbiAgZ3JpZFJvd0VuZDogMSxcbiAgZ3JpZFJvd1NwYW46IDEsXG4gIGdyaWRSb3dTdGFydDogMSxcbiAgZ3JpZENvbHVtbjogMSxcbiAgZ3JpZENvbHVtbkVuZDogMSxcbiAgZ3JpZENvbHVtblNwYW46IDEsXG4gIGdyaWRDb2x1bW5TdGFydDogMSxcbiAgbXNHcmlkUm93OiAxLFxuICBtc0dyaWRSb3dTcGFuOiAxLFxuICBtc0dyaWRDb2x1bW46IDEsXG4gIG1zR3JpZENvbHVtblNwYW46IDEsXG4gIGZvbnRXZWlnaHQ6IDEsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG9wYWNpdHk6IDEsXG4gIG9yZGVyOiAxLFxuICBvcnBoYW5zOiAxLFxuICBzY2FsZTogMSxcbiAgdGFiU2l6ZTogMSxcbiAgd2lkb3dzOiAxLFxuICB6SW5kZXg6IDEsXG4gIHpvb206IDEsXG4gIFdlYmtpdExpbmVDbGFtcDogMSxcbiAgLy8gU1ZHLXJlbGF0ZWQgcHJvcGVydGllc1xuICBmaWxsT3BhY2l0eTogMSxcbiAgZmxvb2RPcGFjaXR5OiAxLFxuICBzdG9wT3BhY2l0eTogMSxcbiAgc3Ryb2tlRGFzaGFycmF5OiAxLFxuICBzdHJva2VEYXNob2Zmc2V0OiAxLFxuICBzdHJva2VNaXRlcmxpbWl0OiAxLFxuICBzdHJva2VPcGFjaXR5OiAxLFxuICBzdHJva2VXaWR0aDogMVxufTtcblxuZXhwb3J0IHsgdW5pdGxlc3NLZXlzIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBoYXNoU3RyaW5nIGZyb20gJ0BlbW90aW9uL2hhc2gnO1xuaW1wb3J0IHVuaXRsZXNzIGZyb20gJ0BlbW90aW9uL3VuaXRsZXNzJztcbmltcG9ydCBtZW1vaXplIGZyb20gJ0BlbW90aW9uL21lbW9pemUnO1xuXG52YXIgaXNEZXZlbG9wbWVudCA9IGZhbHNlO1xuXG52YXIgaHlwaGVuYXRlUmVnZXggPSAvW0EtWl18Xm1zL2c7XG52YXIgYW5pbWF0aW9uUmVnZXggPSAvX0VNT18oW15fXSs/KV8oW15dKj8pX0VNT18vZztcblxudmFyIGlzQ3VzdG9tUHJvcGVydHkgPSBmdW5jdGlvbiBpc0N1c3RvbVByb3BlcnR5KHByb3BlcnR5KSB7XG4gIHJldHVybiBwcm9wZXJ0eS5jaGFyQ29kZUF0KDEpID09PSA0NTtcbn07XG5cbnZhciBpc1Byb2Nlc3NhYmxlVmFsdWUgPSBmdW5jdGlvbiBpc1Byb2Nlc3NhYmxlVmFsdWUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbic7XG59O1xuXG52YXIgcHJvY2Vzc1N0eWxlTmFtZSA9IC8qICNfX1BVUkVfXyAqL21lbW9pemUoZnVuY3Rpb24gKHN0eWxlTmFtZSkge1xuICByZXR1cm4gaXNDdXN0b21Qcm9wZXJ0eShzdHlsZU5hbWUpID8gc3R5bGVOYW1lIDogc3R5bGVOYW1lLnJlcGxhY2UoaHlwaGVuYXRlUmVnZXgsICctJCYnKS50b0xvd2VyQ2FzZSgpO1xufSk7XG5cbnZhciBwcm9jZXNzU3R5bGVWYWx1ZSA9IGZ1bmN0aW9uIHByb2Nlc3NTdHlsZVZhbHVlKGtleSwgdmFsdWUpIHtcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlICdhbmltYXRpb24nOlxuICAgIGNhc2UgJ2FuaW1hdGlvbk5hbWUnOlxuICAgICAge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKGFuaW1hdGlvblJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gsIHAxLCBwMikge1xuICAgICAgICAgICAgY3Vyc29yID0ge1xuICAgICAgICAgICAgICBuYW1lOiBwMSxcbiAgICAgICAgICAgICAgc3R5bGVzOiBwMixcbiAgICAgICAgICAgICAgbmV4dDogY3Vyc29yXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHAxO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cblxuICBpZiAodW5pdGxlc3Nba2V5XSAhPT0gMSAmJiAhaXNDdXN0b21Qcm9wZXJ0eShrZXkpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IDApIHtcbiAgICByZXR1cm4gdmFsdWUgKyAncHgnO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxudmFyIG5vQ29tcG9uZW50U2VsZWN0b3JNZXNzYWdlID0gJ0NvbXBvbmVudCBzZWxlY3RvcnMgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoICcgKyAnQGVtb3Rpb24vYmFiZWwtcGx1Z2luLCB0aGUgc3djIEVtb3Rpb24gcGx1Z2luLCBvciBhbm90aGVyIEVtb3Rpb24tYXdhcmUgJyArICdjb21waWxlciB0cmFuc2Zvcm0uJztcblxuZnVuY3Rpb24gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgaW50ZXJwb2xhdGlvbikge1xuICBpZiAoaW50ZXJwb2xhdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIGNvbXBvbmVudFNlbGVjdG9yID0gaW50ZXJwb2xhdGlvbjtcblxuICBpZiAoY29tcG9uZW50U2VsZWN0b3IuX19lbW90aW9uX3N0eWxlcyAhPT0gdW5kZWZpbmVkKSB7XG5cbiAgICByZXR1cm4gY29tcG9uZW50U2VsZWN0b3I7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGVvZiBpbnRlcnBvbGF0aW9uKSB7XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICB7XG4gICAgICAgIHZhciBrZXlmcmFtZXMgPSBpbnRlcnBvbGF0aW9uO1xuXG4gICAgICAgIGlmIChrZXlmcmFtZXMuYW5pbSA9PT0gMSkge1xuICAgICAgICAgIGN1cnNvciA9IHtcbiAgICAgICAgICAgIG5hbWU6IGtleWZyYW1lcy5uYW1lLFxuICAgICAgICAgICAgc3R5bGVzOiBrZXlmcmFtZXMuc3R5bGVzLFxuICAgICAgICAgICAgbmV4dDogY3Vyc29yXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4ga2V5ZnJhbWVzLm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc2VyaWFsaXplZFN0eWxlcyA9IGludGVycG9sYXRpb247XG5cbiAgICAgICAgaWYgKHNlcmlhbGl6ZWRTdHlsZXMuc3R5bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YXIgbmV4dCA9IHNlcmlhbGl6ZWRTdHlsZXMubmV4dDtcblxuICAgICAgICAgIGlmIChuZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIG5vdCB0aGUgbW9zdCBlZmZpY2llbnQgdGhpbmcgZXZlciBidXQgdGhpcyBpcyBhIHByZXR0eSByYXJlIGNhc2VcbiAgICAgICAgICAgIC8vIGFuZCB0aGVyZSB3aWxsIGJlIHZlcnkgZmV3IGl0ZXJhdGlvbnMgb2YgdGhpcyBnZW5lcmFsbHlcbiAgICAgICAgICAgIHdoaWxlIChuZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY3Vyc29yID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IG5leHQubmFtZSxcbiAgICAgICAgICAgICAgICBzdHlsZXM6IG5leHQuc3R5bGVzLFxuICAgICAgICAgICAgICAgIG5leHQ6IGN1cnNvclxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBuZXh0ID0gbmV4dC5uZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBzdHlsZXMgPSBzZXJpYWxpemVkU3R5bGVzLnN0eWxlcyArIFwiO1wiO1xuICAgICAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3JlYXRlU3RyaW5nRnJvbU9iamVjdChtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgaW50ZXJwb2xhdGlvbik7XG4gICAgICB9XG5cbiAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICB7XG4gICAgICAgIGlmIChtZXJnZWRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFyIHByZXZpb3VzQ3Vyc29yID0gY3Vyc29yO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBpbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzKTtcbiAgICAgICAgICBjdXJzb3IgPSBwcmV2aW91c0N1cnNvcjtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgcmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICB9IC8vIGZpbmFsaXplIHN0cmluZyB2YWx1ZXMgKHJlZ3VsYXIgc3RyaW5ncyBhbmQgZnVuY3Rpb25zIGludGVycG9sYXRlZCBpbnRvIGNzcyBjYWxscylcblxuXG4gIHZhciBhc1N0cmluZyA9IGludGVycG9sYXRpb247XG5cbiAgaWYgKHJlZ2lzdGVyZWQgPT0gbnVsbCkge1xuICAgIHJldHVybiBhc1N0cmluZztcbiAgfVxuXG4gIHZhciBjYWNoZWQgPSByZWdpc3RlcmVkW2FzU3RyaW5nXTtcbiAgcmV0dXJuIGNhY2hlZCAhPT0gdW5kZWZpbmVkID8gY2FjaGVkIDogYXNTdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0cmluZ0Zyb21PYmplY3QobWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIG9iaikge1xuICB2YXIgc3RyaW5nID0gJyc7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzdHJpbmcgKz0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgb2JqW2ldKSArIFwiO1wiO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdmFyIGFzU3RyaW5nID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHJlZ2lzdGVyZWQgIT0gbnVsbCAmJiByZWdpc3RlcmVkW2FzU3RyaW5nXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc3RyaW5nICs9IGtleSArIFwie1wiICsgcmVnaXN0ZXJlZFthc1N0cmluZ10gKyBcIn1cIjtcbiAgICAgICAgfSBlbHNlIGlmIChpc1Byb2Nlc3NhYmxlVmFsdWUoYXNTdHJpbmcpKSB7XG4gICAgICAgICAgc3RyaW5nICs9IHByb2Nlc3NTdHlsZU5hbWUoa2V5KSArIFwiOlwiICsgcHJvY2Vzc1N0eWxlVmFsdWUoa2V5LCBhc1N0cmluZykgKyBcIjtcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ05PX0NPTVBPTkVOVF9TRUxFQ1RPUicgJiYgaXNEZXZlbG9wbWVudCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihub0NvbXBvbmVudFNlbGVjdG9yTWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdHlwZW9mIHZhbHVlWzBdID09PSAnc3RyaW5nJyAmJiAocmVnaXN0ZXJlZCA9PSBudWxsIHx8IHJlZ2lzdGVyZWRbdmFsdWVbMF1dID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHZhbHVlLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgaWYgKGlzUHJvY2Vzc2FibGVWYWx1ZSh2YWx1ZVtfaV0pKSB7XG4gICAgICAgICAgICAgIHN0cmluZyArPSBwcm9jZXNzU3R5bGVOYW1lKGtleSkgKyBcIjpcIiArIHByb2Nlc3NTdHlsZVZhbHVlKGtleSwgdmFsdWVbX2ldKSArIFwiO1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgaW50ZXJwb2xhdGVkID0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgdmFsdWUpO1xuXG4gICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FuaW1hdGlvbic6XG4gICAgICAgICAgICBjYXNlICdhbmltYXRpb25OYW1lJzpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0cmluZyArPSBwcm9jZXNzU3R5bGVOYW1lKGtleSkgKyBcIjpcIiArIGludGVycG9sYXRlZCArIFwiO1wiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHN0cmluZyArPSBrZXkgKyBcIntcIiArIGludGVycG9sYXRlZCArIFwifVwiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxudmFyIGxhYmVsUGF0dGVybiA9IC9sYWJlbDpcXHMqKFteXFxzO3tdKylcXHMqKDt8JCkvZzsgLy8gdGhpcyBpcyB0aGUgY3Vyc29yIGZvciBrZXlmcmFtZXNcbi8vIGtleWZyYW1lcyBhcmUgc3RvcmVkIG9uIHRoZSBTZXJpYWxpemVkU3R5bGVzIG9iamVjdCBhcyBhIGxpbmtlZCBsaXN0XG5cbnZhciBjdXJzb3I7XG5mdW5jdGlvbiBzZXJpYWxpemVTdHlsZXMoYXJncywgcmVnaXN0ZXJlZCwgbWVyZ2VkUHJvcHMpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIHR5cGVvZiBhcmdzWzBdID09PSAnb2JqZWN0JyAmJiBhcmdzWzBdICE9PSBudWxsICYmIGFyZ3NbMF0uc3R5bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gYXJnc1swXTtcbiAgfVxuXG4gIHZhciBzdHJpbmdNb2RlID0gdHJ1ZTtcbiAgdmFyIHN0eWxlcyA9ICcnO1xuICBjdXJzb3IgPSB1bmRlZmluZWQ7XG4gIHZhciBzdHJpbmdzID0gYXJnc1swXTtcblxuICBpZiAoc3RyaW5ncyA9PSBudWxsIHx8IHN0cmluZ3MucmF3ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdHJpbmdNb2RlID0gZmFsc2U7XG4gICAgc3R5bGVzICs9IGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIHN0cmluZ3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBhc1RlbXBsYXRlU3RyaW5nc0FyciA9IHN0cmluZ3M7XG5cbiAgICBzdHlsZXMgKz0gYXNUZW1wbGF0ZVN0cmluZ3NBcnJbMF07XG4gIH0gLy8gd2Ugc3RhcnQgYXQgMSBzaW5jZSB3ZSd2ZSBhbHJlYWR5IGhhbmRsZWQgdGhlIGZpcnN0IGFyZ1xuXG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgc3R5bGVzICs9IGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIGFyZ3NbaV0pO1xuXG4gICAgaWYgKHN0cmluZ01vZGUpIHtcbiAgICAgIHZhciB0ZW1wbGF0ZVN0cmluZ3NBcnIgPSBzdHJpbmdzO1xuXG4gICAgICBzdHlsZXMgKz0gdGVtcGxhdGVTdHJpbmdzQXJyW2ldO1xuICAgIH1cbiAgfSAvLyB1c2luZyBhIGdsb2JhbCByZWdleCB3aXRoIC5leGVjIGlzIHN0YXRlZnVsIHNvIGxhc3RJbmRleCBoYXMgdG8gYmUgcmVzZXQgZWFjaCB0aW1lXG5cblxuICBsYWJlbFBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgdmFyIGlkZW50aWZpZXJOYW1lID0gJyc7XG4gIHZhciBtYXRjaDsgLy8gaHR0cHM6Ly9lc2JlbmNoLmNvbS9iZW5jaC81YjgwOWMyY2YyOTQ5ODAwYTBmNjFmYjVcblxuICB3aGlsZSAoKG1hdGNoID0gbGFiZWxQYXR0ZXJuLmV4ZWMoc3R5bGVzKSkgIT09IG51bGwpIHtcbiAgICBpZGVudGlmaWVyTmFtZSArPSAnLScgKyBtYXRjaFsxXTtcbiAgfVxuXG4gIHZhciBuYW1lID0gaGFzaFN0cmluZyhzdHlsZXMpICsgaWRlbnRpZmllck5hbWU7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHN0eWxlczogc3R5bGVzLFxuICAgIG5leHQ6IGN1cnNvclxuICB9O1xufVxuXG5leHBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxudmFyIHN5bmNGYWxsYmFjayA9IGZ1bmN0aW9uIHN5bmNGYWxsYmFjayhjcmVhdGUpIHtcbiAgcmV0dXJuIGNyZWF0ZSgpO1xufTtcblxudmFyIHVzZUluc2VydGlvbkVmZmVjdCA9IFJlYWN0Wyd1c2VJbnNlcnRpb24nICsgJ0VmZmVjdCddID8gUmVhY3RbJ3VzZUluc2VydGlvbicgKyAnRWZmZWN0J10gOiBmYWxzZTtcbnZhciB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrID0gdXNlSW5zZXJ0aW9uRWZmZWN0IHx8IHN5bmNGYWxsYmFjaztcbnZhciB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2sgPSB1c2VJbnNlcnRpb25FZmZlY3QgfHwgUmVhY3QudXNlTGF5b3V0RWZmZWN0O1xuXG5leHBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrLCB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2sgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY3JlYXRlQ2FjaGUgZnJvbSAnQGVtb3Rpb24vY2FjaGUnO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMnO1xuaW1wb3J0IHdlYWtNZW1vaXplIGZyb20gJ0BlbW90aW9uL3dlYWstbWVtb2l6ZSc7XG5pbXBvcnQgaG9pc3ROb25SZWFjdFN0YXRpY3MgZnJvbSAnLi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCB7IGdldFJlZ2lzdGVyZWRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBpbnNlcnRTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi91dGlscyc7XG5pbXBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi9zZXJpYWxpemUnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayB9IGZyb20gJ0BlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzJztcblxudmFyIGlzRGV2ZWxvcG1lbnQgPSBmYWxzZTtcblxudmFyIEVtb3Rpb25DYWNoZUNvbnRleHQgPSAvKiAjX19QVVJFX18gKi9SZWFjdC5jcmVhdGVDb250ZXh0KCAvLyB3ZSdyZSBkb2luZyB0aGlzIHRvIGF2b2lkIHByZWNvbnN0cnVjdCdzIGRlYWQgY29kZSBlbGltaW5hdGlvbiBpbiB0aGlzIG9uZSBjYXNlXG4vLyBiZWNhdXNlIHRoaXMgbW9kdWxlIGlzIHByaW1hcmlseSBpbnRlbmRlZCBmb3IgdGhlIGJyb3dzZXIgYW5kIG5vZGVcbi8vIGJ1dCBpdCdzIGFsc28gcmVxdWlyZWQgaW4gcmVhY3QgbmF0aXZlIGFuZCBzaW1pbGFyIGVudmlyb25tZW50cyBzb21ldGltZXNcbi8vIGFuZCB3ZSBjb3VsZCBoYXZlIGEgc3BlY2lhbCBidWlsZCBqdXN0IGZvciB0aGF0XG4vLyBidXQgdGhpcyBpcyBtdWNoIGVhc2llciBhbmQgdGhlIG5hdGl2ZSBwYWNrYWdlc1xuLy8gbWlnaHQgdXNlIGEgZGlmZmVyZW50IHRoZW1lIGNvbnRleHQgaW4gdGhlIGZ1dHVyZSBhbnl3YXlcbnR5cGVvZiBIVE1MRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgPyAvKiAjX19QVVJFX18gKi9jcmVhdGVDYWNoZSh7XG4gIGtleTogJ2Nzcydcbn0pIDogbnVsbCk7XG5cbnZhciBDYWNoZVByb3ZpZGVyID0gRW1vdGlvbkNhY2hlQ29udGV4dC5Qcm92aWRlcjtcbnZhciBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUgPSBmdW5jdGlvbiB1c2VFbW90aW9uQ2FjaGUoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KEVtb3Rpb25DYWNoZUNvbnRleHQpO1xufTtcblxudmFyIHdpdGhFbW90aW9uQ2FjaGUgPSBmdW5jdGlvbiB3aXRoRW1vdGlvbkNhY2hlKGZ1bmMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gICAgLy8gdGhlIGNhY2hlIHdpbGwgbmV2ZXIgYmUgbnVsbCBpbiB0aGUgYnJvd3NlclxuICAgIHZhciBjYWNoZSA9IHVzZUNvbnRleHQoRW1vdGlvbkNhY2hlQ29udGV4dCk7XG4gICAgcmV0dXJuIGZ1bmMocHJvcHMsIGNhY2hlLCByZWYpO1xuICB9KTtcbn07XG5cbnZhciBUaGVtZUNvbnRleHQgPSAvKiAjX19QVVJFX18gKi9SZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcblxudmFyIHVzZVRoZW1lID0gZnVuY3Rpb24gdXNlVGhlbWUoKSB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG59O1xuXG52YXIgZ2V0VGhlbWUgPSBmdW5jdGlvbiBnZXRUaGVtZShvdXRlclRoZW1lLCB0aGVtZSkge1xuICBpZiAodHlwZW9mIHRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIG1lcmdlZFRoZW1lID0gdGhlbWUob3V0ZXJUaGVtZSk7XG5cbiAgICByZXR1cm4gbWVyZ2VkVGhlbWU7XG4gIH1cblxuICByZXR1cm4gX2V4dGVuZHMoe30sIG91dGVyVGhlbWUsIHRoZW1lKTtcbn07XG5cbnZhciBjcmVhdGVDYWNoZVdpdGhUaGVtZSA9IC8qICNfX1BVUkVfXyAqL3dlYWtNZW1vaXplKGZ1bmN0aW9uIChvdXRlclRoZW1lKSB7XG4gIHJldHVybiB3ZWFrTWVtb2l6ZShmdW5jdGlvbiAodGhlbWUpIHtcbiAgICByZXR1cm4gZ2V0VGhlbWUob3V0ZXJUaGVtZSwgdGhlbWUpO1xuICB9KTtcbn0pO1xudmFyIFRoZW1lUHJvdmlkZXIgPSBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHByb3BzKSB7XG4gIHZhciB0aGVtZSA9IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcblxuICBpZiAocHJvcHMudGhlbWUgIT09IHRoZW1lKSB7XG4gICAgdGhlbWUgPSBjcmVhdGVDYWNoZVdpdGhUaGVtZSh0aGVtZSkocHJvcHMudGhlbWUpO1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRoZW1lQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiB0aGVtZVxuICB9LCBwcm9wcy5jaGlsZHJlbik7XG59O1xuZnVuY3Rpb24gd2l0aFRoZW1lKENvbXBvbmVudCkge1xuICB2YXIgY29tcG9uZW50TmFtZSA9IENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JztcbiAgdmFyIFdpdGhUaGVtZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIHJlbmRlcihwcm9wcywgcmVmKSB7XG4gICAgdmFyIHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIF9leHRlbmRzKHtcbiAgICAgIHRoZW1lOiB0aGVtZSxcbiAgICAgIHJlZjogcmVmXG4gICAgfSwgcHJvcHMpKTtcbiAgfSk7XG4gIFdpdGhUaGVtZS5kaXNwbGF5TmFtZSA9IFwiV2l0aFRoZW1lKFwiICsgY29tcG9uZW50TmFtZSArIFwiKVwiO1xuICByZXR1cm4gaG9pc3ROb25SZWFjdFN0YXRpY3MoV2l0aFRoZW1lLCBDb21wb25lbnQpO1xufVxuXG52YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cbnZhciB0eXBlUHJvcE5hbWUgPSAnX19FTU9USU9OX1RZUEVfUExFQVNFX0RPX05PVF9VU0VfXyc7XG52YXIgY3JlYXRlRW1vdGlvblByb3BzID0gZnVuY3Rpb24gY3JlYXRlRW1vdGlvblByb3BzKHR5cGUsIHByb3BzKSB7XG5cbiAgdmFyIG5ld1Byb3BzID0ge307XG5cbiAgZm9yICh2YXIgX2tleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd24uY2FsbChwcm9wcywgX2tleSkpIHtcbiAgICAgIG5ld1Byb3BzW19rZXldID0gcHJvcHNbX2tleV07XG4gICAgfVxuICB9XG5cbiAgbmV3UHJvcHNbdHlwZVByb3BOYW1lXSA9IHR5cGU7IC8vIFJ1bnRpbWUgbGFiZWxpbmcgaXMgYW4gb3B0LWluIGZlYXR1cmUgYmVjYXVzZTpcblxuICByZXR1cm4gbmV3UHJvcHM7XG59O1xuXG52YXIgSW5zZXJ0aW9uID0gZnVuY3Rpb24gSW5zZXJ0aW9uKF9yZWYpIHtcbiAgdmFyIGNhY2hlID0gX3JlZi5jYWNoZSxcbiAgICAgIHNlcmlhbGl6ZWQgPSBfcmVmLnNlcmlhbGl6ZWQsXG4gICAgICBpc1N0cmluZ1RhZyA9IF9yZWYuaXNTdHJpbmdUYWc7XG4gIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBpc1N0cmluZ1RhZyk7XG4gIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKTtcbiAgfSk7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG52YXIgRW1vdGlvbiA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSwgcmVmKSB7XG4gIHZhciBjc3NQcm9wID0gcHJvcHMuY3NzOyAvLyBzbyB0aGF0IHVzaW5nIGBjc3NgIGZyb20gYGVtb3Rpb25gIGFuZCBwYXNzaW5nIHRoZSByZXN1bHQgdG8gdGhlIGNzcyBwcm9wIHdvcmtzXG4gIC8vIG5vdCBwYXNzaW5nIHRoZSByZWdpc3RlcmVkIGNhY2hlIHRvIHNlcmlhbGl6ZVN0eWxlcyBiZWNhdXNlIGl0IHdvdWxkXG4gIC8vIG1ha2UgY2VydGFpbiBiYWJlbCBvcHRpbWlzYXRpb25zIG5vdCBwb3NzaWJsZVxuXG4gIGlmICh0eXBlb2YgY3NzUHJvcCA9PT0gJ3N0cmluZycgJiYgY2FjaGUucmVnaXN0ZXJlZFtjc3NQcm9wXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY3NzUHJvcCA9IGNhY2hlLnJlZ2lzdGVyZWRbY3NzUHJvcF07XG4gIH1cblxuICB2YXIgV3JhcHBlZENvbXBvbmVudCA9IHByb3BzW3R5cGVQcm9wTmFtZV07XG4gIHZhciByZWdpc3RlcmVkU3R5bGVzID0gW2Nzc1Byb3BdO1xuICB2YXIgY2xhc3NOYW1lID0gJyc7XG5cbiAgaWYgKHR5cGVvZiBwcm9wcy5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY2xhc3NOYW1lID0gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhjYWNoZS5yZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBwcm9wcy5jbGFzc05hbWUpO1xuICB9IGVsc2UgaWYgKHByb3BzLmNsYXNzTmFtZSAhPSBudWxsKSB7XG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lICsgXCIgXCI7XG4gIH1cblxuICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhyZWdpc3RlcmVkU3R5bGVzLCB1bmRlZmluZWQsIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KSk7XG5cbiAgY2xhc3NOYW1lICs9IGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuICB2YXIgbmV3UHJvcHMgPSB7fTtcblxuICBmb3IgKHZhciBfa2V5MiBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd24uY2FsbChwcm9wcywgX2tleTIpICYmIF9rZXkyICE9PSAnY3NzJyAmJiBfa2V5MiAhPT0gdHlwZVByb3BOYW1lICYmICghaXNEZXZlbG9wbWVudCApKSB7XG4gICAgICBuZXdQcm9wc1tfa2V5Ml0gPSBwcm9wc1tfa2V5Ml07XG4gICAgfVxuICB9XG5cbiAgbmV3UHJvcHMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuXG4gIGlmIChyZWYpIHtcbiAgICBuZXdQcm9wcy5yZWYgPSByZWY7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluc2VydGlvbiwge1xuICAgIGNhY2hlOiBjYWNoZSxcbiAgICBzZXJpYWxpemVkOiBzZXJpYWxpemVkLFxuICAgIGlzU3RyaW5nVGFnOiB0eXBlb2YgV3JhcHBlZENvbXBvbmVudCA9PT0gJ3N0cmluZydcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZWRDb21wb25lbnQsIG5ld1Byb3BzKSk7XG59KTtcblxudmFyIEVtb3Rpb24kMSA9IEVtb3Rpb247XG5cbmV4cG9ydCB7IENhY2hlUHJvdmlkZXIgYXMgQywgRW1vdGlvbiQxIGFzIEUsIFRoZW1lQ29udGV4dCBhcyBULCBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUgYXMgXywgVGhlbWVQcm92aWRlciBhcyBhLCB3aXRoVGhlbWUgYXMgYiwgY3JlYXRlRW1vdGlvblByb3BzIGFzIGMsIGhhc093biBhcyBoLCBpc0RldmVsb3BtZW50IGFzIGksIHVzZVRoZW1lIGFzIHUsIHdpdGhFbW90aW9uQ2FjaGUgYXMgdyB9O1xuIiwiaW1wb3J0IHsgaCBhcyBoYXNPd24sIEUgYXMgRW1vdGlvbiwgYyBhcyBjcmVhdGVFbW90aW9uUHJvcHMsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgVCBhcyBUaGVtZUNvbnRleHQsIGkgYXMgaXNEZXZlbG9wbWVudCB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWYwZGU5NjhlLmJyb3dzZXIuZXNtLmpzJztcbmV4cG9ydCB7IEMgYXMgQ2FjaGVQcm92aWRlciwgVCBhcyBUaGVtZUNvbnRleHQsIGEgYXMgVGhlbWVQcm92aWRlciwgXyBhcyBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUsIHUgYXMgdXNlVGhlbWUsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgYiBhcyB3aXRoVGhlbWUgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1mMGRlOTY4ZS5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbnNlcnRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBnZXRSZWdpc3RlcmVkU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vdXRpbHMnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrLCB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIH0gZnJvbSAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuaW1wb3J0IHsgc2VyaWFsaXplU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCAnQGVtb3Rpb24vY2FjaGUnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0ICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0ICcuLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5cbnZhciBqc3ggPSBmdW5jdGlvbiBqc3godHlwZSwgcHJvcHMpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblxuICBpZiAocHJvcHMgPT0gbnVsbCB8fCAhaGFzT3duLmNhbGwocHJvcHMsICdjc3MnKSkge1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG4gIH1cblxuICB2YXIgYXJnc0xlbmd0aCA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgY3JlYXRlRWxlbWVudEFyZ0FycmF5ID0gbmV3IEFycmF5KGFyZ3NMZW5ndGgpO1xuICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbMF0gPSBFbW90aW9uO1xuICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbMV0gPSBjcmVhdGVFbW90aW9uUHJvcHModHlwZSwgcHJvcHMpO1xuXG4gIGZvciAodmFyIGkgPSAyOyBpIDwgYXJnc0xlbmd0aDsgaSsrKSB7XG4gICAgY3JlYXRlRWxlbWVudEFyZ0FycmF5W2ldID0gYXJnc1tpXTtcbiAgfVxuXG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KG51bGwsIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSk7XG59O1xuXG4oZnVuY3Rpb24gKF9qc3gpIHtcbiAgdmFyIEpTWDtcblxuICAoZnVuY3Rpb24gKF9KU1gpIHt9KShKU1ggfHwgKEpTWCA9IF9qc3guSlNYIHx8IChfanN4LkpTWCA9IHt9KSkpO1xufSkoanN4IHx8IChqc3ggPSB7fSkpO1xuXG4vLyBpbml0aWFsIHJlbmRlciBmcm9tIGJyb3dzZXIsIGluc2VydEJlZm9yZSBjb250ZXh0LnNoZWV0LnRhZ3NbMF0gb3IgaWYgYSBzdHlsZSBoYXNuJ3QgYmVlbiBpbnNlcnRlZCB0aGVyZSB5ZXQsIGFwcGVuZENoaWxkXG4vLyBpbml0aWFsIGNsaWVudC1zaWRlIHJlbmRlciBmcm9tIFNTUiwgdXNlIHBsYWNlIG9mIGh5ZHJhdGluZyB0YWdcblxudmFyIEdsb2JhbCA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSkge1xuXG4gIHZhciBzdHlsZXMgPSBwcm9wcy5zdHlsZXM7XG4gIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKFtzdHlsZXNdLCB1bmRlZmluZWQsIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KSk7XG4gIC8vIGJ1dCBpdCBpcyBiYXNlZCBvbiBhIGNvbnN0YW50IHRoYXQgd2lsbCBuZXZlciBjaGFuZ2UgYXQgcnVudGltZVxuICAvLyBpdCdzIGVmZmVjdGl2ZWx5IGxpa2UgaGF2aW5nIHR3byBpbXBsZW1lbnRhdGlvbnMgYW5kIHN3aXRjaGluZyB0aGVtIG91dFxuICAvLyBzbyBpdCdzIG5vdCBhY3R1YWxseSBicmVha2luZyBhbnl0aGluZ1xuXG5cbiAgdmFyIHNoZWV0UmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbFwiOyAvLyB1c2UgY2FzZSBvZiBodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL2lzc3Vlcy8yNjc1XG5cbiAgICB2YXIgc2hlZXQgPSBuZXcgY2FjaGUuc2hlZXQuY29uc3RydWN0b3Ioe1xuICAgICAga2V5OiBrZXksXG4gICAgICBub25jZTogY2FjaGUuc2hlZXQubm9uY2UsXG4gICAgICBjb250YWluZXI6IGNhY2hlLnNoZWV0LmNvbnRhaW5lcixcbiAgICAgIHNwZWVkeTogY2FjaGUuc2hlZXQuaXNTcGVlZHlcbiAgICB9KTtcbiAgICB2YXIgcmVoeWRyYXRpbmcgPSBmYWxzZTtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJzdHlsZVtkYXRhLWVtb3Rpb249XFxcIlwiICsga2V5ICsgXCIgXCIgKyBzZXJpYWxpemVkLm5hbWUgKyBcIlxcXCJdXCIpO1xuXG4gICAgaWYgKGNhY2hlLnNoZWV0LnRhZ3MubGVuZ3RoKSB7XG4gICAgICBzaGVldC5iZWZvcmUgPSBjYWNoZS5zaGVldC50YWdzWzBdO1xuICAgIH1cblxuICAgIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgICByZWh5ZHJhdGluZyA9IHRydWU7IC8vIGNsZWFyIHRoZSBoYXNoIHNvIHRoaXMgbm9kZSB3b24ndCBiZSByZWNvZ25pemFibGUgYXMgcmVoeWRyYXRhYmxlIGJ5IG90aGVyIDxHbG9iYWwvPnNcblxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtZW1vdGlvbicsIGtleSk7XG4gICAgICBzaGVldC5oeWRyYXRlKFtub2RlXSk7XG4gICAgfVxuXG4gICAgc2hlZXRSZWYuY3VycmVudCA9IFtzaGVldCwgcmVoeWRyYXRpbmddO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBzaGVldC5mbHVzaCgpO1xuICAgIH07XG4gIH0sIFtjYWNoZV0pO1xuICB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBzaGVldFJlZkN1cnJlbnQgPSBzaGVldFJlZi5jdXJyZW50O1xuICAgIHZhciBzaGVldCA9IHNoZWV0UmVmQ3VycmVudFswXSxcbiAgICAgICAgcmVoeWRyYXRpbmcgPSBzaGVldFJlZkN1cnJlbnRbMV07XG5cbiAgICBpZiAocmVoeWRyYXRpbmcpIHtcbiAgICAgIHNoZWV0UmVmQ3VycmVudFsxXSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzZXJpYWxpemVkLm5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gaW5zZXJ0IGtleWZyYW1lc1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLm5leHQsIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChzaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgLy8gaWYgdGhpcyBkb2Vzbid0IGV4aXN0IHRoZW4gaXQgd2lsbCBiZSBudWxsIHNvIHRoZSBzdHlsZSBlbGVtZW50IHdpbGwgYmUgYXBwZW5kZWRcbiAgICAgIHZhciBlbGVtZW50ID0gc2hlZXQudGFnc1tzaGVldC50YWdzLmxlbmd0aCAtIDFdLm5leHRFbGVtZW50U2libGluZztcbiAgICAgIHNoZWV0LmJlZm9yZSA9IGVsZW1lbnQ7XG4gICAgICBzaGVldC5mbHVzaCgpO1xuICAgIH1cblxuICAgIGNhY2hlLmluc2VydChcIlwiLCBzZXJpYWxpemVkLCBzaGVldCwgZmFsc2UpO1xuICB9LCBbY2FjaGUsIHNlcmlhbGl6ZWQubmFtZV0pO1xuICByZXR1cm4gbnVsbDtcbn0pO1xuXG5mdW5jdGlvbiBjc3MoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplU3R5bGVzKGFyZ3MpO1xufVxuXG5mdW5jdGlvbiBrZXlmcmFtZXMoKSB7XG4gIHZhciBpbnNlcnRhYmxlID0gY3NzLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgdmFyIG5hbWUgPSBcImFuaW1hdGlvbi1cIiArIGluc2VydGFibGUubmFtZTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHN0eWxlczogXCJAa2V5ZnJhbWVzIFwiICsgbmFtZSArIFwie1wiICsgaW5zZXJ0YWJsZS5zdHlsZXMgKyBcIn1cIixcbiAgICBhbmltOiAxLFxuICAgIHRvU3RyaW5nOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBcIl9FTU9fXCIgKyB0aGlzLm5hbWUgKyBcIl9cIiArIHRoaXMuc3R5bGVzICsgXCJfRU1PX1wiO1xuICAgIH1cbiAgfTtcbn1cblxudmFyIGNsYXNzbmFtZXMgPSBmdW5jdGlvbiBjbGFzc25hbWVzKGFyZ3MpIHtcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBjbHMgPSAnJztcblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZyA9PSBudWxsKSBjb250aW51ZTtcbiAgICB2YXIgdG9BZGQgPSB2b2lkIDA7XG5cbiAgICBzd2l0Y2ggKHR5cGVvZiBhcmcpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgICAgIHRvQWRkID0gY2xhc3NuYW1lcyhhcmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIHRvQWRkID0gJyc7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGsgaW4gYXJnKSB7XG4gICAgICAgICAgICAgIGlmIChhcmdba10gJiYgaykge1xuICAgICAgICAgICAgICAgIHRvQWRkICYmICh0b0FkZCArPSAnICcpO1xuICAgICAgICAgICAgICAgIHRvQWRkICs9IGs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB7XG4gICAgICAgICAgdG9BZGQgPSBhcmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9BZGQpIHtcbiAgICAgIGNscyAmJiAoY2xzICs9ICcgJyk7XG4gICAgICBjbHMgKz0gdG9BZGQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNscztcbn07XG5cbmZ1bmN0aW9uIG1lcmdlKHJlZ2lzdGVyZWQsIGNzcywgY2xhc3NOYW1lKSB7XG4gIHZhciByZWdpc3RlcmVkU3R5bGVzID0gW107XG4gIHZhciByYXdDbGFzc05hbWUgPSBnZXRSZWdpc3RlcmVkU3R5bGVzKHJlZ2lzdGVyZWQsIHJlZ2lzdGVyZWRTdHlsZXMsIGNsYXNzTmFtZSk7XG5cbiAgaWYgKHJlZ2lzdGVyZWRTdHlsZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICByZXR1cm4gcmF3Q2xhc3NOYW1lICsgY3NzKHJlZ2lzdGVyZWRTdHlsZXMpO1xufVxuXG52YXIgSW5zZXJ0aW9uID0gZnVuY3Rpb24gSW5zZXJ0aW9uKF9yZWYpIHtcbiAgdmFyIGNhY2hlID0gX3JlZi5jYWNoZSxcbiAgICAgIHNlcmlhbGl6ZWRBcnIgPSBfcmVmLnNlcmlhbGl6ZWRBcnI7XG4gIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2soZnVuY3Rpb24gKCkge1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpYWxpemVkQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWRBcnJbaV0sIGZhbHNlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxudmFyIENsYXNzTmFtZXMgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgdmFyIGhhc1JlbmRlcmVkID0gZmFsc2U7XG4gIHZhciBzZXJpYWxpemVkQXJyID0gW107XG5cbiAgdmFyIGNzcyA9IGZ1bmN0aW9uIGNzcygpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgaXNEZXZlbG9wbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjc3MgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVuZGVyJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKGFyZ3MsIGNhY2hlLnJlZ2lzdGVyZWQpO1xuICAgIHNlcmlhbGl6ZWRBcnIucHVzaChzZXJpYWxpemVkKTsgLy8gcmVnaXN0cmF0aW9uIGhhcyB0byBoYXBwZW4gaGVyZSBhcyB0aGUgcmVzdWx0IG9mIHRoaXMgbWlnaHQgZ2V0IGNvbnN1bWVkIGJ5IGBjeGBcblxuICAgIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBmYWxzZSk7XG4gICAgcmV0dXJuIGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuICB9O1xuXG4gIHZhciBjeCA9IGZ1bmN0aW9uIGN4KCkge1xuICAgIGlmIChoYXNSZW5kZXJlZCAmJiBpc0RldmVsb3BtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2N4IGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIHJldHVybiBtZXJnZShjYWNoZS5yZWdpc3RlcmVkLCBjc3MsIGNsYXNzbmFtZXMoYXJncykpO1xuICB9O1xuXG4gIHZhciBjb250ZW50ID0ge1xuICAgIGNzczogY3NzLFxuICAgIGN4OiBjeCxcbiAgICB0aGVtZTogUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpXG4gIH07XG4gIHZhciBlbGUgPSBwcm9wcy5jaGlsZHJlbihjb250ZW50KTtcbiAgaGFzUmVuZGVyZWQgPSB0cnVlO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluc2VydGlvbiwge1xuICAgIGNhY2hlOiBjYWNoZSxcbiAgICBzZXJpYWxpemVkQXJyOiBzZXJpYWxpemVkQXJyXG4gIH0pLCBlbGUpO1xufSk7XG5cbmV4cG9ydCB7IENsYXNzTmFtZXMsIEdsb2JhbCwganN4IGFzIGNyZWF0ZUVsZW1lbnQsIGNzcywganN4LCBrZXlmcmFtZXMgfTtcbiIsImZ1bmN0aW9uIF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwoZSwgdCkge1xuICByZXR1cm4gdCB8fCAodCA9IGUuc2xpY2UoMCkpLCBPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIHtcbiAgICByYXc6IHtcbiAgICAgIHZhbHVlOiBPYmplY3QuZnJlZXplKHQpXG4gICAgfVxuICB9KSk7XG59XG5leHBvcnQgeyBfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsIGFzIGRlZmF1bHQgfTsiLCIvKipcbiAqIEN1c3RvbSBwb3NpdGlvbmluZyByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92aXJ0dWFsLWVsZW1lbnRzXG4gKi9cblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxpZ25tZW50cyA9IFsnc3RhcnQnLCAnZW5kJ107XG5jb25zdCBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMF0sIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMV0pLCBbXSk7XG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3QgY3JlYXRlQ29vcmRzID0gdiA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGNsYW1wKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IHJlY3Q7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICBsZWZ0OiB4LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5leHBvcnQgeyBhbGlnbm1lbnRzLCBjbGFtcCwgY3JlYXRlQ29vcmRzLCBldmFsdWF0ZSwgZXhwYW5kUGFkZGluZ09iamVjdCwgZmxvb3IsIGdldEFsaWdubWVudCwgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldEF4aXNMZW5ndGgsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlQXhpcywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldFBhZGRpbmdPYmplY3QsIGdldFNpZGUsIGdldFNpZGVBeGlzLCBtYXgsIG1pbiwgcGxhY2VtZW50cywgcmVjdFRvQ2xpZW50UmVjdCwgcm91bmQsIHNpZGVzIH07XG4iLCJpbXBvcnQgeyBnZXRTaWRlQXhpcywgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QXhpc0xlbmd0aCwgZ2V0U2lkZSwgZ2V0QWxpZ25tZW50LCBldmFsdWF0ZSwgZ2V0UGFkZGluZ09iamVjdCwgcmVjdFRvQ2xpZW50UmVjdCwgbWluLCBjbGFtcCwgcGxhY2VtZW50cywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBzaWRlcywgbWF4LCBnZXRPcHBvc2l0ZUF4aXMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuZXhwb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBzaWRlQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWduTGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IHNpZGVBeGlzID09PSAneSc7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0cy5mbG9hdGluZy53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3RzLmZsb2F0aW5nLmhlaWdodFxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWlkZGxld2FyZURhdGFcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IGNsYW1wKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUbyBlbnN1cmUgYHNoaWZ0KClgIGNvbnRpbnVlcyB0byB0YWtlIGFjdGlvbixcbiAgICAvLyBhIHNpbmdsZSByZXNldCBpcyBwZXJmb3JtZWQgd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4IDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gKyBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldCAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uKHNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgcmVzZXQ6IHNob3VsZEFkZE9mZnNldFxuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzJDEgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gcGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgYWxpZ25tZW50U2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50cyQxWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMF1dLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1sxXV1dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAgICAgLy8gSWYgYSByZXNldCBieSB0aGUgYXJyb3cgd2FzIGNhdXNlZCBkdWUgdG8gYW4gYWxpZ25tZW50IG9mZnNldCBiZWluZ1xuICAgICAgLy8gYWRkZWQsIHdlIHNob3VsZCBza2lwIGFueSBsb2dpYyBub3cgc2luY2UgYGZsaXAoKWAgaGFzIGFscmVhZHkgZG9uZSBpdHNcbiAgICAgIC8vIHdvcmsuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI1NDkjaXNzdWVjb21tZW50LTE3MTk2MDE2NDNcbiAgICAgIGlmICgoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaW5pdGlhbFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoaW5pdGlhbFBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZSc7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVzWzBdXSwgb3ZlcmZsb3dbc2lkZXNbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlcjIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyBkaXJlY3Rpb25zIGZhdm9yaW5nIGdyZWF0ZXIgd2lkdGguXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gJ3knO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSkubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlcjJbMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8vIEZvciB0eXBlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCB0aGUgYE9mZnNldE9wdGlvbnNgIHR5cGUgd2FzIGFsc29cbi8vIERlcml2YWJsZS5cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogMCxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbCxcbiAgICAuLi5yYXdWYWx1ZVxuICB9O1xuICBpZiAoYWxpZ25tZW50ICYmIHR5cGVvZiBhbGlnbm1lbnRBeGlzID09PSAnbnVtYmVyJykge1xuICAgIGNyb3NzQXhpcyA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyBhbGlnbm1lbnRBeGlzICogLTEgOiBhbGlnbm1lbnRBeGlzO1xuICB9XG4gIHJldHVybiBpc1ZlcnRpY2FsID8ge1xuICAgIHg6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpLFxuICAgIHk6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aVxuICB9IDoge1xuICAgIHg6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aSxcbiAgICB5OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aVxuICB9O1xufVxuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkYXJyb3c7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGRpZmZDb29yZHMgPSBhd2FpdCBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucyk7XG5cbiAgICAgIC8vIElmIHRoZSBwbGFjZW1lbnQgaXMgdGhlIHNhbWUgYW5kIHRoZSBhcnJvdyBjYXVzZWQgYW4gYWxpZ25tZW50IG9mZnNldFxuICAgICAgLy8gdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgcG9zaXRpb25pbmcgY29vcmRpbmF0ZXMuXG4gICAgICBpZiAocGxhY2VtZW50ID09PSAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZS5wbGFjZW1lbnQpICYmIChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5kaWZmQ29vcmRzLFxuICAgICAgICAgIHBsYWNlbWVudFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2hpZnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBsaW1pdGVyID0ge1xuICAgICAgICAgIGZuOiBfcmVmID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH0gPSBfcmVmO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IG1haW5BeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IG1haW5BeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWFpbkF4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBtYWluQXhpc0Nvb3JkID0gY2xhbXAobWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gY2xhbXAobWluLCBjcm9zc0F4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpbWl0ZWRDb29yZHMgPSBsaW1pdGVyLmZuKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5saW1pdGVkQ29vcmRzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgeDogbGltaXRlZENvb3Jkcy54IC0geCxcbiAgICAgICAgICB5OiBsaW1pdGVkQ29vcmRzLnkgLSB5XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBvZmZzZXQgPSAwLFxuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGNvbnN0IHJhd09mZnNldCA9IGV2YWx1YXRlKG9mZnNldCwgc3RhdGUpO1xuICAgICAgY29uc3QgY29tcHV0ZWRPZmZzZXQgPSB0eXBlb2YgcmF3T2Zmc2V0ID09PSAnbnVtYmVyJyA/IHtcbiAgICAgICAgbWFpbkF4aXM6IHJhd09mZnNldCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwXG4gICAgICB9IDoge1xuICAgICAgICBtYWluQXhpczogMCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwLFxuICAgICAgICAuLi5yYXdPZmZzZXRcbiAgICAgIH07XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dIC0gY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGlmIChtYWluQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAobWFpbkF4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJG9mZnNlMjtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICAgICAgY29uc3QgaXNPcmlnaW5TaWRlID0gWyd0b3AnLCAnbGVmdCddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgKGlzT3JpZ2luU2lkZSA/ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlW2Nyb3NzQXhpc10pIHx8IDAgOiAwKSArIChpc09yaWdpblNpZGUgPyAwIDogY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzKTtcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dICsgKGlzT3JpZ2luU2lkZSA/IDAgOiAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZTIgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UyW2Nyb3NzQXhpc10pIHx8IDApIC0gKGlzT3JpZ2luU2lkZSA/IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyA6IDApO1xuICAgICAgICBpZiAoY3Jvc3NBeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAoY3Jvc3NBeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpemUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFwcGx5ID0gKCkgPT4ge30sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc1lBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knO1xuICAgICAgY29uc3Qge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICB9ID0gcmVjdHMuZmxvYXRpbmc7XG4gICAgICBsZXQgaGVpZ2h0U2lkZTtcbiAgICAgIGxldCB3aWR0aFNpZGU7XG4gICAgICBpZiAoc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IHNpZGU7XG4gICAgICAgIHdpZHRoU2lkZSA9IGFsaWdubWVudCA9PT0gKChhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpID8gJ3N0YXJ0JyA6ICdlbmQnKSA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aWR0aFNpZGUgPSBzaWRlO1xuICAgICAgICBoZWlnaHRTaWRlID0gYWxpZ25tZW50ID09PSAnZW5kJyA/ICd0b3AnIDogJ2JvdHRvbSc7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCA9IHdpZHRoIC0gb3ZlcmZsb3cubGVmdCAtIG92ZXJmbG93LnJpZ2h0O1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBtaW4oaGVpZ2h0IC0gb3ZlcmZsb3dbaGVpZ2h0U2lkZV0sIG1heGltdW1DbGlwcGluZ0hlaWdodCk7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoID0gbWluKHdpZHRoIC0gb3ZlcmZsb3dbd2lkdGhTaWRlXSwgbWF4aW11bUNsaXBwaW5nV2lkdGgpO1xuICAgICAgY29uc3Qgbm9TaGlmdCA9ICFzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdDtcbiAgICAgIGxldCBhdmFpbGFibGVIZWlnaHQgPSBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodDtcbiAgICAgIGxldCBhdmFpbGFibGVXaWR0aCA9IG92ZXJmbG93QXZhaWxhYmxlV2lkdGg7XG4gICAgICBpZiAoaXNZQXhpcykge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IGFsaWdubWVudCB8fCBub1NoaWZ0ID8gbWluKG92ZXJmbG93QXZhaWxhYmxlV2lkdGgsIG1heGltdW1DbGlwcGluZ1dpZHRoKSA6IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gYWxpZ25tZW50IHx8IG5vU2hpZnQgPyBtaW4ob3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQsIG1heGltdW1DbGlwcGluZ0hlaWdodCkgOiBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobm9TaGlmdCAmJiAhYWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBtYXgob3ZlcmZsb3cubGVmdCwgMCk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBtYXgob3ZlcmZsb3cucmlnaHQsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gbWF4KG92ZXJmbG93LnRvcCwgMCk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBtYXgob3ZlcmZsb3cuYm90dG9tLCAwKTtcbiAgICAgICAgaWYgKGlzWUF4aXMpIHtcbiAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gMiAqICh4TWluICE9PSAwIHx8IHhNYXggIT09IDAgPyB4TWluICsgeE1heCA6IG1heChvdmVyZmxvdy5sZWZ0LCBvdmVyZmxvdy5yaWdodCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIDIgKiAoeU1pbiAhPT0gMCB8fCB5TWF4ICE9PSAwID8geU1pbiArIHlNYXggOiBtYXgob3ZlcmZsb3cudG9wLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHkoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGgsXG4gICAgICAgIGF2YWlsYWJsZUhlaWdodFxuICAgICAgfSk7XG4gICAgICBjb25zdCBuZXh0RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgaWYgKHdpZHRoICE9PSBuZXh0RGltZW5zaW9ucy53aWR0aCB8fCBoZWlnaHQgIT09IG5leHREaW1lbnNpb25zLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHNoaWZ0LCBzaXplIH07XG4iLCJmdW5jdGlvbiBoYXNXaW5kb3coKSB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cbmZ1bmN0aW9uIGdldE5vZGVOYW1lKG5vZGUpIHtcbiAgaWYgKGlzTm9kZShub2RlKSkge1xuICAgIHJldHVybiAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICAvLyBNb2NrZWQgbm9kZXMgaW4gdGVzdGluZyBlbnZpcm9ubWVudHMgbWF5IG5vdCBiZSBpbnN0YW5jZXMgb2YgTm9kZS4gQnlcbiAgLy8gcmV0dXJuaW5nIGAjZG9jdW1lbnRgIGFuIGluZmluaXRlIGxvb3Agd29uJ3Qgb2NjdXIuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjMxN1xuICByZXR1cm4gJyNkb2N1bWVudCc7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuIChub2RlID09IG51bGwgfHwgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICB2YXIgX3JlZjtcbiAgcmV0dXJuIChfcmVmID0gKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZWYuZG9jdW1lbnRFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgTm9kZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkgfHwgdHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLlNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVsnaW5saW5lJywgJ2NvbnRlbnRzJ10uaW5jbHVkZXMoZGlzcGxheSk7XG59XG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpO1xufVxuZnVuY3Rpb24gaXNUb3BMYXllcihlbGVtZW50KSB7XG4gIHJldHVybiBbJzpwb3BvdmVyLW9wZW4nLCAnOm1vZGFsJ10uc29tZShzZWxlY3RvciA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudE9yQ3NzKSB7XG4gIGNvbnN0IHdlYmtpdCA9IGlzV2ViS2l0KCk7XG4gIGNvbnN0IGNzcyA9IGlzRWxlbWVudChlbGVtZW50T3JDc3MpID8gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50T3JDc3MpIDogZWxlbWVudE9yQ3NzO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHJldHVybiBjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgKGNzcy5jb250YWluZXJUeXBlID8gY3NzLmNvbnRhaW5lclR5cGUgIT09ICdub3JtYWwnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5iYWNrZHJvcEZpbHRlciA/IGNzcy5iYWNrZHJvcEZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAobmV4dFJlZlJlY3QueCAhPT0gcHJldlJlZlJlY3QueCB8fCBuZXh0UmVmUmVjdC55ICE9PSBwcmV2UmVmUmVjdC55IHx8IG5leHRSZWZSZWN0LndpZHRoICE9PSBwcmV2UmVmUmVjdC53aWR0aCB8fCBuZXh0UmVmUmVjdC5oZWlnaHQgIT09IHByZXZSZWZSZWN0LmhlaWdodCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyMjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICBjbGVhbnVwSW8gPT0gbnVsbCB8fCBjbGVhbnVwSW8oKTtcbiAgICAoX3Jlc2l6ZU9ic2VydmVyMiA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlcjIuZGlzY29ubmVjdCgpO1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmNvbnN0IGRldGVjdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3ckMTtcblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gYXV0b1BsYWNlbWVudCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBzaGlmdCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZsaXAkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gc2l6ZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGhpZGUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBhcnJvdyQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBpbmxpbmUkMTtcblxuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGxpbWl0U2hpZnQkMTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfTtcbiIsImltcG9ydCB7IHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxudmFyIGluZGV4ID0gdXNlTGF5b3V0RWZmZWN0IDtcblxuZXhwb3J0IHsgaW5kZXggYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMic7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcyc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcywgY3NzIGFzIGNzcyQyIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXknO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5pbXBvcnQgX3R5cGVvZiBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YnO1xuaW1wb3J0IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdGFnZ2VkVGVtcGxhdGVMaXRlcmFsJztcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHknO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlQ2FsbGJhY2ssIGNyZWF0ZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgYXV0b1VwZGF0ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHVzZUxheW91dEVmZmVjdCBmcm9tICd1c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0JztcblxudmFyIF9leGNsdWRlZCQ0ID0gW1wiY2xhc3NOYW1lXCIsIFwiY2xlYXJWYWx1ZVwiLCBcImN4XCIsIFwiZ2V0U3R5bGVzXCIsIFwiZ2V0Q2xhc3NOYW1lc1wiLCBcImdldFZhbHVlXCIsIFwiaGFzVmFsdWVcIiwgXCJpc011bHRpXCIsIFwiaXNSdGxcIiwgXCJvcHRpb25zXCIsIFwic2VsZWN0T3B0aW9uXCIsIFwic2VsZWN0UHJvcHNcIiwgXCJzZXRWYWx1ZVwiLCBcInRoZW1lXCJdO1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOTyBPUFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBub29wID0gZnVuY3Rpb24gbm9vcCgpIHt9O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENsYXNzIE5hbWUgUHJlZml4ZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29tcG9uZW50IHN0YXRlIGZvciBzdHlsaW5nIHdpdGggY2xhc3MgbmFtZXMuXG5cbiBFeHBlY3RzIGFuIGFycmF5IG9mIHN0cmluZ3MgT1IgYSBzdHJpbmcvb2JqZWN0IHBhaXI6XG4gLSBjbGFzc05hbWUoWydjb21wJywgJ2NvbXAtYXJnJywgJ2NvbXAtYXJnLTInXSlcbiAgIEByZXR1cm5zICdyZWFjdC1zZWxlY3RfX2NvbXAgcmVhY3Qtc2VsZWN0X19jb21wLWFyZyByZWFjdC1zZWxlY3RfX2NvbXAtYXJnLTInXG4gLSBjbGFzc05hbWUoJ2NvbXAnLCB7IHNvbWU6IHRydWUsIHN0YXRlOiBmYWxzZSB9KVxuICAgQHJldHVybnMgJ3JlYWN0LXNlbGVjdF9fY29tcCByZWFjdC1zZWxlY3RfX2NvbXAtLXNvbWUnXG4qL1xuZnVuY3Rpb24gYXBwbHlQcmVmaXhUb05hbWUocHJlZml4LCBuYW1lKSB7XG4gIGlmICghbmFtZSkge1xuICAgIHJldHVybiBwcmVmaXg7XG4gIH0gZWxzZSBpZiAobmFtZVswXSA9PT0gJy0nKSB7XG4gICAgcmV0dXJuIHByZWZpeCArIG5hbWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHByZWZpeCArICdfXycgKyBuYW1lO1xuICB9XG59XG5mdW5jdGlvbiBjbGFzc05hbWVzKHByZWZpeCwgc3RhdGUpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGNsYXNzTmFtZUxpc3QgPSBuZXcgQXJyYXkoX2xlbiA+IDIgPyBfbGVuIC0gMiA6IDApLCBfa2V5ID0gMjsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGNsYXNzTmFtZUxpc3RbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG4gIHZhciBhcnIgPSBbXS5jb25jYXQoY2xhc3NOYW1lTGlzdCk7XG4gIGlmIChzdGF0ZSAmJiBwcmVmaXgpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gc3RhdGUpIHtcbiAgICAgIGlmIChzdGF0ZS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHN0YXRlW2tleV0pIHtcbiAgICAgICAgYXJyLnB1c2goXCJcIi5jb25jYXQoYXBwbHlQcmVmaXhUb05hbWUocHJlZml4LCBrZXkpKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGk7XG4gIH0pLm1hcChmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBTdHJpbmcoaSkudHJpbSgpO1xuICB9KS5qb2luKCcgJyk7XG59XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENsZWFuIFZhbHVlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGNsZWFuVmFsdWUgPSBmdW5jdGlvbiBjbGVhblZhbHVlKHZhbHVlKSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmZpbHRlcihCb29sZWFuKTtcbiAgaWYgKF90eXBlb2YodmFsdWUpID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkgcmV0dXJuIFt2YWx1ZV07XG4gIHJldHVybiBbXTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ2xlYW4gQ29tbW9uIFByb3BzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGNsZWFuQ29tbW9uUHJvcHMgPSBmdW5jdGlvbiBjbGVhbkNvbW1vblByb3BzKHByb3BzKSB7XG4gIC8vY2xhc3NOYW1lXG4gIHByb3BzLmNsYXNzTmFtZTtcbiAgICBwcm9wcy5jbGVhclZhbHVlO1xuICAgIHByb3BzLmN4O1xuICAgIHByb3BzLmdldFN0eWxlcztcbiAgICBwcm9wcy5nZXRDbGFzc05hbWVzO1xuICAgIHByb3BzLmdldFZhbHVlO1xuICAgIHByb3BzLmhhc1ZhbHVlO1xuICAgIHByb3BzLmlzTXVsdGk7XG4gICAgcHJvcHMuaXNSdGw7XG4gICAgcHJvcHMub3B0aW9ucztcbiAgICBwcm9wcy5zZWxlY3RPcHRpb247XG4gICAgcHJvcHMuc2VsZWN0UHJvcHM7XG4gICAgcHJvcHMuc2V0VmFsdWU7XG4gICAgcHJvcHMudGhlbWU7XG4gICAgdmFyIGlubmVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCQ0KTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe30sIGlubmVyUHJvcHMpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHZXQgU3R5bGUgUHJvcHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgZ2V0U3R5bGVQcm9wcyA9IGZ1bmN0aW9uIGdldFN0eWxlUHJvcHMocHJvcHMsIG5hbWUsIGNsYXNzTmFtZXNTdGF0ZSkge1xuICB2YXIgY3ggPSBwcm9wcy5jeCxcbiAgICBnZXRTdHlsZXMgPSBwcm9wcy5nZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lcyA9IHByb3BzLmdldENsYXNzTmFtZXMsXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICByZXR1cm4ge1xuICAgIGNzczogZ2V0U3R5bGVzKG5hbWUsIHByb3BzKSxcbiAgICBjbGFzc05hbWU6IGN4KGNsYXNzTmFtZXNTdGF0ZSAhPT0gbnVsbCAmJiBjbGFzc05hbWVzU3RhdGUgIT09IHZvaWQgMCA/IGNsYXNzTmFtZXNTdGF0ZSA6IHt9LCBnZXRDbGFzc05hbWVzKG5hbWUsIHByb3BzKSwgY2xhc3NOYW1lKVxuICB9O1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIYW5kbGUgSW5wdXQgQ2hhbmdlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gaGFuZGxlSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwgYWN0aW9uTWV0YSwgb25JbnB1dENoYW5nZSkge1xuICBpZiAob25JbnB1dENoYW5nZSkge1xuICAgIHZhciBfbmV3VmFsdWUgPSBvbklucHV0Q2hhbmdlKGlucHV0VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIGlmICh0eXBlb2YgX25ld1ZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIF9uZXdWYWx1ZTtcbiAgfVxuICByZXR1cm4gaW5wdXRWYWx1ZTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY3JvbGwgSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGlzRG9jdW1lbnRFbGVtZW50KGVsKSB7XG4gIHJldHVybiBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC5ib2R5LCB3aW5kb3ddLmluZGV4T2YoZWwpID4gLTE7XG59XG5cbi8vIE5vcm1hbGl6ZWQgU2Nyb2xsIFRvcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZWRIZWlnaHQoZWwpIHtcbiAgaWYgKGlzRG9jdW1lbnRFbGVtZW50KGVsKSkge1xuICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIGVsLmNsaWVudEhlaWdodDtcbn1cblxuLy8gTm9ybWFsaXplZCBzY3JvbGxUbyAmIHNjcm9sbFRvcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGdldFNjcm9sbFRvcChlbCkge1xuICBpZiAoaXNEb2N1bWVudEVsZW1lbnQoZWwpKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgfVxuICByZXR1cm4gZWwuc2Nyb2xsVG9wO1xufVxuZnVuY3Rpb24gc2Nyb2xsVG8oZWwsIHRvcCkge1xuICAvLyB3aXRoIGEgc2Nyb2xsIGRpc3RhbmNlLCB3ZSBwZXJmb3JtIHNjcm9sbCBvbiB0aGUgZWxlbWVudFxuICBpZiAoaXNEb2N1bWVudEVsZW1lbnQoZWwpKSB7XG4gICAgd2luZG93LnNjcm9sbFRvKDAsIHRvcCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsLnNjcm9sbFRvcCA9IHRvcDtcbn1cblxuLy8gR2V0IFNjcm9sbCBQYXJlbnRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICB2YXIgZXhjbHVkZVN0YXRpY1BhcmVudCA9IHN0eWxlLnBvc2l0aW9uID09PSAnYWJzb2x1dGUnO1xuICB2YXIgb3ZlcmZsb3dSeCA9IC8oYXV0b3xzY3JvbGwpLztcbiAgaWYgKHN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICBmb3IgKHZhciBwYXJlbnQgPSBlbGVtZW50OyBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudDspIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICBpZiAoZXhjbHVkZVN0YXRpY1BhcmVudCAmJiBzdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAob3ZlcmZsb3dSeC50ZXN0KHN0eWxlLm92ZXJmbG93ICsgc3R5bGUub3ZlcmZsb3dZICsgc3R5bGUub3ZlcmZsb3dYKSkge1xuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbn1cblxuLy8gQW5pbWF0ZWQgU2Nyb2xsIFRvXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gIEBwYXJhbSB0OiB0aW1lIChlbGFwc2VkKVxuICBAcGFyYW0gYjogaW5pdGlhbCB2YWx1ZVxuICBAcGFyYW0gYzogYW1vdW50IG9mIGNoYW5nZVxuICBAcGFyYW0gZDogZHVyYXRpb25cbiovXG5mdW5jdGlvbiBlYXNlT3V0Q3ViaWModCwgYiwgYywgZCkge1xuICByZXR1cm4gYyAqICgodCA9IHQgLyBkIC0gMSkgKiB0ICogdCArIDEpICsgYjtcbn1cbmZ1bmN0aW9uIGFuaW1hdGVkU2Nyb2xsVG8oZWxlbWVudCwgdG8pIHtcbiAgdmFyIGR1cmF0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAyMDA7XG4gIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogbm9vcDtcbiAgdmFyIHN0YXJ0ID0gZ2V0U2Nyb2xsVG9wKGVsZW1lbnQpO1xuICB2YXIgY2hhbmdlID0gdG8gLSBzdGFydDtcbiAgdmFyIGluY3JlbWVudCA9IDEwO1xuICB2YXIgY3VycmVudFRpbWUgPSAwO1xuICBmdW5jdGlvbiBhbmltYXRlU2Nyb2xsKCkge1xuICAgIGN1cnJlbnRUaW1lICs9IGluY3JlbWVudDtcbiAgICB2YXIgdmFsID0gZWFzZU91dEN1YmljKGN1cnJlbnRUaW1lLCBzdGFydCwgY2hhbmdlLCBkdXJhdGlvbik7XG4gICAgc2Nyb2xsVG8oZWxlbWVudCwgdmFsKTtcbiAgICBpZiAoY3VycmVudFRpbWUgPCBkdXJhdGlvbikge1xuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlU2Nyb2xsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGFuaW1hdGVTY3JvbGwoKTtcbn1cblxuLy8gU2Nyb2xsIEludG8gVmlld1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KG1lbnVFbCwgZm9jdXNlZEVsKSB7XG4gIHZhciBtZW51UmVjdCA9IG1lbnVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIGZvY3VzZWRSZWN0ID0gZm9jdXNlZEVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgb3ZlclNjcm9sbCA9IGZvY3VzZWRFbC5vZmZzZXRIZWlnaHQgLyAzO1xuICBpZiAoZm9jdXNlZFJlY3QuYm90dG9tICsgb3ZlclNjcm9sbCA+IG1lbnVSZWN0LmJvdHRvbSkge1xuICAgIHNjcm9sbFRvKG1lbnVFbCwgTWF0aC5taW4oZm9jdXNlZEVsLm9mZnNldFRvcCArIGZvY3VzZWRFbC5jbGllbnRIZWlnaHQgLSBtZW51RWwub2Zmc2V0SGVpZ2h0ICsgb3ZlclNjcm9sbCwgbWVudUVsLnNjcm9sbEhlaWdodCkpO1xuICB9IGVsc2UgaWYgKGZvY3VzZWRSZWN0LnRvcCAtIG92ZXJTY3JvbGwgPCBtZW51UmVjdC50b3ApIHtcbiAgICBzY3JvbGxUbyhtZW51RWwsIE1hdGgubWF4KGZvY3VzZWRFbC5vZmZzZXRUb3AgLSBvdmVyU2Nyb2xsLCAwKSk7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHZXQgYm91bmRpbmcgY2xpZW50IG9iamVjdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIGNhbm5vdCBnZXQga2V5cyB1c2luZyBhcnJheSBub3RhdGlvbiB3aXRoIERPTVJlY3RcbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50T2JqKGVsZW1lbnQpIHtcbiAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICByZXR1cm4ge1xuICAgIGJvdHRvbTogcmVjdC5ib3R0b20sXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCxcbiAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgcmlnaHQ6IHJlY3QucmlnaHQsXG4gICAgdG9wOiByZWN0LnRvcCxcbiAgICB3aWR0aDogcmVjdC53aWR0aFxuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRvdWNoIENhcGFiaWxpdHkgRGV0ZWN0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBpc1RvdWNoQ2FwYWJsZSgpIHtcbiAgdHJ5IHtcbiAgICBkb2N1bWVudC5jcmVhdGVFdmVudCgnVG91Y2hFdmVudCcpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIERldmljZSBEZXRlY3RvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGlzTW9iaWxlRGV2aWNlKCkge1xuICB0cnkge1xuICAgIHJldHVybiAvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXNzaXZlIEV2ZW50IERldGVjdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3JhZmdyYXBoL2RldGVjdC1pdC9ibG9iL21haW4vc3JjL2luZGV4LnRzI0wxOS1MMzZcbnZhciBwYXNzaXZlT3B0aW9uQWNjZXNzZWQgPSBmYWxzZTtcbnZhciBvcHRpb25zID0ge1xuICBnZXQgcGFzc2l2ZSgpIHtcbiAgICByZXR1cm4gcGFzc2l2ZU9wdGlvbkFjY2Vzc2VkID0gdHJ1ZTtcbiAgfVxufTtcbi8vIGNoZWNrIGZvciBTU1JcbnZhciB3ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fTtcbmlmICh3LmFkZEV2ZW50TGlzdGVuZXIgJiYgdy5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gIHcuYWRkRXZlbnRMaXN0ZW5lcigncCcsIG5vb3AsIG9wdGlvbnMpO1xuICB3LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3AnLCBub29wLCBmYWxzZSk7XG59XG52YXIgc3VwcG9ydHNQYXNzaXZlRXZlbnRzID0gcGFzc2l2ZU9wdGlvbkFjY2Vzc2VkO1xuZnVuY3Rpb24gbm90TnVsbGlzaChpdGVtKSB7XG4gIHJldHVybiBpdGVtICE9IG51bGw7XG59XG5mdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpO1xufVxuZnVuY3Rpb24gdmFsdWVUZXJuYXJ5KGlzTXVsdGksIG11bHRpVmFsdWUsIHNpbmdsZVZhbHVlKSB7XG4gIHJldHVybiBpc011bHRpID8gbXVsdGlWYWx1ZSA6IHNpbmdsZVZhbHVlO1xufVxuZnVuY3Rpb24gc2luZ2xlVmFsdWVBc1ZhbHVlKHNpbmdsZVZhbHVlKSB7XG4gIHJldHVybiBzaW5nbGVWYWx1ZTtcbn1cbmZ1bmN0aW9uIG11bHRpVmFsdWVBc1ZhbHVlKG11bHRpVmFsdWUpIHtcbiAgcmV0dXJuIG11bHRpVmFsdWU7XG59XG52YXIgcmVtb3ZlUHJvcHMgPSBmdW5jdGlvbiByZW1vdmVQcm9wcyhwcm9wc09iaikge1xuICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIHByb3BlcnRpZXMgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgIHByb3BlcnRpZXNbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gIH1cbiAgdmFyIHByb3BzTWFwID0gT2JqZWN0LmVudHJpZXMocHJvcHNPYmopLmZpbHRlcihmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBfcmVmMiA9IF9zbGljZWRUb0FycmF5KF9yZWYsIDEpLFxuICAgICAga2V5ID0gX3JlZjJbMF07XG4gICAgcmV0dXJuICFwcm9wZXJ0aWVzLmluY2x1ZGVzKGtleSk7XG4gIH0pO1xuICByZXR1cm4gcHJvcHNNYXAucmVkdWNlKGZ1bmN0aW9uIChuZXdQcm9wcywgX3JlZjMpIHtcbiAgICB2YXIgX3JlZjQgPSBfc2xpY2VkVG9BcnJheShfcmVmMywgMiksXG4gICAgICBrZXkgPSBfcmVmNFswXSxcbiAgICAgIHZhbCA9IF9yZWY0WzFdO1xuICAgIG5ld1Byb3BzW2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIG5ld1Byb3BzO1xuICB9LCB7fSk7XG59O1xuXG52YXIgX2V4Y2x1ZGVkJDMgPSBbXCJjaGlsZHJlblwiLCBcImlubmVyUHJvcHNcIl0sXG4gIF9leGNsdWRlZDIkMSA9IFtcImNoaWxkcmVuXCIsIFwiaW5uZXJQcm9wc1wiXTtcbmZ1bmN0aW9uIGdldE1lbnVQbGFjZW1lbnQoX3JlZikge1xuICB2YXIgcHJlZmVycmVkTWF4SGVpZ2h0ID0gX3JlZi5tYXhIZWlnaHQsXG4gICAgbWVudUVsID0gX3JlZi5tZW51RWwsXG4gICAgbWluSGVpZ2h0ID0gX3JlZi5taW5IZWlnaHQsXG4gICAgcHJlZmVycmVkUGxhY2VtZW50ID0gX3JlZi5wbGFjZW1lbnQsXG4gICAgc2hvdWxkU2Nyb2xsID0gX3JlZi5zaG91bGRTY3JvbGwsXG4gICAgaXNGaXhlZFBvc2l0aW9uID0gX3JlZi5pc0ZpeGVkUG9zaXRpb24sXG4gICAgY29udHJvbEhlaWdodCA9IF9yZWYuY29udHJvbEhlaWdodDtcbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChtZW51RWwpO1xuICB2YXIgZGVmYXVsdFN0YXRlID0ge1xuICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgfTtcblxuICAvLyBzb21ldGhpbmcgd2VudCB3cm9uZywgcmV0dXJuIGRlZmF1bHQgc3RhdGVcbiAgaWYgKCFtZW51RWwgfHwgIW1lbnVFbC5vZmZzZXRQYXJlbnQpIHJldHVybiBkZWZhdWx0U3RhdGU7XG5cbiAgLy8gd2UgY2FuJ3QgdHJ1c3QgYHNjcm9sbFBhcmVudC5zY3JvbGxIZWlnaHRgIC0tPiBpdCBtYXkgaW5jcmVhc2Ugd2hlblxuICAvLyB0aGUgbWVudSBpcyByZW5kZXJlZFxuICB2YXIgX3Njcm9sbFBhcmVudCRnZXRCb3VuID0gc2Nyb2xsUGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIHNjcm9sbEhlaWdodCA9IF9zY3JvbGxQYXJlbnQkZ2V0Qm91bi5oZWlnaHQ7XG4gIHZhciBfbWVudUVsJGdldEJvdW5kaW5nQ2wgPSBtZW51RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgbWVudUJvdHRvbSA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC5ib3R0b20sXG4gICAgbWVudUhlaWdodCA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC5oZWlnaHQsXG4gICAgbWVudVRvcCA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC50b3A7XG4gIHZhciBfbWVudUVsJG9mZnNldFBhcmVudCQgPSBtZW51RWwub2Zmc2V0UGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIGNvbnRhaW5lclRvcCA9IF9tZW51RWwkb2Zmc2V0UGFyZW50JC50b3A7XG4gIHZhciB2aWV3SGVpZ2h0ID0gaXNGaXhlZFBvc2l0aW9uID8gd2luZG93LmlubmVySGVpZ2h0IDogbm9ybWFsaXplZEhlaWdodChzY3JvbGxQYXJlbnQpO1xuICB2YXIgc2Nyb2xsVG9wID0gZ2V0U2Nyb2xsVG9wKHNjcm9sbFBhcmVudCk7XG4gIHZhciBtYXJnaW5Cb3R0b20gPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKG1lbnVFbCkubWFyZ2luQm90dG9tLCAxMCk7XG4gIHZhciBtYXJnaW5Ub3AgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKG1lbnVFbCkubWFyZ2luVG9wLCAxMCk7XG4gIHZhciB2aWV3U3BhY2VBYm92ZSA9IGNvbnRhaW5lclRvcCAtIG1hcmdpblRvcDtcbiAgdmFyIHZpZXdTcGFjZUJlbG93ID0gdmlld0hlaWdodCAtIG1lbnVUb3A7XG4gIHZhciBzY3JvbGxTcGFjZUFib3ZlID0gdmlld1NwYWNlQWJvdmUgKyBzY3JvbGxUb3A7XG4gIHZhciBzY3JvbGxTcGFjZUJlbG93ID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gbWVudVRvcDtcbiAgdmFyIHNjcm9sbERvd24gPSBtZW51Qm90dG9tIC0gdmlld0hlaWdodCArIHNjcm9sbFRvcCArIG1hcmdpbkJvdHRvbTtcbiAgdmFyIHNjcm9sbFVwID0gc2Nyb2xsVG9wICsgbWVudVRvcCAtIG1hcmdpblRvcDtcbiAgdmFyIHNjcm9sbER1cmF0aW9uID0gMTYwO1xuICBzd2l0Y2ggKHByZWZlcnJlZFBsYWNlbWVudCkge1xuICAgIGNhc2UgJ2F1dG8nOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAvLyAxOiB0aGUgbWVudSB3aWxsIGZpdCwgZG8gbm90aGluZ1xuICAgICAgaWYgKHZpZXdTcGFjZUJlbG93ID49IG1lbnVIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDI6IHRoZSBtZW51IHdpbGwgZml0LCBpZiBzY3JvbGxlZFxuICAgICAgaWYgKHNjcm9sbFNwYWNlQmVsb3cgPj0gbWVudUhlaWdodCAmJiAhaXNGaXhlZFBvc2l0aW9uKSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsRG93biwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAzOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgY29uc3RyYWluZWRcbiAgICAgIGlmICghaXNGaXhlZFBvc2l0aW9uICYmIHNjcm9sbFNwYWNlQmVsb3cgPj0gbWluSGVpZ2h0IHx8IGlzRml4ZWRQb3NpdGlvbiAmJiB2aWV3U3BhY2VCZWxvdyA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxEb3duLCBzY3JvbGxEdXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3ZSB3YW50IHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUgbWVudSBhcyBwb3NzaWJsZSB0byB0aGUgdXNlcixcbiAgICAgICAgLy8gc28gZ2l2ZSB0aGVtIHdoYXRldmVyIGlzIGF2YWlsYWJsZSBiZWxvdyByYXRoZXIgdGhhbiB0aGUgbWluSGVpZ2h0LlxuICAgICAgICB2YXIgY29uc3RyYWluZWRIZWlnaHQgPSBpc0ZpeGVkUG9zaXRpb24gPyB2aWV3U3BhY2VCZWxvdyAtIG1hcmdpbkJvdHRvbSA6IHNjcm9sbFNwYWNlQmVsb3cgLSBtYXJnaW5Cb3R0b207XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IGNvbnN0cmFpbmVkSGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIEZvcmtlZCBiZXZpb3VyIHdoZW4gdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlIGJlbG93XG5cbiAgICAgIC8vIEFVVE86IGZsaXAgdGhlIG1lbnUsIHJlbmRlciBhYm92ZVxuICAgICAgaWYgKHByZWZlcnJlZFBsYWNlbWVudCA9PT0gJ2F1dG8nIHx8IGlzRml4ZWRQb3NpdGlvbikge1xuICAgICAgICAvLyBtYXkgbmVlZCB0byBiZSBjb25zdHJhaW5lZCBhZnRlciBmbGlwcGluZ1xuICAgICAgICB2YXIgX2NvbnN0cmFpbmVkSGVpZ2h0ID0gcHJlZmVycmVkTWF4SGVpZ2h0O1xuICAgICAgICB2YXIgc3BhY2VBYm92ZSA9IGlzRml4ZWRQb3NpdGlvbiA/IHZpZXdTcGFjZUFib3ZlIDogc2Nyb2xsU3BhY2VBYm92ZTtcbiAgICAgICAgaWYgKHNwYWNlQWJvdmUgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgICAgX2NvbnN0cmFpbmVkSGVpZ2h0ID0gTWF0aC5taW4oc3BhY2VBYm92ZSAtIG1hcmdpbkJvdHRvbSAtIGNvbnRyb2xIZWlnaHQsIHByZWZlcnJlZE1heEhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgIG1heEhlaWdodDogX2NvbnN0cmFpbmVkSGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEJPVFRPTTogYWxsb3cgYnJvd3NlciB0byBpbmNyZWFzZSBzY3JvbGxhYmxlIGFyZWEgYW5kIGltbWVkaWF0ZWx5IHNldCBzY3JvbGxcbiAgICAgIGlmIChwcmVmZXJyZWRQbGFjZW1lbnQgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBzY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbERvd24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIC8vIDE6IHRoZSBtZW51IHdpbGwgZml0LCBkbyBub3RoaW5nXG4gICAgICBpZiAodmlld1NwYWNlQWJvdmUgPj0gbWVudUhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMjogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIHNjcm9sbGVkXG4gICAgICBpZiAoc2Nyb2xsU3BhY2VBYm92ZSA+PSBtZW51SGVpZ2h0ICYmICFpc0ZpeGVkUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxVcCwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAzOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgY29uc3RyYWluZWRcbiAgICAgIGlmICghaXNGaXhlZFBvc2l0aW9uICYmIHNjcm9sbFNwYWNlQWJvdmUgPj0gbWluSGVpZ2h0IHx8IGlzRml4ZWRQb3NpdGlvbiAmJiB2aWV3U3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgdmFyIF9jb25zdHJhaW5lZEhlaWdodDIgPSBwcmVmZXJyZWRNYXhIZWlnaHQ7XG5cbiAgICAgICAgLy8gd2Ugd2FudCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlIG1lbnUgYXMgcG9zc2libGUgdG8gdGhlIHVzZXIsXG4gICAgICAgIC8vIHNvIGdpdmUgdGhlbSB3aGF0ZXZlciBpcyBhdmFpbGFibGUgYmVsb3cgcmF0aGVyIHRoYW4gdGhlIG1pbkhlaWdodC5cbiAgICAgICAgaWYgKCFpc0ZpeGVkUG9zaXRpb24gJiYgc2Nyb2xsU3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQgfHwgaXNGaXhlZFBvc2l0aW9uICYmIHZpZXdTcGFjZUFib3ZlID49IG1pbkhlaWdodCkge1xuICAgICAgICAgIF9jb25zdHJhaW5lZEhlaWdodDIgPSBpc0ZpeGVkUG9zaXRpb24gPyB2aWV3U3BhY2VBYm92ZSAtIG1hcmdpblRvcCA6IHNjcm9sbFNwYWNlQWJvdmUgLSBtYXJnaW5Ub3A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxVcCwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IF9jb25zdHJhaW5lZEhlaWdodDJcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gbm90IGVub3VnaCBzcGFjZSwgdGhlIGJyb3dzZXIgV0lMTCBOT1QgaW5jcmVhc2Ugc2Nyb2xsYWJsZSBhcmVhIHdoZW5cbiAgICAgIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZCBlbGVtZW50IHJlbmRlcmVkIGFib3ZlIHRoZSB2aWV3cG9ydCAob25seSBiZWxvdykuXG4gICAgICAvLyBGbGlwIHRoZSBtZW51LCByZW5kZXIgYmVsb3dcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHBsYWNlbWVudCBwcm92aWRlZCBcXFwiXCIuY29uY2F0KHByZWZlcnJlZFBsYWNlbWVudCwgXCJcXFwiLlwiKSk7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRTdGF0ZTtcbn1cblxuLy8gTWVudSBDb21wb25lbnRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBhbGlnblRvQ29udHJvbChwbGFjZW1lbnQpIHtcbiAgdmFyIHBsYWNlbWVudFRvQ1NTUHJvcCA9IHtcbiAgICBib3R0b206ICd0b3AnLFxuICAgIHRvcDogJ2JvdHRvbSdcbiAgfTtcbiAgcmV0dXJuIHBsYWNlbWVudCA/IHBsYWNlbWVudFRvQ1NTUHJvcFtwbGFjZW1lbnRdIDogJ2JvdHRvbSc7XG59XG52YXIgY29lcmNlUGxhY2VtZW50ID0gZnVuY3Rpb24gY29lcmNlUGxhY2VtZW50KHApIHtcbiAgcmV0dXJuIHAgPT09ICdhdXRvJyA/ICdib3R0b20nIDogcDtcbn07XG52YXIgbWVudUNTUyA9IGZ1bmN0aW9uIG1lbnVDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBfb2JqZWN0U3ByZWFkMjtcbiAgdmFyIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICBfcmVmMiR0aGVtZSA9IF9yZWYyLnRoZW1lLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYyJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBzcGFjaW5nID0gX3JlZjIkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKChfb2JqZWN0U3ByZWFkMiA9IHtcbiAgICBsYWJlbDogJ21lbnUnXG4gIH0sIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgYWxpZ25Ub0NvbnRyb2wocGxhY2VtZW50KSwgJzEwMCUnKSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBcInBvc2l0aW9uXCIsICdhYnNvbHV0ZScpLCBfZGVmaW5lUHJvcGVydHkoX29iamVjdFNwcmVhZDIsIFwid2lkdGhcIiwgJzEwMCUnKSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBcInpJbmRleFwiLCAxKSwgX29iamVjdFNwcmVhZDIpLCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLm5ldXRyYWwwLFxuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICAgIGJveFNoYWRvdzogJzAgMCAwIDFweCBoc2xhKDAsIDAlLCAwJSwgMC4xKSwgMCA0cHggMTFweCBoc2xhKDAsIDAlLCAwJSwgMC4xKScsXG4gICAgbWFyZ2luQm90dG9tOiBzcGFjaW5nLm1lbnVHdXR0ZXIsXG4gICAgbWFyZ2luVG9wOiBzcGFjaW5nLm1lbnVHdXR0ZXJcbiAgfSk7XG59O1xudmFyIFBvcnRhbFBsYWNlbWVudENvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dChudWxsKTtcblxuLy8gTk9URTogaW50ZXJuYWwgb25seVxudmFyIE1lbnVQbGFjZXIgPSBmdW5jdGlvbiBNZW51UGxhY2VyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIG1pbk1lbnVIZWlnaHQgPSBwcm9wcy5taW5NZW51SGVpZ2h0LFxuICAgIG1heE1lbnVIZWlnaHQgPSBwcm9wcy5tYXhNZW51SGVpZ2h0LFxuICAgIG1lbnVQbGFjZW1lbnQgPSBwcm9wcy5tZW51UGxhY2VtZW50LFxuICAgIG1lbnVQb3NpdGlvbiA9IHByb3BzLm1lbnVQb3NpdGlvbixcbiAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBwcm9wcy5tZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcsXG4gICAgdGhlbWUgPSBwcm9wcy50aGVtZTtcbiAgdmFyIF9yZWYzID0gdXNlQ29udGV4dChQb3J0YWxQbGFjZW1lbnRDb250ZXh0KSB8fCB7fSxcbiAgICBzZXRQb3J0YWxQbGFjZW1lbnQgPSBfcmVmMy5zZXRQb3J0YWxQbGFjZW1lbnQ7XG4gIHZhciByZWYgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShtYXhNZW51SGVpZ2h0KSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICBtYXhIZWlnaHQgPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldE1heEhlaWdodCA9IF91c2VTdGF0ZTJbMV07XG4gIHZhciBfdXNlU3RhdGUzID0gdXNlU3RhdGUobnVsbCksXG4gICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgIHBsYWNlbWVudCA9IF91c2VTdGF0ZTRbMF0sXG4gICAgc2V0UGxhY2VtZW50ID0gX3VzZVN0YXRlNFsxXTtcbiAgdmFyIGNvbnRyb2xIZWlnaHQgPSB0aGVtZS5zcGFjaW5nLmNvbnRyb2xIZWlnaHQ7XG4gIHVzZUxheW91dEVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1lbnVFbCA9IHJlZi5jdXJyZW50O1xuICAgIGlmICghbWVudUVsKSByZXR1cm47XG5cbiAgICAvLyBETyBOT1Qgc2Nyb2xsIGlmIHBvc2l0aW9uIGlzIGZpeGVkXG4gICAgdmFyIGlzRml4ZWRQb3NpdGlvbiA9IG1lbnVQb3NpdGlvbiA9PT0gJ2ZpeGVkJztcbiAgICB2YXIgc2hvdWxkU2Nyb2xsID0gbWVudVNob3VsZFNjcm9sbEludG9WaWV3ICYmICFpc0ZpeGVkUG9zaXRpb247XG4gICAgdmFyIHN0YXRlID0gZ2V0TWVudVBsYWNlbWVudCh7XG4gICAgICBtYXhIZWlnaHQ6IG1heE1lbnVIZWlnaHQsXG4gICAgICBtZW51RWw6IG1lbnVFbCxcbiAgICAgIG1pbkhlaWdodDogbWluTWVudUhlaWdodCxcbiAgICAgIHBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgIHNob3VsZFNjcm9sbDogc2hvdWxkU2Nyb2xsLFxuICAgICAgaXNGaXhlZFBvc2l0aW9uOiBpc0ZpeGVkUG9zaXRpb24sXG4gICAgICBjb250cm9sSGVpZ2h0OiBjb250cm9sSGVpZ2h0XG4gICAgfSk7XG4gICAgc2V0TWF4SGVpZ2h0KHN0YXRlLm1heEhlaWdodCk7XG4gICAgc2V0UGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gICAgc2V0UG9ydGFsUGxhY2VtZW50ID09PSBudWxsIHx8IHNldFBvcnRhbFBsYWNlbWVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2V0UG9ydGFsUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIH0sIFttYXhNZW51SGVpZ2h0LCBtZW51UGxhY2VtZW50LCBtZW51UG9zaXRpb24sIG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldywgbWluTWVudUhlaWdodCwgc2V0UG9ydGFsUGxhY2VtZW50LCBjb250cm9sSGVpZ2h0XSk7XG4gIHJldHVybiBjaGlsZHJlbih7XG4gICAgcmVmOiByZWYsXG4gICAgcGxhY2VyUHJvcHM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQgfHwgY29lcmNlUGxhY2VtZW50KG1lbnVQbGFjZW1lbnQpLFxuICAgICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHRcbiAgICB9KVxuICB9KTtcbn07XG52YXIgTWVudSA9IGZ1bmN0aW9uIE1lbnUocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJSZWYgPSBwcm9wcy5pbm5lclJlZixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ21lbnUnLCB7XG4gICAgbWVudTogdHJ1ZVxuICB9KSwge1xuICAgIHJlZjogaW5uZXJSZWZcbiAgfSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgTWVudSQxID0gTWVudTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IExpc3Rcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbWVudUxpc3RDU1MgPSBmdW5jdGlvbiBtZW51TGlzdENTUyhfcmVmNCwgdW5zdHlsZWQpIHtcbiAgdmFyIG1heEhlaWdodCA9IF9yZWY0Lm1heEhlaWdodCxcbiAgICBiYXNlVW5pdCA9IF9yZWY0LnRoZW1lLnNwYWNpbmcuYmFzZVVuaXQ7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCxcbiAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAvLyByZXF1aXJlZCBmb3Igb2Zmc2V0W0hlaWdodCwgVG9wXSA+IGtleWJvYXJkIHNjcm9sbFxuICAgIFdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOiAndG91Y2gnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgcGFkZGluZ0JvdHRvbTogYmFzZVVuaXQsXG4gICAgcGFkZGluZ1RvcDogYmFzZVVuaXRcbiAgfSk7XG59O1xudmFyIE1lbnVMaXN0ID0gZnVuY3Rpb24gTWVudUxpc3QocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgaW5uZXJSZWYgPSBwcm9wcy5pbm5lclJlZixcbiAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ21lbnVMaXN0Jywge1xuICAgICdtZW51LWxpc3QnOiB0cnVlLFxuICAgICdtZW51LWxpc3QtLWlzLW11bHRpJzogaXNNdWx0aVxuICB9KSwge1xuICAgIHJlZjogaW5uZXJSZWZcbiAgfSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVudSBOb3RpY2VzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIG5vdGljZUNTUyA9IGZ1bmN0aW9uIG5vdGljZUNTUyhfcmVmNSwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWY1JHRoZW1lID0gX3JlZjUudGhlbWUsXG4gICAgYmFzZVVuaXQgPSBfcmVmNSR0aGVtZS5zcGFjaW5nLmJhc2VVbml0LFxuICAgIGNvbG9ycyA9IF9yZWY1JHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw0MCxcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChiYXNlVW5pdCAqIDIsIFwicHggXCIpLmNvbmNhdChiYXNlVW5pdCAqIDMsIFwicHhcIilcbiAgfSk7XG59O1xudmFyIG5vT3B0aW9uc01lc3NhZ2VDU1MgPSBub3RpY2VDU1M7XG52YXIgbG9hZGluZ01lc3NhZ2VDU1MgPSBub3RpY2VDU1M7XG52YXIgTm9PcHRpb25zTWVzc2FnZSA9IGZ1bmN0aW9uIE5vT3B0aW9uc01lc3NhZ2UoX3JlZjYpIHtcbiAgdmFyIF9yZWY2JGNoaWxkcmVuID0gX3JlZjYuY2hpbGRyZW4sXG4gICAgY2hpbGRyZW4gPSBfcmVmNiRjaGlsZHJlbiA9PT0gdm9pZCAwID8gJ05vIG9wdGlvbnMnIDogX3JlZjYkY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IF9yZWY2LmlubmVyUHJvcHMsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY2LCBfZXhjbHVkZWQkMyk7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0UHJvcHMpLCB7fSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICBpbm5lclByb3BzOiBpbm5lclByb3BzXG4gIH0pLCAnbm9PcHRpb25zTWVzc2FnZScsIHtcbiAgICAnbWVudS1ub3RpY2UnOiB0cnVlLFxuICAgICdtZW51LW5vdGljZS0tbm8tb3B0aW9ucyc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIExvYWRpbmdNZXNzYWdlID0gZnVuY3Rpb24gTG9hZGluZ01lc3NhZ2UoX3JlZjcpIHtcbiAgdmFyIF9yZWY3JGNoaWxkcmVuID0gX3JlZjcuY2hpbGRyZW4sXG4gICAgY2hpbGRyZW4gPSBfcmVmNyRjaGlsZHJlbiA9PT0gdm9pZCAwID8gJ0xvYWRpbmcuLi4nIDogX3JlZjckY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IF9yZWY3LmlubmVyUHJvcHMsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY3LCBfZXhjbHVkZWQyJDEpO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdFByb3BzKSwge30sIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wczogaW5uZXJQcm9wc1xuICB9KSwgJ2xvYWRpbmdNZXNzYWdlJywge1xuICAgICdtZW51LW5vdGljZSc6IHRydWUsXG4gICAgJ21lbnUtbm90aWNlLS1sb2FkaW5nJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVudSBQb3J0YWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbWVudVBvcnRhbENTUyA9IGZ1bmN0aW9uIG1lbnVQb3J0YWxDU1MoX3JlZjgpIHtcbiAgdmFyIHJlY3QgPSBfcmVmOC5yZWN0LFxuICAgIG9mZnNldCA9IF9yZWY4Lm9mZnNldCxcbiAgICBwb3NpdGlvbiA9IF9yZWY4LnBvc2l0aW9uO1xuICByZXR1cm4ge1xuICAgIGxlZnQ6IHJlY3QubGVmdCxcbiAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgdG9wOiBvZmZzZXQsXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgekluZGV4OiAxXG4gIH07XG59O1xudmFyIE1lbnVQb3J0YWwgPSBmdW5jdGlvbiBNZW51UG9ydGFsKHByb3BzKSB7XG4gIHZhciBhcHBlbmRUbyA9IHByb3BzLmFwcGVuZFRvLFxuICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgY29udHJvbEVsZW1lbnQgPSBwcm9wcy5jb250cm9sRWxlbWVudCxcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBtZW51UGxhY2VtZW50ID0gcHJvcHMubWVudVBsYWNlbWVudCxcbiAgICBtZW51UG9zaXRpb24gPSBwcm9wcy5tZW51UG9zaXRpb247XG4gIHZhciBtZW51UG9ydGFsUmVmID0gdXNlUmVmKG51bGwpO1xuICB2YXIgY2xlYW51cFJlZiA9IHVzZVJlZihudWxsKTtcbiAgdmFyIF91c2VTdGF0ZTUgPSB1c2VTdGF0ZShjb2VyY2VQbGFjZW1lbnQobWVudVBsYWNlbWVudCkpLFxuICAgIF91c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU1LCAyKSxcbiAgICBwbGFjZW1lbnQgPSBfdXNlU3RhdGU2WzBdLFxuICAgIHNldFBvcnRhbFBsYWNlbWVudCA9IF91c2VTdGF0ZTZbMV07XG4gIHZhciBwb3J0YWxQbGFjZW1lbnRDb250ZXh0ID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNldFBvcnRhbFBsYWNlbWVudDogc2V0UG9ydGFsUGxhY2VtZW50XG4gICAgfTtcbiAgfSwgW10pO1xuICB2YXIgX3VzZVN0YXRlNyA9IHVzZVN0YXRlKG51bGwpLFxuICAgIF91c2VTdGF0ZTggPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU3LCAyKSxcbiAgICBjb21wdXRlZFBvc2l0aW9uID0gX3VzZVN0YXRlOFswXSxcbiAgICBzZXRDb21wdXRlZFBvc2l0aW9uID0gX3VzZVN0YXRlOFsxXTtcbiAgdmFyIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb24gPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFjb250cm9sRWxlbWVudCkgcmV0dXJuO1xuICAgIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRPYmooY29udHJvbEVsZW1lbnQpO1xuICAgIHZhciBzY3JvbGxEaXN0YW5jZSA9IG1lbnVQb3NpdGlvbiA9PT0gJ2ZpeGVkJyA/IDAgOiB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgdmFyIG9mZnNldCA9IHJlY3RbcGxhY2VtZW50XSArIHNjcm9sbERpc3RhbmNlO1xuICAgIGlmIChvZmZzZXQgIT09IChjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ub2Zmc2V0KSB8fCByZWN0LmxlZnQgIT09IChjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC5sZWZ0KSB8fCByZWN0LndpZHRoICE9PSAoY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLnJlY3Qud2lkdGgpKSB7XG4gICAgICBzZXRDb21wdXRlZFBvc2l0aW9uKHtcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgIHJlY3Q6IHJlY3RcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2NvbnRyb2xFbGVtZW50LCBtZW51UG9zaXRpb24sIHBsYWNlbWVudCwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLm9mZnNldCwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLnJlY3QubGVmdCwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLnJlY3Qud2lkdGhdKTtcbiAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICB1cGRhdGVDb21wdXRlZFBvc2l0aW9uKCk7XG4gIH0sIFt1cGRhdGVDb21wdXRlZFBvc2l0aW9uXSk7XG4gIHZhciBydW5BdXRvVXBkYXRlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgY2xlYW51cFJlZi5jdXJyZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjbGVhbnVwUmVmLmN1cnJlbnQoKTtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICAgIGlmIChjb250cm9sRWxlbWVudCAmJiBtZW51UG9ydGFsUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IGF1dG9VcGRhdGUoY29udHJvbEVsZW1lbnQsIG1lbnVQb3J0YWxSZWYuY3VycmVudCwgdXBkYXRlQ29tcHV0ZWRQb3NpdGlvbiwge1xuICAgICAgICBlbGVtZW50UmVzaXplOiAnUmVzaXplT2JzZXJ2ZXInIGluIHdpbmRvd1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY29udHJvbEVsZW1lbnQsIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb25dKTtcbiAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBydW5BdXRvVXBkYXRlKCk7XG4gIH0sIFtydW5BdXRvVXBkYXRlXSk7XG4gIHZhciBzZXRNZW51UG9ydGFsRWxlbWVudCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChtZW51UG9ydGFsRWxlbWVudCkge1xuICAgIG1lbnVQb3J0YWxSZWYuY3VycmVudCA9IG1lbnVQb3J0YWxFbGVtZW50O1xuICAgIHJ1bkF1dG9VcGRhdGUoKTtcbiAgfSwgW3J1bkF1dG9VcGRhdGVdKTtcblxuICAvLyBiYWlsIGVhcmx5IGlmIHJlcXVpcmVkIGVsZW1lbnRzIGFyZW4ndCBwcmVzZW50XG4gIGlmICghYXBwZW5kVG8gJiYgbWVudVBvc2l0aW9uICE9PSAnZml4ZWQnIHx8ICFjb21wdXRlZFBvc2l0aW9uKSByZXR1cm4gbnVsbDtcblxuICAvLyBzYW1lIHdyYXBwZXIgZWxlbWVudCB3aGV0aGVyIGZpeGVkIG9yIHBvcnRhbGxlZFxuICB2YXIgbWVudVdyYXBwZXIgPSBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogc2V0TWVudVBvcnRhbEVsZW1lbnRcbiAgfSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwge30sIHtcbiAgICBvZmZzZXQ6IGNvbXB1dGVkUG9zaXRpb24ub2Zmc2V0LFxuICAgIHBvc2l0aW9uOiBtZW51UG9zaXRpb24sXG4gICAgcmVjdDogY29tcHV0ZWRQb3NpdGlvbi5yZWN0XG4gIH0pLCAnbWVudVBvcnRhbCcsIHtcbiAgICAnbWVudS1wb3J0YWwnOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xuICByZXR1cm4ganN4KFBvcnRhbFBsYWNlbWVudENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogcG9ydGFsUGxhY2VtZW50Q29udGV4dFxuICB9LCBhcHBlbmRUbyA/IC8qI19fUFVSRV9fKi9jcmVhdGVQb3J0YWwobWVudVdyYXBwZXIsIGFwcGVuZFRvKSA6IG1lbnVXcmFwcGVyKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUm9vdCBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgY29udGFpbmVyQ1NTID0gZnVuY3Rpb24gY29udGFpbmVyQ1NTKF9yZWYpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgaXNSdGwgPSBfcmVmLmlzUnRsO1xuICByZXR1cm4ge1xuICAgIGxhYmVsOiAnY29udGFpbmVyJyxcbiAgICBkaXJlY3Rpb246IGlzUnRsID8gJ3J0bCcgOiB1bmRlZmluZWQsXG4gICAgcG9pbnRlckV2ZW50czogaXNEaXNhYmxlZCA/ICdub25lJyA6IHVuZGVmaW5lZCxcbiAgICAvLyBjYW5jZWwgbW91c2UgZXZlbnRzIHdoZW4gZGlzYWJsZWRcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJ1xuICB9O1xufTtcbnZhciBTZWxlY3RDb250YWluZXIgPSBmdW5jdGlvbiBTZWxlY3RDb250YWluZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgaXNSdGwgPSBwcm9wcy5pc1J0bDtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NvbnRhaW5lcicsIHtcbiAgICAnLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWQsXG4gICAgJy0taXMtcnRsJzogaXNSdGxcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZhbHVlIENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciB2YWx1ZUNvbnRhaW5lckNTUyA9IGZ1bmN0aW9uIHZhbHVlQ29udGFpbmVyQ1NTKF9yZWYyLCB1bnN0eWxlZCkge1xuICB2YXIgc3BhY2luZyA9IF9yZWYyLnRoZW1lLnNwYWNpbmcsXG4gICAgaXNNdWx0aSA9IF9yZWYyLmlzTXVsdGksXG4gICAgaGFzVmFsdWUgPSBfcmVmMi5oYXNWYWx1ZSxcbiAgICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUgPSBfcmVmMi5zZWxlY3RQcm9wcy5jb250cm9sU2hvdWxkUmVuZGVyVmFsdWU7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBkaXNwbGF5OiBpc011bHRpICYmIGhhc1ZhbHVlICYmIGNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSA/ICdmbGV4JyA6ICdncmlkJyxcbiAgICBmbGV4OiAxLFxuICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgV2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6ICd0b3VjaCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgcGFkZGluZzogXCJcIi5jb25jYXQoc3BhY2luZy5iYXNlVW5pdCAvIDIsIFwicHggXCIpLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0ICogMiwgXCJweFwiKVxuICB9KTtcbn07XG52YXIgVmFsdWVDb250YWluZXIgPSBmdW5jdGlvbiBWYWx1ZUNvbnRhaW5lcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aSxcbiAgICBoYXNWYWx1ZSA9IHByb3BzLmhhc1ZhbHVlO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAndmFsdWVDb250YWluZXInLCB7XG4gICAgJ3ZhbHVlLWNvbnRhaW5lcic6IHRydWUsXG4gICAgJ3ZhbHVlLWNvbnRhaW5lci0taXMtbXVsdGknOiBpc011bHRpLFxuICAgICd2YWx1ZS1jb250YWluZXItLWhhcy12YWx1ZSc6IGhhc1ZhbHVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJbmRpY2F0b3IgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGluZGljYXRvcnNDb250YWluZXJDU1MgPSBmdW5jdGlvbiBpbmRpY2F0b3JzQ29udGFpbmVyQ1NTKCkge1xuICByZXR1cm4ge1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4U2hyaW5rOiAwXG4gIH07XG59O1xudmFyIEluZGljYXRvcnNDb250YWluZXIgPSBmdW5jdGlvbiBJbmRpY2F0b3JzQ29udGFpbmVyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yc0NvbnRhaW5lcicsIHtcbiAgICBpbmRpY2F0b3JzOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxudmFyIF90ZW1wbGF0ZU9iamVjdDtcbnZhciBfZXhjbHVkZWQkMiA9IFtcInNpemVcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJpbm5lclByb3BzXCIsIFwiaXNSdGxcIiwgXCJzaXplXCJdO1xuZnVuY3Rpb24gX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX18oKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxudmFyIF9yZWYyID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8ge1xuICBuYW1lOiBcIjhtbWtjZ1wiLFxuICBzdHlsZXM6IFwiZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Q29sb3I7bGluZS1oZWlnaHQ6MTtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZS13aWR0aDowXCJcbn0gOiB7XG4gIG5hbWU6IFwidGo1YmRlLVN2Z1wiLFxuICBzdHlsZXM6IFwiZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Q29sb3I7bGluZS1oZWlnaHQ6MTtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZS13aWR0aDowO2xhYmVsOlN2ZztcIixcbiAgbWFwOiBcIi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR2xqWVhSdmNuTXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVhsQ1NTSXNJbVpwYkdVaU9pSnBibVJwWTJGMGIzSnpMblJ6ZUNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaUJBYW5ONElHcHplQ0FxTDF4dWFXMXdiM0owSUhzZ1NsTllMQ0JTWldGamRFNXZaR1VnZlNCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdleUJxYzNnc0lHdGxlV1p5WVcxbGN5QjlJR1p5YjIwZ0owQmxiVzkwYVc5dUwzSmxZV04wSnp0Y2JseHVhVzF3YjNKMElIdGNiaUFnUTI5dGJXOXVVSEp2Y0hOQmJtUkRiR0Z6YzA1aGJXVXNYRzRnSUVOVFUwOWlhbVZqZEZkcGRHaE1ZV0psYkN4Y2JpQWdSM0p2ZFhCQ1lYTmxMRnh1ZlNCbWNtOXRJQ2N1TGk5MGVYQmxjeWM3WEc1cGJYQnZjblFnZXlCblpYUlRkSGxzWlZCeWIzQnpJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmk4dklFUnliM0JrYjNkdUlDWWdRMnhsWVhJZ1NXTnZibk5jYmk4dklEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh1WEc1amIyNXpkQ0JUZG1jZ1BTQW9lMXh1SUNCemFYcGxMRnh1SUNBdUxpNXdjbTl3YzF4dWZUb2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkemRtY25YU0FtSUhzZ2MybDZaVG9nYm5WdFltVnlJSDBwSUQwK0lDaGNiaUFnUEhOMloxeHVJQ0FnSUdobGFXZG9kRDE3YzJsNlpYMWNiaUFnSUNCM2FXUjBhRDE3YzJsNlpYMWNiaUFnSUNCMmFXVjNRbTk0UFZ3aU1DQXdJREl3SURJd1hDSmNiaUFnSUNCaGNtbGhMV2hwWkdSbGJqMWNJblJ5ZFdWY0lseHVJQ0FnSUdadlkzVnpZV0pzWlQxY0ltWmhiSE5sWENKY2JpQWdJQ0JqYzNNOWUzdGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnWm1sc2JEb2dKMk4xY25KbGJuUkRiMnh2Y2ljc1hHNGdJQ0FnSUNCc2FXNWxTR1ZwWjJoME9pQXhMRnh1SUNBZ0lDQWdjM1J5YjJ0bE9pQW5ZM1Z5Y21WdWRFTnZiRzl5Snl4Y2JpQWdJQ0FnSUhOMGNtOXJaVmRwWkhSb09pQXdMRnh1SUNBZ0lIMTlYRzRnSUNBZ2V5NHVMbkJ5YjNCemZWeHVJQ0F2UGx4dUtUdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1EzSnZjM05KWTI5dVVISnZjSE1nUFNCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKM04yWnlkZElDWWdleUJ6YVhwbFB6b2diblZ0WW1WeUlIMDdYRzVsZUhCdmNuUWdZMjl1YzNRZ1EzSnZjM05KWTI5dUlEMGdLSEJ5YjNCek9pQkRjbTl6YzBsamIyNVFjbTl3Y3lrZ1BUNGdLRnh1SUNBOFUzWm5JSE5wZW1VOWV6SXdmU0I3TGk0dWNISnZjSE45UGx4dUlDQWdJRHh3WVhSb0lHUTlYQ0pOTVRRdU16UTRJREUwTGpnME9XTXRNQzQwTmprZ01DNDBOamt0TVM0eU1qa2dNQzQwTmprdE1TNDJPVGNnTUd3dE1pNDJOVEV0TXk0d016QXRNaTQyTlRFZ015NHdNamxqTFRBdU5EWTVJREF1TkRZNUxURXVNakk1SURBdU5EWTVMVEV1TmprM0lEQXRNQzQwTmprdE1DNDBOamt0TUM0ME5qa3RNUzR5TWprZ01DMHhMalk1TjJ3eUxqYzFPQzB6TGpFMUxUSXVOelU1TFRNdU1UVXlZeTB3TGpRMk9TMHdMalEyT1Mwd0xqUTJPUzB4TGpJeU9DQXdMVEV1TmprM2N6RXVNakk0TFRBdU5EWTVJREV1TmprM0lEQnNNaTQyTlRJZ015NHdNekVnTWk0Mk5URXRNeTR3TXpGak1DNDBOamt0TUM0ME5qa2dNUzR5TWpndE1DNDBOamtnTVM0Mk9UY2dNSE13TGpRMk9TQXhMakl5T1NBd0lERXVOamszYkMweUxqYzFPQ0F6TGpFMU1pQXlMamMxT0NBekxqRTFZekF1TkRZNUlEQXVORFk1SURBdU5EWTVJREV1TWpJNUlEQWdNUzQyT1RoNlhDSWdMejVjYmlBZ1BDOVRkbWMrWEc0cE8xeHVaWGh3YjNKMElIUjVjR1VnUkc5M2JrTm9aWFp5YjI1UWNtOXdjeUE5SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25jM1puSjEwZ0ppQjdJSE5wZW1VL09pQnVkVzFpWlhJZ2ZUdGNibVY0Y0c5eWRDQmpiMjV6ZENCRWIzZHVRMmhsZG5KdmJpQTlJQ2h3Y205d2N6b2dSRzkzYmtOb1pYWnliMjVRY205d2N5a2dQVDRnS0Z4dUlDQThVM1puSUhOcGVtVTllekl3ZlNCN0xpNHVjSEp2Y0hOOVBseHVJQ0FnSUR4d1lYUm9JR1E5WENKTk5DNDFNVFlnTnk0MU5EaGpNQzQwTXpZdE1DNDBORFlnTVM0d05ETXRNQzQwT0RFZ01TNDFOellnTUd3ekxqa3dPQ0F6TGpjME55QXpMamt3T0MwekxqYzBOMk13TGpVek15MHdMalE0TVNBeExqRTBNUzB3TGpRME5pQXhMalUzTkNBd0lEQXVORE0ySURBdU5EUTFJREF1TkRBNElERXVNVGszSURBZ01TNDJNVFV0TUM0ME1EWWdNQzQwTVRndE5DNDJPVFVnTkM0MU1ESXROQzQyT1RVZ05DNDFNREl0TUM0eU1UY2dNQzR5TWpNdE1DNDFNRElnTUM0ek16VXRNQzQzT0RjZ01DNHpNelZ6TFRBdU5UY3RNQzR4TVRJdE1DNDNPRGt0TUM0ek16VmpNQ0F3TFRRdU1qZzNMVFF1TURnMExUUXVOamsxTFRRdU5UQXljeTB3TGpRek5pMHhMakUzSURBdE1TNDJNVFY2WENJZ0x6NWNiaUFnUEM5VGRtYytYRzRwTzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRVJ5YjNCa2IzZHVJQ1lnUTJ4bFlYSWdRblYwZEc5dWMxeHVMeThnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVhHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdSSEp2Y0dSdmQyNUpibVJwWTJGMGIzSlFjbTl3Y3p4Y2JpQWdUM0IwYVc5dUlEMGdkVzVyYm05M2JpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNGdQU0JpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtJRDBnUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0Z1pYaDBaVzVrY3lCRGIyMXRiMjVRY205d2MwRnVaRU5zWVhOelRtRnRaVHhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BpQjdYRzRnSUM4cUtpQlVhR1VnWTJocGJHUnlaVzRnZEc4Z1ltVWdjbVZ1WkdWeVpXUWdhVzV6YVdSbElIUm9aU0JwYm1ScFkyRjBiM0l1SUNvdlhHNGdJR05vYVd4a2NtVnVQem9nVW1WaFkzUk9iMlJsTzF4dUlDQXZLaW9nVUhKdmNITWdkR2hoZENCM2FXeHNJR0psSUhCaGMzTmxaQ0J2YmlCMGJ5QjBhR1VnWTJocGJHUnlaVzR1SUNvdlhHNGdJR2x1Ym1WeVVISnZjSE02SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25aR2wySjEwN1hHNGdJQzhxS2lCVWFHVWdabTlqZFhObFpDQnpkR0YwWlNCdlppQjBhR1VnYzJWc1pXTjBMaUFxTDF4dUlDQnBjMFp2WTNWelpXUTZJR0p2YjJ4bFlXNDdYRzRnSUdselJHbHpZV0pzWldRNklHSnZiMnhsWVc0N1hHNTlYRzVjYm1OdmJuTjBJR0poYzJWRFUxTWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9YRzRnSUh0Y2JpQWdJQ0JwYzBadlkzVnpaV1FzWEc0Z0lDQWdkR2hsYldVNklIdGNiaUFnSUNBZ0lITndZV05wYm1jNklIc2dZbUZ6WlZWdWFYUWdmU3hjYmlBZ0lDQWdJR052Ykc5eWN5eGNiaUFnSUNCOUxGeHVJQ0I5T2x4dUlDQWdJSHdnUkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pRY205d2N6eFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGx4dUlDQWdJSHdnUTJ4bFlYSkpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMmx1WkdsallYUnZja052Ym5SaGFXNWxjaWNzWEc0Z0lHUnBjM0JzWVhrNklDZG1iR1Y0Snl4Y2JpQWdkSEpoYm5OcGRHbHZiam9nSjJOdmJHOXlJREUxTUcxekp5eGNiaUFnTGk0dUtIVnVjM1I1YkdWa1hHNGdJQ0FnUHlCN2ZWeHVJQ0FnSURvZ2UxeHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ2FYTkdiMk4xYzJWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3Mk1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJR0poYzJWVmJtbDBJQ29nTWl4Y2JpQWdJQ0FnSUNBZ0p6cG9iM1psY2ljNklIdGNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dhWE5HYjJOMWMyVmtJRDhnWTI5c2IzSnpMbTVsZFhSeVlXdzRNQ0E2SUdOdmJHOXljeTV1WlhWMGNtRnNOREFzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCOUtTeGNibjBwTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pEVTFNZ1BTQmlZWE5sUTFOVE8xeHVaWGh3YjNKMElHTnZibk4wSUVSeWIzQmtiM2R1U1c1a2FXTmhkRzl5SUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0Z4dUlDQndjbTl3Y3pvZ1JISnZjR1J2ZDI1SmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblpISnZjR1J2ZDI1SmJtUnBZMkYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJR2x1WkdsallYUnZjam9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdKMlJ5YjNCa2IzZHVMV2x1WkdsallYUnZjaWM2SUhSeWRXVXNYRzRnSUNBZ0lDQjlLWDFjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUQ1Y2JpQWdJQ0FnSUh0amFHbHNaSEpsYmlCOGZDQThSRzkzYmtOb1pYWnliMjRnTHo1OVhHNGdJQ0FnUEM5a2FYWStYRzRnSUNrN1hHNTlPMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVOc1pXRnlTVzVrYVdOaGRHOXlVSEp2Y0hNOFhHNGdJRTl3ZEdsdmJpQTlJSFZ1YTI1dmQyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVJRDBnWW05dmJHVmhiaXhjYmlBZ1IzSnZkWEFnWlhoMFpXNWtjeUJIY205MWNFSmhjMlU4VDNCMGFXOXVQaUE5SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0lHVjRkR1Z1WkhNZ1EyOXRiVzl1VUhKdmNITkJibVJEYkdGemMwNWhiV1U4VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENGdlMXh1SUNBdktpb2dWR2hsSUdOb2FXeGtjbVZ1SUhSdklHSmxJSEpsYm1SbGNtVmtJR2x1YzJsa1pTQjBhR1VnYVc1a2FXTmhkRzl5TGlBcUwxeHVJQ0JqYUdsc1pISmxiajg2SUZKbFlXTjBUbTlrWlR0Y2JpQWdMeW9xSUZCeWIzQnpJSFJvWVhRZ2QybHNiQ0JpWlNCd1lYTnpaV1FnYjI0Z2RHOGdkR2hsSUdOb2FXeGtjbVZ1TGlBcUwxeHVJQ0JwYm01bGNsQnliM0J6T2lCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKMlJwZGlkZE8xeHVJQ0F2S2lvZ1ZHaGxJR1p2WTNWelpXUWdjM1JoZEdVZ2IyWWdkR2hsSUhObGJHVmpkQzRnS2k5Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWTJ4bFlYSkpibVJwWTJGMGIzSkRVMU1nUFNCaVlYTmxRMU5UTzF4dVpYaHdiM0owSUdOdmJuTjBJRU5zWldGeVNXNWthV05oZEc5eUlEMGdQRnh1SUNCUGNIUnBiMjRzWEc0Z0lFbHpUWFZzZEdrZ1pYaDBaVzVrY3lCaWIyOXNaV0Z1TEZ4dUlDQkhjbTkxY0NCbGVIUmxibVJ6SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0tGeHVJQ0J3Y205d2N6b2dRMnhsWVhKSmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblkyeGxZWEpKYm1ScFkyRjBiM0luTENCN1hHNGdJQ0FnSUNBZ0lHbHVaR2xqWVhSdmNqb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0oyTnNaV0Z5TFdsdVpHbGpZWFJ2Y2ljNklIUnlkV1VzWEc0Z0lDQWdJQ0I5S1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lIdGphR2xzWkhKbGJpQjhmQ0E4UTNKdmMzTkpZMjl1SUM4K2ZWeHVJQ0FnSUR3dlpHbDJQbHh1SUNBcE8xeHVmVHRjYmx4dUx5OGdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0dkx5QlRaWEJoY21GMGIzSmNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRWx1WkdsallYUnZjbE5sY0dGeVlYUnZjbEJ5YjNCelBGeHVJQ0JQY0hScGIyNGdQU0IxYm10dWIzZHVMRnh1SUNCSmMwMTFiSFJwSUdWNGRHVnVaSE1nWW05dmJHVmhiaUE5SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajRnUFNCSGNtOTFjRUpoYzJVOFQzQjBhVzl1UGx4dVBpQmxlSFJsYm1SeklFTnZiVzF2YmxCeWIzQnpRVzVrUTJ4aGMzTk9ZVzFsUEU5d2RHbHZiaXdnU1hOTmRXeDBhU3dnUjNKdmRYQStJSHRjYmlBZ2FYTkVhWE5oWW14bFpEb2dZbTl2YkdWaGJqdGNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBibTVsY2xCeWIzQnpQem9nU2xOWUxrbHVkSEpwYm5OcFkwVnNaVzFsYm5Seld5ZHpjR0Z1SjEwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnBibVJwWTJGMGIzSlRaWEJoY21GMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwUnBjMkZpYkdWa0xGeHVJQ0FnSUhSb1pXMWxPaUI3WEc0Z0lDQWdJQ0J6Y0dGamFXNW5PaUI3SUdKaGMyVlZibWwwSUgwc1hHNGdJQ0FnSUNCamIyeHZjbk1zWEc0Z0lDQWdmU3hjYmlBZ2ZUb2dTVzVrYVdOaGRHOXlVMlZ3WVhKaGRHOXlVSEp2Y0hNOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDRzWEc0Z0lIVnVjM1I1YkdWa09pQmliMjlzWldGdVhHNHBPaUJEVTFOUFltcGxZM1JYYVhSb1RHRmlaV3dnUFQ0Z0tIdGNiaUFnYkdGaVpXdzZJQ2RwYm1ScFkyRjBiM0pUWlhCaGNtRjBiM0luTEZ4dUlDQmhiR2xuYmxObGJHWTZJQ2R6ZEhKbGRHTm9KeXhjYmlBZ2QybGtkR2c2SURFc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1ltRmphMmR5YjNWdVpFTnZiRzl5T2lCcGMwUnBjMkZpYkdWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3eE1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJRzFoY21kcGJrSnZkSFJ2YlRvZ1ltRnpaVlZ1YVhRZ0tpQXlMRnh1SUNBZ0lDQWdJQ0J0WVhKbmFXNVViM0E2SUdKaGMyVlZibWwwSUNvZ01peGNiaUFnSUNBZ0lIMHBMRnh1ZlNrN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCSmJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJZ1BTQThYRzRnSUU5d2RHbHZiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0b1hHNGdJSEJ5YjNCek9pQkpibVJwWTJGMGIzSlRaWEJoY21GMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQbHh1S1NBOVBpQjdYRzRnSUdOdmJuTjBJSHNnYVc1dVpYSlFjbTl3Y3lCOUlEMGdjSEp2Y0hNN1hHNGdJSEpsZEhWeWJpQW9YRzRnSUNBZ1BITndZVzVjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb2NISnZjSE1zSUNkcGJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJQ2RwYm1ScFkyRjBiM0l0YzJWd1lYSmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJSDBwZlZ4dUlDQWdJQzgrWEc0Z0lDazdYRzU5TzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRXh2WVdScGJtZGNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVqYjI1emRDQnNiMkZrYVc1blJHOTBRVzVwYldGMGFXOXVjeUE5SUd0bGVXWnlZVzFsYzJCY2JpQWdNQ1VzSURnd0pTd2dNVEF3SlNCN0lHOXdZV05wZEhrNklEQTdJSDFjYmlBZ05EQWxJSHNnYjNCaFkybDBlVG9nTVRzZ2ZWeHVZRHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJR3h2WVdScGJtZEpibVJwWTJGMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwWnZZM1Z6WldRc1hHNGdJQ0FnYzJsNlpTeGNiaUFnSUNCMGFHVnRaVG9nZTF4dUlDQWdJQ0FnWTI5c2IzSnpMRnh1SUNBZ0lDQWdjM0JoWTJsdVp6b2dleUJpWVhObFZXNXBkQ0I5TEZ4dUlDQWdJSDBzWEc0Z0lIMDZJRXh2WVdScGJtZEpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMnh2WVdScGJtZEpibVJwWTJGMGIzSW5MRnh1SUNCa2FYTndiR0Y1T2lBblpteGxlQ2NzWEc0Z0lIUnlZVzV6YVhScGIyNDZJQ2RqYjJ4dmNpQXhOVEJ0Y3ljc1hHNGdJR0ZzYVdkdVUyVnNaam9nSjJObGJuUmxjaWNzWEc0Z0lHWnZiblJUYVhwbE9pQnphWHBsTEZ4dUlDQnNhVzVsU0dWcFoyaDBPaUF4TEZ4dUlDQnRZWEpuYVc1U2FXZG9kRG9nYzJsNlpTeGNiaUFnZEdWNGRFRnNhV2R1T2lBblkyVnVkR1Z5Snl4Y2JpQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0oyMXBaR1JzWlNjc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUdselJtOWpkWE5sWkNBL0lHTnZiRzl5Y3k1dVpYVjBjbUZzTmpBZ09pQmpiMnh2Y25NdWJtVjFkSEpoYkRJd0xGeHVJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQmlZWE5sVlc1cGRDQXFJRElzWEc0Z0lDQWdJQ0I5S1N4Y2JuMHBPMXh1WEc1cGJuUmxjbVpoWTJVZ1RHOWhaR2x1WjBSdmRGQnliM0J6SUh0Y2JpQWdaR1ZzWVhrNklHNTFiV0psY2p0Y2JpQWdiMlptYzJWME9pQmliMjlzWldGdU8xeHVmVnh1WTI5dWMzUWdURzloWkdsdVowUnZkQ0E5SUNoN0lHUmxiR0Y1TENCdlptWnpaWFFnZlRvZ1RHOWhaR2x1WjBSdmRGQnliM0J6S1NBOVBpQW9YRzRnSUR4emNHRnVYRzRnSUNBZ1kzTnpQWHQ3WEc0Z0lDQWdJQ0JoYm1sdFlYUnBiMjQ2SUdBa2UyeHZZV1JwYm1kRWIzUkJibWx0WVhScGIyNXpmU0F4Y3lCbFlYTmxMV2x1TFc5MWRDQWtlMlJsYkdGNWZXMXpJR2x1Wm1sdWFYUmxPMkFzWEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrUTI5c2IzSTZJQ2RqZFhKeVpXNTBRMjlzYjNJbkxGeHVJQ0FnSUNBZ1ltOXlaR1Z5VW1Ga2FYVnpPaUFuTVdWdEp5eGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnYldGeVoybHVUR1ZtZERvZ2IyWm1jMlYwSUQ4Z0p6RmxiU2NnT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNCb1pXbG5hSFE2SUNjeFpXMG5MRnh1SUNBZ0lDQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0ozUnZjQ2NzWEc0Z0lDQWdJQ0IzYVdSMGFEb2dKekZsYlNjc1hHNGdJQ0FnZlgxY2JpQWdMejVjYmlrN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdURzloWkdsdVowbHVaR2xqWVhSdmNsQnliM0J6UEZ4dUlDQlBjSFJwYjI0Z1BTQjFibXR1YjNkdUxGeHVJQ0JKYzAxMWJIUnBJR1Y0ZEdWdVpITWdZbTl2YkdWaGJpQTlJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNGdQU0JIY205MWNFSmhjMlU4VDNCMGFXOXVQbHh1UGlCbGVIUmxibVJ6SUVOdmJXMXZibEJ5YjNCelFXNWtRMnhoYzNOT1lXMWxQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0lIdGNiaUFnTHlvcUlGQnliM0J6SUhSb1lYUWdkMmxzYkNCaVpTQndZWE56WldRZ2IyNGdkRzhnZEdobElHTm9hV3hrY21WdUxpQXFMMXh1SUNCcGJtNWxjbEJ5YjNCek9pQktVMWd1U1c1MGNtbHVjMmxqUld4bGJXVnVkSE5iSjJScGRpZGRPMXh1SUNBdktpb2dWR2hsSUdadlkzVnpaV1FnYzNSaGRHVWdiMllnZEdobElITmxiR1ZqZEM0Z0tpOWNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBjMFJwYzJGaWJHVmtPaUJpYjI5c1pXRnVPMXh1SUNBdktpb2dVMlYwSUhOcGVtVWdiMllnZEdobElHTnZiblJoYVc1bGNpNGdLaTljYmlBZ2MybDZaVG9nYm5WdFltVnlPMXh1ZlZ4dVpYaHdiM0owSUdOdmJuTjBJRXh2WVdScGJtZEpibVJwWTJGMGIzSWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9lMXh1SUNCcGJtNWxjbEJ5YjNCekxGeHVJQ0JwYzFKMGJDeGNiaUFnYzJsNlpTQTlJRFFzWEc0Z0lDNHVMbkpsYzNSUWNtOXdjMXh1ZlRvZ1RHOWhaR2x1WjBsdVpHbGpZWFJ2Y2xCeWIzQnpQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0tTQTlQaUI3WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEdScGRseHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb1hHNGdJQ0FnSUNBZ0lIc2dMaTR1Y21WemRGQnliM0J6TENCcGJtNWxjbEJ5YjNCekxDQnBjMUowYkN3Z2MybDZaU0I5TEZ4dUlDQWdJQ0FnSUNBbmJHOWhaR2x1WjBsdVpHbGpZWFJ2Y2ljc1hHNGdJQ0FnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdJQ0JwYm1ScFkyRjBiM0k2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnSjJ4dllXUnBibWN0YVc1a2FXTmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnS1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lEeE1iMkZrYVc1blJHOTBJR1JsYkdGNVBYc3dmU0J2Wm1aelpYUTllMmx6VW5Sc2ZTQXZQbHh1SUNBZ0lDQWdQRXh2WVdScGJtZEViM1FnWkdWc1lYazllekUyTUgwZ2IyWm1jMlYwSUM4K1hHNGdJQ0FnSUNBOFRHOWhaR2x1WjBSdmRDQmtaV3hoZVQxN016SXdmU0J2Wm1aelpYUTlleUZwYzFKMGJIMGdMejVjYmlBZ0lDQThMMlJwZGo1Y2JpQWdLVHRjYm4wN1hHNGlYWDA9ICovXCIsXG4gIHRvU3RyaW5nOiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfX1xufTtcbnZhciBTdmcgPSBmdW5jdGlvbiBTdmcoX3JlZikge1xuICB2YXIgc2l6ZSA9IF9yZWYuc2l6ZSxcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQkMik7XG4gIHJldHVybiBqc3goXCJzdmdcIiwgX2V4dGVuZHMoe1xuICAgIGhlaWdodDogc2l6ZSxcbiAgICB3aWR0aDogc2l6ZSxcbiAgICB2aWV3Qm94OiBcIjAgMCAyMCAyMFwiLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgZm9jdXNhYmxlOiBcImZhbHNlXCIsXG4gICAgY3NzOiBfcmVmMlxuICB9LCBwcm9wcykpO1xufTtcbnZhciBDcm9zc0ljb24gPSBmdW5jdGlvbiBDcm9zc0ljb24ocHJvcHMpIHtcbiAgcmV0dXJuIGpzeChTdmcsIF9leHRlbmRzKHtcbiAgICBzaXplOiAyMFxuICB9LCBwcm9wcyksIGpzeChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiXG4gIH0pKTtcbn07XG52YXIgRG93bkNoZXZyb24gPSBmdW5jdGlvbiBEb3duQ2hldnJvbihwcm9wcykge1xuICByZXR1cm4ganN4KFN2ZywgX2V4dGVuZHMoe1xuICAgIHNpemU6IDIwXG4gIH0sIHByb3BzKSwganN4KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCJcbiAgfSkpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgYmFzZUNTUyA9IGZ1bmN0aW9uIGJhc2VDU1MoX3JlZjMsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0ZvY3VzZWQgPSBfcmVmMy5pc0ZvY3VzZWQsXG4gICAgX3JlZjMkdGhlbWUgPSBfcmVmMy50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWYzJHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjMkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgICAnOmhvdmVyJzoge1xuICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwXG4gICAgfVxuICB9KTtcbn07XG52YXIgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xudmFyIERyb3Bkb3duSW5kaWNhdG9yID0gZnVuY3Rpb24gRHJvcGRvd25JbmRpY2F0b3IocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdkcm9wZG93bkluZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2Ryb3Bkb3duLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCBqc3goRG93bkNoZXZyb24sIG51bGwpKTtcbn07XG52YXIgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xudmFyIENsZWFySW5kaWNhdG9yID0gZnVuY3Rpb24gQ2xlYXJJbmRpY2F0b3IocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjbGVhckluZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCBqc3goQ3Jvc3NJY29uLCBudWxsKSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlcGFyYXRvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSBmdW5jdGlvbiBpbmRpY2F0b3JTZXBhcmF0b3JDU1MoX3JlZjQsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZjQuaXNEaXNhYmxlZCxcbiAgICBfcmVmNCR0aGVtZSA9IF9yZWY0LnRoZW1lLFxuICAgIGJhc2VVbml0ID0gX3JlZjQkdGhlbWUuc3BhY2luZy5iYXNlVW5pdCxcbiAgICBjb2xvcnMgPSBfcmVmNCR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gICAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gICAgd2lkdGg6IDFcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBtYXJnaW5Cb3R0b206IGJhc2VVbml0ICogMixcbiAgICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMlxuICB9KTtcbn07XG52YXIgSW5kaWNhdG9yU2VwYXJhdG9yID0gZnVuY3Rpb24gSW5kaWNhdG9yU2VwYXJhdG9yKHByb3BzKSB7XG4gIHZhciBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcInNwYW5cIiwgX2V4dGVuZHMoe30sIGlubmVyUHJvcHMsIGdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JTZXBhcmF0b3InLCB7XG4gICAgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlXG4gIH0pKSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXMoX3RlbXBsYXRlT2JqZWN0IHx8IChfdGVtcGxhdGVPYmplY3QgPSBfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsKFtcIlxcbiAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cXG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cXG5cIl0pKSk7XG52YXIgbG9hZGluZ0luZGljYXRvckNTUyA9IGZ1bmN0aW9uIGxvYWRpbmdJbmRpY2F0b3JDU1MoX3JlZjUsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0ZvY3VzZWQgPSBfcmVmNS5pc0ZvY3VzZWQsXG4gICAgc2l6ZSA9IF9yZWY1LnNpemUsXG4gICAgX3JlZjUkdGhlbWUgPSBfcmVmNS50aGVtZSxcbiAgICBjb2xvcnMgPSBfcmVmNSR0aGVtZS5jb2xvcnMsXG4gICAgYmFzZVVuaXQgPSBfcmVmNSR0aGVtZS5zcGFjaW5nLmJhc2VVbml0O1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICAgIGZvbnRTaXplOiBzaXplLFxuICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDJcbiAgfSk7XG59O1xudmFyIExvYWRpbmdEb3QgPSBmdW5jdGlvbiBMb2FkaW5nRG90KF9yZWY2KSB7XG4gIHZhciBkZWxheSA9IF9yZWY2LmRlbGF5LFxuICAgIG9mZnNldCA9IF9yZWY2Lm9mZnNldDtcbiAgcmV0dXJuIGpzeChcInNwYW5cIiwge1xuICAgIGNzczogLyojX19QVVJFX18qL2NzcyQyKHtcbiAgICAgIGFuaW1hdGlvbjogXCJcIi5jb25jYXQobG9hZGluZ0RvdEFuaW1hdGlvbnMsIFwiIDFzIGVhc2UtaW4tb3V0IFwiKS5jb25jYXQoZGVsYXksIFwibXMgaW5maW5pdGU7XCIpLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzFlbScsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIG1hcmdpbkxlZnQ6IG9mZnNldCA/ICcxZW0nIDogdW5kZWZpbmVkLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nXG4gICAgfSwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJcIiA6IFwiO2xhYmVsOkxvYWRpbmdEb3Q7XCIsIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IFwiXCIgOiBcIi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR2xqWVhSdmNuTXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVcxUlNTSXNJbVpwYkdVaU9pSnBibVJwWTJGMGIzSnpMblJ6ZUNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaUJBYW5ONElHcHplQ0FxTDF4dWFXMXdiM0owSUhzZ1NsTllMQ0JTWldGamRFNXZaR1VnZlNCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdleUJxYzNnc0lHdGxlV1p5WVcxbGN5QjlJR1p5YjIwZ0owQmxiVzkwYVc5dUwzSmxZV04wSnp0Y2JseHVhVzF3YjNKMElIdGNiaUFnUTI5dGJXOXVVSEp2Y0hOQmJtUkRiR0Z6YzA1aGJXVXNYRzRnSUVOVFUwOWlhbVZqZEZkcGRHaE1ZV0psYkN4Y2JpQWdSM0p2ZFhCQ1lYTmxMRnh1ZlNCbWNtOXRJQ2N1TGk5MGVYQmxjeWM3WEc1cGJYQnZjblFnZXlCblpYUlRkSGxzWlZCeWIzQnpJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmk4dklFUnliM0JrYjNkdUlDWWdRMnhsWVhJZ1NXTnZibk5jYmk4dklEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh1WEc1amIyNXpkQ0JUZG1jZ1BTQW9lMXh1SUNCemFYcGxMRnh1SUNBdUxpNXdjbTl3YzF4dWZUb2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkemRtY25YU0FtSUhzZ2MybDZaVG9nYm5WdFltVnlJSDBwSUQwK0lDaGNiaUFnUEhOMloxeHVJQ0FnSUdobGFXZG9kRDE3YzJsNlpYMWNiaUFnSUNCM2FXUjBhRDE3YzJsNlpYMWNiaUFnSUNCMmFXVjNRbTk0UFZ3aU1DQXdJREl3SURJd1hDSmNiaUFnSUNCaGNtbGhMV2hwWkdSbGJqMWNJblJ5ZFdWY0lseHVJQ0FnSUdadlkzVnpZV0pzWlQxY0ltWmhiSE5sWENKY2JpQWdJQ0JqYzNNOWUzdGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnWm1sc2JEb2dKMk4xY25KbGJuUkRiMnh2Y2ljc1hHNGdJQ0FnSUNCc2FXNWxTR1ZwWjJoME9pQXhMRnh1SUNBZ0lDQWdjM1J5YjJ0bE9pQW5ZM1Z5Y21WdWRFTnZiRzl5Snl4Y2JpQWdJQ0FnSUhOMGNtOXJaVmRwWkhSb09pQXdMRnh1SUNBZ0lIMTlYRzRnSUNBZ2V5NHVMbkJ5YjNCemZWeHVJQ0F2UGx4dUtUdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1EzSnZjM05KWTI5dVVISnZjSE1nUFNCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKM04yWnlkZElDWWdleUJ6YVhwbFB6b2diblZ0WW1WeUlIMDdYRzVsZUhCdmNuUWdZMjl1YzNRZ1EzSnZjM05KWTI5dUlEMGdLSEJ5YjNCek9pQkRjbTl6YzBsamIyNVFjbTl3Y3lrZ1BUNGdLRnh1SUNBOFUzWm5JSE5wZW1VOWV6SXdmU0I3TGk0dWNISnZjSE45UGx4dUlDQWdJRHh3WVhSb0lHUTlYQ0pOTVRRdU16UTRJREUwTGpnME9XTXRNQzQwTmprZ01DNDBOamt0TVM0eU1qa2dNQzQwTmprdE1TNDJPVGNnTUd3dE1pNDJOVEV0TXk0d016QXRNaTQyTlRFZ015NHdNamxqTFRBdU5EWTVJREF1TkRZNUxURXVNakk1SURBdU5EWTVMVEV1TmprM0lEQXRNQzQwTmprdE1DNDBOamt0TUM0ME5qa3RNUzR5TWprZ01DMHhMalk1TjJ3eUxqYzFPQzB6TGpFMUxUSXVOelU1TFRNdU1UVXlZeTB3TGpRMk9TMHdMalEyT1Mwd0xqUTJPUzB4TGpJeU9DQXdMVEV1TmprM2N6RXVNakk0TFRBdU5EWTVJREV1TmprM0lEQnNNaTQyTlRJZ015NHdNekVnTWk0Mk5URXRNeTR3TXpGak1DNDBOamt0TUM0ME5qa2dNUzR5TWpndE1DNDBOamtnTVM0Mk9UY2dNSE13TGpRMk9TQXhMakl5T1NBd0lERXVOamszYkMweUxqYzFPQ0F6TGpFMU1pQXlMamMxT0NBekxqRTFZekF1TkRZNUlEQXVORFk1SURBdU5EWTVJREV1TWpJNUlEQWdNUzQyT1RoNlhDSWdMejVjYmlBZ1BDOVRkbWMrWEc0cE8xeHVaWGh3YjNKMElIUjVjR1VnUkc5M2JrTm9aWFp5YjI1UWNtOXdjeUE5SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25jM1puSjEwZ0ppQjdJSE5wZW1VL09pQnVkVzFpWlhJZ2ZUdGNibVY0Y0c5eWRDQmpiMjV6ZENCRWIzZHVRMmhsZG5KdmJpQTlJQ2h3Y205d2N6b2dSRzkzYmtOb1pYWnliMjVRY205d2N5a2dQVDRnS0Z4dUlDQThVM1puSUhOcGVtVTllekl3ZlNCN0xpNHVjSEp2Y0hOOVBseHVJQ0FnSUR4d1lYUm9JR1E5WENKTk5DNDFNVFlnTnk0MU5EaGpNQzQwTXpZdE1DNDBORFlnTVM0d05ETXRNQzQwT0RFZ01TNDFOellnTUd3ekxqa3dPQ0F6TGpjME55QXpMamt3T0MwekxqYzBOMk13TGpVek15MHdMalE0TVNBeExqRTBNUzB3TGpRME5pQXhMalUzTkNBd0lEQXVORE0ySURBdU5EUTFJREF1TkRBNElERXVNVGszSURBZ01TNDJNVFV0TUM0ME1EWWdNQzQwTVRndE5DNDJPVFVnTkM0MU1ESXROQzQyT1RVZ05DNDFNREl0TUM0eU1UY2dNQzR5TWpNdE1DNDFNRElnTUM0ek16VXRNQzQzT0RjZ01DNHpNelZ6TFRBdU5UY3RNQzR4TVRJdE1DNDNPRGt0TUM0ek16VmpNQ0F3TFRRdU1qZzNMVFF1TURnMExUUXVOamsxTFRRdU5UQXljeTB3TGpRek5pMHhMakUzSURBdE1TNDJNVFY2WENJZ0x6NWNiaUFnUEM5VGRtYytYRzRwTzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRVJ5YjNCa2IzZHVJQ1lnUTJ4bFlYSWdRblYwZEc5dWMxeHVMeThnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVhHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdSSEp2Y0dSdmQyNUpibVJwWTJGMGIzSlFjbTl3Y3p4Y2JpQWdUM0IwYVc5dUlEMGdkVzVyYm05M2JpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNGdQU0JpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtJRDBnUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0Z1pYaDBaVzVrY3lCRGIyMXRiMjVRY205d2MwRnVaRU5zWVhOelRtRnRaVHhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BpQjdYRzRnSUM4cUtpQlVhR1VnWTJocGJHUnlaVzRnZEc4Z1ltVWdjbVZ1WkdWeVpXUWdhVzV6YVdSbElIUm9aU0JwYm1ScFkyRjBiM0l1SUNvdlhHNGdJR05vYVd4a2NtVnVQem9nVW1WaFkzUk9iMlJsTzF4dUlDQXZLaW9nVUhKdmNITWdkR2hoZENCM2FXeHNJR0psSUhCaGMzTmxaQ0J2YmlCMGJ5QjBhR1VnWTJocGJHUnlaVzR1SUNvdlhHNGdJR2x1Ym1WeVVISnZjSE02SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25aR2wySjEwN1hHNGdJQzhxS2lCVWFHVWdabTlqZFhObFpDQnpkR0YwWlNCdlppQjBhR1VnYzJWc1pXTjBMaUFxTDF4dUlDQnBjMFp2WTNWelpXUTZJR0p2YjJ4bFlXNDdYRzRnSUdselJHbHpZV0pzWldRNklHSnZiMnhsWVc0N1hHNTlYRzVjYm1OdmJuTjBJR0poYzJWRFUxTWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9YRzRnSUh0Y2JpQWdJQ0JwYzBadlkzVnpaV1FzWEc0Z0lDQWdkR2hsYldVNklIdGNiaUFnSUNBZ0lITndZV05wYm1jNklIc2dZbUZ6WlZWdWFYUWdmU3hjYmlBZ0lDQWdJR052Ykc5eWN5eGNiaUFnSUNCOUxGeHVJQ0I5T2x4dUlDQWdJSHdnUkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pRY205d2N6eFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGx4dUlDQWdJSHdnUTJ4bFlYSkpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMmx1WkdsallYUnZja052Ym5SaGFXNWxjaWNzWEc0Z0lHUnBjM0JzWVhrNklDZG1iR1Y0Snl4Y2JpQWdkSEpoYm5OcGRHbHZiam9nSjJOdmJHOXlJREUxTUcxekp5eGNiaUFnTGk0dUtIVnVjM1I1YkdWa1hHNGdJQ0FnUHlCN2ZWeHVJQ0FnSURvZ2UxeHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ2FYTkdiMk4xYzJWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3Mk1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJR0poYzJWVmJtbDBJQ29nTWl4Y2JpQWdJQ0FnSUNBZ0p6cG9iM1psY2ljNklIdGNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dhWE5HYjJOMWMyVmtJRDhnWTI5c2IzSnpMbTVsZFhSeVlXdzRNQ0E2SUdOdmJHOXljeTV1WlhWMGNtRnNOREFzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCOUtTeGNibjBwTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pEVTFNZ1BTQmlZWE5sUTFOVE8xeHVaWGh3YjNKMElHTnZibk4wSUVSeWIzQmtiM2R1U1c1a2FXTmhkRzl5SUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0Z4dUlDQndjbTl3Y3pvZ1JISnZjR1J2ZDI1SmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblpISnZjR1J2ZDI1SmJtUnBZMkYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJR2x1WkdsallYUnZjam9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdKMlJ5YjNCa2IzZHVMV2x1WkdsallYUnZjaWM2SUhSeWRXVXNYRzRnSUNBZ0lDQjlLWDFjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUQ1Y2JpQWdJQ0FnSUh0amFHbHNaSEpsYmlCOGZDQThSRzkzYmtOb1pYWnliMjRnTHo1OVhHNGdJQ0FnUEM5a2FYWStYRzRnSUNrN1hHNTlPMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVOc1pXRnlTVzVrYVdOaGRHOXlVSEp2Y0hNOFhHNGdJRTl3ZEdsdmJpQTlJSFZ1YTI1dmQyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVJRDBnWW05dmJHVmhiaXhjYmlBZ1IzSnZkWEFnWlhoMFpXNWtjeUJIY205MWNFSmhjMlU4VDNCMGFXOXVQaUE5SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0lHVjRkR1Z1WkhNZ1EyOXRiVzl1VUhKdmNITkJibVJEYkdGemMwNWhiV1U4VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENGdlMXh1SUNBdktpb2dWR2hsSUdOb2FXeGtjbVZ1SUhSdklHSmxJSEpsYm1SbGNtVmtJR2x1YzJsa1pTQjBhR1VnYVc1a2FXTmhkRzl5TGlBcUwxeHVJQ0JqYUdsc1pISmxiajg2SUZKbFlXTjBUbTlrWlR0Y2JpQWdMeW9xSUZCeWIzQnpJSFJvWVhRZ2QybHNiQ0JpWlNCd1lYTnpaV1FnYjI0Z2RHOGdkR2hsSUdOb2FXeGtjbVZ1TGlBcUwxeHVJQ0JwYm01bGNsQnliM0J6T2lCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKMlJwZGlkZE8xeHVJQ0F2S2lvZ1ZHaGxJR1p2WTNWelpXUWdjM1JoZEdVZ2IyWWdkR2hsSUhObGJHVmpkQzRnS2k5Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWTJ4bFlYSkpibVJwWTJGMGIzSkRVMU1nUFNCaVlYTmxRMU5UTzF4dVpYaHdiM0owSUdOdmJuTjBJRU5zWldGeVNXNWthV05oZEc5eUlEMGdQRnh1SUNCUGNIUnBiMjRzWEc0Z0lFbHpUWFZzZEdrZ1pYaDBaVzVrY3lCaWIyOXNaV0Z1TEZ4dUlDQkhjbTkxY0NCbGVIUmxibVJ6SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0tGeHVJQ0J3Y205d2N6b2dRMnhsWVhKSmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblkyeGxZWEpKYm1ScFkyRjBiM0luTENCN1hHNGdJQ0FnSUNBZ0lHbHVaR2xqWVhSdmNqb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0oyTnNaV0Z5TFdsdVpHbGpZWFJ2Y2ljNklIUnlkV1VzWEc0Z0lDQWdJQ0I5S1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lIdGphR2xzWkhKbGJpQjhmQ0E4UTNKdmMzTkpZMjl1SUM4K2ZWeHVJQ0FnSUR3dlpHbDJQbHh1SUNBcE8xeHVmVHRjYmx4dUx5OGdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0dkx5QlRaWEJoY21GMGIzSmNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRWx1WkdsallYUnZjbE5sY0dGeVlYUnZjbEJ5YjNCelBGeHVJQ0JQY0hScGIyNGdQU0IxYm10dWIzZHVMRnh1SUNCSmMwMTFiSFJwSUdWNGRHVnVaSE1nWW05dmJHVmhiaUE5SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajRnUFNCSGNtOTFjRUpoYzJVOFQzQjBhVzl1UGx4dVBpQmxlSFJsYm1SeklFTnZiVzF2YmxCeWIzQnpRVzVrUTJ4aGMzTk9ZVzFsUEU5d2RHbHZiaXdnU1hOTmRXeDBhU3dnUjNKdmRYQStJSHRjYmlBZ2FYTkVhWE5oWW14bFpEb2dZbTl2YkdWaGJqdGNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBibTVsY2xCeWIzQnpQem9nU2xOWUxrbHVkSEpwYm5OcFkwVnNaVzFsYm5Seld5ZHpjR0Z1SjEwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnBibVJwWTJGMGIzSlRaWEJoY21GMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwUnBjMkZpYkdWa0xGeHVJQ0FnSUhSb1pXMWxPaUI3WEc0Z0lDQWdJQ0J6Y0dGamFXNW5PaUI3SUdKaGMyVlZibWwwSUgwc1hHNGdJQ0FnSUNCamIyeHZjbk1zWEc0Z0lDQWdmU3hjYmlBZ2ZUb2dTVzVrYVdOaGRHOXlVMlZ3WVhKaGRHOXlVSEp2Y0hNOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDRzWEc0Z0lIVnVjM1I1YkdWa09pQmliMjlzWldGdVhHNHBPaUJEVTFOUFltcGxZM1JYYVhSb1RHRmlaV3dnUFQ0Z0tIdGNiaUFnYkdGaVpXdzZJQ2RwYm1ScFkyRjBiM0pUWlhCaGNtRjBiM0luTEZ4dUlDQmhiR2xuYmxObGJHWTZJQ2R6ZEhKbGRHTm9KeXhjYmlBZ2QybGtkR2c2SURFc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1ltRmphMmR5YjNWdVpFTnZiRzl5T2lCcGMwUnBjMkZpYkdWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3eE1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJRzFoY21kcGJrSnZkSFJ2YlRvZ1ltRnpaVlZ1YVhRZ0tpQXlMRnh1SUNBZ0lDQWdJQ0J0WVhKbmFXNVViM0E2SUdKaGMyVlZibWwwSUNvZ01peGNiaUFnSUNBZ0lIMHBMRnh1ZlNrN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCSmJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJZ1BTQThYRzRnSUU5d2RHbHZiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0b1hHNGdJSEJ5YjNCek9pQkpibVJwWTJGMGIzSlRaWEJoY21GMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQbHh1S1NBOVBpQjdYRzRnSUdOdmJuTjBJSHNnYVc1dVpYSlFjbTl3Y3lCOUlEMGdjSEp2Y0hNN1hHNGdJSEpsZEhWeWJpQW9YRzRnSUNBZ1BITndZVzVjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb2NISnZjSE1zSUNkcGJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJQ2RwYm1ScFkyRjBiM0l0YzJWd1lYSmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJSDBwZlZ4dUlDQWdJQzgrWEc0Z0lDazdYRzU5TzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRXh2WVdScGJtZGNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVqYjI1emRDQnNiMkZrYVc1blJHOTBRVzVwYldGMGFXOXVjeUE5SUd0bGVXWnlZVzFsYzJCY2JpQWdNQ1VzSURnd0pTd2dNVEF3SlNCN0lHOXdZV05wZEhrNklEQTdJSDFjYmlBZ05EQWxJSHNnYjNCaFkybDBlVG9nTVRzZ2ZWeHVZRHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJR3h2WVdScGJtZEpibVJwWTJGMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwWnZZM1Z6WldRc1hHNGdJQ0FnYzJsNlpTeGNiaUFnSUNCMGFHVnRaVG9nZTF4dUlDQWdJQ0FnWTI5c2IzSnpMRnh1SUNBZ0lDQWdjM0JoWTJsdVp6b2dleUJpWVhObFZXNXBkQ0I5TEZ4dUlDQWdJSDBzWEc0Z0lIMDZJRXh2WVdScGJtZEpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMnh2WVdScGJtZEpibVJwWTJGMGIzSW5MRnh1SUNCa2FYTndiR0Y1T2lBblpteGxlQ2NzWEc0Z0lIUnlZVzV6YVhScGIyNDZJQ2RqYjJ4dmNpQXhOVEJ0Y3ljc1hHNGdJR0ZzYVdkdVUyVnNaam9nSjJObGJuUmxjaWNzWEc0Z0lHWnZiblJUYVhwbE9pQnphWHBsTEZ4dUlDQnNhVzVsU0dWcFoyaDBPaUF4TEZ4dUlDQnRZWEpuYVc1U2FXZG9kRG9nYzJsNlpTeGNiaUFnZEdWNGRFRnNhV2R1T2lBblkyVnVkR1Z5Snl4Y2JpQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0oyMXBaR1JzWlNjc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUdselJtOWpkWE5sWkNBL0lHTnZiRzl5Y3k1dVpYVjBjbUZzTmpBZ09pQmpiMnh2Y25NdWJtVjFkSEpoYkRJd0xGeHVJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQmlZWE5sVlc1cGRDQXFJRElzWEc0Z0lDQWdJQ0I5S1N4Y2JuMHBPMXh1WEc1cGJuUmxjbVpoWTJVZ1RHOWhaR2x1WjBSdmRGQnliM0J6SUh0Y2JpQWdaR1ZzWVhrNklHNTFiV0psY2p0Y2JpQWdiMlptYzJWME9pQmliMjlzWldGdU8xeHVmVnh1WTI5dWMzUWdURzloWkdsdVowUnZkQ0E5SUNoN0lHUmxiR0Y1TENCdlptWnpaWFFnZlRvZ1RHOWhaR2x1WjBSdmRGQnliM0J6S1NBOVBpQW9YRzRnSUR4emNHRnVYRzRnSUNBZ1kzTnpQWHQ3WEc0Z0lDQWdJQ0JoYm1sdFlYUnBiMjQ2SUdBa2UyeHZZV1JwYm1kRWIzUkJibWx0WVhScGIyNXpmU0F4Y3lCbFlYTmxMV2x1TFc5MWRDQWtlMlJsYkdGNWZXMXpJR2x1Wm1sdWFYUmxPMkFzWEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrUTI5c2IzSTZJQ2RqZFhKeVpXNTBRMjlzYjNJbkxGeHVJQ0FnSUNBZ1ltOXlaR1Z5VW1Ga2FYVnpPaUFuTVdWdEp5eGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnYldGeVoybHVUR1ZtZERvZ2IyWm1jMlYwSUQ4Z0p6RmxiU2NnT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNCb1pXbG5hSFE2SUNjeFpXMG5MRnh1SUNBZ0lDQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0ozUnZjQ2NzWEc0Z0lDQWdJQ0IzYVdSMGFEb2dKekZsYlNjc1hHNGdJQ0FnZlgxY2JpQWdMejVjYmlrN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdURzloWkdsdVowbHVaR2xqWVhSdmNsQnliM0J6UEZ4dUlDQlBjSFJwYjI0Z1BTQjFibXR1YjNkdUxGeHVJQ0JKYzAxMWJIUnBJR1Y0ZEdWdVpITWdZbTl2YkdWaGJpQTlJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNGdQU0JIY205MWNFSmhjMlU4VDNCMGFXOXVQbHh1UGlCbGVIUmxibVJ6SUVOdmJXMXZibEJ5YjNCelFXNWtRMnhoYzNOT1lXMWxQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0lIdGNiaUFnTHlvcUlGQnliM0J6SUhSb1lYUWdkMmxzYkNCaVpTQndZWE56WldRZ2IyNGdkRzhnZEdobElHTm9hV3hrY21WdUxpQXFMMXh1SUNCcGJtNWxjbEJ5YjNCek9pQktVMWd1U1c1MGNtbHVjMmxqUld4bGJXVnVkSE5iSjJScGRpZGRPMXh1SUNBdktpb2dWR2hsSUdadlkzVnpaV1FnYzNSaGRHVWdiMllnZEdobElITmxiR1ZqZEM0Z0tpOWNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBjMFJwYzJGaWJHVmtPaUJpYjI5c1pXRnVPMXh1SUNBdktpb2dVMlYwSUhOcGVtVWdiMllnZEdobElHTnZiblJoYVc1bGNpNGdLaTljYmlBZ2MybDZaVG9nYm5WdFltVnlPMXh1ZlZ4dVpYaHdiM0owSUdOdmJuTjBJRXh2WVdScGJtZEpibVJwWTJGMGIzSWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9lMXh1SUNCcGJtNWxjbEJ5YjNCekxGeHVJQ0JwYzFKMGJDeGNiaUFnYzJsNlpTQTlJRFFzWEc0Z0lDNHVMbkpsYzNSUWNtOXdjMXh1ZlRvZ1RHOWhaR2x1WjBsdVpHbGpZWFJ2Y2xCeWIzQnpQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0tTQTlQaUI3WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEdScGRseHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb1hHNGdJQ0FnSUNBZ0lIc2dMaTR1Y21WemRGQnliM0J6TENCcGJtNWxjbEJ5YjNCekxDQnBjMUowYkN3Z2MybDZaU0I5TEZ4dUlDQWdJQ0FnSUNBbmJHOWhaR2x1WjBsdVpHbGpZWFJ2Y2ljc1hHNGdJQ0FnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdJQ0JwYm1ScFkyRjBiM0k2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnSjJ4dllXUnBibWN0YVc1a2FXTmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnS1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lEeE1iMkZrYVc1blJHOTBJR1JsYkdGNVBYc3dmU0J2Wm1aelpYUTllMmx6VW5Sc2ZTQXZQbHh1SUNBZ0lDQWdQRXh2WVdScGJtZEViM1FnWkdWc1lYazllekUyTUgwZ2IyWm1jMlYwSUM4K1hHNGdJQ0FnSUNBOFRHOWhaR2x1WjBSdmRDQmtaV3hoZVQxN016SXdmU0J2Wm1aelpYUTlleUZwYzFKMGJIMGdMejVjYmlBZ0lDQThMMlJwZGo1Y2JpQWdLVHRjYm4wN1hHNGlYWDA9ICovXCIpXG4gIH0pO1xufTtcbnZhciBMb2FkaW5nSW5kaWNhdG9yID0gZnVuY3Rpb24gTG9hZGluZ0luZGljYXRvcihfcmVmNykge1xuICB2YXIgaW5uZXJQcm9wcyA9IF9yZWY3LmlubmVyUHJvcHMsXG4gICAgaXNSdGwgPSBfcmVmNy5pc1J0bCxcbiAgICBfcmVmNyRzaXplID0gX3JlZjcuc2l6ZSxcbiAgICBzaXplID0gX3JlZjckc2l6ZSA9PT0gdm9pZCAwID8gNCA6IF9yZWY3JHNpemUsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY3LCBfZXhjbHVkZWQyKTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICBpc1J0bDogaXNSdGwsXG4gICAgc2l6ZTogc2l6ZVxuICB9KSwgJ2xvYWRpbmdJbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBqc3goTG9hZGluZ0RvdCwge1xuICAgIGRlbGF5OiAwLFxuICAgIG9mZnNldDogaXNSdGxcbiAgfSksIGpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDE2MCxcbiAgICBvZmZzZXQ6IHRydWVcbiAgfSksIGpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDMyMCxcbiAgICBvZmZzZXQ6ICFpc1J0bFxuICB9KSk7XG59O1xuXG52YXIgY3NzJDEgPSBmdW5jdGlvbiBjc3MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gX3JlZi5pc0ZvY3VzZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnMsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZiR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnY29udHJvbCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtaW5IZWlnaHQ6IHNwYWNpbmcuY29udHJvbEhlaWdodCxcbiAgICBvdXRsaW5lOiAnMCAhaW1wb3J0YW50JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0cmFuc2l0aW9uOiAnYWxsIDEwMG1zJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsNSA6IGNvbG9ycy5uZXV0cmFsMCxcbiAgICBib3JkZXJDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBpc0ZvY3VzZWQgPyBjb2xvcnMucHJpbWFyeSA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgYm94U2hhZG93OiBpc0ZvY3VzZWQgPyBcIjAgMCAwIDFweCBcIi5jb25jYXQoY29sb3JzLnByaW1hcnkpIDogdW5kZWZpbmVkLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgYm9yZGVyQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5wcmltYXJ5IDogY29sb3JzLm5ldXRyYWwzMFxuICAgIH1cbiAgfSk7XG59O1xudmFyIENvbnRyb2wgPSBmdW5jdGlvbiBDb250cm9sKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIG1lbnVJc09wZW4gPSBwcm9wcy5tZW51SXNPcGVuO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICByZWY6IGlubmVyUmVmXG4gIH0sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjb250cm9sJywge1xuICAgIGNvbnRyb2w6IHRydWUsXG4gICAgJ2NvbnRyb2wtLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnY29udHJvbC0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnY29udHJvbC0tbWVudS1pcy1vcGVuJzogbWVudUlzT3BlblxuICB9KSwgaW5uZXJQcm9wcywge1xuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkIHx8IHVuZGVmaW5lZFxuICB9KSwgY2hpbGRyZW4pO1xufTtcbnZhciBDb250cm9sJDEgPSBDb250cm9sO1xuXG52YXIgX2V4Y2x1ZGVkJDEgPSBbXCJkYXRhXCJdO1xudmFyIGdyb3VwQ1NTID0gZnVuY3Rpb24gZ3JvdXBDU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIHNwYWNpbmcgPSBfcmVmLnRoZW1lLnNwYWNpbmc7XG4gIHJldHVybiB1bnN0eWxlZCA/IHt9IDoge1xuICAgIHBhZGRpbmdCb3R0b206IHNwYWNpbmcuYmFzZVVuaXQgKiAyLFxuICAgIHBhZGRpbmdUb3A6IHNwYWNpbmcuYmFzZVVuaXQgKiAyXG4gIH07XG59O1xudmFyIEdyb3VwID0gZnVuY3Rpb24gR3JvdXAocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgY3ggPSBwcm9wcy5jeCxcbiAgICBnZXRTdHlsZXMgPSBwcm9wcy5nZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lcyA9IHByb3BzLmdldENsYXNzTmFtZXMsXG4gICAgSGVhZGluZyA9IHByb3BzLkhlYWRpbmcsXG4gICAgaGVhZGluZ1Byb3BzID0gcHJvcHMuaGVhZGluZ1Byb3BzLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGxhYmVsID0gcHJvcHMubGFiZWwsXG4gICAgdGhlbWUgPSBwcm9wcy50aGVtZSxcbiAgICBzZWxlY3RQcm9wcyA9IHByb3BzLnNlbGVjdFByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnZ3JvdXAnLCB7XG4gICAgZ3JvdXA6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBqc3goSGVhZGluZywgX2V4dGVuZHMoe30sIGhlYWRpbmdQcm9wcywge1xuICAgIHNlbGVjdFByb3BzOiBzZWxlY3RQcm9wcyxcbiAgICB0aGVtZTogdGhlbWUsXG4gICAgZ2V0U3R5bGVzOiBnZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICBjeDogY3hcbiAgfSksIGxhYmVsKSwganN4KFwiZGl2XCIsIG51bGwsIGNoaWxkcmVuKSk7XG59O1xudmFyIGdyb3VwSGVhZGluZ0NTUyA9IGZ1bmN0aW9uIGdyb3VwSGVhZGluZ0NTUyhfcmVmMiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWYyJHRoZW1lID0gX3JlZjIudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZjIkdGhlbWUuY29sb3JzLFxuICAgIHNwYWNpbmcgPSBfcmVmMiR0aGVtZS5zcGFjaW5nO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdncm91cCcsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2Jsb2NrJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgIGZvbnRTaXplOiAnNzUlJyxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgbWFyZ2luQm90dG9tOiAnMC4yNWVtJyxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCAqIDMsXG4gICAgcGFkZGluZ1JpZ2h0OiBzcGFjaW5nLmJhc2VVbml0ICogMyxcbiAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJ1xuICB9KTtcbn07XG52YXIgR3JvdXBIZWFkaW5nID0gZnVuY3Rpb24gR3JvdXBIZWFkaW5nKHByb3BzKSB7XG4gIHZhciBfY2xlYW5Db21tb25Qcm9wcyA9IGNsZWFuQ29tbW9uUHJvcHMocHJvcHMpO1xuICAgIF9jbGVhbkNvbW1vblByb3BzLmRhdGE7XG4gICAgdmFyIGlubmVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX2NsZWFuQ29tbW9uUHJvcHMsIF9leGNsdWRlZCQxKTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2dyb3VwSGVhZGluZycsIHtcbiAgICAnZ3JvdXAtaGVhZGluZyc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpKTtcbn07XG52YXIgR3JvdXAkMSA9IEdyb3VwO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiaW5uZXJSZWZcIiwgXCJpc0Rpc2FibGVkXCIsIFwiaXNIaWRkZW5cIiwgXCJpbnB1dENsYXNzTmFtZVwiXTtcbnZhciBpbnB1dENTUyA9IGZ1bmN0aW9uIGlucHV0Q1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIHZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICB2aXNpYmlsaXR5OiBpc0Rpc2FibGVkID8gJ2hpZGRlbicgOiAndmlzaWJsZScsXG4gICAgLy8gZm9yY2UgY3NzIHRvIHJlY29tcHV0ZSB3aGVuIHZhbHVlIGNoYW5nZSBkdWUgdG8gQGVtb3Rpb24gYnVnLlxuICAgIC8vIFdlIGNhbiByZW1vdmUgaXQgd2hlbmV2ZXIgdGhlIGJ1ZyBpcyBmaXhlZC5cbiAgICB0cmFuc2Zvcm06IHZhbHVlID8gJ3RyYW5zbGF0ZVooMCknIDogJydcbiAgfSwgY29udGFpbmVyU3R5bGUpLCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIG1hcmdpbjogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ1RvcDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODBcbiAgfSk7XG59O1xudmFyIHNwYWNpbmdTdHlsZSA9IHtcbiAgZ3JpZEFyZWE6ICcxIC8gMicsXG4gIGZvbnQ6ICdpbmhlcml0JyxcbiAgbWluV2lkdGg6ICcycHgnLFxuICBib3JkZXI6IDAsXG4gIG1hcmdpbjogMCxcbiAgb3V0bGluZTogMCxcbiAgcGFkZGluZzogMFxufTtcbnZhciBjb250YWluZXJTdHlsZSA9IHtcbiAgZmxleDogJzEgMSBhdXRvJyxcbiAgZGlzcGxheTogJ2lubGluZS1ncmlkJyxcbiAgZ3JpZEFyZWE6ICcxIC8gMSAvIDIgLyAzJyxcbiAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJzAgbWluLWNvbnRlbnQnLFxuICAnJjphZnRlcic6IF9vYmplY3RTcHJlYWQoe1xuICAgIGNvbnRlbnQ6ICdhdHRyKGRhdGEtdmFsdWUpIFwiIFwiJyxcbiAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICB3aGl0ZVNwYWNlOiAncHJlJ1xuICB9LCBzcGFjaW5nU3R5bGUpXG59O1xudmFyIGlucHV0U3R5bGUgPSBmdW5jdGlvbiBpbnB1dFN0eWxlKGlzSGlkZGVuKSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2lucHV0JyxcbiAgICBjb2xvcjogJ2luaGVyaXQnLFxuICAgIGJhY2tncm91bmQ6IDAsXG4gICAgb3BhY2l0eTogaXNIaWRkZW4gPyAwIDogMSxcbiAgICB3aWR0aDogJzEwMCUnXG4gIH0sIHNwYWNpbmdTdHlsZSk7XG59O1xudmFyIElucHV0ID0gZnVuY3Rpb24gSW5wdXQocHJvcHMpIHtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgdmFsdWUgPSBwcm9wcy52YWx1ZTtcbiAgdmFyIF9jbGVhbkNvbW1vblByb3BzID0gY2xlYW5Db21tb25Qcm9wcyhwcm9wcyksXG4gICAgaW5uZXJSZWYgPSBfY2xlYW5Db21tb25Qcm9wcy5pbm5lclJlZixcbiAgICBpc0Rpc2FibGVkID0gX2NsZWFuQ29tbW9uUHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc0hpZGRlbiA9IF9jbGVhbkNvbW1vblByb3BzLmlzSGlkZGVuLFxuICAgIGlucHV0Q2xhc3NOYW1lID0gX2NsZWFuQ29tbW9uUHJvcHMuaW5wdXRDbGFzc05hbWUsXG4gICAgaW5uZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfY2xlYW5Db21tb25Qcm9wcywgX2V4Y2x1ZGVkKTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2lucHV0Jywge1xuICAgICdpbnB1dC1jb250YWluZXInOiB0cnVlXG4gIH0pLCB7XG4gICAgXCJkYXRhLXZhbHVlXCI6IHZhbHVlIHx8ICcnXG4gIH0pLCBqc3goXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjeCh7XG4gICAgICBpbnB1dDogdHJ1ZVxuICAgIH0sIGlucHV0Q2xhc3NOYW1lKSxcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIHN0eWxlOiBpbnB1dFN0eWxlKGlzSGlkZGVuKSxcbiAgICBkaXNhYmxlZDogaXNEaXNhYmxlZFxuICB9LCBpbm5lclByb3BzKSkpO1xufTtcbnZhciBJbnB1dCQxID0gSW5wdXQ7XG5cbnZhciBtdWx0aVZhbHVlQ1NTID0gZnVuY3Rpb24gbXVsdGlWYWx1ZUNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnbXVsdGlWYWx1ZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIG1pbldpZHRoOiAwXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcnMubmV1dHJhbDEwLFxuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBtYXJnaW46IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBtdWx0aVZhbHVlTGFiZWxDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlTGFiZWxDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmMiR0aGVtZSA9IF9yZWYyLnRoZW1lLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYyJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnMsXG4gICAgY3JvcFdpdGhFbGxpcHNpcyA9IF9yZWYyLmNyb3BXaXRoRWxsaXBzaXM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiBjcm9wV2l0aEVsbGlwc2lzIHx8IGNyb3BXaXRoRWxsaXBzaXMgPT09IHVuZGVmaW5lZCA/ICdlbGxpcHNpcycgOiB1bmRlZmluZWQsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgZm9udFNpemU6ICc4NSUnLFxuICAgIHBhZGRpbmc6IDMsXG4gICAgcGFkZGluZ0xlZnQ6IDZcbiAgfSk7XG59O1xudmFyIG11bHRpVmFsdWVSZW1vdmVDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlUmVtb3ZlQ1NTKF9yZWYzLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjMkdGhlbWUgPSBfcmVmMy50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZjMkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmMyR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgY29sb3JzID0gX3JlZjMkdGhlbWUuY29sb3JzLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYzLmlzRm9jdXNlZDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4J1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5kYW5nZXJMaWdodCA6IHVuZGVmaW5lZCxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCxcbiAgICBwYWRkaW5nUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQsXG4gICAgJzpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLmRhbmdlckxpZ2h0LFxuICAgICAgY29sb3I6IGNvbG9ycy5kYW5nZXJcbiAgICB9XG4gIH0pO1xufTtcbnZhciBNdWx0aVZhbHVlR2VuZXJpYyA9IGZ1bmN0aW9uIE11bHRpVmFsdWVHZW5lcmljKF9yZWY0KSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWY0LmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBfcmVmNC5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIGlubmVyUHJvcHMsIGNoaWxkcmVuKTtcbn07XG52YXIgTXVsdGlWYWx1ZUNvbnRhaW5lciA9IE11bHRpVmFsdWVHZW5lcmljO1xudmFyIE11bHRpVmFsdWVMYWJlbCA9IE11bHRpVmFsdWVHZW5lcmljO1xuZnVuY3Rpb24gTXVsdGlWYWx1ZVJlbW92ZShfcmVmNSkge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmNS5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjUuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcm9sZTogXCJidXR0b25cIlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwganN4KENyb3NzSWNvbiwge1xuICAgIHNpemU6IDE0XG4gIH0pKTtcbn1cbnZhciBNdWx0aVZhbHVlID0gZnVuY3Rpb24gTXVsdGlWYWx1ZShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb21wb25lbnRzID0gcHJvcHMuY29tcG9uZW50cyxcbiAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICByZW1vdmVQcm9wcyA9IHByb3BzLnJlbW92ZVByb3BzLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHM7XG4gIHZhciBDb250YWluZXIgPSBjb21wb25lbnRzLkNvbnRhaW5lcixcbiAgICBMYWJlbCA9IGNvbXBvbmVudHMuTGFiZWwsXG4gICAgUmVtb3ZlID0gY29tcG9uZW50cy5SZW1vdmU7XG4gIHJldHVybiBqc3goQ29udGFpbmVyLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtdWx0aVZhbHVlJywge1xuICAgICAgJ211bHRpLXZhbHVlJzogdHJ1ZSxcbiAgICAgICdtdWx0aS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gICAgfSkpLCBpbm5lclByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSwganN4KExhYmVsLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZUxhYmVsJywge1xuICAgICAgJ211bHRpLXZhbHVlX19sYWJlbCc6IHRydWVcbiAgICB9KSksXG4gICAgc2VsZWN0UHJvcHM6IHNlbGVjdFByb3BzXG4gIH0sIGNoaWxkcmVuKSwganN4KFJlbW92ZSwge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgaW5uZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZVJlbW92ZScsIHtcbiAgICAgICdtdWx0aS12YWx1ZV9fcmVtb3ZlJzogdHJ1ZVxuICAgIH0pKSwge30sIHtcbiAgICAgICdhcmlhLWxhYmVsJzogXCJSZW1vdmUgXCIuY29uY2F0KGNoaWxkcmVuIHx8ICdvcHRpb24nKVxuICAgIH0sIHJlbW92ZVByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSkpO1xufTtcbnZhciBNdWx0aVZhbHVlJDEgPSBNdWx0aVZhbHVlO1xuXG52YXIgb3B0aW9uQ1NTID0gZnVuY3Rpb24gb3B0aW9uQ1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYuaXNGb2N1c2VkLFxuICAgIGlzU2VsZWN0ZWQgPSBfcmVmLmlzU2VsZWN0ZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnb3B0aW9uJyxcbiAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6ICdyZ2JhKDAsIDAsIDAsIDApJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNTZWxlY3RlZCA/IGNvbG9ycy5wcmltYXJ5IDogaXNGb2N1c2VkID8gY29sb3JzLnByaW1hcnkyNSA6ICd0cmFuc3BhcmVudCcsXG4gICAgY29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDIwIDogaXNTZWxlY3RlZCA/IGNvbG9ycy5uZXV0cmFsMCA6ICdpbmhlcml0JyxcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0ICogMiwgXCJweCBcIikuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAzLCBcInB4XCIpLFxuICAgIC8vIHByb3ZpZGUgc29tZSBhZmZvcmRhbmNlIG9uIHRvdWNoIGRldmljZXNcbiAgICAnOmFjdGl2ZSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogIWlzRGlzYWJsZWQgPyBpc1NlbGVjdGVkID8gY29sb3JzLnByaW1hcnkgOiBjb2xvcnMucHJpbWFyeTUwIDogdW5kZWZpbmVkXG4gICAgfVxuICB9KTtcbn07XG52YXIgT3B0aW9uID0gZnVuY3Rpb24gT3B0aW9uKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpc1NlbGVjdGVkID0gcHJvcHMuaXNTZWxlY3RlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnb3B0aW9uJywge1xuICAgIG9wdGlvbjogdHJ1ZSxcbiAgICAnb3B0aW9uLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWQsXG4gICAgJ29wdGlvbi0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnb3B0aW9uLS1pcy1zZWxlY3RlZCc6IGlzU2VsZWN0ZWRcbiAgfSksIHtcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkXG4gIH0sIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIE9wdGlvbiQxID0gT3B0aW9uO1xuXG52YXIgcGxhY2Vob2xkZXJDU1MgPSBmdW5jdGlvbiBwbGFjZWhvbGRlckNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAncGxhY2Vob2xkZXInLFxuICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMydcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw1MCxcbiAgICBtYXJnaW5MZWZ0OiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBtYXJnaW5SaWdodDogc3BhY2luZy5iYXNlVW5pdCAvIDJcbiAgfSk7XG59O1xudmFyIFBsYWNlaG9sZGVyID0gZnVuY3Rpb24gUGxhY2Vob2xkZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdwbGFjZWhvbGRlcicsIHtcbiAgICBwbGFjZWhvbGRlcjogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgUGxhY2Vob2xkZXIkMSA9IFBsYWNlaG9sZGVyO1xuXG52YXIgY3NzID0gZnVuY3Rpb24gY3NzKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ3NpbmdsZVZhbHVlJyxcbiAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWw0MCA6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgbWFyZ2luTGVmdDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgbWFyZ2luUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSA9IGZ1bmN0aW9uIFNpbmdsZVZhbHVlKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnc2luZ2xlVmFsdWUnLCB7XG4gICAgJ3NpbmdsZS12YWx1ZSc6IHRydWUsXG4gICAgJ3NpbmdsZS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSQxID0gU2luZ2xlVmFsdWU7XG5cbnZhciBjb21wb25lbnRzID0ge1xuICBDbGVhckluZGljYXRvcjogQ2xlYXJJbmRpY2F0b3IsXG4gIENvbnRyb2w6IENvbnRyb2wkMSxcbiAgRHJvcGRvd25JbmRpY2F0b3I6IERyb3Bkb3duSW5kaWNhdG9yLFxuICBEb3duQ2hldnJvbjogRG93bkNoZXZyb24sXG4gIENyb3NzSWNvbjogQ3Jvc3NJY29uLFxuICBHcm91cDogR3JvdXAkMSxcbiAgR3JvdXBIZWFkaW5nOiBHcm91cEhlYWRpbmcsXG4gIEluZGljYXRvcnNDb250YWluZXI6IEluZGljYXRvcnNDb250YWluZXIsXG4gIEluZGljYXRvclNlcGFyYXRvcjogSW5kaWNhdG9yU2VwYXJhdG9yLFxuICBJbnB1dDogSW5wdXQkMSxcbiAgTG9hZGluZ0luZGljYXRvcjogTG9hZGluZ0luZGljYXRvcixcbiAgTWVudTogTWVudSQxLFxuICBNZW51TGlzdDogTWVudUxpc3QsXG4gIE1lbnVQb3J0YWw6IE1lbnVQb3J0YWwsXG4gIExvYWRpbmdNZXNzYWdlOiBMb2FkaW5nTWVzc2FnZSxcbiAgTm9PcHRpb25zTWVzc2FnZTogTm9PcHRpb25zTWVzc2FnZSxcbiAgTXVsdGlWYWx1ZTogTXVsdGlWYWx1ZSQxLFxuICBNdWx0aVZhbHVlQ29udGFpbmVyOiBNdWx0aVZhbHVlQ29udGFpbmVyLFxuICBNdWx0aVZhbHVlTGFiZWw6IE11bHRpVmFsdWVMYWJlbCxcbiAgTXVsdGlWYWx1ZVJlbW92ZTogTXVsdGlWYWx1ZVJlbW92ZSxcbiAgT3B0aW9uOiBPcHRpb24kMSxcbiAgUGxhY2Vob2xkZXI6IFBsYWNlaG9sZGVyJDEsXG4gIFNlbGVjdENvbnRhaW5lcjogU2VsZWN0Q29udGFpbmVyLFxuICBTaW5nbGVWYWx1ZTogU2luZ2xlVmFsdWUkMSxcbiAgVmFsdWVDb250YWluZXI6IFZhbHVlQ29udGFpbmVyXG59O1xudmFyIGRlZmF1bHRDb21wb25lbnRzID0gZnVuY3Rpb24gZGVmYXVsdENvbXBvbmVudHMocHJvcHMpIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29tcG9uZW50cyksIHByb3BzLmNvbXBvbmVudHMpO1xufTtcblxuZXhwb3J0IHsgaXNNb2JpbGVEZXZpY2UgYXMgQSwgbXVsdGlWYWx1ZUFzVmFsdWUgYXMgQiwgc2luZ2xlVmFsdWVBc1ZhbHVlIGFzIEMsIHZhbHVlVGVybmFyeSBhcyBELCBjbGFzc05hbWVzIGFzIEUsIGRlZmF1bHRDb21wb25lbnRzIGFzIEYsIGlzRG9jdW1lbnRFbGVtZW50IGFzIEcsIGNsZWFuVmFsdWUgYXMgSCwgc2Nyb2xsSW50b1ZpZXcgYXMgSSwgbm9vcCBhcyBKLCBub3ROdWxsaXNoIGFzIEssIGhhbmRsZUlucHV0Q2hhbmdlIGFzIEwsIE1lbnVQbGFjZXIgYXMgTSwgY2xlYXJJbmRpY2F0b3JDU1MgYXMgYSwgY29udGFpbmVyQ1NTIGFzIGIsIGNvbXBvbmVudHMgYXMgYywgY3NzJDEgYXMgZCwgZHJvcGRvd25JbmRpY2F0b3JDU1MgYXMgZSwgZ3JvdXBIZWFkaW5nQ1NTIGFzIGYsIGdyb3VwQ1NTIGFzIGcsIGluZGljYXRvclNlcGFyYXRvckNTUyBhcyBoLCBpbmRpY2F0b3JzQ29udGFpbmVyQ1NTIGFzIGksIGlucHV0Q1NTIGFzIGosIGxvYWRpbmdNZXNzYWdlQ1NTIGFzIGssIGxvYWRpbmdJbmRpY2F0b3JDU1MgYXMgbCwgbWVudUNTUyBhcyBtLCBtZW51TGlzdENTUyBhcyBuLCBtZW51UG9ydGFsQ1NTIGFzIG8sIG11bHRpVmFsdWVDU1MgYXMgcCwgbXVsdGlWYWx1ZUxhYmVsQ1NTIGFzIHEsIHJlbW92ZVByb3BzIGFzIHIsIHN1cHBvcnRzUGFzc2l2ZUV2ZW50cyBhcyBzLCBtdWx0aVZhbHVlUmVtb3ZlQ1NTIGFzIHQsIG5vT3B0aW9uc01lc3NhZ2VDU1MgYXMgdSwgb3B0aW9uQ1NTIGFzIHYsIHBsYWNlaG9sZGVyQ1NTIGFzIHcsIGNzcyBhcyB4LCB2YWx1ZUNvbnRhaW5lckNTUyBhcyB5LCBpc1RvdWNoQ2FwYWJsZSBhcyB6IH07XG4iLCJ2YXIgc2FmZUlzTmFOID0gTnVtYmVyLmlzTmFOIHx8XG4gICAgZnVuY3Rpb24gcG9ueWZpbGwodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IHZhbHVlO1xuICAgIH07XG5mdW5jdGlvbiBpc0VxdWFsKGZpcnN0LCBzZWNvbmQpIHtcbiAgICBpZiAoZmlyc3QgPT09IHNlY29uZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHNhZmVJc05hTihmaXJzdCkgJiYgc2FmZUlzTmFOKHNlY29uZCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGFyZUlucHV0c0VxdWFsKG5ld0lucHV0cywgbGFzdElucHV0cykge1xuICAgIGlmIChuZXdJbnB1dHMubGVuZ3RoICE9PSBsYXN0SW5wdXRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3SW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaXNFcXVhbChuZXdJbnB1dHNbaV0sIGxhc3RJbnB1dHNbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIG1lbW9pemVPbmUocmVzdWx0Rm4sIGlzRXF1YWwpIHtcbiAgICBpZiAoaXNFcXVhbCA9PT0gdm9pZCAwKSB7IGlzRXF1YWwgPSBhcmVJbnB1dHNFcXVhbDsgfVxuICAgIHZhciBjYWNoZSA9IG51bGw7XG4gICAgZnVuY3Rpb24gbWVtb2l6ZWQoKSB7XG4gICAgICAgIHZhciBuZXdBcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBuZXdBcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhY2hlICYmIGNhY2hlLmxhc3RUaGlzID09PSB0aGlzICYmIGlzRXF1YWwobmV3QXJncywgY2FjaGUubGFzdEFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGUubGFzdFJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGFzdFJlc3VsdCA9IHJlc3VsdEZuLmFwcGx5KHRoaXMsIG5ld0FyZ3MpO1xuICAgICAgICBjYWNoZSA9IHtcbiAgICAgICAgICAgIGxhc3RSZXN1bHQ6IGxhc3RSZXN1bHQsXG4gICAgICAgICAgICBsYXN0QXJnczogbmV3QXJncyxcbiAgICAgICAgICAgIGxhc3RUaGlzOiB0aGlzLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDtcbiAgICB9XG4gICAgbWVtb2l6ZWQuY2xlYXIgPSBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgY2FjaGUgPSBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG5leHBvcnQgeyBtZW1vaXplT25lIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDInO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjayc7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzJztcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHMnO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlcic7XG5pbXBvcnQgX3RvQ29uc3VtYWJsZUFycmF5IGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZU1lbW8sIEZyYWdtZW50LCB1c2VSZWYsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHIgYXMgcmVtb3ZlUHJvcHMsIHMgYXMgc3VwcG9ydHNQYXNzaXZlRXZlbnRzLCBhIGFzIGNsZWFySW5kaWNhdG9yQ1NTLCBiIGFzIGNvbnRhaW5lckNTUywgZCBhcyBjc3MkMSwgZSBhcyBkcm9wZG93bkluZGljYXRvckNTUywgZyBhcyBncm91cENTUywgZiBhcyBncm91cEhlYWRpbmdDU1MsIGkgYXMgaW5kaWNhdG9yc0NvbnRhaW5lckNTUywgaCBhcyBpbmRpY2F0b3JTZXBhcmF0b3JDU1MsIGogYXMgaW5wdXRDU1MsIGwgYXMgbG9hZGluZ0luZGljYXRvckNTUywgayBhcyBsb2FkaW5nTWVzc2FnZUNTUywgbSBhcyBtZW51Q1NTLCBuIGFzIG1lbnVMaXN0Q1NTLCBvIGFzIG1lbnVQb3J0YWxDU1MsIHAgYXMgbXVsdGlWYWx1ZUNTUywgcSBhcyBtdWx0aVZhbHVlTGFiZWxDU1MsIHQgYXMgbXVsdGlWYWx1ZVJlbW92ZUNTUywgdSBhcyBub09wdGlvbnNNZXNzYWdlQ1NTLCB2IGFzIG9wdGlvbkNTUywgdyBhcyBwbGFjZWhvbGRlckNTUywgeCBhcyBjc3MkMiwgeSBhcyB2YWx1ZUNvbnRhaW5lckNTUywgeiBhcyBpc1RvdWNoQ2FwYWJsZSwgQSBhcyBpc01vYmlsZURldmljZSwgQiBhcyBtdWx0aVZhbHVlQXNWYWx1ZSwgQyBhcyBzaW5nbGVWYWx1ZUFzVmFsdWUsIEQgYXMgdmFsdWVUZXJuYXJ5LCBFIGFzIGNsYXNzTmFtZXMsIEYgYXMgZGVmYXVsdENvbXBvbmVudHMsIEcgYXMgaXNEb2N1bWVudEVsZW1lbnQsIEggYXMgY2xlYW5WYWx1ZSwgSSBhcyBzY3JvbGxJbnRvVmlldywgSiBhcyBub29wLCBNIGFzIE1lbnVQbGFjZXIsIEsgYXMgbm90TnVsbGlzaCB9IGZyb20gJy4vaW5kZXgtNjQxZWU1YjguZXNtLmpzJztcbmltcG9ydCB7IGpzeCwgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IG1lbW9pemVPbmUgZnJvbSAnbWVtb2l6ZS1vbmUnO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fJDIoKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxuXG4vLyBBc3Npc3RpdmUgdGV4dCB0byBkZXNjcmliZSB2aXN1YWwgZWxlbWVudHMuIEhpZGRlbiBmb3Igc2lnaHRlZCB1c2Vycy5cbnZhciBfcmVmID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8ge1xuICBuYW1lOiBcIjdwZzBjai1hMTF5VGV4dFwiLFxuICBzdHlsZXM6IFwibGFiZWw6YTExeVRleHQ7ei1pbmRleDo5OTk5O2JvcmRlcjowO2NsaXA6cmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO2hlaWdodDoxcHg7d2lkdGg6MXB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwXCJcbn0gOiB7XG4gIG5hbWU6IFwiMWY0M2F2ei1hMTF5VGV4dC1BMTF5VGV4dFwiLFxuICBzdHlsZXM6IFwibGFiZWw6YTExeVRleHQ7ei1pbmRleDo5OTk5O2JvcmRlcjowO2NsaXA6cmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO2hlaWdodDoxcHg7d2lkdGg6MXB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwO2xhYmVsOkExMXlUZXh0O1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWtFeE1YbFVaWGgwTG5SemVDSmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRlBTU0lzSW1acGJHVWlPaUpCTVRGNVZHVjRkQzUwYzNnaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaW9nUUdwemVDQnFjM2dnS2k5Y2JtbHRjRzl5ZENCN0lFcFRXQ0I5SUdaeWIyMGdKM0psWVdOMEp6dGNibWx0Y0c5eWRDQjdJR3B6ZUNCOUlHWnliMjBnSjBCbGJXOTBhVzl1TDNKbFlXTjBKenRjYmx4dUx5OGdRWE56YVhOMGFYWmxJSFJsZUhRZ2RHOGdaR1Z6WTNKcFltVWdkbWx6ZFdGc0lHVnNaVzFsYm5SekxpQklhV1JrWlc0Z1ptOXlJSE5wWjJoMFpXUWdkWE5sY25NdVhHNWpiMjV6ZENCQk1URjVWR1Y0ZENBOUlDaHdjbTl3Y3pvZ1NsTllMa2x1ZEhKcGJuTnBZMFZzWlcxbGJuUnpXeWR6Y0dGdUoxMHBJRDArSUNoY2JpQWdQSE53WVc1Y2JpQWdJQ0JqYzNNOWUzdGNiaUFnSUNBZ0lHeGhZbVZzT2lBbllURXhlVlJsZUhRbkxGeHVJQ0FnSUNBZ2VrbHVaR1Y0T2lBNU9UazVMRnh1SUNBZ0lDQWdZbTl5WkdWeU9pQXdMRnh1SUNBZ0lDQWdZMnhwY0RvZ0ozSmxZM1FvTVhCNExDQXhjSGdzSURGd2VDd2dNWEI0S1Njc1hHNGdJQ0FnSUNCb1pXbG5hSFE2SURFc1hHNGdJQ0FnSUNCM2FXUjBhRG9nTVN4Y2JpQWdJQ0FnSUhCdmMybDBhVzl1T2lBbllXSnpiMngxZEdVbkxGeHVJQ0FnSUNBZ2IzWmxjbVpzYjNjNklDZG9hV1JrWlc0bkxGeHVJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01DeGNiaUFnSUNBZ0lIZG9hWFJsVTNCaFkyVTZJQ2R1YjNkeVlYQW5MRnh1SUNBZ0lIMTlYRzRnSUNBZ2V5NHVMbkJ5YjNCemZWeHVJQ0F2UGx4dUtUdGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdRVEV4ZVZSbGVIUTdYRzRpWFgwPSAqL1wiLFxuICB0b1N0cmluZzogX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX18kMlxufTtcbnZhciBBMTF5VGV4dCA9IGZ1bmN0aW9uIEExMXlUZXh0KHByb3BzKSB7XG4gIHJldHVybiBqc3goXCJzcGFuXCIsIF9leHRlbmRzKHtcbiAgICBjc3M6IF9yZWZcbiAgfSwgcHJvcHMpKTtcbn07XG52YXIgQTExeVRleHQkMSA9IEExMXlUZXh0O1xuXG52YXIgZGVmYXVsdEFyaWFMaXZlTWVzc2FnZXMgPSB7XG4gIGd1aWRhbmNlOiBmdW5jdGlvbiBndWlkYW5jZShwcm9wcykge1xuICAgIHZhciBpc1NlYXJjaGFibGUgPSBwcm9wcy5pc1NlYXJjaGFibGUsXG4gICAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aSxcbiAgICAgIHRhYlNlbGVjdHNWYWx1ZSA9IHByb3BzLnRhYlNlbGVjdHNWYWx1ZSxcbiAgICAgIGNvbnRleHQgPSBwcm9wcy5jb250ZXh0LFxuICAgICAgaXNJbml0aWFsRm9jdXMgPSBwcm9wcy5pc0luaXRpYWxGb2N1cztcbiAgICBzd2l0Y2ggKGNvbnRleHQpIHtcbiAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICByZXR1cm4gXCJVc2UgVXAgYW5kIERvd24gdG8gY2hvb3NlIG9wdGlvbnMsIHByZXNzIEVudGVyIHRvIHNlbGVjdCB0aGUgY3VycmVudGx5IGZvY3VzZWQgb3B0aW9uLCBwcmVzcyBFc2NhcGUgdG8gZXhpdCB0aGUgbWVudVwiLmNvbmNhdCh0YWJTZWxlY3RzVmFsdWUgPyAnLCBwcmVzcyBUYWIgdG8gc2VsZWN0IHRoZSBvcHRpb24gYW5kIGV4aXQgdGhlIG1lbnUnIDogJycsIFwiLlwiKTtcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgcmV0dXJuIGlzSW5pdGlhbEZvY3VzID8gXCJcIi5jb25jYXQocHJvcHNbJ2FyaWEtbGFiZWwnXSB8fCAnU2VsZWN0JywgXCIgaXMgZm9jdXNlZCBcIikuY29uY2F0KGlzU2VhcmNoYWJsZSA/ICcsdHlwZSB0byByZWZpbmUgbGlzdCcgOiAnJywgXCIsIHByZXNzIERvd24gdG8gb3BlbiB0aGUgbWVudSwgXCIpLmNvbmNhdChpc011bHRpID8gJyBwcmVzcyBsZWZ0IHRvIGZvY3VzIHNlbGVjdGVkIHZhbHVlcycgOiAnJykgOiAnJztcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgcmV0dXJuICdVc2UgbGVmdCBhbmQgcmlnaHQgdG8gdG9nZ2xlIGJldHdlZW4gZm9jdXNlZCB2YWx1ZXMsIHByZXNzIEJhY2tzcGFjZSB0byByZW1vdmUgdGhlIGN1cnJlbnRseSBmb2N1c2VkIHZhbHVlJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH0sXG4gIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcm9wcykge1xuICAgIHZhciBhY3Rpb24gPSBwcm9wcy5hY3Rpb24sXG4gICAgICBfcHJvcHMkbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICAgIGxhYmVsID0gX3Byb3BzJGxhYmVsID09PSB2b2lkIDAgPyAnJyA6IF9wcm9wcyRsYWJlbCxcbiAgICAgIGxhYmVscyA9IHByb3BzLmxhYmVscyxcbiAgICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkO1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdkZXNlbGVjdC1vcHRpb24nOlxuICAgICAgY2FzZSAncG9wLXZhbHVlJzpcbiAgICAgIGNhc2UgJ3JlbW92ZS12YWx1ZSc6XG4gICAgICAgIHJldHVybiBcIm9wdGlvbiBcIi5jb25jYXQobGFiZWwsIFwiLCBkZXNlbGVjdGVkLlwiKTtcbiAgICAgIGNhc2UgJ2NsZWFyJzpcbiAgICAgICAgcmV0dXJuICdBbGwgc2VsZWN0ZWQgb3B0aW9ucyBoYXZlIGJlZW4gY2xlYXJlZC4nO1xuICAgICAgY2FzZSAnaW5pdGlhbC1pbnB1dC1mb2N1cyc6XG4gICAgICAgIHJldHVybiBcIm9wdGlvblwiLmNvbmNhdChsYWJlbHMubGVuZ3RoID4gMSA/ICdzJyA6ICcnLCBcIiBcIikuY29uY2F0KGxhYmVscy5qb2luKCcsJyksIFwiLCBzZWxlY3RlZC5cIik7XG4gICAgICBjYXNlICdzZWxlY3Qtb3B0aW9uJzpcbiAgICAgICAgcmV0dXJuIGlzRGlzYWJsZWQgPyBcIm9wdGlvbiBcIi5jb25jYXQobGFiZWwsIFwiIGlzIGRpc2FibGVkLiBTZWxlY3QgYW5vdGhlciBvcHRpb24uXCIpIDogXCJvcHRpb24gXCIuY29uY2F0KGxhYmVsLCBcIiwgc2VsZWN0ZWQuXCIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfSxcbiAgb25Gb2N1czogZnVuY3Rpb24gb25Gb2N1cyhwcm9wcykge1xuICAgIHZhciBjb250ZXh0ID0gcHJvcHMuY29udGV4dCxcbiAgICAgIGZvY3VzZWQgPSBwcm9wcy5mb2N1c2VkLFxuICAgICAgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnMsXG4gICAgICBfcHJvcHMkbGFiZWwyID0gcHJvcHMubGFiZWwsXG4gICAgICBsYWJlbCA9IF9wcm9wcyRsYWJlbDIgPT09IHZvaWQgMCA/ICcnIDogX3Byb3BzJGxhYmVsMixcbiAgICAgIHNlbGVjdFZhbHVlID0gcHJvcHMuc2VsZWN0VmFsdWUsXG4gICAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICAgIGlzU2VsZWN0ZWQgPSBwcm9wcy5pc1NlbGVjdGVkLFxuICAgICAgaXNBcHBsZURldmljZSA9IHByb3BzLmlzQXBwbGVEZXZpY2U7XG4gICAgdmFyIGdldEFycmF5SW5kZXggPSBmdW5jdGlvbiBnZXRBcnJheUluZGV4KGFyciwgaXRlbSkge1xuICAgICAgcmV0dXJuIGFyciAmJiBhcnIubGVuZ3RoID8gXCJcIi5jb25jYXQoYXJyLmluZGV4T2YoaXRlbSkgKyAxLCBcIiBvZiBcIikuY29uY2F0KGFyci5sZW5ndGgpIDogJyc7XG4gICAgfTtcbiAgICBpZiAoY29udGV4dCA9PT0gJ3ZhbHVlJyAmJiBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIFwidmFsdWUgXCIuY29uY2F0KGxhYmVsLCBcIiBmb2N1c2VkLCBcIikuY29uY2F0KGdldEFycmF5SW5kZXgoc2VsZWN0VmFsdWUsIGZvY3VzZWQpLCBcIi5cIik7XG4gICAgfVxuICAgIGlmIChjb250ZXh0ID09PSAnbWVudScgJiYgaXNBcHBsZURldmljZSkge1xuICAgICAgdmFyIGRpc2FibGVkID0gaXNEaXNhYmxlZCA/ICcgZGlzYWJsZWQnIDogJyc7XG4gICAgICB2YXIgc3RhdHVzID0gXCJcIi5jb25jYXQoaXNTZWxlY3RlZCA/ICcgc2VsZWN0ZWQnIDogJycpLmNvbmNhdChkaXNhYmxlZCk7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQobGFiZWwpLmNvbmNhdChzdGF0dXMsIFwiLCBcIikuY29uY2F0KGdldEFycmF5SW5kZXgob3B0aW9ucywgZm9jdXNlZCksIFwiLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9LFxuICBvbkZpbHRlcjogZnVuY3Rpb24gb25GaWx0ZXIocHJvcHMpIHtcbiAgICB2YXIgaW5wdXRWYWx1ZSA9IHByb3BzLmlucHV0VmFsdWUsXG4gICAgICByZXN1bHRzTWVzc2FnZSA9IHByb3BzLnJlc3VsdHNNZXNzYWdlO1xuICAgIHJldHVybiBcIlwiLmNvbmNhdChyZXN1bHRzTWVzc2FnZSkuY29uY2F0KGlucHV0VmFsdWUgPyAnIGZvciBzZWFyY2ggdGVybSAnICsgaW5wdXRWYWx1ZSA6ICcnLCBcIi5cIik7XG4gIH1cbn07XG5cbnZhciBMaXZlUmVnaW9uID0gZnVuY3Rpb24gTGl2ZVJlZ2lvbihwcm9wcykge1xuICB2YXIgYXJpYVNlbGVjdGlvbiA9IHByb3BzLmFyaWFTZWxlY3Rpb24sXG4gICAgZm9jdXNlZE9wdGlvbiA9IHByb3BzLmZvY3VzZWRPcHRpb24sXG4gICAgZm9jdXNlZFZhbHVlID0gcHJvcHMuZm9jdXNlZFZhbHVlLFxuICAgIGZvY3VzYWJsZU9wdGlvbnMgPSBwcm9wcy5mb2N1c2FibGVPcHRpb25zLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBzZWxlY3RWYWx1ZSA9IHByb3BzLnNlbGVjdFZhbHVlLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHMsXG4gICAgaWQgPSBwcm9wcy5pZCxcbiAgICBpc0FwcGxlRGV2aWNlID0gcHJvcHMuaXNBcHBsZURldmljZTtcbiAgdmFyIGFyaWFMaXZlTWVzc2FnZXMgPSBzZWxlY3RQcm9wcy5hcmlhTGl2ZU1lc3NhZ2VzLFxuICAgIGdldE9wdGlvbkxhYmVsID0gc2VsZWN0UHJvcHMuZ2V0T3B0aW9uTGFiZWwsXG4gICAgaW5wdXRWYWx1ZSA9IHNlbGVjdFByb3BzLmlucHV0VmFsdWUsXG4gICAgaXNNdWx0aSA9IHNlbGVjdFByb3BzLmlzTXVsdGksXG4gICAgaXNPcHRpb25EaXNhYmxlZCA9IHNlbGVjdFByb3BzLmlzT3B0aW9uRGlzYWJsZWQsXG4gICAgaXNTZWFyY2hhYmxlID0gc2VsZWN0UHJvcHMuaXNTZWFyY2hhYmxlLFxuICAgIG1lbnVJc09wZW4gPSBzZWxlY3RQcm9wcy5tZW51SXNPcGVuLFxuICAgIG9wdGlvbnMgPSBzZWxlY3RQcm9wcy5vcHRpb25zLFxuICAgIHNjcmVlblJlYWRlclN0YXR1cyA9IHNlbGVjdFByb3BzLnNjcmVlblJlYWRlclN0YXR1cyxcbiAgICB0YWJTZWxlY3RzVmFsdWUgPSBzZWxlY3RQcm9wcy50YWJTZWxlY3RzVmFsdWUsXG4gICAgaXNMb2FkaW5nID0gc2VsZWN0UHJvcHMuaXNMb2FkaW5nO1xuICB2YXIgYXJpYUxhYmVsID0gc2VsZWN0UHJvcHNbJ2FyaWEtbGFiZWwnXTtcbiAgdmFyIGFyaWFMaXZlID0gc2VsZWN0UHJvcHNbJ2FyaWEtbGl2ZSddO1xuXG4gIC8vIFVwZGF0ZSBhcmlhIGxpdmUgbWVzc2FnZSBjb25maWd1cmF0aW9uIHdoZW4gcHJvcCBjaGFuZ2VzXG4gIHZhciBtZXNzYWdlcyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRBcmlhTGl2ZU1lc3NhZ2VzKSwgYXJpYUxpdmVNZXNzYWdlcyB8fCB7fSk7XG4gIH0sIFthcmlhTGl2ZU1lc3NhZ2VzXSk7XG5cbiAgLy8gVXBkYXRlIGFyaWEgbGl2ZSBzZWxlY3RlZCBvcHRpb24gd2hlbiBwcm9wIGNoYW5nZXNcbiAgdmFyIGFyaWFTZWxlY3RlZCA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBtZXNzYWdlID0gJyc7XG4gICAgaWYgKGFyaWFTZWxlY3Rpb24gJiYgbWVzc2FnZXMub25DaGFuZ2UpIHtcbiAgICAgIHZhciBvcHRpb24gPSBhcmlhU2VsZWN0aW9uLm9wdGlvbixcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zID0gYXJpYVNlbGVjdGlvbi5vcHRpb25zLFxuICAgICAgICByZW1vdmVkVmFsdWUgPSBhcmlhU2VsZWN0aW9uLnJlbW92ZWRWYWx1ZSxcbiAgICAgICAgcmVtb3ZlZFZhbHVlcyA9IGFyaWFTZWxlY3Rpb24ucmVtb3ZlZFZhbHVlcyxcbiAgICAgICAgdmFsdWUgPSBhcmlhU2VsZWN0aW9uLnZhbHVlO1xuICAgICAgLy8gc2VsZWN0LW9wdGlvbiB3aGVuICFpc011bHRpIGRvZXMgbm90IHJldHVybiBvcHRpb24gc28gd2UgYXNzdW1lIHNlbGVjdGVkIG9wdGlvbiBpcyB2YWx1ZVxuICAgICAgdmFyIGFzT3B0aW9uID0gZnVuY3Rpb24gYXNPcHRpb24odmFsKSB7XG4gICAgICAgIHJldHVybiAhQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsIDogbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIC8vIElmIHRoZXJlIGlzIGp1c3Qgb25lIGl0ZW0gZnJvbSB0aGUgYWN0aW9uIHRoZW4gZ2V0IGl0cyBsYWJlbFxuICAgICAgdmFyIHNlbGVjdGVkID0gcmVtb3ZlZFZhbHVlIHx8IG9wdGlvbiB8fCBhc09wdGlvbih2YWx1ZSk7XG4gICAgICB2YXIgbGFiZWwgPSBzZWxlY3RlZCA/IGdldE9wdGlvbkxhYmVsKHNlbGVjdGVkKSA6ICcnO1xuXG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgaXRlbXMgZnJvbSB0aGUgYWN0aW9uIHRoZW4gcmV0dXJuIGFuIGFycmF5IG9mIGxhYmVsc1xuICAgICAgdmFyIG11bHRpU2VsZWN0ZWQgPSBzZWxlY3RlZE9wdGlvbnMgfHwgcmVtb3ZlZFZhbHVlcyB8fCB1bmRlZmluZWQ7XG4gICAgICB2YXIgbGFiZWxzID0gbXVsdGlTZWxlY3RlZCA/IG11bHRpU2VsZWN0ZWQubWFwKGdldE9wdGlvbkxhYmVsKSA6IFtdO1xuICAgICAgdmFyIG9uQ2hhbmdlUHJvcHMgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgLy8gbXVsdGlTZWxlY3RlZCBpdGVtcyBhcmUgdXN1YWxseSBpdGVtcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHNlbGVjdGVkXG4gICAgICAgIC8vIG9yIHNldCBieSB0aGUgdXNlciBhcyBhIGRlZmF1bHQgdmFsdWUgc28gd2UgYXNzdW1lIHRoZXkgYXJlIG5vdCBkaXNhYmxlZFxuICAgICAgICBpc0Rpc2FibGVkOiBzZWxlY3RlZCAmJiBpc09wdGlvbkRpc2FibGVkKHNlbGVjdGVkLCBzZWxlY3RWYWx1ZSksXG4gICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgbGFiZWxzOiBsYWJlbHNcbiAgICAgIH0sIGFyaWFTZWxlY3Rpb24pO1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VzLm9uQ2hhbmdlKG9uQ2hhbmdlUHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSwgW2FyaWFTZWxlY3Rpb24sIG1lc3NhZ2VzLCBpc09wdGlvbkRpc2FibGVkLCBzZWxlY3RWYWx1ZSwgZ2V0T3B0aW9uTGFiZWxdKTtcbiAgdmFyIGFyaWFGb2N1c2VkID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGZvY3VzTXNnID0gJyc7XG4gICAgdmFyIGZvY3VzZWQgPSBmb2N1c2VkT3B0aW9uIHx8IGZvY3VzZWRWYWx1ZTtcbiAgICB2YXIgaXNTZWxlY3RlZCA9ICEhKGZvY3VzZWRPcHRpb24gJiYgc2VsZWN0VmFsdWUgJiYgc2VsZWN0VmFsdWUuaW5jbHVkZXMoZm9jdXNlZE9wdGlvbikpO1xuICAgIGlmIChmb2N1c2VkICYmIG1lc3NhZ2VzLm9uRm9jdXMpIHtcbiAgICAgIHZhciBvbkZvY3VzUHJvcHMgPSB7XG4gICAgICAgIGZvY3VzZWQ6IGZvY3VzZWQsXG4gICAgICAgIGxhYmVsOiBnZXRPcHRpb25MYWJlbChmb2N1c2VkKSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNPcHRpb25EaXNhYmxlZChmb2N1c2VkLCBzZWxlY3RWYWx1ZSksXG4gICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgIG9wdGlvbnM6IGZvY3VzYWJsZU9wdGlvbnMsXG4gICAgICAgIGNvbnRleHQ6IGZvY3VzZWQgPT09IGZvY3VzZWRPcHRpb24gPyAnbWVudScgOiAndmFsdWUnLFxuICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgIGlzQXBwbGVEZXZpY2U6IGlzQXBwbGVEZXZpY2VcbiAgICAgIH07XG4gICAgICBmb2N1c01zZyA9IG1lc3NhZ2VzLm9uRm9jdXMob25Gb2N1c1Byb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvY3VzTXNnO1xuICB9LCBbZm9jdXNlZE9wdGlvbiwgZm9jdXNlZFZhbHVlLCBnZXRPcHRpb25MYWJlbCwgaXNPcHRpb25EaXNhYmxlZCwgbWVzc2FnZXMsIGZvY3VzYWJsZU9wdGlvbnMsIHNlbGVjdFZhbHVlLCBpc0FwcGxlRGV2aWNlXSk7XG4gIHZhciBhcmlhUmVzdWx0cyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHRzTXNnID0gJyc7XG4gICAgaWYgKG1lbnVJc09wZW4gJiYgb3B0aW9ucy5sZW5ndGggJiYgIWlzTG9hZGluZyAmJiBtZXNzYWdlcy5vbkZpbHRlcikge1xuICAgICAgdmFyIHJlc3VsdHNNZXNzYWdlID0gc2NyZWVuUmVhZGVyU3RhdHVzKHtcbiAgICAgICAgY291bnQ6IGZvY3VzYWJsZU9wdGlvbnMubGVuZ3RoXG4gICAgICB9KTtcbiAgICAgIHJlc3VsdHNNc2cgPSBtZXNzYWdlcy5vbkZpbHRlcih7XG4gICAgICAgIGlucHV0VmFsdWU6IGlucHV0VmFsdWUsXG4gICAgICAgIHJlc3VsdHNNZXNzYWdlOiByZXN1bHRzTWVzc2FnZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzTXNnO1xuICB9LCBbZm9jdXNhYmxlT3B0aW9ucywgaW5wdXRWYWx1ZSwgbWVudUlzT3BlbiwgbWVzc2FnZXMsIG9wdGlvbnMsIHNjcmVlblJlYWRlclN0YXR1cywgaXNMb2FkaW5nXSk7XG4gIHZhciBpc0luaXRpYWxGb2N1cyA9IChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnO1xuICB2YXIgYXJpYUd1aWRhbmNlID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGd1aWRhbmNlTXNnID0gJyc7XG4gICAgaWYgKG1lc3NhZ2VzLmd1aWRhbmNlKSB7XG4gICAgICB2YXIgY29udGV4dCA9IGZvY3VzZWRWYWx1ZSA/ICd2YWx1ZScgOiBtZW51SXNPcGVuID8gJ21lbnUnIDogJ2lucHV0JztcbiAgICAgIGd1aWRhbmNlTXNnID0gbWVzc2FnZXMuZ3VpZGFuY2Uoe1xuICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgaXNEaXNhYmxlZDogZm9jdXNlZE9wdGlvbiAmJiBpc09wdGlvbkRpc2FibGVkKGZvY3VzZWRPcHRpb24sIHNlbGVjdFZhbHVlKSxcbiAgICAgICAgaXNNdWx0aTogaXNNdWx0aSxcbiAgICAgICAgaXNTZWFyY2hhYmxlOiBpc1NlYXJjaGFibGUsXG4gICAgICAgIHRhYlNlbGVjdHNWYWx1ZTogdGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgICBpc0luaXRpYWxGb2N1czogaXNJbml0aWFsRm9jdXNcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ3VpZGFuY2VNc2c7XG4gIH0sIFthcmlhTGFiZWwsIGZvY3VzZWRPcHRpb24sIGZvY3VzZWRWYWx1ZSwgaXNNdWx0aSwgaXNPcHRpb25EaXNhYmxlZCwgaXNTZWFyY2hhYmxlLCBtZW51SXNPcGVuLCBtZXNzYWdlcywgc2VsZWN0VmFsdWUsIHRhYlNlbGVjdHNWYWx1ZSwgaXNJbml0aWFsRm9jdXNdKTtcbiAgdmFyIFNjcmVlblJlYWRlclRleHQgPSBqc3goRnJhZ21lbnQsIG51bGwsIGpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtc2VsZWN0aW9uXCJcbiAgfSwgYXJpYVNlbGVjdGVkKSwganN4KFwic3BhblwiLCB7XG4gICAgaWQ6IFwiYXJpYS1mb2N1c2VkXCJcbiAgfSwgYXJpYUZvY3VzZWQpLCBqc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLXJlc3VsdHNcIlxuICB9LCBhcmlhUmVzdWx0cyksIGpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtZ3VpZGFuY2VcIlxuICB9LCBhcmlhR3VpZGFuY2UpKTtcbiAgcmV0dXJuIGpzeChGcmFnbWVudCwgbnVsbCwganN4KEExMXlUZXh0JDEsIHtcbiAgICBpZDogaWRcbiAgfSwgaXNJbml0aWFsRm9jdXMgJiYgU2NyZWVuUmVhZGVyVGV4dCksIGpzeChBMTF5VGV4dCQxLCB7XG4gICAgXCJhcmlhLWxpdmVcIjogYXJpYUxpdmUsXG4gICAgXCJhcmlhLWF0b21pY1wiOiBcImZhbHNlXCIsXG4gICAgXCJhcmlhLXJlbGV2YW50XCI6IFwiYWRkaXRpb25zIHRleHRcIixcbiAgICByb2xlOiBcImxvZ1wiXG4gIH0sIGlzRm9jdXNlZCAmJiAhaXNJbml0aWFsRm9jdXMgJiYgU2NyZWVuUmVhZGVyVGV4dCkpO1xufTtcbnZhciBMaXZlUmVnaW9uJDEgPSBMaXZlUmVnaW9uO1xuXG52YXIgZGlhY3JpdGljcyA9IFt7XG4gIGJhc2U6ICdBJyxcbiAgbGV0dGVyczogXCJBXFx1MjRCNlxcdUZGMjFcXHhDMFxceEMxXFx4QzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx4QzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxceEM0XFx1MDFERVxcdTFFQTJcXHhDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCJcbn0sIHtcbiAgYmFzZTogJ0FBJyxcbiAgbGV0dGVyczogXCJcXHVBNzMyXCJcbn0sIHtcbiAgYmFzZTogJ0FFJyxcbiAgbGV0dGVyczogXCJcXHhDNlxcdTAxRkNcXHUwMUUyXCJcbn0sIHtcbiAgYmFzZTogJ0FPJyxcbiAgbGV0dGVyczogXCJcXHVBNzM0XCJcbn0sIHtcbiAgYmFzZTogJ0FVJyxcbiAgbGV0dGVyczogXCJcXHVBNzM2XCJcbn0sIHtcbiAgYmFzZTogJ0FWJyxcbiAgbGV0dGVyczogXCJcXHVBNzM4XFx1QTczQVwiXG59LCB7XG4gIGJhc2U6ICdBWScsXG4gIGxldHRlcnM6IFwiXFx1QTczQ1wiXG59LCB7XG4gIGJhc2U6ICdCJyxcbiAgbGV0dGVyczogXCJCXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MlxcdTAxODFcIlxufSwge1xuICBiYXNlOiAnQycsXG4gIGxldHRlcnM6IFwiQ1xcdTI0QjhcXHVGRjIzXFx1MDEwNlxcdTAxMDhcXHUwMTBBXFx1MDEwQ1xceEM3XFx1MUUwOFxcdTAxODdcXHUwMjNCXFx1QTczRVwiXG59LCB7XG4gIGJhc2U6ICdEJyxcbiAgbGV0dGVyczogXCJEXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QlxcdTAxOEFcXHUwMTg5XFx1QTc3OVwiXG59LCB7XG4gIGJhc2U6ICdEWicsXG4gIGxldHRlcnM6IFwiXFx1MDFGMVxcdTAxQzRcIlxufSwge1xuICBiYXNlOiAnRHonLFxuICBsZXR0ZXJzOiBcIlxcdTAxRjJcXHUwMUM1XCJcbn0sIHtcbiAgYmFzZTogJ0UnLFxuICBsZXR0ZXJzOiBcIkVcXHUyNEJBXFx1RkYyNVxceEM4XFx4QzlcXHhDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHhDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcIlxufSwge1xuICBiYXNlOiAnRicsXG4gIGxldHRlcnM6IFwiRlxcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCJcbn0sIHtcbiAgYmFzZTogJ0cnLFxuICBsZXR0ZXJzOiBcIkdcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVwiXG59LCB7XG4gIGJhc2U6ICdIJyxcbiAgbGV0dGVyczogXCJIXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiXG59LCB7XG4gIGJhc2U6ICdJJyxcbiAgbGV0dGVyczogXCJJXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIlxufSwge1xuICBiYXNlOiAnSicsXG4gIGxldHRlcnM6IFwiSlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcIlxufSwge1xuICBiYXNlOiAnSycsXG4gIGxldHRlcnM6IFwiS1xcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIlxufSwge1xuICBiYXNlOiAnTCcsXG4gIGxldHRlcnM6IFwiTFxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCJcbn0sIHtcbiAgYmFzZTogJ0xKJyxcbiAgbGV0dGVyczogXCJcXHUwMUM3XCJcbn0sIHtcbiAgYmFzZTogJ0xqJyxcbiAgbGV0dGVyczogXCJcXHUwMUM4XCJcbn0sIHtcbiAgYmFzZTogJ00nLFxuICBsZXR0ZXJzOiBcIk1cXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXCJcbn0sIHtcbiAgYmFzZTogJ04nLFxuICBsZXR0ZXJzOiBcIk5cXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMjIwXFx1MDE5RFxcdUE3OTBcXHVBN0E0XCJcbn0sIHtcbiAgYmFzZTogJ05KJyxcbiAgbGV0dGVyczogXCJcXHUwMUNBXCJcbn0sIHtcbiAgYmFzZTogJ05qJyxcbiAgbGV0dGVyczogXCJcXHUwMUNCXCJcbn0sIHtcbiAgYmFzZTogJ08nLFxuICBsZXR0ZXJzOiBcIk9cXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIlxufSwge1xuICBiYXNlOiAnT0knLFxuICBsZXR0ZXJzOiBcIlxcdTAxQTJcIlxufSwge1xuICBiYXNlOiAnT08nLFxuICBsZXR0ZXJzOiBcIlxcdUE3NEVcIlxufSwge1xuICBiYXNlOiAnT1UnLFxuICBsZXR0ZXJzOiBcIlxcdTAyMjJcIlxufSwge1xuICBiYXNlOiAnUCcsXG4gIGxldHRlcnM6IFwiUFxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiXG59LCB7XG4gIGJhc2U6ICdRJyxcbiAgbGV0dGVyczogXCJRXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIlxufSwge1xuICBiYXNlOiAnUicsXG4gIGxldHRlcnM6IFwiUlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIlxufSwge1xuICBiYXNlOiAnUycsXG4gIGxldHRlcnM6IFwiU1xcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIlxufSwge1xuICBiYXNlOiAnVCcsXG4gIGxldHRlcnM6IFwiVFxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCJcbn0sIHtcbiAgYmFzZTogJ1RaJyxcbiAgbGV0dGVyczogXCJcXHVBNzI4XCJcbn0sIHtcbiAgYmFzZTogJ1UnLFxuICBsZXR0ZXJzOiBcIlVcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCJcbn0sIHtcbiAgYmFzZTogJ1YnLFxuICBsZXR0ZXJzOiBcIlZcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCJcbn0sIHtcbiAgYmFzZTogJ1ZZJyxcbiAgbGV0dGVyczogXCJcXHVBNzYwXCJcbn0sIHtcbiAgYmFzZTogJ1cnLFxuICBsZXR0ZXJzOiBcIldcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIlxufSwge1xuICBiYXNlOiAnWCcsXG4gIGxldHRlcnM6IFwiWFxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIlxufSwge1xuICBiYXNlOiAnWScsXG4gIGxldHRlcnM6IFwiWVxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiXG59LCB7XG4gIGJhc2U6ICdaJyxcbiAgbGV0dGVyczogXCJaXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiXG59LCB7XG4gIGJhc2U6ICdhJyxcbiAgbGV0dGVyczogXCJhXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx4RTBcXHhFMVxceEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxceEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHhFNFxcdTAxREZcXHUxRUEzXFx4RTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFwiXG59LCB7XG4gIGJhc2U6ICdhYScsXG4gIGxldHRlcnM6IFwiXFx1QTczM1wiXG59LCB7XG4gIGJhc2U6ICdhZScsXG4gIGxldHRlcnM6IFwiXFx4RTZcXHUwMUZEXFx1MDFFM1wiXG59LCB7XG4gIGJhc2U6ICdhbycsXG4gIGxldHRlcnM6IFwiXFx1QTczNVwiXG59LCB7XG4gIGJhc2U6ICdhdScsXG4gIGxldHRlcnM6IFwiXFx1QTczN1wiXG59LCB7XG4gIGJhc2U6ICdhdicsXG4gIGxldHRlcnM6IFwiXFx1QTczOVxcdUE3M0JcIlxufSwge1xuICBiYXNlOiAnYXknLFxuICBsZXR0ZXJzOiBcIlxcdUE3M0RcIlxufSwge1xuICBiYXNlOiAnYicsXG4gIGxldHRlcnM6IFwiYlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXCJcbn0sIHtcbiAgYmFzZTogJ2MnLFxuICBsZXR0ZXJzOiBcImNcXHUyNEQyXFx1RkY0M1xcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHhFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCJcbn0sIHtcbiAgYmFzZTogJ2QnLFxuICBsZXR0ZXJzOiBcImRcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHVBNzdBXCJcbn0sIHtcbiAgYmFzZTogJ2R6JyxcbiAgbGV0dGVyczogXCJcXHUwMUYzXFx1MDFDNlwiXG59LCB7XG4gIGJhc2U6ICdlJyxcbiAgbGV0dGVyczogXCJlXFx1MjRENFxcdUZGNDVcXHhFOFxceEU5XFx4RUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx4RUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMjVCXFx1MDFERFwiXG59LCB7XG4gIGJhc2U6ICdmJyxcbiAgbGV0dGVyczogXCJmXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlxcdUE3N0NcIlxufSwge1xuICBiYXNlOiAnZycsXG4gIGxldHRlcnM6IFwiZ1xcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdTFENzlcXHVBNzdGXCJcbn0sIHtcbiAgYmFzZTogJ2gnLFxuICBsZXR0ZXJzOiBcImhcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiXG59LCB7XG4gIGJhc2U6ICdodicsXG4gIGxldHRlcnM6IFwiXFx1MDE5NVwiXG59LCB7XG4gIGJhc2U6ICdpJyxcbiAgbGV0dGVyczogXCJpXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIlxufSwge1xuICBiYXNlOiAnaicsXG4gIGxldHRlcnM6IFwialxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCJcbn0sIHtcbiAgYmFzZTogJ2snLFxuICBsZXR0ZXJzOiBcImtcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCJcbn0sIHtcbiAgYmFzZTogJ2wnLFxuICBsZXR0ZXJzOiBcImxcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcIlxufSwge1xuICBiYXNlOiAnbGonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQzlcIlxufSwge1xuICBiYXNlOiAnbScsXG4gIGxldHRlcnM6IFwibVxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIlxufSwge1xuICBiYXNlOiAnbicsXG4gIGxldHRlcnM6IFwiblxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XCJcbn0sIHtcbiAgYmFzZTogJ25qJyxcbiAgbGV0dGVyczogXCJcXHUwMUNDXCJcbn0sIHtcbiAgYmFzZTogJ28nLFxuICBsZXR0ZXJzOiBcIm9cXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdTAyNTRcXHVBNzRCXFx1QTc0RFxcdTAyNzVcIlxufSwge1xuICBiYXNlOiAnb2knLFxuICBsZXR0ZXJzOiBcIlxcdTAxQTNcIlxufSwge1xuICBiYXNlOiAnb3UnLFxuICBsZXR0ZXJzOiBcIlxcdTAyMjNcIlxufSwge1xuICBiYXNlOiAnb28nLFxuICBsZXR0ZXJzOiBcIlxcdUE3NEZcIlxufSwge1xuICBiYXNlOiAncCcsXG4gIGxldHRlcnM6IFwicFxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVwiXG59LCB7XG4gIGJhc2U6ICdxJyxcbiAgbGV0dGVyczogXCJxXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIlxufSwge1xuICBiYXNlOiAncicsXG4gIGxldHRlcnM6IFwiclxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIlxufSwge1xuICBiYXNlOiAncycsXG4gIGxldHRlcnM6IFwic1xcdTI0RTJcXHVGRjUzXFx4REZcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlwiXG59LCB7XG4gIGJhc2U6ICd0JyxcbiAgbGV0dGVyczogXCJ0XFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCJcbn0sIHtcbiAgYmFzZTogJ3R6JyxcbiAgbGV0dGVyczogXCJcXHVBNzI5XCJcbn0sIHtcbiAgYmFzZTogJ3UnLFxuICBsZXR0ZXJzOiBcInVcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCJcbn0sIHtcbiAgYmFzZTogJ3YnLFxuICBsZXR0ZXJzOiBcInZcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCJcbn0sIHtcbiAgYmFzZTogJ3Z5JyxcbiAgbGV0dGVyczogXCJcXHVBNzYxXCJcbn0sIHtcbiAgYmFzZTogJ3cnLFxuICBsZXR0ZXJzOiBcIndcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCJcbn0sIHtcbiAgYmFzZTogJ3gnLFxuICBsZXR0ZXJzOiBcInhcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCJcbn0sIHtcbiAgYmFzZTogJ3knLFxuICBsZXR0ZXJzOiBcInlcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiXG59LCB7XG4gIGJhc2U6ICd6JyxcbiAgbGV0dGVyczogXCJ6XFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiXG59XTtcbnZhciBhbnlEaWFjcml0aWMgPSBuZXcgUmVnRXhwKCdbJyArIGRpYWNyaXRpY3MubWFwKGZ1bmN0aW9uIChkKSB7XG4gIHJldHVybiBkLmxldHRlcnM7XG59KS5qb2luKCcnKSArICddJywgJ2cnKTtcbnZhciBkaWFjcml0aWNUb0Jhc2UgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgZGlhY3JpdGljcy5sZW5ndGg7IGkrKykge1xuICB2YXIgZGlhY3JpdGljID0gZGlhY3JpdGljc1tpXTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBkaWFjcml0aWMubGV0dGVycy5sZW5ndGg7IGorKykge1xuICAgIGRpYWNyaXRpY1RvQmFzZVtkaWFjcml0aWMubGV0dGVyc1tqXV0gPSBkaWFjcml0aWMuYmFzZTtcbiAgfVxufVxudmFyIHN0cmlwRGlhY3JpdGljcyA9IGZ1bmN0aW9uIHN0cmlwRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGFueURpYWNyaXRpYywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY1RvQmFzZVttYXRjaF07XG4gIH0pO1xufTtcblxudmFyIG1lbW9pemVkU3RyaXBEaWFjcml0aWNzRm9ySW5wdXQgPSBtZW1vaXplT25lKHN0cmlwRGlhY3JpdGljcyk7XG52YXIgdHJpbVN0cmluZyA9IGZ1bmN0aW9uIHRyaW1TdHJpbmcoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xufTtcbnZhciBkZWZhdWx0U3RyaW5naWZ5ID0gZnVuY3Rpb24gZGVmYXVsdFN0cmluZ2lmeShvcHRpb24pIHtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KG9wdGlvbi5sYWJlbCwgXCIgXCIpLmNvbmNhdChvcHRpb24udmFsdWUpO1xufTtcbnZhciBjcmVhdGVGaWx0ZXIgPSBmdW5jdGlvbiBjcmVhdGVGaWx0ZXIoY29uZmlnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAob3B0aW9uLCByYXdJbnB1dCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgIGlmIChvcHRpb24uZGF0YS5fX2lzTmV3X18pIHJldHVybiB0cnVlO1xuICAgIHZhciBfaWdub3JlQ2FzZSRpZ25vcmVBY2MgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgaWdub3JlQ2FzZTogdHJ1ZSxcbiAgICAgICAgaWdub3JlQWNjZW50czogdHJ1ZSxcbiAgICAgICAgc3RyaW5naWZ5OiBkZWZhdWx0U3RyaW5naWZ5LFxuICAgICAgICB0cmltOiB0cnVlLFxuICAgICAgICBtYXRjaEZyb206ICdhbnknXG4gICAgICB9LCBjb25maWcpLFxuICAgICAgaWdub3JlQ2FzZSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy5pZ25vcmVDYXNlLFxuICAgICAgaWdub3JlQWNjZW50cyA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy5pZ25vcmVBY2NlbnRzLFxuICAgICAgc3RyaW5naWZ5ID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLnN0cmluZ2lmeSxcbiAgICAgIHRyaW0gPSBfaWdub3JlQ2FzZSRpZ25vcmVBY2MudHJpbSxcbiAgICAgIG1hdGNoRnJvbSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy5tYXRjaEZyb207XG4gICAgdmFyIGlucHV0ID0gdHJpbSA/IHRyaW1TdHJpbmcocmF3SW5wdXQpIDogcmF3SW5wdXQ7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHRyaW0gPyB0cmltU3RyaW5nKHN0cmluZ2lmeShvcHRpb24pKSA6IHN0cmluZ2lmeShvcHRpb24pO1xuICAgIGlmIChpZ25vcmVDYXNlKSB7XG4gICAgICBpbnB1dCA9IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgaWYgKGlnbm9yZUFjY2VudHMpIHtcbiAgICAgIGlucHV0ID0gbWVtb2l6ZWRTdHJpcERpYWNyaXRpY3NGb3JJbnB1dChpbnB1dCk7XG4gICAgICBjYW5kaWRhdGUgPSBzdHJpcERpYWNyaXRpY3MoY2FuZGlkYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoRnJvbSA9PT0gJ3N0YXJ0JyA/IGNhbmRpZGF0ZS5zdWJzdHIoMCwgaW5wdXQubGVuZ3RoKSA9PT0gaW5wdXQgOiBjYW5kaWRhdGUuaW5kZXhPZihpbnB1dCkgPiAtMTtcbiAgfTtcbn07XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJpbm5lclJlZlwiXTtcbmZ1bmN0aW9uIER1bW15SW5wdXQoX3JlZikge1xuICB2YXIgaW5uZXJSZWYgPSBfcmVmLmlubmVyUmVmLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIC8vIFJlbW92ZSBhbmltYXRpb24gcHJvcHMgbm90IG1lYW50IGZvciBIVE1MIGVsZW1lbnRzXG4gIHZhciBmaWx0ZXJlZFByb3BzID0gcmVtb3ZlUHJvcHMocHJvcHMsICdvbkV4aXRlZCcsICdpbicsICdlbnRlcicsICdleGl0JywgJ2FwcGVhcicpO1xuICByZXR1cm4ganN4KFwiaW5wdXRcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogaW5uZXJSZWZcbiAgfSwgZmlsdGVyZWRQcm9wcywge1xuICAgIGNzczogLyojX19QVVJFX18qL2Nzcyh7XG4gICAgICBsYWJlbDogJ2R1bW15SW5wdXQnLFxuICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgIGJhY2tncm91bmQ6IDAsXG4gICAgICBib3JkZXI6IDAsXG4gICAgICAvLyBpbXBvcnRhbnQhIHRoaXMgaGlkZXMgdGhlIGZsYXNoaW5nIGN1cnNvclxuICAgICAgY2FyZXRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgICAgb3V0bGluZTogMCxcbiAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgd2lkdGg6IDEsXG4gICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIGRlc2t0b3BcbiAgICAgIGNvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBtb2JpbGUgd2hpbHN0IG1haW50YWluaW5nIFwic2Nyb2xsIGludG8gdmlld1wiIGJlaGF2aW91clxuICAgICAgbGVmdDogLTEwMCxcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKC4wMSknXG4gICAgfSwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJcIiA6IFwiO2xhYmVsOkR1bW15SW5wdXQ7XCIsIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IFwiXCIgOiBcIi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklrUjFiVzE1U1c1d2RYUXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVhsQ1RTSXNJbVpwYkdVaU9pSkVkVzF0ZVVsdWNIVjBMblJ6ZUNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaUJBYW5ONElHcHplQ0FxTDF4dWFXMXdiM0owSUhzZ1NsTllMQ0JTWldZZ2ZTQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZXlCcWMzZ2dmU0JtY205dElDZEFaVzF2ZEdsdmJpOXlaV0ZqZENjN1hHNXBiWEJ2Y25RZ2V5QnlaVzF2ZG1WUWNtOXdjeUI5SUdaeWIyMGdKeTR1TDNWMGFXeHpKenRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnWm5WdVkzUnBiMjRnUkhWdGJYbEpibkIxZENoN1hHNGdJR2x1Ym1WeVVtVm1MRnh1SUNBdUxpNXdjbTl3YzF4dWZUb2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkcGJuQjFkQ2RkSUNZZ2UxeHVJQ0J5WldGa2IyNXNlU0JwYm01bGNsSmxaam9nVW1WbVBFaFVUVXhKYm5CMWRFVnNaVzFsYm5RK08xeHVmU2tnZTF4dUlDQXZMeUJTWlcxdmRtVWdZVzVwYldGMGFXOXVJSEJ5YjNCeklHNXZkQ0J0WldGdWRDQm1iM0lnU0ZSTlRDQmxiR1Z0Wlc1MGMxeHVJQ0JqYjI1emRDQm1hV3gwWlhKbFpGQnliM0J6SUQwZ2NtVnRiM1psVUhKdmNITW9YRzRnSUNBZ2NISnZjSE1zWEc0Z0lDQWdKMjl1UlhocGRHVmtKeXhjYmlBZ0lDQW5hVzRuTEZ4dUlDQWdJQ2RsYm5SbGNpY3NYRzRnSUNBZ0oyVjRhWFFuTEZ4dUlDQWdJQ2RoY0hCbFlYSW5YRzRnSUNrN1hHNWNiaUFnY21WMGRYSnVJQ2hjYmlBZ0lDQThhVzV3ZFhSY2JpQWdJQ0FnSUhKbFpqMTdhVzV1WlhKU1pXWjlYRzRnSUNBZ0lDQjdMaTR1Wm1sc2RHVnlaV1JRY205d2MzMWNiaUFnSUNBZ0lHTnpjejE3ZTF4dUlDQWdJQ0FnSUNCc1lXSmxiRG9nSjJSMWJXMTVTVzV3ZFhRbkxGeHVJQ0FnSUNBZ0lDQXZMeUJuWlhRZ2NtbGtJRzltSUdGdWVTQmtaV1poZFd4MElITjBlV3hsYzF4dUlDQWdJQ0FnSUNCaVlXTnJaM0p2ZFc1a09pQXdMRnh1SUNBZ0lDQWdJQ0JpYjNKa1pYSTZJREFzWEc0Z0lDQWdJQ0FnSUM4dklHbHRjRzl5ZEdGdWRDRWdkR2hwY3lCb2FXUmxjeUIwYUdVZ1pteGhjMmhwYm1jZ1kzVnljMjl5WEc0Z0lDQWdJQ0FnSUdOaGNtVjBRMjlzYjNJNklDZDBjbUZ1YzNCaGNtVnVkQ2NzWEc0Z0lDQWdJQ0FnSUdadmJuUlRhWHBsT2lBbmFXNW9aWEpwZENjc1hHNGdJQ0FnSUNBZ0lHZHlhV1JCY21WaE9pQW5NU0F2SURFZ0x5QXlJQzhnTXljc1hHNGdJQ0FnSUNBZ0lHOTFkR3hwYm1VNklEQXNYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJREFzWEc0Z0lDQWdJQ0FnSUM4dklHbHRjRzl5ZEdGdWRDRWdkMmwwYUc5MWRDQmdkMmxrZEdoZ0lHSnliM2R6WlhKeklIZHZiaWQwSUdGc2JHOTNJR1p2WTNWelhHNGdJQ0FnSUNBZ0lIZHBaSFJvT2lBeExGeHVYRzRnSUNBZ0lDQWdJQzh2SUhKbGJXOTJaU0JqZFhKemIzSWdiMjRnWkdWemEzUnZjRnh1SUNBZ0lDQWdJQ0JqYjJ4dmNqb2dKM1J5WVc1emNHRnlaVzUwSnl4Y2JseHVJQ0FnSUNBZ0lDQXZMeUJ5WlcxdmRtVWdZM1Z5YzI5eUlHOXVJRzF2WW1sc1pTQjNhR2xzYzNRZ2JXRnBiblJoYVc1cGJtY2dYQ0p6WTNKdmJHd2dhVzUwYnlCMmFXVjNYQ0lnWW1Wb1lYWnBiM1Z5WEc0Z0lDQWdJQ0FnSUd4bFpuUTZJQzB4TURBc1hHNGdJQ0FnSUNBZ0lHOXdZV05wZEhrNklEQXNYRzRnSUNBZ0lDQWdJSEJ2YzJsMGFXOXVPaUFuY21Wc1lYUnBkbVVuTEZ4dUlDQWdJQ0FnSUNCMGNtRnVjMlp2Y20wNklDZHpZMkZzWlNndU1ERXBKeXhjYmlBZ0lDQWdJSDE5WEc0Z0lDQWdMejVjYmlBZ0tUdGNibjFjYmlKZGZRPT0gKi9cIilcbiAgfSkpO1xufVxuXG52YXIgY2FuY2VsU2Nyb2xsID0gZnVuY3Rpb24gY2FuY2VsU2Nyb2xsKGV2ZW50KSB7XG4gIGlmIChldmVudC5jYW5jZWxhYmxlKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbn07XG5mdW5jdGlvbiB1c2VTY3JvbGxDYXB0dXJlKF9yZWYpIHtcbiAgdmFyIGlzRW5hYmxlZCA9IF9yZWYuaXNFbmFibGVkLFxuICAgIG9uQm90dG9tQXJyaXZlID0gX3JlZi5vbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlID0gX3JlZi5vbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlID0gX3JlZi5vblRvcEFycml2ZSxcbiAgICBvblRvcExlYXZlID0gX3JlZi5vblRvcExlYXZlO1xuICB2YXIgaXNCb3R0b20gPSB1c2VSZWYoZmFsc2UpO1xuICB2YXIgaXNUb3AgPSB1c2VSZWYoZmFsc2UpO1xuICB2YXIgdG91Y2hTdGFydCA9IHVzZVJlZigwKTtcbiAgdmFyIHNjcm9sbFRhcmdldCA9IHVzZVJlZihudWxsKTtcbiAgdmFyIGhhbmRsZUV2ZW50RGVsdGEgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQsIGRlbHRhKSB7XG4gICAgaWYgKHNjcm9sbFRhcmdldC5jdXJyZW50ID09PSBudWxsKSByZXR1cm47XG4gICAgdmFyIF9zY3JvbGxUYXJnZXQkY3VycmVudCA9IHNjcm9sbFRhcmdldC5jdXJyZW50LFxuICAgICAgc2Nyb2xsVG9wID0gX3Njcm9sbFRhcmdldCRjdXJyZW50LnNjcm9sbFRvcCxcbiAgICAgIHNjcm9sbEhlaWdodCA9IF9zY3JvbGxUYXJnZXQkY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQgPSBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQuY2xpZW50SGVpZ2h0O1xuICAgIHZhciB0YXJnZXQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICB2YXIgaXNEZWx0YVBvc2l0aXZlID0gZGVsdGEgPiAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGwgPSBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgLSBzY3JvbGxUb3A7XG4gICAgdmFyIHNob3VsZENhbmNlbFNjcm9sbCA9IGZhbHNlO1xuXG4gICAgLy8gcmVzZXQgYm90dG9tL3RvcCBmbGFnc1xuICAgIGlmIChhdmFpbGFibGVTY3JvbGwgPiBkZWx0YSAmJiBpc0JvdHRvbS5jdXJyZW50KSB7XG4gICAgICBpZiAob25Cb3R0b21MZWF2ZSkgb25Cb3R0b21MZWF2ZShldmVudCk7XG4gICAgICBpc0JvdHRvbS5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpc0RlbHRhUG9zaXRpdmUgJiYgaXNUb3AuY3VycmVudCkge1xuICAgICAgaWYgKG9uVG9wTGVhdmUpIG9uVG9wTGVhdmUoZXZlbnQpO1xuICAgICAgaXNUb3AuY3VycmVudCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGJvdHRvbSBsaW1pdFxuICAgIGlmIChpc0RlbHRhUG9zaXRpdmUgJiYgZGVsdGEgPiBhdmFpbGFibGVTY3JvbGwpIHtcbiAgICAgIGlmIChvbkJvdHRvbUFycml2ZSAmJiAhaXNCb3R0b20uY3VycmVudCkge1xuICAgICAgICBvbkJvdHRvbUFycml2ZShldmVudCk7XG4gICAgICB9XG4gICAgICB0YXJnZXQuc2Nyb2xsVG9wID0gc2Nyb2xsSGVpZ2h0O1xuICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIGlzQm90dG9tLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAvLyB0b3AgbGltaXRcbiAgICB9IGVsc2UgaWYgKCFpc0RlbHRhUG9zaXRpdmUgJiYgLWRlbHRhID4gc2Nyb2xsVG9wKSB7XG4gICAgICBpZiAob25Ub3BBcnJpdmUgJiYgIWlzVG9wLmN1cnJlbnQpIHtcbiAgICAgICAgb25Ub3BBcnJpdmUoZXZlbnQpO1xuICAgICAgfVxuICAgICAgdGFyZ2V0LnNjcm9sbFRvcCA9IDA7XG4gICAgICBzaG91bGRDYW5jZWxTY3JvbGwgPSB0cnVlO1xuICAgICAgaXNUb3AuY3VycmVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gY2FuY2VsIHNjcm9sbFxuICAgIGlmIChzaG91bGRDYW5jZWxTY3JvbGwpIHtcbiAgICAgIGNhbmNlbFNjcm9sbChldmVudCk7XG4gICAgfVxuICB9LCBbb25Cb3R0b21BcnJpdmUsIG9uQm90dG9tTGVhdmUsIG9uVG9wQXJyaXZlLCBvblRvcExlYXZlXSk7XG4gIHZhciBvbldoZWVsID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaGFuZGxlRXZlbnREZWx0YShldmVudCwgZXZlbnQuZGVsdGFZKTtcbiAgfSwgW2hhbmRsZUV2ZW50RGVsdGFdKTtcbiAgdmFyIG9uVG91Y2hTdGFydCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIHNldCB0b3VjaCBzdGFydCBzbyB3ZSBjYW4gY2FsY3VsYXRlIHRvdWNobW92ZSBkZWx0YVxuICAgIHRvdWNoU3RhcnQuY3VycmVudCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk7XG4gIH0sIFtdKTtcbiAgdmFyIG9uVG91Y2hNb3ZlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIGRlbHRhWSA9IHRvdWNoU3RhcnQuY3VycmVudCAtIGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk7XG4gICAgaGFuZGxlRXZlbnREZWx0YShldmVudCwgZGVsdGFZKTtcbiAgfSwgW2hhbmRsZUV2ZW50RGVsdGFdKTtcbiAgdmFyIHN0YXJ0TGlzdGVuaW5nID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGVsKSB7XG4gICAgLy8gYmFpbCBlYXJseSBpZiBubyBlbGVtZW50IGlzIGF2YWlsYWJsZSB0byBhdHRhY2ggdG9cbiAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgdmFyIG5vdFBhc3NpdmUgPSBzdXBwb3J0c1Bhc3NpdmVFdmVudHMgPyB7XG4gICAgICBwYXNzaXZlOiBmYWxzZVxuICAgIH0gOiBmYWxzZTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwsIG5vdFBhc3NpdmUpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIG5vdFBhc3NpdmUpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlLCBub3RQYXNzaXZlKTtcbiAgfSwgW29uVG91Y2hNb3ZlLCBvblRvdWNoU3RhcnQsIG9uV2hlZWxdKTtcbiAgdmFyIHN0b3BMaXN0ZW5pbmcgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZWwpIHtcbiAgICAvLyBiYWlsIGVhcmx5IGlmIG5vIGVsZW1lbnQgaXMgYXZhaWxhYmxlIHRvIGRldGFjaCBmcm9tXG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCwgZmFsc2UpO1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIGZhbHNlKTtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgZmFsc2UpO1xuICB9LCBbb25Ub3VjaE1vdmUsIG9uVG91Y2hTdGFydCwgb25XaGVlbF0pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm47XG4gICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICBzdGFydExpc3RlbmluZyhlbGVtZW50KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc3RvcExpc3RlbmluZyhlbGVtZW50KTtcbiAgICB9O1xuICB9LCBbaXNFbmFibGVkLCBzdGFydExpc3RlbmluZywgc3RvcExpc3RlbmluZ10pO1xuICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBzY3JvbGxUYXJnZXQuY3VycmVudCA9IGVsZW1lbnQ7XG4gIH07XG59XG5cbnZhciBTVFlMRV9LRVlTID0gWydib3hTaXppbmcnLCAnaGVpZ2h0JywgJ292ZXJmbG93JywgJ3BhZGRpbmdSaWdodCcsICdwb3NpdGlvbiddO1xudmFyIExPQ0tfU1RZTEVTID0ge1xuICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgLy8gYWNjb3VudCBmb3IgcG9zc2libGUgZGVjbGFyYXRpb24gYHdpZHRoOiAxMDAlO2Agb24gYm9keVxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBoZWlnaHQ6ICcxMDAlJ1xufTtcbmZ1bmN0aW9uIHByZXZlbnRUb3VjaE1vdmUoZSkge1xuICBpZiAoZS5jYW5jZWxhYmxlKSBlLnByZXZlbnREZWZhdWx0KCk7XG59XG5mdW5jdGlvbiBhbGxvd1RvdWNoTW92ZShlKSB7XG4gIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG59XG5mdW5jdGlvbiBwcmV2ZW50SW5lcnRpYVNjcm9sbCgpIHtcbiAgdmFyIHRvcCA9IHRoaXMuc2Nyb2xsVG9wO1xuICB2YXIgdG90YWxTY3JvbGwgPSB0aGlzLnNjcm9sbEhlaWdodDtcbiAgdmFyIGN1cnJlbnRTY3JvbGwgPSB0b3AgKyB0aGlzLm9mZnNldEhlaWdodDtcbiAgaWYgKHRvcCA9PT0gMCkge1xuICAgIHRoaXMuc2Nyb2xsVG9wID0gMTtcbiAgfSBlbHNlIGlmIChjdXJyZW50U2Nyb2xsID09PSB0b3RhbFNjcm9sbCkge1xuICAgIHRoaXMuc2Nyb2xsVG9wID0gdG9wIC0gMTtcbiAgfVxufVxuXG4vLyBgb250b3VjaHN0YXJ0YCBjaGVjayB3b3JrcyBvbiBtb3N0IGJyb3dzZXJzXG4vLyBgbWF4VG91Y2hQb2ludHNgIHdvcmtzIG9uIElFMTAvMTEgYW5kIFN1cmZhY2VcbmZ1bmN0aW9uIGlzVG91Y2hEZXZpY2UoKSB7XG4gIHJldHVybiAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzO1xufVxudmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG52YXIgYWN0aXZlU2Nyb2xsTG9ja3MgPSAwO1xudmFyIGxpc3RlbmVyT3B0aW9ucyA9IHtcbiAgY2FwdHVyZTogZmFsc2UsXG4gIHBhc3NpdmU6IGZhbHNlXG59O1xuZnVuY3Rpb24gdXNlU2Nyb2xsTG9jayhfcmVmKSB7XG4gIHZhciBpc0VuYWJsZWQgPSBfcmVmLmlzRW5hYmxlZCxcbiAgICBfcmVmJGFjY291bnRGb3JTY3JvbGwgPSBfcmVmLmFjY291bnRGb3JTY3JvbGxiYXJzLFxuICAgIGFjY291bnRGb3JTY3JvbGxiYXJzID0gX3JlZiRhY2NvdW50Rm9yU2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRhY2NvdW50Rm9yU2Nyb2xsO1xuICB2YXIgb3JpZ2luYWxTdHlsZXMgPSB1c2VSZWYoe30pO1xuICB2YXIgc2Nyb2xsVGFyZ2V0ID0gdXNlUmVmKG51bGwpO1xuICB2YXIgYWRkU2Nyb2xsTG9jayA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgIGlmICghY2FuVXNlRE9NKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmJvZHk7XG4gICAgdmFyIHRhcmdldFN0eWxlID0gdGFyZ2V0ICYmIHRhcmdldC5zdHlsZTtcbiAgICBpZiAoYWNjb3VudEZvclNjcm9sbGJhcnMpIHtcbiAgICAgIC8vIHN0b3JlIGFueSBzdHlsZXMgYWxyZWFkeSBhcHBsaWVkIHRvIHRoZSBib2R5XG4gICAgICBTVFlMRV9LRVlTLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gdGFyZ2V0U3R5bGUgJiYgdGFyZ2V0U3R5bGVba2V5XTtcbiAgICAgICAgb3JpZ2luYWxTdHlsZXMuY3VycmVudFtrZXldID0gdmFsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gYXBwbHkgdGhlIGxvY2sgc3R5bGVzIGFuZCBwYWRkaW5nIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHNjcm9sbCBsb2NrXG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzICYmIGFjdGl2ZVNjcm9sbExvY2tzIDwgMSkge1xuICAgICAgdmFyIGN1cnJlbnRQYWRkaW5nID0gcGFyc2VJbnQob3JpZ2luYWxTdHlsZXMuY3VycmVudC5wYWRkaW5nUmlnaHQsIDEwKSB8fCAwO1xuICAgICAgdmFyIGNsaWVudFdpZHRoID0gZG9jdW1lbnQuYm9keSA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAwO1xuICAgICAgdmFyIGFkanVzdGVkUGFkZGluZyA9IHdpbmRvdy5pbm5lcldpZHRoIC0gY2xpZW50V2lkdGggKyBjdXJyZW50UGFkZGluZyB8fCAwO1xuICAgICAgT2JqZWN0LmtleXMoTE9DS19TVFlMRVMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gTE9DS19TVFlMRVNba2V5XTtcbiAgICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgICAgdGFyZ2V0U3R5bGVba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAodGFyZ2V0U3R5bGUpIHtcbiAgICAgICAgdGFyZ2V0U3R5bGUucGFkZGluZ1JpZ2h0ID0gXCJcIi5jb25jYXQoYWRqdXN0ZWRQYWRkaW5nLCBcInB4XCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFjY291bnQgZm9yIHRvdWNoIGRldmljZXNcbiAgICBpZiAodGFyZ2V0ICYmIGlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgLy8gTW9iaWxlIFNhZmFyaSBpZ25vcmVzIHsgb3ZlcmZsb3c6IGhpZGRlbiB9IGRlY2xhcmF0aW9uIG9uIHRoZSBib2R5LlxuICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnRUb3VjaE1vdmUsIGxpc3RlbmVyT3B0aW9ucyk7XG5cbiAgICAgIC8vIEFsbG93IHNjcm9sbCBvbiBwcm92aWRlZCB0YXJnZXRcbiAgICAgIGlmICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgcHJldmVudEluZXJ0aWFTY3JvbGwsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGFsbG93VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGluY3JlbWVudCBhY3RpdmUgc2Nyb2xsIGxvY2tzXG4gICAgYWN0aXZlU2Nyb2xsTG9ja3MgKz0gMTtcbiAgfSwgW2FjY291bnRGb3JTY3JvbGxiYXJzXSk7XG4gIHZhciByZW1vdmVTY3JvbGxMb2NrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHRvdWNoU2Nyb2xsVGFyZ2V0KSB7XG4gICAgaWYgKCFjYW5Vc2VET00pIHJldHVybjtcbiAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgdGFyZ2V0U3R5bGUgPSB0YXJnZXQgJiYgdGFyZ2V0LnN0eWxlO1xuXG4gICAgLy8gc2FmZWx5IGRlY3JlbWVudCBhY3RpdmUgc2Nyb2xsIGxvY2tzXG4gICAgYWN0aXZlU2Nyb2xsTG9ja3MgPSBNYXRoLm1heChhY3RpdmVTY3JvbGxMb2NrcyAtIDEsIDApO1xuXG4gICAgLy8gcmVhcHBseSBvcmlnaW5hbCBib2R5IHN0eWxlcywgaWYgYW55XG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzICYmIGFjdGl2ZVNjcm9sbExvY2tzIDwgMSkge1xuICAgICAgU1RZTEVfS0VZUy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IG9yaWdpbmFsU3R5bGVzLmN1cnJlbnRba2V5XTtcbiAgICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgICAgdGFyZ2V0U3R5bGVba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIHRvdWNoIGxpc3RlbmVyc1xuICAgIGlmICh0YXJnZXQgJiYgaXNUb3VjaERldmljZSgpKSB7XG4gICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgcHJldmVudFRvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIGlmICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgcHJldmVudEluZXJ0aWFTY3JvbGwsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGFsbG93VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2FjY291bnRGb3JTY3JvbGxiYXJzXSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFpc0VuYWJsZWQpIHJldHVybjtcbiAgICB2YXIgZWxlbWVudCA9IHNjcm9sbFRhcmdldC5jdXJyZW50O1xuICAgIGFkZFNjcm9sbExvY2soZWxlbWVudCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlbW92ZVNjcm9sbExvY2soZWxlbWVudCk7XG4gICAgfTtcbiAgfSwgW2lzRW5hYmxlZCwgYWRkU2Nyb2xsTG9jaywgcmVtb3ZlU2Nyb2xsTG9ja10pO1xuICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBzY3JvbGxUYXJnZXQuY3VycmVudCA9IGVsZW1lbnQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fJDEoKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxudmFyIGJsdXJTZWxlY3RJbnB1dCA9IGZ1bmN0aW9uIGJsdXJTZWxlY3RJbnB1dChldmVudCkge1xuICB2YXIgZWxlbWVudCA9IGV2ZW50LnRhcmdldDtcbiAgcmV0dXJuIGVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbn07XG52YXIgX3JlZjIkMSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgbmFtZTogXCIxa2ZkYjBlXCIsXG4gIHN0eWxlczogXCJwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MDt0b3A6MFwiXG59IDoge1xuICBuYW1lOiBcImJwOGN1YS1TY3JvbGxNYW5hZ2VyXCIsXG4gIHN0eWxlczogXCJwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MDt0b3A6MDtsYWJlbDpTY3JvbGxNYW5hZ2VyO1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWxOamNtOXNiRTFoYm1GblpYSXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVc5RVZTSXNJbVpwYkdVaU9pSlRZM0p2Ykd4TllXNWhaMlZ5TG5SemVDSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2lCQWFuTjRJR3B6ZUNBcUwxeHVhVzF3YjNKMElIc2dhbk40SUgwZ1puSnZiU0FuUUdWdGIzUnBiMjR2Y21WaFkzUW5PMXh1YVcxd2IzSjBJSHNnUm5KaFoyMWxiblFzSUZKbFlXTjBSV3hsYldWdWRDd2dVbVZtUTJGc2JHSmhZMnNzSUUxdmRYTmxSWFpsYm5RZ2ZTQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZFhObFUyTnliMnhzUTJGd2RIVnlaU0JtY205dElDY3VMM1Z6WlZOamNtOXNiRU5oY0hSMWNtVW5PMXh1YVcxd2IzSjBJSFZ6WlZOamNtOXNiRXh2WTJzZ1puSnZiU0FuTGk5MWMyVlRZM0p2Ykd4TWIyTnJKenRjYmx4dWFXNTBaWEptWVdObElGQnliM0J6SUh0Y2JpQWdjbVZoWkc5dWJIa2dZMmhwYkdSeVpXNDZJQ2h5WldZNklGSmxaa05oYkd4aVlXTnJQRWhVVFV4RmJHVnRaVzUwUGlrZ1BUNGdVbVZoWTNSRmJHVnRaVzUwTzF4dUlDQnlaV0ZrYjI1c2VTQnNiMk5yUlc1aFlteGxaRG9nWW05dmJHVmhianRjYmlBZ2NtVmhaRzl1YkhrZ1kyRndkSFZ5WlVWdVlXSnNaV1E2SUdKdmIyeGxZVzQ3WEc0Z0lISmxZV1J2Ym14NUlHOXVRbTkwZEc5dFFYSnlhWFpsUHpvZ0tHVjJaVzUwT2lCWGFHVmxiRVYyWlc1MElId2dWRzkxWTJoRmRtVnVkQ2tnUFQ0Z2RtOXBaRHRjYmlBZ2NtVmhaRzl1YkhrZ2IyNUNiM1IwYjIxTVpXRjJaVDg2SUNobGRtVnVkRG9nVjJobFpXeEZkbVZ1ZENCOElGUnZkV05vUlhabGJuUXBJRDArSUhadmFXUTdYRzRnSUhKbFlXUnZibXg1SUc5dVZHOXdRWEp5YVhabFB6b2dLR1YyWlc1ME9pQlhhR1ZsYkVWMlpXNTBJSHdnVkc5MVkyaEZkbVZ1ZENrZ1BUNGdkbTlwWkR0Y2JpQWdjbVZoWkc5dWJIa2diMjVVYjNCTVpXRjJaVDg2SUNobGRtVnVkRG9nVjJobFpXeEZkbVZ1ZENCOElGUnZkV05vUlhabGJuUXBJRDArSUhadmFXUTdYRzU5WEc1Y2JtTnZibk4wSUdKc2RYSlRaV3hsWTNSSmJuQjFkQ0E5SUNobGRtVnVkRG9nVFc5MWMyVkZkbVZ1ZER4SVZFMU1SR2wyUld4bGJXVnVkRDRwSUQwK0lIdGNiaUFnWTI5dWMzUWdaV3hsYldWdWRDQTlJR1YyWlc1MExuUmhjbWRsZENCaGN5QklWRTFNUkdsMlJXeGxiV1Z1ZER0Y2JpQWdjbVYwZFhKdUlDaGNiaUFnSUNCbGJHVnRaVzUwTG05M2JtVnlSRzlqZFcxbGJuUXVZV04wYVhabFJXeGxiV1Z1ZENBbUpseHVJQ0FnSUNobGJHVnRaVzUwTG05M2JtVnlSRzlqZFcxbGJuUXVZV04wYVhabFJXeGxiV1Z1ZENCaGN5QklWRTFNUld4bGJXVnVkQ2t1WW14MWNpZ3BYRzRnSUNrN1hHNTlPMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaUJUWTNKdmJHeE5ZVzVoWjJWeUtIdGNiaUFnWTJocGJHUnlaVzRzWEc0Z0lHeHZZMnRGYm1GaWJHVmtMRnh1SUNCallYQjBkWEpsUlc1aFlteGxaQ0E5SUhSeWRXVXNYRzRnSUc5dVFtOTBkRzl0UVhKeWFYWmxMRnh1SUNCdmJrSnZkSFJ2YlV4bFlYWmxMRnh1SUNCdmJsUnZjRUZ5Y21sMlpTeGNiaUFnYjI1VWIzQk1aV0YyWlN4Y2JuMDZJRkJ5YjNCektTQjdYRzRnSUdOdmJuTjBJSE5sZEZOamNtOXNiRU5oY0hSMWNtVlVZWEpuWlhRZ1BTQjFjMlZUWTNKdmJHeERZWEIwZFhKbEtIdGNiaUFnSUNCcGMwVnVZV0pzWldRNklHTmhjSFIxY21WRmJtRmliR1ZrTEZ4dUlDQWdJRzl1UW05MGRHOXRRWEp5YVhabExGeHVJQ0FnSUc5dVFtOTBkRzl0VEdWaGRtVXNYRzRnSUNBZ2IyNVViM0JCY25KcGRtVXNYRzRnSUNBZ2IyNVViM0JNWldGMlpTeGNiaUFnZlNrN1hHNGdJR052Ym5OMElITmxkRk5qY205c2JFeHZZMnRVWVhKblpYUWdQU0IxYzJWVFkzSnZiR3hNYjJOcktIc2dhWE5GYm1GaWJHVmtPaUJzYjJOclJXNWhZbXhsWkNCOUtUdGNibHh1SUNCamIyNXpkQ0IwWVhKblpYUlNaV1k2SUZKbFprTmhiR3hpWVdOclBFaFVUVXhGYkdWdFpXNTBQaUE5SUNobGJHVnRaVzUwS1NBOVBpQjdYRzRnSUNBZ2MyVjBVMk55YjJ4c1EyRndkSFZ5WlZSaGNtZGxkQ2hsYkdWdFpXNTBLVHRjYmlBZ0lDQnpaWFJUWTNKdmJHeE1iMk5yVkdGeVoyVjBLR1ZzWlcxbGJuUXBPMXh1SUNCOU8xeHVYRzRnSUhKbGRIVnliaUFvWEc0Z0lDQWdQRVp5WVdkdFpXNTBQbHh1SUNBZ0lDQWdlMnh2WTJ0RmJtRmliR1ZrSUNZbUlDaGNiaUFnSUNBZ0lDQWdQR1JwZGx4dUlDQWdJQ0FnSUNBZ0lHOXVRMnhwWTJzOWUySnNkWEpUWld4bFkzUkpibkIxZEgxY2JpQWdJQ0FnSUNBZ0lDQmpjM005ZTNzZ2NHOXphWFJwYjI0NklDZG1hWGhsWkNjc0lHeGxablE2SURBc0lHSnZkSFJ2YlRvZ01Dd2djbWxuYUhRNklEQXNJSFJ2Y0RvZ01DQjlmVnh1SUNBZ0lDQWdJQ0F2UGx4dUlDQWdJQ0FnS1gxY2JpQWdJQ0FnSUh0amFHbHNaSEpsYmloMFlYSm5aWFJTWldZcGZWeHVJQ0FnSUR3dlJuSmhaMjFsYm5RK1hHNGdJQ2s3WEc1OVhHNGlYWDA9ICovXCIsXG4gIHRvU3RyaW5nOiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfXyQxXG59O1xuZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcihfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgbG9ja0VuYWJsZWQgPSBfcmVmLmxvY2tFbmFibGVkLFxuICAgIF9yZWYkY2FwdHVyZUVuYWJsZWQgPSBfcmVmLmNhcHR1cmVFbmFibGVkLFxuICAgIGNhcHR1cmVFbmFibGVkID0gX3JlZiRjYXB0dXJlRW5hYmxlZCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkY2FwdHVyZUVuYWJsZWQsXG4gICAgb25Cb3R0b21BcnJpdmUgPSBfcmVmLm9uQm90dG9tQXJyaXZlLFxuICAgIG9uQm90dG9tTGVhdmUgPSBfcmVmLm9uQm90dG9tTGVhdmUsXG4gICAgb25Ub3BBcnJpdmUgPSBfcmVmLm9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUgPSBfcmVmLm9uVG9wTGVhdmU7XG4gIHZhciBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZTogb25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZTogb25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZTogb25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZTogb25Ub3BMZWF2ZVxuICB9KTtcbiAgdmFyIHNldFNjcm9sbExvY2tUYXJnZXQgPSB1c2VTY3JvbGxMb2NrKHtcbiAgICBpc0VuYWJsZWQ6IGxvY2tFbmFibGVkXG4gIH0pO1xuICB2YXIgdGFyZ2V0UmVmID0gZnVuY3Rpb24gdGFyZ2V0UmVmKGVsZW1lbnQpIHtcbiAgICBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0KGVsZW1lbnQpO1xuICAgIHNldFNjcm9sbExvY2tUYXJnZXQoZWxlbWVudCk7XG4gIH07XG4gIHJldHVybiBqc3goRnJhZ21lbnQsIG51bGwsIGxvY2tFbmFibGVkICYmIGpzeChcImRpdlwiLCB7XG4gICAgb25DbGljazogYmx1clNlbGVjdElucHV0LFxuICAgIGNzczogX3JlZjIkMVxuICB9KSwgY2hpbGRyZW4odGFyZ2V0UmVmKSk7XG59XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fKCkgeyByZXR1cm4gXCJZb3UgaGF2ZSB0cmllZCB0byBzdHJpbmdpZnkgb2JqZWN0IHJldHVybmVkIGZyb20gYGNzc2AgZnVuY3Rpb24uIEl0IGlzbid0IHN1cHBvc2VkIHRvIGJlIHVzZWQgZGlyZWN0bHkgKGUuZy4gYXMgdmFsdWUgb2YgdGhlIGBjbGFzc05hbWVgIHByb3ApLCBidXQgcmF0aGVyIGhhbmRlZCB0byBlbW90aW9uIHNvIGl0IGNhbiBoYW5kbGUgaXQgKGUuZy4gYXMgdmFsdWUgb2YgYGNzc2AgcHJvcCkuXCI7IH1cbnZhciBfcmVmMiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgbmFtZTogXCIxYTBybzRuLXJlcXVpcmVkSW5wdXRcIixcbiAgc3R5bGVzOiBcImxhYmVsOnJlcXVpcmVkSW5wdXQ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7d2lkdGg6MTAwJVwiXG59IDoge1xuICBuYW1lOiBcIjVra3hiMi1yZXF1aXJlZElucHV0LVJlcXVpcmVkSW5wdXRcIixcbiAgc3R5bGVzOiBcImxhYmVsOnJlcXVpcmVkSW5wdXQ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7d2lkdGg6MTAwJTtsYWJlbDpSZXF1aXJlZElucHV0O1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWxKbGNYVnBjbVZrU1c1d2RYUXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVdOSklpd2labWxzWlNJNklsSmxjWFZwY21Wa1NXNXdkWFF1ZEhONElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xSUVCcWMzZ2dhbk40SUNvdlhHNXBiWEJ2Y25RZ2V5QkdiMk4xYzBWMlpXNTBTR0Z1Wkd4bGNpd2dSblZ1WTNScGIyNURiMjF3YjI1bGJuUWdmU0JtY205dElDZHlaV0ZqZENjN1hHNXBiWEJ2Y25RZ2V5QnFjM2dnZlNCbWNtOXRJQ2RBWlcxdmRHbHZiaTl5WldGamRDYzdYRzVjYm1OdmJuTjBJRkpsY1hWcGNtVmtTVzV3ZFhRNklFWjFibU4wYVc5dVEyOXRjRzl1Wlc1MFBIdGNiaUFnY21WaFpHOXViSGtnYm1GdFpUODZJSE4wY21sdVp6dGNiaUFnY21WaFpHOXViSGtnYjI1R2IyTjFjem9nUm05amRYTkZkbVZ1ZEVoaGJtUnNaWEk4U0ZSTlRFbHVjSFYwUld4bGJXVnVkRDQ3WEc1OVBpQTlJQ2g3SUc1aGJXVXNJRzl1Um05amRYTWdmU2tnUFQ0Z0tGeHVJQ0E4YVc1d2RYUmNiaUFnSUNCeVpYRjFhWEpsWkZ4dUlDQWdJRzVoYldVOWUyNWhiV1Y5WEc0Z0lDQWdkR0ZpU1c1a1pYZzlleTB4ZlZ4dUlDQWdJR0Z5YVdFdGFHbGtaR1Z1UFZ3aWRISjFaVndpWEc0Z0lDQWdiMjVHYjJOMWN6MTdiMjVHYjJOMWMzMWNiaUFnSUNCamMzTTllM3RjYmlBZ0lDQWdJR3hoWW1Wc09pQW5jbVZ4ZFdseVpXUkpibkIxZENjc1hHNGdJQ0FnSUNCdmNHRmphWFI1T2lBd0xGeHVJQ0FnSUNBZ2NHOXBiblJsY2tWMlpXNTBjem9nSjI1dmJtVW5MRnh1SUNBZ0lDQWdjRzl6YVhScGIyNDZJQ2RoWW5OdmJIVjBaU2NzWEc0Z0lDQWdJQ0JpYjNSMGIyMDZJREFzWEc0Z0lDQWdJQ0JzWldaME9pQXdMRnh1SUNBZ0lDQWdjbWxuYUhRNklEQXNYRzRnSUNBZ0lDQjNhV1IwYURvZ0p6RXdNQ1VuTEZ4dUlDQWdJSDE5WEc0Z0lDQWdMeThnVUhKbGRtVnVkQ0JnVTNkcGRHTm9hVzVuSUdaeWIyMGdkVzVqYjI1MGNtOXNiR1ZrSUhSdklHTnZiblJ5YjJ4c1pXUmdJR1Z5Y205eVhHNGdJQ0FnZG1Gc2RXVTlYQ0pjSWx4dUlDQWdJRzl1UTJoaGJtZGxQWHNvS1NBOVBpQjdmWDFjYmlBZ0x6NWNiaWs3WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUZKbGNYVnBjbVZrU1c1d2RYUTdYRzRpWFgwPSAqL1wiLFxuICB0b1N0cmluZzogX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX19cbn07XG52YXIgUmVxdWlyZWRJbnB1dCA9IGZ1bmN0aW9uIFJlcXVpcmVkSW5wdXQoX3JlZikge1xuICB2YXIgbmFtZSA9IF9yZWYubmFtZSxcbiAgICBvbkZvY3VzID0gX3JlZi5vbkZvY3VzO1xuICByZXR1cm4ganN4KFwiaW5wdXRcIiwge1xuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGFiSW5kZXg6IC0xLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgb25Gb2N1czogb25Gb2N1cyxcbiAgICBjc3M6IF9yZWYyXG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgLFxuICAgIHZhbHVlOiBcIlwiLFxuICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHt9XG4gIH0pO1xufTtcbnZhciBSZXF1aXJlZElucHV0JDEgPSBSZXF1aXJlZElucHV0O1xuXG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cInVzZXItYWdlbnQtZGF0YS10eXBlc1wiIC8+XG5cbmZ1bmN0aW9uIHRlc3RQbGF0Zm9ybShyZSkge1xuICB2YXIgX3dpbmRvdyRuYXZpZ2F0b3IkdXNlO1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lm5hdmlnYXRvciAhPSBudWxsID8gcmUudGVzdCgoKF93aW5kb3ckbmF2aWdhdG9yJHVzZSA9IHdpbmRvdy5uYXZpZ2F0b3JbJ3VzZXJBZ2VudERhdGEnXSkgPT09IG51bGwgfHwgX3dpbmRvdyRuYXZpZ2F0b3IkdXNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfd2luZG93JG5hdmlnYXRvciR1c2UucGxhdGZvcm0pIHx8IHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0pIDogZmFsc2U7XG59XG5mdW5jdGlvbiBpc0lQaG9uZSgpIHtcbiAgcmV0dXJuIHRlc3RQbGF0Zm9ybSgvXmlQaG9uZS9pKTtcbn1cbmZ1bmN0aW9uIGlzTWFjKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eTWFjL2kpO1xufVxuZnVuY3Rpb24gaXNJUGFkKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eaVBhZC9pKSB8fFxuICAvLyBpUGFkT1MgMTMgbGllcyBhbmQgc2F5cyBpdCdzIGEgTWFjLCBidXQgd2UgY2FuIGRpc3Rpbmd1aXNoIGJ5IGRldGVjdGluZyB0b3VjaCBzdXBwb3J0LlxuICBpc01hYygpICYmIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDE7XG59XG5mdW5jdGlvbiBpc0lPUygpIHtcbiAgcmV0dXJuIGlzSVBob25lKCkgfHwgaXNJUGFkKCk7XG59XG5mdW5jdGlvbiBpc0FwcGxlRGV2aWNlKCkge1xuICByZXR1cm4gaXNNYWMoKSB8fCBpc0lPUygpO1xufVxuXG52YXIgZm9ybWF0R3JvdXBMYWJlbCA9IGZ1bmN0aW9uIGZvcm1hdEdyb3VwTGFiZWwoZ3JvdXApIHtcbiAgcmV0dXJuIGdyb3VwLmxhYmVsO1xufTtcbnZhciBnZXRPcHRpb25MYWJlbCQxID0gZnVuY3Rpb24gZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSB7XG4gIHJldHVybiBvcHRpb24ubGFiZWw7XG59O1xudmFyIGdldE9wdGlvblZhbHVlJDEgPSBmdW5jdGlvbiBnZXRPcHRpb25WYWx1ZShvcHRpb24pIHtcbiAgcmV0dXJuIG9wdGlvbi52YWx1ZTtcbn07XG52YXIgaXNPcHRpb25EaXNhYmxlZCA9IGZ1bmN0aW9uIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSB7XG4gIHJldHVybiAhIW9wdGlvbi5pc0Rpc2FibGVkO1xufTtcblxudmFyIGRlZmF1bHRTdHlsZXMgPSB7XG4gIGNsZWFySW5kaWNhdG9yOiBjbGVhckluZGljYXRvckNTUyxcbiAgY29udGFpbmVyOiBjb250YWluZXJDU1MsXG4gIGNvbnRyb2w6IGNzcyQxLFxuICBkcm9wZG93bkluZGljYXRvcjogZHJvcGRvd25JbmRpY2F0b3JDU1MsXG4gIGdyb3VwOiBncm91cENTUyxcbiAgZ3JvdXBIZWFkaW5nOiBncm91cEhlYWRpbmdDU1MsXG4gIGluZGljYXRvcnNDb250YWluZXI6IGluZGljYXRvcnNDb250YWluZXJDU1MsXG4gIGluZGljYXRvclNlcGFyYXRvcjogaW5kaWNhdG9yU2VwYXJhdG9yQ1NTLFxuICBpbnB1dDogaW5wdXRDU1MsXG4gIGxvYWRpbmdJbmRpY2F0b3I6IGxvYWRpbmdJbmRpY2F0b3JDU1MsXG4gIGxvYWRpbmdNZXNzYWdlOiBsb2FkaW5nTWVzc2FnZUNTUyxcbiAgbWVudTogbWVudUNTUyxcbiAgbWVudUxpc3Q6IG1lbnVMaXN0Q1NTLFxuICBtZW51UG9ydGFsOiBtZW51UG9ydGFsQ1NTLFxuICBtdWx0aVZhbHVlOiBtdWx0aVZhbHVlQ1NTLFxuICBtdWx0aVZhbHVlTGFiZWw6IG11bHRpVmFsdWVMYWJlbENTUyxcbiAgbXVsdGlWYWx1ZVJlbW92ZTogbXVsdGlWYWx1ZVJlbW92ZUNTUyxcbiAgbm9PcHRpb25zTWVzc2FnZTogbm9PcHRpb25zTWVzc2FnZUNTUyxcbiAgb3B0aW9uOiBvcHRpb25DU1MsXG4gIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlckNTUyxcbiAgc2luZ2xlVmFsdWU6IGNzcyQyLFxuICB2YWx1ZUNvbnRhaW5lcjogdmFsdWVDb250YWluZXJDU1Ncbn07XG4vLyBNZXJnZSBVdGlsaXR5XG4vLyBBbGxvd3MgY29uc3VtZXJzIHRvIGV4dGVuZCBhIGJhc2UgU2VsZWN0IHdpdGggYWRkaXRpb25hbCBzdHlsZXNcblxuZnVuY3Rpb24gbWVyZ2VTdHlsZXMoc291cmNlKSB7XG4gIHZhciB0YXJnZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAvLyBpbml0aWFsaXplIHdpdGggc291cmNlIHN0eWxlc1xuICB2YXIgc3R5bGVzID0gX29iamVjdFNwcmVhZCh7fSwgc291cmNlKTtcblxuICAvLyBtYXNzYWdlIGluIHRhcmdldCBzdHlsZXNcbiAgT2JqZWN0LmtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlBc1N0cmluZykge1xuICAgIHZhciBrZXkgPSBrZXlBc1N0cmluZztcbiAgICBpZiAoc291cmNlW2tleV0pIHtcbiAgICAgIHN0eWxlc1trZXldID0gZnVuY3Rpb24gKHJzQ3NzLCBwcm9wcykge1xuICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0oc291cmNlW2tleV0ocnNDc3MsIHByb3BzKSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzW2tleV0gPSB0YXJnZXRba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3R5bGVzO1xufVxuXG52YXIgY29sb3JzID0ge1xuICBwcmltYXJ5OiAnIzI2ODRGRicsXG4gIHByaW1hcnk3NTogJyM0QzlBRkYnLFxuICBwcmltYXJ5NTA6ICcjQjJENEZGJyxcbiAgcHJpbWFyeTI1OiAnI0RFRUJGRicsXG4gIGRhbmdlcjogJyNERTM1MEInLFxuICBkYW5nZXJMaWdodDogJyNGRkJEQUQnLFxuICBuZXV0cmFsMDogJ2hzbCgwLCAwJSwgMTAwJSknLFxuICBuZXV0cmFsNTogJ2hzbCgwLCAwJSwgOTUlKScsXG4gIG5ldXRyYWwxMDogJ2hzbCgwLCAwJSwgOTAlKScsXG4gIG5ldXRyYWwyMDogJ2hzbCgwLCAwJSwgODAlKScsXG4gIG5ldXRyYWwzMDogJ2hzbCgwLCAwJSwgNzAlKScsXG4gIG5ldXRyYWw0MDogJ2hzbCgwLCAwJSwgNjAlKScsXG4gIG5ldXRyYWw1MDogJ2hzbCgwLCAwJSwgNTAlKScsXG4gIG5ldXRyYWw2MDogJ2hzbCgwLCAwJSwgNDAlKScsXG4gIG5ldXRyYWw3MDogJ2hzbCgwLCAwJSwgMzAlKScsXG4gIG5ldXRyYWw4MDogJ2hzbCgwLCAwJSwgMjAlKScsXG4gIG5ldXRyYWw5MDogJ2hzbCgwLCAwJSwgMTAlKSdcbn07XG52YXIgYm9yZGVyUmFkaXVzID0gNDtcbi8vIFVzZWQgdG8gY2FsY3VsYXRlIGNvbnNpc3RlbnQgbWFyZ2luL3BhZGRpbmcgb24gZWxlbWVudHNcbnZhciBiYXNlVW5pdCA9IDQ7XG4vLyBUaGUgbWluaW11bSBoZWlnaHQgb2YgdGhlIGNvbnRyb2xcbnZhciBjb250cm9sSGVpZ2h0ID0gMzg7XG4vLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRyb2wgYW5kIG1lbnUgKi9cbnZhciBtZW51R3V0dGVyID0gYmFzZVVuaXQgKiAyO1xudmFyIHNwYWNpbmcgPSB7XG4gIGJhc2VVbml0OiBiYXNlVW5pdCxcbiAgY29udHJvbEhlaWdodDogY29udHJvbEhlaWdodCxcbiAgbWVudUd1dHRlcjogbWVudUd1dHRlclxufTtcbnZhciBkZWZhdWx0VGhlbWUgPSB7XG4gIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICBjb2xvcnM6IGNvbG9ycyxcbiAgc3BhY2luZzogc3BhY2luZ1xufTtcblxudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgJ2FyaWEtbGl2ZSc6ICdwb2xpdGUnLFxuICBiYWNrc3BhY2VSZW1vdmVzVmFsdWU6IHRydWUsXG4gIGJsdXJJbnB1dE9uU2VsZWN0OiBpc1RvdWNoQ2FwYWJsZSgpLFxuICBjYXB0dXJlTWVudVNjcm9sbDogIWlzVG91Y2hDYXBhYmxlKCksXG4gIGNsYXNzTmFtZXM6IHt9LFxuICBjbG9zZU1lbnVPblNlbGVjdDogdHJ1ZSxcbiAgY2xvc2VNZW51T25TY3JvbGw6IGZhbHNlLFxuICBjb21wb25lbnRzOiB7fSxcbiAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlOiB0cnVlLFxuICBlc2NhcGVDbGVhcnNWYWx1ZTogZmFsc2UsXG4gIGZpbHRlck9wdGlvbjogY3JlYXRlRmlsdGVyKCksXG4gIGZvcm1hdEdyb3VwTGFiZWw6IGZvcm1hdEdyb3VwTGFiZWwsXG4gIGdldE9wdGlvbkxhYmVsOiBnZXRPcHRpb25MYWJlbCQxLFxuICBnZXRPcHRpb25WYWx1ZTogZ2V0T3B0aW9uVmFsdWUkMSxcbiAgaXNEaXNhYmxlZDogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIGlzTXVsdGk6IGZhbHNlLFxuICBpc1J0bDogZmFsc2UsXG4gIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgaXNPcHRpb25EaXNhYmxlZDogaXNPcHRpb25EaXNhYmxlZCxcbiAgbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIGxvYWRpbmdNZXNzYWdlKCkge1xuICAgIHJldHVybiAnTG9hZGluZy4uLic7XG4gIH0sXG4gIG1heE1lbnVIZWlnaHQ6IDMwMCxcbiAgbWluTWVudUhlaWdodDogMTQwLFxuICBtZW51SXNPcGVuOiBmYWxzZSxcbiAgbWVudVBsYWNlbWVudDogJ2JvdHRvbScsXG4gIG1lbnVQb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgbWVudVNob3VsZEJsb2NrU2Nyb2xsOiBmYWxzZSxcbiAgbWVudVNob3VsZFNjcm9sbEludG9WaWV3OiAhaXNNb2JpbGVEZXZpY2UoKSxcbiAgbm9PcHRpb25zTWVzc2FnZTogZnVuY3Rpb24gbm9PcHRpb25zTWVzc2FnZSgpIHtcbiAgICByZXR1cm4gJ05vIG9wdGlvbnMnO1xuICB9LFxuICBvcGVuTWVudU9uRm9jdXM6IGZhbHNlLFxuICBvcGVuTWVudU9uQ2xpY2s6IHRydWUsXG4gIG9wdGlvbnM6IFtdLFxuICBwYWdlU2l6ZTogNSxcbiAgcGxhY2Vob2xkZXI6ICdTZWxlY3QuLi4nLFxuICBzY3JlZW5SZWFkZXJTdGF0dXM6IGZ1bmN0aW9uIHNjcmVlblJlYWRlclN0YXR1cyhfcmVmKSB7XG4gICAgdmFyIGNvdW50ID0gX3JlZi5jb3VudDtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoY291bnQsIFwiIHJlc3VsdFwiKS5jb25jYXQoY291bnQgIT09IDEgPyAncycgOiAnJywgXCIgYXZhaWxhYmxlXCIpO1xuICB9LFxuICBzdHlsZXM6IHt9LFxuICB0YWJJbmRleDogMCxcbiAgdGFiU2VsZWN0c1ZhbHVlOiB0cnVlLFxuICB1bnN0eWxlZDogZmFsc2Vcbn07XG5mdW5jdGlvbiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBpbmRleCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9pc09wdGlvbkRpc2FibGVkKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlKTtcbiAgdmFyIGlzU2VsZWN0ZWQgPSBfaXNPcHRpb25TZWxlY3RlZChwcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIHZhciBsYWJlbCA9IGdldE9wdGlvbkxhYmVsKHByb3BzLCBvcHRpb24pO1xuICB2YXIgdmFsdWUgPSBnZXRPcHRpb25WYWx1ZShwcm9wcywgb3B0aW9uKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnb3B0aW9uJyxcbiAgICBkYXRhOiBvcHRpb24sXG4gICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgIGxhYmVsOiBsYWJlbCxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgaW5kZXg6IGluZGV4XG4gIH07XG59XG5mdW5jdGlvbiBidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChncm91cE9yT3B0aW9uLCBncm91cE9yT3B0aW9uSW5kZXgpIHtcbiAgICBpZiAoJ29wdGlvbnMnIGluIGdyb3VwT3JPcHRpb24pIHtcbiAgICAgIHZhciBjYXRlZ29yaXplZE9wdGlvbnMgPSBncm91cE9yT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIG9wdGlvbkluZGV4KSB7XG4gICAgICAgIHJldHVybiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBvcHRpb25JbmRleCk7XG4gICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBpc0ZvY3VzYWJsZShwcm9wcywgY2F0ZWdvcml6ZWRPcHRpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gY2F0ZWdvcml6ZWRPcHRpb25zLmxlbmd0aCA+IDAgPyB7XG4gICAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICAgIGRhdGE6IGdyb3VwT3JPcHRpb24sXG4gICAgICAgIG9wdGlvbnM6IGNhdGVnb3JpemVkT3B0aW9ucyxcbiAgICAgICAgaW5kZXg6IGdyb3VwT3JPcHRpb25JbmRleFxuICAgICAgfSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIGNhdGVnb3JpemVkT3B0aW9uID0gdG9DYXRlZ29yaXplZE9wdGlvbihwcm9wcywgZ3JvdXBPck9wdGlvbiwgc2VsZWN0VmFsdWUsIGdyb3VwT3JPcHRpb25JbmRleCk7XG4gICAgcmV0dXJuIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikgPyBjYXRlZ29yaXplZE9wdGlvbiA6IHVuZGVmaW5lZDtcbiAgfSkuZmlsdGVyKG5vdE51bGxpc2gpO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhjYXRlZ29yaXplZE9wdGlvbnMpIHtcbiAgcmV0dXJuIGNhdGVnb3JpemVkT3B0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKG9wdGlvbnNBY2N1bXVsYXRvciwgY2F0ZWdvcml6ZWRPcHRpb24pIHtcbiAgICBpZiAoY2F0ZWdvcml6ZWRPcHRpb24udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2guYXBwbHkob3B0aW9uc0FjY3VtdWxhdG9yLCBfdG9Db25zdW1hYmxlQXJyYXkoY2F0ZWdvcml6ZWRPcHRpb24ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uLmRhdGE7XG4gICAgICB9KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zQWNjdW11bGF0b3IucHVzaChjYXRlZ29yaXplZE9wdGlvbi5kYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhjYXRlZ29yaXplZE9wdGlvbnMsIG9wdGlvbklkKSB7XG4gIHJldHVybiBjYXRlZ29yaXplZE9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChvcHRpb25zQWNjdW11bGF0b3IsIGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgaWYgKGNhdGVnb3JpemVkT3B0aW9uLnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgIG9wdGlvbnNBY2N1bXVsYXRvci5wdXNoLmFwcGx5KG9wdGlvbnNBY2N1bXVsYXRvciwgX3RvQ29uc3VtYWJsZUFycmF5KGNhdGVnb3JpemVkT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiBvcHRpb24uZGF0YSxcbiAgICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KVxuICAgICAgICB9O1xuICAgICAgfSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2goe1xuICAgICAgICBkYXRhOiBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkge1xuICByZXR1cm4gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikge1xuICB2YXIgX3Byb3BzJGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgIGlucHV0VmFsdWUgPSBfcHJvcHMkaW5wdXRWYWx1ZSA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkaW5wdXRWYWx1ZTtcbiAgdmFyIGRhdGEgPSBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgIGlzU2VsZWN0ZWQgPSBjYXRlZ29yaXplZE9wdGlvbi5pc1NlbGVjdGVkLFxuICAgIGxhYmVsID0gY2F0ZWdvcml6ZWRPcHRpb24ubGFiZWwsXG4gICAgdmFsdWUgPSBjYXRlZ29yaXplZE9wdGlvbi52YWx1ZTtcbiAgcmV0dXJuICghc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykgfHwgIWlzU2VsZWN0ZWQpICYmIF9maWx0ZXJPcHRpb24ocHJvcHMsIHtcbiAgICBsYWJlbDogbGFiZWwsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIGRhdGE6IGRhdGFcbiAgfSwgaW5wdXRWYWx1ZSk7XG59XG5mdW5jdGlvbiBnZXROZXh0Rm9jdXNlZFZhbHVlKHN0YXRlLCBuZXh0U2VsZWN0VmFsdWUpIHtcbiAgdmFyIGZvY3VzZWRWYWx1ZSA9IHN0YXRlLmZvY3VzZWRWYWx1ZSxcbiAgICBsYXN0U2VsZWN0VmFsdWUgPSBzdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgdmFyIGxhc3RGb2N1c2VkSW5kZXggPSBsYXN0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICBpZiAobGFzdEZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgdmFyIG5leHRGb2N1c2VkSW5kZXggPSBuZXh0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICAgIGlmIChuZXh0Rm9jdXNlZEluZGV4ID4gLTEpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkIHZhbHVlIGlzIHN0aWxsIGluIHRoZSBzZWxlY3RWYWx1ZSwgcmV0dXJuIGl0XG4gICAgICByZXR1cm4gZm9jdXNlZFZhbHVlO1xuICAgIH0gZWxzZSBpZiAobGFzdEZvY3VzZWRJbmRleCA8IG5leHRTZWxlY3RWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkVmFsdWUgaXMgbm90IHByZXNlbnQgaW4gdGhlIG5leHQgc2VsZWN0VmFsdWUgYXJyYXkgYnlcbiAgICAgIC8vIHJlZmVyZW5jZSwgc28gcmV0dXJuIHRoZSBuZXcgdmFsdWUgYXQgdGhlIHNhbWUgaW5kZXhcbiAgICAgIHJldHVybiBuZXh0U2VsZWN0VmFsdWVbbGFzdEZvY3VzZWRJbmRleF07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RGb2N1c2VkT3B0aW9uID0gc3RhdGUuZm9jdXNlZE9wdGlvbjtcbiAgcmV0dXJuIGxhc3RGb2N1c2VkT3B0aW9uICYmIG9wdGlvbnMuaW5kZXhPZihsYXN0Rm9jdXNlZE9wdGlvbikgPiAtMSA/IGxhc3RGb2N1c2VkT3B0aW9uIDogb3B0aW9uc1swXTtcbn1cbnZhciBnZXRGb2N1c2VkT3B0aW9uSWQgPSBmdW5jdGlvbiBnZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzZWRPcHRpb24pIHtcbiAgdmFyIF9mb2N1c2FibGVPcHRpb25zV2l0aDtcbiAgdmFyIGZvY3VzZWRPcHRpb25JZCA9IChfZm9jdXNhYmxlT3B0aW9uc1dpdGggPSBmb2N1c2FibGVPcHRpb25zV2l0aElkcy5maW5kKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmRhdGEgPT09IGZvY3VzZWRPcHRpb247XG4gIH0pKSA9PT0gbnVsbCB8fCBfZm9jdXNhYmxlT3B0aW9uc1dpdGggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mb2N1c2FibGVPcHRpb25zV2l0aC5pZDtcbiAgcmV0dXJuIGZvY3VzZWRPcHRpb25JZCB8fCBudWxsO1xufTtcbnZhciBnZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIGdldE9wdGlvbkxhYmVsKHByb3BzLCBkYXRhKSB7XG4gIHJldHVybiBwcm9wcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbn07XG52YXIgZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiBnZXRPcHRpb25WYWx1ZShwcm9wcywgZGF0YSkge1xuICByZXR1cm4gcHJvcHMuZ2V0T3B0aW9uVmFsdWUoZGF0YSk7XG59O1xuZnVuY3Rpb24gX2lzT3B0aW9uRGlzYWJsZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9wcy5pc09wdGlvbkRpc2FibGVkID09PSAnZnVuY3Rpb24nID8gcHJvcHMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24sIHNlbGVjdFZhbHVlKSA6IGZhbHNlO1xufVxuZnVuY3Rpb24gX2lzT3B0aW9uU2VsZWN0ZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgaWYgKHNlbGVjdFZhbHVlLmluZGV4T2Yob3B0aW9uKSA+IC0xKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiBwcm9wcy5pc09wdGlvblNlbGVjdGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb3BzLmlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZSA9IGdldE9wdGlvblZhbHVlKHByb3BzLCBvcHRpb24pO1xuICByZXR1cm4gc2VsZWN0VmFsdWUuc29tZShmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBnZXRPcHRpb25WYWx1ZShwcm9wcywgaSkgPT09IGNhbmRpZGF0ZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBfZmlsdGVyT3B0aW9uKHByb3BzLCBvcHRpb24sIGlucHV0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLmZpbHRlck9wdGlvbiA/IHByb3BzLmZpbHRlck9wdGlvbihvcHRpb24sIGlucHV0VmFsdWUpIDogdHJ1ZTtcbn1cbnZhciBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zID0gZnVuY3Rpb24gc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykge1xuICB2YXIgaGlkZVNlbGVjdGVkT3B0aW9ucyA9IHByb3BzLmhpZGVTZWxlY3RlZE9wdGlvbnMsXG4gICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGk7XG4gIGlmIChoaWRlU2VsZWN0ZWRPcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICByZXR1cm4gaGlkZVNlbGVjdGVkT3B0aW9ucztcbn07XG52YXIgaW5zdGFuY2VJZCA9IDE7XG52YXIgU2VsZWN0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTZWxlY3QsIF9Db21wb25lbnQpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNlbGVjdCk7XG4gIC8vIE1pc2MuIEluc3RhbmNlIFByb3BlcnRpZXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gVE9ET1xuXG4gIC8vIFJlZnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGZ1bmN0aW9uIFNlbGVjdChfcHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNlbGVjdCk7XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBfcHJvcHMpO1xuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgYXJpYVNlbGVjdGlvbjogbnVsbCxcbiAgICAgIGZvY3VzZWRPcHRpb246IG51bGwsXG4gICAgICBmb2N1c2VkT3B0aW9uSWQ6IG51bGwsXG4gICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogW10sXG4gICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICBpbnB1dElzSGlkZGVuOiBmYWxzZSxcbiAgICAgIGlzRm9jdXNlZDogZmFsc2UsXG4gICAgICBzZWxlY3RWYWx1ZTogW10sXG4gICAgICBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZTogZmFsc2UsXG4gICAgICBwcmV2V2FzRm9jdXNlZDogZmFsc2UsXG4gICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZQcm9wczogdW5kZWZpbmVkLFxuICAgICAgaW5zdGFuY2VQcmVmaXg6ICcnXG4gICAgfTtcbiAgICBfdGhpcy5ibG9ja09wdGlvbkhvdmVyID0gZmFsc2U7XG4gICAgX3RoaXMuaXNDb21wb3NpbmcgPSBmYWxzZTtcbiAgICBfdGhpcy5jb21tb25Qcm9wcyA9IHZvaWQgMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hZID0gMDtcbiAgICBfdGhpcy5vcGVuQWZ0ZXJGb2N1cyA9IGZhbHNlO1xuICAgIF90aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSB2b2lkIDA7XG4gICAgX3RoaXMuaXNBcHBsZURldmljZSA9IGlzQXBwbGVEZXZpY2UoKTtcbiAgICBfdGhpcy5jb250cm9sUmVmID0gbnVsbDtcbiAgICBfdGhpcy5nZXRDb250cm9sUmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMuY29udHJvbFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzZWRPcHRpb25SZWYgPSBudWxsO1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25SZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5mb2N1c2VkT3B0aW9uUmVmID0gcmVmO1xuICAgIH07XG4gICAgX3RoaXMubWVudUxpc3RSZWYgPSBudWxsO1xuICAgIF90aGlzLmdldE1lbnVMaXN0UmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMubWVudUxpc3RSZWYgPSByZWY7XG4gICAgfTtcbiAgICBfdGhpcy5pbnB1dFJlZiA9IG51bGw7XG4gICAgX3RoaXMuZ2V0SW5wdXRSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5pbnB1dFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzID0gX3RoaXMuZm9jdXNJbnB1dDtcbiAgICBfdGhpcy5ibHVyID0gX3RoaXMuYmx1cklucHV0O1xuICAgIF90aGlzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgb25DaGFuZ2UgPSBfdGhpcyRwcm9wcy5vbkNoYW5nZSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzLm5hbWU7XG4gICAgICBhY3Rpb25NZXRhLm5hbWUgPSBuYW1lO1xuICAgICAgX3RoaXMuYXJpYU9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9O1xuICAgIF90aGlzLnNldFZhbHVlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb24sIG9wdGlvbikge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICBjbG9zZU1lbnVPblNlbGVjdCA9IF90aGlzJHByb3BzMi5jbG9zZU1lbnVPblNlbGVjdCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMi5pc011bHRpLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHMyLmlucHV0VmFsdWU7XG4gICAgICBfdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ3NldC12YWx1ZScsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIGlmIChjbG9zZU1lbnVPblNlbGVjdCkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIC8vIHdoZW4gdGhlIHNlbGVjdCB2YWx1ZSBzaG91bGQgY2hhbmdlLCB3ZSBzaG91bGQgcmVzZXQgZm9jdXNlZFZhbHVlXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlLCB7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBvcHRpb246IG9wdGlvblxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5zZWxlY3RPcHRpb24gPSBmdW5jdGlvbiAobmV3VmFsdWUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgYmx1cklucHV0T25TZWxlY3QgPSBfdGhpcyRwcm9wczMuYmx1cklucHV0T25TZWxlY3QsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMy5uYW1lO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZGVzZWxlY3RlZCA9IGlzTXVsdGkgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChuZXdWYWx1ZSwgc2VsZWN0VmFsdWUpO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSBfdGhpcy5pc09wdGlvbkRpc2FibGVkKG5ld1ZhbHVlLCBzZWxlY3RWYWx1ZSk7XG4gICAgICBpZiAoZGVzZWxlY3RlZCkge1xuICAgICAgICB2YXIgY2FuZGlkYXRlID0gX3RoaXMuZ2V0T3B0aW9uVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICBfdGhpcy5zZXRWYWx1ZShtdWx0aVZhbHVlQXNWYWx1ZShzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZ2V0T3B0aW9uVmFsdWUoaSkgIT09IGNhbmRpZGF0ZTtcbiAgICAgICAgfSkpLCAnZGVzZWxlY3Qtb3B0aW9uJywgbmV3VmFsdWUpO1xuICAgICAgfSBlbHNlIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgICAvLyBTZWxlY3Qgb3B0aW9uIGlmIG9wdGlvbiBpcyBub3QgZGlzYWJsZWRcbiAgICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShtdWx0aVZhbHVlQXNWYWx1ZShbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHNlbGVjdFZhbHVlKSwgW25ld1ZhbHVlXSkpLCAnc2VsZWN0LW9wdGlvbicsIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShzaW5nbGVWYWx1ZUFzVmFsdWUobmV3VmFsdWUpLCAnc2VsZWN0LW9wdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5hcmlhT25DaGFuZ2Uoc2luZ2xlVmFsdWVBc1ZhbHVlKG5ld1ZhbHVlKSwge1xuICAgICAgICAgIGFjdGlvbjogJ3NlbGVjdC1vcHRpb24nLFxuICAgICAgICAgIG9wdGlvbjogbmV3VmFsdWUsXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGJsdXJJbnB1dE9uU2VsZWN0KSB7XG4gICAgICAgIF90aGlzLmJsdXJJbnB1dCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMucmVtb3ZlVmFsdWUgPSBmdW5jdGlvbiAocmVtb3ZlZFZhbHVlKSB7XG4gICAgICB2YXIgaXNNdWx0aSA9IF90aGlzLnByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBjYW5kaWRhdGUgPSBfdGhpcy5nZXRPcHRpb25WYWx1ZShyZW1vdmVkVmFsdWUpO1xuICAgICAgdmFyIG5ld1ZhbHVlQXJyYXkgPSBzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmdldE9wdGlvblZhbHVlKGkpICE9PSBjYW5kaWRhdGU7XG4gICAgICB9KTtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IHZhbHVlVGVybmFyeShpc011bHRpLCBuZXdWYWx1ZUFycmF5LCBuZXdWYWx1ZUFycmF5WzBdIHx8IG51bGwpO1xuICAgICAgX3RoaXMub25DaGFuZ2UobmV3VmFsdWUsIHtcbiAgICAgICAgYWN0aW9uOiAncmVtb3ZlLXZhbHVlJyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlOiByZW1vdmVkVmFsdWVcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH07XG4gICAgX3RoaXMuY2xlYXJWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgICAgX3RoaXMub25DaGFuZ2UodmFsdWVUZXJuYXJ5KF90aGlzLnByb3BzLmlzTXVsdGksIFtdLCBudWxsKSwge1xuICAgICAgICBhY3Rpb246ICdjbGVhcicsXG4gICAgICAgIHJlbW92ZWRWYWx1ZXM6IHNlbGVjdFZhbHVlXG4gICAgICB9KTtcbiAgICB9O1xuICAgIF90aGlzLnBvcFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGlzTXVsdGkgPSBfdGhpcy5wcm9wcy5pc011bHRpO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgbGFzdFNlbGVjdGVkVmFsdWUgPSBzZWxlY3RWYWx1ZVtzZWxlY3RWYWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgIHZhciBuZXdWYWx1ZUFycmF5ID0gc2VsZWN0VmFsdWUuc2xpY2UoMCwgc2VsZWN0VmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICB2YXIgbmV3VmFsdWUgPSB2YWx1ZVRlcm5hcnkoaXNNdWx0aSwgbmV3VmFsdWVBcnJheSwgbmV3VmFsdWVBcnJheVswXSB8fCBudWxsKTtcbiAgICAgIGlmIChsYXN0U2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICBfdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSwge1xuICAgICAgICAgIGFjdGlvbjogJ3BvcC12YWx1ZScsXG4gICAgICAgICAgcmVtb3ZlZFZhbHVlOiBsYXN0U2VsZWN0ZWRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25JZCA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICByZXR1cm4gZ2V0Rm9jdXNlZE9wdGlvbklkKF90aGlzLnN0YXRlLmZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkRm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMoYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlKSwgX3RoaXMuZ2V0RWxlbWVudElkKCdvcHRpb24nKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICB9O1xuICAgIF90aGlzLmN4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xhc3NOYW1lcy5hcHBseSh2b2lkIDAsIFtfdGhpcy5wcm9wcy5jbGFzc05hbWVQcmVmaXhdLmNvbmNhdChhcmdzKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICByZXR1cm4gZ2V0T3B0aW9uTGFiZWwoX3RoaXMucHJvcHMsIGRhdGEpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgcmV0dXJuIGdldE9wdGlvblZhbHVlKF90aGlzLnByb3BzLCBkYXRhKTtcbiAgICB9O1xuICAgIF90aGlzLmdldFN0eWxlcyA9IGZ1bmN0aW9uIChrZXksIHByb3BzKSB7XG4gICAgICB2YXIgdW5zdHlsZWQgPSBfdGhpcy5wcm9wcy51bnN0eWxlZDtcbiAgICAgIHZhciBiYXNlID0gZGVmYXVsdFN0eWxlc1trZXldKHByb3BzLCB1bnN0eWxlZCk7XG4gICAgICBiYXNlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICAgIHZhciBjdXN0b20gPSBfdGhpcy5wcm9wcy5zdHlsZXNba2V5XTtcbiAgICAgIHJldHVybiBjdXN0b20gPyBjdXN0b20oYmFzZSwgcHJvcHMpIDogYmFzZTtcbiAgICB9O1xuICAgIF90aGlzLmdldENsYXNzTmFtZXMgPSBmdW5jdGlvbiAoa2V5LCBwcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzJGNsYXNzTmFtZSwgX3RoaXMkcHJvcHMkY2xhc3NOYW1lMjtcbiAgICAgIHJldHVybiAoX3RoaXMkcHJvcHMkY2xhc3NOYW1lID0gKF90aGlzJHByb3BzJGNsYXNzTmFtZTIgPSBfdGhpcy5wcm9wcy5jbGFzc05hbWVzKVtrZXldKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGNsYXNzTmFtZS5jYWxsKF90aGlzJHByb3BzJGNsYXNzTmFtZTIsIHByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEVsZW1lbnRJZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQoX3RoaXMuc3RhdGUuaW5zdGFuY2VQcmVmaXgsIFwiLVwiKS5jb25jYXQoZWxlbWVudCk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDb21wb25lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRDb21wb25lbnRzKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDYXRlZ29yaXplZE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMubWVudUlzT3BlbiA/IF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5tZW51SXNPcGVuID8gX3RoaXMuYnVpbGRGb2N1c2FibGVPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmFyaWFPbkNoYW5nZSA9IGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBhcmlhU2VsZWN0aW9uOiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfSwgYWN0aW9uTWV0YSlcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25NZW51TW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uTWVudU1vdXNlTW92ZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciA9IGZhbHNlO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sTW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAvLyBFdmVudCBjYXB0dXJlZCBieSBkcm9wZG93biBpbmRpY2F0b3JcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcGVuTWVudU9uQ2xpY2sgPSBfdGhpcy5wcm9wcy5vcGVuTWVudU9uQ2xpY2s7XG4gICAgICBpZiAoIV90aGlzLnN0YXRlLmlzRm9jdXNlZCkge1xuICAgICAgICBpZiAob3Blbk1lbnVPbkNsaWNrKSB7XG4gICAgICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH0gZWxzZSBpZiAoIV90aGlzLnByb3BzLm1lbnVJc09wZW4pIHtcbiAgICAgICAgaWYgKG9wZW5NZW51T25DbGljaykge1xuICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF90aGlzLnByb3BzLmlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNC5pc011bHRpLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM0Lm1lbnVJc09wZW47XG4gICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLm9wZW5BZnRlckZvY3VzID0gZmFsc2U7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RvdWNoZW5kJykge1xuICAgICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uU2Nyb2xsID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAodHlwZW9mIF90aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGlzRG9jdW1lbnRFbGVtZW50KGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICBfdGhpcy5wcm9wcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBfdGhpcy5wcm9wcy5jbG9zZU1lbnVPblNjcm9sbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAoX3RoaXMucHJvcHMuY2xvc2VNZW51T25TY3JvbGwoZXZlbnQpKSB7XG4gICAgICAgICAgX3RoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvblN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuaXNDb21wb3NpbmcgPSB0cnVlO1xuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvbkVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmlzQ29tcG9zaW5nID0gZmFsc2U7XG4gICAgfTtcbiAgICBfdGhpcy5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgIHZhciB0b3VjaGVzID0gX3JlZjIudG91Y2hlcztcbiAgICAgIHZhciB0b3VjaCA9IHRvdWNoZXMgJiYgdG91Y2hlcy5pdGVtKDApO1xuICAgICAgaWYgKCF0b3VjaCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gdG91Y2guY2xpZW50WDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSB0b3VjaC5jbGllbnRZO1xuICAgICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hNb3ZlID0gZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IF9yZWYzLnRvdWNoZXM7XG4gICAgICB2YXIgdG91Y2ggPSB0b3VjaGVzICYmIHRvdWNoZXMuaXRlbSgwKTtcbiAgICAgIGlmICghdG91Y2gpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGRlbHRhWCA9IE1hdGguYWJzKHRvdWNoLmNsaWVudFggLSBfdGhpcy5pbml0aWFsVG91Y2hYKTtcbiAgICAgIHZhciBkZWx0YVkgPSBNYXRoLmFicyh0b3VjaC5jbGllbnRZIC0gX3RoaXMuaW5pdGlhbFRvdWNoWSk7XG4gICAgICB2YXIgbW92ZVRocmVzaG9sZCA9IDU7XG4gICAgICBfdGhpcy51c2VySXNEcmFnZ2luZyA9IGRlbHRhWCA+IG1vdmVUaHJlc2hvbGQgfHwgZGVsdGFZID4gbW92ZVRocmVzaG9sZDtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgICAvLyBjbG9zZSB0aGUgbWVudSBpZiB0aGUgdXNlciB0YXBzIG91dHNpZGVcbiAgICAgIC8vIHdlJ3JlIGNoZWNraW5nIG9uIGV2ZW50LnRhcmdldCBoZXJlIGluc3RlYWQgb2YgZXZlbnQuY3VycmVudFRhcmdldCwgYmVjYXVzZSB3ZSB3YW50IHRvIGFzc2VydCBpbmZvcm1hdGlvblxuICAgICAgLy8gb24gZXZlbnRzIG9uIGNoaWxkIGVsZW1lbnRzLCBub3QgdGhlIGRvY3VtZW50ICh3aGljaCB3ZSd2ZSBhdHRhY2hlZCB0aGlzIGhhbmRsZXIgdG8pLlxuICAgICAgaWYgKF90aGlzLmNvbnRyb2xSZWYgJiYgIV90aGlzLmNvbnRyb2xSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiBfdGhpcy5tZW51TGlzdFJlZiAmJiAhX3RoaXMubWVudUxpc3RSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICBfdGhpcy5ibHVySW5wdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzZXQgbW92ZSB2YXJzXG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSAwO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuICAgICAgX3RoaXMub25Db250cm9sTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkNsZWFySW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLmhhbmRsZUlucHV0Q2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgdmFyIGlucHV0VmFsdWUgPSBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwge1xuICAgICAgICBhY3Rpb246ICdpbnB1dC1jaGFuZ2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogcHJldklucHV0VmFsdWVcbiAgICAgIH0pO1xuICAgICAgaWYgKCFfdGhpcy5wcm9wcy5tZW51SXNPcGVuKSB7XG4gICAgICAgIF90aGlzLm9uTWVudU9wZW4oKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRGb2N1cyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25Gb2N1cyhldmVudCk7XG4gICAgICB9XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBpZiAoX3RoaXMub3BlbkFmdGVyRm9jdXMgfHwgX3RoaXMucHJvcHMub3Blbk1lbnVPbkZvY3VzKSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRCbHVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgaWYgKF90aGlzLm1lbnVMaXN0UmVmICYmIF90aGlzLm1lbnVMaXN0UmVmLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIF90aGlzLmlucHV0UmVmLmZvY3VzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25CbHVyKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgYWN0aW9uOiAnaW5wdXQtYmx1cicsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBwcmV2SW5wdXRWYWx1ZVxuICAgICAgfSk7XG4gICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25PcHRpb25Ib3ZlciA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICBpZiAoX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciB8fCBfdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uID09PSBmb2N1c2VkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcHRpb25zID0gX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb25JbmRleCA9IG9wdGlvbnMuaW5kZXhPZihmb2N1c2VkT3B0aW9uKTtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiBmb2N1c2VkT3B0aW9uSW5kZXggPiAtMSA/IF90aGlzLmdldEZvY3VzZWRPcHRpb25JZChmb2N1c2VkT3B0aW9uKSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMuc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLm9uVmFsdWVJbnB1dEZvY3VzID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBfdGhpcy5mb2N1cygpO1xuICAgIH07XG4gICAgX3RoaXMub25LZXlEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczUuaXNNdWx0aSxcbiAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlID0gX3RoaXMkcHJvcHM1LmJhY2tzcGFjZVJlbW92ZXNWYWx1ZSxcbiAgICAgICAgZXNjYXBlQ2xlYXJzVmFsdWUgPSBfdGhpcyRwcm9wczUuZXNjYXBlQ2xlYXJzVmFsdWUsXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczUuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNDbGVhcmFibGUgPSBfdGhpcyRwcm9wczUuaXNDbGVhcmFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczUuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNS5tZW51SXNPcGVuLFxuICAgICAgICBvbktleURvd24gPSBfdGhpcyRwcm9wczUub25LZXlEb3duLFxuICAgICAgICB0YWJTZWxlY3RzVmFsdWUgPSBfdGhpcyRwcm9wczUudGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgICBvcGVuTWVudU9uRm9jdXMgPSBfdGhpcyRwcm9wczUub3Blbk1lbnVPbkZvY3VzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gX3RoaXMuc3RhdGUsXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZS5mb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZS5mb2N1c2VkVmFsdWUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKHR5cGVvZiBvbktleURvd24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25LZXlEb3duKGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQmxvY2sgb3B0aW9uIGhvdmVyIGV2ZW50cyB3aGVuIHRoZSB1c2VyIGhhcyBqdXN0IHByZXNzZWQgYSBrZXlcbiAgICAgIF90aGlzLmJsb2NrT3B0aW9uSG92ZXIgPSB0cnVlO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICBpZiAoIWlzTXVsdGkgfHwgaW5wdXRWYWx1ZSkgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzVmFsdWUoJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgIGlmICghaXNNdWx0aSB8fCBpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNWYWx1ZSgnbmV4dCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgIGlmIChpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgaWYgKGZvY3VzZWRWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMucmVtb3ZlVmFsdWUoZm9jdXNlZFZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFiYWNrc3BhY2VSZW1vdmVzVmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChpc011bHRpKSB7XG4gICAgICAgICAgICAgIF90aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2xlYXJhYmxlKSB7XG4gICAgICAgICAgICAgIF90aGlzLmNsZWFyVmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgaWYgKF90aGlzLmlzQ29tcG9zaW5nKSByZXR1cm47XG4gICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8ICFtZW51SXNPcGVuIHx8ICF0YWJTZWxlY3RzVmFsdWUgfHwgIWZvY3VzZWRPcHRpb24gfHxcbiAgICAgICAgICAvLyBkb24ndCBjYXB0dXJlIHRoZSBldmVudCBpZiB0aGUgbWVudSBvcGVucyBvbiBmb2N1cyBhbmQgdGhlIGZvY3VzZWRcbiAgICAgICAgICAvLyBvcHRpb24gaXMgYWxyZWFkeSBzZWxlY3RlZDsgaXQgYnJlYWtzIHRoZSBmbG93IG9mIG5hdmlnYXRpb25cbiAgICAgICAgICBvcGVuTWVudU9uRm9jdXMgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChmb2N1c2VkT3B0aW9uLCBzZWxlY3RWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDIyOSkge1xuICAgICAgICAgICAgLy8gaWdub3JlIHRoZSBrZXlkb3duIGV2ZW50IGZyb20gYW4gSW5wdXQgTWV0aG9kIEVkaXRvcihJTUUpXG4gICAgICAgICAgICAvLyByZWYuIGh0dHBzOi8vd3d3LnczLm9yZy9UUi91aWV2ZW50cy8jZGV0ZXJtaW5lLWtleWRvd24ta2V5dXAta2V5Q29kZVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHJldHVybjtcbiAgICAgICAgICAgIGlmIChfdGhpcy5pc0NvbXBvc2luZykgcmV0dXJuO1xuICAgICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgICAgICAgYWN0aW9uOiAnbWVudS1jbG9zZScsXG4gICAgICAgICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uTWVudUNsb3NlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0NsZWFyYWJsZSAmJiBlc2NhcGVDbGVhcnNWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgLy8gc3BhY2VcbiAgICAgICAgICBpZiAoaW5wdXRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZm9jdXNlZE9wdGlvbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLnNlbGVjdE9wdGlvbihmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgaWYgKG1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCd1cCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5vcGVuTWVudSgnbGFzdCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ2Rvd24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdldXAnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdlZG93bicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignZmlyc3QnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignbGFzdCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcbiAgICBfdGhpcy5zdGF0ZS5pbnN0YW5jZVByZWZpeCA9ICdyZWFjdC1zZWxlY3QtJyArIChfdGhpcy5wcm9wcy5pbnN0YW5jZUlkIHx8ICsraW5zdGFuY2VJZCk7XG4gICAgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUgPSBjbGVhblZhbHVlKF9wcm9wcy52YWx1ZSk7XG4gICAgLy8gU2V0IGZvY3VzZWRPcHRpb24gaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gaW5pdCAoZS5nLiBkZWZhdWx0TWVudUlzT3BlbilcbiAgICBpZiAoX3Byb3BzLm1lbnVJc09wZW4gJiYgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUubGVuZ3RoKSB7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBfdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zV2l0aElkcygpO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSBfdGhpcy5idWlsZEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIHZhciBvcHRpb25JbmRleCA9IGZvY3VzYWJsZU9wdGlvbnMuaW5kZXhPZihfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZVswXSk7XG4gICAgICBfdGhpcy5zdGF0ZS5mb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiA9IGZvY3VzYWJsZU9wdGlvbnNbb3B0aW9uSW5kZXhdO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2FibGVPcHRpb25zW29wdGlvbkluZGV4XSk7XG4gICAgfVxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU2VsZWN0LCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMuc3RhcnRMaXN0ZW5pbmdDb21wb3NpdGlvbigpO1xuICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgLy8gTGlzdGVuIHRvIGFsbCBzY3JvbGwgZXZlbnRzLCBhbmQgZmlsdGVyIHRoZW0gb3V0IGluc2lkZSBvZiAnb25TY3JvbGwnXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTY3JvbGwgZm9jdXNlZE9wdGlvbiBpbnRvIHZpZXcgaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gbW91bnQgKGUuZy4gZGVmYXVsdE1lbnVJc09wZW4pXG4gICAgICBpZiAodGhpcy5wcm9wcy5tZW51SXNPcGVuICYmIHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiAmJiB0aGlzLm1lbnVMaXN0UmVmICYmIHRoaXMuZm9jdXNlZE9wdGlvblJlZikge1xuICAgICAgICBzY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczYuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNi5tZW51SXNPcGVuO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKFxuICAgICAgLy8gZW5zdXJlIGZvY3VzIGlzIHJlc3RvcmVkIGNvcnJlY3RseSB3aGVuIHRoZSBjb250cm9sIGJlY29tZXMgZW5hYmxlZFxuICAgICAgaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkIHx8XG4gICAgICAvLyBlbnN1cmUgZm9jdXMgaXMgb24gdGhlIElucHV0IHdoZW4gdGhlIG1lbnUgb3BlbnNcbiAgICAgIGlzRm9jdXNlZCAmJiBtZW51SXNPcGVuICYmICFwcmV2UHJvcHMubWVudUlzT3Blbikge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0ZvY3VzZWQgJiYgaXNEaXNhYmxlZCAmJiAhcHJldlByb3BzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGJsdXJyZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbW1hdGljYWxseSBkaXNhYmxlZCB3aGlsZSBmb2N1c2VkXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGZhbHNlXG4gICAgICAgIH0sIHRoaXMub25NZW51Q2xvc2UpO1xuICAgICAgfSBlbHNlIGlmICghaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkICYmIHRoaXMuaW5wdXRSZWYgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGZvY3VzZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbWF0aWNhbGx5IHJlLWVuYWJsZWQgd2hpbGUgZm9jdXNlZCAoRmlyZWZveClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gc2Nyb2xsIHRoZSBmb2N1c2VkIG9wdGlvbiBpbnRvIHZpZXcgaWYgbmVjZXNzYXJ5XG4gICAgICBpZiAodGhpcy5tZW51TGlzdFJlZiAmJiB0aGlzLmZvY3VzZWRPcHRpb25SZWYgJiYgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSkge1xuICAgICAgICBzY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nQ29tcG9zaXRpb24oKTtcbiAgICAgIHRoaXMuc3RvcExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENvbnN1bWVyIEhhbmRsZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIH0sIHtcbiAgICBrZXk6IFwib25NZW51T3BlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbk1lbnVPcGVuKCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1lbnVPcGVuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uTWVudUNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ21lbnUtY2xvc2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogdGhpcy5wcm9wcy5pbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25JbnB1dENoYW5nZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbklucHV0Q2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB0aGlzLnByb3BzLm9uSW5wdXRDaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE1ldGhvZHNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJmb2N1c0lucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvY3VzSW5wdXQoKSB7XG4gICAgICBpZiAoIXRoaXMuaW5wdXRSZWYpIHJldHVybjtcbiAgICAgIHRoaXMuaW5wdXRSZWYuZm9jdXMoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmx1cklucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJsdXJJbnB1dCgpIHtcbiAgICAgIGlmICghdGhpcy5pbnB1dFJlZikgcmV0dXJuO1xuICAgICAgdGhpcy5pbnB1dFJlZi5ibHVyKCk7XG4gICAgfVxuXG4gICAgLy8gYWxpYXNlZCBmb3IgY29uc3VtZXJzXG4gIH0sIHtcbiAgICBrZXk6IFwib3Blbk1lbnVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb3Blbk1lbnUoZm9jdXNPcHRpb24pIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlMiA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUyLnNlbGVjdFZhbHVlLFxuICAgICAgICBpc0ZvY3VzZWQgPSBfdGhpcyRzdGF0ZTIuaXNGb2N1c2VkO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSB0aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIG9wZW5BdEluZGV4ID0gZm9jdXNPcHRpb24gPT09ICdmaXJzdCcgPyAwIDogZm9jdXNhYmxlT3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSBmb2N1c2FibGVPcHRpb25zLmluZGV4T2Yoc2VsZWN0VmFsdWVbMF0pO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgb3BlbkF0SW5kZXggPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIG9ubHkgc2Nyb2xsIGlmIHRoZSBtZW51IGlzbid0IGFscmVhZHkgb3BlblxuICAgICAgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSA9ICEoaXNGb2N1c2VkICYmIHRoaXMubWVudUxpc3RSZWYpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0sXG4gICAgICAgIGZvY3VzZWRPcHRpb25JZDogdGhpcy5nZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0pXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIub25NZW51T3BlbigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvY3VzVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNWYWx1ZShkaXJlY3Rpb24pIHtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTMgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlMy5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGUzLmZvY3VzZWRWYWx1ZTtcblxuICAgICAgLy8gT25seSBtdWx0aXNlbGVjdHMgc3VwcG9ydCB2YWx1ZSBmb2N1c2luZ1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHJldHVybjtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBudWxsXG4gICAgICB9KTtcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBzZWxlY3RWYWx1ZS5pbmRleE9mKGZvY3VzZWRWYWx1ZSk7XG4gICAgICBpZiAoIWZvY3VzZWRWYWx1ZSkge1xuICAgICAgICBmb2N1c2VkSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBzZWxlY3RWYWx1ZS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG5leHRGb2N1cyA9IC0xO1xuICAgICAgaWYgKCFzZWxlY3RWYWx1ZS5sZW5ndGgpIHJldHVybjtcbiAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAvLyBkb24ndCBjeWNsZSBmcm9tIHRoZSBzdGFydCB0byB0aGUgZW5kXG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9jdXNlZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgLy8gaWYgbm90aGluZyBpcyBmb2N1c2VkLCBmb2N1cyB0aGUgbGFzdCB2YWx1ZSBmaXJzdFxuICAgICAgICAgICAgbmV4dEZvY3VzID0gbGFzdEluZGV4O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbmV4dCc6XG4gICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA+IC0xICYmIGZvY3VzZWRJbmRleCA8IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgbmV4dEZvY3VzID0gZm9jdXNlZEluZGV4ICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbjogbmV4dEZvY3VzICE9PSAtMSxcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBzZWxlY3RWYWx1ZVtuZXh0Rm9jdXNdXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9jdXNPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNPcHRpb24oKSB7XG4gICAgICB2YXIgZGlyZWN0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnZmlyc3QnO1xuICAgICAgdmFyIHBhZ2VTaXplID0gdGhpcy5wcm9wcy5wYWdlU2l6ZTtcbiAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uO1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLmdldEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIGlmICghb3B0aW9ucy5sZW5ndGgpIHJldHVybjtcbiAgICAgIHZhciBuZXh0Rm9jdXMgPSAwOyAvLyBoYW5kbGVzICdmaXJzdCdcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBvcHRpb25zLmluZGV4T2YoZm9jdXNlZE9wdGlvbik7XG4gICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHtcbiAgICAgICAgZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICB9XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCA+IDAgPyBmb2N1c2VkSW5kZXggLSAxIDogb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSAoZm9jdXNlZEluZGV4ICsgMSkgJSBvcHRpb25zLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncGFnZXVwJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA8IDApIG5leHRGb2N1cyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggKyBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA+IG9wdGlvbnMubGVuZ3RoIC0gMSkgbmV4dEZvY3VzID0gb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsYXN0Jykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBvcHRpb25zW25leHRGb2N1c10sXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiB0aGlzLmdldEZvY3VzZWRPcHRpb25JZChvcHRpb25zW25leHRGb2N1c10pXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGhlbWVcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBHZXR0ZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBmdW5jdGlvbiBnZXRUaGVtZSgpIHtcbiAgICAgIC8vIFVzZSB0aGUgZGVmYXVsdCB0aGVtZSBpZiB0aGVyZSBhcmUgbm8gY3VzdG9taXNhdGlvbnMuXG4gICAgICBpZiAoIXRoaXMucHJvcHMudGhlbWUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRUaGVtZTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSB0aGVtZSBwcm9wIGlzIGEgZnVuY3Rpb24sIGFzc3VtZSB0aGUgZnVuY3Rpb25cbiAgICAgIC8vIGtub3dzIGhvdyB0byBtZXJnZSB0aGUgcGFzc2VkLWluIGRlZmF1bHQgdGhlbWUgd2l0aFxuICAgICAgLy8gaXRzIG93biBtb2RpZmljYXRpb25zLlxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnRoZW1lKGRlZmF1bHRUaGVtZSk7XG4gICAgICB9XG4gICAgICAvLyBPdGhlcndpc2UsIGlmIGEgcGxhaW4gdGhlbWUgb2JqZWN0IHdhcyBwYXNzZWQgaW4sXG4gICAgICAvLyBvdmVybGF5IGl0IHdpdGggdGhlIGRlZmF1bHQgdGhlbWUuXG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0VGhlbWUpLCB0aGlzLnByb3BzLnRoZW1lKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tbW9uUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29tbW9uUHJvcHMoKSB7XG4gICAgICB2YXIgY2xlYXJWYWx1ZSA9IHRoaXMuY2xlYXJWYWx1ZSxcbiAgICAgICAgY3ggPSB0aGlzLmN4LFxuICAgICAgICBnZXRTdHlsZXMgPSB0aGlzLmdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lcyA9IHRoaXMuZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWUgPSB0aGlzLmdldFZhbHVlLFxuICAgICAgICBzZWxlY3RPcHRpb24gPSB0aGlzLnNlbGVjdE9wdGlvbixcbiAgICAgICAgc2V0VmFsdWUgPSB0aGlzLnNldFZhbHVlLFxuICAgICAgICBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICB2YXIgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGksXG4gICAgICAgIGlzUnRsID0gcHJvcHMuaXNSdGwsXG4gICAgICAgIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zO1xuICAgICAgdmFyIGhhc1ZhbHVlID0gdGhpcy5oYXNWYWx1ZSgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXJWYWx1ZTogY2xlYXJWYWx1ZSxcbiAgICAgICAgY3g6IGN4LFxuICAgICAgICBnZXRTdHlsZXM6IGdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWU6IGdldFZhbHVlLFxuICAgICAgICBoYXNWYWx1ZTogaGFzVmFsdWUsXG4gICAgICAgIGlzTXVsdGk6IGlzTXVsdGksXG4gICAgICAgIGlzUnRsOiBpc1J0bCxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgc2VsZWN0T3B0aW9uOiBzZWxlY3RPcHRpb24sXG4gICAgICAgIHNlbGVjdFByb3BzOiBwcm9wcyxcbiAgICAgICAgc2V0VmFsdWU6IHNldFZhbHVlLFxuICAgICAgICB0aGVtZTogdGhpcy5nZXRUaGVtZSgpXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNWYWx1ZSgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICByZXR1cm4gc2VsZWN0VmFsdWUubGVuZ3RoID4gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzT3B0aW9uc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNPcHRpb25zKCkge1xuICAgICAgcmV0dXJuICEhdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zKCkubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc0NsZWFyYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0NsZWFyYWJsZSgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0NsZWFyYWJsZSA9IF90aGlzJHByb3BzNy5pc0NsZWFyYWJsZSxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNy5pc011bHRpO1xuXG4gICAgICAvLyBzaW5nbGUgc2VsZWN0LCBieSBkZWZhdWx0LCBJUyBOT1QgY2xlYXJhYmxlXG4gICAgICAvLyBtdWx0aSBzZWxlY3QsIGJ5IGRlZmF1bHQsIElTIGNsZWFyYWJsZVxuICAgICAgaWYgKGlzQ2xlYXJhYmxlID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICAgICAgcmV0dXJuIGlzQ2xlYXJhYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvbkRpc2FibGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvbkRpc2FibGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvblNlbGVjdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvblNlbGVjdGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaWx0ZXJPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlsdGVyT3B0aW9uKG9wdGlvbiwgaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9maWx0ZXJPcHRpb24odGhpcy5wcm9wcywgb3B0aW9uLCBpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0T3B0aW9uTGFiZWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9ybWF0T3B0aW9uTGFiZWwoZGF0YSwgY29udGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBfaW5wdXRWYWx1ZSA9IHRoaXMucHJvcHMuaW5wdXRWYWx1ZTtcbiAgICAgICAgdmFyIF9zZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsKGRhdGEsIHtcbiAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgIGlucHV0VmFsdWU6IF9pbnB1dFZhbHVlLFxuICAgICAgICAgIHNlbGVjdFZhbHVlOiBfc2VsZWN0VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0R3JvdXBMYWJlbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXRHcm91cExhYmVsKGRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdEdyb3VwTGFiZWwoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTW91c2UgSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ29tcG9zaXRpb24gSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nQ29tcG9zaXRpb24oKSB7XG4gICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0JywgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQsIGZhbHNlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdDb21wb3NpdGlvbigpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJywgdGhpcy5vbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVG91Y2ggSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nVG9Ub3VjaCgpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLm9uVG91Y2hTdGFydCwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLm9uVG91Y2hNb3ZlLCBmYWxzZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN0b3BMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdUb1RvdWNoKCkge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0KTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5vblRvdWNoTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySW5wdXRcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBSZW5kZXJlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBmdW5jdGlvbiByZW5kZXJJbnB1dCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczggPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM4LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzU2VhcmNoYWJsZSA9IF90aGlzJHByb3BzOC5pc1NlYXJjaGFibGUsXG4gICAgICAgIGlucHV0SWQgPSBfdGhpcyRwcm9wczguaW5wdXRJZCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOC5pbnB1dFZhbHVlLFxuICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzOC50YWJJbmRleCxcbiAgICAgICAgZm9ybSA9IF90aGlzJHByb3BzOC5mb3JtLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM4Lm1lbnVJc09wZW4sXG4gICAgICAgIHJlcXVpcmVkID0gX3RoaXMkcHJvcHM4LnJlcXVpcmVkO1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgSW5wdXQgPSBfdGhpcyRnZXRDb21wb25lbnRzLklucHV0O1xuICAgICAgdmFyIF90aGlzJHN0YXRlNCA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW4gPSBfdGhpcyRzdGF0ZTQuaW5wdXRJc0hpZGRlbixcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IF90aGlzJHN0YXRlNC5hcmlhU2VsZWN0aW9uO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpZCA9IGlucHV0SWQgfHwgdGhpcy5nZXRFbGVtZW50SWQoJ2lucHV0Jyk7XG5cbiAgICAgIC8vIGFyaWEgYXR0cmlidXRlcyBtYWtlcyB0aGUgSlNYIFwibm9pc3lcIiwgc2VwYXJhdGVkIGZvciBjbGFyaXR5XG4gICAgICB2YXIgYXJpYUF0dHJpYnV0ZXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdsaXN0JyxcbiAgICAgICAgJ2FyaWEtZXhwYW5kZWQnOiBtZW51SXNPcGVuLFxuICAgICAgICAnYXJpYS1oYXNwb3B1cCc6IHRydWUsXG4gICAgICAgICdhcmlhLWVycm9ybWVzc2FnZSc6IHRoaXMucHJvcHNbJ2FyaWEtZXJyb3JtZXNzYWdlJ10sXG4gICAgICAgICdhcmlhLWludmFsaWQnOiB0aGlzLnByb3BzWydhcmlhLWludmFsaWQnXSxcbiAgICAgICAgJ2FyaWEtbGFiZWwnOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsJ10sXG4gICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsbGVkYnknXSxcbiAgICAgICAgJ2FyaWEtcmVxdWlyZWQnOiByZXF1aXJlZCxcbiAgICAgICAgcm9sZTogJ2NvbWJvYm94JyxcbiAgICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IHRoaXMuaXNBcHBsZURldmljZSA/IHVuZGVmaW5lZCA6IHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkIHx8ICcnXG4gICAgICB9LCBtZW51SXNPcGVuICYmIHtcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnOiB0aGlzLmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICB9KSwgIWlzU2VhcmNoYWJsZSAmJiB7XG4gICAgICAgICdhcmlhLXJlYWRvbmx5JzogdHJ1ZVxuICAgICAgfSksIHRoaXMuaGFzVmFsdWUoKSA/IChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnICYmIHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgnbGl2ZS1yZWdpb24nKVxuICAgICAgfSA6IHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgncGxhY2Vob2xkZXInKVxuICAgICAgfSk7XG4gICAgICBpZiAoIWlzU2VhcmNoYWJsZSkge1xuICAgICAgICAvLyB1c2UgYSBkdW1teSBpbnB1dCB0byBtYWludGFpbiBmb2N1cy9ibHVyIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KER1bW15SW5wdXQsIF9leHRlbmRzKHtcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgaW5uZXJSZWY6IHRoaXMuZ2V0SW5wdXRSZWYsXG4gICAgICAgICAgb25CbHVyOiB0aGlzLm9uSW5wdXRCbHVyLFxuICAgICAgICAgIG9uQ2hhbmdlOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6IHRoaXMub25JbnB1dEZvY3VzLFxuICAgICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgICAgICBpbnB1dE1vZGU6IFwibm9uZVwiLFxuICAgICAgICAgIGZvcm06IGZvcm0sXG4gICAgICAgICAgdmFsdWU6IFwiXCJcbiAgICAgICAgfSwgYXJpYUF0dHJpYnV0ZXMpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGF1dG9DYXBpdGFsaXplOiBcIm5vbmVcIixcbiAgICAgICAgYXV0b0NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICBhdXRvQ29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRJbnB1dFJlZixcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNIaWRkZW46IGlucHV0SXNIaWRkZW4sXG4gICAgICAgIG9uQmx1cjogdGhpcy5vbklucHV0Qmx1cixcbiAgICAgICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UsXG4gICAgICAgIG9uRm9jdXM6IHRoaXMub25JbnB1dEZvY3VzLFxuICAgICAgICBzcGVsbENoZWNrOiBcImZhbHNlXCIsXG4gICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgICAgZm9ybTogZm9ybSxcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9LCBhcmlhQXR0cmlidXRlcykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJQbGFjZWhvbGRlck9yVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czIgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgTXVsdGlWYWx1ZSA9IF90aGlzJGdldENvbXBvbmVudHMyLk11bHRpVmFsdWUsXG4gICAgICAgIE11bHRpVmFsdWVDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlQ29udGFpbmVyLFxuICAgICAgICBNdWx0aVZhbHVlTGFiZWwgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgIE11bHRpVmFsdWVSZW1vdmUgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlUmVtb3ZlLFxuICAgICAgICBTaW5nbGVWYWx1ZSA9IF90aGlzJGdldENvbXBvbmVudHMyLlNpbmdsZVZhbHVlLFxuICAgICAgICBQbGFjZWhvbGRlciA9IF90aGlzJGdldENvbXBvbmVudHMyLlBsYWNlaG9sZGVyO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczkgPSB0aGlzLnByb3BzLFxuICAgICAgICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUgPSBfdGhpcyRwcm9wczkuY29udHJvbFNob3VsZFJlbmRlclZhbHVlLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM5LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczkuaXNNdWx0aSxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOS5pbnB1dFZhbHVlLFxuICAgICAgICBwbGFjZWhvbGRlciA9IF90aGlzJHByb3BzOS5wbGFjZWhvbGRlcjtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTUgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlNS5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU1LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU1LmlzRm9jdXNlZDtcbiAgICAgIGlmICghdGhpcy5oYXNWYWx1ZSgpIHx8ICFjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0VmFsdWUgPyBudWxsIDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGxhY2Vob2xkZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgIGtleTogXCJwbGFjZWhvbGRlclwiLFxuICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgICAgaWQ6IHRoaXMuZ2V0RWxlbWVudElkKCdwbGFjZWhvbGRlcicpXG4gICAgICAgICAgfVxuICAgICAgICB9KSwgcGxhY2Vob2xkZXIpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpbmRleCkge1xuICAgICAgICAgIHZhciBpc09wdGlvbkZvY3VzZWQgPSBvcHQgPT09IGZvY3VzZWRWYWx1ZTtcbiAgICAgICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoX3RoaXMzLmdldE9wdGlvbkxhYmVsKG9wdCksIFwiLVwiKS5jb25jYXQoX3RoaXMzLmdldE9wdGlvblZhbHVlKG9wdCkpO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChNdWx0aVZhbHVlLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgICAgQ29udGFpbmVyOiBNdWx0aVZhbHVlQ29udGFpbmVyLFxuICAgICAgICAgICAgICBMYWJlbDogTXVsdGlWYWx1ZUxhYmVsLFxuICAgICAgICAgICAgICBSZW1vdmU6IE11bHRpVmFsdWVSZW1vdmVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc0ZvY3VzZWQ6IGlzT3B0aW9uRm9jdXNlZCxcbiAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgIHJlbW92ZVByb3BzOiB7XG4gICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5yZW1vdmVWYWx1ZShvcHQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvblRvdWNoRW5kOiBmdW5jdGlvbiBvblRvdWNoRW5kKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczMucmVtb3ZlVmFsdWUob3B0KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25Nb3VzZURvd246IGZ1bmN0aW9uIG9uTW91c2VEb3duKGUpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRhOiBvcHRcbiAgICAgICAgICB9KSwgX3RoaXMzLmZvcm1hdE9wdGlvbkxhYmVsKG9wdCwgJ3ZhbHVlJykpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dFZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIHNpbmdsZVZhbHVlID0gc2VsZWN0VmFsdWVbMF07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2luZ2xlVmFsdWUsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBkYXRhOiBzaW5nbGVWYWx1ZSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMuZm9ybWF0T3B0aW9uTGFiZWwoc2luZ2xlVmFsdWUsICd2YWx1ZScpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQ2xlYXJJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2xlYXJJbmRpY2F0b3IoKSB7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgQ2xlYXJJbmRpY2F0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzMy5DbGVhckluZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczEwLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTAuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCF0aGlzLmlzQ2xlYXJhYmxlKCkgfHwgIUNsZWFySW5kaWNhdG9yIHx8IGlzRGlzYWJsZWQgfHwgIXRoaXMuaGFzVmFsdWUoKSB8fCBpc0xvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25DbGVhckluZGljYXRvck1vdXNlRG93bixcbiAgICAgICAgb25Ub3VjaEVuZDogdGhpcy5vbkNsZWFySW5kaWNhdG9yVG91Y2hFbmQsXG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhckluZGljYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckxvYWRpbmdJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTG9hZGluZ0luZGljYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNCA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBMb2FkaW5nSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czQuTG9hZGluZ0luZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMSA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczExLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTEuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCFMb2FkaW5nSW5kaWNhdG9yIHx8ICFpc0xvYWRpbmcpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGlubmVyUHJvcHMgPSB7XG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMb2FkaW5nSW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckluZGljYXRvclNlcGFyYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNSA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBEcm9wZG93bkluZGljYXRvciA9IF90aGlzJGdldENvbXBvbmVudHM1LkRyb3Bkb3duSW5kaWNhdG9yLFxuICAgICAgICBJbmRpY2F0b3JTZXBhcmF0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzNS5JbmRpY2F0b3JTZXBhcmF0b3I7XG5cbiAgICAgIC8vIHNlcGFyYXRvciBkb2Vzbid0IG1ha2Ugc2Vuc2Ugd2l0aG91dCB0aGUgZHJvcGRvd24gaW5kaWNhdG9yXG4gICAgICBpZiAoIURyb3Bkb3duSW5kaWNhdG9yIHx8ICFJbmRpY2F0b3JTZXBhcmF0b3IpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpc0Rpc2FibGVkID0gdGhpcy5wcm9wcy5pc0Rpc2FibGVkO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluZGljYXRvclNlcGFyYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckRyb3Bkb3duSW5kaWNhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckRyb3Bkb3duSW5kaWNhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM2ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIERyb3Bkb3duSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czYuRHJvcGRvd25JbmRpY2F0b3I7XG4gICAgICBpZiAoIURyb3Bkb3duSW5kaWNhdG9yKSByZXR1cm4gbnVsbDtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgaXNEaXNhYmxlZCA9IHRoaXMucHJvcHMuaXNEaXNhYmxlZDtcbiAgICAgIHZhciBpc0ZvY3VzZWQgPSB0aGlzLnN0YXRlLmlzRm9jdXNlZDtcbiAgICAgIHZhciBpbm5lclByb3BzID0ge1xuICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duLFxuICAgICAgICBvblRvdWNoRW5kOiB0aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCxcbiAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KERyb3Bkb3duSW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTWVudVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJNZW51KCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czcgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgR3JvdXAgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Hcm91cCxcbiAgICAgICAgR3JvdXBIZWFkaW5nID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuR3JvdXBIZWFkaW5nLFxuICAgICAgICBNZW51ID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTWVudSxcbiAgICAgICAgTWVudUxpc3QgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5NZW51TGlzdCxcbiAgICAgICAgTWVudVBvcnRhbCA9IF90aGlzJGdldENvbXBvbmVudHM3Lk1lbnVQb3J0YWwsXG4gICAgICAgIExvYWRpbmdNZXNzYWdlID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTG9hZGluZ01lc3NhZ2UsXG4gICAgICAgIE5vT3B0aW9uc01lc3NhZ2UgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Ob09wdGlvbnNNZXNzYWdlLFxuICAgICAgICBPcHRpb24gPSBfdGhpcyRnZXRDb21wb25lbnRzNy5PcHRpb247XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb24gPSB0aGlzLnN0YXRlLmZvY3VzZWRPcHRpb247XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNhcHR1cmVNZW51U2Nyb2xsID0gX3RoaXMkcHJvcHMxMi5jYXB0dXJlTWVudVNjcm9sbCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzMTIuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNMb2FkaW5nID0gX3RoaXMkcHJvcHMxMi5pc0xvYWRpbmcsXG4gICAgICAgIGxvYWRpbmdNZXNzYWdlID0gX3RoaXMkcHJvcHMxMi5sb2FkaW5nTWVzc2FnZSxcbiAgICAgICAgbWluTWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWluTWVudUhlaWdodCxcbiAgICAgICAgbWF4TWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWF4TWVudUhlaWdodCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzMTIubWVudUlzT3BlbixcbiAgICAgICAgbWVudVBsYWNlbWVudCA9IF90aGlzJHByb3BzMTIubWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uID0gX3RoaXMkcHJvcHMxMi5tZW51UG9zaXRpb24sXG4gICAgICAgIG1lbnVQb3J0YWxUYXJnZXQgPSBfdGhpcyRwcm9wczEyLm1lbnVQb3J0YWxUYXJnZXQsXG4gICAgICAgIG1lbnVTaG91bGRCbG9ja1Njcm9sbCA9IF90aGlzJHByb3BzMTIubWVudVNob3VsZEJsb2NrU2Nyb2xsLFxuICAgICAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBfdGhpcyRwcm9wczEyLm1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyxcbiAgICAgICAgbm9PcHRpb25zTWVzc2FnZSA9IF90aGlzJHByb3BzMTIubm9PcHRpb25zTWVzc2FnZSxcbiAgICAgICAgb25NZW51U2Nyb2xsVG9Ub3AgPSBfdGhpcyRwcm9wczEyLm9uTWVudVNjcm9sbFRvVG9wLFxuICAgICAgICBvbk1lbnVTY3JvbGxUb0JvdHRvbSA9IF90aGlzJHByb3BzMTIub25NZW51U2Nyb2xsVG9Cb3R0b207XG4gICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybiBudWxsO1xuXG4gICAgICAvLyBUT0RPOiBJbnRlcm5hbCBPcHRpb24gVHlwZSBoZXJlXG4gICAgICB2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKHByb3BzLCBpZCkge1xuICAgICAgICB2YXIgdHlwZSA9IHByb3BzLnR5cGUsXG4gICAgICAgICAgZGF0YSA9IHByb3BzLmRhdGEsXG4gICAgICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTZWxlY3RlZCA9IHByb3BzLmlzU2VsZWN0ZWQsXG4gICAgICAgICAgbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlO1xuICAgICAgICB2YXIgaXNGb2N1c2VkID0gZm9jdXNlZE9wdGlvbiA9PT0gZGF0YTtcbiAgICAgICAgdmFyIG9uSG92ZXIgPSBpc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQub25PcHRpb25Ib3ZlcihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9uU2VsZWN0ID0gaXNEaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXM0LnNlbGVjdE9wdGlvbihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9wdGlvbklkID0gXCJcIi5jb25jYXQoX3RoaXM0LmdldEVsZW1lbnRJZCgnb3B0aW9uJyksIFwiLVwiKS5jb25jYXQoaWQpO1xuICAgICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgICBpZDogb3B0aW9uSWQsXG4gICAgICAgICAgb25DbGljazogb25TZWxlY3QsXG4gICAgICAgICAgb25Nb3VzZU1vdmU6IG9uSG92ZXIsXG4gICAgICAgICAgb25Nb3VzZU92ZXI6IG9uSG92ZXIsXG4gICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogX3RoaXM0LmlzQXBwbGVEZXZpY2UgPyB1bmRlZmluZWQgOiBpc1NlbGVjdGVkIC8vIGlzIG5vdCBzdXBwb3J0ZWQgb24gQXBwbGUgZGV2aWNlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChPcHRpb24sIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgICAga2V5OiBvcHRpb25JZCxcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgICAgaW5uZXJSZWY6IGlzRm9jdXNlZCA/IF90aGlzNC5nZXRGb2N1c2VkT3B0aW9uUmVmIDogdW5kZWZpbmVkXG4gICAgICAgIH0pLCBfdGhpczQuZm9ybWF0T3B0aW9uTGFiZWwocHJvcHMuZGF0YSwgJ21lbnUnKSk7XG4gICAgICB9O1xuICAgICAgdmFyIG1lbnVVSTtcbiAgICAgIGlmICh0aGlzLmhhc09wdGlvbnMoKSkge1xuICAgICAgICBtZW51VUkgPSB0aGlzLmdldENhdGVnb3JpemVkT3B0aW9ucygpLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgIHZhciBfZGF0YSA9IGl0ZW0uZGF0YSxcbiAgICAgICAgICAgICAgb3B0aW9ucyA9IGl0ZW0ub3B0aW9ucyxcbiAgICAgICAgICAgICAgZ3JvdXBJbmRleCA9IGl0ZW0uaW5kZXg7XG4gICAgICAgICAgICB2YXIgZ3JvdXBJZCA9IFwiXCIuY29uY2F0KF90aGlzNC5nZXRFbGVtZW50SWQoJ2dyb3VwJyksIFwiLVwiKS5jb25jYXQoZ3JvdXBJbmRleCk7XG4gICAgICAgICAgICB2YXIgaGVhZGluZ0lkID0gXCJcIi5jb25jYXQoZ3JvdXBJZCwgXCItaGVhZGluZ1wiKTtcbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChHcm91cCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgICAgIGtleTogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgZGF0YTogX2RhdGEsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgICAgICAgIEhlYWRpbmc6IEdyb3VwSGVhZGluZyxcbiAgICAgICAgICAgICAgaGVhZGluZ1Byb3BzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IGhlYWRpbmdJZCxcbiAgICAgICAgICAgICAgICBkYXRhOiBpdGVtLmRhdGFcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbGFiZWw6IF90aGlzNC5mb3JtYXRHcm91cExhYmVsKGl0ZW0uZGF0YSlcbiAgICAgICAgICAgIH0pLCBpdGVtLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihvcHRpb24sIFwiXCIuY29uY2F0KGdyb3VwSW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdvcHRpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyKGl0ZW0sIFwiXCIuY29uY2F0KGl0ZW0uaW5kZXgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBsb2FkaW5nTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICBtZW51VUkgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMb2FkaW5nTWVzc2FnZSwgY29tbW9uUHJvcHMsIG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF9tZXNzYWdlID0gbm9PcHRpb25zTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKF9tZXNzYWdlID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbWVudVVJID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTm9PcHRpb25zTWVzc2FnZSwgY29tbW9uUHJvcHMsIF9tZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHZhciBtZW51UGxhY2VtZW50UHJvcHMgPSB7XG4gICAgICAgIG1pbk1lbnVIZWlnaHQ6IG1pbk1lbnVIZWlnaHQsXG4gICAgICAgIG1heE1lbnVIZWlnaHQ6IG1heE1lbnVIZWlnaHQsXG4gICAgICAgIG1lbnVQbGFjZW1lbnQ6IG1lbnVQbGFjZW1lbnQsXG4gICAgICAgIG1lbnVQb3NpdGlvbjogbWVudVBvc2l0aW9uLFxuICAgICAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXc6IG1lbnVTaG91bGRTY3JvbGxJbnRvVmlld1xuICAgICAgfTtcbiAgICAgIHZhciBtZW51RWxlbWVudCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVQbGFjZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywgbWVudVBsYWNlbWVudFByb3BzKSwgZnVuY3Rpb24gKF9yZWY0KSB7XG4gICAgICAgIHZhciByZWYgPSBfcmVmNC5yZWYsXG4gICAgICAgICAgX3JlZjQkcGxhY2VyUHJvcHMgPSBfcmVmNC5wbGFjZXJQcm9wcyxcbiAgICAgICAgICBwbGFjZW1lbnQgPSBfcmVmNCRwbGFjZXJQcm9wcy5wbGFjZW1lbnQsXG4gICAgICAgICAgbWF4SGVpZ2h0ID0gX3JlZjQkcGxhY2VyUHJvcHMubWF4SGVpZ2h0O1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVudSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCBtZW51UGxhY2VtZW50UHJvcHMsIHtcbiAgICAgICAgICBpbm5lclJlZjogcmVmLFxuICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgIG9uTW91c2VEb3duOiBfdGhpczQub25NZW51TW91c2VEb3duLFxuICAgICAgICAgICAgb25Nb3VzZU1vdmU6IF90aGlzNC5vbk1lbnVNb3VzZU1vdmVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTY3JvbGxNYW5hZ2VyLCB7XG4gICAgICAgICAgY2FwdHVyZUVuYWJsZWQ6IGNhcHR1cmVNZW51U2Nyb2xsLFxuICAgICAgICAgIG9uVG9wQXJyaXZlOiBvbk1lbnVTY3JvbGxUb1RvcCxcbiAgICAgICAgICBvbkJvdHRvbUFycml2ZTogb25NZW51U2Nyb2xsVG9Cb3R0b20sXG4gICAgICAgICAgbG9ja0VuYWJsZWQ6IG1lbnVTaG91bGRCbG9ja1Njcm9sbFxuICAgICAgICB9LCBmdW5jdGlvbiAoc2Nyb2xsVGFyZ2V0UmVmKSB7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVMaXN0LCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgICAgIGlubmVyUmVmOiBmdW5jdGlvbiBpbm5lclJlZihpbnN0YW5jZSkge1xuICAgICAgICAgICAgICBfdGhpczQuZ2V0TWVudUxpc3RSZWYoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICBzY3JvbGxUYXJnZXRSZWYoaW5zdGFuY2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgICAgcm9sZTogJ2xpc3Rib3gnLFxuICAgICAgICAgICAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiBjb21tb25Qcm9wcy5pc011bHRpLFxuICAgICAgICAgICAgICBpZDogX3RoaXM0LmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCxcbiAgICAgICAgICAgIGZvY3VzZWRPcHRpb246IGZvY3VzZWRPcHRpb25cbiAgICAgICAgICB9KSwgbWVudVVJKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIHBvc2l0aW9uaW5nIGJlaGF2aW91ciBpcyBhbG1vc3QgaWRlbnRpY2FsIGZvciBwb3J0YWxsZWQgYW5kIGZpeGVkLFxuICAgICAgLy8gc28gd2UgdXNlIHRoZSBzYW1lIGNvbXBvbmVudC4gdGhlIGFjdHVhbCBwb3J0YWxsaW5nIGxvZ2ljIGlzIGZvcmtlZFxuICAgICAgLy8gd2l0aGluIHRoZSBjb21wb25lbnQgYmFzZWQgb24gYG1lbnVQb3NpdGlvbmBcbiAgICAgIHJldHVybiBtZW51UG9ydGFsVGFyZ2V0IHx8IG1lbnVQb3NpdGlvbiA9PT0gJ2ZpeGVkJyA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVQb3J0YWwsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBhcHBlbmRUbzogbWVudVBvcnRhbFRhcmdldCxcbiAgICAgICAgY29udHJvbEVsZW1lbnQ6IHRoaXMuY29udHJvbFJlZixcbiAgICAgICAgbWVudVBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uOiBtZW51UG9zaXRpb25cbiAgICAgIH0pLCBtZW51RWxlbWVudCkgOiBtZW51RWxlbWVudDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyRm9ybUZpZWxkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckZvcm1GaWVsZCgpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTMgPSB0aGlzLnByb3BzLFxuICAgICAgICBkZWxpbWl0ZXIgPSBfdGhpcyRwcm9wczEzLmRlbGltaXRlcixcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzMTMuaXNEaXNhYmxlZCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMTMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMTMubmFtZSxcbiAgICAgICAgcmVxdWlyZWQgPSBfdGhpcyRwcm9wczEzLnJlcXVpcmVkO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAhdGhpcy5oYXNWYWx1ZSgpICYmICFpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZXF1aXJlZElucHV0JDEsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIG9uRm9jdXM6IHRoaXMub25WYWx1ZUlucHV0Rm9jdXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIW5hbWUgfHwgaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgaWYgKGRlbGltaXRlcikge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0KSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXM1LmdldE9wdGlvblZhbHVlKG9wdCk7XG4gICAgICAgICAgfSkuam9pbihkZWxpbWl0ZXIpO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGlucHV0ID0gc2VsZWN0VmFsdWUubGVuZ3RoID4gMCA/IHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpKSB7XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGtleTogXCJpLVwiLmNvbmNhdChpKSxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgICAgdmFsdWU6IF90aGlzNS5nZXRPcHRpb25WYWx1ZShvcHQpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSA6IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICB2YWx1ZTogXCJcIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLCBpbnB1dCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfdmFsdWUgPSBzZWxlY3RWYWx1ZVswXSA/IHRoaXMuZ2V0T3B0aW9uVmFsdWUoc2VsZWN0VmFsdWVbMF0pIDogJyc7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgdmFsdWU6IF92YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTGl2ZVJlZ2lvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJMaXZlUmVnaW9uKCkge1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTYgPSB0aGlzLnN0YXRlLFxuICAgICAgICBhcmlhU2VsZWN0aW9uID0gX3RoaXMkc3RhdGU2LmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZTYuZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU2LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU2LmlzRm9jdXNlZCxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTYuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IHRoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExpdmVSZWdpb24kMSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlkOiB0aGlzLmdldEVsZW1lbnRJZCgnbGl2ZS1yZWdpb24nKSxcbiAgICAgICAgYXJpYVNlbGVjdGlvbjogYXJpYVNlbGVjdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBmb2N1c2VkVmFsdWUsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkLFxuICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgIGZvY3VzYWJsZU9wdGlvbnM6IGZvY3VzYWJsZU9wdGlvbnMsXG4gICAgICAgIGlzQXBwbGVEZXZpY2U6IHRoaXMuaXNBcHBsZURldmljZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM4ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIENvbnRyb2wgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5Db250cm9sLFxuICAgICAgICBJbmRpY2F0b3JzQ29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguSW5kaWNhdG9yc0NvbnRhaW5lcixcbiAgICAgICAgU2VsZWN0Q29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguU2VsZWN0Q29udGFpbmVyLFxuICAgICAgICBWYWx1ZUNvbnRhaW5lciA9IF90aGlzJGdldENvbXBvbmVudHM4LlZhbHVlQ29udGFpbmVyO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTQgPSB0aGlzLnByb3BzLFxuICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczE0LmNsYXNzTmFtZSxcbiAgICAgICAgaWQgPSBfdGhpcyRwcm9wczE0LmlkLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHMxNC5pc0Rpc2FibGVkLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHMxNC5tZW51SXNPcGVuO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcyA9IHRoaXMuZ2V0Q29tbW9uUHJvcHMoKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTZWxlY3RDb250YWluZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBvbktleURvd246IHRoaXMub25LZXlEb3duXG4gICAgICAgIH0sXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSwgdGhpcy5yZW5kZXJMaXZlUmVnaW9uKCksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbnRyb2wsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRDb250cm9sUmVmLFxuICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25Db250cm9sTW91c2VEb3duLFxuICAgICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMub25Db250cm9sVG91Y2hFbmRcbiAgICAgICAgfSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW5cbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChWYWx1ZUNvbnRhaW5lciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgICAgIH0pLCB0aGlzLnJlbmRlclBsYWNlaG9sZGVyT3JWYWx1ZSgpLCB0aGlzLnJlbmRlcklucHV0KCkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbmRpY2F0b3JzQ29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMucmVuZGVyQ2xlYXJJbmRpY2F0b3IoKSwgdGhpcy5yZW5kZXJMb2FkaW5nSW5kaWNhdG9yKCksIHRoaXMucmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yKCksIHRoaXMucmVuZGVyRHJvcGRvd25JbmRpY2F0b3IoKSkpLCB0aGlzLnJlbmRlck1lbnUoKSwgdGhpcy5yZW5kZXJGb3JtRmllbGQoKSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICAgIHZhciBwcmV2UHJvcHMgPSBzdGF0ZS5wcmV2UHJvcHMsXG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlID0gc3RhdGUuY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSA9IHN0YXRlLmlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSxcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IHN0YXRlLmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGlzRm9jdXNlZCA9IHN0YXRlLmlzRm9jdXNlZCxcbiAgICAgICAgcHJldldhc0ZvY3VzZWQgPSBzdGF0ZS5wcmV2V2FzRm9jdXNlZCxcbiAgICAgICAgaW5zdGFuY2VQcmVmaXggPSBzdGF0ZS5pbnN0YW5jZVByZWZpeDtcbiAgICAgIHZhciBvcHRpb25zID0gcHJvcHMub3B0aW9ucyxcbiAgICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgICAgbWVudUlzT3BlbiA9IHByb3BzLm1lbnVJc09wZW4sXG4gICAgICAgIGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgICAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aTtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IGNsZWFuVmFsdWUodmFsdWUpO1xuICAgICAgdmFyIG5ld01lbnVPcHRpb25zU3RhdGUgPSB7fTtcbiAgICAgIGlmIChwcmV2UHJvcHMgJiYgKHZhbHVlICE9PSBwcmV2UHJvcHMudmFsdWUgfHwgb3B0aW9ucyAhPT0gcHJldlByb3BzLm9wdGlvbnMgfHwgbWVudUlzT3BlbiAhPT0gcHJldlByb3BzLm1lbnVJc09wZW4gfHwgaW5wdXRWYWx1ZSAhPT0gcHJldlByb3BzLmlucHV0VmFsdWUpKSB7XG4gICAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zID0gbWVudUlzT3BlbiA/IGJ1aWxkRm9jdXNhYmxlT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIDogW107XG4gICAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IG1lbnVJc09wZW4gPyBidWlsZEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzKGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSksIFwiXCIuY29uY2F0KGluc3RhbmNlUHJlZml4LCBcIi1vcHRpb25cIikpIDogW107XG4gICAgICAgIHZhciBmb2N1c2VkVmFsdWUgPSBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZSA/IGdldE5leHRGb2N1c2VkVmFsdWUoc3RhdGUsIHNlbGVjdFZhbHVlKSA6IG51bGw7XG4gICAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIGZvY3VzYWJsZU9wdGlvbnMpO1xuICAgICAgICB2YXIgZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgbmV3TWVudU9wdGlvbnNTdGF0ZSA9IHtcbiAgICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgICBmb2N1c2VkT3B0aW9uSWQ6IGZvY3VzZWRPcHRpb25JZCxcbiAgICAgICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsXG4gICAgICAgICAgZm9jdXNlZFZhbHVlOiBmb2N1c2VkVmFsdWUsXG4gICAgICAgICAgY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGU6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBzb21lIHVwZGF0ZXMgc2hvdWxkIHRvZ2dsZSB0aGUgc3RhdGUgb2YgdGhlIGlucHV0IHZpc2liaWxpdHlcbiAgICAgIHZhciBuZXdJbnB1dElzSGlkZGVuU3RhdGUgPSBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUgIT0gbnVsbCAmJiBwcm9wcyAhPT0gcHJldlByb3BzID8ge1xuICAgICAgICBpbnB1dElzSGlkZGVuOiBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogdW5kZWZpbmVkXG4gICAgICB9IDoge307XG4gICAgICB2YXIgbmV3QXJpYVNlbGVjdGlvbiA9IGFyaWFTZWxlY3Rpb247XG4gICAgICB2YXIgaGFzS2VwdEZvY3VzID0gaXNGb2N1c2VkICYmIHByZXZXYXNGb2N1c2VkO1xuICAgICAgaWYgKGlzRm9jdXNlZCAmJiAhaGFzS2VwdEZvY3VzKSB7XG4gICAgICAgIC8vIElmIGB2YWx1ZWAgb3IgYGRlZmF1bHRWYWx1ZWAgcHJvcHMgYXJlIG5vdCBlbXB0eSB0aGVuIGFubm91bmNlIHRoZW1cbiAgICAgICAgLy8gd2hlbiB0aGUgU2VsZWN0IGlzIGluaXRpYWxseSBmb2N1c2VkXG4gICAgICAgIG5ld0FyaWFTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlVGVybmFyeShpc011bHRpLCBzZWxlY3RWYWx1ZSwgc2VsZWN0VmFsdWVbMF0gfHwgbnVsbCksXG4gICAgICAgICAgb3B0aW9uczogc2VsZWN0VmFsdWUsXG4gICAgICAgICAgYWN0aW9uOiAnaW5pdGlhbC1pbnB1dC1mb2N1cydcbiAgICAgICAgfTtcbiAgICAgICAgaGFzS2VwdEZvY3VzID0gIXByZXZXYXNGb2N1c2VkO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgJ2luaXRpYWwtaW5wdXQtZm9jdXMnIGFjdGlvbiBoYXMgYmVlbiBzZXQgYWxyZWFkeVxuICAgICAgLy8gdGhlbiByZXNldCB0aGUgYXJpYVNlbGVjdGlvbiB0byBudWxsXG4gICAgICBpZiAoKGFyaWFTZWxlY3Rpb24gPT09IG51bGwgfHwgYXJpYVNlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJpYVNlbGVjdGlvbi5hY3Rpb24pID09PSAnaW5pdGlhbC1pbnB1dC1mb2N1cycpIHtcbiAgICAgICAgbmV3QXJpYVNlbGVjdGlvbiA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG5ld01lbnVPcHRpb25zU3RhdGUpLCBuZXdJbnB1dElzSGlkZGVuU3RhdGUpLCB7fSwge1xuICAgICAgICBwcmV2UHJvcHM6IHByb3BzLFxuICAgICAgICBhcmlhU2VsZWN0aW9uOiBuZXdBcmlhU2VsZWN0aW9uLFxuICAgICAgICBwcmV2V2FzRm9jdXNlZDogaGFzS2VwdEZvY3VzXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNlbGVjdDtcbn0oQ29tcG9uZW50KTtcblNlbGVjdC5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbmV4cG9ydCB7IFNlbGVjdCBhcyBTLCBkZWZhdWx0UHJvcHMgYXMgYSwgZ2V0T3B0aW9uTGFiZWwkMSBhcyBiLCBjcmVhdGVGaWx0ZXIgYXMgYywgZGVmYXVsdFRoZW1lIGFzIGQsIGdldE9wdGlvblZhbHVlJDEgYXMgZywgbWVyZ2VTdHlsZXMgYXMgbSB9O1xuIiwiaW1wb3J0IHsgdSBhcyB1c2VTdGF0ZU1hbmFnZXIgfSBmcm9tICcuL3VzZVN0YXRlTWFuYWdlci03ZTFlODQ4OS5lc20uanMnO1xuZXhwb3J0IHsgdSBhcyB1c2VTdGF0ZU1hbmFnZXIgfSBmcm9tICcuL3VzZVN0YXRlTWFuYWdlci03ZTFlODQ4OS5lc20uanMnO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFMgYXMgU2VsZWN0IH0gZnJvbSAnLi9TZWxlY3QtYWFiMDI3ZjMuZXNtLmpzJztcbmV4cG9ydCB7IGMgYXMgY3JlYXRlRmlsdGVyLCBkIGFzIGRlZmF1bHRUaGVtZSwgbSBhcyBtZXJnZVN0eWxlcyB9IGZyb20gJy4vU2VsZWN0LWFhYjAyN2YzLmVzbS5qcyc7XG5pbXBvcnQgeyBDYWNoZVByb3ZpZGVyIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IGNyZWF0ZUNhY2hlIGZyb20gJ0BlbW90aW9uL2NhY2hlJztcbmV4cG9ydCB7IGMgYXMgY29tcG9uZW50cyB9IGZyb20gJy4vaW5kZXgtNjQxZWU1YjguZXNtLmpzJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5JztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cyc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXInO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5JztcbmltcG9ydCAnbWVtb2l6ZS1vbmUnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZic7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdGFnZ2VkVGVtcGxhdGVMaXRlcmFsJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eSc7XG5pbXBvcnQgJ3JlYWN0LWRvbSc7XG5pbXBvcnQgJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0ICd1c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0JztcblxudmFyIFN0YXRlTWFuYWdlZFNlbGVjdCA9IC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBiYXNlU2VsZWN0UHJvcHMgPSB1c2VTdGF0ZU1hbmFnZXIocHJvcHMpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2VsZWN0LCBfZXh0ZW5kcyh7XG4gICAgcmVmOiByZWZcbiAgfSwgYmFzZVNlbGVjdFByb3BzKSk7XG59KTtcbnZhciBTdGF0ZU1hbmFnZWRTZWxlY3QkMSA9IFN0YXRlTWFuYWdlZFNlbGVjdDtcblxudmFyIE5vbmNlUHJvdmlkZXIgPSAoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIG5vbmNlID0gX3JlZi5ub25jZSxcbiAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgY2FjaGVLZXkgPSBfcmVmLmNhY2hlS2V5O1xuICB2YXIgZW1vdGlvbkNhY2hlID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNhY2hlKHtcbiAgICAgIGtleTogY2FjaGVLZXksXG4gICAgICBub25jZTogbm9uY2VcbiAgICB9KTtcbiAgfSwgW2NhY2hlS2V5LCBub25jZV0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2FjaGVQcm92aWRlciwge1xuICAgIHZhbHVlOiBlbW90aW9uQ2FjaGVcbiAgfSwgY2hpbGRyZW4pO1xufSk7XG5cbmV4cG9ydCB7IE5vbmNlUHJvdmlkZXIsIFN0YXRlTWFuYWdlZFNlbGVjdCQxIGFzIGRlZmF1bHQgfTtcbiIsIi8vIHNyYy9pbmRleC50c1xuaW1wb3J0IHsgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG52YXIgRU1QVFlfVkFMVUUgPSBTeW1ib2woXCJ1c2VMYXp5UmVmIGVtcHR5IHZhbHVlXCIpO1xudmFyIHVzZUxhenlSZWYgPSAoaW5pdCkgPT4ge1xuICBjb25zdCByZXN1bHRSZWYgPSB1c2VSZWYoRU1QVFlfVkFMVUUpO1xuICBpZiAocmVzdWx0UmVmLmN1cnJlbnQgPT09IEVNUFRZX1ZBTFVFKSB7XG4gICAgcmVzdWx0UmVmLmN1cnJlbnQgPSBpbml0KCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFJlZjtcbn07XG5leHBvcnQge1xuICBFTVBUWV9WQUxVRSxcbiAgdXNlTGF6eVJlZlxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCB7IHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG5mdW5jdGlvbiB1c2VJc01vdW50ZWRSZWYoKSB7XHJcbiAgICB2YXIgaXNNb3VudGVkUmVmID0gdXNlUmVmKGZhbHNlKTtcclxuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gZmFsc2U7XHJcbiAgICAgICAgfTtcclxuICAgIH0sIFtdKTtcclxuICAgIHJldHVybiBpc01vdW50ZWRSZWY7XHJcbn1cblxuZXhwb3J0IHsgdXNlSXNNb3VudGVkUmVmIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZS1pcy1tb3VudGVkLXJlZi5lcy5qcy5tYXBcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCBmcm9tICd1c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0JztcblxudmFyIHVzZUxhdGVzdCA9IGZ1bmN0aW9uIHVzZUxhdGVzdCh2YWx1ZSkge1xuICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKHZhbHVlKTtcbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZWY7XG59O1xuXG5leHBvcnQgeyB1c2VMYXRlc3QgYXMgZGVmYXVsdCB9O1xuIiwiLy8gc3JjL29wdGlvbl9yZXN1bHQudHNcbmZ1bmN0aW9uIE9rKHJlc3VsdCkge1xuICBjb25zdCBzZWxmID0ge1xuICAgIGlzT2s6ICgpID0+IHRydWUsXG4gICAgaXNPa0FuZDogKGZuKSA9PiBmbihyZXN1bHQpLFxuICAgIGlzRXJyOiAoKSA9PiBmYWxzZSxcbiAgICBpc0VyckFuZDogKCkgPT4gZmFsc2UsXG4gICAgb2s6ICgpID0+IFNvbWUocmVzdWx0KSxcbiAgICBlcnI6ICgpID0+IE5vbmUoKSxcbiAgICBtYXA6IChmbikgPT4gT2soZm4ocmVzdWx0KSksXG4gICAgbWFwT3I6IChfLCBmbikgPT4gZm4ocmVzdWx0KSxcbiAgICBtYXBPckVsc2U6IChfLCBmbikgPT4gZm4ocmVzdWx0KSxcbiAgICBtYXBFcnI6ICgpID0+IE9rKHJlc3VsdCksXG4gICAgZXhwZWN0OiAoKSA9PiByZXN1bHQsXG4gICAgZXhwZWN0RXJyOiAobXNnKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9LFxuICAgIHVud3JhcDogKCkgPT4gcmVzdWx0LFxuICAgIHVud3JhcEVycjogKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Jlc3VsdH1gKTtcbiAgICB9LFxuICAgIHVud3JhcE9yOiAoKSA9PiByZXN1bHQsXG4gICAgdW53cmFwT3JFbHNlOiAoKSA9PiByZXN1bHQsXG4gICAgYW5kOiAocmVzKSA9PiByZXMsXG4gICAgYW5kVGhlbjogKGdldFJlcykgPT4gZ2V0UmVzKHJlc3VsdCksXG4gICAgb3I6ICgpID0+IE9rKHJlc3VsdCksXG4gICAgb3JFbHNlOiAoKSA9PiBPayhyZXN1bHQpXG4gIH07XG4gIHJldHVybiBzZWxmO1xufVxuZnVuY3Rpb24gRXJyKGVycikge1xuICBjb25zdCBzZWxmID0ge1xuICAgIGlzT2s6ICgpID0+IGZhbHNlLFxuICAgIGlzT2tBbmQ6ICgpID0+IGZhbHNlLFxuICAgIGlzRXJyOiAoKSA9PiB0cnVlLFxuICAgIGlzRXJyQW5kOiAoZm4pID0+IGZuKGVyciksXG4gICAgb2s6ICgpID0+IE5vbmUoKSxcbiAgICBlcnI6ICgpID0+IFNvbWUoZXJyKSxcbiAgICBtYXA6ICgpID0+IEVycihlcnIpLFxuICAgIG1hcE9yOiAoZGVmYXVsdFZhbHVlKSA9PiBkZWZhdWx0VmFsdWUsXG4gICAgbWFwT3JFbHNlOiAoZ2V0RGVmYXVsdFZhbHVlKSA9PiBnZXREZWZhdWx0VmFsdWUoZXJyKSxcbiAgICBtYXBFcnI6IChmbikgPT4gRXJyKGZuKGVycikpLFxuICAgIGV4cGVjdDogKG1zZykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgfSxcbiAgICBleHBlY3RFcnI6ICgpID0+IGVycixcbiAgICB1bndyYXA6ICgpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlcnJ9YCk7XG4gICAgfSxcbiAgICB1bndyYXBFcnI6ICgpID0+IGVycixcbiAgICB1bndyYXBPcjogKGRlZmF1bHRWYWx1ZSkgPT4gZGVmYXVsdFZhbHVlLFxuICAgIHVud3JhcE9yRWxzZTogKGdldERlZmF1bHRWYWx1ZSkgPT4gZ2V0RGVmYXVsdFZhbHVlKGVyciksXG4gICAgYW5kOiAoKSA9PiBFcnIoZXJyKSxcbiAgICBhbmRUaGVuOiAoKSA9PiBFcnIoZXJyKSxcbiAgICBvcjogKHJlcykgPT4gcmVzLFxuICAgIG9yRWxzZTogKGdldFJlcykgPT4gZ2V0UmVzKGVycilcbiAgfTtcbiAgcmV0dXJuIHNlbGY7XG59XG5mdW5jdGlvbiBOb25lKCkge1xuICBjb25zdCBzZWxmID0ge1xuICAgIGFuZDogKCkgPT4gTm9uZSgpLFxuICAgIGFuZFRoZW46ICgpID0+IE5vbmUoKSxcbiAgICBleHBlY3Q6IChtc2cpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH0sXG4gICAgZmlsdGVyOiAoKSA9PiBzZWxmLFxuICAgIGlzU29tZTogKCkgPT4gZmFsc2UsXG4gICAgaXNTb21lQW5kOiAoKSA9PiBmYWxzZSxcbiAgICBpc05vbmU6ICgpID0+IHRydWUsXG4gICAgbWFwOiAoKSA9PiBOb25lKCksXG4gICAgbWFwT3I6IChkZWZhdWx0VmFsdWUpID0+IGRlZmF1bHRWYWx1ZSxcbiAgICBtYXBPckVsc2U6IChnZXREZWZhdWx0VmFsdWUpID0+IGdldERlZmF1bHRWYWx1ZSgpLFxuICAgIG9rT3I6IChlcnIpID0+IEVycihlcnIpLFxuICAgIG9rT3JFbHNlOiAoZ2V0RXJyKSA9PiBFcnIoZ2V0RXJyKCkpLFxuICAgIG9yOiAob3B0KSA9PiBvcHQsXG4gICAgb3JFbHNlOiAoZm4pID0+IGZuKCksXG4gICAgdW53cmFwOiAoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwYW5pYyEgY2FsbCBgdW53cmFwYCBvbiBhIGBOb25lYCB2YWx1ZVwiKTtcbiAgICB9LFxuICAgIHVud3JhcE9yOiAoZGVmYXVsdFZhbHVlKSA9PiBkZWZhdWx0VmFsdWUsXG4gICAgdW53cmFwT3JFbHNlOiAoZ2V0RGVmYXVsdFZhbHVlKSA9PiBnZXREZWZhdWx0VmFsdWUoKSxcbiAgICB4b3I6IChvcHQpID0+IHtcbiAgICAgIGlmIChvcHQuaXNTb21lKCkpIHtcbiAgICAgICAgcmV0dXJuIG9wdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHNlbGY7XG59XG5mdW5jdGlvbiBTb21lKHZhbHVlKSB7XG4gIGNvbnN0IHNlbGYgPSB7XG4gICAgYW5kOiAob3B0KSA9PiBvcHQsXG4gICAgYW5kVGhlbjogKGZuKSA9PiBmbih2YWx1ZSksXG4gICAgZXhwZWN0OiAoKSA9PiB2YWx1ZSxcbiAgICBmaWx0ZXI6IChmbikgPT4ge1xuICAgICAgaWYgKGZuKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gc2VsZjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBOb25lKCk7XG4gICAgfSxcbiAgICBpc1NvbWU6ICgpID0+IHRydWUsXG4gICAgaXNTb21lQW5kOiAoZm4pID0+IGZuKHZhbHVlKSxcbiAgICBpc05vbmU6ICgpID0+IGZhbHNlLFxuICAgIG1hcDogKGZuKSA9PiBTb21lKGZuKHZhbHVlKSksXG4gICAgbWFwT3I6IChfLCBmbikgPT4gZm4odmFsdWUpLFxuICAgIG1hcE9yRWxzZTogKF8sIGZuKSA9PiBmbih2YWx1ZSksXG4gICAgb2tPcjogKCkgPT4gT2sodmFsdWUpLFxuICAgIG9rT3JFbHNlOiAoKSA9PiBPayh2YWx1ZSksXG4gICAgb3I6ICgpID0+IHNlbGYsXG4gICAgb3JFbHNlOiAoKSA9PiBzZWxmLFxuICAgIHVud3JhcDogKCkgPT4gdmFsdWUsXG4gICAgdW53cmFwT3I6ICgpID0+IHZhbHVlLFxuICAgIHVud3JhcE9yRWxzZTogKCkgPT4gdmFsdWUsXG4gICAgeG9yOiAob3B0KSA9PiB7XG4gICAgICBpZiAob3B0LmlzTm9uZSgpKSB7XG4gICAgICAgIHJldHVybiBzZWxmO1xuICAgICAgfVxuICAgICAgcmV0dXJuIE5vbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBzZWxmO1xufVxuXG4vLyBzcmMvdG9fb3B0aW9uLnRzXG5mdW5jdGlvbiB0b09wdGlvbihhcmcpIHtcbiAgaWYgKGFyZyA9PT0gbnVsbCB8fCBhcmcgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBOb25lKCk7XG4gIH1cbiAgcmV0dXJuIFNvbWUoYXJnKTtcbn1cblxuLy8gc3JjL2dldF9yZXN1bHQudHNcbmZ1bmN0aW9uIGdldFJlc3VsdChwcm9taXNlKSB7XG4gIHJldHVybiBwcm9taXNlLnRoZW4oXG4gICAgKHJlc3BvbnNlKSA9PiBPayhyZXNwb25zZSksXG4gICAgKGVycikgPT4gRXJyKGVycilcbiAgKTtcbn1cblxuLy8gc3JjL3Vud3JhcC50c1xuZnVuY3Rpb24gdW53cmFwKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwYW5pYyEgY2FsbCBcXGB1bndyYXBcXGAgb24gYSBcXGAke3ZhbHVlfVxcYCB2YWx1ZWApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLy8gc3JjL3Vud3JhcF9vci50c1xuZnVuY3Rpb24gdW53cmFwT3IodmFsdWUsIGRlZmF1bHRWYWx1ZSkge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBzcmMvdW53cmFwX29yX2Vsc2UudHNcbmZ1bmN0aW9uIHVud3JhcE9yRWxzZSh2YWx1ZSwgZ2V0RGVmYXVsdFZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGdldERlZmF1bHRWYWx1ZSgpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLy8gc3JjL3RyeV9jYXRjaC50c1xuZnVuY3Rpb24gdHJ5Q2F0Y2goZm4pIHtcbiAgbGV0IHJlc3VsdDtcbiAgdHJ5IHtcbiAgICByZXN1bHQgPSBmbigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIEVycihlKTtcbiAgfVxuICByZXR1cm4gT2socmVzdWx0KTtcbn1cbmV4cG9ydCB7XG4gIEVycixcbiAgTm9uZSxcbiAgT2ssXG4gIFNvbWUsXG4gIGdldFJlc3VsdCxcbiAgdG9PcHRpb24sXG4gIHRyeUNhdGNoLFxuICB1bndyYXAsXG4gIHVud3JhcE9yLFxuICB1bndyYXBPckVsc2Vcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwIiwidmFyIGU9c2V0VGltZW91dDtmdW5jdGlvbiB0KHQsbil7dmFyIHU9bi51c2VDYWNoZWRTZXRUaW1lb3V0P2U6c2V0VGltZW91dDtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3UoZSx0KX0pKX1mdW5jdGlvbiBuKGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSx1PW4udXNlQ2FjaGVkU2V0VGltZW91dCxyPXQoZSx7dXNlQ2FjaGVkU2V0VGltZW91dDp1fSk7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gci50aGVuKChmdW5jdGlvbigpe3JldHVybiBlfSkpfXJldHVybiBvLnRoZW49ZnVuY3Rpb24oKXtyZXR1cm4gci50aGVuLmFwcGx5KHIsYXJndW1lbnRzKX0sby5jYXRjaD1Qcm9taXNlLnJlc29sdmUoKS5jYXRjaCxvfWV4cG9ydCBkZWZhdWx0IG47XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIGNvbXBvc2VSZWZzKCkge1xuICAgIHZhciByZWZzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgcmVmc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICBpZiAocmVmcy5sZW5ndGggPT09IDIpIHsgLy8gbWljcm8tb3B0aW1pemUgdGhlIGhvdCBwYXRoXG4gICAgICAgIHJldHVybiBjb21wb3NlVHdvUmVmcyhyZWZzWzBdLCByZWZzWzFdKSB8fCBudWxsO1xuICAgIH1cbiAgICB2YXIgY29tcG9zZWRSZWYgPSByZWZzLnNsaWNlKDEpLnJlZHVjZShmdW5jdGlvbiAoc2VtaUNvbWJpbmVkUmVmLCByZWZUb0luY2x1ZGUpIHsgcmV0dXJuIGNvbXBvc2VUd29SZWZzKHNlbWlDb21iaW5lZFJlZiwgcmVmVG9JbmNsdWRlKTsgfSwgcmVmc1swXSk7XG4gICAgcmV0dXJuIGNvbXBvc2VkUmVmIHx8IG51bGw7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBjb21wb3NlUmVmcztcbnZhciBjb21wb3NlZFJlZkNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uIGNvbXBvc2VUd29SZWZzKHJlZjEsIHJlZjIpIHtcbiAgICBpZiAocmVmMSAmJiByZWYyKSB7XG4gICAgICAgIHZhciByZWYxQ2FjaGUgPSBjb21wb3NlZFJlZkNhY2hlLmdldChyZWYxKSB8fCBuZXcgV2Vha01hcCgpO1xuICAgICAgICBjb21wb3NlZFJlZkNhY2hlLnNldChyZWYxLCByZWYxQ2FjaGUpO1xuICAgICAgICB2YXIgY29tcG9zZWRSZWYgPSByZWYxQ2FjaGUuZ2V0KHJlZjIpIHx8IChmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHVwZGF0ZVJlZihyZWYxLCBpbnN0YW5jZSk7XG4gICAgICAgICAgICB1cGRhdGVSZWYocmVmMiwgaW5zdGFuY2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVmMUNhY2hlLnNldChyZWYyLCBjb21wb3NlZFJlZik7XG4gICAgICAgIHJldHVybiBjb21wb3NlZFJlZjtcbiAgICB9XG4gICAgaWYgKCFyZWYxKSB7XG4gICAgICAgIHJldHVybiByZWYyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlZjE7XG4gICAgfVxufVxuZnVuY3Rpb24gdXBkYXRlUmVmKHJlZiwgaW5zdGFuY2UpIHtcbiAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZWYoaW5zdGFuY2UpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSBpbnN0YW5jZTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb21wb3NlUmVmcy5qcy5tYXAiLCIvLyBzcmMvaW5kZXgudHNcbmltcG9ydCBTZWxlY3QgZnJvbSBcInJlYWN0LXNlbGVjdFwiO1xuXG4vLyBzcmMvdXNlQXN5bmNQYWdpbmF0ZS50c1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgYXMgdXNlQ2FsbGJhY2syLCB1c2VTdGF0ZSBhcyB1c2VTdGF0ZTIgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gc3JjL3VzZUFzeW5jUGFnaW5hdGVCYXNlLnRzXG5pbXBvcnQgeyB1c2VMYXp5UmVmIH0gZnJvbSBcIkB2dGFpdHMvdXNlLWxhenktcmVmXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdXNlSXNNb3VudGVkUmVmIGZyb20gXCJ1c2UtaXMtbW91bnRlZC1yZWZcIjtcbmltcG9ydCB1c2VMYXRlc3QgZnJvbSBcInVzZS1sYXRlc3RcIjtcblxuLy8gc3JjL2RlZmF1bHRSZWR1Y2VPcHRpb25zLnRzXG52YXIgZGVmYXVsdFJlZHVjZU9wdGlvbnMgPSAocHJldk9wdGlvbnMsIGxvYWRlZE9wdGlvbnMpID0+IFsuLi5wcmV2T3B0aW9ucywgLi4ubG9hZGVkT3B0aW9uc107XG5cbi8vIHNyYy9kZWZhdWx0U2hvdWxkTG9hZE1vcmUudHNcbnZhciBBVkFJTEFCTEVfREVMVEEgPSAxMDtcbnZhciBkZWZhdWx0U2hvdWxkTG9hZE1vcmUgPSAoc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQsIHNjcm9sbFRvcCkgPT4ge1xuICBjb25zdCBib3R0b21Cb3JkZXIgPSBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgLSBBVkFJTEFCTEVfREVMVEE7XG4gIHJldHVybiBib3R0b21Cb3JkZXIgPCBzY3JvbGxUb3A7XG59O1xuXG4vLyBzcmMvZ2V0SW5pdGlhbENhY2hlLnRzXG52YXIgZ2V0SW5pdGlhbENhY2hlID0gKHBhcmFtcykgPT4gKHtcbiAgaXNGaXJzdExvYWQ6IHRydWUsXG4gIG9wdGlvbnM6IFtdLFxuICBoYXNNb3JlOiB0cnVlLFxuICBpc0xvYWRpbmc6IGZhbHNlLFxuICBsb2NrZWRVbnRpbDogMCxcbiAgYWRkaXRpb25hbDogcGFyYW1zLmFkZGl0aW9uYWxcbn0pO1xuXG4vLyBzcmMvZ2V0SW5pdGlhbE9wdGlvbnNDYWNoZS50c1xudmFyIGdldEluaXRpYWxPcHRpb25zQ2FjaGUgPSAoe1xuICBvcHRpb25zLFxuICBkZWZhdWx0T3B0aW9ucyxcbiAgYWRkaXRpb25hbCxcbiAgZGVmYXVsdEFkZGl0aW9uYWxcbn0pID0+IHtcbiAgY29uc3QgaW5pdGlhbE9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucyA9PT0gdHJ1ZSA/IG51bGwgOiBBcnJheS5pc0FycmF5KGRlZmF1bHRPcHRpb25zKSA/IGRlZmF1bHRPcHRpb25zIDogb3B0aW9ucztcbiAgaWYgKGluaXRpYWxPcHRpb25zKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiXCI6IHtcbiAgICAgICAgaXNGaXJzdExvYWQ6IGZhbHNlLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBvcHRpb25zOiBpbml0aWFsT3B0aW9ucyxcbiAgICAgICAgaGFzTW9yZTogdHJ1ZSxcbiAgICAgICAgbG9ja2VkVW50aWw6IDAsXG4gICAgICAgIGFkZGl0aW9uYWw6IGRlZmF1bHRBZGRpdGlvbmFsIHx8IGFkZGl0aW9uYWxcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiB7fTtcbn07XG5cbi8vIHNyYy9yZXF1ZXN0T3B0aW9ucy50c1xuaW1wb3J0IHsgZ2V0UmVzdWx0IH0gZnJvbSBcImtydXN0eWtyYWJcIjtcbmltcG9ydCBzbGVlcCBmcm9tIFwic2xlZXAtcHJvbWlzZVwiO1xuXG4vLyBzcmMvdmFsaWRhdGVSZXNwb25zZS50c1xudmFyIGVycm9yVGV4dCA9ICdbcmVhY3Qtc2VsZWN0LWFzeW5jLXBhZ2luYXRlXSByZXNwb25zZSBvZiBcImxvYWRPcHRpb25zXCIgc2hvdWxkIGJlIGFuIG9iamVjdCB3aXRoIFwib3B0aW9uc1wiIHByb3AsIHdoaWNoIGNvbnRhaW5zIGFycmF5IG9mIG9wdGlvbnMuJztcbnZhciBjaGVja0lzUmVzcG9uc2UgPSAocmVzcG9uc2UpID0+IHtcbiAgaWYgKCFyZXNwb25zZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCB7IG9wdGlvbnMsIGhhc01vcmUgfSA9IHJlc3BvbnNlO1xuICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBoYXNNb3JlICE9PSBcImJvb2xlYW5cIiAmJiB0eXBlb2YgaGFzTW9yZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgdmFsaWRhdGVSZXNwb25zZSA9IChyZXNwb25zZSkgPT4ge1xuICBpZiAoIWNoZWNrSXNSZXNwb25zZShyZXNwb25zZSkpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yVGV4dCwgXCJSZWNlaXZlZDpcIiwgcmVzcG9uc2UpO1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvclRleHQpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL3JlcXVlc3RPcHRpb25zLnRzXG52YXIgcmVxdWVzdE9wdGlvbnMgPSBhc3luYyAoY2FsbGVyLCBwYXJhbXNSZWYsIG9wdGlvbnNDYWNoZVJlZiwgZGVib3VuY2VUaW1lb3V0LCBzZXRPcHRpb25zQ2FjaGUsIHJlZHVjZU9wdGlvbnMsIGlzTW91bnRlZFJlZikgPT4ge1xuICBjb25zdCBjdXJyZW50SW5wdXRWYWx1ZSA9IHBhcmFtc1JlZi5jdXJyZW50LmlucHV0VmFsdWU7XG4gIGNvbnN0IGlzQ2FjaGVFbXB0eSA9ICFvcHRpb25zQ2FjaGVSZWYuY3VycmVudFtjdXJyZW50SW5wdXRWYWx1ZV07XG4gIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gaXNDYWNoZUVtcHR5ID8gZ2V0SW5pdGlhbENhY2hlKHBhcmFtc1JlZi5jdXJyZW50KSA6IG9wdGlvbnNDYWNoZVJlZi5jdXJyZW50W2N1cnJlbnRJbnB1dFZhbHVlXTtcbiAgaWYgKGN1cnJlbnRPcHRpb25zLmlzTG9hZGluZyB8fCAhY3VycmVudE9wdGlvbnMuaGFzTW9yZSB8fCBjdXJyZW50T3B0aW9ucy5sb2NrZWRVbnRpbCA+IERhdGUubm93KCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc2V0T3B0aW9uc0NhY2hlKFxuICAgIChwcmV2T3B0aW9uc0NhY2hlKSA9PiAoe1xuICAgICAgLi4ucHJldk9wdGlvbnNDYWNoZSxcbiAgICAgIFtjdXJyZW50SW5wdXRWYWx1ZV06IHtcbiAgICAgICAgLi4uY3VycmVudE9wdGlvbnMsXG4gICAgICAgIGlzTG9hZGluZzogdHJ1ZVxuICAgICAgfVxuICAgIH0pXG4gICk7XG4gIGlmIChkZWJvdW5jZVRpbWVvdXQgPiAwICYmIGNhbGxlciA9PT0gXCJpbnB1dC1jaGFuZ2VcIikge1xuICAgIGF3YWl0IHNsZWVwKGRlYm91bmNlVGltZW91dCk7XG4gICAgY29uc3QgbmV3SW5wdXRWYWx1ZSA9IHBhcmFtc1JlZi5jdXJyZW50LmlucHV0VmFsdWU7XG4gICAgaWYgKGN1cnJlbnRJbnB1dFZhbHVlICE9PSBuZXdJbnB1dFZhbHVlKSB7XG4gICAgICBzZXRPcHRpb25zQ2FjaGUoKHByZXZPcHRpb25zQ2FjaGUpID0+IHtcbiAgICAgICAgaWYgKGlzQ2FjaGVFbXB0eSkge1xuICAgICAgICAgIGNvbnN0IHsgW2N1cnJlbnRJbnB1dFZhbHVlXTogaXRlbUZvckRlbGV0ZSwgLi4ucmVzdENhY2hlIH0gPSBwcmV2T3B0aW9uc0NhY2hlO1xuICAgICAgICAgIHJldHVybiByZXN0Q2FjaGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2T3B0aW9uc0NhY2hlLFxuICAgICAgICAgIFtjdXJyZW50SW5wdXRWYWx1ZV06IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRPcHRpb25zLFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBjb25zdCB7IGxvYWRPcHRpb25zLCByZWxvYWRPbkVycm9yVGltZW91dCA9IDAgfSA9IHBhcmFtc1JlZi5jdXJyZW50O1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRSZXN1bHQoXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihcbiAgICAgICgpID0+IGxvYWRPcHRpb25zKFxuICAgICAgICBjdXJyZW50SW5wdXRWYWx1ZSxcbiAgICAgICAgY3VycmVudE9wdGlvbnMub3B0aW9ucyxcbiAgICAgICAgY3VycmVudE9wdGlvbnMuYWRkaXRpb25hbFxuICAgICAgKVxuICAgIClcbiAgKTtcbiAgaWYgKCFpc01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocmVzdWx0LmlzRXJyKCkpIHtcbiAgICBzZXRPcHRpb25zQ2FjaGUoKHByZXZPcHRpb25zQ2FjaGUpID0+ICh7XG4gICAgICAuLi5wcmV2T3B0aW9uc0NhY2hlLFxuICAgICAgW2N1cnJlbnRJbnB1dFZhbHVlXToge1xuICAgICAgICAuLi5jdXJyZW50T3B0aW9ucyxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgbG9ja2VkVW50aWw6IERhdGUubm93KCkgKyByZWxvYWRPbkVycm9yVGltZW91dFxuICAgICAgfVxuICAgIH0pKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgcmVzcG9uc2UgPSByZXN1bHQudW53cmFwKCk7XG4gIGlmICh2YWxpZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgaGFzTW9yZSB9ID0gcmVzcG9uc2U7XG4gICAgY29uc3QgbmV3QWRkaXRpb25hbCA9IE9iamVjdC5oYXNPd24ocmVzcG9uc2UsIFwiYWRkaXRpb25hbFwiKSA/IHJlc3BvbnNlLmFkZGl0aW9uYWwgOiBjdXJyZW50T3B0aW9ucy5hZGRpdGlvbmFsO1xuICAgIHNldE9wdGlvbnNDYWNoZSgocHJldk9wdGlvbnNDYWNoZSkgPT4gKHtcbiAgICAgIC4uLnByZXZPcHRpb25zQ2FjaGUsXG4gICAgICBbY3VycmVudElucHV0VmFsdWVdOiB7XG4gICAgICAgIC4uLmN1cnJlbnRPcHRpb25zLFxuICAgICAgICBvcHRpb25zOiByZWR1Y2VPcHRpb25zKGN1cnJlbnRPcHRpb25zLm9wdGlvbnMsIG9wdGlvbnMsIG5ld0FkZGl0aW9uYWwpLFxuICAgICAgICBoYXNNb3JlOiAhIWhhc01vcmUsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGlzRmlyc3RMb2FkOiBmYWxzZSxcbiAgICAgICAgYWRkaXRpb25hbDogbmV3QWRkaXRpb25hbFxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxufTtcblxuLy8gc3JjL3VzZUFzeW5jUGFnaW5hdGVCYXNlLnRzXG52YXIgaW5jcmVhc2VTdGF0ZUlkID0gKHByZXZTdGF0ZUlkKSA9PiBwcmV2U3RhdGVJZCArIDE7XG52YXIgdXNlQXN5bmNQYWdpbmF0ZUJhc2UgPSAocGFyYW1zLCBkZXBzID0gW10pID0+IHtcbiAgY29uc3Qge1xuICAgIGRlZmF1bHRPcHRpb25zLFxuICAgIGxvYWRPcHRpb25zT25NZW51T3BlbiA9IHRydWUsXG4gICAgZGVib3VuY2VUaW1lb3V0ID0gMCxcbiAgICBpbnB1dFZhbHVlLFxuICAgIG1lbnVJc09wZW4sXG4gICAgZmlsdGVyT3B0aW9uID0gbnVsbCxcbiAgICByZWR1Y2VPcHRpb25zID0gZGVmYXVsdFJlZHVjZU9wdGlvbnMsXG4gICAgc2hvdWxkTG9hZE1vcmUgPSBkZWZhdWx0U2hvdWxkTG9hZE1vcmVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgaXNNb3VudGVkUmVmID0gdXNlSXNNb3VudGVkUmVmKCk7XG4gIGNvbnN0IHJlZHVjZU9wdGlvbnNSZWYgPSB1c2VMYXRlc3QocmVkdWNlT3B0aW9ucyk7XG4gIGNvbnN0IGxvYWRPcHRpb25zT25NZW51T3BlblJlZiA9IHVzZUxhdGVzdChsb2FkT3B0aW9uc09uTWVudU9wZW4pO1xuICBjb25zdCBpc0luaXRSZWYgPSB1c2VSZWYodHJ1ZSk7XG4gIGNvbnN0IHBhcmFtc1JlZiA9IHVzZVJlZihwYXJhbXMpO1xuICBwYXJhbXNSZWYuY3VycmVudCA9IHBhcmFtcztcbiAgY29uc3QgW19zdGF0ZUlkLCBzZXRTdGF0ZUlkXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBvcHRpb25zQ2FjaGVSZWYgPSB1c2VMYXp5UmVmKCgpID0+IGdldEluaXRpYWxPcHRpb25zQ2FjaGUocGFyYW1zKSk7XG4gIGNvbnN0IGNhbGxSZXF1ZXN0T3B0aW9uc1JlZiA9IHVzZUxhdGVzdChcbiAgICAoY2FsbGVyKSA9PiB7XG4gICAgICByZXF1ZXN0T3B0aW9ucyhcbiAgICAgICAgY2FsbGVyLFxuICAgICAgICBwYXJhbXNSZWYsXG4gICAgICAgIG9wdGlvbnNDYWNoZVJlZixcbiAgICAgICAgZGVib3VuY2VUaW1lb3V0LFxuICAgICAgICAocmVkdWNlU3RhdGUpID0+IHtcbiAgICAgICAgICBvcHRpb25zQ2FjaGVSZWYuY3VycmVudCA9IHJlZHVjZVN0YXRlKG9wdGlvbnNDYWNoZVJlZi5jdXJyZW50KTtcbiAgICAgICAgICBpZiAoaXNNb3VudGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNldFN0YXRlSWQoaW5jcmVhc2VTdGF0ZUlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlZHVjZU9wdGlvbnNSZWYuY3VycmVudCxcbiAgICAgICAgaXNNb3VudGVkUmVmXG4gICAgICApO1xuICAgIH1cbiAgKTtcbiAgY29uc3QgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50SW5wdXRWYWx1ZSA9IHBhcmFtc1JlZi5jdXJyZW50LmlucHV0VmFsdWU7XG4gICAgY29uc3QgY3VycmVudE9wdGlvbnMyID0gb3B0aW9uc0NhY2hlUmVmLmN1cnJlbnRbY3VycmVudElucHV0VmFsdWVdO1xuICAgIGlmIChjdXJyZW50T3B0aW9uczIpIHtcbiAgICAgIGNhbGxSZXF1ZXN0T3B0aW9uc1JlZi5jdXJyZW50KFwibWVudS1zY3JvbGxcIik7XG4gICAgfVxuICB9LCBbY2FsbFJlcXVlc3RPcHRpb25zUmVmLCBvcHRpb25zQ2FjaGVSZWZdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNJbml0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzSW5pdFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnNDYWNoZVJlZi5jdXJyZW50ID0ge307XG4gICAgICBzZXRTdGF0ZUlkKGluY3JlYXNlU3RhdGVJZCk7XG4gICAgfVxuICAgIGlmIChkZWZhdWx0T3B0aW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgY2FsbFJlcXVlc3RPcHRpb25zUmVmLmN1cnJlbnQoXCJhdXRvbG9hZFwiKTtcbiAgICB9XG4gIH0sIGRlcHMpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZW51SXNPcGVuICYmICFvcHRpb25zQ2FjaGVSZWYuY3VycmVudFtpbnB1dFZhbHVlXSkge1xuICAgICAgY2FsbFJlcXVlc3RPcHRpb25zUmVmLmN1cnJlbnQoXCJpbnB1dC1jaGFuZ2VcIik7XG4gICAgfVxuICB9LCBbY2FsbFJlcXVlc3RPcHRpb25zUmVmLCBpbnB1dFZhbHVlLCBtZW51SXNPcGVuLCBvcHRpb25zQ2FjaGVSZWZdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobWVudUlzT3BlbiAmJiAhb3B0aW9uc0NhY2hlUmVmLmN1cnJlbnRbXCJcIl0gJiYgbG9hZE9wdGlvbnNPbk1lbnVPcGVuUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNhbGxSZXF1ZXN0T3B0aW9uc1JlZi5jdXJyZW50KFwibWVudS10b2dnbGVcIik7XG4gICAgfVxuICB9LCBbXG4gICAgY2FsbFJlcXVlc3RPcHRpb25zUmVmLFxuICAgIGxvYWRPcHRpb25zT25NZW51T3BlblJlZixcbiAgICBtZW51SXNPcGVuLFxuICAgIG9wdGlvbnNDYWNoZVJlZlxuICBdKTtcbiAgY29uc3QgY3VycmVudE9wdGlvbnMgPSBvcHRpb25zQ2FjaGVSZWYuY3VycmVudFtpbnB1dFZhbHVlXSB8fCBnZXRJbml0aWFsQ2FjaGUocGFyYW1zKTtcbiAgcmV0dXJuIHtcbiAgICBoYW5kbGVTY3JvbGxlZFRvQm90dG9tLFxuICAgIHNob3VsZExvYWRNb3JlLFxuICAgIGZpbHRlck9wdGlvbixcbiAgICBpc0xvYWRpbmc6IGN1cnJlbnRPcHRpb25zLmlzTG9hZGluZyB8fCBjdXJyZW50T3B0aW9ucy5sb2NrZWRVbnRpbCA+IERhdGUubm93KCksXG4gICAgaXNGaXJzdExvYWQ6IGN1cnJlbnRPcHRpb25zLmlzRmlyc3RMb2FkLFxuICAgIG9wdGlvbnM6IGN1cnJlbnRPcHRpb25zLm9wdGlvbnNcbiAgfTtcbn07XG5cbi8vIHNyYy91c2VBc3luY1BhZ2luYXRlLnRzXG52YXIgdXNlQXN5bmNQYWdpbmF0ZSA9IChwYXJhbXMsIGRlcHMgPSBbXSkgPT4ge1xuICBjb25zdCB7XG4gICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVBhcmFtLFxuICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW5QYXJhbSxcbiAgICBkZWZhdWx0SW5wdXRWYWx1ZTogZGVmYXVsdElucHV0VmFsdWVQYXJhbSxcbiAgICBkZWZhdWx0TWVudUlzT3BlbjogZGVmYXVsdE1lbnVJc09wZW5QYXJhbSxcbiAgICBvbklucHV0Q2hhbmdlOiBvbklucHV0Q2hhbmdlUGFyYW0sXG4gICAgb25NZW51Q2xvc2U6IG9uTWVudUNsb3NlUGFyYW0sXG4gICAgb25NZW51T3Blbjogb25NZW51T3BlblBhcmFtXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IFtpbnB1dFZhbHVlU3RhdGUsIHNldElucHV0VmFsdWVdID0gdXNlU3RhdGUyKFxuICAgIGRlZmF1bHRJbnB1dFZhbHVlUGFyYW0gfHwgXCJcIlxuICApO1xuICBjb25zdCBbbWVudUlzT3BlblN0YXRlLCBzZXRNZW51SXNPcGVuXSA9IHVzZVN0YXRlMighIWRlZmF1bHRNZW51SXNPcGVuUGFyYW0pO1xuICBjb25zdCBpbnB1dFZhbHVlID0gdHlwZW9mIGlucHV0VmFsdWVQYXJhbSA9PT0gXCJzdHJpbmdcIiA/IGlucHV0VmFsdWVQYXJhbSA6IGlucHV0VmFsdWVTdGF0ZTtcbiAgY29uc3QgbWVudUlzT3BlbiA9IHR5cGVvZiBtZW51SXNPcGVuUGFyYW0gPT09IFwiYm9vbGVhblwiID8gbWVudUlzT3BlblBhcmFtIDogbWVudUlzT3BlblN0YXRlO1xuICBjb25zdCBvbklucHV0Q2hhbmdlID0gdXNlQ2FsbGJhY2syKFxuICAgIChuZXh0SW5wdXRWYWx1ZSwgYWN0aW9uTWV0YSkgPT4ge1xuICAgICAgaWYgKG9uSW5wdXRDaGFuZ2VQYXJhbSkge1xuICAgICAgICBvbklucHV0Q2hhbmdlUGFyYW0obmV4dElucHV0VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgICAgfVxuICAgICAgc2V0SW5wdXRWYWx1ZShuZXh0SW5wdXRWYWx1ZSk7XG4gICAgfSxcbiAgICBbb25JbnB1dENoYW5nZVBhcmFtXVxuICApO1xuICBjb25zdCBvbk1lbnVDbG9zZSA9IHVzZUNhbGxiYWNrMigoKSA9PiB7XG4gICAgaWYgKG9uTWVudUNsb3NlUGFyYW0pIHtcbiAgICAgIG9uTWVudUNsb3NlUGFyYW0oKTtcbiAgICB9XG4gICAgc2V0TWVudUlzT3BlbihmYWxzZSk7XG4gIH0sIFtvbk1lbnVDbG9zZVBhcmFtXSk7XG4gIGNvbnN0IG9uTWVudU9wZW4gPSB1c2VDYWxsYmFjazIoKCkgPT4ge1xuICAgIGlmIChvbk1lbnVPcGVuUGFyYW0pIHtcbiAgICAgIG9uTWVudU9wZW5QYXJhbSgpO1xuICAgIH1cbiAgICBzZXRNZW51SXNPcGVuKHRydWUpO1xuICB9LCBbb25NZW51T3BlblBhcmFtXSk7XG4gIGNvbnN0IGJhc2VSZXN1bHQgPSB1c2VBc3luY1BhZ2luYXRlQmFzZShcbiAgICB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBpbnB1dFZhbHVlLFxuICAgICAgbWVudUlzT3BlblxuICAgIH0sXG4gICAgZGVwc1xuICApO1xuICByZXR1cm4ge1xuICAgIC4uLmJhc2VSZXN1bHQsXG4gICAgaW5wdXRWYWx1ZSxcbiAgICBtZW51SXNPcGVuLFxuICAgIG9uSW5wdXRDaGFuZ2UsXG4gICAgb25NZW51Q2xvc2UsXG4gICAgb25NZW51T3BlblxuICB9O1xufTtcblxuLy8gc3JjL3VzZUNvbXBvbmVudHMudHNcbmltcG9ydCB7IHVzZU1lbW8gYXMgdXNlTWVtbzIgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbXBvbmVudHMgYXMgZGVmYXVsdENvbXBvbmVudHMgfSBmcm9tIFwicmVhY3Qtc2VsZWN0XCI7XG5cbi8vIHNyYy93cmFwTWVudUxpc3QudHN4XG5pbXBvcnQgY29tcG9zZVJlZnMgZnJvbSBcIkBzZXpuYW0vY29tcG9zZS1yZWFjdC1yZWZzXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayBhcyB1c2VDYWxsYmFjazMsIHVzZUVmZmVjdCBhcyB1c2VFZmZlY3QyLCB1c2VNZW1vLCB1c2VSZWYgYXMgdXNlUmVmMiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsganN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG52YXIgQ0hFQ0tfVElNRU9VVCA9IDMwMDtcbmZ1bmN0aW9uIHdyYXBNZW51TGlzdChNZW51TGlzdDIpIHtcbiAgZnVuY3Rpb24gV3JhcHBlZE1lbnVMaXN0KHByb3BzKSB7XG4gICAgY29uc3QgeyBzZWxlY3RQcm9wcywgaW5uZXJSZWYgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbSwgc2hvdWxkTG9hZE1vcmUgfSA9IHNlbGVjdFByb3BzO1xuICAgIGNvbnN0IGNoZWNrVGltZW91dFJlZiA9IHVzZVJlZjIobnVsbCk7XG4gICAgY29uc3QgbWVudUxpc3RSZWYgPSB1c2VSZWYyKG51bGwpO1xuICAgIGNvbnN0IHNob3VsZEhhbmRsZSA9IHVzZUNhbGxiYWNrMygoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IG1lbnVMaXN0UmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gZWw7XG4gICAgICByZXR1cm4gc2hvdWxkTG9hZE1vcmUoc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQsIHNjcm9sbFRvcCk7XG4gICAgfSwgW3Nob3VsZExvYWRNb3JlXSk7XG4gICAgY29uc3QgY2hlY2tBbmRIYW5kbGUgPSB1c2VDYWxsYmFjazMoKCkgPT4ge1xuICAgICAgaWYgKHNob3VsZEhhbmRsZSgpKSB7XG4gICAgICAgIGlmIChoYW5kbGVTY3JvbGxlZFRvQm90dG9tKSB7XG4gICAgICAgICAgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW3Nob3VsZEhhbmRsZSwgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbV0pO1xuICAgIGNvbnN0IHNldENoZWNrQW5kSGFuZGxlVGltZW91dCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gKCkgPT4ge1xuICAgICAgICBjaGVja0FuZEhhbmRsZSgpO1xuICAgICAgICBjaGVja1RpbWVvdXRSZWYuY3VycmVudCA9IHNldFRpbWVvdXQocmVzLCBDSEVDS19USU1FT1VUKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0sIFtjaGVja0FuZEhhbmRsZV0pO1xuICAgIHVzZUVmZmVjdDIoKCkgPT4ge1xuICAgICAgc2V0Q2hlY2tBbmRIYW5kbGVUaW1lb3V0KCk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoY2hlY2tUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoY2hlY2tUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIE1lbnVMaXN0MixcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGlubmVyUmVmOiBjb21wb3NlUmVmcyhpbm5lclJlZiwgbWVudUxpc3RSZWYpXG4gICAgICB9XG4gICAgKTtcbiAgfVxuICByZXR1cm4gV3JhcHBlZE1lbnVMaXN0O1xufVxuXG4vLyBzcmMvdXNlQ29tcG9uZW50cy50c1xudmFyIE1lbnVMaXN0ID0gd3JhcE1lbnVMaXN0KFxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGZpeCB0eXBlc1xuICBkZWZhdWx0Q29tcG9uZW50cy5NZW51TGlzdFxuKTtcbnZhciB1c2VDb21wb25lbnRzID0gKGNvbXBvbmVudHMpID0+IHVzZU1lbW8yKFxuICAoKSA9PiAoe1xuICAgIE1lbnVMaXN0LFxuICAgIC4uLmNvbXBvbmVudHNcbiAgfSksXG4gIFtjb21wb25lbnRzXVxuKTtcblxuLy8gc3JjL3dpdGhBc3luY1BhZ2luYXRlLnRzeFxuaW1wb3J0IHsganN4IGFzIGpzeDIgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbnZhciBkZWZhdWx0Q2FjaGVVbmlxcyA9IFtdO1xudmFyIGRlZmF1bHRDb21wb25lbnRzMiA9IHt9O1xuZnVuY3Rpb24gd2l0aEFzeW5jUGFnaW5hdGUoU2VsZWN0Q29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIFdpdGhBc3luY1BhZ2luYXRlKHByb3BzKSB7XG4gICAgY29uc3Qge1xuICAgICAgY29tcG9uZW50cyA9IGRlZmF1bHRDb21wb25lbnRzMixcbiAgICAgIHNlbGVjdFJlZiA9IHZvaWQgMCxcbiAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nUHJvcCxcbiAgICAgIGNhY2hlVW5pcXMgPSBkZWZhdWx0Q2FjaGVVbmlxcyxcbiAgICAgIC4uLnJlc3RcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3QgYXN5bmNQYWdpbmF0ZVByb3BzID0gdXNlQXN5bmNQYWdpbmF0ZShyZXN0LCBjYWNoZVVuaXFzKTtcbiAgICBjb25zdCBwcm9jZXNzZWRDb21wb25lbnRzID0gdXNlQ29tcG9uZW50cyhcbiAgICAgIGNvbXBvbmVudHNcbiAgICApO1xuICAgIGNvbnN0IGlzTG9hZGluZyA9IHR5cGVvZiBpc0xvYWRpbmdQcm9wID09PSBcImJvb2xlYW5cIiA/IGlzTG9hZGluZ1Byb3AgOiBhc3luY1BhZ2luYXRlUHJvcHMuaXNMb2FkaW5nO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4MihcbiAgICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIC4uLmFzeW5jUGFnaW5hdGVQcm9wcyxcbiAgICAgICAgaXNMb2FkaW5nLFxuICAgICAgICBjb21wb25lbnRzOiBwcm9jZXNzZWRDb21wb25lbnRzLFxuICAgICAgICByZWY6IHNlbGVjdFJlZlxuICAgICAgfVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIFdpdGhBc3luY1BhZ2luYXRlO1xufVxuXG4vLyBzcmMvcmVkdWNlR3JvdXBlZE9wdGlvbnMudHNcbnZhciBjaGVja0dyb3VwID0gKGdyb3VwKSA9PiB7XG4gIGlmICghZ3JvdXApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgeyBsYWJlbCwgb3B0aW9ucyB9ID0gZ3JvdXA7XG4gIGlmICh0eXBlb2YgbGFiZWwgIT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGxhYmVsICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgcmVkdWNlR3JvdXBlZE9wdGlvbnMgPSAocHJldk9wdGlvbnMsIGxvYWRlZE9wdGlvbnMpID0+IHtcbiAgY29uc3QgcmVzID0gcHJldk9wdGlvbnMuc2xpY2UoKTtcbiAgY29uc3QgbWFwTGFiZWxUb0luZGV4ID0ge307XG4gIGxldCBwcmV2T3B0aW9uc0luZGV4ID0gMDtcbiAgY29uc3QgcHJldk9wdGlvbnNMZW5ndGggPSBwcmV2T3B0aW9ucy5sZW5ndGg7XG4gIGZvciAoY29uc3Qgb3B0aW9uT3JHcm91cCBvZiBsb2FkZWRPcHRpb25zKSB7XG4gICAgY29uc3QgZ3JvdXAgPSBjaGVja0dyb3VwKG9wdGlvbk9yR3JvdXApID8gb3B0aW9uT3JHcm91cCA6IHtcbiAgICAgIG9wdGlvbnM6IFtvcHRpb25Pckdyb3VwXVxuICAgIH07XG4gICAgY29uc3QgeyBsYWJlbCA9IFwiXCIgfSA9IGdyb3VwO1xuICAgIGxldCBncm91cEluZGV4ID0gbWFwTGFiZWxUb0luZGV4W2xhYmVsXTtcbiAgICBpZiAodHlwZW9mIGdyb3VwSW5kZXggIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGZvciAoOyBwcmV2T3B0aW9uc0luZGV4IDwgcHJldk9wdGlvbnNMZW5ndGggJiYgdHlwZW9mIG1hcExhYmVsVG9JbmRleFtsYWJlbF0gIT09IFwibnVtYmVyXCI7ICsrcHJldk9wdGlvbnNJbmRleCkge1xuICAgICAgICBjb25zdCBwcmV2R3JvdXAgPSBwcmV2T3B0aW9uc1twcmV2T3B0aW9uc0luZGV4XTtcbiAgICAgICAgaWYgKGNoZWNrR3JvdXAocHJldkdyb3VwKSkge1xuICAgICAgICAgIG1hcExhYmVsVG9JbmRleFtwcmV2R3JvdXAubGFiZWwgfHwgXCJcIl0gPSBwcmV2T3B0aW9uc0luZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBncm91cEluZGV4ID0gbWFwTGFiZWxUb0luZGV4W2xhYmVsXTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBncm91cEluZGV4ICE9PSBcIm51bWJlclwiKSB7XG4gICAgICBtYXBMYWJlbFRvSW5kZXhbbGFiZWxdID0gcmVzLmxlbmd0aDtcbiAgICAgIHJlcy5wdXNoKGdyb3VwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzW2dyb3VwSW5kZXhdID0ge1xuICAgICAgICAuLi5yZXNbZ3JvdXBJbmRleF0sXG4gICAgICAgIG9wdGlvbnM6IFsuLi5yZXNbZ3JvdXBJbmRleF0ub3B0aW9ucywgLi4uZ3JvdXAub3B0aW9uc11cbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59O1xuXG4vLyBzcmMvaW5kZXgudHNcbnZhciBBc3luY1BhZ2luYXRlID0gd2l0aEFzeW5jUGFnaW5hdGUoU2VsZWN0KTtcbmV4cG9ydCB7XG4gIEFzeW5jUGFnaW5hdGUsXG4gIGNoZWNrSXNSZXNwb25zZSxcbiAgcmVkdWNlR3JvdXBlZE9wdGlvbnMsXG4gIHVzZUFzeW5jUGFnaW5hdGUsXG4gIHVzZUFzeW5jUGFnaW5hdGVCYXNlLFxuICB1c2VDb21wb25lbnRzLFxuICB2YWxpZGF0ZVJlc3BvbnNlLFxuICB3aXRoQXN5bmNQYWdpbmF0ZSxcbiAgd3JhcE1lbnVMaXN0XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi9zaG9wXCJcblxuZXhwb3J0IGNsYXNzIExheW91dGVyRGF0YSB7XG4gICAgZmlyc3RuYW1lOiBzdHJpbmdcbiAgICBjb21wYW55OiBzdHJpbmdcbiAgICBsYXN0bmFtZTogc3RyaW5nXG4gICAgc3RyZWV0OiBzdHJpbmdcbiAgICBob3VzZU51bWJlcjogc3RyaW5nXG4gICAgemlwOiBzdHJpbmdcbiAgICBjaXR5OiBzdHJpbmdcbiAgICBwaG9uZTogc3RyaW5nXG4gICAgY291bnRyeTogc3RyaW5nXG4gICAgdXN0aWQ6IHN0cmluZ1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZmlyc3RuYW1lID0gXCJcIlxuICAgICAgICB0aGlzLmNvbXBhbnkgPSBcIlwiXG4gICAgICAgIHRoaXMubGFzdG5hbWUgPSBcIlwiXG4gICAgICAgIHRoaXMuc3RyZWV0ID0gXCJcIlxuICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gXCJcIlxuICAgICAgICB0aGlzLnppcCA9IFwiXCJcbiAgICAgICAgdGhpcy5jaXR5ID0gXCJcIlxuICAgICAgICB0aGlzLnBob25lID0gXCJcIlxuICAgICAgICB0aGlzLmNvdW50cnkgPSBcIlwiXG4gICAgICAgIHRoaXMudXN0aWQgPSBcIlwiXG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbnRhY3Qge1xuICAgIHVpZDogbnVtYmVyXG4gICAgdXNlcm5hbWU6IHN0cmluZ1xuICAgIGVtYWlsOiBzdHJpbmdcbiAgICBwYXNzd29yZDogc3RyaW5nXG4gICAgdXVpZDogc3RyaW5nXG4gICAgc2hvcHM6IFNob3BbXVxuICAgIGxheW91dGVyX2RhdGE6IExheW91dGVyRGF0YVxuXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51aWQgPSAwXG4gICAgICAgIHRoaXMudXVpZCA9IFwiXCJcbiAgICAgICAgdGhpcy51c2VybmFtZSA9IFwiXCJcbiAgICAgICAgdGhpcy5lbWFpbCA9IFwiXCJcbiAgICAgICAgdGhpcy5wYXNzd29yZCA9IFwiXCJcbiAgICAgICAgdGhpcy5zaG9wcyA9IFtdXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YSA9IG5ldyBMYXlvdXRlckRhdGEoKVxuICAgIH1cblxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMudWlkID0gaXRlbS5jb250YWN0LnVpZFxuICAgICAgICB0aGlzLnV1aWQgPSBpdGVtLmNvbnRhY3QudXVpZFxuICAgICAgICB0aGlzLmVtYWlsID0gaXRlbS5jb250YWN0LmVtYWlsXG4gICAgICAgIHRoaXMudXNlcm5hbWUgPSBpdGVtLmNvbnRhY3QudXNlcm5hbWVcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmZpcnN0bmFtZSA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLmZpcnN0bmFtZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuY29tcGFueSA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLmNvbXBhbnlcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmxhc3RuYW1lID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEubGFzdG5hbWVcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLnN0cmVldCA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLnN0cmVldFxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuaG91c2VOdW1iZXIgPSBpdGVtLmNvbnRhY3QubGF5b3V0ZXJfZGF0YS5ob3VzZU51bWJlclxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuemlwID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEuemlwXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5jaXR5ID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEuY2l0eVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEucGhvbmUgPSBpdGVtLmNvbnRhY3QubGF5b3V0ZXJfZGF0YS5waG9uZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuY291bnRyeSA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLmNvdW50cnlcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLnVzdGlkID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEudXN0aWRcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Gb3JtRGF0YShmb3JtZGF0YTogYW55LCBzaG9wOiBTaG9wID0gbnVsbCkge1xuXG4gICAgICAgIHRoaXMuZW1haWwgPSBmb3JtZGF0YS5lbWFpbFxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuY29tcGFueSA9IGZvcm1kYXRhLmNvbXBhbnlcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmZpcnN0bmFtZSA9IGZvcm1kYXRhLmZpcnN0bmFtZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEubGFzdG5hbWUgPSBmb3JtZGF0YS5sYXN0bmFtZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuc3RyZWV0ID0gZm9ybWRhdGEuc3RyZWV0XG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5ob3VzZU51bWJlciA9IGZvcm1kYXRhLmhvdXNlTnVtYmVyXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS56aXAgPSBmb3JtZGF0YS56aXBcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmNpdHkgPSBmb3JtZGF0YS5jaXR5XG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5waG9uZSA9IGZvcm1kYXRhLnBob25lXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5jb3VudHJ5ID0gZm9ybWRhdGEuY291bnRyeVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEudXN0aWQgPSBmb3JtZGF0YS51c3RpZFxuICAgICAgICBpZihzaG9wKSB7XG4gICAgICAgICAgICB0aGlzLnNob3BzLnB1c2goc2hvcClcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCI7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29udGFjdCB9IGZyb20gXCIuLi9tb2RlbC9jb250YWN0XCI7XG5pbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSBcIi4uL21vZGVsL2FkZHJlc3NcIjtcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiO1xuXG5Ac2luZ2xldG9uKClcbkBhdXRvSW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29udGFjdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuPzogVG9rZW4pIHt9XG5cbiAgYXN5bmMgY3JlYXRlQ29udGFjdChjb250YWN0OiBDb250YWN0KTogUHJvbWlzZTxDb250YWN0PiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL2NvbnRhY3QvY3JlYXRlJywgeydjb250YWN0JzogY29udGFjdH0gLHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUNvbnRhY3QoY29udGFjdDogQ29udGFjdCk6IFByb21pc2U8Q29udGFjdD4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLnB1dCgnL2FwcHMvYXBpL2NvbnRhY3QvdXBkYXRlLycgKyBjb250YWN0LnV1aWQsIHsnY29udGFjdCc6IGNvbnRhY3R9ICx7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICB9XG4gICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRDb250YWN0cyhzZWFyY2hRdWVyeTogU3RyaW5nLCBwYWdlOiBOdW1iZXIsIHNob3A6IFNob3ApOiBQcm9taXNlPENvbnRhY3RbXT4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL2NvbnRhY3QvYWxsYnlzaG9wLycgKyBzaG9wLnV1aWQgKyAnP3Rlcm09JyArIHNlYXJjaFF1ZXJ5ICsgJyZwYWdlPScgKyBwYWdlLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBsZXQgY29udGFjdCA9IG5ldyBDb250YWN0O1xuICAgICAgICAgIGNvbnRhY3QucGFyc2VGcm9tSnNvbih7Y29udGFjdDogaXRlbX0pO1xuICAgICAgICAgIHJldHVybiBjb250YWN0O1xuICAgICAgICB9KVxuICAgIFxuICAgIH0pO1xuICB9XG5cbn1cbiIsImltcG9ydCB2YWxpZGF0ZSBmcm9tICcuL3ZhbGlkYXRlLmpzJztcbmNvbnN0IGJ5dGVUb0hleCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgIGJ5dGVUb0hleC5wdXNoKChpICsgMHgxMDApLnRvU3RyaW5nKDE2KS5zbGljZSgxKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdW5zYWZlU3RyaW5naWZ5KGFyciwgb2Zmc2V0ID0gMCkge1xuICAgIHJldHVybiAoYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAwXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDFdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMl1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAzXV0gK1xuICAgICAgICAnLScgK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDRdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNV1dICtcbiAgICAgICAgJy0nICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA2XV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDddXSArXG4gICAgICAgICctJyArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgOF1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA5XV0gK1xuICAgICAgICAnLScgK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDEwXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDExXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDEyXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDEzXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDE0XV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDE1XV0pLnRvTG93ZXJDYXNlKCk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnkoYXJyLCBvZmZzZXQgPSAwKSB7XG4gICAgY29uc3QgdXVpZCA9IHVuc2FmZVN0cmluZ2lmeShhcnIsIG9mZnNldCk7XG4gICAgaWYgKCF2YWxpZGF0ZSh1dWlkKSkge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ1N0cmluZ2lmaWVkIFVVSUQgaXMgaW52YWxpZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdXVpZDtcbn1cbmV4cG9ydCBkZWZhdWx0IHN0cmluZ2lmeTtcbiIsImxldCBnZXRSYW5kb21WYWx1ZXM7XG5jb25zdCBybmRzOCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJuZygpIHtcbiAgICBpZiAoIWdldFJhbmRvbVZhbHVlcykge1xuICAgICAgICBpZiAodHlwZW9mIGNyeXB0byA9PT0gJ3VuZGVmaW5lZCcgfHwgIWNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY3J5cHRvLmdldFJhbmRvbVZhbHVlcygpIG5vdCBzdXBwb3J0ZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQjZ2V0cmFuZG9tdmFsdWVzLW5vdC1zdXBwb3J0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRSYW5kb21WYWx1ZXMgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQoY3J5cHRvKTtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcyhybmRzOCk7XG59XG4iLCJjb25zdCByYW5kb21VVUlEID0gdHlwZW9mIGNyeXB0byAhPT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvLnJhbmRvbVVVSUQgJiYgY3J5cHRvLnJhbmRvbVVVSUQuYmluZChjcnlwdG8pO1xuZXhwb3J0IGRlZmF1bHQgeyByYW5kb21VVUlEIH07XG4iLCJpbXBvcnQgbmF0aXZlIGZyb20gJy4vbmF0aXZlLmpzJztcbmltcG9ydCBybmcgZnJvbSAnLi9ybmcuanMnO1xuaW1wb3J0IHsgdW5zYWZlU3RyaW5naWZ5IH0gZnJvbSAnLi9zdHJpbmdpZnkuanMnO1xuZnVuY3Rpb24gdjQob3B0aW9ucywgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAobmF0aXZlLnJhbmRvbVVVSUQgJiYgIWJ1ZiAmJiAhb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmF0aXZlLnJhbmRvbVVVSUQoKTtcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgY29uc3Qgcm5kcyA9IG9wdGlvbnMucmFuZG9tIHx8IChvcHRpb25zLnJuZyB8fCBybmcpKCk7XG4gICAgcm5kc1s2XSA9IChybmRzWzZdICYgMHgwZikgfCAweDQwO1xuICAgIHJuZHNbOF0gPSAocm5kc1s4XSAmIDB4M2YpIHwgMHg4MDtcbiAgICBpZiAoYnVmKSB7XG4gICAgICAgIG9mZnNldCA9IG9mZnNldCB8fCAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgICAgICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHJuZHNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgcmV0dXJuIHVuc2FmZVN0cmluZ2lmeShybmRzKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHY0O1xuIiwiaW1wb3J0IHt2NCBhcyB1dWlkdjR9IGZyb20gJ3V1aWQnXG5cbmV4cG9ydCBjbGFzcyBBY2NvdW50IHtcbiAgICB1aWQ6IE51bWJlclxuICAgIGFwcGVuZGl4OiBTdHJpbmdcbiAgICB0aXRsZTogU3RyaW5nXG4gICAgdXVpZDogU3RyaW5nXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51aWQgPSAwXG4gICAgICAgIHRoaXMudXVpZCA9IFwiXCJcbiAgICAgICAgdGhpcy5hcHBlbmRpeCA9IFwiXCJcbiAgICAgICAgdGhpcy50aXRsZSA9IFwiXCJcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnVpZCA9IGl0ZW0uYWNjb3VudC51aWRcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS5hY2NvdW50LnV1aWRcbiAgICAgICAgdGhpcy50aXRsZSA9IGl0ZW0uYWNjb3VudC50aXRsZVxuICAgICAgICB0aGlzLmFwcGVuZGl4ID0gaXRlbS5hY2NvdW50LmFwcGVuZGl4XG4gICAgfVxufSIsImltcG9ydCB7djQgYXMgdXVpZHY0fSBmcm9tICd1dWlkJ1xuaW1wb3J0IHtDb250YWN0fSBmcm9tIFwiLi9jb250YWN0XCJcbmltcG9ydCB7U2hvcH0gZnJvbSBcIi4vc2hvcFwiXG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzIHtcbiAgICB1aWQ6IE51bWJlclxuICAgIHV1aWQ6IFN0cmluZ1xuICAgIGZpcnN0bmFtZTogU3RyaW5nXG4gICAgbGFzdG5hbWU6IFN0cmluZ1xuICAgIHN0cmVldDogU3RyaW5nXG4gICAgaG91c2VOdW1iZXI6IFN0cmluZ1xuICAgIHppcDogU3RyaW5nXG4gICAgY29tcGFueTogU3RyaW5nXG4gICAgY29tcGFueTI6IFN0cmluZ1xuICAgIHBob25lOiBTdHJpbmdcbiAgICBjb3VudHJ5OiBTdHJpbmdcbiAgICB1c3RpZDogU3RyaW5nXG4gICAgY2l0eTogU3RyaW5nXG4gICAgZW1haWw6IFN0cmluZ1xuICAgIGNvbnRhY3Q6IENvbnRhY3RcbiAgICB0eXBlOiBOdW1iZXJcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnVpZCA9IDBcbiAgICAgICAgdGhpcy51dWlkID0gXCJcIlxuICAgICAgICB0aGlzLmZpcnN0bmFtZSA9IFwiXCJcbiAgICAgICAgdGhpcy5sYXN0bmFtZSA9IFwiXCJcbiAgICAgICAgdGhpcy5zdHJlZXQgPSBcIlwiXG4gICAgICAgIHRoaXMuaG91c2VOdW1iZXIgPSBcIlwiXG4gICAgICAgIHRoaXMuemlwID0gXCJcIlxuICAgICAgICB0aGlzLmNvbXBhbnkgPSBcIlwiXG4gICAgICAgIHRoaXMuY29tcGFueTIgPSBcIlwiXG4gICAgICAgIHRoaXMuY2l0eSA9IFwiXCJcbiAgICAgICAgdGhpcy5lbWFpbCA9IFwiXCJcbiAgICAgICAgdGhpcy5jb3VudHJ5ID0gXCJcIlxuICAgICAgICB0aGlzLnVzdGlkID0gXCJcIlxuICAgICAgICB0aGlzLmNvbnRhY3QgPSBuZXcgQ29udGFjdCgpXG4gICAgICAgIHRoaXMudHlwZSA9IDBcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnVpZCA9IGl0ZW0udWlkXG4gICAgICAgIHRoaXMudXVpZCA9IGl0ZW0udXVpZFxuICAgICAgICB0aGlzLmZpcnN0bmFtZSA9IGl0ZW0uZmlyc3RuYW1lXG4gICAgICAgIHRoaXMubGFzdG5hbWUgPSBpdGVtLmxhc3RuYW1lXG4gICAgICAgIHRoaXMuc3RyZWV0ID0gaXRlbS5zdHJlZXRcbiAgICAgICAgdGhpcy5ob3VzZU51bWJlciA9IGl0ZW0uaG91c2VOdW1iZXJcbiAgICAgICAgdGhpcy56aXAgPSBpdGVtLnppcFxuICAgICAgICB0aGlzLmNvbXBhbnkgPSBpdGVtLmNvbXBhbnlcbiAgICAgICAgdGhpcy5jb21wYW55MiA9IGl0ZW0uY29tcGFueTJcbiAgICAgICAgdGhpcy5waG9uZSA9IGl0ZW0ucGhvbmVcbiAgICAgICAgdGhpcy5jaXR5ID0gaXRlbS5jaXR5XG4gICAgICAgIHRoaXMuZW1haWwgPSBpdGVtLmVtYWlsXG4gICAgICAgIHRoaXMudHlwZSA9IGl0ZW0udHlwZVxuICAgICAgICB0aGlzLmNvdW50cnkgPSBpdGVtLmNvdW50cnlcbiAgICAgICAgdGhpcy51c3RpZCA9IGl0ZW0udXN0aWRcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Gb3JtRGF0YShmb3JtZGF0YTogYW55KSB7XG5cbiAgICAgICAgdGhpcy5lbWFpbCA9IGZvcm1kYXRhLmVtYWlsXG4gICAgICAgIHRoaXMuY29tcGFueSA9IGZvcm1kYXRhLmNvbXBhbnlcbiAgICAgICAgdGhpcy5maXJzdG5hbWUgPSBmb3JtZGF0YS5maXJzdG5hbWVcbiAgICAgICAgdGhpcy5sYXN0bmFtZSA9IGZvcm1kYXRhLmxhc3RuYW1lXG4gICAgICAgIHRoaXMuc3RyZWV0ID0gZm9ybWRhdGEuc3RyZWV0XG4gICAgICAgIHRoaXMuaG91c2VOdW1iZXIgPSBmb3JtZGF0YS5ob3VzZU51bWJlclxuICAgICAgICB0aGlzLnppcCA9IGZvcm1kYXRhLnppcFxuICAgICAgICB0aGlzLmNpdHkgPSBmb3JtZGF0YS5jaXR5XG4gICAgICAgIHRoaXMucGhvbmUgPSBmb3JtZGF0YS5waG9uZVxuICAgICAgICB0aGlzLmNvdW50cnkgPSBmb3JtZGF0YS5jb3VudHJ5XG4gICAgICAgIHRoaXMudXN0aWQgPSBmb3JtZGF0YS51c3RpZFxuICAgIH1cbn0iLCJpbnRlcmZhY2UgUGFyYW0ge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXJcbn1cblxuZXhwb3J0IGNsYXNzIFNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdCB7XG4gICAgcGFyYW1zOiBBcnJheTxQYXJhbT4gPSBbXVxuICAgIHR5cDogTnVtYmVyID0gMFxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy50eXAgPSBpdGVtLnR5cFxuICAgICAgICB0aGlzLnBhcmFtcyA9IGl0ZW0ucGFyYW1zXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZHVjdCB7XG4gICAgaWQ6IE51bWJlciA9IDBcbiAgICB0aXRsZTogU3RyaW5nID0gXCJcIlxuICAgIHV1aWQ6IFN0cmluZyA9IFwiXCJcbiAgICBzcGVjaWFsUHJvZHVjdFR5cGVPYmplY3Q6IFNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdCA9IG5ldyBTcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QoKVxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy5pZCA9IGl0ZW0uaWRcbiAgICAgICAgdGhpcy50aXRsZSA9IGl0ZW0udGl0bGVcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS51dWlkXG4gICAgICAgIHRoaXMuc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnBhcnNlRnJvbUpzb24oaXRlbS5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QpXG4gICAgfVxufSIsImV4cG9ydCBjbGFzcyBQcmljZSB7XHJcbiAgICBuZXQ6IG51bWJlciA9IDBcclxuICAgIHZhdDogbnVtYmVyID0gMFxyXG4gICAgZ3Jvc3M6IG51bWJlciA9IDBcclxuXHJcbiAgICBhbGxOZXQ6IG51bWJlciA9IDBcclxuICAgIGFsbFZhdDogbnVtYmVyID0gMFxyXG4gICAgYWxsR3Jvc3M6IG51bWJlciA9IDBcclxuXHJcbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xyXG4gICAgICAgIHRoaXMubmV0ID0gaXRlbS5uZXRcclxuICAgICAgICB0aGlzLnZhdCA9IGl0ZW0udmF0XHJcbiAgICAgICAgdGhpcy5ncm9zcyA9IGl0ZW0uZ3Jvc3NcclxuICAgICAgICB0aGlzLmFsbE5ldCA9IGl0ZW0uYWxsTmV0XHJcbiAgICAgICAgdGhpcy5hbGxWYXQgPSBpdGVtLmFsbFZhdFxyXG4gICAgICAgIHRoaXMuYWxsR3Jvc3MgPSBpdGVtLmFsbEdyb3NzXHJcbiAgICB9XHJcbn0iLCJpbXBvcnQge3Y0IGFzIHV1aWR2NH0gZnJvbSAndXVpZCdcclxuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi9wcm9kdWN0XCJcclxuaW1wb3J0IHtQcmljZX0gZnJvbSBcIi4vcHJpY2VcIlxyXG5cclxuZXhwb3J0IGNsYXNzIFBvcyB7XHJcbiAgICB1dWlkOiBTdHJpbmcgPSBcIlwiXHJcbiAgICBwcm9kdWN0OiBQcm9kdWN0ID0gbmV3IFByb2R1Y3QoKVxyXG4gICAgc3RhdHVzOiBOdW1iZXIgPSAxMFxyXG4gICAgY291bnQ6IE51bWJlciA9IDFcclxuICAgIHByaWNlOiBQcmljZSA9IG5ldyBQcmljZSgpXHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy51dWlkID0gdXVpZHY0KClcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xyXG4gICAgICAgIHRoaXMuY291bnQgPSBpdGVtLnByaWNlLmNvdW50XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBpdGVtLnN0YXR1c1xyXG4gICAgICAgIHRoaXMudXVpZCA9IGl0ZW0udXVpZFxyXG4gICAgICAgIHRoaXMucHJpY2UucGFyc2VGcm9tSnNvbihpdGVtLnByaWNlKVxyXG4gICAgICAgIHRoaXMucHJvZHVjdC5wYXJzZUZyb21Kc29uKGl0ZW0ucHJvZHVjdClcclxuICAgIH1cclxufSIsImV4cG9ydCBjbGFzcyBQYXltZW50IHtcbiAgICB1aWQ6IE51bWJlciA9IDBcbiAgICB0aXRsZTogU3RyaW5nID0gXCJcIlxuICAgIHV1aWQ6IFN0cmluZyA9IFwiXCJcblxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMudWlkID0gaXRlbS5wYXltZW50LnVpZFxuICAgICAgICB0aGlzLnRpdGxlID0gaXRlbS5wYXltZW50LnRpdGxlXG4gICAgICAgIHRoaXMudXVpZCA9IFN0cmluZyhpdGVtLnBheW1lbnQudXVpZClcbiAgICB9XG59IiwiXG5leHBvcnQgY2xhc3MgU2hpcHBpbmcge1xuICAgIHVpZDogTnVtYmVyID0gMFxuICAgIHRpdGxlOiBTdHJpbmcgPSBcIlwiXG4gICAgdXVpZDogU3RyaW5nID0gXCJcIlxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy51aWQgPSBpdGVtLnNoaXBwaW5nLnVpZFxuICAgICAgICB0aGlzLnRpdGxlID0gaXRlbS5zaGlwcGluZy50aXRsZVxuICAgICAgICB0aGlzLnV1aWQgPSBTdHJpbmcoaXRlbS5zaGlwcGluZy51dWlkKVxuICAgIH1cbn0iLCJpbXBvcnQge3Y0IGFzIHV1aWR2NH0gZnJvbSAndXVpZCdcbmltcG9ydCB7Q29udGFjdH0gZnJvbSBcIi4vY29udGFjdFwiXG5pbXBvcnQge0FjY291bnR9IGZyb20gXCIuL2FjY291bnRcIlxuaW1wb3J0IHtBZGRyZXNzfSBmcm9tIFwiLi9hZGRyZXNzXCJcbmltcG9ydCB7UG9zfSBmcm9tIFwiLi9wb3NcIlxuaW1wb3J0IHtQYXltZW50fSBmcm9tIFwiLi9wYXltZW50XCJcbmltcG9ydCB7U2hpcHBpbmd9IGZyb20gXCIuL3NoaXBwaW5nXCJcbmltcG9ydCB7U2hvcH0gZnJvbSBcIi4vc2hvcFwiXG5cbmV4cG9ydCBjbGFzcyBPcmRlciB7XG5cbiAgICBhbGlhczogU3RyaW5nXG4gICAgdXVpZDogU3RyaW5nXG4gICAgZHJhZnQ6IEJvb2xlYW5cbiAgICBzYXZlZDogYm9vbGVhblxuXG4gICAgY29udGFjdDogQ29udGFjdCA9IG5ldyBDb250YWN0KClcbiAgICBhY2NvdW50OiBBY2NvdW50ID0gbmV3IEFjY291bnQoKVxuICAgIGRlbGl2ZXJ5QWRkcmVzczogQWRkcmVzcyA9IG5ldyBBZGRyZXNzKClcbiAgICBzZW5kZXJBZGRyZXNzOiBBZGRyZXNzID0gbmV3IEFkZHJlc3MoKVxuICAgIGludm9pY2VBZGRyZXNzOiBBZGRyZXNzID0gbmV3IEFkZHJlc3MoKVxuXG4gICAgcG9zaXRpb25zOiBBcnJheTxQb3M+ID0gW11cblxuICAgIHBheW1lbnQ6IFBheW1lbnQgPSBuZXcgUGF5bWVudCgpXG4gICAgc2hpcHBpbmc6IFNoaXBwaW5nID0gbmV3IFNoaXBwaW5nKClcblxuICAgIGJhc2tldEZpZWxkMTogU3RyaW5nXG4gICAgYmFza2V0RmllbGQyOiBTdHJpbmdcblxuICAgIHR5cGU6IE51bWJlclxuICAgIHNob3A6IFNob3AgPSBuZXcgU2hvcCgpXG5cbiAgICBuZXQ6IG51bWJlclxuICAgIHZhdDogbnVtYmVyXG4gICAgZ3Jvc3M6IG51bWJlclxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudXVpZCA9IHV1aWR2NCgpXG4gICAgICAgIHRoaXMuYmFza2V0RmllbGQxID0gXCJcIlxuICAgICAgICB0aGlzLmJhc2tldEZpZWxkMiA9IFwiXCJcbiAgICAgICAgdGhpcy5kcmFmdCA9IHRydWVcbiAgICAgICAgdGhpcy5zYXZlZCA9IGZhbHNlXG4gICAgfVxuXG4gICAgYWRkUG9zaXRpb24ocG9zOiBQb3MpIHtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMucHVzaChwb3MpXG4gICAgfVxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy5zaG9wLnBhcnNlRnJvbUpzb24oaXRlbSlcbiAgICAgICAgdGhpcy5jb250YWN0LnBhcnNlRnJvbUpzb24oaXRlbSlcbiAgICAgICAgdGhpcy5hY2NvdW50LnBhcnNlRnJvbUpzb24oaXRlbSlcbiAgICAgICAgdGhpcy5zaGlwcGluZy5wYXJzZUZyb21Kc29uKGl0ZW0pXG4gICAgICAgIHRoaXMucGF5bWVudC5wYXJzZUZyb21Kc29uKGl0ZW0pXG4gICAgICAgIHRoaXMuaW52b2ljZUFkZHJlc3MucGFyc2VGcm9tSnNvbihpdGVtLmludm9pY2VBZGRyZXNzKVxuICAgICAgICB0aGlzLmRlbGl2ZXJ5QWRkcmVzcy5wYXJzZUZyb21Kc29uKGl0ZW0uZGVsaXZlcnlBZGRyZXNzKVxuICAgICAgICB0aGlzLnNlbmRlckFkZHJlc3MucGFyc2VGcm9tSnNvbihpdGVtLnNlbmRlckFkZHJlc3MpXG4gICAgICAgIHRoaXMuYWxpYXMgPSBpdGVtLmFsaWFzXG4gICAgICAgIHRoaXMudXVpZCA9IGl0ZW0udXVpZFxuICAgICAgICB0aGlzLnR5cGUgPSBpdGVtLnR5cGVcbiAgICAgICAgdGhpcy5kcmFmdCA9IGl0ZW0uZHJhZnRcbiAgICAgICAgdGhpcy5zYXZlZCA9IHRydWVcbiAgICAgICAgdGhpcy5iYXNrZXRGaWVsZDEgPSBpdGVtLmJhc2tldEZpZWxkMVxuICAgICAgICB0aGlzLmJhc2tldEZpZWxkMiA9IGl0ZW0uYmFza2V0RmllbGQyXG5cbiAgICAgICAgaXRlbS5wb3NpdGlvbnMubWFwKChlKSA9PiB7XG4gICAgICAgICAgICBsZXQgcG9zID0gbmV3IFBvcygpXG4gICAgICAgICAgICBwb3MucGFyc2VGcm9tSnNvbihlKVxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMucHVzaChwb3MpXG4gICAgICAgIH0pXG4gICAgfVxufSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxuXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCwgSXRlcmF0b3IgKi9cblxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XG4gIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XG4gIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG59XG5cbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcbiAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0O1xuICB9XG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICB0W3BdID0gc1twXTtcbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICB9XG4gIHJldHVybiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xuICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2VzRGVjb3JhdGUoY3RvciwgZGVzY3JpcHRvckluLCBkZWNvcmF0b3JzLCBjb250ZXh0SW4sIGluaXRpYWxpemVycywgZXh0cmFJbml0aWFsaXplcnMpIHtcbiAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XG4gIHZhciBraW5kID0gY29udGV4dEluLmtpbmQsIGtleSA9IGtpbmQgPT09IFwiZ2V0dGVyXCIgPyBcImdldFwiIDoga2luZCA9PT0gXCJzZXR0ZXJcIiA/IFwic2V0XCIgOiBcInZhbHVlXCI7XG4gIHZhciB0YXJnZXQgPSAhZGVzY3JpcHRvckluICYmIGN0b3IgPyBjb250ZXh0SW5bXCJzdGF0aWNcIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsO1xuICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcbiAgdmFyIF8sIGRvbmUgPSBmYWxzZTtcbiAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBjb250ZXh0ID0ge307XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbikgY29udGV4dFtwXSA9IHAgPT09IFwiYWNjZXNzXCIgPyB7fSA6IGNvbnRleHRJbltwXTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluLmFjY2VzcykgY29udGV4dC5hY2Nlc3NbcF0gPSBjb250ZXh0SW4uYWNjZXNzW3BdO1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcbiAgICAgIHZhciByZXN1bHQgPSAoMCwgZGVjb3JhdG9yc1tpXSkoa2luZCA9PT0gXCJhY2Nlc3NvclwiID8geyBnZXQ6IGRlc2NyaXB0b3IuZ2V0LCBzZXQ6IGRlc2NyaXB0b3Iuc2V0IH0gOiBkZXNjcmlwdG9yW2tleV0sIGNvbnRleHQpO1xuICAgICAgaWYgKGtpbmQgPT09IFwiYWNjZXNzb3JcIikge1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCB0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkXCIpO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuaW5pdCkpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XG4gICAgICAgICAgaWYgKGtpbmQgPT09IFwiZmllbGRcIikgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICAgICAgZWxzZSBkZXNjcmlwdG9yW2tleV0gPSBfO1xuICAgICAgfVxuICB9XG4gIGlmICh0YXJnZXQpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGNvbnRleHRJbi5uYW1lLCBkZXNjcmlwdG9yKTtcbiAgZG9uZSA9IHRydWU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xuICB2YXIgdXNlVmFsdWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0aWFsaXplcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcbiAgfVxuICByZXR1cm4gdXNlVmFsdWUgPyB2YWx1ZSA6IHZvaWQgMDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Byb3BLZXkoeCkge1xuICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIikgbmFtZSA9IG5hbWUuZGVzY3JpcHRpb24gPyBcIltcIi5jb25jYXQobmFtZS5kZXNjcmlwdGlvbiwgXCJdXCIpIDogXCJcIjtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCBcIm5hbWVcIiwgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBwcmVmaXggPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiIFwiLCBuYW1lKSA6IG5hbWUgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xuICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEl0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKTtcbiAgcmV0dXJuIGcubmV4dCA9IHZlcmIoMCksIGdbXCJ0aHJvd1wiXSA9IHZlcmIoMSksIGdbXCJyZXR1cm5cIl0gPSB2ZXJiKDIpLCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gIH1cbn1cblxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gIG9bazJdID0gbVtrXTtcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcbiAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xuICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xuICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghbSkgcmV0dXJuIG87XG4gIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICB0cnkge1xuICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gIH1cbiAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gIGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgIH1cbiAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICB9XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XG4gIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xuICByZXR1cm4gYXI7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xuICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcbiAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxuICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXG4gICAgICAgICAgcltrXSA9IGFbal07XG4gIHJldHVybiByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xuICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgfVxuICB9XG4gIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XG4gIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcbiAgcmV0dXJuIGkgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgQXN5bmNJdGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gQXN5bmNJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiLCBhd2FpdFJldHVybiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgZnVuY3Rpb24gYXdhaXRSZXR1cm4oZikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGYsIHJlamVjdCk7IH07IH1cbiAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlmIChnW25dKSB7IGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IGlmIChmKSBpW25dID0gZihpW25dKTsgfSB9XG4gIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cbiAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XG4gIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcbiAgdmFyIGksIHA7XG4gIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcbiAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XG4gIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XG4gIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gIHJldHVybiBjb29rZWQ7XG59O1xuXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcbn0pIDogZnVuY3Rpb24obywgdikge1xuICBvW1wiZGVmYXVsdFwiXSA9IHY7XG59O1xuXG52YXIgb3duS2V5cyA9IGZ1bmN0aW9uKG8pIHtcbiAgb3duS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIChvKSB7XG4gICAgdmFyIGFyID0gW107XG4gICAgZm9yICh2YXIgayBpbiBvKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIGspKSBhclthci5sZW5ndGhdID0gaztcbiAgICByZXR1cm4gYXI7XG4gIH07XG4gIHJldHVybiBvd25LZXlzKG8pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcbiAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgPSBvd25LZXlzKG1vZCksIGkgPSAwOyBpIDwgay5sZW5ndGg7IGkrKykgaWYgKGtbaV0gIT09IFwiZGVmYXVsdFwiKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGtbaV0pO1xuICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xuICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcbiAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XG4gIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcbiAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcbiAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4oc3RhdGUsIHJlY2VpdmVyKSB7XG4gIGlmIChyZWNlaXZlciA9PT0gbnVsbCB8fCAodHlwZW9mIHJlY2VpdmVyICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiByZWNlaXZlciAhPT0gXCJmdW5jdGlvblwiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO1xuICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hZGREaXNwb3NhYmxlUmVzb3VyY2UoZW52LCB2YWx1ZSwgYXN5bmMpIHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDApIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkLlwiKTtcbiAgICB2YXIgZGlzcG9zZSwgaW5uZXI7XG4gICAgaWYgKGFzeW5jKSB7XG4gICAgICBpZiAoIVN5bWJvbC5hc3luY0Rpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNEaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuYXN5bmNEaXNwb3NlXTtcbiAgICB9XG4gICAgaWYgKGRpc3Bvc2UgPT09IHZvaWQgMCkge1xuICAgICAgaWYgKCFTeW1ib2wuZGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5kaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuZGlzcG9zZV07XG4gICAgICBpZiAoYXN5bmMpIGlubmVyID0gZGlzcG9zZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkaXNwb3NlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3Qgbm90IGRpc3Bvc2FibGUuXCIpO1xuICAgIGlmIChpbm5lcikgZGlzcG9zZSA9IGZ1bmN0aW9uKCkgeyB0cnkgeyBpbm5lci5jYWxsKHRoaXMpOyB9IGNhdGNoIChlKSB7IHJldHVybiBQcm9taXNlLnJlamVjdChlKTsgfSB9O1xuICAgIGVudi5zdGFjay5wdXNoKHsgdmFsdWU6IHZhbHVlLCBkaXNwb3NlOiBkaXNwb3NlLCBhc3luYzogYXN5bmMgfSk7XG4gIH1cbiAgZWxzZSBpZiAoYXN5bmMpIHtcbiAgICBlbnYuc3RhY2sucHVzaCh7IGFzeW5jOiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxudmFyIF9TdXBwcmVzc2VkRXJyb3IgPSB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcbiAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19kaXNwb3NlUmVzb3VyY2VzKGVudikge1xuICBmdW5jdGlvbiBmYWlsKGUpIHtcbiAgICBlbnYuZXJyb3IgPSBlbnYuaGFzRXJyb3IgPyBuZXcgX1N1cHByZXNzZWRFcnJvcihlLCBlbnYuZXJyb3IsIFwiQW4gZXJyb3Igd2FzIHN1cHByZXNzZWQgZHVyaW5nIGRpc3Bvc2FsLlwiKSA6IGU7XG4gICAgZW52Lmhhc0Vycm9yID0gdHJ1ZTtcbiAgfVxuICB2YXIgciwgcyA9IDA7XG4gIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgd2hpbGUgKHIgPSBlbnYuc3RhY2sucG9wKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghci5hc3luYyAmJiBzID09PSAxKSByZXR1cm4gcyA9IDAsIGVudi5zdGFjay5wdXNoKHIpLCBQcm9taXNlLnJlc29sdmUoKS50aGVuKG5leHQpO1xuICAgICAgICBpZiAoci5kaXNwb3NlKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IHIuZGlzcG9zZS5jYWxsKHIudmFsdWUpO1xuICAgICAgICAgIGlmIChyLmFzeW5jKSByZXR1cm4gcyB8PSAyLCBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKG5leHQsIGZ1bmN0aW9uKGUpIHsgZmFpbChlKTsgcmV0dXJuIG5leHQoKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBzIHw9IDE7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZSkge1xuICAgICAgICBmYWlsKGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocyA9PT0gMSkgcmV0dXJuIGVudi5oYXNFcnJvciA/IFByb21pc2UucmVqZWN0KGVudi5lcnJvcikgOiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7XG4gIH1cbiAgcmV0dXJuIG5leHQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmV3cml0ZVJlbGF0aXZlSW1wb3J0RXh0ZW5zaW9uKHBhdGgsIHByZXNlcnZlSnN4KSB7XG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gXCJzdHJpbmdcIiAmJiAvXlxcLlxcLj9cXC8vLnRlc3QocGF0aCkpIHtcbiAgICAgIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcLih0c3gpJHwoKD86XFwuZCk/KSgoPzpcXC5bXi4vXSs/KT8pXFwuKFtjbV0/KXRzJC9pLCBmdW5jdGlvbiAobSwgdHN4LCBkLCBleHQsIGNtKSB7XG4gICAgICAgICAgcmV0dXJuIHRzeCA/IHByZXNlcnZlSnN4ID8gXCIuanN4XCIgOiBcIi5qc1wiIDogZCAmJiAoIWV4dCB8fCAhY20pID8gbSA6IChkICsgZXh0ICsgXCIuXCIgKyBjbS50b0xvd2VyQ2FzZSgpICsgXCJqc1wiKTtcbiAgICAgIH0pO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIF9fZXh0ZW5kcyxcbiAgX19hc3NpZ24sXG4gIF9fcmVzdCxcbiAgX19kZWNvcmF0ZSxcbiAgX19wYXJhbSxcbiAgX19lc0RlY29yYXRlLFxuICBfX3J1bkluaXRpYWxpemVycyxcbiAgX19wcm9wS2V5LFxuICBfX3NldEZ1bmN0aW9uTmFtZSxcbiAgX19tZXRhZGF0YSxcbiAgX19hd2FpdGVyLFxuICBfX2dlbmVyYXRvcixcbiAgX19jcmVhdGVCaW5kaW5nLFxuICBfX2V4cG9ydFN0YXIsXG4gIF9fdmFsdWVzLFxuICBfX3JlYWQsXG4gIF9fc3ByZWFkLFxuICBfX3NwcmVhZEFycmF5cyxcbiAgX19zcHJlYWRBcnJheSxcbiAgX19hd2FpdCxcbiAgX19hc3luY0dlbmVyYXRvcixcbiAgX19hc3luY0RlbGVnYXRvcixcbiAgX19hc3luY1ZhbHVlcyxcbiAgX19tYWtlVGVtcGxhdGVPYmplY3QsXG4gIF9faW1wb3J0U3RhcixcbiAgX19pbXBvcnREZWZhdWx0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4sXG4gIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxuICBfX2Rpc3Bvc2VSZXNvdXJjZXMsXG4gIF9fcmV3cml0ZVJlbGF0aXZlSW1wb3J0RXh0ZW5zaW9uLFxufTtcbiIsImV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzRnVuY3Rpb24uanMubWFwIiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVycm9yQ2xhc3MoY3JlYXRlSW1wbCkge1xuICAgIHZhciBfc3VwZXIgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICAgICAgRXJyb3IuY2FsbChpbnN0YW5jZSk7XG4gICAgICAgIGluc3RhbmNlLnN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2s7XG4gICAgfTtcbiAgICB2YXIgY3RvckZ1bmMgPSBjcmVhdGVJbXBsKF9zdXBlcik7XG4gICAgY3RvckZ1bmMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpO1xuICAgIGN0b3JGdW5jLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3JGdW5jO1xuICAgIHJldHVybiBjdG9yRnVuYztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZUVycm9yQ2xhc3MuanMubWFwIiwiaW1wb3J0IHsgY3JlYXRlRXJyb3JDbGFzcyB9IGZyb20gJy4vY3JlYXRlRXJyb3JDbGFzcyc7XG5leHBvcnQgdmFyIFVuc3Vic2NyaXB0aW9uRXJyb3IgPSBjcmVhdGVFcnJvckNsYXNzKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gVW5zdWJzY3JpcHRpb25FcnJvckltcGwoZXJyb3JzKSB7XG4gICAgICAgIF9zdXBlcih0aGlzKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gZXJyb3JzXG4gICAgICAgICAgICA/IGVycm9ycy5sZW5ndGggKyBcIiBlcnJvcnMgb2NjdXJyZWQgZHVyaW5nIHVuc3Vic2NyaXB0aW9uOlxcblwiICsgZXJyb3JzLm1hcChmdW5jdGlvbiAoZXJyLCBpKSB7IHJldHVybiBpICsgMSArIFwiKSBcIiArIGVyci50b1N0cmluZygpOyB9KS5qb2luKCdcXG4gICcpXG4gICAgICAgICAgICA6ICcnO1xuICAgICAgICB0aGlzLm5hbWUgPSAnVW5zdWJzY3JpcHRpb25FcnJvcic7XG4gICAgICAgIHRoaXMuZXJyb3JzID0gZXJyb3JzO1xuICAgIH07XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVVuc3Vic2NyaXB0aW9uRXJyb3IuanMubWFwIiwiZXhwb3J0IGZ1bmN0aW9uIGFyclJlbW92ZShhcnIsIGl0ZW0pIHtcbiAgICBpZiAoYXJyKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAwIDw9IGluZGV4ICYmIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFyclJlbW92ZS5qcy5tYXAiLCJpbXBvcnQgeyBfX3JlYWQsIF9fc3ByZWFkQXJyYXksIF9fdmFsdWVzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi91dGlsL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHsgVW5zdWJzY3JpcHRpb25FcnJvciB9IGZyb20gJy4vdXRpbC9VbnN1YnNjcmlwdGlvbkVycm9yJztcbmltcG9ydCB7IGFyclJlbW92ZSB9IGZyb20gJy4vdXRpbC9hcnJSZW1vdmUnO1xudmFyIFN1YnNjcmlwdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3Vic2NyaXB0aW9uKGluaXRpYWxUZWFyZG93bikge1xuICAgICAgICB0aGlzLmluaXRpYWxUZWFyZG93biA9IGluaXRpYWxUZWFyZG93bjtcbiAgICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZmluYWxpemVycyA9IG51bGw7XG4gICAgfVxuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iO1xuICAgICAgICB2YXIgZXJyb3JzO1xuICAgICAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX3BhcmVudGFnZSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICAgICAgICAgIGlmIChfcGFyZW50YWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfcGFyZW50YWdlKSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX3BhcmVudGFnZV8xID0gX192YWx1ZXMoX3BhcmVudGFnZSksIF9wYXJlbnRhZ2VfMV8xID0gX3BhcmVudGFnZV8xLm5leHQoKTsgIV9wYXJlbnRhZ2VfMV8xLmRvbmU7IF9wYXJlbnRhZ2VfMV8xID0gX3BhcmVudGFnZV8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJlbnRfMSA9IF9wYXJlbnRhZ2VfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudF8xLnJlbW92ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9wYXJlbnRhZ2VfMV8xICYmICFfcGFyZW50YWdlXzFfMS5kb25lICYmIChfYSA9IF9wYXJlbnRhZ2VfMS5yZXR1cm4pKSBfYS5jYWxsKF9wYXJlbnRhZ2VfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF9wYXJlbnRhZ2UucmVtb3ZlKHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBpbml0aWFsRmluYWxpemVyID0gdGhpcy5pbml0aWFsVGVhcmRvd247XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihpbml0aWFsRmluYWxpemVyKSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxGaW5hbGl6ZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZSBpbnN0YW5jZW9mIFVuc3Vic2NyaXB0aW9uRXJyb3IgPyBlLmVycm9ycyA6IFtlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2ZpbmFsaXplcnMgPSB0aGlzLl9maW5hbGl6ZXJzO1xuICAgICAgICAgICAgaWYgKF9maW5hbGl6ZXJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmluYWxpemVycyA9IG51bGw7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2ZpbmFsaXplcnNfMSA9IF9fdmFsdWVzKF9maW5hbGl6ZXJzKSwgX2ZpbmFsaXplcnNfMV8xID0gX2ZpbmFsaXplcnNfMS5uZXh0KCk7ICFfZmluYWxpemVyc18xXzEuZG9uZTsgX2ZpbmFsaXplcnNfMV8xID0gX2ZpbmFsaXplcnNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaW5hbGl6ZXIgPSBfZmluYWxpemVyc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNGaW5hbGl6ZXIoZmluYWxpemVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBlcnJvcnMgIT09IG51bGwgJiYgZXJyb3JzICE9PSB2b2lkIDAgPyBlcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVW5zdWJzY3JpcHRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChlcnJvcnMpKSwgX19yZWFkKGVyci5lcnJvcnMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2ZpbmFsaXplcnNfMV8xICYmICFfZmluYWxpemVyc18xXzEuZG9uZSAmJiAoX2IgPSBfZmluYWxpemVyc18xLnJldHVybikpIF9iLmNhbGwoX2ZpbmFsaXplcnNfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdWJzY3JpcHRpb25FcnJvcihlcnJvcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh0ZWFyZG93bikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICh0ZWFyZG93biAmJiB0ZWFyZG93biAhPT0gdGhpcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgZXhlY0ZpbmFsaXplcih0ZWFyZG93bik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGVhcmRvd24gaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlYXJkb3duLmNsb3NlZCB8fCB0ZWFyZG93bi5faGFzUGFyZW50KHRoaXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGVhcmRvd24uX2FkZFBhcmVudCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKHRoaXMuX2ZpbmFsaXplcnMgPSAoX2EgPSB0aGlzLl9maW5hbGl6ZXJzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSkucHVzaCh0ZWFyZG93bik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX2hhc1BhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIHJldHVybiBfcGFyZW50YWdlID09PSBwYXJlbnQgfHwgKEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkgJiYgX3BhcmVudGFnZS5pbmNsdWRlcyhwYXJlbnQpKTtcbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX2FkZFBhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkgPyAoX3BhcmVudGFnZS5wdXNoKHBhcmVudCksIF9wYXJlbnRhZ2UpIDogX3BhcmVudGFnZSA/IFtfcGFyZW50YWdlLCBwYXJlbnRdIDogcGFyZW50O1xuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5fcmVtb3ZlUGFyZW50ID0gZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICB2YXIgX3BhcmVudGFnZSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICAgICAgaWYgKF9wYXJlbnRhZ2UgPT09IHBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpKSB7XG4gICAgICAgICAgICBhcnJSZW1vdmUoX3BhcmVudGFnZSwgcGFyZW50KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAodGVhcmRvd24pIHtcbiAgICAgICAgdmFyIF9maW5hbGl6ZXJzID0gdGhpcy5fZmluYWxpemVycztcbiAgICAgICAgX2ZpbmFsaXplcnMgJiYgYXJyUmVtb3ZlKF9maW5hbGl6ZXJzLCB0ZWFyZG93bik7XG4gICAgICAgIGlmICh0ZWFyZG93biBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGVhcmRvd24uX3JlbW92ZVBhcmVudCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLkVNUFRZID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVtcHR5ID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICBlbXB0eS5jbG9zZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZW1wdHk7XG4gICAgfSkoKTtcbiAgICByZXR1cm4gU3Vic2NyaXB0aW9uO1xufSgpKTtcbmV4cG9ydCB7IFN1YnNjcmlwdGlvbiB9O1xuZXhwb3J0IHZhciBFTVBUWV9TVUJTQ1JJUFRJT04gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5leHBvcnQgZnVuY3Rpb24gaXNTdWJzY3JpcHRpb24odmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlIGluc3RhbmNlb2YgU3Vic2NyaXB0aW9uIHx8XG4gICAgICAgICh2YWx1ZSAmJiAnY2xvc2VkJyBpbiB2YWx1ZSAmJiBpc0Z1bmN0aW9uKHZhbHVlLnJlbW92ZSkgJiYgaXNGdW5jdGlvbih2YWx1ZS5hZGQpICYmIGlzRnVuY3Rpb24odmFsdWUudW5zdWJzY3JpYmUpKSk7XG59XG5mdW5jdGlvbiBleGVjRmluYWxpemVyKGZpbmFsaXplcikge1xuICAgIGlmIChpc0Z1bmN0aW9uKGZpbmFsaXplcikpIHtcbiAgICAgICAgZmluYWxpemVyKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmaW5hbGl6ZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdWJzY3JpcHRpb24uanMubWFwIiwiZXhwb3J0IHZhciBjb25maWcgPSB7XG4gICAgb25VbmhhbmRsZWRFcnJvcjogbnVsbCxcbiAgICBvblN0b3BwZWROb3RpZmljYXRpb246IG51bGwsXG4gICAgUHJvbWlzZTogdW5kZWZpbmVkLFxuICAgIHVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc6IGZhbHNlLFxuICAgIHVzZURlcHJlY2F0ZWROZXh0Q29udGV4dDogZmFsc2UsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uZmlnLmpzLm1hcCIsImltcG9ydCB7IF9fcmVhZCwgX19zcHJlYWRBcnJheSB9IGZyb20gXCJ0c2xpYlwiO1xuZXhwb3J0IHZhciB0aW1lb3V0UHJvdmlkZXIgPSB7XG4gICAgc2V0VGltZW91dDogZnVuY3Rpb24gKGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlbGVnYXRlID0gdGltZW91dFByb3ZpZGVyLmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUgPT09IG51bGwgfHwgZGVsZWdhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlbGVnYXRlLnNldFRpbWVvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5zZXRUaW1lb3V0LmFwcGx5KGRlbGVnYXRlLCBfX3NwcmVhZEFycmF5KFtoYW5kbGVyLCB0aW1lb3V0XSwgX19yZWFkKGFyZ3MpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQuYXBwbHkodm9pZCAwLCBfX3NwcmVhZEFycmF5KFtoYW5kbGVyLCB0aW1lb3V0XSwgX19yZWFkKGFyZ3MpKSk7XG4gICAgfSxcbiAgICBjbGVhclRpbWVvdXQ6IGZ1bmN0aW9uIChoYW5kbGUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gdGltZW91dFByb3ZpZGVyLmRlbGVnYXRlO1xuICAgICAgICByZXR1cm4gKChkZWxlZ2F0ZSA9PT0gbnVsbCB8fCBkZWxlZ2F0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVsZWdhdGUuY2xlYXJUaW1lb3V0KSB8fCBjbGVhclRpbWVvdXQpKGhhbmRsZSk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpbWVvdXRQcm92aWRlci5qcy5tYXAiLCJpbXBvcnQgeyBjb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgdGltZW91dFByb3ZpZGVyIH0gZnJvbSAnLi4vc2NoZWR1bGVyL3RpbWVvdXRQcm92aWRlcic7XG5leHBvcnQgZnVuY3Rpb24gcmVwb3J0VW5oYW5kbGVkRXJyb3IoZXJyKSB7XG4gICAgdGltZW91dFByb3ZpZGVyLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb25VbmhhbmRsZWRFcnJvciA9IGNvbmZpZy5vblVuaGFuZGxlZEVycm9yO1xuICAgICAgICBpZiAob25VbmhhbmRsZWRFcnJvcikge1xuICAgICAgICAgICAgb25VbmhhbmRsZWRFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXBvcnRVbmhhbmRsZWRFcnJvci5qcy5tYXAiLCJleHBvcnQgZnVuY3Rpb24gbm9vcCgpIHsgfVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm9vcC5qcy5tYXAiLCJpbXBvcnQgeyBjb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xudmFyIGNvbnRleHQgPSBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yQ29udGV4dChjYikge1xuICAgIGlmIChjb25maWcudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZykge1xuICAgICAgICB2YXIgaXNSb290ID0gIWNvbnRleHQ7XG4gICAgICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgICAgICAgIGNvbnRleHQgPSB7IGVycm9yVGhyb3duOiBmYWxzZSwgZXJyb3I6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBjYigpO1xuICAgICAgICBpZiAoaXNSb290KSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBjb250ZXh0LCBlcnJvclRocm93biA9IF9hLmVycm9yVGhyb3duLCBlcnJvciA9IF9hLmVycm9yO1xuICAgICAgICAgICAgY29udGV4dCA9IG51bGw7XG4gICAgICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY2IoKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gY2FwdHVyZUVycm9yKGVycikge1xuICAgIGlmIChjb25maWcudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyAmJiBjb250ZXh0KSB7XG4gICAgICAgIGNvbnRleHQuZXJyb3JUaHJvd24gPSB0cnVlO1xuICAgICAgICBjb250ZXh0LmVycm9yID0gZXJyO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVycm9yQ29udGV4dC5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuL3V0aWwvaXNGdW5jdGlvbic7XG5pbXBvcnQgeyBpc1N1YnNjcmlwdGlvbiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgcmVwb3J0VW5oYW5kbGVkRXJyb3IgfSBmcm9tICcuL3V0aWwvcmVwb3J0VW5oYW5kbGVkRXJyb3InO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4vdXRpbC9ub29wJztcbmltcG9ydCB7IG5leHROb3RpZmljYXRpb24sIGVycm9yTm90aWZpY2F0aW9uLCBDT01QTEVURV9OT1RJRklDQVRJT04gfSBmcm9tICcuL05vdGlmaWNhdGlvbkZhY3Rvcmllcyc7XG5pbXBvcnQgeyB0aW1lb3V0UHJvdmlkZXIgfSBmcm9tICcuL3NjaGVkdWxlci90aW1lb3V0UHJvdmlkZXInO1xuaW1wb3J0IHsgY2FwdHVyZUVycm9yIH0gZnJvbSAnLi91dGlsL2Vycm9yQ29udGV4dCc7XG52YXIgU3Vic2NyaWJlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFN1YnNjcmliZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3Vic2NyaWJlcihkZXN0aW5hdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5pc1N0b3BwZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uKSB7XG4gICAgICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICAgICAgaWYgKGlzU3Vic2NyaXB0aW9uKGRlc3RpbmF0aW9uKSkge1xuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmFkZChfdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IEVNUFRZX09CU0VSVkVSO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgU3Vic2NyaWJlci5jcmVhdGUgPSBmdW5jdGlvbiAobmV4dCwgZXJyb3IsIGNvbXBsZXRlKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2FmZVN1YnNjcmliZXIobmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wcGVkTm90aWZpY2F0aW9uKG5leHROb3RpZmljYXRpb24odmFsdWUpLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX25leHQodmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wcGVkTm90aWZpY2F0aW9uKGVycm9yTm90aWZpY2F0aW9uKGVyciksIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgaGFuZGxlU3RvcHBlZE5vdGlmaWNhdGlvbihDT01QTEVURV9OT1RJRklDQVRJT04sIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5fbmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uLm5leHQodmFsdWUpO1xuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5fY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBTdWJzY3JpYmVyO1xufShTdWJzY3JpcHRpb24pKTtcbmV4cG9ydCB7IFN1YnNjcmliZXIgfTtcbnZhciBfYmluZCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kO1xuZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICAgIHJldHVybiBfYmluZC5jYWxsKGZuLCB0aGlzQXJnKTtcbn1cbnZhciBDb25zdW1lck9ic2VydmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb25zdW1lck9ic2VydmVyKHBhcnRpYWxPYnNlcnZlcikge1xuICAgICAgICB0aGlzLnBhcnRpYWxPYnNlcnZlciA9IHBhcnRpYWxPYnNlcnZlcjtcbiAgICB9XG4gICAgQ29uc3VtZXJPYnNlcnZlci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChwYXJ0aWFsT2JzZXJ2ZXIubmV4dCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbnN1bWVyT2JzZXJ2ZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChwYXJ0aWFsT2JzZXJ2ZXIuZXJyb3IpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyLmVycm9yKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDb25zdW1lck9ic2VydmVyLnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxPYnNlcnZlciA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgICAgICBpZiAocGFydGlhbE9ic2VydmVyLmNvbXBsZXRlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQ29uc3VtZXJPYnNlcnZlcjtcbn0oKSk7XG52YXIgU2FmZVN1YnNjcmliZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTYWZlU3Vic2NyaWJlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBTYWZlU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCwgZXJyb3IsIGNvbXBsZXRlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIHZhciBwYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKG9ic2VydmVyT3JOZXh0KSB8fCAhb2JzZXJ2ZXJPck5leHQpIHtcbiAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlciA9IHtcbiAgICAgICAgICAgICAgICBuZXh0OiAob2JzZXJ2ZXJPck5leHQgIT09IG51bGwgJiYgb2JzZXJ2ZXJPck5leHQgIT09IHZvaWQgMCA/IG9ic2VydmVyT3JOZXh0IDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IgIT09IG51bGwgJiYgZXJyb3IgIT09IHZvaWQgMCA/IGVycm9yIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBjb21wbGV0ZSAhPT0gbnVsbCAmJiBjb21wbGV0ZSAhPT0gdm9pZCAwID8gY29tcGxldGUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGNvbnRleHRfMTtcbiAgICAgICAgICAgIGlmIChfdGhpcyAmJiBjb25maWcudXNlRGVwcmVjYXRlZE5leHRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgY29udGV4dF8xID0gT2JqZWN0LmNyZWF0ZShvYnNlcnZlck9yTmV4dCk7XG4gICAgICAgICAgICAgICAgY29udGV4dF8xLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMudW5zdWJzY3JpYmUoKTsgfTtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IG9ic2VydmVyT3JOZXh0Lm5leHQgJiYgYmluZChvYnNlcnZlck9yTmV4dC5uZXh0LCBjb250ZXh0XzEpLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogb2JzZXJ2ZXJPck5leHQuZXJyb3IgJiYgYmluZChvYnNlcnZlck9yTmV4dC5lcnJvciwgY29udGV4dF8xKSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IG9ic2VydmVyT3JOZXh0LmNvbXBsZXRlICYmIGJpbmQob2JzZXJ2ZXJPck5leHQuY29tcGxldGUsIGNvbnRleHRfMSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlciA9IG9ic2VydmVyT3JOZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIF90aGlzLmRlc3RpbmF0aW9uID0gbmV3IENvbnN1bWVyT2JzZXJ2ZXIocGFydGlhbE9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gU2FmZVN1YnNjcmliZXI7XG59KFN1YnNjcmliZXIpKTtcbmV4cG9ydCB7IFNhZmVTdWJzY3JpYmVyIH07XG5mdW5jdGlvbiBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcikge1xuICAgIGlmIChjb25maWcudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZykge1xuICAgICAgICBjYXB0dXJlRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVwb3J0VW5oYW5kbGVkRXJyb3IoZXJyb3IpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRlZmF1bHRFcnJvckhhbmRsZXIoZXJyKSB7XG4gICAgdGhyb3cgZXJyO1xufVxuZnVuY3Rpb24gaGFuZGxlU3RvcHBlZE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIHN1YnNjcmliZXIpIHtcbiAgICB2YXIgb25TdG9wcGVkTm90aWZpY2F0aW9uID0gY29uZmlnLm9uU3RvcHBlZE5vdGlmaWNhdGlvbjtcbiAgICBvblN0b3BwZWROb3RpZmljYXRpb24gJiYgdGltZW91dFByb3ZpZGVyLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gb25TdG9wcGVkTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgc3Vic2NyaWJlcik7IH0pO1xufVxuZXhwb3J0IHZhciBFTVBUWV9PQlNFUlZFUiA9IHtcbiAgICBjbG9zZWQ6IHRydWUsXG4gICAgbmV4dDogbm9vcCxcbiAgICBlcnJvcjogZGVmYXVsdEVycm9ySGFuZGxlcixcbiAgICBjb21wbGV0ZTogbm9vcCxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdWJzY3JpYmVyLmpzLm1hcCIsImV4cG9ydCB2YXIgb2JzZXJ2YWJsZSA9IChmdW5jdGlvbiAoKSB7IHJldHVybiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wub2JzZXJ2YWJsZSkgfHwgJ0BAb2JzZXJ2YWJsZSc7IH0pKCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1vYnNlcnZhYmxlLmpzLm1hcCIsImV4cG9ydCBmdW5jdGlvbiBpZGVudGl0eSh4KSB7XG4gICAgcmV0dXJuIHg7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pZGVudGl0eS5qcy5tYXAiLCJpbXBvcnQgeyBpZGVudGl0eSB9IGZyb20gJy4vaWRlbnRpdHknO1xuZXhwb3J0IGZ1bmN0aW9uIHBpcGUoKSB7XG4gICAgdmFyIGZucyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGZuc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gcGlwZUZyb21BcnJheShmbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBpcGVGcm9tQXJyYXkoZm5zKSB7XG4gICAgaWYgKGZucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGlkZW50aXR5O1xuICAgIH1cbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZm5zWzBdO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gcGlwZWQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGZucy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGZuKSB7IHJldHVybiBmbihwcmV2KTsgfSwgaW5wdXQpO1xuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1waXBlLmpzLm1hcCIsImltcG9ydCB7IFNhZmVTdWJzY3JpYmVyLCBTdWJzY3JpYmVyIH0gZnJvbSAnLi9TdWJzY3JpYmVyJztcbmltcG9ydCB7IGlzU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgb2JzZXJ2YWJsZSBhcyBTeW1ib2xfb2JzZXJ2YWJsZSB9IGZyb20gJy4vc3ltYm9sL29ic2VydmFibGUnO1xuaW1wb3J0IHsgcGlwZUZyb21BcnJheSB9IGZyb20gJy4vdXRpbC9waXBlJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuL3V0aWwvaXNGdW5jdGlvbic7XG5pbXBvcnQgeyBlcnJvckNvbnRleHQgfSBmcm9tICcuL3V0aWwvZXJyb3JDb250ZXh0JztcbnZhciBPYnNlcnZhYmxlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBPYnNlcnZhYmxlKHN1YnNjcmliZSkge1xuICAgICAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmUgPSBzdWJzY3JpYmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUubGlmdCA9IGZ1bmN0aW9uIChvcGVyYXRvcikge1xuICAgICAgICB2YXIgb2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlKCk7XG4gICAgICAgIG9ic2VydmFibGUuc291cmNlID0gdGhpcztcbiAgICAgICAgb2JzZXJ2YWJsZS5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uIChvYnNlcnZlck9yTmV4dCwgZXJyb3IsIGNvbXBsZXRlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBzdWJzY3JpYmVyID0gaXNTdWJzY3JpYmVyKG9ic2VydmVyT3JOZXh0KSA/IG9ic2VydmVyT3JOZXh0IDogbmV3IFNhZmVTdWJzY3JpYmVyKG9ic2VydmVyT3JOZXh0LCBlcnJvciwgY29tcGxldGUpO1xuICAgICAgICBlcnJvckNvbnRleHQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMsIG9wZXJhdG9yID0gX2Eub3BlcmF0b3IsIHNvdXJjZSA9IF9hLnNvdXJjZTtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuYWRkKG9wZXJhdG9yXG4gICAgICAgICAgICAgICAgP1xuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvci5jYWxsKHN1YnNjcmliZXIsIHNvdXJjZSlcbiAgICAgICAgICAgICAgICA6IHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICA/XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fc3Vic2NyaWJlKHN1YnNjcmliZXIpXG4gICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl90cnlTdWJzY3JpYmUoc3Vic2NyaWJlcikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHN1YnNjcmliZXI7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlID0gZnVuY3Rpb24gKHNpbmspIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWJzY3JpYmUoc2luayk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgc2luay5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gKG5leHQsIHByb21pc2VDdG9yKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHByb21pc2VDdG9yID0gZ2V0UHJvbWlzZUN0b3IocHJvbWlzZUN0b3IpO1xuICAgICAgICByZXR1cm4gbmV3IHByb21pc2VDdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBzdWJzY3JpYmVyID0gbmV3IFNhZmVTdWJzY3JpYmVyKHtcbiAgICAgICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogcmVqZWN0LFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiByZXNvbHZlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBfdGhpcy5zdWJzY3JpYmUoc3Vic2NyaWJlcik7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuc291cmNlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGVbU3ltYm9sX29ic2VydmFibGVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBvcGVyYXRpb25zID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBvcGVyYXRpb25zW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBpcGVGcm9tQXJyYXkob3BlcmF0aW9ucykodGhpcyk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS50b1Byb21pc2UgPSBmdW5jdGlvbiAocHJvbWlzZUN0b3IpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcHJvbWlzZUN0b3IgPSBnZXRQcm9taXNlQ3Rvcihwcm9taXNlQ3Rvcik7XG4gICAgICAgIHJldHVybiBuZXcgcHJvbWlzZUN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICAgICAgX3RoaXMuc3Vic2NyaWJlKGZ1bmN0aW9uICh4KSB7IHJldHVybiAodmFsdWUgPSB4KTsgfSwgZnVuY3Rpb24gKGVycikgeyByZXR1cm4gcmVqZWN0KGVycik7IH0sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29sdmUodmFsdWUpOyB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLmNyZWF0ZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKHN1YnNjcmliZSk7XG4gICAgfTtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZTtcbn0oKSk7XG5leHBvcnQgeyBPYnNlcnZhYmxlIH07XG5mdW5jdGlvbiBnZXRQcm9taXNlQ3Rvcihwcm9taXNlQ3Rvcikge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gcHJvbWlzZUN0b3IgIT09IG51bGwgJiYgcHJvbWlzZUN0b3IgIT09IHZvaWQgMCA/IHByb21pc2VDdG9yIDogY29uZmlnLlByb21pc2UpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFByb21pc2U7XG59XG5mdW5jdGlvbiBpc09ic2VydmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIGlzRnVuY3Rpb24odmFsdWUubmV4dCkgJiYgaXNGdW5jdGlvbih2YWx1ZS5lcnJvcikgJiYgaXNGdW5jdGlvbih2YWx1ZS5jb21wbGV0ZSk7XG59XG5mdW5jdGlvbiBpc1N1YnNjcmliZXIodmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgU3Vic2NyaWJlcikgfHwgKGlzT2JzZXJ2ZXIodmFsdWUpICYmIGlzU3Vic2NyaXB0aW9uKHZhbHVlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1PYnNlcnZhYmxlLmpzLm1hcCIsImltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuL2lzRnVuY3Rpb24nO1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0xpZnQoc291cmNlKSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oc291cmNlID09PSBudWxsIHx8IHNvdXJjZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc291cmNlLmxpZnQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG9wZXJhdGUoaW5pdCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgIGlmIChoYXNMaWZ0KHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UubGlmdChmdW5jdGlvbiAobGlmdGVkU291cmNlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluaXQobGlmdGVkU291cmNlLCB0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGUnKTtcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGlmdC5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICcuLi9TdWJzY3JpYmVyJztcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPcGVyYXRvclN1YnNjcmliZXIoZGVzdGluYXRpb24sIG9uTmV4dCwgb25Db21wbGV0ZSwgb25FcnJvciwgb25GaW5hbGl6ZSkge1xuICAgIHJldHVybiBuZXcgT3BlcmF0b3JTdWJzY3JpYmVyKGRlc3RpbmF0aW9uLCBvbk5leHQsIG9uQ29tcGxldGUsIG9uRXJyb3IsIG9uRmluYWxpemUpO1xufVxudmFyIE9wZXJhdG9yU3Vic2NyaWJlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE9wZXJhdG9yU3Vic2NyaWJlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBPcGVyYXRvclN1YnNjcmliZXIoZGVzdGluYXRpb24sIG9uTmV4dCwgb25Db21wbGV0ZSwgb25FcnJvciwgb25GaW5hbGl6ZSwgc2hvdWxkVW5zdWJzY3JpYmUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGVzdGluYXRpb24pIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm9uRmluYWxpemUgPSBvbkZpbmFsaXplO1xuICAgICAgICBfdGhpcy5zaG91bGRVbnN1YnNjcmliZSA9IHNob3VsZFVuc3Vic2NyaWJlO1xuICAgICAgICBfdGhpcy5fbmV4dCA9IG9uTmV4dFxuICAgICAgICAgICAgPyBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbk5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBfc3VwZXIucHJvdG90eXBlLl9uZXh0O1xuICAgICAgICBfdGhpcy5fZXJyb3IgPSBvbkVycm9yXG4gICAgICAgICAgICA/IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IF9zdXBlci5wcm90b3R5cGUuX2Vycm9yO1xuICAgICAgICBfdGhpcy5fY29tcGxldGUgPSBvbkNvbXBsZXRlXG4gICAgICAgICAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IF9zdXBlci5wcm90b3R5cGUuX2NvbXBsZXRlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9wZXJhdG9yU3Vic2NyaWJlci5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFVuc3Vic2NyaWJlIHx8IHRoaXMuc2hvdWxkVW5zdWJzY3JpYmUoKSkge1xuICAgICAgICAgICAgdmFyIGNsb3NlZF8xID0gdGhpcy5jbG9zZWQ7XG4gICAgICAgICAgICBfc3VwZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAhY2xvc2VkXzEgJiYgKChfYSA9IHRoaXMub25GaW5hbGl6ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwodGhpcykpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gT3BlcmF0b3JTdWJzY3JpYmVyO1xufShTdWJzY3JpYmVyKSk7XG5leHBvcnQgeyBPcGVyYXRvclN1YnNjcmliZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU9wZXJhdG9yU3Vic2NyaWJlci5qcy5tYXAiLCJpbXBvcnQgeyBjcmVhdGVFcnJvckNsYXNzIH0gZnJvbSAnLi9jcmVhdGVFcnJvckNsYXNzJztcbmV4cG9ydCB2YXIgT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IgPSBjcmVhdGVFcnJvckNsYXNzKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3JJbXBsKCkge1xuICAgICAgICBfc3VwZXIodGhpcyk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdPYmplY3RVbnN1YnNjcmliZWRFcnJvcic7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9ICdvYmplY3QgdW5zdWJzY3JpYmVkJztcbiAgICB9O1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1PYmplY3RVbnN1YnNjcmliZWRFcnJvci5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMsIF9fdmFsdWVzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAnLi9PYnNlcnZhYmxlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgRU1QVFlfU1VCU0NSSVBUSU9OIH0gZnJvbSAnLi9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IgfSBmcm9tICcuL3V0aWwvT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3InO1xuaW1wb3J0IHsgYXJyUmVtb3ZlIH0gZnJvbSAnLi91dGlsL2FyclJlbW92ZSc7XG5pbXBvcnQgeyBlcnJvckNvbnRleHQgfSBmcm9tICcuL3V0aWwvZXJyb3JDb250ZXh0JztcbnZhciBTdWJqZWN0ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU3ViamVjdCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBTdWJqZWN0KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMuY3VycmVudE9ic2VydmVycyA9IG51bGw7XG4gICAgICAgIF90aGlzLm9ic2VydmVycyA9IFtdO1xuICAgICAgICBfdGhpcy5pc1N0b3BwZWQgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMudGhyb3duRXJyb3IgPSBudWxsO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFN1YmplY3QucHJvdG90eXBlLmxpZnQgPSBmdW5jdGlvbiAob3BlcmF0b3IpIHtcbiAgICAgICAgdmFyIHN1YmplY3QgPSBuZXcgQW5vbnltb3VzU3ViamVjdCh0aGlzLCB0aGlzKTtcbiAgICAgICAgc3ViamVjdC5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgICAgICByZXR1cm4gc3ViamVjdDtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLl90aHJvd0lmQ2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBPYmplY3RVbnN1YnNjcmliZWRFcnJvcigpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGVycm9yQ29udGV4dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgICAgIF90aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgICAgICBpZiAoIV90aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgICAgIGlmICghX3RoaXMuY3VycmVudE9ic2VydmVycykge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gQXJyYXkuZnJvbShfdGhpcy5vYnNlcnZlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKF90aGlzLmN1cnJlbnRPYnNlcnZlcnMpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2JzZXJ2ZXIgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgICAgICBpZiAoIV90aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgICAgIF90aGlzLmhhc0Vycm9yID0gX3RoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfdGhpcy50aHJvd25FcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgICB2YXIgb2JzZXJ2ZXJzID0gX3RoaXMub2JzZXJ2ZXJzO1xuICAgICAgICAgICAgICAgIHdoaWxlIChvYnNlcnZlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5zaGlmdCgpLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBlcnJvckNvbnRleHQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgICAgIGlmICghX3RoaXMuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2YXIgb2JzZXJ2ZXJzID0gX3RoaXMub2JzZXJ2ZXJzO1xuICAgICAgICAgICAgICAgIHdoaWxlIChvYnNlcnZlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5zaGlmdCgpLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlzU3RvcHBlZCA9IHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vYnNlcnZlcnMgPSB0aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFN1YmplY3QucHJvdG90eXBlLCBcIm9ic2VydmVkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gKChfYSA9IHRoaXMub2JzZXJ2ZXJzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlLmNhbGwodGhpcywgc3Vic2NyaWJlcik7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICB0aGlzLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzKHN1YnNjcmliZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5faW5uZXJTdWJzY3JpYmUoc3Vic2NyaWJlcik7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5faW5uZXJTdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBoYXNFcnJvciA9IF9hLmhhc0Vycm9yLCBpc1N0b3BwZWQgPSBfYS5pc1N0b3BwZWQsIG9ic2VydmVycyA9IF9hLm9ic2VydmVycztcbiAgICAgICAgaWYgKGhhc0Vycm9yIHx8IGlzU3RvcHBlZCkge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX1NVQlNDUklQVElPTjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgICAgICBvYnNlcnZlcnMucHVzaChzdWJzY3JpYmVyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb24oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuY3VycmVudE9ic2VydmVycyA9IG51bGw7XG4gICAgICAgICAgICBhcnJSZW1vdmUob2JzZXJ2ZXJzLCBzdWJzY3JpYmVyKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGhhc0Vycm9yID0gX2EuaGFzRXJyb3IsIHRocm93bkVycm9yID0gX2EudGhyb3duRXJyb3IsIGlzU3RvcHBlZCA9IF9hLmlzU3RvcHBlZDtcbiAgICAgICAgaWYgKGhhc0Vycm9yKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKHRocm93bkVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1N0b3BwZWQpIHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuYXNPYnNlcnZhYmxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlKCk7XG4gICAgICAgIG9ic2VydmFibGUuc291cmNlID0gdGhpcztcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGU7XG4gICAgfTtcbiAgICBTdWJqZWN0LmNyZWF0ZSA9IGZ1bmN0aW9uIChkZXN0aW5hdGlvbiwgc291cmNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgQW5vbnltb3VzU3ViamVjdChkZXN0aW5hdGlvbiwgc291cmNlKTtcbiAgICB9O1xuICAgIHJldHVybiBTdWJqZWN0O1xufShPYnNlcnZhYmxlKSk7XG5leHBvcnQgeyBTdWJqZWN0IH07XG52YXIgQW5vbnltb3VzU3ViamVjdCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFub255bW91c1N1YmplY3QsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQW5vbnltb3VzU3ViamVjdChkZXN0aW5hdGlvbiwgc291cmNlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmRlc3RpbmF0aW9uID0gZGVzdGluYXRpb247XG4gICAgICAgIF90aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBBbm9ueW1vdXNTdWJqZWN0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMuZGVzdGluYXRpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5uZXh0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSwgdmFsdWUpO1xuICAgIH07XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMuZGVzdGluYXRpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5lcnJvcikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIGVycik7XG4gICAgfTtcbiAgICBBbm9ueW1vdXNTdWJqZWN0LnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9iID0gKF9hID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvbXBsZXRlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7XG4gICAgfTtcbiAgICBBbm9ueW1vdXNTdWJqZWN0LnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IHRoaXMuc291cmNlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3Vic2NyaWJlKHN1YnNjcmliZXIpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBFTVBUWV9TVUJTQ1JJUFRJT047XG4gICAgfTtcbiAgICByZXR1cm4gQW5vbnltb3VzU3ViamVjdDtcbn0oU3ViamVjdCkpO1xuZXhwb3J0IHsgQW5vbnltb3VzU3ViamVjdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3ViamVjdC5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICcuL1N1YmplY3QnO1xudmFyIEJlaGF2aW9yU3ViamVjdCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJlaGF2aW9yU3ViamVjdCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBCZWhhdmlvclN1YmplY3QoX3ZhbHVlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLl92YWx1ZSA9IF92YWx1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQmVoYXZpb3JTdWJqZWN0LnByb3RvdHlwZSwgXCJ2YWx1ZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIEJlaGF2aW9yU3ViamVjdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSBfc3VwZXIucHJvdG90eXBlLl9zdWJzY3JpYmUuY2FsbCh0aGlzLCBzdWJzY3JpYmVyKTtcbiAgICAgICAgIXN1YnNjcmlwdGlvbi5jbG9zZWQgJiYgc3Vic2NyaWJlci5uZXh0KHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHN1YnNjcmlwdGlvbjtcbiAgICB9O1xuICAgIEJlaGF2aW9yU3ViamVjdC5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGhhc0Vycm9yID0gX2EuaGFzRXJyb3IsIHRocm93bkVycm9yID0gX2EudGhyb3duRXJyb3IsIF92YWx1ZSA9IF9hLl92YWx1ZTtcbiAgICAgICAgaWYgKGhhc0Vycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0aHJvd25FcnJvcjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgIHJldHVybiBfdmFsdWU7XG4gICAgfTtcbiAgICBCZWhhdmlvclN1YmplY3QucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcywgKHRoaXMuX3ZhbHVlID0gdmFsdWUpKTtcbiAgICB9O1xuICAgIHJldHVybiBCZWhhdmlvclN1YmplY3Q7XG59KFN1YmplY3QpKTtcbmV4cG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmVoYXZpb3JTdWJqZWN0LmpzLm1hcCIsImV4cG9ydCB2YXIgZGF0ZVRpbWVzdGFtcFByb3ZpZGVyID0ge1xuICAgIG5vdzogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKGRhdGVUaW1lc3RhbXBQcm92aWRlci5kZWxlZ2F0ZSB8fCBEYXRlKS5ub3coKTtcbiAgICB9LFxuICAgIGRlbGVnYXRlOiB1bmRlZmluZWQsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0ZVRpbWVzdGFtcFByb3ZpZGVyLmpzLm1hcCIsImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi4vU3Vic2NyaXB0aW9uJztcbnZhciBBY3Rpb24gPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBY3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQWN0aW9uKHNjaGVkdWxlciwgd29yaykge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICB9XG4gICAgQWN0aW9uLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uIChzdGF0ZSwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgcmV0dXJuIEFjdGlvbjtcbn0oU3Vic2NyaXB0aW9uKSk7XG5leHBvcnQgeyBBY3Rpb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFjdGlvbi5qcy5tYXAiLCJpbXBvcnQgeyBfX3JlYWQsIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmV4cG9ydCB2YXIgaW50ZXJ2YWxQcm92aWRlciA9IHtcbiAgICBzZXRJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlbGVnYXRlID0gaW50ZXJ2YWxQcm92aWRlci5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlID09PSBudWxsIHx8IGRlbGVnYXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWxlZ2F0ZS5zZXRJbnRlcnZhbCkge1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLnNldEludGVydmFsLmFwcGx5KGRlbGVnYXRlLCBfX3NwcmVhZEFycmF5KFtoYW5kbGVyLCB0aW1lb3V0XSwgX19yZWFkKGFyZ3MpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldEludGVydmFsLmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgIH0sXG4gICAgY2xlYXJJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBpbnRlcnZhbFByb3ZpZGVyLmRlbGVnYXRlO1xuICAgICAgICByZXR1cm4gKChkZWxlZ2F0ZSA9PT0gbnVsbCB8fCBkZWxlZ2F0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVsZWdhdGUuY2xlYXJJbnRlcnZhbCkgfHwgY2xlYXJJbnRlcnZhbCkoaGFuZGxlKTtcbiAgICB9LFxuICAgIGRlbGVnYXRlOiB1bmRlZmluZWQsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJ2YWxQcm92aWRlci5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4vQWN0aW9uJztcbmltcG9ydCB7IGludGVydmFsUHJvdmlkZXIgfSBmcm9tICcuL2ludGVydmFsUHJvdmlkZXInO1xuaW1wb3J0IHsgYXJyUmVtb3ZlIH0gZnJvbSAnLi4vdXRpbC9hcnJSZW1vdmUnO1xudmFyIEFzeW5jQWN0aW9uID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXN5bmNBY3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXN5bmNBY3Rpb24oc2NoZWR1bGVyLCB3b3JrKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHNjaGVkdWxlciwgd29yaykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyO1xuICAgICAgICBfdGhpcy53b3JrID0gd29yaztcbiAgICAgICAgX3RoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uIChzdGF0ZSwgZGVsYXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoZGVsYXkgPT09IHZvaWQgMCkgeyBkZWxheSA9IDA7IH1cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgICAgIHZhciBpZCA9IHRoaXMuaWQ7XG4gICAgICAgIHZhciBzY2hlZHVsZXIgPSB0aGlzLnNjaGVkdWxlcjtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKHNjaGVkdWxlciwgaWQsIGRlbGF5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgICAgIHRoaXMuaWQgPSAoX2EgPSB0aGlzLmlkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLnJlcXVlc3RBc3luY0lkKHNjaGVkdWxlciwgdGhpcy5pZCwgZGVsYXkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZCA9IGZ1bmN0aW9uIChzY2hlZHVsZXIsIF9pZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBpbnRlcnZhbFByb3ZpZGVyLnNldEludGVydmFsKHNjaGVkdWxlci5mbHVzaC5iaW5kKHNjaGVkdWxlciwgdGhpcyksIGRlbGF5KTtcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZCA9IGZ1bmN0aW9uIChfc2NoZWR1bGVyLCBpZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIGlmIChkZWxheSAhPSBudWxsICYmIHRoaXMuZGVsYXkgPT09IGRlbGF5ICYmIHRoaXMucGVuZGluZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW50ZXJ2YWxQcm92aWRlci5jbGVhckludGVydmFsKGlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgQXN5bmNBY3Rpb24ucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoc3RhdGUsIGRlbGF5KSB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcignZXhlY3V0aW5nIGEgY2FuY2VsbGVkIGFjdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICB2YXIgZXJyb3IgPSB0aGlzLl9leGVjdXRlKHN0YXRlLCBkZWxheSk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGVuZGluZyA9PT0gZmFsc2UgJiYgdGhpcy5pZCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZCh0aGlzLnNjaGVkdWxlciwgdGhpcy5pZCwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5fZXhlY3V0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgX2RlbGF5KSB7XG4gICAgICAgIHZhciBlcnJvcmVkID0gZmFsc2U7XG4gICAgICAgIHZhciBlcnJvclZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy53b3JrKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZXJyb3JlZCA9IHRydWU7XG4gICAgICAgICAgICBlcnJvclZhbHVlID0gZSA/IGUgOiBuZXcgRXJyb3IoJ1NjaGVkdWxlZCBhY3Rpb24gdGhyZXcgZmFsc3kgZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JlZCkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yVmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgaWQgPSBfYS5pZCwgc2NoZWR1bGVyID0gX2Euc2NoZWR1bGVyO1xuICAgICAgICAgICAgdmFyIGFjdGlvbnMgPSBzY2hlZHVsZXIuYWN0aW9ucztcbiAgICAgICAgICAgIHRoaXMud29yayA9IHRoaXMuc3RhdGUgPSB0aGlzLnNjaGVkdWxlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGFyclJlbW92ZShhY3Rpb25zLCB0aGlzKTtcbiAgICAgICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQoc2NoZWR1bGVyLCBpZCwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRlbGF5ID0gbnVsbDtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEFzeW5jQWN0aW9uO1xufShBY3Rpb24pKTtcbmV4cG9ydCB7IEFzeW5jQWN0aW9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Bc3luY0FjdGlvbi5qcy5tYXAiLCJpbXBvcnQgeyBkYXRlVGltZXN0YW1wUHJvdmlkZXIgfSBmcm9tICcuL3NjaGVkdWxlci9kYXRlVGltZXN0YW1wUHJvdmlkZXInO1xudmFyIFNjaGVkdWxlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2NoZWR1bGVyKHNjaGVkdWxlckFjdGlvbkN0b3IsIG5vdykge1xuICAgICAgICBpZiAobm93ID09PSB2b2lkIDApIHsgbm93ID0gU2NoZWR1bGVyLm5vdzsgfVxuICAgICAgICB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IgPSBzY2hlZHVsZXJBY3Rpb25DdG9yO1xuICAgICAgICB0aGlzLm5vdyA9IG5vdztcbiAgICB9XG4gICAgU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uICh3b3JrLCBkZWxheSwgc3RhdGUpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBuZXcgdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yKHRoaXMsIHdvcmspLnNjaGVkdWxlKHN0YXRlLCBkZWxheSk7XG4gICAgfTtcbiAgICBTY2hlZHVsZXIubm93ID0gZGF0ZVRpbWVzdGFtcFByb3ZpZGVyLm5vdztcbiAgICByZXR1cm4gU2NoZWR1bGVyO1xufSgpKTtcbmV4cG9ydCB7IFNjaGVkdWxlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2NoZWR1bGVyLmpzLm1hcCIsImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgU2NoZWR1bGVyIH0gZnJvbSAnLi4vU2NoZWR1bGVyJztcbnZhciBBc3luY1NjaGVkdWxlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFzeW5jU2NoZWR1bGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFzeW5jU2NoZWR1bGVyKFNjaGVkdWxlckFjdGlvbiwgbm93KSB7XG4gICAgICAgIGlmIChub3cgPT09IHZvaWQgMCkgeyBub3cgPSBTY2hlZHVsZXIubm93OyB9XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIFNjaGVkdWxlckFjdGlvbiwgbm93KSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5hY3Rpb25zID0gW107XG4gICAgICAgIF90aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBBc3luY1NjaGVkdWxlci5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbiAoYWN0aW9uKSB7XG4gICAgICAgIHZhciBhY3Rpb25zID0gdGhpcy5hY3Rpb25zO1xuICAgICAgICBpZiAodGhpcy5fYWN0aXZlKSB7XG4gICAgICAgICAgICBhY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZXJyb3I7XG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IHRydWU7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmICgoZXJyb3IgPSBhY3Rpb24uZXhlY3V0ZShhY3Rpb24uc3RhdGUsIGFjdGlvbi5kZWxheSkpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKChhY3Rpb24gPSBhY3Rpb25zLnNoaWZ0KCkpKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgd2hpbGUgKChhY3Rpb24gPSBhY3Rpb25zLnNoaWZ0KCkpKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEFzeW5jU2NoZWR1bGVyO1xufShTY2hlZHVsZXIpKTtcbmV4cG9ydCB7IEFzeW5jU2NoZWR1bGVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Bc3luY1NjaGVkdWxlci5qcy5tYXAiLCJpbXBvcnQgeyBBc3luY0FjdGlvbiB9IGZyb20gJy4vQXN5bmNBY3Rpb24nO1xuaW1wb3J0IHsgQXN5bmNTY2hlZHVsZXIgfSBmcm9tICcuL0FzeW5jU2NoZWR1bGVyJztcbmV4cG9ydCB2YXIgYXN5bmNTY2hlZHVsZXIgPSBuZXcgQXN5bmNTY2hlZHVsZXIoQXN5bmNBY3Rpb24pO1xuZXhwb3J0IHZhciBhc3luYyA9IGFzeW5jU2NoZWR1bGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXN5bmMuanMubWFwIiwiaW1wb3J0IHsgYXN5bmNTY2hlZHVsZXIgfSBmcm9tICcuLi9zY2hlZHVsZXIvYXN5bmMnO1xuaW1wb3J0IHsgb3BlcmF0ZSB9IGZyb20gJy4uL3V0aWwvbGlmdCc7XG5pbXBvcnQgeyBjcmVhdGVPcGVyYXRvclN1YnNjcmliZXIgfSBmcm9tICcuL09wZXJhdG9yU3Vic2NyaWJlcic7XG5leHBvcnQgZnVuY3Rpb24gZGVib3VuY2VUaW1lKGR1ZVRpbWUsIHNjaGVkdWxlcikge1xuICAgIGlmIChzY2hlZHVsZXIgPT09IHZvaWQgMCkgeyBzY2hlZHVsZXIgPSBhc3luY1NjaGVkdWxlcjsgfVxuICAgIHJldHVybiBvcGVyYXRlKGZ1bmN0aW9uIChzb3VyY2UsIHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIGFjdGl2ZVRhc2sgPSBudWxsO1xuICAgICAgICB2YXIgbGFzdFZhbHVlID0gbnVsbDtcbiAgICAgICAgdmFyIGxhc3RUaW1lID0gbnVsbDtcbiAgICAgICAgdmFyIGVtaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlVGFzaykge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhc2sudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYXNrID0gbnVsbDtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBsYXN0VmFsdWU7XG4gICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiBlbWl0V2hlbklkbGUoKSB7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0VGltZSA9IGxhc3RUaW1lICsgZHVlVGltZTtcbiAgICAgICAgICAgIHZhciBub3cgPSBzY2hlZHVsZXIubm93KCk7XG4gICAgICAgICAgICBpZiAobm93IDwgdGFyZ2V0VGltZSkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhc2sgPSB0aGlzLnNjaGVkdWxlKHVuZGVmaW5lZCwgdGFyZ2V0VGltZSAtIG5vdyk7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5hZGQoYWN0aXZlVGFzayk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW1pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZS5zdWJzY3JpYmUoY3JlYXRlT3BlcmF0b3JTdWJzY3JpYmVyKHN1YnNjcmliZXIsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbGFzdFZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBsYXN0VGltZSA9IHNjaGVkdWxlci5ub3coKTtcbiAgICAgICAgICAgIGlmICghYWN0aXZlVGFzaykge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhc2sgPSBzY2hlZHVsZXIuc2NoZWR1bGUoZW1pdFdoZW5JZGxlLCBkdWVUaW1lKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmFkZChhY3RpdmVUYXNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW1pdCgpO1xuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICB9LCB1bmRlZmluZWQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxhc3RWYWx1ZSA9IGFjdGl2ZVRhc2sgPSBudWxsO1xuICAgICAgICB9KSk7XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWJvdW5jZVRpbWUuanMubWFwIiwiaW1wb3J0IHtzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiXG5pbXBvcnQge09yZGVyfSBmcm9tIFwiLi4vbW9kZWwvb3JkZXJcIlxuaW1wb3J0IHtvYnNlcnZlT2JqZWN0fSBmcm9tIFwiLi4vbGliL29iLW9iXCJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSBcInJ4anNcIlxuXG5Ac2luZ2xldG9uKClcbmV4cG9ydCBjbGFzcyBPcmRlclN0YXRlIHtcblxuICAgIG9yZGVyczogQXJyYXk8T3JkZXI+XG4gICAgcHJpdmF0ZSBjdXJyZW50T3JkZXI6IEJlaGF2aW9yU3ViamVjdDxPcmRlcj5cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRPcmRlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T3JkZXI+KG5ldyBPcmRlcigpKVxuICAgIH1cblxuICAgIGdldEN1cnJlbnRPcmRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE9yZGVyXG4gICAgfVxuXG4gICAgc2V0Q3VycmVudE9yZGVyKG9yZGVyOiBPcmRlcikge1xuICAgICAgICB0aGlzLmN1cnJlbnRPcmRlci5uZXh0KG9yZGVyKVxuICAgIH1cblxuICAgIGdldE9yZGVyKHV1aWQ6IFN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmRlcnMubWFwKChlKSA9PiBlLnV1aWQgPT0gdXVpZClcbiAgICB9XG5cbiAgICB1cGRhdGVPcmRlcihvcmRlcjogT3JkZXIpIHtcbiAgICAgICAgdGhpcy5vcmRlcnMucHVzaChvcmRlcilcbiAgICB9XG59XG4iLCJ2YXIgbixsLHUsdCxpLHIsbyxlLGYsYyxzLGEsaCxwPXt9LHY9W10seT0vYWNpdHxleCg/OnN8Z3xufHB8JCl8cnBofGdyaWR8b3dzfG1uY3xudHd8aW5lW2NoXXx6b298Xm9yZHxpdGVyYS9pLGQ9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiB3KG4sbCl7Zm9yKHZhciB1IGluIGwpblt1XT1sW3VdO3JldHVybiBufWZ1bmN0aW9uIF8obil7biYmbi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobil9ZnVuY3Rpb24gZyhsLHUsdCl7dmFyIGkscixvLGU9e307Zm9yKG8gaW4gdSlcImtleVwiPT1vP2k9dVtvXTpcInJlZlwiPT1vP3I9dVtvXTplW29dPXVbb107aWYoYXJndW1lbnRzLmxlbmd0aD4yJiYoZS5jaGlsZHJlbj1hcmd1bWVudHMubGVuZ3RoPjM/bi5jYWxsKGFyZ3VtZW50cywyKTp0KSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBsJiZudWxsIT1sLmRlZmF1bHRQcm9wcylmb3IobyBpbiBsLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1lW29dJiYoZVtvXT1sLmRlZmF1bHRQcm9wc1tvXSk7cmV0dXJuIG0obCxlLGkscixudWxsKX1mdW5jdGlvbiBtKG4sdCxpLHIsbyl7dmFyIGU9e3R5cGU6bixwcm9wczp0LGtleTppLHJlZjpyLF9fazpudWxsLF9fOm51bGwsX19iOjAsX19lOm51bGwsX19jOm51bGwsY29uc3RydWN0b3I6dm9pZCAwLF9fdjpudWxsPT1vPysrdTpvLF9faTotMSxfX3U6MH07cmV0dXJuIG51bGw9PW8mJm51bGwhPWwudm5vZGUmJmwudm5vZGUoZSksZX1mdW5jdGlvbiBiKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19ZnVuY3Rpb24gayhuKXtyZXR1cm4gbi5jaGlsZHJlbn1mdW5jdGlvbiB4KG4sbCl7dGhpcy5wcm9wcz1uLHRoaXMuY29udGV4dD1sfWZ1bmN0aW9uIEMobixsKXtpZihudWxsPT1sKXJldHVybiBuLl9fP0Mobi5fXyxuLl9faSsxKTpudWxsO2Zvcih2YXIgdTtsPG4uX19rLmxlbmd0aDtsKyspaWYobnVsbCE9KHU9bi5fX2tbbF0pJiZudWxsIT11Ll9fZSlyZXR1cm4gdS5fX2U7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2Ygbi50eXBlP0Mobik6bnVsbH1mdW5jdGlvbiBTKG4pe3ZhciBsLHU7aWYobnVsbCE9KG49bi5fXykmJm51bGwhPW4uX19jKXtmb3Iobi5fX2U9bi5fX2MuYmFzZT1udWxsLGw9MDtsPG4uX19rLmxlbmd0aDtsKyspaWYobnVsbCE9KHU9bi5fX2tbbF0pJiZudWxsIT11Ll9fZSl7bi5fX2U9bi5fX2MuYmFzZT11Ll9fZTticmVha31yZXR1cm4gUyhuKX19ZnVuY3Rpb24gTShuKXsoIW4uX19kJiYobi5fX2Q9ITApJiZpLnB1c2gobikmJiFQLl9fcisrfHxyIT09bC5kZWJvdW5jZVJlbmRlcmluZykmJigocj1sLmRlYm91bmNlUmVuZGVyaW5nKXx8bykoUCl9ZnVuY3Rpb24gUCgpe3ZhciBuLHUsdCxyLG8sZixjLHM7Zm9yKGkuc29ydChlKTtuPWkuc2hpZnQoKTspbi5fX2QmJih1PWkubGVuZ3RoLHI9dm9pZCAwLGY9KG89KHQ9bikuX192KS5fX2UsYz1bXSxzPVtdLHQuX19QJiYoKHI9dyh7fSxvKSkuX192PW8uX192KzEsbC52bm9kZSYmbC52bm9kZShyKSxqKHQuX19QLHIsbyx0Ll9fbix0Ll9fUC5uYW1lc3BhY2VVUkksMzImby5fX3U/W2ZdOm51bGwsYyxudWxsPT1mP0Mobyk6ZiwhISgzMiZvLl9fdSkscyksci5fX3Y9by5fX3Ysci5fXy5fX2tbci5fX2ldPXIseihjLHIscyksci5fX2UhPWYmJlMocikpLGkubGVuZ3RoPnUmJmkuc29ydChlKSk7UC5fX3I9MH1mdW5jdGlvbiAkKG4sbCx1LHQsaSxyLG8sZSxmLGMscyl7dmFyIGEsaCx5LGQsdyxfLGc9dCYmdC5fX2t8fHYsbT1sLmxlbmd0aDtmb3IoZj1JKHUsbCxnLGYsbSksYT0wO2E8bTthKyspbnVsbCE9KHk9dS5fX2tbYV0pJiYoaD0tMT09PXkuX19pP3A6Z1t5Ll9faV18fHAseS5fX2k9YSxfPWoobix5LGgsaSxyLG8sZSxmLGMscyksZD15Ll9fZSx5LnJlZiYmaC5yZWYhPXkucmVmJiYoaC5yZWYmJlYoaC5yZWYsbnVsbCx5KSxzLnB1c2goeS5yZWYseS5fX2N8fGQseSkpLG51bGw9PXcmJm51bGwhPWQmJih3PWQpLDQmeS5fX3V8fGguX19rPT09eS5fX2s/Zj1BKHksZixuKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiB5LnR5cGUmJnZvaWQgMCE9PV8/Zj1fOmQmJihmPWQubmV4dFNpYmxpbmcpLHkuX191Jj0tNyk7cmV0dXJuIHUuX19lPXcsZn1mdW5jdGlvbiBJKG4sbCx1LHQsaSl7dmFyIHIsbyxlLGYsYyxzPXUubGVuZ3RoLGE9cyxoPTA7Zm9yKG4uX19rPW5ldyBBcnJheShpKSxyPTA7cjxpO3IrKyludWxsIT0obz1sW3JdKSYmXCJib29sZWFuXCIhPXR5cGVvZiBvJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBvPyhmPXIraCwobz1uLl9fa1tyXT1cInN0cmluZ1wiPT10eXBlb2Ygb3x8XCJudW1iZXJcIj09dHlwZW9mIG98fFwiYmlnaW50XCI9PXR5cGVvZiBvfHxvLmNvbnN0cnVjdG9yPT1TdHJpbmc/bShudWxsLG8sbnVsbCxudWxsLG51bGwpOmQobyk/bShrLHtjaGlsZHJlbjpvfSxudWxsLG51bGwsbnVsbCk6dm9pZCAwPT09by5jb25zdHJ1Y3RvciYmby5fX2I+MD9tKG8udHlwZSxvLnByb3BzLG8ua2V5LG8ucmVmP28ucmVmOm51bGwsby5fX3YpOm8pLl9fPW4sby5fX2I9bi5fX2IrMSxlPW51bGwsLTEhPT0oYz1vLl9faT1MKG8sdSxmLGEpKSYmKGEtLSwoZT11W2NdKSYmKGUuX191fD0yKSksbnVsbD09ZXx8bnVsbD09PWUuX192PygtMT09YyYmaC0tLFwiZnVuY3Rpb25cIiE9dHlwZW9mIG8udHlwZSYmKG8uX191fD00KSk6YyE9ZiYmKGM9PWYtMT9oLS06Yz09ZisxP2grKzooYz5mP2gtLTpoKyssby5fX3V8PTQpKSk6bi5fX2tbcl09bnVsbDtpZihhKWZvcihyPTA7cjxzO3IrKyludWxsIT0oZT11W3JdKSYmMD09KDImZS5fX3UpJiYoZS5fX2U9PXQmJih0PUMoZSkpLHEoZSxlKSk7cmV0dXJuIHR9ZnVuY3Rpb24gQShuLGwsdSl7dmFyIHQsaTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLnR5cGUpe2Zvcih0PW4uX19rLGk9MDt0JiZpPHQubGVuZ3RoO2krKyl0W2ldJiYodFtpXS5fXz1uLGw9QSh0W2ldLGwsdSkpO3JldHVybiBsfW4uX19lIT1sJiYobCYmbi50eXBlJiYhdS5jb250YWlucyhsKSYmKGw9QyhuKSksdS5pbnNlcnRCZWZvcmUobi5fX2UsbHx8bnVsbCksbD1uLl9fZSk7ZG97bD1sJiZsLm5leHRTaWJsaW5nfXdoaWxlKG51bGwhPWwmJjg9PWwubm9kZVR5cGUpO3JldHVybiBsfWZ1bmN0aW9uIEgobixsKXtyZXR1cm4gbD1sfHxbXSxudWxsPT1ufHxcImJvb2xlYW5cIj09dHlwZW9mIG58fChkKG4pP24uc29tZShmdW5jdGlvbihuKXtIKG4sbCl9KTpsLnB1c2gobikpLGx9ZnVuY3Rpb24gTChuLGwsdSx0KXt2YXIgaSxyLG89bi5rZXksZT1uLnR5cGUsZj1sW3VdO2lmKG51bGw9PT1mfHxmJiZvPT1mLmtleSYmZT09PWYudHlwZSYmMD09KDImZi5fX3UpKXJldHVybiB1O2lmKHQ+KG51bGwhPWYmJjA9PSgyJmYuX191KT8xOjApKWZvcihpPXUtMSxyPXUrMTtpPj0wfHxyPGwubGVuZ3RoOyl7aWYoaT49MCl7aWYoKGY9bFtpXSkmJjA9PSgyJmYuX191KSYmbz09Zi5rZXkmJmU9PT1mLnR5cGUpcmV0dXJuIGk7aS0tfWlmKHI8bC5sZW5ndGgpe2lmKChmPWxbcl0pJiYwPT0oMiZmLl9fdSkmJm89PWYua2V5JiZlPT09Zi50eXBlKXJldHVybiByO3IrK319cmV0dXJuLTF9ZnVuY3Rpb24gVChuLGwsdSl7XCItXCI9PWxbMF0/bi5zZXRQcm9wZXJ0eShsLG51bGw9PXU/XCJcIjp1KTpuW2xdPW51bGw9PXU/XCJcIjpcIm51bWJlclwiIT10eXBlb2YgdXx8eS50ZXN0KGwpP3U6dStcInB4XCJ9ZnVuY3Rpb24gRihuLGwsdSx0LGkpe3ZhciByO246aWYoXCJzdHlsZVwiPT1sKWlmKFwic3RyaW5nXCI9PXR5cGVvZiB1KW4uc3R5bGUuY3NzVGV4dD11O2Vsc2V7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQmJihuLnN0eWxlLmNzc1RleHQ9dD1cIlwiKSx0KWZvcihsIGluIHQpdSYmbCBpbiB1fHxUKG4uc3R5bGUsbCxcIlwiKTtpZih1KWZvcihsIGluIHUpdCYmdVtsXT09PXRbbF18fFQobi5zdHlsZSxsLHVbbF0pfWVsc2UgaWYoXCJvXCI9PWxbMF0mJlwiblwiPT1sWzFdKXI9bCE9KGw9bC5yZXBsYWNlKGYsXCIkMVwiKSksbD1sLnRvTG93ZXJDYXNlKClpbiBufHxcIm9uRm9jdXNPdXRcIj09bHx8XCJvbkZvY3VzSW5cIj09bD9sLnRvTG93ZXJDYXNlKCkuc2xpY2UoMik6bC5zbGljZSgyKSxuLmx8fChuLmw9e30pLG4ubFtsK3JdPXUsdT90P3UudT10LnU6KHUudT1jLG4uYWRkRXZlbnRMaXN0ZW5lcihsLHI/YTpzLHIpKTpuLnJlbW92ZUV2ZW50TGlzdGVuZXIobCxyP2E6cyxyKTtlbHNle2lmKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj09aSlsPWwucmVwbGFjZSgveGxpbmsoSHw6aCkvLFwiaFwiKS5yZXBsYWNlKC9zTmFtZSQvLFwic1wiKTtlbHNlIGlmKFwid2lkdGhcIiE9bCYmXCJoZWlnaHRcIiE9bCYmXCJocmVmXCIhPWwmJlwibGlzdFwiIT1sJiZcImZvcm1cIiE9bCYmXCJ0YWJJbmRleFwiIT1sJiZcImRvd25sb2FkXCIhPWwmJlwicm93U3BhblwiIT1sJiZcImNvbFNwYW5cIiE9bCYmXCJyb2xlXCIhPWwmJlwicG9wb3ZlclwiIT1sJiZsIGluIG4pdHJ5e25bbF09bnVsbD09dT9cIlwiOnU7YnJlYWsgbn1jYXRjaChuKXt9XCJmdW5jdGlvblwiPT10eXBlb2YgdXx8KG51bGw9PXV8fCExPT09dSYmXCItXCIhPWxbNF0/bi5yZW1vdmVBdHRyaWJ1dGUobCk6bi5zZXRBdHRyaWJ1dGUobCxcInBvcG92ZXJcIj09bCYmMT09dT9cIlwiOnUpKX19ZnVuY3Rpb24gTyhuKXtyZXR1cm4gZnVuY3Rpb24odSl7aWYodGhpcy5sKXt2YXIgdD10aGlzLmxbdS50eXBlK25dO2lmKG51bGw9PXUudCl1LnQ9YysrO2Vsc2UgaWYodS50PHQudSlyZXR1cm47cmV0dXJuIHQobC5ldmVudD9sLmV2ZW50KHUpOnUpfX19ZnVuY3Rpb24gaihuLHUsdCxpLHIsbyxlLGYsYyxzKXt2YXIgYSxoLHAsdix5LGcsbSxiLEMsUyxNLFAsSSxBLEgsTCxULEY9dS50eXBlO2lmKHZvaWQgMCE9PXUuY29uc3RydWN0b3IpcmV0dXJuIG51bGw7MTI4JnQuX191JiYoYz0hISgzMiZ0Ll9fdSksbz1bZj11Ll9fZT10Ll9fZV0pLChhPWwuX19iKSYmYSh1KTtuOmlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIEYpdHJ5e2lmKGI9dS5wcm9wcyxDPVwicHJvdG90eXBlXCJpbiBGJiZGLnByb3RvdHlwZS5yZW5kZXIsUz0oYT1GLmNvbnRleHRUeXBlKSYmaVthLl9fY10sTT1hP1M/Uy5wcm9wcy52YWx1ZTphLl9fOmksdC5fX2M/bT0oaD11Ll9fYz10Ll9fYykuX189aC5fX0U6KEM/dS5fX2M9aD1uZXcgRihiLE0pOih1Ll9fYz1oPW5ldyB4KGIsTSksaC5jb25zdHJ1Y3Rvcj1GLGgucmVuZGVyPUIpLFMmJlMuc3ViKGgpLGgucHJvcHM9YixoLnN0YXRlfHwoaC5zdGF0ZT17fSksaC5jb250ZXh0PU0saC5fX249aSxwPWguX19kPSEwLGguX19oPVtdLGguX3NiPVtdKSxDJiZudWxsPT1oLl9fcyYmKGguX19zPWguc3RhdGUpLEMmJm51bGwhPUYuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiYoaC5fX3M9PWguc3RhdGUmJihoLl9fcz13KHt9LGguX19zKSksdyhoLl9fcyxGLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhiLGguX19zKSkpLHY9aC5wcm9wcyx5PWguc3RhdGUsaC5fX3Y9dSxwKUMmJm51bGw9PUYuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiZudWxsIT1oLmNvbXBvbmVudFdpbGxNb3VudCYmaC5jb21wb25lbnRXaWxsTW91bnQoKSxDJiZudWxsIT1oLmNvbXBvbmVudERpZE1vdW50JiZoLl9faC5wdXNoKGguY29tcG9uZW50RGlkTW91bnQpO2Vsc2V7aWYoQyYmbnVsbD09Ri5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMmJmIhPT12JiZudWxsIT1oLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmguY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhiLE0pLCFoLl9fZSYmKG51bGwhPWguc2hvdWxkQ29tcG9uZW50VXBkYXRlJiYhMT09PWguc2hvdWxkQ29tcG9uZW50VXBkYXRlKGIsaC5fX3MsTSl8fHUuX192PT10Ll9fdikpe2Zvcih1Ll9fdiE9dC5fX3YmJihoLnByb3BzPWIsaC5zdGF0ZT1oLl9fcyxoLl9fZD0hMSksdS5fX2U9dC5fX2UsdS5fX2s9dC5fX2ssdS5fX2suc29tZShmdW5jdGlvbihuKXtuJiYobi5fXz11KX0pLFA9MDtQPGguX3NiLmxlbmd0aDtQKyspaC5fX2gucHVzaChoLl9zYltQXSk7aC5fc2I9W10saC5fX2gubGVuZ3RoJiZlLnB1c2goaCk7YnJlYWsgbn1udWxsIT1oLmNvbXBvbmVudFdpbGxVcGRhdGUmJmguY29tcG9uZW50V2lsbFVwZGF0ZShiLGguX19zLE0pLEMmJm51bGwhPWguY29tcG9uZW50RGlkVXBkYXRlJiZoLl9faC5wdXNoKGZ1bmN0aW9uKCl7aC5jb21wb25lbnREaWRVcGRhdGUodix5LGcpfSl9aWYoaC5jb250ZXh0PU0saC5wcm9wcz1iLGguX19QPW4saC5fX2U9ITEsST1sLl9fcixBPTAsQyl7Zm9yKGguc3RhdGU9aC5fX3MsaC5fX2Q9ITEsSSYmSSh1KSxhPWgucmVuZGVyKGgucHJvcHMsaC5zdGF0ZSxoLmNvbnRleHQpLEg9MDtIPGguX3NiLmxlbmd0aDtIKyspaC5fX2gucHVzaChoLl9zYltIXSk7aC5fc2I9W119ZWxzZSBkb3toLl9fZD0hMSxJJiZJKHUpLGE9aC5yZW5kZXIoaC5wcm9wcyxoLnN0YXRlLGguY29udGV4dCksaC5zdGF0ZT1oLl9fc313aGlsZShoLl9fZCYmKytBPDI1KTtoLnN0YXRlPWguX19zLG51bGwhPWguZ2V0Q2hpbGRDb250ZXh0JiYoaT13KHcoe30saSksaC5nZXRDaGlsZENvbnRleHQoKSkpLEMmJiFwJiZudWxsIT1oLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYoZz1oLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHYseSkpLGY9JChuLGQoTD1udWxsIT1hJiZhLnR5cGU9PT1rJiZudWxsPT1hLmtleT9hLnByb3BzLmNoaWxkcmVuOmEpP0w6W0xdLHUsdCxpLHIsbyxlLGYsYyxzKSxoLmJhc2U9dS5fX2UsdS5fX3UmPS0xNjEsaC5fX2gubGVuZ3RoJiZlLnB1c2goaCksbSYmKGguX19FPWguX189bnVsbCl9Y2F0Y2gobil7aWYodS5fX3Y9bnVsbCxjfHxudWxsIT1vKWlmKG4udGhlbil7Zm9yKHUuX191fD1jPzE2MDoxMjg7ZiYmOD09Zi5ub2RlVHlwZSYmZi5uZXh0U2libGluZzspZj1mLm5leHRTaWJsaW5nO29bby5pbmRleE9mKGYpXT1udWxsLHUuX19lPWZ9ZWxzZSBmb3IoVD1vLmxlbmd0aDtULS07KV8ob1tUXSk7ZWxzZSB1Ll9fZT10Ll9fZSx1Ll9faz10Ll9faztsLl9fZShuLHUsdCl9ZWxzZSBudWxsPT1vJiZ1Ll9fdj09dC5fX3Y/KHUuX19rPXQuX19rLHUuX19lPXQuX19lKTpmPXUuX19lPU4odC5fX2UsdSx0LGkscixvLGUsYyxzKTtyZXR1cm4oYT1sLmRpZmZlZCkmJmEodSksMTI4JnUuX191P3ZvaWQgMDpmfWZ1bmN0aW9uIHoobix1LHQpe2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKVYodFtpXSx0WysraV0sdFsrK2ldKTtsLl9fYyYmbC5fX2ModSxuKSxuLnNvbWUoZnVuY3Rpb24odSl7dHJ5e249dS5fX2gsdS5fX2g9W10sbi5zb21lKGZ1bmN0aW9uKG4pe24uY2FsbCh1KX0pfWNhdGNoKG4pe2wuX19lKG4sdS5fX3YpfX0pfWZ1bmN0aW9uIE4odSx0LGkscixvLGUsZixjLHMpe3ZhciBhLGgsdix5LHcsZyxtLGI9aS5wcm9wcyxrPXQucHJvcHMseD10LnR5cGU7aWYoXCJzdmdcIj09eD9vPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjpcIm1hdGhcIj09eD9vPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiOm98fChvPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiKSxudWxsIT1lKWZvcihhPTA7YTxlLmxlbmd0aDthKyspaWYoKHc9ZVthXSkmJlwic2V0QXR0cmlidXRlXCJpbiB3PT0hIXgmJih4P3cubG9jYWxOYW1lPT14OjM9PXcubm9kZVR5cGUpKXt1PXcsZVthXT1udWxsO2JyZWFrfWlmKG51bGw9PXUpe2lmKG51bGw9PXgpcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGspO3U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8seCxrLmlzJiZrKSxjJiYobC5fX20mJmwuX19tKHQsZSksYz0hMSksZT1udWxsfWlmKG51bGw9PT14KWI9PT1rfHxjJiZ1LmRhdGE9PT1rfHwodS5kYXRhPWspO2Vsc2V7aWYoZT1lJiZuLmNhbGwodS5jaGlsZE5vZGVzKSxiPWkucHJvcHN8fHAsIWMmJm51bGwhPWUpZm9yKGI9e30sYT0wO2E8dS5hdHRyaWJ1dGVzLmxlbmd0aDthKyspYlsodz11LmF0dHJpYnV0ZXNbYV0pLm5hbWVdPXcudmFsdWU7Zm9yKGEgaW4gYilpZih3PWJbYV0sXCJjaGlsZHJlblwiPT1hKTtlbHNlIGlmKFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09YSl2PXc7ZWxzZSBpZighKGEgaW4gaykpe2lmKFwidmFsdWVcIj09YSYmXCJkZWZhdWx0VmFsdWVcImluIGt8fFwiY2hlY2tlZFwiPT1hJiZcImRlZmF1bHRDaGVja2VkXCJpbiBrKWNvbnRpbnVlO0YodSxhLG51bGwsdyxvKX1mb3IoYSBpbiBrKXc9a1thXSxcImNoaWxkcmVuXCI9PWE/eT13OlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09YT9oPXc6XCJ2YWx1ZVwiPT1hP2c9dzpcImNoZWNrZWRcIj09YT9tPXc6YyYmXCJmdW5jdGlvblwiIT10eXBlb2Ygd3x8YlthXT09PXd8fEYodSxhLHcsYlthXSxvKTtpZihoKWN8fHYmJihoLl9faHRtbD09PXYuX19odG1sfHxoLl9faHRtbD09PXUuaW5uZXJIVE1MKXx8KHUuaW5uZXJIVE1MPWguX19odG1sKSx0Ll9faz1bXTtlbHNlIGlmKHYmJih1LmlubmVySFRNTD1cIlwiKSwkKHUsZCh5KT95Olt5XSx0LGkscixcImZvcmVpZ25PYmplY3RcIj09eD9cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIjpvLGUsZixlP2VbMF06aS5fX2smJkMoaSwwKSxjLHMpLG51bGwhPWUpZm9yKGE9ZS5sZW5ndGg7YS0tOylfKGVbYV0pO2N8fChhPVwidmFsdWVcIixcInByb2dyZXNzXCI9PXgmJm51bGw9PWc/dS5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTp2b2lkIDAhPT1nJiYoZyE9PXVbYV18fFwicHJvZ3Jlc3NcIj09eCYmIWd8fFwib3B0aW9uXCI9PXgmJmchPT1iW2FdKSYmRih1LGEsZyxiW2FdLG8pLGE9XCJjaGVja2VkXCIsdm9pZCAwIT09bSYmbSE9PXVbYV0mJkYodSxhLG0sYlthXSxvKSl9cmV0dXJuIHV9ZnVuY3Rpb24gVihuLHUsdCl7dHJ5e2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4pe3ZhciBpPVwiZnVuY3Rpb25cIj09dHlwZW9mIG4uX191O2kmJm4uX191KCksaSYmbnVsbD09dXx8KG4uX191PW4odSkpfWVsc2Ugbi5jdXJyZW50PXV9Y2F0Y2gobil7bC5fX2Uobix0KX19ZnVuY3Rpb24gcShuLHUsdCl7dmFyIGkscjtpZihsLnVubW91bnQmJmwudW5tb3VudChuKSwoaT1uLnJlZikmJihpLmN1cnJlbnQmJmkuY3VycmVudCE9PW4uX19lfHxWKGksbnVsbCx1KSksbnVsbCE9KGk9bi5fX2MpKXtpZihpLmNvbXBvbmVudFdpbGxVbm1vdW50KXRyeXtpLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2gobil7bC5fX2Uobix1KX1pLmJhc2U9aS5fX1A9bnVsbH1pZihpPW4uX19rKWZvcihyPTA7cjxpLmxlbmd0aDtyKyspaVtyXSYmcShpW3JdLHUsdHx8XCJmdW5jdGlvblwiIT10eXBlb2Ygbi50eXBlKTt0fHxfKG4uX19lKSxuLl9fYz1uLl9fPW4uX19lPXZvaWQgMH1mdW5jdGlvbiBCKG4sbCx1KXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3RvcihuLHUpfWZ1bmN0aW9uIEQodSx0LGkpe3ZhciByLG8sZSxmO3Q9PWRvY3VtZW50JiYodD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLGwuX18mJmwuX18odSx0KSxvPShyPVwiZnVuY3Rpb25cIj09dHlwZW9mIGkpP251bGw6aSYmaS5fX2t8fHQuX19rLGU9W10sZj1bXSxqKHQsdT0oIXImJml8fHQpLl9faz1nKGssbnVsbCxbdV0pLG98fHAscCx0Lm5hbWVzcGFjZVVSSSwhciYmaT9baV06bz9udWxsOnQuZmlyc3RDaGlsZD9uLmNhbGwodC5jaGlsZE5vZGVzKTpudWxsLGUsIXImJmk/aTpvP28uX19lOnQuZmlyc3RDaGlsZCxyLGYpLHooZSx1LGYpfWZ1bmN0aW9uIEUobixsKXtEKG4sbCxFKX1mdW5jdGlvbiBHKGwsdSx0KXt2YXIgaSxyLG8sZSxmPXcoe30sbC5wcm9wcyk7Zm9yKG8gaW4gbC50eXBlJiZsLnR5cGUuZGVmYXVsdFByb3BzJiYoZT1sLnR5cGUuZGVmYXVsdFByb3BzKSx1KVwia2V5XCI9PW8/aT11W29dOlwicmVmXCI9PW8/cj11W29dOmZbb109dm9pZCAwPT09dVtvXSYmdm9pZCAwIT09ZT9lW29dOnVbb107cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MiYmKGYuY2hpbGRyZW49YXJndW1lbnRzLmxlbmd0aD4zP24uY2FsbChhcmd1bWVudHMsMik6dCksbShsLnR5cGUsZixpfHxsLmtleSxyfHxsLnJlZixudWxsKX1mdW5jdGlvbiBKKG4sbCl7dmFyIHU9e19fYzpsPVwiX19jQ1wiK2grKyxfXzpuLENvbnN1bWVyOmZ1bmN0aW9uKG4sbCl7cmV0dXJuIG4uY2hpbGRyZW4obCl9LFByb3ZpZGVyOmZ1bmN0aW9uKG4pe3ZhciB1LHQ7cmV0dXJuIHRoaXMuZ2V0Q2hpbGRDb250ZXh0fHwodT1uZXcgU2V0LCh0PXt9KVtsXT10aGlzLHRoaXMuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHR9LHRoaXMuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt1PW51bGx9LHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKG4pe3RoaXMucHJvcHMudmFsdWUhPT1uLnZhbHVlJiZ1LmZvckVhY2goZnVuY3Rpb24obil7bi5fX2U9ITAsTShuKX0pfSx0aGlzLnN1Yj1mdW5jdGlvbihuKXt1LmFkZChuKTt2YXIgbD1uLmNvbXBvbmVudFdpbGxVbm1vdW50O24uY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt1JiZ1LmRlbGV0ZShuKSxsJiZsLmNhbGwobil9fSksbi5jaGlsZHJlbn19O3JldHVybiB1LlByb3ZpZGVyLl9fPXUuQ29uc3VtZXIuY29udGV4dFR5cGU9dX1uPXYuc2xpY2UsbD17X19lOmZ1bmN0aW9uKG4sbCx1LHQpe2Zvcih2YXIgaSxyLG87bD1sLl9fOylpZigoaT1sLl9fYykmJiFpLl9fKXRyeXtpZigocj1pLmNvbnN0cnVjdG9yKSYmbnVsbCE9ci5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3ImJihpLnNldFN0YXRlKHIuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKG4pKSxvPWkuX19kKSxudWxsIT1pLmNvbXBvbmVudERpZENhdGNoJiYoaS5jb21wb25lbnREaWRDYXRjaChuLHR8fHt9KSxvPWkuX19kKSxvKXJldHVybiBpLl9fRT1pfWNhdGNoKGwpe249bH10aHJvdyBufX0sdT0wLHQ9ZnVuY3Rpb24obil7cmV0dXJuIG51bGwhPW4mJm51bGw9PW4uY29uc3RydWN0b3J9LHgucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKG4sbCl7dmFyIHU7dT1udWxsIT10aGlzLl9fcyYmdGhpcy5fX3MhPT10aGlzLnN0YXRlP3RoaXMuX19zOnRoaXMuX19zPXcoe30sdGhpcy5zdGF0ZSksXCJmdW5jdGlvblwiPT10eXBlb2YgbiYmKG49bih3KHt9LHUpLHRoaXMucHJvcHMpKSxuJiZ3KHUsbiksbnVsbCE9biYmdGhpcy5fX3YmJihsJiZ0aGlzLl9zYi5wdXNoKGwpLE0odGhpcykpfSx4LnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihuKXt0aGlzLl9fdiYmKHRoaXMuX19lPSEwLG4mJnRoaXMuX19oLnB1c2gobiksTSh0aGlzKSl9LHgucHJvdG90eXBlLnJlbmRlcj1rLGk9W10sbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm9taXNlP1Byb21pc2UucHJvdG90eXBlLnRoZW4uYmluZChQcm9taXNlLnJlc29sdmUoKSk6c2V0VGltZW91dCxlPWZ1bmN0aW9uKG4sbCl7cmV0dXJuIG4uX192Ll9fYi1sLl9fdi5fX2J9LFAuX19yPTAsZj0vKFBvaW50ZXJDYXB0dXJlKSR8Q2FwdHVyZSQvaSxjPTAscz1PKCExKSxhPU8oITApLGg9MDtleHBvcnR7eCBhcyBDb21wb25lbnQsayBhcyBGcmFnbWVudCxHIGFzIGNsb25lRWxlbWVudCxKIGFzIGNyZWF0ZUNvbnRleHQsZyBhcyBjcmVhdGVFbGVtZW50LGIgYXMgY3JlYXRlUmVmLGcgYXMgaCxFIGFzIGh5ZHJhdGUsdCBhcyBpc1ZhbGlkRWxlbWVudCxsIGFzIG9wdGlvbnMsRCBhcyByZW5kZXIsSCBhcyB0b0NoaWxkQXJyYXl9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJlYWN0Lm1vZHVsZS5qcy5tYXBcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCB2YXIgRGVmYXVsdENvbnRleHQgPSB7XG4gIGNvbG9yOiB1bmRlZmluZWQsXG4gIHNpemU6IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lOiB1bmRlZmluZWQsXG4gIHN0eWxlOiB1bmRlZmluZWQsXG4gIGF0dHI6IHVuZGVmaW5lZFxufTtcbmV4cG9ydCB2YXIgSWNvbkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0ICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KERlZmF1bHRDb250ZXh0KTsiLCJ2YXIgX2V4Y2x1ZGVkID0gW1wiYXR0clwiLCBcInNpemVcIiwgXCJ0aXRsZVwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IHR5cGVvZiBpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSB0eXBlb2YgdCB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSB0eXBlb2YgaSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBJY29uQ29udGV4dCwgRGVmYXVsdENvbnRleHQgfSBmcm9tIFwiLi9pY29uQ29udGV4dC5tanNcIjtcbmZ1bmN0aW9uIFRyZWUyRWxlbWVudCh0cmVlKSB7XG4gIHJldHVybiB0cmVlICYmIHRyZWUubWFwKChub2RlLCBpKSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChub2RlLnRhZywgX29iamVjdFNwcmVhZCh7XG4gICAga2V5OiBpXG4gIH0sIG5vZGUuYXR0ciksIFRyZWUyRWxlbWVudChub2RlLmNoaWxkKSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIEdlbkljb24oZGF0YSkge1xuICByZXR1cm4gcHJvcHMgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkJhc2UsIF9leHRlbmRzKHtcbiAgICBhdHRyOiBfb2JqZWN0U3ByZWFkKHt9LCBkYXRhLmF0dHIpXG4gIH0sIHByb3BzKSwgVHJlZTJFbGVtZW50KGRhdGEuY2hpbGQpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBJY29uQmFzZShwcm9wcykge1xuICB2YXIgZWxlbSA9IGNvbmYgPT4ge1xuICAgIHZhciB7XG4gICAgICAgIGF0dHIsXG4gICAgICAgIHNpemUsXG4gICAgICAgIHRpdGxlXG4gICAgICB9ID0gcHJvcHMsXG4gICAgICBzdmdQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgICB2YXIgY29tcHV0ZWRTaXplID0gc2l6ZSB8fCBjb25mLnNpemUgfHwgXCIxZW1cIjtcbiAgICB2YXIgY2xhc3NOYW1lO1xuICAgIGlmIChjb25mLmNsYXNzTmFtZSkgY2xhc3NOYW1lID0gY29uZi5jbGFzc05hbWU7XG4gICAgaWYgKHByb3BzLmNsYXNzTmFtZSkgY2xhc3NOYW1lID0gKGNsYXNzTmFtZSA/IGNsYXNzTmFtZSArIFwiIFwiIDogXCJcIikgKyBwcm9wcy5jbGFzc05hbWU7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9leHRlbmRzKHtcbiAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgIGZpbGw6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICBzdHJva2VXaWR0aDogXCIwXCJcbiAgICB9LCBjb25mLmF0dHIsIGF0dHIsIHN2Z1Byb3BzLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgIHN0eWxlOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBjb2xvcjogcHJvcHMuY29sb3IgfHwgY29uZi5jb2xvclxuICAgICAgfSwgY29uZi5zdHlsZSksIHByb3BzLnN0eWxlKSxcbiAgICAgIGhlaWdodDogY29tcHV0ZWRTaXplLFxuICAgICAgd2lkdGg6IGNvbXB1dGVkU2l6ZSxcbiAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICB9KSwgdGl0bGUgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ0aXRsZVwiLCBudWxsLCB0aXRsZSksIHByb3BzLmNoaWxkcmVuKTtcbiAgfTtcbiAgcmV0dXJuIEljb25Db250ZXh0ICE9PSB1bmRlZmluZWQgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQ29udGV4dC5Db25zdW1lciwgbnVsbCwgY29uZiA9PiBlbGVtKGNvbmYpKSA6IGVsZW0oRGVmYXVsdENvbnRleHQpO1xufSIsIi8vIFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRFxuaW1wb3J0IHsgR2VuSWNvbiB9IGZyb20gJy4uL2xpYi9pbmRleC5tanMnO1xuZXhwb3J0IGZ1bmN0aW9uIEhpQWNhZGVtaWNDYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjM5NCAyLjA4YTEgMSAwIDAwLS43ODggMGwtNyAzYTEgMSAwIDAwMCAxLjg0TDUuMjUgOC4wNTFhLjk5OS45OTkgMCAwMS4zNTYtLjI1N2w0LTEuNzE0YTEgMSAwIDExLjc4OCAxLjgzOEw3LjY2NyA5LjA4OGwxLjk0LjgzMWExIDEgMCAwMC43ODcgMGw3LTNhMSAxIDAgMDAwLTEuODM4bC03LTN6TTMuMzEgOS4zOTdMNSAxMC4xMnY0LjEwMmE4Ljk2OSA4Ljk2OSAwIDAwLTEuMDUtLjE3NCAxIDEgMCAwMS0uODktLjg5IDExLjExNSAxMS4xMTUgMCAwMS4yNS0zLjc2MnpNOS4zIDE2LjU3M0E5LjAyNiA5LjAyNiAwIDAwNyAxNC45MzV2LTMuOTU3bDEuODE4Ljc4YTMgMyAwIDAwMi4zNjQgMGw1LjUwOC0yLjM2MWExMS4wMjYgMTEuMDI2IDAgMDEuMjUgMy43NjIgMSAxIDAgMDEtLjg5Ljg5IDguOTY4IDguOTY4IDAgMDAtNS4zNSAyLjUyNCAxIDEgMCAwMS0xLjQgMHpNNiAxOGExIDEgMCAwMDEtMXYtMi4wNjVhOC45MzUgOC45MzUgMCAwMC0yLS43MTJWMTdhMSAxIDAgMDAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFkanVzdG1lbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDRhMSAxIDAgMDAtMiAwdjcuMjY4YTIgMiAwIDAwMCAzLjQ2NFYxNmExIDEgMCAxMDIgMHYtMS4yNjhhMiAyIDAgMDAwLTMuNDY0VjR6TTExIDRhMSAxIDAgMTAtMiAwdjEuMjY4YTIgMiAwIDAwMCAzLjQ2NFYxNmExIDEgMCAxMDIgMFY4LjczMmEyIDIgMCAwMDAtMy40NjRWNHpNMTYgM2ExIDEgMCAwMTEgMXY3LjI2OGEyIDIgMCAwMTAgMy40NjRWMTZhMSAxIDAgMTEtMiAwdi0xLjI2OGEyIDIgMCAwMTAtMy40NjRWNGExIDEgMCAwMTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQW5ub3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEzVjVhMiAyIDAgMDAtMi0ySDRhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJoM2wzIDMgMy0zaDNhMiAyIDAgMDAyLTJ6TTUgN2ExIDEgMCAwMTEtMWg4YTEgMSAwIDExMCAySDZhMSAxIDAgMDEtMS0xem0xIDNhMSAxIDAgMTAwIDJoM2ExIDEgMCAxMDAtMkg2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAzYTIgMiAwIDEwMCA0aDEyYTIgMiAwIDEwMC00SDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDhoMTR2N2EyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWOHptNSAzYTEgMSAwIDAxMS0xaDJhMSAxIDAgMTEwIDJIOWExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd0NpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0xLTExYTEgMSAwIDEwLTIgMHYzLjU4Nkw3LjcwNyA5LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNCAwbDMtM2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMSAxMC41ODZWN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93Q2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bS43MDctMTAuMjkzYTEgMSAwIDAwLTEuNDE0LTEuNDE0bC0zIDNhMSAxIDAgMDAwIDEuNDE0bDMgM2ExIDEgMCAwMDEuNDE0LTEuNDE0TDkuNDE0IDExSDEzYTEgMSAwIDEwMC0ySDkuNDE0bDEuMjkzLTEuMjkzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTMuNzA3LTguNzA3bC0zLTNhMSAxIDAgMDAtMS40MTQgMS40MTRMMTAuNTg2IDlIN2ExIDEgMCAxMDAgMmgzLjU4NmwtMS4yOTMgMS4yOTNhMSAxIDAgMTAxLjQxNCAxLjQxNGwzLTNhMSAxIDAgMDAwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTMuNzA3LTguNzA3bC0zLTNhMSAxIDAgMDAtMS40MTQgMGwtMyAzYTEgMSAwIDAwMS40MTQgMS40MTRMOSA5LjQxNFYxM2ExIDEgMCAxMDIgMFY5LjQxNGwxLjI5MyAxLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTYuNzA3IDEwLjI5M2ExIDEgMCAwMTAgMS40MTRsLTYgNmExIDEgMCAwMS0xLjQxNCAwbC02LTZhMSAxIDAgMTExLjQxNC0xLjQxNEw5IDE0LjU4NlYzYTEgMSAwIDAxMiAwdjExLjU4Nmw0LjI5My00LjI5M2ExIDEgMCAwMTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk05LjcwNyAxNi43MDdhMSAxIDAgMDEtMS40MTQgMGwtNi02YTEgMSAwIDAxMC0xLjQxNGw2LTZhMSAxIDAgMDExLjQxNCAxLjQxNEw1LjQxNCA5SDE3YTEgMSAwIDExMCAySDUuNDE0bDQuMjkzIDQuMjkzYTEgMSAwIDAxMCAxLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93TmFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE0LjcwNyAxMi4yOTNhMSAxIDAgMDEwIDEuNDE0bC00IDRhMSAxIDAgMDEtMS40MTQgMGwtNC00YTEgMSAwIDExMS40MTQtMS40MTRMOSAxNC41ODZWM2ExIDEgMCAwMTIgMHYxMS41ODZsMi4yOTMtMi4yOTNhMSAxIDAgMDExLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dOYXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy43MDcgMTQuNzA3YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTAtMS40MTRsNC00YTEgMSAwIDAxMS40MTQgMS40MTRMNS40MTQgOUgxN2ExIDEgMCAxMTAgMkg1LjQxNGwyLjI5MyAyLjI5M2ExIDEgMCAwMTAgMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd05hcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIuMjkzIDUuMjkzYTEgMSAwIDAxMS40MTQgMGw0IDRhMSAxIDAgMDEwIDEuNDE0bC00IDRhMSAxIDAgMDEtMS40MTQtMS40MTRMMTQuNTg2IDExSDNhMSAxIDAgMTEwLTJoMTEuNTg2bC0yLjI5My0yLjI5M2ExIDEgMCAwMTAtMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd05hcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNS4yOTMgNy43MDdhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDBsNCA0YTEgMSAwIDAxLTEuNDE0IDEuNDE0TDExIDUuNDE0VjE3YTEgMSAwIDExLTIgMFY1LjQxNEw2LjcwNyA3LjcwN2ExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjI5MyAzLjI5M2ExIDEgMCAwMTEuNDE0IDBsNiA2YTEgMSAwIDAxMCAxLjQxNGwtNiA2YTEgMSAwIDAxLTEuNDE0LTEuNDE0TDE0LjU4NiAxMUgzYTEgMSAwIDExMC0yaDExLjU4NmwtNC4yOTMtNC4yOTNhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dTbURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNC43MDcgMTAuMjkzYTEgMSAwIDAxMCAxLjQxNGwtNCA0YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAxMTEuNDE0LTEuNDE0TDkgMTIuNTg2VjVhMSAxIDAgMDEyIDB2Ny41ODZsMi4yOTMtMi4yOTNhMSAxIDAgMDExLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dTbUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk05LjcwNyAxNC43MDdhMSAxIDAgMDEtMS40MTQgMGwtNC00YTEgMSAwIDAxMC0xLjQxNGw0LTRhMSAxIDAgMDExLjQxNCAxLjQxNEw3LjQxNCA5SDE1YTEgMSAwIDExMCAySDcuNDE0bDIuMjkzIDIuMjkzYTEgMSAwIDAxMCAxLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93U21SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjI5MyA1LjI5M2ExIDEgMCAwMTEuNDE0IDBsNCA0YTEgMSAwIDAxMCAxLjQxNGwtNCA0YTEgMSAwIDAxLTEuNDE0LTEuNDE0TDEyLjU4NiAxMUg1YTEgMSAwIDExMC0yaDcuNTg2bC0yLjI5My0yLjI5M2ExIDEgMCAwMTAtMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd1NtVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjI5MyA5LjcwN2ExIDEgMCAwMTAtMS40MTRsNC00YTEgMSAwIDAxMS40MTQgMGw0IDRhMSAxIDAgMDEtMS40MTQgMS40MTRMMTEgNy40MTRWMTVhMSAxIDAgMTEtMiAwVjcuNDE0TDYuNzA3IDkuNzA3YTEgMSAwIDAxLTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMy4yOTMgOS43MDdhMSAxIDAgMDEwLTEuNDE0bDYtNmExIDEgMCAwMTEuNDE0IDBsNiA2YTEgMSAwIDAxLTEuNDE0IDEuNDE0TDExIDUuNDE0VjE3YTEgMSAwIDExLTIgMFY1LjQxNEw0LjcwNyA5LjcwN2ExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dzRXhwYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA0YTEgMSAwIDAxMS0xaDRhMSAxIDAgMDEwIDJINi40MTRsMi4yOTMgMi4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRMNSA2LjQxNFY4YTEgMSAwIDAxLTIgMFY0em05IDFhMSAxIDAgMTEwLTJoNGExIDEgMCAwMTEgMXY0YTEgMSAwIDExLTIgMFY2LjQxNGwtMi4yOTMgMi4yOTNhMSAxIDAgMTEtMS40MTQtMS40MTRMMTMuNTg2IDVIMTJ6bS05IDdhMSAxIDAgMTEyIDB2MS41ODZsMi4yOTMtMi4yOTNhMSAxIDAgMDExLjQxNCAxLjQxNEw2LjQxNCAxNUg4YTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xdi00em0xMy0xYTEgMSAwIDAxMSAxdjRhMSAxIDAgMDEtMSAxaC00YTEgMSAwIDExMC0yaDEuNTg2bC0yLjI5My0yLjI5M2ExIDEgMCAwMTEuNDE0LTEuNDE0TDE1IDEzLjU4NlYxMmExIDEgMCAwMTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUF0U3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQuMjQzIDUuNzU3YTYgNiAwIDEwLS45ODYgOS4yODQgMSAxIDAgMTExLjA4NyAxLjY3OEE4IDggMCAxMTE4IDEwYTMgMyAwIDAxLTQuOCAyLjQwMUE0IDQgMCAxMTE0IDEwYTEgMSAwIDEwMiAwYzAtMS41MzctLjU4Ni0zLjA3LTEuNzU3LTQuMjQzek0xMiAxMGEyIDIgMCAxMC00IDAgMiAyIDAgMDA0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCYWNrc3BhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02LjcwNyA0Ljg3OUEzIDMgMCAwMTguODI4IDRIMTVhMyAzIDAgMDEzIDN2NmEzIDMgMCAwMS0zIDNIOC44MjhhMyAzIDAgMDEtMi4xMi0uODc5bC00LjQxNS00LjQxNGExIDEgMCAwMTAtMS40MTRsNC40MTQtNC40MTR6bTQgMi40MTRhMSAxIDAgMDAtMS40MTQgMS40MTRMMTAuNTg2IDEwbC0xLjI5MyAxLjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDEyIDExLjQxNGwxLjI5MyAxLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0TDEzLjQxNCAxMGwxLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMiA4LjU4NmwtMS4yOTMtMS4yOTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCYWRnZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi4yNjcgMy40NTVhMy4wNjYgMy4wNjYgMCAwMDEuNzQ1LS43MjMgMy4wNjYgMy4wNjYgMCAwMTMuOTc2IDAgMy4wNjYgMy4wNjYgMCAwMDEuNzQ1LjcyMyAzLjA2NiAzLjA2NiAwIDAxMi44MTIgMi44MTJjLjA1MS42NDMuMzA0IDEuMjU0LjcyMyAxLjc0NWEzLjA2NiAzLjA2NiAwIDAxMCAzLjk3NiAzLjA2NiAzLjA2NiAwIDAwLS43MjMgMS43NDUgMy4wNjYgMy4wNjYgMCAwMS0yLjgxMiAyLjgxMiAzLjA2NiAzLjA2NiAwIDAwLTEuNzQ1LjcyMyAzLjA2NiAzLjA2NiAwIDAxLTMuOTc2IDAgMy4wNjYgMy4wNjYgMCAwMC0xLjc0NS0uNzIzIDMuMDY2IDMuMDY2IDAgMDEtMi44MTItMi44MTIgMy4wNjYgMy4wNjYgMCAwMC0uNzIzLTEuNzQ1IDMuMDY2IDMuMDY2IDAgMDEwLTMuOTc2IDMuMDY2IDMuMDY2IDAgMDAuNzIzLTEuNzQ1IDMuMDY2IDMuMDY2IDAgMDEyLjgxMi0yLjgxMnptNy40NCA1LjI1MmExIDEgMCAwMC0xLjQxNC0xLjQxNEw5IDEwLjU4NiA3LjcwNyA5LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwyIDJhMSAxIDAgMDAxLjQxNCAwbDQtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEzLjQ3NyAxNC44OUE2IDYgMCAwMTUuMTEgNi41MjRsOC4zNjcgOC4zNjh6bTEuNDE0LTEuNDE0TDYuNTI0IDUuMTFhNiA2IDAgMDE4LjM2NyA4LjM2N3pNMTggMTBhOCA4IDAgMTEtMTYgMCA4IDggMCAwMTE2IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCZWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03IDJhMSAxIDAgMDAtLjcwNyAxLjcwN0w3IDQuNDE0djMuNzU4YTEgMSAwIDAxLS4yOTMuNzA3bC00IDRDLjgxNyAxNC43NjkgMi4xNTYgMTggNC44MjggMThoMTAuMzQzYzIuNjczIDAgNC4wMTItMy4yMzEgMi4xMjItNS4xMjFsLTQtNEExIDEgMCAwMTEzIDguMTcyVjQuNDE0bC43MDctLjcwN0ExIDEgMCAwMDEzIDJIN3ptMiA2LjE3MlY0aDJ2NC4xNzJhMyAzIDAgMDAuODc5IDIuMTJsMS4wMjcgMS4wMjhhNCA0IDAgMDAtMi4xNzEuMTAybC0uNDcuMTU2YTQgNCAwIDAxLTIuNTMgMGwtLjU2My0uMTg3YTEuOTkzIDEuOTkzIDAgMDAtLjExNC0uMDM1bDEuMDYzLTEuMDYzQTMgMyAwIDAwOSA4LjE3MnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDJhNiA2IDAgMDAtNiA2djMuNTg2bC0uNzA3LjcwN0ExIDEgMCAwMDQgMTRoMTJhMSAxIDAgMDAuNzA3LTEuNzA3TDE2IDExLjU4NlY4YTYgNiAwIDAwLTYtNnpNMTAgMThhMyAzIDAgMDEtMy0zaDZhMyAzIDAgMDEtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCb29rT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0LjgwNEE3Ljk2OCA3Ljk2OCAwIDAwNS41IDRjLTEuMjU1IDAtMi40NDMuMjktMy41LjgwNHYxMEE3Ljk2OSA3Ljk2OSAwIDAxNS41IDE0YzEuNjY5IDAgMy4yMTguNTEgNC41IDEuMzg1QTcuOTYyIDcuOTYyIDAgMDExNC41IDE0YzEuMjU1IDAgMi40NDMuMjkgMy41LjgwNHYtMTBBNy45NjggNy45NjggMCAwMDE0LjUgNGMtMS4yNTUgMC0yLjQ0My4yOS0zLjUuODA0VjEyYTEgMSAwIDExLTIgMFY0LjgwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQm9va21hcmtBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDVhMiAyIDAgMDEyLTJoMTBhMiAyIDAgMDEyIDJ2MTBhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjV6bTExIDFINnY4bDQtMiA0IDJWNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDRhMiAyIDAgMDEyLTJoNmEyIDIgMCAwMTIgMnYxNGwtNS0yLjVMNSAxOFY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCcmllZmNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDZWNWEzIDMgMCAwMTMtM2gyYTMgMyAwIDAxMyAzdjFoMmEyIDIgMCAwMTIgMnYzLjU3QTIyLjk1MiAyMi45NTIgMCAwMTEwIDEzYTIyLjk1IDIyLjk1IDAgMDEtOC0xLjQzVjhhMiAyIDAgMDEyLTJoMnptMi0xYTEgMSAwIDAxMS0xaDJhMSAxIDAgMDExIDF2MUg4VjV6bTEgNWExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIMTBhMSAxIDAgMDEtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMy42OTJWMTZhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJ2LTIuMzA4QTI0Ljk3NCAyNC45NzQgMCAwMTEwIDE1Yy0yLjc5NiAwLTUuNDg3LS40Ni04LTEuMzA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAzYTEgMSAwIDAxMS0xaC4wMWExIDEgMCAwMTAgMkg3YTEgMSAwIDAxLTEtMXptMiAzYTEgMSAwIDAwLTIgMHYxYTIgMiAwIDAwLTIgMnYxYTIgMiAwIDAwLTIgMnYuNjgzYTMuNyAzLjcgMCAwMTEuMDU1LjQ4NSAxLjcwNCAxLjcwNCAwIDAwMS44OSAwIDMuNzA0IDMuNzA0IDAgMDE0LjExIDAgMS43MDQgMS43MDQgMCAwMDEuODkgMCAzLjcwNCAzLjcwNCAwIDAxNC4xMSAwIDEuNzA0IDEuNzA0IDAgMDAxLjg5IDBBMy43IDMuNyAwIDAxMTggMTIuNjgzVjEyYTIgMiAwIDAwLTItMlY5YTIgMiAwIDAwLTItMlY2YTEgMSAwIDEwLTIgMHYxaC0xVjZhMSAxIDAgMTAtMiAwdjFIOFY2em0xMCA4Ljg2OGEzLjcwNCAzLjcwNCAwIDAxLTQuMDU1LS4wMzYgMS43MDQgMS43MDQgMCAwMC0xLjg5IDAgMy43MDQgMy43MDQgMCAwMS00LjExIDAgMS43MDQgMS43MDQgMCAwMC0xLjg5IDBBMy43MDQgMy43MDQgMCAwMTIgMTQuODY4VjE3YTEgMSAwIDAwMSAxaDE0YTEgMSAwIDAwMS0xdi0yLjEzMnpNOSAzYTEgMSAwIDAxMS0xaC4wMWExIDEgMCAxMTAgMkgxMGExIDEgMCAwMS0xLTF6bTMgMGExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIMTNhMSAxIDAgMDEtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2FsY3VsYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY0YTIgMiAwIDAwLTItMkg2em0xIDJhMSAxIDAgMDAwIDJoNmExIDEgMCAxMDAtMkg3em02IDdhMSAxIDAgMDExIDF2M2ExIDEgMCAxMS0yIDB2LTNhMSAxIDAgMDExLTF6bS0zIDNhMSAxIDAgMTAwIDJoLjAxYTEgMSAwIDEwMC0ySDEwem0tNCAxYTEgMSAwIDAxMS0xaC4wMWExIDEgMCAxMTAgMkg3YTEgMSAwIDAxLTEtMXptMS00YTEgMSAwIDEwMCAyaC4wMWExIDEgMCAxMDAtMkg3em0yIDFhMSAxIDAgMDExLTFoLjAxYTEgMSAwIDExMCAySDEwYTEgMSAwIDAxLTEtMXptNC00YTEgMSAwIDEwMCAyaC4wMWExIDEgMCAxMDAtMkgxM3pNOSA5YTEgMSAwIDAxMS0xaC4wMWExIDEgMCAxMTAgMkgxMGExIDEgMCAwMS0xLTF6TTcgOGExIDEgMCAwMDAgMmguMDFhMSAxIDAgMDAwLTJIN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAyYTEgMSAwIDAwLTEgMXYxSDRhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0yaC0xVjNhMSAxIDAgMTAtMiAwdjFIN1YzYTEgMSAwIDAwLTEtMXptMCA1YTEgMSAwIDAwMCAyaDhhMSAxIDAgMTAwLTJINnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNWEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMmgxMmEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMS41ODZhMSAxIDAgMDEtLjcwNy0uMjkzbC0xLjEyMS0xLjEyMUEyIDIgMCAwMDExLjE3MiAzSDguODI4YTIgMiAwIDAwLTEuNDE0LjU4Nkw2LjI5MyA0LjcwN0ExIDEgMCAwMTUuNTg2IDVINHptNiA5YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMC0yIDJ2NGEyIDIgMCAwMDIgMlY2aDEwYTIgMiAwIDAwLTItMkg0em0yIDZhMiAyIDAgMDEyLTJoOGEyIDIgMCAwMTIgMnY0YTIgMiAwIDAxLTIgMkg4YTIgMiAwIDAxLTItMnYtNHptNiA0YTIgMiAwIDEwMC00IDIgMiAwIDAwMCA0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTFhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXY1YTEgMSAwIDAxLTEgMUgzYTEgMSAwIDAxLTEtMXYtNXpNOCA3YTEgMSAwIDAxMS0xaDJhMSAxIDAgMDExIDF2OWExIDEgMCAwMS0xIDFIOWExIDEgMCAwMS0xLTFWN3pNMTQgNGExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjEyYTEgMSAwIDAxLTEgMWgtMmExIDEgMCAwMS0xLTFWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hhcnRQaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTBhOCA4IDAgMDE4LTh2OGg4YTggOCAwIDExLTE2IDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIuMjUyQTguMDE0IDguMDE0IDAgMDExNy43NDggOEgxMlYyLjI1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hhcnRTcXVhcmVCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDNhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDV6bTkgNGExIDEgMCAxMC0yIDB2NmExIDEgMCAxMDIgMFY3em0tMyAyYTEgMSAwIDEwLTIgMHY0YTEgMSAwIDEwMiAwVjl6bS0zIDNhMSAxIDAgMTAtMiAwdjFhMSAxIDAgMTAyIDB2LTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGF0QWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA1YTIgMiAwIDAxMi0yaDdhMiAyIDAgMDEyIDJ2NGEyIDIgMCAwMS0yIDJIOWwtMyAzdi0zSDRhMiAyIDAgMDEtMi0yVjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDd2MmE0IDQgMCAwMS00IDRIOS44MjhsLTEuNzY2IDEuNzY3Yy4yOC4xNDkuNTk5LjIzMy45MzguMjMzaDJsMyAzdi0zaDJhMiAyIDAgMDAyLTJWOWEyIDIgMCAwMC0yLTJoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoYXRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xOCA1djhhMiAyIDAgMDEtMiAyaC01bC01IDR2LTRINGEyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMmgxMmEyIDIgMCAwMTIgMnpNNyA4SDV2MmgyVjh6bTIgMGgydjJIOVY4em02IDBoLTJ2MmgyVjh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggMTBjMCAzLjg2Ni0zLjU4MiA3LTggN2E4Ljg0MSA4Ljg0MSAwIDAxLTQuMDgzLS45OEwyIDE3bDEuMzM4LTMuMTIzQzIuNDkzIDEyLjc2NyAyIDExLjQzNCAyIDEwYzAtMy44NjYgMy41ODItNyA4LTdzOCAzLjEzNCA4IDd6TTcgOUg1djJoMlY5em04IDBoLTJ2MmgyVjl6TTkgOWgydjJIOVY5elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hlY2tDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjcwNy05LjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNEw5IDEwLjU4NiA3LjcwNyA5LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwyIDJhMSAxIDAgMDAxLjQxNCAwbDQtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTYuNzA3IDUuMjkzYTEgMSAwIDAxMCAxLjQxNGwtOCA4YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTEuNDE0LTEuNDE0TDggMTIuNTg2bDcuMjkzLTcuMjkzYTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoZXZyb25Eb3VibGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTUuNzA3IDQuMjkzYTEgMSAwIDAxMCAxLjQxNGwtNSA1YTEgMSAwIDAxLTEuNDE0IDBsLTUtNWExIDEgMCAwMTEuNDE0LTEuNDE0TDEwIDguNTg2bDQuMjkzLTQuMjkzYTEgMSAwIDAxMS40MTQgMHptMCA2YTEgMSAwIDAxMCAxLjQxNGwtNSA1YTEgMSAwIDAxLTEuNDE0IDBsLTUtNWExIDEgMCAxMTEuNDE0LTEuNDE0TDEwIDE0LjU4Nmw0LjI5My00LjI5M2ExIDEgMCAwMTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uRG91YmxlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE1LjcwNyAxNS43MDdhMSAxIDAgMDEtMS40MTQgMGwtNS01YTEgMSAwIDAxMC0xLjQxNGw1LTVhMSAxIDAgMTExLjQxNCAxLjQxNEwxMS40MTQgMTBsNC4yOTMgNC4yOTNhMSAxIDAgMDEwIDEuNDE0em0tNiAwYTEgMSAwIDAxLTEuNDE0IDBsLTUtNWExIDEgMCAwMTAtMS40MTRsNS01YTEgMSAwIDAxMS40MTQgMS40MTRMNS40MTQgMTBsNC4yOTMgNC4yOTNhMSAxIDAgMDEwIDEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvbkRvdWJsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAuMjkzIDE1LjcwN2ExIDEgMCAwMTAtMS40MTRMMTQuNTg2IDEwbC00LjI5My00LjI5M2ExIDEgMCAxMTEuNDE0LTEuNDE0bDUgNWExIDEgMCAwMTAgMS40MTRsLTUgNWExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQuMjkzIDE1LjcwN2ExIDEgMCAwMTAtMS40MTRMOC41ODYgMTAgNC4yOTMgNS43MDdhMSAxIDAgMDExLjQxNC0xLjQxNGw1IDVhMSAxIDAgMDEwIDEuNDE0bC01IDVhMSAxIDAgMDEtMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoZXZyb25Eb3VibGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQuMjkzIDE1LjcwN2ExIDEgMCAwMTAtMS40MTRsNS01YTEgMSAwIDAxMS40MTQgMGw1IDVhMSAxIDAgMDEtMS40MTQgMS40MTRMMTAgMTEuNDE0bC00LjI5MyA0LjI5M2ExIDEgMCAwMS0xLjQxNCAwem0wLTZhMSAxIDAgMDEwLTEuNDE0bDUtNWExIDEgMCAwMTEuNDE0IDBsNSA1YTEgMSAwIDAxLTEuNDE0IDEuNDE0TDEwIDUuNDE0IDUuNzA3IDkuNzA3YTEgMSAwIDAxLTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuMjkzIDcuMjkzYTEgMSAwIDAxMS40MTQgMEwxMCAxMC41ODZsMy4yOTMtMy4yOTNhMSAxIDAgMTExLjQxNCAxLjQxNGwtNCA0YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTAtMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyLjcwNyA1LjI5M2ExIDEgMCAwMTAgMS40MTRMOS40MTQgMTBsMy4yOTMgMy4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRsLTQtNGExIDEgMCAwMTAtMS40MTRsNC00YTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoZXZyb25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcuMjkzIDE0LjcwN2ExIDEgMCAwMTAtMS40MTRMMTAuNTg2IDEwIDcuMjkzIDYuNzA3YTEgMSAwIDAxMS40MTQtMS40MTRsNCA0YTEgMSAwIDAxMCAxLjQxNGwtNCA0YTEgMSAwIDAxLTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNC43MDcgMTIuNzA3YTEgMSAwIDAxLTEuNDE0IDBMMTAgOS40MTRsLTMuMjkzIDMuMjkzYTEgMSAwIDAxLTEuNDE0LTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDBsNCA0YTEgMSAwIDAxMCAxLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdIN3Y2aDZWN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcgMmExIDEgMCAwMTIgMHYxaDJWMmExIDEgMCAxMTIgMHYxaDJhMiAyIDAgMDEyIDJ2MmgxYTEgMSAwIDExMCAyaC0xdjJoMWExIDEgMCAxMTAgMmgtMXYyYTIgMiAwIDAxLTIgMmgtMnYxYTEgMSAwIDExLTIgMHYtMUg5djFhMSAxIDAgMTEtMiAwdi0xSDVhMiAyIDAgMDEtMi0ydi0ySDJhMSAxIDAgMTEwLTJoMVY5SDJhMSAxIDAgMDEwLTJoMVY1YTIgMiAwIDAxMi0yaDJWMnpNNSA1aDEwdjEwSDVWNXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsaXBib2FyZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDJhMSAxIDAgMDAwIDJoMmExIDEgMCAxMDAtMkg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCA1YTIgMiAwIDAxMi0yIDMgMyAwIDAwMyAzaDJhMyAzIDAgMDAzLTMgMiAyIDAgMDEyIDJ2MTFhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjV6bTkuNzA3IDUuNzA3YTEgMSAwIDAwLTEuNDE0LTEuNDE0TDkgMTIuNTg2bC0xLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwyIDJhMSAxIDAgMDAxLjQxNCAwbDQtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsaXBib2FyZENvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMmExIDEgMCAwMDAgMmgyYTEgMSAwIDEwMC0ySDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNWEyIDIgMCAwMTItMiAzIDMgMCAwMDMgM2gyYTMgMyAwIDAwMy0zIDIgMiAwIDAxMiAydjZoLTQuNTg2bDEuMjkzLTEuMjkzYTEgMSAwIDAwLTEuNDE0LTEuNDE0bC0zIDNhMSAxIDAgMDAwIDEuNDE0bDMgM2ExIDEgMCAwMDEuNDE0LTEuNDE0TDEwLjQxNCAxM0gxNXYzYTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMlY1ek0xNSAxMWgyYTEgMSAwIDExMCAyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDbGlwYm9hcmRMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDJhMSAxIDAgMDAwIDJoMmExIDEgMCAxMDAtMkg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCA1YTIgMiAwIDAxMi0yIDMgMyAwIDAwMyAzaDJhMyAzIDAgMDAzLTMgMiAyIDAgMDEyIDJ2MTFhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjV6bTMgNGExIDEgMCAwMDAgMmguMDFhMSAxIDAgMTAwLTJIN3ptMyAwYTEgMSAwIDAwMCAyaDNhMSAxIDAgMTAwLTJoLTN6bS0zIDRhMSAxIDAgMTAwIDJoLjAxYTEgMSAwIDEwMC0ySDd6bTMgMGExIDEgMCAxMDAgMmgzYTEgMSAwIDEwMC0yaC0zelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2xpcGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDNhMSAxIDAgMDExLTFoMmExIDEgMCAxMTAgMkg5YTEgMSAwIDAxLTEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzYTIgMiAwIDAwLTIgMnYxMWEyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0yIDMgMyAwIDAxLTMgM0g5YTMgMyAwIDAxLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0xLTEyYTEgMSAwIDEwLTIgMHY0YTEgMSAwIDAwLjI5My43MDdsMi44MjggMi44MjlhMSAxIDAgMTAxLjQxNS0xLjQxNUwxMSA5LjU4NlY2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2xvdWREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgOS41QTMuNSAzLjUgMCAwMDUuNSAxM0g5djIuNTg2bC0xLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNCAwbDMtM2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMSAxNS41ODZWMTNoMi41YTQuNSA0LjUgMCAxMC0uNjE2LTguOTU4IDQuMDAyIDQuMDAyIDAgMTAtNy43NTMgMS45NzdBMy41IDMuNSAwIDAwMiA5LjV6bTkgMy41SDlWOGExIDEgMCAwMTIgMHY1elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2xvdWRVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSAxM2EzLjUgMy41IDAgMDEtLjM2OS02Ljk4IDQgNCAwIDExNy43NTMtMS45NzdBNC41IDQuNSAwIDExMTMuNSAxM0gxMVY5LjQxM2wxLjI5MyAxLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0bC0zLTNhMSAxIDAgMDAtMS40MTQgMGwtMyAzYTEgMSAwIDAwMS40MTQgMS40MTRMOSA5LjQxNFYxM0g1LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTNoMnY1YTEgMSAwIDExLTIgMHYtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSAxNmEzLjUgMy41IDAgMDEtLjM2OS02Ljk4IDQgNCAwIDExNy43NTMtMS45NzdBNC41IDQuNSAwIDExMTMuNSAxNmgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyLjMxNiAzLjA1MWExIDEgMCAwMS42MzMgMS4yNjVsLTQgMTJhMSAxIDAgMTEtMS44OTgtLjYzMmw0LTEyYTEgMSAwIDAxMS4yNjUtLjYzM3pNNS43MDcgNi4yOTNhMSAxIDAgMDEwIDEuNDE0TDMuNDE0IDEwbDIuMjkzIDIuMjkzYTEgMSAwIDExLTEuNDE0IDEuNDE0bC0zLTNhMSAxIDAgMDEwLTEuNDE0bDMtM2ExIDEgMCAwMTEuNDE0IDB6bTguNTg2IDBhMSAxIDAgMDExLjQxNCAwbDMgM2ExIDEgMCAwMTAgMS40MTRsLTMgM2ExIDEgMCAxMS0xLjQxNC0xLjQxNEwxNi41ODYgMTBsLTIuMjkzLTIuMjkzYTEgMSAwIDAxMC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTExLjQ5IDMuMTdjLS4zOC0xLjU2LTIuNi0xLjU2LTIuOTggMGExLjUzMiAxLjUzMiAwIDAxLTIuMjg2Ljk0OGMtMS4zNzItLjgzNi0yLjk0Mi43MzQtMi4xMDYgMi4xMDYuNTQuODg2LjA2MSAyLjA0Mi0uOTQ3IDIuMjg3LTEuNTYxLjM3OS0xLjU2MSAyLjYgMCAyLjk3OGExLjUzMiAxLjUzMiAwIDAxLjk0NyAyLjI4N2MtLjgzNiAxLjM3Mi43MzQgMi45NDIgMi4xMDYgMi4xMDZhMS41MzIgMS41MzIgMCAwMTIuMjg3Ljk0N2MuMzc5IDEuNTYxIDIuNiAxLjU2MSAyLjk3OCAwYTEuNTMzIDEuNTMzIDAgMDEyLjI4Ny0uOTQ3YzEuMzcyLjgzNiAyLjk0Mi0uNzM0IDIuMTA2LTIuMTA2YTEuNTMzIDEuNTMzIDAgMDEuOTQ3LTIuMjg3YzEuNTYxLS4zNzkgMS41NjEtMi42IDAtMi45NzhhMS41MzIgMS41MzIgMCAwMS0uOTQ3LTIuMjg3Yy44MzYtMS4zNzItLjczNC0yLjk0Mi0yLjEwNi0yLjEwNmExLjUzMiAxLjUzMiAwIDAxLTIuMjg3LS45NDd6TTEwIDEzYTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ29sbGVjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAzYTEgMSAwIDAwMCAyaDZhMSAxIDAgMTAwLTJIN3pNNCA3YTEgMSAwIDAxMS0xaDEwYTEgMSAwIDExMCAySDVhMSAxIDAgMDEtMS0xek0yIDExYTIgMiAwIDAxMi0yaDEyYTIgMiAwIDAxMiAydjRhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0ydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDb2xvclN3YXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgMmEyIDIgMCAwMC0yIDJ2MTFhMyAzIDAgMTA2IDBWNGEyIDIgMCAwMC0yLTJINHptMSAxNGExIDEgMCAxMDAtMiAxIDEgMCAwMDAgMnptNS0xLjc1N2w0LjktNC45YTIgMiAwIDAwMC0yLjgyOEwxMy40ODUgNS4xYTIgMiAwIDAwLTIuODI4IDBMMTAgNS43NTd2OC40ODZ6TTE2IDE4SDkuMDcxbDYtNkgxNmEyIDIgMCAwMTIgMnYyYTIgMiAwIDAxLTIgMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGEyIDIgMCAwMC0yIDJ2MWgxNlY2YTIgMiAwIDAwLTItMkg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggOUgydjVhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWOXpNNCAxM2ExIDEgMCAwMTEtMWgxYTEgMSAwIDExMCAySDVhMSAxIDAgMDEtMS0xem01LTFhMSAxIDAgMTAwIDJoMWExIDEgMCAxMDAtMkg5elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ3ViZVRyYW5zcGFyZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS41MDQgMS4xMzJhMSAxIDAgMDEuOTkyIDBsMS43NSAxYTEgMSAwIDExLS45OTIgMS43MzZMMTAgMy4xNTJsLTEuMjU0LjcxNmExIDEgMCAxMS0uOTkyLTEuNzM2bDEuNzUtMXpNNS42MTggNC41MDRhMSAxIDAgMDEtLjM3MiAxLjM2NEw1LjAxNiA2bC4yMy4xMzJhMSAxIDAgMTEtLjk5MiAxLjczNkw0IDcuNzIzVjhhMSAxIDAgMDEtMiAwVjZhLjk5Ni45OTYgMCAwMS41Mi0uODc4bDEuNzM0LS45OWExIDEgMCAwMTEuMzY0LjM3MnptOC43NjQgMGExIDEgMCAwMTEuMzY0LS4zNzJsMS43MzMuOTlBMS4wMDIgMS4wMDIgMCAwMTE4IDZ2MmExIDEgMCAxMS0yIDB2LS4yNzdsLS4yNTQuMTQ1YTEgMSAwIDExLS45OTItMS43MzZsLjIzLS4xMzItLjIzLS4xMzJhMSAxIDAgMDEtLjM3Mi0xLjM2NHptLTcgNGExIDEgMCAwMTEuMzY0LS4zNzJMMTAgOC44NDhsMS4yNTQtLjcxNmExIDEgMCAxMS45OTIgMS43MzZMMTEgMTAuNThWMTJhMSAxIDAgMTEtMiAwdi0xLjQybC0xLjI0Ni0uNzEyYTEgMSAwIDAxLS4zNzItMS4zNjR6TTMgMTFhMSAxIDAgMDExIDF2MS40MmwxLjI0Ni43MTJhMSAxIDAgMTEtLjk5MiAxLjczNmwtMS43NS0xQTEgMSAwIDAxMiAxNHYtMmExIDEgMCAwMTEtMXptMTQgMGExIDEgMCAwMTEgMXYyYTEgMSAwIDAxLS41MDQuODY4bC0xLjc1IDFhMSAxIDAgMTEtLjk5Mi0xLjczNkwxNiAxMy40MlYxMmExIDEgMCAwMTEtMXptLTkuNjE4IDUuNTA0YTEgMSAwIDAxMS4zNjQtLjM3MmwuMjU0LjE0NVYxNmExIDEgMCAxMTIgMHYuMjc3bC4yNTQtLjE0NWExIDEgMCAxMS45OTIgMS43MzZsLTEuNzM1Ljk5MmEuOTk1Ljk5NSAwIDAxLTEuMDIyIDBsLTEuNzM1LS45OTJhMSAxIDAgMDEtLjM3Mi0xLjM2NHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUN1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3YTEgMSAwIDAwMS40NDcuODk0bDQtMkExIDEgMCAwMDE3IDE1VjkuMjM2YTEgMSAwIDAwLTEuNDQ3LS44OTRsLTQgMmExIDEgMCAwMC0uNTUzLjg5NFYxN3pNMTUuMjExIDYuMjc2YTEgMSAwIDAwMC0xLjc4OGwtNC43NjQtMi4zODJhMSAxIDAgMDAtLjg5NCAwTDQuNzg5IDQuNDg4YTEgMSAwIDAwMCAxLjc4OGw0Ljc2NCAyLjM4MmExIDEgMCAwMC44OTQgMGw0Ljc2NC0yLjM4MnpNNC40NDcgOC4zNDJBMSAxIDAgMDAzIDkuMjM2VjE1YTEgMSAwIDAwLjU1My44OTRsNCAyQTEgMSAwIDAwOSAxN3YtNS43NjRhMSAxIDAgMDAtLjU1My0uODk0bC00LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUN1cnJlbmN5QmFuZ2xhZGVzaGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03IDRhMSAxIDAgMDAwIDIgMSAxIDAgMDExIDF2MUg3YTEgMSAwIDAwMCAyaDF2M2EzIDMgMCAxMDYgMHYtMWExIDEgMCAxMC0yIDB2MWExIDEgMCAxMS0yIDB2LTNoM2ExIDEgMCAxMDAtMmgtM1Y3YTMgMyAwIDAwLTMtM3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUN1cnJlbmN5RG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjQzMyA3LjQxOGMuMTU1LS4xMDMuMzQ2LS4xOTYuNTY3LS4yNjd2MS42OThhMi4zMDUgMi4zMDUgMCAwMS0uNTY3LS4yNjdDOC4wNyA4LjM0IDggOC4xMTQgOCA4YzAtLjExNC4wNy0uMzQuNDMzLS41ODJ6TTExIDEyLjg0OXYtMS42OThjLjIyLjA3MS40MTIuMTY0LjU2Ny4yNjcuMzY0LjI0My40MzMuNDY4LjQzMy41ODIgMCAuMTE0LS4wNy4zNC0uNDMzLjU4MmEyLjMwNSAyLjMwNSAwIDAxLS41NjcuMjY3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xM2ExIDEgMCAxMC0yIDB2LjA5MmE0LjUzNSA0LjUzNSAwIDAwLTEuNjc2LjY2MkM2LjYwMiA2LjIzNCA2IDcuMDA5IDYgOGMwIC45OS42MDIgMS43NjUgMS4zMjQgMi4yNDYuNDguMzIgMS4wNTQuNTQ1IDEuNjc2LjY2MnYxLjk0MWMtLjM5MS0uMTI3LS42OC0uMzE3LS44NDMtLjUwNGExIDEgMCAxMC0xLjUxIDEuMzFjLjU2Mi42NDkgMS40MTMgMS4wNzYgMi4zNTMgMS4yNTNWMTVhMSAxIDAgMTAyIDB2LS4wOTJhNC41MzUgNC41MzUgMCAwMDEuNjc2LS42NjJDMTMuMzk4IDEzLjc2NiAxNCAxMi45OTEgMTQgMTJjMC0uOTktLjYwMi0xLjc2NS0xLjMyNC0yLjI0NkE0LjUzNSA0LjUzNSAwIDAwMTEgOS4wOTJWNy4xNTFjLjM5MS4xMjcuNjguMzE3Ljg0My41MDRhMSAxIDAgMTAxLjUxMS0xLjMxYy0uNTYzLS42NDktMS40MTMtMS4wNzYtMi4zNTQtMS4yNTNWNXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUN1cnJlbmN5RXVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTguNzM2IDYuOTc5QzkuMjA4IDYuMTkzIDkuNjk2IDYgMTAgNmMuMzA0IDAgLjc5Mi4xOTMgMS4yNjQuOTc5YTEgMSAwIDAwMS43MTUtMS4wMjlDMTIuMjc5IDQuNzg0IDExLjIzMiA0IDEwIDRzLTIuMjc5Ljc4NC0yLjk3OSAxLjk1Yy0uMjg1LjQ3NS0uNTA3IDEtLjY3IDEuNTVINmExIDEgMCAwMDAgMmguMDEzYTkuMzU4IDkuMzU4IDAgMDAwIDFINmExIDEgMCAxMDAgMmguMzUxYy4xNjMuNTUuMzg1IDEuMDc1LjY3IDEuNTVDNy43MjEgMTUuMjE2IDguNzY4IDE2IDEwIDE2czIuMjc5LS43ODQgMi45NzktMS45NWExIDEgMCAxMC0xLjcxNS0xLjAyOWMtLjQ3Mi43ODYtLjk2Ljk3OS0xLjI2NC45NzktLjMwNCAwLS43OTItLjE5My0xLjI2NC0uOTc5YTQuMjY1IDQuMjY1IDAgMDEtLjI2NC0uNTIxSDEwYTEgMSAwIDEwMC0ySDguMDE3YTcuMzYgNy4zNiAwIDAxMC0xSDEwYTEgMSAwIDEwMC0ySDguNDcyYy4wOC0uMTg1LjE2Ny0uMzYuMjY0LS41MjF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJyZW5jeVBvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xNGEzIDMgMCAwMC0zIDN2Mkg3YTEgMSAwIDAwMCAyaDF2MWExIDEgMCAwMS0xIDEgMSAxIDAgMTAwIDJoNmExIDEgMCAxMDAtMkg5LjgzYy4xMS0uMzEzLjE3LS42NS4xNy0xdi0xaDFhMSAxIDAgMTAwLTJoLTFWN2ExIDEgMCAxMTIgMCAxIDEgMCAxMDIgMCAzIDMgMCAwMC0zLTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJyZW5jeVJ1cGVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNNyA1YTEgMSAwIDEwMCAyaDFhMiAyIDAgMDExLjczMiAxSDdhMSAxIDAgMTAwIDJoMi43MzJBMiAyIDAgMDE4IDExSDdhMSAxIDAgMDAtLjcwNyAxLjcwN2wzIDNhMSAxIDAgMDAxLjQxNC0xLjQxNGwtMS40ODMtMS40ODRBNC4wMDggNC4wMDggMCAwMDExLjg3NCAxMEgxM2ExIDEgMCAxMDAtMmgtMS4xMjZhMy45NzYgMy45NzYgMCAwMC0uNDEtMUgxM2ExIDEgMCAxMDAtMkg3elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ3VycmVuY3lZZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03Ljg1OCA1LjQ4NWExIDEgMCAwMC0xLjcxNSAxLjAzTDcuNjMzIDlIN2ExIDEgMCAxMDAgMmgxLjgzNGwuMTY2LjI3N1YxMkg3YTEgMSAwIDEwMCAyaDJ2MWExIDEgMCAxMDIgMHYtMWgyYTEgMSAwIDEwMC0yaC0ydi0uNzIzbC4xNjYtLjI3N0gxM2ExIDEgMCAxMDAtMmgtLjYzNGwxLjQ5Mi0yLjQ4NmExIDEgMCAxMC0xLjcxNi0xLjAyOUwxMC4wMzQgOWgtLjA2OEw3Ljg1OCA1LjQ4NXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUN1cnNvckNsaWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi42NzIgMS45MTFhMSAxIDAgMTAtMS45MzIuNTE4bC4yNTkuOTY2YTEgMSAwIDAwMS45MzItLjUxOGwtLjI2LS45NjZ6TTIuNDI5IDQuNzRhMSAxIDAgMTAtLjUxNyAxLjkzMmwuOTY2LjI1OWExIDEgMCAwMC41MTctMS45MzJsLS45NjYtLjI2em04LjgxNC0uNTY5YTEgMSAwIDAwLTEuNDE1LTEuNDE0bC0uNzA3LjcwN2ExIDEgMCAxMDEuNDE1IDEuNDE1bC43MDctLjcwOHptLTcuMDcxIDcuMDcybC43MDctLjcwN0ExIDEgMCAwMDMuNDY1IDkuMTJsLS43MDguNzA3YTEgMSAwIDAwMS40MTUgMS40MTV6bTMuMi01LjE3MWExIDEgMCAwMC0xLjMgMS4zbDQgMTBhMSAxIDAgMDAxLjgyMy4wNzVsMS4zOC0yLjc1OSAzLjAxOCAzLjAyYTEgMSAwIDAwMS40MTQtMS40MTVsLTMuMDE5LTMuMDIgMi43Ni0xLjM3OWExIDEgMCAwMC0uMDc2LTEuODIybC0xMC00elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRGF0YWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTJ2M2MwIDEuNjU3IDMuMTM0IDMgNyAzczctMS4zNDMgNy0zdi0zYzAgMS42NTctMy4xMzQgMy03IDNzLTctMS4zNDMtNy0zelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDd2M2MwIDEuNjU3IDMuMTM0IDMgNyAzczctMS4zNDMgNy0zVjdjMCAxLjY1Ny0zLjEzNCAzLTcgM1MzIDguNjU3IDMgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNWMwIDEuNjU3LTMuMTM0IDMtNyAzUzMgNi42NTcgMyA1czMuMTM0LTMgNy0zIDcgMS4zNDMgNyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEZXNrdG9wQ29tcHV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDVhMiAyIDAgMDEyLTJoMTBhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJoLTIuMjJsLjEyMy40ODkuODA0LjgwNEExIDEgMCAwMTEzIDE4SDdhMSAxIDAgMDEtLjcwNy0xLjcwN2wuODA0LS44MDRMNy4yMiAxNUg1YTIgMiAwIDAxLTItMlY1em01Ljc3MSA3SDVWNWgxMHY3SDguNzcxelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRGV2aWNlTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNyAyYTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmg2YTIgMiAwIDAwMi0yVjRhMiAyIDAgMDAtMi0ySDd6bTMgMTRhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEZXZpY2VUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNGEyIDIgMCAwMC0yLTJINnptNCAxNGExIDEgMCAxMDAtMiAxIDEgMCAwMDAgMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvY3VtZW50QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAyYTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0yVjcuNDE0QTIgMiAwIDAwMTUuNDE0IDZMMTIgMi41ODZBMiAyIDAgMDAxMC41ODYgMkg2em01IDZhMSAxIDAgMTAtMiAwdjJIN2ExIDEgMCAxMDAgMmgydjJhMSAxIDAgMTAyIDB2LTJoMmExIDEgMCAxMDAtMmgtMlY4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY3LjQxNEEyIDIgMCAwMDE1LjQxNCA2TDEyIDIuNTg2QTIgMiAwIDAwMTAuNTg2IDJINnptNSA2YTEgMSAwIDEwLTIgMHYzLjU4NmwtMS4yOTMtMS4yOTNhMSAxIDAgMTAtMS40MTQgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQgMGwzLTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTEgMTEuNTg2Vjh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEb2N1bWVudER1cGxpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyYTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyaDZhMiAyIDAgMDAyLTJWNi40MTRBMiAyIDAgMDAxNi40MTQgNUwxNCAyLjU4NkEyIDIgMCAwMDEyLjU4NiAySDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOGEyIDIgMCAwMTItMnYxMGg4YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMlY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEb2N1bWVudFJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY3LjQxNEEyIDIgMCAwMDE1LjQxNCA2TDEyIDIuNTg2QTIgMiAwIDAwMTAuNTg2IDJINnptMSA4YTEgMSAwIDEwMCAyaDZhMSAxIDAgMTAwLTJIN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvY3VtZW50UmVwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAyYTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0yVjcuNDE0QTIgMiAwIDAwMTUuNDE0IDZMMTIgMi41ODZBMiAyIDAgMDAxMC41ODYgMkg2em0yIDEwYTEgMSAwIDEwLTIgMHYzYTEgMSAwIDEwMiAwdi0zem0yLTNhMSAxIDAgMDExIDF2NWExIDEgMCAxMS0yIDB2LTVhMSAxIDAgMDExLTF6bTQtMWExIDEgMCAxMC0yIDB2N2ExIDEgMCAxMDIgMFY4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnRTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGEyIDIgMCAwMTItMmg0LjU4NkEyIDIgMCAwMTEyIDIuNTg2TDE1LjQxNCA2QTIgMiAwIDAxMTYgNy40MTRWMTZhMiAyIDAgMDEtMiAyaC0xLjUyOEE2IDYgMCAwMDQgOS41MjhWNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMTBhNCA0IDAgMDAtMy40NDYgNi4wMzJsLTEuMjYxIDEuMjZhMSAxIDAgMTAxLjQxNCAxLjQxNWwxLjI2MS0xLjI2MUE0IDQgMCAxMDggMTB6bS0yIDRhMiAyIDAgMTE0IDAgMiAyIDAgMDEtNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnRUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCA0YTIgMiAwIDAxMi0yaDQuNTg2QTIgMiAwIDAxMTIgMi41ODZMMTUuNDE0IDZBMiAyIDAgMDExNiA3LjQxNFYxNmEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJWNHptMiA2YTEgMSAwIDAxMS0xaDZhMSAxIDAgMTEwIDJIN2ExIDEgMCAwMS0xLTF6bTEgM2ExIDEgMCAxMDAgMmg2YTEgMSAwIDEwMC0ySDd6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEb2N1bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMTItMmg0LjU4NkEyIDIgMCAwMTEyIDIuNTg2TDE1LjQxNCA2QTIgMiAwIDAxMTYgNy40MTRWMTZhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEb3RzQ2lyY2xlSG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTcgOUg1djJoMlY5em04IDBoLTJ2MmgyVjl6TTkgOWgydjJIOVY5elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG90c0hvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTBhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwek0xMiAxMGEyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6TTE2IDEyYTIgMiAwIDEwMC00IDIgMiAwIDAwMCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEb3RzVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDZhMiAyIDAgMTEwLTQgMiAyIDAgMDEwIDR6TTEwIDEyYTIgMiAwIDExMC00IDIgMiAwIDAxMCA0ek0xMCAxOGEyIDIgMCAxMTAtNCAyIDIgMCAwMTAgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDE3YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xem0zLjI5My03LjcwN2ExIDEgMCAwMTEuNDE0IDBMOSAxMC41ODZWM2ExIDEgMCAxMTIgMHY3LjU4NmwxLjI5My0xLjI5M2ExIDEgMCAxMTEuNDE0IDEuNDE0bC0zIDNhMSAxIDAgMDEtMS40MTQgMGwtMy0zYTEgMSAwIDAxMC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUR1cGxpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA5YTIgMiAwIDAxMi0yaDZhMiAyIDAgMDEyIDJ2NmEyIDIgMCAwMS0yIDJIOWEyIDIgMCAwMS0yLTJWOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzYTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyVjVoOGEyIDIgMCAwMC0yLTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRW1vamlIYXBweSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTcgOWExIDEgMCAxMDAtMiAxIDEgMCAwMDAgMnptNy0xYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHptLS40NjQgNS41MzVhMSAxIDAgMTAtMS40MTUtMS40MTQgMyAzIDAgMDEtNC4yNDIgMCAxIDEgMCAwMC0xLjQxNSAxLjQxNCA1IDUgMCAwMDcuMDcyIDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlFbW9qaVNhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTcgOWExIDEgMCAxMDAtMiAxIDEgMCAwMDAgMnptNy0xYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHptLTcuNTM2IDUuODc5YTEgMSAwIDAwMS40MTUgMCAzIDMgMCAwMTQuMjQyIDAgMSAxIDAgMDAxLjQxNS0xLjQxNSA1IDUgMCAwMC03LjA3MiAwIDEgMSAwIDAwMCAxLjQxNXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUV4Y2xhbWF0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggMTBhOCA4IDAgMTEtMTYgMCA4IDggMCAwMTE2IDB6bS03IDRhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwem0tMS05YTEgMSAwIDAwLTEgMXY0YTEgMSAwIDEwMiAwVjZhMSAxIDAgMDAtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04LjI1NyAzLjA5OWMuNzY1LTEuMzYgMi43MjItMS4zNiAzLjQ4NiAwbDUuNTggOS45MmMuNzUgMS4zMzQtLjIxMyAyLjk4LTEuNzQyIDIuOThINC40MmMtMS41MyAwLTIuNDkzLTEuNjQ2LTEuNzQzLTIuOThsNS41OC05Ljkyek0xMSAxM2ExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bS0xLThhMSAxIDAgMDAtMSAxdjNhMSAxIDAgMDAyIDBWNmExIDEgMCAwMC0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlFeHRlcm5hbExpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDNhMSAxIDAgMTAwIDJoMi41ODZsLTYuMjkzIDYuMjkzYTEgMSAwIDEwMS40MTQgMS40MTRMMTUgNi40MTRWOWExIDEgMCAxMDIgMFY0YTEgMSAwIDAwLTEtMWgtNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJ2LTNhMSAxIDAgMTAtMiAwdjNINVY3aDNhMSAxIDAgMDAwLTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRXllT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMy43MDcgMi4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMTQgMTRhMSAxIDAgMDAxLjQxNC0xLjQxNGwtMS40NzMtMS40NzNBMTAuMDE0IDEwLjAxNCAwIDAwMTkuNTQyIDEwQzE4LjI2OCA1Ljk0MyAxNC40NzggMyAxMCAzYTkuOTU4IDkuOTU4IDAgMDAtNC41MTIgMS4wNzRsLTEuNzgtMS43ODF6bTQuMjYxIDQuMjZsMS41MTQgMS41MTVhMi4wMDMgMi4wMDMgMCAwMTIuNDUgMi40NWwxLjUxNCAxLjUxNGE0IDQgMCAwMC01LjQ3OC01LjQ3OHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjQ1NCAxNi42OTdMOS43NSAxMy45OTJhNCA0IDAgMDEtMy43NDItMy43NDFMMi4zMzUgNi41NzhBOS45OCA5Ljk4IDAgMDAuNDU4IDEwYzEuMjc0IDQuMDU3IDUuMDY1IDcgOS41NDIgNyAuODQ3IDAgMS42NjktLjEwNSAyLjQ1NC0uMzAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlFeWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEyYTIgMiAwIDEwMC00IDIgMiAwIDAwMCA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNLjQ1OCAxMEMxLjczMiA1Ljk0MyA1LjUyMiAzIDEwIDNzOC4yNjggMi45NDMgOS41NDIgN2MtMS4yNzQgNC4wNTctNS4wNjQgNy05LjU0MiA3UzEuNzMyIDE0LjA1Ny40NTggMTB6TTE0IDEwYTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZhc3RGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjU1NSA1LjE2OEExIDEgMCAwMDMgNnY4YTEgMSAwIDAwMS41NTUuODMyTDEwIDExLjIwMlYxNGExIDEgMCAwMDEuNTU1LjgzMmw2LTRhMSAxIDAgMDAwLTEuNjY0bC02LTRBMSAxIDAgMDAxMCA2djIuNzk4bC01LjQ0NS0zLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGaWxtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCAzYTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmgxMmEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMkg0em0zIDJoNnY0SDdWNXptOCA4djJoMXYtMmgtMXptLTItMkg3djRoNnYtNHptMiAwaDFWOWgtMXYyem0xLTRWNWgtMXYyaDF6TTUgNXYySDRWNWgxem0wIDRINHYyaDFWOXptLTEgNGgxdjJINHYtMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMTEtMWgxMmExIDEgMCAwMTEgMXYzYTEgMSAwIDAxLS4yOTMuNzA3TDEyIDExLjQxNFYxNWExIDEgMCAwMS0uMjkzLjcwN2wtMiAyQTEgMSAwIDAxOCAxN3YtNS41ODZMMy4yOTMgNi43MDdBMSAxIDAgMDEzIDZWM3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZpbmdlclByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi42MjUgMi42NTVBOSA5IDAgMDExOSAxMWExIDEgMCAxMS0yIDAgNyA3IDAgMDAtOS42MjUtNi40OTIgMSAxIDAgMTEtLjc1LTEuODUzek00LjY2MiA0Ljk1OUExIDEgMCAwMTQuNzUgNi4zNyA2Ljk3IDYuOTcgMCAwMDMgMTFhMSAxIDAgMTEtMiAwIDguOTcgOC45NyAwIDAxMi4yNS01Ljk1MyAxIDEgMCAwMTEuNDEyLS4wODh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSAxMWE1IDUgMCAxMTEwIDAgMSAxIDAgMTEtMiAwIDMgMyAwIDEwLTYgMGMwIDEuNjc3LS4zNDUgMy4yNzYtLjk2OCA0LjcyOWExIDEgMCAxMS0xLjgzOC0uNzg5QTkuOTY0IDkuOTY0IDAgMDA1IDExem04LjkyMSAyLjAxMmExIDEgMCAwMS44MzEgMS4xNDUgMTkuODYgMTkuODYgMCAwMS0uNTQ1IDIuNDM2IDEgMSAwIDExLTEuOTItLjU1OGMuMjA3LS43MTMuMzcxLTEuNDQ1LjQ5LTIuMTkyYTEgMSAwIDAxMS4xNDQtLjgzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDEwYTEgMSAwIDAxMSAxYzAgMi4yMzYtLjQ2IDQuMzY4LTEuMjkgNi4zMDRhMSAxIDAgMDEtMS44MzgtLjc4OUExMy45NTIgMTMuOTUyIDAgMDA5IDExYTEgMSAwIDAxMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRmlyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyLjM5NSAyLjU1M2ExIDEgMCAwMC0xLjQ1LS4zODVjLS4zNDUuMjMtLjYxNC41NTgtLjgyMi44OC0uMjE0LjMzLS40MDMuNzEzLS41NyAxLjExNi0uMzM0LjgwNC0uNjE0IDEuNzY4LS44NCAyLjczNGEzMS4zNjUgMzEuMzY1IDAgMDAtLjYxMyAzLjU4IDIuNjQgMi42NCAwIDAxLS45NDUtMS4wNjdjLS4zMjgtLjY4LS4zOTgtMS41MzQtLjM5OC0yLjY1NEExIDEgMCAwMDUuMDUgNi4wNSA2Ljk4MSA2Ljk4MSAwIDAwMyAxMWE3IDcgMCAxMDExLjk1LTQuOTVjLS41OTItLjU5MS0uOTgtLjk4NS0xLjM0OC0xLjQ2Ny0uMzYzLS40NzYtLjcyNC0xLjA2My0xLjIwNy0yLjAzek0xMi4xMiAxNS4xMkEzIDMgMCAwMTcgMTNzLjg3OS41IDIuNS41YzAtMSAuNS00IDEuMjUtNC41LjUgMSAuNzg2IDEuMjkzIDEuMzcxIDEuODc5QTIuOTkgMi45OSAwIDAxMTMgMTNhMi45OSAyLjk5IDAgMDEtLjg3OSAyLjEyMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDZhMyAzIDAgMDEzLTNoMTBhMSAxIDAgMDEuOCAxLjZMMTQuMjUgOGwyLjU1IDMuNEExIDEgMCAwMTE2IDEzSDZhMSAxIDAgMDAtMSAxdjNhMSAxIDAgMTEtMiAwVjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGb2xkZXJBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDRhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJoLTVMOSA0SDR6bTcgNWExIDEgMCAxMC0yIDB2MUg4YTEgMSAwIDEwMCAyaDF2MWExIDEgMCAxMDIgMHYtMWgxYTEgMSAwIDEwMC0yaC0xVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZvbGRlckRvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCA0YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjhhMiAyIDAgMDAtMi0yaC01TDkgNEg0em03IDVhMSAxIDAgMTAtMiAwdjEuNTg2bC0uMjkzLS4yOTNhMSAxIDAgMTAtMS40MTQgMS40MTRsMiAyIC4wMDIuMDAyYS45OTcuOTk3IDAgMDAxLjQxIDBsLjAwMi0uMDAyIDItMmExIDEgMCAwMC0xLjQxNC0xLjQxNGwtLjI5My4yOTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRm9sZGVyT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgNmEyIDIgMCAwMTItMmg0bDIgMmg0YTIgMiAwIDAxMiAydjFIOGEzIDMgMCAwMC0zIDN2MS41YTEuNSAxLjUgMCAwMS0zIDBWNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTJhMiAyIDAgMDEyLTJoOGEyIDIgMCAwMTIgMnYyYTIgMiAwIDAxLTIgMkgyaDJhMiAyIDAgMDAyLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZvbGRlclJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMmgxMmEyIDIgMCAwMDItMlY4YTIgMiAwIDAwLTItMmgtNUw5IDRINHptNCA2YTEgMSAwIDEwMCAyaDRhMSAxIDAgMTAwLTJIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZhMiAyIDAgMDEyLTJoNWwyIDJoNWEyIDIgMCAwMTIgMnY2YTIgMiAwIDAxLTIgMkg0YTIgMiAwIDAxLTItMlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlHaWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSA1YTMgMyAwIDAxNS0yLjIzNkEzIDMgMCAwMTE0LjgzIDZIMTZhMiAyIDAgMTEwIDRoLTVWOWExIDEgMCAxMC0yIDB2MUg0YTIgMiAwIDExMC00aDEuMTdDNS4wNiA1LjY4NyA1IDUuMzUgNSA1em00IDFWNWExIDEgMCAxMC0xIDFoMXptMyAwYTEgMSAwIDEwLTEtMXYxaDF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDExSDN2NWEyIDIgMCAwMDIgMmg0di03ek0xMSAxOGg0YTIgMiAwIDAwMi0ydi01aC02djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUdsb2JlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNC4wODMgOWgxLjk0NmMuMDg5LTEuNTQ2LjM4My0yLjk3LjgzNy00LjExOEE2LjAwNCA2LjAwNCAwIDAwNC4wODMgOXpNMTAgMmE4IDggMCAxMDAgMTYgOCA4IDAgMDAwLTE2em0wIDJjLS4wNzYgMC0uMjMyLjAzMi0uNDY1LjI2Mi0uMjM4LjIzNC0uNDk3LjYyMy0uNzM3IDEuMTgyLS4zODkuOTA3LS42NzMgMi4xNDItLjc2NiAzLjU1NmgzLjkzNmMtLjA5My0xLjQxNC0uMzc3LTIuNjQ5LS43NjYtMy41NTYtLjI0LS41Ni0uNS0uOTQ4LS43MzctMS4xODJDMTAuMjMyIDQuMDMyIDEwLjA3NiA0IDEwIDR6bTMuOTcxIDVjLS4wODktMS41NDYtLjM4My0yLjk3LS44MzctNC4xMThBNi4wMDQgNi4wMDQgMCAwMTE1LjkxNyA5aC0xLjk0NnptLTIuMDAzIDJIOC4wMzJjLjA5MyAxLjQxNC4zNzcgMi42NDkuNzY2IDMuNTU2LjI0LjU2LjUuOTQ4LjczNyAxLjE4Mi4yMzMuMjMuMzg5LjI2Mi40NjUuMjYyLjA3NiAwIC4yMzItLjAzMi40NjUtLjI2Mi4yMzgtLjIzNC40OTgtLjYyMy43MzctMS4xODIuMzg5LS45MDcuNjczLTIuMTQyLjc2Ni0zLjU1NnptMS4xNjYgNC4xMThjLjQ1NC0xLjE0Ny43NDgtMi41NzIuODM3LTQuMTE4aDEuOTQ2YTYuMDA0IDYuMDA0IDAgMDEtMi43ODMgNC4xMTh6bS02LjI2OCAwQzYuNDEyIDEzLjk3IDYuMTE4IDEyLjU0NiA2LjAzIDExSDQuMDgzYTYuMDA0IDYuMDA0IDAgMDAyLjc4MyA0LjExOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUdsb2JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNNC4zMzIgOC4wMjdhNi4wMTIgNi4wMTIgMCAwMTEuOTEyLTIuNzA2QzYuNTEyIDUuNzMgNi45NzQgNiA3LjUgNkExLjUgMS41IDAgMDE5IDcuNVY4YTIgMiAwIDAwNCAwIDIgMiAwIDAxMS41MjMtMS45NDNBNS45NzcgNS45NzcgMCAwMTE2IDEwYzAgLjM0LS4wMjguNjc1LS4wODMgMUgxNWEyIDIgMCAwMC0yIDJ2Mi4xOTdBNS45NzMgNS45NzMgMCAwMTEwIDE2di0yYTIgMiAwIDAwLTItMiAyIDIgMCAwMS0yLTIgMiAyIDAgMDAtMS42NjgtMS45NzN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOSAzYTEgMSAwIDAxMiAwdjUuNWEuNS41IDAgMDAxIDBWNGExIDEgMCAxMTIgMHY0LjVhLjUuNSAwIDAwMSAwVjZhMSAxIDAgMTEyIDB2NWE3IDcgMCAxMS0xNCAwVjlhMSAxIDAgMDEyIDB2Mi41YS41LjUgMCAwMDEgMFY0YTEgMSAwIDAxMiAwdjQuNWEuNS41IDAgMDAxIDBWM3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUhhc2h0YWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk05LjI0MyAzLjAzYTEgMSAwIDAxLjcyNyAxLjIxM0w5LjUzIDZoMi45NGwuNTYtMi4yNDNhMSAxIDAgMTExLjk0LjQ4NkwxNC41MyA2SDE3YTEgMSAwIDExMCAyaC0yLjk3bC0xIDRIMTVhMSAxIDAgMTEwIDJoLTIuNDdsLS41NiAyLjI0MmExIDEgMCAxMS0xLjk0LS40ODVMMTAuNDcgMTRINy41M2wtLjU2IDIuMjQyYTEgMSAwIDExLTEuOTQtLjQ4NUw1LjQ3IDE0SDNhMSAxIDAgMTEwLTJoMi45N2wxLTRINWExIDEgMCAxMTAtMmgyLjQ3bC41Ni0yLjI0M2ExIDEgMCAwMTEuMjEzLS43Mjd6TTkuMDMgOGwtMSA0aDIuOTM4bDEtNEg5LjAzMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUhlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMy4xNzIgNS4xNzJhNCA0IDAgMDE1LjY1NiAwTDEwIDYuMzQzbDEuMTcyLTEuMTcxYTQgNCAwIDExNS42NTYgNS42NTZMMTAgMTcuNjU3bC02LjgyOC02LjgyOWE0IDQgMCAwMTAtNS42NTZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlIb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC43MDcgMi4yOTNhMSAxIDAgMDAtMS40MTQgMGwtNyA3YTEgMSAwIDAwMS40MTQgMS40MTRMNCAxMC40MTRWMTdhMSAxIDAgMDAxIDFoMmExIDEgMCAwMDEtMXYtMmExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjJhMSAxIDAgMDAxIDFoMmExIDEgMCAwMDEtMXYtNi41ODZsLjI5My4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNGwtNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlJZGVudGlmaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDJhMSAxIDAgMDAtMSAxdjFhMSAxIDAgMDAyIDBWM2ExIDEgMCAwMC0xLTF6TTQgNGgzYTMgMyAwIDAwNiAwaDNhMiAyIDAgMDEyIDJ2OWEyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJWNmEyIDIgMCAwMTItMnptMi41IDdhMS41IDEuNSAwIDEwMC0zIDEuNSAxLjUgMCAwMDAgM3ptMi40NSA0YTIuNSAyLjUgMCAxMC00LjkgMGg0Ljl6TTEyIDlhMSAxIDAgMTAwIDJoM2ExIDEgMCAxMDAtMmgtM3ptLTEgNGExIDEgMCAwMTEtMWgyYTEgMSAwIDExMCAyaC0yYTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUluYm94SW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNzA3IDcuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDIgMmExIDEgMCAwMDEuNDE0IDBsMi0yYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDExIDcuNTg2VjNhMSAxIDAgMTAtMiAwdjQuNTg2bC0uMjkzLS4yOTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNWEyIDIgMCAwMTItMmgxYTEgMSAwIDAxMCAySDV2N2gybDEgMmg0bDEtMmgyVjVoLTFhMSAxIDAgMTEwLTJoMWEyIDIgMCAwMTIgMnYxMGEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDNhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDV6bTAgMmgxMHY3aC0ybC0xIDJIOGwtMS0ySDVWNXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUluZm9ybWF0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggMTBhOCA4IDAgMTEtMTYgMCA4IDggMCAwMTE2IDB6bS03LTRhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwek05IDlhMSAxIDAgMDAwIDJ2M2ExIDEgMCAwMDEgMWgxYTEgMSAwIDEwMC0ydi0zYTEgMSAwIDAwLTEtMUg5elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggOGE2IDYgMCAwMS03Ljc0MyA1Ljc0M0wxMCAxNGwtMSAxLTEgMUg2djJIMnYtNGw0LjI1Ny00LjI1N0E2IDYgMCAxMTE4IDh6bS02LTRhMSAxIDAgMTAwIDIgMiAyIDAgMDEyIDIgMSAxIDAgMTAyIDAgNCA0IDAgMDAtNC00elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTGlicmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjQ5NiAyLjEzMmExIDEgMCAwMC0uOTkyIDBsLTcgNEExIDEgMCAwMDMgOHY3YTEgMSAwIDEwMCAyaDE0YTEgMSAwIDEwMC0yVjhhMSAxIDAgMDAuNDk2LTEuODY4bC03LTR6TTYgOWExIDEgMCAwMC0xIDF2M2ExIDEgMCAxMDIgMHYtM2ExIDEgMCAwMC0xLTF6bTMgMWExIDEgMCAwMTIgMHYzYTEgMSAwIDExLTIgMHYtM3ptNS0xYTEgMSAwIDAwLTEgMXYzYTEgMSAwIDEwMiAwdi0zYTEgMSAwIDAwLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxpZ2h0QnVsYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgM2ExIDEgMCAxMC0yIDB2MWExIDEgMCAxMDIgMFYzek0xNS42NTcgNS43NTdhMSAxIDAgMDAtMS40MTQtMS40MTRsLS43MDcuNzA3YTEgMSAwIDAwMS40MTQgMS40MTRsLjcwNy0uNzA3ek0xOCAxMGExIDEgMCAwMS0xIDFoLTFhMSAxIDAgMTEwLTJoMWExIDEgMCAwMTEgMXpNNS4wNSA2LjQ2NEExIDEgMCAxMDYuNDY0IDUuMDVsLS43MDctLjcwN2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwuNzA3LjcwN3pNNSAxMGExIDEgMCAwMS0xIDFIM2ExIDEgMCAxMTAtMmgxYTEgMSAwIDAxMSAxek04IDE2di0xaDR2MWEyIDIgMCAxMS00IDB6TTEyIDE0Yy4wMTUtLjM0LjIwOC0uNjQ2LjQ3Ny0uODU5YTQgNCAwIDEwLTQuOTU0IDBjLjI3LjIxMy40NjIuNTE5LjQ3Ni44NTloNC4wMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxpZ2h0bmluZ0JvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMS4zIDEuMDQ2QTEgMSAwIDAxMTIgMnY1aDRhMSAxIDAgMDEuODIgMS41NzNsLTcgMTBBMSAxIDAgMDE4IDE4di01SDRhMSAxIDAgMDEtLjgyLTEuNTczbDctMTBhMSAxIDAgMDExLjEyLS4zOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi41ODYgNC41ODZhMiAyIDAgMTEyLjgyOCAyLjgyOGwtMyAzYTIgMiAwIDAxLTIuODI4IDAgMSAxIDAgMDAtMS40MTQgMS40MTQgNCA0IDAgMDA1LjY1NiAwbDMtM2E0IDQgMCAwMC01LjY1Ni01LjY1NmwtMS41IDEuNWExIDEgMCAxMDEuNDE0IDEuNDE0bDEuNS0xLjV6bS01IDVhMiAyIDAgMDEyLjgyOCAwIDEgMSAwIDEwMS40MTQtMS40MTQgNCA0IDAgMDAtNS42NTYgMGwtMyAzYTQgNCAwIDEwNS42NTYgNS42NTZsMS41LTEuNWExIDEgMCAxMC0xLjQxNC0xLjQxNGwtMS41IDEuNWEyIDIgMCAxMS0yLjgyOC0yLjgyOGwzLTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMb2NhdGlvbk1hcmtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuMDUgNC4wNWE3IDcgMCAxMTkuOSA5LjlMMTAgMTguOWwtNC45NS00Ljk1YTcgNyAwIDAxMC05Ljl6TTEwIDExYTIgMiAwIDEwMC00IDIgMiAwIDAwMCA0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTG9ja0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgOVY3YTUgNSAwIDAxMTAgMHYyYTIgMiAwIDAxMiAydjVhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0ydi01YTIgMiAwIDAxMi0yem04LTJ2Mkg3VjdhMyAzIDAgMDE2IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMb2NrT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMmE1IDUgMCAwMC01IDV2MmEyIDIgMCAwMC0yIDJ2NWEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMnYtNWEyIDIgMCAwMC0yLTJIN1Y3YTMgMyAwIDAxNS45MDUtLjc1IDEgMSAwIDAwMS45MzctLjVBNS4wMDIgNS4wMDIgMCAwMDEwIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxvZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyAzYTEgMSAwIDAxMSAxdjEyYTEgMSAwIDExLTIgMFY0YTEgMSAwIDAxMS0xem03LjcwNyAzLjI5M2ExIDEgMCAwMTAgMS40MTRMOS40MTQgOUgxN2ExIDEgMCAxMTAgMkg5LjQxNGwxLjI5MyAxLjI5M2ExIDEgMCAwMS0xLjQxNCAxLjQxNGwtMy0zYTEgMSAwIDAxMC0xLjQxNGwzLTNhMSAxIDAgMDExLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTG9nb3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyAzYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAxMDIgMFY0YTEgMSAwIDAwLTEtMXptMTAuMjkzIDkuMjkzYTEgMSAwIDAwMS40MTQgMS40MTRsMy0zYTEgMSAwIDAwMC0xLjQxNGwtMy0zYTEgMSAwIDEwLTEuNDE0IDEuNDE0TDE0LjU4NiA5SDdhMSAxIDAgMTAwIDJoNy41ODZsLTEuMjkzIDEuMjkzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTWFpbE9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yLjk0IDYuNDEyQTIgMiAwIDAwMiA4LjEwOFYxNmEyIDIgMCAwMDIgMmgxMmEyIDIgMCAwMDItMlY4LjEwOGEyIDIgMCAwMC0uOTQtMS42OTZsLTYtMy43NWEyIDIgMCAwMC0yLjEyIDBsLTYgMy43NXptMi42MTUgMi40MjNhMSAxIDAgMTAtMS4xMSAxLjY2NGw1IDMuMzMzYTEgMSAwIDAwMS4xMSAwbDUtMy4zMzNhMSAxIDAgMDAtMS4xMS0xLjY2NEwxMCAxMS43OTggNS41NTUgOC44MzV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjAwMyA1Ljg4NEwxMCA5Ljg4Mmw3Ljk5Ny0zLjk5OEEyIDIgMCAwMDE2IDRINGEyIDIgMCAwMC0xLjk5NyAxLjg4NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOC4xMThsLTggNC04LTRWMTRhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWOC4xMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyIDEuNTg2bC00IDR2MTIuODI4bDQtNFYxLjU4NnpNMy43MDcgMy4yOTNBMSAxIDAgMDAyIDR2MTBhMSAxIDAgMDAuMjkzLjcwN0w2IDE4LjQxNFY1LjU4NkwzLjcwNyAzLjI5M3pNMTcuNzA3IDUuMjkzTDE0IDEuNTg2djEyLjgyOGwyLjI5MyAyLjI5M0ExIDEgMCAwMDE4IDE2VjZhMSAxIDAgMDAtLjI5My0uNzA3elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTWVudUFsdDEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTBhMSAxIDAgMDExLTFoNmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxNWExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1lbnVBbHQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA1YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xek0zIDEwYTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xek0zIDE1YTEgMSAwIDAxMS0xaDZhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNZW51QWx0MyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgNWExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxMGExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNOSAxNWExIDEgMCAwMTEtMWg2YTEgMSAwIDExMCAyaC02YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1lbnVBbHQ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA3YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xek0zIDEzYTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTWVudSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgNWExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxMGExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxNWExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1pY3JvcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03IDRhMyAzIDAgMDE2IDB2NGEzIDMgMCAxMS02IDBWNHptNCAxMC45M0E3LjAwMSA3LjAwMSAwIDAwMTcgOGExIDEgMCAxMC0yIDBBNSA1IDAgMDE1IDhhMSAxIDAgMDAtMiAwIDcuMDAxIDcuMDAxIDAgMDA2IDYuOTNWMTdINmExIDEgMCAxMDAgMmg4YTEgMSAwIDEwMC0yaC0zdi0yLjA3elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTWludXNDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03IDlhMSAxIDAgMDAwIDJoNmExIDEgMCAxMDAtMkg3elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTWludXNTbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMTBhMSAxIDAgMDExLTFoOGExIDEgMCAxMTAgMkg2YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyAxMGExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjI5MyAxMy4yOTNBOCA4IDAgMDE2LjcwNyAyLjcwN2E4LjAwMSA4LjAwMSAwIDEwMTAuNTg2IDEwLjU4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTXVzaWNOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAzYTEgMSAwIDAwLTEuMTk2LS45OGwtMTAgMkExIDEgMCAwMDYgNXY5LjExNEE0LjM2OSA0LjM2OSAwIDAwNSAxNGMtMS42NTcgMC0zIC44OTUtMyAyczEuMzQzIDIgMyAyIDMtLjg5NSAzLTJWNy44Mmw4LTEuNnY1Ljg5NEE0LjM3IDQuMzcgMCAwMDE1IDEyYy0xLjY1NyAwLTMgLjg5NS0zIDJzMS4zNDMgMiAzIDIgMy0uODk1IDMtMlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlOZXdzcGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDVhMiAyIDAgMDEyLTJoOGEyIDIgMCAwMTIgMnYxMGEyIDIgMCAwMDIgMkg0YTIgMiAwIDAxLTItMlY1em0zIDFoNnY0SDVWNnptNiA2SDV2Mmg2di0yelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgN2gxYTIgMiAwIDAxMiAydjUuNWExLjUgMS41IDAgMDEtMyAwVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU9mZmljZUJ1aWxkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCA0YTIgMiAwIDAxMi0yaDhhMiAyIDAgMDEyIDJ2MTJhMSAxIDAgMTEwIDJoLTNhMSAxIDAgMDEtMS0xdi0yYTEgMSAwIDAwLTEtMUg5YTEgMSAwIDAwLTEgMXYyYTEgMSAwIDAxLTEgMUg0YTEgMSAwIDExMC0yVjR6bTMgMWgydjJIN1Y1em0yIDRIN3YyaDJWOXptMi00aDJ2MmgtMlY1em0yIDRoLTJ2MmgyVjl6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQYXBlckFpcnBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44OTQgMi41NTNhMSAxIDAgMDAtMS43ODggMGwtNyAxNGExIDEgMCAwMDEuMTY5IDEuNDA5bDUtMS40MjlBMSAxIDAgMDA5IDE1LjU3MVYxMWExIDEgMCAxMTIgMHY0LjU3MWExIDEgMCAwMC43MjUuOTYybDUgMS40MjhhMSAxIDAgMDAxLjE3LTEuNDA4bC03LTE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQYXBlckNsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDRhMyAzIDAgMDAtMyAzdjRhNSA1IDAgMDAxMCAwVjdhMSAxIDAgMTEyIDB2NGE3IDcgMCAxMS0xNCAwVjdhNSA1IDAgMDExMCAwdjRhMyAzIDAgMTEtNiAwVjdhMSAxIDAgMDEyIDB2NGExIDEgMCAxMDIgMFY3YTMgMyAwIDAwLTMtM3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVBhdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggMTBhOCA4IDAgMTEtMTYgMCA4IDggMCAwMTE2IDB6TTcgOGExIDEgMCAwMTIgMHY0YTEgMSAwIDExLTIgMFY4em01LTFhMSAxIDAgMDAtMSAxdjRhMSAxIDAgMTAyIDBWOGExIDEgMCAwMC0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQZW5jaWxBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjQxNCAyLjU4NmEyIDIgMCAwMC0yLjgyOCAwTDcgMTAuMTcyVjEzaDIuODI4bDcuNTg2LTcuNTg2YTIgMiAwIDAwMC0yLjgyOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgNmEyIDIgMCAwMTItMmg0YTEgMSAwIDAxMCAySDR2MTBoMTB2LTRhMSAxIDAgMTEyIDB2NGEyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJWNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVBlbmNpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNTg2IDMuNTg2YTIgMiAwIDExMi44MjggMi44MjhsLS43OTMuNzkzLTIuODI4LTIuODI4Ljc5My0uNzkzek0xMS4zNzkgNS43OTNMMyAxNC4xNzJWMTdoMi44MjhsOC4zOC04LjM3OS0yLjgzLTIuODI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQaG9uZUluY29taW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC40MTQgN2wzLjI5My0zLjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMyA1LjU4NlY0YTEgMSAwIDEwLTIgMHY0LjAwM2EuOTk2Ljk5NiAwIDAwLjYxNy45MjFBLjk5Ny45OTcgMCAwMDEyIDloNGExIDEgMCAxMDAtMmgtMS41ODZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgM2ExIDEgMCAwMTEtMWgyLjE1M2ExIDEgMCAwMS45ODYuODM2bC43NCA0LjQzNWExIDEgMCAwMS0uNTQgMS4wNmwtMS41NDguNzczYTExLjAzNyAxMS4wMzcgMCAwMDYuMTA1IDYuMTA1bC43NzQtMS41NDhhMSAxIDAgMDExLjA1OS0uNTRsNC40MzUuNzRhMSAxIDAgMDEuODM2Ljk4NlYxN2ExIDEgMCAwMS0xIDFoLTJDNy44MiAxOCAyIDEyLjE4IDIgNVYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQaG9uZU1pc3NlZENhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgM2ExIDEgMCAwMTEtMWgyLjE1M2ExIDEgMCAwMS45ODYuODM2bC43NCA0LjQzNWExIDEgMCAwMS0uNTQgMS4wNmwtMS41NDguNzczYTExLjAzNyAxMS4wMzcgMCAwMDYuMTA1IDYuMTA1bC43NzQtMS41NDhhMSAxIDAgMDExLjA1OS0uNTRsNC40MzUuNzRhMSAxIDAgMDEuODM2Ljk4NlYxN2ExIDEgMCAwMS0xIDFoLTJDNy44MiAxOCAyIDEyLjE4IDIgNVYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43MDcgMy4yOTNhMSAxIDAgMDEwIDEuNDE0TDE1LjQxNCA2bDEuMjkzIDEuMjkzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDE0IDcuNDE0bC0xLjI5MyAxLjI5M2ExIDEgMCAxMS0xLjQxNC0xLjQxNEwxMi41ODYgNmwtMS4yOTMtMS4yOTNhMSAxIDAgMDExLjQxNC0xLjQxNEwxNCA0LjU4NmwxLjI5My0xLjI5M2ExIDEgMCAwMTEuNDE0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVBob25lT3V0Z29pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjkyNCAyLjYxN2EuOTk3Ljk5NyAwIDAwLS4yMTUtLjMyMmwtLjAwNC0uMDA0QS45OTcuOTk3IDAgMDAxNyAyaC00YTEgMSAwIDEwMCAyaDEuNTg2bC0zLjI5MyAzLjI5M2ExIDEgMCAwMDEuNDE0IDEuNDE0TDE2IDUuNDE0VjdhMSAxIDAgMTAyIDBWM2EuOTk3Ljk5NyAwIDAwLS4wNzYtLjM4M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAzYTEgMSAwIDAxMS0xaDIuMTUzYTEgMSAwIDAxLjk4Ni44MzZsLjc0IDQuNDM1YTEgMSAwIDAxLS41NCAxLjA2bC0xLjU0OC43NzNhMTEuMDM3IDExLjAzNyAwIDAwNi4xMDUgNi4xMDVsLjc3NC0xLjU0OGExIDEgMCAwMTEuMDU5LS41NGw0LjQzNS43NGExIDEgMCAwMS44MzYuOTg2VjE3YTEgMSAwIDAxLTEgMWgtMkM3LjgyIDE4IDIgMTIuMTggMiA1VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDNhMSAxIDAgMDExLTFoMi4xNTNhMSAxIDAgMDEuOTg2LjgzNmwuNzQgNC40MzVhMSAxIDAgMDEtLjU0IDEuMDZsLTEuNTQ4Ljc3M2ExMS4wMzcgMTEuMDM3IDAgMDA2LjEwNSA2LjEwNWwuNzc0LTEuNTQ4YTEgMSAwIDAxMS4wNTktLjU0bDQuNDM1Ljc0YTEgMSAwIDAxLjgzNi45ODZWMTdhMSAxIDAgMDEtMSAxaC0yQzcuODIgMTggMiAxMi4xOCAyIDVWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGhvdG9ncmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgM2EyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJINHptMTIgMTJINGw0LTggMyA2IDItNCAzIDZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNOS41NTUgNy4xNjhBMSAxIDAgMDA4IDh2NGExIDEgMCAwMDEuNTU1LjgzMmwzLTJhMSAxIDAgMDAwLTEuNjY0bC0zLTJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQbHVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xMWExIDEgMCAxMC0yIDB2Mkg3YTEgMSAwIDEwMCAyaDJ2MmExIDEgMCAxMDIgMHYtMmgyYTEgMSAwIDEwMC0yaC0yVjd6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQbHVzU20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCA1YTEgMSAwIDAxMSAxdjNoM2ExIDEgMCAxMTAgMmgtM3YzYTEgMSAwIDExLTIgMHYtM0g2YTEgMSAwIDExMC0yaDNWNmExIDEgMCAwMTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAzYTEgMSAwIDAxMSAxdjVoNWExIDEgMCAxMTAgMmgtNXY1YTEgMSAwIDExLTIgMHYtNUg0YTEgMSAwIDExMC0yaDVWNGExIDEgMCAwMTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVByZXNlbnRhdGlvbkNoYXJ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyAzYTEgMSAwIDAwMCAydjhhMiAyIDAgMDAyIDJoMi41ODZsLTEuMjkzIDEuMjkzYTEgMSAwIDEwMS40MTQgMS40MTRMMTAgMTUuNDE0bDIuMjkzIDIuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRMMTIuNDE0IDE1SDE1YTIgMiAwIDAwMi0yVjVhMSAxIDAgMTAwLTJIM3ptMTEgNGExIDEgMCAxMC0yIDB2NGExIDEgMCAxMDIgMFY3em0tMyAxYTEgMSAwIDEwLTIgMHYzYTEgMSAwIDEwMiAwVjh6TTggOWExIDEgMCAwMC0yIDB2MmExIDEgMCAxMDIgMFY5elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUHJlc2VudGF0aW9uQ2hhcnRMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyAzYTEgMSAwIDAwMCAydjhhMiAyIDAgMDAyIDJoMi41ODZsLTEuMjkzIDEuMjkzYTEgMSAwIDEwMS40MTQgMS40MTRMMTAgMTUuNDE0bDIuMjkzIDIuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRMMTIuNDE0IDE1SDE1YTIgMiAwIDAwMi0yVjVhMSAxIDAgMTAwLTJIM3ptMTEuNzA3IDQuNzA3YTEgMSAwIDAwLTEuNDE0LTEuNDE0TDEwIDkuNTg2IDguNzA3IDguMjkzYTEgMSAwIDAwLTEuNDE0IDBsLTIgMmExIDEgMCAxMDEuNDE0IDEuNDE0TDggMTAuNDE0bDEuMjkzIDEuMjkzYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQcmludGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSA0djNINGEyIDIgMCAwMC0yIDJ2M2EyIDIgMCAwMDIgMmgxdjJhMiAyIDAgMDAyIDJoNmEyIDIgMCAwMDItMnYtMmgxYTIgMiAwIDAwMi0yVjlhMiAyIDAgMDAtMi0yaC0xVjRhMiAyIDAgMDAtMi0ySDdhMiAyIDAgMDAtMiAyem04IDBIN3YzaDZWNHptMCA4SDd2NGg2di00elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUHV6emxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzLjVhMS41IDEuNSAwIDAxMyAwVjRhMSAxIDAgMDAxIDFoM2ExIDEgMCAwMTEgMXYzYTEgMSAwIDAxLTEgMWgtLjVhMS41IDEuNSAwIDAwMCAzaC41YTEgMSAwIDAxMSAxdjNhMSAxIDAgMDEtMSAxaC0zYTEgMSAwIDAxLTEtMXYtLjVhMS41IDEuNSAwIDAwLTMgMHYuNWExIDEgMCAwMS0xIDFINmExIDEgMCAwMS0xLTF2LTNhMSAxIDAgMDAtMS0xaC0uNWExLjUgMS41IDAgMDEwLTNINGExIDEgMCAwMDEtMVY2YTEgMSAwIDAxMS0xaDNhMSAxIDAgMDAxLTF2LS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlRcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDRhMSAxIDAgMDExLTFoM2ExIDEgMCAwMTEgMXYzYTEgMSAwIDAxLTEgMUg0YTEgMSAwIDAxLTEtMVY0em0yIDJWNWgxdjFINXpNMyAxM2ExIDEgMCAwMTEtMWgzYTEgMSAwIDAxMSAxdjNhMSAxIDAgMDEtMSAxSDRhMSAxIDAgMDEtMS0xdi0zem0yIDJ2LTFoMXYxSDV6TTEzIDNhMSAxIDAgMDAtMSAxdjNhMSAxIDAgMDAxIDFoM2ExIDEgMCAwMDEtMVY0YTEgMSAwIDAwLTEtMWgtM3ptMSAydjFoMVY1aC0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNGExIDEgMCAxMC0yIDB2MWExIDEgMCAwMDIgMFY0ek0xMCA3YTEgMSAwIDAxMSAxdjFoMmExIDEgMCAxMTAgMmgtM2ExIDEgMCAwMS0xLTFWOGExIDEgMCAwMTEtMXpNMTYgOWExIDEgMCAxMDAgMiAxIDEgMCAwMDAtMnpNOSAxM2ExIDEgMCAwMTEtMWgxYTEgMSAwIDExMCAydjJhMSAxIDAgMTEtMiAwdi0zek03IDExYTEgMSAwIDEwMC0ySDRhMSAxIDAgMTAwIDJoM3pNMTcgMTNhMSAxIDAgMDEtMSAxaC0yYTEgMSAwIDExMC0yaDJhMSAxIDAgMDExIDF6TTE2IDE3YTEgMSAwIDEwMC0yaC0zYTEgMSAwIDEwMCAyaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVF1ZXN0aW9uTWFya0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tOC0zYTEgMSAwIDAwLS44NjcuNSAxIDEgMCAxMS0xLjczMS0xQTMgMyAwIDAxMTMgOGEzLjAwMSAzLjAwMSAwIDAxLTIgMi44M1YxMWExIDEgMCAxMS0yIDB2LTFhMSAxIDAgMDExLTEgMSAxIDAgMTAwLTJ6bTAgOGExIDEgMCAxMDAtMiAxIDEgMCAwMDAgMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVJlY2VpcHRSZWZ1bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDJhMiAyIDAgMDAtMiAydjE0bDMuNS0yIDMuNSAyIDMuNS0yIDMuNSAyVjRhMiAyIDAgMDAtMi0ySDV6bTQuNzA3IDMuNzA3YTEgMSAwIDAwLTEuNDE0LTEuNDE0bC0zIDNhMSAxIDAgMDAwIDEuNDE0bDMgM2ExIDEgMCAwMDEuNDE0LTEuNDE0TDguNDE0IDlIMTBhMyAzIDAgMDEzIDN2MWExIDEgMCAxMDIgMHYtMWE1IDUgMCAwMC01LTVIOC40MTRsMS4yOTMtMS4yOTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlSZWNlaXB0VGF4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSAyYTIgMiAwIDAwLTIgMnYxNGwzLjUtMiAzLjUgMiAzLjUtMiAzLjUgMlY0YTIgMiAwIDAwLTItMkg1em0yLjUgM2ExLjUgMS41IDAgMTAwIDMgMS41IDEuNSAwIDAwMC0zem02LjIwNy4yOTNhMSAxIDAgMDAtMS40MTQgMGwtNiA2YTEgMSAwIDEwMS40MTQgMS40MTRsNi02YTEgMSAwIDAwMC0xLjQxNHpNMTIuNSAxMGExLjUgMS41IDAgMTAwIDMgMS41IDEuNSAwIDAwMC0zelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUmVmcmVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgMmExIDEgMCAwMTEgMXYyLjEwMWE3LjAwMiA3LjAwMiAwIDAxMTEuNjAxIDIuNTY2IDEgMSAwIDExLTEuODg1LjY2NkE1LjAwMiA1LjAwMiAwIDAwNS45OTkgN0g5YTEgMSAwIDAxMCAySDRhMSAxIDAgMDEtMS0xVjNhMSAxIDAgMDExLTF6bS4wMDggOS4wNTdhMSAxIDAgMDExLjI3Ni42MUE1LjAwMiA1LjAwMiAwIDAwMTQuMDAxIDEzSDExYTEgMSAwIDExMC0yaDVhMSAxIDAgMDExIDF2NWExIDEgMCAxMS0yIDB2LTIuMTAxYTcuMDAyIDcuMDAyIDAgMDEtMTEuNjAxLTIuNTY2IDEgMSAwIDAxLjYxLTEuMjc2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUmVwbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjcwNyAzLjI5M2ExIDEgMCAwMTAgMS40MTRMNS40MTQgN0gxMWE3IDcgMCAwMTcgN3YyYTEgMSAwIDExLTIgMHYtMmE1IDUgMCAwMC01LTVINS40MTRsMi4yOTMgMi4yOTNhMSAxIDAgMTEtMS40MTQgMS40MTRsLTQtNGExIDEgMCAwMTAtMS40MTRsNC00YTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVJld2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40NDUgMTQuODMyQTEgMSAwIDAwMTAgMTR2LTIuNzk4bDUuNDQ1IDMuNjNBMSAxIDAgMDAxNyAxNFY2YTEgMSAwIDAwLTEuNTU1LS44MzJMMTAgOC43OThWNmExIDEgMCAwMC0xLjU1NS0uODMybC02IDRhMSAxIDAgMDAwIDEuNjY0bDYgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUnNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDNhMSAxIDAgMDAwIDJjNS41MjMgMCAxMCA0LjQ3NyAxMCAxMGExIDEgMCAxMDIgMEMxNyA4LjM3MyAxMS42MjcgMyA1IDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOWExIDEgMCAwMTEtMSA3IDcgMCAwMTcgNyAxIDEgMCAxMS0yIDAgNSA1IDAgMDAtNS01IDEgMSAwIDAxLTEtMXpNMyAxNWEyIDIgMCAxMTQgMCAyIDIgMCAwMS00IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNhdmVBcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS43MDcgNy4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQgMGwzLTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTMgOC41ODZWNWgzYTIgMiAwIDAxMiAydjVhMiAyIDAgMDEtMiAySDhhMiAyIDAgMDEtMi0yVjdhMiAyIDAgMDEyLTJoM3YzLjU4Nkw5LjcwNyA3LjI5M3pNMTEgM2ExIDEgMCAxMTIgMHYyaC0yVjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOWEyIDIgMCAwMC0yIDJ2NWEyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0ySDRWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43MDcgMTAuMjkzYTEgMSAwIDEwLTEuNDE0IDEuNDE0bDMgM2ExIDEgMCAwMDEuNDE0IDBsMy0zYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDExIDExLjU4NlY2aDVhMiAyIDAgMDEyIDJ2N2EyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJWOGEyIDIgMCAwMTItMmg1djUuNTg2bC0xLjI5My0xLjI5M3pNOSA0YTEgMSAwIDAxMiAwdjJIOVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDJhMSAxIDAgMDExIDF2MS4zMjNsMy45NTQgMS41ODIgMS41OTktLjhhMSAxIDAgMDEuODk0IDEuNzlsLTEuMjMzLjYxNiAxLjczOCA1LjQyYTEgMSAwIDAxLS4yODUgMS4wNUEzLjk4OSAzLjk4OSAwIDAxMTUgMTVhMy45ODkgMy45ODkgMCAwMS0yLjY2Ny0xLjAxOSAxIDEgMCAwMS0uMjg1LTEuMDVsMS43MTUtNS4zNDlMMTEgNi40NzdWMTZoMmExIDEgMCAxMTAgMkg3YTEgMSAwIDExMC0yaDJWNi40NzdMNi4yMzcgNy41ODJsMS43MTUgNS4zNDlhMSAxIDAgMDEtLjI4NSAxLjA1QTMuOTg5IDMuOTg5IDAgMDE1IDE1YTMuOTg5IDMuOTg5IDAgMDEtMi42NjctMS4wMTkgMSAxIDAgMDEtLjI4NS0xLjA1bDEuNzM4LTUuNDItMS4yMzMtLjYxN2ExIDEgMCAwMS44OTQtMS43ODhsMS41OTkuNzk5TDkgNC4zMjNWM2ExIDEgMCAwMTEtMXptLTUgOC4yNzRsLS44MTggMi41NTJjLjI1LjExMi41MjYuMTc0LjgxOC4xNzQuMjkyIDAgLjU2OS0uMDYyLjgxOC0uMTc0TDUgMTAuMjc0em0xMCAwbC0uODE4IDIuNTUyYy4yNS4xMTIuNTI2LjE3NC44MTguMTc0LjI5MiAwIC41NjktLjA2Mi44MTgtLjE3NEwxNSAxMC4yNzR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuNSAyYTMuNSAzLjUgMCAxMDEuNjY1IDYuNThMOC41ODUgMTBsLTEuNDIgMS40MmEzLjUgMy41IDAgMTAxLjQxNCAxLjQxNGw4LjEyOC04LjEyN2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMCA4LjU4NmwtMS40Mi0xLjQyQTMuNSAzLjUgMCAwMDUuNSAyek00IDUuNWExLjUgMS41IDAgMTEzIDAgMS41IDEuNSAwIDAxLTMgMHptMCA5YTEuNSAxLjUgMCAxMTMgMCAxLjUgMS41IDAgMDEtMyAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuODI4IDExLjQxNGExIDEgMCAwMC0xLjQxNCAxLjQxNGwzLjg3OSAzLjg4YTEgMSAwIDAwMS40MTQtMS40MTVsLTMuODc5LTMuODc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTZWFyY2hDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOWEyIDIgMCAxMTQgMCAyIDIgMCAwMS00IDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0xLTEzYTQgNCAwIDAwLTMuNDQ2IDYuMDMybC0yLjI2MSAyLjI2YTEgMSAwIDEwMS40MTQgMS40MTVsMi4yNjEtMi4yNjFBNCA0IDAgMTAxMSA1elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCA0YTQgNCAwIDEwMCA4IDQgNCAwIDAwMC04ek0yIDhhNiA2IDAgMTExMC44OSAzLjQ3Nmw0LjgxNyA0LjgxN2ExIDEgMCAwMS0xLjQxNCAxLjQxNGwtNC44MTYtNC44MTZBNiA2IDAgMDEyIDh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTZWxlY3RvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDNhMSAxIDAgMDEuNzA3LjI5M2wzIDNhMSAxIDAgMDEtMS40MTQgMS40MTRMMTAgNS40MTQgNy43MDcgNy43MDdhMSAxIDAgMDEtMS40MTQtMS40MTRsMy0zQTEgMSAwIDAxMTAgM3ptLTMuNzA3IDkuMjkzYTEgMSAwIDAxMS40MTQgMEwxMCAxNC41ODZsMi4yOTMtMi4yOTNhMSAxIDAgMDExLjQxNCAxLjQxNGwtMyAzYTEgMSAwIDAxLTEuNDE0IDBsLTMtM2ExIDEgMCAwMTAtMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTZXJ2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDVhMiAyIDAgMDEyLTJoMTJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJWNXptMTQgMWExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6TTIgMTNhMiAyIDAgMDEyLTJoMTJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJ2LTJ6bTE0IDFhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDhhMyAzIDAgMTAtMi45NzctMi42M2wtNC45NCAyLjQ3YTMgMyAwIDEwMCA0LjMxOWw0Ljk0IDIuNDdhMyAzIDAgMTAuODk1LTEuNzg5bC00Ljk0LTIuNDdhMy4wMjcgMy4wMjcgMCAwMDAtLjc0bDQuOTQtMi40N0MxMy40NTYgNy42OCAxNC4xOSA4IDE1IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNoaWVsZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMi4xNjYgNC45OTlBMTEuOTU0IDExLjk1NCAwIDAwMTAgMS45NDQgMTEuOTU0IDExLjk1NCAwIDAwMTcuODM0IDVjLjExLjY1LjE2NiAxLjMyLjE2NiAyLjAwMSAwIDUuMjI1LTMuMzQgOS42Ny04IDExLjMxN0M1LjM0IDE2LjY3IDIgMTIuMjI1IDIgN2MwLS42ODIuMDU3LTEuMzUuMTY2LTIuMDAxem0xMS41NDEgMy43MDhhMSAxIDAgMDAtMS40MTQtMS40MTRMOSAxMC41ODYgNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTaGllbGRFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDEuOTQ0QTExLjk1NCAxMS45NTQgMCAwMTIuMTY2IDVDMi4wNTYgNS42NDkgMiA2LjMxOSAyIDdjMCA1LjIyNSAzLjM0IDkuNjcgOCAxMS4zMTdDMTQuNjYgMTYuNjcgMTggMTIuMjI1IDE4IDdjMC0uNjgyLS4wNTctMS4zNS0uMTY2LTIuMDAxQTExLjk1NCAxMS45NTQgMCAwMTEwIDEuOTQ0ek0xMSAxNGExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bTAtN2ExIDEgMCAxMC0yIDB2M2ExIDEgMCAxMDIgMFY3elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2hvcHBpbmdCYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAyYTQgNCAwIDAwLTQgNHYxSDVhMSAxIDAgMDAtLjk5NC44OWwtMSA5QTEgMSAwIDAwNCAxOGgxMmExIDEgMCAwMC45OTQtMS4xMWwtMS05QTEgMSAwIDAwMTUgN2gtMVY2YTQgNCAwIDAwLTQtNHptMiA1VjZhMiAyIDAgMTAtNCAwdjFoNHptLTYgM2ExIDEgMCAxMTIgMCAxIDEgMCAwMS0yIDB6bTctMWExIDEgMCAxMDAgMiAxIDEgMCAwMDAtMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxYTEgMSAwIDAwMCAyaDEuMjJsLjMwNSAxLjIyMmEuOTk3Ljk5NyAwIDAwLjAxLjA0MmwxLjM1OCA1LjQzLS44OTMuODkyQzMuNzQgMTEuODQ2IDQuNjMyIDE0IDYuNDE0IDE0SDE1YTEgMSAwIDAwMC0ySDYuNDE0bDEtMUgxNGExIDEgMCAwMC44OTQtLjU1M2wzLTZBMSAxIDAgMDAxNyAzSDYuMjhsLS4zMS0xLjI0M0ExIDEgMCAwMDUgMUgzek0xNiAxNi41YTEuNSAxLjUgMCAxMS0zIDAgMS41IDEuNSAwIDAxMyAwek02LjUgMThhMS41IDEuNSAwIDEwMC0zIDEuNSAxLjUgMCAwMDAgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU29ydEFzY2VuZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzYTEgMSAwIDAwMCAyaDExYTEgMSAwIDEwMC0ySDN6TTMgN2ExIDEgMCAwMDAgMmg1YTEgMSAwIDAwMC0ySDN6TTMgMTFhMSAxIDAgMTAwIDJoNGExIDEgMCAxMDAtMkgzek0xMyAxNmExIDEgMCAxMDIgMHYtNS41ODZsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNGwtMy0zYTEgMSAwIDAwLTEuNDE0IDBsLTMgM2ExIDEgMCAxMDEuNDE0IDEuNDE0TDEzIDEwLjQxNFYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU29ydERlc2NlbmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2ExIDEgMCAwMDAgMmgxMWExIDEgMCAxMDAtMkgzek0zIDdhMSAxIDAgMDAwIDJoN2ExIDEgMCAxMDAtMkgzek0zIDExYTEgMSAwIDEwMCAyaDRhMSAxIDAgMTAwLTJIM3pNMTUgOGExIDEgMCAxMC0yIDB2NS41ODZsLTEuMjkzLTEuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDMgM2ExIDEgMCAwMDEuNDE0IDBsMy0zYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDE1IDEzLjU4NlY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMmExIDEgMCAwMTEgMXYxaDFhMSAxIDAgMDEwIDJINnYxYTEgMSAwIDAxLTIgMFY2SDNhMSAxIDAgMDEwLTJoMVYzYTEgMSAwIDAxMS0xem0wIDEwYTEgMSAwIDAxMSAxdjFoMWExIDEgMCAxMTAgMkg2djFhMSAxIDAgMTEtMiAwdi0xSDNhMSAxIDAgMTEwLTJoMXYtMWExIDEgMCAwMTEtMXpNMTIgMmExIDEgMCAwMS45NjcuNzQ0TDE0LjE0NiA3LjIgMTcuNSA5LjEzNGExIDEgMCAwMTAgMS43MzJsLTMuMzU0IDEuOTM1LTEuMTggNC40NTVhMSAxIDAgMDEtMS45MzMgMEw5Ljg1NCAxMi44IDYuNSAxMC44NjZhMSAxIDAgMDEwLTEuNzMybDMuMzU0LTEuOTM1IDEuMTgtNC40NTVBMSAxIDAgMDExMiAyelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3BlYWtlcnBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggM2ExIDEgMCAwMC0xLjQ0Ny0uODk0TDguNzYzIDZINWEzIDMgMCAwMDAgNmguMjhsMS43NzEgNS4zMTZBMSAxIDAgMDA4IDE4aDFhMSAxIDAgMDAxLTF2LTQuMzgybDYuNTUzIDMuMjc2QTEgMSAwIDAwMTggMTVWM3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDQ5IDIuOTI3Yy4zLS45MjEgMS42MDMtLjkyMSAxLjkwMiAwbDEuMDcgMy4yOTJhMSAxIDAgMDAuOTUuNjloMy40NjJjLjk2OSAwIDEuMzcxIDEuMjQuNTg4IDEuODFsLTIuOCAyLjAzNGExIDEgMCAwMC0uMzY0IDEuMTE4bDEuMDcgMy4yOTJjLjMuOTIxLS43NTUgMS42ODgtMS41NCAxLjExOGwtMi44LTIuMDM0YTEgMSAwIDAwLTEuMTc1IDBsLTIuOCAyLjAzNGMtLjc4NC41Ny0xLjgzOC0uMTk3LTEuNTM5LTEuMTE4bDEuMDctMy4yOTJhMSAxIDAgMDAtLjM2NC0xLjExOEwyLjk4IDguNzJjLS43ODMtLjU3LS4zOC0xLjgxLjU4OC0xLjgxaDMuNDYxYTEgMSAwIDAwLjk1MS0uNjlsMS4wNy0zLjI5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3RhdHVzT2ZmbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy43MDcgMi4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsNi45MjEgNi45MjJjLjA1LjA2Mi4xMDUuMTE4LjE2OC4xNjdsNi45MSA2LjkxMWExIDEgMCAwMDEuNDE1LTEuNDE0bC0uNjc1LS42NzVhOS4wMDEgOS4wMDEgMCAwMC0uNjY4LTExLjk4MkExIDEgMCAxMDE0Ljk1IDUuMDVhNy4wMDIgNy4wMDIgMCAwMS42NTcgOS4xNDNsLTEuNDM1LTEuNDM1YTUuMDAyIDUuMDAyIDAgMDAtLjYzNi02LjI5NEExIDEgMCAwMDEyLjEyIDcuODhjLjkyNC45MjMgMS4xMiAyLjMuNTg3IDMuNDE1bC0xLjk5Mi0xLjk5MmEuOTIyLjkyMiAwIDAwLS4wMTgtLjAxOGwtNi45OS02Ljk5MXpNMy4yMzggOC4xODdhMSAxIDAgMDAtMS45MzMtLjUxNmMtLjggMy0uMDI1IDYuMzM2IDIuMzMxIDguNjkzYTEgMSAwIDAwMS40MTQtMS40MTUgNi45OTcgNi45OTcgMCAwMS0xLjgxMi02Ljc2MnpNNy40IDExLjVhMSAxIDAgMTAtMS43MyAxYy4yMTQuMzcxLjQ4LjcyLjc5NSAxLjAzNWExIDEgMCAwMDEuNDE0LTEuNDE0Yy0uMTkxLS4xOTEtLjM1LS40LS40NzgtLjYyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3RhdHVzT25saW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNS4wNSAzLjYzNmExIDEgMCAwMTAgMS40MTQgNyA3IDAgMDAwIDkuOSAxIDEgMCAxMS0xLjQxNCAxLjQxNCA5IDkgMCAwMTAtMTIuNzI4IDEgMSAwIDAxMS40MTQgMHptOS45IDBhMSAxIDAgMDExLjQxNCAwIDkgOSAwIDAxMCAxMi43MjggMSAxIDAgMTEtMS40MTQtMS40MTQgNyA3IDAgMDAwLTkuOSAxIDEgMCAwMTAtMS40MTR6TTcuODc5IDYuNDY0YTEgMSAwIDAxMCAxLjQxNCAzIDMgMCAwMDAgNC4yNDMgMSAxIDAgMTEtMS40MTUgMS40MTQgNSA1IDAgMDEwLTcuMDcgMSAxIDAgMDExLjQxNSAwem00LjI0MiAwYTEgMSAwIDAxMS40MTUgMCA1IDUgMCAwMTAgNy4wNzIgMSAxIDAgMDEtMS40MTUtMS40MTUgMyAzIDAgMDAwLTQuMjQyIDEgMSAwIDAxMC0xLjQxNXpNMTAgOWExIDEgMCAwMTEgMXYuMDFhMSAxIDAgMTEtMiAwVjEwYTEgMSAwIDAxMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTggN2ExIDEgMCAwMC0xIDF2NGExIDEgMCAwMDEgMWg0YTEgMSAwIDAwMS0xVjhhMSAxIDAgMDAtMS0xSDh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAyYTEgMSAwIDAxMSAxdjFhMSAxIDAgMTEtMiAwVjNhMSAxIDAgMDExLTF6bTQgOGE0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6bS0uNDY0IDQuOTVsLjcwNy43MDdhMSAxIDAgMDAxLjQxNC0xLjQxNGwtLjcwNy0uNzA3YTEgMSAwIDAwLTEuNDE0IDEuNDE0em0yLjEyLTEwLjYwN2ExIDEgMCAwMTAgMS40MTRsLS43MDYuNzA3YTEgMSAwIDExLTEuNDE0LTEuNDE0bC43MDctLjcwN2ExIDEgMCAwMTEuNDE0IDB6TTE3IDExYTEgMSAwIDEwMC0yaC0xYTEgMSAwIDEwMCAyaDF6bS03IDRhMSAxIDAgMDExIDF2MWExIDEgMCAxMS0yIDB2LTFhMSAxIDAgMDExLTF6TTUuMDUgNi40NjRBMSAxIDAgMTA2LjQ2NSA1LjA1bC0uNzA4LS43MDdhMSAxIDAgMDAtMS40MTQgMS40MTRsLjcwNy43MDd6bTEuNDE0IDguNDg2bC0uNzA3LjcwN2ExIDEgMCAwMS0xLjQxNC0xLjQxNGwuNzA3LS43MDdhMSAxIDAgMDExLjQxNCAxLjQxNHpNNCAxMWExIDEgMCAxMDAtMkgzYTEgMSAwIDAwMCAyaDF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTdXBwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggMTBhOCA4IDAgMTEtMTYgMCA4IDggMCAwMTE2IDB6bS0yIDBjMCAuOTkzLS4yNDEgMS45MjktLjY2OCAyLjc1NGwtMS41MjQtMS41MjVhMy45OTcgMy45OTcgMCAwMC4wNzgtMi4xODNsMS41NjItMS41NjJDMTUuODAyIDguMjQ5IDE2IDkuMSAxNiAxMHptLTUuMTY1IDMuOTEzbDEuNTggMS41OEE1Ljk4IDUuOTggMCAwMTEwIDE2YTUuOTc2IDUuOTc2IDAgMDEtMi41MTYtLjU1MmwxLjU2Mi0xLjU2MmE0LjAwNiA0LjAwNiAwIDAwMS43ODkuMDI3em0tNC42NzctMi43OTZhNC4wMDIgNC4wMDIgMCAwMS0uMDQxLTIuMDhsLS4wOC4wOC0xLjUzLTEuNTMzQTUuOTggNS45OCAwIDAwNCAxMGMwIC45NTQuMjIzIDEuODU2LjYxOSAyLjY1N2wxLjU0LTEuNTR6bTEuMDg4LTYuNDVBNS45NzQgNS45NzQgMCAwMTEwIDRjLjk1NCAwIDEuODU2LjIyMyAyLjY1Ny42MTlsLTEuNTQgMS41NGE0LjAwMiA0LjAwMiAwIDAwLTIuMzQ2LjAzM0w3LjI0NiA0LjY2OHpNMTIgMTBhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3dpdGNoSG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1YTEgMSAwIDEwMCAyaDUuNTg2bC0xLjI5MyAxLjI5M2ExIDEgMCAwMDEuNDE0IDEuNDE0bDMtM2ExIDEgMCAwMDAtMS40MTRsLTMtM2ExIDEgMCAxMC0xLjQxNCAxLjQxNEwxMy41ODYgNUg4ek0xMiAxNWExIDEgMCAxMDAtMkg2LjQxNGwxLjI5My0xLjI5M2ExIDEgMCAxMC0xLjQxNC0xLjQxNGwtMyAzYTEgMSAwIDAwMCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNC0xLjQxNEw2LjQxNCAxNUgxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3dpdGNoVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTJhMSAxIDAgMTAyIDBWNi40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNGwtMy0zYTEgMSAwIDAwLTEuNDE0IDBsLTMgM2ExIDEgMCAwMDEuNDE0IDEuNDE0TDUgNi40MTRWMTJ6TTE1IDhhMSAxIDAgMTAtMiAwdjUuNTg2bC0xLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNCAwbDMtM2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxNSAxMy41ODZWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDRhMyAzIDAgMDAtMyAzdjZhMyAzIDAgMDAzIDNoMTBhMyAzIDAgMDAzLTNWN2EzIDMgMCAwMC0zLTNINXptLTEgOXYtMWg1djJINWExIDEgMCAwMS0xLTF6bTcgMWg0YTEgMSAwIDAwMS0xdi0xaC01djJ6bTAtNGg1VjhoLTV2MnpNOSA4SDR2Mmg1Vjh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNy43MDcgOS4yOTNhMSAxIDAgMDEwIDEuNDE0bC03IDdhMSAxIDAgMDEtMS40MTQgMGwtNy03QS45OTcuOTk3IDAgMDEyIDEwVjVhMyAzIDAgMDEzLTNoNWMuMjU2IDAgLjUxMi4wOTguNzA3LjI5M2w3IDd6TTUgNmExIDEgMCAxMDAtMiAxIDEgMCAwMDAgMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVRlbXBsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDRhMSAxIDAgMDExLTFoMTJhMSAxIDAgMDExIDF2MmExIDEgMCAwMS0xIDFINGExIDEgMCAwMS0xLTFWNHpNMyAxMGExIDEgMCAwMTEtMWg2YTEgMSAwIDAxMSAxdjZhMSAxIDAgMDEtMSAxSDRhMSAxIDAgMDEtMS0xdi02ek0xNCA5YTEgMSAwIDAwLTEgMXY2YTEgMSAwIDAwMSAxaDJhMSAxIDAgMDAxLTF2LTZhMSAxIDAgMDAtMS0xaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUZXJtaW5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgNWEyIDIgMCAwMTItMmgxMmEyIDIgMCAwMTIgMnYxMGEyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJWNXptMy4yOTMgMS4yOTNhMSAxIDAgMDExLjQxNCAwbDMgM2ExIDEgMCAwMTAgMS40MTRsLTMgM2ExIDEgMCAwMS0xLjQxNC0xLjQxNEw3LjU4NiAxMCA1LjI5MyA3LjcwN2ExIDEgMCAwMTAtMS40MTR6TTExIDEyYTEgMSAwIDEwMCAyaDNhMSAxIDAgMTAwLTJoLTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUaHVtYkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDkuNWExLjUgMS41IDAgMTEtMyAwdi02YTEuNSAxLjUgMCAwMTMgMHY2ek0xNCA5LjY2N3YtNS40M2EyIDIgMCAwMC0xLjEwNS0xLjc5bC0uMDUtLjAyNUE0IDQgMCAwMDExLjA1NSAySDUuNjRhMiAyIDAgMDAtMS45NjIgMS42MDhsLTEuMiA2QTIgMiAwIDAwNC40NCAxMkg4djRhMiAyIDAgMDAyIDIgMSAxIDAgMDAxLTF2LS42NjdhNCA0IDAgMDEuOC0yLjRsMS40LTEuODY2YTQgNCAwIDAwLjgtMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUaHVtYlVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEwLjVhMS41IDEuNSAwIDExMyAwdjZhMS41IDEuNSAwIDAxLTMgMHYtNnpNNiAxMC4zMzN2NS40M2EyIDIgMCAwMDEuMTA2IDEuNzlsLjA1LjAyNUE0IDQgMCAwMDguOTQzIDE4aDUuNDE2YTIgMiAwIDAwMS45NjItMS42MDhsMS4yLTZBMiAyIDAgMDAxNS41NiA4SDEyVjRhMiAyIDAgMDAtMi0yIDEgMSAwIDAwLTEgMXYuNjY3YTQgNCAwIDAxLS44IDIuNEw2LjggNy45MzNhNCA0IDAgMDAtLjggMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUaWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNmEyIDIgMCAwMTItMmgxMmEyIDIgMCAwMTIgMnYyYTIgMiAwIDEwMCA0djJhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0ydi0yYTIgMiAwIDEwMC00VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVRyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcgMmExIDEgMCAwMTEgMXYxaDNhMSAxIDAgMTEwIDJIOS41NzhhMTguODcgMTguODcgMCAwMS0xLjcyNCA0Ljc4Yy4yOS4zNTQuNTk2LjY5Ni45MTQgMS4wMjZhMSAxIDAgMTEtMS40NCAxLjM4OWMtLjE4OC0uMTk2LS4zNzMtLjM5Ni0uNTU0LS42YTE5LjA5OCAxOS4wOTggMCAwMS0zLjEwNyAzLjU2NyAxIDEgMCAwMS0xLjMzNC0xLjQ5IDE3LjA4NyAxNy4wODcgMCAwMDMuMTMtMy43MzMgMTguOTkyIDE4Ljk5MiAwIDAxLTEuNDg3LTIuNDk0IDEgMSAwIDExMS43OS0uODljLjIzNC40Ny40ODkuOTI4Ljc2NCAxLjM3Mi40MTctLjkzNC43NTItMS45MTMuOTk3LTIuOTI3SDNhMSAxIDAgMTEwLTJoM1YzYTEgMSAwIDAxMS0xem02IDZhMSAxIDAgMDEuODk0LjU1M2wyLjk5MSA1Ljk4MmEuODY5Ljg2OSAwIDAxLjAyLjAzN2wuOTkgMS45OGExIDEgMCAxMS0xLjc5Ljg5NUwxNS4zODMgMTZoLTQuNzY0bC0uNzI0IDEuNDQ3YTEgMSAwIDExLTEuNzg4LS44OTRsLjk5LTEuOTguMDE5LS4wMzggMi45OS01Ljk4MkExIDEgMCAwMTEzIDh6bS0xLjM4MiA2aDIuNzY0TDEzIDExLjIzNiAxMS42MTggMTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkgMmExIDEgMCAwMC0uODk0LjU1M0w3LjM4MiA0SDRhMSAxIDAgMDAwIDJ2MTBhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY2YTEgMSAwIDEwMC0yaC0zLjM4MmwtLjcyNC0xLjQ0N0ExIDEgMCAwMDExIDJIOXpNNyA4YTEgMSAwIDAxMiAwdjZhMSAxIDAgMTEtMiAwVjh6bTUtMWExIDEgMCAwMC0xIDF2NmExIDEgMCAxMDIgMFY4YTEgMSAwIDAwLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVRyZW5kaW5nRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyIDEzYTEgMSAwIDEwMCAyaDVhMSAxIDAgMDAxLTFWOWExIDEgMCAxMC0yIDB2Mi41ODZsLTQuMjkzLTQuMjkzYTEgMSAwIDAwLTEuNDE0IDBMOCA5LjU4NiAzLjcwNyA1LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGw1IDVhMSAxIDAgMDAxLjQxNCAwTDExIDkuNDE0IDE0LjU4NiAxM0gxMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVRyZW5kaW5nVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMiA3YTEgMSAwIDExMC0yaDVhMSAxIDAgMDExIDF2NWExIDEgMCAxMS0yIDBWOC40MTRsLTQuMjkzIDQuMjkzYTEgMSAwIDAxLTEuNDE0IDBMOCAxMC40MTRsLTQuMjkzIDQuMjkzYTEgMSAwIDAxLTEuNDE0LTEuNDE0bDUtNWExIDEgMCAwMTEuNDE0IDBMMTEgMTAuNTg2IDE0LjU4NiA3SDEyelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVHJ1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTYuNWExLjUgMS41IDAgMTEtMyAwIDEuNSAxLjUgMCAwMTMgMHpNMTUgMTYuNWExLjUgMS41IDAgMTEtMyAwIDEuNSAxLjUgMCAwMTMgMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0YTEgMSAwIDAwLTEgMXYxMGExIDEgMCAwMDEgMWgxLjA1YTIuNSAyLjUgMCAwMTQuOSAwSDEwYTEgMSAwIDAwMS0xVjVhMSAxIDAgMDAtMS0xSDN6TTE0IDdhMSAxIDAgMDAtMSAxdjYuMDVBMi41IDIuNSAwIDAxMTUuOTUgMTZIMTdhMSAxIDAgMDAxLTF2LTVhMSAxIDAgMDAtLjI5My0uNzA3bC0yLTJBMSAxIDAgMDAxNSA3aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDE3YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xek02LjI5MyA2LjcwN2ExIDEgMCAwMTAtMS40MTRsMy0zYTEgMSAwIDAxMS40MTQgMGwzIDNhMSAxIDAgMDEtMS40MTQgMS40MTRMMTEgNS40MTRWMTNhMSAxIDAgMTEtMiAwVjUuNDE0TDcuNzA3IDYuNzA3YTEgMSAwIDAxLTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlVc2VyQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDlhMyAzIDAgMTAwLTYgMyAzIDAgMDAwIDZ6TTggMTFhNiA2IDAgMDE2IDZIMmE2IDYgMCAwMTYtNnpNMTYgN2ExIDEgMCAxMC0yIDB2MWgtMWExIDEgMCAxMDAgMmgxdjFhMSAxIDAgMTAyIDB2LTFoMWExIDEgMCAxMDAtMmgtMVY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlVc2VyQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggMTBhOCA4IDAgMTEtMTYgMCA4IDggMCAwMTE2IDB6bS02LTNhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwem0tMiA0YTUgNSAwIDAwLTQuNTQ2IDIuOTE2QTUuOTg2IDUuOTg2IDAgMDAxMCAxNmE1Ljk4NiA1Ljk4NiAwIDAwNC41NDYtMi4wODRBNSA1IDAgMDAxMCAxMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVVzZXJHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNmEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6TTE4IDhhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwek0xNCAxNWE0IDQgMCAwMC04IDB2M2g4di0zek02IDhhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwek0xNiAxOHYtM2E1Ljk3MiA1Ljk3MiAwIDAwLS43NS0yLjkwNkEzLjAwNSAzLjAwNSAwIDAxMTkgMTV2M2gtM3pNNC43NSAxMi4wOTRBNS45NzMgNS45NzMgMCAwMDQgMTV2M0gxdi0zYTMgMyAwIDAxMy43NS0yLjkwNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXNlclJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNmEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6TTE0IDE3YTYgNiAwIDAwLTEyIDBoMTJ6TTEzIDhhMSAxIDAgMTAwIDJoNGExIDEgMCAxMDAtMmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDlhMyAzIDAgMTAwLTYgMyAzIDAgMDAwIDZ6bS03IDlhNyA3IDAgMTExNCAwSDN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlVc2VycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2YTMgMyAwIDExLTYgMCAzIDMgMCAwMTYgMHpNMTcgNmEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6TTEyLjkzIDE3Yy4wNDYtLjMyNy4wNy0uNjYuMDctMWE2Ljk3IDYuOTcgMCAwMC0xLjUtNC4zM0E1IDUgMCAwMTE5IDE2djFoLTYuMDd6TTYgMTFhNSA1IDAgMDE1IDV2MUgxdi0xYTUgNSAwIDAxNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlWYXJpYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQuNjQ5IDMuMDg0QTEgMSAwIDAxNS4xNjMgNC40IDEzLjk1IDEzLjk1IDAgMDA0IDEwYzAgMS45OTMuNDE2IDMuODg2IDEuMTY0IDUuNmExIDEgMCAwMS0xLjgzMi44QTE1Ljk1IDE1Ljk1IDAgMDEyIDEwYzAtMi4yNzQuNDc1LTQuNDQgMS4zMzItNi40YTEgMSAwIDAxMS4zMTctLjUxNnpNMTIuOTYgN2EzIDMgMCAwMC0yLjM0MiAxLjEyNmwtLjMyOC40MS0uMTExLS4yNzlBMiAyIDAgMDA4LjMyMyA3SDhhMSAxIDAgMDAwIDJoLjMyM2wuNTMyIDEuMzMtMS4wMzUgMS4yOTVhMSAxIDAgMDEtLjc4MS4zNzVIN2ExIDEgMCAxMDAgMmguMDM5YTMgMyAwIDAwMi4zNDItMS4xMjZsLjMyOC0uNDEuMTExLjI3OUEyIDIgMCAwMDExLjY3NyAxNEgxMmExIDEgMCAxMDAtMmgtLjMyM2wtLjUzMi0xLjMzIDEuMDM1LTEuMjk1QTEgMSAwIDAxMTIuOTYxIDlIMTNhMSAxIDAgMTAwLTJoLS4wMzl6bTEuODc0LTIuNmExIDEgMCAwMTEuODMzLS44QTE1Ljk1IDE1Ljk1IDAgMDExOCAxMGMwIDIuMjc0LS40NzUgNC40NC0xLjMzMiA2LjRhMSAxIDAgMTEtMS44MzItLjhBMTMuOTQ5IDEzLjk0OSAwIDAwMTYgMTBjMC0xLjk5My0uNDE2LTMuODg2LTEuMTY1LTUuNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVZpZGVvQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZhMiAyIDAgMDEyLTJoNmEyIDIgMCAwMTIgMnY4YTIgMiAwIDAxLTIgMkg0YTIgMiAwIDAxLTItMlY2ek0xNC41NTMgNy4xMDZBMSAxIDAgMDAxNCA4djRhMSAxIDAgMDAuNTUzLjg5NGwyIDFBMSAxIDAgMDAxOCAxM1Y3YTEgMSAwIDAwLTEuNDQ3LS44OTRsLTIgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmlld0JvYXJkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0YTEgMSAwIDAxMS0xaDJhMSAxIDAgMDExIDF2MTJhMSAxIDAgMDEtMSAxSDNhMSAxIDAgMDEtMS0xVjR6TTggNGExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjEyYTEgMSAwIDAxLTEgMUg5YTEgMSAwIDAxLTEtMVY0ek0xNSAzYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgyYTEgMSAwIDAwMS0xVjRhMSAxIDAgMDAtMS0xaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlWaWV3R3JpZEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzYTIgMiAwIDAwLTIgMnYyYTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJINXpNNSAxMWEyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0ydi0yYTIgMiAwIDAwLTItMkg1ek0xMSA1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJoLTJhMiAyIDAgMDEtMi0yVjV6TTE0IDExYTEgMSAwIDAxMSAxdjFoMWExIDEgMCAxMTAgMmgtMXYxYTEgMSAwIDExLTIgMHYtMWgtMWExIDEgMCAxMTAtMmgxdi0xYTEgMSAwIDAxMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlWaWV3R3JpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzYTIgMiAwIDAwLTIgMnYyYTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJINXpNNSAxMWEyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0ydi0yYTIgMiAwIDAwLTItMkg1ek0xMSA1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJoLTJhMiAyIDAgMDEtMi0yVjV6TTExIDEzYTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJoLTJhMiAyIDAgMDEtMi0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlWaWV3TGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgNGExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXptMCA0YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xem0wIDRhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6bTAgNGExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVZvbHVtZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkuMzgzIDMuMDc2QTEgMSAwIDAxMTAgNHYxMmExIDEgMCAwMS0xLjcwNy43MDdMNC41ODYgMTNIMmExIDEgMCAwMS0xLTFWOGExIDEgMCAwMTEtMWgyLjU4NmwzLjcwNy0zLjcwN2ExIDEgMCAwMTEuMDktLjIxN3pNMTIuMjkzIDcuMjkzYTEgMSAwIDAxMS40MTQgMEwxNSA4LjU4NmwxLjI5My0xLjI5M2ExIDEgMCAxMTEuNDE0IDEuNDE0TDE2LjQxNCAxMGwxLjI5MyAxLjI5M2ExIDEgMCAwMS0xLjQxNCAxLjQxNEwxNSAxMS40MTRsLTEuMjkzIDEuMjkzYTEgMSAwIDAxLTEuNDE0LTEuNDE0TDEzLjU4NiAxMGwtMS4yOTMtMS4yOTNhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVm9sdW1lVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk05LjM4MyAzLjA3NkExIDEgMCAwMTEwIDR2MTJhMSAxIDAgMDEtMS43MDcuNzA3TDQuNTg2IDEzSDJhMSAxIDAgMDEtMS0xVjhhMSAxIDAgMDExLTFoMi41ODZsMy43MDctMy43MDdhMSAxIDAgMDExLjA5LS4yMTd6TTE0LjY1NyAyLjkyOWExIDEgMCAwMTEuNDE0IDBBOS45NzIgOS45NzIgMCAwMTE5IDEwYTkuOTcyIDkuOTcyIDAgMDEtMi45MjkgNy4wNzEgMSAxIDAgMDEtMS40MTQtMS40MTRBNy45NzEgNy45NzEgMCAwMDE3IDEwYzAtMi4yMS0uODk0LTQuMjA4LTIuMzQzLTUuNjU3YTEgMSAwIDAxMC0xLjQxNHptLTIuODI5IDIuODI4YTEgMSAwIDAxMS40MTUgMEE1Ljk4MyA1Ljk4MyAwIDAxMTUgMTBhNS45ODQgNS45ODQgMCAwMS0xLjc1NyA0LjI0MyAxIDEgMCAwMS0xLjQxNS0xLjQxNUEzLjk4NCAzLjk4NCAwIDAwMTMgMTBhMy45ODMgMy45ODMgMCAwMC0xLjE3Mi0yLjgyOCAxIDEgMCAwMTAtMS40MTV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlXaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTcuNzc4IDguMjIyYy00LjI5Ni00LjI5Ni0xMS4yNi00LjI5Ni0xNS41NTYgMEExIDEgMCAwMS44MDggNi44MDhjNS4wNzYtNS4wNzcgMTMuMzA4LTUuMDc3IDE4LjM4NCAwYTEgMSAwIDAxLTEuNDE0IDEuNDE0ek0xNC45NSAxMS4wNWE3IDcgMCAwMC05LjkgMCAxIDEgMCAwMS0xLjQxNC0xLjQxNCA5IDkgMCAwMTEyLjcyOCAwIDEgMSAwIDAxLTEuNDE0IDEuNDE0ek0xMi4xMiAxMy44OGEzIDMgMCAwMC00LjI0MiAwIDEgMSAwIDAxLTEuNDE1LTEuNDE1IDUgNSAwIDAxNy4wNzIgMCAxIDEgMCAwMS0xLjQxNSAxLjQxNXpNOSAxNmExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIMTBhMSAxIDAgMDEtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpWENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTguNzA3IDcuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0TDguNTg2IDEwbC0xLjI5MyAxLjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDEwIDExLjQxNGwxLjI5MyAxLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0TDExLjQxNCAxMGwxLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMCA4LjU4NiA4LjcwNyA3LjI5M3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjI5MyA0LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTAgOC41ODZsNC4yOTMtNC4yOTNhMSAxIDAgMTExLjQxNCAxLjQxNEwxMS40MTQgMTBsNC4yOTMgNC4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRMMTAgMTEuNDE0bC00LjI5MyA0LjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNEw4LjU4NiAxMCA0LjI5MyA1LjcwN2ExIDEgMCAwMTAtMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlab29tSW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgOGExIDEgMCAwMTEtMWgxVjZhMSAxIDAgMDEyIDB2MWgxYTEgMSAwIDExMCAySDl2MWExIDEgMCAxMS0yIDBWOUg2YTEgMSAwIDAxLTEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgOGE2IDYgMCAxMTEwLjg5IDMuNDc2bDQuODE3IDQuODE3YTEgMSAwIDAxLTEuNDE0IDEuNDE0bC00LjgxNi00LjgxNkE2IDYgMCAwMTIgOHptNi00YTQgNCAwIDEwMCA4IDQgNCAwIDAwMC04elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpWm9vbU91dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggNGE0IDQgMCAxMDAgOCA0IDQgMCAwMDAtOHpNMiA4YTYgNiAwIDExMTAuODkgMy40NzZsNC44MTcgNC44MTdhMSAxIDAgMDEtMS40MTQgMS40MTRsLTQuODE2LTQuODE2QTYgNiAwIDAxMiA4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgOGExIDEgMCAwMTEtMWg0YTEgMSAwIDExMCAySDZhMSAxIDAgMDEtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFjYWRlbWljQ2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGw5LTUtOS01LTkgNSA5IDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0bDYuMTYtMy40MjJhMTIuMDgzIDEyLjA4MyAwIDAxLjY2NSA2LjQ3OUExMS45NTIgMTEuOTUyIDAgMDAxMiAyMC4wNTVhMTEuOTUyIDExLjk1MiAwIDAwLTYuODI0LTIuOTk4IDEyLjA3OCAxMi4wNzggMCAwMS42NjUtNi40NzlMMTIgMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDE0bDktNS05LTUtOSA1IDkgNXptMCAwbDYuMTYtMy40MjJhMTIuMDgzIDEyLjA4MyAwIDAxLjY2NSA2LjQ3OUExMS45NTIgMTEuOTUyIDAgMDAxMiAyMC4wNTVhMTEuOTUyIDExLjk1MiAwIDAwLTYuODI0LTIuOTk4IDEyLjA3OCAxMi4wNzggMCAwMS42NjUtNi40NzlMMTIgMTR6bS00IDZ2LTcuNWw0LTIuMjIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBZGp1c3RtZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgNlY0bTAgMmEyIDIgMCAxMDAgNG0wLTRhMiAyIDAgMTEwIDRtLTYgOGEyIDIgMCAxMDAtNG0wIDRhMiAyIDAgMTEwLTRtMCA0djJtMC02VjRtNiA2djEwbTYtMmEyIDIgMCAxMDAtNG0wIDRhMiAyIDAgMTEwLTRtMCA0djJtMC02VjRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFubm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgOGgxME03IDEyaDRtMSA4bC00LTRINWEyIDIgMCAwMS0yLTJWNmEyIDIgMCAwMTItMmgxNGEyIDIgMCAwMTIgMnY4YTIgMiAwIDAxLTIgMmgtM2wtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNSA4aDE0TTUgOGEyIDIgMCAxMTAtNGgxNGEyIDIgMCAxMTAgNE01IDh2MTBhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJWOG0tOSA0aDRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93Q2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgMTNsLTMgM20wIDBsLTMtM20zIDNWOG0wIDEzYTkgOSAwIDExMC0xOCA5IDkgMCAwMTAgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0NpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDE1bC0zLTNtMCAwbDMtM20tMyAzaDhNMyAxMmE5IDkgMCAxMTE4IDAgOSA5IDAgMDEtMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93Q2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDlsMyAzbTAgMGwtMyAzbTMtM0g4bTEzIDBhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0NpcmNsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDExbDMtM20wIDBsMyAzbS0zLTN2OG0wLTEzYTkgOSAwIDExMCAxOCA5IDkgMCAwMTAtMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDE0bC03IDdtMCAwbC03LTdtNyA3VjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgMTlsLTctN20wIDBsNy03bS03IDdoMThcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93TmFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgMTdsLTQgNG0wIDBsLTQtNG00IDRWM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dOYXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDE2bC00LTRtMCAwbDQtNG0tNCA0aDE4XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd05hcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNyA4bDQgNG0wIDBsLTQgNG00LTRIM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dOYXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCA3bDQtNG0wIDBsNCA0bS00LTR2MThcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE0IDVsNyA3bTAgMGwtNyA3bTctN0gzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd1NtRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMTNsLTUgNW0wIDBsLTUtNW01IDVWNlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dTbUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDE3bC01LTVtMCAwbDUtNW0tNSA1aDEyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd1NtUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDdsNSA1bTAgMGwtNSA1bTUtNUg2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd1NtVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgMTFsNS01bTAgMGw1IDVtLTUtNXYxMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNSAxMGw3LTdtMCAwbDcgN20tNy03djE4XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd3NFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgOFY0bTAgMGg0TTQgNGw1IDVtMTEtMVY0bTAgMGgtNG00IDBsLTUgNU00IDE2djRtMCAwaDRtLTQgMGw1LTVtMTEgNWwtNS01bTUgNXYtNG0wIDRoLTRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUF0U3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiAxMmE0IDQgMCAxMC04IDAgNCA0IDAgMDA4IDB6bTAgMHYxLjVhMi41IDIuNSAwIDAwNSAwVjEyYTkgOSAwIDEwLTkgOW00LjUtMS4yMDZhOC45NTkgOC45NTkgMCAwMS00LjUgMS4yMDdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJhY2tzcGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgMTRsMi0ybTAgMGwyLTJtLTIgMmwtMi0ybTIgMmwyIDJNMyAxMmw2LjQxNCA2LjQxNGEyIDIgMCAwMDEuNDE0LjU4NkgxOWEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtOC4xNzJhMiAyIDAgMDAtMS40MTQuNTg2TDMgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVCYWRnZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDEybDIgMiA0LTRNNy44MzUgNC42OTdhMy40MiAzLjQyIDAgMDAxLjk0Ni0uODA2IDMuNDIgMy40MiAwIDAxNC40MzggMCAzLjQyIDMuNDIgMCAwMDEuOTQ2LjgwNiAzLjQyIDMuNDIgMCAwMTMuMTM4IDMuMTM4IDMuNDIgMy40MiAwIDAwLjgwNiAxLjk0NiAzLjQyIDMuNDIgMCAwMTAgNC40MzggMy40MiAzLjQyIDAgMDAtLjgwNiAxLjk0NiAzLjQyIDMuNDIgMCAwMS0zLjEzOCAzLjEzOCAzLjQyIDMuNDIgMCAwMC0xLjk0Ni44MDYgMy40MiAzLjQyIDAgMDEtNC40MzggMCAzLjQyIDMuNDIgMCAwMC0xLjk0Ni0uODA2IDMuNDIgMy40MiAwIDAxLTMuMTM4LTMuMTM4IDMuNDIgMy40MiAwIDAwLS44MDYtMS45NDYgMy40MiAzLjQyIDAgMDEwLTQuNDM4IDMuNDIgMy40MiAwIDAwLjgwNi0xLjk0NiAzLjQyIDMuNDIgMCAwMTMuMTM4LTMuMTM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOC4zNjQgMTguMzY0QTkgOSAwIDAwNS42MzYgNS42MzZtMTIuNzI4IDEyLjcyOEE5IDkgMCAwMTUuNjM2IDUuNjM2bTEyLjcyOCAxMi43MjhMNS42MzYgNS42MzZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJlYWtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTkuNDI4IDE1LjQyOGEyIDIgMCAwMC0xLjAyMi0uNTQ3bC0yLjM4Ny0uNDc3YTYgNiAwIDAwLTMuODYuNTE3bC0uMzE4LjE1OGE2IDYgMCAwMS0zLjg2LjUxN0w2LjA1IDE1LjIxYTIgMiAwIDAwLTEuODA2LjU0N004IDRoOGwtMSAxdjUuMTcyYTIgMiAwIDAwLjU4NiAxLjQxNGw1IDVjMS4yNiAxLjI2LjM2NyAzLjQxNC0xLjQxNSAzLjQxNEg0LjgyOGMtMS43ODIgMC0yLjY3NC0yLjE1NC0xLjQxNC0zLjQxNGw1LTVBMiAyIDAgMDA5IDEwLjE3MlY1TDggNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDE3aDVsLTEuNDA1LTEuNDA1QTIuMDMyIDIuMDMyIDAgMDExOCAxNC4xNThWMTFhNi4wMDIgNi4wMDIgMCAwMC00LTUuNjU5VjVhMiAyIDAgMTAtNCAwdi4zNDFDNy42NyA2LjE2NSA2IDguMzg4IDYgMTF2My4xNTljMCAuNTM4LS4yMTQgMS4wNTUtLjU5NSAxLjQzNkw0IDE3aDVtNiAwdjFhMyAzIDAgMTEtNiAwdi0xbTYgMEg5XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVCb29rT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgNi4yNTN2MTNtMC0xM0MxMC44MzIgNS40NzcgOS4yNDYgNSA3LjUgNVM0LjE2OCA1LjQ3NyAzIDYuMjUzdjEzQzQuMTY4IDE4LjQ3NyA1Ljc1NCAxOCA3LjUgMThzMy4zMzIuNDc3IDQuNSAxLjI1M20wLTEzQzEzLjE2OCA1LjQ3NyAxNC43NTQgNSAxNi41IDVjMS43NDcgMCAzLjMzMi40NzcgNC41IDEuMjUzdjEzQzE5LjgzMiAxOC40NzcgMTguMjQ3IDE4IDE2LjUgMThjLTEuNzQ2IDAtMy4zMzIuNDc3LTQuNSAxLjI1M1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQm9va21hcmtBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE2IDR2MTJsLTQtMi00IDJWNE02IDIwaDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgNWEyIDIgMCAwMTItMmgxMGEyIDIgMCAwMTIgMnYxNmwtNy0zLjVMNSAyMVY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQnJpZWZjYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAxMy4yNTVBMjMuOTMxIDIzLjkzMSAwIDAxMTIgMTVjLTMuMTgzIDAtNi4yMi0uNjItOS0xLjc0NU0xNiA2VjRhMiAyIDAgMDAtMi0yaC00YTIgMiAwIDAwLTIgMnYybTQgNmguMDFNNSAyMGgxNGEyIDIgMCAwMDItMlY4YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIxIDE1LjU0NmMtLjUyMyAwLTEuMDQ2LjE1MS0xLjUuNDU0YTIuNzA0IDIuNzA0IDAgMDEtMyAwIDIuNzA0IDIuNzA0IDAgMDAtMyAwIDIuNzA0IDIuNzA0IDAgMDEtMyAwIDIuNzA0IDIuNzA0IDAgMDAtMyAwIDIuNzA0IDIuNzA0IDAgMDEtMyAwIDIuNzAxIDIuNzAxIDAgMDAtMS41LS40NTRNOSA2djJtMy0ydjJtMy0ydjJNOSAzaC4wMU0xMiAzaC4wMU0xNSAzaC4wMU0yMSAyMXYtN2EyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2N2gxOHptLTMtOXYtMmEyIDIgMCAwMC0yLTJIOGEyIDIgMCAwMC0yIDJ2MmgxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNhbGN1bGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgN2g2bTAgMTB2LTNtLTMgM2guMDFNOSAxN2guMDFNOSAxNGguMDFNMTIgMTRoLjAxTTE1IDExaC4wMU0xMiAxMWguMDFNOSAxMWguMDFNNyAyMWgxMGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMkg3YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDdWM204IDRWM20tOSA4aDEwTTUgMjFoMTRhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgOWEyIDIgMCAwMTItMmguOTNhMiAyIDAgMDAxLjY2NC0uODlsLjgxMi0xLjIyQTIgMiAwIDAxMTAuMDcgNGgzLjg2YTIgMiAwIDAxMS42NjQuODlsLjgxMiAxLjIyQTIgMiAwIDAwMTguMDcgN0gxOWEyIDIgMCAwMTIgMnY5YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMlY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxM2EzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNyA5VjdhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJoMm0yIDRoMTBhMiAyIDAgMDAyLTJ2LTZhMiAyIDAgMDAtMi0ySDlhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJ6bTctNWEyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGFydEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxOXYtNmEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2NmEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yem0wIDBWOWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjEwbS02IDBhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMm0wIDBWNWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjE0YTIgMiAwIDAxLTIgMmgtMmEyIDIgMCAwMS0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGFydFBpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgMy4wNTVBOS4wMDEgOS4wMDEgMCAxMDIwLjk0NSAxM0gxMVYzLjA1NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjAuNDg4IDlIMTVWMy41MTJBOS4wMjUgOS4wMjUgMCAwMTIwLjQ4OCA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhcnRTcXVhcmVCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE2IDh2OG0tNC01djVtLTQtMnYybS0yIDRoMTJhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGF0QWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgOGgyYTIgMiAwIDAxMiAydjZhMiAyIDAgMDEtMiAyaC0ydjRsLTQtNEg5YTEuOTk0IDEuOTk0IDAgMDEtMS40MTQtLjU4Nm0wIDBMMTEgMTRoNGEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyaDJ2NGwuNTg2LS41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGF0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDEwaC4wMU0xMiAxMGguMDFNMTYgMTBoLjAxTTkgMTZINWEyIDIgMCAwMS0yLTJWNmEyIDIgMCAwMTItMmgxNGEyIDIgMCAwMTIgMnY4YTIgMiAwIDAxLTIgMmgtNWwtNSA1di01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCAxMmguMDFNMTIgMTJoLjAxTTE2IDEyaC4wMU0yMSAxMmMwIDQuNDE4LTQuMDMgOC05IDhhOS44NjMgOS44NjMgMCAwMS00LjI1NS0uOTQ5TDMgMjBsMS4zOTUtMy43MkMzLjUxMiAxNS4wNDIgMyAxMy41NzQgMyAxMmMwLTQuNDE4IDQuMDMtOCA5LThzOSAzLjU4MiA5IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMmwyIDIgNC00bTYgMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDEzbDQgNEwxOSA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uRG91YmxlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTkgMTNsLTcgNy03LTdtMTQtOGwtNyA3LTctN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hldnJvbkRvdWJsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDE5bC03LTcgNy03bTggMTRsLTctNyA3LTdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoZXZyb25Eb3VibGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTMgNWw3IDctNyA3TTUgNWw3IDctNyA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uRG91YmxlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTFsNy03IDcgN001IDE5bDctNyA3IDdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoZXZyb25Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOSA5bC03IDctNy03XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgMTlsLTctNyA3LTdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoZXZyb25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSA1bDcgNy03IDdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoZXZyb25VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNSAxNWw3LTcgNyA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDN2Mm02LTJ2Mk05IDE5djJtNi0ydjJNNSA5SDNtMiA2SDNtMTgtNmgtMm0yIDZoLTJNNyAxOWgxMGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMkg3YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMnpNOSA5aDZ2Nkg5Vjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDbGlwYm9hcmRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSA1SDdhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0yVjdhMiAyIDAgMDAtMi0yaC0yTTkgNWEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yTTkgNWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAybS02IDlsMiAyIDQtNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2xpcGJvYXJkQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCA1SDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0ydi0xTTggNWEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yTTggNWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAybTAgMGgyYTIgMiAwIDAxMiAydjNtMiA0SDEwbTAgMGwzLTNtLTMgM2wzIDNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsaXBib2FyZExpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgNUg3YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMk05IDVhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMk05IDVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMm0tMyA3aDNtLTMgNGgzbS02LTRoLjAxTTkgMTZoLjAxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgNUg3YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMk05IDVhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMk05IDVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDh2NGwzIDNtNi0zYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2xvdWREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyAxNmE0IDQgMCAwMS0uODgtNy45MDNBNSA1IDAgMTExNS45IDZMMTYgNmE1IDUgMCAwMTEgOS45TTkgMTlsMyAzbTAgMGwzLTNtLTMgM1YxMFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2xvdWRVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgMTZhNCA0IDAgMDEtLjg4LTcuOTAzQTUgNSAwIDExMTUuOSA2TDE2IDZhNSA1IDAgMDExIDkuOU0xNSAxM2wtMy0zbTAgMGwtMyAzbTMtM3YxMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgMTVhNCA0IDAgMDA0IDRoOWE1IDUgMCAxMC0uMS05Ljk5OSA1LjAwMiA1LjAwMiAwIDEwLTkuNzggMi4wOTZBNC4wMDEgNC4wMDEgMCAwMDMgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMCAyMGw0LTE2bTQgNGw0IDQtNCA0TTYgMTZsLTQtNCA0LTRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAuMzI1IDQuMzE3Yy40MjYtMS43NTYgMi45MjQtMS43NTYgMy4zNSAwYTEuNzI0IDEuNzI0IDAgMDAyLjU3MyAxLjA2NmMxLjU0My0uOTQgMy4zMS44MjYgMi4zNyAyLjM3YTEuNzI0IDEuNzI0IDAgMDAxLjA2NSAyLjU3MmMxLjc1Ni40MjYgMS43NTYgMi45MjQgMCAzLjM1YTEuNzI0IDEuNzI0IDAgMDAtMS4wNjYgMi41NzNjLjk0IDEuNTQzLS44MjYgMy4zMS0yLjM3IDIuMzdhMS43MjQgMS43MjQgMCAwMC0yLjU3MiAxLjA2NWMtLjQyNiAxLjc1Ni0yLjkyNCAxLjc1Ni0zLjM1IDBhMS43MjQgMS43MjQgMCAwMC0yLjU3My0xLjA2NmMtMS41NDMuOTQtMy4zMS0uODI2LTIuMzctMi4zN2ExLjcyNCAxLjcyNCAwIDAwLTEuMDY1LTIuNTcyYy0xLjc1Ni0uNDI2LTEuNzU2LTIuOTI0IDAtMy4zNWExLjcyNCAxLjcyNCAwIDAwMS4wNjYtMi41NzNjLS45NC0xLjU0My44MjYtMy4zMSAyLjM3LTIuMzcuOTk2LjYwOCAyLjI5Ni4wNyAyLjU3Mi0xLjA2NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgMTJhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ29sbGVjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTkgMTFINW0xNCAwYTIgMiAwIDAxMiAydjZhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0ydi02YTIgMiAwIDAxMi0ybTE0IDBWOWEyIDIgMCAwMC0yLTJNNSAxMVY5YTIgMiAwIDAxMi0ybTAgMFY1YTIgMiAwIDAxMi0yaDZhMiAyIDAgMDEyIDJ2Mk03IDdoMTBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNvbG9yU3dhdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDIxYTQgNCAwIDAxLTQtNFY1YTIgMiAwIDAxMi0yaDRhMiAyIDAgMDEyIDJ2MTJhNCA0IDAgMDEtNCA0em0wIDBoMTJhMiAyIDAgMDAyLTJ2LTRhMiAyIDAgMDAtMi0yaC0yLjM0M00xMSA3LjM0M2wxLjY1Ny0xLjY1N2EyIDIgMCAwMTIuODI4IDBsMi44MjkgMi44MjlhMiAyIDAgMDEwIDIuODI4bC04LjQ4NiA4LjQ4NU03IDE3aC4wMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3JlZGl0Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAxMGgxOE03IDE1aDFtNCAwaDFtLTcgNGgxMmEzIDMgMCAwMDMtM1Y4YTMgMyAwIDAwLTMtM0g2YTMgMyAwIDAwLTMgM3Y4YTMgMyAwIDAwMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3ViZVRyYW5zcGFyZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNCAxMGwtMiAxbTAgMGwtMi0xbTIgMXYyLjVNMjAgN2wtMiAxbTItMWwtMi0xbTIgMXYyLjVNMTQgNGwtMi0xLTIgMU00IDdsMi0xTTQgN2wyIDFNNCA3djIuNU0xMiAyMWwtMi0xbTIgMWwyLTFtLTIgMXYtMi41TTYgMThsLTItMXYtMi41TTE4IDE4bDItMXYtMi41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDdWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMCA3bC04LTQtOCA0bTE2IDBsLTggNG04LTR2MTBsLTggNG0wLTEwTDQgN204IDR2MTBNNCA3djEwbDggNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3VycmVuY3lCYW5nbGFkZXNoaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgMTFWOWEyIDIgMCAwMC0yLTJtMiA0djRhMiAyIDAgMTA0IDB2LTFtLTQtM0g5bTIgMGg0bTYgMWE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5RG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA4Yy0xLjY1NyAwLTMgLjg5NS0zIDJzMS4zNDMgMiAzIDIgMyAuODk1IDMgMi0xLjM0MyAyLTMgMm0wLThjMS4xMSAwIDIuMDguNDAyIDIuNTk5IDFNMTIgOFY3bTAgMXY4bTAgMHYxbTAtMWMtMS4xMSAwLTIuMDgtLjQwMi0yLjU5OS0xTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3VycmVuY3lFdXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNC4xMjEgMTUuNTM2Yy0xLjE3MSAxLjk1Mi0zLjA3IDEuOTUyLTQuMjQyIDAtMS4xNzItMS45NTMtMS4xNzItNS4xMTkgMC03LjA3MiAxLjE3MS0xLjk1MiAzLjA3LTEuOTUyIDQuMjQyIDBNOCAxMC41aDRtLTQgM2g0bTktMS41YTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3VycmVuY3lQb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgOWEyIDIgMCAxMC00IDB2NWEyIDIgMCAwMS0yIDJoNm0tNi00aDRtOCAwYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3VycmVuY3lSdXBlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSA4aDZtLTUgMGEzIDMgMCAxMTAgNkg5bDMgM20tMy02aDZtNiAxYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3VycmVuY3lZZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgOGwzIDVtMCAwbDMtNW0tMyA1djRtLTMtNWg2bS02IDNoNm02LTNhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDdXJzb3JDbGljayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgMTVsLTIgNUw5IDlsMTEgNC01IDJ6bTAgMGw1IDVNNy4xODggMi4yMzlsLjc3NyAyLjg5N001LjEzNiA3Ljk2NWwtMi44OTgtLjc3N00xMy45NSA0LjA1bC0yLjEyMiAyLjEyMm0tNS42NTcgNS42NTZsLTIuMTIgMi4xMjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURhdGFiYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDd2MTBjMCAyLjIxIDMuNTgyIDQgOCA0czgtMS43OSA4LTRWN000IDdjMCAyLjIxIDMuNTgyIDQgOCA0czgtMS43OSA4LTRNNCA3YzAtMi4yMSAzLjU4Mi00IDgtNHM4IDEuNzkgOCA0bTAgNWMwIDIuMjEtMy41ODIgNC04IDRzLTgtMS43OS04LTRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURlc2t0b3BDb21wdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOS43NSAxN0w5IDIwbC0xIDFoOGwtMS0xLS43NS0zTTMgMTNoMThNNSAxN2gxNGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURldmljZU1vYmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgMThoLjAxTTggMjFoOGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMkg4YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURldmljZVRhYmxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgMThoLjAxTTcgMjFoMTBhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTRhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb2N1bWVudEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxM2g2bS0zLTN2Nm01IDVIN2EyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMmg1LjU4NmExIDEgMCAwMS43MDcuMjkzbDUuNDE0IDUuNDE0YTEgMSAwIDAxLjI5My43MDdWMTlhMiAyIDAgMDEtMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgMTB2Nm0wIDBsLTMtM20zIDNsMy0zbTIgOEg3YTIgMiAwIDAxLTItMlY1YTIgMiAwIDAxMi0yaDUuNTg2YTEgMSAwIDAxLjcwNy4yOTNsNS40MTQgNS40MTRhMSAxIDAgMDEuMjkzLjcwN1YxOWEyIDIgMCAwMS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb2N1bWVudER1cGxpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCA3djhhMiAyIDAgMDAyIDJoNk04IDdWNWEyIDIgMCAwMTItMmg0LjU4NmExIDEgMCAwMS43MDcuMjkzbDQuNDE0IDQuNDE0YTEgMSAwIDAxLjI5My43MDdWMTVhMiAyIDAgMDEtMiAyaC0yTTggN0g2YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0ydi0yXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb2N1bWVudFJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxM2g2bTIgOEg3YTIgMiAwIDAxLTItMlY1YTIgMiAwIDAxMi0yaDUuNTg2YTEgMSAwIDAxLjcwNy4yOTNsNS40MTQgNS40MTRhMSAxIDAgMDEuMjkzLjcwN1YxOWEyIDIgMCAwMS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb2N1bWVudFJlcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxN3YtMm0zIDJ2LTRtMyA0di02bTIgMTBIN2EyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMmg1LjU4NmExIDEgMCAwMS43MDcuMjkzbDUuNDE0IDUuNDE0YTEgMSAwIDAxLjI5My43MDdWMTlhMiAyIDAgMDEtMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnRTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwIDIxaDdhMiAyIDAgMDAyLTJWOS40MTRhMSAxIDAgMDAtLjI5My0uNzA3bC01LjQxNC01LjQxNEExIDEgMCAwMDEyLjU4NiAzSDdhMiAyIDAgMDAtMiAydjExbTAgNWw0Ljg3OS00Ljg3OW0wIDBhMyAzIDAgMTA0LjI0My00LjI0MiAzIDMgMCAwMC00LjI0MyA0LjI0MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvY3VtZW50VGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMmg2bS02IDRoNm0yIDVIN2EyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMmg1LjU4NmExIDEgMCAwMS43MDcuMjkzbDUuNDE0IDUuNDE0YTEgMSAwIDAxLjI5My43MDdWMTlhMiAyIDAgMDEtMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgMjFoMTBhMiAyIDAgMDAyLTJWOS40MTRhMSAxIDAgMDAtLjI5My0uNzA3bC01LjQxNC01LjQxNEExIDEgMCAwMDEyLjU4NiAzSDdhMiAyIDAgMDAtMiAydjE0YTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG90c0NpcmNsZUhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTJoLjAxTTEyIDEyaC4wMU0xNiAxMmguMDFNMjEgMTJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb3RzSG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNSAxMmguMDFNMTIgMTJoLjAxTTE5IDEyaC4wMU02IDEyYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHptNyAwYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHptNyAwYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvdHNWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgNXYuMDFNMTIgMTJ2LjAxTTEyIDE5di4wMU0xMiA2YTEgMSAwIDExMC0yIDEgMSAwIDAxMCAyem0wIDdhMSAxIDAgMTEwLTIgMSAxIDAgMDEwIDJ6bTAgN2ExIDEgMCAxMTAtMiAxIDEgMCAwMTAgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDE2djFhMyAzIDAgMDAzIDNoMTBhMyAzIDAgMDAzLTN2LTFtLTQtNGwtNCA0bTAgMGwtNC00bTQgNFY0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTZINmEyIDIgMCAwMS0yLTJWNmEyIDIgMCAwMTItMmg4YTIgMiAwIDAxMiAydjJtLTYgMTJoOGEyIDIgMCAwMDItMnYtOGEyIDIgMCAwMC0yLTJoLThhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVFbW9qaUhhcHB5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNC44MjggMTQuODI4YTQgNCAwIDAxLTUuNjU2IDBNOSAxMGguMDFNMTUgMTBoLjAxTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRW1vamlTYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkuMTcyIDE2LjE3MmE0IDQgMCAwMTUuNjU2IDBNOSAxMGguMDFNMTUgMTBoLjAxTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRXhjbGFtYXRpb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDh2NG0wIDRoLjAxTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDl2Mm0wIDRoLjAxbS02LjkzOCA0aDEzLjg1NmMxLjU0IDAgMi41MDItMS42NjcgMS43MzItM0wxMy43MzIgNGMtLjc3LTEuMzMzLTIuNjk0LTEuMzMzLTMuNDY0IDBMMy4zNCAxNmMtLjc3IDEuMzMzLjE5MiAzIDEuNzMyIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVFeHRlcm5hbExpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwIDZINmEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJ2LTRNMTQgNGg2bTAgMHY2bTAtNkwxMCAxNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRXllT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMy44NzUgMTguODI1QTEwLjA1IDEwLjA1IDAgMDExMiAxOWMtNC40NzggMC04LjI2OC0yLjk0My05LjU0My03YTkuOTcgOS45NyAwIDAxMS41NjMtMy4wMjltNS44NTguOTA4YTMgMyAwIDExNC4yNDMgNC4yNDNNOS44NzggOS44NzhsNC4yNDIgNC4yNDJNOS44OCA5Ljg4bC0zLjI5LTMuMjltNy41MzIgNy41MzJsMy4yOSAzLjI5TTMgM2wzLjU5IDMuNTltMCAwQTkuOTUzIDkuOTUzIDAgMDExMiA1YzQuNDc4IDAgOC4yNjggMi45NDMgOS41NDMgN2ExMC4wMjUgMTAuMDI1IDAgMDEtNC4xMzIgNS40MTFtMCAwTDIxIDIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVFeWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDEyYTMgMyAwIDExLTYgMCAzIDMgMCAwMTYgMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMi40NTggMTJDMy43MzIgNy45NDMgNy41MjMgNSAxMiA1YzQuNDc4IDAgOC4yNjggMi45NDMgOS41NDIgNy0xLjI3NCA0LjA1Ny01LjA2NCA3LTkuNTQyIDctNC40NzcgMC04LjI2OC0yLjk0My05LjU0Mi03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmFzdEZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExLjkzMyAxMi44YTEgMSAwIDAwMC0xLjZMNi42IDcuMkExIDEgMCAwMDUgOHY4YTEgMSAwIDAwMS42LjhsNS4zMzMtNHpNMTkuOTMzIDEyLjhhMSAxIDAgMDAwLTEuNmwtNS4zMzMtNEExIDEgMCAwMDEzIDh2OGExIDEgMCAwMDEuNi44bDUuMzMzLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVGaWxtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDR2MTZNMTcgNHYxNk0zIDhoNG0xMCAwaDRNMyAxMmgxOE0zIDE2aDRtMTAgMGg0TTQgMjBoMTZhMSAxIDAgMDAxLTFWNWExIDEgMCAwMC0xLTFINGExIDEgMCAwMC0xIDF2MTRhMSAxIDAgMDAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgNGExIDEgMCAwMTEtMWgxNmExIDEgMCAwMTEgMXYyLjU4NmExIDEgMCAwMS0uMjkzLjcwN2wtNi40MTQgNi40MTRhMSAxIDAgMDAtLjI5My43MDdWMTdsLTQgNHYtNi41ODZhMSAxIDAgMDAtLjI5My0uNzA3TDMuMjkzIDcuMjkzQTEgMSAwIDAxMyA2LjU4NlY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmluZ2VyUHJpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDExYzAgMy41MTctMS4wMDkgNi43OTktMi43NTMgOS41NzFtLTMuNDQtMi4wNGwuMDU0LS4wOUExMy45MTYgMTMuOTE2IDAgMDA4IDExYTQgNCAwIDExOCAwYzAgMS4wMTctLjA3IDIuMDE5LS4yMDMgM20tMi4xMTggNi44NDRBMjEuODggMjEuODggMCAwMDE1LjE3MSAxN20zLjgzOSAxLjEzMmMuNjQ1LTIuMjY2Ljk5LTQuNjU5Ljk5LTcuMTMyQTggOCAwIDAwOCA0LjA3TTMgMTUuMzY0Yy42NC0xLjMxOSAxLTIuOCAxLTQuMzY0IDAtMS40NTcuMzktMi44MjMgMS4wNy00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVGaXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNy42NTcgMTguNjU3QTggOCAwIDAxNi4zNDMgNy4zNDNTNyA5IDkgMTBjMC0yIC41LTUgMi45ODYtN0MxNCA1IDE2LjA5IDUuNzc3IDE3LjY1NiA3LjM0M0E3Ljk3NSA3Ljk3NSAwIDAxMjAgMTNhNy45NzUgNy45NzUgMCAwMS0yLjM0MyA1LjY1N3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOS44NzkgMTYuMTIxQTMgMyAwIDEwMTIuMDE1IDExTDExIDE0SDljMCAuNzY4LjI5MyAxLjUzNi44NzkgMi4xMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDIxdi00bTAgMFY1YTIgMiAwIDAxMi0yaDYuNWwxIDFIMjFsLTMgNiAzIDZoLTguNWwtMS0xSDVhMiAyIDAgMDAtMiAyem05LTEzLjVWOVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRm9sZGVyQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDEzaDZtLTMtM3Y2bS05IDFWN2EyIDIgMCAwMTItMmg2bDIgMmg2YTIgMiAwIDAxMiAydjhhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRm9sZGVyRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDEwdjZtMCAwbC0zLTNtMyAzbDMtM00zIDE3VjdhMiAyIDAgMDEyLTJoNmwyIDJoNmEyIDIgMCAwMTIgMnY4YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTlhMiAyIDAgMDEtMi0yVjdhMiAyIDAgMDEyLTJoNGwyIDJoNGEyIDIgMCAwMTIgMnYxTTUgMTloMTRhMiAyIDAgMDAyLTJ2LTVhMiAyIDAgMDAtMi0ySDlhMiAyIDAgMDAtMiAydjVhMiAyIDAgMDEtMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRm9sZGVyUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDEzaDZNMyAxN1Y3YTIgMiAwIDAxMi0yaDZsMiAyaDZhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgN3YxMGEyIDIgMCAwMDIgMmgxNGEyIDIgMCAwMDItMlY5YTIgMiAwIDAwLTItMmgtNmwtMi0ySDVhMiAyIDAgMDAtMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lR2lmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgOHYxM20wLTEzVjZhMiAyIDAgMTEyIDJoLTJ6bTAgMFY1LjVBMi41IDIuNSAwIDEwOS41IDhIMTJ6bS03IDRoMTRNNSAxMmEyIDIgMCAxMTAtNGgxNGEyIDIgMCAxMTAgNE01IDEydjdhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJ2LTdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUdsb2JlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAxMmE5IDkgMCAwMS05IDltOS05YTkgOSAwIDAwLTktOW05IDlIM205IDlhOSA5IDAgMDEtOS05bTkgOWMxLjY1NyAwIDMtNC4wMyAzLTlzLTEuMzQzLTktMy05bTAgMThjLTEuNjU3IDAtMy00LjAzLTMtOXMxLjM0My05IDMtOW0tOSA5YTkgOSAwIDAxOS05XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMy4wNTUgMTFINWEyIDIgMCAwMTIgMnYxYTIgMiAwIDAwMiAyIDIgMiAwIDAxMiAydjIuOTQ1TTggMy45MzVWNS41QTIuNSAyLjUgMCAwMDEwLjUgOGguNWEyIDIgMCAwMTIgMiAyIDIgMCAxMDQgMCAyIDIgMCAwMTItMmgxLjA2NE0xNSAyMC40ODhWMThhMiAyIDAgMDEyLTJoMy4wNjRNMjEgMTJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDExLjVWMTRtMC0yLjV2LTZhMS41IDEuNSAwIDExMyAwbS0zIDZhMS41IDEuNSAwIDAwLTMgMHYyYTcuNSA3LjUgMCAwMDE1IDB2LTVhMS41IDEuNSAwIDAwLTMgMG0tNi0zVjExbTAtNS41di0xYTEuNSAxLjUgMCAwMTMgMHYxbTAgMFYxMW0wLTUuNWExLjUgMS41IDAgMDEzIDB2M20wIDBWMTFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUhhc2h0YWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgMjBsNC0xNm0yIDE2bDQtMTZNNiA5aDE0TTQgMTVoMTRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUhlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00LjMxOCA2LjMxOGE0LjUgNC41IDAgMDAwIDYuMzY0TDEyIDIwLjM2NGw3LjY4Mi03LjY4MmE0LjUgNC41IDAgMDAtNi4zNjQtNi4zNjRMMTIgNy42MzZsLTEuMzE4LTEuMzE4YTQuNSA0LjUgMCAwMC02LjM2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAxMmwyLTJtMCAwbDctNyA3IDdNNSAxMHYxMGExIDEgMCAwMDEgMWgzbTEwLTExbDIgMm0tMi0ydjEwYTEgMSAwIDAxLTEgMWgtM20tNiAwYTEgMSAwIDAwMS0xdi00YTEgMSAwIDAxMS0xaDJhMSAxIDAgMDExIDF2NGExIDEgMCAwMDEgMW0tNiAwaDZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUlkZW50aWZpY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMCA2SDVhMiAyIDAgMDAtMiAydjlhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJoLTVtLTQgMFY1YTIgMiAwIDExNCAwdjFtLTQgMGEyIDIgMCAxMDQgMG0tNSA4YTIgMiAwIDEwMC00IDIgMiAwIDAwMCA0em0wIDBjMS4zMDYgMCAyLjQxNy44MzUgMi44MyAyTTkgMTRhMy4wMDEgMy4wMDEgMCAwMC0yLjgzIDJNMTUgMTFoM20tMyA0aDJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUluYm94SW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggNEg2YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMmgtMm0tNC0xdjhtMCAwbDMtM20tMyAzTDkgOG0tNSA1aDIuNTg2YTEgMSAwIDAxLjcwNy4yOTNsMi40MTQgMi40MTRhMSAxIDAgMDAuNzA3LjI5M2gzLjE3MmExIDEgMCAwMC43MDctLjI5M2wyLjQxNC0yLjQxNGExIDEgMCAwMS43MDctLjI5M0gyMFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIwIDEzVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjdtMTYgMHY1YTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMnYtNW0xNiAwaC0yLjU4NmExIDEgMCAwMC0uNzA3LjI5M2wtMi40MTQgMi40MTRhMSAxIDAgMDEtLjcwNy4yOTNoLTMuMTcyYTEgMSAwIDAxLS43MDctLjI5M2wtMi40MTQtMi40MTRBMSAxIDAgMDA2LjU4NiAxM0g0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVJbmZvcm1hdGlvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTMgMTZoLTF2LTRoLTFtMS00aC4wMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgN2EyIDIgMCAwMTIgMm00IDBhNiA2IDAgMDEtNy43NDMgNS43NDNMMTEgMTdIOXYySDd2Mkg0YTEgMSAwIDAxLTEtMXYtMi41ODZhMSAxIDAgMDEuMjkzLS43MDdsNS45NjQtNS45NjRBNiA2IDAgMTEyMSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTGlicmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCAxNHYzbTQtM3YzbTQtM3YzTTMgMjFoMThNMyAxMGgxOE0zIDdsOS00IDkgNE00IDEwaDE2djExSDRWMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVMaWdodEJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkuNjYzIDE3aDQuNjczTTEyIDN2MW02LjM2NCAxLjYzNmwtLjcwNy43MDdNMjEgMTJoLTFNNCAxMkgzbTMuMzQzLTUuNjU3bC0uNzA3LS43MDdtMi44MjggOS45YTUgNSAwIDExNy4wNzIgMGwtLjU0OC41NDdBMy4zNzQgMy4zNzQgMCAwMDE0IDE4LjQ2OVYxOWEyIDIgMCAxMS00IDB2LS41MzFjMC0uODk1LS4zNTYtMS43NTQtLjk4OC0yLjM4NmwtLjU0OC0uNTQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTGlnaHRuaW5nQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTMgMTBWM0w0IDE0aDd2N2w5LTExaC03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTMuODI4IDEwLjE3MmE0IDQgMCAwMC01LjY1NiAwbC00IDRhNCA0IDAgMTA1LjY1NiA1LjY1NmwxLjEwMi0xLjEwMW0tLjc1OC00Ljg5OWE0IDQgMCAwMDUuNjU2IDBsNC00YTQgNCAwIDAwLTUuNjU2LTUuNjU2bC0xLjEgMS4xXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVMb2NhdGlvbk1hcmtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcuNjU3IDE2LjY1N0wxMy40MTQgMjAuOWExLjk5OCAxLjk5OCAwIDAxLTIuODI3IDBsLTQuMjQ0LTQuMjQzYTggOCAwIDExMTEuMzE0IDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDExYTMgMyAwIDExLTYgMCAzIDMgMCAwMTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxvY2tDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDE1djJtLTYgNGgxMmEyIDIgMCAwMDItMnYtNmEyIDIgMCAwMC0yLTJINmEyIDIgMCAwMC0yIDJ2NmEyIDIgMCAwMDIgMnptMTAtMTBWN2E0IDQgMCAwMC04IDB2NGg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTG9ja09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTFWN2E0IDQgMCAxMTggMG0tNCA4djJtLTYgNGgxMmEyIDIgMCAwMDItMnYtNmEyIDIgMCAwMC0yLTJINmEyIDIgMCAwMC0yIDJ2NmEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxvZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSAxNmwtNC00bTAgMGw0LTRtLTQgNGgxNG0tNSA0djFhMyAzIDAgMDEtMyAzSDZhMyAzIDAgMDEtMy0zVjdhMyAzIDAgMDEzLTNoN2EzIDMgMCAwMTMgM3YxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVMb2dvdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3IDE2bDQtNG0wIDBsLTQtNG00IDRIN202IDR2MWEzIDMgMCAwMS0zIDNINmEzIDMgMCAwMS0zLTNWN2EzIDMgMCAwMTMtM2g0YTMgMyAwIDAxMyAzdjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1haWxPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDE5di04LjkzYTIgMiAwIDAxLjg5LTEuNjY0bDctNC42NjZhMiAyIDAgMDEyLjIyIDBsNyA0LjY2NkEyIDIgMCAwMTIxIDEwLjA3VjE5TTMgMTlhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJNMyAxOWw2Ljc1LTQuNU0yMSAxOWwtNi43NS00LjVNMyAxMGw2Ljc1IDQuNU0yMSAxMGwtNi43NSA0LjVtMCAwbC0xLjE0Ljc2YTIgMiAwIDAxLTIuMjIgMGwtMS4xNC0uNzZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgOGw3Ljg5IDUuMjZhMiAyIDAgMDAyLjIyIDBMMjEgOE01IDE5aDE0YTIgMiAwIDAwMi0yVjdhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDIwbC01LjQ0Ny0yLjcyNEExIDEgMCAwMTMgMTYuMzgyVjUuNjE4YTEgMSAwIDAxMS40NDctLjg5NEw5IDdtMCAxM2w2LTNtLTYgM1Y3bTYgMTBsNC41NTMgMi4yNzZBMSAxIDAgMDAyMSAxOC4zODJWNy42MThhMSAxIDAgMDAtLjU1My0uODk0TDE1IDRtMCAxM1Y0bTAgMEw5IDdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1lbnVBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDZoMTZNNCAxMmg4bS04IDZoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1lbnVBbHQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDZoMTZNNCAxMmgxNk00IDE4aDdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1lbnVBbHQzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDZoMTZNNCAxMmgxNm0tNyA2aDdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1lbnVBbHQ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDhoMTZNNCAxNmgxNlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTWVudSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA2aDE2TTQgMTJoMTZNNCAxOGgxNlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTWljcm9waG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTkgMTFhNyA3IDAgMDEtNyA3bTAgMGE3IDcgMCAwMS03LTdtNyA3djRtMCAwSDhtNCAwaDRtLTQtOGEzIDMgMCAwMS0zLTNWNWEzIDMgMCAxMTYgMHY2YTMgMyAwIDAxLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1pbnVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxMkg5bTEyIDBhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNaW51c1NtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOCAxMkg2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjAgMTJINFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjAuMzU0IDE1LjM1NEE5IDkgMCAwMTguNjQ2IDMuNjQ2IDkuMDAzIDkuMDAzIDAgMDAxMiAyMWE5LjAwMyA5LjAwMyAwIDAwOC4zNTQtNS42NDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNdXNpY05vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTlWNmwxMi0zdjEzTTkgMTljMCAxLjEwNS0xLjM0MyAyLTMgMnMtMy0uODk1LTMtMiAxLjM0My0yIDMtMiAzIC44OTUgMyAyem0xMi0zYzAgMS4xMDUtMS4zNDMgMi0zIDJzLTMtLjg5NS0zLTIgMS4zNDMtMiAzLTIgMyAuODk1IDMgMnpNOSAxMGwxMi0zXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVOZXdzcGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDIwSDVhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTBhMiAyIDAgMDEyIDJ2MW0yIDEzYTIgMiAwIDAxLTItMlY3bTIgMTNhMiAyIDAgMDAyLTJWOWEyIDIgMCAwMC0yLTJoLTJtLTQtM0g5TTcgMTZoNk03IDhoNnY0SDdWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU9mZmljZUJ1aWxkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOSAyMVY1YTIgMiAwIDAwLTItMkg3YTIgMiAwIDAwLTIgMnYxNm0xNCAwaDJtLTIgMGgtNW0tOSAwSDNtMiAwaDVNOSA3aDFtLTEgNGgxbTQtNGgxbS0xIDRoMW0tNSAxMHYtNWExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjVtLTQgMGg0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQYXBlckFpcnBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxOWw5IDItOS0xOC05IDE4IDktMnptMCAwdi04XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQYXBlckNsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1LjE3MiA3bC02LjU4NiA2LjU4NmEyIDIgMCAxMDIuODI4IDIuODI4bDYuNDE0LTYuNTg2YTQgNCAwIDAwLTUuNjU2LTUuNjU2bC02LjQxNSA2LjU4NWE2IDYgMCAxMDguNDg2IDguNDg2TDIwLjUgMTNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBhdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMCA5djZtNC02djZtNy0zYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGVuY2lsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSA1SDZhMiAyIDAgMDAtMiAydjExYTIgMiAwIDAwMiAyaDExYTIgMiAwIDAwMi0ydi01bS0xLjQxNC05LjQxNGEyIDIgMCAxMTIuODI4IDIuODI4TDExLjgyOCAxNUg5di0yLjgyOGw4LjU4Ni04LjU4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBlbmNpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUuMjMyIDUuMjMybDMuNTM2IDMuNTM2bS0yLjAzNi01LjAzNmEyLjUgMi41IDAgMTEzLjUzNiAzLjUzNkw2LjUgMjEuMDM2SDN2LTMuNTcyTDE2LjczMiAzLjczMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBob25lSW5jb21pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIxIDNsLTYgNm0wIDBWNG0wIDVoNU01IDNhMiAyIDAgMDAtMiAydjFjMCA4LjI4NCA2LjcxNiAxNSAxNSAxNWgxYTIgMiAwIDAwMi0ydi0zLjI4YTEgMSAwIDAwLS42ODQtLjk0OGwtNC40OTMtMS40OThhMSAxIDAgMDAtMS4yMS41MDJsLTEuMTMgMi4yNTdhMTEuMDQyIDExLjA0MiAwIDAxLTUuNTE2LTUuNTE3bDIuMjU3LTEuMTI4YTEgMSAwIDAwLjUwMi0xLjIxTDkuMjI4IDMuNjgzQTEgMSAwIDAwOC4yNzkgM0g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGhvbmVNaXNzZWRDYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiA4bDItMm0wIDBsMi0ybS0yIDJsLTItMm0yIDJsMiAyTTUgM2EyIDIgMCAwMC0yIDJ2MWMwIDguMjg0IDYuNzE2IDE1IDE1IDE1aDFhMiAyIDAgMDAyLTJ2LTMuMjhhMSAxIDAgMDAtLjY4NC0uOTQ4bC00LjQ5My0xLjQ5OGExIDEgMCAwMC0xLjIxLjUwMmwtMS4xMyAyLjI1N2ExMS4wNDIgMTEuMDQyIDAgMDEtNS41MTYtNS41MTdsMi4yNTctMS4xMjhhMSAxIDAgMDAuNTAyLTEuMjFMOS4yMjggMy42ODNBMSAxIDAgMDA4LjI3OSAzSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQaG9uZU91dGdvaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiAzaDVtMCAwdjVtMC01bC02IDZNNSAzYTIgMiAwIDAwLTIgMnYxYzAgOC4yODQgNi43MTYgMTUgMTUgMTVoMWEyIDIgMCAwMDItMnYtMy4yOGExIDEgMCAwMC0uNjg0LS45NDhsLTQuNDkzLTEuNDk4YTEgMSAwIDAwLTEuMjEuNTAybC0xLjEzIDIuMjU3YTExLjA0MiAxMS4wNDIgMCAwMS01LjUxNi01LjUxN2wyLjI1Ny0xLjEyOGExIDEgMCAwMC41MDItMS4yMUw5LjIyOCAzLjY4M0ExIDEgMCAwMDguMjc5IDNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDVhMiAyIDAgMDEyLTJoMy4yOGExIDEgMCAwMS45NDguNjg0bDEuNDk4IDQuNDkzYTEgMSAwIDAxLS41MDIgMS4yMWwtMi4yNTcgMS4xM2ExMS4wNDIgMTEuMDQyIDAgMDA1LjUxNiA1LjUxNmwxLjEzLTIuMjU3YTEgMSAwIDAxMS4yMS0uNTAybDQuNDkzIDEuNDk4YTEgMSAwIDAxLjY4NC45NDlWMTlhMiAyIDAgMDEtMiAyaC0xQzkuNzE2IDIxIDMgMTQuMjg0IDMgNlY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGhvdG9ncmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCAxNmw0LjU4Ni00LjU4NmEyIDIgMCAwMTIuODI4IDBMMTYgMTZtLTItMmwxLjU4Ni0xLjU4NmEyIDIgMCAwMTIuODI4IDBMMjAgMTRtLTYtNmguMDFNNiAyMGgxMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE0Ljc1MiAxMS4xNjhsLTMuMTk3LTIuMTMyQTEgMSAwIDAwMTAgOS44N3Y0LjI2M2ExIDEgMCAwMDEuNTU1LjgzMmwzLjE5Ny0yLjEzMmExIDEgMCAwMDAtMS42NjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGx1c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgOXYzbTAgMHYzbTAtM2gzbS0zIDBIOW0xMiAwYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGx1c1NtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA2djZtMCAwdjZtMC02aDZtLTYgMEg2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA0djE2bTgtOEg0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQcmVzZW50YXRpb25DaGFydEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCAxM3YtMW00IDF2LTNtNCAzVjhNOCAyMWw0LTQgNCA0TTMgNGgxOE00IDRoMTZ2MTJhMSAxIDAgMDEtMSAxSDVhMSAxIDAgMDEtMS0xVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQcmVzZW50YXRpb25DaGFydExpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgMTJsMy0zIDMgMyA0LTRNOCAyMWw0LTQgNCA0TTMgNGgxOE00IDRoMTZ2MTJhMSAxIDAgMDEtMSAxSDVhMSAxIDAgMDEtMS0xVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQcmludGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNyAxN2gyYTIgMiAwIDAwMi0ydi00YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnY0YTIgMiAwIDAwMiAyaDJtMiA0aDZhMiAyIDAgMDAyLTJ2LTRhMiAyIDAgMDAtMi0ySDlhMiAyIDAgMDAtMiAydjRhMiAyIDAgMDAyIDJ6bTgtMTJWNWEyIDIgMCAwMC0yLTJIOWEyIDIgMCAwMC0yIDJ2NGgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVB1enpsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgNGEyIDIgMCAxMTQgMHYxYTEgMSAwIDAwMSAxaDNhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0xIDFoLTFhMiAyIDAgMTAwIDRoMWExIDEgMCAwMTEgMXYzYTEgMSAwIDAxLTEgMWgtM2ExIDEgMCAwMS0xLTF2LTFhMiAyIDAgMTAtNCAwdjFhMSAxIDAgMDEtMSAxSDdhMSAxIDAgMDEtMS0xdi0zYTEgMSAwIDAwLTEtMUg0YTIgMiAwIDExMC00aDFhMSAxIDAgMDAxLTFWN2ExIDEgMCAwMTEtMWgzYTEgMSAwIDAwMS0xVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVRcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDR2MW02IDExaDJtLTYgMGgtMnY0bTAtMTF2M20wIDBoLjAxTTEyIDEyaDQuMDFNMTYgMjBoNE00IDEyaDRtMTIgMGguMDFNNSA4aDJhMSAxIDAgMDAxLTFWNWExIDEgMCAwMC0xLTFINWExIDEgMCAwMC0xIDF2MmExIDEgMCAwMDEgMXptMTIgMGgyYTEgMSAwIDAwMS0xVjVhMSAxIDAgMDAtMS0xaC0yYTEgMSAwIDAwLTEgMXYyYTEgMSAwIDAwMSAxek01IDIwaDJhMSAxIDAgMDAxLTF2LTJhMSAxIDAgMDAtMS0xSDVhMSAxIDAgMDAtMSAxdjJhMSAxIDAgMDAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVRdWVzdGlvbk1hcmtDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTguMjI4IDljLjU0OS0xLjE2NSAyLjAzLTIgMy43NzItMiAyLjIxIDAgNCAxLjM0MyA0IDMgMCAxLjQtMS4yNzggMi41NzUtMy4wMDYgMi45MDctLjU0Mi4xMDQtLjk5NC41NC0uOTk0IDEuMDkzbTAgM2guMDFNMjEgMTJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVSZWNlaXB0UmVmdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiAxNXYtMWE0IDQgMCAwMC00LTRIOG0wIDBsMyAzbS0zLTNsMy0zbTkgMTRWNWEyIDIgMCAwMC0yLTJINmEyIDIgMCAwMC0yIDJ2MTZsNC0yIDQgMiA0LTIgNCAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUmVjZWlwdFRheCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxNGw2LTZtLTUuNS41aC4wMW00Ljk5IDVoLjAxTTE5IDIxVjVhMiAyIDAgMDAtMi0ySDdhMiAyIDAgMDAtMiAydjE2bDMuNS0yIDMuNSAyIDMuNS0yIDMuNSAyek0xMCA4LjVhLjUuNSAwIDExLTEgMCAuNS41IDAgMDExIDB6bTUgNWEuNS41IDAgMTEtMSAwIC41LjUgMCAwMTEgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVJlZnJlc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgNHY1aC41ODJtMTUuMzU2IDJBOC4wMDEgOC4wMDEgMCAwMDQuNTgyIDltMCAwSDltMTEgMTF2LTVoLS41ODFtMCAwYTguMDAzIDguMDAzIDAgMDEtMTUuMzU3LTJtMTUuMzU3IDJIMTVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVJlcGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDEwaDEwYTggOCAwIDAxOCA4djJNMyAxMGw2IDZtLTYtNmw2LTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVJld2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIuMDY2IDExLjJhMSAxIDAgMDAwIDEuNmw1LjMzNCA0QTEgMSAwIDAwMTkgMTZWOGExIDEgMCAwMC0xLjYtLjhsLTUuMzMzIDR6TTQuMDY2IDExLjJhMSAxIDAgMDAwIDEuNmw1LjMzNCA0QTEgMSAwIDAwMTEgMTZWOGExIDEgMCAwMC0xLjYtLjhsLTUuMzM0IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVSc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTYgNWM3LjE4IDAgMTMgNS44MiAxMyAxM002IDExYTcgNyAwIDAxNyA3bS02IDBhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2F2ZUFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNyAxNnYyYTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMnYtN2EyIDIgMCAwMTItMmgybTMtNEg5YTIgMiAwIDAwLTIgMnY3YTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0yVjdhMiAyIDAgMDAtMi0yaC0xbS0xIDRsLTMgM20wIDBsLTMtM20zIDNWM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCA3SDVhMiAyIDAgMDAtMiAydjlhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJWOWEyIDIgMCAwMC0yLTJoLTNtLTEgNGwtMyAzbTAgMGwtMy0zbTMgM1Y0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyA2bDMgMW0wIDBsLTMgOWE1LjAwMiA1LjAwMiAwIDAwNi4wMDEgME02IDdsMyA5TTYgN2w2LTJtNiAybDMtMW0tMyAxbC0zIDlhNS4wMDIgNS4wMDIgMCAwMDYuMDAxIDBNMTggN2wzIDltLTMtOWwtNi0ybTAtMnYybTAgMTZWNW0wIDE2SDltMyAwaDNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNjaXNzb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNC4xMjEgMTQuMTIxTDE5IDE5bS03LTdsNy03bS03IDdsLTIuODc5IDIuODc5TTEyIDEyTDkuMTIxIDkuMTIxbTAgNS43NThhMyAzIDAgMTAtNC4yNDMgNC4yNDMgMyAzIDAgMDA0LjI0My00LjI0M3ptMC01Ljc1OGEzIDMgMCAxMC00LjI0My00LjI0MyAzIDMgMCAwMDQuMjQzIDQuMjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2VhcmNoQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDE2bDIuODc5LTIuODc5bTAgMGEzIDMgMCAxMDQuMjQzLTQuMjQyIDMgMyAwIDAwLTQuMjQzIDQuMjQyek0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjEgMjFsLTYtNm0yLTVhNyA3IDAgMTEtMTQgMCA3IDcgMCAwMTE0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTZWxlY3RvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCA5bDQtNCA0IDRtMCA2bC00IDQtNC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTZXJ2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTJoMTRNNSAxMmEyIDIgMCAwMS0yLTJWNmEyIDIgMCAwMTItMmgxNGEyIDIgMCAwMTIgMnY0YTIgMiAwIDAxLTIgMk01IDEyYTIgMiAwIDAwLTIgMnY0YTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0ydi00YTIgMiAwIDAwLTItMm0tMi00aC4wMU0xNyAxNmguMDFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04LjY4NCAxMy4zNDJDOC44ODYgMTIuOTM4IDkgMTIuNDgyIDkgMTJjMC0uNDgyLS4xMTQtLjkzOC0uMzE2LTEuMzQybTAgMi42ODRhMyAzIDAgMTEwLTIuNjg0bTAgMi42ODRsNi42MzIgMy4zMTZtLTYuNjMyLTZsNi42MzItMy4zMTZtMCAwYTMgMyAwIDEwNS4zNjctMi42ODQgMyAzIDAgMDAtNS4zNjcgMi42ODR6bTAgOS4zMTZhMyAzIDAgMTA1LjM2OCAyLjY4NCAzIDMgMCAwMC01LjM2OC0yLjY4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNoaWVsZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDEybDIgMiA0LTRtNS42MTgtNC4wMTZBMTEuOTU1IDExLjk1NSAwIDAxMTIgMi45NDRhMTEuOTU1IDExLjk1NSAwIDAxLTguNjE4IDMuMDRBMTIuMDIgMTIuMDIgMCAwMDMgOWMwIDUuNTkxIDMuODI0IDEwLjI5IDkgMTEuNjIyIDUuMTc2LTEuMzMyIDktNi4wMyA5LTExLjYyMiAwLTEuMDQyLS4xMzMtMi4wNTItLjM4Mi0zLjAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNoaWVsZEV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMC42MTggNS45ODRBMTEuOTU1IDExLjk1NSAwIDAxMTIgMi45NDRhMTEuOTU1IDExLjk1NSAwIDAxLTguNjE4IDMuMDRBMTIuMDIgMTIuMDIgMCAwMDMgOWMwIDUuNTkxIDMuODI0IDEwLjI5IDkgMTEuNjIyIDUuMTc2LTEuMzMyIDktNi4wMyA5LTExLjYyMiAwLTEuMDQyLS4xMzMtMi4wNTItLjM4Mi0zLjAxNnpNMTIgOXYybTAgNGguMDFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiAxMVY3YTQgNCAwIDAwLTggMHY0TTUgOWgxNGwxIDEySDRMNSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2hvcHBpbmdDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDNoMmwuNCAyTTcgMTNoMTBsNC04SDUuNE03IDEzTDUuNCA1TTcgMTNsLTIuMjkzIDIuMjkzYy0uNjMuNjMtLjE4NCAxLjcwNy43MDcgMS43MDdIMTdtMCAwYTIgMiAwIDEwMCA0IDIgMiAwIDAwMC00em0tOCAyYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNvcnRBc2NlbmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgNGgxM00zIDhoOW0tOSA0aDZtNCAwbDQtNG0wIDBsNCA0bS00LTR2MTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNvcnREZXNjZW5kaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDRoMTNNMyA4aDltLTkgNGg5bTUtNHYxMm0wIDBsLTQtNG00IDRsNC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNSAzdjRNMyA1aDRNNiAxN3Y0bS0yLTJoNG01LTE2bDIuMjg2IDYuODU3TDIxIDEybC01LjcxNCAyLjE0M0wxMyAyMWwtMi4yODYtNi44NTdMNSAxMmw1LjcxNC0yLjE0M0wxMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3BlYWtlcnBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSA1Ljg4MlYxOS4yNGExLjc2IDEuNzYgMCAwMS0zLjQxNy41OTJsLTIuMTQ3LTYuMTVNMTggMTNhMyAzIDAgMTAwLTZNNS40MzYgMTMuNjgzQTQuMDAxIDQuMDAxIDAgMDE3IDZoMS44MzJjNC4xIDAgNy42MjUtMS4yMzQgOS4xNjgtM3YxNGMtMS41NDMtMS43NjYtNS4wNjctMy05LjE2OC0zSDdhMy45ODggMy45ODggMCAwMS0xLjU2NC0uMzE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEuMDQ5IDIuOTI3Yy4zLS45MjEgMS42MDMtLjkyMSAxLjkwMiAwbDEuNTE5IDQuNjc0YTEgMSAwIDAwLjk1LjY5aDQuOTE1Yy45NjkgMCAxLjM3MSAxLjI0LjU4OCAxLjgxbC0zLjk3NiAyLjg4OGExIDEgMCAwMC0uMzYzIDEuMTE4bDEuNTE4IDQuNjc0Yy4zLjkyMi0uNzU1IDEuNjg4LTEuNTM4IDEuMTE4bC0zLjk3Ni0yLjg4OGExIDEgMCAwMC0xLjE3NiAwbC0zLjk3NiAyLjg4OGMtLjc4My41Ny0xLjgzOC0uMTk3LTEuNTM4LTEuMTE4bDEuNTE4LTQuNjc0YTEgMSAwIDAwLS4zNjMtMS4xMThsLTMuOTc2LTIuODg4Yy0uNzg0LS41Ny0uMzgtMS44MS41ODgtMS44MWg0LjkxNGExIDEgMCAwMC45NTEtLjY5bDEuNTE5LTQuNjc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3RhdHVzT2ZmbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTguMzY0IDUuNjM2YTkgOSAwIDAxMCAxMi43MjhtMCAwbC0yLjgyOS0yLjgyOW0yLjgyOSAyLjgyOUwyMSAyMU0xNS41MzYgOC40NjRhNSA1IDAgMDEwIDcuMDcybTAgMGwtMi44MjktMi44MjltLTQuMjQzIDIuODI5YTQuOTc4IDQuOTc4IDAgMDEtMS40MTQtMi44M20tMS40MTQgNS42NThhOSA5IDAgMDEtMi4xNjctOS4yMzhtNy44MjQgMi4xNjdhMSAxIDAgMTExLjQxNCAxLjQxNG0tMS40MTQtMS40MTRMMyAzbTguMjkzIDguMjkzbDEuNDE0IDEuNDE0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTdGF0dXNPbmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUuNjM2IDE4LjM2NGE5IDkgMCAwMTAtMTIuNzI4bTEyLjcyOCAwYTkgOSAwIDAxMCAxMi43MjhtLTkuOS0yLjgyOWE1IDUgMCAwMTAtNy4wN203LjA3MiAwYTUgNSAwIDAxMCA3LjA3TTEzIDEyYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDEwYTEgMSAwIDAxMS0xaDRhMSAxIDAgMDExIDF2NGExIDEgMCAwMS0xIDFoLTRhMSAxIDAgMDEtMS0xdi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAzdjFtMCAxNnYxbTktOWgtMU00IDEySDNtMTUuMzY0IDYuMzY0bC0uNzA3LS43MDdNNi4zNDMgNi4zNDNsLS43MDctLjcwN20xMi43MjggMGwtLjcwNy43MDdNNi4zNDMgMTcuNjU3bC0uNzA3LjcwN00xNiAxMmE0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTdXBwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOC4zNjQgNS42MzZsLTMuNTM2IDMuNTM2bTAgNS42NTZsMy41MzYgMy41MzZNOS4xNzIgOS4xNzJMNS42MzYgNS42MzZtMy41MzYgOS4xOTJsLTMuNTM2IDMuNTM2TTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwem0tNSAwYTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVN3aXRjaEhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggN2gxMm0wIDBsLTQtNG00IDRsLTQgNG0wIDZING0wIDBsNCA0bS00LTRsNC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTd2l0Y2hWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyAxNlY0bTAgMEwzIDhtNC00bDQgNG02IDB2MTJtMCAwbDQtNG0tNCA0bC00LTRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDEwaDE4TTMgMTRoMThtLTktNHY4bS03IDBoMTRhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyA3aC4wMU03IDNoNWMuNTEyIDAgMS4wMjQuMTk1IDEuNDE0LjU4Nmw3IDdhMiAyIDAgMDEwIDIuODI4bC03IDdhMiAyIDAgMDEtMi44MjggMGwtNy03QTEuOTk0IDEuOTk0IDAgMDEzIDEyVjdhNCA0IDAgMDE0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUZW1wbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA1YTEgMSAwIDAxMS0xaDE0YTEgMSAwIDAxMSAxdjJhMSAxIDAgMDEtMSAxSDVhMSAxIDAgMDEtMS0xVjV6TTQgMTNhMSAxIDAgMDExLTFoNmExIDEgMCAwMTEgMXY2YTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMXYtNnpNMTYgMTNhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXY2YTEgMSAwIDAxLTEgMWgtMmExIDEgMCAwMS0xLTF2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUZXJtaW5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCA5bDMgMy0zIDNtNSAwaDNNNSAyMGgxNGEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRodW1iRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgMTRINS4yMzZhMiAyIDAgMDEtMS43ODktMi44OTRsMy41LTdBMiAyIDAgMDE4LjczNiAzaDQuMDE4YTIgMiAwIDAxLjQ4NS4wNmwzLjc2Ljk0bS03IDEwdjVhMiAyIDAgMDAyIDJoLjA5NmMuNSAwIC45MDUtLjQwNS45MDUtLjkwNCAwLS43MTUuMjExLTEuNDEzLjYwOC0yLjAwOEwxNyAxM1Y0bS03IDEwaDJtNS0xMGgyYTIgMiAwIDAxMiAydjZhMiAyIDAgMDEtMiAyaC0yLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRodW1iVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE0IDEwaDQuNzY0YTIgMiAwIDAxMS43ODkgMi44OTRsLTMuNSA3QTIgMiAwIDAxMTUuMjYzIDIxaC00LjAxN2MtLjE2MyAwLS4zMjYtLjAyLS40ODUtLjA2TDcgMjBtNy0xMFY1YTIgMiAwIDAwLTItMmgtLjA5NWMtLjUgMC0uOTA1LjQwNS0uOTA1LjkwNSAwIC43MTQtLjIxMSAxLjQxMi0uNjA4IDIuMDA2TDcgMTF2OW03LTEwaC0yTTcgMjBINWEyIDIgMCAwMS0yLTJ2LTZhMiAyIDAgMDEyLTJoMi41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUaWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDV2Mm0wIDR2Mm0wIDR2Mk01IDVhMiAyIDAgMDAtMiAydjNhMiAyIDAgMTEwIDR2M2EyIDIgMCAwMDIgMmgxNGEyIDIgMCAwMDItMnYtM2EyIDIgMCAxMTAtNFY3YTIgMiAwIDAwLTItMkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVHJhbnNsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDVoMTJNOSAzdjJtMS4wNDggOS41QTE4LjAyMiAxOC4wMjIgMCAwMTYuNDEyIDltNi4wODggOWg3TTExIDIxbDUtMTAgNSAxME0xMi43NTEgNUMxMS43ODMgMTAuNzcgOC4wNyAxNS42MSAzIDE4LjEyOVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVHJhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDdsLS44NjcgMTIuMTQyQTIgMiAwIDAxMTYuMTM4IDIxSDcuODYyYTIgMiAwIDAxLTEuOTk1LTEuODU4TDUgN201IDR2Nm00LTZ2Nm0xLTEwVjRhMSAxIDAgMDAtMS0xaC00YTEgMSAwIDAwLTEgMXYzTTQgN2gxNlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVHJlbmRpbmdEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyAxN2g4bTAgMFY5bTAgOGwtOC04LTQgNC02LTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRyZW5kaW5nVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDdoOG0wIDB2OG0wLThsLTggOC00LTQtNiA2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUcnVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxN2EyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6TTE5IDE3YTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTMgMTZWNmExIDEgMCAwMC0xLTFINGExIDEgMCAwMC0xIDF2MTBhMSAxIDAgMDAxIDFoMW04LTFhMSAxIDAgMDEtMSAxSDltNC0xVjhhMSAxIDAgMDExLTFoMi41ODZhMSAxIDAgMDEuNzA3LjI5M2wzLjQxNCAzLjQxNGExIDEgMCAwMS4yOTMuNzA3VjE2YTEgMSAwIDAxLTEgMWgtMW0tNi0xYTEgMSAwIDAwMSAxaDFNNSAxN2EyIDIgMCAxMDQgMG0tNCAwYTIgMiAwIDExNCAwbTYgMGEyIDIgMCAxMDQgMG0tNCAwYTIgMiAwIDExNCAwXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgMTZ2MWEzIDMgMCAwMDMgM2gxMGEzIDMgMCAwMDMtM3YtMW0tNC04bC00LTRtMCAwTDggOG00LTR2MTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVVzZXJBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE4IDl2M20wIDB2M20wLTNoM20tMyAwaC0zbS0yLTVhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0zIDIwYTYgNiAwIDAxMTIgMHYxSDN2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVVc2VyQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01LjEyMSAxNy44MDRBMTMuOTM3IDEzLjkzNyAwIDAxMTIgMTZjMi41IDAgNC44NDcuNjU1IDYuODc5IDEuODA0TTE1IDEwYTMgMyAwIDExLTYgMCAzIDMgMCAwMTYgMHptNiAyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVXNlckdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNyAyMGg1di0yYTMgMyAwIDAwLTUuMzU2LTEuODU3TTE3IDIwSDdtMTAgMHYtMmMwLS42NTYtLjEyNi0xLjI4My0uMzU2LTEuODU3TTcgMjBIMnYtMmEzIDMgMCAwMTUuMzU2LTEuODU3TTcgMjB2LTJjMC0uNjU2LjEyNi0xLjI4My4zNTYtMS44NTdtMCAwYTUuMDAyIDUuMDAyIDAgMDE5LjI4OCAwTTE1IDdhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwem02IDNhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwek03IDEwYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVVzZXJSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek05IDE0YTYgNiAwIDAwLTYgNnYxaDEydi0xYTYgNiAwIDAwLTYtNnpNMjEgMTJoLTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVXNlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDQuMzU0YTQgNCAwIDExMCA1LjI5Mk0xNSAyMUgzdi0xYTYgNiAwIDAxMTIgMHYxem0wIDBoNnYtMWE2IDYgMCAwMC05LTUuMTk3TTEzIDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVmFyaWFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQuODcxIDRBMTcuOTI2IDE3LjkyNiAwIDAwMyAxMmMwIDIuODc0LjY3MyA1LjU5IDEuODcxIDhtMTQuMTMgMGExNy45MjYgMTcuOTI2IDAgMDAxLjg3LThjMC0yLjg3NC0uNjczLTUuNTktMS44Ny04TTkgOWgxLjI0NmExIDEgMCAwMS45NjEuNzI1bDEuNTg2IDUuNTVhMSAxIDAgMDAuOTYxLjcyNUgxNW0xLTdoLS4wOGEyIDIgMCAwMC0xLjUxOS42OThMOS42IDE1LjMwMkEyIDIgMCAwMTguMDggMTZIOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVmlkZW9DYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDEwbDQuNTUzLTIuMjc2QTEgMSAwIDAxMjEgOC42MTh2Ni43NjRhMSAxIDAgMDEtMS40NDcuODk0TDE1IDE0TTUgMThoOGEyIDIgMCAwMDItMlY4YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVmlld0JvYXJkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxN1Y3bTAgMTBhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjdhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMm0wIDEwYTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJNOSA3YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJtMCAxMFY3bTAgMTBhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMmEyIDIgMCAwMC0yIDJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZpZXdHcmlkQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNyAxNHY2bS0zLTNoNk02IDEwaDJhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINmEyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMnptMTAgMGgyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0yaC0yYTIgMiAwIDAwLTIgMnYyYTIgMiAwIDAwMiAyek02IDIwaDJhMiAyIDAgMDAyLTJ2LTJhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjJhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVWaWV3R3JpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA2YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJWNnpNMTQgNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMlY2ek00IDE2YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJ2LTJ6TTE0IDE2YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJoLTJhMiAyIDAgMDEtMi0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVmlld0xpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgNmgxNk00IDEwaDE2TTQgMTRoMTZNNCAxOGgxNlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVm9sdW1lT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01LjU4NiAxNUg0YTEgMSAwIDAxLTEtMXYtNGExIDEgMCAwMTEtMWgxLjU4Nmw0LjcwNy00LjcwN0MxMC45MjMgMy42NjMgMTIgNC4xMDkgMTIgNXYxNGMwIC44OTEtMS4wNzcgMS4zMzctMS43MDcuNzA3TDUuNTg2IDE1elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMTRsMi0ybTAgMGwyLTJtLTIgMmwtMi0ybTIgMmwyIDJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZvbHVtZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNS41MzYgOC40NjRhNSA1IDAgMDEwIDcuMDcybTIuODI4LTkuOWE5IDkgMCAwMTAgMTIuNzI4TTUuNTg2IDE1SDRhMSAxIDAgMDEtMS0xdi00YTEgMSAwIDAxMS0xaDEuNTg2bDQuNzA3LTQuNzA3QzEwLjkyMyAzLjY2MyAxMiA0LjEwOSAxMiA1djE0YzAgLjg5MS0xLjA3NyAxLjMzNy0xLjcwNy43MDdMNS41ODYgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVXaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04LjExMSAxNi40MDRhNS41IDUuNSAwIDAxNy43NzggME0xMiAyMGguMDFtLTcuMDgtNy4wNzFjMy45MDQtMy45MDUgMTAuMjM2LTMuOTA1IDE0LjE0MSAwTTEuMzk0IDkuMzkzYzUuODU3LTUuODU3IDE1LjM1NS01Ljg1NyAyMS4yMTMgMFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lWENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgMTRsMi0ybTAgMGwyLTJtLTIgMmwtMi0ybTIgMmwyIDJtNy0yYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNiAxOEwxOCA2TTYgNmwxMiAxMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lWm9vbUluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAyMWwtNi02bTItNWE3IDcgMCAxMS0xNCAwIDcgNyAwIDAxMTQgMHpNMTAgN3YzbTAgMHYzbTAtM2gzbS0zIDBIN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lWm9vbU91dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjEgMjFsLTYtNm0yLTVhNyA3IDAgMTEtMTQgMCA3IDcgMCAwMTE0IDB6TTEzIDEwSDdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuIiwiY29uc3QgQ0xBU1NfUEFSVF9TRVBBUkFUT1IgPSAnLSc7XG5mdW5jdGlvbiBjcmVhdGVDbGFzc0dyb3VwVXRpbHMoY29uZmlnKSB7XG4gIGNvbnN0IGNsYXNzTWFwID0gY3JlYXRlQ2xhc3NNYXAoY29uZmlnKTtcbiAgY29uc3Qge1xuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cHMsXG4gICAgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzXG4gIH0gPSBjb25maWc7XG4gIGZ1bmN0aW9uIGdldENsYXNzR3JvdXBJZChjbGFzc05hbWUpIHtcbiAgICBjb25zdCBjbGFzc1BhcnRzID0gY2xhc3NOYW1lLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKTtcbiAgICAvLyBDbGFzc2VzIGxpa2UgYC1pbnNldC0xYCBwcm9kdWNlIGFuIGVtcHR5IHN0cmluZyBhcyBmaXJzdCBjbGFzc1BhcnQuIFdlIGFzc3VtZSB0aGF0IGNsYXNzZXMgZm9yIG5lZ2F0aXZlIHZhbHVlcyBhcmUgdXNlZCBjb3JyZWN0bHkgYW5kIHJlbW92ZSBpdCBmcm9tIGNsYXNzUGFydHMuXG4gICAgaWYgKGNsYXNzUGFydHNbMF0gPT09ICcnICYmIGNsYXNzUGFydHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICBjbGFzc1BhcnRzLnNoaWZ0KCk7XG4gICAgfVxuICAgIHJldHVybiBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLCBjbGFzc01hcCkgfHwgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5KGNsYXNzTmFtZSk7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzKGNsYXNzR3JvdXBJZCwgaGFzUG9zdGZpeE1vZGlmaWVyKSB7XG4gICAgY29uc3QgY29uZmxpY3RzID0gY29uZmxpY3RpbmdDbGFzc0dyb3Vwc1tjbGFzc0dyb3VwSWRdIHx8IFtdO1xuICAgIGlmIChoYXNQb3N0Zml4TW9kaWZpZXIgJiYgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF0pIHtcbiAgICAgIHJldHVybiBbLi4uY29uZmxpY3RzLCAuLi5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXV07XG4gICAgfVxuICAgIHJldHVybiBjb25mbGljdHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzXG4gIH07XG59XG5mdW5jdGlvbiBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLCBjbGFzc1BhcnRPYmplY3QpIHtcbiAgaWYgKGNsYXNzUGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGNsYXNzUGFydE9iamVjdC5jbGFzc0dyb3VwSWQ7XG4gIH1cbiAgY29uc3QgY3VycmVudENsYXNzUGFydCA9IGNsYXNzUGFydHNbMF07XG4gIGNvbnN0IG5leHRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KGN1cnJlbnRDbGFzc1BhcnQpO1xuICBjb25zdCBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQgPSBuZXh0Q2xhc3NQYXJ0T2JqZWN0ID8gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cy5zbGljZSgxKSwgbmV4dENsYXNzUGFydE9iamVjdCkgOiB1bmRlZmluZWQ7XG4gIGlmIChjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQpIHtcbiAgICByZXR1cm4gY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0O1xuICB9XG4gIGlmIChjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGNsYXNzUmVzdCA9IGNsYXNzUGFydHMuam9pbihDTEFTU19QQVJUX1NFUEFSQVRPUik7XG4gIHJldHVybiBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5maW5kKCh7XG4gICAgdmFsaWRhdG9yXG4gIH0pID0+IHZhbGlkYXRvcihjbGFzc1Jlc3QpKT8uY2xhc3NHcm91cElkO1xufVxuY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlSZWdleCA9IC9eXFxbKC4rKVxcXSQvO1xuZnVuY3Rpb24gZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5KGNsYXNzTmFtZSkge1xuICBpZiAoYXJiaXRyYXJ5UHJvcGVydHlSZWdleC50ZXN0KGNsYXNzTmFtZSkpIHtcbiAgICBjb25zdCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSA9IGFyYml0cmFyeVByb3BlcnR5UmVnZXguZXhlYyhjbGFzc05hbWUpWzFdO1xuICAgIGNvbnN0IHByb3BlcnR5ID0gYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWU/LnN1YnN0cmluZygwLCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZS5pbmRleE9mKCc6JykpO1xuICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgLy8gSSB1c2UgdHdvIGRvdHMgaGVyZSBiZWNhdXNlIG9uZSBkb3QgaXMgdXNlZCBhcyBwcmVmaXggZm9yIGNsYXNzIGdyb3VwcyBpbiBwbHVnaW5zXG4gICAgICByZXR1cm4gJ2FyYml0cmFyeS4uJyArIHByb3BlcnR5O1xuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNsYXNzTWFwKGNvbmZpZykge1xuICBjb25zdCB7XG4gICAgdGhlbWUsXG4gICAgcHJlZml4XG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IGNsYXNzTWFwID0ge1xuICAgIG5leHRQYXJ0OiBuZXcgTWFwKCksXG4gICAgdmFsaWRhdG9yczogW11cbiAgfTtcbiAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMoT2JqZWN0LmVudHJpZXMoY29uZmlnLmNsYXNzR3JvdXBzKSwgcHJlZml4KTtcbiAgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcy5mb3JFYWNoKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgY2xhc3NNYXAsIGNsYXNzR3JvdXBJZCwgdGhlbWUpO1xuICB9KTtcbiAgcmV0dXJuIGNsYXNzTWFwO1xufVxuZnVuY3Rpb24gcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBjbGFzc1BhcnRPYmplY3QsIGNsYXNzR3JvdXBJZCwgdGhlbWUpIHtcbiAgY2xhc3NHcm91cC5mb3JFYWNoKGNsYXNzRGVmaW5pdGlvbiA9PiB7XG4gICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBjbGFzc1BhcnRPYmplY3RUb0VkaXQgPSBjbGFzc0RlZmluaXRpb24gPT09ICcnID8gY2xhc3NQYXJ0T2JqZWN0IDogZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGNsYXNzRGVmaW5pdGlvbik7XG4gICAgICBjbGFzc1BhcnRPYmplY3RUb0VkaXQuY2xhc3NHcm91cElkID0gY2xhc3NHcm91cElkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGlzVGhlbWVHZXR0ZXIoY2xhc3NEZWZpbml0aW9uKSkge1xuICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzRGVmaW5pdGlvbih0aGVtZSksIGNsYXNzUGFydE9iamVjdCwgY2xhc3NHcm91cElkLCB0aGVtZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLnB1c2goe1xuICAgICAgICB2YWxpZGF0b3I6IGNsYXNzRGVmaW5pdGlvbixcbiAgICAgICAgY2xhc3NHcm91cElkXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5mb3JFYWNoKChba2V5LCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwga2V5KSwgY2xhc3NHcm91cElkLCB0aGVtZSk7XG4gICAgfSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIHBhdGgpIHtcbiAgbGV0IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3Q7XG4gIHBhdGguc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpLmZvckVhY2gocGF0aFBhcnQgPT4ge1xuICAgIGlmICghY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5oYXMocGF0aFBhcnQpKSB7XG4gICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LnNldChwYXRoUGFydCwge1xuICAgICAgICBuZXh0UGFydDogbmV3IE1hcCgpLFxuICAgICAgICB2YWxpZGF0b3JzOiBbXVxuICAgICAgfSk7XG4gICAgfVxuICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChwYXRoUGFydCk7XG4gIH0pO1xuICByZXR1cm4gY3VycmVudENsYXNzUGFydE9iamVjdDtcbn1cbmZ1bmN0aW9uIGlzVGhlbWVHZXR0ZXIoZnVuYykge1xuICByZXR1cm4gZnVuYy5pc1RoZW1lR2V0dGVyO1xufVxuZnVuY3Rpb24gZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyhjbGFzc0dyb3VwRW50cmllcywgcHJlZml4KSB7XG4gIGlmICghcHJlZml4KSB7XG4gICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzO1xuICB9XG4gIHJldHVybiBjbGFzc0dyb3VwRW50cmllcy5tYXAoKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwID0gY2xhc3NHcm91cC5tYXAoY2xhc3NEZWZpbml0aW9uID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcHJlZml4ICsgY2xhc3NEZWZpbml0aW9uO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW3ByZWZpeCArIGtleSwgdmFsdWVdKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xhc3NEZWZpbml0aW9uO1xuICAgIH0pO1xuICAgIHJldHVybiBbY2xhc3NHcm91cElkLCBwcmVmaXhlZENsYXNzR3JvdXBdO1xuICB9KTtcbn1cblxuLy8gTFJVIGNhY2hlIGluc3BpcmVkIGZyb20gaGFzaGxydSAoaHR0cHM6Ly9naXRodWIuY29tL2RvbWluaWN0YXJyL2hhc2hscnUvYmxvYi92MS4wLjQvaW5kZXguanMpIGJ1dCBvYmplY3QgcmVwbGFjZWQgd2l0aCBNYXAgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZVxuZnVuY3Rpb24gY3JlYXRlTHJ1Q2FjaGUobWF4Q2FjaGVTaXplKSB7XG4gIGlmIChtYXhDYWNoZVNpemUgPCAxKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgc2V0OiAoKSA9PiB7fVxuICAgIH07XG4gIH1cbiAgbGV0IGNhY2hlU2l6ZSA9IDA7XG4gIGxldCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgbGV0IHByZXZpb3VzQ2FjaGUgPSBuZXcgTWFwKCk7XG4gIGZ1bmN0aW9uIHVwZGF0ZShrZXksIHZhbHVlKSB7XG4gICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpO1xuICAgIGNhY2hlU2l6ZSsrO1xuICAgIGlmIChjYWNoZVNpemUgPiBtYXhDYWNoZVNpemUpIHtcbiAgICAgIGNhY2hlU2l6ZSA9IDA7XG4gICAgICBwcmV2aW91c0NhY2hlID0gY2FjaGU7XG4gICAgICBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBnZXQoa2V5KSB7XG4gICAgICBsZXQgdmFsdWUgPSBjYWNoZS5nZXQoa2V5KTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodmFsdWUgPSBwcmV2aW91c0NhY2hlLmdldChrZXkpKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuY29uc3QgSU1QT1JUQU5UX01PRElGSUVSID0gJyEnO1xuZnVuY3Rpb24gY3JlYXRlUGFyc2VDbGFzc05hbWUoY29uZmlnKSB7XG4gIGNvbnN0IHtcbiAgICBzZXBhcmF0b3IsXG4gICAgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWVcbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgPSBzZXBhcmF0b3IubGVuZ3RoID09PSAxO1xuICBjb25zdCBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciA9IHNlcGFyYXRvclswXTtcbiAgY29uc3Qgc2VwYXJhdG9yTGVuZ3RoID0gc2VwYXJhdG9yLmxlbmd0aDtcbiAgLy8gcGFyc2VDbGFzc05hbWUgaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kbGFicy90YWlsd2luZGNzcy9ibG9iL3YzLjIuMi9zcmMvdXRpbC9zcGxpdEF0VG9wTGV2ZWxPbmx5LmpzXG4gIGZ1bmN0aW9uIHBhcnNlQ2xhc3NOYW1lKGNsYXNzTmFtZSkge1xuICAgIGNvbnN0IG1vZGlmaWVycyA9IFtdO1xuICAgIGxldCBicmFja2V0RGVwdGggPSAwO1xuICAgIGxldCBtb2RpZmllclN0YXJ0ID0gMDtcbiAgICBsZXQgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb247XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzTmFtZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGxldCBjdXJyZW50Q2hhcmFjdGVyID0gY2xhc3NOYW1lW2luZGV4XTtcbiAgICAgIGlmIChicmFja2V0RGVwdGggPT09IDApIHtcbiAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyICYmIChpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciB8fCBjbGFzc05hbWUuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoKSA9PT0gc2VwYXJhdG9yKSkge1xuICAgICAgICAgIG1vZGlmaWVycy5wdXNoKGNsYXNzTmFtZS5zbGljZShtb2RpZmllclN0YXJ0LCBpbmRleCkpO1xuICAgICAgICAgIG1vZGlmaWVyU3RhcnQgPSBpbmRleCArIHNlcGFyYXRvckxlbmd0aDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJy8nKSB7XG4gICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBpbmRleDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICdbJykge1xuICAgICAgICBicmFja2V0RGVwdGgrKztcbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ10nKSB7XG4gICAgICAgIGJyYWNrZXREZXB0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyID0gbW9kaWZpZXJzLmxlbmd0aCA9PT0gMCA/IGNsYXNzTmFtZSA6IGNsYXNzTmFtZS5zdWJzdHJpbmcobW9kaWZpZXJTdGFydCk7XG4gICAgY29uc3QgaGFzSW1wb3J0YW50TW9kaWZpZXIgPSBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN0YXJ0c1dpdGgoSU1QT1JUQU5UX01PRElGSUVSKTtcbiAgICBjb25zdCBiYXNlQ2xhc3NOYW1lID0gaGFzSW1wb3J0YW50TW9kaWZpZXIgPyBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN1YnN0cmluZygxKSA6IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXI7XG4gICAgY29uc3QgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uICYmIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID4gbW9kaWZpZXJTdGFydCA/IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uIC0gbW9kaWZpZXJTdGFydCA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kaWZpZXJzLFxuICAgICAgaGFzSW1wb3J0YW50TW9kaWZpZXIsXG4gICAgICBiYXNlQ2xhc3NOYW1lLFxuICAgICAgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvblxuICAgIH07XG4gIH1cbiAgaWYgKGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBhcnNlQ2xhc3NOYW1lRXhwZXJpbWVudGFsKGNsYXNzTmFtZSkge1xuICAgICAgcmV0dXJuIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKHtcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICBwYXJzZUNsYXNzTmFtZVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcGFyc2VDbGFzc05hbWU7XG59XG4vKipcbiAqIFNvcnRzIG1vZGlmaWVycyBhY2NvcmRpbmcgdG8gZm9sbG93aW5nIHNjaGVtYTpcbiAqIC0gUHJlZGVmaW5lZCBtb2RpZmllcnMgYXJlIHNvcnRlZCBhbHBoYWJldGljYWxseVxuICogLSBXaGVuIGFuIGFyYml0cmFyeSB2YXJpYW50IGFwcGVhcnMsIGl0IG11c3QgYmUgcHJlc2VydmVkIHdoaWNoIG1vZGlmaWVycyBhcmUgYmVmb3JlIGFuZCBhZnRlciBpdFxuICovXG5mdW5jdGlvbiBzb3J0TW9kaWZpZXJzKG1vZGlmaWVycykge1xuICBpZiAobW9kaWZpZXJzLmxlbmd0aCA8PSAxKSB7XG4gICAgcmV0dXJuIG1vZGlmaWVycztcbiAgfVxuICBjb25zdCBzb3J0ZWRNb2RpZmllcnMgPSBbXTtcbiAgbGV0IHVuc29ydGVkTW9kaWZpZXJzID0gW107XG4gIG1vZGlmaWVycy5mb3JFYWNoKG1vZGlmaWVyID0+IHtcbiAgICBjb25zdCBpc0FyYml0cmFyeVZhcmlhbnQgPSBtb2RpZmllclswXSA9PT0gJ1snO1xuICAgIGlmIChpc0FyYml0cmFyeVZhcmlhbnQpIHtcbiAgICAgIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSwgbW9kaWZpZXIpO1xuICAgICAgdW5zb3J0ZWRNb2RpZmllcnMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zb3J0ZWRNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gICAgfVxuICB9KTtcbiAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpKTtcbiAgcmV0dXJuIHNvcnRlZE1vZGlmaWVycztcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1V0aWxzKGNvbmZpZykge1xuICByZXR1cm4ge1xuICAgIGNhY2hlOiBjcmVhdGVMcnVDYWNoZShjb25maWcuY2FjaGVTaXplKSxcbiAgICBwYXJzZUNsYXNzTmFtZTogY3JlYXRlUGFyc2VDbGFzc05hbWUoY29uZmlnKSxcbiAgICAuLi5jcmVhdGVDbGFzc0dyb3VwVXRpbHMoY29uZmlnKVxuICB9O1xufVxuY29uc3QgU1BMSVRfQ0xBU1NFU19SRUdFWCA9IC9cXHMrLztcbmZ1bmN0aW9uIG1lcmdlQ2xhc3NMaXN0KGNsYXNzTGlzdCwgY29uZmlnVXRpbHMpIHtcbiAgY29uc3Qge1xuICAgIHBhcnNlQ2xhc3NOYW1lLFxuICAgIGdldENsYXNzR3JvdXBJZCxcbiAgICBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHNcbiAgfSA9IGNvbmZpZ1V0aWxzO1xuICAvKipcbiAgICogU2V0IG9mIGNsYXNzR3JvdXBJZHMgaW4gZm9sbG93aW5nIGZvcm1hdDpcbiAgICogYHtpbXBvcnRhbnRNb2RpZmllcn17dmFyaWFudE1vZGlmaWVyc317Y2xhc3NHcm91cElkfWBcbiAgICogQGV4YW1wbGUgJ2Zsb2F0J1xuICAgKiBAZXhhbXBsZSAnaG92ZXI6Zm9jdXM6YmctY29sb3InXG4gICAqIEBleGFtcGxlICdtZDohcHInXG4gICAqL1xuICBjb25zdCBjbGFzc0dyb3Vwc0luQ29uZmxpY3QgPSBuZXcgU2V0KCk7XG4gIHJldHVybiBjbGFzc0xpc3QudHJpbSgpLnNwbGl0KFNQTElUX0NMQVNTRVNfUkVHRVgpLm1hcChvcmlnaW5hbENsYXNzTmFtZSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgbW9kaWZpZXJzLFxuICAgICAgaGFzSW1wb3J0YW50TW9kaWZpZXIsXG4gICAgICBiYXNlQ2xhc3NOYW1lLFxuICAgICAgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvblxuICAgIH0gPSBwYXJzZUNsYXNzTmFtZShvcmlnaW5hbENsYXNzTmFtZSk7XG4gICAgbGV0IGhhc1Bvc3RmaXhNb2RpZmllciA9IEJvb2xlYW4obWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbik7XG4gICAgbGV0IGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChoYXNQb3N0Zml4TW9kaWZpZXIgPyBiYXNlQ2xhc3NOYW1lLnN1YnN0cmluZygwLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKSA6IGJhc2VDbGFzc05hbWUpO1xuICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICBpZiAoIWhhc1Bvc3RmaXhNb2RpZmllcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlzVGFpbHdpbmRDbGFzczogZmFsc2UsXG4gICAgICAgICAgb3JpZ2luYWxDbGFzc05hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChiYXNlQ2xhc3NOYW1lKTtcbiAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaXNUYWlsd2luZENsYXNzOiBmYWxzZSxcbiAgICAgICAgICBvcmlnaW5hbENsYXNzTmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyID0gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHZhcmlhbnRNb2RpZmllciA9IHNvcnRNb2RpZmllcnMobW9kaWZpZXJzKS5qb2luKCc6Jyk7XG4gICAgY29uc3QgbW9kaWZpZXJJZCA9IGhhc0ltcG9ydGFudE1vZGlmaWVyID8gdmFyaWFudE1vZGlmaWVyICsgSU1QT1JUQU5UX01PRElGSUVSIDogdmFyaWFudE1vZGlmaWVyO1xuICAgIHJldHVybiB7XG4gICAgICBpc1RhaWx3aW5kQ2xhc3M6IHRydWUsXG4gICAgICBtb2RpZmllcklkLFxuICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgb3JpZ2luYWxDbGFzc05hbWUsXG4gICAgICBoYXNQb3N0Zml4TW9kaWZpZXJcbiAgICB9O1xuICB9KS5yZXZlcnNlKClcbiAgLy8gTGFzdCBjbGFzcyBpbiBjb25mbGljdCB3aW5zLCBzbyB3ZSBuZWVkIHRvIGZpbHRlciBjb25mbGljdGluZyBjbGFzc2VzIGluIHJldmVyc2Ugb3JkZXIuXG4gIC5maWx0ZXIocGFyc2VkID0+IHtcbiAgICBpZiAoIXBhcnNlZC5pc1RhaWx3aW5kQ2xhc3MpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB7XG4gICAgICBtb2RpZmllcklkLFxuICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyXG4gICAgfSA9IHBhcnNlZDtcbiAgICBjb25zdCBjbGFzc0lkID0gbW9kaWZpZXJJZCArIGNsYXNzR3JvdXBJZDtcbiAgICBpZiAoY2xhc3NHcm91cHNJbkNvbmZsaWN0LmhhcyhjbGFzc0lkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QuYWRkKGNsYXNzSWQpO1xuICAgIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyhjbGFzc0dyb3VwSWQsIGhhc1Bvc3RmaXhNb2RpZmllcikuZm9yRWFjaChncm91cCA9PiBjbGFzc0dyb3Vwc0luQ29uZmxpY3QuYWRkKG1vZGlmaWVySWQgKyBncm91cCkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9KS5yZXZlcnNlKCkubWFwKHBhcnNlZCA9PiBwYXJzZWQub3JpZ2luYWxDbGFzc05hbWUpLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBUaGUgY29kZSBpbiB0aGlzIGZpbGUgaXMgY29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4IGFuZCBtb2RpZmllZCB0byBzdWl0IHRoZSBuZWVkcyBvZiB0YWlsd2luZC1tZXJnZSBiZXR0ZXIuXG4gKlxuICogU3BlY2lmaWNhbGx5OlxuICogLSBSdW50aW1lIGNvZGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvc3JjL2luZGV4LmpzXG4gKiAtIFR5cGVTY3JpcHQgdHlwZXMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvY2xzeC5kLnRzXG4gKlxuICogT3JpZ2luYWwgY29kZSBoYXMgTUlUIGxpY2Vuc2U6IENvcHlyaWdodCAoYykgTHVrZSBFZHdhcmRzIDxsdWtlLmVkd2FyZHMwNUBnbWFpbC5jb20+IChsdWtlZWQuY29tKVxuICovXG5mdW5jdGlvbiB0d0pvaW4oKSB7XG4gIGxldCBpbmRleCA9IDA7XG4gIGxldCBhcmd1bWVudDtcbiAgbGV0IHJlc29sdmVkVmFsdWU7XG4gIGxldCBzdHJpbmcgPSAnJztcbiAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIGlmIChhcmd1bWVudCA9IGFyZ3VtZW50c1tpbmRleCsrXSkge1xuICAgICAgaWYgKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKGFyZ3VtZW50KSkge1xuICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpO1xuICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cmluZztcbn1cbmZ1bmN0aW9uIHRvVmFsdWUobWl4KSB7XG4gIGlmICh0eXBlb2YgbWl4ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBtaXg7XG4gIH1cbiAgbGV0IHJlc29sdmVkVmFsdWU7XG4gIGxldCBzdHJpbmcgPSAnJztcbiAgZm9yIChsZXQgayA9IDA7IGsgPCBtaXgubGVuZ3RoOyBrKyspIHtcbiAgICBpZiAobWl4W2tdKSB7XG4gICAgICBpZiAocmVzb2x2ZWRWYWx1ZSA9IHRvVmFsdWUobWl4W2tdKSkge1xuICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpO1xuICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cmluZztcbn1cbmZ1bmN0aW9uIGNyZWF0ZVRhaWx3aW5kTWVyZ2UoY3JlYXRlQ29uZmlnRmlyc3QsIC4uLmNyZWF0ZUNvbmZpZ1Jlc3QpIHtcbiAgbGV0IGNvbmZpZ1V0aWxzO1xuICBsZXQgY2FjaGVHZXQ7XG4gIGxldCBjYWNoZVNldDtcbiAgbGV0IGZ1bmN0aW9uVG9DYWxsID0gaW5pdFRhaWx3aW5kTWVyZ2U7XG4gIGZ1bmN0aW9uIGluaXRUYWlsd2luZE1lcmdlKGNsYXNzTGlzdCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IGNyZWF0ZUNvbmZpZ1Jlc3QucmVkdWNlKChwcmV2aW91c0NvbmZpZywgY3JlYXRlQ29uZmlnQ3VycmVudCkgPT4gY3JlYXRlQ29uZmlnQ3VycmVudChwcmV2aW91c0NvbmZpZyksIGNyZWF0ZUNvbmZpZ0ZpcnN0KCkpO1xuICAgIGNvbmZpZ1V0aWxzID0gY3JlYXRlQ29uZmlnVXRpbHMoY29uZmlnKTtcbiAgICBjYWNoZUdldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLmdldDtcbiAgICBjYWNoZVNldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLnNldDtcbiAgICBmdW5jdGlvblRvQ2FsbCA9IHRhaWx3aW5kTWVyZ2U7XG4gICAgcmV0dXJuIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0KTtcbiAgfVxuICBmdW5jdGlvbiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdCkge1xuICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlR2V0KGNsYXNzTGlzdCk7XG4gICAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gbWVyZ2VDbGFzc0xpc3QoY2xhc3NMaXN0LCBjb25maWdVdGlscyk7XG4gICAgY2FjaGVTZXQoY2xhc3NMaXN0LCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIGNhbGxUYWlsd2luZE1lcmdlKCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvQ2FsbCh0d0pvaW4uYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gIH07XG59XG5mdW5jdGlvbiBmcm9tVGhlbWUoa2V5KSB7XG4gIGNvbnN0IHRoZW1lR2V0dGVyID0gdGhlbWUgPT4gdGhlbWVba2V5XSB8fCBbXTtcbiAgdGhlbWVHZXR0ZXIuaXNUaGVtZUdldHRlciA9IHRydWU7XG4gIHJldHVybiB0aGVtZUdldHRlcjtcbn1cbmNvbnN0IGFyYml0cmFyeVZhbHVlUmVnZXggPSAvXlxcWyg/OihbYS16LV0rKTopPyguKylcXF0kL2k7XG5jb25zdCBmcmFjdGlvblJlZ2V4ID0gL15cXGQrXFwvXFxkKyQvO1xuY29uc3Qgc3RyaW5nTGVuZ3RocyA9IC8qI19fUFVSRV9fKi9uZXcgU2V0KFsncHgnLCAnZnVsbCcsICdzY3JlZW4nXSk7XG5jb25zdCB0c2hpcnRVbml0UmVnZXggPSAvXihcXGQrKFxcLlxcZCspPyk/KHhzfHNtfG1kfGxnfHhsKSQvO1xuY29uc3QgbGVuZ3RoVW5pdFJlZ2V4ID0gL1xcZCsoJXxweHxyP2VtfFtzZGxdP3YoW2h3aWJdfG1pbnxtYXgpfHB0fHBjfGlufGNtfG1tfGNhcHxjaHxleHxyP2xofGNxKHd8aHxpfGJ8bWlufG1heCkpfFxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXFwoLitcXCl8XjAkLztcbmNvbnN0IGNvbG9yRnVuY3Rpb25SZWdleCA9IC9eKHJnYmE/fGhzbGE/fGh3Ynwob2spPyhsYWJ8bGNoKSlcXCguK1xcKSQvO1xuLy8gU2hhZG93IGFsd2F5cyBiZWdpbnMgd2l0aCB4IGFuZCB5IG9mZnNldCBzZXBhcmF0ZWQgYnkgdW5kZXJzY29yZSBvcHRpb25hbGx5IHByZXBlbmRlZCBieSBpbnNldFxuY29uc3Qgc2hhZG93UmVnZXggPSAvXihpbnNldF8pPy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApXy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApLztcbmNvbnN0IGltYWdlUmVnZXggPSAvXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVxcKC4rXFwpJC87XG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gaXNOdW1iZXIodmFsdWUpIHx8IHN0cmluZ0xlbmd0aHMuaGFzKHZhbHVlKSB8fCBmcmFjdGlvblJlZ2V4LnRlc3QodmFsdWUpO1xufVxuZnVuY3Rpb24gaXNBcmJpdHJhcnlMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdsZW5ndGgnLCBpc0xlbmd0aE9ubHkpO1xufVxuZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIEJvb2xlYW4odmFsdWUpICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSk7XG59XG5mdW5jdGlvbiBpc0FyYml0cmFyeU51bWJlcih2YWx1ZSkge1xuICByZXR1cm4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ251bWJlcicsIGlzTnVtYmVyKTtcbn1cbmZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZSkge1xuICByZXR1cm4gQm9vbGVhbih2YWx1ZSkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIodmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGlzUGVyY2VudCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuZW5kc1dpdGgoJyUnKSAmJiBpc051bWJlcih2YWx1ZS5zbGljZSgwLCAtMSkpO1xufVxuZnVuY3Rpb24gaXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSkge1xuICByZXR1cm4gYXJiaXRyYXJ5VmFsdWVSZWdleC50ZXN0KHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGlzVHNoaXJ0U2l6ZSh2YWx1ZSkge1xuICByZXR1cm4gdHNoaXJ0VW5pdFJlZ2V4LnRlc3QodmFsdWUpO1xufVxuY29uc3Qgc2l6ZUxhYmVscyA9IC8qI19fUFVSRV9fKi9uZXcgU2V0KFsnbGVuZ3RoJywgJ3NpemUnLCAncGVyY2VudGFnZSddKTtcbmZ1bmN0aW9uIGlzQXJiaXRyYXJ5U2l6ZSh2YWx1ZSkge1xuICByZXR1cm4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgc2l6ZUxhYmVscywgaXNOZXZlcik7XG59XG5mdW5jdGlvbiBpc0FyYml0cmFyeVBvc2l0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAncG9zaXRpb24nLCBpc05ldmVyKTtcbn1cbmNvbnN0IGltYWdlTGFiZWxzID0gLyojX19QVVJFX18qL25ldyBTZXQoWydpbWFnZScsICd1cmwnXSk7XG5mdW5jdGlvbiBpc0FyYml0cmFyeUltYWdlKHZhbHVlKSB7XG4gIHJldHVybiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBpbWFnZUxhYmVscywgaXNJbWFnZSk7XG59XG5mdW5jdGlvbiBpc0FyYml0cmFyeVNoYWRvdyh2YWx1ZSkge1xuICByZXR1cm4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJycsIGlzU2hhZG93KTtcbn1cbmZ1bmN0aW9uIGlzQW55KCkge1xuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIGxhYmVsLCB0ZXN0VmFsdWUpIHtcbiAgY29uc3QgcmVzdWx0ID0gYXJiaXRyYXJ5VmFsdWVSZWdleC5leGVjKHZhbHVlKTtcbiAgaWYgKHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHRbMV0pIHtcbiAgICAgIHJldHVybiB0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnID8gcmVzdWx0WzFdID09PSBsYWJlbCA6IGxhYmVsLmhhcyhyZXN1bHRbMV0pO1xuICAgIH1cbiAgICByZXR1cm4gdGVzdFZhbHVlKHJlc3VsdFsyXSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaXNMZW5ndGhPbmx5KHZhbHVlKSB7XG4gIC8vIGBjb2xvckZ1bmN0aW9uUmVnZXhgIGNoZWNrIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGNvbG9yIGZ1bmN0aW9ucyBjYW4gaGF2ZSBwZXJjZW50YWdlcyBpbiB0aGVtIHdoaWNoIHdoaWNoIHdvdWxkIGJlIGluY29ycmVjdGx5IGNsYXNzaWZpZWQgYXMgbGVuZ3Rocy5cbiAgLy8gRm9yIGV4YW1wbGUsIGBoc2woMCAwJSAwJSlgIHdvdWxkIGJlIGNsYXNzaWZpZWQgYXMgYSBsZW5ndGggd2l0aG91dCB0aGlzIGNoZWNrLlxuICAvLyBJIGNvdWxkIGFsc28gdXNlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIGluIGBsZW5ndGhVbml0UmVnZXhgIGJ1dCB0aGF0IGlzbid0IHN1cHBvcnRlZCB3aWRlbHkgZW5vdWdoLlxuICByZXR1cm4gbGVuZ3RoVW5pdFJlZ2V4LnRlc3QodmFsdWUpICYmICFjb2xvckZ1bmN0aW9uUmVnZXgudGVzdCh2YWx1ZSk7XG59XG5mdW5jdGlvbiBpc05ldmVyKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBpc1NoYWRvdyh2YWx1ZSkge1xuICByZXR1cm4gc2hhZG93UmVnZXgudGVzdCh2YWx1ZSk7XG59XG5mdW5jdGlvbiBpc0ltYWdlKHZhbHVlKSB7XG4gIHJldHVybiBpbWFnZVJlZ2V4LnRlc3QodmFsdWUpO1xufVxuY29uc3QgdmFsaWRhdG9ycyA9IC8qI19fUFVSRV9fKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIGlzQW55LFxuICBpc0FyYml0cmFyeUltYWdlLFxuICBpc0FyYml0cmFyeUxlbmd0aCxcbiAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gIGlzQXJiaXRyYXJ5UG9zaXRpb24sXG4gIGlzQXJiaXRyYXJ5U2hhZG93LFxuICBpc0FyYml0cmFyeVNpemUsXG4gIGlzQXJiaXRyYXJ5VmFsdWUsXG4gIGlzSW50ZWdlcixcbiAgaXNMZW5ndGgsXG4gIGlzTnVtYmVyLFxuICBpc1BlcmNlbnQsXG4gIGlzVHNoaXJ0U2l6ZVxufSwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7XG4gIHZhbHVlOiAnTW9kdWxlJ1xufSk7XG5mdW5jdGlvbiBnZXREZWZhdWx0Q29uZmlnKCkge1xuICBjb25zdCBjb2xvcnMgPSBmcm9tVGhlbWUoJ2NvbG9ycycpO1xuICBjb25zdCBzcGFjaW5nID0gZnJvbVRoZW1lKCdzcGFjaW5nJyk7XG4gIGNvbnN0IGJsdXIgPSBmcm9tVGhlbWUoJ2JsdXInKTtcbiAgY29uc3QgYnJpZ2h0bmVzcyA9IGZyb21UaGVtZSgnYnJpZ2h0bmVzcycpO1xuICBjb25zdCBib3JkZXJDb2xvciA9IGZyb21UaGVtZSgnYm9yZGVyQ29sb3InKTtcbiAgY29uc3QgYm9yZGVyUmFkaXVzID0gZnJvbVRoZW1lKCdib3JkZXJSYWRpdXMnKTtcbiAgY29uc3QgYm9yZGVyU3BhY2luZyA9IGZyb21UaGVtZSgnYm9yZGVyU3BhY2luZycpO1xuICBjb25zdCBib3JkZXJXaWR0aCA9IGZyb21UaGVtZSgnYm9yZGVyV2lkdGgnKTtcbiAgY29uc3QgY29udHJhc3QgPSBmcm9tVGhlbWUoJ2NvbnRyYXN0Jyk7XG4gIGNvbnN0IGdyYXlzY2FsZSA9IGZyb21UaGVtZSgnZ3JheXNjYWxlJyk7XG4gIGNvbnN0IGh1ZVJvdGF0ZSA9IGZyb21UaGVtZSgnaHVlUm90YXRlJyk7XG4gIGNvbnN0IGludmVydCA9IGZyb21UaGVtZSgnaW52ZXJ0Jyk7XG4gIGNvbnN0IGdhcCA9IGZyb21UaGVtZSgnZ2FwJyk7XG4gIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wcyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BzJyk7XG4gIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zID0gZnJvbVRoZW1lKCdncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucycpO1xuICBjb25zdCBpbnNldCA9IGZyb21UaGVtZSgnaW5zZXQnKTtcbiAgY29uc3QgbWFyZ2luID0gZnJvbVRoZW1lKCdtYXJnaW4nKTtcbiAgY29uc3Qgb3BhY2l0eSA9IGZyb21UaGVtZSgnb3BhY2l0eScpO1xuICBjb25zdCBwYWRkaW5nID0gZnJvbVRoZW1lKCdwYWRkaW5nJyk7XG4gIGNvbnN0IHNhdHVyYXRlID0gZnJvbVRoZW1lKCdzYXR1cmF0ZScpO1xuICBjb25zdCBzY2FsZSA9IGZyb21UaGVtZSgnc2NhbGUnKTtcbiAgY29uc3Qgc2VwaWEgPSBmcm9tVGhlbWUoJ3NlcGlhJyk7XG4gIGNvbnN0IHNrZXcgPSBmcm9tVGhlbWUoJ3NrZXcnKTtcbiAgY29uc3Qgc3BhY2UgPSBmcm9tVGhlbWUoJ3NwYWNlJyk7XG4gIGNvbnN0IHRyYW5zbGF0ZSA9IGZyb21UaGVtZSgndHJhbnNsYXRlJyk7XG4gIGNvbnN0IGdldE92ZXJzY3JvbGwgPSAoKSA9PiBbJ2F1dG8nLCAnY29udGFpbicsICdub25lJ107XG4gIGNvbnN0IGdldE92ZXJmbG93ID0gKCkgPT4gWydhdXRvJywgJ2hpZGRlbicsICdjbGlwJywgJ3Zpc2libGUnLCAnc2Nyb2xsJ107XG4gIGNvbnN0IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddO1xuICBjb25zdCBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSA9ICgpID0+IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXTtcbiAgY29uc3QgZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5ID0gKCkgPT4gWycnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdO1xuICBjb25zdCBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXTtcbiAgY29uc3QgZ2V0UG9zaXRpb25zID0gKCkgPT4gWydib3R0b20nLCAnY2VudGVyJywgJ2xlZnQnLCAnbGVmdC1ib3R0b20nLCAnbGVmdC10b3AnLCAncmlnaHQnLCAncmlnaHQtYm90dG9tJywgJ3JpZ2h0LXRvcCcsICd0b3AnXTtcbiAgY29uc3QgZ2V0TGluZVN0eWxlcyA9ICgpID0+IFsnc29saWQnLCAnZGFzaGVkJywgJ2RvdHRlZCcsICdkb3VibGUnLCAnbm9uZSddO1xuICBjb25zdCBnZXRCbGVuZE1vZGVzID0gKCkgPT4gWydub3JtYWwnLCAnbXVsdGlwbHknLCAnc2NyZWVuJywgJ292ZXJsYXknLCAnZGFya2VuJywgJ2xpZ2h0ZW4nLCAnY29sb3ItZG9kZ2UnLCAnY29sb3ItYnVybicsICdoYXJkLWxpZ2h0JywgJ3NvZnQtbGlnaHQnLCAnZGlmZmVyZW5jZScsICdleGNsdXNpb24nLCAnaHVlJywgJ3NhdHVyYXRpb24nLCAnY29sb3InLCAnbHVtaW5vc2l0eSddO1xuICBjb25zdCBnZXRBbGlnbiA9ICgpID0+IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiZXR3ZWVuJywgJ2Fyb3VuZCcsICdldmVubHknLCAnc3RyZXRjaCddO1xuICBjb25zdCBnZXRaZXJvQW5kRW1wdHkgPSAoKSA9PiBbJycsICcwJywgaXNBcmJpdHJhcnlWYWx1ZV07XG4gIGNvbnN0IGdldEJyZWFrcyA9ICgpID0+IFsnYXV0bycsICdhdm9pZCcsICdhbGwnLCAnYXZvaWQtcGFnZScsICdwYWdlJywgJ2xlZnQnLCAncmlnaHQnLCAnY29sdW1uJ107XG4gIGNvbnN0IGdldE51bWJlciA9ICgpID0+IFtpc051bWJlciwgaXNBcmJpdHJhcnlOdW1iZXJdO1xuICBjb25zdCBnZXROdW1iZXJBbmRBcmJpdHJhcnkgPSAoKSA9PiBbaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdO1xuICByZXR1cm4ge1xuICAgIGNhY2hlU2l6ZTogNTAwLFxuICAgIHNlcGFyYXRvcjogJzonLFxuICAgIHRoZW1lOiB7XG4gICAgICBjb2xvcnM6IFtpc0FueV0sXG4gICAgICBzcGFjaW5nOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgIGJsdXI6IFsnbm9uZScsICcnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgYnJpZ2h0bmVzczogZ2V0TnVtYmVyKCksXG4gICAgICBib3JkZXJDb2xvcjogW2NvbG9yc10sXG4gICAgICBib3JkZXJSYWRpdXM6IFsnbm9uZScsICcnLCAnZnVsbCcsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICBib3JkZXJTcGFjaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgYm9yZGVyV2lkdGg6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpLFxuICAgICAgY29udHJhc3Q6IGdldE51bWJlcigpLFxuICAgICAgZ3JheXNjYWxlOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgIGh1ZVJvdGF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICBpbnZlcnQ6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgZ2FwOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgZ3JhZGllbnRDb2xvclN0b3BzOiBbY29sb3JzXSxcbiAgICAgIGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zOiBbaXNQZXJjZW50LCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICBpbnNldDogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICBtYXJnaW46IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgb3BhY2l0eTogZ2V0TnVtYmVyKCksXG4gICAgICBwYWRkaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgc2F0dXJhdGU6IGdldE51bWJlcigpLFxuICAgICAgc2NhbGU6IGdldE51bWJlcigpLFxuICAgICAgc2VwaWE6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgc2tldzogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICBzcGFjZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIHRyYW5zbGF0ZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgIH0sXG4gICAgY2xhc3NHcm91cHM6IHtcbiAgICAgIC8vIExheW91dFxuICAgICAgLyoqXG4gICAgICAgKiBBc3BlY3QgUmF0aW9cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hc3BlY3QtcmF0aW9cbiAgICAgICAqL1xuICAgICAgYXNwZWN0OiBbe1xuICAgICAgICBhc3BlY3Q6IFsnYXV0bycsICdzcXVhcmUnLCAndmlkZW8nLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIENvbnRhaW5lclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRhaW5lclxuICAgICAgICovXG4gICAgICBjb250YWluZXI6IFsnY29udGFpbmVyJ10sXG4gICAgICAvKipcbiAgICAgICAqIENvbHVtbnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb2x1bW5zXG4gICAgICAgKi9cbiAgICAgIGNvbHVtbnM6IFt7XG4gICAgICAgIGNvbHVtbnM6IFtpc1RzaGlydFNpemVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQnJlYWsgQWZ0ZXJcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1hZnRlclxuICAgICAgICovXG4gICAgICAnYnJlYWstYWZ0ZXInOiBbe1xuICAgICAgICAnYnJlYWstYWZ0ZXInOiBnZXRCcmVha3MoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJyZWFrIEJlZm9yZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWJlZm9yZVxuICAgICAgICovXG4gICAgICAnYnJlYWstYmVmb3JlJzogW3tcbiAgICAgICAgJ2JyZWFrLWJlZm9yZSc6IGdldEJyZWFrcygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQnJlYWsgSW5zaWRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstaW5zaWRlXG4gICAgICAgKi9cbiAgICAgICdicmVhay1pbnNpZGUnOiBbe1xuICAgICAgICAnYnJlYWstaW5zaWRlJzogWydhdXRvJywgJ2F2b2lkJywgJ2F2b2lkLXBhZ2UnLCAnYXZvaWQtY29sdW1uJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3ggRGVjb3JhdGlvbiBCcmVha1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1kZWNvcmF0aW9uLWJyZWFrXG4gICAgICAgKi9cbiAgICAgICdib3gtZGVjb3JhdGlvbic6IFt7XG4gICAgICAgICdib3gtZGVjb3JhdGlvbic6IFsnc2xpY2UnLCAnY2xvbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJveCBTaXppbmdcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2l6aW5nXG4gICAgICAgKi9cbiAgICAgIGJveDogW3tcbiAgICAgICAgYm94OiBbJ2JvcmRlcicsICdjb250ZW50J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXNwbGF5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGlzcGxheVxuICAgICAgICovXG4gICAgICBkaXNwbGF5OiBbJ2Jsb2NrJywgJ2lubGluZS1ibG9jaycsICdpbmxpbmUnLCAnZmxleCcsICdpbmxpbmUtZmxleCcsICd0YWJsZScsICdpbmxpbmUtdGFibGUnLCAndGFibGUtY2FwdGlvbicsICd0YWJsZS1jZWxsJywgJ3RhYmxlLWNvbHVtbicsICd0YWJsZS1jb2x1bW4tZ3JvdXAnLCAndGFibGUtZm9vdGVyLWdyb3VwJywgJ3RhYmxlLWhlYWRlci1ncm91cCcsICd0YWJsZS1yb3ctZ3JvdXAnLCAndGFibGUtcm93JywgJ2Zsb3ctcm9vdCcsICdncmlkJywgJ2lubGluZS1ncmlkJywgJ2NvbnRlbnRzJywgJ2xpc3QtaXRlbScsICdoaWRkZW4nXSxcbiAgICAgIC8qKlxuICAgICAgICogRmxvYXRzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxvYXRcbiAgICAgICAqL1xuICAgICAgZmxvYXQ6IFt7XG4gICAgICAgIGZsb2F0OiBbJ3JpZ2h0JywgJ2xlZnQnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIENsZWFyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2xlYXJcbiAgICAgICAqL1xuICAgICAgY2xlYXI6IFt7XG4gICAgICAgIGNsZWFyOiBbJ2xlZnQnLCAncmlnaHQnLCAnYm90aCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSXNvbGF0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaXNvbGF0aW9uXG4gICAgICAgKi9cbiAgICAgIGlzb2xhdGlvbjogWydpc29sYXRlJywgJ2lzb2xhdGlvbi1hdXRvJ10sXG4gICAgICAvKipcbiAgICAgICAqIE9iamVjdCBGaXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtZml0XG4gICAgICAgKi9cbiAgICAgICdvYmplY3QtZml0JzogW3tcbiAgICAgICAgb2JqZWN0OiBbJ2NvbnRhaW4nLCAnY292ZXInLCAnZmlsbCcsICdub25lJywgJ3NjYWxlLWRvd24nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE9iamVjdCBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1wb3NpdGlvblxuICAgICAgICovXG4gICAgICAnb2JqZWN0LXBvc2l0aW9uJzogW3tcbiAgICAgICAgb2JqZWN0OiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcmZsb3dcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICovXG4gICAgICBvdmVyZmxvdzogW3tcbiAgICAgICAgb3ZlcmZsb3c6IGdldE92ZXJmbG93KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdmVyZmxvdyBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAqL1xuICAgICAgJ292ZXJmbG93LXgnOiBbe1xuICAgICAgICAnb3ZlcmZsb3cteCc6IGdldE92ZXJmbG93KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdmVyZmxvdyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAqL1xuICAgICAgJ292ZXJmbG93LXknOiBbe1xuICAgICAgICAnb3ZlcmZsb3cteSc6IGdldE92ZXJmbG93KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICovXG4gICAgICBvdmVyc2Nyb2xsOiBbe1xuICAgICAgICBvdmVyc2Nyb2xsOiBnZXRPdmVyc2Nyb2xsKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgKi9cbiAgICAgICdvdmVyc2Nyb2xsLXgnOiBbe1xuICAgICAgICAnb3ZlcnNjcm9sbC14JzogZ2V0T3ZlcnNjcm9sbCgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICovXG4gICAgICAnb3ZlcnNjcm9sbC15JzogW3tcbiAgICAgICAgJ292ZXJzY3JvbGwteSc6IGdldE92ZXJzY3JvbGwoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcG9zaXRpb25cbiAgICAgICAqL1xuICAgICAgcG9zaXRpb246IFsnc3RhdGljJywgJ2ZpeGVkJywgJ2Fic29sdXRlJywgJ3JlbGF0aXZlJywgJ3N0aWNreSddLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3AgLyBSaWdodCAvIEJvdHRvbSAvIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgaW5zZXQ6IFt7XG4gICAgICAgIGluc2V0OiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmlnaHQgLyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgICdpbnNldC14JzogW3tcbiAgICAgICAgJ2luc2V0LXgnOiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG9wIC8gQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgICdpbnNldC15JzogW3tcbiAgICAgICAgJ2luc2V0LXknOiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgc3RhcnQ6IFt7XG4gICAgICAgIHN0YXJ0OiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIGVuZDogW3tcbiAgICAgICAgZW5kOiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIHRvcDogW3tcbiAgICAgICAgdG9wOiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgcmlnaHQ6IFt7XG4gICAgICAgIHJpZ2h0OiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIGJvdHRvbTogW3tcbiAgICAgICAgYm90dG9tOiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBsZWZ0OiBbe1xuICAgICAgICBsZWZ0OiBbaW5zZXRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVmlzaWJpbGl0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Zpc2liaWxpdHlcbiAgICAgICAqL1xuICAgICAgdmlzaWJpbGl0eTogWyd2aXNpYmxlJywgJ2ludmlzaWJsZScsICdjb2xsYXBzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBaLUluZGV4XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvei1pbmRleFxuICAgICAgICovXG4gICAgICB6OiBbe1xuICAgICAgICB6OiBbJ2F1dG8nLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIEZsZXhib3ggYW5kIEdyaWRcbiAgICAgIC8qKlxuICAgICAgICogRmxleCBCYXNpc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtYmFzaXNcbiAgICAgICAqL1xuICAgICAgYmFzaXM6IFt7XG4gICAgICAgIGJhc2lzOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZsZXggRGlyZWN0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1kaXJlY3Rpb25cbiAgICAgICAqL1xuICAgICAgJ2ZsZXgtZGlyZWN0aW9uJzogW3tcbiAgICAgICAgZmxleDogWydyb3cnLCAncm93LXJldmVyc2UnLCAnY29sJywgJ2NvbC1yZXZlcnNlJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IFdyYXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXdyYXBcbiAgICAgICAqL1xuICAgICAgJ2ZsZXgtd3JhcCc6IFt7XG4gICAgICAgIGZsZXg6IFsnd3JhcCcsICd3cmFwLXJldmVyc2UnLCAnbm93cmFwJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleFxuICAgICAgICovXG4gICAgICBmbGV4OiBbe1xuICAgICAgICBmbGV4OiBbJzEnLCAnYXV0bycsICdpbml0aWFsJywgJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZsZXggR3Jvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZ3Jvd1xuICAgICAgICovXG4gICAgICBncm93OiBbe1xuICAgICAgICBncm93OiBnZXRaZXJvQW5kRW1wdHkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZsZXggU2hyaW5rXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1zaHJpbmtcbiAgICAgICAqL1xuICAgICAgc2hyaW5rOiBbe1xuICAgICAgICBzaHJpbms6IGdldFplcm9BbmRFbXB0eSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3JkZXJcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcmRlclxuICAgICAgICovXG4gICAgICBvcmRlcjogW3tcbiAgICAgICAgb3JkZXI6IFsnZmlyc3QnLCAnbGFzdCcsICdub25lJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgVGVtcGxhdGUgQ29sdW1uc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtY29sdW1uc1xuICAgICAgICovXG4gICAgICAnZ3JpZC1jb2xzJzogW3tcbiAgICAgICAgJ2dyaWQtY29scyc6IFtpc0FueV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIENvbHVtbiBTdGFydCAvIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgKi9cbiAgICAgICdjb2wtc3RhcnQtZW5kJzogW3tcbiAgICAgICAgY29sOiBbJ2F1dG8nLCB7XG4gICAgICAgICAgc3BhbjogWydmdWxsJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgICB9LCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAqL1xuICAgICAgJ2NvbC1zdGFydCc6IFt7XG4gICAgICAgICdjb2wtc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBDb2x1bW4gRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAqL1xuICAgICAgJ2NvbC1lbmQnOiBbe1xuICAgICAgICAnY29sLWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIFRlbXBsYXRlIFJvd3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLXJvd3NcbiAgICAgICAqL1xuICAgICAgJ2dyaWQtcm93cyc6IFt7XG4gICAgICAgICdncmlkLXJvd3MnOiBbaXNBbnldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBSb3cgU3RhcnQgLyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICovXG4gICAgICAncm93LXN0YXJ0LWVuZCc6IFt7XG4gICAgICAgIHJvdzogWydhdXRvJywge1xuICAgICAgICAgIHNwYW46IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICAgIH0sIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBSb3cgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICovXG4gICAgICAncm93LXN0YXJ0JzogW3tcbiAgICAgICAgJ3Jvdy1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIFJvdyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICovXG4gICAgICAncm93LWVuZCc6IFt7XG4gICAgICAgICdyb3ctZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQXV0byBGbG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWZsb3dcbiAgICAgICAqL1xuICAgICAgJ2dyaWQtZmxvdyc6IFt7XG4gICAgICAgICdncmlkLWZsb3cnOiBbJ3JvdycsICdjb2wnLCAnZGVuc2UnLCAncm93LWRlbnNlJywgJ2NvbC1kZW5zZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBBdXRvIENvbHVtbnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tY29sdW1uc1xuICAgICAgICovXG4gICAgICAnYXV0by1jb2xzJzogW3tcbiAgICAgICAgJ2F1dG8tY29scyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIEF1dG8gUm93c1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1yb3dzXG4gICAgICAgKi9cbiAgICAgICdhdXRvLXJvd3MnOiBbe1xuICAgICAgICAnYXV0by1yb3dzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdhcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICovXG4gICAgICBnYXA6IFt7XG4gICAgICAgIGdhcDogW2dhcF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHYXAgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICovXG4gICAgICAnZ2FwLXgnOiBbe1xuICAgICAgICAnZ2FwLXgnOiBbZ2FwXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdhcCBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgKi9cbiAgICAgICdnYXAteSc6IFt7XG4gICAgICAgICdnYXAteSc6IFtnYXBdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSnVzdGlmeSBDb250ZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1jb250ZW50XG4gICAgICAgKi9cbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBbe1xuICAgICAgICBqdXN0aWZ5OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSnVzdGlmeSBJdGVtc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktaXRlbXNcbiAgICAgICAqL1xuICAgICAgJ2p1c3RpZnktaXRlbXMnOiBbe1xuICAgICAgICAnanVzdGlmeS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBKdXN0aWZ5IFNlbGZcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LXNlbGZcbiAgICAgICAqL1xuICAgICAgJ2p1c3RpZnktc2VsZic6IFt7XG4gICAgICAgICdqdXN0aWZ5LXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBBbGlnbiBDb250ZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tY29udGVudFxuICAgICAgICovXG4gICAgICAnYWxpZ24tY29udGVudCc6IFt7XG4gICAgICAgIGNvbnRlbnQ6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBBbGlnbiBJdGVtc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWl0ZW1zXG4gICAgICAgKi9cbiAgICAgICdhbGlnbi1pdGVtcyc6IFt7XG4gICAgICAgIGl0ZW1zOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQWxpZ24gU2VsZlxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLXNlbGZcbiAgICAgICAqL1xuICAgICAgJ2FsaWduLXNlbGYnOiBbe1xuICAgICAgICBzZWxmOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJywgJ2Jhc2VsaW5lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQbGFjZSBDb250ZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtY29udGVudFxuICAgICAgICovXG4gICAgICAncGxhY2UtY29udGVudCc6IFt7XG4gICAgICAgICdwbGFjZS1jb250ZW50JzogWy4uLmdldEFsaWduKCksICdiYXNlbGluZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2UgSXRlbXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1pdGVtc1xuICAgICAgICovXG4gICAgICAncGxhY2UtaXRlbXMnOiBbe1xuICAgICAgICAncGxhY2UtaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2UgU2VsZlxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLXNlbGZcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlLXNlbGYnOiBbe1xuICAgICAgICAncGxhY2Utc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvLyBTcGFjaW5nXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmdcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHA6IFt7XG4gICAgICAgIHA6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcHg6IFt7XG4gICAgICAgIHB4OiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHB5OiBbe1xuICAgICAgICBweTogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcHM6IFt7XG4gICAgICAgIHBzOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcGU6IFt7XG4gICAgICAgIHBlOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcHQ6IFt7XG4gICAgICAgIHB0OiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwcjogW3tcbiAgICAgICAgcHI6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwYjogW3tcbiAgICAgICAgcGI6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcGw6IFt7XG4gICAgICAgIHBsOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbTogW3tcbiAgICAgICAgbTogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBteDogW3tcbiAgICAgICAgbXg6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXk6IFt7XG4gICAgICAgIG15OiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtczogW3tcbiAgICAgICAgbXM6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtZTogW3tcbiAgICAgICAgbWU6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtdDogW3tcbiAgICAgICAgbXQ6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG1yOiBbe1xuICAgICAgICBtcjogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG1iOiBbe1xuICAgICAgICBtYjogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtbDogW3tcbiAgICAgICAgbWw6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3BhY2UgQmV0d2VlbiBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAqL1xuICAgICAgJ3NwYWNlLXgnOiBbe1xuICAgICAgICAnc3BhY2UteCc6IFtzcGFjZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTcGFjZSBCZXR3ZWVuIFggUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgKi9cbiAgICAgICdzcGFjZS14LXJldmVyc2UnOiBbJ3NwYWNlLXgtcmV2ZXJzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBTcGFjZSBCZXR3ZWVuIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICovXG4gICAgICAnc3BhY2UteSc6IFt7XG4gICAgICAgICdzcGFjZS15JzogW3NwYWNlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNwYWNlIEJldHdlZW4gWSBSZXZlcnNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAqL1xuICAgICAgJ3NwYWNlLXktcmV2ZXJzZSc6IFsnc3BhY2UteS1yZXZlcnNlJ10sXG4gICAgICAvLyBTaXppbmdcbiAgICAgIC8qKlxuICAgICAgICogV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWR0aFxuICAgICAgICovXG4gICAgICB3OiBbe1xuICAgICAgICB3OiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3Z3JywgJ2x2dycsICdkdncnLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1pbi1XaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi13aWR0aFxuICAgICAgICovXG4gICAgICAnbWluLXcnOiBbe1xuICAgICAgICAnbWluLXcnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXgtV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ21heC13JzogW3tcbiAgICAgICAgJ21heC13JzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdub25lJywgJ2Z1bGwnLCAnbWluJywgJ21heCcsICdmaXQnLCAncHJvc2UnLCB7XG4gICAgICAgICAgc2NyZWVuOiBbaXNUc2hpcnRTaXplXVxuICAgICAgICB9LCBpc1RzaGlydFNpemVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSGVpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaGVpZ2h0XG4gICAgICAgKi9cbiAgICAgIGg6IFt7XG4gICAgICAgIGg6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWluLUhlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi1oZWlnaHRcbiAgICAgICAqL1xuICAgICAgJ21pbi1oJzogW3tcbiAgICAgICAgJ21pbi1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWF4LUhlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC1oZWlnaHRcbiAgICAgICAqL1xuICAgICAgJ21heC1oJzogW3tcbiAgICAgICAgJ21heC1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2l6ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NpemVcbiAgICAgICAqL1xuICAgICAgc2l6ZTogW3tcbiAgICAgICAgc2l6ZTogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdhdXRvJywgJ21pbicsICdtYXgnLCAnZml0J11cbiAgICAgIH1dLFxuICAgICAgLy8gVHlwb2dyYXBoeVxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFNpemVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNpemVcbiAgICAgICAqL1xuICAgICAgJ2ZvbnQtc2l6ZSc6IFt7XG4gICAgICAgIHRleHQ6IFsnYmFzZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlMZW5ndGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBTbW9vdGhpbmdcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNtb290aGluZ1xuICAgICAgICovXG4gICAgICAnZm9udC1zbW9vdGhpbmcnOiBbJ2FudGlhbGlhc2VkJywgJ3N1YnBpeGVsLWFudGlhbGlhc2VkJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgU3R5bGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXN0eWxlXG4gICAgICAgKi9cbiAgICAgICdmb250LXN0eWxlJzogWydpdGFsaWMnLCAnbm90LWl0YWxpYyddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFdlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtd2VpZ2h0XG4gICAgICAgKi9cbiAgICAgICdmb250LXdlaWdodCc6IFt7XG4gICAgICAgIGZvbnQ6IFsndGhpbicsICdleHRyYWxpZ2h0JywgJ2xpZ2h0JywgJ25vcm1hbCcsICdtZWRpdW0nLCAnc2VtaWJvbGQnLCAnYm9sZCcsICdleHRyYWJvbGQnLCAnYmxhY2snLCBpc0FyYml0cmFyeU51bWJlcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IEZhbWlseVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtZmFtaWx5XG4gICAgICAgKi9cbiAgICAgICdmb250LWZhbWlseSc6IFt7XG4gICAgICAgIGZvbnQ6IFtpc0FueV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tbm9ybWFsJzogWydub3JtYWwtbnVtcyddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tb3JkaW5hbCc6IFsnb3JkaW5hbCddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydzbGFzaGVkLXplcm8nXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLWZpZ3VyZSc6IFsnbGluaW5nLW51bXMnLCAnb2xkc3R5bGUtbnVtcyddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tc3BhY2luZyc6IFsncHJvcG9ydGlvbmFsLW51bXMnLCAndGFidWxhci1udW1zJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAqL1xuICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZGlhZ29uYWwtZnJhY3Rpb25zJywgJ3N0YWNrZWQtZnJhY3RvbnMnXSxcbiAgICAgIC8qKlxuICAgICAgICogTGV0dGVyIFNwYWNpbmdcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9sZXR0ZXItc3BhY2luZ1xuICAgICAgICovXG4gICAgICB0cmFja2luZzogW3tcbiAgICAgICAgdHJhY2tpbmc6IFsndGlnaHRlcicsICd0aWdodCcsICdub3JtYWwnLCAnd2lkZScsICd3aWRlcicsICd3aWRlc3QnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpbmUgQ2xhbXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWNsYW1wXG4gICAgICAgKi9cbiAgICAgICdsaW5lLWNsYW1wJzogW3tcbiAgICAgICAgJ2xpbmUtY2xhbXAnOiBbJ25vbmUnLCBpc051bWJlciwgaXNBcmJpdHJhcnlOdW1iZXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGluZSBIZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWhlaWdodFxuICAgICAgICovXG4gICAgICBsZWFkaW5nOiBbe1xuICAgICAgICBsZWFkaW5nOiBbJ25vbmUnLCAndGlnaHQnLCAnc251ZycsICdub3JtYWwnLCAncmVsYXhlZCcsICdsb29zZScsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpc3QgU3R5bGUgSW1hZ2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLWltYWdlXG4gICAgICAgKi9cbiAgICAgICdsaXN0LWltYWdlJzogW3tcbiAgICAgICAgJ2xpc3QtaW1hZ2UnOiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpc3QgU3R5bGUgVHlwZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtdHlwZVxuICAgICAgICovXG4gICAgICAnbGlzdC1zdHlsZS10eXBlJzogW3tcbiAgICAgICAgbGlzdDogWydub25lJywgJ2Rpc2MnLCAnZGVjaW1hbCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGlzdCBTdHlsZSBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtcG9zaXRpb25cbiAgICAgICAqL1xuICAgICAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nOiBbe1xuICAgICAgICBsaXN0OiBbJ2luc2lkZScsICdvdXRzaWRlJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQbGFjZWhvbGRlciBDb2xvclxuICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdwbGFjZWhvbGRlci1jb2xvcic6IFt7XG4gICAgICAgIHBsYWNlaG9sZGVyOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlaG9sZGVyIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW3tcbiAgICAgICAgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IEFsaWdubWVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtYWxpZ25cbiAgICAgICAqL1xuICAgICAgJ3RleHQtYWxpZ25tZW50JzogW3tcbiAgICAgICAgdGV4dDogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCcsICdqdXN0aWZ5JywgJ3N0YXJ0JywgJ2VuZCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3RleHQtY29sb3InOiBbe1xuICAgICAgICB0ZXh0OiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3BhY2l0eVxuICAgICAgICovXG4gICAgICAndGV4dC1vcGFjaXR5JzogW3tcbiAgICAgICAgJ3RleHQtb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgRGVjb3JhdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvblxuICAgICAgICovXG4gICAgICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnb3ZlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IERlY29yYXRpb24gU3R5bGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tc3R5bGVcbiAgICAgICAqL1xuICAgICAgJ3RleHQtZGVjb3JhdGlvbi1zdHlsZSc6IFt7XG4gICAgICAgIGRlY29yYXRpb246IFsuLi5nZXRMaW5lU3R5bGVzKCksICd3YXZ5J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IERlY29yYXRpb24gVGhpY2tuZXNzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzc1xuICAgICAgICovXG4gICAgICAndGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyc6IFt7XG4gICAgICAgIGRlY29yYXRpb246IFsnYXV0bycsICdmcm9tLWZvbnQnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBVbmRlcmxpbmUgT2Zmc2V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC11bmRlcmxpbmUtb2Zmc2V0XG4gICAgICAgKi9cbiAgICAgICd1bmRlcmxpbmUtb2Zmc2V0JzogW3tcbiAgICAgICAgJ3VuZGVybGluZS1vZmZzZXQnOiBbJ2F1dG8nLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IERlY29yYXRpb24gQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcic6IFt7XG4gICAgICAgIGRlY29yYXRpb246IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBUcmFuc2Zvcm1cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXRyYW5zZm9ybVxuICAgICAgICovXG4gICAgICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IE92ZXJmbG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vdmVyZmxvd1xuICAgICAgICovXG4gICAgICAndGV4dC1vdmVyZmxvdyc6IFsndHJ1bmNhdGUnLCAndGV4dC1lbGxpcHNpcycsICd0ZXh0LWNsaXAnXSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBXcmFwXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC13cmFwXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LXdyYXAnOiBbe1xuICAgICAgICB0ZXh0OiBbJ3dyYXAnLCAnbm93cmFwJywgJ2JhbGFuY2UnLCAncHJldHR5J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IEluZGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtaW5kZW50XG4gICAgICAgKi9cbiAgICAgIGluZGVudDogW3tcbiAgICAgICAgaW5kZW50OiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVmVydGljYWwgQWxpZ25tZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmVydGljYWwtYWxpZ25cbiAgICAgICAqL1xuICAgICAgJ3ZlcnRpY2FsLWFsaWduJzogW3tcbiAgICAgICAgYWxpZ246IFsnYmFzZWxpbmUnLCAndG9wJywgJ21pZGRsZScsICdib3R0b20nLCAndGV4dC10b3AnLCAndGV4dC1ib3R0b20nLCAnc3ViJywgJ3N1cGVyJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBXaGl0ZXNwYWNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2hpdGVzcGFjZVxuICAgICAgICovXG4gICAgICB3aGl0ZXNwYWNlOiBbe1xuICAgICAgICB3aGl0ZXNwYWNlOiBbJ25vcm1hbCcsICdub3dyYXAnLCAncHJlJywgJ3ByZS1saW5lJywgJ3ByZS13cmFwJywgJ2JyZWFrLXNwYWNlcyddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogV29yZCBCcmVha1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dvcmQtYnJlYWtcbiAgICAgICAqL1xuICAgICAgYnJlYWs6IFt7XG4gICAgICAgIGJyZWFrOiBbJ25vcm1hbCcsICd3b3JkcycsICdhbGwnLCAna2VlcCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSHlwaGVuc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h5cGhlbnNcbiAgICAgICAqL1xuICAgICAgaHlwaGVuczogW3tcbiAgICAgICAgaHlwaGVuczogWydub25lJywgJ21hbnVhbCcsICdhdXRvJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDb250ZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGVudFxuICAgICAgICovXG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICBjb250ZW50OiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBCYWNrZ3JvdW5kc1xuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIEF0dGFjaG1lbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWF0dGFjaG1lbnRcbiAgICAgICAqL1xuICAgICAgJ2JnLWF0dGFjaG1lbnQnOiBbe1xuICAgICAgICBiZzogWydmaXhlZCcsICdsb2NhbCcsICdzY3JvbGwnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgQ2xpcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY2xpcFxuICAgICAgICovXG4gICAgICAnYmctY2xpcCc6IFt7XG4gICAgICAgICdiZy1jbGlwJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50JywgJ3RleHQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgT3BhY2l0eVxuICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3BhY2l0eVxuICAgICAgICovXG4gICAgICAnYmctb3BhY2l0eSc6IFt7XG4gICAgICAgICdiZy1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBPcmlnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9yaWdpblxuICAgICAgICovXG4gICAgICAnYmctb3JpZ2luJzogW3tcbiAgICAgICAgJ2JnLW9yaWdpbic6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcG9zaXRpb25cbiAgICAgICAqL1xuICAgICAgJ2JnLXBvc2l0aW9uJzogW3tcbiAgICAgICAgYmc6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlQb3NpdGlvbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIFJlcGVhdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcmVwZWF0XG4gICAgICAgKi9cbiAgICAgICdiZy1yZXBlYXQnOiBbe1xuICAgICAgICBiZzogWyduby1yZXBlYXQnLCB7XG4gICAgICAgICAgcmVwZWF0OiBbJycsICd4JywgJ3knLCAncm91bmQnLCAnc3BhY2UnXVxuICAgICAgICB9XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgU2l6ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtc2l6ZVxuICAgICAgICovXG4gICAgICAnYmctc2l6ZSc6IFt7XG4gICAgICAgIGJnOiBbJ2F1dG8nLCAnY292ZXInLCAnY29udGFpbicsIGlzQXJiaXRyYXJ5U2l6ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIEltYWdlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1pbWFnZVxuICAgICAgICovXG4gICAgICAnYmctaW1hZ2UnOiBbe1xuICAgICAgICBiZzogWydub25lJywge1xuICAgICAgICAgICdncmFkaWVudC10byc6IFsndCcsICd0cicsICdyJywgJ2JyJywgJ2InLCAnYmwnLCAnbCcsICd0bCddXG4gICAgICAgIH0sIGlzQXJiaXRyYXJ5SW1hZ2VdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JnLWNvbG9yJzogW3tcbiAgICAgICAgYmc6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbSBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC1mcm9tLXBvcyc6IFt7XG4gICAgICAgIGZyb206IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWEgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtdmlhLXBvcyc6IFt7XG4gICAgICAgIHZpYTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LXRvLXBvcyc6IFt7XG4gICAgICAgIHRvOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC1mcm9tJzogW3tcbiAgICAgICAgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWFcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtdmlhJzogW3tcbiAgICAgICAgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LXRvJzogW3tcbiAgICAgICAgdG86IFtncmFkaWVudENvbG9yU3RvcHNdXG4gICAgICB9XSxcbiAgICAgIC8vIEJvcmRlcnNcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1c1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgcm91bmRlZDogW3tcbiAgICAgICAgcm91bmRlZDogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1zJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtcyc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWUnOiBbe1xuICAgICAgICAncm91bmRlZC1lJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtdCc6IFt7XG4gICAgICAgICdyb3VuZGVkLXQnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXInOiBbe1xuICAgICAgICAncm91bmRlZC1yJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtYic6IFt7XG4gICAgICAgICdyb3VuZGVkLWInOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtbCc6IFt7XG4gICAgICAgICdyb3VuZGVkLWwnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXNzJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtc3MnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1zZSc6IFt7XG4gICAgICAgICdyb3VuZGVkLXNlJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWVlJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtZWUnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1lcyc6IFt7XG4gICAgICAgICdyb3VuZGVkLWVzJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC10bCc6IFt7XG4gICAgICAgICdyb3VuZGVkLXRsJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtdHInOiBbe1xuICAgICAgICAncm91bmRlZC10cic6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWJyJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtYnInOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWJsJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtYmwnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXcnOiBbe1xuICAgICAgICBib3JkZXI6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXcteCc6IFt7XG4gICAgICAgICdib3JkZXIteCc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXcteSc6IFt7XG4gICAgICAgICdib3JkZXIteSc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXMnOiBbe1xuICAgICAgICAnYm9yZGVyLXMnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctZSc6IFt7XG4gICAgICAgICdib3JkZXItZSc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy10JzogW3tcbiAgICAgICAgJ2JvcmRlci10JzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctcic6IFt7XG4gICAgICAgICdib3JkZXItcic6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy1iJzogW3tcbiAgICAgICAgJ2JvcmRlci1iJzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy1sJzogW3tcbiAgICAgICAgJ2JvcmRlci1sJzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1vcGFjaXR5JzogW3tcbiAgICAgICAgJ2JvcmRlci1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXN0eWxlXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItc3R5bGUnOiBbe1xuICAgICAgICBib3JkZXI6IFsuLi5nZXRMaW5lU3R5bGVzKCksICdoaWRkZW4nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBXaWR0aCBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUteCc6IFt7XG4gICAgICAgICdkaXZpZGUteCc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgV2lkdGggWCBSZXZlcnNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUteC1yZXZlcnNlJzogWydkaXZpZGUteC1yZXZlcnNlJ10sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBXaWR0aCBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUteSc6IFt7XG4gICAgICAgICdkaXZpZGUteSc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgV2lkdGggWSBSZXZlcnNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUteS1yZXZlcnNlJzogWydkaXZpZGUteS1yZXZlcnNlJ10sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS1vcGFjaXR5JzogW3tcbiAgICAgICAgJ2RpdmlkZS1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXN0eWxlXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUtc3R5bGUnOiBbe1xuICAgICAgICBkaXZpZGU6IGdldExpbmVTdHlsZXMoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yJzogW3tcbiAgICAgICAgYm9yZGVyOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvci14JzogW3tcbiAgICAgICAgJ2JvcmRlci14JzogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3IteSc6IFt7XG4gICAgICAgICdib3JkZXIteSc6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3ItdCc6IFt7XG4gICAgICAgICdib3JkZXItdCc6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvci1yJzogW3tcbiAgICAgICAgJ2JvcmRlci1yJzogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvci1iJzogW3tcbiAgICAgICAgJ2JvcmRlci1iJzogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3ItbCc6IFt7XG4gICAgICAgICdib3JkZXItbCc6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS1jb2xvcic6IFt7XG4gICAgICAgIGRpdmlkZTogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgU3R5bGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXN0eWxlXG4gICAgICAgKi9cbiAgICAgICdvdXRsaW5lLXN0eWxlJzogW3tcbiAgICAgICAgb3V0bGluZTogWycnLCAuLi5nZXRMaW5lU3R5bGVzKCldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3V0bGluZSBPZmZzZXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLW9mZnNldFxuICAgICAgICovXG4gICAgICAnb3V0bGluZS1vZmZzZXQnOiBbe1xuICAgICAgICAnb3V0bGluZS1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3V0bGluZSBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ291dGxpbmUtdyc6IFt7XG4gICAgICAgIG91dGxpbmU6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3V0bGluZSBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtY29sb3JcbiAgICAgICAqL1xuICAgICAgJ291dGxpbmUtY29sb3InOiBbe1xuICAgICAgICBvdXRsaW5lOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdyaW5nLXcnOiBbe1xuICAgICAgICByaW5nOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgV2lkdGggSW5zZXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdyaW5nLXctaW5zZXQnOiBbJ3JpbmctaW5zZXQnXSxcbiAgICAgIC8qKlxuICAgICAgICogUmluZyBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JpbmctY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3JpbmctY29sb3InOiBbe1xuICAgICAgICByaW5nOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb3BhY2l0eVxuICAgICAgICovXG4gICAgICAncmluZy1vcGFjaXR5JzogW3tcbiAgICAgICAgJ3Jpbmctb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgT2Zmc2V0IFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ3Jpbmctb2Zmc2V0LXcnOiBbe1xuICAgICAgICAncmluZy1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgT2Zmc2V0IENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3Jpbmctb2Zmc2V0LWNvbG9yJzogW3tcbiAgICAgICAgJ3Jpbmctb2Zmc2V0JzogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLy8gRWZmZWN0c1xuICAgICAgLyoqXG4gICAgICAgKiBCb3ggU2hhZG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNoYWRvd1xuICAgICAgICovXG4gICAgICBzaGFkb3c6IFt7XG4gICAgICAgIHNoYWRvdzogWycnLCAnaW5uZXInLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlTaGFkb3ddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm94IFNoYWRvdyBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3ctY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3NoYWRvdy1jb2xvcic6IFt7XG4gICAgICAgIHNoYWRvdzogW2lzQW55XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgIG9wYWNpdHk6IFt7XG4gICAgICAgIG9wYWNpdHk6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1peCBCbGVuZCBNb2RlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWl4LWJsZW5kLW1vZGVcbiAgICAgICAqL1xuICAgICAgJ21peC1ibGVuZCc6IFt7XG4gICAgICAgICdtaXgtYmxlbmQnOiBbLi4uZ2V0QmxlbmRNb2RlcygpLCAncGx1cy1saWdodGVyJywgJ3BsdXMtZGFya2VyJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIEJsZW5kIE1vZGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWJsZW5kLW1vZGVcbiAgICAgICAqL1xuICAgICAgJ2JnLWJsZW5kJzogW3tcbiAgICAgICAgJ2JnLWJsZW5kJzogZ2V0QmxlbmRNb2RlcygpXG4gICAgICB9XSxcbiAgICAgIC8vIEZpbHRlcnNcbiAgICAgIC8qKlxuICAgICAgICogRmlsdGVyXG4gICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsdGVyXG4gICAgICAgKi9cbiAgICAgIGZpbHRlcjogW3tcbiAgICAgICAgZmlsdGVyOiBbJycsICdub25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCbHVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmx1clxuICAgICAgICovXG4gICAgICBibHVyOiBbe1xuICAgICAgICBibHVyOiBbYmx1cl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCcmlnaHRuZXNzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJpZ2h0bmVzc1xuICAgICAgICovXG4gICAgICBicmlnaHRuZXNzOiBbe1xuICAgICAgICBicmlnaHRuZXNzOiBbYnJpZ2h0bmVzc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDb250cmFzdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRyYXN0XG4gICAgICAgKi9cbiAgICAgIGNvbnRyYXN0OiBbe1xuICAgICAgICBjb250cmFzdDogW2NvbnRyYXN0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERyb3AgU2hhZG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZHJvcC1zaGFkb3dcbiAgICAgICAqL1xuICAgICAgJ2Ryb3Atc2hhZG93JzogW3tcbiAgICAgICAgJ2Ryb3Atc2hhZG93JzogWycnLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmF5c2NhbGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmF5c2NhbGVcbiAgICAgICAqL1xuICAgICAgZ3JheXNjYWxlOiBbe1xuICAgICAgICBncmF5c2NhbGU6IFtncmF5c2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSHVlIFJvdGF0ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h1ZS1yb3RhdGVcbiAgICAgICAqL1xuICAgICAgJ2h1ZS1yb3RhdGUnOiBbe1xuICAgICAgICAnaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSW52ZXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaW52ZXJ0XG4gICAgICAgKi9cbiAgICAgIGludmVydDogW3tcbiAgICAgICAgaW52ZXJ0OiBbaW52ZXJ0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNhdHVyYXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2F0dXJhdGVcbiAgICAgICAqL1xuICAgICAgc2F0dXJhdGU6IFt7XG4gICAgICAgIHNhdHVyYXRlOiBbc2F0dXJhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2VwaWFcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zZXBpYVxuICAgICAgICovXG4gICAgICBzZXBpYTogW3tcbiAgICAgICAgc2VwaWE6IFtzZXBpYV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBGaWx0ZXJcbiAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1maWx0ZXJcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWZpbHRlcic6IFt7XG4gICAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbJycsICdub25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBCbHVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYmx1clxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtYmx1cic6IFt7XG4gICAgICAgICdiYWNrZHJvcC1ibHVyJzogW2JsdXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgQnJpZ2h0bmVzc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJyaWdodG5lc3NcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbe1xuICAgICAgICAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFticmlnaHRuZXNzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIENvbnRyYXN0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtY29udHJhc3RcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW2NvbnRyYXN0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEdyYXlzY2FsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWdyYXlzY2FsZVxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFtncmF5c2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgSHVlIFJvdGF0ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWh1ZS1yb3RhdGVcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbe1xuICAgICAgICAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgSW52ZXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaW52ZXJ0XG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1pbnZlcnQnOiBbe1xuICAgICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW2ludmVydF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atb3BhY2l0eVxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgU2F0dXJhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zYXR1cmF0ZVxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbe1xuICAgICAgICAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbc2F0dXJhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgU2VwaWFcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zZXBpYVxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3Atc2VwaWEnOiBbe1xuICAgICAgICAnYmFja2Ryb3Atc2VwaWEnOiBbc2VwaWFdXG4gICAgICB9XSxcbiAgICAgIC8vIFRhYmxlc1xuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sbGFwc2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sbGFwc2VcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xsYXBzZSc6IFt7XG4gICAgICAgIGJvcmRlcjogWydjb2xsYXBzZScsICdzZXBhcmF0ZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFNwYWNpbmdcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICovXG4gICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbe1xuICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbYm9yZGVyU3BhY2luZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgU3BhY2luZyBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zcGFjaW5nLXgnOiBbe1xuICAgICAgICAnYm9yZGVyLXNwYWNpbmcteCc6IFtib3JkZXJTcGFjaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBTcGFjaW5nIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICovXG4gICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFt7XG4gICAgICAgICdib3JkZXItc3BhY2luZy15JzogW2JvcmRlclNwYWNpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGFibGUgTGF5b3V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGFibGUtbGF5b3V0XG4gICAgICAgKi9cbiAgICAgICd0YWJsZS1sYXlvdXQnOiBbe1xuICAgICAgICB0YWJsZTogWydhdXRvJywgJ2ZpeGVkJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDYXB0aW9uIFNpZGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jYXB0aW9uLXNpZGVcbiAgICAgICAqL1xuICAgICAgY2FwdGlvbjogW3tcbiAgICAgICAgY2FwdGlvbjogWyd0b3AnLCAnYm90dG9tJ11cbiAgICAgIH1dLFxuICAgICAgLy8gVHJhbnNpdGlvbnMgYW5kIEFuaW1hdGlvblxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuaXNpdGlvbiBQcm9wZXJ0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tcHJvcGVydHlcbiAgICAgICAqL1xuICAgICAgdHJhbnNpdGlvbjogW3tcbiAgICAgICAgdHJhbnNpdGlvbjogWydub25lJywgJ2FsbCcsICcnLCAnY29sb3JzJywgJ29wYWNpdHknLCAnc2hhZG93JywgJ3RyYW5zZm9ybScsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNpdGlvbiBEdXJhdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZHVyYXRpb25cbiAgICAgICAqL1xuICAgICAgZHVyYXRpb246IFt7XG4gICAgICAgIGR1cmF0aW9uOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zaXRpb24gVGltaW5nIEZ1bmN0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cbiAgICAgICAqL1xuICAgICAgZWFzZTogW3tcbiAgICAgICAgZWFzZTogWydsaW5lYXInLCAnaW4nLCAnb3V0JywgJ2luLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNpdGlvbiBEZWxheVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZGVsYXlcbiAgICAgICAqL1xuICAgICAgZGVsYXk6IFt7XG4gICAgICAgIGRlbGF5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEFuaW1hdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FuaW1hdGlvblxuICAgICAgICovXG4gICAgICBhbmltYXRlOiBbe1xuICAgICAgICBhbmltYXRlOiBbJ25vbmUnLCAnc3BpbicsICdwaW5nJywgJ3B1bHNlJywgJ2JvdW5jZScsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIFRyYW5zZm9ybXNcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNmb3JtXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtXG4gICAgICAgKi9cbiAgICAgIHRyYW5zZm9ybTogW3tcbiAgICAgICAgdHJhbnNmb3JtOiBbJycsICdncHUnLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2NhbGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICovXG4gICAgICBzY2FsZTogW3tcbiAgICAgICAgc2NhbGU6IFtzY2FsZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY2FsZSBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAqL1xuICAgICAgJ3NjYWxlLXgnOiBbe1xuICAgICAgICAnc2NhbGUteCc6IFtzY2FsZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY2FsZSBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAqL1xuICAgICAgJ3NjYWxlLXknOiBbe1xuICAgICAgICAnc2NhbGUteSc6IFtzY2FsZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSb3RhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yb3RhdGVcbiAgICAgICAqL1xuICAgICAgcm90YXRlOiBbe1xuICAgICAgICByb3RhdGU6IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNsYXRlIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAqL1xuICAgICAgJ3RyYW5zbGF0ZS14JzogW3tcbiAgICAgICAgJ3RyYW5zbGF0ZS14JzogW3RyYW5zbGF0ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuc2xhdGUgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICovXG4gICAgICAndHJhbnNsYXRlLXknOiBbe1xuICAgICAgICAndHJhbnNsYXRlLXknOiBbdHJhbnNsYXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNrZXcgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAqL1xuICAgICAgJ3NrZXcteCc6IFt7XG4gICAgICAgICdza2V3LXgnOiBbc2tld11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTa2V3IFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgKi9cbiAgICAgICdza2V3LXknOiBbe1xuICAgICAgICAnc2tldy15JzogW3NrZXddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNmb3JtIE9yaWdpblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybS1vcmlnaW5cbiAgICAgICAqL1xuICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nOiBbe1xuICAgICAgICBvcmlnaW46IFsnY2VudGVyJywgJ3RvcCcsICd0b3AtcmlnaHQnLCAncmlnaHQnLCAnYm90dG9tLXJpZ2h0JywgJ2JvdHRvbScsICdib3R0b20tbGVmdCcsICdsZWZ0JywgJ3RvcC1sZWZ0JywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLy8gSW50ZXJhY3Rpdml0eVxuICAgICAgLyoqXG4gICAgICAgKiBBY2NlbnQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hY2NlbnQtY29sb3JcbiAgICAgICAqL1xuICAgICAgYWNjZW50OiBbe1xuICAgICAgICBhY2NlbnQ6IFsnYXV0bycsIGNvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBBcHBlYXJhbmNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXBwZWFyYW5jZVxuICAgICAgICovXG4gICAgICBhcHBlYXJhbmNlOiBbe1xuICAgICAgICBhcHBlYXJhbmNlOiBbJ25vbmUnLCAnYXV0byddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ3Vyc29yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY3Vyc29yXG4gICAgICAgKi9cbiAgICAgIGN1cnNvcjogW3tcbiAgICAgICAgY3Vyc29yOiBbJ2F1dG8nLCAnZGVmYXVsdCcsICdwb2ludGVyJywgJ3dhaXQnLCAndGV4dCcsICdtb3ZlJywgJ2hlbHAnLCAnbm90LWFsbG93ZWQnLCAnbm9uZScsICdjb250ZXh0LW1lbnUnLCAncHJvZ3Jlc3MnLCAnY2VsbCcsICdjcm9zc2hhaXInLCAndmVydGljYWwtdGV4dCcsICdhbGlhcycsICdjb3B5JywgJ25vLWRyb3AnLCAnZ3JhYicsICdncmFiYmluZycsICdhbGwtc2Nyb2xsJywgJ2NvbC1yZXNpemUnLCAncm93LXJlc2l6ZScsICduLXJlc2l6ZScsICdlLXJlc2l6ZScsICdzLXJlc2l6ZScsICd3LXJlc2l6ZScsICduZS1yZXNpemUnLCAnbnctcmVzaXplJywgJ3NlLXJlc2l6ZScsICdzdy1yZXNpemUnLCAnZXctcmVzaXplJywgJ25zLXJlc2l6ZScsICduZXN3LXJlc2l6ZScsICdud3NlLXJlc2l6ZScsICd6b29tLWluJywgJ3pvb20tb3V0JywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDYXJldCBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3QtaW4tdGltZS1tb2RlI2NhcmV0LWNvbG9yLXV0aWxpdGllc1xuICAgICAgICovXG4gICAgICAnY2FyZXQtY29sb3InOiBbe1xuICAgICAgICBjYXJldDogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQb2ludGVyIEV2ZW50c1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BvaW50ZXItZXZlbnRzXG4gICAgICAgKi9cbiAgICAgICdwb2ludGVyLWV2ZW50cyc6IFt7XG4gICAgICAgICdwb2ludGVyLWV2ZW50cyc6IFsnbm9uZScsICdhdXRvJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSZXNpemVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yZXNpemVcbiAgICAgICAqL1xuICAgICAgcmVzaXplOiBbe1xuICAgICAgICByZXNpemU6IFsnbm9uZScsICd5JywgJ3gnLCAnJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgQmVoYXZpb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtYmVoYXZpb3JcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1iZWhhdmlvcic6IFt7XG4gICAgICAgIHNjcm9sbDogWydhdXRvJywgJ3Ntb290aCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1teCc6IFt7XG4gICAgICAgICdzY3JvbGwtbXgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW15JzogW3tcbiAgICAgICAgJ3Njcm9sbC1teSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1zJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tZSc6IFt7XG4gICAgICAgICdzY3JvbGwtbWUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbXQnOiBbe1xuICAgICAgICAnc2Nyb2xsLW10JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbXInOiBbe1xuICAgICAgICAnc2Nyb2xsLW1yJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1iJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbWwnOiBbe1xuICAgICAgICAnc2Nyb2xsLW1sJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXB4JzogW3tcbiAgICAgICAgJ3Njcm9sbC1weCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1weSc6IFt7XG4gICAgICAgICdzY3JvbGwtcHknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXBzJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXBlJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXB0JzogW3tcbiAgICAgICAgJ3Njcm9sbC1wdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcHInOiBbe1xuICAgICAgICAnc2Nyb2xsLXByJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcGInOiBbe1xuICAgICAgICAnc2Nyb2xsLXBiJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXBsJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBBbGlnblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLWFsaWduXG4gICAgICAgKi9cbiAgICAgICdzbmFwLWFsaWduJzogW3tcbiAgICAgICAgc25hcDogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2FsaWduLW5vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBTbmFwIFN0b3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1zdG9wXG4gICAgICAgKi9cbiAgICAgICdzbmFwLXN0b3AnOiBbe1xuICAgICAgICBzbmFwOiBbJ25vcm1hbCcsICdhbHdheXMnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgKi9cbiAgICAgICdzbmFwLXR5cGUnOiBbe1xuICAgICAgICBzbmFwOiBbJ25vbmUnLCAneCcsICd5JywgJ2JvdGgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGUgU3RyaWN0bmVzc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAqL1xuICAgICAgJ3NuYXAtc3RyaWN0bmVzcyc6IFt7XG4gICAgICAgIHNuYXA6IFsnbWFuZGF0b3J5JywgJ3Byb3hpbWl0eSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG91Y2ggQWN0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgKi9cbiAgICAgIHRvdWNoOiBbe1xuICAgICAgICB0b3VjaDogWydhdXRvJywgJ25vbmUnLCAnbWFuaXB1bGF0aW9uJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3VjaCBBY3Rpb24gWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICovXG4gICAgICAndG91Y2gteCc6IFt7XG4gICAgICAgICd0b3VjaC1wYW4nOiBbJ3gnLCAnbGVmdCcsICdyaWdodCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG91Y2ggQWN0aW9uIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAqL1xuICAgICAgJ3RvdWNoLXknOiBbe1xuICAgICAgICAndG91Y2gtcGFuJzogWyd5JywgJ3VwJywgJ2Rvd24nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvdWNoIEFjdGlvbiBQaW5jaCBab29tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgKi9cbiAgICAgICd0b3VjaC1weic6IFsndG91Y2gtcGluY2gtem9vbSddLFxuICAgICAgLyoqXG4gICAgICAgKiBVc2VyIFNlbGVjdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3VzZXItc2VsZWN0XG4gICAgICAgKi9cbiAgICAgIHNlbGVjdDogW3tcbiAgICAgICAgc2VsZWN0OiBbJ25vbmUnLCAndGV4dCcsICdhbGwnLCAnYXV0byddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogV2lsbCBDaGFuZ2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWxsLWNoYW5nZVxuICAgICAgICovXG4gICAgICAnd2lsbC1jaGFuZ2UnOiBbe1xuICAgICAgICAnd2lsbC1jaGFuZ2UnOiBbJ2F1dG8nLCAnc2Nyb2xsJywgJ2NvbnRlbnRzJywgJ3RyYW5zZm9ybScsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIFNWR1xuICAgICAgLyoqXG4gICAgICAgKiBGaWxsXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsbFxuICAgICAgICovXG4gICAgICBmaWxsOiBbe1xuICAgICAgICBmaWxsOiBbY29sb3JzLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3Ryb2tlIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdzdHJva2Utdyc6IFt7XG4gICAgICAgIHN0cm9rZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aCwgaXNBcmJpdHJhcnlOdW1iZXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3Ryb2tlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlXG4gICAgICAgKi9cbiAgICAgIHN0cm9rZTogW3tcbiAgICAgICAgc3Ryb2tlOiBbY29sb3JzLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8vIEFjY2Vzc2liaWxpdHlcbiAgICAgIC8qKlxuICAgICAgICogU2NyZWVuIFJlYWRlcnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JlZW4tcmVhZGVyc1xuICAgICAgICovXG4gICAgICBzcjogWydzci1vbmx5JywgJ25vdC1zci1vbmx5J10sXG4gICAgICAvKipcbiAgICAgICAqIEZvcmNlZCBDb2xvciBBZGp1c3RcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb3JjZWQtY29sb3ItYWRqdXN0XG4gICAgICAgKi9cbiAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogW3tcbiAgICAgICAgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbJ2F1dG8nLCAnbm9uZSddXG4gICAgICB9XVxuICAgIH0sXG4gICAgY29uZmxpY3RpbmdDbGFzc0dyb3Vwczoge1xuICAgICAgb3ZlcmZsb3c6IFsnb3ZlcmZsb3cteCcsICdvdmVyZmxvdy15J10sXG4gICAgICBvdmVyc2Nyb2xsOiBbJ292ZXJzY3JvbGwteCcsICdvdmVyc2Nyb2xsLXknXSxcbiAgICAgIGluc2V0OiBbJ2luc2V0LXgnLCAnaW5zZXQteScsICdzdGFydCcsICdlbmQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10sXG4gICAgICAnaW5zZXQteCc6IFsncmlnaHQnLCAnbGVmdCddLFxuICAgICAgJ2luc2V0LXknOiBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgIGZsZXg6IFsnYmFzaXMnLCAnZ3JvdycsICdzaHJpbmsnXSxcbiAgICAgIGdhcDogWydnYXAteCcsICdnYXAteSddLFxuICAgICAgcDogWydweCcsICdweScsICdwcycsICdwZScsICdwdCcsICdwcicsICdwYicsICdwbCddLFxuICAgICAgcHg6IFsncHInLCAncGwnXSxcbiAgICAgIHB5OiBbJ3B0JywgJ3BiJ10sXG4gICAgICBtOiBbJ214JywgJ215JywgJ21zJywgJ21lJywgJ210JywgJ21yJywgJ21iJywgJ21sJ10sXG4gICAgICBteDogWydtcicsICdtbCddLFxuICAgICAgbXk6IFsnbXQnLCAnbWInXSxcbiAgICAgIHNpemU6IFsndycsICdoJ10sXG4gICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAnZnZuLW5vcm1hbCc6IFsnZnZuLW9yZGluYWwnLCAnZnZuLXNsYXNoZWQtemVybycsICdmdm4tZmlndXJlJywgJ2Z2bi1zcGFjaW5nJywgJ2Z2bi1mcmFjdGlvbiddLFxuICAgICAgJ2Z2bi1vcmRpbmFsJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdmdm4tc3BhY2luZyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgJ2xpbmUtY2xhbXAnOiBbJ2Rpc3BsYXknLCAnb3ZlcmZsb3cnXSxcbiAgICAgIHJvdW5kZWQ6IFsncm91bmRlZC1zJywgJ3JvdW5kZWQtZScsICdyb3VuZGVkLXQnLCAncm91bmRlZC1yJywgJ3JvdW5kZWQtYicsICdyb3VuZGVkLWwnLCAncm91bmRlZC1zcycsICdyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnLCAncm91bmRlZC1lcycsICdyb3VuZGVkLXRsJywgJ3JvdW5kZWQtdHInLCAncm91bmRlZC1icicsICdyb3VuZGVkLWJsJ10sXG4gICAgICAncm91bmRlZC1zJzogWydyb3VuZGVkLXNzJywgJ3JvdW5kZWQtZXMnXSxcbiAgICAgICdyb3VuZGVkLWUnOiBbJ3JvdW5kZWQtc2UnLCAncm91bmRlZC1lZSddLFxuICAgICAgJ3JvdW5kZWQtdCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJ10sXG4gICAgICAncm91bmRlZC1yJzogWydyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInXSxcbiAgICAgICdyb3VuZGVkLWInOiBbJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgJ3JvdW5kZWQtbCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLWJsJ10sXG4gICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbJ2JvcmRlci1zcGFjaW5nLXgnLCAnYm9yZGVyLXNwYWNpbmcteSddLFxuICAgICAgJ2JvcmRlci13JzogWydib3JkZXItdy1zJywgJ2JvcmRlci13LWUnLCAnYm9yZGVyLXctdCcsICdib3JkZXItdy1yJywgJ2JvcmRlci13LWInLCAnYm9yZGVyLXctbCddLFxuICAgICAgJ2JvcmRlci13LXgnOiBbJ2JvcmRlci13LXInLCAnYm9yZGVyLXctbCddLFxuICAgICAgJ2JvcmRlci13LXknOiBbJ2JvcmRlci13LXQnLCAnYm9yZGVyLXctYiddLFxuICAgICAgJ2JvcmRlci1jb2xvcic6IFsnYm9yZGVyLWNvbG9yLXQnLCAnYm9yZGVyLWNvbG9yLXInLCAnYm9yZGVyLWNvbG9yLWInLCAnYm9yZGVyLWNvbG9yLWwnXSxcbiAgICAgICdib3JkZXItY29sb3IteCc6IFsnYm9yZGVyLWNvbG9yLXInLCAnYm9yZGVyLWNvbG9yLWwnXSxcbiAgICAgICdib3JkZXItY29sb3IteSc6IFsnYm9yZGVyLWNvbG9yLXQnLCAnYm9yZGVyLWNvbG9yLWInXSxcbiAgICAgICdzY3JvbGwtbSc6IFsnc2Nyb2xsLW14JywgJ3Njcm9sbC1teScsICdzY3JvbGwtbXMnLCAnc2Nyb2xsLW1lJywgJ3Njcm9sbC1tdCcsICdzY3JvbGwtbXInLCAnc2Nyb2xsLW1iJywgJ3Njcm9sbC1tbCddLFxuICAgICAgJ3Njcm9sbC1teCc6IFsnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tbCddLFxuICAgICAgJ3Njcm9sbC1teSc6IFsnc2Nyb2xsLW10JywgJ3Njcm9sbC1tYiddLFxuICAgICAgJ3Njcm9sbC1wJzogWydzY3JvbGwtcHgnLCAnc2Nyb2xsLXB5JywgJ3Njcm9sbC1wcycsICdzY3JvbGwtcGUnLCAnc2Nyb2xsLXB0JywgJ3Njcm9sbC1wcicsICdzY3JvbGwtcGInLCAnc2Nyb2xsLXBsJ10sXG4gICAgICAnc2Nyb2xsLXB4JzogWydzY3JvbGwtcHInLCAnc2Nyb2xsLXBsJ10sXG4gICAgICAnc2Nyb2xsLXB5JzogWydzY3JvbGwtcHQnLCAnc2Nyb2xsLXBiJ10sXG4gICAgICB0b3VjaDogWyd0b3VjaC14JywgJ3RvdWNoLXknLCAndG91Y2gtcHonXSxcbiAgICAgICd0b3VjaC14JzogWyd0b3VjaCddLFxuICAgICAgJ3RvdWNoLXknOiBbJ3RvdWNoJ10sXG4gICAgICAndG91Y2gtcHonOiBbJ3RvdWNoJ11cbiAgICB9LFxuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczoge1xuICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddXG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSBiYXNlQ29uZmlnIENvbmZpZyB3aGVyZSBvdGhlciBjb25maWcgd2lsbCBiZSBtZXJnZWQgaW50by4gVGhpcyBvYmplY3Qgd2lsbCBiZSBtdXRhdGVkLlxuICogQHBhcmFtIGNvbmZpZ0V4dGVuc2lvbiBQYXJ0aWFsIGNvbmZpZyB0byBtZXJnZSBpbnRvIHRoZSBgYmFzZUNvbmZpZ2AuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlQ29uZmlncyhiYXNlQ29uZmlnLCB7XG4gIGNhY2hlU2l6ZSxcbiAgcHJlZml4LFxuICBzZXBhcmF0b3IsXG4gIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lLFxuICBleHRlbmQgPSB7fSxcbiAgb3ZlcnJpZGUgPSB7fVxufSkge1xuICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdjYWNoZVNpemUnLCBjYWNoZVNpemUpO1xuICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdwcmVmaXgnLCBwcmVmaXgpO1xuICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdzZXBhcmF0b3InLCBzZXBhcmF0b3IpO1xuICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZScsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKTtcbiAgZm9yIChjb25zdCBjb25maWdLZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoYmFzZUNvbmZpZ1tjb25maWdLZXldLCBvdmVycmlkZVtjb25maWdLZXldKTtcbiAgfVxuICBmb3IgKGNvbnN0IGtleSBpbiBleHRlbmQpIHtcbiAgICBtZXJnZUNvbmZpZ1Byb3BlcnRpZXMoYmFzZUNvbmZpZ1trZXldLCBleHRlbmRba2V5XSk7XG4gIH1cbiAgcmV0dXJuIGJhc2VDb25maWc7XG59XG5mdW5jdGlvbiBvdmVycmlkZVByb3BlcnR5KGJhc2VPYmplY3QsIG92ZXJyaWRlS2V5LCBvdmVycmlkZVZhbHVlKSB7XG4gIGlmIChvdmVycmlkZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICBiYXNlT2JqZWN0W292ZXJyaWRlS2V5XSA9IG92ZXJyaWRlVmFsdWU7XG4gIH1cbn1cbmZ1bmN0aW9uIG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhiYXNlT2JqZWN0LCBvdmVycmlkZU9iamVjdCkge1xuICBpZiAob3ZlcnJpZGVPYmplY3QpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvdmVycmlkZU9iamVjdCkge1xuICAgICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBrZXksIG92ZXJyaWRlT2JqZWN0W2tleV0pO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gbWVyZ2VDb25maWdQcm9wZXJ0aWVzKGJhc2VPYmplY3QsIG1lcmdlT2JqZWN0KSB7XG4gIGlmIChtZXJnZU9iamVjdCkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG1lcmdlT2JqZWN0KSB7XG4gICAgICBjb25zdCBtZXJnZVZhbHVlID0gbWVyZ2VPYmplY3Rba2V5XTtcbiAgICAgIGlmIChtZXJnZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYmFzZU9iamVjdFtrZXldID0gKGJhc2VPYmplY3Rba2V5XSB8fCBbXSkuY29uY2F0KG1lcmdlVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gZXh0ZW5kVGFpbHdpbmRNZXJnZShjb25maWdFeHRlbnNpb24sIC4uLmNyZWF0ZUNvbmZpZykge1xuICByZXR1cm4gdHlwZW9mIGNvbmZpZ0V4dGVuc2lvbiA9PT0gJ2Z1bmN0aW9uJyA/IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZywgY29uZmlnRXh0ZW5zaW9uLCAuLi5jcmVhdGVDb25maWcpIDogY3JlYXRlVGFpbHdpbmRNZXJnZSgoKSA9PiBtZXJnZUNvbmZpZ3MoZ2V0RGVmYXVsdENvbmZpZygpLCBjb25maWdFeHRlbnNpb24pLCAuLi5jcmVhdGVDb25maWcpO1xufVxuY29uc3QgdHdNZXJnZSA9IC8qI19fUFVSRV9fKi9jcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcpO1xuZXhwb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSwgZXh0ZW5kVGFpbHdpbmRNZXJnZSwgZnJvbVRoZW1lLCBnZXREZWZhdWx0Q29uZmlnLCBtZXJnZUNvbmZpZ3MsIHR3Sm9pbiwgdHdNZXJnZSwgdmFsaWRhdG9ycyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnVuZGxlLW1qcy5tanMubWFwXG4iLCJmdW5jdGlvbiBpc09iamVjdChpdGVtKSB7XG4gIHJldHVybiBpdGVtICE9PSBudWxsICYmIHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiICYmIGl0ZW0uY29uc3RydWN0b3IgPT09IE9iamVjdDtcbn1cblxuZXhwb3J0IHsgaXNPYmplY3QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW9iamVjdC5tanMubWFwXG4iLCJpbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4vaXMtb2JqZWN0Lm1qcyc7XG5cbmZ1bmN0aW9uIGNsb25lRGVlcChzb3VyY2UpIHtcbiAgaWYgKCFpc09iamVjdChzb3VyY2UpKSB7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuICBjb25zdCBvdXRwdXQgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgaW4gc291cmNlKSB7XG4gICAgb3V0cHV0W2tleV0gPSBjbG9uZURlZXAoc291cmNlW2tleV0pO1xuICB9XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbmV4cG9ydCB7IGNsb25lRGVlcCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xvbmUtZGVlcC5tanMubWFwXG4iLCJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICcuL2Nsb25lLWRlZXAubWpzJztcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi9pcy1vYmplY3QubWpzJztcblxuZnVuY3Rpb24gbWVyZ2VEZWVwKHRhcmdldCwgc291cmNlKSB7XG4gIGlmIChpc09iamVjdChzb3VyY2UpICYmIE9iamVjdC5rZXlzKHNvdXJjZSkubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGNsb25lRGVlcCh7IC4uLnRhcmdldCwgLi4uc291cmNlIH0pO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IHsgLi4udGFyZ2V0LCAuLi5zb3VyY2UgfTtcbiAgaWYgKGlzT2JqZWN0KHNvdXJjZSkgJiYgaXNPYmplY3QodGFyZ2V0KSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKGlzT2JqZWN0KHNvdXJjZVtrZXldKSAmJiBrZXkgaW4gdGFyZ2V0ICYmIGlzT2JqZWN0KHRhcmdldFtrZXldKSkge1xuICAgICAgICBvdXRwdXRba2V5XSA9IG1lcmdlRGVlcCh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0W2tleV0gPSBpc09iamVjdChzb3VyY2Vba2V5XSkgPyBjbG9uZURlZXAoc291cmNlW2tleV0pIDogc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbmV4cG9ydCB7IG1lcmdlRGVlcCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVyZ2UtZGVlcC5tanMubWFwXG4iLCJmdW5jdGlvbiBjcmVhdGVUaGVtZShpbnB1dCkge1xuICByZXR1cm4gaW5wdXQ7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZVRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGUtdGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBhY2NvcmRpb25UaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZGl2aWRlLXkgZGl2aWRlLWdyYXktMjAwIGJvcmRlci1ncmF5LTIwMCBkYXJrOmRpdmlkZS1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiLFxuICAgIGZsdXNoOiB7XG4gICAgICBvZmY6IFwicm91bmRlZC1sZyBib3JkZXJcIixcbiAgICAgIG9uOiBcImJvcmRlci1iXCJcbiAgICB9XG4gIH0sXG4gIGNvbnRlbnQ6IHtcbiAgICBiYXNlOiBcInAtNSBmaXJzdDpyb3VuZGVkLXQtbGcgbGFzdDpyb3VuZGVkLWItbGcgZGFyazpiZy1ncmF5LTkwMFwiXG4gIH0sXG4gIHRpdGxlOiB7XG4gICAgYXJyb3c6IHtcbiAgICAgIGJhc2U6IFwiaC02IHctNiBzaHJpbmstMFwiLFxuICAgICAgb3Blbjoge1xuICAgICAgICBvZmY6IFwiXCIsXG4gICAgICAgIG9uOiBcInJvdGF0ZS0xODBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgYmFzZTogXCJmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtNSB0ZXh0LWxlZnQgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCBmaXJzdDpyb3VuZGVkLXQtbGcgbGFzdDpyb3VuZGVkLWItbGcgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gICAgZmx1c2g6IHtcbiAgICAgIG9mZjogXCJob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTIwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTgwMFwiLFxuICAgICAgb246IFwiYmctdHJhbnNwYXJlbnQgZGFyazpiZy10cmFuc3BhcmVudFwiXG4gICAgfSxcbiAgICBoZWFkaW5nOiBcIlwiLFxuICAgIG9wZW46IHtcbiAgICAgIG9mZjogXCJcIixcbiAgICAgIG9uOiBcImJnLWdyYXktMTAwIHRleHQtZ3JheS05MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtd2hpdGVcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGFjY29yZGlvblRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGFsZXJ0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiZmxleCBmbGV4LWNvbCBnYXAtMiBwLTQgdGV4dC1zbVwiLFxuICBib3JkZXJBY2NlbnQ6IFwiYm9yZGVyLXQtNFwiLFxuICBjbG9zZUJ1dHRvbjoge1xuICAgIGJhc2U6IFwiLW0tMS41IG1sLWF1dG8gaW5saW5lLWZsZXggaC04IHctOCByb3VuZGVkLWxnIHAtMS41IGZvY3VzOnJpbmctMlwiLFxuICAgIGljb246IFwiaC01IHctNVwiLFxuICAgIGNvbG9yOiB7XG4gICAgICBpbmZvOiBcImJnLWN5YW4tMTAwIHRleHQtY3lhbi01MDAgaG92ZXI6YmctY3lhbi0yMDAgZm9jdXM6cmluZy1jeWFuLTQwMCBkYXJrOmJnLWN5YW4tMjAwIGRhcms6dGV4dC1jeWFuLTYwMCBkYXJrOmhvdmVyOmJnLWN5YW4tMzAwXCIsXG4gICAgICBncmF5OiBcImJnLWdyYXktMTAwIHRleHQtZ3JheS01MDAgaG92ZXI6YmctZ3JheS0yMDAgZm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTMwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgZmFpbHVyZTogXCJiZy1yZWQtMTAwIHRleHQtcmVkLTUwMCBob3ZlcjpiZy1yZWQtMjAwIGZvY3VzOnJpbmctcmVkLTQwMCBkYXJrOmJnLXJlZC0yMDAgZGFyazp0ZXh0LXJlZC02MDAgZGFyazpob3ZlcjpiZy1yZWQtMzAwXCIsXG4gICAgICBzdWNjZXNzOiBcImJnLWdyZWVuLTEwMCB0ZXh0LWdyZWVuLTUwMCBob3ZlcjpiZy1ncmVlbi0yMDAgZm9jdXM6cmluZy1ncmVlbi00MDAgZGFyazpiZy1ncmVlbi0yMDAgZGFyazp0ZXh0LWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTMwMFwiLFxuICAgICAgd2FybmluZzogXCJiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTUwMCBob3ZlcjpiZy15ZWxsb3ctMjAwIGZvY3VzOnJpbmcteWVsbG93LTQwMCBkYXJrOmJnLXllbGxvdy0yMDAgZGFyazp0ZXh0LXllbGxvdy02MDAgZGFyazpob3ZlcjpiZy15ZWxsb3ctMzAwXCIsXG4gICAgICByZWQ6IFwiYmctcmVkLTEwMCB0ZXh0LXJlZC01MDAgaG92ZXI6YmctcmVkLTIwMCBmb2N1czpyaW5nLXJlZC00MDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTMwMFwiLFxuICAgICAgZ3JlZW46IFwiYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tNTAwIGhvdmVyOmJnLWdyZWVuLTIwMCBmb2N1czpyaW5nLWdyZWVuLTQwMCBkYXJrOmJnLWdyZWVuLTIwMCBkYXJrOnRleHQtZ3JlZW4tNjAwIGRhcms6aG92ZXI6YmctZ3JlZW4tMzAwXCIsXG4gICAgICB5ZWxsb3c6IFwiYmcteWVsbG93LTEwMCB0ZXh0LXllbGxvdy01MDAgaG92ZXI6YmcteWVsbG93LTIwMCBmb2N1czpyaW5nLXllbGxvdy00MDAgZGFyazpiZy15ZWxsb3ctMjAwIGRhcms6dGV4dC15ZWxsb3ctNjAwIGRhcms6aG92ZXI6YmcteWVsbG93LTMwMFwiLFxuICAgICAgYmx1ZTogXCJiZy1ibHVlLTEwMCB0ZXh0LWJsdWUtNTAwIGhvdmVyOmJnLWJsdWUtMjAwIGZvY3VzOnJpbmctYmx1ZS00MDAgZGFyazpiZy1ibHVlLTIwMCBkYXJrOnRleHQtYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTMwMFwiLFxuICAgICAgY3lhbjogXCJiZy1jeWFuLTEwMCB0ZXh0LWN5YW4tNTAwIGhvdmVyOmJnLWN5YW4tMjAwIGZvY3VzOnJpbmctY3lhbi00MDAgZGFyazpiZy1jeWFuLTIwMCBkYXJrOnRleHQtY3lhbi02MDAgZGFyazpob3ZlcjpiZy1jeWFuLTMwMFwiLFxuICAgICAgcGluazogXCJiZy1waW5rLTEwMCB0ZXh0LXBpbmstNTAwIGhvdmVyOmJnLXBpbmstMjAwIGZvY3VzOnJpbmctcGluay00MDAgZGFyazpiZy1waW5rLTIwMCBkYXJrOnRleHQtcGluay02MDAgZGFyazpob3ZlcjpiZy1waW5rLTMwMFwiLFxuICAgICAgbGltZTogXCJiZy1saW1lLTEwMCB0ZXh0LWxpbWUtNTAwIGhvdmVyOmJnLWxpbWUtMjAwIGZvY3VzOnJpbmctbGltZS00MDAgZGFyazpiZy1saW1lLTIwMCBkYXJrOnRleHQtbGltZS02MDAgZGFyazpob3ZlcjpiZy1saW1lLTMwMFwiLFxuICAgICAgZGFyazogXCJiZy1ncmF5LTEwMCB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMjAwIGZvY3VzOnJpbmctZ3JheS00MDAgZGFyazpiZy1ncmF5LTIwMCBkYXJrOnRleHQtZ3JheS02MDAgZGFyazpob3ZlcjpiZy1ncmF5LTMwMFwiLFxuICAgICAgaW5kaWdvOiBcImJnLWluZGlnby0xMDAgdGV4dC1pbmRpZ28tNTAwIGhvdmVyOmJnLWluZGlnby0yMDAgZm9jdXM6cmluZy1pbmRpZ28tNDAwIGRhcms6YmctaW5kaWdvLTIwMCBkYXJrOnRleHQtaW5kaWdvLTYwMCBkYXJrOmhvdmVyOmJnLWluZGlnby0zMDBcIixcbiAgICAgIHB1cnBsZTogXCJiZy1wdXJwbGUtMTAwIHRleHQtcHVycGxlLTUwMCBob3ZlcjpiZy1wdXJwbGUtMjAwIGZvY3VzOnJpbmctcHVycGxlLTQwMCBkYXJrOmJnLXB1cnBsZS0yMDAgZGFyazp0ZXh0LXB1cnBsZS02MDAgZGFyazpob3ZlcjpiZy1wdXJwbGUtMzAwXCIsXG4gICAgICB0ZWFsOiBcImJnLXRlYWwtMTAwIHRleHQtdGVhbC01MDAgaG92ZXI6YmctdGVhbC0yMDAgZm9jdXM6cmluZy10ZWFsLTQwMCBkYXJrOmJnLXRlYWwtMjAwIGRhcms6dGV4dC10ZWFsLTYwMCBkYXJrOmhvdmVyOmJnLXRlYWwtMzAwXCIsXG4gICAgICBsaWdodDogXCJiZy1ncmF5LTUwIHRleHQtZ3JheS01MDAgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTIwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiXG4gICAgfVxuICB9LFxuICBjb2xvcjoge1xuICAgIGluZm86IFwiYm9yZGVyLWN5YW4tNTAwIGJnLWN5YW4tMTAwIHRleHQtY3lhbi03MDAgZGFyazpiZy1jeWFuLTIwMCBkYXJrOnRleHQtY3lhbi04MDBcIixcbiAgICBncmF5OiBcImJvcmRlci1ncmF5LTUwMCBiZy1ncmF5LTEwMCB0ZXh0LWdyYXktNzAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMzAwXCIsXG4gICAgZmFpbHVyZTogXCJib3JkZXItcmVkLTUwMCBiZy1yZWQtMTAwIHRleHQtcmVkLTcwMCBkYXJrOmJnLXJlZC0yMDAgZGFyazp0ZXh0LXJlZC04MDBcIixcbiAgICBzdWNjZXNzOiBcImJvcmRlci1ncmVlbi01MDAgYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tNzAwIGRhcms6YmctZ3JlZW4tMjAwIGRhcms6dGV4dC1ncmVlbi04MDBcIixcbiAgICB3YXJuaW5nOiBcImJvcmRlci15ZWxsb3ctNTAwIGJnLXllbGxvdy0xMDAgdGV4dC15ZWxsb3ctNzAwIGRhcms6YmcteWVsbG93LTIwMCBkYXJrOnRleHQteWVsbG93LTgwMFwiLFxuICAgIHJlZDogXCJib3JkZXItcmVkLTUwMCBiZy1yZWQtMTAwIHRleHQtcmVkLTcwMCBkYXJrOmJnLXJlZC0yMDAgZGFyazp0ZXh0LXJlZC04MDBcIixcbiAgICBncmVlbjogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTEwMCB0ZXh0LWdyZWVuLTcwMCBkYXJrOmJnLWdyZWVuLTIwMCBkYXJrOnRleHQtZ3JlZW4tODAwXCIsXG4gICAgeWVsbG93OiBcImJvcmRlci15ZWxsb3ctNTAwIGJnLXllbGxvdy0xMDAgdGV4dC15ZWxsb3ctNzAwIGRhcms6YmcteWVsbG93LTIwMCBkYXJrOnRleHQteWVsbG93LTgwMFwiLFxuICAgIGJsdWU6IFwiYm9yZGVyLWJsdWUtNTAwIGJnLWJsdWUtMTAwIHRleHQtYmx1ZS03MDAgZGFyazpiZy1ibHVlLTIwMCBkYXJrOnRleHQtYmx1ZS04MDBcIixcbiAgICBjeWFuOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTEwMCB0ZXh0LWN5YW4tNzAwIGRhcms6YmctY3lhbi0yMDAgZGFyazp0ZXh0LWN5YW4tODAwXCIsXG4gICAgcGluazogXCJib3JkZXItcGluay01MDAgYmctcGluay0xMDAgdGV4dC1waW5rLTcwMCBkYXJrOmJnLXBpbmstMjAwIGRhcms6dGV4dC1waW5rLTgwMFwiLFxuICAgIGxpbWU6IFwiYm9yZGVyLWxpbWUtNTAwIGJnLWxpbWUtMTAwIHRleHQtbGltZS03MDAgZGFyazpiZy1saW1lLTIwMCBkYXJrOnRleHQtbGltZS04MDBcIixcbiAgICBkYXJrOiBcImJvcmRlci1ncmF5LTYwMCBiZy1ncmF5LTgwMCB0ZXh0LWdyYXktMjAwIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMzAwXCIsXG4gICAgaW5kaWdvOiBcImJvcmRlci1pbmRpZ28tNTAwIGJnLWluZGlnby0xMDAgdGV4dC1pbmRpZ28tNzAwIGRhcms6YmctaW5kaWdvLTIwMCBkYXJrOnRleHQtaW5kaWdvLTgwMFwiLFxuICAgIHB1cnBsZTogXCJib3JkZXItcHVycGxlLTUwMCBiZy1wdXJwbGUtMTAwIHRleHQtcHVycGxlLTcwMCBkYXJrOmJnLXB1cnBsZS0yMDAgZGFyazp0ZXh0LXB1cnBsZS04MDBcIixcbiAgICB0ZWFsOiBcImJvcmRlci10ZWFsLTUwMCBiZy10ZWFsLTEwMCB0ZXh0LXRlYWwtNzAwIGRhcms6YmctdGVhbC0yMDAgZGFyazp0ZXh0LXRlYWwtODAwXCIsXG4gICAgbGlnaHQ6IFwiYm9yZGVyLWdyYXktNDAwIGJnLWdyYXktNTAgdGV4dC1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTIwMFwiXG4gIH0sXG4gIGljb246IFwibXItMyBpbmxpbmUgaC01IHctNSBmbGV4LXNocmluay0wXCIsXG4gIHJvdW5kZWQ6IFwicm91bmRlZC1sZ1wiLFxuICB3cmFwcGVyOiBcImZsZXggaXRlbXMtY2VudGVyXCJcbn0pO1xuXG5leHBvcnQgeyBhbGVydFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGF2YXRhclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTQgcm91bmRlZFwiLFxuICAgIGJvcmRlcmVkOiBcInAtMSByaW5nLTJcIixcbiAgICByb3VuZGVkOiBcInJvdW5kZWQtZnVsbFwiLFxuICAgIGNvbG9yOiB7XG4gICAgICBkYXJrOiBcInJpbmctZ3JheS04MDAgZGFyazpyaW5nLWdyYXktODAwXCIsXG4gICAgICBmYWlsdXJlOiBcInJpbmctcmVkLTUwMCBkYXJrOnJpbmctcmVkLTcwMFwiLFxuICAgICAgZ3JheTogXCJyaW5nLWdyYXktNTAwIGRhcms6cmluZy1ncmF5LTQwMFwiLFxuICAgICAgaW5mbzogXCJyaW5nLWN5YW4tNDAwIGRhcms6cmluZy1jeWFuLTgwMFwiLFxuICAgICAgbGlnaHQ6IFwicmluZy1ncmF5LTMwMCBkYXJrOnJpbmctZ3JheS01MDBcIixcbiAgICAgIHB1cnBsZTogXCJyaW5nLXB1cnBsZS01MDAgZGFyazpyaW5nLXB1cnBsZS02MDBcIixcbiAgICAgIHN1Y2Nlc3M6IFwicmluZy1ncmVlbi01MDAgZGFyazpyaW5nLWdyZWVuLTUwMFwiLFxuICAgICAgd2FybmluZzogXCJyaW5nLXllbGxvdy0zMDAgZGFyazpyaW5nLXllbGxvdy01MDBcIixcbiAgICAgIHBpbms6IFwicmluZy1waW5rLTUwMCBkYXJrOnJpbmctcGluay01MDBcIlxuICAgIH0sXG4gICAgaW1nOiB7XG4gICAgICBiYXNlOiBcInJvdW5kZWRcIixcbiAgICAgIG9mZjogXCJyZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gYmctZ3JheS0xMDAgZGFyazpiZy1ncmF5LTYwMFwiLFxuICAgICAgb246IFwiXCIsXG4gICAgICBwbGFjZWhvbGRlcjogXCJhYnNvbHV0ZSAtYm90dG9tLTEgaC1hdXRvIHctYXV0byB0ZXh0LWdyYXktNDAwXCJcbiAgICB9LFxuICAgIHNpemU6IHtcbiAgICAgIHhzOiBcImgtNiB3LTZcIixcbiAgICAgIHNtOiBcImgtOCB3LThcIixcbiAgICAgIG1kOiBcImgtMTAgdy0xMFwiLFxuICAgICAgbGc6IFwiaC0yMCB3LTIwXCIsXG4gICAgICB4bDogXCJoLTM2IHctMzZcIlxuICAgIH0sXG4gICAgc3RhY2tlZDogXCJyaW5nLTIgcmluZy1ncmF5LTMwMCBkYXJrOnJpbmctZ3JheS01MDBcIixcbiAgICBzdGF0dXNQb3NpdGlvbjoge1xuICAgICAgXCJib3R0b20tbGVmdFwiOiBcIi1ib3R0b20tMSAtbGVmdC0xXCIsXG4gICAgICBcImJvdHRvbS1jZW50ZXJcIjogXCItYm90dG9tLTFcIixcbiAgICAgIFwiYm90dG9tLXJpZ2h0XCI6IFwiLWJvdHRvbS0xIC1yaWdodC0xXCIsXG4gICAgICBcInRvcC1sZWZ0XCI6IFwiLWxlZnQtMSAtdG9wLTFcIixcbiAgICAgIFwidG9wLWNlbnRlclwiOiBcIi10b3AtMVwiLFxuICAgICAgXCJ0b3AtcmlnaHRcIjogXCItcmlnaHQtMSAtdG9wLTFcIixcbiAgICAgIFwiY2VudGVyLXJpZ2h0XCI6IFwiLXJpZ2h0LTFcIixcbiAgICAgIGNlbnRlcjogXCJcIixcbiAgICAgIFwiY2VudGVyLWxlZnRcIjogXCItbGVmdC0xXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgYXdheTogXCJiZy15ZWxsb3ctNDAwXCIsXG4gICAgICBiYXNlOiBcImFic29sdXRlIGgtMy41IHctMy41IHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItd2hpdGUgZGFyazpib3JkZXItZ3JheS04MDBcIixcbiAgICAgIGJ1c3k6IFwiYmctcmVkLTQwMFwiLFxuICAgICAgb2ZmbGluZTogXCJiZy1ncmF5LTQwMFwiLFxuICAgICAgb25saW5lOiBcImJnLWdyZWVuLTQwMFwiXG4gICAgfSxcbiAgICBpbml0aWFsczoge1xuICAgICAgdGV4dDogXCJmb250LW1lZGl1bSB0ZXh0LWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTMwMFwiLFxuICAgICAgYmFzZTogXCJyZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIGJnLWdyYXktMTAwIGRhcms6YmctZ3JheS02MDBcIlxuICAgIH1cbiAgfSxcbiAgZ3JvdXA6IHtcbiAgICBiYXNlOiBcImZsZXggLXNwYWNlLXgtNFwiXG4gIH0sXG4gIGdyb3VwQ291bnRlcjoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgZmxleCBoLTEwIHctMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBiZy1ncmF5LTcwMCB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtd2hpdGUgcmluZy0yIHJpbmctZ3JheS0zMDAgaG92ZXI6YmctZ3JheS02MDAgZGFyazpyaW5nLWdyYXktNTAwXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IGF2YXRhclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGJhZGdlVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZsZXggaC1maXQgaXRlbXMtY2VudGVyIGdhcC0xIGZvbnQtc2VtaWJvbGRcIixcbiAgICBjb2xvcjoge1xuICAgICAgaW5mbzogXCJiZy1jeWFuLTEwMCB0ZXh0LWN5YW4tODAwIGdyb3VwLWhvdmVyOmJnLWN5YW4tMjAwIGRhcms6YmctY3lhbi0yMDAgZGFyazp0ZXh0LWN5YW4tODAwIGRhcms6Z3JvdXAtaG92ZXI6YmctY3lhbi0zMDBcIixcbiAgICAgIGdyYXk6IFwiYmctZ3JheS0xMDAgdGV4dC1ncmF5LTgwMCBncm91cC1ob3ZlcjpiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTMwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWdyYXktNjAwXCIsXG4gICAgICBmYWlsdXJlOiBcImJnLXJlZC0xMDAgdGV4dC1yZWQtODAwIGdyb3VwLWhvdmVyOmJnLXJlZC0yMDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctcmVkLTMwMFwiLFxuICAgICAgc3VjY2VzczogXCJiZy1ncmVlbi0xMDAgdGV4dC1ncmVlbi04MDAgZ3JvdXAtaG92ZXI6YmctZ3JlZW4tMjAwIGRhcms6YmctZ3JlZW4tMjAwIGRhcms6dGV4dC1ncmVlbi05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1ncmVlbi0zMDBcIixcbiAgICAgIHdhcm5pbmc6IFwiYmcteWVsbG93LTEwMCB0ZXh0LXllbGxvdy04MDAgZ3JvdXAtaG92ZXI6YmcteWVsbG93LTIwMCBkYXJrOmJnLXllbGxvdy0yMDAgZGFyazp0ZXh0LXllbGxvdy05MDAgZGFyazpncm91cC1ob3ZlcjpiZy15ZWxsb3ctMzAwXCIsXG4gICAgICBpbmRpZ286IFwiYmctaW5kaWdvLTEwMCB0ZXh0LWluZGlnby04MDAgZ3JvdXAtaG92ZXI6YmctaW5kaWdvLTIwMCBkYXJrOmJnLWluZGlnby0yMDAgZGFyazp0ZXh0LWluZGlnby05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1pbmRpZ28tMzAwXCIsXG4gICAgICBwdXJwbGU6IFwiYmctcHVycGxlLTEwMCB0ZXh0LXB1cnBsZS04MDAgZ3JvdXAtaG92ZXI6YmctcHVycGxlLTIwMCBkYXJrOmJnLXB1cnBsZS0yMDAgZGFyazp0ZXh0LXB1cnBsZS05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1wdXJwbGUtMzAwXCIsXG4gICAgICBwaW5rOiBcImJnLXBpbmstMTAwIHRleHQtcGluay04MDAgZ3JvdXAtaG92ZXI6YmctcGluay0yMDAgZGFyazpiZy1waW5rLTIwMCBkYXJrOnRleHQtcGluay05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1waW5rLTMwMFwiLFxuICAgICAgYmx1ZTogXCJiZy1ibHVlLTEwMCB0ZXh0LWJsdWUtODAwIGdyb3VwLWhvdmVyOmJnLWJsdWUtMjAwIGRhcms6YmctYmx1ZS0yMDAgZGFyazp0ZXh0LWJsdWUtOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctYmx1ZS0zMDBcIixcbiAgICAgIGN5YW46IFwiYmctY3lhbi0xMDAgdGV4dC1jeWFuLTgwMCBncm91cC1ob3ZlcjpiZy1jeWFuLTIwMCBkYXJrOmJnLWN5YW4tMjAwIGRhcms6dGV4dC1jeWFuLTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWN5YW4tMzAwXCIsXG4gICAgICBkYXJrOiBcImJnLWdyYXktNjAwIHRleHQtZ3JheS0xMDAgZ3JvdXAtaG92ZXI6YmctZ3JheS01MDAgZGFyazpiZy1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0yMDAgZGFyazpncm91cC1ob3ZlcjpiZy1ncmF5LTcwMFwiLFxuICAgICAgbGlnaHQ6IFwiYmctZ3JheS0yMDAgdGV4dC1ncmF5LTgwMCBncm91cC1ob3ZlcjpiZy1ncmF5LTMwMCBkYXJrOmJnLWdyYXktNDAwIGRhcms6dGV4dC1ncmF5LTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWdyYXktNTAwXCIsXG4gICAgICBncmVlbjogXCJiZy1ncmVlbi0xMDAgdGV4dC1ncmVlbi04MDAgZ3JvdXAtaG92ZXI6YmctZ3JlZW4tMjAwIGRhcms6YmctZ3JlZW4tMjAwIGRhcms6dGV4dC1ncmVlbi05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1ncmVlbi0zMDBcIixcbiAgICAgIGxpbWU6IFwiYmctbGltZS0xMDAgdGV4dC1saW1lLTgwMCBncm91cC1ob3ZlcjpiZy1saW1lLTIwMCBkYXJrOmJnLWxpbWUtMjAwIGRhcms6dGV4dC1saW1lLTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWxpbWUtMzAwXCIsXG4gICAgICByZWQ6IFwiYmctcmVkLTEwMCB0ZXh0LXJlZC04MDAgZ3JvdXAtaG92ZXI6YmctcmVkLTIwMCBkYXJrOmJnLXJlZC0yMDAgZGFyazp0ZXh0LXJlZC05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1yZWQtMzAwXCIsXG4gICAgICB0ZWFsOiBcImJnLXRlYWwtMTAwIHRleHQtdGVhbC04MDAgZ3JvdXAtaG92ZXI6YmctdGVhbC0yMDAgZGFyazpiZy10ZWFsLTIwMCBkYXJrOnRleHQtdGVhbC05MDAgZGFyazpncm91cC1ob3ZlcjpiZy10ZWFsLTMwMFwiLFxuICAgICAgeWVsbG93OiBcImJnLXllbGxvdy0xMDAgdGV4dC15ZWxsb3ctODAwIGdyb3VwLWhvdmVyOmJnLXllbGxvdy0yMDAgZGFyazpiZy15ZWxsb3ctMjAwIGRhcms6dGV4dC15ZWxsb3ctOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmcteWVsbG93LTMwMFwiXG4gICAgfSxcbiAgICBocmVmOiBcImdyb3VwXCIsXG4gICAgc2l6ZToge1xuICAgICAgeHM6IFwicC0xIHRleHQteHNcIixcbiAgICAgIHNtOiBcInAtMS41IHRleHQtc21cIlxuICAgIH1cbiAgfSxcbiAgaWNvbjoge1xuICAgIG9mZjogXCJyb3VuZGVkIHB4LTIgcHktMC41XCIsXG4gICAgb246IFwicm91bmRlZC1mdWxsIHAtMS41XCIsXG4gICAgc2l6ZToge1xuICAgICAgeHM6IFwiaC0zIHctM1wiLFxuICAgICAgc206IFwiaC0zLjUgdy0zLjVcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGJhZGdlVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgYmxvY2txdW90ZVRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgaXRhbGljIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IGJsb2NrcXVvdGVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBicmVhZGNydW1iVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcIlwiLFxuICAgIGxpc3Q6IFwiZmxleCBpdGVtcy1jZW50ZXJcIlxuICB9LFxuICBpdGVtOiB7XG4gICAgYmFzZTogXCJncm91cCBmbGV4IGl0ZW1zLWNlbnRlclwiLFxuICAgIGNoZXZyb246IFwibXgtMSBoLTQgdy00IHRleHQtZ3JheS00MDAgZ3JvdXAtZmlyc3Q6aGlkZGVuIG1kOm14LTJcIixcbiAgICBocmVmOiB7XG4gICAgICBvZmY6IFwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgICAgb246IFwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIGhvdmVyOnRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiXG4gICAgfSxcbiAgICBpY29uOiBcIm1yLTIgaC00IHctNFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBicmVhZGNydW1iVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgYnV0dG9uVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiZ3JvdXAgcmVsYXRpdmUgZmxleCBpdGVtcy1zdHJldGNoIGp1c3RpZnktY2VudGVyIHAtMC41IHRleHQtY2VudGVyIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tW2NvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSxib3gtc2hhZG93XSBmb2N1czp6LTEwIGZvY3VzOm91dGxpbmUtbm9uZVwiLFxuICBmdWxsU2l6ZWQ6IFwidy1mdWxsXCIsXG4gIGNvbG9yOiB7XG4gICAgZGFyazogXCJib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLWdyYXktODAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmF5LTkwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTgwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctZ3JheS03MDBcIixcbiAgICBmYWlsdXJlOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctcmVkLTcwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXJlZC0zMDAgZW5hYmxlZDpob3ZlcjpiZy1yZWQtODAwIGRhcms6YmctcmVkLTYwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctcmVkLTcwMFwiLFxuICAgIGdyYXk6IFwiOnJpbmctY3lhbi03MDAgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBiZy13aGl0ZSB0ZXh0LWdyYXktOTAwIGZvY3VzOnRleHQtY3lhbi03MDAgZm9jdXM6cmluZy00IGVuYWJsZWQ6aG92ZXI6YmctZ3JheS0xMDAgZW5hYmxlZDpob3Zlcjp0ZXh0LWN5YW4tNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctdHJhbnNwYXJlbnQgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgIGluZm86IFwiYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWN5YW4tMzAwIGVuYWJsZWQ6aG92ZXI6YmctY3lhbi04MDAgZGFyazpiZy1jeWFuLTYwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi04MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWN5YW4tNzAwXCIsXG4gICAgbGlnaHQ6IFwiYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSB0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWN5YW4tMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JheS0xMDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItZ3JheS03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWdyYXktNzAwXCIsXG4gICAgcHVycGxlOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctcHVycGxlLTcwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXB1cnBsZS0zMDAgZW5hYmxlZDpob3ZlcjpiZy1wdXJwbGUtODAwIGRhcms6YmctcHVycGxlLTYwMCBkYXJrOmZvY3VzOnJpbmctcHVycGxlLTkwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctcHVycGxlLTcwMFwiLFxuICAgIHN1Y2Nlc3M6IFwiYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1ncmVlbi03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmVlbi0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmVlbi04MDAgZGFyazpiZy1ncmVlbi02MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTgwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctZ3JlZW4tNzAwXCIsXG4gICAgd2FybmluZzogXCJib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLXllbGxvdy00MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy15ZWxsb3ctMzAwIGVuYWJsZWQ6aG92ZXI6YmcteWVsbG93LTUwMCBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTkwMFwiLFxuICAgIGJsdWU6IFwiYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1ibHVlLTcwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGVuYWJsZWQ6aG92ZXI6YmctYmx1ZS04MDAgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGRhcms6Zm9jdXM6cmluZy1ibHVlLTgwMFwiLFxuICAgIGN5YW46IFwiYm9yZGVyIGJvcmRlci1jeWFuLTMwMCBiZy13aGl0ZSB0ZXh0LWN5YW4tOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWN5YW4tMzAwIGVuYWJsZWQ6aG92ZXI6YmctY3lhbi0xMDAgZGFyazpib3JkZXItY3lhbi02MDAgZGFyazpiZy1jeWFuLTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWN5YW4tNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItY3lhbi03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWN5YW4tNzAwXCIsXG4gICAgZ3JlZW46IFwiYm9yZGVyIGJvcmRlci1ncmVlbi0zMDAgYmctd2hpdGUgdGV4dC1ncmVlbi05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JlZW4tMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JlZW4tMTAwIGRhcms6Ym9yZGVyLWdyZWVuLTYwMCBkYXJrOmJnLWdyZWVuLTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWdyZWVuLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWdyZWVuLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctZ3JlZW4tNzAwXCIsXG4gICAgaW5kaWdvOiBcImJvcmRlciBib3JkZXItaW5kaWdvLTMwMCBiZy13aGl0ZSB0ZXh0LWluZGlnby05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctaW5kaWdvLTMwMCBlbmFibGVkOmhvdmVyOmJnLWluZGlnby0xMDAgZGFyazpib3JkZXItaW5kaWdvLTYwMCBkYXJrOmJnLWluZGlnby02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1pbmRpZ28tNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItaW5kaWdvLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctaW5kaWdvLTcwMFwiLFxuICAgIGxpbWU6IFwiYm9yZGVyIGJvcmRlci1saW1lLTMwMCBiZy13aGl0ZSB0ZXh0LWxpbWUtOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWxpbWUtMzAwIGVuYWJsZWQ6aG92ZXI6YmctbGltZS0xMDAgZGFyazpib3JkZXItbGltZS02MDAgZGFyazpiZy1saW1lLTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWxpbWUtNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItbGltZS03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWxpbWUtNzAwXCIsXG4gICAgcGluazogXCJib3JkZXIgYm9yZGVyLXBpbmstMzAwIGJnLXdoaXRlIHRleHQtcGluay05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcGluay0zMDAgZW5hYmxlZDpob3ZlcjpiZy1waW5rLTEwMCBkYXJrOmJvcmRlci1waW5rLTYwMCBkYXJrOmJnLXBpbmstNjAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctcGluay03MDAgZGFyazplbmFibGVkOmhvdmVyOmJvcmRlci1waW5rLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctcGluay03MDBcIixcbiAgICByZWQ6IFwiYm9yZGVyIGJvcmRlci1yZWQtMzAwIGJnLXdoaXRlIHRleHQtcmVkLTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1yZWQtMzAwIGVuYWJsZWQ6aG92ZXI6YmctcmVkLTEwMCBkYXJrOmJvcmRlci1yZWQtNjAwIGRhcms6YmctcmVkLTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLXJlZC03MDAgZGFyazplbmFibGVkOmhvdmVyOmJvcmRlci1yZWQtNzAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1yZWQtNzAwXCIsXG4gICAgdGVhbDogXCJib3JkZXIgYm9yZGVyLXRlYWwtMzAwIGJnLXdoaXRlIHRleHQtdGVhbC05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctdGVhbC0zMDAgZW5hYmxlZDpob3ZlcjpiZy10ZWFsLTEwMCBkYXJrOmJvcmRlci10ZWFsLTYwMCBkYXJrOmJnLXRlYWwtNjAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctdGVhbC03MDAgZGFyazplbmFibGVkOmhvdmVyOmJvcmRlci10ZWFsLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctdGVhbC03MDBcIixcbiAgICB5ZWxsb3c6IFwiYm9yZGVyIGJvcmRlci15ZWxsb3ctMzAwIGJnLXdoaXRlIHRleHQteWVsbG93LTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy15ZWxsb3ctMzAwIGVuYWJsZWQ6aG92ZXI6YmcteWVsbG93LTEwMCBkYXJrOmJvcmRlci15ZWxsb3ctNjAwIGRhcms6YmcteWVsbG93LTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLXllbGxvdy03MDAgZGFyazplbmFibGVkOmhvdmVyOmJvcmRlci15ZWxsb3ctNzAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy15ZWxsb3ctNzAwXCJcbiAgfSxcbiAgZGlzYWJsZWQ6IFwiY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTBcIixcbiAgaXNQcm9jZXNzaW5nOiBcImN1cnNvci13YWl0XCIsXG4gIHNwaW5uZXJTbG90OiBcImFic29sdXRlIHRvcC0wIGZsZXggaC1mdWxsIGl0ZW1zLWNlbnRlclwiLFxuICBzcGlubmVyTGVmdFBvc2l0aW9uOiB7XG4gICAgeHM6IFwibGVmdC0yXCIsXG4gICAgc206IFwibGVmdC0zXCIsXG4gICAgbWQ6IFwibGVmdC00XCIsXG4gICAgbGc6IFwibGVmdC01XCIsXG4gICAgeGw6IFwibGVmdC02XCJcbiAgfSxcbiAgZ3JhZGllbnQ6IHtcbiAgICBjeWFuOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS1jeWFuLTQwMCB2aWEtY3lhbi01MDAgdG8tY3lhbi02MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy1jeWFuLTgwMFwiLFxuICAgIGZhaWx1cmU6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXJlZC00MDAgdmlhLXJlZC01MDAgdG8tcmVkLTYwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXJlZC0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1iciBkYXJrOmZvY3VzOnJpbmctcmVkLTgwMFwiLFxuICAgIGluZm86IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWN5YW4tNTAwIHZpYS1jeWFuLTYwMCB0by1jeWFuLTcwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWN5YW4tMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYnIgZGFyazpmb2N1czpyaW5nLWN5YW4tODAwXCIsXG4gICAgbGltZTogXCJiZy1ncmFkaWVudC10by1yIGZyb20tbGltZS0yMDAgdmlhLWxpbWUtNDAwIHRvLWxpbWUtNTAwIHRleHQtZ3JheS05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctbGltZS0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1iciBkYXJrOmZvY3VzOnJpbmctbGltZS04MDBcIixcbiAgICBwaW5rOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS1waW5rLTQwMCB2aWEtcGluay01MDAgdG8tcGluay02MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1waW5rLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy1waW5rLTgwMFwiLFxuICAgIHB1cnBsZTogXCJiZy1ncmFkaWVudC10by1yIGZyb20tcHVycGxlLTUwMCB2aWEtcHVycGxlLTYwMCB0by1wdXJwbGUtNzAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcHVycGxlLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy1wdXJwbGUtODAwXCIsXG4gICAgc3VjY2VzczogXCJiZy1ncmFkaWVudC10by1yIGZyb20tZ3JlZW4tNDAwIHZpYS1ncmVlbi01MDAgdG8tZ3JlZW4tNjAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JlZW4tMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYnIgZGFyazpmb2N1czpyaW5nLWdyZWVuLTgwMFwiLFxuICAgIHRlYWw6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXRlYWwtNDAwIHZpYS10ZWFsLTUwMCB0by10ZWFsLTYwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXRlYWwtMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYnIgZGFyazpmb2N1czpyaW5nLXRlYWwtODAwXCJcbiAgfSxcbiAgZ3JhZGllbnREdW9Ub25lOiB7XG4gICAgY3lhblRvQmx1ZTogXCJiZy1ncmFkaWVudC10by1yIGZyb20tY3lhbi01MDAgdG8tY3lhbi01MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJsIGRhcms6Zm9jdXM6cmluZy1jeWFuLTgwMFwiLFxuICAgIGdyZWVuVG9CbHVlOiBcImJnLWdyYWRpZW50LXRvLWJyIGZyb20tZ3JlZW4tNDAwIHRvLWN5YW4tNjAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JlZW4tMjAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYmwgZGFyazpmb2N1czpyaW5nLWdyZWVuLTgwMFwiLFxuICAgIHBpbmtUb09yYW5nZTogXCJiZy1ncmFkaWVudC10by1iciBmcm9tLXBpbmstNTAwIHRvLW9yYW5nZS00MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1waW5rLTIwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJsIGRhcms6Zm9jdXM6cmluZy1waW5rLTgwMFwiLFxuICAgIHB1cnBsZVRvQmx1ZTogXCJiZy1ncmFkaWVudC10by1iciBmcm9tLXB1cnBsZS02MDAgdG8tY3lhbi01MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJsIGRhcms6Zm9jdXM6cmluZy1jeWFuLTgwMFwiLFxuICAgIHB1cnBsZVRvUGluazogXCJiZy1ncmFkaWVudC10by1yIGZyb20tcHVycGxlLTUwMCB0by1waW5rLTUwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXB1cnBsZS0yMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1sIGRhcms6Zm9jdXM6cmluZy1wdXJwbGUtODAwXCIsXG4gICAgcmVkVG9ZZWxsb3c6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXJlZC0yMDAgdmlhLXJlZC0zMDAgdG8teWVsbG93LTIwMCB0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXJlZC0xMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1ibCBkYXJrOmZvY3VzOnJpbmctcmVkLTQwMFwiLFxuICAgIHRlYWxUb0xpbWU6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXRlYWwtMjAwIHRvLWxpbWUtMjAwIHRleHQtZ3JheS05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctbGltZS0yMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1sIGVuYWJsZWQ6aG92ZXI6ZnJvbS10ZWFsLTIwMCBlbmFibGVkOmhvdmVyOnRvLWxpbWUtMjAwIGVuYWJsZWQ6aG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOmZvY3VzOnJpbmctdGVhbC03MDBcIlxuICB9LFxuICBpbm5lcjoge1xuICAgIGJhc2U6IFwiZmxleCBpdGVtcy1zdHJldGNoIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMFwiLFxuICAgIHBvc2l0aW9uOiB7XG4gICAgICBub25lOiBcIlwiLFxuICAgICAgc3RhcnQ6IFwicm91bmRlZC1yLW5vbmVcIixcbiAgICAgIG1pZGRsZTogXCJyb3VuZGVkLW5vbmVcIixcbiAgICAgIGVuZDogXCJyb3VuZGVkLWwtbm9uZVwiXG4gICAgfSxcbiAgICBvdXRsaW5lOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnRcIixcbiAgICBpc1Byb2Nlc3NpbmdQYWRkaW5nOiB7XG4gICAgICB4czogXCJwbC04XCIsXG4gICAgICBzbTogXCJwbC0xMFwiLFxuICAgICAgbWQ6IFwicGwtMTJcIixcbiAgICAgIGxnOiBcInBsLTE2XCIsXG4gICAgICB4bDogXCJwbC0yMFwiXG4gICAgfVxuICB9LFxuICBsYWJlbDogXCJtbC0yIGlubGluZS1mbGV4IGgtNCB3LTQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBiZy1jeWFuLTIwMCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1jeWFuLTgwMFwiLFxuICBvdXRsaW5lOiB7XG4gICAgY29sb3I6IHtcbiAgICAgIGdyYXk6IFwiYm9yZGVyIGJvcmRlci1ncmF5LTkwMCBkYXJrOmJvcmRlci13aGl0ZVwiLFxuICAgICAgZGVmYXVsdDogXCJib3JkZXItMFwiLFxuICAgICAgbGlnaHQ6IFwiXCJcbiAgICB9LFxuICAgIG9mZjogXCJcIixcbiAgICBvbjogXCJmbGV4IHctZnVsbCBqdXN0aWZ5LWNlbnRlciBiZy13aGl0ZSB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTc1IGVhc2UtaW4gZ3JvdXAtZW5hYmxlZDpncm91cC1ob3ZlcjpiZy1vcGFjaXR5LTAgZ3JvdXAtZW5hYmxlZDpncm91cC1ob3Zlcjp0ZXh0LWluaGVyaXQgZGFyazpiZy1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIixcbiAgICBwaWxsOiB7XG4gICAgICBvZmY6IFwicm91bmRlZC1tZFwiLFxuICAgICAgb246IFwicm91bmRlZC1mdWxsXCJcbiAgICB9XG4gIH0sXG4gIHBpbGw6IHtcbiAgICBvZmY6IFwicm91bmRlZC1sZ1wiLFxuICAgIG9uOiBcInJvdW5kZWQtZnVsbFwiXG4gIH0sXG4gIHNpemU6IHtcbiAgICB4czogXCJweC0yIHB5LTEgdGV4dC14c1wiLFxuICAgIHNtOiBcInB4LTMgcHktMS41IHRleHQtc21cIixcbiAgICBtZDogXCJweC00IHB5LTIgdGV4dC1zbVwiLFxuICAgIGxnOiBcInB4LTUgcHktMi41IHRleHQtYmFzZVwiLFxuICAgIHhsOiBcInB4LTYgcHktMyB0ZXh0LWJhc2VcIlxuICB9XG59KTtcbmNvbnN0IGJ1dHRvbkdyb3VwVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiaW5saW5lLWZsZXhcIixcbiAgcG9zaXRpb246IHtcbiAgICBub25lOiBcIlwiLFxuICAgIHN0YXJ0OiBcInJvdW5kZWQtci1ub25lIGZvY3VzOnJpbmctMlwiLFxuICAgIG1pZGRsZTogXCJyb3VuZGVkLW5vbmUgYm9yZGVyLWwtMCBwbC0wIGZvY3VzOnJpbmctMlwiLFxuICAgIGVuZDogXCJyb3VuZGVkLWwtbm9uZSBib3JkZXItbC0wIHBsLTAgZm9jdXM6cmluZy0yXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IGJ1dHRvbkdyb3VwVGhlbWUsIGJ1dHRvblRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGNhcmRUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZmxleCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgc2hhZG93LW1kIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6YmctZ3JheS04MDBcIixcbiAgICBjaGlsZHJlbjogXCJmbGV4IGgtZnVsbCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBnYXAtNCBwLTZcIixcbiAgICBob3Jpem9udGFsOiB7XG4gICAgICBvZmY6IFwiZmxleC1jb2xcIixcbiAgICAgIG9uOiBcImZsZXgtY29sIG1kOm1heC13LXhsIG1kOmZsZXgtcm93XCJcbiAgICB9LFxuICAgIGhyZWY6IFwiaG92ZXI6YmctZ3JheS0xMDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMFwiXG4gIH0sXG4gIGltZzoge1xuICAgIGJhc2U6IFwiXCIsXG4gICAgaG9yaXpvbnRhbDoge1xuICAgICAgb2ZmOiBcInJvdW5kZWQtdC1sZ1wiLFxuICAgICAgb246IFwiaC05NiB3LWZ1bGwgcm91bmRlZC10LWxnIG9iamVjdC1jb3ZlciBtZDpoLWF1dG8gbWQ6dy00OCBtZDpyb3VuZGVkLW5vbmUgbWQ6cm91bmRlZC1sLWxnXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBjYXJkVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgY2Fyb3VzZWxUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgaC1mdWxsIHctZnVsbFwiLFxuICAgIGxlZnRDb250cm9sOiBcImFic29sdXRlIGxlZnQtMCB0b3AtMCBmbGV4IGgtZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtNCBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgICByaWdodENvbnRyb2w6IFwiYWJzb2x1dGUgcmlnaHQtMCB0b3AtMCBmbGV4IGgtZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtNCBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICB9LFxuICBpbmRpY2F0b3JzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBvZmY6IFwiYmctd2hpdGUvNTAgaG92ZXI6Ymctd2hpdGUgZGFyazpiZy1ncmF5LTgwMC81MCBkYXJrOmhvdmVyOmJnLWdyYXktODAwXCIsXG4gICAgICBvbjogXCJiZy13aGl0ZSBkYXJrOmJnLWdyYXktODAwXCJcbiAgICB9LFxuICAgIGJhc2U6IFwiaC0zIHctMyByb3VuZGVkLWZ1bGxcIixcbiAgICB3cmFwcGVyOiBcImFic29sdXRlIGJvdHRvbS01IGxlZnQtMS8yIGZsZXggLXRyYW5zbGF0ZS14LTEvMiBzcGFjZS14LTNcIlxuICB9LFxuICBpdGVtOiB7XG4gICAgYmFzZTogXCJhYnNvbHV0ZSBsZWZ0LTEvMiB0b3AtMS8yIGJsb2NrIHctZnVsbCAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzJcIixcbiAgICB3cmFwcGVyOiB7XG4gICAgICBvZmY6IFwidy1mdWxsIGZsZXgtc2hyaW5rLTAgdHJhbnNmb3JtIGN1cnNvci1kZWZhdWx0IHNuYXAtY2VudGVyXCIsXG4gICAgICBvbjogXCJ3LWZ1bGwgZmxleC1zaHJpbmstMCB0cmFuc2Zvcm0gY3Vyc29yLWdyYWIgc25hcC1jZW50ZXJcIlxuICAgIH1cbiAgfSxcbiAgY29udHJvbDoge1xuICAgIGJhc2U6IFwiaW5saW5lLWZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJnLXdoaXRlLzMwIGdyb3VwLWhvdmVyOmJnLXdoaXRlLzUwIGdyb3VwLWZvY3VzOm91dGxpbmUtbm9uZSBncm91cC1mb2N1czpyaW5nLTQgZ3JvdXAtZm9jdXM6cmluZy13aGl0ZSBkYXJrOmJnLWdyYXktODAwLzMwIGRhcms6Z3JvdXAtaG92ZXI6YmctZ3JheS04MDAvNjAgZGFyazpncm91cC1mb2N1czpyaW5nLWdyYXktODAwLzcwIHNtOmgtMTAgc206dy0xMFwiLFxuICAgIGljb246IFwiaC01IHctNSB0ZXh0LXdoaXRlIGRhcms6dGV4dC1ncmF5LTgwMCBzbTpoLTYgc206dy02XCJcbiAgfSxcbiAgc2Nyb2xsQ29udGFpbmVyOiB7XG4gICAgYmFzZTogXCJmbGV4IGgtZnVsbCBzbmFwLW1hbmRhdG9yeSBvdmVyZmxvdy15LWhpZGRlbiBvdmVyZmxvdy14LXNjcm9sbCBzY3JvbGwtc21vb3RoIHJvdW5kZWQtbGdcIixcbiAgICBzbmFwOiBcInNuYXAteFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBjYXJvdXNlbFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGNoZWNrYm94VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImgtNCB3LTQgcm91bmRlZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktMTAwIGZvY3VzOnJpbmctMiBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgY29sb3I6IHtcbiAgICAgIGRlZmF1bHQ6IFwidGV4dC1jeWFuLTYwMCBmb2N1czpyaW5nLWN5YW4tNjAwIGRhcms6cmluZy1vZmZzZXQtZ3JheS04MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNjAwXCIsXG4gICAgICBkYXJrOiBcInRleHQtZ3JheS04MDAgZm9jdXM6cmluZy1ncmF5LTgwMCBkYXJrOnJpbmctb2Zmc2V0LWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTgwMFwiLFxuICAgICAgZmFpbHVyZTogXCJ0ZXh0LXJlZC05MDAgZm9jdXM6cmluZy1yZWQtOTAwIGRhcms6cmluZy1vZmZzZXQtcmVkLTkwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiLFxuICAgICAgZ3JheTogXCJ0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctZ3JheS05MDAgZGFyazpyaW5nLW9mZnNldC1ncmF5LTkwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS05MDBcIixcbiAgICAgIGluZm86IFwidGV4dC1jeWFuLTgwMCBmb2N1czpyaW5nLWN5YW4tODAwIGRhcms6cmluZy1vZmZzZXQtZ3JheS04MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tODAwXCIsXG4gICAgICBsaWdodDogXCJ0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctZ3JheS05MDAgZGFyazpyaW5nLW9mZnNldC1ncmF5LTkwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS05MDBcIixcbiAgICAgIHB1cnBsZTogXCJ0ZXh0LXB1cnBsZS02MDAgZm9jdXM6cmluZy1wdXJwbGUtNjAwIGRhcms6cmluZy1vZmZzZXQtcHVycGxlLTYwMCBkYXJrOmZvY3VzOnJpbmctcHVycGxlLTYwMFwiLFxuICAgICAgc3VjY2VzczogXCJ0ZXh0LWdyZWVuLTgwMCBmb2N1czpyaW5nLWdyZWVuLTgwMCBkYXJrOnJpbmctb2Zmc2V0LWdyZWVuLTgwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tODAwXCIsXG4gICAgICB3YXJuaW5nOiBcInRleHQteWVsbG93LTQwMCBmb2N1czpyaW5nLXllbGxvdy00MDAgZGFyazpyaW5nLW9mZnNldC15ZWxsb3ctNDAwIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNDAwXCIsXG4gICAgICBibHVlOiBcInRleHQtYmx1ZS03MDAgZm9jdXM6cmluZy1ibHVlLTYwMCBkYXJrOnJpbmctb2Zmc2V0LWJsdWUtNzAwIGRhcms6Zm9jdXM6cmluZy1ibHVlLTcwMFwiLFxuICAgICAgY3lhbjogXCJ0ZXh0LWN5YW4tNjAwIGZvY3VzOnJpbmctY3lhbi02MDAgZGFyazpyaW5nLW9mZnNldC1jeWFuLTYwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi02MDBcIixcbiAgICAgIGdyZWVuOiBcInRleHQtZ3JlZW4tNjAwIGZvY3VzOnJpbmctZ3JlZW4tNjAwIGRhcms6cmluZy1vZmZzZXQtZ3JlZW4tNjAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi02MDBcIixcbiAgICAgIGluZGlnbzogXCJ0ZXh0LWluZGlnby03MDAgZm9jdXM6cmluZy1pbmRpZ28tNzAwIGRhcms6cmluZy1vZmZzZXQtaW5kaWdvLTcwMCBkYXJrOmZvY3VzOnJpbmctaW5kaWdvLTcwMFwiLFxuICAgICAgbGltZTogXCJ0ZXh0LWxpbWUtNzAwIGZvY3VzOnJpbmctbGltZS03MDAgZGFyazpyaW5nLW9mZnNldC1saW1lLTcwMCBkYXJrOmZvY3VzOnJpbmctbGltZS03MDBcIixcbiAgICAgIHBpbms6IFwidGV4dC1waW5rLTYwMCBmb2N1czpyaW5nLXBpbmstNjAwIGRhcms6cmluZy1vZmZzZXQtcGluay02MDAgZGFyazpmb2N1czpyaW5nLXBpbmstNjAwXCIsXG4gICAgICByZWQ6IFwidGV4dC1yZWQtNjAwIGZvY3VzOnJpbmctcmVkLTYwMCBkYXJrOnJpbmctb2Zmc2V0LXJlZC02MDAgZGFyazpmb2N1czpyaW5nLXJlZC02MDBcIixcbiAgICAgIHRlYWw6IFwidGV4dC10ZWFsLTYwMCBmb2N1czpyaW5nLXRlYWwtNjAwIGRhcms6cmluZy1vZmZzZXQtdGVhbC02MDAgZGFyazpmb2N1czpyaW5nLXRlYWwtNjAwXCIsXG4gICAgICB5ZWxsb3c6IFwidGV4dC15ZWxsb3ctNDAwIGZvY3VzOnJpbmcteWVsbG93LTQwMCBkYXJrOnJpbmctb2Zmc2V0LXllbGxvdy00MDAgZGFyazpmb2N1czpyaW5nLXllbGxvdy00MDBcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGNoZWNrYm94VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgY2xpcGJvYXJkVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJ1dHRvbjoge1xuICAgIGJhc2U6IFwiaW5saW5lLWZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJnLWJsdWUtNzAwIHB4LTUgcHktMyBob3ZlcjpiZy1ibHVlLTgwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGRhcms6Zm9jdXM6cmluZy1ibHVlLTgwMFwiLFxuICAgIGxhYmVsOiBcInRleHQtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC13aGl0ZSBzbTp3LWF1dG9cIlxuICB9LFxuICB3aXRoSWNvbjoge1xuICAgIGJhc2U6IFwiYWJzb2x1dGUgZW5kLTIgdG9wLTEvMiBpbmxpbmUtZmxleCAtdHJhbnNsYXRlLXktMS8yIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIHAtMiB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwXCIsXG4gICAgaWNvbjoge1xuICAgICAgZGVmYXVsdEljb246IFwiaC00IHctNFwiLFxuICAgICAgc3VjY2Vzc0ljb246IFwiaC00IHctNCB0ZXh0LWJsdWUtNzAwIGRhcms6dGV4dC1ibHVlLTUwMFwiXG4gICAgfVxuICB9LFxuICB3aXRoSWNvblRleHQ6IHtcbiAgICBiYXNlOiBcImFic29sdXRlIGVuZC0yLjUgdG9wLTEvMiBpbmxpbmUtZmxleCAtdHJhbnNsYXRlLXktMS8yIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgcHgtMi41IHB5LTIgdGV4dC1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktODAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwXCIsXG4gICAgaWNvbjoge1xuICAgICAgZGVmYXVsdEljb246IFwibWUtMS41IGgtMyB3LTNcIixcbiAgICAgIHN1Y2Nlc3NJY29uOiBcIm1lLTEuNSBoLTMgdy0zIHRleHQtYmx1ZS03MDAgZGFyazp0ZXh0LWJsdWUtNTAwXCJcbiAgICB9LFxuICAgIGxhYmVsOiB7XG4gICAgICBiYXNlOiBcImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlclwiLFxuICAgICAgZGVmYXVsdFRleHQ6IFwidGV4dC14cyBmb250LXNlbWlib2xkXCIsXG4gICAgICBzdWNjZXNzVGV4dDogXCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1ibHVlLTcwMCBkYXJrOnRleHQtYmx1ZS01MDBcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGNsaXBib2FyZFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGRhcmtUaGVtZVRvZ2dsZVRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJyb3VuZGVkLWxnIHAtMi41IHRleHQtc20gdGV4dC1ncmF5LTUwMCBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0yMDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwXCIsXG4gICAgaWNvbjogXCJoLTUgdy01XCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IGRhcmtUaGVtZVRvZ2dsZVRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGRhdGVQaWNrZXJUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmVcIlxuICB9LFxuICBwb3B1cDoge1xuICAgIHJvb3Q6IHtcbiAgICAgIGJhc2U6IFwiYWJzb2x1dGUgdG9wLTEwIHotNTAgYmxvY2sgcHQtMlwiLFxuICAgICAgaW5saW5lOiBcInJlbGF0aXZlIHRvcC0wIHotYXV0b1wiLFxuICAgICAgaW5uZXI6IFwiaW5saW5lLWJsb2NrIHJvdW5kZWQtbGcgYmctd2hpdGUgcC00IHNoYWRvdy1sZyBkYXJrOmJnLWdyYXktNzAwXCJcbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgYmFzZTogXCJcIixcbiAgICAgIHRpdGxlOiBcInB4LTIgcHktMyB0ZXh0LWNlbnRlciBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIsXG4gICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgYmFzZTogXCJtYi0yIGZsZXgganVzdGlmeS1iZXR3ZWVuXCIsXG4gICAgICAgIGJ1dHRvbjoge1xuICAgICAgICAgIGJhc2U6IFwicm91bmRlZC1sZyBiZy13aGl0ZSBweC01IHB5LTIuNSB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMFwiLFxuICAgICAgICAgIHByZXY6IFwiXCIsXG4gICAgICAgICAgbmV4dDogXCJcIixcbiAgICAgICAgICB2aWV3OiBcIlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHZpZXc6IHtcbiAgICAgIGJhc2U6IFwicC0xXCJcbiAgICB9LFxuICAgIGZvb3Rlcjoge1xuICAgICAgYmFzZTogXCJtdC0yIGZsZXggc3BhY2UteC0yXCIsXG4gICAgICBidXR0b246IHtcbiAgICAgICAgYmFzZTogXCJ3LWZ1bGwgcm91bmRlZC1sZyBweC01IHB5LTIgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMFwiLFxuICAgICAgICB0b2RheTogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGhvdmVyOmJnLWN5YW4tODAwIGRhcms6YmctY3lhbi02MDAgZGFyazpob3ZlcjpiZy1jeWFuLTcwMFwiLFxuICAgICAgICBjbGVhcjogXCJib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlIHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICB2aWV3czoge1xuICAgIGRheXM6IHtcbiAgICAgIGhlYWRlcjoge1xuICAgICAgICBiYXNlOiBcIm1iLTEgZ3JpZCBncmlkLWNvbHMtN1wiLFxuICAgICAgICB0aXRsZTogXCJoLTYgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bSBsZWFkaW5nLTYgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgICAgfSxcbiAgICAgIGl0ZW1zOiB7XG4gICAgICAgIGJhc2U6IFwiZ3JpZCB3LTY0IGdyaWQtY29scy03XCIsXG4gICAgICAgIGl0ZW06IHtcbiAgICAgICAgICBiYXNlOiBcImJsb2NrIGZsZXgtMSBjdXJzb3ItcG9pbnRlciByb3VuZGVkLWxnIGJvcmRlci0wIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1zZW1pYm9sZCBsZWFkaW5nLTkgdGV4dC1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMFwiLFxuICAgICAgICAgIHNlbGVjdGVkOiBcImJnLWN5YW4tNzAwIHRleHQtd2hpdGUgaG92ZXI6YmctY3lhbi02MDBcIixcbiAgICAgICAgICBkaXNhYmxlZDogXCJ0ZXh0LWdyYXktNTAwXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbW9udGhzOiB7XG4gICAgICBpdGVtczoge1xuICAgICAgICBiYXNlOiBcImdyaWQgdy02NCBncmlkLWNvbHMtNFwiLFxuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgYmFzZTogXCJibG9jayBmbGV4LTEgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1sZyBib3JkZXItMCB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbGVhZGluZy05IHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIixcbiAgICAgICAgICBzZWxlY3RlZDogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGhvdmVyOmJnLWN5YW4tNjAwXCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IFwidGV4dC1ncmF5LTUwMFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHllYXJzOiB7XG4gICAgICBpdGVtczoge1xuICAgICAgICBiYXNlOiBcImdyaWQgdy02NCBncmlkLWNvbHMtNFwiLFxuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgYmFzZTogXCJibG9jayBmbGV4LTEgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1sZyBib3JkZXItMCB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbGVhZGluZy05IHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIixcbiAgICAgICAgICBzZWxlY3RlZDogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGhvdmVyOmJnLWN5YW4tNjAwXCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IFwidGV4dC1ncmF5LTUwMFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGRlY2FkZXM6IHtcbiAgICAgIGl0ZW1zOiB7XG4gICAgICAgIGJhc2U6IFwiZ3JpZCB3LTY0IGdyaWQtY29scy00XCIsXG4gICAgICAgIGl0ZW06IHtcbiAgICAgICAgICBiYXNlOiBcImJsb2NrIGZsZXgtMSBjdXJzb3ItcG9pbnRlciByb3VuZGVkLWxnIGJvcmRlci0wIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1zZW1pYm9sZCBsZWFkaW5nLTkgdGV4dC1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMFwiLFxuICAgICAgICAgIHNlbGVjdGVkOiBcImJnLWN5YW4tNzAwIHRleHQtd2hpdGUgaG92ZXI6YmctY3lhbi02MDBcIixcbiAgICAgICAgICBkaXNhYmxlZDogXCJ0ZXh0LWdyYXktNTAwXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGRhdGVQaWNrZXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBkcmF3ZXJUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZml4ZWQgei00MCBvdmVyZmxvdy15LWF1dG8gYmctd2hpdGUgcC00IHRyYW5zaXRpb24tdHJhbnNmb3JtIGRhcms6YmctZ3JheS04MDBcIixcbiAgICBiYWNrZHJvcDogXCJmaXhlZCBpbnNldC0wIHotMzAgYmctZ3JheS05MDAvNTAgZGFyazpiZy1ncmF5LTkwMC84MFwiLFxuICAgIGVkZ2U6IFwiYm90dG9tLTE2XCIsXG4gICAgcG9zaXRpb246IHtcbiAgICAgIHRvcDoge1xuICAgICAgICBvbjogXCJsZWZ0LTAgcmlnaHQtMCB0b3AtMCB3LWZ1bGwgdHJhbnNmb3JtLW5vbmVcIixcbiAgICAgICAgb2ZmOiBcImxlZnQtMCByaWdodC0wIHRvcC0wIHctZnVsbCAtdHJhbnNsYXRlLXktZnVsbFwiXG4gICAgICB9LFxuICAgICAgcmlnaHQ6IHtcbiAgICAgICAgb246IFwicmlnaHQtMCB0b3AtMCBoLXNjcmVlbiB3LTgwIHRyYW5zZm9ybS1ub25lXCIsXG4gICAgICAgIG9mZjogXCJyaWdodC0wIHRvcC0wIGgtc2NyZWVuIHctODAgdHJhbnNsYXRlLXgtZnVsbFwiXG4gICAgICB9LFxuICAgICAgYm90dG9tOiB7XG4gICAgICAgIG9uOiBcImJvdHRvbS0wIGxlZnQtMCByaWdodC0wIHctZnVsbCB0cmFuc2Zvcm0tbm9uZVwiLFxuICAgICAgICBvZmY6IFwiYm90dG9tLTAgbGVmdC0wIHJpZ2h0LTAgdy1mdWxsIHRyYW5zbGF0ZS15LWZ1bGxcIlxuICAgICAgfSxcbiAgICAgIGxlZnQ6IHtcbiAgICAgICAgb246IFwibGVmdC0wIHRvcC0wIGgtc2NyZWVuIHctODAgdHJhbnNmb3JtLW5vbmVcIixcbiAgICAgICAgb2ZmOiBcImxlZnQtMCB0b3AtMCBoLXNjcmVlbiB3LTgwIC10cmFuc2xhdGUteC1mdWxsXCJcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGhlYWRlcjoge1xuICAgIGlubmVyOiB7XG4gICAgICBjbG9zZUJ1dHRvbjogXCJhYnNvbHV0ZSBlbmQtMi41IHRvcC0yLjUgZmxleCBoLTggdy04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJnLXRyYW5zcGFyZW50IHRleHQtc20gdGV4dC1ncmF5LTQwMCBob3ZlcjpiZy1ncmF5LTIwMCBob3Zlcjp0ZXh0LWdyYXktOTAwIGRhcms6aG92ZXI6YmctZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgICBjbG9zZUljb246IFwiaC00IHctNFwiLFxuICAgICAgdGl0bGVJY29uOiBcIm1lLTIuNSBoLTQgdy00XCIsXG4gICAgICB0aXRsZVRleHQ6IFwibWItNCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgIH0sXG4gICAgY29sbGFwc2VkOiB7XG4gICAgICBvbjogXCJoaWRkZW5cIixcbiAgICAgIG9mZjogXCJibG9ja1wiXG4gICAgfVxuICB9LFxuICBpdGVtczoge1xuICAgIGJhc2U6IFwiXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IGRyYXdlclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGRyb3Bkb3duVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGFycm93SWNvbjogXCJtbC0yIGgtNCB3LTRcIixcbiAgY29udGVudDogXCJweS0xIGZvY3VzOm91dGxpbmUtbm9uZVwiLFxuICBmbG9hdGluZzoge1xuICAgIGFuaW1hdGlvbjogXCJ0cmFuc2l0aW9uLW9wYWNpdHlcIixcbiAgICBhcnJvdzoge1xuICAgICAgYmFzZTogXCJhYnNvbHV0ZSB6LTEwIGgtMiB3LTIgcm90YXRlLTQ1XCIsXG4gICAgICBzdHlsZToge1xuICAgICAgICBkYXJrOiBcImJnLWdyYXktOTAwIGRhcms6YmctZ3JheS03MDBcIixcbiAgICAgICAgbGlnaHQ6IFwiYmctd2hpdGVcIixcbiAgICAgICAgYXV0bzogXCJiZy13aGl0ZSBkYXJrOmJnLWdyYXktNzAwXCJcbiAgICAgIH0sXG4gICAgICBwbGFjZW1lbnQ6IFwiLTRweFwiXG4gICAgfSxcbiAgICBiYXNlOiBcInotMTAgdy1maXQgZGl2aWRlLXkgZGl2aWRlLWdyYXktMTAwIHJvdW5kZWQgc2hhZG93IGZvY3VzOm91dGxpbmUtbm9uZVwiLFxuICAgIGNvbnRlbnQ6IFwicHktMSB0ZXh0LXNtIHRleHQtZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMjAwXCIsXG4gICAgZGl2aWRlcjogXCJteS0xIGgtcHggYmctZ3JheS0xMDAgZGFyazpiZy1ncmF5LTYwMFwiLFxuICAgIGhlYWRlcjogXCJibG9jayBweC00IHB5LTIgdGV4dC1zbSB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTIwMFwiLFxuICAgIGhpZGRlbjogXCJpbnZpc2libGUgb3BhY2l0eS0wXCIsXG4gICAgaXRlbToge1xuICAgICAgY29udGFpbmVyOiBcIlwiLFxuICAgICAgYmFzZTogXCJmbGV4IHctZnVsbCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBweC00IHB5LTIgdGV4dC1zbSB0ZXh0LWdyYXktNzAwIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOnRleHQtZ3JheS0yMDAgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGUgZGFyazpmb2N1czpiZy1ncmF5LTYwMCBkYXJrOmZvY3VzOnRleHQtd2hpdGVcIixcbiAgICAgIGljb246IFwibXItMiBoLTQgdy00XCJcbiAgICB9LFxuICAgIHN0eWxlOiB7XG4gICAgICBkYXJrOiBcImJnLWdyYXktOTAwIHRleHQtd2hpdGUgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgICAgbGlnaHQ6IFwiYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBiZy13aGl0ZSB0ZXh0LWdyYXktOTAwXCIsXG4gICAgICBhdXRvOiBcImJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ub25lIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgICB9LFxuICAgIHRhcmdldDogXCJ3LWZpdFwiXG4gIH0sXG4gIGlubGluZVdyYXBwZXI6IFwiZmxleCBpdGVtcy1jZW50ZXJcIlxufSk7XG5cbmV4cG9ydCB7IGRyb3Bkb3duVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgZmlsZUlucHV0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZsZXhcIlxuICB9LFxuICBmaWVsZDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgdy1mdWxsXCIsXG4gICAgaW5wdXQ6IHtcbiAgICAgIGJhc2U6IFwiYmxvY2sgdy1mdWxsIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWxnIGJvcmRlciBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgICAgc2l6ZXM6IHtcbiAgICAgICAgc206IFwic206dGV4dC14c1wiLFxuICAgICAgICBtZDogXCJ0ZXh0LXNtXCIsXG4gICAgICAgIGxnOiBcInNtOnRleHQtYmFzZVwiXG4gICAgICB9LFxuICAgICAgY29sb3JzOiB7XG4gICAgICAgIGdyYXk6IFwiYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItY3lhbi01MDAgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6Zm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTUwMFwiLFxuICAgICAgICBpbmZvOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTUwIHRleHQtY3lhbi05MDAgcGxhY2Vob2xkZXItY3lhbi03MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItY3lhbi00MDAgZGFyazpiZy1jeWFuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICAgICAgZmFpbHVyZTogXCJib3JkZXItcmVkLTUwMCBiZy1yZWQtNTAgdGV4dC1yZWQtOTAwIHBsYWNlaG9sZGVyLXJlZC03MDAgZm9jdXM6Ym9yZGVyLXJlZC01MDAgZm9jdXM6cmluZy1yZWQtNTAwIGRhcms6Ym9yZGVyLXJlZC00MDAgZGFyazpiZy1yZWQtMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDAgZGFyazpmb2N1czpyaW5nLXJlZC01MDBcIixcbiAgICAgICAgd2FybmluZzogXCJib3JkZXIteWVsbG93LTUwMCBiZy15ZWxsb3ctNTAgdGV4dC15ZWxsb3ctOTAwIHBsYWNlaG9sZGVyLXllbGxvdy03MDAgZm9jdXM6Ym9yZGVyLXllbGxvdy01MDAgZm9jdXM6cmluZy15ZWxsb3ctNTAwIGRhcms6Ym9yZGVyLXllbGxvdy00MDAgZGFyazpiZy15ZWxsb3ctMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLXllbGxvdy01MDAgZGFyazpmb2N1czpyaW5nLXllbGxvdy01MDBcIixcbiAgICAgICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTUwIHRleHQtZ3JlZW4tOTAwIHBsYWNlaG9sZGVyLWdyZWVuLTcwMCBmb2N1czpib3JkZXItZ3JlZW4tNTAwIGZvY3VzOnJpbmctZ3JlZW4tNTAwIGRhcms6Ym9yZGVyLWdyZWVuLTQwMCBkYXJrOmJnLWdyZWVuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTUwMFwiXG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgZmlsZUlucHV0VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgZmxvYXRpbmdMYWJlbFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBpbnB1dDoge1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGZpbGxlZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC10LWxnIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgcHgtMi41IHBiLTIuNSBwdC01IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiLFxuICAgICAgICBtZDogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC10LWxnIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgcHgtMi41IHBiLTIuNSBwdC01IHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiXG4gICAgICB9LFxuICAgICAgb3V0bGluZWQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy10cmFuc3BhcmVudCBweC0yLjUgcGItMi41IHB0LTQgdGV4dC14cyB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1ibHVlLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiLFxuICAgICAgICBtZDogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBwYi0yLjUgcHQtNCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JheS0zMDAgYmctdHJhbnNwYXJlbnQgcHgtMCBweS0yLjUgdGV4dC14cyB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1ibHVlLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiLFxuICAgICAgICBtZDogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JheS0zMDAgYmctdHJhbnNwYXJlbnQgcHgtMCBweS0yLjUgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1ibHVlLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBzdWNjZXNzOiB7XG4gICAgICBmaWxsZWQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtdC1sZyBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1ncmVlbi02MDAgYmctZ3JheS01MCBweC0yLjUgcGItMi41IHB0LTUgdGV4dC14cyB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1ncmVlbi02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmVlbi01MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwXCIsXG4gICAgICAgIG1kOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLXQtbGcgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JlZW4tNjAwIGJnLWdyYXktNTAgcHgtMi41IHBiLTIuNSBwdC01IHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItZ3JlZW4tNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JlZW4tNTAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLWdyZWVuLTUwMFwiXG4gICAgICB9LFxuICAgICAgb3V0bGluZWQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmVlbi02MDAgYmctdHJhbnNwYXJlbnQgcHgtMi41IHBiLTIuNSBwdC00IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItZ3JlZW4tNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JlZW4tNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmVlbi02MDAgYmctdHJhbnNwYXJlbnQgcHgtMi41IHBiLTIuNSBwdC00IHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItZ3JlZW4tNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JlZW4tNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDBcIlxuICAgICAgfSxcbiAgICAgIHN0YW5kYXJkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1ncmVlbi02MDAgYmctdHJhbnNwYXJlbnQgcHgtMCBweS0yLjUgdGV4dC14cyB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1ncmVlbi02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmVlbi01MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLWdyZWVuLTUwMFwiLFxuICAgICAgICBtZDogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JlZW4tNjAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItZ3JlZW4tNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JlZW4tNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgZXJyb3I6IHtcbiAgICAgIGZpbGxlZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC10LWxnIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLXJlZC02MDAgYmctZ3JheS01MCBweC0yLjUgcGItMi41IHB0LTUgdGV4dC14cyB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1yZWQtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItcmVkLTUwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwXCIsXG4gICAgICAgIG1kOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLXQtbGcgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItcmVkLTYwMCBiZy1ncmF5LTUwIHB4LTIuNSBwYi0yLjUgcHQtNSB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLXJlZC02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1yZWQtNTAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDBcIlxuICAgICAgfSxcbiAgICAgIG91dGxpbmVkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItcmVkLTYwMCBiZy10cmFuc3BhcmVudCBweC0yLjUgcGItMi41IHB0LTQgdGV4dC14cyB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1yZWQtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItcmVkLTUwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMFwiLFxuICAgICAgICBtZDogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXJlZC02MDAgYmctdHJhbnNwYXJlbnQgcHgtMi41IHBiLTIuNSBwdC00IHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItcmVkLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLXJlZC01MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDBcIlxuICAgICAgfSxcbiAgICAgIHN0YW5kYXJkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1yZWQtNjAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItcmVkLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLXJlZC01MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLXJlZC02MDAgYmctdHJhbnNwYXJlbnQgcHgtMCBweS0yLjUgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1yZWQtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItcmVkLTUwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBsYWJlbDoge1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGZpbGxlZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSBsZWZ0LTIuNSB0b3AtNCB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgdGV4dC14cyB0ZXh0LWdyYXktNTAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IHBlZXItZm9jdXM6dGV4dC1ibHVlLTYwMCBkYXJrOnRleHQtZ3JheS00MDAgcGVlci1mb2N1czpkYXJrOnRleHQtYmx1ZS01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0yLjUgdG9wLTQgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IHRleHQtc20gdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnRleHQtYmx1ZS02MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCJcbiAgICAgIH0sXG4gICAgICBvdXRsaW5lZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSBsZWZ0LTEgdG9wLTIgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IGJnLXdoaXRlIHB4LTIgdGV4dC14cyB0ZXh0LWdyYXktNTAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRvcC0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjotdHJhbnNsYXRlLXktMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6dG9wLTIgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IHBlZXItZm9jdXM6cHgtMiBwZWVyLWZvY3VzOnRleHQtYmx1ZS02MDAgZGFyazpiZy1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS00MDAgcGVlci1mb2N1czpkYXJrOnRleHQtYmx1ZS01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0xIHRvcC0yIHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSBiZy13aGl0ZSBweC0yIHRleHQtc20gdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0b3AtMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246LXRyYW5zbGF0ZS15LTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOnRvcC0yIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnB4LTIgcGVlci1mb2N1czp0ZXh0LWJsdWUtNjAwIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSB0b3AtMyAtei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS02IHNjYWxlLTc1IHRleHQteHMgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6bGVmdC0wIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTYgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnRleHQtYmx1ZS02MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIHRvcC0zIC16LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTYgc2NhbGUtNzUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czpsZWZ0LTAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNiBwZWVyLWZvY3VzOnNjYWxlLTc1IHBlZXItZm9jdXM6dGV4dC1ibHVlLTYwMCBkYXJrOnRleHQtZ3JheS00MDAgcGVlci1mb2N1czpkYXJrOnRleHQtYmx1ZS01MDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgc3VjY2Vzczoge1xuICAgICAgZmlsbGVkOiB7XG4gICAgICAgIHNtOiBcImFic29sdXRlIGxlZnQtMi41IHRvcC00IHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1ncmVlbi01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0yLjUgdG9wLTQgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IHRleHQtc20gdGV4dC1ncmVlbi02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgZGFyazp0ZXh0LWdyZWVuLTUwMFwiXG4gICAgICB9LFxuICAgICAgb3V0bGluZWQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgbGVmdC0xIHRvcC0yIHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSBiZy13aGl0ZSBweC0yIHRleHQtc20gdGV4dC1ncmVlbi02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dG9wLTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOi10cmFuc2xhdGUteS0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czp0b3AtMiBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czpweC0yIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyZWVuLTUwMFwiLFxuICAgICAgICBtZDogXCJhYnNvbHV0ZSBsZWZ0LTEgdG9wLTIgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IGJnLXdoaXRlIHB4LTIgdGV4dC1zbSB0ZXh0LWdyZWVuLTYwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0b3AtMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246LXRyYW5zbGF0ZS15LTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOnRvcC0yIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnB4LTIgZGFyazpiZy1ncmF5LTkwMCBkYXJrOnRleHQtZ3JlZW4tNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSB0b3AtMyAtei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS02IHNjYWxlLTc1IHRleHQteHMgdGV4dC1ncmVlbi02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOmxlZnQtMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS02IHBlZXItZm9jdXM6c2NhbGUtNzUgZGFyazp0ZXh0LWdyZWVuLTUwMFwiLFxuICAgICAgICBtZDogXCJhYnNvbHV0ZSB0b3AtMyAtei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS02IHNjYWxlLTc1IHRleHQtc20gdGV4dC1ncmVlbi02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOmxlZnQtMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS02IHBlZXItZm9jdXM6c2NhbGUtNzUgZGFyazp0ZXh0LWdyZWVuLTUwMFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBlcnJvcjoge1xuICAgICAgZmlsbGVkOiB7XG4gICAgICAgIHNtOiBcImFic29sdXRlIGxlZnQtMi41IHRvcC00IHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSB0ZXh0LXhzIHRleHQtcmVkLTYwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBkYXJrOnRleHQtcmVkLTUwMFwiLFxuICAgICAgICBtZDogXCJhYnNvbHV0ZSBsZWZ0LTIuNSB0b3AtNCB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgdGV4dC14cyB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgZGFyazp0ZXh0LXJlZC01MDBcIlxuICAgICAgfSxcbiAgICAgIG91dGxpbmVkOiB7XG4gICAgICAgIHNtOiBcImFic29sdXRlIGxlZnQtMSB0b3AtMiB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgYmctd2hpdGUgcHgtMiB0ZXh0LXhzIHRleHQtcmVkLTYwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0b3AtMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246LXRyYW5zbGF0ZS15LTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOnRvcC0yIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnB4LTIgZGFyazpiZy1ncmF5LTkwMCBkYXJrOnRleHQtcmVkLTUwMFwiLFxuICAgICAgICBtZDogXCJhYnNvbHV0ZSBsZWZ0LTEgdG9wLTIgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IGJnLXdoaXRlIHB4LTIgdGV4dC14cyB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dG9wLTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOi10cmFuc2xhdGUteS0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czp0b3AtMiBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czpweC0yIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LXJlZC01MDBcIlxuICAgICAgfSxcbiAgICAgIHN0YW5kYXJkOiB7XG4gICAgICAgIHNtOiBcImFic29sdXRlIHRvcC0zIC16LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTYgc2NhbGUtNzUgdGV4dC14cyB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOmxlZnQtMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS02IHBlZXItZm9jdXM6c2NhbGUtNzUgZGFyazp0ZXh0LXJlZC01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgdG9wLTMgLXotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNiBzY2FsZS03NSB0ZXh0LXNtIHRleHQtcmVkLTYwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6bGVmdC0wIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTYgcGVlci1mb2N1czpzY2FsZS03NSBkYXJrOnRleHQtcmVkLTUwMFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBoZWxwZXJUZXh0OiB7XG4gICAgZGVmYXVsdDogXCJtdC0yIHRleHQteHMgdGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICBzdWNjZXNzOiBcIm10LTIgdGV4dC14cyB0ZXh0LWdyZWVuLTYwMCBkYXJrOnRleHQtZ3JlZW4tNDAwXCIsXG4gICAgZXJyb3I6IFwibXQtMiB0ZXh0LXhzIHRleHQtcmVkLTYwMCBkYXJrOnRleHQtcmVkLTQwMFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBmbG9hdGluZ0xhYmVsVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgZm9vdGVyVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInctZnVsbCByb3VuZGVkLWxnIGJnLXdoaXRlIHNoYWRvdyBkYXJrOmJnLWdyYXktODAwIG1kOmZsZXggbWQ6aXRlbXMtY2VudGVyIG1kOmp1c3RpZnktYmV0d2VlblwiLFxuICAgIGNvbnRhaW5lcjogXCJ3LWZ1bGwgcC02XCIsXG4gICAgYmdEYXJrOiBcImJnLWdyYXktODAwXCJcbiAgfSxcbiAgZ3JvdXBMaW5rOiB7XG4gICAgYmFzZTogXCJmbGV4IGZsZXgtd3JhcCB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LXdoaXRlXCIsXG4gICAgbGluazoge1xuICAgICAgYmFzZTogXCJtZS00IGxhc3Q6bXItMCBtZDptci02XCIsXG4gICAgICBocmVmOiBcImhvdmVyOnVuZGVybGluZVwiXG4gICAgfSxcbiAgICBjb2w6IFwiZmxleC1jb2wgc3BhY2UteS00XCJcbiAgfSxcbiAgaWNvbjoge1xuICAgIGJhc2U6IFwidGV4dC1ncmF5LTUwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICBzaXplOiBcImgtNSB3LTVcIlxuICB9LFxuICB0aXRsZToge1xuICAgIGJhc2U6IFwibWItNiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgfSxcbiAgZGl2aWRlcjoge1xuICAgIGJhc2U6IFwibXktNiB3LWZ1bGwgYm9yZGVyLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktNzAwIHNtOm14LWF1dG8gbGc6bXktOFwiXG4gIH0sXG4gIGNvcHlyaWdodDoge1xuICAgIGJhc2U6IFwidGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMCBzbTp0ZXh0LWNlbnRlclwiLFxuICAgIGhyZWY6IFwibWwtMSBob3Zlcjp1bmRlcmxpbmVcIixcbiAgICBzcGFuOiBcIm1sLTFcIlxuICB9LFxuICBicmFuZDoge1xuICAgIGJhc2U6IFwibWItNCBmbGV4IGl0ZW1zLWNlbnRlciBzbTptYi0wXCIsXG4gICAgaW1nOiBcIm1yLTMgaC04XCIsXG4gICAgc3BhbjogXCJzZWxmLWNlbnRlciB3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IGZvb3RlclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGhlbHBlclRleHRUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwibXQtMiB0ZXh0LXNtXCIsXG4gICAgY29sb3JzOiB7XG4gICAgICBncmF5OiBcInRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gICAgICBpbmZvOiBcInRleHQtY3lhbi03MDAgZGFyazp0ZXh0LWN5YW4tODAwXCIsXG4gICAgICBzdWNjZXNzOiBcInRleHQtZ3JlZW4tNjAwIGRhcms6dGV4dC1ncmVlbi01MDBcIixcbiAgICAgIGZhaWx1cmU6IFwidGV4dC1yZWQtNjAwIGRhcms6dGV4dC1yZWQtNTAwXCIsXG4gICAgICB3YXJuaW5nOiBcInRleHQteWVsbG93LTUwMCBkYXJrOnRleHQteWVsbG93LTYwMFwiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgaGVscGVyVGV4dFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGhyVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcIm15LTggaC1weCBib3JkZXItMCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwXCJcbiAgfSxcbiAgdHJpbW1lZDoge1xuICAgIGJhc2U6IFwibXgtYXV0byBteS00IGgtMSB3LTQ4IHJvdW5kZWQgYm9yZGVyLTAgYmctZ3JheS0xMDAgZGFyazpiZy1ncmF5LTcwMCBtZDpteS0xMFwiXG4gIH0sXG4gIGljb246IHtcbiAgICBiYXNlOiBcImlubGluZS1mbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIixcbiAgICBockxpbmU6IFwibXktOCBoLTEgdy02NCByb3VuZGVkIGJvcmRlci0wIGJnLWdyYXktMjAwIGRhcms6YmctZ3JheS03MDBcIixcbiAgICBpY29uOiB7XG4gICAgICBiYXNlOiBcImFic29sdXRlIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgYmctd2hpdGUgcHgtNCBkYXJrOmJnLWdyYXktOTAwXCIsXG4gICAgICBpY29uOiBcImgtNCB3LTQgdGV4dC1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0zMDBcIlxuICAgIH1cbiAgfSxcbiAgdGV4dDoge1xuICAgIGJhc2U6IFwiaW5saW5lLWZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiLFxuICAgIGhyTGluZTogXCJteS04IGgtcHggdy02NCBib3JkZXItMCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgdGV4dDogXCJhYnNvbHV0ZSBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIGJnLXdoaXRlIHB4LTMgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH0sXG4gIHNxdWFyZToge1xuICAgIGJhc2U6IFwibXgtYXV0byBteS04IGgtOCB3LTggcm91bmRlZCBib3JkZXItMCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwIG1kOm15LTEyXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IGhyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3Qga2JkVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBiZy1ncmF5LTEwMCBweC0yIHB5LTEuNSB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTgwMCBkYXJrOmJvcmRlci1ncmF5LTUwMCBkYXJrOmJnLWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTEwMFwiLFxuICAgIGljb246IFwiaW5saW5lLWJsb2NrXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IGtiZFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGxhYmVsVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInRleHQtc20gZm9udC1tZWRpdW1cIixcbiAgICBkaXNhYmxlZDogXCJvcGFjaXR5LTUwXCIsXG4gICAgY29sb3JzOiB7XG4gICAgICBkZWZhdWx0OiBcInRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIsXG4gICAgICBpbmZvOiBcInRleHQtY3lhbi01MDAgZGFyazp0ZXh0LWN5YW4tNjAwXCIsXG4gICAgICBmYWlsdXJlOiBcInRleHQtcmVkLTcwMCBkYXJrOnRleHQtcmVkLTUwMFwiLFxuICAgICAgd2FybmluZzogXCJ0ZXh0LXllbGxvdy01MDAgZGFyazp0ZXh0LXllbGxvdy02MDBcIixcbiAgICAgIHN1Y2Nlc3M6IFwidGV4dC1ncmVlbi03MDAgZGFyazp0ZXh0LWdyZWVuLTUwMFwiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgbGFiZWxUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBsaXN0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImxpc3QtaW5zaWRlIHNwYWNlLXktMSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgIG9yZGVyZWQ6IHtcbiAgICAgIG9mZjogXCJsaXN0LWRpc2NcIixcbiAgICAgIG9uOiBcImxpc3QtZGVjaW1hbFwiXG4gICAgfSxcbiAgICBob3Jpem9udGFsOiBcImZsZXggbGlzdC1ub25lIGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC00IHNwYWNlLXktMFwiLFxuICAgIHVuc3R5bGVkOiBcImxpc3Qtbm9uZVwiLFxuICAgIG5lc3RlZDogXCJtdC0yIHBzLTVcIlxuICB9LFxuICBpdGVtOiB7XG4gICAgd2l0aEljb246IHtcbiAgICAgIG9mZjogXCJcIixcbiAgICAgIG9uOiBcImZsZXggaXRlbXMtY2VudGVyXCJcbiAgICB9LFxuICAgIGljb246IFwibWUtMiBoLTMuNSB3LTMuNSBmbGV4LXNocmluay0wXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IGxpc3RUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBsaXN0R3JvdXBUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwibGlzdC1ub25lIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBiZy13aGl0ZSB0ZXh0LWxlZnQgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgfSxcbiAgaXRlbToge1xuICAgIGJhc2U6IFwiWyY+Kl06Zmlyc3Q6cm91bmRlZC10LWxnIFsmPipdOmxhc3Q6cm91bmRlZC1iLWxnIFsmPipdOmxhc3Q6Ym9yZGVyLWItMFwiLFxuICAgIGxpbms6IHtcbiAgICAgIGJhc2U6IFwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMCBweC00IHB5LTIgZGFyazpib3JkZXItZ3JheS02MDBcIixcbiAgICAgIGFjdGl2ZToge1xuICAgICAgICBvZmY6IFwiaG92ZXI6YmctZ3JheS0xMDAgaG92ZXI6dGV4dC1jeWFuLTcwMCBmb2N1czp0ZXh0LWN5YW4tNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1jeWFuLTcwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWdyYXktNTAwXCIsXG4gICAgICAgIG9uOiBcImJnLWN5YW4tNzAwIHRleHQtd2hpdGUgZGFyazpiZy1ncmF5LTgwMFwiXG4gICAgICB9LFxuICAgICAgZGlzYWJsZWQ6IHtcbiAgICAgICAgb2ZmOiBcIlwiLFxuICAgICAgICBvbjogXCJjdXJzb3Itbm90LWFsbG93ZWQgYmctZ3JheS0xMDAgdGV4dC1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMCBob3Zlcjp0ZXh0LWdyYXktOTAwIGZvY3VzOnRleHQtZ3JheS05MDBcIlxuICAgICAgfSxcbiAgICAgIGhyZWY6IHtcbiAgICAgICAgb2ZmOiBcIlwiLFxuICAgICAgICBvbjogXCJcIlxuICAgICAgfSxcbiAgICAgIGljb246IFwibXItMiBoLTQgdy00IGZpbGwtY3VycmVudFwiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgbGlzdEdyb3VwVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgbmF2YmFyVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImJnLXdoaXRlIHB4LTIgcHktMi41IGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6YmctZ3JheS04MDAgc206cHgtNFwiLFxuICAgIHJvdW5kZWQ6IHtcbiAgICAgIG9uOiBcInJvdW5kZWRcIixcbiAgICAgIG9mZjogXCJcIlxuICAgIH0sXG4gICAgYm9yZGVyZWQ6IHtcbiAgICAgIG9uOiBcImJvcmRlclwiLFxuICAgICAgb2ZmOiBcIlwiXG4gICAgfSxcbiAgICBpbm5lcjoge1xuICAgICAgYmFzZTogXCJteC1hdXRvIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIixcbiAgICAgIGZsdWlkOiB7XG4gICAgICAgIG9uOiBcIlwiLFxuICAgICAgICBvZmY6IFwiY29udGFpbmVyXCJcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGJyYW5kOiB7XG4gICAgYmFzZTogXCJmbGV4IGl0ZW1zLWNlbnRlclwiXG4gIH0sXG4gIGNvbGxhcHNlOiB7XG4gICAgYmFzZTogXCJ3LWZ1bGwgbWQ6YmxvY2sgbWQ6dy1hdXRvXCIsXG4gICAgbGlzdDogXCJtdC00IGZsZXggZmxleC1jb2wgbWQ6bXQtMCBtZDpmbGV4LXJvdyBtZDpzcGFjZS14LTggbWQ6dGV4dC1zbSBtZDpmb250LW1lZGl1bVwiLFxuICAgIGhpZGRlbjoge1xuICAgICAgb246IFwiaGlkZGVuXCIsXG4gICAgICBvZmY6IFwiXCJcbiAgICB9XG4gIH0sXG4gIGxpbms6IHtcbiAgICBiYXNlOiBcImJsb2NrIHB5LTIgcGwtMyBwci00IG1kOnAtMFwiLFxuICAgIGFjdGl2ZToge1xuICAgICAgb246IFwiYmctY3lhbi03MDAgdGV4dC13aGl0ZSBkYXJrOnRleHQtd2hpdGUgbWQ6YmctdHJhbnNwYXJlbnQgbWQ6dGV4dC1jeWFuLTcwMFwiLFxuICAgICAgb2ZmOiBcImJvcmRlci1iIGJvcmRlci1ncmF5LTEwMCB0ZXh0LWdyYXktNzAwIGhvdmVyOmJnLWdyYXktNTAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIG1kOmJvcmRlci0wIG1kOmhvdmVyOmJnLXRyYW5zcGFyZW50IG1kOmhvdmVyOnRleHQtY3lhbi03MDAgbWQ6ZGFyazpob3ZlcjpiZy10cmFuc3BhcmVudCBtZDpkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgIH0sXG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIG9uOiBcInRleHQtZ3JheS00MDAgaG92ZXI6Y3Vyc29yLW5vdC1hbGxvd2VkIGRhcms6dGV4dC1ncmF5LTYwMFwiLFxuICAgICAgb2ZmOiBcIlwiXG4gICAgfVxuICB9LFxuICB0b2dnbGU6IHtcbiAgICBiYXNlOiBcImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWxnIHAtMiB0ZXh0LXNtIHRleHQtZ3JheS01MDAgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktMjAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTYwMCBtZDpoaWRkZW5cIixcbiAgICBpY29uOiBcImgtNiB3LTYgc2hyaW5rLTBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgbmF2YmFyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5pbXBvcnQgeyBkcm9wZG93blRoZW1lIH0gZnJvbSAnLi4vRHJvcGRvd24vdGhlbWUubWpzJztcbmltcG9ydCB7IG5hdmJhclRoZW1lIH0gZnJvbSAnLi4vTmF2YmFyL3RoZW1lLm1qcyc7XG5cbmNvbnN0IG1lZ2FNZW51VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIC4uLm5hdmJhclRoZW1lLFxuICBkcm9wZG93bjoge1xuICAgIGJhc2U6IFwiXCIsXG4gICAgdG9nZ2xlOiB7XG4gICAgICAuLi5kcm9wZG93blRoZW1lLFxuICAgICAgZmxvYXRpbmc6IHtcbiAgICAgICAgLi4uZHJvcGRvd25UaGVtZS5mbG9hdGluZyxcbiAgICAgICAgYmFzZTogdHdNZXJnZShkcm9wZG93blRoZW1lLmZsb2F0aW5nLmJhc2UsIFwibXQtMiBibG9ja1wiKSxcbiAgICAgICAgY29udGVudDogdHdNZXJnZShkcm9wZG93blRoZW1lLmZsb2F0aW5nLmNvbnRlbnQsIFwidGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIiksXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgLi4uZHJvcGRvd25UaGVtZS5mbG9hdGluZy5zdHlsZSxcbiAgICAgICAgICBhdXRvOiB0d01lcmdlKGRyb3Bkb3duVGhlbWUuZmxvYXRpbmcuc3R5bGUuYXV0bywgXCJ0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaW5saW5lV3JhcHBlcjogdHdNZXJnZShkcm9wZG93blRoZW1lLmlubGluZVdyYXBwZXIsIFwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiKVxuICAgIH1cbiAgfSxcbiAgZHJvcGRvd25Ub2dnbGU6IHtcbiAgICBiYXNlOiB0d01lcmdlKG5hdmJhclRoZW1lLmxpbmsuYmFzZSwgbmF2YmFyVGhlbWUubGluay5hY3RpdmUub2ZmLCBcImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIilcbiAgfVxufSk7XG5cbmV4cG9ydCB7IG1lZ2FNZW51VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgbW9kYWxUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZml4ZWQgaW5zZXQteC0wIHRvcC0wIHotNTAgaC1zY3JlZW4gb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuIG1kOmluc2V0LTAgbWQ6aC1mdWxsXCIsXG4gICAgc2hvdzoge1xuICAgICAgb246IFwiZmxleCBiZy1ncmF5LTkwMCBiZy1vcGFjaXR5LTUwIGRhcms6Ymctb3BhY2l0eS04MFwiLFxuICAgICAgb2ZmOiBcImhpZGRlblwiXG4gICAgfSxcbiAgICBzaXplczoge1xuICAgICAgc206IFwibWF4LXctc21cIixcbiAgICAgIG1kOiBcIm1heC13LW1kXCIsXG4gICAgICBsZzogXCJtYXgtdy1sZ1wiLFxuICAgICAgeGw6IFwibWF4LXcteGxcIixcbiAgICAgIFwiMnhsXCI6IFwibWF4LXctMnhsXCIsXG4gICAgICBcIjN4bFwiOiBcIm1heC13LTN4bFwiLFxuICAgICAgXCI0eGxcIjogXCJtYXgtdy00eGxcIixcbiAgICAgIFwiNXhsXCI6IFwibWF4LXctNXhsXCIsXG4gICAgICBcIjZ4bFwiOiBcIm1heC13LTZ4bFwiLFxuICAgICAgXCI3eGxcIjogXCJtYXgtdy03eGxcIlxuICAgIH0sXG4gICAgcG9zaXRpb25zOiB7XG4gICAgICBcInRvcC1sZWZ0XCI6IFwiaXRlbXMtc3RhcnQganVzdGlmeS1zdGFydFwiLFxuICAgICAgXCJ0b3AtY2VudGVyXCI6IFwiaXRlbXMtc3RhcnQganVzdGlmeS1jZW50ZXJcIixcbiAgICAgIFwidG9wLXJpZ2h0XCI6IFwiaXRlbXMtc3RhcnQganVzdGlmeS1lbmRcIixcbiAgICAgIFwiY2VudGVyLWxlZnRcIjogXCJpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydFwiLFxuICAgICAgY2VudGVyOiBcIml0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiLFxuICAgICAgXCJjZW50ZXItcmlnaHRcIjogXCJpdGVtcy1jZW50ZXIganVzdGlmeS1lbmRcIixcbiAgICAgIFwiYm90dG9tLXJpZ2h0XCI6IFwiaXRlbXMtZW5kIGp1c3RpZnktZW5kXCIsXG4gICAgICBcImJvdHRvbS1jZW50ZXJcIjogXCJpdGVtcy1lbmQganVzdGlmeS1jZW50ZXJcIixcbiAgICAgIFwiYm90dG9tLWxlZnRcIjogXCJpdGVtcy1lbmQganVzdGlmeS1zdGFydFwiXG4gICAgfVxuICB9LFxuICBjb250ZW50OiB7XG4gICAgYmFzZTogXCJyZWxhdGl2ZSBoLWZ1bGwgdy1mdWxsIHAtNCBtZDpoLWF1dG9cIixcbiAgICBpbm5lcjogXCJyZWxhdGl2ZSBmbGV4IG1heC1oLVs5MGR2aF0gZmxleC1jb2wgcm91bmRlZC1sZyBiZy13aGl0ZSBzaGFkb3cgZGFyazpiZy1ncmF5LTcwMFwiXG4gIH0sXG4gIGJvZHk6IHtcbiAgICBiYXNlOiBcImZsZXgtMSBvdmVyZmxvdy1hdXRvIHAtNlwiLFxuICAgIHBvcHVwOiBcInB0LTBcIlxuICB9LFxuICBoZWFkZXI6IHtcbiAgICBiYXNlOiBcImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIHJvdW5kZWQtdCBib3JkZXItYiBwLTUgZGFyazpib3JkZXItZ3JheS02MDBcIixcbiAgICBwb3B1cDogXCJib3JkZXItYi0wIHAtMlwiLFxuICAgIHRpdGxlOiBcInRleHQteGwgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIixcbiAgICBjbG9zZToge1xuICAgICAgYmFzZTogXCJtbC1hdXRvIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWxnIGJnLXRyYW5zcGFyZW50IHAtMS41IHRleHQtc20gdGV4dC1ncmF5LTQwMCBob3ZlcjpiZy1ncmF5LTIwMCBob3Zlcjp0ZXh0LWdyYXktOTAwIGRhcms6aG92ZXI6YmctZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgICBpY29uOiBcImgtNSB3LTVcIlxuICAgIH1cbiAgfSxcbiAgZm9vdGVyOiB7XG4gICAgYmFzZTogXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTIgcm91bmRlZC1iIGJvcmRlci1ncmF5LTIwMCBwLTYgZGFyazpib3JkZXItZ3JheS02MDBcIixcbiAgICBwb3B1cDogXCJib3JkZXItdFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBtb2RhbFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IHBhZ2luYXRpb25UaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJcIixcbiAgbGF5b3V0OiB7XG4gICAgdGFibGU6IHtcbiAgICAgIGJhc2U6IFwidGV4dC1zbSB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgICAgc3BhbjogXCJmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgICB9XG4gIH0sXG4gIHBhZ2VzOiB7XG4gICAgYmFzZTogXCJ4czptdC0wIG10LTIgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIC1zcGFjZS14LXB4XCIsXG4gICAgc2hvd0ljb246IFwiaW5saW5lLWZsZXhcIixcbiAgICBwcmV2aW91czoge1xuICAgICAgYmFzZTogXCJtbC0wIHJvdW5kZWQtbC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlIHB4LTMgcHktMiBsZWFkaW5nLXRpZ2h0IHRleHQtZ3JheS01MDAgZW5hYmxlZDpob3ZlcjpiZy1ncmF5LTEwMCBlbmFibGVkOmhvdmVyOnRleHQtZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDAgZW5hYmxlZDpkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGVuYWJsZWQ6ZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgICBpY29uOiBcImgtNSB3LTVcIlxuICAgIH0sXG4gICAgbmV4dDoge1xuICAgICAgYmFzZTogXCJyb3VuZGVkLXItbGcgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSBweC0zIHB5LTIgbGVhZGluZy10aWdodCB0ZXh0LWdyYXktNTAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JheS0xMDAgZW5hYmxlZDpob3Zlcjp0ZXh0LWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktNDAwIGVuYWJsZWQ6ZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBlbmFibGVkOmRhcms6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgaWNvbjogXCJoLTUgdy01XCJcbiAgICB9LFxuICAgIHNlbGVjdG9yOiB7XG4gICAgICBiYXNlOiBcInctMTIgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSBweS0yIGxlYWRpbmctdGlnaHQgdGV4dC1ncmF5LTUwMCBlbmFibGVkOmhvdmVyOmJnLWdyYXktMTAwIGVuYWJsZWQ6aG92ZXI6dGV4dC1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktODAwIGRhcms6dGV4dC1ncmF5LTQwMCBlbmFibGVkOmRhcms6aG92ZXI6YmctZ3JheS03MDAgZW5hYmxlZDpkYXJrOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICAgIGFjdGl2ZTogXCJiZy1jeWFuLTUwIHRleHQtY3lhbi02MDAgaG92ZXI6YmctY3lhbi0xMDAgaG92ZXI6dGV4dC1jeWFuLTcwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZVwiLFxuICAgICAgZGlzYWJsZWQ6IFwiY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTBcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IHBhZ2luYXRpb25UaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiY29uc3QgcG9wb3ZlclRoZW1lID0ge1xuICBiYXNlOiBcImFic29sdXRlIHotMjAgaW5saW5lLWJsb2NrIHctbWF4IG1heC13LVsxMDB2d10gYmctd2hpdGUgb3V0bGluZS1ub25lIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctc20gZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTgwMFwiLFxuICBjb250ZW50OiBcInotMTAgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtWzdweF1cIixcbiAgYXJyb3c6IHtcbiAgICBiYXNlOiBcImFic29sdXRlIGgtMiB3LTIgei0wIHJvdGF0ZS00NSBtaXgtYmxlbmQtbGlnaHRlbiBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS04MDAgZGFyazptaXgtYmxlbmQtY29sb3JcIixcbiAgICBwbGFjZW1lbnQ6IFwiLTRweFwiXG4gIH1cbn07XG5cbmV4cG9ydCB7IHBvcG92ZXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBwcm9ncmVzc1RoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcInctZnVsbCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsIGJnLWdyYXktMjAwIGRhcms6YmctZ3JheS03MDBcIixcbiAgbGFiZWw6IFwibWItMSBmbGV4IGp1c3RpZnktYmV0d2VlbiBmb250LW1lZGl1bSBkYXJrOnRleHQtd2hpdGVcIixcbiAgYmFyOiBcInNwYWNlLXgtMiByb3VuZGVkLWZ1bGwgdGV4dC1jZW50ZXIgZm9udC1tZWRpdW0gbGVhZGluZy1ub25lIHRleHQtY3lhbi0zMDAgZGFyazp0ZXh0LWN5YW4tMTAwXCIsXG4gIGNvbG9yOiB7XG4gICAgZGFyazogXCJiZy1ncmF5LTYwMCBkYXJrOmJnLWdyYXktMzAwXCIsXG4gICAgYmx1ZTogXCJiZy1ibHVlLTYwMFwiLFxuICAgIHJlZDogXCJiZy1yZWQtNjAwIGRhcms6YmctcmVkLTUwMFwiLFxuICAgIGdyZWVuOiBcImJnLWdyZWVuLTYwMCBkYXJrOmJnLWdyZWVuLTUwMFwiLFxuICAgIHllbGxvdzogXCJiZy15ZWxsb3ctNDAwXCIsXG4gICAgaW5kaWdvOiBcImJnLWluZGlnby02MDAgZGFyazpiZy1pbmRpZ28tNTAwXCIsXG4gICAgcHVycGxlOiBcImJnLXB1cnBsZS02MDAgZGFyazpiZy1wdXJwbGUtNTAwXCIsXG4gICAgY3lhbjogXCJiZy1jeWFuLTYwMFwiLFxuICAgIGdyYXk6IFwiYmctZ3JheS01MDBcIixcbiAgICBsaW1lOiBcImJnLWxpbWUtNjAwXCIsXG4gICAgcGluazogXCJiZy1waW5rLTUwMFwiLFxuICAgIHRlYWw6IFwiYmctdGVhbC02MDBcIlxuICB9LFxuICBzaXplOiB7XG4gICAgc206IFwiaC0xLjVcIixcbiAgICBtZDogXCJoLTIuNVwiLFxuICAgIGxnOiBcImgtNFwiLFxuICAgIHhsOiBcImgtNlwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBwcm9ncmVzc1RoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IHJhZGlvVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImgtNCB3LTQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWN5YW4tNjAwIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWN5YW4tNTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDAgZGFyazpmb2N1czpiZy1jeWFuLTYwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi02MDBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgcmFkaW9UaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCByYW5nZVNsaWRlclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJmbGV4XCJcbiAgfSxcbiAgZmllbGQ6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlIHctZnVsbFwiLFxuICAgIGlucHV0OiB7XG4gICAgICBiYXNlOiBcInctZnVsbCBjdXJzb3ItcG9pbnRlciBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC1sZyBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgICBzaXplczoge1xuICAgICAgICBzbTogXCJoLTFcIixcbiAgICAgICAgbWQ6IFwiaC0yXCIsXG4gICAgICAgIGxnOiBcImgtM1wiXG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgcmFuZ2VTbGlkZXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCByYXRpbmdUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXJcIlxuICB9LFxuICBzdGFyOiB7XG4gICAgZW1wdHk6IFwidGV4dC1ncmF5LTMwMCBkYXJrOnRleHQtZ3JheS01MDBcIixcbiAgICBmaWxsZWQ6IFwidGV4dC15ZWxsb3ctNDAwXCIsXG4gICAgc2l6ZXM6IHtcbiAgICAgIHNtOiBcImgtNSB3LTVcIixcbiAgICAgIG1kOiBcImgtNyB3LTdcIixcbiAgICAgIGxnOiBcImgtMTAgdy0xMFwiXG4gICAgfVxuICB9XG59KTtcbmNvbnN0IHJhdGluZ0FkdmFuY2VkVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgbGFiZWw6IFwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWN5YW4tNjAwIGRhcms6dGV4dC1jeWFuLTUwMFwiLFxuICBwcm9ncmVzczoge1xuICAgIGJhc2U6IFwibXgtNCBoLTUgdy0yLzQgcm91bmRlZCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgZmlsbDogXCJoLTUgcm91bmRlZCBiZy15ZWxsb3ctNDAwXCIsXG4gICAgbGFiZWw6IFwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWN5YW4tNjAwIGRhcms6dGV4dC1jeWFuLTUwMFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyByYXRpbmdBZHZhbmNlZFRoZW1lLCByYXRpbmdUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBzZWxlY3RUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJmbGV4XCIsXG4gIGFkZG9uOiBcImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWwtbWQgYm9yZGVyIGJvcmRlci1yLTAgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktMjAwIHB4LTMgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gIGZpZWxkOiB7XG4gICAgYmFzZTogXCJyZWxhdGl2ZSB3LWZ1bGxcIixcbiAgICBpY29uOiB7XG4gICAgICBiYXNlOiBcInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCBmbGV4IGl0ZW1zLWNlbnRlciBwbC0zXCIsXG4gICAgICBzdmc6IFwiaC01IHctNSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiXG4gICAgfSxcbiAgICBzZWxlY3Q6IHtcbiAgICAgIGJhc2U6IFwiYmxvY2sgdy1mdWxsIGJvcmRlciBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgICAgd2l0aEljb246IHtcbiAgICAgICAgb246IFwicGwtMTBcIixcbiAgICAgICAgb2ZmOiBcIlwiXG4gICAgICB9LFxuICAgICAgd2l0aEFkZG9uOiB7XG4gICAgICAgIG9uOiBcInJvdW5kZWQtci1sZ1wiLFxuICAgICAgICBvZmY6IFwicm91bmRlZC1sZ1wiXG4gICAgICB9LFxuICAgICAgd2l0aFNoYWRvdzoge1xuICAgICAgICBvbjogXCJzaGFkb3ctc20gZGFyazpzaGFkb3ctc20tbGlnaHRcIixcbiAgICAgICAgb2ZmOiBcIlwiXG4gICAgICB9LFxuICAgICAgc2l6ZXM6IHtcbiAgICAgICAgc206IFwicC0yIHNtOnRleHQteHNcIixcbiAgICAgICAgbWQ6IFwicC0yLjUgdGV4dC1zbVwiLFxuICAgICAgICBsZzogXCJwLTQgc206dGV4dC1iYXNlXCJcbiAgICAgIH0sXG4gICAgICBjb2xvcnM6IHtcbiAgICAgICAgZ3JheTogXCJib3JkZXItZ3JheS0zMDAgYmctZ3JheS01MCB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1jeWFuLTUwMCBmb2N1czpyaW5nLWN5YW4tNTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazpmb2N1czpib3JkZXItY3lhbi01MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNTAwXCIsXG4gICAgICAgIGluZm86IFwiYm9yZGVyLWN5YW4tNTAwIGJnLWN5YW4tNTAgdGV4dC1jeWFuLTkwMCBwbGFjZWhvbGRlci1jeWFuLTcwMCBmb2N1czpib3JkZXItY3lhbi01MDAgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1jeWFuLTQwMCBkYXJrOmJnLWN5YW4tMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTUwMFwiLFxuICAgICAgICBmYWlsdXJlOiBcImJvcmRlci1yZWQtNTAwIGJnLXJlZC01MCB0ZXh0LXJlZC05MDAgcGxhY2Vob2xkZXItcmVkLTcwMCBmb2N1czpib3JkZXItcmVkLTUwMCBmb2N1czpyaW5nLXJlZC01MDAgZGFyazpib3JkZXItcmVkLTQwMCBkYXJrOmJnLXJlZC0xMDAgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTUwMFwiLFxuICAgICAgICB3YXJuaW5nOiBcImJvcmRlci15ZWxsb3ctNTAwIGJnLXllbGxvdy01MCB0ZXh0LXllbGxvdy05MDAgcGxhY2Vob2xkZXIteWVsbG93LTcwMCBmb2N1czpib3JkZXIteWVsbG93LTUwMCBmb2N1czpyaW5nLXllbGxvdy01MDAgZGFyazpib3JkZXIteWVsbG93LTQwMCBkYXJrOmJnLXllbGxvdy0xMDAgZGFyazpmb2N1czpib3JkZXIteWVsbG93LTUwMCBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTUwMFwiLFxuICAgICAgICBzdWNjZXNzOiBcImJvcmRlci1ncmVlbi01MDAgYmctZ3JlZW4tNTAgdGV4dC1ncmVlbi05MDAgcGxhY2Vob2xkZXItZ3JlZW4tNzAwIGZvY3VzOmJvcmRlci1ncmVlbi01MDAgZm9jdXM6cmluZy1ncmVlbi01MDAgZGFyazpib3JkZXItZ3JlZW4tNDAwIGRhcms6YmctZ3JlZW4tMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tNTAwXCJcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBzZWxlY3RUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBzaWRlYmFyVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImgtZnVsbFwiLFxuICAgIGNvbGxhcHNlZDoge1xuICAgICAgb246IFwidy0xNlwiLFxuICAgICAgb2ZmOiBcInctNjRcIlxuICAgIH0sXG4gICAgaW5uZXI6IFwiaC1mdWxsIG92ZXJmbG93LXktYXV0byBvdmVyZmxvdy14LWhpZGRlbiByb3VuZGVkIGJnLWdyYXktNTAgcHgtMyBweS00IGRhcms6YmctZ3JheS04MDBcIlxuICB9LFxuICBjb2xsYXBzZToge1xuICAgIGJ1dHRvbjogXCJncm91cCBmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBwLTIgdGV4dC1iYXNlIGZvbnQtbm9ybWFsIHRleHQtZ3JheS05MDAgdHJhbnNpdGlvbiBkdXJhdGlvbi03NSBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTcwMFwiLFxuICAgIGljb246IHtcbiAgICAgIGJhc2U6IFwiaC02IHctNiB0ZXh0LWdyYXktNTAwIHRyYW5zaXRpb24gZHVyYXRpb24tNzUgZ3JvdXAtaG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpncm91cC1ob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgICBvcGVuOiB7XG4gICAgICAgIG9mZjogXCJcIixcbiAgICAgICAgb246IFwidGV4dC1ncmF5LTkwMFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgYmFzZTogXCJtbC0zIGZsZXgtMSB3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LWxlZnRcIixcbiAgICAgIGljb246IHtcbiAgICAgICAgYmFzZTogXCJoLTYgdy02IHRyYW5zaXRpb24gZGVsYXktMCBlYXNlLWluLW91dFwiLFxuICAgICAgICBvcGVuOiB7XG4gICAgICAgICAgb246IFwicm90YXRlLTE4MFwiLFxuICAgICAgICAgIG9mZjogXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsaXN0OiBcInNwYWNlLXktMiBweS0yXCJcbiAgfSxcbiAgY3RhOiB7XG4gICAgYmFzZTogXCJtdC02IHJvdW5kZWQtbGcgYmctZ3JheS0xMDAgcC00IGRhcms6YmctZ3JheS03MDBcIixcbiAgICBjb2xvcjoge1xuICAgICAgYmx1ZTogXCJiZy1jeWFuLTUwIGRhcms6YmctY3lhbi05MDBcIixcbiAgICAgIGRhcms6IFwiYmctZGFyay01MCBkYXJrOmJnLWRhcmstOTAwXCIsXG4gICAgICBmYWlsdXJlOiBcImJnLXJlZC01MCBkYXJrOmJnLXJlZC05MDBcIixcbiAgICAgIGdyYXk6IFwiYmctYWx0ZXJuYXRpdmUtNTAgZGFyazpiZy1hbHRlcm5hdGl2ZS05MDBcIixcbiAgICAgIGdyZWVuOiBcImJnLWdyZWVuLTUwIGRhcms6YmctZ3JlZW4tOTAwXCIsXG4gICAgICBsaWdodDogXCJiZy1saWdodC01MCBkYXJrOmJnLWxpZ2h0LTkwMFwiLFxuICAgICAgcmVkOiBcImJnLXJlZC01MCBkYXJrOmJnLXJlZC05MDBcIixcbiAgICAgIHB1cnBsZTogXCJiZy1wdXJwbGUtNTAgZGFyazpiZy1wdXJwbGUtOTAwXCIsXG4gICAgICBzdWNjZXNzOiBcImJnLWdyZWVuLTUwIGRhcms6YmctZ3JlZW4tOTAwXCIsXG4gICAgICB5ZWxsb3c6IFwiYmcteWVsbG93LTUwIGRhcms6YmcteWVsbG93LTkwMFwiLFxuICAgICAgd2FybmluZzogXCJiZy15ZWxsb3ctNTAgZGFyazpiZy15ZWxsb3ctOTAwXCJcbiAgICB9XG4gIH0sXG4gIGl0ZW06IHtcbiAgICBiYXNlOiBcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgcC0yIHRleHQtYmFzZSBmb250LW5vcm1hbCB0ZXh0LWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNzAwXCIsXG4gICAgYWN0aXZlOiBcImJnLWdyYXktMTAwIGRhcms6YmctZ3JheS03MDBcIixcbiAgICBjb2xsYXBzZWQ6IHtcbiAgICAgIGluc2lkZUNvbGxhcHNlOiBcImdyb3VwIHctZnVsbCBwbC04IHRyYW5zaXRpb24gZHVyYXRpb24tNzVcIixcbiAgICAgIG5vSWNvbjogXCJmb250LWJvbGRcIlxuICAgIH0sXG4gICAgY29udGVudDoge1xuICAgICAgYmFzZTogXCJmbGV4LTEgd2hpdGVzcGFjZS1ub3dyYXAgcHgtM1wiXG4gICAgfSxcbiAgICBpY29uOiB7XG4gICAgICBiYXNlOiBcImgtNiB3LTYgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXktNTAwIHRyYW5zaXRpb24gZHVyYXRpb24tNzUgZ3JvdXAtaG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpncm91cC1ob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgICBhY3RpdmU6IFwidGV4dC1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0xMDBcIlxuICAgIH0sXG4gICAgbGFiZWw6IFwiXCIsXG4gICAgbGlzdEl0ZW06IFwiXCJcbiAgfSxcbiAgaXRlbXM6IHtcbiAgICBiYXNlOiBcIlwiXG4gIH0sXG4gIGl0ZW1Hcm91cDoge1xuICAgIGJhc2U6IFwibXQtNCBzcGFjZS15LTIgYm9yZGVyLXQgYm9yZGVyLWdyYXktMjAwIHB0LTQgZmlyc3Q6bXQtMCBmaXJzdDpib3JkZXItdC0wIGZpcnN0OnB0LTAgZGFyazpib3JkZXItZ3JheS03MDBcIlxuICB9LFxuICBsb2dvOiB7XG4gICAgYmFzZTogXCJtYi01IGZsZXggaXRlbXMtY2VudGVyIHBsLTIuNVwiLFxuICAgIGNvbGxhcHNlZDoge1xuICAgICAgb246IFwiaGlkZGVuXCIsXG4gICAgICBvZmY6IFwic2VsZi1jZW50ZXIgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC14bCBmb250LXNlbWlib2xkIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgfSxcbiAgICBpbWc6IFwibXItMyBoLTYgc206aC03XCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IHNpZGViYXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBzcGlubmVyVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiaW5saW5lIGFuaW1hdGUtc3BpbiB0ZXh0LWdyYXktMjAwXCIsXG4gIGNvbG9yOiB7XG4gICAgZmFpbHVyZTogXCJmaWxsLXJlZC02MDBcIixcbiAgICBncmF5OiBcImZpbGwtZ3JheS02MDBcIixcbiAgICBpbmZvOiBcImZpbGwtY3lhbi02MDBcIixcbiAgICBwaW5rOiBcImZpbGwtcGluay02MDBcIixcbiAgICBwdXJwbGU6IFwiZmlsbC1wdXJwbGUtNjAwXCIsXG4gICAgc3VjY2VzczogXCJmaWxsLWdyZWVuLTUwMFwiLFxuICAgIHdhcm5pbmc6IFwiZmlsbC15ZWxsb3ctNDAwXCJcbiAgfSxcbiAgbGlnaHQ6IHtcbiAgICBvZmY6IHtcbiAgICAgIGJhc2U6IFwiZGFyazp0ZXh0LWdyYXktNjAwXCIsXG4gICAgICBjb2xvcjoge1xuICAgICAgICBmYWlsdXJlOiBcIlwiLFxuICAgICAgICBncmF5OiBcImRhcms6ZmlsbC1ncmF5LTMwMFwiLFxuICAgICAgICBpbmZvOiBcIlwiLFxuICAgICAgICBwaW5rOiBcIlwiLFxuICAgICAgICBwdXJwbGU6IFwiXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiXCIsXG4gICAgICAgIHdhcm5pbmc6IFwiXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uOiB7XG4gICAgICBiYXNlOiBcIlwiLFxuICAgICAgY29sb3I6IHtcbiAgICAgICAgZmFpbHVyZTogXCJcIixcbiAgICAgICAgZ3JheTogXCJcIixcbiAgICAgICAgaW5mbzogXCJcIixcbiAgICAgICAgcGluazogXCJcIixcbiAgICAgICAgcHVycGxlOiBcIlwiLFxuICAgICAgICBzdWNjZXNzOiBcIlwiLFxuICAgICAgICB3YXJuaW5nOiBcIlwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBzaXplOiB7XG4gICAgeHM6IFwiaC0zIHctM1wiLFxuICAgIHNtOiBcImgtNCB3LTRcIixcbiAgICBtZDogXCJoLTYgdy02XCIsXG4gICAgbGc6IFwiaC04IHctOFwiLFxuICAgIHhsOiBcImgtMTAgdy0xMFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBzcGlubmVyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdGFibGVUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwidy1mdWxsIHRleHQtbGVmdCB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gICAgc2hhZG93OiBcImFic29sdXRlIGxlZnQtMCB0b3AtMCAtei0xMCBoLWZ1bGwgdy1mdWxsIHJvdW5kZWQtbGcgYmctd2hpdGUgZHJvcC1zaGFkb3ctbWQgZGFyazpiZy1ibGFja1wiLFxuICAgIHdyYXBwZXI6IFwicmVsYXRpdmVcIlxuICB9LFxuICBib2R5OiB7XG4gICAgYmFzZTogXCJncm91cC9ib2R5XCIsXG4gICAgY2VsbDoge1xuICAgICAgYmFzZTogXCJweC02IHB5LTQgZ3JvdXAtZmlyc3QvYm9keTpncm91cC1maXJzdC9yb3c6Zmlyc3Q6cm91bmRlZC10bC1sZyBncm91cC1maXJzdC9ib2R5Omdyb3VwLWZpcnN0L3JvdzpsYXN0OnJvdW5kZWQtdHItbGcgZ3JvdXAtbGFzdC9ib2R5Omdyb3VwLWxhc3Qvcm93OmZpcnN0OnJvdW5kZWQtYmwtbGcgZ3JvdXAtbGFzdC9ib2R5Omdyb3VwLWxhc3Qvcm93Omxhc3Q6cm91bmRlZC1ici1sZ1wiXG4gICAgfVxuICB9LFxuICBoZWFkOiB7XG4gICAgYmFzZTogXCJncm91cC9oZWFkIHRleHQteHMgdXBwZXJjYXNlIHRleHQtZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gICAgY2VsbDoge1xuICAgICAgYmFzZTogXCJiZy1ncmF5LTUwIHB4LTYgcHktMyBncm91cC1maXJzdC9oZWFkOmZpcnN0OnJvdW5kZWQtdGwtbGcgZ3JvdXAtZmlyc3QvaGVhZDpsYXN0OnJvdW5kZWQtdHItbGcgZGFyazpiZy1ncmF5LTcwMFwiXG4gICAgfVxuICB9LFxuICByb3c6IHtcbiAgICBiYXNlOiBcImdyb3VwL3Jvd1wiLFxuICAgIGhvdmVyZWQ6IFwiaG92ZXI6YmctZ3JheS01MCBkYXJrOmhvdmVyOmJnLWdyYXktNjAwXCIsXG4gICAgc3RyaXBlZDogXCJvZGQ6Ymctd2hpdGUgZXZlbjpiZy1ncmF5LTUwIG9kZDpkYXJrOmJnLWdyYXktODAwIGV2ZW46ZGFyazpiZy1ncmF5LTcwMFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyB0YWJsZVRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IHRhYlRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImZsZXggZmxleC1jb2wgZ2FwLTJcIixcbiAgdGFibGlzdDoge1xuICAgIGJhc2U6IFwiZmxleCB0ZXh0LWNlbnRlclwiLFxuICAgIHZhcmlhbnQ6IHtcbiAgICAgIGRlZmF1bHQ6IFwiZmxleC13cmFwIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiLFxuICAgICAgdW5kZXJsaW5lOiBcIi1tYi1weCBmbGV4LXdyYXAgYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCIsXG4gICAgICBwaWxsczogXCJmbGV4LXdyYXAgc3BhY2UteC0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICAgIGZ1bGxXaWR0aDogXCJncmlkIHctZnVsbCBncmlkLWZsb3ctY29sIGRpdmlkZS14IGRpdmlkZS1ncmF5LTIwMCByb3VuZGVkLW5vbmUgdGV4dC1zbSBmb250LW1lZGl1bSBzaGFkb3cgZGFyazpkaXZpZGUtZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktNDAwXCJcbiAgICB9LFxuICAgIHRhYml0ZW06IHtcbiAgICAgIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC10LWxnIHAtNCB0ZXh0LXNtIGZvbnQtbWVkaXVtIGZpcnN0Om1sLTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWN5YW4tMzAwIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDp0ZXh0LWdyYXktNDAwIGRpc2FibGVkOmRhcms6dGV4dC1ncmF5LTUwMFwiLFxuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgYmFzZTogXCJyb3VuZGVkLXQtbGdcIixcbiAgICAgICAgICBhY3RpdmU6IHtcbiAgICAgICAgICAgIG9uOiBcImJnLWdyYXktMTAwIHRleHQtY3lhbi02MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtY3lhbi01MDBcIixcbiAgICAgICAgICAgIG9mZjogXCJ0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktNTAgaG92ZXI6dGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOnRleHQtZ3JheS0zMDBcIlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdW5kZXJsaW5lOiB7XG4gICAgICAgICAgYmFzZTogXCJyb3VuZGVkLXQtbGdcIixcbiAgICAgICAgICBhY3RpdmU6IHtcbiAgICAgICAgICAgIG9uOiBcImFjdGl2ZSByb3VuZGVkLXQtbGcgYm9yZGVyLWItMiBib3JkZXItY3lhbi02MDAgdGV4dC1jeWFuLTYwMCBkYXJrOmJvcmRlci1jeWFuLTUwMCBkYXJrOnRleHQtY3lhbi01MDBcIixcbiAgICAgICAgICAgIG9mZjogXCJib3JkZXItYi0yIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LWdyYXktNTAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCBob3Zlcjp0ZXh0LWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOnRleHQtZ3JheS0zMDBcIlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcGlsbHM6IHtcbiAgICAgICAgICBiYXNlOiBcIlwiLFxuICAgICAgICAgIGFjdGl2ZToge1xuICAgICAgICAgICAgb246IFwicm91bmRlZC1sZyBiZy1jeWFuLTYwMCB0ZXh0LXdoaXRlXCIsXG4gICAgICAgICAgICBvZmY6IFwicm91bmRlZC1sZyBob3ZlcjpiZy1ncmF5LTEwMCBob3Zlcjp0ZXh0LWdyYXktOTAwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bGxXaWR0aDoge1xuICAgICAgICAgIGJhc2U6IFwibWwtMCBmbGV4IHctZnVsbCByb3VuZGVkLW5vbmUgZmlyc3Q6bWwtMFwiLFxuICAgICAgICAgIGFjdGl2ZToge1xuICAgICAgICAgICAgb246IFwiYWN0aXZlIHJvdW5kZWQtbm9uZSBiZy1ncmF5LTEwMCBwLTQgdGV4dC1ncmF5LTkwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZVwiLFxuICAgICAgICAgICAgb2ZmOiBcInJvdW5kZWQtbm9uZSBiZy13aGl0ZSBob3ZlcjpiZy1ncmF5LTUwIGhvdmVyOnRleHQtZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaWNvbjogXCJtci0yIGgtNSB3LTVcIlxuICAgIH1cbiAgfSxcbiAgdGFiaXRlbWNvbnRhaW5lcjoge1xuICAgIGJhc2U6IFwiXCIsXG4gICAgdmFyaWFudDoge1xuICAgICAgZGVmYXVsdDogXCJcIixcbiAgICAgIHVuZGVybGluZTogXCJcIixcbiAgICAgIHBpbGxzOiBcIlwiLFxuICAgICAgZnVsbFdpZHRoOiBcIlwiXG4gICAgfVxuICB9LFxuICB0YWJwYW5lbDogXCJweS0zXCJcbn0pO1xuXG5leHBvcnQgeyB0YWJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCB0ZXh0YXJlYVRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImJsb2NrIHctZnVsbCByb3VuZGVkLWxnIGJvcmRlciB0ZXh0LXNtIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwXCIsXG4gIGNvbG9yczoge1xuICAgIGdyYXk6IFwiYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItY3lhbi01MDAgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6Zm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTUwMFwiLFxuICAgIGluZm86IFwiYm9yZGVyLWN5YW4tNTAwIGJnLWN5YW4tNTAgdGV4dC1jeWFuLTkwMCBwbGFjZWhvbGRlci1jeWFuLTcwMCBmb2N1czpib3JkZXItY3lhbi01MDAgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1jeWFuLTQwMCBkYXJrOmJnLWN5YW4tMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTUwMFwiLFxuICAgIGZhaWx1cmU6IFwiYm9yZGVyLXJlZC01MDAgYmctcmVkLTUwIHRleHQtcmVkLTkwMCBwbGFjZWhvbGRlci1yZWQtNzAwIGZvY3VzOmJvcmRlci1yZWQtNTAwIGZvY3VzOnJpbmctcmVkLTUwMCBkYXJrOmJvcmRlci1yZWQtNDAwIGRhcms6YmctcmVkLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwIGRhcms6Zm9jdXM6cmluZy1yZWQtNTAwXCIsXG4gICAgd2FybmluZzogXCJib3JkZXIteWVsbG93LTUwMCBiZy15ZWxsb3ctNTAgdGV4dC15ZWxsb3ctOTAwIHBsYWNlaG9sZGVyLXllbGxvdy03MDAgZm9jdXM6Ym9yZGVyLXllbGxvdy01MDAgZm9jdXM6cmluZy15ZWxsb3ctNTAwIGRhcms6Ym9yZGVyLXllbGxvdy00MDAgZGFyazpiZy15ZWxsb3ctMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLXllbGxvdy01MDAgZGFyazpmb2N1czpyaW5nLXllbGxvdy01MDBcIixcbiAgICBzdWNjZXNzOiBcImJvcmRlci1ncmVlbi01MDAgYmctZ3JlZW4tNTAgdGV4dC1ncmVlbi05MDAgcGxhY2Vob2xkZXItZ3JlZW4tNzAwIGZvY3VzOmJvcmRlci1ncmVlbi01MDAgZm9jdXM6cmluZy1ncmVlbi01MDAgZGFyazpib3JkZXItZ3JlZW4tNDAwIGRhcms6YmctZ3JlZW4tMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tNTAwXCJcbiAgfSxcbiAgd2l0aFNoYWRvdzoge1xuICAgIG9uOiBcInNoYWRvdy1zbSBkYXJrOnNoYWRvdy1zbS1saWdodFwiLFxuICAgIG9mZjogXCJcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgdGV4dGFyZWFUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCB0ZXh0SW5wdXRUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJmbGV4XCIsXG4gIGFkZG9uOiBcImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWwtbWQgYm9yZGVyIGJvcmRlci1yLTAgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktMjAwIHB4LTMgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gIGZpZWxkOiB7XG4gICAgYmFzZTogXCJyZWxhdGl2ZSB3LWZ1bGxcIixcbiAgICBpY29uOiB7XG4gICAgICBiYXNlOiBcInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCBmbGV4IGl0ZW1zLWNlbnRlciBwbC0zXCIsXG4gICAgICBzdmc6IFwiaC01IHctNSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiXG4gICAgfSxcbiAgICByaWdodEljb246IHtcbiAgICAgIGJhc2U6IFwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC15LTAgcmlnaHQtMCBmbGV4IGl0ZW1zLWNlbnRlciBwci0zXCIsXG4gICAgICBzdmc6IFwiaC01IHctNSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiXG4gICAgfSxcbiAgICBpbnB1dDoge1xuICAgICAgYmFzZTogXCJibG9jayB3LWZ1bGwgYm9yZGVyIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwXCIsXG4gICAgICBzaXplczoge1xuICAgICAgICBzbTogXCJwLTIgc206dGV4dC14c1wiLFxuICAgICAgICBtZDogXCJwLTIuNSB0ZXh0LXNtXCIsXG4gICAgICAgIGxnOiBcInAtNCBzbTp0ZXh0LWJhc2VcIlxuICAgICAgfSxcbiAgICAgIGNvbG9yczoge1xuICAgICAgICBncmF5OiBcImJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICAgICAgaW5mbzogXCJib3JkZXItY3lhbi01MDAgYmctY3lhbi01MCB0ZXh0LWN5YW4tOTAwIHBsYWNlaG9sZGVyLWN5YW4tNzAwIGZvY3VzOmJvcmRlci1jeWFuLTUwMCBmb2N1czpyaW5nLWN5YW4tNTAwIGRhcms6Ym9yZGVyLWN5YW4tNDAwIGRhcms6YmctY3lhbi0xMDAgZGFyazpmb2N1czpib3JkZXItY3lhbi01MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNTAwXCIsXG4gICAgICAgIGZhaWx1cmU6IFwiYm9yZGVyLXJlZC01MDAgYmctcmVkLTUwIHRleHQtcmVkLTkwMCBwbGFjZWhvbGRlci1yZWQtNzAwIGZvY3VzOmJvcmRlci1yZWQtNTAwIGZvY3VzOnJpbmctcmVkLTUwMCBkYXJrOmJvcmRlci1yZWQtNDAwIGRhcms6YmctcmVkLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwIGRhcms6Zm9jdXM6cmluZy1yZWQtNTAwXCIsXG4gICAgICAgIHdhcm5pbmc6IFwiYm9yZGVyLXllbGxvdy01MDAgYmcteWVsbG93LTUwIHRleHQteWVsbG93LTkwMCBwbGFjZWhvbGRlci15ZWxsb3ctNzAwIGZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGZvY3VzOnJpbmcteWVsbG93LTUwMCBkYXJrOmJvcmRlci15ZWxsb3ctNDAwIGRhcms6YmcteWVsbG93LTEwMCBkYXJrOmZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNTAwXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiYm9yZGVyLWdyZWVuLTUwMCBiZy1ncmVlbi01MCB0ZXh0LWdyZWVuLTkwMCBwbGFjZWhvbGRlci1ncmVlbi03MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTUwMCBmb2N1czpyaW5nLWdyZWVuLTUwMCBkYXJrOmJvcmRlci1ncmVlbi00MDAgZGFyazpiZy1ncmVlbi0xMDAgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi01MDBcIlxuICAgICAgfSxcbiAgICAgIHdpdGhSaWdodEljb246IHtcbiAgICAgICAgb246IFwicHItMTBcIixcbiAgICAgICAgb2ZmOiBcIlwiXG4gICAgICB9LFxuICAgICAgd2l0aEljb246IHtcbiAgICAgICAgb246IFwicGwtMTBcIixcbiAgICAgICAgb2ZmOiBcIlwiXG4gICAgICB9LFxuICAgICAgd2l0aEFkZG9uOiB7XG4gICAgICAgIG9uOiBcInJvdW5kZWQtci1sZ1wiLFxuICAgICAgICBvZmY6IFwicm91bmRlZC1sZ1wiXG4gICAgICB9LFxuICAgICAgd2l0aFNoYWRvdzoge1xuICAgICAgICBvbjogXCJzaGFkb3ctc20gZGFyazpzaGFkb3ctc20tbGlnaHRcIixcbiAgICAgICAgb2ZmOiBcIlwiXG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgdGV4dElucHV0VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdGltZWxpbmVUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGRpcmVjdGlvbjoge1xuICAgICAgaG9yaXpvbnRhbDogXCJzbTpmbGV4XCIsXG4gICAgICB2ZXJ0aWNhbDogXCJyZWxhdGl2ZSBib3JkZXItbCBib3JkZXItZ3JheS0yMDAgZGFyazpib3JkZXItZ3JheS03MDBcIlxuICAgIH1cbiAgfSxcbiAgaXRlbToge1xuICAgIHJvb3Q6IHtcbiAgICAgIGhvcml6b250YWw6IFwicmVsYXRpdmUgbWItNiBzbTptYi0wXCIsXG4gICAgICB2ZXJ0aWNhbDogXCJtYi0xMCBtbC02XCJcbiAgICB9LFxuICAgIGNvbnRlbnQ6IHtcbiAgICAgIHJvb3Q6IHtcbiAgICAgICAgYmFzZTogXCJcIixcbiAgICAgICAgaG9yaXpvbnRhbDogXCJtdC0zIHNtOnByLThcIixcbiAgICAgICAgdmVydGljYWw6IFwiXCJcbiAgICAgIH0sXG4gICAgICBib2R5OiB7XG4gICAgICAgIGJhc2U6IFwibWItNCB0ZXh0LWJhc2UgZm9udC1ub3JtYWwgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgICAgfSxcbiAgICAgIHRpbWU6IHtcbiAgICAgICAgYmFzZTogXCJtYi0xIHRleHQtc20gZm9udC1ub3JtYWwgbGVhZGluZy1ub25lIHRleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNTAwXCJcbiAgICAgIH0sXG4gICAgICB0aXRsZToge1xuICAgICAgICBiYXNlOiBcInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgICB9XG4gICAgfSxcbiAgICBwb2ludDoge1xuICAgICAgaG9yaXpvbnRhbDogXCJmbGV4IGl0ZW1zLWNlbnRlclwiLFxuICAgICAgbGluZTogXCJoaWRkZW4gaC0wLjUgdy1mdWxsIGJnLWdyYXktMjAwIGRhcms6YmctZ3JheS03MDAgc206ZmxleFwiLFxuICAgICAgbWFya2VyOiB7XG4gICAgICAgIGJhc2U6IHtcbiAgICAgICAgICBob3Jpem9udGFsOiBcImFic29sdXRlIC1sZWZ0LTEuNSBoLTMgdy0zIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXdoaXRlIGJnLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktOTAwIGRhcms6YmctZ3JheS03MDBcIixcbiAgICAgICAgICB2ZXJ0aWNhbDogXCJhYnNvbHV0ZSAtbGVmdC0xLjUgbXQtMS41IGgtMyB3LTMgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItd2hpdGUgYmctZ3JheS0yMDAgZGFyazpib3JkZXItZ3JheS05MDAgZGFyazpiZy1ncmF5LTcwMFwiXG4gICAgICAgIH0sXG4gICAgICAgIGljb246IHtcbiAgICAgICAgICBiYXNlOiBcImgtMyB3LTMgdGV4dC1jeWFuLTYwMCBkYXJrOnRleHQtY3lhbi0zMDBcIixcbiAgICAgICAgICB3cmFwcGVyOiBcImFic29sdXRlIC1sZWZ0LTMgZmxleCBoLTYgdy02IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYmctY3lhbi0yMDAgcmluZy04IHJpbmctd2hpdGUgZGFyazpiZy1jeWFuLTkwMCBkYXJrOnJpbmctZ3JheS05MDBcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdmVydGljYWw6IFwiXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyB0aW1lbGluZVRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IHRvYXN0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZsZXggdy1mdWxsIG1heC13LXhzIGl0ZW1zLWNlbnRlciByb3VuZGVkLWxnIGJnLXdoaXRlIHAtNCB0ZXh0LWdyYXktNTAwIHNoYWRvdyBkYXJrOmJnLWdyYXktODAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgIGNsb3NlZDogXCJvcGFjaXR5LTAgZWFzZS1vdXRcIlxuICB9LFxuICB0b2dnbGU6IHtcbiAgICBiYXNlOiBcIi1tLTEuNSBtbC1hdXRvIGlubGluZS1mbGV4IGgtOCB3LTggcm91bmRlZC1sZyBiZy13aGl0ZSBwLTEuNSB0ZXh0LWdyYXktNDAwIGhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtZ3JheS05MDAgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctZ3JheS0zMDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS01MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICBpY29uOiBcImgtNSB3LTUgc2hyaW5rLTBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgdG9hc3RUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCB0b2dnbGVTd2l0Y2hUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZ3JvdXAgZmxleCByb3VuZGVkLWxnIGZvY3VzOm91dGxpbmUtbm9uZVwiLFxuICAgIGFjdGl2ZToge1xuICAgICAgb246IFwiY3Vyc29yLXBvaW50ZXJcIixcbiAgICAgIG9mZjogXCJjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS01MFwiXG4gICAgfSxcbiAgICBsYWJlbDogXCJtcy0zIG10LTAuNSB0ZXh0LXN0YXJ0IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0zMDBcIlxuICB9LFxuICB0b2dnbGU6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlIHJvdW5kZWQtZnVsbCBib3JkZXIgYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6cm91bmRlZC1mdWxsIGFmdGVyOmJnLXdoaXRlIGFmdGVyOnRyYW5zaXRpb24tYWxsIGdyb3VwLWZvY3VzOnJpbmctNCBncm91cC1mb2N1czpyaW5nLWN5YW4tNTAwLzI1XCIsXG4gICAgY2hlY2tlZDoge1xuICAgICAgb246IFwiYWZ0ZXI6dHJhbnNsYXRlLXgtZnVsbCBhZnRlcjpib3JkZXItd2hpdGUgcnRsOmFmdGVyOi10cmFuc2xhdGUteC1mdWxsXCIsXG4gICAgICBvZmY6IFwiYm9yZGVyLWdyYXktMjAwIGJnLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDBcIixcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIGJsdWU6IFwiYm9yZGVyLWN5YW4tNzAwIGJnLWN5YW4tNzAwXCIsXG4gICAgICAgIGRhcms6IFwiYmctZGFyay03MDAgYm9yZGVyLWRhcmstOTAwXCIsXG4gICAgICAgIGZhaWx1cmU6IFwiYm9yZGVyLXJlZC05MDAgYmctcmVkLTcwMFwiLFxuICAgICAgICBncmF5OiBcImJvcmRlci1ncmF5LTYwMCBiZy1ncmF5LTUwMFwiLFxuICAgICAgICBncmVlbjogXCJib3JkZXItZ3JlZW4tNzAwIGJnLWdyZWVuLTYwMFwiLFxuICAgICAgICBsaWdodDogXCJiZy1saWdodC03MDAgYm9yZGVyLWxpZ2h0LTkwMFwiLFxuICAgICAgICByZWQ6IFwiYm9yZGVyLXJlZC05MDAgYmctcmVkLTcwMFwiLFxuICAgICAgICBwdXJwbGU6IFwiYm9yZGVyLXB1cnBsZS05MDAgYmctcHVycGxlLTcwMFwiLFxuICAgICAgICBzdWNjZXNzOiBcImJvcmRlci1ncmVlbi01MDAgYmctZ3JlZW4tNTAwXCIsXG4gICAgICAgIHllbGxvdzogXCJib3JkZXIteWVsbG93LTQwMCBiZy15ZWxsb3ctNDAwXCIsXG4gICAgICAgIHdhcm5pbmc6IFwiYm9yZGVyLXllbGxvdy02MDAgYmcteWVsbG93LTYwMFwiLFxuICAgICAgICBjeWFuOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTUwMFwiLFxuICAgICAgICBsaW1lOiBcImJvcmRlci1saW1lLTQwMCBiZy1saW1lLTQwMFwiLFxuICAgICAgICBpbmRpZ286IFwiYm9yZGVyLWluZGlnby00MDAgYmctaW5kaWdvLTQwMFwiLFxuICAgICAgICB0ZWFsOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS10ZWFsLTQwMCB2aWEtdGVhbC01MDAgdG8tdGVhbC02MDAgaG92ZXI6YmctZ3JhZGllbnQtdG8tYnIgZm9jdXM6cmluZy00XCIsXG4gICAgICAgIGluZm86IFwiYm9yZGVyLWN5YW4tNjAwIGJnLWN5YW4tNjAwXCIsXG4gICAgICAgIHBpbms6IFwiYm9yZGVyLXBpbmstNjAwIGJnLXBpbmstNjAwXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIHNpemVzOiB7XG4gICAgICBzbTogXCJoLTUgdy05IG1pbi13LTkgYWZ0ZXI6bGVmdC1weCBhZnRlcjp0b3AtcHggYWZ0ZXI6aC00IGFmdGVyOnctNCBydGw6YWZ0ZXI6cmlnaHQtcHhcIixcbiAgICAgIG1kOiBcImgtNiB3LTExIG1pbi13LTExIGFmdGVyOmxlZnQtcHggYWZ0ZXI6dG9wLXB4IGFmdGVyOmgtNSBhZnRlcjp3LTUgcnRsOmFmdGVyOnJpZ2h0LXB4XCIsXG4gICAgICBsZzogXCJoLTcgdy0xNCBtaW4tdy0xNCBhZnRlcjpsZWZ0LTEgYWZ0ZXI6dG9wLTAuNSBhZnRlcjpoLTYgYWZ0ZXI6dy02IHJ0bDphZnRlcjpyaWdodC0xXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyB0b2dnbGVTd2l0Y2hUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCB0b29sdGlwVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHRhcmdldDogXCJ3LWZpdFwiLFxuICBhbmltYXRpb246IFwidHJhbnNpdGlvbi1vcGFjaXR5XCIsXG4gIGFycm93OiB7XG4gICAgYmFzZTogXCJhYnNvbHV0ZSB6LTEwIGgtMiB3LTIgcm90YXRlLTQ1XCIsXG4gICAgc3R5bGU6IHtcbiAgICAgIGRhcms6IFwiYmctZ3JheS05MDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgICAgbGlnaHQ6IFwiYmctd2hpdGVcIixcbiAgICAgIGF1dG86IFwiYmctd2hpdGUgZGFyazpiZy1ncmF5LTcwMFwiXG4gICAgfSxcbiAgICBwbGFjZW1lbnQ6IFwiLTRweFwiXG4gIH0sXG4gIGJhc2U6IFwiYWJzb2x1dGUgei0xMCBpbmxpbmUtYmxvY2sgcm91bmRlZC1sZyBweC0zIHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSBzaGFkb3ctc21cIixcbiAgaGlkZGVuOiBcImludmlzaWJsZSBvcGFjaXR5LTBcIixcbiAgc3R5bGU6IHtcbiAgICBkYXJrOiBcImJnLWdyYXktOTAwIHRleHQtd2hpdGUgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgIGxpZ2h0OiBcImJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMFwiLFxuICAgIGF1dG86IFwiYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBiZy13aGl0ZSB0ZXh0LWdyYXktOTAwIGRhcms6Ym9yZGVyLW5vbmUgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGVcIlxuICB9LFxuICBjb250ZW50OiBcInJlbGF0aXZlIHotMjBcIlxufSk7XG5cbmV4cG9ydCB7IHRvb2x0aXBUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgYWNjb3JkaW9uVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQWNjb3JkaW9uL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBhbGVydFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0FsZXJ0L3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBhdmF0YXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9BdmF0YXIvdGhlbWUubWpzJztcbmltcG9ydCB7IGJhZGdlVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQmFkZ2UvdGhlbWUubWpzJztcbmltcG9ydCB7IGJsb2NrcXVvdGVUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9CbG9ja3F1b3RlL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBicmVhZGNydW1iVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQnJlYWRjcnVtYi90aGVtZS5tanMnO1xuaW1wb3J0IHsgYnV0dG9uVGhlbWUsIGJ1dHRvbkdyb3VwVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQnV0dG9uL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBjYXJkVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2FyZC90aGVtZS5tanMnO1xuaW1wb3J0IHsgY2Fyb3VzZWxUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9DYXJvdXNlbC90aGVtZS5tanMnO1xuaW1wb3J0IHsgY2hlY2tib3hUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9DaGVja2JveC90aGVtZS5tanMnO1xuaW1wb3J0IHsgY2xpcGJvYXJkVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2xpcGJvYXJkL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBkYXJrVGhlbWVUb2dnbGVUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9EYXJrVGhlbWVUb2dnbGUvdGhlbWUubWpzJztcbmltcG9ydCB7IGRhdGVQaWNrZXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9EYXRlcGlja2VyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBkcmF3ZXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9EcmF3ZXIvdGhlbWUubWpzJztcbmltcG9ydCB7IGRyb3Bkb3duVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvRHJvcGRvd24vdGhlbWUubWpzJztcbmltcG9ydCB7IGZpbGVJbnB1dFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0ZpbGVJbnB1dC90aGVtZS5tanMnO1xuaW1wb3J0IHsgZmxvYXRpbmdMYWJlbFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0Zsb2F0aW5nTGFiZWwvdGhlbWUubWpzJztcbmltcG9ydCB7IGZvb3RlclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0Zvb3Rlci90aGVtZS5tanMnO1xuaW1wb3J0IHsgaGVscGVyVGV4dFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0hlbHBlclRleHQvdGhlbWUubWpzJztcbmltcG9ydCB7IGhyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvSFIvdGhlbWUubWpzJztcbmltcG9ydCB7IGtiZFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0tiZC90aGVtZS5tanMnO1xuaW1wb3J0IHsgbGFiZWxUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9MYWJlbC90aGVtZS5tanMnO1xuaW1wb3J0IHsgbGlzdFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0xpc3QvdGhlbWUubWpzJztcbmltcG9ydCB7IGxpc3RHcm91cFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0xpc3RHcm91cC90aGVtZS5tanMnO1xuaW1wb3J0IHsgbWVnYU1lbnVUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9NZWdhTWVudS90aGVtZS5tanMnO1xuaW1wb3J0IHsgbW9kYWxUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9Nb2RhbC90aGVtZS5tanMnO1xuaW1wb3J0IHsgbmF2YmFyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvTmF2YmFyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBwYWdpbmF0aW9uVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvUGFnaW5hdGlvbi90aGVtZS5tanMnO1xuaW1wb3J0IHsgcG9wb3ZlclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1BvcG92ZXIvdGhlbWUubWpzJztcbmltcG9ydCB7IHByb2dyZXNzVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvUHJvZ3Jlc3MvdGhlbWUubWpzJztcbmltcG9ydCB7IHJhZGlvVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvUmFkaW8vdGhlbWUubWpzJztcbmltcG9ydCB7IHJhbmdlU2xpZGVyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvUmFuZ2VTbGlkZXIvdGhlbWUubWpzJztcbmltcG9ydCB7IHJhdGluZ1RoZW1lLCByYXRpbmdBZHZhbmNlZFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1JhdGluZy90aGVtZS5tanMnO1xuaW1wb3J0IHsgc2VsZWN0VGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvU2VsZWN0L3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBzaWRlYmFyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvU2lkZWJhci90aGVtZS5tanMnO1xuaW1wb3J0IHsgc3Bpbm5lclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1NwaW5uZXIvdGhlbWUubWpzJztcbmltcG9ydCB7IHRhYmxlVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvVGFibGUvdGhlbWUubWpzJztcbmltcG9ydCB7IHRhYlRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1RhYnMvdGhlbWUubWpzJztcbmltcG9ydCB7IHRleHRhcmVhVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvVGV4dGFyZWEvdGhlbWUubWpzJztcbmltcG9ydCB7IHRleHRJbnB1dFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1RleHRJbnB1dC90aGVtZS5tanMnO1xuaW1wb3J0IHsgdGltZWxpbmVUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9UaW1lbGluZS90aGVtZS5tanMnO1xuaW1wb3J0IHsgdG9hc3RUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9Ub2FzdC90aGVtZS5tanMnO1xuaW1wb3J0IHsgdG9nZ2xlU3dpdGNoVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvVG9nZ2xlU3dpdGNoL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0b29sdGlwVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvVG9vbHRpcC90aGVtZS5tanMnO1xuXG5jb25zdCB0aGVtZSA9IHtcbiAgYWNjb3JkaW9uOiBhY2NvcmRpb25UaGVtZSxcbiAgYWxlcnQ6IGFsZXJ0VGhlbWUsXG4gIGF2YXRhcjogYXZhdGFyVGhlbWUsXG4gIGJhZGdlOiBiYWRnZVRoZW1lLFxuICBibG9ja3F1b3RlOiBibG9ja3F1b3RlVGhlbWUsXG4gIGJyZWFkY3J1bWI6IGJyZWFkY3J1bWJUaGVtZSxcbiAgYnV0dG9uOiBidXR0b25UaGVtZSxcbiAgYnV0dG9uR3JvdXA6IGJ1dHRvbkdyb3VwVGhlbWUsXG4gIGNhcmQ6IGNhcmRUaGVtZSxcbiAgY2Fyb3VzZWw6IGNhcm91c2VsVGhlbWUsXG4gIGNoZWNrYm94OiBjaGVja2JveFRoZW1lLFxuICBjbGlwYm9hcmQ6IGNsaXBib2FyZFRoZW1lLFxuICBkYXRlcGlja2VyOiBkYXRlUGlja2VyVGhlbWUsXG4gIGRhcmtUaGVtZVRvZ2dsZTogZGFya1RoZW1lVG9nZ2xlVGhlbWUsXG4gIGRyYXdlcjogZHJhd2VyVGhlbWUsXG4gIGRyb3Bkb3duOiBkcm9wZG93blRoZW1lLFxuICBmaWxlSW5wdXQ6IGZpbGVJbnB1dFRoZW1lLFxuICBmbG9hdGluZ0xhYmVsOiBmbG9hdGluZ0xhYmVsVGhlbWUsXG4gIGZvb3RlcjogZm9vdGVyVGhlbWUsXG4gIGhlbHBlclRleHQ6IGhlbHBlclRleHRUaGVtZSxcbiAgaHI6IGhyVGhlbWUsXG4gIGtiZDoga2JkVGhlbWUsXG4gIGxhYmVsOiBsYWJlbFRoZW1lLFxuICBsaXN0R3JvdXA6IGxpc3RHcm91cFRoZW1lLFxuICBsaXN0OiBsaXN0VGhlbWUsXG4gIG1lZ2FNZW51OiBtZWdhTWVudVRoZW1lLFxuICBtb2RhbDogbW9kYWxUaGVtZSxcbiAgbmF2YmFyOiBuYXZiYXJUaGVtZSxcbiAgcGFnaW5hdGlvbjogcGFnaW5hdGlvblRoZW1lLFxuICBwb3BvdmVyOiBwb3BvdmVyVGhlbWUsXG4gIHByb2dyZXNzOiBwcm9ncmVzc1RoZW1lLFxuICByYWRpbzogcmFkaW9UaGVtZSxcbiAgcmFuZ2VTbGlkZXI6IHJhbmdlU2xpZGVyVGhlbWUsXG4gIHJhdGluZzogcmF0aW5nVGhlbWUsXG4gIHJhdGluZ0FkdmFuY2VkOiByYXRpbmdBZHZhbmNlZFRoZW1lLFxuICBzZWxlY3Q6IHNlbGVjdFRoZW1lLFxuICB0ZXh0SW5wdXQ6IHRleHRJbnB1dFRoZW1lLFxuICB0ZXh0YXJlYTogdGV4dGFyZWFUaGVtZSxcbiAgdG9nZ2xlU3dpdGNoOiB0b2dnbGVTd2l0Y2hUaGVtZSxcbiAgc2lkZWJhcjogc2lkZWJhclRoZW1lLFxuICBzcGlubmVyOiBzcGlubmVyVGhlbWUsXG4gIHRhYmxlOiB0YWJsZVRoZW1lLFxuICB0YWJzOiB0YWJUaGVtZSxcbiAgdGltZWxpbmU6IHRpbWVsaW5lVGhlbWUsXG4gIHRvYXN0OiB0b2FzdFRoZW1lLFxuICB0b29sdGlwOiB0b29sdGlwVGhlbWVcbn07XG5cbmV4cG9ydCB7IHRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICcuLi9oZWxwZXJzL2Nsb25lLWRlZXAubWpzJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tICcuLi90aGVtZS5tanMnO1xuXG5jb25zdCBzdG9yZSA9IHtcbiAgdGhlbWU6IGNsb25lRGVlcCh0aGVtZSlcbn07XG5mdW5jdGlvbiBzZXRUaGVtZU1vZGUobW9kZSkge1xuICBzdG9yZS5tb2RlID0gbW9kZTtcbn1cbmZ1bmN0aW9uIGdldFRoZW1lTW9kZSgpIHtcbiAgcmV0dXJuIHN0b3JlLm1vZGU7XG59XG5mdW5jdGlvbiBzZXRUaGVtZSh0aGVtZSQxKSB7XG4gIGlmICh0aGVtZSQxKSBzdG9yZS50aGVtZSA9IG1lcmdlRGVlcCh0aGVtZSwgdGhlbWUkMSk7XG59XG5mdW5jdGlvbiBnZXRUaGVtZSgpIHtcbiAgcmV0dXJuIGNsb25lRGVlcChzdG9yZS50aGVtZSk7XG59XG5cbmV4cG9ydCB7IGdldFRoZW1lLCBnZXRUaGVtZU1vZGUsIHNldFRoZW1lLCBzZXRUaGVtZU1vZGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IEFjY29yZGlvblBhbmVsQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZUFjY29yZGlvbkNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEFjY29yZGlvblBhbmVsQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZUFjY29yZGlvbkNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBBY2NvcmRpb25QYW5lbENvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBBY2NvcmRpb25QYW5lbENvbnRleHQsIHVzZUFjY29yZGlvbkNvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFjY29yZGlvblBhbmVsQ29udGV4dC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyB1c2VBY2NvcmRpb25Db250ZXh0IH0gZnJvbSAnLi9BY2NvcmRpb25QYW5lbENvbnRleHQubWpzJztcblxuY29uc3QgQWNjb3JkaW9uQ29udGVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IGlzT3BlbiB9ID0gdXNlQWNjb3JkaW9uQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmFjY29yZGlvbi5jb250ZW50LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYWNjb3JkaW9uLWNvbnRlbnRcIixcbiAgICAgIGhpZGRlbjogIWlzT3BlbixcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgeyBBY2NvcmRpb25Db250ZW50IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY2NvcmRpb25Db250ZW50Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQWNjb3JkaW9uUGFuZWxDb250ZXh0IH0gZnJvbSAnLi9BY2NvcmRpb25QYW5lbENvbnRleHQubWpzJztcblxuY29uc3QgQWNjb3JkaW9uUGFuZWwgPSAoeyBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IGFsd2F5c09wZW4gfSA9IHByb3BzO1xuICBjb25zdCBbaXNPcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKHByb3BzLmlzT3Blbik7XG4gIGNvbnN0IHByb3ZpZGVyID0gYWx3YXlzT3BlbiA/IHtcbiAgICAuLi5wcm9wcyxcbiAgICBpc09wZW4sXG4gICAgc2V0T3BlbjogKCkgPT4gc2V0T3BlbighaXNPcGVuKVxuICB9IDogcHJvcHM7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEFjY29yZGlvblBhbmVsQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogcHJvdmlkZXIsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgQWNjb3JkaW9uUGFuZWwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFjY29yZGlvblBhbmVsLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IHVzZUFjY29yZGlvbkNvbnRleHQgfSBmcm9tICcuL0FjY29yZGlvblBhbmVsQ29udGV4dC5tanMnO1xuXG5jb25zdCBBY2NvcmRpb25UaXRsZSA9ICh7XG4gIGFzOiBIZWFkaW5nID0gXCJoMlwiLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyBhcnJvd0ljb246IEFycm93SWNvbiwgZmx1c2gsIGlzT3Blbiwgc2V0T3BlbiB9ID0gdXNlQWNjb3JkaW9uQ29udGV4dCgpO1xuICBjb25zdCBvbkNsaWNrID0gKCkgPT4gdHlwZW9mIHNldE9wZW4gIT09IFwidW5kZWZpbmVkXCIgJiYgc2V0T3BlbigpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmFjY29yZGlvbi50aXRsZSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgXCJidXR0b25cIixcbiAgICB7XG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgdGhlbWUuZmx1c2hbZmx1c2ggPyBcIm9uXCIgOiBcIm9mZlwiXSwgdGhlbWUub3Blbltpc09wZW4gPyBcIm9uXCIgOiBcIm9mZlwiXSwgY2xhc3NOYW1lKSxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KEhlYWRpbmcsIHsgY2xhc3NOYW1lOiB0aGVtZS5oZWFkaW5nLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYWNjb3JkaW9uLWhlYWRpbmdcIiwgY2hpbGRyZW4gfSksXG4gICAgICAgIEFycm93SWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgIEFycm93SWNvbixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYXJyb3cuYmFzZSwgdGhlbWUuYXJyb3cub3Blbltpc09wZW4gPyBcIm9uXCIgOiBcIm9mZlwiXSksXG4gICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYWNjb3JkaW9uLWFycm93XCJcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIF1cbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgeyBBY2NvcmRpb25UaXRsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWNjb3JkaW9uVGl0bGUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZU1lbW8sIENoaWxkcmVuLCBjbG9uZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIaUNoZXZyb25Eb3duIH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgQWNjb3JkaW9uQ29udGVudCB9IGZyb20gJy4vQWNjb3JkaW9uQ29udGVudC5tanMnO1xuaW1wb3J0IHsgQWNjb3JkaW9uUGFuZWwgfSBmcm9tICcuL0FjY29yZGlvblBhbmVsLm1qcyc7XG5pbXBvcnQgeyBBY2NvcmRpb25UaXRsZSB9IGZyb20gJy4vQWNjb3JkaW9uVGl0bGUubWpzJztcblxuY29uc3QgQWNjb3JkaW9uQ29tcG9uZW50ID0gKHtcbiAgYWx3YXlzT3BlbiA9IGZhbHNlLFxuICBhcnJvd0ljb24gPSBIaUNoZXZyb25Eb3duLFxuICBjaGlsZHJlbixcbiAgZmx1c2ggPSBmYWxzZSxcbiAgY29sbGFwc2VBbGwgPSBmYWxzZSxcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgW2lzT3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShjb2xsYXBzZUFsbCA/IC0xIDogMCk7XG4gIGNvbnN0IHBhbmVscyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gQ2hpbGRyZW4ubWFwKFxuICAgICAgY2hpbGRyZW4sXG4gICAgICAoY2hpbGQsIGkpID0+IGNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgICBhbHdheXNPcGVuLFxuICAgICAgICBhcnJvd0ljb24sXG4gICAgICAgIGZsdXNoLFxuICAgICAgICBpc09wZW46IGlzT3BlbiA9PT0gaSxcbiAgICAgICAgc2V0T3BlbjogKCkgPT4gc2V0T3Blbihpc09wZW4gPT09IGkgPyAtMSA6IGkpXG4gICAgICB9KVxuICAgICksXG4gICAgW2Fsd2F5c09wZW4sIGFycm93SWNvbiwgY2hpbGRyZW4sIGZsdXNoLCBpc09wZW5dXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYWNjb3JkaW9uLnJvb3QsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgdGhlbWUuZmx1c2hbZmx1c2ggPyBcIm9uXCIgOiBcIm9mZlwiXSwgY2xhc3NOYW1lKSxcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1hY2NvcmRpb25cIixcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IHBhbmVsc1xuICAgIH1cbiAgKTtcbn07XG5BY2NvcmRpb25Db21wb25lbnQuZGlzcGxheU5hbWUgPSBcIkFjY29yZGlvblwiO1xuQWNjb3JkaW9uUGFuZWwuZGlzcGxheU5hbWUgPSBcIkFjY29yZGlvbi5QYW5lbFwiO1xuQWNjb3JkaW9uVGl0bGUuZGlzcGxheU5hbWUgPSBcIkFjY29yZGlvbi5UaXRsZVwiO1xuQWNjb3JkaW9uQ29udGVudC5kaXNwbGF5TmFtZSA9IFwiQWNjb3JkaW9uLkNvbnRlbnRcIjtcbmNvbnN0IEFjY29yZGlvbiA9IE9iamVjdC5hc3NpZ24oQWNjb3JkaW9uQ29tcG9uZW50LCB7XG4gIFBhbmVsOiBBY2NvcmRpb25QYW5lbCxcbiAgVGl0bGU6IEFjY29yZGlvblRpdGxlLFxuICBDb250ZW50OiBBY2NvcmRpb25Db250ZW50XG59KTtcblxuZXhwb3J0IHsgQWNjb3JkaW9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY2NvcmRpb24ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBBdmF0YXJHcm91cCA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYXZhdGFyLmdyb3VwLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImF2YXRhci1ncm91cC1lbGVtZW50XCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuQXZhdGFyR3JvdXAuZGlzcGxheU5hbWUgPSBcIkF2YXRhci5Hcm91cFwiO1xuXG5leHBvcnQgeyBBdmF0YXJHcm91cCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXZhdGFyR3JvdXAubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cyB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgQXZhdGFyR3JvdXBDb3VudGVyID0gKHtcbiAgY2xhc3NOYW1lLFxuICBocmVmLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgdG90YWwsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYXZhdGFyLmdyb3VwQ291bnRlciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJhXCIsIHsgaHJlZiwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIFwiK1wiLFxuICAgIHRvdGFsXG4gIF0gfSk7XG59O1xuQXZhdGFyR3JvdXBDb3VudGVyLmRpc3BsYXlOYW1lID0gXCJBdmF0YXIuR3JvdXBDb3VudGVyXCI7XG5cbmV4cG9ydCB7IEF2YXRhckdyb3VwQ291bnRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXZhdGFyR3JvdXBDb3VudGVyLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEF2YXRhckdyb3VwIH0gZnJvbSAnLi9BdmF0YXJHcm91cC5tanMnO1xuaW1wb3J0IHsgQXZhdGFyR3JvdXBDb3VudGVyIH0gZnJvbSAnLi9BdmF0YXJHcm91cENvdW50ZXIubWpzJztcblxuY29uc3QgQXZhdGFyQ29tcG9uZW50ID0gKHtcbiAgYWx0ID0gXCJcIixcbiAgYm9yZGVyZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgY29sb3IgPSBcImxpZ2h0XCIsXG4gIGltZyxcbiAgcGxhY2Vob2xkZXJJbml0aWFscyA9IFwiXCIsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgc2l6ZSA9IFwibWRcIixcbiAgc3RhY2tlZCA9IGZhbHNlLFxuICBzdGF0dXMsXG4gIHN0YXR1c1Bvc2l0aW9uID0gXCJ0b3AtbGVmdFwiLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5hdmF0YXIsIGN1c3RvbVRoZW1lKTtcbiAgY29uc3QgaW1nQ2xhc3NOYW1lID0gdHdNZXJnZShcbiAgICB0aGVtZS5yb290LmltZy5iYXNlLFxuICAgIGJvcmRlcmVkICYmIHRoZW1lLnJvb3QuYm9yZGVyZWQsXG4gICAgYm9yZGVyZWQgJiYgdGhlbWUucm9vdC5jb2xvcltjb2xvcl0sXG4gICAgcm91bmRlZCAmJiB0aGVtZS5yb290LnJvdW5kZWQsXG4gICAgc3RhY2tlZCAmJiB0aGVtZS5yb290LnN0YWNrZWQsXG4gICAgdGhlbWUucm9vdC5pbWcub24sXG4gICAgdGhlbWUucm9vdC5zaXplW3NpemVdXG4gICk7XG4gIGNvbnN0IGltZ1Byb3BzID0ge1xuICAgIGNsYXNzTmFtZTogdHdNZXJnZShpbWdDbGFzc05hbWUsIHRoZW1lLnJvb3QuaW1nLm9uKSxcbiAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYXZhdGFyLWltZ1wiXG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGNsYXNzTmFtZSksIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1hdmF0YXJcIiwgLi4ucHJvcHMsIGNoaWxkcmVuOiBbXG4gICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwicmVsYXRpdmVcIiwgY2hpbGRyZW46IFtcbiAgICAgIGltZyA/IHR5cGVvZiBpbWcgPT09IFwic3RyaW5nXCIgPyAvKiBAX19QVVJFX18gKi8ganN4KFwiaW1nXCIsIHsgYWx0LCBzcmM6IGltZywgLi4uaW1nUHJvcHMgfSkgOiBpbWcoeyBhbHQsIC4uLmltZ1Byb3BzIH0pIDogcGxhY2Vob2xkZXJJbml0aWFscyA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICB0aGVtZS5yb290LmltZy5vZmYsXG4gICAgICAgICAgICB0aGVtZS5yb290LmluaXRpYWxzLmJhc2UsXG4gICAgICAgICAgICBzdGFja2VkICYmIHRoZW1lLnJvb3Quc3RhY2tlZCxcbiAgICAgICAgICAgIGJvcmRlcmVkICYmIHRoZW1lLnJvb3QuYm9yZGVyZWQsXG4gICAgICAgICAgICBib3JkZXJlZCAmJiB0aGVtZS5yb290LmNvbG9yW2NvbG9yXSxcbiAgICAgICAgICAgIHRoZW1lLnJvb3Quc2l6ZVtzaXplXSxcbiAgICAgICAgICAgIHJvdW5kZWQgJiYgdGhlbWUucm9vdC5yb3VuZGVkXG4gICAgICAgICAgKSxcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYXZhdGFyLWluaXRpYWxzLXBsYWNlaG9sZGVyXCIsXG4gICAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuaW5pdGlhbHMudGV4dCksIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1hdmF0YXItaW5pdGlhbHMtcGxhY2Vob2xkZXItdGV4dFwiLCBjaGlsZHJlbjogcGxhY2Vob2xkZXJJbml0aWFscyB9KVxuICAgICAgICB9XG4gICAgICApIDogLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZShpbWdDbGFzc05hbWUsIHRoZW1lLnJvb3QuaW1nLm9mZiksIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1hdmF0YXItaW1nXCIsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcInN2Z1wiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGVtZS5yb290LmltZy5wbGFjZWhvbGRlcixcbiAgICAgICAgICBmaWxsOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICAgIHZpZXdCb3g6IFwiMCAwIDIwIDIwXCIsXG4gICAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInBhdGhcIiwgeyBmaWxsUnVsZTogXCJldmVub2RkXCIsIGQ6IFwiTTEwIDlhMyAzIDAgMTAwLTYgMyAzIDAgMDAwIDZ6bS03IDlhNyA3IDAgMTExNCAwSDN6XCIsIGNsaXBSdWxlOiBcImV2ZW5vZGRcIiB9KVxuICAgICAgICB9XG4gICAgICApIH0pLFxuICAgICAgc3RhdHVzICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwic3BhblwiLFxuICAgICAgICB7XG4gICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWF2YXRhci1zdGF0dXNcIixcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICB0aGVtZS5yb290LnN0YXR1cy5iYXNlLFxuICAgICAgICAgICAgdGhlbWUucm9vdC5zdGF0dXNbc3RhdHVzXSxcbiAgICAgICAgICAgIHRoZW1lLnJvb3Quc3RhdHVzUG9zaXRpb25bc3RhdHVzUG9zaXRpb25dXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICApXG4gICAgXSB9KSxcbiAgICBjaGlsZHJlbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2hpbGRyZW4gfSlcbiAgXSB9KTtcbn07XG5BdmF0YXJDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIkF2YXRhclwiO1xuY29uc3QgQXZhdGFyID0gT2JqZWN0LmFzc2lnbihBdmF0YXJDb21wb25lbnQsIHtcbiAgR3JvdXA6IEF2YXRhckdyb3VwLFxuICBDb3VudGVyOiBBdmF0YXJHcm91cENvdW50ZXJcbn0pO1xuXG5leHBvcnQgeyBBdmF0YXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUF2YXRhci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3gsIGpzeHMgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEJhZGdlID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNvbG9yID0gXCJpbmZvXCIsXG4gIGhyZWYsXG4gIGljb246IEljb24sXG4gIHNpemUgPSBcInhzXCIsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYmFkZ2UsIGN1c3RvbVRoZW1lKTtcbiAgY29uc3QgQ29udGVudCA9ICgpID0+IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIFwic3BhblwiLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgdGhlbWUucm9vdC5iYXNlLFxuICAgICAgICB0aGVtZS5yb290LmNvbG9yW2NvbG9yXSxcbiAgICAgICAgdGhlbWUucm9vdC5zaXplW3NpemVdLFxuICAgICAgICB0aGVtZS5pY29uW0ljb24gPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApLFxuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWJhZGdlXCIsXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIEljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pY29uLnNpemVbc2l6ZV0sIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1iYWRnZS1pY29uXCIgfSksXG4gICAgICAgIGNoaWxkcmVuICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2hpbGRyZW4gfSlcbiAgICAgIF1cbiAgICB9XG4gICk7XG4gIHJldHVybiBocmVmID8gLyogQF9fUFVSRV9fICovIGpzeChcImFcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnJvb3QuaHJlZiwgaHJlZiwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goQ29udGVudCwge30pIH0pIDogLyogQF9fUFVSRV9fICovIGpzeChDb250ZW50LCB7fSk7XG59O1xuQmFkZ2UuZGlzcGxheU5hbWUgPSBcIkJhZGdlXCI7XG5cbmV4cG9ydCB7IEJhZGdlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CYWRnZS5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3gsIGpzeHMgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IFNwaW5uZXIgPSAoe1xuICBjbGFzc05hbWUsXG4gIGNvbG9yID0gXCJpbmZvXCIsXG4gIGxpZ2h0LFxuICBzaXplID0gXCJtZFwiLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5zcGlubmVyLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IHJvbGU6IFwic3RhdHVzXCIsIC4uLnByb3BzLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgXCJzdmdcIixcbiAgICB7XG4gICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgIHZpZXdCb3g6IFwiMCAwIDEwMCAxMDFcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgdGhlbWUuYmFzZSxcbiAgICAgICAgdGhlbWUuY29sb3JbY29sb3JdLFxuICAgICAgICB0aGVtZS5saWdodFtsaWdodCA/IFwib25cIiA6IFwib2ZmXCJdLmJhc2UsXG4gICAgICAgIHRoZW1lLmxpZ2h0W2xpZ2h0ID8gXCJvblwiIDogXCJvZmZcIl0uY29sb3JbY29sb3JdLFxuICAgICAgICB0aGVtZS5zaXplW3NpemVdLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICksXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgIFwicGF0aFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGQ6IFwiTTEwMCA1MC41OTA4QzEwMCA3OC4yMDUxIDc3LjYxNDIgMTAwLjU5MSA1MCAxMDAuNTkxQzIyLjM4NTggMTAwLjU5MSAwIDc4LjIwNTEgMCA1MC41OTA4QzAgMjIuOTc2NiAyMi4zODU4IDAuNTkwODIgNTAgMC41OTA4MkM3Ny42MTQyIDAuNTkwODIgMTAwIDIyLjk3NjYgMTAwIDUwLjU5MDhaTTkuMDgxNDQgNTAuNTkwOEM5LjA4MTQ0IDczLjE4OTUgMjcuNDAxMyA5MS41MDk0IDUwIDkxLjUwOTRDNzIuNTk4NyA5MS41MDk0IDkwLjkxODYgNzMuMTg5NSA5MC45MTg2IDUwLjU5MDhDOTAuOTE4NiAyNy45OTIxIDcyLjU5ODcgOS42NzIyNiA1MCA5LjY3MjI2QzI3LjQwMTMgOS42NzIyNiA5LjA4MTQ0IDI3Ljk5MjEgOS4wODE0NCA1MC41OTA4WlwiLFxuICAgICAgICAgICAgZmlsbDogXCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcInBhdGhcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkOiBcIk05My45Njc2IDM5LjA0MDlDOTYuMzkzIDM4LjQwMzggOTcuODYyNCAzNS45MTE2IDk3LjAwNzkgMzMuNTUzOUM5NS4yOTMyIDI4LjgyMjcgOTIuODcxIDI0LjM2OTIgODkuODE2NyAyMC4zNDhDODUuODQ1MiAxNS4xMTkyIDgwLjg4MjYgMTAuNzIzOCA3NS4yMTI0IDcuNDEyODlDNjkuNTQyMiA0LjEwMTk0IDYzLjI3NTQgMS45NDAyNSA1Ni43Njk4IDEuMDUxMjRDNTEuNzY2NiAwLjM2NzU0MSA0Ni42OTc2IDAuNDQ2ODQzIDQxLjczNDUgMS4yNzg3M0MzOS4yNjEzIDEuNjkzMjggMzcuODEzIDQuMTk3NzggMzguNDUwMSA2LjYyMzI2QzM5LjA4NzMgOS4wNDg3NCA0MS41Njk0IDEwLjQ3MTcgNDQuMDUwNSAxMC4xMDcxQzQ3Ljg1MTEgOS41NDg1NSA1MS43MTkxIDkuNTI2ODkgNTUuNTQwMiAxMC4wNDkxQzYwLjg2NDIgMTAuNzc2NiA2NS45OTI4IDEyLjU0NTcgNzAuNjMzMSAxNS4yNTUyQzc1LjI3MzUgMTcuOTY0OCA3OS4zMzQ3IDIxLjU2MTkgODIuNTg0OSAyNS44NDFDODQuOTE3NSAyOC45MTIxIDg2Ljc5OTcgMzIuMjkxMyA4OC4xODExIDM1Ljg3NThDODkuMDgzIDM4LjIxNTggOTEuNTQyMSAzOS42NzgxIDkzLjk2NzYgMzkuMDQwOVpcIixcbiAgICAgICAgICAgIGZpbGw6IFwiY3VycmVudEZpbGxcIlxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgXVxuICAgIH1cbiAgKSB9KTtcbn07XG5TcGlubmVyLmRpc3BsYXlOYW1lID0gXCJTcGlubmVyXCI7XG5cbmV4cG9ydCB7IFNwaW5uZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNwaW5uZXIubWpzLm1hcFxuIiwiaW1wb3J0IHsgZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgQnV0dG9uQmFzZSA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBhczogQ29tcG9uZW50LCBocmVmLCB0eXBlID0gXCJidXR0b25cIiwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgQmFzZUNvbXBvbmVudCA9IENvbXBvbmVudCB8fCAoaHJlZiA/IFwiYVwiIDogXCJidXR0b25cIik7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoQmFzZUNvbXBvbmVudCwgeyByZWYsIGhyZWYsIHR5cGUsIC4uLnByb3BzIH0sIGNoaWxkcmVuKTtcbiAgfVxuKTtcbkJ1dHRvbkJhc2UuZGlzcGxheU5hbWUgPSBcIkJ1dHRvbkJhc2VDb21wb25lbnRcIjtcblxuZXhwb3J0IHsgQnV0dG9uQmFzZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QnV0dG9uQmFzZS5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VNZW1vLCBDaGlsZHJlbiwgaXNWYWxpZEVsZW1lbnQsIGNsb25lRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uLm1qcyc7XG5cbmNvbnN0IHByb2Nlc3NDaGlsZHJlbiA9IChjaGlsZHJlbiwgb3V0bGluZSwgcGlsbCkgPT4ge1xuICByZXR1cm4gQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgaWYgKGlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgY29uc3QgcG9zaXRpb25Jbkdyb3VwUHJvcCA9IGNoaWxkLnR5cGUgPT0gQnV0dG9uID8geyBwb3NpdGlvbkluR3JvdXA6IGRldGVybWluZVBvc2l0aW9uKGluZGV4LCBDaGlsZHJlbi5jb3VudChjaGlsZHJlbikpIH0gOiB7fTtcbiAgICAgIGlmIChjaGlsZC5wcm9wcy5jaGlsZHJlbikge1xuICAgICAgICByZXR1cm4gY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgICAgLi4uY2hpbGQucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW46IHByb2Nlc3NDaGlsZHJlbihjaGlsZC5wcm9wcy5jaGlsZHJlbiwgb3V0bGluZSwgcGlsbCksXG4gICAgICAgICAgLi4ucG9zaXRpb25Jbkdyb3VwUHJvcFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgICAgICBvdXRsaW5lLFxuICAgICAgICAgIHBpbGwsXG4gICAgICAgICAgLi4ucG9zaXRpb25Jbkdyb3VwUHJvcFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9KTtcbn07XG5jb25zdCBkZXRlcm1pbmVQb3NpdGlvbiA9IChpbmRleCwgdG90YWxDaGlsZHJlbikgPT4ge1xuICByZXR1cm4gaW5kZXggPT09IDAgPyBcInN0YXJ0XCIgOiBpbmRleCA9PT0gdG90YWxDaGlsZHJlbiAtIDEgPyBcImVuZFwiIDogXCJtaWRkbGVcIjtcbn07XG5jb25zdCBCdXR0b25Hcm91cCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIG91dGxpbmUsXG4gIHBpbGwsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBpdGVtcyA9IHVzZU1lbW8oKCkgPT4gcHJvY2Vzc0NoaWxkcmVuKGNoaWxkcmVuLCBvdXRsaW5lLCBwaWxsKSwgW2NoaWxkcmVuLCBvdXRsaW5lLCBwaWxsXSk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYnV0dG9uR3JvdXAsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgcm9sZTogXCJncm91cFwiLCAuLi5wcm9wcywgY2hpbGRyZW46IGl0ZW1zIH0pO1xufTtcbkJ1dHRvbkdyb3VwLmRpc3BsYXlOYW1lID0gXCJCdXR0b24uR3JvdXBcIjtcblxuZXhwb3J0IHsgQnV0dG9uR3JvdXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJ1dHRvbkdyb3VwLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCwganN4cywgRnJhZ21lbnQgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uL1NwaW5uZXIvU3Bpbm5lci5tanMnO1xuaW1wb3J0IHsgQnV0dG9uQmFzZSB9IGZyb20gJy4vQnV0dG9uQmFzZS5tanMnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXAgfSBmcm9tICcuL0J1dHRvbkdyb3VwLm1qcyc7XG5cbmNvbnN0IEJ1dHRvbkNvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gICh7XG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIGNvbG9yID0gXCJpbmZvXCIsXG4gICAgZGlzYWJsZWQsXG4gICAgZnVsbFNpemVkLFxuICAgIGlzUHJvY2Vzc2luZyA9IGZhbHNlLFxuICAgIHByb2Nlc3NpbmdMYWJlbCA9IFwiTG9hZGluZy4uLlwiLFxuICAgIHByb2Nlc3NpbmdTcGlubmVyLFxuICAgIGdyYWRpZW50RHVvVG9uZSxcbiAgICBncmFkaWVudE1vbm9jaHJvbWUsXG4gICAgbGFiZWwsXG4gICAgb3V0bGluZSA9IGZhbHNlLFxuICAgIHBpbGwgPSBmYWxzZSxcbiAgICBwb3NpdGlvbkluR3JvdXAgPSBcIm5vbmVcIixcbiAgICBzaXplID0gXCJtZFwiLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgYnV0dG9uR3JvdXA6IGdyb3VwVGhlbWUsIGJ1dHRvbjogYnV0dG9uVGhlbWUgfSA9IGdldFRoZW1lKCk7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoYnV0dG9uVGhlbWUsIGN1c3RvbVRoZW1lKTtcbiAgICBjb25zdCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBCdXR0b25CYXNlLFxuICAgICAge1xuICAgICAgICByZWYsXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgdGhlbWUuYmFzZSxcbiAgICAgICAgICBkaXNhYmxlZCAmJiB0aGVtZS5kaXNhYmxlZCxcbiAgICAgICAgICAhZ3JhZGllbnREdW9Ub25lICYmICFncmFkaWVudE1vbm9jaHJvbWUgJiYgdGhlbWUuY29sb3JbY29sb3JdLFxuICAgICAgICAgIGdyYWRpZW50RHVvVG9uZSAmJiAhZ3JhZGllbnRNb25vY2hyb21lICYmIHRoZW1lLmdyYWRpZW50RHVvVG9uZVtncmFkaWVudER1b1RvbmVdLFxuICAgICAgICAgICFncmFkaWVudER1b1RvbmUgJiYgZ3JhZGllbnRNb25vY2hyb21lICYmIHRoZW1lLmdyYWRpZW50W2dyYWRpZW50TW9ub2Nocm9tZV0sXG4gICAgICAgICAgb3V0bGluZSAmJiAodGhlbWUub3V0bGluZS5jb2xvcltjb2xvcl0gPz8gdGhlbWUub3V0bGluZS5jb2xvci5kZWZhdWx0KSxcbiAgICAgICAgICB0aGVtZS5waWxsW3BpbGwgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICBmdWxsU2l6ZWQgJiYgdGhlbWUuZnVsbFNpemVkLFxuICAgICAgICAgIGdyb3VwVGhlbWUucG9zaXRpb25bcG9zaXRpb25Jbkdyb3VwXSxcbiAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgKSxcbiAgICAgICAgLi4udGhlaXJQcm9wcyxcbiAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgICB0aGVtZS5pbm5lci5iYXNlLFxuICAgICAgICAgICAgICB0aGVtZS5vdXRsaW5lW291dGxpbmUgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICAgICAgdGhlbWUub3V0bGluZS5waWxsW291dGxpbmUgJiYgcGlsbCA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICAgICAgICB0aGVtZS5zaXplW3NpemVdLFxuICAgICAgICAgICAgICBvdXRsaW5lICYmICF0aGVtZS5vdXRsaW5lLmNvbG9yW2NvbG9yXSAmJiB0aGVtZS5pbm5lci5vdXRsaW5lLFxuICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgJiYgdGhlbWUuaXNQcm9jZXNzaW5nLFxuICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgJiYgdGhlbWUuaW5uZXIuaXNQcm9jZXNzaW5nUGFkZGluZ1tzaXplXSxcbiAgICAgICAgICAgICAgdGhlbWUuaW5uZXIucG9zaXRpb25bcG9zaXRpb25Jbkdyb3VwXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgJiYgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuc3Bpbm5lclNsb3QsIHRoZW1lLnNwaW5uZXJMZWZ0UG9zaXRpb25bc2l6ZV0pLCBjaGlsZHJlbjogcHJvY2Vzc2luZ1NwaW5uZXIgfHwgLyogQF9fUFVSRV9fICovIGpzeChTcGlubmVyLCB7IHNpemUgfSkgfSksXG4gICAgICAgICAgICAgIHR5cGVvZiBjaGlsZHJlbiAhPT0gXCJ1bmRlZmluZWRcIiA/IGNoaWxkcmVuIDogLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYnV0dG9uLWxhYmVsXCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5sYWJlbCksIGNoaWxkcmVuOiBpc1Byb2Nlc3NpbmcgPyBwcm9jZXNzaW5nTGFiZWwgOiBsYWJlbCB9KVxuICAgICAgICAgICAgXSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfVxuICAgICk7XG4gIH1cbik7XG5CdXR0b25Db21wb25lbnQuZGlzcGxheU5hbWUgPSBcIkJ1dHRvblwiO1xuY29uc3QgQnV0dG9uID0gT2JqZWN0LmFzc2lnbihCdXR0b25Db21wb25lbnQsIHtcbiAgR3JvdXA6IEJ1dHRvbkdyb3VwXG59KTtcblxuZXhwb3J0IHsgQnV0dG9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CdXR0b24ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uL0J1dHRvbi5tanMnO1xuaW1wb3J0ICcuLi9CdXR0b24vQnV0dG9uR3JvdXAubWpzJztcblxuY29uc3QgQmFubmVyQ29sbGFwc2VCdXR0b24gPSAoeyBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBvbkNsaWNrID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgY29sbGFwc2VCdXR0b24gPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgcGFyZW50QmFubmVyID0gY29sbGFwc2VCdXR0b24uY2xvc2VzdCgnW3JvbGU9XCJiYW5uZXJcIl0nKTtcbiAgICBwYXJlbnRCYW5uZXI/LnJlbW92ZSgpO1xuICB9O1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChCdXR0b24sIHsgb25DbGljaywgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkJhbm5lckNvbGxhcHNlQnV0dG9uLmRpc3BsYXlOYW1lID0gXCJCYW5uZXIuQ29sbGFwc2VCdXR0b25cIjtcblxuZXhwb3J0IHsgQmFubmVyQ29sbGFwc2VCdXR0b24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhbm5lckNvbGxhcHNlQnV0dG9uLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IEJhbm5lckNvbGxhcHNlQnV0dG9uIH0gZnJvbSAnLi9CYW5uZXJDb2xsYXBzZUJ1dHRvbi5tanMnO1xuXG5jb25zdCBCYW5uZXJDb21wb25lbnQgPSAoeyBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1iYW5uZXJcIiwgcm9sZTogXCJiYW5uZXJcIiwgdGFiSW5kZXg6IC0xLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuQmFubmVyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJCYW5uZXJcIjtcbmNvbnN0IEJhbm5lciA9IE9iamVjdC5hc3NpZ24oQmFubmVyQ29tcG9uZW50LCB7XG4gIENvbGxhcHNlQnV0dG9uOiBCYW5uZXJDb2xsYXBzZUJ1dHRvblxufSk7XG5cbmV4cG9ydCB7IEJhbm5lciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmFubmVyLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIaU91dGxpbmVDaGV2cm9uUmlnaHQgfSBmcm9tICdyZWFjdC1pY29ucy9oaSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEJyZWFkY3J1bWJJdGVtID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgaHJlZiwgaWNvbjogSWNvbiwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IGlzTGluayA9IHR5cGVvZiBocmVmICE9PSBcInVuZGVmaW5lZFwiO1xuICAgIGNvbnN0IENvbXBvbmVudCA9IGlzTGluayA/IFwiYVwiIDogXCJzcGFuXCI7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5icmVhZGNydW1iLml0ZW0sIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJsaVwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goSGlPdXRsaW5lQ2hldnJvblJpZ2h0LCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5jaGV2cm9uLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYnJlYWRjcnVtYi1zZXBhcmF0b3JcIiB9KSxcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgICBDb21wb25lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGVtZS5ocmVmW2lzTGluayA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1icmVhZGNydW1iLWl0ZW1cIixcbiAgICAgICAgICBocmVmLFxuICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbiB9KSxcbiAgICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApXG4gICAgXSB9KTtcbiAgfVxuKTtcbkJyZWFkY3J1bWJJdGVtLmRpc3BsYXlOYW1lID0gXCJCcmVhZGNydW1iLkl0ZW1cIjtcblxuZXhwb3J0IHsgQnJlYWRjcnVtYkl0ZW0gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJyZWFkY3J1bWJJdGVtLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEJyZWFkY3J1bWJJdGVtIH0gZnJvbSAnLi9CcmVhZGNydW1iSXRlbS5tanMnO1xuXG5jb25zdCBCcmVhZGNydW1iQ29tcG9uZW50ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYnJlYWRjcnVtYi5yb290LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwibmF2XCIsIHsgXCJhcmlhLWxhYmVsXCI6IFwiQnJlYWRjcnVtYlwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwib2xcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxpc3QsIGNoaWxkcmVuIH0pIH0pO1xufTtcbkJyZWFkY3J1bWJDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIkJyZWFkY3J1bWJcIjtcbmNvbnN0IEJyZWFkY3J1bWIgPSBPYmplY3QuYXNzaWduKEJyZWFkY3J1bWJDb21wb25lbnQsIHtcbiAgSXRlbTogQnJlYWRjcnVtYkl0ZW1cbn0pO1xuXG5leHBvcnQgeyBCcmVhZGNydW1iIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CcmVhZGNydW1iLm1qcy5tYXBcbiIsIi8qIVxuXHRDb3B5cmlnaHQgKGMpIDIwMTggSmVkIFdhdHNvbi5cblx0TGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcblx0aHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVzICgpIHtcblx0XHR2YXIgY2xhc3NlcyA9ICcnO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoYXJnKSB7XG5cdFx0XHRcdGNsYXNzZXMgPSBhcHBlbmRDbGFzcyhjbGFzc2VzLCBwYXJzZVZhbHVlKGFyZykpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VWYWx1ZSAoYXJnKSB7XG5cdFx0aWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG5cdFx0XHRyZXR1cm4gYXJnO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgYXJnICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblxuXHRcdGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZyk7XG5cdFx0fVxuXG5cdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0cmV0dXJuIGFyZy50b1N0cmluZygpO1xuXHRcdH1cblxuXHRcdHZhciBjbGFzc2VzID0gJyc7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdGNsYXNzZXMgPSBhcHBlbmRDbGFzcyhjbGFzc2VzLCBrZXkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzO1xuXHR9XG5cblx0ZnVuY3Rpb24gYXBwZW5kQ2xhc3MgKHZhbHVlLCBuZXdDbGFzcykge1xuXHRcdGlmICghbmV3Q2xhc3MpIHtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cdFxuXHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0cmV0dXJuIHZhbHVlICsgJyAnICsgbmV3Q2xhc3M7XG5cdFx0fVxuXHRcblx0XHRyZXR1cm4gdmFsdWUgKyBuZXdDbGFzcztcblx0fVxuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdGNsYXNzTmFtZXMuZGVmYXVsdCA9IGNsYXNzTmFtZXM7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lXG5cdFx0ZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcblx0fVxufSgpKTtcbiIsImZ1bmN0aW9uIGRlYm91bmNlKGZ1bmN0aW9uXywgd2FpdCA9IDEwMCwgb3B0aW9ucyA9IHt9KSB7XG5cdGlmICh0eXBlb2YgZnVuY3Rpb25fICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgdGhlIGZpcnN0IHBhcmFtZXRlciB0byBiZSBhIGZ1bmN0aW9uLCBnb3QgXFxgJHt0eXBlb2YgZnVuY3Rpb25ffVxcYC5gKTtcblx0fVxuXG5cdGlmICh3YWl0IDwgMCkge1xuXHRcdHRocm93IG5ldyBSYW5nZUVycm9yKCdgd2FpdGAgbXVzdCBub3QgYmUgbmVnYXRpdmUuJyk7XG5cdH1cblxuXHQvLyBUT0RPOiBEZXByZWNhdGUgdGhlIGJvb2xlYW4gcGFyYW1ldGVyIGF0IHNvbWUgcG9pbnQuXG5cdGNvbnN0IHtpbW1lZGlhdGV9ID0gdHlwZW9mIG9wdGlvbnMgPT09ICdib29sZWFuJyA/IHtpbW1lZGlhdGU6IG9wdGlvbnN9IDogb3B0aW9ucztcblxuXHRsZXQgc3RvcmVkQ29udGV4dDtcblx0bGV0IHN0b3JlZEFyZ3VtZW50cztcblx0bGV0IHRpbWVvdXRJZDtcblx0bGV0IHRpbWVzdGFtcDtcblx0bGV0IHJlc3VsdDtcblxuXHRmdW5jdGlvbiBydW4oKSB7XG5cdFx0Y29uc3QgY2FsbENvbnRleHQgPSBzdG9yZWRDb250ZXh0O1xuXHRcdGNvbnN0IGNhbGxBcmd1bWVudHMgPSBzdG9yZWRBcmd1bWVudHM7XG5cdFx0c3RvcmVkQ29udGV4dCA9IHVuZGVmaW5lZDtcblx0XHRzdG9yZWRBcmd1bWVudHMgPSB1bmRlZmluZWQ7XG5cdFx0cmVzdWx0ID0gZnVuY3Rpb25fLmFwcGx5KGNhbGxDb250ZXh0LCBjYWxsQXJndW1lbnRzKTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0ZnVuY3Rpb24gbGF0ZXIoKSB7XG5cdFx0Y29uc3QgbGFzdCA9IERhdGUubm93KCkgLSB0aW1lc3RhbXA7XG5cblx0XHRpZiAobGFzdCA8IHdhaXQgJiYgbGFzdCA+PSAwKSB7XG5cdFx0XHR0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0IC0gbGFzdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRpbWVvdXRJZCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0aWYgKCFpbW1lZGlhdGUpIHtcblx0XHRcdFx0cmVzdWx0ID0gcnVuKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgZGVib3VuY2VkID0gZnVuY3Rpb24gKC4uLmFyZ3VtZW50c18pIHtcblx0XHRpZiAoc3RvcmVkQ29udGV4dCAmJiB0aGlzICE9PSBzdG9yZWRDb250ZXh0KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0RlYm91bmNlZCBtZXRob2QgY2FsbGVkIHdpdGggZGlmZmVyZW50IGNvbnRleHRzLicpO1xuXHRcdH1cblxuXHRcdHN0b3JlZENvbnRleHQgPSB0aGlzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHVuaWNvcm4vbm8tdGhpcy1hc3NpZ25tZW50XG5cdFx0c3RvcmVkQXJndW1lbnRzID0gYXJndW1lbnRzXztcblx0XHR0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXG5cdFx0Y29uc3QgY2FsbE5vdyA9IGltbWVkaWF0ZSAmJiAhdGltZW91dElkO1xuXG5cdFx0aWYgKCF0aW1lb3V0SWQpIHtcblx0XHRcdHRpbWVvdXRJZCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpO1xuXHRcdH1cblxuXHRcdGlmIChjYWxsTm93KSB7XG5cdFx0XHRyZXN1bHQgPSBydW4oKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9O1xuXG5cdGRlYm91bmNlZC5jbGVhciA9ICgpID0+IHtcblx0XHRpZiAoIXRpbWVvdXRJZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuXHRcdHRpbWVvdXRJZCA9IHVuZGVmaW5lZDtcblx0fTtcblxuXHRkZWJvdW5jZWQuZmx1c2ggPSAoKSA9PiB7XG5cdFx0aWYgKCF0aW1lb3V0SWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRkZWJvdW5jZWQudHJpZ2dlcigpO1xuXHR9O1xuXG5cdGRlYm91bmNlZC50cmlnZ2VyID0gKCkgPT4ge1xuXHRcdHJlc3VsdCA9IHJ1bigpO1xuXG5cdFx0ZGVib3VuY2VkLmNsZWFyKCk7XG5cdH07XG5cblx0cmV0dXJuIGRlYm91bmNlZDtcbn1cblxuLy8gQWRkcyBjb21wYXRpYmlsaXR5IGZvciBFUyBtb2R1bGVzXG5tb2R1bGUuZXhwb3J0cy5kZWJvdW5jZSA9IGRlYm91bmNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnZGVib3VuY2UnO1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5cbnZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19wdWJsaWNGaWVsZCA9IChvYmosIGtleSwgdmFsdWUpID0+IF9fZGVmTm9ybWFsUHJvcChvYmosIHR5cGVvZiBrZXkgIT09IFwic3ltYm9sXCIgPyBrZXkgKyBcIlwiIDoga2V5LCB2YWx1ZSk7XG5jb25zdCBTQ1JPTExfRU5EX0RFQk9VTkNFID0gMzAwO1xuY29uc3QgTEVGVF9CVVRUT04gPSAwO1xuY2xhc3MgU2Nyb2xsQ29udGFpbmVyIGV4dGVuZHMgUHVyZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJjb250YWluZXJcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInNjcm9sbGluZ1wiKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwic3RhcnRlZFwiKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwicHJlc3NlZFwiKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiaXNNb2JpbGVcIiwgZmFsc2UpO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJpbnRlcm5hbFwiKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwic2Nyb2xsTGVmdFwiKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwic2Nyb2xsVG9wXCIpO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJjbGllbnRYXCIpO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJjbGllbnRZXCIpO1xuICAgIC8vIFNpbXVsYXRlICdvbkVuZFNjcm9sbCcgZXZlbnQgdGhhdCBmaXJlcyB3aGVuIHNjcm9sbGluZyBpcyBzdG9wcGVkXG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcIm9uRW5kU2Nyb2xsXCIsICgpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsaW5nID0gZmFsc2U7XG4gICAgICBpZiAoIXRoaXMucHJlc3NlZCAmJiB0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRW5kKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcIm9uU2Nyb2xsXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmN1cnJlbnQ7XG4gICAgICBpZiAoY29udGFpbmVyLnNjcm9sbExlZnQgIT09IHRoaXMuc2Nyb2xsTGVmdCB8fCBjb250YWluZXIuc2Nyb2xsVG9wICE9PSB0aGlzLnNjcm9sbFRvcCkge1xuICAgICAgICB0aGlzLnNjcm9sbGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucHJvY2Vzc1Njcm9sbCgpO1xuICAgICAgICB0aGlzLm9uRW5kU2Nyb2xsKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcIm9uVG91Y2hTdGFydFwiLCAoZSkgPT4ge1xuICAgICAgY29uc3QgeyBuYXRpdmVNb2JpbGVTY3JvbGwgfSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAodGhpcy5pc0RyYWdnYWJsZShlLnRhcmdldCkpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbCA9IHRydWU7XG4gICAgICAgIGlmIChuYXRpdmVNb2JpbGVTY3JvbGwgJiYgdGhpcy5zY3JvbGxpbmcpIHtcbiAgICAgICAgICB0aGlzLnByZXNzZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRvdWNoID0gZS50b3VjaGVzWzBdO1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0NsaWNrKHRvdWNoLmNsaWVudFgsIHRvdWNoLmNsaWVudFkpO1xuICAgICAgICAgIGlmICghbmF0aXZlTW9iaWxlU2Nyb2xsICYmIHRoaXMucHJvcHMuc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvblRvdWNoRW5kXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgbmF0aXZlTW9iaWxlU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHRoaXMucHJlc3NlZCkge1xuICAgICAgICBpZiAodGhpcy5zdGFydGVkICYmICghdGhpcy5zY3JvbGxpbmcgfHwgIW5hdGl2ZU1vYmlsZVNjcm9sbCkpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NFbmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnByZXNzZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcIm9uVG91Y2hNb3ZlXCIsIChlKSA9PiB7XG4gICAgICBjb25zdCB7IG5hdGl2ZU1vYmlsZVNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICh0aGlzLnByZXNzZWQgJiYgKCFuYXRpdmVNb2JpbGVTY3JvbGwgfHwgIXRoaXMuaXNNb2JpbGUpKSB7XG4gICAgICAgIGNvbnN0IHRvdWNoID0gZS50b3VjaGVzWzBdO1xuICAgICAgICBpZiAodG91Y2gpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NNb3ZlKHRvdWNoLmNsaWVudFgsIHRvdWNoLmNsaWVudFkpO1xuICAgICAgICB9XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvbk1vdXNlRG93blwiLCAoZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNEcmFnZ2FibGUoZS50YXJnZXQpICYmIHRoaXMuaXNTY3JvbGxhYmxlKCkpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnByb3BzPy5idXR0b25zPy5pbmRleE9mKGUuYnV0dG9uKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NDbGljayhlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGlmICh0aGlzLnByb3BzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwib25Nb3VzZU1vdmVcIiwgKGUpID0+IHtcbiAgICAgIGlmICh0aGlzLnByZXNzZWQpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzTW92ZShlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvbk1vdXNlVXBcIiwgKGUpID0+IHtcbiAgICAgIGlmICh0aGlzLnByZXNzZWQpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnRlZCkge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0VuZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaW50ZXJuYWwgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnByZXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25DbGljaykge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNsaWNrKGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNvbnRhaW5lciA9IFJlYWN0LmNyZWF0ZVJlZigpO1xuICAgIHRoaXMub25FbmRTY3JvbGwgPSBkZWJvdW5jZSh0aGlzLm9uRW5kU2Nyb2xsLCBTQ1JPTExfRU5EX0RFQk9VTkNFKTtcbiAgICB0aGlzLnNjcm9sbGluZyA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMucHJlc3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuaW50ZXJuYWwgPSBmYWxzZTtcbiAgICB0aGlzLmdldFJlZiA9IHRoaXMuZ2V0UmVmLmJpbmQodGhpcyk7XG4gIH1cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3QgeyBuYXRpdmVNb2JpbGVTY3JvbGwgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3VycmVudDtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5vbk1vdXNlVXApO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25Nb3VzZU1vdmUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRoaXMub25Ub3VjaE1vdmUsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLCB0aGlzLm9uVG91Y2hFbmQpO1xuICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCB0aGlzLm9uVG91Y2hTdGFydCwge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9KTtcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLm9uTW91c2VEb3duLCB7XG4gICAgICBwYXNzaXZlOiBmYWxzZVxuICAgIH0pO1xuICAgIGlmIChuYXRpdmVNb2JpbGVTY3JvbGwpIHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB0aGlzLmlzTW9iaWxlRGV2aWNlKCk7XG4gICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLm9uTW91c2VVcCk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vbk1vdXNlTW92ZSk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdGhpcy5vblRvdWNoTW92ZSk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLCB0aGlzLm9uVG91Y2hFbmQpO1xuICB9XG4gIGdldEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmN1cnJlbnQ7XG4gIH1cbiAgaXNNb2JpbGVEZXZpY2UoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cub3JpZW50YXRpb24gIT09IFwidW5kZWZpbmVkXCIgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiSUVNb2JpbGVcIikgIT09IC0xO1xuICB9XG4gIGlzRHJhZ2dhYmxlKHRhcmdldCkge1xuICAgIGNvbnN0IGlnbm9yZUVsZW1lbnRzID0gdGhpcy5wcm9wcy5pZ25vcmVFbGVtZW50cztcbiAgICBpZiAoaWdub3JlRWxlbWVudHMpIHtcbiAgICAgIGNvbnN0IGNsb3Nlc3QgPSB0YXJnZXQuY2xvc2VzdChpZ25vcmVFbGVtZW50cyk7XG4gICAgICByZXR1cm4gY2xvc2VzdCA9PT0gbnVsbCB8fCBjbG9zZXN0LmNvbnRhaW5zKHRoaXMuZ2V0RWxlbWVudCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIGlzU2Nyb2xsYWJsZSgpIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICAgIHJldHVybiBjb250YWluZXIgJiYgKGNvbnRhaW5lci5zY3JvbGxXaWR0aCA+IGNvbnRhaW5lci5jbGllbnRXaWR0aCB8fCBjb250YWluZXIuc2Nyb2xsSGVpZ2h0ID4gY29udGFpbmVyLmNsaWVudEhlaWdodCk7XG4gIH1cbiAgcHJvY2Vzc0NsaWNrKGNsaWVudFgsIGNsaWVudFkpIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICAgIHRoaXMuc2Nyb2xsTGVmdCA9IGNvbnRhaW5lcj8uc2Nyb2xsTGVmdDtcbiAgICB0aGlzLnNjcm9sbFRvcCA9IGNvbnRhaW5lcj8uc2Nyb2xsVG9wO1xuICAgIHRoaXMuY2xpZW50WCA9IGNsaWVudFg7XG4gICAgdGhpcy5jbGllbnRZID0gY2xpZW50WTtcbiAgICB0aGlzLnByZXNzZWQgPSB0cnVlO1xuICB9XG4gIHByb2Nlc3NTdGFydChjaGFuZ2VDdXJzb3IgPSB0cnVlKSB7XG4gICAgY29uc3QgeyBvblN0YXJ0U2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgIHRoaXMuc3RhcnRlZCA9IHRydWU7XG4gICAgaWYgKGNoYW5nZUN1cnNvcikge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY3Vyc29yLWdyYWJcIik7XG4gICAgfVxuICAgIGlmIChvblN0YXJ0U2Nyb2xsKSB7XG4gICAgICBvblN0YXJ0U2Nyb2xsKHtcbiAgICAgICAgZXh0ZXJuYWw6ICF0aGlzLmludGVybmFsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICB9XG4gIC8vIFByb2Nlc3MgbmF0aXZlIHNjcm9sbCAoc2Nyb2xsYmFyLCBtb2JpbGUgc2Nyb2xsKVxuICBwcm9jZXNzU2Nyb2xsKCkge1xuICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgIGNvbnN0IHsgb25TY3JvbGwgfSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAob25TY3JvbGwpIHtcbiAgICAgICAgb25TY3JvbGwoe1xuICAgICAgICAgIGV4dGVybmFsOiAhdGhpcy5pbnRlcm5hbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9jZXNzU3RhcnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICAvLyBQcm9jZXNzIG5vbi1uYXRpdmUgc2Nyb2xsXG4gIHByb2Nlc3NNb3ZlKG5ld0NsaWVudFgsIG5ld0NsaWVudFkpIHtcbiAgICBjb25zdCB7IGhvcml6b250YWwsIHZlcnRpY2FsLCBhY3RpdmF0aW9uRGlzdGFuY2UsIG9uU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmN1cnJlbnQ7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgIGlmIChob3Jpem9udGFsICYmIE1hdGguYWJzKG5ld0NsaWVudFggLSB0aGlzLmNsaWVudFgpID4gYWN0aXZhdGlvbkRpc3RhbmNlIHx8IHZlcnRpY2FsICYmIE1hdGguYWJzKG5ld0NsaWVudFkgLSB0aGlzLmNsaWVudFkpID4gYWN0aXZhdGlvbkRpc3RhbmNlKSB7XG4gICAgICAgIHRoaXMuY2xpZW50WCA9IG5ld0NsaWVudFg7XG4gICAgICAgIHRoaXMuY2xpZW50WSA9IG5ld0NsaWVudFk7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N0YXJ0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChob3Jpem9udGFsKSB7XG4gICAgICAgIGNvbnRhaW5lci5zY3JvbGxMZWZ0IC09IG5ld0NsaWVudFggLSB0aGlzLmNsaWVudFg7XG4gICAgICB9XG4gICAgICBpZiAodmVydGljYWwpIHtcbiAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCAtPSBuZXdDbGllbnRZIC0gdGhpcy5jbGllbnRZO1xuICAgICAgfVxuICAgICAgaWYgKG9uU2Nyb2xsKSB7XG4gICAgICAgIG9uU2Nyb2xsKHsgZXh0ZXJuYWw6ICF0aGlzLmludGVybmFsIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5jbGllbnRYID0gbmV3Q2xpZW50WDtcbiAgICAgIHRoaXMuY2xpZW50WSA9IG5ld0NsaWVudFk7XG4gICAgICB0aGlzLnNjcm9sbExlZnQgPSBjb250YWluZXIuc2Nyb2xsTGVmdDtcbiAgICAgIHRoaXMuc2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgICB9XG4gIH1cbiAgcHJvY2Vzc0VuZCgpIHtcbiAgICBjb25zdCB7IG9uRW5kU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmN1cnJlbnQ7XG4gICAgaWYgKGNvbnRhaW5lciAmJiBvbkVuZFNjcm9sbCkge1xuICAgICAgb25FbmRTY3JvbGwoe1xuICAgICAgICBleHRlcm5hbDogIXRoaXMuaW50ZXJuYWxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnByZXNzZWQgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXJ0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNjcm9sbGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaW50ZXJuYWwgPSBmYWxzZTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJjdXJzb3ItZ3JhYlwiKTtcbiAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gIH1cbiAgZ2V0UmVmKGVsKSB7XG4gICAgW3RoaXMuY29udGFpbmVyLCB0aGlzLnByb3BzLmlubmVyUmVmXS5mb3JFYWNoKChyZWYpID0+IHtcbiAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZWYgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHJlZihlbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmLmN1cnJlbnQgPSBlbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBkcmFnZ2luZ0NsYXNzTmFtZSwgY2xhc3NOYW1lLCBzdHlsZSwgaGlkZVNjcm9sbGJhcnMgfSA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImRpdlwiLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoY2xhc3NOYW1lLCB0aGlzLnByZXNzZWQgJiYgZHJhZ2dpbmdDbGFzc05hbWUsIHtcbiAgICAgICAgICBcIiFzY3JvbGwtYXV0byBbJj4qXTpwb2ludGVyLWV2ZW50cy1ub25lIFsmPipdOmN1cnNvci1ncmFiXCI6IHRoaXMucHJlc3NlZCxcbiAgICAgICAgICBcIm92ZXJmbG93LWF1dG9cIjogdGhpcy5pc01vYmlsZSxcbiAgICAgICAgICBcIm92ZXJmbG93LWhpZGRlbiAhb3ZlcmZsb3cteC1oaWRkZW4gW292ZXJmbG93Oi1tb3otc2Nyb2xsYmFycy1ub25lXSBbc2Nyb2xsYmFyLXdpZHRoOm5vbmVdXCI6IGhpZGVTY3JvbGxiYXJzLFxuICAgICAgICAgIFwiWyY6Oi13ZWJraXQtc2Nyb2xsYmFyXTpbLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmUgIWltcG9ydGFudF0gWyY6Oi13ZWJraXQtc2Nyb2xsYmFyXTohaGlkZGVuIFsmOjotd2Via2l0LXNjcm9sbGJhcl06IWgtMCBbJjo6LXdlYmtpdC1zY3JvbGxiYXJdOiF3LTAgWyY6Oi13ZWJraXQtc2Nyb2xsYmFyXTohYmctdHJhbnNwYXJlbnRcIjogaGlkZVNjcm9sbGJhcnNcbiAgICAgICAgfSksXG4gICAgICAgIHN0eWxlLFxuICAgICAgICByZWY6IHRoaXMuZ2V0UmVmLFxuICAgICAgICBvblNjcm9sbDogdGhpcy5vblNjcm9sbCxcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgIH1cbiAgICApO1xuICB9XG59XG5fX3B1YmxpY0ZpZWxkKFNjcm9sbENvbnRhaW5lciwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBuYXRpdmVNb2JpbGVTY3JvbGw6IHRydWUsXG4gIGhpZGVTY3JvbGxiYXJzOiB0cnVlLFxuICBhY3RpdmF0aW9uRGlzdGFuY2U6IDEwLFxuICB2ZXJ0aWNhbDogdHJ1ZSxcbiAgaG9yaXpvbnRhbDogdHJ1ZSxcbiAgc3RvcFByb3BhZ2F0aW9uOiBmYWxzZSxcbiAgc3R5bGU6IHt9LFxuICBidXR0b25zOiBbTEVGVF9CVVRUT05dXG59KTtcblxuZXhwb3J0IHsgU2Nyb2xsQ29udGFpbmVyIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IENoZWNrYm94ID0gZm9yd2FyZFJlZihcbiAgKHsgY2xhc3NOYW1lLCBjb2xvciA9IFwiZGVmYXVsdFwiLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5jaGVja2JveCwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJpbnB1dFwiLFxuICAgICAge1xuICAgICAgICByZWYsXG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgdGhlbWUucm9vdC5jb2xvcltjb2xvcl0sIGNsYXNzTmFtZSksXG4gICAgICAgIC4uLnByb3BzXG4gICAgICB9XG4gICAgKTtcbiAgfVxuKTtcbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gXCJDaGVja2JveFwiO1xuXG5leHBvcnQgeyBDaGVja2JveCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2hlY2tib3gubWpzLm1hcFxuIiwiaW1wb3J0IHsgaXNTaGFkb3dSb290LCBpc0hUTUxFbGVtZW50IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5cbmZ1bmN0aW9uIGFjdGl2ZUVsZW1lbnQoZG9jKSB7XG4gIGxldCBhY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7XG4gIHdoaWxlICgoKF9hY3RpdmVFbGVtZW50ID0gYWN0aXZlRWxlbWVudCkgPT0gbnVsbCB8fCAoX2FjdGl2ZUVsZW1lbnQgPSBfYWN0aXZlRWxlbWVudC5zaGFkb3dSb290KSA9PSBudWxsID8gdm9pZCAwIDogX2FjdGl2ZUVsZW1lbnQuYWN0aXZlRWxlbWVudCkgIT0gbnVsbCkge1xuICAgIHZhciBfYWN0aXZlRWxlbWVudDtcbiAgICBhY3RpdmVFbGVtZW50ID0gYWN0aXZlRWxlbWVudC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIGFjdGl2ZUVsZW1lbnQ7XG59XG5mdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIGlmICghcGFyZW50IHx8ICFjaGlsZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlID09IG51bGwgPyB2b2lkIDAgOiBjaGlsZC5nZXRSb290Tm9kZSgpO1xuXG4gIC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcbiAgaWYgKHBhcmVudC5jb250YWlucyhjaGlsZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGlmIChyb290Tm9kZSAmJiBpc1NoYWRvd1Jvb3Qocm9vdE5vZGUpKSB7XG4gICAgbGV0IG5leHQgPSBjaGlsZDtcbiAgICB3aGlsZSAobmV4dCkge1xuICAgICAgaWYgKHBhcmVudCA9PT0gbmV4dCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5leHQgPSBuZXh0LnBhcmVudE5vZGUgfHwgbmV4dC5ob3N0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEdpdmUgdXAsIHRoZSByZXN1bHQgaXMgZmFsc2VcbiAgcmV0dXJuIGZhbHNlO1xufVxuLy8gQXZvaWQgQ2hyb21lIERldlRvb2xzIGJsdWUgd2FybmluZy5cbmZ1bmN0aW9uIGdldFBsYXRmb3JtKCkge1xuICBjb25zdCB1YURhdGEgPSBuYXZpZ2F0b3IudXNlckFnZW50RGF0YTtcbiAgaWYgKHVhRGF0YSAhPSBudWxsICYmIHVhRGF0YS5wbGF0Zm9ybSkge1xuICAgIHJldHVybiB1YURhdGEucGxhdGZvcm07XG4gIH1cbiAgcmV0dXJuIG5hdmlnYXRvci5wbGF0Zm9ybTtcbn1cbmZ1bmN0aW9uIGdldFVzZXJBZ2VudCgpIHtcbiAgY29uc3QgdWFEYXRhID0gbmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7XG4gIGlmICh1YURhdGEgJiYgQXJyYXkuaXNBcnJheSh1YURhdGEuYnJhbmRzKSkge1xuICAgIHJldHVybiB1YURhdGEuYnJhbmRzLm1hcChfcmVmID0+IHtcbiAgICAgIGxldCB7XG4gICAgICAgIGJyYW5kLFxuICAgICAgICB2ZXJzaW9uXG4gICAgICB9ID0gX3JlZjtcbiAgICAgIHJldHVybiBicmFuZCArIFwiL1wiICsgdmVyc2lvbjtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH1cbiAgcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQ7XG59XG5cbi8vIExpY2Vuc2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS9yZWFjdC1zcGVjdHJ1bS9ibG9iL2IzNWQ1YzAyZmU5MDBiYWRjY2QwY2YxYThmMjNiYjU5MzQxOWYyMzgvcGFja2FnZXMvQHJlYWN0LWFyaWEvdXRpbHMvc3JjL2lzVmlydHVhbEV2ZW50LnRzXG5mdW5jdGlvbiBpc1ZpcnR1YWxDbGljayhldmVudCkge1xuICAvLyBGSVhNRTogRmlyZWZveCBpcyBub3cgZW1pdHRpbmcgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGZvciBgbW96SW5wdXRTb3VyY2VgLlxuICAvLyBUcnkgdG8gZmluZCBhIHdvcmthcm91bmQgZm9yIHRoaXMuIGByZWFjdC1hcmlhYCBzb3VyY2Ugc3RpbGwgaGFzIHRoZSBjaGVjay5cbiAgaWYgKGV2ZW50Lm1veklucHV0U291cmNlID09PSAwICYmIGV2ZW50LmlzVHJ1c3RlZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpc0FuZHJvaWQoKSAmJiBldmVudC5wb2ludGVyVHlwZSkge1xuICAgIHJldHVybiBldmVudC50eXBlID09PSAnY2xpY2snICYmIGV2ZW50LmJ1dHRvbnMgPT09IDE7XG4gIH1cbiAgcmV0dXJuIGV2ZW50LmRldGFpbCA9PT0gMCAmJiAhZXZlbnQucG9pbnRlclR5cGU7XG59XG5mdW5jdGlvbiBpc1ZpcnR1YWxQb2ludGVyRXZlbnQoZXZlbnQpIHtcbiAgaWYgKGlzSlNET00oKSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gIWlzQW5kcm9pZCgpICYmIGV2ZW50LndpZHRoID09PSAwICYmIGV2ZW50LmhlaWdodCA9PT0gMCB8fCBpc0FuZHJvaWQoKSAmJiBldmVudC53aWR0aCA9PT0gMSAmJiBldmVudC5oZWlnaHQgPT09IDEgJiYgZXZlbnQucHJlc3N1cmUgPT09IDAgJiYgZXZlbnQuZGV0YWlsID09PSAwICYmIGV2ZW50LnBvaW50ZXJUeXBlID09PSAnbW91c2UnIHx8XG4gIC8vIGlPUyBWb2ljZU92ZXIgcmV0dXJucyAwLjMzM+KAoiBmb3Igd2lkdGgvaGVpZ2h0LlxuICBldmVudC53aWR0aCA8IDEgJiYgZXZlbnQuaGVpZ2h0IDwgMSAmJiBldmVudC5wcmVzc3VyZSA9PT0gMCAmJiBldmVudC5kZXRhaWwgPT09IDAgJiYgZXZlbnQucG9pbnRlclR5cGUgPT09ICd0b3VjaCc7XG59XG5mdW5jdGlvbiBpc1NhZmFyaSgpIHtcbiAgLy8gQ2hyb21lIERldlRvb2xzIGRvZXMgbm90IGNvbXBsYWluIGFib3V0IG5hdmlnYXRvci52ZW5kb3JcbiAgcmV0dXJuIC9hcHBsZS9pLnRlc3QobmF2aWdhdG9yLnZlbmRvcik7XG59XG5mdW5jdGlvbiBpc0FuZHJvaWQoKSB7XG4gIGNvbnN0IHJlID0gL2FuZHJvaWQvaTtcbiAgcmV0dXJuIHJlLnRlc3QoZ2V0UGxhdGZvcm0oKSkgfHwgcmUudGVzdChnZXRVc2VyQWdlbnQoKSk7XG59XG5mdW5jdGlvbiBpc01hYygpIHtcbiAgcmV0dXJuIGdldFBsYXRmb3JtKCkudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdtYWMnKSAmJiAhbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzO1xufVxuZnVuY3Rpb24gaXNKU0RPTSgpIHtcbiAgcmV0dXJuIGdldFVzZXJBZ2VudCgpLmluY2x1ZGVzKCdqc2RvbS8nKTtcbn1cbmZ1bmN0aW9uIGlzTW91c2VMaWtlUG9pbnRlclR5cGUocG9pbnRlclR5cGUsIHN0cmljdCkge1xuICAvLyBPbiBzb21lIExpbnV4IG1hY2hpbmVzIHdpdGggQ2hyb21pdW0sIG1vdXNlIGlucHV0cyByZXR1cm4gYSBgcG9pbnRlclR5cGVgXG4gIC8vIG9mIFwicGVuXCI6IGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjAxNVxuICBjb25zdCB2YWx1ZXMgPSBbJ21vdXNlJywgJ3BlbiddO1xuICBpZiAoIXN0cmljdCkge1xuICAgIHZhbHVlcy5wdXNoKCcnLCB1bmRlZmluZWQpO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXMocG9pbnRlclR5cGUpO1xufVxuZnVuY3Rpb24gaXNSZWFjdEV2ZW50KGV2ZW50KSB7XG4gIHJldHVybiAnbmF0aXZlRXZlbnQnIGluIGV2ZW50O1xufVxuZnVuY3Rpb24gaXNSb290RWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoJ2h0bWwsYm9keScpO1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gKG5vZGUgPT0gbnVsbCA/IHZvaWQgMCA6IG5vZGUub3duZXJEb2N1bWVudCkgfHwgZG9jdW1lbnQ7XG59XG5mdW5jdGlvbiBpc0V2ZW50VGFyZ2V0V2l0aGluKGV2ZW50LCBub2RlKSB7XG4gIGlmIChub2RlID09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCdjb21wb3NlZFBhdGgnIGluIGV2ZW50KSB7XG4gICAgcmV0dXJuIGV2ZW50LmNvbXBvc2VkUGF0aCgpLmluY2x1ZGVzKG5vZGUpO1xuICB9XG5cbiAgLy8gVFMgdGhpbmtzIGBldmVudGAgaXMgb2YgdHlwZSBuZXZlciBhcyBpdCBhc3N1bWVzIGFsbCBicm93c2VycyBzdXBwb3J0IGNvbXBvc2VkUGF0aCwgYnV0IGJyb3dzZXJzIHdpdGhvdXQgc2hhZG93IGRvbSBkb24ndFxuICBjb25zdCBlID0gZXZlbnQ7XG4gIHJldHVybiBlLnRhcmdldCAhPSBudWxsICYmIG5vZGUuY29udGFpbnMoZS50YXJnZXQpO1xufVxuZnVuY3Rpb24gZ2V0VGFyZ2V0KGV2ZW50KSB7XG4gIGlmICgnY29tcG9zZWRQYXRoJyBpbiBldmVudCkge1xuICAgIHJldHVybiBldmVudC5jb21wb3NlZFBhdGgoKVswXTtcbiAgfVxuXG4gIC8vIFRTIHRoaW5rcyBgZXZlbnRgIGlzIG9mIHR5cGUgbmV2ZXIgYXMgaXQgYXNzdW1lcyBhbGwgYnJvd3NlcnMgc3VwcG9ydFxuICAvLyBgY29tcG9zZWRQYXRoKClgLCBidXQgYnJvd3NlcnMgd2l0aG91dCBzaGFkb3cgRE9NIGRvbid0LlxuICByZXR1cm4gZXZlbnQudGFyZ2V0O1xufVxuY29uc3QgVFlQRUFCTEVfU0VMRUNUT1IgPSBcImlucHV0Om5vdChbdHlwZT0naGlkZGVuJ10pOm5vdChbZGlzYWJsZWRdKSxcIiArIFwiW2NvbnRlbnRlZGl0YWJsZV06bm90KFtjb250ZW50ZWRpdGFibGU9J2ZhbHNlJ10pLHRleHRhcmVhOm5vdChbZGlzYWJsZWRdKVwiO1xuZnVuY3Rpb24gaXNUeXBlYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gaXNIVE1MRWxlbWVudChlbGVtZW50KSAmJiBlbGVtZW50Lm1hdGNoZXMoVFlQRUFCTEVfU0VMRUNUT1IpO1xufVxuZnVuY3Rpb24gc3RvcEV2ZW50KGV2ZW50KSB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xufVxuZnVuY3Rpb24gaXNUeXBlYWJsZUNvbWJvYm94KGVsZW1lbnQpIHtcbiAgaWYgKCFlbGVtZW50KSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZSgncm9sZScpID09PSAnY29tYm9ib3gnICYmIGlzVHlwZWFibGVFbGVtZW50KGVsZW1lbnQpO1xufVxuXG5leHBvcnQgeyBUWVBFQUJMRV9TRUxFQ1RPUiwgYWN0aXZlRWxlbWVudCwgY29udGFpbnMsIGdldERvY3VtZW50LCBnZXRQbGF0Zm9ybSwgZ2V0VGFyZ2V0LCBnZXRVc2VyQWdlbnQsIGlzQW5kcm9pZCwgaXNFdmVudFRhcmdldFdpdGhpbiwgaXNKU0RPTSwgaXNNYWMsIGlzTW91c2VMaWtlUG9pbnRlclR5cGUsIGlzUmVhY3RFdmVudCwgaXNSb290RWxlbWVudCwgaXNTYWZhcmksIGlzVHlwZWFibGVDb21ib2JveCwgaXNUeXBlYWJsZUVsZW1lbnQsIGlzVmlydHVhbENsaWNrLCBpc1ZpcnR1YWxQb2ludGVyRXZlbnQsIHN0b3BFdmVudCB9O1xuIiwiLyohXG4qIHRhYmJhYmxlIDYuMi4wXG4qIEBsaWNlbnNlIE1JVCwgaHR0cHM6Ly9naXRodWIuY29tL2ZvY3VzLXRyYXAvdGFiYmFibGUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuKi9cbi8vIE5PVEU6IHNlcGFyYXRlIGA6bm90KClgIHNlbGVjdG9ycyBoYXMgYnJvYWRlciBicm93c2VyIHN1cHBvcnQgdGhhbiB0aGUgbmV3ZXJcbi8vICBgOm5vdChbaW5lcnRdLCBbaW5lcnRdICopYCAoRmViIDIwMjMpXG4vLyBDQVJFRlVMOiBKU0RvbSBkb2VzIG5vdCBzdXBwb3J0IGA6bm90KFtpbmVydF0gKilgIGFzIGEgc2VsZWN0b3I7IHVzaW5nIGl0IGNhdXNlc1xuLy8gIHRoZSBlbnRpcmUgcXVlcnkgdG8gZmFpbCwgcmVzdWx0aW5nIGluIG5vIG5vZGVzIGZvdW5kLCB3aGljaCB3aWxsIGJyZWFrIGEgbG90XG4vLyAgb2YgdGhpbmdzLi4uIHNvIHdlIGhhdmUgdG8gcmVseSBvbiBKUyB0byBpZGVudGlmeSBub2RlcyBpbnNpZGUgYW4gaW5lcnQgY29udGFpbmVyXG52YXIgY2FuZGlkYXRlU2VsZWN0b3JzID0gWydpbnB1dDpub3QoW2luZXJ0XSknLCAnc2VsZWN0Om5vdChbaW5lcnRdKScsICd0ZXh0YXJlYTpub3QoW2luZXJ0XSknLCAnYVtocmVmXTpub3QoW2luZXJ0XSknLCAnYnV0dG9uOm5vdChbaW5lcnRdKScsICdbdGFiaW5kZXhdOm5vdChzbG90KTpub3QoW2luZXJ0XSknLCAnYXVkaW9bY29udHJvbHNdOm5vdChbaW5lcnRdKScsICd2aWRlb1tjb250cm9sc106bm90KFtpbmVydF0pJywgJ1tjb250ZW50ZWRpdGFibGVdOm5vdChbY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIl0pOm5vdChbaW5lcnRdKScsICdkZXRhaWxzPnN1bW1hcnk6Zmlyc3Qtb2YtdHlwZTpub3QoW2luZXJ0XSknLCAnZGV0YWlsczpub3QoW2luZXJ0XSknXTtcbnZhciBjYW5kaWRhdGVTZWxlY3RvciA9IC8qICNfX1BVUkVfXyAqL2NhbmRpZGF0ZVNlbGVjdG9ycy5qb2luKCcsJyk7XG52YXIgTm9FbGVtZW50ID0gdHlwZW9mIEVsZW1lbnQgPT09ICd1bmRlZmluZWQnO1xudmFyIG1hdGNoZXMgPSBOb0VsZW1lbnQgPyBmdW5jdGlvbiAoKSB7fSA6IEVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXMgfHwgRWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3IgfHwgRWxlbWVudC5wcm90b3R5cGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yO1xudmFyIGdldFJvb3ROb2RlID0gIU5vRWxlbWVudCAmJiBFbGVtZW50LnByb3RvdHlwZS5nZXRSb290Tm9kZSA/IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIHZhciBfZWxlbWVudCRnZXRSb290Tm9kZTtcbiAgcmV0dXJuIGVsZW1lbnQgPT09IG51bGwgfHwgZWxlbWVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9lbGVtZW50JGdldFJvb3ROb2RlID0gZWxlbWVudC5nZXRSb290Tm9kZSkgPT09IG51bGwgfHwgX2VsZW1lbnQkZ2V0Um9vdE5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lbGVtZW50JGdldFJvb3ROb2RlLmNhbGwoZWxlbWVudCk7XG59IDogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPT09IG51bGwgfHwgZWxlbWVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZWxlbWVudC5vd25lckRvY3VtZW50O1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGEgbm9kZSBpcyBpbmVydCBvciBpbiBhbiBpbmVydCBhbmNlc3Rvci5cbiAqIEBwYXJhbSB7RWxlbWVudH0gW25vZGVdXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtsb29rVXBdIElmIHRydWUgYW5kIGBub2RlYCBpcyBub3QgaW5lcnQsIGxvb2tzIHVwIGF0IGFuY2VzdG9ycyB0b1xuICogIHNlZSBpZiBhbnkgb2YgdGhlbSBhcmUgaW5lcnQuIElmIGZhbHNlLCBvbmx5IGBub2RlYCBpdHNlbGYgaXMgY29uc2lkZXJlZC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGluZXJ0IGl0c2VsZiBvciBieSB3YXkgb2YgYmVpbmcgaW4gYW4gaW5lcnQgYW5jZXN0b3IuXG4gKiAgRmFsc2UgaWYgYG5vZGVgIGlzIGZhbHN5LlxuICovXG52YXIgaXNJbmVydCA9IGZ1bmN0aW9uIGlzSW5lcnQobm9kZSwgbG9va1VwKSB7XG4gIHZhciBfbm9kZSRnZXRBdHRyaWJ1dGU7XG4gIGlmIChsb29rVXAgPT09IHZvaWQgMCkge1xuICAgIGxvb2tVcCA9IHRydWU7XG4gIH1cbiAgLy8gQ0FSRUZVTDogSlNEb20gZG9lcyBub3Qgc3VwcG9ydCBpbmVydCBhdCBhbGwsIHNvIHdlIGNhbid0IHVzZSB0aGUgYEhUTUxFbGVtZW50LmluZXJ0YFxuICAvLyAgSlMgQVBJIHByb3BlcnR5OyB3ZSBoYXZlIHRvIGNoZWNrIHRoZSBhdHRyaWJ1dGUsIHdoaWNoIGNhbiBlaXRoZXIgYmUgZW1wdHkgb3IgJ3RydWUnO1xuICAvLyAgaWYgaXQncyBgbnVsbGAgKG5vdCBzcGVjaWZpZWQpIG9yICdmYWxzZScsIGl0J3MgYW4gYWN0aXZlIGVsZW1lbnRcbiAgdmFyIGluZXJ0QXR0ID0gbm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX25vZGUkZ2V0QXR0cmlidXRlID0gbm9kZS5nZXRBdHRyaWJ1dGUpID09PSBudWxsIHx8IF9ub2RlJGdldEF0dHJpYnV0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGUkZ2V0QXR0cmlidXRlLmNhbGwobm9kZSwgJ2luZXJ0Jyk7XG4gIHZhciBpbmVydCA9IGluZXJ0QXR0ID09PSAnJyB8fCBpbmVydEF0dCA9PT0gJ3RydWUnO1xuXG4gIC8vIE5PVEU6IHRoaXMgY291bGQgYWxzbyBiZSBoYW5kbGVkIHdpdGggYG5vZGUubWF0Y2hlcygnW2luZXJ0XSwgOmlzKFtpbmVydF0gKiknKWBcbiAgLy8gIGlmIGl0IHdlcmVuJ3QgZm9yIGBtYXRjaGVzKClgIG5vdCBiZWluZyBhIGZ1bmN0aW9uIG9uIHNoYWRvdyByb290czsgdGhlIGZvbGxvd2luZ1xuICAvLyAgY29kZSB3b3JrcyBmb3IgYW55IGtpbmQgb2Ygbm9kZVxuICAvLyBDQVJFRlVMOiBKU0RvbSBkb2VzIG5vdCBhcHBlYXIgdG8gc3VwcG9ydCBjZXJ0YWluIHNlbGVjdG9ycyBsaWtlIGA6bm90KFtpbmVydF0gKilgXG4gIC8vICBzbyBpdCBsaWtlbHkgd291bGQgbm90IHN1cHBvcnQgYDppcyhbaW5lcnRdICopYCBlaXRoZXIuLi5cbiAgdmFyIHJlc3VsdCA9IGluZXJ0IHx8IGxvb2tVcCAmJiBub2RlICYmIGlzSW5lcnQobm9kZS5wYXJlbnROb2RlKTsgLy8gcmVjdXJzaXZlXG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIG5vZGUncyBjb250ZW50IGlzIGVkaXRhYmxlLlxuICogQHBhcmFtIHtFbGVtZW50fSBbbm9kZV1cbiAqIEByZXR1cm5zIFRydWUgaWYgaXQncyBjb250ZW50LWVkaXRhYmxlOyBmYWxzZSBpZiBpdCdzIG5vdCBvciBgbm9kZWAgaXMgZmFsc3kuXG4gKi9cbnZhciBpc0NvbnRlbnRFZGl0YWJsZSA9IGZ1bmN0aW9uIGlzQ29udGVudEVkaXRhYmxlKG5vZGUpIHtcbiAgdmFyIF9ub2RlJGdldEF0dHJpYnV0ZTI7XG4gIC8vIENBUkVGVUw6IEpTRG9tIGRvZXMgbm90IHN1cHBvcnQgdGhlIGBIVE1MRWxlbWVudC5pc0NvbnRlbnRFZGl0YWJsZWAgQVBJIHNvIHdlIGhhdmVcbiAgLy8gIHRvIHVzZSB0aGUgYXR0cmlidXRlIGRpcmVjdGx5IHRvIGNoZWNrIGZvciB0aGlzLCB3aGljaCBjYW4gZWl0aGVyIGJlIGVtcHR5IG9yICd0cnVlJztcbiAgLy8gIGlmIGl0J3MgYG51bGxgIChub3Qgc3BlY2lmaWVkKSBvciAnZmFsc2UnLCBpdCdzIGEgbm9uLWVkaXRhYmxlIGVsZW1lbnRcbiAgdmFyIGF0dFZhbHVlID0gbm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX25vZGUkZ2V0QXR0cmlidXRlMiA9IG5vZGUuZ2V0QXR0cmlidXRlKSA9PT0gbnVsbCB8fCBfbm9kZSRnZXRBdHRyaWJ1dGUyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbm9kZSRnZXRBdHRyaWJ1dGUyLmNhbGwobm9kZSwgJ2NvbnRlbnRlZGl0YWJsZScpO1xuICByZXR1cm4gYXR0VmFsdWUgPT09ICcnIHx8IGF0dFZhbHVlID09PSAndHJ1ZSc7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7RWxlbWVudH0gZWwgY29udGFpbmVyIHRvIGNoZWNrIGluXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1ZGVDb250YWluZXIgYWRkIGNvbnRhaW5lciB0byBjaGVja1xuICogQHBhcmFtIHsobm9kZTogRWxlbWVudCkgPT4gYm9vbGVhbn0gZmlsdGVyIGZpbHRlciBjYW5kaWRhdGVzXG4gKiBAcmV0dXJucyB7RWxlbWVudFtdfVxuICovXG52YXIgZ2V0Q2FuZGlkYXRlcyA9IGZ1bmN0aW9uIGdldENhbmRpZGF0ZXMoZWwsIGluY2x1ZGVDb250YWluZXIsIGZpbHRlcikge1xuICAvLyBldmVuIGlmIGBpbmNsdWRlQ29udGFpbmVyPWZhbHNlYCwgd2Ugc3RpbGwgaGF2ZSB0byBjaGVjayBpdCBmb3IgaW5lcnRuZXNzIGJlY2F1c2VcbiAgLy8gIGlmIGl0J3MgaW5lcnQsIGFsbCBpdHMgY2hpbGRyZW4gYXJlIGluZXJ0XG4gIGlmIChpc0luZXJ0KGVsKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICB2YXIgY2FuZGlkYXRlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShlbC5xdWVyeVNlbGVjdG9yQWxsKGNhbmRpZGF0ZVNlbGVjdG9yKSk7XG4gIGlmIChpbmNsdWRlQ29udGFpbmVyICYmIG1hdGNoZXMuY2FsbChlbCwgY2FuZGlkYXRlU2VsZWN0b3IpKSB7XG4gICAgY2FuZGlkYXRlcy51bnNoaWZ0KGVsKTtcbiAgfVxuICBjYW5kaWRhdGVzID0gY2FuZGlkYXRlcy5maWx0ZXIoZmlsdGVyKTtcbiAgcmV0dXJuIGNhbmRpZGF0ZXM7XG59O1xuXG4vKipcbiAqIEBjYWxsYmFjayBHZXRTaGFkb3dSb290XG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgdG8gY2hlY2sgZm9yIHNoYWRvdyByb290XG4gKiBAcmV0dXJucyB7U2hhZG93Um9vdHxib29sZWFufSBTaGFkb3dSb290IGlmIGF2YWlsYWJsZSBvciBib29sZWFuIGluZGljYXRpbmcgaWYgYSBzaGFkb3dSb290IGlzIGF0dGFjaGVkIGJ1dCBub3QgYXZhaWxhYmxlLlxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIFNoYWRvd1Jvb3RGaWx0ZXJcbiAqIEBwYXJhbSB7RWxlbWVudH0gc2hhZG93SG9zdE5vZGUgdGhlIGVsZW1lbnQgd2hpY2ggY29udGFpbnMgc2hhZG93IGNvbnRlbnRcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIGEgc2hhZG93IHJvb3QgY291bGQgcG90ZW50aWFsbHkgY29udGFpbiB2YWxpZCBjYW5kaWRhdGVzLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2FuZGlkYXRlU2NvcGVcbiAqIEBwcm9wZXJ0eSB7RWxlbWVudH0gc2NvcGVQYXJlbnQgY29udGFpbnMgaW5uZXIgY2FuZGlkYXRlc1xuICogQHByb3BlcnR5IHtFbGVtZW50W119IGNhbmRpZGF0ZXMgbGlzdCBvZiBjYW5kaWRhdGVzIGZvdW5kIGluIHRoZSBzY29wZSBwYXJlbnRcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEl0ZXJhdGl2ZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7R2V0U2hhZG93Um9vdHxib29sZWFufSBnZXRTaGFkb3dSb290IHRydWUgaWYgc2hhZG93IHN1cHBvcnQgaXMgZW5hYmxlZDsgZmFsc3kgaWYgbm90O1xuICogIGlmIGEgZnVuY3Rpb24sIGltcGxpZXMgc2hhZG93IHN1cHBvcnQgaXMgZW5hYmxlZCBhbmQgZWl0aGVyIHJldHVybnMgdGhlIHNoYWRvdyByb290IG9mIGFuIGVsZW1lbnRcbiAqICBvciBhIGJvb2xlYW4gc3RhdGluZyBpZiBpdCBoYXMgYW4gdW5kaXNjbG9zZWQgc2hhZG93IHJvb3RcbiAqIEBwcm9wZXJ0eSB7KG5vZGU6IEVsZW1lbnQpID0+IGJvb2xlYW59IGZpbHRlciBmaWx0ZXIgY2FuZGlkYXRlc1xuICogQHByb3BlcnR5IHtib29sZWFufSBmbGF0dGVuIGlmIHRydWUgdGhlbiByZXN1bHQgd2lsbCBmbGF0dGVuIGFueSBDYW5kaWRhdGVTY29wZSBpbnRvIHRoZSByZXR1cm5lZCBsaXN0XG4gKiBAcHJvcGVydHkge1NoYWRvd1Jvb3RGaWx0ZXJ9IHNoYWRvd1Jvb3RGaWx0ZXIgZmlsdGVyIHNoYWRvdyByb290cztcbiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7RWxlbWVudFtdfSBlbGVtZW50cyBsaXN0IG9mIGVsZW1lbnQgY29udGFpbmVycyB0byBtYXRjaCBjYW5kaWRhdGVzIGZyb21cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUNvbnRhaW5lciBhZGQgY29udGFpbmVyIGxpc3QgdG8gY2hlY2tcbiAqIEBwYXJhbSB7SXRlcmF0aXZlT3B0aW9uc30gb3B0aW9uc1xuICogQHJldHVybnMge0FycmF5LjxFbGVtZW50fENhbmRpZGF0ZVNjb3BlPn1cbiAqL1xudmFyIGdldENhbmRpZGF0ZXNJdGVyYXRpdmVseSA9IGZ1bmN0aW9uIGdldENhbmRpZGF0ZXNJdGVyYXRpdmVseShlbGVtZW50cywgaW5jbHVkZUNvbnRhaW5lciwgb3B0aW9ucykge1xuICB2YXIgY2FuZGlkYXRlcyA9IFtdO1xuICB2YXIgZWxlbWVudHNUb0NoZWNrID0gQXJyYXkuZnJvbShlbGVtZW50cyk7XG4gIHdoaWxlIChlbGVtZW50c1RvQ2hlY2subGVuZ3RoKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBlbGVtZW50c1RvQ2hlY2suc2hpZnQoKTtcbiAgICBpZiAoaXNJbmVydChlbGVtZW50LCBmYWxzZSkpIHtcbiAgICAgIC8vIG5vIG5lZWQgdG8gbG9vayB1cCBzaW5jZSB3ZSdyZSBkcmlsbGluZyBkb3duXG4gICAgICAvLyBhbnl0aGluZyBpbnNpZGUgdGhpcyBjb250YWluZXIgd2lsbCBhbHNvIGJlIGluZXJ0XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ1NMT1QnKSB7XG4gICAgICAvLyBhZGQgc2hhZG93IGRvbSBzbG90IHNjb3BlIChzbG90IGl0c2VsZiBjYW5ub3QgYmUgZm9jdXNhYmxlKVxuICAgICAgdmFyIGFzc2lnbmVkID0gZWxlbWVudC5hc3NpZ25lZEVsZW1lbnRzKCk7XG4gICAgICB2YXIgY29udGVudCA9IGFzc2lnbmVkLmxlbmd0aCA/IGFzc2lnbmVkIDogZWxlbWVudC5jaGlsZHJlbjtcbiAgICAgIHZhciBuZXN0ZWRDYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlc0l0ZXJhdGl2ZWx5KGNvbnRlbnQsIHRydWUsIG9wdGlvbnMpO1xuICAgICAgaWYgKG9wdGlvbnMuZmxhdHRlbikge1xuICAgICAgICBjYW5kaWRhdGVzLnB1c2guYXBwbHkoY2FuZGlkYXRlcywgbmVzdGVkQ2FuZGlkYXRlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW5kaWRhdGVzLnB1c2goe1xuICAgICAgICAgIHNjb3BlUGFyZW50OiBlbGVtZW50LFxuICAgICAgICAgIGNhbmRpZGF0ZXM6IG5lc3RlZENhbmRpZGF0ZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNoZWNrIGNhbmRpZGF0ZSBlbGVtZW50XG4gICAgICB2YXIgdmFsaWRDYW5kaWRhdGUgPSBtYXRjaGVzLmNhbGwoZWxlbWVudCwgY2FuZGlkYXRlU2VsZWN0b3IpO1xuICAgICAgaWYgKHZhbGlkQ2FuZGlkYXRlICYmIG9wdGlvbnMuZmlsdGVyKGVsZW1lbnQpICYmIChpbmNsdWRlQ29udGFpbmVyIHx8ICFlbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkpIHtcbiAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICAvLyBpdGVyYXRlIG92ZXIgc2hhZG93IGNvbnRlbnQgaWYgcG9zc2libGVcbiAgICAgIHZhciBzaGFkb3dSb290ID0gZWxlbWVudC5zaGFkb3dSb290IHx8XG4gICAgICAvLyBjaGVjayBmb3IgYW4gdW5kaXNjbG9zZWQgc2hhZG93XG4gICAgICB0eXBlb2Ygb3B0aW9ucy5nZXRTaGFkb3dSb290ID09PSAnZnVuY3Rpb24nICYmIG9wdGlvbnMuZ2V0U2hhZG93Um9vdChlbGVtZW50KTtcblxuICAgICAgLy8gbm8gaW5lcnQgbG9vayB1cCBiZWNhdXNlIHdlJ3JlIGFscmVhZHkgZHJpbGxpbmcgZG93biBhbmQgY2hlY2tpbmcgZm9yIGluZXJ0bmVzc1xuICAgICAgLy8gIG9uIHRoZSB3YXkgZG93biwgc28gYWxsIGNvbnRhaW5lcnMgdG8gdGhpcyByb290IG5vZGUgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuXG4gICAgICAvLyAgdmV0dGVkIGFzIG5vbi1pbmVydFxuICAgICAgdmFyIHZhbGlkU2hhZG93Um9vdCA9ICFpc0luZXJ0KHNoYWRvd1Jvb3QsIGZhbHNlKSAmJiAoIW9wdGlvbnMuc2hhZG93Um9vdEZpbHRlciB8fCBvcHRpb25zLnNoYWRvd1Jvb3RGaWx0ZXIoZWxlbWVudCkpO1xuICAgICAgaWYgKHNoYWRvd1Jvb3QgJiYgdmFsaWRTaGFkb3dSb290KSB7XG4gICAgICAgIC8vIGFkZCBzaGFkb3cgZG9tIHNjb3BlIElJRiBhIHNoYWRvdyByb290IG5vZGUgd2FzIGdpdmVuOyBvdGhlcndpc2UsIGFuIHVuZGlzY2xvc2VkXG4gICAgICAgIC8vICBzaGFkb3cgZXhpc3RzLCBzbyBsb29rIGF0IGxpZ2h0IGRvbSBjaGlsZHJlbiBhcyBmYWxsYmFjayBCVVQgY3JlYXRlIGEgc2NvcGUgZm9yIGFueVxuICAgICAgICAvLyAgY2hpbGQgY2FuZGlkYXRlcyBmb3VuZCBiZWNhdXNlIHRoZXkncmUgbGlrZWx5IHNsb3R0ZWQgZWxlbWVudHMgKGVsZW1lbnRzIHRoYXQgYXJlXG4gICAgICAgIC8vICBjaGlsZHJlbiBvZiB0aGUgd2ViIGNvbXBvbmVudCBlbGVtZW50ICh3aGljaCBoYXMgdGhlIHNoYWRvdyksIGluIHRoZSBsaWdodCBkb20sIGJ1dFxuICAgICAgICAvLyAgc2xvdHRlZCBzb21ld2hlcmUgX2luc2lkZV8gdGhlIHVuZGlzY2xvc2VkIHNoYWRvdykgLS0gdGhlIHNjb3BlIGlzIGNyZWF0ZWQgYmVsb3csXG4gICAgICAgIC8vICBfYWZ0ZXJfIHdlIHJldHVybiBmcm9tIHRoaXMgcmVjdXJzaXZlIGNhbGxcbiAgICAgICAgdmFyIF9uZXN0ZWRDYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlc0l0ZXJhdGl2ZWx5KHNoYWRvd1Jvb3QgPT09IHRydWUgPyBlbGVtZW50LmNoaWxkcmVuIDogc2hhZG93Um9vdC5jaGlsZHJlbiwgdHJ1ZSwgb3B0aW9ucyk7XG4gICAgICAgIGlmIChvcHRpb25zLmZsYXR0ZW4pIHtcbiAgICAgICAgICBjYW5kaWRhdGVzLnB1c2guYXBwbHkoY2FuZGlkYXRlcywgX25lc3RlZENhbmRpZGF0ZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaCh7XG4gICAgICAgICAgICBzY29wZVBhcmVudDogZWxlbWVudCxcbiAgICAgICAgICAgIGNhbmRpZGF0ZXM6IF9uZXN0ZWRDYW5kaWRhdGVzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoZXJlJ3Mgbm90IHNoYWRvdyBzbyBqdXN0IGRpZyBpbnRvIHRoZSBlbGVtZW50J3MgKGxpZ2h0IGRvbSkgY2hpbGRyZW5cbiAgICAgICAgLy8gIF9fd2l0aG91dF9fIGdpdmluZyB0aGUgZWxlbWVudCBzcGVjaWFsIHNjb3BlIHRyZWF0bWVudFxuICAgICAgICBlbGVtZW50c1RvQ2hlY2sudW5zaGlmdC5hcHBseShlbGVtZW50c1RvQ2hlY2ssIGVsZW1lbnQuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FuZGlkYXRlcztcbn07XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIERldGVybWluZXMgaWYgdGhlIG5vZGUgaGFzIGFuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGB0YWJpbmRleGAgYXR0cmlidXRlLlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbm9kZVxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgc287IGZhbHNlIGlmIG5vdC5cbiAqL1xudmFyIGhhc1RhYkluZGV4ID0gZnVuY3Rpb24gaGFzVGFiSW5kZXgobm9kZSkge1xuICByZXR1cm4gIWlzTmFOKHBhcnNlSW50KG5vZGUuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpLCAxMCkpO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgdGhlIHRhYiBpbmRleCBvZiBhIGdpdmVuIG5vZGUuXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBUYWIgb3JkZXIgKG5lZ2F0aXZlLCAwLCBvciBwb3NpdGl2ZSBudW1iZXIpLlxuICogQHRocm93cyB7RXJyb3J9IElmIGBub2RlYCBpcyBmYWxzeS5cbiAqL1xudmFyIGdldFRhYkluZGV4ID0gZnVuY3Rpb24gZ2V0VGFiSW5kZXgobm9kZSkge1xuICBpZiAoIW5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG5vZGUgcHJvdmlkZWQnKTtcbiAgfVxuICBpZiAobm9kZS50YWJJbmRleCA8IDApIHtcbiAgICAvLyBpbiBDaHJvbWUsIDxkZXRhaWxzLz4sIDxhdWRpbyBjb250cm9scy8+IGFuZCA8dmlkZW8gY29udHJvbHMvPiBlbGVtZW50cyBnZXQgYSBkZWZhdWx0XG4gICAgLy8gYHRhYkluZGV4YCBvZiAtMSB3aGVuIHRoZSAndGFiaW5kZXgnIGF0dHJpYnV0ZSBpc24ndCBzcGVjaWZpZWQgaW4gdGhlIERPTSxcbiAgICAvLyB5ZXQgdGhleSBhcmUgc3RpbGwgcGFydCBvZiB0aGUgcmVndWxhciB0YWIgb3JkZXI7IGluIEZGLCB0aGV5IGdldCBhIGRlZmF1bHRcbiAgICAvLyBgdGFiSW5kZXhgIG9mIDA7IHNpbmNlIENocm9tZSBzdGlsbCBwdXRzIHRob3NlIGVsZW1lbnRzIGluIHRoZSByZWd1bGFyIHRhYlxuICAgIC8vIG9yZGVyLCBjb25zaWRlciB0aGVpciB0YWIgaW5kZXggdG8gYmUgMC5cbiAgICAvLyBBbHNvIGJyb3dzZXJzIGRvIG5vdCByZXR1cm4gYHRhYkluZGV4YCBjb3JyZWN0bHkgZm9yIGNvbnRlbnRFZGl0YWJsZSBub2RlcztcbiAgICAvLyBzbyBpZiB0aGV5IGRvbid0IGhhdmUgYSB0YWJpbmRleCBhdHRyaWJ1dGUgc3BlY2lmaWNhbGx5IHNldCwgYXNzdW1lIGl0J3MgMC5cbiAgICBpZiAoKC9eKEFVRElPfFZJREVPfERFVEFJTFMpJC8udGVzdChub2RlLnRhZ05hbWUpIHx8IGlzQ29udGVudEVkaXRhYmxlKG5vZGUpKSAmJiAhaGFzVGFiSW5kZXgobm9kZSkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9kZS50YWJJbmRleDtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lIHRoZSB0YWIgaW5kZXggb2YgYSBnaXZlbiBub2RlIF9fZm9yIHNvcnQgb3JkZXIgcHVycG9zZXNfXy5cbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU2NvcGVdIFRydWUgZm9yIGEgY3VzdG9tIGVsZW1lbnQgd2l0aCBzaGFkb3cgcm9vdCBvciBzbG90IHRoYXQsIGJ5IGRlZmF1bHQsXG4gKiAgaGFzIHRhYkluZGV4IC0xLCBidXQgbmVlZHMgdG8gYmUgc29ydGVkIGJ5IGRvY3VtZW50IG9yZGVyIGluIG9yZGVyIGZvciBpdHMgY29udGVudCB0byBiZVxuICogIGluc2VydGVkIGludG8gdGhlIGNvcnJlY3Qgc29ydCBwb3NpdGlvbi5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRhYiBvcmRlciAobmVnYXRpdmUsIDAsIG9yIHBvc2l0aXZlIG51bWJlcikuXG4gKi9cbnZhciBnZXRTb3J0T3JkZXJUYWJJbmRleCA9IGZ1bmN0aW9uIGdldFNvcnRPcmRlclRhYkluZGV4KG5vZGUsIGlzU2NvcGUpIHtcbiAgdmFyIHRhYkluZGV4ID0gZ2V0VGFiSW5kZXgobm9kZSk7XG4gIGlmICh0YWJJbmRleCA8IDAgJiYgaXNTY29wZSAmJiAhaGFzVGFiSW5kZXgobm9kZSkpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICByZXR1cm4gdGFiSW5kZXg7XG59O1xudmFyIHNvcnRPcmRlcmVkVGFiYmFibGVzID0gZnVuY3Rpb24gc29ydE9yZGVyZWRUYWJiYWJsZXMoYSwgYikge1xuICByZXR1cm4gYS50YWJJbmRleCA9PT0gYi50YWJJbmRleCA/IGEuZG9jdW1lbnRPcmRlciAtIGIuZG9jdW1lbnRPcmRlciA6IGEudGFiSW5kZXggLSBiLnRhYkluZGV4O1xufTtcbnZhciBpc0lucHV0ID0gZnVuY3Rpb24gaXNJbnB1dChub2RlKSB7XG4gIHJldHVybiBub2RlLnRhZ05hbWUgPT09ICdJTlBVVCc7XG59O1xudmFyIGlzSGlkZGVuSW5wdXQgPSBmdW5jdGlvbiBpc0hpZGRlbklucHV0KG5vZGUpIHtcbiAgcmV0dXJuIGlzSW5wdXQobm9kZSkgJiYgbm9kZS50eXBlID09PSAnaGlkZGVuJztcbn07XG52YXIgaXNEZXRhaWxzV2l0aFN1bW1hcnkgPSBmdW5jdGlvbiBpc0RldGFpbHNXaXRoU3VtbWFyeShub2RlKSB7XG4gIHZhciByID0gbm9kZS50YWdOYW1lID09PSAnREVUQUlMUycgJiYgQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KG5vZGUuY2hpbGRyZW4pLnNvbWUoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIGNoaWxkLnRhZ05hbWUgPT09ICdTVU1NQVJZJztcbiAgfSk7XG4gIHJldHVybiByO1xufTtcbnZhciBnZXRDaGVja2VkUmFkaW8gPSBmdW5jdGlvbiBnZXRDaGVja2VkUmFkaW8obm9kZXMsIGZvcm0pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChub2Rlc1tpXS5jaGVja2VkICYmIG5vZGVzW2ldLmZvcm0gPT09IGZvcm0pIHtcbiAgICAgIHJldHVybiBub2Rlc1tpXTtcbiAgICB9XG4gIH1cbn07XG52YXIgaXNUYWJiYWJsZVJhZGlvID0gZnVuY3Rpb24gaXNUYWJiYWJsZVJhZGlvKG5vZGUpIHtcbiAgaWYgKCFub2RlLm5hbWUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgcmFkaW9TY29wZSA9IG5vZGUuZm9ybSB8fCBnZXRSb290Tm9kZShub2RlKTtcbiAgdmFyIHF1ZXJ5UmFkaW9zID0gZnVuY3Rpb24gcXVlcnlSYWRpb3MobmFtZSkge1xuICAgIHJldHVybiByYWRpb1Njb3BlLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9XCJyYWRpb1wiXVtuYW1lPVwiJyArIG5hbWUgKyAnXCJdJyk7XG4gIH07XG4gIHZhciByYWRpb1NldDtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuQ1NTICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkNTUy5lc2NhcGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByYWRpb1NldCA9IHF1ZXJ5UmFkaW9zKHdpbmRvdy5DU1MuZXNjYXBlKG5vZGUubmFtZSkpO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICByYWRpb1NldCA9IHF1ZXJ5UmFkaW9zKG5vZGUubmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcignTG9va3MgbGlrZSB5b3UgaGF2ZSBhIHJhZGlvIGJ1dHRvbiB3aXRoIGEgbmFtZSBhdHRyaWJ1dGUgY29udGFpbmluZyBpbnZhbGlkIENTUyBzZWxlY3RvciBjaGFyYWN0ZXJzIGFuZCBuZWVkIHRoZSBDU1MuZXNjYXBlIHBvbHlmaWxsOiAlcycsIGVyci5tZXNzYWdlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgdmFyIGNoZWNrZWQgPSBnZXRDaGVja2VkUmFkaW8ocmFkaW9TZXQsIG5vZGUuZm9ybSk7XG4gIHJldHVybiAhY2hlY2tlZCB8fCBjaGVja2VkID09PSBub2RlO1xufTtcbnZhciBpc1JhZGlvID0gZnVuY3Rpb24gaXNSYWRpbyhub2RlKSB7XG4gIHJldHVybiBpc0lucHV0KG5vZGUpICYmIG5vZGUudHlwZSA9PT0gJ3JhZGlvJztcbn07XG52YXIgaXNOb25UYWJiYWJsZVJhZGlvID0gZnVuY3Rpb24gaXNOb25UYWJiYWJsZVJhZGlvKG5vZGUpIHtcbiAgcmV0dXJuIGlzUmFkaW8obm9kZSkgJiYgIWlzVGFiYmFibGVSYWRpbyhub2RlKTtcbn07XG5cbi8vIGRldGVybWluZXMgaWYgYSBub2RlIGlzIHVsdGltYXRlbHkgYXR0YWNoZWQgdG8gdGhlIHdpbmRvdydzIGRvY3VtZW50XG52YXIgaXNOb2RlQXR0YWNoZWQgPSBmdW5jdGlvbiBpc05vZGVBdHRhY2hlZChub2RlKSB7XG4gIHZhciBfbm9kZVJvb3Q7XG4gIC8vIFRoZSByb290IG5vZGUgaXMgdGhlIHNoYWRvdyByb290IGlmIHRoZSBub2RlIGlzIGluIGEgc2hhZG93IERPTTsgc29tZSBkb2N1bWVudCBvdGhlcndpc2VcbiAgLy8gIChidXQgTk9UIF90aGVfIGRvY3VtZW50OyBzZWUgc2Vjb25kICdJZicgY29tbWVudCBiZWxvdyBmb3IgbW9yZSkuXG4gIC8vIElmIHJvb3ROb2RlIGlzIHNoYWRvdyByb290LCBpdCdsbCBoYXZlIGEgaG9zdCwgd2hpY2ggaXMgdGhlIGVsZW1lbnQgdG8gd2hpY2ggdGhlIHNoYWRvd1xuICAvLyAgaXMgYXR0YWNoZWQsIGFuZCB0aGUgb25lIHdlIG5lZWQgdG8gY2hlY2sgaWYgaXQncyBpbiB0aGUgZG9jdW1lbnQgb3Igbm90IChiZWNhdXNlIHRoZVxuICAvLyAgc2hhZG93LCBhbmQgYWxsIG5vZGVzIGl0IGNvbnRhaW5zLCBpcyBuZXZlciBjb25zaWRlcmVkIGluIHRoZSBkb2N1bWVudCBzaW5jZSBzaGFkb3dzXG4gIC8vICBiZWhhdmUgbGlrZSBzZWxmLWNvbnRhaW5lZCBET01zOyBidXQgaWYgdGhlIHNoYWRvdydzIEhPU1QsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGRvY3VtZW50LFxuICAvLyAgaXMgaGlkZGVuLCBvciBpcyBub3QgaW4gdGhlIGRvY3VtZW50IGl0c2VsZiBidXQgaXMgZGV0YWNoZWQsIGl0IHdpbGwgYWZmZWN0IHRoZSBzaGFkb3cnc1xuICAvLyAgdmlzaWJpbGl0eSwgaW5jbHVkaW5nIGFsbCB0aGUgbm9kZXMgaXQgY29udGFpbnMpLiBUaGUgaG9zdCBjb3VsZCBiZSBhbnkgbm9ybWFsIG5vZGUsXG4gIC8vICBvciBhIGN1c3RvbSBlbGVtZW50IChpLmUuIHdlYiBjb21wb25lbnQpLiBFaXRoZXIgd2F5LCB0aGF0J3MgdGhlIG9uZSB0aGF0IGlzIGNvbnNpZGVyZWRcbiAgLy8gIHBhcnQgb2YgdGhlIGRvY3VtZW50LCBub3QgdGhlIHNoYWRvdyByb290LCBub3IgYW55IG9mIGl0cyBjaGlsZHJlbiAoaS5lLiB0aGUgbm9kZSBiZWluZ1xuICAvLyAgdGVzdGVkKS5cbiAgLy8gVG8gZnVydGhlciBjb21wbGljYXRlIHRoaW5ncywgd2UgaGF2ZSB0byBsb29rIGFsbCB0aGUgd2F5IHVwIHVudGlsIHdlIGZpbmQgYSBzaGFkb3cgSE9TVFxuICAvLyAgdGhhdCBpcyBhdHRhY2hlZCAob3IgZmluZCBub25lKSBiZWNhdXNlIHRoZSBub2RlIG1pZ2h0IGJlIGluIG5lc3RlZCBzaGFkb3dzLi4uXG4gIC8vIElmIHJvb3ROb2RlIGlzIG5vdCBhIHNoYWRvdyByb290LCBpdCB3b24ndCBoYXZlIGEgaG9zdCwgYW5kIHNvIHJvb3ROb2RlIHNob3VsZCBiZSB0aGVcbiAgLy8gIGRvY3VtZW50IChwZXIgdGhlIGRvY3MpIGFuZCB3aGlsZSBpdCdzIGEgRG9jdW1lbnQtdHlwZSBvYmplY3QsIHRoYXQgZG9jdW1lbnQgZG9lcyBub3RcbiAgLy8gIGFwcGVhciB0byBiZSB0aGUgc2FtZSBhcyB0aGUgbm9kZSdzIGBvd25lckRvY3VtZW50YCBmb3Igc29tZSByZWFzb24sIHNvIGl0J3Mgc2FmZXJcbiAgLy8gIHRvIGlnbm9yZSB0aGUgcm9vdE5vZGUgYXQgdGhpcyBwb2ludCwgYW5kIHVzZSBgbm9kZS5vd25lckRvY3VtZW50YC4gT3RoZXJ3aXNlLFxuICAvLyAgdXNpbmcgYHJvb3ROb2RlLmNvbnRhaW5zKG5vZGUpYCB3aWxsIF9hbHdheXNfIGJlIHRydWUgd2UnbGwgZ2V0IGZhbHNlLXBvc2l0aXZlcyB3aGVuXG4gIC8vICBub2RlIGlzIGFjdHVhbGx5IGRldGFjaGVkLlxuICAvLyBOT1RFOiBJZiBgbm9kZVJvb3RIb3N0YCBvciBgbm9kZWAgaGFwcGVucyB0byBiZSB0aGUgYGRvY3VtZW50YCBpdHNlbGYgKHdoaWNoIGlzIHBvc3NpYmxlXG4gIC8vICBpZiBhIHRhYmJhYmxlL2ZvY3VzYWJsZSBub2RlIHdhcyBxdWlja2x5IGFkZGVkIHRvIHRoZSBET00sIGZvY3VzZWQsIGFuZCB0aGVuIHJlbW92ZWRcbiAgLy8gIGZyb20gdGhlIERPTSBhcyBpbiBodHRwczovL2dpdGh1Yi5jb20vZm9jdXMtdHJhcC9mb2N1cy10cmFwLXJlYWN0L2lzc3Vlcy85MDUpLCB0aGVuXG4gIC8vICBgb3duZXJEb2N1bWVudGAgd2lsbCBiZSBgbnVsbGAsIGhlbmNlIHRoZSBvcHRpb25hbCBjaGFpbmluZyBvbiBpdC5cbiAgdmFyIG5vZGVSb290ID0gbm9kZSAmJiBnZXRSb290Tm9kZShub2RlKTtcbiAgdmFyIG5vZGVSb290SG9zdCA9IChfbm9kZVJvb3QgPSBub2RlUm9vdCkgPT09IG51bGwgfHwgX25vZGVSb290ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbm9kZVJvb3QuaG9zdDtcblxuICAvLyBpbiBzb21lIGNhc2VzLCBhIGRldGFjaGVkIG5vZGUgd2lsbCByZXR1cm4gaXRzZWxmIGFzIHRoZSByb290IGluc3RlYWQgb2YgYSBkb2N1bWVudCBvclxuICAvLyAgc2hhZG93IHJvb3Qgb2JqZWN0LCBpbiB3aGljaCBjYXNlLCB3ZSBzaG91bGRuJ3QgdHJ5IHRvIGxvb2sgZnVydGhlciB1cCB0aGUgaG9zdCBjaGFpblxuICB2YXIgYXR0YWNoZWQgPSBmYWxzZTtcbiAgaWYgKG5vZGVSb290ICYmIG5vZGVSb290ICE9PSBub2RlKSB7XG4gICAgdmFyIF9ub2RlUm9vdEhvc3QsIF9ub2RlUm9vdEhvc3Qkb3duZXJEbywgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgICBhdHRhY2hlZCA9ICEhKChfbm9kZVJvb3RIb3N0ID0gbm9kZVJvb3RIb3N0KSAhPT0gbnVsbCAmJiBfbm9kZVJvb3RIb3N0ICE9PSB2b2lkIDAgJiYgKF9ub2RlUm9vdEhvc3Qkb3duZXJEbyA9IF9ub2RlUm9vdEhvc3Qub3duZXJEb2N1bWVudCkgIT09IG51bGwgJiYgX25vZGVSb290SG9zdCRvd25lckRvICE9PSB2b2lkIDAgJiYgX25vZGVSb290SG9zdCRvd25lckRvLmNvbnRhaW5zKG5vZGVSb290SG9zdCkgfHwgbm9kZSAhPT0gbnVsbCAmJiBub2RlICE9PSB2b2lkIDAgJiYgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpICE9PSBudWxsICYmIF9ub2RlJG93bmVyRG9jdW1lbnQgIT09IHZvaWQgMCAmJiBfbm9kZSRvd25lckRvY3VtZW50LmNvbnRhaW5zKG5vZGUpKTtcbiAgICB3aGlsZSAoIWF0dGFjaGVkICYmIG5vZGVSb290SG9zdCkge1xuICAgICAgdmFyIF9ub2RlUm9vdDIsIF9ub2RlUm9vdEhvc3QyLCBfbm9kZVJvb3RIb3N0MiRvd25lckQ7XG4gICAgICAvLyBzaW5jZSBpdCdzIG5vdCBhdHRhY2hlZCBhbmQgd2UgaGF2ZSBhIHJvb3QgaG9zdCwgdGhlIG5vZGUgTVVTVCBiZSBpbiBhIG5lc3RlZCBzaGFkb3cgRE9NLFxuICAgICAgLy8gIHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8gZ2V0IHRoZSBob3N0J3MgaG9zdCBhbmQgY2hlY2sgaWYgdGhhdCBwYXJlbnQgaG9zdCBpcyBjb250YWluZWRcbiAgICAgIC8vICBpbiAoaS5lLiBhdHRhY2hlZCB0bykgdGhlIGRvY3VtZW50XG4gICAgICBub2RlUm9vdCA9IGdldFJvb3ROb2RlKG5vZGVSb290SG9zdCk7XG4gICAgICBub2RlUm9vdEhvc3QgPSAoX25vZGVSb290MiA9IG5vZGVSb290KSA9PT0gbnVsbCB8fCBfbm9kZVJvb3QyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbm9kZVJvb3QyLmhvc3Q7XG4gICAgICBhdHRhY2hlZCA9ICEhKChfbm9kZVJvb3RIb3N0MiA9IG5vZGVSb290SG9zdCkgIT09IG51bGwgJiYgX25vZGVSb290SG9zdDIgIT09IHZvaWQgMCAmJiAoX25vZGVSb290SG9zdDIkb3duZXJEID0gX25vZGVSb290SG9zdDIub3duZXJEb2N1bWVudCkgIT09IG51bGwgJiYgX25vZGVSb290SG9zdDIkb3duZXJEICE9PSB2b2lkIDAgJiYgX25vZGVSb290SG9zdDIkb3duZXJELmNvbnRhaW5zKG5vZGVSb290SG9zdCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXR0YWNoZWQ7XG59O1xudmFyIGlzWmVyb0FyZWEgPSBmdW5jdGlvbiBpc1plcm9BcmVhKG5vZGUpIHtcbiAgdmFyIF9ub2RlJGdldEJvdW5kaW5nQ2xpZSA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgd2lkdGggPSBfbm9kZSRnZXRCb3VuZGluZ0NsaWUud2lkdGgsXG4gICAgaGVpZ2h0ID0gX25vZGUkZ2V0Qm91bmRpbmdDbGllLmhlaWdodDtcbiAgcmV0dXJuIHdpZHRoID09PSAwICYmIGhlaWdodCA9PT0gMDtcbn07XG52YXIgaXNIaWRkZW4gPSBmdW5jdGlvbiBpc0hpZGRlbihub2RlLCBfcmVmKSB7XG4gIHZhciBkaXNwbGF5Q2hlY2sgPSBfcmVmLmRpc3BsYXlDaGVjayxcbiAgICBnZXRTaGFkb3dSb290ID0gX3JlZi5nZXRTaGFkb3dSb290O1xuICAvLyBOT1RFOiB2aXNpYmlsaXR5IHdpbGwgYmUgYHVuZGVmaW5lZGAgaWYgbm9kZSBpcyBkZXRhY2hlZCBmcm9tIHRoZSBkb2N1bWVudFxuICAvLyAgKHNlZSBub3RlcyBhYm91dCB0aGlzIGZ1cnRoZXIgZG93biksIHdoaWNoIG1lYW5zIHdlIHdpbGwgY29uc2lkZXIgaXQgdmlzaWJsZVxuICAvLyAgKHRoaXMgaXMgbGVnYWN5IGJlaGF2aW9yIGZyb20gYSB2ZXJ5IGxvbmcgd2F5IGJhY2spXG4gIC8vIE5PVEU6IHdlIGNoZWNrIHRoaXMgcmVnYXJkbGVzcyBvZiBgZGlzcGxheUNoZWNrPVwibm9uZVwiYCBiZWNhdXNlIHRoaXMgaXMgYVxuICAvLyAgX3Zpc2liaWxpdHlfIGNoZWNrLCBub3QgYSBfZGlzcGxheV8gY2hlY2tcbiAgaWYgKGdldENvbXB1dGVkU3R5bGUobm9kZSkudmlzaWJpbGl0eSA9PT0gJ2hpZGRlbicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgaXNEaXJlY3RTdW1tYXJ5ID0gbWF0Y2hlcy5jYWxsKG5vZGUsICdkZXRhaWxzPnN1bW1hcnk6Zmlyc3Qtb2YtdHlwZScpO1xuICB2YXIgbm9kZVVuZGVyRGV0YWlscyA9IGlzRGlyZWN0U3VtbWFyeSA/IG5vZGUucGFyZW50RWxlbWVudCA6IG5vZGU7XG4gIGlmIChtYXRjaGVzLmNhbGwobm9kZVVuZGVyRGV0YWlscywgJ2RldGFpbHM6bm90KFtvcGVuXSkgKicpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKCFkaXNwbGF5Q2hlY2sgfHwgZGlzcGxheUNoZWNrID09PSAnZnVsbCcgfHwgZGlzcGxheUNoZWNrID09PSAnbGVnYWN5LWZ1bGwnKSB7XG4gICAgaWYgKHR5cGVvZiBnZXRTaGFkb3dSb290ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBmaWd1cmUgb3V0IGlmIHdlIHNob3VsZCBjb25zaWRlciB0aGUgbm9kZSB0byBiZSBpbiBhbiB1bmRpc2Nsb3NlZCBzaGFkb3cgYW5kIHVzZSB0aGVcbiAgICAgIC8vICAnbm9uLXplcm8tYXJlYScgZmFsbGJhY2tcbiAgICAgIHZhciBvcmlnaW5hbE5vZGUgPSBub2RlO1xuICAgICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgdmFyIHBhcmVudEVsZW1lbnQgPSBub2RlLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIHZhciByb290Tm9kZSA9IGdldFJvb3ROb2RlKG5vZGUpO1xuICAgICAgICBpZiAocGFyZW50RWxlbWVudCAmJiAhcGFyZW50RWxlbWVudC5zaGFkb3dSb290ICYmIGdldFNoYWRvd1Jvb3QocGFyZW50RWxlbWVudCkgPT09IHRydWUgLy8gY2hlY2sgaWYgdGhlcmUncyBhbiB1bmRpc2Nsb3NlZCBzaGFkb3dcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gbm9kZSBoYXMgYW4gdW5kaXNjbG9zZWQgc2hhZG93IHdoaWNoIG1lYW5zIHdlIGNhbiBvbmx5IHRyZWF0IGl0IGFzIGEgYmxhY2sgYm94LCBzbyB3ZVxuICAgICAgICAgIC8vICBmYWxsIGJhY2sgdG8gYSBub24temVyby1hcmVhIHRlc3RcbiAgICAgICAgICByZXR1cm4gaXNaZXJvQXJlYShub2RlKTtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlLmFzc2lnbmVkU2xvdCkge1xuICAgICAgICAgIC8vIGl0ZXJhdGUgdXAgc2xvdFxuICAgICAgICAgIG5vZGUgPSBub2RlLmFzc2lnbmVkU2xvdDtcbiAgICAgICAgfSBlbHNlIGlmICghcGFyZW50RWxlbWVudCAmJiByb290Tm9kZSAhPT0gbm9kZS5vd25lckRvY3VtZW50KSB7XG4gICAgICAgICAgLy8gY3Jvc3Mgc2hhZG93IGJvdW5kYXJ5XG4gICAgICAgICAgbm9kZSA9IHJvb3ROb2RlLmhvc3Q7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gaXRlcmF0ZSB1cCBub3JtYWwgZG9tXG4gICAgICAgICAgbm9kZSA9IHBhcmVudEVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5vZGUgPSBvcmlnaW5hbE5vZGU7XG4gICAgfVxuICAgIC8vIGVsc2UsIGBnZXRTaGFkb3dSb290YCBtaWdodCBiZSB0cnVlLCBidXQgYWxsIHRoYXQgZG9lcyBpcyBlbmFibGUgc2hhZG93IERPTSBzdXBwb3J0XG4gICAgLy8gIChpLmUuIGl0IGRvZXMgbm90IGFsc28gcHJlc3VtZSB0aGF0IGFsbCBub2RlcyBtaWdodCBoYXZlIHVuZGlzY2xvc2VkIHNoYWRvd3MpOyBvclxuICAgIC8vICBpdCBtaWdodCBiZSBhIGZhbHN5IHZhbHVlLCB3aGljaCBtZWFucyBzaGFkb3cgRE9NIHN1cHBvcnQgaXMgZGlzYWJsZWRcblxuICAgIC8vIFNpbmNlIHdlIGRpZG4ndCBmaW5kIGl0IHNpdHRpbmcgaW4gYW4gdW5kaXNjbG9zZWQgc2hhZG93IChvciBzaGFkb3dzIGFyZSBkaXNhYmxlZClcbiAgICAvLyAgbm93IHdlIGNhbiBqdXN0IHRlc3QgdG8gc2VlIGlmIGl0IHdvdWxkIG5vcm1hbGx5IGJlIHZpc2libGUgb3Igbm90LCBwcm92aWRlZCBpdCdzXG4gICAgLy8gIGF0dGFjaGVkIHRvIHRoZSBtYWluIGRvY3VtZW50LlxuICAgIC8vIE5PVEU6IFdlIG11c3QgY29uc2lkZXIgY2FzZSB3aGVyZSBub2RlIGlzIGluc2lkZSBhIHNoYWRvdyBET00gYW5kIGdpdmVuIGRpcmVjdGx5IHRvXG4gICAgLy8gIGBpc1RhYmJhYmxlKClgIG9yIGBpc0ZvY3VzYWJsZSgpYCAtLSByZWdhcmRsZXNzIG9mIGBnZXRTaGFkb3dSb290YCBvcHRpb24gc2V0dGluZy5cblxuICAgIGlmIChpc05vZGVBdHRhY2hlZChub2RlKSkge1xuICAgICAgLy8gdGhpcyB3b3JrcyB3aGVyZXZlciB0aGUgbm9kZSBpczogaWYgdGhlcmUncyBhdCBsZWFzdCBvbmUgY2xpZW50IHJlY3QsIGl0J3NcbiAgICAgIC8vICBzb21laG93IGRpc3BsYXllZDsgaXQgYWxzbyBjb3ZlcnMgdGhlIENTUyAnZGlzcGxheTogY29udGVudHMnIGNhc2Ugd2hlcmUgdGhlXG4gICAgICAvLyAgbm9kZSBpdHNlbGYgaXMgaGlkZGVuIGluIHBsYWNlIG9mIGl0cyBjb250ZW50czsgYW5kIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZWFyY2hcbiAgICAgIC8vICB1cCB0aGUgaGllcmFyY2h5IGVpdGhlclxuICAgICAgcmV0dXJuICFub2RlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoO1xuICAgIH1cblxuICAgIC8vIEVsc2UsIHRoZSBub2RlIGlzbid0IGF0dGFjaGVkIHRvIHRoZSBkb2N1bWVudCwgd2hpY2ggbWVhbnMgdGhlIGBnZXRDbGllbnRSZWN0cygpYFxuICAgIC8vICBBUEkgd2lsbCBfX2Fsd2F5c19fIHJldHVybiB6ZXJvIHJlY3RzICh0aGlzIGNhbiBoYXBwZW4sIGZvciBleGFtcGxlLCBpZiBSZWFjdFxuICAgIC8vICBpcyB1c2VkIHRvIHJlbmRlciBub2RlcyBvbnRvIGEgZGV0YWNoZWQgdHJlZSwgYXMgY29uZmlybWVkIGluIHRoaXMgdGhyZWFkOlxuICAgIC8vICBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzkxMTcjaXNzdWVjb21tZW50LTI4NDIyODg3MClcbiAgICAvL1xuICAgIC8vIEl0IGFsc28gbWVhbnMgdGhhdCBldmVuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG5vZGUpLmRpc3BsYXkgd2lsbCByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAvLyAgYmVjYXVzZSBzdHlsZXMgYXJlIG9ubHkgY29tcHV0ZWQgZm9yIG5vZGVzIHRoYXQgYXJlIGluIHRoZSBkb2N1bWVudC5cbiAgICAvL1xuICAgIC8vIE5PVEU6IFRISVMgSEFTIEJFRU4gVEhFIENBU0UgRk9SIFlFQVJTLiBJdCBpcyBub3QgbmV3LCBub3IgaXMgaXQgY2F1c2VkIGJ5IHRhYmJhYmxlXG4gICAgLy8gIHNvbWVob3cuIFRob3VnaCBpdCB3YXMgbmV2ZXIgc3RhdGVkIG9mZmljaWFsbHksIGFueW9uZSB3aG8gaGFzIGV2ZXIgdXNlZCB0YWJiYWJsZVxuICAgIC8vICBBUElzIG9uIG5vZGVzIGluIGRldGFjaGVkIGNvbnRhaW5lcnMgaGFzIGFjdHVhbGx5IGltcGxpY2l0bHkgdXNlZCB0YWJiYWJsZSBpbiB3aGF0XG4gICAgLy8gIHdhcyBsYXRlciAoYXMgb2YgdjUuMi4wIG9uIEFwciA5LCAyMDIxKSBjYWxsZWQgYGRpc3BsYXlDaGVjaz1cIm5vbmVcImAgbW9kZSAtLSBlc3NlbnRpYWxseVxuICAgIC8vICBjb25zaWRlcmluZyBfX2V2ZXJ5dGhpbmdfXyB0byBiZSB2aXNpYmxlIGJlY2F1c2Ugb2YgdGhlIGlubmFiaWxpdHkgdG8gZGV0ZXJtaW5lIHN0eWxlcy5cbiAgICAvL1xuICAgIC8vIHY2LjAuMDogQXMgb2YgdGhpcyBtYWpvciByZWxlYXNlLCB0aGUgZGVmYXVsdCAnZnVsbCcgb3B0aW9uIF9fbm8gbG9uZ2VyIHRyZWF0cyBkZXRhY2hlZFxuICAgIC8vICBub2RlcyBhcyB2aXNpYmxlIHdpdGggdGhlICdub25lJyBmYWxsYmFjay5fX1xuICAgIGlmIChkaXNwbGF5Q2hlY2sgIT09ICdsZWdhY3ktZnVsbCcpIHtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBoaWRkZW5cbiAgICB9XG4gICAgLy8gZWxzZSwgZmFsbGJhY2sgdG8gJ25vbmUnIG1vZGUgYW5kIGNvbnNpZGVyIHRoZSBub2RlIHZpc2libGVcbiAgfSBlbHNlIGlmIChkaXNwbGF5Q2hlY2sgPT09ICdub24temVyby1hcmVhJykge1xuICAgIC8vIE5PVEU6IEV2ZW4gdGhvdWdoIHRoaXMgdGVzdHMgdGhhdCB0aGUgbm9kZSdzIGNsaWVudCByZWN0IGlzIG5vbi16ZXJvIHRvIGRldGVybWluZVxuICAgIC8vICB3aGV0aGVyIGl0J3MgZGlzcGxheWVkLCBhbmQgdGhhdCBhIGRldGFjaGVkIG5vZGUgd2lsbCBfX2Fsd2F5c19fIGhhdmUgYSB6ZXJvLWFyZWFcbiAgICAvLyAgY2xpZW50IHJlY3QsIHdlIGRvbid0IHNwZWNpYWwtY2FzZSBmb3Igd2hldGhlciB0aGUgbm9kZSBpcyBhdHRhY2hlZCBvciBub3QuIEluXG4gICAgLy8gIHRoaXMgbW9kZSwgd2UgZG8gd2FudCB0byBjb25zaWRlciBub2RlcyB0aGF0IGhhdmUgYSB6ZXJvIGFyZWEgdG8gYmUgaGlkZGVuIGF0IGFsbFxuICAgIC8vICB0aW1lcywgYW5kIHRoYXQgaW5jbHVkZXMgYXR0YWNoZWQgb3Igbm90LlxuICAgIHJldHVybiBpc1plcm9BcmVhKG5vZGUpO1xuICB9XG5cbiAgLy8gdmlzaWJsZSwgYXMgZmFyIGFzIHdlIGNhbiB0ZWxsLCBvciBwZXIgY3VycmVudCBgZGlzcGxheUNoZWNrPW5vbmVgIG1vZGUsIHdlIGFzc3VtZVxuICAvLyAgaXQncyB2aXNpYmxlXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8vIGZvcm0gZmllbGRzIChuZXN0ZWQpIGluc2lkZSBhIGRpc2FibGVkIGZpZWxkc2V0IGFyZSBub3QgZm9jdXNhYmxlL3RhYmJhYmxlXG4vLyAgdW5sZXNzIHRoZXkgYXJlIGluIHRoZSBfZmlyc3RfIDxsZWdlbmQ+IGVsZW1lbnQgb2YgdGhlIHRvcC1tb3N0IGRpc2FibGVkXG4vLyAgZmllbGRzZXRcbnZhciBpc0Rpc2FibGVkRnJvbUZpZWxkc2V0ID0gZnVuY3Rpb24gaXNEaXNhYmxlZEZyb21GaWVsZHNldChub2RlKSB7XG4gIGlmICgvXihJTlBVVHxCVVRUT058U0VMRUNUfFRFWFRBUkVBKSQvLnRlc3Qobm9kZS50YWdOYW1lKSkge1xuICAgIHZhciBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnRFbGVtZW50O1xuICAgIC8vIGNoZWNrIGlmIGBub2RlYCBpcyBjb250YWluZWQgaW4gYSBkaXNhYmxlZCA8ZmllbGRzZXQ+XG4gICAgd2hpbGUgKHBhcmVudE5vZGUpIHtcbiAgICAgIGlmIChwYXJlbnROb2RlLnRhZ05hbWUgPT09ICdGSUVMRFNFVCcgJiYgcGFyZW50Tm9kZS5kaXNhYmxlZCkge1xuICAgICAgICAvLyBsb29rIGZvciB0aGUgZmlyc3QgPGxlZ2VuZD4gYW1vbmcgdGhlIGNoaWxkcmVuIG9mIHRoZSBkaXNhYmxlZCA8ZmllbGRzZXQ+XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50Tm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBjaGlsZCA9IHBhcmVudE5vZGUuY2hpbGRyZW4uaXRlbShpKTtcbiAgICAgICAgICAvLyB3aGVuIHRoZSBmaXJzdCA8bGVnZW5kPiAoaW4gZG9jdW1lbnQgb3JkZXIpIGlzIGZvdW5kXG4gICAgICAgICAgaWYgKGNoaWxkLnRhZ05hbWUgPT09ICdMRUdFTkQnKSB7XG4gICAgICAgICAgICAvLyBpZiBpdHMgcGFyZW50IDxmaWVsZHNldD4gaXMgbm90IG5lc3RlZCBpbiBhbm90aGVyIGRpc2FibGVkIDxmaWVsZHNldD4sXG4gICAgICAgICAgICAvLyByZXR1cm4gd2hldGhlciBgbm9kZWAgaXMgYSBkZXNjZW5kYW50IG9mIGl0cyBmaXJzdCA8bGVnZW5kPlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMuY2FsbChwYXJlbnROb2RlLCAnZmllbGRzZXRbZGlzYWJsZWRdIConKSA/IHRydWUgOiAhY2hpbGQuY29udGFpbnMobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHRoZSBkaXNhYmxlZCA8ZmllbGRzZXQ+IGNvbnRhaW5pbmcgYG5vZGVgIGhhcyBubyA8bGVnZW5kPlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gZWxzZSwgbm9kZSdzIHRhYmJhYmxlL2ZvY3VzYWJsZSBzdGF0ZSBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGEgZmllbGRzZXQnc1xuICAvLyAgZW5hYmxlZC9kaXNhYmxlZCBzdGF0ZVxuICByZXR1cm4gZmFsc2U7XG59O1xudmFyIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JGb2N1c2FibGUgPSBmdW5jdGlvbiBpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlKG9wdGlvbnMsIG5vZGUpIHtcbiAgaWYgKG5vZGUuZGlzYWJsZWQgfHxcbiAgLy8gd2UgbXVzdCBkbyBhbiBpbmVydCBsb29rIHVwIHRvIGZpbHRlciBvdXQgYW55IGVsZW1lbnRzIGluc2lkZSBhbiBpbmVydCBhbmNlc3RvclxuICAvLyAgYmVjYXVzZSB3ZSdyZSBsaW1pdGVkIGluIHRoZSB0eXBlIG9mIHNlbGVjdG9ycyB3ZSBjYW4gdXNlIGluIEpTRG9tIChzZWUgcmVsYXRlZFxuICAvLyAgbm90ZSByZWxhdGVkIHRvIGBjYW5kaWRhdGVTZWxlY3RvcnNgKVxuICBpc0luZXJ0KG5vZGUpIHx8IGlzSGlkZGVuSW5wdXQobm9kZSkgfHwgaXNIaWRkZW4obm9kZSwgb3B0aW9ucykgfHxcbiAgLy8gRm9yIGEgZGV0YWlscyBlbGVtZW50IHdpdGggYSBzdW1tYXJ5LCB0aGUgc3VtbWFyeSBlbGVtZW50IGdldHMgdGhlIGZvY3VzXG4gIGlzRGV0YWlsc1dpdGhTdW1tYXJ5KG5vZGUpIHx8IGlzRGlzYWJsZWRGcm9tRmllbGRzZXQobm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xudmFyIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JUYWJiYWJsZSA9IGZ1bmN0aW9uIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JUYWJiYWJsZShvcHRpb25zLCBub2RlKSB7XG4gIGlmIChpc05vblRhYmJhYmxlUmFkaW8obm9kZSkgfHwgZ2V0VGFiSW5kZXgobm9kZSkgPCAwIHx8ICFpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlKG9wdGlvbnMsIG5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBpc1ZhbGlkU2hhZG93Um9vdFRhYmJhYmxlID0gZnVuY3Rpb24gaXNWYWxpZFNoYWRvd1Jvb3RUYWJiYWJsZShzaGFkb3dIb3N0Tm9kZSkge1xuICB2YXIgdGFiSW5kZXggPSBwYXJzZUludChzaGFkb3dIb3N0Tm9kZS5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JyksIDEwKTtcbiAgaWYgKGlzTmFOKHRhYkluZGV4KSB8fCB0YWJJbmRleCA+PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gSWYgYSBjdXN0b20gZWxlbWVudCBoYXMgYW4gZXhwbGljaXQgbmVnYXRpdmUgdGFiaW5kZXgsXG4gIC8vIGJyb3dzZXJzIHdpbGwgbm90IGFsbG93IHRhYiB0YXJnZXRpbmcgc2FpZCBlbGVtZW50J3MgY2hpbGRyZW4uXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheS48RWxlbWVudHxDYW5kaWRhdGVTY29wZT59IGNhbmRpZGF0ZXNcbiAqIEByZXR1cm5zIEVsZW1lbnRbXVxuICovXG52YXIgc29ydEJ5T3JkZXIgPSBmdW5jdGlvbiBzb3J0QnlPcmRlcihjYW5kaWRhdGVzKSB7XG4gIHZhciByZWd1bGFyVGFiYmFibGVzID0gW107XG4gIHZhciBvcmRlcmVkVGFiYmFibGVzID0gW107XG4gIGNhbmRpZGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaSkge1xuICAgIHZhciBpc1Njb3BlID0gISFpdGVtLnNjb3BlUGFyZW50O1xuICAgIHZhciBlbGVtZW50ID0gaXNTY29wZSA/IGl0ZW0uc2NvcGVQYXJlbnQgOiBpdGVtO1xuICAgIHZhciBjYW5kaWRhdGVUYWJpbmRleCA9IGdldFNvcnRPcmRlclRhYkluZGV4KGVsZW1lbnQsIGlzU2NvcGUpO1xuICAgIHZhciBlbGVtZW50cyA9IGlzU2NvcGUgPyBzb3J0QnlPcmRlcihpdGVtLmNhbmRpZGF0ZXMpIDogZWxlbWVudDtcbiAgICBpZiAoY2FuZGlkYXRlVGFiaW5kZXggPT09IDApIHtcbiAgICAgIGlzU2NvcGUgPyByZWd1bGFyVGFiYmFibGVzLnB1c2guYXBwbHkocmVndWxhclRhYmJhYmxlcywgZWxlbWVudHMpIDogcmVndWxhclRhYmJhYmxlcy5wdXNoKGVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcmRlcmVkVGFiYmFibGVzLnB1c2goe1xuICAgICAgICBkb2N1bWVudE9yZGVyOiBpLFxuICAgICAgICB0YWJJbmRleDogY2FuZGlkYXRlVGFiaW5kZXgsXG4gICAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICAgIGlzU2NvcGU6IGlzU2NvcGUsXG4gICAgICAgIGNvbnRlbnQ6IGVsZW1lbnRzXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3JkZXJlZFRhYmJhYmxlcy5zb3J0KHNvcnRPcmRlcmVkVGFiYmFibGVzKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgc29ydGFibGUpIHtcbiAgICBzb3J0YWJsZS5pc1Njb3BlID8gYWNjLnB1c2guYXBwbHkoYWNjLCBzb3J0YWJsZS5jb250ZW50KSA6IGFjYy5wdXNoKHNvcnRhYmxlLmNvbnRlbnQpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKS5jb25jYXQocmVndWxhclRhYmJhYmxlcyk7XG59O1xudmFyIHRhYmJhYmxlID0gZnVuY3Rpb24gdGFiYmFibGUoY29udGFpbmVyLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgY2FuZGlkYXRlcztcbiAgaWYgKG9wdGlvbnMuZ2V0U2hhZG93Um9vdCkge1xuICAgIGNhbmRpZGF0ZXMgPSBnZXRDYW5kaWRhdGVzSXRlcmF0aXZlbHkoW2NvbnRhaW5lcl0sIG9wdGlvbnMuaW5jbHVkZUNvbnRhaW5lciwge1xuICAgICAgZmlsdGVyOiBpc05vZGVNYXRjaGluZ1NlbGVjdG9yVGFiYmFibGUuYmluZChudWxsLCBvcHRpb25zKSxcbiAgICAgIGZsYXR0ZW46IGZhbHNlLFxuICAgICAgZ2V0U2hhZG93Um9vdDogb3B0aW9ucy5nZXRTaGFkb3dSb290LFxuICAgICAgc2hhZG93Um9vdEZpbHRlcjogaXNWYWxpZFNoYWRvd1Jvb3RUYWJiYWJsZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNhbmRpZGF0ZXMgPSBnZXRDYW5kaWRhdGVzKGNvbnRhaW5lciwgb3B0aW9ucy5pbmNsdWRlQ29udGFpbmVyLCBpc05vZGVNYXRjaGluZ1NlbGVjdG9yVGFiYmFibGUuYmluZChudWxsLCBvcHRpb25zKSk7XG4gIH1cbiAgcmV0dXJuIHNvcnRCeU9yZGVyKGNhbmRpZGF0ZXMpO1xufTtcbnZhciBmb2N1c2FibGUgPSBmdW5jdGlvbiBmb2N1c2FibGUoY29udGFpbmVyLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgY2FuZGlkYXRlcztcbiAgaWYgKG9wdGlvbnMuZ2V0U2hhZG93Um9vdCkge1xuICAgIGNhbmRpZGF0ZXMgPSBnZXRDYW5kaWRhdGVzSXRlcmF0aXZlbHkoW2NvbnRhaW5lcl0sIG9wdGlvbnMuaW5jbHVkZUNvbnRhaW5lciwge1xuICAgICAgZmlsdGVyOiBpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlLmJpbmQobnVsbCwgb3B0aW9ucyksXG4gICAgICBmbGF0dGVuOiB0cnVlLFxuICAgICAgZ2V0U2hhZG93Um9vdDogb3B0aW9ucy5nZXRTaGFkb3dSb290XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY2FuZGlkYXRlcyA9IGdldENhbmRpZGF0ZXMoY29udGFpbmVyLCBvcHRpb25zLmluY2x1ZGVDb250YWluZXIsIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JGb2N1c2FibGUuYmluZChudWxsLCBvcHRpb25zKSk7XG4gIH1cbiAgcmV0dXJuIGNhbmRpZGF0ZXM7XG59O1xudmFyIGlzVGFiYmFibGUgPSBmdW5jdGlvbiBpc1RhYmJhYmxlKG5vZGUsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGlmICghbm9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gbm9kZSBwcm92aWRlZCcpO1xuICB9XG4gIGlmIChtYXRjaGVzLmNhbGwobm9kZSwgY2FuZGlkYXRlU2VsZWN0b3IpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlKG9wdGlvbnMsIG5vZGUpO1xufTtcbnZhciBmb2N1c2FibGVDYW5kaWRhdGVTZWxlY3RvciA9IC8qICNfX1BVUkVfXyAqL2NhbmRpZGF0ZVNlbGVjdG9ycy5jb25jYXQoJ2lmcmFtZScpLmpvaW4oJywnKTtcbnZhciBpc0ZvY3VzYWJsZSA9IGZ1bmN0aW9uIGlzRm9jdXNhYmxlKG5vZGUsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGlmICghbm9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gbm9kZSBwcm92aWRlZCcpO1xuICB9XG4gIGlmIChtYXRjaGVzLmNhbGwobm9kZSwgZm9jdXNhYmxlQ2FuZGlkYXRlU2VsZWN0b3IpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZShvcHRpb25zLCBub2RlKTtcbn07XG5cbmV4cG9ydCB7IGZvY3VzYWJsZSwgZ2V0VGFiSW5kZXgsIGlzRm9jdXNhYmxlLCBpc1RhYmJhYmxlLCB0YWJiYWJsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZXNtLmpzLm1hcFxuIiwiaW1wb3J0IHsgY29tcHV0ZVBvc2l0aW9uLCBhcnJvdyBhcyBhcnJvdyQyLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIHNoaWZ0IGFzIHNoaWZ0JDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBoaWRlIGFzIGhpZGUkMSwgaW5saW5lIGFzIGlubGluZSQxIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5leHBvcnQgeyBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgcGxhdGZvcm0gfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUxheW91dEVmZmVjdCwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcblxudmFyIGluZGV4ID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyA/IHVzZUxheW91dEVmZmVjdCA6IHVzZUVmZmVjdDtcblxuLy8gRm9yayBvZiBgZmFzdC1kZWVwLWVxdWFsYCB0aGF0IG9ubHkgZG9lcyB0aGUgY29tcGFyaXNvbnMgd2UgbmVlZCBhbmQgY29tcGFyZXNcbi8vIGZ1bmN0aW9uc1xuZnVuY3Rpb24gZGVlcEVxdWFsKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJyAmJiBhLnRvU3RyaW5nKCkgPT09IGIudG9TdHJpbmcoKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxldCBsZW5ndGg7XG4gIGxldCBpO1xuICBsZXQga2V5cztcbiAgaWYgKGEgJiYgYiAmJiB0eXBlb2YgYSA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuICAgICAgbGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICAgIGlmICghZGVlcEVxdWFsKGFbaV0sIGJbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChsZW5ndGggIT09IE9iamVjdC5rZXlzKGIpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGlmICghe30uaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXlzW2ldKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgIGlmIChrZXkgPT09ICdfb3duZXInICYmIGEuJCR0eXBlb2YpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWRlZXBFcXVhbChhW2tleV0sIGJba2V5XSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gYSAhPT0gYSAmJiBiICE9PSBiO1xufVxuXG5mdW5jdGlvbiBnZXREUFIoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICByZXR1cm4gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbn1cblxuZnVuY3Rpb24gcm91bmRCeURQUihlbGVtZW50LCB2YWx1ZSkge1xuICBjb25zdCBkcHIgPSBnZXREUFIoZWxlbWVudCk7XG4gIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogZHByKSAvIGRwcjtcbn1cblxuZnVuY3Rpb24gdXNlTGF0ZXN0UmVmKHZhbHVlKSB7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZih2YWx1ZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZjtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGEgZmxvYXRpbmcgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VGbG9hdGluZ1xuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIHJlZmVyZW5jZTogZXh0ZXJuYWxSZWZlcmVuY2UsXG4gICAgICBmbG9hdGluZzogZXh0ZXJuYWxGbG9hdGluZ1xuICAgIH0gPSB7fSxcbiAgICB0cmFuc2Zvcm0gPSB0cnVlLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkLFxuICAgIG9wZW5cbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgc3RyYXRlZ3ksXG4gICAgcGxhY2VtZW50LFxuICAgIG1pZGRsZXdhcmVEYXRhOiB7fSxcbiAgICBpc1Bvc2l0aW9uZWQ6IGZhbHNlXG4gIH0pO1xuICBjb25zdCBbbGF0ZXN0TWlkZGxld2FyZSwgc2V0TGF0ZXN0TWlkZGxld2FyZV0gPSBSZWFjdC51c2VTdGF0ZShtaWRkbGV3YXJlKTtcbiAgaWYgKCFkZWVwRXF1YWwobGF0ZXN0TWlkZGxld2FyZSwgbWlkZGxld2FyZSkpIHtcbiAgICBzZXRMYXRlc3RNaWRkbGV3YXJlKG1pZGRsZXdhcmUpO1xuICB9XG4gIGNvbnN0IFtfcmVmZXJlbmNlLCBfc2V0UmVmZXJlbmNlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbX2Zsb2F0aW5nLCBfc2V0RmxvYXRpbmddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHNldFJlZmVyZW5jZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGlmIChub2RlICE9PSByZWZlcmVuY2VSZWYuY3VycmVudCkge1xuICAgICAgcmVmZXJlbmNlUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgX3NldFJlZmVyZW5jZShub2RlKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgY29uc3Qgc2V0RmxvYXRpbmcgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPT0gZmxvYXRpbmdSZWYuY3VycmVudCkge1xuICAgICAgZmxvYXRpbmdSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBfc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgfVxuICB9LCBbXSk7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gZXh0ZXJuYWxSZWZlcmVuY2UgfHwgX3JlZmVyZW5jZTtcbiAgY29uc3QgZmxvYXRpbmdFbCA9IGV4dGVybmFsRmxvYXRpbmcgfHwgX2Zsb2F0aW5nO1xuICBjb25zdCByZWZlcmVuY2VSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGZsb2F0aW5nUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBkYXRhUmVmID0gUmVhY3QudXNlUmVmKGRhdGEpO1xuICBjb25zdCBoYXNXaGlsZUVsZW1lbnRzTW91bnRlZCA9IHdoaWxlRWxlbWVudHNNb3VudGVkICE9IG51bGw7XG4gIGNvbnN0IHdoaWxlRWxlbWVudHNNb3VudGVkUmVmID0gdXNlTGF0ZXN0UmVmKHdoaWxlRWxlbWVudHNNb3VudGVkKTtcbiAgY29uc3QgcGxhdGZvcm1SZWYgPSB1c2VMYXRlc3RSZWYocGxhdGZvcm0pO1xuICBjb25zdCBvcGVuUmVmID0gdXNlTGF0ZXN0UmVmKG9wZW4pO1xuICBjb25zdCB1cGRhdGUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFyZWZlcmVuY2VSZWYuY3VycmVudCB8fCAhZmxvYXRpbmdSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBwbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmU6IGxhdGVzdE1pZGRsZXdhcmVcbiAgICB9O1xuICAgIGlmIChwbGF0Zm9ybVJlZi5jdXJyZW50KSB7XG4gICAgICBjb25maWcucGxhdGZvcm0gPSBwbGF0Zm9ybVJlZi5jdXJyZW50O1xuICAgIH1cbiAgICBjb21wdXRlUG9zaXRpb24ocmVmZXJlbmNlUmVmLmN1cnJlbnQsIGZsb2F0aW5nUmVmLmN1cnJlbnQsIGNvbmZpZykudGhlbihkYXRhID0+IHtcbiAgICAgIGNvbnN0IGZ1bGxEYXRhID0ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICAvLyBUaGUgZmxvYXRpbmcgZWxlbWVudCdzIHBvc2l0aW9uIG1heSBiZSByZWNvbXB1dGVkIHdoaWxlIGl0J3MgY2xvc2VkXG4gICAgICAgIC8vIGJ1dCBzdGlsbCBtb3VudGVkIChzdWNoIGFzIHdoZW4gdHJhbnNpdGlvbmluZyBvdXQpLiBUbyBlbnN1cmVcbiAgICAgICAgLy8gYGlzUG9zaXRpb25lZGAgd2lsbCBiZSBgZmFsc2VgIGluaXRpYWxseSBvbiB0aGUgbmV4dCBvcGVuLCBhdm9pZFxuICAgICAgICAvLyBzZXR0aW5nIGl0IHRvIGB0cnVlYCB3aGVuIGBvcGVuID09PSBmYWxzZWAgKG11c3QgYmUgc3BlY2lmaWVkKS5cbiAgICAgICAgaXNQb3NpdGlvbmVkOiBvcGVuUmVmLmN1cnJlbnQgIT09IGZhbHNlXG4gICAgICB9O1xuICAgICAgaWYgKGlzTW91bnRlZFJlZi5jdXJyZW50ICYmICFkZWVwRXF1YWwoZGF0YVJlZi5jdXJyZW50LCBmdWxsRGF0YSkpIHtcbiAgICAgICAgZGF0YVJlZi5jdXJyZW50ID0gZnVsbERhdGE7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgc2V0RGF0YShmdWxsRGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbbGF0ZXN0TWlkZGxld2FyZSwgcGxhY2VtZW50LCBzdHJhdGVneSwgcGxhdGZvcm1SZWYsIG9wZW5SZWZdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChvcGVuID09PSBmYWxzZSAmJiBkYXRhUmVmLmN1cnJlbnQuaXNQb3NpdGlvbmVkKSB7XG4gICAgICBkYXRhUmVmLmN1cnJlbnQuaXNQb3NpdGlvbmVkID0gZmFsc2U7XG4gICAgICBzZXREYXRhKGRhdGEgPT4gKHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaXNQb3NpdGlvbmVkOiBmYWxzZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwgW29wZW5dKTtcbiAgY29uc3QgaXNNb3VudGVkUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAocmVmZXJlbmNlRWwpIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gcmVmZXJlbmNlRWw7XG4gICAgaWYgKGZsb2F0aW5nRWwpIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBmbG9hdGluZ0VsO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiBmbG9hdGluZ0VsKSB7XG4gICAgICBpZiAod2hpbGVFbGVtZW50c01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gd2hpbGVFbGVtZW50c01vdW50ZWRSZWYuY3VycmVudChyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbCwgdXBkYXRlKTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgfSwgW3JlZmVyZW5jZUVsLCBmbG9hdGluZ0VsLCB1cGRhdGUsIHdoaWxlRWxlbWVudHNNb3VudGVkUmVmLCBoYXNXaGlsZUVsZW1lbnRzTW91bnRlZF0pO1xuICBjb25zdCByZWZzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlUmVmLFxuICAgIGZsb2F0aW5nOiBmbG9hdGluZ1JlZixcbiAgICBzZXRSZWZlcmVuY2UsXG4gICAgc2V0RmxvYXRpbmdcbiAgfSksIFtzZXRSZWZlcmVuY2UsIHNldEZsb2F0aW5nXSk7XG4gIGNvbnN0IGVsZW1lbnRzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlRWwsXG4gICAgZmxvYXRpbmc6IGZsb2F0aW5nRWxcbiAgfSksIFtyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbF0pO1xuICBjb25zdCBmbG9hdGluZ1N0eWxlcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxTdHlsZXMgPSB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3ksXG4gICAgICBsZWZ0OiAwLFxuICAgICAgdG9wOiAwXG4gICAgfTtcbiAgICBpZiAoIWVsZW1lbnRzLmZsb2F0aW5nKSB7XG4gICAgICByZXR1cm4gaW5pdGlhbFN0eWxlcztcbiAgICB9XG4gICAgY29uc3QgeCA9IHJvdW5kQnlEUFIoZWxlbWVudHMuZmxvYXRpbmcsIGRhdGEueCk7XG4gICAgY29uc3QgeSA9IHJvdW5kQnlEUFIoZWxlbWVudHMuZmxvYXRpbmcsIGRhdGEueSk7XG4gICAgaWYgKHRyYW5zZm9ybSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5pdGlhbFN0eWxlcyxcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4KVwiLFxuICAgICAgICAuLi4oZ2V0RFBSKGVsZW1lbnRzLmZsb2F0aW5nKSA+PSAxLjUgJiYge1xuICAgICAgICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LFxuICAgICAgbGVmdDogeCxcbiAgICAgIHRvcDogeVxuICAgIH07XG4gIH0sIFtzdHJhdGVneSwgdHJhbnNmb3JtLCBlbGVtZW50cy5mbG9hdGluZywgZGF0YS54LCBkYXRhLnldKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAuLi5kYXRhLFxuICAgIHVwZGF0ZSxcbiAgICByZWZzLFxuICAgIGVsZW1lbnRzLFxuICAgIGZsb2F0aW5nU3R5bGVzXG4gIH0pLCBbZGF0YSwgdXBkYXRlLCByZWZzLCBlbGVtZW50cywgZmxvYXRpbmdTdHlsZXNdKTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBUaGlzIHdyYXBzIHRoZSBjb3JlIGBhcnJvd2AgbWlkZGxld2FyZSB0byBhbGxvdyBSZWFjdCByZWZzIGFzIHRoZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93JDEgPSBvcHRpb25zID0+IHtcbiAgZnVuY3Rpb24gaXNSZWYodmFsdWUpIHtcbiAgICByZXR1cm4ge30uaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2N1cnJlbnQnKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdhcnJvdycsXG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBlbGVtZW50LFxuICAgICAgICBwYWRkaW5nXG4gICAgICB9ID0gdHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicgPyBvcHRpb25zKHN0YXRlKSA6IG9wdGlvbnM7XG4gICAgICBpZiAoZWxlbWVudCAmJiBpc1JlZihlbGVtZW50KSkge1xuICAgICAgICBpZiAoZWxlbWVudC5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gYXJyb3ckMih7XG4gICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LmN1cnJlbnQsXG4gICAgICAgICAgICBwYWRkaW5nXG4gICAgICAgICAgfSkuZm4oc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBhcnJvdyQyKHtcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIHBhZGRpbmdcbiAgICAgICAgfSkuZm4oc3RhdGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IChvcHRpb25zLCBkZXBzKSA9PiAoe1xuICAuLi5vZmZzZXQkMShvcHRpb25zKSxcbiAgb3B0aW9uczogW29wdGlvbnMsIGRlcHNdXG59KTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gKG9wdGlvbnMsIGRlcHMpID0+ICh7XG4gIC4uLnNoaWZ0JDEob3B0aW9ucyksXG4gIG9wdGlvbnM6IFtvcHRpb25zLCBkZXBzXVxufSk7XG5cbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4ubGltaXRTaGlmdCQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IChvcHRpb25zLCBkZXBzKSA9PiAoe1xuICAuLi5mbGlwJDEob3B0aW9ucyksXG4gIG9wdGlvbnM6IFtvcHRpb25zLCBkZXBzXVxufSk7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IChvcHRpb25zLCBkZXBzKSA9PiAoe1xuICAuLi5zaXplJDEob3B0aW9ucyksXG4gIG9wdGlvbnM6IFtvcHRpb25zLCBkZXBzXVxufSk7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gKG9wdGlvbnMsIGRlcHMpID0+ICh7XG4gIC4uLmF1dG9QbGFjZW1lbnQkMShvcHRpb25zKSxcbiAgb3B0aW9uczogW29wdGlvbnMsIGRlcHNdXG59KTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4uaGlkZSQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4uaW5saW5lJDEob3B0aW9ucyksXG4gIG9wdGlvbnM6IFtvcHRpb25zLCBkZXBzXVxufSk7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogVGhpcyB3cmFwcyB0aGUgY29yZSBgYXJyb3dgIG1pZGRsZXdhcmUgdG8gYWxsb3cgUmVhY3QgcmVmcyBhcyB0aGUgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IChvcHRpb25zLCBkZXBzKSA9PiAoe1xuICAuLi5hcnJvdyQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHNoaWZ0LCBzaXplLCB1c2VGbG9hdGluZyB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0LCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHN0b3BFdmVudCwgZ2V0RG9jdW1lbnQsIGlzTW91c2VMaWtlUG9pbnRlclR5cGUsIGNvbnRhaW5zLCBhY3RpdmVFbGVtZW50LCBpc1NhZmFyaSwgaXNUeXBlYWJsZUNvbWJvYm94LCBpc1ZpcnR1YWxDbGljaywgaXNWaXJ0dWFsUG9pbnRlckV2ZW50LCBnZXRUYXJnZXQsIGdldFBsYXRmb3JtLCBpc1R5cGVhYmxlRWxlbWVudCwgaXNSZWFjdEV2ZW50LCBpc1Jvb3RFbGVtZW50LCBpc0V2ZW50VGFyZ2V0V2l0aGluLCBpc01hYywgZ2V0VXNlckFnZW50IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0L3V0aWxzJztcbmltcG9ydCB7IGZsb29yLCBldmFsdWF0ZSB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5pbXBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBpc0VsZW1lbnQsIGdldE5vZGVOYW1lLCBpc0hUTUxFbGVtZW50LCBnZXRXaW5kb3csIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgZ2V0UGFyZW50Tm9kZSB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuaW1wb3J0IHsgdGFiYmFibGUsIGlzVGFiYmFibGUgfSBmcm9tICd0YWJiYWJsZSc7XG5pbXBvcnQgKiBhcyBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIHVzZUZsb2F0aW5nIGFzIHVzZUZsb2F0aW5nJDEsIG9mZnNldCwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QtZG9tJztcbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdC1kb20nO1xuXG4vKipcbiAqIE1lcmdlcyBhbiBhcnJheSBvZiByZWZzIGludG8gYSBzaW5nbGUgbWVtb2l6ZWQgY2FsbGJhY2sgcmVmIG9yIGBudWxsYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9yZWFjdC11dGlscyN1c2VtZXJnZXJlZnNcbiAqL1xuZnVuY3Rpb24gdXNlTWVyZ2VSZWZzKHJlZnMpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChyZWZzLmV2ZXJ5KHJlZiA9PiByZWYgPT0gbnVsbCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgPT4ge1xuICAgICAgcmVmcy5mb3JFYWNoKHJlZiA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmVmKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZWYgIT0gbnVsbCkge1xuICAgICAgICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCByZWZzKTtcbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL211aS9tYXRlcmlhbC11aS9pc3N1ZXMvNDExOTAjaXNzdWVjb21tZW50LTIwNDA4NzMzNzlcbmNvbnN0IFNhZmVSZWFjdCA9IHtcbiAgLi4uUmVhY3Rcbn07XG5cbmNvbnN0IHVzZUluc2VydGlvbkVmZmVjdCA9IFNhZmVSZWFjdC51c2VJbnNlcnRpb25FZmZlY3Q7XG5jb25zdCB1c2VTYWZlSW5zZXJ0aW9uRWZmZWN0ID0gdXNlSW5zZXJ0aW9uRWZmZWN0IHx8IChmbiA9PiBmbigpKTtcbmZ1bmN0aW9uIHVzZUVmZmVjdEV2ZW50KGNhbGxiYWNrKSB7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZigoKSA9PiB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY2FsbCBhbiBldmVudCBoYW5kbGVyIHdoaWxlIHJlbmRlcmluZy4nKTtcbiAgICB9XG4gIH0pO1xuICB1c2VTYWZlSW5zZXJ0aW9uRWZmZWN0KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IGNhbGxiYWNrO1xuICB9KTtcbiAgcmV0dXJuIFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIHJldHVybiByZWYuY3VycmVudCA9PSBudWxsID8gdm9pZCAwIDogcmVmLmN1cnJlbnQoLi4uYXJncyk7XG4gIH0sIFtdKTtcbn1cblxuY29uc3QgQVJST1dfVVAgPSAnQXJyb3dVcCc7XG5jb25zdCBBUlJPV19ET1dOID0gJ0Fycm93RG93bic7XG5jb25zdCBBUlJPV19MRUZUID0gJ0Fycm93TGVmdCc7XG5jb25zdCBBUlJPV19SSUdIVCA9ICdBcnJvd1JpZ2h0JztcbmZ1bmN0aW9uIGlzRGlmZmVyZW50Um93KGluZGV4LCBjb2xzLCBwcmV2Um93KSB7XG4gIHJldHVybiBNYXRoLmZsb29yKGluZGV4IC8gY29scykgIT09IHByZXZSb3c7XG59XG5mdW5jdGlvbiBpc0luZGV4T3V0T2ZCb3VuZHMobGlzdFJlZiwgaW5kZXgpIHtcbiAgcmV0dXJuIGluZGV4IDwgMCB8fCBpbmRleCA+PSBsaXN0UmVmLmN1cnJlbnQubGVuZ3RoO1xufVxuZnVuY3Rpb24gZ2V0TWluSW5kZXgobGlzdFJlZiwgZGlzYWJsZWRJbmRpY2VzKSB7XG4gIHJldHVybiBmaW5kTm9uRGlzYWJsZWRJbmRleChsaXN0UmVmLCB7XG4gICAgZGlzYWJsZWRJbmRpY2VzXG4gIH0pO1xufVxuZnVuY3Rpb24gZ2V0TWF4SW5kZXgobGlzdFJlZiwgZGlzYWJsZWRJbmRpY2VzKSB7XG4gIHJldHVybiBmaW5kTm9uRGlzYWJsZWRJbmRleChsaXN0UmVmLCB7XG4gICAgZGVjcmVtZW50OiB0cnVlLFxuICAgIHN0YXJ0aW5nSW5kZXg6IGxpc3RSZWYuY3VycmVudC5sZW5ndGgsXG4gICAgZGlzYWJsZWRJbmRpY2VzXG4gIH0pO1xufVxuZnVuY3Rpb24gZmluZE5vbkRpc2FibGVkSW5kZXgobGlzdFJlZiwgX3RlbXApIHtcbiAgbGV0IHtcbiAgICBzdGFydGluZ0luZGV4ID0gLTEsXG4gICAgZGVjcmVtZW50ID0gZmFsc2UsXG4gICAgZGlzYWJsZWRJbmRpY2VzLFxuICAgIGFtb3VudCA9IDFcbiAgfSA9IF90ZW1wID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wO1xuICBjb25zdCBsaXN0ID0gbGlzdFJlZi5jdXJyZW50O1xuICBsZXQgaW5kZXggPSBzdGFydGluZ0luZGV4O1xuICBkbyB7XG4gICAgaW5kZXggKz0gZGVjcmVtZW50ID8gLWFtb3VudCA6IGFtb3VudDtcbiAgfSB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8PSBsaXN0Lmxlbmd0aCAtIDEgJiYgaXNEaXNhYmxlZChsaXN0LCBpbmRleCwgZGlzYWJsZWRJbmRpY2VzKSk7XG4gIHJldHVybiBpbmRleDtcbn1cbmZ1bmN0aW9uIGdldEdyaWROYXZpZ2F0ZWRJbmRleChlbGVtZW50c1JlZiwgX3JlZikge1xuICBsZXQge1xuICAgIGV2ZW50LFxuICAgIG9yaWVudGF0aW9uLFxuICAgIGxvb3AsXG4gICAgY29scyxcbiAgICBkaXNhYmxlZEluZGljZXMsXG4gICAgbWluSW5kZXgsXG4gICAgbWF4SW5kZXgsXG4gICAgcHJldkluZGV4LFxuICAgIHN0b3BFdmVudDogc3RvcCA9IGZhbHNlXG4gIH0gPSBfcmVmO1xuICBsZXQgbmV4dEluZGV4ID0gcHJldkluZGV4O1xuICBpZiAoZXZlbnQua2V5ID09PSBBUlJPV19VUCkge1xuICAgIHN0b3AgJiYgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICBpZiAocHJldkluZGV4ID09PSAtMSkge1xuICAgICAgbmV4dEluZGV4ID0gbWF4SW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgIHN0YXJ0aW5nSW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgYW1vdW50OiBjb2xzLFxuICAgICAgICBkZWNyZW1lbnQ6IHRydWUsXG4gICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgfSk7XG4gICAgICBpZiAobG9vcCAmJiAocHJldkluZGV4IC0gY29scyA8IG1pbkluZGV4IHx8IG5leHRJbmRleCA8IDApKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IHByZXZJbmRleCAlIGNvbHM7XG4gICAgICAgIGNvbnN0IG1heENvbCA9IG1heEluZGV4ICUgY29scztcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gbWF4SW5kZXggLSAobWF4Q29sIC0gY29sKTtcbiAgICAgICAgaWYgKG1heENvbCA9PT0gY29sKSB7XG4gICAgICAgICAgbmV4dEluZGV4ID0gbWF4SW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dEluZGV4ID0gbWF4Q29sID4gY29sID8gb2Zmc2V0IDogb2Zmc2V0IC0gY29scztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNJbmRleE91dE9mQm91bmRzKGVsZW1lbnRzUmVmLCBuZXh0SW5kZXgpKSB7XG4gICAgICBuZXh0SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgfVxuICB9XG4gIGlmIChldmVudC5rZXkgPT09IEFSUk9XX0RPV04pIHtcbiAgICBzdG9wICYmIHN0b3BFdmVudChldmVudCk7XG4gICAgaWYgKHByZXZJbmRleCA9PT0gLTEpIHtcbiAgICAgIG5leHRJbmRleCA9IG1pbkluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXgsXG4gICAgICAgIGFtb3VudDogY29scyxcbiAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICB9KTtcbiAgICAgIGlmIChsb29wICYmIHByZXZJbmRleCArIGNvbHMgPiBtYXhJbmRleCkge1xuICAgICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IHByZXZJbmRleCAlIGNvbHMgLSBjb2xzLFxuICAgICAgICAgIGFtb3VudDogY29scyxcbiAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc0luZGV4T3V0T2ZCb3VuZHMoZWxlbWVudHNSZWYsIG5leHRJbmRleCkpIHtcbiAgICAgIG5leHRJbmRleCA9IHByZXZJbmRleDtcbiAgICB9XG4gIH1cblxuICAvLyBSZW1haW5zIG9uIHRoZSBzYW1lIHJvdy9jb2x1bW4uXG4gIGlmIChvcmllbnRhdGlvbiA9PT0gJ2JvdGgnKSB7XG4gICAgY29uc3QgcHJldlJvdyA9IGZsb29yKHByZXZJbmRleCAvIGNvbHMpO1xuICAgIGlmIChldmVudC5rZXkgPT09IEFSUk9XX1JJR0hUKSB7XG4gICAgICBzdG9wICYmIHN0b3BFdmVudChldmVudCk7XG4gICAgICBpZiAocHJldkluZGV4ICUgY29scyAhPT0gY29scyAtIDEpIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXgsXG4gICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobG9vcCAmJiBpc0RpZmZlcmVudFJvdyhuZXh0SW5kZXgsIGNvbHMsIHByZXZSb3cpKSB7XG4gICAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IHByZXZJbmRleCAtIHByZXZJbmRleCAlIGNvbHMgLSAxLFxuICAgICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobG9vcCkge1xuICAgICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IHByZXZJbmRleCAtIHByZXZJbmRleCAlIGNvbHMgLSAxLFxuICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0RpZmZlcmVudFJvdyhuZXh0SW5kZXgsIGNvbHMsIHByZXZSb3cpKSB7XG4gICAgICAgIG5leHRJbmRleCA9IHByZXZJbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gQVJST1dfTEVGVCkge1xuICAgICAgc3RvcCAmJiBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgaWYgKHByZXZJbmRleCAlIGNvbHMgIT09IDApIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXgsXG4gICAgICAgICAgZGVjcmVtZW50OiB0cnVlLFxuICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGxvb3AgJiYgaXNEaWZmZXJlbnRSb3cobmV4dEluZGV4LCBjb2xzLCBwcmV2Um93KSkge1xuICAgICAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggKyAoY29scyAtIHByZXZJbmRleCAlIGNvbHMpLFxuICAgICAgICAgICAgZGVjcmVtZW50OiB0cnVlLFxuICAgICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobG9vcCkge1xuICAgICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IHByZXZJbmRleCArIChjb2xzIC0gcHJldkluZGV4ICUgY29scyksXG4gICAgICAgICAgZGVjcmVtZW50OiB0cnVlLFxuICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0RpZmZlcmVudFJvdyhuZXh0SW5kZXgsIGNvbHMsIHByZXZSb3cpKSB7XG4gICAgICAgIG5leHRJbmRleCA9IHByZXZJbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbGFzdFJvdyA9IGZsb29yKG1heEluZGV4IC8gY29scykgPT09IHByZXZSb3c7XG4gICAgaWYgKGlzSW5kZXhPdXRPZkJvdW5kcyhlbGVtZW50c1JlZiwgbmV4dEluZGV4KSkge1xuICAgICAgaWYgKGxvb3AgJiYgbGFzdFJvdykge1xuICAgICAgICBuZXh0SW5kZXggPSBldmVudC5rZXkgPT09IEFSUk9XX0xFRlQgPyBtYXhJbmRleCA6IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4IC0gcHJldkluZGV4ICUgY29scyAtIDEsXG4gICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV4dEluZGV4ID0gcHJldkluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbmV4dEluZGV4O1xufVxuXG4vKiogRm9yIGVhY2ggY2VsbCBpbmRleCwgZ2V0cyB0aGUgaXRlbSBpbmRleCB0aGF0IG9jY3VwaWVzIHRoYXQgY2VsbCAqL1xuZnVuY3Rpb24gYnVpbGRDZWxsTWFwKHNpemVzLCBjb2xzLCBkZW5zZSkge1xuICBjb25zdCBjZWxsTWFwID0gW107XG4gIGxldCBzdGFydEluZGV4ID0gMDtcbiAgc2l6ZXMuZm9yRWFjaCgoX3JlZjIsIGluZGV4KSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgfSA9IF9yZWYyO1xuICAgIGlmICh3aWR0aCA+IGNvbHMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW0Zsb2F0aW5nIFVJXTogSW52YWxpZCBncmlkIC0gaXRlbSB3aWR0aCBhdCBpbmRleCBcIiArIGluZGV4ICsgXCIgaXMgZ3JlYXRlciB0aGFuIGdyaWQgY29sdW1uc1wiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGl0ZW1QbGFjZWQgPSBmYWxzZTtcbiAgICBpZiAoZGVuc2UpIHtcbiAgICAgIHN0YXJ0SW5kZXggPSAwO1xuICAgIH1cbiAgICB3aGlsZSAoIWl0ZW1QbGFjZWQpIHtcbiAgICAgIGNvbnN0IHRhcmdldENlbGxzID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdpZHRoOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBoZWlnaHQ7IGorKykge1xuICAgICAgICAgIHRhcmdldENlbGxzLnB1c2goc3RhcnRJbmRleCArIGkgKyBqICogY29scyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzdGFydEluZGV4ICUgY29scyArIHdpZHRoIDw9IGNvbHMgJiYgdGFyZ2V0Q2VsbHMuZXZlcnkoY2VsbCA9PiBjZWxsTWFwW2NlbGxdID09IG51bGwpKSB7XG4gICAgICAgIHRhcmdldENlbGxzLmZvckVhY2goY2VsbCA9PiB7XG4gICAgICAgICAgY2VsbE1hcFtjZWxsXSA9IGluZGV4O1xuICAgICAgICB9KTtcbiAgICAgICAgaXRlbVBsYWNlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydEluZGV4Kys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBjb252ZXJ0IGludG8gYSBub24tc3BhcnNlIGFycmF5XG4gIHJldHVybiBbLi4uY2VsbE1hcF07XG59XG5cbi8qKiBHZXRzIGNlbGwgaW5kZXggb2YgYW4gaXRlbSdzIGNvcm5lciBvciAtMSB3aGVuIGluZGV4IGlzIC0xLiAqL1xuZnVuY3Rpb24gZ2V0Q2VsbEluZGV4T2ZDb3JuZXIoaW5kZXgsIHNpemVzLCBjZWxsTWFwLCBjb2xzLCBjb3JuZXIpIHtcbiAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIC0xO1xuICBjb25zdCBmaXJzdENlbGxJbmRleCA9IGNlbGxNYXAuaW5kZXhPZihpbmRleCk7XG4gIGNvbnN0IHNpemVJdGVtID0gc2l6ZXNbaW5kZXhdO1xuICBzd2l0Y2ggKGNvcm5lcikge1xuICAgIGNhc2UgJ3RsJzpcbiAgICAgIHJldHVybiBmaXJzdENlbGxJbmRleDtcbiAgICBjYXNlICd0cic6XG4gICAgICBpZiAoIXNpemVJdGVtKSB7XG4gICAgICAgIHJldHVybiBmaXJzdENlbGxJbmRleDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmaXJzdENlbGxJbmRleCArIHNpemVJdGVtLndpZHRoIC0gMTtcbiAgICBjYXNlICdibCc6XG4gICAgICBpZiAoIXNpemVJdGVtKSB7XG4gICAgICAgIHJldHVybiBmaXJzdENlbGxJbmRleDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmaXJzdENlbGxJbmRleCArIChzaXplSXRlbS5oZWlnaHQgLSAxKSAqIGNvbHM7XG4gICAgY2FzZSAnYnInOlxuICAgICAgcmV0dXJuIGNlbGxNYXAubGFzdEluZGV4T2YoaW5kZXgpO1xuICB9XG59XG5cbi8qKiBHZXRzIGFsbCBjZWxsIGluZGljZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBzcGVjaWZpZWQgaW5kaWNlcyAqL1xuZnVuY3Rpb24gZ2V0Q2VsbEluZGljZXMoaW5kaWNlcywgY2VsbE1hcCkge1xuICByZXR1cm4gY2VsbE1hcC5mbGF0TWFwKChpbmRleCwgY2VsbEluZGV4KSA9PiBpbmRpY2VzLmluY2x1ZGVzKGluZGV4KSA/IFtjZWxsSW5kZXhdIDogW10pO1xufVxuZnVuY3Rpb24gaXNEaXNhYmxlZChsaXN0LCBpbmRleCwgZGlzYWJsZWRJbmRpY2VzKSB7XG4gIGlmIChkaXNhYmxlZEluZGljZXMpIHtcbiAgICByZXR1cm4gZGlzYWJsZWRJbmRpY2VzLmluY2x1ZGVzKGluZGV4KTtcbiAgfVxuICBjb25zdCBlbGVtZW50ID0gbGlzdFtpbmRleF07XG4gIHJldHVybiBlbGVtZW50ID09IG51bGwgfHwgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnKSA9PT0gJ3RydWUnO1xufVxuXG5sZXQgcmFmSWQgPSAwO1xuZnVuY3Rpb24gZW5xdWV1ZUZvY3VzKGVsLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHByZXZlbnRTY3JvbGwgPSBmYWxzZSxcbiAgICBjYW5jZWxQcmV2aW91cyA9IHRydWUsXG4gICAgc3luYyA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjYW5jZWxQcmV2aW91cyAmJiBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZCk7XG4gIGNvbnN0IGV4ZWMgPSAoKSA9PiBlbCA9PSBudWxsID8gdm9pZCAwIDogZWwuZm9jdXMoe1xuICAgIHByZXZlbnRTY3JvbGxcbiAgfSk7XG4gIGlmIChzeW5jKSB7XG4gICAgZXhlYygpO1xuICB9IGVsc2Uge1xuICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGV4ZWMpO1xuICB9XG59XG5cbnZhciBpbmRleCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7XG5cbmZ1bmN0aW9uIHNvcnRCeURvY3VtZW50UG9zaXRpb24oYSwgYikge1xuICBjb25zdCBwb3NpdGlvbiA9IGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYik7XG4gIGlmIChwb3NpdGlvbiAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HIHx8IHBvc2l0aW9uICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKHBvc2l0aW9uICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcgfHwgcG9zaXRpb24gJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5TKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5mdW5jdGlvbiBhcmVNYXBzRXF1YWwobWFwMSwgbWFwMikge1xuICBpZiAobWFwMS5zaXplICE9PSBtYXAyLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgbWFwMS5lbnRyaWVzKCkpIHtcbiAgICBpZiAodmFsdWUgIT09IG1hcDIuZ2V0KGtleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5jb25zdCBGbG9hdGluZ0xpc3RDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICByZWdpc3RlcjogKCkgPT4ge30sXG4gIHVucmVnaXN0ZXI6ICgpID0+IHt9LFxuICBtYXA6IC8qI19fUFVSRV9fKi9uZXcgTWFwKCksXG4gIGVsZW1lbnRzUmVmOiB7XG4gICAgY3VycmVudDogW11cbiAgfVxufSk7XG4vKipcbiAqIFByb3ZpZGVzIGNvbnRleHQgZm9yIGEgbGlzdCBvZiBpdGVtcyB3aXRoaW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdMaXN0XG4gKi9cbmZ1bmN0aW9uIEZsb2F0aW5nTGlzdChwcm9wcykge1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgZWxlbWVudHNSZWYsXG4gICAgbGFiZWxzUmVmXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgW21hcCwgc2V0TWFwXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IG5ldyBNYXAoKSk7XG4gIGNvbnN0IHJlZ2lzdGVyID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgc2V0TWFwKHByZXZNYXAgPT4gbmV3IE1hcChwcmV2TWFwKS5zZXQobm9kZSwgbnVsbCkpO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVucmVnaXN0ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBzZXRNYXAocHJldk1hcCA9PiB7XG4gICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKHByZXZNYXApO1xuICAgICAgbWFwLmRlbGV0ZShub2RlKTtcbiAgICAgIHJldHVybiBtYXA7XG4gICAgfSk7XG4gIH0sIFtdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGNvbnN0IG5ld01hcCA9IG5ldyBNYXAobWFwKTtcbiAgICBjb25zdCBub2RlcyA9IEFycmF5LmZyb20obmV3TWFwLmtleXMoKSkuc29ydChzb3J0QnlEb2N1bWVudFBvc2l0aW9uKTtcbiAgICBub2Rlcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgbmV3TWFwLnNldChub2RlLCBpbmRleCk7XG4gICAgfSk7XG4gICAgaWYgKCFhcmVNYXBzRXF1YWwobWFwLCBuZXdNYXApKSB7XG4gICAgICBzZXRNYXAobmV3TWFwKTtcbiAgICB9XG4gIH0sIFttYXBdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZsb2F0aW5nTGlzdENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgICAgcmVnaXN0ZXIsXG4gICAgICB1bnJlZ2lzdGVyLFxuICAgICAgbWFwLFxuICAgICAgZWxlbWVudHNSZWYsXG4gICAgICBsYWJlbHNSZWZcbiAgICB9KSwgW3JlZ2lzdGVyLCB1bnJlZ2lzdGVyLCBtYXAsIGVsZW1lbnRzUmVmLCBsYWJlbHNSZWZdKVxuICB9LCBjaGlsZHJlbik7XG59XG4vKipcbiAqIFVzZWQgdG8gcmVnaXN0ZXIgYSBsaXN0IGl0ZW0gYW5kIGl0cyBpbmRleCAoRE9NIHBvc2l0aW9uKSBpbiB0aGVcbiAqIGBGbG9hdGluZ0xpc3RgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nTGlzdCN1c2VsaXN0aXRlbVxuICovXG5mdW5jdGlvbiB1c2VMaXN0SXRlbShwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGxhYmVsXG4gIH0gPSBwcm9wcztcbiAgY29uc3Qge1xuICAgIHJlZ2lzdGVyLFxuICAgIHVucmVnaXN0ZXIsXG4gICAgbWFwLFxuICAgIGVsZW1lbnRzUmVmLFxuICAgIGxhYmVsc1JlZlxuICB9ID0gUmVhY3QudXNlQ29udGV4dChGbG9hdGluZ0xpc3RDb250ZXh0KTtcbiAgY29uc3QgW2luZGV4JDEsIHNldEluZGV4XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBjb21wb25lbnRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGNvbXBvbmVudFJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICBpZiAoaW5kZXgkMSAhPT0gbnVsbCkge1xuICAgICAgZWxlbWVudHNSZWYuY3VycmVudFtpbmRleCQxXSA9IG5vZGU7XG4gICAgICBpZiAobGFiZWxzUmVmKSB7XG4gICAgICAgIHZhciBfbm9kZSR0ZXh0Q29udGVudDtcbiAgICAgICAgY29uc3QgaXNMYWJlbERlZmluZWQgPSBsYWJlbCAhPT0gdW5kZWZpbmVkO1xuICAgICAgICBsYWJlbHNSZWYuY3VycmVudFtpbmRleCQxXSA9IGlzTGFiZWxEZWZpbmVkID8gbGFiZWwgOiAoX25vZGUkdGV4dENvbnRlbnQgPSBub2RlID09IG51bGwgPyB2b2lkIDAgOiBub2RlLnRleHRDb250ZW50KSAhPSBudWxsID8gX25vZGUkdGV4dENvbnRlbnQgOiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2luZGV4JDEsIGVsZW1lbnRzUmVmLCBsYWJlbHNSZWYsIGxhYmVsXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBjb25zdCBub2RlID0gY29tcG9uZW50UmVmLmN1cnJlbnQ7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIHJlZ2lzdGVyKG5vZGUpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgdW5yZWdpc3Rlcihub2RlKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbcmVnaXN0ZXIsIHVucmVnaXN0ZXJdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gY29tcG9uZW50UmVmLmN1cnJlbnQgPyBtYXAuZ2V0KGNvbXBvbmVudFJlZi5jdXJyZW50KSA6IG51bGw7XG4gICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgIHNldEluZGV4KGluZGV4KTtcbiAgICB9XG4gIH0sIFttYXBdKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICByZWYsXG4gICAgaW5kZXg6IGluZGV4JDEgPT0gbnVsbCA/IC0xIDogaW5kZXgkMVxuICB9KSwgW2luZGV4JDEsIHJlZl0pO1xufVxuXG5mdW5jdGlvbiByZW5kZXJKc3gocmVuZGVyLCBjb21wdXRlZFByb3BzKSB7XG4gIGlmICh0eXBlb2YgcmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHJlbmRlcihjb21wdXRlZFByb3BzKTtcbiAgfVxuICBpZiAocmVuZGVyKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQocmVuZGVyLCBjb21wdXRlZFByb3BzKTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgY29tcHV0ZWRQcm9wcyk7XG59XG5jb25zdCBDb21wb3NpdGVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICBhY3RpdmVJbmRleDogMCxcbiAgb25OYXZpZ2F0ZTogKCkgPT4ge31cbn0pO1xuY29uc3QgaG9yaXpvbnRhbEtleXMgPSBbQVJST1dfTEVGVCwgQVJST1dfUklHSFRdO1xuY29uc3QgdmVydGljYWxLZXlzID0gW0FSUk9XX1VQLCBBUlJPV19ET1dOXTtcbmNvbnN0IGFsbEtleXMgPSBbLi4uaG9yaXpvbnRhbEtleXMsIC4uLnZlcnRpY2FsS2V5c107XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNpbmdsZSB0YWIgc3RvcCB3aG9zZSBpdGVtcyBhcmUgbmF2aWdhdGVkIGJ5IGFycm93IGtleXMsIHdoaWNoXG4gKiBwcm92aWRlcyBsaXN0IG5hdmlnYXRpb24gb3V0c2lkZSBvZiBmbG9hdGluZyBlbGVtZW50IGNvbnRleHRzLlxuICpcbiAqIFRoaXMgaXMgdXNlZnVsIHRvIGVuYWJsZSBuYXZpZ2F0aW9uIG9mIGEgbGlzdCBvZiBpdGVtcyB0aGF0IGFyZW7igJl0IHBhcnQgb2YgYVxuICogZmxvYXRpbmcgZWxlbWVudC4gQSBtZW51YmFyIGlzIGFuIGV4YW1wbGUgb2YgYSBjb21wb3NpdGUsIHdpdGggZWFjaCByZWZlcmVuY2VcbiAqIGVsZW1lbnQgYmVpbmcgYW4gaXRlbS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9Db21wb3NpdGVcbiAqL1xuY29uc3QgQ29tcG9zaXRlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQ29tcG9zaXRlKHByb3BzLCBmb3J3YXJkZWRSZWYpIHtcbiAgY29uc3Qge1xuICAgIHJlbmRlcixcbiAgICBvcmllbnRhdGlvbiA9ICdib3RoJyxcbiAgICBsb29wID0gdHJ1ZSxcbiAgICBjb2xzID0gMSxcbiAgICBkaXNhYmxlZEluZGljZXMsXG4gICAgYWN0aXZlSW5kZXg6IGV4dGVybmFsQWN0aXZlSW5kZXgsXG4gICAgb25OYXZpZ2F0ZTogZXh0ZXJuYWxTZXRBY3RpdmVJbmRleCxcbiAgICBpdGVtU2l6ZXMsXG4gICAgZGVuc2UgPSBmYWxzZSxcbiAgICAuLi5kb21Qcm9wc1xuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFtpbnRlcm5hbEFjdGl2ZUluZGV4LCBpbnRlcm5hbFNldEFjdGl2ZUluZGV4XSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICBjb25zdCBhY3RpdmVJbmRleCA9IGV4dGVybmFsQWN0aXZlSW5kZXggIT0gbnVsbCA/IGV4dGVybmFsQWN0aXZlSW5kZXggOiBpbnRlcm5hbEFjdGl2ZUluZGV4O1xuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlRWZmZWN0RXZlbnQoZXh0ZXJuYWxTZXRBY3RpdmVJbmRleCAhPSBudWxsID8gZXh0ZXJuYWxTZXRBY3RpdmVJbmRleCA6IGludGVybmFsU2V0QWN0aXZlSW5kZXgpO1xuICBjb25zdCBlbGVtZW50c1JlZiA9IFJlYWN0LnVzZVJlZihbXSk7XG4gIGNvbnN0IHJlbmRlckVsZW1lbnRQcm9wcyA9IHJlbmRlciAmJiB0eXBlb2YgcmVuZGVyICE9PSAnZnVuY3Rpb24nID8gcmVuZGVyLnByb3BzIDoge307XG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBhY3RpdmVJbmRleCxcbiAgICBvbk5hdmlnYXRlXG4gIH0pLCBbYWN0aXZlSW5kZXgsIG9uTmF2aWdhdGVdKTtcbiAgY29uc3QgaXNHcmlkID0gY29scyA+IDE7XG4gIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICBpZiAoIWFsbEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkgcmV0dXJuO1xuICAgIGxldCBuZXh0SW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICBjb25zdCBtaW5JbmRleCA9IGdldE1pbkluZGV4KGVsZW1lbnRzUmVmLCBkaXNhYmxlZEluZGljZXMpO1xuICAgIGNvbnN0IG1heEluZGV4ID0gZ2V0TWF4SW5kZXgoZWxlbWVudHNSZWYsIGRpc2FibGVkSW5kaWNlcyk7XG4gICAgaWYgKGlzR3JpZCkge1xuICAgICAgY29uc3Qgc2l6ZXMgPSBpdGVtU2l6ZXMgfHwgQXJyYXkuZnJvbSh7XG4gICAgICAgIGxlbmd0aDogZWxlbWVudHNSZWYuY3VycmVudC5sZW5ndGhcbiAgICAgIH0sICgpID0+ICh7XG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgICBoZWlnaHQ6IDFcbiAgICAgIH0pKTtcbiAgICAgIC8vIFRvIGNhbGN1bGF0ZSBtb3ZlbWVudHMgb24gdGhlIGdyaWQsIHdlIHVzZSBoeXBvdGhldGljYWwgY2VsbCBpbmRpY2VzXG4gICAgICAvLyBhcyBpZiBldmVyeSBpdGVtIHdhcyAxeDEsIHRoZW4gY29udmVydCBiYWNrIHRvIHJlYWwgaW5kaWNlcy5cbiAgICAgIGNvbnN0IGNlbGxNYXAgPSBidWlsZENlbGxNYXAoc2l6ZXMsIGNvbHMsIGRlbnNlKTtcbiAgICAgIGNvbnN0IG1pbkdyaWRJbmRleCA9IGNlbGxNYXAuZmluZEluZGV4KGluZGV4ID0+IGluZGV4ICE9IG51bGwgJiYgIWlzRGlzYWJsZWQoZWxlbWVudHNSZWYuY3VycmVudCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykpO1xuICAgICAgLy8gbGFzdCBlbmFibGVkIGluZGV4XG4gICAgICBjb25zdCBtYXhHcmlkSW5kZXggPSBjZWxsTWFwLnJlZHVjZSgoZm91bmRJbmRleCwgaW5kZXgsIGNlbGxJbmRleCkgPT4gaW5kZXggIT0gbnVsbCAmJiAhaXNEaXNhYmxlZChlbGVtZW50c1JlZi5jdXJyZW50LCBpbmRleCwgZGlzYWJsZWRJbmRpY2VzKSA/IGNlbGxJbmRleCA6IGZvdW5kSW5kZXgsIC0xKTtcbiAgICAgIG5leHRJbmRleCA9IGNlbGxNYXBbZ2V0R3JpZE5hdmlnYXRlZEluZGV4KHtcbiAgICAgICAgY3VycmVudDogY2VsbE1hcC5tYXAoaXRlbUluZGV4ID0+IGl0ZW1JbmRleCA/IGVsZW1lbnRzUmVmLmN1cnJlbnRbaXRlbUluZGV4XSA6IG51bGwpXG4gICAgICB9LCB7XG4gICAgICAgIGV2ZW50LFxuICAgICAgICBvcmllbnRhdGlvbixcbiAgICAgICAgbG9vcCxcbiAgICAgICAgY29scyxcbiAgICAgICAgLy8gdHJlYXQgdW5kZWZpbmVkIChlbXB0eSBncmlkIHNwYWNlcykgYXMgZGlzYWJsZWQgaW5kaWNlcyBzbyB3ZVxuICAgICAgICAvLyBkb24ndCBlbmQgdXAgaW4gdGhlbVxuICAgICAgICBkaXNhYmxlZEluZGljZXM6IGdldENlbGxJbmRpY2VzKFsuLi4oZGlzYWJsZWRJbmRpY2VzIHx8IGVsZW1lbnRzUmVmLmN1cnJlbnQubWFwKChfLCBpbmRleCkgPT4gaXNEaXNhYmxlZChlbGVtZW50c1JlZi5jdXJyZW50LCBpbmRleCkgPyBpbmRleCA6IHVuZGVmaW5lZCkpLCB1bmRlZmluZWRdLCBjZWxsTWFwKSxcbiAgICAgICAgbWluSW5kZXg6IG1pbkdyaWRJbmRleCxcbiAgICAgICAgbWF4SW5kZXg6IG1heEdyaWRJbmRleCxcbiAgICAgICAgcHJldkluZGV4OiBnZXRDZWxsSW5kZXhPZkNvcm5lcihhY3RpdmVJbmRleCA+IG1heEluZGV4ID8gbWluSW5kZXggOiBhY3RpdmVJbmRleCwgc2l6ZXMsIGNlbGxNYXAsIGNvbHMsXG4gICAgICAgIC8vIHVzZSBhIGNvcm5lciBtYXRjaGluZyB0aGUgZWRnZSBjbG9zZXN0IHRvIHRoZSBkaXJlY3Rpb24gd2UncmVcbiAgICAgICAgLy8gbW92aW5nIGluIHNvIHdlIGRvbid0IGVuZCB1cCBpbiB0aGUgc2FtZSBpdGVtLiBQcmVmZXJcbiAgICAgICAgLy8gdG9wL2xlZnQgb3ZlciBib3R0b20vcmlnaHQuXG4gICAgICAgIGV2ZW50LmtleSA9PT0gQVJST1dfRE9XTiA/ICdibCcgOiBldmVudC5rZXkgPT09IEFSUk9XX1JJR0hUID8gJ3RyJyA6ICd0bCcpXG4gICAgICB9KV07IC8vIG5hdmlnYXRlZCBjZWxsIHdpbGwgbmV2ZXIgYmUgbnVsbGlzaFxuICAgIH1cbiAgICBjb25zdCB0b0VuZEtleXMgPSB7XG4gICAgICBob3Jpem9udGFsOiBbQVJST1dfUklHSFRdLFxuICAgICAgdmVydGljYWw6IFtBUlJPV19ET1dOXSxcbiAgICAgIGJvdGg6IFtBUlJPV19SSUdIVCwgQVJST1dfRE9XTl1cbiAgICB9W29yaWVudGF0aW9uXTtcbiAgICBjb25zdCB0b1N0YXJ0S2V5cyA9IHtcbiAgICAgIGhvcml6b250YWw6IFtBUlJPV19MRUZUXSxcbiAgICAgIHZlcnRpY2FsOiBbQVJST1dfVVBdLFxuICAgICAgYm90aDogW0FSUk9XX0xFRlQsIEFSUk9XX1VQXVxuICAgIH1bb3JpZW50YXRpb25dO1xuICAgIGNvbnN0IHByZXZlbnRlZEtleXMgPSBpc0dyaWQgPyBhbGxLZXlzIDoge1xuICAgICAgaG9yaXpvbnRhbDogaG9yaXpvbnRhbEtleXMsXG4gICAgICB2ZXJ0aWNhbDogdmVydGljYWxLZXlzLFxuICAgICAgYm90aDogYWxsS2V5c1xuICAgIH1bb3JpZW50YXRpb25dO1xuICAgIGlmIChuZXh0SW5kZXggPT09IGFjdGl2ZUluZGV4ICYmIFsuLi50b0VuZEtleXMsIC4uLnRvU3RhcnRLZXlzXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICBpZiAobG9vcCAmJiBuZXh0SW5kZXggPT09IG1heEluZGV4ICYmIHRvRW5kS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgIG5leHRJbmRleCA9IG1pbkluZGV4O1xuICAgICAgfSBlbHNlIGlmIChsb29wICYmIG5leHRJbmRleCA9PT0gbWluSW5kZXggJiYgdG9TdGFydEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICBuZXh0SW5kZXggPSBtYXhJbmRleDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgc3RhcnRpbmdJbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgIGRlY3JlbWVudDogdG9TdGFydEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSxcbiAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuZXh0SW5kZXggIT09IGFjdGl2ZUluZGV4ICYmICFpc0luZGV4T3V0T2ZCb3VuZHMoZWxlbWVudHNSZWYsIG5leHRJbmRleCkpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaWYgKHByZXZlbnRlZEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgICAgb25OYXZpZ2F0ZShuZXh0SW5kZXgpO1xuXG4gICAgICAvLyBXYWl0IGZvciBGb2N1c01hbmFnZXIgYHJldHVybkZvY3VzYCB0byBleGVjdXRlLlxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBlbnF1ZXVlRm9jdXMoZWxlbWVudHNSZWYuY3VycmVudFtuZXh0SW5kZXhdKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBjb25zdCBjb21wdXRlZFByb3BzID0ge1xuICAgIC4uLmRvbVByb3BzLFxuICAgIC4uLnJlbmRlckVsZW1lbnRQcm9wcyxcbiAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAnYXJpYS1vcmllbnRhdGlvbic6IG9yaWVudGF0aW9uID09PSAnYm90aCcgPyB1bmRlZmluZWQgOiBvcmllbnRhdGlvbixcbiAgICBvbktleURvd24oZSkge1xuICAgICAgZG9tUHJvcHMub25LZXlEb3duID09IG51bGwgfHwgZG9tUHJvcHMub25LZXlEb3duKGUpO1xuICAgICAgcmVuZGVyRWxlbWVudFByb3BzLm9uS2V5RG93biA9PSBudWxsIHx8IHJlbmRlckVsZW1lbnRQcm9wcy5vbktleURvd24oZSk7XG4gICAgICBoYW5kbGVLZXlEb3duKGUpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbXBvc2l0ZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dFZhbHVlXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZsb2F0aW5nTGlzdCwge1xuICAgIGVsZW1lbnRzUmVmOiBlbGVtZW50c1JlZlxuICB9LCByZW5kZXJKc3gocmVuZGVyLCBjb21wdXRlZFByb3BzKSkpO1xufSk7XG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9Db21wb3NpdGVcbiAqL1xuY29uc3QgQ29tcG9zaXRlSXRlbSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIENvbXBvc2l0ZUl0ZW0ocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICBjb25zdCB7XG4gICAgcmVuZGVyLFxuICAgIC4uLmRvbVByb3BzXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgcmVuZGVyRWxlbWVudFByb3BzID0gcmVuZGVyICYmIHR5cGVvZiByZW5kZXIgIT09ICdmdW5jdGlvbicgPyByZW5kZXIucHJvcHMgOiB7fTtcbiAgY29uc3Qge1xuICAgIGFjdGl2ZUluZGV4LFxuICAgIG9uTmF2aWdhdGVcbiAgfSA9IFJlYWN0LnVzZUNvbnRleHQoQ29tcG9zaXRlQ29udGV4dCk7XG4gIGNvbnN0IHtcbiAgICByZWYsXG4gICAgaW5kZXhcbiAgfSA9IHVzZUxpc3RJdGVtKCk7XG4gIGNvbnN0IG1lcmdlZFJlZiA9IHVzZU1lcmdlUmVmcyhbcmVmLCBmb3J3YXJkZWRSZWYsIHJlbmRlckVsZW1lbnRQcm9wcy5yZWZdKTtcbiAgY29uc3QgaXNBY3RpdmUgPSBhY3RpdmVJbmRleCA9PT0gaW5kZXg7XG4gIGNvbnN0IGNvbXB1dGVkUHJvcHMgPSB7XG4gICAgLi4uZG9tUHJvcHMsXG4gICAgLi4ucmVuZGVyRWxlbWVudFByb3BzLFxuICAgIHJlZjogbWVyZ2VkUmVmLFxuICAgIHRhYkluZGV4OiBpc0FjdGl2ZSA/IDAgOiAtMSxcbiAgICAnZGF0YS1hY3RpdmUnOiBpc0FjdGl2ZSA/ICcnIDogdW5kZWZpbmVkLFxuICAgIG9uRm9jdXMoZSkge1xuICAgICAgZG9tUHJvcHMub25Gb2N1cyA9PSBudWxsIHx8IGRvbVByb3BzLm9uRm9jdXMoZSk7XG4gICAgICByZW5kZXJFbGVtZW50UHJvcHMub25Gb2N1cyA9PSBudWxsIHx8IHJlbmRlckVsZW1lbnRQcm9wcy5vbkZvY3VzKGUpO1xuICAgICAgb25OYXZpZ2F0ZShpbmRleCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gcmVuZGVySnN4KHJlbmRlciwgY29tcHV0ZWRQcm9wcyk7XG59KTtcblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmxldCBzZXJ2ZXJIYW5kb2ZmQ29tcGxldGUgPSBmYWxzZTtcbmxldCBjb3VudCA9IDA7XG5jb25zdCBnZW5JZCA9ICgpID0+IC8vIEVuc3VyZSB0aGUgaWQgaXMgdW5pcXVlIHdpdGggbXVsdGlwbGUgaW5kZXBlbmRlbnQgdmVyc2lvbnMgb2YgRmxvYXRpbmcgVUlcbi8vIG9uIDxSZWFjdCAxOFxuXCJmbG9hdGluZy11aS1cIiArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDYpICsgY291bnQrKztcbmZ1bmN0aW9uIHVzZUZsb2F0aW5nSWQoKSB7XG4gIGNvbnN0IFtpZCwgc2V0SWRdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4gc2VydmVySGFuZG9mZkNvbXBsZXRlID8gZ2VuSWQoKSA6IHVuZGVmaW5lZCk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoaWQgPT0gbnVsbCkge1xuICAgICAgc2V0SWQoZ2VuSWQoKSk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNlcnZlckhhbmRvZmZDb21wbGV0ZSA9IHRydWU7XG4gIH0sIFtdKTtcbiAgcmV0dXJuIGlkO1xufVxuY29uc3QgdXNlUmVhY3RJZCA9IFNhZmVSZWFjdC51c2VJZDtcblxuLyoqXG4gKiBVc2VzIFJlYWN0IDE4J3MgYnVpbHQtaW4gYHVzZUlkKClgIHdoZW4gYXZhaWxhYmxlLCBvciBmYWxscyBiYWNrIHRvIGFcbiAqIHNsaWdodGx5IGxlc3MgcGVyZm9ybWFudCAocmVxdWlyaW5nIGEgZG91YmxlIHJlbmRlcikgaW1wbGVtZW50YXRpb24gZm9yXG4gKiBlYXJsaWVyIFJlYWN0IHZlcnNpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3JlYWN0LXV0aWxzI3VzZWlkXG4gKi9cbmNvbnN0IHVzZUlkID0gdXNlUmVhY3RJZCB8fCB1c2VGbG9hdGluZ0lkO1xuXG5sZXQgZGV2TWVzc2FnZVNldDtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgZGV2TWVzc2FnZVNldCA9IC8qI19fUFVSRV9fKi9uZXcgU2V0KCk7XG59XG5mdW5jdGlvbiB3YXJuKCkge1xuICB2YXIgX2Rldk1lc3NhZ2VTZXQ7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBtZXNzYWdlcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBtZXNzYWdlc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuICBjb25zdCBtZXNzYWdlID0gXCJGbG9hdGluZyBVSTogXCIgKyBtZXNzYWdlcy5qb2luKCcgJyk7XG4gIGlmICghKChfZGV2TWVzc2FnZVNldCA9IGRldk1lc3NhZ2VTZXQpICE9IG51bGwgJiYgX2Rldk1lc3NhZ2VTZXQuaGFzKG1lc3NhZ2UpKSkge1xuICAgIHZhciBfZGV2TWVzc2FnZVNldDI7XG4gICAgKF9kZXZNZXNzYWdlU2V0MiA9IGRldk1lc3NhZ2VTZXQpID09IG51bGwgfHwgX2Rldk1lc3NhZ2VTZXQyLmFkZChtZXNzYWdlKTtcbiAgICBjb25zb2xlLndhcm4obWVzc2FnZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGVycm9yKCkge1xuICB2YXIgX2Rldk1lc3NhZ2VTZXQzO1xuICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIG1lc3NhZ2VzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgbWVzc2FnZXNbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgfVxuICBjb25zdCBtZXNzYWdlID0gXCJGbG9hdGluZyBVSTogXCIgKyBtZXNzYWdlcy5qb2luKCcgJyk7XG4gIGlmICghKChfZGV2TWVzc2FnZVNldDMgPSBkZXZNZXNzYWdlU2V0KSAhPSBudWxsICYmIF9kZXZNZXNzYWdlU2V0My5oYXMobWVzc2FnZSkpKSB7XG4gICAgdmFyIF9kZXZNZXNzYWdlU2V0NDtcbiAgICAoX2Rldk1lc3NhZ2VTZXQ0ID0gZGV2TWVzc2FnZVNldCkgPT0gbnVsbCB8fCBfZGV2TWVzc2FnZVNldDQuYWRkKG1lc3NhZ2UpO1xuICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgcG9pbnRpbmcgYXJyb3cgdHJpYW5nbGUuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdBcnJvd1xuICovXG5jb25zdCBGbG9hdGluZ0Fycm93ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gRmxvYXRpbmdBcnJvdyhwcm9wcywgcmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjb250ZXh0OiB7XG4gICAgICBwbGFjZW1lbnQsXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICBmbG9hdGluZ1xuICAgICAgfSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhOiB7XG4gICAgICAgIGFycm93XG4gICAgICB9XG4gICAgfSxcbiAgICB3aWR0aCA9IDE0LFxuICAgIGhlaWdodCA9IDcsXG4gICAgdGlwUmFkaXVzID0gMCxcbiAgICBzdHJva2VXaWR0aCA9IDAsXG4gICAgc3RhdGljT2Zmc2V0LFxuICAgIHN0cm9rZSxcbiAgICBkLFxuICAgIHN0eWxlOiB7XG4gICAgICB0cmFuc2Zvcm0sXG4gICAgICAuLi5yZXN0U3R5bGVcbiAgICB9ID0ge30sXG4gICAgLi4ucmVzdFxuICB9ID0gcHJvcHM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBpZiAoIXJlZikge1xuICAgICAgd2FybignVGhlIGByZWZgIHByb3AgaXMgcmVxdWlyZWQgZm9yIGBGbG9hdGluZ0Fycm93YC4nKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgY2xpcFBhdGhJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IFtpc1JUTCwgc2V0SXNSVExdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjkzMlxuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFmbG9hdGluZykgcmV0dXJuO1xuICAgIGNvbnN0IGlzUlRMID0gZ2V0Q29tcHV0ZWRTdHlsZShmbG9hdGluZykuZGlyZWN0aW9uID09PSAncnRsJztcbiAgICBpZiAoaXNSVEwpIHtcbiAgICAgIHNldElzUlRMKHRydWUpO1xuICAgIH1cbiAgfSwgW2Zsb2F0aW5nXSk7XG4gIGlmICghZmxvYXRpbmcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFN0cm9rZXMgbXVzdCBiZSBkb3VibGUgdGhlIGJvcmRlciB3aWR0aCwgdGhpcyBlbnN1cmVzIHRoZSBzdHJva2UncyB3aWR0aFxuICAvLyB3b3JrcyBhcyB5b3UnZCBleHBlY3QuXG4gIGNvbnN0IGNvbXB1dGVkU3Ryb2tlV2lkdGggPSBzdHJva2VXaWR0aCAqIDI7XG4gIGNvbnN0IGhhbGZTdHJva2VXaWR0aCA9IGNvbXB1dGVkU3Ryb2tlV2lkdGggLyAyO1xuICBjb25zdCBzdmdYID0gd2lkdGggLyAyICogKHRpcFJhZGl1cyAvIC04ICsgMSk7XG4gIGNvbnN0IHN2Z1kgPSBoZWlnaHQgLyAyICogdGlwUmFkaXVzIC8gNDtcbiAgY29uc3QgW3NpZGUsIGFsaWdubWVudF0gPSBwbGFjZW1lbnQuc3BsaXQoJy0nKTtcbiAgY29uc3QgaXNDdXN0b21TaGFwZSA9ICEhZDtcbiAgY29uc3QgaXNWZXJ0aWNhbFNpZGUgPSBzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJztcbiAgY29uc3QgeU9mZnNldFByb3AgPSBzdGF0aWNPZmZzZXQgJiYgYWxpZ25tZW50ID09PSAnZW5kJyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGxldCB4T2Zmc2V0UHJvcCA9IHN0YXRpY09mZnNldCAmJiBhbGlnbm1lbnQgPT09ICdlbmQnID8gJ3JpZ2h0JyA6ICdsZWZ0JztcbiAgaWYgKHN0YXRpY09mZnNldCAmJiBpc1JUTCkge1xuICAgIHhPZmZzZXRQcm9wID0gYWxpZ25tZW50ID09PSAnZW5kJyA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gIH1cbiAgY29uc3QgYXJyb3dYID0gKGFycm93ID09IG51bGwgPyB2b2lkIDAgOiBhcnJvdy54KSAhPSBudWxsID8gc3RhdGljT2Zmc2V0IHx8IGFycm93LnggOiAnJztcbiAgY29uc3QgYXJyb3dZID0gKGFycm93ID09IG51bGwgPyB2b2lkIDAgOiBhcnJvdy55KSAhPSBudWxsID8gc3RhdGljT2Zmc2V0IHx8IGFycm93LnkgOiAnJztcbiAgY29uc3QgZFZhbHVlID0gZCB8fCAnTTAsMCcgKyAoXCIgSFwiICsgd2lkdGgpICsgKFwiIExcIiArICh3aWR0aCAtIHN2Z1gpICsgXCIsXCIgKyAoaGVpZ2h0IC0gc3ZnWSkpICsgKFwiIFFcIiArIHdpZHRoIC8gMiArIFwiLFwiICsgaGVpZ2h0ICsgXCIgXCIgKyBzdmdYICsgXCIsXCIgKyAoaGVpZ2h0IC0gc3ZnWSkpICsgJyBaJztcbiAgY29uc3Qgcm90YXRpb24gPSB7XG4gICAgdG9wOiBpc0N1c3RvbVNoYXBlID8gJ3JvdGF0ZSgxODBkZWcpJyA6ICcnLFxuICAgIGxlZnQ6IGlzQ3VzdG9tU2hhcGUgPyAncm90YXRlKDkwZGVnKScgOiAncm90YXRlKC05MGRlZyknLFxuICAgIGJvdHRvbTogaXNDdXN0b21TaGFwZSA/ICcnIDogJ3JvdGF0ZSgxODBkZWcpJyxcbiAgICByaWdodDogaXNDdXN0b21TaGFwZSA/ICdyb3RhdGUoLTkwZGVnKScgOiAncm90YXRlKDkwZGVnKSdcbiAgfVtzaWRlXTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9leHRlbmRzKHt9LCByZXN0LCB7XG4gICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgIHJlZjogcmVmLFxuICAgIHdpZHRoOiBpc0N1c3RvbVNoYXBlID8gd2lkdGggOiB3aWR0aCArIGNvbXB1dGVkU3Ryb2tlV2lkdGgsXG4gICAgaGVpZ2h0OiB3aWR0aCxcbiAgICB2aWV3Qm94OiBcIjAgMCBcIiArIHdpZHRoICsgXCIgXCIgKyAoaGVpZ2h0ID4gd2lkdGggPyBoZWlnaHQgOiB3aWR0aCksXG4gICAgc3R5bGU6IHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgW3hPZmZzZXRQcm9wXTogYXJyb3dYLFxuICAgICAgW3lPZmZzZXRQcm9wXTogYXJyb3dZLFxuICAgICAgW3NpZGVdOiBpc1ZlcnRpY2FsU2lkZSB8fCBpc0N1c3RvbVNoYXBlID8gJzEwMCUnIDogXCJjYWxjKDEwMCUgLSBcIiArIGNvbXB1dGVkU3Ryb2tlV2lkdGggLyAyICsgXCJweClcIixcbiAgICAgIHRyYW5zZm9ybTogXCJcIiArIHJvdGF0aW9uICsgKHRyYW5zZm9ybSAhPSBudWxsID8gdHJhbnNmb3JtIDogJycpLFxuICAgICAgLi4ucmVzdFN0eWxlXG4gICAgfVxuICB9KSwgY29tcHV0ZWRTdHJva2VXaWR0aCA+IDAgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBjbGlwUGF0aDogXCJ1cmwoI1wiICsgY2xpcFBhdGhJZCArIFwiKVwiLFxuICAgIGZpbGw6IFwibm9uZVwiLFxuICAgIHN0cm9rZTogc3Ryb2tlXG4gICAgLy8gQWNjb3VudCBmb3IgdGhlIHN0cm9rZSBvbiB0aGUgZmlsbCBwYXRoIHJlbmRlcmVkIGJlbG93LlxuICAgICxcbiAgICBzdHJva2VXaWR0aDogY29tcHV0ZWRTdHJva2VXaWR0aCArIChkID8gMCA6IDEpLFxuICAgIGQ6IGRWYWx1ZVxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBzdHJva2U6IGNvbXB1dGVkU3Ryb2tlV2lkdGggJiYgIWQgPyByZXN0LmZpbGwgOiAnbm9uZScsXG4gICAgZDogZFZhbHVlXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImNsaXBQYXRoXCIsIHtcbiAgICBpZDogY2xpcFBhdGhJZFxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwge1xuICAgIHg6IC1oYWxmU3Ryb2tlV2lkdGgsXG4gICAgeTogaGFsZlN0cm9rZVdpZHRoICogKGlzQ3VzdG9tU2hhcGUgPyAtMSA6IDEpLFxuICAgIHdpZHRoOiB3aWR0aCArIGNvbXB1dGVkU3Ryb2tlV2lkdGgsXG4gICAgaGVpZ2h0OiB3aWR0aFxuICB9KSkpO1xufSk7XG5cbmZ1bmN0aW9uIGNyZWF0ZVB1YlN1YigpIHtcbiAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICByZXR1cm4ge1xuICAgIGVtaXQoZXZlbnQsIGRhdGEpIHtcbiAgICAgIHZhciBfbWFwJGdldDtcbiAgICAgIChfbWFwJGdldCA9IG1hcC5nZXQoZXZlbnQpKSA9PSBudWxsIHx8IF9tYXAkZ2V0LmZvckVhY2goaGFuZGxlciA9PiBoYW5kbGVyKGRhdGEpKTtcbiAgICB9LFxuICAgIG9uKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgICAgbWFwLnNldChldmVudCwgWy4uLihtYXAuZ2V0KGV2ZW50KSB8fCBbXSksIGxpc3RlbmVyXSk7XG4gICAgfSxcbiAgICBvZmYoZXZlbnQsIGxpc3RlbmVyKSB7XG4gICAgICB2YXIgX21hcCRnZXQyO1xuICAgICAgbWFwLnNldChldmVudCwgKChfbWFwJGdldDIgPSBtYXAuZ2V0KGV2ZW50KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9tYXAkZ2V0Mi5maWx0ZXIobCA9PiBsICE9PSBsaXN0ZW5lcikpIHx8IFtdKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IEZsb2F0aW5nTm9kZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmNvbnN0IEZsb2F0aW5nVHJlZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXJlbnQgbm9kZSBpZCBmb3IgbmVzdGVkIGZsb2F0aW5nIGVsZW1lbnRzLCBpZiBhdmFpbGFibGUuXG4gKiBSZXR1cm5zIGBudWxsYCBmb3IgdG9wLWxldmVsIGZsb2F0aW5nIGVsZW1lbnRzLlxuICovXG5jb25zdCB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCA9ICgpID0+IHtcbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0O1xuICByZXR1cm4gKChfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRmxvYXRpbmdOb2RlQ29udGV4dCkpID09IG51bGwgPyB2b2lkIDAgOiBfUmVhY3QkdXNlQ29udGV4dC5pZCkgfHwgbnVsbDtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbmVhcmVzdCBmbG9hdGluZyB0cmVlIGNvbnRleHQsIGlmIGF2YWlsYWJsZS5cbiAqL1xuY29uc3QgdXNlRmxvYXRpbmdUcmVlID0gKCkgPT4gUmVhY3QudXNlQ29udGV4dChGbG9hdGluZ1RyZWVDb250ZXh0KTtcblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBub2RlIGludG8gdGhlIGBGbG9hdGluZ1RyZWVgLCByZXR1cm5pbmcgaXRzIGlkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nVHJlZVxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZ05vZGVJZChjdXN0b21QYXJlbnRJZCkge1xuICBjb25zdCBpZCA9IHVzZUlkKCk7XG4gIGNvbnN0IHRyZWUgPSB1c2VGbG9hdGluZ1RyZWUoKTtcbiAgY29uc3QgcmVhY3RQYXJlbnRJZCA9IHVzZUZsb2F0aW5nUGFyZW50Tm9kZUlkKCk7XG4gIGNvbnN0IHBhcmVudElkID0gY3VzdG9tUGFyZW50SWQgfHwgcmVhY3RQYXJlbnRJZDtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSB7XG4gICAgICBpZCxcbiAgICAgIHBhcmVudElkXG4gICAgfTtcbiAgICB0cmVlID09IG51bGwgfHwgdHJlZS5hZGROb2RlKG5vZGUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0cmVlID09IG51bGwgfHwgdHJlZS5yZW1vdmVOb2RlKG5vZGUpO1xuICAgIH07XG4gIH0sIFt0cmVlLCBpZCwgcGFyZW50SWRdKTtcbiAgcmV0dXJuIGlkO1xufVxuLyoqXG4gKiBQcm92aWRlcyBwYXJlbnQgbm9kZSBjb250ZXh0IGZvciBuZXN0ZWQgZmxvYXRpbmcgZWxlbWVudHMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdUcmVlXG4gKi9cbmZ1bmN0aW9uIEZsb2F0aW5nTm9kZShwcm9wcykge1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgaWRcbiAgfSA9IHByb3BzO1xuICBjb25zdCBwYXJlbnRJZCA9IHVzZUZsb2F0aW5nUGFyZW50Tm9kZUlkKCk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGbG9hdGluZ05vZGVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAgIGlkLFxuICAgICAgcGFyZW50SWRcbiAgICB9KSwgW2lkLCBwYXJlbnRJZF0pXG4gIH0sIGNoaWxkcmVuKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgY29udGV4dCBmb3IgbmVzdGVkIGZsb2F0aW5nIGVsZW1lbnRzIHdoZW4gdGhleSBhcmUgbm90IGNoaWxkcmVuIG9mXG4gKiBlYWNoIG90aGVyIG9uIHRoZSBET00uXG4gKiBUaGlzIGlzIG5vdCBuZWNlc3NhcnkgaW4gYWxsIGNhc2VzLCBleGNlcHQgd2hlbiB0aGVyZSBtdXN0IGJlIGV4cGxpY2l0IGNvbW11bmljYXRpb24gYmV0d2VlbiBwYXJlbnQgYW5kIGNoaWxkIGZsb2F0aW5nIGVsZW1lbnRzLiBJdCBpcyBuZWNlc3NhcnkgZm9yOlxuICogLSBUaGUgYGJ1YmJsZXNgIG9wdGlvbiBpbiB0aGUgYHVzZURpc21pc3MoKWAgSG9va1xuICogLSBOZXN0ZWQgdmlydHVhbCBsaXN0IG5hdmlnYXRpb25cbiAqIC0gTmVzdGVkIGZsb2F0aW5nIGVsZW1lbnRzIHRoYXQgZWFjaCBvcGVuIG9uIGhvdmVyXG4gKiAtIEN1c3RvbSBjb21tdW5pY2F0aW9uIGJldHdlZW4gcGFyZW50IGFuZCBjaGlsZCBmbG9hdGluZyBlbGVtZW50c1xuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nVHJlZVxuICovXG5mdW5jdGlvbiBGbG9hdGluZ1RyZWUocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuXG4gIH0gPSBwcm9wcztcbiAgY29uc3Qgbm9kZXNSZWYgPSBSZWFjdC51c2VSZWYoW10pO1xuICBjb25zdCBhZGROb2RlID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgbm9kZXNSZWYuY3VycmVudCA9IFsuLi5ub2Rlc1JlZi5jdXJyZW50LCBub2RlXTtcbiAgfSwgW10pO1xuICBjb25zdCByZW1vdmVOb2RlID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgbm9kZXNSZWYuY3VycmVudCA9IG5vZGVzUmVmLmN1cnJlbnQuZmlsdGVyKG4gPT4gbiAhPT0gbm9kZSk7XG4gIH0sIFtdKTtcbiAgY29uc3QgZXZlbnRzID0gUmVhY3QudXNlU3RhdGUoKCkgPT4gY3JlYXRlUHViU3ViKCkpWzBdO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRmxvYXRpbmdUcmVlQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICBub2Rlc1JlZixcbiAgICAgIGFkZE5vZGUsXG4gICAgICByZW1vdmVOb2RlLFxuICAgICAgZXZlbnRzXG4gICAgfSksIFthZGROb2RlLCByZW1vdmVOb2RlLCBldmVudHNdKVxuICB9LCBjaGlsZHJlbik7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUF0dHJpYnV0ZShuYW1lKSB7XG4gIHJldHVybiBcImRhdGEtZmxvYXRpbmctdWktXCIgKyBuYW1lO1xufVxuXG5mdW5jdGlvbiB1c2VMYXRlc3RSZWYodmFsdWUpIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKHZhbHVlKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVmO1xufVxuXG5jb25zdCBzYWZlUG9seWdvbklkZW50aWZpZXIgPSAvKiNfX1BVUkVfXyovY3JlYXRlQXR0cmlidXRlKCdzYWZlLXBvbHlnb24nKTtcbmZ1bmN0aW9uIGdldERlbGF5KHZhbHVlLCBwcm9wLCBwb2ludGVyVHlwZSkge1xuICBpZiAocG9pbnRlclR5cGUgJiYgIWlzTW91c2VMaWtlUG9pbnRlclR5cGUocG9pbnRlclR5cGUpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyB2b2lkIDAgOiB2YWx1ZVtwcm9wXTtcbn1cbi8qKlxuICogT3BlbnMgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hpbGUgaG92ZXJpbmcgb3ZlciB0aGUgcmVmZXJlbmNlIGVsZW1lbnQsIGxpa2VcbiAqIENTUyBgOmhvdmVyYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VIb3ZlclxuICovXG5mdW5jdGlvbiB1c2VIb3Zlcihjb250ZXh0LCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGRhdGFSZWYsXG4gICAgZXZlbnRzLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgZGVsYXkgPSAwLFxuICAgIGhhbmRsZUNsb3NlID0gbnVsbCxcbiAgICBtb3VzZU9ubHkgPSBmYWxzZSxcbiAgICByZXN0TXMgPSAwLFxuICAgIG1vdmUgPSB0cnVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgdHJlZSA9IHVzZUZsb2F0aW5nVHJlZSgpO1xuICBjb25zdCBwYXJlbnRJZCA9IHVzZUZsb2F0aW5nUGFyZW50Tm9kZUlkKCk7XG4gIGNvbnN0IGhhbmRsZUNsb3NlUmVmID0gdXNlTGF0ZXN0UmVmKGhhbmRsZUNsb3NlKTtcbiAgY29uc3QgZGVsYXlSZWYgPSB1c2VMYXRlc3RSZWYoZGVsYXkpO1xuICBjb25zdCBvcGVuUmVmID0gdXNlTGF0ZXN0UmVmKG9wZW4pO1xuICBjb25zdCBwb2ludGVyVHlwZVJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICBjb25zdCB0aW1lb3V0UmVmID0gUmVhY3QudXNlUmVmKC0xKTtcbiAgY29uc3QgaGFuZGxlclJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICBjb25zdCByZXN0VGltZW91dFJlZiA9IFJlYWN0LnVzZVJlZigtMSk7XG4gIGNvbnN0IGJsb2NrTW91c2VNb3ZlUmVmID0gUmVhY3QudXNlUmVmKHRydWUpO1xuICBjb25zdCBwZXJmb3JtZWRQb2ludGVyRXZlbnRzTXV0YXRpb25SZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCB1bmJpbmRNb3VzZU1vdmVSZWYgPSBSZWFjdC51c2VSZWYoKCkgPT4ge30pO1xuICBjb25zdCBpc0hvdmVyT3BlbiA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB2YXIgX2RhdGFSZWYkY3VycmVudCRvcGVuO1xuICAgIGNvbnN0IHR5cGUgPSAoX2RhdGFSZWYkY3VycmVudCRvcGVuID0gZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kYXRhUmVmJGN1cnJlbnQkb3Blbi50eXBlO1xuICAgIHJldHVybiAodHlwZSA9PSBudWxsID8gdm9pZCAwIDogdHlwZS5pbmNsdWRlcygnbW91c2UnKSkgJiYgdHlwZSAhPT0gJ21vdXNlZG93bic7XG4gIH0sIFtkYXRhUmVmXSk7XG5cbiAgLy8gV2hlbiBjbG9zaW5nIGJlZm9yZSBvcGVuaW5nLCBjbGVhciB0aGUgZGVsYXkgdGltZW91dHMgdG8gY2FuY2VsIGl0XG4gIC8vIGZyb20gc2hvd2luZy5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgICBmdW5jdGlvbiBvbk9wZW5DaGFuZ2UoX3JlZikge1xuICAgICAgbGV0IHtcbiAgICAgICAgb3BlblxuICAgICAgfSA9IF9yZWY7XG4gICAgICBpZiAoIW9wZW4pIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgIGNsZWFyVGltZW91dChyZXN0VGltZW91dFJlZi5jdXJyZW50KTtcbiAgICAgICAgYmxvY2tNb3VzZU1vdmVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGV2ZW50cy5vbignb3BlbmNoYW5nZScsIG9uT3BlbkNoYW5nZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGV2ZW50cy5vZmYoJ29wZW5jaGFuZ2UnLCBvbk9wZW5DaGFuZ2UpO1xuICAgIH07XG4gIH0sIFtlbmFibGVkLCBldmVudHNdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIWhhbmRsZUNsb3NlUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICBpZiAoIW9wZW4pIHJldHVybjtcbiAgICBmdW5jdGlvbiBvbkxlYXZlKGV2ZW50KSB7XG4gICAgICBpZiAoaXNIb3Zlck9wZW4oKSkge1xuICAgICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50LCAnaG92ZXInKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50KGVsZW1lbnRzLmZsb2F0aW5nKS5kb2N1bWVudEVsZW1lbnQ7XG4gICAgaHRtbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgb25MZWF2ZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGh0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uTGVhdmUpO1xuICAgIH07XG4gIH0sIFtlbGVtZW50cy5mbG9hdGluZywgb3Blbiwgb25PcGVuQ2hhbmdlLCBlbmFibGVkLCBoYW5kbGVDbG9zZVJlZiwgaXNIb3Zlck9wZW5dKTtcbiAgY29uc3QgY2xvc2VXaXRoRGVsYXkgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQsIHJ1bkVsc2VCcmFuY2gsIHJlYXNvbikge1xuICAgIGlmIChydW5FbHNlQnJhbmNoID09PSB2b2lkIDApIHtcbiAgICAgIHJ1bkVsc2VCcmFuY2ggPSB0cnVlO1xuICAgIH1cbiAgICBpZiAocmVhc29uID09PSB2b2lkIDApIHtcbiAgICAgIHJlYXNvbiA9ICdob3Zlcic7XG4gICAgfVxuICAgIGNvbnN0IGNsb3NlRGVsYXkgPSBnZXREZWxheShkZWxheVJlZi5jdXJyZW50LCAnY2xvc2UnLCBwb2ludGVyVHlwZVJlZi5jdXJyZW50KTtcbiAgICBpZiAoY2xvc2VEZWxheSAmJiAhaGFuZGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dFJlZi5jdXJyZW50KTtcbiAgICAgIHRpbWVvdXRSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQsIHJlYXNvbiksIGNsb3NlRGVsYXkpO1xuICAgIH0gZWxzZSBpZiAocnVuRWxzZUJyYW5jaCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50LCByZWFzb24pO1xuICAgIH1cbiAgfSwgW2RlbGF5UmVmLCBvbk9wZW5DaGFuZ2VdKTtcbiAgY29uc3QgY2xlYW51cE1vdXNlTW92ZUhhbmRsZXIgPSB1c2VFZmZlY3RFdmVudCgoKSA9PiB7XG4gICAgdW5iaW5kTW91c2VNb3ZlUmVmLmN1cnJlbnQoKTtcbiAgICBoYW5kbGVyUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gIH0pO1xuICBjb25zdCBjbGVhclBvaW50ZXJFdmVudHMgPSB1c2VFZmZlY3RFdmVudCgoKSA9PiB7XG4gICAgaWYgKHBlcmZvcm1lZFBvaW50ZXJFdmVudHNNdXRhdGlvblJlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBib2R5ID0gZ2V0RG9jdW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpLmJvZHk7XG4gICAgICBib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnJztcbiAgICAgIGJvZHkucmVtb3ZlQXR0cmlidXRlKHNhZmVQb2x5Z29uSWRlbnRpZmllcik7XG4gICAgICBwZXJmb3JtZWRQb2ludGVyRXZlbnRzTXV0YXRpb25SZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gUmVnaXN0ZXJpbmcgdGhlIG1vdXNlIGV2ZW50cyBvbiB0aGUgcmVmZXJlbmNlIGRpcmVjdGx5IHRvIGJ5cGFzcyBSZWFjdCdzXG4gIC8vIGRlbGVnYXRpb24gc3lzdGVtLiBJZiB0aGUgY3Vyc29yIHdhcyBvbiBhIGRpc2FibGVkIGVsZW1lbnQgYW5kIHRoZW4gZW50ZXJlZFxuICAvLyB0aGUgcmVmZXJlbmNlIChubyBnYXApLCBgbW91c2VlbnRlcmAgZG9lc24ndCBmaXJlIGluIHRoZSBkZWxlZ2F0aW9uIHN5c3RlbS5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgICBmdW5jdGlvbiBpc0NsaWNrTGlrZU9wZW5FdmVudCgpIHtcbiAgICAgIHJldHVybiBkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50ID8gWydjbGljaycsICdtb3VzZWRvd24nXS5pbmNsdWRlcyhkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50LnR5cGUpIDogZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9uTW91c2VFbnRlcihldmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICBibG9ja01vdXNlTW92ZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICBpZiAobW91c2VPbmx5ICYmICFpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQpIHx8IHJlc3RNcyA+IDAgJiYgIWdldERlbGF5KGRlbGF5UmVmLmN1cnJlbnQsICdvcGVuJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3BlbkRlbGF5ID0gZ2V0RGVsYXkoZGVsYXlSZWYuY3VycmVudCwgJ29wZW4nLCBwb2ludGVyVHlwZVJlZi5jdXJyZW50KTtcbiAgICAgIGlmIChvcGVuRGVsYXkpIHtcbiAgICAgICAgdGltZW91dFJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghb3BlblJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBvbk9wZW5DaGFuZ2UodHJ1ZSwgZXZlbnQsICdob3ZlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgb3BlbkRlbGF5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudCwgJ2hvdmVyJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9uTW91c2VMZWF2ZShldmVudCkge1xuICAgICAgaWYgKGlzQ2xpY2tMaWtlT3BlbkV2ZW50KCkpIHJldHVybjtcbiAgICAgIHVuYmluZE1vdXNlTW92ZVJlZi5jdXJyZW50KCk7XG4gICAgICBjb25zdCBkb2MgPSBnZXREb2N1bWVudChlbGVtZW50cy5mbG9hdGluZyk7XG4gICAgICBjbGVhclRpbWVvdXQocmVzdFRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICBpZiAoaGFuZGxlQ2xvc2VSZWYuY3VycmVudCAmJiBkYXRhUmVmLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0KSB7XG4gICAgICAgIC8vIFByZXZlbnQgY2xlYXJpbmcgYG9uU2Nyb2xsTW91c2VMZWF2ZWAgdGltZW91dC5cbiAgICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlclJlZi5jdXJyZW50ID0gaGFuZGxlQ2xvc2VSZWYuY3VycmVudCh7XG4gICAgICAgICAgLi4uZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCxcbiAgICAgICAgICB0cmVlLFxuICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgeTogZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICBvbkNsb3NlKCkge1xuICAgICAgICAgICAgY2xlYXJQb2ludGVyRXZlbnRzKCk7XG4gICAgICAgICAgICBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlcigpO1xuICAgICAgICAgICAgY2xvc2VXaXRoRGVsYXkoZXZlbnQsIHRydWUsICdzYWZlLXBvbHlnb24nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gaGFuZGxlclJlZi5jdXJyZW50O1xuICAgICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlcik7XG4gICAgICAgIHVuYmluZE1vdXNlTW92ZVJlZi5jdXJyZW50ID0gKCkgPT4ge1xuICAgICAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVyKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBBbGxvdyBpbnRlcmFjdGl2aXR5IHdpdGhvdXQgYHNhZmVQb2x5Z29uYCBvbiB0b3VjaCBkZXZpY2VzLiBXaXRoIGFcbiAgICAgIC8vIHBvaW50ZXIsIGEgc2hvcnQgY2xvc2UgZGVsYXkgaXMgYW4gYWx0ZXJuYXRpdmUsIHNvIGl0IHNob3VsZCB3b3JrXG4gICAgICAvLyBjb25zaXN0ZW50bHkuXG4gICAgICBjb25zdCBzaG91bGRDbG9zZSA9IHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQgPT09ICd0b3VjaCcgPyAhY29udGFpbnMoZWxlbWVudHMuZmxvYXRpbmcsIGV2ZW50LnJlbGF0ZWRUYXJnZXQpIDogdHJ1ZTtcbiAgICAgIGlmIChzaG91bGRDbG9zZSkge1xuICAgICAgICBjbG9zZVdpdGhEZWxheShldmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHRoZSBmbG9hdGluZyBlbGVtZW50IGNsb3NlcyBhZnRlciBzY3JvbGxpbmcgZXZlbiBpZiB0aGUgcG9pbnRlclxuICAgIC8vIGRpZCBub3QgbW92ZS5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvZGlzY3Vzc2lvbnMvMTY5MlxuICAgIGZ1bmN0aW9uIG9uU2Nyb2xsTW91c2VMZWF2ZShldmVudCkge1xuICAgICAgaWYgKGlzQ2xpY2tMaWtlT3BlbkV2ZW50KCkpIHJldHVybjtcbiAgICAgIGlmICghZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCkgcmV0dXJuO1xuICAgICAgaGFuZGxlQ2xvc2VSZWYuY3VycmVudCA9PSBudWxsIHx8IGhhbmRsZUNsb3NlUmVmLmN1cnJlbnQoe1xuICAgICAgICAuLi5kYXRhUmVmLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0LFxuICAgICAgICB0cmVlLFxuICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICB5OiBldmVudC5jbGllbnRZLFxuICAgICAgICBvbkNsb3NlKCkge1xuICAgICAgICAgIGNsZWFyUG9pbnRlckV2ZW50cygpO1xuICAgICAgICAgIGNsZWFudXBNb3VzZU1vdmVIYW5kbGVyKCk7XG4gICAgICAgICAgY2xvc2VXaXRoRGVsYXkoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KShldmVudCk7XG4gICAgfVxuICAgIGlmIChpc0VsZW1lbnQoZWxlbWVudHMuZG9tUmVmZXJlbmNlKSkge1xuICAgICAgdmFyIF9lbGVtZW50cyRmbG9hdGluZztcbiAgICAgIGNvbnN0IHJlZiA9IGVsZW1lbnRzLmRvbVJlZmVyZW5jZTtcbiAgICAgIG9wZW4gJiYgcmVmLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBvblNjcm9sbE1vdXNlTGVhdmUpO1xuICAgICAgKF9lbGVtZW50cyRmbG9hdGluZyA9IGVsZW1lbnRzLmZsb2F0aW5nKSA9PSBudWxsIHx8IF9lbGVtZW50cyRmbG9hdGluZy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgb25TY3JvbGxNb3VzZUxlYXZlKTtcbiAgICAgIG1vdmUgJiYgcmVmLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VFbnRlciwge1xuICAgICAgICBvbmNlOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIHJlZi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgb25Nb3VzZUVudGVyKTtcbiAgICAgIHJlZi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgb25Nb3VzZUxlYXZlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHZhciBfZWxlbWVudHMkZmxvYXRpbmcyO1xuICAgICAgICBvcGVuICYmIHJlZi5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgb25TY3JvbGxNb3VzZUxlYXZlKTtcbiAgICAgICAgKF9lbGVtZW50cyRmbG9hdGluZzIgPSBlbGVtZW50cy5mbG9hdGluZykgPT0gbnVsbCB8fCBfZWxlbWVudHMkZmxvYXRpbmcyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBvblNjcm9sbE1vdXNlTGVhdmUpO1xuICAgICAgICBtb3ZlICYmIHJlZi5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlRW50ZXIpO1xuICAgICAgICByZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIG9uTW91c2VFbnRlcik7XG4gICAgICAgIHJlZi5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgb25Nb3VzZUxlYXZlKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbZWxlbWVudHMsIGVuYWJsZWQsIGNvbnRleHQsIG1vdXNlT25seSwgcmVzdE1zLCBtb3ZlLCBjbG9zZVdpdGhEZWxheSwgY2xlYW51cE1vdXNlTW92ZUhhbmRsZXIsIGNsZWFyUG9pbnRlckV2ZW50cywgb25PcGVuQ2hhbmdlLCBvcGVuLCBvcGVuUmVmLCB0cmVlLCBkZWxheVJlZiwgaGFuZGxlQ2xvc2VSZWYsIGRhdGFSZWZdKTtcblxuICAvLyBCbG9jayBwb2ludGVyLWV2ZW50cyBvZiBldmVyeSBlbGVtZW50IG90aGVyIHRoYW4gdGhlIHJlZmVyZW5jZSBhbmQgZmxvYXRpbmdcbiAgLy8gd2hpbGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgb3BlbiBhbmQgaGFzIGEgYGhhbmRsZUNsb3NlYCBoYW5kbGVyLiBBbHNvXG4gIC8vIGhhbmRsZXMgbmVzdGVkIGZsb2F0aW5nIGVsZW1lbnRzLlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3MjJcbiAgaW5kZXgoKCkgPT4ge1xuICAgIHZhciBfaGFuZGxlQ2xvc2VSZWYkY3VycmU7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKG9wZW4gJiYgKF9oYW5kbGVDbG9zZVJlZiRjdXJyZSA9IGhhbmRsZUNsb3NlUmVmLmN1cnJlbnQpICE9IG51bGwgJiYgX2hhbmRsZUNsb3NlUmVmJGN1cnJlLl9fb3B0aW9ucy5ibG9ja1BvaW50ZXJFdmVudHMgJiYgaXNIb3Zlck9wZW4oKSkge1xuICAgICAgY29uc3QgYm9keSA9IGdldERvY3VtZW50KGVsZW1lbnRzLmZsb2F0aW5nKS5ib2R5O1xuICAgICAgYm9keS5zZXRBdHRyaWJ1dGUoc2FmZVBvbHlnb25JZGVudGlmaWVyLCAnJyk7XG4gICAgICBib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICBwZXJmb3JtZWRQb2ludGVyRXZlbnRzTXV0YXRpb25SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICBjb25zdCBmbG9hdGluZ0VsID0gZWxlbWVudHMuZmxvYXRpbmc7XG4gICAgICBpZiAoaXNFbGVtZW50KGVsZW1lbnRzLmRvbVJlZmVyZW5jZSkgJiYgZmxvYXRpbmdFbCkge1xuICAgICAgICB2YXIgX3RyZWUkbm9kZXNSZWYkY3VycmVuO1xuICAgICAgICBjb25zdCByZWYgPSBlbGVtZW50cy5kb21SZWZlcmVuY2U7XG4gICAgICAgIGNvbnN0IHBhcmVudEZsb2F0aW5nID0gdHJlZSA9PSBudWxsIHx8IChfdHJlZSRub2Rlc1JlZiRjdXJyZW4gPSB0cmVlLm5vZGVzUmVmLmN1cnJlbnQuZmluZChub2RlID0+IG5vZGUuaWQgPT09IHBhcmVudElkKSkgPT0gbnVsbCB8fCAoX3RyZWUkbm9kZXNSZWYkY3VycmVuID0gX3RyZWUkbm9kZXNSZWYkY3VycmVuLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfdHJlZSRub2Rlc1JlZiRjdXJyZW4uZWxlbWVudHMuZmxvYXRpbmc7XG4gICAgICAgIGlmIChwYXJlbnRGbG9hdGluZykge1xuICAgICAgICAgIHBhcmVudEZsb2F0aW5nLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnJztcbiAgICAgICAgfVxuICAgICAgICByZWYuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdhdXRvJztcbiAgICAgICAgZmxvYXRpbmdFbC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ2F1dG8nO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIHJlZi5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7XG4gICAgICAgICAgZmxvYXRpbmdFbC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3BlbiwgcGFyZW50SWQsIGVsZW1lbnRzLCB0cmVlLCBoYW5kbGVDbG9zZVJlZiwgaXNIb3Zlck9wZW5dKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghb3Blbikge1xuICAgICAgcG9pbnRlclR5cGVSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIGNsZWFudXBNb3VzZU1vdmVIYW5kbGVyKCk7XG4gICAgICBjbGVhclBvaW50ZXJFdmVudHMoKTtcbiAgICB9XG4gIH0sIFtvcGVuLCBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlciwgY2xlYXJQb2ludGVyRXZlbnRzXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFudXBNb3VzZU1vdmVIYW5kbGVyKCk7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dFJlZi5jdXJyZW50KTtcbiAgICAgIGNsZWFyVGltZW91dChyZXN0VGltZW91dFJlZi5jdXJyZW50KTtcbiAgICAgIGNsZWFyUG9pbnRlckV2ZW50cygpO1xuICAgIH07XG4gIH0sIFtlbmFibGVkLCBlbGVtZW50cy5kb21SZWZlcmVuY2UsIGNsZWFudXBNb3VzZU1vdmVIYW5kbGVyLCBjbGVhclBvaW50ZXJFdmVudHNdKTtcbiAgY29uc3QgcmVmZXJlbmNlID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgZnVuY3Rpb24gc2V0UG9pbnRlclJlZihldmVudCkge1xuICAgICAgcG9pbnRlclR5cGVSZWYuY3VycmVudCA9IGV2ZW50LnBvaW50ZXJUeXBlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgb25Qb2ludGVyRG93bjogc2V0UG9pbnRlclJlZixcbiAgICAgIG9uUG9pbnRlckVudGVyOiBzZXRQb2ludGVyUmVmLFxuICAgICAgb25Nb3VzZU1vdmUoZXZlbnQpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG5hdGl2ZUV2ZW50XG4gICAgICAgIH0gPSBldmVudDtcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTW91c2VNb3ZlKCkge1xuICAgICAgICAgIGlmICghYmxvY2tNb3VzZU1vdmVSZWYuY3VycmVudCAmJiAhb3BlblJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBvbk9wZW5DaGFuZ2UodHJ1ZSwgbmF0aXZlRXZlbnQsICdob3ZlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobW91c2VPbmx5ICYmICFpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVuIHx8IHJlc3RNcyA9PT0gMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjbGVhclRpbWVvdXQocmVzdFRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgIGlmIChwb2ludGVyVHlwZVJlZi5jdXJyZW50ID09PSAndG91Y2gnKSB7XG4gICAgICAgICAgaGFuZGxlTW91c2VNb3ZlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdFRpbWVvdXRSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KGhhbmRsZU1vdXNlTW92ZSwgcmVzdE1zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0sIFttb3VzZU9ubHksIG9uT3BlbkNoYW5nZSwgb3Blbiwgb3BlblJlZiwgcmVzdE1zXSk7XG4gIGNvbnN0IGZsb2F0aW5nID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIG9uTW91c2VFbnRlcigpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgIH0sXG4gICAgb25Nb3VzZUxlYXZlKGV2ZW50KSB7XG4gICAgICBjbG9zZVdpdGhEZWxheShldmVudC5uYXRpdmVFdmVudCwgZmFsc2UpO1xuICAgIH1cbiAgfSksIFtjbG9zZVdpdGhEZWxheV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2UsIGZsb2F0aW5nXSk7XG59XG5cbmNvbnN0IE5PT1AgPSAoKSA9PiB7fTtcbmNvbnN0IEZsb2F0aW5nRGVsYXlHcm91cENvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dCh7XG4gIGRlbGF5OiAwLFxuICBpbml0aWFsRGVsYXk6IDAsXG4gIHRpbWVvdXRNczogMCxcbiAgY3VycmVudElkOiBudWxsLFxuICBzZXRDdXJyZW50SWQ6IE5PT1AsXG4gIHNldFN0YXRlOiBOT09QLFxuICBpc0luc3RhbnRQaGFzZTogZmFsc2Vcbn0pO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgdGhlIHJldHVybiB2YWx1ZSBvZiBgdXNlRGVsYXlHcm91cCgpYCBpbnN0ZWFkLlxuICovXG5jb25zdCB1c2VEZWxheUdyb3VwQ29udGV4dCA9ICgpID0+IFJlYWN0LnVzZUNvbnRleHQoRmxvYXRpbmdEZWxheUdyb3VwQ29udGV4dCk7XG4vKipcbiAqIFByb3ZpZGVzIGNvbnRleHQgZm9yIGEgZ3JvdXAgb2YgZmxvYXRpbmcgZWxlbWVudHMgdGhhdCBzaG91bGQgc2hhcmUgYVxuICogYGRlbGF5YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ0RlbGF5R3JvdXBcbiAqL1xuZnVuY3Rpb24gRmxvYXRpbmdEZWxheUdyb3VwKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjaGlsZHJlbixcbiAgICBkZWxheSxcbiAgICB0aW1lb3V0TXMgPSAwXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VSZWR1Y2VyKChwcmV2LCBuZXh0KSA9PiAoe1xuICAgIC4uLnByZXYsXG4gICAgLi4ubmV4dFxuICB9KSwge1xuICAgIGRlbGF5LFxuICAgIHRpbWVvdXRNcyxcbiAgICBpbml0aWFsRGVsYXk6IGRlbGF5LFxuICAgIGN1cnJlbnRJZDogbnVsbCxcbiAgICBpc0luc3RhbnRQaGFzZTogZmFsc2VcbiAgfSk7XG4gIGNvbnN0IGluaXRpYWxDdXJyZW50SWRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IHNldEN1cnJlbnRJZCA9IFJlYWN0LnVzZUNhbGxiYWNrKGN1cnJlbnRJZCA9PiB7XG4gICAgc2V0U3RhdGUoe1xuICAgICAgY3VycmVudElkXG4gICAgfSk7XG4gIH0sIFtdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChzdGF0ZS5jdXJyZW50SWQpIHtcbiAgICAgIGlmIChpbml0aWFsQ3VycmVudElkUmVmLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgaW5pdGlhbEN1cnJlbnRJZFJlZi5jdXJyZW50ID0gc3RhdGUuY3VycmVudElkO1xuICAgICAgfSBlbHNlIGlmICghc3RhdGUuaXNJbnN0YW50UGhhc2UpIHtcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIGlzSW5zdGFudFBoYXNlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc3RhdGUuaXNJbnN0YW50UGhhc2UpIHtcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIGlzSW5zdGFudFBoYXNlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGluaXRpYWxDdXJyZW50SWRSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICB9LCBbc3RhdGUuY3VycmVudElkLCBzdGF0ZS5pc0luc3RhbnRQaGFzZV0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRmxvYXRpbmdEZWxheUdyb3VwQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNldFN0YXRlLFxuICAgICAgc2V0Q3VycmVudElkXG4gICAgfSksIFtzdGF0ZSwgc2V0Q3VycmVudElkXSlcbiAgfSwgY2hpbGRyZW4pO1xufVxuLyoqXG4gKiBFbmFibGVzIGdyb3VwaW5nIHdoZW4gY2FsbGVkIGluc2lkZSBhIGNvbXBvbmVudCB0aGF0J3MgYSBjaGlsZCBvZiBhXG4gKiBgRmxvYXRpbmdEZWxheUdyb3VwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ0RlbGF5R3JvdXBcbiAqL1xuZnVuY3Rpb24gdXNlRGVsYXlHcm91cChjb250ZXh0LCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGZsb2F0aW5nSWRcbiAgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBpZDogb3B0aW9uSWRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlkID0gb3B0aW9uSWQgIT0gbnVsbCA/IG9wdGlvbklkIDogZmxvYXRpbmdJZDtcbiAgY29uc3QgZ3JvdXBDb250ZXh0ID0gdXNlRGVsYXlHcm91cENvbnRleHQoKTtcbiAgY29uc3Qge1xuICAgIGN1cnJlbnRJZCxcbiAgICBzZXRDdXJyZW50SWQsXG4gICAgaW5pdGlhbERlbGF5LFxuICAgIHNldFN0YXRlLFxuICAgIHRpbWVvdXRNc1xuICB9ID0gZ3JvdXBDb250ZXh0O1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFjdXJyZW50SWQpIHJldHVybjtcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBkZWxheToge1xuICAgICAgICBvcGVuOiAxLFxuICAgICAgICBjbG9zZTogZ2V0RGVsYXkoaW5pdGlhbERlbGF5LCAnY2xvc2UnKVxuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChjdXJyZW50SWQgIT09IGlkKSB7XG4gICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgIH1cbiAgfSwgW2lkLCBvbk9wZW5DaGFuZ2UsIHNldFN0YXRlLCBjdXJyZW50SWQsIGluaXRpYWxEZWxheV0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgZnVuY3Rpb24gdW5zZXQoKSB7XG4gICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBkZWxheTogaW5pdGlhbERlbGF5LFxuICAgICAgICBjdXJyZW50SWQ6IG51bGxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIWN1cnJlbnRJZCkgcmV0dXJuO1xuICAgIGlmICghb3BlbiAmJiBjdXJyZW50SWQgPT09IGlkKSB7XG4gICAgICBpZiAodGltZW91dE1zKSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCh1bnNldCwgdGltZW91dE1zKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB1bnNldCgpO1xuICAgIH1cbiAgfSwgW29wZW4sIHNldFN0YXRlLCBjdXJyZW50SWQsIGlkLCBvbk9wZW5DaGFuZ2UsIGluaXRpYWxEZWxheSwgdGltZW91dE1zXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoc2V0Q3VycmVudElkID09PSBOT09QIHx8ICFvcGVuKSByZXR1cm47XG4gICAgc2V0Q3VycmVudElkKGlkKTtcbiAgfSwgW29wZW4sIHNldEN1cnJlbnRJZCwgaWRdKTtcbiAgcmV0dXJuIGdyb3VwQ29udGV4dDtcbn1cblxuZnVuY3Rpb24gZ2V0QW5jZXN0b3JzKG5vZGVzLCBpZCkge1xuICB2YXIgX25vZGVzJGZpbmQ7XG4gIGxldCBhbGxBbmNlc3RvcnMgPSBbXTtcbiAgbGV0IGN1cnJlbnRQYXJlbnRJZCA9IChfbm9kZXMkZmluZCA9IG5vZGVzLmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBpZCkpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZXMkZmluZC5wYXJlbnRJZDtcbiAgd2hpbGUgKGN1cnJlbnRQYXJlbnRJZCkge1xuICAgIGNvbnN0IGN1cnJlbnROb2RlID0gbm9kZXMuZmluZChub2RlID0+IG5vZGUuaWQgPT09IGN1cnJlbnRQYXJlbnRJZCk7XG4gICAgY3VycmVudFBhcmVudElkID0gY3VycmVudE5vZGUgPT0gbnVsbCA/IHZvaWQgMCA6IGN1cnJlbnROb2RlLnBhcmVudElkO1xuICAgIGlmIChjdXJyZW50Tm9kZSkge1xuICAgICAgYWxsQW5jZXN0b3JzID0gYWxsQW5jZXN0b3JzLmNvbmNhdChjdXJyZW50Tm9kZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbGxBbmNlc3RvcnM7XG59XG5cbmZ1bmN0aW9uIGdldENoaWxkcmVuKG5vZGVzLCBpZCkge1xuICBsZXQgYWxsQ2hpbGRyZW4gPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB7XG4gICAgdmFyIF9ub2RlJGNvbnRleHQ7XG4gICAgcmV0dXJuIG5vZGUucGFyZW50SWQgPT09IGlkICYmICgoX25vZGUkY29udGV4dCA9IG5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJGNvbnRleHQub3Blbik7XG4gIH0pO1xuICBsZXQgY3VycmVudENoaWxkcmVuID0gYWxsQ2hpbGRyZW47XG4gIHdoaWxlIChjdXJyZW50Q2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgY3VycmVudENoaWxkcmVuID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4ge1xuICAgICAgdmFyIF9jdXJyZW50Q2hpbGRyZW47XG4gICAgICByZXR1cm4gKF9jdXJyZW50Q2hpbGRyZW4gPSBjdXJyZW50Q2hpbGRyZW4pID09IG51bGwgPyB2b2lkIDAgOiBfY3VycmVudENoaWxkcmVuLnNvbWUobiA9PiB7XG4gICAgICAgIHZhciBfbm9kZSRjb250ZXh0MjtcbiAgICAgICAgcmV0dXJuIG5vZGUucGFyZW50SWQgPT09IG4uaWQgJiYgKChfbm9kZSRjb250ZXh0MiA9IG5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJGNvbnRleHQyLm9wZW4pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgYWxsQ2hpbGRyZW4gPSBhbGxDaGlsZHJlbi5jb25jYXQoY3VycmVudENoaWxkcmVuKTtcbiAgfVxuICByZXR1cm4gYWxsQ2hpbGRyZW47XG59XG5mdW5jdGlvbiBnZXREZWVwZXN0Tm9kZShub2RlcywgaWQpIHtcbiAgbGV0IGRlZXBlc3ROb2RlSWQ7XG4gIGxldCBtYXhEZXB0aCA9IC0xO1xuICBmdW5jdGlvbiBmaW5kRGVlcGVzdChub2RlSWQsIGRlcHRoKSB7XG4gICAgaWYgKGRlcHRoID4gbWF4RGVwdGgpIHtcbiAgICAgIGRlZXBlc3ROb2RlSWQgPSBub2RlSWQ7XG4gICAgICBtYXhEZXB0aCA9IGRlcHRoO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZHJlbiA9IGdldENoaWxkcmVuKG5vZGVzLCBub2RlSWQpO1xuICAgIGNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgZmluZERlZXBlc3QoY2hpbGQuaWQsIGRlcHRoICsgMSk7XG4gICAgfSk7XG4gIH1cbiAgZmluZERlZXBlc3QoaWQsIDApO1xuICByZXR1cm4gbm9kZXMuZmluZChub2RlID0+IG5vZGUuaWQgPT09IGRlZXBlc3ROb2RlSWQpO1xufVxuXG4vLyBNb2RpZmllZCB0byBhZGQgY29uZGl0aW9uYWwgYGFyaWEtaGlkZGVuYCBzdXBwb3J0OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RoZUthc2hleS9hcmlhLWhpZGRlbi9ibG9iLzkyMjBjOGY0YTRmZDM1ZjYzYmVlNTUxMGE5ZjQxYTM3MjY0MzgyZDQvc3JjL2luZGV4LnRzXG5sZXQgY291bnRlck1hcCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xubGV0IHVuY29udHJvbGxlZEVsZW1lbnRzU2V0ID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG5sZXQgbWFya2VyTWFwID0ge307XG5sZXQgbG9ja0NvdW50ID0gMDtcbmNvbnN0IHN1cHBvcnRzSW5lcnQgPSAoKSA9PiB0eXBlb2YgSFRNTEVsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmICdpbmVydCcgaW4gSFRNTEVsZW1lbnQucHJvdG90eXBlO1xuY29uc3QgdW53cmFwSG9zdCA9IG5vZGUgPT4gbm9kZSAmJiAobm9kZS5ob3N0IHx8IHVud3JhcEhvc3Qobm9kZS5wYXJlbnROb2RlKSk7XG5jb25zdCBjb3JyZWN0RWxlbWVudHMgPSAocGFyZW50LCB0YXJnZXRzKSA9PiB0YXJnZXRzLm1hcCh0YXJnZXQgPT4ge1xuICBpZiAocGFyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG4gIGNvbnN0IGNvcnJlY3RlZFRhcmdldCA9IHVud3JhcEhvc3QodGFyZ2V0KTtcbiAgaWYgKHBhcmVudC5jb250YWlucyhjb3JyZWN0ZWRUYXJnZXQpKSB7XG4gICAgcmV0dXJuIGNvcnJlY3RlZFRhcmdldDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn0pLmZpbHRlcih4ID0+IHggIT0gbnVsbCk7XG5mdW5jdGlvbiBhcHBseUF0dHJpYnV0ZVRvT3RoZXJzKHVuY29ycmVjdGVkQXZvaWRFbGVtZW50cywgYm9keSwgYXJpYUhpZGRlbiwgaW5lcnQpIHtcbiAgY29uc3QgbWFya2VyTmFtZSA9ICdkYXRhLWZsb2F0aW5nLXVpLWluZXJ0JztcbiAgY29uc3QgY29udHJvbEF0dHJpYnV0ZSA9IGluZXJ0ID8gJ2luZXJ0JyA6IGFyaWFIaWRkZW4gPyAnYXJpYS1oaWRkZW4nIDogbnVsbDtcbiAgY29uc3QgYXZvaWRFbGVtZW50cyA9IGNvcnJlY3RFbGVtZW50cyhib2R5LCB1bmNvcnJlY3RlZEF2b2lkRWxlbWVudHMpO1xuICBjb25zdCBlbGVtZW50c1RvS2VlcCA9IG5ldyBTZXQoKTtcbiAgY29uc3QgZWxlbWVudHNUb1N0b3AgPSBuZXcgU2V0KGF2b2lkRWxlbWVudHMpO1xuICBjb25zdCBoaWRkZW5FbGVtZW50cyA9IFtdO1xuICBpZiAoIW1hcmtlck1hcFttYXJrZXJOYW1lXSkge1xuICAgIG1hcmtlck1hcFttYXJrZXJOYW1lXSA9IG5ldyBXZWFrTWFwKCk7XG4gIH1cbiAgY29uc3QgbWFya2VyQ291bnRlciA9IG1hcmtlck1hcFttYXJrZXJOYW1lXTtcbiAgYXZvaWRFbGVtZW50cy5mb3JFYWNoKGtlZXApO1xuICBkZWVwKGJvZHkpO1xuICBlbGVtZW50c1RvS2VlcC5jbGVhcigpO1xuICBmdW5jdGlvbiBrZWVwKGVsKSB7XG4gICAgaWYgKCFlbCB8fCBlbGVtZW50c1RvS2VlcC5oYXMoZWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsZW1lbnRzVG9LZWVwLmFkZChlbCk7XG4gICAgZWwucGFyZW50Tm9kZSAmJiBrZWVwKGVsLnBhcmVudE5vZGUpO1xuICB9XG4gIGZ1bmN0aW9uIGRlZXAocGFyZW50KSB7XG4gICAgaWYgKCFwYXJlbnQgfHwgZWxlbWVudHNUb1N0b3AuaGFzKHBhcmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgW10uZm9yRWFjaC5jYWxsKHBhcmVudC5jaGlsZHJlbiwgbm9kZSA9PiB7XG4gICAgICBpZiAoZ2V0Tm9kZU5hbWUobm9kZSkgPT09ICdzY3JpcHQnKSByZXR1cm47XG4gICAgICBpZiAoZWxlbWVudHNUb0tlZXAuaGFzKG5vZGUpKSB7XG4gICAgICAgIGRlZXAobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhdHRyID0gY29udHJvbEF0dHJpYnV0ZSA/IG5vZGUuZ2V0QXR0cmlidXRlKGNvbnRyb2xBdHRyaWJ1dGUpIDogbnVsbDtcbiAgICAgICAgY29uc3QgYWxyZWFkeUhpZGRlbiA9IGF0dHIgIT09IG51bGwgJiYgYXR0ciAhPT0gJ2ZhbHNlJztcbiAgICAgICAgY29uc3QgY291bnRlclZhbHVlID0gKGNvdW50ZXJNYXAuZ2V0KG5vZGUpIHx8IDApICsgMTtcbiAgICAgICAgY29uc3QgbWFya2VyVmFsdWUgPSAobWFya2VyQ291bnRlci5nZXQobm9kZSkgfHwgMCkgKyAxO1xuICAgICAgICBjb3VudGVyTWFwLnNldChub2RlLCBjb3VudGVyVmFsdWUpO1xuICAgICAgICBtYXJrZXJDb3VudGVyLnNldChub2RlLCBtYXJrZXJWYWx1ZSk7XG4gICAgICAgIGhpZGRlbkVsZW1lbnRzLnB1c2gobm9kZSk7XG4gICAgICAgIGlmIChjb3VudGVyVmFsdWUgPT09IDEgJiYgYWxyZWFkeUhpZGRlbikge1xuICAgICAgICAgIHVuY29udHJvbGxlZEVsZW1lbnRzU2V0LmFkZChub2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFya2VyVmFsdWUgPT09IDEpIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShtYXJrZXJOYW1lLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhbHJlYWR5SGlkZGVuICYmIGNvbnRyb2xBdHRyaWJ1dGUpIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgbG9ja0NvdW50Kys7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaGlkZGVuRWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGNvbnN0IGNvdW50ZXJWYWx1ZSA9IChjb3VudGVyTWFwLmdldChlbGVtZW50KSB8fCAwKSAtIDE7XG4gICAgICBjb25zdCBtYXJrZXJWYWx1ZSA9IChtYXJrZXJDb3VudGVyLmdldChlbGVtZW50KSB8fCAwKSAtIDE7XG4gICAgICBjb3VudGVyTWFwLnNldChlbGVtZW50LCBjb3VudGVyVmFsdWUpO1xuICAgICAgbWFya2VyQ291bnRlci5zZXQoZWxlbWVudCwgbWFya2VyVmFsdWUpO1xuICAgICAgaWYgKCFjb3VudGVyVmFsdWUpIHtcbiAgICAgICAgaWYgKCF1bmNvbnRyb2xsZWRFbGVtZW50c1NldC5oYXMoZWxlbWVudCkgJiYgY29udHJvbEF0dHJpYnV0ZSkge1xuICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGNvbnRyb2xBdHRyaWJ1dGUpO1xuICAgICAgICB9XG4gICAgICAgIHVuY29udHJvbGxlZEVsZW1lbnRzU2V0LmRlbGV0ZShlbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIGlmICghbWFya2VyVmFsdWUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobWFya2VyTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbG9ja0NvdW50LS07XG4gICAgaWYgKCFsb2NrQ291bnQpIHtcbiAgICAgIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgY291bnRlck1hcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICB1bmNvbnRyb2xsZWRFbGVtZW50c1NldCA9IG5ldyBXZWFrU2V0KCk7XG4gICAgICBtYXJrZXJNYXAgPSB7fTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBtYXJrT3RoZXJzKGF2b2lkRWxlbWVudHMsIGFyaWFIaWRkZW4sIGluZXJ0KSB7XG4gIGlmIChhcmlhSGlkZGVuID09PSB2b2lkIDApIHtcbiAgICBhcmlhSGlkZGVuID0gZmFsc2U7XG4gIH1cbiAgaWYgKGluZXJ0ID09PSB2b2lkIDApIHtcbiAgICBpbmVydCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGJvZHkgPSBnZXREb2N1bWVudChhdm9pZEVsZW1lbnRzWzBdKS5ib2R5O1xuICByZXR1cm4gYXBwbHlBdHRyaWJ1dGVUb090aGVycyhhdm9pZEVsZW1lbnRzLmNvbmNhdChBcnJheS5mcm9tKGJvZHkucXVlcnlTZWxlY3RvckFsbCgnW2FyaWEtbGl2ZV0nKSkpLCBib2R5LCBhcmlhSGlkZGVuLCBpbmVydCk7XG59XG5cbmNvbnN0IGdldFRhYmJhYmxlT3B0aW9ucyA9ICgpID0+ICh7XG4gIGdldFNoYWRvd1Jvb3Q6IHRydWUsXG4gIGRpc3BsYXlDaGVjazpcbiAgLy8gSlNET00gZG9lcyBub3Qgc3VwcG9ydCB0aGUgYHRhYmJhYmxlYCBsaWJyYXJ5LiBUbyBzb2x2ZSB0aGlzIHdlIGNhblxuICAvLyBjaGVjayBpZiBgUmVzaXplT2JzZXJ2ZXJgIGlzIGEgcmVhbCBmdW5jdGlvbiAobm90IHBvbHlmaWxsZWQpLCB3aGljaFxuICAvLyBkZXRlcm1pbmVzIGlmIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIEpTRE9NLWxpa2UuXG4gIHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBSZXNpemVPYnNlcnZlci50b1N0cmluZygpLmluY2x1ZGVzKCdbbmF0aXZlIGNvZGVdJykgPyAnZnVsbCcgOiAnbm9uZSdcbn0pO1xuZnVuY3Rpb24gZ2V0VGFiYmFibGVJbihjb250YWluZXIsIGRpcmVjdGlvbikge1xuICBjb25zdCBhbGxUYWJiYWJsZSA9IHRhYmJhYmxlKGNvbnRhaW5lciwgZ2V0VGFiYmFibGVPcHRpb25zKCkpO1xuICBpZiAoZGlyZWN0aW9uID09PSAncHJldicpIHtcbiAgICBhbGxUYWJiYWJsZS5yZXZlcnNlKCk7XG4gIH1cbiAgY29uc3QgYWN0aXZlSW5kZXggPSBhbGxUYWJiYWJsZS5pbmRleE9mKGFjdGl2ZUVsZW1lbnQoZ2V0RG9jdW1lbnQoY29udGFpbmVyKSkpO1xuICBjb25zdCBuZXh0VGFiYmFibGVFbGVtZW50cyA9IGFsbFRhYmJhYmxlLnNsaWNlKGFjdGl2ZUluZGV4ICsgMSk7XG4gIHJldHVybiBuZXh0VGFiYmFibGVFbGVtZW50c1swXTtcbn1cbmZ1bmN0aW9uIGdldE5leHRUYWJiYWJsZSgpIHtcbiAgcmV0dXJuIGdldFRhYmJhYmxlSW4oZG9jdW1lbnQuYm9keSwgJ25leHQnKTtcbn1cbmZ1bmN0aW9uIGdldFByZXZpb3VzVGFiYmFibGUoKSB7XG4gIHJldHVybiBnZXRUYWJiYWJsZUluKGRvY3VtZW50LmJvZHksICdwcmV2Jyk7XG59XG5mdW5jdGlvbiBpc091dHNpZGVFdmVudChldmVudCwgY29udGFpbmVyKSB7XG4gIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSBjb250YWluZXIgfHwgZXZlbnQuY3VycmVudFRhcmdldDtcbiAgY29uc3QgcmVsYXRlZFRhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XG4gIHJldHVybiAhcmVsYXRlZFRhcmdldCB8fCAhY29udGFpbnMoY29udGFpbmVyRWxlbWVudCwgcmVsYXRlZFRhcmdldCk7XG59XG5mdW5jdGlvbiBkaXNhYmxlRm9jdXNJbnNpZGUoY29udGFpbmVyKSB7XG4gIGNvbnN0IHRhYmJhYmxlRWxlbWVudHMgPSB0YWJiYWJsZShjb250YWluZXIsIGdldFRhYmJhYmxlT3B0aW9ucygpKTtcbiAgdGFiYmFibGVFbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgIGVsZW1lbnQuZGF0YXNldC50YWJpbmRleCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpIHx8ICcnO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGVuYWJsZUZvY3VzSW5zaWRlKGNvbnRhaW5lcikge1xuICBjb25zdCBlbGVtZW50cyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS10YWJpbmRleF0nKTtcbiAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICBjb25zdCB0YWJpbmRleCA9IGVsZW1lbnQuZGF0YXNldC50YWJpbmRleDtcbiAgICBkZWxldGUgZWxlbWVudC5kYXRhc2V0LnRhYmluZGV4O1xuICAgIGlmICh0YWJpbmRleCkge1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgdGFiaW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gZ2V0Q2xvc2VzdFRhYmJhYmxlRWxlbWVudCh0YWJiYWJsZUVsZW1lbnRzLCBlbGVtZW50LCBmbG9hdGluZykge1xuICBjb25zdCBlbGVtZW50SW5kZXggPSB0YWJiYWJsZUVsZW1lbnRzLmluZGV4T2YoZWxlbWVudCk7XG4gIGZ1bmN0aW9uIHRyYXZlcnNlVGFiYmFibGVFbGVtZW50cyhuZXh0KSB7XG4gICAgY29uc3QgYXR0ciA9IGNyZWF0ZUF0dHJpYnV0ZSgnZm9jdXMtZ3VhcmQnKTtcbiAgICBsZXQgaW5kZXggPSBlbGVtZW50SW5kZXggKyAobmV4dCA/IDEgOiAwKTtcbiAgICBsZXQgY3VycmVudEVsZW1lbnQgPSB0YWJiYWJsZUVsZW1lbnRzW2luZGV4XTtcbiAgICB3aGlsZSAoY3VycmVudEVsZW1lbnQgJiYgKCFjdXJyZW50RWxlbWVudC5pc0Nvbm5lY3RlZCB8fCBjdXJyZW50RWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0cikgfHwgY29udGFpbnMoZmxvYXRpbmcsIGN1cnJlbnRFbGVtZW50KSkpIHtcbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmRleC0tO1xuICAgICAgfVxuICAgICAgY3VycmVudEVsZW1lbnQgPSB0YWJiYWJsZUVsZW1lbnRzW2luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRFbGVtZW50O1xuICB9XG5cbiAgLy8gRmlyc3QsIHRyeSB0byBmaW5kIHRoZSBuZXh0IHRhYmJhYmxlIGVsZW1lbnRcbiAgY29uc3QgbmV4dCA9IHRyYXZlcnNlVGFiYmFibGVFbGVtZW50cyh0cnVlKTtcbiAgaWYgKG5leHQpIHtcbiAgICByZXR1cm4gbmV4dDtcbiAgfVxuXG4gIC8vIElmIHdlIGNhbid0IGZpbmQgYSBuZXh0IHRhYmJhYmxlIGVsZW1lbnQsIHRyeSB0byBmaW5kIHRoZSBwcmV2aW91cyBvbmVcbiAgcmV0dXJuIHRyYXZlcnNlVGFiYmFibGVFbGVtZW50cyhmYWxzZSk7XG59XG5cbi8vIFNlZSBEaWVnbyBIYXoncyBTYW5kYm94IGZvciBtYWtpbmcgdGhpcyBsb2dpYyB3b3JrIHdlbGwgb24gU2FmYXJpL2lPUzpcbi8vIGh0dHBzOi8vY29kZXNhbmRib3guaW8vcy90YWJiYWJsZS1wb3J0YWwtZjR0bmc/ZmlsZT0vc3JjL0ZvY3VzVHJhcC50c3hcblxuY29uc3QgSElEREVOX1NUWUxFUyA9IHtcbiAgYm9yZGVyOiAwLFxuICBjbGlwOiAncmVjdCgwIDAgMCAwKScsXG4gIGhlaWdodDogJzFweCcsXG4gIG1hcmdpbjogJy0xcHgnLFxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIHBhZGRpbmc6IDAsXG4gIHBvc2l0aW9uOiAnZml4ZWQnLFxuICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgd2lkdGg6ICcxcHgnLFxuICB0b3A6IDAsXG4gIGxlZnQ6IDBcbn07XG5sZXQgdGltZW91dElkO1xuZnVuY3Rpb24gc2V0QWN0aXZlRWxlbWVudE9uVGFiKGV2ZW50KSB7XG4gIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgZXZlbnQudGFyZ2V0O1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICB9XG59XG5jb25zdCBGb2N1c0d1YXJkID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gRm9jdXNHdWFyZChwcm9wcywgcmVmKSB7XG4gIGNvbnN0IFtyb2xlLCBzZXRSb2xlXSA9IFJlYWN0LnVzZVN0YXRlKCk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoaXNTYWZhcmkoKSkge1xuICAgICAgLy8gVW5saWtlIG90aGVyIHNjcmVlbiByZWFkZXJzIHN1Y2ggYXMgTlZEQSBhbmQgSkFXUywgdGhlIHZpcnR1YWwgY3Vyc29yXG4gICAgICAvLyBvbiBWb2ljZU92ZXIgZG9lcyB0cmlnZ2VyIHRoZSBvbkZvY3VzIGV2ZW50LCBzbyB3ZSBjYW4gdXNlIHRoZSBmb2N1c1xuICAgICAgLy8gdHJhcCBlbGVtZW50LiBPbiBTYWZhcmksIG9ubHkgYnV0dG9ucyB0cmlnZ2VyIHRoZSBvbkZvY3VzIGV2ZW50LlxuICAgICAgLy8gTkI6IFwiZ3JvdXBcIiByb2xlIGluIHRoZSBTYW5kYm94IG5vIGxvbmdlciBhcHBlYXJzIHRvIHdvcmssIG11c3QgYmUgYVxuICAgICAgLy8gYnV0dG9uIHJvbGUuXG4gICAgICBzZXRSb2xlKCdidXR0b24nKTtcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHNldEFjdGl2ZUVsZW1lbnRPblRhYik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBzZXRBY3RpdmVFbGVtZW50T25UYWIpO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgY29uc3QgcmVzdFByb3BzID0ge1xuICAgIHJlZixcbiAgICB0YWJJbmRleDogMCxcbiAgICAvLyBSb2xlIGlzIG9ubHkgZm9yIFZvaWNlT3ZlclxuICAgIHJvbGUsXG4gICAgJ2FyaWEtaGlkZGVuJzogcm9sZSA/IHVuZGVmaW5lZCA6IHRydWUsXG4gICAgW2NyZWF0ZUF0dHJpYnV0ZSgnZm9jdXMtZ3VhcmQnKV06ICcnLFxuICAgIHN0eWxlOiBISURERU5fU1RZTEVTXG4gIH07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgX2V4dGVuZHMoe30sIHByb3BzLCByZXN0UHJvcHMpKTtcbn0pO1xuXG5jb25zdCBQb3J0YWxDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5jb25zdCBhdHRyID0gLyojX19QVVJFX18qL2NyZWF0ZUF0dHJpYnV0ZSgncG9ydGFsJyk7XG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ1BvcnRhbCN1c2VmbG9hdGluZ3BvcnRhbG5vZGVcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmdQb3J0YWxOb2RlKHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgaWQsXG4gICAgcm9vdFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKTtcbiAgY29uc3QgcG9ydGFsQ29udGV4dCA9IHVzZVBvcnRhbENvbnRleHQoKTtcbiAgY29uc3QgW3BvcnRhbE5vZGUsIHNldFBvcnRhbE5vZGVdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHBvcnRhbE5vZGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGluZGV4KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcG9ydGFsTm9kZSA9PSBudWxsIHx8IHBvcnRhbE5vZGUucmVtb3ZlKCk7XG4gICAgICAvLyBBbGxvdyB0aGUgc3Vic2VxdWVudCBsYXlvdXQgZWZmZWN0cyB0byBjcmVhdGUgYSBuZXcgbm9kZSBvbiB1cGRhdGVzLlxuICAgICAgLy8gVGhlIHBvcnRhbCBub2RlIHdpbGwgc3RpbGwgYmUgY2xlYW5lZCB1cCBvbiB1bm1vdW50LlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8yNDU0XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIHBvcnRhbE5vZGVSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9O1xuICB9LCBbcG9ydGFsTm9kZV0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgLy8gV2FpdCBmb3IgdGhlIHVuaXF1ZUlkIHRvIGJlIGdlbmVyYXRlZCBiZWZvcmUgY3JlYXRpbmcgdGhlIHBvcnRhbCBub2RlIGluXG4gICAgLy8gUmVhY3QgPDE4ICh1c2luZyBgdXNlRmxvYXRpbmdJZGAgaW5zdGVhZCBvZiB0aGUgbmF0aXZlIGB1c2VJZGApLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjc3OFxuICAgIGlmICghdW5pcXVlSWQpIHJldHVybjtcbiAgICBpZiAocG9ydGFsTm9kZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgY29uc3QgZXhpc3RpbmdJZFJvb3QgPSBpZCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSA6IG51bGw7XG4gICAgaWYgKCFleGlzdGluZ0lkUm9vdCkgcmV0dXJuO1xuICAgIGNvbnN0IHN1YlJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBzdWJSb290LmlkID0gdW5pcXVlSWQ7XG4gICAgc3ViUm9vdC5zZXRBdHRyaWJ1dGUoYXR0ciwgJycpO1xuICAgIGV4aXN0aW5nSWRSb290LmFwcGVuZENoaWxkKHN1YlJvb3QpO1xuICAgIHBvcnRhbE5vZGVSZWYuY3VycmVudCA9IHN1YlJvb3Q7XG4gICAgc2V0UG9ydGFsTm9kZShzdWJSb290KTtcbiAgfSwgW2lkLCB1bmlxdWVJZF0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCF1bmlxdWVJZCkgcmV0dXJuO1xuICAgIGlmIChwb3J0YWxOb2RlUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICBsZXQgY29udGFpbmVyID0gcm9vdCB8fCAocG9ydGFsQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogcG9ydGFsQ29udGV4dC5wb3J0YWxOb2RlKTtcbiAgICBpZiAoY29udGFpbmVyICYmICFpc0VsZW1lbnQoY29udGFpbmVyKSkgY29udGFpbmVyID0gY29udGFpbmVyLmN1cnJlbnQ7XG4gICAgY29udGFpbmVyID0gY29udGFpbmVyIHx8IGRvY3VtZW50LmJvZHk7XG4gICAgbGV0IGlkV3JhcHBlciA9IG51bGw7XG4gICAgaWYgKGlkKSB7XG4gICAgICBpZFdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGlkV3JhcHBlci5pZCA9IGlkO1xuICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGlkV3JhcHBlcik7XG4gICAgfVxuICAgIGNvbnN0IHN1YlJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBzdWJSb290LmlkID0gdW5pcXVlSWQ7XG4gICAgc3ViUm9vdC5zZXRBdHRyaWJ1dGUoYXR0ciwgJycpO1xuICAgIGNvbnRhaW5lciA9IGlkV3JhcHBlciB8fCBjb250YWluZXI7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHN1YlJvb3QpO1xuICAgIHBvcnRhbE5vZGVSZWYuY3VycmVudCA9IHN1YlJvb3Q7XG4gICAgc2V0UG9ydGFsTm9kZShzdWJSb290KTtcbiAgfSwgW2lkLCByb290LCB1bmlxdWVJZCwgcG9ydGFsQ29udGV4dF0pO1xuICByZXR1cm4gcG9ydGFsTm9kZTtcbn1cbi8qKlxuICogUG9ydGFscyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbnRvIGEgZ2l2ZW4gY29udGFpbmVyIGVsZW1lbnQg4oCUIGJ5IGRlZmF1bHQsXG4gKiBvdXRzaWRlIG9mIHRoZSBhcHAgcm9vdCBhbmQgaW50byB0aGUgYm9keS5cbiAqIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBjYW4gYXBwZWFyIG91dHNpZGUgYW55XG4gKiBwb3RlbnRpYWwgcGFyZW50IGNvbnRhaW5lcnMgdGhhdCBjYXVzZSBjbGlwcGluZyAoc3VjaCBhcyBgb3ZlcmZsb3c6IGhpZGRlbmApLFxuICogd2hpbGUgcmV0YWluaW5nIGl0cyBsb2NhdGlvbiBpbiB0aGUgUmVhY3QgdHJlZS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ1BvcnRhbFxuICovXG5mdW5jdGlvbiBGbG9hdGluZ1BvcnRhbChwcm9wcykge1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgaWQsXG4gICAgcm9vdCA9IG51bGwsXG4gICAgcHJlc2VydmVUYWJPcmRlciA9IHRydWVcbiAgfSA9IHByb3BzO1xuICBjb25zdCBwb3J0YWxOb2RlID0gdXNlRmxvYXRpbmdQb3J0YWxOb2RlKHtcbiAgICBpZCxcbiAgICByb290XG4gIH0pO1xuICBjb25zdCBbZm9jdXNNYW5hZ2VyU3RhdGUsIHNldEZvY3VzTWFuYWdlclN0YXRlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBiZWZvcmVPdXRzaWRlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBhZnRlck91dHNpZGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGJlZm9yZUluc2lkZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgYWZ0ZXJJbnNpZGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IHNob3VsZFJlbmRlckd1YXJkcyA9XG4gIC8vIFRoZSBGb2N1c01hbmFnZXIgYW5kIHRoZXJlZm9yZSBmbG9hdGluZyBlbGVtZW50IGFyZSBjdXJyZW50bHkgb3Blbi9cbiAgLy8gcmVuZGVyZWQuXG4gICEhZm9jdXNNYW5hZ2VyU3RhdGUgJiZcbiAgLy8gR3VhcmRzIGFyZSBvbmx5IGZvciBub24tbW9kYWwgZm9jdXMgbWFuYWdlbWVudC5cbiAgIWZvY3VzTWFuYWdlclN0YXRlLm1vZGFsICYmXG4gIC8vIERvbid0IHJlbmRlciBpZiB1bm1vdW50IGlzIHRyYW5zaXRpb25pbmcuXG4gIGZvY3VzTWFuYWdlclN0YXRlLm9wZW4gJiYgcHJlc2VydmVUYWJPcmRlciAmJiAhIShyb290IHx8IHBvcnRhbE5vZGUpO1xuXG4gIC8vIGh0dHBzOi8vY29kZXNhbmRib3guaW8vcy90YWJiYWJsZS1wb3J0YWwtZjR0bmc/ZmlsZT0vc3JjL1RhYmJhYmxlUG9ydGFsLnRzeFxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcG9ydGFsTm9kZSB8fCAhcHJlc2VydmVUYWJPcmRlciB8fCBmb2N1c01hbmFnZXJTdGF0ZSAhPSBudWxsICYmIGZvY3VzTWFuYWdlclN0YXRlLm1vZGFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTWFrZSBzdXJlIGVsZW1lbnRzIGluc2lkZSB0aGUgcG9ydGFsIGVsZW1lbnQgYXJlIHRhYmJhYmxlIG9ubHkgd2hlbiB0aGVcbiAgICAvLyBwb3J0YWwgaGFzIGFscmVhZHkgYmVlbiBmb2N1c2VkLCBlaXRoZXIgYnkgdGFiYmluZyBpbnRvIGEgZm9jdXMgdHJhcFxuICAgIC8vIGVsZW1lbnQgb3V0c2lkZSBvciB1c2luZyB0aGUgbW91c2UuXG4gICAgZnVuY3Rpb24gb25Gb2N1cyhldmVudCkge1xuICAgICAgaWYgKHBvcnRhbE5vZGUgJiYgaXNPdXRzaWRlRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgIGNvbnN0IGZvY3VzaW5nID0gZXZlbnQudHlwZSA9PT0gJ2ZvY3VzaW4nO1xuICAgICAgICBjb25zdCBtYW5hZ2VGb2N1cyA9IGZvY3VzaW5nID8gZW5hYmxlRm9jdXNJbnNpZGUgOiBkaXNhYmxlRm9jdXNJbnNpZGU7XG4gICAgICAgIG1hbmFnZUZvY3VzKHBvcnRhbE5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBMaXN0ZW4gdG8gdGhlIGV2ZW50IG9uIHRoZSBjYXB0dXJlIHBoYXNlIHNvIHRoZXkgcnVuIGJlZm9yZSB0aGUgZm9jdXNcbiAgICAvLyB0cmFwIGVsZW1lbnRzIG9uRm9jdXMgcHJvcCBpcyBjYWxsZWQuXG4gICAgcG9ydGFsTm9kZS5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgb25Gb2N1cywgdHJ1ZSk7XG4gICAgcG9ydGFsTm9kZS5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIG9uRm9jdXMsIHRydWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwb3J0YWxOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBvbkZvY3VzLCB0cnVlKTtcbiAgICAgIHBvcnRhbE5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBvbkZvY3VzLCB0cnVlKTtcbiAgICB9O1xuICB9LCBbcG9ydGFsTm9kZSwgcHJlc2VydmVUYWJPcmRlciwgZm9jdXNNYW5hZ2VyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IGZvY3VzTWFuYWdlclN0YXRlLm1vZGFsXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChQb3J0YWxDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAgIHByZXNlcnZlVGFiT3JkZXIsXG4gICAgICBiZWZvcmVPdXRzaWRlUmVmLFxuICAgICAgYWZ0ZXJPdXRzaWRlUmVmLFxuICAgICAgYmVmb3JlSW5zaWRlUmVmLFxuICAgICAgYWZ0ZXJJbnNpZGVSZWYsXG4gICAgICBwb3J0YWxOb2RlLFxuICAgICAgc2V0Rm9jdXNNYW5hZ2VyU3RhdGVcbiAgICB9KSwgW3ByZXNlcnZlVGFiT3JkZXIsIHBvcnRhbE5vZGVdKVxuICB9LCBzaG91bGRSZW5kZXJHdWFyZHMgJiYgcG9ydGFsTm9kZSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGb2N1c0d1YXJkLCB7XG4gICAgXCJkYXRhLXR5cGVcIjogXCJvdXRzaWRlXCIsXG4gICAgcmVmOiBiZWZvcmVPdXRzaWRlUmVmLFxuICAgIG9uRm9jdXM6IGV2ZW50ID0+IHtcbiAgICAgIGlmIChpc091dHNpZGVFdmVudChldmVudCwgcG9ydGFsTm9kZSkpIHtcbiAgICAgICAgdmFyIF9iZWZvcmVJbnNpZGVSZWYkY3VycjtcbiAgICAgICAgKF9iZWZvcmVJbnNpZGVSZWYkY3VyciA9IGJlZm9yZUluc2lkZVJlZi5jdXJyZW50KSA9PSBudWxsIHx8IF9iZWZvcmVJbnNpZGVSZWYkY3Vyci5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJldlRhYmJhYmxlID0gZ2V0UHJldmlvdXNUYWJiYWJsZSgpIHx8IChmb2N1c01hbmFnZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogZm9jdXNNYW5hZ2VyU3RhdGUucmVmcy5kb21SZWZlcmVuY2UuY3VycmVudCk7XG4gICAgICAgIHByZXZUYWJiYWJsZSA9PSBudWxsIHx8IHByZXZUYWJiYWJsZS5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfSksIHNob3VsZFJlbmRlckd1YXJkcyAmJiBwb3J0YWxOb2RlICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgXCJhcmlhLW93bnNcIjogcG9ydGFsTm9kZS5pZCxcbiAgICBzdHlsZTogSElEREVOX1NUWUxFU1xuICB9KSwgcG9ydGFsTm9kZSAmJiAvKiNfX1BVUkVfXyovUmVhY3RET00uY3JlYXRlUG9ydGFsKGNoaWxkcmVuLCBwb3J0YWxOb2RlKSwgc2hvdWxkUmVuZGVyR3VhcmRzICYmIHBvcnRhbE5vZGUgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNHdWFyZCwge1xuICAgIFwiZGF0YS10eXBlXCI6IFwib3V0c2lkZVwiLFxuICAgIHJlZjogYWZ0ZXJPdXRzaWRlUmVmLFxuICAgIG9uRm9jdXM6IGV2ZW50ID0+IHtcbiAgICAgIGlmIChpc091dHNpZGVFdmVudChldmVudCwgcG9ydGFsTm9kZSkpIHtcbiAgICAgICAgdmFyIF9hZnRlckluc2lkZVJlZiRjdXJyZTtcbiAgICAgICAgKF9hZnRlckluc2lkZVJlZiRjdXJyZSA9IGFmdGVySW5zaWRlUmVmLmN1cnJlbnQpID09IG51bGwgfHwgX2FmdGVySW5zaWRlUmVmJGN1cnJlLmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuZXh0VGFiYmFibGUgPSBnZXROZXh0VGFiYmFibGUoKSB8fCAoZm9jdXNNYW5hZ2VyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IGZvY3VzTWFuYWdlclN0YXRlLnJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQpO1xuICAgICAgICBuZXh0VGFiYmFibGUgPT0gbnVsbCB8fCBuZXh0VGFiYmFibGUuZm9jdXMoKTtcbiAgICAgICAgKGZvY3VzTWFuYWdlclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBmb2N1c01hbmFnZXJTdGF0ZS5jbG9zZU9uRm9jdXNPdXQpICYmIChmb2N1c01hbmFnZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogZm9jdXNNYW5hZ2VyU3RhdGUub25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudC5uYXRpdmVFdmVudCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSkpO1xufVxuY29uc3QgdXNlUG9ydGFsQ29udGV4dCA9ICgpID0+IFJlYWN0LnVzZUNvbnRleHQoUG9ydGFsQ29udGV4dCk7XG5cbmNvbnN0IExJU1RfTElNSVQgPSAyMDtcbmxldCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnRzID0gW107XG5mdW5jdGlvbiBhZGRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQoZWxlbWVudCkge1xuICBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnRzID0gcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cy5maWx0ZXIoZWwgPT4gZWwuaXNDb25uZWN0ZWQpO1xuICBsZXQgdGFiYmFibGVFbCA9IGVsZW1lbnQ7XG4gIGlmICghdGFiYmFibGVFbCB8fCBnZXROb2RlTmFtZSh0YWJiYWJsZUVsKSA9PT0gJ2JvZHknKSByZXR1cm47XG4gIGlmICghaXNUYWJiYWJsZSh0YWJiYWJsZUVsLCBnZXRUYWJiYWJsZU9wdGlvbnMoKSkpIHtcbiAgICBjb25zdCB0YWJiYWJsZUNoaWxkID0gdGFiYmFibGUodGFiYmFibGVFbCwgZ2V0VGFiYmFibGVPcHRpb25zKCkpWzBdO1xuICAgIGlmICh0YWJiYWJsZUNoaWxkKSB7XG4gICAgICB0YWJiYWJsZUVsID0gdGFiYmFibGVDaGlsZDtcbiAgICB9XG4gIH1cbiAgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cy5wdXNoKHRhYmJhYmxlRWwpO1xuICBpZiAocHJldmlvdXNseUZvY3VzZWRFbGVtZW50cy5sZW5ndGggPiBMSVNUX0xJTUlUKSB7XG4gICAgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cyA9IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMuc2xpY2UoLUxJU1RfTElNSVQpO1xuICB9XG59XG5mdW5jdGlvbiBnZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQoKSB7XG4gIHJldHVybiBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnRzLnNsaWNlKCkucmV2ZXJzZSgpLmZpbmQoZWwgPT4gZWwuaXNDb25uZWN0ZWQpO1xufVxuY29uc3QgVmlzdWFsbHlIaWRkZW5EaXNtaXNzID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gVmlzdWFsbHlIaWRkZW5EaXNtaXNzKHByb3BzLCByZWYpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgcmVmOiByZWYsXG4gICAgdGFiSW5kZXg6IC0xLFxuICAgIHN0eWxlOiBISURERU5fU1RZTEVTXG4gIH0pKTtcbn0pO1xuLyoqXG4gKiBQcm92aWRlcyBmb2N1cyBtYW5hZ2VtZW50IGZvciB0aGUgZmxvYXRpbmcgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ0ZvY3VzTWFuYWdlclxuICovXG5mdW5jdGlvbiBGbG9hdGluZ0ZvY3VzTWFuYWdlcihwcm9wcykge1xuICBjb25zdCB7XG4gICAgY29udGV4dCxcbiAgICBjaGlsZHJlbixcbiAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgIG9yZGVyID0gWydjb250ZW50J10sXG4gICAgZ3VhcmRzOiBfZ3VhcmRzID0gdHJ1ZSxcbiAgICBpbml0aWFsRm9jdXMgPSAwLFxuICAgIHJldHVybkZvY3VzID0gdHJ1ZSxcbiAgICByZXN0b3JlRm9jdXMgPSBmYWxzZSxcbiAgICBtb2RhbCA9IHRydWUsXG4gICAgdmlzdWFsbHlIaWRkZW5EaXNtaXNzID0gZmFsc2UsXG4gICAgY2xvc2VPbkZvY3VzT3V0ID0gdHJ1ZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIHJlZnMsXG4gICAgbm9kZUlkLFxuICAgIG9uT3BlbkNoYW5nZSxcbiAgICBldmVudHMsXG4gICAgZGF0YVJlZixcbiAgICBmbG9hdGluZ0lkLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICBkb21SZWZlcmVuY2UsXG4gICAgICBmbG9hdGluZ1xuICAgIH1cbiAgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGlnbm9yZUluaXRpYWxGb2N1cyA9IHR5cGVvZiBpbml0aWFsRm9jdXMgPT09ICdudW1iZXInICYmIGluaXRpYWxGb2N1cyA8IDA7XG4gIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgYSBjb21ib2JveCBhbmQgaXMgdHlwZWFibGUgKGUuZy4gaW5wdXQvdGV4dGFyZWEpLFxuICAvLyB0aGVyZSBhcmUgZGlmZmVyZW50IGZvY3VzIHNlbWFudGljcy4gVGhlIGd1YXJkcyBzaG91bGQgbm90IGJlIHJlbmRlcmVkLCBidXRcbiAgLy8gYXJpYS1oaWRkZW4gc2hvdWxkIGJlIGFwcGxpZWQgdG8gYWxsIG5vZGVzIHN0aWxsLiBGdXJ0aGVyLCB0aGUgdmlzdWFsbHlcbiAgLy8gaGlkZGVuIGRpc21pc3MgYnV0dG9uIHNob3VsZCBvbmx5IGFwcGVhciBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LCBub3QgdGhlXG4gIC8vIHN0YXJ0LlxuICBjb25zdCBpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3ggPSBpc1R5cGVhYmxlQ29tYm9ib3goZG9tUmVmZXJlbmNlKSAmJiBpZ25vcmVJbml0aWFsRm9jdXM7XG5cbiAgLy8gRm9yY2UgdGhlIGd1YXJkcyB0byBiZSByZW5kZXJlZCBpZiB0aGUgYGluZXJ0YCBhdHRyaWJ1dGUgaXMgbm90IHN1cHBvcnRlZC5cbiAgY29uc3QgZ3VhcmRzID0gc3VwcG9ydHNJbmVydCgpID8gX2d1YXJkcyA6IHRydWU7XG4gIGNvbnN0IG9yZGVyUmVmID0gdXNlTGF0ZXN0UmVmKG9yZGVyKTtcbiAgY29uc3QgaW5pdGlhbEZvY3VzUmVmID0gdXNlTGF0ZXN0UmVmKGluaXRpYWxGb2N1cyk7XG4gIGNvbnN0IHJldHVybkZvY3VzUmVmID0gdXNlTGF0ZXN0UmVmKHJldHVybkZvY3VzKTtcbiAgY29uc3QgdHJlZSA9IHVzZUZsb2F0aW5nVHJlZSgpO1xuICBjb25zdCBwb3J0YWxDb250ZXh0ID0gdXNlUG9ydGFsQ29udGV4dCgpO1xuICBjb25zdCBzdGFydERpc21pc3NCdXR0b25SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGVuZERpc21pc3NCdXR0b25SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IHByZXZlbnRSZXR1cm5Gb2N1c1JlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzUG9pbnRlckRvd25SZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCB0YWJiYWJsZUluZGV4UmVmID0gUmVhY3QudXNlUmVmKC0xKTtcbiAgY29uc3QgaXNJbnNpZGVQb3J0YWwgPSBwb3J0YWxDb250ZXh0ICE9IG51bGw7XG4gIGNvbnN0IGZpcnN0RWxlbWVudENoaWxkID0gZmxvYXRpbmcgPT0gbnVsbCA/IHZvaWQgMCA6IGZsb2F0aW5nLmZpcnN0RWxlbWVudENoaWxkO1xuICAvLyBJZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyBhY3RpbmcgYXMgYSBwb3NpdGlvbmluZyB3cmFwcGVyIHJhdGhlciB0aGFuIHRoZVxuICAvLyBlbGVtZW50IHRoYXQgcmVjZWl2ZXMgYXJpYSBwcm9wcywgdXNlIGl0IGFzIHRoZSBmb2N1cyByb290IGluc3RlYWQuXG4gIGNvbnN0IGZsb2F0aW5nRm9jdXNOb2RlID0gKGZpcnN0RWxlbWVudENoaWxkID09IG51bGwgPyB2b2lkIDAgOiBmaXJzdEVsZW1lbnRDaGlsZC5pZCkgPT09IGZsb2F0aW5nSWQgPyBmaXJzdEVsZW1lbnRDaGlsZCA6IGZsb2F0aW5nO1xuICBjb25zdCBnZXRUYWJiYWJsZUNvbnRlbnQgPSB1c2VFZmZlY3RFdmVudChmdW5jdGlvbiAoY29udGFpbmVyKSB7XG4gICAgaWYgKGNvbnRhaW5lciA9PT0gdm9pZCAwKSB7XG4gICAgICBjb250YWluZXIgPSBmbG9hdGluZ0ZvY3VzTm9kZTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRhaW5lciA/IHRhYmJhYmxlKGNvbnRhaW5lciwgZ2V0VGFiYmFibGVPcHRpb25zKCkpIDogW107XG4gIH0pO1xuICBjb25zdCBnZXRUYWJiYWJsZUVsZW1lbnRzID0gdXNlRWZmZWN0RXZlbnQoY29udGFpbmVyID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gZ2V0VGFiYmFibGVDb250ZW50KGNvbnRhaW5lcik7XG4gICAgcmV0dXJuIG9yZGVyUmVmLmN1cnJlbnQubWFwKHR5cGUgPT4ge1xuICAgICAgaWYgKGRvbVJlZmVyZW5jZSAmJiB0eXBlID09PSAncmVmZXJlbmNlJykge1xuICAgICAgICByZXR1cm4gZG9tUmVmZXJlbmNlO1xuICAgICAgfVxuICAgICAgaWYgKGZsb2F0aW5nRm9jdXNOb2RlICYmIHR5cGUgPT09ICdmbG9hdGluZycpIHtcbiAgICAgICAgcmV0dXJuIGZsb2F0aW5nRm9jdXNOb2RlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuZmlsdGVyKEJvb2xlYW4pLmZsYXQoKTtcbiAgfSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm47XG4gICAgaWYgKCFtb2RhbCkgcmV0dXJuO1xuICAgIGZ1bmN0aW9uIG9uS2V5RG93bihldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgLy8gVGhlIGZvY3VzIGd1YXJkcyBoYXZlIG5vdGhpbmcgdG8gZm9jdXMsIHNvIHdlIG5lZWQgdG8gc3RvcCB0aGUgZXZlbnQuXG4gICAgICAgIGlmIChjb250YWlucyhmbG9hdGluZ0ZvY3VzTm9kZSwgYWN0aXZlRWxlbWVudChnZXREb2N1bWVudChmbG9hdGluZ0ZvY3VzTm9kZSkpKSAmJiBnZXRUYWJiYWJsZUNvbnRlbnQoKS5sZW5ndGggPT09IDAgJiYgIWlzVW50cmFwcGVkVHlwZWFibGVDb21ib2JveCkge1xuICAgICAgICAgIHN0b3BFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWxzID0gZ2V0VGFiYmFibGVFbGVtZW50cygpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpO1xuICAgICAgICBpZiAob3JkZXJSZWYuY3VycmVudFswXSA9PT0gJ3JlZmVyZW5jZScgJiYgdGFyZ2V0ID09PSBkb21SZWZlcmVuY2UpIHtcbiAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgZW5xdWV1ZUZvY3VzKGVsc1tlbHMubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbnF1ZXVlRm9jdXMoZWxzWzFdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9yZGVyUmVmLmN1cnJlbnRbMV0gPT09ICdmbG9hdGluZycgJiYgdGFyZ2V0ID09PSBmbG9hdGluZ0ZvY3VzTm9kZSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIHN0b3BFdmVudChldmVudCk7XG4gICAgICAgICAgZW5xdWV1ZUZvY3VzKGVsc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoZmxvYXRpbmdGb2N1c05vZGUpO1xuICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgIH07XG4gIH0sIFtkaXNhYmxlZCwgZG9tUmVmZXJlbmNlLCBmbG9hdGluZ0ZvY3VzTm9kZSwgbW9kYWwsIG9yZGVyUmVmLCBpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3gsIGdldFRhYmJhYmxlQ29udGVudCwgZ2V0VGFiYmFibGVFbGVtZW50c10pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICghZmxvYXRpbmcpIHJldHVybjtcbiAgICBmdW5jdGlvbiBoYW5kbGVGb2N1c0luKGV2ZW50KSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpO1xuICAgICAgY29uc3QgdGFiYmFibGVDb250ZW50ID0gZ2V0VGFiYmFibGVDb250ZW50KCk7XG4gICAgICBjb25zdCB0YWJiYWJsZUluZGV4ID0gdGFiYmFibGVDb250ZW50LmluZGV4T2YodGFyZ2V0KTtcbiAgICAgIGlmICh0YWJiYWJsZUluZGV4ICE9PSAtMSkge1xuICAgICAgICB0YWJiYWJsZUluZGV4UmVmLmN1cnJlbnQgPSB0YWJiYWJsZUluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICBmbG9hdGluZy5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGZsb2F0aW5nLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBoYW5kbGVGb2N1c0luKTtcbiAgICB9O1xuICB9LCBbZGlzYWJsZWQsIGZsb2F0aW5nLCBnZXRUYWJiYWJsZUNvbnRlbnRdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIWNsb3NlT25Gb2N1c091dCkgcmV0dXJuO1xuXG4gICAgLy8gSW4gU2FmYXJpLCBidXR0b25zIGxvc2UgZm9jdXMgd2hlbiBwcmVzc2luZyB0aGVtLlxuICAgIGZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJEb3duKCkge1xuICAgICAgaXNQb2ludGVyRG93blJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVGb2N1c091dHNpZGUoZXZlbnQpIHtcbiAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBjb25zdCBtb3ZlZFRvVW5yZWxhdGVkTm9kZSA9ICEoY29udGFpbnMoZG9tUmVmZXJlbmNlLCByZWxhdGVkVGFyZ2V0KSB8fCBjb250YWlucyhmbG9hdGluZywgcmVsYXRlZFRhcmdldCkgfHwgY29udGFpbnMocmVsYXRlZFRhcmdldCwgZmxvYXRpbmcpIHx8IGNvbnRhaW5zKHBvcnRhbENvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IHBvcnRhbENvbnRleHQucG9ydGFsTm9kZSwgcmVsYXRlZFRhcmdldCkgfHwgcmVsYXRlZFRhcmdldCAhPSBudWxsICYmIHJlbGF0ZWRUYXJnZXQuaGFzQXR0cmlidXRlKGNyZWF0ZUF0dHJpYnV0ZSgnZm9jdXMtZ3VhcmQnKSkgfHwgdHJlZSAmJiAoZ2V0Q2hpbGRyZW4odHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpLmZpbmQobm9kZSA9PiB7XG4gICAgICAgICAgdmFyIF9ub2RlJGNvbnRleHQsIF9ub2RlJGNvbnRleHQyO1xuICAgICAgICAgIHJldHVybiBjb250YWlucygoX25vZGUkY29udGV4dCA9IG5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJGNvbnRleHQuZWxlbWVudHMuZmxvYXRpbmcsIHJlbGF0ZWRUYXJnZXQpIHx8IGNvbnRhaW5zKChfbm9kZSRjb250ZXh0MiA9IG5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJGNvbnRleHQyLmVsZW1lbnRzLmRvbVJlZmVyZW5jZSwgcmVsYXRlZFRhcmdldCk7XG4gICAgICAgIH0pIHx8IGdldEFuY2VzdG9ycyh0cmVlLm5vZGVzUmVmLmN1cnJlbnQsIG5vZGVJZCkuZmluZChub2RlID0+IHtcbiAgICAgICAgICB2YXIgX25vZGUkY29udGV4dDMsIF9ub2RlJGNvbnRleHQ0O1xuICAgICAgICAgIHJldHVybiAoKF9ub2RlJGNvbnRleHQzID0gbm9kZS5jb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkY29udGV4dDMuZWxlbWVudHMuZmxvYXRpbmcpID09PSByZWxhdGVkVGFyZ2V0IHx8ICgoX25vZGUkY29udGV4dDQgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0NC5lbGVtZW50cy5kb21SZWZlcmVuY2UpID09PSByZWxhdGVkVGFyZ2V0O1xuICAgICAgICB9KSkpO1xuXG4gICAgICAgIC8vIFJlc3RvcmUgZm9jdXMgdG8gdGhlIHByZXZpb3VzIHRhYmJhYmxlIGVsZW1lbnQgaW5kZXggdG8gcHJldmVudFxuICAgICAgICAvLyBmb2N1cyBmcm9tIGJlaW5nIGxvc3Qgb3V0c2lkZSB0aGUgZmxvYXRpbmcgdHJlZS5cbiAgICAgICAgaWYgKHJlc3RvcmVGb2N1cyAmJiBtb3ZlZFRvVW5yZWxhdGVkTm9kZSAmJiBhY3RpdmVFbGVtZW50KGdldERvY3VtZW50KGZsb2F0aW5nRm9jdXNOb2RlKSkgPT09IGdldERvY3VtZW50KGZsb2F0aW5nRm9jdXNOb2RlKS5ib2R5KSB7XG4gICAgICAgICAgLy8gTGV0IGBGbG9hdGluZ1BvcnRhbGAgZWZmZWN0IGtub3dzIHRoYXQgZm9jdXMgaXMgc3RpbGwgaW5zaWRlIHRoZVxuICAgICAgICAgIC8vIGZsb2F0aW5nIHRyZWUuXG4gICAgICAgICAgaWYgKGlzSFRNTEVsZW1lbnQoZmxvYXRpbmdGb2N1c05vZGUpKSB7XG4gICAgICAgICAgICBmbG9hdGluZ0ZvY3VzTm9kZSA9PSBudWxsIHx8IGZsb2F0aW5nRm9jdXNOb2RlLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHByZXZUYWJiYWJsZUluZGV4ID0gdGFiYmFibGVJbmRleFJlZi5jdXJyZW50O1xuICAgICAgICAgIGNvbnN0IHRhYmJhYmxlQ29udGVudCA9IGdldFRhYmJhYmxlQ29udGVudCgpO1xuICAgICAgICAgIGNvbnN0IG5vZGVUb0ZvY3VzID0gdGFiYmFibGVDb250ZW50W3ByZXZUYWJiYWJsZUluZGV4XSB8fCB0YWJiYWJsZUNvbnRlbnRbdGFiYmFibGVDb250ZW50Lmxlbmd0aCAtIDFdIHx8IGZsb2F0aW5nRm9jdXNOb2RlO1xuICAgICAgICAgIGlmIChpc0hUTUxFbGVtZW50KG5vZGVUb0ZvY3VzKSkge1xuICAgICAgICAgICAgbm9kZVRvRm9jdXMuZm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb2N1cyBkaWQgbm90IG1vdmUgaW5zaWRlIHRoZSBmbG9hdGluZyB0cmVlLCBhbmQgdGhlcmUgYXJlIG5vIHRhYmJhYmxlXG4gICAgICAgIC8vIHBvcnRhbCBndWFyZHMgdG8gaGFuZGxlIGNsb3NpbmcuXG4gICAgICAgIGlmICgoaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94ID8gdHJ1ZSA6ICFtb2RhbCkgJiYgcmVsYXRlZFRhcmdldCAmJiBtb3ZlZFRvVW5yZWxhdGVkTm9kZSAmJiAhaXNQb2ludGVyRG93blJlZi5jdXJyZW50ICYmXG4gICAgICAgIC8vIEZpeCBSZWFjdCAxOCBTdHJpY3QgTW9kZSByZXR1cm5Gb2N1cyBkdWUgdG8gZG91YmxlIHJlbmRlcmluZy5cbiAgICAgICAgcmVsYXRlZFRhcmdldCAhPT0gZ2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCkpIHtcbiAgICAgICAgICBwcmV2ZW50UmV0dXJuRm9jdXNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZmxvYXRpbmcgJiYgaXNIVE1MRWxlbWVudChkb21SZWZlcmVuY2UpKSB7XG4gICAgICBkb21SZWZlcmVuY2UuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBoYW5kbGVGb2N1c091dHNpZGUpO1xuICAgICAgZG9tUmVmZXJlbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlckRvd24pO1xuICAgICAgZmxvYXRpbmcuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBoYW5kbGVGb2N1c091dHNpZGUpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9tUmVmZXJlbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXRzaWRlKTtcbiAgICAgICAgZG9tUmVmZXJlbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlckRvd24pO1xuICAgICAgICBmbG9hdGluZy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIGhhbmRsZUZvY3VzT3V0c2lkZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2Rpc2FibGVkLCBkb21SZWZlcmVuY2UsIGZsb2F0aW5nLCBmbG9hdGluZ0ZvY3VzTm9kZSwgbW9kYWwsIG5vZGVJZCwgdHJlZSwgcG9ydGFsQ29udGV4dCwgb25PcGVuQ2hhbmdlLCBjbG9zZU9uRm9jdXNPdXQsIHJlc3RvcmVGb2N1cywgZ2V0VGFiYmFibGVDb250ZW50LCBpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3hdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICB2YXIgX3BvcnRhbENvbnRleHQkcG9ydGFsO1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgLy8gRG9uJ3QgaGlkZSBwb3J0YWxzIG5lc3RlZCB3aXRoaW4gdGhlIHBhcmVudCBwb3J0YWwuXG4gICAgY29uc3QgcG9ydGFsTm9kZXMgPSBBcnJheS5mcm9tKChwb3J0YWxDb250ZXh0ID09IG51bGwgfHwgKF9wb3J0YWxDb250ZXh0JHBvcnRhbCA9IHBvcnRhbENvbnRleHQucG9ydGFsTm9kZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wb3J0YWxDb250ZXh0JHBvcnRhbC5xdWVyeVNlbGVjdG9yQWxsKFwiW1wiICsgY3JlYXRlQXR0cmlidXRlKCdwb3J0YWwnKSArIFwiXVwiKSkgfHwgW10pO1xuICAgIGlmIChmbG9hdGluZykge1xuICAgICAgY29uc3QgaW5zaWRlRWxlbWVudHMgPSBbZmxvYXRpbmcsIC4uLnBvcnRhbE5vZGVzLCBzdGFydERpc21pc3NCdXR0b25SZWYuY3VycmVudCwgZW5kRGlzbWlzc0J1dHRvblJlZi5jdXJyZW50LCBvcmRlclJlZi5jdXJyZW50LmluY2x1ZGVzKCdyZWZlcmVuY2UnKSB8fCBpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3ggPyBkb21SZWZlcmVuY2UgOiBudWxsXS5maWx0ZXIoeCA9PiB4ICE9IG51bGwpO1xuICAgICAgY29uc3QgY2xlYW51cCA9IG1vZGFsIHx8IGlzVW50cmFwcGVkVHlwZWFibGVDb21ib2JveCA/IG1hcmtPdGhlcnMoaW5zaWRlRWxlbWVudHMsIGd1YXJkcywgIWd1YXJkcykgOiBtYXJrT3RoZXJzKGluc2lkZUVsZW1lbnRzKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNsZWFudXAoKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbZGlzYWJsZWQsIGRvbVJlZmVyZW5jZSwgZmxvYXRpbmcsIG1vZGFsLCBvcmRlclJlZiwgcG9ydGFsQ29udGV4dCwgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94LCBndWFyZHNdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCB8fCAhaXNIVE1MRWxlbWVudChmbG9hdGluZ0ZvY3VzTm9kZSkpIHJldHVybjtcbiAgICBjb25zdCBkb2MgPSBnZXREb2N1bWVudChmbG9hdGluZ0ZvY3VzTm9kZSk7XG4gICAgY29uc3QgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gYWN0aXZlRWxlbWVudChkb2MpO1xuXG4gICAgLy8gV2FpdCBmb3IgYW55IGxheW91dCBlZmZlY3Qgc3RhdGUgc2V0dGVycyB0byBleGVjdXRlIHRvIHNldCBgdGFiSW5kZXhgLlxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IGZvY3VzYWJsZUVsZW1lbnRzID0gZ2V0VGFiYmFibGVFbGVtZW50cyhmbG9hdGluZ0ZvY3VzTm9kZSk7XG4gICAgICBjb25zdCBpbml0aWFsRm9jdXNWYWx1ZSA9IGluaXRpYWxGb2N1c1JlZi5jdXJyZW50O1xuICAgICAgY29uc3QgZWxUb0ZvY3VzID0gKHR5cGVvZiBpbml0aWFsRm9jdXNWYWx1ZSA9PT0gJ251bWJlcicgPyBmb2N1c2FibGVFbGVtZW50c1tpbml0aWFsRm9jdXNWYWx1ZV0gOiBpbml0aWFsRm9jdXNWYWx1ZS5jdXJyZW50KSB8fCBmbG9hdGluZ0ZvY3VzTm9kZTtcbiAgICAgIGNvbnN0IGZvY3VzQWxyZWFkeUluc2lkZUZsb2F0aW5nRWwgPSBjb250YWlucyhmbG9hdGluZ0ZvY3VzTm9kZSwgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50KTtcbiAgICAgIGlmICghaWdub3JlSW5pdGlhbEZvY3VzICYmICFmb2N1c0FscmVhZHlJbnNpZGVGbG9hdGluZ0VsICYmIG9wZW4pIHtcbiAgICAgICAgZW5xdWV1ZUZvY3VzKGVsVG9Gb2N1cywge1xuICAgICAgICAgIHByZXZlbnRTY3JvbGw6IGVsVG9Gb2N1cyA9PT0gZmxvYXRpbmdGb2N1c05vZGVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtkaXNhYmxlZCwgb3BlbiwgZmxvYXRpbmdGb2N1c05vZGUsIGlnbm9yZUluaXRpYWxGb2N1cywgZ2V0VGFiYmFibGVFbGVtZW50cywgaW5pdGlhbEZvY3VzUmVmXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQgfHwgIWZsb2F0aW5nRm9jdXNOb2RlKSByZXR1cm47XG4gICAgbGV0IHByZXZlbnRSZXR1cm5Gb2N1c1Njcm9sbCA9IGZhbHNlO1xuICAgIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KGZsb2F0aW5nRm9jdXNOb2RlKTtcbiAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBhY3RpdmVFbGVtZW50KGRvYyk7XG4gICAgY29uc3QgY29udGV4dERhdGEgPSBkYXRhUmVmLmN1cnJlbnQ7XG4gICAgbGV0IG9wZW5FdmVudCA9IGNvbnRleHREYXRhLm9wZW5FdmVudDtcbiAgICBjb25zdCBkb21SZWZlcmVuY2UgPSByZWZzLmRvbVJlZmVyZW5jZS5jdXJyZW50O1xuICAgIGFkZFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudChwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpO1xuXG4gICAgLy8gRGlzbWlzc2luZyB2aWEgb3V0c2lkZSBwcmVzcyBzaG91bGQgYWx3YXlzIGlnbm9yZSBgcmV0dXJuRm9jdXNgIHRvXG4gICAgLy8gcHJldmVudCB1bndhbnRlZCBzY3JvbGxpbmcuXG4gICAgZnVuY3Rpb24gb25PcGVuQ2hhbmdlKF9yZWYpIHtcbiAgICAgIGxldCB7XG4gICAgICAgIG9wZW4sXG4gICAgICAgIHJlYXNvbixcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIG5lc3RlZFxuICAgICAgfSA9IF9yZWY7XG4gICAgICBpZiAob3Blbikge1xuICAgICAgICBvcGVuRXZlbnQgPSBldmVudDtcbiAgICAgIH1cbiAgICAgIGlmIChyZWFzb24gPT09ICdlc2NhcGUta2V5JyAmJiByZWZzLmRvbVJlZmVyZW5jZS5jdXJyZW50KSB7XG4gICAgICAgIGFkZFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudChyZWZzLmRvbVJlZmVyZW5jZS5jdXJyZW50KTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWFzb24gPT09ICdob3ZlcicgJiYgZXZlbnQudHlwZSA9PT0gJ21vdXNlbGVhdmUnKSB7XG4gICAgICAgIHByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWFzb24gIT09ICdvdXRzaWRlLXByZXNzJykgcmV0dXJuO1xuICAgICAgaWYgKG5lc3RlZCkge1xuICAgICAgICBwcmV2ZW50UmV0dXJuRm9jdXNSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICBwcmV2ZW50UmV0dXJuRm9jdXNTY3JvbGwgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJldmVudFJldHVybkZvY3VzUmVmLmN1cnJlbnQgPSAhKGlzVmlydHVhbENsaWNrKGV2ZW50KSB8fCBpc1ZpcnR1YWxQb2ludGVyRXZlbnQoZXZlbnQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZXZlbnRzLm9uKCdvcGVuY2hhbmdlJywgb25PcGVuQ2hhbmdlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZXZlbnRzLm9mZignb3BlbmNoYW5nZScsIG9uT3BlbkNoYW5nZSk7XG4gICAgICBjb25zdCBhY3RpdmVFbCA9IGFjdGl2ZUVsZW1lbnQoZG9jKTtcbiAgICAgIGNvbnN0IGlzRm9jdXNJbnNpZGVGbG9hdGluZ1RyZWUgPSBjb250YWlucyhmbG9hdGluZywgYWN0aXZlRWwpIHx8IHRyZWUgJiYgZ2V0Q2hpbGRyZW4odHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpLnNvbWUobm9kZSA9PiB7XG4gICAgICAgIHZhciBfbm9kZSRjb250ZXh0NTtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5zKChfbm9kZSRjb250ZXh0NSA9IG5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJGNvbnRleHQ1LmVsZW1lbnRzLmZsb2F0aW5nLCBhY3RpdmVFbCk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNob3VsZEZvY3VzUmVmZXJlbmNlID0gaXNGb2N1c0luc2lkZUZsb2F0aW5nVHJlZSB8fCBvcGVuRXZlbnQgJiYgWydjbGljaycsICdtb3VzZWRvd24nXS5pbmNsdWRlcyhvcGVuRXZlbnQudHlwZSk7XG4gICAgICBpZiAoc2hvdWxkRm9jdXNSZWZlcmVuY2UgJiYgcmVmcy5kb21SZWZlcmVuY2UuY3VycmVudCkge1xuICAgICAgICBhZGRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQocmVmcy5kb21SZWZlcmVuY2UuY3VycmVudCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXR1cm5Db250ZXh0RWxlbWVudCA9IGRvbVJlZmVyZW5jZSB8fCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ7XG4gICAgICBjb25zdCB0YWJiYWJsZUVsZW1lbnRzID0gdGFiYmFibGUoZ2V0RG9jdW1lbnQocmV0dXJuQ29udGV4dEVsZW1lbnQpLmJvZHksIGdldFRhYmJhYmxlT3B0aW9ucygpKTtcblxuICAgICAgLy8gV2FpdCBmb3IgdGhlIHJldHVybiBlbGVtZW50IHRvIGdldCBwb3RlbnRpYWxseSBkaXNjb25uZWN0ZWQgYmVmb3JlXG4gICAgICAvLyBjaGVja2luZy5cbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgbGV0IHJldHVybkVsZW1lbnQgPSBnZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQoKTtcbiAgICAgICAgaWYgKCFyZXR1cm5FbGVtZW50ICYmIGlzSFRNTEVsZW1lbnQocmV0dXJuQ29udGV4dEVsZW1lbnQpICYmIGZsb2F0aW5nKSB7XG4gICAgICAgICAgcmV0dXJuRWxlbWVudCA9IGdldENsb3Nlc3RUYWJiYWJsZUVsZW1lbnQodGFiYmFibGVFbGVtZW50cywgcmV0dXJuQ29udGV4dEVsZW1lbnQsIGZsb2F0aW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICAgICAgcmV0dXJuRm9jdXNSZWYuY3VycmVudCAmJiAhcHJldmVudFJldHVybkZvY3VzUmVmLmN1cnJlbnQgJiYgaXNIVE1MRWxlbWVudChyZXR1cm5FbGVtZW50KSAmJiAoXG4gICAgICAgIC8vIElmIHRoZSBmb2N1cyBtb3ZlZCBzb21ld2hlcmUgZWxzZSBhZnRlciBtb3VudCwgYXZvaWQgcmV0dXJuaW5nIGZvY3VzXG4gICAgICAgIC8vIHNpbmNlIGl0IGxpa2VseSBlbnRlcmVkIGEgZGlmZmVyZW50IGVsZW1lbnQgd2hpY2ggc2hvdWxkIGJlXG4gICAgICAgIC8vIHJlc3BlY3RlZDogaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8yNjA3XG4gICAgICAgIHJldHVybkVsZW1lbnQgIT09IGFjdGl2ZUVsICYmIGFjdGl2ZUVsICE9PSBkb2MuYm9keSA/IGlzRm9jdXNJbnNpZGVGbG9hdGluZ1RyZWUgOiB0cnVlKSkge1xuICAgICAgICAgIHJldHVybkVsZW1lbnQuZm9jdXMoe1xuICAgICAgICAgICAgcHJldmVudFNjcm9sbDogcHJldmVudFJldHVybkZvY3VzU2Nyb2xsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gIH0sIFtkaXNhYmxlZCwgZmxvYXRpbmcsIGZsb2F0aW5nRm9jdXNOb2RlLCByZXR1cm5Gb2N1c1JlZiwgZGF0YVJlZiwgcmVmcywgZXZlbnRzLCB0cmVlLCBub2RlSWRdKTtcblxuICAvLyBTeW5jaHJvbml6ZSB0aGUgYGNvbnRleHRgICYgYG1vZGFsYCB2YWx1ZSB0byB0aGUgRmxvYXRpbmdQb3J0YWwgY29udGV4dC5cbiAgLy8gSXQgd2lsbCBkZWNpZGUgd2hldGhlciBvciBub3QgaXQgbmVlZHMgdG8gcmVuZGVyIGl0cyBvd24gZ3VhcmRzLlxuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm47XG4gICAgaWYgKCFwb3J0YWxDb250ZXh0KSByZXR1cm47XG4gICAgcG9ydGFsQ29udGV4dC5zZXRGb2N1c01hbmFnZXJTdGF0ZSh7XG4gICAgICBtb2RhbCxcbiAgICAgIGNsb3NlT25Gb2N1c091dCxcbiAgICAgIG9wZW4sXG4gICAgICBvbk9wZW5DaGFuZ2UsXG4gICAgICByZWZzXG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHBvcnRhbENvbnRleHQuc2V0Rm9jdXNNYW5hZ2VyU3RhdGUobnVsbCk7XG4gICAgfTtcbiAgfSwgW2Rpc2FibGVkLCBwb3J0YWxDb250ZXh0LCBtb2RhbCwgb3Blbiwgb25PcGVuQ2hhbmdlLCByZWZzLCBjbG9zZU9uRm9jdXNPdXRdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICghZmxvYXRpbmdGb2N1c05vZGUpIHJldHVybjtcbiAgICBpZiAodHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgIT09ICdmdW5jdGlvbicpIHJldHVybjtcbiAgICBpZiAoaWdub3JlSW5pdGlhbEZvY3VzKSByZXR1cm47XG4gICAgY29uc3QgaGFuZGxlTXV0YXRpb24gPSAoKSA9PiB7XG4gICAgICBjb25zdCB0YWJJbmRleCA9IGZsb2F0aW5nRm9jdXNOb2RlLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICAgIGNvbnN0IHRhYmJhYmxlQ29udGVudCA9IGdldFRhYmJhYmxlQ29udGVudCgpO1xuICAgICAgY29uc3QgYWN0aXZlRWwgPSBhY3RpdmVFbGVtZW50KGdldERvY3VtZW50KGZsb2F0aW5nKSk7XG4gICAgICBjb25zdCB0YWJiYWJsZUluZGV4ID0gdGFiYmFibGVDb250ZW50LmluZGV4T2YoYWN0aXZlRWwpO1xuICAgICAgaWYgKHRhYmJhYmxlSW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRhYmJhYmxlSW5kZXhSZWYuY3VycmVudCA9IHRhYmJhYmxlSW5kZXg7XG4gICAgICB9XG4gICAgICBpZiAob3JkZXJSZWYuY3VycmVudC5pbmNsdWRlcygnZmxvYXRpbmcnKSB8fCBhY3RpdmVFbCAhPT0gcmVmcy5kb21SZWZlcmVuY2UuY3VycmVudCAmJiB0YWJiYWJsZUNvbnRlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmICh0YWJJbmRleCAhPT0gJzAnKSB7XG4gICAgICAgICAgZmxvYXRpbmdGb2N1c05vZGUuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGFiSW5kZXggIT09ICctMScpIHtcbiAgICAgICAgZmxvYXRpbmdGb2N1c05vZGUuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgfVxuICAgIH07XG4gICAgaGFuZGxlTXV0YXRpb24oKTtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGhhbmRsZU11dGF0aW9uKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nRm9jdXNOb2RlLCB7XG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlczogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfTtcbiAgfSwgW2Rpc2FibGVkLCBmbG9hdGluZywgZmxvYXRpbmdGb2N1c05vZGUsIHJlZnMsIG9yZGVyUmVmLCBnZXRUYWJiYWJsZUNvbnRlbnQsIGlnbm9yZUluaXRpYWxGb2N1c10pO1xuICBmdW5jdGlvbiByZW5kZXJEaXNtaXNzQnV0dG9uKGxvY2F0aW9uKSB7XG4gICAgaWYgKGRpc2FibGVkIHx8ICF2aXN1YWxseUhpZGRlbkRpc21pc3MgfHwgIW1vZGFsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFZpc3VhbGx5SGlkZGVuRGlzbWlzcywge1xuICAgICAgcmVmOiBsb2NhdGlvbiA9PT0gJ3N0YXJ0JyA/IHN0YXJ0RGlzbWlzc0J1dHRvblJlZiA6IGVuZERpc21pc3NCdXR0b25SZWYsXG4gICAgICBvbkNsaWNrOiBldmVudCA9PiBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIH0sIHR5cGVvZiB2aXN1YWxseUhpZGRlbkRpc21pc3MgPT09ICdzdHJpbmcnID8gdmlzdWFsbHlIaWRkZW5EaXNtaXNzIDogJ0Rpc21pc3MnKTtcbiAgfVxuICBjb25zdCBzaG91bGRSZW5kZXJHdWFyZHMgPSAhZGlzYWJsZWQgJiYgZ3VhcmRzICYmIChtb2RhbCA/ICFpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3ggOiB0cnVlKSAmJiAoaXNJbnNpZGVQb3J0YWwgfHwgbW9kYWwpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIHNob3VsZFJlbmRlckd1YXJkcyAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGb2N1c0d1YXJkLCB7XG4gICAgXCJkYXRhLXR5cGVcIjogXCJpbnNpZGVcIixcbiAgICByZWY6IHBvcnRhbENvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IHBvcnRhbENvbnRleHQuYmVmb3JlSW5zaWRlUmVmLFxuICAgIG9uRm9jdXM6IGV2ZW50ID0+IHtcbiAgICAgIGlmIChtb2RhbCkge1xuICAgICAgICBjb25zdCBlbHMgPSBnZXRUYWJiYWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIGVucXVldWVGb2N1cyhvcmRlclswXSA9PT0gJ3JlZmVyZW5jZScgPyBlbHNbMF0gOiBlbHNbZWxzLmxlbmd0aCAtIDFdKTtcbiAgICAgIH0gZWxzZSBpZiAocG9ydGFsQ29udGV4dCAhPSBudWxsICYmIHBvcnRhbENvbnRleHQucHJlc2VydmVUYWJPcmRlciAmJiBwb3J0YWxDb250ZXh0LnBvcnRhbE5vZGUpIHtcbiAgICAgICAgcHJldmVudFJldHVybkZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGlzT3V0c2lkZUV2ZW50KGV2ZW50LCBwb3J0YWxDb250ZXh0LnBvcnRhbE5vZGUpKSB7XG4gICAgICAgICAgY29uc3QgbmV4dFRhYmJhYmxlID0gZ2V0TmV4dFRhYmJhYmxlKCkgfHwgZG9tUmVmZXJlbmNlO1xuICAgICAgICAgIG5leHRUYWJiYWJsZSA9PSBudWxsIHx8IG5leHRUYWJiYWJsZS5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBfcG9ydGFsQ29udGV4dCRiZWZvcmU7XG4gICAgICAgICAgKF9wb3J0YWxDb250ZXh0JGJlZm9yZSA9IHBvcnRhbENvbnRleHQuYmVmb3JlT3V0c2lkZVJlZi5jdXJyZW50KSA9PSBudWxsIHx8IF9wb3J0YWxDb250ZXh0JGJlZm9yZS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KSwgIWlzVW50cmFwcGVkVHlwZWFibGVDb21ib2JveCAmJiByZW5kZXJEaXNtaXNzQnV0dG9uKCdzdGFydCcpLCBjaGlsZHJlbiwgcmVuZGVyRGlzbWlzc0J1dHRvbignZW5kJyksIHNob3VsZFJlbmRlckd1YXJkcyAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGb2N1c0d1YXJkLCB7XG4gICAgXCJkYXRhLXR5cGVcIjogXCJpbnNpZGVcIixcbiAgICByZWY6IHBvcnRhbENvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IHBvcnRhbENvbnRleHQuYWZ0ZXJJbnNpZGVSZWYsXG4gICAgb25Gb2N1czogZXZlbnQgPT4ge1xuICAgICAgaWYgKG1vZGFsKSB7XG4gICAgICAgIGVucXVldWVGb2N1cyhnZXRUYWJiYWJsZUVsZW1lbnRzKClbMF0pO1xuICAgICAgfSBlbHNlIGlmIChwb3J0YWxDb250ZXh0ICE9IG51bGwgJiYgcG9ydGFsQ29udGV4dC5wcmVzZXJ2ZVRhYk9yZGVyICYmIHBvcnRhbENvbnRleHQucG9ydGFsTm9kZSkge1xuICAgICAgICBpZiAoY2xvc2VPbkZvY3VzT3V0KSB7XG4gICAgICAgICAgcHJldmVudFJldHVybkZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc091dHNpZGVFdmVudChldmVudCwgcG9ydGFsQ29udGV4dC5wb3J0YWxOb2RlKSkge1xuICAgICAgICAgIGNvbnN0IHByZXZUYWJiYWJsZSA9IGdldFByZXZpb3VzVGFiYmFibGUoKSB8fCBkb21SZWZlcmVuY2U7XG4gICAgICAgICAgcHJldlRhYmJhYmxlID09IG51bGwgfHwgcHJldlRhYmJhYmxlLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIF9wb3J0YWxDb250ZXh0JGFmdGVyTztcbiAgICAgICAgICAoX3BvcnRhbENvbnRleHQkYWZ0ZXJPID0gcG9ydGFsQ29udGV4dC5hZnRlck91dHNpZGVSZWYuY3VycmVudCkgPT0gbnVsbCB8fCBfcG9ydGFsQ29udGV4dCRhZnRlck8uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSkpO1xufVxuXG5jb25zdCBhY3RpdmVMb2NrcyA9IC8qI19fUFVSRV9fKi9uZXcgU2V0KCk7XG4vKipcbiAqIFByb3ZpZGVzIGJhc2Ugc3R5bGluZyBmb3IgYSBmaXhlZCBvdmVybGF5IGVsZW1lbnQgdG8gZGltIGNvbnRlbnQgb3IgYmxvY2tcbiAqIHBvaW50ZXIgZXZlbnRzIGJlaGluZCBhIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBJdCdzIGEgcmVndWxhciBgPGRpdj5gLCBzbyBpdCBjYW4gYmUgc3R5bGVkIHZpYSBhbnkgQ1NTIHNvbHV0aW9uIHlvdSBwcmVmZXIuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdPdmVybGF5XG4gKi9cbmNvbnN0IEZsb2F0aW5nT3ZlcmxheSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZsb2F0aW5nT3ZlcmxheShwcm9wcywgcmVmKSB7XG4gIGNvbnN0IHtcbiAgICBsb2NrU2Nyb2xsID0gZmFsc2UsXG4gICAgLi4ucmVzdFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGxvY2tJZCA9IHVzZUlkKCk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoIWxvY2tTY3JvbGwpIHJldHVybjtcbiAgICBhY3RpdmVMb2Nrcy5hZGQobG9ja0lkKTtcbiAgICBjb25zdCBpc0lPUyA9IC9pUChob25lfGFkfG9kKXxpT1MvLnRlc3QoZ2V0UGxhdGZvcm0oKSk7XG4gICAgY29uc3QgYm9keVN0eWxlID0gZG9jdW1lbnQuYm9keS5zdHlsZTtcbiAgICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhclxuICAgIGNvbnN0IHNjcm9sbGJhclggPSBNYXRoLnJvdW5kKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KSArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIGNvbnN0IHBhZGRpbmdQcm9wID0gc2Nyb2xsYmFyWCA/ICdwYWRkaW5nTGVmdCcgOiAncGFkZGluZ1JpZ2h0JztcbiAgICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIGNvbnN0IHNjcm9sbFggPSBib2R5U3R5bGUubGVmdCA/IHBhcnNlRmxvYXQoYm9keVN0eWxlLmxlZnQpIDogd2luZG93LnNjcm9sbFg7XG4gICAgY29uc3Qgc2Nyb2xsWSA9IGJvZHlTdHlsZS50b3AgPyBwYXJzZUZsb2F0KGJvZHlTdHlsZS50b3ApIDogd2luZG93LnNjcm9sbFk7XG4gICAgYm9keVN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgaWYgKHNjcm9sbGJhcldpZHRoKSB7XG4gICAgICBib2R5U3R5bGVbcGFkZGluZ1Byb3BdID0gc2Nyb2xsYmFyV2lkdGggKyBcInB4XCI7XG4gICAgfVxuXG4gICAgLy8gT25seSBpT1MgZG9lc24ndCByZXNwZWN0IGBvdmVyZmxvdzogaGlkZGVuYCBvbiBkb2N1bWVudC5ib2R5LCBhbmQgdGhpc1xuICAgIC8vIHRlY2huaXF1ZSBoYXMgZmV3ZXIgc2lkZSBlZmZlY3RzLlxuICAgIGlmIChpc0lPUykge1xuICAgICAgdmFyIF93aW5kb3ckdmlzdWFsVmlld3BvciwgX3dpbmRvdyR2aXN1YWxWaWV3cG9yMjtcbiAgICAgIC8vIGlPUyAxMiBkb2VzIG5vdCBzdXBwb3J0IGB2aXN1YWxWaWV3cG9ydGAuXG4gICAgICBjb25zdCBvZmZzZXRMZWZ0ID0gKChfd2luZG93JHZpc3VhbFZpZXdwb3IgPSB3aW5kb3cudmlzdWFsVmlld3BvcnQpID09IG51bGwgPyB2b2lkIDAgOiBfd2luZG93JHZpc3VhbFZpZXdwb3Iub2Zmc2V0TGVmdCkgfHwgMDtcbiAgICAgIGNvbnN0IG9mZnNldFRvcCA9ICgoX3dpbmRvdyR2aXN1YWxWaWV3cG9yMiA9IHdpbmRvdy52aXN1YWxWaWV3cG9ydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF93aW5kb3ckdmlzdWFsVmlld3BvcjIub2Zmc2V0VG9wKSB8fCAwO1xuICAgICAgT2JqZWN0LmFzc2lnbihib2R5U3R5bGUsIHtcbiAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgIHRvcDogLShzY3JvbGxZIC0gTWF0aC5mbG9vcihvZmZzZXRUb3ApKSArIFwicHhcIixcbiAgICAgICAgbGVmdDogLShzY3JvbGxYIC0gTWF0aC5mbG9vcihvZmZzZXRMZWZ0KSkgKyBcInB4XCIsXG4gICAgICAgIHJpZ2h0OiAnMCdcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgYWN0aXZlTG9ja3MuZGVsZXRlKGxvY2tJZCk7XG4gICAgICBpZiAoYWN0aXZlTG9ja3Muc2l6ZSA9PT0gMCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGJvZHlTdHlsZSwge1xuICAgICAgICAgIG92ZXJmbG93OiAnJyxcbiAgICAgICAgICBbcGFkZGluZ1Byb3BdOiAnJ1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzSU9TKSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihib2R5U3R5bGUsIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnJyxcbiAgICAgICAgICAgIHRvcDogJycsXG4gICAgICAgICAgICBsZWZ0OiAnJyxcbiAgICAgICAgICAgIHJpZ2h0OiAnJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhzY3JvbGxYLCBzY3JvbGxZKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0sIFtsb2NrSWQsIGxvY2tTY3JvbGxdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICByZWY6IHJlZlxuICB9LCByZXN0LCB7XG4gICAgc3R5bGU6IHtcbiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgIHRvcDogMCxcbiAgICAgIHJpZ2h0OiAwLFxuICAgICAgYm90dG9tOiAwLFxuICAgICAgbGVmdDogMCxcbiAgICAgIC4uLnJlc3Quc3R5bGVcbiAgICB9XG4gIH0pKTtcbn0pO1xuXG5mdW5jdGlvbiBpc0J1dHRvblRhcmdldChldmVudCkge1xuICByZXR1cm4gaXNIVE1MRWxlbWVudChldmVudC50YXJnZXQpICYmIGV2ZW50LnRhcmdldC50YWdOYW1lID09PSAnQlVUVE9OJztcbn1cbmZ1bmN0aW9uIGlzU3BhY2VJZ25vcmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGlzVHlwZWFibGVFbGVtZW50KGVsZW1lbnQpO1xufVxuLyoqXG4gKiBPcGVucyBvciBjbG9zZXMgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hlbiBjbGlja2luZyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlQ2xpY2tcbiAqL1xuZnVuY3Rpb24gdXNlQ2xpY2soY29udGV4dCwgcHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIG9uT3BlbkNoYW5nZSxcbiAgICBkYXRhUmVmLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICBkb21SZWZlcmVuY2VcbiAgICB9XG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgZXZlbnQ6IGV2ZW50T3B0aW9uID0gJ2NsaWNrJyxcbiAgICB0b2dnbGUgPSB0cnVlLFxuICAgIGlnbm9yZU1vdXNlID0gZmFsc2UsXG4gICAga2V5Ym9hcmRIYW5kbGVycyA9IHRydWVcbiAgfSA9IHByb3BzO1xuICBjb25zdCBwb2ludGVyVHlwZVJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICBjb25zdCBkaWRLZXlEb3duUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgcmVmZXJlbmNlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIG9uUG9pbnRlckRvd24oZXZlbnQpIHtcbiAgICAgIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQgPSBldmVudC5wb2ludGVyVHlwZTtcbiAgICB9LFxuICAgIG9uTW91c2VEb3duKGV2ZW50KSB7XG4gICAgICBjb25zdCBwb2ludGVyVHlwZSA9IHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQ7XG5cbiAgICAgIC8vIElnbm9yZSBhbGwgYnV0dG9ucyBleGNlcHQgZm9yIHRoZSBcIm1haW5cIiBidXR0b24uXG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTW91c2VFdmVudC9idXR0b25cbiAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApIHJldHVybjtcbiAgICAgIGlmIChldmVudE9wdGlvbiA9PT0gJ2NsaWNrJykgcmV0dXJuO1xuICAgICAgaWYgKGlzTW91c2VMaWtlUG9pbnRlclR5cGUocG9pbnRlclR5cGUsIHRydWUpICYmIGlnbm9yZU1vdXNlKSByZXR1cm47XG4gICAgICBpZiAob3BlbiAmJiB0b2dnbGUgJiYgKGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQgPyBkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nIDogdHJ1ZSkpIHtcbiAgICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBQcmV2ZW50IHN0ZWFsaW5nIGZvY3VzIGZyb20gdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnY2xpY2snKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uQ2xpY2soZXZlbnQpIHtcbiAgICAgIGNvbnN0IHBvaW50ZXJUeXBlID0gcG9pbnRlclR5cGVSZWYuY3VycmVudDtcbiAgICAgIGlmIChldmVudE9wdGlvbiA9PT0gJ21vdXNlZG93bicgJiYgcG9pbnRlclR5cGVSZWYuY3VycmVudCkge1xuICAgICAgICBwb2ludGVyVHlwZVJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaXNNb3VzZUxpa2VQb2ludGVyVHlwZShwb2ludGVyVHlwZSwgdHJ1ZSkgJiYgaWdub3JlTW91c2UpIHJldHVybjtcbiAgICAgIGlmIChvcGVuICYmIHRvZ2dsZSAmJiAoZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCA/IGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQudHlwZSA9PT0gJ2NsaWNrJyA6IHRydWUpKSB7XG4gICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQsICdjbGljaycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnY2xpY2snKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uS2V5RG93bihldmVudCkge1xuICAgICAgcG9pbnRlclR5cGVSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkIHx8ICFrZXlib2FyZEhhbmRsZXJzIHx8IGlzQnV0dG9uVGFyZ2V0KGV2ZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnICcgJiYgIWlzU3BhY2VJZ25vcmVkKGRvbVJlZmVyZW5jZSkpIHtcbiAgICAgICAgLy8gUHJldmVudCBzY3JvbGxpbmdcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZGlkS2V5RG93blJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgaWYgKG9wZW4gJiYgdG9nZ2xlKSB7XG4gICAgICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnY2xpY2snKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgb25LZXlVcChldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgfHwgIWtleWJvYXJkSGFuZGxlcnMgfHwgaXNCdXR0b25UYXJnZXQoZXZlbnQpIHx8IGlzU3BhY2VJZ25vcmVkKGRvbVJlZmVyZW5jZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnICYmIGRpZEtleURvd25SZWYuY3VycmVudCkge1xuICAgICAgICBkaWRLZXlEb3duUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKG9wZW4gJiYgdG9nZ2xlKSB7XG4gICAgICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnY2xpY2snKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSksIFtkYXRhUmVmLCBkb21SZWZlcmVuY2UsIGV2ZW50T3B0aW9uLCBpZ25vcmVNb3VzZSwga2V5Ym9hcmRIYW5kbGVycywgb25PcGVuQ2hhbmdlLCBvcGVuLCB0b2dnbGVdKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gZW5hYmxlZCA/IHtcbiAgICByZWZlcmVuY2VcbiAgfSA6IHt9LCBbZW5hYmxlZCwgcmVmZXJlbmNlXSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVZpcnR1YWxFbGVtZW50KGRvbUVsZW1lbnQsIGRhdGEpIHtcbiAgbGV0IG9mZnNldFggPSBudWxsO1xuICBsZXQgb2Zmc2V0WSA9IG51bGw7XG4gIGxldCBpc0F1dG9VcGRhdGVFdmVudCA9IGZhbHNlO1xuICByZXR1cm4ge1xuICAgIGNvbnRleHRFbGVtZW50OiBkb21FbGVtZW50IHx8IHVuZGVmaW5lZCxcbiAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICB2YXIgX2RhdGEkZGF0YVJlZiRjdXJyZW50O1xuICAgICAgY29uc3QgZG9tUmVjdCA9IChkb21FbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSB8fCB7XG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDBcbiAgICAgIH07XG4gICAgICBjb25zdCBpc1hBeGlzID0gZGF0YS5heGlzID09PSAneCcgfHwgZGF0YS5heGlzID09PSAnYm90aCc7XG4gICAgICBjb25zdCBpc1lBeGlzID0gZGF0YS5heGlzID09PSAneScgfHwgZGF0YS5heGlzID09PSAnYm90aCc7XG4gICAgICBjb25zdCBjYW5UcmFja0N1cnNvck9uQXV0b1VwZGF0ZSA9IFsnbW91c2VlbnRlcicsICdtb3VzZW1vdmUnXS5pbmNsdWRlcygoKF9kYXRhJGRhdGFSZWYkY3VycmVudCA9IGRhdGEuZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kYXRhJGRhdGFSZWYkY3VycmVudC50eXBlKSB8fCAnJykgJiYgZGF0YS5wb2ludGVyVHlwZSAhPT0gJ3RvdWNoJztcbiAgICAgIGxldCB3aWR0aCA9IGRvbVJlY3Qud2lkdGg7XG4gICAgICBsZXQgaGVpZ2h0ID0gZG9tUmVjdC5oZWlnaHQ7XG4gICAgICBsZXQgeCA9IGRvbVJlY3QueDtcbiAgICAgIGxldCB5ID0gZG9tUmVjdC55O1xuICAgICAgaWYgKG9mZnNldFggPT0gbnVsbCAmJiBkYXRhLnggJiYgaXNYQXhpcykge1xuICAgICAgICBvZmZzZXRYID0gZG9tUmVjdC54IC0gZGF0YS54O1xuICAgICAgfVxuICAgICAgaWYgKG9mZnNldFkgPT0gbnVsbCAmJiBkYXRhLnkgJiYgaXNZQXhpcykge1xuICAgICAgICBvZmZzZXRZID0gZG9tUmVjdC55IC0gZGF0YS55O1xuICAgICAgfVxuICAgICAgeCAtPSBvZmZzZXRYIHx8IDA7XG4gICAgICB5IC09IG9mZnNldFkgfHwgMDtcbiAgICAgIHdpZHRoID0gMDtcbiAgICAgIGhlaWdodCA9IDA7XG4gICAgICBpZiAoIWlzQXV0b1VwZGF0ZUV2ZW50IHx8IGNhblRyYWNrQ3Vyc29yT25BdXRvVXBkYXRlKSB7XG4gICAgICAgIHdpZHRoID0gZGF0YS5heGlzID09PSAneScgPyBkb21SZWN0LndpZHRoIDogMDtcbiAgICAgICAgaGVpZ2h0ID0gZGF0YS5heGlzID09PSAneCcgPyBkb21SZWN0LmhlaWdodCA6IDA7XG4gICAgICAgIHggPSBpc1hBeGlzICYmIGRhdGEueCAhPSBudWxsID8gZGF0YS54IDogeDtcbiAgICAgICAgeSA9IGlzWUF4aXMgJiYgZGF0YS55ICE9IG51bGwgPyBkYXRhLnkgOiB5O1xuICAgICAgfSBlbHNlIGlmIChpc0F1dG9VcGRhdGVFdmVudCAmJiAhY2FuVHJhY2tDdXJzb3JPbkF1dG9VcGRhdGUpIHtcbiAgICAgICAgaGVpZ2h0ID0gZGF0YS5heGlzID09PSAneCcgPyBkb21SZWN0LmhlaWdodCA6IGhlaWdodDtcbiAgICAgICAgd2lkdGggPSBkYXRhLmF4aXMgPT09ICd5JyA/IGRvbVJlY3Qud2lkdGggOiB3aWR0aDtcbiAgICAgIH1cbiAgICAgIGlzQXV0b1VwZGF0ZUV2ZW50ID0gdHJ1ZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHRvcDogeSxcbiAgICAgICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICAgICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgICAgICBsZWZ0OiB4XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIGlzTW91c2VCYXNlZEV2ZW50KGV2ZW50KSB7XG4gIHJldHVybiBldmVudCAhPSBudWxsICYmIGV2ZW50LmNsaWVudFggIT0gbnVsbDtcbn1cbi8qKlxuICogUG9zaXRpb25zIHRoZSBmbG9hdGluZyBlbGVtZW50IHJlbGF0aXZlIHRvIGEgY2xpZW50IHBvaW50IChpbiB0aGUgdmlld3BvcnQpLFxuICogc3VjaCBhcyB0aGUgbW91c2UgcG9zaXRpb24uIEJ5IGRlZmF1bHQsIGl0IGZvbGxvd3MgdGhlIG1vdXNlIGN1cnNvci5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VDbGllbnRQb2ludFxuICovXG5mdW5jdGlvbiB1c2VDbGllbnRQb2ludChjb250ZXh0LCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgZGF0YVJlZixcbiAgICBlbGVtZW50czoge1xuICAgICAgZmxvYXRpbmcsXG4gICAgICBkb21SZWZlcmVuY2VcbiAgICB9LFxuICAgIHJlZnNcbiAgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBlbmFibGVkID0gdHJ1ZSxcbiAgICBheGlzID0gJ2JvdGgnLFxuICAgIHggPSBudWxsLFxuICAgIHkgPSBudWxsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgaW5pdGlhbFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGNsZWFudXBMaXN0ZW5lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgW3BvaW50ZXJUeXBlLCBzZXRQb2ludGVyVHlwZV0gPSBSZWFjdC51c2VTdGF0ZSgpO1xuICBjb25zdCBbcmVhY3RpdmUsIHNldFJlYWN0aXZlXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3Qgc2V0UmVmZXJlbmNlID0gdXNlRWZmZWN0RXZlbnQoKHgsIHkpID0+IHtcbiAgICBpZiAoaW5pdGlhbFJlZi5jdXJyZW50KSByZXR1cm47XG5cbiAgICAvLyBQcmV2ZW50IHNldHRpbmcgaWYgdGhlIG9wZW4gZXZlbnQgd2FzIG5vdCBhIG1vdXNlLWxpa2Ugb25lXG4gICAgLy8gKGUuZy4gZm9jdXMgdG8gb3BlbiwgdGhlbiBob3ZlciBvdmVyIHRoZSByZWZlcmVuY2UgZWxlbWVudCkuXG4gICAgLy8gT25seSBhcHBseSBpZiB0aGUgZXZlbnQgZXhpc3RzLlxuICAgIGlmIChkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50ICYmICFpc01vdXNlQmFzZWRFdmVudChkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZWZzLnNldFBvc2l0aW9uUmVmZXJlbmNlKGNyZWF0ZVZpcnR1YWxFbGVtZW50KGRvbVJlZmVyZW5jZSwge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBheGlzLFxuICAgICAgZGF0YVJlZixcbiAgICAgIHBvaW50ZXJUeXBlXG4gICAgfSkpO1xuICB9KTtcbiAgY29uc3QgaGFuZGxlUmVmZXJlbmNlRW50ZXJPck1vdmUgPSB1c2VFZmZlY3RFdmVudChldmVudCA9PiB7XG4gICAgaWYgKHggIT0gbnVsbCB8fCB5ICE9IG51bGwpIHJldHVybjtcbiAgICBpZiAoIW9wZW4pIHtcbiAgICAgIHNldFJlZmVyZW5jZShldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICB9IGVsc2UgaWYgKCFjbGVhbnVwTGlzdGVuZXJSZWYuY3VycmVudCkge1xuICAgICAgLy8gSWYgdGhlcmUncyBubyBjbGVhbnVwLCB0aGVyZSdzIG5vIGxpc3RlbmVyLCBidXQgd2Ugd2FudCB0byBlbnN1cmVcbiAgICAgIC8vIHdlIGFkZCB0aGUgbGlzdGVuZXIgaWYgdGhlIGN1cnNvciBsYW5kZWQgb24gdGhlIGZsb2F0aW5nIGVsZW1lbnQgYW5kXG4gICAgICAvLyB0aGVuIGJhY2sgb24gdGhlIHJlZmVyZW5jZSAoaS5lLiBpdCdzIGludGVyYWN0aXZlKS5cbiAgICAgIHNldFJlYWN0aXZlKFtdKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIElmIHRoZSBwb2ludGVyIGlzIGEgbW91c2UtbGlrZSBwb2ludGVyLCB3ZSB3YW50IHRvIGNvbnRpbnVlIGZvbGxvd2luZyB0aGVcbiAgLy8gbW91c2UgZXZlbiBpZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyB0cmFuc2l0aW9uaW5nIG91dC4gT24gdG91Y2hcbiAgLy8gZGV2aWNlcywgdGhpcyBpcyB1bmRlc2lyYWJsZSBiZWNhdXNlIHRoZSBmbG9hdGluZyBlbGVtZW50IHdpbGwgbW92ZSB0b1xuICAvLyB0aGUgZGlzbWlzc2FsIHRvdWNoIHBvaW50LlxuICBjb25zdCBvcGVuQ2hlY2sgPSBpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlKSA/IGZsb2F0aW5nIDogb3BlbjtcbiAgY29uc3QgYWRkTGlzdGVuZXIgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gRXhwbGljaXRseSBzcGVjaWZpZWQgYHhgL2B5YCBjb29yZGluYXRlcyBzaG91bGRuJ3QgYWRkIGEgbGlzdGVuZXIuXG4gICAgaWYgKCFvcGVuQ2hlY2sgfHwgIWVuYWJsZWQgfHwgeCAhPSBudWxsIHx8IHkgIT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhmbG9hdGluZyk7XG4gICAgZnVuY3Rpb24gaGFuZGxlTW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpO1xuICAgICAgaWYgKCFjb250YWlucyhmbG9hdGluZywgdGFyZ2V0KSkge1xuICAgICAgICBzZXRSZWZlcmVuY2UoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlTW91c2VNb3ZlKTtcbiAgICAgICAgY2xlYW51cExpc3RlbmVyUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQgfHwgaXNNb3VzZUJhc2VkRXZlbnQoZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCkpIHtcbiAgICAgIHdpbi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVNb3VzZU1vdmUpO1xuICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgd2luLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZU1vdXNlTW92ZSk7XG4gICAgICAgIGNsZWFudXBMaXN0ZW5lclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgIH07XG4gICAgICBjbGVhbnVwTGlzdGVuZXJSZWYuY3VycmVudCA9IGNsZWFudXA7XG4gICAgICByZXR1cm4gY2xlYW51cDtcbiAgICB9XG4gICAgcmVmcy5zZXRQb3NpdGlvblJlZmVyZW5jZShkb21SZWZlcmVuY2UpO1xuICB9LCBbb3BlbkNoZWNrLCBlbmFibGVkLCB4LCB5LCBmbG9hdGluZywgZGF0YVJlZiwgcmVmcywgZG9tUmVmZXJlbmNlLCBzZXRSZWZlcmVuY2VdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gYWRkTGlzdGVuZXIoKTtcbiAgfSwgW2FkZExpc3RlbmVyLCByZWFjdGl2ZV0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChlbmFibGVkICYmICFmbG9hdGluZykge1xuICAgICAgaW5pdGlhbFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgZmxvYXRpbmddKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQgJiYgb3Blbikge1xuICAgICAgaW5pdGlhbFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9XG4gIH0sIFtlbmFibGVkLCBvcGVuXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoZW5hYmxlZCAmJiAoeCAhPSBudWxsIHx8IHkgIT0gbnVsbCkpIHtcbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgc2V0UmVmZXJlbmNlKHgsIHkpO1xuICAgIH1cbiAgfSwgW2VuYWJsZWQsIHgsIHksIHNldFJlZmVyZW5jZV0pO1xuICBjb25zdCByZWZlcmVuY2UgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBmdW5jdGlvbiBzZXRQb2ludGVyVHlwZVJlZihfcmVmKSB7XG4gICAgICBsZXQge1xuICAgICAgICBwb2ludGVyVHlwZVxuICAgICAgfSA9IF9yZWY7XG4gICAgICBzZXRQb2ludGVyVHlwZShwb2ludGVyVHlwZSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBvblBvaW50ZXJEb3duOiBzZXRQb2ludGVyVHlwZVJlZixcbiAgICAgIG9uUG9pbnRlckVudGVyOiBzZXRQb2ludGVyVHlwZVJlZixcbiAgICAgIG9uTW91c2VNb3ZlOiBoYW5kbGVSZWZlcmVuY2VFbnRlck9yTW92ZSxcbiAgICAgIG9uTW91c2VFbnRlcjogaGFuZGxlUmVmZXJlbmNlRW50ZXJPck1vdmVcbiAgICB9O1xuICB9LCBbaGFuZGxlUmVmZXJlbmNlRW50ZXJPck1vdmVdKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gZW5hYmxlZCA/IHtcbiAgICByZWZlcmVuY2VcbiAgfSA6IHt9LCBbZW5hYmxlZCwgcmVmZXJlbmNlXSk7XG59XG5cbmNvbnN0IGJ1YmJsZUhhbmRsZXJLZXlzID0ge1xuICBwb2ludGVyZG93bjogJ29uUG9pbnRlckRvd24nLFxuICBtb3VzZWRvd246ICdvbk1vdXNlRG93bicsXG4gIGNsaWNrOiAnb25DbGljaydcbn07XG5jb25zdCBjYXB0dXJlSGFuZGxlcktleXMgPSB7XG4gIHBvaW50ZXJkb3duOiAnb25Qb2ludGVyRG93bkNhcHR1cmUnLFxuICBtb3VzZWRvd246ICdvbk1vdXNlRG93bkNhcHR1cmUnLFxuICBjbGljazogJ29uQ2xpY2tDYXB0dXJlJ1xufTtcbmNvbnN0IG5vcm1hbGl6ZVByb3AgPSBub3JtYWxpemFibGUgPT4ge1xuICB2YXIgX25vcm1hbGl6YWJsZSRlc2NhcGVLLCBfbm9ybWFsaXphYmxlJG91dHNpZGU7XG4gIHJldHVybiB7XG4gICAgZXNjYXBlS2V5OiB0eXBlb2Ygbm9ybWFsaXphYmxlID09PSAnYm9vbGVhbicgPyBub3JtYWxpemFibGUgOiAoX25vcm1hbGl6YWJsZSRlc2NhcGVLID0gbm9ybWFsaXphYmxlID09IG51bGwgPyB2b2lkIDAgOiBub3JtYWxpemFibGUuZXNjYXBlS2V5KSAhPSBudWxsID8gX25vcm1hbGl6YWJsZSRlc2NhcGVLIDogZmFsc2UsXG4gICAgb3V0c2lkZVByZXNzOiB0eXBlb2Ygbm9ybWFsaXphYmxlID09PSAnYm9vbGVhbicgPyBub3JtYWxpemFibGUgOiAoX25vcm1hbGl6YWJsZSRvdXRzaWRlID0gbm9ybWFsaXphYmxlID09IG51bGwgPyB2b2lkIDAgOiBub3JtYWxpemFibGUub3V0c2lkZVByZXNzKSAhPSBudWxsID8gX25vcm1hbGl6YWJsZSRvdXRzaWRlIDogdHJ1ZVxuICB9O1xufTtcbi8qKlxuICogQ2xvc2VzIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoZW4gYSBkaXNtaXNzYWwgaXMgcmVxdWVzdGVkIOKAlCBieSBkZWZhdWx0LCB3aGVuXG4gKiB0aGUgdXNlciBwcmVzc2VzIHRoZSBgZXNjYXBlYCBrZXkgb3Igb3V0c2lkZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VEaXNtaXNzXG4gKi9cbmZ1bmN0aW9uIHVzZURpc21pc3MoY29udGV4dCwgcHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIG9uT3BlbkNoYW5nZSxcbiAgICBlbGVtZW50cyxcbiAgICBkYXRhUmVmXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgZXNjYXBlS2V5ID0gdHJ1ZSxcbiAgICBvdXRzaWRlUHJlc3M6IHVuc3RhYmxlX291dHNpZGVQcmVzcyA9IHRydWUsXG4gICAgb3V0c2lkZVByZXNzRXZlbnQgPSAncG9pbnRlcmRvd24nLFxuICAgIHJlZmVyZW5jZVByZXNzID0gZmFsc2UsXG4gICAgcmVmZXJlbmNlUHJlc3NFdmVudCA9ICdwb2ludGVyZG93bicsXG4gICAgYW5jZXN0b3JTY3JvbGwgPSBmYWxzZSxcbiAgICBidWJibGVzLFxuICAgIGNhcHR1cmVcbiAgfSA9IHByb3BzO1xuICBjb25zdCB0cmVlID0gdXNlRmxvYXRpbmdUcmVlKCk7XG4gIGNvbnN0IG91dHNpZGVQcmVzc0ZuID0gdXNlRWZmZWN0RXZlbnQodHlwZW9mIHVuc3RhYmxlX291dHNpZGVQcmVzcyA9PT0gJ2Z1bmN0aW9uJyA/IHVuc3RhYmxlX291dHNpZGVQcmVzcyA6ICgpID0+IGZhbHNlKTtcbiAgY29uc3Qgb3V0c2lkZVByZXNzID0gdHlwZW9mIHVuc3RhYmxlX291dHNpZGVQcmVzcyA9PT0gJ2Z1bmN0aW9uJyA/IG91dHNpZGVQcmVzc0ZuIDogdW5zdGFibGVfb3V0c2lkZVByZXNzO1xuICBjb25zdCBpbnNpZGVSZWFjdFRyZWVSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBlbmRlZE9yU3RhcnRlZEluc2lkZVJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHtcbiAgICBlc2NhcGVLZXk6IGVzY2FwZUtleUJ1YmJsZXMsXG4gICAgb3V0c2lkZVByZXNzOiBvdXRzaWRlUHJlc3NCdWJibGVzXG4gIH0gPSBub3JtYWxpemVQcm9wKGJ1YmJsZXMpO1xuICBjb25zdCB7XG4gICAgZXNjYXBlS2V5OiBlc2NhcGVLZXlDYXB0dXJlLFxuICAgIG91dHNpZGVQcmVzczogb3V0c2lkZVByZXNzQ2FwdHVyZVxuICB9ID0gbm9ybWFsaXplUHJvcChjYXB0dXJlKTtcbiAgY29uc3QgY2xvc2VPbkVzY2FwZUtleURvd24gPSB1c2VFZmZlY3RFdmVudChldmVudCA9PiB7XG4gICAgdmFyIF9kYXRhUmVmJGN1cnJlbnQkZmxvYTtcbiAgICBpZiAoIW9wZW4gfHwgIWVuYWJsZWQgfHwgIWVzY2FwZUtleSB8fCBldmVudC5rZXkgIT09ICdFc2NhcGUnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5vZGVJZCA9IChfZGF0YVJlZiRjdXJyZW50JGZsb2EgPSBkYXRhUmVmLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX2RhdGFSZWYkY3VycmVudCRmbG9hLm5vZGVJZDtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRyZWUgPyBnZXRDaGlsZHJlbih0cmVlLm5vZGVzUmVmLmN1cnJlbnQsIG5vZGVJZCkgOiBbXTtcbiAgICBpZiAoIWVzY2FwZUtleUJ1YmJsZXMpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IHNob3VsZERpc21pc3MgPSB0cnVlO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgICAgICB2YXIgX2NoaWxkJGNvbnRleHQ7XG4gICAgICAgICAgaWYgKChfY2hpbGQkY29udGV4dCA9IGNoaWxkLmNvbnRleHQpICE9IG51bGwgJiYgX2NoaWxkJGNvbnRleHQub3BlbiAmJiAhY2hpbGQuY29udGV4dC5kYXRhUmVmLmN1cnJlbnQuX19lc2NhcGVLZXlCdWJibGVzKSB7XG4gICAgICAgICAgICBzaG91bGREaXNtaXNzID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFzaG91bGREaXNtaXNzKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgaXNSZWFjdEV2ZW50KGV2ZW50KSA/IGV2ZW50Lm5hdGl2ZUV2ZW50IDogZXZlbnQsICdlc2NhcGUta2V5Jyk7XG4gIH0pO1xuICBjb25zdCBjbG9zZU9uRXNjYXBlS2V5RG93bkNhcHR1cmUgPSB1c2VFZmZlY3RFdmVudChldmVudCA9PiB7XG4gICAgdmFyIF9nZXRUYXJnZXQyO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgdmFyIF9nZXRUYXJnZXQ7XG4gICAgICBjbG9zZU9uRXNjYXBlS2V5RG93bihldmVudCk7XG4gICAgICAoX2dldFRhcmdldCA9IGdldFRhcmdldChldmVudCkpID09IG51bGwgfHwgX2dldFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgY2FsbGJhY2spO1xuICAgIH07XG4gICAgKF9nZXRUYXJnZXQyID0gZ2V0VGFyZ2V0KGV2ZW50KSkgPT0gbnVsbCB8fCBfZ2V0VGFyZ2V0Mi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgY2FsbGJhY2spO1xuICB9KTtcbiAgY29uc3QgY2xvc2VPblByZXNzT3V0c2lkZSA9IHVzZUVmZmVjdEV2ZW50KGV2ZW50ID0+IHtcbiAgICB2YXIgX2RhdGFSZWYkY3VycmVudCRmbG9hMjtcbiAgICAvLyBHaXZlbiBkZXZlbG9wZXJzIGNhbiBzdG9wIHRoZSBwcm9wYWdhdGlvbiBvZiB0aGUgc3ludGhldGljIGV2ZW50LFxuICAgIC8vIHdlIGNhbiBvbmx5IGJlIGNvbmZpZGVudCB3aXRoIGEgcG9zaXRpdmUgdmFsdWUuXG4gICAgY29uc3QgaW5zaWRlUmVhY3RUcmVlID0gaW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQ7XG4gICAgaW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIC8vIFdoZW4gY2xpY2sgb3V0c2lkZSBpcyBsYXp5IChgY2xpY2tgIGV2ZW50KSwgaGFuZGxlIGRyYWdnaW5nLlxuICAgIC8vIERvbid0IGNsb3NlIGlmOlxuICAgIC8vIC0gVGhlIGNsaWNrIHN0YXJ0ZWQgaW5zaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50LlxuICAgIC8vIC0gVGhlIGNsaWNrIGVuZGVkIGluc2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudC5cbiAgICBjb25zdCBlbmRlZE9yU3RhcnRlZEluc2lkZSA9IGVuZGVkT3JTdGFydGVkSW5zaWRlUmVmLmN1cnJlbnQ7XG4gICAgZW5kZWRPclN0YXJ0ZWRJbnNpZGVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIGlmIChvdXRzaWRlUHJlc3NFdmVudCA9PT0gJ2NsaWNrJyAmJiBlbmRlZE9yU3RhcnRlZEluc2lkZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaW5zaWRlUmVhY3RUcmVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3V0c2lkZVByZXNzID09PSAnZnVuY3Rpb24nICYmICFvdXRzaWRlUHJlc3MoZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhcmdldCA9IGdldFRhcmdldChldmVudCk7XG4gICAgY29uc3QgaW5lcnRTZWxlY3RvciA9IFwiW1wiICsgY3JlYXRlQXR0cmlidXRlKCdpbmVydCcpICsgXCJdXCI7XG4gICAgY29uc3QgbWFya2VycyA9IGdldERvY3VtZW50KGVsZW1lbnRzLmZsb2F0aW5nKS5xdWVyeVNlbGVjdG9yQWxsKGluZXJ0U2VsZWN0b3IpO1xuICAgIGxldCB0YXJnZXRSb290QW5jZXN0b3IgPSBpc0VsZW1lbnQodGFyZ2V0KSA/IHRhcmdldCA6IG51bGw7XG4gICAgd2hpbGUgKHRhcmdldFJvb3RBbmNlc3RvciAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKHRhcmdldFJvb3RBbmNlc3RvcikpIHtcbiAgICAgIGNvbnN0IG5leHRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKHRhcmdldFJvb3RBbmNlc3Rvcik7XG4gICAgICBpZiAoaXNMYXN0VHJhdmVyc2FibGVOb2RlKG5leHRQYXJlbnQpIHx8ICFpc0VsZW1lbnQobmV4dFBhcmVudCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0YXJnZXRSb290QW5jZXN0b3IgPSBuZXh0UGFyZW50O1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSBjbGljayBvY2N1cnJlZCBvbiBhIHRoaXJkLXBhcnR5IGVsZW1lbnQgaW5qZWN0ZWQgYWZ0ZXIgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCByZW5kZXJlZC5cbiAgICBpZiAobWFya2Vycy5sZW5ndGggJiYgaXNFbGVtZW50KHRhcmdldCkgJiYgIWlzUm9vdEVsZW1lbnQodGFyZ2V0KSAmJlxuICAgIC8vIENsaWNrZWQgb24gYSBkaXJlY3QgYW5jZXN0b3IgKGUuZy4gRmxvYXRpbmdPdmVybGF5KS5cbiAgICAhY29udGFpbnModGFyZ2V0LCBlbGVtZW50cy5mbG9hdGluZykgJiZcbiAgICAvLyBJZiB0aGUgdGFyZ2V0IHJvb3QgZWxlbWVudCBjb250YWlucyBub25lIG9mIHRoZSBtYXJrZXJzLCB0aGVuIHRoZVxuICAgIC8vIGVsZW1lbnQgd2FzIGluamVjdGVkIGFmdGVyIHRoZSBmbG9hdGluZyBlbGVtZW50IHJlbmRlcmVkLlxuICAgIEFycmF5LmZyb20obWFya2VycykuZXZlcnkobWFya2VyID0+ICFjb250YWlucyh0YXJnZXRSb290QW5jZXN0b3IsIG1hcmtlcikpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGNsaWNrIG9jY3VycmVkIG9uIHRoZSBzY3JvbGxiYXJcbiAgICBpZiAoaXNIVE1MRWxlbWVudCh0YXJnZXQpICYmIGZsb2F0aW5nKSB7XG4gICAgICAvLyBJbiBGaXJlZm94LCBgdGFyZ2V0LnNjcm9sbFdpZHRoID4gdGFyZ2V0LmNsaWVudFdpZHRoYCBmb3IgaW5saW5lXG4gICAgICAvLyBlbGVtZW50cy5cbiAgICAgIGNvbnN0IGNhblNjcm9sbFggPSB0YXJnZXQuY2xpZW50V2lkdGggPiAwICYmIHRhcmdldC5zY3JvbGxXaWR0aCA+IHRhcmdldC5jbGllbnRXaWR0aDtcbiAgICAgIGNvbnN0IGNhblNjcm9sbFkgPSB0YXJnZXQuY2xpZW50SGVpZ2h0ID4gMCAmJiB0YXJnZXQuc2Nyb2xsSGVpZ2h0ID4gdGFyZ2V0LmNsaWVudEhlaWdodDtcbiAgICAgIGxldCB4Q29uZCA9IGNhblNjcm9sbFkgJiYgZXZlbnQub2Zmc2V0WCA+IHRhcmdldC5jbGllbnRXaWR0aDtcblxuICAgICAgLy8gSW4gc29tZSBicm93c2VycyBpdCBpcyBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIDxib2R5PiAob3Igd2luZG93KVxuICAgICAgLy8gc2Nyb2xsYmFyIHRvIHRoZSBsZWZ0IHNpZGUsIGJ1dCBpcyB2ZXJ5IHJhcmUgYW5kIGlzIGRpZmZpY3VsdCB0b1xuICAgICAgLy8gY2hlY2sgZm9yLiBQbHVzLCBmb3IgbW9kYWwgZGlhbG9ncyB3aXRoIGJhY2tkcm9wcywgaXQgaXMgbW9yZVxuICAgICAgLy8gaW1wb3J0YW50IHRoYXQgdGhlIGJhY2tkcm9wIGlzIGNoZWNrZWQgYnV0IG5vdCBzbyBtdWNoIHRoZSB3aW5kb3cuXG4gICAgICBpZiAoY2FuU2Nyb2xsWSkge1xuICAgICAgICBjb25zdCBpc1JUTCA9IGdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5kaXJlY3Rpb24gPT09ICdydGwnO1xuICAgICAgICBpZiAoaXNSVEwpIHtcbiAgICAgICAgICB4Q29uZCA9IGV2ZW50Lm9mZnNldFggPD0gdGFyZ2V0Lm9mZnNldFdpZHRoIC0gdGFyZ2V0LmNsaWVudFdpZHRoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoeENvbmQgfHwgY2FuU2Nyb2xsWCAmJiBldmVudC5vZmZzZXRZID4gdGFyZ2V0LmNsaWVudEhlaWdodCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG5vZGVJZCA9IChfZGF0YVJlZiRjdXJyZW50JGZsb2EyID0gZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kYXRhUmVmJGN1cnJlbnQkZmxvYTIubm9kZUlkO1xuICAgIGNvbnN0IHRhcmdldElzSW5zaWRlQ2hpbGRyZW4gPSB0cmVlICYmIGdldENoaWxkcmVuKHRyZWUubm9kZXNSZWYuY3VycmVudCwgbm9kZUlkKS5zb21lKG5vZGUgPT4ge1xuICAgICAgdmFyIF9ub2RlJGNvbnRleHQ7XG4gICAgICByZXR1cm4gaXNFdmVudFRhcmdldFdpdGhpbihldmVudCwgKF9ub2RlJGNvbnRleHQgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0LmVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICB9KTtcbiAgICBpZiAoaXNFdmVudFRhcmdldFdpdGhpbihldmVudCwgZWxlbWVudHMuZmxvYXRpbmcpIHx8IGlzRXZlbnRUYXJnZXRXaXRoaW4oZXZlbnQsIGVsZW1lbnRzLmRvbVJlZmVyZW5jZSkgfHwgdGFyZ2V0SXNJbnNpZGVDaGlsZHJlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZHJlbiA9IHRyZWUgPyBnZXRDaGlsZHJlbih0cmVlLm5vZGVzUmVmLmN1cnJlbnQsIG5vZGVJZCkgOiBbXTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHNob3VsZERpc21pc3MgPSB0cnVlO1xuICAgICAgY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgIHZhciBfY2hpbGQkY29udGV4dDI7XG4gICAgICAgIGlmICgoX2NoaWxkJGNvbnRleHQyID0gY2hpbGQuY29udGV4dCkgIT0gbnVsbCAmJiBfY2hpbGQkY29udGV4dDIub3BlbiAmJiAhY2hpbGQuY29udGV4dC5kYXRhUmVmLmN1cnJlbnQuX19vdXRzaWRlUHJlc3NCdWJibGVzKSB7XG4gICAgICAgICAgc2hvdWxkRGlzbWlzcyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoIXNob3VsZERpc21pc3MpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50LCAnb3V0c2lkZS1wcmVzcycpO1xuICB9KTtcbiAgY29uc3QgY2xvc2VPblByZXNzT3V0c2lkZUNhcHR1cmUgPSB1c2VFZmZlY3RFdmVudChldmVudCA9PiB7XG4gICAgdmFyIF9nZXRUYXJnZXQ0O1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgdmFyIF9nZXRUYXJnZXQzO1xuICAgICAgY2xvc2VPblByZXNzT3V0c2lkZShldmVudCk7XG4gICAgICAoX2dldFRhcmdldDMgPSBnZXRUYXJnZXQoZXZlbnQpKSA9PSBudWxsIHx8IF9nZXRUYXJnZXQzLnJlbW92ZUV2ZW50TGlzdGVuZXIob3V0c2lkZVByZXNzRXZlbnQsIGNhbGxiYWNrKTtcbiAgICB9O1xuICAgIChfZ2V0VGFyZ2V0NCA9IGdldFRhcmdldChldmVudCkpID09IG51bGwgfHwgX2dldFRhcmdldDQuYWRkRXZlbnRMaXN0ZW5lcihvdXRzaWRlUHJlc3NFdmVudCwgY2FsbGJhY2spO1xuICB9KTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW9wZW4gfHwgIWVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZGF0YVJlZi5jdXJyZW50Ll9fZXNjYXBlS2V5QnViYmxlcyA9IGVzY2FwZUtleUJ1YmJsZXM7XG4gICAgZGF0YVJlZi5jdXJyZW50Ll9fb3V0c2lkZVByZXNzQnViYmxlcyA9IG91dHNpZGVQcmVzc0J1YmJsZXM7XG4gICAgZnVuY3Rpb24gb25TY3JvbGwoZXZlbnQpIHtcbiAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQsICdhbmNlc3Rvci1zY3JvbGwnKTtcbiAgICB9XG4gICAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgIGVzY2FwZUtleSAmJiBkb2MuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGVzY2FwZUtleUNhcHR1cmUgPyBjbG9zZU9uRXNjYXBlS2V5RG93bkNhcHR1cmUgOiBjbG9zZU9uRXNjYXBlS2V5RG93biwgZXNjYXBlS2V5Q2FwdHVyZSk7XG4gICAgb3V0c2lkZVByZXNzICYmIGRvYy5hZGRFdmVudExpc3RlbmVyKG91dHNpZGVQcmVzc0V2ZW50LCBvdXRzaWRlUHJlc3NDYXB0dXJlID8gY2xvc2VPblByZXNzT3V0c2lkZUNhcHR1cmUgOiBjbG9zZU9uUHJlc3NPdXRzaWRlLCBvdXRzaWRlUHJlc3NDYXB0dXJlKTtcbiAgICBsZXQgYW5jZXN0b3JzID0gW107XG4gICAgaWYgKGFuY2VzdG9yU2Nyb2xsKSB7XG4gICAgICBpZiAoaXNFbGVtZW50KGVsZW1lbnRzLmRvbVJlZmVyZW5jZSkpIHtcbiAgICAgICAgYW5jZXN0b3JzID0gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZWxlbWVudHMuZG9tUmVmZXJlbmNlKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0VsZW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpKSB7XG4gICAgICAgIGFuY2VzdG9ycyA9IGFuY2VzdG9ycy5jb25jYXQoZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNFbGVtZW50KGVsZW1lbnRzLnJlZmVyZW5jZSkgJiYgZWxlbWVudHMucmVmZXJlbmNlICYmIGVsZW1lbnRzLnJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkge1xuICAgICAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMuY29uY2F0KGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnRzLnJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElnbm9yZSB0aGUgdmlzdWFsIHZpZXdwb3J0IGZvciBzY3JvbGxpbmcgZGlzbWlzc2FsIChhbGxvdyBwaW5jaC16b29tKVxuICAgIGFuY2VzdG9ycyA9IGFuY2VzdG9ycy5maWx0ZXIoYW5jZXN0b3IgPT4ge1xuICAgICAgdmFyIF9kb2MkZGVmYXVsdFZpZXc7XG4gICAgICByZXR1cm4gYW5jZXN0b3IgIT09ICgoX2RvYyRkZWZhdWx0VmlldyA9IGRvYy5kZWZhdWx0VmlldykgPT0gbnVsbCA/IHZvaWQgMCA6IF9kb2MkZGVmYXVsdFZpZXcudmlzdWFsVmlld3BvcnQpO1xuICAgIH0pO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7XG4gICAgICAgIHBhc3NpdmU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBlc2NhcGVLZXkgJiYgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBlc2NhcGVLZXlDYXB0dXJlID8gY2xvc2VPbkVzY2FwZUtleURvd25DYXB0dXJlIDogY2xvc2VPbkVzY2FwZUtleURvd24sIGVzY2FwZUtleUNhcHR1cmUpO1xuICAgICAgb3V0c2lkZVByZXNzICYmIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKG91dHNpZGVQcmVzc0V2ZW50LCBvdXRzaWRlUHJlc3NDYXB0dXJlID8gY2xvc2VPblByZXNzT3V0c2lkZUNhcHR1cmUgOiBjbG9zZU9uUHJlc3NPdXRzaWRlLCBvdXRzaWRlUHJlc3NDYXB0dXJlKTtcbiAgICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgICAgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfSwgW2RhdGFSZWYsIGVsZW1lbnRzLCBlc2NhcGVLZXksIG91dHNpZGVQcmVzcywgb3V0c2lkZVByZXNzRXZlbnQsIG9wZW4sIG9uT3BlbkNoYW5nZSwgYW5jZXN0b3JTY3JvbGwsIGVuYWJsZWQsIGVzY2FwZUtleUJ1YmJsZXMsIG91dHNpZGVQcmVzc0J1YmJsZXMsIGNsb3NlT25Fc2NhcGVLZXlEb3duLCBlc2NhcGVLZXlDYXB0dXJlLCBjbG9zZU9uRXNjYXBlS2V5RG93bkNhcHR1cmUsIGNsb3NlT25QcmVzc091dHNpZGUsIG91dHNpZGVQcmVzc0NhcHR1cmUsIGNsb3NlT25QcmVzc091dHNpZGVDYXB0dXJlXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgfSwgW291dHNpZGVQcmVzcywgb3V0c2lkZVByZXNzRXZlbnRdKTtcbiAgY29uc3QgcmVmZXJlbmNlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIG9uS2V5RG93bjogY2xvc2VPbkVzY2FwZUtleURvd24sXG4gICAgW2J1YmJsZUhhbmRsZXJLZXlzW3JlZmVyZW5jZVByZXNzRXZlbnRdXTogZXZlbnQgPT4ge1xuICAgICAgaWYgKHJlZmVyZW5jZVByZXNzKSB7XG4gICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQsICdyZWZlcmVuY2UtcHJlc3MnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pLCBbY2xvc2VPbkVzY2FwZUtleURvd24sIG9uT3BlbkNoYW5nZSwgcmVmZXJlbmNlUHJlc3MsIHJlZmVyZW5jZVByZXNzRXZlbnRdKTtcbiAgY29uc3QgZmxvYXRpbmcgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgb25LZXlEb3duOiBjbG9zZU9uRXNjYXBlS2V5RG93bixcbiAgICBvbk1vdXNlRG93bigpIHtcbiAgICAgIGVuZGVkT3JTdGFydGVkSW5zaWRlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sXG4gICAgb25Nb3VzZVVwKCkge1xuICAgICAgZW5kZWRPclN0YXJ0ZWRJbnNpZGVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfSxcbiAgICBbY2FwdHVyZUhhbmRsZXJLZXlzW291dHNpZGVQcmVzc0V2ZW50XV06ICgpID0+IHtcbiAgICAgIGluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9XG4gIH0pLCBbY2xvc2VPbkVzY2FwZUtleURvd24sIG91dHNpZGVQcmVzc0V2ZW50XSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZSwgZmxvYXRpbmddKTtcbn1cblxuZnVuY3Rpb24gdXNlRmxvYXRpbmdSb290Q29udGV4dChvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBvcGVuID0gZmFsc2UsXG4gICAgb25PcGVuQ2hhbmdlOiBvbk9wZW5DaGFuZ2VQcm9wLFxuICAgIGVsZW1lbnRzOiBlbGVtZW50c1Byb3BcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGZsb2F0aW5nSWQgPSB1c2VJZCgpO1xuICBjb25zdCBkYXRhUmVmID0gUmVhY3QudXNlUmVmKHt9KTtcbiAgY29uc3QgW2V2ZW50c10gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PiBjcmVhdGVQdWJTdWIoKSk7XG4gIGNvbnN0IG5lc3RlZCA9IHVzZUZsb2F0aW5nUGFyZW50Tm9kZUlkKCkgIT0gbnVsbDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGNvbnN0IG9wdGlvbkRvbVJlZmVyZW5jZSA9IGVsZW1lbnRzUHJvcC5yZWZlcmVuY2U7XG4gICAgaWYgKG9wdGlvbkRvbVJlZmVyZW5jZSAmJiAhaXNFbGVtZW50KG9wdGlvbkRvbVJlZmVyZW5jZSkpIHtcbiAgICAgIGVycm9yKCdDYW5ub3QgcGFzcyBhIHZpcnR1YWwgZWxlbWVudCB0byB0aGUgYGVsZW1lbnRzLnJlZmVyZW5jZWAgb3B0aW9uLCcsICdhcyBpdCBtdXN0IGJlIGEgcmVhbCBET00gZWxlbWVudC4gVXNlIGByZWZzLnNldFBvc2l0aW9uUmVmZXJlbmNlKClgJywgJ2luc3RlYWQuJyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IFtwb3NpdGlvblJlZmVyZW5jZSwgc2V0UG9zaXRpb25SZWZlcmVuY2VdID0gUmVhY3QudXNlU3RhdGUoZWxlbWVudHNQcm9wLnJlZmVyZW5jZSk7XG4gIGNvbnN0IG9uT3BlbkNoYW5nZSA9IHVzZUVmZmVjdEV2ZW50KChvcGVuLCBldmVudCwgcmVhc29uKSA9PiB7XG4gICAgZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCA9IG9wZW4gPyBldmVudCA6IHVuZGVmaW5lZDtcbiAgICBldmVudHMuZW1pdCgnb3BlbmNoYW5nZScsIHtcbiAgICAgIG9wZW4sXG4gICAgICBldmVudCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG5lc3RlZFxuICAgIH0pO1xuICAgIG9uT3BlbkNoYW5nZVByb3AgPT0gbnVsbCB8fCBvbk9wZW5DaGFuZ2VQcm9wKG9wZW4sIGV2ZW50LCByZWFzb24pO1xuICB9KTtcbiAgY29uc3QgcmVmcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBzZXRQb3NpdGlvblJlZmVyZW5jZVxuICB9KSwgW10pO1xuICBjb25zdCBlbGVtZW50cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICByZWZlcmVuY2U6IHBvc2l0aW9uUmVmZXJlbmNlIHx8IGVsZW1lbnRzUHJvcC5yZWZlcmVuY2UgfHwgbnVsbCxcbiAgICBmbG9hdGluZzogZWxlbWVudHNQcm9wLmZsb2F0aW5nIHx8IG51bGwsXG4gICAgZG9tUmVmZXJlbmNlOiBlbGVtZW50c1Byb3AucmVmZXJlbmNlXG4gIH0pLCBbcG9zaXRpb25SZWZlcmVuY2UsIGVsZW1lbnRzUHJvcC5yZWZlcmVuY2UsIGVsZW1lbnRzUHJvcC5mbG9hdGluZ10pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGRhdGFSZWYsXG4gICAgb3BlbixcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZWxlbWVudHMsXG4gICAgZXZlbnRzLFxuICAgIGZsb2F0aW5nSWQsXG4gICAgcmVmc1xuICB9KSwgW29wZW4sIG9uT3BlbkNoYW5nZSwgZWxlbWVudHMsIGV2ZW50cywgZmxvYXRpbmdJZCwgcmVmc10pO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYSBmbG9hdGluZyBlbGVtZW50IGFuZCBjb250ZXh0IHRvIGFkZCBpbnRlcmFjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlRmxvYXRpbmdcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmcob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBub2RlSWRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGludGVybmFsUm9vdENvbnRleHQgPSB1c2VGbG9hdGluZ1Jvb3RDb250ZXh0KHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICByZWZlcmVuY2U6IG51bGwsXG4gICAgICBmbG9hdGluZzogbnVsbCxcbiAgICAgIC4uLm9wdGlvbnMuZWxlbWVudHNcbiAgICB9XG4gIH0pO1xuICBjb25zdCByb290Q29udGV4dCA9IG9wdGlvbnMucm9vdENvbnRleHQgfHwgaW50ZXJuYWxSb290Q29udGV4dDtcbiAgY29uc3QgY29tcHV0ZWRFbGVtZW50cyA9IHJvb3RDb250ZXh0LmVsZW1lbnRzO1xuICBjb25zdCBbX2RvbVJlZmVyZW5jZSwgc2V0RG9tUmVmZXJlbmNlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbcG9zaXRpb25SZWZlcmVuY2UsIF9zZXRQb3NpdGlvblJlZmVyZW5jZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3Qgb3B0aW9uRG9tUmVmZXJlbmNlID0gY29tcHV0ZWRFbGVtZW50cyA9PSBudWxsID8gdm9pZCAwIDogY29tcHV0ZWRFbGVtZW50cy5yZWZlcmVuY2U7XG4gIGNvbnN0IGRvbVJlZmVyZW5jZSA9IG9wdGlvbkRvbVJlZmVyZW5jZSB8fCBfZG9tUmVmZXJlbmNlO1xuICBjb25zdCBkb21SZWZlcmVuY2VSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IHRyZWUgPSB1c2VGbG9hdGluZ1RyZWUoKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChkb21SZWZlcmVuY2UpIHtcbiAgICAgIGRvbVJlZmVyZW5jZVJlZi5jdXJyZW50ID0gZG9tUmVmZXJlbmNlO1xuICAgIH1cbiAgfSwgW2RvbVJlZmVyZW5jZV0pO1xuICBjb25zdCBwb3NpdGlvbiA9IHVzZUZsb2F0aW5nJDEoe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIC4uLmNvbXB1dGVkRWxlbWVudHMsXG4gICAgICAuLi4ocG9zaXRpb25SZWZlcmVuY2UgJiYge1xuICAgICAgICByZWZlcmVuY2U6IHBvc2l0aW9uUmVmZXJlbmNlXG4gICAgICB9KVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHNldFBvc2l0aW9uUmVmZXJlbmNlID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgY29uc3QgY29tcHV0ZWRQb3NpdGlvblJlZmVyZW5jZSA9IGlzRWxlbWVudChub2RlKSA/IHtcbiAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdDogKCkgPT4gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgIGNvbnRleHRFbGVtZW50OiBub2RlXG4gICAgfSA6IG5vZGU7XG4gICAgLy8gU3RvcmUgdGhlIHBvc2l0aW9uUmVmZXJlbmNlIGluIHN0YXRlIGlmIHRoZSBET00gcmVmZXJlbmNlIGlzIHNwZWNpZmllZCBleHRlcm5hbGx5IHZpYSB0aGVcbiAgICAvLyBgZWxlbWVudHMucmVmZXJlbmNlYCBvcHRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IGl0IHdvbid0IGJlIG92ZXJyaWRkZW4gb24gZnV0dXJlIHJlbmRlcnMuXG4gICAgX3NldFBvc2l0aW9uUmVmZXJlbmNlKGNvbXB1dGVkUG9zaXRpb25SZWZlcmVuY2UpO1xuICAgIHBvc2l0aW9uLnJlZnMuc2V0UmVmZXJlbmNlKGNvbXB1dGVkUG9zaXRpb25SZWZlcmVuY2UpO1xuICB9LCBbcG9zaXRpb24ucmVmc10pO1xuICBjb25zdCBzZXRSZWZlcmVuY2UgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAoaXNFbGVtZW50KG5vZGUpIHx8IG5vZGUgPT09IG51bGwpIHtcbiAgICAgIGRvbVJlZmVyZW5jZVJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIHNldERvbVJlZmVyZW5jZShub2RlKTtcbiAgICB9XG5cbiAgICAvLyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBmb3IgcGFzc2luZyBhIHZpcnR1YWwgZWxlbWVudCB0byBgcmVmZXJlbmNlYFxuICAgIC8vIGFmdGVyIGl0IGhhcyBzZXQgdGhlIERPTSByZWZlcmVuY2UuXG4gICAgaWYgKGlzRWxlbWVudChwb3NpdGlvbi5yZWZzLnJlZmVyZW5jZS5jdXJyZW50KSB8fCBwb3NpdGlvbi5yZWZzLnJlZmVyZW5jZS5jdXJyZW50ID09PSBudWxsIHx8XG4gICAgLy8gRG9uJ3QgYWxsb3cgc2V0dGluZyB2aXJ0dWFsIGVsZW1lbnRzIHVzaW5nIHRoZSBvbGQgdGVjaG5pcXVlIGJhY2sgdG9cbiAgICAvLyBgbnVsbGAgdG8gc3VwcG9ydCBgcG9zaXRpb25SZWZlcmVuY2VgICsgYW4gdW5zdGFibGUgYHJlZmVyZW5jZWBcbiAgICAvLyBjYWxsYmFjayByZWYuXG4gICAgbm9kZSAhPT0gbnVsbCAmJiAhaXNFbGVtZW50KG5vZGUpKSB7XG4gICAgICBwb3NpdGlvbi5yZWZzLnNldFJlZmVyZW5jZShub2RlKTtcbiAgICB9XG4gIH0sIFtwb3NpdGlvbi5yZWZzXSk7XG4gIGNvbnN0IHJlZnMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgLi4ucG9zaXRpb24ucmVmcyxcbiAgICBzZXRSZWZlcmVuY2UsXG4gICAgc2V0UG9zaXRpb25SZWZlcmVuY2UsXG4gICAgZG9tUmVmZXJlbmNlOiBkb21SZWZlcmVuY2VSZWZcbiAgfSksIFtwb3NpdGlvbi5yZWZzLCBzZXRSZWZlcmVuY2UsIHNldFBvc2l0aW9uUmVmZXJlbmNlXSk7XG4gIGNvbnN0IGVsZW1lbnRzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLnBvc2l0aW9uLmVsZW1lbnRzLFxuICAgIGRvbVJlZmVyZW5jZTogZG9tUmVmZXJlbmNlXG4gIH0pLCBbcG9zaXRpb24uZWxlbWVudHMsIGRvbVJlZmVyZW5jZV0pO1xuICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLnBvc2l0aW9uLFxuICAgIC4uLnJvb3RDb250ZXh0LFxuICAgIHJlZnMsXG4gICAgZWxlbWVudHMsXG4gICAgbm9kZUlkXG4gIH0pLCBbcG9zaXRpb24sIHJlZnMsIGVsZW1lbnRzLCBub2RlSWQsIHJvb3RDb250ZXh0XSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICByb290Q29udGV4dC5kYXRhUmVmLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0ID0gY29udGV4dDtcbiAgICBjb25zdCBub2RlID0gdHJlZSA9PSBudWxsID8gdm9pZCAwIDogdHJlZS5ub2Rlc1JlZi5jdXJyZW50LmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBub2RlSWQpO1xuICAgIGlmIChub2RlKSB7XG4gICAgICBub2RlLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgLi4ucG9zaXRpb24sXG4gICAgY29udGV4dCxcbiAgICByZWZzLFxuICAgIGVsZW1lbnRzXG4gIH0pLCBbcG9zaXRpb24sIHJlZnMsIGVsZW1lbnRzLCBjb250ZXh0XSk7XG59XG5cbi8qKlxuICogT3BlbnMgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hpbGUgdGhlIHJlZmVyZW5jZSBlbGVtZW50IGhhcyBmb2N1cywgbGlrZSBDU1NcbiAqIGA6Zm9jdXNgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZUZvY3VzXG4gKi9cbmZ1bmN0aW9uIHVzZUZvY3VzKGNvbnRleHQsIHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZXZlbnRzLFxuICAgIGRhdGFSZWYsXG4gICAgZWxlbWVudHNcbiAgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBlbmFibGVkID0gdHJ1ZSxcbiAgICB2aXNpYmxlT25seSA9IHRydWVcbiAgfSA9IHByb3BzO1xuICBjb25zdCBibG9ja0ZvY3VzUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgdGltZW91dFJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICBjb25zdCBrZXlib2FyZE1vZGFsaXR5UmVmID0gUmVhY3QudXNlUmVmKHRydWUpO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICAgIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50cy5kb21SZWZlcmVuY2UpO1xuXG4gICAgLy8gSWYgdGhlIHJlZmVyZW5jZSB3YXMgZm9jdXNlZCBhbmQgdGhlIHVzZXIgbGVmdCB0aGUgdGFiL3dpbmRvdywgYW5kIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgd2FzIG5vdCBvcGVuLCB0aGUgZm9jdXMgc2hvdWxkIGJlIGJsb2NrZWQgd2hlbiB0aGV5XG4gICAgLy8gcmV0dXJuIHRvIHRoZSB0YWIvd2luZG93LlxuICAgIGZ1bmN0aW9uIG9uQmx1cigpIHtcbiAgICAgIGlmICghb3BlbiAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnRzLmRvbVJlZmVyZW5jZSkgJiYgZWxlbWVudHMuZG9tUmVmZXJlbmNlID09PSBhY3RpdmVFbGVtZW50KGdldERvY3VtZW50KGVsZW1lbnRzLmRvbVJlZmVyZW5jZSkpKSB7XG4gICAgICAgIGJsb2NrRm9jdXNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9uS2V5RG93bigpIHtcbiAgICAgIGtleWJvYXJkTW9kYWxpdHlSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICAgIHdpbi5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgb25CbHVyKTtcbiAgICB3aW4uYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93biwgdHJ1ZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbi5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgb25CbHVyKTtcbiAgICAgIHdpbi5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duLCB0cnVlKTtcbiAgICB9O1xuICB9LCBbZWxlbWVudHMuZG9tUmVmZXJlbmNlLCBvcGVuLCBlbmFibGVkXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgZnVuY3Rpb24gb25PcGVuQ2hhbmdlKF9yZWYpIHtcbiAgICAgIGxldCB7XG4gICAgICAgIHJlYXNvblxuICAgICAgfSA9IF9yZWY7XG4gICAgICBpZiAocmVhc29uID09PSAncmVmZXJlbmNlLXByZXNzJyB8fCByZWFzb24gPT09ICdlc2NhcGUta2V5Jykge1xuICAgICAgICBibG9ja0ZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBldmVudHMub24oJ29wZW5jaGFuZ2UnLCBvbk9wZW5DaGFuZ2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBldmVudHMub2ZmKCdvcGVuY2hhbmdlJywgb25PcGVuQ2hhbmdlKTtcbiAgICB9O1xuICB9LCBbZXZlbnRzLCBlbmFibGVkXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgY29uc3QgcmVmZXJlbmNlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIG9uUG9pbnRlckRvd24oZXZlbnQpIHtcbiAgICAgIGlmIChpc1ZpcnR1YWxQb2ludGVyRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQpKSByZXR1cm47XG4gICAgICBrZXlib2FyZE1vZGFsaXR5UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9LFxuICAgIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgIGJsb2NrRm9jdXNSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIH0sXG4gICAgb25Gb2N1cyhldmVudCkge1xuICAgICAgaWYgKGJsb2NrRm9jdXNSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGV2ZW50Lm5hdGl2ZUV2ZW50KTtcbiAgICAgIGlmICh2aXNpYmxlT25seSAmJiBpc0VsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIE1hYyBTYWZhcmkgdW5yZWxpYWJseSBtYXRjaGVzIGA6Zm9jdXMtdmlzaWJsZWAgb24gdGhlIHJlZmVyZW5jZVxuICAgICAgICAgIC8vIGlmIGZvY3VzIHdhcyBvdXRzaWRlIHRoZSBwYWdlIGluaXRpYWxseSAtIHVzZSB0aGUgZmFsbGJhY2tcbiAgICAgICAgICAvLyBpbnN0ZWFkLlxuICAgICAgICAgIGlmIChpc1NhZmFyaSgpICYmIGlzTWFjKCkpIHRocm93IEVycm9yKCk7XG4gICAgICAgICAgaWYgKCF0YXJnZXQubWF0Y2hlcygnOmZvY3VzLXZpc2libGUnKSkgcmV0dXJuO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gT2xkIGJyb3dzZXJzIHdpbGwgdGhyb3cgYW4gZXJyb3Igd2hlbiB1c2luZyBgOmZvY3VzLXZpc2libGVgLlxuICAgICAgICAgIGlmICgha2V5Ym9hcmRNb2RhbGl0eVJlZi5jdXJyZW50ICYmICFpc1R5cGVhYmxlRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvbk9wZW5DaGFuZ2UodHJ1ZSwgZXZlbnQubmF0aXZlRXZlbnQsICdmb2N1cycpO1xuICAgIH0sXG4gICAgb25CbHVyKGV2ZW50KSB7XG4gICAgICBibG9ja0ZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xuICAgICAgY29uc3QgbmF0aXZlRXZlbnQgPSBldmVudC5uYXRpdmVFdmVudDtcblxuICAgICAgLy8gSGl0IHRoZSBub24tbW9kYWwgZm9jdXMgbWFuYWdlbWVudCBwb3J0YWwgZ3VhcmQuIEZvY3VzIHdpbGwgYmVcbiAgICAgIC8vIG1vdmVkIGludG8gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW1tZWRpYXRlbHkgYWZ0ZXIuXG4gICAgICBjb25zdCBtb3ZlZFRvRm9jdXNHdWFyZCA9IGlzRWxlbWVudChyZWxhdGVkVGFyZ2V0KSAmJiByZWxhdGVkVGFyZ2V0Lmhhc0F0dHJpYnV0ZShjcmVhdGVBdHRyaWJ1dGUoJ2ZvY3VzLWd1YXJkJykpICYmIHJlbGF0ZWRUYXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKSA9PT0gJ291dHNpZGUnO1xuXG4gICAgICAvLyBXYWl0IGZvciB0aGUgd2luZG93IGJsdXIgbGlzdGVuZXIgdG8gZmlyZS5cbiAgICAgIHRpbWVvdXRSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdmFyIF9kYXRhUmVmJGN1cnJlbnQkZmxvYTtcbiAgICAgICAgY29uc3QgYWN0aXZlRWwgPSBhY3RpdmVFbGVtZW50KGVsZW1lbnRzLmRvbVJlZmVyZW5jZSA/IGVsZW1lbnRzLmRvbVJlZmVyZW5jZS5vd25lckRvY3VtZW50IDogZG9jdW1lbnQpO1xuXG4gICAgICAgIC8vIEZvY3VzIGxlZnQgdGhlIHBhZ2UsIGtlZXAgaXQgb3Blbi5cbiAgICAgICAgaWYgKCFyZWxhdGVkVGFyZ2V0ICYmIGFjdGl2ZUVsID09PSBlbGVtZW50cy5kb21SZWZlcmVuY2UpIHJldHVybjtcblxuICAgICAgICAvLyBXaGVuIGZvY3VzaW5nIHRoZSByZWZlcmVuY2UgZWxlbWVudCAoZS5nLiByZWd1bGFyIGNsaWNrKSwgdGhlblxuICAgICAgICAvLyBjbGlja2luZyBpbnRvIHRoZSBmbG9hdGluZyBlbGVtZW50LCBwcmV2ZW50IGl0IGZyb20gaGlkaW5nLlxuICAgICAgICAvLyBOb3RlOiBpdCBtdXN0IGJlIGZvY3VzYWJsZSwgZS5nLiBgdGFiaW5kZXg9XCItMVwiYC5cbiAgICAgICAgLy8gV2UgY2FuIG5vdCByZWx5IG9uIHJlbGF0ZWRUYXJnZXQgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgZWxlbWVudFxuICAgICAgICAvLyBhcyBpdCB3aWxsIG9ubHkgcG9pbnQgdG8gdGhlIHNoYWRvdyBob3N0IG9mIHRoZSBuZXdseSBmb2N1c2VkIGVsZW1lbnRcbiAgICAgICAgLy8gYW5kIG5vdCB0aGUgZWxlbWVudCB0aGF0IGFjdHVhbGx5IGhhcyByZWNlaXZlZCBmb2N1cyBpZiBpdCBpcyBsb2NhdGVkXG4gICAgICAgIC8vIGluc2lkZSBhIHNoYWRvdyByb290LlxuICAgICAgICBpZiAoY29udGFpbnMoKF9kYXRhUmVmJGN1cnJlbnQkZmxvYSA9IGRhdGFSZWYuY3VycmVudC5mbG9hdGluZ0NvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YVJlZiRjdXJyZW50JGZsb2EucmVmcy5mbG9hdGluZy5jdXJyZW50LCBhY3RpdmVFbCkgfHwgY29udGFpbnMoZWxlbWVudHMuZG9tUmVmZXJlbmNlLCBhY3RpdmVFbCkgfHwgbW92ZWRUb0ZvY3VzR3VhcmQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBuYXRpdmVFdmVudCwgJ2ZvY3VzJyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCBbZGF0YVJlZiwgZWxlbWVudHMuZG9tUmVmZXJlbmNlLCBvbk9wZW5DaGFuZ2UsIHZpc2libGVPbmx5XSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgcmVmZXJlbmNlXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZV0pO1xufVxuXG5jb25zdCBBQ1RJVkVfS0VZID0gJ2FjdGl2ZSc7XG5jb25zdCBTRUxFQ1RFRF9LRVkgPSAnc2VsZWN0ZWQnO1xuZnVuY3Rpb24gbWVyZ2VQcm9wcyh1c2VyUHJvcHMsIHByb3BzTGlzdCwgZWxlbWVudEtleSkge1xuICBjb25zdCBtYXAgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IGlzSXRlbSA9IGVsZW1lbnRLZXkgPT09ICdpdGVtJztcbiAgbGV0IGRvbVVzZXJQcm9wcyA9IHVzZXJQcm9wcztcbiAgaWYgKGlzSXRlbSAmJiB1c2VyUHJvcHMpIHtcbiAgICBjb25zdCB7XG4gICAgICBbQUNUSVZFX0tFWV06IF8sXG4gICAgICBbU0VMRUNURURfS0VZXTogX18sXG4gICAgICAuLi52YWxpZFByb3BzXG4gICAgfSA9IHVzZXJQcm9wcztcbiAgICBkb21Vc2VyUHJvcHMgPSB2YWxpZFByb3BzO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uKGVsZW1lbnRLZXkgPT09ICdmbG9hdGluZycgJiYge1xuICAgICAgdGFiSW5kZXg6IC0xXG4gICAgfSksXG4gICAgLi4uZG9tVXNlclByb3BzLFxuICAgIC4uLnByb3BzTGlzdC5tYXAodmFsdWUgPT4ge1xuICAgICAgY29uc3QgcHJvcHNPckdldFByb3BzID0gdmFsdWUgPyB2YWx1ZVtlbGVtZW50S2V5XSA6IG51bGw7XG4gICAgICBpZiAodHlwZW9mIHByb3BzT3JHZXRQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdXNlclByb3BzID8gcHJvcHNPckdldFByb3BzKHVzZXJQcm9wcykgOiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BzT3JHZXRQcm9wcztcbiAgICB9KS5jb25jYXQodXNlclByb3BzKS5yZWR1Y2UoKGFjYywgcHJvcHMpID0+IHtcbiAgICAgIGlmICghcHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzKS5mb3JFYWNoKF9yZWYgPT4ge1xuICAgICAgICBsZXQgW2tleSwgdmFsdWVdID0gX3JlZjtcbiAgICAgICAgaWYgKGlzSXRlbSAmJiBbQUNUSVZFX0tFWSwgU0VMRUNURURfS0VZXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkuaW5kZXhPZignb24nKSA9PT0gMCkge1xuICAgICAgICAgIGlmICghbWFwLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgW10pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB2YXIgX21hcCRnZXQ7XG4gICAgICAgICAgICAoX21hcCRnZXQgPSBtYXAuZ2V0KGtleSkpID09IG51bGwgfHwgX21hcCRnZXQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgdmFyIF9tYXAkZ2V0MjtcbiAgICAgICAgICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gKF9tYXAkZ2V0MiA9IG1hcC5nZXQoa2V5KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9tYXAkZ2V0Mi5tYXAoZm4gPT4gZm4oLi4uYXJncykpLmZpbmQodmFsID0+IHZhbCAhPT0gdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSlcbiAgfTtcbn1cbi8qKlxuICogTWVyZ2VzIGFuIGFycmF5IG9mIGludGVyYWN0aW9uIGhvb2tzJyBwcm9wcyBpbnRvIHByb3AgZ2V0dGVycywgYWxsb3dpbmdcbiAqIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb25zIHRvIGJlIGNvbXBvc2VkIHRvZ2V0aGVyIHdpdGhvdXQgb3ZlcndyaXRpbmcgb25lXG4gKiBhbm90aGVyLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZUludGVyYWN0aW9uc1xuICovXG5mdW5jdGlvbiB1c2VJbnRlcmFjdGlvbnMocHJvcHNMaXN0KSB7XG4gIGlmIChwcm9wc0xpc3QgPT09IHZvaWQgMCkge1xuICAgIHByb3BzTGlzdCA9IFtdO1xuICB9XG4gIGNvbnN0IHJlZmVyZW5jZURlcHMgPSBwcm9wc0xpc3QubWFwKGtleSA9PiBrZXkgPT0gbnVsbCA/IHZvaWQgMCA6IGtleS5yZWZlcmVuY2UpO1xuICBjb25zdCBmbG9hdGluZ0RlcHMgPSBwcm9wc0xpc3QubWFwKGtleSA9PiBrZXkgPT0gbnVsbCA/IHZvaWQgMCA6IGtleS5mbG9hdGluZyk7XG4gIGNvbnN0IGl0ZW1EZXBzID0gcHJvcHNMaXN0Lm1hcChrZXkgPT4ga2V5ID09IG51bGwgPyB2b2lkIDAgOiBrZXkuaXRlbSk7XG4gIGNvbnN0IGdldFJlZmVyZW5jZVByb3BzID0gUmVhY3QudXNlQ2FsbGJhY2sodXNlclByb3BzID0+IG1lcmdlUHJvcHModXNlclByb3BzLCBwcm9wc0xpc3QsICdyZWZlcmVuY2UnKSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICByZWZlcmVuY2VEZXBzKTtcbiAgY29uc3QgZ2V0RmxvYXRpbmdQcm9wcyA9IFJlYWN0LnVzZUNhbGxiYWNrKHVzZXJQcm9wcyA9PiBtZXJnZVByb3BzKHVzZXJQcm9wcywgcHJvcHNMaXN0LCAnZmxvYXRpbmcnKSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICBmbG9hdGluZ0RlcHMpO1xuICBjb25zdCBnZXRJdGVtUHJvcHMgPSBSZWFjdC51c2VDYWxsYmFjayh1c2VyUHJvcHMgPT4gbWVyZ2VQcm9wcyh1c2VyUHJvcHMsIHByb3BzTGlzdCwgJ2l0ZW0nKSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICBpdGVtRGVwcyk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZ2V0UmVmZXJlbmNlUHJvcHMsXG4gICAgZ2V0RmxvYXRpbmdQcm9wcyxcbiAgICBnZXRJdGVtUHJvcHNcbiAgfSksIFtnZXRSZWZlcmVuY2VQcm9wcywgZ2V0RmxvYXRpbmdQcm9wcywgZ2V0SXRlbVByb3BzXSk7XG59XG5cbmxldCBpc1ByZXZlbnRTY3JvbGxTdXBwb3J0ZWQgPSBmYWxzZTtcbmZ1bmN0aW9uIGRvU3dpdGNoKG9yaWVudGF0aW9uLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbCkge1xuICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgY2FzZSAndmVydGljYWwnOlxuICAgICAgcmV0dXJuIHZlcnRpY2FsO1xuICAgIGNhc2UgJ2hvcml6b250YWwnOlxuICAgICAgcmV0dXJuIGhvcml6b250YWw7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2ZXJ0aWNhbCB8fCBob3Jpem9udGFsO1xuICB9XG59XG5mdW5jdGlvbiBpc01haW5PcmllbnRhdGlvbktleShrZXksIG9yaWVudGF0aW9uKSB7XG4gIGNvbnN0IHZlcnRpY2FsID0ga2V5ID09PSBBUlJPV19VUCB8fCBrZXkgPT09IEFSUk9XX0RPV047XG4gIGNvbnN0IGhvcml6b250YWwgPSBrZXkgPT09IEFSUk9XX0xFRlQgfHwga2V5ID09PSBBUlJPV19SSUdIVDtcbiAgcmV0dXJuIGRvU3dpdGNoKG9yaWVudGF0aW9uLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbCk7XG59XG5mdW5jdGlvbiBpc01haW5PcmllbnRhdGlvblRvRW5kS2V5KGtleSwgb3JpZW50YXRpb24sIHJ0bCkge1xuICBjb25zdCB2ZXJ0aWNhbCA9IGtleSA9PT0gQVJST1dfRE9XTjtcbiAgY29uc3QgaG9yaXpvbnRhbCA9IHJ0bCA/IGtleSA9PT0gQVJST1dfTEVGVCA6IGtleSA9PT0gQVJST1dfUklHSFQ7XG4gIHJldHVybiBkb1N3aXRjaChvcmllbnRhdGlvbiwgdmVydGljYWwsIGhvcml6b250YWwpIHx8IGtleSA9PT0gJ0VudGVyJyB8fCBrZXkgPT09ICcgJyB8fCBrZXkgPT09ICcnO1xufVxuZnVuY3Rpb24gaXNDcm9zc09yaWVudGF0aW9uT3BlbktleShrZXksIG9yaWVudGF0aW9uLCBydGwpIHtcbiAgY29uc3QgdmVydGljYWwgPSBydGwgPyBrZXkgPT09IEFSUk9XX0xFRlQgOiBrZXkgPT09IEFSUk9XX1JJR0hUO1xuICBjb25zdCBob3Jpem9udGFsID0ga2V5ID09PSBBUlJPV19ET1dOO1xuICByZXR1cm4gZG9Td2l0Y2gob3JpZW50YXRpb24sIHZlcnRpY2FsLCBob3Jpem9udGFsKTtcbn1cbmZ1bmN0aW9uIGlzQ3Jvc3NPcmllbnRhdGlvbkNsb3NlS2V5KGtleSwgb3JpZW50YXRpb24sIHJ0bCkge1xuICBjb25zdCB2ZXJ0aWNhbCA9IHJ0bCA/IGtleSA9PT0gQVJST1dfUklHSFQgOiBrZXkgPT09IEFSUk9XX0xFRlQ7XG4gIGNvbnN0IGhvcml6b250YWwgPSBrZXkgPT09IEFSUk9XX1VQO1xuICByZXR1cm4gZG9Td2l0Y2gob3JpZW50YXRpb24sIHZlcnRpY2FsLCBob3Jpem9udGFsKTtcbn1cbi8qKlxuICogQWRkcyBhcnJvdyBrZXktYmFzZWQgbmF2aWdhdGlvbiBvZiBhIGxpc3Qgb2YgaXRlbXMsIGVpdGhlciB1c2luZyByZWFsIERPTVxuICogZm9jdXMgb3IgdmlydHVhbCBmb2N1cy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VMaXN0TmF2aWdhdGlvblxuICovXG5mdW5jdGlvbiB1c2VMaXN0TmF2aWdhdGlvbihjb250ZXh0LCBwcm9wcykge1xuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZWxlbWVudHNcbiAgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBsaXN0UmVmLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIG9uTmF2aWdhdGU6IHVuc3RhYmxlX29uTmF2aWdhdGUgPSAoKSA9PiB7fSxcbiAgICBlbmFibGVkID0gdHJ1ZSxcbiAgICBzZWxlY3RlZEluZGV4ID0gbnVsbCxcbiAgICBhbGxvd0VzY2FwZSA9IGZhbHNlLFxuICAgIGxvb3AgPSBmYWxzZSxcbiAgICBuZXN0ZWQgPSBmYWxzZSxcbiAgICBydGwgPSBmYWxzZSxcbiAgICB2aXJ0dWFsID0gZmFsc2UsXG4gICAgZm9jdXNJdGVtT25PcGVuID0gJ2F1dG8nLFxuICAgIGZvY3VzSXRlbU9uSG92ZXIgPSB0cnVlLFxuICAgIG9wZW5PbkFycm93S2V5RG93biA9IHRydWUsXG4gICAgZGlzYWJsZWRJbmRpY2VzID0gdW5kZWZpbmVkLFxuICAgIG9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJyxcbiAgICBjb2xzID0gMSxcbiAgICBzY3JvbGxJdGVtSW50b1ZpZXcgPSB0cnVlLFxuICAgIHZpcnR1YWxJdGVtUmVmLFxuICAgIGl0ZW1TaXplcyxcbiAgICBkZW5zZSA9IGZhbHNlXG4gIH0gPSBwcm9wcztcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGlmIChhbGxvd0VzY2FwZSkge1xuICAgICAgaWYgKCFsb29wKSB7XG4gICAgICAgIHdhcm4oJ2B1c2VMaXN0TmF2aWdhdGlvbmAgbG9vcGluZyBtdXN0IGJlIGVuYWJsZWQgdG8gYWxsb3cgZXNjYXBpbmcuJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXZpcnR1YWwpIHtcbiAgICAgICAgd2FybignYHVzZUxpc3ROYXZpZ2F0aW9uYCBtdXN0IGJlIHZpcnR1YWwgdG8gYWxsb3cgZXNjYXBpbmcuJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiBjb2xzID4gMSkge1xuICAgICAgd2FybignSW4gZ3JpZCBsaXN0IG5hdmlnYXRpb24gbW9kZSAoYGNvbHNgID4gMSksIHRoZSBgb3JpZW50YXRpb25gIHNob3VsZCcsICdiZSBlaXRoZXIgXCJob3Jpem9udGFsXCIgb3IgXCJib3RoXCIuJyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBhcmVudElkID0gdXNlRmxvYXRpbmdQYXJlbnROb2RlSWQoKTtcbiAgY29uc3QgdHJlZSA9IHVzZUZsb2F0aW5nVHJlZSgpO1xuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlRWZmZWN0RXZlbnQodW5zdGFibGVfb25OYXZpZ2F0ZSk7XG4gIGNvbnN0IGZvY3VzSXRlbU9uT3BlblJlZiA9IFJlYWN0LnVzZVJlZihmb2N1c0l0ZW1Pbk9wZW4pO1xuICBjb25zdCBpbmRleFJlZiA9IFJlYWN0LnVzZVJlZihzZWxlY3RlZEluZGV4ICE9IG51bGwgPyBzZWxlY3RlZEluZGV4IDogLTEpO1xuICBjb25zdCBrZXlSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGlzUG9pbnRlck1vZGFsaXR5UmVmID0gUmVhY3QudXNlUmVmKHRydWUpO1xuICBjb25zdCBwcmV2aW91c09uTmF2aWdhdGVSZWYgPSBSZWFjdC51c2VSZWYob25OYXZpZ2F0ZSk7XG4gIGNvbnN0IHByZXZpb3VzTW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZighIWVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgY29uc3QgcHJldmlvdXNPcGVuUmVmID0gUmVhY3QudXNlUmVmKG9wZW4pO1xuICBjb25zdCBmb3JjZVN5bmNGb2N1cyA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGZvcmNlU2Nyb2xsSW50b1ZpZXdSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBkaXNhYmxlZEluZGljZXNSZWYgPSB1c2VMYXRlc3RSZWYoZGlzYWJsZWRJbmRpY2VzKTtcbiAgY29uc3QgbGF0ZXN0T3BlblJlZiA9IHVzZUxhdGVzdFJlZihvcGVuKTtcbiAgY29uc3Qgc2Nyb2xsSXRlbUludG9WaWV3UmVmID0gdXNlTGF0ZXN0UmVmKHNjcm9sbEl0ZW1JbnRvVmlldyk7XG4gIGNvbnN0IGZsb2F0aW5nUmVmID0gdXNlTGF0ZXN0UmVmKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgY29uc3Qgc2VsZWN0ZWRJbmRleFJlZiA9IHVzZUxhdGVzdFJlZihzZWxlY3RlZEluZGV4KTtcbiAgY29uc3QgW2FjdGl2ZUlkLCBzZXRBY3RpdmVJZF0gPSBSZWFjdC51c2VTdGF0ZSgpO1xuICBjb25zdCBbdmlydHVhbElkLCBzZXRWaXJ0dWFsSWRdID0gUmVhY3QudXNlU3RhdGUoKTtcbiAgY29uc3QgZm9jdXNJdGVtID0gdXNlRWZmZWN0RXZlbnQoZnVuY3Rpb24gKGxpc3RSZWYsIGluZGV4UmVmLCBmb3JjZVNjcm9sbEludG9WaWV3KSB7XG4gICAgaWYgKGZvcmNlU2Nyb2xsSW50b1ZpZXcgPT09IHZvaWQgMCkge1xuICAgICAgZm9yY2VTY3JvbGxJbnRvVmlldyA9IGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBydW5Gb2N1cyhpdGVtKSB7XG4gICAgICBpZiAodmlydHVhbCkge1xuICAgICAgICBzZXRBY3RpdmVJZChpdGVtLmlkKTtcbiAgICAgICAgdHJlZSA9PSBudWxsIHx8IHRyZWUuZXZlbnRzLmVtaXQoJ3ZpcnR1YWxmb2N1cycsIGl0ZW0pO1xuICAgICAgICBpZiAodmlydHVhbEl0ZW1SZWYpIHtcbiAgICAgICAgICB2aXJ0dWFsSXRlbVJlZi5jdXJyZW50ID0gaXRlbTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5xdWV1ZUZvY3VzKGl0ZW0sIHtcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlLFxuICAgICAgICAgIC8vIE1hYyBTYWZhcmkgZG9lcyBub3QgbW92ZSB0aGUgdmlydHVhbCBjdXJzb3IgdW5sZXNzIHRoZSBmb2N1cyBjYWxsXG4gICAgICAgICAgLy8gaXMgc3luYy4gSG93ZXZlciwgZm9yIHRoZSB2ZXJ5IGZpcnN0IGZvY3VzIGNhbGwsIHdlIG5lZWQgdG8gd2FpdFxuICAgICAgICAgIC8vIGZvciB0aGUgcG9zaXRpb24gdG8gYmUgcmVhZHkgaW4gb3JkZXIgdG8gcHJldmVudCB1bndhbnRlZFxuICAgICAgICAgIC8vIHNjcm9sbGluZy4gVGhpcyBtZWFucyB0aGUgdmlydHVhbCBjdXJzb3Igd2lsbCBub3QgbW92ZSB0byB0aGUgZmlyc3RcbiAgICAgICAgICAvLyBpdGVtIHdoZW4gZmlyc3Qgb3BlbmluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCwgYnV0IHdpbGwgb25cbiAgICAgICAgICAvLyBzdWJzZXF1ZW50IGNhbGxzLiBgcHJldmVudFNjcm9sbGAgaXMgc3VwcG9ydGVkIGluIG1vZGVybiBTYWZhcmksXG4gICAgICAgICAgLy8gc28gd2UgY2FuIHVzZSB0aGF0IGluc3RlYWQuXG4gICAgICAgICAgLy8gaU9TIFNhZmFyaSBtdXN0IGJlIGFzeW5jIG9yIHRoZSBmaXJzdCBpdGVtIHdpbGwgbm90IGJlIGZvY3VzZWQuXG4gICAgICAgICAgc3luYzogaXNNYWMoKSAmJiBpc1NhZmFyaSgpID8gaXNQcmV2ZW50U2Nyb2xsU3VwcG9ydGVkIHx8IGZvcmNlU3luY0ZvY3VzLmN1cnJlbnQgOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaW5pdGlhbEl0ZW0gPSBsaXN0UmVmLmN1cnJlbnRbaW5kZXhSZWYuY3VycmVudF07XG4gICAgaWYgKGluaXRpYWxJdGVtKSB7XG4gICAgICBydW5Gb2N1cyhpbml0aWFsSXRlbSk7XG4gICAgfVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBjb25zdCB3YWl0ZWRJdGVtID0gbGlzdFJlZi5jdXJyZW50W2luZGV4UmVmLmN1cnJlbnRdIHx8IGluaXRpYWxJdGVtO1xuICAgICAgaWYgKCF3YWl0ZWRJdGVtKSByZXR1cm47XG4gICAgICBpZiAoIWluaXRpYWxJdGVtKSB7XG4gICAgICAgIHJ1bkZvY3VzKHdhaXRlZEl0ZW0pO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2Nyb2xsSW50b1ZpZXdPcHRpb25zID0gc2Nyb2xsSXRlbUludG9WaWV3UmVmLmN1cnJlbnQ7XG4gICAgICBjb25zdCBzaG91bGRTY3JvbGxJbnRvVmlldyA9IHNjcm9sbEludG9WaWV3T3B0aW9ucyAmJiBpdGVtICYmIChmb3JjZVNjcm9sbEludG9WaWV3IHx8ICFpc1BvaW50ZXJNb2RhbGl0eVJlZi5jdXJyZW50KTtcbiAgICAgIGlmIChzaG91bGRTY3JvbGxJbnRvVmlldykge1xuICAgICAgICAvLyBKU0RPTSBkb2Vzbid0IHN1cHBvcnQgYC5zY3JvbGxJbnRvVmlldygpYCBidXQgaXQncyB3aWRlbHkgc3VwcG9ydGVkXG4gICAgICAgIC8vIGJ5IGFsbCBicm93c2Vycy5cbiAgICAgICAgd2FpdGVkSXRlbS5zY3JvbGxJbnRvVmlldyA9PSBudWxsIHx8IHdhaXRlZEl0ZW0uc2Nyb2xsSW50b1ZpZXcodHlwZW9mIHNjcm9sbEludG9WaWV3T3B0aW9ucyA9PT0gJ2Jvb2xlYW4nID8ge1xuICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgICAgaW5saW5lOiAnbmVhcmVzdCdcbiAgICAgICAgfSA6IHNjcm9sbEludG9WaWV3T3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuZm9jdXMoe1xuICAgICAgZ2V0IHByZXZlbnRTY3JvbGwoKSB7XG4gICAgICAgIGlzUHJldmVudFNjcm9sbFN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW10pO1xuXG4gIC8vIFN5bmMgYHNlbGVjdGVkSW5kZXhgIHRvIGJlIHRoZSBgYWN0aXZlSW5kZXhgIHVwb24gb3BlbmluZyB0aGUgZmxvYXRpbmdcbiAgLy8gZWxlbWVudC4gQWxzbywgcmVzZXQgYGFjdGl2ZUluZGV4YCB1cG9uIGNsb3NpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQuXG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgICBpZiAob3BlbiAmJiBlbGVtZW50cy5mbG9hdGluZykge1xuICAgICAgaWYgKGZvY3VzSXRlbU9uT3BlblJlZi5jdXJyZW50ICYmIHNlbGVjdGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgICAvLyBSZWdhcmRsZXNzIG9mIHRoZSBwb2ludGVyIG1vZGFsaXR5LCB3ZSB3YW50IHRvIGVuc3VyZSB0aGUgc2VsZWN0ZWRcbiAgICAgICAgLy8gaXRlbSBjb21lcyBpbnRvIHZpZXcgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyBvcGVuZWQuXG4gICAgICAgIGZvcmNlU2Nyb2xsSW50b1ZpZXdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICBvbk5hdmlnYXRlKHNlbGVjdGVkSW5kZXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJldmlvdXNNb3VudGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIFNpbmNlIHRoZSB1c2VyIGNhbiBzcGVjaWZ5IGBvbk5hdmlnYXRlYCBjb25kaXRpb25hbGx5XG4gICAgICAvLyAob25OYXZpZ2F0ZTogb3BlbiA/IHNldEFjdGl2ZUluZGV4IDogc2V0U2VsZWN0ZWRJbmRleCksXG4gICAgICAvLyB3ZSBzdG9yZSBhbmQgY2FsbCB0aGUgcHJldmlvdXMgZnVuY3Rpb24uXG4gICAgICBpbmRleFJlZi5jdXJyZW50ID0gLTE7XG4gICAgICBwcmV2aW91c09uTmF2aWdhdGVSZWYuY3VycmVudChudWxsKTtcbiAgICB9XG4gIH0sIFtlbmFibGVkLCBvcGVuLCBlbGVtZW50cy5mbG9hdGluZywgc2VsZWN0ZWRJbmRleCwgb25OYXZpZ2F0ZV0pO1xuXG4gIC8vIFN5bmMgYGFjdGl2ZUluZGV4YCB0byBiZSB0aGUgZm9jdXNlZCBpdGVtIHdoaWxlIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzXG4gIC8vIG9wZW4uXG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgICBpZiAob3BlbiAmJiBlbGVtZW50cy5mbG9hdGluZykge1xuICAgICAgaWYgKGFjdGl2ZUluZGV4ID09IG51bGwpIHtcbiAgICAgICAgZm9yY2VTeW5jRm9jdXMuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleFJlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXNldCB3aGlsZSB0aGUgZmxvYXRpbmcgZWxlbWVudCB3YXMgb3BlbiAoZS5nLiB0aGUgbGlzdCBjaGFuZ2VkKS5cbiAgICAgICAgaWYgKHByZXZpb3VzTW91bnRlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IC0xO1xuICAgICAgICAgIGZvY3VzSXRlbShsaXN0UmVmLCBpbmRleFJlZik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0aWFsIHN5bmMuXG4gICAgICAgIGlmICgoIXByZXZpb3VzT3BlblJlZi5jdXJyZW50IHx8ICFwcmV2aW91c01vdW50ZWRSZWYuY3VycmVudCkgJiYgZm9jdXNJdGVtT25PcGVuUmVmLmN1cnJlbnQgJiYgKGtleVJlZi5jdXJyZW50ICE9IG51bGwgfHwgZm9jdXNJdGVtT25PcGVuUmVmLmN1cnJlbnQgPT09IHRydWUgJiYga2V5UmVmLmN1cnJlbnQgPT0gbnVsbCkpIHtcbiAgICAgICAgICBsZXQgcnVucyA9IDA7XG4gICAgICAgICAgY29uc3Qgd2FpdEZvckxpc3RQb3B1bGF0ZWQgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAobGlzdFJlZi5jdXJyZW50WzBdID09IG51bGwpIHtcbiAgICAgICAgICAgICAgLy8gQXZvaWQgbGV0dGluZyB0aGUgYnJvd3NlciBwYWludCBpZiBwb3NzaWJsZSBvbiB0aGUgZmlyc3QgdHJ5LFxuICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgdXNlIHJBRi4gRG9uJ3QgdHJ5IG1vcmUgdGhhbiB0d2ljZSwgc2luY2Ugc29tZXRoaW5nXG4gICAgICAgICAgICAgIC8vIGlzIHdyb25nIG90aGVyd2lzZS5cbiAgICAgICAgICAgICAgaWYgKHJ1bnMgPCAyKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NoZWR1bGVyID0gcnVucyA/IHJlcXVlc3RBbmltYXRpb25GcmFtZSA6IHF1ZXVlTWljcm90YXNrO1xuICAgICAgICAgICAgICAgIHNjaGVkdWxlcih3YWl0Rm9yTGlzdFBvcHVsYXRlZCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcnVucysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IGtleVJlZi5jdXJyZW50ID09IG51bGwgfHwgaXNNYWluT3JpZW50YXRpb25Ub0VuZEtleShrZXlSZWYuY3VycmVudCwgb3JpZW50YXRpb24sIHJ0bCkgfHwgbmVzdGVkID8gZ2V0TWluSW5kZXgobGlzdFJlZiwgZGlzYWJsZWRJbmRpY2VzUmVmLmN1cnJlbnQpIDogZ2V0TWF4SW5kZXgobGlzdFJlZiwgZGlzYWJsZWRJbmRpY2VzUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICBrZXlSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgIG9uTmF2aWdhdGUoaW5kZXhSZWYuY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICB3YWl0Rm9yTGlzdFBvcHVsYXRlZCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFpc0luZGV4T3V0T2ZCb3VuZHMobGlzdFJlZiwgYWN0aXZlSW5kZXgpKSB7XG4gICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBhY3RpdmVJbmRleDtcbiAgICAgICAgZm9jdXNJdGVtKGxpc3RSZWYsIGluZGV4UmVmLCBmb3JjZVNjcm9sbEludG9WaWV3UmVmLmN1cnJlbnQpO1xuICAgICAgICBmb3JjZVNjcm9sbEludG9WaWV3UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlbmFibGVkLCBvcGVuLCBlbGVtZW50cy5mbG9hdGluZywgYWN0aXZlSW5kZXgsIHNlbGVjdGVkSW5kZXhSZWYsIG5lc3RlZCwgbGlzdFJlZiwgb3JpZW50YXRpb24sIHJ0bCwgb25OYXZpZ2F0ZSwgZm9jdXNJdGVtLCBkaXNhYmxlZEluZGljZXNSZWZdKTtcblxuICAvLyBFbnN1cmUgdGhlIHBhcmVudCBmbG9hdGluZyBlbGVtZW50IGhhcyBmb2N1cyB3aGVuIGEgbmVzdGVkIGNoaWxkIGNsb3Nlc1xuICAvLyB0byBhbGxvdyBhcnJvdyBrZXkgbmF2aWdhdGlvbiB0byB3b3JrIGFmdGVyIHRoZSBwb2ludGVyIGxlYXZlcyB0aGUgY2hpbGQuXG4gIGluZGV4KCgpID0+IHtcbiAgICB2YXIgX25vZGVzJGZpbmQ7XG4gICAgaWYgKCFlbmFibGVkIHx8IGVsZW1lbnRzLmZsb2F0aW5nIHx8ICF0cmVlIHx8IHZpcnR1YWwgfHwgIXByZXZpb3VzTW91bnRlZFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5vZGVzID0gdHJlZS5ub2Rlc1JlZi5jdXJyZW50O1xuICAgIGNvbnN0IHBhcmVudCA9IChfbm9kZXMkZmluZCA9IG5vZGVzLmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBwYXJlbnRJZCkpID09IG51bGwgfHwgKF9ub2RlcyRmaW5kID0gX25vZGVzJGZpbmQuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlcyRmaW5kLmVsZW1lbnRzLmZsb2F0aW5nO1xuICAgIGNvbnN0IGFjdGl2ZUVsID0gYWN0aXZlRWxlbWVudChnZXREb2N1bWVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgIGNvbnN0IHRyZWVDb250YWluc0FjdGl2ZUVsID0gbm9kZXMuc29tZShub2RlID0+IG5vZGUuY29udGV4dCAmJiBjb250YWlucyhub2RlLmNvbnRleHQuZWxlbWVudHMuZmxvYXRpbmcsIGFjdGl2ZUVsKSk7XG4gICAgaWYgKHBhcmVudCAmJiAhdHJlZUNvbnRhaW5zQWN0aXZlRWwgJiYgaXNQb2ludGVyTW9kYWxpdHlSZWYuY3VycmVudCkge1xuICAgICAgcGFyZW50LmZvY3VzKHtcbiAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgZWxlbWVudHMuZmxvYXRpbmcsIHRyZWUsIHBhcmVudElkLCB2aXJ0dWFsXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIXRyZWUpIHJldHVybjtcbiAgICBpZiAoIXZpcnR1YWwpIHJldHVybjtcbiAgICBpZiAocGFyZW50SWQpIHJldHVybjtcbiAgICBmdW5jdGlvbiBoYW5kbGVWaXJ0dWFsRm9jdXMoaXRlbSkge1xuICAgICAgc2V0VmlydHVhbElkKGl0ZW0uaWQpO1xuICAgICAgaWYgKHZpcnR1YWxJdGVtUmVmKSB7XG4gICAgICAgIHZpcnR1YWxJdGVtUmVmLmN1cnJlbnQgPSBpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgICB0cmVlLmV2ZW50cy5vbigndmlydHVhbGZvY3VzJywgaGFuZGxlVmlydHVhbEZvY3VzKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdHJlZS5ldmVudHMub2ZmKCd2aXJ0dWFsZm9jdXMnLCBoYW5kbGVWaXJ0dWFsRm9jdXMpO1xuICAgIH07XG4gIH0sIFtlbmFibGVkLCB0cmVlLCB2aXJ0dWFsLCBwYXJlbnRJZCwgdmlydHVhbEl0ZW1SZWZdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIHByZXZpb3VzT25OYXZpZ2F0ZVJlZi5jdXJyZW50ID0gb25OYXZpZ2F0ZTtcbiAgICBwcmV2aW91c01vdW50ZWRSZWYuY3VycmVudCA9ICEhZWxlbWVudHMuZmxvYXRpbmc7XG4gIH0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFvcGVuKSB7XG4gICAgICBrZXlSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICB9LCBbb3Blbl0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgcHJldmlvdXNPcGVuUmVmLmN1cnJlbnQgPSBvcGVuO1xuICB9LCBbb3Blbl0pO1xuICBjb25zdCBoYXNBY3RpdmVJbmRleCA9IGFjdGl2ZUluZGV4ICE9IG51bGw7XG4gIGNvbnN0IGl0ZW0gPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBmdW5jdGlvbiBzeW5jQ3VycmVudFRhcmdldChjdXJyZW50VGFyZ2V0KSB7XG4gICAgICBpZiAoIW9wZW4pIHJldHVybjtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdFJlZi5jdXJyZW50LmluZGV4T2YoY3VycmVudFRhcmdldCk7XG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIG9uTmF2aWdhdGUoaW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIG9uRm9jdXMoX3JlZikge1xuICAgICAgICBsZXQge1xuICAgICAgICAgIGN1cnJlbnRUYXJnZXRcbiAgICAgICAgfSA9IF9yZWY7XG4gICAgICAgIHN5bmNDdXJyZW50VGFyZ2V0KGN1cnJlbnRUYXJnZXQpO1xuICAgICAgfSxcbiAgICAgIG9uQ2xpY2s6IF9yZWYyID0+IHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBjdXJyZW50VGFyZ2V0XG4gICAgICAgIH0gPSBfcmVmMjtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRUYXJnZXQuZm9jdXMoe1xuICAgICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgLy8gU2FmYXJpXG4gICAgICAuLi4oZm9jdXNJdGVtT25Ib3ZlciAmJiB7XG4gICAgICAgIG9uTW91c2VNb3ZlKF9yZWYzKSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGN1cnJlbnRUYXJnZXRcbiAgICAgICAgICB9ID0gX3JlZjM7XG4gICAgICAgICAgc3luY0N1cnJlbnRUYXJnZXQoY3VycmVudFRhcmdldCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUG9pbnRlckxlYXZlKF9yZWY0KSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIHBvaW50ZXJUeXBlXG4gICAgICAgICAgfSA9IF9yZWY0O1xuICAgICAgICAgIGlmICghaXNQb2ludGVyTW9kYWxpdHlSZWYuY3VycmVudCB8fCBwb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gLTE7XG4gICAgICAgICAgZm9jdXNJdGVtKGxpc3RSZWYsIGluZGV4UmVmKTtcbiAgICAgICAgICBvbk5hdmlnYXRlKG51bGwpO1xuICAgICAgICAgIGlmICghdmlydHVhbCkge1xuICAgICAgICAgICAgZW5xdWV1ZUZvY3VzKGZsb2F0aW5nUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH07XG4gICAgcmV0dXJuIHByb3BzO1xuICB9LCBbb3BlbiwgZmxvYXRpbmdSZWYsIGZvY3VzSXRlbSwgZm9jdXNJdGVtT25Ib3ZlciwgbGlzdFJlZiwgb25OYXZpZ2F0ZSwgdmlydHVhbF0pO1xuICBjb25zdCBjb21tb25PbktleURvd24gPSB1c2VFZmZlY3RFdmVudChldmVudCA9PiB7XG4gICAgaXNQb2ludGVyTW9kYWxpdHlSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIGZvcmNlU3luY0ZvY3VzLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgLy8gSWYgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgYW5pbWF0aW5nIG91dCwgaWdub3JlIG5hdmlnYXRpb24uIE90aGVyd2lzZSxcbiAgICAvLyB0aGUgYGFjdGl2ZUluZGV4YCBnZXRzIHNldCB0byAwIGRlc3BpdGUgbm90IGJlaW5nIG9wZW4gc28gdGhlIG5leHQgdGltZVxuICAgIC8vIHRoZSB1c2VyIEFycm93RG93bnMsIHRoZSBmaXJzdCBpdGVtIHdvbid0IGJlIGZvY3VzZWQuXG4gICAgaWYgKCFsYXRlc3RPcGVuUmVmLmN1cnJlbnQgJiYgZXZlbnQuY3VycmVudFRhcmdldCA9PT0gZmxvYXRpbmdSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmVzdGVkICYmIGlzQ3Jvc3NPcmllbnRhdGlvbkNsb3NlS2V5KGV2ZW50LmtleSwgb3JpZW50YXRpb24sIHJ0bCkpIHtcbiAgICAgIHN0b3BFdmVudChldmVudCk7XG4gICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnbGlzdC1uYXZpZ2F0aW9uJyk7XG4gICAgICBpZiAoaXNIVE1MRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpICYmICF2aXJ0dWFsKSB7XG4gICAgICAgIGVsZW1lbnRzLmRvbVJlZmVyZW5jZS5mb2N1cygpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSBpbmRleFJlZi5jdXJyZW50O1xuICAgIGNvbnN0IG1pbkluZGV4ID0gZ2V0TWluSW5kZXgobGlzdFJlZiwgZGlzYWJsZWRJbmRpY2VzKTtcbiAgICBjb25zdCBtYXhJbmRleCA9IGdldE1heEluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlcyk7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0hvbWUnKSB7XG4gICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgaW5kZXhSZWYuY3VycmVudCA9IG1pbkluZGV4O1xuICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICB9XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VuZCcpIHtcbiAgICAgIHN0b3BFdmVudChldmVudCk7XG4gICAgICBpbmRleFJlZi5jdXJyZW50ID0gbWF4SW5kZXg7XG4gICAgICBvbk5hdmlnYXRlKGluZGV4UmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIC8vIEdyaWQgbmF2aWdhdGlvbi5cbiAgICBpZiAoY29scyA+IDEpIHtcbiAgICAgIGNvbnN0IHNpemVzID0gaXRlbVNpemVzIHx8IEFycmF5LmZyb20oe1xuICAgICAgICBsZW5ndGg6IGxpc3RSZWYuY3VycmVudC5sZW5ndGhcbiAgICAgIH0sICgpID0+ICh7XG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgICBoZWlnaHQ6IDFcbiAgICAgIH0pKTtcbiAgICAgIC8vIFRvIGNhbGN1bGF0ZSBtb3ZlbWVudHMgb24gdGhlIGdyaWQsIHdlIHVzZSBoeXBvdGhldGljYWwgY2VsbCBpbmRpY2VzXG4gICAgICAvLyBhcyBpZiBldmVyeSBpdGVtIHdhcyAxeDEsIHRoZW4gY29udmVydCBiYWNrIHRvIHJlYWwgaW5kaWNlcy5cbiAgICAgIGNvbnN0IGNlbGxNYXAgPSBidWlsZENlbGxNYXAoc2l6ZXMsIGNvbHMsIGRlbnNlKTtcbiAgICAgIGNvbnN0IG1pbkdyaWRJbmRleCA9IGNlbGxNYXAuZmluZEluZGV4KGluZGV4ID0+IGluZGV4ICE9IG51bGwgJiYgIWlzRGlzYWJsZWQobGlzdFJlZi5jdXJyZW50LCBpbmRleCwgZGlzYWJsZWRJbmRpY2VzKSk7XG4gICAgICAvLyBsYXN0IGVuYWJsZWQgaW5kZXhcbiAgICAgIGNvbnN0IG1heEdyaWRJbmRleCA9IGNlbGxNYXAucmVkdWNlKChmb3VuZEluZGV4LCBpbmRleCwgY2VsbEluZGV4KSA9PiBpbmRleCAhPSBudWxsICYmICFpc0Rpc2FibGVkKGxpc3RSZWYuY3VycmVudCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykgPyBjZWxsSW5kZXggOiBmb3VuZEluZGV4LCAtMSk7XG4gICAgICBpbmRleFJlZi5jdXJyZW50ID0gY2VsbE1hcFtnZXRHcmlkTmF2aWdhdGVkSW5kZXgoe1xuICAgICAgICBjdXJyZW50OiBjZWxsTWFwLm1hcChpdGVtSW5kZXggPT4gaXRlbUluZGV4ICE9IG51bGwgPyBsaXN0UmVmLmN1cnJlbnRbaXRlbUluZGV4XSA6IG51bGwpXG4gICAgICB9LCB7XG4gICAgICAgIGV2ZW50LFxuICAgICAgICBvcmllbnRhdGlvbixcbiAgICAgICAgbG9vcCxcbiAgICAgICAgY29scyxcbiAgICAgICAgLy8gdHJlYXQgdW5kZWZpbmVkIChlbXB0eSBncmlkIHNwYWNlcykgYXMgZGlzYWJsZWQgaW5kaWNlcyBzbyB3ZVxuICAgICAgICAvLyBkb24ndCBlbmQgdXAgaW4gdGhlbVxuICAgICAgICBkaXNhYmxlZEluZGljZXM6IGdldENlbGxJbmRpY2VzKFsuLi4oZGlzYWJsZWRJbmRpY2VzIHx8IGxpc3RSZWYuY3VycmVudC5tYXAoKF8sIGluZGV4KSA9PiBpc0Rpc2FibGVkKGxpc3RSZWYuY3VycmVudCwgaW5kZXgpID8gaW5kZXggOiB1bmRlZmluZWQpKSwgdW5kZWZpbmVkXSwgY2VsbE1hcCksXG4gICAgICAgIG1pbkluZGV4OiBtaW5HcmlkSW5kZXgsXG4gICAgICAgIG1heEluZGV4OiBtYXhHcmlkSW5kZXgsXG4gICAgICAgIHByZXZJbmRleDogZ2V0Q2VsbEluZGV4T2ZDb3JuZXIoaW5kZXhSZWYuY3VycmVudCA+IG1heEluZGV4ID8gbWluSW5kZXggOiBpbmRleFJlZi5jdXJyZW50LCBzaXplcywgY2VsbE1hcCwgY29scyxcbiAgICAgICAgLy8gdXNlIGEgY29ybmVyIG1hdGNoaW5nIHRoZSBlZGdlIGNsb3Nlc3QgdG8gdGhlIGRpcmVjdGlvblxuICAgICAgICAvLyB3ZSdyZSBtb3ZpbmcgaW4gc28gd2UgZG9uJ3QgZW5kIHVwIGluIHRoZSBzYW1lIGl0ZW0uIFByZWZlclxuICAgICAgICAvLyB0b3AvbGVmdCBvdmVyIGJvdHRvbS9yaWdodC5cbiAgICAgICAgZXZlbnQua2V5ID09PSBBUlJPV19ET1dOID8gJ2JsJyA6IGV2ZW50LmtleSA9PT0gQVJST1dfUklHSFQgPyAndHInIDogJ3RsJyksXG4gICAgICAgIHN0b3BFdmVudDogdHJ1ZVxuICAgICAgfSldOyAvLyBuYXZpZ2F0ZWQgY2VsbCB3aWxsIG5ldmVyIGJlIG51bGxpc2hcblxuICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgIGlmIChvcmllbnRhdGlvbiA9PT0gJ2JvdGgnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzTWFpbk9yaWVudGF0aW9uS2V5KGV2ZW50LmtleSwgb3JpZW50YXRpb24pKSB7XG4gICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuXG4gICAgICAvLyBSZXNldCB0aGUgaW5kZXggaWYgbm8gaXRlbSBpcyBmb2N1c2VkLlxuICAgICAgaWYgKG9wZW4gJiYgIXZpcnR1YWwgJiYgYWN0aXZlRWxlbWVudChldmVudC5jdXJyZW50VGFyZ2V0Lm93bmVyRG9jdW1lbnQpID09PSBldmVudC5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBpc01haW5PcmllbnRhdGlvblRvRW5kS2V5KGV2ZW50LmtleSwgb3JpZW50YXRpb24sIHJ0bCkgPyBtaW5JbmRleCA6IG1heEluZGV4O1xuICAgICAgICBvbk5hdmlnYXRlKGluZGV4UmVmLmN1cnJlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaXNNYWluT3JpZW50YXRpb25Ub0VuZEtleShldmVudC5rZXksIG9yaWVudGF0aW9uLCBydGwpKSB7XG4gICAgICAgIGlmIChsb29wKSB7XG4gICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IGN1cnJlbnRJbmRleCA+PSBtYXhJbmRleCA/IGFsbG93RXNjYXBlICYmIGN1cnJlbnRJbmRleCAhPT0gbGlzdFJlZi5jdXJyZW50Lmxlbmd0aCA/IC0xIDogbWluSW5kZXggOiBmaW5kTm9uRGlzYWJsZWRJbmRleChsaXN0UmVmLCB7XG4gICAgICAgICAgICBzdGFydGluZ0luZGV4OiBjdXJyZW50SW5kZXgsXG4gICAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gTWF0aC5taW4obWF4SW5kZXgsIGZpbmROb25EaXNhYmxlZEluZGV4KGxpc3RSZWYsIHtcbiAgICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IGN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGxvb3ApIHtcbiAgICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gY3VycmVudEluZGV4IDw9IG1pbkluZGV4ID8gYWxsb3dFc2NhcGUgJiYgY3VycmVudEluZGV4ICE9PSAtMSA/IGxpc3RSZWYuY3VycmVudC5sZW5ndGggOiBtYXhJbmRleCA6IGZpbmROb25EaXNhYmxlZEluZGV4KGxpc3RSZWYsIHtcbiAgICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IGN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBNYXRoLm1heChtaW5JbmRleCwgZmluZE5vbkRpc2FibGVkSW5kZXgobGlzdFJlZiwge1xuICAgICAgICAgICAgc3RhcnRpbmdJbmRleDogY3VycmVudEluZGV4LFxuICAgICAgICAgICAgZGVjcmVtZW50OiB0cnVlLFxuICAgICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNJbmRleE91dE9mQm91bmRzKGxpc3RSZWYsIGluZGV4UmVmLmN1cnJlbnQpKSB7XG4gICAgICAgIG9uTmF2aWdhdGUobnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbk5hdmlnYXRlKGluZGV4UmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGFyaWFBY3RpdmVEZXNjZW5kYW50UHJvcCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB2aXJ0dWFsICYmIG9wZW4gJiYgaGFzQWN0aXZlSW5kZXggJiYge1xuICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IHZpcnR1YWxJZCB8fCBhY3RpdmVJZFxuICAgIH07XG4gIH0sIFt2aXJ0dWFsLCBvcGVuLCBoYXNBY3RpdmVJbmRleCwgdmlydHVhbElkLCBhY3RpdmVJZF0pO1xuICBjb25zdCBmbG9hdGluZyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAnYXJpYS1vcmllbnRhdGlvbic6IG9yaWVudGF0aW9uID09PSAnYm90aCcgPyB1bmRlZmluZWQgOiBvcmllbnRhdGlvbixcbiAgICAgIC4uLighaXNUeXBlYWJsZUNvbWJvYm94KGVsZW1lbnRzLmRvbVJlZmVyZW5jZSkgJiYgYXJpYUFjdGl2ZURlc2NlbmRhbnRQcm9wKSxcbiAgICAgIG9uS2V5RG93bjogY29tbW9uT25LZXlEb3duLFxuICAgICAgb25Qb2ludGVyTW92ZSgpIHtcbiAgICAgICAgaXNQb2ludGVyTW9kYWxpdHlSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2FyaWFBY3RpdmVEZXNjZW5kYW50UHJvcCwgY29tbW9uT25LZXlEb3duLCBlbGVtZW50cy5kb21SZWZlcmVuY2UsIG9yaWVudGF0aW9uXSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGZ1bmN0aW9uIGNoZWNrVmlydHVhbE1vdXNlKGV2ZW50KSB7XG4gICAgICBpZiAoZm9jdXNJdGVtT25PcGVuID09PSAnYXV0bycgJiYgaXNWaXJ0dWFsQ2xpY2soZXZlbnQubmF0aXZlRXZlbnQpKSB7XG4gICAgICAgIGZvY3VzSXRlbU9uT3BlblJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tWaXJ0dWFsUG9pbnRlcihldmVudCkge1xuICAgICAgLy8gYHBvaW50ZXJkb3duYCBmaXJlcyBmaXJzdCwgcmVzZXQgdGhlIHN0YXRlIHRoZW4gcGVyZm9ybSB0aGUgY2hlY2tzLlxuICAgICAgZm9jdXNJdGVtT25PcGVuUmVmLmN1cnJlbnQgPSBmb2N1c0l0ZW1Pbk9wZW47XG4gICAgICBpZiAoZm9jdXNJdGVtT25PcGVuID09PSAnYXV0bycgJiYgaXNWaXJ0dWFsUG9pbnRlckV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KSkge1xuICAgICAgICBmb2N1c0l0ZW1Pbk9wZW5SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi5hcmlhQWN0aXZlRGVzY2VuZGFudFByb3AsXG4gICAgICBvbktleURvd24oZXZlbnQpIHtcbiAgICAgICAgaXNQb2ludGVyTW9kYWxpdHlSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBpc0Fycm93S2V5ID0gZXZlbnQua2V5LmluZGV4T2YoJ0Fycm93JykgPT09IDA7XG4gICAgICAgIGNvbnN0IGlzQ3Jvc3NPcGVuS2V5ID0gaXNDcm9zc09yaWVudGF0aW9uT3BlbktleShldmVudC5rZXksIG9yaWVudGF0aW9uLCBydGwpO1xuICAgICAgICBjb25zdCBpc0Nyb3NzQ2xvc2VLZXkgPSBpc0Nyb3NzT3JpZW50YXRpb25DbG9zZUtleShldmVudC5rZXksIG9yaWVudGF0aW9uLCBydGwpO1xuICAgICAgICBjb25zdCBpc01haW5LZXkgPSBpc01haW5PcmllbnRhdGlvbktleShldmVudC5rZXksIG9yaWVudGF0aW9uKTtcbiAgICAgICAgY29uc3QgaXNOYXZpZ2F0aW9uS2V5ID0gKG5lc3RlZCA/IGlzQ3Jvc3NPcGVuS2V5IDogaXNNYWluS2V5KSB8fCBldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5LnRyaW0oKSA9PT0gJyc7XG4gICAgICAgIGlmICh2aXJ0dWFsICYmIG9wZW4pIHtcbiAgICAgICAgICBjb25zdCByb290Tm9kZSA9IHRyZWUgPT0gbnVsbCA/IHZvaWQgMCA6IHRyZWUubm9kZXNSZWYuY3VycmVudC5maW5kKG5vZGUgPT4gbm9kZS5wYXJlbnRJZCA9PSBudWxsKTtcbiAgICAgICAgICBjb25zdCBkZWVwZXN0Tm9kZSA9IHRyZWUgJiYgcm9vdE5vZGUgPyBnZXREZWVwZXN0Tm9kZSh0cmVlLm5vZGVzUmVmLmN1cnJlbnQsIHJvb3ROb2RlLmlkKSA6IG51bGw7XG4gICAgICAgICAgaWYgKGlzQXJyb3dLZXkgJiYgZGVlcGVzdE5vZGUgJiYgdmlydHVhbEl0ZW1SZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50T2JqZWN0ID0gbmV3IEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB7XG4gICAgICAgICAgICAgIGtleTogZXZlbnQua2V5LFxuICAgICAgICAgICAgICBidWJibGVzOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChpc0Nyb3NzT3BlbktleSB8fCBpc0Nyb3NzQ2xvc2VLZXkpIHtcbiAgICAgICAgICAgICAgdmFyIF9kZWVwZXN0Tm9kZSRjb250ZXh0LCBfZGVlcGVzdE5vZGUkY29udGV4dDI7XG4gICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudFRhcmdldCA9ICgoX2RlZXBlc3ROb2RlJGNvbnRleHQgPSBkZWVwZXN0Tm9kZS5jb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX2RlZXBlc3ROb2RlJGNvbnRleHQuZWxlbWVudHMuZG9tUmVmZXJlbmNlKSA9PT0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgICAgY29uc3QgZGlzcGF0Y2hJdGVtID0gaXNDcm9zc0Nsb3NlS2V5ICYmICFpc0N1cnJlbnRUYXJnZXQgPyAoX2RlZXBlc3ROb2RlJGNvbnRleHQyID0gZGVlcGVzdE5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kZWVwZXN0Tm9kZSRjb250ZXh0Mi5lbGVtZW50cy5kb21SZWZlcmVuY2UgOiBpc0Nyb3NzT3BlbktleSA/IGxpc3RSZWYuY3VycmVudC5maW5kKGl0ZW0gPT4gKGl0ZW0gPT0gbnVsbCA/IHZvaWQgMCA6IGl0ZW0uaWQpID09PSBhY3RpdmVJZCkgOiBudWxsO1xuICAgICAgICAgICAgICBpZiAoZGlzcGF0Y2hJdGVtKSB7XG4gICAgICAgICAgICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaEl0ZW0uZGlzcGF0Y2hFdmVudChldmVudE9iamVjdCk7XG4gICAgICAgICAgICAgICAgc2V0VmlydHVhbElkKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc01haW5LZXkgJiYgZGVlcGVzdE5vZGUuY29udGV4dCkge1xuICAgICAgICAgICAgICBpZiAoZGVlcGVzdE5vZGUuY29udGV4dC5vcGVuICYmIGRlZXBlc3ROb2RlLnBhcmVudElkICYmIGV2ZW50LmN1cnJlbnRUYXJnZXQgIT09IGRlZXBlc3ROb2RlLmNvbnRleHQuZWxlbWVudHMuZG9tUmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9kZWVwZXN0Tm9kZSRjb250ZXh0JDtcbiAgICAgICAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIChfZGVlcGVzdE5vZGUkY29udGV4dCQgPSBkZWVwZXN0Tm9kZS5jb250ZXh0LmVsZW1lbnRzLmRvbVJlZmVyZW5jZSkgPT0gbnVsbCB8fCBfZGVlcGVzdE5vZGUkY29udGV4dCQuZGlzcGF0Y2hFdmVudChldmVudE9iamVjdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjb21tb25PbktleURvd24oZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgYSBmbG9hdGluZyBlbGVtZW50IHNob3VsZCBub3Qgb3BlbiBvbiBhcnJvdyBrZXkgZG93biwgYXZvaWRcbiAgICAgICAgLy8gc2V0dGluZyBgYWN0aXZlSW5kZXhgIHdoaWxlIGl0J3MgY2xvc2VkLlxuICAgICAgICBpZiAoIW9wZW4gJiYgIW9wZW5PbkFycm93S2V5RG93biAmJiBpc0Fycm93S2V5KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc05hdmlnYXRpb25LZXkpIHtcbiAgICAgICAgICBrZXlSZWYuY3VycmVudCA9IG5lc3RlZCAmJiBpc01haW5LZXkgPyBudWxsIDogZXZlbnQua2V5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXN0ZWQpIHtcbiAgICAgICAgICBpZiAoaXNDcm9zc09wZW5LZXkpIHtcbiAgICAgICAgICAgIHN0b3BFdmVudChldmVudCk7XG4gICAgICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gZ2V0TWluSW5kZXgobGlzdFJlZiwgZGlzYWJsZWRJbmRpY2VzUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICBvbk5hdmlnYXRlKGluZGV4UmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnbGlzdC1uYXZpZ2F0aW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNNYWluS2V5KSB7XG4gICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IHNlbGVjdGVkSW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0b3BFdmVudChldmVudCk7XG4gICAgICAgICAgaWYgKCFvcGVuICYmIG9wZW5PbkFycm93S2V5RG93bikge1xuICAgICAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnbGlzdC1uYXZpZ2F0aW9uJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbW1vbk9uS2V5RG93bihldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgICBvbk5hdmlnYXRlKGluZGV4UmVmLmN1cnJlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uRm9jdXMoKSB7XG4gICAgICAgIGlmIChvcGVuICYmICF2aXJ0dWFsKSB7XG4gICAgICAgICAgb25OYXZpZ2F0ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uUG9pbnRlckRvd246IGNoZWNrVmlydHVhbFBvaW50ZXIsXG4gICAgICBvbk1vdXNlRG93bjogY2hlY2tWaXJ0dWFsTW91c2UsXG4gICAgICBvbkNsaWNrOiBjaGVja1ZpcnR1YWxNb3VzZVxuICAgIH07XG4gIH0sIFthY3RpdmVJZCwgYXJpYUFjdGl2ZURlc2NlbmRhbnRQcm9wLCBjb21tb25PbktleURvd24sIGRpc2FibGVkSW5kaWNlc1JlZiwgZm9jdXNJdGVtT25PcGVuLCBsaXN0UmVmLCBuZXN0ZWQsIG9uTmF2aWdhdGUsIG9uT3BlbkNoYW5nZSwgb3Blbiwgb3Blbk9uQXJyb3dLZXlEb3duLCBvcmllbnRhdGlvbiwgcnRsLCBzZWxlY3RlZEluZGV4LCB0cmVlLCB2aXJ0dWFsLCB2aXJ0dWFsSXRlbVJlZl0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZyxcbiAgICBpdGVtXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZSwgZmxvYXRpbmcsIGl0ZW1dKTtcbn1cblxuY29uc3QgY29tcG9uZW50Um9sZVRvQXJpYVJvbGVNYXAgPSAvKiNfX1BVUkVfXyovbmV3IE1hcChbWydzZWxlY3QnLCAnbGlzdGJveCddLCBbJ2NvbWJvYm94JywgJ2xpc3Rib3gnXSwgWydsYWJlbCcsIGZhbHNlXV0pO1xuXG4vKipcbiAqIEFkZHMgYmFzZSBzY3JlZW4gcmVhZGVyIHByb3BzIHRvIHRoZSByZWZlcmVuY2UgYW5kIGZsb2F0aW5nIGVsZW1lbnRzIGZvciBhXG4gKiBnaXZlbiBmbG9hdGluZyBlbGVtZW50IGByb2xlYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VSb2xlXG4gKi9cbmZ1bmN0aW9uIHVzZVJvbGUoY29udGV4dCwgcHJvcHMpIHtcbiAgdmFyIF9jb21wb25lbnRSb2xlVG9BcmlhUjtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIGZsb2F0aW5nSWRcbiAgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBlbmFibGVkID0gdHJ1ZSxcbiAgICByb2xlID0gJ2RpYWxvZydcbiAgfSA9IHByb3BzO1xuICBjb25zdCBhcmlhUm9sZSA9IChfY29tcG9uZW50Um9sZVRvQXJpYVIgPSBjb21wb25lbnRSb2xlVG9BcmlhUm9sZU1hcC5nZXQocm9sZSkpICE9IG51bGwgPyBfY29tcG9uZW50Um9sZVRvQXJpYVIgOiByb2xlO1xuICBjb25zdCByZWZlcmVuY2VJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IHBhcmVudElkID0gdXNlRmxvYXRpbmdQYXJlbnROb2RlSWQoKTtcbiAgY29uc3QgaXNOZXN0ZWQgPSBwYXJlbnRJZCAhPSBudWxsO1xuICBjb25zdCByZWZlcmVuY2UgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoYXJpYVJvbGUgPT09ICd0b29sdGlwJyB8fCByb2xlID09PSAnbGFiZWwnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbXCJhcmlhLVwiICsgKHJvbGUgPT09ICdsYWJlbCcgPyAnbGFiZWxsZWRieScgOiAnZGVzY3JpYmVkYnknKV06IG9wZW4gPyBmbG9hdGluZ0lkIDogdW5kZWZpbmVkXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgJ2FyaWEtZXhwYW5kZWQnOiBvcGVuID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgICdhcmlhLWhhc3BvcHVwJzogYXJpYVJvbGUgPT09ICdhbGVydGRpYWxvZycgPyAnZGlhbG9nJyA6IGFyaWFSb2xlLFxuICAgICAgJ2FyaWEtY29udHJvbHMnOiBvcGVuID8gZmxvYXRpbmdJZCA6IHVuZGVmaW5lZCxcbiAgICAgIC4uLihhcmlhUm9sZSA9PT0gJ2xpc3Rib3gnICYmIHtcbiAgICAgICAgcm9sZTogJ2NvbWJvYm94J1xuICAgICAgfSksXG4gICAgICAuLi4oYXJpYVJvbGUgPT09ICdtZW51JyAmJiB7XG4gICAgICAgIGlkOiByZWZlcmVuY2VJZFxuICAgICAgfSksXG4gICAgICAuLi4oYXJpYVJvbGUgPT09ICdtZW51JyAmJiBpc05lc3RlZCAmJiB7XG4gICAgICAgIHJvbGU6ICdtZW51aXRlbSdcbiAgICAgIH0pLFxuICAgICAgLi4uKHJvbGUgPT09ICdzZWxlY3QnICYmIHtcbiAgICAgICAgJ2FyaWEtYXV0b2NvbXBsZXRlJzogJ25vbmUnXG4gICAgICB9KSxcbiAgICAgIC4uLihyb2xlID09PSAnY29tYm9ib3gnICYmIHtcbiAgICAgICAgJ2FyaWEtYXV0b2NvbXBsZXRlJzogJ2xpc3QnXG4gICAgICB9KVxuICAgIH07XG4gIH0sIFthcmlhUm9sZSwgZmxvYXRpbmdJZCwgaXNOZXN0ZWQsIG9wZW4sIHJlZmVyZW5jZUlkLCByb2xlXSk7XG4gIGNvbnN0IGZsb2F0aW5nID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgZmxvYXRpbmdQcm9wcyA9IHtcbiAgICAgIGlkOiBmbG9hdGluZ0lkLFxuICAgICAgLi4uKGFyaWFSb2xlICYmIHtcbiAgICAgICAgcm9sZTogYXJpYVJvbGVcbiAgICAgIH0pXG4gICAgfTtcbiAgICBpZiAoYXJpYVJvbGUgPT09ICd0b29sdGlwJyB8fCByb2xlID09PSAnbGFiZWwnKSB7XG4gICAgICByZXR1cm4gZmxvYXRpbmdQcm9wcztcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmZsb2F0aW5nUHJvcHMsXG4gICAgICAuLi4oYXJpYVJvbGUgPT09ICdtZW51JyAmJiB7XG4gICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiByZWZlcmVuY2VJZFxuICAgICAgfSlcbiAgICB9O1xuICB9LCBbYXJpYVJvbGUsIGZsb2F0aW5nSWQsIHJlZmVyZW5jZUlkLCByb2xlXSk7XG4gIGNvbnN0IGl0ZW0gPSBSZWFjdC51c2VDYWxsYmFjayhfcmVmID0+IHtcbiAgICBsZXQge1xuICAgICAgYWN0aXZlLFxuICAgICAgc2VsZWN0ZWRcbiAgICB9ID0gX3JlZjtcbiAgICBjb25zdCBjb21tb25Qcm9wcyA9IHtcbiAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgLi4uKGFjdGl2ZSAmJiB7XG4gICAgICAgIGlkOiBmbG9hdGluZ0lkICsgXCItb3B0aW9uXCJcbiAgICAgIH0pXG4gICAgfTtcblxuICAgIC8vIEZvciBgbWVudWAsIHdlIGFyZSB1bmFibGUgdG8gdGVsbCBpZiB0aGUgaXRlbSBpcyBhIGBtZW51aXRlbXJhZGlvYFxuICAgIC8vIG9yIGBtZW51aXRlbWNoZWNrYm94YC4gRm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHJlYXNvbnMsIGFsc29cbiAgICAvLyBhdm9pZCBkZWZhdWx0aW5nIHRvIGBtZW51aXRlbWAgYXMgaXQgbWF5IG92ZXJ3cml0ZSBjdXN0b20gcm9sZSBwcm9wcy5cbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY29tbW9uUHJvcHMsXG4gICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiBhY3RpdmUgJiYgc2VsZWN0ZWRcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ2NvbWJvYm94JzpcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb21tb25Qcm9wcyxcbiAgICAgICAgICAgIC4uLihhY3RpdmUgJiYge1xuICAgICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IHRydWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH0sIFtmbG9hdGluZ0lkLCByb2xlXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIGl0ZW1cbiAgfSA6IHt9LCBbZW5hYmxlZCwgcmVmZXJlbmNlLCBmbG9hdGluZywgaXRlbV0pO1xufVxuXG4vLyBDb252ZXJ0cyBhIEpTIHN0eWxlIGtleSBsaWtlIGBiYWNrZ3JvdW5kQ29sb3JgIHRvIGEgQ1NTIHRyYW5zaXRpb24tcHJvcGVydHlcbi8vIGxpa2UgYGJhY2tncm91bmQtY29sb3JgLlxuY29uc3QgY2FtZWxDYXNlVG9LZWJhYkNhc2UgPSBzdHIgPT4gc3RyLnJlcGxhY2UoL1tBLVpdKyg/IVthLXpdKXxbQS1aXS9nLCAoJCwgb2ZzKSA9PiAob2ZzID8gJy0nIDogJycpICsgJC50b0xvd2VyQ2FzZSgpKTtcbmZ1bmN0aW9uIGV4ZWNXaXRoQXJnc09yUmV0dXJuKHZhbHVlT3JGbiwgYXJncykge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlT3JGbiA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlT3JGbihhcmdzKSA6IHZhbHVlT3JGbjtcbn1cbmZ1bmN0aW9uIHVzZURlbGF5VW5tb3VudChvcGVuLCBkdXJhdGlvbk1zKSB7XG4gIGNvbnN0IFtpc01vdW50ZWQsIHNldElzTW91bnRlZF0gPSBSZWFjdC51c2VTdGF0ZShvcGVuKTtcbiAgaWYgKG9wZW4gJiYgIWlzTW91bnRlZCkge1xuICAgIHNldElzTW91bnRlZCh0cnVlKTtcbiAgfVxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghb3BlbiAmJiBpc01vdW50ZWQpIHtcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHNldElzTW91bnRlZChmYWxzZSksIGR1cmF0aW9uTXMpO1xuICAgICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICB9XG4gIH0sIFtvcGVuLCBpc01vdW50ZWQsIGR1cmF0aW9uTXNdKTtcbiAgcmV0dXJuIGlzTW91bnRlZDtcbn1cbi8qKlxuICogUHJvdmlkZXMgYSBzdGF0dXMgc3RyaW5nIHRvIGFwcGx5IENTUyB0cmFuc2l0aW9ucyB0byBhIGZsb2F0aW5nIGVsZW1lbnQsXG4gKiBjb3JyZWN0bHkgaGFuZGxpbmcgcGxhY2VtZW50LWF3YXJlIHRyYW5zaXRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZVRyYW5zaXRpb24jdXNldHJhbnNpdGlvbnN0YXR1c1xuICovXG5mdW5jdGlvbiB1c2VUcmFuc2l0aW9uU3RhdHVzKGNvbnRleHQsIHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBlbGVtZW50czoge1xuICAgICAgZmxvYXRpbmdcbiAgICB9XG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZHVyYXRpb24gPSAyNTBcbiAgfSA9IHByb3BzO1xuICBjb25zdCBpc051bWJlckR1cmF0aW9uID0gdHlwZW9mIGR1cmF0aW9uID09PSAnbnVtYmVyJztcbiAgY29uc3QgY2xvc2VEdXJhdGlvbiA9IChpc051bWJlckR1cmF0aW9uID8gZHVyYXRpb24gOiBkdXJhdGlvbi5jbG9zZSkgfHwgMDtcbiAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IFJlYWN0LnVzZVN0YXRlKCd1bm1vdW50ZWQnKTtcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlRGVsYXlVbm1vdW50KG9wZW4sIGNsb3NlRHVyYXRpb24pO1xuICBpZiAoIWlzTW91bnRlZCAmJiBzdGF0dXMgPT09ICdjbG9zZScpIHtcbiAgICBzZXRTdGF0dXMoJ3VubW91bnRlZCcpO1xuICB9XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoIWZsb2F0aW5nKSByZXR1cm47XG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIHNldFN0YXR1cygnaW5pdGlhbCcpO1xuICAgICAgY29uc3QgZnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzZXRTdGF0dXMoJ29wZW4nKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWUpO1xuICAgICAgfTtcbiAgICB9XG4gICAgc2V0U3RhdHVzKCdjbG9zZScpO1xuICB9LCBbb3BlbiwgZmxvYXRpbmddKTtcbiAgcmV0dXJuIHtcbiAgICBpc01vdW50ZWQsXG4gICAgc3RhdHVzXG4gIH07XG59XG4vKipcbiAqIFByb3ZpZGVzIHN0eWxlcyB0byBhcHBseSBDU1MgdHJhbnNpdGlvbnMgdG8gYSBmbG9hdGluZyBlbGVtZW50LCBjb3JyZWN0bHlcbiAqIGhhbmRsaW5nIHBsYWNlbWVudC1hd2FyZSB0cmFuc2l0aW9ucy4gV3JhcHBlciBhcm91bmQgYHVzZVRyYW5zaXRpb25TdGF0dXNgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZVRyYW5zaXRpb24jdXNldHJhbnNpdGlvbnN0eWxlc1xuICovXG5mdW5jdGlvbiB1c2VUcmFuc2l0aW9uU3R5bGVzKGNvbnRleHQsIHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgaW5pdGlhbDogdW5zdGFibGVfaW5pdGlhbCA9IHtcbiAgICAgIG9wYWNpdHk6IDBcbiAgICB9LFxuICAgIG9wZW46IHVuc3RhYmxlX29wZW4sXG4gICAgY2xvc2U6IHVuc3RhYmxlX2Nsb3NlLFxuICAgIGNvbW1vbjogdW5zdGFibGVfY29tbW9uLFxuICAgIGR1cmF0aW9uID0gMjUwXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgcGxhY2VtZW50ID0gY29udGV4dC5wbGFjZW1lbnQ7XG4gIGNvbnN0IHNpZGUgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgY29uc3QgZm5BcmdzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIHNpZGUsXG4gICAgcGxhY2VtZW50XG4gIH0pLCBbc2lkZSwgcGxhY2VtZW50XSk7XG4gIGNvbnN0IGlzTnVtYmVyRHVyYXRpb24gPSB0eXBlb2YgZHVyYXRpb24gPT09ICdudW1iZXInO1xuICBjb25zdCBvcGVuRHVyYXRpb24gPSAoaXNOdW1iZXJEdXJhdGlvbiA/IGR1cmF0aW9uIDogZHVyYXRpb24ub3BlbikgfHwgMDtcbiAgY29uc3QgY2xvc2VEdXJhdGlvbiA9IChpc051bWJlckR1cmF0aW9uID8gZHVyYXRpb24gOiBkdXJhdGlvbi5jbG9zZSkgfHwgMDtcbiAgY29uc3QgW3N0eWxlcywgc2V0U3R5bGVzXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+ICh7XG4gICAgLi4uZXhlY1dpdGhBcmdzT3JSZXR1cm4odW5zdGFibGVfY29tbW9uLCBmbkFyZ3MpLFxuICAgIC4uLmV4ZWNXaXRoQXJnc09yUmV0dXJuKHVuc3RhYmxlX2luaXRpYWwsIGZuQXJncylcbiAgfSkpO1xuICBjb25zdCB7XG4gICAgaXNNb3VudGVkLFxuICAgIHN0YXR1c1xuICB9ID0gdXNlVHJhbnNpdGlvblN0YXR1cyhjb250ZXh0LCB7XG4gICAgZHVyYXRpb25cbiAgfSk7XG4gIGNvbnN0IGluaXRpYWxSZWYgPSB1c2VMYXRlc3RSZWYodW5zdGFibGVfaW5pdGlhbCk7XG4gIGNvbnN0IG9wZW5SZWYgPSB1c2VMYXRlc3RSZWYodW5zdGFibGVfb3Blbik7XG4gIGNvbnN0IGNsb3NlUmVmID0gdXNlTGF0ZXN0UmVmKHVuc3RhYmxlX2Nsb3NlKTtcbiAgY29uc3QgY29tbW9uUmVmID0gdXNlTGF0ZXN0UmVmKHVuc3RhYmxlX2NvbW1vbik7XG4gIGluZGV4KCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0gZXhlY1dpdGhBcmdzT3JSZXR1cm4oaW5pdGlhbFJlZi5jdXJyZW50LCBmbkFyZ3MpO1xuICAgIGNvbnN0IGNsb3NlU3R5bGVzID0gZXhlY1dpdGhBcmdzT3JSZXR1cm4oY2xvc2VSZWYuY3VycmVudCwgZm5BcmdzKTtcbiAgICBjb25zdCBjb21tb25TdHlsZXMgPSBleGVjV2l0aEFyZ3NPclJldHVybihjb21tb25SZWYuY3VycmVudCwgZm5BcmdzKTtcbiAgICBjb25zdCBvcGVuU3R5bGVzID0gZXhlY1dpdGhBcmdzT3JSZXR1cm4ob3BlblJlZi5jdXJyZW50LCBmbkFyZ3MpIHx8IE9iamVjdC5rZXlzKGluaXRpYWxTdHlsZXMpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGFjY1trZXldID0gJyc7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgICBpZiAoc3RhdHVzID09PSAnaW5pdGlhbCcpIHtcbiAgICAgIHNldFN0eWxlcyhzdHlsZXMgPT4gKHtcbiAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5OiBzdHlsZXMudHJhbnNpdGlvblByb3BlcnR5LFxuICAgICAgICAuLi5jb21tb25TdHlsZXMsXG4gICAgICAgIC4uLmluaXRpYWxTdHlsZXNcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgaWYgKHN0YXR1cyA9PT0gJ29wZW4nKSB7XG4gICAgICBzZXRTdHlsZXMoe1xuICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHk6IE9iamVjdC5rZXlzKG9wZW5TdHlsZXMpLm1hcChjYW1lbENhc2VUb0tlYmFiQ2FzZSkuam9pbignLCcpLFxuICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246IG9wZW5EdXJhdGlvbiArIFwibXNcIixcbiAgICAgICAgLi4uY29tbW9uU3R5bGVzLFxuICAgICAgICAuLi5vcGVuU3R5bGVzXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHN0YXR1cyA9PT0gJ2Nsb3NlJykge1xuICAgICAgY29uc3Qgc3R5bGVzID0gY2xvc2VTdHlsZXMgfHwgaW5pdGlhbFN0eWxlcztcbiAgICAgIHNldFN0eWxlcyh7XG4gICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogT2JqZWN0LmtleXMoc3R5bGVzKS5tYXAoY2FtZWxDYXNlVG9LZWJhYkNhc2UpLmpvaW4oJywnKSxcbiAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiBjbG9zZUR1cmF0aW9uICsgXCJtc1wiLFxuICAgICAgICAuLi5jb21tb25TdHlsZXMsXG4gICAgICAgIC4uLnN0eWxlc1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY2xvc2VEdXJhdGlvbiwgY2xvc2VSZWYsIGluaXRpYWxSZWYsIG9wZW5SZWYsIGNvbW1vblJlZiwgb3BlbkR1cmF0aW9uLCBzdGF0dXMsIGZuQXJnc10pO1xuICByZXR1cm4ge1xuICAgIGlzTW91bnRlZCxcbiAgICBzdHlsZXNcbiAgfTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhIG1hdGNoaW5nIGNhbGxiYWNrIHRoYXQgY2FuIGJlIHVzZWQgdG8gZm9jdXMgYW4gaXRlbSBhcyB0aGUgdXNlclxuICogdHlwZXMsIG9mdGVuIHVzZWQgaW4gdGFuZGVtIHdpdGggYHVzZUxpc3ROYXZpZ2F0aW9uKClgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZVR5cGVhaGVhZFxuICovXG5mdW5jdGlvbiB1c2VUeXBlYWhlYWQoY29udGV4dCwgcHJvcHMpIHtcbiAgdmFyIF9yZWY7XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIGRhdGFSZWZcbiAgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBsaXN0UmVmLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIG9uTWF0Y2g6IHVuc3RhYmxlX29uTWF0Y2gsXG4gICAgb25UeXBpbmdDaGFuZ2U6IHVuc3RhYmxlX29uVHlwaW5nQ2hhbmdlLFxuICAgIGVuYWJsZWQgPSB0cnVlLFxuICAgIGZpbmRNYXRjaCA9IG51bGwsXG4gICAgcmVzZXRNcyA9IDc1MCxcbiAgICBpZ25vcmVLZXlzID0gW10sXG4gICAgc2VsZWN0ZWRJbmRleCA9IG51bGxcbiAgfSA9IHByb3BzO1xuICBjb25zdCB0aW1lb3V0SWRSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3Qgc3RyaW5nUmVmID0gUmVhY3QudXNlUmVmKCcnKTtcbiAgY29uc3QgcHJldkluZGV4UmVmID0gUmVhY3QudXNlUmVmKChfcmVmID0gc2VsZWN0ZWRJbmRleCAhPSBudWxsID8gc2VsZWN0ZWRJbmRleCA6IGFjdGl2ZUluZGV4KSAhPSBudWxsID8gX3JlZiA6IC0xKTtcbiAgY29uc3QgbWF0Y2hJbmRleFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3Qgb25NYXRjaCA9IHVzZUVmZmVjdEV2ZW50KHVuc3RhYmxlX29uTWF0Y2gpO1xuICBjb25zdCBvblR5cGluZ0NoYW5nZSA9IHVzZUVmZmVjdEV2ZW50KHVuc3RhYmxlX29uVHlwaW5nQ2hhbmdlKTtcbiAgY29uc3QgZmluZE1hdGNoUmVmID0gdXNlTGF0ZXN0UmVmKGZpbmRNYXRjaCk7XG4gIGNvbnN0IGlnbm9yZUtleXNSZWYgPSB1c2VMYXRlc3RSZWYoaWdub3JlS2V5cyk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAob3Blbikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZFJlZi5jdXJyZW50KTtcbiAgICAgIG1hdGNoSW5kZXhSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICBzdHJpbmdSZWYuY3VycmVudCA9ICcnO1xuICAgIH1cbiAgfSwgW29wZW5dKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIC8vIFN5bmMgYXJyb3cga2V5IG5hdmlnYXRpb24gYnV0IG5vdCB0eXBlYWhlYWQgbmF2aWdhdGlvbi5cbiAgICBpZiAob3BlbiAmJiBzdHJpbmdSZWYuY3VycmVudCA9PT0gJycpIHtcbiAgICAgIHZhciBfcmVmMjtcbiAgICAgIHByZXZJbmRleFJlZi5jdXJyZW50ID0gKF9yZWYyID0gc2VsZWN0ZWRJbmRleCAhPSBudWxsID8gc2VsZWN0ZWRJbmRleCA6IGFjdGl2ZUluZGV4KSAhPSBudWxsID8gX3JlZjIgOiAtMTtcbiAgICB9XG4gIH0sIFtvcGVuLCBzZWxlY3RlZEluZGV4LCBhY3RpdmVJbmRleF0pO1xuICBjb25zdCBzZXRUeXBpbmdDaGFuZ2UgPSB1c2VFZmZlY3RFdmVudCh2YWx1ZSA9PiB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAoIWRhdGFSZWYuY3VycmVudC50eXBpbmcpIHtcbiAgICAgICAgZGF0YVJlZi5jdXJyZW50LnR5cGluZyA9IHZhbHVlO1xuICAgICAgICBvblR5cGluZ0NoYW5nZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChkYXRhUmVmLmN1cnJlbnQudHlwaW5nKSB7XG4gICAgICAgIGRhdGFSZWYuY3VycmVudC50eXBpbmcgPSB2YWx1ZTtcbiAgICAgICAgb25UeXBpbmdDaGFuZ2UodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZUVmZmVjdEV2ZW50KGV2ZW50ID0+IHtcbiAgICBmdW5jdGlvbiBnZXRNYXRjaGluZ0luZGV4KGxpc3QsIG9yZGVyZWRMaXN0LCBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHN0ciA9IGZpbmRNYXRjaFJlZi5jdXJyZW50ID8gZmluZE1hdGNoUmVmLmN1cnJlbnQob3JkZXJlZExpc3QsIHN0cmluZykgOiBvcmRlcmVkTGlzdC5maW5kKHRleHQgPT4gKHRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IHRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmRleE9mKHN0cmluZy50b0xvY2FsZUxvd2VyQ2FzZSgpKSkgPT09IDApO1xuICAgICAgcmV0dXJuIHN0ciA/IGxpc3QuaW5kZXhPZihzdHIpIDogLTE7XG4gICAgfVxuICAgIGNvbnN0IGxpc3RDb250ZW50ID0gbGlzdFJlZi5jdXJyZW50O1xuICAgIGlmIChzdHJpbmdSZWYuY3VycmVudC5sZW5ndGggPiAwICYmIHN0cmluZ1JlZi5jdXJyZW50WzBdICE9PSAnICcpIHtcbiAgICAgIGlmIChnZXRNYXRjaGluZ0luZGV4KGxpc3RDb250ZW50LCBsaXN0Q29udGVudCwgc3RyaW5nUmVmLmN1cnJlbnQpID09PSAtMSkge1xuICAgICAgICBzZXRUeXBpbmdDaGFuZ2UoZmFsc2UpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobGlzdENvbnRlbnQgPT0gbnVsbCB8fCBpZ25vcmVLZXlzUmVmLmN1cnJlbnQuaW5jbHVkZXMoZXZlbnQua2V5KSB8fFxuICAgIC8vIENoYXJhY3RlciBrZXkuXG4gICAgZXZlbnQua2V5Lmxlbmd0aCAhPT0gMSB8fFxuICAgIC8vIE1vZGlmaWVyIGtleS5cbiAgICBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuYWx0S2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChvcGVuICYmIGV2ZW50LmtleSAhPT0gJyAnKSB7XG4gICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgc2V0VHlwaW5nQ2hhbmdlKHRydWUpO1xuICAgIH1cblxuICAgIC8vIEJhaWwgb3V0IGlmIHRoZSBsaXN0IGNvbnRhaW5zIGEgd29yZCBsaWtlIFwibGxhbWFcIiBvciBcImFhcm9uXCIuIFRPRE86XG4gICAgLy8gYWxsb3cgaXQgaW4gdGhpcyBjYXNlLCB0b28uXG4gICAgY29uc3QgYWxsb3dSYXBpZFN1Y2Nlc3Npb25PZkZpcnN0TGV0dGVyID0gbGlzdENvbnRlbnQuZXZlcnkodGV4dCA9PiB7XG4gICAgICB2YXIgX3RleHQkLCBfdGV4dCQyO1xuICAgICAgcmV0dXJuIHRleHQgPyAoKF90ZXh0JCA9IHRleHRbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfdGV4dCQudG9Mb2NhbGVMb3dlckNhc2UoKSkgIT09ICgoX3RleHQkMiA9IHRleHRbMV0pID09IG51bGwgPyB2b2lkIDAgOiBfdGV4dCQyLnRvTG9jYWxlTG93ZXJDYXNlKCkpIDogdHJ1ZTtcbiAgICB9KTtcblxuICAgIC8vIEFsbG93cyB0aGUgdXNlciB0byBjeWNsZSB0aHJvdWdoIGl0ZW1zIHRoYXQgc3RhcnQgd2l0aCB0aGUgc2FtZSBsZXR0ZXJcbiAgICAvLyBpbiByYXBpZCBzdWNjZXNzaW9uLlxuICAgIGlmIChhbGxvd1JhcGlkU3VjY2Vzc2lvbk9mRmlyc3RMZXR0ZXIgJiYgc3RyaW5nUmVmLmN1cnJlbnQgPT09IGV2ZW50LmtleSkge1xuICAgICAgc3RyaW5nUmVmLmN1cnJlbnQgPSAnJztcbiAgICAgIHByZXZJbmRleFJlZi5jdXJyZW50ID0gbWF0Y2hJbmRleFJlZi5jdXJyZW50O1xuICAgIH1cbiAgICBzdHJpbmdSZWYuY3VycmVudCArPSBldmVudC5rZXk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZFJlZi5jdXJyZW50KTtcbiAgICB0aW1lb3V0SWRSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc3RyaW5nUmVmLmN1cnJlbnQgPSAnJztcbiAgICAgIHByZXZJbmRleFJlZi5jdXJyZW50ID0gbWF0Y2hJbmRleFJlZi5jdXJyZW50O1xuICAgICAgc2V0VHlwaW5nQ2hhbmdlKGZhbHNlKTtcbiAgICB9LCByZXNldE1zKTtcbiAgICBjb25zdCBwcmV2SW5kZXggPSBwcmV2SW5kZXhSZWYuY3VycmVudDtcbiAgICBjb25zdCBpbmRleCA9IGdldE1hdGNoaW5nSW5kZXgobGlzdENvbnRlbnQsIFsuLi5saXN0Q29udGVudC5zbGljZSgocHJldkluZGV4IHx8IDApICsgMSksIC4uLmxpc3RDb250ZW50LnNsaWNlKDAsIChwcmV2SW5kZXggfHwgMCkgKyAxKV0sIHN0cmluZ1JlZi5jdXJyZW50KTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBvbk1hdGNoKGluZGV4KTtcbiAgICAgIG1hdGNoSW5kZXhSZWYuY3VycmVudCA9IGluZGV4O1xuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ICE9PSAnICcpIHtcbiAgICAgIHN0cmluZ1JlZi5jdXJyZW50ID0gJyc7XG4gICAgICBzZXRUeXBpbmdDaGFuZ2UoZmFsc2UpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvbktleURvd25cbiAgfSksIFtvbktleURvd25dKTtcbiAgY29uc3QgZmxvYXRpbmcgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgb25LZXlEb3duLFxuICAgICAgb25LZXlVcChldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgICBzZXRUeXBpbmdDaGFuZ2UoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW29uS2V5RG93biwgc2V0VHlwaW5nQ2hhbmdlXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZSwgZmxvYXRpbmddKTtcbn1cblxuZnVuY3Rpb24gZ2V0QXJnc1dpdGhDdXN0b21GbG9hdGluZ0hlaWdodChzdGF0ZSwgaGVpZ2h0KSB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgcmVjdHM6IHtcbiAgICAgIC4uLnN0YXRlLnJlY3RzLFxuICAgICAgZmxvYXRpbmc6IHtcbiAgICAgICAgLi4uc3RhdGUucmVjdHMuZmxvYXRpbmcsXG4gICAgICAgIGhlaWdodFxuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbi8qKlxuICogUG9zaXRpb25zIHRoZSBmbG9hdGluZyBlbGVtZW50IHN1Y2ggdGhhdCBhbiBpbm5lciBlbGVtZW50IGluc2lkZSBvZiBpdCBpc1xuICogYW5jaG9yZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubmVyXG4gKi9cbmNvbnN0IGlubmVyID0gcHJvcHMgPT4gKHtcbiAgbmFtZTogJ2lubmVyJyxcbiAgb3B0aW9uczogcHJvcHMsXG4gIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgY29uc3Qge1xuICAgICAgbGlzdFJlZixcbiAgICAgIG92ZXJmbG93UmVmLFxuICAgICAgb25GYWxsYmFja0NoYW5nZSxcbiAgICAgIG9mZnNldDogaW5uZXJPZmZzZXQgPSAwLFxuICAgICAgaW5kZXggPSAwLFxuICAgICAgbWluSXRlbXNWaXNpYmxlID0gNCxcbiAgICAgIHJlZmVyZW5jZU92ZXJmbG93VGhyZXNob2xkID0gMCxcbiAgICAgIHNjcm9sbFJlZixcbiAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgIH0gPSBldmFsdWF0ZShwcm9wcywgc3RhdGUpO1xuICAgIGNvbnN0IHtcbiAgICAgIHJlY3RzLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9ID0gc3RhdGU7XG4gICAgY29uc3QgaXRlbSA9IGxpc3RSZWYuY3VycmVudFtpbmRleF07XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgaWYgKCFzdGF0ZS5wbGFjZW1lbnQuc3RhcnRzV2l0aCgnYm90dG9tJykpIHtcbiAgICAgICAgd2FybignYHBsYWNlbWVudGAgc2lkZSBtdXN0IGJlIFwiYm90dG9tXCIgd2hlbiB1c2luZyB0aGUgYGlubmVyYCcsICdtaWRkbGV3YXJlLicpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgbmV4dEFyZ3MgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLihhd2FpdCBvZmZzZXQoLWl0ZW0ub2Zmc2V0VG9wIC0gZmxvYXRpbmcuY2xpZW50VG9wIC0gcmVjdHMucmVmZXJlbmNlLmhlaWdodCAvIDIgLSBpdGVtLm9mZnNldEhlaWdodCAvIDIgLSBpbm5lck9mZnNldCkuZm4oc3RhdGUpKVxuICAgIH07XG4gICAgY29uc3QgZWwgPSAoc2Nyb2xsUmVmID09IG51bGwgPyB2b2lkIDAgOiBzY3JvbGxSZWYuY3VycmVudCkgfHwgZmxvYXRpbmc7XG4gICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhnZXRBcmdzV2l0aEN1c3RvbUZsb2F0aW5nSGVpZ2h0KG5leHRBcmdzLCBlbC5zY3JvbGxIZWlnaHQpLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgIGNvbnN0IHJlZk92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3cobmV4dEFyZ3MsIHtcbiAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICAgIH0pO1xuICAgIGNvbnN0IGRpZmZZID0gTWF0aC5tYXgoMCwgb3ZlcmZsb3cudG9wKTtcbiAgICBjb25zdCBuZXh0WSA9IG5leHRBcmdzLnkgKyBkaWZmWTtcbiAgICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1heCgwLCBlbC5zY3JvbGxIZWlnaHQgLSBkaWZmWSAtIE1hdGgubWF4KDAsIG92ZXJmbG93LmJvdHRvbSkpO1xuICAgIGVsLnN0eWxlLm1heEhlaWdodCA9IG1heEhlaWdodCArIFwicHhcIjtcbiAgICBlbC5zY3JvbGxUb3AgPSBkaWZmWTtcblxuICAgIC8vIFRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UsIGZhbGxiYWNrIHRvIHN0YW5kYXJkIGFuY2hvcmVkIHBvc2l0aW9uaW5nXG4gICAgaWYgKG9uRmFsbGJhY2tDaGFuZ2UpIHtcbiAgICAgIGlmIChlbC5vZmZzZXRIZWlnaHQgPCBpdGVtLm9mZnNldEhlaWdodCAqIE1hdGgubWluKG1pbkl0ZW1zVmlzaWJsZSwgbGlzdFJlZi5jdXJyZW50Lmxlbmd0aCAtIDEpIC0gMSB8fCByZWZPdmVyZmxvdy50b3AgPj0gLXJlZmVyZW5jZU92ZXJmbG93VGhyZXNob2xkIHx8IHJlZk92ZXJmbG93LmJvdHRvbSA+PSAtcmVmZXJlbmNlT3ZlcmZsb3dUaHJlc2hvbGQpIHtcbiAgICAgICAgUmVhY3RET00uZmx1c2hTeW5jKCgpID0+IG9uRmFsbGJhY2tDaGFuZ2UodHJ1ZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUmVhY3RET00uZmx1c2hTeW5jKCgpID0+IG9uRmFsbGJhY2tDaGFuZ2UoZmFsc2UpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UmVmKSB7XG4gICAgICBvdmVyZmxvd1JlZi5jdXJyZW50ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coZ2V0QXJnc1dpdGhDdXN0b21GbG9hdGluZ0hlaWdodCh7XG4gICAgICAgIC4uLm5leHRBcmdzLFxuICAgICAgICB5OiBuZXh0WVxuICAgICAgfSwgZWwub2Zmc2V0SGVpZ2h0KSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHk6IG5leHRZXG4gICAgfTtcbiAgfVxufSk7XG4vKipcbiAqIENoYW5nZXMgdGhlIGBpbm5lcmAgbWlkZGxld2FyZSdzIGBvZmZzZXRgIHVwb24gYSBgd2hlZWxgIGV2ZW50IHRvXG4gKiBleHBhbmQgdGhlIGZsb2F0aW5nIGVsZW1lbnQncyBoZWlnaHQsIHJldmVhbGluZyBtb3JlIGxpc3QgaXRlbXMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5uZXJcbiAqL1xuZnVuY3Rpb24gdXNlSW5uZXJPZmZzZXQoY29udGV4dCwgcHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgZWxlbWVudHNcbiAgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBlbmFibGVkID0gdHJ1ZSxcbiAgICBvdmVyZmxvd1JlZixcbiAgICBzY3JvbGxSZWYsXG4gICAgb25DaGFuZ2U6IHVuc3RhYmxlX29uQ2hhbmdlXG4gIH0gPSBwcm9wcztcbiAgY29uc3Qgb25DaGFuZ2UgPSB1c2VFZmZlY3RFdmVudCh1bnN0YWJsZV9vbkNoYW5nZSk7XG4gIGNvbnN0IGNvbnRyb2xsZWRTY3JvbGxpbmdSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBwcmV2U2Nyb2xsVG9wUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBpbml0aWFsT3ZlcmZsb3dSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgZnVuY3Rpb24gb25XaGVlbChlKSB7XG4gICAgICBpZiAoZS5jdHJsS2V5IHx8ICFlbCB8fCBvdmVyZmxvd1JlZi5jdXJyZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZFkgPSBlLmRlbHRhWTtcbiAgICAgIGNvbnN0IGlzQXRUb3AgPSBvdmVyZmxvd1JlZi5jdXJyZW50LnRvcCA+PSAtMC41O1xuICAgICAgY29uc3QgaXNBdEJvdHRvbSA9IG92ZXJmbG93UmVmLmN1cnJlbnQuYm90dG9tID49IC0wLjU7XG4gICAgICBjb25zdCByZW1haW5pbmdTY3JvbGwgPSBlbC5zY3JvbGxIZWlnaHQgLSBlbC5jbGllbnRIZWlnaHQ7XG4gICAgICBjb25zdCBzaWduID0gZFkgPCAwID8gLTEgOiAxO1xuICAgICAgY29uc3QgbWV0aG9kID0gZFkgPCAwID8gJ21heCcgOiAnbWluJztcbiAgICAgIGlmIChlbC5zY3JvbGxIZWlnaHQgPD0gZWwuY2xpZW50SGVpZ2h0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBdFRvcCAmJiBkWSA+IDAgfHwgIWlzQXRCb3R0b20gJiYgZFkgPCAwKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgUmVhY3RET00uZmx1c2hTeW5jKCgpID0+IHtcbiAgICAgICAgICBvbkNoYW5nZShkID0+IGQgKyBNYXRoW21ldGhvZF0oZFksIHJlbWFpbmluZ1Njcm9sbCAqIHNpZ24pKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKC9maXJlZm94L2kudGVzdChnZXRVc2VyQWdlbnQoKSkpIHtcbiAgICAgICAgLy8gTmVlZGVkIHRvIHByb3BhZ2F0ZSBzY3JvbGxpbmcgZHVyaW5nIG1vbWVudHVtIHNjcm9sbGluZyBwaGFzZSBvbmNlXG4gICAgICAgIC8vIGl0IGdldHMgbGltaXRlZCBieSB0aGUgYm91bmRhcnkuIFVYIGltcHJvdmVtZW50LCBub3QgY3JpdGljYWwuXG4gICAgICAgIGVsLnNjcm9sbFRvcCArPSBkWTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZWwgPSAoc2Nyb2xsUmVmID09IG51bGwgPyB2b2lkIDAgOiBzY3JvbGxSZWYuY3VycmVudCkgfHwgZWxlbWVudHMuZmxvYXRpbmc7XG4gICAgaWYgKG9wZW4gJiYgZWwpIHtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCk7XG5cbiAgICAgIC8vIFdhaXQgZm9yIHRoZSBwb3NpdGlvbiB0byBiZSByZWFkeS5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHByZXZTY3JvbGxUb3BSZWYuY3VycmVudCA9IGVsLnNjcm9sbFRvcDtcbiAgICAgICAgaWYgKG92ZXJmbG93UmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGluaXRpYWxPdmVyZmxvd1JlZi5jdXJyZW50ID0ge1xuICAgICAgICAgICAgLi4ub3ZlcmZsb3dSZWYuY3VycmVudFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgcHJldlNjcm9sbFRvcFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgaW5pdGlhbE92ZXJmbG93UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtlbmFibGVkLCBvcGVuLCBlbGVtZW50cy5mbG9hdGluZywgb3ZlcmZsb3dSZWYsIHNjcm9sbFJlZiwgb25DaGFuZ2VdKTtcbiAgY29uc3QgZmxvYXRpbmcgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgb25LZXlEb3duKCkge1xuICAgICAgY29udHJvbGxlZFNjcm9sbGluZ1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9LFxuICAgIG9uV2hlZWwoKSB7XG4gICAgICBjb250cm9sbGVkU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9LFxuICAgIG9uUG9pbnRlck1vdmUoKSB7XG4gICAgICBjb250cm9sbGVkU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9LFxuICAgIG9uU2Nyb2xsKCkge1xuICAgICAgY29uc3QgZWwgPSAoc2Nyb2xsUmVmID09IG51bGwgPyB2b2lkIDAgOiBzY3JvbGxSZWYuY3VycmVudCkgfHwgZWxlbWVudHMuZmxvYXRpbmc7XG4gICAgICBpZiAoIW92ZXJmbG93UmVmLmN1cnJlbnQgfHwgIWVsIHx8ICFjb250cm9sbGVkU2Nyb2xsaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHByZXZTY3JvbGxUb3BSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzY3JvbGxEaWZmID0gZWwuc2Nyb2xsVG9wIC0gcHJldlNjcm9sbFRvcFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAob3ZlcmZsb3dSZWYuY3VycmVudC5ib3R0b20gPCAtMC41ICYmIHNjcm9sbERpZmYgPCAtMSB8fCBvdmVyZmxvd1JlZi5jdXJyZW50LnRvcCA8IC0wLjUgJiYgc2Nyb2xsRGlmZiA+IDEpIHtcbiAgICAgICAgICBSZWFjdERPTS5mbHVzaFN5bmMoKCkgPT4gb25DaGFuZ2UoZCA9PiBkICsgc2Nyb2xsRGlmZikpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFtGaXJlZm94XSBXYWl0IGZvciB0aGUgaGVpZ2h0IGNoYW5nZSB0byBoYXZlIGJlZW4gYXBwbGllZC5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHByZXZTY3JvbGxUb3BSZWYuY3VycmVudCA9IGVsLnNjcm9sbFRvcDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksIFtlbGVtZW50cy5mbG9hdGluZywgb25DaGFuZ2UsIG92ZXJmbG93UmVmLCBzY3JvbGxSZWZdKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gZW5hYmxlZCA/IHtcbiAgICBmbG9hdGluZ1xuICB9IDoge30sIFtlbmFibGVkLCBmbG9hdGluZ10pO1xufVxuXG5mdW5jdGlvbiBpc1BvaW50SW5Qb2x5Z29uKHBvaW50LCBwb2x5Z29uKSB7XG4gIGNvbnN0IFt4LCB5XSA9IHBvaW50O1xuICBsZXQgaXNJbnNpZGUgPSBmYWxzZTtcbiAgY29uc3QgbGVuZ3RoID0gcG9seWdvbi5sZW5ndGg7XG4gIGZvciAobGV0IGkgPSAwLCBqID0gbGVuZ3RoIC0gMTsgaSA8IGxlbmd0aDsgaiA9IGkrKykge1xuICAgIGNvbnN0IFt4aSwgeWldID0gcG9seWdvbltpXSB8fCBbMCwgMF07XG4gICAgY29uc3QgW3hqLCB5al0gPSBwb2x5Z29uW2pdIHx8IFswLCAwXTtcbiAgICBjb25zdCBpbnRlcnNlY3QgPSB5aSA+PSB5ICE9PSB5aiA+PSB5ICYmIHggPD0gKHhqIC0geGkpICogKHkgLSB5aSkgLyAoeWogLSB5aSkgKyB4aTtcbiAgICBpZiAoaW50ZXJzZWN0KSB7XG4gICAgICBpc0luc2lkZSA9ICFpc0luc2lkZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGlzSW5zaWRlO1xufVxuZnVuY3Rpb24gaXNJbnNpZGUocG9pbnQsIHJlY3QpIHtcbiAgcmV0dXJuIHBvaW50WzBdID49IHJlY3QueCAmJiBwb2ludFswXSA8PSByZWN0LnggKyByZWN0LndpZHRoICYmIHBvaW50WzFdID49IHJlY3QueSAmJiBwb2ludFsxXSA8PSByZWN0LnkgKyByZWN0LmhlaWdodDtcbn1cbi8qKlxuICogR2VuZXJhdGVzIGEgc2FmZSBwb2x5Z29uIGFyZWEgdGhhdCB0aGUgdXNlciBjYW4gdHJhdmVyc2Ugd2l0aG91dCBjbG9zaW5nIHRoZVxuICogZmxvYXRpbmcgZWxlbWVudCBvbmNlIGxlYXZpbmcgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZUhvdmVyI3NhZmVwb2x5Z29uXG4gKi9cbmZ1bmN0aW9uIHNhZmVQb2x5Z29uKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgYnVmZmVyID0gMC41LFxuICAgIGJsb2NrUG9pbnRlckV2ZW50cyA9IGZhbHNlLFxuICAgIHJlcXVpcmVJbnRlbnQgPSB0cnVlXG4gIH0gPSBvcHRpb25zO1xuICBsZXQgdGltZW91dElkO1xuICBsZXQgaGFzTGFuZGVkID0gZmFsc2U7XG4gIGxldCBsYXN0WCA9IG51bGw7XG4gIGxldCBsYXN0WSA9IG51bGw7XG4gIGxldCBsYXN0Q3Vyc29yVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBmdW5jdGlvbiBnZXRDdXJzb3JTcGVlZCh4LCB5KSB7XG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCBlbGFwc2VkVGltZSA9IGN1cnJlbnRUaW1lIC0gbGFzdEN1cnNvclRpbWU7XG4gICAgaWYgKGxhc3RYID09PSBudWxsIHx8IGxhc3RZID09PSBudWxsIHx8IGVsYXBzZWRUaW1lID09PSAwKSB7XG4gICAgICBsYXN0WCA9IHg7XG4gICAgICBsYXN0WSA9IHk7XG4gICAgICBsYXN0Q3Vyc29yVGltZSA9IGN1cnJlbnRUaW1lO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGRlbHRhWCA9IHggLSBsYXN0WDtcbiAgICBjb25zdCBkZWx0YVkgPSB5IC0gbGFzdFk7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLnNxcnQoZGVsdGFYICogZGVsdGFYICsgZGVsdGFZICogZGVsdGFZKTtcbiAgICBjb25zdCBzcGVlZCA9IGRpc3RhbmNlIC8gZWxhcHNlZFRpbWU7IC8vIHB4IC8gbXNcblxuICAgIGxhc3RYID0geDtcbiAgICBsYXN0WSA9IHk7XG4gICAgbGFzdEN1cnNvclRpbWUgPSBjdXJyZW50VGltZTtcbiAgICByZXR1cm4gc3BlZWQ7XG4gIH1cbiAgY29uc3QgZm4gPSBfcmVmID0+IHtcbiAgICBsZXQge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICBlbGVtZW50cyxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICBub2RlSWQsXG4gICAgICB0cmVlXG4gICAgfSA9IF9yZWY7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG9uTW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgICBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgaWYgKCFlbGVtZW50cy5kb21SZWZlcmVuY2UgfHwgIWVsZW1lbnRzLmZsb2F0aW5nIHx8IHBsYWNlbWVudCA9PSBudWxsIHx8IHggPT0gbnVsbCB8fCB5ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qge1xuICAgICAgICBjbGllbnRYLFxuICAgICAgICBjbGllbnRZXG4gICAgICB9ID0gZXZlbnQ7XG4gICAgICBjb25zdCBjbGllbnRQb2ludCA9IFtjbGllbnRYLCBjbGllbnRZXTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGdldFRhcmdldChldmVudCk7XG4gICAgICBjb25zdCBpc0xlYXZlID0gZXZlbnQudHlwZSA9PT0gJ21vdXNlbGVhdmUnO1xuICAgICAgY29uc3QgaXNPdmVyRmxvYXRpbmdFbCA9IGNvbnRhaW5zKGVsZW1lbnRzLmZsb2F0aW5nLCB0YXJnZXQpO1xuICAgICAgY29uc3QgaXNPdmVyUmVmZXJlbmNlRWwgPSBjb250YWlucyhlbGVtZW50cy5kb21SZWZlcmVuY2UsIHRhcmdldCk7XG4gICAgICBjb25zdCByZWZSZWN0ID0gZWxlbWVudHMuZG9tUmVmZXJlbmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgcmVjdCA9IGVsZW1lbnRzLmZsb2F0aW5nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3Qgc2lkZSA9IHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xuICAgICAgY29uc3QgY3Vyc29yTGVhdmVGcm9tUmlnaHQgPSB4ID4gcmVjdC5yaWdodCAtIHJlY3Qud2lkdGggLyAyO1xuICAgICAgY29uc3QgY3Vyc29yTGVhdmVGcm9tQm90dG9tID0geSA+IHJlY3QuYm90dG9tIC0gcmVjdC5oZWlnaHQgLyAyO1xuICAgICAgY29uc3QgaXNPdmVyUmVmZXJlbmNlUmVjdCA9IGlzSW5zaWRlKGNsaWVudFBvaW50LCByZWZSZWN0KTtcbiAgICAgIGNvbnN0IGlzRmxvYXRpbmdXaWRlciA9IHJlY3Qud2lkdGggPiByZWZSZWN0LndpZHRoO1xuICAgICAgY29uc3QgaXNGbG9hdGluZ1RhbGxlciA9IHJlY3QuaGVpZ2h0ID4gcmVmUmVjdC5oZWlnaHQ7XG4gICAgICBjb25zdCBsZWZ0ID0gKGlzRmxvYXRpbmdXaWRlciA/IHJlZlJlY3QgOiByZWN0KS5sZWZ0O1xuICAgICAgY29uc3QgcmlnaHQgPSAoaXNGbG9hdGluZ1dpZGVyID8gcmVmUmVjdCA6IHJlY3QpLnJpZ2h0O1xuICAgICAgY29uc3QgdG9wID0gKGlzRmxvYXRpbmdUYWxsZXIgPyByZWZSZWN0IDogcmVjdCkudG9wO1xuICAgICAgY29uc3QgYm90dG9tID0gKGlzRmxvYXRpbmdUYWxsZXIgPyByZWZSZWN0IDogcmVjdCkuYm90dG9tO1xuICAgICAgaWYgKGlzT3ZlckZsb2F0aW5nRWwpIHtcbiAgICAgICAgaGFzTGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKCFpc0xlYXZlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNPdmVyUmVmZXJlbmNlRWwpIHtcbiAgICAgICAgaGFzTGFuZGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNPdmVyUmVmZXJlbmNlRWwgJiYgIWlzTGVhdmUpIHtcbiAgICAgICAgaGFzTGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBQcmV2ZW50IG92ZXJsYXBwaW5nIGZsb2F0aW5nIGVsZW1lbnQgZnJvbSBiZWluZyBzdHVjayBpbiBhbiBvcGVuLWNsb3NlXG4gICAgICAvLyBsb29wOiBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE5MTBcbiAgICAgIGlmIChpc0xlYXZlICYmIGlzRWxlbWVudChldmVudC5yZWxhdGVkVGFyZ2V0KSAmJiBjb250YWlucyhlbGVtZW50cy5mbG9hdGluZywgZXZlbnQucmVsYXRlZFRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBhbnkgbmVzdGVkIGNoaWxkIGlzIG9wZW4sIGFib3J0LlxuICAgICAgaWYgKHRyZWUgJiYgZ2V0Q2hpbGRyZW4odHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpLnNvbWUoX3JlZjIgPT4ge1xuICAgICAgICBsZXQge1xuICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgfSA9IF9yZWYyO1xuICAgICAgICByZXR1cm4gY29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogY29udGV4dC5vcGVuO1xuICAgICAgfSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgcG9pbnRlciBpcyBsZWF2aW5nIGZyb20gdGhlIG9wcG9zaXRlIHNpZGUsIHRoZSBcImJ1ZmZlclwiIGxvZ2ljXG4gICAgICAvLyBjcmVhdGVzIGEgcG9pbnQgd2hlcmUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgcmVtYWlucyBvcGVuLCBidXQgc2hvdWxkIGJlXG4gICAgICAvLyBpZ25vcmVkLlxuICAgICAgLy8gQSBjb25zdGFudCBvZiAxIGhhbmRsZXMgZmxvYXRpbmcgcG9pbnQgcm91bmRpbmcgZXJyb3JzLlxuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnICYmIHkgPj0gcmVmUmVjdC5ib3R0b20gLSAxIHx8IHNpZGUgPT09ICdib3R0b20nICYmIHkgPD0gcmVmUmVjdC50b3AgKyAxIHx8IHNpZGUgPT09ICdsZWZ0JyAmJiB4ID49IHJlZlJlY3QucmlnaHQgLSAxIHx8IHNpZGUgPT09ICdyaWdodCcgJiYgeCA8PSByZWZSZWN0LmxlZnQgKyAxKSB7XG4gICAgICAgIHJldHVybiBjbG9zZSgpO1xuICAgICAgfVxuXG4gICAgICAvLyBJZ25vcmUgd2hlbiB0aGUgY3Vyc29yIGlzIHdpdGhpbiB0aGUgcmVjdGFuZ3VsYXIgdHJvdWdoIGJldHdlZW4gdGhlXG4gICAgICAvLyB0d28gZWxlbWVudHMuIFNpbmNlIHRoZSB0cmlhbmdsZSBpcyBjcmVhdGVkIGZyb20gdGhlIGN1cnNvciBwb2ludCxcbiAgICAgIC8vIHdoaWNoIGNhbiBzdGFydCBiZXlvbmQgdGhlIHJlZiBlbGVtZW50J3MgZWRnZSwgdHJhdmVyc2luZyBiYWNrIGFuZFxuICAgICAgLy8gZm9ydGggZnJvbSB0aGUgcmVmIHRvIHRoZSBmbG9hdGluZyBlbGVtZW50IGNhbiBjYXVzZSBpdCB0byBjbG9zZS4gVGhpc1xuICAgICAgLy8gZW5zdXJlcyBpdCBhbHdheXMgcmVtYWlucyBvcGVuIGluIHRoYXQgY2FzZS5cbiAgICAgIGxldCByZWN0UG9seSA9IFtdO1xuICAgICAgc3dpdGNoIChzaWRlKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgcmVjdFBvbHkgPSBbW2xlZnQsIHJlZlJlY3QudG9wICsgMV0sIFtsZWZ0LCByZWN0LmJvdHRvbSAtIDFdLCBbcmlnaHQsIHJlY3QuYm90dG9tIC0gMV0sIFtyaWdodCwgcmVmUmVjdC50b3AgKyAxXV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgcmVjdFBvbHkgPSBbW2xlZnQsIHJlY3QudG9wICsgMV0sIFtsZWZ0LCByZWZSZWN0LmJvdHRvbSAtIDFdLCBbcmlnaHQsIHJlZlJlY3QuYm90dG9tIC0gMV0sIFtyaWdodCwgcmVjdC50b3AgKyAxXV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIHJlY3RQb2x5ID0gW1tyZWN0LnJpZ2h0IC0gMSwgYm90dG9tXSwgW3JlY3QucmlnaHQgLSAxLCB0b3BdLCBbcmVmUmVjdC5sZWZ0ICsgMSwgdG9wXSwgW3JlZlJlY3QubGVmdCArIDEsIGJvdHRvbV1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgcmVjdFBvbHkgPSBbW3JlZlJlY3QucmlnaHQgLSAxLCBib3R0b21dLCBbcmVmUmVjdC5yaWdodCAtIDEsIHRvcF0sIFtyZWN0LmxlZnQgKyAxLCB0b3BdLCBbcmVjdC5sZWZ0ICsgMSwgYm90dG9tXV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBnZXRQb2x5Z29uKF9yZWYzKSB7XG4gICAgICAgIGxldCBbeCwgeV0gPSBfcmVmMztcbiAgICAgICAgc3dpdGNoIChzaWRlKSB7XG4gICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9pbnRPbmUgPSBbaXNGbG9hdGluZ1dpZGVyID8geCArIGJ1ZmZlciAvIDIgOiBjdXJzb3JMZWF2ZUZyb21SaWdodCA/IHggKyBidWZmZXIgKiA0IDogeCAtIGJ1ZmZlciAqIDQsIHkgKyBidWZmZXIgKyAxXTtcbiAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9pbnRUd28gPSBbaXNGbG9hdGluZ1dpZGVyID8geCAtIGJ1ZmZlciAvIDIgOiBjdXJzb3JMZWF2ZUZyb21SaWdodCA/IHggKyBidWZmZXIgKiA0IDogeCAtIGJ1ZmZlciAqIDQsIHkgKyBidWZmZXIgKyAxXTtcbiAgICAgICAgICAgICAgY29uc3QgY29tbW9uUG9pbnRzID0gW1tyZWN0LmxlZnQsIGN1cnNvckxlYXZlRnJvbVJpZ2h0ID8gcmVjdC5ib3R0b20gLSBidWZmZXIgOiBpc0Zsb2F0aW5nV2lkZXIgPyByZWN0LmJvdHRvbSAtIGJ1ZmZlciA6IHJlY3QudG9wXSwgW3JlY3QucmlnaHQsIGN1cnNvckxlYXZlRnJvbVJpZ2h0ID8gaXNGbG9hdGluZ1dpZGVyID8gcmVjdC5ib3R0b20gLSBidWZmZXIgOiByZWN0LnRvcCA6IHJlY3QuYm90dG9tIC0gYnVmZmVyXV07XG4gICAgICAgICAgICAgIHJldHVybiBbY3Vyc29yUG9pbnRPbmUsIGN1cnNvclBvaW50VHdvLCAuLi5jb21tb25Qb2ludHNdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50T25lID0gW2lzRmxvYXRpbmdXaWRlciA/IHggKyBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyB4ICsgYnVmZmVyICogNCA6IHggLSBidWZmZXIgKiA0LCB5IC0gYnVmZmVyXTtcbiAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9pbnRUd28gPSBbaXNGbG9hdGluZ1dpZGVyID8geCAtIGJ1ZmZlciAvIDIgOiBjdXJzb3JMZWF2ZUZyb21SaWdodCA/IHggKyBidWZmZXIgKiA0IDogeCAtIGJ1ZmZlciAqIDQsIHkgLSBidWZmZXJdO1xuICAgICAgICAgICAgICBjb25zdCBjb21tb25Qb2ludHMgPSBbW3JlY3QubGVmdCwgY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyByZWN0LnRvcCArIGJ1ZmZlciA6IGlzRmxvYXRpbmdXaWRlciA/IHJlY3QudG9wICsgYnVmZmVyIDogcmVjdC5ib3R0b21dLCBbcmVjdC5yaWdodCwgY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyBpc0Zsb2F0aW5nV2lkZXIgPyByZWN0LnRvcCArIGJ1ZmZlciA6IHJlY3QuYm90dG9tIDogcmVjdC50b3AgKyBidWZmZXJdXTtcbiAgICAgICAgICAgICAgcmV0dXJuIFtjdXJzb3JQb2ludE9uZSwgY3Vyc29yUG9pbnRUd28sIC4uLmNvbW1vblBvaW50c107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50T25lID0gW3ggKyBidWZmZXIgKyAxLCBpc0Zsb2F0aW5nVGFsbGVyID8geSArIGJ1ZmZlciAvIDIgOiBjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyB5ICsgYnVmZmVyICogNCA6IHkgLSBidWZmZXIgKiA0XTtcbiAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9pbnRUd28gPSBbeCArIGJ1ZmZlciArIDEsIGlzRmxvYXRpbmdUYWxsZXIgPyB5IC0gYnVmZmVyIC8gMiA6IGN1cnNvckxlYXZlRnJvbUJvdHRvbSA/IHkgKyBidWZmZXIgKiA0IDogeSAtIGJ1ZmZlciAqIDRdO1xuICAgICAgICAgICAgICBjb25zdCBjb21tb25Qb2ludHMgPSBbW2N1cnNvckxlYXZlRnJvbUJvdHRvbSA/IHJlY3QucmlnaHQgLSBidWZmZXIgOiBpc0Zsb2F0aW5nVGFsbGVyID8gcmVjdC5yaWdodCAtIGJ1ZmZlciA6IHJlY3QubGVmdCwgcmVjdC50b3BdLCBbY3Vyc29yTGVhdmVGcm9tQm90dG9tID8gaXNGbG9hdGluZ1RhbGxlciA/IHJlY3QucmlnaHQgLSBidWZmZXIgOiByZWN0LmxlZnQgOiByZWN0LnJpZ2h0IC0gYnVmZmVyLCByZWN0LmJvdHRvbV1dO1xuICAgICAgICAgICAgICByZXR1cm4gWy4uLmNvbW1vblBvaW50cywgY3Vyc29yUG9pbnRPbmUsIGN1cnNvclBvaW50VHdvXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50T25lID0gW3ggLSBidWZmZXIsIGlzRmxvYXRpbmdUYWxsZXIgPyB5ICsgYnVmZmVyIC8gMiA6IGN1cnNvckxlYXZlRnJvbUJvdHRvbSA/IHkgKyBidWZmZXIgKiA0IDogeSAtIGJ1ZmZlciAqIDRdO1xuICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb2ludFR3byA9IFt4IC0gYnVmZmVyLCBpc0Zsb2F0aW5nVGFsbGVyID8geSAtIGJ1ZmZlciAvIDIgOiBjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyB5ICsgYnVmZmVyICogNCA6IHkgLSBidWZmZXIgKiA0XTtcbiAgICAgICAgICAgICAgY29uc3QgY29tbW9uUG9pbnRzID0gW1tjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyByZWN0LmxlZnQgKyBidWZmZXIgOiBpc0Zsb2F0aW5nVGFsbGVyID8gcmVjdC5sZWZ0ICsgYnVmZmVyIDogcmVjdC5yaWdodCwgcmVjdC50b3BdLCBbY3Vyc29yTGVhdmVGcm9tQm90dG9tID8gaXNGbG9hdGluZ1RhbGxlciA/IHJlY3QubGVmdCArIGJ1ZmZlciA6IHJlY3QucmlnaHQgOiByZWN0LmxlZnQgKyBidWZmZXIsIHJlY3QuYm90dG9tXV07XG4gICAgICAgICAgICAgIHJldHVybiBbY3Vyc29yUG9pbnRPbmUsIGN1cnNvclBvaW50VHdvLCAuLi5jb21tb25Qb2ludHNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNQb2ludEluUG9seWdvbihbY2xpZW50WCwgY2xpZW50WV0sIHJlY3RQb2x5KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaGFzTGFuZGVkICYmICFpc092ZXJSZWZlcmVuY2VSZWN0KSB7XG4gICAgICAgIHJldHVybiBjbG9zZSgpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0xlYXZlICYmIHJlcXVpcmVJbnRlbnQpIHtcbiAgICAgICAgY29uc3QgY3Vyc29yU3BlZWQgPSBnZXRDdXJzb3JTcGVlZChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICAgICAgY29uc3QgY3Vyc29yU3BlZWRUaHJlc2hvbGQgPSAwLjE7XG4gICAgICAgIGlmIChjdXJzb3JTcGVlZCAhPT0gbnVsbCAmJiBjdXJzb3JTcGVlZCA8IGN1cnNvclNwZWVkVGhyZXNob2xkKSB7XG4gICAgICAgICAgcmV0dXJuIGNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaXNQb2ludEluUG9seWdvbihbY2xpZW50WCwgY2xpZW50WV0sIGdldFBvbHlnb24oW3gsIHldKSkpIHtcbiAgICAgICAgY2xvc2UoKTtcbiAgICAgIH0gZWxzZSBpZiAoIWhhc0xhbmRlZCAmJiByZXF1aXJlSW50ZW50KSB7XG4gICAgICAgIHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGNsb3NlLCA0MCk7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcbiAgZm4uX19vcHRpb25zID0ge1xuICAgIGJsb2NrUG9pbnRlckV2ZW50c1xuICB9O1xuICByZXR1cm4gZm47XG59XG5cbmV4cG9ydCB7IENvbXBvc2l0ZSwgQ29tcG9zaXRlSXRlbSwgRmxvYXRpbmdBcnJvdywgRmxvYXRpbmdEZWxheUdyb3VwLCBGbG9hdGluZ0ZvY3VzTWFuYWdlciwgRmxvYXRpbmdMaXN0LCBGbG9hdGluZ05vZGUsIEZsb2F0aW5nT3ZlcmxheSwgRmxvYXRpbmdQb3J0YWwsIEZsb2F0aW5nVHJlZSwgaW5uZXIsIHNhZmVQb2x5Z29uLCB1c2VDbGljaywgdXNlQ2xpZW50UG9pbnQsIHVzZURlbGF5R3JvdXAsIHVzZURlbGF5R3JvdXBDb250ZXh0LCB1c2VEaXNtaXNzLCB1c2VGbG9hdGluZywgdXNlRmxvYXRpbmdOb2RlSWQsIHVzZUZsb2F0aW5nUGFyZW50Tm9kZUlkLCB1c2VGbG9hdGluZ1BvcnRhbE5vZGUsIHVzZUZsb2F0aW5nUm9vdENvbnRleHQsIHVzZUZsb2F0aW5nVHJlZSwgdXNlRm9jdXMsIHVzZUhvdmVyLCB1c2VJZCwgdXNlSW5uZXJPZmZzZXQsIHVzZUludGVyYWN0aW9ucywgdXNlTGlzdEl0ZW0sIHVzZUxpc3ROYXZpZ2F0aW9uLCB1c2VNZXJnZVJlZnMsIHVzZVJvbGUsIHVzZVRyYW5zaXRpb25TdGF0dXMsIHVzZVRyYW5zaXRpb25TdHlsZXMsIHVzZVR5cGVhaGVhZCB9O1xuIiwiaW1wb3J0IHsgb2Zmc2V0LCBhdXRvUGxhY2VtZW50LCBmbGlwLCBzaGlmdCwgYXJyb3cgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuXG5jb25zdCBnZXRNaWRkbGV3YXJlID0gKHtcbiAgYXJyb3dSZWYsXG4gIHBsYWNlbWVudFxufSkgPT4ge1xuICBjb25zdCBtaWRkbGV3YXJlID0gW107XG4gIG1pZGRsZXdhcmUucHVzaChvZmZzZXQoOCkpO1xuICBtaWRkbGV3YXJlLnB1c2gocGxhY2VtZW50ID09PSBcImF1dG9cIiA/IGF1dG9QbGFjZW1lbnQoKSA6IGZsaXAoKSk7XG4gIG1pZGRsZXdhcmUucHVzaChzaGlmdCh7IHBhZGRpbmc6IDggfSkpO1xuICBpZiAoYXJyb3dSZWY/LmN1cnJlbnQpIHtcbiAgICBtaWRkbGV3YXJlLnB1c2goYXJyb3coeyBlbGVtZW50OiBhcnJvd1JlZi5jdXJyZW50IH0pKTtcbiAgfVxuICByZXR1cm4gbWlkZGxld2FyZTtcbn07XG5jb25zdCBnZXRQbGFjZW1lbnQgPSAoeyBwbGFjZW1lbnQgfSkgPT4ge1xuICByZXR1cm4gcGxhY2VtZW50ID09PSBcImF1dG9cIiA/IHZvaWQgMCA6IHBsYWNlbWVudDtcbn07XG5jb25zdCBnZXRBcnJvd1BsYWNlbWVudCA9ICh7IHBsYWNlbWVudCB9KSA9PiB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBcImJvdHRvbVwiLFxuICAgIHJpZ2h0OiBcImxlZnRcIixcbiAgICBib3R0b206IFwidG9wXCIsXG4gICAgbGVmdDogXCJyaWdodFwiXG4gIH1bcGxhY2VtZW50LnNwbGl0KFwiLVwiKVswXV07XG59O1xuXG5leHBvcnQgeyBnZXRBcnJvd1BsYWNlbWVudCwgZ2V0TWlkZGxld2FyZSwgZ2V0UGxhY2VtZW50IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWxwZXJzLm1qcy5tYXBcbiIsImltcG9ydCB7IHVzZUZsb2F0aW5nLCBhdXRvVXBkYXRlLCB1c2VJbnRlcmFjdGlvbnMsIHVzZUNsaWNrLCB1c2VIb3Zlciwgc2FmZVBvbHlnb24sIHVzZURpc21pc3MsIHVzZVJvbGUgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuaW1wb3J0IHsgZ2V0UGxhY2VtZW50LCBnZXRNaWRkbGV3YXJlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9GbG9hdGluZy9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IHVzZUJhc2VGTG9hdGluZyA9ICh7XG4gIG9wZW4sXG4gIGFycm93UmVmLFxuICBwbGFjZW1lbnQgPSBcInRvcFwiLFxuICBzZXRPcGVuXG59KSA9PiB7XG4gIHJldHVybiB1c2VGbG9hdGluZyh7XG4gICAgcGxhY2VtZW50OiBnZXRQbGFjZW1lbnQoeyBwbGFjZW1lbnQgfSksXG4gICAgb3BlbixcbiAgICBvbk9wZW5DaGFuZ2U6IHNldE9wZW4sXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gICAgbWlkZGxld2FyZTogZ2V0TWlkZGxld2FyZSh7IHBsYWNlbWVudCwgYXJyb3dSZWYgfSlcbiAgfSk7XG59O1xuY29uc3QgdXNlRmxvYXRpbmdJbnRlcmFjdGlvbnMgPSAoe1xuICBjb250ZXh0LFxuICB0cmlnZ2VyLFxuICByb2xlID0gXCJ0b29sdGlwXCIsXG4gIGludGVyYWN0aW9ucyA9IFtdXG59KSA9PiB7XG4gIHJldHVybiB1c2VJbnRlcmFjdGlvbnMoW1xuICAgIHVzZUNsaWNrKGNvbnRleHQsIHsgZW5hYmxlZDogdHJpZ2dlciA9PT0gXCJjbGlja1wiIH0pLFxuICAgIHVzZUhvdmVyKGNvbnRleHQsIHtcbiAgICAgIGVuYWJsZWQ6IHRyaWdnZXIgPT09IFwiaG92ZXJcIixcbiAgICAgIGhhbmRsZUNsb3NlOiBzYWZlUG9seWdvbigpXG4gICAgfSksXG4gICAgdXNlRGlzbWlzcyhjb250ZXh0KSxcbiAgICB1c2VSb2xlKGNvbnRleHQsIHsgcm9sZSB9KSxcbiAgICAuLi5pbnRlcmFjdGlvbnNcbiAgXSk7XG59O1xuXG5leHBvcnQgeyB1c2VCYXNlRkxvYXRpbmcsIHVzZUZsb2F0aW5nSW50ZXJhY3Rpb25zIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2UtZmxvYXRpbmcubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4cywgRnJhZ21lbnQsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUZvY3VzLCBhdXRvVXBkYXRlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCB7IHVzZVJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyB1c2VCYXNlRkxvYXRpbmcsIHVzZUZsb2F0aW5nSW50ZXJhY3Rpb25zIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlLWZsb2F0aW5nLm1qcyc7XG5pbXBvcnQgeyBnZXRBcnJvd1BsYWNlbWVudCB9IGZyb20gJy4vaGVscGVycy5tanMnO1xuXG5jb25zdCBGbG9hdGluZyA9ICh7XG4gIGFuaW1hdGlvbiA9IFwiZHVyYXRpb24tMzAwXCIsXG4gIGFycm93ID0gdHJ1ZSxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgY29udGVudCxcbiAgcGxhY2VtZW50ID0gXCJ0b3BcIixcbiAgc3R5bGUgPSBcImRhcmtcIixcbiAgdGhlbWUsXG4gIHRyaWdnZXIgPSBcImhvdmVyXCIsXG4gIG1pbldpZHRoLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBhcnJvd1JlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBmbG9hdGluZ1Byb3BlcnRpZXMgPSB1c2VCYXNlRkxvYXRpbmcoe1xuICAgIG9wZW4sXG4gICAgcGxhY2VtZW50LFxuICAgIGFycm93UmVmLFxuICAgIHNldE9wZW5cbiAgfSk7XG4gIGNvbnN0IHtcbiAgICBjb250ZXh0LFxuICAgIG1pZGRsZXdhcmVEYXRhOiB7IGFycm93OiB7IHg6IGFycm93WCwgeTogYXJyb3dZIH0gPSB7fSB9LFxuICAgIHJlZnMsXG4gICAgc3RyYXRlZ3ksXG4gICAgdXBkYXRlLFxuICAgIHgsXG4gICAgeVxuICB9ID0gZmxvYXRpbmdQcm9wZXJ0aWVzO1xuICBjb25zdCBmb2N1cyA9IHVzZUZvY3VzKGNvbnRleHQpO1xuICBjb25zdCB7IGdldEZsb2F0aW5nUHJvcHMsIGdldFJlZmVyZW5jZVByb3BzIH0gPSB1c2VGbG9hdGluZ0ludGVyYWN0aW9ucyh7XG4gICAgY29udGV4dCxcbiAgICByb2xlOiBcInRvb2x0aXBcIixcbiAgICB0cmlnZ2VyLFxuICAgIGludGVyYWN0aW9uczogW2ZvY3VzXVxuICB9KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmcy5yZWZlcmVuY2UuY3VycmVudCAmJiByZWZzLmZsb2F0aW5nLmN1cnJlbnQgJiYgb3Blbikge1xuICAgICAgcmV0dXJuIGF1dG9VcGRhdGUocmVmcy5yZWZlcmVuY2UuY3VycmVudCwgcmVmcy5mbG9hdGluZy5jdXJyZW50LCB1cGRhdGUpO1xuICAgIH1cbiAgfSwgW29wZW4sIHJlZnMuZmxvYXRpbmcsIHJlZnMucmVmZXJlbmNlLCB1cGRhdGVdKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKEZyYWdtZW50LCB7IGNoaWxkcmVuOiBbXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7XG4gICAgICAgIHJlZjogcmVmcy5zZXRSZWZlcmVuY2UsXG4gICAgICAgIGNsYXNzTmFtZTogdGhlbWUudGFyZ2V0LFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtdG9vbHRpcC10YXJnZXRcIixcbiAgICAgICAgLi4uZ2V0UmVmZXJlbmNlUHJvcHMoKSxcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgIH1cbiAgICApLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgcmVmOiByZWZzLnNldEZsb2F0aW5nLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtdG9vbHRpcFwiLFxuICAgICAgICAuLi5nZXRGbG9hdGluZ1Byb3BzKHtcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICB0aGVtZS5iYXNlLFxuICAgICAgICAgICAgYW5pbWF0aW9uICYmIGAke3RoZW1lLmFuaW1hdGlvbn0gJHthbmltYXRpb259YCxcbiAgICAgICAgICAgICFvcGVuICYmIHRoZW1lLmhpZGRlbixcbiAgICAgICAgICAgIHRoZW1lLnN0eWxlW3N0eWxlXSxcbiAgICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICAgICksXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgICAgICAgIHRvcDogeSA/PyBcIiBcIixcbiAgICAgICAgICAgIGxlZnQ6IHggPz8gXCIgXCIsXG4gICAgICAgICAgICBtaW5XaWR0aFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4ucHJvcHNcbiAgICAgICAgfSksXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuY29udGVudCwgY2hpbGRyZW46IGNvbnRlbnQgfSksXG4gICAgICAgICAgYXJyb3cgJiYgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgICAgICB0aGVtZS5hcnJvdy5iYXNlLFxuICAgICAgICAgICAgICAgIHN0eWxlID09PSBcImRhcmtcIiAmJiB0aGVtZS5hcnJvdy5zdHlsZS5kYXJrLFxuICAgICAgICAgICAgICAgIHN0eWxlID09PSBcImxpZ2h0XCIgJiYgdGhlbWUuYXJyb3cuc3R5bGUubGlnaHQsXG4gICAgICAgICAgICAgICAgc3R5bGUgPT09IFwiYXV0b1wiICYmIHRoZW1lLmFycm93LnN0eWxlLmF1dG9cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXRvb2x0aXAtYXJyb3dcIixcbiAgICAgICAgICAgICAgcmVmOiBhcnJvd1JlZixcbiAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICB0b3A6IGFycm93WSA/PyBcIiBcIixcbiAgICAgICAgICAgICAgICBsZWZ0OiBhcnJvd1ggPz8gXCIgXCIsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFwiIFwiLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogXCIgXCIsXG4gICAgICAgICAgICAgICAgW2dldEFycm93UGxhY2VtZW50KHsgcGxhY2VtZW50OiBmbG9hdGluZ1Byb3BlcnRpZXMucGxhY2VtZW50IH0pXTogdGhlbWUuYXJyb3cucGxhY2VtZW50XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBcIlxceEEwXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBGbG9hdGluZyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmxvYXRpbmcubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBGbG9hdGluZyB9IGZyb20gJy4uL0Zsb2F0aW5nL0Zsb2F0aW5nLm1qcyc7XG5cbmNvbnN0IFRvb2x0aXAgPSAoe1xuICBhbmltYXRpb24gPSBcImR1cmF0aW9uLTMwMFwiLFxuICBhcnJvdyA9IHRydWUsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbnRlbnQsXG4gIHBsYWNlbWVudCA9IFwidG9wXCIsXG4gIHN0eWxlID0gXCJkYXJrXCIsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB0cmlnZ2VyID0gXCJob3ZlclwiLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnRvb2x0aXAsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgRmxvYXRpbmcsXG4gICAge1xuICAgICAgYW5pbWF0aW9uLFxuICAgICAgYXJyb3csXG4gICAgICBjb250ZW50LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3R5bGUsXG4gICAgICB0aGVtZSxcbiAgICAgIHRyaWdnZXIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcblRvb2x0aXAuZGlzcGxheU5hbWUgPSBcIlRvb2x0aXBcIjtcblxuZXhwb3J0IHsgVG9vbHRpcCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VG9vbHRpcC5tanMubWFwXG4iLCIvLyBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURURcbmltcG9ydCB7IEdlbkljb24gfSBmcm9tICcuLi9saWIvaW5kZXgubWpzJztcbmV4cG9ydCBmdW5jdGlvbiBGYTQyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDk2VjQxNkMzNDEuMDExIDQxNiAzNjEuODE4IDQxMS44NjEgMzgxLjIzIDQwMy44MjFDNDAwLjY0MSAzOTUuNzggNDE4LjI4IDM4My45OTUgNDMzLjEzOCAzNjkuMTM4QzQ0Ny45OTUgMzU0LjI4IDQ1OS43OCAzMzYuNjQxIDQ2Ny44MjEgMzE3LjIzQzQ3NS44NjEgMjk3LjgxOCA0ODAgMjc3LjAxMSA0ODAgMjU2QzQ4MCAyMzQuOTg5IDQ3NS44NjEgMjE0LjE4MiA0NjcuODIxIDE5NC43NzFDNDU5Ljc4IDE3NS4zNTkgNDQ3Ljk5NSAxNTcuNzIgNDMzLjEzOCAxNDIuODYzQzQxOC4yOCAxMjguMDA1IDQwMC42NDEgMTE2LjIyIDM4MS4yMyAxMDguMTc5QzM2MS44MTggMTAwLjEzOSAzNDEuMDExIDk2IDMyMCA5NlpNMCAyNTZMMTYwLjAwMiA0MTZMMzIwLjAwMyAyNTZMMTYwLjAwMiA5NkwwIDI1NlpNNDgwIDI1NkM0ODAgMjc3LjAxMSA0ODQuMTM4IDI5Ny44MTggNDkyLjE3OSAzMTcuMjNDNTAwLjIxOSAzMzYuNjQzIDUxMi4wMDUgMzU0LjI4IDUyNi44NjIgMzY5LjEzOEM1NDEuNzIgMzgzLjk5NSA1NTkuMzU3IDM5NS43ODEgNTc4Ljc3IDQwMy44MjFDNTk4LjE4MiA0MTEuODYyIDYxOC45ODkgNDE2IDY0MCA0MTZWOTZDNTk3LjU2NSA5NiA1NTYuODY5IDExMi44NTggNTI2Ljg2MiAxNDIuODYzQzQ5Ni44NTcgMTcyLjg2OSA0ODAgMjEzLjU2NSA0ODAgMjU2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE1MDBQeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDMuMyAzNDQuM2MtNi41LTE0LjItNi45LTE4LjMgNy40LTIzLjEgMjUuNi04IDggOS4yIDQzLjIgNDkuMmguM3YtOTMuOWMxLjItNTAuMiA0NC05Mi4yIDk3LjctOTIuMiA1My45IDAgOTcuNyA0My41IDk3LjcgOTYuOCAwIDYzLjQtNjAuOCAxMTMuMi0xMjguNSA5My4zLTEwLjUtNC4yLTIuMS0zMS43IDguNS0yOC42IDUzIDAgODkuNC0xMC4xIDg5LjQtNjQuNCAwLTYxLTc3LjEtODkuNi0xMTYuOS00NC42LTIzLjUgMjYuNC0xNy42IDQyLjEtMTcuNiAxNTcuNiA1MC43IDMxIDExOC4zIDIyIDE2MC40LTIwLjEgMjQuOC0yNC44IDM4LjUtNTggMzguNS05MyAwLTM1LjItMTMuOC02OC4yLTM4LjgtOTMuMy0yNC44LTI0LjgtNTcuOC0zOC41LTkzLjMtMzguNXMtNjguOCAxMy44LTkzLjUgMzguNWMtLjMuMy0xNiAxNi41LTIxLjIgMjMuOWwtLjUuNmMtMy4zIDQuNy02LjMgOS4xLTIwLjEgNi4xLTYuOS0xLjctMTQuMy01LjgtMTQuMy0xMS44VjIwYzAtNSAzLjktMTAuNSAxMC41LTEwLjVoMjQxLjNjOC4zIDAgOC4zIDExLjYgOC4zIDE1LjEgMCAzLjkgMCAxNS4xLTguMyAxNS4xSDEzMC4zdjEzMi45aC4zYzEwNC4yLTEwOS44IDI4Mi44LTM2IDI4Mi44IDEwOC45IDAgMTc4LjEtMjQ0LjggMjIwLjMtMzEwLjEgNjIuOHptNjMuMy0yNjAuOGMtLjUgNC4yIDQuNiAyNC41IDE0LjYgMjAuNkMzMDYgNTYuNiAzODQgMTQ0LjUgMzkwLjYgMTQ0LjVjNC44IDAgMjIuOC0xNS4zIDE0LjMtMjIuOC05My4yLTg5LTIzNC41LTU3LTIzOC4zLTM4LjJ6TTM5MyA0MTQuN0MyODMgNTI0LjYgOTQgNDc1LjUgNjEgMzEwLjVjMC0xMi4yLTMwLjQtNy40LTI4LjkgMy4zIDI0IDE3My40IDI0NiAyNTYuOSAzODEuNiAxMjEuMyA2LjktNy44LTEyLjYtMjguNC0yMC43LTIwLjR6TTIxMy42IDMwNi42YzAgNCA0LjMgNy4zIDUuNSA4LjUgMyAzIDYuMSA0LjQgOC41IDQuNCAzLjggMCAyLjYuMiAyMi4zLTE5LjUgMTkuNiAxOS4zIDE5LjEgMTkuNSAyMi4zIDE5LjUgNS40IDAgMTguNS0xMC40IDEwLjctMTguMkwyNjUuNiAyODRsMTguMi0xOC4yYzYuMy02LjgtMTAuMS0yMS44LTE2LjItMTUuN0wyNDkuNyAyNjhjLTE4LjYtMTguOC0xOC40LTE5LjUtMjEuNS0xOS41LTUgMC0xOCAxMS43LTEyLjQgMTcuM0wyMzQgMjg0Yy0xOC4xIDE3LjktMjAuNCAxOS4yLTIwLjQgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWNjZXNzaWJsZUljb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIzLjkgMjU1LjhMNDExIDQxMy4xYy0zLjMgNDAuNy02My45IDM1LjEtNjAuNi00LjlsMTAtMTIyLjUtNDEuMSAyLjNjMTAuMSAyMC43IDE1LjggNDMuOSAxNS44IDY4LjUgMCA0MS4yLTE2LjEgNzguNy00Mi4zIDEwNi41bC0zOS4zLTM5LjNjNTcuOS02My43IDEzLjEtMTY3LjItNzQtMTY3LjItMjUuOSAwLTQ5LjUgOS45LTY3LjIgMjZMNzMgMjQzLjJjMjItMjAuNyA1MC4xLTM1LjEgODEuNC00MC4ybDc1LjMtODUuNy00Mi42LTI0LjgtNTEuNiA0NmMtMzAgMjYuOC03MC42LTE4LjUtNDAuNS00NS40bDY4LTYwLjdjOS44LTguOCAyNC4xLTEwLjIgMzUuNS0zLjYgMCAwIDEzOS4zIDgwLjkgMTM5LjUgODEuMSAxNi4yIDEwLjEgMjAuNyAzNiA2LjEgNTIuNkwyODUuNyAyMjlsMTA2LjEtNS45YzE4LjUtMS4xIDMzLjYgMTQuNCAzMi4xIDMyLjd6bS02NC45LTE1NGMyOC4xIDAgNTAuOS0yMi44IDUwLjktNTAuOUM0MDkuOSAyMi44IDM4Ny4xIDAgMzU5IDBjLTI4LjEgMC01MC45IDIyLjgtNTAuOSA1MC45IDAgMjguMSAyMi44IDUwLjkgNTAuOSA1MC45ek0xNzkuNiA0NTYuNWMtODAuNiAwLTEyNy40LTkwLjYtODIuNy0xNTYuMWwtMzkuNy0zOS43QzM2LjQgMjg3IDI0IDMyMC4zIDI0IDM1Ni40YzAgMTMwLjcgMTUwLjcgMjAxLjQgMjUxLjQgMTIyLjVsLTM5LjctMzkuN2MtMTYgMTAuOS0zNS4zIDE3LjMtNTYuMSAxNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBY2N1c29mdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjIuMSAyNTJ2LTFsLTUxLjItNjUuOHMtMTIgMS42LTI1IDE1LjFjLTkgOS4zLTI0Mi4xIDIzOS4xLTI0My40IDI0MC45LTcgMTAgMS42IDYuOCAxNS43IDEuNy44IDAgMTE0LjUtMzYuNiAxMTQuNS0zNi42LjUtLjYtLjEtLjEuNi0uNi0uNC01LjEtLjgtMjYuMi0xLTI3LjctLjYtNS4yIDIuMi02LjkgNy04LjlsOTIuNi0zMy44Yy42LS44IDg4LjUtODEuNyA5MC4yLTgzLjN6bTE2MC4xIDEyMC4xYzEzLjMgMTYuMSAyMC43IDEzLjMgMzAuOCA5LjMgMy4yLTEuMiAxMTUuNC00Ny42IDExNy44LTQ4LjkgOC00LjMtMS43LTE2LjctNy4yLTIzLjQtMi4xLTIuNS0yMDUuMS0yNDUuNi0yMDcuMi0yNDguMy05LjctMTIuMi0xNC4zLTEyLjktMzguNC0xMi44LTEwLjIgMC0xMDYuOC41LTExNi41LjYtMTkuMi4xLTMyLjktLjMtMTkuMiAxNi45QzI1MCA3NSA0NzYuNSAzNjUuMiA0ODIuMiAzNzIuMXptMTUyLjcgMS42Yy0yLjMtLjMtMjQuNi00LjctMzgtNy4yIDAgMC0xMTUgNTAuNC0xMTcuNSA1MS42LTE2IDcuMy0yNi45LTMuMi0zNi43LTE0LjZsLTU3LjEtNzRjLTUuNC0uOS02MC40LTkuNi02NS4zLTkuMy0zLjEuMi05LjYuOC0xNC40IDIuOS00LjkgMi4xLTE0NS4yIDUyLjgtMTUwLjIgNTQuNy01LjEgMi0xMS40IDMuNi0xMS4xIDcuNi4yIDIuNSAyIDIuNiA0LjYgMy41IDIuNy44IDMwMC45IDY3LjYgMzA4IDY5LjEgMTUuNiAzLjMgMzguNSAxMC41IDUzLjYgMS43IDIuMS0xLjIgMTIzLjgtNzYuNCAxMjUuOC03Ny44IDUuNC00IDQuMy02LjgtMS43LTguMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWRuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCAxNjcuNWw2NC45IDk4LjhIMTgzLjFsNjQuOS05OC44ek00OTYgMjU2YzAgMTM2LjktMTExLjEgMjQ4LTI0OCAyNDhTMCAzOTIuOSAwIDI1NiAxMTEuMSA4IDI0OCA4czI0OCAxMTEuMSAyNDggMjQ4em0tOTkuOCA4Mi43TDI0OCAxMTUuNSA5OS44IDMzOC43aDMwLjRsMzMuNi01MS43aDE2OC42bDMzLjYgNTEuN2gzMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZHZlcnNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODIuMSAzMkgyOC43QzUuOCAzMiAwIDM3LjkgMCA2MC45djM5MC4yQzAgNDc0LjQgNS44IDQ4MCAyOC43IDQ4MGg0NTMuNGMyNC40IDAgMjkuOS01LjIgMjkuOS0yOS43VjYyLjJjMC0yNC42LTUuNC0zMC4yLTI5LjktMzAuMnpNMTc4LjQgMjIwLjNjLTI3LjUtMjAuMi03Mi4xLTguNy04NC4yIDIzLjQtNC4zIDExLjEtOS4zIDkuNS0xNy41IDguMy05LjctMS41LTE3LjItMy4yLTIyLjUtNS41LTI4LjgtMTEuNCA4LjYtNTUuMyAyNC45LTY0LjMgNDEuMS0yMS40IDgzLjQtMjIuMiAxMjUuMy00LjggNDAuOSAxNi44IDM0LjUgNTkuMiAzNC41IDEyOC41IDIuNyAyNS44LTQuMyA1OC4zIDkuMyA4OC44IDEuOSA0LjQuNCA3LjktMi43IDEwLjctOC40IDYuNy0zOS4zIDIuMi00Ni42LTcuNC0xLjktMi4yLTEuOC0zLjYtMy45LTYuMi0zLjYtMy45LTcuMy0yLjItMTEuOSAxLTU3LjQgMzYuNC0xNDAuMyAyMS40LTE0Ny00My4zLTMuMS0yOS4zIDEyLjQtNTcuMSAzOS42LTcxIDM4LjItMTkuNSAxMTIuMi0xMS44IDExNC0zMC45IDEuMS0xMC4yLTEuOS0yMC4xLTExLjMtMjcuM3ptMjg2LjcgMjIyYzAgMTUuMS0xMS4xIDkuOS0xNy44IDkuOUg1Mi40Yy03LjQgMC0xOC4yIDQuOC0xNy44LTEwLjcuNC0xMy45IDEwLjUtOS4xIDE3LjEtOS4xIDEzMi4zLS40IDI2NC41LS40IDM5Ni44IDAgNi44IDAgMTYuNi00LjQgMTYuNiA5Ljl6bTMuOC0zNDAuNXYyOTFjMCA1LjctLjcgMTMuOS04LjEgMTMuOS0xMi40LS40LTI3LjUgNy4xLTM2LjEtNS42LTUuOC04LjctNy44LTQtMTIuNC0xLjItNTMuNCAyOS43LTEyOC4xIDcuMS0xNDQuNC04NS4yLTYuMS0zMy40LS43LTY3LjEgMTUuNy0xMDAgMTEuOC0yMy45IDU2LjktNzYuMSAxMzYuMS0zMC41di03MWMwLTI2LjItLjEtMjYuMiAyNi0yNi4yIDMuMSAwIDYuNi40IDkuNyAwIDEwLjEtLjggMTMuNiA0LjQgMTMuNiAxNC4zLS4xLjItLjEuMy0uMS41em0tNTEuNSAyMzIuM2MtMTkuNSA0Ny42LTcyLjkgNDMuMy05MCA1LjItMTUuMS0zMy4zLTE1LjUtNjguMi40LTEwMS41IDE2LjMtMzQuMSA1OS43LTM1LjcgODEuNS00LjggMjAuNiAyOC44IDE0LjkgODQuNiA4LjEgMTAxLjF6bS0yOTQuOCAzNS4zYy03LjUtMS4zLTMzLTMuMy0zMy43LTI3LjgtLjQtMTMuOSA3LjgtMjMgMTkuOC0yNS44IDI0LjQtNS45IDQ5LjMtOS45IDczLjctMTQuNyA4LjktMiA3LjQgNC40IDcuOCA5LjUgMS40IDMzLTI2LjEgNTkuMi02Ny42IDU4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFmZmlsaWF0ZXRoZW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1OS43IDIzNy40QzEwOC40IDMwOC4zIDQzLjEgMzQ4LjIgMTQgMzI2LjYtMTUuMiAzMDQuOSAyLjggMjMwIDU0LjIgMTU5LjFjNTEuMy03MC45IDExNi42LTExMC44IDE0NS43LTg5LjIgMjkuMSAyMS42IDExLjEgOTYuNi00MC4yIDE2Ny41em0zNTEuMi01Ny4zQzQzNy4xIDMwMy41IDMxOSAzNjcuOCAyNDYuNCAzMjMuN2MtMjUtMTUuMi00MS4zLTQxLjItNDktNzMuOC0zMy42IDY0LjgtOTIuOCAxMTMuOC0xNjQuMSAxMzMuMiA0OS44IDU5LjMgMTI0LjEgOTYuOSAyMDcgOTYuOSAxNTAgMCAyNzEuNi0xMjMuMSAyNzEuNi0yNzQuOS4xLTguNS0uMy0xNi44LTEtMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFpcmJuYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzczLjEyYy0yNS4yNC0zMS42Ny00MC4wOC01OS40My00NS04My4xOC0yMi41NS04OCAxMTIuNjEtODggOTAuMDYgMC01LjQ1IDI0LjI1LTIwLjI5IDUyLTQ1IDgzLjE4em0xMzguMTUgNzMuMjNjLTQyLjA2IDE4LjMxLTgzLjY3LTEwLjg4LTExOS4zLTUwLjQ3IDEwMy45LTEzMC4wNyA0Ni4xMS0yMDAtMTguODUtMjAwLTU0LjkyIDAtODUuMTYgNDYuNTEtNzMuMjggMTAwLjUgNi45MyAyOS4xOSAyNS4yMyA2Mi4zOSA1NC40MyA5OS41LTMyLjUzIDM2LjA1LTYwLjU1IDUyLjY5LTg1LjE1IDU0LjkyLTUwIDcuNDMtODkuMTEtNDEuMDYtNzEuMy05MS4wOSAxNS4xLTM5LjE2IDExMS43Mi0yMzEuMTggMTE1Ljg3LTI0MS41NiAxNS43NS0zMC4wNyAyNS41Ni01Ny40IDU5LjM4LTU3LjQgMzIuMzQgMCA0My40IDI1Ljk0IDYwLjM3IDU5Ljg3IDM2IDcwLjYyIDg5LjM1IDE3Ny40OCAxMTQuODQgMjM5LjA5IDEzLjE3IDMzLjA3LTEuMzcgNzEuMjktMzcuMDEgODYuNjR6bTQ3LTEzNi4xMkMyODAuMjcgMzUuOTMgMjczLjEzIDMyIDIyNCAzMmMtNDUuNTIgMC02NC44NyAzMS42Ny04NC42NiA3Mi43OUMzMy4xOCAzMTcuMSAyMi44OSAzNDcuMTkgMjIgMzQ5LjgxLTMuMjIgNDE5LjE0IDQ4Ljc0IDQ4MCAxMTEuNjMgNDgwYzIxLjcxIDAgNjAuNjEtNi4wNiAxMTIuMzctNjIuNCA1OC42OCA2My43OCAxMDEuMjYgNjIuNCAxMTIuMzcgNjIuNCA2Mi44OS4wNSAxMTQuODUtNjAuODYgODkuNjEtMTMwLjE5LjAyLTMuODktMTYuODItMzguOS0xNi44Mi0zOS41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxnb2xpYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMEMxMTYuMSAwIDIgMTEyLjcgMCAyNTIuMUMtMiAzOTMuNiAxMTIuOSA1MTAuOCAyNTQuNSA1MTEuNmM0My43IC4zIDg1LjktMTAuNCAxMjMuMy0zMC43YzMuNi0yIDQuMi03IDEuMS05LjdsLTI0LTIxLjJjLTQuOS00LjMtMTEuOC01LjUtMTcuOC0zYy0yNi4xIDExLjEtNTQuNSAxNi44LTgzLjcgMTYuNEMxMzkgNDYxLjkgNDYuNSAzNjYuOCA0OC4zIDI1Mi40QzUwLjEgMTM5LjUgMTQyLjYgNDguMiAyNTYgNDguMkg0NjMuN1Y0MTcuMkwzNDUuOSAzMTIuNWMtMy44LTMuNC05LjctMi43LTEyLjcgMS4zYy0xOC45IDI1LTQ5LjcgNDAuNi04My45IDM4LjJjLTQ3LjUtMy4zLTg1LjktNDEuNS04OS41LTg4LjljLTQuMi01Ni42IDQwLjYtMTAzLjkgOTYuMy0xMDMuOWM1MC40IDAgOTEuOSAzOC44IDk2LjIgODhjLjQgNC40IDIuNCA4LjUgNS43IDExLjRsMzAuNyAyNy4yYzMuNSAzLjEgOSAxLjIgOS45LTMuNGMyLjItMTEuOCAzLTI0LjIgMi4xLTM2LjhjLTQuOS03Mi02My4zLTEzMC0xMzUuNC0xMzQuNGMtODIuNy01LjEtMTUxLjggNTkuNS0xNTQgMTQwLjZjLTIuMSA3OC45IDYyLjYgMTQ3IDE0MS42IDE0OC43YzMzIC43IDYzLjYtOS42IDg4LjMtMjcuNkw0OTUgNTA5LjRjNi42IDUuOCAxNyAxLjIgMTctNy43VjkuN2MwLTUuNC00LjQtOS43LTkuNy05LjdIMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGlwYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc3Ljc0IDMySDcwLjI2QzMxLjQxIDMyIDAgNjMuNDEgMCAxMDIuMjZ2MzA3LjQ4QzAgNDQ4LjU5IDMxLjQxIDQ4MCA3MC4yNiA0ODBoMzA3LjQ4YzM4LjUyIDAgNjkuNzYtMzEuMDggNzAuMjYtNjkuNi00NS45Ni0yNS42Mi0xMTAuNTktNjAuMzQtMTcxLjYtODguNDQtMzIuMDcgNDMuOTctODQuMTQgODEtMTQ4LjYyIDgxLTcwLjU5IDAtOTMuNzMtNDUuMy05Ny4wNC03Ni4zNy0zLjk3LTM5LjAxIDE0Ljg4LTgxLjUgOTkuNTItODEuNSAzNS4zOCAwIDc5LjM1IDEwLjI1IDEyNy4xMyAyNC45NiAxNi41My0zMC4wOSAyNi40NS02MC4zNCAyNi40NS02MC4zNGgtMTc4LjJ2LTE2LjdoOTIuMDh2LTMxLjI0SDg4LjI4di0xOS4wMWgxMDkuNDRWOTIuMzRoNTAuOTJ2NTAuNDJoMTA5LjQ0djE5LjAxSDI0OC42M3YzMS4yNGg4OC43N3MtMTUuMjEgNDYuNjItMzguMzUgOTAuOTJjNDguOTMgMTYuNyAxMDAuMDEgMzYuMDQgMTQ4LjYyIDUyLjc0VjEwMi4yNkM0NDcuODMgNjMuNTcgNDE2LjQzIDMyIDM3Ny43NCAzMnpNNDcuMjggMzIyLjk1Yy45OSAyMC4xNyAxMC4yNSA1My43MyA2OS45MyA1My43MyA1Mi4wNyAwIDkyLjU4LTM5LjY4IDExNy44Ny03Mi45LTQ0LjYzLTE4LjY4LTg0LjQ4LTMxLjQxLTEwOS40NC0zMS40MS02Ny40NSAwLTc5LjM1IDMzLjA2LTc4LjM2IDUwLjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWF6b25QYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMzI1LjNjMi4zLTQuMiA1LjItNC45IDkuNy0yLjUgMTAuNCA1LjYgMjAuNiAxMS40IDMxLjIgMTYuN2E1OTUuODggNTk1Ljg4IDAgMCAwIDEyNy40IDQ2LjMgNjE2LjYxIDYxNi42MSAwIDAgMCA2My4yIDExLjggNjAzLjMzIDYwMy4zMyAwIDAgMCA5NSA1LjJjMTcuNC0uNCAzNC44LTEuOCA1Mi4xLTMuOGE2MDMuNjYgNjAzLjY2IDAgMCAwIDE2My4zLTQyLjhjMi45LTEuMiA1LjktMiA5LjEtMS4yIDYuNyAxLjggOSA5IDQuMSAxMy45YTcwIDcwIDAgMCAxLTkuNiA3LjRjLTMwLjcgMjEuMS02NC4yIDM2LjQtOTkuNiA0Ny45YTQ3My4zMSA0NzMuMzEgMCAwIDEtNzUuMSAxNy42IDQzMSA0MzEgMCAwIDEtNTMuMiA0LjggMjEuMyAyMS4zIDAgMCAwLTIuNS4zSDMwOGEyMS4zIDIxLjMgMCAwIDAtMi41LS4zYy0zLjYtLjItNy4yLS4zLTEwLjctLjRhNDI2LjMgNDI2LjMgMCAwIDEtNTAuNC01LjNBNDQ4LjQgNDQ4LjQgMCAwIDEgMTY0IDQyMGE0NDMuMzMgNDQzLjMzIDAgMCAxLTE0NS42LTg3Yy0xLjgtMS42LTMtMy44LTQuNC01Ljd6TTE3MiA2NS4xbC00LjMuNmE4MC45MiA4MC45MiAwIDAgMC0zOCAxNS4xYy0yLjQgMS43LTQuNiAzLjUtNy4xIDUuNGE0LjI5IDQuMjkgMCAwIDEtLjQtMS40Yy0uNC0yLjctLjgtNS41LTEuMy04LjItLjctNC42LTMtNi42LTcuNi02LjZoLTExLjVjLTYuOSAwLTguMiAxLjMtOC4yIDguMnYyMDkuM2MwIDEgMCAyIC4xIDMgLjIgMyAyIDQuOSA0LjkgNSA3IC4xIDE0LjEuMSAyMS4xIDAgMi45IDAgNC43LTIgNS01IC4xLTEgLjEtMiAuMS0zdi03Mi40YzEuMS45IDEuNyAxLjQgMi4yIDEuOSAxNy45IDE0LjkgMzguNSAxOS44IDYxIDE1LjQgMjAuNC00IDM0LjYtMTYuNSA0My44LTM0LjkgNy0xMy45IDkuOS0yOC43IDEwLjMtNDQuMS41LTE3LjEtMS4yLTMzLjktOC4xLTQ5LjgtOC41LTE5LjYtMjIuNi0zMi41LTQzLjktMzYuOS0zLjItLjctNi41LTEtOS44LTEuNS0yLjgtLjEtNS41LS4xLTguMy0uMXpNMTI0LjYgMTA3YTMuNDggMy40OCAwIDAgMSAxLjctMy4zYzEzLjctOS41IDI4LjgtMTQuNSA0NS42LTEzLjIgMTQuOSAxLjEgMjcuMSA4LjQgMzMuNSAyNS45IDMuOSAxMC43IDQuOSAyMS44IDQuOSAzMyAwIDEwLjQtLjggMjAuNi00IDMwLjYtNi44IDIxLjMtMjIuNCAyOS40LTQyLjYgMjguNS0xNC0uNi0yNi4yLTYtMzcuNC0xMy45YTMuNTcgMy41NyAwIDAgMS0xLjctMy4zYy4xLTE0LjEgMC0yOC4xIDAtNDIuMnMuMS0yOCAwLTQyLjF6bTIwNS43LTQxLjljLTEgLjEtMiAuMy0yLjkuNGExNDggMTQ4IDAgMCAwLTI4LjkgNC4xYy02LjEgMS42LTEyIDMuOC0xNy45IDUuOC0zLjYgMS4yLTUuNCAzLjgtNS4zIDcuNy4xIDMuMy0uMSA2LjYgMCA5LjkuMSA0LjggMi4xIDYuMSA2LjggNC45IDcuOC0yIDE1LjYtNC4yIDIzLjUtNS43IDEyLjMtMi4zIDI0LjctMy4zIDM3LjItMS40IDYuNSAxIDEyLjYgMi45IDE2LjggOC40IDMuNyA0LjggNS4xIDEwLjUgNS4zIDE2LjQuMyA4LjMuMiAxNi42LjMgMjQuOWE3Ljg0IDcuODQgMCAwIDEtLjIgMS40Yy0uNS0uMS0uOSAwLTEuMy0uMWExODAuNTYgMTgwLjU2IDAgMCAwLTMyLTQuOWMtMTEuMy0uNi0yMi41LjEtMzMuMyAzLjktMTIuOSA0LjUtMjMuMyAxMi4zLTI5LjQgMjQuOS00LjcgOS44LTUuNCAyMC4yLTMuOSAzMC43IDIgMTQgOSAyNC44IDIxLjQgMzEuNyAxMS45IDYuNiAyNC44IDcuNCAzNy45IDUuNCAxNS4xLTIuMyAyOC41LTguNyA0MC4zLTE4LjRhNy4zNiA3LjM2IDAgMCAxIDEuNi0xLjFjLjYgMy44IDEuMSA3LjQgMS44IDExIC42IDMuMSAyLjUgNS4xIDUuNCA1LjIgNS40LjEgMTAuOS4xIDE2LjMgMGE0Ljg0IDQuODQgMCAwIDAgNC44LTQuNyAyNi4yIDI2LjIgMCAwIDAgLjEtMi44di0xMDZhODAgODAgMCAwIDAtLjktMTIuOWMtMS45LTEyLjktNy40LTIzLjUtMTktMzAuNC02LjctNC0xNC4xLTYtMjEuOC03LjEtMy42LS41LTcuMi0uOC0xMC44LTEuMy0zLjkuMS03LjkuMS0xMS45LjF6bTM1IDEyNy43YTMuMzMgMy4zMyAwIDAgMS0xLjUgM2MtMTEuMiA4LjEtMjMuNSAxMy41LTM3LjQgMTQuOS01LjcuNi0xMS40LjQtMTYuOC0xLjhhMjAuMDggMjAuMDggMCAwIDEtMTIuNC0xMy4zIDMyLjkgMzIuOSAwIDAgMS0uMS0xOS40YzIuNS04LjMgOC40LTEzIDE2LjQtMTUuNmE2MS4zMyA2MS4zMyAwIDAgMSAyNC44LTIuMmM4LjQuNyAxNi42IDIuMyAyNSAzLjQgMS42LjIgMi4xIDEgMi4xIDIuNi0uMSA0LjggMCA5LjUgMCAxNC4zcy0uMiA5LjQtLjEgMTQuMXptMjU5LjkgMTI5LjRjLTEtNS00LjgtNi45LTkuMS04LjNhODguNDIgODguNDIgMCAwIDAtMjEtMy45IDE0Ny4zMiAxNDcuMzIgMCAwIDAtMzkuMiAxLjljLTE0LjMgMi43LTI3LjkgNy4zLTQwIDE1LjZhMTMuNzUgMTMuNzUgMCAwIDAtMy43IDMuNSA1LjExIDUuMTEgMCAwIDAtLjUgNGMuNCAxLjUgMi4xIDEuOSAzLjYgMS44YTE2LjIgMTYuMiAwIDAgMCAyLjItLjFjNy44LS44IDE1LjUtMS43IDIzLjMtMi41IDExLjQtMS4xIDIyLjktMS44IDM0LjMtLjlhNzEuNjQgNzEuNjQgMCAwIDEgMTQuNCAyLjdjNS4xIDEuNCA3LjQgNS4yIDcuNiAxMC40LjQgOC0xLjQgMTUuNy0zLjUgMjMuMy00LjEgMTUuNC0xMCAzMC4zLTE1LjggNDUuMWExNy42IDE3LjYgMCAwIDAtMSAzYy0uNSAyLjkgMS4yIDQuOCA0LjEgNC4xYTEwLjU2IDEwLjU2IDAgMCAwIDQuOC0yLjUgMTQ1LjkxIDE0NS45MSAwIDAgMCAxMi43LTEzLjRjMTIuOC0xNi40IDIwLjMtMzUuMyAyNC43LTU1LjYuOC0zLjYgMS40LTcuMyAyLjEtMTAuOXYtMTcuM3pNNDkzLjEgMTk5cS0xOS4zNS01My41NS0zOC43LTEwNy4yYy0yLTUuNy00LjItMTEuMy02LjMtMTYuOS0xLjEtMi45LTMuMi00LjgtNi40LTQuOC03LjYtLjEtMTUuMi0uMi0yMi45LS4xLTIuNSAwLTMuNyAyLTMuMiA0LjVhNDMuMSA0My4xIDAgMCAwIDEuOSA2LjFxMjkuNCA3Mi43NSA1OS4xIDE0NS41YzEuNyA0LjEgMi4xIDcuNi4yIDExLjgtMy4zIDcuMy01LjkgMTUtOS4zIDIyLjMtMyA2LjUtOCAxMS40LTE1LjIgMTMuM2E0Mi4xMyA0Mi4xMyAwIDAgMS0xNS40IDEuMWMtMi41LS4yLTUtLjgtNy41LTEtMy40LS4yLTUuMSAxLjMtNS4yIDQuOHEtLjE1IDUgMCA5LjljLjEgNS41IDIgOCA3LjQgOC45YTEwOC4xOCAxMDguMTggMCAwIDAgMTYuOSAyYzE3LjEuNCAzMC43LTYuNSAzOS41LTIxLjRhMTMxLjYzIDEzMS42MyAwIDAgMCA5LjItMTguNHEzNS41NS04OS43IDcwLjYtMTc5LjZhMjYuNjIgMjYuNjIgMCAwIDAgMS42LTUuNWMuNC0yLjgtLjktNC40LTMuNy00LjQtNi42LS4xLTEzLjMgMC0xOS45IDBhNy41NCA3LjU0IDAgMCAwLTcuNyA1LjJjLS41IDEuNC0xLjEgMi43LTEuNiA0LjFsLTM0LjggMTAwYy0yLjUgNy4yLTUuMSAxNC41LTcuNyAyMi4yLS40LTEuMS0uNi0xLjctLjktMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWF6b24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU3LjIgMTYyLjdjLTQ4LjcgMS44LTE2OS41IDE1LjUtMTY5LjUgMTE3LjUgMCAxMDkuNSAxMzguMyAxMTQgMTgzLjUgNDMuMiA2LjUgMTAuMiAzNS40IDM3LjUgNDUuMyA0Ni44bDU2LjgtNTZTMzQxIDI4OC45IDM0MSAyNjEuNFYxMTQuM0MzNDEgODkgMzE2LjUgMzIgMjI4LjcgMzIgMTQwLjcgMzIgOTQgODcgOTQgMTM2LjNsNzMuNSA2LjhjMTYuMy00OS41IDU0LjItNDkuNSA1NC4yLTQ5LjUgNDAuNy0uMSAzNS41IDI5LjggMzUuNSA2OS4xem0wIDg2LjhjMCA4MC04NC4yIDY4LTg0LjIgMTcuMiAwLTQ3LjIgNTAuNS01Ni43IDg0LjItNTcuOHY0MC42em0xMzYgMTYzLjVjLTcuNyAxMC03MCA2Ny0xNzQuNSA2N1MzNC4yIDQwOC41IDkuNyAzNzljLTYuOC03LjcgMS0xMS4zIDUuNS04LjNDODguNSA0MTUuMiAyMDMgNDg4LjUgMzg3LjcgNDAxYzcuNS0zLjcgMTMuMyAyIDUuNSAxMnptMzkuOCAyLjJjLTYuNSAxNS44LTE2IDI2LjgtMjEuMiAzMS01LjUgNC41LTkuNSAyLjctNi41LTMuOHMxOS4zLTQ2LjUgMTIuNy01NWMtNi41LTguMy0zNy00LjMtNDgtMy4yLTEwLjggMS0xMyAyLTE0LS4zLTIuMy01LjcgMjEuNy0xNS41IDM3LjUtMTcuNSAxNS43LTEuOCA0MS0uOCA0NiA1LjcgMy43IDUuMSAwIDI3LjEtNi41IDQzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFtaWxpYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAuMSAzMmMtNjEuOSAwLTEzMS41IDE2LjktMTg0LjIgNTUuNC01LjEgMy4xLTkuMSA5LjItNy4yIDE5LjQgMS4xIDUuMSA1LjEgMjcuNCAxMC4yIDM5LjYgNC4xIDEwLjIgMTQuMiAxMC4yIDIwLjMgNi4xIDMyLjUtMjIuMyA5Ni41LTQ3LjcgMTUyLjMtNDcuNyA1Ny45IDAgNTguOSAyOC40IDU4LjkgNzMuMXYzOC41QzIwMyAyMjcuNyA3OC4yIDI1MSA0Ni43IDI2NC4yIDExLjIgMjgwLjUgMTYuMyAzNTcuNyAxNi4zIDM3NnMxNS4yIDEwNCAxMjQuOSAxMDRjNDcuOCAwIDExMy43LTIwLjcgMTUzLjMtNDIuMXYyNS40YzAgMyAyLjEgOC4yIDYuMSA5LjEgMy4xIDEgNTAuNyAyIDU5LjkgMnM2Mi41LjMgNjYuNS0uN2M0LjEtMSA1LjEtNi4xIDUuMS05LjFWMTY4Yy0uMS04MC4zLTU3LjktMTM2LTE5Mi0xMzZ6bTUwLjIgMzQ4Yy0yMS40IDEzLjItNDguNyAyNC40LTc5LjEgMjQuNC01Mi44IDAtNTguOS0zMy41LTU5LTQ0LjcgMC0xMi4yLTMtNDIuNyAxOC4zLTUyLjkgMjQuMy0xMy4yIDc1LjEtMjkuNCAxMTkuOC0zMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMC41NSwzMDEuOTNhMjQsMjQsMCwxLDEsMjQtMjQsMjQsMjQsMCwwLDEtMjQsMjRtLTI2NS4xLDBhMjQsMjQsMCwxLDEsMjQtMjQsMjQsMjQsMCwwLDEtMjQsMjRtMjczLjctMTQ0LjQ4LDQ3Ljk0LTgzYTEwLDEwLDAsMSwwLTE3LjI3LTEwaDBsLTQ4LjU0LDg0LjA3YTMwMS4yNSwzMDEuMjUsMCwwLDAtMjQ2LjU2LDBMMTE2LjE4LDY0LjQ1YTEwLDEwLDAsMSwwLTE3LjI3LDEwaDBsNDcuOTQsODNDNjQuNTMsMjAyLjIyLDguMjQsMjg1LjU1LDAsMzg0SDU3NmMtOC4yNC05OC40NS02NC41NC0xODEuNzgtMTQ2Ljg1LTIyNi41NVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdlbGxpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ3LjEgMjE1LjRjMTEuNy0zMi42IDQ1LjQtMTI2LjkgNDUuNC0xNTcuMSAwLTI2LjYtMTUuNy00OC45LTQzLjctNDguOS00NC42IDAtODQuNiAxMzEuNy05Ny4xIDE2My4xQzI0MiAxNDQgMTk2LjYgMCAxNTYuNiAwYy0zMS4xIDAtNDUuNyAyMi45LTQ1LjcgNTEuNyAwIDM1LjMgMzQuMiAxMjYuOCA0Ni42IDE2Mi02LjMtMi4zLTEzLjEtNC4zLTIwLTQuMy0yMy40IDAtNDguMyAyOS4xLTQ4LjMgNTIuNiAwIDguOSA0LjkgMjEuNCA4IDI5LjctMzYuOSAxMC01MS4xIDM0LjYtNTEuMSA3MS43QzQ2IDQzNS42IDExNC40IDUxMiAyMTAuNiA1MTJjMTE4IDAgMTkxLjQtODguNiAxOTEuNC0yMDIuOSAwLTQzLjEtNi45LTgyLTU0LjktOTMuN3pNMzExLjcgMTA4YzQtMTIuMyAyMS4xLTY0LjMgMzcuMS02NC4zIDguNiAwIDEwLjkgOC45IDEwLjkgMTYgMCAxOS4xLTM4LjYgMTI0LjYtNDcuMSAxNDhsLTM0LTYgMzMuMS05My43ek0xNDIuMyA0OC4zYzAtMTEuOSAxNC41LTQ1LjcgNDYuMyA0Ny4xbDM0LjYgMTAwLjNjLTE1LjYtMS4zLTI3LjctMy0zNS40IDEuNC0xMC45LTI4LjgtNDUuNS0xMTkuNy00NS41LTE0OC44ek0xNDAgMjQ0YzI5LjMgMCA2Ny4xIDk0LjYgNjcuMSAxMDcuNCAwIDUuMS00LjkgMTEuNC0xMC42IDExLjQtMjAuOSAwLTc2LjktNzYuOS03Ni45LTk3LjcuMS03LjcgMTIuNy0yMS4xIDIwLjQtMjEuMXptMTg0LjMgMTg2LjNjLTI5LjEgMzItNjYuMyA0OC42LTEwOS43IDQ4LjYtNTkuNCAwLTEwNi4zLTMyLjYtMTI4LjktODguMy0xNy4xLTQzLjQgMy44LTY4LjMgMjAuNi02OC4zIDExLjQgMCA1NC4zIDYwLjMgNTQuMyA3My4xIDAgNC45LTcuNyA4LjMtMTEuNyA4LjMtMTYuMSAwLTIyLjQtMTUuNS01MS4xLTUxLjQtMjkuNyAyOS43IDIwLjUgODYuOSA1OC4zIDg2LjkgMjYuMSAwIDQzLjEtMjQuMiAzOC00MiAzLjcgMCA4LjMuMyAxMS43LS42IDEuMSAyNy4xIDkuMSA1OS40IDQxLjcgNjEuNyAwLS45IDItNy4xIDItNy40IDAtMTcuNC0xMC42LTMyLjYtMTAuNi01MC4zIDAtMjguMyAyMS43LTU1LjcgNDMuNy03MS43IDgtNiAxNy43LTkuNyAyNy4xLTEzLjEgOS43LTMuNyAyMC04IDI3LjQtMTUuNC0xLjEtMTEuMi01LjctMjEuMS0xNi45LTIxLjEtMjcuNyAwLTEyMC42IDQtMTIwLjYtMzkuNyAwLTYuNy4xLTEzLjEgMTcuNC0xMy4xIDMyLjMgMCAxMTQuMyA4IDEzOC4zIDI5LjEgMTguMSAxNi4xIDI0LjMgMTEzLjItMzEgMTc0Ljd6bS05OC42LTEyNmM5LjcgMy4xIDE5LjcgNCAyOS43IDYtNy40IDUuNC0xNCAxMi0yMC4zIDE5LjEtMi44LTguNS02LjItMTYuOC05LjQtMjUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5ncnljcmVhdGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjM4LjJsLTMuMiAyOC4yLTM0LjUgMi4zLTIgMTguMSAzNC41LTIuMy0zLjIgMjguMi0zNC40IDIuMi0yLjMgMjAuMSAzNC40LTIuMi0zIDI2LjEtNjQuNyA0LjEgMTIuNy0xMTMuMkw1MjcgMzY1LjJsLTMxLjkgMi0yMy44LTExNy44IDMwLjMtMiAxMy42IDc5LjQgMzEuNy04Mi40IDkzLjEtNi4yek00MjYuOCAzNzEuNWwyOC4zLTEuOEw0NjggMjQ5LjZsLTI4LjQgMS45LTEyLjggMTIwek0xNjIgMzg4LjFsLTE5LjQtMzYtMy41IDM3LjQtMjguMiAxLjcgMi43LTI5LjFjLTExIDE4LTMyIDM0LjMtNTYuOSAzNS44QzIzLjkgMzk5LjktMyAzNzcgLjMgMzM5LjdjMi42LTI5LjMgMjYuNy02Mi44IDY3LjUtNjUuNCAzNy43LTIuNCA0Ny42IDIzLjIgNTEuMyAyOC44bDIuOC0zMC44IDM4LjktMi41YzIwLjEtMS4zIDM4LjcgMy43IDQyLjUgMjMuN2wyLjYtMjYuNiA2NC44LTQuMi0yLjcgMjcuOS0zNi40IDIuNC0xLjcgMTcuOSAzNi40LTIuMy0yLjcgMjcuOS0zNi40IDIuMy0xLjkgMTkuOSAzNi4zLTIuMy0yLjEgMjAuOCA1NS0xMTcuMiAyMy44LTEuNkwzNzAuNCAzNjlsOC45LTg1LjYtMjIuMyAxLjQgMi45LTI3LjkgNzUtNC45LTMgMjgtMjQuMyAxLjYtOS43IDkxLjktNTggMy43LTQuMy0xNS42LTM5LjQgMi41LTggMTYuMy0xMjYuMiA3Ljd6bS00NC4zLTcwLjJsLTI2LjQgMS43Qzg0LjYgMzA3LjIgNzYuOSAzMDMgNjUgMzAzLjhjLTE5IDEuMi0zMy4zIDE3LjUtMzQuNiAzMy4zLTEuNCAxNiA3LjMgMzIuNSAyOC43IDMxLjIgMTIuOC0uOCAyMS4zLTguNiAyOC45LTE4LjlsMjctMS43IDIuNy0yOS44em01Ni4xLTcuN2MxLjItMTIuOS03LjYtMTMuNi0yNi4xLTEyLjRsLTIuNyAyOC41YzE0LjItLjkgMjcuNS0yLjEgMjguOC0xNi4xem0yMS4xIDcwLjhsNS44LTYwYy01IDEzLjUtMTQuNyAyMS4xLTI3LjkgMjYuNmwyMi4xIDMzLjR6bTEzNS40LTQ1bC03LjktMzcuOC0xNS44IDM5LjMgMjMuNy0xLjV6bS0xNzAuMS03NC42bC00LjMtMTcuNS0zOS42IDIuNi04LjEgMTguMi0zMS45IDIuMSA1Ny0xMjEuOSAyMy45LTEuNiAzMC43IDEwMiA5LjktMTA0LjcgMjctMS44IDM3LjggNjMuNiA2LjUtNjYuNiAyOC41LTEuOS00IDQxLjJjNy40LTEzLjUgMjIuOS00NC43IDYzLjYtNDcuNSA0MC41LTIuOCA1Mi40IDI5LjMgNTMuNCAzMC4zbDMuMy0zMiAzOS4zLTIuN2MxMi43LS45IDI3LjguMyAzNi4zIDkuN2wtNC40LTExLjkgMzIuMi0yLjIgMTIuOSA0My4yIDIzLTQ1LjcgMzEtMi4yLTQzLjYgNzguNC00LjggNDQuMy0yOC40IDEuOSA0LjgtNDQuMy0xNS44LTQzYzEgMjIuMy05LjIgNDAuMS0zMiA0OS42bDI1LjIgMzguOC0zNi40IDIuNC0xOS4yLTM2LjgtNCAzOC4zLTI4LjQgMS45IDMuMy0zMS41Yy02LjcgOS4zLTE5LjcgMzUuNC01OS42IDM4LTI2LjIgMS43LTQ1LjYtMTAuMy01NS40LTM5LjJsLTQgNDAuMy0yNSAxLjYtMzcuNi02My4zLTYuMyA2Ni4yLTU2LjggMy43em0yNzYuNi04Mi4xYzEwLjItLjcgMTcuNS0yLjEgMjEuNi00LjMgNC41LTIuNCA3LTYuNCA3LjYtMTIuMS42LTUuMy0uNi04LjgtMy40LTEwLjQtMy42LTIuMS0xMC42LTIuOC0yMi45LTJsLTIuOSAyOC44ek0zMjcuNyAyMTRjNS42IDUuOSAxMi43IDguNSAyMS4zIDcuOSA0LjctLjMgOS4xLTEuOCAxMy4zLTQuMSA1LjUtMyAxMC42LTggMTUuMS0xNC4zbC0zNC4yIDIuMyAyLjQtMjMuOSA2My4xLTQuMyAxLjItMTItMzEuMiAyLjFjLTQuMS0zLjctNy44LTYuNi0xMS4xLTguMS00LTEuNy04LjEtMi44LTEyLjItMi41LTggLjUtMTUuMyAzLjYtMjIgOS4yLTcuNyA2LjQtMTIgMTQuNS0xMi45IDI0LjQtMS4xIDkuNiAxLjQgMTcuMyA3LjIgMjMuM3ptLTIwMS4zIDguMmwyMy44LTEuNi04LjMtMzcuNi0xNS41IDM5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3VsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg1LjcgMjY4LjFoNzYuMmwtMzguMS05MS42LTM4LjEgOTEuNnpNMjIzLjggMzJMMTYgMTA2LjRsMzEuOCAyNzUuNyAxNzYgOTcuOSAxNzYtOTcuOSAzMS44LTI3NS43ek0zNTQgMzczLjhoLTQ4LjZsLTI2LjItNjUuNEgxNjguNmwtMjYuMiA2NS40SDkzLjdMMjIzLjggODEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwU3RvcmVJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTI3IDM4NC41Yy01LjUgOS42LTE3LjggMTIuOC0yNy4zIDcuMy05LjYtNS41LTEyLjgtMTcuOC03LjMtMjcuM2wxNC4zLTI0LjdjMTYuMS00LjkgMjkuMy0xLjEgMzkuNiAxMS40TDEyNyAzODQuNXptMTM4LjktNTMuOUg4NGMtMTEgMC0yMC05LTIwLTIwczktMjAgMjAtMjBoNTFsNjUuNC0xMTMuMi0yMC41LTM1LjRjLTUuNS05LjYtMi4yLTIxLjggNy4zLTI3LjMgOS42LTUuNSAyMS44LTIuMiAyNy4zIDcuM2w4LjkgMTUuNCA4LjktMTUuNGM1LjUtOS42IDE3LjgtMTIuOCAyNy4zLTcuMyA5LjYgNS41IDEyLjggMTcuOCA3LjMgMjcuM2wtODUuOCAxNDguNmg2Mi4xYzIwLjIgMCAzMS41IDIzLjcgMjIuNyA0MHptOTguMSAwaC0yOWwxOS42IDMzLjljNS41IDkuNiAyLjIgMjEuOC03LjMgMjcuMy05LjYgNS41LTIxLjggMi4yLTI3LjMtNy4zLTMyLjktNTYuOS01Ny41LTk5LjctNzQtMTI4LjEtMTYuNy0yOS00LjgtNTggNy4xLTY3LjggMTMuMSAyMi43IDMyLjcgNTYuNyA1OC45IDEwMmg1MmMxMSAwIDIwIDkgMjAgMjAgMCAxMS4xLTkgMjAtMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcFN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS45IDEyMC45bDkuMS0xNS43YzUuNi05LjggMTguMS0xMy4xIDI3LjktNy41IDkuOCA1LjYgMTMuMSAxOC4xIDcuNSAyNy45bC04Ny41IDE1MS41aDYzLjNjMjAuNSAwIDMyIDI0LjEgMjMuMSA0MC44SDExMy44Yy0xMS4zIDAtMjAuNC05LjEtMjAuNC0yMC40IDAtMTEuMyA5LjEtMjAuNCAyMC40LTIwLjRoNTJsNjYuNi0xMTUuNC0yMC44LTM2LjFjLTUuNi05LjgtMi4zLTIyLjIgNy41LTI3LjkgOS44LTUuNiAyMi4yLTIuMyAyNy45IDcuNWw4LjkgMTUuN3ptLTc4LjcgMjE4bC0xOS42IDM0Yy01LjYgOS44LTE4LjEgMTMuMS0yNy45IDcuNS05LjgtNS42LTEzLjEtMTguMS03LjUtMjcuOWwxNC42LTI1LjJjMTYuNC01LjEgMjkuOC0xLjIgNDAuNCAxMS42em0xNjguOS02MS43aDUzLjFjMTEuMyAwIDIwLjQgOS4xIDIwLjQgMjAuNCAwIDExLjMtOS4xIDIwLjQtMjAuNCAyMC40aC0yOS41bDE5LjkgMzQuNWM1LjYgOS44IDIuMyAyMi4yLTcuNSAyNy45LTkuOCA1LjYtMjIuMiAyLjMtMjcuOS03LjUtMzMuNS01OC4xLTU4LjctMTAxLjYtNzUuNC0xMzAuNi0xNy4xLTI5LjUtNC45LTU5LjEgNy4yLTY5LjEgMTMuNCAyMyAzMy40IDU3LjcgNjAuMSAxMDR6TTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTIxNiAyNDhjMCAxMTguNy05Ni4xIDIxNi0yMTYgMjE2LTExOC43IDAtMjE2LTk2LjEtMjE2LTIxNiAwLTExOC43IDk2LjEtMjE2IDIxNi0yMTYgMTE4LjcgMCAyMTYgOTYuMSAyMTYgMjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi4xIDIzOS4xYzIyLjIgMCAyOSAyLjggMzMuNSAxNC42aC44di0yMi45YzAtMTEuMy00LjgtMTUuNC0xNy45LTE1LjQtMTEuMyAwLTE0LjQgMi41LTE1LjEgMTIuOEg0LjhjLjMtMTMuOSAxLjUtMTkuMSA1LjgtMjQuNEMxNy45IDE5NSAyOS41IDE5MiA1Ni43IDE5MmMzMyAwIDQ3LjEgNSA1My45IDE4LjkgMiA0LjMgNCAxNS42IDQgMjMuN3Y3Ni4zSDc2LjNsMS4zLTE5LjFoLTFjLTUuMyAxNS42LTEzLjYgMjAuNC0zNS41IDIwLjQtMzAuMyAwLTQxLjEtMTAuMS00MS4xLTM3LjMgMC0yNS4yIDEyLjMtMzUuOCA0Mi4xLTM1Ljh6bTE3LjEgNDguMWMxMy4xIDAgMTYuOS0zIDE2LjktMTMuNCAwLTkuMS00LjMtMTEuNi0xOS42LTExLjYtMTMuMSAwLTE3LjkgMy0xNy45IDEyLjEtLjEgMTAuNCAzLjcgMTIuOSAyMC42IDEyLjl6bTc3LjgtOTQuOWgzOC4zbC0xLjUgMjAuNmguOGM5LjEtMTcuMSAxNS45LTIwLjkgMzcuNS0yMC45IDE0LjQgMCAyNC43IDMgMzEuNSA5LjEgOS44IDguNiAxMi44IDIwLjQgMTIuOCA0OC4xIDAgMzAtMyA0My4xLTEyLjEgNTIuOS02LjggNy4zLTE2LjQgMTAuMS0zMy4yIDEwLjEtMjAuNCAwLTI5LjItNS41LTMzLjgtMjEuMmgtLjh2NzAuM0gxMzd2LTE2OXptODAuOSA2MC43YzAtMjcuNS0zLjMtMzIuNS0yMC43LTMyLjUtMTYuOSAwLTIwLjcgNS0yMC43IDI4LjcgMCAyOCAzLjUgMzMuNSAyMS4yIDMzLjUgMTYuNCAwIDIwLjItNS42IDIwLjItMjkuN3ptNTcuOS02MC43aDM4LjNsLTEuNSAyMC42aC44YzkuMS0xNy4xIDE1LjktMjAuOSAzNy41LTIwLjkgMTQuNCAwIDI0LjcgMyAzMS41IDkuMSA5LjggOC42IDEyLjggMjAuNCAxMi44IDQ4LjEgMCAzMC0zIDQzLjEtMTIuMSA1Mi45LTYuOCA3LjMtMTYuNCAxMC4xLTMzLjMgMTAuMS0yMC40IDAtMjkuMi01LjUtMzMuOC0yMS4yaC0uOHY3MC4zaC0zOS41di0xNjl6bTgwLjkgNjAuN2MwLTI3LjUtMy4zLTMyLjUtMjAuNy0zMi41LTE2LjkgMC0yMC43IDUtMjAuNyAyOC43IDAgMjggMy41IDMzLjUgMjEuMiAzMy41IDE2LjQgMCAyMC4yLTUuNiAyMC4yLTI5Ljd6bTUzLjgtMy44YzAtMjUuNCAzLjMtMzcuOCAxMi4zLTQ1LjggOC44LTguMSAyMi4yLTExLjMgNDUuMS0xMS4zIDQyLjggMCA1NS43IDEyLjggNTUuNyA1NS43djExLjFoLTc1LjNjLS4zIDItLjMgNC0uMyA0LjggMCAxNi45IDQuNSAyMS45IDIwLjEgMjEuOSAxMy45IDAgMTcuOS0zIDE3LjktMTMuOWgzNy41djIuM2MwIDkuOC0yLjUgMTguOS02LjggMjQuNy03LjMgOS44LTE5LjYgMTMuNi00NC4zIDEzLjYtMjcuNSAwLTQxLjYtMy4zLTUwLjYtMTIuMy04LjUtOC41LTExLjMtMjEuMy0xMS4zLTUwLjh6bTc2LjQtMTEuNmMtLjMtMS44LS4zLTMuMy0uMy0zLjggMC0xMi4zLTMuMy0xNC42LTE5LjYtMTQuNi0xNC40IDAtMTcuMSAzLTE4LjEgMTUuMWwtLjMgMy4zaDM4LjN6bTU1LjYtNDUuM2gzOC4zbC0xLjggMTkuOWguN2M2LjgtMTQuOSAxNC40LTIwLjIgMjkuNy0yMC4yIDEwLjggMCAxOS4xIDMuMyAyMy40IDkuMyA1LjMgNy4zIDYuOCAxNC40IDYuOCAzNCAwIDEuNSAwIDUgLjIgOS4zaC0zNWMuMy0xLjguMy0zLjMuMy00IDAtMTUuNC0yLTE5LjQtMTAuMy0xOS40LTYuMyAwLTEwLjggMy4zLTEzLjEgOS4zLTEgMy0xIDQuMy0xIDEyLjN2NjhoLTM4LjNWMTkyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcGxlUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNi45IDE1OC41Yy03LjUgOC45LTE5LjUgMTUuOS0zMS41IDE0LjktMS41LTEyIDQuNC0yNC44IDExLjMtMzIuNiA3LjUtOS4xIDIwLjYtMTUuNiAzMS4zLTE2LjEgMS4yIDEyLjQtMy43IDI0LjctMTEuMSAzMy44bTEwLjkgMTcuMmMtMTcuNC0xLTMyLjMgOS45LTQwLjUgOS45LTguNCAwLTIxLTkuNC0zNC44LTkuMS0xNy45LjMtMzQuNSAxMC40LTQzLjYgMjYuNS0xOC44IDMyLjMtNC45IDgwIDEzLjMgMTA2LjMgOC45IDEzIDE5LjUgMjcuMyAzMy41IDI2LjggMTMuMy0uNSAxOC41LTguNiAzNC41LTguNiAxNi4xIDAgMjAuOCA4LjYgMzQuOCA4LjQgMTQuNS0uMyAyMy42LTEzIDMyLjUtMjYgMTAuMS0xNC44IDE0LjMtMjkuMSAxNC41LTI5LjktLjMtLjMtMjgtMTAuOS0yOC4zLTQyLjktLjMtMjYuOCAyMS45LTM5LjUgMjIuOS00MC4zLTEyLjUtMTguNi0zMi0yMC42LTM4LjgtMjEuMW0xMDAuNC0zNi4ydjE5NC45aDMwLjN2LTY2LjZoNDEuOWMzOC4zIDAgNjUuMS0yNi4zIDY1LjEtNjQuM3MtMjYuNC02NC02NC4xLTY0aC03My4yem0zMC4zIDI1LjVoMzQuOWMyNi4zIDAgNDEuMyAxNCA0MS4zIDM4LjZzLTE1IDM4LjgtNDEuNCAzOC44aC0zNC44VjE2NXptMTYyLjIgMTcwLjljMTkgMCAzNi42LTkuNiA0NC42LTI0LjloLjZ2MjMuNGgyOHYtOTdjMC0yOC4xLTIyLjUtNDYuMy01Ny4xLTQ2LjMtMzIuMSAwLTU1LjkgMTguNC01Ni44IDQzLjZoMjcuM2MyLjMtMTIgMTMuNC0xOS45IDI4LjYtMTkuOSAxOC41IDAgMjguOSA4LjYgMjguOSAyNC41djEwLjhsLTM3LjggMi4zYy0zNS4xIDIuMS01NC4xIDE2LjUtNTQuMSA0MS41LjEgMjUuMiAxOS43IDQyIDQ3LjggNDJ6bTguMi0yMy4xYy0xNi4xIDAtMjYuNC03LjgtMjYuNC0xOS42IDAtMTIuMyA5LjktMTkuNCAyOC44LTIwLjVsMzMuNi0yLjF2MTFjMCAxOC4yLTE1LjUgMzEuMi0zNiAzMS4yem0xMDIuNSA3NC42YzI5LjUgMCA0My40LTExLjMgNTUuNS00NS40TDY0MCAxOTNoLTMwLjhsLTM1LjYgMTE1LjFoLS42TDUzNy40IDE5M2gtMzEuNkw1NTcgMzM0LjlsLTIuOCA4LjZjLTQuNiAxNC42LTEyLjEgMjAuMy0yNS41IDIwLjMtMi40IDAtNy0uMy04LjktLjV2MjMuNGMxLjguNCA5LjMuNyAxMS42Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOC43IDI2OC43Yy0uMi0zNi43IDE2LjQtNjQuNCA1MC04NC44LTE4LjgtMjYuOS00Ny4yLTQxLjctODQuNy00NC42LTM1LjUtMi44LTc0LjMgMjAuNy04OC41IDIwLjctMTUgMC00OS40LTE5LjctNzYuNC0xOS43QzYzLjMgMTQxLjIgNCAxODQuOCA0IDI3My41cTAgMzkuMyAxNC40IDgxLjJjMTIuOCAzNi43IDU5IDEyNi43IDEwNy4yIDEyNS4yIDI1LjItLjYgNDMtMTcuOSA3NS44LTE3LjkgMzEuOCAwIDQ4LjMgMTcuOSA3Ni40IDE3LjkgNDguNi0uNyA5MC40LTgyLjUgMTAyLjYtMTE5LjMtNjUuMi0zMC43LTYxLjctOTAtNjEuNy05MS45em0tNTYuNi0xNjQuMmMyNy4zLTMyLjQgMjQuOC02MS45IDI0LTcyLjUtMjQuMSAxLjQtNTIgMTYuNC02Ny45IDM0LjktMTcuNSAxOS44LTI3LjggNDQuMy0yNS42IDcxLjkgMjYuMSAyIDQ5LjktMTEuNCA2OS41LTM0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFydHN0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAzNzcuNGw0MyA3NC4zQTUxLjM1IDUxLjM1IDAgMCAwIDkwLjkgNDgwaDI4NS40bC01OS4yLTEwMi42ek01MDEuOCAzNTBMMzM1LjYgNTkuM0E1MS4zOCA1MS4zOCAwIDAgMCAyOTAuMiAzMmgtODguNGwyNTcuMyA0NDcuNiA0MC43LTcwLjVjMS45LTMuMiAyMS0yOS43IDItNTkuMXpNMjc1IDMwNC41bC0xMTUuNS0yMDBMNDQgMzA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFzeW1tZXRyaWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTE3LjUgMzA5LjJjMzguOC00MCA1OC4xLTgwIDU4LjUtMTE2LjEuOC02NS41LTU5LjQtMTE4LjItMTY5LjQtMTM1QzI3Ny45IDM4LjQgMTE4LjEgNzMuNiAwIDE0MC41IDUyIDExNCAxMTAuNiA5Mi4zIDE3MC43IDgyLjNjNzQuNS0yMC41IDE1My0yNS40IDIyMS4zLTE0LjhDNTQ0LjUgOTEuMyA1ODguOCAxOTUgNDkwLjggMjk5LjJjLTEwLjIgMTAuOC0yMiAyMS4xLTM1IDMwLjZMMzA0LjkgMTAzLjQgMTE0LjcgMzg4LjljLTY1LjYtMjkuNC03Ni41LTkwLjItMTkuMS0xNTEuMiAyMC44LTIyLjIgNDguMy00MS45IDc5LjUtNTguMSAyMC0xMi4yIDM5LjctMjIuNiA2Mi0zMC43LTY1LjEgMjAuMy0xMjIuNyA1Mi45LTE2MS42IDkyLjktMjcuNyAyOC42LTQxLjQgNTcuMS00MS43IDgyLjktLjUgMzUuMSAyMy40IDY1LjEgNjguNCA4M2wtMzQuNSA1MS43aDEwMS42bDIyLTM0LjRjMjIuMiAxIDQ1LjMgMCA2OC42LTIuN2wtMjIuOCAzNy4xaDEzNS41TDM0MCA0MDYuM2MxOC42LTUuMyAzNi45LTExLjUgNTQuNS0xOC43bDQ1LjkgNzEuOEg1NDJMNDY4LjYgMzQ5YzE4LjUtMTIuMSAzNS0yNS41IDQ4LjktMzkuOHptLTE4Ny42IDgwLjVsLTI1LTQwLjYtMzIuNyA1My4zYy0yMy40IDMuNS00Ni43IDUuMS02OS4yIDQuNGwxMDEuOS0xNTkuMyA3OC43IDEyM2MtMTcuMiA3LjQtMzUuMyAxMy45LTUzLjcgMTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXRsYXNzaWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Mi4yIDIzNi40Yy03LjctOC4yLTE5LjctNy43LTI0LjggMi44TDEuNiA0OTAuMmMtNSAxMCAyLjQgMjEuNyAxMy40IDIxLjdoMTc1YzUuOC4xIDExLTMuMiAxMy40LTguNCAzNy45LTc3LjggMTUuMS0xOTYuMy01MS4yLTI2Ny4xek0yNDQuNCA4LjFjLTEyMi4zIDE5My40LTguNSAzNDguNiA2NSA0OTUuNSAyLjUgNS4xIDcuNyA4LjQgMTMuNCA4LjRINDk3YzExLjIgMCAxOC40LTExLjggMTMuNC0yMS43IDAgMC0yMzQuNS00NzAuNi0yNDAuNC00ODIuMy01LjMtMTAuNi0xOC44LTEwLjgtMjUuNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdWRpYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAxOTkuOXY1NGwtMzIwIDIwMEwwIDI1NHYtNTRsMzIwIDIwMCAzMjAtMjAwLjF6bS0xOTQuNSA3Mmw0Ny4xLTI5LjRjLTM3LjItNTUuOC0xMDAuNy05Mi42LTE3Mi43LTkyLjYtNzIgMC0xMzUuNSAzNi43LTE3Mi42IDkyLjRoLjNjMi41LTIuMyA1LjEtNC41IDcuNy02LjcgODkuNy03NC40IDIxOS40LTU4LjEgMjkwLjIgMzYuM3ptLTIyMC4xIDE4LjhjMTYuOS0xMS45IDM2LjUtMTguNyA1Ny40LTE4LjcgMzQuNCAwIDY1LjIgMTguNCA4Ni40IDQ3LjZsNDUuNC0yOC40Yy0yMC45LTI5LjktNTUuNi00OS41LTk0LjgtNDkuNS0zOC45IDAtNzMuNCAxOS40LTk0LjQgNDl6TTEwMy42IDE2MS4xYzEzMS44LTEwNC4zIDMxOC4yLTc2LjQgNDE3LjUgNjIuMWwuNyAxIDQ4LjgtMzAuNEM1MTcuMSAxMTIuMSA0MjQuOCA1OC4xIDMxOS45IDU4LjFjLTEwMy41IDAtMTk2LjYgNTMuNS0yNTAuNSAxMzUuNiA5LjktMTAuNSAyMi43LTIzLjUgMzQuMi0zMi42em00NjcgMzIuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXV0b3ByZWZpeGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOC40IDE2bC0xNjEgNDgwaDc3LjVsMjUuNC04MS40aDExOS41TDQwNSA0OTZoNzcuNUwzMTguNCAxNnptLTQwLjMgMzQxLjlsNDEuMi0xMzAuNGgxLjVsNDAuOSAxMzAuNGgtODMuNnpNNjQwIDQwNWwtMTAtMzEuNEw0NjIuMSAzNThsMTkuNCA1Ni41TDY0MCA0MDV6bS00NjIuMS00N0wxMCAzNzMuNyAwIDQwNWwxNTguNSA5LjQgMTkuNC01Ni40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdmlhbmV4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1My4xIDMyaC0zMTJjLTM4LjkgMC03Ni4yIDMxLjItODMuMyA2OS43TDEuMiA0MTAuM0MtNS45IDQ0OC44IDE5LjkgNDgwIDU4LjkgNDgwaDMxMmMzOC45IDAgNzYuMi0zMS4yIDgzLjMtNjkuN2w1Ni43LTMwOC41YzctMzguNi0xOC44LTY5LjgtNTcuOC02OS44em0tNTguMiAzNDcuM2wtMzIgMTMuNS0xMTUuNC0xMTBjLTE0LjcgMTAtMjkuMiAxOS41LTQxLjcgMjcuMWwyMi4xIDY0LjItMTcuOSAxMi43LTQwLjYtNjEtNTIuNC00OC4xIDE1LjctMTUuNCA1OCAzMS4xYzkuMy0xMC41IDIwLjgtMjIuNiAzMi44LTM0LjlMMjAzIDIyOC45bC02OC44LTk5LjggMTguOC0yOC45IDguOS00LjhMMjY1IDIwNy44bDQuOSA0LjVjMTkuNC0xOC44IDMzLjgtMzIuNCAzMy44LTMyLjQgNy43LTYuNSAyMS41LTIuOSAzMC43IDcuOSA5IDEwLjUgMTAuNiAyNC43IDIuNyAzMS4zLTEuOCAxLjMtMTUuNSAxMS40LTM1LjMgMjUuNmw0LjUgNy4zIDk0LjkgMTE5LjQtNi4zIDcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXZpYXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNy4yIDI4My41bC0xOS00MS44SDM2LjFsLTE5IDQxLjhIMGw2Mi4yLTEzMS40IDYyLjIgMTMxLjRoLTE3LjJ6bS00NS05OC4xbC0xOS42IDQyLjVoMzkuMmwtMTkuNi00Mi41em0xMTIuNyAxMDIuNGwtNjIuMi0xMzEuNGgxNy4xbDQ1LjEgOTYgNDUuMS05NmgxN2wtNjIuMSAxMzEuNHptODAuNi00LjNWMTU2LjRIMjcxdjEyNy4xaC0xNS41em0yMDkuMS0xMTUuNnYxMTUuNmgtMTcuM1YxNjcuOWgtNDEuMnYtMTEuNWg5OS42djExLjVoLTQxLjF6TTY0MCAyMTguOGMwIDkuMi0xLjcgMTcuOC01LjEgMjUuOC0zLjQgOC04LjIgMTUuMS0xNC4yIDIxLjEtNiA2LTEzLjEgMTAuOC0yMS4xIDE0LjItOCAzLjQtMTYuNiA1LjEtMjUuOCA1LjFzLTE3LjgtMS43LTI1LjgtNS4xYy04LTMuNC0xNS4xLTguMi0yMS4xLTE0LjItNi02LTEwLjgtMTMtMTQuMi0yMS4xLTMuNC04LTUuMS0xNi42LTUuMS0yNS44czEuNy0xNy44IDUuMS0yNS44YzMuNC04IDguMi0xNS4xIDE0LjItMjEuMSA2LTYgMTMtOC40IDIxLjEtMTEuOSA4LTMuNCAxNi42LTUuMSAyNS44LTUuMXMxNy44IDEuNyAyNS44IDUuMWM4IDMuNCAxNS4xIDUuOCAyMS4xIDExLjkgNiA2IDEwLjcgMTMuMSAxNC4yIDIxLjEgMy40IDggNS4xIDE2LjYgNS4xIDI1Ljh6bS0xNS41IDBjMC03LjMtMS4zLTE0LTMuOS0yMC4zLTIuNi02LjMtNi4yLTExLjctMTAuOC0xNi4zLTQuNi00LjYtMTAtOC4yLTE2LjItMTAuOS02LjItMi43LTEyLjgtNC0xOS44LTRzLTEzLjYgMS4zLTE5LjggNGMtNi4yIDIuNy0xMS42IDYuMy0xNi4yIDEwLjktNC42IDQuNi04LjIgMTAtMTAuOCAxNi4zLTIuNiA2LjMtMy45IDEzLjEtMy45IDIwLjMgMCA3LjMgMS4zIDE0IDMuOSAyMC4zIDIuNiA2LjMgNi4yIDExLjcgMTAuOCAxNi4zIDQuNiA0LjYgMTAgOC4yIDE2LjIgMTAuOSA2LjIgMi43IDEyLjggNCAxOS44IDRzMTMuNi0xLjMgMTkuOC00YzYuMi0yLjcgMTEuNi02LjMgMTYuMi0xMC45IDQuNi00LjYgOC4yLTEwIDEwLjgtMTYuMyAyLjYtNi4zIDMuOS0xMy4xIDMuOS0yMC4zem0tOTQuOCA5Ni43di02LjNsODguOS0xMC0yNDIuOSAxMy40Yy42LTIuMiAxLjEtNC42IDEuNC03LjIuMy0yIC41LTQuMi42LTYuNWw2NC44LTguMS02NC45IDEuOWMwLS40LS4xLS43LS4xLTEuMS0yLjgtMTcuMi0yNS41LTIzLjctMjUuNS0yMy43bC0xLjEtMjYuM2gyMy44bDE5IDQxLjhoMTcuMUwzNDguNiAxNTJsLTYyLjIgMTMxLjRoMTcuMWwxOS00MS44aDIzLjZMMzQ1IDI2OHMtMjIuNyA2LjUtMjUuNSAyMy43Yy0uMS4zLS4xLjctLjEgMS4xbC02NC45LTEuOSA2NC44IDguMWMuMSAyLjMuMyA0LjQuNiA2LjUuMyAyLjYuOCA1IDEuNCA3LjJMNzguNCAyOTkuMmw4OC45IDEwdjYuM2MtNS45LjktMTAuNSA2LTEwLjUgMTIuMiAwIDYuOCA1LjYgMTIuNCAxMi40IDEyLjQgNi44IDAgMTIuNC01LjYgMTIuNC0xMi40IDAtNi4yLTQuNi0xMS4zLTEwLjUtMTIuMnYtNS44bDgwLjMgOXY1LjRjLTUuNyAxLjEtOS45IDYuMi05LjkgMTIuMSAwIDYuOCA1LjYgMTAuMiAxMi40IDEwLjIgNi44IDAgMTIuNC0zLjQgMTIuNC0xMC4yIDAtNi00LjMtMTEtOS45LTEyLjF2LTQuOWwyOC40IDMuMnYyMy43aC01LjlWMzYwaDUuOXYtNi42aDV2Ni42aDUuOXYtMTMuOGgtNS45VjMyM2wzOC4zIDQuM2M4LjEgMTEuNCAxOSAxMy42IDE5IDEzLjZsLS4xIDYuNy01LjEuMi0uMSAxMi4xaDQuMWwuMS01aDUuMmwuMSA1aDQuMWwtLjEtMTIuMS01LjEtLjItLjEtNi43czEwLjktMi4xIDE5LTEzLjZsMzguMy00LjN2MjMuMmgtNS45VjM2MGg1Ljl2LTYuNmg1djYuNmg1Ljl2LTEzLjhoLTUuOXYtMjMuN2wyOC40LTMuMnY0LjljLTUuNyAxLjEtOS45IDYuMi05LjkgMTIuMSAwIDYuOCA1LjYgMTAuMiAxMi40IDEwLjIgNi44IDAgMTIuNC0zLjQgMTIuNC0xMC4yIDAtNi00LjMtMTEtOS45LTEyLjF2LTUuNGw4MC4zLTl2NS44Yy01LjkuOS0xMC41IDYtMTAuNSAxMi4yIDAgNi44IDUuNiAxMi40IDEyLjQgMTIuNCA2LjggMCAxMi40LTUuNiAxMi40LTEyLjQtLjItNi4zLTQuNy0xMS40LTEwLjctMTIuM3ptLTIwMC44LTg3LjZsMTkuNi00Mi41IDE5LjYgNDIuNWgtMTcuOWwtMS43LTQwLjMtMS43IDQwLjNoLTE3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODAuNDEgMjAzLjAxYy0uNzIgMjIuNjUgMTAuNiAzMi42OCAxMC44OCAzOS4wNWE4LjE2NCA4LjE2NCAwIDAgMS00LjEgNi4yN2wtMTIuOCA4Ljk2YTEwLjY2IDEwLjY2IDAgMCAxLTUuNjMgMS45MmMtLjQzLS4wMi04LjE5IDEuODMtMjAuNDgtMjUuNjFhNzguNjA4IDc4LjYwOCAwIDAgMS02Mi42MSAyOS40NWMtMTYuMjguODktNjAuNC05LjI0LTU4LjEzLTU2LjIxLTEuNTktMzguMjggMzQuMDYtNjIuMDYgNzAuOTMtNjAuMDUgNy4xLjAyIDIxLjYuMzcgNDYuOTkgNi4yN3YtMTUuNjJjMi42OS0yNi40Ni0xNC43LTQ2Ljk5LTQ0LjgxLTQzLjkxLTIuNC4wMS0xOS40LS41LTQ1Ljg0IDEwLjExLTcuMzYgMy4zOC04LjMgMi44Mi0xMC43NSAyLjgyLTcuNDEgMC00LjM2LTIxLjQ4LTIuOTQtMjQuMiA1LjIxLTYuNCAzNS44Ni0xOC4zNSA2NS45NC0xOC4xOGE3Ni44NTcgNzYuODU3IDAgMCAxIDU1LjY5IDE3LjI4IDcwLjI4NSA3MC4yODUgMCAwIDEgMTcuNjcgNTIuMzZsLS4wMSA2OS4yOXpNOTMuOTkgMjM1LjRjMzIuNDMtLjQ3IDQ2LjE2LTE5Ljk3IDQ5LjI5LTMwLjQ3IDIuNDYtMTAuMDUgMi4wNS0xNi40MSAyLjA1LTI3LjQtOS42Ny0yLjMyLTIzLjU5LTQuODUtMzkuNTYtNC44Ny0xNS4xNS0xLjE0LTQyLjgyIDUuNjMtNDEuNzQgMzIuMjYtMS4yNCAxNi43OSAxMS4xMiAzMS40IDI5Ljk2IDMwLjQ4em0xNzAuOTIgMjMuMDVjLTcuODYuNzItMTEuNTItNC44Ni0xMi42OC0xMC4zN2wtNDkuOC0xNjQuNjVjLS45Ny0yLjc4LTEuNjEtNS42NS0xLjkyLTguNThhNC42MSA0LjYxIDAgMCAxIDMuODYtNS4yNWMuMjQtLjA0LTIuMTMgMCAyMi4yNSAwIDguNzgtLjg4IDExLjY0IDYuMDMgMTIuNTUgMTAuMzdsMzUuNzIgMTQwLjgzIDMzLjE2LTE0MC44M2MuNTMtMy4yMiAyLjk0LTExLjA3IDEyLjgtMTAuMjRoMTcuMTZjMi4xNy0uMTggMTEuMTEtLjUgMTIuNjggMTAuMzdsMzMuNDIgMTQyLjYzTDQyMC45OCA4MC4xYy40OC0yLjE4IDIuNzItMTEuMzcgMTIuNjgtMTAuMzdoMTkuNzJjLjg1LS4xMyA2LjE1LS44MSA1LjI1IDguNTgtLjQzIDEuODUgMy40MS0xMC42Ni01Mi43NSAxNjkuOS0xLjE1IDUuNTEtNC44MiAxMS4wOS0xMi42OCAxMC4zN2gtMTguNjljLTEwLjk0IDEuMTUtMTIuNTEtOS42Ni0xMi42OC0xMC43NUwzMjguNjcgMTEwLjdsLTMyLjc4IDEzNi45OWMtLjE2IDEuMDktMS43MyAxMS45LTEyLjY4IDEwLjc1aC0xOC4zem0yNzMuNDggNS42M2MtNS44OC4wMS0zMy45Mi0uMy01Ny4zNi0xMi4yOWExMi44MDIgMTIuODAyIDAgMCAxLTcuODEtMTEuOTF2LTEwLjc1YzAtOC40NSA2LjItNi45IDguODMtNS44OSAxMC4wNCA0LjA2IDE2LjQ4IDcuMTQgMjguODEgOS42IDM2LjY1IDcuNTMgNTIuNzctMi4zIDU2LjcyLTQuNDggMTMuMTUtNy44MSAxNC4xOS0yNS42OCA1LjI1LTM0Ljk1LTEwLjQ4LTguNzktMTUuNDgtOS4xMi01My4xMy0yMS00LjY0LTEuMjktNDMuNy0xMy42MS00My43OS01Mi4zNi0uNjEtMjguMjQgMjUuMDUtNTYuMTggNjkuNTItNTUuOTUgMTIuNjctLjAxIDQ2LjQzIDQuMTMgNTUuNTcgMTUuNjIgMS4zNSAyLjA5IDIuMDIgNC41NSAxLjkyIDcuMDR2MTAuMTFjMCA0LjQ0LTEuNjIgNi42Ni00Ljg3IDYuNjYtNy43MS0uODYtMjEuMzktMTEuMTctNDkuMTYtMTAuNzUtNi44OS0uMzYtMzkuODkuOTEtMzguNDEgMjQuOTctLjQzIDE4Ljk2IDI2LjYxIDI2LjA3IDI5LjcgMjYuODkgMzYuNDYgMTAuOTcgNDguNjUgMTIuNzkgNjMuMTIgMjkuNTggMTcuMTQgMjIuMjUgNy45IDQ4LjMgNC4zNSA1NS40NC0xOS4wOCAzNy40OS02OC40MiAzNC40NC02OS4yNiAzNC40MnptNDAuMiAxMDQuODZjLTcwLjAzIDUxLjcyLTE3MS42OSA3OS4yNS0yNTguNDkgNzkuMjVBNDY5LjEyNyA0NjkuMTI3IDAgMCAxIDIuODMgMzI3LjQ2Yy02LjUzLTUuODktLjc3LTEzLjk2IDcuMTctOS40N2E2MzcuMzcgNjM3LjM3IDAgMCAwIDMxNi44OCA4NC4xMiA2MzAuMjIgNjMwLjIyIDAgMCAwIDI0MS41OS00OS41NWMxMS43OC01IDIxLjc3IDcuOCAxMC4xMiAxNi4zOHptMjkuMTktMzMuMjljLTguOTYtMTEuNTItNTkuMjgtNS4zOC04MS44MS0yLjY5LTYuNzkuNzctNy45NC01LjEyLTEuNzktOS40NyA0MC4wNy0yOC4xNyAxMDUuODgtMjAuMSAxMTMuNDQtMTAuNjMgNy41NSA5LjQ3LTIuMDUgNzUuNDEtMzkuNTYgMTA2LjkxLTUuNzYgNC44Ny0xMS4yNyAyLjMtOC43MS00LjEgOC40NC0yMS4yNSAyNy4zOS02OC40OSAxOC40My04MC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFuZGNhbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDhDMTE5LDgsOCwxMTksOCwyNTZTMTE5LDUwNCwyNTYsNTA0LDUwNCwzOTMsNTA0LDI1NiwzOTMsOCwyNTYsOFptNDguMiwzMjYuMWgtMTgxTDIwNy45LDE3OGgxODFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRsZU5ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDguNjEgMjI1LjYyYzI2Ljg3LjE4IDM1LjU3LTcuNDMgMzguOTItMTIuMzcgMTIuNDctMTYuMzItNy4wNi00Ny42LTUyLjg1LTcxLjMzIDE3Ljc2LTMzLjU4IDMwLjExLTYzLjY4IDM2LjM0LTg1LjMgMy4zOC0xMS44MyAxLjA5LTE5IC40NS0yMC4yNS0xLjcyIDEwLjUyLTE1Ljg1IDQ4LjQ2LTQ4LjIgMTAwLjA1LTI1LTExLjIyLTU2LjUyLTIwLjEtOTMuNzctMjMuOC04Ljk0LTE2Ljk0LTM0Ljg4LTYzLjg2LTYwLjQ4LTg4LjkzQzI1Mi4xOCA3LjE0IDIzOC43IDEuMDcgMjI4LjE4LjIyaC0uMDVjLTEzLjgzLTEuNTUtMjIuNjcgNS44NS0yNy40IDExLTE3LjIgMTguNTMtMjQuMzMgNDguODctMjUgODQuMDctNy4yNC0xMi4zNS0xNy4xNy0yNC42My0yOC41LTI1LjkzaC0uMThjLTIwLjY2LTMuNDgtMzguMzkgMjkuMjItMzYgODEuMjktMzguMzYgMS4zOC03MSA1Ljc1LTkzIDExLjIzLTkuOSAyLjQ1LTE2LjIyIDcuMjctMTcuNzYgOS43MiAxLS4zOCAyMi40LTkuMjIgMTExLjU2LTkuMjIgNS4yMiA1MyAyOS43NSAxMDEuODIgMjYgOTMuMTktOS43MyAxNS40LTM4LjI0IDYyLjM2LTQ3LjMxIDk3LjctNS44NyAyMi44OC00LjM3IDM3LjYxLjE1IDQ3LjE0IDUuNTcgMTIuNzUgMTYuNDEgMTYuNzIgMjMuMiAxOC4yNiAyNSA1LjcxIDU1LjM4LTMuNjMgODYuNy0yMS4xNC03LjUzIDEyLjg0LTEzLjkgMjguNTEtOS4wNiAzOS4zNCA3LjMxIDE5LjY1IDQ0LjQ5IDE4LjY2IDg4LjQ0LTkuNDUgMjAuMTggMzIuMTggNDAuMDcgNTcuOTQgNTUuNyA3NC4xMmEzOS43OSAzOS43OSAwIDAgMCA4Ljc1IDcuMDljNS4xNCAzLjIxIDguNTggMy4zNyA4LjU4IDMuMzctOC4yNC02Ljc1LTM0LTM4LTYyLjU0LTkxLjc4IDIyLjIyLTE2IDQ1LjY1LTM4Ljg3IDY3LjQ3LTY5LjI3IDEyMi44MiA0LjYgMTQzLjI5LTI0Ljc2IDE0OC0zMS42NCAxNC42Ny0xOS44OCAzLjQzLTU3LjQ0LTU3LjMyLTkzLjY5em0tNzcuODUgMTA2LjIyYzIzLjgxLTM3LjcxIDMwLjM0LTY3Ljc3IDI5LjQ1LTkyLjMzIDI3Ljg2IDE3LjU3IDQ3LjE4IDM3LjU4IDQ5LjA2IDU4LjgzIDEuMTQgMTIuOTMtOC4xIDI5LjEyLTc4LjUxIDMzLjV6TTIxNi45IDM4Ny42OWM5Ljc2LTYuMjMgMTkuNTMtMTMuMTIgMjkuMi0yMC40OSA2LjY4IDEzLjMzIDEzLjYgMjYuMSAyMC42IDM4LjE5LTQwLjYgMjEuODYtNjguODQgMTIuNzYtNDkuOC0xNy43em0yMTUtMTcxLjM1Yy0xMC4yOS01LjM0LTIxLjE2LTEwLjM0LTMyLjM4LTE1LjA1YTcyMi40NTkgNzIyLjQ1OSAwIDAgMCAyMi43NC0zNi45YzM5LjA2IDI0LjEgNDUuOSA1My4xOCA5LjY0IDUxLjk1ek0yNzkuMTggMzk4Yy01LjUxLTExLjM1LTExLTIzLjUtMTYuNS0zNi40NCA0My4yNSAxLjI3IDYyLjQyLTE4LjczIDYzLjI4LTIwLjQxIDAgLjA3LTI1IDE1LjY0LTYyLjUzIDEyLjI1YTcxOC43OCA3MTguNzggMCAwIDAgODUuMDYtODRxMTMuMDYtMTUuMzEgMjQuOTMtMzEuMTFjLS4zNi0uMjktMS41NC0zLTE2LjUxLTEyLTUxLjcgNjAuMjctMTAyLjM0IDk4LTEzMi43NSAxMTUuOTItMjAuNTktMTEuMTgtNDAuODQtMzEuNzgtNTUuNzEtNjEuNDktMjAtMzkuOTItMzAtODIuMzktMzEuNTctMTE2LjA3IDEyLjMuOTEgMjUuMjcgMi4xNyAzOC44NSAzLjg4LTIyLjI5IDM2LjgtMTQuMzkgNjMtMTMuNDcgNjQuMjMgMC0uMDctLjk1LTI5LjE3IDIwLjE0LTU5LjU3YTY5NS4yMyA2OTUuMjMgMCAwIDAgNDQuNjcgMTUyLjg0Yy45My0uMzggMS44NC44OCAxOC42Ny04LjI1LTI2LjMzLTc0LjQ3LTMzLjc2LTEzOC4xNy0zNC0xNzMuNDMgMjAtMTIuNDIgNDguMTgtMTkuOCA4MS42My0xNy44MSA0NC41NyAyLjY3IDg2LjM2IDE1LjI1IDExNi4zMiAzMC43MXEtMTAuNjkgMTUuNjYtMjMuMzMgMzIuNDdDMzY1LjYzIDE1MiAzMzkuMSAxNDUuODQgMzM3LjUgMTQ2Yy4xMSAwIDI1LjkgMTQuMDcgNDEuNTIgNDcuMjJhNzE3LjYzIDcxNy42MyAwIDAgMC0xMTUuMzQtMzEuNzEgNjQ2LjYwOCA2NDYuNjA4IDAgMCAwLTM5LjM5LTYuMDVjLS4wNy40NS0xLjgxIDEuODUtMi4xNiAyMC4zM0MzMDAgMTkwLjI4IDM1OC43OCAyMTUuNjggMzg5LjM2IDIzM2MuNzQgMjMuNTUtNi45NSA1MS42MS0yNS40MSA3OS41Ny0yNC42IDM3LjMxLTU2LjM5IDY3LjIzLTg0Ljc3IDg1LjQzem0yNy40LTI4N2MtNDQuNTYtMS42Ni03My41OCA3LjQzLTk0LjY5IDIwLjY3IDItNTIuMyAyMS4zMS03Ni4zOCAzOC4yMS03NS4yOEMyNjcgNTIuMTUgMzA1IDEwOC41NSAzMDYuNTggMTExem0tMTMwLjY1IDMuMWMuNDggMTIuMTEgMS41OSAyNC42MiAzLjIxIDM3LjI4LTE0LjU1LS44NS0yOC43NC0xLjI1LTQyLjQtMS4yNi0uMDggMy4yNC0uMTItNTEgMjQuNjctNDkuNTloLjA5YzUuNzYgMS4wOSAxMC42MyA2Ljg4IDE0LjQzIDEzLjU3em0tMjguMDYgMTYyYzIwLjc2IDM5LjcgNDMuMyA2MC41NyA2NS4yNSA3Mi4zMS00Ni43OSAyNC43Ni03Ny41MyAyMC04NC45MiA0LjUxLS4yLS4yMS0xMS4xMy0xNS4zIDE5LjY3LTc2Ljgxem0yMTAuMDYgNzQuOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWhhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAyMzcuMmMzMS44LTE1LjIgNDguNC0zOC4yIDQ4LjQtNzQgMC03MC42LTUyLjYtODcuOC0xMTMuMy04Ny44SDB2MzU0LjRoMTcxLjhjNjQuNCAwIDEyNC45LTMwLjkgMTI0LjktMTAyLjkgMC00NC41LTIxLjEtNzcuNC02NC43LTg5Ljd6TTc3LjkgMTM1LjlIMTUxYzI4LjEgMCA1My40IDcuOSA1My40IDQwLjUgMCAzMC4xLTE5LjcgNDIuMi00Ny41IDQyLjJoLTc5di04Mi43em04My4zIDIzMy43SDc3LjlWMjcyaDg0LjljMzQuMyAwIDU2IDE0LjMgNTYgNTAuNiAwIDM1LjgtMjUuOSA0Ny01Ny42IDQ3em0zNTguNS0yNDAuN0gzNzZWOTRoMTQzLjd2MzQuOXpNNTc2IDMwNS4yYzAtNzUuOS00NC40LTEzOS4yLTEyNC45LTEzOS4yLTc4LjIgMC0xMzEuMyA1OC44LTEzMS4zIDEzNS44IDAgNzkuOSA1MC4zIDEzNC43IDEzMS4zIDEzNC43IDYxLjMgMCAxMDEtMjcuNiAxMjAuMS04Ni4zSDUwOWMtNi43IDIxLjktMzQuMyAzMy41LTU1LjcgMzMuNS00MS4zIDAtNjMtMjQuMi02My02NS4zaDE4NS4xYy4zLTQuMi42LTguNy42LTEzLjJ6TTM5MC40IDI3NGMyLjMtMzMuNyAyNC43LTU0LjggNTguNS01NC44IDM1LjQgMCA1My4yIDIwLjggNTYuMiA1NC44SDM5MC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaWxpYmlsaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguNiAxMDQuMUM1MDUuMyAxMjIuMiA1MTMgMTQzLjggNTExLjkgMTY5LjhWMzcyLjJDNTExLjUgMzk4LjYgNTAyLjcgNDIwLjMgNDg1LjQgNDM3LjNDNDY4LjIgNDU0LjMgNDQ2LjMgNDYzLjIgNDE5LjkgNDY0SDkyLjAyQzY1LjU3IDQ2My4yIDQzLjgxIDQ1NC4yIDI2Ljc0IDQzNi44QzkuNjgyIDQxOS40IC43NjY3IDM5Ni41IDAgMzY4LjJWMTY5LjhDLjc2NjcgMTQzLjggOS42ODIgMTIyLjIgMjYuNzQgMTA0LjFDNDMuODEgODcuNzUgNjUuNTcgNzguNzcgOTIuMDIgNzhIMTIxLjRMOTYuMDUgNTIuMTlDOTAuMyA0Ni40NiA4Ny40MiAzOS4xOSA4Ny40MiAzMC40Qzg3LjQyIDIxLjYgOTAuMyAxNC4zNCA5Ni4wNSA4LjYwM0MxMDEuOCAyLjg2OCAxMDkuMSAwIDExNy45IDBDMTI2LjcgMCAxMzQgMi44NjggMTM5LjggOC42MDNMMjEzLjEgNzhIMzAxLjFMMzc1LjYgOC42MDNDMzgxLjcgMi44NjggMzg5LjIgMCAzOTggMEM0MDYuOCAwIDQxNC4xIDIuODY4IDQxOS45IDguNjAzQzQyNS42IDE0LjM0IDQyOC41IDIxLjYgNDI4LjUgMzAuNEM0MjguNSAzOS4xOSA0MjUuNiA0Ni40NiA0MTkuOSA1Mi4xOUwzOTQuNiA3OEw0MjMuOSA3OEM0NTAuMyA3OC43NyA0NzEuOSA4Ny43NSA0ODguNiAxMDQuMUg0ODguNnpNNDQ5LjggMTczLjhDNDQ5LjQgMTY0LjIgNDQ2LjEgMTU2LjQgNDM5LjEgMTUwLjNDNDMzLjkgMTQ0LjIgNDI1LjEgMTQwLjkgNDE2LjQgMTQwLjVIOTYuMDVDODYuNDYgMTQwLjkgNzguNiAxNDQuMiA3Mi40NyAxNTAuM0M2Ni4zMyAxNTYuNCA2My4wNyAxNjQuMiA2Mi42OSAxNzMuOFYzNjguMkM2Mi42OSAzNzcuNCA2NS45NSAzODUuMiA3Mi40NyAzOTEuN0M3OC45OSAzOTguMiA4Ni44NSA0MDEuNSA5Ni4wNSA0MDEuNUg0MTYuNEM0MjUuNiA0MDEuNSA0MzMuNCAzOTguMiA0MzkuNyAzOTEuN0M0NDYgMzg1LjIgNDQ5LjQgMzc3LjQgNDQ5LjggMzY4LjJMNDQ5LjggMTczLjh6TTE4NS41IDIxNi41QzE5MS44IDIyMi44IDE5NS4yIDIzMC42IDE5NS42IDIzOS43VjI3M0MxOTUuMiAyODIuMiAxOTEuOSAyODkuOSAxODUuOCAyOTYuMkMxNzkuNiAzMDIuNSAxNzEuOCAzMDUuNyAxNjIuMiAzMDUuN0MxNTIuNiAzMDUuNyAxNDQuNyAzMDIuNSAxMzguNiAyOTYuMkMxMzIuNSAyODkuOSAxMjkuMiAyODIuMiAxMjguOCAyNzNWMjM5LjdDMTI5LjIgMjMwLjYgMTMyLjYgMjIyLjggMTM4LjkgMjE2LjVDMTQ1LjIgMjEwLjIgMTUyLjEgMjA2LjkgMTYyLjIgMjA2LjVDMTcxLjQgMjA2LjkgMTc5LjIgMjEwLjIgMTg1LjUgMjE2LjVIMTg1LjV6TTM3NyAyMTYuNUMzODMuMyAyMjIuOCAzODYuNyAyMzAuNiAzODcuMSAyMzkuN1YyNzNDMzg2LjcgMjgyLjIgMzgzLjQgMjg5LjkgMzc3LjMgMjk2LjJDMzcxLjIgMzAyLjUgMzYzLjMgMzA1LjcgMzUzLjcgMzA1LjdDMzQ0LjEgMzA1LjcgMzM2LjMgMzAyLjUgMzMwLjEgMjk2LjJDMzIzLjEgMjg5LjkgMzIwLjcgMjgyLjIgMzIwLjQgMjczVjIzOS43QzMyMC43IDIzMC42IDMyNC4xIDIyMi44IDMzMC40IDIxNi41QzMzNi43IDIxMC4yIDM0NC41IDIwNi45IDM1My43IDIwNi41QzM2Mi45IDIwNi45IDM3MC43IDIxMC4yIDM3NyAyMTYuNUgzNzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpbW9iamVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzJIMzJDMTQuNCAzMiAwIDQ2LjQgMCA2NHYzODRjMCAxNy42IDE0LjQgMzIgMzIgMzJoMzg0YzE3LjYgMCAzMi0xNC40IDMyLTMyVjY0YzAtMTcuNi0xNC40LTMyLTMyLTMyem0tNjQgMjU3LjRjMCA0OS40LTExLjQgODIuNi0xMDMuOCA4Mi42aC0xNi45Yy00NC4xIDAtNjIuNC0xNC45LTcwLjQtMzguOGgtLjlWMzY4SDk2VjEzNmg2NHY3NC43aDEuMWM0LjYtMzAuNSAzOS43LTM4LjggNjkuNy0zOC44aDE3LjNjOTIuNCAwIDEwMy44IDMzLjEgMTAzLjggODIuNXYzNXptLTY0LTI4Ljl2MjIuOWMwIDIxLjctMy40IDMzLjgtMzguNCAzMy44aC00NS4zYy0yOC45IDAtNDQuMS02LjUtNDQuMS0zNS43di0xOWMwLTI5LjMgMTUuMi0zNS43IDQ0LjEtMzUuN2g0NS4zYzM1LS4yIDM4LjQgMTIgMzguNCAzMy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaXRidWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuMiAzMkExNiAxNiAwIDAgMCA2IDQ3LjhhMjYuMzUgMjYuMzUgMCAwIDAgLjIgMi44bDY3LjkgNDEyLjFhMjEuNzcgMjEuNzcgMCAwIDAgMjEuMyAxOC4yaDMyNS43YTE2IDE2IDAgMCAwIDE2LTEzLjRMNTA1IDUwLjdhMTYgMTYgMCAwIDAtMTMuMi0xOC4zIDI0LjU4IDI0LjU4IDAgMCAwLTIuOC0uMkwyMi4yIDMyem0yODUuOSAyOTcuOGgtMTA0bC0yOC4xLTE0N2gxNTcuM2wtMjUuMiAxNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpdGNvaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NmMwIDEzNi45NjctMTExLjAzMyAyNDgtMjQ4IDI0OFM4IDM5Mi45NjcgOCAyNTYgMTE5LjAzMyA4IDI1NiA4czI0OCAxMTEuMDMzIDI0OCAyNDh6bS0xNDEuNjUxLTM1LjMzYzQuOTM3LTMyLjk5OS0yMC4xOTEtNTAuNzM5LTU0LjU1LTYyLjU3M2wxMS4xNDYtNDQuNzAyLTI3LjIxMy02Ljc4MS0xMC44NTEgNDMuNTI0Yy03LjE1NC0xLjc4My0xNC41MDItMy40NjQtMjEuODAzLTUuMTNsMTAuOTI5LTQzLjgxLTI3LjE5OC02Ljc4MS0xMS4xNTMgNDQuNjg2Yy01LjkyMi0xLjM0OS0xMS43MzUtMi42ODItMTcuMzc3LTQuMDg0bC4wMzEtLjE0LTM3LjUzLTkuMzctNy4yMzkgMjkuMDYyczIwLjE5MSA0LjYyNyAxOS43NjUgNC45MTNjMTEuMDIyIDIuNzUxIDEzLjAxNCAxMC4wNDQgMTIuNjggMTUuODI1bC0xMi42OTYgNTAuOTI1Yy43Ni4xOTQgMS43NDQuNDczIDIuODI5LjkwNy0uOTA3LS4yMjUtMS44NzYtLjQ3My0yLjg3Ni0uNzEzbC0xNy43OTYgNzEuMzM4Yy0xLjM0OSAzLjM0OC00Ljc2NyA4LjM3LTEyLjQ3MSA2LjQ2NC4yNzEuMzk1LTE5Ljc4LTQuOTM3LTE5Ljc4LTQuOTM3bC0xMy41MSAzMS4xNDcgMzUuNDE0IDguODI3YzYuNTg4IDEuNjUxIDEzLjA0NSAzLjM3OSAxOS40IDUuMDA2bC0xMS4yNjIgNDUuMjEzIDI3LjE4MiA2Ljc4MSAxMS4xNTMtNDQuNzMzYTEwMzguMjA5IDEwMzguMjA5IDAgMCAwIDIxLjY4NyA1LjYyN2wtMTEuMTE1IDQ0LjUyMyAyNy4yMTMgNi43ODEgMTEuMjYyLTQ1LjEyOGM0Ni40MDQgOC43ODEgODEuMjk5IDUuMjM5IDk1Ljk4Ni0zNi43MjcgMTEuODM2LTMzLjc5LS41ODktNTMuMjgxLTI1LjAwNC02NS45OTEgMTcuNzgtNC4wOTggMzEuMTc0LTE1Ljc5MiAzNC43NDctMzkuOTQ5em0tNjIuMTc3IDg3LjE3OWMtOC40MSAzMy43OS02NS4zMDggMTUuNTIzLTgzLjc1NSAxMC45NDNsMTQuOTQ0LTU5Ljg5OWMxOC40NDYgNC42MDMgNzcuNiAxMy43MTcgNjguODExIDQ4Ljk1NnptOC40MTctODcuNjY3Yy03LjY3MyAzMC43MzYtNTUuMDMxIDE1LjEyLTcwLjM5MyAxMS4yOTJsMTMuNTQ4LTU0LjMyN2MxNS4zNjMgMy44MjggNjQuODM2IDEwLjk3MyA1Ni44NDUgNDMuMDM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTc4LjQgNjcuMkMxNzMuOC0yMiAzMjQuNS0yNCA0MjEuNSA3MWMxNC4zIDE0LjEtNi40IDM3LjEtMjIuNCAyMS41LTg0LjgtODIuNC0yMTUuOC04MC4zLTI5OC45LTMuMi0xNi4zIDE1LjEtMzYuNS04LjMtMjEuOC0yMi4xem05OC45IDQxOC42YzE5LjMgNS43IDI5LjMtMjMuNiA3LjktMzBDNzMgNDIxLjkgOS40IDMwNi4xIDM3LjcgMTk0LjhjNS0xOS42LTI0LjktMjguMS0zMC4yLTcuMS0zMi4xIDEyNy40IDQxLjEgMjU5LjggMTY5LjggMjk4LjF6bTE0OC4xLTJjMTIxLjktNDAuMiAxOTIuOS0xNjYuOSAxNjQuNC0yOTEtNC41LTE5LjctMzQuOS0xMy44LTMwIDcuOSAyNC4yIDEwNy43LTM3LjEgMjE3LjktMTQzLjIgMjUzLjQtMjEuMiA3LTEwLjQgMzYgOC44IDI5Ljd6bS02Mi45LTc5bC4yLTcxLjhjMC04LjItNi42LTE0LjgtMTQuOC0xNC44LTguMiAwLTE0LjggNi43LTE0LjggMTQuOGwtLjIgNzEuOGMwIDguMiA2LjYgMTQuOCAxNC44IDE0LjhzMTQuOC02LjYgMTQuOC0xNC44em03MS0yNjljMi4xIDkwLjkgNC43IDEzMS45LTg1LjUgMTMyLjUtOTIuNS0uNy04Ni45LTQ0LjMtODUuNS0xMzIuNSAwLTIxLjgtMzIuNS0xOS42LTMyLjUgMHY3MS42YzAgNjkuMyA2MC43IDkwLjkgMTE4IDkwLjEgNTcuMy44IDExOC0yMC44IDExOC05MC4xdi03MS42YzAtMTkuNi0zMi41LTIxLjgtMzIuNSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbGFja1RpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMzE2LjUgMzI1LjJMMjI0IDQ0NS45bC05Mi41LTg4LjcgNjQuNS0xODQtNjQuNS04Ni42aDE4NC45TDI1MiAxNzMuMmw2NC41IDE4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxhY2tiZXJyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjYgMTE2LjljMCAyMy40LTE2LjQgNDkuMS03Mi41IDQ5LjFIMjMuNGwyMS04OC44aDY3LjhjNDIuMSAwIDUzLjggMjMuMyA1My44IDM5Ljd6bTEyNi4yLTM5LjdoLTY3LjhMMjA1LjcgMTY2aDcwLjFjNTMuOCAwIDcwLjEtMjUuNyA3MC4xLTQ5LjEuMS0xNi40LTExLjYtMzkuNy01My43LTM5Ljd6TTg4LjggMjA4LjFIMjFMMCAyOTYuOWg3MC4xYzU2LjEgMCA3Mi41LTIzLjQgNzIuNS00OS4xIDAtMTYuMy0xMS43LTM5LjctNTMuOC0zOS43em0xODAuMSAwaC02Ny44bC0xOC43IDg4LjhoNzAuMWM1My44IDAgNzAuMS0yMy40IDcwLjEtNDkuMSAwLTE2LjMtMTEuNy0zOS43LTUzLjctMzkuN3ptMTg5LjMtNTMuOGgtNjcuOGwtMTguNyA4OC44aDcwLjFjNTMuOCAwIDcwLjEtMjMuNCA3MC4xLTQ5LjEuMS0xNi4zLTExLjYtMzkuNy01My43LTM5Ljd6bS0yOCAxMzcuOWgtNjcuOEwzNDMuNyAzODFoNzAuMWM1Ni4xIDAgNzAuMS0yMy40IDcwLjEtNDkuMSAwLTE2LjMtMTEuNi0zOS43LTUzLjctMzkuN3pNMjQwLjggMzQ2SDE3M2wtMTguNyA4OC44aDcwLjFjNTYuMSAwIDcwLjEtMjUuNyA3MC4xLTQ5LjEuMS0xNi4zLTExLjYtMzkuNy01My43LTM5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsb2dnZXJCIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni42IDIyMi43Yy0xLjgtOC02LjgtMTUuNC0xMi41LTE4LjUtMS44LTEtMTMtMi4yLTI1LTIuNy0yMC4xLS45LTIyLjMtMS4zLTI4LjctNS0xMC4xLTUuOS0xMi44LTEyLjMtMTIuOS0yOS41LS4xLTMzLTEzLjgtNjMuNy00MC45LTkxLjMtMTkuMy0xOS43LTQwLjktMzMtNjUuNS00MC41LTUuOS0xLjgtMTkuMS0yLjQtNjMuMy0yLjktNjkuNC0uOC04NC44LjYtMTA4LjQgMTBDNDUuOSA1OS41IDE0LjcgOTYuMSAzLjMgMTQyLjkgMS4yIDE1MS43LjcgMTY1LjguMiAyNDYuOGMtLjYgMTAxLjUuMSAxMTYuNCA2LjQgMTM2LjUgMTUuNiA0OS42IDU5LjkgODYuMyAxMDQuNCA5NC4zIDE0LjggMi43IDE5Ny4zIDMuMyAyMTYgLjggMzIuNS00LjQgNTgtMTcuNSA4MS45LTQxLjkgMTcuMy0xNy43IDI4LjEtMzYuOCAzNS4yLTYyLjEgNC45LTE3LjYgNC41LTE0Mi44IDIuNS0xNTEuN3ptLTMyMi4xLTYzLjZjNy44LTcuOSAxMC04LjIgNTguOC04LjIgNDMuOSAwIDQ1LjQuMSA1MS44IDMuNCA5LjMgNC43IDEzLjQgMTEuMyAxMy40IDIxLjkgMCA5LjUtMy44IDE2LjItMTIuMyAyMS42LTQuNiAyLjktNy4zIDMuMS01MC4zIDMuMy0yNi41LjItNDcuNy0uNC01MC44LTEuMi0xNi42LTQuNy0yMi44LTI4LjUtMTAuNi00MC44em0xOTEuOCAxOTkuOGwtMTQuOSAyLjQtNzcuNS45Yy02OC4xLjgtODcuMy0uNC05MC45LTItNy4xLTMuMS0xMy44LTExLjctMTQuOS0xOS40LTEuMS03LjMgMi42LTE3LjMgOC4yLTIyLjQgNy4xLTYuNCAxMC4yLTYuNiA5Ny4zLTYuNyA4OS42LS4xIDg5LjEtLjEgOTcuNiA3LjggMTIuMSAxMS4zIDkuNSAzMS4yLTQuOSAzOS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbG9nZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Mi40IDE5NmM0LjgtNC45IDYuMi01LjEgMzYuNC01LjEgMjcuMiAwIDI4LjEuMSAzMi4xIDIuMSA1LjggMi45IDguMyA3IDguMyAxMy42IDAgNS45LTIuNCAxMC03LjYgMTMuNC0yLjggMS44LTQuNSAxLjktMzEuMSAyLjEtMTYuNC4xLTI5LjUtLjItMzEuNS0uOC0xMC4zLTIuOS0xNC4xLTE3LjctNi42LTI1LjN6bTYxLjQgOTQuNWMtNTMuOSAwLTU1LjguMi02MC4yIDQuMS0zLjUgMy4xLTUuNyA5LjQtNS4xIDEzLjkuNyA0LjcgNC44IDEwLjEgOS4yIDEyIDIuMiAxIDE0LjEgMS43IDU2LjMgMS4ybDQ3LjktLjYgOS4yLTEuNWM5LTUuMSAxMC41LTE3LjQgMy4xLTI0LjQtNS4zLTQuNy01LTQuNy02MC40LTQuN3ptMjIzLjQgMTMwLjFjLTMuNSAyOC40LTIzIDUwLjQtNTEuMSA1Ny41LTcuMiAxLjgtOS43IDEuOS0xNzIuOSAxLjgtMTU3LjggMC0xNjUuOS0uMS0xNzItMS44LTguNC0yLjItMTUuNi01LjUtMjIuMy0xMC01LjYtMy44LTEzLjktMTEuOC0xNy0xNi40LTMuOC01LjYtOC4yLTE1LjMtMTAtMjJDLjEgNDIzIDAgNDIwLjMgMCAyNTYuMyAwIDkzLjIgMCA4OS43IDEuOCA4Mi42IDguMSA1Ny45IDI3LjcgMzkgNTMgMzMuNGM3LjMtMS42IDMzMi4xLTEuOSAzNDAtLjMgMjEuMiA0LjMgMzcuOSAxNy4xIDQ3LjYgMzYuNCA3LjcgMTUuMyA3LTEuNSA3LjMgMTgwLjYuMiAxMTUuOCAwIDE2NC41LS43IDE3MC41em0tODUuNC0xODUuMmMtMS4xLTUtNC4yLTkuNi03LjctMTEuNS0xLjEtLjYtOC0xLjMtMTUuNS0xLjctMTIuNC0uNi0xMy44LS44LTE3LjgtMy4xLTYuMi0zLjYtNy45LTcuNi04LTE4LjMgMC0yMC40LTguNS0zOS40LTI1LjMtNTYuNS0xMi0xMi4yLTI1LjMtMjAuNS00MC42LTI1LjEtMy42LTEuMS0xMS44LTEuNS0zOS4yLTEuOC00Mi45LS41LTUyLjUuNC02Ny4xIDYuMi0yNyAxMC43LTQ2LjMgMzMuNC01My40IDYyLjQtMS4zIDUuNC0xLjYgMTQuMi0xLjkgNjQuMy0uNCA2Mi44IDAgNzIuMSA0IDg0LjUgOS43IDMwLjcgMzcuMSA1My40IDY0LjYgNTguNCA5LjIgMS43IDEyMi4yIDIuMSAxMzMuNy41IDIwLjEtMi43IDM1LjktMTAuOCA1MC43LTI1LjkgMTAuNy0xMC45IDE3LjQtMjIuOCAyMS44LTM4LjUgMy4yLTEwLjkgMi45LTg4LjQgMS43LTkzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsdWVza3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3LjggMjk0LjdjLTMuMy0uNC02LjctLjgtMTAtMS4zYzMuNCAuNCA2LjcgLjkgMTAgMS4zek0yODggMjI3LjFDMjYxLjkgMTc2LjQgMTkwLjkgODEuOSAxMjQuOSAzNS4zQzYxLjYtOS40IDM3LjUtMS43IDIxLjYgNS41QzMuMyAxMy44IDAgNDEuOSAwIDU4LjRTOS4xIDE5NCAxNSAyMTMuOWMxOS41IDY1LjcgODkuMSA4Ny45IDE1My4yIDgwLjdjMy4zLS41IDYuNi0uOSAxMC0xLjRjLTMuMyAuNS02LjYgMS0xMCAxLjRDNzQuMyAzMDguNi05LjEgMzQyLjggMTAwLjMgNDY0LjVDMjIwLjYgNTg5LjEgMjY1LjEgNDM3LjggMjg4IDM2MS4xYzIyLjkgNzYuNyA0OS4yIDIyMi41IDE4NS42IDEwMy40YzEwMi40LTEwMy40IDI4LjEtMTU2LTY1LjgtMTY5LjljLTMuMy0uNC02LjctLjgtMTAtMS4zYzMuNCAuNCA2LjcgLjkgMTAgMS4zYzY0LjEgNy4xIDEzMy42LTE1LjEgMTUzLjItODAuN0M1NjYuOSAxOTQgNTc2IDc1IDU3NiA1OC40cy0zLjMtNDQuNy0yMS42LTUyLjljLTE1LjgtNy4xLTQwLTE0LjktMTAzLjIgMjkuOEMzODUuMSA4MS45IDMxNC4xIDE3Ni40IDI4OCAyMjcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmx1ZXRvb3RoQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTYuNDggMjYwLjAyM2w5Mi42MjYtMTAzLjMzM0wxNDMuMTI1IDB2MjA2LjMzbC04Ni4xMTEtODYuMTExLTMxLjQwNiAzMS40MDUgMTA4LjA2MSAxMDguMzk5TDI1LjYwOCAzNjguNDIybDMxLjQwNiAzMS40MDUgODYuMTExLTg2LjExMUwxNDUuODQgNTEybDE0OC41NTItMTQ4LjY0NC05Ny45MTItMTAzLjMzM3ptNDAuODYtMTAyLjk5NmwtNDkuOTc3IDQ5Ljk3OC0uMzM4LTEwMC4yOTUgNTAuMzE1IDUwLjMxN3pNMTg3LjM2MyAzMTMuMDRsNDkuOTc3IDQ5Ljk3OC01MC4zMTUgNTAuMzE2LjMzOC0xMDAuMjk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkyLjYgMTcxLjFMMjQ5LjcgMjE0bC0uMy04NiA0My4yIDQzLjFtLTQzLjIgMjE5LjhsNDMuMS00My4xLTQyLjktNDIuOS0uMiA4NnpNNDE2IDI1OS40QzQxNiA0NjUgMzQ0LjEgNTEyIDIzMC45IDUxMlMzMiA0NjUgMzIgMjU5LjQgMTE1LjQgMCAyMjguNiAwIDQxNiA1My45IDQxNiAyNTkuNHptLTE1OC41IDBsNzkuNC04OC42TDIxMS44IDM2LjV2MTc2LjlMMTM4IDEzOS42bC0yNyAyNi45IDkyLjcgOTMtOTIuNyA5MyAyNi45IDI2LjkgNzMuOC03My44IDIuMyAxNzAgMTI3LjQtMTI3LjUtODMuOS04OC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb290c3RyYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMzLjUsMjAxLjRjMC0yMi4xLTE1LjYtMzQuMy00My0zNC4zaC01MC40djcxLjJoNDIuNUMzMTUuNCwyMzguMiwzMzMuNSwyMjUsMzMzLjUsMjAxLjR6IE01MTcsMTg4LjYgYy05LjUtMzAuOS0xMC45LTY4LjgtOS44LTk4LjFjMS4xLTMwLjUtMjIuNy01OC41LTU0LjctNTguNUgxMjMuN2MtMzIuMSwwLTU1LjgsMjguMS01NC43LDU4LjVjMSwyOS4zLTAuMyw2Ny4yLTkuOCw5OC4xIGMtOS42LDMxLTI1LjcsNTAuNi01Mi4yLDUzLjF2MjguNWMyNi40LDIuNSw0Mi42LDIyLjEsNTIuMiw1My4xYzkuNSwzMC45LDEwLjksNjguOCw5LjgsOTguMWMtMS4xLDMwLjUsMjIuNyw1OC41LDU0LjcsNTguNWgzMjguNyBjMzIuMSwwLDU1LjgtMjguMSw1NC43LTU4LjVjLTEtMjkuMywwLjMtNjcuMiw5LjgtOTguMWM5LjYtMzEsMjUuNy01MC42LDUyLjEtNTMuMXYtMjguNUM1NDIuNywyMzkuMiw1MjYuNSwyMTkuNiw1MTcsMTg4LjZ6IE0zMDAuMiwzNzUuMWgtOTcuOVYxMzYuOGg5Ny40YzQzLjMsMCw3MS43LDIzLjQsNzEuNyw1OS40YzAsMjUuMy0xOS4xLDQ3LjktNDMuNSw1MS44djEuM2MzMy4yLDMuNiw1NS41LDI2LjYsNTUuNSw1OC4zIEMzODMuNCwzNDkuNywzNTIuMSwzNzUuMSwzMDAuMiwzNzUuMXogTTI5MC4yLDI2Ni40aC01MC4xdjc4LjRoNTIuM2MzNC4yLDAsNTIuMy0xMy43LDUyLjMtMzkuNSBDMzQ0LjcsMjc5LjYsMzI2LjEsMjY2LjQsMjkwLjIsMjY2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODYuMzQ0LDE5Ny44MzRhNTEuNzY3LDUxLjc2NywwLDAsMC00MS41NywyMC4wNThWMTU2LjAxOGE4LjE5LDguMTksMCwwLDAtOC4xOS04LjE5SDguMTlBOC4xOSw4LjE5LDAsMCwwLDAsMTU2LjAxOFYzMzMuNTUxYTguMTg5LDguMTg5LDAsMCwwLDguMTksOC4xODlIMzYuNTg0YTguMTg5LDguMTg5LDAsMCwwLDguMTktOC4xODl2LTguMDg4YzExLjYyOCwxMy4zNzMsMjUuODc0LDE5Ljc2OSw0MS41NzMsMTkuNzY5LDM0LjYsMCw2MS45MjItMjYuMTY0LDYxLjkyMi03My44NDNDMTQ4LjI2NiwyMjUuNDUyLDEyMS4yMjksMTk3LjgzNCw4Ni4zNDQsMTk3LjgzNFpNNzEuNTE2LDMwNS42OTFjLTkuNTkzLDAtMjEuMjIxLTQuOTQyLTI2Ljc0NS0xMi41VjI1MC4xNjRjNS41MjgtNy41NTgsMTcuMTUyLTEyLjc5MSwyNi43NDUtMTIuNzkxLDE3LjczNCwwLDMxLjEwNywxMy4wODIsMzEuMTA3LDM0LjAxM0MxMDIuNjIzLDI5Mi42MDksODkuMjUsMzA1LjY5MSw3MS41MTYsMzA1LjY5MVptMTU2LjM3Mi01OS4wMzJhMTcuNCwxNy40LDAsMSwwLDE3LjQsMTcuNEExNy40LDE3LjQsMCwwLDAsMjI3Ljg4OCwyNDYuNjU5Wk0yNzMuOTU2LDE1Ni43VjExMi4wMzlhMTMuMzA4LDEzLjMwOCwwLDEsMC0xMC4yMzcsMFYxNTYuN2ExMDcuNDksMTA3LjQ5LDAsMSwwLDEwLjIzNywwWm04NS45OTMsMTA3LjM2N2MwLDMwLjUzMS00MC43OTIsNTUuMjgxLTkxLjExMiw1NS4yODFzLTkxLjExMS0yNC43NS05MS4xMTEtNTUuMjgxLDQwLjc5Mi01NS4yODEsOTEuMTExLTU1LjI4MVMzNTkuOTQ5LDIzMy41MzIsMzU5Ljk0OSwyNjQuMDYyWm0tNTAuMTYzLDE3LjRhMTcuNCwxNy40LDAsMSwwLTE3LjQtMTcuNGgwQTE3LjQsMTcuNCwwLDAsMCwzMDkuNzg2LDI4MS40NjZaTTU4MC43LDI1MC40NTVjLTE0LjgyOC0yLjYxNy0yMi4zODctMy43OC0yMi4zODctOS44ODUsMC01LjUyMyw3LjI2OC05Ljg4NCwxNy43MzUtOS44ODRhNjUuNTYsNjUuNTYsMCwwLDEsMzQuNDg0LDEwLjEsOC4xNzEsOC4xNzEsMCwwLDAsMTEuMjg4LTIuNDY4Yy4wNy0uMTEuMTM4LS4yMjEuMi0uMzMzbDguNjExLTE0Ljg4NmE4LjIsOC4yLDAsMCwwLTIuODY3LTExLjEyMyw5OS44NjMsOTkuODYzLDAsMCwwLTUyLjAxNC0xNC4xMzhjLTM4Ljk1NiwwLTYwLjE3OSwyMS41MTQtNjAuMTc5LDQ2LjIyNSwwLDM2LjM0MiwzMy43MjUsNDEuODY0LDU3LjU2Myw0NS42NDIsMTMuMzczLDIuMzI2LDI0LjEzLDQuMzYxLDI0LjEzLDExLjA0OCwwLDYuNC01LjUyMywxMC43NTctMTguOSwxMC43NTctMTMuNTUyLDAtMzAuOTk0LTYuMjIyLTQyLjYyMy0xMy41NzlhOC4yMDYsOC4yMDYsMCwwLDAtMTEuMzM1LDIuNDkxYy0uMDM1LjA1NC0uMDY5LjEwOC0uMS4xNjRsLTEwLjIsMTYuODkxYTguMjIyLDguMjIyLDAsMCwwLDIuNDkxLDExLjA2NmMxNS4yMjQsMTAuMywzNy42NjMsMTYuNjkyLDU5LjQ0MSwxNi42OTIsNDAuNDA5LDAsNjMuOTU3LTE5Ljc2OSw2My45NTctNDYuNTE1QzY0MCwyNjAuNjMsNjA0LjUzNywyNTQuODE2LDU4MC43LDI1MC40NTVabS05NS45MjgsNjAuNzg3YTguMjExLDguMjExLDAsMCwwLTkuNTIxLTUuOTM4LDIzLjE2OCwyMy4xNjgsMCwwLDEtNC4xNTUuMzg3Yy03Ljg0OSwwLTEyLjUtNi4xMDYtMTIuNS0xNC4yNDVWMjQwLjI4aDIwLjM0OWE4LjE0Myw4LjE0MywwLDAsMCw4LjE0MS04LjE0M1YyMDkuNDY2YTguMTQzLDguMTQzLDAsMCwwLTguMTQxLTguMTQzSDQ1OC41OTRWMTcxLjA5MWE4LjE0Myw4LjE0MywwLDAsMC04LjE0My04LjE0M0g0MjIuMjU3YTguMTQzLDguMTQzLDAsMCwwLTguMTQzLDguMTQzaDB2MzAuMjMySDM5OWE4LjE0Myw4LjE0MywwLDAsMC04LjE0Myw4LjE0M2gwdjIyLjY3MUE4LjE0Myw4LjE0MywwLDAsMCwzOTksMjQwLjI4aDE1LjExNXY2My42NjdjMCwyNy4wMzcsMTUuNDA4LDQxLjI4Miw0My45LDQxLjI4MiwxMi4xODMsMCwyMS4zODMtMi4yLDI3LjYtNS40NDZhOC4xNjEsOC4xNjEsMCwwLDAsNC4xNDUtOS4yNzhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyYXZlUmV2ZXJzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTggMGMzIDAgNS44IDEuMyA3LjggMy42bDM4LjEgNDRjLjUtLjEgMS0uMiAxLjUtLjNjOS4yLTEuNiAxOC42LTIuMiAyNy43LTEuMmMxMS42IDEuNCAyMS41IDUuNCAyOC45IDEyLjljNy43IDcuOCAxNS40IDE1LjggMjIuNiAyMy42YzIuNSAyLjcgNC45IDUuMiA2LjkgNy40Yy43IC44IDEuNCAxLjUgMS45IDJjMy40IDMuNyA0LjIgOC4xIDIuNyAxMS45bC05LjggMjQuNiAxMy4xIDM4LjFjLjcgMiAuOCA0LjEgLjIgNi4yYy0uMSAuNC0uMSAuNC0uNSAyLjFjLS42IDIuMy0uNiAyLjMtMS41IDUuOGMtMS42IDYuMy0zLjUgMTMuMy01LjQgMjAuOWMtNS42IDIxLjYtMTEuMiA0My4yLTE2LjQgNjMuNGMtMTIuOSA0OS45LTIxLjQgODIuNy0yMy40IDkwLjljLTExLjEgNDQuNS0xOS45IDYwLTQ4LjMgODAuM2MtMjQuOSAxNy44LTc2LjggNTMuNi04Ni44IDYwYy0xIC42LTIgMS4zLTMuNCAyLjNjLS41IC40LTMuMiAyLjItMy45IDIuN2MtNC45IDMuMy04LjMgNS41LTEyLjEgNy4zYy00LjcgMi4yLTkuMyAzLjUtMTMuOSAzLjVzLTkuMS0xLjItMTMuOS0zLjVjLTMuNy0xLjgtNy4yLTMuOS0xMi4xLTcuM2MtLjgtLjUtMy40LTIuNC0zLjktMi43Yy0xLjQtMS0yLjUtMS43LTMuNC0yLjNjLTEwLTYuNC02MS45LTQyLjEtODYuOC02MGMtMjguNC0yMC40LTM3LjItMzUuOC00OC4zLTgwLjNjLTItOC4yLTEwLjUtNDEtMjMuMy05MC41Yy01LjMtMjAuNi0xMC45LTQyLjItMTYuNS02My44Yy0yLTcuNi0zLjgtMTQuNi01LjQtMjAuOWMtLjktMy41LS45LTMuNS0xLjUtNS44Yy0uNC0xLjctLjQtMS43LS41LTIuMWMtLjUtMi0uNC00LjIgLjItNi4ybDEzLjEtMzguMUwxMS44IDEwNGMtMS41LTMuOC0uNy04LjIgMi0xMS4yYzEuMi0xLjMgMS44LTIgMi42LTIuOGMyLTIuMiA0LjQtNC43IDYuOS03LjRDMzAuNiA3NC45IDM4LjMgNjYuOSA0NiA1OS4xYzcuNC03LjUgMTcuMy0xMS42IDI4LjktMTIuOWM5LjEtMS4xIDE4LjUtLjUgMjcuNyAxLjJjLjUgLjEgMSAuMiAxLjUgLjNsMzguMS00NEMxNDQuMiAxLjMgMTQ3IDAgMTUwIDBIMjk4em0tNC43IDIxLjFIMTU0LjdMMTE1LjYgNjYuMmMtMi42IDMtNi43IDQuMy0xMC42IDMuMmMtLjItLjEtLjctLjItMS41LS40Yy0xLjMtLjMtMi45LS42LTQuNS0uOWMtNy40LTEuMy0xNC45LTEuOC0yMS43LTFDNzAgNjggNjQuMyA3MC4zIDYwLjcgNzRjLTcuNiA3LjctMTUuMiAxNS42LTIyLjMgMjMuM2MtMS43IDEuOC0zLjMgMy41LTQuOCA1LjFsOC44IDIyYzEgMi40IDEgNSAuMiA3LjVMMjkuMiAxNzAuNmMuNCAxLjQgLjUgMS45IDEuMiA0LjhjMS42IDYuMyAzLjUgMTMuMyA1LjQgMjAuOWM1LjYgMjEuNiAxMS4yIDQzLjIgMTYuNCA2My40YzEyLjkgNTAgMjEuNCA4Mi44IDIzLjQgOTFDODUuNyAzOTAuOCA5MiA0MDIgMTE1LjggNDE5YzI0LjYgMTcuNiA3Ni4zIDUzLjIgODUuOSA1OS4zYzEuMiAuOCAyLjUgMS42IDQgMi43Yy42IC40IDMuMiAyLjIgMy45IDIuN2M0IDIuOCA2LjcgNC40IDkuMiA1LjZjMi4yIDEgMy45IDEuNSA1LjEgMS41czIuOS0uNSA1LjEtMS41YzIuNS0xLjIgNS4yLTIuOCA5LjItNS42Yy43LS41IDMuMy0yLjMgMy45LTIuN2MxLjYtMS4xIDIuOC0xLjkgNC0yLjdjOS42LTYuMSA2MS4zLTQxLjcgODUuOS01OS4zYzIzLjgtMTcuMSAzMC4yLTI4LjIgNDAuMS02OC4zYzIuMS04LjMgMTAuNS00MS4xIDIzLjMtOTAuN2M1LjMtMjAuNiAxMC45LTQyLjIgMTYuNS02My44YzItNy42IDMuOC0xNC42IDUuNC0yMC45Yy43LTIuOSAuOS0zLjQgMS4yLTQuOGwtMTMuMy0zOC44Yy0uOC0yLjQtLjgtNS4xIC4yLTcuNWw4LjgtMjJjLTEuNS0xLjYtMy4xLTMuMy00LjgtNS4xYy03LjItNy42LTE0LjctMTUuNS0yMi4zLTIzLjNjLTMuNy0zLjctOS4zLTYtMTYuNi02LjljLTYuOC0uOC0xNC40LS4zLTIxLjcgMWMtMS43IC4zLTMuMiAuNi00LjUgLjljLS44IC4yLTEuMyAuMy0xLjUgLjRjLTMuOCAxLjEtNy45LS4yLTEwLjYtMy4yTDI5My4zIDIxLjF6TTIyNCAzMTZjMi44IDAgMjAuOSA2LjUgMzUuNCAxNC4xczI1IDEzIDI4LjMgMTUuMnMxLjMgNi4yLTEuNyA4LjRzLTQ0LjEgMzQuNi00OC4xIDM4LjJzLTkuOCA5LjUtMTMuOCA5LjVzLTkuOC01LjktMTMuOC05LjVzLTQ1LjEtMzYtNDguMS0zOC4ycy01LjEtNi4yLTEuNy04LjRzMTMuOS03LjUgMjguMy0xNS4yczMyLjUtMTQuMSAzNS40LTE0LjF6bS4xLTIzMC43Yy43IDAgOC44IC4yIDIwLjUgNC4yYzEyLjMgNC4yIDI1LjcgOS40IDMxLjkgOS40czUxLjktOC45IDUxLjktOC45czU0LjIgNjYuNyA1NC4yIDgxcy02LjggMTgtMTMuNyAyNS40cy0zNi44IDM5LjgtNDAuNyA0My45cy0xMS45IDEwLjUtNy4xIDIxLjhzMTEuNyAyNS44IDMuOSA0MC40cy0yMSAyNC40LTI5LjQgMjIuOHMtMjguNC0xMi4yLTM1LjctMTcuMXMtMzAuNS0yNC4zLTMwLjUtMzEuOHMyNC0yMC44IDI4LjQtMjMuOXMyNC43LTE0LjggMjUuMS0xOS40cy4zLTYtNS43LTE3LjRzLTE2LjctMjYuNy0xNC45LTM2LjhzMTkuMS0xNS40IDMxLjUtMjAuMnMzNi4yLTEzLjcgMzkuMi0xNS4xczIuMi0yLjctNi44LTMuNnMtMzQuNi00LjMtNDYuMS0xLjFzLTMxLjIgOC4yLTMyLjggMTAuOXMtMyAyLjctMS40IDExLjhzMTAuMSA1Mi44IDEwLjkgNjAuNnMyLjQgMTIuOS01LjggMTQuOHMtMjIuMSA1LjItMjYuOCA1LjJzLTE4LjYtMy4zLTI2LjgtNS4ycy02LjYtNy01LjgtMTQuOHM5LjMtNTEuNSAxMC45LTYwLjZzLjItOS4yLTEuNC0xMS44cy0yMS4zLTcuNi0zMi44LTEwLjlzLTM3LjEgLjItNDYuMSAxLjFzLTkuOCAyLjItNi44IDMuNnMyNi44IDEwLjQgMzkuMiAxNS4xczI5LjcgMTAgMzEuNSAyMC4ycy05IDI1LjQtMTQuOSAzNi44cy02LjEgMTIuOC01LjcgMTcuNHMyMC42IDE2LjQgMjUuMSAxOS40czI4LjQgMTYuNCAyOC40IDIzLjlzLTIzLjIgMjctMzAuNSAzMS44cy0yNy4yIDE1LjQtMzUuNyAxNy4xcy0yMS43LTguMi0yOS40LTIyLjhzLS44LTI5LjEgMy45LTQwLjRzLTMuMy0xNy43LTcuMS0yMS44cy0zMy44LTM2LjUtNDAuNy00My45cy0xMy43LTExLjItMTMuNy0yNS40czU0LjItODEgNTQuMi04MXM0NS44IDguOSA1MS45IDguOXMxOS41LTUuMiAzMS45LTkuNHMyMC42LTQuMiAyMC42LTQuMmwuMSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmF2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDUuNSAwSDIyNGg3OC41bDQ0LjcgNTAuOHMzOS4zLTEwLjkgNTcuOCA3LjZzMzMuOCAzNC45IDMzLjggMzQuOWwtMTIgMjkuNSAxNS4zIDQzLjdzLTQ0LjkgMTcwLjItNTAuMSAxOTFjLTEwLjQgNDAuOS0xNy40IDU2LjgtNDYuOSA3Ny41cy04Mi45IDU2LjgtOTEuNiA2Mi4yYy0xLjkgMS4yLTMuOSAyLjUtNS45IDMuOWMtNy41IDUuMS0xNS44IDEwLjgtMjMuNSAxMC44bDAgMCAwIDBjLTcuNyAwLTE2LjEtNS43LTIzLjUtMTAuOGMtMi0xLjQtNC0yLjgtNS45LTMuOWMtOC43LTUuNS02Mi4xLTQxLjUtOTEuNi02Mi4ycy0zNi41LTM2LjYtNDYuOS03Ny41Yy01LjMtMjAuOC01MC4xLTE5MS01MC4xLTE5MWwxNS4zLTQzLjdMOS4yIDkzLjNzMTUuMy0xNi40IDMzLjgtMzQuOXM1Ny44LTcuNiA1Ny44LTcuNkwxNDUuNSAwek0yMjQgNDA3LjZsMCAwYzMuNyAwIDguOS00LjcgMTMtOC40Yy42LS41IDEuMi0xLjEgMS43LTEuNWM0LjItMy43IDQ3LjgtMzcuNSA1MS0zOS44czUuNC02LjUgMS45LTguN2MtMi44LTEuNy0xMC01LjUtMjAuMy0xMC44Yy0zLTEuNi02LjMtMy4yLTkuNy01Yy0xNS40LTgtMzQuNS0xNC43LTM3LjUtMTQuN2wwIDAgMCAwYy0zIDAtMjIuMSA2LjgtMzcuNSAxNC43Yy0zLjUgMS44LTYuNyAzLjUtOS43IDVjLTEwLjMgNS4zLTE3LjYgOS4xLTIwLjMgMTAuOGMtMy42IDIuMi0xLjQgNi40IDEuOSA4LjdzNDYuOCAzNi4xIDUxIDM5LjhjLjUgLjUgMS4xIDEgMS43IDEuNWM0LjEgMy43IDkuMyA4LjQgMTMgOC40bDAgMHptMC0xNjUuN2wwIDBjNC43IDAgMTcuNi0zIDI2LjQtNWwwIDAgMi0uNWM3LjgtMS44IDcuMy02LjMgNi40LTEzYy0uMS0uOC0uMi0xLjYtLjMtMi40Yy0uNi02LjEtNS44LTMzLjEtOS4xLTUwLjNjLTEuMS01LjgtMi0xMC41LTIuNC0xMi45Yy0xLjUtOC4xLS42LTkuNCAuNy0xMS4zYy4yLS4zIC41LS43IC43LTEuMWMxLjQtMi4zIDE2LTYuMiAyNy45LTkuNWwwIDBjMi41LS43IDQuOC0xLjMgNi45LTEuOWMxMC42LTMgMzIuNC0uNiA0NC4yIC42YzEuOCAuMiAzLjQgLjQgNC43IC41YzkuNiAuOSAxMC40IDIuMyA3LjIgMy44Yy0yLjMgMS4xLTE2LjIgNi4zLTI4LjcgMTAuOWwwIDAgMCAwYy00LjcgMS44LTkuMiAzLjUtMTIuOCA0LjhjLTEuNSAuNS0zIDEuMS00LjUgMS43Yy0xMi41IDQuNi0yNy4yIDEwLTI4LjkgMTkuNGMtMS41IDguMyA1LjIgMTkuOSAxMS4zIDMwLjNsMCAwYzEuNiAyLjggMy4yIDUuNSA0LjYgOC4xYzYuMyAxMS45IDYuNSAxMy4zIDYuMSAxOC4xYy0uNCAzLjktMTQuNSAxMi43LTIyLjQgMTcuNmwwIDBjLTEuOCAxLjEtMy4zIDIuMS00LjIgMi43Yy0uOCAuNS0yLjEgMS40LTMuOCAyLjRjLTguNiA1LjItMjYuMyAxNi0yNi4zIDIyLjVjMCA3LjggMjQuNiAyOC4xIDMyLjQgMzMuMnMyOC45IDE2LjEgMzcuOSAxNy44czIzLTguNSAzMS4yLTIzLjhjNy43LTE0LjQgMS43LTI4LjUtMy4yLTQwbC0uOS0yLjJjLTQuNS0xMC42IDEuOS0xNyA2LjItMjEuM2wwIDBjLjUtLjUgMS0xIDEuNC0xLjRMMzc3LjcgMTk0YzEuMy0xLjMgMi41LTIuNiAzLjctMy44bDAgMGM1LjgtNS43IDEwLjgtMTAuNSAxMC44LTIyLjhjMC0xNC45LTU3LjUtODQuNS01Ny41LTg0LjVzLTQ4LjUgOS4zLTU1LjEgOS4zYy01LjIgMC0xNS4zLTMuNS0yNS44LTcuMWwwIDBjLTIuNy0uOS01LjQtMS45LTgtMi43QzIzMi44IDc4LjEgMjI0IDc4IDIyNCA3OGwwIDAgMCAwcy04LjcgMC0yMS44IDQuNGMtMi43IC45LTUuNCAxLjgtOCAyLjdsMCAwYy0xMC41IDMuNi0yMC42IDcuMS0yNS44IDcuMWMtNi41IDAtNTUuMS05LjMtNTUuMS05LjNzLTU3LjUgNjkuNi01Ny41IDg0LjVjMCAxMi4zIDQuOSAxNy4xIDEwLjggMjIuOGwwIDBjMS4yIDEuMiAyLjUgMi40IDMuNyAzLjhsNDMuMSA0NS44Yy40IC41IC45IC45IDEuNCAxLjRsMCAwYzQuMyA0LjMgMTAuNiAxMC43IDYuMiAyMS4zbC0uOSAyLjJjLTQuOSAxMS41LTExIDI1LjYtMy4yIDQwYzguMiAxNS4zIDIyLjIgMjUuNSAzMS4yIDIzLjhzMzAuMS0xMi43IDM3LjktMTcuOHMzMi40LTI1LjQgMzIuNC0zMy4yYzAtNi41LTE3LjctMTcuMy0yNi4zLTIyLjVjLTEuNy0xLTMuMS0xLjktMy44LTIuNGMtLjktLjYtMi40LTEuNS00LjItMi43Yy03LjktNC45LTIyLTEzLjctMjIuNC0xNy42Yy0uNC00LjgtLjMtNi4yIDYuMS0xOC4xYzEuMy0yLjUgMi45LTUuMyA0LjYtOC4xYzYtMTAuNCAxMi44LTIyIDExLjMtMzAuM2MtMS43LTkuNC0xNi40LTE0LjgtMjguOS0xOS40Yy0xLjYtLjYtMy4xLTEuMS00LjUtMS43Yy0zLjYtMS40LTguMS0zLjEtMTIuOC00LjhsLS4xIDBjLTEyLjUtNC43LTI2LjQtOS45LTI4LjctMTAuOWMtMy4yLTEuNS0yLjMtMi44IDcuMi0zLjhjMS4zLS4xIDIuOS0uMyA0LjctLjVjMTEuOC0xLjMgMzMuNi0zLjYgNDQuMi0uNmMyLjEgLjYgNC40IDEuMiA2LjkgMS45YzExLjkgMy4yIDI2LjUgNy4yIDI3LjkgOS41Yy4yIC40IC41IC43IC43IDEuMWMxLjMgMS45IDIuMiAzLjIgLjcgMTEuM2MtLjQgMi40LTEuMyA3LjEtMi40IDEyLjljLTMuMyAxNy4yLTguNSA0NC4yLTkuMSA1MC4zYy0uMSAuOC0uMiAxLjctLjMgMi40Yy0uOCA2LjctMS40IDExLjIgNi40IDEzbDIgLjUgMCAwYzguOCAyIDIxLjggNSAyNi40IDVsMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdGMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEwLjIwNCAyNDIuNjM4YzI3LjczLTE0LjE4IDQ1LjM3Ny0zOS4zOSA0MS4yOC04MS4zLTUuMzU4LTU3LjM1MS01Mi40NTgtNzYuNTczLTExNC44NS04MS45MjlWMGgtNDguNTI4djc3LjIwM2MtMTIuNjA1IDAtMjUuNTI1LjMxNS0zOC40NDQuNjNWMGgtNDguNTI4djc5LjQwOWMtMTcuODQyLjUzOS0zOC42MjIuMjc2LTk3LjM3IDB2NTEuNjc4YzM4LjMxNC0uNjc4IDU4LjQxNy0zLjE0IDYzLjAyMyAyMS40Mjd2MjE3LjQyOWMtMi45MjUgMTkuNDkyLTE4LjUyNCAxNi42ODUtNTMuMjU1IDE2LjA3MUwzLjc2NSA0NDMuNjhjODguNDgxIDAgOTcuMzcuMzE1IDk3LjM3LjMxNVY1MTJoNDguNTI4di02Ny4wNmMxMy4yMzQuMzE1IDI2LjE1NC4zMTUgMzguNDQ0LjMxNVY1MTJoNDguNTI4di02OC4wMDVjODEuMjk5LTQuNDEyIDEzNS42NDctMjQuODk0IDE0Mi44OTUtMTAxLjQ2NyA1LjY3MS02MS40NDYtMjMuMzItODguODYyLTY5LjMyNi05OS44OXpNMTUwLjYwOCAxMzQuNTUzYzI3LjQxNSAwIDExMy4xMjYtOC41MDcgMTEzLjEyNiA0OC41MjggMCA1NC41MTUtODUuNzEgNDguMjEyLTExMy4xMjYgNDguMjEydi05Ni43NHptMCAyNTEuNzc2VjI3OS44MjFjMzIuNzcyIDAgMTMzLjEyNy05LjEzOCAxMzMuMTI3IDUzLjI1NS0uMDAxIDYwLjE4Ni0xMDAuMzU1IDUzLjI1My0xMzMuMTI3IDUzLjI1M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVmZmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNy44NCAzODAuNjdsLTE5Ni41IDk3LjgyYTE4LjYgMTguNiAwIDAgMS0xNC42NyAwTDIwLjE2IDM4MC42N2MtNC0yLTQtNS4yOCAwLTcuMjlMNjcuMjIgMzUwYTE4LjY1IDE4LjY1IDAgMCAxIDE0LjY5IDBsMTM0Ljc2IDY3YTE4LjUxIDE4LjUxIDAgMCAwIDE0LjY3IDBsMTM0Ljc2LTY3YTE4LjYyIDE4LjYyIDAgMCAxIDE0LjY4IDBsNDcuMDYgMjMuNDNjNC4wNSAxLjk2IDQuMDUgNS4yNCAwIDcuMjR6bTAtMTM2LjUzbC00Ny4wNi0yMy40M2ExOC42MiAxOC42MiAwIDAgMC0xNC42OCAwbC0xMzQuNzYgNjcuMDhhMTguNjggMTguNjggMCAwIDEtMTQuNjcgMEw4MS45MSAyMjAuNzFhMTguNjUgMTguNjUgMCAwIDAtMTQuNjkgMGwtNDcuMDYgMjMuNDNjLTQgMi00IDUuMjkgMCA3LjMxbDE5Ni41MSA5Ny44YTE4LjYgMTguNiAwIDAgMCAxNC42NyAwbDE5Ni41LTk3LjhjNC4wNS0yLjAyIDQuMDUtNS4zIDAtNy4zMXpNMjAuMTYgMTMwLjQybDE5Ni41IDkwLjI5YTIwLjA4IDIwLjA4IDAgMCAwIDE0LjY3IDBsMTk2LjUxLTkwLjI5YzQtMS44NiA0LTQuODkgMC02Ljc0TDIzMS4zMyAzMy40YTE5Ljg4IDE5Ljg4IDAgMCAwLTE0LjY3IDBsLTE5Ni41IDkwLjI4Yy00LjA1IDEuODUtNC4wNSA0Ljg4IDAgNi43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVyb21vYmVsZXhwZXJ0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjEyOGgxMjhWMzJIMHptMTIwIDEyMEg4VjQwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjMySDE2MHptMTIwIDEyMEgxNjhWNDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMzJIMzIwem0xMjAgMTIwSDMyOFY0MGgxMTJ2MTEyek0wIDE5MnYxMjhoMTI4VjE5Mkgwem0xMjAgMTIwSDhWMjAwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjE5MkgxNjB6bTEyMCAxMjBIMTY4VjIwMGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYxOTJIMzIwem0xMjAgMTIwSDMyOFYyMDBoMTEydjExMnpNMCAzNTJ2MTI4aDEyOFYzNTJIMHptMTIwIDEyMEg4VjM2MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzNTJIMTYwem0xMjAgMTIwSDE2OFYzNjBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMzUySDMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnV5TkxhcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMkMxMzMuMjcgMzIgNy43OSAxMzIuMzIgNy43OSAyNTZTMTMzLjI3IDQ4MCAyODggNDgwczI4MC4yMS0xMDAuMzIgMjgwLjIxLTIyNFM0NDIuNzMgMzIgMjg4IDMyem0tODUuMzkgMzU3LjE5TDY0LjEgMzkwLjU1bDc3LjI1LTI5MC43NGgxMzMuNDRjNjMuMTUgMCA4NC45MyAyOC42NSA3OCA3Mi44NGE2MC4yNCA2MC4yNCAwIDAgMS0xLjUgNi44NSA3Ny4zOSA3Ny4zOSAwIDAgMC0xNy4yMS0xLjkzYy00Mi4zNSAwLTc2LjY5IDMzLjg4LTc2LjY5IDc1LjY1IDAgMzcuMTQgMjcuMTQgNjggNjIuOTMgNzQuNDUtMTguMjQgMzcuMTYtNTYuMTYgNjAuOTItMTE3LjcxIDYxLjUyek0zNTggMjA3LjExaDMybC0yMi4xNiA5MC4zMWgtMzUuNDFsLTExLjE5LTM1LjYzLTcuODMgMzUuNjNoLTM3LjgzbDI2LjYzLTkwLjMxaDMxLjM0bDE1IDM2Ljc1em0xNDUuODYgMTgyLjA4SDMwNi43OUwzMjIuNjMgMzI4YTc4LjggNzguOCAwIDAgMCAxMS40Ny44M2M0Mi4zNCAwIDc2LjY5LTMzLjg3IDc2LjY5LTc1LjY1IDAtMzIuNjUtMjEtNjAuNDYtNTAuMzgtNzEuMDZsMjEuMzMtODIuMzVoOTIuNWwtNTMuMDUgMjA1LjM2aDEwMy44N3pNMjExLjcgMjY5LjM5SDE4N2wtMTMuOCA1Ni40N2gyNC43YzE2LjE0IDAgMzIuMTEtMy4xOCAzNy45NC0yNi42NSA1LjU2LTIyLjMxLTcuOTktMjkuODItMjQuMTQtMjkuODJ6TTIzMyAxNzBoLTIxLjM0TDIwMCAyMTcuNzFoMjEuMzdjMTggMCAzNS4zOC0xNC42NCAzOS4yMS0zMC4xNEMyNjUuMjMgMTY4LjcxIDI1MS4wNyAxNzAgMjMzIDE3MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnV5c2VsbGFkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTUwLjdsNDIuOSAxNjAuN2gtODUuOEwyMjQgMTUwLjd6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTY1LjMgMzI1LjNsLTk0LjUtMjk4LjdIMTU5LjhMNjUuMyA0MDUuM0gxNTZsMTExLjctOTEuNiAyNC4yIDkxLjZoOTAuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FuYWRpYW5NYXBsZUxlYWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgzLjggMzUxLjdjMi41LTIuNSAxMDUuMi05Mi40IDEwNS4yLTkyLjRsLTE3LjUtNy41Yy0xMC00LjktNy40LTExLjUtNS0xNy40IDIuNC03LjYgMjAuMS02Ny4zIDIwLjEtNjcuM3MtNDcuNyAxMC01Ny43IDEyLjVjLTcuNSAyLjQtMTAtMi41LTEyLjUtNy41cy0xNS0zMi40LTE1LTMyLjQtNTIuNiA1OS45LTU1LjEgNjIuM2MtMTAgNy41LTIwLjEgMC0xNy42LTEwIDAtMTAgMjcuNi0xMjkuNiAyNy42LTEyOS42cy0zMC4xIDE3LjQtNDAuMSAyMi40Yy03LjUgNS0xMi42IDUtMTcuNi01QzI5My41IDcyLjMgMjU1LjkgMCAyNTUuOSAwcy0zNy41IDcyLjMtNDIuNSA3OS44Yy01IDEwLTEwIDEwLTE3LjYgNS0xMC01LTQwLjEtMjIuNC00MC4xLTIyLjRTMTgzLjMgMTgyIDE4My4zIDE5MmMyLjUgMTAtNy41IDE3LjUtMTcuNiAxMC0yLjUtMi41LTU1LjEtNjIuMy01NS4xLTYyLjNTOTguMSAxNjcgOTUuNiAxNzJzLTUgOS45LTEyLjUgNy41QzczIDE3NyAyNS40IDE2NyAyNS40IDE2N3MxNy42IDU5LjcgMjAuMSA2Ny4zYzIuNCA2IDUgMTIuNS01IDE3LjRMMjMgMjU5LjNzMTAyLjYgODkuOSAxMDUuMiA5Mi40YzUuMSA1IDEwIDcuNSA1LjEgMjIuNS01LjEgMTUtMTAuMSAzNS4xLTEwLjEgMzUuMXM5NS4yLTIwLjEgMTA1LjMtMjIuNmM4LjctLjkgMTguMyAyLjUgMTguMyAxMi41UzI0MSA1MTIgMjQxIDUxMmgzMHMtNS44LTEwMi43LTUuOC0xMTIuOCA5LjUtMTMuNCAxOC40LTEyLjVjMTAgMi41IDEwNS4yIDIyLjYgMTA1LjIgMjIuNnMtNS0yMC4xLTEwLTM1LjEgMC0xNy41IDUtMjIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NBbWF6b25QYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI0LjcgMjAxLjhjLjEtMTEuOCAwLTIzLjUgMC0zNS4zdi0zNS4zYzAtMS4zLjQtMiAxLjQtMi43IDExLjUtOCAyNC4xLTEyLjEgMzguMi0xMS4xIDEyLjUuOSAyMi43IDcgMjguMSAyMS43IDMuMyA4LjkgNC4xIDE4LjIgNC4xIDI3LjcgMCA4LjctLjcgMTcuMy0zLjQgMjUuNi01LjcgMTcuOC0xOC43IDI0LjctMzUuNyAyMy45LTExLjctLjUtMjEuOS01LTMxLjQtMTEuNy0uOS0uOC0xLjQtMS42LTEuMy0yLjh6bTE1NC45IDE0LjZjNC42IDEuOCA5LjMgMiAxNC4xIDEuNSAxMS42LTEuMiAyMS45LTUuNyAzMS4zLTEyLjUuOS0uNiAxLjMtMS4zIDEuMy0yLjUtLjEtMy45IDAtNy45IDAtMTEuOCAwLTQtLjEtOCAwLTEyIDAtMS40LS40LTItMS44LTIuMi03LS45LTEzLjktMi4yLTIwLjktMi45LTctLjYtMTQtLjMtMjAuOCAxLjktNi43IDIuMi0xMS43IDYuMi0xMy43IDEzLjEtMS42IDUuNC0xLjYgMTAuOC4xIDE2LjIgMS42IDUuNSA1LjIgOS4yIDEwLjQgMTEuMnpNNTc2IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tMjA3LjUgMjMuOWMuNCAxLjcuOSAzLjQgMS42IDUuMSAxNi41IDQwLjYgMzIuOSA4MS4zIDQ5LjUgMTIxLjkgMS40IDMuNSAxLjcgNi40LjIgOS45LTIuOCA2LjItNC45IDEyLjYtNy44IDE4LjctMi42IDUuNS02LjcgOS41LTEyLjcgMTEuMi00LjIgMS4xLTguNSAxLjMtMTIuOS45LTIuMS0uMi00LjItLjctNi4zLS44LTIuOC0uMi00LjIgMS4xLTQuMyA0LS4xIDIuOC0uMSA1LjYgMCA4LjMuMSA0LjYgMS42IDYuNyA2LjIgNy41IDQuNy44IDkuNCAxLjYgMTQuMiAxLjcgMTQuMy4zIDI1LjctNS40IDMzLjEtMTcuOSAyLjktNC45IDUuNi0xMC4xIDcuNy0xNS40IDE5LjgtNTAuMSAzOS41LTEwMC4zIDU5LjItMTUwLjUuNi0xLjUgMS4xLTMgMS4zLTQuNi40LTIuNC0uNy0zLjYtMy4xLTMuNy01LjYtLjEtMTEuMSAwLTE2LjcgMC0zLjEgMC01LjMgMS40LTYuNCA0LjMtLjQgMS4xLS45IDIuMy0xLjMgMy40bC0yOS4xIDgzLjdjLTIuMSA2LjEtNC4yIDEyLjEtNi41IDE4LjYtLjQtLjktLjYtMS40LS44LTEuOS0xMC44LTI5LjktMjEuNi01OS45LTMyLjQtODkuOC0xLjctNC43LTMuNS05LjUtNS4zLTE0LjItLjktMi41LTIuNy00LTUuNC00LTYuNC0uMS0xMi44LS4yLTE5LjItLjEtMi4yIDAtMy4zIDEuNi0yLjggMy43ek0yNDIuNCAyMDZjMS43IDExLjcgNy42IDIwLjggMTggMjYuNiA5LjkgNS41IDIwLjcgNi4yIDMxLjcgNC42IDEyLjctMS45IDIzLjktNy4zIDMzLjgtMTUuNS40LS4zLjgtLjYgMS40LTEgLjUgMy4yLjkgNi4yIDEuNSA5LjIuNSAyLjYgMi4xIDQuMyA0LjUgNC40IDQuNi4xIDkuMS4xIDEzLjcgMCAyLjMtLjEgMy44LTEuNiA0LTMuOS4xLS44LjEtMS42LjEtMi4zdi04OC44YzAtMy42LS4yLTcuMi0uNy0xMC44LTEuNi0xMC44LTYuMi0xOS43LTE1LjktMjUuNC01LjYtMy4zLTExLjgtNS0xOC4yLTUuOS0zLS40LTYtLjctOS4xLTEuMWgtMTBjLS44LjEtMS42LjMtMi41LjMtOC4yLjQtMTYuMyAxLjQtMjQuMiAzLjUtNS4xIDEuMy0xMCAzLjItMTUgNC45LTMgMS00LjUgMy4yLTQuNCA2LjUuMSAyLjgtLjEgNS42IDAgOC4zLjEgNC4xIDEuOCA1LjIgNS43IDQuMSA2LjUtMS43IDEzLjEtMy41IDE5LjctNC44IDEwLjMtMS45IDIwLjctMi43IDMxLjEtMS4yIDUuNC44IDEwLjUgMi40IDE0LjEgNyAzLjEgNCA0LjIgOC44IDQuNCAxMy43LjMgNi45LjIgMTMuOS4zIDIwLjggMCAuNC0uMS43LS4yIDEuMi0uNCAwLS44IDAtMS4xLS4xLTguOC0yLjEtMTcuNy0zLjYtMjYuOC00LjEtOS41LS41LTE4LjkuMS0yNy45IDMuMi0xMC44IDMuOC0xOS41IDEwLjMtMjQuNiAyMC44LTQuMSA4LjMtNC42IDE3LTMuNCAyNS44ek05OC43IDEwNi45djE3NS4zYzAgLjggMCAxLjcuMSAyLjUuMiAyLjUgMS43IDQuMSA0LjEgNC4yIDUuOS4xIDExLjguMSAxNy43IDAgMi41IDAgNC0xLjcgNC4xLTQuMS4xLS44LjEtMS43LjEtMi41di02MC43Yy45LjcgMS40IDEuMiAxLjkgMS42IDE1IDEyLjUgMzIuMiAxNi42IDUxLjEgMTIuOSAxNy4xLTMuNCAyOC45LTEzLjkgMzYuNy0yOS4yIDUuOC0xMS42IDguMy0yNC4xIDguNy0zNyAuNS0xNC4zLTEtMjguNC02LjgtNDEuNy03LjEtMTYuNC0xOC45LTI3LjMtMzYuNy0zMC45LTIuNy0uNi01LjUtLjgtOC4yLTEuMmgtN2MtMS4yLjItMi40LjMtMy42LjUtMTEuNyAxLjQtMjIuMyA1LjgtMzEuOCAxMi43LTIgMS40LTMuOSAzLTUuOSA0LjUtLjEtLjUtLjMtLjgtLjQtMS4yLS40LTIuMy0uNy00LjYtMS4xLTYuOS0uNi0zLjktMi41LTUuNS02LjQtNS42aC05LjdjLTUuOS0uMS02LjkgMS02LjkgNi44ek00OTMuNiAzMzljLTIuNy0uNy01LjEgMC03LjYgMS00My45IDE4LjQtODkuNSAzMC4yLTEzNi44IDM1LjgtMTQuNSAxLjctMjkuMSAyLjgtNDMuNyAzLjItMjYuNi43LTUzLjItLjgtNzkuNi00LjMtMTcuOC0yLjQtMzUuNS01LjctNTMtOS45LTM3LTguOS03Mi43LTIxLjctMTA2LjctMzguOC04LjgtNC40LTE3LjQtOS4zLTI2LjEtMTQtMy44LTIuMS02LjItMS41LTguMiAyLjF2MS43YzEuMiAxLjYgMi4yIDMuNCAzLjcgNC44IDM2IDMyLjIgNzYuNiA1Ni41IDEyMiA3Mi45IDIxLjkgNy45IDQ0LjQgMTMuNyA2Ny4zIDE3LjUgMTQgMi4zIDI4IDMuOCA0Mi4yIDQuNSAzIC4xIDYgLjIgOSAuNC43IDAgMS40LjIgMi4xLjNoMTcuN2MuNy0uMSAxLjQtLjMgMi4xLS4zIDE0LjktLjQgMjkuOC0xLjggNDQuNi00IDIxLjQtMy4yIDQyLjQtOC4xIDYyLjktMTQuNyAyOS42LTkuNiA1Ny43LTIyLjQgODMuNC00MC4xIDIuOC0xLjkgNS43LTMuOCA4LTYuMiA0LjMtNC40IDIuMy0xMC40LTMuMy0xMS45em01MC40LTI3LjdjLS44LTQuMi00LTUuOC03LjYtNy01LjctMS45LTExLjYtMi44LTE3LjYtMy4zLTExLS45LTIyLS40LTMyLjggMS42LTEyIDIuMi0yMy40IDYuMS0zMy41IDEzLjEtMS4yLjgtMi40IDEuOC0zLjEgMy0uNi45LS43IDIuMy0uNSAzLjQuMyAxLjMgMS43IDEuNiAzIDEuNS42IDAgMS4yIDAgMS44LS4xbDE5LjUtMi4xYzkuNi0uOSAxOS4yLTEuNSAyOC44LS44IDQuMS4zIDguMSAxLjIgMTIgMi4yIDQuMyAxLjEgNi4yIDQuNCA2LjQgOC43LjMgNi43LTEuMiAxMy4xLTIuOSAxOS41LTMuNSAxMi45LTguMyAyNS40LTEzLjMgMzcuOC0uMy44LS43IDEuNy0uOCAyLjUtLjQgMi41IDEgNCAzLjQgMy41IDEuNC0uMyAzLTEuMSA0LTIuMSAzLjctMy42IDcuNS03LjIgMTAuNi0xMS4yIDEwLjctMTMuOCAxNy0yOS42IDIwLjctNDYuNi43LTMgMS4yLTYuMSAxLjctOS4xLjItNC43LjItOS42LjItMTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NBbWV4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDUyOGMyNi41IDAgNDgtMjEuNSA0OC00OHYtMS4xSDUxNC4zbC0zMS45LTM1LjEtMzEuOSAzNS4xSDI0Ni44VjI2Ny4xSDE4MUwyNjIuNyA4Mi40aDc4LjZsMjguMSA2My4yVjgyLjRoOTcuMkw0ODMuNSAxMzBsMTctNDcuNkg1NzZWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAzMiAwIDUzLjUgMCA4MFY0MzJ6bTQ0MC40LTIxLjdMNDgyLjYgMzY0bDQyIDQ2LjNINTc2bC02OC03Mi4xIDY4LTcyLjFINTI1LjRsLTQyIDQ2LjctNDEuNS00Ni43SDM5MC41TDQ1OCAzMzguNmwtNjcuNCA3MS42VjM3Ny4xaC04M1YzNTQuOWg4MC45VjMyMi42SDMwNy42VjMwMC4yaDgzVjI2Ny4xaC0xMjJWNDEwLjNINDQwLjR6bTk2LjMtNzJMNTc2IDM4MC4yVjI5Ni45bC0zOS4zIDQxLjR6bS0zNi4zLTkybDM2LjktMTAwLjZWMjQ2LjNINTc2VjEwM0g1MTUuOGwtMzIuMiA4OS4zTDQ1MS43IDEwM0gzOTAuNVYyNDYuMUwzMjcuMyAxMDNIMjc2LjFMMjEzLjcgMjQ2LjNoNDNsMTEuOS0yOC43aDY1LjlsMTIgMjguN2g4Mi43VjE0Nkw0NjYgMjQ2LjNoMzQuNHpNMjgyIDE4NS40bDE5LjUtNDYuOSAxOS40IDQ2LjlIMjgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0FwcGxlUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMi4yIDIxOC40YzAgMTcuMi0xMC41IDI3LjEtMjkgMjcuMWgtMjQuM3YtNTQuMmgyNC40YzE4LjQgMCAyOC45IDkuOCAyOC45IDI3LjF6bTQ3LjUgNjIuNmMwIDguMyA3LjIgMTMuNyAxOC41IDEzLjcgMTQuNCAwIDI1LjItOS4xIDI1LjItMjEuOXYtNy43bC0yMy41IDEuNWMtMTMuMy45LTIwLjIgNS44LTIwLjIgMTQuNHpNNTc2IDc5djM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNzljMC0yNi41IDIxLjUtNDggNDgtNDhoNDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xMjcuOCAxOTcuMmM4LjQuNyAxNi44LTQuMiAyMi4xLTEwLjQgNS4yLTYuNCA4LjYtMTUgNy43LTIzLjctNy40LjMtMTYuNiA0LjktMjEuOSAxMS4zLTQuOCA1LjUtOC45IDE0LjQtNy45IDIyLjh6bTYwLjYgNzQuNWMtLjItLjItMTkuNi03LjYtMTkuOC0zMC0uMi0xOC43IDE1LjMtMjcuNyAxNi0yOC4yLTguOC0xMy0yMi40LTE0LjQtMjcuMS0xNC43LTEyLjItLjctMjIuNiA2LjktMjguNCA2LjktNS45IDAtMTQuNy02LjYtMjQuMy02LjQtMTIuNS4yLTI0LjIgNy4zLTMwLjUgMTguNi0xMy4xIDIyLjYtMy40IDU2IDkuMyA3NC40IDYuMiA5LjEgMTMuNyAxOS4xIDIzLjUgMTguNyA5LjMtLjQgMTMtNiAyNC4yLTYgMTEuMyAwIDE0LjUgNiAyNC4zIDUuOSAxMC4yLS4yIDE2LjUtOS4xIDIyLjgtMTguMiA2LjktMTAuNCA5LjgtMjAuNCAxMC0yMXptMTM1LjQtNTMuNGMwLTI2LjYtMTguNS00NC44LTQ0LjktNDQuOGgtNTEuMnYxMzYuNGgyMS4ydi00Ni42aDI5LjNjMjYuOCAwIDQ1LjYtMTguNCA0NS42LTQ1em05MCAyMy43YzAtMTkuNy0xNS44LTMyLjQtNDAtMzIuNC0yMi41IDAtMzkuMSAxMi45LTM5LjcgMzAuNWgxOS4xYzEuNi04LjQgOS40LTEzLjkgMjAtMTMuOSAxMyAwIDIwLjIgNiAyMC4yIDE3LjJ2Ny41bC0yNi40IDEuNmMtMjQuNiAxLjUtMzcuOSAxMS42LTM3LjkgMjkuMSAwIDE3LjcgMTMuNyAyOS40IDMzLjQgMjkuNCAxMy4zIDAgMjUuNi02LjcgMzEuMi0xNy40aC40VjMxMGgxOS42di02OHpNNTE2IDIxMC45aC0yMS41bC0yNC45IDgwLjZoLS40bC0yNC45LTgwLjZINDIybDM1LjkgOTkuMy0xLjkgNmMtMy4yIDEwLjItOC41IDE0LjItMTcuOSAxNC4yLTEuNyAwLTQuOS0uMi02LjItLjN2MTYuNGMxLjIuNCA2LjUuNSA4LjEuNSAyMC43IDAgMzAuNC03LjkgMzguOS0zMS44TDUxNiAyMTAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NEaW5lcnNDbHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzOS43IDc5LjljLTk2LjkgMC0xNzUuOCA3OC42LTE3NS44IDE3NS44IDAgOTYuOSA3OC45IDE3NS44IDE3NS44IDE3NS44IDk3LjIgMCAxNzUuOC03OC45IDE3NS44LTE3NS44IDAtOTcuMi03OC42LTE3NS44LTE3NS44LTE3NS44em0tMzkuOSAyNzkuNmMtNDEuNy0xNS45LTcxLjQtNTYuNC03MS40LTEwMy44czI5LjctODcuOSA3MS40LTEwNC4xdjIwNy45em03OS44LjNWMTUxLjZjNDEuNyAxNi4yIDcxLjQgNTYuNyA3MS40IDEwNC4xcy0yOS43IDg3LjktNzEuNCAxMDQuMXpNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMzI5LjcgNDQ4aC05MC4zYy0xMDYuMiAwLTE5My44LTg1LjUtMTkzLjgtMTkwLjJDNDUuNiAxNDMuMiAxMzMuMiA2NCAyMzkuNCA2NGg5MC4zYzEwNSAwIDIwMC43IDc5LjIgMjAwLjcgMTkzLjggMCAxMDQuNy05NS43IDE5MC4yLTIwMC43IDE5MC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0Rpc2NvdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyMC40IDE5Ni4xYzAtNy45LTUuNS0xMi4xLTE1LjYtMTIuMWgtNC45djI0LjloNC43YzEwLjMgMCAxNS44LTQuNCAxNS44LTEyLjh6TTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS00NC4xIDEzOC45YzIyLjYgMCA1Mi45LTQuMSA1Mi45IDI0LjQgMCAxMi42LTYuNiAyMC43LTE4LjcgMjMuMmwyNS44IDM0LjRoLTE5LjZsLTIyLjItMzIuOGgtMi4ydjMyLjhoLTE2em0tNTUuOS4xaDQ1LjN2MTRINDQ0djE4LjJoMjguM1YyMTdINDQ0djIyLjJoMjkuM1YyNTNINDI4em0tNjguNyAwbDIxLjkgNTUuMiAyMi4yLTU1LjJoMTcuNWwtMzUuNSA4NC4yaC04LjZsLTM1LTg0LjJ6bS01NS45LTNjMjQuNyAwIDQ0LjYgMjAgNDQuNiA0NC42IDAgMjQuNy0yMCA0NC42LTQ0LjYgNDQuNi0yNC43IDAtNDQuNi0yMC00NC42LTQ0LjYgMC0yNC43IDIwLTQ0LjYgNDQuNi00NC42em0tNDkuMyA2LjF2MTljLTIwLjEtMjAuMS00Ni44LTQuNy00Ni44IDE5IDAgMjUgMjcuNSAzOC41IDQ2LjggMTkuMnYxOWMtMjkuNyAxNC4zLTYzLjMtNS43LTYzLjMtMzguMiAwLTMxLjIgMzMuMS01MyA2My4zLTM4em0tOTcuMiA2Ni4zYzExLjQgMCAyMi40LTE1LjMtMy4zLTI0LjQtMTUtNS41LTIwLjItMTEuNC0yMC4yLTIyLjcgMC0yMy4yIDMwLjYtMzEuNCA0OS43LTE0LjNsLTguNCAxMC44Yy0xMC40LTExLjYtMjQuOS02LjItMjQuOSAyLjUgMCA0LjQgMi43IDYuOSAxMi4zIDEwLjMgMTguMiA2LjYgMjMuNiAxMi41IDIzLjYgMjUuNiAwIDI5LjUtMzguOCAzNy40LTU2LjYgMTEuM2wxMC4zLTkuOWMzLjcgNy4xIDkuOSAxMC44IDE3LjUgMTAuOHpNNTUuNCAyNTNIMzJ2LTgyaDIzLjRjMjYuMSAwIDQ0LjEgMTcgNDQuMSA0MS4xIDAgMTguNS0xMy4yIDQwLjktNDQuMSA0MC45em02Ny41IDBoLTE2di04MmgxNnpNNTQ0IDQzM2MwIDguMi02LjggMTUtMTUgMTVIMTI4YzE4OS42LTM1LjYgMzgyLjctMTM5LjIgNDE2LTE2MHpNNzQuMSAxOTEuNmMtNS4yLTQuOS0xMS42LTYuNi0yMS45LTYuNkg0OHY1NC4yaDQuMmMxMC4zIDAgMTctMiAyMS45LTYuNCA1LjctNS4yIDguOS0xMi44IDguOS0yMC43cy0zLjItMTUuNS04LjktMjAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NKY2IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMxLjUgMjQ0LjNWMjEyYzQxLjIgMCAzOC41LjIgMzguNS4yIDcuMyAxLjMgMTMuMyA3LjMgMTMuMyAxNiAwIDguOC02IDE0LjUtMTMuMyAxNS44LTEuMi40LTMuMy4zLTM4LjUuM3ptNDIuOCAyMC4yYy0yLjgtLjctMy4zLS41LTQyLjgtLjV2MzVjMzkuNiAwIDQwIC4yIDQyLjgtLjUgNy41LTEuNSAxMy41LTggMTMuNS0xNyAwLTguNy02LTE1LjUtMTMuNS0xN3pNNTc2IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xODIgMTkyLjNoLTU3YzAgNjcuMSAxMC43IDEwOS43LTM1LjggMTA5LjctMTkuNSAwLTM4LjgtNS43LTU3LjItMTQuOHYyOGMzMCA4LjMgNjggOC4zIDY4IDguMyA5Ny45IDAgODItNDcuNyA4Mi0xMzEuMnptMTc4LjUgNC41Yy02My40LTE2LTE2NS0xNC45LTE2NSA1OS4zIDAgNzcuMSAxMDguMiA3My42IDE2NSA1OS4yVjI4N0MzMTIuOSAzMTEuNyAyNTMgMzA5IDI1MyAyNTZzNTkuOC01NS42IDEwNy41LTMxLjJ2LTI4ek01NDQgMjg2LjVjMC0xOC41LTE2LjUtMzAuNS0zOC0zMnYtLjhjMTkuNS0yLjcgMzAuMy0xNS41IDMwLjMtMzAuMiAwLTE5LTE1LjctMzAtMzctMzEgMCAwIDYuMy0uMy0xMjAuMy0uM3YxMjcuNWgxMjIuN2MyNC4zLjEgNDIuMy0xMi45IDQyLjMtMzMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NNYXN0ZXJjYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Mi45IDQxMC4zYzAgNi44LTQuNiAxMS43LTExLjIgMTEuNy02LjggMC0xMS4yLTUuMi0xMS4yLTExLjcgMC02LjUgNC40LTExLjcgMTEuMi0xMS43IDYuNiAwIDExLjIgNS4yIDExLjIgMTEuN3ptLTMxMC44LTExLjdjLTcuMSAwLTExLjIgNS4yLTExLjIgMTEuNyAwIDYuNSA0LjEgMTEuNyAxMS4yIDExLjcgNi41IDAgMTAuOS00LjkgMTAuOS0xMS43LS4xLTYuNS00LjQtMTEuNy0xMC45LTExLjd6bTExNy41LS4zYy01LjQgMC04LjcgMy41LTkuNSA4LjdoMTkuMWMtLjktNS43LTQuNC04LjctOS42LTguN3ptMTA3LjguM2MtNi44IDAtMTAuOSA1LjItMTAuOSAxMS43IDAgNi41IDQuMSAxMS43IDEwLjkgMTEuNyA2LjggMCAxMS4yLTQuOSAxMS4yLTExLjcgMC02LjUtNC40LTExLjctMTEuMi0xMS43em0xMDUuOSAyNi4xYzAgLjMuMy41LjMgMS4xIDAgLjMtLjMuNS0uMyAxLjEtLjMuMy0uMy41LS41LjgtLjMuMy0uNS41LTEuMS41LS4zLjMtLjUuMy0xLjEuMy0uMyAwLS41IDAtMS4xLS4zLS4zIDAtLjUtLjMtLjgtLjUtLjMtLjMtLjUtLjUtLjUtLjgtLjMtLjUtLjMtLjgtLjMtMS4xIDAtLjUgMC0uOC4zLTEuMSAwLS41LjMtLjguNS0xLjEuMy0uMy41LS4zLjgtLjUuNS0uMy44LS4zIDEuMS0uMy41IDAgLjggMCAxLjEuMy41LjMuOC4zIDEuMS41cy4yLjYuNSAxLjF6bS0yLjIgMS40Yy41IDAgLjUtLjMuOC0uMy4zLS4zLjMtLjUuMy0uOCAwLS4zIDAtLjUtLjMtLjgtLjMgMC0uNS0uMy0xLjEtLjNoLTEuNnYzLjVoLjhWNDI2aC4zbDEuMSAxLjRoLjhsLTEuMS0xLjN6TTU3NiA4MXYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgxYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNNjQgMjIwLjZjMCA3Ni41IDYyLjEgMTM4LjUgMTM4LjUgMTM4LjUgMjcuMiAwIDUzLjktOC4yIDc2LjUtMjMuMS03Mi45LTU5LjMtNzIuNC0xNzEuMiAwLTIzMC41LTIyLjYtMTUtNDkuMy0yMy4xLTc2LjUtMjMuMS03Ni40LS4xLTEzOC41IDYyLTEzOC41IDEzOC4yem0yMjQgMTA4LjhjNzAuNS01NSA3MC4yLTE2Mi4yIDAtMjE3LjUtNzAuMiA1NS4zLTcwLjUgMTYyLjYgMCAyMTcuNXptLTE0Mi4zIDc2LjNjMC04LjctNS43LTE0LjQtMTQuNy0xNC43LTQuNiAwLTkuNSAxLjQtMTIuOCA2LjUtMi40LTQuMS02LjUtNi41LTEyLjItNi41LTMuOCAwLTcuNiAxLjQtMTAuNiA1LjRWMzkyaC04LjJ2MzYuN2g4LjJjMC0xOC45LTIuNS0zMC4yIDktMzAuMiAxMC4yIDAgOC4yIDEwLjIgOC4yIDMwLjJoNy45YzAtMTguMy0yLjUtMzAuMiA5LTMwLjIgMTAuMiAwIDguMiAxMCA4LjIgMzAuMmg4LjJ2LTIzem00NC45LTEzLjdoLTcuOXY0LjRjLTIuNy0zLjMtNi41LTUuNC0xMS43LTUuNC0xMC4zIDAtMTguMiA4LjItMTguMiAxOS4zIDAgMTEuMiA3LjkgMTkuMyAxOC4yIDE5LjMgNS4yIDAgOS0xLjkgMTEuNy01LjR2NC42aDcuOVYzOTJ6bTQwLjUgMjUuNmMwLTE1LTIyLjktOC4yLTIyLjktMTUuMiAwLTUuNyAxMS45LTQuOCAxOC41LTEuMWwzLjMtNi41Yy05LjQtNi4xLTMwLjItNi0zMC4yIDguMiAwIDE0LjMgMjIuOSA4LjMgMjIuOSAxNSAwIDYuMy0xMy41IDUuOC0yMC43LjhsLTMuNSA2LjNjMTEuMiA3LjYgMzIuNiA2IDMyLjYtNy41em0zNS40IDkuM2wtMi4yLTYuOGMtMy44IDIuMS0xMi4yIDQuNC0xMi4yLTQuMXYtMTYuNmgxMy4xVjM5MmgtMTMuMXYtMTEuMmgtOC4yVjM5MmgtNy42djcuM2g3LjZWNDE2YzAgMTcuNiAxNy4zIDE0LjQgMjIuNiAxMC45em0xMy4zLTEzLjRoMjcuNWMwLTE2LjItNy40LTIyLjYtMTcuNC0yMi42LTEwLjYgMC0xOC4yIDcuOS0xOC4yIDE5LjMgMCAyMC41IDIyLjYgMjMuOSAzMy44IDE0LjJsLTMuOC02Yy03LjggNi40LTE5LjYgNS44LTIxLjktNC45em01OS4xLTIxLjVjLTQuNi0yLTExLjYtMS44LTE1LjIgNC40VjM5MmgtOC4ydjM2LjdoOC4yVjQwOGMwLTExLjYgOS41LTEwLjEgMTIuOC04LjRsMi40LTcuNnptMTAuNiAxOC4zYzAtMTEuNCAxMS42LTE1LjEgMjAuNy04LjRsMy44LTYuNWMtMTEuNi05LjEtMzIuNy00LjEtMzIuNyAxNSAwIDE5LjggMjIuNCAyMy44IDMyLjcgMTVsLTMuOC02LjVjLTkuMiA2LjUtMjAuNyAyLjYtMjAuNy04LjZ6bTY2LjctMTguM0g0MDh2NC40Yy04LjMtMTEtMjkuOS00LjgtMjkuOSAxMy45IDAgMTkuMiAyMi40IDI0LjcgMjkuOSAxMy45djQuNmg4LjJWMzkyem0zMy43IDBjLTIuNC0xLjItMTEtMi45LTE1LjIgNC40VjM5MmgtNy45djM2LjdoNy45VjQwOGMwLTExIDktMTAuMyAxMi44LTguNGwyLjQtNy42em00MC4zLTE0LjloLTcuOXYxOS4zYy04LjItMTAuOS0yOS45LTUuMS0yOS45IDEzLjkgMCAxOS40IDIyLjUgMjQuNiAyOS45IDEzLjl2NC42aDcuOXYtNTEuN3ptNy42LTc1LjF2NC42aC44VjMwMmgxLjl2LS44aC00LjZ2LjhoMS45em02LjYgMTIzLjhjMC0uNSAwLTEuMS0uMy0xLjYtLjMtLjMtLjUtLjgtLjgtMS4xLS4zLS4zLS44LS41LTEuMS0uOC0uNSAwLTEuMS0uMy0xLjYtLjMtLjMgMC0uOC4zLTEuNC4zLS41LjMtLjguNS0xLjEuOC0uNS4zLS44LjgtLjggMS4xLS4zLjUtLjMgMS4xLS4zIDEuNiAwIC4zIDAgLjguMyAxLjQgMCAuMy4zLjguOCAxLjEuMy4zLjUuNSAxLjEuOC41LjMgMS4xLjMgMS40LjMuNSAwIDEuMSAwIDEuNi0uMy4zLS4zLjgtLjUgMS4xLS44LjMtLjMuNS0uOC44LTEuMS4zLS42LjMtMS4xLjMtMS40em0zLjItMTI0LjdoLTEuNGwtMS42IDMuNS0xLjYtMy41aC0xLjR2NS40aC44di00LjFsMS42IDMuNWgxLjFsMS40LTMuNXY0LjFoMS4xdi01LjR6bTQuNC04MC41YzAtNzYuMi02Mi4xLTEzOC4zLTEzOC41LTEzOC4zLTI3LjIgMC01My45IDguMi03Ni41IDIzLjEgNzIuMSA1OS4zIDczLjIgMTcxLjUgMCAyMzAuNSAyMi42IDE1IDQ5LjUgMjMuMSA3Ni41IDIzLjEgNzYuNC4xIDEzOC41LTYxLjkgMTM4LjUtMTM4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjUGF5cGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4zIDI1OC4yYzAgMTIuMi05LjcgMjEuNS0yMiAyMS41LTkuMiAwLTE2LTUuMi0xNi0xNSAwLTEyLjIgOS41LTIyIDIxLjctMjIgOS4zIDAgMTYuMyA1LjcgMTYuMyAxNS41ek04MC41IDIwOS43aC00LjdjLTEuNSAwLTMgMS0zLjIgMi43bC00LjMgMjYuNyA4LjItLjNjMTEgMCAxOS41LTEuNSAyMS41LTE0LjIgMi4zLTEzLjQtNi4yLTE0LjktMTcuNS0xNC45em0yODQgMEgzNjBjLTEuOCAwLTMgMS0zLjIgMi43bC00LjIgMjYuNyA4LS4zYzEzIDAgMjItMyAyMi0xOC0uMS0xMC42LTkuNi0xMS4xLTE4LjEtMTEuMXpNNTc2IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xMjguMyAyMTUuNGMwLTIxLTE2LjItMjgtMzQuNy0yOGgtNDBjLTIuNSAwLTUgMi01LjIgNC43TDMyIDI5NC4yYy0uMyAyIDEuMiA0IDMuMiA0aDE5YzIuNyAwIDUuMi0yLjkgNS41LTUuN2w0LjUtMjYuNmMxLTcuMiAxMy4yLTQuNyAxOC00LjcgMjguNiAwIDQ2LjEtMTcgNDYuMS00NS44em04NC4yIDguOGgtMTljLTMuOCAwLTQgNS41LTQuMiA4LjItNS44LTguNS0xNC4yLTEwLTIzLjctMTAtMjQuNSAwLTQzLjIgMjEuNS00My4yIDQ1LjIgMCAxOS41IDEyLjIgMzIuMiAzMS43IDMyLjIgOSAwIDIwLjItNC45IDI2LjUtMTEuOS0uNSAxLjUtMSA0LjctMSA2LjIgMCAyLjMgMSA0IDMuMiA0SDIwMGMyLjcgMCA1LTIuOSA1LjUtNS43bDEwLjItNjQuM2MuMy0xLjktMS4yLTMuOS0zLjItMy45em00MC41IDk3LjlsNjMuNy05Mi42Yy41LS41LjUtMSAuNS0xLjcgMC0xLjctMS41LTMuNS0zLjItMy41aC0xOS4yYy0xLjcgMC0zLjUgMS00LjUgMi41bC0yNi41IDM5LTExLTM3LjVjLS44LTIuMi0zLTQtNS41LTRoLTE4LjdjLTEuNyAwLTMuMiAxLjgtMy4yIDMuNSAwIDEuMiAxOS41IDU2LjggMjEuMiA2Mi4xLTIuNyAzLjgtMjAuNSAyOC42LTIwLjUgMzEuNiAwIDEuOCAxLjUgMy4yIDMuMiAzLjJoMTkuMmMxLjgtLjEgMy41LTEuMSA0LjUtMi42em0xNTkuMy0xMDYuN2MwLTIxLTE2LjItMjgtMzQuNy0yOGgtMzkuN2MtMi43IDAtNS4yIDItNS41IDQuN2wtMTYuMiAxMDJjLS4yIDIgMS4zIDQgMy4yIDRoMjAuNWMyIDAgMy41LTEuNSA0LTMuMmw0LjUtMjljMS03LjIgMTMuMi00LjcgMTgtNC43IDI4LjQgMCA0NS45LTE3IDQ1LjktNDUuOHptODQuMiA4LjhoLTE5Yy0zLjggMC00IDUuNS00LjMgOC4yLTUuNS04LjUtMTQtMTAtMjMuNy0xMC0yNC41IDAtNDMuMiAyMS41LTQzLjIgNDUuMiAwIDE5LjUgMTIuMiAzMi4yIDMxLjcgMzIuMiA5LjMgMCAyMC41LTQuOSAyNi41LTExLjktLjMgMS41LTEgNC43LTEgNi4yIDAgMi4zIDEgNCAzLjIgNEg0ODRjMi43IDAgNS0yLjkgNS41LTUuN2wxMC4yLTY0LjNjLjMtMS45LTEuMi0zLjktMy4yLTMuOXptNDcuNS0zMy4zYzAtMi0xLjUtMy41LTMuMi0zLjVoLTE4LjVjLTEuNSAwLTMgMS4yLTMuMiAyLjdsLTE2LjIgMTA0LS4zLjVjMCAxLjggMS41IDMuNSAzLjUgMy41aDE2LjVjMi41IDAgNS0yLjkgNS4yLTUuN0w1NDQgMTkxLjJ2LS4zem0tOTAgNTEuOGMtMTIuMiAwLTIxLjcgOS43LTIxLjcgMjIgMCA5LjcgNyAxNSAxNi4yIDE1IDEyIDAgMjEuNy05LjIgMjEuNy0yMS41LjEtOS44LTYuOS0xNS41LTE2LjItMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NTdHJpcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDkyLjQgMjIwLjhjLTguOSAwLTE4LjcgNi43LTE4LjcgMjIuN2gzNi43YzAtMTYtOS4zLTIyLjctMTgtMjIuN3pNMzc1IDIyMy40Yy04LjIgMC0xMy4zIDIuOS0xNyA3bC4yIDUyLjhjMy41IDMuNyA4LjUgNi43IDE2LjggNi43IDEzLjEgMCAyMS45LTE0LjMgMjEuOS0zMy40IDAtMTguNi05LTMzLjItMjEuOS0zMy4xek01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xMjIuMiAyODEuMWMwIDI1LjYtMjAuMyA0MC4xLTQ5LjkgNDAuMy0xMi4yIDAtMjUuNi0yLjQtMzguOC04LjF2LTMzLjljMTIgNi40IDI3LjEgMTEuMyAzOC45IDExLjMgNy45IDAgMTMuNi0yLjEgMTMuNi04LjcgMC0xNy01NC0xMC42LTU0LTQ5LjkgMC0yNS4yIDE5LjItNDAuMiA0OC00MC4yIDExLjggMCAyMy41IDEuOCAzNS4zIDYuNXYzMy40Yy0xMC44LTUuOC0yNC41LTkuMS0zNS4zLTkuMS03LjUgMC0xMi4xIDIuMi0xMi4xIDcuNyAwIDE2IDU0LjMgOC40IDU0LjMgNTAuN3ptNjguOC01Ni42aC0yN1YyNzVjMCAyMC45IDIyLjUgMTQuNCAyNyAxMi42djI4LjljLTQuNyAyLjYtMTMuMyA0LjctMjQuOSA0LjctMjEuMSAwLTM2LjktMTUuNS0zNi45LTM2LjVsLjItMTEzLjkgMzQuNy03LjR2MzAuOEgxOTF6bTc0IDIuNGMtNC41LTEuNS0xOC43LTMuNi0yNy4xIDcuNHY4NC40aC0zNS41VjE5NC4yaDMwLjdsMi4yIDEwLjVjOC4zLTE1LjMgMjQuOS0xMi4yIDI5LjYtMTAuNWguMXptNDQuMSA5MS44aC0zNS43VjE5NC4yaDM1Ljd6bTAtMTQyLjlsLTM1LjcgNy42di0yOC45bDM1LjctNy42em03NC4xIDE0NS41Yy0xMi40IDAtMjAtNS4zLTI1LjEtOWwtLjEgNDAuMi0zNS41IDcuNVYxOTQuMmgzMS4zbDEuOCA4LjhjNC45LTQuNSAxMy45LTExLjEgMjcuOC0xMS4xIDI0LjkgMCA0OC40IDIyLjUgNDguNCA2My44IDAgNDUuMS0yMy4yIDY1LjUtNDguNiA2NS42em0xNjAuNC01MS41aC02OS41YzEuNiAxNi42IDEzLjggMjEuNSAyNy42IDIxLjUgMTQuMSAwIDI1LjItMyAzNC45LTcuOVYzMTJjLTkuNyA1LjMtMjIuNCA5LjItMzkuNCA5LjItMzQuNiAwLTU4LjgtMjEuNy01OC44LTY0LjUgMC0zNi4yIDIwLjUtNjQuOSA1NC4zLTY0LjkgMzMuNyAwIDUxLjMgMjguNyA1MS4zIDY1LjEgMCAzLjUtLjMgMTAuOS0uNCAxMi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY1Zpc2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcwLjEgMjMxLjNzNy42IDM3LjIgOS4zIDQ1SDQ0NmMzLjMtOC45IDE2LTQzLjUgMTYtNDMuNS0uMi4zIDMuMy05LjEgNS4zLTE0LjlsMi44IDEzLjR6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTUyLjUgMzMxLjJMMjE1LjcgMTc2aC00Mi41bC0zOS4zIDEwNi00LjMtMjEuNS0xNC03MS40Yy0yLjMtOS45LTkuNC0xMi43LTE4LjItMTMuMUgzMi43bC0uNyAzLjFjMTUuOCA0IDI5LjkgOS44IDQyLjIgMTcuMWwzNS44IDEzNWg0Mi41em05NC40LjJMMjcyLjEgMTc2aC00MC4ybC0yNS4xIDE1NS40aDQwLjF6bTEzOS45LTUwLjhjLjItMTcuNy0xMC42LTMxLjItMzMuNy00Mi4zLTE0LjEtNy4xLTIyLjctMTEuOS0yMi43LTE5LjIuMi02LjYgNy4zLTEzLjQgMjMuMS0xMy40IDEzLjEtLjMgMjIuNyAyLjggMjkuOSA1LjlsMy42IDEuNyA1LjUtMzMuNmMtNy45LTMuMS0yMC41LTYuNi0zNi02LjYtMzkuNyAwLTY3LjYgMjEuMi02Ny44IDUxLjQtLjMgMjIuMyAyMCAzNC43IDM1LjIgNDIuMiAxNS41IDcuNiAyMC44IDEyLjYgMjAuOCAxOS4zLS4yIDEwLjQtMTIuNiAxNS4yLTI0LjEgMTUuMi0xNiAwLTI0LjYtMi41LTM3LjctOC4zbC01LjMtMi41LTUuNiAzNC45YzkuNCA0LjMgMjYuOCA4LjEgNDQuOCA4LjMgNDIuMi4xIDY5LjctMjAuOCA3MC01M3pNNTI4IDMzMS40TDQ5NS42IDE3NmgtMzEuMWMtOS42IDAtMTYuOSAyLjgtMjEgMTIuOWwtNTkuNyAxNDIuNUg0MjZzNi45LTE5LjIgOC40LTIzLjNINDg2YzEuMiA1LjUgNC44IDIzLjMgNC44IDIzLjNINTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZW50ZXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyOS4yIDI2OC42Yy0zLjggMzUuMi0zNS40IDYwLjYtNzAuNiA1Ni44LTM1LjItMy44LTYwLjYtMzUuNC01Ni44LTcwLjYgMy44LTM1LjIgMzUuNC02MC42IDcwLjYtNTYuOCAzNS4xIDMuOCA2MC42IDM1LjQgNTYuOCA3MC42em0tODUuOCAyMzUuMUM5Ni43IDQ5Ni04LjIgMzY1LjUgMTAuMSAyMjQuM2MxMS4yLTg2LjYgNjUuOC0xNTYuOSAxMzkuMS0xOTIgMTYxLTc3LjEgMzQ5LjcgMzcuNCAzNTQuNyAyMTYuNiA0LjEgMTQ3LTExOC40IDI2Mi4yLTI2MC41IDI1NC44em0xNzkuOS0xODBjMjcuOS0xMTgtMTYwLjUtMjA1LjktMjM3LjItMjM0LjItNTcuNSA1Ni4zLTY5LjEgMTg4LjYtMzMuOCAzNDQuNCA2OC44IDE1LjggMTY5LjEtMjYuNCAyNzEtMTEwLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNlbnRvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODkuNiA5Ny41bDMxLjYgMzEuNy03Ni4zIDc2LjVWOTcuNXptLTE2Mi40IDMxLjdsNzYuMyA3Ni41Vjk3LjVoLTQ0Ljd6bTQxLjUtNDEuNmg0NC43djEyNy45bDEwLjggMTAuOCAxMC44LTEwLjhWODcuNmg0NC43TDIyNC4yIDMyem0yNi4yIDE2OC4xbC0xMC44LTEwLjhINTUuNXYtNDQuOEwwIDI1NS43bDU1LjUgNTUuNnYtNDQuOGgxMjguNmwxMC44LTEwLjh6bTc5LjMtMjAuN2gxMDcuOXYtNDQuOGwtMzEuNi0zMS43em0xNzMuMyAyMC43TDM5MiAyMDAuMXY0NC44SDI2NC4zbC0xMC44IDEwLjggMTAuOCAxMC44SDM5MnY0NC44bDU1LjUtNTUuNnpNNjUuNCAxNzYuMmwzMi41LTMxLjcgOTAuMyA5MC41aDE1LjN2LTE1LjNsLTkwLjMtOTAuNSAzMS42LTMxLjdINjUuNHptMzE2LjctNzguN2gtNzguNWwzMS42IDMxLjctOTAuMyA5MC41VjIzNWgxNS4zbDkwLjMtOTAuNSAzMS42IDMxLjd6TTIwMy41IDQxMy45VjMwNS44bC03Ni4zIDc2LjUgMzEuNiAzMS43aDQ0Ljd6TTY1LjQgMjM1aDEwOC44bC03Ni4zLTc2LjUtMzIuNSAzMS43em0zMTYuNyAxMDAuMmwtMzEuNiAzMS43LTkwLjMtOTAuNWgtMTUuM3YxNS4zbDkwLjMgOTAuNS0zMS42IDMxLjdoNzguNXptMC01OC44SDI3NC4ybDc2LjMgNzYuNSAzMS42LTMxLjd6bS02MC45IDEwNS44bC03Ni4zLTc2LjV2MTA4LjFoNDQuN3pNOTcuOSAzNTIuOWw3Ni4zLTc2LjVINjUuNHY0NC44em0xODEuOCA3MC45SDIzNVYyOTUuOWwtMTAuOC0xMC44LTEwLjggMTAuOHYxMjcuOWgtNDQuN2w1NS41IDU1LjZ6bS0xNjYuNS00MS42bDkwLjMtOTAuNXYtMTUuM2gtMTUuM2wtOTAuMyA5MC41LTMyLjUtMzEuN3Y3OC43aDc5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNocm9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NkMwIDIwOS40IDEyLjQ3IDE2NS42IDM0LjI3IDEyNy4xTDE0NC4xIDMxOC4zQzE2NiAzNTcuNSAyMDcuOSAzODQgMjU2IDM4NEMyNzAuMyAzODQgMjgzLjEgMzgxLjcgMjk2LjggMzc3LjRMMjIwLjUgNTA5LjZDOTUuOSA0OTIuMyAwIDM4NS4zIDAgMjU2ek0zNjUuMSAzMjEuNkMzNzcuNCAzMDIuNCAzODQgMjc5LjEgMzg0IDI1NkMzODQgMjE3LjggMzY3LjIgMTgzLjUgMzQwLjcgMTYwSDQ5My40QzUwNS40IDE4OS42IDUxMiAyMjIuMSA1MTIgMjU2QzUxMiAzOTcuNCAzOTcuNCA1MTEuMSAyNTYgNTEyTDM2NS4xIDMyMS42ek00NzcuOCAxMjhIMjU2QzE5My4xIDEyOCAxNDIuMyAxNzIuMSAxMzAuNSAyMzAuN0w1NC4xOSA5OC40N0MxMDEgMzguNTMgMTc0IDAgMjU2IDBDMzUwLjggMCA0MzMuNSA1MS40OCA0NzcuOCAxMjhWMTI4ek0xNjggMjU2QzE2OCAyMDcuNCAyMDcuNCAxNjggMjU2IDE2OEMzMDQuNiAxNjggMzQ0IDIwNy40IDM0NCAyNTZDMzQ0IDMwNC42IDMwNC42IDM0NCAyNTYgMzQ0QzIwNy40IDM0NCAxNjggMzA0LjYgMTY4IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hyb21lY2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDcuOCw2NEg2NGMtMjMuNiwwLTQyLjcsMTkuMS00Mi43LDQyLjd2NjMuOUg2NHYtNjMuOWgzODMuOHYyOTguNkgyOTguNlY0NDhINDQ4YzIzLjYsMCw0Mi43LTE5LjEsNDIuNy00Mi43VjEwNi43IEM0OTAuNyw4My4xLDQ3MS40LDY0LDQ0Ny44LDY0eiBNMjEuMywzODMuNkwyMS4zLDM4My42bDAsNjMuOWg2My45Qzg1LjIsNDEyLjIsNTYuNiwzODMuNiwyMS4zLDM4My42TDIxLjMsMzgzLjZ6IE0yMS4zLDI5OC42VjM0MSBjNTguOSwwLDEwNi42LDQ4LjEsMTA2LjYsMTA3aDQyLjdDMTcwLjcsMzY1LjYsMTAzLjcsMjk4LjcsMjEuMywyOTguNnogTTIxMy40LDQ0OGg0Mi43Yy0wLjUtMTI5LjUtMTA1LjMtMjM0LjMtMjM0LjgtMjM0LjZsMCw0Mi40IEMxMjcuMywyNTUuNiwyMTMuMywzNDIsMjEzLjQsNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZGZsYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy45MDYsMzE5LjkxM2wtMjMwLjgtMi45MjhhNC41OCw0LjU4LDAsMCwxLTMuNjMyLTEuOTI2LDQuNjQ4LDQuNjQ4LDAsMCwxLS40OTQtNC4xNDcsNi4xNDMsNi4xNDMsMCwwLDEsNS4zNjEtNC4wNzZMNDExLjI4MSwzMDMuOWMyNy42MzEtMS4yNiw1Ny41NDYtMjMuNTc0LDY4LjAyMi01MC43ODRsMTMuMjg2LTM0LjU0MmE3Ljk0NCw3Ljk0NCwwLDAsMCwuNTI0LTIuOTM2LDcuNzM1LDcuNzM1LDAsMCwwLS4xNjQtMS42MzFBMTUxLjkxLDE1MS45MSwwLDAsMCwyMDEuMjU3LDE5OC40LDY4LjEyLDY4LjEyLDAsMCwwLDk0LjIsMjY5LjU5QzQxLjkyNCwyNzEuMTA2LDAsMzEzLjcyOCwwLDM2Ni4xMmE5Ni4wNTQsOTYuMDU0LDAsMCwwLDEuMDI5LDEzLjk1OCw0LjUwOCw0LjUwOCwwLDAsMCw0LjQ0NSwzLjg3MWw0MjYuMS4wNTFjLjA0MywwLC4wOC0uMDE5LjEyMi0uMDJhNS42MDYsNS42MDYsMCwwLDAsNS4yNzEtNGwzLjI3My0xMS4yNjVjMy45LTEzLjQsMi40NDgtMjUuOC00LjEtMzQuOUM0MzAuMTI0LDMyNS40MjMsNDIwLjA5LDMyMC40ODcsNDA3LjkwNiwzMTkuOTEzWk01MTMuODU2LDIyMS4xYy0yLjE0MSwwLTQuMjcxLjA2Mi02LjM5MS4xNjRhMy43NzEsMy43NzEsMCwwLDAtMy4zMjQsMi42NTNsLTkuMDc3LDMxLjE5M2MtMy45LDEzLjQtMi40NDksMjUuNzg2LDQuMSwzNC44OSw2LjAyLDguNCwxNi4wNTQsMTMuMzIzLDI4LjIzOCwxMy45bDQ5LjIsMi45MzlhNC40OTEsNC40OTEsMCwwLDEsMy41MSwxLjg5NCw0LjY0LDQuNjQsMCwwLDEsLjUxNCw0LjE2OSw2LjE1Myw2LjE1MywwLDAsMS01LjM1MSw0LjA3NWwtNTEuMTI1LDIuOTM5Yy0yNy43NTQsMS4yNy01Ny42NjksMjMuNTc0LTY4LjE0NSw1MC43ODRsLTMuNjk1LDkuNjA2YTIuNzE2LDIuNzE2LDAsMCwwLDIuNDI3LDMuNjhjLjA0NiwwLC4wODguMDE3LjEzNi4wMTdoMTc1LjkxYTQuNjksNC42OSwwLDAsMCw0LjUzOS0zLjM3LDEyNC44MDcsMTI0LjgwNywwLDAsMCw0LjY4Mi0zNEM2NDAsMjc3LjMsNTgzLjUyNCwyMjEuMSw1MTMuODU2LDIyMS4xWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZHNjYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOC4xIDE1NGwtOS40IDcuNmMtMjIuNS0xOS4zLTUxLjUtMzMuNi04My4zLTMzLjZDMTUzLjggMTI4IDk2IDE4OC44IDk2IDI2MC4zYzAgNi42LjQgMTMuMSAxLjQgMTkuNC0yLTU2IDQxLjgtOTcuNCA5Mi42LTk3LjQgMjQuMiAwIDQ2LjIgOS40IDYyLjYgMjQuN2wtMjUuMiAyMC40Yy04LjMtLjktMTYuOCAxLjgtMjMuMSA4LjEtMTEuMSAxMS0xMS4xIDI4LjkgMCA0MCAxMS4xIDExIDI4LjkgMTEgNDAgMCA2LjMtNi4zIDktMTQuOSA4LjEtMjMuMWw3NS4yLTg4LjhjNi4zLTYuNS0zLjMtMTUuOS05LjUtOS42em0tODMuOCAxMTEuNWMtNS42IDUuNS0xNC42IDUuNS0yMC4yIDAtNS42LTUuNi01LjYtMTQuNiAwLTIwLjJzMTQuNi01LjYgMjAuMiAwIDUuNiAxNC43IDAgMjAuMnpNMjI0IDMyQzEwMC41IDMyIDAgMTMyLjUgMCAyNTZzMTAwLjUgMjI0IDIyNCAyMjQgMjI0LTEwMC41IDIyNC0yMjRTMzQ3LjUgMzIgMjI0IDMyem0wIDM4NGMtODguMiAwLTE2MC03MS44LTE2MC0xNjBTMTM1LjggOTYgMjI0IDk2czE2MCA3MS44IDE2MCAxNjAtNzEuOCAxNjAtMTYwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRzbWl0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjI3LjZ2NTYuOUwyODQuNCA1MTJIMjI3LjZMMCAyODQuNFYyMjcuNkwyMjcuNiAwaDU2LjlMNTEyIDIyNy42em0tMjU2IDE2MmExMzMuNiAxMzMuNiAwIDEgMCAwLTI2Ny4xIDEzMy42IDEzMy42IDAgMSAwIDAgMjY3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkdmVyc2lmeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDguNiAzMDRjOC4yIDY4LjUgNjcuNCAxMTUuNSAxNDYgMTExLjMgNTEuMiA0My4zIDEzNi44IDQ1LjggMTg2LjQtNS42IDY5LjIgMS4xIDExOC41LTQ0LjYgMTMxLjUtOTkuNSAxNC44LTYyLjUtMTguMi0xMzIuNS05Mi4xLTE1NS4xLTMzLTg4LjEtMTMxLjQtMTAxLjUtMTg2LjUtODUtNTcuMyAxNy4zLTg0LjMgNTMuMi05OS4zIDEwOS43LTcuOCAyLjctMjYuNSA4LjktNDUgMjQuMSAxMS43IDAgMTUuMiA4LjkgMTUuMiAxOS41djIwLjRjMCAxMC43LTguNyAxOS41LTE5LjUgMTkuNWgtMjAuMmMtMTAuNyAwLTE5LjUtNi0xOS41LTE2LjdWMjQwSDk4LjhDOTUgMjQwIDg4IDI0NC4zIDg4IDI1MS45djQwLjRjMCA2LjQgNS4zIDExLjggMTEuNyAxMS44aDQ4Ljl6bTIyNy40IDhjLTEwLjcgNDYuMyAyMS43IDcyLjQgNTUuMyA4Ni44QzMyNC4xIDQzMi42IDI1OS43IDM0OCAyOTYgMjg4Yy0zMy4yIDIxLjYtMzMuNyA3MS4yLTI5LjIgOTIuOS0xNy45LTEyLjQtNTMuOC0zMi40LTU3LjQtNzkuOC0zLTM5LjkgMjEuNS03NS43IDU3LTkzLjlDMjk3IDE5MS40IDM2OS45IDE5OC43IDQwMCAyNDhjLTE0LjEtNDgtNTMuOC03MC4xLTEwMS44LTc0LjggMzAuOS0zMC43IDY0LjQtNTAuMyAxMTQuMi00My43IDY5LjggOS4zIDEzMy4yIDgyLjggNjcuNyAxNTAuNSAzNS0xNi4zIDQ4LjctNTQuNCA0Ny41LTc2LjlsMTAuNSAxOS42YzExLjggMjIgMTUuMiA0Ny42IDkuNCA3Mi05LjIgMzktNDAuNiA2OC44LTc5LjcgNzYuNS0zMi4xIDYuMy04My4xLTUuMS05MS44LTU5LjJ6TTEyOCAyMDhIODguMmMtOC45IDAtMTYuMi03LjMtMTYuMi0xNi4ydi0zOS42YzAtOC45IDcuMy0xNi4yIDE2LjItMTYuMkgxMjhjOC45IDAgMTYuMiA3LjMgMTYuMiAxNi4ydjM5LjZjMCA4LjktNy4zIDE2LjItMTYuMiAxNi4yek0xMC4xIDE2OEM0LjUgMTY4IDAgMTYzLjUgMCAxNTcuOXYtMjcuOGMwLTUuNiA0LjUtMTAuMSAxMC4xLTEwLjFoMjcuN2M1LjUgMCAxMC4xIDQuNSAxMC4xIDEwLjF2MjcuOGMwIDUuNi00LjUgMTAuMS0xMC4xIDEwLjFIMTAuMXpNMTY4IDE0Mi43di0yMS40YzAtNS4xIDQuMi05LjMgOS4zLTkuM2gyMS40YzUuMSAwIDkuMyA0LjIgOS4zIDkuM3YyMS40YzAgNS4xLTQuMiA5LjMtOS4zIDkuM2gtMjEuNGMtNS4xIDAtOS4zLTQuMi05LjMtOS4zek01NiAyMzUuNXYyNWMwIDYuMy01LjEgMTEuNS0xMS40IDExLjVIMTkuNEMxMy4xIDI3MiA4IDI2Ni44IDggMjYwLjV2LTI1YzAtNi4zIDUuMS0xMS41IDExLjQtMTEuNWgyNS4xYzYuNCAwIDExLjUgNS4yIDExLjUgMTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ21wbGlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNi4xMTksMzg4LjE2NWEzLjgxNiwzLjgxNiwwLDAsMC0yLjI5NC0zLjUsMy45NDYsMy45NDYsMCwwLDAtMS42MjktLjM4NUw3Mi42LDM4NC4zYTE5LjI0MywxOS4yNDMsMCwwLDEtMTcuOTI0LTI2LjAyNUw4MS41ODUsMjU1LjY5MmEzNS43MiwzNS43MiwwLDAsMSwzMi4zNzMtMjZIMjYyLjUyNWE3LjA3LDcuMDcsMCwwLDAsNi4zOTItNS4xOTRsMTAuNzY5LTQxLjEzMWEzLjg0OSwzLjg0OSwwLDAsMC0yLjIzNy00LjkzNywzLjc1NSwzLjc1NSwwLDAsMC0xLjM3Ny0uMjYxYy0uMDYzLDAtLjEyNiwwLS4xODkuMDA1SDEyNy4zOGExMDYuOCwxMDYuOCwwLDAsMC05Ni45OSw3Ny4xTDMuNDgzLDM1OC44MjRBNTcuNDY5LDU3LjQ2OSwwLDAsMCw1Ny4zMTQsNDM2cTEuNDMsMCwyLjg2LS4wNzJIMjA4Ljc0MmE3LjEzMSw3LjEzMSwwLDAsMCw2LjM5MS01LjE5M0wyMjUuODM5LDM4OS42QTMuODIsMy44MiwwLDAsMCwyMjYuMTE5LDM4OC4xNjVaTTMwNi42NTgsODEuMmEzLjg2MSwzLjg2MSwwLDAsMCwuMjUxLTEuMzY3QTMuODEzLDMuODEzLDAsMCwwLDMwMy4wNzksNzZjLS4wNjQsMC0uMTI4LDAtLjE5MiwwaC00MUE3LjAzNCw3LjAzNCwwLDAsMCwyNTUuNSw4MS4ybC0yMS4zNDcsODAuOTE1aDUxLjEzMVpNMTgwLjM2NCwzNjguMjQ5SDIzMS41TDI2My40NTIsMjQ1LjY5SDIxMi4zMjFaTTUxMS44NTMsNzkuNzIzYTMuODA5LDMuODA5LDAsMCwwLTMuOC0zLjY2MWMtLjA1OCwwLS4xMzcsMC0uMjMuMDA3aC00MWE3LjEsNy4xLDAsMCwwLTYuNTg0LDUuMTI5TDM2OC45MSw0MzAuNjM0YTMuNTQsMy41NCwwLDAsMC0uMjYyLDEuMzM1LDMuODczLDMuODczLDAsMCwwLDMuODY0LDMuODYzYy4wNTYsMCwuMTEyLDAsLjE2OSwwaDQxYTcuMDY4LDcuMDY4LDAsMCwwLDYuMzkyLTUuMTkzTDUxMS41MzMsODEuMkEzLjYyNCwzLjYyNCwwLDAsMCw1MTEuODUzLDc5LjcyM1pNMzI0LjY0OSwzODQuNDdoLTQxYTcuMiw3LjIsMCwwLDAtNi4zOTIsNS4xOTRMMjY2LjUyLDQzMC44YTMuNjYyLDMuNjYyLDAsMCwwLS4yNjgsMS4zNzRBMy43ODMsMy43ODMsMCwwLDAsMjcwLjAyMyw0MzZjLjA2LDAsLjE2NiwwLC4zLS4wMTJoNDAuOTA1YTcuMDM2LDcuMDM2LDAsMCwwLDYuMzkxLTUuMTkzbDEwLjc2OS00MS4xMzFhMy43NSwzLjc1LDAsMCwwLTMuNDQ1LTUuMjA4Yy0uMTA4LDAtLjIxNywwLS4zMjYuMDE0Wm0zMTEuMzI0LTMwOC40aC00MWE3LjA2Niw3LjA2NiwwLDAsMC02LjM5Miw1LjEyOWwtOTEuNDYsMzQ5LjQzNmE0LjA3Myw0LjA3MywwLDAsMC0uMjI5LDEuMzQ3LDMuODcyLDMuODcyLDAsMCwwLDMuODYzLDMuODUxYy4wNTYsMCwuMTEyLDAsLjE2OSwwaDQwLjk2OGE3LjEsNy4xLDAsMCwwLDYuMzkyLTUuMTkzTDYzOS42OCw4MS4yYTMuNjI0LDMuNjI0LDAsMCwwLC4zMi0xLjQ3NSwzLjg0MSwzLjg0MSwwLDAsMC0zLjgyMS0zLjU2NGMtLjA2OCwwLS4xMzcsMC0uMjA2LjAwNlpNMzcxLjU2MiwyMjUuMjM2bDEwLjgtNDEuMWE0LjM2OSw0LjM2OSwwLDAsMCwuMjI3LTEuMzg4LDMuODY5LDMuODY5LDAsMCwwLTMuODYxLTMuODQyYy0uMDU3LDAtLjExMywwLS4xNjksMGgtNDEuMWE3LjI5Miw3LjI5MiwwLDAsMC02LjM5MSw1LjIyNmwtMTAuODM0LDQxLjFhNC40MTcsNC40MTcsMCwwLDAtLjI2LDEuNDkzYzAsLjA2OSwwLC4xMzgsMCwuMjA2YTMuNzc2LDMuNzc2LDAsMCwwLDMuNzU3LDMuNTA3Yy4wNzYsMCwuMTgsMCwuMy0uMDEyaDQxLjEyOUE3LjAzNCw3LjAzNCwwLDAsMCwzNzEuNTYyLDIyNS4yMzZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVwZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjI4NSAxNTkuNzA0bC0yMzQtMTU2Yy03Ljk4Ny00LjkxNS0xNi41MTEtNC45Ni0yNC41NzEgMGwtMjM0IDE1NkMzLjcxNCAxNjMuNzAzIDAgMTcwLjg0NyAwIDE3Ny45ODl2MTU1Ljk5OWMwIDcuMTQzIDMuNzE0IDE0LjI4NiA5LjcxNSAxOC4yODZsMjM0IDE1Ni4wMjJjNy45ODcgNC45MTUgMTYuNTExIDQuOTYgMjQuNTcxIDBsMjM0LTE1Ni4wMjJjNi0zLjk5OSA5LjcxNS0xMS4xNDMgOS43MTUtMTguMjg2VjE3Ny45ODljLS4wMDEtNy4xNDItMy43MTUtMTQuMjg2LTkuNzE2LTE4LjI4NXpNMjc4IDYzLjEzMWwxNzIuMjg2IDExNC44NTgtNzYuODU3IDUxLjQyOUwyNzggMTY1LjcwM1Y2My4xMzF6bS00NCAwdjEwMi41NzJsLTk1LjQyOSA2My43MTUtNzYuODU3LTUxLjQyOUwyMzQgNjMuMTMxek00NCAyMTkuMTMybDU1LjE0MyAzNi44NTdMNDQgMjkyLjg0NnYtNzMuNzE0em0xOTAgMjI5LjcxNUw2MS43MTQgMzMzLjk4OWw3Ni44NTctNTEuNDI5TDIzNCAzNDYuMjc1djEwMi41NzJ6bTIyLTE0MC44NThsLTc3LjcxNS01MiA3Ny43MTUtNTIgNzcuNzE1IDUyLTc3LjcxNSA1MnptMjIgMTQwLjg1OFYzNDYuMjc1bDk1LjQyOS02My43MTUgNzYuODU3IDUxLjQyOUwyNzggNDQ4Ljg0N3ptMTkwLTE1Ni4wMDFsLTU1LjE0My0zNi44NTdMNDY4IDIxOS4xMzJ2NzMuNzE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RpZXBpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDcyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjIuNSAyMDIuOWMzMC43IDAgMzMuNSA1My4xLS4zIDUzLjFoLTEwLjh2NDQuM2gtMjYuNnYtOTcuNGgzNy43ek00NzIgMzUyLjZDNDI5LjkgNDQ0LjUgMzUwLjQgNTA0IDI0OCA1MDQgMTExIDUwNCAwIDM5MyAwIDI1NlMxMTEgOCAyNDggOGM5Ny40IDAgMTcyLjggNTMuNyAyMTguMiAxMzguNGwtMTg2IDEwOC44TDQ3MiAzNTIuNnptLTM4LjUgMTIuNWwtNjAuMy0zMC43Yy0yNy4xIDQ0LjMtNzAuNCA3MS40LTEyMi40IDcxLjQtODIuNSAwLTE0OS4yLTY2LjctMTQ5LjItMTQ4LjkgMC04Mi41IDY2LjctMTQ5LjIgMTQ5LjItMTQ5LjIgNDguNCAwIDg4LjkgMjMuNSAxMTYuOSA2My40bDU5LjUtMzQuNmMtNDAuNy02Mi42LTEwNC43LTEwMC0xNzkuMi0xMDAtMTIxLjIgMC0yMTkuNSA5OC4zLTIxOS41IDIxOS41UzEyNi44IDQ3NS41IDI0OCA0NzUuNWM3OC42IDAgMTQ2LjUtNDIuMSAxODUuNS0xMTAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29uZmx1ZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjMgNDEyLjJjLTQuNSA3LjYtMi4xIDE3LjUgNS41IDIyLjJsMTA1LjkgNjUuMmM3LjcgNC43IDE3LjcgMi40IDIyLjQtNS4zIDAtLjEuMS0uMi4xLS4yIDY3LjEtMTEyLjIgODAuNS05NS45IDI4MC45LS43IDguMSAzLjkgMTcuOC40IDIxLjctNy43LjEtLjEuMS0uMy4yLS40bDUwLjQtMTE0LjFjMy42LTguMS0uMS0xNy42LTguMS0yMS4zLTIyLjItMTAuNC02Ni4yLTMxLjItMTA1LjktNTAuM0MxMjcuNSAxNzkgNDQuNiAzNDUuMyAyLjMgNDEyLjJ6bTUwNy40LTMxMi4xYzQuNS03LjYgMi4xLTE3LjUtNS41LTIyLjJMMzk4LjQgMTIuOGMtNy41LTUtMTcuNi0zLjEtMjIuNiA0LjQtLjIuMy0uNC42LS42IDEtNjcuMyAxMTIuNi04MS4xIDk1LjYtMjgwLjYuOS04LjEtMy45LTE3LjgtLjQtMjEuNyA3LjctLjEuMS0uMS4zLS4yLjRMMjIuMiAxNDEuM2MtMy42IDguMS4xIDE3LjYgOC4xIDIxLjMgMjIuMiAxMC40IDY2LjMgMzEuMiAxMDYgNTAuNCAyNDggMTIwIDMzMC44LTQ1LjQgMzczLjQtMTEyLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbm5lY3RkZXZlbG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MC41IDI0MWwtNTAuMDg5LTg2Ljc4NmMxLjA3MS0yLjE0MiAxLjg3NS00LjU1MyAxLjg3NS03LjIzMiAwLTguMDM2LTYuNjk2LTE0LjczMy0xNC43MzItMTUuMDAxbC01NS40NDctOTUuODkzYy41MzYtMS42MDcgMS4wNzEtMy4yMTQgMS4wNzEtNC44MjEgMC04LjU3MS02Ljk2NC0xNS4yNjgtMTUuMjY4LTE1LjI2OC00LjgyMSAwLTguODM5IDIuMTQzLTExLjc4NiA1LjYyNUgyOTkuNTE4QzI5Ni44MzkgMTguMTQzIDI5Mi44MjEgMTYgMjg4IDE2cy04LjgzOSAyLjE0My0xMS41MTggNS42MjVIMTcwLjQxMUMxNjcuNDY0IDE4LjE0MyAxNjMuNDQ3IDE2IDE1OC42MjUgMTZjLTguMzAzIDAtMTUuMjY4IDYuNjk2LTE1LjI2OCAxNS4yNjggMCAxLjYwNy41MzYgMy40ODIgMS4wNzIgNC44MjFsLTU1Ljk4MyA5Ny4yMzNjLTUuMzU2IDIuNDEtOS4xMDcgNy41LTkuMTA3IDEzLjY2MSAwIC41MzUuMjY4IDEuMDcxLjI2OCAxLjYwN2wtNTMuMzA0IDkyLjE0M2MtNy4yMzIgMS4zMzktMTIuNTkgNy41LTEyLjU5IDE1IDAgNy4yMzIgNS4wODkgMTMuMzkzIDEyLjA1NCAxNWw1NS4xNzkgOTUuMzU4Yy0uNTM2IDEuNjA3LS44MDQgMi45NDYtLjgwNCA0LjgyMSAwIDcuMjMyIDUuMDg5IDEzLjM5MyAxMi4wNTQgMTQuNzMybDUxLjY5NyA4OS43MzJjLS41MzYgMS42MDctMS4wNzEgMy40ODItMS4wNzEgNS4zNTcgMCA4LjU3MSA2Ljk2NCAxNS4yNjggMTUuMjY4IDE1LjI2OCA0LjgyMSAwIDguODM5LTIuMTQzIDExLjUxOC01LjM1N2gxMDYuODc1QzI3OS4xNjEgNDkzLjg1NyAyODMuNDQ3IDQ5NiAyODggNDk2czguODM5LTIuMTQzIDExLjUxOC01LjM1N2gxMDcuMTQzYzIuNjc4IDIuOTQ2IDYuNjk2IDQuODIxIDEwLjk4MiA0LjgyMSA4LjU3MSAwIDE1LjI2OC02Ljk2NCAxNS4yNjgtMTUuMjY4IDAtMS42MDctLjI2Ny0yLjk0Ni0uODAzLTQuMjg1bDUxLjY5Ny05MC4yNjhjNi45NjQtMS4zMzkgMTIuMDU0LTcuNSAxMi4wNTQtMTQuNzMyIDAtMS42MDctLjI2OC0zLjIxNC0uODA0LTQuODIxbDU0LjkxMS05NS4zNThjNi45NjQtMS4zMzkgMTIuMzIyLTcuNSAxMi4zMjItMTUtLjAwMi03LjIzMi01LjA5Mi0xMy4zOTMtMTEuNzg4LTE0LjczMnpNMTUzLjUzNSA0NTAuNzMybC00My42Ni03NS44MDNoNDMuNjZ2NzUuODAzem0wLTgzLjgzOWgtNDMuNjZjLS4yNjgtMS4wNzEtLjgwNC0yLjE0Mi0xLjMzOS0zLjIxNGw0NC45OTktNDcuNDF2NTAuNjI0em0wLTYyLjQxMWwtNTAuMzU3IDUzLjMwNGMtMS4zMzktLjUzNi0yLjY3OS0xLjM0LTQuMDE4LTEuNjA3TDQzLjQ0NyAyNTkuNzVjLjUzNS0xLjMzOS41MzUtMi42NzkuNTM1LTQuMDE4czAtMi40MS0uMjY4LTMuNDgybDUxLjk2NS05MGMyLjY3OS0uMjY4IDUuMzU3LTEuMDcyIDcuNzY4LTIuNjc5bDUwLjA4OSA1MS45NjV2OTIuOTQ2em0wLTEwMi4zMjJsLTQ1LjgwMy00Ny40MWMxLjMzOS0yLjE0MyAyLjE0My00LjgyMSAyLjE0My03Ljc2NyAwLS4yNjgtLjI2OC0uODA0LS4yNjgtMS4wNzJsNDMuOTI4LTE1LjgwNHY3Mi4wNTN6bTAtODAuNjI1bC00My42NiAxNS44MDQgNDMuNjYtNzUuNTM2djU5LjczMnptMzI2LjUxOSAzOS4xMDhsLjgwNCAxLjMzOUw0NDUuNSAzMjkuMTI1bC02My43NS02Ny4yMzIgOTguMDM2LTEwMS41MTguMjY4LjI2OHpNMjkxLjc1IDM1NS4xMDdsMTEuNTE4IDExLjc4NkgyODAuNWwxMS4yNS0xMS43ODZ6bS0uMjY4LTExLjI1bC04My4zMDMtODUuNDQ2IDc5LjU1My04NC4zNzUgODMuMDM2IDg3LjU4OS03OS4yODYgODIuMjMyem01LjM1NyA1Ljg5M2w3OS4yODYtODIuMjMyIDY3LjUgNzEuMjUtNS44OTIgMjguMTI1SDMxMy43MTRsLTE2Ljg3NS0xNy4xNDN6TTQxMC40MTEgNDQuMzkzYzEuMDcxLjUzNiAyLjE0MiAxLjA3MiAzLjQ4MiAxLjM0bDU3Ljg1NyAxMDAuNzE0di41MzZjMCAyLjk0Ni44MDMgNS42MjQgMi4xNDMgNy43NjdMMzc2LjM5MyAyNTZsLTgzLjAzNS04Ny41ODlMNDEwLjQxMSA0NC4zOTN6bS05LjEwNy0yLjE0M0wyODcuNzMyIDE2Mi41MThsLTU3LjA1NC02MC4yNjggMTY2LjMzOS02MGg0LjI4N3ptLTEyMy40ODMgMGMyLjY3OCAyLjY3OCA2LjE2IDQuMjg1IDEwLjE3OSA0LjI4NXM3LjUtMS42MDcgMTAuMTc5LTQuMjg1aDc1TDIyNC43ODYgOTUuODIxIDE3My44OTMgNDIuMjVoMTAzLjkyOHptLTExNi4yNDkgNS42MjVsMS4wNzEtMi4xNDJhMzMuODM0IDMzLjgzNCAwIDAgMCAyLjY3OS0uODA0bDUxLjE2MSA1My44NC01NC45MTEgMTkuODIxVjQ3Ljg3NXptMCA3OS4yODZsNjAuODAzLTIxLjk2NCA1OS43MzIgNjMuMjE0LTc5LjU1MyA4NC4xMDctNDAuOTgyLTQyLjA1M3YtODMuMzA0em0wIDkyLjY3OEwxOTggMjU3LjYwN2wtMzYuNDI4IDM4LjMwNHYtNzYuMDcyem0wIDg3Ljg1OGw0Mi4wNTMtNDQuNDY0IDgyLjc2OCA4NS45ODItMTcuMTQzIDE3LjY3OEgxNjEuNTcydi01OS4xOTZ6bTYuOTY0IDE2Mi4wNTNjLTEuNjA3LTEuNjA3LTMuNDgyLTIuNjc4LTUuODkzLTMuNDgybC0xLjA3MS0xLjYwN3YtODkuNzMyaDk5LjkxbC05MS42MDcgOTQuODIxaC0xLjMzOXptMTI5LjkxMSAwYy0yLjY3OS0yLjQxLTYuNDI4LTQuMjg1LTEwLjQ0Ny00LjI4NXMtNy43NjcgMS44NzUtMTAuNDQ3IDQuMjg1aC05Ni40MjlsOTEuNjA3LTk0LjgyMWgzOC4zMDRsOTEuNjA3IDk0LjgyMUgyOTguNDQ3em0xMjAtMTEuNzg2bC00LjI4NiA3LjVjLTEuMzM5LjI2OC0yLjQxLjgwMy0zLjQ4MiAxLjMzOWwtODkuMTk2LTkxLjg3NWgxMTQuMzc2bC0xNy40MTIgODMuMDM2em0xMi44NTYtMjIuMjMybDEyLjg1OC02MC44MDNoMjEuOTY0bC0zNC44MjIgNjAuODAzem0zNC44MjItNjguODM5aC0yMC4zNTdsNC41NTMtMjEuMTYgMTcuMTQzIDE4LjIxNGMtLjUzNS44MDMtMS4wNzEgMS44NzQtMS4zMzkgMi45NDZ6bTY2LjE2MS0xMDcuNDExbC01NS40NDcgOTYuNjk3Yy0xLjMzOS41MzUtMi42NzkgMS4wNzEtNC4wMTggMS44NzRsLTIwLjYyNS0yMS45NjQgMzQuNTU0LTE2My45MjggNDUuODAzIDc5LjI4NmMtLjI2NyAxLjMzOS0uODAzIDIuNjc4LS44MDMgNC4yODUgMCAxLjMzOS4yNjggMi40MTEuNTM2IDMuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbnRhbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NS40IDMwNWMxNC40IDY3LjEgMjYuNCAxMjkgNjguMiAxNzVIMzRjLTE4LjcgMC0zNC0xNS4yLTM0LTM0VjY2YzAtMTguNyAxNS4yLTM0IDM0LTM0aDU3LjdDNzcuOSA0NC42IDY1LjYgNTkuMiA1NC44IDc1LjZjLTQ1LjQgNzAtMjcgMTQ2LjgtOS40IDIyOS40ek00NzggMzJoLTkwLjJjMjEuNCAyMS40IDM5LjIgNDkuNSA1Mi43IDg0LjFsLTEzNy4xIDI5LjNjLTE0LjktMjktMzcuOC01My4zLTgyLjYtNDMuOS0yNC42IDUuMy00MSAxOS4zLTQ4LjMgMzQuNi04LjggMTguNy0xMy4yIDM5LjggOC4yIDE0MC4zIDIxLjEgMTAwLjIgMzMuNyAxMTcuNyA0OS41IDEzMS4yIDEyLjkgMTEuMSAzMy40IDE3IDU4LjMgMTEuNyA0NC41LTkuNCA1NS43LTQwLjcgNTcuNC03My4ybDEzNy40LTI5LjZjMy4yIDcxLjUtMTguNyAxMjUuMi01Ny40IDE2My42SDQ3OGMxOC43IDAgMzQtMTUuMiAzNC0zNFY2NmMwLTE4LjgtMTUuMi0zNC0zNC0zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ290dG9uQnVyZWF1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3NC4zMSAzMzAuNDFjLTIzLjY2IDkxLjg1LTk0LjIzIDE0NC41OS0yMDEuOSAxNDguMzVWNDI5LjZjMC00OCAyNi40MS03NC4zOSA3NC4zOS03NC4zOSA2MiAwIDk5LjItMzcuMiA5OS4yLTk5LjIxIDAtNjEuMzctMzYuNTMtOTguMjgtOTcuMzgtOTkuMDYtMzMtNjkuMzItMTQ2LjUtNjQuNjUtMTc3LjI0IDBDMTEwLjUyIDE1Ny43MiA3NCAxOTQuNjMgNzQgMjU2YzAgNjIuMTMgMzcuMjcgOTkuNDEgOTkuNCA5OS40MSA0OCAwIDc0LjU1IDI2LjIzIDc0LjU1IDc0LjM5VjQ3OWMtMTM0LjQzLTUtMjExLjEtODUuMDctMjExLjEtMjIzIDAtMTQxLjgyIDgxLjM1LTIyMy4yIDIyMy4yLTIyMy4yIDExNC43NyAwIDE4OS44NCA1My4yIDIxNC42OSAxNDguODFINTAwQzQ3My44OCA3MS41MSAzODguMjIgOCAyNTkuODIgOCAxMDUgOCAxMiAxMDEuMTkgMTIgMjU1LjgyIDEyIDQxMS4xNCAxMDUuMTkgNTA0LjM0IDI1OS44MiA1MDRjMTI4LjI3IDAgMjEzLjg3LTYzLjgxIDIzOS42Ny0xNzMuNTl6TTM1NyAxODIuMzNjNDEuMzcgMy40NSA2NC4yIDI5IDY0LjIgNzMuNjcgMCA0OC0yNi40MyA3NC40MS03NC40IDc0LjQxLTI4LjYxIDAtNDkuMzMtOS41OS02MS41OS0yNy4zMyA4My4wNi0xNi41NSA3NS41OS05OS42NyA3MS43OS0xMjAuNzV6bS04MS42OCA5Ny4zNmMtMi40Ni0xMC4zNC0xNi4zMy04NyA1Ni4yMy05NyAyLjI3IDEwLjA5IDE2LjUyIDg3LjExLTU2LjI2IDk3ek0yNjAgMTMyYzI4LjYxIDAgNDkgOS42NyA2MS40NCAyNy42MS0yOC4zNiA1LjQ4LTQ5LjM2IDIwLjU5LTYxLjU5IDQzLjQ1LTEyLjIzLTIyLjg2LTMzLjIzLTM4LTYxLjYtNDMuNDUgMTIuNDEtMTcuNjkgMzMuMjctMjcuMzUgNjEuNTctMjcuMzV6bS03MS41MiA1MC43MmM3My4xNyAxMC41NyA1OC45MSA4Ni44MSA1Ni40OSA5Ny03Mi40MS05Ljg0LTU5LTg2Ljk1LTU2LjI1LTk3ek0xNzMuMiAzMzAuNDFjLTQ4IDAtNzQuNC0yNi40LTc0LjQtNzQuNDEgMC00NC4zNiAyMi44Ni03MCA2NC4yMi03My42Ny02Ljc1IDM3LjItMS4zOCAxMDYuNTMgNzEuNjUgMTIwLjc1LTEyLjE0IDE3LjYzLTMyLjg0IDI3LjMtNjEuMTQgMjcuM3ptNTMuMjEgMTIuMzlBODAuOCA4MC44IDAgMCAwIDI2MCAzMDkuMjVjNy43NyAxNC40OSAxOS4zMyAyNS41NCAzMy44MiAzMy41NWE4MC4yOCA4MC4yOCAwIDAgMC0zMy41OCAzMy44M2MtOC0xNC41LTE5LjA3LTI2LjIzLTMzLjU2LTMzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcGFuZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEwLjMgMjIwLjJjLTUuNi0yNC44LTI2LjktNDEuMi01MS00MS4yaC0zN2MtNy4xIDAtMTIuNSA0LjUtMTQuMyAxMC45TDczLjEgMzIwbDI0LjctLjFjNi44IDAgMTIuMy00LjUgMTQuMi0xMC43bDI1LjgtOTUuN2gxOS44YzguNCAwIDE2LjIgNS42IDE4LjMgMTQuOCAyLjUgMTAuOS01LjkgMjIuNi0xOC4zIDIyLjZoLTEwLjNjLTcgMC0xMi41IDQuNi0xNC4zIDEwLjhsLTYuNCAyMy44aDMyYzM3LjIgMCA1OC4zLTM2LjIgNTEuNy02NS4zem0tMTU2LjUgMjhoMTguNmM2LjkgMCAxMi40LTQuNCAxNC4zLTEwLjlsNi4yLTIzLjZoLTQwQzMwIDIxMy43IDkgMjI3LjggMS43IDI1NC44LTcgMjg4LjYgMTguNSAzMjAgNTIgMzIwaDEyLjRsNy4xLTI2LjFjMS4yLTQuNC0yLjItOC4zLTYuNC04LjNINTMuOGMtMjQuNyAwLTI0LjktMzcuNCAwLTM3LjR6bTI0Ny41LTM0LjhoLTc3LjlsLTMuNSAxMy40Yy0yLjQgOS42IDQuNSAxOC41IDE0LjIgMTguNWg1Ny41YzQgMCAyLjQgNC4zIDIuMSA1LjNsLTguNiAzMS44Yy0uNCAxLjQtLjkgNS4zLTUuNSA1LjNoLTM0LjljLTUuMyAwLTUuMy03LjkgMC03LjloMjEuNmM2LjggMCAxMi4zLTQuNiAxNC4yLTEwLjhsMy41LTEzLjJoLTQ4LjRjLTM5LjIgMC00My42IDYzLjgtLjcgNjMuOGw1Ny41LjJjMTEuMiAwIDIwLjYtNy4yIDIzLjQtMTcuOGwxNC01MS44YzQuOC0xOS4yLTkuNy0zNi44LTI4LjUtMzYuOHpNNjMzLjEgMTc5aC0xOC45Yy00LjkgMC05LjIgMy4yLTEwLjQgNy45TDU2OC4yIDMyMGMyMC43IDAgMzkuOC0xMy44IDQ0LjktMzQuNWwyNi41LTk4LjJjMS4yLTQuMy0yLTguMy02LjUtOC4zem0tMjM2LjMgMzQuN3YuMWgtNDguM2wtMjYuMiA5OGMtMS4yIDQuNCAyLjIgOC4zIDYuNCA4LjNoMTguOWM0LjggMCA5LjItMyAxMC40LTcuOGwxNy4yLTY0SDM5NWMxMi41IDAgMjEuNCAxMS44IDE4LjEgMjMuNGwtMTAuNiA0MGMtMS4yIDQuMyAxLjkgOC4zIDYuNCA4LjNINDI4YzQuNiAwIDkuMS0yLjkgMTAuMy03LjhsOC44LTMzLjFjOS0zMy4xLTE1LjktNjUuNC01MC4zLTY1LjR6bTk4LjMgNzQuNmMtMy42IDAtNi0zLjQtNS4xLTYuN2w4LTMwYy45LTMuOSAzLjctNiA3LjgtNmgzMi45YzIuNiAwIDQuNiAyLjQgMy45IDUuMWwtLjcgMi42Yy0uNiAyLTEuOSAzLTMuOSAzaC0yMS42Yy03IDAtMTIuNiA0LjYtMTQuMiAxMC44bC0zLjUgMTNoNTMuNGMxMC41IDAgMjAuMy02LjYgMjMuMi0xNy42bDMuMi0xMmM0LjktMTkuMS05LjMtMzYuOC0yOC4zLTM2LjhoLTQ3LjNjLTE3LjkgMC0zMy44IDEyLTM4LjYgMjkuNmwtMTAuOCA0MGMtNSAxNy43IDguMyAzNi43IDI4LjMgMzYuN2g2Ni43YzYuOCAwIDEyLjMtNC41IDE0LjItMTAuN2w1LjctMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc0J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNC45IDE5NC40djEwMS40aC0yOC4zdjEyMC41aC03Ny4xVjI5NS45aC0yOC4zVjE5NC40YzAtNC40IDEuNi04LjIgNC42LTExLjMgMy4xLTMuMSA2LjktNC43IDExLjMtNC43SDI5OWM0LjEgMCA3LjggMS42IDExLjEgNC43IDMuMSAzLjIgNC44IDYuOSA0LjggMTEuM3ptLTEwMS41LTYzLjdjMC0yMy4zIDExLjUtMzUgMzQuNS0zNXMzNC41IDExLjcgMzQuNSAzNWMwIDIzLTExLjUgMzQuNS0zNC41IDM0LjVzLTM0LjUtMTEuNS0zNC41LTM0LjV6TTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNOY0V1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny43IDhDMTAzLjYgOCAwIDEyNC44IDAgMjU2YzAgMTM2LjMgMTExLjcgMjQ4IDI0Ny43IDI0OEMzNzcuOSA1MDQgNDk2IDQwMy4xIDQ5NiAyNTYgNDk2IDExNyAzODguNCA4IDI0Ny43IDh6bS42IDQ1MC43Yy0xMTIgMC0yMDMuNi05Mi41LTIwMy42LTIwMi43IDAtMjMuMiAzLjctNDUuMiAxMC45LTY2bDY1LjcgMjkuMWgtNC43djI5LjVoMjMuM2MwIDYuMi0uNCAzLjItLjQgMTkuNWgtMjIuOHYyOS41aDI3YzExLjQgNjcgNjcuMiAxMDEuMyAxMjQuNiAxMDEuMyAyNi42IDAgNTAuNi03LjkgNjQuOC0xNS44bC0xMC00Ni4xYy04LjcgNC42LTI4LjIgMTAuOC00Ny4zIDEwLjgtMjguMiAwLTU4LjEtMTAuOS02Ny4zLTUwLjJoOTAuM2wxMjguMyA1Ni44Yy0xLjUgMi4xLTU2LjIgMTA0LjMtMTc4LjggMTA0LjN6bS0xNi43LTE5MC42bC0uNS0uNC45LjRoLS40em03Ny4yLTE5LjVoMy43di0yOS41aC03MC4zbC0yOC42LTEyLjZjMi41LTUuNSA1LjQtMTAuNSA4LjgtMTQuMyAxMi45LTE1LjggMzEuMS0yMi40IDUxLjEtMjIuNCAxOC4zIDAgMzUuMyA1LjQgNDYuMSAxMGwxMS42LTQ3LjNjLTE1LTYuNi0zNy0xMi40LTYyLjMtMTIuNC0zOSAwLTcyLjIgMTUuOC05NS45IDQyLjMtNS4zIDYuMS05LjggMTIuOS0xMy45IDIwLjFsLTgxLjYtMzYuMWM2NC42LTk2LjggMTU3LjctOTMuNiAxNzAuNy05My42IDExMyAwIDIwMyA5MC4yIDIwMyAyMDMuNCAwIDE4LjctMi4xIDM2LjMtNi4zIDUyLjlsLTEzNi4xLTYwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05jSnAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjcgOEMxMDMuNiA4IDAgMTI0LjggMCAyNTZjMCAxMzYuNCAxMTEuOCAyNDggMjQ3LjcgMjQ4QzM3Ny45IDUwNCA0OTYgNDAzLjIgNDk2IDI1NiA0OTYgMTE3LjIgMzg4LjUgOCAyNDcuNyA4em0uNiA0NTAuN2MtMTEyIDAtMjAzLjYtOTIuNS0yMDMuNi0yMDIuNyAwLTIxLjEgMy00MS4yIDktNjAuM2wxMjcgNTYuNWgtMjcuOXYzOC42aDU4LjFsNS43IDExLjh2MTguN2gtNjMuOFYzNjBoNjMuOHY1Nmg2MS43di01Nmg2NC4ydi0zNS43bDgxIDM2LjFjLTEuNSAyLjItNTcuMSA5OC4zLTE3NS4yIDk4LjN6bTg3LjYtMTM3LjNoLTU3LjZ2LTE4LjdsMi45LTUuNiA1NC43IDI0LjN6bTYuNS01MS40di0xNy44aC0zOC42bDYzLTExNkgzMDFsLTQzLjQgOTYtMjMtMTAuMi0zOS42LTg1LjdoLTY1LjhsMjcuMyA1MS04MS45LTM2LjVjMjcuOC00NC4xIDgyLjYtOTguMSAxNzMuNy05OC4xIDExMi44IDAgMjAzIDkwIDIwMyAyMDMuNCAwIDIxLTIuNyA0MC42LTcuOSA1OWwtMTAxLTQ1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg3LjQgOCA0OTYgMTE1LjkgNDk2IDI1NmMwIDE0Ny4yLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjEgNTA0IDAgMzkzLjIgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6TTU1LjggMTg5LjFjLTcuNCAyMC40LTExLjEgNDIuNy0xMS4xIDY2LjkgMCAxMTAuOSA5Mi4xIDIwMi40IDIwMy43IDIwMi40IDEyMi40IDAgMTc3LjItMTAxLjggMTc4LjUtMTA0LjFsLTkzLjQtNDEuNmMtNy43IDM3LjEtNDEuMiA1My02OC4yIDU1LjR2MzguMWgtMjguOFYzNjhjLTI3LjUtLjMtNTIuNi0xMC4yLTc1LjMtMjkuN2wzNC4xLTM0LjVjMzEuNyAyOS40IDg2LjQgMzEuOCA4Ni40LTIuMiAwLTYuMi0yLjItMTEuMi02LjYtMTUuMS0xNC4yLTYtMS44LS4xLTIxOS4zLTk3LjR6TTI0OC40IDUyLjNjLTM4LjQgMC0xMTIuNCA4LjctMTcwLjUgOTNsOTQuOCA0Mi41YzEwLTMxLjMgNDAuNC00Mi45IDYzLjgtNDQuM3YtMzguMWgyOC44djM4LjFjMjIuNyAxLjIgNDMuNCA4LjkgNjIgMjNMMjk1IDE5OS43Yy00Mi43LTI5LjktODMuNS04LTcwIDExLjEgNTMuNCAyNC4xIDQzLjggMTkuOCA5MyA0MS42bDEyNy4xIDU2LjdjNC4xLTE3LjQgNi4yLTM1LjEgNi4yLTUzLjEgMC01Ny0xOS44LTEwNS01OS4zLTE0My45LTM5LjMtMzkuOS04Ny4yLTU5LjgtMTQzLjYtNTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zTmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTk0IDE0NC4zdjQyLjVIMTYyLjFWMTk3aDE4MC4zem0wIDc5Ljh2NDIuNUgxNjIuMXYtNDIuNWgxODAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zUGRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMxMDQuNyA4IDAgMTIzLjEgMCAyNTZjMCAxMzguNSAxMTMuNiAyNDggMjQ3LjYgMjQ4QzM3Ny41IDUwNCA0OTYgNDAzLjEgNDk2IDI1NiA0OTYgMTE4LjEgMzg5LjQgOCAyNDcuNiA4em0uOCA0NTAuOGMtMTEyLjUgMC0yMDMuNy05My0yMDMuNy0yMDIuOCAwLTEwNS40IDg1LjUtMjAzLjMgMjAzLjctMjAzLjMgMTEyLjYgMCAyMDIuOSA4OS41IDIwMi44IDIwMy4zIDAgMTIxLjctOTkuNiAyMDIuOC0yMDIuOCAyMDIuOHpNMzE2LjcgMTg2aC01My4ydjEzNy4yaDUzLjJjMjEuNCAwIDcwLTUuMSA3MC02OC42IDAtNjMuNC00OC42LTY4LjYtNzAtNjguNnptLjggMTA4LjVoLTE5Ljl2LTc5LjdsMTkuNC0uMWMzLjggMCAzNS0yLjEgMzUgMzkuOSAwIDI0LjYtMTAuNSAzOS45LTM0LjUgMzkuOXpNMjAzLjcgMTg2aC02OC4ydjEzNy4zaDM0LjZWMjc5aDI3YzU0LjEgMCA1Ny4xLTM3LjUgNTcuMS00Ni41IDAtMzEtMTYuOC00Ni41LTUwLjUtNDYuNXptLTQuOSA2Ny4zaC0yOS4ydi00MS42aDI4LjNjMzAuOSAwIDI4LjggNDEuNi45IDQxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1BkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5LjEgMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OEM0OTYgMTE5LjEgMzg1IDggMjQ4IDh6bTAgNDQ5LjVjLTEzOS4yIDAtMjM1LjgtMTM4LTE5MC4yLTI2Ny45bDc4LjggMzUuMWMtMi4xIDEwLjUtMy4zIDIxLjUtMy4zIDMyLjkgMCA5OSA3My45IDEyNi45IDEyMC40IDEyNi45IDIyLjkgMCA1My41LTYuNyA3OS40LTI5LjVMMjk3IDMxMS4xYy01LjUgNi4zLTE3LjYgMTYuNy0zNi4zIDE2LjctMzcuOCAwLTUzLjctMzkuOS01My45LTcxLjkgMjMwLjQgMTAyLjYgMjE2LjUgOTYuNSAyMTcuOSA5Ni44LTM0LjMgNjIuNC0xMDAuNiAxMDQuOC0xNzYuNyAxMDQuOHptMTk0LjItMTUwbC0yMjQtMTAwYzE4LjgtMzQgNTQuOS0zMC43IDc0LjctMTFsNDAuNC00MS42Yy0yNy4xLTIzLjMtNTgtMjcuNS03OC4xLTI3LjUtNDcuNCAwLTgwLjkgMjAuNS0xMDAuNyA1MS42bC03NC45LTMzLjRjMzYuMS01NC45IDk4LjEtOTEuMiAxNjguNS05MS4yIDExMS4xIDAgMjAxLjUgOTAuNCAyMDEuNSAyMDEuNSAwIDE4LTIuNCAzNS40LTYuOCA1Mi0uMy0uMS0uNC0uMi0uNi0uNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zUmVtaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTE2MS43IDIwNy43bDQuOSAyLjJ2NzBjLTcuMiAzLjYtNjMuNCAyNy41LTY3LjMgMjguOC02LjUtMS44LTExMy43LTQ2LjgtMTM3LjMtNTYuMmwtNjQuMiAyNi42LTYzLjMtMjcuNXYtNjMuOGw1OS4zLTI0LjhjLS43LS43LS40IDUtLjQtNzAuNGw2Ny4zLTI5LjdMMzYxIDE3OC41djYxLjZsNDkuMSAyMC4zem0tNzAuNCA4MS41di00My44aC0uNHYtMS44bC0xMTMuOC00Ni41VjI5NWwxMTMuOCA0Ni45di0uNGwuNC40em03LjUtNTcuNmwzOS45LTE2LjQtMzYuOC0xNS41LTM5IDE2LjQgMzUuOSAxNS41em01Mi4zIDM4LjF2LTQzTDM1NS4yIDI5OHY0My40bDQ0LjMtMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zek0xMzcuNyAyMjFjMTMtODMuOSA4MC41LTk1LjcgMTA4LjktOTUuNyA5OS44IDAgMTI3LjUgODIuNSAxMjcuNSAxMzQuMiAwIDYzLjYtNDEgMTMyLjktMTI4LjkgMTMyLjktMzguOSAwLTk5LjEtMjAtMTA5LjQtOTdoNjIuNWMxLjUgMzAuMSAxOS42IDQ1LjIgNTQuNSA0NS4yIDIzLjMgMCA1OC0xOC4yIDU4LTgyLjggMC04Mi41LTQ5LjEtODAuNi01Ni43LTgwLjYtMzMuMSAwLTUxLjcgMTQuNi01NS44IDQzLjhoMTguMmwtNDkuMiA0OS4yLTQ5LTQ5LjJoMTkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2FtcGxpbmdQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0xMDcgMjA1LjZjLTQuNyAwLTkgMi44LTEwLjcgNy4ybC00IDkuNS0xMS05Mi44Yy0xLjctMTMuOS0yMi0xMy40LTIzLjEuNGwtNC4zIDUxLjQtNS4yLTY4LjhjLTEuMS0xNC4zLTIyLjEtMTQuMi0yMy4yIDBsLTMuNSA0NC45LTUuOS05NC4zYy0uOS0xNC41LTIyLjMtMTQuNC0yMy4yIDBsLTUuMSA4My43LTQuMy02Ni4zYy0uOS0xNC40LTIyLjItMTQuNC0yMy4yIDBsLTUuMyA4MC4yLTQuMS01N2MtMS4xLTE0LjMtMjItMTQuMy0yMy4yLS4ybC03LjcgODkuOC0xLjgtMTIuMmMtMS43LTExLjQtMTcuMS0xMy42LTIyLTMuM2wtMTMuMiAyNy43SDg3LjV2MjMuMmg1MS4zYzQuNCAwIDguNC0yLjUgMTAuNC02LjRsMTAuNyA3My4xYzIgMTMuNSAyMS45IDEzIDIzLjEtLjdsMy44LTQzLjYgNS43IDc4LjNjMS4xIDE0LjQgMjIuMyAxNC4yIDIzLjItLjFsNC42LTcwLjQgNC44IDczLjNjLjkgMTQuNCAyMi4zIDE0LjQgMjMuMi0uMWw0LjktODAuNSA0LjUgNzEuOGMuOSAxNC4zIDIyLjEgMTQuNSAyMy4yLjJsNC42LTU4LjYgNC45IDY0LjRjMS4xIDE0LjMgMjIgMTQuMiAyMy4xLjFsNi44LTgzIDIuNyAyMi4zYzEuNCAxMS44IDE3LjcgMTQuMSAyMi4zIDMuMWwxOC00My40aDUwLjVWMjU4bC01OC40LjN6bS03OCA1LjJoLTIxLjl2MjEuOWMwIDQuMS0zLjMgNy41LTcuNSA3LjUtNC4xIDAtNy41LTMuMy03LjUtNy41di0yMS45aC0yMS45Yy00LjEgMC03LjUtMy4zLTcuNS03LjUgMC00LjEgMy40LTcuNSA3LjUtNy41aDIxLjl2LTIxLjljMC00LjEgMy40LTcuNSA3LjUtNy41czcuNSAzLjMgNy41IDcuNXYyMS45aDIxLjljNC4xIDAgNy41IDMuMyA3LjUgNy41IDAgNC4xLTMuNCA3LjUtNy41IDcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2FtcGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTMuNiA1My4yYzIuOC0uMyAxMS41IDEgMTEuNSAxMS41bDYuNiAxMDcuMiA0LjktNTkuM2MwLTYgNC43LTEwLjYgMTAuNi0xMC42IDUuOSAwIDEwLjYgNC43IDEwLjYgMTAuNiAwIDIuNS0uNS01LjcgNS43IDgxLjVsNS44LTY0LjJjLjMtMi45IDIuOS05LjMgMTAuMi05LjMgMy44IDAgOS45IDIuMyAxMC42IDguOWwxMS41IDk2LjUgNS4zLTEyLjhjMS44LTQuNCA1LjItNi42IDEwLjItNi42aDU4djIxLjNoLTUwLjlsLTE4LjIgNDQuM2MtMy45IDkuOS0xOS41IDkuMS0yMC44LTMuMWwtNC0zMS45LTcuNSA5Mi42Yy0uMyAzLTMgOS4zLTEwLjIgOS4zLTMgMC05LjgtMi4xLTEwLjYtOS4zIDAtMS45LjYgNS44LTYuMi03Ny45bC01LjMgNzIuMmMtMS4xIDQuOC00LjggOS4zLTEwLjYgOS4zLTIuOSAwLTkuOC0yLTEwLjYtOS4zIDAtMS45LjUgNi43LTUuOC04Ny43bC01LjggOTQuOGMwIDYuMy0zLjYgMTIuNC0xMC42IDEyLjQtNS4yIDAtMTAuNi00LjEtMTAuNi0xMmwtNS44LTg3LjdjLTUuOCA5Mi41LTUuMyA4NC01LjMgODUuOS0xLjEgNC44LTQuOCA5LjMtMTAuNiA5LjMtMyAwLTkuOC0yLjEtMTAuNi05LjMgMC0uNy0uNC0xLjEtLjQtMi42bC02LjItODguNkwxODIgMzQ4Yy0uNyA2LjUtNi43IDkuMy0xMC42IDkuMy01LjggMC05LjYtNC4xLTEwLjYtOC45TDE0OS43IDI3MmMtMiA0LTMuNSA4LjQtMTEuMSA4LjRIODcuMnYtMjEuM0gxMzJsMTMuNy0yNy45YzQuNC05LjkgMTguMi03LjIgMTkuOSAyLjdsMy4xIDIwLjQgOC40LTk3LjljMC02IDQuOC0xMC42IDEwLjYtMTAuNi41IDAgMTAuNi0uMiAxMC42IDEyLjRsNC45IDY5LjEgNi42LTkyLjZjMC0xMC4xIDkuNS0xMC42IDEwLjItMTAuNi42IDAgMTAuNi43IDEwLjYgMTAuNmw1LjMgODAuNiA2LjItOTcuOWMuMS0xLjEtLjYtMTAuMyA5LjktMTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTEwMSAxMzIuNGM3LjggMCAxMy43IDYuMSAxMy43IDEzLjd2MTgyLjVjMCA3LjctNi4xIDEzLjctMTMuNyAxMy43SDIxNC4zYy03LjcgMC0xMy43LTYtMTMuNy0xMy43di01NGgtNTRjLTcuOCAwLTEzLjctNi0xMy43LTEzLjdWMTMxLjFjMC04LjIgNi42LTEyLjcgMTIuNC0xMy43aDEzNi40YzcuNyAwIDEzLjcgNiAxMy43IDEzLjd2NTRoNTR6TTE1OS45IDMwMC4zaDQwLjdWMTk4LjljMC03LjQgNS44LTEyLjYgMTItMTMuN2g1NS44di00MC4zSDE1OS45djE1NS40em0xNzYuMi04OC4xSDIyNy42djE1NS40aDEwOC41VjIxMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNaZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0tLjQgNjAuNWMtODEuOSAwLTEwMi41IDc3LjMtMTAyLjUgMTQyLjggMCA2NS41IDIwLjYgMTQyLjggMTAyLjUgMTQyLjhTMzUwLjUgMzIxLjUgMzUwLjUgMjU2YzAtNjUuNS0yMC42LTE0Mi44LTEwMi41LTE0Mi44em0wIDUzLjljMy4zIDAgNi40LjUgOS4yIDEuMiA1LjkgNS4xIDguOCAxMi4xIDMuMSAyMS45bC01NC41IDEwMC4yYy0xLjctMTIuNy0xLjktMjUuMS0xLjktMzQuNCAwLTI4LjggMi04OC45IDQ0LjEtODguOXptNDAuOCA0Ni4yYzIuOSAxNS40IDMuMyAzMS40IDMuMyA0Mi43IDAgMjguOS0yIDg4LjktNDQuMSA4OC45LTEzLjUgMC0zMi42LTcuNy0yMC4xLTI2LjRsNjAuOS0xMDUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0NS44MyAyMTQuODdsLTMzLjIyIDE3LjI4Yy05LjQzLTE5LjU4LTI1LjI0LTE5LjkzLTI3LjQ2LTE5LjkzLTIyLjEzIDAtMzMuMjIgMTQuNjEtMzMuMjIgNDMuODQgMCAyMy41NyA5LjIxIDQzLjg0IDMzLjIyIDQzLjg0IDE0LjQ3IDAgMjQuNjUtNy4wOSAzMC41Ny0yMS4yNmwzMC41NSAxNS41Yy02LjE3IDExLjUxLTI1LjY5IDM4Ljk4LTY1LjEgMzguOTgtMjIuNiAwLTczLjk2LTEwLjMyLTczLjk2LTc3LjA1IDAtNTguNjkgNDMtNzcuMDYgNzIuNjMtNzcuMDYgMzAuNzItLjAxIDUyLjcgMTEuOTUgNjUuOTkgMzUuODZ6bTE0My4wNSAwbC0zMi43OCAxNy4yOGMtOS41LTE5Ljc3LTI1LjcyLTE5LjkzLTI3LjktMTkuOTMtMjIuMTQgMC0zMy4yMiAxNC42MS0zMy4yMiA0My44NCAwIDIzLjU1IDkuMjMgNDMuODQgMzMuMjIgNDMuODQgMTQuNDUgMCAyNC42NS03LjA5IDMwLjU0LTIxLjI2bDMxIDE1LjVjLTIuMSAzLjc1LTIxLjM5IDM4Ljk4LTY1LjA5IDM4Ljk4LTIyLjY5IDAtNzMuOTYtOS44Ny03My45Ni03Ny4wNSAwLTU4LjY3IDQyLjk3LTc3LjA2IDcyLjYzLTc3LjA2IDMwLjcxLS4wMSA1Mi41OCAxMS45NSA2NS41NiAzNS44NnpNMjQ3LjU2IDguMDVDMTA0Ljc0IDguMDUgMCAxMjMuMTEgMCAyNTYuMDVjMCAxMzguNDkgMTEzLjYgMjQ4IDI0Ny41NiAyNDggMTI5LjkzIDAgMjQ4LjQ0LTEwMC44NyAyNDguNDQtMjQ4IDAtMTM3Ljg3LTEwNi42Mi0yNDgtMjQ4LjQ0LTI0OHptLjg3IDQ1MC44MWMtMTEyLjU0IDAtMjAzLjctOTMuMDQtMjAzLjctMjAyLjgxIDAtMTA1LjQyIDg1LjQzLTIwMy4yNyAyMDMuNzItMjAzLjI3IDExMi41MyAwIDIwMi44MiA4OS40NiAyMDIuODIgMjAzLjI2LS4wMSAxMjEuNjktOTkuNjggMjAyLjgyLTIwMi44NCAyMDIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyaXRpY2FsUm9sZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuODIgMGMuMjYuMTUgMjE2LjU3IDEyNC41MSAyMTcuMTIgMTI0LjcyIDMgMS4xOCAzLjcgMy40NiAzLjcgNi41NnEtLjExIDEyNS4xNyAwIDI1MC4zNmE1Ljg4IDUuODggMCAwIDEtMy4zOCA1Ljc4Yy0yMS4zNyAxMi0yMDcuODYgMTE4LjI5LTIxOC45MyAxMjQuNThoLTNDMTQyIDQ2Ni4zNCAzLjA4IDM4Ni41NiAyLjkzIDM4Ni40OGEzLjI5IDMuMjkgMCAwIDEtMS44OC0zLjI0YzAtLjg3IDAtMjI1Ljk0LS4wNS0yNTMuMWE1IDUgMCAwIDEgMi45My00LjkzQzI3LjE5IDExMi4xMSAyMTMuMiA2IDIyNC4wNyAwek0yMTUuNCAyMC40MmwtLjIyLS4xNlExMTguMDYgNzUuNTUgMjEgMTMwLjg3YzAgLjEyLjA4LjIzLjEzLjM1bDMwLjg2IDExLjY0Yy03LjcxIDYtOC4zMiA2LTEwLjY1IDUuMTMtLjEgMC0yNC4xNy05LjI4LTI2LjgtMTB2MjMwLjQzYy44OC0xLjQxIDY0LjA3LTExMC45MSA2NC4xMy0xMTEgMS42Mi0yLjgyIDMtMS45MiA5LjEyLTEuNTIgMS40LjA5IDEuNDguMjIuNzggMS40Mi00MS4xOSA3MS4zMy0zNi40IDYzLTY3LjQ4IDExNi45NC0uODEgMS40LS42MSAxLjEzIDEuMjUgMS4xM2gxODYuNWMxLjQ0IDAgMS42OS0uMjMgMS43LTEuNjR2LTguODhjMC0xLjM0IDIuMzYtLjgxLTE4LjM3LTEtNy40Ni0uMDctMTQuMTQtMy4yMi0yMS4zOC0xMi43LTcuMzgtOS42Ni0xNC42Mi0xOS40My0yMS44NS0yOS4yMS0yLjI4LTMuMDgtMy40NS0yLjM4LTE2Ljc2LTIuMzgtMS43NSAwLTEuNzggMC0xLjc2IDEuODIuMjkgMjYuMjEuMTUgMjUuMjcgMSAzMi42Ni41MiA0LjM3IDIuMTYgNC4yIDkuNjkgNC44MSAzLjE0LjI2IDMuODggNC4wOC41MiA0LjkyLTEuNTcuMzktMzEuNi41MS0zMy42Ny0uMWEyLjQyIDIuNDIgMCAwIDEgLjMtNC43M2MzLjI5LS43NiA2LjE2LjgxIDYuNjYtNC40NCAxLjMtMTMuNjYgMS4xNy05IDEuMS03OS40MiAwLTEwLjgyLS4zNS0xMi41OC01LjM2LTEzLjU1LTEuMjItLjI0LTMuNTQtLjE2LTQuNjktLjU1LTIuODgtMS0yLTQuODQgMS43Ny00Ljg1IDMzLjY3IDAgNDYuMDgtMS4wNyA1Ni4wNiA0Ljg2IDcuNzQgNC42MSAxMiAxMS40OCAxMi41MSAyMC40Ljg4IDE0LjU5LTYuNTEgMjIuMzUtMTUgMzIuNTlhMS40NiAxLjQ2IDAgMCAwIDAgMi4yMmMyLjYgMy4yNSA1IDYuNjMgNy43MSA5LjgzIDI3LjU2IDMzLjIzIDI0LjExIDMwLjU0IDQxLjI4IDMzLjA2Ljg5LjEzIDEtLjQyIDEtMS4xNXYtMTFjMC0xIC4zMi0xLjQzIDEuNDEtMS4yNmE3Mi4zNyA3Mi4zNyAwIDAgMCAyMy41OC0uM2MxLjA4LS4xNSAxLjUuMiAxLjQ4IDEuMzMgMCAuMTEuODggMjYuNjkuODcgMjYuOC0uMDUgMS41Mi42NyAxLjYyIDEuODkgMS42MmgxODYuNzFRMzg2LjUxIDMwNC42IDM0NiAyMzQuMzNjMi4yNi0uNjYtLjQgMCA2LjY5LTEuMzkgMi0uMzkgMi4wNS0uNDEgMy4xMSAxLjQ0IDcuMzEgMTIuNjQgNzcuMzEgMTM0IDc3LjM3IDEzNC4wNlYxMzhjLTEuNzIuNS0xMDMuMyAzOC43Mi0xMDUuNzYgMzkuNjgtMS4wOC40Mi0xLjU1LjItMS45MS0uODgtLjYzLTEuOS0xLjM0LTMuNzYtMi4wOS01LjYyLS4zMi0uNzktLjA5LTEuMTMuNjUtMS4zOS4xIDAgOTUuNTMtMzUuODUgMTAzLTM4Ljc3LTY1LjQyLTM3LjU3LTEzMC41Ni03NS0xOTYtMTEyLjZsODYuODIgMTUwLjM5LS4yOC4zM2MtOS41Ny0uOS0xMC40Ni0xLjYtMTEuOC0zLjk0LTEtMS42OS03My41LTEyNy43MS04Mi0xNDIuMTYtOS4xIDE0LjY3LTgzLjU2IDE0Ni4yMS04NS4zNyAxNDYuMzItMi45My4xNy01Ljg4LjA4LTkuMjUuMDhxNDMuMjUtNzQuNzQgODYuMTgtMTQ5em01MS45MyAxMjkuOTJhMzcuNjggMzcuNjggMCAwIDAgNS41NC0uODVjMS42OS0uMyAyLjUzLjIgMi42IDEuOTIgMCAuMTEuMDcgMTkuMDYtLjg2IDIwLjQ1cy0xLjg4IDEuMjItMi42LS4xOWMtNS05LjY5IDYuMjItOS42Ni0zOS4xMi0xMi0uNyAwLTEgLjIzLTEgLjkzIDAgLjEzIDMuNzIgMTIyIDMuNzMgMTIyLjExIDAgLjg5LjUyIDEuMiAxLjIxIDEuNTFhODMuOTIgODMuOTIgMCAwIDEgOC43IDQuMDVjNy4zMSA0LjMzIDExLjM4IDEwLjg0IDEyLjQxIDE5LjMxIDEuNDQgMTEuOC0yLjc3IDM1Ljc3LTMyLjIxIDM3LjE0LTIuNzUuMTMtMjguMjYgMS4wOC0zNC4xNC0yMy4yNS00LjY2LTE5LjI2IDguMjYtMzIuNyAxOS44OS0zNi40YTIuNDUgMi40NSAwIDAgMCAyLTIuNjZjLjEtNS42MyAzLTEwNy4xIDMuNzEtMTIxLjM1LjA1LTEuMDgtLjYyLTEuMTYtMS4zNS0xLjE1LTMyLjM1LjUyLTM2Ljc1LS4zNC00MC4yMiA4LjUyLTIuNDIgNi4xOC00LjE0IDEuMzItMy45NS4yM3ExLjU5LTkgMy4zMS0xOGMuNC0yLjExIDEuNDMtMi42MSAzLjQzLTEuODYgNS41OSAyLjExIDYuNzIgMS43IDM3LjI1IDEuOTIgMS43MyAwIDEuNzgtLjA4IDEuODItMS44NS42OC0yNy40OS41OC0yMi41OSAxLTI5LjU1YTIuNjkgMi42OSAwIDAgMC0xLjYzLTIuOGMtNS42LTIuOTEtOC43NS03LjU1LTguOS0xMy44Ny0uMzUtMTQuODEgMTcuNzItMjEuNjcgMjcuMzgtMTEuNTEgNi44NCA3LjE5IDUuOCAxOC45MS0yLjQ1IDI0LjE1YTQuMzUgNC4zNSAwIDAgMC0yLjIyIDQuMzRjMCAuNTktLjExLTQuMzEgMSAzMC4wNSAwIC45LjQzIDEuMTIgMS4yNCAxLjExLjEgMCAyMy0uMDkgMzQuNDctLjM3ek02OC4yNyAxNDEuN2MxOS44NC00LjUxIDMyLjY4LS41NiA1Mi40OSAxLjY5IDIuNzYuMzEgMy43NCAxLjIyIDMuNjIgNC0uMjEgNS0xLjE2IDIyLjMzLTEuMjQgMjMuMTVhMi42NSAyLjY1IDAgMCAxLTEuNjMgMi4zNGMtNC4wNiAxLjctMy42MS00LjQ1LTQtNy4yOS0zLjEzLTIyLjQzLTczLjg3LTMyLjctNzQuNjMgMjUuNC0uMzEgMjMuOTIgMTcgNTMuNjMgNTQuMDggNTAuODggMjcuMjQtMiAxOS0yMC4xOSAyNC44NC0yMC40N2EyLjcyIDIuNzIgMCAwIDEgMyAzLjM2Yy0xLjgzIDEwLjg1LTMuNDIgMTguOTUtMy40NSAxOS4xNS0xLjU0IDkuMTctODYuNyAyMi4wOS05My4zNS00Mi4wNi0yLjcxLTI1Ljg1IDEwLjQ0LTUzLjM3IDQwLjI3LTYwLjE1em04MCA4Ny42N2gtMTkuNDlhMi41NyAyLjU3IDAgMCAxLTIuNjYtMS43OWMyLjM4LTMuNzUgNS44OS45MiA1Ljg2LTYuMTQtLjA4LTI1Ljc1LjIxLTM4IC4yMy00MC4xIDAtMy40Mi0uNTMtNC42NS0zLjMyLTQuOTQtNy0uNzItMy4xMS0zLjM3LTEuMTEtMy4zOCAxMS44NC0uMSAyMi42Mi0uMTggMzAuMDUuNzIgOC43NyAxLjA3IDE2LjcxIDEyLjYzIDcuOTMgMjIuNjItMiAyLjI1LTQgNC40Mi02LjE0IDYuNzMuOTUgMS4xNSA2LjkgOC44MiAxNy4yOCAxOS42OCAyLjY2IDIuNzggNi4xNSAzLjUxIDkuODggMy4xM2EyLjIxIDIuMjEgMCAwIDAgMi4yMy0yLjEyYy4zLTMuNDIuMjYgNC43My40NS00MC41OCAwLTUuNjUtLjM0LTYuNTgtMy4yMy02LjgzLTMuOTUtLjM1LTQtMi4yNi0uNjktMy4zN2wxOS4wOS0uMDljLjMyIDAgNC40OS41MyAxIDMuMzggMCAuMDUtLjE2IDAtLjI0IDAtMy42MS4yNi0zLjk0IDEtNCA0LjYyLS4yNyA0My45My4wNyA0MC4yMy40MSA0Mi44Mi4xMS44NC4yNyAyLjIzIDUuMSAyLjE0IDIuNDkgMCAzLjg2IDMuMzcgMCAzLjQtMTAuMzcuMDgtMjAuNzQgMC0zMS4xMS4wNy0xMC42NyAwLTEzLjQ3LTYuMi0yNC4yMS0yMC44Mi0xLjYtMi4xOC04LjMxLTIuMzYtOC4yLS4zNy44OCAxNi40NyAwIDE3Ljc4IDQgMTcuNjcgNC43NS0uMSA0LjczIDMuNTcuODMgMy41NXptMjc1LTEwLjE1Yy0xLjIxIDcuMTMuMTcgMTAuMzgtNS4zIDEwLjM0LTYxLjU1LS40Mi00Ny44Mi0uMjItNTAuNzItLjMxYTE4LjQgMTguNCAwIDAgMS0zLjYzLS43M2MtMi41My0uNiAxLjQ4LTEuMjMtLjM4LTUuNi0xLjQzLTMuMzctMi43OC02Ljc4LTQuMTEtMTAuMTlhMS45NCAxLjk0IDAgMCAwLTItMS40NCAxMzggMTM4IDAgMCAwLTE0LjU4LjA3IDIuMjMgMi4yMyAwIDAgMC0xLjYyIDEuMDZjLTEuNTggMy42Mi0zLjA3IDcuMjktNC41MSAxMS0xLjI3IDMuMjMgNy44NiAxLjMyIDEyLjE5IDIuMTYgMyAuNTcgNC41MyAzLjcyLjY2IDMuNzNIMzIyLjljLTIuOTIgMC0zLjA5LTMuMTUtLjc0LTMuMjFhNi4zIDYuMyAwIDAgMCA1LjkyLTMuNDdjMS41LTMgMi44LTYgNC4xMS05LjA5IDE4LjE4LTQyLjE0IDE3LjA2LTQwLjE3IDE4LjQyLTQxLjYxYTEuODMgMS44MyAwIDAgMSAzIDBjMi45MyAzLjM0IDE4LjQgNDQuNzEgMjMuNjIgNTEuOTIgMiAyLjcgNS43NCAyIDYuMzYgMiAzLjYxLjEzIDQtMS4xMSA0LjEzLTQuMjkuMDktMS44Ny4wOCAxLjE3LjA3LTQxLjI0IDAtNC40Ni0yLjM2LTMuNzQtNS41NS00LjI3LS4yNiAwLTIuNTYtLjYzLS4wOC0zLjA2LjIxLS4yLS44OS0uMjQgMjEuNy0uMTUgMi4zMiAwIDUuMzIgMi43NS0xLjIxIDMuNDVhMi41NiAyLjU2IDAgMCAwLTIuNjYgMi44M2MtLjA3IDEuNjMtLjE5IDM4Ljg5LjI5IDQxLjIxYTMuMDYgMy4wNiAwIDAgMCAzLjIzIDIuNDNjMTMuMjUuNDMgMTQuOTIuNDQgMTYtMy40MSAxLjY3LTUuNzggNC4xMy0yLjUyIDMuNzMtLjE5em0tMTA0LjcyIDY0LjM3Yy00LjI0IDAtNC40Mi0zLjM5LS42MS0zLjQxIDM1LjkxLS4xNiAyOC4xMS4zOCAzNy4xOS0uNjUgMS42OC0uMTkgMi4zOC4yNCAyLjI1IDEuODktLjI2IDMuMzktLjY0IDYuNzgtMSAxMC4xNi0uMjUgMi4xNi0zLjIgMi42MS0zLjQtLjE1LS4zOC01LjMxLTIuMTUtNC40NS0xNS42My01LjA4LTEuNTgtLjA3LTEuNjQgMC0xLjY0IDEuNTJWMzA0YzAgMS42NSAwIDEuNiAxLjYyIDEuNDcgMy4xMi0uMjUgMTAuMzEuMzQgMTUuNjktMS41Mi40Ny0uMTYgMy4zLTEuNzkgMy4wNyAxLjc2IDAgLjIxLS43NiAxMC4zNS0xLjE4IDExLjM5LS41MyAxLjI5LTEuODggMS41MS0yLjU4LjMyLTEuMTctMiAwLTUuMDgtMy43MS01LjMtMTUuNDItLjktMTIuOTEtMi41NS0xMi45MSA2IDAgMTIuMjUtLjc2IDE2LjExIDMuODkgMTYuMjQgMTYuNjQuNDggMTQuNCAwIDE2LjQzLTUuNzEuODQtMi4zNyAzLjUtMS43NyAzLjE4LjU4LS40NCAzLjIxLS44NSA2LjQzLTEuMjMgOS42NCAwIC4zNi0uMTYgMi40LTQuNjYgMi4zOS0zNy4xNi0uMDgtMzQuNTQtLjE5LTM1LjIxLS4zMS0yLjcyLS41MS0yLjItMyAuMjItMy40NSAxLjEtLjE5IDQgLjU0IDQuMTYtMi41NiAyLjQ0LTU2LjIyLS4wNy01MS4zNC0zLjkxLTUxLjMzem0tLjQxLTEwOS41MmMyLjQ2LjYxIDMuMTMgMS43NiAyLjk1IDQuNjUtLjMzIDUuMy0uMzQgOS0uNTUgOS42OS0uNjYgMi4yMy0zLjE1IDIuMTItMy4zNC0uMjctLjM4LTQuODEtMy4wNS03LjgyLTcuNTctOS4xNS0yNi4yOC03LjczLTMyLjgxIDE1LjQ2LTI3LjE3IDMwLjIyIDUuODggMTUuNDEgMjIgMTUuOTIgMjguODYgMTMuNzggNS45Mi0xLjg1IDUuODgtNi41IDYuOTEtNy41OCAxLjIzLTEuMyAyLjI1LTEuODQgMy4xMiAxLjEgMCAuMS41NyAxMS44OS02IDEyLjc1LTEuNi4yMS0xOS4zOCAzLjY5LTMyLjY4LTMuMzktMjEtMTEuMTktMTYuNzQtMzUuNDctNi44OC00NS4zMyAxNC0xNC4wNiAzOS45MS03LjA2IDQyLjMyLTYuNDd6TTI4OS44IDI4MC4xNGMzLjI4IDAgMy42NiAzIC4xNiAzLjQzLTIuNjEuMzItNS0uNDItNSA1LjQ2IDAgMi0uMTkgMjkuMDUuNCA0MS40NS4xMSAyLjI5IDEuMTUgMy41MiAzLjQ0IDMuNjUgMjIgMS4yMSAxNC45NS0xLjY1IDE4Ljc5LTYuMzQgMS44My0yLjI0IDIuNzYuODQgMi43NiAxLjA4LjM1IDEzLjYyLTQgMTIuMzktNS4xOSAxMi40bC0zOC4xNi0uMTljLTEuOTMtLjIzLTIuMDYtMy0uNDItMy4zOCAyLS40OCA0Ljk0LjQgNS4xMy0yLjggMS0xNS44Ny41Ny00NC42NS4zNC00Ny44MS0uMjctMy43Ny0yLjgtMy4yNy01LjY4LTMuNzEtMi40Ny0uMzgtMi0zLjIyLjM0LTMuMjIgMS40NS0uMDIgMTcuOTctLjAzIDIzLjA5LS4wMnptLTMxLjYzLTU3Ljc5Yy4wNyA0LjA4IDIuODYgMy40NiA2IDMuNTggMi42MS4xIDIuNTMgMy40MS0uMDcgMy40My02LjQ4IDAtMTMuNyAwLTIxLjYxLS4wNi0zLjg0IDAtMy4zOC0zLjM1IDAtMy4zNyA0LjQ5IDAgMy4yNCAxLjYxIDMuNDEtNDUuNTQgMC01LjA4LTMuMjctMy41NC00LjcyLTQuMjMtMi41OC0xLjIzLTEuMzYtMy4wOS40MS0zLjE1IDEuMjkgMCAyMC4xOS0uNDEgMjEuMTcuMjFzMS44NyAxLjY1LS40MiAyLjg2Yy0xIC41Mi0zLjg2LS4yOC00LjE1IDIuNDcgMCAuMjEtLjgyIDEuNjMtLjA3IDQzLjh6bS0zNi45MSAyNzQuMjdhMi45MyAyLjkzIDAgMCAwIDMuMjYgMGMxNy05Ljc5IDE4Mi0xMDMuNTcgMTk3LjQyLTExMi41MS0uMTQtLjQzIDExLjI2LS4xOC0xODEuNTItLjI3LTEuMjIgMC0xLjU3LjM3LTEuNTMgMS41NiAwIC4xIDEuMjUgNDQuNTEgMS4yMiA1MC4zOGEyOC4zMyAyOC4zMyAwIDAgMS0xLjM2IDcuNzFjLS41NSAxLjgzLjM4LS41LTEzLjUgMzIuMjMtLjczIDEuNzItMSAyLjIxLTItLjA4LTQuMTktMTAuMzQtOC4yOC0yMC43Mi0xMi41Ny0zMWEyMy42IDIzLjYgMCAwIDEtMi0xMC43OWMuMTYtMi40Ni44LTE2LjEyIDEuNTEtNDggMC0xLjk1IDAtMi0yLTJoLTE4M2MyLjU4IDEuNjMgMTc4LjMyIDEwMi41NyAxOTYgMTEyLjc2em0tOTAuOS0xODguNzVjMCAyLjQuMzYgMi43OSAyLjc2IDMgMTEuNTQgMS4xNyAyMSAzLjc0IDI1LjY0LTcuMzIgNi0xNC40NiAyLjY2LTM0LjQxLTEyLjQ4LTM4Ljg0LTItLjU5LTE2LTIuNzYtMTUuOTQgMS41MS4wNSA4LjA0LjAxIDExLjYxLjAyIDQxLjY1em0xMDUuNzUtMTUuMDVjMCAyLjEzIDEuMDcgMzguNjggMS4wOSAzOS4xMy4zNCA5Ljk0LTI1LjU4IDUuNzctMjUuMjMtMi41OS4wOC0yIDEuMzctMzcuNDIgMS4xLTM5LjQzLTE0LjEgNy40NC0xNC40MiA0MC4yMSA2LjQ0IDQ4LjhhMTcuOSAxNy45IDAgMCAwIDIyLjM5LTcuMDdjNC45MS03Ljc2IDYuODQtMjkuNDctNS40My0zOWEyLjUzIDIuNTMgMCAwIDEtLjM2LjEyem0tMTIuMjgtMTk4Yy05LjgzIDAtOS43MyAxNC43NS0uMDcgMTQuODdzMTAuMS0xNC44OC4wNy0xNC45MXptLTgwLjE1IDEwMy44M2MwIDEuOC40MSAyLjQgMi4xNyAyLjU4IDEzLjYyIDEuMzkgMTIuNTEtMTEgMTIuMTYtMTMuMzYtMS42OS0xMS4yMi0xNC4zOC0xMC4yLTE0LjM1LTcuODEuMDUgNC41LS4wMyAxMy42OC4wMiAxOC41OXptMjEyLjMyIDYuNGwtNi4xLTE1Ljg0Yy0yLjE2IDUuNDgtNC4xNiAxMC41Ny02LjIzIDE1Ljg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDc3MzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJsMzQuOSAzOTUuOEwxOTIgNDgwbDE1Ny4xLTUyLjJMMzg0IDMySDB6bTMxMy4xIDgwbC00LjggNDcuM0wxOTMgMjA4LjZsLS4zLjFoMTExLjVsLTEyLjggMTQ2LjYtOTguMiAyOC43LTk4LjgtMjkuMi02LjQtNzMuOWg0OC45bDMuMiAzOC4zIDUyLjYgMTMuMyA1NC43LTE1LjQgMy43LTYxLjYtMTY2LjMtLjV2LS4xbC0uMi4xLTMuNi00Ni4zTDE5My4xIDE2Mmw2LjUtMi43SDc2LjdMNzAuOSAxMTJoMjQyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNzczMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDMybC02NCAzNjgtMjIzLjMgODBMMCA0MDBsMTkuNi05NC44aDgybC04IDQwLjZMMjEwIDM5MC4ybDEzNC4xLTQ0LjQgMTguOC05Ny4xSDI5LjVsMTYtODJoMzMzLjdsMTAuNS01Mi43SDU2LjNsMTYuMy04Mkg0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1dHRsZWZpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDMwNS41Yy0xNy41IDMxLjYtNTcuNCA1NC41LTk2IDU0LjUtNTYuNiAwLTEwNC00Ny40LTEwNC0xMDRzNDcuNC0xMDQgMTA0LTEwNGMzOC42IDAgNzguNSAyMi45IDk2IDU0LjUgMTMuNy01MC45IDQxLjctOTMuMyA4Ny0xMTcuOEMzODUuNyAzOS4xIDMyMC41IDggMjQ4IDggMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4YzcyLjUgMCAxMzcuNy0zMS4xIDE4My04MC43LTQ1LjMtMjQuNS03My4zLTY2LjktODctMTE3Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURBbmREQmV5b25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy44IDI0MS41YzEzLjggMCAyMS0xMC4xIDI0LjgtMTcuOS0xLTEuMS01LTQuMi03LjQtNi42LTIuNCA0LjMtOC4yIDEwLjctMTMuOSAxMC43LTEwLjIgMC0xNS40LTE0LjctMy4yLTI2LjYtLjUtLjItNC4zLTEuOC04IDIuNCAwLTMgMS01LjEgMi4xLTYuNi0zLjUgMS4zLTkuOCA1LjYtMTEuNCA3LjkuMi01LjggMS42LTcuNS42LTlsLS4yLS4ycy04LjUgNS42LTkuMyAxNC43YzAgMCAxLjEtMS42IDIuMS0xLjkuNi0uMyAxLjMgMCAuNiAxLjktLjIuNi01LjggMTUuNyA1LjEgMjYtLjYtMS42LTEuOS03LjYgMi40LTEuOS0uMy4xIDUuOCA3LjEgMTUuNyA3LjF6bTUyLjQtMjEuMWMwLTQtNC45LTQuNC01LjYtNC41IDIgMy45LjkgNy41LjIgOSAyLjUtLjQgNS40LTEuNiA1LjQtNC41em0xMC4zIDUuMmMwLTYuNC02LjItMTEuNC0xMy41LTEwLjcgOCAxLjMgNS42IDEzLjgtNSAxMS40IDMuNy0yLjYgMy4yLTkuOS0xLjMtMTIuNSAxLjQgNC4yLTMgOC4yLTcuNCA0LjYtMi40LTEuOS04LTYuNi0xMC42LTguNi0yLjQtMi4xLTUuNS0xLTYuNi0xLjgtMS4zLTEuMS0uNS0zLjgtMi4yLTUtMS42LS44LTMtLjMtNC44LTEtMS42LS42LTIuNy0xLjktMi42LTMuNS0yLjUgNC40IDMuNCA2LjMgNC41IDguNSAxIDEuOS0uOCA0LjggNCA4LjUgMTQuOCAxMS42IDkuMSA4IDEwLjQgMTguMS42IDQuMyA0LjIgNi43IDYuNCA3LjQtMi4xLTEuOS0yLjktNi40IDAtOS4zIDAgMTMuOSAxOS4yIDEzLjMgMjMuMSA2LjQtMi40IDEuMS03LS4yLTktMS45IDcuNyAxIDE0LjItNC4xIDE0LjYtMTAuNnptLTM5LjQtMTguNGMyIC44IDEuNi43IDYuNCA0LjUgMTAuMi0yNC41IDIxLjctMTUuNyAyMi0xNS41IDIuMi0xLjkgOS44LTMuOCAxMy44LTIuNy0yLjQtMi43LTcuNS02LjItMTMuMy02LjItNC43IDAtNy40IDIuMi04IDEuMy0uOC0xLjQgMy4yLTMuNCAzLjItMy40LTUuNC4yLTkuNiA2LjctMTEuMiA1LjktMS4xLS41IDEuNC0zLjcgMS40LTMuNy01LjEgMi45LTkuMyA5LjEtMTAuMiAxMyA0LjYtNS44IDEzLjgtOS44IDE5LjctOS0xMC41LjUtMTkuNSA5LjctMjMuOCAxNS44em0yNDIuNSA1MS45Yy0yMC43IDAtNDAgMS4zLTUwLjMgMi4xbDcuNCA4LjJ2NzcuMmwtNy40IDguMmMxMC40LjggMzAuOSAyLjEgNTEuNiAyLjEgNDIuMSAwIDU5LjEtMjAuNyA1OS4xLTQ4LjkgMC0yOS4zLTIzLjItNDguOS02MC40LTQ4Ljl6bS0xNS4xIDc1LjZ2LTUzLjNjMzAuMS0zLjMgNDYuOCAzLjggNDYuOCAyNi4zIDAgMjUuNi0yMS40IDMwLjItNDYuOCAyN3pNMzAxLjYgMTgxYy0xLTMuNC0uMi02LjkgMS4xLTkuNCAxIDMgMi42IDYuNCA3LjUgOS0uNS0yLjQtLjItNS42LjUtOC0xLjQtNS40IDIuMS05LjkgNi40LTkuOSA2LjkgMCA4LjUgOC44IDQuNyAxNC40IDIuMSAzLjIgNS41IDUuNiA3LjcgNy44IDMuMi0zLjcgNS41LTkuNSA1LjUtMTMuOCAwLTguMi01LjUtMTUuOS0xNi43LTE2LjUtMjAtLjktMjAuMiAxNi42LTIwIDE4LjkuNSA1LjIgMy40IDcuOCAzLjMgNy41em0tLjQgNmMtLjUgMS44LTcgMy43LTEwLjIgNi45IDQuOC0xIDctLjIgNy44IDEuOC41IDEuNC0uMiAzLjQtLjUgNS42IDEuNi0xLjggNy01LjUgMTEtNi4yLTEtLjMtMy40LS44LTQuMy0uOCAyLjktMy40IDkuMy00LjUgMTIuOC0zLjctMi4yLS4yLTYuNyAxLjEtOC41IDIuNiAxLjYuMyAzIC42IDQuMyAxLjEtMi4xLjgtNC44IDMuNC01LjggNi4xIDctNSAxMy4xIDUuMiA3IDguMi44LjIgMi43IDAgMy41LS41LS4zIDEuMS0xLjkgMy0zIDMuNCAyLjkgMCA3LTEuOSA4LjItNC42IDAgMC0xLjguNi0yLjYtLjJzLjMtNC4zLjMtNC4zYy0yLjMgMi45LTMuNC0xLjMtMS4zLTQuMi0xLS4zLTMuNS0uNi00LjYtLjUgMy4yLTEuMSAxMC40LTEuOCAxMS4yLS4zLjYgMS4xLTEgMy40LTEgMy40IDQtLjUgOC4zIDEuMSA2LjcgNS4xIDIuOS0xLjQgNS41LTUuOSA0LjgtMTAuNC0uMyAxLTEuNiAyLjQtMi45IDIuNy4yLTEuNC0xLTIuMi0xLjktMi42IDEuNy05LjYtMTQuNi0xNC4yLTE0LjEtMjMuOS0xIDEuMy0xLjggNS0uOCA3LjEgMi43IDMuMiA4LjcgNi43IDEwLjEgMTIuMi0yLjYtNi40LTE1LjEtMTEuNC0xNC42LTIwLjItMS42IDEuNi0yLjYgNy44LTEuMyAxMSAyLjQgMS40IDQuNSAzLjggNC44IDYuMS0yLjItNS4xLTExLjQtNi4xLTEzLjktMTIuMi0uNiAyLjItLjMgNSAxIDYuNyAwIDAtMi4yLS44LTctLjYgMS43LjYgNS4xIDMuNSA0LjggNS4yem0yNS45IDcuNGMtMi43IDAtMy41LTIuMS00LjItNC4zIDMuMyAxLjMgNC4yIDQuMyA0LjIgNC4zem0zOC45IDMuN2wtMS0uNmMtMS4xLTEtMi45LTEuNC00LjctMS40LTIuOSAwLTUuOCAxLjMtNy41IDMuNC0uOC44LTEuNCAxLjgtMi4xIDIuNnYxNS43YzMuNSAyLjYgNy4xLTIuOSAzLTcuMiAxLjUuMyA0LjYgMi43IDUuMSAzLjIgMCAwIDIuNi0uNSA1LS41IDIuMSAwIDMuOS4zIDUuNiAxLjFWMTk2Yy0xLjEuNS0yLjIgMS0yLjcgMS40ek03OS45IDMwNS45YzE3LjItNC42IDE2LjItMTggMTYuMi0xOS45IDAtMjAuNi0yNC4xLTI1LTM3LTI1SDNsOC4zIDguNnYyOS41SDBsMTEuNCAxNC42VjM0NkwzIDM1NC42YzYxLjcgMCA3My44IDEuNSA4Ni40LTUuOSA2LjctNCA5LjktOS44IDkuOS0xNy42IDAtNS4xIDIuNi0xOC44LTE5LjQtMjUuMnptLTQxLjMtMjcuNWMyMCAwIDI5LjYtLjggMjkuNiA5LjF2M2MwIDEyLjEtMTkgOC44LTI5LjYgOC44em0wIDU5LjJWMzE1YzEyLjIgMCAzMi43LTIuMyAzMi43IDguOHY0LjVoLjJjMCAxMS4yLTEyLjUgOS4zLTMyLjkgOS4zem0xMDEuMi0xOS4zbDIzLjEuMnYtLjJsMTQuMS0yMS4yaC0zNy4ydi0xNC45aDUyLjRsLTE0LjEtMjF2LS4ybC03My41LjIgNy40IDguMnY3Ny4xbC03LjQgOC4yaDgxLjJsMTQuMS0yMS4yLTYwLjEuMnptMjE0LjctNjAuMWMtNzMuOSAwLTc3LjUgOTkuMy0uMyA5OS4zIDc3LjkgMCA3NC4xLTk5LjMuMy05OS4zem0tLjMgNzcuNWMtMzcuNCAwLTM2LjktNTUuMy4yLTU1LjMgMzYuOC4xIDM4LjggNTUuMy0uMiA1NS4zem0tOTEuMy04LjNsNDQuMS02Ni4yaC00MS43bDYuMSA3LjItMjAuNSAzNy4yaC0uM2wtMjEtMzcuMiA2LjQtNy4yaC00NC45bDQ0LjEgNjUuOC4yIDE5LjQtNy43IDguMmg0Mi42bC03LjItOC4yem0tMjguNC0xNTEuM2MxLjYgMS4zIDIuOSAyLjQgMi45IDYuNnYzOC44YzAgNC4yLS44IDUuMy0yLjcgNi40LS4xLjEtNy41IDQuNS03LjkgNC42aDM1LjFjMTAgMCAxNy40LTEuNSAyNi04LjYtLjYtNSAuMi05LjUuOC0xMiAwLS4yLTEuOCAxLjQtMi43IDMuNSAwLTUuNyAxLjYtMTUuNCA5LjYtMjAuNS0uMSAwLTMuNy0uOC05IDEuMSAyLTMuMSAxMC03LjkgMTAuNC03LjktOC4yLTI2LTM4LTIyLjktMzIuMi0yMi45LTMwLjkgMC0zMi42LjMtMzkuOS00IC4xLjguNSA4LjIgOS42IDE0Ljl6bTIxLjUgNS41YzQuNiAwIDIzLjEtMy4zIDIzLjEgMTcuMyAwIDIwLjctMTguNCAxNy4zLTIzLjEgMTcuM3ptMjI4LjkgNzkuNmw3IDguM1YzMTJoLS4zYy01LjQtMTQuNC00Mi4zLTQxLjUtNDUuMi01MC45aC0zMS42bDcuNCA4LjV2NzYuOWwtNy4yIDguM2gzOWwtNy40LTguMnYtNDcuNGguM2MzLjcgMTAuNiA0NC41IDQyLjkgNDguNSA1NS42aDIxLjN2LTg1LjJsNy40LTguM3ptLTEwNi43LTk2LjFjLTMyLjIgMC0zMi44LjItMzkuOS00IC4xLjcuNSA4LjMgOS42IDE0LjkgMy4xIDIgMi45IDQuMyAyLjkgOS41IDEuOC0xLjEgMy44LTIuMiA2LjEtMy0xLjEgMS4xLTIuNyAyLjctMy41IDQuNSAxLTEuMSA3LjUtNS4xIDE0LjYtMy41LTEuNi4zLTQgMS4xLTYuMSAyLjkuMSAwIDIuMS0xLjEgNy41LS4zdi00LjNjNC43IDAgMjMuMS0zLjQgMjMuMSAxNy4zIDAgMjAuNS0xOC41IDE3LjMtMTkuNyAxNy4zIDUuNyA0LjQgNS44IDEyIDIuMiAxNi4zaC4zYzMzLjQgMCAzNi43LTI3LjMgMzYuNy0zNCAwLTMuOC0xLjEtMzItMzMuOC0zMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEQW5kRCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Mi41IDk4LjljLS42LTE3LjIgMi0zMy44IDEyLjctNDguMi4zIDcuNCAxLjIgMTQuNSA0LjIgMjEuNiA1LjktMjcuNSAxOS43LTQ5LjMgNDIuMy02NS41LTEuOSA1LjktMy41IDExLjgtMyAxNy43IDguNy03LjQgMTguOC0xNy44IDQ0LjQtMjIuNyAxNC43LTIuOCAyOS43LTIgNDIuMSAxIDM4LjUgOS4zIDYxIDM0LjMgNjkuNyA3Mi4zIDUuMyAyMy4xLjcgNDUtOC4zIDY2LjQtNS4yIDEyLjQtMTIgMjQuNC0yMC43IDM1LjEtMi0xLjktMy45LTMuOC01LjgtNS42LTQyLjgtNDAuOC0yNi44LTI1LjItMzcuNC0zNy40LTEuMS0xLjItMS0yLjItLjEtMy42IDguMy0xMy41IDExLjgtMjguMiAxMC00NC0xLjEtOS44LTQuMy0xOC45LTExLjMtMjYuMi0xNC41LTE1LjMtMzkuMi0xNS01My41LjYtMTEuNCAxMi41LTE0LjEgMjcuNC0xMC45IDQzLjYuMiAxLjMuNCAyLjcgMCAzLjktMy40IDEzLjctNC42IDI3LjYtMi41IDQxLjYuMS41LjEgMS4xLjEgMS42IDAgLjMtLjEuNS0uMiAxLjEtMjEuOC0xMS0zNi0yOC4zLTQzLjItNTIuMi04LjMgMTcuOC0xMS4xIDM1LjUtNi42IDU0LjEtMTUuNi0xNS4yLTIxLjMtMzQuMy0yMi01NS4yem00NjkuNiAxMjMuMmMtMTEuNi0xMS42LTI1LTIwLjQtNDAuMS0yNi42LTEyLjgtNS4yLTI2LTcuOS0zOS45LTcuMS0xMCAuNi0xOS42IDMuMS0yOSA2LjQtMi41LjktNS4xIDEuNi03LjcgMi4yLTQuOSAxLjItNy4zLTMuMS00LjctNi44IDMuMi00LjYgMy40LTQuMiAxNS0xMiAuNi0uNCAxLjItLjggMi4yLTEuNWgtMi41Yy0uNiAwLTEuMi4yLTEuOS4zLTE5LjMgMy4zLTMwLjcgMTUuNS00OC45IDI5LjYtMTAuNCA4LjEtMTMuOCAzLjgtMTItLjUgMS40LTMuNSAzLjMtNi43IDUuMS0xMCAxLTEuOCAyLjMtMy40IDMuNS01LjEtLjItLjItLjUtLjMtLjctLjUtMjcgMTguMy00Ni43IDQyLjQtNTcuNyA3My4zLjMuMy43LjYgMSAuOS4zLS42LjUtMS4yLjktMS43IDEwLjQtMTIuMSAyMi44LTIxLjggMzYuNi0yOS44IDE4LjItMTAuNiAzNy41LTE4LjMgNTguNy0yMC4yIDQuMy0uNCA4LjctLjEgMTMuMS0uMS0xLjguNy0zLjUuOS01LjMgMS4xLTE4LjUgMi40LTM1LjUgOS01MS41IDE4LjUtMzAuMiAxNy45LTU0LjUgNDIuMi03NS4xIDcwLjQtLjMuNC0uNC45LS43IDEuMyAxNC41IDUuMyAyNCAxNy4zIDM2LjEgMjUuNi4yLS4xLjMtLjIuNC0uNGwxLjItMi43YzEyLjItMjYuOSAyNy01Mi4zIDQ2LjctNzQuNSAxNi43LTE4LjggMzgtMjUuMyA2Mi41LTIwIDUuOSAxLjMgMTEuNCA0LjQgMTcuMiA2LjggMi4zLTEuNCA1LjEtMy4yIDgtNC43IDguNC00LjMgMTcuNC03IDI2LjctOSAxNC43LTMuMSAyOS41LTQuOSA0NC41LTEuM3YtLjVjLS41LS40LTEuMi0uOC0xLjctMS40ek0zMTYuNyAzOTcuNmMtMzkuNC0zMy0yMi44LTE5LjUtNDIuNy0zNS42LS44LjkgMC0uMi0xLjkgMy0xMS4yIDE5LjEtMjUuNSAzNS4zLTQ0IDQ3LjYtMTAuMyA2LjgtMjEuNSAxMS44LTM0LjEgMTEuOC0yMS42IDAtMzguMi05LjUtNDkuNC0yNy44LTEyLTE5LjUtMTMuMy00MC43LTguMi02Mi42IDcuOC0zMy44IDMwLjEtNTUuMiAzOC42LTY0LjMtMTguNy02LjItMzMgMS43LTQ2LjQgMTMuOS44LTEzLjkgNC4zLTI2LjIgMTEuOC0zNy4zLTI0LjMgMTAuNi00NS45IDI1LTY0LjggNDMuOS0uMy01LjggNS40LTQzLjcgNS42LTQ0LjcuMy0yLjctLjYtNS4zLTMtNy40LTI0LjIgMjQuNy00NC41IDUxLjgtNTYuMSA4NC42IDcuNC01LjkgMTQuOS0xMS40IDIzLjYtMTYuMi04LjMgMjIuMy0xOS42IDUyLjgtNy44IDEwMS4xIDQuNiAxOSAxMS45IDM2LjggMjQuMSA1Mi4zIDIuOSAzLjcgNi4zIDYuOSA5LjUgMTAuMy4yLS4yLjQtLjMuNi0uNS0xLjQtNy0yLjItMTQuMS0xLjUtMjEuOSAyLjIgMy4yIDMuOSA2IDUuOSA4LjYgMTIuNiAxNiAyOC43IDI3LjQgNDcuMiAzNS42IDI1IDExLjMgNTEuMSAxMy4zIDc3LjkgOC42IDU0LjktOS43IDkwLjctNDguNiAxMTYtOTguOCAxLTEuOC42LTIuOS0uOS00LjJ6bTE3Mi00Ni40Yy05LjUtMy4xLTIyLjItNC4yLTI4LjctMi45IDkuOSA0IDE0LjEgNi42IDE4LjggMTIgMTIuNiAxNC40IDEwLjQgMzQuNy01LjQgNDUuNi0xMS43IDguMS0yNC45IDEwLjUtMzguOSA5LjEtMS4yLS4xLTIuMy0uNC0zLS42IDIuOC0zLjcgNi03IDguMS0xMC44IDkuNC0xNi44IDUuNC00Mi4xLTguNy01Ni4xLTIuMS0yLjEtNC42LTMuOS03LTUuOS0uMyAxLjMtLjEgMi4xLjEgMi44IDQuMiAxNi42LTguMSAzMi40LTI0LjggMzEuOC03LjYtLjMtMTMuOS0zLjgtMTkuNi04LjUtMTkuNS0xNi4xLTM5LjEtMzIuMS01OC41LTQ4LjMtNS45LTQuOS0xMi41LTguMS0yMC4xLTguNy00LjYtLjQtOS4zLS42LTEzLjktLjktNS45LS40LTguOC0yLjgtMTAuNC04LjQtLjktMy40LTEuNS02LjgtMi4yLTEwLjItMS41LTguMS02LjItMTMtMTQuMy0xNC4yLTQuNC0uNy04LjktMS0xMy4zLTEuNS0xMy0xLjQtMTkuOC03LjQtMjIuNi0yMC4zLTUgMTEtMS42IDIyLjQgNy4zIDI5LjkgNC41IDMuOCA5LjMgNy4zIDEzLjggMTEuMiA0LjYgMy44IDcuNCA4LjcgNy45IDE0LjguNCA0LjcuOCA5LjUgMS44IDE0LjEgMi4yIDEwLjYgOC45IDE4LjQgMTcgMjUuMSAxNi41IDEzLjcgMzMgMjcuMyA0OS41IDQxLjEgMTcuOSAxNSAxMy45IDMyLjggMTMgNTYtLjkgMjIuOSAxMi4yIDQyLjkgMzMuNSA1MS4yIDEgLjQgMiAuNiAzLjYgMS4xLTE1LjctMTguMi0xMC4xLTQ0LjEuNy01Mi4zLjMgMi4yLjQgNC4zLjkgNi40IDkuNCA0NC4xIDQ1LjQgNjQuMiA4NSA1Ni45IDE2LTIuOSAzMC42LTguOSA0Mi45LTE5LjggMi0xLjggMy43LTQuMSA1LjktNi41LTE5LjMgNC42LTM1LjguMS01MC45LTEwLjYuNy0uMyAxLjMtLjMgMS45LS4zIDIxLjMgMS44IDQwLjYtMy40IDU3LTE3LjQgMTkuNS0xNi42IDI2LjYtNDIuOSAxNy40LTY2LTguMy0yMC4xLTIzLjYtMzIuMy00My44LTM4Ljl6TTk5LjQgMTc5LjNjLTUuMy05LjItMTMuMi0xNS42LTIyLjEtMjEuMyAxMy43LS41IDI2LjYuMiAzOS42IDMuNy03LTEyLjItOC41LTI0LjctNS0zOC43IDUuMyAxMS45IDEzLjcgMjAuMSAyMy42IDI2LjggMTkuNyAxMy4yIDM1LjcgMTkuNiA0Ni43IDMwLjIgMy40IDMuMyA2LjMgNy4xIDkuNiAxMC45LS44LTIuMS0xLjQtNC4xLTIuMi02LTUtMTAuNi0xMy0xOC42LTIyLjYtMjUtMS44LTEuMi0yLjgtMi41LTMuNC00LjUtMy4zLTEyLjUtMy0yNS4xLS43LTM3LjYgMS01LjUgMi44LTEwLjkgNC41LTE2LjMuOC0yLjQgMi4zLTQuNiA0LTYuNi42IDYuOSAwIDI1LjUgMTkuNiA0NiAxMC44IDExLjMgMjIuNCAyMS45IDMzLjkgMzIuNyA5IDguNSAxOC4zIDE2LjcgMjUuNSAyNi44IDEuMSAxLjYgMi4yIDMuMyAzLjggNC43LTUtMTMtMTQuMi0yNC4xLTI0LjItMzMuOC05LjYtOS4zLTE5LjQtMTguNC0yOS4yLTI3LjQtMy4zLTMtNC42LTYuNy01LjEtMTAuOS0xLjItMTAuNCAwLTIwLjYgNC4zLTMwLjIuNS0xIDEuMS0yIDEuOS0zLjMuNSA0LjIuNiA3LjkgMS40IDExLjYgNC44IDIzLjEgMjAuNCAzNi4zIDQ5LjMgNjMuNSAxMCA5LjQgMTkuMyAxOS4yIDI1LjYgMzEuNiA0LjggOS4zIDcuMyAxOSA1LjcgMjkuNi0uMS42LjUgMS43IDEuMSAyIDYuMiAyLjYgMTAgNi45IDkuNyAxNC4zIDcuNy0yLjYgMTIuNS04IDE2LjQtMTQuNSA0LjIgMjAuMi05LjEgNTAuMy0yNy4yIDU4LjcuNC00LjUgNS0yMy40LTE2LjUtMjcuNy02LjgtMS4zLTEyLjgtMS4zLTIyLjktMi4xIDQuNy05IDEwLjQtMjAuNi41LTIyLjQtMjQuOS00LjYtNTIuOCAxLjktNTcuOCA0LjYgOC4yLjQgMTYuMyAxIDIzLjUgMy4zLTIgNi41LTQgMTIuNy01LjggMTguOS0xLjkgNi41IDIuMSAxNC42IDkuMyA5LjYgMS4yLS45IDIuMy0xLjkgMy4zLTIuNy0zLjEgMTcuOS0yLjkgMTUuOS0yLjggMTguMy4zIDEwLjIgOS41IDcuOCAxNS43IDcuMy0yLjUgMTEuOC0yOS41IDI3LjMtNDUuNCAyNS44IDctNC43IDEyLjctMTAuMyAxNS45LTE3LjktNi41LjgtMTIuOSAxLjYtMTkuMiAyLjRsLS4zLS45YzQuNy0zLjQgOC03LjggMTAuMi0xMy4xIDguNy0yMS4xLTMuNi0zOC0yNS0zOS45LTkuMS0uOC0xNy44LjgtMjUuOSA1LjUgNi4yLTE1LjYgMTcuMi0yNi42IDMyLjYtMzQuNS0xNS4yLTQuMy04LjktMi43LTI0LjYtNi4zIDE0LjYtOS4zIDMwLjItMTMuMiA0Ni41LTE0LjYtNS4yLTMuMi00OC4xLTMuNi03MC4yIDIwLjkgNy45IDEuNCAxNS41IDIuOCAyMy4yIDQuMi0yMy44IDctNDQgMTkuNy02Mi40IDM1LjYgMS4xLTQuOCAyLjctOS41IDMuMy0xNC4zLjYtNC41LjgtOS4yLjEtMTMuNi0xLjUtOS40LTguOS0xNS4xLTE5LjctMTYuMy03LjktLjktMTUuNi4xLTIzLjMgMS4zLS45LjEtMS43LjMtMi45IDAgMTUuOC0xNC44IDM2LTIxLjcgNTMuMS0zMy41IDYtNC41IDYuOC04LjIgMy0xNC45em0xMjguNCAyNi44YzMuMyAxNiAxMi42IDI1LjUgMjMuOCAyNC4zLTQuNi0xMS4zLTEyLjEtMTkuNS0yMy44LTI0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhaWx5bW90aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC45MywyNjdhNDguNCw0OC40LDAsMCwwLTI0LjM2LTYuMjFxLTE5LjgzLDAtMzMuNDQsMTMuMjd0LTEzLjYxLDMzLjQycTAsMjEuMTYsMTMuMjgsMzQuNnQzMy40MywxMy40NHEyMC41LDAsMzQuMTEtMTMuNzhUMzIyLDMwNy40N0E0Ny4xMyw0Ny4xMywwLDAsMCwzMTUuOSwyODQsNDQuMTMsNDQuMTMsMCwwLDAsMjk4LjkzLDI2N1pNMCwzMlY0ODBINDQ4VjMyWk0zNzQuNzEsNDA1LjI2aC01My4xVjM4MS4zN2gtLjY3cS0xNS43OSwyNi4yLTU1Ljc4LDI2LjItMjcuNTYsMC00OC44OS0xMy4xYTg4LjI5LDg4LjI5LDAsMCwxLTMyLjk0LTM1Ljc3cS0xMS42LTIyLjY4LTExLjU5LTUwLjg5LDAtMjcuNTYsMTEuNzYtNTAuMjJhODkuOSw4OS45LDAsMCwxLDMyLjkzLTM1Ljc4cTIxLjE4LTEzLjA5LDQ3LjcyLTEzLjFhODAuODcsODAuODcsMCwwLDEsMjkuNzQsNS4yMXExMy4yOCw1LjIxLDI1LDE3VjE1M2w1NS43OS0xMi4wOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGFzaGN1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI2LjYgMTA0SDExMC40Yy01MS4xIDAtOTEuMiA0My4zLTkxLjIgOTMuNVY0MjdjMCA1MC41IDQwLjEgODUgOTEuMiA4NWgyMjcuMmM1MS4xIDAgOTEuMi0zNC41IDkxLjItODVWMEwzMjYuNiAxMDR6TTE1My45IDQxNi41Yy0xNy43IDAtMzIuNC0xNS4xLTMyLjQtMzIuOFYyNDAuOGMwLTE3LjcgMTQuNy0zMi41IDMyLjQtMzIuNWgxNDAuN2MxNy43IDAgMzIgMTQuOCAzMiAzMi41djEyMy41bDUxLjEgNTIuM0gxNTMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGViaWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4MC4yIDI0NS42YzMtNy42IDUuNS0xNCA1LjItMjQuNGwtNC4zIDljNC40LTEzLjIgNC0yNy4xIDMuNi00MC40Yy0uMi02LS4zLTExLjggMC0xNy40bC0xLjgtLjVjLTEuNS00NS4yLTQwLjYtOTMuMS03NS4zLTEwOS40Yy0zMC0xMy44LTc2LjEtMTYuMi05Ny4zLTUuOGMxLjMtMS4xIDQuMi0yIDYuOC0yLjdsLjMtLjFjMy4zLTEgNi0xLjcgNC0yLjljLTE5LjIgMS45LTI0LjkgNS41LTMxLjEgOS40bC0uMSAwYy00LjYgMi45LTkuNSA2LTIwLjMgOC43Yy0zLjUgMy40IDEuNyAyIDUuOCAuOWwwIDBjNC4xLTEuMSA3LjItMS45LS4xIDIuNGMtMy41IDEtNi42IDEuMy05LjYgMS42bC0uMSAwYy04LjMgLjgtMTUuOCAxLjYtMzAuNyAxN2MuOCAxLjMgMy40LS4yIDUuMy0xLjNsLjEtLjFjMi4zLTEuNCAzLjQtMi0xLjcgNC40Yy0xOS4xLTIuNC02MC4zIDQzLjctNjkuMSA1OWw0LjYgLjhjLTMuMiA4LTYuOCAxNC44LTEwIDIwLjhjLTQuMyA4LjEtNy45IDE0LjktOC43IDIxLjNjLS4zIDUuMS0xIDExLTEuNyAxNy4zbDAgMGMtLjEgMS0uMiAyLS4zIDNsLS4xIC42Yy0zIDI3LjMtNi43IDYwLjggMy45IDczbC0xLjMgMTNjLjYgMS4yIDEuMSAyLjMgMS42IDMuNWMuMiAuNCAuNCAuOCAuNSAxLjFsMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwYzEgMi4xIDIgNC4yIDMuMyA2LjJsLTMgLjJjNyAyMi4xIDEwLjggMjIuNSAxNS4xIDIyLjlsMCAwYzQuNCAuNCA5LjMgLjkgMTguNyAyNC4yYy0yLjctLjktNS41LTEuOS05LjQtNy4yYy0uNSA0LjEgNS44IDE2LjMgMTMuMSAyNS44bC0zLjEgMy42YzIuMSAzLjcgNC44IDYuMiA3LjYgOC44bDAgMCAwIDBjMSAuOSAyLjEgMS45IDMuMSAyLjljLTExLjktNi41IDMuMiAxMy43IDExLjkgMjUuMmMuOCAxLjEgMS41IDIgMi4yIDIuOWwwIDAgMCAwIDAgMCAwIDAgMCAwYzEuNCAxLjkgMi41IDMuNCAyLjkgNC4xbDIuNC00LjJjLS4zIDYuMSA0LjMgMTMuOSAxMy4xIDI0LjdsNy4zLS4zYzMgNiAxNCAxNi43IDIwLjcgMTcuMmwtNC40IDUuOGM4LjEgMi42IDEwLjMgNC4zIDEyLjcgNi4yYzIuNiAyLjEgNS40IDQuMyAxNi4xIDguMWwtNC4yLTcuNGMzLjUgMyA2LjIgNS45IDguOCA4LjdsLjEgLjFjNS4yIDUuNiA5LjkgMTAuNiAxOS43IDE1LjNjMTAuNyAzLjcgMTYuNiA0LjcgMjIuNyA1LjhjLjMgMCAuNiAuMSAuOSAuMWM1LjQgLjggMTEuMiAxLjggMjAuOCA0LjVjLTEuMS0uMS0yLjItLjEtMy4zLS4xaDBjLTIuMy0uMS00LjctLjEtNy0uMWwwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDBjLTE0LjQtLjItMjkuMi0uNC00Mi43LTUuMkMxMDcuOCA0ODAuNSAxOS41IDM2Ny4yIDI2IDI1MC42Yy0uNi05LjktLjMtMjAuOSAwLTMwLjdjLjQtMTMuNSAuNy0yNC44LTEuNi0yOC4zbDEtMy4xYzUuMy0xNy40IDExLjctMzguMiAyMy44LTYyLjhsLS4xLS4ydi0uMWMuNCAuNCAzLjQgMy40IDguOC01LjhjLjgtMS44IDEuNi0zLjcgMi40LTUuNmMuNS0xLjEgLjktMi4yIDEuNC0zLjJjMi41LTYuMSA1LjEtMTIuMyA4LjQtMTcuOWwyLjYtLjZjMS43LTEwLjEgMTctMjMuOCAyOS44LTM1LjJsMS4xLTFjNS43LTUuMSAxMC43LTkuNyAxMy42LTEzLjFsLjcgNC40YzE3LTE1LjkgNDQuNi0yNy41IDY1LjYtMzYuNGwuNS0uMmM0LjgtMiA5LjMtMy45IDEzLjMtNS43Yy0zLjQgMy44IDIuMiAyLjcgMTAgMWM0LjgtMSAxMC40LTIuMSAxNS4zLTIuNGwtMy45IDIuMWMtMi43IDEuNC01LjQgMi44LTggNC42YzguMS0yIDExLjctMS40IDE1LjctLjhsLjMgMGMzLjUgLjYgNy4zIDEuMiAxNC42IC4yYy01LjYgLjgtMTIuMyAzLTExLjIgMy44YzcuOSAuOSAxMi44LS4xIDE3LjItMWwuMiAwYzUuNS0xLjEgMTAuMy0yIDE5LjMgLjlsLTEtNC44YzcuMyAyLjYgMTIuNyA0LjMgMTcuNSA1LjhsLjUgLjFjMTAgMyAxNy42IDUuMyAzNC4yIDE0LjFjMy4yIC4yIDUuMy0uNSA3LjQtMS4ybC4xIDBjMy42LTEuMSA3LTIuMSAxNS4yIDEuMmMuMyAuNSAuNSAxIC43IDEuNGMuMSAuMiAuMiAuNSAuMyAuN2wwIC4xYzEgMi42IDEuOCA0LjYgMTQuNiAxMi4xYzEuNy0uNy0yLjctNC43LTYuNC04LjJjMCAwIDAgMC0uMS0uMWMtLjItLjEtLjMtLjMtLjUtLjRjMzIuMiAxNy4zIDY3LjMgNTQuMSA3OCA5My41Yy02LTExLjEtNS4yLTUuNS00LjMgLjVjLjYgNCAxLjIgOC4xLS4yIDcuNWM0LjUgMTIuMSA4LjEgMjQuNSAxMC40IDM3LjRsLS44LTIuOS0uMS0uM2MtMy4zLTExLjktOS42LTM0LjMtMTkuOS00OS4zYy0uNCA0LjMtMi44IDMuOS01LjIgMy41bC0uMSAwIDAgMGMtMy4zLS42LTYuMi0xLjEtMS45IDEyLjZjMi42IDMuOCAzLjEgMi40IDMuNSAxLjFsMCAwYy41LTEuNSAuOS0yLjcgNC43IDUuMmMuMSA0LjEgMSA4LjIgMi4xIDEyLjdsMCAwIDAgMCAuMSAuNmMuMSAuMyAuMSAuNSAuMiAuOGwuMSAuNmMuNiAyLjYgMS4zIDUuNCAxLjggOC40Yy0xLjEtLjItMi4zLTIuMi0zLjQtNC4yYy0xLjQtMi40LTIuOC00LjctMy43LTMuMmMyLjQgMTEuNSA2LjUgMTcuNCA4IDE4LjNjLS4zIC42LS42IC43LTEuMSAuN2MtLjggMC0xLjggLjEtMS45IDUuM2MuNyAxMy43IDMuMyAxMi41IDUuMyAxMS42bDAgMGMuNi0uMyAxLjItLjYgMS43LS40Yy0uNiAyLjUtMS42IDUuMS0yLjcgNy45Yy0yLjggNy4xLTYgMTUuNC0zLjQgMjYuMWMtLjgtMy0yLTYtMy4xLTguOWwtLjEtLjRjLS4yLS41LS40LTEtLjYtMS41bDAgMGMtLjMtLjgtLjYtMS42LS45LTIuM2MtLjYgNC40LS4zIDcuNy0uMSAxMC42YzAgLjIgMCAuNSAwIC43Yy40IDUuMyAuNyAxMC0zIDE5LjljNC4zLTE0LjIgMy44LTI2LjktLjItMjAuOGMxIDEwLjktMy43IDIwLjQtOCAyOC45bC0uMSAuMmMtMy42IDcuMS02LjggMTMuNS01LjkgMTkuM2wtNS4yLTcuMWMtNy41IDEwLjktNyAxMy4zLTYuNSAxNS41bDAgLjFjLjUgMS45IDEgMy44LTMuNCAxMC44YzEuNy0yLjkgMS4zLTMuNiAxLTQuMmwwIDBjLS40LS44LS43LTEuNSAxLjctNS4xYy0xLjYgLjEtNS41IDMuOS0xMC4xIDguNWMtMy45IDMuOS04LjUgOC40LTEyLjggMTEuOGMtMzcuNSAzMC4xLTgyLjMgMzQtMTI1LjYgMTcuOGMuMi0xLS4yLTIuMS0zLjEtNC4xYy0zNi44LTI4LjItNTguNS01Mi4xLTUwLjktMTA3LjVjMi4xLTEuNiAzLjYtNS44IDUuMy0xMC44bDAgMCAwIDAgLjItLjQgLjEtLjMgMC0uMWMyLjktOC40IDYuNS0xOC44IDE0LjMtMjMuOGM3LjgtMTcuMyAzMS4zLTMzLjMgNTYuNC0zMy43YzI1LjYtMS40IDQ3LjIgMTMuNyA1OC4xIDI3LjljLTE5LjgtMTguNC01Mi4xLTI0LTc5LjctMTAuNGMtMjguMiAxMi43LTQ1IDQzLjgtNDIuNSA3NC43Yy4zLS40IC42LS42IC45LS44bDAgMHMwIDAgMCAwYzAgMCAuMS0uMSAuMS0uMWwuMS0uMWMuNi0uNSAxLjEtLjkgMS40LTMuM2MtLjkgNjAuMiA2NC44IDEwNC4zIDExMi4xIDgybC42IDEuM2MxMi43LTMuNSAxNS45LTYuNSAyMC4zLTEwLjdsLjEtLjEgMCAwYzIuMi0yLjEgNC43LTQuNSA4LjktNy4zYy0uMyAuNy0xLjMgMS43LTIuNCAyLjdjLTIuMiAyLjEtNC42IDQuNS0xLjYgNC42YzUtMS4zIDE4LjUtMTMuNCAyOC41LTIyLjNsMCAwIDAgMGMuNi0uNSAxLjItMSAxLjctMS41YzEuNS0xLjMgMi44LTIuNSA0LTMuNmwwIDAgLjMtLjNjMS45LTQuMiAxLjYtNS42IDEuMy03bDAtLjFjLS40LTEuNi0uOC0zLjMgMi40LTkuNmw3LjMtMy43Yy44LTIuMSAxLjUtNC4xIDIuMi02Yy4yLS42IC41LTEuMiAuNy0xLjhsLS40LS4yek0zNDkuMyAzNC4zbC0uMi0uMSAuMiAuMSAwIDB6TTI0Ny44IDMzNC4xYy02LTMtMTMuNy04LjktMTQuOC0xMS40bC0uNCAuM2MtLjMgLjYtLjUgMS4zLS4yIDIuMmMtMTIuMi01LjctMjMuNC0xNC4zLTMyLjYtMjQuOWM0LjkgNy4xIDEwLjEgMTQuMSAxNyAxOS41Yy02LjktMi4zLTE1LjEtMTEuOC0yMS42LTE5LjNsLS4xLS4xYy00LjMtNS03LjktOS4xLTkuNy05LjVjMTkuOCAzNS41IDgwLjUgNjIuMyAxMTIuMyA0OWMtMTQuNyAuNS0zMy40IC4zLTQ5LjktNS44em03OS4zLTExOS43bC0uMS0uMmMtLjUtMS41LTEuMS0zLjEtMS43LTMuNGMxLjQtNS44IDUuNC0xMC43IDQuNCA0LjZjLTEgMy44LTEuOCAxLjUtMi42LTF6bS00LjIgMjIuMmMtMS4zIDcuOS01IDE1LjUtMTAuMSAyMi41Yy4yLTItMS4yLTIuNC0yLjYtMi44bDAgMGMtMi45LS44LTUuOS0xLjYgNS42LTE2LjFjLS41IDEuOS0yLjEgNC42LTMuNyA3LjNsMCAwIDAgMC0uMyAuNGMtMy42IDUuOS02LjcgMTEgNCA0LjNsMS0xLjhjMi42LTQuNSA1LTguOCA2LTEzLjhoLjF6bS01NS42IDMzLjljNy4xIC42IDE0LjEgLjYgMjEtMS4xYy0yLjUgMi40LTUuMiA0LjgtOC4zIDcuMmMtMTEuMS0xLjctMjEuMi02LTEyLjctNi4xem0tOTIuNiAxMS42YzMuNiA3LjEgNi40IDExLjUgOSAxNS43bC4xIC4yYzIuMyAzLjcgNC40IDcuMSA2LjggMTEuN2MtNS4xLTQuMi04LjctOS41LTEyLjUtMTVsLS4zLS41Yy0xLjQtMi4xLTIuOC00LjItNC40LTYuMmwxLjItNS45aC4xem03LjUtOS42YzEuNiAzLjMgMy4yIDYuNCA1LjcgOS4xbDIuNiA3LjctMS4zLTIuMWMtMy4yLTUuMy02LjMtMTAuNi04LTE2LjdsLjggMS42IC4yIC40em0yMzguOS00MS42Yy0yLjMgMTcuNC03LjcgMzQuNi0xNiA1MC4zYzcuNi0xNC45IDEyLjUtMzAuOSAxNC44LTQ3LjJsMS4yLTMuMXpNMzUuNiAxMTAuNmMuNCAuOCAxLjQgLjUgMi4zIC4zYzEuOS0uNSAzLjYtLjktLjEgNy42Yy0uNSAuMy0xIC43LTEuNSAxbDAgMCAwIDBjLTEuNCAuOS0yLjggMS45LTMuOSAzYzEuOS0zLjggMy41LTcuNCAzLjItMTEuOXpNMjUuMyAxNTIuM2MtLjcgMy43LTEuNSA3LjktMy40IDEzLjljLjItMS45IDAtMy41LS4yLTQuOWwwLS4xYy0uNC0zLjQtLjctNi4zIDQuMy0xMi44Yy0uMyAxLjItLjUgMi41LS43IDMuOHYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVlemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1MS40NiwyNDQuNzFINTc2VjE3Mkg0NTEuNDZabTAtMTczLjg5djcyLjY3SDU3NlY3MC44MlptMCwyNzUuMDZINTc2VjI3My4ySDQ1MS40NlpNMCw0NDcuMDlIMTI0LjU0VjM3NC40MkgwWm0xNTAuNDcsMEgyNzVWMzc0LjQySDE1MC40N1ptMTUwLjUyLDBINDI1LjUzVjM3NC40MkgzMDFabTE1MC40NywwSDU3NlYzNzQuNDJINDUxLjQ2Wk0zMDEsMzQ1Ljg4SDQyNS41M1YyNzMuMkgzMDFabS0xNTAuNTIsMEgyNzVWMjczLjJIMTUwLjQ3Wm0wLTEwMS4xN0gyNzVWMTcySDE1MC40N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVsaWNpb3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni41IDY4Yy0uNC0xLjUtLjktMy0xLjQtNC41LS45LTIuNS0yLTQuOC0zLjMtNy4xLTEuNC0yLjQtMy00LjgtNC43LTYuOS0yLjEtMi41LTQuNC00LjgtNi45LTYuOC0xLjEtLjktMi4yLTEuNy0zLjMtMi41LTEuMy0uOS0yLjYtMS43LTQtMi40LTEuOC0xLTMuNi0xLjgtNS41LTIuNS0xLjctLjctMy41LTEuMy01LjQtMS43LTMuOC0xLTcuOS0xLjUtMTItMS41SDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgNC4xLjUgOC4yIDEuNSAxMiAyIDcuNyA1LjggMTQuNiAxMSAyMC4zIDEgMS4xIDIuMSAyLjIgMy4zIDMuMyA1LjcgNS4yIDEyLjYgOSAyMC4zIDExIDMuOCAxIDcuOSAxLjUgMTIgMS41aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMtLjEtNC4xLS42LTguMi0xLjYtMTJ6TTQxNiA0MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIyNFYyNTZIMzJWODBjMC04LjggNy4yLTE2IDE2LTE2aDE3NnYxOTJoMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXBsb3lkb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgyLjIgMTM2aDUxLjd2MjM5LjZoLTUxLjd2LTIwLjdjLTE5LjggMjQuOC01Mi44IDI0LjEtNzMuOCAxNC43LTI2LjItMTEuNy00NC4zLTM4LjEtNDQuMy03MS44IDAtMjkuOCAxNC44LTU3LjkgNDMuMy03MC44IDIwLjItOS4xIDUyLjctMTAuNiA3NC44IDEyLjlWMTM2em0tNjQuNyAxNjEuOGMwIDE4LjIgMTMuNiAzMy41IDMzLjIgMzMuNSAxOS44IDAgMzMuMi0xNi40IDMzLjItMzIuOSAwLTE3LjEtMTMuNy0zMy4yLTMzLjItMzMuMi0xOS42IDAtMzMuMiAxNi40LTMzLjIgMzIuNnpNMTg4LjUgMTM2aDUxLjd2MjM5LjZoLTUxLjd2LTIwLjdjLTE5LjggMjQuOC01Mi44IDI0LjEtNzMuOCAxNC43LTI2LjItMTEuNy00NC4zLTM4LjEtNDQuMy03MS44IDAtMjkuOCAxNC44LTU3LjkgNDMuMy03MC44IDIwLjItOS4xIDUyLjctMTAuNiA3NC44IDEyLjlWMTM2em0tNjQuNyAxNjEuOGMwIDE4LjIgMTMuNiAzMy41IDMzLjIgMzMuNSAxOS44IDAgMzMuMi0xNi40IDMzLjItMzIuOSAwLTE3LjEtMTMuNy0zMy4yLTMzLjItMzMuMi0xOS43IDAtMzMuMiAxNi40LTMzLjIgMzIuNnpNNDQ4IDk2YzE3LjUgMCAzMiAxNC40IDMyIDMydjI1NmMwIDE3LjUtMTQuNCAzMi0zMiAzMkg2NGMtMTcuNSAwLTMyLTE0LjQtMzItMzJWMTI4YzAtMTcuNSAxNC40LTMyIDMyLTMyaDM4NG0wLTMySDY0QzI4LjggNjQgMCA5Mi44IDAgMTI4djI1NmMwIDM1LjIgMjguOCA2NCA2NCA2NGgzODRjMzUuMiAwIDY0LTI4LjggNjQtNjRWMTI4YzAtMzUuMi0yOC44LTY0LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXNrcHJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNS45IDUxMmwzMS4xLTM4LjRjMTIuMy0uMiAyNS42LTEuNCAzNi41LTYuNiAzOC45LTE4LjYgMzguNC02MS45IDM4LjMtNjMuOC0uMS01LS44LTQuNC0yOC45LTM3LjRIMzYyYy0uMiA1MC4xLTcuMyA2OC41LTEwLjIgNzUuNy05LjQgMjMuNy00My45IDYyLjgtOTUuMiA2OS40LTguNyAxLjEtMzIuOCAxLjItNTAuNyAxLjF6bTIwMC40LTE2Ny43YzM4LjYgMCA1OC41LTEzLjYgNzMuNy0zMC45bC0xNzUuNS0uMy0xNy40IDMxLjMgMTE5LjItLjF6bS00My42LTIyMy45djE2OC4zaC03My41bC0zMi43IDU1LjVIMjUwYy01Mi4zIDAtNTguMS01Ni41LTU4LjMtNTguOS0xLjItMTMuMi0yMS4zLTExLjYtMjAuMSAxLjggMS40IDE1LjggOC44IDQwIDI2LjQgNTcuMWgtOTFjLTI1LjUgMC0xMTAuOC0yNi44LTEwNy0xMTRWMTYuOUMwIC45IDkuNy4zIDE1IC4xaDgyYy4yIDAgLjMuMS41LjEgNC4zLS40IDUwLjEtMi4xIDUwLjEgNDMuNyAwIDEzLjMgMjAuMiAxMy40IDIwLjIgMCAwLTE4LjItNS41LTMyLjgtMTUuOC00My43aDg0LjJjMTA4LjctLjQgMTI2LjUgNzkuNCAxMjYuNSAxMjAuMnptLTEzMi41IDU2bDY0IDI5LjNjMTMuMy00NS41LTQyLjItNzEuNy02NC0yOS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjEyIDIwOC4yOWMtMy44OC0yLjktNy43Ny00LjM1LTExLjY1LTQuMzVIOTEuMDN2MTA0LjQ3aDE3LjQ1YzMuODggMCA3Ljc3LTEuNDUgMTEuNjUtNC4zNSAzLjg4LTIuOSA1LjgyLTcuMjUgNS44Mi0xMy4wNnYtNjkuNjVjLS4wMS01LjgtMS45Ni0xMC4xNi01LjgzLTEzLjA2ek00MDQuMSAzMkg0My45QzE5LjcgMzIgLjA2IDUxLjU5IDAgNzUuOHYzNjAuNEMuMDYgNDYwLjQxIDE5LjcgNDgwIDQzLjkgNDgwaDM2MC4yYzI0LjIxIDAgNDMuODQtMTkuNTkgNDMuOS00My44Vjc1LjhjLS4wNi0yNC4yMS0xOS43LTQzLjgtNDMuOS00My44ek0xNTQuMiAyOTEuMTljMCAxOC44MS0xMS42MSA0Ny4zMS00OC4zNiA0Ny4yNWgtNDYuNFYxNzIuOThoNDcuMzhjMzUuNDQgMCA0Ny4zNiAyOC40NiA0Ny4zNyA0Ny4yOGwuMDEgNzAuOTN6bTEwMC42OC04OC42NkgyMDEuNnYzOC40MmgzMi41N3YyOS41N0gyMDEuNnYzOC40MWg1My4yOXYyOS41N2gtNjIuMThjLTExLjE2LjI5LTIwLjQ0LTguNTMtMjAuNzItMTkuNjlWMTkzLjdjLS4yNy0xMS4xNSA4LjU2LTIwLjQxIDE5LjcxLTIwLjY5aDYzLjE5bC0uMDEgMjkuNTJ6bTEwMy42NCAxMTUuMjljLTEzLjIgMzAuNzUtMzYuODUgMjQuNjMtNDcuNDQgMGwtMzguNTMtMTQ0LjhoMzIuNTdsMjkuNzEgMTEzLjcyIDI5LjU3LTExMy43MmgzMi41OGwtMzguNDYgMTQ0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURldmlhbnRhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDkzLjJsLTk4LjIgMTc5LjEgNy40IDkuNUgzMjB2MTI3LjdIMTU5LjFsLTEzLjUgOS4yLTQzLjcgODRjLS4zIDAtOC42IDguNi05LjIgOS4ySDB2LTkzLjJsOTMuMi0xNzkuNC03LjQtOS4ySDBWMTAyLjVoMTU2bDEzLjUtOS4yIDQzLjctODRjLjMgMCA4LjYtOC42IDkuMi05LjJIMzIwdjkzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURobCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzggMzAxLjJoNTguN0wzMTkgMjcxaC01OC43TDIzOCAzMDEuMnpNMCAyODIuOXY2LjRoODEuOGw0LjctNi40SDB6TTE3Mi45IDI3MWMtOC43IDAtNi0zLjYtNC42LTUuNSAyLjgtMy44IDcuNi0xMC40IDEwLjQtMTQuMSAyLjgtMy43IDIuOC01LjktMi44LTUuOWgtNTFsLTQxLjEgNTUuOGgxMDAuMWMzMy4xIDAgNTEuNS0yMi41IDU3LjItMzAuM2gtNjguMnptMzE3LjUtNi45bDM5LjMtNTMuNGgtNjIuMmwtMzkuMyA1My40aDYyLjJ6TTk1LjMgMjcxSDB2Ni40aDkwLjZsNC43LTYuNHptMTExLTI2LjZjLTIuOCAzLjgtNy41IDEwLjQtMTAuMyAxNC4yLTEuNCAyLTQuMSA1LjUgNC42IDUuNWg0NS42czcuMy0xMCAxMy41LTE4LjRjOC40LTExLjQuNy0zNS0yOS4yLTM1SDExMi42bC0yMC40IDI3LjhoMTExLjRjNS42IDAgNS41IDIuMiAyLjcgNS45ek0wIDMwMS4yaDczLjFsNC43LTYuNEgwdjYuNHptMzIzIDBoNTguN0w0MDQgMjcxaC01OC43Yy0uMSAwLTIyLjMgMzAuMi0yMi4zIDMwLjJ6bTIyMiAuMWg5NXYtNi40aC05MC4zbC00LjcgNi40em0yMi4zLTMwLjNsLTQuNyA2LjRINjQwVjI3MWgtNzIuN3ptLTEzLjUgMTguM0g2NDB2LTYuNGgtODEuNWwtNC43IDYuNHptLTE2NC4yLTc4LjZsLTIyLjUgMzAuNmgtMjYuMmwyMi41LTMwLjZoLTU4LjdsLTM5LjMgNTMuNEg0MDlsMzkuMy01My40aC01OC43em0zMy41IDYwLjNzLTQuMyA1LjktNi40IDguN2MtNy40IDEwLS45IDIxLjYgMjMuMiAyMS42aDk0LjNsMjIuMy0zMC4zSDQyMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFzcG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTEuNjQgMzU0LjU1Yy0xLjQgMC04OCAxMTkuOS04OC43IDExOS45Uzc2LjM0IDQxNCA3NiA0MTMuMjVzODYuNi0xMjUuNyA4Ni42LTEyNy40YzAtMi4yLTEyOS42LTQ0LTEzNy42LTQ3LjEtMS4zLS41IDMxLjQtMTAxLjggMzEuNy0xMDIuMS42LS43IDE0NC40IDQ3IDE0NS41IDQ3IC40IDAgLjktLjYgMS0xLjMuNC0yIDEtMTQ4LjYgMS43LTE0OS42LjgtMS4yIDEwNC41LS43IDEwNS4xLS4zIDEuNSAxIDMuNSAxNTYuMSA2LjEgMTU2LjEgMS40IDAgMTM4LjctNDcgMTM5LjMtNDYuMy44LjkgMzEuOSAxMDIuMiAzMS41IDEwMi42LS45LjktMTQwLjIgNDcuMS0xNDAuNiA0OC44LS4zIDEuNCA4Mi44IDEyMi4xIDgyLjUgMTIyLjlzLTg1LjUgNjMuNS04Ni4zIDYzLjVjLTEtLjItODktMTI1LjUtOTAuOS0xMjUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlnZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MS43IDE3Mi4zSDB2MTc0LjRoMTMyLjdWOTZoLTUxdjc2LjN6bTAgMTMzLjRINTAuOXYtOTIuM2gzMC44djkyLjN6bTI5Ny4yLTEzMy40djE3NC40aDgxLjh2MjguNWgtODEuOFY0MTZINTEyVjE3Mi4zSDM3OC45em04MS44IDEzMy40aC0zMC44di05Mi4zaDMwLjh2OTIuM3ptLTIzNS42IDQxaDgyLjF2MjguNWgtODIuMVY0MTZoMTMzLjNWMTcyLjNIMjI1LjF2MTc0LjR6bTUxLjItMTMzLjNoMzAuOHY5Mi4zaC0zMC44di05Mi4zek0xNTMuMyA5Nmg1MS4zdjUxaC01MS4zVjk2em0wIDc2LjNoNTEuM3YxNzQuNGgtNTEuM1YxNzIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlnaXRhbE9jZWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg3IDQ4MS44aDczLjd2LTczLjZIODd6TTI1LjQgMzQ2LjZ2NjEuNkg4N3YtNjEuNnptNDY2LjItMTY5LjdjLTIzLTc0LjItODIuNC0xMzMuMy0xNTYuNi0xNTYuNkMxNjQuOS0zMi44IDggOTMuNyA4IDI1NS45aDk1LjhjMC0xMDEuOCAxMDEtMTgwLjUgMjA4LjEtMTQxLjcgMzkuNyAxNC4zIDcxLjUgNDYuMSA4NS44IDg1LjcgMzkuMSAxMDctMzkuNyAyMDcuOC0xNDEuNCAyMDh2LjNoLS4zVjUwNGMxNjIuNiAwIDI4OC44LTE1Ni44IDIzNS42LTMyNy4xem0tMjM1LjMgMjMxdi05NS4zaC05NS42djk1LjZIMjU2di0uM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjQuNTMxLDY5LjgzNmExLjUsMS41LDAsMCwwLS43NjQtLjdBNDg1LjA2NSw0ODUuMDY1LDAsMCwwLDQwNC4wODEsMzIuMDNhMS44MTYsMS44MTYsMCwwLDAtMS45MjMuOTEsMzM3LjQ2MSwzMzcuNDYxLDAsMCwwLTE0LjksMzAuNiw0NDcuODQ4LDQ0Ny44NDgsMCwwLDAtMTM0LjQyNiwwLDMwOS41NDEsMzA5LjU0MSwwLDAsMC0xNS4xMzUtMzAuNiwxLjg5LDEuODksMCwwLDAtMS45MjQtLjkxQTQ4My42ODksNDgzLjY4OSwwLDAsMCwxMTYuMDg1LDY5LjEzN2ExLjcxMiwxLjcxMiwwLDAsMC0uNzg4LjY3NkMzOS4wNjgsMTgzLjY1MSwxOC4xODYsMjk0LjY5LDI4LjQzLDQwNC4zNTRhMi4wMTYsMi4wMTYsMCwwLDAsLjc2NSwxLjM3NUE0ODcuNjY2LDQ4Ny42NjYsMCwwLDAsMTc2LjAyLDQ3OS45MThhMS45LDEuOSwwLDAsMCwyLjA2My0uNjc2QTM0OC4yLDM0OC4yLDAsMCwwLDIwOC4xMiw0MzAuNGExLjg2LDEuODYsMCwwLDAtMS4wMTktMi41ODgsMzIxLjE3MywzMjEuMTczLDAsMCwxLTQ1Ljg2OC0yMS44NTMsMS44ODUsMS44ODUsMCwwLDEtLjE4NS0zLjEyNmMzLjA4Mi0yLjMwOSw2LjE2Ni00LjcxMSw5LjEwOS03LjEzN2ExLjgxOSwxLjgxOSwwLDAsMSwxLjktLjI1NmM5Ni4yMjksNDMuOTE3LDIwMC40MSw0My45MTcsMjk1LjUsMGExLjgxMiwxLjgxMiwwLDAsMSwxLjkyNC4yMzNjMi45NDQsMi40MjYsNi4wMjcsNC44NTEsOS4xMzIsNy4xNmExLjg4NCwxLjg4NCwwLDAsMS0uMTYyLDMuMTI2LDMwMS40MDcsMzAxLjQwNywwLDAsMS00NS44OSwyMS44MywxLjg3NSwxLjg3NSwwLDAsMC0xLDIuNjExLDM5MS4wNTUsMzkxLjA1NSwwLDAsMCwzMC4wMTQsNDguODE1LDEuODY0LDEuODY0LDAsMCwwLDIuMDYzLjdBNDg2LjA0OCw0ODYuMDQ4LDAsMCwwLDYxMC43LDQwNS43MjlhMS44ODIsMS44ODIsMCwwLDAsLjc2NS0xLjM1MkM2MjMuNzI5LDI3Ny41OTQsNTkwLjkzMywxNjcuNDY1LDUyNC41MzEsNjkuODM2Wk0yMjIuNDkxLDMzNy41OGMtMjguOTcyLDAtNTIuODQ0LTI2LjU4Ny01Mi44NDQtNTkuMjM5UzE5My4wNTYsMjE5LjEsMjIyLjQ5MSwyMTkuMWMyOS42NjUsMCw1My4zMDYsMjYuODIsNTIuODQzLDU5LjIzOUMyNzUuMzM0LDMxMC45OTMsMjUxLjkyNCwzMzcuNTgsMjIyLjQ5MSwzMzcuNThabTE5NS4zOCwwYy0yOC45NzEsMC01Mi44NDMtMjYuNTg3LTUyLjg0My01OS4yMzlTMzg4LjQzNywyMTkuMSw0MTcuODcxLDIxOS4xYzI5LjY2NywwLDUzLjMwNywyNi44Miw1Mi44NDQsNTkuMjM5QzQ3MC43MTUsMzEwLjk5Myw0NDcuNTM4LDMzNy41OCw0MTcuODcxLDMzNy41OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzY291cnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS45IDMyQzEwMy4zIDMyIDAgMTMwLjUgMCAyNTIuMSAwIDI1NiAuMSA0ODAgLjEgNDgwbDIyNS44LS4yYzEyMi43IDAgMjIyLjEtMTAyLjMgMjIyLjEtMjIzLjlDNDQ4IDEzNC4zIDM0OC42IDMyIDIyNS45IDMyek0yMjQgMzg0Yy0xOS40IDAtMzcuOS00LjMtNTQuNC0xMi4xTDg4LjUgMzkybDIyLjktNzVjLTkuOC0xOC4xLTE1LjQtMzguOS0xNS40LTYxIDAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4czEyOCA1Ny4zIDEyOCAxMjgtNTcuMyAxMjgtMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9jaHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Ny45IDE2MEgyNTZWMTkuNkwzOTcuOSAxNjB6TTMwNCAxOTJ2MTMwYzAgNjYuOC0zNi41IDEwMC4xLTExMy4zIDEwMC4xSDk2Vjg0LjhoOTQuN2MxMiAwIDIzLjEuOCAzMy4xIDIuNXYtODRDMjEyLjkgMS4xIDIwMS40IDAgMTg5LjIgMEgwdjUxMmgxODkuMkMzMjkuNyA1MTIgNDAwIDQ0Ny40IDQwMCAzMTguMVYxOTJoLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2NrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ5LjkgMjM2LjNoLTY2LjF2LTU5LjRoNjYuMXY1OS40em0wLTIwNC4zaC02Ni4xdjYwLjdoNjYuMVYzMnptNzguMiAxNDQuOEgzNjJ2NTkuNGg2Ni4xdi01OS40em0tMTU2LjMtNzIuMWgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6bTc4LjEgMGgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6bTI3Ni44IDEwMGMtMTQuNC05LjctNDcuNi0xMy4yLTczLjEtOC40LTMuMy0yNC0xNi43LTQ0LjktNDEuMS02My43bC0xNC05LjMtOS4zIDE0Yy0xOC40IDI3LjgtMjMuNCA3My42LTMuNyAxMDMuOC04LjcgNC43LTI1LjggMTEuMS00OC40IDEwLjdIMi40Yy04LjcgNTAuOCA1LjggMTE2LjggNDQgMTYyLjEgMzcuMSA0My45IDkyLjcgNjYuMiAxNjUuNCA2Ni4yIDE1Ny40IDAgMjczLjktNzIuNSAzMjguNC0yMDQuMiAyMS40LjQgNjcuNi4xIDkxLjMtNDUuMiAxLjUtMi41IDYuNi0xMy4yIDguNS0xNy4xbC0xMy4zLTguOXptLTUxMS4xLTI3LjloLTY2djU5LjRoNjYuMXYtNTkuNHptNzguMSAwaC02Ni4xdjU5LjRoNjYuMXYtNTkuNHptNzguMSAwaC02Ni4xdjU5LjRoNjYuMXYtNTkuNHptLTc4LjEtNzIuMWgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyYWZ0MkRpZ2l0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDM5OC4xbC0xNDQtODIuMnY2NC43aC05MS4zYzMwLjgtMzUgODEuOC05NS45IDExMS44LTE0OS4zIDM1LjItNjIuNiAxNi4xLTEyMy40LTEyLjgtMTUzLjMtNC40LTQuNi02Mi4yLTYyLjktMTY2LTQxLjItNTkuMSAxMi40LTg5LjQgNDMuNC0xMDQuMyA2Ny4zLTEzLjEgMjAuOS0xNyAzOS44LTE4LjIgNDcuNy01LjUgMzMgMTkuNCA2Ny4xIDU2LjcgNjcuMSAzMS43IDAgNTcuMy0yNS43IDU3LjMtNTcuNCAwLTI3LjEtMTkuNy01Mi4xLTQ4LTU2LjggMS44LTcuMyAxNy43LTIxLjEgMjYuMy0yNC43IDQxLjEtMTcuMyA3OCA1LjIgODMuMyAzMy41IDguMyA0NC4zLTM3LjEgOTAuNC02OS43IDEyNy42Qzg0LjUgMzI4LjEgMTguMyAzOTYuOCAwIDQxNS45bDMzNi0uMVY0ODB6TTM2OS45IDM3MWw0Ny4xIDI3LjItNDcuMSAyNy4yek0xMzQuMiAxNjEuNGMwIDEyLjQtMTAgMjIuNC0yMi40IDIyLjRzLTIyLjQtMTAtMjIuNC0yMi40IDEwLTIyLjQgMjIuNC0yMi40IDIyLjQgMTAuMSAyMi40IDIyLjR6TTgyLjUgMzgwLjVjMjUuNi0yNy40IDk3LjctMTA0LjcgMTUwLjgtMTY5LjkgMzUuMS00My4xIDQwLjMtODIuNCAyOC40LTExMi43LTcuNC0xOC44LTE3LjUtMzAuMi0yNC4zLTM1LjcgNDUuMyAyLjEgNjggMjMuNCA4Mi4yIDM4LjMgMCAwIDQyLjQgNDguMiA1LjggMTEzLjMtMzcgNjUuOS0xMTAuOSAxNDcuNS0xMjguNSAxNjYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJpYmJibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjI1MiA4IDggMTE5LjI1MiA4IDI1NnMxMTEuMjUyIDI0OCAyNDggMjQ4IDI0OC0xMTEuMjUyIDI0OC0yNDhTMzkyLjc0OCA4IDI1NiA4em0xNjMuOTcgMTE0LjM2NmMyOS41MDMgMzYuMDQ2IDQ3LjM2OSA4MS45NTcgNDcuODM1IDEzMS45NTUtNi45ODQtMS40NzctNzcuMDE4LTE1LjY4Mi0xNDcuNTAyLTYuODE4LTUuNzUyLTE0LjA0MS0xMS4xODEtMjYuMzkzLTE4LjYxNy00MS42MTQgNzguMzIxLTMxLjk3NyAxMTMuODE4LTc3LjQ4MiAxMTguMjg0LTgzLjUyM3pNMzk2LjQyMSA5Ny44N2MtMy44MSA1LjQyNy0zNS42OTcgNDguMjg2LTExMS4wMjEgNzYuNTE5LTM0LjcxMi02My43NzYtNzMuMTg1LTExNi4xNjgtNzkuMDQtMTI0LjAwOCA2Ny4xNzYtMTYuMTkzIDEzNy45NjYgMS4yNyAxOTAuMDYxIDQ3LjQ4OXptLTIzMC40OC0zMy4yNWM1LjU4NSA3LjY1OSA0My40MzggNjAuMTE2IDc4LjUzNyAxMjIuNTA5LTk5LjA4NyAyNi4zMTMtMTg2LjM2IDI1LjkzNC0xOTUuODM0IDI1LjgwOUM2Mi4zOCAxNDcuMjA1IDEwNi42NzggOTIuNTczIDE2NS45NDEgNjQuNjJ6TTQ0LjE3IDI1Ni4zMjNjMC0yLjE2Ni4wNDMtNC4zMjIuMTA4LTYuNDczIDkuMjY4LjE5IDExMS45MiAxLjUxMyAyMTcuNzA2LTMwLjE0NiA2LjA2NCAxMS44NjggMTEuODU3IDIzLjkxNSAxNy4xNzQgMzUuOTQ5LTc2LjU5OSAyMS41NzUtMTQ2LjE5NCA4My41MjctMTgwLjUzMSAxNDIuMzA2QzY0Ljc5NCAzNjAuNDA1IDQ0LjE3IDMxMC43MyA0NC4xNyAyNTYuMzIzem04MS44MDcgMTY3LjExM2MyMi4xMjctNDUuMjMzIDgyLjE3OC0xMDMuNjIyIDE2Ny41NzktMTMyLjc1NiAyOS43NCA3Ny4yODMgNDIuMDM5IDE0Mi4wNTMgNDUuMTg5IDE2MC42MzgtNjguMTEyIDI5LjAxMy0xNTAuMDE1IDIxLjA1My0yMTIuNzY4LTI3Ljg4MnptMjQ4LjM4IDguNDg5Yy0yLjE3MS0xMi44ODYtMTMuNDQ2LTc0Ljg5Ny00MS4xNTItMTUxLjAzMyA2Ni4zOC0xMC42MjYgMTI0LjcgNi43NjggMTMxLjk0NyA5LjA1NS05LjQ0MiA1OC45NDEtNDMuMjczIDEwOS44NDQtOTAuNzk1IDE0MS45Nzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyb3Bib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUyOCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY0LjQgMTE2LjNsLTEzMiA4NC4zIDEzMiA4NC4zLTEzMiA4NC4zTDAgMjg0LjFsMTMyLjMtODQuM0wwIDExNi4zIDEzMi4zIDMybDEzMi4xIDg0LjN6TTEzMS42IDM5NS43bDEzMi04NC4zIDEzMiA4NC4zLTEzMiA4NC4zLTEzMi04NC4zem0xMzIuOC0xMTEuNmwxMzItODQuMy0xMzItODMuNkwzOTUuNyAzMiA1MjggMTE2LjNsLTEzMi4zIDg0LjNMNTI4IDI4NC44bC0xMzIuMyA4NC4zLTEzMS4zLTg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcnVwYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAzLjk3MywxMDguMTM2QzI2OC4yLDcyLjQ1OSwyMzQuMTg3LDM4LjM1LDIyNC4wNDcsMGMtOS45NTcsMzguMzUtNDQuMjUsNzIuNDU5LTgwLjAxOSwxMDguMTM2QzkwLjQ2NywxNjEuNywyOS43MTYsMjIyLjM1NiwyOS43MTYsMzEzLjQzNmMtMi4zMzcsMTA3LjMsODIuNzUyLDE5Ni4xOCwxOTAuMDUzLDE5OC41MTdTNDE1Ljk0OCw0MjkuMiw0MTguMjg1LDMyMS45cS4wOTEtNC4yMzEsMC04LjQ2NEM0MTguMjg1LDIyMi4zNTYsMzU3LjUzNCwxNjEuNywzMDMuOTczLDEwOC4xMzZabS0xNzQuMzI2LDIyM2ExMzAuMjgyLDEzMC4yODIsMCwwLDAtMTUuMjExLDI0LjE1Myw0Ljk3OCw0Ljk3OCwwLDAsMS0zLjMxOSwyLjc2NmgtMS42NTljLTQuMzMzLDAtOS4yMTktOC40ODEtOS4yMTktOC40ODFoMGMtMS4yOS0yLjAyOC0yLjQ4OS00LjE0OS0zLjY4Ny02LjM2MWwtLjgzLTEuNzUyYy0xMS4yNDctMjUuNzItMS40NzUtNjIuMzE4LTEuNDc1LTYyLjMxOGgwYTE2MC41ODUsMTYwLjU4NSwwLDAsMSwyMy4yMzEtNDkuODczQTI5MC44LDI5MC44LDAsMCwxLDEzOC41LDIwMS42MTNsOS4yMTksOS4yMTksNDMuNTEyLDQ0LjQzNGE0Ljk3OSw0Ljk3OSwwLDAsMSwwLDYuNjM4TDE0NS43OCwzMTIuMzNoMFptOTYuNjEyLDEyNy4zMTFhNjcuMiw2Ny4yLDAsMCwxLTQ5Ljc4MS0xMTEuOTE1YzE0LjItMTYuODcxLDMxLjUyOC0zMy40NjQsNTAuMzM0LTU1LjMxMywyMi4zMDksMjMuNzg1LDM2Ljg3NSw0MC4xLDUxLjE2NCw1Ny45ODZhMjguNDEzLDI4LjQxMywwLDAsMSwyLjk1LDQuNDI1LDY1LjkwNSw2NS45MDUsMCwwLDEsMTEuOTg0LDM3Ljk4MSw2Ni42NTEsNjYuNjUxLDAsMCwxLTY2LjQ2Niw2Ni44MzZaTTM1Mi4zNzEsMzUxLjZoMGE3Ljc0Myw3Ljc0MywwLDAsMS02LjE3Niw1LjM0N0gzNDQuOWExMS4yNDksMTEuMjQ5LDAsMCwxLTYuMjY5LTUuMDdoMGEzNDguMjEsMzQ4LjIxLDAsMCwwLTM5LjQ1Ni00OC45NTJMMjgxLjM4NywyODQuNDksMjIyLjMsMjIzLjE4NWE0OTcuODg4LDQ5Ny44ODgsMCwwLDEtMzUuNC0zNi4zMjIsMTIuMDMzLDEyLjAzMywwLDAsMC0uOTIyLTEuMzgyLDM1LjQsMzUuNCwwLDAsMS00LjctOS4yMTlWMTc0LjUxYTMxLjM0NiwzMS4zNDYsMCwwLDEsOS4yMTgtMjcuNjU2YzExLjQzMi0xMS40MzEsMjIuOTU1LTIyLjk1NCwzMy44MzMtMzQuOTM5LDExLjk4NCwxMy4yNzUsMjQuOCwyNiwzNy40MjgsMzguNjI3aDBhNTMwLjk5MSw1MzAuOTkxLDAsMCwxLDY5LjYsNzkuMSwxNDcuNDk0LDE0Ny40OTQsMCwwLDEsMjcuMDExLDgzLjhBMTM0LjEwOSwxMzQuMTA5LDAsMCwxLDM1Mi4zNzEsMzUxLjZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUR5YWxvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjExOS4yaDY0Vjk2aDEwNy4yQzI4NC42IDk2IDM1MiAxNzYuMiAzNTIgMjU1LjkgMzUyIDMzMiAyOTMuNCA0MTYgMTcxLjIgNDE2SDB2NjRoMTcxLjJDMzMxLjkgNDgwIDQxNiAzNjcuMyA0MTYgMjU1LjljMC01OC43LTIyLjEtMTEzLjQtNjIuMy0xNTQuM0MzMDguOSA1NiAyNDUuNyAzMiAxNzEuMiAzMkgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJseWJpcmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy4yIDQ3LjVjMS4yLTEzIDIxLjMtMTQgMzYuNi04LjcuOS4zIDI2LjIgOS43IDE5IDE1LjItMjcuOS03LjQtNTYuNCAxOC4yLTU1LjYtNi41em0tMjAxIDYuOWMzMC43LTguMSA2MiAyMCA2MS4xLTcuMS0xLjMtMTQuMi0yMy40LTE1LjMtNDAuMi05LjYtMSAuMy0yOC43IDEwLjUtMjAuOSAxNi43ek0zMTkuNCAxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptLTE1OS43IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptMzE4LjUgMTYzLjJjLTkuOSAyNC00MC43IDExLTYzLjktMS4yLTEzLjUgNjkuMS01OC4xIDExMS40LTEyNi4zIDEyNC4yLjMuOS0yLS4xIDI0IDEgMzMuNiAxLjQgNjMuOC0zLjEgOTcuNC04LTE5LjgtMTMuOC0xMS40LTM3LjEtOS44LTM4LjEgMS40LS45IDE0LjcgMS43IDIxLjYgMTEuNSA4LjYtMTIuNSAyOC40LTE0LjggMzAuMi0xMy42IDEuNiAxLjEgNi42IDIwLjktNi45IDM0LjYgNC43LS45IDguMi0xLjYgOS44LTIuMSAyLjYtLjggMTcuNyAxMS4zIDMuMSAxMy4zLTE0LjMgMi4zLTIyLjYgNS4xLTQ3LjEgMTAuOC00NS45IDEwLjctODUuOSAxMS44LTExNy43IDEyLjhsMSAxMS42YzMuOCAxOC4xLTIzLjQgMjQuMy0yNy42IDYuMi44IDE3LjktMjcuMSAyMS44LTI4LjQtMWwtLjUgNS4zYy0uNyAxOC40LTI4LjQgMTcuOS0yOC4zLS42LTcuNSAxMy41LTI4LjEgNi44LTI2LjQtOC41bDEuMi0xMi40Yy0zNi43LjktNTkuNyAzLjEtNjEuOCAzLjEtMjAuOSAwLTIwLjktMzEuNiAwLTMxLjYgMi40IDAgMjcuNyAxLjMgNjMuMiAyLjgtNjEuMS0xNS41LTEwMy43LTU1LTExNC45LTExOC4yLTI1IDEyLjgtNTcuNSAyNi44LTY4LjIuOC0xMC41LTI1LjQgMjEuNS00Mi42IDY2LjgtNzMuNC43LTYuNiAxLjYtMTMuMyAyLjctMTkuOC0xNC40LTE5LjYtMTEuNi0zNi4zLTE2LjEtNjAuNC0xNi44IDIuNC0yMy4yLTkuMS0yMy42LTIzLjEuMy03LjMgMi4xLTE0LjkgMi40LTE1LjQgMS4xLTEuOCAxMC4xLTIgMTIuNy0yLjYgNi0zMS43IDUwLjYtMzMuMiA5MC45LTM0LjUgMTkuNy0yMS44IDQ1LjItNDEuNSA4MC45LTQ4LjNDMjAzLjMgMjkgMjE1LjIgOC41IDIxNi4yIDhjMS43LS44IDIxLjIgNC4zIDI2LjMgMjMuMiA1LjItOC44IDE4LjMtMTEuNCAxOS42LTEwLjcgMS4xLjYgNi40IDE1LTQuOSAyNS45IDQwLjMgMy41IDcyLjIgMjQuNyA5NiA1MC43IDM2LjEgMS41IDcxLjggNS45IDc3LjEgMzQgMi43LjYgMTEuNi44IDEyLjcgMi42LjMuNSAyLjEgOC4xIDIuNCAxNS40LS41IDEzLjktNi44IDI1LjQtMjMuNiAyMy4xLTMuMiAxNy4zLTIuNyAzMi45LTguNyA0Ny43IDIuNCAxMS43IDQgMjMuOCA0LjggMzYuNCAzNyAyNS40IDcwLjMgNDIuNSA2MC4zIDY2Ljl6TTIwNy40IDE1OS45Yy45LTQ0LTM3LjktNDIuMi03OC42LTQwLjMtMjEuNyAxLTM4LjkgMS45LTQ1LjUgMTMuOS0xMS40IDIwLjkgNS45IDkyLjkgMjMuMiAxMDEuMiA5LjggNC43IDczLjQgNy45IDg2LjMtNy4xIDguMi05LjQgMTUtNDkuNCAxNC42LTY3Ljd6bTUyIDU4LjNjLTQuMy0xMi40LTYtMzAuMS0xNS4zLTMyLjctMi0uNS05LS41LTExIDAtMTAgMi44LTEwLjggMjIuMS0xNyAzNy4yIDE1LjQgMCAxOS4zIDkuNyAyMy43IDkuNyA0LjMgMCA2LjMtMTEuMyAxOS42LTE0LjJ6bTEzNS43LTg0LjdjLTYuNi0xMi4xLTI0LjgtMTIuOS00Ni41LTEzLjktNDAuMi0xLjktNzguMi0zLjgtNzcuMyA0MC4zLS41IDE4LjMgNSA1OC4zIDEzLjIgNjcuOCAxMyAxNC45IDc2LjYgMTEuOCA4Ni4zIDcuMSAxNS44LTcuNiAzNi41LTc4LjkgMjQuMy0xMDEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWJheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDYgMTg5LjVsLTU0LjggMTA5LjktNTQuOS0xMDkuOWgtMzcuNWwxMC45IDIwLjZjLTExLjUtMTktMzUuOS0yNi02My4zLTI2LTMxLjggMC02Ny45IDguNy03MS41IDQzLjFoMzMuN2MxLjQtMTMuOCAxNS43LTIxLjggMzUtMjEuOCAyNiAwIDQxIDkuNiA0MSAzM3YzLjRjLTEyLjcgMC0yOCAuMS00MS43LjQtNDIuNC45LTY5LjYgMTAtNzYuNyAzNC40IDEtNS4yIDEuNS0xMC42IDEuNS0xNi4yIDAtNTIuMS0zOS43LTc2LjItNzUuNC03Ni4yLTIxLjMgMC00MyA1LjUtNTguNyAyNC4ydi04MC42aC0zMi4xdjE2OS41YzAgMTAuMy0uNiAyMi45LTEuMSAzMy4xaDMxLjVjLjctNi4zIDEuMS0xMi45IDEuMS0xOS41IDEzLjYgMTYuNiAzNS40IDI0LjkgNTguNyAyNC45IDM2LjkgMCA2NC45LTIxLjkgNzMuMy01NC4yLS41IDIuOC0uNyA1LjgtLjcgOSAwIDI0LjEgMjEuMSA0NSA2MC42IDQ1IDI2LjYgMCA0NS44LTUuNyA2MS45LTI1LjUgMCA2LjYuMyAxMy4zIDEuMSAyMC4yaDI5LjhjLS43LTguMi0xLTE3LjUtMS0yNi44di02NS42YzAtOS4zLTEuNy0xNy4yLTQuOC0yMy44bDYxLjUgMTE2LjEtMjguNSA1NC4xaDM1LjlMNjQwIDE4OS41ek0yNDMuNyAzMTMuOGMtMjkuNiAwLTUwLjItMjEuNS01MC4yLTUzLjggMC0zMi40IDIwLjYtNTMuOCA1MC4yLTUzLjggMjkuOCAwIDUwLjIgMjEuNCA1MC4yIDUzLjggMCAzMi4zLTIwLjQgNTMuOC01MC4yIDUzLjh6bTIwMC45LTQ3LjNjMCAzMC0xNy45IDQ4LjQtNTEuNiA0OC40LTI1LjEgMC0zNS0xMy40LTM1LTI1LjggMC0xOS4xIDE4LjEtMjQuNCA0Ny4yLTI1LjMgMTMuMS0uNSAyNy42LS42IDM5LjQtLjZ6bS00MTEuOSAxLjZoMTI4Ljh2LTguNWMwLTUxLjctMzMuMS03NS40LTc4LjQtNzUuNC01Ni44IDAtODMgMzAuOC04MyA3Ny42IDAgNDIuNSAyNS4zIDc0IDgyLjUgNzQgMzEuNCAwIDY4LTExLjcgNzQuNC00Ni4xaC0zMy4xYy0xMiAzNS44LTg3LjcgMzYuNy05MS4yLTIxLjZ6bTk1LTIxLjRIMzMuM2M2LjktNTYuNiA5Mi4xLTU0LjcgOTQuNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFZGdlTGVnYWN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1LjcxLDIyOC4xNmwuMzUtLjQ4YzAsLjE2LDAsLjMyLS4wNy40OFptNDYwLjU4LDE1LjUxYzAtNDQtNy43Ni04NC40Ni0yOC44MS0xMjIuNEM0MTYuNSw0Ny44OCwzNDMuOTEsOCwyNTguODksOCwxMTksNy43Miw0MC42MiwxMTMuMjEsMjYuMDYsMjI3LjY4YzQyLjQyLTYxLjMxLDExNy4wNy0xMjEuMzgsMjIwLjM3LTEyNSwwLDAsMTA5LjY3LDAsOTkuNDIsMTA1SDE3MGM2LjM3LTM3LjM5LDE4LjU1LTU5LDM0LjM0LTc4LjkzLTc1LjA1LDM0LjktMTIxLjg1LDk2LjEtMTIwLjc1LDE4OC4zMi44Myw3MS40NSw1MC4xMywxNDQuODQsMTIwLjc1LDE3Miw4My4zNSwzMS44NCwxOTIuNzcsNy4yLDI0MC4xMy0yMS4zM1YzNjMuMzFDMzYzLjYsNDE5LjgsMTczLjYsNDI0LjIzLDE3Mi4yMSwyOTUuNzRINDg2LjI5VjI0My42N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAuMSAzNy40NEMxNjEuMSAxMi4yMyAyMDcuNy0uNzc1MyAyNTUgLjAwMTZDNDIzIC4wMDE2IDUxMiAxMjMuOCA1MTIgMjE5LjVDNTExLjkgMjUyLjIgNDk5IDI4My40IDQ3Ni4xIDMwNi43QzQ1My4yIDMyOS45IDQyMi4xIDM0My4yIDM4OS40IDM0My43QzMxNC4yIDM0My43IDI5Ny45IDMyMC42IDI5Ny45IDMxMS43QzI5Ny45IDMwNy45IDI5OS4xIDMwNS41IDMwMi43IDMwMi4zTDMwMy43IDMwMS4xTDMwNC4xIDI5OS41QzMxNC42IDI4OCAzMjAgMjczLjMgMzIwIDI1Ny45QzMyMCAxNzkuMiAyMzcuOCAxMTUuMiAxMzYgMTE1LjJDOTguNDYgMTE0LjkgNjEuNDYgMTI0LjEgMjguNDggMTQyLjFDNTUuNDggODQuNTggMTExLjIgNDQuNSAxMTkuOCAzOC4yOEMxMjAuNiAzNy43MyAxMjAuMSAzNy40NCAxMjAuMSAzNy40NFYzNy40NHpNMTM1LjcgMzU1LjVDMTM0LjMgMzg1LjUgMTQwLjMgNDE1LjUgMTUyLjEgNDQyLjdDMTY1LjcgNDY5LjEgMTg0LjggNDkzLjcgMjA4LjYgNTEyQzE0OS4xIDUwMC41IDk3LjExIDQ2OC4xIDU5LjIgNDIyLjdDMjEuMTIgMzc2LjMgMCAzMTguNCAwIDI1Ny45QzAgMjA2LjcgNjIuNCAxNjMuNSAxMzYgMTYzLjVDMTcyLjYgMTYyLjkgMjA4LjQgMTc0LjQgMjM3LjggMTk2LjJMMjM0LjIgMTk3LjRDMTgyLjcgMjE1IDEzNS43IDI4OC4xIDEzNS43IDM1NS41VjM1NS41ek00NjkuOCA0MDBMNDY5LjEgNDAwLjFDNDU3LjMgNDE4LjkgNDQzLjIgNDM1LjIgNDI2LjkgNDQ5LjZDMzk2LjEgNDc3LjYgMzU4LjggNDk1LjEgMzE4LjEgNDk5LjVDMjk5LjUgNDk5LjggMjgxLjMgNDk2LjMgMjY0LjMgNDg4LjFDMjM4LjcgNDc3LjggMjE3LjIgNDU4LjEgMjAyLjcgNDM1LjFDMTg4LjMgNDExLjIgMTgxLjYgMzgzLjQgMTgzLjcgMzU1LjVDMTgzLjEgMzM1LjQgMTg5LjEgMzE1LjIgMTk4LjcgMjk3LjNDMjEyLjYgMzMwLjQgMjM2LjIgMzU4LjYgMjY2LjMgMzc4LjFDMjk2LjQgMzk3LjYgMzMxLjggNDA3LjYgMzY3LjcgNDA2LjdDMzk4LjcgNDA3IDQyOS44IDQwMCA0NTcuOSAzODYuMkw0NTkuOCAzODUuM0M0NjMuNyAzODMgNDY3LjUgMzgxLjQgNDcxLjQgMzg1LjNDNDc1LjkgMzkwLjIgNDczLjIgMzk0LjUgNDcwLjIgMzk5LjNDNDcwIDM5OS41IDQ2OS45IDM5OS44IDQ2OS44IDQwMFY0MDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVsZW1lbnRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMzYxIDI1NkMuMzYxIDM5NyAxMTQgNTExIDI1NSA1MTFDMzk3IDUxMSA1MTEgMzk3IDUxMSAyNTZDNTExIDExNiAzOTcgMi4wNSAyNTUgMi4wNUMxMTQgMi4wNSAuMzYxIDExNiAuMzYxIDI1NnpNMTkyIDE1MFYzNjNIMTQ5VjE1MEgxOTJ6TTIzNCAxNTBIMzYyVjE5M0gyMzRWMTUwek0zNjIgMjM1VjI3OEgyMzRWMjM1SDM2MnpNMjM0IDMyMEgzNjJWMzYzSDIzNFYzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVsbG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTQzLjg0IDI4NS4yQzM3NS4zMSAzNTguNTEgMzE1Ljc5IDQwNC44IDI0OCA0MDQuOHMtMTI3LjMxLTQ2LjI5LTE0My44NC0xMTEuNmMtMS42NS03LjQ0IDIuNDgtMTUuNzEgOS45Mi0xNy4zNiA3LjQ0LTEuNjUgMTUuNzEgMi40OCAxNy4zNiA5LjkyIDE0LjA1IDUyLjkxIDYyIDkwLjExIDExNi41NiA5MC4xMXMxMDIuNTEtMzcuMiAxMTYuNTYtOTAuMTFjMS42NS03LjQ0IDkuOTItMTIuNCAxNy4zNi05LjkyIDcuNDQgMS42NSAxMi40IDkuOTIgOS45MiAxNy4zNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW1iZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM5LjkgMjU0LjZjLTEuMS0xMC43LTEwLjctNi44LTEwLjctNi44cy0xNS42IDEyLjEtMjkuMyAxMC43Yy0xMy43LTEuMy05LjQtMzItOS40LTMyczMtMjguMS01LjEtMzAuNGMtOC4xLTIuNC0xOCA3LjMtMTggNy4zcy0xMi40IDEzLjctMTguMyAzMS4ybC0xLjYuNXMxLjktMzAuNi0uMy0zNy42Yy0xLjYtMy41LTE2LjQtMy4yLTE4LjggM3MtMTQuMiA0OS4yLTE1IDY3LjJjMCAwLTIzLjEgMTkuNi00My4zIDIyLjhzLTI1LTkuNC0yNS05LjQgNTQuOC0xNS4zIDUyLjktNTkuMS00NC4yLTI3LjYtNDktMjRjLTQuNiAzLjUtMjkuNCAxOC40LTM2LjYgNTkuNy0uMiAxLjQtLjcgNy41LS43IDcuNXMtMjEuMiAxNC4yLTMzIDE4YzAgMCAzMy01NS42LTcuMy04MC45LTExLjQtNi44LTIxLjMtLjUtMjcuMiA1LjMgMTMuNi0xNy4zIDQ2LjQtNjQuMiAzNi45LTEwNS4yLTUuOC0yNC40LTE4LTI3LjEtMjkuMi0yMy4xLTE3IDYuNy0yMy41IDE2LjctMjMuNSAxNi43cy0yMiAzMi0yNy4xIDc5LjUtMTIuNiAxMDUuMS0xMi42IDEwNS4xLTEwLjUgMTAuMi0yMC4yIDEwLjctNS40LTI4LjctNS40LTI4LjcgNy41LTQ0LjYgNy01Mi4xLTEuMS0xMS42LTkuOS0xNC4yYy04LjktMi43LTE4LjUgOC42LTE4LjUgOC42cy0yNS41IDM4LjctMjcuNyA0NC42bC0xLjMgMi40LTEuMy0xLjZzMTgtNTIuNy44LTUzLjUtMjguNSAxOC44LTI4LjUgMTguOC0xOS42IDMyLjgtMjAuNCAzNi41bC0xLjMtMS42czguMS0zOC4yIDYuNC00Ny42Yy0xLjYtOS40LTEwLjUtNy41LTEwLjUtNy41cy0xMS4zLTEuMy0xNC4yIDUuOS0xMy43IDU1LjMtMTUgNzAuN2MwIDAtMjguMiAyMC4yLTQ2LjggMjAuNC0xOC41LjMtMTYuNy0xMS44LTE2LjctMTEuOHM2OC0yMy4zIDQ5LjQtNjkuMmMtOC4zLTExLjgtMTgtMTUuNS0zMS43LTE1LjMtMTMuNy4zLTMwLjMgOC42LTQxLjMgMzMuMy01LjMgMTEuOC02LjggMjMtNy44IDMxLjUgMCAwLTEyLjMgMi40LTE4LjgtMi45cy0xMCAwLTEwIDAtMTEuMiAxNC0uMSAxOC4zIDI4LjEgNi4xIDI4LjEgNi4xYzEuNiA3LjUgNi4yIDE5LjUgMTkuNiAyOS43IDIwLjIgMTUuMyA1OC44LTEuMyA1OC44LTEuM2wxNS45LTguOHMuNSAxNC42IDEyLjEgMTYuNyAxNi40IDEgMzYuNS00Ny45YzExLjgtMjUgMTIuNi0yMy42IDEyLjYtMjMuNmwxLjMtLjNzLTkuMSA0Ni44LTUuNiA1OS43QzE4Ny43IDMxOS40IDIwMyAzMTggMjAzIDMxOHM4LjMgMi40IDE1LTIxLjIgMTkuNi00OS45IDE5LjYtNDkuOWgxLjZzLTUuNiA0OC4xIDMgNjMuNyAzMC45IDUuMyAzMC45IDUuMyAxNS42LTcuOCAxOC0xMC4yYzAgMCAxOC41IDE1LjggNDQuNiAxMi45IDU4LjMtMTEuNSA3OS4xLTI1LjkgNzkuMS0yNS45czEwIDI0LjQgNDEuMSAyNi43YzM1LjUgMi43IDU0LjgtMTguNiA1NC44LTE4LjZzLS4zIDEzLjUgMTIuMSAxOC42IDIwLjctMjIuOCAyMC43LTIyLjhsMjAuNy01Ny4yaDEuOXMxLjEgMzcuMyAyMS41IDQzLjIgNDctMTMuNyA0Ny0xMy43IDYuNC0zLjUgNS4zLTE0LjN6bS01NzggNS4zYy44LTMyIDIxLjgtNDUuOSAyOS0zOSA3LjMgNyA0LjYgMjItOS4xIDMxLjQtMTMuNyA5LjUtMTkuOSA3LjYtMTkuOSA3LjZ6bTI3Mi44LTEyMy44czE5LjEtNDkuNyAyMy42LTI1LjUtNDAgOTYuMi00MCA5Ni4yYy41LTE2LjIgMTYuNC03MC43IDE2LjQtNzAuN3ptMjIuOCAxMzguNGMtMTIuNiAzMy00My4zIDE5LjYtNDMuMyAxOS42cy0zLjUtMTEuOCA2LjQtNDQuOSAzMy4zLTIwLjIgMzMuMy0yMC4yIDE2LjIgMTIuNCAzLjYgNDUuNXptODQuNi0xNC42cy0zLTEwLjUgOC4xLTMwLjZjMTEtMjAuMiAxOS42LTkuMSAxOS42LTkuMXM5LjQgMTAuMi0xLjMgMjUuNS0yNi40IDE0LjItMjYuNCAxNC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbXBpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg3LjYgNTQuMmMtMTAuOC0yLjItMjIuMS0zLjMtMzMuNS0zLjZWMzIuNGM3OC4xIDIuMiAxNDYuMSA0NCAxODQuNiAxMDYuNmwtMTUuOCA5LjFjLTYuMS05LjctMTIuNy0xOC44LTIwLjItMjcuMWwtMTggMTUuNWMtMjYtMjkuNi02MS40LTUwLjctMTAxLjktNTguNGw0LjgtMjMuOXpNNTMuNCAzMjIuNGwyMy03LjdjLTYuNC0xOC4zLTEwLTM4LjItMTAtNTguN3MzLjMtNDAuNCA5LjctNTguN2wtMjIuNy03LjdjMy42LTEwLjggOC4zLTIxLjMgMTMuNi0zMWwtMTUuOC05LjFDMzQgMTgxIDI0LjEgMjE3LjUgMjQuMSAyNTZzMTAgNzUgMjcuMSAxMDYuNmwxNS44LTkuMWMtNS4zLTEwLTkuNy0yMC4zLTEzLjYtMzEuMXpNMjEzLjEgNDM0Yy00MC40LTgtNzUuOC0yOS4xLTEwMS45LTU4LjdsLTE4IDE1LjhjLTcuNS04LjYtMTQuNC0xNy43LTIwLjItMjcuNGwtMTYgOS40YzM4LjUgNjIuMyAxMDYuOCAxMDQuMyAxODQuOSAxMDYuNnYtMTguM2MtMTEuMy0uMy0yMi43LTEuNy0zMy41LTMuNmw0LjctMjMuOHpNOTMuMyAxMjAuOWwxOCAxNS41YzI2LTI5LjYgNjEuNC01MC43IDEwMS45LTU4LjRsLTQuNy0yMy44YzEwLjgtMi4yIDIyLjEtMy4zIDMzLjUtMy42VjMyLjRDMTYzLjkgMzQuNiA5NS45IDc2LjQgNTcuNCAxMzlsMTUuOCA5LjFjNi05LjcgMTIuNi0xOC45IDIwLjEtMjcuMnptMzA5LjQgMjcwLjJsLTE4LTE1LjhjLTI2IDI5LjYtNjEuNCA1MC43LTEwMS45IDU4LjdsNC43IDIzLjhjLTEwLjggMS45LTIyLjEgMy4zLTMzLjUgMy42djE4LjNjNzguMS0yLjIgMTQ2LjQtNDQuMyAxODQuOS0xMDYuNmwtMTYuMS05LjRjLTUuNyA5LjctMTIuNiAxOC44LTIwLjEgMjcuNHpNNDk2IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTMCAzOTMgMCAyNTYgMTExIDggMjQ4IDhzMjQ4IDExMSAyNDggMjQ4em0tMTIuMiAwYzAtMTMwLjEtMTA1LjctMjM1LjgtMjM1LjgtMjM1LjhTMTIuMiAxMjUuOSAxMi4yIDI1NiAxMTcuOSA0OTEuOCAyNDggNDkxLjggNDgzLjggMzg2LjEgNDgzLjggMjU2em0tMzktMTA2LjZsLTE1LjggOS4xYzUuMyA5LjcgMTAgMjAuMiAxMy42IDMxbC0yMi43IDcuN2M2LjQgMTguMyA5LjcgMzguMiA5LjcgNTguN3MtMy42IDQwLjQtMTAgNTguN2wyMyA3LjdjLTMuOSAxMC44LTguMyAyMS0xMy42IDMxbDE1LjggOS4xQzQ2MiAzMzEgNDcxLjkgMjk0LjUgNDcxLjkgMjU2cy05LjktNzUtMjcuMS0xMDYuNnptLTE4MyAxNzcuN2MxNi4zLTMuMyAzMC40LTExLjYgNDAuNy0yMy41bDUxLjIgNDQuOGMxMS45LTEzLjYgMjEuMy0yOS4zIDI3LjEtNDYuOGwtNjQuMi0yMi4xYzIuNS03LjUgMy45LTE1LjIgMy45LTIzLjVzLTEuNC0xNi4xLTMuOS0yMy41bDY0LjUtMjIuMWMtNi4xLTE3LjQtMTUuNS0zMy4yLTI3LjQtNDYuOGwtNTEuMiA0NC44Yy0xMC4yLTExLjktMjQuNC0yMC41LTQwLjctMjMuOGwxMy4zLTY2LjRjLTguNi0xLjktMTcuNy0yLjgtMjcuMS0yLjgtOS40IDAtMTguNS44LTI3LjEgMi44bDEzLjMgNjYuNGMtMTYuMyAzLjMtMzAuNCAxMS45LTQwLjcgMjMuOGwtNTEuMi00NC44Yy0xMS45IDEzLjYtMjEuMyAyOS4zLTI3LjQgNDYuOGw2NC41IDIyLjFjLTIuNSA3LjUtMy45IDE1LjItMy45IDIzLjVzMS40IDE2LjEgMy45IDIzLjVsLTY0LjIgMjIuMWM1LjggMTcuNCAxNS4yIDMzLjIgMjcuMSA0Ni44bDUxLjItNDQuOGMxMC4yIDExLjkgMjQuNCAyMC4yIDQwLjcgMjMuNWwtMTMuMyA2Ni43YzguNiAxLjcgMTcuNyAyLjggMjcuMSAyLjggOS40IDAgMTguNS0xLjEgMjcuMS0yLjhsLTEzLjMtNjYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52aXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJjNDc3LjYgMCAzNjYuNiAzMTcuMyAzNjcuMSAzNjYuM0w0NDggNDgwaC0yNmwtNzAuNC03MS4yYy0zOSA0LjItMTI0LjQgMzQuNS0yMTQuNC0zN0M0NyAzMDAuMyA1MiAyMTQuNyAwIDMyem03OS43IDQ2Yy00OS43LTIzLjUtNS4yIDkuMi01LjIgOS4yIDQ1LjIgMzEuMiA2NiA3My43IDkwLjIgMTE5LjkgMzEuNSA2MC4yIDc5IDEzOS43IDE0NC4yIDE2Ny43IDY1IDI4IDM0LjIgMTIuNSA2LTguNS0yOC4yLTIxLjItNjguMi04Ny05MS0xMzAuMi0zMS43LTYwLTYxLTExOC42LTE0NC4yLTE1OC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFcmxhbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODcuMiA1My41SDB2NDA1aDEwMC40Yy00OS43LTUyLjYtNzguOC0xMjUuMy03OC43LTIxMi4xLS4xLTc2LjcgMjQtMTQyLjcgNjUuNS0xOTIuOXptMjM4LjIgOS43Yy00NS45LjEtODUuMSAzMy41LTg5LjIgODMuMmgxNjkuOWMtMS4xLTQ5LjctMzQuNS04My4xLTgwLjctODMuMnptMjMwLjctOS42aC4zbC0uMS0uMXptLjMgMGMzMS40IDQyLjcgNDguNyA5Ny41IDQ2LjIgMTYyLjcuNSA2IC41IDExLjcgMCAyNC4xSDIzMC4yYy0uMiAxMDkuNyAzOC45IDE5NC45IDEzOC42IDE5NS4zIDY4LjUtLjMgMTE4LTUxIDE1MS45LTEwNi4xbDk2LjQgNDguMmMtMTcuNCAzMC45LTM2LjUgNTcuOC01Ny45IDgwLjhINjQwdi00MDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0aGVyZXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMS45IDI2MC44TDE2MCAzNTMuNiA4IDI2MC44IDE2MCAwbDE1MS45IDI2MC44ek0xNjAgMzgzLjRMOCAyOTAuNiAxNjAgNTEybDE1Mi0yMjEuNC0xNTIgOTIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXRzeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzQ4Yy0xLjc1IDEwLjc1LTEzLjc1IDExMC0xNS41IDEzMi0xMTcuODc5LTQuMjk5LTIxOS44OTUtNC43NDMtMzY4LjUgMHYtMjUuNWM0NS40NTctOC45NDggNjAuNjI3LTguMDE5IDYxLTM1LjI1IDEuNzkzLTcyLjMyMiAzLjUyNC0yNDQuMTQzIDAtMzIyLTEuMDI5LTI4LjQ2LTEyLjEzLTI2Ljc2NS02MS0zNnYtMjUuNWM3My44ODYgMi4zNTggMjU1LjkzMyA4LjU1MSAzNjIuOTk5LTMuNzUtMy41IDM4LjI1LTcuNzUgMTI2LjUtNy43NSAxMjYuNUgzMzJDMzIwLjk0NyAxMTUuNjY1IDMxMy4yNDEgNjggMjc3LjI1IDY4aC0xMzdjLTEwLjI1IDAtMTAuNzUgMy41LTEwLjc1IDkuNzVWMjQxLjVjNTggLjUgODguNS0yLjUgODguNS0yLjUgMjkuNzctLjk1MSAyNy41Ni04LjUwMiA0MC43NS02NS4yNTFoMjUuNzVjLTQuNDA3IDEwMS4zNTEtMy45MSA2MS44MjktMS43NSAxNjAuMjVIMjU3Yy05LjE1NS00MC4wODYtOS4wNjUtNjEuMDQ1LTM5LjUwMS02MS41IDAgMC0yMS41LTItODgtMnYxMzljMCAyNiAxNC4yNSAzOC4yNSA0NC4yNSAzOC4yNUgyNjNjNjMuNjM2IDAgNjYuNTY0LTI0Ljk5NiA5OC43NTEtOTkuNzVIMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdmVybm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAuODIgMTMyLjIxYzEuNiAyMi4zMS0xNy41NSAyMS41OS0yMS42MSAyMS41OS02OC45MyAwLTczLjY0LTEtODMuNTggMy4zNC0uNTYuMjItLjc0IDAtLjM3LS4zN0wxMjMuNzkgNDYuNDVjLjM4LS4zNy42LS4yMi4zOC4zNy00LjM1IDkuOTktMy4zNSAxNS4wOS0zLjM1IDg1LjM5em03OSAzMDhjLTE0LjY4LTM3LjA4IDEzLTc2LjkzIDUyLjUyLTc2LjYyIDE3LjQ5IDAgMjIuNiAyMy4yMSA3Ljk1IDMxLjQyLTYuMTkgMy4zLTI0Ljk1IDEuNzQtMjUuMTQgMTkuMi0uMDUgMTcuMDkgMTkuNjcgMjUgMzEuMiAyNC44OUE0NS42NCA0NS42NCAwIDAgMCAzMTIgMzkzLjQ1di0uMDhjMC0xMS42My03Ljc5LTQ3LjIyLTQ3LjU0LTU1LjM0LTcuNzItMS41NC02NS02LjM1LTY4LjM1LTUwLjUyLTMuNzQgMTYuOTMtMTcuNCA2My40OS00My4xMSA2OS4wOS04Ljc0IDEuOTQtNjkuNjggNy42NC0xMTIuOTItMzYuNzcgMCAwLTE4LjU3LTE1LjIzLTI4LjIzLTU3Ljk1LTMuMzgtMTUuNzUtOS4yOC0zOS43LTExLjE0LTYyIDAtMTggMTEuMTQtMzAuNDUgMjUuMDctMzIuMiA4MSAwIDkwIDIuMzIgMTAxLTcuOCA5LjgyLTkuMjQgNy44LTE1LjUgNy44LTEwMi43OCAxLTguMyA3Ljc5LTMwLjgxIDUzLjQxLTI0LjE0IDYgLjg2IDMxLjkxIDQuMTggMzcuNDggMzAuNjRsNjQuMjYgMTEuMTVjMjAuNDMgMy43MSA3MC45NCA3IDgwLjYgNTcuOTQgMjIuNjYgMTIxLjA5IDguOTEgMjM4LjQ2IDcuOCAyMzguNDZDMzYyLjE1IDQ4NS41MyAyNjcuMDYgNDgwIDI2Ny4wNiA0ODBjLTE4Ljk1LS4yMy01NC4yNS05LjQtNjcuMjctMzkuODN6bTgwLjk0LTIwNC44NGMtMSAxLjkyLTIuMiA2IC44NSA3IDE0LjA5IDQuOTMgMzkuNzUgNi44NCA0NS44OCA1LjUzIDMuMTEtLjI1IDMuMDUtNC40MyAyLjQ4LTYuNjUtMy41My0yMS44NS00MC44My0yNi41LTQ5LjI0LTUuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4cGVkaXRlZHNzbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNDMuNEMxMzAuNiA0My40IDM1LjQgMTM4LjYgMzUuNCAyNTZTMTMwLjYgNDY4LjYgMjQ4IDQ2OC42IDQ2MC42IDM3My40IDQ2MC42IDI1NiAzNjUuNCA0My40IDI0OCA0My40em0tOTcuNCAxMzIuOWMwLTUzLjcgNDMuNy05Ny40IDk3LjQtOTcuNHM5Ny40IDQzLjcgOTcuNCA5Ny40djI2LjZjMCA1LTMuOSA4LjktOC45IDguOWgtMTcuN2MtNSAwLTguOS0zLjktOC45LTguOXYtMjYuNmMwLTgyLjEtMTI0LTgyLjEtMTI0IDB2MjYuNmMwIDUtMy45IDguOS04LjkgOC45aC0xNy43Yy01IDAtOC45LTMuOS04LjktOC45di0yNi42ek0zODkuNyAzODBjMCA5LjctOCAxNy43LTE3LjcgMTcuN0gxMjRjLTkuNyAwLTE3LjctOC0xNy43LTE3LjdWMjM4LjNjMC05LjcgOC0xNy43IDE3LjctMTcuN2gyNDhjOS43IDAgMTcuNyA4IDE3LjcgMTcuN1YzODB6bS0yNDgtMTM3LjN2MTMyLjljMCAyLjUtMS45IDQuNC00LjQgNC40aC04LjljLTIuNSAwLTQuNC0xLjktNC40LTQuNFYyNDIuN2MwLTIuNSAxLjktNC40IDQuNC00LjRoOC45YzIuNSAwIDQuNCAxLjkgNC40IDQuNHptMTQxLjcgNDguN2MwIDEzLTcuMiAyNC40LTE3LjcgMzAuNHYzMS42YzAgNS0zLjkgOC45LTguOSA4LjloLTE3LjdjLTUgMC04LjktMy45LTguOS04Ljl2LTMxLjZjLTEwLjUtNi4xLTE3LjctMTcuNC0xNy43LTMwLjQgMC0xOS43IDE1LjgtMzUuNCAzNS40LTM1LjRzMzUuNSAxNS44IDM1LjUgMzUuNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NzguM0MxMjEgNDg2LjMgMTcuNyAzODMgMTcuNyAyNTZTMTIxIDI1LjcgMjQ4IDI1LjcgNDc4LjMgMTI5IDQ3OC4zIDI1NiAzNzUgNDg2LjMgMjQ4IDQ4Ni4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9va0YgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMjk5LjNWNTEySDE5NlYyOTkuM2g4Ni41bDE4LTk3LjhIMTk2VjE2Ni45YzAtNTEuNyAyMC4zLTcxLjUgNzIuNy03MS41YzE2LjMgMCAyOS40IC40IDM3IDEuMlY3LjlDMjkxLjQgNCAyNTYuNCAwIDIzNi4yIDBDMTI5LjMgMCA4MCA1MC41IDgwIDE1OS40djQyLjFIMTR2OTcuOEg4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZWJvb2tNZXNzZW5nZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LjU1IDhDMTE2LjUyIDggOCAxMTAuMzQgOCAyNDguNTdjMCA3Mi4zIDI5LjcxIDEzNC43OCA3OC4wNyAxNzcuOTQgOC4zNSA3LjUxIDYuNjMgMTEuODYgOC4wNSA1OC4yM0ExOS45MiAxOS45MiAwIDAgMCAxMjIgNTAyLjMxYzUyLjkxLTIzLjMgNTMuNTktMjUuMTQgNjIuNTYtMjIuN0MzMzcuODUgNTIxLjggNTA0IDQyMy43IDUwNCAyNDguNTcgNTA0IDExMC4zNCAzOTYuNTkgOCAyNTYuNTUgOHptMTQ5LjI0IDE4NS4xM2wtNzMgMTE1LjU3YTM3LjM3IDM3LjM3IDAgMCAxLTUzLjkxIDkuOTNsLTU4LjA4LTQzLjQ3YTE1IDE1IDAgMCAwLTE4IDBsLTc4LjM3IDU5LjQ0Yy0xMC40NiA3LjkzLTI0LjE2LTQuNi0xNy4xMS0xNS42N2w3My0xMTUuNTdhMzcuMzYgMzcuMzYgMCAwIDEgNTMuOTEtOS45M2w1OC4wNiA0My40NmExNSAxNSAwIDAgMCAxOCAwbDc4LjQxLTU5LjM4YzEwLjQ0LTcuOTggMjQuMTQgNC41NCAxNy4wOSAxNS42MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZWJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDI1NkM1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMFMwIDExNC42IDAgMjU2QzAgMzc2IDgyLjcgNDc2LjggMTk0LjIgNTA0LjVWMzM0LjJIMTQxLjRWMjU2aDUyLjhWMjIyLjNjMC04Ny4xIDM5LjQtMTI3LjUgMTI1LTEyNy41YzE2LjIgMCA0NC4yIDMuMiA1NS43IDYuNFYxNzJjLTYtLjYtMTYuNS0xLTI5LjYtMWMtNDIgMC01OC4yIDE1LjktNTguMiA1Ny4yVjI1Nmg4My42bC0xNC40IDc4LjJIMjg3VjUxMC4xQzQxMy44IDQ5NC44IDUxMiAzODYuOSA1MTIgMjU2aDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhbnRhc3lGbGlnaHRHYW1lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzIuODZMMzIuODYgMjU2IDI1NiA0NzkuMTQgNDc5LjE0IDI1NiAyNTYgMzIuODZ6TTg4LjM0IDI1NS44M2MxLjk2LTIgMTEuOTItMTIuMyA5Ni40OS05Ny40OCA0MS40NS00MS43NSA4Ni4xOS00My43NyAxMTkuNzctMTguNjkgMjQuNjMgMTguNCA2Mi4wNiA1OC45IDYyLjE1IDU5IC42OC43NCAxLjA3IDIuODYuNTggMy4zOC0xMS4yNyAxMS44NC0yMi42OCAyMy41NC0zMy41IDM0LjY5LTM0LjIxLTMyLjMxLTQwLjUyLTM4LjI0LTQ4LjUxLTQzLjk1LTE3Ljc3LTEyLjY5LTQxLjQtMTAuMTMtNTYuOTggNS4xLTIuMTcgMi4xMy0xLjc5IDMuNDMuMTIgNS4zNSAyLjk0IDIuOTUgMjguMSAyOC4zMyAzNS4wOSAzNS43OC0xMS45NSAxMS42LTIzLjY2IDIyLjk3LTM1LjY5IDM0LjY2LTEyLjAyLTEyLjU0LTI0LjQ4LTI1LjUzLTM2LjU0LTM4LjExLTIxLjM5IDIxLjA5LTQxLjY5IDQxLjExLTYxLjg1IDYwLjk5em0yMzQuODIgMTAxLjZjLTM1LjQ5IDM1LjQzLTc4LjA5IDM4LjE0LTEwNi45OSAyMC40Ny0yMi4wOC0xMy41LTM5LjM4LTMyLjA4LTcyLjkzLTY2Ljg0IDEyLjA1LTEyLjM3IDIzLjc5LTI0LjQyIDM1LjM3LTM2LjMxIDMzLjAyIDMxLjkxIDM3LjA2IDM2LjAxIDQ0LjY4IDQyLjA5IDE4LjQ4IDE0Ljc0IDQyLjUyIDEzLjY3IDU5LjMyLTEuOCAzLjY4LTMuMzkgMy42OS0zLjY0LjE0LTcuMjQtMTAuNTktMTAuNzMtMjEuMTktMjEuNDQtMzEuNzctMzIuMTgtMS4zMi0xLjM0LTMuMDMtMi40OC0uOC00LjY5IDEwLjc5LTEwLjcxIDIxLjQ4LTIxLjUyIDMyLjIxLTMyLjI5LjI2LS4yNi42NS0uMzggMS45MS0xLjA3IDEyLjM3IDEyLjg3IDI0LjkyIDI1LjkyIDM3LjI1IDM4Ljc1IDIxLjAxLTIwLjczIDQxLjI0LTQwLjY4IDYxLjI1LTYwLjQyIDEzLjY4IDEzLjQgMjcuMTMgMjYuNTggNDAuODYgNDAuMDMtMjAuMTcgMjAuODYtODEuNjggODIuNzEtMTAwLjUgMTAxLjV6TTI1NiAwTDAgMjU2bDI1NiAyNTYgMjU2LTI1NkwyNTYgMHpNMTYgMjU2TDI1NiAxNmwyNDAgMjQwLTI0MCAyNDBMMTYgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGZWRleCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01ODYgMjg0LjVsNTMuMy01OS45aC02Mi40bC0yMS43IDI0LjgtMjIuNS0yNC44SDQxNHYtMTZoNTYuMXYtNDguMUgzMTguOVYyMzZoLS41Yy05LjYtMTEtMjEuNS0xNC44LTM1LjQtMTQuOC0yOC40IDAtNDkuOCAxOS40LTU3LjMgNDQuOS0xOC01OS40LTk3LjQtNTcuNi0xMjEuOS0xNHYtMjQuMkg0OXYtMjYuMmg2MHYtNDEuMUgwVjM0NWg0OXYtNzcuNWg0OC45Yy0xLjUgNS43LTIuMyAxMS44LTIuMyAxOC4yIDAgNzMuMSAxMDIuNiA5MS40IDEzMC4yIDIzLjdoLTQyYy0xNC43IDIwLjktNDUuOCA4LjktNDUuOC0xNC42aDg1LjVjMy43IDMwLjUgMjcuNCA1Ni45IDYwLjEgNTYuOSAxNC4xIDAgMjctNi45IDM0LjktMTguNmguNVYzNDVoMjEyLjJsMjIuMS0yNSAyMi4zIDI1SDY0MGwtNTQtNjAuNXptLTQ0Ni43LTE2LjZjNi4xLTI2LjMgNDEuNy0yNS42IDQ2LjUgMGgtNDYuNXptMTUzLjQgNDguOWMtMzQuNiAwLTM0LTYyLjggMC02Mi44IDMyLjYgMCAzNC41IDYyLjggMCA2Mi44em0xNjcuOCAxOS4xaC05NC40VjE2OS40aDk1djMwLjJINDA1djMzLjloNTUuNXYyOC4xaC01Ni4xdjQ0LjdoNTYuMXYyOS42em0tNDUuOS0zOS44di0yNC40aDU2LjF2LTQ0bDUwLjcgNTctNTAuNyA1N3YtNDUuNmgtNTYuMXptMTM4LjYgMTAuM2wtMjYuMSAyOS41SDQ4OWw0NS42LTUxLjItNDUuNi01MS4yaDM5LjdsMjYuNiAyOS4zIDI1LjYtMjkuM2gzOC41bC00NS40IDUxIDQ2IDUxLjRoLTQwLjVsLTI2LjMtMjkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVkb3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS4wNDEzIDI1NS44Qy4xMjE5IDEzMi4yIDEwMC4zIDMyIDIyNCAzMkMzNDcuNyAzMiA0NDggMTMyLjMgNDQ4IDI1NkM0NDggMzc5LjcgMzQ3LjggNDc5LjkgMjI0LjEgNDgwSDUwLjkzQzIyLjg0IDQ4MCAuMDgzMiA0NTcuMyAuMDQxNiA0MjkuMkgwVjI1NS44SC4wNDEzek0zNDIuNiAxOTIuN0MzNDIuNiAxNTMgMzA3IDEyNC4yIDI2OS40IDEyNC4yQzIzNC41IDEyNC4yIDIwMy42IDE1MC41IDE5OS4zIDE4NC4xQzE5OS4xIDE4Ny45IDE5OC45IDE4OS4xIDE5OC45IDE5Mi42QzE5OC44IDIxMy43IDE5OC45IDIzNS40IDE5OC4xIDI1N0MxOTkgMjgzLjEgMTk5LjEgMzA5LjEgMTk4LjEgMzMzLjZDMTk4LjEgMzYwLjcgMTc4LjcgMzc5LjEgMTUzLjQgMzc5LjFDMTI4LjEgMzc5LjEgMTA3LjYgMzU4LjkgMTA3LjYgMzMzLjZDMTA4LjEgMzA1LjkgMTMwLjIgMjg4LjMgMTU2LjEgMjg3LjVIMTU2LjNMMTgyLjYgMjg3LjNWMjUwTDE1Ni4zIDI1MC4yQzEwOS4yIDI0OS44IDcxLjcyIDI4Ni43IDcwLjM2IDMzMy42QzcwLjM2IDM3OS4yIDEwNy45IDQxNi41IDE1My40IDQxNi41QzE5Ni40IDQxNi41IDIzMi4xIDM4Mi45IDIzNiAzNDAuOUwyMzYuMiAyODcuNEwyNjguOCAyODcuMUMyOTQuMSAyODcuMyAyOTMuOCAyNDkuMyAyNjguNiAyNDkuOEwyMzYuMiAyNTAuMUMyMzYuMiAyNDMuNyAyMzYuMyAyMzcuMyAyMzYuMyAyMzAuOUMyMzYuNCAyMTguMiAyMzYuNCAyMDUuNSAyMzYuMiAxOTIuN0MyMzYuMyAxNzYuMiAyNTIgMTYxLjUgMjY5LjQgMTYxLjVDMjg2LjkgMTYxLjUgMzA1LjMgMTcwLjIgMzA1LjMgMTkyLjdDMzA1LjMgMTk1LjkgMzA1LjIgMTk3LjggMzA1IDE5OUMzMDMuMSAyMDkuNSAzMTAuMiAyMTkuNCAzMjAuNyAyMjAuOUMzMzEuMyAyMjIuNCAzNDAuOSAyMTQuOCAzNDEuOSAyMDQuM0MzNDIuNSAyMDAuMSAzNDIuNiAxOTYuNCAzNDIuNiAxOTIuN0gzNDIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlnbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOTUuNzkyNEMxNCA0Mi44ODc3IDU2Ljg4NzggMCAxMDkuNzkzIDBIMjc0LjE2MUMzMjcuMDY2IDAgMzY5Ljk1NCA0Mi44ODc3IDM2OS45NTQgOTUuNzkyNEMzNjkuOTU0IDEyOS4yOTIgMzUyLjc1OCAxNTguNzc2IDMyNi43MTEgMTc1Ljg5N0MzNTIuNzU4IDE5My4wMTkgMzY5Ljk1NCAyMjIuNTAyIDM2OS45NTQgMjU2LjAwMkMzNjkuOTU0IDMwOC45MDcgMzI3LjA2NiAzNTEuNzk1IDI3NC4xNjEgMzUxLjc5NUgyNzIuMDgxQzI0Ny4yNzkgMzUxLjc5NSAyMjQuNjc4IDM0Mi4zNjkgMjA3LjY2NiAzMjYuOTA0VjQxNS4xNjdDMjA3LjY2NiA0NjguNzc3IDE2My42NTcgNTEyIDExMC4zMDkgNTEyQzU3LjUzNjEgNTEyIDE0IDQ2OS4yNDMgMTQgNDE2LjIwN0MxNCAzODIuNzA5IDMxLjE5NDUgMzUzLjIyNyA1Ny4yMzkyIDMzNi4xMDVDMzEuMTk0NSAzMTguOTgzIDE0IDI4OS41IDE0IDI1Ni4wMDJDMTQgMjIyLjUwMiAzMS4xOTYgMTkzLjAxOSA1Ny4yNDI1IDE3NS44OTdDMzEuMTk2IDE1OC43NzYgMTQgMTI5LjI5MiAxNCA5NS43OTI0Wk0xNzYuMjg4IDE5MS41ODdIMTA5Ljc5M0M3NC4yMTcyIDE5MS41ODcgNDUuMzc3OCAyMjAuNDI3IDQ1LjM3NzggMjU2LjAwMkM0NS4zNzc4IDI5MS40NCA3My45OTQ4IDMyMC4xOTQgMTA5LjM4MSAzMjAuNDE2QzEwOS41MTggMzIwLjQxNSAxMDkuNjU1IDMyMC40MTUgMTA5Ljc5MyAzMjAuNDE1SDE3Ni4yODhWMTkxLjU4N1pNMjA3LjY2NiAyNTYuMDAyQzIwNy42NjYgMjkxLjU3NyAyMzYuNTA1IDMyMC40MTcgMjcyLjA4MSAzMjAuNDE3SDI3NC4xNjFDMzA5LjczNyAzMjAuNDE3IDMzOC41NzYgMjkxLjU3NyAzMzguNTc2IDI1Ni4wMDJDMzM4LjU3NiAyMjAuNDI3IDMwOS43MzcgMTkxLjU4NyAyNzQuMTYxIDE5MS41ODdIMjcyLjA4MUMyMzYuNTA1IDE5MS41ODcgMjA3LjY2NiAyMjAuNDI3IDIwNy42NjYgMjU2LjAwMlpNMTA5Ljc5MyAzNTEuNzk1QzEwOS42NTUgMzUxLjc5NSAxMDkuNTE4IDM1MS43OTQgMTA5LjM4MSAzNTEuNzk0QzczLjk5NDggMzUyLjAxNSA0NS4zNzc4IDM4MC43NjkgNDUuMzc3OCA0MTYuMjA3QzQ1LjM3NzggNDUxLjY1MiA3NC42MDI1IDQ4MC42MjIgMTEwLjMwOSA0ODAuNjIyQzE0Ni41OTEgNDgwLjYyMiAxNzYuMjg4IDQ1MS4xODYgMTc2LjI4OCA0MTUuMTY3VjM1MS43OTVIMTA5Ljc5M1pNMTA5Ljc5MyAzMS4zNzc4Qzc0LjIxNzIgMzEuMzc3OCA0NS4zNzc4IDYwLjIxNzMgNDUuMzc3OCA5NS43OTI0QzQ1LjM3NzggMTMxLjM2OCA3NC4yMTcyIDE2MC4yMDcgMTA5Ljc5MyAxNjAuMjA3SDE3Ni4yODhWMzEuMzc3OEgxMDkuNzkzWk0yMDcuNjY2IDE2MC4yMDdIMjc0LjE2MUMzMDkuNzM3IDE2MC4yMDcgMzM4LjU3NiAxMzEuMzY4IDMzOC41NzYgOTUuNzkyNEMzMzguNTc2IDYwLjIxNzMgMzA5LjczNyAzMS4zNzc4IDI3NC4xNjEgMzEuMzc3OEgyMDcuNjY2VjE2MC4yMDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVmb3hCcm93c2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzMC4yMiAxMjcuNTQ4QzEzMC4zOCAxMjcuNTU4IDEzMC4zIDEyNy41NTggMTMwLjIyIDEyNy41NDhWMTI3LjU0OFpNNDgxLjY0IDE3Mi44OThDNDcxLjAzIDE0Ny4zOTggNDQ5LjU2IDExOS44OTggNDMyLjcgMTExLjE2OEM0NDYuNDIgMTM4LjA1OCA0NTQuMzcgMTY1LjA0OCA0NTcuNCAxODUuMTY4QzQ1Ny40MDUgMTg1LjMwNiA0NTcuNDIyIDE4NS40NDMgNDU3LjQ1IDE4NS41NzhDNDI5Ljg3IDExNi44MjggMzgzLjA5OCA4OS4xMDg5IDM0NC45IDI4Ljc0NzlDMzI5LjkwOCA1LjA1NzkyIDMzMy45NzYgMy41MTc5MiAzMzEuODIgNC4wODc5MkwzMzEuNyA0LjE1NzkyQzI4NC45OSAzMC4xMTA5IDI1Ni4zNjUgODIuNTI4OSAyNDkuMTIgMTI2Ljg5OEMyMzIuNTAzIDEyNy43NzEgMjE2LjIxOSAxMzEuODk1IDIwMS4xOSAxMzkuMDM1QzE5OS44MzggMTM5LjY0OSAxOTguNzM2IDE0MC43MDYgMTk4LjA2NiAxNDIuMDMxQzE5Ny4zOTYgMTQzLjM1NiAxOTcuMTk5IDE0NC44NyAxOTcuNTA2IDE0Ni4zMjNDMTk3LjcgMTQ3LjE2MiAxOTguMDY4IDE0Ny45NTEgMTk4LjU4NiAxNDguNjM5QzE5OS4xMDMgMTQ5LjMyNyAxOTkuNzYgMTQ5Ljg5OSAyMDAuNTEyIDE1MC4zMThDMjAxLjI2NCAxNTAuNzM3IDIwMi4wOTYgMTUwLjk5MyAyMDIuOTU0IDE1MS4wNzFDMjAzLjgxMSAxNTEuMTQ4IDIwNC42NzYgMTUxLjA0NSAyMDUuNDkxIDE1MC43NjhMMjA2LjAxMSAxNTAuNTU4QzIyMS41MTEgMTQzLjI1NSAyMzguNDA4IDEzOS4zOTMgMjU1LjU0MSAxMzkuMjM4QzMxOC4zNjkgMTM4LjY2OSAzNTIuNjk4IDE4My4yNjIgMzYzLjE2MSAyMDEuNTI4QzM1MC4xNjEgMTkyLjM3OCAzMjYuODExIDE4My4zMzggMzA0LjM0MSAxODcuMjQ4QzM5Mi4wODEgMjMxLjEwOCAzNjguNTQxIDM4MS43ODQgMjQ2Ljk1MSAzNzYuNDQ4QzE4Ny40ODcgMzczLjgzOCAxNDkuODgxIDMyNS40NjcgMTQ2LjQyMSAyODUuNjQ4QzE0Ni40MjEgMjg1LjY0OCAxNTcuNjcxIDI0My42OTggMjI3LjA0MSAyNDMuNjk4QzIzNC41NDEgMjQzLjY5OCAyNTUuOTcxIDIyMi43NzggMjU2LjM3MSAyMTYuNjk4QzI1Ni4yODEgMjE0LjY5OCAyMTMuODM2IDE5Ny44MjIgMTk3LjI4MSAxODEuNTE4QzE4OC40MzQgMTcyLjgwNSAxODQuMjI5IDE2OC42MTEgMTgwLjUxMSAxNjUuNDU4QzE3OC40OTkgMTYzLjc1IDE3Ni4zOTIgMTYyLjE1OCAxNzQuMjAxIDE2MC42ODhDMTY4LjYzOCAxNDEuMjMxIDE2OC4zOTkgMTIwLjYzOCAxNzMuNTEgMTAxLjA1OEMxNDguNDUgMTEyLjQ2OCAxMjguOTYgMTMwLjUwOCAxMTQuOCAxNDYuNDI4SDExNC42OEMxMDUuMDEgMTM0LjE3OCAxMDUuNjggOTMuNzc3OSAxMDYuMjUgODUuMzQ3OUMxMDYuMTMgODQuODE3OSA5OS4wMjIgODkuMDE1OSA5OC4xIDg5LjY1NzlDODkuNTM0MiA5NS43MTAzIDgxLjU1MjggMTAyLjU1IDc0LjI2IDExMC4wODhDNTcuOTY5IDEyNi42ODggMzAuMTI4IDE2MC4yNDIgMTguNzYgMjExLjMxOEMxNC4yMjQgMjMxLjcwMSAxMiAyNTUuNzM5IDEyIDI2My42MThDMTIgMzk4LjMxOCAxMjEuMjEgNTA3LjUwOCAyNTUuOTIgNTA3LjUwOEMzNzYuNTYgNTA3LjUwOCA0NzguOTM5IDQyMC4yODEgNDk2LjM1IDMwNC44ODhDNTA3LjkyMiAyMjguMTkyIDQ4MS42NCAxNzMuODIgNDgxLjY0IDE3Mi44OThaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVmb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAzLjUyLDI0MS40OGMtLjEyLTEuNTYtLjI0LTMuMTItLjI0LTQuNjh2LS4xMmwtLjM2LTQuNjh2LS4xMmEyNDUuODYsMjQ1Ljg2LDAsMCwwLTcuMzItNDEuMTVjMC0uMTIsMC0uMTItLjEyLS4yNGwtMS4wOC00Yy0uMTItLjI0LS4xMi0uNDgtLjI0LS42LS4zNi0xLjItLjcyLTIuNTItMS4wOC0zLjcyLS4xMi0uMjQtLjEyLS42LS4yNC0uODQtLjM2LTEuMi0uNzItMi40LTEuMDgtMy40OC0uMTItLjM2LS4yNC0uNi0uMzYtMS0uMzYtMS4yLS43Mi0yLjI4LTEuMi0zLjQ4bC0uMzYtMS4wOGMtLjM2LTEuMDgtLjg0LTIuMjgtMS4yLTMuMzZhOC4yNyw4LjI3LDAsMCwwLS4zNi0xYy0uNDgtMS4wOC0uODQtMi4yOC0xLjMyLTMuMzYtLjEyLS4yNC0uMjQtLjYtLjM2LS44NC0uNDgtMS4yLTEtMi4yOC0xLjQ0LTMuNDgsMC0uMTItLjEyLS4yNC0uMTItLjM2LTEuNTYtMy44NC0zLjI0LTcuNjgtNS0xMS40bC0uMzYtLjcyYy0uNDgtMS0uODQtMS44LTEuMzItMi42NC0uMjQtLjQ4LS40OC0xLjA4LS43Mi0xLjU2LS4zNi0uODQtLjg0LTEuNTYtMS4yLTIuNC0uMzYtLjYtLjYtMS4yLTEtMS44cy0uODQtMS40NC0xLjItMi4yOGMtLjM2LS42LS43Mi0xLjMyLTEuMDgtMS45MnMtLjg0LTEuNDQtMS4yLTIuMTZhMTguMDcsMTguMDcsMCwwLDAtMS4yLTJjLS4zNi0uNzItLjg0LTEuMzItMS4yLTJzLS44NC0xLjMyLTEuMi0yLS44NC0xLjMyLTEuMi0xLjkyLS44NC0xLjQ0LTEuMzItMi4xNmExNS42MywxNS42MywwLDAsMC0xLjItMS44TDQ2My4yLDExOWExNS42MywxNS42MywwLDAsMC0xLjItMS44Yy0uNDgtLjcyLTEuMDgtMS41Ni0xLjU2LTIuMjgtLjM2LS40OC0uNzItMS4wOC0xLjA4LTEuNTZsLTEuOC0yLjUyYy0uMzYtLjQ4LS42LS44NC0xLTEuMzItMS0xLjMyLTEuOC0yLjUyLTIuNzYtMy43MmEyNDguNzYsMjQ4Ljc2LDAsMCwwLTIzLjUxLTI2LjY0QTE4Ni44MiwxODYuODIsMCwwLDAsNDEyLDYyLjQ2Yy00LTMuNDgtOC4xNi02LjcyLTEyLjQ4LTkuODRhMTYyLjQ5LDE2Mi40OSwwLDAsMC0yNC42LTE1LjEyYy0yLjQtMS4zMi00LjgtMi41Mi03LjItMy43MmEyNTQsMjU0LDAsMCwwLTU1LjQzLTE5LjU2Yy0xLjkyLS4zNi0zLjg0LS44NC01LjY0LTEuMmgtLjEyYy0xLS4xMi0xLjgtLjM2LTIuNzYtLjQ4YTIzNi4zNSwyMzYuMzUsMCwwLDAtMzgtNEgyNTUuMTRhMjM0LjYyLDIzNC42MiwwLDAsMC00NS40OCw1Yy0zMy41OSw3LjA4LTYzLjIzLDIxLjI0LTgyLjkxLDM5LTEuMDgsMS0xLjkyLDEuNjgtMi40LDIuMTZsLS40OC40OEgxMjRsLS4xMi4xMi4xMi0uMTJhLjEyLjEyLDAsMCwwLC4xMi0uMTJsLS4xMi4xMmEuNDIuNDIsMCwwLDEsLjI0LS4xMmMxNC42NC04Ljc2LDM0LjkyLTE2LDQ5LjQ0LTE5LjU2bDUuODgtMS40NGMuMzYtLjEyLjg0LS4xMiwxLjItLjI0LDEuNjgtLjM2LDMuMzYtLjcyLDUuMTYtMS4wOC4yNCwwLC42LS4xMi44NC0uMTJDMjUwLjk0LDIwLjk0LDMxOS4zNCw0MC4xNCwzNjcsODUuNjFhMTcxLjQ5LDE3MS40OSwwLDAsMSwyNi44OCwzMi43NmMzMC4zNiw0OS4yLDI3LjQ4LDExMS4xMSwzLjg0LDE0Ny41OS0zNC40NCw1My0xMTEuMzUsNzEuMjctMTU5LDI0Ljg0YTg0LjE5LDg0LjE5LDAsMCwxLTI1LjU2LTU5LDc0LjA1LDc0LjA1LDAsMCwxLDYuMjQtMzFjMS42OC0zLjg0LDEzLjA4LTI1LjY3LDE4LjI0LTI0LjU5LTEzLjA4LTIuNzYtMzcuNTUsMi42NC01NC43MSwyOC4xOS0xNS4zNiwyMi45Mi0xNC41Miw1OC4yLTUsODMuMjhhMTMyLjg1LDEzMi44NSwwLDAsMS0xMi4xMi0zOS4yNGMtMTIuMjQtODIuNTUsNDMuMzEtMTUzLDk0LjMxLTE3MC41MS0yNy40OC0yNC05Ni40Ny0yMi4zMS0xNDcuNzEsMTUuMzYtMjkuODgsMjItNTEuMjMsNTMuMTYtNjIuNTEsOTAuMzYsMS42OC0yMC44OCw5LjYtNTIuMDgsMjUuOC04My44OC0xNy4xNiw4Ljg4LTM5LDM3LTQ5LjgsNjIuODgtMTUuNiwzNy40My0yMSw4Mi4xOS0xNi4wOCwxMjQuNzkuMzYsMy4yNC43Miw2LjM2LDEuMDgsOS42LDE5LjkyLDExNy4xMSwxMjIsMjA2LjM4LDI0NC43OCwyMDYuMzhDMzkyLjc3LDUwMy40Miw1MDQsMzkyLjE5LDUwNCwyNTUsNTAzLjg4LDI1MC40OCw1MDMuNzYsMjQ1LjkyLDUwMy41MiwyNDEuNDhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0T3JkZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0ODguMjFDMTE1LjM0IDQ5Ni4yMSA3Ljc5IDM4OC42NiA3Ljc5IDI1NlMxMTUuMzQgMTUuNzkgMjQ4IDE1Ljc5IDQ4OC4yMSAxMjMuMzQgNDg4LjIxIDI1NiAzODAuNjYgNDk2LjIxIDI0OCA0OTYuMjF6bTAtNDU5LjkyQzEyNi42NiAzNi4yOSAyOC4yOSAxMzQuNjYgMjguMjkgMjU2UzEyNi42NiA0NzUuNzEgMjQ4IDQ3NS43MSA0NjcuNzEgMzc3LjM0IDQ2Ny43MSAyNTYgMzY5LjM0IDM2LjI5IDI0OCAzNi4yOXptMCA0MzEuMjJjLTExNi44MSAwLTIxMS41MS05NC42OS0yMTEuNTEtMjExLjUxUzEzMS4xOSA0NC40OSAyNDggNDQuNDkgNDU5LjUxIDEzOS4xOSA0NTkuNTEgMjU2IDM2NC44MSA0NjcuNTEgMjQ4IDQ2Ny41MXptMTg2LjIzLTE2Mi45OGExOTEuNjEzIDE5MS42MTMgMCAwIDEtMjAuMTMgNDguNjlsLTc0LjEzLTM1Ljg4IDYxLjQ4IDU0LjgyYTE5My41MTUgMTkzLjUxNSAwIDAgMS0zNy4yIDM3LjI5bC01NC44LTYxLjU3IDM1Ljg4IDc0LjI3YTE5MC45NDQgMTkwLjk0NCAwIDAgMS00OC42MyAyMC4yM2wtMjcuMjktNzguNDcgNC43OSA4Mi45M2MtOC42MSAxLjE4LTE3LjQgMS44LTI2LjMzIDEuOHMtMTcuNzItLjYyLTI2LjMzLTEuOGw0Ljc2LTgyLjQ2LTI3LjE1IDc4LjAzYTE5MS4zNjUgMTkxLjM2NSAwIDAgMS00OC42NS0yMC4ybDM1LjkzLTc0LjM0LTU0Ljg3IDYxLjY0YTE5My44NSAxOTMuODUgMCAwIDEtMzcuMjItMzcuMjhsNjEuNTktNTQuOS03NC4yNiAzNS45M2ExOTEuNjM4IDE5MS42MzggMCAwIDEtMjAuMTQtNDguNjlsNzcuODQtMjcuMTEtODIuMjMgNC43NmMtMS4xNi04LjU3LTEuNzgtMTcuMzItMS43OC0yNi4yMSAwLTkgLjYzLTE3Ljg0IDEuODItMjYuNTFsODIuMzggNC43Ny03Ny45NC0yNy4xNmExOTEuNzI2IDE5MS43MjYgMCAwIDEgMjAuMjMtNDguNjdsNzQuMjIgMzUuOTItNjEuNTItNTQuODZhMTkzLjg1IDE5My44NSAwIDAgMSAzNy4yOC0zNy4yMmw1NC43NiA2MS41My0zNS44My03NC4xN2ExOTEuNDkgMTkxLjQ5IDAgMCAxIDQ4LjY1LTIwLjEzbDI2Ljg3IDc3LjI1LTQuNzEtODEuNjFjOC42MS0xLjE4IDE3LjM5LTEuOCAyNi4zMi0xLjhzMTcuNzEuNjIgMjYuMzIgMS44bC00Ljc0IDgyLjE2IDI3LjA1LTc3Ljc2YzE3LjI3IDQuNSAzMy42IDExLjM1IDQ4LjYzIDIwLjE3bC0zNS44MiA3NC4xMiA1NC43Mi02MS40N2ExOTMuMTMgMTkzLjEzIDAgMCAxIDM3LjI0IDM3LjIzbC02MS40NSA1NC43NyA3NC4xMi0zNS44NmExOTEuNTE1IDE5MS41MTUgMCAwIDEgMjAuMiA0OC42NWwtNzcuODEgMjcuMSA4Mi4yNC00Ljc1YzEuMTkgOC42NiAxLjgyIDE3LjUgMS44MiAyNi40OSAwIDguODgtLjYxIDE3LjYzLTEuNzggMjYuMTlsLTgyLjEyLTQuNzUgNzcuNzIgMjcuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0T3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOSAyMjkuMmMuMS0uMS4yLS4zLjMtLjQgMCAuMSAwIC4zLS4xLjRoLS4yek0yMjQgOTYuNmMtNy4xIDAtMTQuNi42LTIxLjQgMS43bDMuNyA2Ny40LTIyLTY0Yy0xNC4zIDMuNy0yNy43IDkuNC00MCAxNi42bDI5LjQgNjEuNC00NS4xLTUwLjljLTExLjQgOC45LTIxLjcgMTkuMS0zMC42IDMwLjlsNTAuNiA0NS40LTYxLjEtMjkuN2MtNy4xIDEyLjMtMTIuOSAyNS43LTE2LjYgNDBsNjQuMyAyMi42LTY4LTRjLS45IDcuMS0xLjQgMTQuNi0xLjQgMjJzLjYgMTQuNiAxLjQgMjEuN2w2Ny43LTQtNjQgMjIuNmMzLjcgMTQuMyA5LjQgMjcuNyAxNi42IDQwLjNsNjEuMS0yOS43TDk3LjcgMzUyYzguOSAxMS43IDE5LjEgMjIuMyAzMC45IDMwLjlsNDQuOS01MC45LTI5LjUgNjEuNGMxMi4zIDcuNCAyNS43IDEzLjEgNDAgMTYuOWwyMi4zLTY0LjYtNCA2OGM3LjEgMS4xIDE0LjYgMS43IDIxLjcgMS43IDcuNCAwIDE0LjYtLjYgMjEuNy0xLjdsLTQtNjguNiAyMi42IDY1LjFjMTQuMy00IDI3LjctOS40IDQwLTE2LjlMMjc0LjkgMzMybDQ0LjkgNTAuOWMxMS43LTguOSAyMi0xOS4xIDMwLjYtMzAuOWwtNTAuNi00NS4xIDYxLjEgMjkuNGM3LjEtMTIuMyAxMi45LTI1LjcgMTYuNi00MC4zbC02NC0yMi4zIDY3LjQgNGMxLjEtNy4xIDEuNC0xNC4zIDEuNC0yMS43cy0uMy0xNC45LTEuNC0yMmwtNjcuNyA0IDY0LTIyLjNjLTMuNy0xNC4zLTkuMS0yOC0xNi42LTQwLjNsLTYwLjkgMjkuNyA1MC42LTQ1LjRjLTguOS0xMS43LTE5LjEtMjItMzAuNi0zMC45bC00NS4xIDUwLjkgMjkuNC02MS4xYy0xMi4zLTcuNC0yNS43LTEzLjEtNDAtMTYuOUwyNDEuNyAxNjZsNC02Ny43Yy03LjEtMS4yLTE0LjMtMS43LTIxLjctMS43ek00NDMuNCAxMjh2MjU2TDIyNCA1MTIgNC42IDM4NFYxMjhMMjI0IDBsMjE5LjQgMTI4em0tMTcuMSAxMC4zTDIyNCAyMC45IDIxLjcgMTM4LjN2MjM1LjFMMjI0IDQ5MS4xbDIwMi4zLTExNy43VjEzOC4zek0yMjQgMzcuMWwxODcuNyAxMDkuNHYyMTguOUwyMjQgNDc0LjkgMzYuMyAzNjUuNFYxNDYuNkwyMjQgMzcuMXptMCA1MC45Yy05Mi4zIDAtMTY2LjkgNzUuMS0xNjYuOSAxNjggMCA5Mi42IDc0LjYgMTY3LjcgMTY2LjkgMTY3LjcgOTIgMCAxNjYuOS03NS4xIDE2Ni45LTE2Ny43IDAtOTIuOS03NC45LTE2OC0xNjYuOS0xNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0ZHJhZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE5MmgtNjR2MTI4SDE5MnYxMjhIMHYtMjUuNmgxNjYuNHYtMTI4aDEyOHYtMTI4SDM4NFYxOTJ6bS0yNS42IDM4LjR2MTI4aC0xMjh2MTI4SDY0VjUxMmgxOTJWMzg0aDEyOFYyMzAuNGgtMjUuNnptMjUuNiAxOTJoLTg5LjZWNTEySDMyMHYtNjRoNjR2LTI1LjZ6TTAgMHYzODRoMTI4VjI1NmgxMjhWMTI4aDEyOFYwSDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsaWNrciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNDQuNSAzMTljLTM1LjEgMC02My41LTI4LjQtNjMuNS02My41czI4LjQtNjMuNSA2My41LTYzLjUgNjMuNSAyOC40IDYzLjUgNjMuNS0yOC40IDYzLjUtNjMuNSA2My41em0xNTkgMGMtMzUuMSAwLTYzLjUtMjguNC02My41LTYzLjVzMjguNC02My41IDYzLjUtNjMuNSA2My41IDI4LjQgNjMuNSA2My41LTI4LjQgNjMuNS02My41IDYzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMzU4LjQgMTc5LjJoLTg5LjZ2ODkuNmgtODkuNnY4OS42SDg5LjZWMTIxLjZoMjY4Ljh2ODkuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ny44IDQyNy44YzEyLjkgMTEuNyAzMy43IDMzLjMgMzMuMiA1MC43IDAgLjgtLjEgMS42LS4xIDIuNS0xLjggMTkuOC0xOC44IDMxLjEtMzkuMSAzMS0yNS0uMS0zOS45LTE2LjgtMzguNy0zNS44IDEtMTYuMiAyMC41LTM2LjcgMzIuNC00Ny42IDIuMy0yLjEgMi43LTIuNyA1LjYtMy42IDMuNCAwIDMuOS4zIDYuNyAyLjh6TTMzMS45IDY3LjNjLTE2LjMtMjUuNy0zOC42LTQwLjYtNjMuMy01Mi4xQzI0My4xIDQuNSAyMTQtLjIgMTkyIDBjLTQ0LjEgMC03MS4yIDEzLjItODEuMSAxNy4zQzU3LjMgNDUuMiAyNi41IDg3LjIgMjggMTU4LjZjNy4xIDgyLjIgOTcgMTc2IDE1NS44IDIzMy44IDEuNyAxLjYgNC41IDQuNSA2LjIgNS4xbDMuMy4xYzIuMS0uNyAxLjgtLjUgMy41LTIuMSA1Mi4zLTQ5LjIgMTQwLjctMTQ1LjggMTU1LjktMjE1LjcgNy0zOS4yIDMuMS03Mi41LTIwLjgtMTEyLjV6TTE4Ni44IDM1MS45Yy0yOC01MS4xLTY1LjItMTMwLjctNjkuMy0xODktMy40LTQ3LjUgMTEuNC0xMzEuMiA2OS4zLTEzNi43djMyNS43ek0zMjguNyAxODBjLTE2LjQgNTYuOC03Ny4zIDEyOC0xMTguOSAxNzAuM0MyMzcuNiAyOTguNCAyNzUgMjE3IDI3NyAxNTguNGMxLjYtNDUuOS05LjgtMTA1LjgtNDgtMTMxLjQgODguOCAxOC4zIDExNS41IDk4LjEgOTkuNyAxNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkxLjcgOTZDMTA2LjMgODYuOCAxMTYgNzAuNSAxMTYgNTJDMTE2IDIzLjMgOTIuNyAwIDY0IDBTMTIgMjMuMyAxMiA1MmMwIDE2LjcgNy44IDMxLjUgMjAgNDFsMCAzIDAgMzUyIDAgNjQgNjQgMCAwLTY0IDM3My42IDBjMTQuNiAwIDI2LjQtMTEuOCAyNi40LTI2LjRjMC0zLjctLjgtNy4zLTIuMy0xMC43TDQzMiAyNzJsNjEuNy0xMzguOWMxLjUtMy40IDIuMy03IDIuMy0xMC43YzAtMTQuNi0xMS44LTI2LjQtMjYuNC0yNi40TDkxLjcgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRpY29uc0ZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNC40IDIyNGg5Mi40bC0xNS4yIDUxLjJoLTc2LjRWNDMzYzAgOC0yLjggOS4yIDQuNCAxMGw1OS42IDUuNlY0ODNIMHYtMzUuMmwyOS4yLTIuOGM3LjItLjggOS4yLTMuMiA5LjItMTAuOFYyNzguNGMwLTMuMi00LTMuMi04LTMuMkgwVjIyNGgzOC40di0yOC44YzAtNjggMzYuNC05NiAxMDYtOTYgNDYuOCAwIDg4LjggMTEuMiA4OC44IDcyLjRsLTY5LjYgOC40Yy40LTI1LjYtNi0zMS42LTIyLjQtMzEuNi0yNS4yIDAtMjYgMTMuNi0yNiAzNy42djMyYzAgMy4yLTQuOCA2LS44IDZ6TTM4NCA0ODNIMjQzLjJ2LTM0LjRsMjgtMy42YzcuMi0uOCAxMC40LTIuNCAxMC40LTEwVjI4N2MwLTUuNi00LTkuMi05LjItMTAuOGwtMzMuMi04LjggOS4yLTQwLjRoMTEwdjIwOGMwIDgtMy42IDguOCA0IDEwbDIxLjYgMy42VjQ4M3ptLTMwLTM0Ny4ybDEyLjQgNDUuNi0xMCAxMC00Mi44LTIyLjgtNDIuOCAyMi44LTEwLTEwIDEyLjQtNDUuNi0zMC0zNi40IDQuOC0xMGgzOEwzMDcuMiA1MUgzMjBsMjEuMiAzOC40aDM4bDQuOCAxMy4yLTMwIDMzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRpY29ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJ6bTE4NyAxNDAuOWMtMTguNCAwLTE5IDkuOS0xOSAyNy40djIzLjNjMCAyLjQtMy41IDQuNC0uNiA0LjRoNjcuNGwtMTEuMSAzNy4zSDE2OHYxMTIuOWMwIDUuOC0yIDYuNyAzLjIgNy4zbDQzLjUgNC4xdjI1LjFIODRWMzg5bDIxLjMtMmM1LjItLjYgNi43LTIuMyA2LjctNy45VjI2Ny43YzAtMi4zLTIuOS0yLjMtNS44LTIuM0g4NFYyMjhoMjh2LTIxYzAtNDkuNiAyNi41LTcwIDc3LjMtNzAgMzQuMSAwIDY0LjcgOC4yIDY0LjcgNTIuOGwtNTAuNyA2LjFjLjMtMTguNy00LjQtMjMtMTYuMy0yM3ptNzQuMyAyNDEuOHYtMjUuMWwyMC40LTIuNmM1LjItLjYgNy42LTEuNyA3LjYtNy4zVjI3MS44YzAtNC4xLTIuOS02LjctNi43LTcuOWwtMjQuMi02LjQgNi43LTI5LjVoODAuMnYxNTEuN2MwIDUuOC0yLjYgNi40IDIuOSA3LjNsMTUuNyAyLjZ2MjUuMXptODAuOC0yNTUuNWw5IDMzLjItNy4zIDcuMy0zMS4yLTE2LjYtMzEuMiAxNi42LTcuMy03LjMgOS0zMy4yLTIxLjgtMjQuMiAzLjUtOS42aDI3LjdsMTUuNS0yOGg5LjNsMTUuNSAyOGgyNy43bDMuNSA5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnRBd2Vzb21lQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAyMzcuNGgtMjIuMmMtMi4xIDAtMy43IDEuNi0zLjcgMy43djUxLjdjMCAyLjEgMS42IDMuNyAzLjcgMy43SDIwOGMyLjEgMCAzLjctMS42IDMuNy0zLjd2LTUxLjdjMC0yLjEtMS42LTMuNy0zLjctMy43em0xMTguMiAwSDMwNGMtMi4xIDAtMy43IDEuNi0zLjcgMy43djUxLjdjMCAyLjEgMS42IDMuNyAzLjcgMy43aDIyLjJjMi4xIDAgMy43LTEuNiAzLjctMy43di01MS43Yy0uMS0yLjEtMS43LTMuNy0zLjctMy43em0xMzItMTI1LjFjLTIuMy0zLjItNC42LTYuNC03LjEtOS41LTkuOC0xMi41LTIwLjgtMjQtMzIuOC0zNC40LTQuNS0zLjktOS4xLTcuNi0xMy45LTExLjItMS42LTEuMi0zLjItMi4zLTQuOC0zLjVDMzcyIDM0LjEgMzQwLjMgMjAgMzA2IDEzYy0xNi4yLTMuMy0zMi45LTUtNTAtNXMtMzMuOSAxLjctNTAgNWMtMzQuMyA3LjEtNjYgMjEuMi05My4zIDQwLjgtMS42IDEuMS0zLjIgMi4zLTQuOCAzLjUtNC44IDMuNi05LjQgNy4zLTEzLjkgMTEuMi0zIDIuNi01LjkgNS4zLTguOCA4cy01LjcgNS41LTguNCA4LjRjLTUuNSA1LjctMTAuNyAxMS44LTE1LjYgMTgtMi40IDMuMS00LjggNi4zLTcuMSA5LjVDMjUuMiAxNTMgOC4zIDIwMi41IDguMyAyNTZjMCAyIC4xIDQgLjEgNiAuMS43LjEgMS4zLjEgMiAuMSAxLjMuMSAyLjcuMiA0IDAgLjguMSAxLjUuMSAyLjMgMCAxLjMuMSAyLjUuMiAzLjcuMS44LjEgMS42LjIgMi40LjEgMS4xLjIgMi4zLjMgMy41IDAgLjguMSAxLjYuMiAyLjQuMSAxLjIuMyAyLjQuNCAzLjYuMS44LjIgMS41LjMgMi4zLjEgMS4zLjMgMi42LjUgMy45LjEuNi4yIDEuMy4zIDEuOWwuOSA1LjdjLjEuNi4yIDEuMS4zIDEuNy4zIDEuMy41IDIuNy44IDQgLjIuOC4zIDEuNi41IDIuNC4yIDEgLjUgMi4xLjcgMy4yLjIuOS40IDEuNy42IDIuNi4yIDEgLjQgMiAuNyAzIC4yLjkuNSAxLjguNyAyLjcuMyAxIC41IDEuOS44IDIuOS4zLjkuNSAxLjguOCAyLjcuMi45LjUgMS45LjggMi44cy41IDEuOC44IDIuN2MuMyAxIC42IDEuOS45IDIuOC42IDEuNiAxLjEgMy4zIDEuNyA0LjkuNCAxIC43IDEuOSAxIDIuOC4zIDEgLjcgMiAxLjEgMyAuMy44LjYgMS41LjkgMi4zbDEuMiAzYy4zLjcuNiAxLjUuOSAyLjIuNCAxIC45IDIgMS4zIDNsLjkgMi4xYy41IDEgLjkgMiAxLjQgMyAuMy43LjYgMS4zLjkgMiAuNSAxIDEgMi4xIDEuNSAzLjEuMi42LjUgMS4xLjggMS43LjYgMS4xIDEuMSAyLjIgMS43IDMuMy4xLjIuMi4zLjMuNSAyLjIgNC4xIDQuNCA4LjIgNi44IDEyLjIuMi40LjUuOC43IDEuMi43IDEuMSAxLjMgMi4yIDIgMy4zLjMuNS42LjkuOSAxLjQuNiAxLjEgMS4zIDIuMSAyIDMuMi4zLjUuNi45LjkgMS40LjcgMS4xIDEuNCAyLjEgMi4xIDMuMi4yLjQuNS44LjggMS4yLjcgMS4xIDEuNSAyLjIgMi4zIDMuMy4yLjIuMy41LjUuNyAzNy41IDUxLjcgOTQuNCA4OC41IDE2MCA5OS40LjkuMSAxLjcuMyAyLjYuNCAxIC4yIDIuMS40IDMuMS41czEuOS4zIDIuOC40YzEgLjIgMiAuMyAzIC40LjkuMSAxLjkuMiAyLjkuM3MxLjkuMiAyLjkuMyAyLjEuMiAzLjEuM2MuOS4xIDEuOC4xIDIuNy4yIDEuMS4xIDIuMy4xIDMuNC4yLjggMCAxLjcuMSAyLjUuMSAxLjMgMCAyLjYuMSAzLjkuMS43LjEgMS40LjEgMi4xLjEgMiAuMSA0IC4xIDYgLjFzNC0uMSA2LS4xYy43IDAgMS40LS4xIDIuMS0uMSAxLjMgMCAyLjYgMCAzLjktLjEuOCAwIDEuNy0uMSAyLjUtLjEgMS4xLS4xIDIuMy0uMSAzLjQtLjIuOSAwIDEuOC0uMSAyLjctLjIgMS0uMSAyLjEtLjIgMy4xLS4zczEuOS0uMiAyLjktLjNjLjktLjEgMS45LS4yIDIuOS0uM3MyLS4zIDMtLjQgMS45LS4zIDIuOC0uNGMxLS4yIDIuMS0uMyAzLjEtLjUuOS0uMSAxLjctLjMgMi42LS40IDY1LjYtMTEgMTIyLjUtNDcuNyAxNjAuMS0xMDIuNC4yLS4yLjMtLjUuNS0uNy44LTEuMSAxLjUtMi4yIDIuMy0zLjMuMi0uNC41LS44LjgtMS4yLjctMS4xIDEuNC0yLjEgMi4xLTMuMi4zLS41LjYtLjkuOS0xLjQuNi0xLjEgMS4zLTIuMSAyLTMuMi4zLS41LjYtLjkuOS0xLjQuNy0xLjEgMS4zLTIuMiAyLTMuMy4yLS40LjUtLjguNy0xLjIgMi40LTQgNC42LTguMSA2LjgtMTIuMi4xLS4yLjItLjMuMy0uNS42LTEuMSAxLjEtMi4yIDEuNy0zLjMuMi0uNi41LTEuMS44LTEuNy41LTEgMS0yLjEgMS41LTMuMS4zLS43LjYtMS4zLjktMiAuNS0xIDEtMiAxLjQtM2wuOS0yLjFjLjUtMSAuOS0yIDEuMy0zIC4zLS43LjYtMS41LjktMi4ybDEuMi0zYy4zLS44LjYtMS41LjktMi4zLjQtMSAuNy0yIDEuMS0zcy43LTEuOSAxLTIuOGMuNi0xLjYgMS4yLTMuMyAxLjctNC45LjMtMSAuNi0xLjkuOS0yLjhzLjUtMS44LjgtMi43Yy4yLS45LjUtMS45LjgtMi44cy42LTEuOC44LTIuN2MuMy0xIC41LTEuOS44LTIuOS4yLS45LjUtMS44LjctMi43LjItMSAuNS0yIC43LTMgLjItLjkuNC0xLjcuNi0yLjYuMi0xIC41LTIuMS43LTMuMi4yLS44LjMtMS42LjUtMi40LjMtMS4zLjYtMi43LjgtNCAuMS0uNi4yLTEuMS4zLTEuN2wuOS01LjdjLjEtLjYuMi0xLjMuMy0xLjkuMS0xLjMuMy0yLjYuNS0zLjkuMS0uOC4yLTEuNS4zLTIuMy4xLTEuMi4zLTIuNC40LTMuNiAwLS44LjEtMS42LjItMi40LjEtMS4xLjItMi4zLjMtMy41LjEtLjguMS0xLjYuMi0yLjQuMSAxLjcuMS41LjItLjcgMC0uOC4xLTEuNS4xLTIuMy4xLTEuMy4yLTIuNy4yLTQgLjEtLjcuMS0xLjMuMS0yIC4xLTIgLjEtNCAuMS02IDAtNTMuNS0xNi45LTEwMy00NS44LTE0My43ek00NDggMzcxLjVjLTkuNCAxNS41LTIwLjYgMjkuOS0zMy42IDQyLjktMjAuNiAyMC42LTQ0LjUgMzYuNy03MS4yIDQ4LTEzLjkgNS44LTI4LjIgMTAuMy00Mi45IDEzLjJ2LTc1LjhjMC01OC42LTg4LjYtNTguNi04OC42IDB2NzUuOGMtMTQuNy0yLjktMjktNy4zLTQyLjktMTMuMi0yNi43LTExLjMtNTAuNi0yNy40LTcxLjItNDgtMTMtMTMtMjQuMi0yNy40LTMzLjYtNDIuOXYtNzEuM2MwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMWMyLjEgMCAzLjcgMS42IDMuNyAzLjdWMzI2aDI5LjZWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4xYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN0gyMDhjMi4xIDAgMy43IDEuNiAzLjcgMy43djI1LjloMjkuNVYxODJjMC00LjggNi41LTMuNyA5LjUtMy43Vjg4LjFjLTQuNC0yLTcuNC02LjctNy40LTExLjUgMC0xNi44IDI1LjQtMTYuOCAyNS40IDAgMCA0LjgtMyA5LjQtNy40IDExLjVWOTJjNi4zLTEuNCAxMi43LTIuMyAxOS4yLTIuMyA5LjQgMCAxOC40IDMuNSAyNi4zIDMuNSA3LjIgMCAxNS4yLTMuNSAxOS40LTMuNSAyLjEgMCAzLjcgMS42IDMuNyAzLjd2NDguNGMwIDUuNi0xOC43IDYuNS0yMi40IDYuNS04LjYgMC0xNi42LTMuNS0yNS40LTMuNS03IDAtMTQuMSAxLjItMjAuOCAyLjh2MzAuN2MzIDAgOS41LTEuMSA5LjUgMy43djI1LjloMjkuNVYxODJjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjJjMi4xIDAgMy43IDEuNiAzLjcgMy43djI1LjloMjkuNVYxODJjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjFjMi4xIDAgMy43IDEuNiAzLjcgMy43djE0NGgyOS41di0yNS44YzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4yYzIuMSAwIDMuNyAxLjYgMy43IDMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9ydEF3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg5LjIgMjg3LjloLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZWMTQ2LjJjMC0yLjYtMi00LjYtNC42LTQuNmgtMjcuNGMtMi42IDAtNC42IDItNC42IDQuNnYzMmgtMzYuNnYtMzJjMC0yLjYtMi00LjYtNC42LTQuNmgtMjcuNGMtMi42IDAtNC42IDItNC42IDQuNnYzMmgtMzYuNnYtMzJjMC02LTgtNC42LTExLjctNC42di0zOGM4LjMtMiAxNy4xLTMuNCAyNS43LTMuNCAxMC45IDAgMjAuOSA0LjMgMzEuNCA0LjMgNC42IDAgMjcuNy0xLjEgMjcuNy04di02MGMwLTIuNi0yLTQuNi00LjYtNC42LTUuMSAwLTE1LjEgNC4zLTI0IDQuMy05LjcgMC0yMC45LTQuMy0zMi42LTQuMy04IDAtMTYgMS4xLTIzLjcgMi45di00LjljNS40LTIuNiA5LjEtOC4zIDkuMS0xNC4zIDAtMjAuNy0zMS40LTIwLjgtMzEuNCAwIDAgNiAzLjcgMTEuNyA5LjEgMTQuM3YxMTEuN2MtMy43IDAtMTEuNy0xLjQtMTEuNyA0LjZ2MzJoLTM2LjZ2LTMyYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJIMTI4di0zMmMwLTIuNi0yLTQuNi00LjYtNC42SDk2Yy0yLjYgMC00LjYgMi00LjYgNC42djE3OC4zSDU0Ljh2LTMyYzAtMi42LTItNC42LTQuNi00LjZIMjIuOGMtMi42IDAtNC42IDItNC42IDQuNlY1MTJoMTgyLjl2LTk2YzAtNzIuNiAxMDkuNy03Mi42IDEwOS43IDB2OTZoMTgyLjlWMjkyLjVjLjEtMi42LTEuOS00LjYtNC41LTQuNnptLTI4OC4xLTQuNWMwIDIuNi0yIDQuNi00LjYgNC42aC0yNy40Yy0yLjYgMC00LjYtMi00LjYtNC42di02NGMwLTIuNiAyLTQuNiA0LjYtNC42aDI3LjRjMi42IDAgNC42IDIgNC42IDQuNnY2NHptMTQ2LjQgMGMwIDIuNi0yIDQuNi00LjYgNC42aC0yNy40Yy0yLjYgMC00LjYtMi00LjYtNC42di02NGMwLTIuNiAyLTQuNiA0LjYtNC42aDI3LjRjMi42IDAgNC42IDIgNC42IDQuNnY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9ydW1iZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS44IDMwOS43QzIgMjkyLjcgMCAyNzUuNSAwIDI1OC4zIDAgMTM1IDk5LjggMzUgMjIzLjEgMzVjMTYuNiAwIDMzLjMgMiA0OS4zIDUuNUMxNDkgODcuNSA1MS45IDE4NiA1LjggMzA5Ljd6bTM5Mi45LTE4OS4yQzM4NSAxMDMgMzY5IDg3LjggMzUwLjkgNzUuMmMtMTQ5LjYgNDQuMy0yNjYuMyAxNjIuMS0zMDkuNyAzMTIgMTIuNSAxOC4xIDI4IDM1LjYgNDUuMiA0OSA0My4xLTE1MS4zIDE2MS4yLTI3MS43IDMxMi4zLTMxNS43em0xNS44IDI1Mi43YzE1LjItMjUuMSAyNS40LTUzLjcgMjkuNS04Mi44LTc5LjQgNDIuOS0xNDUgMTEwLjYtMTg3LjYgMTkwLjMgMzAtNC40IDU4LjktMTUuMyA4NC42LTMxLjMgMzUgMTMuMSA3MC45IDI0LjMgMTA3IDMzLjYtOS4zLTM2LjUtMjAuNC03NC41LTMzLjUtMTA5Ljh6bTI5LjctMTQ1LjVjLTIuNi0xOS41LTcuOS0zOC43LTE1LjgtNTYuOEMyOTAuNSAyMTYuNyAxODIgMzI3LjUgMTM3LjEgNDY2YzE4LjEgNy42IDM3IDEyLjUgNTYuNiAxNS4yQzI0MCAzNjcuMSAzMzAuNSAyNzQuNCA0NDQuMiAyMjcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm91cnNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzY4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjMuMSAzSDQ5LjlDMTIuNCAzIDAgMzEuMyAwIDQ5LjF2NDMzLjhjMCAyMC4zIDEyLjEgMjcuNyAxOC4yIDMwLjEgNi4yIDIuNSAyMi44IDQuNiAzMi45LTcuMUMxODAgMzU2LjUgMTgyLjIgMzU0IDE4Mi4yIDM1NGMzLjEtMy40IDMuNC0zLjEgNi44LTMuMWg4My40YzM1LjEgMCA0MC42LTI1LjIgNDQuMy0zOS43bDQ4LjYtMjQzQzM3My44IDI1LjggMzYzLjEgMyAzMjMuMSAzem0tMTYuMyA3My44bC0xMS40IDU5LjdjLTEuMiA2LjUtOS41IDEzLjItMTYuOSAxMy4ySDE3Mi4xYy0xMiAwLTIwLjYgOC4zLTIwLjYgMjAuM3YxM2MwIDEyIDguNiAyMC42IDIwLjYgMjAuNmg5MC40YzguMyAwIDE2LjYgOS4yIDE0LjggMTguMi0xLjggOC45LTEwLjUgNTMuOC0xMS40IDU4LjgtLjkgNC45LTYuOCAxMy41LTE2LjkgMTMuNWgtNzMuNWMtMTMuNSAwLTE3LjIgMS44LTI2LjUgMTIuNiAwIDAtOC45IDExLjQtODkuNSAxMDguMy0uOS45LTEuOC42LTEuOC0uM1Y3NS45YzAtNy43IDYuOC0xNi42IDE2LjYtMTYuNmgyMTljOC4yIDAgMTUuNiA3LjcgMTMuNSAxNy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcmVlQ29kZUNhbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTcuMjIsOTYuMjFjMTAuMzYtMTAuNjUsMTYtMTcuMTIsMTYtMjEuOSwwLTIuNzYtMS45Mi01LjUxLTMuODMtNy40MkExNC44MSwxNC44MSwwLDAsMCwxMDEsNjQuMDVjLTguNDgsMC0yMC45Miw4Ljc5LTM1Ljg0LDI1LjY5QzIzLjY4LDEzNywyLjUxLDE4Mi44MSwzLjM3LDI1MC4zNHMxNy40NywxMTcsNTQuMDYsMTYxLjg3Qzc2LjIyLDQzNS44Niw5MC42Miw0NDgsMTAwLjksNDQ4YTEzLjU1LDEzLjU1LDAsMCwwLDguMzctMy44NGMxLjkxLTIuNzYsMy44MS01LjYzLDMuODEtOC4zOCwwLTUuNjMtMy44Ni0xMi4yLTEzLjItMjAuNTUtNDQuNDUtNDIuMzMtNjcuMzItOTctNjcuNDgtMTY1QzMyLjI1LDE4OC44LDU0LDEzNy44Myw5Ny4yMiw5Ni4yMVpNMjM5LjQ3LDQyMC4wN2MuNTguMzcuOTEuNTUuOTEuNTVabTkzLjc5LjU1LjE3LS4xM0MzMzMuMjQsNDIwLjYyLDMzMy4xNyw0MjAuNjcsMzMzLjI2LDQyMC42MlptMy4xMy0xNTguMThjLTE2LjI0LTQuMTUsNTAuNDEtODIuODktNjguMDUtMTc3LjE3LDAsMCwxNS41NCw0OS4zOC02Mi44MywxNTkuNTctNzQuMjcsMTA0LjM1LDIzLjQ2LDE2OC43MywzNCwxNzUuMjMtNi43My00LjM1LTQ3LjQtMzUuNyw5LjU1LTEyOC42NCwxMS0xOC4zLDI1LjUzLTM0Ljg3LDQzLjUtNzIuMTYsMCwwLDE1LjkxLDIyLjQ1LDcuNiw3MS4xM0MyODcuNywzNjQsMzU0LDM0Mi45MSwzNTUsMzQzLjk0YzIyLjc1LDI2Ljc4LTE3LjcyLDczLjUxLTIxLjU4LDc2LjU1LDUuNDktMy42NSwxMTcuNzEtNzgsMzMtMTg4LjFDMzYwLjQzLDIzOC40LDM1Mi42MiwyNjYuNTksMzM2LjM5LDI2Mi40NFpNNTEwLjg4LDg5LjY5QzQ5Niw3Mi43OSw0ODMuNTIsNjQsNDc1LDY0YTE0LjgxLDE0LjgxLDAsMCwwLTguMzksMi44NGMtMS45MSwxLjkxLTMuODMsNC42Ni0zLjgzLDcuNDIsMCw0Ljc4LDUuNiwxMS4yNiwxNiwyMS45LDQzLjIzLDQxLjYxLDY1LDkyLjU5LDY0LjgyLDE1NC4wNi0uMTYsNjgtMjMsMTIyLjYzLTY3LjQ4LDE2NS05LjM0LDguMzUtMTMuMTgsMTQuOTItMTMuMiwyMC41NSwwLDIuNzUsMS45LDUuNjIsMy44MSw4LjM4QTEzLjYxLDEzLjYxLDAsMCwwLDQ3NS4xLDQ0OGMxMC4yOCwwLDI0LjY4LTEyLjEzLDQzLjQ3LTM1Ljc5LDM2LjU5LTQ0Ljg1LDUzLjE0LTk0LjM4LDU0LjA2LTE2MS44N1M1NTIuMzIsMTM3LDUxMC44OCw4OS42OVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJlZWJzZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDMuNyA5Ni4yYzExLjEtMTEuMSAxMTUuNS03NyAxMzkuMi01My4yIDIzLjcgMjMuNy00Mi4xIDEyOC4xLTUzLjIgMTM5LjItMTEuMSAxMS4xLTM5LjQuOS02My4xLTIyLjktMjMuOC0yMy43LTM0LjEtNTItMjIuOS02My4xek0xMDkuOSA2OC4xQzczLjYgNDcuNSAyMiAyNC42IDUuNiA0MS4xYy0xNi42IDE2LjYgNy4xIDY5LjQgMjcuOSAxMDUuNyAxOC41LTMyLjIgNDQuOC01OS4zIDc2LjQtNzguN3pNNDA2LjcgMTc0YzMuMyAxMS4zIDIuNyAyMC43LTIuNyAyNi4xLTIwLjMgMjAuMy04Ny41LTI3LTEwOS4zLTcwLjEtMTgtMzIuMy0xMS4xLTUzLjQgMTQuOS00OC43IDUuNy0zLjYgMTIuMy03LjYgMTkuNi0xMS42LTI5LjgtMTUuNS02My42LTI0LjMtOTkuNS0yNC4zLTExOS4xIDAtMjE1LjYgOTYuNS0yMTUuNiAyMTUuNiAwIDExOSA5Ni41IDIxNS42IDIxNS42IDIxNS42UzQ0NS4zIDM4MC4xIDQ0NS4zIDI2MWMwLTM4LjQtMTAuMS03NC41LTI3LjctMTA1LjgtMy45IDctNy42IDEzLjMtMTAuOSAxOC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGdWxjcnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk1Ljc1IDE2NC4xNGwtMzUuMzggNDMuNTVMMjUgMTY0LjE0bDM1LjM4LTQzLjU1ek0xNDQuMjMgMGwtMjAuNTQgMTk4LjE4TDcyLjcyIDI1Nmw1MSA1Ny44MkwxNDQuMjMgNTEyVjMwMC44OUwxMDMuMTUgMjU2bDQxLjA4LTQ0Ljg5em03OS42NyAxNjQuMTRsMzUuMzggNDMuNTUgMzUuMzgtNDMuNTUtMzUuMzgtNDMuNTV6bS00OC40OCA0N0wyMTYuNSAyNTZsLTQxLjA4IDQ0Ljg5VjUxMkwxOTYgMzEzLjgyIDI0NyAyNTZsLTUxLTU3LjgyTDE3NS40MiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYWxhY3RpY1JlcHVibGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA1MDRDMTExLjI1IDUwNCAwIDM5Mi43NSAwIDI1NlMxMTEuMjUgOCAyNDggOHMyNDggMTExLjI1IDI0OCAyNDgtMTExLjI1IDI0OC0yNDggMjQ4em0wLTQ3OS40N0MxMjAuMzcgMjQuNTMgMTYuNTMgMTI4LjM3IDE2LjUzIDI1NlMxMjAuMzcgNDg3LjQ3IDI0OCA0ODcuNDcgNDc5LjQ3IDM4My42MyA0NzkuNDcgMjU2IDM3NS42MyAyNC41MyAyNDggMjQuNTN6bTI3LjYyIDIxLjgxdjI0LjYyYTE4NS45MzMgMTg1LjkzMyAwIDAgMSA4My41NyAzNC41NGwxNy4zOS0xNy4zNmMtMjguNzUtMjIuMDYtNjMuMy0zNi44OS0xMDAuOTYtNDEuOHptLTU1LjM3LjA3Yy0zNy42NCA0Ljk0LTcyLjE2IDE5LjgtMTAwLjg4IDQxLjg1bDE3LjI4IDE3LjM2aC4wOGMyNC4wNy0xNy44NCA1Mi41NS0zMC4wNiA4My41Mi0zNC42N1Y0Ni40MXptMTIuMjUgNTAuMTd2ODIuODdjLTEwLjA0IDIuMDMtMTkuNDIgNS45NC0yNy42NyAxMS40MmwtNTguNjItNTguNTktMjEuOTMgMjEuOTMgNTguNjcgNTguNjdjLTUuNDcgOC4yMy05LjQ1IDE3LjU5LTExLjQ3IDI3LjYyaC04Mi45djMxaDgyLjljMi4wMiAxMC4wMiA2LjAxIDE5LjMxIDExLjQ3IDI3LjU0bC01OC42NyA1OC42OSAyMS45MyAyMS45MyA1OC42Mi01OC42MmE3Ny44NzMgNzcuODczIDAgMCAwIDI3LjY3IDExLjQ3djgyLjloMzF2LTgyLjljMTAuMDUtMi4wMyAxOS4zNy02LjA2IDI3LjYyLTExLjU1bDU4LjY3IDU4LjY5IDIxLjkzLTIxLjkzLTU4LjY3LTU4LjY5YzUuNDYtOC4yMyA5LjQ3LTE3LjUyIDExLjUtMjcuNTRoODIuODd2LTMxaC04Mi44N2MtMi4wMi0xMC4wMi02LjAzLTE5LjM4LTExLjUtMjcuNjJsNTguNjctNTguNjctMjEuOTMtMjEuOTMtNTguNjcgNTguNjdjLTguMjUtNS40OS0xNy41Ny05LjQ3LTI3LjYyLTExLjVWOTYuNThoLTMxem0xODMuMjQgMzAuNzJsLTE3LjM2IDE3LjM2YTE4Ni4zMzcgMTg2LjMzNyAwIDAgMSAzNC42NyA4My42N2gyNC42MmMtNC45NS0zNy42OS0xOS44My03Mi4yOS00MS45My0xMDEuMDN6bS0zMzUuNTUuMTNjLTIyLjA2IDI4LjcyLTM2LjkxIDYzLjI2LTQxLjg1IDEwMC45MWgyNC42NWM0LjYtMzAuOTYgMTYuNzYtNTkuNDUgMzQuNTktODMuNTJsLTE3LjM5LTE3LjM5ek0zOC4zNCAyODMuNjdjNC45MiAzNy42NCAxOS43NSA3Mi4xOCA0MS44IDEwMC45bDE3LjM2LTE3LjM5Yy0xNy44MS0yNC4wNy0yOS45Mi01Mi41Ny0zNC41MS04My41MkgzOC4zNHptMzk0LjcgMGMtNC42MSAzMC45OS0xNi44IDU5LjUtMzQuNjcgODMuNmwxNy4zNiAxNy4zNmMyMi4wOC0yOC43NCAzNi45OC02My4yOSA0MS45My0xMDAuOTZoLTI0LjYyek0xMzYuNjYgNDA2LjM4bC0xNy4zNiAxNy4zNmMyOC43MyAyMi4wOSA2My4zIDM2Ljk4IDEwMC45NiA0MS45M3YtMjQuNjRjLTMwLjk5LTQuNjMtNTkuNTMtMTYuNzktODMuNi0zNC42NXptMjIyLjUzLjA1Yy0yNC4wOSAxNy44NC01Mi41OCAzMC4wOC04My41NyAzNC42N3YyNC41N2MzNy42Ny00LjkyIDcyLjIxLTE5Ljc5IDEwMC45Ni00MS44NWwtMTcuMzEtMTcuMzloLS4wOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FsYWN0aWNTZW5hdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ5Ljg2IDMzLjQ4djI2LjA3QzIzNi4yOCA4MC4xNyAyMjYgMTY4LjE0IDIyNS4zOSAyNzQuOWMxMS43NC0xNS42MiAxOS4xMy0zMy4zMyAxOS4xMy00OC4yNHYtMTYuODhjLS4wMy01LjMyLjc1LTEwLjUzIDIuMTktMTUuNjUuNjUtMi4xNCAxLjM5LTQuMDggMi42Mi01LjgyIDEuMjMtMS43NSAzLjQzLTMuNzkgNi42OC0zLjc5IDMuMjQgMCA1LjQ1IDIuMDUgNi42OCAzLjc5IDEuMjMgMS43NSAxLjk3IDMuNjggMi42MiA1LjgyIDEuNDQgNS4xMiAyLjIyIDEwLjMzIDIuMTkgMTUuNjV2MTYuODhjMCAxNC45MSA3LjM5IDMyLjYyIDE5LjEzIDQ4LjI0LS42My0xMDYuNzYtMTAuOTEtMTk0LjczLTI0LjQ5LTIxNS4zNVYzMy40OGgtMTIuMjh6bS0yNi4zNCAxNDcuNzdjLTkuNTIgMi4xNS0xOC43IDUuMTktMjcuNDYgOS4wOCA4LjkgMTYuMTIgOS43NiAzMi42NCAxLjcxIDM3LjI5LTggNC42Mi0yMS44NS00LjIzLTMxLjM2LTE5LjgyLTExLjU4IDguNzktMjEuODggMTkuMzItMzAuNTYgMzEuMDkgMTQuNzMgOS42MiAyMi44OSAyMi45MiAxOC4zMiAzMC42Ni00LjU0IDcuNy0yMC4wMyA3LjE0LTM1LjQ3LS45Ni01Ljc4IDEzLjI1LTkuNzUgMjcuNTEtMTEuNjUgNDIuNDIgOS42OC4xOCAxOC42NyAyLjM4IDI2LjE4IDYuMDQgMTcuNzgtLjMgMzIuNzctMS45NiA0MC40OS00LjIyIDUuNTUtMjYuMzUgMjMuMDItNDguMjMgNDYuMzItNTkuNTEuNzMtMjUuNTUgMS44OC00OS42NyAzLjQ4LTcyLjA3em02NC45NiAwYzEuNTkgMjIuNCAyLjc1IDQ2LjUyIDMuNDcgNzIuMDcgMjMuMjkgMTEuMjggNDAuNzcgMzMuMTYgNDYuMzIgNTkuNTEgNy43MiAyLjI2IDIyLjcxIDMuOTIgNDAuNDkgNC4yMiA3LjUxLTMuNjYgMTYuNS01Ljg1IDI2LjE4LTYuMDQtMS45LTE0LjkxLTUuODYtMjkuMTctMTEuNjUtNDIuNDItMTUuNDQgOC4xLTMwLjkzIDguNjYtMzUuNDcuOTYtNC41Ny03Ljc0IDMuNi0yMS4wNSAxOC4zMi0zMC42Ni04LjY4LTExLjc3LTE4Ljk4LTIyLjMtMzAuNTYtMzEuMDktOS41MSAxNS41OS0yMy4zNiAyNC40NC0zMS4zNiAxOS44Mi04LjA1LTQuNjUtNy4xOS0yMS4xNiAxLjcxLTM3LjI5YTE0Ny40OSAxNDcuNDkgMCAwIDAtMjcuNDUtOS4wOHptLTMyLjQ4IDguNmMtMy4yMyAwLTUuODYgOC44MS02LjA5IDE5LjkzaC0uMDV2MTYuODhjMCA0MS40Mi00OS4wMSA5NS4wNC05My40OSA5NS4wNC01MiAwLTEyMi43NS0xLjQ1LTE1Ni4zNyAyOS4xN3YyLjUxYzkuNDIgMTcuMTIgMjAuNTggMzMuMTcgMzMuMTggNDcuOTdDNDUuNyAzODAuMjYgODQuNzcgMzYwLjQgMTQxLjIgMzYwYzQ1LjY4IDEuMDIgNzkuMDMgMjAuMzMgOTAuNzYgNDAuODcuMDEuMDEtLjAxLjA0IDAgLjA1IDcuNjcgMi4xNCAxNS44NSAzLjIzIDI0LjA0IDMuMjEgOC4xOS4wMiAxNi4zNy0xLjA3IDI0LjA0LTMuMjEuMDEtLjAxLS4wMS0uMDQgMC0uMDUgMTEuNzQtMjAuNTQgNDUuMDgtMzkuODUgOTAuNzYtNDAuODcgNTYuNDMuMzkgOTUuNDkgMjAuMjYgMTA4LjAyIDQxLjM1IDEyLjYtMTQuOCAyMy43Ni0zMC44NiAzMy4xOC00Ny45N3YtMi41MWMtMzMuNjEtMzAuNjItMTA0LjM3LTI5LjE3LTE1Ni4zNy0yOS4xNy00NC40OCAwLTkzLjQ5LTUzLjYyLTkzLjQ5LTk1LjA0di0xNi44OGgtLjA1Yy0uMjMtMTEuMTItMi44Ni0xOS45My02LjA5LTE5Ljkzem0wIDk2LjU5YzIyLjQyIDAgNDAuNiAxOC4xOCA0MC42IDQwLjZzLTE4LjE4IDQwLjY1LTQwLjYgNDAuNjUtNDAuNi0xOC4yMy00MC42LTQwLjY1YzAtMjIuNDIgMTguMTgtNDAuNiA0MC42LTQwLjZ6bTAgNy42NGMtMTguMTkgMC0zMi45NiAxNC43Ny0zMi45NiAzMi45NlMyMzcuODEgMzYwIDI1NiAzNjBzMzIuOTYtMTQuNzcgMzIuOTYtMzIuOTYtMTQuNzctMzIuOTYtMzIuOTYtMzIuOTZ6bTAgNi4xNGMxNC44MSAwIDI2LjgyIDEyLjAxIDI2LjgyIDI2Ljgycy0xMi4wMSAyNi44Mi0yNi44MiAyNi44Mi0yNi44Mi0xMi4wMS0yNi44Mi0yNi44MiAxMi4wMS0yNi44MiAyNi44Mi0yNi44MnptLTExNC44IDY2LjY3Yy0xMC4xOS4wNy0yMS42LjM2LTMwLjUgMS42Ni40MyA0LjQyIDEuNTEgMTguNjMgNy4xMSAyOS43NiA5LjExLTIuNTYgMTguMzYtMy45IDI3LjYyLTMuOSA0MS4yOC45NCA3MS40OCAzNC4zNSA3OC4yNiA3NC40N2wuMTEgNC43YzEwLjQgMS45MSAyMS4xOSAyLjk0IDMyLjIxIDIuOTQgMTEuMDMgMCAyMS44MS0xLjAyIDMyLjIxLTIuOTRsLjExLTQuN2M2Ljc4LTQwLjEyIDM2Ljk4LTczLjUzIDc4LjI2LTc0LjQ3IDkuMjYgMCAxOC41MSAxLjM0IDI3LjYyIDMuOSA1LjYtMTEuMTMgNi42OC0yNS4zNCA3LjExLTI5Ljc2LTguOS0xLjMtMjAuMzItMS41OC0zMC41LTEuNjYtMTguNzYuNDItMzUuMTkgNC4xNy00OC42MSA5LjY3LTEyLjU0IDE2LjAzLTI5LjE2IDMwLjAzLTQ5LjU4IDMzLjA3LS4wOS4wMi0uMTcuMDQtLjI3LjA1LS4wNS4wMS0uMTEuMDQtLjE2LjA1LTUuMjQgMS4wNy0xMC42MyAxLjYtMTYuMTkgMS42LTUuNTUgMC0xMC45NS0uNTMtMTYuMTktMS42LS4wNS0uMDEtLjExLS4wNC0uMTYtLjA1LS4xLS4wMi0uMTctLjA0LS4yNy0uMDUtMjAuNDItMy4wMy0zNy4wMy0xNy4wNC00OS41OC0zMy4wNy0xMy40Mi01LjQ5LTI5Ljg2LTkuMjUtNDguNjEtOS42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2V0UG9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy42IDY0aC0zNjdDMTguNSA2NCAwIDgyLjUgMCAxMDQuNnYxMzUuMkMwIDM2NC41IDk5LjcgNDY0IDIyNC4yIDQ2NGMxMjQgMCAyMjMuOC05OS41IDIyMy44LTIyNC4yVjEwNC42YzAtMjIuNC0xNy43LTQwLjYtNDAuNC00MC42em0tMTYyIDI2OC41Yy0xMi40IDExLjgtMzEuNCAxMS4xLTQyLjQgMEM4OS41IDIyMy42IDg4LjMgMjI3LjQgODguMyAyMDkuM2MwLTE2LjkgMTMuOC0zMC43IDMwLjctMzAuNyAxNyAwIDE2LjEgMy44IDEwNS4yIDg5LjMgOTAuNi04Ni45IDg4LjYtODkuMyAxMDUuNS04OS4zIDE2LjkgMCAzMC43IDEzLjggMzAuNyAzMC43IDAgMTcuOC0yLjkgMTUuNy0xMTQuOCAxMjMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2dDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU3IDhDMTIwIDggOSAxMTkgOSAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTQgOCAyNTcgOHptLTQ5LjUgMzc0LjhMODEuOCAyNTcuMWwxMjUuNy0xMjUuNyAzNS4yIDM1LjQtMjQuMiAyNC4yLTExLjEtMTEuMS03Ny4yIDc3LjIgNzcuMiA3Ny4yIDI2LjYtMjYuNi01My4xLTUyLjkgMjQuNC0yNC40IDc3LjIgNzcuMi03NSA3NS4yem05OS0yLjJsLTM1LjItMzUuMiAyNC4xLTI0LjQgMTEuMSAxMS4xIDc3LjItNzcuMi03Ny4yLTc3LjItMjYuNSAyNi41IDUzLjEgNTIuOS0yNC40IDI0LjQtNzcuMi03Ny4yIDc1LTc1TDQzMi4yIDI1NSAzMDYuNSAzODAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc5LjIgMjMwLjRsMTAyLjQgMTAyLjQtMTAyLjQgMTAyLjRMMCAyNTYgMTc5LjIgNzYuOGw0NC44IDQ0LjgtMjUuNiAyNS42LTE5LjItMTkuMi0xMjggMTI4IDEyOCAxMjggNTEuNS01MS41LTc3LjEtNzYuNSAyNS42LTI1LjZ6TTMzMi44IDc2LjhMMjMwLjQgMTc5LjJsMTAyLjQgMTAyLjQgMjUuNi0yNS42LTc3LjEtNzYuNSA1MS41LTUxLjUgMTI4IDEyOC0xMjggMTI4LTE5LjItMTkuMi0yNS42IDI1LjYgNDQuOCA0NC44TDUxMiAyNTYgMzMyLjggNzYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS41NSAyMzYuMDVMMjQ0IDQwLjQ1YTI4Ljg3IDI4Ljg3IDAgMCAwLTQwLjgxIDBsLTQwLjY2IDQwLjYzIDUxLjUyIDUxLjUyYzI3LjA2LTkuMTQgNTIuNjggMTYuNzcgNDMuMzkgNDMuNjhsNDkuNjYgNDkuNjZjMzQuMjMtMTEuOCA2MS4xOCAzMSAzNS40NyA1Ni42OS0yNi40OSAyNi40OS03MC4yMS0yLjg3LTU2LTM3LjM0TDI0MC4yMiAxOTl2MTIxLjg1YzI1LjMgMTIuNTQgMjIuMjYgNDEuODUgOS4wOCA1NWEzNC4zNCAzNC4zNCAwIDAgMS00OC41NSAwYy0xNy41Ny0xNy42LTExLjA3LTQ2LjkxIDExLjI1LTU2di0xMjNjLTIwLjgtOC41MS0yNC42LTMwLjc0LTE4LjY0LTQ1TDE0Mi41NyAxMDEgOC40NSAyMzUuMTRhMjguODYgMjguODYgMCAwIDAgMCA0MC44MWwxOTUuNjEgMTk1LjZhMjguODYgMjguODYgMCAwIDAgNDAuOCAwbDE5NC42OS0xOTQuNjlhMjguODYgMjguODYgMCAwIDAgMC00MC44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNi4yOSAxNTguMzlIMTM3Qzk3IDE0Ny45IDYuNTEgMTUwLjYzIDYuNTEgMjMzLjE4YzAgMzAuMDkgMTUgNTEuMjMgMzUgNjEtMjUuMSAyMy0zNyAzMy44NS0zNyA0OS4yMSAwIDExIDQuNDcgMjEuMTQgMTcuODkgMjYuODFDOC4xMyAzODMuNjEgMCAzOTMuMzUgMCA0MTEuNjVjMCAzMi4xMSAyOC4wNSA1MC44MiAxMDEuNjMgNTAuODIgNzAuNzUgMCAxMTEuNzktMjYuNDIgMTExLjc5LTczLjE4IDAtNTguNjYtNDUuMTYtNTYuNS0xNTEuNjMtNjNsMTMuNDMtMjEuNTVjMjcuMjcgNy41OCAxMTguNyAxMCAxMTguNy02Ny44OSAwLTE4LjctNy43My0zMS43MS0xNS00MS4wN2wzNy40MS0yLjg0em0tNjMuNDIgMjQxLjljMCAzMi4wNi0xMDQuODkgMzIuMS0xMDQuODkgMi40MyAwLTguMTQgNS4yNy0xNSAxMC41Ny0yMS41NCA3Ny43MSA1LjMgOTQuMzIgMy4zNyA5NC4zMiAxOS4xMXptLTUwLjgxLTEzNC41OGMtNTIuOCAwLTUwLjQ2LTcxLjE2IDEuMi03MS4xNiA0OS41NCAwIDUwLjgyIDcxLjE2LTEuMiA3MS4xNnptMTMzLjMgMTAwLjUxdi0zMi4xYzI2Ljc1LTMuNjYgMjcuMjQtMiAyNy4yNC0xMVYyMDMuNjFjMC04LjUtMi4wNS03LjM4LTI3LjI0LTE2LjI2bDQuNDctMzIuOTJIMzI0djE2OC43MWMwIDYuNTEuNCA3LjMyIDYuNTEgOC4xNGwyMC43MyAyLjg0djMyLjF6bTUyLjQ1LTI0NC4zMWMtMjMuMTcgMC0zNi41OS0xMy40My0zNi41OS0zNi42MXMxMy40Mi0zNS43NyAzNi41OS0zNS43N2MyMy41OCAwIDM3IDEyLjYyIDM3IDM1Ljc3cy0xMy40MiAzNi42MS0zNyAzNi42MXpNNTEyIDM1MC40NmMtMTcuNDkgOC41My00My4xIDE2LjI2LTY2LjI4IDE2LjI2LTQ4LjM4IDAtNjYuNjctMTkuNS02Ni42Ny02NS40NlYxOTQuNzVjMC01LjQyIDEuMDUtNC4wNi0zMS43MS00LjA2VjE1NC41YzM1Ljc4LTQuMDcgNTAtMjIgNTQuNDctNjYuMjdoMzguNjNjMCA2NS44My0xLjM0IDYxLjgxIDMuMjYgNjEuODFINTAxdjQwLjY1aC02MC41NnY5Ny4xNWMwIDYuOTItNC45MiA1MS40MSA2MC41NyAyNi44NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0aHViQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xIDMyOC43YzAgMjAuOS0xMC45IDU1LjEtMzYuNyA1NS4xcy0zNi43LTM0LjItMzYuNy01NS4xIDEwLjktNTUuMSAzNi43LTU1LjEgMzYuNyAzNC4yIDM2LjcgNTUuMXpNNDgwIDI3OC4yYzAgMzEuOS0zLjIgNjUuNy0xNy41IDk1LTM3LjkgNzYuNi0xNDIuMSA3NC44LTIxNi43IDc0LjgtNzUuOCAwLTE4Ni4yIDIuNy0yMjUuNi03NC44LTE0LjYtMjktMjAuMi02My4xLTIwLjItOTUgMC00MS45IDEzLjktODEuNSA0MS41LTExMy42LTUuMi0xNS44LTcuNy0zMi40LTcuNy00OC44IDAtMjEuNSA0LjktMzIuMyAxNC42LTUxLjggNDUuMyAwIDc0LjMgOSAxMDguOCAzNiAyOS02LjkgNTguOC0xMCA4OC43LTEwIDI3IDAgNTQuMiAyLjkgODAuNCA5LjIgMzQtMjYuNyA2My0zNS4yIDEwNy44LTM1LjIgOS44IDE5LjUgMTQuNiAzMC4zIDE0LjYgNTEuOCAwIDE2LjQtMi42IDMyLjctNy43IDQ4LjIgMjcuNSAzMi40IDM5IDcyLjMgMzkgMTE0LjJ6bS02NC4zIDUwLjVjMC00My45LTI2LjctODIuNi03My41LTgyLjYtMTguOSAwLTM3IDMuNC01NiA2LTE0LjkgMi4zLTI5LjggMy4yLTQ1LjEgMy4yLTE1LjIgMC0zMC4xLS45LTQ1LjEtMy4yLTE4LjctMi42LTM3LTYtNTYtNi00Ni44IDAtNzMuNSAzOC43LTczLjUgODIuNiAwIDg3LjggODAuNCAxMDEuMyAxNTAuNCAxMDEuM2g0OC4yYzcwLjMgMCAxNTAuNi0xMy40IDE1MC42LTEwMS4zem0tODIuNi01NS4xYy0yNS44IDAtMzYuNyAzNC4yLTM2LjcgNTUuMXMxMC45IDU1LjEgMzYuNyA1NS4xIDM2LjctMzQuMiAzNi43LTU1LjEtMTAuOS01NS4xLTM2LjctNTUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0aHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NS45IDM5Ny40YzAgMi0yLjMgMy42LTUuMiAzLjYtMy4zLjMtNS42LTEuMy01LjYtMy42IDAtMiAyLjMtMy42IDUuMi0zLjYgMy0uMyA1LjYgMS4zIDUuNiAzLjZ6bS0zMS4xLTQuNWMtLjcgMiAxLjMgNC4zIDQuMyA0LjkgMi42IDEgNS42IDAgNi4yLTJzLTEuMy00LjMtNC4zLTUuMmMtMi42LS43LTUuNS4zLTYuMiAyLjN6bTQ0LjItMS43Yy0yLjkuNy00LjkgMi42LTQuNiA0LjkuMyAyIDIuOSAzLjMgNS45IDIuNiAyLjktLjcgNC45LTIuNiA0LjYtNC42LS4zLTEuOS0zLTMuMi01LjktMi45ek0yNDQuOCA4QzEwNi4xIDggMCAxMTMuMyAwIDI1MmMwIDExMC45IDY5LjggMjA1LjggMTY5LjUgMjM5LjIgMTIuOCAyLjMgMTcuMy01LjYgMTcuMy0xMi4xIDAtNi4yLS4zLTQwLjQtLjMtNjEuNCAwIDAtNzAgMTUtODQuNy0yOS44IDAgMC0xMS40LTI5LjEtMjcuOC0zNi42IDAgMC0yMi45LTE1LjcgMS42LTE1LjQgMCAwIDI0LjkgMiAzOC42IDI1LjggMjEuOSAzOC42IDU4LjYgMjcuNSA3Mi45IDIwLjkgMi4zLTE2IDguOC0yNy4xIDE2LTMzLjctNTUuOS02LjItMTEyLjMtMTQuMy0xMTIuMy0xMTAuNSAwLTI3LjUgNy42LTQxLjMgMjMuNi01OC45LTIuNi02LjUtMTEuMS0zMy4zIDIuNi02Ny45IDIwLjktNi41IDY5IDI3IDY5IDI3IDIwLTUuNiA0MS41LTguNSA2Mi44LTguNXM0Mi44IDIuOSA2Mi44IDguNWMwIDAgNDguMS0zMy42IDY5LTI3IDEzLjcgMzQuNyA1LjIgNjEuNCAyLjYgNjcuOSAxNiAxNy43IDI1LjggMzEuNSAyNS44IDU4LjkgMCA5Ni41LTU4LjkgMTA0LjItMTE0LjggMTEwLjUgOS4yIDcuOSAxNyAyMi45IDE3IDQ2LjQgMCAzMy43LS4zIDc1LjQtLjMgODMuNiAwIDYuNSA0LjYgMTQuNCAxNy4zIDEyLjFDNDI4LjIgNDU3LjggNDk2IDM2Mi45IDQ5NiAyNTIgNDk2IDExMy4zIDM4My41IDggMjQ0LjggOHpNOTcuMiAzNTIuOWMtMS4zIDEtMSAzLjMuNyA1LjIgMS42IDEuNiAzLjkgMi4zIDUuMiAxIDEuMy0xIDEtMy4zLS43LTUuMi0xLjYtMS42LTMuOS0yLjMtNS4yLTF6bS0xMC44LTguMWMtLjcgMS4zLjMgMi45IDIuMyAzLjkgMS42IDEgMy42LjcgNC4zLS43LjctMS4zLS4zLTIuOS0yLjMtMy45LTItLjYtMy42LS4zLTQuMy43em0zMi40IDM1LjZjLTEuNiAxLjMtMSA0LjMgMS4zIDYuMiAyLjMgMi4zIDUuMiAyLjYgNi41IDEgMS4zLTEuMy43LTQuMy0xLjMtNi4yLTIuMi0yLjMtNS4yLTIuNi02LjUtMXptLTExLjQtMTQuN2MtMS42IDEtMS42IDMuNiAwIDUuOSAxLjYgMi4zIDQuMyAzLjMgNS42IDIuMyAxLjYtMS4zIDEuNi0zLjkgMC02LjItMS40LTIuMy00LTMuMy01LjYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0a3Jha2VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1OTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2NS43IDExOC4xYy0yLjMtNi4xLTkuMy05LjItMTUuMy02LjYtNS43IDIuNC04LjUgOC45LTYuMyAxNC42IDEwLjkgMjkgMTYuOSA2MC41IDE2LjkgOTMuMyAwIDEzNC42LTEwMC4zIDI0NS43LTIzMC4yIDI2Mi43VjM1OC40YzcuOS0xLjUgMTUuNS0zLjYgMjMtNi4ydjEwNGMxMDYuNy0yNS45IDE4NS45LTEyMi4xIDE4NS45LTIzNi44IDAtOTEuOC01MC44LTE3MS44LTEyNS44LTIxMy4zLTUuNy0zLjItMTMtLjktMTUuOSA1LTIuNyA1LjUtLjYgMTIuMiA0LjcgMTUuMSA2Ny45IDM3LjYgMTEzLjkgMTEwIDExMy45IDE5My4yIDAgOTMuMy01Ny45IDE3My4xLTEzOS44IDIwNS40di05Mi4yYzE0LjItNC41IDI0LjktMTcuNyAyNC45LTMzLjUgMC0xMy4xLTYuOC0yNC40LTE3LjMtMzAuNSA4LjMtNzkuNSA0NC41LTU4LjYgNDQuNS04My45VjE3MGMwLTM4LTg3LjktMTYxLjgtMTI5LTE2NC43LTIuNS0uMi01LS4yLTcuNiAwQzI1MS4xIDguMyAxNjMuMiAxMzIgMTYzLjIgMTcwdjE0LjhjMCAyNS4zIDM2LjMgNC4zIDQ0LjUgODMuOS0xMC42IDYuMS0xNy4zIDE3LjQtMTcuMyAzMC41IDAgMTUuOCAxMC42IDI5IDI0LjggMzMuNXY5Mi4yYy04MS45LTMyLjItMTM5LjgtMTEyLTEzOS44LTIwNS40IDAtODMuMSA0Ni0xNTUuNSAxMTMuOS0xOTMuMiA1LjQtMyA3LjQtOS42IDQuNy0xNS4xLTIuOS01LjktMTAuMS04LjItMTUuOS01LTc1IDQxLjUtMTI1LjggMTIxLjUtMTI1LjggMjEzLjMgMCAxMTQuNyA3OS4yIDIxMC44IDE4NS45IDIzNi44di0xMDRjNy42IDIuNSAxNS4xIDQuNiAyMyA2LjJ2MTIzLjdDMTMxLjQgNDY1LjIgMzEgMzU0LjEgMzEgMjE5LjVjMC0zMi44IDYtNjQuMyAxNi45LTkzLjMgMi4yLTUuOC0uNi0xMi4yLTYuMy0xNC42LTYtMi42LTEzIC40LTE1LjMgNi42QzE0LjUgMTQ5LjcgOCAxODMuOCA4IDIxOS41YzAgMTU1LjEgMTIyLjYgMjgxLjYgMjc2LjMgMjg3LjhWMzYxLjRjNi44LjQgMTUgLjUgMjMuNCAwdjE0NS44QzQ2MS40IDUwMS4xIDU4NCAzNzQuNiA1ODQgMjE5LjVjMC0zNS43LTYuNS02OS44LTE4LjMtMTAxLjR6TTM2NS45IDI3NS41YzEzIDAgMjMuNyAxMC41IDIzLjcgMjMuNyAwIDEzLjEtMTAuNiAyMy43LTIzLjcgMjMuNy0xMyAwLTIzLjctMTAuNS0yMy43LTIzLjcgMC0xMy4xIDEwLjYtMjMuNyAyMy43LTIzLjd6bS0xMzkuOCA0Ny4zYy0xMy4yIDAtMjMuNy0xMC43LTIzLjctMjMuN3MxMC41LTIzLjcgMjMuNy0yMy43YzEzLjEgMCAyMy43IDEwLjYgMjMuNyAyMy43IDAgMTMtMTAuNSAyMy43LTIzLjcgMjMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0bGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMy41IDIwNC42TDUwMi44IDIwMi44TDQzMy4xIDIxLjAyQzQzMS43IDE3LjQ1IDQyOS4yIDE0LjQzIDQyNS45IDEyLjM4QzQyMy41IDEwLjgzIDQyMC44IDkuODY1IDQxNy45IDkuNTdDNDE1IDkuMjc1IDQxMi4yIDkuNjUzIDQwOS41IDEwLjY4QzQwNi44IDExLjcgNDA0LjQgMTMuMzQgNDAyLjQgMTUuNDZDNDAwLjUgMTcuNTggMzk5LjEgMjAuMTMgMzk4LjMgMjIuOUwzNTEuMyAxNjYuOUgxNjAuOEwxMTMuNyAyMi45QzExMi45IDIwLjEzIDExMS41IDE3LjU5IDEwOS42IDE1LjQ3QzEwNy42IDEzLjM1IDEwNS4yIDExLjcyIDEwMi41IDEwLjdDOTkuODYgOS42NzUgOTYuOTggOS4yOTUgOTQuMTIgOS41ODdDOTEuMjYgOS44NzggODguNTEgMTAuODMgODYuMDggMTIuMzhDODIuODQgMTQuNDMgODAuMzMgMTcuNDUgNzguOTIgMjEuMDJMOS4yNjcgMjAyLjhMOC41NDMgMjA0LjZDLTEuNDg0IDIzMC44LTIuNzIgMjU5LjYgNS4wMjMgMjg2LjZDMTIuNzcgMzEzLjUgMjkuMDcgMzM3LjMgNTEuNDcgMzU0LjJMNTEuNzQgMzU0LjRMNTIuMzMgMzU0LjhMMTU4LjMgNDM0LjNMMjEwLjkgNDc0TDI0Mi45IDQ5OC4yQzI0Ni42IDUwMC4xIDI1MS4yIDUwMi41IDI1NS45IDUwMi41QzI2MC42IDUwMi41IDI2NS4yIDUwMC4xIDI2OC45IDQ5OC4yTDMwMC45IDQ3NEwzNTMuNSA0MzQuM0w0NjAuMiAzNTQuNEw0NjAuNSAzNTQuMUM0ODIuOSAzMzcuMiA0OTkuMiAzMTMuNSA1MDYuMSAyODYuNkM1MTQuNyAyNTkuNiA1MTMuNSAyMzAuOCA1MDMuNSAyMDQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY2LjQgMzIyLjVIMTZWMGg1MC40djMyMi41ek0xNjYuOSA3Ni4xaC01MC40VjUxMmg1MC40Vjc2LjF6bTEwMC42IDBoLTUwLjRWNTEyaDUwLjRWNzYuMXpNMzY4IDc2aC01MC40djI0N0gzNjhWNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsaWRlRyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcuMSAyMTEuMmMtMy41LTEuNC0xMS42LTMuOC0xNS40LTMuOC0zNy4xIDAtNjIuMiAxNi44LTkzLjUgMzQuNWwtLjktLjljNy00Ny4zIDIzLjUtOTEuOSAyMy41LTE0MC40QzMyMC44IDI5LjEgMjgyLjYgMCAyMTIuNCAwIDk3LjMgMCAzOSAxMTMuNyAzOSAxOTguNCAzOSAyODYuMyA5MC4zIDMzNSAxNzcuNiAzMzVjMTIgMCAxMS0xIDExIDMuOC0xNi45IDEyOC45LTkwLjggMTMzLjEtOTAuOCA5NC42IDAtMzkuMiA0NS01OC42IDQ1LjUtNjEtLjMtMTIuMi00Ny0yNy42LTU4LjktMjcuNi0zMy45LjEtNTIuNCA1MS4yLTUyLjQgNzkuM0MzMiA0NzYgNjQuOCA1MTIgMTE3LjUgNTEyYzc3LjQgMCAxMzQtNzcuOCAxNTEuNC0xNDUuNCAxNS4xLTYwLjUgMTEuMi02My4zIDE5LjctNjcuNiAzMi4yLTE2LjIgNTcuNS0yNyA5My44LTI3IDE3LjggMCAzMC41IDMuNyA1OC45IDguNCAyLjkgMCA2LjctMi45IDYuNy01LjggMC04LTMzLjQtNjAuNS00MC45LTYzLjR6bS0xNzUuMy04NC40Yy05LjMgNDQuNy0xOC42IDg5LjYtMjcuOCAxMzQuMy0yLjMgMTAuMi0xMy4zIDcuOC0yMiA3LjgtMzguMyAwLTQ5LTQxLjgtNDktNzMuMSAwLTQ3IDE4LTEwOS4zIDYxLjgtMTMzLjQgNy00LjEgMTQuOC02LjcgMjIuNi02LjcgMTguNiAwIDIwIDEzLjMgMjAgMjguNy0uMSAxNC4zLTIuNyAyOC41LTUuNiA0Mi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTIuOCAxNDguNmMwIDguOC0xLjYgMTcuNy0zLjQgMjYuNC01LjggMjcuOC0xMS42IDU1LjgtMTcuMyA4My42LTEuNCA2LjMtOC4zIDQuOS0xMy43IDQuOS0yMy44IDAtMzAuNS0yNi0zMC41LTQ1LjUgMC0yOS4zIDExLjItNjguMSAzOC41LTgzLjEgNC4zLTIuNSA5LjItNC4yIDE0LjEtNC4yIDExLjQgMCAxMi4zIDguMyAxMi4zIDE3Ljl6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTY0IDE4N2MwLTUuMS0yMC44LTM3LjctMjUuNS0zOS41LTIuMi0uOS03LjItMi4zLTkuNi0yLjMtMjMuMSAwLTM4LjcgMTAuNS01OC4yIDIxLjVsLS41LS41YzQuMy0yOS40IDE0LjYtNTcuMiAxNC42LTg3LjQgMC00NC42LTIzLjgtNjIuNy02Ny41LTYyLjctNzEuNyAwLTEwOCA3MC44LTEwOCAxMjMuNSAwIDU0LjcgMzIgODUgODYuMyA4NSA3LjUgMCA2LjktLjYgNi45IDIuMy0xMC41IDgwLjMtNTYuNSA4Mi45LTU2LjUgNTguOSAwLTI0LjQgMjgtMzYuNSAyOC4zLTM4LS4yLTcuNi0yOS4zLTE3LjItMzYuNy0xNy4yLTIxLjEgMC0zMi43IDMzLTMyLjcgNTAuNiAwIDMyLjMgMjAuNCA1NC43IDUzLjMgNTQuNyA0OC4yIDAgODMuNC00OS43IDk0LjMtOTEuNyA5LjQtMzcuNyA3LTM5LjQgMTIuMy00Mi4xIDIwLTEwLjEgMzUuOC0xNi44IDU4LjQtMTYuOCAxMS4xIDAgMTkgMi4zIDM2LjcgNS4yIDEuOC4xIDQuMS0xLjcgNC4xLTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29mb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNCAzMTkuOGgtMTMuMnYzNC43Yy0yNC41IDIzLjEtNTYuMyAzNS44LTg5LjkgMzUuOC03My4yIDAtMTMyLjQtNjAuMi0xMzIuNC0xMzQuNCAwLTc0LjEgNTkuMi0xMzQuNCAxMzIuNC0xMzQuNCAzNS4zIDAgNjguNiAxNCA5My42IDM5LjRsNjIuMy02My4zQzMzNSA1NS4zIDI3OS43IDMyIDIyMC43IDMyIDk4IDMyIDAgMTMyLjYgMCAyNTZjMCAxMjIuNSA5NyAyMjQgMjIwLjcgMjI0IDYzLjIgMCAxMjQuNS0yNi4yIDE3MS04Mi41LTItMjcuNi0xMy40LTc3LjctNjcuNy03Ny43em0tMTIuMS0xMTIuNUgyMDUuNnY4OUgzMjRjMzMuNSAwIDYwLjUgMTUuMSA3NiA0MS44di0zMC42YzAtNjUuMi00MC40LTEwMC4yLTg4LjEtMTAwLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvbGFuZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAuMSAxOTQuOEMzODkuMiAxOTcuNiAzODAuMiAxOTkuMSAzNzEgMjAyLjRDMzYzLjcgMjA0LjMgMzU2LjMgMjA2LjMgMzQ3LjggMjA4LjVMMzQ3LjIgMjA4LjZDMzQzIDIwOS44IDM0Mi42IDIwOS45IDMzOC43IDIwNS40QzMzNCAyMDAuMSAzMzAuNiAxOTYuNyAzMjQuMSAxOTMuNUMzMDQuNCAxODMuOSAyODUuNCAxODYuNyAyNjcuNyAxOTguMkMyNDYuNSAyMTEuOSAyMzUuNiAyMzIuMiAyMzUuOSAyNTcuNEMyMzYuMiAyODIuNCAyNTMuMyAzMDIuOSAyNzcuMSAzMDYuM0MyOTkuMSAzMDkuMSAzMTYuOSAzMDEuNyAzMzAuOSAyODUuOEMzMzMgMjgzLjIgMzM0LjkgMjgwLjUgMzM3IDI3Ny41VjI3Ny41TDMzNyAyNzcuNUMzMzcuOCAyNzYuNSAzMzguNSAyNzUuNCAzMzkuMyAyNzQuMkgyNzkuMkMyNzIuNyAyNzQuMiAyNzEuMSAyNzAuMiAyNzMuMyAyNjQuOUMyNzcuMyAyNTUuMiAyODQuOCAyMzkgMjg5LjIgMjMwLjlDMjkwLjEgMjI5LjEgMjkyLjMgMjI1LjEgMjk2LjEgMjI1LjFIMzk3LjJDNDAxLjcgMjExLjcgNDA5IDE5OC4yIDQxOC44IDE4NS40QzQ0MS41IDE1NS41IDQ2OC4xIDEzOS45IDUwNiAxMzMuNEM1MzcuOCAxMjcuOCA1NjcuNyAxMzAuOSA1OTQuOSAxNDkuM0M2MTkuNSAxNjYuMSA2MzQuNyAxODguOSA2MzguOCAyMTguOEM2NDQuMSAyNjAuOSA2MzEuOSAyOTUuMSA2MDIuMSAzMjQuNEM1ODIuNCAzNDUuMyA1NTcuMiAzNTguNCA1MjguMiAzNjQuM0M1MjIuNiAzNjUuMyA1MTcuMSAzNjUuOCA1MTEuNyAzNjYuM0M1MDguOCAzNjYuNSA1MDYgMzY2LjggNTAzLjIgMzY3LjFDNDc0LjkgMzY2LjUgNDQ5IDM1OC40IDQyNy4yIDMzOS43QzQxMS45IDMyNi40IDQwMS4zIDMxMC4xIDM5Ni4xIDI5MS4yQzM5Mi40IDI5OC41IDM4OC4xIDMwNS42IDM4Mi4xIDMxMi4zQzM2MC41IDM0MS45IDMzMS4yIDM2MC4zIDI5NC4yIDM2NS4yQzI2My42IDM2OS4zIDIzNS4zIDM2My40IDIxMC4zIDM0NC43QzE4Ny4zIDMyNy4yIDE3NC4yIDMwNC4yIDE3MC44IDI3NS41QzE2Ni43IDI0MS41IDE3Ni43IDIxMC4xIDE5Ny4yIDE4NC4yQzIxOS40IDE1NS4yIDI0OC43IDEzNi44IDI4NC41IDEzMC4zQzMxMy44IDEyNC4xIDM0MS44IDEyOC40IDM2Ny4xIDE0NS42QzM4My42IDE1Ni41IDM5NS40IDE3MS40IDQwMy4yIDE4OS41QzQwNS4xIDE5Mi4zIDQwMy44IDE5My45IDQwMC4xIDE5NC44ek00OC4zIDIwMC40QzQ3LjA1IDIwMC40IDQ2Ljc0IDE5OS44IDQ3LjM2IDE5OC44TDUzLjkxIDE5MC40QzU0LjUzIDE4OS41IDU2LjA5IDE4OC45IDU3LjM0IDE4OC45SDE2OC42QzE2OS44IDE4OC45IDE3MC4xIDE4OS44IDE2OS41IDE5MC43TDE2NC4yIDE5OC44QzE2My42IDE5OS44IDE2MiAyMDAuNyAxNjEuMSAyMDAuN0w0OC4zIDIwMC40ek0xLjI0NiAyMjkuMUMwIDIyOS4xLS4zMTE2IDIyOC40IC4zMTE2IDIyNy41TDYuODU1IDIxOS4xQzcuNDc5IDIxOC4yIDkuMDM3IDIxNy41IDEwLjI4IDIxNy41SDE1Mi40QzE1My42IDIxNy41IDE1NC4yIDIxOC41IDE1My45IDIxOS40TDE1MS40IDIyNi45QzE1MS4xIDIyOC4xIDE0OS45IDIyOC44IDE0OC42IDIyOC44TDEuMjQ2IDIyOS4xek03NS43MiAyNTUuOUM3NS4xIDI1Ni44IDc1LjQxIDI1Ny43IDc2LjY1IDI1Ny43TDE0NC42IDI1OEMxNDUuNSAyNTggMTQ2LjggMjU3LjEgMTQ2LjggMjU1LjlMMTQ3LjQgMjQ4LjRDMTQ3LjQgMjQ3LjEgMTQ2LjggMjQ2LjIgMTQ1LjUgMjQ2LjJIODMuMkM4MS45NSAyNDYuMiA4MC43MSAyNDcuMSA4MC4wOCAyNDguMUw3NS43MiAyNTUuOXpNNTc3LjIgMjM3LjlDNTc3IDIzNS4zIDU3Ni45IDIzMy4xIDU3Ni41IDIzMC45QzU3MC45IDIwMC4xIDU0Mi41IDE4Mi42IDUxMi45IDE4OS41QzQ4My45IDE5NiA0NjUuMiAyMTQuNCA0NTguNCAyNDMuN0M0NTIuOCAyNjggNDY0LjYgMjkyLjYgNDg3IDMwMi42QzUwNC4yIDMxMC4xIDUyMS4zIDMwOS4yIDUzNy44IDMwMC43QzU2Mi40IDI4Ny4xIDU3NS44IDI2OCA1NzcuNCAyNDEuMkM1NzcuMyAyNDAgNTc3LjMgMjM4LjkgNTc3LjIgMjM3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2RyZWFkc0cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIuNiA0MDMuM2gyLjhjMTIuNyAwIDI1LjUgMCAzOC4yLjEgMS42IDAgMy4xLS40IDMuNiAyLjEgNy4xIDM0LjkgMzAgNTQuNiA2Mi45IDYzLjkgMjYuOSA3LjYgNTQuMSA3LjggODEuMyAxLjggMzMuOC03LjQgNTYtMjguMyA2OC02MC40IDgtMjEuNSAxMC43LTQzLjggMTEtNjYuNS4xLTUuOC4zLTQ3LS4yLTUyLjhsLS45LS4zYy0uOCAxLjUtMS43IDIuOS0yLjUgNC40LTIyLjEgNDMuMS02MS4zIDY3LjQtMTA1LjQgNjkuMS0xMDMgNC0xNjkuNC01Ny0xNzItMTc2LjItLjUtMjMuNyAxLjgtNDYuOSA4LjMtNjkuN0M1OC4zIDQ3LjcgMTEyLjMuNiAxOTEuNiAwYzYxLjMtLjQgMTAxLjUgMzguNyAxMTYuMiA3MC4zLjUgMS4xIDEuMyAyLjMgMi40IDEuOVYxMC42aDQ0LjNjMCAyODAuMy4xIDMzMi4yLjEgMzMyLjItLjEgNzguNS0yNi43IDE0My43LTEwMyAxNjIuMi02OS41IDE2LjktMTU5IDQuOC0xOTYtNTcuMi04LTEzLjUtMTEuOC0yOC4zLTEzLTQ0LjV6TTE4OC45IDM2LjVjLTUyLjUtLjUtMTA4LjUgNDAuNy0xMTUgMTMzLjgtNC4xIDU5IDE0LjggMTIyLjIgNzEuNSAxNDguNiAyNy42IDEyLjkgNzQuMyAxNSAxMDguMy04LjcgNDcuNi0zMy4yIDYyLjctOTcgNTQuOC0xNTQtOS43LTcxLjEtNDcuOC0xMjAtMTE5LjYtMTE5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2RyZWFkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTkuOSAxOTEuMmM1LjEgMzcuMy00LjcgNzktMzUuOSAxMDAuNy0yMi4zIDE1LjUtNTIuOCAxNC4xLTcwLjggNS43LTM3LjEtMTcuMy00OS41LTU4LjYtNDYuOC05Ny4yIDQuMy02MC45IDQwLjktODcuOSA3NS4zLTg3LjUgNDYuOS0uMiA3MS44IDMxLjggNzguMiA3OC4zek00NDggODh2MzM2YzAgMzAuOS0yNS4xIDU2LTU2IDU2SDU2Yy0zMC45IDAtNTYtMjUuMS01Ni01NlY4OGMwLTMwLjkgMjUuMS01NiA1Ni01NmgzMzZjMzAuOSAwIDU2IDI1LjEgNTYgNTZ6TTMzMCAzMTMuMnMtLjEtMzQtLjEtMjE3LjNoLTI5djQwLjNjLS44LjMtMS4yLS41LTEuNi0xLjItOS42LTIwLjctMzUuOS00Ni4zLTc2LTQ2LTUxLjkuNC04Ny4yIDMxLjItMTAwLjYgNzcuOC00LjMgMTQuOS01LjggMzAuMS01LjUgNDUuNiAxLjcgNzcuOSA0NS4xIDExNy44IDExMi40IDExNS4yIDI4LjktMS4xIDU0LjUtMTcgNjktNDUuMi41LTEgMS4xLTEuOSAxLjctMi45LjIuMS40LjEuNi4yLjMgMy44LjIgMzAuNy4xIDM0LjUtLjIgMTQuOC0yIDI5LjUtNy4yIDQzLjUtNy44IDIxLTIyLjMgMzQuNy00NC41IDM5LjUtMTcuOCAzLjktMzUuNiAzLjgtNTMuMi0xLjItMjEuNS02LjEtMzYuNS0xOS00MS4xLTQxLjgtLjMtMS42LTEuMy0xLjMtMi4zLTEuM2gtMjYuOGMuOCAxMC42IDMuMiAyMC4zIDguNSAyOS4yIDI0LjIgNDAuNSA4Mi43IDQ4LjUgMTI4LjIgMzcuNCA0OS45LTEyLjMgNjcuMy01NC45IDY3LjQtMTA2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZURyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzOSAzMTQuOUwxNzUuNCAzMmgxNjEuMmwxNjMuNiAyODIuOUgzMzl6bS0xMzcuNSAyMy42TDEyMC45IDQ4MGgzMTAuNUw1MTIgMzM4LjVIMjAxLjV6TTE1NC4xIDY3LjRMMCAzMzguNSA4MC42IDQ4MCAyMzcgMjA4LjggMTU0LjEgNjcuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNS43MiwyMTV2NDEuMjVoNTcuMWE0OS42Niw0OS42NiwwLDAsMS0yMS4xNCwzMi42Yy05LjU0LDYuNTUtMjEuNzIsMTAuMjgtMzYsMTAuMjgtMjcuNiwwLTUwLjkzLTE4LjkxLTU5LjMtNDQuMjJhNjUuNjEsNjUuNjEsMCwwLDEsMC00MWwwLDBjOC4zNy0yNS40NiwzMS43LTQ0LjM3LDU5LjMtNDQuMzdhNTYuNDMsNTYuNDMsMCwwLDEsNDAuNTEsMTYuMDhMMTc2LjQ3LDE1NWExMDEuMjQsMTAxLjI0LDAsMCwwLTcwLjc1LTI3Ljg0LDEwNS41NSwxMDUuNTUsMCwwLDAtOTQuMzgsNTkuMTEsMTA3LjY0LDEwNy42NCwwLDAsMCwwLDk2LjE4di4xNWExMDUuNDEsMTA1LjQxLDAsMCwwLDk0LjM4LDU5YzI4LjQ3LDAsNTIuNTUtOS41Myw3MC0yNS45MSwyMC0xOC42MSwzMS40MS00Ni4xNSwzMS40MS03OC45MUExMzMuNzYsMTMzLjc2LDAsMCwwLDIwNS4zOCwyMTVabTM4OS40MS00Yy0xMC4xMy05LjM4LTIzLjkzLTE0LjE0LTQxLjM5LTE0LjE0LTIyLjQ2LDAtMzkuMzQsOC4zNC01MC41LDI0Ljg2bDIwLjg1LDEzLjI2cTExLjQ1LTE3LDMxLjI2LTE3YTM0LjA1LDM0LjA1LDAsMCwxLDIyLjc1LDguNzlBMjguMTQsMjguMTQsMCwwLDEsNDg3Ljc5LDI0OHY1LjUxYy05LjEtNS4wNy0yMC41NS03Ljc1LTM0LjY0LTcuNzUtMTYuNDQsMC0yOS42NSwzLjg4LTM5LjQ5LDExLjc3cy0xNC44MiwxOC4zMS0xNC44MiwzMS41NmEzOS43NCwzOS43NCwwLDAsMCwxMy45NCwzMS4yN2M5LjI1LDguMzQsMjEsMTIuNTEsMzQuNzksMTIuNTEsMTYuMjksMCwyOS4yMS03LjMsMzktMjEuODloMXYxNy43MmgyMi42MVYyNTBDNTEwLjI1LDIzMy40NSw1MDUuMjYsMjIwLjM0LDQ5NS4xMywyMTFaTTQ3NS45LDMwMC4zYTM3LjMyLDM3LjMyLDAsMCwxLTI2LjU3LDExLjE2QTI4LjYxLDI4LjYxLDAsMCwxLDQzMSwzMDUuMjFhMTkuNDEsMTkuNDEsMCwwLDEtNy43Ny0xNS42M2MwLTcsMy4yMi0xMi44MSw5LjU0LTE3LjQyczE0LjUzLTcsMjQuMDctN0M0NzAsMjY1LDQ4MC4zLDI2OCw0ODcuNjQsMjczLjk0LDQ4Ny42NCwyODQuMDcsNDgzLjY4LDI5Mi44NSw0NzUuOSwzMDAuM1ptLTkzLjY1LTE0MkE1NS43MSw1NS43MSwwLDAsMCwzNDEuNzQsMTQySDI3OS4wN1YzMjguNzRIMzAyLjdWMjUzLjFoMzljMTYsMCwyOS41LTUuMzYsNDAuNTEtMTUuOTMuODgtLjg5LDEuNzYtMS43OSwyLjY1LTIuNjhBNTQuNDUsNTQuNDUsMCwwLDAsMzgyLjI1LDE1OC4yNlptLTE2LjU4LDYyLjIzYTMwLjY1LDMwLjY1LDAsMCwxLTIzLjM0LDkuNjhIMzAyLjdWMTY1aDM5LjYzYTMyLDMyLDAsMCwxLDIyLjYsOS4yM0EzMy4xOCwzMy4xOCwwLDAsMSwzNjUuNjcsMjIwLjQ5Wk02MTQuMzEsMjAxLDU3Ny43NywyOTIuN2gtLjQ1TDUzOS45LDIwMUg1MTQuMjFMNTY2LDMyMC41NWwtMjkuMzUsNjQuMzJINTYxTDY0MCwyMDFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI1LjMgMjM0LjNMMTA0LjYgMTNsMjgwLjggMTYxLjItNjAuMSA2MC4xek00NyAwQzM0IDYuOCAyNS4zIDE5LjIgMjUuMyAzNS4zdjQ0MS4zYzAgMTYuMSA4LjcgMjguNSAyMS43IDM1LjNsMjU2LjYtMjU2TDQ3IDB6bTQyNS4yIDIyNS42bC01OC45LTM0LjEtNjUuNyA2NC41IDY1LjcgNjQuNSA2MC4xLTM0LjFjMTgtMTQuMyAxOC00Ni41LTEuMi02MC44ek0xMDQuNiA0OTlsMjgwLjgtMTYxLjItNjAuMS02MC4xTDEwNC42IDQ5OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlUGx1c0cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg2LjA2MSAyMjguNDk2YzEuODM0IDkuNjkyIDMuMTQzIDE5LjM4NCAzLjE0MyAzMS45NTZDMzg5LjIwNCAzNzAuMjA1IDMxNS41OTkgNDQ4IDIwNC44IDQ0OGMtMTA2LjA4NCAwLTE5Mi04NS45MTUtMTkyLTE5MnM4NS45MTYtMTkyIDE5Mi0xOTJjNTEuODY0IDAgOTUuMDgzIDE4Ljg1OSAxMjguNjExIDUwLjI5MmwtNTIuMTI2IDUwLjAzYy0xNC4xNDUtMTMuNjIxLTM5LjAyOC0yOS41OTktNzYuNDg1LTI5LjU5OS02NS40ODQgMC0xMTguOTIgNTQuMjIxLTExOC45MiAxMjEuMjc3IDAgNjcuMDU2IDUzLjQzNiAxMjEuMjc3IDExOC45MiAxMjEuMjc3IDc1Ljk2MSAwIDEwNC41MTMtNTQuNzQ1IDEwOC45NjUtODIuNzczSDIwNC44di02Ni4wMDloMTgxLjI2MXptMTg1LjQwNiA2LjQzN1YxNzkuMmgtNTYuMDAxdjU1LjczM2gtNTUuNzMzdjU2LjAwMWg1NS43MzN2NTUuNzMzaDU2LjAwMXYtNTUuNzMzSDYyNy4ydi01Ni4wMDFoLTU1LjczM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYsOEMxMTkuMSw4LDgsMTE5LjEsOCwyNTZTMTE5LjEsNTA0LDI1Niw1MDQsNTA0LDM5Mi45LDUwNCwyNTYsMzkyLjksOCwyNTYsOFpNMTg1LjMsMzgwYTEyNCwxMjQsMCwwLDEsMC0yNDhjMzEuMywwLDYwLjEsMTEsODMsMzIuM2wtMzMuNiwzMi42Yy0xMy4yLTEyLjktMzEuMy0xOS4xLTQ5LjQtMTkuMS00Mi45LDAtNzcuMiwzNS41LTc3LjIsNzguMVMxNDIuMywzMzQsMTg1LjMsMzM0YzMyLjYsMCw2NC45LTE5LjEsNzAuMS01My4zSDE4NS4zVjIzOC4xSDMwMi4yYTEwOS4yLDEwOS4yLDAsMCwxLDEuOSwyMC43YzAsNzAuOC00Ny41LDEyMS4yLTExOC44LDEyMS4yWk00MTUuNSwyNzMuOHYzNS41SDM4MFYyNzMuOEgzNDQuNVYyMzguM0gzODBWMjAyLjhoMzUuNXYzNS41aDM1LjJ2MzUuNVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlU2Nob2xhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTAuOSAyOTguNWMwIDAgMCAuMSAuMSAuMWM5LjIgMTkuNCAxNC40IDQxLjEgMTQuNCA2NEM0MDUuMyA0NDUuMSAzMzguNSA1MTIgMjU2IDUxMnMtMTQ5LjMtNjYuOS0xNDkuMy0xNDkuM2MwLTIyLjkgNS4yLTQ0LjYgMTQuNC02NGgwYzEuNy0zLjYgMy42LTcuMiA1LjYtMTAuN2M0LjQtNy42IDkuNC0xNC43IDE1LTIxLjNjMjcuNC0zMi42IDY4LjUtNTMuMyAxMTQuNC01My4zYzMzLjYgMCA2NC42IDExLjEgODkuNiAyOS45YzkuMSA2LjkgMTcuNCAxNC43IDI0LjggMjMuNWM1LjYgNi42IDEwLjYgMTMuOCAxNSAyMS4zYzIgMy40IDMuOCA3IDUuNSAxMC41em0yNi40LTE4LjhjLTMwLjEtNTguNC05MS05OC40LTE2MS4zLTk4LjRzLTEzMS4yIDQwLTE2MS4zIDk4LjRMMCAyMDIuNyAyNTYgMCA1MTIgMjAyLjdsLTk0LjcgNzcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlV2FsbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ni44IDEyNi44YzM3LjYgNjAuNiA2NC4yIDExMy4xIDg0LjMgMTYyLjUtOC4zIDMzLjgtMTguOCA2Ni41LTMxLjMgOTguMy0xMy4yLTUyLjMtMjYuNS0xMDEuMy01Ni0xNDguNSA2LjUtMzYuNCAyLjMtNzMuNiAzLTExMi4zek0xMDkuMyAyMDBIMTYuMWMtNi41IDAtMTAuNSA3LjUtNi41IDEyLjdDNTEuOCAyNjcgODEuMyAzMzAuNSAxMDEuMyA0MDBoMTAzLjVjLTE2LjItNjkuNy0zOC43LTEzMy43LTgyLjUtMTkzLjUtMy00LTgtNi41LTEzLTYuNXptNDcuOC04OGM2OC41IDEwOCAxMzAgMjM0LjUgMTM4LjIgMzY4SDQwOWMtMTItMTM4LTY4LjQtMjY1LTE0My4yLTM2OEgxNTcuMXptMjUxLjgtNjguNWMtMS44LTYuOC04LjItMTEuNS0xNS4yLTExLjVoLTg4LjNjLTUuMyAwLTkgNS03LjggMTAuMyAxMy4yIDQ2LjUgMjIuMyA5NS41IDI2LjUgMTQ2IDQ4LjIgODYuMiA3OS43IDE3OC4zIDkwLjYgMjcwLjggMTUuOC02MC41IDI1LjMtMTMzLjUgMjUuMy0yMDMgMC03My42LTEyLjEtMTQ1LjEtMzEuMS0yMTIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAyNjEuOEM0ODggNDAzLjMgMzkxLjEgNTA0IDI0OCA1MDQgMTEwLjggNTA0IDAgMzkzLjIgMCAyNTZTMTEwLjggOCAyNDggOGM2Ni44IDAgMTIzIDI0LjUgMTY2LjMgNjQuOWwtNjcuNSA2NC45QzI1OC41IDUyLjYgOTQuMyAxMTYuNiA5NC4zIDI1NmMwIDg2LjUgNjkuMSAxNTYuNiAxNTMuNyAxNTYuNiA5OC4yIDAgMTM1LTcwLjQgMTQwLjgtMTA2LjlIMjQ4di04NS4zaDIzNi4xYzIuMyAxMi43IDMuOSAyNC45IDMuOSA0MS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmF0aXBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMSA4IDAgMTE5LjEgMCAyNTZzMTExLjEgMjQ4IDI0OCAyNDggMjQ4LTExMS4xIDI0OC0yNDhTMzg0LjkgOCAyNDggOHptMTE0LjYgMjI2LjRsLTExMyAxNTIuNy0xMTIuNy0xNTIuN2MtOC43LTExLjktMTkuMS01MC40IDEzLjYtNzIgMjguMS0xOC4xIDU0LjYtNC4yIDY4LjUgMTEuOSAxNS45IDE3LjkgNDYuNiAxNi45IDYxLjcgMCAxMy45LTE2LjEgNDAuNC0zMCA2OC4xLTExLjkgMzIuOSAyMS42IDIyLjYgNjAgMTMuOCA3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JhdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDEuMSAyMTJjNC40IDQuNCA0LjQgMTEuOSAwIDE2LjNsLTkuNyA5LjdjLTQuNCA0LjctMTEuOSA0LjctMTYuNiAwbC0xMC41LTEwLjVjLTQuNC00LjctNC40LTExLjkgMC0xNi42bDkuNy05LjdjNC40LTQuNCAxMS45LTQuNCAxNi42IDBsMTAuNSAxMC44em0tMzAuMi0xOS43YzMtMyAzLTcuOCAwLTEwLjUtMi44LTMtNy41LTMtMTAuNSAwLTIuOCAyLjgtMi44IDcuNSAwIDEwLjUgMy4xIDIuOCA3LjggMi44IDEwLjUgMHptLTI2IDUuM2MtMyAyLjgtMyA3LjUgMCAxMC4yIDIuOCAzIDcuNSAzIDEwLjUgMCAyLjgtMi44IDIuOC03LjUgMC0xMC4yLTMtMy03LjctMy0xMC41IDB6bTcyLjUtMTMuM2MtMTkuOS0xNC40LTMzLjgtNDMuMi0xMS45LTY4LjEgMjEuNi0yNC45IDQwLjctMTcuMiA1OS44LjggMTEuOSAxMS4zIDI5LjMgMjQuOSAxNy4yIDQ4LjItMTIuNSAyMy41LTQ1LjEgMzMuMi02NS4xIDE5LjF6bTQ3LjctNDQuNWMtOC45LTEwLTIzLjMgNi45LTE1LjUgMTYuMSA3LjQgOSAzMi4xIDIuNCAxNS41LTE2LjF6TTUwNCAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OHptLTY2LjIgNDIuNmMyLjUtMTYuMS0yMC4yLTE2LjYtMjUuMi0yNS43LTEzLjYtMjQuMS0yNy43LTM2LjgtNTQuNS0zMC40IDExLjYtOCAyMy41LTYuMSAyMy41LTYuMS4zLTYuNCAwLTEzLTkuNC0yNC45IDMuOS0xMi41LjMtMjIuNC4zLTIyLjQgMTUuNS04LjYgMjYuOC0yNC40IDI5LjEtNDMuMiAzLjYtMzEtMTguOC01OS4yLTQ5LjgtNjIuOC0yMi4xLTIuNS00My43IDcuNy01NC4zIDI1LjctMjMuMiA0MC4xIDEuNCA3MC45IDIyLjQgODEuNC0xNC40LTEuNC0zNC4zLTExLjktNDAuMS0zNC4zLTYuNi0yNS43IDIuOC00OS44IDguOS02MS40IDAgMC00LjQtNS44LTgtOC45IDAgMC0xMy44IDAtMjQuNiA1LjMgMTEuOS0xNS4yIDI1LjItMTQuNCAyNS4yLTE0LjQgMC02LjQtLjYtMTQuOS0zLjYtMjEuNi01LjQtMTEtMjMuOC0xMi45LTMxLjcgMi44LjEtLjIuMy0uNC40LS41LTUgMTEuOS0xLjEgNTUuOSAxNi45IDg3LjItMi41IDEuNC05LjEgNi4xLTEzIDEwLTIxLjYgOS43LTU2LjIgNjAuMy01Ni4yIDYwLjMtMjguMiAxMC44LTc3LjIgNTAuOS03MC42IDc5LjcuMyAzIDEuNCA1LjUgMyA3LjUtMi44IDIuMi01LjUgNS04LjMgOC4zLTExLjkgMTMuOC01LjMgMzUuMiAxNy43IDI0LjQgMTUuOC03LjIgMjkuNi0yMC4yIDM2LjMtMzAuNCAwIDAtNS41LTUtMTYuMy00LjQgMjcuNy02LjYgMzQuMy05LjQgNDYuMi05LjEgOCAzLjkgOC0zNC4zIDgtMzQuMyAwLTE0LjctMi4yLTMxLTExLjEtNDEuNSAxMi41IDEyLjIgMjkuMSAzMi43IDI4IDYwLjYtLjggMTguMy0xNS4yIDIzLTE1LjIgMjMtOS4xIDE2LjYtNDMuMiA2NS45LTMwLjQgMTA2IDAgMC05LjctMTQuOS0xMC4yLTIyLjEtMTcuNCAxOS40LTQ2LjUgNTIuMy0yNC42IDY0LjUgMjYuNiAxNC43IDEwOC44LTg4LjYgMTI2LjItMTQyLjMgMzQuNi0yMC44IDU1LjQtNDcuMyA2My45LTY1IDIyIDQzLjUgOTUuMyA5NC41IDEwMS4xIDU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwZmlyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIuNSAzMDEuNGMwLTczLjggMTA1LjEtMTIyLjUgMTA1LjEtMjAzIDAtNDcuMS0zNC04OC0zOS4xLTkwLjQuNCAzLjMuNiA2LjcuNiAxMEMxNzkuMSAxMTAuMSAzMiAxNzEuOSAzMiAyODYuNmMwIDQ5LjggMzIuMiA3OS4yIDY2LjUgMTA4LjMgNjUuMSA0Ni43IDc4LjEgNzEuNCA3OC4xIDg2LjYgMCAxMC4xLTQuOCAxNy00LjggMjIuMyAxMy4xLTE2LjcgMTcuNC0zMS45IDE3LjUtNDYuNCAwLTI5LjYtMjEuNy01Ni4zLTQ0LjItODYuNS0xNi0yMi4zLTMyLjYtNDIuNi0zMi42LTY5LjV6bTIwNS4zLTM5Yy0xMi4xLTY2LjgtNzgtMTI0LjQtOTQuNy0xMzAuOWw0IDcuMmMyLjQgNS4xIDMuNCAxMC45IDMuNCAxNy4xIDAgNDQuNy01NC4yIDExMS4yLTU2LjYgMTE2LjctMi4yIDUuMS0zLjIgMTAuNS0zLjIgMTUuOCAwIDIwLjEgMTUuMiA0Mi4xIDE3LjkgNDIuMSAyLjQgMCA1Ni42LTU1LjQgNTguMS04Ny43IDYuNCAxMS43IDkuMSAyMi42IDkuMSAzMy40IDAgNDEuMi00MS44IDk2LjktNDEuOCA5Ni45IDAgMTEuNiAzMS45IDUzLjIgMzUuNSA1My4yIDEgMCAyLjItMS40IDMuMi0yLjQgMzcuOS0zOS4zIDY3LjMtODUgNjcuMy0xMzYuOCAwLTgtLjctMTYuMi0yLjItMjQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3J1bnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEuMyAxODkuM2MtMS4xIDEwIDUuMiAxOS4xIDUuMiAxOS4xLjctNy41IDIuMi0xMi44IDQtMTYuNi40IDEwLjMgMy4yIDIzLjUgMTIuOCAzNC4xIDYuOSA3LjYgMzUuNiAyMy4zIDU0LjkgNi4xIDEgMi40IDIuMSA1LjMgMyA4LjUgMi45IDEwLjMtMi43IDI1LjMtMi43IDI1LjNzMTUuMS0xNy4xIDEzLjktMzIuNWMxMC44LS41IDIxLjQtOC40IDIxLjEtMTkuNSAwIDAtMTguOSAxMC40LTM1LjUtOC44LTkuNy0xMS4yLTQwLjktNDItODMuMS0zMS44IDQuMyAxIDguOSAyLjQgMTMuNSA0LjFoLS4xYy00LjIgMi02LjUgNy4xLTcgMTJ6bTI4LjMtMS44YzE5LjUgMTEgMzcuNCAyNS43IDQ0LjkgMzctNS43IDMuMy0yMS43IDEwLjQtMzgtMS43LTEwLjMtNy42LTkuOC0yNi4yLTYuOS0zNS4zem0xNDIuMSA0NS44Yy0xLjIgMTUuNSAxMy45IDMyLjUgMTMuOSAzMi41cy01LjYtMTUtMi43LTI1LjNjLjktMy4yIDItNiAzLTguNSAxOS4zIDE3LjMgNDggMS41IDU0LjgtNi4xIDkuNi0xMC42IDEyLjMtMjMuOCAxMi44LTM0LjEgMS44IDMuOCAzLjQgOS4xIDQgMTYuNiAwIDAgNi40LTkuMSA1LjItMTkuMS0uNi01LTIuOS0xMC03LTExLjhoLS4xYzQuNi0xLjggOS4yLTMuMiAxMy41LTQuMS00Mi4zLTEwLjItNzMuNCAyMC42LTgzLjEgMzEuOC0xNi43IDE5LjItMzUuNSA4LjgtMzUuNSA4LjgtLjIgMTAuOSAxMC40IDE4LjkgMjEuMiAxOS4zem02Mi43LTQ1LjhjMyA5LjEgMy40IDI3LjctNyAzNS40LTE2LjMgMTIuMS0zMi4yIDUtMzcuOSAxLjYgNy41LTExLjQgMjUuNC0yNiA0NC45LTM3ek0xNjAgNDE4LjVoLTI5LjRjLTUuNSAwLTguMiAxLjYtOS41IDIuOS0xLjkgMi0yLjIgNC43LS45IDguMSAzLjUgOS4xIDExLjQgMTYuNSAxMy43IDE4LjYgMy4xIDIuNyA3LjUgNC4zIDExLjggNC4zIDQuNCAwIDguMy0xLjcgMTEtNC42IDcuNS04LjIgMTEuOS0xNy4xIDEzLTE5LjguNi0xLjUgMS4zLTQuNS0uOS02LjgtMS44LTEuOC00LjctMi43LTguOC0yLjd6bTE4OS4yLTEwMS4yYy0yLjQgMTcuOS0xMyAzMy44LTI0LjYgNDMuNy0zLjEtMjIuNy0zLjctNTUuNS0zLjctNjIuNCAwLTE0LjcgOS41LTI0LjUgMTIuMi0yNi4xIDIuNS0xLjUgNS40LTMgOC4zLTQuNiAxOC05LjYgNDAuNC0yMS42IDQwLjQtNDMuNyAwLTE2LjItOS4zLTIzLjItMTUuNC0yNy44LS44LS42LTEuNS0xLjEtMi4yLTEuNy0yLjEtMS43LTMuNy0zLTQuMy00LjQtNC40LTkuOC0zLjYtMzQuMi0xLjctMzcuNi42LS42IDE2LjctMjAuOSAxMS44LTM5LjItMi03LjQtNi45LTEzLjMtMTQuMS0xNy01LjMtMi43LTExLjktNC4yLTE5LjUtNC41LS4xLTItLjUtMy45LS45LTUuOS0uNi0yLjYtMS4xLTUuMy0uOS04LjEuNC00LjcuOC05IDIuMi0xMS4zIDguNC0xMy4zIDI4LjgtMTcuNiAyOS0xNy42bDEyLjMtMi40LTguMS05LjVjLS4xLS4yLTE3LjMtMTcuNS00Ni4zLTE3LjUtNy45IDAtMTYgMS4zLTI0LjEgMy45LTI0LjIgNy44LTQyLjkgMzAuNS00OS40IDM5LjMtMy4xLTEtNi4zLTEuOS05LjYtMi43LTQuMi0xNS44IDktMzguNSA5LTM4LjVzLTEzLjYtMy0zMy43IDE1LjJjLTIuNi02LjUtOC4xLTIwLjUtMS44LTM3LjJDMTg0LjYgMTAuMSAxNzcuMiAyNiAxNzUgNDAuNGMtNy42LTUuNC02LjctMjMuMS03LjItMjcuNi03LjUuOS0yOS4yIDIxLjktMjguMiA0OC4zLTIgLjUtMy45IDEuMS01LjkgMS43LTYuNS04LjgtMjUuMS0zMS41LTQ5LjQtMzkuMy03LjktMi4yLTE2LTMuNS0yMy45LTMuNS0yOSAwLTQ2LjEgMTcuMy00Ni4zIDE3LjVMNiA0Ni45bDEyLjMgMi40Yy4yIDAgMjAuNiA0LjMgMjkgMTcuNiAxLjQgMi4yIDEuOCA2LjYgMi4yIDExLjMuMiAyLjgtLjQgNS41LS45IDguMS0uNCAxLjktLjggMy45LS45IDUuOS03LjcuMy0xNC4yIDEuOC0xOS41IDQuNS03LjIgMy43LTEyLjEgOS42LTE0LjEgMTctNSAxOC4yIDExLjIgMzguNSAxMS44IDM5LjIgMS45IDMuNCAyLjcgMjcuOC0xLjcgMzcuNi0uNiAxLjQtMi4yIDIuNy00LjMgNC40LS43LjUtMS40IDEuMS0yLjIgMS43LTYuMSA0LjYtMTUuNCAxMS43LTE1LjQgMjcuOCAwIDIyLjEgMjIuNCAzNC4xIDQwLjQgNDMuNyAzIDEuNiA1LjggMy4xIDguMyA0LjYgMi43IDEuNiAxMi4yIDExLjQgMTIuMiAyNi4xIDAgNi45LS42IDM5LjctMy43IDYyLjQtMTEuNi05LjktMjIuMi0yNS45LTI0LjYtNDMuOCAwIDAtMjkuMiAyMi42LTIwLjYgNzAuOCA1LjIgMjkuNSAyMy4yIDQ2LjEgNDcgNTQuNyA4LjggMTkuMSAyOS40IDQ1LjcgNjcuMyA0OS42QzE0MyA1MDQuMyAxNjMgNTEyIDE5Mi4yIDUxMmguMmMyOS4xIDAgNDkuMS03LjcgNjMuNi0xOS41IDM3LjktMy45IDU4LjUtMzAuNSA2Ny4zLTQ5LjYgMjMuOC04LjcgNDEuNy0yNS4yIDQ3LTU0LjcgOC4yLTQ4LjQtMjEuMS03MC45LTIxLjEtNzAuOXpNMzA1LjcgMzcuN2M1LjYtMS44IDExLjYtMi43IDE3LjctMi43IDExIDAgMTkuOSAzIDI0LjcgNS0zLjEgMS40LTYuNCAzLjItOS43IDUuMy0yLjQtLjQtNS42LS44LTkuMi0uOC0xMC41IDAtMjAuNSAzLjEtMjguNyA4LjktMTIuMyA4LjctMTggMTYuOS0yMC43IDIyLjQtMi4yLTEuMy00LjUtMi41LTcuMS0zLjctMS42LS44LTMuMS0xLjUtNC43LTIuMiA2LjEtOS4xIDE5LjktMjYuNSAzNy43LTMyLjJ6bTIxIDE4LjJjLS44IDEtMS42IDIuMS0yLjMgMy4yLTMuMyA1LjItMy45IDExLjYtNC40IDE3LjgtLjUgNi40LTEuMSAxMi41LTQuNCAxNy00LjIuOC04LjEgMS43LTExLjUgMi43LTIuMy0zLjEtNS42LTctMTAuNS0xMS4yIDEuNC00LjggNS41LTE2LjEgMTMuNS0yMi41IDUuNi00LjMgMTIuMi02LjcgMTkuNi03ek00NS42IDQ1LjNjLTMuMy0yLjItNi42LTQtOS43LTUuMyA0LjgtMiAxMy43LTUgMjQuNy01IDYuMSAwIDEyIC45IDE3LjcgMi43IDE3LjggNS44IDMxLjYgMjMuMiAzNy43IDMyLjEtMS42LjctMy4yIDEuNC00LjggMi4yLTIuNSAxLjItNC45IDIuNS03LjEgMy43LTIuNi01LjQtOC4zLTEzLjctMjAuNy0yMi40LTguMy01LjgtMTguMi04LjktMjguOC04LjktMy40LjEtNi42LjUtOSAuOXptNDQuNyA0MC4xYy00LjkgNC4yLTguMyA4LTEwLjUgMTEuMi0zLjQtLjktNy4zLTEuOS0xMS41LTIuN0M2NSA4OS41IDY0LjUgODMuNCA2NCA3N2MtLjUtNi4yLTEuMS0xMi42LTQuNC0xNy44LS43LTEuMS0xLjUtMi4yLTIuMy0zLjIgNy40LjMgMTQgMi42IDE5LjUgNyA4IDYuMyAxMi4xIDE3LjYgMTMuNSAyMi40ek01OC4xIDI1OS45Yy0yLjctMS42LTUuNi0zLjEtOC40LTQuNi0xNC45LTgtMzAuMi0xNi4zLTMwLjItMzAuNSAwLTExLjEgNC4zLTE0LjYgOC45LTE4LjJsLjUtLjRjLjctLjYgMS40LTEuMiAyLjItMS44LS45IDcuMi0xLjkgMTMuMy0yLjcgMTQuOSAwIDAgMTIuMS0xNSAxNS43LTQ0LjMgMS40LTExLjUtMS4xLTM0LjMtNS4xLTQzIC4yIDQuOSAwIDkuOC0uMyAxNC40LS40LS44LS44LTEuNi0xLjMtMi4yLTMuMi00LTExLjgtMTcuNS05LjQtMjYuNi45LTMuNSAzLjEtNiA2LjctNy44IDMuOC0xLjkgOC44LTIuOSAxNS4xLTIuOSAxMi4zIDAgMjUuOSAzLjcgMzIuOSA2IDI1LjEgOCA1NS40IDMwLjkgNjQuMSAzNy43LjIuMi40LjMuNC4zbDUuNiAzLjktMy41LTUuOGMtLjItLjMtMTkuMS0zMS40LTUzLjItNDYuNSAyLTIuOSA3LjQtOC4xIDIxLjYtMTUuMSAyMS40LTEwLjUgNDYuNS0xNS44IDc0LjMtMTUuOCAyNy45IDAgNTIuOSA1LjMgNzQuMyAxNS44IDE0LjIgNi45IDE5LjYgMTIuMiAyMS42IDE1LjEtMzQgMTUuMS01Mi45IDQ2LjItNTMuMSA0Ni41bC0zLjUgNS44IDUuNi0zLjlzLjItLjEuNC0uM2M4LjctNi44IDM5LTI5LjggNjQuMS0zNy43IDctMi4yIDIwLjYtNiAzMi45LTYgNi4zIDAgMTEuMyAxIDE1LjEgMi45IDMuNSAxLjggNS43IDQuNCA2LjcgNy44IDIuNSA5LjEtNi4xIDIyLjYtOS40IDI2LjYtLjUuNi0uOSAxLjMtMS4zIDIuMi0uMy00LjYtLjUtOS41LS4zLTE0LjQtNCA4LjgtNi41IDMxLjUtNS4xIDQzIDMuNiAyOS4zIDE1LjcgNDQuMyAxNS43IDQ0LjMtLjgtMS42LTEuOC03LjctMi43LTE0LjkuNy42IDEuNSAxLjIgMi4yIDEuOGwuNS40YzQuNiAzLjcgOC45IDcuMSA4LjkgMTguMiAwIDE0LjItMTUuNCAyMi41LTMwLjIgMzAuNS0yLjkgMS41LTUuNyAzLjEtOC40IDQuNi04LjcgNS0xOCAxNi43LTE5LjEgMzQuMi0uOSAxNC42LjkgNDkuOSAzLjQgNzUuOS0xMi40IDQuOC0yNi43IDYuNC0zOS43IDYuOC0yLTQuMS0zLjktOC41LTUuNS0xMy4xLS43LTItMTkuNi01MS4xLTI2LjQtNjIuMiA1LjUgMzkgMTcuNSA3My43IDIzLjUgODkuNi0zLjUtLjUtNy4zLS43LTExLjctLjdoLTExN2MtNC40IDAtOC4zLjMtMTEuNy43IDYtMTUuOSAxOC4xLTUwLjYgMjMuNS04OS42LTYuOCAxMS4yLTI1LjcgNjAuMy0yNi40IDYyLjItMS42IDQuNi0zLjUgOS01LjUgMTMuMS0xMy0uNC0yNy4yLTItMzkuNy02LjggMi41LTI2IDQuMy02MS4yIDMuNC03NS45LS45LTE3LjQtMTAuMy0yOS4yLTE5LTM0LjJ6TTM0LjggNDA0LjZjLTEyLjEtMjAtOC43LTU0LjEtMy43LTU5LjEgMTAuOSAzNC40IDQ3LjIgNDQuMyA3NC40IDQ1LjQtMi43IDQuMi01LjIgNy42LTcgMTBsLTEuNCAxLjRjLTcuMiA3LjgtOC42IDE4LjUtNC4xIDMxLjgtMjIuNy0uMS00Ni4zLTkuOC01OC4yLTI5LjV6bTQ1LjcgNDMuNWM2IDEuMSAxMi4yIDEuOSAxOC42IDIuNCAzLjUgOCA3LjQgMTUuOSAxMi4zIDIzLjEtMTQuNC01LjktMjQuNC0xNi0zMC45LTI1LjV6TTE5MiA0OTguMmMtNjAuNi0uMS03OC4zLTQ1LjgtODQuOS02NC43LTMuNy0xMC41LTMuNC0xOC4yLjktMjMuMSAyLjktMy4zIDkuNS03LjIgMjQuNi03LjJoMTE4LjhjMTUuMSAwIDIxLjggMy45IDI0LjYgNy4yIDQuMiA0LjggNC41IDEyLjYuOSAyMy4xLTYuNiAxOC44LTI0LjMgNjQuNi04NC45IDY0Ljd6bTgwLjYtMjQuNmM0LjktNy4yIDguOC0xNS4xIDEyLjMtMjMuMSA2LjQtLjUgMTIuNi0xLjMgMTguNi0yLjQtNi41IDkuNS0xNi41IDE5LjYtMzAuOSAyNS41em03Ni42LTY5Yy0xMiAxOS43LTM1LjYgMjkuMy01OC4xIDI5LjcgNC41LTEzLjMgMy4xLTI0LjEtNC4xLTMxLjgtLjQtLjUtLjktMS0xLjQtMS41LTEuOC0yLjQtNC4zLTUuOC03LTEwIDI3LjItMS4yIDYzLjUtMTEgNzQuNC00NS40IDUgNSA4LjQgMzkuMS0zLjggNTl6TTE5MS45IDE4Ny43aC4yYzEyLjctLjEgMjcuMi0xNy44IDI3LjItMTcuOC05LjkgNi0xOC44IDguMS0yNy4zIDguMy04LjUtLjItMTcuNC0yLjMtMjcuMy04LjMgMCAwIDE0LjUgMTcuNiAyNy4yIDE3Ljh6bTYxLjcgMjMwLjdoLTI5LjRjLTQuMiAwLTcuMi45LTguOSAyLjctMi4yIDIuMy0xLjUgNS4yLS45IDYuNyAxIDIuNiA1LjUgMTEuMyAxMyAxOS4zIDIuNyAyLjkgNi42IDQuNSAxMSA0LjVzOC43LTEuNiAxMS44LTQuMmMyLjMtMiAxMC4yLTkuMiAxMy43LTE4LjEgMS4zLTMuMyAxLTYtLjktNy45LTEuMy0xLjMtNC0yLjktOS40LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1aWxkZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQzLjQyNyw2NEg0LjU3MWMwLDEwMy4yNiwyMi4xOTIsMTgwLjA2LDQzLjQxOCwyMjIuMzU4QzExMi4wNDYsNDE0LjEzNSwyMjQsNDQ4LDIyNS4yNTYsNDQ4YTMxMi44MjQsMzEyLjgyNCwwLDAsMCwxNDAuNTUtMTAzLjQ3N2MyNS45MDctMzMuOTIzLDUzLjEtODcuMTksNjUuOTE2LTE0NS43NjFIMTcxLjgzM2M0LjE0LDM2LjQyOSwyMi4xNzcsNjcuOTQ2LDQ1LjEsODYuOTQ0aDg4LjU4OWMtMTcuMDEyLDI4LjIxMy00OC4xODYsNTQuNC04MC40NTYsNjkuNDgyLTMxLjIzMi0xMy4yNTktNjkuMDktNDYuNTQ0LTk2LjU0OC05OC4zNjItMjYuNzI2LTUzLjgzMy0yNy4wOTItMTA1Ljg4My0yNy4wOTItMTA1Ljg4M0g0MzcuNTczQTYyNS45MSw2MjUuOTEsMCwwLDAsNDQzLjQyNyw2NFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3VscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDkuOCAzOTEuMWwtMTQuMSAyNC42LTQuNiA4MC4yYzAgOC45LTI4LjMgMTYuMS02My4xIDE2LjFzLTYzLjEtNy4yLTYzLjEtMTYuMWwtNS44LTc5LjQtMTQuOS0yNS40YzQxLjIgMTcuMyAxMjYgMTYuNyAxNjUuNiAwem0tMTk2LTI1My4zbDEzLjYgMTI1LjVjNS45LTIwIDIwLjgtNDcgNDAtNTUuMiA2LjMtMi43IDEyLjctMi43IDE4LjcuOSA1LjIgMyA5LjYgOS4zIDEwLjEgMTEuOCAxLjIgNi41LTIgOS4xLTQuNSA5LjEtMyAwLTUuMy00LjYtNi44LTcuMy00LjEtNy4zLTEwLjMtNy42LTE2LjktMi44LTYuOSA1LTEyLjkgMTMuNC0xNy4xIDIwLjctNS4xIDguOC05LjQgMTguNS0xMiAyOC4yLTEuNSA1LjYtMi45IDE0LjYtLjYgMTkuOSAxIDIuMiAyLjUgMy42IDQuOSAzLjYgNSAwIDEyLjMtNi42IDE1LjgtMTAuMSA0LjUtNC41IDEwLjMtMTEuNSAxMi41LTE2bDUuMi0xNS41YzIuNi02LjggOS45LTUuNiA5LjkgMCAwIDEwLjItMy43IDEzLjYtMTAgMzQuNy01LjggMTkuNS03LjYgMjUuOC03LjYgMjUuOC0uNyAyLjgtMy40IDcuNS02LjMgNy41LTEuMiAwLTIuMS0uNC0yLjYtMS4yLTEtMS40LS45LTUuMy0uOC02LjMuMi0zLjIgNi4zLTIyLjIgNy4zLTI1LjItMiAyLjItNC4xIDQuNC02LjQgNi42LTUuNCA1LjEtMTQuMSAxMS44LTIxLjUgMTEuOC0zLjQgMC01LjYtLjktNy43LTIuNGw3LjYgNzkuNmMyIDUgMzkuMiAxNy4xIDg4LjIgMTcuMSA0OS4xIDAgODYuMy0xMi4yIDg4LjItMTcuMWwxMC45LTk0LjZjLTUuNyA1LjItMTIuMyAxMS42LTE5LjYgMTQuOC01LjQgMi4zLTE3LjQgMy44LTE3LjQtNS43IDAtNS4yIDkuMS0xNC44IDE0LjQtMjEuNSAxLjQtMS43IDQuNy01LjkgNC43LTguMSAwLTIuOS02LTIuMi0xMS43IDIuNS0zLjIgMi43LTYuMiA2LjMtOC43IDkuNy00LjMgNi02LjYgMTEuMi04LjUgMTUuNS02LjIgMTQuMi00LjEgOC42LTkuMSAyMi01IDEzLjMtNC4yIDExLjgtNS4yIDE0LS45IDEuOS0yLjIgMy41LTQgNC41LTEuOSAxLTQuNS45LTYuMS0uMy0uOS0uNi0xLjMtMS45LTEuMy0zLjcgMC0uOS4xLTEuOC4zLTIuNyAxLjUtNi4xIDcuOC0xOC4xIDE1LTM0LjMgMS42LTMuNyAxLTIuNi44LTIuMy02LjIgNi0xMC45IDguOS0xNC40IDEwLjUtNS44IDIuNi0xMyAyLjYtMTQuNS00LjEtLjEtLjQtLjEtLjgtLjItMS4yLTExLjggOS4yLTI0LjMgMTEuNy0yMC04LjEtNC42IDguMi0xMi42IDE0LjktMjIuNCAxNC45LTQuMSAwLTcuMS0xLjQtOC42LTUuMS0yLjMtNS41IDEuMy0xNC45IDQuNi0yMy44IDEuNy00LjUgNC05LjkgNy4xLTE2LjIgMS42LTMuNCA0LjItNS40IDcuNi00LjUuNi4yIDEuMS40IDEuNi43IDIuNiAxLjggMS42IDQuNS4zIDcuMi0zLjggNy41LTcuMSAxMy05LjMgMjAuOC0uOSAzLjMtMiA5IDEuNSA5IDIuNCAwIDQuNy0uOCA2LjktMi40IDQuNi0zLjQgOC4zLTguNSAxMS4xLTEzLjUgMi0zLjYgNC40LTguMyA1LjYtMTIuMy41LTEuNyAxLjEtMy4zIDEuOC00LjggMS4xLTIuNSAyLjYtNS4xIDUuMi01LjEgMS4zIDAgMi40LjUgMy4yIDEuNSAxLjcgMi4yIDEuMyA0LjUuNCA2LjktMiA1LjYtNC43IDEwLjYtNi45IDE2LjctMS4zIDMuNS0yLjcgOC0yLjcgMTEuNyAwIDMuNCAzLjcgMi42IDYuOCAxLjIgMi40LTEuMSA0LjgtMi44IDYuOC00LjUgMS4yLTQuOS45LTMuOCAyNi40LTY4LjIgMS4zLTMuMyAzLjctNC43IDYuMS00LjcgMS4yIDAgMi4yLjQgMy4yIDEuMSAxLjcgMS4zIDEuNyA0LjEgMSA2LjItLjcgMS45LS42IDEuMy00LjUgMTAuNS01LjIgMTIuMS04LjYgMjAuOC0xMy4yIDMxLjktMS45IDQuNi03LjcgMTguOS04LjcgMjIuMy0uNiAyLjItMS4zIDUuOCAxIDUuOCA1LjQgMCAxOS4zLTEzLjEgMjMuMS0xNyAuMi0uMy41LS40LjktLjYuNi0xLjkgMS4yLTMuNyAxLjctNS41IDEuNC0zLjggMi43LTguMiA1LjMtMTEuMy44LTEgMS43LTEuNiAyLjctMS42IDIuOCAwIDQuMiAxLjIgNC4yIDQgMCAxLjEtLjcgNS4xLTEuMSA2LjIgMS40LTEuNSAyLjktMyA0LjUtNC41IDE1LTEzLjkgMjUuNy02LjggMjUuNy4yIDAgNy40LTguOSAxNy43LTEzLjggMjMuNC0xLjYgMS45LTQuOSA1LjQtNSA2LjQgMCAxLjMuOSAxLjggMi4yIDEuOCAyIDAgNi40LTMuNSA4LTQuNyA1LTMuOSAxMS44LTkuOSAxNi42LTE0LjFsMTQuOC0xMzYuOGMtMzAuNSAxNy4xLTE5Ny42IDE3LjItMjI4LjMuMnptMjI5LjctOC41YzAgMjEtMjMxLjIgMjEtMjMxLjIgMCAwLTguOCA1MS44LTE1LjkgMTE1LjYtMTUuOSA5IDAgMTcuOC4xIDI2LjMuNGwxMi42LTQ4LjdMMjI4LjEuNmMxLjQtMS40IDUuOC0uMiA5LjkgMy41czYuNiA3LjkgNS4zIDkuM2wtLjEuMUwxODUuOSA3NGwtMTAgNDAuN2MzOS45IDIuNiA2Ny42IDguMSA2Ny42IDE0LjZ6bS02OS40IDQuNmMwLS44LS45LTEuNS0yLjUtMi4xbC0uMi44YzAgMS4zLTUgMi40LTExLjEgMi40cy0xMS4xLTEuMS0xMS4xLTIuNGMwLS4xIDAtLjIuMS0uM2wuMi0uN2MtMS44LjYtMyAxLjQtMyAyLjMgMCAyLjEgNi4yIDMuNyAxMy43IDMuNyA3LjcuMSAxMy45LTEuNiAxMy45LTMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFja2VyTmV3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMjEuMiAxOTcuMkgyMWMuMS0uMS4yLS4zLjMtLjQgMCAuMSAwIC4zLS4xLjR6bTIxOCA1My45VjM4NGgtMzEuNFYyODEuM0wxMjggMTI4aDM3LjNjNTIuNSA5OC4zIDQ5LjIgMTAxLjIgNTkuMyAxMjUuNiAxMi4zLTI3IDUuOC0yNC40IDYwLjYtMTI1LjZIMzIwbC04MC44IDE1NS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYWNrZXJyYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Ny41IDEyOEM0NjMgMTAzLjA1IDI4NS4xMyAwIDI1Ni4xNiAwUzQ5LjI1IDEwMi43OSAzNC44NCAxMjhzLTE0LjQ5IDIzMC44IDAgMjU2IDE5Mi4zOCAxMjggMjIxLjMyIDEyOFM0NjMgNDA5LjA4IDQ3Ny40OSAzODRzMTQuNTEtMjMxIC4wMS0yNTZ6TTMxNi4xMyA0MTQuMjJjLTQgMC00MC45MS0zNS43Ny0zOC0zOC42OS44Ny0uODcgNi4yNi0xLjQ4IDE3LjU1LTEuODMgMC0yNi4yMy41OS02OC41OS45NC04Ni4zMiAwLTItLjQ0LTMuNDMtLjQ0LTUuODVoLTc5LjkzYzAgNy4xLS40NiAzNi4yIDEuMzcgNzIuODguMjMgNC41NC0xLjU4IDYtNS43NCA1Ljk0LTEwLjEzIDAtMjAuMjctLjExLTMwLjQxLS4wOC00LjEgMC01Ljg3LTEuNTMtNS43NC02LjExLjkyLTMzLjQ0IDMtODQtLjE1LTIxMi42N3YtMy4xN2MtOS42Ny0uMzUtMTYuMzgtMS0xNy4yNi0xLjg0LTIuOTItMi45MiAzNC41NC0zOC42OSAzOC40OS0zOC42OXM0MS4xNyAzNS43OCAzOC4yNyAzOC42OWMtLjg3Ljg3LTcuOSAxLjQ5LTE2Ljc3IDEuODR2My4xNmMtMi40MiAyNS43NS0yIDc5LjU5LTIuNjMgMTA1LjM5aDgwLjI2YzAtNC41NS4zOS0zNC43NC0xLjItODMuNjQtLjEtMy4zOS45NS01LjE3IDQuMjEtNS4yIDExLjA3LS4wOCAyMi4xNS0uMTMgMzMuMjMtLjA2IDMuNDYgMCA0LjU3IDEuNzIgNC41IDUuMzhDMzMzIDM1NC42NCAzMzYgMzQxLjI5IDMzNiAzNzMuNjljOC44Ny4zNSAxNi44MiAxIDE3LjY5IDEuODQgMi44OCAyLjkxLTMzLjYyIDM4LjY5LTM3LjU4IDM4LjY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXNobm9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNS4xOSAxNzEuMUMtMTEuNzIgMjE3LjEtMTEuNzIgMjk0IDM1LjE5IDM0MC45TDE3MS4xIDQ3Ni44QzIxNy4xIDUyMy43IDI5NCA1MjMuNyAzNDAuOSA0NzYuOEw0NzYuOCAzNDAuOUM1MjMuNyAyOTQgNTIzLjcgMjE3LjEgNDc2LjggMTcxLjFMMzQwLjkgMzUuMTlDMjk0LTExLjcyIDIxNy4xLTExLjcyIDE3MS4xIDM1LjE5TDM1LjE5IDE3MS4xek0zMTUuNSAzMTUuNUMyODIuNiAzNDguMyAyMjkuNCAzNDguMyAxOTYuNiAzMTUuNUMxNjMuNyAyODIuNiAxNjMuNyAyMjkuNCAxOTYuNiAxOTYuNkMyMjkuNCAxNjMuNyAyODIuNiAxNjMuNyAzMTUuNSAxOTYuNkMzNDguMyAyMjkuNCAzNDguMyAyODIuNiAzMTUuNSAzMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTEuNiAxNTcuNmMwLTEuOS0uOS0yLjgtMi44LTIuOGgtNDAuOWMtMS42IDAtMi43IDEuNC0yLjcgMi44djIwMS44YzAgMS40IDEuMSAyLjggMi43IDIuOGg0MC45YzEuOSAwIDIuOC0uOSAyLjgtMi44ek0xNTYuNSAxNjhjLTE2LjEtMTEuOC0zNi4zLTE3LjktNjAuMy0xOC0xOC4xLS4xLTM0LjYgMy43LTQ5LjggMTEuNFY4MC4yYzAtMS44LS45LTIuNy0yLjgtMi43SDIuN2MtMS44IDAtMi43LjktMi43IDIuN3YyNzkuMmMwIDEuOS45IDIuOCAyLjcgMi44aDQxYzEuOSAwIDIuOC0uOSAyLjgtMi44VjIyMy4zYzAtLjgtMi44LTI3IDQ1LjgtMjcgNDguNSAwIDQ1LjggMjYuMSA0NS44IDI3djEyMi42YzAgOSA3LjMgMTYuMyAxNi40IDE2LjNoMjcuM2MxLjggMCAyLjctLjkgMi43LTIuOFYyMjMuM2MwLTIzLjQtOS4zLTQxLjgtMjgtNTUuM3ptNDc4LjQgMTEwLjFjLTYuOC0xNS43LTE4LjQtMjctMzQuOS0zNC4xbC01Ny42LTI1LjNjLTguNi0zLjYtOS4yLTExLjItMi42LTE2LjEgNy40LTUuNSA0NC4zLTEzLjkgODQgNi44IDEuNyAxIDQtLjMgNC0yLjR2LTQ0LjdjMC0xLjMtLjYtMi4xLTEuOS0yLjYtMTcuNy02LjYtMzYuMS05LjktNTUuMS05LjktMjYuNSAwLTQ1LjMgNS44LTU4LjUgMTUuNC0uNS40LTI4LjQgMjAtMjIuNyA1My43IDMuNCAxOS42IDE1LjggMzQuMiAzNy4yIDQzLjZsNTMuNiAyMy41YzExLjYgNS4xIDE1LjIgMTMuMyAxMi4yIDIxLjItMy43IDkuMS0xMy4yIDEzLjYtMzYuNSAxMy42LTI0LjMgMC00NC43LTguOS01OC40LTE5LjEtMi4xLTEuNC00LjQuMi00LjQgMi4zdjM0LjRjMCAxMC40IDQuOSAxNy4zIDE0LjYgMjAuNyAxNS42IDUuNSAzMS42IDguMiA0OC4yIDguMiAxMi43IDAgMjUuOC0xLjIgMzYuMy00LjMuNy0uMyAzNi04LjkgNDUuNi00NS44IDMuNS0xMy41IDIuNC0yNi41LTMuMS0zOS4xek0zNzYuMiAxNDkuOGMtMzEuNyAwLTEwNC4yIDIwLjEtMTA0LjIgMTAzLjV2MTgzLjVjMCAuOC42IDIuNyAyLjcgMi43aDQwLjljMS45IDAgMi44LS45IDIuOC0yLjdWMzQ4YzE2LjUgMTIuNyAzNS44IDE5LjEgNTcuNyAxOS4xIDYwLjUgMCAxMDguNy00OC41IDEwOC43LTEwOC43LjEtNjAuMy00OC4yLTEwOC42LTEwOC42LTEwOC42em0wIDE3MC45Yy0xNy4yIDAtMzEuOS02LjEtNDQtMTguMi0xMi4yLTEyLjItMTguMi0yNi44LTE4LjItNDQgMC0zNC41IDI3LjYtNjIuMiA2Mi4yLTYyLjIgMzQuNSAwIDYyLjIgMjcuNiA2Mi4yIDYyLjIuMSAzNC4zLTI3LjMgNjIuMi02Mi4yIDYyLjJ6TTIyOC4zIDcyLjVjLTE1LjkgMC0yOC44IDEyLjktMjguOSAyOC45IDAgMTUuNiAxMi43IDI4LjkgMjguOSAyOC45czI4LjktMTMuMSAyOC45LTI4LjljMC0xNi4yLTEzLTI4LjktMjguOS0yOC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXJlQUhlbHBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuMSAwSDcxLjlDNjcuOSAzNy4zIDM3LjQgNjcuOCAwIDcxLjd2MzcxLjVjMzcuNCA0LjkgNjYgMzIuNCA3MS45IDY4LjhoMzcyLjJjMy0zNi40IDMyLjUtNjUuOCA2Ny45LTY5LjhWNzEuN2MtMzYuNC01LjktNjUtMzUuMy02OC45LTcxLjd6bS0zNyA0MDQuOWMtMzYuMyAwLTE4LjgtMi01NS4xLTItMzUuOCAwLTIxIDItNTYuMSAyLTUuOSAwLTQuOS04LjIgMC05LjggMjIuOC03LjYgMjIuOS0xMC4yIDI0LjYtMTIuOCAxMC40LTE1LjYgNS45LTgzIDUuOS0xMTMgMC01LjMtNi40LTEyLjgtMTMuOC0xMi44SDIwMC40Yy03LjQgMC0xMy44IDcuNS0xMy44IDEyLjggMCAzMC00LjUgOTcuNCA1LjkgMTEzIDEuNyAyLjUgMS44IDUuMiAyNC42IDEyLjggNC45IDEuNiA2IDkuOCAwIDkuOC0zNS4xIDAtMjAuMy0yLTU2LjEtMi0zNi4zIDAtMTguOCAyLTU1LjEgMi03LjkgMC01LjgtMTAuOCAwLTEwLjggMTAuMi0zLjQgMTMuNS0zLjUgMjEuNy0xMy44IDcuNy0xMi45IDcuOS00NC40IDcuOS0xMjcuOFYxNTEuM2MwLTIyLjItMTIuMi0yOC4zLTI4LjYtMzIuNC04LjgtMi4yLTQtMTEuOCAxLTExLjggMzYuNSAwIDIwLjYgMiA1Ny4xIDIgMzIuNyAwIDE2LjUtMiA0OS4yLTIgMy4zIDAgOC41IDguMyAxIDEwLjgtNC45IDEuNi0yNy42IDMuNy0yNy42IDM5LjMgMCA0NS42LS4yIDU1LjggMSA2OC44IDAgMS4zIDIuMyAxMi44IDEyLjggMTIuOGgxMDkuMmMxMC41IDAgMTIuOC0xMS41IDEyLjgtMTIuOCAxLjItMTMgMS0yMy4yIDEtNjguOCAwLTM1LjYtMjIuNy0zNy43LTI3LjYtMzkuMy03LjUtMi41LTIuMy0xMC44IDEtMTAuOCAzMi43IDAgMTYuNSAyIDQ5LjIgMiAzNi41IDAgMjAuNi0yIDU3LjEtMiA0LjkgMCA5LjkgOS42IDEgMTEuOC0xNi40IDQuMS0yOC42IDEwLjMtMjguNiAzMi40djEwMS4yYzAgODMuNC4xIDExNC45IDcuOSAxMjcuOCA4LjIgMTAuMiAxMS40IDEwLjQgMjEuNyAxMy44IDUuOCAwIDcuOCAxMC44IDAgMTAuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjAuMzUzLDI1NC44NzgsMTMxLjUzOCwzMy4xYTIuMjA4LDIuMjA4LDAsMCwwLTMuODI5LjAwOUwuMywyNTQuODg3QTIuMjM0LDIuMjM0LDAsMCwwLC4zLDI1Ny4xMjJMMTI5LjExNiw0NzguOWEyLjIwOCwyLjIwOCwwLDAsMCwzLjgzLS4wMDlMMjYwLjM1OCwyNTcuMTEzQTIuMjM5LDIuMjM5LDAsMCwwLDI2MC4zNTMsMjU0Ljg3OFptMzkuMDc4LTI1LjcxM2EyLjE5LDIuMTksMCwwLDAsMS45LDEuMTExaDY2LjUwOWEyLjIyNiwyLjIyNiwwLDAsMCwxLjktMy4zNDFMMjU5LjExNSwzMy4xMTFhMi4xODcsMi4xODcsMCwwLDAtMS45LTEuMTExSDE5MC43MDdhMi4yMjYsMi4yMjYsMCwwLDAtMS45LDMuMzQxWk01MTEuNywyNTQuODg2LDM4NC45LDMzLjExMkEyLjIsMi4yLDAsMCwwLDM4Mi45OSwzMmgtNjYuNmEyLjIyNiwyLjIyNiwwLDAsMC0xLjkwNiwzLjM0TDQ0MC42NTIsMjU2LDMxNC40ODEsNDc2LjY2YTIuMjI2LDIuMjI2LDAsMCwwLDEuOTA2LDMuMzRoNjYuNmEyLjIsMi4yLDAsMCwwLDEuOTA2LTEuMTEyTDUxMS43LDI1Ny4xMTRBMi4yNDMsMi4yNDMsMCwwLDAsNTExLjcsMjU0Ljg4NlpNMzY2LjAxNiwyODQuOTE3SDI5OS41MDhhMi4xODcsMi4xODcsMCwwLDAtMS45LDEuMTExbC0xMDguOCwxOTAuNjMxYTIuMjI2LDIuMjI2LDAsMCwwLDEuOSwzLjM0MWg2Ni41MDlhMi4xODcsMi4xODcsMCwwLDAsMS45LTEuMTExbDEwOC44LTE5MC42MzFBMi4yMjYsMi4yMjYsMCwwLDAsMzY2LjAxNiwyODQuOTE3WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb29saSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQuNSAzNTJsMzguMy44Yy0xMy4yLTQuNi0yNi0xMC4yLTM4LjMtMTYuOHptNTcuNy01LjN2NS4zbC0xOS40LjhjMzYuNSAxMi41IDY5LjkgMTQuMiA5NC43IDcuMi0xOS45LjItNDUuOC0yLjYtNzUuMy0xMy4zem00MDguOS0xMTUuMmMxNS45IDAgMjguOS0xMi45IDI4LjktMjguOXMtMTIuOS0yNC41LTI4LjktMjQuNWMtMTUuOSAwLTI4LjkgOC42LTI4LjkgMjQuNXMxMi45IDI4LjkgMjguOSAyOC45em0tMjkgMTIwLjVINjQwVjI0MS41aC01Ny45em0tNzMuNyAwaDU3LjlWMTU2LjdMNTA4LjQgMTg0em0tMzEtMTE5LjRjLTE4LjItMTguMi01MC40LTE3LjEtNTAuNC0xNy4xcy0zMi4zLTEuMS01MC40IDE3LjFjLTE4LjIgMTguMi0xNi44IDMzLjktMTYuOCA1Mi42cy0xLjQgMzQuMyAxNi44IDUyLjUgNTAuNCAxNy4xIDUwLjQgMTcuMSAzMi4zIDEuMSA1MC40LTE3LjFjMTguMi0xOC4yIDE2LjgtMzMuOCAxNi44LTUyLjUtLjEtMTguOCAxLjMtMzQuNS0xNi44LTUyLjZ6bS0zOS44IDcxLjljMCAzLjYtMS44IDEyLjUtMTAuNyAxMi41cy0xMC43LTguOS0xMC43LTEyLjV2LTQwLjRjMC04LjcgNy4zLTEwLjkgMTAuNy0xMC45czEwLjcgMi4xIDEwLjcgMTAuOXptLTEwNi4yLTcxLjljLTE4LjItMTguMi01MC40LTE3LjEtNTAuNC0xNy4xcy0zMi4yLTEuMS01MC40IDE3LjFjLTEuOSAxLjktMy43IDMuOS01LjMgNi0zOC4yLTI5LjYtNzIuNS00Ni41LTEwMi4xLTYxLjF2LTIwLjdsLTIyLjUgMTAuNmMtNTQuNC0yMi4xLTg5LTE4LjItOTcuMy4xIDAgMC0yNC45IDMyLjggNjEuOCAxMTAuOFYzNTJoNTcuOXYtMjguNmMtNi41LTQuMi0xMy04LjctMTkuNC0xMy42LTE0LjgtMTEuMi0yNy40LTIxLjYtMzguNC0zMS40di0zMWMxMy4xIDE0LjcgMzAuNSAzMS40IDUzLjQgNTAuM2w0LjUgMy42di0yOS44YzAtNi45IDEuNy0xOC4yIDEwLjgtMTguMnMxMC42IDYuOSAxMC42IDE1VjMxN2MxOCAxMi4yIDM3LjMgMjIuMSA1Ny43IDI5LjZ2LTkzLjljMC0xOC43LTEzLjQtMzcuNC00MC42LTM3LjQtMTUuOC0uMS0zMC41IDguMi0zOC41IDIxLjl2LTU0LjNjNDEuOSAyMC45IDgzLjkgNDYuNSA5OS45IDU4LjMtMTAuMiAxNC42LTkuMyAyOC4xLTkuMyA0My43IDAgMTguNy0xLjQgMzQuMyAxNi44IDUyLjVzNTAuNCAxNy4xIDUwLjQgMTcuMSAzMi4zIDEuMSA1MC40LTE3LjFjMTguMi0xOC4yIDE2LjctMzMuOCAxNi43LTUyLjUgMC0xOC41IDEuNS0zNC4yLTE2LjctNTIuM3pNNjUuMiAxODR2NjMuM2MtNDguNy01NC41LTM4LjktNzYtMzUuMi03OS4xIDEzLjUtMTEuNCAzNy41LTggNjQuNCAyLjF6bTIyNi41IDEyMC41YzAgMy42LTEuOCAxMi41LTEwLjcgMTIuNXMtMTAuNy04LjktMTAuNy0xMi41di00MC40YzAtOC43IDcuMy0xMC45IDEwLjctMTAuOXMxMC43IDIuMSAxMC43IDEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvcm5iaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTc2LjM4IDM3MC4zYTM3LjggMzcuOCAwIDEgMS0zMi4wNy0zMi40MmMtNzguMjgtMTExLjM1IDUyLTE5MC41MyA1Mi0xOTAuNTMtNS44NiA0My04LjI0IDkxLjE2LTguMjQgOTEuMTYtNjcuMzEgNDEuNDkuOTMgNjQuMDYgMzkuODEgNzIuODdhMTQwLjM4IDE0MC4zOCAwIDAgMCAxMzEuNjYgOTEuOTRjMS45MiAwIDMuNzctLjIxIDUuNjctLjI4bC4xMSAxOC44NmMtOTkuMjIgMS4zOS0xNTguNy0yOS4xNC0xODguOTQtNTEuNnptMTA4LTMyNy43QTM3LjU3IDM3LjU3IDAgMCAwIDE4MSAyMS40NWEzNy45NSAzNy45NSAwIDEgMC0zMS4xNyA1NC4yMmMtMjIuNTUgMjkuOTEtNTMuODMgODkuNTctNTIuNDIgMTkwbDIxLjg0LS4xNWMwLS45LS4xNC0xLjc3LS4xNC0yLjY4QTE0MC40MiAxNDAuNDIgMCAwIDEgMjA3IDEzMi43MWM4LTM3LjcxIDMwLjctMTE0LjMgNzMuOC00NC4yOSAwIDAgNDguMTQgMi4zOCA5MS4xOCA4LjI0IDAgMC03Ny44NC0xMjgtMTg3LjU5LTU0LjA2em0zMDQuMTkgMTM0LjE3YTM3Ljk0IDM3Ljk0IDAgMSAwLTUzLjg0LTI4LjdDNDAzIDEyNi4xMyAzNDQuODkgOTkgMjUxLjI4IDEwMC4zM2wuMTQgMjIuNWMyLjctLjE1IDUuMzktLjQxIDguMTQtLjQxYTE0MC4zNyAxNDAuMzcgMCAwIDEgMTMwLjQ5IDg4Ljc2YzM5LjEgOSAxMDUuMDYgMzEuNTggMzguNDYgNzIuNTQgMCAwLTIuMzQgNDguMTMtOC4yMSA5MS4xNiAwIDAgMTMzLjQ1LTgxLjE2IDQ5LTE5NC42MWEzNy40NSAzNy40NSAwIDAgMCAxOS4zMS0zLjV6TTM3NC4wNiA0MzYuMjRjMjEuNDMtMzIuNDYgNDYuNDItODkuNjkgNDUuMTQtMTc5LjY2bC0xOS41Mi4xNGMuMDggMi4wNi4zIDQuMDcuMyA2LjE1YTE0MC4zNCAxNDAuMzQgMCAwIDEtOTEuMzkgMTMxLjQ1Yy04Ljg1IDM4Ljk1LTMxLjQ0IDEwNi42Ni03Mi43NyAzOS40OSAwIDAtNDguMTItMi4zNC05MS4xOS04LjIyIDAgMCA3OS45MiAxMzEuMzQgMTkxLjkgNTFhMzcuNSAzNy41IDAgMCAwIDMuNjQgMTQgMzcuOTMgMzcuOTMgMCAxIDAgMzMuODktNTQuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdGphciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjEuNSAwYzAgMTMxLjYtODAuNyAxNzYuOC0xNDAuMiAyMDkuNGMtLjYgLjMtMS4xIC42LTEuNiAuOWMtNTMuOCAzMC4yLTg4LjcgNDkuOC04OS42IDEyMkgzMkMzMiAyMDAuOCAxMTIuNyAxNTUuNiAxNzIuMiAxMjNDMjI3IDkzLjIgMjYyLjUgNzMgMjYyLjUgMGg5OC45ek0zMDEgMzAyLjZjNTQuOC0yOS44IDkwLjMtNTAgOTAuMy0xMjNoOThjMCAxMzEuNi04MC43IDE3Ni43LTE0MC4yIDIwOS40Yy01NC44IDI5LjgtOTAuMyA1MC05MC4zIDEyM2gtOThjMC0xMzEuNiA4MC43LTE3Ni44IDE0MC4yLTIwOS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3V6eiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzUuOSAzMzAuN0gxNzEuM1Y0ODBIMTdWMzJoMTA5LjV2MTA0LjVsMzA1LjEgODUuNlY0ODBIMjc1Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUh0bWw1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJsMzQuOSAzOTUuOEwxOTEuNSA0ODBsMTU3LjYtNTIuMkwzODQgMzJIMHptMzA4LjIgMTI3LjlIMTI0LjRsNC4xIDQ5LjRoMTc1LjZsLTEzLjYgMTQ4LjQtOTcuOSAyN3YuM2gtMS4xbC05OC43LTI3LjMtNi03NS44aDQ3LjdMMTM4IDMyMGw1My41IDE0LjUgNTMuNy0xNC41IDYtNjIuMkg4NC4zTDcxLjUgMTEyLjJoMjQxLjFsLTQuNCA0Ny43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIdWJzcG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2Ny40IDIxMS42Yy0yNS4xIDIzLjctNDAuOCA1Ny4zLTQwLjggOTQuNiAwIDI5LjMgOS43IDU2LjMgMjYgNzhMMjAzLjEgNDM0Yy00LjQtMS42LTkuMS0yLjUtMTQtMi41LTEwLjggMC0yMC45IDQuMi0yOC41IDExLjgtNy42IDcuNi0xMS44IDE3LjgtMTEuOCAyOC42czQuMiAyMC45IDExLjggMjguNWM3LjYgNy42IDE3LjggMTEuNiAyOC41IDExLjYgMTAuOCAwIDIwLjktMy45IDI4LjYtMTEuNiA3LjYtNy42IDExLjgtMTcuOCAxMS44LTI4LjUgMC00LjItLjYtOC4yLTEuOS0xMi4xbDUwLTUwLjJjMjIgMTYuOSA0OS40IDI2LjkgNzkuMyAyNi45IDcxLjkgMCAxMzAtNTguMyAxMzAtMTMwLjIgMC02NS4yLTQ3LjctMTE5LjItMTEwLjItMTI4LjdWMTE2YzE3LjUtNy40IDI4LjItMjMuOCAyOC4yLTQyLjkgMC0yNi4xLTIwLjktNDcuOS00Ny00Ny45UzMxMS4yIDQ3IDMxMS4yIDczLjFjMCAxOS4xIDEwLjcgMzUuNSAyOC4yIDQyLjl2NjEuMmMtMTUuMiAyLjEtMjkuNiA2LjctNDIuNyAxMy42LTI3LjYtMjAuOS0xMTcuNS04NS43LTE2OC45LTEyNC44IDEuMi00LjQgMi05IDItMTMuOEMxMjkuOCAyMy40IDEwNi4zIDAgNzcuNCAwIDQ4LjYgMCAyNS4yIDIzLjQgMjUuMiA1Mi4yYzAgMjguOSAyMy40IDUyLjMgNTIuMiA1Mi4zIDkuOCAwIDE4LjktMi45IDI2LjgtNy42bDE2My4yIDExNC43em04OS41IDE2My42Yy0zOC4xIDAtNjktMzAuOS02OS02OXMzMC45LTY5IDY5LTY5IDY5IDMwLjkgNjkgNjktMzAuOSA2OS02OSA2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRlYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI1LjYxLDE2NS40OGE0OS4wNyw0OS4wNywwLDEsMCw0OS4wNiw0OS4wNkE0OS4wOCw0OS4wOCwwLDAsMCwxMjUuNjEsMTY1LjQ4Wk04Ni4xNSw0MjUuODRoNzguOTRWMjg1LjMySDg2LjE1Wm0xNTEuNDYtMjExLjZjMC0yMC0xMC0yMi41My0xOC43NC0yMi41M0gyMDQuODJWMjM3LjVoMTQuMDVDMjI4LjYyLDIzNy41LDIzNy42MSwyMzQuNjksMjM3LjYxLDIxNC4yNFptMjAxLjY5LDQ2VjE2OC45M2gyMi43NVYyMzcuNWgzMy42OUM0ODYuNSwxMTMuMDgsMzg4LjYxLDg2LjE5LDI5OS42Nyw4Ni4xOUgyMDQuODRWMTY5aDE0YzI1LjYsMCw0MS41LDE3LjM1LDQxLjUsNDUuMjYsMCwyOC44MS0xNS41Miw0Ni00MS41LDQ2aC0xNFY0MjUuODhoOTQuODNjMTQ0LjYxLDAsMTk0Ljk0LTY3LjE2LDE5Ni43Mi0xNjUuNjRabS0xMDkuNzUsMEgyNzMuM1YxNjloNTQuNDN2MjIuNzNIMjk2djEwLjU4aDMwVjIyNUgyOTZWMjM3LjVoMzMuNTFabTc0LjY2LDAtNS4xNi0xNy42N0gzNjkuMzFsLTUuMTgsMTcuNjdIMzQwLjQ3TDM2OCwxNjguOTJoMzIuMzVsMjcuNTMsOTEuMzRaTTI5OS42NSwzMkgzMlY0ODBIMjk5LjY1YzE2MS44NSwwLDI1MS03OS43MywyNTEtMjI0LjUyQzU1MC42MiwxNzIsNTE4LDMyLDI5OS42NSwzMlptMCw0MjYuOTJINTMuMDdWNTMuMDdIMjk5LjY1YzE0Mi4xLDAsMjI5LjksNjQuNjEsMjI5LjksMjAyLjQxQzUyOS41NSwzODkuNTcsNDQ4LjU1LDQ1OC45MiwyOTkuNjUsNDU4LjkyWm04My44Ni0yNjQuODVMMzc2LDIxOS44OEgzOTIuNGwtNy41Mi0yNS44MVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW1kYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OS41IDMyMy42SDUzLjkzVjE4Ni4ySDg5LjVWMzIzLjZ6TTE1Ni4xIDI1MC41TDE2NS4yIDE4Ni4ySDIxMS41VjMyMy42SDE4MC41VjIzMC45TDE2Ny4xIDMyMy42SDE0NS44TDEzMi44IDIzMi45TDEzMi43IDMyMy42SDEwMS41VjE4Ni4ySDE0Ny42QzE0OC4xIDE5NC41IDE1MC40IDIwNC4zIDE1MS45IDIxNS42TDE1Ni4xIDI1MC41ek0yMjMuNyAzMjMuNlYxODYuMkgyNTAuM0MyNjcuMyAxODYuMiAyNzcuMyAxODcuMSAyODMuMyAxODguNkMyODkuNCAxOTAuMyAyOTQgMTkyLjggMjk3LjIgMTk2LjVDMzAwLjMgMTk5LjggMzAyLjMgMjAzLjEgMzAzIDIwOC41QzMwMy45IDIxMi45IDMwNC40IDIyMS42IDMwNC40IDIzNC43VjI4Mi45QzMwNC40IDI5NS4yIDMwMy43IDMwMy40IDMwMi41IDMwNy42QzMwMS40IDMxMS43IDI5OS40IDMxNSAyOTYuNSAzMTcuM0MyOTMuNyAzMTkuNyAyOTAuMSAzMjEuNCAyODUuOCAzMjIuM0MyODEuNiAzMjMuMSAyNzUuMiAzMjMuNiAyNjYuNyAzMjMuNkgyMjMuN3pNMjU5LjIgMjA5LjdWMjk5LjFDMjY0LjMgMjk5LjEgMjY3LjUgMjk4LjEgMjY4LjYgMjk2LjhDMjY5LjcgMjk0LjggMjcwLjQgMjg5LjIgMjcwLjQgMjgwLjFWMjI2LjhDMjcwLjQgMjIwLjYgMjcwLjMgMjE2LjYgMjY5LjcgMjE0LjhDMjY5LjQgMjEzIDI2OC41IDIxMS44IDI2Ny4xIDIxMC4xQzI2NS43IDIxMC4xIDI2MyAyMDkuNyAyNTkuMiAyMDkuN1YyMDkuN3pNMzE2LjUgMzIzLjZWMTg2LjJIMzUwLjZWMjMwLjFDMzUzLjUgMjI3LjcgMzU2LjcgMjI1LjIgMzYwLjEgMjIzLjVDMzYzLjcgMjIyIDM2OC45IDIyMS4xIDM3Mi45IDIyMS4xQzM3Ny43IDIyMS4xIDM4MS44IDIyMS45IDM4NS4yIDIyMy4zQzM4OC42IDIyNC44IDM5MS4yIDIyNi44IDM5My4yIDIyOS41QzM5NC45IDIzMi4xIDM5NS45IDIzNC44IDM5Ni4zIDIzNy4zQzM5Ni43IDIzOS45IDM5Ni4xIDI0NS4zIDM5Ni4xIDI1My41VjI5Mi4xQzM5Ni4xIDMwMC4zIDM5Ni4zIDMwNi40IDM5NS4zIDMxMC41QzM5NC4yIDMxNC41IDM5MS41IDMxOC4xIDM4Ny41IDMyMC4xQzM4My40IDMyNCAzNzguNiAzMjUuNCAzNzIuOSAzMjUuNEMzNjguOSAzMjUuNCAzNjMuNyAzMjQuNSAzNjAuMiAzMjIuOUMzNTYuNyAzMjEuMSAzNTMuNSAzMTguNCAzNTAuNiAzMTQuOUwzNDguNSAzMjMuNkwzMTYuNSAzMjMuNnpNMzYxLjYgMzAyLjlDMzYyLjMgMzAxLjEgMzYyLjYgMjk2LjkgMzYyLjYgMjkwLjRWMjU1QzM2Mi42IDI0OS40IDM2Mi4zIDI0NS41IDM2MS41IDI0My44QzM2MC44IDI0MS45IDM1Ny44IDI0MS4xIDM1NS43IDI0MS4xQzM1My43IDI0MS4xIDM1Mi4zIDI0MS45IDM1MS42IDI0My40QzM1MSAyNDQuOSAzNTAuNiAyNDguOCAzNTAuNiAyNTVWMjkxLjRDMzUwLjYgMjk3LjUgMzUxIDMwMS40IDM1MS44IDMwM0MzNTIuNCAzMDQuNyAzNTMuOSAzMDUuNSAzNTUuOSAzMDUuNUMzNTguMSAzMDUuNSAzNjAuMSAzMDQuNyAzNjEuNiAzMDIuOUwzNjEuNiAzMDIuOXpNNDE4LjQgMzIuMDRDNDM0LjEgMzMuMjcgNDQ3LjEgNDcuMjggNDQ3LjEgNjMuOTJWNDQ4LjFDNDQ3LjEgNDY0LjUgNDM1LjIgNDc4LjUgNDE4LjkgNDc5LjFDNDE4LjYgNDc5LjEgNDE4LjQgNDgwIDQxOC4xIDQ4MEgyOS44OEMyOS42IDQ4MCAyOS4zMiA0NzkuMSAyOS4wNCA0NzkuOUMxMy4zMSA0NzguNSAxLjA5MyA0NjYuMSAwIDQ0OS43TC4wMTg2IDYxLjc4QzEuMDgxIDQ1Ljg4IDEzLjgyIDMzLjA5IDMwLjI2IDMxLjFINDE3LjdDNDE3LjkgMzEuMSA0MTguMiAzMi4wMSA0MTguNCAzMi4wNEw0MTguNCAzMi4wNHpNMzAuMjcgNDEuMjZDMTkgNDIuMDEgMTAuMDIgNTEuMDEgOS4yNTcgNjIuNFY0NDkuN0M5LjYzIDQ1NS4xIDExLjkxIDQ2MC4yIDE1LjcgNDY0QzE5LjQ4IDQ2Ny45IDI0LjUxIDQ3MC4zIDI5Ljg5IDQ3MC43SDQxOC4xQzQyOS42IDQ2OS43IDQzOC43IDQ1OS4xIDQzOC43IDQ0OC4xVjYzLjkxQzQzOC43IDU4LjE3IDQzNi42IDUyLjY1IDQzMi43IDQ4LjQ1QzQyOC44IDQ0LjI0IDQyMy40IDQxLjY3IDQxNy43IDQxLjI2TDMwLjI3IDQxLjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnN0YWdyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjEgMTQxYy02My42IDAtMTE0LjkgNTEuMy0xMTQuOSAxMTQuOXM1MS4zIDExNC45IDExNC45IDExNC45UzMzOSAzMTkuNSAzMzkgMjU1LjkgMjg3LjcgMTQxIDIyNC4xIDE0MXptMCAxODkuNmMtNDEuMSAwLTc0LjctMzMuNS03NC43LTc0LjdzMzMuNS03NC43IDc0LjctNzQuNyA3NC43IDMzLjUgNzQuNyA3NC43LTMzLjYgNzQuNy03NC43IDc0Ljd6bTE0Ni40LTE5NC4zYzAgMTQuOS0xMiAyNi44LTI2LjggMjYuOC0xNC45IDAtMjYuOC0xMi0yNi44LTI2LjhzMTItMjYuOCAyNi44LTI2LjggMjYuOCAxMiAyNi44IDI2Ljh6bTc2LjEgMjcuMmMtMS43LTM1LjktOS45LTY3LjctMzYuMi05My45LTI2LjItMjYuMi01OC0zNC40LTkzLjktMzYuMi0zNy0yLjEtMTQ3LjktMi4xLTE4NC45IDAtMzUuOCAxLjctNjcuNiA5LjktOTMuOSAzNi4xcy0zNC40IDU4LTM2LjIgOTMuOWMtMi4xIDM3LTIuMSAxNDcuOSAwIDE4NC45IDEuNyAzNS45IDkuOSA2Ny43IDM2LjIgOTMuOXM1OCAzNC40IDkzLjkgMzYuMmMzNyAyLjEgMTQ3LjkgMi4xIDE4NC45IDAgMzUuOS0xLjcgNjcuNy05LjkgOTMuOS0zNi4yIDI2LjItMjYuMiAzNC40LTU4IDM2LjItOTMuOSAyLjEtMzcgMi4xLTE0Ny44IDAtMTg0Ljh6TTM5OC44IDM4OGMtNy44IDE5LjYtMjIuOSAzNC43LTQyLjYgNDIuNi0yOS41IDExLjctOTkuNSA5LTEzMi4xIDlzLTEwMi43IDIuNi0xMzIuMS05Yy0xOS42LTcuOC0zNC43LTIyLjktNDIuNi00Mi42LTExLjctMjkuNS05LTk5LjUtOS0xMzIuMXMtMi42LTEwMi43IDktMTMyLjFjNy44LTE5LjYgMjIuOS0zNC43IDQyLjYtNDIuNiAyOS41LTExLjcgOTkuNS05IDEzMi4xLTlzMTAyLjctMi42IDEzMi4xIDljMTkuNiA3LjggMzQuNyAyMi45IDQyLjYgNDIuNiAxMS43IDI5LjUgOSA5OS41IDkgMTMyLjFzMi43IDEwMi43LTkgMTMyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluc3RhbG9kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1My4zODQsNDgwSDM4Ny4xMTNMNTAyLjU1NCwyNzUuNzY1LDIwNC4yMjksMzMzLjIxMVpNNTA0LjcyNiwyNDAuMDc4LDM4Ny4xMTMsMzJIMTU1LjY2OUwzNjAuMjMsMjY3LjlaTTEyNC4zODYsNDguODA5LDcuMjc0LDI1NiwxMjMuMjM2LDQ2MS4xNTQsMjI1LjYyNywxNjUuNTYxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnRlcmNvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTIgMzJINTZDMjUuMSAzMiAwIDU3LjEgMCA4OHYzMzZjMCAzMC45IDI1LjEgNTYgNTYgNTZoMzM2YzMwLjkgMCA1Ni0yNS4xIDU2LTU2Vjg4YzAtMzAuOS0yNS4xLTU2LTU2LTU2em0tMTA4LjMgODIuMWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxOTkuNWMwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxMTQuMXptLTc0LjYtNy41YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjIxNi41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjEwNi42em0tNzQuNyA3LjVjMC0xOS44IDI5LjktMTkuOCAyOS45IDB2MTk5LjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTE0LjF6TTU5LjcgMTQ0YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjEzNC4zYzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjE0NHptMzIzLjQgMjI3LjhjLTcyLjggNjMtMjQxLjcgNjUuNC0zMTguMSAwLTE1LTEyLjggNC40LTM1LjUgMTkuNC0yMi43IDY1LjkgNTUuMyAyMTYuMSA1My45IDI3OS4zIDAgMTQuOS0xMi45IDM0LjMgOS44IDE5LjQgMjIuN3ptNS4yLTkzLjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTQ0YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjEzNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnRlcm5ldEV4cGxvcmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4My4wNDkgMTU5LjcwNmMxMC44NTUtMjQuNTc1IDIxLjQyNC02MC40MzggMjEuNDI0LTg3Ljg3MSAwLTcyLjcyMi03OS42NDEtOTguMzcxLTIwOS42NzMtMzguNTc3LTEwNy42MzItNy4xODEtMjExLjIyMSA3My42Ny0yMzcuMDk4IDE4Ni40NTcgMzAuODUyLTM0Ljg2MiA3OC4yNzEtODIuMjk4IDEyMS45NzctMTAxLjE1OEMxMjUuNDA0IDE2Ni44NSA3OS4xMjggMjI4LjAwMiA0My45OTIgMjkxLjcyNSAyMy4yNDYgMzI5LjY1MSAwIDM5MC45NCAwIDQzNi43NDdjMCA5OC41NzUgOTIuODU0IDg2LjUgMTgwLjI1MSA0Mi4wMDYgMzEuNDIzIDE1LjQzIDY2LjU1OSAxNS41NzMgMTAxLjY5NSAxNS41NzMgOTcuMTI0IDAgMTg0LjI0OS01NC4yOTQgMjE2LjgxNC0xNDYuMDIySDM3Ny45MjdjLTUyLjUwOSA4OC41OTMtMTk2LjgxOSA1Mi45OTYtMTk2LjgxOS00Ny40MzZINTA5LjljNi40MDctNDMuNTgxLTEuNjU1LTk1LjcxNS0yNi44NTEtMTQxLjE2MnpNNjQuNTU5IDM0Ni44NzdjMTcuNzExIDUxLjE1IDUzLjcwMyA5NS44NzEgMTAwLjI2NiAxMjMuMzA0LTg4Ljc0MSA0OC45NC0xNzMuMjY3IDI5LjA5Ni0xMDAuMjY2LTEyMy4zMDR6bTExNS45NzctMTA4Ljg3M2MyLTU1LjE1MSA1MC4yNzYtOTQuODcxIDEwMy45OC05NC44NzEgNTMuNDE4IDAgMTAxLjk4MSAzOS43MiAxMDMuOTgxIDk0Ljg3MUgxODAuNTM2em0xODQuNTM2LTE4Ny42YzIxLjQyNS0xMC4yODcgNDguNTYzLTIyLjAwMyA3Mi41NTgtMjIuMDAzIDMxLjQyMiAwIDU0LjI3NCAyMS43MTcgNTQuMjc0IDUzLjcyMiAwIDIwLjAwMy03LjQyNyA0OS4wMDctMTQuNTY5IDY3Ljg2Ny0yNi4yOC00Mi4yOTItNjUuOTg2LTgxLjU4NC0xMTIuMjYzLTk5LjU4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW52aXNpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3LjQgMzJINDAuNkMxOC4yIDMyIDAgNTAuMiAwIDcyLjZ2MzY2LjhDMCA0NjEuOCAxOC4yIDQ4MCA0MC42IDQ4MGgzNjYuOGMyMi40IDAgNDAuNi0xOC4yIDQwLjYtNDAuNlY3Mi42YzAtMjIuNC0xOC4yLTQwLjYtNDAuNi00MC42ek0xNzYuMSAxNDUuNmMuNCAyMy40LTIyLjQgMjcuMy0yNi42IDI3LjQtMTQuOSAwLTI3LjEtMTItMjcuMS0yNyAuMS0zNS4yIDUzLjEtMzUuNSA1My43LS40ek0zMzIuOCAzNzdjLTY1LjYgMC0zNC4xLTc0LTI1LTEwNi42IDE0LjEtNDYuNC00NS4yLTU5LTU5LjkuN2wtMjUuOCAxMDMuM0gxNzdsOC4xLTMyLjVjLTMxLjUgNTEuOC05NC42IDQ0LjQtOTQuNi00LjMuMS0xNC4zLjktMTQgMjMtMTA0LjFIODEuN2w5LjctMzUuNmg3Ni40Yy0zMy42IDEzMy43LTMyLjYgMTI2LjktMzIuOSAxMzguMiAwIDIwLjkgNDAuOSAxMy41IDU3LjQtMjMuMmwxOS44LTc5LjRoLTMyLjNsOS43LTM1LjZoNjguOGwtOC45IDQwLjVjNDAuNS03NS41IDEyNy45LTQ3LjggMTAxLjggMzgtMTQuMiA1MS4xLTE0LjYgNTAuNy0xNC45IDU4LjggMCAxNS41IDE3LjUgMjIuNiAzMS44LTE2LjlMMzg2IDMyNWMtMTAuNSAzNi43LTI5LjQgNTItNTMuMiA1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW94aG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTYgMTYwaC02Ny4zQzUxMS4yIDcwLjcgNDIyLjkgOCAzMjAgOCAxODMgOCA3MiAxMTkgNzIgMjU2YzAgMTYuNCAxLjYgMzIuNSA0LjcgNDhIMjRjLTEzLjMgMC0yNCAxMC44LTI0IDI0IDAgMTMuMyAxMC43IDI0IDI0IDI0aDY3LjNjMzcuNSA4OS4zIDEyNS44IDE1MiAyMjguNyAxNTIgMTM3IDAgMjQ4LTExMSAyNDgtMjQ4IDAtMTYuNC0xLjYtMzIuNS00LjctNDhINjE2YzEzLjMgMCAyNC0xMC44IDI0LTI0IDAtMTMuMy0xMC43LTI0LTI0LTI0em0tOTYgOTZjMCAxMTAuNS04OS41IDIwMC0yMDAgMjAwLTc1LjcgMC0xNDEuNi00Mi0xNzUuNS0xMDRINDI0YzEzLjMgMCAyNC0xMC44IDI0LTI0IDAtMTMuMy0xMC43LTI0LTI0LTI0SDEyNS44Yy0zLjgtMTUuNC01LjgtMzEuNC01LjgtNDggMC0xMTAuNSA4OS41LTIwMCAyMDAtMjAwIDc1LjcgMCAxNDEuNiA0MiAxNzUuNSAxMDRIMjE2Yy0xMy4zIDAtMjQgMTAuOC0yNCAyNCAwIDEzLjMgMTAuNyAyNCAyNCAyNGgyOTguMmMzLjggMTUuNCA1LjggMzEuNCA1LjggNDh6bS0zMDQtMjRoMjA4YzEzLjMgMCAyNCAxMC43IDI0IDI0IDAgMTMuMi0xMC43IDI0LTI0IDI0SDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjQgMC0xMy4yIDEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUl0Y2hJbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MS45MiAzNC43N0M1MC4yIDQ3LjY3IDcuNCA5Ni44NCA3IDEwOS43M3YyMS4zNGMwIDI3LjA2IDI1LjI5IDUwLjg0IDQ4LjI1IDUwLjg0IDI3LjU3IDAgNTAuNTQtMjIuODUgNTAuNTQtNTAgMCAyNy4xMiAyMi4xOCA1MCA0OS43NiA1MHM0OS0yMi44NSA0OS01MGMwIDI3LjEyIDIzLjU5IDUwIDUxLjE2IDUwaC41YzI3LjU3IDAgNTEuMTYtMjIuODUgNTEuMTYtNTAgMCAyNy4xMiAyMS40NyA1MCA0OSA1MHM0OS43Ni0yMi44NSA0OS43Ni01MGMwIDI3LjEyIDIzIDUwIDUwLjU0IDUwIDIzIDAgNDguMjUtMjMuNzggNDguMjUtNTAuODR2LTIxLjM0Yy0uNC0xMi45LTQzLjItNjIuMDctNjQuOTItNzVDMzcyLjU2IDMyLjQgMzI1Ljc2IDMyIDI1NiAzMlM5MS4xNCAzMy4xIDcxLjkyIDM0Ljc3em0xMzIuMzIgMTM0LjM5Yy0yMiAzOC40LTc3LjkgMzguNzEtOTkuODUuMjUtMTMuMTcgMjMuMTQtNDMuMTcgMzIuMDctNTYgMjcuNjYtMy44NyA0MC4xNS0xMy42NyAyMzcuMTMgMTcuNzMgMjY5LjE1IDgwIDE4LjY3IDMwMi4wOCAxOC4xMiAzNzkuNzYgMCAzMS42NS0zMi4yNyAyMS4zMi0yMzIgMTcuNzUtMjY5LjE1LTEyLjkyIDQuNDQtNDIuODgtNC42LTU2LTI3LjY2LTIyIDM4LjUyLTc3Ljg1IDM4LjEtOTkuODUtLjI0LTcuMSAxMi40OS0yMy4wNSAyOC45NC01MS43NiAyOC45NGE1Ny41NCA1Ny41NCAwIDAgMS01MS43NS0yOC45NHptLTQxLjU4IDUzLjc3YzE2LjQ3IDAgMzEuMDkgMCA0OS4yMiAxOS43OGE0MzYuOTEgNDM2LjkxIDAgMCAxIDg4LjE4IDBDMzE4LjIyIDIyMyAzMzIuODUgMjIzIDM0OS4zMSAyMjNjNTIuMzMgMCA2NS4yMiA3Ny41MyA4My44NyAxNDQuNDUgMTcuMjYgNjIuMTUtNS41MiA2My42Ny0zMy45NSA2My43My00Mi4xNS0xLjU3LTY1LjQ5LTMyLjE4LTY1LjQ5LTYyLjc5LTM5LjI1IDYuNDMtMTAxLjkzIDguNzktMTU1LjU1IDAgMCAzMC42MS0yMy4zNCA2MS4yMi02NS40OSA2Mi43OS0yOC40Mi0uMDYtNTEuMi0xLjU4LTMzLjk0LTYzLjczIDE4LjY3LTY3IDMxLjU2LTE0NC40NSA4My44OC0xNDQuNDV6TTI1NiAyNzAuNzlzLTQ0LjM4IDQwLjc3LTUyLjM1IDU1LjIxbDI5LTEuMTd2MjUuMzJjMCAxLjU1IDIxLjM0LjE2IDIzLjMzLjE2IDExLjY1LjU0IDIzLjMxIDEgMjMuMzEtLjE2di0yNS4yOGwyOSAxLjE3Yy04LTE0LjQ4LTUyLjM1LTU1LjI0LTUyLjM1LTU1LjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdHVuZXNOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4MS45IDM4OC4yYy02LjQgMjcuNC0yNy4yIDQyLjgtNTUuMSA0OC0yNC41IDQuNS00NC45IDUuNi02NC41LTEwLjItMjMuOS0yMC4xLTI0LjItNTMuNC0yLjctNzQuNCAxNy0xNi4yIDQwLjktMTkuNSA3Ni44LTI1LjggNi0xLjEgMTEuMi0yLjUgMTUuNi03LjQgNi40LTcuMiA0LjQtNC4xIDQuNC0xNjMuMiAwLTExLjItNS41LTE0LjMtMTctMTIuMy04LjIgMS40LTE4NS43IDM0LjYtMTg1LjcgMzQuNi0xMC4yIDIuMi0xMy40IDUuMi0xMy40IDE2LjcgMCAyMzQuNyAxLjEgMjIzLjktMi41IDIzOS41LTQuMiAxOC4yLTE1LjQgMzEuOS0zMC4yIDM5LjUtMTYuOCA5LjMtNDcuMiAxMy40LTYzLjQgMTAuNC00My4yLTguMS01OC40LTU4LTI5LjEtODYuNiAxNy0xNi4yIDQwLjktMTkuNSA3Ni44LTI1LjggNi0xLjEgMTEuMi0yLjUgMTUuNi03LjQgMTAuMS0xMS41IDEuOC0yNTYuNiA1LjItMjcwLjIuOC01LjIgMy05LjYgNy4xLTEyLjkgNC4yLTMuNSAxMS44LTUuNSAxMy40LTUuNSAyMDQtMzguMiAyMjguOS00My4xIDIzMi40LTQzLjEgMTEuNS0uOCAxOC4xIDYgMTguMSAxNy42LjIgMzQ0LjUgMS4xIDMyNi0xLjggMzM4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUl0dW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjMuNiA4MC4zQzEyOSA4MC4zIDUyLjUgMTU3IDUyLjUgMjUxLjVTMTI5IDQyMi44IDIyMy42IDQyMi44czE3MS4yLTc2LjcgMTcxLjItMTcxLjJjMC05NC42LTc2LjctMTcxLjMtMTcxLjItMTcxLjN6bTc5LjQgMjQwYy0zLjIgMTMuNi0xMy41IDIxLjItMjcuMyAyMy44LTEyLjEgMi4yLTIyLjIgMi44LTMxLjktNS0xMS44LTEwLTEyLTI2LjQtMS40LTM2LjggOC40LTggMjAuMy05LjYgMzgtMTIuOCAzLS41IDUuNi0xLjIgNy43LTMuNyAzLjItMy42IDIuMi0yIDIuMi04MC44IDAtNS42LTIuNy03LjEtOC40LTYuMS00IC43LTkxLjkgMTcuMS05MS45IDE3LjEtNSAxLjEtNi43IDIuNi02LjcgOC4zIDAgMTE2LjEuNSAxMTAuOC0xLjIgMTE4LjUtMi4xIDktNy42IDE1LjgtMTQuOSAxOS42LTguMyA0LjYtMjMuNCA2LjYtMzEuNCA1LjItMjEuNC00LTI4LjktMjguNy0xNC40LTQyLjkgOC40LTggMjAuMy05LjYgMzgtMTIuOCAzLS41IDUuNi0xLjIgNy43LTMuNyA1LTUuNy45LTEyNyAyLjYtMTMzLjcuNC0yLjYgMS41LTQuOCAzLjUtNi40IDIuMS0xLjcgNS44LTIuNyA2LjctMi43IDEwMS0xOSAxMTMuMy0yMS40IDExNS4xLTIxLjQgNS43LS40IDkgMyA5IDguNy0uMSAxNzAuNi40IDE2MS40LTEgMTY3LjZ6TTM0NS4yIDMySDEwMi44QzQ1LjkgMzIgMCA3Ny45IDAgMTM0Ljh2MjQyLjRDMCA0MzQuMSA0NS45IDQ4MCAxMDIuOCA0ODBoMjQyLjRjNTcgMCAxMDIuOC00NS45IDEwMi44LTEwMi44VjEzNC44QzQ0OCA3Ny45IDQwMi4xIDMyIDM0NS4yIDMyek0yMjMuNiA0NDRjLTEwNi4zIDAtMTkyLjUtODYuMi0xOTIuNS0xOTIuNVMxMTcuMyA1OSAyMjMuNiA1OXMxOTIuNSA4Ni4yIDE5Mi41IDE5Mi41UzMyOS45IDQ0NCAyMjMuNiA0NDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUphdmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc3Ljc0IDMxMi45YzkuOC02LjcgMjMuNC0xMi41IDIzLjQtMTIuNXMtMzguNyA3LTc3LjIgMTAuMmMtNDcuMSAzLjktOTcuNyA0LjctMTIzLjEgMS4zLTYwLjEtOCAzMy0zMC4xIDMzLTMwLjFzLTM2LjEtMi40LTgwLjYgMTljLTUyLjUgMjUuNCAxMzAgMzcgMjI0LjUgMTIuMXptLTg1LjQtMzIuMWMtMTktNDIuNy04My4xLTgwLjIgMC0xNDUuOEMyOTYgNTMuMiAyNDIuODQgMCAyNDIuODQgMGMyMS41IDg0LjUtNzUuNiAxMTAuMS0xMTAuNyAxNjIuNi0yMy45IDM1LjkgMTEuNyA3NC40IDYwLjIgMTE4LjJ6bTExNC42LTE3Ni4yYy4xIDAtMTc1LjIgNDMuOC05MS41IDE0MC4yIDI0LjcgMjguNC02LjUgNTQtNi41IDU0czYyLjctMzIuNCAzMy45LTcyLjljLTI2LjktMzcuOC00Ny41LTU2LjYgNjQuMS0xMjEuM3ptLTYuMSAyNzAuNWExMi4xOSAxMi4xOSAwIDAgMS0yIDIuNmMxMjguMy0zMy43IDgxLjEtMTE4LjkgMTkuOC05Ny4zYTE3LjMzIDE3LjMzIDAgMCAwLTguMiA2LjMgNzAuNDUgNzAuNDUgMCAwIDEgMTEtM2MzMS02LjUgNzUuNSA0MS41LTIwLjYgOTEuNHpNMzQ4IDQzNy40czE0LjUgMTEuOS0xNS45IDIxLjJjLTU3LjkgMTcuNS0yNDAuOCAyMi44LTI5MS42LjctMTguMy03LjkgMTYtMTkgMjYuOC0yMS4zIDExLjItMi40IDE3LjctMiAxNy43LTItMjAuMy0xNC4zLTEzMS4zIDI4LjEtNTYuNCA0MC4yQzIzMi44NCA1MDkuNCA0MDEgNDYxLjMgMzQ4IDQzNy40ek0xMjQuNDQgMzk2Yy03OC43IDIyIDQ3LjkgNjcuNCAxNDguMSAyNC41YTE4NS44OSAxODUuODkgMCAwIDEtMjguMi0xMy44Yy00NC43IDguNS02NS40IDkuMS0xMDYgNC41LTMzLjUtMy44LTEzLjktMTUuMi0xMy45LTE1LjJ6bTE3OS44IDk3LjJjLTc4LjcgMTQuOC0xNzUuOCAxMy4xLTIzMy4zIDMuNiAwLS4xIDExLjggOS43IDcyLjQgMTMuNiA5Mi4yIDUuOSAyMzMuOC0zLjMgMjM3LjEtNDYuOSAwIDAtNi40IDE2LjUtNzYuMiAyOS43ek0yNjAuNjQgMzUzYy01OS4yIDExLjQtOTMuNSAxMS4xLTEzNi44IDYuNi0zMy41LTMuNS0xMS42LTE5LjctMTEuNi0xOS43LTg2LjggMjguOCA0OC4yIDYxLjQgMTY5LjUgMjUuOWE2MC4zNyA2MC4zNyAwIDAgMS0yMS4xLTEyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplZGlPcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTguNSAzNzMuNmM5NS45LTEyMi4xIDE3LjItMjMzLjEgMTcuMi0yMzMuMSA0NS40IDg1LjgtNDEuNCAxNzAuNS00MS40IDE3MC41IDEwNS0xNzEuNS02MC41LTI3MS41LTYwLjUtMjcxLjUgOTYuOSA3Mi43LTEwLjEgMTkwLjctMTAuMSAxOTAuNyA4NS44IDE1OC40LTY4LjYgMjMwLjEtNjguNiAyMzAuMXMtLjQtMTYuOS0yLjItODUuN2M0LjMgNC41IDM0LjUgMzYuMiAzNC41IDM2LjJsLTI0LjItNDcuNCA2Mi42LTkuMS02Mi42LTkuMSAyMC4yLTU1LjUtMzEuNCA0NS45Yy0yLjItODcuNy03LjgtMzA1LjEtNy45LTMwNi45di0yLjQgMS0xIDIuNGMwIDEtNS42IDIxOS03LjkgMzA2LjlsLTMxLjQtNDUuOSAyMC4yIDU1LjUtNjIuNiA5LjEgNjIuNiA5LjEtMjQuMiA0Ny40IDM0LjUtMzYuMmMtMS44IDY4LjgtMi4yIDg1LjctMi4yIDg1LjdzLTE1NC40LTcxLjctNjguNi0yMzAuMWMwIDAtMTA3LTExOC4xLTEwLjEtMTkwLjcgMCAwLTE2NS41IDk5LjktNjAuNSAyNzEuNSAwIDAtODYuOC04NC44LTQxLjQtMTcwLjUgMCAwLTc4LjcgMTExIDE3LjIgMjMzLjEgMCAwLTI2LjItMTYuMS00OS40LTc3LjcgMCAwIDE2LjkgMTgzLjMgMjIyIDE4NS43aDQuMWMyMDUtMi40IDIyMi0xODUuNyAyMjItMTg1LjctMjMuNiA2MS41LTQ5LjkgNzcuNy00OS45IDc3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplbmtpbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg3LjEgNDI1Yy0xLjQtMTEuMi0xOS0yMy4xLTI4LjItMzEuOS01LjEtNS0yOS0yMy4xLTMwLjQtMjkuOS0xLjQtNi42IDkuNy0yMS41IDEzLjMtMjguOSA1LjEtMTAuNyA4LjgtMjMuNyAxMS4zLTMyLjYgMTguOC02Ni4xIDIwLjctMTU2LjktNi4yLTIxMS4yLTEwLjItMjAuNi0zOC42LTQ5LTU2LjQtNjIuNS00Mi0zMS43LTExOS42LTM1LjMtMTcwLjEtMTYuNi0xNC4xIDUuMi0yNy44IDkuOC00MC4xIDE3LjEtMzMuMSAxOS40LTY4LjMgMzIuNS03OC4xIDcxLjYtMjQuMiAxMC44LTMxLjUgNDEuOC0zMC4zIDc3LjguMiA3IDQuMSAxNS44IDIuNyAyMi40LS43IDMuMy01LjIgNy42LTYuMSA5LjgtMTEuNiAyNy43LTIuMyA2NCAxMS4xIDgzLjcgOC4xIDExLjkgMjEuNSAyMi40IDM5LjIgMjUuMi43IDEwLjYgMy4zIDE5LjcgOC4yIDMwLjQgMy4xIDYuOCAxNC43IDE5IDEwLjQgMjcuNy0yLjIgNC40LTIxIDEzLjgtMjcuMyAxNy42Qzg5IDQwNy4yIDczLjcgNDE1IDU0LjIgNDI5Yy0xMi42IDktMzIuMyAxMC4yLTI5LjIgMzEuMSAyLjEgMTQuMSAxMC4xIDMxLjYgMTQuNyA0NS44LjcgMiAxLjQgNC4xIDIuMSA2aDQyMmM0LjktMTUuMyA5LjctMzAuOSAxNC42LTQ3LjIgMy40LTExLjQgMTAuMi0yNy44IDguNy0zOS43ek0yMDUuOSAzMy43YzEuOC0uNSAzLjQuNyA0LjkgMi40LS4yIDUuMi01LjQgNS4xLTguOSA2LjgtNS40IDYuNy0xMy40IDkuOC0yMCAxNy4yLTYuOCA3LjUtMTQuNCAyNy43LTIzLjQgMzAtNC41IDEuMS05LjctLjgtMTMuNi0uNS0xMC40LjctMTcuNyA2LTI4LjMgNy41IDEzLjYtMjkuOSA1Ni4xLTU0IDg5LjMtNjMuNHptLTEwNC44IDkzLjZjMTMuNS0xNC45IDMyLjEtMjQuMSA1NC44LTI1LjkgMTEuNyAyOS43LTguNCA2NS0uOSA5Ny42IDIuMyA5LjkgMTAuMiAyNS40LTIuNCAyNS43LjMtMjguMy0zNC44LTQ2LjMtNjEuMy0yOS42LTEuOC0yMS41LTQuOS01MS43IDkuOC02Ny44em0zNi43IDIwMC4yYy0xLTQuMS0yLjctMTIuOS0yLjMtMTUuMSAxLjYtOC43IDE3LjEtMTIuNSAxMS0yNC43LTExLjMtLjEtMTMuOCAxMC4yLTI0LjEgMTEuMy0yNi43IDIuNi00NS42LTM1LjQtNDQuNC01OC40IDEtMTkuNSAxNy42LTM4LjIgNDAuMS0zNS44IDE2IDEuOCAyMS40IDE5LjIgMjQuNSAzNC43IDkuMi41IDIyLjUtLjQgMjYuOS03LjYtLjYtMTcuNS04LjgtMzEuNi04LjItNDcuNyAxLTMwLjMgMTcuNS01Ny42IDQuOC04Ny40IDEzLjYtMzAuOSA1My41LTU1LjMgODMuMS03MCAzNi42LTE4LjMgOTQuOS0zLjcgMTI5LjMgMTUuOCAxOS43IDExLjEgMzQuNCAzMi43IDQ4LjMgNTAuNy0xOS41LTUuOC0zNi4xIDQuMi0zMy4xIDIwLjMgMTYuMy0xNC45IDQ0LjItLjIgNTIuNSAxNi40IDcuOSAxNS44IDcuOCAzOS4zIDkgNjIuOCAyLjkgNTctMTAuNCAxMTUuOS0zOS4xIDE1Ny4xLTcuNyAxMS0xNC4xIDIzLTI0LjkgMzAuNi0yNiAxOC4yLTY1LjQgMzQuNy05OS4yIDIzLjQtNDQuNy0xNS02NS00NC44LTg5LjUtNzguOC43IDE4LjcgMTMuOCAzNC4xIDI2LjggNDguNCAxMS4zIDEyLjUgMjUgMjYuNiAzOS43IDMyLjQtMTIuMy0yLjktMzEuMS0zLjgtMzYuMiA3LjItMjguNi0xLjktNTUuMS00LjgtNjguNy0yNC4yLTEwLjYtMTUuNC0yMS40LTQxLjQtMjYuMy02MS40em0yMjIgMTI0LjFjNC4xLTMgMTEuMS0yLjkgMTcuNC0zLjYtNS40LTIuNy0xMy0zLjctMTkuMy0yLjItLjEtNC4yLTItNi44LTMuMi0xMC4yIDEwLjYtMy44IDM1LjUtMjguNSA0OS42LTIwLjMgNi43IDMuOSA5LjUgMjYuMiAxMC4xIDM3IC40IDktLjggMTgtNC41IDIyLjgtMTguOC0uNi0zNS44LTIuOC01MC43LTcgLjktNi4xLTEtMTIuMS42LTE2LjV6bS0xNy4yLTIwYy0xNi44LjgtMjYtMS4yLTM4LjMtMTAuOC4yLS44IDEuNC0uNSAxLjUtMS40IDE4IDggNDAuOC0zLjMgNTktNC45LTcuOSA1LjEtMTQuNiAxMS42LTIyLjIgMTcuMXptLTEyLjEgMzMuMmMtMS42LTkuNC0zLjUtMTItMi44LTIwLjIgMjUtMTYuNiAyOS43IDI4LjYgMi44IDIwLjJ6TTIyNiA0MzguNmMtMTEuNi0uNy00OC4xLTE0LTM4LjUtMjMuNyA5LjQgNi41IDI3LjUgNC45IDQxLjMgNy4zLjggNC40LTIuOCAxMC4yLTIuOCAxNi40ek01Ny43IDQ5Ny4xYy00LjMtMTIuNy05LjItMjUuMS0xNC44LTM2LjkgMzAuOC0yMy44IDY1LjMtNDguOSAxMDIuMi02My41IDIuOC0xLjEgMjMuMiAyNS40IDI2LjIgMjcuNiAxNi41IDExLjcgMzcgMjEgNTYuMiAzMC4yIDEuMiA4LjggMy45IDIwLjIgOC43IDM1LjUuNyAyLjMgMS40IDQuNyAyLjIgNy4ySDU3Ljd6bTI0MC42IDUuN2gtLjhjLjMtLjIuNS0uNC44LS41di41em03LjUtNS43YzIuMS0xLjQgNC4zLTIuOCA2LjQtNC4zIDEuMSAxLjQgMi4yIDIuOCAzLjIgNC4zaC05LjZ6bTE1LjEtMjQuN2MtMTAuOCA3LjMtMjAuNiAxOC4zLTMzLjMgMjUuMi02IDMuMy0yNyAxMS43LTMzLjQgMTAuMi0zLjYtLjgtMy45LTUuMy01LjQtOS41LTMuMS05LTEwLjEtMjMuNC0xMC44LTM3LS44LTE3LjItMi41LTQ2IDE2LTQyLjQgMTQuOSAyLjkgMzIuMyA5LjcgNDMuOSAxNi4xIDcuMSAzLjkgMTEuMSA4LjYgMjEuOSA5LjUtLjEgMS40LS4xIDIuOC0uMiA0LjMtNS45IDMuOS0xNS4zIDMuOC0yMS44IDcuMSA5LjUuNCAxNyAyLjcgMjMuNSA1LjktLjEgMy40LS4zIDctLjQgMTAuNnptNTMuNCAyNC43aC0xNGMtLjEtMy4yLTIuOC01LjgtNi4xLTUuOHMtNS45IDIuNi02LjEgNS44aC0xNy40Yy0yLjgtNC40LTUuNy04LjYtOC45LTEyLjUgMi4xLTIuMiA0LTQuNyA2LTYuOSA5IDMuNyAxNC44LTQuOSAyMS43LTQuMiA3LjkuOCAxNC4yIDExLjcgMjUuNCAxMWwtLjYgMTIuNnptOC43IDBjLjItNCAuNC03LjguNi0xMS41IDE1LjYtNy4zIDI5IDEuMyAzNS43IDExLjVIMzgzem04My40LTM3Yy0yLjMgMTEuMi01LjggMjQtOS45IDM3LjEtLjItLjEtLjQtLjEtLjYtLjFINDI4Yy42LTEuMSAxLjItMi4yIDEuOS0zLjMtMi42LTYuMS05LTguNy0xMC45LTE1LjUgMTIuMS0yMi43IDYuNS05My40LTI0LjItNzguNSA0LjMtNi4zIDE1LjYtMTEuNSAyMC44LTE5LjMgMTMgMTAuNCAyMC44IDIwLjMgMzMuMiAzMS40IDYuOCA2IDIwIDEzLjMgMjEuNCAyMy4xLjggNS41LTIuNiAxOC45LTMuOCAyNS4xek0yMjIuMiAxMzAuNWM1LjQtMTQuOSAyNy4yLTM0LjcgNDUtMzIgNy43IDEuMiAxOCA4LjIgMTIuMiAxNy43LTMwLjItNy00NS4yIDEyLjYtNTQuNCAzMy4xLTguMS0yLTQuOS0xMy4xLTIuOC0xOC44em0xODQuMSA2My4xYzguMi0zLjYgMjIuNC0uNyAyOS42LTUuMy00LjItMTEuNS0xMC4zLTIxLjQtOS4zLTM3LjcuNSAwIDEgMCAxLjQuMSA2LjggMTQuMiAxMi43IDI5LjIgMjEuNCA0MS43LTUuNyAxMy41LTQzLjYgMjUuNC00My4xIDEuMnptMjAuNC00M3ptLTExNy4yIDQ1LjdjLTYuOC0xMC45LTE5LTMyLjUtMTQuNS00NS4zIDYuNSAxMS45IDguNiAyNC40IDE3LjggMzMuMyA0LjEgNCAxMi4yIDkgOC4yIDIwLjItLjkgMi43LTcuOCA4LjYtMTEuNyA5LjctMTQuNCA0LjMtNDcuOS45LTM2LjYtMTcuMSAxMS45LjcgMjcuOSA3LjggMzYuOC0uOHptMjcuMyA3MGMzLjggNi42IDEuNCAxOC43IDEyLjEgMjAuNiAyMC4yIDMuNCA0My42LTEyLjMgNTguMS0xNy44IDktMTUuMi0uOC0yMC43LTguOS0zMC41LTE2LjYtMjAtMzguOC00NC44LTM4LTc0LjcgNi43LTQuOSA3LjMgNy40IDguMiA5LjcgOC43IDIwLjMgMzAuNCA0Ni4yIDQ2LjMgNjMuNSAzLjkgNC4zIDEwLjMgOC40IDExIDExLjIgMi4xIDguMi01LjQgMTgtNC41IDIzLjUtMjEuNyAxMy45LTQ1LjggMjkuMS04MS40IDI1LjYtNy40LTYuNy0xMC4zLTIxLjQtMi45LTMxLjF6bS0yMDEuMy05LjJjLTYuOC0zLjktOC40LTIxLTE2LjQtMjEuNC0xMS40LS43LTkuMyAyMi4yLTkuMyAzNS41LTcuOC03LjEtOS4yLTI5LjEtMy41LTQwLjMtNi42LTMuMi05LjUgMy42LTEzLjEgNS45IDQuNy0zNC4xIDQ5LjgtMTUuOCA0Mi4zIDIwLjN6bTI5OS42IDI4LjhjLTEwLjEgMTkuMi0yNC40IDQwLjQtNTQgNDEtLjYtNi4yLTEuMS0xNS42IDAtMTkuNCAyMi43LTIuMiAzNi42LTEzLjcgNTQtMjEuNnptLTE0MS45IDEyLjRjMTguOSA5LjkgNTMuNiAxMSA3OS4zIDEwLjIgMS40IDUuNiAxLjMgMTIuNiAxLjQgMTkuNC0zMyAxLjgtNzItNi40LTgwLjctMjkuNnptOTIuMiA0Ni43Yy0xLjcgNC4zLTUuMyA5LjMtOS44IDExLjEtMTIuMSA0LjktNDUuNiA4LjctNjIuNC0uMy0xMC43LTUuNy0xNy41LTE4LjUtMjMuNC0yNi0yLjgtMy42LTE2LjktMTIuOS0uMi0xMi45IDEzLjEgMzIuNyA1OCAyOSA5NS44IDI4LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUppcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDkwIDI0MS43QzQxNy4xIDE2OSAzMjAuNiA3MS44IDI0OC41IDAgODMgMTY0LjkgNiAyNDEuNyA2IDI0MS43Yy03LjkgNy45LTcuOSAyMC43IDAgMjguN0MxMzguOCA0MDIuNyA2Ny44IDMzMS45IDI0OC41IDUxMmMzNzkuNC0zNzggMTUuNy0xNi43IDI0MS41LTI0MS43IDgtNy45IDgtMjAuNyAwLTI4LjZ6bS0yNDEuNSA5MGwtNzYtNzUuNyA3Ni03NS43IDc2IDc1LjctNzYgNzUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSm9nZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc4LjEgNDVDMzM3LjYgMTkuOSAyOTIuNiA4IDI0OC4yIDggMTY1IDggODMuOCA0OS45IDM2LjkgMTI1LjljLTcxLjkgMTE2LjYtMzUuNiAyNjkuMyA4MSAzNDEuMnMyNjkuMyAzNS42IDM0MS4yLTgwLjljNzEuOS0xMTYuNiAzNS42LTI2OS40LTgxLTM0MS4yem01MS44IDMyMy4yYy00MC40IDY1LjUtMTEwLjQgMTAxLjUtMTgyIDEwMS41LTYuOCAwLTEzLjYtLjQtMjAuNC0xLTktMTMuNi0xOS45LTMzLjMtMjMuNy00Mi40LTUuNy0xMy43LTI3LjItNDUuNiAzMS4yLTY3LjEgNTEuNy0xOS4xIDE3Ni43LTE2LjUgMjA4LjgtMTcuNi00IDktOC42IDE3LjktMTMuOSAyNi42em0tMjAwLjgtODYuM2MtNTUuNS0xLjQtODEuNy0yMC44LTU4LjUtNDguMnM1MS4xLTQwLjcgNjguOS01MS4yYzE3LjktMTAuNSAyNy4zLTMzLjctMjMuNi0yOS43Qzg3LjMgMTYxLjUgNDguNiAyNTIuMSAzNy42IDI5M2MtOC44LTQ5LjctLjEtMTAyLjcgMjguNS0xNDkuMUMxMjggNDMuNCAyNTkuNiAxMi4yIDM2MC4xIDc0LjFjNzQuOCA0Ni4xIDExMS4yIDEzMC45IDk5LjMgMjEyLjctMjQuOS0uNS0xNzkuMy0zLjYtMjMwLjMtNC45em0xODMuOC01NC44Yy0yMi43LTYtNTcgMTEuMy04Ni43IDI3LjItMjkuNyAxNS44LTMxLjEgOC4yLTMxLjEgOC4yczQwLjItMjguMSA1MC43LTM0LjUgMzEuOS0xNCAxMy40LTI0LjZjLTMuMi0xLjgtNi43LTIuNy0xMC40LTIuNy0xNy44IDAtNDEuNSAxOC43LTY3LjUgMzUuNi0zMS41IDIwLjUtNjUuMyAzMS4zLTY1LjMgMzEuM2wxNjkuNS0xLjYgNDYuNS0yMy40czMuNi05LjUtMTkuMS0xNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKb29tbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjYgOTIuMUMuNiA1OC44IDI3LjQgMzIgNjAuNCAzMmMzMCAwIDU0LjUgMjEuOSA1OS4yIDUwLjIgMzIuNi03LjYgNjcuMS42IDk2LjUgMzBsLTQ0LjMgNDQuM2MtMjAuNS0yMC41LTQyLjYtMTYuMy01NS40LTMuNS0xNC4zIDE0LjMtMTQuMyAzNy45IDAgNTIuMmw5OS41IDk5LjUtNDQgNDQuM2MtODcuNy04Ny4yLTQ5LjctNDkuNy05OS44LTk5LjctMjYuOC0yNi41LTM1LTY0LjgtMjQuOC05OC45QzIwLjQgMTQ0LjYuNiAxMjAuNy42IDkyLjF6bTEyOS41IDExNi40bDQ0LjMgNDQuM2MxMC0xMCA4OS43LTg5LjcgOTkuNy05OS44IDE0LjMtMTQuMyAzNy42LTE0LjMgNTEuOSAwIDEyLjggMTIuOCAxNyAzNS0zLjUgNTUuNGw0NCA0NC4zYzMxLjItMzEuMiAzOC41LTY3LjYgMjguOS0xMDEuMiAyOS4yLTQuMSA1MS45LTI5LjIgNTEuOS01OS41IDAtMzMuMi0yNi44LTYwLjEtNTkuOC02MC4xLTMwLjMgMC01NS40IDIyLjUtNTkuNSA1MS42LTMzLjgtOS45LTcxLjctMS41LTk4LjMgMjUuMS0xOC4zIDE5LjEtNzEuMSA3MS41LTk5LjYgOTkuOXptMjY2LjMgMTUyLjJjOC4yLTMyLjctLjktNjguNS0yNi4zLTkzLjktMTEuOC0xMi4yIDUgNC43LTk5LjUtOTkuN2wtNDQuMyA0NC4zIDk5LjcgOTkuN2MxNC4zIDE0LjMgMTQuMyAzNy42IDAgNTEuOS0xMi44IDEyLjgtMzUgMTctNTUuNC0zLjVsLTQ0IDQ0LjNjMjcuNiAzMC4yIDY4IDM4LjggMTAyLjcgMjggNS41IDI3LjQgMjkuNyA0OC4xIDU4LjkgNDguMSAzMyAwIDU5LjgtMjYuOCA1OS44LTYwLjEgMC0zMC4yLTIyLjUtNTUtNTEuNi01OS4xem0tODQuMy01My4xbC00NC00NC4zYy04NyA4Ni40LTUwLjQgNTAuNC05OS43IDk5LjgtMTQuMyAxNC4zLTM3LjYgMTQuMy01MS45IDAtMTMuMS0xMy40LTE2LjktMzUuMyAzLjItNTUuNGwtNDQtNDQuM2MtMzAuMiAzMC4yLTM4IDY1LjItMjkuNSA5OC4zLTI2LjcgNi00Ni4yIDI5LjktNDYuMiA1OC4yQzAgNDUzLjIgMjYuOCA0ODAgNTkuOCA0ODBjMjguNiAwIDUyLjUtMTkuOCA1OC42LTQ2LjcgMzIuNyA4LjIgNjguNS0uNiA5NC4yLTI2IDMyLjEtMzIgMTIuMi0xMi40IDk5LjUtOTkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTI0My44IDM0OS40YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41LTMzLjcgMC01My4yLTE3LjQtNjMuMi0zOC41bDM0LjMtMjAuN2M2LjYgMTEuNyAxMi42IDIxLjYgMjcuMSAyMS42IDEzLjggMCAyMi42LTUuNCAyMi42LTI2LjVWMjM3LjdoNDIuMXYxNDMuN3ptOTkuNiA2My41Yy0zOS4xIDAtNjQuNC0xOC42LTc2LjctNDNsMzQuMy0xOS44YzkgMTQuNyAyMC44IDI1LjYgNDEuNSAyNS42IDE3LjQgMCAyOC42LTguNyAyOC42LTIwLjggMC0xNC40LTExLjQtMTkuNS0zMC43LTI4bC0xMC41LTQuNWMtMzAuNC0xMi45LTUwLjUtMjkuMi01MC41LTYzLjUgMC0zMS42IDI0LjEtNTUuNiA2MS42LTU1LjYgMjYuOCAwIDQ2IDkuMyA1OS44IDMzLjdMMzY4IDI5MGMtNy4yLTEyLjktMTUtMTgtMjcuMS0xOC0xMi4zIDAtMjAuMSA3LjgtMjAuMSAxOCAwIDEyLjYgNy44IDE3LjcgMjUuOSAyNS42bDEwLjUgNC41YzM1LjggMTUuMyA1NS45IDMxIDU1LjkgNjYuMiAwIDM3LjgtMjkuOCA1OC42LTY5LjcgNTguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnNmaWRkbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjYzNCAyMzcuNDYyYy00LjcyNy0yLjYyMS01LjY2NC01Ljc0OC02LjM4MS0xMC43NzYtMi4zNTItMTYuNDg4LTMuNTM5LTMzLjYxOS05LjA5Ny00OS4wOTUtMzUuODk1LTk5Ljk1Ny0xNTMuOTktMTQzLjM4Ni0yNDYuODQ5LTkxLjY0Ni0yNy4zNyAxNS4yNS00OC45NzEgMzYuMzY5LTY1LjQ5MyA2My45MDMtMy4xODQtMS41MDgtNS40NTgtMi43MS03LjgyNC0zLjY4Ni0zMC4xMDItMTIuNDIxLTU5LjA0OS0xMC4xMjEtODUuMzMxIDkuMTY3LTI1LjUzMSAxOC43MzctMzYuNDIyIDQ0LjU0OC0zMi42NzYgNzYuNDA4LjM1NSAzLjAyNS0xLjk2NyA3LjYyMS00LjUxNCA5LjU0NS0zOS43MTIgMjkuOTkyLTU2LjAzMSA3OC4wNjUtNDEuOTAyIDEyNC42MTUgMTMuODMxIDQ1LjU2OSA1Ny41MTQgNzkuNzk2IDEwNS42MDggODEuNDMzIDMwLjI5MSAxLjAzMSA2MC42MzcuNTQ2IDkwLjk1OS41MzkgODQuMDQxLS4wMjEgMTY4LjA5LjUzMSAyNTIuMTItLjQ4IDUyLjY2NC0uNjM0IDk2LjEwOC0zNi44NzMgMTA4LjIxMi04Ny4yOTMgMTEuNTQtNDguMDc0LTExLjE0NC05Ny4zLTU2LjgzMi0xMjIuNjM0em0yMS4xMDcgMTU2Ljg4Yy0xOC4yMyAyMi40MzItNDIuMzQzIDM1LjI1My03MS4yOCAzNS42NS01Ni44NzQuNzgxLTExMy43NjcuMjMtMTcwLjY1Mi4yMyAwIC43LTE2My4wMjguMTU5LTE2My43MjguMTU0LTQzLjg2MS0uMzMyLTc2LjczOS0xOS43NjYtOTUuMTc1LTU5Ljk5NS0xOC45MDItNDEuMjQ1LTQuMDA0LTkwLjg0OCAzNC4xODYtMTE2LjEwNiA5LjE4Mi02LjA3MyAxMi41MDUtMTEuNTY2IDEwLjA5Ni0yMy4xMzYtNS40OS0yNi4zNjEgNC40NTMtNDcuOTU2IDI2LjQyLTYyLjk4MSAyMi45ODctMTUuNzIzIDQ3LjQyMi0xNi4xNDYgNzIuMDM0LTMuMDgzIDEwLjI2OSA1LjQ1IDE0LjYwNyAxMS41NjQgMjIuMTk4LTIuNTI3IDE0LjIyMi0yNi4zOTkgMzQuNTU3LTQ2LjcyNyA2MC42NzEtNjEuMjk0IDk3LjQ2LTU0LjM2NiAyMjguMzcgNy41NjggMjMwLjI0IDEzMi42OTcuMTIyIDguMTUgMi40MTIgMTIuNDI4IDkuODQ4IDE1Ljg5NCA1Ny41NiAyNi44MjkgNzQuNDU2IDk2LjEyMiAzNS4xNDIgMTQ0LjQ5N3ptLTg3Ljc4OS04MC40OTljLTUuODQ4IDMxLjE1Ny0zNC42MjIgNTUuMDk2LTY2LjY2NiA1NS4wOTUtMTYuOTUzLS4wMDEtMzIuMDU4LTYuNTQ1LTQ0LjA3OS0xNy43MDUtMjcuNjk3LTI1LjcxMy03MS4xNDEtNzQuOTgtOTUuOTM3LTkzLjM4Ny0yMC4wNTYtMTQuODg4LTQxLjk5LTEyLjMzMy02MC4yNzIgMy43ODItNDkuOTk2IDQ0LjA3MSAxNS44NTkgMTIxLjc3NSA2Ny4wNjMgNzcuMTg4IDQuNTQ4LTMuOTYgNy44NC05LjU0MyAxMi43NDQtMTIuODQ0IDguMTg0LTUuNTA5IDIwLjc2Ni0uODg0IDEzLjE2OCAxMC42MjItMTcuMzU4IDI2LjI4NC00OS4zMyAzOC4xOTctNzguODYzIDI5LjMwMS0yOC44OTctOC43MDQtNDguODQtMzUuOTY4LTQ4LjYyNi03MC4xNzkgMS4yMjUtMjIuNDg1IDEyLjM2NC00My4wNiAzNS40MTQtNTUuOTY1IDIyLjU3NS0xMi42MzggNDYuMzY5LTEzLjE0NiA2Ni45OTEgMi40NzRDMjk1LjY4IDI4MC43IDMyMC40NjcgMzIzLjk3IDM1Mi4xODUgMzQzLjQ3YzI0LjU1OCAxNS4wOTkgNTQuMjU0IDcuMzYzIDY4LjgyMy0xNy41MDYgMjguODMtNDkuMjA5LTM0LjU5Mi0xMDUuMDE2LTc4Ljg2OC02My40Ni0zLjk4OSAzLjc0NC02LjkxNyA4LjkzMi0xMS40MSAxMS43Mi0xMC45NzUgNi44MTEtMTcuMzMzLTQuMTEzLTEyLjgwOS0xMC4zNTMgMjAuNzAzLTI4LjU1NCA1MC40NjQtNDAuNDQgODMuMjcxLTI4LjIxNCAzMS40MjkgMTEuNzE0IDQ5LjEwOCA0NC4zNjYgNDIuNzYgNzguMTg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKeGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEyLjIgMzJIMzUuOEMxNiAzMiAwIDQ4IDAgNjcuOFY0NDQuMkMwIDQ2NCAxNiA0ODAgMzUuOCA0ODBINDEyLjJjMTkuOCAwIDM1LjgtMTYgMzUuOC0zNS44VjY3LjhDNDQ4IDQ4IDQzMiAzMiA0MTIuMiAzMnpNMzc4LjYgMzMzLjdjMCA0MC4yLTMyLjYgNzIuOC03Mi44IDcyLjhINzAuMmMwLTQwLjIgMzIuNi03Mi44IDcyLjgtNzIuOEgzNzguNnptMC0xMTMuOWMwIDQwLjItMzIuNiA3Mi44LTcyLjggNzIuOEg3MC4yYzAtNDAuMiAzMi42LTcyLjggNzIuOC03Mi44SDM3OC42em0wLTExMy45YzAgNDAuMi0zMi42IDcyLjgtNzIuOCA3Mi44SDcwLjJjMC00MC4yIDMyLjYtNzIuOCA3Mi44LTcyLjhIMzc4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUthZ2dsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQuMiA1MDEuNUwxNTguNCAzMjAuMyAyOTguMiAxODVjMi42LTIuNyAxLjctMTAuNS01LjMtMTAuNWgtNjkuMmMtMy41IDAtNyAxLjgtMTAuNSA1LjNMODAuOSAzMTMuNVY3LjVxMC03LjUtNy41LTcuNUgyMS41UTE0IDAgMTQgNy41djQ5N3EwIDcuNSA3LjUgNy41aDUxLjlxNy41IDAgNy41LTcuNXYtMTA5bDMwLjgtMjkuMyAxMTAuNSAxNDAuNmMzIDMuNSA2LjUgNS4zIDEwLjUgNS4zaDY2LjlxNS4yNSAwIDYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5YmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODYuMTcgNDE5YTE4IDE4IDAgMSAwIDE4IDE4IDE4IDE4IDAgMCAwLTE4LTE4em0xMTEuOTItMTQ3LjZjLTkuNS0xNC42Mi0zOS4zNy01Mi40NS04Ny4yNi03My43MXEtOS4xLTQuMDYtMTguMzgtNy4yN2E3OC40MyA3OC40MyAwIDAgMC00Ny44OC0xMDQuMTNjLTEyLjQxLTQuMS0yMy4zMy02LTMyLjQxLTUuNzctLjYtMi0xLjg5LTExIDkuNC0zNUwxOTguNjYgMzJsLTUuNDggNy41NmMtOC42OSAxMi4wNi0xNi45MiAyMy41NS0yNC4zNCAzNC44OWE1MSA1MSAwIDAgMC04LjI5LTEuMjVjLTQxLjUzLTIuNDUtMzktMi4zMy00MS4wNi0yLjMzLTUwLjYxIDAtNTAuNzUgNTIuMTItNTAuNzUgNDUuODhsLTIuMzYgMzYuNjhjLTEuNjEgMjcgMTkuNzUgNTAuMjEgNDcuNjMgNTEuODVsOC45My41NGEyMTQgMjE0IDAgMCAwLTQ2LjI5IDM1LjU0QzE0IDMwNC42NiAxNCAzNzQgMTQgNDI5Ljc3djMzLjY0bDIzLjMyLTI5LjhhMTQ4LjYgMTQ4LjYgMCAwIDAgMTQuNTYgMzcuNTZjNS43OCAxMC4xMyAxNC44NyA5LjQ1IDE5LjY0IDcuMzMgNC4yMS0xLjg3IDEwLTYuOTIgMy43NS0yMC4xMWExNzguMjkgMTc4LjI5IDAgMCAxLTE1Ljc2LTUzLjEzbDQ2LjgyLTU5LjgzLTI0LjY2IDc0LjExYzU4LjIzLTQyLjQgMTU3LjM4LTYxLjc2IDIzNi4yNS0zOC41OSAzNC4yIDEwLjA1IDY3LjQ1LjY5IDg0Ljc0LTIzLjg0LjcyLTEgMS4yLTIuMTYgMS44NS0zLjIyYTE1Ni4wOSAxNTYuMDkgMCAwIDEgMi44IDI4LjQzYzAgMjMuMy0zLjY5IDUyLjkzLTE0Ljg4IDgxLjY0LTIuNTIgNi40NiAxLjc2IDE0LjUgOC42IDE1Ljc0IDcuNDIgMS41NyAxNS4zMy0zLjEgMTguMzctMTEuMTVDNDI5IDQ0MyA0MzQgNDE0IDQzNCAzODIuMzJjMC0zOC41OC0xMy03Ny40Ni0zNS45MS0xMTAuOTJ6TTE0Mi4zNyAxMjguNThsLTE1LjctLjkzLTEuMzkgMjEuNzkgMTMuMTMuNzhhOTMgOTMgMCAwIDAgLjMyIDE5LjU3bC0yMi4zOC0xLjM0YTEyLjI4IDEyLjI4IDAgMCAxLTExLjc2LTEyLjc5TDEwNyAxMTljMS0xMi4xNyAxMy44Ny0xMS4yNyAxMy4yNi0xMS4zMmwyOS4xMSAxLjczYTE0NC4zNSAxNDQuMzUgMCAwIDAtNyAxOS4xN3ptMTQ4LjQyIDE3Mi4xOGExMC41MSAxMC41MSAwIDAgMS0xNC4zNS0xLjM5bC05LjY4LTExLjQ5LTM0LjQyIDI3YTguMDkgOC4wOSAwIDAgMS0xMS4xMy0xLjA4bC0xNS43OC0xOC42NGE3LjM4IDcuMzggMCAwIDEgMS4zNC0xMC4zNGwzNC41Ny0yNy4xOC0xNC4xNC0xNi43NC0xNy4wOSAxMy40NWE3Ljc1IDcuNzUgMCAwIDEtMTAuNTktMXMtMy43Mi00LjQyLTMuOC00LjUzYTcuMzggNy4zOCAwIDAgMSAxLjM3LTEwLjM0TDIxNCAyMjUuMTlzLTE4LjUxLTIyLTE4LjYtMjIuMTRhOS41NiA5LjU2IDAgMCAxIDEuNzQtMTMuNDIgMTAuMzggMTAuMzggMCAwIDEgMTQuMyAxLjM3bDgxLjA5IDk2LjMyYTkuNTggOS41OCAwIDAgMS0xLjc0IDEzLjQ0ek0xODcuNDQgNDE5YTE4IDE4IDAgMSAwIDE4IDE4IDE4IDE4IDAgMCAwLTE4LTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLZXljZG4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMuOCA0MDkuM2w2MC41LTU5YzMyLjEgNDIuOCA3MS4xIDY2IDEyNi42IDY3LjQgMzAuNS43IDYwLjMtNyA4Ni40LTIyLjQgNS4xIDUuMyAxOC41IDE5LjUgMjAuOSAyMi0zMi4yIDIwLjctNjkuNiAzMS4xLTEwOC4xIDMwLjItNDMuMy0xLjEtODQuNi0xNi43LTExNy43LTQ0LjQuMy0uNi0zOC4yIDM3LjUtMzguNiAzNy45IDkuNSAyOS44LTEzLjEgNjIuNC00Ni4zIDYyLjRDMjAuNyA1MDMuMyAwIDQ4MS43IDAgNDU0LjljMC0zNC4zIDMzLjEtNTYuNiA2My44LTQ1LjZ6bTM1NC45LTI1Mi40YzE5LjEgMzEuMyAyOS42IDY3LjQgMjguNyAxMDQtMS4xIDQ0LjgtMTkgODcuNS00OC42IDEyMSAuMy4zIDIzLjggMjUuMiAyNC4xIDI1LjUgOS42LTEuMyAxOS4yIDIgMjUuOSA5LjEgMTEuMyAxMiAxMC45IDMwLjktMS4xIDQyLjQtMTIgMTEuMy0zMC45IDEwLjktNDIuNC0xLjEtNi43LTctOS40LTE2LjgtNy42LTI2LjMtMjQuOS0yNi42LTQ0LjQtNDcuMi00NC40LTQ3LjIgNDIuNy0zNC4xIDYzLjMtNzkuNiA2NC40LTEyNC4yLjctMjguOS03LjItNTcuMi0yMS4xLTgyLjJsMjIuMS0yMXpNMTA0IDUzLjFjNi43IDcgOS40IDE2LjggNy42IDI2LjNsNDUuOSA0OC4xYy00LjcgMy44LTEzLjMgMTAuNC0yMi44IDIxLjMtMjUuNCAyOC41LTM5LjYgNjQuOC00MC43IDEwMi45LS43IDI4LjkgNi4xIDU3LjIgMjAgODIuNGwtMjIgMjEuNUM3Mi43IDMyNCA2My4xIDI4Ny45IDY0LjIgMjUwLjljMS00NC42IDE4LjMtODcuNiA0Ny41LTEyMS4xbC0yNS4zLTI2LjRjLTkuNiAxLjMtMTkuMi0yLTI1LjktOS4xLTExLjMtMTItMTAuOS0zMC45IDEuMS00Mi40QzczLjUgNDAuNyA5Mi4yIDQxIDEwNCA1My4xek00NjQuOSA4YzI2IDAgNDcuMSAyMi40IDQ3LjEgNDguM1M0OTAuOSAxMDQgNDY0LjkgMTA0Yy02LjMuMS0xNC0xLjEtMTUuOS0xLjhsLTYyLjkgNTkuN2MtMzIuNy00My42LTc2LjctNjUuOS0xMjYuOS02Ny4yLTMwLjUtLjctNjAuMyA2LjgtODYuMiAyMi40bC0yMS4xLTIyQzE4NC4xIDc0LjMgMjIxLjUgNjQgMjYwIDY0LjljNDMuMyAxLjEgODQuNiAxNi43IDExNy43IDQ0LjZsNDEuMS0zOC42Yy0xLjUtNC43LTIuMi05LjYtMi4yLTE0LjVDNDE2LjUgMjkuNyA0MzguOSA4IDQ2NC45IDh6TTI1Ni43IDExMy40YzUuNSAwIDEwLjkuNCAxNi40IDEuMSA3OC4xIDkuOCAxMzMuNCA4MS4xIDEyMy44IDE1OS4xLTkuOCA3OC4xLTgxLjEgMTMzLjQtMTU5LjEgMTIzLjgtNzguMS05LjgtMTMzLjQtODEuMS0xMjMuOC0xNTkuMiA5LjMtNzIuNCA3MC4xLTEyNC42IDE0Mi43LTEyNC44em0tNTkgMTE5LjRjLjYgMjIuNyAxMi4yIDQxLjggMzIuNCA1Mi4ybC0xMSA1MS43aDczLjdsLTExLTUxLjdjMjAuMS0xMC45IDMyLjEtMjkgMzIuNC01Mi4yLS40LTMyLjgtMjUuOC01Ny41LTU4LjMtNTguMy0zMi4xLjgtNTcuMyAyNC44LTU4LjIgNTguM3pNMjU2IDE2MFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaWNrc3RhcnRlcksgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzU2LjYgMjU2LjJsNDAuOC00MC41YzQyLjItNDEuOSA0Mi4yLTExMC4zIDAtMTUyLjFzLTExMS00MS45LTE1My4yIDBMMjI5LjMgNzguNEMyMDkuNiA1MC4zIDE3Ny4xIDMyIDE0MC4yIDMyQzgwLjUgMzIgMzIgODAuMiAzMiAxMzkuNVYzNzIuNUMzMiA0MzEuOSA4MC41IDQ4MCAxNDAuMiA0ODBjMzcuMSAwIDY5LjMtMTguMyA4OS00Ni40bDE0LjkgMTQuN2M0Mi4yIDQxLjkgMTExIDQxLjkgMTUzLjIgMHM0Mi4yLTExMC4zIDAtMTUyLjFsLTQwLjgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpY2tzdGFydGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTMyMC44IDIzM2wtMjMuMyAyMy4xTDMyMC44IDI3OWMyNC4xIDIzLjkgMjQuMSA2MyAwIDg2LjlzLTYzLjQgMjMuOS04Ny42IDBsLTguNS04LjRjLTExLjMgMTYtMjkuNyAyNi41LTUwLjkgMjYuNWMtMzQuMSAwLTYxLjktMjcuNS02MS45LTYxLjRsMC0xMzMuMmMwLTMzLjggMjcuNy02MS40IDYxLjktNjEuNGMyMS4xIDAgMzkuNiAxMC41IDUwLjkgMjYuNWw4LjUtOC40YzI0LjEtMjMuOSA2My40LTIzLjkgODcuNiAwczI0LjEgNjMgMCA4Ni45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLb3J2dWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg2LjUgMzRoLTMyN0MyNi44IDM0IDAgNjAuOCAwIDkzLjV2MzI3LjFDMCA0NTMuMiAyNi44IDQ4MCA1OS41IDQ4MGgzMjcuMWMzMyAwIDU5LjUtMjYuOCA1OS41LTU5LjV2LTMyN0M0NDYgNjAuOCA0MTkuMiAzNCAzODYuNSAzNHpNODcuMSAxMjAuOGg5NnYxMTZsNjEuOC0xMTZoMTEwLjlsLTgxLjIgMTMySDg3LjF2LTEzMnptMTYxLjggMjcyLjFsLTY1LjctMTEzLjZ2MTEzLjZoLTk2VjI2Mi4xaDE5MS41bDg4LjYgMTMwLjhIMjQ4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcmF2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0LjQsMTE1LjgzYTUuNzIsNS43MiwwLDAsMC0uMjgtLjY4LDguNTIsOC41MiwwLDAsMC0uNTMtMS4yNSw2LDYsMCwwLDAtLjU0LS43MSw5LjM2LDkuMzYsMCwwLDAtLjcyLS45NGMtLjIzLS4yMi0uNTItLjQtLjc3LS42YTguODQsOC44NCwwLDAsMC0uOS0uNjhMNDA0LjQsNTUuNTVhOCw4LDAsMCwwLTgsMEwzMDAuMTIsMTExaDBhOC4wNyw4LjA3LDAsMCwwLS44OC42OSw3LjY4LDcuNjgsMCwwLDAtLjc4LjYsOC4yMyw4LjIzLDAsMCwwLS43Mi45M2MtLjE3LjI0LS4zOS40NS0uNTQuNzFhOS43LDkuNywwLDAsMC0uNTIsMS4yNWMtLjA4LjIzLS4yMS40NC0uMjguNjhhOC4wOCw4LjA4LDAsMCwwLS4yOCwyLjA4VjIyMy4xOGwtODAuMjIsNDYuMTlWNjMuNDRhNy44LDcuOCwwLDAsMC0uMjgtMi4wOWMtLjA2LS4yNC0uMi0uNDUtLjI4LS42OGE4LjM1LDguMzUsMCwwLDAtLjUyLTEuMjRjLS4xNC0uMjYtLjM3LS40Ny0uNTQtLjcyYTkuMzYsOS4zNiwwLDAsMC0uNzItLjk0LDkuNDYsOS40NiwwLDAsMC0uNzgtLjYsOS44LDkuOCwwLDAsMC0uODgtLjY4aDBMMTE1LjYxLDEuMDdhOCw4LDAsMCwwLTgsMEwxMS4zNCw1Ni40OWgwYTYuNTIsNi41MiwwLDAsMC0uODguNjksNy44MSw3LjgxLDAsMCwwLS43OS42LDguMTUsOC4xNSwwLDAsMC0uNzEuOTNjLS4xOC4yNS0uNC40Ni0uNTUuNzJhNy44OCw3Ljg4LDAsMCwwLS41MSwxLjI0LDYuNDYsNi40NiwwLDAsMC0uMjkuNjcsOC4xOCw4LjE4LDAsMCwwLS4yOCwyLjF2MzI5LjdhOCw4LDAsMCwwLDQsNi45NWwxOTIuNSwxMTAuODRhOC44Myw4LjgzLDAsMCwwLDEuMzMuNTRjLjIxLjA4LjQxLjIuNjMuMjZhNy45Miw3LjkyLDAsMCwwLDQuMSwwYy4yLS4wNS4zNy0uMTYuNTUtLjIyYTguNiw4LjYsMCwwLDAsMS40LS41OEw0MDQuNCw0MDAuMDlhOCw4LDAsMCwwLDQtNi45NVYyODcuODhsOTIuMjQtNTMuMTFhOCw4LDAsMCwwLDQtN1YxMTcuOTJBOC42Myw4LjYzLDAsMCwwLDUwNC40LDExNS44M1pNMTExLjYsMTcuMjhoMGw4MC4xOSw0Ni4xNS04MC4yLDQ2LjE4TDMxLjQxLDYzLjQ0Wm04OC4yNSw2MFYyNzguNmwtNDYuNTMsMjYuNzktMzMuNjksMTkuNFYxMjMuNWw0Ni41My0yNi43OVptMCw0MTIuNzhMMjMuMzcsMzg4LjVWNzcuMzJMNTcuMDYsOTYuN2w0Ni41MiwyNi44VjMzOC42OGE2Ljk0LDYuOTQsMCwwLDAsLjEyLjksOCw4LDAsMCwwLC4xNiwxLjE4aDBhNS45Miw1LjkyLDAsMCwwLC4zOC45LDYuMzgsNi4zOCwwLDAsMCwuNDIsMXYwYTguNTQsOC41NCwwLDAsMCwuNi43OCw3LjYyLDcuNjIsMCwwLDAsLjY2Ljg0bDAsMGMuMjMuMjIuNTIuMzguNzcuNThhOC45Myw4LjkzLDAsMCwwLC44Ni42NmwwLDAsMCwwLDkyLjE5LDUyLjE4Wm04LTEwNi4xNy04MC4wNi00NS4zMiw4NC4wOS00OC40MSw5Mi4yNi01My4xMSw4MC4xMyw0Ni4xMy01OC44LDMzLjU2Wm0xODQuNTIsNC41N0wyMTUuODgsNDkwLjExVjM5Ny44TDM0Ni42LDMyMy4ybDQ1Ljc3LTI2LjE1Wm0wLTExOS4xM0wzNTguNjgsMjUwbC00Ni41My0yNi43OVYxMzEuNzlsMzMuNjksMTkuNEwzOTIuMzcsMTc4Wm04LTEwNS4yOC04MC4yLTQ2LjE3LDgwLjItNDYuMTYsODAuMTgsNDYuMTVabTgsMTA1LjI4VjE3OEw0NTUsMTUxLjE5bDMzLjY4LTE5LjR2OTEuMzloMFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFzdGZtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS44IDM2Ny4xbC0xOC44LTUxcy0zMC41IDM0LTc2LjIgMzRjLTQwLjUgMC02OS4yLTM1LjItNjkuMi05MS41IDAtNzIuMSAzNi40LTk3LjkgNzIuMS05Ny45IDY2LjUgMCA3NC44IDUzLjMgMTAwLjkgMTM0LjkgMTguOCA1Ni45IDU0IDEwMi42IDE1NS40IDEwMi42IDcyLjcgMCAxMjItMjIuMyAxMjItODAuOSAwLTcyLjktNjIuNy04MC42LTExNS05Mi4xLTI1LjgtNS45LTMzLjQtMTYuNC0zMy40LTM0IDAtMTkuOSAxNS44LTMxLjcgNDEuNi0zMS43IDI4LjIgMCA0My40IDEwLjYgNDUuNyAzNS44bDU4LjYtN2MtNC43LTUyLjgtNDEuMS03NC41LTEwMC45LTc0LjUtNTIuOCAwLTEwNC40IDE5LjktMTA0LjQgODMuOSAwIDM5LjkgMTkuNCA2NS4xIDY4IDc2LjggNDQuOSAxMC42IDc5LjggMTMuOCA3OS44IDQ1LjcgMCAyMS43LTIxLjEgMzAuNS02MSAzMC41LTU5LjIgMC04My45LTMxLjEtOTcuOS03My45LTMyLTk2LjgtNDMuNi0xNjMtMTYxLjMtMTYzQzQ1LjcgMTEzLjggMCAxNjguMyAwIDI2MWMwIDg5LjEgNDUuNyAxMzcuMiAxMjcuOSAxMzcuMiA2Ni4yIDAgOTcuOS0zMS4xIDk3LjktMzEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVhbnB1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuNTM5IDExMS40ODVsMTUuMDk2IDI0OC45NTUtMTAuOTc5LS4yNzVjLTM2LjIzMi0uODI0LTcxLjY0IDguNzgzLTEwMi42NTcgMjcuOTk3LTMxLjAxNi0xOS4yMTQtNjYuNDI0LTI3Ljk5Ny0xMDIuNjU3LTI3Ljk5Ny00NS41NjQgMC04Mi4wNyAxMC43MDUtMTIzLjUxNiAyNy43MjNMOTMuMTE3IDEyOS42YzI4LjU0Ni0xMS44MDMgNjEuNDg0LTE4LjExNSA5Mi4yMjYtMTguMTE1IDQxLjE3MyAwIDczLjgzNiAxMy4xNzUgMTAyLjY1NyA0Mi41NDQgMjcuNzIzLTI4LjI3MSA1OS4wMTMtNDEuNzIxIDk4LjUzOS00Mi41NDR6TTU2OS4wNyA0NDhjLTI1LjUyNiAwLTQ3LjQ4NS01LjIxNS03MC41NDItMTUuNjQ1LTM0LjMxLTE1LjY0NS02OS45OTMtMjQuOTc4LTEwNy44NzEtMjQuOTc4LTM4Ljk3NyAwLTc0LjkzNCAxMi45MDEtMTAyLjY1NyA0MC42MjMtMjcuNzIzLTI3LjcyMy02My42OC00MC42MjMtMTAyLjY1Ny00MC42MjMtMzcuODc4IDAtNzMuNTYxIDkuMzMzLTEwNy44NzEgMjQuOTc4QzU1LjIzOSA0NDIuMjM2IDMyLjczMSA0NDggOC4zMDMgNDQ4SDYuOTNMNDkuNDc1IDk4Ljg1OUM4OC43MjYgNzYuNjI2IDEzNi40ODYgNjQgMTgxLjc3NSA2NCAyMTguODMgNjQgMjU2Ljk4NCA3MS42ODUgMjg4IDkzLjA5NSAzMTkuMDE2IDcxLjY4NSAzNTcuMTcgNjQgMzk0LjIyNSA2NGM0NS4yODkgMCA5My4wNDkgMTIuNjI2IDEzMi4zIDM0Ljg1OUw1NjkuMDcgNDQ4em0tNDMuMzY4LTQ0Ljc0MWwtMzQuMDM2LTI4MC4yNDZjLTMwLjc0Mi0xMy45OTktNjcuMjQ4LTIxLjQxLTEwMS4wMDktMjEuNDEtMzguNDI4IDAtNzQuMzg1IDEyLjA3Ny0xMDIuNjU3IDM4LjcwMi0yOC4yNzItMjYuNjI1LTY0LjIyOC0zOC43MDItMTAyLjY1Ny0zOC43MDItMzMuNzYxIDAtNzAuMjY3IDcuNDExLTEwMS4wMDkgMjEuNDFMNTAuMjk4IDQwMy4yNTljNDcuMjExLTE5LjQ4NyA4Mi44OTQtMzMuNDg2IDEzNS4wNDUtMzMuNDg2IDM3LjYwNCAwIDcwLjgxNyA5LjYwNiAxMDIuNjU3IDI5LjY0NCAzMS44NC0yMC4wMzggNjUuMDUyLTI5LjY0NCAxMDIuNjU3LTI5LjY0NCA1Mi4xNTEgMCA4Ny44MzQgMTMuOTk5IDEzNS4wNDUgMzMuNDg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxMi43IDIxOWMwLTIwLjUgMy4yLTMyLjYgMy4yLTU0LjYgMC0zNC4yLTEyLjYtNDUuMi00MC41LTQ1LjJoLTIwLjV2MjQuMmg2LjNjMTQuMiAwIDE3LjMgNC43IDE3LjMgMjIuMSAwIDE2LjMtMS42IDMyLjYtMS42IDUxLjUgMCAyNC4yIDcuOSAzMy42IDIzLjYgMzcuM3YxLjZjLTE1LjggMy43LTIzLjYgMTMuMS0yMy42IDM3LjMgMCAxOC45IDEuNiAzNC4yIDEuNiA1MS41IDAgMTcuOS0zLjcgMjIuNi0xNy4zIDIyLjZ2LjVoLTYuM1YzOTNoMjAuNWMyNy44IDAgNDAuNS0xMSA0MC41LTQ1LjIgMC0yMi42LTMuMi0zNC4yLTMuMi01NC42IDAtMTEgNi44LTIyLjYgMjcuMy0yMy42di0yNy4zYy0yMC41LS43LTI3LjMtMTIuMy0yNy4zLTIzLjN6bS0xMDUuNiAzMmMtMTUuOC02LjMtMzAuNS0xMC0zMC41LTIwLjUgMC03LjkgNi4zLTEyLjYgMTcuOS0xMi42czIyLjEgNC43IDMzLjYgMTMuMWwyMS0yNy44Yy0xMy4xLTEwLTMxLTIwLjUtNTUuMi0yMC41LTM1LjcgMC01OS45IDIwLjUtNTkuOSA0OS40IDAgMjUuNyAyMi42IDM4LjkgNDEuNSA0Ni4yIDE2LjMgNi4zIDMyLjEgMTEuNiAzMi4xIDIyLjEgMCA3LjktNi4zIDEzLjEtMjAuNSAxMy4xLTEzLjEgMC0yNi4zLTUuMy00MC41LTE2LjNsLTIxIDMwLjVjMTUuOCAxMy4xIDM5LjkgMjIuMSA1OS45IDIyLjEgNDIgMCA2NC42LTIyLjEgNjQuNi01MXMtMjIuNS00MS00My00Ny44em0tMzU4LjkgNTkuNGMtMy43IDAtOC40LTMuMi04LjQtMTMuMVYxMTkuMUg2NS4yYy0yOC40IDAtNDEgMTEtNDEgNDUuMiAwIDIyLjYgMy4yIDM1LjIgMy4yIDU0LjYgMCAxMS02LjggMjIuNi0yNy4zIDIzLjZ2MjcuM2MyMC41LjUgMjcuMyAxMi4xIDI3LjMgMjMuMSAwIDE5LjQtMy4yIDMxLTMuMiA1My42IDAgMzQuMiAxMi42IDQ1LjIgNDAuNSA0NS4yaDIwLjV2LTI0LjJoLTYuM2MtMTMuMSAwLTE3LjMtNS4zLTE3LjMtMjIuNnMxLjYtMzIuMSAxLjYtNTEuNWMwLTI0LjItNy45LTMzLjYtMjMuNi0zNy4zdi0xLjZjMTUuOC0zLjcgMjMuNi0xMy4xIDIzLjYtMzcuMyAwLTE4LjktMS42LTM0LjItMS42LTUxLjVzMy43LTIyLjEgMTcuMy0yMi4xSDkzdjE1MC44YzAgMzIuMSAxMSA1My4xIDQzLjEgNTMuMSAxMCAwIDE3LjktMS42IDIzLjYtMy43bC01LjMtMzQuMmMtMy4xLjgtNC42LjgtNi4yLjh6TTM3OS45IDI1MWMtMTYuMy02LjMtMzEtMTAtMzEtMjAuNSAwLTcuOSA2LjMtMTIuNiAxNy45LTEyLjYgMTEuNiAwIDIyLjEgNC43IDMzLjYgMTMuMWwyMS0yNy44Yy0xMy4xLTEwLTMxLTIwLjUtNTUuMi0yMC41LTM1LjcgMC01OS45IDIwLjUtNTkuOSA0OS40IDAgMjUuNyAyMi42IDM4LjkgNDEuNSA0Ni4yIDE2LjMgNi4zIDMyLjEgMTEuNiAzMi4xIDIyLjEgMCA3LjktNi4zIDEzLjEtMjAuNSAxMy4xLTEzLjEgMC0yNi4zLTUuMy00MC41LTE2LjNsLTIwLjUgMzAuNWMxNS44IDEzLjEgMzkuOSAyMi4xIDU5LjkgMjIuMSA0MiAwIDY0LjYtMjIuMSA2NC42LTUxIC4xLTI4LjktMjIuNS00MS00My00Ny44em0tMTU1LTY4LjhjLTM4LjQgMC03NS4xIDMyLjEtNzQuMSA4Mi41IDAgNTIgMzQuMiA4Mi41IDc5LjMgODIuNSAxOC45IDAgMzkuOS02LjggNTYuMi0xNy45bC0xNS44LTI3LjhjLTExLjYgNi44LTIyLjYgMTAtMzQuMiAxMC0yMSAwLTM3LjMtMTAtNDEuNS0zNC4ySDI5MGMuNS0zLjcgMS42LTExIDEuNi0xOS40LjYtNDIuNi0yMi42LTc1LjctNjYuNy03NS43em0tMzAgNjYuMmMzLjItMjEgMTUuOC0zMSAzMC41LTMxIDE4LjkgMCAyNi4zIDEzLjEgMjYuMyAzMWgtNTYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGV0dGVyYm94ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjEuMyAxMjhDNTg2LjkgMTI4IDY0MCAxODEuMSA2NDAgMjQ2LjZzLTUzLjEgMTE4LjYtMTE4LjcgMTE4LjZjLTQyLjUgMC03OS43LTIyLjMtMTAwLjctNTUuOGMxMS40LTE4LjIgMTgtMzkuNyAxOC02Mi44cy02LjYtNDQuNi0xOC02Mi44bDAgMCAuOC0xLjJjMjAuOC0zMi4zIDU2LjgtNTMuOSA5Ny45LTU0LjZsMiAwek0zMjAgMTI4YzQyLjUgMCA3OS43IDIyLjMgMTAwLjcgNTUuOGMtMTEuNCAxOC4yLTE4IDM5LjctMTggNjIuOHM2LjYgNDQuNiAxOCA2Mi44bDAgMC0uOCAxLjJjLTIwLjggMzIuMy01Ni44IDUzLjktOTcuOSA1NC42bC0yIDBjLTQyLjUgMC03OS43LTIyLjMtMTAwLjctNTUuOGMxMS40LTE4LjIgMTgtMzkuNyAxOC02Mi44cy02LjYtNDQuNi0xOC02Mi44bDAgMCAuOC0xLjJjMjAuOC0zMi4zIDU2LjgtNTMuOSA5Ny45LTU0LjZsMiAwem0tMjAxLjMgMGM0Mi41IDAgNzkuNyAyMi4zIDEwMC43IDU1LjhjLTExLjQgMTguMi0xOCAzOS43LTE4IDYyLjhzNi42IDQ0LjYgMTggNjIuOGwwIDAtLjggMS4yYy0yMC44IDMyLjMtNTYuOCA1My45LTk3LjkgNTQuNmwtMiAwQzUzLjEgMzY1LjEgMCAzMTIuMSAwIDI0Ni42UzUzLjEgMTI4IDExOC43IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTEgMTk2Ljh2ODEuM2MwIDIuMS0xLjYgMy43LTMuNyAzLjdoLTEzYy0xLjMgMC0yLjQtLjctMy0xLjVsLTM3LjMtNTAuM3Y0OC4yYzAgMi4xLTEuNiAzLjctMy43IDMuN2gtMTNjLTIuMSAwLTMuNy0xLjYtMy43LTMuN1YxOTYuOWMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMTIuOWMxLjEgMCAyLjQgLjYgMyAxLjZsMzcuMyA1MC4zVjE5Ni45YzAtMi4xIDEuNi0zLjcgMy43LTMuN2gxM2MyLjEtLjEgMy44IDEuNiAzLjggMy41em0tOTMuNy0zLjdoLTEzYy0yLjEgMC0zLjcgMS42LTMuNyAzLjd2ODEuM2MwIDIuMSAxLjYgMy43IDMuNyAzLjdoMTNjMi4xIDAgMy43LTEuNiAzLjctMy43VjE5Ni44YzAtMS45LTEuNi0zLjctMy43LTMuN3ptLTMxLjQgNjguMUgxNTAuM1YxOTYuOGMwLTIuMS0xLjYtMy43LTMuNy0zLjdoLTEzYy0yLjEgMC0zLjcgMS42LTMuNyAzLjd2ODEuM2MwIDEgLjMgMS44IDEgMi41Yy43IC42IDEuNSAxIDIuNSAxaDUyLjJjMi4xIDAgMy43LTEuNiAzLjctMy43di0xM2MwLTEuOS0xLjYtMy43LTMuNS0zLjd6bTE5My43LTY4LjFIMzI3LjNjLTEuOSAwLTMuNyAxLjYtMy43IDMuN3Y4MS4zYzAgMS45IDEuNiAzLjcgMy43IDMuN2g1Mi4yYzIuMSAwIDMuNy0xLjYgMy43LTMuN1YyNjVjMC0yLjEtMS42LTMuNy0zLjctMy43SDM0NFYyNDcuN2gzNS41YzIuMSAwIDMuNy0xLjYgMy43LTMuN1YyMzAuOWMwLTIuMS0xLjYtMy43LTMuNy0zLjdIMzQ0VjIxMy41aDM1LjVjMi4xIDAgMy43LTEuNiAzLjctMy43di0xM2MtLjEtMS45LTEuNy0zLjctMy43LTMuN3pNNTEyIDkzLjRWNDE5LjRjLS4xIDUxLjItNDIuMSA5Mi43LTkzLjQgOTIuNkg5Mi42QzQxLjQgNTExLjktLjEgNDY5LjggMCA0MTguNlY5Mi42Qy4xIDQxLjQgNDIuMi0uMSA5My40IDBINDE5LjRjNTEuMiAuMSA5Mi43IDQyLjEgOTIuNiA5My40ek00NDEuNiAyMzMuNWMwLTgzLjQtODMuNy0xNTEuMy0xODYuNC0xNTEuM3MtMTg2LjQgNjcuOS0xODYuNCAxNTEuM2MwIDc0LjcgNjYuMyAxMzcuNCAxNTUuOSAxNDkuM2MyMS44IDQuNyAxOS4zIDEyLjcgMTQuNCA0Mi4xYy0uOCA0LjctMy44IDE4LjQgMTYuMSAxMC4xczEwNy4zLTYzLjIgMTQ2LjUtMTA4LjJjMjctMjkuNyAzOS45LTU5LjggMzkuOS05My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5rZWRpbkluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMC4yOCA0NDhINy40VjE0OC45aDkyLjg4ek01My43OSAxMDguMUMyNC4wOSAxMDguMSAwIDgzLjUgMCA1My44YTUzLjc5IDUzLjc5IDAgMCAxIDEwNy41OCAwYzAgMjkuNy0yNC4xIDU0LjMtNTMuNzkgNTQuM3pNNDQ3LjkgNDQ4aC05Mi42OFYzMDIuNGMwLTM0LjctLjctNzkuMi00OC4yOS03OS4yLTQ4LjI5IDAtNTUuNjkgMzcuNy01NS42OSA3Ni43VjQ0OGgtOTIuNzhWMTQ4LjloODkuMDh2NDAuOGgxLjNjMTIuNC0yMy41IDQyLjY5LTQ4LjMgODcuODgtNDguMyA5NCAwIDExMS4yOCA2MS45IDExMS4yOCAxNDIuM1Y0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmtlZGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMkgzMS45QzE0LjMgMzIgMCA0Ni41IDAgNjQuM3YzODMuNEMwIDQ2NS41IDE0LjMgNDgwIDMxLjkgNDgwSDQxNmMxNy42IDAgMzItMTQuNSAzMi0zMi4zVjY0LjNjMC0xNy44LTE0LjQtMzIuMy0zMi0zMi4zek0xMzUuNCA0MTZINjlWMjAyLjJoNjYuNVY0MTZ6bS0zMy4yLTI0M2MtMjEuMyAwLTM4LjUtMTcuMy0zOC41LTM4LjVTODAuOSA5NiAxMDIuMiA5NmMyMS4yIDAgMzguNSAxNy4zIDM4LjUgMzguNSAwIDIxLjMtMTcuMiAzOC41LTM4LjUgMzguNXptMjgyLjEgMjQzaC02Ni40VjMxMmMwLTI0LjgtLjUtNTYuNy0zNC41LTU2LjctMzQuNiAwLTM5LjkgMjctMzkuOSA1NC45VjQxNmgtNjYuNFYyMDIuMmg2My43djI5LjJoLjljOC45LTE2LjggMzAuNi0zNC41IDYyLjktMzQuNSA2Ny4yIDAgNzkuNyA0NC4zIDc5LjcgMTAxLjlWNDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY2LjAzNiwxODYuODY3bC01OS41LDM2Ljg3MS0uODM4LDM2Ljg3MS0yOS4zMjktMTkuMjczLTM5LjM4NCwyNC4zYzIuMjM4LDU1LjIxMSwyLjQ4Myw1OS4yNzEsMi41MSw1OS41bC05Ny4yLDY1LjM1OUwxMjcuMjE0LDI4NS43NDhsMTA4LjEtNjIuMDFMMTk1LjA5LDE5Ny43NjFsLTc1LjQxNywzOC41NDdMOTguNzIzLDkzLjAxNSwyMjcuNzcxLDQzLjU3NCwxMzYuNDMyLDAsMTAuNzM3LDM5LjM4NSwzOC4zOSwxNzQuM2w0MS45LDMyLjY4MUw0OC40NDUsMjIyLjA2Miw2OS4zOTQsMzIzLjQ1Nyw5OC43MjMsMzUxLjExLDc3Ljc3NCwzNjMuNjc5bDE2Ljc2LDc4Ljc2OUwxNjAuNzMzLDUxMmMtMTAuOC03NC44NDItMTEuNjU4LTc4LjY0MS0xMS43MjUtNzguNzczbDc3LjkyNS01NS4zYzE2Ljc1OS0xMi41NywxNS4wODMtMTAuODk0LDE1LjA4My0xMC44OTRsLjgzOCwyNC4zLDMzLjUxOSwyOC40OTEtLjgzOC03Ny4wOTMsNDYuOTI3LTMzLjUxOSwyNi44MTUtMTguNDM1LTIuNTE0LDM2LjAzMywyNS4xMzksMTcuNiw2LjctNzQuNTc5LDU4LjY1Ny00My41NzVaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbnV4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMC44IDEyMy4zYzEgLjUgMS44IDEuNyAzIDEuNyAxLjEgMCAyLjgtLjQgMi45LTEuNS4yLTEuNC0xLjktMi4zLTMuMi0yLjktMS43LS43LTMuOS0xLTUuNS0uMS0uNC4yLS44LjctLjYgMS4xLjMgMS4zIDIuMyAxLjEgMy40IDEuN3ptLTIxLjkgMS43YzEuMiAwIDItMS4yIDMtMS43IDEuMS0uNiAzLjEtLjQgMy41LTEuNi4yLS40LS4yLS45LS42LTEuMS0xLjYtLjktMy44LS42LTUuNS4xLTEuMy42LTMuNCAxLjUtMy4yIDIuOS4xIDEgMS44IDEuNSAyLjggMS40ek00MjAgNDAzLjhjLTMuNi00LTUuMy0xMS42LTcuMi0xOS43LTEuOC04LjEtMy45LTE2LjgtMTAuNS0yMi40LTEuMy0xLjEtMi42LTIuMS00LTIuOS0xLjMtLjgtMi43LTEuNS00LjEtMiA5LjItMjcuMyA1LjYtNTQuNS0zLjctNzkuMS0xMS40LTMwLjEtMzEuMy01Ni40LTQ2LjUtNzQuNC0xNy4xLTIxLjUtMzMuNy00MS45LTMzLjQtNzJDMzExLjEgODUuNCAzMTUuNy4xIDIzNC44IDAgMTMyLjQtLjIgMTU4IDEwMy40IDE1Ni45IDEzNS4yYy0xLjcgMjMuNC02LjQgNDEuOC0yMi41IDY0LjctMTguOSAyMi41LTQ1LjUgNTguOC01OC4xIDk2LjctNiAxNy45LTguOCAzNi4xLTYuMiA1My4zLTYuNSA1LjgtMTEuNCAxNC43LTE2LjYgMjAuMi00LjIgNC4zLTEwLjMgNS45LTE3IDguM3MtMTQgNi0xOC41IDE0LjVjLTIuMSAzLjktMi44IDguMS0yLjggMTIuNCAwIDMuOS42IDcuOSAxLjIgMTEuOCAxLjIgOC4xIDIuNSAxNS43LjggMjAuOC01LjIgMTQuNC01LjkgMjQuNC0yLjIgMzEuNyAzLjggNy4zIDExLjQgMTAuNSAyMC4xIDEyLjMgMTcuMyAzLjYgNDAuOCAyLjcgNTkuMyAxMi41IDE5LjggMTAuNCAzOS45IDE0LjEgNTUuOSAxMC40IDExLjYtMi42IDIxLjEtOS42IDI1LjktMjAuMiAxMi41LS4xIDI2LjMtNS40IDQ4LjMtNi42IDE0LjktMS4yIDMzLjYgNS4zIDU1LjEgNC4xLjYgMi4zIDEuNCA0LjYgMi41IDYuN3YuMWM4LjMgMTYuNyAyMy44IDI0LjMgNDAuMyAyMyAxNi42LTEuMyAzNC4xLTExIDQ4LjMtMjcuOSAxMy42LTE2LjQgMzYtMjMuMiA1MC45LTMyLjIgNy40LTQuNSAxMy40LTEwLjEgMTMuOS0xOC4zLjQtOC4yLTQuNC0xNy4zLTE1LjUtMjkuN3pNMjIzLjcgODcuM2M5LjgtMjIuMiAzNC4yLTIxLjggNDQtLjQgNi41IDE0LjIgMy42IDMwLjktNC4zIDQwLjQtMS42LS44LTUuOS0yLjYtMTIuNi00LjkgMS4xLTEuMiAzLjEtMi43IDMuOS00LjYgNC44LTExLjgtLjItMjctOS4xLTI3LjMtNy4zLS41LTEzLjkgMTAuOC0xMS44IDIzLTQuMS0yLTkuNC0zLjUtMTMtNC40LTEtNi45LS4zLTE0LjYgMi45LTIxLjh6TTE4MyA3NS44YzEwLjEgMCAyMC44IDE0LjIgMTkuMSAzMy41LTMuNSAxLTcuMSAyLjUtMTAuMiA0LjYgMS4yLTguOS0zLjMtMjAuMS05LjYtMTkuNi04LjQuNy05LjggMjEuMi0xLjggMjguMSAxIC44IDEuOS0uMi01LjkgNS41LTE1LjYtMTQuNi0xMC41LTUyLjEgOC40LTUyLjF6bS0xMy42IDYwLjdjNi4yLTQuNiAxMy42LTEwIDE0LjEtMTAuNSA0LjctNC40IDEzLjUtMTQuMiAyNy45LTE0LjIgNy4xIDAgMTUuNiAyLjMgMjUuOSA4LjkgNi4zIDQuMSAxMS4zIDQuNCAyMi42IDkuMyA4LjQgMy41IDEzLjcgOS43IDEwLjUgMTguMi0yLjYgNy4xLTExIDE0LjQtMjIuNyAxOC4xLTExLjEgMy42LTE5LjggMTYtMzguMiAxNC45LTMuOS0uMi03LTEtOS42LTIuMS04LTMuNS0xMi4yLTEwLjQtMjAtMTUtOC42LTQuOC0xMy4yLTEwLjQtMTQuNy0xNS4zLTEuNC00LjkgMC05IDQuMi0xMi4zem0zLjMgMzM0Yy0yLjcgMzUuMS00My45IDM0LjQtNzUuMyAxOC0yOS45LTE1LjgtNjguNi02LjUtNzYuNS0yMS45LTIuNC00LjctMi40LTEyLjcgMi42LTI2LjR2LS4yYzIuNC03LjYuNi0xNi0uNi0yMy45LTEuMi03LjgtMS44LTE1IC45LTIwIDMuNS02LjcgOC41LTkuMSAxNC44LTExLjMgMTAuMy0zLjcgMTEuOC0zLjQgMTkuNi05LjkgNS41LTUuNyA5LjUtMTIuOSAxNC4zLTE4IDUuMS01LjUgMTAtOC4xIDE3LjctNi45IDguMSAxLjIgMTUuMSA2LjggMjEuOSAxNmwxOS42IDM1LjZjOS41IDE5LjkgNDMuMSA0OC40IDQxIDY4Ljl6bS0xLjQtMjUuOWMtNC4xLTYuNi05LjYtMTMuNi0xNC40LTE5LjYgNy4xIDAgMTQuMi0yLjIgMTYuNy04LjkgMi4zLTYuMiAwLTE0LjktNy40LTI0LjktMTMuNS0xOC4yLTM4LjMtMzIuNS0zOC4zLTMyLjUtMTMuNS04LjQtMjEuMS0xOC43LTI0LjYtMjkuOXMtMy0yMy4zLS4zLTM1LjJjNS4yLTIyLjkgMTguNi00NS4yIDI3LjItNTkuMiAyLjMtMS43LjggMy4yLTguNyAyMC44LTguNSAxNi4xLTI0LjQgNTMuMy0yLjYgODIuNC42LTIwLjcgNS41LTQxLjggMTMuOC02MS41IDEyLTI3LjQgMzcuMy03NC45IDM5LjMtMTEyLjcgMS4xLjggNC42IDMuMiA2LjIgNC4xIDQuNiAyLjcgOC4xIDYuNyAxMi42IDEwLjMgMTIuNCAxMCAyOC41IDkuMiA0Mi40IDEuMiA2LjItMy41IDExLjItNy41IDE1LjktOSA5LjktMy4xIDE3LjgtOC42IDIyLjMtMTUgNy43IDMwLjQgMjUuNyA3NC4zIDM3LjIgOTUuNyA2LjEgMTEuNCAxOC4zIDM1LjUgMjMuNiA2NC42IDMuMy0uMSA3IC40IDEwLjkgMS40IDEzLjgtMzUuNy0xMS43LTc0LjItMjMuMy04NC45LTQuNy00LjYtNC45LTYuNi0yLjYtNi41IDEyLjYgMTEuMiAyOS4yIDMzLjcgMzUuMiA1OSAyLjggMTEuNiAzLjMgMjMuNy40IDM1LjcgMTYuNCA2LjggMzUuOSAxNy45IDMwLjcgMzQuOC0yLjItLjEtMy4yIDAtNC4yIDAgMy4yLTEwLjEtMy45LTE3LjYtMjIuOC0yNi4xLTE5LjYtOC42LTM2LTguNi0zOC4zIDEyLjUtMTIuMSA0LjItMTguMyAxNC43LTIxLjQgMjcuMy0yLjggMTEuMi0zLjYgMjQuNy00LjQgMzkuOS0uNSA3LjctMy42IDE4LTYuOCAyOS0zMi4xIDIyLjktNzYuNyAzMi45LTExNC4zIDcuMnptMjU3LjQtMTEuNWMtLjkgMTYuOC00MS4yIDE5LjktNjMuMiA0Ni41LTEzLjIgMTUuNy0yOS40IDI0LjQtNDMuNiAyNS41cy0yNi41LTQuOC0zMy43LTE5LjNjLTQuNy0xMS4xLTIuNC0yMy4xIDEuMS0zNi4zIDMuNy0xNC4yIDkuMi0yOC44IDkuOS00MC42LjgtMTUuMiAxLjctMjguNSA0LjItMzguNyAyLjYtMTAuMyA2LjYtMTcuMiAxMy43LTIxLjEuMy0uMi43LS4zIDEtLjUuOCAxMy4yIDcuMyAyNi42IDE4LjggMjkuNSAxMi42IDMuMyAzMC43LTcuNSAzOC40LTE2LjMgOS0uMyAxNS43LS45IDIyLjYgNS4xIDkuOSA4LjUgNy4xIDMwLjMgMTcuMSA0MS42IDEwLjYgMTEuNiAxNCAxOS41IDEzLjcgMjQuNnpNMTczLjMgMTQ4LjdjMiAxLjkgNC43IDQuNSA4IDcuMSA2LjYgNS4yIDE1LjggMTAuNiAyNy4zIDEwLjYgMTEuNiAwIDIyLjUtNS45IDMxLjgtMTAuOCA0LjktMi42IDEwLjktNyAxNC44LTEwLjRzNS45LTYuMyAzLjEtNi42LTIuNiAyLjYtNiA1LjFjLTQuNCAzLjItOS43IDcuNC0xMy45IDkuOC03LjQgNC4yLTE5LjUgMTAuMi0yOS45IDEwLjJzLTE4LjctNC44LTI0LjktOS43Yy0zLjEtMi41LTUuNy01LTcuNy02LjktMS41LTEuNC0xLjktNC42LTQuMy00LjktMS40LS4xLTEuOCAzLjcgMS43IDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHlmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDgxLjFoNzcuOHYyMDguN2MwIDMzLjEgMTUgNTIuOCAyNy4yIDYxLTEyLjcgMTEuMS01MS4yIDIwLjktODAuMi0yLjhDNy44IDMzNCAwIDMxMC43IDAgMjg5VjgxLjF6bTQ4NS45IDE3My41di0yMmgyMy44di03Ni44aC0yNi4xYy0xMC4xLTQ2LjMtNTEuMi04MC43LTEwMC4zLTgwLjctNTYuNiAwLTEwMi43IDQ2LTEwMi43IDEwMi43VjM1N2MxNiAyLjMgMzUuNC0uMyA1MS43LTE0IDE3LjEtMTQgMjQuOC0zNy4yIDI0LjgtNTl2LTYuN2gzOC44di03Ni44aC0zOC44di0yMy4zYzAtMzQuNiA1Mi4yLTM0LjYgNTIuMiAwdjc3LjFjMCA1Ni42IDQ2IDEwMi43IDEwMi43IDEwMi43di03Ni41Yy0xNC41IDAtMjYuMS0xMS43LTI2LjEtMjUuOXptLTI5NC4zLTk5djExM2MwIDE1LjQtMjMuOCAxNS40LTIzLjggMHYtMTEzSDkxdjEzMi43YzAgMjMuOCA4IDU0IDQ1IDYzLjkgMzcgOS44IDU4LjItMTAuNiA1OC4yLTEwLjYtMi4xIDEzLjQtMTQuNSAyMy4zLTM0LjkgMjUuMy0xNS41IDEuNi0zNS4yLTMuNi00NS03Ljh2NzAuM2MyNS4xIDcuNSA1MS41IDkuOCA3Ny42IDQuNyA0Ny4xLTkuMSA3Ni44LTQ4LjQgNzYuOC0xMDAuOFYxNTUuMWgtNzcuMXYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnZW50byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDUuNyAxMjcuOVYzODRsLTYzLjQgMzYuNVYxNjQuN0wyMjMuOCA3My4xIDY1LjIgMTY0LjdsLjQgMjU1LjlMMi4zIDM4NFYxMjguMUwyMjQuMiAwbDIyMS41IDEyNy45ek0yNTUuNiA0MjAuNUwyMjQgNDM4LjlsLTMxLjgtMTguMnYtMjU2bC02My4zIDM2LjYuMSAyNTUuOSA5NC45IDU0LjkgOTUuMS01NC45di0yNTZsLTYzLjQtMzYuNnYyNTUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFpbGNoaW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMC42MSAyNDMuNTJhMzYuMTUgMzYuMTUgMCAwIDEgOS4zIDBjMS42Ni0zLjgzIDEuOTUtMTAuNDMuNDUtMTcuNjEtMi4yMy0xMC42Ny01LjI1LTE3LjE0LTExLjQ4LTE2LjEzcy02LjQ3IDguNzQtNC4yNCAxOS40MmMxLjI2IDYgMy40OSAxMS4xNCA2IDE0LjMyek0yNzcuMDUgMjUyYzQuNDcgMiA3LjIgMy4yNiA4LjI4IDIuMTMgMS44OS0xLjk0LTMuNDgtOS4zOS0xMi4xMi0xMy4wOWEzMS40NCAzMS40NCAwIDAgMC0zMC42MSAzLjY4Yy0zIDIuMTgtNS44MSA1LjIyLTUuNDEgNy4wNi44NSAzLjc0IDEwLTIuNzEgMjIuNi0zLjQ4IDctLjQ0IDEyLjggMS43NSAxNy4yNiAzLjcxem0tOSA1LjEzYy05LjA3IDEuNDItMTUgNi41My0xMy40NyAxMC4xLjkuMzQgMS4xNy44MSA1LjIxLS44MWEzNyAzNyAwIDAgMSAxOC43Mi0xLjk1YzIuOTIuMzQgNC4zMS41MiA0Ljk0LS40OSAxLjQ2LTIuMjItNS43MS04LTE1LjM5LTYuODV6bTU0LjE3IDE3LjFjMy4zOC02Ljg3LTEwLjktMTMuOTMtMTQuMy03czEwLjkyIDEzLjg4IDE0LjMyIDYuOTd6bTE1LjY2LTIwLjQ3Yy03LjY2LS4xMy03Ljk1IDE1LjgtLjI2IDE1LjkzczcuOTgtMTUuODEuMjgtMTUuOTZ6bS0yMTguNzkgNzguOWMtMS4zMi4zMS02IDEuNDUtOC40Ny0yLjM1LTUuMi04IDExLjExLTIwLjM4IDMtMzUuNzctOS4xLTE3LjQ3LTI3LjgyLTEzLjU0LTM1LjA1LTUuNTQtOC43MSA5LjYtOC43MiAyMy41NC01IDI0LjA4IDQuMjcuNTcgNC4wOC02LjQ3IDcuMzgtMTEuNjNhMTIuODMgMTIuODMgMCAwIDEgMTcuODUtMy43MmMxMS41OSA3LjU5IDEuMzcgMTcuNzYgMi4yOCAyOC42MiAxLjM5IDE2LjY4IDE4LjQyIDE2LjM3IDIxLjU4IDlhMi4wOCAyLjA4IDAgMCAwLS4yLTIuMzNjLjAzLjg5LjY4LTEuMy0zLjM1LS4zOXptMjk5LjcyLTE3LjA3Yy0zLjM1LTExLjczLTIuNTctOS4yMi02Ljc4LTIwLjUyIDIuNDUtMy42NyAxNS4yOS0yNC0zLjA3LTQzLjI1LTEwLjQtMTAuOTItMzMuOS0xNi41NC00MS4xLTE4LjU0LTEuNS0xMS4zOSA0LjY1LTU4LjctMjEuNTItODMgMjAuNzktMjEuNTUgMzMuNzYtNDUuMjkgMzMuNzMtNjUuNjUtLjA2LTM5LjE2LTQ4LjE1LTUxLTEwNy40Mi0yNi40N2wtMTIuNTUgNS4zM2MtLjA2LS4wNS0yMi43MS0yMi4yNy0yMy4wNS0yMi41N0MxNjkuNS0xOC00MS43NyAyMTYuODEgMjUuNzggMjczLjg1bDE0Ljc2IDEyLjUxYTcyLjQ5IDcyLjQ5IDAgMCAwLTQuMSAzMy41YzMuMzYgMzMuNCAzNiA2MC40MiA2Ny41MyA2MC4zOCA1Ny43MyAxMzMuMDYgMjY3LjkgMTMzLjI4IDMyMi4yOSAzIDEuNzQtNC40NyA5LjExLTI0LjYxIDkuMTEtNDIuMzhzLTEwLjA5LTI1LjI3LTE2LjUzLTI1LjI3em0tMzE2IDQ4LjE2Yy0yMi44Mi0uNjEtNDcuNDYtMjEuMTUtNDkuOTEtNDUuNTEtNi4xNy02MS4zMSA3NC4yNi03NS4yNyA4NC0xMi4zMyA0LjU0IDI5LjY0LTQuNjcgNTguNDktMzQuMTIgNTcuODF6TTg0LjMgMjQ5LjU1QzY5LjE0IDI1Mi41IDU1Ljc4IDI2MS4wOSA0Ny42IDI3M2MtNC44OC00LjA3LTE0LTEyLTE1LjU5LTE1LTEzLjAxLTI0Ljg1IDE0LjI0LTczIDMzLjMtMTAwLjIxQzExMi40MiA5MC41NiAxODYuMTkgMzkuNjggMjIwLjM2IDQ4LjkxYzUuNTUgMS41NyAyMy45NCAyMi44OSAyMy45NCAyMi44OXMtMzQuMTUgMTguOTQtNjUuOCA0NS4zNWMtNDIuNjYgMzIuODUtNzQuODkgODAuNTktOTQuMiAxMzIuNHpNMzIzLjE4IDM1MC43cy0zNS43NCA1LjMtNjkuNTEtNy4wN2M2LjIxLTIwLjE2IDI3IDYuMSA5Ni40LTEzLjgxIDE1LjI5LTQuMzggMzUuMzctMTMgNTEtMjUuMzVhMTAyLjg1IDEwMi44NSAwIDAgMSA3LjEyIDI0LjI4YzMuNjYtLjY2IDE0LjI1LS41MiAxMS40NCAxOC4xLTMuMjkgMTkuODctMTEuNzMgMzYtMjUuOTMgNTAuODRBMTA2Ljg2IDEwNi44NiAwIDAgMSAzNjIuNTUgNDIxYTEzMi40NSAxMzIuNDUgMCAwIDEtMjAuMzQgOC41OGMtNTMuNTEgMTcuNDgtMTA4LjMtMS43NC0xMjYtNDNhNjYuMzMgNjYuMzMgMCAwIDEtMy41NS05Ljc0Yy03LjUzLTI3LjItMS4xNC01OS44MyAxOC44NC04MC4zNyAxLjIzLTEuMzEgMi40OC0yLjg1IDIuNDgtNC43OWE4LjQ1IDguNDUgMCAwIDAtMS45Mi00LjU0Yy03LTEwLjEzLTMxLjE5LTI3LjQtMjYuMzMtNjAuODMgMy41LTI0IDI0LjQ5LTQwLjkxIDQ0LjA3LTM5LjkxbDUgLjI5YzguNDguNSAxNS44OSAxLjU5IDIyLjg4IDEuODggMTEuNjkuNSAyMi4yLTEuMTkgMzQuNjQtMTEuNTYgNC4yLTMuNSA3LjU3LTYuNTQgMTMuMjYtNy41MWExNy40NSAxNy40NSAwIDAgMSAxMy42IDIuMjRjMTAgNi42NCAxMS40IDIyLjczIDExLjkyIDM0LjQ5LjI5IDYuNzIgMS4xIDIzIDEuMzggMjcuNjMuNjMgMTAuNjcgMy40MyAxMi4xNyA5LjExIDE0IDMuMTkgMS4wNSA2LjE1IDEuODMgMTAuNTEgMy4wNiAxMy4yMSAzLjcxIDIxIDcuNDggMjYgMTIuMzFhMTYuMzggMTYuMzggMCAwIDEgNC43NCA5LjI5YzEuNTYgMTEuMzctOC44MiAyNS40LTM2LjMxIDM4LjE2LTQ2LjcxIDIxLjY4LTkzLjY4IDE0LjQ1LTEwMC40OCAxMy42OC0yMC4xNS0yLjcxLTMxLjYzIDIzLjMyLTE5LjU1IDQxLjE1IDIyLjY0IDMzLjQxIDEyMi40IDIwIDE1MS4zNy0yMS4zNS42OS0xIC4xMi0xLjU5LS43My0xLTQxLjc3IDI4LjU4LTk3LjA2IDM4LjIxLTEyOC40NiAyNi00Ljc3LTEuODUtMTQuNzMtNi40NC0xNS45NC0xNi42NyA0My42IDEzLjQ5IDcxIC43NCA3MSAuNzRzMi4wMy0yLjc5LS41Ni0yLjUzem0tNjguNDctNS43em0tODMuNC0xODcuNWMxNi43NC0xOS4zNSAzNy4zNi0zNi4xOCA1NS44My00NS42M2EuNzMuNzMgMCAwIDEgMSAxYy0xLjQ2IDIuNjYtNC4yOSA4LjM0LTUuMTkgMTIuNjVhLjc1Ljc1IDAgMCAwIDEuMTYuNzljMTEuNDktNy44MyAzMS40OC0xNi4yMiA0OS0xNy4zYS43Ny43NyAwIDAgMSAuNTIgMS4zOCA0MS44NiA0MS44NiAwIDAgMC03LjcxIDcuNzQuNzUuNzUgMCAwIDAgLjU5IDEuMTljMTIuMzEuMDkgMjkuNjYgNC40IDQxIDEwLjc0Ljc2LjQzLjIyIDEuOTEtLjY0IDEuNzItNjkuNTUtMTUuOTQtMTIzLjA4IDE4LjUzLTEzNC41IDI2LjgzYS43Ni43NiAwIDAgMS0xLTEuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hbmRhbG9yaWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMi4yNyA1MTEuODljLTEtMy4yNi0xLjY5LTE1LjgzLTEuMzktMjQuNTguNTUtMTUuODkgMS0yNC43MiAxLjQtMjguNzYuNjQtNi4yIDIuODctMjAuNzIgMy4yOC0yMS4zOC42LTEgLjQtMjcuODctLjI0LTMzLjEzLS4zMS0yLjU4LS42My0xMS45LS42OS0yMC43My0uMTMtMTYuNDctLjUzLTIwLjEyLTIuNzMtMjQuNzYtMS4xLTIuMzItMS4yMy0zLjg0LTEtMTEuNDNhOTIuMzggOTIuMzggMCAwIDAtLjM0LTEyLjcxYy0yLTEzLTMuNDYtMjcuNy0zLjI1LTMzLjlzLjQzLTcuMTUgMi4wNi05LjY3YzMuMDUtNC43MSA2LjUxLTE0IDguNjItMjMuMjcgMi4yNi05Ljg2IDMuODgtMTcuMTggNC41OS0yMC43NGExMDkuNTQgMTA5LjU0IDAgMCAxIDQuNDItMTUuMDVjMi4yNy02LjI1IDIuNDktMTUuMzkuMzctMTUuMzktLjMgMC0xLjM4IDEuMjItMi40MSAyLjcxcy00Ljc2IDQuOC04LjI5IDcuMzZjLTguMzcgNi4wOC0xMS43IDkuMzktMTIuNjYgMTIuNThzLTEgNy4yMy0uMTYgNy43NmMuMzQuMjEgMS4yOSAyLjQgMi4xMSA0Ljg4YTI4LjgzIDI4LjgzIDAgMCAxIC43MiAxNS4zNmMtLjM5IDEuNzctMSA1LjQ3LTEuNDYgOC4yM3MtMSA2LjQ2LTEuMjUgOC4yMmE5Ljg1IDkuODUgMCAwIDEtMS41NSA0LjI2Yy0xIDEtMS4xNC45MS0yLjA1LS41M2ExNC44NyAxNC44NyAwIDAgMS0xLjQ0LTQuNzVjLS4yNS0xLjc0LTEuNjMtNy4xMS0zLjA4LTExLjkzLTMuMjgtMTAuOS0zLjUyLTE2LjE1LTEtMjFhMTQuMjQgMTQuMjQgMCAwIDAgMS42Ny00LjYxYzAtMi4zOS0yLjItNS4zMi03LjQxLTkuODktNy02LjE4LTguNjMtNy45Mi0xMC4yMy0xMS4zLTEuNzEtMy42LTMuMDYtNC4wNi00LjU0LTEuNTQtMS43OCAzLTIuNiA5LjExLTMgMjJsLS4zNCAxMi4xOSAyIDIuMjVjMy4yMSAzLjcgMTIuMDcgMTYuNDUgMTMuNzggMTkuODMgMy40MSA2Ljc0IDQuMzQgMTEuNjkgNC40MSAyMy41NnMuOTUgMjIuNzUgMiAyNC43MWMuMzYuNjYuNTEgMS4zNS4zNCAxLjUycy40MSAyLjA5IDEuMjkgNC4yN2EzOC4xNCAzOC4xNCAwIDAgMSAyLjA2IDkgOTEgOTEgMCAwIDAgMS43MSAxMC4zN2MyLjIzIDkuNTYgMi43NyAxNC4wOCAyLjM5IDIwLjE0LS4yIDMuMjctLjUzIDExLjA3LS43MyAxNy4zMi0xLjMxIDQxLjc2LTEuODUgNTgtMiA2MS4yMS0uMTIgMi0uMzkgMTEuNTEtLjYgMjEuMDctLjM2IDE2LjMtMS4zIDI3LjM3LTIuNDIgMjguNjUtLjY0LjczLTguMDctNC45MS0xMi41Mi05LjQ5LTMuNzUtMy44Ny00LTQuNzktMi44My05Ljk1LjctMyAyLjI2LTE4LjI5IDMuMzMtMzIuNjIuMzYtNC43OC44MS0xMC41IDEtMTIuNzEuODMtOS4zNyAxLjY2LTIwLjM1IDIuNjEtMzQuNzguNTYtOC40NiAxLjMzLTE2LjQ0IDEuNzItMTcuNzNzLjg5LTkuODkgMS4xMy0xOS4xMWwuNDMtMTYuNzctMi4yNi00LjNjLTEuNzItMy4yOC00Ljg3LTYuOTQtMTMuMjItMTUuMzQtNi02LjA3LTExLjg0LTEyLjMtMTIuOTEtMTMuODVsLTEuOTUtMi44MS43NS0xMC45YzEuMDktMTUuNzEgMS4xLTQ4LjU3IDAtNTkuMDZsLS44OS04LjctMy4yOC00LjUyYy01Ljg2LTguMDgtNS44LTcuNzUtNi4yMi0zMy4yNy0uMS02LjA3LS4zOC0xMS41LS42My0xMi4wNi0uODMtMS44Ny0zLjA1LTIuNjYtOC41NC0zLjA1LTguODYtLjYyLTExLTEuOS0yMy44NS0xNC41NS02LjE1LTYtMTIuMzQtMTItMTMuNzUtMTMuMTktMi44MS0yLjQyLTIuNzktMi0uNTYtOS42M2wxLjM1LTQuNjUtMS42OS0zYTMyLjIyIDMyLjIyIDAgMCAwLTIuNTktNC4wN2MtMS4zMy0xLjUxLTUuNS0xMC44OS02LTEzLjQ5YTQuMjQgNC4yNCAwIDAgMSAuODctMy45YzIuMjMtMi44NiAzLjQtNS42OCA0LjQ1LTEwLjczIDIuMzMtMTEuMTkgNy43NC0yNi4wOSAxMC42LTI5LjIyIDMuMTgtMy40NyA3LjctMSA5LjQxIDUgMS4zNCA0Ljc5IDEuMzcgOS43OS4xIDE4LjU1YTEwMS4yIDEwMS4yIDAgMCAwLTEgMTEuMTFjMCA0IC4xOSA0LjY5IDIuMjUgNy4zOSAzLjMzIDQuMzcgNy43MyA3LjQxIDE1LjIgMTAuNTJhMTguNjcgMTguNjcgMCAwIDEgNC43MiAyLjg1YzExLjE3IDEwLjcyIDE4LjYyIDE2LjE4IDIyLjk1IDE2Ljg1IDUuMTguOCA4IDQuNTQgMTAgMTMuMzkgMS4zMSA1LjY1IDQgMTEuMTQgNS40NiAxMS4xNGE5LjM4IDkuMzggMCAwIDAgMy4zMy0xLjM5YzItMS4yMiAyLjI1LTEuNzMgMi4yNS00LjE4YTEzMi44OCAxMzIuODggMCAwIDAtMi0xNy44NGMtLjM3LTEuNjYtLjc4LTQuMDYtLjkzLTUuMzVzLS42MS0zLjg1LTEtNS42OWMtMi41NS0xMS4xNi0zLjY1LTE1LjQ2LTQuMS0xNi0xLjU1LTItNC4wOC0xMC4yLTQuOTMtMTUuOTItMS42NC0xMS4xMS00LTE0LjIzLTEyLjkxLTE3LjM5QTQzLjE1IDQzLjE1IDAgMCAxIDE2NS4yNCA3OGMtMS4xNS0xLTQtMy4yMi02LjM1LTUuMDZzLTQuNDEtMy41My00LjYtMy43NmEyMi43IDIyLjcgMCAwIDAtMi42OS0yYy02LjI0LTQuMjItOC44NC03LTExLjI2LTEybC0yLjQ0LTUtLjIyLTEzLS4yMi0xMyA2LjkxLTYuNTVjMy45NS0zLjc1IDguNDgtNy4zNSAxMC41OS04LjQzIDMuMzEtMS42OSA0LjQ1LTEuODkgMTEuMzctMiA4LjUzLS4xOSAxMC4xMiAwIDExLjY2IDEuNTZzMS4zNiA2LjQtLjI5IDguNWE2LjY2IDYuNjYgMCAwIDAtMS4zNCAyLjMyYzAgLjU4LTIuNjEgNC45MS01LjQyIDlhMzAuMzkgMzAuMzkgMCAwIDAtMi4zNyA2LjgyYzIwLjQ0IDEzLjM5IDIxLjU1IDMuNzcgMTQuMDcgMjlMMTk0IDY2LjkyYzMuMTEtOC42NiA2LjQ3LTE3LjI2IDguNjEtMjYuMjIuMjktNy42My0xMi00LjE5LTE1LjQtOC42OC0yLjMzLTUuOTMgMy4xMy0xNC4xOCA2LjA2LTE5LjIgMS42LTIuMzQgNi42Mi00LjcgOC44Mi00LjE1Ljg4LjIyIDQuMTYtLjM1IDcuMzctMS4yOGE0NS4zIDQ1LjMgMCAwIDEgNy41NS0xLjY4IDI5LjU3IDI5LjU3IDAgMCAwIDYtMS4yOWMzLjY1LTEuMTEgNC41LTEuMTcgNi4zNS0uNGEyOS41NCAyOS41NCAwIDAgMCA1LjgyIDEuMzYgMTguMTggMTguMTggMCAwIDEgNiAxLjkxIDIyLjY3IDIyLjY3IDAgMCAwIDUgMi4xN2MyLjUxLjY4IDMgLjU3IDcuMDUtMS42N2w0LjM1LTIuNEwyNjguMzIgNWMxMC40NC0uNCAxMC44MS0uNDcgMTUuMjYtMi42OEwyODguMTYgMGwyLjQ2IDEuNDNjMS43NiAxIDMuMTQgMi43MyA0Ljg1IDYgMi4zNiA0LjUxIDIuMzggNC41OCAxLjM3IDcuMzctLjg4IDIuNDQtLjg5IDMuMy0uMSA2LjM5YTM1Ljc2IDM1Ljc2IDAgMCAwIDIuMSA1LjkxIDEzLjU1IDEzLjU1IDAgMCAxIDEuMzEgNGMuMzEgNC4zMyAwIDUuMy0yLjQxIDYuOTItMi4xNyAxLjQ3LTcgNy45MS03IDkuMzRhMTQuNzcgMTQuNzcgMCAwIDEtMS4wNyAzYy01IDExLjUxLTYuNzYgMTMuNTYtMTQuMjYgMTctOS4yIDQuMi0xMi4zIDUuMTktMTYuMjEgNS4xOS0zLjEgMC00IC4yNS00LjU0IDEuMjZhMTguMzMgMTguMzMgMCAwIDEtNC4wOSAzLjcxIDEzLjYyIDEzLjYyIDAgMCAwLTQuMzggNC43OCA1Ljg5IDUuODkgMCAwIDEtMi40OSAyLjkxIDYuODggNi44OCAwIDAgMC0yLjQ1IDEuNzEgNjcuNjIgNjcuNjIgMCAwIDEtNyA1LjM4Yy0zLjMzIDIuMzQtNi44NyA1LTcuODcgNkE3LjI3IDcuMjcgMCAwIDEgMjI0IDEwMGE1Ljc2IDUuNzYgMCAwIDAtMi4xMyAxLjY1Yy0xLjMxIDEuMzktMS40OSAyLjExLTEuMTQgNC42YTM2LjQ1IDM2LjQ1IDAgMCAwIDEuNDIgNS44OGMxLjMyIDMuOCAxLjMxIDcuODYgMCAxMC41N3MtLjg5IDYuNjUgMS4zNSA5LjU5YzIgMi42MyAyLjE2IDQuNTYuNzEgOC44NGEzMy40NSAzMy40NSAwIDAgMC0xLjA2IDguOTFjMCA0Ljg4LjIyIDYuMjggMS40NiA4LjM4czEuODIgMi40OCAzLjI0IDIuMzJjMi0uMjMgMi4zLTEuMDUgNC43MS0xMi4xMiAyLjE4LTEwIDMuNzEtMTEuOTIgMTMuNzYtMTcuMDggMi45NC0xLjUxIDcuNDYtNCAxMC01LjQ0czYuNzktMy42OSA5LjM3LTQuOTFhNDAuMDkgNDAuMDkgMCAwIDAgMTUuMjItMTEuNjdjNy4xMS04Ljc5IDEwLTE2LjIyIDEyLjg1LTMzLjNhMTguMzcgMTguMzcgMCAwIDEgMi44Ni03LjczIDIwLjM5IDIwLjM5IDAgMCAwIDIuODktNy4zMWMxLTUuMyAyLjg1LTkuMDggNS41OC0xMS41MSA0LjctNC4xOCA2LTEuMDkgNC41OSAxMC44Ny0uNDYgMy44Ni0xLjEgMTAuMzMtMS40NCAxNC4zOGwtLjYxIDcuMzYgNC40NSA0LjA5IDQuNDUgNC4wOS4xMSA4LjQyYy4wNiA0LjYzLjQ3IDkuNTMuOTIgMTAuODlsLjgyIDIuNDctNi40MyA2LjI4Yy04LjU0IDguMzMtMTIuODggMTMuOTMtMTYuNzYgMjEuNjEtMS43NyAzLjQ5LTMuNzQgNy4xMS00LjM4IDgtMi4xOCAzLjExLTYuNDYgMTMtOC43NiAyMC4yNmwtMi4yOSA3LjIyLTcgNi40OWMtMy44MyAzLjU3LTggNy4yNS05LjE3IDguMTctMy4wNSAyLjMyLTQuMjYgNS4xNS00LjI2IDEwYTE0LjYyIDE0LjYyIDAgMCAwIDEuNTkgNy4yNiA0MiA0MiAwIDAgMSAyLjA5IDQuODMgOS4yOCA5LjI4IDAgMCAwIDEuNTcgMi44OWMxLjQgMS41OSAxLjkyIDE2LjEyLjgzIDIzLjIyLS42OCA0LjQ4LTMuNjMgMTItNC43IDEyLTEuNzkgMC00LjA2IDkuMjctNS4wNyAyMC43NC0uMTggMi0uNjIgNS45NC0xIDguN3MtMSAxMC0xLjM1IDE2LjA1Yy0uNzcgMTIuMjItLjE5IDE4Ljc3IDIgMjMuMTUgMy40MSA2LjY5LjUyIDEyLjY5LTExIDIyLjg0bC00IDMuNDkuMDcgNS4xOWE0MC44MSA0MC44MSAwIDAgMCAxLjE0IDguODdjNC42MSAxNiA0LjczIDE2LjkyIDQuMzggMzcuMTMtLjQ2IDI2LjQtLjI2IDQwLjI3LjYzIDQ0LjE1YTYxLjMxIDYxLjMxIDAgMCAxIDEuMDggN2MuMTcgMiAuNjYgNS4zMyAxLjA4IDcuMzYuNDcgMi4yNi43OCAxMSAuNzkgMjIuNzR2MTkuMDZsLTEuODEgMi42M2MtMi43MSAzLjkxLTE1LjExIDEzLjU0LTE1LjQ5IDEyLjI5em0yOS41My00NS4xMWMtLjE4LS4zLS4zMy02Ljg3LS4zMy0xNC41OSAwLTE0LjA2LS44OS0yNy41NC0yLjI2LTM0LjQ1LS40LTItLjgxLTkuNy0uOS0xNy4wNi0uMTUtMTEuOTMtMS40LTI0LjM3LTIuNjQtMjYuMzgtLjY2LTEuMDctMy0xNy42Ni0zLTIxLjMgMC00LjIzIDEtNiA1LjI4LTkuMTNzNC44Ni0zLjE0IDUuNDgtLjcyYy4yOCAxLjEgMS40NSA1LjYyIDIuNiAxMCAzLjkzIDE1LjEyIDQuMTQgMTYuMjcgNC4wNSAyMS43NC0uMSA1Ljc4LS4xMyA2LjEzLTEuNzQgMTcuNzMtMSA3LjA3LTEuMTcgMTIuMzktMSAyOC40My4xNyAxOS40LS42NCAzNS43My0yIDQxLjI3LS43MSAyLjc4LTIuOCA1LjQ4LTMuNDMgNC40M3ptLTcxLTM3LjU4YTEwMSAxMDEgMCAwIDEtMS43My0xMC43OSAxMDAuNSAxMDAuNSAwIDAgMC0xLjczLTEwLjc5IDM3LjUzIDM3LjUzIDAgMCAxLTEtNi40OWMtLjMxLTMuMTktLjkxLTcuNDYtMS4zMy05LjQ4LTEtNC43OS0zLjM1LTE5LjM1LTMuNDItMjEuMDcgMC0uNzQtLjM0LTQuMDUtLjctNy4zNi0uNjctNi4yMS0uODQtMjcuNjctLjIyLTI4LjI5IDEtMSA2LjYzIDIuNzYgMTEuMzMgNy40M2w1LjI4IDUuMjUtLjQ1IDYuNDdjLS4yNSAzLjU2LS42IDEwLjIzLS43OCAxNC44M3MtLjQ5IDkuODctLjY3IDExLjcxLS42MSA5LjM2LS45NCAxNi43MmMtLjc5IDE3LjQxLTEuOTQgMzEuMjktMi42NSAzMmEuNjIuNjIgMCAwIDEtMS0uMTR6bS04Ny4xOC0yNjYuNTljMjEuMDcgMTIuNzkgMTcuODQgMTQuMTUgMjguNDkgMTcuNjYgMTMgNC4yOSAxOC44NyA3LjEzIDIzLjE1IDE2Ljg3QzExMS42IDIzMy4yOCA4Ni4yNSAyNTUgNzguNTUgMjY4Yy0zMSA1Mi02IDEwMS41OSA2Mi43NSA4Ny4yMS0xNC4xOCAyOS4yMy03OCAyOC42My05OC42OC00LjktMjQuNjgtMzkuOTUtMjIuMDktMTE4LjMgNjEtMTg3LjY2em0yMTAuNzkgMTc5YzU2LjY2IDYuODggODIuMzItMzcuNzQgNDYuNTQtODkuMjMgMCAwLTI2Ljg3LTI5LjM0LTY0LjI4LTY4IDMtMTUuNDUgOS40OS0zMi4xMiAzMC41Ny01My44MiA4OS4yIDYzLjUxIDkyIDE0MS42MSA5Mi40NiAxNDkuMzYgNC4zIDcwLjY0LTc4LjcgOTEuMTgtMTA1LjI5IDYxLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJrZG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTMuOCA1OS4xSDQ2LjJDMjAuNyA1OS4xIDAgNzkuOCAwIDEwNS4ydjMwMS41YzAgMjUuNSAyMC43IDQ2LjIgNDYuMiA0Ni4yaDU0Ny43YzI1LjUgMCA0Ni4yLTIwLjcgNDYuMS00Ni4xVjEwNS4yYzAtMjUuNC0yMC43LTQ2LjEtNDYuMi00Ni4xek0zMzguNSAzNjAuNkgyNzd2LTEyMGwtNjEuNSA3Ni45LTYxLjUtNzYuOXYxMjBIOTIuM1YxNTEuNGg2MS41bDYxLjUgNzYuOSA2MS41LTc2LjloNjEuNXYyMDkuMnptMTM1LjMgMy4xTDM4MS41IDI1Nkg0NDNWMTUxLjRoNjEuNVYyNTZINTY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXN0b2RvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzMgMTc5LjExYzAtOTcuMi02My43MS0xMjUuNy02My43MS0xMjUuNy02Mi41Mi0yOC43LTIyOC41Ni0yOC40LTI5MC40OCAwIDAgMC02My43MiAyOC41LTYzLjcyIDEyNS43IDAgMTE1LjctNi42IDI1OS40IDEwNS42MyAyODkuMSA0MC41MSAxMC43IDc1LjMyIDEzIDEwMy4zMyAxMS40IDUwLjgxLTIuOCA3OS4zMi0xOC4xIDc5LjMyLTE4LjFsLTEuNy0zNi45cy0zNi4zMSAxMS40LTc3LjEyIDEwLjFjLTQwLjQxLTEuNC04My00LjQtODkuNjMtNTRhMTAyLjU0IDEwMi41NCAwIDAgMS0uOS0xMy45Yzg1LjYzIDIwLjkgMTU4LjY1IDkuMSAxNzguNzUgNi43IDU2LjEyLTYuNyAxMDUtNDEuMyAxMTEuMjMtNzIuOSA5LjgtNDkuOCA5LTEyMS41IDktMTIxLjV6bS03NS4xMiAxMjUuMmgtNDYuNjN2LTExNC4yYzAtNDkuNy02NC01MS42LTY0IDYuOXY2Mi41aC00Ni4zM1YxOTdjMC01OC41LTY0LTU2LjYtNjQtNi45djExNC4ySDkwLjE5YzAtMTIyLjEtNS4yLTE0Ny45IDE4LjQxLTE3NSAyNS45LTI4LjkgNzkuODItMzAuOCAxMDMuODMgNi4xbDExLjYgMTkuNSAxMS42LTE5LjVjMjQuMTEtMzcuMSA3OC4xMi0zNC44IDEwMy44My02LjEgMjMuNzEgMjcuMyAxOC40IDUzIDE4LjQgMTc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXhjZG4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYxLjEgNDQyLjdoLTk3LjRMNDE1LjYgMjAwYzIuMy0xMC4yLjktMTkuNS00LjQtMjUuNy01LTYuMS0xMy43LTkuNi0yNC4yLTkuNmgtNDkuM2wtNTkuNSAyNzhoLTk3LjRsNTkuNS0yNzhoLTgzLjRsLTU5LjUgMjc4SDBsNTkuNS0yNzgtNDQuNi05NS40SDM4N2MzOS40IDAgNzUuMyAxNi4zIDk4LjMgNDQuOSAyMy4zIDI4LjYgMzEuOCA2Ny40IDIzLjYgMTA1LjlsLTQ3LjggMjIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1kYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4zNyAxNjAuNDFMNyAzNTJoNDMuOTFsNS41OS03OS44M0w4NC40MyAzNTJoNDQuNzFsMjUuNTQtNzcuNDMgNC43OSA3Ny40M0gyMDVsLTEyLjc5LTE5MS41OUgxNDYuN0wxMDYgMjc3Ljc0IDYzLjY3IDE2MC40MXptMjgxIDBoLTQ3LjlWMzUyaDQ3LjlzOTUgLjggOTQuMi05NS43OWMtLjc4LTk0LjIxLTk0LjE4LTk1Ljc4LTk0LjE4LTk1Ljc4em0tMS4yIDE0Ni40NlYyMDQuNzhzNDYgNC4yNyA0Ni44IDUwLjU3LTQ2Ljc4IDUxLjU0LTQ2Ljc4IDUxLjU0em0yMzguMjktNzQuMjRhNTYuMTYgNTYuMTYgMCAwIDAgOC0zOC4zMWMtNS4zNC0zNS43Ni01NS4wOC0zNC4zMi01NS4wOC0zNC4zMmgtNTEuOXYxOTEuNThINDgyczg3IDQuNzkgODctNjMuODVjMC00My4xNC0zMy41Mi01NS4wOC0zMy41Mi01NS4wOHptLTUxLjktMzEuOTRzMTMuNTctMS41OSAxNiA5LjU5YzEuNDMgNi42Ni00IDEyLTQgMTJoLTEydi0yMS41N3ptLS4xIDEwOS40NmwuMS0yNC45MlYyNjdoLjA4czQxLjU4LTQuNzMgNDEuMTkgMjIuNDNjLS4zMyAyNS42NS00MS4zNSAyMC43NC00MS4zNSAyMC43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkYXBwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTguMyAyMzguNGMzLjUtMTIuNSA2LjktMzMuNiAxMy4yLTMzLjYgOC4zIDEuOCA5LjYgMjMuNCAxOC42IDM2LjYgNC42LTIzLjUgNS4zLTg1LjEgMTQuMS04Ni43IDktLjcgMTkuNyA2Ni41IDIyIDc3LjUgOS45IDQuMSA0OC45IDYuNiA0OC45IDYuNiAxLjkgNy4zLTI0IDcuNi00MCA3LjgtNC42IDE0LjgtNS40IDI3LjctMTEuNCAyOC00LjcuMi04LjItMjguOC0xNy41LTQ5LjZsLTkuNCA2NS41Yy00LjQgMTMtMTUuNS0yMi41LTIxLjktMzkuMy0zLjMtLjEtNjIuNC0xLjYtNDcuNi03LjhsMzEtNXpNMjI4IDQ0OGMyMS4yIDAgMjEuMi0zMiAwLTMySDkyYy0yMS4yIDAtMjEuMiAzMiAwIDMyaDEzNnptLTI0IDY0YzIxLjIgMCAyMS4yLTMyIDAtMzJoLTg4Yy0yMS4yIDAtMjEuMiAzMiAwIDMyaDg4em0zNC4yLTE0MS41YzMuMi0xOC45IDUuMi0zNi40IDExLjktNDguOCA3LjktMTQuNyAxNi4xLTI4LjEgMjQtNDEgMjQuNi00MC40IDQ1LjktNzUuMiA0NS45LTEyNS41QzMyMCA2OS42IDI0OC4yIDAgMTYwIDBTMCA2OS42IDAgMTU1LjJjMCA1MC4yIDIxLjMgODUuMSA0NS45IDEyNS41IDcuOSAxMi45IDE2IDI2LjMgMjQgNDEgNi43IDEyLjUgOC43IDI5LjggMTEuOSA0OC45IDMuNSAyMSAzNi4xIDE1LjcgMzIuNi01LjEtMy42LTIxLjctNS42LTQwLjctMTUuMy01OC42QzY2LjUgMjQ2LjUgMzMgMjExLjMgMzMgMTU1LjIgMzMgODcuMyA5MCAzMiAxNjAgMzJzMTI3IDU1LjMgMTI3IDEyMy4yYzAgNTYuMS0zMy41IDkxLjMtNjYuMSAxNTEuNi05LjcgMTgtMTEuNyAzNy40LTE1LjMgNTguNi0zLjQgMjAuNiAyOSAyNi40IDMyLjYgNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWRpdW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgwLjUsNzQuMjYyQzgwLjgxMyw3NC4yNjIsMCwxNTUuNjMzLDAsMjU2UzgwLjgxOSw0MzcuNzM4LDE4MC41LDQzNy43MzgsMzYxLDM1Ni4zNzMsMzYxLDI1NiwyODAuMTkxLDc0LjI2MiwxODAuNSw3NC4yNjJabTI4OC4yNSwxMC42NDZjLTQ5Ljg0NSwwLTkwLjI0NSw3Ni42MTktOTAuMjQ1LDE3MS4wOTVzNDAuNDA2LDE3MS4xLDkwLjI1MSwxNzEuMSw5MC4yNTEtNzYuNjE5LDkwLjI1MS0xNzEuMUg1NTlDNTU5LDE2MS41LDUxOC42LDg0LjkwOCw0NjguNzUyLDg0LjkwOFptMTM5LjUwNiwxNy44MjFjLTE3LjUyNiwwLTMxLjczNSw2OC42MjgtMzEuNzM1LDE1My4yNzRzMTQuMiwxNTMuMjc0LDMxLjczNSwxNTMuMjc0UzY0MCwzNDAuNjMxLDY0MCwyNTZDNjQwLDE3MS4zNTEsNjI1Ljc4NSwxMDIuNzI5LDYwOC4yNTgsMTAyLjcyOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU0NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEzLjcgMjU2YzAgMTIxLjggODMuOSAyMjIuOCAxOTMuNSAyNDEuMS0xOC43IDQuNS0zOC4yIDYuOS01OC4yIDYuOUMxMTEuNCA1MDQgMCAzOTMgMCAyNTZTMTExLjQgOCAyNDguOSA4YzIwLjEgMCAzOS42IDIuNCA1OC4yIDYuOUMxOTcuNSAzMy4yIDExMy43IDEzNC4yIDExMy43IDI1Nm0yOTcuNCAxMDAuM2MtNzcuNyA1NS40LTE3OS42IDQ3LjUtMjQwLjQtMTQuNiA1LjUgMTQuMSAxMi43IDI3LjcgMjEuNyA0MC41IDYxLjYgODguMiAxODIuNCAxMDkuMyAyNjkuNyA0NyA4Ny4zLTYyLjMgMTA4LjEtMTg0LjMgNDYuNS0yNzIuNi05LTEyLjktMTkuMy0yNC4zLTMwLjUtMzQuMiAzNy40IDc4LjggMTAuNyAxNzguNS02NyAyMzMuOW0tMjE4LjgtMjQ0Yy0xLjQgMS0yLjcgMi4xLTQgMy4xIDY0LjMtMTcuOCAxMzUuOSA0IDE3OC45IDYwLjUgMzUuNyA0NyA0Mi45IDEwNi42IDI0LjQgMTU4IDU2LjctNTYuMiA2Ny42LTE0Mi4xIDIyLjMtMjAxLjgtNTAtNjUuNS0xNDkuMS03NC40LTIyMS42LTE5LjhNMjk2IDIyNGMtNC40IDAtOC0zLjYtOC04di00MGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2NDBjMCA0LjQtMy42IDgtOCA4aC00MGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGg0MGM0LjQgMCA4IDMuNiA4IDh2NDBjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtNDBjMC00LjQgMy42LTggOC04aDQwYzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04aC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVldHVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk5IDQxNC4zYzEuMSA1LjctMi4zIDExLjEtOCAxMi4zLTUuNCAxLjEtMTAuOS0yLjMtMTItOC0xLjEtNS40IDIuMy0xMS4xIDcuNy0xMi4zIDUuNC0xLjIgMTEuMSAyLjMgMTIuMyA4em0xNDMuMSA3MS40Yy02LjMgNC42LTggMTMuNC0zLjcgMjAgNC42IDYuNiAxMy40IDguMyAyMCAzLjcgNi4zLTQuNiA4LTEzLjQgMy40LTIwLTQuMi02LjUtMTMuMS04LjMtMTkuNy0zLjd6bS04Ni00NjIuM2M2LjMtMS40IDEwLjMtNy43IDguOS0xNC0xLjEtNi42LTcuNC0xMC42LTEzLjctOS4xLTYuMyAxLjQtMTAuMyA3LjctOS4xIDE0IDEuNCA2LjYgNy42IDEwLjYgMTMuOSA5LjF6TTM0LjQgMjI2LjNjLTEwLTYuOS0yMy43LTQuMy0zMC42IDYtNi45IDEwLTQuMyAyNCA1LjcgMzAuOSAxMCA3LjEgMjMuNyA0LjYgMzAuNi01LjcgNi45LTEwLjQgNC4zLTI0LjEtNS43LTMxLjJ6bTI3Mi0xNzAuOWMxMC42LTYuMyAxMy43LTIwIDcuNy0zMC4zLTYuMy0xMC42LTE5LjctMTQtMzAtNy43cy0xMy43IDIwLTcuNCAzMC42YzYgMTAuMyAxOS40IDEzLjcgMjkuNyA3LjR6bS0xOTEuMSA1OGM3LjctNS40IDkuNC0xNiA0LjMtMjMuN3MtMTUuNy05LjQtMjMuMS00LjNjLTcuNyA1LjQtOS40IDE2LTQuMyAyMy43IDUuMSA3LjggMTUuNiA5LjUgMjMuMSA0LjN6bTM3Mi4zIDE1NmMtNy40IDEuNy0xMi4zIDkuMS0xMC42IDE2LjkgMS40IDcuNCA4LjkgMTIuMyAxNi4zIDEwLjYgNy40LTEuNCAxMi4zLTguOSAxMC42LTE2LjYtMS41LTcuNC04LjktMTIuMy0xNi4zLTEwLjl6bTM5LjctNTYuOGMtMS4xLTUuNy02LjYtOS4xLTEyLTgtNS43IDEuMS05LjEgNi45LTggMTIuNiAxLjEgNS40IDYuNiA5LjEgMTIuMyA4IDUuNC0xLjUgOS4xLTYuOSA3LjctMTIuNnpNNDQ3IDEzOC45Yy04LjYgNi0xMC42IDE3LjctNC45IDI2LjMgNS43IDguNiAxNy40IDEwLjYgMjYgNC45IDguMy02IDEwLjMtMTcuNyA0LjYtMjYuMy01LjctOC43LTE3LjQtMTAuOS0yNS43LTQuOXptLTYuMyAxMzkuNGMyNi4zIDQzLjEgMTUuMSAxMDAtMjYuMyAxMjkuMS0xNy40IDEyLjMtMzcuMSAxNy43LTU2LjkgMTcuMS0xMiA0Ny4xLTY5LjQgNjQuNi0xMDUuMSAzMi42LTEuMS45LTIuNiAxLjctMy43IDIuOS0zOS4xIDI3LjEtOTIuMyAxNy40LTExOS40LTIyLjMtOS43LTE0LjMtMTQuNi0zMC42LTE1LjEtNDYuOS02NS40LTEwLjktOTAtOTQtNDEuMS0xMzkuNy0yOC4zLTQ2LjkuNi0xMDcuNCA1My40LTExNC45QzE1MS42IDcwIDIzNC4xIDM4LjYgMjkwLjEgODJjNjcuNC0yMi4zIDEzNi4zIDI5LjQgMTMwLjkgMTAxLjEgNDEuMSAxMi42IDUyLjggNjYuOSAxOS43IDk1LjJ6bS03MCA3NC4zYy0zLjEtMjAuNi00MC45LTQuNi00My4xLTI3LjEtMy4xLTMyIDQzLjctMTAxLjEgNDAtMTI4LTMuNC0yNC0xOS40LTI5LjEtMzMuNC0yOS40LTEzLjQtLjMtMTYuOSAyLTIxLjQgNC42LTIuOSAxLjctNi42IDQuOS0xMS43LS4zLTYuMy02LTExLjEtMTEuNy0xOS40LTEyLjktMTIuMy0yLTE3LjcgMi0yNi42IDkuNy0zLjQgMi45LTEyIDEyLjktMjAgOS4xLTMuNC0xLjctMTUuNC03LjctMjQtMTEuNC0xNi4zLTcuMS00MCA0LjYtNDguNiAyMC0xMi45IDIyLjktMzggMTEzLjEtNDEuNyAxMjUuMS04LjYgMjYuNiAxMC45IDQ4LjYgMzYuOSA0Ny4xIDExLjEtLjYgMTguMy00LjYgMjUuNC0xNy40IDQtNy40IDQxLjctMTA3LjcgNDQuNi0xMTIuNiAyLTMuNCA4LjktOCAxNC42LTUuMSA1LjcgMy4xIDYuOSA5LjQgNiAxNS4xLTEuMSA5LjctMjggNzAuOS0yOC45IDc3LjctMy40IDIyLjkgMjYuOSAyNi42IDM4LjYgNCAzLjctNy4xIDQ1LjctOTIuNiA0OS40LTk4LjMgNC4zLTYuMyA3LjQtOC4zIDExLjctOCAzLjEgMCA4LjMuOSA3LjEgMTAuOS0xLjQgOS40LTM1LjEgNzIuMy0zOC45IDg3LjctNC42IDIwLjYgNi42IDQxLjQgMjQuOSA1MC42IDExLjQgNS43IDYyLjUgMTUuNyA1OC41LTExLjF6bTUuNyA5Mi4zYy0xMC4zIDcuNC0xMi45IDIyLTUuNyAzMi42IDcuMSAxMC42IDIxLjQgMTMuMSAzMiA2IDEwLjYtNy40IDEzLjEtMjIgNi0zMi42LTcuNC0xMC42LTIxLjctMTMuNS0zMi4zLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZ2Fwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNC41IDIwOS42djY2LjJsMzMuNSAzMy41IDMzLjMtMzMuM3YtNjYuNGwtMzMuNC0zMy40ek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDUuMSA0MTQuNEwzNjcgNDQxLjZsLTI2LTE5LjJ2LTY1LjVsLTMzLjQtMzMuNC0zMy40IDMzLjR2NjUuNUwyNDggNDQxLjZsLTI2LjEtMTkuMnYtNjUuNWwtMzMuNC0zMy40LTMzLjUgMzMuNHY2NS41bC0yNi4xIDE5LjItMjYuMS0xOS4ydi04N2w1OS41LTU5LjVWMTg4bDU5LjUtNTkuNVY1Mi45bDI2LjEtMTkuMkwyNzQgNTIuOXY3NS42bDU5LjUgNTkuNXY4Ny42bDU5LjcgNTkuN3Y4Ny4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZW5kZWxleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQuNiAzMjUuMmMtMTIuMy0xMi40LTI5LjctMTkuMi00OC40LTE3LjItNDMuMy0xLTQ5LjctMzQuOS0zNy41LTk4LjggMjIuOC01Ny41LTE0LjktMTMxLjUtODcuNC0xMzAuOC03Ny40LjctODEuNyA4Mi0xMzAuOSA4Mi00OC4xIDAtNTQtODEuMy0xMzAuOS04Mi03Mi45LS44LTExMC4xIDczLjMtODcuNCAxMzAuOCAxMi4yIDYzLjkgNS44IDk3LjgtMzcuNSA5OC44LTIxLjItMi4zLTM3IDYuNS01MyAyMi41LTE5LjkgMTkuNy0xOS4zIDk0LjggNDIuNiAxMDIuNiA0Ny4xIDUuOSA4MS42LTQyLjkgNjEuMi04Ny44LTQ3LjMtMTAzLjcgMTg1LjktMTA2LjEgMTQ2LjUtOC4yLS4xLjEtLjIuMi0uMy40LTI2LjggNDIuOCA2LjggOTcuNCA1OC44IDk1LjIgNTIuMSAyLjEgODUuNC01Mi42IDU4LjgtOTUuMi0uMS0uMi0uMi0uMy0uMy0uNC0zOS40LTk3LjkgMTkzLjgtOTUuNSAxNDYuNSA4LjItNC42IDEwLTYuNyAyMS4zLTUuNyAzMyA0LjkgNTMuNCA2OC43IDc0LjEgMTA0LjkgMzUuMiAxNy44LTE0LjggMjMuMS02NS42IDAtODguM3ptLTMwMy45LTE5LjFoLS42Yy00My40IDAtNjIuOC0zNy41LTYyLjgtNjIuOCAwLTM0LjcgMjguMi02Mi44IDYyLjgtNjIuOGguNmMzNC43IDAgNjIuOCAyOC4xIDYyLjggNjIuOCAwIDI1LTE5LjIgNjIuOC02Mi44IDYyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1ldGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDMxNy45QzY0MCA0MDkuMiA2MDAuNiA0NjYuNCA1MjkuNyA0NjYuNEM0NjcuMSA0NjYuNCA0MzMuOSA0MzEuOCAzNzIuOCAzMjkuOEwzNDEuNCAyNzcuMkMzMzMuMSAyNjQuNyAzMjYuOSAyNTMgMzIwLjIgMjQyLjJDMzAwLjEgMjc2IDI3My4xIDMyNS4yIDI3My4xIDMyNS4yQzIwNi4xIDQ0MS44IDE2OC41IDQ2Ni40IDExNi4yIDQ2Ni40QzQzLjQyIDQ2Ni40IDAgNDA5LjEgMCAzMjAuNUMwIDE3Ny41IDc5Ljc4IDQyLjQgMTgzLjkgNDIuNEMyMzQuMSA0Mi40IDI3Ny43IDY3LjA4IDMyOC43IDEzMS45QzM2NS44IDgxLjggNDA2LjggNDIuNCA0NTkuMyA0Mi40QzU1OC40IDQyLjQgNjQwIDE2OC4xIDY0MCAzMTcuOUg2NDB6TTI4Ny40IDE5Mi4yQzI0NC41IDEzMC4xIDIxNi41IDExMS43IDE4MyAxMTEuN0MxMjEuMSAxMTEuNyA2OS4yMiAyMTcuOCA2OS4yMiAzMjEuN0M2OS4yMiAzNzAuMiA4Ny43IDM5Ny40IDExOC44IDM5Ny40QzE0OSAzOTcuNCAxNjcuOCAzNzguNCAyMjIgMjkzLjZDMjIyIDI5My42IDI0Ni43IDI1NC41IDI4Ny40IDE5Mi4yVjE5Mi4yek01MzEuMiAzOTcuNEM1NjMuNCAzOTcuNCA1NzguMSAzNjkuOSA1NzguMSAzMjIuNUM1NzguMSAxOTguMyA1MjMuOCA5Ny4wOCA0NTQuOSA5Ny4wOEM0MjEuNyA5Ny4wOCAzOTMuOCAxMjMgMzYwIDE3NS4xQzM2OS40IDE4OC45IDM3OS4xIDIwNC4xIDM4OS4zIDIyMC41TDQyNi44IDI4Mi45QzQ4NS41IDM3NyA1MDAuMyAzOTcuNCA1MzEuMiAzOTcuNEw1MzEuMiAzOTcuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9ibG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5OS4zNiwzNjIuMjNjMjkuNDktMzQuNjksNDcuMS03OC4zNCw0Ny4xLTEyNS43OUM0NDYuNDYsMTIzLjQ5LDM0Ni44NiwzMiwyMjQsMzJTMS41NCwxMjMuNDksMS41NCwyMzYuNDQsMTAxLjE0LDQ0MC44NywyMjQsNDQwLjg3YTIzOS4yOCwyMzkuMjgsMCwwLDAsNzkuNDQtMTMuNDQsNy4xOCw3LjE4LDAsMCwxLDguMTIsMi41NmMxOC41OCwyNS4wOSw0Ny42MSw0Mi43NCw3OS44OSw0OS45MmE0LjQyLDQuNDIsMCwwLDAsNS4yMi0zLjQzLDQuMzcsNC4zNywwLDAsMC0uODUtMy42Miw4Nyw4NywwLDAsMSwzLjY5LTExMC42OVpNMzI5LjUyLDIxMi40bC01Ny4zLDQzLjQ5TDI5MywzMjQuNzVhNi41LDYuNSwwLDAsMS05Ljk0LDcuMjJMMjI0LDI5MC45MiwxNjQuOTQsMzMyYTYuNTEsNi41MSwwLDAsMS05Ljk1LTcuMjJsMjAuNzktNjguODYtNTcuMy00My40OWE2LjUsNi41LDAsMCwxLDMuOC0xMS42OGw3MS44OC0xLjUxLDIzLjY2LTY3LjkyYTYuNSw2LjUsMCwwLDEsMTIuMjgsMGwyMy42Niw2Ny45Miw3MS44OCwxLjUxYTYuNSw2LjUsMCwwLDEsMy44OCwxMS42OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9zb2Z0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJoMjE0LjZ2MjE0LjZIMFYzMnptMjMzLjQgMEg0NDh2MjE0LjZIMjMzLjRWMzJ6TTAgMjY1LjRoMjE0LjZWNDgwSDBWMjY1LjR6bTIzMy40IDBINDQ4VjQ4MEgyMzMuNFYyNjUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWludGJpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03My4yIDUxMlY0MzguOUgzNjUuN1YzNjUuN2g3My4yVjIxOS40SDUxMlYwSDI5Mi42VjczLjFIMTQ2LjN2NzMuMkg3My4yVjQzOC45SDBWNTEySDczLjJ6bTczLjEtMjE5LjRoNzMuMnY3My4xSDE0Ni4zVjI5Mi42em03My4yLTczLjFoNzMuMXY3My4xSDIxOS40VjIxOS40em03My4xIDBWMTQ2LjNoNzMuMnY3My4xSDI5Mi42ek0zNjUuNyA3My4xaDczLjJ2NzMuMkgzNjUuN1Y3My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NHYzNDguOWMwIDU2LjIgODggNTguMSA4OCAwVjE3NC4zYzcuOS01Mi45IDg4LTUwLjQgODggNi41djE3NS4zYzAgNTcuOSA5NiA1OCA5NiAwVjI0MGM1LjMtNTQuNyA4OC01Mi41IDg4IDQuM3YyMy44YzAgNTkuOSA4OCA1Ni42IDg4IDBWNjRIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4Y2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEyLjk4IDM0Ni41NjZIMTc5Ljc4OVYxOTUuMTE0TDE4NS45NzMgMTczLjQ3SDE3NS4yNjJMMTM3LjEyNyAzNDYuNTY2SDc2LjEwNjlMMzcuNzMyMyAxNzMuNDdIMjcuMjc2TDMzLjE5MTMgMTk1LjExNFYzNDYuNTY2SDBWMTY1SDY1LjY1MDZMMTAyLjI0OCAzMzguMDk2SDExMC43NDdMMTQ3LjMyOSAxNjVIMjEyLjk4TDIxMi45OCAzNDYuNTY2Wk01NDQuNDU5IDI4My41ODlMNDU4LjQzNCAzNDUuNjU1VjMwNy41MzRMNTMxLjMyOSAyNTUuNzc2TDQ1OC40MzQgMjA0LjAxN1YxNjUuODk2TDU0NC40NTkgMjI4LjIzMUg1NTMuNzIxTDY0MCAxNjUuODk2VjIwNC4wMTdMNTY2Ljg2NiAyNTUuNzc2TDY0MCAzMDcuNTQ5VjM0NS42NTVMNTUzLjcyMSAyODMuNTg5SDU0NC40NTlaTTQzMC4xNTcgMjcyLjMxMUgyNDguMTEzVjIzOS4yNTVINDMwLjE1N1YyNzIuMzExWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQuNTcsNzYuMDdhNDUuNzEsNDUuNzEsMCwwLDAtNjcuNTEtNi40MWMtMTcuNTgsMTYuMTgtMTksNDMuNTItNC43NSw2Mi43N2w5MS43OCwxMjNMNDEuNzYsMzc5LjU4Yy0xNC4yMywxOS4yNS0xMy4xMSw0Ni41OSw0Ljc0LDYyLjc3QTQ1LjcxLDQ1LjcxLDAsMCwwLDExNCw0MzUuOTRMMjQyLjg5LDI2Mi43YTEyLjE0LDEyLjE0LDAsMCwwLDAtMTQuMjNaTTQ3MC4yNCwzNzkuNTgsMzc3LjkxLDI1NS40NWw5MS43OC0xMjNjMTQuMjItMTkuMjUsMTIuODMtNDYuNTktNC43NS02Mi43N2E0NS43MSw0NS43MSwwLDAsMC02Ny41MSw2LjQxbC0xMjgsMTcyLjEyYTEyLjE0LDEyLjE0LDAsMCwwLDAsMTQuMjNMMzk4LDQzNS45NGE0NS43MSw0NS43MSwwLDAsMCw2Ny41MSw2LjQxQzQ4My4zNSw0MjYuMTcsNDg0LjQ3LDM5OC44Myw0NzAuMjQsMzc5LjU4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXp1bmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkuMSAwIDI1NmMwIDEzNyAxMTEgMjQ4IDI0OCAyNDhzMjQ4LTExMSAyNDgtMjQ4QzQ5NiAxMTkuMSAzODUgOCAyNDggOHptLTgwIDM1MS45Yy0zMS40IDEwLjYtNTguOCAyNy4zLTgwIDQ4LjJWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjIzLjl6bTEyMC05LjljLTEyLjktMi0yNi4yLTMuMS0zOS44LTMuMS0xMy44IDAtMjcuMiAxLjEtNDAuMiAzLjFWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjE0em0xMjAgNTcuN2MtMjEuMi0yMC44LTQ4LjYtMzcuNC04MC00OFYxMzZjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MHYyNzEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9keCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTYgMjQxLjhsMzYuNyAyMy43VjQ4MGwtMTMzLTgzLjhMMzU2IDI0MS44ek00NDAgNzVIMjI2LjNsLTIzIDM3LjggMTUzLjUgOTYuNUw0NDAgNzV6bS04OSAxNDIuOEw1NS4yIDMydjIxNC41bDQ2IDI5TDM1MSAyMTcuOHpNOTcgMjk0LjJMOCA0MzdoMjEzLjdsMTI1LTIwMC41TDk3IDI5NC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25lcm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDM4NGgxMDguNEM0MTcgNDU1LjkgMzM4LjEgNTA0IDI0OCA1MDRTNzkgNDU1LjkgMzUuNiAzODRIMTQ0VjI1Ni4yTDI0OCAzNjFsMTA0LTEwNXYxMjh6TTg4IDMzNlYxMjhsMTU5LjQgMTU5LjRMNDA4IDEyOHYyMDhoNzQuOGM4LjUtMjUuMSAxMy4yLTUyIDEzLjItODBDNDk2IDExOSAzODUgOCAyNDggOFMwIDExOSAwIDI1NmMwIDI4IDQuNiA1NC45IDEzLjIgODBIODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5hcHN0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4LjMgMzczLjZjLTE0LjIgMTMuNi0zMS4zIDI0LjEtNTAuNCAzMC41LTE5LTYuNC0zNi4yLTE2LjktNTAuMy0zMC41aDEwMC43em00NC0xOTkuNmMyMC0xNi45IDQzLjYtMjkuMiA2OS42LTM2LjJWMjk5YzAgMjE5LjQtMzI4IDIxNy42LTMyOCAuM1YxMzcuN2MyNS45IDYuOSA0OS42IDE5LjYgNjkuNSAzNi40IDU2LjgtNDAgMTMyLjUtMzkuOSAxODguOS0uMXptLTIwOC44LTU4LjVjNjQuNC02MCAxNjQuMy02MC4xIDIyOC45LS4yLTcuMSAzLjUtMTMuOSA3LjMtMjAuNiAxMS41LTU4LjctMzAuNS0xMjkuMi0zMC40LTE4Ny45LjEtNi4zLTQtMTMuOS04LjItMjAuNC0xMS40ek00My44IDkzLjJ2NjkuM2MtNTguNCAzNi41LTU4LjQgMTIxLjEuMSAxNTguMyAyNi40IDI0NS4xIDM4MS43IDI0MC4zIDQwNy42IDEuNWwuMy0xLjdjNTguNy0zNi4zIDU4LjktMTIxLjcuMi0xNTguMlY5My4yYy0xNy4zLjUtMzQgMy01MC4xIDcuNC04Mi05MS41LTIyNS41LTkxLjUtMzA3LjUuMS0xNi4zLTQuNC0zMy4xLTctNTAuNi03LjV6TTI1OS4yIDM1MnMzNi0uMyA2MS4zLTEuNWMxMC4yLS41IDIxLjEtNCAyNS41LTYuNSAyNi4zLTE1LjEgMjUuNC0zOS4yIDI2LjItNDcuNC03OS41LS42LTk5LjktMy45LTExMyA1NS40em0tMTM1LjUtNTUuM2MuOCA4LjItLjEgMzIuMyAyNi4yIDQ3LjQgNC40IDIuNSAxNS4yIDYgMjUuNSA2LjUgMjUuMyAxLjEgNjEuMyAxLjUgNjEuMyAxLjUtMTMuMi01OS40LTMzLjctNTYuMS0xMTMtNTUuNHptMTY5LjEgMTIzLjRjLTMuMi01LjMtNi45LTcuMy02LjktNy4zLTI0LjggNy4zLTUyLjIgNi45LTc1LjkgMCAwIDAtMi45IDEuNS02LjQgNi42LTIuOCA0LjEtMy43IDkuNi0zLjcgOS42IDI5LjEgMTcuNiA2Ny4xIDE3LjYgOTYuMiAwLS4xLS4xLS4zLTQtMy4zLTguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmVvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTUuNDQgNTEyaC05NS4xMUwyMTIuMTIgMzU3LjQ2djkxLjFMMTI1LjY5IDUxMkgyOFYyOS44Mkw2OC40NyAwaDEwOC4wNWwxMjMuNzQgMTc2LjEzVjYzLjQ1TDM4Ni42OSAwaDk3LjY5djQ2MS41ek0zOC43NyAzNS4yN1Y0OTZsNzItNTIuODhWMTk0bDIxNS41IDMwNy42NGg4NC43OWw1Mi4zNS0zOC4xN2gtNzguMjdMNjkgMTN6bTgyLjU0IDQ2Ni42MWw4MC01OC43OHYtMTAxbC03OS43Ni0xMTQuNHYyMjAuOTRMNDkgNTAxLjg5aDcyLjM0ek04MC42MyAxMC43N2wzMTAuNiA0NDIuNTdoODIuMzdWMTAuNzdoLTc5Ljc1djMxNy41NkwxNzAuOTEgMTAuNzd6TTMxMSAxOTEuNjVsNzIgMTAyLjgxVjE1LjkzbC03MiA1M3YxMjIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5mY0RpcmVjdGlvbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMS44IDQ4OC42QzIxMy40IDQ5MS4xIDIxMy45IDQ5NC4yIDIxMy4yIDQ5Ny4xQzIxMi42IDUwMCAyMTAuOCA1MDIuNiAyMDguMyA1MDQuMkMyMDUuNyA1MDUuOCAyMDIuNyA1MDYuMyAxOTkuNyA1MDUuN0MxMzguMyA0OTEuOCA4NC4xIDQ1NS44IDQ3LjUzIDQwNC41QzEwLjk3IDM1My4yLTUuMzk1IDI5MC4zIDEuNTcgMjI3LjdDOC41MzYgMTY1IDM4LjM0IDEwNy4yIDg1LjI5IDY1LjIxQzEzMi4yIDIzLjIgMTkzLS4wMTMxIDI1NiAwQzI1Ny41IDAgMjU4LjEgLjI5MzEgMjYwLjMgLjg2MjdDMjYxLjcgMS40MzIgMjYyLjEgMi4yNjcgMjY0IDMuMzE5QzI2NS4xIDQuMzcxIDI2NS45IDUuNjE5IDI2Ni41IDYuOTkzQzI2NyA4LjM2NyAyNjcuMyA5LjgzOSAyNjcuMyAxMS4zMlYxMTIuM0wyOTEuOCA4Ni4zOUMyOTIuOCA4NS4zMSAyOTQgODQuNDQgMjk1LjQgODMuODRDMjk2LjcgODMuMjMgMjk4LjIgODIuOSAyOTkuNyA4Mi44NkMzMDEuMiA4Mi44MSAzMDIuNiA4My4wNiAzMDQgODMuNTlDMzA1LjQgODQuMTIgMzA2LjcgODQuOTIgMzA3LjggODUuOTRDMzA4LjggODYuOTYgMzA5LjcgODguMTggMzEwLjMgODkuNTRDMzEwLjkgOTAuODkgMzExLjMgOTIuMzUgMzExLjMgOTMuODRDMzExLjMgOTUuMzIgMzExLjEgOTYuOCAzMTAuNiA5OC4xOEMzMTAgOTkuNTcgMzA5LjIgMTAwLjggMzA4LjIgMTAxLjlMMjY0LjIgMTQ4LjVDMjYzLjEgMTQ5LjYgMjYxLjkgMTUwLjUgMjYwLjUgMTUxLjFDMjU5IDE1MS43IDI1Ny41IDE1MiAyNTUuMSAxNTJDMjU0LjUgMTUyIDI1Mi45IDE1MS43IDI1MS41IDE1MS4xQzI1MC4xIDE1MC41IDI0OC44IDE0OS42IDI0Ny44IDE0OC41TDIwMy43IDEwMS45QzIwMS43IDk5Ljc0IDIwMC42IDk2LjgzIDIwMC43IDkzLjg0QzIwMC43IDkwLjg0IDIwMiA4Ny4xIDIwNC4yIDg1Ljk0QzIwNi40IDgzLjg4IDIwOS4zIDgyLjc3IDIxMi4zIDgyLjg2QzIxNS4zIDgyLjk0IDIxOC4xIDg0LjIxIDIyMC4yIDg2LjM5TDI0NC43IDExMi40VjIyLjg5QzE4OC4zIDI1LjY0IDEzNC45IDQ4LjczIDk0LjIzIDg3Ljg3QzUzLjU4IDEyNyAyOC40OSAxNzkuNiAyMy42MSAyMzUuOEMxOC43MyAyOTIgMzQuMzggMzQ4LjEgNjcuNjggMzkzLjdDMTAwLjEgNDM5LjIgMTQ5LjcgNDcxLjIgMjA0LjcgNDgzLjZDMjA3LjYgNDg0LjMgMjEwLjIgNDg2LjEgMjExLjggNDg4LjZMMjExLjggNDg4LjZ6TTE3MS40IDEyNi4xQzE3MC42IDEyNy40IDE2OS41IDEyOC41IDE2OC4zIDEyOS4zQzE0Ny44IDE0My4yIDEzMS4xIDE2MS45IDExOS41IDE4My44QzEwNy45IDIwNS43IDEwMS44IDIzMC4xIDEwMS44IDI1NC45QzEwMS44IDI3OS43IDEwNy45IDMwNC4xIDExOS41IDMyNS4xQzEzMS4xIDM0Ny45IDE0Ny44IDM2Ni42IDE2OC4zIDM4MC41QzE3MC44IDM4Mi4yIDE3Mi41IDM4NC44IDE3MyAzODcuOEMxNzMuNiAzOTAuNyAxNzIuMSAzOTMuOCAxNzEuMyAzOTYuMkMxNjkuNiAzOTguNyAxNjYuMSA0MDAuNCAxNjQgNDAwLjFDMTYxLjEgNDAxLjUgMTU4IDQwMC45IDE1NS42IDM5OS4yQzEzMiAzODMuMiAxMTIuOCAzNjEuNyA5OS40NiAzMzYuNUM4Ni4xNSAzMTEuNCA3OS4xOSAyODMuNCA3OS4xOSAyNTQuOUM3OS4xOSAyMjYuNSA4Ni4xNSAxOTguNCA5OS40NiAxNzMuM0MxMTIuOCAxNDguMSAxMzIgMTI2LjYgMTU1LjYgMTEwLjZDMTU2LjggMTA5LjggMTU4LjIgMTA5LjIgMTU5LjYgMTA4LjhDMTYxLjEgMTA4LjUgMTYyLjYgMTA4LjUgMTY0LjEgMTA4LjhDMTY1LjUgMTA5IDE2Ni45IDEwOS42IDE2OC4yIDExMC40QzE2OS41IDExMS4yIDE3MC41IDExMi4zIDE3MS40IDExMy41QzE3Mi4yIDExNC43IDE3Mi44IDExNi4xIDE3My4xIDExNy42QzE3My40IDExOS4xIDE3My40IDEyMC42IDE3My4xIDEyMkMxNzIuOCAxMjMuNSAxNzIuMyAxMjQuOSAxNzEuNCAxMjYuMUgxNzEuNHpNMzQwLjkgMzgzLjVDMzQxLjcgMzgyLjMgMzQyLjggMzgxLjIgMzQzLjEgMzgwLjRWMzgwLjNDMzY0LjQgMzY2LjMgMzgxLjEgMzQ3LjYgMzkyLjcgMzI1LjdDNDA0LjIgMzAzLjkgNDEwLjIgMjc5LjUgNDEwLjIgMjU0LjhDNDEwLjIgMjMwLjEgNDA0LjIgMjA1LjcgMzkyLjcgMTgzLjhDMzgxLjEgMTYxLjEgMzY0LjQgMTQzLjMgMzQzLjEgMTI5LjNDMzQyLjggMTI4LjUgMzQxLjcgMTI3LjQgMzQwLjkgMTI2LjJDMzQwLjEgMTI0LjkgMzM5LjUgMTIzLjUgMzM5LjMgMTIyLjFDMzM4LjEgMTIwLjYgMzM5IDExOS4xIDMzOS4zIDExNy43QzMzOS42IDExNi4yIDM0MC4yIDExNC44IDM0MSAxMTMuNkMzNDEuOSAxMTIuNCAzNDIuMSAxMTEuMyAzNDQuMiAxMTAuNUMzNDUuNCAxMDkuNyAzNDYuOCAxMDkuMiAzNDguMyAxMDguOUMzNDkuOCAxMDguNiAzNTEuMiAxMDguNiAzNTIuNyAxMDguOUMzNTQuMiAxMDkuMiAzNTUuNSAxMDkuOCAzNTYuOCAxMTAuN0MzODAuMiAxMjYuNyAzOTkuNSAxNDguMiA0MTIuNyAxNzMuM0M0MjYgMTk4LjQgNDMyLjEgMjI2LjQgNDMyLjEgMjU0LjhDNDMyLjEgMjgzLjMgNDI2IDMxMS4zIDQxMi43IDMzNi40QzM5OS41IDM2MS41IDM4MC4yIDM4MyAzNTYuOCAzOTlDMzU1LjUgMzk5LjkgMzU0LjIgNDAwLjUgMzUyLjcgNDAwLjhDMzUxLjIgNDAxLjEgMzQ5LjggNDAxLjEgMzQ4LjMgNDAwLjhDMzQ2LjggNDAwLjUgMzQ1LjQgMzk5LjEgMzQ0LjIgMzk5LjJDMzQyLjEgMzk4LjQgMzQxLjkgMzk3LjMgMzQxIDM5Ni4xQzM0MC4yIDM5NC45IDMzOS42IDM5My41IDMzOS4zIDM5MkMzMzkgMzkwLjYgMzM4LjEgMzg5LjEgMzM5LjMgMzg3LjZDMzM5LjUgMzg2LjIgMzQwLjEgMzg0LjggMzQwLjkgMzgzLjVWMzgzLjV6TTMxMi4zIDYuMzA3QzM2OC41IDE5LjA0IDQxOC43IDUwLjI4IDQ1NSA5NS4wMUM0ODUuNCAxMzIuNiA1MDQuNiAxNzggNTEwLjMgMjI2QzUxNS45IDI3NCA1MDcuOSAzMjIuNyA0ODcuMSAzNjYuM0M0NjYuMiA0MDkuOSA0MzMuNSA0NDYuOCAzOTIuNiA0NzIuNkMzNTEuNyA0OTguMyAzMDQuNCA1MTIgMjU2IDUxMkMyNTQuNSA1MTIgMjUzLjEgNTExLjcgMjUxLjcgNTExLjFDMjUwLjMgNTEwLjYgMjQ5LjEgNTA5LjcgMjQ4IDUwOC43QzI0Ni4xIDUwNy42IDI0Ni4xIDUwNi40IDI0NS42IDUwNUMyNDUgNTAzLjYgMjQ0LjcgNTAyLjIgMjQ0LjcgNTAwLjdWNDAxLjVMMjIwLjIgNDI3LjVDMjE4LjEgNDI5LjcgMjE1LjMgNDMwLjEgMjEyLjMgNDMxLjFDMjA5LjMgNDMxLjIgMjA2LjQgNDMwIDIwNC4yIDQyNy4xQzIwMiA0MjUuOSAyMDAuNyA0MjMuMSAyMDAuNyA0MjAuMUMyMDAuNiA0MTcuMSAyMDEuNyA0MTQuMiAyMDMuNyA0MTJMMjQ3LjggMzY1LjRDMjQ5LjEgMzYzLjIgMjUyLjkgMzYyIDI1NS4xIDM2MkMyNTkuMSAzNjIgMjYyIDM2My4yIDI2NC4yIDM2NS40TDMwOC4yIDQxMkMzMTAuMyA0MTQuMiAzMTEuNCA0MTcuMSAzMTEuMyA0MjAuMUMzMTEuMiA0MjMuMSAzMDkuOSA0MjUuOSAzMDcuOCA0MjcuMUMzMDUuNiA0MzAgMzAyLjcgNDMxLjIgMjk5LjcgNDMxLjFDMjk2LjcgNDMwLjEgMjkzLjggNDI5LjcgMjkxLjggNDI3LjVMMjY3LjMgNDAxLjZWNDg5LjFDMzIzLjcgNDg2LjMgMzc3LjEgNDYzLjMgNDE3LjggNDI0LjFDNDU4LjUgMzg0LjEgNDgzLjYgMzMyLjQgNDg4LjUgMjc2LjJDNDkzLjMgMjE5LjEgNDc3LjcgMTYzLjkgNDQ0LjQgMTE4LjNDNDExLjEgNzIuNzUgMzYyLjQgNDAuNzkgMzA3LjQgMjguMzZDMzA1LjkgMjguMDMgMzA0LjYgMjcuNDIgMzAzLjMgMjYuNTdDMzAyLjEgMjUuNzEgMzAxLjEgMjQuNjMgMzAwLjMgMjMuMzdDMjk5LjUgMjIuMTIgMjk4LjEgMjAuNzIgMjk4LjcgMTkuMjZDMjk4LjUgMTcuOCAyOTguNSAxNi4zIDI5OC44IDE0Ljg1QzI5OS4yIDEzLjQxIDI5OS44IDEyLjA0IDMwMC42IDEwLjgyQzMwMS41IDkuNjEgMzAyLjYgOC41NzcgMzAzLjggNy43ODRDMzA1LjEgNi45OSAzMDYuNSA2LjQ1MSAzMDcuOSA2LjE5OEMzMDkuNCA1Ljk0NSAzMTAuOSA1Ljk4MiAzMTIuMyA2LjMwN0wzMTIuMyA2LjMwN3pNMzUzLjEgMjU2LjFDMzUzLjEgMjg3LjUgMzM1LjYgMzE3LjIgMzAzLjggMzM5LjZDMzAxLjcgMzQxLjEgMjk5IDM0MS45IDI5Ni40IDM0MS42QzI5My43IDM0MS40IDI5MS4yIDM0MC4zIDI4OS40IDMzOC40TDIxOS4zIDI2OC42QzIxNy4xIDI2Ni41IDIxNS4xIDI2My42IDIxNS45IDI2MC42QzIxNS45IDI1Ny42IDIxNy4xIDI1NC43IDIxOS4yIDI1Mi42QzIyMS40IDI1MC41IDIyNC4yIDI0OS4zIDIyNy4yIDI0OS4zQzIzMC4yIDI0OS4zIDIzMy4xIDI1MC41IDIzNS4yIDI1Mi42TDI5OC4zIDMxNS40QzMxOS4xIDI5OC4zIDMzMC41IDI3Ny41IDMzMC41IDI1Ni4xQzMzMC41IDIzMi4yIDMxNi40IDIwOS4xIDI5MC44IDE5MUMyODguMyAxODkuMyAyODYuNyAxODYuNyAyODYuMiAxODMuN0MyODUuNyAxODAuOCAyODYuMyAxNzcuNyAyODguMSAxNzUuM0MyODkuOCAxNzIuOCAyOTIuNCAxNzEuMiAyOTUuNCAxNzAuN0MyOTguMyAxNzAuMiAzMDEuNCAxNzAuOCAzMDMuOCAxNzIuNkMzMzUuNiAxOTUgMzUzLjEgMjI0LjcgMzUzLjEgMjU2LjFWMjU2LjF6TTIxNi43IDM0MS41QzIxMy43IDM0MiAyMTAuNyAzNDEuMyAyMDguMiAzMzkuNkMxNzYuNSAzMTcuMiAxNTguMSAyODcuNSAxNTguMSAyNTYuMUMxNTguMSAyMjQuNyAxNzYuNSAxOTUgMjA4LjIgMTcyLjZDMjEwLjQgMTcxIDIxMy4xIDE3MC4zIDIxNS43IDE3MC41QzIxOC40IDE3MC44IDIyMC44IDE3MS45IDIyMi43IDE3My44TDI5Mi44IDI0My42QzI5NC45IDI0NS43IDI5Ni4xIDI0OC42IDI5Ni4xIDI1MS42QzI5Ni4xIDI1NC42IDI5NC4xIDI1Ny40IDI5Mi44IDI1OS42QzI5MC43IDI2MS43IDI4Ny44IDI2Mi45IDI4NC45IDI2Mi45QzI4MS45IDI2Mi45IDI3OC4xIDI2MS43IDI3Ni45IDI1OS42TDIxMy44IDE5Ni43QzE5Mi45IDIxNCAxODEuNiAyMzQuNyAxODEuNiAyNTYuMUMxODEuNiAyNzkuMSAxOTUuNyAzMDMuMSAyMjEuMyAzMjEuMUMyMjMuNyAzMjIuOSAyMjUuNCAzMjUuNSAyMjUuOSAzMjguNUMyMjYuNCAzMzEuNCAyMjUuNyAzMzQuNCAyMjQgMzM2LjlDMjIyLjMgMzM5LjMgMjE5LjYgMzQxIDIxNi43IDM0MS41TDIxNi43IDM0MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZmNTeW1ib2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyLjkgMzIuNDNDNDAwLjYgMzEuMSA0MDguNiAzMi44OSA0MTQuMSAzNy40MUM0OTguMiA5Ni4xNCA1NDQgMTczLjcgNTQ0IDI1NS4xQzU0NCAzMzguMiA0OTguMiA0MTUuOSA0MTQuMSA0NzQuNkM0MDkuMyA0NzguNiA0MDIuNCA0ODAuNSAzOTUuNSA0NzkuOUMzODguNSA0NzkuMyAzODIgNDc2LjMgMzc3LjEgNDcxLjRMMTkzLjcgMjg4LjdDMTg4LjEgMjgzLjIgMTg1IDI3NS43IDE4NC4xIDI2Ny44QzE4NC4xIDI2MCAxODguMSAyNTIuNSAxOTMuNiAyNDYuOUMxOTkuMiAyNDEuNCAyMDYuNyAyMzguMiAyMTQuNSAyMzguMkMyMjIuNCAyMzguMiAyMjkuOSAyNDEuMyAyMzUuNCAyNDYuOEw0MDAuNSA0MTEuMkM0NTUuMSAzNjYuNSA0ODQuOCAzMTIgNDg0LjggMjU1LjFDNDg0LjggMTkzLjUgNDQ3LjkgMTMyLjkgMzgwLjkgODUuNzZDMzc0LjUgODEuMjQgMzcwLjEgNzQuMzUgMzY4LjggNjYuNjJDMzY3LjQgNTguODkgMzY5LjIgNTAuOTQgMzczLjggNDQuNTNDMzc4LjMgMzguMTIgMzg1LjIgMzMuNzcgMzkyLjkgMzIuNDNWMzIuNDN6TTE4Ni45IDQ3OS42QzE3OS4yIDQ4MC45IDE3MS4zIDQ3OS4xIDE2NC44IDQ3NC42QzgxLjY3IDQxNS45IDM1Ljg0IDMzOC4yIDM1Ljg0IDI1NS4xQzM1Ljg0IDE3My43IDgxLjY3IDk2LjE0IDE2NC44IDM3LjQxQzE3MC41IDMzLjQgMTc3LjQgMzEuNTMgMTg0LjQgMzIuMTJDMTkxLjMgMzIuNzEgMTk3LjggMzUuNzIgMjAyLjcgNDAuNjNMMzg2LjEgMjIzLjNDMzkxLjcgMjI4LjggMzk0LjggMjM2LjMgMzk0LjggMjQ0LjJDMzk0LjkgMjUxLjEgMzkxLjggMjU5LjUgMzg2LjIgMjY1LjFDMzgwLjcgMjcwLjYgMzczLjIgMjczLjggMzY1LjMgMjczLjhDMzU3LjUgMjczLjggMzQ5LjEgMjcwLjcgMzQ0LjQgMjY1LjJMMTc5LjMgMTAwLjdDMTI0LjcgMTQ1LjkgOTUuMDMgMTk5LjkgOTUuMDMgMjU1LjFDOTUuMDMgMzE4LjUgMTMxLjkgMzc5LjEgMTk4LjEgNDI2LjJDMjA1LjQgNDMwLjggMjA5LjcgNDM3LjYgMjExLjEgNDQ1LjRDMjEyLjQgNDUzLjEgMjEwLjYgNDYxLjEgMjA2LjEgNDY3LjVDMjAxLjYgNDczLjkgMTk0LjcgNDc4LjIgMTg2LjkgNDc5LjZWNDc5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5pbWJsciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuNiAyOTkuMjljMTUuNTcgMCAyNy4xNSAxMS40NiAyNy4xNSAyN3MtMTEuNjIgMjctMjcuMTUgMjdjLTE1LjcgMC0yNy4xNS0xMS41Ny0yNy4xNS0yN3MxMS41NS0yNyAyNy4xNS0yN3pNMTEzIDMyNi4yNWMwLTE1LjYxIDExLjY4LTI3IDI3LjE1LTI3czI3LjE1IDExLjQ2IDI3LjE1IDI3LTExLjQ3IDI3LTI3LjE1IDI3Yy0xNS40NCAwLTI3LjE1LTExLjMxLTI3LjE1LTI3TTE5MS43NiAxNTlDMTU3IDE1OSA4OS40NSAxNzguNzcgNTkuMjUgMjI3TDE0IDB2MzM1LjQ4QzE0IDQzMy4xMyA5My42MSA1MTIgMTkxLjc2IDUxMnMxNzcuNzYtNzguOTUgMTc3Ljc2LTE3Ni41MlMyOTAuMTMgMTU5IDE5MS43NiAxNTl6bTAgMzA4LjEyYy03My4yNyAwLTEzMi41MS01OC45LTEzMi41MS0xMzEuNTlzNTkuMjQtMTMxLjU5IDEzMi41MS0xMzEuNTkgMTMyLjUxIDU4Ljg2IDEzMi41MSAxMzEuNTRTMjY1IDQ2Ny4wNyAxOTEuNzYgNDY3LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb2RlSnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDUwOGMtNi43IDAtMTMuNS0xLjgtMTkuNC01LjJsLTYxLjctMzYuNWMtOS4yLTUuMi00LjctNy0xLjctOCAxMi4zLTQuMyAxNC44LTUuMiAyNy45LTEyLjcgMS40LS44IDMuMi0uNSA0LjYuNGw0Ny40IDI4LjFjMS43IDEgNC4xIDEgNS43IDBsMTg0LjctMTA2LjZjMS43LTEgMi44LTMgMi44LTVWMTQ5LjNjMC0yLjEtMS4xLTQtMi45LTUuMUwyMjYuOCAzNy43Yy0xLjctMS00LTEtNS43IDBMMzYuNiAxNDQuM2MtMS44IDEtMi45IDMtMi45IDUuMXYyMTMuMWMwIDIgMS4xIDQgMi45IDQuOWw1MC42IDI5LjJjMjcuNSAxMy43IDQ0LjMtMi40IDQ0LjMtMTguN1YxNjcuNWMwLTMgMi40LTUuMyA1LjQtNS4zaDIzLjRjMi45IDAgNS40IDIuMyA1LjQgNS4zVjM3OGMwIDM2LjYtMjAgNTcuNi01NC43IDU3LjYtMTAuNyAwLTE5LjEgMC00Mi41LTExLjZsLTQ4LjQtMjcuOUM4LjEgMzg5LjIuNyAzNzYuMy43IDM2Mi40VjE0OS4zYzAtMTMuOCA3LjQtMjYuOCAxOS40LTMzLjdMMjA0LjYgOWMxMS43LTYuNiAyNy4yLTYuNiAzOC44IDBsMTg0LjcgMTA2LjdjMTIgNi45IDE5LjQgMTkuOCAxOS40IDMzLjd2MjEzLjFjMCAxMy44LTcuNCAyNi43LTE5LjQgMzMuN0wyNDMuNCA1MDIuOGMtNS45IDMuNC0xMi42IDUuMi0xOS40IDUuMnptMTQ5LjEtMjEwLjFjMC0zOS45LTI3LTUwLjUtODMuNy01OC01Ny40LTcuNi02My4yLTExLjUtNjMuMi0yNC45IDAtMTEuMSA0LjktMjUuOSA0Ny40LTI1LjkgMzcuOSAwIDUxLjkgOC4yIDU3LjcgMzMuOC41IDIuNCAyLjcgNC4yIDUuMiA0LjJoMjRjMS41IDAgMi45LS42IDMuOS0xLjdzMS41LTIuNiAxLjQtNC4xYy0zLjctNDQuMS0zMy02NC42LTkyLjItNjQuNi01Mi43IDAtODQuMSAyMi4yLTg0LjEgNTkuNSAwIDQwLjQgMzEuMyA1MS42IDgxLjggNTYuNiA2MC41IDUuOSA2NS4yIDE0LjggNjUuMiAyNi43IDAgMjAuNi0xNi42IDI5LjQtNTUuNSAyOS40LTQ4LjkgMC01OS42LTEyLjMtNjMuMi0zNi42LS40LTIuNi0yLjYtNC41LTUuMy00LjVoLTIzLjljLTMgMC01LjMgMi40LTUuMyA1LjMgMCAzMS4xIDE2LjkgNjguMiA5Ny44IDY4LjIgNTguNC0uMSA5Mi0yMy4yIDkyLTYzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE2LjMgNDUyYy0yLjEgMC00LjItLjYtNi4xLTEuNkwyOTEgNDM5Yy0yLjktMS42LTEuNS0yLjItLjUtMi41IDMuOC0xLjMgNC42LTEuNiA4LjctNCAuNC0uMiAxLS4xIDEuNC4xbDE0LjggOC44Yy41LjMgMS4zLjMgMS44IDBMMzc1IDQwOGMuNS0uMy45LS45LjktMS42di02Ni43YzAtLjctLjMtMS4zLS45LTEuNmwtNTcuOC0zMy4zYy0uNS0uMy0xLjItLjMtMS44IDBsLTU3LjggMzMuM2MtLjYuMy0uOSAxLS45IDEuNnY2Ni43YzAgLjYuNCAxLjIuOSAxLjVsMTUuOCA5LjFjOC42IDQuMyAxMy45LS44IDEzLjktNS44di02NS45YzAtLjkuNy0xLjcgMS43LTEuN2g3LjNjLjkgMCAxLjcuNyAxLjcgMS43djY1LjljMCAxMS41LTYuMiAxOC0xNy4xIDE4LTMuMyAwLTYgMC0xMy4zLTMuNmwtMTUuMi04LjdjLTMuNy0yLjItNi4xLTYuMi02LjEtMTAuNXYtNjYuN2MwLTQuMyAyLjMtOC40IDYuMS0xMC41bDU3LjgtMzMuNGMzLjctMi4xIDguNS0yLjEgMTIuMSAwbDU3LjggMzMuNGMzLjcgMi4yIDYuMSA2LjIgNi4xIDEwLjV2NjYuN2MwIDQuMy0yLjMgOC40LTYuMSAxMC41bC01Ny44IDMzLjRjLTEuNyAxLjEtMy44IDEuNy02IDEuN3ptNDYuNy02NS44YzAtMTIuNS04LjQtMTUuOC0yNi4yLTE4LjItMTgtMi40LTE5LjgtMy42LTE5LjgtNy44IDAtMy41IDEuNS04LjEgMTQuOC04LjEgMTEuOSAwIDE2LjMgMi42IDE4LjEgMTAuNi4yLjguOCAxLjMgMS42IDEuM2g3LjVjLjUgMCAuOS0uMiAxLjItLjUuMy0uNC41LS44LjQtMS4zLTEuMi0xMy44LTEwLjMtMjAuMi0yOC44LTIwLjItMTYuNSAwLTI2LjMgNy0yNi4zIDE4LjYgMCAxMi43IDkuOCAxNi4xIDI1LjYgMTcuNyAxOC45IDEuOSAyMC40IDQuNiAyMC40IDguMyAwIDYuNS01LjIgOS4yLTE3LjQgOS4yLTE1LjMgMC0xOC43LTMuOC0xOS44LTExLjQtLjEtLjgtLjgtMS40LTEuNy0xLjRoLTcuNWMtLjkgMC0xLjcuNy0xLjcgMS43IDAgOS43IDUuMyAyMS4zIDMwLjYgMjEuMyAxOC41IDAgMjktNy4yIDI5LTE5Ljh6bTU0LjUtNTAuMWMwIDYuMS01IDExLjEtMTEuMSAxMS4xcy0xMS4xLTUtMTEuMS0xMS4xYzAtNi4zIDUuMi0xMS4xIDExLjEtMTEuMSA2LS4xIDExLjEgNC44IDExLjEgMTEuMXptLTEuOCAwYzAtNS4yLTQuMi05LjMtOS40LTkuMy01LjEgMC05LjMgNC4xLTkuMyA5LjMgMCA1LjIgNC4yIDkuNCA5LjMgOS40IDUuMi0uMSA5LjQtNC4zIDkuNC05LjR6bS00LjUgNi4yaC0yLjZjLS4xLS42LS41LTMuOC0uNS0zLjktLjItLjctLjQtMS4xLTEuMy0xLjFoLTIuMnY1aC0yLjR2LTEyLjVoNC4zYzEuNSAwIDQuNCAwIDQuNCAzLjMgMCAyLjMtMS41IDIuOC0yLjQgMy4xIDEuNy4xIDEuOCAxLjIgMi4xIDIuOC4xIDEgLjMgMi43LjYgMy4zem0tMi44LTguOGMwLTEuNy0xLjItMS43LTEuOC0xLjdoLTJ2My41aDEuOWMxLjYgMCAxLjktMS4xIDEuOS0xLjh6TTEzNy4zIDE5MWMwLTIuNy0xLjQtNS4xLTMuNy02LjRsLTYxLjMtMzUuM2MtMS0uNi0yLjItLjktMy40LTFoLS42Yy0xLjIgMC0yLjMuNC0zLjQgMUwzLjcgMTg0LjZDMS40IDE4NS45IDAgMTg4LjQgMCAxOTFsLjEgOTVjMCAxLjMuNyAyLjUgMS44IDMuMiAxLjEuNyAyLjUuNyAzLjcgMEw0MiAyNjguM2MyLjMtMS40IDMuNy0zLjggMy43LTYuNHYtNDQuNGMwLTIuNiAxLjQtNS4xIDMuNy02LjRsMTUuNS04LjljMS4yLS43IDIuNC0xIDMuNy0xIDEuMyAwIDIuNi4zIDMuNyAxbDE1LjUgOC45YzIuMyAxLjMgMy43IDMuOCAzLjcgNi40djQ0LjRjMCAyLjYgMS40IDUuMSAzLjcgNi40bDM2LjQgMjAuOWMxLjEuNyAyLjYuNyAzLjcgMCAxLjEtLjYgMS44LTEuOSAxLjgtMy4ybC4yLTk1ek00NzIuNSA4Ny4zdjE3Ni40YzAgMi42LTEuNCA1LjEtMy43IDYuNGwtNjEuMyAzNS40Yy0yLjMgMS4zLTUuMSAxLjMtNy40IDBsLTYxLjMtMzUuNGMtMi4zLTEuMy0zLjctMy44LTMuNy02LjR2LTcwLjhjMC0yLjYgMS40LTUuMSAzLjctNi40bDYxLjMtMzUuNGMyLjMtMS4zIDUuMS0xLjMgNy40IDBsMTUuMyA4LjhjMS43IDEgMy45LS4zIDMuOS0yLjJ2LTk0YzAtMi44IDMtNC42IDUuNS0zLjJsMzYuNSAyMC40YzIuMyAxLjIgMy44IDMuNyAzLjggNi40em0tNDYgMTI4LjljMC0uNy0uNC0xLjMtLjktMS42bC0yMS0xMi4yYy0uNi0uMy0xLjMtLjMtMS45IDBsLTIxIDEyLjJjLS42LjMtLjkuOS0uOSAxLjZ2MjQuM2MwIC43LjQgMS4zLjkgMS42bDIxIDEyLjFjLjYuMyAxLjMuMyAxLjggMGwyMS0xMi4xYy42LS4zLjktLjkuOS0xLjZ2LTI0LjN6bTIwOS44LS43YzIuMy0xLjMgMy43LTMuOCAzLjctNi40VjE5MmMwLTIuNi0xLjQtNS4xLTMuNy02LjRsLTYwLjktMzUuNGMtMi4zLTEuMy01LjEtMS4zLTcuNCAwbC02MS4zIDM1LjRjLTIuMyAxLjMtMy43IDMuOC0zLjcgNi40djcwLjhjMCAyLjcgMS40IDUuMSAzLjcgNi40bDYwLjkgMzQuN2MyLjIgMS4zIDUgMS4zIDcuMyAwbDM2LjgtMjAuNWMyLjUtMS40IDIuNS01IDAtNi40TDU1MCAyNDEuNmMtMS4yLS43LTEuOS0xLjktMS45LTMuMnYtMjIuMmMwLTEuMy43LTIuNSAxLjktMy4ybDE5LjItMTEuMWMxLjEtLjcgMi42LS43IDMuNyAwbDE5LjIgMTEuMWMxLjEuNyAxLjkgMS45IDEuOSAzLjJ2MTcuNGMwIDIuOCAzLjEgNC42IDUuNiAzLjJsMzYuNy0yMS4zek01NTkgMjE5Yy0uNC4zLS43LjctLjcgMS4ydjEzLjZjMCAuNS4zIDEgLjcgMS4ybDExLjggNi44Yy40LjMgMSAuMyAxLjQgMEw1ODQgMjM1Yy40LS4zLjctLjcuNy0xLjJ2LTEzLjZjMC0uNS0uMy0xLS43LTEuMmwtMTEuOC02LjhjLS40LS4zLTEtLjMtMS40IDBMNTU5IDIxOXptLTI1NC4yIDQzLjV2LTcwLjRjMC0yLjYtMS42LTUuMS0zLjktNi40bC02MS4xLTM1LjJjLTIuMS0xLjItNS0xLjQtNy40IDBsLTYxLjEgMzUuMmMtMi4zIDEuMy0zLjkgMy43LTMuOSA2LjR2NzAuNGMwIDIuOCAxLjkgNS4yIDQgNi40bDYxLjIgMzUuMmMyLjQgMS40IDUuMiAxLjMgNy40IDBsNjEtMzUuMmMxLjgtMSAzLjEtMi43IDMuNi00LjcuMS0uNS4yLTEuMS4yLTEuN3ptLTc0LjMtMTI0LjlsLS44LjVoMS4xbC0uMy0uNXptNzYuMiAxMzAuMmwtLjQtLjd2LjlsLjQtLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5wbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjg4aC0zMnYtNjRoMzJ2NjR6bTI4OC0xMjh2MTkySDI4OHYzMkgxNjB2LTMySDBWMTYwaDU3NnptLTQxNiAzMkgzMnYxMjhoNjR2LTk2aDMydjk2aDMyVjE5MnptMTYwIDBIMTkydjE2MGg2NHYtMzJoNjRWMTkyem0yMjQgMEgzNTJ2MTI4aDY0di05NmgzMnY5NmgzMnYtOTZoMzJ2OTZoMzJWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOczggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA0LjMyNCwyNjkuMTcyaDI2LjA2N1YyNDIuOTk0SDEwNC4zMjRabTUyLjQ2Ni0yNi4xNzgtLjA1NS0yNi4xNzh2LS45NDFhMzkuMzI1LDM5LjMyNSwwLDAsMC03OC42NDQuOTQxdi4xNjZoMjYuNHYtLjE2NmExMi45OCwxMi45OCwwLDAsMSwyNS45NTYsMHYyNi4xNzhabTUyLjM1NiwyNS44NDZhOTEuMSw5MS4xLDAsMCwxLTkxLjEsOTEuMWgtLjYwOWE5MS4xLDkxLjEsMCwwLDEtOTEuMS05MS4xSDB2LjE2NkExMTcuMzMsMTE3LjMzLDAsMCwwLDExNy40NCwzODYuMjhoLjc3NUExMTcuMzMxLDExNy4zMzEsMCwwLDAsMjM1LjQ5LDI2OC44NFYyNDIuODI4SDIwOS4xNDZabS0xNTcuMjMzLDBhNjUuMzYyLDY1LjM2MiwwLDAsMCwxMzAuNzIzLDBIMTU2LjI5MmEzOS4wMjMsMzkuMDIzLDAsMCwxLTc4LjAzNSwwVjI0Mi44ODNINTEuOTY4di0yNi42MkE2NS40Miw2NS40MiwwLDAsMSwxODIuOCwyMTcuNDh2MjUuMjkzaDI2LjM0NFYyMTcuNDhhOTEuNzYxLDkxLjc2MSwwLDAsMC0xODMuNTIyLDB2MjUuNEg1MS45MTNabTQxOC40LTcxLjE3M2MxMy42NywwLDI0LjU3Myw2LjY0MiwzMC4wNTIsMTguMjY0bC43MTksMS41NDksMjMuMjQ1LTExLjUxMS0uNjA5LTEuNDM5Yy04LjAyNS0xOS4yNi0yOC41LTMxLjI3LTUzLjQwNy0zMS4yNy0yMy4xMzQsMC00My42MTEsMTEuNC01MC45NzIsMjguNDQ3LS4xMjMsMjYuODc2LS4xNTgsMjMuOSwwLDI0Ljg1LDQuNywxMS4wMTMsMTQuNTU1LDE5LjM3LDI4LjY2OCwyNC4yNDFhMTAyLjAzMywxMDIuMDMzLDAsMCwwLDE5LjgxMywzLjk4NGM1LjQ3OS43MiwxMC42MjYsMS4zODQsMTUuODI5LDMuMSw2LjM2NCwyLjEsMTAuNDYsNS4yNTcsMTIuODQsOS44NTF2OS44NTFjLTMuNzA4LDcuNTI3LTEzLjc4MSwxMi4zNDItMjUuNzkxLDEyLjM0Mi0xNC4zMzQsMC0yNS45NTYtNi45MTgtMzEuOTMzLTE5LjAzOWwtLjcyLTEuNDk0TDQxNS4wMjYsMjgwLjlsLjU1MywxLjQzOWM3LjkxNSwxOS40MjYsMjkuNjA5LDMyLjA0NCw1NS4yODksMzIuMDQ0LDIzLjYzMiwwLDQ0LjYwOC0xMS40LDUyLjMtMjguNDQ3bC4xNjYtMjUuOS0uMTY2LS42NjRjLTQuODctMTEuMDE0LTE1LjIxOS0xOS42NDctMjguOTQ0LTI0LjI0MS03LjY5My0yLjcxMi0xNC4zMzUtMy42LTIwLjctNC40MjdhODMuNzc3LDgzLjc3NywwLDAsMS0xNC44MzItMi44NzhjLTYuMzEtMS45MzctMTAuNC01LjA5Mi0xMi42MTktOS42M3YtOC40MTJDNDQ5LjQ1LDIwMi40MjcsNDU4Ljk2OSwxOTcuNjY3LDQ3MC4zMTUsMTk3LjY2N1pNMjg3LjU2OCwzMTEuMzQ0aDI2LjA2N3YtNjguNEgyODcuNTY4Wm0zNTIuMjY2LTUzLjNjLTIuOTMzLTYuMjU0LTguMy0xMi4wMS0xNS40NDEtMTYuNzE0QTM3Ljk5LDM3Ljk5LDAsMCwwLDYzNy40LDIyNmwuMTY2LTI1LjM0Ny0uMTY2LS42NjRDNjMwLjAzOCwxODQsNjEwLjY2NywxNzMuMjYsNTg5LjI1LDE3My4yNlM1NDguNDYxLDE4NCw1NDEuMSwxOTkuOTkybC0uMTY2LDI1LjM0Ny4xNjYuNjY0YTM5LjY0MywzOS42NDMsMCwwLDAsMTMuMDA2LDE1LjMzMWMtNy4yLDQuNy0xMi41MDgsMTAuNDYtMTUuNDQxLDE2LjcxNGwtLjE2NiwyOC44ODkuMTY2LjcyYzcuNTgyLDE1Ljk5NCwyNy44OTMsMjYuNzMxLDUwLjU4NSwyNi43MzFzNDMuMDU3LTEwLjczNyw1MC41ODQtMjYuNzMxbC4xNjYtMjguODlabS03My4yMi01MC44MDZjMy42LTYuMzEsMTIuNTYzLTEwLjUxNiwyMi41OC0xMC41MTZzMTkuMDM4LDQuMjA2LDIyLjYzNiwxMC41MTZ2MTMuNzI1Yy0zLjU0Miw2LjItMTIuNTYzLDEwLjM0OS0yMi42MzYsMTAuMzQ5cy0xOS4wOTQtNC4xNS0yMi41OC0xMC4zNDlabTQ3LjMxOSw3Mi4xNjljLTMuNzY0LDYuNjQxLTEzLjMzOCwxMC45LTI0LjY4MywxMC45LTExLjEyNSwwLTIwLjk3Ni00LjM3Mi0yNC42ODQtMTAuOVYyNjMuMjVjMy43MDgtNi4zMDksMTMuNS0xMC41MTUsMjQuNjg0LTEwLjUxNSwxMS4zNDUsMCwyMC45MTksNC4xNSwyNC42ODMsMTAuNTE1Wk0zNzYuNCwyNjUuOTYybC01OS44MjctODkuNzEzaC0yOXY0MC42MjNoMjYuNTF2LjM4N2w2Mi41MzksOTQuMDg1SDQwMi4zVjE3Ni4yNDlIMzc2LjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU51dHJpdGlvbml4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg4IDguMVMyMjEuNC0uMSAyMDkgMTEyLjVjMCAwIDE5LjEtNzQuOSAxMDMtNDAuNiAwIDAtMTcuNyA3NC04OCA1NiAwIDAgMTQuNi01NC42IDY2LjEtNTYuNiAwIDAtMzkuOS0xMC4zLTgyLjEgNDguOCAwIDAtMTkuOC05NC41LTkzLjYtOTkuNyAwIDAgNzUuMiAxOS40IDc3LjYgMTA3LjUgMCAuMS0xMDYuNCA3LTEwNC0xMTkuOHptMzEyIDMxNS42YzAgNDguNS05LjcgOTUuMy0zMiAxMzIuMy00Mi4yIDMwLjktMTA1IDQ4LTE2OCA0OC02Mi45IDAtMTI1LjgtMTcuMS0xNjgtNDhDOS43IDQxOSAwIDM3Mi4yIDAgMzIzLjcgMCAyNzUuMyAxNy43IDIyOSA0MCAxOTJjNDIuMi0zMC45IDk3LjEtNDguNiAxNjAtNDguNiA2MyAwIDExNy44IDE3LjYgMTYwIDQ4LjYgMjIuMyAzNyA0MCA4My4zIDQwIDEzMS43ek0xMjAgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHpNMTkyIDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6TTI2NCA0MjhjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4ek0zMzYgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMjQtMzkuNmMtNC44LTIyLjMtNy40LTM2LjktMTYtNTYtMzguOC0xOS45LTkwLjUtMzItMTQ0LTMyUzk0LjggMTgwLjEgNTYgMjAwYy04LjggMTkuNS0xMS4yIDMzLjktMTYgNTYgNDIuMi03LjkgOTguNy0xNC44IDE2MC0xNC44czExNy44IDYuOSAxNjAgMTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2N0b3B1c0RlcGxveSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTUuNiwzNDkuMmMtNDUuODkxLTM5LjA5LTM2LjY3LTc3Ljg3Ny0xNi4wOTUtMTI4LjExQzQ3NS4xNiwxMzQuMDQsNDE1Ljk2NywzNC4xNCwzMjkuOTMsOC4zLDIzNy4wNC0xOS42LDEzNC4yNTIsMjQuMzQxLDk5LjY3NywxMTcuMTQ3YTE4MC44NjIsMTgwLjg2MiwwLDAsMC0xMC45ODgsNzMuNTQ0YzEuNzMzLDI5LjU0MywxNC43MTcsNTIuOTcsMjQuMDksODAuMywxNy4yLDUwLjE2MS0yOC4xLDkyLjc0My02Ni42NjIsMTE3LjU4Mi00Ni44MDYsMzAuMi0zNi4zMTksMzkuODU3LTguNDI4LDQxLjg1OCwyMy4zNzgsMS42OCw0NC40NzgtNC41NDgsNjUuMjY1LTE1LjA0NSw5LjItNC42NDcsNDAuNjg3LTE4LjkzMSw0NS4xMy0yOC41ODhDMTM1LjksNDEzLjM4OCwxMTEuMTIyLDQ1OS41LDEyNi42MjEsNDg4LjljMTkuMSwzNi4yMjksNjcuMTEyLTMxLjc3LDc2LjcwOS00NS44MTIsOC41OTEtMTIuNTcyLDQyLjk2My04MS4yNzksNjMuNjI3LTQ2LjkyNiwxOC44NjUsMzEuMzYxLDguNiw3Ni4zOTEsMzUuNzM4LDEwNC42MjIsMzIuODU0LDM0LjIsNTEuMTU1LTE4LjMxMiw1MS40MTItNDQuMjIxLjE2My0xNi40MTEtNi4xLTk1Ljg1MiwyOS45LTU5Ljk0NEM0MDUuNDI4LDQxOCw0MzYuOTEyLDQ2Ny44LDQ3Mi41NjgsNDYzLjY0MmMzOC43MzYtNC41MTYtMjIuMTIzLTY3Ljk2Ny0yOC4yNjItNzguNjk1LDUuMzkzLDQuMjc5LDUzLjY2NSwzNC4xMjgsNTMuODE4LDkuNTJDNDk4LjIzNCwzNzUuNjc4LDQ2OC4wMzksMzU5LjgsNDU1LjYsMzQ5LjJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9kbm9rbGFzc25pa2kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjEgMzM0Yy0yNy40IDE3LjQtNjUuMSAyNC4zLTkwIDI2LjlsMjAuOSAyMC42IDc2LjMgNzYuM2MyNy45IDI4LjYtMTcuNSA3My4zLTQ1LjcgNDUuNy0xOS4xLTE5LjQtNDcuMS00Ny40LTc2LjMtNzYuNkw4NCA1MDMuNGMtMjguMiAyNy41LTczLjYtMTcuNi00NS40LTQ1LjcgMTkuNC0xOS40IDQ3LjEtNDcuNCA3Ni4zLTc2LjNsMjAuNi0yMC42Yy0yNC42LTIuNi02Mi45LTkuMS05MC42LTI2LjktMzIuNi0yMS00Ni45LTMzLjMtMzQuMy01OSA3LjQtMTQuNiAyNy43LTI2LjkgNTQuNi01LjcgMCAwIDM2LjMgMjguOSA5NC45IDI4LjlzOTQuOS0yOC45IDk0LjktMjguOWMyNi45LTIxLjEgNDcuMS04LjkgNTQuNiA1LjcgMTIuNCAyNS43LTEuOSAzOC0zNC41IDU5LjF6TTMwLjMgMTI5LjdDMzAuMyA1OCA4OC42IDAgMTYwIDBzMTI5LjcgNTggMTI5LjcgMTI5LjdjMCA3MS40LTU4LjMgMTI5LjQtMTI5LjcgMTI5LjRzLTEyOS43LTU4LTEyOS43LTEyOS40em02NiAwYzAgMzUuMSAyOC42IDYzLjcgNjMuNyA2My43czYzLjctMjguNiA2My43LTYzLjdjMC0zNS40LTI4LjYtNjQtNjMuNy02NHMtNjMuNyAyOC42LTYzLjcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9keXNlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDYuNyA0NjNjLTQyLjMgMzAuOC05NC40IDQ5LTE1MC43IDQ5QzE0NC45IDUxMiA1MC4zIDQ0MS4yIDE0LjkgMzQyLjJjMi40IDEuNyA1LjkgMy42IDcuOSA0LjRjMTYuMyA3LjQgNDAuMS01LjQgNjIuOS0yOC43YzYuOS02LjkgMTQuNC0xMi40IDIyLjgtMTcuM2MxOC4zLTExLjkgMzcuNi0yMC44IDU4LjQtMjcuMmMwIDAgMjIuMyAzNC4yIDQzLjEgNzQuOHMtMjIuMyA1NC0yNy4yIDU0Yy0uMyAwLS44IDAtMS41LS4xYy0xMS0uNS03MC0zLTU2IDUxLjFjMTQuOSA1Ny40IDk3LjUgMzYuNiAxMzkuNiA4LjlzMzEuNy0xMTguMyAzMS43LTExOC4zYzQxLjEtNi40IDU0IDM3LjEgNTcuOSA1OS40Yy44IDQuNiAxLjEgOS45IDEuNCAxNS41YzEuMSAyMS4yIDIuMyA0NS42IDM1LjMgNDYuNGM1LjMgMCAxMC42LS44IDE1LjUtMnptLTk1LjMtMjMuN2MtMi0uNS0zLjUtMi41LTMtNWMxLTIuNSAzLTMuNSA1LTNzMy41IDMgMyA1cy0yLjUgMy41LTUgM3ptLTIwNy05NS42YzEuNS0uNSAzLjUgMSA0IDNjMCAyLTEgNC0zIDRjLTEuNSAuNS0zLjUtMS00LTNjLS41LTEuNSAxLTMuNSAzLTR6TTQ1MS44IDQyMUM0ODkuMyAzNzYuNCA1MTIgMzE4LjggNTEyIDI1NmMwLTY3LjUtMjYuMS0xMjguOS02OC44LTE3NC43Yy0uMSAyMy41LTYuMSA0OC4yLTE2LjggNjkuMmMtMTEuOSAyMC4zLTQ5IDU4LjktNjkuOCA3OC43Yy0uNyAuMy0xLjEgLjktMS41IDEuNGMtLjIgLjItLjMgLjQtLjUgLjZjLTUgNi45LTQgMTYuOCAzIDIxLjhjMjEuMyAxNS44IDU2LjQgNDUuNiA1OS40IDcyLjhjMy41IDM0LjkgMjcuOSA3NS42IDM0LjIgODYuMmwwIDBjLjggMS4zIDEuMyAyLjEgMS40IDIuNGMwIDIuMi0uNCA0LjMtLjggNi41ek0zOTAuNyAyNTFjLS41IDMgMSA1LjkgNCA2LjRzNS45LTEgNi40LTRzLTEtNS45LTQtNi40Yy0zLTEtNS45IDEtNi40IDR6bTYxLjQtNjAuOWwtMTEuNCA1LjQtMyAxMi45LTUuNC0xMS40LTEyLjktMyAxMS40LTUuNCAzLTEyLjkgNS40IDExLjQgMTIuOSAzek0zOTUuNSA0MS4zYy0xNi4yIDguMi0yMi4xIDMyLjgtMjkgNjEuNGwwIDBjLS4zIDEuNC0uNyAyLjgtMSA0LjJjLTkuNSAzOC41LTMwLjYgMzcuNi00MS43IDM3LjJjLTEuMSAwLTItLjEtMi45LS4xYy01LjEgMC02LTQtOC45LTE3LjFjLTIuNi0xMi4xLTYuOS0zMi0xNy45LTYzLjZDMjcxLjQtMi41IDIxMS40IDEzLjkgMTY1LjkgNDEuMUMxMTAuNiA3NC4yIDEzMS41IDE0MyAxNDYuMSAxOTAuNWMuNyAyLjIgMS40IDQuNCAyIDYuNmMtNCA0LTEzLjggNy41LTI2IDExLjljLTEyLjEgNC4zLTI2LjYgOS41LTQwLjMgMTYuOUM0Ny45IDI0My45IDExLjUgMjc0LjkgMiAyODguNUMuNyAyNzcuOCAwIDI2NyAwIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBjNTEuNCAwIDk5LjQgMTUuMiAxMzkuNSA0MS4zek01OC45IDE4OS42Yy0xLjUtMi00LjUtMy02LjQtMS41cy0zIDQuNS0xLjUgNi40czQuNSAzIDYuNCAxLjVjMi41LTEuNSAzLTQuNSAxLjUtNi40ek0zMjcuMyA2NC45YzItMS41IDUtLjUgNi40IDEuNWMxLjUgMi41IDEgNS40LTEuNSA2LjRjLTIgMS41LTUgLjUtNi40LTEuNXMtLjUtNSAxLjUtNi40ek05NS4xIDEwNWMtLjUgMS41IC41IDMgMiAzYzEuNSAuNSAzLS41IDMtMmMuNS0xLjUtLjUtMy0yLTNzLTMgLjUtMyAyem04NC43LS41Yy0zLjUtNDMuMSAzNy4xLTU0IDM3LjEtNTRjNDQuMS0xNS40IDU2IDUuOSA2Ni40IDM3LjZzMyA0Mi42LTM4LjYgNTguOXMtNjEuOS00LjUtNjQuOS00Mi42em04OS42IDE0LjloMWMyLjUgMCA1LTIgNS01YzItNi45IDEtMTQuNC0yLTIwLjhjLTEuNS0yLTQtMy41LTYuNC0yLjVjLTMgMS00LjUgNC0zLjUgNi45YzIgNC41IDMgOS45IDEuNSAxNC45Yy0uNSAzIDEuNSA1LjkgNC41IDYuNHptLTkuOS00MS42Yy0yIDAtNC0xLTUtM3MtMi0zLjUtMy01Yy0yLTItMi01LjQgMC03LjRzNS40LTIgNy40IDBjMiAyLjUgMy41IDUgNSA3LjRzLjUgNS45LTIuNSA3LjRjLS42IDAtMSAuMi0xLjMgLjNjLS4yIC4xLS40IC4yLS42IC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPbGRSZXB1YmxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzUuNzYgMTAuMjNjNy41LS4zMSAxNS0uMjggMjIuNS0uMDkgMy42MS4xNCA3LjIuNCAxMC43OS43MyA0LjkyLjI3IDkuNzkgMS4wMyAxNC42NyAxLjYyIDIuOTMuNDMgNS44My45OCA4Ljc1IDEuNDYgNy45IDEuMzMgMTUuNjcgMy4yOCAyMy4zOSA1LjQgMTIuMjQgMy40NyAyNC4xOSA3LjkyIDM1Ljc2IDEzLjIxIDI2LjU2IDEyLjI0IDUwLjk0IDI5LjIxIDcxLjYzIDQ5Ljg4IDIwLjAzIDIwLjA5IDM2LjcyIDQzLjU1IDQ4Ljg5IDY5LjE5IDEuMTMgMi41OSAyLjQ0IDUuMSAzLjQ3IDcuNzQgMi44MSA2LjQzIDUuMzkgMTIuOTcgNy41OCAxOS42MyA0LjE0IDEyLjMzIDcuMzQgMjQuOTkgOS40MiAzNy44My41NyAzLjE0IDEuMDQgNi4zIDEuNCA5LjQ3LjU1IDMuODMuOTQgNy42OSAxLjE4IDExLjU2LjgzIDguMzQuODQgMTYuNzMuNzcgMjUuMS0uMDcgNC45Ny0uMjYgOS45NC0uNzUgMTQuODktLjI0IDMuMzgtLjUxIDYuNzYtLjk4IDEwLjEyLS4zOSAyLjcyLS42MyA1LjQ2LTEuMTEgOC4xNy0uOSA1LjE1LTEuNyAxMC4zMS0yLjg3IDE1LjQxLTQuMSAxOC41LTEwLjMgMzYuNTUtMTguNTEgNTMuNjMtMTUuNzcgMzIuODMtMzguODMgNjIuMTctNjcuMTIgODUuMTJhMjQ2LjUwMyAyNDYuNTAzIDAgMCAxLTU2LjkxIDM0Ljg2Yy02LjIxIDIuNjgtMTIuNDYgNS4yNS0xOC44NyA3LjQxLTMuNTEgMS4xNi03LjAxIDIuMzgtMTAuNTcgMy4zOS02LjYyIDEuODgtMTMuMjkgMy42NC0yMC4wNCA1LTQuNjYuOTEtOS4zNCAxLjczLTE0LjAzIDIuNDgtNS4yNS42Ni0xMC41IDEuNDQtMTUuNzkgMS43NC02LjY5LjY2LTEzLjQxLjg0LTIwLjEyLjgxLTYuODIuMDMtMTMuNjUtLjEyLTIwLjQ1LS43OS0zLjI5LS4yMy02LjU3LS41LTkuODMtLjk1LTIuNzItLjM5LTUuNDYtLjYzLTguMTctMS4xMS00LjEyLS43Mi04LjI1LTEuMzctMTIuMzUtMi4yMi00LjI1LS45NC04LjQ5LTEuODktMTIuNjktMy4wMi04LjYzLTIuMTctMTcuMDgtNS4wMS0yNS40MS04LjEzLTEwLjQ5LTQuMTItMjAuNzktOC43NS0zMC42NC0xNC4yNS0yLjE0LTEuMTUtNC4yOC0yLjI5LTYuMzUtMy41Ny0xMS4yMi02LjU4LTIxLjg2LTE0LjEtMzEuOTItMjIuMzQtMzQuNjgtMjguNDEtNjEuNDEtNjYuNDMtNzYuMzUtMTA4LjctMy4wOS04Ljc0LTUuNzEtMTcuNjUtNy44LTI2LjY4LTEuNDgtNi4xNi0yLjUyLTEyLjQyLTMuNTgtMTguNjYtLjQtMi4zNS0uNjEtNC43My0uOTUtNy4wOS0uNi0zLjk2LS43NS03Ljk2LTEuMTctMTEuOTQtLjgtOS40Ny0uNzEtMTguOTktLjUxLTI4LjQ5LjE0LTMuNTEuMzQtNy4wMS43LTEwLjUxLjMxLTMuMTcuNDYtNi4zNy45Mi05LjUyLjQxLTIuODEuNjUtNS42NSAxLjE2LTguNDQuNy0zLjk0IDEuMy03LjkgMi4xMi0xMS44MiAzLjQzLTE2LjUyIDguNDctMzIuNzMgMTUuMjYtNDguMTggMS4xNS0yLjkyIDIuNTktNS43MiAzLjg2LTguNTkgOC4wNS0xNi43MSAxNy45LTMyLjU2IDI5LjQ5LTQ3LjA2IDIwLTI1LjM4IDQ1LjEtNDYuNjggNzMuMjctNjIuNDcgNy41LTQuMTUgMTUuMTYtOC4wNSAyMy4wNy0xMS4zNyAxNS44Mi02Ljg4IDMyLjQxLTExLjk1IDQ5LjMxLTE1LjM4IDMuNTEtLjY3IDcuMDQtMS4yNCAxMC41Ni0xLjg1IDIuNjItLjQ3IDUuMjgtLjcgNy45MS0xLjA4IDMuNTMtLjUzIDcuMS0uNjggMTAuNjUtMS4wNCAyLjQ2LS4yNCA0LjkxLS4zNiA3LjM2LS41MW04LjY0IDI0LjQxYy05LjIzLjEtMTguNDMuOTktMjcuNTcgMi4yMy03LjMgMS4wOC0xNC41MyAyLjYtMjEuNzEgNC4zLTEzLjkxIDMuNS0yNy40OCA4LjM0LTQwLjQ2IDE0LjQyLTEwLjQ2IDQuOTktMjAuNTkgMTAuNy0zMC4xOCAxNy4yMi00LjE4IDIuOTItOC40IDUuOC0xMi4zNCA5LjAzLTUuMDggMy45Ny05Ljk4IDguMTctMTQuNjggMTIuNTktMi41MSAyLjI0LTQuODEgNC43LTcuMjIgNy4wNi0yOC4yMiAyOC43OS00OC40NCA2NS4zOS01Ny41IDEwNC42OS0yLjA0IDguNDQtMy41NCAxNy4wMi00LjQ0IDI1LjY1LTEuMSA4Ljg5LTEuNDQgMTcuODUtMS40MSAyNi44LjExIDcuMTQuMzggMTQuMjggMS4yMiAyMS4zNy42MiA3LjEyIDEuODcgMTQuMTYgMy4yIDIxLjE4IDEuMDcgNC42NSAyLjAzIDkuMzIgMy4zMyAxMy45MSA2LjI5IDIzLjM4IDE2LjUgNDUuNyAzMC4wNyA2NS43NSA4LjY0IDEyLjk4IDE4Ljc4IDI0LjkzIDI5Ljk4IDM1Ljc3IDE2LjI4IDE1LjgyIDM1LjA1IDI5LjA0IDU1LjM0IDM5LjIyIDcuMjggMy41MiAxNC42NiA2Ljg3IDIyLjI3IDkuNjMgNS4wNCAxLjc2IDEwLjA2IDMuNTcgMTUuMjIgNC45OCAxMS4yNiAzLjIzIDIyLjc3IDUuNiAzNC4zOSA3LjA2IDIuOTEuMjkgNS44MS42MSA4LjcyLjkgMTMuODIgMS4wOCAyNy43NCAxIDQxLjU0LS40MyA0LjQ1LS42IDguOTItLjk5IDEzLjM1LTEuNzggMy42My0uNjcgNy4yOC0xLjI1IDEwLjg3LTIuMSA0LjEzLS45OCA4LjI4LTEuOTEgMTIuMzYtMy4wNyAyNi41LTcuMzQgNTEuNTgtMTkuNzEgNzMuNTgtMzYuMiAxNS43OC0xMS44MiAyOS45Ni0yNS43NiA0Mi4xMi00MS4yOCAzLjI2LTQuMDIgNi4xNy04LjMxIDkuMTMtMTIuNTUgMy4zOS01LjA2IDYuNTgtMTAuMjUgOS42LTE1LjU0IDIuNC00LjQ0IDQuNzQtOC45MSA2Ljk1LTEzLjQ1IDUuNjktMTIuMDUgMTAuMjgtMjQuNjIgMTMuNzUtMzcuNDkgMi41OS0xMC4wMSA0Ljc1LTIwLjE2IDUuOS0zMC40NSAxLjc3LTEzLjQ3IDEuOTQtMjcuMSAxLjI5LTQwLjY1LS4yOS0zLjg5LS42Ny03Ljc3LTEtMTEuNjYtMi4yMy0xOS4wOC02Ljc5LTM3LjkxLTEzLjgyLTU1LjgtNS45NS0xNS4xMy0xMy41My0yOS42My0yMi42MS00My4xMy0xMi42OS0xOC44LTI4LjI0LTM1LjY4LTQ1Ljk3LTQ5LjgzLTI1LjA1LTIwLTU0LjQ3LTM0LjU1LTg1LjY1LTQyLjA4LTcuNzgtMS45My0xNS42OS0zLjM0LTIzLjYzLTQuNDUtMy45MS0uNTktNy44NS0uODItMTEuNzctMS4yNC03LjM5LS41Ny0xNC44MS0uNzItMjIuMjItLjU4ek0xMzkuMjYgODMuNTNjMTMuMy04Ljg5IDI4LjA4LTE1LjM4IDQzLjMtMjAuMTgtMy4xNyAxLjc3LTYuNDQgMy4zOC05LjUzIDUuMjktMTEuMjEgNi42OC0yMS41MiAxNC45LTMwLjM4IDI0LjQ5LTYuOCA3LjQzLTEyLjc2IDE1LjczLTE3LjAxIDI0Ljg5LTMuMjkgNi44Ni01LjY0IDE0LjE5LTYuODYgMjEuNzEtLjkzIDQuODUtMS4zIDkuODEtMS4xNyAxNC43NS4xMyAxMy42NiA0LjQ0IDI3LjA4IDExLjI5IDM4LjgyIDUuOTIgMTAuMjIgMTMuNjMgMTkuMzMgMjIuMzYgMjcuMjYgNC44NSA0LjM2IDEwLjI0IDguMDkgMTQuOTUgMTIuNiAyLjI2IDIuMTkgNC40OSA0LjQyIDYuNDMgNi45MSAyLjYyIDMuMzEgNC44OSA2Ljk5IDUuOTkgMTEuMS45IDMuMDIuNjYgNi4yLjY5IDkuMzEuMDIgNC4xLS4wNCA4LjIuMDMgMTIuMy4xNCAzLjU0LS4wMiA3LjA5LjExIDEwLjYzLjA4IDIuMzguMDIgNC43Ni4wNSA3LjE0LjE2IDUuNzcuMDYgMTEuNTMuMTUgMTcuMy4xMSAyLjkxLjAyIDUuODIuMTMgOC43NC4wMyAxLjYzLjEzIDMuMjgtLjAzIDQuOTEtLjkxLjEyLTEuODIuMTgtMi43My4xNi0xMC45OSAwLTIxLjg4LTIuNjMtMzEuOTUtNi45My02LTIuNy0xMS44MS01Ljg5LTE3LjA5LTkuODMtNS43NS00LjE5LTExLjA5LTguOTYtMTUuNzktMTQuMzEtNi41My03LjI0LTExLjk4LTE1LjM5LTE2LjYyLTIzLjk1LTEuMDctMi4wMy0yLjI0LTQuMDItMy4xOC02LjEyLTEuMTYtMi42NC0yLjYyLTUuMTQtMy42Ny03LjgyLTQuMDUtOS42OC02LjU3LTE5Ljk0LTguMDgtMzAuMzEtLjQ5LTQuNDQtMS4wOS04Ljg4LTEuMi0xMy4zNS0uNy0xNS43My44NC0zMS41NSA0LjY3LTQ2LjgyIDIuMTItOC4xNSA0Ljc3LTE2LjE4IDguMzEtMjMuODMgNi4zMi0xNC4yIDE1LjM0LTI3LjE4IDI2LjMtMzguMTkgNi4yOC02LjIgMTMuMTMtMTEuODQgMjAuNTMtMTYuNjd6bTE3NS4zNy0yMC4xMmMyLjc0Ljc0IDUuNDEgMS43NCA4LjA5IDIuNjggNi4zNiAyLjMzIDEyLjY4IDQuODQgMTguNzEgNy45NiAxMy4xMSA2LjQ0IDI1LjMxIDE0LjgxIDM1LjgyIDI0Ljk3IDEwLjIgOS45NSAxOC43NCAyMS42IDI1LjE0IDM0LjM0IDEuMjggMi43NSAyLjY0IDUuNDYgMy44MSA4LjI2IDYuMzEgMTUuMSAxMCAzMS4yNiAxMS4yMyA0Ny41Ny40MSA0LjU0LjQ0IDkuMDkuNDUgMTMuNjQuMDcgMTEuNjQtMS40OSAyMy4yNS00LjMgMzQuNTMtMS45NyA3LjI3LTQuMzUgMTQuNDktNy44NiAyMS4xOC0zLjE4IDYuNjQtNi42OCAxMy4xNi0xMC44NCAxOS4yNC02Ljk0IDEwLjQ3LTE1LjYgMTkuODctMjUuODIgMjcuMjItMTAuNDggNy42NC0yMi42NCAxMy4wMi0zNS40IDE1LjM4LTMuNTEuNjktNy4wOCAxLjA4LTEwLjY2IDEuMjEtMS44NS4wNi0zLjcyLjE2LTUuNTYtLjEtLjI4LTIuMTUgMC00LjMxLS4wMS02LjQ2LS4wMy0zLjczLjE0LTcuNDUuMS0xMS4xNy4xOS03LjAyLjAyLTE0LjA1LjIxLTIxLjA3LjAzLTIuMzgtLjAzLTQuNzYuMDMtNy4xNC4xNy01LjA3LS4wNC0xMC4xNC4xNC0xNS4yMS4xLTIuOTktLjI0LTYuMDQuNTEtOC45Ni42Ni0yLjUgMS43OC00Ljg2IDMuMDktNy4wOCA0LjQ2LTcuMzEgMTEuMDYtMTIuOTYgMTcuNjgtMTguMjYgNS4zOC00LjE4IDEwLjQ3LTguNzcgMTUuMDItMTMuODQgNy42OC04LjM3IDE0LjE3LTE3Ljg4IDE4Ljc4LTI4LjI3IDIuNS01LjkzIDQuNTItMTIuMSA1LjU1LTE4LjQ2Ljg2LTQuMzcgMS4wNi04LjgzIDEuMDEtMTMuMjctLjAyLTcuODUtMS40LTE1LjY1LTMuNjQtMjMuMTctMS43NS01LjczLTQuMjctMTEuMTgtNy4wOS0xNi40NS0zLjg3LTYuOTMtOC42NS0xMy4zMS0xMy45Ni0xOS4yLTkuOTQtMTAuODUtMjEuNzUtMTkuOTQtMzQuNi0yNy4xLTEuODUtMS4wMi0zLjg0LTEuODItNS42My0yLjk3em0tMTAwLjggNTguNDVjLjk4LTEuMTggMS45OS0yLjMzIDMuMTItMy4zOC0uNjEuOTMtMS4yNyAxLjgxLTEuOTUgMi42OC0zLjEgMy44OC01LjU0IDguMzEtNy4wMyAxMy4wNi0uODcgMy4yNy0xLjY4IDYuNi0xLjczIDEwLS4wNyAyLjUyLS4wOCA1LjA3LjMyIDcuNTcgMS4xMyA3LjYzIDQuMzMgMTQuODUgOC43NyAyMS4xMiAyIDIuNyA0LjI1IDUuMjcgNi45MiA3LjMzIDEuNjIgMS4yNyAzLjUzIDIuMDkgNS4zNCAzLjA1IDMuMTEgMS42OCA2LjMyIDMuMjMgOS4wNyA1LjQ4IDIuNjcgMi4wOSA0LjU1IDUuMzMgNC40IDguNzktLjAxIDczLjY3IDAgMTQ3LjM0LS4wMSAyMjEuMDIgMCAxLjM1LS4wOCAyLjcuMDQgNC4wNC4xMyAxLjQ4LjgyIDIuODMgMS40NyA0LjE1Ljg2IDEuNjYgMS43OCAzLjM0IDMuMTggNC42Mi44NS43NyAxLjk3IDEuNCAzLjE1IDEuMjQgMS41LS4yIDIuNjYtMS4zNSAzLjQ1LTIuNTcuOTYtMS41MSAxLjY4LTMuMTYgMi4yOC00Ljg1Ljc2LTIuMTMuNDQtNC40Mi41NC02LjYzLjE0LTQuMDMtLjAyLTguMDYuMTQtMTIuMDkuMDMtNS44OS4wMy0xMS43Ny4wNi0xNy42Ni4xNC0zLjYyLjAzLTcuMjQuMTEtMTAuODYuMTUtNC4wMy0uMDItOC4wNi4xNC0xMi4wOS4wMy01Ljk5LjAzLTExLjk4LjA3LTE3Ljk3LjE0LTMuNjIuMDItNy4yNC4xMS0xMC44Ni4xNC0zLjkzLS4wMi03Ljg2LjE0LTExLjc4LjAzLTUuOTkuMDMtMTEuOTguMDYtMTcuOTcuMTYtMy45NC0uMDEtNy44OC4xOS0xMS44Mi4yOSAxLjQ0LjEzIDIuOTIuMjIgNC4zOC4xOSAzLjYxLjQyIDcuMjMuNzYgMTAuODQuMzIgMy40NC40NCA2Ljg5Ljg2IDEwLjMyLjM3IDMuMS41MSA2LjIyLjk1IDkuMzEuNTcgNC4wOS44NyA4LjIxIDEuNTQgMTIuMjkgMS40NiA5LjA0IDIuODMgMTguMTEgNS4wOSAyNi45OSAxLjEzIDQuODIgMi40IDkuNjEgNCAxNC4zIDIuNTQgNy45IDUuNzIgMTUuNjcgMTAuMzEgMjIuNjIgMS43MyAyLjY0IDMuODcgNC45OCA2LjEgNy4yMS4yNy4yNS41NS41MS44OC43MS42LjI1IDEuMzEtLjA3IDEuNy0uNTcuNzEtLjg4IDEuMTctMS45NCAxLjctMi45MyA0LjA1LTcuOCA4LjE4LTE1LjU2IDEyLjM0LTIzLjMxLjctMS4zMSAxLjQ0LTIuNjIgMi41Ni0zLjYxIDEuNzUtMS41NyAzLjg0LTIuNjkgNS45OC0zLjYzIDIuODgtMS4yMiA1LjktMi4xOSA5LjAzLTIuNDIgNi41OC0uNjIgMTMuMTEuNzUgMTkuNTYgMS44NSAzLjY5LjU4IDcuNCAxLjE3IDExLjEzIDEuNDEgMy43NC4xIDcuNDguMDUgMTEuMjEtLjI4IDguNTUtLjkyIDE2Ljk5LTIuOTYgMjQuOTQtNi4yNSA1LjMtMi4yNCAxMC40Ni00LjgzIDE1LjMxLTcuOTMgMTEuNDYtNy4yMSAyMS40Ni0xNi41NyAzMC4wNC0yNy4wMSAxLjE3LTEuNDIgMi4yNS0yLjkgMy40Ni00LjI4LTEuMiAzLjI0LTIuNjcgNi4zNy00LjE2IDkuNDgtMS4yNSAyLjktMi44NCA1LjYxLTQuMjcgOC40Mi01LjE2IDkuNjMtMTEuMDIgMTguOTEtMTcuNzUgMjcuNTItNC4wMyA1LjIxLTguNTMgMTAuMDUtMTMuMzMgMTQuNTctNi42NCA2LjA1LTE0LjA3IDExLjM3LTIyLjQzIDE0Ljc2LTguMjEgMy4zNy0xNy4zMSA0LjYzLTI2LjA5IDMuMjktMy41Ni0uNTgtNy4wMS0xLjY5LTEwLjQxLTIuODgtMi43OS0uOTctNS4zOS0yLjM4LTguMDMtMy42OS0zLjQzLTEuNzEtNi42NC0zLjgxLTkuNzEtNi4wOCAyLjcxIDMuMDYgNS42OSA1Ljg2IDguNyA4LjYxIDQuMjcgMy43NiA4Ljc0IDcuMzEgMTMuNjMgMTAuMjMgMy45OCAyLjQ1IDguMjkgNC40IDEyLjg0IDUuNTEgMS40Ni4zNyAyLjk2LjQ2IDQuNDUuNi0xLjI1IDEuMS0yLjYzIDIuMDQtMy45OSAyLjk4LTkuNjEgNi41NC0yMC4wMSAxMS44Ni0zMC42OSAxNi40My0yMC44NiA4LjctNDMuMTcgMTMuOTctNjUuNzQgMTUuMzQtNC42Ni4yNC05LjMyLjM2LTEzLjk4LjM2LTQuOTgtLjExLTkuOTctLjEzLTE0LjkyLS42NS0xMS4yLS43Ni0yMi4yOS0yLjczLTMzLjE3LTUuNDMtMTAuMzUtMi43MS0yMC41NS02LjEyLTMwLjMtMTAuNTUtOC43MS0zLjg2LTE3LjEyLTguNDItMjQuOTktMTMuNzktMS44My0xLjMxLTMuNzQtMi41My01LjM3LTQuMDggNi42LTEuMTkgMTMuMDMtMy4zOSAxOC45OS02LjQ4IDUuNzQtMi44NiAxMC45OS02LjY2IDE1LjYzLTExLjA3IDIuMjQtMi4xOSA0LjI5LTQuNTkgNi4xOS03LjA5LTMuNDMgMi4xMy02LjkzIDQuMTUtMTAuNjIgNS43OC00LjQxIDIuMTYtOS4wNyAzLjc3LTEzLjgxIDUuMDItNS43MyAxLjUyLTExLjc0IDEuNzMtMTcuNjEgMS4xNC04LjEzLS45NS0xNS44Ni00LjI3LTIyLjUxLTguOTgtNC4zMi0yLjk0LTguMjItNi40My0xMS45Ni0xMC4wNi05LjkzLTEwLjE2LTE4LjItMjEuODEtMjUuNjYtMzMuODYtMy45NC02LjI3LTcuNTMtMTIuNzUtMTEuMTItMTkuMjItMS4wNS0yLjA0LTIuMTUtNC4wNS0zLjE4LTYuMSAyLjg1IDIuOTIgNS41NyA1Ljk3IDguNDMgOC44OCA4Ljk5IDguOTcgMTguNTYgMTcuNDQgMjkuMTYgMjQuNDggNy41NSA0LjkgMTUuNjcgOS4yMyAyNC41NiAxMS4wMyAzLjExLjczIDYuMzIuNDcgOS40Ny44MSAyLjc3LjI4IDUuNTYuMiA4LjM0LjMgNS4wNS4wNiAxMC4xMS4wNCAxNS4xNi0uMTYgMy42NS0uMTYgNy4yNy0uNjYgMTAuODktMS4wOSAyLjA3LS4yNSA0LjExLS43MSA2LjE0LTEuMiAzLjg4LS45NSA4LjExLS45NiAxMS44My42MSA0Ljc2IDEuODUgOC40NCA1LjY0IDExLjM4IDkuNzEgMi4xNiAzLjAyIDQuMDYgNi4yMiA1LjY2IDkuNTggMS4xNiAyLjQzIDIuNDYgNC43OSAzLjU1IDcuMjYgMSAyLjI0IDIuMTUgNC40MiAzLjQyIDYuNTIuNjcgMS4wMiAxLjQgMi4xNSAyLjYyIDIuNTUgMS4wNi0uNzUgMS43MS0xLjkxIDIuMjgtMy4wMyAyLjEtNC4xNiAzLjQyLTguNjUgNC44OS0xMy4wNSAyLjAyLTYuNTkgMy43OC0xMy4yNyA1LjE5LTIwLjAyIDIuMjEtOS4yNSAzLjI1LTE4LjcyIDQuNTQtMjguMTMuNTYtMy45OC44My03Ljk5IDEuMzEtMTEuOTcuODctMTAuNjQgMS45LTIxLjI3IDIuMjQtMzEuOTQuMDgtMS44Ni4yNC0zLjcxLjI1LTUuNTcuMDEtNC4zNS4yNS04LjY5LjIyLTEzLjAzLS4wMS0yLjM4LS4wMS00Ljc2IDAtNy4xMy4wNS01LjA3LS4yLTEwLjE0LS4yMi0xNS4yMS0uMi02LjYxLS43MS0xMy4yLTEuMjktMTkuNzgtLjczLTUuODgtMS41NS0xMS43OC0zLjEyLTE3LjUxLTIuMDUtNy43NS01LjU5LTE1LjAzLTkuOC0yMS44Mi0zLjE2LTUuMDctNi43OS05Ljg4LTExLjA5LTE0LjAzLTMuODgtMy44Ni04LjU4LTcuMDgtMTMuOTQtOC40NS0xLjUtLjQxLTMuMDYtLjQ1LTQuNTktLjY0LjA3LTIuOTkuNy01LjkzIDEuMjYtOC44NSAxLjU5LTcuNzEgMy44LTE1LjMgNi43Ni0yMi42IDEuNTItNC4wMyAzLjQxLTcuOSA1LjM5LTExLjcyIDMuNDUtNi41NiA3LjYyLTEyLjc5IDEyLjQ2LTE4LjQ2em0zMS4yNyAxLjdjLjM1LS4wNi43MS0uMTIgMS4wNy0uMTkuMTkgMS43OS4wOSAzLjU4LjEgNS4zN3YzOC4xM2MtLjAxIDEuNzQuMTMgMy40OS0uMTUgNS4yMi0uMzYtLjAzLS43MS0uMDUtMS4wNi0uMDUtLjk1LTMuNzUtMS43Mi03LjU1LTIuNjItMTEuMzEtLjM4LTEuNTMtLjU4LTMuMDktMS4wNy00LjU5LTEuNy0uMjQtMy40My0uMTctNS4xNS0uMi01LjA2LS4wMS0xMC4xMyAwLTE1LjE5LS4wMS0xLjY2LS4wMS0zLjMyLjA5LTQuOTgtLjAzLS4wMy0uMzktLjI2LS45MS4xNi0xLjE4IDEuMjgtLjY1IDIuNzItLjg4IDQuMDYtMS4zNSAzLjQzLTEuMTQgNi44OC0yLjE2IDEwLjMxLTMuMzEgMS4zOS0uNDggMi45LS43MiA0LjE2LTEuNTQuMDQtLjU2LjAyLTEuMTMtLjA1LTEuNjgtMS4yMy0uNTUtMi41My0uODctMy44MS0xLjI4LTMuMTMtMS4wMy02LjI5LTEuOTYtOS40MS0zLjAyLTEuNzktLjYyLTMuNjctMS01LjQxLTEuNzktLjAzLS4zNy0uMDctLjczLS4xMS0xLjA5IDUuMDktLjE5IDEwLjIuMDYgMTUuMy0uMTIgMy4zNi0uMTMgNi43My4wOCAxMC4wOS0uMDcuMTItLjM5LjI2LS43Ny4zNy0xLjE2IDEuMDgtNC45NCAyLjMzLTkuODMgMy4zOS0xNC43NXptNS45Ny0uMmMuMzYuMDUuNzIuMTIgMS4wOC4yLjk4IDMuODUgMS43MyA3Ljc2IDIuNzEgMTEuNjEuMzYgMS40Mi41NiAyLjg4IDEuMDMgNC4yNyAyLjUzLjE4IDUuMDctLjAxIDcuNjEuMDUgNS4xNi4xMiAxMC4zMy4xMiAxNS40OS4wNy43Ni0uMDEgMS41Mi4wMyAyLjI4LjA4LS4wNC4zNi0uMDcuNzItLjEgMS4wOC0xLjgyLjgzLTMuNzggMS4yNS01LjY3IDEuODktMy43MyAxLjIzLTcuNDggMi4zOS0xMS4yMiAzLjU3LS41Ny4xNy0xLjEyLjQyLTEuNjcuNjQtLjE1LjU1LS4xOCAxLjEyLS4xMiAxLjY5Ljg3LjQ4IDEuODIuODEgMi43NyAxLjA5IDQuODggMS41MiA5LjczIDMuMTQgMTQuNjMgNC42LjM4LjEzLjc4LjI3IDEuMTMuNDkuNC4yNy4yMy43OS4xNSAxLjE4LTEuNjYuMTMtMy4zMS4wMy00Ljk3LjA0LTUuMTcuMDEtMTAuMzMtLjAxLTE1LjUuMDEtMS42MS4wMy0zLjIyLS4wMi00LjgyLjIxLS41MiAxLjY3LS43MiAzLjQyLTEuMTcgNS4xMS0uOTQgMy41Ny0xLjUyIDcuMjQtMi41NCAxMC43OC0uMzYuMDEtLjcxLjAyLTEuMDYuMDYtLjI5LTEuNzMtLjE1LTMuNDgtLjE1LTUuMjJ2LTM4LjEzYy4wMi0xLjc4LS4wOC0zLjU4LjExLTUuMzd6TTY1LjA1IDE2OC4zM2MxLjEyLTIuMTUgMi4wOC00LjQgMy4zNy02LjQ2LTEuODIgNy41Ni0yLjkxIDE1LjI3LTMuNjIgMjMtLjggNy43MS0uODUgMTUuNDktLjU0IDIzLjIzIDEuMDUgMTkuOTQgNS41NCAzOS44MyAxNC4yMyA1Ny44OCAyLjk5IDUuOTkgNi4zNSAxMS44MyAxMC41IDE3LjExIDYuMTIgNy40NyAxMi41MyAxNC43NiAxOS44NCAyMS4wOSA0LjggNC4xIDkuOTkgNy43OCAxNS41NCAxMC44IDMuMjcgMS42NSA2LjUxIDMuMzkgOS45NCA0LjY4IDUuMDEgMi4wMyAxMC4xOSAzLjYxIDE1LjQyIDQuOTQgMy44My45NiA3Ljc4IDEuNDEgMTEuNTIgMi43MSA1IDEuNTcgOS40NyA0LjYxIDEzLjAzIDguNDMgNC45MyA1LjIzIDguMDkgMTEuODcgMTAuMiAxOC42Ny45OSAyLjkgMS41OSA1LjkxIDIuMTcgOC45Mi4xNS43NS4yMiAxLjUyLjE2IDIuMjktNi41IDIuNzgtMTMuMjYgNS4wNi0yMC4yNiA2LjE4LTQuMTEuNzgtOC4yOS45OS0xMi40NiAxLjA4LTEwLjI1LjI0LTIwLjQ3LTEuNzYtMzAuMTItNS4xMi0zLjc0LTEuNDItNy40OS0yLjg1LTExLjAzLTQuNzItOC4wNi0zLjg0LTE1LjY0LTguNy0yMi40Ni0xNC40Ni0yLjkyLTIuNTUtNS44My01LjEzLTguNC04LjAzLTkuMTYtOS44My0xNi4zLTIxLjQxLTIxLjc5LTMzLjY1LTIuMzktNS41NS00LjYxLTExLjE4LTYuMzctMTYuOTYtMS4xNy0zLjk0LTIuMzYtNy44OS0zLjI2LTExLjkxLS43NS0yLjk0LTEuMjItNS45NS0xLjg3LTguOTItLjQ2LTIuMTQtLjY5LTQuMzItMS4wMy02LjQ4LS44NS01LjQzLTEuMjgtMTAuOTMtMS4zMy0xNi40My4xMS02LjE4LjI1LTEyLjM3IDEuMDctMTguNS40LTIuODYuNjctNS43NCAxLjE1LTguNi45OC01LjcgMi4xNC0xMS4zNyAzLjcxLTE2LjkzIDMuMDktMTEuNjUgNy40OC0yMi45NSAxMi42OS0zMy44NHptMzYzLjczLTYuNDRjMS4xIDEuNjYgMS45MSAzLjQ4IDIuNzggNS4yNiAyLjEgNC40NSA0LjI0IDguOSA2LjAyIDEzLjQ5IDcuNjEgMTguNzYgMTIuMyAzOC43OSAxMy4wNCA1OS4wNS4wMiAxLjc2LjA3IDMuNTIuMTEgNS4yOS4xMyA5LjU3LTEuMjcgMTkuMDktMy4xOCAyOC40NS0uNzMgMy41OS0xLjU0IDcuMTctMi41OCAxMC42OS00LjA0IDE0LjcyLTEwIDI5LTE4LjQxIDQxLjc4LTguMjEgMTIuNTctMTkuMDEgMjMuNTUtMzEuODQgMzEuNDEtNS43MyAzLjU5LTExLjc5IDYuNjQtMTguMDUgOS4xOS01Ljc4IDIuMTktMTEuNzEgNC4wMy0xNy44IDUuMTEtNi40IDEuMDUtMTIuOTEgMS41Mi0xOS40IDEuMjMtNy45Mi0uNDgtMTUuNzgtMi4wNy0yMy4yMS00Ljg1LTEuOTQtLjgtMy45NC0xLjQ2LTUuODQtMi4zMy0uMjEtMS41MS4yNS0yLjk5LjUzLTQuNDYgMS4xNi01Ljc0IDMuMDMtMTEuMzYgNS43LTE2LjU4IDIuMzctNC41MSA1LjUyLTguNjUgOS40Ni0xMS45IDIuNDMtMi4wNSA1LjI0LTMuNjEgOC4xNi00LjgzIDMuNTgtMS41IDcuNDctMS45NyAxMS4yNC0yLjgzIDcuMjMtMS43MSAxNC4zNy0zLjkzIDIxLjE1LTcgMTAuMzUtNC42NSAxOS43MS0xMS4zOCAyNy42NS0xOS40NiAxLjU5LTEuNjEgMy4yMy0zLjE4IDQuNzQtNC44NyAzLjM3LTMuNzYgNi43MS03LjU3IDkuODUtMTEuNTMgNy40OC0xMC4wNyAxMi44Mi0yMS41OSAxNi43MS0zMy40OCAxLjU4LTUuMyAzLjIxLTEwLjYgNC4yMS0xNi4wNS42My0yLjg3IDEuMDQtNS43OCAxLjUyLTguNjguODctNi4wOSAxLjU5LTEyLjIyIDEuNjgtMTguMzguMTItNi42NS4xNC0xMy4zMi0uNTMtMTkuOTQtLjczLTcuOTktMS44Ny0xNS45Ni0zLjcxLTIzLjc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcGVuY2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjMuMyA0NDAuN2MwIDI1LjMtMjAuMyA0NS42LTQ1LjYgNDUuNnMtNDUuOC0yMC4zLTQ1LjgtNDUuNiAyMC42LTQ1LjggNDUuOC00NS44YzI1LjQgMCA0NS42IDIwLjUgNDUuNiA0NS44em0tMjUzLjktNDUuOGMtMjUuMyAwLTQ1LjYgMjAuNi00NS42IDQ1LjhzMjAuMyA0NS42IDQ1LjYgNDUuNiA0NS44LTIwLjMgNDUuOC00NS42LTIwLjUtNDUuOC00NS44LTQ1Ljh6bTI5MS43LTI3MEMxNTguOSAxMjQuOSA4MS45IDExMi4xIDAgMjUuN2MzNC40IDUxLjcgNTMuMyAxNDguOSAzNzMuMSAxNDQuMiAzMzMuMy01IDEzMCA4Ni4xIDcwLjggMTg4LjkgMTg2LjctMTY2LjcgMzE5LjQtMjMzLjkgMTcuMi0yMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3BlbmlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MS41IDQzMmwtNjggMzJDODguNSA0NTMuNyAwIDM5Mi41IDAgMzE4LjJjMC03MS41IDgyLjUtMTMxIDE5MS43LTE0NC4zdjQzYy03MS41IDEyLjUtMTI0IDUzLTEyNCAxMDEuMyAwIDUxIDU4LjUgOTMuMyAxMzUuNyAxMDN2LTM0MGw2OC0zMy4ydjM4NHpNNDQ4IDI5MWwtMTMxLjMtMjguNSAzNi44LTIwLjdjLTE5LjUtMTEuNS00My41LTIwLTcwLTI0Ljh2LTQzYzQ2LjIgNS41IDg3LjcgMTkuNSAxMjAuMyAzOS4zbDM1LTE5LjhMNDQ4IDI5MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3BlbnN1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcxLjEgMTAyLjdzLS4zIDE4LjMtLjMgMjAuM2MtOS4xLTMtNzQuNC0yNC4xLTEzNS43LTI2LjNjLTUxLjktMS44LTEyMi44LTQuMy0yMjMgNTcuM2MtMTkuNCAxMi40LTczLjkgNDYuMS05OS42IDEwOS43QzcgMjc3LS4xIDMwNyA3IDMzNS4xYzMuMyAxMi44IDguOSAyNC45IDE2LjUgMzUuN2MxNy40IDI1IDQ2LjYgNDEuNiA3OC4xIDQ0LjRjNDQuNCAzLjkgNzguMS0xNiA5MC01My4zYzguMi0yNS44IDAtNjMuNi0zMS41LTgyLjljLTI1LjYtMTUuNy01My4zLTEyLjEtNjkuMi0xLjZjLTEzLjkgOS4yLTIxLjggMjMuNS0yMS42IDM5LjJjLjMgMjcuOCAyNC4zIDQyLjYgNDEuNSA0Mi42YzUuNCAwIDEwLjctLjkgMTUuOC0yLjdjNi41LTEuOCAxMy4zLTYuNSAxMy4zLTE0LjljMC0xMi4xLTExLjYtMTQuOC0xNi44LTEzLjljLTIuOSAuNS00LjUgMi0xMS44IDIuNGMtMi0uMi0xMi0zLjEtMTItMTRWMzE2Yy4yLTEyLjMgMTMuMi0xOCAyNS41LTE2LjljMzIuMyAyLjggNDcuNyA0MC43IDI4LjUgNjUuN0MxMzUgMzg4LjUgNzYuNyAzODggNTMuNiAzNDQuNGMtMjYtNDkuMiAxMi43LTExMS4yIDg3LTk4LjRjMzMuMiA1LjcgODMuNiAzNS41IDEwMi40IDEwNC4zaDQ1LjljLTUuNy0xNy42LTguOS02OC4zIDQyLjctNjguM2M1Ni43IDAgNjMuOSAzOS45IDc5LjggNjguM0g0NjBjLTEyLjgtMTguMy0yMS43LTM4LjctMTguOS01NS44YzUuNi0zMy44IDM5LjctMTguNCA4Mi40LTE3LjRjNjYuNSAuNCAxMDIuMS0yNyAxMDMuMS0yOGMzLjctMy4xIDYuNS0xNS44IDctMTcuN2MxLjMtNS4xLTMuMi0yLjQtMy4yLTIuNGMtOC43IDUuMi0zMC41IDE1LjItNTAuOSAxNS42Yy0yNS4zIC41LTc2LjItMjUuNC04MS42LTI4LjJjLS4zLS40IC4xIDEuMi0xMS0yNS41Yzg4LjQgNTguMyAxMTguMyA0MC41IDE0NS4yIDIxLjdjLjgtLjYgNC4zLTIuOSAzLjYtNS43Yy0xMy44LTQ4LjEtMjIuNC02Mi43LTM0LjUtNjkuNmMtMzctMjEuNi0xMjUtMzQuNy0xMjkuMi0zNS4zYy4xLS4xLS45LS4zLS45IC43bDAgMHptMTM1LjYgNzUuNGEzNy42IDM3LjYgMCAxIDEgLTc1LjItMi42IDM3LjYgMzcuNiAwIDEgMSA3NS4yIDIuNnptLTM2LjYtMjcuOWEyNi4zIDI2LjMgMCAxIDAgLTEuNyA1Mi41IDI2LjMgMjYuMyAwIDEgMCAxLjctNTIuNXptNC4zIDI4LjhjLTE1LjQgMC0xNS40LTE1LjYgMC0xNS42czE1LjQgMTUuNiAwIDE1LjZ2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3BlcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEzLjkgMzIuN2MtMTcwLjIgMC0yNTIuNiAyMjMuOC0xNDcuNSAzNTUuMSAzNi41IDQ1LjQgODguNiA3NS42IDE0Ny41IDc1LjYgMzYuMyAwIDcwLjMtMTEuMSA5OS40LTMwLjQtNDMuOCAzOS4yLTEwMS45IDYzLTE2NS4zIDYzLTMuOSAwLTggMC0xMS45LS4zQzEwNC42IDQ4OS42IDAgMzgxLjEgMCAyNDggMCAxMTEgMTExIDAgMjQ4IDBoLjhjNjMuMS4zIDEyMC43IDI0LjEgMTY0LjQgNjMuMS0yOS0xOS40LTYzLjEtMzAuNC05OS4zLTMwLjR6bTEwMS44IDM5Ny43Yy00MC45IDI0LjctOTAuNyAyMy42LTEzMi01LjggNTYuMi0yMC41IDk3LjctOTEuNiA5Ny43LTE3Ni42IDAtODQuNy00MS4yLTE1NS44LTk3LjQtMTc2LjYgNDEuOC0yOS4yIDkxLjItMzAuMyAxMzIuOS01IDEwNS45IDk4LjcgMTA1LjUgMjY1LjctMS4yIDM2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3B0aW5Nb25zdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3Mi42IDQyMS40YzUuNi05LjUgNC43LTE1LjItNS40LTExLjYtMy00LjktNy05LjUtMTEuMS0xMy44IDIuOS05LjctLjctMTQuMi0xMC44LTkuMi00LjYtMy4yLTEwLjMtNi41LTE1LjktOS4yIDAtMTUuMS0xMS42LTExLjYtMTcuNi01LjctMTAuNC0xLjUtMTguNy0uMy0yNi44IDUuNy4zLTYuNS4zLTEzIC4zLTE5LjcgMTIuNiAwIDQwLjItMTEgNDUuOS0zNi4yIDEuNC02LjggMS42LTEzLjgtLjMtMjEuOS0zLTEzLjUtMTQuMy0yMS4zLTI1LjEtMjUuNy0uOC01LjktNy42LTE0LjMtMTQuOS0xNS45cy0xMi40IDQuOS0xNC4xIDEwLjNjLTguNSAwLTE5LjIgMi44LTIxLjEgOC40LTUuNC0uNS0xMS4xLTEuNC0xNi44LTEuOSAyLjctMS45IDUuNC0zLjUgOC40LTQuNiA1LjQtOS4yIDE0LjYtMTEuNCAyNS43LTExLjZWMjU2YzE5LjUtLjUgNDMtNS45IDUzLjgtMTguMSAxMi43LTEzLjggMTQuNi0zNy4zIDEyLjQtNTUuMS0yLjQtMTcuMy05LjctMzcuNi0yNC42LTQ4LjEtOC40LTUuOS0yMS42LS44LTIyLjcgOS41LTIuMiAxOS42IDEuMiAzMC0zOC42IDI1LjEtMTAuMy0yMy44LTI0LjYtNDQuNi00Mi43LTYwQzM0MSA0OS42IDI0Mi45IDU1LjUgMTY2LjQgNzEuN2MxOS43IDQuNiA0MS4xIDguNiA1OS43IDE2LjUtMjYuMiAyLjQtNTIuNyAxMS4zLTc2LjIgMjMuMi0zMi44IDE3LTQ0IDI5LjktNTYuNyA0Mi40IDE0LjktMi4yIDI4LjktNS4xIDQzLjgtMy44LTkuNyA1LjQtMTguNCAxMi4yLTI2LjUgMjAtMjUuOC45LTIzLjgtNS4zLTI2LjItMjUuOS0xLjEtMTAuNS0xNC4zLTE1LjQtMjIuNy05LjctMjguMSAxOS45LTMzLjUgNzkuOS0xMi4yIDEwMy41IDEwLjggMTIuMiAzNS4xIDE3LjMgNTQuOSAxNy44LS4zIDEuMS0uMyAxLjktLjMgMi43IDEwLjguNSAxOS41IDIuNyAyNC42IDExLjYgMyAxLjEgNS43IDIuNyA4LjEgNC42LTUuNC41LTExLjEgMS40LTE2LjUgMS45LTMuMy02LjYtMTMuNy04LjEtMjEuMS04LjEtMS42LTUuNy02LjUtMTIuMi0xNC4xLTEwLjMtNi44IDEuOS0xNC4xIDEwLTE0LjkgMTUuOS0yMi41IDkuNS0zMC4xIDI2LjgtMjUuMSA0Ny42IDUuMyAyNC44IDMzIDM2LjIgNDUuOSAzNi4ydjE5LjdjLTYuNi01LTE0LjMtNy41LTI2LjgtNS43LTUuNS01LjUtMTcuMy0xMC4xLTE3LjMgNS43LTUuOSAyLjctMTEuNCA1LjktMTUuOSA5LjItOS44LTQuOS0xMy42LTEuNy0xMS4xIDkuMi00LjEgNC4zLTcuOCA4LjYtMTEuMSAxMy44LTEwLjItMy43LTExIDIuMi01LjQgMTEuNi0xLjEgMy41LTEuNiA3LTEuOSAxMC44LS41IDMxLjYgNDQuNiA2NCA3My41IDY1LjEgMTcuMy41IDM0LjYtOC40IDQzLTIzLjUgMTEzLjIgNC45IDIyNi43IDQuMSAzNDAuMiAwIDguMSAxNS4xIDI1LjQgMjQuMyA0Mi43IDIzLjUgMjkuMi0xLjEgNzQuMy0zMy41IDczLjUtNjUuMS4yLTMuNy0uNy03LjItMS43LTEwLjd6bS03My44LTI1NGMxLjEtMyAyLjQtOC40IDIuNC0xNC42IDAtNS45IDYuOC04LjEgMTQuMS0uOCAxMS4xIDExLjYgMTQuOSA0MC41IDEzLjggNTEuMS00LjEtMTMuNi0xMy0yOS0zMC4zLTM1Ljd6bS00LjYgNi43YzE5LjUgNi4yIDI4LjYgMjcuNiAyOS43IDQ4LjktMS4xIDIuNy0zIDUuNC00LjkgNy42LTUuNyA1LjktMTUuNCAxMC0yNi4yIDEyLjIgNC4zLTIxLjMuMy00Ny4zLTEyLjctNjMgNC45LS44IDEwLjktMi40IDE0LjEtNS43em0tMjQuMSA2LjhjMTMuOCAxMS45IDIwIDM5LjIgMTQuMSA2My41LTQuMS41LTguMS44LTExLjYuOC0xLjktMjEuOS02LjgtNDQtMTQuMy02NC42IDMuNy4zIDguMS4zIDExLjguM3pNNDcuNSAyMDNjLTEuMS0xMC41IDIuNC0zOS41IDEzLjgtNTEuMSA3LTcuMyAxNC4xLTUuMSAxNC4xLjggMCA2LjIgMS40IDExLjYgMi40IDE0LjYtMTcuMyA2LjgtMjYuMiAyMi4yLTMwLjMgMzUuN3ptOS43IDI3LjZjLTEuOS0yLjItMy41LTQuOS00LjktNy42IDEuNC0yMS4zIDEwLjMtNDIuNyAyOS43LTQ4LjkgMy4yIDMuMiA5LjIgNC45IDE0LjEgNS43LTEzIDE1LjctMTcgNDEuNi0xMi43IDYzLTEwLjgtMi4yLTIwLjUtNi0yNi4yLTEyLjJ6bTQ3LjkgMTQuNmMtNC4xIDAtOC4xLS4zLTEyLjctLjgtNC42LTE4LjYtMS45LTM4LjkgNS40LTUzdi4zbDEyLjItNS4xYzQuOS0xLjkgOS43LTMuOCAxNC45LTQuOS0xMC43IDE5LjctMTcuNCA0MS4zLTE5LjggNjMuNXptMTg0LTE2Mi43YzQxLjkgMCA3Ni4yIDM0IDc2LjIgNzUuOSAwIDQyLjItMzQuMyA3Ni4yLTc2LjIgNzYuMnMtNzYuMi0zNC03Ni4yLTc2LjJjMC00MS44IDM0LjMtNzUuOSA3Ni4yLTc1Ljl6bTExNS42IDE3NC4zYy0uMyAxNy44LTcgNDguOS0yMyA1Ny0xMy4yIDYuNi02LjUtNy41LTE2LjUtNTguMSAxMy4zLjMgMjYuNi4zIDM5LjUgMS4xem0tNTQtMS42Yy44IDQuOSAzLjggNDAuMy0xLjYgNDEuOS0xMS42IDMuNS00MCA0LjMtNTEuMS0xLjEtNC4xLTMtNC42LTM1LjktNC4zLTQxLjF2LjNjMTguOS0uMyAzOC4xLS4zIDU3IDB6TTI3OC4zIDMwOWMtMTMgMy41LTQxLjYgNC4xLTU0LjYtMS42LTYuNS0yLjctMy44LTQyLjQtMS45LTUxLjYgMTkuMi0uNSAzOC40LS41IDU3LjgtLjh2LjNjMS4xIDguMyAzLjMgNTEuMi0xLjMgNTMuN3ptLTEwNi41LTUxLjFjMTIuMi0uOCAyNC42LTEuNCAzNi44LTEuNi0yLjQgMTUuNC0zIDQzLjUtNC45IDUyLjItMS4xIDYuOC00LjMgNi44LTkuNyA0LjMtMjEuOS05LjgtMjcuNi0zNS4yLTIyLjItNTQuOXptLTM1LjQgMzEuM2M3LjgtMS4xIDE1LjctMS45IDIzLjUtMi43IDEuNiA2LjIgMy44IDExLjkgNyAxNy42IDEwIDE3IDQ0IDM1LjcgNDUuMSA3IDYuMiAxNC45IDQwLjggMTIuMiA1NC45IDEwLjggMTUuNy0xLjQgMjMuOC0xLjQgMjYuOC0xNC4zIDEyLjQgNC4zIDMwLjggNC4xIDQ0IDMgMTEuMy0uOCAyMC44LS41IDI0LjYtOC45IDEuMSA1LjEgMS45IDExLjYgNC42IDE2LjggMTAuOCAyMS4zIDM3LjMgMS40IDQ2LjgtMzEuNiA4LjYuOCAxNy42IDEuOSAyNi41IDIuNy0uNCAxLjMtMy44IDcuMyA3LjMgMTEuNi00Ny42IDQ3LTk1LjcgODcuOC0xNjMuMiAxMDctNjMuMi0yMC44LTExMi4xLTU5LjUtMTU1LjktMTA2LjUgOS42LTMuNCAxMC40LTguOCA4LTEyLjV6bS0yMS42IDE3Mi41Yy0zLjggMTcuOC0yMS45IDI5LjctMzkuNyAyOC45LTE5LjItLjgtNDYuNS0xNy01OS4yLTM2LjUtMi43LTMxLjEgNDMuOC02MS4zIDY2LjItNTQuNiAxNC45IDQuMyAyNy44IDMwLjggMzMuNSA1NCAwIDMtLjMgNS43LS44IDguMnptLTguNy02NmMtLjUtMTMuNS0uNS0yNy0uMy00MC41aC4zYzIuNy0xLjYgNS43LTMuOCA3LjgtNi41IDYuNS0xLjYgMTMtNS4xIDE1LjEtOS4yIDMuMy03LjEtNy03LjUtNS40LTEyLjQgMi43LTEuMSA1LjctMi4yIDcuOC0zLjUgMjkuMiAyOS4yIDU4LjYgNTYuNSA5Ny4zIDc3LTM2LjggMTEuMy03Mi40IDI3LjYtMTA1LjkgNDctMS4yLTE4LjYtNy43LTM1LjktMTYuNy01MS45em0zMzcuNiA2NC42Yy0xMDMgMy41LTIwNi4yIDQuMS0zMDkuNCAwIDAgLjMgMCAuMy0uMy4zdi0uM2guM2MzNS4xLTIxLjYgNzIuMi0zOS4yIDExMi40LTUwLjggMTEuNiA1LjEgMjMgOS41IDM0LjkgMTMuMiAyLjIuOCAyLjIuOCA0LjMgMCAxNC4zLTQuMSAyOC40LTkuMiA0Mi4yLTE1LjQgNDEuNSAxMS43IDc4LjggMzEuNyAxMTUuNiA1M3ptMTAuNS0xMi40Yy0zNS45LTE5LjUtNzMtMzUuOS0xMTEuOS00Ny42IDM4LjEtMjAgNzEuOS00Ny4zIDEwMy41LTc2LjcgMi4yIDEuNCA0LjYgMi40IDcuNiAzLjIgMCAuOC4zIDEuOS41IDIuNC00LjYgMi43LTcuOCA2LjItNS45IDEwLjMgMi4yIDMuOCA4LjYgNy42IDE1LjEgOC45IDIuNCAyLjcgNS4xIDUuMSA4LjEgNi44IDAgMTMuOC0uMyAyNy42LS44IDQxLjNsLjMtLjNjLTkuMyAxNS45LTE1LjUgMzctMTYuNSA1MS43em0xMDUuOSA2LjJjLTEyLjcgMTkuNS00MCAzNS43LTU5LjIgMzYuNS0xOS4zLjktNDAuNS0xMy4yLTQwLjUtMzcgNS43LTIzLjIgMTguOS00OS43IDMzLjUtNTQgMjIuNy02LjkgNjkuMiAyMy40IDY2LjIgNTQuNXpNMzcyLjkgNzUuMmMtMy44LTcyLjEtMTAwLjgtNzkuNy0xMjYtMjMuNSA0NC42LTI0LjMgOTAuMy0xNS43IDEyNiAyMy41ek03NC44IDQwNy4xYy0xNS43IDEuNi00OS41IDI1LjQtNDkuNSA0My4yIDAgMTEuNiAxNS43IDE5LjUgMzIuMiAxNC45IDEyLjItMy4yIDMxLjEtMTcuNiAzNS45LTI3LjMgNi0xMS42LTMuNy0zMi43LTE4LjYtMzAuOHptMjE1LjktMTc2LjJjMjguNiAwIDUxLjktMjEuNiA1MS45LTQ4LjQgMC0zNi4xLTQwLjUtNTguMS03Mi4yLTQ0LjMgOS41IDMgMTYuNSAxMS42IDE2LjUgMjEuNiAwIDIzLjMtMzMuMyAzMi00Ni41IDExLjMtNy4zIDM0LjEgMTkuNCA1OS44IDUwLjMgNTkuOHpNNjggNDc0LjFjLjUgNi41IDEyLjIgMTIuNyAyMS42IDkuNSA2LjgtMi43IDE0LjYtMTAuNSAxNy4zLTE2LjIgMy03LTEuMS0yMC05LjctMTguNC04LjkgMS42LTI5LjcgMTYuNy0yOS4yIDI1LjF6bTQzMy4yLTY3Yy0xNC45LTEuOS0yNC42IDE5LjItMTguOSAzMC44IDQuOSA5LjcgMjQuMSAyNC4xIDM2LjIgMjcuMyAxNi41IDQuNiAzMi4yLTMuMiAzMi4yLTE0LjkgMC0xNy44LTMzLjgtNDEuNi00OS41LTQzLjJ6TTQ3OC44IDQ0OWMtOC40LTEuNi0xMi40IDExLjMtOS41IDE4LjQgMi40IDUuNyAxMC4zIDEzLjUgMTcuMyAxNi4yIDkuMiAzLjIgMjEuMS0zIDIxLjMtOS41LjktOC40LTIwLjItMjMuNS0yOS4xLTI1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9yY2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NC43NSAxODguMTloLTQ1LjkyVjM0Mmg0Ny40N2M2Ny42MiAwIDgzLjEyLTUxLjM0IDgzLjEyLTc2LjkxIDAtNDEuNjQtMjYuNTQtNzYuOS04NC42Ny03Ni45ek0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0tODAuNzkgMzYwLjc2aC0yOS44NHYtMjA3LjVoMjkuODR6bS0xNC45Mi0yMzEuMTRhMTkuNTcgMTkuNTcgMCAxIDEgMTkuNTctMTkuNTcgMTkuNjQgMTkuNjQgMCAwIDEtMTkuNTcgMTkuNTd6TTMwMCAzNjloLTgxVjE2MS4yNmg4MC42Yzc2LjczIDAgMTEwLjQ0IDU0LjgzIDExMC40NCAxMDMuODVDNDEwIDMxOC4zOSAzNjguMzggMzY5IDMwMCAzNjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9zaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI2Ni40NEMxMC4zIDEzMC42NCAxMDUuNCAzNCAyMjEuOCAxOC4zNGMxMzguOC0xOC42IDI1NS42IDc1LjggMjc4IDIwMS4xIDIxLjMgMTE4LjgtNDQgMjMwLTE1MS42IDI3NC05LjMgMy44LTE0LjQgMS43LTE4LTcuN3EtMjYuNy02OS40NS01My40LTEzOWMtMy4xLTguMS0xLTEzLjIgNy0xNi44IDI0LjItMTEgMzkuMy0yOS40IDQzLjMtNTUuOGE3MS40NyA3MS40NyAwIDAgMC02NC41LTgyLjJjLTM5LTMuNC03MS44IDIzLjctNzcuNSA1OS43LTUuMiAzMyAxMS4xIDYzLjcgNDEuOSA3Ny43IDkuNiA0LjQgMTEuNSA4LjYgNy44IDE4LjRxLTI2Ljg1IDY5LjktNTMuNyAxMzkuOWMtMi42IDYuOS04LjMgOS4zLTE1LjUgNi41LTUyLjYtMjAuMy0xMDEuNC02MS0xMzAuOC0xMTktMjQuOS00OS4yLTI1LjItODcuNy0yNi44LTEwOC43em0yMC45LTEuOWMuNCA2LjYuNiAxNC4zIDEuMyAyMi4xIDYuMyA3MS45IDQ5LjYgMTQzLjUgMTMxIDE4My4xIDMuMiAxLjUgNC40LjggNS42LTIuM3EyMi4zNS01OC42NSA0NS0xMTcuM2MxLjMtMy4zLjYtNC44LTIuNC02LjctMzEuNi0xOS45LTQ3LjMtNDguNS00NS42LTg2IDEtMjEuNiA5LjMtNDAuNSAyMy44LTU2LjMgMzAtMzIuNyA3Ny0zOS44IDExNS41LTE3LjZhOTEuNjQgOTEuNjQgMCAwIDEgNDUuMiA5MC40Yy0zLjYgMzAuNi0xOS4zIDUzLjktNDUuNyA2OS44LTIuNyAxLjYtMy41IDIuOS0yLjMgNnEyMi44IDU4LjggNDUuMiAxMTcuN2MxLjIgMy4xIDIuNCAzLjggNS42IDIuMyAzNS41LTE2LjYgNjUuMi00MC4zIDg4LjEtNzIgMzQuOC00OC4yIDQ5LjEtMTAxLjkgNDIuMy0xNjEtMTMuNy0xMTcuNS0xMTkuNC0yMTQuOC0yNTUuNS0xOTgtMTA2LjEgMTMtMTk1LjMgMTAyLjUtMTk3LjEgMjI1Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhZGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTcuOSAwTDI5OCAuMDAxQzMwNS42IC4xMDc4IDMxMi40IDQuNzIgMzE1LjUgMTEuNzhMNDQ3LjUgMzIwLjNMNDQ3LjggMzIwLjJMNDQ4IDMyMC42TDQ0NS4yIDMzMC42TDQwMi4zIDQ4OC42QzM5OC42IDUwNC44IDM4Mi42IDUxNC45IDM2Ni41IDUxMS4yTDI5OC4xIDQ5NS42TDIyOS42IDUxMS4yQzIxMy41IDUxNC45IDE5Ny41IDUwNC44IDE5My44IDQ4OC42TDE1MC45IDMzMC42TDE0OC4yIDMyMC42TDE0OC4zIDMyMC4yTDI4MC40IDExLjc4QzI4My40IDQuNzk3IDI5MC4zIC4xODM3IDI5Ny45IC4wMDA2TDI5Ny45IDB6TTE2MC4xIDMyMi4xTDI5MS4xIDM2MS4yTDI5OCA0ODMuN0wzMDUuOSAzNjIuMkw0MzYuNSAzMjIuOUw0MzYuNyAzMjIuOEwzMDUuNyAzNDcuOUwyOTcuMSAyNy43MkwyOTEuOSAzNDcuOUwxNjAuMSAzMjIuMXpNNDI2IDIyMi42TDUyMC40IDE4MS42SDU5NC4yTDQzNy4yIDQyOS4yTDQ2OC44IDMyMC4yTDQyNiAyMjIuNnpNNTk3LjUgMTgxLjRMNjM4LjkgMjU3LjZDNjQyLjkgMjY1LjEgNjM1IDI3My41IDYyNy4zIDI2OS44TDU3OS43IDI0Ny4xTDU5Ny41IDE4MS40ek0xMjcuMyAzMTguNUwxNTguNyA0MzBMMS42MSAxNTQuNUMtNC4yOTIgMTQ0LjEgNy4xMjggMTMyLjUgMTcuNTUgMTM4LjNMMTY5LjQgMjIyLjVMMTI3LjMgMzE4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhZ2U0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA1MDRDMTExIDUwNCAwIDM5MyAwIDI1NlMxMTEgOCAyNDggOGMyMC45IDAgNDEuMyAyLjYgNjAuNyA3LjVMNDIuMyAzOTJIMjQ4djExMnptMC0xNDMuNlYxNDYuOEw5OC42IDM2MC40SDI0OHptOTYgMzEuNnY5Mi43YzQ1LjctMTkuMiA4NC41LTUxLjcgMTExLjQtOTIuN0gzNDR6bTU3LjQtMTM4LjJsLTIxLjIgOC40IDIxLjIgOC4zdi0xNi43em0tMjAuMyA1NC41Yy02LjcgMC04IDYuMy04IDEyLjl2Ny43aDE2LjJ2LTEwYzAtNS45LTIuMy0xMC42LTguMi0xMC42ek00OTYgMjU2YzAgMzcuMy04LjIgNzIuNy0yMyAxMDQuNEgzNDRWMjcuM0M0MzMuMyA2NC44IDQ5NiAxNTMuMSA0OTYgMjU2ek0zNjAuNCAxNDMuNmg2OC4yVjk2aC0xMy45djMyLjZoLTEzLjlWOTloLTEzLjl2MjkuNmgtMTIuN1Y5NmgtMTMuOXY0Ny42em02OC4xIDE4NS4zSDQwMnYtMTFjMC0xNS40LTUuNi0yNS4yLTIwLjktMjUuMi0xNS40IDAtMjAuNyAxMC42LTIwLjcgMjUuOXYyNS4zaDY4LjJ2LTE1em0wLTEwM2wtNjguMiAyOS43VjI2OGw2OC4yIDI5LjV2LTE2LjZsLTE0LjQtNS43di0yNi41bDE0LjQtNS45di0xNi45em0tNC44LTY4LjVoLTM1LjZWMTg0SDQwMnYtMTIuMmgxMWM4LjYgMTUuOCAxLjMgMzUuMy0xOC42IDM1LjMtMjIuNSAwLTI4LjMtMjUuMy0xNS41LTM3LjdsLTExLjYtMTAuNmMtMTYuMiAxNy41LTEyLjIgNjMuOSAyNy4xIDYzLjkgMzQgMCA0NC43LTM1LjkgMjkuMy02NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWdlbGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMxMi43Yy01NS4xIDEzNi43LTE4Ny4xIDU0LTE4Ny4xIDU0LTQwLjUgODEuOC0xMDcuNCAxMzQuNC0xODQuNiAxMzQuNy0xNi4xIDAtMTYuNi0yNC40IDAtMjQuNCA2NC40LS4zIDEyMC41LTQyLjcgMTU3LjItMTEwLjEtNDEuMSAxNS45LTExOC42IDI3LjktMTYxLjYtODIuMiAxMDktNDQuOSAxNTkuMSAxMS4yIDE3OC4zIDQ1LjUgOS45LTI0LjQgMTctNTAuOSAyMS42LTc5LjcgMCAwLTEzOS43IDIxLjktMTQ5LjUtOTguMSAxMTkuMS00Ny45IDE1Mi42IDc2LjcgMTUyLjYgNzYuNyAxLjYtMTYuNyAzLjMtNTIuNiAzLjMtNTMuNCAwIDAtMTA2LjMtNzMuNy0zOC4xLTE2NS4yIDEyNC42IDQzIDYxLjQgMTYyLjQgNjEuNCAxNjIuNC41IDEuNi41IDIzLjggMCAzMy40IDAgMCA0NS4yLTg5IDEzNi40LTU3LjUtNC4yIDEzNC0xNDEuOSAxMDYuNC0xNDEuOSAxMDYuNC00LjQgMjcuNC0xMS4yIDUzLjQtMjAgNzcuNSAwIDAgODMtOTEuOCAxNzItMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhbGZlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQuOSAxOTMuOWMwLTQ3LjQtNTUuMi00NC4yLTk1LjQtMjkuOC0xLjMgMzkuNC0yLjUgODAuNy0zIDExOS44LjcgMi44IDIuNiA2LjIgMTUuMSA2LjIgMzYuOCAwIDgzLjQtNDIuOCA4My4zLTk2LjJ6bS0xOTQuNSA3Mi4yYy4yIDAgNi41LTIuNyAxMS4yLTIuNyAyNi42IDAgMjAuNyA0NC4xLTE0LjQgNDQuMS0yMS41IDAtMzcuMS0xOC4xLTM3LjEtNDMgMC00MiA0Mi45LTk1LjYgMTAwLjctMTI2LjUgMS0xMi40IDMtMjIgMTAuNS0yOC4yIDExLjItOSAyNi42LTMuNSAyOS41IDExLjEgNzIuMi0yMi4yIDEzNS4yIDEgMTM1LjIgNzIgMCA3Ny45LTc5LjMgMTUyLjYtMTQwLjEgMTM4LjItLjEgMzkuNC45IDc0LjQgMi43IDEwMHYuMmMuMiAzLjQuNiAxMi41LTUuMyAxOS4xLTkuNiAxMC42LTMzLjQgMTAtMzYuNC0yMi4zLTQuMS00NC40LjItMjA2LjEgMS40LTI0Mi41LTIxLjUgMTUtNTguNSA1MC4zLTU4LjUgNzUuOS4yIDIuNS40IDQgLjYgNC42ek04IDE4MS4xcy0uMSAzNy40IDM4LjQgMzcuNGgzMGwyMi40IDIxNy4yczAgNDQuMyA0NC43IDQ0LjNoMjg4LjlzNDQuNy0uNCA0NC43LTQ0LjNsMjIuNC0yMTcuMmgzMHMzOC40IDEuMiAzOC40LTM3LjRjMCAwIC4xLTM3LjQtMzguNC0zNy40aC0zMC4xYy03LjMtMjUuNi0zMC4yLTc0LjMtMTE5LjQtNzQuM2gtMjhWNTAuM3MtMi43LTE4LjQtMjEuMS0xOC40aC04NS44cy0yMS4xIDAtMjEuMSAxOC40djE5LjFoLTI4LjFzLTEwNSA0LjItMTIwLjUgNzQuM2gtMjlTOCAxNDIuNSA4IDE4MS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXRyZW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OS43IDE1My44Yy0uMS02NS40LTUxLTExOS0xMTAuNy0xMzguM0MzMDQuOC04LjUgMjA3LTUgMTM2LjEgMjguNEM1MC4zIDY4LjkgMjMuMyAxNTcuNyAyMi4zIDI0Ni4yQzIxLjUgMzE5IDI4LjcgNTEwLjYgMTM2LjkgNTEyYzgwLjMgMSA5Mi4zLTEwMi41IDEyOS41LTE1Mi4zYzI2LjQtMzUuNSA2MC41LTQ1LjUgMTAyLjQtNTUuOWM3Mi0xNy44IDEyMS4xLTc0LjcgMTIxLTE1MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF5cGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMS40IDI5NS45Yy0zLjUgMTkuMi0xNy40IDEwOC43LTIxLjUgMTM0LS4zIDEuOC0xIDIuNS0zIDIuNUgxMi4zYy03LjYgMC0xMy4xLTYuNi0xMi4xLTEzLjlMNTguOCA0Ni42YzEuNS05LjYgMTAuMS0xNi45IDIwLTE2LjkgMTUyLjMgMCAxNjUuMS0zLjcgMjA0IDExLjQgNjAuMSAyMy4zIDY1LjYgNzkuNSA0NCAxNDAuMy0yMS41IDYyLjYtNzIuNSA4OS41LTE0MC4xIDkwLjMtNDMuNC43LTY5LjUtNy03NS4zIDI0LjJ6TTM1Ny4xIDE1MmMtMS44LTEuMy0yLjUtMS44LTMgMS4zLTIgMTEuNC01LjEgMjIuNS04LjggMzMuNi0zOS45IDExMy44LTE1MC41IDEwMy45LTIwNC41IDEwMy45LTYuMSAwLTEwLjEgMy4zLTEwLjkgOS40LTIyLjYgMTQwLjQtMjcuMSAxNjkuNy0yNy4xIDE2OS43LTEgNy4xIDMuNSAxMi45IDEwLjYgMTIuOWg2My41YzguNiAwIDE1LjctNi4zIDE3LjQtMTQuOS43LTUuNC0xLjEgNi4xIDE0LjQtOTEuMyA0LjYtMjIgMTQuMy0xOS43IDI5LjMtMTkuNyA3MSAwIDEyNi40LTI4LjggMTQyLjktMTEyLjMgNi41LTM0LjggNC42LTcxLjQtMjMuOC05Mi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJieXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNS4zMTQsMjg0LjU3OEgyNDYuNlYzODMuM2g1OC43MTFxMjQuNDIzLDAsMzguMTkzLTEzLjc3dDEzLjc3LTM2LjExcTAtMjEuODI2LTE0LjAzMi0zNS4zMzVUMzA1LjMxNCwyODQuNTc4Wk0xNDkuNDM1LDEyOC43SDkwLjcyNHY5OC43MjNoNTguNzExcTI0LjQyLDAsMzguMTktMTMuNzczdDEzLjc3LTM2LjEwN3EwLTIxLjgyNi0xNC4wMjktMzUuMzM4VDE0OS40MzUsMTI4LjdaTTM2Ni42NDcsMzJIODEuMzUzQTgxLjQ0NSw4MS40NDUsMCwwLDAsMCwxMTMuMzUyVjM5OC42NDdBODEuNDQ1LDgxLjQ0NSwwLDAsMCw4MS4zNTMsNDgwSDM2Ni42NDdBODEuNDQ1LDgxLjQ0NSwwLDAsMCw0NDgsMzk4LjY0N1YxMTMuMzUyQTgxLjQ0NSw4MS40NDUsMCwwLDAsMzY2LjY0NywzMlptNjMuNjM1LDM2Ni42NDdhNjMuNzA2LDYzLjcwNiwwLDAsMS02My42MzUsNjMuNjM1SDgxLjM1M2E2My43MDYsNjMuNzA2LDAsMCwxLTYzLjYzNS02My42MzVWMTEzLjM1MkE2My43MDYsNjMuNzA2LDAsMCwxLDgxLjM1Myw0OS43MThIMzY2LjY0N2E2My43MDYsNjMuNzA2LDAsMCwxLDYzLjYzNSw2My42MzRaTTMwNS4zMTQsMTI4LjdIMjQ2LjZ2OTguNzIzaDU4LjcxMXEyNC40MjMsMCwzOC4xOTMtMTMuNzczdDEzLjc3LTM2LjEwN3EwLTIxLjgyNi0xNC4wMzItMzUuMzM4VDMwNS4zMTQsMTI4LjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcmlzY29wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzAgNjMuNkMzMzEuNCAyMi42IDI4MC41IDAgMjI2LjYgMCAxMTEuOSAwIDE4LjUgOTYuMiAxOC41IDIxNC40YzAgNzUuMSA1Ny44IDE1OS44IDgyLjcgMTkyLjdDMTM3LjggNDU1LjUgMTkyLjYgNTEyIDIyNi42IDUxMmM0MS42IDAgMTEyLjktOTQuMiAxMjAuOS0xMDUgMjQuNi0zMy4xIDgyLTExOC4zIDgyLTE5Mi42IDAtNTYuNS0yMS4xLTExMC4xLTU5LjUtMTUwLjh6TTIyNi42IDQ5My45Yy00Mi41IDAtMTkwLTE2Ny4zLTE5MC0yNzkuNCAwLTEwNy40IDgzLjktMTk2LjMgMTkwLTE5Ni4zIDEwMC44IDAgMTg0LjcgODkgMTg0LjcgMTk2LjMuMSAxMTIuMS0xNDcuNCAyNzkuNC0xODQuNyAyNzkuNHpNMzM4IDIwNi44YzAgNTkuMS01MS4xIDEwOS43LTExMC44IDEwOS43LTEwMC42IDAtMTUwLjctMTA4LjItOTIuOS0xODEuOHYuNGMwIDI0LjUgMjAuMSA0NC40IDQ0LjggNDQuNCAyNC43IDAgNDQuOC0xOS45IDQ0LjgtNDQuNCAwLTE4LjItMTEuMS0zMy44LTI2LjktNDAuNyA3Ni42LTE5LjIgMTQxIDM5LjMgMTQxIDExMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaGFicmljYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjMgMjYyLjFsLS4xLTEzczIxLjctMTkuOCAyMS4xLTIxLjJsLTkuNS0yMGMtLjYtMS40LTI5LjUtLjUtMjkuNS0uNWwtOS40LTkuM3MuMi0yOC41LTEuMi0yOS4xbC0yMC4xLTkuMmMtMS40LS42LTIwLjcgMjEtMjAuNyAyMWwtMTMuMS0uMnMtMjAuNS0yMS40LTIxLjktMjAuOGwtMjAgOC4zYy0xLjQuNS4yIDI4LjkuMiAyOC45bC05LjEgOS4xcy0yOS4yLS45LTI5LjcuNGwtOC4xIDE5LjhjLS42IDEuNCAyMSAyMSAyMSAyMWwuMSAxMi45cy0yMS43IDE5LjgtMjEuMSAyMS4ybDkuNSAyMGMuNiAxLjQgMjkuNS41IDI5LjUuNWw5LjQgOS4zcy0uMiAzMS44IDEuMiAzMi4zbDIwLjEgOC4zYzEuNC42IDIwLjctMjMuNSAyMC43LTIzLjVsMTMuMS4yczIwLjUgMjMuOCAyMS44IDIzLjNsMjAtNy41YzEuNC0uNi0uMi0zMi4xLS4yLTMyLjFsOS4xLTkuMXMyOS4yLjkgMjkuNy0uNWw4LjEtMTkuOGMuNy0xLjEtMjAuOS0yMC43LTIwLjktMjAuN3ptLTQ0LjktOC43Yy43IDE3LjEtMTIuOCAzMS42LTMwLjEgMzIuNC0xNy4zLjgtMzIuMS0xMi41LTMyLjgtMjkuNi0uNy0xNy4xIDEyLjgtMzEuNiAzMC4xLTMyLjMgMTcuMy0uOCAzMi4xIDEyLjUgMzIuOCAyOS41em0yMDEuMi0zNy45bC05Ny05Ny0uMS4xYy03NS4xLTczLjMtMTk1LjQtNzIuOC0yNjkuOCAxLjYtNTAuOSA1MS0yNy44IDI3LjktOTUuNyA5NS4zLTIyLjMgMjIuMy0yMi4zIDU4LjcgMCA4MSA2OS45IDY5LjQgNDYuNCA0NiA5Ny40IDk3bC4xLS4xYzc1LjEgNzMuMyAxOTUuNCA3Mi45IDI2OS44LTEuNiA1MS01MC45IDI3LjktMjcuOSA5NS4zLTk1LjMgMjIuMy0yMi4zIDIyLjMtNTguNyAwLTgxek0xNDAuNCAzNjMuOGMtNTkuNi01OS41LTU5LjYtMTU2IDAtMjE1LjUgNTkuNS01OS42IDE1Ni01OS41IDIxNS42IDAgNTkuNSA1OS41IDU5LjYgMTU2IDAgMjE1LjYtNTkuNiA1OS41LTE1NiA1OS40LTIxNS42LS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9lbml4RnJhbWV3b3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMi45IDM0NC4zYzMuOC0uMSAyMi44LTEuNCAyNS42LTIuMi0yLjQtMi42LTQzLjYtMS02OC00OS42LTQuMy04LjYtNy41LTE3LjYtNi40LTI3LjYgMi45LTI1LjUgMzIuOS0zMCA1Mi0xOC41IDM2IDIxLjYgNjMuMyA5MS4zIDExMy43IDk3LjUgMzcgNC41IDg0LjYtMTcgMTA4LjItNDUuNC0uNi0uMS0uOC0uMi0xLS4xLS40LjEtLjguMi0xLjEuMy0zMy4zIDEyLjEtOTQuMyA5LjctMTM0LjctMTQuOC0zNy42LTIyLjgtNTMuMS01OC43LTUxLjgtNzQuNiAxLjgtMjEuMyAyMi45LTIzLjIgMzUuOS0xOS42IDE0LjQgMy45IDI0LjQgMTcuNiAzOC45IDI3LjQgMTUuNiAxMC40IDMyLjkgMTMuNyA1MS4zIDEwLjMgMTQuOS0yLjcgMzQuNC0xMi4zIDM2LjUtMTQuNS0xLjEtLjEtMS44LS4xLTIuNS0uMi02LjItLjYtMTIuNC0uOC0xOC41LTEuN0MyNzkuOCAxOTQuNSAyNjIuMSA0Ny40IDEzOC41IDM3LjkgOTQuMiAzNC41IDM5LjEgNDYgMi4yIDcyLjljLS44LjYtMS41IDEuMi0yLjIgMS44LjEuMi4xLjMuMi41LjggMCAxLjYtLjEgMi40LS4yIDYuMy0xIDEyLjUtLjggMTguNy4zIDIzLjggNC4zIDQ3LjcgMjMuMSA1NS45IDc2LjUgNS4zIDM0LjMtLjcgNTAuOCA4IDg2LjEgMTkgNzcuMSA5MSAxMDcuNiAxMjcuNyAxMDYuNHpNNzUuMyA2NC45Yy0uOS0xLS45LTEuMi0xLjMtMiAxMi4xLTIuNiAyNC4yLTQuMSAzNi42LTQuOC0xLjEgMTQuNy0yMi4yIDIxLjMtMzUuMyA2Ljh6bTE5Ni45IDM1MC41Yy00Mi44IDEuMi05Mi0yNi43LTEyMy41LTYxLjQtNC42LTUtMTYuOC0yMC4yLTE4LjYtMjMuNGwuNC0uNGM2LjYgNC4xIDI1LjcgMTguNiA1NC44IDI3IDI0LjIgNyA0OC4xIDYuMyA3MS42LTMuMyAyMi43LTkuMyA0MS0uNSA0My4xIDIuOS0xOC41IDMuOC0yMC4xIDQuNC0yNCA3LjktNS4xIDQuNC00LjYgMTEuNyA3IDE3LjIgMjYuMiAxMi40IDYzLTIuOCA5Ny4yIDI1LjQgMi40IDIgOC4xIDcuOCAxMC4xIDEwLjctLjEuMi0uMy4zLS40LjUtNC44LTEuNS0xNi40LTcuNS00MC4yLTkuMy0yNC43LTItNDYuMyA1LjMtNzcuNSA2LjJ6bTE3NC44LTI1MmMxNi40LTUuMiA0MS4zLTEzLjQgNjYuNS0zLjMgMTYuMSA2LjUgMjYuMiAxOC43IDMyLjEgMzQuNiAzLjUgOS40IDUuMSAxOS43IDUuMSAyOC43LS4yIDAtLjQgMC0uNi4xLS4yLS40LS40LS45LS41LTEuMy01LTIyLTI5LjktNDMuOC02Ny42LTI5LjktNTAuMiAxOC42LTEzMC40IDkuNy0xNzYuOS00OC0uNy0uOS0yLjQtMS43LTEuMy0zLjIuMS0uMiAyLjEuNiAzIDEuMyAxOC4xIDEzLjQgMzguMyAyMS45IDYwLjMgMjYuMiAzMC41IDYuMSA1NC42IDIuOSA3OS45LTUuMnptMTAyLjcgMTE3LjVjLTMyLjQuMi0zMy44IDUwLjEtMTAzLjYgNjQuNC0xOC4yIDMuNy0zOC43IDQuNi00NC45IDQuMnYtLjRjMi44LTEuNSAxNC43LTIuNiAyOS43LTE2LjYgNy45LTcuMyAxNS4zLTE1LjEgMjIuOC0yMi45IDE5LjUtMjAuMiA0MS40LTQyLjIgODEuOS0zOSAyMy4xIDEuOCAyOS4zIDguMiAzNi4xIDEyLjcuMy4yLjQuNS43LjktLjUgMC0uNy4xLS45IDAtNy0yLjctMTQuMy0zLjMtMjEuOC0zLjN6bS0xMi4zLTI0LjFjLS4xLjItLjEuNC0uMi42LTI4LjktNC40LTQ4LTcuOS02OC41IDQtMTcgOS45LTMxLjQgMjAuNS02MiAyNC40LTI3LjEgMy40LTQ1LjEgMi40LTY2LjEtOC0uMy0uMi0uNi0uNC0xLS42IDAtLjIuMS0uMy4xLS41IDI0LjkgMy44IDM2LjQgNS4xIDU1LjUtNS44IDIyLjMtMTIuOSA0MC4xLTI2LjYgNzEuMy0zMSAyOS42LTQuMSA1MS4zIDIuNSA3MC45IDE2Ljl6TTI2OC42IDk3LjNjLS42LS42LTEuMS0xLjItMi4xLTIuMyA3LjYgMCAyOS43LTEuMiA1My40IDguNCAxOS43IDggMzIuMiAyMSA1MC4yIDMyLjkgMTEuMSA3LjMgMjMuNCA5LjMgMzYuNCA4LjEgNC4zLS40IDguNS0xLjIgMTIuOC0xLjcuNC0uMS45IDAgMS41LjMtLjYuNC0xLjIuOS0xLjggMS4yLTguMSA0LTE2LjcgNi4zLTI1LjYgNy4xLTI2LjEgMi42LTUwLjMtMy43LTczLjQtMTUuNC0xOS4zLTkuOS0zNi40LTIyLjktNTEuNC0zOC42ek02NDAgMzM1LjdjLTMuNSAzLjEtMjIuNyAxMS42LTQyLjcgNS4zLTEyLjMtMy45LTE5LjUtMTQuOS0zMS42LTI0LjEtMTAtNy42LTIwLjktNy45LTI4LjEtOC40LjYtLjguOS0xLjIgMS4yLTEuNCAxNC44LTkuMiAzMC41LTEyLjIgNDcuMy02LjUgMTIuNSA0LjIgMTkuMiAxMy41IDMwLjQgMjQuMiAxMC44IDEwLjQgMjEgOS45IDIzLjEgMTAuNS4xLS4xLjIgMCAuNC40em0tMjEyLjUgMTM3YzIuMiAxLjIgMS42IDEuNSAxLjUgMi0xOC41LTEuNC0zMy45LTcuNi00Ni44LTIyLjItMjEuOC0yNC43LTQxLjctMjcuOS00OC42LTI5LjcuNS0uMi44LS40IDEuMS0uNCAxMy4xLjEgMjYuMS43IDM4LjkgMy45IDI1LjMgNi40IDM1IDI1LjQgNDEuNiAzNS4zIDMuMiA0LjggNy4zIDguMyAxMi4zIDExLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob2VuaXhTcXVhZHJvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2My4zOEMxNDIuNDkgMjcuMjUgMjAxLjU1IDcuMzEgMjYwLjUxIDguODFjMjkuNTgtLjM4IDU5LjExIDUuMzcgODYuOTEgMTUuMzMtMjQuMTMtNC42My00OS02LjM0LTczLjM4LTIuNDVDMjMxLjE3IDI3IDE5MSA0OC44NCAxNjIuMjEgODAuODdjNS42Ny0xIDEwLjc4LTMuNjcgMTYtNS44NiAxOC4xNC03Ljg3IDM3LjQ5LTEzLjI2IDU3LjIzLTE0LjgzIDE5Ljc0LTIuMTMgMzkuNjQtLjQzIDU5LjI4IDEuOTItMTQuNDIgMi43OS0yOS4xMiA0LjU3LTQzIDkuNTktMzQuNDMgMTEuMDctNjUuMjcgMzMuMTYtODYuMyA2Mi42My0xMy44IDE5LjcxLTIzLjYzIDQyLjg2LTI0LjY3IDY3LjEzLS4zNSAxNi40OSA1LjIyIDM0LjgxIDE5LjgzIDQ0YTUzLjI3IDUzLjI3IDAgMCAwIDM3LjUyIDYuNzRjMTUuNDUtMi40NiAzMC4wNy04LjY0IDQzLjYtMTYuMzMgMTEuNTItNi44MiAyMi42Ny0xNC41NSAzMi0yNC4yNSAzLjc5LTMuMjIgMi41My04LjQ1IDIuNjItMTIuNzktMi4xMi0uMzQtNC4zOC0xLjExLTYuMy4zYTIwMyAyMDMgMCAwIDEtMzUuODIgMTUuMzdjLTIwIDYuMTctNDIuMTYgOC40Ni02Mi4xLjc4IDEyLjc5IDEuNzMgMjYuMDYuMzEgMzcuNzQtNS40NCAyMC4yMy05LjcyIDM2LjgxLTI1LjIgNTQuNDQtMzguNzdhNTI2LjU3IDUyNi41NyAwIDAgMSA4OC45LTU1LjMxYzI1LjcxLTEyIDUyLjk0LTIyLjc4IDgxLjU3LTI0LjEyLTE1LjYzIDEzLjcyLTMyLjE1IDI2LjUyLTQ2Ljc4IDQxLjM4LTE0LjUxIDE0LTI3LjQ2IDI5LjUtNDAuMTEgNDUuMTgtMy41MiA0LjYtOC45NSA2Ljk0LTEzLjU4IDEwLjE2YTE1MC43IDE1MC43IDAgMCAwLTUxLjg5IDYwLjFjLTkuMzMgMTkuNjgtMTQuNSA0MS44NS0xMS43NyA2My42NSAxLjk0IDEzLjY5IDguNzEgMjcuNTkgMjAuOSAzNC45MSAxMi45IDggMjkuMDUgOC4wNyA0My40OCA1LjEgMzIuOC03LjQ1IDYxLjQzLTI4Ljg5IDgxLTU1Ljg0IDIwLjQ0LTI3LjUyIDMwLjUyLTYyLjIgMjkuMTYtOTYuMzUtLjUyLTcuNS0xLjU3LTE1LTEuNjYtMjIuNDkgOCAxOS40OCAxNC44MiAzOS43MSAxNi42NSA2MC44MyAyIDE0LjI4Ljc1IDI4Ljc2LTEuNjIgNDIuOS0xLjkxIDExLTUuNjcgMjEuNTEtNy43OCAzMi40M2ExNjUgMTY1IDAgMCAwIDM5LjM0LTgxLjA3IDE4My42NCAxODMuNjQgMCAwIDAtMTQuMjEtMTA0LjY0YzIwLjc4IDMyIDMyLjM0IDY5LjU4IDM1LjcxIDEwNy40OC40OSAxMi43My40OSAyNS41MSAwIDM4LjIzQTI0My4yMSAyNDMuMjEgMCAwIDEgNDgyIDM3MS4zNGMtMjYuMTIgNDcuMzQtNjggODUuNjMtMTE3LjE5IDEwOC03OC4yOSAzNi4yMy0xNzQuNjggMzEuMzItMjQ4LTE0LjY4QTI0OC4zNCAyNDguMzQgMCAwIDEgMjUuMzYgMzY2IDIzOC4zNCAyMzguMzQgMCAwIDEgMCAyNzMuMDh2LTMxLjM0QzMuOTMgMTcyIDQwLjg3IDEwNS44MiA5NiA2My4zOG0yMjIgODAuMzNhNzkuMTMgNzkuMTMgMCAwIDAgMTYtNC40OGM1LTEuNzcgOS4yNC01Ljk0IDEwLjMyLTExLjIyLTguOTYgNC45OS0xNy45OCA5LjkyLTI2LjMyIDE1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBocCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMTA0LjVjMTcxLjQgMCAzMDMuMiA3Mi4yIDMwMy4yIDE1MS41UzQ5MS4zIDQwNy41IDMyMCA0MDcuNWMtMTcxLjQgMC0zMDMuMi03Mi4yLTMwMy4yLTE1MS41UzE0OC43IDEwNC41IDMyMCAxMDQuNW0wLTE2LjhDMTQzLjMgODcuNyAwIDE2MyAwIDI1NnMxNDMuMyAxNjguMyAzMjAgMTY4LjNTNjQwIDM0OSA2NDAgMjU2IDQ5Ni43IDg3LjcgMzIwIDg3Ljd6TTIxOC4yIDI0Mi41Yy03LjkgNDAuNS0zNS44IDM2LjMtNzAuMSAzNi4zbDEzLjctNzAuNmMzOCAwIDYzLjgtNC4xIDU2LjQgMzQuM3pNOTcuNCAzNTAuM2gzNi43bDguNy00NC44YzQxLjEgMCA2Ni42IDMgOTAuMi0xOS4xIDI2LjEtMjQgMzIuOS02Ni43IDE0LjMtODguMS05LjctMTEuMi0yNS4zLTE2LjctNDYuNS0xNi43aC03MC43TDk3LjQgMzUwLjN6bTE4NS43LTIxMy42aDM2LjVsLTguNyA0NC44YzMxLjUgMCA2MC43LTIuMyA3NC44IDEwLjcgMTQuOCAxMy42IDcuNyAzMS04LjMgMTEzLjFoLTM3YzE1LjQtNzkuNCAxOC4zLTg2IDEyLjctOTItNS40LTUuOC0xNy43LTQuNi00Ny40LTQuNmwtMTguOCA5Ni42aC0zNi41bDMyLjctMTY4LjZ6TTUwNSAyNDIuNWMtOCA0MS4xLTM2LjcgMzYuMy03MC4xIDM2LjNsMTMuNy03MC42YzM4LjIgMCA2My44LTQuMSA1Ni40IDM0LjN6TTM4NC4yIDM1MC4zSDQyMWw4LjctNDQuOGM0My4yIDAgNjcuMSAyLjUgOTAuMi0xOS4xIDI2LjEtMjQgMzIuOS02Ni43IDE0LjMtODguMS05LjctMTEuMi0yNS4zLTE2LjctNDYuNS0xNi43SDQxN2wtMzIuOCAxNjguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGllZFBpcGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0NCAyNDZjLTMuMi0yLTYuMy0yLjktMTAuMS0yLjktNi42IDAtMTIuNiAzLjItMTkuMyAzLjdsMS43IDQuOXptMTM1LjkgMTk3LjljLTE5IDAtNjQuMSA5LjUtNzkuOSAxOS44bDYuOSA0NS4xYzM1LjcgNi4xIDcwLjEgMy42IDEwNi05LjgtNC44LTEwLTIzLjUtNTUuMS0zMy01NS4xek0zNDAuOCAxNzdjNi42IDIuOCAxMS41IDkuMiAyMi43IDIyLjEgMi0xLjQgNy41LTUuMiA3LjUtOC42IDAtNC45LTExLjgtMTMuMi0xMy4yLTIzIDExLjItNS43IDI1LjItNiAzNy42LTguOSA2OC4xLTE2LjQgMTE2LjMtNTIuOSAxNDYuOC0xMTYuN0M1NDguMyAyOS4zIDU1NCAxNi4xIDU1NC42IDJsLTIgMi42Yy0yOC40IDUwLTMzIDYzLjItODEuMyAxMDAtMzEuOSAyNC40LTY5LjIgNDAuMi0xMDYuNiA1NC42bC02LjMtLjN2LTIxLjhjLTE5LjYgMS42LTE5LjctMTQuNi0zMS42LTIzLTE4LjcgMjAuNi0zMS42IDQwLjgtNTguOSA1MS4xLTEyLjcgNC44LTE5LjYgMTAtMjUuOSAyMS44IDM0LjktMTYuNCA5MS4yLTEzLjUgOTguOC0xMHpNNTU1LjUgMGwtLjYgMS4xLS4zLjkuNi0uNnptLTU5LjIgMzgyLjFjLTMzLjktNTYuOS03NS4zLTExOC40LTE1MC0xMTUuNWwtLjMtNmMtMS4xLTEzLjUgMzIuOCAzLjIgMzUuMS0zMWwtMTQuNCA3LjJjLTE5LjgtNDUuNy04LjYtNTQuMy02NS41LTU0LjMtMTQuNyAwLTI2LjcgMS43LTQxLjQgNC42IDIuOSAxOC42IDIuMiAzNi43LTEwLjkgNTAuM2wxOS41IDUuNWMtMS43IDMuMi0yLjkgNi4zLTIuOSA5LjggMCAyMSA0Mi44IDIuOSA0Mi44IDMzLjYgMCAxOC40LTM2LjggNjAuMS01NC45IDYwLjEtOCAwLTUzLjctNTAtNTMuNC02MC4xbC4zLTQuNiA1Mi4zLTExLjVjMTMtMi42IDEyLjMtMjIuNy0yLjktMjIuNy0zLjcgMC00My4xIDkuMi00OS40IDEwLjYtMi01LjItNy41LTE0LjEtMTMuOC0xNC4xLTMuMiAwLTYuMyAzLjItOS41IDQtOS4yIDIuNi0zMSAyLjktMjEuNSAyMC4xTDE1LjkgMjk4LjVjLTUuNSAxLjEtOC45IDYuMy04LjkgMTEuOCAwIDYgNS41IDEwLjkgMTEuNSAxMC45IDggMCAxMzEuMy0yOC40IDE0Ny40LTMyLjIgMi42IDMuMiA0LjYgNi4zIDcuOCA4LjYgMjAuMSAxNC40IDU5LjggODUuOSA3Ni40IDg1LjkgMjQuMSAwIDU4LTIyLjQgNzEuMy00MS45IDMuMi00LjMgNi45LTcuNSAxMi40LTYuOS42IDEzLjgtMzEuNiAzNC4yLTMzIDQzLjctMS40IDEwLjItMSAzNS4yLS4zIDQxLjEgMjYuNyA4LjEgNTItMy42IDc3LjktMi45IDQuMy0yMSAxMC42LTQxLjkgOS44LTYzLjVsLS4zLTkuNWMtMS40LTM0LjItMTAuOS0zOC41LTM0LjgtNTguNi0xLjEtMS4xLTIuNi0yLjYtMy43LTQgMi4yLTEuNCAxLjEtMSA0LjYtMS43IDg4LjUgMCA1Ni4zIDE4My42IDExMS41IDIyOS45IDMzLjEtMTUgNzIuNS0yNy45IDEwMy41LTQ3LjItMjktMjUuNi01Mi42LTQ1LjctNzIuNy03OS45em0tMTk2LjIgNDYuMXYyNy4ybDExLjgtMy40LTIuOS0yMy44em0tNjguNy0xNTAuNGwyNC4xIDYxLjIgMjEtMTMuOC0zMS4zLTUwLjl6bTg0LjQgMTU0LjlsMiAxMi40YzktMS41IDU4LjQtNi42IDU4LjQtMTQuMSAwLTEuNC0uNi0zLjItLjktNC42LTI2LjggMC0zNi45IDMuOC01OS41IDYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGllZFBpcGVySGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyNC45Yy04MC44IDUzLjYtODkuNCA5Mi41LTk2LjQgMTA0LjQtNi43IDEyLjItMTEuNyA2MC4zLTIzLjMgODMuNi0xMS43IDIzLjYtNTQuMiA0Mi4yLTY2LjEgNTAtMTEuNyA3LjgtMjguMyAzOC4xLTQxLjkgNjQuMi0xMDguMS00LjQtMTY3LjQgMzguOC0yNTkuMiA5My42IDI5LjQtOS43IDQzLjMtMTYuNyA0My4zLTE2LjcgOTQuMi0zNiAxMzkuMy02OC4zIDI4MS4xLTQ5LjIgMS4xIDAgMS45LjYgMi44LjggMy45IDIuMiA1LjMgNi45IDMuMSAxMC44bC01My45IDk1LjhjLTIuNSA0LjctNy44IDcuMi0xMy4xIDYuMS0xMjYuOC0yMy44LTIyNi45IDE3LjMtMzE4LjkgMTguNkMyNC4xIDQ4OCAwIDQ1My40IDAgNDUxLjhjMC0xLjEuNi0xLjcgMS43LTEuNyAwIDAgMzguMyAwIDEwMy4xLTE1LjNDMTc4LjQgMjk0LjUgMjQ0IDI0NS40IDMxNS40IDI0NS40YzAgMCA3MS43IDAgOTAuNiA2MS45IDIyLjgtMzkuNyAyOC4zLTQ5LjIgMjguMy00OS4yIDUuMy05LjQgMzUtNzcuMiA4Ni40LTE0MS40IDUxLjUtNjQgOTAuNC03OS45IDExOS4zLTkxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlclBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNS4zIDE3NC42YzAgMjEuMS0xNC4yIDM4LjEtMzEuNyAzOC4xLTcuMSAwLTEyLjgtMS4yLTE3LjItMy43di02OGM0LjQtMi43IDEwLjEtNC4yIDE3LjItNC4yIDE3LjUgMCAzMS43IDE2LjkgMzEuNyAzNy44em01Mi42IDY3Yy03LjEgMC0xMi44IDEuNS0xNy4yIDQuMnY2OGM0LjQgMi41IDEwLjEgMy43IDE3LjIgMy43IDE3LjQgMCAzMS43LTE2LjkgMzEuNy0zNy44IDAtMjEuMS0xNC4zLTM4LjEtMzEuNy0zOC4xek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE4NSAyNTUuMWM0MSAwIDc0LjItMzUuNiA3NC4yLTc5LjYgMC00NC0zMy4yLTc5LjYtNzQuMi03OS42LTEyIDAtMjQuMSAzLjItMzQuNiA4LjhoLTQ1LjdWMzExbDUxLjgtMTAuMXYtNTAuNmM4LjYgMy4xIDE4LjEgNC44IDI4LjUgNC44em0xNTguNCAyNS4zYzAtNDQtMzMuMi03OS42LTczLjktNzkuNi0zLjIgMC02LjQuMi05LjYuNy0zLjcgMTIuNS0xMC4xIDIzLjgtMTkuMiAzMy40LTEzLjggMTUtMzIuMiAyMy44LTUxLjggMjQuOFY0MTZsNTEuOC0xMC4xdi01MC42YzguNiAzLjIgMTguMiA0LjcgMjguNyA0LjcgNDAuOCAwIDc0LTM1LjYgNzQtNzkuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGllZFBpcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NS45MywyMy4yQzQyOS4yMywzMCwzODcuNzksNTEuNjksMzQxLjM1LDkwLjY2QTIwNiwyMDYsMCwwLDAsMjQwLDY0QzEyNS4xMyw2NCwzMiwxNTcuMTIsMzIsMjcyczkzLjEzLDIwOCwyMDgsMjA4LDIwOC05My4xMywyMDgtMjA4YTIwNy4yNSwyMDcuMjUsMCwwLDAtNTguNzUtMTQ0LjgxLDE1NS4zNSwxNTUuMzUsMCwwLDAtMTcsMjcuNEExNzYuMTYsMTc2LjE2LDAsMCwxLDQxNy4xLDI3MmMwLDk3LjY2LTc5LjQ0LDE3Ny4xMS0xNzcuMDksMTc3LjExYTE3NS44MSwxNzUuODEsMCwwLDEtODcuNjMtMjMuNGM4Mi45NC0xMDcuMzMsMTUwLjc5LTM3Ljc3LDE4NC4zMS0yMjYuNjUsNS43OS0zMi42MiwyOC05NC4yNiwxMjYuMjMtMTYwLjE4QzQ3MSwzMy40NSw0NjUuMzUsMjAuOCw0NTUuOTMsMjMuMlpNMTI1LDQwNi40QTE3Ni42NiwxNzYuNjYsMCwwLDEsNjIuOSwyNzJDNjIuOSwxNzQuMzQsMTQyLjM1LDk0LjksMjQwLDk0LjlhMTc0LDE3NCwwLDAsMSw3Ni42MywxNy43NUMyNTAuNjQsMTc0Ljc2LDE4OS43NywyNjUuNTIsMTI1LDQwNi40WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaW50ZXJlc3RQIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNCA2LjVDMTAxLjQgNi41IDAgNzQuOSAwIDE4NS42IDAgMjU2IDM5LjYgMjk2IDYzLjYgMjk2YzkuOSAwIDE1LjYtMjcuNiAxNS42LTM1LjQgMC05LjMtMjMuNy0yOS4xLTIzLjctNjcuOCAwLTgwLjQgNjEuMi0xMzcuNCAxNDAuNC0xMzcuNCA2OC4xIDAgMTE4LjUgMzguNyAxMTguNSAxMDkuOCAwIDUzLjEtMjEuMyAxNTIuNy05MC4zIDE1Mi43LTI0LjkgMC00Ni4yLTE4LTQ2LjItNDMuOCAwLTM3LjggMjYuNC03NC40IDI2LjQtMTEzLjQgMC02Ni4yLTkzLjktNTQuMi05My45IDI1LjggMCAxNi44IDIuMSAzNS40IDkuNiA1MC43LTEzLjggNTkuNC00MiAxNDcuOS00MiAyMDkuMSAwIDE4LjkgMi43IDM3LjUgNC41IDU2LjQgMy40IDMuOCAxLjcgMy40IDYuOSAxLjUgNTAuNC02OSA0OC42LTgyLjUgNzEuNC0xNzIuOCAxMi4zIDIzLjQgNDQuMSAzNiA2OS4zIDM2IDEwNi4yIDAgMTUzLjktMTAzLjUgMTUzLjktMTk2LjhDMzg0IDcxLjMgMjk4LjIgNi41IDIwNCA2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbnRlcmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OC0yNS42IDAtNTAuMi0zLjktNzMuNC0xMS4xIDEwLjEtMTYuNSAyNS4yLTQzLjUgMzAuOC02NSAzLTExLjYgMTUuNC01OSAxNS40LTU5IDguMSAxNS40IDMxLjcgMjguNSA1Ni44IDI4LjUgNzQuOCAwIDEyOC43LTY4LjggMTI4LjctMTU0LjMgMC04MS45LTY2LjktMTQzLjItMTUyLjktMTQzLjItMTA3IDAtMTYzLjkgNzEuOC0xNjMuOSAxNTAuMSAwIDM2LjQgMTkuNCA4MS43IDUwLjMgOTYuMSA0LjcgMi4yIDcuMiAxLjIgOC4zLTMuMy44LTMuNCA1LTIwLjMgNi45LTI4LjEuNi0yLjUuMy00LjctMS43LTcuMS0xMC4xLTEyLjUtMTguMy0zNS4zLTE4LjMtNTYuNiAwLTU0LjcgNDEuNC0xMDcuNiAxMTItMTA3LjYgNjAuOSAwIDEwMy42IDQxLjUgMTAzLjYgMTAwLjkgMCA2Ny4xLTMzLjkgMTEzLjYtNzggMTEzLjYtMjQuMyAwLTQyLjYtMjAuMS0zNi43LTQ0LjggNy0yOS41IDIwLjUtNjEuMyAyMC41LTgyLjYgMC0xOS0xMC4yLTM0LjktMzEuNC0zNC45LTI0LjkgMC00NC45IDI1LjctNDQuOSA2MC4yIDAgMjIgNy40IDM2LjggNy40IDM2LjhzLTI0LjUgMTAzLjgtMjkgMTIzLjJjLTUgMjEuNC0zIDUxLjYtLjkgNzEuMkM2NS40IDQ1MC45IDAgMzYxLjEgMCAyNTYgMCAxMTkgMTExIDggMjQ4IDhzMjQ4IDExMSAyNDggMjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQyLjQgMjkyLjVDMjQ3LjggMjg3LjEgMjU3LjEgMjg3LjEgMjYyLjUgMjkyLjVMMzM5LjUgMzY5LjVDMzUzLjcgMzgzLjcgMzcyLjYgMzkxLjUgMzkyLjYgMzkxLjVINDA3LjdMMzEwLjYgNDg4LjZDMjgwLjMgNTE4LjEgMjMxLjEgNTE4LjEgMjAwLjggNDg4LjZMMTAzLjMgMzkxLjJIMTEyLjZDMTMyLjYgMzkxLjIgMTUxLjUgMzgzLjQgMTY1LjcgMzY5LjJMMjQyLjQgMjkyLjV6TTI2Mi41IDIxOC45QzI1Ni4xIDIyNC40IDI0Ny45IDIyNC41IDI0Mi40IDIxOC45TDE2NS43IDE0Mi4yQzE1MS41IDEyNy4xIDEzMi42IDEyMC4yIDExMi42IDEyMC4ySDEwMy4zTDIwMC43IDIyLjc2QzIzMS4xLTcuNTg2IDI4MC4zLTcuNTg2IDMxMC42IDIyLjc2TDQwNy44IDExOS45SDM5Mi42QzM3Mi42IDExOS45IDM1My43IDEyNy43IDMzOS41IDE0MS45TDI2Mi41IDIxOC45ek0xMTIuNiAxNDIuN0MxMjYuNCAxNDIuNyAxMzkuMSAxNDguMyAxNDkuNyAxNTguMUwyMjYuNCAyMzQuOEMyMzMuNiAyNDEuMSAyNDMgMjQ1LjYgMjUyLjUgMjQ1LjZDMjYxLjkgMjQ1LjYgMjcxLjMgMjQxLjEgMjc4LjUgMjM0LjhMMzU1LjUgMTU3LjhDMzY1LjMgMTQ4LjEgMzc4LjggMTQyLjUgMzkyLjYgMTQyLjVINDMwLjNMNDg4LjYgMjAwLjhDNTE4LjkgMjMxLjEgNTE4LjkgMjgwLjMgNDg4LjYgMzEwLjZMNDMwLjMgMzY4LjlIMzkyLjZDMzc4LjggMzY4LjkgMzY1LjMgMzYzLjMgMzU1LjUgMzUzLjVMMjc4LjUgMjc2LjVDMjY0LjYgMjYyLjYgMjQwLjMgMjYyLjYgMjI2LjQgMjc2LjZMMTQ5LjcgMzUzLjJDMTM5LjEgMzYzIDEyNi40IDM2OC42IDExMi42IDM2OC42SDgwLjc4TDIyLjc2IDMxMC42Qy03LjU4NiAyODAuMy03LjU4NiAyMzEuMSAyMi43NiAyMDAuOEw4MC43OCAxNDIuN0gxMTIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGl4aXYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em0xNzEuNSA4NGM0MSAwIDc2LjMgMTIuOSAxMDEuNCAzNS4ybDAgMGMyNS4yIDIyLjIgMzkuOCA1NC4xIDM5LjggODguOGMuMSAzNS4zLTE2LjYgNjYuMy00Mi40IDg3Yy0yNS45IDIwLjgtNjAuNiAzMi40LTk4LjggMzIuNGMtNDMuNSAwLTgzLjgtMTYuMS04My44LTE2LjF2NTEuOGM3LjQgMi4yIDE5LjcgNyAxMS45IDE0LjhIMTA0LjhjLTcuNy03LjggMy42LTEyLjQgMTIuMS0xNC44VjE3NS41Qzk3LjEgMTkwLjkgODcgMjA0LjMgODEuOCAyMTQuMmM2IDE5LjQtNS4zIDE4LjUtNS4zIDE4LjVMNTYgMTk5LjdzNzIuNy04My43IDE3OS41LTgzLjd6bS0zLjYgMjIyLjljMzAgMCA1Ni0xMS4zIDczLjktMjkuMmMxNy45LTE4LjEgMjcuOS00MS42IDI4LTcwLjJjLS4xLTI5LjMtOS41LTU0LjYtMjYuNy03My42Yy0xNy4yLTE4LjktNDIuNy0zMS4zLTc1LjItMzEuNGMtMjYuNy0uMS01OS44IDktODAuMiAyMy43VjMyMy4xYzE4LjYgOS4zIDQ2LjggMTUuOSA4MC4yIDE1Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYXlzdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3MC45IDM3Mi4zYy0xMS4zIDE0LjItMzguOCAyNC4zLTM4LjggMjQuM0wzMjcgNDcwLjJ2LTU0LjNsMTUwLjktNTMuOGMxNy4xLTYuMSAxOS44LTE0LjggNS44LTE5LjQtMTMuOS00LjYtMzkuMS0zLjMtNTYuMiAyLjlMMzI3IDM4MS4xdi01Ni40YzIzLjItNy44IDQ3LjEtMTMuNiA3NS43LTE2LjggNDAuOS00LjUgOTAuOS42IDEzMC4yIDE1LjUgNDQuMiAxNCA0OS4yIDM0LjcgMzggNDguOXptLTIyNC40LTkyLjV2LTEzOWMwLTE2LjMtMy0zMS4zLTE4LjMtMzUuNi0xMS43LTMuOC0xOSA3LjEtMTkgMjMuNHYzNDcuOWwtOTMuOC0yOS44VjMyYzM5LjkgNy40IDk4IDI0LjkgMTI5LjIgMzUuNEM0MjQuMSA5NC43IDQ1MSAxMjguNyA0NTEgMjA1LjJjMCA3NC41LTQ2IDEwMi44LTEwNC41IDc0LjZ6TTQzLjIgNDEwLjJjLTQ1LjQtMTIuOC01My0zOS41LTMyLjMtNTQuOCAxOS4xLTE0LjIgNTEuNy0yNC45IDUxLjctMjQuOWwxMzQuNS00Ny44djU0LjVsLTk2LjggMzQuNmMtMTcuMSA2LjEtMTkuNyAxNC44LTUuOCAxOS40IDEzLjkgNC42IDM5LjEgMy4zIDU2LjItMi45bDQ2LjQtMTYuOXY0OC44Yy01MS42IDkuMy0xMDEuNCA3LjMtMTUzLjktMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByb2R1Y3RIdW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi4zIDIxOC44YzAgMjAuNS0xNi43IDM3LjItMzcuMiAzNy4yaC03MC4zdi03NC40aDcwLjNjMjAuNSAwIDM3LjIgMTYuNyAzNy4yIDM3LjJ6TTUwNCAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OHptLTEyOC4xLTM3LjJjMC00Ny45LTM4LjktODYuOC04Ni44LTg2LjhIMTY5LjJ2MjQ4aDQ5LjZ2LTc0LjRoNzAuM2M0Ny45IDAgODYuOC0zOC45IDg2LjgtODYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHVzaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MzIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNyAxMTEuOWwtOTguNS05IDE0LTMzLjRjMTAuNC0yMy41LTEwLjgtNDAuNC0yOC43LTM3TDIyLjUgNzYuOWMtMTUuMSAyLjctMjYgMTguMy0yMS40IDM2LjZsMTA1LjEgMzQ4LjNjNi41IDIxLjMgMzYuNyAyNC4yIDQ3LjcgN2wzNS4zLTgwLjggMjM1LjItMjMxLjNjMTYuNC0xNi44IDQuMy00Mi45LTE3LjQtNDQuOHpNMjk3LjYgNTMuNmM1LjEtLjcgNy41IDIuNSA1LjIgNy40TDI4NiAxMDAuOSAxMDguNiA4NC42bDE4OS0zMXpNMjIuNyAxMDcuOWMtMy4xLTUuMSAxLTEwIDYuMS05LjFsMjQ4LjcgMjIuNy05Ni45IDIzMC43TDIyLjcgMTA3Ljl6TTEzNiA0NTYuNGMtMi42IDQtNy45IDMuMS05LjQtMS4yTDQzLjUgMTc5LjdsMTI3LjcgMTk3LjZjLTcgMTUtMzUuMiA3OS4xLTM1LjIgNzkuMXptMjcyLjgtMzE0LjVMMjEwLjEgMzM3LjNsODkuNy0yMTMuNyAxMDYuNCA5LjdjNCAxLjEgNS43IDUuMyAyLjYgOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQeXRob24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM5LjggMjAwLjVjLTcuNy0zMC45LTIyLjMtNTQuMi01My40LTU0LjJoLTQwLjF2NDcuNGMwIDM2LjgtMzEuMiA2Ny44LTY2LjggNjcuOEgxNzIuN2MtMjkuMiAwLTUzLjQgMjUtNTMuNCA1NC4zdjEwMS44YzAgMjkgMjUuMiA0NiA1My40IDU0LjMgMzMuOCA5LjkgNjYuMyAxMS43IDEwNi44IDAgMjYuOS03LjggNTMuNC0yMy41IDUzLjQtNTQuM3YtNDAuN0gyMjYuMnYtMTMuNmgxNjAuMmMzMS4xIDAgNDIuNi0yMS43IDUzLjQtNTQuMiAxMS4yLTMzLjUgMTAuNy02NS43IDAtMTA4LjZ6TTI4Ni4yIDQwNGMxMS4xIDAgMjAuMSA5LjEgMjAuMSAyMC4zIDAgMTEuMy05IDIwLjQtMjAuMSAyMC40LTExIDAtMjAuMS05LjItMjAuMS0yMC40LjEtMTEuMyA5LjEtMjAuMyAyMC4xLTIwLjN6TTE2Ny44IDI0OC4xaDEwNi44YzI5LjcgMCA1My40LTI0LjUgNTMuNC01NC4zVjkxLjljMC0yOS0yNC40LTUwLjctNTMuNC01NS42LTM1LjgtNS45LTc0LjctNS42LTEwNi44LjEtNDUuMiA4LTUzLjQgMjQuNy01My40IDU1LjZ2NDAuN2gxMDYuOXYxMy42aC0xNDdjLTMxLjEgMC01OC4zIDE4LjctNjYuOCA1NC4yLTkuOCA0MC43LTEwLjIgNjYuMSAwIDEwOC42IDcuNiAzMS42IDI1LjcgNTQuMiA1Ni44IDU0LjJIMTAxdi00OC44YzAtMzUuMyAzMC41LTY2LjQgNjYuOC02Ni40em0tNi43LTE0Mi42Yy0xMS4xIDAtMjAuMS05LjEtMjAuMS0yMC4zLjEtMTEuMyA5LTIwLjQgMjAuMS0yMC40IDExIDAgMjAuMSA5LjIgMjAuMSAyMC40cy05IDIwLjMtMjAuMSAyMC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRcSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzMuNzU0IDQyMC40NDVjLTExLjUyNiAxLjM5My00NC44Ni01Mi43NDEtNDQuODYtNTIuNzQxIDAgMzEuMzQ1LTE2LjEzNiA3Mi4yNDctNTEuMDUxIDEwMS43ODYgMTYuODQyIDUuMTkyIDU0Ljg0MyAxOS4xNjcgNDUuODAzIDM0LjQyMS03LjMxNiAxMi4zNDMtMTI1LjUxIDcuODgxLTE1OS42MzIgNC4wMzctMzQuMTIyIDMuODQ0LTE1Mi4zMTYgOC4zMDYtMTU5LjYzMi00LjAzNy05LjA0NS0xNS4yNSAyOC45MTgtMjkuMjE0IDQ1Ljc4My0zNC40MTUtMzQuOTItMjkuNTM5LTUxLjA1OS03MC40NDUtNTEuMDU5LTEwMS43OTIgMCAwLTMzLjMzNCA1NC4xMzQtNDQuODU5IDUyLjc0MS01LjM3LS42NS0xMi40MjQtMjkuNjQ0IDkuMzQ3LTk5LjcwNCAxMC4yNjEtMzMuMDI0IDIxLjk5NS02MC40NzggNDAuMTQ0LTEwNS43NzlDNjAuNjgzIDk4LjA2MyAxMDguOTgyLjAwNiAyMjQgMGMxMTMuNzM3LjAwNiAxNjMuMTU2IDk2LjEzMyAxNjAuMjY0IDIxNC45NjMgMTguMTE4IDQ1LjIyMyAyOS45MTIgNzIuODUgNDAuMTQ0IDEwNS43NzggMjEuNzY4IDcwLjA2IDE0LjcxNiA5OS4wNTMgOS4zNDYgOTkuNzA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdWluc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEzLjYgNDc0LjZoLTFhMTU4LjEgMTU4LjEgMCAwIDEgMC0zMTYuMmM5NC45IDAgMTY4LjIgODMuMSAxNTcgMTc2LjYgNCA1LjEgOC4yIDkuNiAxMS4yIDE1LjMgMTMuNC0zMC4zIDIwLjMtNjIuNCAyMC4zLTk3LjdDNTAxLjEgMTE3LjUgMzkxLjYgOCAyNTYuNSA4UzEyIDExNy41IDEyIDI1Mi42czEwOS41IDI0NC42IDI0NC41IDI0NC42YTIzNy4zNiAyMzcuMzYgMCAwIDAgNzAuNC0xMC4xYy01LjItMy41LTguOS04LjEtMTMuMy0xMi41em0tLjEtLjFsLjQuMXptNzguNC0xNjguOWE5OS4yIDk5LjIgMCAxIDAgOTkuMiA5OS4yIDk5LjE4IDk5LjE4IDAgMCAwLTk5LjItOTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVvcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjUgMzg2LjdoLTI5LjNjLTEuNSAxMy41LTEwLjUgMzAuOC0zMyAzMC44LTIwLjUgMC0zNS4zLTE0LjItNDkuNS0zNS44IDQ0LjItMzQuMiA3NC43LTg3LjUgNzQuNy0xNTNDNDAzLjUgMTExLjIgMzA2LjggMzIgMjA1IDMyIDEwNS4zIDMyIDcuMyAxMTEuNyA3LjMgMjI4LjdjMCAxMzQuMSAxMzEuMyAyMjEuNiAyNDkgMTg5QzI3NiA0NTEuMyAzMDIgNDgwIDM1MS41IDQ4MGM4MS44IDAgOTAuOC03NS4zIDg5LTkzLjN6TTI5NyAzMjkuMkMyNzcuNSAzMDAgMjUzLjMgMjc3IDIwNS41IDI3N2MtMzAuNSAwLTU0LjMgMTAtNjkgMjIuOGwxMi4yIDI0LjNjNi4yLTMgMTMtNCAxOS44LTQgMzUuNSAwIDUzLjcgMzAuOCA2OS4yIDYxLjMtMTAgMy0yMC43IDQuMi0zMi43IDQuMi03NSAwLTEwNy41LTUzLTEwNy41LTE1Ni43Qzk3LjUgMTI0LjUgMTMwIDcxIDIwNSA3MWM3Ni4yIDAgMTA4LjcgNTMuNSAxMDguNyAxNTcuNy4xIDQxLjgtNS40IDc1LjYtMTYuNyAxMDAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUlByb2plY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU4MSA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTgxIDIyNi42QzU4MSAxMTkuMSA0NTAuOSAzMiAyOTAuNSAzMlMwIDExOS4xIDAgMjI2LjZDMCAzMjIuNCAxMDMuMyA0MDIgMjM5LjQgNDE4LjFWNDgwaDk5LjF2LTYxLjVjMjQuMy0yLjcgNDcuNi03LjQgNjkuNC0xMy45TDQ0OCA0ODBoMTEybC02Ny40LTExMy43YzU0LjUtMzUuNCA4OC40LTg0LjkgODguNC0xMzkuN3ptLTQ2Ni44IDE0LjVjMC03My41IDk4LjktMTMzIDIyMC44LTEzM3MyMTEuOSA0MC43IDIxMS45IDEzM2MwIDUwLjEtMjYuNSA4NS03MC4zIDEwNi40LTIuNC0xLjYtNC43LTIuOS02LjQtMy43LTEwLjItNS4yLTI3LjgtMTAuNS0yNy44LTEwLjVzODYuNi02LjQgODYuNi05Mi43LTkwLjYtODcuOS05MC42LTg3LjloLTE5OVYzNjFjLTc0LjEtMjEuNS0xMjUuMi02Ny4xLTEyNS4yLTExOS45em0yMjUuMSAzOC4zdi01NS42YzU3LjggMCA4Ny44LTYuOCA4Ny44IDI3LjMgMCAzNi41LTM4LjIgMjguMy04Ny44IDI4LjN6bS0uOSA3Mi41SDM2NWMxMC44IDAgMTguOSAxMS43IDI0IDE5LjItMTYuMSAxLjktMzMgMi44LTUwLjYgMi45di0yMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYXNwYmVycnlQaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDA3IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIgMjMyLjVsLTMuNy02LjVjLjEtNDYuNC0yMS40LTY1LjMtNDYuNS03OS43IDcuNi0yIDE1LjQtMy42IDE3LjYtMTMuMiAxMy4xLTMuMyAxNS44LTkuNCAxNy4xLTE1LjggMy40LTIuMyAxNC44LTguNyAxMy42LTE5LjcgNi40LTQuNCAxMC0xMC4xIDguMS0xOC4xIDYuOS03LjUgOC43LTEzLjcgNS44LTE5LjQgOC4zLTEwLjMgNC42LTE1LjYgMS4xLTIwLjkgNi4yLTExLjIuNy0yMy4yLTE2LjYtMjEuMi02LjktMTAuMS0yMS45LTcuOC0yNC4yLTcuOC0yLjYtMy4yLTYtNi0xNi41LTQuNy02LjgtNi4xLTE0LjQtNS0yMi4zLTIuMS05LjMtNy4zLTE1LjUtMS40LTIyLjYuOEMyNzEuNi42IDI2OSA1LjUgMjYzLjUgNy42Yy0xMi4zLTIuNi0xNi4xIDMtMjIgOC45bC02LjktLjFjLTE4LjYgMTAuOC0yNy44IDMyLjgtMzEuMSA0NC4xLTMuMy0xMS4zLTEyLjUtMzMuMy0zMS4xLTQ0LjFsLTYuOS4xYy01LjktNS45LTkuNy0xMS41LTIyLTguOS01LjYtMi04LjEtNy0xOS40LTMuNC00LjYtMS40LTguOS00LjQtMTMuOS00LjMtMi42LjEtNS41IDEtOC43IDMuNS03LjktMy0xNS41LTQtMjIuMyAyLjEtMTAuNS0xLjMtMTQgMS40LTE2LjUgNC43LTIuMyAwLTE3LjMtMi4zLTI0LjIgNy44QzIxLjIgMTYgMTUuOCAyOCAyMiAzOS4yYy0zLjUgNS40LTcuMiAxMC43IDEuMSAyMC45LTIuOSA1LjctMS4xIDExLjkgNS44IDE5LjQtMS44IDggMS44IDEzLjcgOC4xIDE4LjEtMS4yIDExIDEwLjIgMTcuNCAxMy42IDE5LjcgMS4zIDYuNCA0IDEyLjQgMTcuMSAxNS44IDIuMiA5LjUgMTAgMTEuMiAxNy42IDEzLjItMjUuMSAxNC40LTQ2LjYgMzMuMy00Ni41IDc5LjdsLTMuNyA2LjVjLTI4LjggMTcuMi01NC43IDcyLjctMTQuMiAxMTcuNyAyLjYgMTQuMSA3LjEgMjQuMiAxMSAzNS40IDUuOSA0NS4yIDQ0LjUgNjYuMyA1NC42IDY4LjggMTQuOSAxMS4yIDMwLjggMjEuOCA1Mi4yIDI5LjJDMTU5IDUwNC4yIDE4MSA1MTIgMjAzIDUxMmgxYzIyLjEgMCA0NC03LjggNjQuMi0yOC40IDIxLjUtNy40IDM3LjMtMTggNTIuMi0yOS4yIDEwLjItMi41IDQ4LjctMjMuNiA1NC42LTY4LjggMy45LTExLjIgOC40LTIxLjMgMTEtMzUuNCA0MC42LTQ1LjEgMTQuNy0xMDAuNS0xNC0xMTcuN3ptLTIyLjItOGMtMS41IDE4LjctOTguOS02NS4xLTgyLjEtNjcuOSA0NS43LTcuNSA4My42IDE5LjIgODIuMSA2Ny45em0tNDMgOTMuMWMtMjQuNSAxNS44LTU5LjggNS42LTc4LjgtMjIuOHMtMTQuNi02NC4yIDkuOS04MGMyNC41LTE1LjggNTkuOC01LjYgNzguOCAyMi44czE0LjYgNjQuMi05LjkgODB6TTIzOC45IDI5LjNjLjggNC4yIDEuOCA2LjggMi45IDcuNiA1LjQtNS44IDkuOC0xMS43IDE2LjgtMTcuMyAwIDMuMy0xLjcgNi44IDIuNSA5LjQgMy43LTUgOC44LTkuNSAxNS41LTEzLjMtMy4yIDUuNi0uNiA3LjMgMS4yIDkuNiA1LjEtNC40IDEwLTguOCAxOS40LTEyLjMtMi42IDMuMS02LjIgNi4yLTIuNCA5LjggNS4zLTMuMyAxMC42LTYuNiAyMy4xLTguOS0yLjggMy4xLTguNyA2LjMtNS4xIDkuNCA2LjYtMi41IDE0LTQuNCAyMi4xLTUuNC0zLjkgMy4yLTcuMSA2LjMtMy45IDguOCA3LjEtMi4yIDE2LjktNS4xIDI2LjQtMi42bC02IDYuMWMtLjcuOCAxNC4xLjYgMjMuOS44LTMuNiA1LTcuMiA5LjctOS4zIDE4LjIgMSAxIDUuOC40IDEwLjQgMC00LjcgOS45LTEyLjggMTIuMy0xNC43IDE2LjYgMi45IDIuMiA2LjggMS42IDExLjIuMS0zLjQgNi45LTEwLjQgMTEuNy0xNiAxNy4zIDEuNCAxIDMuOSAxLjYgOS43LjktNS4yIDUuNS0xMS40IDEwLjUtMTguOCAxNSAxLjMgMS41IDUuOCAxLjUgMTAgMS42LTYuNyA2LjUtMTUuMyA5LjktMjMuNCAxNC4yIDQgMi43IDYuOSAyLjEgMTAgMi4xLTUuNyA0LjctMTUuNCA3LjEtMjQuNCAxMCAxLjcgMi43IDMuNCAzLjQgNy4xIDQuMS05LjUgNS4zLTIzLjIgMi45LTI3IDUuNi45IDIuNyAzLjYgNC40IDYuNyA1LjgtMTUuNC45LTU3LjMtLjYtNjUuNC0zMi4zIDE1LjctMTcuMyA0NC40LTM3LjUgOTMuNy02Mi42LTM4LjQgMTIuOC03MyAzMC0xMDIgNTMuNS0zNC4zLTE1LjktMTAuOC01NS45IDUuOC03MS44em0tMzQuNCAxMTQuNmMyNC4yLS4zIDU0LjEgMTcuOCA1NCAzNC43LS4xIDE1LTIxIDI3LjEtNTMuOCAyNi45LTMyLjEtLjQtNTMuNy0xNS4yLTUzLjYtMjkuOCAwLTExLjkgMjYuMi0zMi41IDUzLjQtMzEuOHptLTEyMy0xMi44YzMuNy0uNyA1LjQtMS41IDcuMS00LjEtOS0yLjgtMTguNy01LjMtMjQuNC0xMCAzLjEgMCA2IC43IDEwLTIuMS04LjEtNC4zLTE2LjctNy43LTIzLjQtMTQuMiA0LjItLjEgOC43IDAgMTAtMS42LTcuNC00LjUtMTMuNi05LjUtMTguOC0xNSA1LjguNyA4LjMuMSA5LjctLjktNS42LTUuNi0xMi43LTEwLjQtMTYtMTcuMyA0LjMgMS41IDguMyAyIDExLjItLjEtMS45LTQuMi0xMC02LjctMTQuNy0xNi42IDQuNi40IDkuNCAxIDEwLjQgMC0yLjEtOC41LTUuOC0xMy4zLTkuMy0xOC4yIDkuOC0uMSAyNC42IDAgMjMuOS0uOGwtNi02LjFjOS41LTIuNSAxOS4zLjQgMjYuNCAyLjYgMy4yLTIuNS0uMS01LjYtMy45LTguOCA4LjEgMS4xIDE1LjQgMi45IDIyLjEgNS40IDMuNS0zLjEtMi4zLTYuMy01LjEtOS40IDEyLjUgMi4zIDE3LjggNS42IDIzLjEgOC45IDMuOC0zLjYuMi02LjctMi40LTkuOCA5LjQgMy40IDE0LjMgNy45IDE5LjQgMTIuMyAxLjctMi4zIDQuNC00IDEuMi05LjYgNi43IDMuOCAxMS44IDguMyAxNS41IDEzLjMgNC4xLTIuNiAyLjUtNi4yIDIuNS05LjQgNyA1LjYgMTEuNCAxMS41IDE2LjggMTcuMyAxLjEtLjggMi0zLjQgMi45LTcuNiAxNi42IDE1LjkgNDAuMSA1NS45IDYgNzEuOC0yOS0yMy41LTYzLjYtNDAuNy0xMDItNTMuNSA0OS4zIDI1IDc4IDQ1LjMgOTMuNyA2Mi42LTggMzEuOC01MCAzMy4yLTY1LjQgMzIuMyAzLjEtMS40IDUuOC0zLjIgNi43LTUuOC00LTIuOC0xNy42LS40LTI3LjItNS42em02MC4xIDI0LjFjMTYuOCAyLjgtODAuNiA4Ni41LTgyLjEgNjcuOS0xLjUtNDguNyAzNi41LTc1LjUgODIuMS02Ny45ek0zOC4yIDM0MmMtMjMuNy0xOC44LTMxLjMtNzMuNyAxMi42LTk4LjMgMjYuNS03IDkgMTA3LjgtMTIuNiA5OC4zem05MSA5OC4yYy0xMy4zIDcuOS00NS44IDQuNy02OC44LTI3LjktMTUuNS0yNy40LTEzLjUtNTUuMi0yLjYtNjMuNCAxNi4zLTkuOCA0MS41IDMuNCA2MC45IDI1LjYgMTYuOSAyMCAyNC42IDU1LjMgMTAuNSA2NS43em0tMjYuNC0xMTkuN2MtMjQuNS0xNS44LTI4LjktNTEuNi05LjktODBzNTQuMy0zOC42IDc4LjgtMjIuOCAyOC45IDUxLjYgOS45IDgwYy0xOS4xIDI4LjQtNTQuNCAzOC42LTc4LjggMjIuOHpNMjA1IDQ5NmMtMjkuNCAxLjItNTguMi0yMy43LTU3LjgtMzIuMy0uNC0xMi43IDM1LjgtMjIuNiA1OS4zLTIyIDIzLjctMSA1NS42IDcuNSA1NS43IDE4LjkuNSAxMS0yOC44IDM1LjktNTcuMiAzNS40em01OC45LTEyNC45Yy4yIDI5LjctMjYuMiA1My44LTU4LjggNTQtMzIuNi4yLTU5LjItMjMuOC01OS40LTUzLjR2LS42Yy0uMi0yOS43IDI2LjItNTMuOCA1OC44LTU0IDMyLjYtLjIgNTkuMiAyMy44IDU5LjQgNTMuNHYuNnptODIuMiA0Mi43Yy0yNS4zIDM0LjYtNTkuNiAzNS45LTcyLjMgMjYuMy0xMy4zLTEyLjQtMy4yLTUwLjkgMTUuMS03MiAyMC45LTIzLjMgNDMuMy0zOC41IDU4LjktMjYuNiAxMC41IDEwLjMgMTYuNyA0OS4xLTEuNyA3Mi4zem0yMi45LTczLjJjLTIxLjUgOS40LTM5LTEwNS4zLTEyLjYtOTguMyA0My45IDI0LjcgMzYuMyA3OS42IDEyLjYgOTguM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmF2ZWxyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTguMjUyLDIzNC4yMjNjLTEuMjA4LTEwLjM0LTEuNy0yMC44MjYtMy43NDYtMzFhMzEwLjMwNiwzMTAuMzA2LDAsMCwwLTkuNjIyLTM2LjYsMTg0LjA2OCwxODQuMDY4LDAsMCwwLTMwLjg3NC01Ny41LDI1MS4xNTQsMjUxLjE1NCwwLDAsMC0xOC44MTgtMjEuNjg5LDIzNy4zNjIsMjM3LjM2MiwwLDAsMC00Ny4xMTMtMzYuMTE2QTI0MC44LDI0MC44LDAsMCwwLDMzMS4zNTYsMjYuNjVjLTExLjAxOC0zLjEtMjIuMjcyLTUuNDMxLTMzLjUxNS03LjYxNS02Ljc4LTEuMzE0LTEzLjc0OS0xLjY2Ny0yMC42MjctMi40ODItLjMxNi0uMDM2LS42LS4zNTgtLjktLjU1M3EtMTYuMTQzLjAwOS0zMi4yODguMDA2Yy0yLjQxLjM4OS00LjgwOC45MjUtNy4yMzYsMS4xNWExNzkuMzMxLDE3OS4zMzEsMCwwLDAtMzQuMjU2LDcuMSwyMjEuNSwyMjEuNSwwLDAsMC0zOS43NjgsMTYuMzU1LDI4MS4zODUsMjgxLjM4NSwwLDAsMC0zOC4wOCwyNC4xNThjLTYuMTY3LDQuNjEtMTIuMjY4LDkuMzYtMTcuOTc0LDE0LjUxOEM5Ni41MzksODguNDk0LDg2LjM0LDk3LjcyLDc2Ljc4NSwxMDcuNTU1YTI0My44NzgsMjQzLjg3OCwwLDAsMC0zMy42NDgsNDMuOTUsMjA2LjQ4OCwyMDYuNDg4LDAsMCwwLTIwLjQ5NCw0NC42LDE5OC4yLDE5OC4yLDAsMCwwLTcuNjkxLDM0Ljc1OUEyMDEuMTMsMjAxLjEzLDAsMCwwLDEzLjQsMjY2LjM4NWEyOTkuNzE2LDI5OS43MTYsMCwwLDAsNC40MjUsNDAuMjQsMjI2Ljg2NSwyMjYuODY1LDAsMCwwLDE2LjczLDUzLjMsMjEwLjU0MywyMTAuNTQzLDAsMCwwLDI0LDM5LjUyOCwyMTMuNTg5LDIxMy41ODksMCwwLDAsMjYuMzU4LDI4LjQxNkEyNTEuMzEzLDI1MS4zMTMsMCwwLDAsMTI2LjcsNDU4LjQ1NWEyODcuODMxLDI4Ny44MzEsMCwwLDAsNTUuOSwyNS4yNzcsMjY5LjUsMjY5LjUsMCwwLDAsNDAuNjQxLDkuODM1YzYuMDcxLDEuMDEsMTIuMjc1LDEuMjUzLDE4LjQxMiwxLjg3M2E0LjE0OSw0LjE0OSwwLDAsMSwxLjE5LjU2aDMyLjI4OWMyLjUwNy0uMzg5LDUtLjkzNyw3LjUyNy0xLjE0MywxNi4zMzYtMS4zMzIsMzIuMTA3LTUuMzM1LDQ3LjQ4OS0xMC43MTdBMjE5Ljk5MiwyMTkuOTkyLDAsMCwwLDM3OS4xLDQ2MC4zMjJjOS43NDktNi40NDcsMTkuMzk1LTEzLjA3NywyOC43MzctMjAuMSw1Ljc4NS00LjM0OCwxMC45ODgtOS41LDE2LjMtMTQuNDU3LDMuOTY0LTMuNyw3Ljc2NC03LjU3OCwxMS41MS0xMS41YTIzMi4xNjIsMjMyLjE2MiwwLDAsMCwzMS40MjctNDEuNjM5YzkuNTQyLTE2LjA0NSwxNy4zNTUtMzIuOTA1LDIyLjMtNTAuOTI2LDIuODU5LTEwLjQxMyw0Ljk0Ny0yMS4wNDUsNy4wMTctMzEuNjUyLDEuMDMyLTUuMjc5LDEuMjUxLTEwLjcyMywxLjg3LTE2LjA4Ny4wMzYtLjMxNy4zNTgtLjYuNTUyLS45VjIzNi4wMDVBOS43NTcsOS43NTcsMCwwLDEsNDk4LjI1MiwyMzQuMjIzWm0tMTYxLjExNy0xLjE1cy0xNi41NzItMi45OC0yOC40Ny0yLjk4Yy0yNy4yLDAtMzMuNTcsMTQuOS0zMy41NywzNy4wNFYzNjAuOEgyMDEuNTgyVjE3MC4wNjJIMjc1LjF2MzEuOTMxYzguOTI0LTI2LjgyMiwyNi43NzEtMzYuMTg5LDYyLjA0LTM2LjE4OVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVhY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE4LjIgMTc3LjJjLTUuNC0xLjgtMTAuOC0zLjUtMTYuMi01LjEuOS0zLjcgMS43LTcuNCAyLjUtMTEuMSAxMi4zLTU5LjYgNC4yLTEwNy41LTIzLjEtMTIzLjMtMjYuMy0xNS4xLTY5LjIuNi0xMTIuNiAzOC40LTQuMyAzLjctOC41IDcuNi0xMi41IDExLjUtMi43LTIuNi01LjUtNS4yLTguMy03LjctNDUuNS00MC40LTkxLjEtNTcuNC0xMTguNC00MS41LTI2LjIgMTUuMi0zNCA2MC4zLTIzIDExNi43IDEuMSA1LjYgMi4zIDExLjEgMy43IDE2LjctNi40IDEuOC0xMi43IDMuOC0xOC42IDUuOUMzOC4zIDE5Ni4yIDAgMjI1LjQgMCAyNTUuNmMwIDMxLjIgNDAuOCA2Mi41IDk2LjMgODEuNSA0LjUgMS41IDkgMyAxMy42IDQuMy0xLjUgNi0yLjggMTEuOS00IDE4LTEwLjUgNTUuNS0yLjMgOTkuNSAyMy45IDExNC42IDI3IDE1LjYgNzIuNC0uNCAxMTYuNi0zOS4xIDMuNS0zLjEgNy02LjMgMTAuNS05LjcgNC40IDQuMyA5IDguNCAxMy42IDEyLjQgNDIuOCAzNi44IDg1LjEgNTEuNyAxMTEuMiAzNi42IDI3LTE1LjYgMzUuOC02Mi45IDI0LjQtMTIwLjUtLjktNC40LTEuOS04LjktMy0xMy41IDMuMi0uOSA2LjMtMS45IDkuNC0yLjkgNTcuNy0xOS4xIDk5LjUtNTAgOTkuNS04MS43IDAtMzAuMy0zOS40LTU5LjctOTMuOC03OC40ek0yODIuOSA5Mi4zYzM3LjItMzIuNCA3MS45LTQ1LjEgODcuNy0zNiAxNi45IDkuNyAyMy40IDQ4LjkgMTIuOCAxMDAuNC0uNyAzLjQtMS40IDYuNy0yLjMgMTAtMjIuMi01LTQ0LjctOC42LTY3LjMtMTAuNi0xMy0xOC42LTI3LjItMzYuNC00Mi42LTUzLjEgMy45LTMuNyA3LjctNy4yIDExLjctMTAuN3pNMTY3LjIgMzA3LjVjNS4xIDguNyAxMC4zIDE3LjQgMTUuOCAyNS45LTE1LjYtMS43LTMxLjEtNC4yLTQ2LjQtNy41IDQuNC0xNC40IDkuOS0yOS4zIDE2LjMtNDQuNSA0LjYgOC44IDkuMyAxNy41IDE0LjMgMjYuMXptLTMwLjMtMTIwLjNjMTQuNC0zLjIgMjkuNy01LjggNDUuNi03LjgtNS4zIDguMy0xMC41IDE2LjgtMTUuNCAyNS40LTQuOSA4LjUtOS43IDE3LjItMTQuMiAyNi02LjMtMTQuOS0xMS42LTI5LjUtMTYtNDMuNnptMjcuNCA2OC45YzYuNi0xMy44IDEzLjgtMjcuMyAyMS40LTQwLjZzMTUuOC0yNi4yIDI0LjQtMzguOWMxNS0xLjEgMzAuMy0xLjcgNDUuOS0xLjdzMzEgLjYgNDUuOSAxLjdjOC41IDEyLjYgMTYuNiAyNS41IDI0LjMgMzguN3MxNC45IDI2LjcgMjEuNyA0MC40Yy02LjcgMTMuOC0xMy45IDI3LjQtMjEuNiA0MC44LTcuNiAxMy4zLTE1LjcgMjYuMi0yNC4yIDM5LTE0LjkgMS4xLTMwLjQgMS42LTQ2LjEgMS42cy0zMC45LS41LTQ1LjYtMS40Yy04LjctMTIuNy0xNi45LTI1LjctMjQuNi0zOXMtMTQuOC0yNi44LTIxLjUtNDAuNnptMTgwLjYgNTEuMmM1LjEtOC44IDkuOS0xNy43IDE0LjYtMjYuNyA2LjQgMTQuNSAxMiAyOS4yIDE2LjkgNDQuMy0xNS41IDMuNS0zMS4yIDYuMi00NyA4IDUuNC04LjQgMTAuNS0xNyAxNS41LTI1LjZ6bTE0LjQtNzYuNWMtNC43LTguOC05LjUtMTcuNi0xNC41LTI2LjItNC45LTguNS0xMC0xNi45LTE1LjMtMjUuMiAxNi4xIDIgMzEuNSA0LjcgNDUuOSA4LTQuNiAxNC44LTEwIDI5LjItMTYuMSA0My40ek0yNTYuMiAxMTguM2MxMC41IDExLjQgMjAuNCAyMy40IDI5LjYgMzUuOC0xOS44LS45LTM5LjctLjktNTkuNSAwIDkuOC0xMi45IDE5LjktMjQuOSAyOS45LTM1Ljh6TTE0MC4yIDU3YzE2LjgtOS44IDU0LjEgNC4yIDkzLjQgMzkgMi41IDIuMiA1IDQuNiA3LjYgNy0xNS41IDE2LjctMjkuOCAzNC41LTQyLjkgNTMuMS0yMi42IDItNDUgNS41LTY3LjIgMTAuNC0xLjMtNS4xLTIuNC0xMC4zLTMuNS0xNS41LTkuNC00OC40LTMuMi04NC45IDEyLjYtOTR6bS0yNC41IDI2My42Yy00LjItMS4yLTguMy0yLjUtMTIuNC0zLjktMjEuMy02LjctNDUuNS0xNy4zLTYzLTMxLjItMTAuMS03LTE2LjktMTcuOC0xOC44LTI5LjkgMC0xOC4zIDMxLjYtNDEuNyA3Ny4yLTU3LjYgNS43LTIgMTEuNS0zLjggMTcuMy01LjUgNi44IDIxLjcgMTUgNDMgMjQuNSA2My42LTkuNiAyMC45LTE3LjkgNDIuNS0yNC44IDY0LjV6bTExNi42IDk4Yy0xNi41IDE1LjEtMzUuNiAyNy4xLTU2LjQgMzUuMy0xMS4xIDUuMy0yMy45IDUuOC0zNS4zIDEuMy0xNS45LTkuMi0yMi41LTQ0LjUtMTMuNS05MiAxLjEtNS42IDIuMy0xMS4yIDMuNy0xNi43IDIyLjQgNC44IDQ1IDguMSA2Ny45IDkuOCAxMy4yIDE4LjcgMjcuNyAzNi42IDQzLjIgNTMuNC0zLjIgMy4xLTYuNCA2LjEtOS42IDguOXptMjQuNS0yNC4zYy0xMC4yLTExLTIwLjQtMjMuMi0zMC4zLTM2LjMgOS42LjQgMTkuNS42IDI5LjUuNiAxMC4zIDAgMjAuNC0uMiAzMC40LS43LTkuMiAxMi43LTE5LjEgMjQuOC0yOS42IDM2LjR6bTEzMC43IDMwYy0uOSAxMi4yLTYuOSAyMy42LTE2LjUgMzEuMy0xNS45IDkuMi00OS44LTIuOC04Ni40LTM0LjItNC4yLTMuNi04LjQtNy41LTEyLjctMTEuNSAxNS4zLTE2LjkgMjkuNC0zNC44IDQyLjItNTMuNiAyMi45LTEuOSA0NS43LTUuNCA2OC4yLTEwLjUgMSA0LjEgMS45IDguMiAyLjcgMTIuMiA0LjkgMjEuNiA1LjcgNDQuMSAyLjUgNjYuM3ptMTguMi0xMDcuNWMtMi44LjktNS42IDEuOC04LjUgMi42LTctMjEuOC0xNS42LTQzLjEtMjUuNS02My44IDkuNi0yMC40IDE3LjctNDEuNCAyNC41LTYyLjkgNS4yIDEuNSAxMC4yIDMuMSAxNSA0LjcgNDYuNiAxNiA3OS4zIDM5LjggNzkuMyA1OCAwIDE5LjYtMzQuOSA0NC45LTg0LjggNjEuNHptLTE0OS43LTE1YzI1LjMgMCA0NS44LTIwLjUgNDUuOC00NS44cy0yMC41LTQ1LjgtNDUuOC00NS44Yy0yNS4zIDAtNDUuOCAyMC41LTQ1LjggNDUuOHMyMC41IDQ1LjggNDUuOCA0NS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWFjdGV1cm9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTAuNiAyMTEuNzRsNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjEtLjEtMi4zLTYuOC0yLjMgNi44LTcuMi4xIDUuNyA0LjN6bTYzLjcgMGw1LjgtNC4xIDUuOCA0LjEtMi4xLTYuOCA1LjctNC4zLTcuMi0uMS0yLjMtNi44LTIuMyA2LjgtNy4yLjEgNS43IDQuM3ptLTkxLjMgNTAuNWgtMy40Yy00LjggMC0zLjggNC0zLjggMTIuMSAwIDQuNy0yLjMgNi4xLTUuOCA2LjFzLTUuOC0xLjQtNS44LTYuMXYtMzYuNmMwLTQuNyAyLjMtNi4xIDUuOC02LjFzNS44IDEuNCA1LjggNi4xYzAgNy4yLS43IDEwLjUgMy44IDEwLjVoMy40YzQuNy0uMSAzLjgtMy45IDMuOC0xMi4zIDAtOS45LTYuNy0xNC4xLTE2LjgtMTQuMWgtLjJjLTEwLjEgMC0xNi44IDQuMi0xNi44IDE0LjFWMjc2YzAgMTAuNCA2LjcgMTQuMSAxNi44IDE0LjFoLjJjMTAuMSAwIDE2LjgtMy44IDE2LjgtMTQuMSAwLTkuODYgMS4xLTEzLjc2LTMuOC0xMy43NnptLTgwLjcgMTcuNGgtMTQuN3YtMTkuM0gxMzljMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0xMS40di0xOC4zSDE0MmMyLjUgMCAzLjgtMS4zIDMuOC0zLjh2LTIuMWMwLTIuNS0xLjMtMy44LTMuOC0zLjhoLTIxLjdjLTIuNC0uMS0zLjcgMS4zLTMuNyAzLjh2NTkuMWMwIDIuNSAxLjMgMy44IDMuOCAzLjhoMjEuOWMyLjUgMCAzLjgtMS4zIDMuOC0zLjh2LTIuMWMwLTIuNS0xLjMtMy44LTMuOC0zLjh6bS00Mi0xOC41YzQuNi0yIDcuMy02IDcuMy0xMi40di0xMS45YzAtMTAuMS02LjctMTQuMS0xNi44LTE0LjFINzcuNGMtMi41IDAtMy44IDEuMy0zLjggMy44djU5LjFjMCAyLjUgMS4zIDMuOCAzLjggMy44aDMuNGMyLjUgMCAzLjgtMS4zIDMuOC0zLjh2LTIyLjloNS42bDcuNCAyMy41YTQuMSA0LjEgMCAwIDAgNC4zIDMuMmgzLjNjMi44IDAgNC0xLjggMy4yLTQuNHptLTMuOC0xNGMwIDQuOC0yLjUgNi4xLTYuMSA2LjFoLTUuOHYtMjAuOWg1LjhjMy42IDAgNi4xIDEuMyA2LjEgNi4xek0xNzYgMjI2YTMuODIgMy44MiAwIDAgMC00LjItMy40aC02LjlhMy42OCAzLjY4IDAgMCAwLTQgMy40bC0xMSA1OS4yYy0uNSAyLjcuOSA0LjEgMy40IDQuMWgzYTMuNzQgMy43NCAwIDAgMCA0LjEtMy41bDEuOC0xMS4zaDEyLjJsMS44IDExLjNhMy43NCAzLjc0IDAgMCAwIDQuMSAzLjVoMy41YzIuNiAwIDMuOS0xLjQgMy40LTQuMXptLTEyLjMgMzkuM2w0LjctMjkuNyA0LjcgMjkuN3ptODkuMyAyMC4ydi01My4yaDcuNWMyLjUgMCAzLjgtMS4zIDMuOC0zLjh2LTIuMWMwLTIuNS0xLjMtMy44LTMuOC0zLjhoLTI1LjhjLTIuNSAwLTMuOCAxLjMtMy44IDMuOHYyLjFjMCAyLjUgMS4zIDMuOCAzLjggMy44aDcuM3Y1My4yYzAgMi41IDEuMyAzLjggMy44IDMuOGgzLjRjMi41LjA0IDMuOC0xLjMgMy44LTMuNzZ6bTI0OC0uOGgtMTkuNFYyNThoMTYuMWExLjg5IDEuODkgMCAwIDAgMi0ydi0uOGExLjg5IDEuODkgMCAwIDAtMi0yaC0xNi4xdi0yNS44aDE5LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS43NyAxLjc3IDAgMCAwLTItMS45aC0yMi4yYTEuNjIgMS42MiAwIDAgMC0yIDEuOHY2M2ExLjgxIDEuODEgMCAwIDAgMiAxLjlINTAxYTEuODEgMS44MSAwIDAgMCAyLTEuOXYtLjhhMS44NCAxLjg0IDAgMCAwLTItMS45NnptLTkzLjEtNjIuOWgtLjhjLTEwLjEgMC0xNS4zIDQuNy0xNS4zIDE0LjFWMjc2YzAgOS4zIDUuMiAxNC4xIDE1LjMgMTQuMWguOGMxMC4xIDAgMTUuMy00LjggMTUuMy0xNC4xdi00MC4xYzAtOS4zNi01LjItMTQuMDYtMTUuMy0xNC4wNnptMTAuMiA1Mi40Yy0uMSA4LTMgMTEuMS0xMC41IDExLjFzLTEwLjUtMy4xLTEwLjUtMTEuMXYtMzYuNmMwLTcuOSAzLTExLjEgMTAuNS0xMS4xczEwLjUgMy4yIDEwLjUgMTEuMXptLTQ2LjUtMTQuNWM2LjEtMS42IDkuMi02LjEgOS4yLTEzLjN2LTkuN2MwLTkuNC01LjItMTQuMS0xNS4zLTE0LjFoLTEzLjdhMS44MSAxLjgxIDAgMCAwLTIgMS45djYzYTEuODEgMS44MSAwIDAgMCAyIDEuOWgxLjJhMS43NCAxLjc0IDAgMCAwIDEuOS0xLjl2LTI2LjloMTEuNmwxMC40IDI3LjJhMi4zMiAyLjMyIDAgMCAwIDIuMyAxLjVoMS41YzEuNCAwIDItMSAxLjUtMi4zem0tNi40LTMuOUgzNTV2LTI4LjVoMTAuMmM3LjUgMCAxMC41IDMuMSAxMC41IDExLjF2Ni40YzAgNy44NC0zIDExLjA0LTEwLjUgMTEuMDR6bTg1LjktMzMuMWgtMTMuN2ExLjYyIDEuNjIgMCAwIDAtMiAxLjh2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45aDEuMmExLjc0IDEuNzQgMCAwIDAgMS45LTEuOXYtMjYuMWgxMC42YzEwLjEgMCAxNS4zLTQuOCAxNS4zLTE0LjF2LTEwLjVjMC05LjQtNS4yLTE0LjEtMTUuMy0xNC4xem0xMC4yIDIyLjhjMCA3LjktMyAxMS4xLTEwLjUgMTEuMWgtMTAuMnYtMjkuMmgxMC4yYzcuNS0uMSAxMC41IDMuMSAxMC41IDExek0yNTkuNSAzMDhsLTIuMy02LjgtMi4zIDYuOC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuM3ptMjI3LjYtMTM2LjFhMzY0LjQyIDM2NC40MiAwIDAgMC0zNS42LTExLjNjMTkuNi03OCAxMS42LTEzNC43LTIyLjMtMTUzLjlDMzk0LjctMTIuNjYgMzQzLjMgMTEgMjkxIDYxLjk0cTUuMSA0Ljk1IDEwLjIgMTAuMmM4Mi41LTgwIDExOS42LTUzLjUgMTIwLjktNTIuOCAyMi40IDEyLjcgMzYgNTUuOCAxNS41IDEzNy44YTU4Ny44MyA1ODcuODMgMCAwIDAtODQuNi0xM0MyODEuMSA0My42NCAyMTIuNCAyIDE3MC44IDIgMTQwIDIgMTI3IDIzIDEyMy4yIDI5Ljc0Yy0xOC4xIDMyLTEzLjMgODQuMi4xIDEzMy44LTcwLjUgMjAuMy0xMjAuNyA1NC4xLTEyMC4zIDk1IC41IDU5LjYgMTAzLjIgODcuOCAxMjIuMSA5Mi44LTIwLjUgODEuOS0xMC4xIDEzNS42IDIyLjMgMTUzLjkgMjggMTUuOCA3NS4xIDYgMTM4LjItNTUuMnEtNS4xLTQuOTUtMTAuMi0xMC4yYy04Mi41IDgwLTExOS43IDUzLjUtMTIwLjkgNTIuOC0yMi4zLTEyLjYtMzYtNTUuNi0xNS41LTEzNy45IDEyLjQgMi45IDQxLjggOS41IDg0LjYgMTMgNzEuOSAxMDAuNCAxNDAuNiAxNDIgMTgyLjEgMTQyIDMwLjggMCA0My44LTIxIDQ3LjYtMjcuNyAxOC0zMS45IDEzLjMtODQuMS0uMS0xMzMuOCAxNTIuMy00My44IDE1Ni4yLTEzMC4yIDMzLjktMTc2LjN6TTEzNS45IDM2Ljg0YzIuOS01LjEgMTEuOS0yMC4zIDM0LjktMjAuMyAzNi44IDAgOTguOCAzOS42IDE2My4zIDEyNi4yYTcxNCA3MTQgMCAwIDAtOTMuOS45IDU0Ny43NiA1NDcuNzYgMCAwIDEgNDIuMi01Mi40UTI3Ny4zIDg2IDI3Mi4yIDgxYTU5OC4yNSA1OTguMjUgMCAwIDAtNTAuNyA2NC4yIDU2OS42OSA1NjkuNjkgMCAwIDAtODQuNCAxNC42Yy0uMi0xLjQtMjQuMy04Mi4yLTEuMi0xMjN6bTMwNC44IDQzOC4zYy0yLjkgNS4xLTExLjggMjAuMy0zNC45IDIwLjMtMzYuNyAwLTk4LjctMzkuNC0xNjMuMy0xMjYuMmE2OTUuMzggNjk1LjM4IDAgMCAwIDkzLjktLjkgNTQ3Ljc2IDU0Ny43NiAwIDAgMS00Mi4yIDUyLjRxNS4xIDUuMjUgMTAuMiAxMC4yYTU4OC40NyA1ODguNDcgMCAwIDAgNTAuNy02NC4yYzQ3LjMtNC43IDgwLjMtMTMuNSA4NC40LTE0LjYgMjIuNyA4NC40IDQuNSAxMTcgMS4yIDEyM3ptOS4xLTEzOC42Yy0zLjYtMTEuOS03LjctMjQuMS0xMi40LTM2LjRhMTIuNjcgMTIuNjcgMCAwIDEtMTAuNy01LjdsLS4xLjFhMTkuNjEgMTkuNjEgMCAwIDEtNS40IDMuNmM1LjcgMTQuMyAxMC42IDI4LjQgMTQuNyA0Mi4yYTUzNS4zIDUzNS4zIDAgMCAxLTcyIDEzYzMuNS01LjMgMTcuMi0yNi4yIDMyLjItNTQuMmEyNC42IDI0LjYgMCAwIDEtNi0zLjJjLTEuMSAxLjItMy42IDQuMi0xMC45IDQuMi02LjIgMTEuMi0xNy40IDMwLjktMzMuOSA1NS4yYTcxMS45MSA3MTEuOTEgMCAwIDEtMTEyLjQgMWMtNy45LTExLjItMjEuNS0zMS4xLTM2LjgtNTcuOGEyMSAyMSAwIDAgMS0zLTEuNWMtMS45IDEuNi0zLjkgMy4yLTEyLjYgMy4yIDYuMyAxMS4yIDE3LjUgMzAuNyAzMy44IDU0LjZhNTQ4LjgxIDU0OC44MSAwIDAgMS03Mi4yLTExLjdxNS44NS0yMSAxNC4xLTQyLjljLTMuMiAwLTUuNC4yLTguNC0xYTE3LjU4IDE3LjU4IDAgMCAxLTYuOSAxYy00LjkgMTMuNC05LjEgMjYuNS0xMi43IDM5LjRDLTMxLjcgMjk3LTEyLjEgMjE2IDEyNi43IDE3NS42NGMzLjYgMTEuOSA3LjcgMjQuMSAxMi40IDM2LjQgMTAuNCAwIDEyLjkgMy40IDE0LjQgNS4zYTEyIDEyIDAgMCAxIDIuMy0yLjJjLTUuOC0xNC43LTEwLjktMjkuMi0xNS4yLTQzLjMgNy0xLjggMzIuNC04LjQgNzItMTMtMTUuOSAyNC4zLTI2LjcgNDMuOS0zMi44IDU1LjNhMTQuMjIgMTQuMjIgMCAwIDEgNi40IDggMjMuNDIgMjMuNDIgMCAwIDEgMTAuMi04LjRjNi41LTExLjcgMTcuOS0zMS45IDM0LjgtNTYuOWE3MTEuNzIgNzExLjcyIDAgMCAxIDExMi40LTFjMzEuNSA0NC42IDI4LjkgNDguMSA0Mi41IDY0LjVhMjEuNDIgMjEuNDIgMCAwIDEgMTAuNC03LjRjLTYuNC0xMS40LTE3LjYtMzEtMzQuMy01NS41IDQwLjQgNC4xIDY1IDEwIDcyLjIgMTEuNy00IDE0LjQtOC45IDI5LjItMTQuNiA0NC4yYTIwLjc0IDIwLjc0IDAgMCAxIDYuOCA0LjNsLjEuMWExMi43MiAxMi43MiAwIDAgMSA4LjktNS42YzQuOS0xMy40IDkuMi0yNi42IDEyLjgtMzkuNWEzNTkuNzEgMzU5LjcxIDAgMCAxIDM0LjUgMTFjMTA2LjEgMzkuOSA3NCA4Ny45IDcyLjYgOTAuNC0xOS44IDM1LjEtODAuMSA1NS4yLTEwNS43IDYyLjV6bS0xMTQuNC0xMTRoLTEuMmExLjc0IDEuNzQgMCAwIDAtMS45IDEuOXY0OS44YzAgNy45LTIuNiAxMS4xLTEwLjEgMTEuMXMtMTAuMS0zLjEtMTAuMS0xMS4xdi00OS44YTEuNjkgMS42OSAwIDAgMC0xLjktMS45SDMwOWExLjgxIDEuODEgMCAwIDAtMiAxLjl2NTEuNWMwIDkuNiA1IDE0LjEgMTUuMSAxNC4xaC40YzEwLjEgMCAxNS4xLTQuNiAxNS4xLTE0LjF2LTUxLjVhMiAyIDAgMCAwLTIuMi0xLjl6TTMyMS43IDMwOGwtMi4zLTYuOC0yLjMgNi44LTcuMS4xIDUuNyA0LjMtMi4xIDYuOCA1LjgtNC4xIDUuOCA0LjEtMi4xLTYuOCA1LjctNC4zem0tMzEuMSA3LjRsLTIuMy02LjgtMi4zIDYuOC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuM3ptNS4xLTMwLjhoLTE5LjR2LTI2LjdoMTYuMWExLjg5IDEuODkgMCAwIDAgMi0ydi0uOGExLjg5IDEuODkgMCAwIDAtMi0yaC0xNi4xdi0yNS44aDE5LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS43NyAxLjc3IDAgMCAwLTItMS45aC0yMi4yYTEuODEgMS44MSAwIDAgMC0yIDEuOXY2M2ExLjgxIDEuODEgMCAwIDAgMiAxLjloMjIuNWExLjc3IDEuNzcgMCAwIDAgMi0xLjl2LS44YTEuODMgMS44MyAwIDAgMC0yLTIuMDZ6bS03LjQtOTkuNEwyODYgMTkybC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjEtLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlYWRtZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjguMyA0Ni41SDM4OC41Yy00OC4xIDAtODkuOSAzMy4zLTEwMC40IDgwLjMtMTAuNi00Ny01Mi4zLTgwLjMtMTAwLjQtODAuM0g0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MjQ1LjhjMCAyNi41IDIxLjUgNDggNDggNDhoODkuN2MxMDIuMiAwIDEzMi43IDI0LjQgMTQ3LjMgNzUgLjcgMi44IDUuMiAyLjggNiAwIDE0LjctNTAuNiA0NS4yLTc1IDE0Ny4zLTc1SDUyOGMyNi41IDAgNDgtMjEuNSA0OC00OFY5NC42YzAtMjYuNC0yMS4zLTQ3LjktNDcuNy00OC4xek0yNDIgMzExLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDc4LjJjLTEuOSAwLTMuNS0xLjUtMy41LTMuNVYyODljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDc4LjJjLTEuOSAwLTMuNS0xLjUtMy41LTMuNXYtMjIuOWMwLTEuOSAxLjUtMy41IDMuNS0zLjVoMTYwLjRjMS45IDAgMy41IDEuNSAzLjUgMy41VjI1MXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0yNTkuMyAxMjEuN2MwIDEuOS0xLjUgMy41LTMuNSAzLjVIMzM3LjVjLTEuOSAwLTMuNS0xLjUtMy41LTMuNXYtMjIuOWMwLTEuOSAxLjUtMy41IDMuNS0zLjVoMTYwLjRjMS45IDAgMy41IDEuNSAzLjUgMy41djIyLjl6bTAtNjAuOWMwIDEuOS0xLjUgMy41LTMuNSAzLjVIMzM3LjVjLTEuOSAwLTMuNS0xLjUtMy41LTMuNVYyMjhjMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjhjMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNVYxOTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni41IDUwNEMxMTcuMiA1MDQgOSAzODcuOCAxMy4yIDI0OS45IDE2IDE3MC43IDU2LjQgOTcuNyAxMjkuNyA0OS41Yy4zIDAgMS45LS42IDEuMS44LTUuOCA1LjUtMTExLjMgMTI5LjgtMTQuMSAyMjYuNCA0OS44IDQ5LjUgOTAgMi41IDkwIDIuNSAzOC41LTUwLjEtLjYtMTI1LjktLjYtMTI1LjktMTAtMjQuOS00NS43LTQwLjEtNDUuNy00MC4xbDI4LjgtMzEuOGMyNC40IDEwLjUgNDMuMiAzOC43IDQzLjIgMzguNy44LTI5LjYtMjEuOS02MS40LTIxLjktNjEuNEwyNTUuMSA4bDQ0LjMgNTAuMWMtMjAuNSAyOC44LTIxLjkgNjIuNi0yMS45IDYyLjYgMTMuOC0yMyA0My41LTM5LjMgNDMuNS0zOS4zbDI4LjUgMzEuOGMtMjcuNCA4LjktNDUuNCAzOS45LTQ1LjQgMzkuOS0xNS44IDI4LjUtMjcuMSA4OS40LjYgMTI3LjMgMzIuNCA0NC42IDg3LjctMi44IDg3LjctMi44IDEwMi43LTkxLjktMTAuNS0yMjUtMTAuNS0yMjUtNi4xLTUuNS44LTIuOC44LTIuOCA1MC4xIDM2LjUgMTE0LjYgODQuNCAxMTYuMiAyMDQuOEM1MDAuOSA0MDAuMiAzOTkgNTA0IDI1Ni41IDUwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkUml2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUzLjIgMzJIOTQuOEM0Mi40IDMyIDAgNzQuNCAwIDEyNi44djI1OC40QzAgNDM3LjYgNDIuNCA0ODAgOTQuOCA0ODBoMjU4LjRjNTIuNCAwIDk0LjgtNDIuNCA5NC44LTk0LjhWMTI2LjhjMC01Mi40LTQyLjQtOTQuOC05NC44LTk0Ljh6TTE0NC45IDIwMC45djU2LjNjMCAyNy0yMS45IDQ4LjktNDguOSA0OC45VjE1MS45YzAtMTMuMiAxMC43LTIzLjkgMjMuOS0yMy45aDE1NC4yYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOWgtNTYuM2MtMTIuMy0uNi0yNC42IDExLjYtMjQgMjR6bTE3Ni4zIDcyaC01Ni4zYy0xMi4zLS42LTI0LjYgMTEuNi0yNCAyNHY1Ni4zYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOVYyNDcuOWMwLTEzLjIgMTAuNy0yMy45IDIzLjktMjMuOWgxNTQuMmMwIDI3LTIxLjkgNDguOS00OC45IDQ4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZGRpdEFsaWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3MyAxMzguNmMtMjUuMiAwLTQ2LjMtMTcuNS01MS45LTQxbDAgMGMtMzAuNiA0LjMtNTQuMiAzMC43LTU0LjIgNjIuNGwwIC4yYzQ3LjQgMS44IDkwLjYgMTUuMSAxMjQuOSAzNi4zYzEyLjYtOS43IDI4LjQtMTUuNSA0NS41LTE1LjVjNDEuMyAwIDc0LjcgMzMuNCA3NC43IDc0LjdjMCAyOS44LTE3LjQgNTUuNS00Mi43IDY3LjVjLTIuNCA4Ni44LTk3IDE1Ni42LTIxMy4yIDE1Ni42UzQ1LjUgNDEwLjEgNDMgMzIzLjRDMTcuNiAzMTEuNSAwIDI4NS43IDAgMjU1LjdjMC00MS4zIDMzLjQtNzQuNyA3NC43LTc0LjdjMTcuMiAwIDMzIDUuOCA0NS43IDE1LjZjMzQtMjEuMSA3Ni44LTM0LjQgMTIzLjctMzYuNGwwLS4zYzAtNDQuMyAzMy43LTgwLjkgNzYuOC04NS41QzMyNS44IDUwLjIgMzQ3LjIgMzIgMzczIDMyYzI5LjQgMCA1My4zIDIzLjkgNTMuMyA1My4zcy0yMy45IDUzLjMtNTMuMyA1My4zek0xNTcuNSAyNTUuM2MtMjAuOSAwLTM4LjkgMjAuOC00MC4yIDQ3LjlzMTcuMSAzOC4xIDM4IDM4LjFzMzYuNi05LjggMzcuOC0zNi45cy0xNC43LTQ5LjEtMzUuNy00OS4xek0zOTUgMzAzLjFjLTEuMi0yNy4xLTE5LjItNDcuOS00MC4yLTQ3LjlzLTM2LjkgMjItMzUuNyA0OS4xYzEuMiAyNy4xIDE2LjkgMzYuOSAzNy44IDM2LjlzMzkuMy0xMSAzOC0zOC4xem0tNjAuMSA3MC44YzEuNS0zLjYtMS03LjctNC45LTguMWMtMjMtMi4zLTQ3LjktMy42LTczLjgtMy42cy01MC44IDEuMy03My44IDMuNmMtMy45IC40LTYuNCA0LjUtNC45IDguMWMxMi45IDMwLjggNDMuMyA1Mi40IDc4LjcgNTIuNHM2NS44LTIxLjYgNzguNy01Mi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZDMCAxMTQuNiAxMTQuNiAwIDI1NiAwUzUxMiAxMTQuNiA1MTIgMjU2cy0xMTQuNiAyNTYtMjU2IDI1NkwzNy4xIDUxMmMtMTMuNyAwLTIwLjUtMTYuNS0xMC45LTI2LjJMNzUgNDM3QzI4LjcgMzkwLjcgMCAzMjYuNyAwIDI1NnpNMzQ5LjYgMTUzLjZjMjMuNiAwIDQyLjctMTkuMSA0Mi43LTQyLjdzLTE5LjEtNDIuNy00Mi43LTQyLjdjLTIwLjYgMC0zNy44IDE0LjYtNDEuOCAzNGMtMzQuNSAzLjctNjEuNCAzMy02MS40IDY4LjRsMCAuMmMtMzcuNSAxLjYtNzEuOCAxMi4zLTk5IDI5LjFjLTEwLjEtNy44LTIyLjgtMTIuNS0zNi41LTEyLjVjLTMzIDAtNTkuOCAyNi44LTU5LjggNTkuOGMwIDI0IDE0LjEgNDQuNiAzNC40IDU0LjFjMiA2OS40IDc3LjYgMTI1LjIgMTcwLjYgMTI1LjJzMTY4LjctNTUuOSAxNzAuNi0xMjUuM2MyMC4yLTkuNiAzNC4xLTMwLjIgMzQuMS01NGMwLTMzLTI2LjgtNTkuOC01OS44LTU5LjhjLTEzLjcgMC0yNi4zIDQuNi0zNi40IDEyLjRjLTI3LjQtMTctNjIuMS0yNy43LTEwMC0yOS4xbDAtLjJjMC0yNS40IDE4LjktNDYuNSA0My40LTQ5LjlsMCAwYzQuNCAxOC44IDIxLjMgMzIuOCA0MS41IDMyLjh6TTE3Ny4xIDI0Ni45YzE2LjcgMCAyOS41IDE3LjYgMjguNSAzOS4zcy0xMy41IDI5LjYtMzAuMyAyOS42cy0zMS40LTguOC0zMC40LTMwLjVzMTUuNC0zOC4zIDMyLjEtMzguM3ptMTkwLjEgMzguM2MxIDIxLjctMTMuNyAzMC41LTMwLjQgMzAuNXMtMjkuMy03LjktMzAuMy0yOS42Yy0xLTIxLjcgMTEuOC0zOS4zIDI4LjUtMzkuM3MzMS4yIDE2LjYgMzIuMSAzOC4zem0tNDguMSA1Ni43Yy0xMC4zIDI0LjYtMzQuNiA0MS45LTYzIDQxLjlzLTUyLjctMTcuMy02My00MS45Yy0xLjItMi45IC44LTYuMiAzLjktNi41YzE4LjQtMS45IDM4LjMtMi45IDU5LjEtMi45czQwLjcgMSA1OS4xIDIuOWMzLjEgLjMgNS4xIDMuNiAzLjkgNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQxLjUyIDI4NS41NmMzMy42NSAwIDgyLjM0LTYuOTQgODIuMzQtNDcgLjIyLTYuNzQuODYtMS44Mi0yMC44OC05Ni4yNC00LjYyLTE5LjE1LTguNjgtMjcuODQtNDIuMzEtNDQuNjUtMjYuMDktMTMuMzQtODIuOTItMzUuMzctOTkuNzMtMzUuMzctMTUuNjYgMC0yMC4yIDIwLjE3LTM4Ljg3IDIwLjE3LTE4IDAtMzEuMzEtMTUuMDYtNDguMTItMTUuMDYtMTYuMTQgMC0yNi42NiAxMS0zNC43OCAzMy42Mi0yNy41IDc3LjU1LTI2LjI4IDc0LjI3LTI2LjEyIDc4LjI3IDAgMjQuOCA5Ny42NCAxMDYuMTEgMjI4LjQ3IDEwNi4xMU00MjkgMjU0Ljg0YzQuNjUgMjIgNC42NSAyNC4zNSA0LjY1IDI3LjI1IDAgMzcuNjYtNDIuMzMgNTguNTYtOTggNTguNTYtMTI1Ljc0LjA4LTIzNS45MS03My42NS0yMzUuOTEtMTIyLjMzYTQ5LjU1IDQ5LjU1IDAgMCAxIDQuMDYtMTkuNzJDNTguNTYgMjAwLjg2IDAgMjA4LjkzIDAgMjYwLjYzYzAgODQuNjcgMjAwLjYzIDE4OSAzNTkuNDkgMTg5IDEyMS43OSAwIDE1Mi41MS01NS4wOCAxNTIuNTEtOTguNTggMC0zNC4yMS0yOS41OS03My4wNS04Mi45My05Ni4yNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZW5yZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE0IDE2OS4xYzAgMTEwLjQtNjEgMjA1LjQtMTQ3LjYgMjQ3LjRDMzAgMzczLjIgOCAzMTcuNyA4IDI1Ni42IDggMTMzLjkgOTcuMSAzMi4yIDIxNCAxMi41djE1Ni42ek0yNTUgNTA0Yy00Mi45IDAtODMuMy0xMS0xMTguNS0zMC40QzE5My43IDQzNy41IDIzOS45IDM4Mi45IDI1NSAzMTljMTUuNSA2My45IDYxLjcgMTE4LjUgMTE4LjggMTU0LjdDMzM4LjcgNDkzIDI5OC4zIDUwNCAyNTUgNTA0em0xOTAuNi04Ny41QzM1OSAzNzQuNSAyOTggMjc5LjYgMjk4IDE2OS4xVjEyLjVjMTE2LjkgMTkuNyAyMDYgMTIxLjQgMjA2IDI0NC4xIDAgNjEuMS0yMiAxMTYuNi01OC40IDE1OS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ4MEgxMjhDNTcuNiA0ODAgMCA0MjIuNCAwIDM1MlYxNjBDMCA4OS42IDU3LjYgMzIgMTI4IDMyaDE5MmM3MC40IDAgMTI4IDU3LjYgMTI4IDEyOHYxOTJjMCA3MC40LTU3LjYgMTI4LTEyOCAxMjh6TTE5My40IDI3My4yYy02LjEtMi0xMS42LTMuMS0xNi40LTMuMS03LjIgMC0xMy41IDEuOS0xOC45IDUuNi01LjQgMy43LTkuNiA5LTEyLjggMTUuOGgtMS4xbC00LjItMTguM2gtMjh2MTM4LjloMzYuMXYtODkuN2MxLjUtNS40IDQuNC05LjggOC43LTEzLjIgNC4zLTMuNCA5LjgtNS4xIDE2LjItNS4xIDQuNiAwIDkuOCAxIDE1LjYgMy4xbDQuOC0zNHptMTE1LjIgMTAzLjRjLTMuMiAyLjQtNy43IDQuOC0xMy43IDcuMS02IDIuMy0xMi44IDMuNS0yMC40IDMuNS0xMi4yIDAtMjEuMS0zLTI2LjUtOC45LTUuNS01LjktOC41LTE0LjctOS0yNi40aDgzLjNjLjktNC44IDEuNi05LjQgMi4xLTEzLjkuNS00LjQuNy04LjYuNy0xMi41IDAtMTAuNy0xLjYtMTkuNy00LjctMjYuOS0zLjItNy4yLTcuMy0xMy0xMi41LTE3LjItNS4yLTQuMy0xMS4xLTcuMy0xNy44LTkuMi02LjctMS44LTEzLjUtMi44LTIwLjYtMi44LTIxLjEgMC0zNy41IDYuMS00OS4yIDE4LjNzLTE3LjUgMzAuNS0xNy41IDU1YzAgMjIuOCA1LjIgNDAuNyAxNS42IDUzLjcgMTAuNCAxMy4xIDI2LjggMTkuNiA0OS4yIDE5LjYgMTAuNyAwIDIwLjktMS41IDMwLjQtNC42IDkuNS0zLjEgMTcuMS02LjggMjIuNi0xMS4ybC0xMi0yMy42em0tMjEuOC03MC4zYzMuOCA1LjQgNS4zIDEzLjEgNC42IDIzLjFoLTUxLjdjLjktOS40IDMuNy0xNyA4LjItMjIuNiA0LjUtNS42IDExLjUtOC41IDIxLTguNSA4LjItLjEgMTQuMSAyLjYgMTcuOSA4em03OS45IDIuNWM0LjEgMy45IDkuNCA1LjggMTYuMSA1LjggNyAwIDEyLjYtMS45IDE2LjctNS44czYuMS05LjEgNi4xLTE1LjYtMi0xMS42LTYuMS0xNS40Yy00LjEtMy44LTkuNi01LjctMTYuNy01LjctNi43IDAtMTIgMS45LTE2LjEgNS43LTQuMSAzLjgtNi4xIDguOS02LjEgMTUuNHMyIDExLjcgNi4xIDE1LjZ6bTAgMTAwLjVjNC4xIDMuOSA5LjQgNS44IDE2LjEgNS44IDcgMCAxMi42LTEuOSAxNi43LTUuOHM2LjEtOS4xIDYuMS0xNS42LTItMTEuNi02LjEtMTUuNGMtNC4xLTMuOC05LjYtNS43LTE2LjctNS43LTYuNyAwLTEyIDEuOS0xNi4xIDUuNy00LjEgMy44LTYuMSA4LjktNi4xIDE1LjQgMCA2LjYgMiAxMS43IDYuMSAxNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXNlYXJjaGdhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTI2Mi4yIDMzNC40Yy02LjYgMy0zMy4yIDYtNTAtMTQuMi05LjItMTAuNi0yNS4zLTMzLjMtNDIuMi02My42LTguOSAwLTE0LjcgMC0yMS40LS42djQ2LjRjMCAyMy41IDYgMjEuMiAyNS44IDIzLjl2OC4xYy02LjktLjMtMjMuMS0uOC0zNS42LS44LTEzLjEgMC0yNi4xLjYtMzMuNi44di04LjFjMTUuNS0yLjkgMjItMS4zIDIyLTIzLjlWMjI1YzAtMjIuNi02LjQtMjEtMjItMjMuOVYxOTNjMjUuOCAxIDUzLjEtLjYgNzAuOS0uNiAzMS43IDAgNTUuOSAxNC40IDU1LjkgNDUuNiAwIDIxLjEtMTYuNyA0Mi4yLTM5LjIgNDcuNSAxMy42IDI0LjIgMzAgNDUuNiA0Mi4yIDU4LjkgNy4yIDcuOCAxNy4yIDE0LjcgMjcuMiAxNC43djcuM3ptMjIuOS0xMzVjLTIzLjMgMC0zMi4yLTE1LjctMzIuMi0zMi4yVjE2N2MwLTEyLjIgOC44LTMwLjQgMzQtMzAuNHMzMC40IDE3LjkgMzAuNCAxNy45bC0xMC43IDcuMnMtNS41LTEyLjUtMTkuNy0xMi41Yy03LjkgMC0xOS43IDcuMy0xOS43IDE5Ljd2MjYuOGMwIDEzLjQgNi42IDIzLjMgMTcuOSAyMy4zIDE0LjEgMCAyMS41LTEwLjkgMjEuNS0yNi44aC0xNy45di0xMC43aDMwLjRjMCAyMC41IDQuNyA0OS45LTM0IDQ5Ljl6bS0xMTYuNSA0NC43Yy05LjQgMC0xMy42LS4zLTIwLS44di02OS43YzYuNC0uNiAxNS0uNiAyMi41LS42IDIzLjMgMCAzNy4yIDEyLjIgMzcuMiAzNC41IDAgMjEuOS0xNSAzNi42LTM5LjcgMzYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVzb2x2aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MS4yIDI3OC4yYzQ2LTEzLjMgNDkuNi0yMy41IDQ0LTQzLjRMMzE0IDE5NS41Yy02LjEtMjAuOS0xOC40LTI4LjEtNzEuMS0xMi44TDU0LjcgMjM2LjhsMjguNiA5OC42IDE5Ny45LTU3LjJ6TTI0OC41IDhDMTMxLjQgOCAzMy4yIDg4LjcgNy4yIDE5Ny41bDIyMS45LTYzLjljMzQuOC0xMC4yIDU0LjItMTEuNyA3OS4zLTguMiAzNi4zIDYuMSA1Mi43IDI1IDYxLjQgNTUuMmwxMC43IDM3LjhjOC4yIDI4LjEgMSA1MC42LTIzLjUgNzMuNi0xOS40IDE3LjQtMzEuMiAyNC41LTYxLjQgMzMuMkwyMDMgMzUxLjhsMjIwLjQgMjcuMSA5LjcgMzQuMi00OC4xIDEzLjMtMjg2LjgtMzcuMyAyMyA4MC4yYzM2LjggMjIgODAuMyAzNC43IDEyNi4zIDM0LjcgMTM3IDAgMjQ4LjUtMTExLjQgMjQ4LjUtMjQ4LjNDNDk3IDExOS40IDM4NS41IDggMjQ4LjUgOHpNMzguMyAzODguNkwwIDI1Ni44YzAgNDguNSAxNC4zIDkzLjQgMzguMyAxMzEuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmV2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OS42NyAyNzQuODlhNjUuNTcgNjUuNTcgMCAxIDEtNjUuNTYtNjUuNTYgNjUuNjQgNjUuNjQgMCAwIDEgNjUuNTYgNjUuNTZ6bTEzOS41NS01LjA1aC0uMTNhMjA0LjY5IDIwNC42OSAwIDAgMC03NC4zMi0xNTNsLTQ1LjM4IDI2LjJhMTU3LjA3IDE1Ny4wNyAwIDAgMSA3MS44MSAxMzEuODRDMzgxLjIgMzYxLjUgMzEwLjczIDQzMiAyMjQuMTEgNDMyUzY3IDM2MS41IDY3IDI3NC44OGMwLTgxLjg4IDYzLTE0OS4yNyAxNDMtMTU2LjQzdjM5LjEybDEwOC43Ny02Mi43OUwyMTAgMzJ2MzguMzJjLTEwNi43IDcuMjUtMTkxIDk2LTE5MSAyMDQuNTcgMCAxMTEuNTkgODkuMTIgMjAyLjI5IDIwMC4wNiAyMDV2LjExaDIxMC4xNlYyNjkuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvY2tldGNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg0LjA0NiwyMjQuOGEzNC4xMTQsMzQuMTE0LDAsMSwwLDM0LjMxNywzNC4xMTNBMzQuMjE3LDM0LjIxNywwLDAsMCwyODQuMDQ2LDIyNC44Wm0tMTEwLjQ1LDBhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNywzNC4yMTcsMCwwLDAsMTczLjYsMjI0LjhabTIyMC45MjMsMGEzNC4xMTQsMzQuMTE0LDAsMSwwLDM0LjMxNywzNC4xMTNBMzQuMjE1LDM0LjIxNSwwLDAsMCwzOTQuNTE5LDIyNC44Wm0xNTMuODA3LTU1LjMxOWMtMTUuNTM1LTI0LjE3Mi0zNy4zMS00NS41Ny02NC42ODEtNjMuNjE4LTUyLjg4Ni0zNC44MTctMTIyLjM3NC01NC0xOTUuNjY2LTU0YTQwNS45NzUsNDA1Ljk3NSwwLDAsMC03Mi4wMzIsNi4zNTcsMjM4LjUyNCwyMzguNTI0LDAsMCwwLTQ5LjUxLTM2LjU4OEM5OS42ODQtMTEuNyw0MC44NTkuNzExLDExLjEzNSwxMS40MjFBMTQuMjkxLDE0LjI5MSwwLDAsMCw1LjU4LDM0Ljc4MkMyNi41NDIsNTYuNDU4LDYxLjIyMiw5OS4zLDUyLjcsMTM4LjI1MmMtMzMuMTQyLDMzLjktNTEuMTEyLDc0Ljc3Ni01MS4xMTIsMTE3LjMzNywwLDQzLjM3MiwxNy45Nyw4NC4yNDgsNTEuMTEyLDExOC4xNDgsOC41MjYsMzguOTU2LTI2LjE1NCw4MS44MTYtNDcuMTE2LDEwMy40OTFhMTQuMjg0LDE0LjI4NCwwLDAsMCw1LjU1NSwyMy4zNGMyOS43MjQsMTAuNzA5LDg4LjU0OSwyMy4xNDcsMTU1LjMyNC0xMC4yYTIzOC42NzksMjM4LjY3OSwwLDAsMCw0OS41MS0zNi41ODlBNDA1Ljk3Miw0MDUuOTcyLDAsMCwwLDI4OCw0NjAuMTRjNzMuMzEzLDAsMTQyLjgtMTkuMTU5LDE5NS42NjctNTMuOTc1LDI3LjM3MS0xOC4wNDksNDkuMTQ1LTM5LjQyNiw2NC42NzktNjMuNjE5LDE3LjMwOS0yNi45MjMsMjYuMDctNTUuOTE2LDI2LjA3LTg2LjEyNUM1NzQuMzk0LDIyNS40LDU2NS42MzQsMTk2LjQzLDU0OC4zMjYsMTY5LjQ4NVpNMjg0Ljk4Nyw0MDkuOWEzNDUuNjUsMzQ1LjY1LDAsMCwxLTg5LjQ0Ni0xMS41bC0yMC4xMjksMTkuMzkzYTE4NC4zNjYsMTg0LjM2NiwwLDAsMS0zNy4xMzgsMjcuNTg1LDE0NS43NjcsMTQ1Ljc2NywwLDAsMS01Mi41MjIsMTQuODdjLjk4My0xLjc3MSwxLjg4MS0zLjU2MywyLjg0Mi01LjM1NnEzMC4yNTgtNTUuNjgsMTYuMzI1LTEwMC4wNzhjLTMyLjk5Mi0yNS45NjItNTIuNzc4LTU5LjItNTIuNzc4LTk1LjQsMC04My4xLDEwNC4yNTQtMTUwLjQ2OSwyMzIuODQ2LTE1MC40NjlzMjMyLjg2Nyw2Ny4zNzMsMjMyLjg2NywxNTAuNDY5QzUxNy44NTQsMzQyLjUyNSw0MTMuNiw0MDkuOSwyODQuOTg3LDQwOS45WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2Nrcm1zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE1Ny40IDQxOS41aC05MGwtMTEyLTEzMS4zYy0xNy45LTIwLjQtMy45LTU2LjEgMjYuNi01Ni4xaDc1LjNsLTg0LjYtOTkuMy04NC4zIDk4LjloLTkwTDE5My41IDY3LjJjMTQuNC0xOC40IDQxLjMtMTcuMyA1NC41IDBsMTU3LjcgMTg1LjFjMTkgMjIuOCAyIDU3LjItMjcuNiA1Ni4xLS42IDAtNzQuMi4yLTc0LjIuMmwxMDEuNSAxMTguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDguNTIsMjQ5Ljc1LDQ4Ni43LDIzNi4yNGMtLjE3LTItLjM0LTMuOTMtLjU1LTUuODhsMTguNzItMTcuNWE3LjM1LDcuMzUsMCwwLDAtMi40NC0xMi4yNWwtMjQtOWMtLjU0LTEuODgtMS4wOC0zLjc4LTEuNjctNS42NGwxNS0yMC44M2E3LjM1LDcuMzUsMCwwLDAtNC43OS0xMS41NGwtMjUuNDItNC4xNWMtLjktMS43My0xLjc5LTMuNDUtMi43My01LjE1bDEwLjY4LTIzLjQyYTcuMzUsNy4zNSwwLDAsMC02Ljk1LTEwLjM5bC0yNS44Mi45MXEtMS43OS0yLjIyLTMuNjEtNC40TDQzOSw4MS44NEE3LjM2LDcuMzYsMCwwLDAsNDMwLjE2LDczTDQwNSw3OC45M3EtMi4xNy0xLjgzLTQuNC0zLjYxbC45MS0yNS44MmE3LjM1LDcuMzUsMCwwLDAtMTAuMzktN0wzNjcuNyw1My4yM2MtMS43LS45NC0zLjQzLTEuODQtNS4xNS0yLjczTDM1OC40LDI1LjA4YTcuMzUsNy4zNSwwLDAsMC0xMS41NC00Ljc5TDMyNiwzNS4yNmMtMS44Ni0uNTktMy43NS0xLjEzLTUuNjQtMS42N2wtOS0yNGE3LjM1LDcuMzUsMCwwLDAtMTIuMjUtMi40NGwtMTcuNSwxOC43MmMtMS45NS0uMjEtMy45MS0uMzgtNS44OC0uNTVMMjYyLjI1LDMuNDhhNy4zNSw3LjM1LDAsMCwwLTEyLjUsMEwyMzYuMjQsMjUuM2MtMiwuMTctMy45My4zNC01Ljg4LjU1TDIxMi44Niw3LjEzYTcuMzUsNy4zNSwwLDAsMC0xMi4yNSwyLjQ0bC05LDI0Yy0xLjg5LjU1LTMuNzksMS4wOC01LjY2LDEuNjhsLTIwLjgyLTE1YTcuMzUsNy4zNSwwLDAsMC0xMS41NCw0Ljc5bC00LjE1LDI1LjQxYy0xLjczLjktMy40NSwxLjc5LTUuMTYsMi43M0wxMjAuODgsNDIuNTVhNy4zNSw3LjM1LDAsMCwwLTEwLjM5LDdsLjkyLDI1LjgxYy0xLjQ5LDEuMTktMywyLjM5LTQuNDIsMy42MUw4MS44NCw3M0E3LjM2LDcuMzYsMCwwLDAsNzMsODEuODRMNzguOTMsMTA3Yy0xLjIzLDEuNDUtMi40MywyLjkzLTMuNjIsNC40MWwtMjUuODEtLjkxYTcuNDIsNy40MiwwLDAsMC02LjM3LDMuMjYsNy4zNSw3LjM1LDAsMCwwLS41Nyw3LjEzbDEwLjY2LDIzLjQxYy0uOTQsMS43LTEuODMsMy40My0yLjczLDUuMTZMMjUuMDgsMTUzLjZhNy4zNSw3LjM1LDAsMCwwLTQuNzksMTEuNTRsMTUsMjAuODJjLS41OSwxLjg3LTEuMTMsMy43Ny0xLjY4LDUuNjZsLTI0LDlhNy4zNSw3LjM1LDAsMCwwLTIuNDQsMTIuMjVsMTguNzIsMTcuNWMtLjIxLDEuOTUtLjM4LDMuOTEtLjU1LDUuODhMMy40OCwyNDkuNzVhNy4zNSw3LjM1LDAsMCwwLDAsMTIuNUwyNS4zLDI3NS43NmMuMTcsMiwuMzQsMy45Mi41NSw1Ljg3TDcuMTMsMjk5LjEzYTcuMzUsNy4zNSwwLDAsMCwyLjQ0LDEyLjI1bDI0LDljLjU1LDEuODksMS4wOCwzLjc4LDEuNjgsNS42NWwtMTUsMjAuODNhNy4zNSw3LjM1LDAsMCwwLDQuNzksMTEuNTRsMjUuNDIsNC4xNWMuOSwxLjcyLDEuNzksMy40NSwyLjczLDUuMTRMNDIuNTYsMzkxLjEyYTcuMzUsNy4zNSwwLDAsMCwuNTcsNy4xMyw3LjEzLDcuMTMsMCwwLDAsNi4zNywzLjI2bDI1LjgzLS45MXExLjc3LDIuMjIsMy42LDQuNEw3Myw0MzAuMTZBNy4zNiw3LjM2LDAsMCwwLDgxLjg0LDQzOUwxMDcsNDMzLjA3cTIuMTgsMS44Myw0LjQxLDMuNjFsLS45MiwyNS44MmE3LjM1LDcuMzUsMCwwLDAsMTAuMzksNi45NWwyMy40My0xMC42OGMxLjY5Ljk0LDMuNDIsMS44Myw1LjE0LDIuNzNsNC4xNSwyNS40MmE3LjM0LDcuMzQsMCwwLDAsMTEuNTQsNC43OGwyMC44My0xNWMxLjg2LjYsMy43NiwxLjEzLDUuNjUsMS42OGw5LDI0YTcuMzYsNy4zNiwwLDAsMCwxMi4yNSwyLjQ0bDE3LjUtMTguNzJjMS45NS4yMSwzLjkyLjM4LDUuODguNTVsMTMuNTEsMjEuODJhNy4zNSw3LjM1LDAsMCwwLDEyLjUsMGwxMy41MS0yMS44MmMyLS4xNywzLjkzLS4zNCw1Ljg4LS41NmwxNy41LDE4LjczYTcuMzYsNy4zNiwwLDAsMCwxMi4yNS0yLjQ0bDktMjRjMS44OS0uNTUsMy43OC0xLjA4LDUuNjUtMS42OGwyMC44MiwxNWE3LjM0LDcuMzQsMCwwLDAsMTEuNTQtNC43OGw0LjE1LTI1LjQyYzEuNzItLjksMy40NS0xLjc5LDUuMTUtMi43M2wyMy40MiwxMC42OGE3LjM1LDcuMzUsMCwwLDAsMTAuMzktNi45NWwtLjkxLTI1LjgycTIuMjItMS43OSw0LjQtMy42MUw0MzAuMTYsNDM5YTcuMzYsNy4zNiwwLDAsMCw4Ljg0LTguODRMNDMzLjA3LDQwNXExLjgzLTIuMTcsMy42MS00LjRsMjUuODIuOTFhNy4yMyw3LjIzLDAsMCwwLDYuMzctMy4yNiw3LjM1LDcuMzUsMCwwLDAsLjU4LTcuMTNMNDU4Ljc3LDM2Ny43Yy45NC0xLjcsMS44My0zLjQzLDIuNzMtNS4xNWwyNS40Mi00LjE1YTcuMzUsNy4zNSwwLDAsMCw0Ljc5LTExLjU0bC0xNS0yMC44M2MuNTktMS44NywxLjEzLTMuNzYsMS42Ny01LjY1bDI0LTlhNy4zNSw3LjM1LDAsMCwwLDIuNDQtMTIuMjVsLTE4LjcyLTE3LjVjLjIxLTEuOTUuMzgtMy45MS41NS01Ljg3bDIxLjgyLTEzLjUxYTcuMzUsNy4zNSwwLDAsMCwwLTEyLjVabS0xNTEsMTI5LjA4QTEzLjkxLDEzLjkxLDAsMCwwLDM0MSwzODkuNTFsLTcuNjQsMzUuNjdBMTg3LjUxLDE4Ny41MSwwLDAsMSwxNzcsNDI0LjQ0bC03LjY0LTM1LjY2YTEzLjg3LDEzLjg3LDAsMCwwLTE2LjQ2LTEwLjY4bC0zMS41MSw2Ljc2YTE4Ny4zOCwxODcuMzgsMCwwLDEtMTYuMjYtMTkuMjFIMjU4LjNjMS43MiwwLDIuODktLjI5LDIuODktMS45MVYzMDkuNTVjMC0xLjU3LTEuMTctMS45MS0yLjg5LTEuOTFIMjEzLjQ3bC4wNS0zNC4zNUgyNjJjNC40MSwwLDIzLjY2LDEuMjgsMjkuNzksMjUuODcsMS45MSw3LjU1LDYuMTcsMzIuMTQsOS4wNiw0MCwyLjg5LDguODIsMTQuNiwyNi40NiwyNy4xLDI2LjQ2SDQwN2ExODcuMywxODcuMywwLDAsMS0xNy4zNCwyMC4wOVptMjUuNzcsMzQuNDlBMTUuMjQsMTUuMjQsMCwxLDEsMzY4LDM5OC4wOGguNDRBMTUuMjMsMTUuMjMsMCwwLDEsMzgzLjI0LDQxMy4zMlptLTIyNS42Mi0uNjhhMTUuMjQsMTUuMjQsMCwxLDEtMTUuMjUtMTUuMjVoLjQ1QTE1LjI1LDE1LjI1LDAsMCwxLDE1Ny42Miw0MTIuNjRaTTY5LjU3LDIzNC4xNWwzMi44My0xNC42YTEzLjg4LDEzLjg4LDAsMCwwLDcuMDYtMTguMzNMMTAyLjY5LDE4NmgyNi41NlYzMDUuNzNINzUuNjVBMTg3LjY1LDE4Ny42NSwwLDAsMSw2OS41NywyMzQuMTVaTTU4LjMxLDE5OC4wOWExNS4yNCwxNS4yNCwwLDAsMSwxNS4yMy0xNS4yNUg3NGExNS4yNCwxNS4yNCwwLDEsMS0xNS42NywxNS4yNFptMTU1LjE2LDI0LjQ5LjA1LTM1LjMyaDYzLjI2YzMuMjgsMCwyMy4wNywzLjc3LDIzLjA3LDE4LjYyLDAsMTIuMjktMTUuMTksMTYuNy0yNy42OCwxNi43Wk0zOTksMzA2LjcxYy05LjgsMS4xMy0yMC42My00LjEyLTIyLTEwLjA5LTUuNzgtMzIuNDktMTUuMzktMzkuNC0zMC41Ny01MS40LDE4Ljg2LTExLjk1LDM4LjQ2LTI5LjY0LDM4LjQ2LTUzLjI2LDAtMjUuNTItMTcuNDktNDEuNTktMjkuNC00OS40OC0xNi43Ni0xMS0zNS4yOC0xMy4yMy00MC4yNy0xMy4yM0gxMTYuMzJBMTg3LjQ5LDE4Ny40OSwwLDAsMSwyMjEuMjEsNzAuMDZsMjMuNDcsMjQuNmExMy44MiwxMy44MiwwLDAsMCwxOS42LjQ0bDI2LjI2LTI1YTE4Ny41MSwxODcuNTEsMCwwLDEsMTI4LjM3LDkxLjQzbC0xOCw0MC41N0ExNCwxNCwwLDAsMCw0MDgsMjIwLjQzbDM0LjU5LDE1LjMzYTE4Ny4xMiwxODcuMTIsMCwwLDEsLjQsMzIuNTRINDIzLjcxYy0xLjkxLDAtMi42OSwxLjI3LTIuNjksMy4xM3Y4LjgyQzQyMSwzMDEsNDA5LjMxLDMwNS41OCwzOTksMzA2LjcxWk0yNDAsNjAuMjFBMTUuMjQsMTUuMjQsMCwwLDEsMjU1LjIxLDQ1aC40NUExNS4yNCwxNS4yNCwwLDEsMSwyNDAsNjAuMjFaTTQzNi44NCwyMTRhMTUuMjQsMTUuMjQsMCwxLDEsMC0zMC40OGguNDRhMTUuMjQsMTUuMjQsMCwwLDEtLjQ0LDMwLjQ4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWZhcmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc0LjY5LDI3NC42OWwtMzcuMzgtMzcuMzhMMTY2LDM0NlpNMjU2LDhDMTE5LDgsOCwxMTksOCwyNTZTMTE5LDUwNCwyNTYsNTA0LDUwNCwzOTMsNTA0LDI1NiwzOTMsOCwyNTYsOFpNNDExLjg1LDE4Mi43OWwxNC43OC02LjEzQTgsOCwwLDAsMSw0MzcuMDgsMTgxaDBhOCw4LDAsMCwxLTQuMzMsMTAuNDZMNDE4LDE5Ny41N2E4LDgsMCwwLDEtMTAuNDUtNC4zM2gwQTgsOCwwLDAsMSw0MTEuODUsMTgyLjc5Wk0zMTQuNDMsOTRsNi4xMi0xNC43OEE4LDgsMCwwLDEsMzMxLDc0LjkyaDBhOCw4LDAsMCwxLDQuMzMsMTAuNDVsLTYuMTMsMTQuNzhhOCw4LDAsMCwxLTEwLjQ1LDQuMzNoMEE4LDgsMCwwLDEsMzE0LjQzLDk0Wk0yNTYsNjBoMGE4LDgsMCwwLDEsOCw4Vjg0YTgsOCwwLDAsMS04LDhoMGE4LDgsMCwwLDEtOC04VjY4QTgsOCwwLDAsMSwyNTYsNjBaTTE4MSw3NC45MmE4LDgsMCwwLDEsMTAuNDYsNC4zM0wxOTcuNTcsOTRhOCw4LDAsMSwxLTE0Ljc4LDYuMTJsLTYuMTMtMTQuNzhBOCw4LDAsMCwxLDE4MSw3NC45MlptLTYzLjU4LDQyLjQ5aDBhOCw4LDAsMCwxLDExLjMxLDBMMTQwLDEyOC43MkE4LDgsMCwwLDEsMTQwLDE0MGgwYTgsOCwwLDAsMS0xMS4zMSwwbC0xMS4zMS0xMS4zMUE4LDgsMCwwLDEsMTE3LjQxLDExNy40MVpNNjAsMjU2aDBhOCw4LDAsMCwxLDgtOEg4NGE4LDgsMCwwLDEsOCw4aDBhOCw4LDAsMCwxLTgsOEg2OEE4LDgsMCwwLDEsNjAsMjU2Wm00MC4xNSw3My4yMS0xNC43OCw2LjEzQTgsOCwwLDAsMSw3NC45MiwzMzFoMGE4LDgsMCwwLDEsNC4zMy0xMC40Nkw5NCwzMTQuNDNhOCw4LDAsMCwxLDEwLjQ1LDQuMzNoMEE4LDgsMCwwLDEsMTAwLjE1LDMyOS4yMVptNC4zMy0xMzZoMEE4LDgsMCwwLDEsOTQsMTk3LjU3bC0xNC43OC02LjEyQTgsOCwwLDAsMSw3NC45MiwxODFoMGE4LDgsMCwwLDEsMTAuNDUtNC4zM2wxNC43OCw2LjEzQTgsOCwwLDAsMSwxMDQuNDgsMTkzLjI0Wk0xOTcuNTcsNDE4bC02LjEyLDE0Ljc4YTgsOCwwLDAsMS0xNC43OS02LjEybDYuMTMtMTQuNzhBOCw4LDAsMSwxLDE5Ny41Nyw0MThaTTI2NCw0NDRhOCw4LDAsMCwxLTgsOGgwYTgsOCwwLDAsMS04LThWNDI4YTgsOCwwLDAsMSw4LThoMGE4LDgsMCwwLDEsOCw4Wm02Ny02LjkyaDBhOCw4LDAsMCwxLTEwLjQ2LTQuMzNMMzE0LjQzLDQxOGE4LDgsMCwwLDEsNC4zMy0xMC40NWgwYTgsOCwwLDAsMSwxMC40NSw0LjMzbDYuMTMsMTQuNzhBOCw4LDAsMCwxLDMzMSw0MzcuMDhabTYzLjU4LTQyLjQ5aDBhOCw4LDAsMCwxLTExLjMxLDBMMzcyLDM4My4yOEE4LDgsMCwwLDEsMzcyLDM3MmgwYTgsOCwwLDAsMSwxMS4zMSwwbDExLjMxLDExLjMxQTgsOCwwLDAsMSwzOTQuNTksMzk0LjU5Wk0yODYuMjUsMjg2LjI1LDExMC4zNCw0MDEuNjYsMjI1Ljc1LDIyNS43NSw0MDEuNjYsMTEwLjM0Wk00MzcuMDgsMzMxaDBhOCw4LDAsMCwxLTEwLjQ1LDQuMzNsLTE0Ljc4LTYuMTNhOCw4LDAsMCwxLTQuMzMtMTAuNDVoMEE4LDgsMCwwLDEsNDE4LDMxNC40M2wxNC43OCw2LjEyQTgsOCwwLDAsMSw0MzcuMDgsMzMxWk00NDQsMjY0SDQyOGE4LDgsMCwwLDEtOC04aDBhOCw4LDAsMCwxLDgtOGgxNmE4LDgsMCwwLDEsOCw4aDBBOCw4LDAsMCwxLDQ0NCwyNjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhbGVzZm9yY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4Ljg5IDI0NS42NGgtMjYuMzVjLjY5LTUuMTYgMy4zMi0xNC4xMiAxMy42NC0xNC4xMiA2Ljc1IDAgMTEuOTcgMy44MiAxMi43MSAxNC4xMnptMTM2LjY2LTEzLjg4Yy0uNDcgMC0xNC4xMS0xLjc3LTE0LjExIDIwczEzLjYzIDIwIDE0LjExIDIwYzEzIDAgMTQuMTEtMTMuNTQgMTQuMTEtMjAgMC0yMS43Ni0xMy42Ni0yMC0xNC4xMS0yMHptLTI0My4yMiAyMy43NmE4LjYzIDguNjMgMCAwIDAtMy4yOSA3LjI5YzAgNC43OCAyLjA4IDYuMDUgMy4yOSA3LjA1IDQuNyAzLjcgMTUuMDcgMi4xMiAyMC45My45NXYtMTYuOTRjLTUuMzItMS4wNy0xNi43My0xLjk2LTIwLjkzIDEuNjV6TTY0MCAyMzJjMCA4Ny41OC04MCAxNTQuMzktMTY1LjM2IDEzNi40My0xOC4zNyAzMy03MC43MyA3MC43NS0xMzIuMiA0MS42My00MS4xNiA5Ni4wNS0xNzcuODkgOTIuMTgtMjEzLjgxLTUuMTdDOC45MSA0MjguNzgtNTAuMTkgMjY2LjUyIDUzLjM2IDIwNS42MSAxOC42MSAxMjYuMTggNzYgMzIgMTY3LjY3IDMyYTEyNC4yNCAxMjQuMjQgMCAwIDEgOTguNTYgNDguN2MyMC43LTIxLjQgNDkuNC0zNC44MSA4MS4xNS0zNC44MSA0Mi4zNCAwIDc5IDIzLjUyIDk4LjggNTguNTdDNTM5IDYzLjc4IDY0MCAxMzIuNjkgNjQwIDIzMnptLTUxOS41NSAzMS44YzAtMTEuNzYtMTEuNjktMTUuMTctMTcuODctMTcuMTctNS4yNy0yLjExLTEzLjQxLTMuNTEtMTMuNDEtOC45NCAwLTkuNDYgMTctNi42NiAyNS4xNy0yLjEyIDAgMCAxLjE3LjcxIDEuNjQtLjQ3LjI0LS43IDIuMzYtNi41OCAyLjU5LTcuMjlhMS4xMyAxLjEzIDAgMCAwLS43LTEuNDFjLTEyLjMzLTcuNjMtNDAuNy04LjUxLTQwLjcgMTIuNyAwIDEyLjQ2IDExLjQ5IDE1LjQ0IDE3Ljg4IDE3LjE3IDQuNzIgMS41OCAxMy4xNyAzIDEzLjE3IDguNyAwIDQtMy41MyA3LjA2LTkuMTcgNy4wNmEzMS43NiAzMS43NiAwIDAgMS0xOS02LjM1Yy0uNDctLjIzLTEuNDItLjcxLTEuNjUuNzFsLTIuNCA3LjQ3Yy0uNDcuOTQuMjMgMS4xOC4yMyAxLjQxIDEuNzUgMS40IDEwLjMgNi41OSAyMi44MiA2LjU5IDEzLjE3IDAgMjEuNC03LjA2IDIxLjQtMTguMTF6bTMyLTQyLjU4Yy0xMC4xMyAwLTE4LjY2IDMuMTctMjEuNCA1LjE4YTEgMSAwIDAgMC0uMjQgMS40MWwyLjU5IDcuMDZhMSAxIDAgMCAwIDEuMTguN2MuNjUgMCA2LjgtNCAxNi45My00IDQgMCA3LjA2LjcxIDkuMTggMi4zNiAzLjYgMi44IDMuMDYgOC4yOSAzLjA2IDEwLjU4LTQuNzktLjMtMTkuMTEtMy40NC0yOS40MSAzLjc2YTE2LjkyIDE2LjkyIDAgMCAwLTcuMzQgMTQuNTRjMCA1LjkgMS41MSAxMC40IDYuNTkgMTQuMzUgMTIuMjQgOC4xNiAzNi4yOCAyIDM4LjEgMS40MSAxLjU4LS4zMiAzLjUzLS42NiAzLjUzLTEuODh2LTMzLjg4Yy4wNC00LjYxLjMyLTIxLjY0LTIyLjc4LTIxLjY0ek0xOTkgMjAwLjI0YTEuMTEgMS4xMSAwIDAgMC0xLjE4LTEuMThIMTg4YTEuMTEgMS4xMSAwIDAgMC0xLjE3IDEuMTh2NzlhMS4xMSAxLjExIDAgMCAwIDEuMTcgMS4xOGg5Ljg4YTEuMTEgMS4xMSAwIDAgMCAxLjE4LTEuMTh6bTU1Ljc1IDI4LjkzYy0yLjEtMi4zMS02Ljc5LTcuNTMtMTcuNjUtNy41My0zLjUxIDAtMTQuMTYuMjMtMjAuNyA4Ljk0LTYuMzUgNy42My02LjU4IDE4LjExLTYuNTggMjEuNDEgMCAzLjEyLjE1IDE0LjI2IDcuMDYgMjEuMTcgMi42NCAyLjkxIDkuMDYgOC4yMyAyMi44MSA4LjIzIDEwLjgyIDAgMTYuNDctMi4zNSAxOC41OC0zLjc2LjQ3LS4yNC43MS0uNzEuMjQtMS44OGwtMi4zNS02LjgzYTEuMjYgMS4yNiAwIDAgMC0xLjQxLS43Yy0yLjU5Ljk0LTYuMzUgMi44Mi0xNS4yOSAyLjgyLTE3LjQyIDAtMTYuODUtMTQuNzQtMTYuOTQtMTYuN2gzNy4xN2ExLjIzIDEuMjMgMCAwIDAgMS4xNy0uOTRjLS4yOSAwIDIuMDctMTQuNy02LjA5LTI0LjIzem0zNi42OSA1Mi42OWMxMy4xNyAwIDIxLjQxLTcuMDYgMjEuNDEtMTguMTEgMC0xMS43Ni0xMS43LTE1LjE3LTE3Ljg4LTE3LjE3LTQuMTQtMS42Ni0xMy40MS0zLjM4LTEzLjQxLTguOTQgMC0zLjc2IDMuMjktNi4zNSA4LjQ3LTYuMzVhMzguMTEgMzguMTEgMCAwIDEgMTYuNyA0LjIzczEuMTguNzEgMS42NS0uNDdjLjIzLS43IDIuMzUtNi41OCAyLjU4LTcuMjlhMS4xMyAxLjEzIDAgMCAwLS43LTEuNDFjLTcuOTEtNC45LTE2Ljc0LTQuOTQtMjAuMjMtNC45NC0xMiAwLTIwLjQ2IDcuMjktMjAuNDYgMTcuNjQgMCAxMi40NiAxMS40OCAxNS40NCAxNy44NyAxNy4xNyA2LjExIDIgMTMuMTcgMy4yNiAxMy4xNyA4LjcgMCA0LTMuNTIgNy4wNi05LjE3IDcuMDZhMzEuOCAzMS44IDAgMCAxLTE5LTYuMzUgMSAxIDAgMCAwLTEuNjUuNzFsLTIuMzUgNy41MmMtLjQ3Ljk0LjIzIDEuMTguMjMgMS40MSAxLjcyIDEuNCAxMC4zMyA2LjU5IDIyLjc5IDYuNTl6TTM1Ny4wOSAyMjRjMC0uNzEtLjI0LTEuMTgtMS4xOC0xLjE4aC0xMS43NmMwLS4xNC45NC04Ljk0IDQuNDctMTIuNDcgNC4xNi00LjE1IDExLjc2LTEuNjQgMTItMS42NCAxLjE3LjQ3IDEuNDEgMCAxLjY0LS40N2wyLjgzLTcuNzdjLjctLjk0IDAtMS4xNy0uMjQtMS40MS01LjA5LTItMTcuMzUtMi44Ny0yNC40NiA0LjI0LTUuNDggNS40OC03IDEzLjkyLTggMTkuNTJoLTguNDdhMS4yOCAxLjI4IDAgMCAwLTEuMTcgMS4xOGwtMS40MiA3Ljc2YzAgLjcuMjQgMS4xNyAxLjE4IDEuMTdoOC4yM2MtOC41MSA0Ny45LTguNzUgNTAuMjEtMTAuMzUgNTUuNTItMS4wOCAzLjYyLTMuMjkgNi45LTUuODggNy43Ni0uMDkgMC0zLjg4IDEuNjgtOS42NC0uMjQgMCAwLS45NC0uNDctMS40MS43MS0uMjQuNzEtMi41OSA2LjgyLTIuODMgNy41M3MwIDEuNDEuNDcgMS40MWM1LjExIDIgMTMgMS43NyAxNy44OCAwIDYuMjgtMi4yOCA5LjcyLTcuODkgMTEuNTMtMTIuOTQgMi43NS03LjcxIDIuODEtOS43OSAxMS43Ni01OS43NGgxMi4yM2ExLjI5IDEuMjkgMCAwIDAgMS4xOC0xLjE4em01My4zOSAxNmMtLjU2LTEuNjgtNS4xLTE4LjExLTI1LjE3LTE4LjExLTE1LjI1IDAtMjMgMTAtMjUuMTYgMTguMTEtMSAzLTMuMTggMTQgMCAyMy41Mi4wOS4zIDQuNDEgMTguMTIgMjUuMTYgMTguMTIgMTQuOTUgMCAyMi45LTkuNjEgMjUuMTctMTguMTIgMy4yMS05LjYxIDEuMDEtMjAuNTIgMC0yMy41MnptNDUuNC0xNi43Yy01LTEuNjUtMTYuNjItMS45LTIyLjExIDUuNDF2LTQuNDdhMS4xMSAxLjExIDAgMCAwLTEuMTgtMS4xN2gtOS40YTEuMTEgMS4xMSAwIDAgMC0xLjE4IDEuMTd2NTUuMjhhMS4xMiAxLjEyIDAgMCAwIDEuMTggMS4xOGg5LjY0YTEuMTIgMS4xMiAwIDAgMCAxLjE4LTEuMTh2LTI3Ljc3YzAtMi45MS4wNS0xMS4zNyA0LjQ2LTE1LjA1IDQuOS00LjkgMTItMy4zNiAxMy40MS0zLjA2YTEuNTcgMS41NyAwIDAgMCAxLjQxLS45NCA3NCA3NCAwIDAgMCAzLjA2LTggMS4xNiAxLjE2IDAgMCAwLS40Ny0xLjQxem00Ni44MSA1NC4xbC0yLjEyLTcuMjljLS40Ny0xLjE4LTEuNDEtLjcxLTEuNDEtLjcxLTQuMjMgMS44Mi0xMC4xNSAxLjg5LTExLjI5IDEuODktNC42NCAwLTE3LjE3LTEuMTMtMTcuMTctMTkuNzYgMC02LjIzIDEuODUtMTkuNzYgMTYuNDctMTkuNzZhMzQuODUgMzQuODUgMCAwIDEgMTEuNTIgMS42NXMuOTQuNDcgMS4xOC0uNzFjLjk0LTIuNTkgMS42NC00LjQ3IDIuNTktNy41My4yMy0uOTQtLjQ3LTEuMTctLjcxLTEuMTctMTEuNTktMy44Ny0yMi4zNC0yLjUzLTI3Ljc2IDAtMS41OS43NC0xNi4yMyA2LjQ5LTE2LjIzIDI3LjUyIDAgMi45LS41OCAzMC4xMSAyOC45NCAzMC4xMWE0NC40NSA0NC40NSAwIDAgMCAxNS41Mi0yLjgzIDEuMyAxLjMgMCAwIDAgLjQ3LTEuNDJ6bTUzLjg3LTM5LjUyYy0uOC0zLTUuMzctMTYuMjMtMjIuMzUtMTYuMjMtMTYgMC0yMy41MiAxMC4xMS0yNS42NCAxOC41OWEzOC41OCAzOC41OCAwIDAgMC0xLjY1IDExLjc2YzAgMjUuODcgMTguODQgMjkuNCAyOS44OCAyOS40IDEwLjgyIDAgMTYuNDYtMi4zNSAxOC41OC0zLjc2LjQ3LS4yNC43MS0uNzEuMjQtMS44OGwtMi4zNi02LjgzYTEuMjYgMS4yNiAwIDAgMC0xLjQxLS43Yy0yLjU5Ljk0LTYuMzUgMi44Mi0xNS4yOSAyLjgyLTE3LjQyIDAtMTYuODUtMTQuNzQtMTYuOTMtMTYuN2gzNy4xNmExLjI1IDEuMjUgMCAwIDAgMS4xOC0uOTRjLS4yNC0uMDEuOTQtNy4wNy0xLjQxLTE1LjU0em0tMjMuMjktNi4zNWMtMTAuMzMgMC0xMyA5LTEzLjY0IDE0LjEySDU0NmMtLjg4LTExLjkyLTcuNjItMTQuMTMtMTIuNzMtMTQuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAxLjg0IDM3OC45MmMtLjMuNi0uNiAxLjA4IDAgMHptMjQ5LjEzLTg3YTEzMS4xNiAxMzEuMTYgMCAwIDAtNTggMTMuNWMtNS45LTExLjktMTItMjIuMy0xMy0zMC4xLTEuMi05LjEtMi41LTE0LjUtMS4xLTI1LjNzNy43LTI2LjEgNy42LTI3LjItMS40LTYuNi0xNC4zLTYuNy0yNCAyLjUtMjUuMjkgNS45YTEyMi44MyAxMjIuODMgMCAwIDAtNS4zIDE5LjFjLTIuMyAxMS43LTI1Ljc5IDUzLjUtMzkuMDkgNzUuMy00LjQtOC41LTguMS0xNi04LjktMjItMS4yLTkuMS0yLjUtMTQuNS0xLjEtMjUuM3M3LjctMjYuMSA3LjYtMjcuMi0xLjQtNi42LTE0LjI5LTYuNy0yNCAyLjUtMjUuMyA1LjktMi43IDExLjQtNS4zIDE5LjEtMzMuODkgNzcuMy00Mi4wOCA5NS40Yy00LjIgOS4yLTcuOCAxNi42LTEwLjQgMjEuNi0uNC44LS43IDEuMy0uOSAxLjcuMy0uNS41LTEgLjUtLjgtMi4yIDQuMy0zLjUgNi43LTMuNSA2Ljd2LjFjLTEuNyAzLjItMy42IDYuMS00LjUgNi4xLS42IDAtMS45LTguNC4zLTE5LjkgNC43LTI0LjIgMTUuOC02MS44IDE1LjctNjMuMS0uMS0uNyAyLjEtNy4yLTcuMy0xMC43LTkuMS0zLjMtMTIuNCAyLjItMTMuMiAyLjJzLTEuNCAyLTEuNCAyIDEwLjEtNDIuNC0xOS4zOS00Mi40Yy0xOC40IDAtNDQgMjAuMi01Ni41OCAzOC41LTcuOSA0LjMtMjUgMTMuNi00MyAyMy41LTYuOSAzLjgtMTQgNy43LTIwLjcgMTEuNC0uNS0uNS0uOS0xLTEuNC0xLjUtMzUuNzktMzguMi0xMDEuODctNjUuMi05OS4wNy0xMTYuNSAxLTE4LjcgNy41LTY3LjggMTI3LjA3LTEyNy40IDk4LTQ4LjggMTc2LjM1LTM1LjQgMTg5Ljg0LTUuNiAxOS40IDQyLjUtNDEuODkgMTIxLjYtMTQzLjY2IDEzMy0zOC43OSA0LjMtNTkuMTgtMTAuNy02NC4yOC0xNi4zLTUuMy01LjktNi4xLTYuMi04LjEtNS4xLTMuMyAxLjgtMS4yIDcgMCAxMC4xIDMgNy45IDE1LjUgMjEuOSAzNi43OSAyOC45IDE4LjcgNi4xIDY0LjE4IDkuNSAxMTkuMTctMTEuOCA2MS43OC0yMy44IDEwOS44Ny05MC4xIDk1Ljc3LTE0NS42QzM4Ni41MiAxOC4zMiAyOTMtLjE4IDIwNC41NyAzMS4yMmMtNTIuNjkgMTguNy0xMDkuNjcgNDguMS0xNTAuNjYgODYuNC00OC42OSA0NS42LTU2LjQ4IDg1LjMtNTMuMjggMTAxLjkgMTEuMzkgNTguOSA5Mi41NyA5Ny4zIDEyNS4wNiAxMjUuNy0xLjYuOS0zLjEgMS43LTQuNSAyLjUtMTYuMjkgOC4xLTc4LjE4IDQwLjUtOTMuNjcgNzQuNy0xNy41IDM4LjggMi45IDY2LjYgMTYuMjkgNzAuNCA0MS43OSAxMS42IDg0LjU4LTkuMyAxMDcuNTctNDMuNnMyMC4yLTc5LjEgOS42LTk5LjVjLS4xLS4zLS4zLS41LS40LS44IDQuMi0yLjUgOC41LTUgMTIuOC03LjUgOC4yOS00LjkgMTYuMzktOS40IDIzLjQ5LTEzLjMtNCAxMC44LTYuOSAyMy44LTguNCA0Mi42LTEuOCAyMiA3LjMgNTAuNSAxOS4xIDYxLjcgNS4yIDQuOSAxMS40OSA1IDE1LjM5IDUgMTMuOCAwIDIwLTExLjQgMjYuODktMjUgOC41LTE2LjYgMTYtMzUuOSAxNi0zNS45cy05LjQgNTIuMiAxNi4zIDUyLjJjOS4zOSAwIDE4Ljc5LTEyLjEgMjMtMTguM3YuMXMuMi0uNC43LTEuMmMxLTEuNSAxLjUtMi40IDEuNS0yLjR2LS4zYzMuOC02LjUgMTIuMS0yMS40IDI0LjU5LTQ2IDE2LjItMzEuOCAzMS42OS03MS41IDMxLjY5LTcxLjVhMjAxLjI0IDIwMS4yNCAwIDAgMCA2LjIgMjUuOGMyLjggOS41IDguNyAxOS45IDEzLjQgMzAtMy44IDUuMi02LjEgOC4yLTYuMSA4LjJhLjMxLjMxIDAgMCAwIC4xLjJjLTMgNC02LjQgOC4zLTkuOSAxMi41LTEyLjc5IDE1LjItMjggMzIuNi0zMCAzNy42LTIuNCA1LjktMS44IDEwLjMgMi44IDEzLjcgMy40IDIuNiA5LjQgMyAxNS42OSAyLjUgMTEuNS0uOCAxOS42LTMuNiAyMy41LTUuNGE4Mi4yIDgyLjIgMCAwIDAgMjAuMTktMTAuNmMxMi41LTkuMiAyMC4xLTIyLjQgMTkuNC0zOS44LS40LTkuNi0zLjUtMTkuMi03LjMtMjguMiAxLjEtMS42IDIuMy0zLjMgMy40LTVDNDM0LjggMzAxLjcyIDQ1MC4xIDI3MCA0NTAuMSAyNzBhMjAxLjI0IDIwMS4yNCAwIDAgMCA2LjIgMjUuOGMyLjQgOC4xIDcuMDkgMTcgMTEuMzkgMjUuNy0xOC41OSAxNS4xLTMwLjA5IDMyLjYtMzQuMDkgNDQuMS03LjQgMjEuMy0xLjYgMzAuOSA5LjMgMzMuMSA0LjkgMSAxMS45LTEuMyAxNy4xLTMuNWE3OS40NiA3OS40NiAwIDAgMCAyMS41OS0xMS4xYzEyLjUtOS4yIDI0LjU5LTIyLjEgMjMuNzktMzkuNi0uMy03LjktMi41LTE1LjgtNS40LTIzLjQgMTUuNy02LjYgMzYuMDktMTAuMiA2Mi4wOS03LjIgNTUuNjggNi41IDY2LjU4IDQxLjMgNjQuNDggNTUuOHMtMTMuOCAyMi42LTE3LjcgMjUtNS4xIDMuMy00LjggNS4xYy41IDIuNiAyLjMgMi41IDUuNiAxLjkgNC42LS44IDI5LjE5LTExLjggMzAuMjktMzguNyAxLjYtMzQtMzEuMDktNzEuNC04OS03MS4xem0tNDI5LjE4IDE0NC43Yy0xOC4zOSAyMC4xLTQ0LjE5IDI3LjctNTUuMjggMjEuM0M1NC42MSA0NTEgNTkuMzEgNDIxLjQyIDgyIDQwMGMxMy44LTEzIDMxLjU5LTI1IDQzLjM5LTMyLjQgMi43LTEuNiA2LjYtNCAxMS40LTYuOS44LS41IDEuMi0uNyAxLjItLjcuOS0uNiAxLjktMS4xIDIuOS0xLjcgOC4yOSAzMC40LjMgNTcuMi0xOS4xIDc4LjN6bTEzNC4zNi05MS40Yy02LjQgMTUuNy0xOS44OSA1NS43LTI4LjA5IDUzLjYtNy0xLjgtMTEuMy0zMi4zLTEuNC02Mi4zIDUtMTUuMSAxNS42LTMzLjEgMjEuOS00MC4xIDEwLjA5LTExLjMgMjEuMTktMTQuOSAyMy43OS0xMC40IDMuNSA1LjktMTIuMiA0OS40LTE2LjIgNTkuMnptMTExIDUzYy0yLjcgMS40LTUuMiAyLjMtNi40IDEuNi0uOS0uNSAxLjEtMi40IDEuMS0yLjRzMTMuOS0xNC45IDE5LjQtMjEuN2MzLjItNCA2LjktOC43IDEwLjg5LTEzLjkgMCAuNS4xIDEgLjEgMS42LS4xMyAxNy45LTE3LjMyIDMwLTI1LjEyIDM0Ljh6bTg1LjU4LTE5LjVjLTItMS40LTEuNy02LjEgNS0yMC43IDIuNi01LjcgOC41OS0xNS4zIDE5LTI0LjVhMzYuMTggMzYuMTggMCAwIDEgMS45IDEwLjhjLS4xIDIyLjUtMTYuMiAzMC45LTI1Ljg5IDM0LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaGxpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTAuNSAxNTcuN2wtNTQuMi00Ni4xIDczLjQtMzkgNzguMyA0NC4yLTk3LjUgNDAuOXpNMTkyIDEyMi4xbDQ1LjctMjguMiAzNC43IDM0LjYtNTUuNCAyOS0yNS0zNS40em0tNjUuMSA2LjZsMzEuOS0yMi4xTDE3NiAxMzVsLTM2LjcgMjIuNS0xMi40LTI4Ljh6bS0yMy4zIDg4LjJsLTguOC0zNC44IDI5LjYtMTguMyAxMy4xIDM1LjMtMzMuOSAxNy44em0tMjEuMi04My43bDIzLjktMTguMSA4LjkgMjQtMjYuNyAxOC4zLTYuMS0yNC4yek01OSAyMDYuNWwtMy42LTI4LjQgMjIuMy0xNS41IDYuMSAyOC43TDU5IDIwNi41em0tMzAuNiAxNi42bDIwLjgtMTIuOCAzLjMgMzMuNC0yMi45IDEyLTEuMi0zMi42ek0xLjQgMjY4bDE5LjItMTAuMi40IDM4LjItMjEgOC44TDEuNCAyNjh6bTU5LjEgNTkuM2wtMjguMyA4LjMtMS42LTQ2LjggMjUuMS0xMC43IDQuOCA0OS4yek05OSAyNjMuMmwtMzEuMSAxMy01LjItNDAuOEw5MC4xIDIyMWw4LjkgNDIuMnpNMTIzLjIgMzc3bC00MS42IDUuOS04LjEtNjMuNSAzNS4yLTEwLjggMTQuNSA2OC40em0yOC41LTEzOS45bDIxLjIgNTcuMS00Ni4yIDEzLjYtMTMuNy01NC4xIDM4LjctMTYuNnptODUuNyAyMzAuNWwtNzAuOS0zLjMtMjQuMy05NS44IDU1LjItOC42IDQwIDEwNy43em0tODQuOS0yNzkuN2w0Mi4yLTIyLjQgMjggNDUuOS01MC44IDIxLjMtMTkuNC00NC44em00MSA5NC45bDYxLjMtMTguNyA1Mi44IDg2LjYtNzkuOCAxMS4zLTM0LjMtNzkuMnptNTEuNC04NS42bDY3LjMtMjguOCA2NS41IDY1LjQtODguNiAyNi4yLTQ0LjItNjIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyZWVucGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMy41IDIyLjQ5QzIzMy41IDEwLjA3IDI0My42IDAgMjU2IDBDMjY4LjQgMCAyNzguNSAxMC4wNyAyNzguNSAyMi40OUMyNzguNSAzNC45MSAyNjguNCA0NC45OCAyNTYgNDQuOThDMjQzLjYgNDQuOTggMjMzLjUgMzQuOTEgMjMzLjUgMjIuNDl6TTMxMy40IDI1OUMzMTMuNCAyOTAuNyAyODcuNyAzMTYuNCAyNTYgMzE2LjRDMjI0LjMgMzE2LjQgMTk4LjYgMjkwLjcgMTk4LjYgMjU5QzE5OC42IDIyNy4zIDIyNC4zIDIwMS42IDI1NiAyMDEuNkMyODcuNyAyMDEuNiAzMTMuNCAyMjcuMyAzMTMuNCAyNTl6TTMzNy4yIDM1MEMzNTkuNSAzMzAuMSAzNzMuNyAzMDIuNyAzNzcuMSAyNzNINDk2LjZDNDkzLjEgMzM0LjQgNDY2LjIgMzkyLjIgNDIxLjQgNDM0LjRDMzc2LjcgNDc2LjYgMzE3LjUgNTAwLjIgMjU2IDUwMC4yQzE5NC41IDUwMC4yIDEzNS4zIDQ3Ni42IDkwLjU2IDQzNC40QzQ1LjgzIDM5Mi4yIDE4Ljk0IDMzNC40IDE1LjM5IDI3M0gxMzUuMUMxMzguNSAzMDIuNyAxNTIuNyAzMzAuMSAxNzUgMzUwQzE5Ny4zIDM2OS45IDIyNi4yIDM4MC45IDI1Ni4xIDM4MC45QzI4NS4xIDM4MC45IDMxNC44IDM2OS45IDMzNy4yIDM1MHpNNzMuMTQgMTQwLjNDNzMuNTQgMTUyLjcgNjMuODEgMTYzLjEgNTEuMzkgMTYzLjVDMzguOTcgMTYzLjkgMjguNTkgMTU0LjIgMjguMTggMTQxLjhDMjcuNzggMTI5LjMgMzcuNTIgMTE4LjkgNDkuOTQgMTE4LjVDNjIuMzUgMTE4LjEgNzIuNzQgMTI3LjkgNzMuMTQgMTQwLjN6TTQzOC45IDE0MUM0MzguOSAxMjguNiA0NDguOSAxMTguNSA0NjEuNCAxMTguNUM0NzMuOCAxMTguNSA0ODMuOCAxMjguNiA0ODMuOCAxNDFDNDgzLjggMTUzLjUgNDczLjggMTYzLjUgNDYxLjQgMTYzLjVDNDQ4LjkgMTYzLjUgNDM4LjkgMTUzLjUgNDM4LjkgMTQxek0zMTcuOSA5NS4yN0MzMDAuNiAxMDkuMSAyNzguNyAxMTguMSAyNTYgMTE4LjFDMjMzLjMgMTE4LjEgMjExLjQgMTA5LjEgMTk0LjEgOTUuMjdDMTc2LjggODAuNTUgMTY1LjMgNjAuMTggMTYxLjcgMzcuNzhDMTc2LjggMzEuMzcgMTkyLjUgMjYuNTIgMjA4LjYgMjMuMzFDMjA4LjYgMzUuODggMjEzLjYgNDcuOTMgMjIyLjUgNTYuODJDMjMxLjQgNjUuNyAyNDMuNCA3MC43IDI1NiA3MC43QzI2OC42IDcwLjcgMjgwLjYgNjUuNyAyODkuNSA1Ni44MkMyOTguNCA0Ny45MyAzMDMuNCAzNS44OCAzMDMuNCAyMy4zMUMzMTkuNSAyNi41MiAzMzUuMiAzMS4zNyAzNTAuMyAzNy43OEMzNDYuNyA2MC4xOCAzMzUuMiA4MC41NSAzMTcuOSA5NS4yN0gzMTcuOXpNODIuNzggMjMxQzYxLjQyIDIzOC42IDM4LjA2IDIzOC40IDE2Ljg2IDIzMC40QzE4LjgyIDIxNC4xIDIyLjQ2IDE5OC4xIDI3LjcxIDE4Mi41QzMzLjEgMTg1LjYgMzkuMDUgMTg3LjYgNDUuMjIgMTg4LjVDNTEuMzkgMTg5LjMgNTcuNjcgMTg4LjkgNjMuNjggMTg3LjNDNjkuNjkgMTg1LjYgNzUuMzMgMTgyLjkgODAuMjcgMTc5LjFDODUuMjEgMTc1LjMgODkuMzYgMTcwLjYgOTIuNDcgMTY1LjJDOTUuNTggMTU5LjggOTcuNjEgMTUzLjggOTguNDIgMTQ3LjdDOTkuMjMgMTQxLjUgOTguODMgMTM1LjIgOTcuMjIgMTI5LjJDOTUuNjEgMTIzLjIgOTIuODMgMTE3LjYgODkuMDQgMTEyLjZDODUuMjUgMTA3LjcgODAuNTMgMTAzLjUgNzUuMTQgMTAwLjRDODUuOTYgODguMTEgOTguMDEgNzYuOTQgMTExLjEgNjcuMDdDMTI4LjcgODEuNDIgMTQwLjYgMTAxLjYgMTQ0LjcgMTIzLjlDMTQ4LjggMTQ2LjIgMTQ0LjggMTY5LjMgMTMzLjUgMTg4LjlDMTIyLjEgMjA4LjUgMTA0LjEgMjIzLjQgODIuNzggMjMxVjIzMXpNNDI5LjIgMjMxLjFDNDA3LjkgMjIzLjUgMzg5LjkgMjA4LjUgMzc4LjUgMTg4LjlDMzY3LjIgMTY5LjMgMzYzLjMgMTQ2LjIgMzY3LjQgMTIzLjlDMzcxLjUgMTAxLjcgMzgzLjQgODEuNTQgNDAwLjkgNjcuMTlDNDE0IDc3LjA0IDQyNi4xIDg4LjIxIDQzNi45IDEwMC41QzQyNi4yIDEwNi45IDQxOC41IDExNy4yIDQxNS40IDEyOS4zQzQxMi4yIDE0MS4zIDQxMy4xIDE1NC4xIDQyMC4yIDE2NC45QzQyNi40IDE3NS43IDQzNi42IDE4My42IDQ0OC42IDE4Ni45QzQ2MC42IDE5MC4yIDQ3My41IDE4OC42IDQ4NC4zIDE4Mi42QzQ4OS42IDE5OC4xIDQ5My4yIDIxNC4yIDQ5NS4yIDIzMC40QzQ3My4xIDIzOC41IDQ1MC42IDIzOC43IDQyOS4yIDIzMS4xTDQyOS4yIDIzMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3JpYmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIuMyAyNTIuN2MtMTYuMS0xOS0yNC43LTQ1LjktMjQuOC03OS45IDAtMTAwLjQgNzUuMi0xNTMuMSAxNjcuMi0xNTMuMSA5OC42LTEuNiAxNTYuOCA0OSAxODQuMyA3MC42bC01MC41IDcyLjEtMzcuMy0yNC42IDI2LjktMzguNmMtMzYuNS0yNC03OS40LTM2LjUtMTIzLTM1LjgtNTAuNy0uOC0xMTEuNyAyNy4yLTExMS43IDc2LjIgMCAxOC43IDExLjIgMjAuNyAyOC42IDE1LjYgMjMuMy01LjMgNDEuOS42IDU1LjggMTQgMjYuNCAyNC4zIDIzLjIgNjcuNi0uNyA5MS45LTI5LjIgMjkuNS04NS4yIDI3LjMtMTE0LjgtOC40em0zMTcuNyA1LjljLTE1LjUtMTguOC0zOC45LTI5LjQtNjMuMi0yOC42LTM4LjEtMi03MS4xIDI4LTcwLjUgNjcuMi0uNyAxNi44IDYgMzMgMTguNCA0NC4zIDE0LjEgMTMuOSAzMyAxOS43IDU2LjMgMTQuNCAxNy40LTUuMSAyOC42LTMuMSAyOC42IDE1LjYgMCA0LjMtLjUgOC41LTEuNCAxMi43LTE2LjcgNDAuOS01OS41IDY0LjQtMTIxLjQgNjQuNC01MS45LjItMTAyLjQtMTYuNC0xNDQuMS00Ny4zbDMzLjctMzkuNC0zNS42LTI3LjRMMCA0MDYuM2wxNS40IDEzLjhjNTIuNSA0Ni44IDEyMC40IDcyLjUgMTkwLjcgNzIuMiA1MS40IDAgOTQuNC0xMC41IDEzMy42LTQ0LjEgNTcuMS01MS40IDU0LjItMTQ5LjIgMjAuMy0xODkuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VhcmNoZW5naW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ2MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIwLjYgMTMwLjNsLTY3LjIgMjguMlY0My4yTDk4LjcgMjMzLjVsNTQuNy0yNC4ydjEzMC4zbDY3LjItMjA5LjN6bS04My4yLTk2LjdsLTEuMyA0LjctMTUuMiA1Mi45QzgwLjYgMTA2LjcgNTIgMTQ1LjggNTIgMTkxLjVjMCA1Mi4zIDM0LjMgOTUuOSA4My40IDEwNS41djUzLjZDNTcuNSAzNDAuMSAwIDI3Mi40IDAgMTkxLjZjMC04MC41IDU5LjgtMTQ3LjIgMTM3LjQtMTU4em0zMTEuNCA0NDcuMmMtMTEuMiAxMS4yLTIzLjEgMTIuMy0yOC42IDEwLjUtNS40LTEuOC0yNy4xLTE5LjktNjAuNC00NC40LTMzLjMtMjQuNi0zMy42LTM1LjctNDMtNTYuNy05LjQtMjAuOS0zMC40LTQyLjYtNTcuNS01Mi40bC05LjctMTQuN2MtMjQuNyAxNi45LTUzIDI2LjktODEuMyAyOC43bDIuMS02LjYgMTUuOS00OS41YzQ2LjUtMTEuOSA4MC45LTU0IDgwLjktMTA0LjIgMC01NC41LTM4LjQtMTAyLjEtOTYtMTA3LjFWMzIuM0MyNTQuNCAzNy40IDMyMCAxMDYuOCAzMjAgMTkxLjZjMCAzMy42LTExLjIgNjQuNy0yOSA5MC40bDE0LjYgOS42YzkuOCAyNy4xIDMxLjUgNDggNTIuNCA1Ny40czMyLjIgOS43IDU2LjggNDNjMjQuNiAzMy4yIDQyLjcgNTQuOSA0NC41IDYwLjNzLjcgMTcuMy0xMC41IDI4LjV6bS05LjktMTcuOWMwLTQuNC0zLjYtOC04LThzLTggMy42LTggOCAzLjYgOCA4IDggOC0zLjYgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWxsY2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTMuNCAzMkg5NC43QzQyLjYgMzIgMCA3NC42IDAgMTI2LjZ2MjU4LjdDMCA0MzcuNCA0Mi42IDQ4MCA5NC43IDQ4MGgyNTguN2M1Mi4xIDAgOTQuNy00Mi42IDk0LjctOTQuNlYxMjYuNmMwLTUyLTQyLjYtOTQuNi05NC43LTk0LjZ6bS01MCAzMTYuNGMtMjcuOSA0OC4yLTg5LjkgNjQuOS0xMzguMiAzNy4yLTIyLjkgMzkuOC01NC45IDguNi00Mi4zLTEzLjJsMTUuNy0yNy4yYzUuOS0xMC4zIDE5LjItMTMuOSAyOS41LTcuOSAxOC42IDEwLjgtLjEtLjEgMTguNSAxMC43IDI3LjYgMTUuOSA2My40IDYuMyA3OS40LTIxLjMgMTUuOS0yNy42IDYuMy02My40LTIxLjMtNzkuNC0xNy44LTEwLjItLjYtLjQtMTguNi0xMC42LTI0LjYtMTQuMi0zLjQtNTEuOSAyMS42LTM3LjUgMTguNiAxMC44LS4xLS4xIDE4LjUgMTAuNyA0OC40IDI4IDY1LjEgOTAuMyAzNy4yIDEzOC41em0yMS44LTIwOC44Yy0xNyAyOS41LTE2LjMgMjguOC0xOSAzMS41LTYuNSA2LjUtMTYuMyA4LjctMjYuNSAzLjYtMTguNi0xMC44LjEuMS0xOC41LTEwLjctMjcuNi0xNS45LTYzLjQtNi4zLTc5LjQgMjEuM3MtNi4zIDYzLjQgMjEuMyA3OS40YzAgMCAxOC41IDEwLjYgMTguNiAxMC42IDI0LjYgMTQuMiAzLjQgNTEuOS0yMS42IDM3LjUtMTguNi0xMC44LjEuMS0xOC41LTEwLjctNDguMi0yNy44LTY0LjktOTAuMS0zNy4xLTEzOC40IDI3LjktNDguMiA4OS45LTY0LjkgMTM4LjItMzcuMmw0LjgtOC40YzE0LjMtMjQuOSA1Mi0zLjMgMzcuNyAyMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWxsc3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM5LjcxIDIzNy4zMDhjMy4wNjQtMTIuMjU3IDQuMjktMjQuODIxIDQuMjktMzcuMzg0QzU0NCAxMDcuMzgyIDQ2OC42MTggMzIgMzc2LjA3NiAzMmMtNzcuMjIgMC0xNDQuNjM0IDUzLjAxMi0xNjMuMDIgMTI3Ljc4MS0xNS4zMjItMTMuMTc2LTM0LjkzNC0yMC41My01NS4xNTctMjAuNTMtNDYuMjcxIDAtODMuOTYyIDM3LjY5LTgzLjk2MiA4My45NjEgMCA3LjM1NC45MiAxNS4wMTUgMy4wNjUgMjIuMzY5LTQyLjkgMjAuMjI1LTcwLjc4NSA2My43MzgtNzAuNzg1IDExMS4yMzRDNi4yMTYgNDI0Ljg0MyA2MS42OCA0ODAgMTI5LjQwMSA0ODBoMzgxLjE5OGM2Ny43MiAwIDEyMy4xODQtNTUuMTU3IDEyMy4xODQtMTIzLjE4NC4wMDEtNTYuMzg0LTM4LjkxNi0xMDYuMDI1LTk0LjA3My0xMTkuNTA4ek0xOTkuODggNDAxLjU1NGMwIDguMjc0LTcuMDQ4IDE1LjMyMS0xNS4zMjEgMTUuMzIxSDE1My42MWMtOC4yNzQgMC0xNS4zMjEtNy4wNDgtMTUuMzIxLTE1LjMyMVYyOTAuNjI2YzAtOC4yNzMgNy4wNDgtMTUuMzIxIDE1LjMyMS0xNS4zMjFoMzAuOTQ5YzguMjc0IDAgMTUuMzIxIDcuMDQ4IDE1LjMyMSAxNS4zMjF2MTEwLjkyOHptODkuNDc3IDBjMCA4LjI3NC03LjA0OCAxNS4zMjEtMTUuMzIyIDE1LjMyMWgtMzAuOTQ5Yy04LjI3NCAwLTE1LjMyMS03LjA0OC0xNS4zMjEtMTUuMzIxVjI3MC4wOTZjMC04LjI3NCA3LjA0OC0xNS4zMjEgMTUuMzIxLTE1LjMyMWgzMC45NDljOC4yNzQgMCAxNS4zMjIgNy4wNDggMTUuMzIyIDE1LjMyMXYxMzEuNDU4em04OS40NzcgMGMwIDguMjc0LTcuMDQ3IDE1LjMyMS0xNS4zMjEgMTUuMzIxaC0zMC45NDljLTguMjc0IDAtMTUuMzIyLTcuMDQ4LTE1LjMyMi0xNS4zMjFWMjM4Ljg0YzAtOC4yNzQgNy4wNDgtMTUuMzIxIDE1LjMyMi0xNS4zMjFoMzAuOTQ5YzguMjc0IDAgMTUuMzIxIDcuMDQ4IDE1LjMyMSAxNS4zMjF2MTYyLjcxNHptODcuMDI3IDBjMCA4LjI3NC03LjA0OCAxNS4zMjEtMTUuMzIyIDE1LjMyMWgtMjguNDk3Yy04LjI3NCAwLTE1LjMyMS03LjA0OC0xNS4zMjEtMTUuMzIxVjE3Ni45NDFjMC04LjU3OSA3LjA0Ny0xNS42MjggMTUuMzIxLTE1LjYyOGgyOC40OTdjOC4yNzQgMCAxNS4zMjIgNy4wNDggMTUuMzIyIDE1LjYyOHYyMjQuNjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZXJ2aWNlc3RhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODggMjE2YzgxLjcgMTAuMiAyNzMuNyAxMDIuMyAzMDQgMjMySDBjOTkuNS04LjEgMTg0LjUtMTM3IDg4LTIzMnptMzItMTUyYzMyLjMgMzUuNiA0Ny43IDgzLjkgNDYuNCAxMzMuNkMyNDkuMyAyMzEuMyAzNzMuNyAzMjEuMyA0MDAgNDQ4aDk2QzQ1NS4zIDIzMS45IDIyMi44IDc5LjUgMTIwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGlydHNpbmJ1bGsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAwIDQxMC4zbDMwLjYgMTMuNCA0LjQtOS45LTMwLjYtMTMuNHptMzkuNCAxNy41bDMwLjYgMTMuNCA0LjQtOS45LTMwLjYtMTMuNHptMTcyLjEtMTRsNC40IDkuOSAzMC42LTEzLjQtNC40LTkuOXpNMTc5LjEgNDQ1bDMwLjMgMTMuNyA0LjQtOS45LTMwLjMtMTMuNHpNNjAuNCAzOTIuOEw5MSA0MDYuMmw0LjQtOS42LTMwLjYtMTMuN3ptMjExLjQgMzguNWw0LjQgOS45IDMwLjYtMTMuNC00LjQtOS45em0tMzkuMyAxNy41bDQuNCA5LjkgMzAuNi0xMy43LTQuNC05LjZ6bTExOC40LTUyLjJsNC40IDkuNiAzMC42LTEzLjQtNC40LTkuOXpNMTcwIDQ2LjZoLTMzLjV2MTAuNUgxNzB6bS00Ny4yIDBIODkuMnYxMC41aDMzLjV6bS00Ny4zIDBINDIuM3YxMC41aDMzLjN6bTE0MS41IDBoLTMzLjJ2MTAuNUgyMTd6bTk0LjUgMEgyNzh2MTAuNWgzMy41em00Ny4zIDBoLTMzLjV2MTAuNWgzMy41em0tOTQuNiAwSDIzMXYxMC41aDMzLjJ6bTE0MS41IDBoLTMzLjN2MTAuNWgzMy4zek01Mi44IDM1MS4xSDQydjMzLjVoMTAuOHptNzAtMjE1LjlIODkuMnYxMC41aDMzLjV6bS03MCAxMC42aDIyLjh2LTEwLjVINDJ2MzMuNWgxMC44em0xNjguOSAyMjguNmM1MC41IDAgOTEuMy00MC44IDkxLjMtOTEuMyAwLTUwLjItNDAuOC05MS4zLTkxLjMtOTEuMy01MC4yIDAtOTEuMyA0MS4xLTkxLjMgOTEuMyAwIDUwLjUgNDEuMSA5MS4zIDkxLjMgOTEuM3ptLTQ4LjItMTExLjFjMC0yNS40IDI5LjUtMzEuOCA0OS42LTMxLjggMTYuOSAwIDI5LjIgNS44IDQ0LjMgMTJsLTguOCAxNi45aC0uOWMtNi40LTkuOS0yNC44LTEzLjEtMzUuNi0xMy4xLTkgMC0yOS44IDEuOC0yOS44IDE0LjkgMCAyMS42IDc4LjUtMTAuMiA3OC41IDM3LjkgMCAyNS40LTMxLjUgMzEuMi01MSAzMS4yLTE4LjEgMC0zMi40LTIuOS00Ny4yLTEyLjJsOS0xOC40aC45YzYuMSAxMi4yIDIzLjYgMTQuOSAzNS45IDE0LjkgOC43IDAgMzIuNy0xLjIgMzIuNy0xNC4zIDAtMjYuMS03Ny42IDYuMy03Ny42LTM4ek01Mi44IDE3OC40SDQyVjIxMmgxMC44em0zNDIuNCAyMDYuMkg0MDZ2LTMzLjVoLTEwLjh6TTUyLjggMzA3LjlINDJ2MzMuNWgxMC44ek0wIDMuN3Y0MDZsMjIxLjcgOTguNkw0NDggNDA5LjdWMy43em00MTguOCAzODcuMUwyMjIgNDc2LjUgMjkuMiAzOTAuOFYxMjAuN2gzODkuN3YyNzAuMXptMC0yOTkuM0gyOS4yVjMyLjloMzg5Ljd2NTguNnptLTM2NiAxMzAuMUg0MnYzMy41aDEwLjh6bTAgNDMuMkg0MnYzMy41aDEwLjh6TTE3MCAxMzUuMmgtMzMuNXYxMC41SDE3MHptMjI1LjIgMTYzLjFINDA2di0zMy41aC0xMC44em0wLTQzLjJINDA2di0zMy41aC0xMC44ek0yMTcgMTM1LjJoLTMzLjJ2MTAuNUgyMTd6TTM5NS4yIDIxMkg0MDZ2LTMzLjVoLTEwLjh6bTAgMTI5LjVINDA2VjMwOGgtMTAuOHptLTEzMS0yMDYuM0gyMzF2MTAuNWgzMy4yem00Ny4zIDBIMjc4djEwLjVoMzMuNXptODMuNyAzMy42SDQwNnYtMzMuNWgtMzMuNXYxMC41aDIyLjh6bS0zNi40LTMzLjZoLTMzLjV2MTAuNWgzMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9lbGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDQuOSAzMzFjMi4yLTEuMSA0LjQtMi4zIDYuNS0zLjdsOC4zLTQuOGMxLjUtMS4xIDQuNC0zLjQgOC43LTYuN2wuNS0uNWMzLjQtMy40IDcuMi01IDExLjMtNC45YzEuOCAwIDMuOSAuNSA2LjQgMS41bDMxLTI3LjVjLjktLjcgMS43LTEuMyAyLjYtMS44aC4yYzMuMy0xLjkgNi0xLjggOC4yIC40YzMuOSAyLjEgNC4yIDUuNiAuOSAxMC42TDQ1Ni45IDMyMmMuMiAuNSAuNCAxIC40IDEuNWMuNSAyLjIgLjMgNC40LS41IDYuNmMtLjcgMS41LTEuOCAyLjktMy4xIDQuMmMtMS40IDEuNC0yLjcgMi44LTQuMiA0LjJsLTE4LjggMTMuN2MtMS43IDEuMi0zLjQgMi4zLTUuMSAzLjNjLTIuMSAxLjMtNC4zIDIuNS02LjYgMy42Yy0xIC40LTEuOSAuOS0yLjkgMS4zYy01LjkgMi41LTExLjkgNC4yLTE4LjIgNWMtMi45IDI0LjUtMTEuMyA0Ny4xLTI1LjEgNjcuOGMtMTcuNSAyNS43LTQxLjQgNDUuNC03MS44IDU4LjhjLTMwLjIgMTMuNS02MyAyMC4yLTk4LjIgMjAuMmMtNDguNi0uNS04OC0xMS40LTExOC4yLTMyLjhDNDkuNSA0NTQuNCAzMiA0MjEuNSAzMiAzODAuM3YtNS42YzEuMi0yOC4xIDkuNS01NC42IDI0LjgtNzkuOGMxNS4xLTI0LjkgMzcuMS00MS43IDY2LjEtNTAuNWMxNC45LTQuNCAyOS45LTYuNiA0NS02LjZjMTUuNSAwIDMxLjYgMi45IDQ4LjEgOC42czM1LjIgMTUuNSA1NS45IDI5LjVMMzI2IDMxMi4yYzE1LjEgOS44IDI4LjggMTYuNSA0MS4yIDIwYy0yLjYtMjUuMS0xMS43LTQ2LjYtMjcuMy02NC41Yy0xNS43LTE4LjEtMzUuNi0zMS4zLTU5LjktMzkuN2wtMjMuMy04Yy0yMS40LTcuNS0zNy4zLTE0LjktNDcuNy0yMi4yYy0yOC4yLTE5LjEtNDMuOC00NS4yLTQ3LTc4LjVsLS41LTkuOGMwLTMyLjEgMTMtNTguOSAzOS04MC41QzIyMy41IDkuNyAyNTEuMSAwIDI4MyAwYzI0IDAgNDUuNiA2LjkgNjQuNyAyMC44YzE5LjIgMTQgMzAuMSAzMy44IDMyLjYgNTkuNGwuNSAxMGMwIDE4LjYtNC44IDM0LjUtMTQuNCA0Ny43Yy05LjggMTMuMi0xOC41IDE5LjktMjYgMTkuOWMtMS42LS4xLTMuMS0uMy00LjUtLjZsLTM0IDMyYy01LjUgMy05LjIgMi41LTExLjEtMS42Yy0xLjktMi4yLTEuOC00LjkgLjUtOC4ybC4yLS4yYy41LS43IDEuMi0xLjUgMi0yLjRsMzEuNi0zMGMtLjQtMS41LS42LTMuMS0uNi00LjhjMC00LjEgMS42LTcuNiA0LjktMTAuNGMxMy44LTEyLjQgMjAuOC0yNi43IDIwLjgtNDIuOGMwLTE2LTYuMS0yOS41LTE4LjItNDAuNHMtMjguNy0xNi41LTQ5LjctMTYuOGMtMjYuMiAwLTQ3LjggNy45LTY0LjcgMjMuN1MxOTIuMyA4OS45IDE5Mi4zIDExMmMwIDE3LjggNi45IDMzLjkgMjAuNiA0OC4zYzEzLjYgMTQuMiAzNC42IDI1LjQgNjMgMzMuNWMzOS44IDExLjUgNzAuMiAzMSA5MS4zIDU4LjNjMTguNyAyNC4yIDI5LjEgNTEuMyAzMS4zIDgxLjRjMi4yLS43IDQuMy0xLjUgNi41LTIuNnpNMjk0LjEgMTc4LjdjMCAxLjEgLjYgMS42IDEuOCAxLjZjLjEgMCA5LjctOC45IDI4LjgtMjYuNmMwLTIuNC01LjEgLjktMTUuMyAxMGMtMTAuMiA5LjItMTUuMyAxNC4yLTE1LjMgMTQuOXptOCA2LjRjMC0xLS41LTEuNS0xLjUtMS41Yy0xLjEgMC0yLjEgLjUtMi45IDEuNmMtMS45LS4xLTMuMyAuMS00LjIgLjdjLS40IC4yLS41IC41LS41IC43YzAgLjcgLjUgMS4zIDEuNSAxLjZoMy4zYzIuOS0xLjEgNC40LTIuMiA0LjQtMy4zem0yMi42LTE5LjljMC0yLjgtMS42LTIuOC00LjkgMGMtMS42IDEuNS0zLjYgMy41LTYgNi4yYy0uOCAuNi0yLjYgMi4yLTUuMyA0LjljLTIuOCAyLjktNC4yIDQuNy00LjIgNS4zbC4yIDEuM2MuNyAuMiAxLjIgLjQgMS41IC40Yy4xIDAgMy4zLTIuOSA5LjUtOC43czkuMy04LjkgOS4zLTkuM3ptMTU5LjcgMTIwbC0zMC42IDI3YzEuOCAxIDMuMiAyLjQgNCA0LjJsMzAuMi0yN2MuMi0xLjIgLjEtMi4yLS41LTIuOWMtLjYtLjUtMS42LS45LTMuMS0xLjN6bS0xLjYtLjlsLS43LS43LTI3IDIxLjkgMS42IDIgMjYtMjMuMXpNMzY2LjYgMzYzLjljLTgtMi4xLTE1LjQtNC42LTIyLjItNy41Yy0xNS4zLTYuMi0zNC4zLTE3LTU3LTMyLjRMMjUwIDI5OC43Yy0xNS44LTEwLjEtMzAuMi0xNy42LTQzLjItMjIuNmMtMTMuMS00LjktMjYtNy4zLTM4LjYtNy4zaC01LjVjLTMyLjIgMS43LTU3LjIgMTMuOC03NSAzNi4yYy0xNi42IDIwLjgtMjUgNDUuMy0yNSA3My42YzAgMzEuOCAxMi44IDU2LjcgMzguMiA3NC43YzI1LjQgMTguMSA2MC4yIDI3LjEgMTA0LjQgMjcuMWMzNC43IDAgNjQtNi4yIDg3LjgtMTguNmMyMy43LTEyLjQgNDIuMS0yOC44IDU1LjItNDkuMmM5LjgtMTUuNSAxNS45LTMxLjggMTguMi00OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9waWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4OC4zMiwxMDQuMWE0LjY2LDQuNjYsMCwwLDAtNC40LTRjLTIsMC0zNy4yMy0uOC0zNy4yMy0uOHMtMjEuNjEtMjAuODItMjkuNjItMjguODNWNTAzLjJMNDQyLjc2LDQ3MlMzODguNzIsMTA2LjUsMzg4LjMyLDEwNC4xWk0yODguNjUsNzAuNDdhMTE2LjY3LDExNi42NywwLDAsMC03LjIxLTE3LjYxQzI3MSwzMi44NSwyNTUuNDIsMjIsMjM3LDIyYTE1LDE1LDAsMCwwLTQsLjRjLS40LS44LTEuMi0xLjItMS42LTJDMjIzLjQsMTEuNjMsMjEzLDcuNjMsMjAwLjU4LDhjLTI0LC44LTQ4LDE4LTY3LjI1LDQ4LjgzLTEzLjYxLDIxLjYyLTI0LDQ4Ljg0LTI2LjgyLDcwLjA2LTI3LjYyLDguNC00Ni44MywxNC40MS00Ny4yMywxNC44MS0xNCw0LjQtMTQuNDEsNC44LTE2LDE4LTEuMiwxMC0zOCwyOTEuODItMzgsMjkxLjgyTDMwNy44Niw1MDRWNjUuNjdhNDEuNjYsNDEuNjYsMCwwLDAtNC40LjRTMjk3Ljg2LDY3LjY3LDI4OC42NSw3MC40N1pNMjMzLjQxLDg3LjY5Yy0xNiw0LjgtMzMuNjMsMTAuNC01MC44NCwxNS42MSw0LjgtMTguODIsMTQuNDEtMzcuNjMsMjUuNjItNTAsNC40LTQuNCwxMC40MS05LjYxLDE3LjIxLTEyLjgxQzIzMi4yMSw1NC44NiwyMzMuODEsNzQuNDgsMjMzLjQxLDg3LjY5Wk0yMDAuNTgsMjQuNDRBMjcuNDksMjcuNDksMCwwLDEsMjE1LDI4Yy02LjQsMy4yLTEyLjgxLDguNDEtMTguODEsMTQuNDEtMTUuMjEsMTYuNDItMjYuODIsNDItMzEuNjIsNjYuNDUtMTQuNDIsNC40MS0yOC44Myw4LjgxLTQyLDEyLjgxQzEzMS4zMyw4My4yOCwxNjMuNzUsMjUuMjQsMjAwLjU4LDI0LjQ0Wk0xNTQuMTUsMjQ0LjYxYzEuNiwyNS42MSw2OS4yNSwzMS4yMiw3My4yNSw5MS42NiwyLjgsNDcuNjQtMjUuMjIsODAuMDYtNjUuNjUsODIuNDctNDguODMsMy4yLTc1LjY1LTI1LjYyLTc1LjY1LTI1LjYybDEwLjQtNDRzMjYuODIsMjAuNDIsNDguNDQsMTguODJjMTQtLjgsMTkuMjItMTIuNDEsMTguODEtMjAuNDItMi0zMy42Mi01Ny4yNC0zMS42Mi02MC44NC04Ni44Ni0zLjItNDYuNDQsMjcuMjItOTMuMjcsOTQuNDctOTcuNjgsMjYtMS42LDM5LjIzLDQuODEsMzkuMjMsNC44MUwyMjEuNCwyMjUuMzlzLTE3LjIxLTgtMzcuNjMtNi40QzE1NC4xNSwyMjEsMTUzLjc1LDIzOS44LDE1NC4xNSwyNDQuNjFaTTI0OS40Miw4Mi44OGMwLTEyLTEuNi0yOS4yMi03LjIxLTQzLjYzLDE4LjQyLDMuNiwyNy4yMiwyNCwzMS4yMywzNi40M1EyNjIuNjMsNzguNjgsMjQ5LjQyLDgyLjg4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9wd2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDMuNSA0NTUuNDFBMjQ2LjE3IDI0Ni4xNyAwIDAgMSAyNTYgNTA0QzExOC44MSA1MDQgOCAzOTMgOCAyNTYgOCAxMTguODEgMTE5IDggMjU2IDhhMjQ3LjM5IDI0Ny4zOSAwIDAgMSAxNjUuNyA2My41IDMuNTcgMy41NyAwIDAgMS0yLjg2IDYuMThBNDE4LjYyIDQxOC42MiAwIDAgMCAzNjIuMTMgNzRjLTEyOS4zNiAwLTIyMi40IDUzLjQ3LTIyMi40IDE1NS4zNSAwIDEwOSA5Mi4xMyAxNDUuODggMTc2LjgzIDE3OC43MyAzMy42NCAxMyA2NS40IDI1LjM2IDg3IDQxLjU5YTMuNTggMy41OCAwIDAgMSAwIDUuNzJ6TTUwMyAyMzMuMDlhMy42NCAzLjY0IDAgMCAwLTEuMjctMi40NGMtNTEuNzYtNDMtOTMuNjItNjAuNDgtMTQ0LjQ4LTYwLjQ4LTg0LjEzIDAtODAuMjUgNTIuMTctODAuMjUgNTMuNjMgMCA0Mi42IDUyLjA2IDYyIDExMi4zNCA4NC40OSAzMS4wNyAxMS41OSA2My4xOSAyMy41NyA5Mi42OCAzOS45M2EzLjU3IDMuNTcgMCAwIDAgNS0xLjgyQTI0OSAyNDkgMCAwIDAgNTAzIDIzMy4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbmFsTWVzc2VuZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5NC42IDcuNWw1LjggMjMuM0MxNzcuNyAzNi4zIDE1NiA0NS4zIDEzNiA1Ny40TDEyMy43IDM2LjhjMjItMTMuMyA0NS45LTIzLjIgNzAuOS0yOS4zem0xMjIuOSAwbC01LjggMjMuM0MzMzQuMyAzNi4zIDM1NiA0NS4zIDM3NiA1Ny40bDEyLjQtMjAuNmMtMjItMTMuMy00Ni0yMy4yLTcxLTI5LjN6TTM2LjggMTIzLjdjLTEzLjMgMjItMjMuMiA0NS45LTI5LjMgNzAuOWwyMy4zIDUuOEMzNi4zIDE3Ny43IDQ1LjMgMTU2IDU3LjQgMTM2TDM2LjggMTIzLjd6TTI0IDI1NmMwLTExLjYgLjktMjMuMyAyLjYtMzQuOEwyLjkgMjE3LjZjLTMuOCAyNS40LTMuOCA1MS4zIDAgNzYuN2wyMy43LTMuNkMyNC45IDI3OS4zIDI0IDI2Ny42IDI0IDI1NnpNMzg4LjMgNDc1LjJMMzc2IDQ1NC42Yy0yMCAxMi4xLTQxLjYgMjEtNjQuMiAyNi42bDUuOCAyMy4zYzI0LjktNi4yIDQ4LjgtMTYgNzAuOC0yOS4zek00ODggMjU2YzAgMTEuNi0uOSAyMy4zLTIuNiAzNC44bDIzLjcgMy42YzMuOC0yNS40IDMuOC01MS4zIDAtNzYuN2wtMjMuNyAzLjZjMS43IDExLjUgMi42IDIzLjEgMi42IDM0Ljh6bTE2LjUgNjEuNGwtMjMuMy01LjhjLTUuNiAyMi43LTE0LjUgNDQuMy0yNi42IDY0LjNsMjAuNiAxMi40YzEzLjMtMjIgMjMuMi00NiAyOS4zLTcxem0tMjEzLjggMTY4Yy0yMyAzLjUtNDYuNSAzLjUtNjkuNSAwbC0zLjYgMjMuN2MyNS40IDMuOCA1MS4zIDMuOCA3Ni43IDBsLTMuNi0yMy43em0xNTItOTEuOGMtMTMuOCAxOC43LTMwLjQgMzUuMy00OS4yIDQ5LjFsMTQuMiAxOS4zYzIwLjctMTUuMiAzOS0zMy40IDU0LjItNTQuMWwtMTkuMy0xNC40ek0zOTMuNiA2OS4yYzE4LjggMTMuOCAzNS4zIDMwLjQgNDkuMiA0OS4yTDQ2Mi4xIDEwNEM0NDYuOSA4My40IDQyOC42IDY1LjEgNDA4IDQ5LjlMMzkzLjYgNjkuMnpNNjkuMiAxMTguNGMxMy44LTE4LjggMzAuNC0zNS4zIDQ5LjItNDkuMkwxMDQgNDkuOUM4My40IDY1LjEgNjUuMSA4My40IDQ5LjkgMTA0bDE5LjMgMTQuNHptNDA2IDUuM0w0NTQuNiAxMzZjMTIuMSAyMCAyMSA0MS42IDI2LjYgNjQuMmwyMy4zLTUuOGMtNi4yLTI0LjktMTYtNDguOC0yOS4zLTcwLjh6bS0yNTQtOTcuMWMyMy0zLjUgNDYuNS0zLjUgNjkuNSAwbDMuNi0yMy43QzI2OC45LTEgMjQzLjEtMSAyMTcuNiAyLjlsMy42IDIzLjd6TTgxLjYgNDY4LjRMMzIgNDgwbDExLjYtNDkuNkwyMC4yIDQyNSA4LjYgNDc0LjVjLS45IDQtLjggOC4xIC4zIDEyLjFzMy4yIDcuNSA2LjEgMTAuNHM2LjUgNSAxMC40IDYuMXM4LjEgMS4yIDEyLjEgLjNMODcgNDkybC01LjQtMjMuNnpNMjUuMiA0MDMuNkw0OC42IDQwOWw4LTM0LjRjLTExLjctMTkuNi0yMC40LTQwLjgtMjUuOC02M0w3LjUgMzE3LjRjNS4yIDIxLjIgMTMuMiA0MS43IDIzLjYgNjAuOGwtNS45IDI1LjN6bTExMiA1MmwtMzQuNCA4IDUuNCAyMy40IDI1LjMtNS45YzE5LjIgMTAuNCAzOS42IDE4LjQgNjAuOCAyMy42bDUuOC0yMy4zYy0yMi4xLTUuNS00My4zLTE0LjMtNjIuOC0yNmwtLjIgLjJ6TTI1NiA0OGMtMzcuMiAwLTczLjYgMTAtMTA1LjYgMjguOXMtNTguNCA0Ni03Ni4zIDc4LjZzLTI2LjkgNjkuMy0yNS44IDEwNi40czEyIDczLjMgMzEuOCAxMDQuOEw2MCA0NTJsODUuMy0yMGMyNy4zIDE3LjIgNTguMiAyNy44IDkwLjMgMzFzNjQuNS0xLjEgOTQuNi0xMi42czU3LjItMjkuOCA3OS01My42czM3LjgtNTIuMiA0Ni44LTgzLjJzMTAuNS02My42IDQuNy05NS4zcy0xOS02MS42LTM4LjQtODcuNHMtNDQuNS00Ni43LTczLjQtNjFTMjg4LjMgNDggMjU2IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW1wbHlidWlsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEuMiA2NGgtMTA2Yy0xNC41IDAtMjYuNiAxMS44LTI2LjYgMjYuM3YzOS42SDE2My4zVjkwLjNjMC0xNC41LTEyLTI2LjMtMjYuNi0yNi4zaC0xMDZDMTYuMSA2NCA0LjMgNzUuOCA0LjMgOTAuM3YzMzEuNGMwIDE0LjUgMTEuOCAyNi4zIDI2LjYgMjYuM2g0NTAuNGMxNC44IDAgMjYuNi0xMS44IDI2LjYtMjYuM1Y5MC4zYy0uMi0xNC41LTEyLTI2LjMtMjYuNy0yNi4zek0xNDkuOCAzNTUuOGMtMzYuNiAwLTY2LjQtMjkuNy02Ni40LTY2LjQgMC0zNi45IDI5LjctNjYuNiA2Ni40LTY2LjYgMzYuOSAwIDY2LjYgMjkuNyA2Ni42IDY2LjYgMCAzNi43LTI5LjcgNjYuNC02Ni42IDY2LjR6bTIxMi40IDBjLTM2LjkgMC02Ni42LTI5LjctNjYuNi02Ni42IDAtMzYuNiAyOS43LTY2LjQgNjYuNi02Ni40IDM2LjYgMCA2Ni40IDI5LjcgNjYuNCA2Ni40IDAgMzYuOS0yOS44IDY2LjYtNjYuNCA2Ni42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaXN0cml4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0NDlMMzAxLjIgMzAwLjJjMjAtMjcuOSAzMS45LTYyLjIgMzEuOS05OS4yIDAtOTMuMS03NC43LTE2OC45LTE2Ni41LTE2OC45Qzc0LjcgMzIgMCAxMDcuOCAwIDIwMC45czc0LjcgMTY4LjkgMTY2LjUgMTY4LjljMzkuOCAwIDc2LjMtMTQuMiAxMDUtMzcuOWwxNDYgMTQ4LjEgMzAuNS0zMXpNMTY2LjUgMzMwLjhjLTcwLjYgMC0xMjguMS01OC4zLTEyOC4xLTEyOS45Uzk1LjkgNzEgMTY2LjUgNzFzMTI4LjEgNTguMyAxMjguMSAxMjkuOS01Ny40IDEyOS45LTEyOC4xIDEyOS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJsNjkuNzEgMTE4Ljc1LTU4Ljg2LTExLjUyIDY5Ljg0IDkxLjAzYTE0Ni43NDEgMTQ2Ljc0MSAwIDAgMCAwIDUxLjQ1bC02OS44NCA5MS4wMyA1OC44Ni0xMS41MkwwIDQ4MGwxMTguNzUtNjkuNzEtMTEuNTIgNTguODYgOTEuMDMtNjkuODRjMTcuMDIgMy4wNCAzNC40NyAzLjA0IDUxLjQ4IDBsOTEuMDMgNjkuODQtMTEuNTItNTguODZMNDQ4IDQ4MGwtNjkuNzEtMTE4Ljc4IDU4Ljg2IDExLjUyLTY5Ljg0LTkxLjAzYzMuMDMtMTcuMDEgMy4wNC0zNC40NCAwLTUxLjQ1bDY5Ljg0LTkxLjAzLTU4Ljg2IDExLjUyTDQ0OCAzMmwtMTE4Ljc1IDY5LjcxIDExLjUyLTU4LjktOTEuMDYgNjkuODdjLTguNS0xLjUyLTE3LjEtMi4yOS0yNS43MS0yLjI5cy0xNy4yMS43OC0yNS43MSAyLjI5bC05MS4wNi02OS44NyAxMS41MiA1OC45TDAgMzJ6bTIyNCA5OS43OGMzMS44IDAgNjMuNiAxMi4xMiA4Ny44NSAzNi4zNyA0OC41IDQ4LjUgNDguNDkgMTI3LjIxIDAgMTc1LjdzLTEyNy4yIDQ4LjQ2LTE3NS43LS4wM2MtNDguNS00OC41LTQ4LjQ5LTEyNy4yMSAwLTE3NS43IDI0LjI0LTI0LjI1IDU2LjA1LTM2LjM0IDg3Ljg1LTM2LjM0em0wIDM2LjY2Yy0yMi40MiAwLTQ0LjgzIDguNTItNjEuOTIgMjUuNjEtMzQuMTggMzQuMTgtMzQuMTkgODkuNjggMCAxMjMuODdzODkuNjUgMzQuMTggMTIzLjg0IDBjMzQuMTgtMzQuMTggMzQuMTktODkuNjggMC0xMjMuODctMTcuMDktMTcuMDktMzkuNS0yNS42MS02MS45Mi0yNS42MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2l0cm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMi40MzkgMC4wMDg0NjEyOFYwSDQ0OFYxMjhINjRDNjQgNTcuNjAwOCAxNDEuNzU1IDAuNDc1MzM4IDIxMi40MzkgMC4wMDg0NjEyOFpNMjM3LjI1NiAxOTJWMTkyLjAwN0MzMDcuMTM1IDE5Mi40NzUgMzg0IDI0OS42IDM4NCAzMjBIMjEwLjgwOVYzMTkuOTk1QzE0MC45MTUgMzE5LjU2MyA2NCAyNjIuNDI0IDY0IDE5MkgyMzcuMjU2Wk0yMzUuNTY1IDUxMS45OTNDMzA2LjI1MSA1MTEuNTIxIDM4NCA0NTQuMzk5IDM4NCAzODRIMFY1MTJIMjM1LjU2NVY1MTEuOTkzWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa2V0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcuNSAxNjIuMkw5IDE4Ny4xaDkwLjVsNi45LTEzMC43LTc4LjkgMTA1Ljh6TTM5Ni4zIDQ1LjdMMjY3LjcgMzJsMTM1LjcgMTQ3LjItNy4xLTEzMy41ek0xMTIuMiAyMTguM2wtMTEuMi0yMkg5LjlMMjM0LjggNDU4em0yLTMxLjJoMjg0bC04MS41LTg4LjVMMjU2LjMgMzN6bTI5Ny4zIDkuMUwyNzcuNiA0NThsMjI0LjgtMjYxLjdoLTkwLjl6TTQxNS40IDY5TDQwNiA1Ni40bC45IDE3LjMgNi4xIDExMy40aDkwLjN6TTExMy41IDkzLjVsLTQuNiA4NS42TDI0NC43IDMyIDExNi4xIDQ1Ljd6bTI4Ny43IDEwMi43aC0yOTBsNDIuNCA4Mi45TDI1Ni4zIDQ4MGwxNDQuOS0yODMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t5YXRsYXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDMyOS4zYzAgNjUuOS01Mi41IDExNC40LTExNy41IDExNC40LTE2NS45IDAtMTk2LjYtMjQ5LjctMzU5LjctMjQ5LjctMTQ2LjkgMC0xNDcuMSAyMTIuMiA1LjYgMjEyLjIgNDIuNSAwIDkwLjktMTcuOCAxMjUuMy00Mi41IDUuNi00LjEgMTYuOS0xNi4zIDIyLjgtMTYuM3MxMC45IDUgMTAuOSAxMC45YzAgNy44LTEzLjEgMTkuMS0xOC43IDI0LjEtNDAuOSAzNS42LTEwMC4zIDYxLjItMTU0LjcgNjEuMi04My40LjEtMTU0LTU5LTE1NC0xNDQuOXM2Ny41LTE0OS4xIDE1Mi44LTE0OS4xYzE4NS4zIDAgMjIyLjUgMjQ1LjkgMzYxLjkgMjQ1LjkgOTkuOSAwIDk0LjgtMTM5LjcgMy40LTEzOS43LTE3LjUgMC0zNSAxMS42LTQ2LjkgMTEuNi04LjQgMC0xNS45LTcuMi0xNS45LTE1LjYgMC0xMS42IDUuMy0yMy43IDUuMy0zNi4zIDAtNjYuNi01MC45LTExNC43LTExNi45LTExNC43LTUzLjEgMC04MCAzNi45LTg4LjggMzYuOS02LjIgMC0xMS4yLTUtMTEuMi0xMS4yIDAtNS42IDQuMS0xMC4zIDcuOC0xNC40IDI1LjMtMjguOCA2NC43LTQzLjcgMTAyLjgtNDMuNyA3OS40IDAgMTM5LjEgNTguNCAxMzkuMSAxMzcuOCAwIDYuOS0uMyAxMy43LTEuMiAyMC42IDExLjktMy4xIDI0LjEtNC43IDM1LjktNC43IDYwLjcgMCAxMTEuOSA0NS4zIDExMS45IDEwNy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa3lwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjQuNyAyOTkuOGMyLjktMTQgNC43LTI4LjkgNC43LTQzLjggMC0xMTMuNS05MS45LTIwNS4zLTIwNS4zLTIwNS4zLTE0LjkgMC0yOS43IDEuNy00My44IDQuN0MxNjEuMyA0MC43IDEzNy43IDMyIDExMiAzMiA1MC4yIDMyIDAgODIuMiAwIDE0NGMwIDI1LjcgOC43IDQ5LjMgMjMuMyA2OC4yLTIuOSAxNC00LjcgMjguOS00LjcgNDMuOCAwIDExMy41IDkxLjkgMjA1LjMgMjA1LjMgMjA1LjMgMTQuOSAwIDI5LjctMS43IDQzLjgtNC43IDE5IDE0LjYgNDIuNiAyMy4zIDY4LjIgMjMuMyA2MS44IDAgMTEyLTUwLjIgMTEyLTExMiAuMS0yNS42LTguNi00OS4yLTIzLjItNjguMXptLTE5NC42IDkxLjVjLTY1LjYgMC0xMjAuNS0yOS4yLTEyMC41LTY1IDAtMTYgOS0zMC42IDI5LjUtMzAuNiAzMS4yIDAgMzQuMSA0NC45IDg4LjEgNDQuOSAyNS43IDAgNDIuMy0xMS40IDQyLjMtMjYuMyAwLTE4LjctMTYtMjEuNi00Mi0yOC02Mi41LTE1LjQtMTE3LjgtMjItMTE3LjgtODcuMiAwLTU5LjIgNTguNi04MS4xIDEwOS4xLTgxLjEgNTUuMSAwIDExMC44IDIxLjkgMTEwLjggNTUuNCAwIDE2LjktMTEuNCAzMS44LTMwLjMgMzEuOC0yOC4zIDAtMjkuMi0zMy41LTc1LTMzLjUtMjUuNyAwLTQyIDctNDIgMjIuNSAwIDE5LjggMjAuOCAyMS44IDY5LjEgMzMgNDEuNCA5LjMgOTAuNyAyNi44IDkwLjcgNzcuNiAwIDU5LjEtNTcuMSA4Ni41LTExMiA4Ni41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NC4xMiAzMTUuMWMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZTMCAzNDEgMCAzMTUuMWMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZoNDcuMDZ2NDcuMDZ6bTIzLjcyIDBjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2czQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2djExNy44NGMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZzLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2VjMxNS4xem00Ny4wNi0xODguOThjLTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlMxMzkgMzIgMTY0LjkgMzJzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ2NDcuMDZIMTY0Ljl6bTAgMjMuNzJjMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2cy0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNkg0Ny4wNkMyMS4xNiAyNDMuOTYgMCAyMjIuOCAwIDE5Ni45czIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2SDE2NC45em0xODguOTggNDcuMDZjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2IDI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnMtMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZoLTQ3LjA2VjE5Ni45em0tMjMuNzIgMGMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDYtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2Vjc5LjA2YzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNiAyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZWMTk2Ljl6TTI4My4xIDM4NS44OGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDYgMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2LTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNnYtNDcuMDZoNDcuMDZ6bTAtMjMuNzJjLTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNiAwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZoMTE3Ljg0YzI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNiAwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZIMjgzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsaWRlc2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg3LjcgMTUzLjdjLTM0IDAtNjEuNyAyNS43LTYxLjcgNTcuNyAwIDMxLjcgMjcuNyA1Ny43IDYxLjcgNTcuN3M2MS43LTI2IDYxLjctNTcuN2MwLTMyLTI3LjctNTcuNy02MS43LTU3Ljd6bTE0My40IDBjLTM0IDAtNjEuNyAyNS43LTYxLjcgNTcuNyAwIDMxLjcgMjcuNyA1Ny43IDYxLjcgNTcuNyAzNC4zIDAgNjEuNy0yNiA2MS43LTU3LjcuMS0zMi0yNy40LTU3LjctNjEuNy01Ny43em0xNTYuNiA5MGwtNiA0LjNWNDkuN2MwLTI3LjQtMjAuNi00OS43LTQ2LTQ5LjdINzYuNmMtMjUuNCAwLTQ2IDIyLjMtNDYgNDkuN1YyNDhjLTItMS40LTQuMy0yLjktNi4zLTQuMy0xNS4xLTEwLjYtMjUuMSA0LTE2IDE3LjcgMTguMyAyMi42IDUzLjEgNTAuMyAxMDYuMyA3MkM1OC4zIDUyNS4xIDI1MiA1NTUuNyAyNDguOSA0NTcuNWMwLS43LjMtNTYuNi4zLTk2LjYgNS4xIDEuMSA5LjQgMi4zIDEzLjcgMy4xIDAgMzkuNy4zIDkyLjguMyA5My41LTMuMSA5OC4zIDE5MC42IDY3LjcgMTM0LjMtMTI0IDUzLjEtMjEuNyA4OC00OS40IDEwNi4zLTcyIDkuMS0xMy44LS45LTI4LjMtMTYuMS0xNy44em0tMzAuNSAxOS4yYy02OC45IDM3LjQtMTI4LjMgMzEuMS0xNjAuNiAyOS43LTIzLjctLjktMzIuNiA5LjEtMzMuNyAyNC45LTEwLjMtNy43LTE4LjYtMTUuNS0yMC4zLTE3LjEtNS4xLTUuNC0xMy43LTgtMjcuMS03LjctMzEuNyAxLjEtODkuNyA3LjQtMTU3LjQtMjhWNzIuM2MwLTM0LjkgOC45LTQ1LjcgNDAuNi00NS43aDMxNy43YzMwLjMgMCA0MC45IDEyLjkgNDAuOSA0NS43djE5MC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbmFwY2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYuOTI2LDM2Ni42Yy0zLjM3My05LjE3Ni05LjgtMTQuMDg2LTE3LjExMi0xOC4xNTMtMS4zNzYtLjgwNi0yLjY0MS0xLjQ1MS0zLjcyLTEuOTQ3LTIuMTgyLTEuMTI4LTQuNDE0LTIuMjItNi42MzQtMy4zNzMtMjIuOC0xMi4wOS00MC42MDktMjcuMzQxLTUyLjk1OS00NS40MmExMDIuODg5LDEwMi44ODksMCwwLDEtOS4wODktMTYuMTJjLTEuMDU0LTMuMDEzLTEtNC43MjQtLjI0OC02LjI4N2ExMC4yMjEsMTAuMjIxLDAsMCwxLDIuOTE0LTMuMDM4YzMuOTE4LTIuNTkxLDcuOTYtNS4yMiwxMC43LTYuOTkzLDQuODg1LTMuMTYyLDguNzU0LTUuNjY3LDExLjI0Ni03LjQ0LDkuMzYyLTYuNTQ3LDE1LjkwOS0xMy41LDIwLTIxLjI3OGE0Mi4zNzEsNDIuMzcxLDAsMCwwLDIuMS0zNS4xOTFjLTYuMi0xNi4zMTgtMjEuNjEzLTI2LjQ0OS00MC4yODctMjYuNDQ5YTU1LjU0Myw1NS41NDMsMCwwLDAtMTEuNzE4LDEuMjRjLTEuMDI5LjIyNC0yLjA1OS40NTktMy4wNjMuNzIuMTc0LTExLjE2LS4wNzQtMjIuOTQtMS4wNjYtMzQuNTM0LTMuNTIyLTQwLjc1OC0xNy43OTQtNjIuMTIzLTMyLjY3NC03OS4xNkExMzAuMTY3LDEzMC4xNjcsMCwwLDAsMzMyLjEsMzYuNDQzQzMwOS41MTUsMjMuNTQ3LDI4My45MSwxNywyNTYsMTdTMjAyLjYsMjMuNTQ3LDE4MCwzNi40NDNhMTI5LjczNSwxMjkuNzM1LDAsMCwwLTMzLjI4MSwyNi43ODNjLTE0Ljg4LDE3LjAzOC0yOS4xNTIsMzguNDQtMzIuNjczLDc5LjE2MS0uOTkyLDExLjU5NC0xLjI0LDIzLjQzNS0xLjA3OSwzNC41MzMtMS0uMjYtMi4wMjEtLjUtMy4wNTEtLjcxOWE1NS40NjEsNTUuNDYxLDAsMCwwLTExLjcxNy0xLjI0Yy0xOC42ODcsMC0zNC4xMjUsMTAuMTMxLTQwLjMsMjYuNDQ5YTQyLjQyMyw0Mi40MjMsMCwwLDAsMi4wNDYsMzUuMjI4YzQuMTA1LDcuNzc0LDEwLjY1MiwxNC43MzEsMjAuMDE0LDIxLjI3OCwyLjQ4LDEuNzM2LDYuMzYxLDQuMjQsMTEuMjQ2LDcuNDQsMi42NDEsMS43MTEsNi41LDQuMjE2LDEwLjI4LDYuNzJhMTEuMDU0LDExLjA1NCwwLDAsMSwzLjMsMy4zMTFjLjc5NCwxLjYyNC44MTgsMy4zNzMtLjM2LDYuNmExMDIuMDIsMTAyLjAyLDAsMCwxLTguOTQsMTUuNzg1Yy0xMi4wNzcsMTcuNjY5LTI5LjM2MywzMi42NDgtNTEuNDM0LDQ0LjYzOUMzMi4zNTUsMzQ4LjYwOCwyMC4yLDM1Mi43NSwxNS4wNjksMzY2LjdjLTMuODY4LDEwLjUyOC0xLjMzOSwyMi41MDYsOC40OTQsMzIuNmE0OS4xMzcsNDkuMTM3LDAsMCwwLDEyLjQsOS4zODcsMTM0LjMzNywxMzQuMzM3LDAsMCwwLDMwLjM0MiwxMi4xMzksMjAuMDI0LDIwLjAyNCwwLDAsMSw2LjEyNiwyLjc0MWMzLjU4MywzLjEzNywzLjA3NSw3Ljg2MSw3Ljg0OSwxNC43OGEzNC40NjgsMzQuNDY4LDAsMCwwLDguOTc3LDkuMTI3YzEwLjAxOSw2LjkxOSwyMS4yNzgsNy4zNTMsMzMuMjA3LDcuODExLDEwLjc3Ni40MSwyMi45ODkuODgxLDM2LjkzOSw1LjQ4MSw1Ljc3OCwxLjkxLDExLjc4LDUuNjA1LDE4LjczNiw5LjkyQzE5NC44NDIsNDgwLjk1MSwyMTcuNzA3LDQ5NSwyNTUuOTczLDQ5NXM2MS4yOTItMTQuMTIzLDc4LjExOC0yNC40MjhjNi45MDctNC4yNCwxMi44NzItNy45LDE4LjQ4OS05Ljc1OCwxMy45NDktNC42MTMsMjYuMTYzLTUuMDcyLDM2LjkzOS01LjQ4MSwxMS45MjgtLjQ1OSwyMy4xODctLjg5MywzMy4yMDYtNy44MTJhMzQuNTg0LDM0LjU4NCwwLDAsMCwxMC4yMTgtMTEuMTZjMy40MzQtNS44NCwzLjM0OC05LjkxOSw2LjU3Mi0xMi43NzFhMTguOTcxLDE4Ljk3MSwwLDAsMSw1Ljc1My0yLjYyOUExMzQuODkzLDEzNC44OTMsMCwwLDAsNDc2LjAyLDQwOC43MWE0OC4zNDQsNDguMzQ0LDAsMCwwLDEzLjAxOS0xMC4xOTNsLjEyNC0uMTQ5QzQ5OC4zODksMzg4LjUsNTAwLjcwOCwzNzYuODY3LDQ5Ni45MjYsMzY2LjZabS0zNC4wMTMsMTguMjc3Yy0yMC43NDUsMTEuNDU4LTM0LjUzMywxMC4yMy00NS4yNTksMTcuMTM3LTkuMTE0LDUuODY1LTMuNzIsMTguNTEzLTEwLjM0MiwyMy4wNzYtOC4xMzQsNS42MTctMzIuMTc3LS40LTYzLjIzOSw5Ljg1OC0yNS42MTgsOC40NjktNDEuOTYxLDMyLjgyMi04OC4wMzgsMzIuODIycy02Mi4wMzYtMjQuMy04OC4wNzYtMzIuODg0Yy0zMS0xMC4yNTUtNTUuMDkyLTQuMjQxLTYzLjIzOS05Ljg1OC02LjYwOS00LjU2My0xLjI0LTE3LjIxMS0xMC4zNDEtMjMuMDc2LTEwLjczOS02LjkwNy0yNC41MjctNS42NzktNDUuMjYtMTcuMDc1LTEzLjIwNi03LjI5MS01LjcxNi0xMS44LTEuMzE0LTEzLjkzNyw3NS4xNDMtMzYuMzgxLDg3LjEzMy05Mi41NTIsODcuNjY2LTk2LjcxOS42NDUtNS4wNDYsMS4zNjQtOS4wMTQtNC4xOTEtMTQuMTQ4LTUuMzY5LTQuOTYtMjkuMTg5LTE5LjctMzUuOC0yNC4zMTYtMTAuOTM3LTcuNjM4LTE1Ljc0OC0xNS4yNjQtMTIuMi0yNC42MzgsMi40OC02LjQ4NSw4LjUzMS04LjkyOCwxNC44NzktOC45MjhhMjcuNjQzLDI3LjY0MywwLDAsMSw1Ljk2NS42N2MxMiwyLjYsMjMuNjU5LDguNjE3LDMwLjM5MiwxMC4yNDJhMTAuNzQ5LDEwLjc0OSwwLDAsMCwyLjQ4LjMzNWMzLjYsMCw0Ljg2LTEuODExLDQuNjEyLTUuOTI3LS43NjgtMTMuMTMyLTIuNjI4LTM4LjcyNS0uNTU4LTYyLjY0NCwyLjg0LTMyLjkwOSwxMy40NDItNDkuMjE1LDI2LjA0LTYzLjYzNiw2LjA1MS02LjkzMiwzNC40ODQtMzYuOTc2LDg4Ljg1Ny0zNi45NzZzODIuODgsMjkuOTIsODguOTMxLDM2LjgyN2MxMi42MTEsMTQuNDIxLDIzLjIyNSwzMC43MjcsMjYuMDQsNjMuNjM2LDIuMDcxLDIzLjkxOS4yODUsNDkuNTI1LS41NTgsNjIuNjQ0LS4yODUsNC4zMjcsMS4wMTcsNS45MjcsNC42MTMsNS45MjdhMTAuNjQ4LDEwLjY0OCwwLDAsMCwyLjQ4LS4zMzVjNi43NDUtMS42MjQsMTguNC03LjYzOCwzMC40LTEwLjI0MmEyNy42NDEsMjcuNjQxLDAsMCwxLDUuOTY0LS42N2M2LjM4NiwwLDEyLjQsMi40OCwxNC44OCw4LjkyOCwzLjU0Niw5LjM3NC0xLjI0LDE3LTEyLjE4OSwyNC42MzktNi42MDksNC42MTItMzAuNDI5LDE5LjM0My0zNS44LDI0LjMxNS01LjU2OCw1LjEzNC00LjgzNiw5LjEtNC4xOTEsMTQuMTQ5LjUzMyw0LjIyOCwxMi41MTEsNjAuNCw4Ny42NjYsOTYuNzE4QzQ2OC42MjksMzczLjAxMSw0NzYuMTE5LDM3Ny41MjQsNDYyLjkxMywzODQuODc3WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3VuZGNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMS40IDI1Ni4zbDUuOCA2NS01LjggNjguM2MtLjMgMi41LTIuMiA0LjQtNC40IDQuNHMtNC4yLTEuOS00LjItNC40bC01LjYtNjguMyA1LjYtNjVjMC0yLjIgMS45LTQuMiA0LjItNC4yIDIuMiAwIDQuMSAyIDQuNCA0LjJ6bTIxLjQtNDUuNmMtMi44IDAtNC43IDIuMi01IDVsLTUgMTA1LjYgNSA2OC4zYy4zIDIuOCAyLjIgNSA1IDUgMi41IDAgNC43LTIuMiA0LjctNWw1LjgtNjguMy01LjgtMTA1LjZjMC0yLjgtMi4yLTUtNC43LTV6bTI1LjUtMjQuMWMtMy4xIDAtNS4zIDIuMi01LjYgNS4zbC00LjQgMTMwIDQuNCA2Ny44Yy4zIDMuMSAyLjUgNS4zIDUuNiA1LjMgMi44IDAgNS4zLTIuMiA1LjMtNS4zbDUuMy02Ny44LTUuMy0xMzBjMC0zLjEtMi41LTUuMy01LjMtNS4zek03LjIgMjgzLjJjLTEuNCAwLTIuMiAxLjEtMi41IDIuNUwwIDMyMS4zbDQuNyAzNWMuMyAxLjQgMS4xIDIuNSAyLjUgMi41czIuMi0xLjEgMi41LTIuNWw1LjYtMzUtNS42LTM1LjZjLS4zLTEuNC0xLjEtMi41LTIuNS0yLjV6bTIzLjYtMjEuOWMtMS40IDAtMi41IDEuMS0yLjUgMi41bC02LjQgNTcuNSA2LjQgNTYuMWMwIDEuNyAxLjEgMi44IDIuNSAyLjhzMi41LTEuMSAyLjgtMi41bDcuMi01Ni40LTcuMi01Ny41Yy0uMy0xLjQtMS40LTIuNS0yLjgtMi41em0yNS4zLTExLjRjLTEuNyAwLTMuMSAxLjQtMy4zIDMuM0w0NyAzMjEuM2w1LjggNjUuOGMuMyAxLjcgMS43IDMuMSAzLjMgMy4xIDEuNyAwIDMuMS0xLjQgMy4xLTMuMWw2LjktNjUuOC02LjktNjguMWMwLTEuOS0xLjQtMy4zLTMuMS0zLjN6bTI1LjMtMi4yYy0xLjkgMC0zLjYgMS40LTMuNiAzLjZsLTUuOCA3MCA1LjggNjcuOGMwIDIuMiAxLjcgMy42IDMuNiAzLjZzMy42LTEuNCAzLjktMy42bDYuNC02Ny44LTYuNC03MGMtLjMtMi4yLTItMy42LTMuOS0zLjZ6bTI0MS40LTExMC45Yy0xLjEtLjgtMi44LTEuNC00LjItMS40LTIuMiAwLTQuMi44LTUuNiAxLjktMS45IDEuNy0zLjEgNC4yLTMuMyA2Ljd2LjhsLTMuMyAxNzYuNyAxLjcgMzIuNSAxLjcgMzEuN2MuMyA0LjcgNC4yIDguNiA4LjkgOC42czguNi0zLjkgOC42LTguNmwzLjktNjQuMi0zLjktMTc3LjVjLS40LTMtMi01LjgtNC41LTcuMnptLTI2LjcgMTUuM2MtMS40LS44LTIuOC0xLjQtNC40LTEuNHMtMy4xLjYtNC40IDEuNGMtMi4yIDEuNC0zLjYgMy45LTMuNiA2LjdsLS4zIDEuNy0yLjggMTYwLjhzMCAuMyAzLjEgNjUuNnYuM2MwIDEuNy42IDMuMyAxLjcgNC43IDEuNyAxLjkgMy45IDMuMSA2LjQgMy4xIDIuMiAwIDQuMi0xLjEgNS42LTIuNSAxLjctMS40IDIuNS0zLjMgMi41LTUuNmwuMy02LjcgMy4xLTU4LjYtMy4zLTE2Mi44Yy0uMy0yLjgtMS43LTUuMy0zLjktNi43em0tMTExLjQgMjIuNWMtMy4xIDAtNS44IDIuOC01LjggNi4xbC00LjQgMTQwLjYgNC40IDY3LjJjLjMgMy4zIDIuOCA1LjggNS44IDUuOCAzLjMgMCA1LjgtMi41IDYuMS01LjhsNS02Ny4yLTUtMTQwLjZjLS4yLTMuMy0yLjctNi4xLTYuMS02LjF6bTM3Ni43IDYyLjhjLTEwLjggMC0yMS4xIDIuMi0zMC42IDYuMS02LjQtNzAuOC02NS44LTEyNi40LTEzOC4zLTEyNi40LTE3LjggMC0zNSAzLjMtNTAuMyA5LjQtNi4xIDIuMi03LjggNC40LTcuOCA5LjJ2MjQ5LjdjMCA1IDMuOSA4LjYgOC42IDkuMmgyMTguM2M0My4zIDAgNzguNi0zNSA3OC42LTc4LjMuMS00My42LTM1LjItNzguOS03OC41LTc4Ljl6bS0yOTYuNy02MC4zYy00LjIgMC03LjUgMy4zLTcuOCA3LjhsLTMuMyAxMzYuNyAzLjMgNjUuNmMuMyA0LjIgMy42IDcuNSA3LjggNy41IDQuMiAwIDcuNS0zLjMgNy41LTcuNWwzLjktNjUuNi0zLjktMTM2LjdjLS4zLTQuNS0zLjMtNy44LTcuNS03Ljh6bS01My42LTcuOGMtMy4zIDAtNi40IDMuMS02LjQgNi43bC0zLjkgMTQ1LjMgMy45IDY2LjljLjMgMy42IDMuMSA2LjQgNi40IDYuNCAzLjYgMCA2LjQtMi44IDYuNy02LjRsNC40LTY2LjktNC40LTE0NS4zYy0uMy0zLjYtMy4xLTYuNy02LjctNi43em0yNi43IDMuNGMtMy45IDAtNi45IDMuMS02LjkgNi45TDIyNyAzMjEuM2wzLjkgNjYuNGMuMyAzLjkgMy4xIDYuOSA2LjkgNi45czYuOS0zLjEgNi45LTYuOWw0LjItNjYuNC00LjItMTQxLjdjMC0zLjktMy02LjktNi45LTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU291cmNldHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjcuMiAyMDNjMC0xMTIuMS05MC45LTIwMy0yMDMtMjAzQzExMi4xLS4yIDIxLjIgOTAuNiAyMSAyMDIuNkEyMDIuODYgMjAyLjg2IDAgMCAwIDE2MS41IDM5NnYxMDEuN2ExNC4zIDE0LjMgMCAwIDAgMTQuMyAxNC4zaDk2LjRhMTQuMyAxNC4zIDAgMCAwIDE0LjMtMTQuM1YzOTYuMUEyMDMuMTggMjAzLjE4IDAgMCAwIDQyNy4yIDIwM3ptLTI3MS42IDBjMC05MC44IDEzNy4zLTkwLjggMTM3LjMgMC0uMSA4OS45LTEzNy4zIDkxLTEzNy4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwYWNlQXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyNTZIMTI4VjUxMkgwVjM1MkgzMlYzMjBINjRWMjg4SDk2VjI1NnpNNTEyIDM1MlY1MTJIMzg0VjI1Nkg0MTZWMjg4SDQ0OFYzMjBINDgwVjM1Mkg1MTJ6TTMyMCA2NEgzNTJWNDQ4SDMyMFY0MTZIMTkyVjQ0OEgxNjBWNjRIMTkyVjMySDIyNFYwSDI4OFYzMkgzMjBWNjR6TTI4OCAxMjhIMjI0VjE5MkgyODhWMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGVha2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDM5MS43OEMtMTUuNDEgMzAzLjU5LTggMTY3LjQyIDgwLjY0IDg3LjY0czIyNC44LTczIDMwNC4yMSAxNS4yNCA3MiAyMjQuMzYtMTYuNjQgMzA0LjE0Yy0xOC43NCAxNi44NyA2NCA0My4wOSA0MiA1Mi4yNi04Mi4wNiAzNC4yMS0yNTMuOTEgMzUtMzQ2LjIzLTY3LjV6bTIxMy4zMS0yMTEuNmwzOC41LTQwLjg2Yy05LjYxLTguODktMzItMjYuODMtNzYuMTctMjcuNi01Mi4zMy0uOTEtOTUuODYgMjguMy05Ni43NyA4MC0uMiAxMS4zMy4yOSAzNi43MiAyOS40MiA1NC44MyAzNC40NiAyMS40MiA4Ni41MiAyMS41MSA4NiA1Mi4yNi0uMzcgMjEuMjgtMjYuNDIgMjUuODEtMzguNTkgMjUuNi0zLS4wNS0zMC4yMy0uNDYtNDcuNjEtMjQuNjJsLTQwIDQyLjYxYzI4LjE2IDI3IDU5IDMyLjYyIDgzLjQ5IDMzLjA1IDEwLjIzLjE4IDk2LjQyLjMzIDk3Ljg0LTgxIC4yOC0xNS44MS0yLjA3LTM5LjcyLTI4Ljg2LTU2LjU5LTM0LjM2LTIxLjY0LTg1LTE5LjQ1LTg0LjQzLTQ5Ljc1LjQxLTIzLjI1IDMxLTI1LjM3IDM3LjUzLTI1LjI2LjQzIDAgMjYuNjIuMjYgMzkuNjIgMTcuMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwZWFrZXJEZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMy44NiAyOTZIMTAwYTEwMCAxMDAgMCAwIDEgMC0yMDBoMTMyLjg0YTQwIDQwIDAgMCAxIDAgODBIOThjLTI2LjQ3IDAtMjYuNDUgNDAgMCA0MGgxMTMuODJhMTAwIDEwMCAwIDAgMSAwIDIwMEg0MGE0MCA0MCAwIDAgMSAwLTgwaDE3My44NmMyNi40OCAwIDI2LjQ2LTQwIDAtNDB6TTI5OCA0MTZhMTIwLjIxIDEyMC4yMSAwIDAgMCA1MS4xMS04MGg2NC41NWExOS44MyAxOS44MyAwIDAgMCAxOS42Ni0yMFYxOTZhMTkuODMgMTkuODMgMCAwIDAtMTkuNjYtMjBIMjk2LjQyYTYwLjc3IDYwLjc3IDAgMCAwIDAtODBoMTM2LjkzYzQzLjQ0IDAgNzguNjUgMzUuODIgNzguNjUgODB2MTYwYzAgNDQuMTgtMzUuMjEgODAtNzguNjUgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwb3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjEgOCAwIDExOS4xIDAgMjU2czExMS4xIDI0OCAyNDggMjQ4IDI0OC0xMTEuMSAyNDgtMjQ4UzM4NC45IDggMjQ4IDh6bTEwMC43IDM2NC45Yy00LjIgMC02LjgtMS4zLTEwLjctMy42LTYyLjQtMzcuNi0xMzUtMzkuMi0yMDYuNy0yNC41LTMuOSAxLTkgMi42LTExLjkgMi42LTkuNyAwLTE1LjgtNy43LTE1LjgtMTUuOCAwLTEwLjMgNi4xLTE1LjIgMTMuNi0xNi44IDgxLjktMTguMSAxNjUuNi0xNi41IDIzNyAyNi4yIDYuMSAzLjkgOS43IDcuNCA5LjcgMTYuNXMtNy4xIDE1LjQtMTUuMiAxNS40em0yNi45LTY1LjZjLTUuMiAwLTguNy0yLjMtMTIuMy00LjItNjIuNS0zNy0xNTUuNy01MS45LTIzOC42LTI5LjQtNC44IDEuMy03LjQgMi42LTExLjkgMi42LTEwLjcgMC0xOS40LTguNy0xOS40LTE5LjRzNS4yLTE3LjggMTUuNS0yMC43YzI3LjgtNy44IDU2LjItMTMuNiA5Ny44LTEzLjYgNjQuOSAwIDEyNy42IDE2LjEgMTc3IDQ1LjUgOC4xIDQuOCAxMS4zIDExIDExLjMgMTkuNy0uMSAxMC44LTguNSAxOS41LTE5LjQgMTkuNXptMzEtNzYuMmMtNS4yIDAtOC40LTEuMy0xMi45LTMuOS03MS4yLTQyLjUtMTk4LjUtNTIuNy0yODAuOS0yOS43LTMuNiAxLTguMSAyLjYtMTIuOSAyLjYtMTMuMiAwLTIzLjMtMTAuMy0yMy4zLTIzLjYgMC0xMy42IDguNC0yMS4zIDE3LjQtMjMuOSAzNS4yLTEwLjMgNzQuNi0xNS4yIDExNy41LTE1LjIgNzMgMCAxNDkuNSAxNS4yIDIwNS40IDQ3LjggNy44IDQuNSAxMi45IDEwLjcgMTIuOSAyMi42IDAgMTMuNi0xMSAyMy4zLTIzLjIgMjMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQmVoYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTUuMyAzMTguNGMxNy4yIDAgMzEuMi02LjEgMzEuMi0yNS40YzAtMTkuNy0xMS43LTI3LjQtMzAuMy0yNy41aC00NnY1Mi45aDQ1LjF6bS01LjQtMTI5LjZIMTEwLjN2NDQuOEgxNTNjMTUuMSAwIDI1LjgtNi42IDI1LjgtMjIuOWMwLTE3LjctMTMuNy0yMS45LTI4LjktMjEuOXptMTI5LjUgNzQuOGg2Mi4yYy0xLjctMTguNS0xMS4zLTI5LjctMzAuNS0yOS43Yy0xOC4zIDAtMzAuNSAxMS40LTMxLjcgMjkuN3pNMzg0IDMySDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NHpNMzQ5LjUgMTg1SDI3MS43VjE2Ni4xaDc3LjhWMTg1ek0xOTMuNyAyNDMuN2MyMy42IDYuNyAzNSAyNy41IDM1IDUxLjZjMCAzOS0zMi43IDU1LjctNjcuNiA1NS45SDY4di0xOTJoOTAuNWMzMi45IDAgNjEuNCA5LjMgNjEuNCA0Ny41YzAgMTkuMy05IDI4LjgtMjYuMiAzN3ptMTE4LjctMzguNmM0My41IDAgNjcuNiAzNC4zIDY3LjYgNzUuNGMwIDEuNi0uMSAzLjMtLjIgNWMwIC44LS4xIDEuNS0uMSAyLjJIMjc5LjVjMCAyMi4yIDExLjcgMzUuMyAzNC4xIDM1LjNjMTEuNiAwIDI2LjUtNi4yIDMwLjItMTguMWgzMy43Yy0xMC40IDMxLjktMzEuOSA0Ni44LTY1LjEgNDYuOGMtNDMuOCAwLTcxLjEtMjkuNy03MS4xLTczYzAtNDEuOCAyOC43LTczLjYgNzEuMS03My42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVEcmliYmJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUuOSAxMzIuNWMtMzguMyAxOC02Ni44IDUzLjMtNzUuNyA5NS43YzYuMSAuMSA2Mi40IC4zIDEyNi40LTE2LjdjLTIyLjctNDAuMi00Ny4xLTc0LjEtNTAuNy03OXptMjYuMS05LjFjMy44IDUuMSAyOC42IDM4LjkgNTEgODBjNDguNi0xOC4zIDY5LjEtNDUuOSA3MS42LTQ5LjRDMjgxIDEyNC4yIDIzNS4zIDExMi45IDE5MiAxMjMuNHpNMjc3LjQgMzgyYy0yLTEyLTEwLTUzLjgtMjkuMi0xMDMuNmMtNTUuMSAxOC44LTkzLjggNTYuNC0xMDguMSA4NS42YzQwLjUgMzEuNiA5My4zIDM2LjcgMTM3LjMgMTh6TTIyNy44IDIzMi42QzE1OS42IDI1MyA5My40IDI1Mi4yIDg3LjQgMjUyYzAgLjcgMCAxLjQgMCAyLjFzMCAxLjQgMCAyLjFjMCAzNS4xIDEzLjMgNjcuMSAzNS4xIDkxLjRjMjIuMi0zNy45IDY3LjEtNzcuOSAxMTYuNS05MS44Yy0zLjQtNy44LTcuMi0xNS41LTExLjEtMjMuMnptNzIuNSAxMzYuOWMzMC43LTIwLjcgNTIuNS01My42IDU4LjYtOTEuNmMtNC42LTEuNS00Mi4zLTEyLjctODUuMS01LjhjMTcuOSA0OS4xIDI1LjEgODkuMSAyNi41IDk3LjR6bS0zNC44LTExOWM0NS41LTUuNyA5MC43IDMuNCA5NS4yIDQuNGMtLjMtMzIuMy0xMS44LTYxLjktMzAuOS04NS4xYy0yLjkgMy45LTI1LjggMzMuMi03Ni4zIDUzLjljNC44IDkuOCA4LjMgMTcuOCAxMiAyNi44ek0zODQgMzJINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0ek0yMjQgNDE2YTE2MCAxNjAgMCAxIDEgMC0zMjAgMTYwIDE2MCAwIDEgMSAwIDMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlRmFjZWJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTguMlYzMzQuMkgxMDkuNFYyNTZoNTIuOFYyMjIuM2MwLTg3LjEgMzkuNC0xMjcuNSAxMjUtMTI3LjVjMTYuMiAwIDQ0LjIgMy4yIDU1LjcgNi40VjE3MmMtNi0uNi0xNi41LTEtMjkuNi0xYy00MiAwLTU4LjIgMTUuOS01OC4yIDU3LjJWMjU2aDgzLjZsLTE0LjQgNzguMkgyNTVWNDgwSDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlRm9udEF3ZXNvbWVTdHJva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRDNDYuMyA2NCAzMiA3OC4zIDMyIDk2bDAgMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyMCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDY0IDY0ek0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnptMTU0IDU4YzAgOS4zLTQuOCAxNy40LTEyLjEgMjJsMTg4LjkgMGM3LjMgMCAxMy4yIDUuOSAxMy4yIDEzLjJjMCAxLjgtLjQgMy43LTEuMSA1LjRMMzEyIDI2NGwzMC45IDY5LjRjLjggMS43IDEuMSAzLjUgMS4xIDUuNGMwIDcuMy01LjkgMTMuMi0xMy4yIDEzLjJMMTQ0IDM1MmwwIDMyLTMyIDAgMC0zMiAwLTE3NiAwLTEuNWMtNi4xLTQuOC0xMC0xMi4yLTEwLTIwLjVjMC0xNC40IDExLjYtMjYgMjYtMjZzMjYgMTEuNiAyNiAyNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlRm9udEF3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptOTAgMTIyYzAgOS4zLTQuOCAxNy40LTEyLjEgMjJsMTg4LjkgMGM3LjMgMCAxMy4yIDUuOSAxMy4yIDEzLjJjMCAxLjgtLjQgMy43LTEuMSA1LjRMMzEyIDI2NGwzMC45IDY5LjRjLjcgMS43IDEuMSAzLjUgMS4xIDUuNGMwIDcuMy01LjkgMTMuMi0xMy4yIDEzLjJMMTQ0IDM1MmwwIDMyLTMyIDAgMC0zMiAwLTE3NiAwLTEuNWMtNi4xLTQuOC0xMC0xMi4yLTEwLTIwLjVjMC0xNC40IDExLjYtMjYgMjYtMjZzMjYgMTEuNiAyNiAyNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlR2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMC44IDMzNS41Yy01LjktLjQtMTIuNi0uOC0yMC4yLTEuM2MtMy4zIDQuMS02LjYgOC40LTYuNiAxMy41YzAgMTguNSA2NS41IDE4LjUgNjUuNS0xLjVjMC04LjMtNy40LTguNy0zOC44LTEwLjd6bTcuOC0xMTcuOWMtMzIuMyAwLTMzLjcgNDQuNS0uNyA0NC41YzMyLjUgMCAzMS43LTQ0LjUgLjctNDQuNXpNMzg0IDMySDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NHpNMjQzLjkgMTcyLjJjLTE0LjUgMC0yMi45LTguNC0yMi45LTIyLjljMC0xNC41IDguNC0yMi4zIDIyLjktMjIuM2MxNC43IDAgMjMuMSA3LjggMjMuMSAyMi4zcy04LjQgMjIuOS0yMy4xIDIyLjl6TTE0OS42IDE5NWg0OS41bDAgMjEuNi0yMy40IDEuOGM0LjYgNS44IDkuNCAxNCA5LjQgMjUuN2MwIDQ4LjctNTcuMiA0Ny4yLTc0LjIgNDIuNGwtOC40IDEzLjRjNSAuMyA5LjggLjYgMTQuMyAuOGM1Ni4zIDMuMiA4MC41IDQuNiA4MC41IDM4LjVjMCAyOS4yLTI1LjcgNDUuNy02OS45IDQ1LjdjLTQ2IDAtNjMuNS0xMS42LTYzLjUtMzEuN2MwLTExLjQgNS4xLTE3LjUgMTQtMjUuOWMtOC40LTMuNS0xMS4yLTkuOS0xMS4yLTE2LjhjMC05LjYgNy40LTE2LjMgMjMtMzAuNmwuMi0uMmMtMTIuNC02LjEtMjEuOC0xOS4zLTIxLjgtMzguMWMwLTUxLjYgNTYuNi01My4zIDgxLjYtNDYuOHpNMjcwLjUgMzAzLjFsMTMgMS44IDAgMjAuMUgyMTEuMVYzMDQuOWMyLjctLjQgNS0uNyA2LjktLjljOS45LTEuMiAxMC4xLTEuMyAxMC4xLTZWMjIzLjNjMC00LjQtLjktNC43LTEwLjEtNy44Yy0xLjktLjctNC4yLTEuNC02LjktMi40bDIuOC0yMC42aDUyLjZWMjk4YzAgNC4xIC4yIDQuNiA0LjEgNS4xem0xMDYuNi0xMC40TDM4NCAzMTVjLTEwLjkgNS40LTI2LjkgMTAuMi00MS40IDEwLjJjLTMwLjIgMC00MS43LTEyLjItNDEuNy00MC45VjIxNy43YzAtLjggMC0xLjQtLjItMS44Yy0uOC0xLjItNC4yLS43LTE5LjYtLjdWMTkyLjZjMjIuMy0yLjUgMzEuMi0xMy43IDM0LTQxLjRoMjQuMmMwIDMzLjMtLjYgMzggLjcgMzguNmMuMyAuMSAuNyAwIDEuMyAwaDM1Ljh2MjUuNEgzMzkuM3Y2MC43YzAgLjIgMCAuNSAwIC45Yy0uMiA2LjMtLjkgMzAuNCAzNy45IDE1Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUdpdGh1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0yNjUuOCA0MDcuN2MwLTEuOCAwLTYgLjEtMTEuNmMuMS0xMS40IC4xLTI4LjggLjEtNDMuN2MwLTE1LjYtNS4yLTI1LjUtMTEuMy0zMC43YzM3LTQuMSA3Ni05LjIgNzYtNzMuMWMwLTE4LjItNi41LTI3LjMtMTcuMS0zOWMxLjctNC4zIDcuNC0yMi0xLjctNDVjLTEzLjktNC4zLTQ1LjcgMTcuOS00NS43IDE3LjljLTEzLjItMy43LTI3LjUtNS42LTQxLjYtNS42cy0yOC40IDEuOS00MS42IDUuNmMwIDAtMzEuOC0yMi4yLTQ1LjctMTcuOWMtOS4xIDIyLjktMy41IDQwLjYtMS43IDQ1Yy0xMC42IDExLjctMTUuNiAyMC44LTE1LjYgMzljMCA2My42IDM3LjMgNjkgNzQuMyA3My4xYy00LjggNC4zLTkuMSAxMS43LTEwLjYgMjIuM2MtOS41IDQuMy0zMy44IDExLjctNDguMy0xMy45Yy05LjEtMTUuOC0yNS41LTE3LjEtMjUuNS0xNy4xYy0xNi4yLS4yLTEuMSAxMC4yLTEuMSAxMC4yYzEwLjggNSAxOC40IDI0LjIgMTguNCAyNC4yYzkuNyAyOS43IDU2LjEgMTkuNyA1Ni4xIDE5LjdjMCA5IC4xIDIxLjcgLjEgMzAuNmMwIDQuOCAuMSA4LjYgLjEgMTBjMCA0LjMtMyA5LjUtMTEuNSA4QzEwNiAzOTMuNiA1OS44IDMzMC44IDU5LjggMjU3LjRjMC05MS44IDcwLjItMTYxLjUgMTYyLTE2MS41czE2Ni4yIDY5LjcgMTY2LjIgMTYxLjVjLjEgNzMuNC00NC43IDEzNi4zLTExMC43IDE1OC4zYy04LjQgMS41LTExLjUtMy43LTExLjUtOHptLTkwLjUtNTQuOGMtLjItMS41IDEuMS0yLjggMy0zLjJjMS45LS4yIDMuNyAuNiAzLjkgMS45Yy4zIDEuMy0xIDIuNi0zIDNjLTEuOSAuNC0zLjctLjQtMy45LTEuN3ptLTkuMSAzLjJjLTIuMiAuMi0zLjctLjktMy43LTIuNGMwLTEuMyAxLjUtMi40IDMuNS0yLjRjMS45LS4yIDMuNyAuOSAzLjcgMi40YzAgMS4zLTEuNSAyLjQtMy41IDIuNHptLTE0LjMtMi4yYy0xLjktLjQtMy4yLTEuOS0yLjgtMy4yczIuNC0xLjkgNC4xLTEuNWMyIC42IDMuMyAyLjEgMi44IDMuNGMtLjQgMS4zLTIuNCAxLjktNC4xIDEuM3ptLTEyLjUtNy4zYy0xLjUtMS4zLTEuOS0zLjItLjktNC4xYy45LTEuMSAyLjgtLjkgNC4zIC42YzEuMyAxLjMgMS44IDMuMyAuOSA0LjFjLS45IDEuMS0yLjggLjktNC4zLS42em0tOC41LTEwYy0xLjEtMS41LTEuMS0zLjIgMC0zLjljMS4xLS45IDIuOC0uMiAzLjcgMS4zYzEuMSAxLjUgMS4xIDMuMyAwIDQuMWMtLjkgLjYtMi42IDAtMy43LTEuNXptLTYuMy04LjhjLTEuMS0xLjMtMS4zLTIuOC0uNC0zLjVjLjktLjkgMi40LS40IDMuNSAuNmMxLjEgMS4zIDEuMyAyLjggLjQgMy41Yy0uOSAuOS0yLjQgLjQtMy41LS42em0tNi02LjRjLTEuMy0uNi0xLjktMS43LTEuNS0yLjZjLjQtLjYgMS41LS45IDIuOC0uNGMxLjMgLjcgMS45IDEuOCAxLjUgMi42Yy0uNCAuOS0xLjcgMS4xLTIuOCAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlR2l0bGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2em0zMzcuNSAxMi41bDQ0LjYgMTE2LjQgLjQgMS4yYzUuNiAxNi44IDcuMiAzNS4yIDIuMyA1Mi41Yy01IDE3LjItMTUuNCAzMi40LTI5LjggNDMuM2wtLjIgLjEtNjguNCA1MS4yLTU0LjEgNDAuOWMtLjUgLjItMS4xIC41LTEuNyAuOGMtMiAxLTQuNCAyLTYuNyAyYy0zIDAtNi44LTEuOC04LjMtMi44bC01NC4yLTQwLjlMOTMuNSAzMjIuM2wtLjQtLjMtLjItLjFjLTE0LjMtMTAuOC0yNC44LTI2LTI5LjctNDMuM3MtNC4yLTM1LjcgMi4yLTUyLjVsLjUtMS4yIDQ0LjctMTE2LjRjLjktMi4zIDIuNS00LjMgNC41LTUuNmMxLjYtMSAzLjQtMS42IDUuMi0xLjhjMS4zLS43IDIuMS0uNCAzLjQgLjFjLjYgLjIgMS4yIC41IDIgLjdjMSAuNCAxLjYgLjkgMi40IDEuNWMuNiAuNCAxLjIgMSAyLjEgMS41YzEuMiAxLjQgMi4yIDMgMi43IDQuOGwyOS4yIDkyLjJIMjg1bDMwLjItOTIuMmMuNS0xLjggMS40LTMuNCAyLjYtNC44czIuOC0yLjQgNC41LTMuMWMxLjctLjYgMy42LS45IDUuNC0uN3MzLjYgLjggNS4yIDEuOGMyIDEuMyAzLjcgMy4zIDQuNiA1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUdvb2dsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NnpNNjQgMjU2YzAtNTUuMyA0NC43LTEwMCAxMDAtMTAwYzI3IDAgNDkuNSA5LjggNjcgMjYuMmwtMjcuMSAyNi4xYy03LjQtNy4xLTIwLjMtMTUuNC0zOS44LTE1LjRjLTM0LjEgMC02MS45IDI4LjItNjEuOSA2My4yYzAgMzQuOSAyNy44IDYzLjIgNjEuOSA2My4yYzM5LjYgMCA1NC40LTI4LjUgNTYuOC00My4xSDE2NFYyNDEuOGg5NC40YzEgNSAxLjYgMTAuMSAxLjYgMTYuNmMwIDU3LjEtMzguMyA5Ny42LTk2IDk3LjZjLTU1LjMgMC0xMDAtNDQuNy0xMDAtMTAwem0yOTEgMTguMnYyOUgzMjUuOHYtMjloLTI5VjI0NWgyOVYyMTZIMzU1djI5aDI5djI5LjJIMzU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVIYWNrZXJOZXdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTIxIDIyOS4yYzAgMCAuMS0uMSAuMS0uMnMuMS0uMiAuMi0uMmMwIC4xIDAgLjMtLjEgLjRIMjF6TTIzOS4yIDM4NEgyMDcuOFYyODEuM0wxMjggMTI4aDM3LjNjNDEuNSA3Ny43IDQ4LjEgOTUuOCA1NC4xIDExMmMxLjYgNC4zIDMuMSA4LjUgNS4yIDEzLjZjMy4yLTcgNS4xLTExLjkgNy4xLTE3LjNjNS45LTE1LjMgMTIuOC0zMy4yIDUzLjUtMTA4LjNIMzIwTDIzOS4yIDI4My4xVjM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlSW5zdGFncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5NC40IDIxMS43YTUzLjMgNTMuMyAwIDEgMCA1OS4zIDg4LjcgNTMuMyA1My4zIDAgMSAwIC01OS4zLTg4Ljd6bTE0Mi4zLTY4LjRjLTUuMi01LjItMTEuNS05LjMtMTguNC0xMmMtMTguMS03LjEtNTcuNi02LjgtODMuMS02LjVjLTQuMSAwLTcuOSAuMS0xMS4yIC4xYy0zLjMgMC03LjIgMC0xMS40LS4xYy0yNS41LS4zLTY0LjgtLjctODIuOSA2LjVjLTYuOSAyLjctMTMuMSA2LjgtMTguNCAxMnMtOS4zIDExLjUtMTIgMTguNGMtNy4xIDE4LjEtNi43IDU3LjctNi41IDgzLjJjMCA0LjEgLjEgNy45IC4xIDExLjFzMCA3LS4xIDExLjFjLS4yIDI1LjUtLjYgNjUuMSA2LjUgODMuMmMyLjcgNi45IDYuOCAxMy4xIDEyIDE4LjRzMTEuNSA5LjMgMTguNCAxMmMxOC4xIDcuMSA1Ny42IDYuOCA4My4xIDYuNWM0LjEgMCA3LjktLjEgMTEuMi0uMWMzLjMgMCA3LjIgMCAxMS40IC4xYzI1LjUgLjMgNjQuOCAuNyA4Mi45LTYuNWM2LjktMi43IDEzLjEtNi44IDE4LjQtMTJzOS4zLTExLjUgMTItMTguNGM3LjItMTggNi44LTU3LjQgNi41LTgzYzAtNC4yLS4xLTguMS0uMS0xMS40czAtNy4xIC4xLTExLjRjLjMtMjUuNSAuNy02NC45LTYuNS04M2wwIDBjLTIuNy02LjktNi44LTEzLjEtMTItMTguNHptLTY3LjEgNDQuNUE4MiA4MiAwIDEgMSAxNzguNCAzMjQuMmE4MiA4MiAwIDEgMSA5MS4xLTEzNi40em0yOS4yLTEuM2MtMy4xLTIuMS01LjYtNS4xLTcuMS04LjZzLTEuOC03LjMtMS4xLTExLjFzMi42LTcuMSA1LjItOS44czYuMS00LjUgOS44LTUuMnM3LjYtLjQgMTEuMSAxLjFzNi41IDMuOSA4LjYgN3MzLjIgNi44IDMuMiAxMC42YzAgMi41LS41IDUtMS40IDcuM3MtMi40IDQuNC00LjEgNi4ycy0zLjkgMy4yLTYuMiA0LjJzLTQuOCAxLjUtNy4zIDEuNWwwIDBjLTMuOCAwLTcuNS0xLjEtMTAuNi0zLjJ6TTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTM1NyAzODljLTE4LjcgMTguNy00MS40IDI0LjYtNjcgMjUuOWMtMjYuNCAxLjUtMTA1LjYgMS41LTEzMiAwYy0yNS42LTEuMy00OC4zLTcuMi02Ny0yNS45cy0yNC42LTQxLjQtMjUuOC02N2MtMS41LTI2LjQtMS41LTEwNS42IDAtMTMyYzEuMy0yNS42IDcuMS00OC4zIDI1LjgtNjdzNDEuNS0yNC42IDY3LTI1LjhjMjYuNC0xLjUgMTA1LjYtMS41IDEzMiAwYzI1LjYgMS4zIDQ4LjMgNy4xIDY3IDI1LjhzMjQuNiA0MS40IDI1LjggNjdjMS41IDI2LjMgMS41IDEwNS40IDAgMTMxLjljLTEuMyAyNS42LTcuMSA0OC4zLTI1LjggNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUpzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTE4MC45IDQ0NC45Yy0zMy43IDAtNTMuMi0xNy40LTYzLjItMzguNUwxNTIgMzg1LjdjNi42IDExLjcgMTIuNiAyMS42IDI3LjEgMjEuNmMxMy44IDAgMjIuNi01LjQgMjIuNi0yNi41VjIzNy43aDQyLjFWMzgxLjRjMCA0My42LTI1LjYgNjMuNS02Mi45IDYzLjV6bTg1LjgtNDNMMzAxIDM4Mi4xYzkgMTQuNyAyMC44IDI1LjYgNDEuNSAyNS42YzE3LjQgMCAyOC42LTguNyAyOC42LTIwLjhjMC0xNC40LTExLjQtMTkuNS0zMC43LTI4bC0xMC41LTQuNWMtMzAuNC0xMi45LTUwLjUtMjkuMi01MC41LTYzLjVjMC0zMS42IDI0LjEtNTUuNiA2MS42LTU1LjZjMjYuOCAwIDQ2IDkuMyA1OS44IDMzLjdMMzY4IDI5MGMtNy4yLTEyLjktMTUtMTgtMjcuMS0xOGMtMTIuMyAwLTIwLjEgNy44LTIwLjEgMThjMCAxMi42IDcuOCAxNy43IDI1LjkgMjUuNmwxMC41IDQuNWMzNS44IDE1LjMgNTUuOSAzMSA1NS45IDY2LjJjMCAzNy44LTI5LjggNTguNi02OS43IDU4LjZjLTM5LjEgMC02NC40LTE4LjYtNzYuNy00M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlTGFzdGZtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTIxMC43IDI4MC44Yy0xLjgtNS41LTMuNC0xMC44LTUtMTUuOWMtMTIuOS00MS45LTIxLTY4LjQtNTgtNjguNGMtMjIuNCAwLTQ1LjEgMTYuMS00NS4xIDYxLjJjMCAzNS4yIDE4IDU3LjIgNDMuMyA1Ny4yYzI4LjYgMCA0Ny42LTIxLjMgNDcuNi0yMS4zbDExLjcgMzEuOXMtMTkuOCAxOS40LTYxLjIgMTkuNGMtNTEuMyAwLTc5LjktMzAuMS03OS45LTg1LjhjMC01Ny45IDI4LjYtOTIgODIuNS05MmM2Ny45IDAgNzkuMyAzNS4zIDk2LjQgODguNGMxLjQgNC40IDIuOSA4LjkgNC40IDEzLjVjOC44IDI2LjggMjQuMiA0Ni4yIDYxLjIgNDYuMmMyNC45IDAgMzguMS01LjUgMzguMS0xOS4xYzAtMTcuNS0xNi45LTIxLjItNDAtMjYuNGMtMy4yLS43LTYuNS0xLjQtOS45LTIuMmMtMzAuNC03LjMtNDIuNS0yMy4xLTQyLjUtNDhjMC00MCAzMi4zLTUyLjQgNjUuMi01Mi40YzM3LjQgMCA2MC4xIDEzLjYgNjMgNDYuNmwtMzYuNyA0LjRjLTEuNS0xNS44LTExLTIyLjQtMjguNi0yMi40Yy0xNi4xIDAtMjYgNy4zLTI2IDE5LjhjMCAxMSA0LjggMTcuNiAyMC45IDIxLjNjMi4yIC41IDQuNSAxIDYuNyAxLjRjMzEuMSA2LjUgNjUuMSAxMy43IDY1LjEgNTYuMWMuMSAzNi43LTMwLjcgNTAuNi03Ni4xIDUwLjZjLTYzLjQgMC04NS40LTI4LjYtOTcuMS02NC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVMZXR0ZXJib3hkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NHpNMTA1LjEgMTg3QzY2LjQgMTg3IDM1IDIxOC4zIDM1IDI1N3MzMS40IDcwIDcwLjEgNzBjMjQuOCAwIDQ2LjUtMTIuOCA1OS0zMi4ybC41LS43LS40LS42Yy02LjUtMTAuNi0xMC4yLTIzLjEtMTAuMi0zNi41YzAtMTMuNiAzLjktMjYuMyAxMC42LTM3LjFjLTEyLjQtMTkuOC0zNC40LTMyLjktNTkuNS0zMi45ek0yMjQgMTg3Yy0yNC44IDAtNDYuNSAxMi44LTU5IDMyLjJsLS41IC43IC40IC42YzYuNSAxMC42IDEwLjIgMjMuMSAxMC4yIDM2LjVjMCAxMy42LTMuOSAyNi4zLTEwLjYgMzcuMUMxNzYuOSAzMTMuOCAxOTguOSAzMjcgMjI0IDMyN2MyNC44IDAgNDYuNS0xMi44IDU5LTMyLjJsLjUtLjctLjQtLjZjLTYuNS0xMC42LTEwLjItMjMuMS0xMC4yLTM2LjVjMC0xMy42IDMuOS0yNi4zIDEwLjYtMzcuMUMyNzEuMSAyMDAuMiAyNDkuMSAxODcgMjI0IDE4N3ptMTE4LjkgMGMtMjQuOCAwLTQ2LjUgMTIuOC01OSAzMi4ybC0uNSAuNyAuNCAuNmM2LjUgMTAuNiAxMC4yIDIzLjEgMTAuMiAzNi41YzAgMTMuNi0zLjkgMjYuMy0xMC42IDM3LjFjMTIuNCAxOS44IDM0LjQgMzIuOSA1OS41IDMyLjljMzguNyAwIDcwLjEtMzEuMyA3MC4xLTcwcy0zMS40LTcwLTcwLjEtNzB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZU9kbm9rbGFzc25pa2kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNy4xYTM5LjkgMzkuOSAwIDEgMCAwIDc5LjcgMzkuOSAzOS45IDAgMSAwIDAtNzkuN3pNMzg0IDMySDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NHpNMjI0IDk1LjlBODEgODEgMCAxIDEgMjI0IDI1OGE4MSA4MSAwIDEgMSAwLTE2Mi4xem01OS4zIDE2OC4zYzE2LjgtMTMuMiAyOS41LTUuNSAzNC4xIDMuNmM3LjggMTYtMS4xIDIzLjctMjEuNSAzN2MtMTcuMSAxMC45LTQwLjcgMTUuMi01Ni4yIDE2LjhsMTMgMTIuOSA0Ny43IDQ3LjdjMTcuNCAxNy45LTExIDQ1LjgtMjguNiAyOC42Yy0xMi0xMi4yLTI5LjUtMjkuNy00Ny43LTQ3LjlsMCAwLTQ3LjcgNDcuOWMtMTcuNyAxNy4yLTQ2LTExLTI4LjQtMjguNmMzLjctMy43IDcuOS03LjkgMTIuNS0xMi41YzEwLjQtMTAuNCAyMi42LTIyLjcgMzUuMi0zNS4ybDEyLjktMTIuOWMtMTUuNC0xLjYtMzkuMy01LjctNTYuNi0xNi44Yy0yMC4zLTEzLjMtMjkuMy0yMC45LTIxLjQtMzdjNC42LTkuMSAxNy4zLTE2LjggMzQuMS0zLjZjMCAwIDIyLjcgMTggNTkuMyAxOHM1OS4zLTE4IDU5LjMtMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBpZWRQaXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0MTlMMCA0NzkuMmwuOC0zMjhDLjggODUuMyA1NCAzMiAxMjAgMzJoMzI3LjJjLTkzIDI4LjktMTg5LjkgOTQuMi0yNTMuOSAxNjguNkMxMjIuNyAyODIgODIuNiAzMzggMzIgNDE5TTQ0OCAzMlMzMDUuMiA5OC44IDI2MS42IDE5OS4xYy0yMy4yIDUzLjYtMjguOSAxMTguMS03MSAxNTguNi0yOC45IDI3LjgtNjkuOCAzOC4yLTEwNS4zIDU2LjMtMjMuMiAxMi02Ni40IDQwLjUtODQuOSA2NmgzMjguNGM2NiAwIDExOS4zLTUzLjMgMTE5LjMtMTE5LjItLjEgMC0uMS0zMjguOC0uMS0zMjguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGludGVyZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGg3Mi42bC0yLjItLjhjLTUuNC00OC4xLTMuMS01Ny41IDE1LjctMTM0LjdjMy45LTE2IDguNS0zNSAxMy45LTU3LjljMCAwLTcuMy0xNC44LTcuMy0zNi41YzAtNzAuNyA3NS41LTc4IDc1LjUtMjVjMCAxMy41LTUuNCAzMS4xLTExLjIgNDkuOGMtMy4zIDEwLjYtNi42IDIxLjUtOS4xIDMyYy01LjcgMjQuNSAxMi4zIDQ0LjQgMzYuNCA0NC40YzQzLjcgMCA3Ny4yLTQ2IDc3LjItMTEyLjRjMC01OC44LTQyLjMtOTkuOS0xMDIuNi05OS45QzE1MyAxMzkgMTEyIDE5MS40IDExMiAyNDUuNmMwIDIxLjEgOC4yIDQzLjcgMTguMyA1NmMyIDIuNCAyLjMgNC41IDEuNyA3Yy0xLjEgNC43LTMuMSAxMi45LTQuNyAxOS4yYy0xIDQtMS44IDcuMy0yLjEgOC42Yy0xLjEgNC41LTMuNSA1LjUtOC4yIDMuM2MtMzAuNi0xNC4zLTQ5LjgtNTkuMS00OS44LTk1LjFDNjcuMiAxNjcuMSAxMjMuNCA5NiAyMjkuNCA5NmM4NS4yIDAgMTUxLjQgNjAuNyAxNTEuNCAxNDEuOGMwIDg0LjYtNTMuMyAxNTIuNy0xMjcuNCAxNTIuN2MtMjQuOSAwLTQ4LjMtMTIuOS01Ni4zLTI4LjJjMCAwLTEyLjMgNDYuOS0xNS4zIDU4LjRjLTUgMTkuMy0xNy42IDQyLjktMjcuNCA1OS4zSDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUmVkZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMnpNMzA1LjkgMTY2LjRjMjAuNiAwIDM3LjMtMTYuNyAzNy4zLTM3LjNzLTE2LjctMzcuMy0zNy4zLTM3LjNjLTE4IDAtMzMuMSAxMi44LTM2LjYgMjkuOGMtMzAuMiAzLjItNTMuOCAyOC44LTUzLjggNTkuOWwwIC4yYy0zMi44IDEuNC02Mi44IDEwLjctODYuNiAyNS41Yy04LjgtNi44LTE5LjktMTAuOS0zMi0xMC45Yy0yOC45IDAtNTIuMyAyMy40LTUyLjMgNTIuM2MwIDIxIDEyLjMgMzkgMzAuMSA0Ny40YzEuNyA2MC43IDY3LjkgMTA5LjYgMTQ5LjMgMTA5LjZzMTQ3LjYtNDguOSAxNDkuMy0xMDkuN2MxNy43LTguNCAyOS45LTI2LjQgMjkuOS00Ny4zYzAtMjguOS0yMy40LTUyLjMtNTIuMy01Mi4zYy0xMiAwLTIzIDQtMzEuOSAxMC44Yy0yNC0xNC45LTU0LjMtMjQuMi04Ny41LTI1LjRsMC0uMWMwLTIyLjIgMTYuNS00MC43IDM3LjktNDMuN2wwIDBjMy45IDE2LjUgMTguNyAyOC43IDM2LjMgMjguN3pNMTU1IDI0OC4xYzE0LjYgMCAyNS44IDE1LjQgMjUgMzQuNHMtMTEuOCAyNS45LTI2LjUgMjUuOXMtMjcuNS03LjctMjYuNi0yNi43czEzLjUtMzMuNSAyOC4xLTMzLjV6bTE2Ni40IDMzLjVjLjkgMTktMTIgMjYuNy0yNi42IDI2LjdzLTI1LjYtNi45LTI2LjUtMjUuOWMtLjktMTkgMTAuMy0zNC40IDI1LTM0LjRzMjcuMyAxNC42IDI4LjEgMzMuNXptLTQyLjEgNDkuNmMtOSAyMS41LTMwLjMgMzYuNy01NS4xIDM2LjdzLTQ2LjEtMTUuMS01NS4xLTM2LjdjLTEuMS0yLjYgLjctNS40IDMuNC01LjdjMTYuMS0xLjYgMzMuNS0yLjUgNTEuNy0yLjVzMzUuNiAuOSA1MS43IDIuNWMyLjcgLjMgNC41IDMuMSAzLjQgNS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVTbmFwY2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQsMzJINjRBNjQsNjQsMCwwLDAsMCw5NlY0MTZhNjQsNjQsMCwwLDAsNjQsNjRIMzg0YTY0LDY0LDAsMCwwLDY0LTY0Vjk2QTY0LDY0LDAsMCwwLDM4NCwzMlptLTMuOTA3LDMxOS4zMDktLjA4My4xYTMyLjM2NCwzMi4zNjQsMCwwLDEtOC43MTcsNi44MjMsOTAuMjYsOTAuMjYsMCwwLDEtMjAuNTg2LDguMiwxMi42OTQsMTIuNjk0LDAsMCwwLTMuODUyLDEuNzZjLTIuMTU4LDEuOTA5LTIuMSw0LjY0LTQuNCw4LjU1YTIzLjEzNywyMy4xMzcsMCwwLDEtNi44NCw3LjQ3MWMtNi43MDcsNC42MzItMTQuMjQ0LDQuOTIzLTIyLjIzLDUuMjMtNy4yMTQuMjc0LTE1LjM5LjU4MS0yNC43MjksMy42NjktMy43NjEsMS4yNDUtNy43NTMsMy42OTQtMTIuMzc3LDYuNTMzLTExLjI2NSw2LjktMjYuNjgsMTYuMzUzLTUyLjMsMTYuMzUzcy00MC45MjUtOS40LTUyLjEwNi0xNi4yNzljLTQuNjU3LTIuODg4LTguNjc1LTUuMzYyLTEyLjU0My02LjY0LTkuMzM5LTMuMDgtMTcuNTE2LTMuNC0yNC43MjktMy42Ny03Ljk4Ni0uMzA3LTE1LjUyMy0uNi0yMi4yMzEtNS4yMjlhMjMuMDg1LDIzLjA4NSwwLDAsMS02LjAxLTYuMTFjLTMuMi00LjYzMi0yLjg1NS03LjgtNS4yNTQtOS44OTVhMTMuNDI4LDEzLjQyOCwwLDAsMC00LjEtMS44MzQsODkuOTg2LDg5Ljk4NiwwLDAsMS0yMC4zMTMtOC4xMjcsMzIuOTA1LDMyLjkwNSwwLDAsMS04LjMtNi4yODRjLTYuNTgzLTYuNzU3LTguMjc2LTE0Ljc3Ni01LjY4Ni0yMS44MjQsMy40MzYtOS4zMzgsMTEuNTcxLTEyLjExMSwxOS40LTE2LjI2MiwxNC43NzYtOC4wMjcsMjYuMzQ4LTE4LjA1NSwzNC40MzMtMjkuODg0YTY4LjIzNiw2OC4yMzYsMCwwLDAsNS45ODUtMTAuNTY3Yy43ODktMi4xNTguNzcyLTMuMzI5LjI0MS00LjQxNmE3LjM4Niw3LjM4NiwwLDAsMC0yLjIwOC0yLjIxN2MtMi41MzItMS42NzYtNS4xMTMtMy4zNTMtNi44ODItNC41LTMuMjctMi4xNDEtNS44NjgtMy44MTgtNy41MjktNC45OC02LjI2Ny00LjM4My0xMC42NS05LjA0LTEzLjQtMTQuMjQ1YTI4LjQsMjguNCwwLDAsMS0xLjM2OS0yMy41ODRjNC4xMzQtMTAuOTI0LDE0LjQ2OS0xNy43MDYsMjYuOTc4LTE3LjcwNmEzNy4xNDEsMzcuMTQxLDAsMCwxLDcuODQ1LjgzYy42ODkuMTUsMS4zNy4zMDcsMi4wNDIuNDgyLS4xMDgtNy40My4wNTgtMTUuMzU3LjcyMi0yMy4xMTksMi4zNTgtMjcuMjYxLDExLjkxMi00MS41ODksMjEuODc0LTUyLjk5NGE4Ni44MzYsODYuODM2LDAsMCwxLDIyLjI4LTE3LjkzMUMxODguMjU0LDEwMC4zODMsMjA1LjMxMiw5NiwyMjQsOTZzMzUuODI4LDQuMzgzLDUwLjk0NCwxMy4wMTZhODcuMTY5LDg3LjE2OSwwLDAsMSwyMi4yMzksMTcuOWM5Ljk2MSwxMS40MDYsMTkuNTE2LDI1LjcwOSwyMS44NzQsNTIuOTk1YTIzMS4xOTQsMjMxLjE5NCwwLDAsMSwuNzEzLDIzLjExOGMuNjczLS4xNzQsMS4zNjItLjMzMiwyLjA1MS0uNDgxYTM3LjEzMSwzNy4xMzEsMCwwLDEsNy44NDQtLjgzYzEyLjUsMCwyMi44Miw2Ljc4MiwyNi45NzEsMTcuNzA2YTI4LjM3LDI4LjM3LDAsMCwxLTEuNCwyMy41NTljLTIuNzQsNS4yLTcuMTIzLDkuODYxLTEzLjM5LDE0LjI0NC0xLjY2OCwxLjE4Ny00LjI1OCwyLjg2NC03LjUyOSw0Ljk4MS0xLjgzNSwxLjE4Ny00LjU0MSwyLjk0Ny03LjE2NCw0LjY4MmE2Ljg1Niw2Ljg1NiwwLDAsMC0xLjk1MSwyLjAzNGMtLjUwNiwxLjA0Ni0uNTM5LDIuMTkxLjE2Niw0LjIwOGE2OS4wMTUsNjkuMDE1LDAsMCwwLDYuMDg1LDEwLjc5MmM4LjI2OCwxMi4xLDIwLjE4OCwyMi4zMTMsMzUuNDU0LDMwLjQwNywxLjQ4Ni43NzIsMi45OCwxLjUsNC40NDEsMi4yNTguNzIyLjMzMiwxLjU2OS43NjMsMi40OTEsMS4zLDQuOSwyLjcyMyw5LjIsNi4wMSwxMS40NTUsMTIuMTUzQzM4Ny44MjEsMzM2LjkxNSwzODYuMjY5LDM0NC43LDM4MC4wOTMsMzUxLjMwOVptLTE2LjcxOS0xOC40NjFjLTUwLjMxMy0yNC4zMTQtNTguMzMyLTYxLjkxOC01OC42ODktNjQuNzQ5LS40MzEtMy4zNzktLjkyMS02LjAzNSwyLjgwNi05LjQ3MiwzLjU5NC0zLjMyOCwxOS41NDEtMTMuMTksMjMuOTY1LTE2LjI3OCw3LjMzLTUuMTE0LDEwLjUzNC0xMC4yMTksOC4xNi0xNi40OTUtMS42Ni00LjMxNi01LjY4Ni01Ljk3Ni05Ljk2MS01Ljk3NmExOC41LDE4LjUsMCwwLDAtMy45OTMuNDQ4Yy04LjAzNSwxLjc0My0xNS44MzgsNS43NjktMjAuMzU0LDYuODU3YTcuMSw3LjEsMCwwLDEtMS42Ni4yMjRjLTIuNDA4LDAtMy4yNzktMS4wNzEtMy4wODgtMy45NjguNTY0LTguNzgzLDEuNzU5LTI1LjkyNS4zNzMtNDEuOTM3LTEuODg0LTIyLjAzMi04Ljk5LTMyLjk0OC0xNy40MzItNDIuNi00LjA1MS00LjYyNC0yMy4xMzUtMjQuNjU0LTU5LjUzNi0yNC42NTRTMTY4LjUzLDEzNC4zNTksMTY0LjQ3OSwxMzljLTguNDM0LDkuNjU0LTE1LjUzMSwyMC41Ny0xNy40MzIsNDIuNi0xLjM4NiwxNi4wMTMtLjE0MSwzMy4xNDcuMzczLDQxLjkzNy4xNjYsMi43NTYtLjY4LDMuOTY4LTMuMDg4LDMuOTY4YTcuMSw3LjEsMCwwLDEtMS42Ni0uMjI0Yy00LjUwNy0xLjA4Ny0xMi4zMS01LjExMy0yMC4zNDYtNi44NTZhMTguNDk0LDE4LjQ5NCwwLDAsMC0zLjk5My0uNDQ5Yy00LjI1LDAtOC4zLDEuNjM2LTkuOTYxLDUuOTc3LTIuMzc0LDYuMjc2Ljg0NywxMS4zODEsOC4xNjgsMTYuNDk0LDQuNDI1LDMuMDg4LDIwLjM3MSwxMi45NTgsMjMuOTY2LDE2LjI3OSwzLjcxOSwzLjQzNywzLjIzNyw2LjA5MywyLjgwNSw5LjQ3MS0uMzU2LDIuNzktOC4zODQsNDAuMzk0LTU4LjY4OSw2NC43NDktMi45NDYsMS40MjgtNy45Niw0LjQ1Ljg4LDkuMzMxLDEzLjg4LDcuNjI4LDIzLjExMSw2LjgwNywzMC4zLDExLjQzLDYuMDkzLDMuOTI3LDIuNSwxMi4zOTQsNi45MjMsMTUuNDQ5LDUuNDU0LDMuNzYsMjEuNTgzLS4yNjYsNDIuMzM1LDYuNiwxNy40MzMsNS43NDQsMjguMTE2LDIyLjAxNSw1OC45NjMsMjIuMDE1czQxLjc4OC0xNi4zLDU4LjkzOC0yMS45NzNjMjAuNzk1LTYuODY1LDM2Ljg5LTIuODM5LDQyLjMzNi02LjYsNC40MzMtMy4wNTUuODIyLTExLjUyMiw2LjkyMy0xNS40NDgsNy4xODEtNC42MjQsMTYuNDExLTMuOCwzMC4zLTExLjQ3MkMzNzEuMzYsMzM3LjM1NSwzNjYuMzQ2LDMzNC4zMzMsMzYzLjM3NCwzMzIuODQ4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVTdGVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUuNiAzMDkuMWMxOC42IDcuNyAyNy4zIDI4LjkgMTkuNiA0Ny40cy0yOSAyNy4yLTQ3LjYgMTkuNGwtMjguNS0xMS44YzUgMTAuNiAxMy44IDE5LjQgMjUuNCAyNC4yYzI1LjIgMTAuNSA1NC4xLTEuNCA2NC42LTI2LjVjNS4xLTEyLjEgNS4xLTI1LjUgLjEtMzcuN2MtNS4xLTEyLjEtMTQuNS0yMS42LTI2LjctMjYuN2MtMTIuMS01LTI1LTQuOC0zNi40LS41bDI5LjUgMTIuMnpNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWMjQwLjdsMTE2LjYgNDguMWMxMi04LjIgMjYuMi0xMi4xIDQwLjctMTEuM2w1NS40LTgwLjJ2LTEuMWMwLTQ4LjIgMzkuMy04Ny41IDg3LjYtODcuNXM4Ny42IDM5LjMgODcuNiA4Ny41YzAgNDkuMi00MC45IDg4LjctODkuNiA4Ny41bC03OSA1Ni4zYzEuNiAzOC41LTI5LjEgNjguOC02NS43IDY4LjhjLTMxLjggMC01OC41LTIyLjctNjQuNS01Mi43TDAgMzE5LjJWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NnpNMjQxLjkgMTk2LjJhNTguNCA1OC40IDAgMSAwIDExNi44IDAgNTguNCA1OC40IDAgMSAwIC0xMTYuOCAwem0xNC42LS4xYTQzLjkgNDMuOSAwIDEgMSA4Ny44IDAgNDMuOSA0My45IDAgMSAxIC04Ny44IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVRocmVhZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yOTQuMiAyNDQuM2MxOS41IDkuMyAzMy43IDIzLjUgNDEuMiA0MC45YzEwLjQgMjQuMyAxMS40IDYzLjktMjAuMiA5NS40Yy0yNC4yIDI0LjEtNTMuNSAzNS05NS4xIDM1LjNoLS4yYy00Ni44LS4zLTgyLjgtMTYuMS0xMDYuOS00Ni44QzkxLjUgMzQxLjggODAuNCAzMDMuNyA4MCAyNTZ2LS4xLS4xYy40LTQ3LjcgMTEuNS04NS43IDMzLTExMy4xYzI0LjItMzAuNyA2MC4yLTQ2LjUgMTA2LjktNDYuOGguMmM0Ni45IC4zIDgzLjMgMTYgMTA4LjIgNDYuNmMxMi4zIDE1LjEgMjEuMyAzMy4zIDI3IDU0LjRsLTI2LjkgNy4yYy00LjctMTcuMi0xMS45LTMxLjktMjEuNC00My42Yy0xOS40LTIzLjktNDguNy0zNi4xLTg3LTM2LjRjLTM4IC4zLTY2LjggMTIuNS04NS41IDM2LjJjLTE3LjUgMjIuMy0yNi42IDU0LjQtMjYuOSA5NS41Yy4zIDQxLjEgOS40IDczLjMgMjYuOSA5NS41YzE4LjcgMjMuOCA0Ny40IDM2IDg1LjUgMzYuMmMzNC4zLS4zIDU2LjktOC40IDc1LjgtMjcuM2MyMS41LTIxLjUgMjEuMS00Ny45IDE0LjItNjRjLTQtOS40LTExLjQtMTcuMy0yMS4zLTIzLjNjLTIuNCAxOC03LjkgMzIuMi0xNi41IDQzLjJjLTExLjQgMTQuNS0yNy43IDIyLjQtNDguNCAyMy41Yy0xNS43IC45LTMwLjgtMi45LTQyLjYtMTAuN2MtMTMuOS05LjItMjItMjMuMi0yMi45LTM5LjVjLTEuNy0zMi4yIDIzLjgtNTUuMyA2My41LTU3LjZjMTQuMS0uOCAyNy4zLS4yIDM5LjUgMS45Yy0xLjYtOS45LTQuOS0xNy43LTkuOC0yMy40Yy02LjctNy44LTE3LjEtMTEuOC0zMC44LTExLjloLS40Yy0xMSAwLTI2IDMuMS0zNS42IDE3LjZsLTIzLTE1LjhjMTIuOC0xOS40IDMzLjYtMzAuMSA1OC41LTMwLjFoLjZjNDEuOCAuMyA2Ni42IDI2LjMgNjkuMSA3MS44YzEuNCAuNiAyLjggMS4yIDQuMiAxLjlsLjEgLjV6bS03MS44IDY3LjVjMTctLjkgMzYuNC03LjYgMzkuNy00OC44Yy04LjgtMS45LTE4LjYtMi45LTI5LTIuOWMtMy4yIDAtNi40IC4xLTkuNiAuM2MtMjguNiAxLjYtMzguMSAxNS41LTM3LjQgMjcuOWMuOSAxNi43IDE5IDI0LjUgMzYuNCAyMy42bC0uMS0uMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlVHVtYmxyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTI1Ni44IDQxNmMtNzUuNSAwLTkxLjktNTUuNS05MS45LTg3Ljl2LTkwSDEzNS4yYy0zLjQgMC02LjItMi44LTYuMi02LjJWMTg5LjRjMC00LjUgMi44LTguNSA3LjEtMTBjMzguOC0xMy43IDUwLjktNDcuNSA1Mi43LTczLjJjLjUtNi45IDQuMS0xMC4yIDEwLTEwLjJoNDQuM2MzLjQgMCA2LjIgMi44IDYuMiA2LjJ2NzJoNTEuOWMzLjQgMCA2LjIgMi44IDYuMiA2LjJ2NTEuMWMwIDMuNC0yLjggNi4yLTYuMiA2LjJIMjQ5LjFWMzIxYzAgMjEuNCAxNC44IDMzLjUgNDIuNSAyMi40YzMtMS4yIDUuNi0yIDgtMS40YzIuMiAuNSAzLjYgMi4xIDQuNiA0LjlMMzE4IDM4Ny4xYzEgMy4yIDIgNi43LS4zIDkuMWMtOC41IDkuMS0zMS4yIDE5LjgtNjAuOSAxOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVUd2l0dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMzUxLjMgMTk5LjN2MGMwIDg2LjctNjYgMTg2LjYtMTg2LjYgMTg2LjZjLTM3LjIgMC03MS43LTEwLjgtMTAwLjctMjkuNGM1LjMgLjYgMTAuNCAuOCAxNS44IC44YzMwLjcgMCA1OC45LTEwLjQgODEuNC0yOGMtMjguOC0uNi01My0xOS41LTYxLjMtNDUuNWMxMC4xIDEuNSAxOS4yIDEuNSAyOS42LTEuMmMtMzAtNi4xLTUyLjUtMzIuNS01Mi41LTY0LjR2LS44YzguNyA0LjkgMTguOSA3LjkgMjkuNiA4LjNjLTktNi0xNi40LTE0LjEtMjEuNS0yMy42cy03LjgtMjAuMi03LjctMzFjMC0xMi4yIDMuMi0yMy40IDguOS0zMy4xYzMyLjMgMzkuOCA4MC44IDY1LjggMTM1LjIgNjguNmMtOS4zLTQ0LjUgMjQtODAuNiA2NC04MC42YzE4LjkgMCAzNS45IDcuOSA0Ny45IDIwLjdjMTQuOC0yLjggMjktOC4zIDQxLjYtMTUuOGMtNC45IDE1LjItMTUuMiAyOC0yOC44IDM2LjFjMTMuMi0xLjQgMjYtNS4xIDM3LjgtMTAuMmMtOC45IDEzLjEtMjAuMSAyNC43LTMyLjkgMzRjLjIgMi44IC4yIDUuNyAuMiA4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVVwd29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NiAzMmwzMzYgMGMzMC45IDAgNTYgMjUuMSA1NiA1NmwwIDMzNmMwIDMwLjktMjUuMSA1Ni01NiA1Nkw1NiA0ODBjLTMwLjkgMC01Ni0yNS4xLTU2LTU2TDAgODhDMCA1Ny4xIDI1LjEgMzIgNTYgMzJ6TTI3MC45IDI3NC4yYzYuNi01Mi45IDI1LjktNjkuNSA1MS40LTY5LjVjMjUuMyAwIDQ0LjkgMjAuMiA0NC45IDQ5LjdzLTE5LjcgNDkuNy00NC45IDQ5LjdjLTI3LjkgMC00Ni4zLTIxLjUtNTEuNC0yOS45em0tMjYuNy00MS44Yy04LjItMTUuNS0xNC4zLTM2LjMtMTkuMi01NS42bC0yOS43IDAtMzMuMiAwIDAgNzguMWMwIDI4LjQtMTIuOSA0OS40LTM4LjIgNDkuNHMtMzkuOC0yMC45LTM5LjgtNDkuM2wuMy03OC4xLTM2LjIgMCAwIDc4LjFjMCAyMi44IDcuNCA0My41IDIwLjkgNTguMmMxMy45IDE1LjIgMzIuOCAyMy4yIDU0LjggMjMuMmM0My43IDAgNzQuMi0zMy41IDc0LjItODEuNWwwLTUyLjVjNC42IDE3LjMgMTUuNCA1MC41IDM2LjIgNzkuN0wyMTUgMzkyLjZsMzYuOCAwIDEyLjgtNzguNGM0LjIgMy41IDguNyA2LjYgMTMuNCA5LjRjMTIuMyA3LjggMjYuNCAxMi4yIDQwLjkgMTIuNmwuMSAwYy41IDAgMS4xIDAgMS42IDBjLjYgMCAxLjEgMCAxLjcgMGM0NS4xIDAgODAuOS0zNC45IDgwLjktODEuOXMtMzUuOS04Mi4yLTgwLjktODIuMmMtNDUuNCAwLTcwLjkgMjkuNy03OC4xIDYwLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVZpYWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0xMTguMyAzODEuMmMtNjgtNzMuNi0xOS44LTE5Ni4xIDgxLjItMTk2LjFjMTMuMyAwIDI2LjYgMi4xIDM5LjEgNi43Yy00LjMgOC40LTcuMyAxNy42LTguNCAyNy4xYy05LjctNC4xLTIwLjItNi0zMC43LTZjLTQ4LjggMC04NC42IDQxLjctODQuNiA4OC45YzAgNDMgMjguNSA3OC43IDY5LjUgODUuOWM2MS41LTI0IDcyLjktMTE3LjYgNzIuOS0xNzV2MGMwLTcuMyAwLTE0LjgtLjYtMjIuMWMtMTEuMi0zMi45LTI2LjYtNjQuNi00NC4yLTk0LjVjMjcuMSAxOC4zIDQxLjkgNjIuNSA0NC4yIDk0LjF2LjRjNy43IDIyLjUgMTEuOCA0Ni4yIDExLjggNzBjMCA1NC4xLTIxLjkgOTktNjguMyAxMjguMmwtMi40IC4yYzUwIDEgODYuMi0zOC42IDg2LjItODcuMmMwLTEyLjItMi4xLTI0LjMtNi45LTM1LjdjOS41LTEuOSAxOC41LTUuNiAyNi40LTEwLjVjMTUuMyAzNi42IDEyLjYgODcuMy0yMi44IDEyNS42Yy00Mi40IDQ2LjItMTIwIDQ2LjYtMTYyLjQgMHpNMjc0LjYgMjE3LjZjMjEuOS0xMiA0OS42LTMwLjcgNjIuMy01M2MxLjUtMyA0LjEtOC42IDQuNS0xMmMtMTIuNSAyNy45LTQ0LjIgNDkuOC03My45IDU2LjdjLTQuNy03LjMtNy41LTE1LjUtNy41LTI0LjNjMC0xMC4zIDUuMi0yNC4xIDEyLjktMzEuNmM4LjMtNy45IDE4LTEwLjkgMjcuOS0xNC4xYzE2LTUuMSAzMi41LTEwLjMgNDQuNS0zNS45YzMyLjUgNDYuMiAxMy4xIDEzMC4zLTM2LjMgMTMwLjNjLTEzLjMgMC0yNS4xLTcuMS0zNC40LTE2LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVZpbWVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTMxOC41IDMwOS41QzI3NSAzNjYgMjM4LjIgMzk0LjMgMjA4LjEgMzk0LjNjLTE4LjcgMC0zNC40LTE3LjItNDcuMy01MS42Yy0zLjgtMTMuOS03LjMtMjYuOS0xMC41LTM5Yy0xOC4yLTY4LjMtMjguNi0xMDcuNC00Ni4yLTEwNy40Yy0yLjQgMC0xMC44IDUtMjUuMSAxNS4xTDY0IDE5MmM3LTYuMSAxMy45LTEyLjQgMjAuNi0xOC41YzI5LjEtMjYuMyA1NS42LTUwLjMgNzMuNS01MS45YzI0LjktMi40IDQwLjIgMTQuNiA0NiA1MS4xYzIwLjUgMTI5LjYgMjkuNiAxNDkuMiA2Ni44IDkwLjVjMTMuNC0yMS4yIDIwLjYtMzcuMiAyMS41LTQ4LjNjMy40LTMyLjgtMjUuNi0zMC42LTQ1LjItMjIuMmMxNS43LTUxLjUgNDUuOC03Ni41IDkwLjEtNzUuMWMzMi45IDEgNDguNCAyMi40IDQ2LjUgNjRjLTEuNCAzMS4xLTIzLjIgNzMuOC02NS4zIDEyNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVXZWJBd2Vzb21lU3Ryb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0QzQ2LjMgNjQgMzIgNzguMyAzMiA5NmwwIDMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMkw2NCA2NHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTIzNSA4MS42TDI4OCAyMjRsNTIuMi0xMC40Yy0yLjYtMy45LTQuMi04LjUtNC4yLTEzLjZjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGMwIDEzLTEwLjMgMjMuNi0yMy4yIDI0TDMwNC41IDM0OS4xYy01LjIgMTEuNS0xNi42IDE4LjktMjkuMiAxOC45bC0xMDIuNiAwYy0xMi42IDAtMjQtNy40LTI5LjItMTguOUw4Ny4yIDIyNEM3NC4zIDIyMy42IDY0IDIxMyA2NCAyMDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGMwIDUtMS41IDkuNy00LjIgMTMuNkwxNjAgMjI0bDUzLjEtNDYuNGMtOC45LTQuMS0xNS0xMy4xLTE1LTIzLjZjMC0xNC40IDExLjYtMjYgMjYtMjZzMjYgMTEuNiAyNiAyNmMwIDEwLjUtNi4yIDE5LjUtMTUuMSAyMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVXZWJBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTIzNSAxNzcuNkwyODggMjI0bDUyLjItMTAuNGMtMi42LTMuOS00LjItOC41LTQuMi0xMy42YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCAxMy0xMC4zIDIzLjYtMjMuMiAyNEwzMDQuNSAzNDkuMWMtNS4yIDExLjUtMTYuNiAxOC45LTI5LjIgMTguOWwtMTAyLjYgMGMtMTIuNiAwLTI0LTcuNC0yOS4yLTE4LjlMODcuMiAyMjRDNzQuMyAyMjMuNiA2NCAyMTMgNjQgMjAwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCA1LTEuNSA5LjctNC4yIDEzLjZMMTYwIDIyNGw1My4xLTQ2LjRjLTguOS00LjEtMTUtMTMuMS0xNS0yMy42YzAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZjMCAxMC41LTYuMiAxOS41LTE1LjEgMjMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlV2hhdHNhcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTIuMSAyNTQuNmMwIDI0LjkgNyA0OS4yIDIwLjIgNzAuMWwzLjEgNS0xMy4zIDQ4LjZMMTUyIDM2NS4ybDQuOCAyLjljMjAuMiAxMiA0My40IDE4LjQgNjcuMSAxOC40aC4xYzcyLjYgMCAxMzMuMy01OS4xIDEzMy4zLTEzMS44YzAtMzUuMi0xNS4yLTY4LjMtNDAuMS05My4yYy0yNS0yNS01OC0zOC43LTkzLjItMzguN2MtNzIuNyAwLTEzMS44IDU5LjEtMTMxLjkgMTMxLjh6TTI3NC44IDMzMGMtMTIuNiAxLjktMjIuNCAuOS00Ny41LTkuOWMtMzYuOC0xNS45LTYxLjgtNTEuNS02Ni45LTU4LjdjLS40LS42LS43LS45LS44LTEuMWMtMi0yLjYtMTYuMi0yMS41LTE2LjItNDFjMC0xOC40IDktMjcuOSAxMy4yLTMyLjNjLjMtLjMgLjUtLjUgLjctLjhjMy42LTQgNy45LTUgMTAuNi01YzIuNiAwIDUuMyAwIDcuNiAuMWMuMyAwIC41IDAgLjggMGMyLjMgMCA1LjIgMCA4LjEgNi44YzEuMiAyLjkgMyA3LjMgNC45IDExLjhjMy4zIDggNi43IDE2LjMgNy4zIDE3LjZjMSAyIDEuNyA0LjMgLjMgNi45Yy0zLjQgNi44LTYuOSAxMC40LTkuMyAxM2MtMy4xIDMuMi00LjUgNC43LTIuMyA4LjZjMTUuMyAyNi4zIDMwLjYgMzUuNCA1My45IDQ3LjFjNCAyIDYuMyAxLjcgOC42LTFjMi4zLTIuNiA5LjktMTEuNiAxMi41LTE1LjVjMi42LTQgNS4zLTMuMyA4LjktMnMyMy4xIDEwLjkgMjcuMSAxMi45Yy44IC40IDEuNSAuNyAyLjEgMWMyLjggMS40IDQuNyAyLjMgNS41IDMuNmMuOSAxLjkgLjkgOS45LTIuNCAxOS4xYy0zLjMgOS4zLTE5LjEgMTcuNy0yNi43IDE4Ljh6TTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTE0OC4xIDM5My45TDY0IDQxNmwyMi41LTgyLjJjLTEzLjktMjQtMjEuMi01MS4zLTIxLjItNzkuM0M2NS40IDE2Ny4xIDEzNi41IDk2IDIyMy45IDk2YzQyLjQgMCA4Mi4yIDE2LjUgMTEyLjIgNDYuNWMyOS45IDMwIDQ3LjkgNjkuOCA0Ny45IDExMi4yYzAgODcuNC03Mi43IDE1OC41LTE2MC4xIDE1OC41Yy0yNi42IDAtNTIuNy02LjctNzUuOC0xOS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVYVHdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTI5Ny4xIDg0TDI1Ny4zIDIzNC42IDM3OS40IDM5NkgyODMuOEwyMDkgMjk4LjEgMTIzLjMgMzk2SDc1LjhsMTExLTEyNi45TDY5LjcgMTE2aDk4bDY3LjcgODkuNUwzMTMuNiAxMTZoNDcuNXpNMzIzLjMgMzY3LjZMMTUzLjQgMTQyLjlIMTI1LjFMMjk2LjkgMzY3LjZoMjYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlWGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek05My44IDMyMC4yYy01LjUgMC04LjctNS4zLTYtMTAuM2w0OS4zLTg2LjdjLjEgMCAuMS0uMSAwLS4ybC0zMS40LTU0Yy0zLTUuNiAuMi0xMC4xIDYtMTAuMWg0Ni42YzUuMiAwIDkuNSAyLjkgMTIuOSA4LjdsMzEuOSA1NS4zYy0xLjMgMi4zLTE4IDMxLjctNTAuMSA4OC4yYy0zLjUgNi4yLTcuNyA5LjEtMTIuNiA5LjFIOTMuOHptMTYzLjUtMzMuNHYuMmw2NS41IDExOWMyLjggNS4xIC4xIDEwLjEtNiAxMC4xSDI3MC4yYy01LjUgMC05LjctMi45LTEyLjktOC43bC02Ni0xMjAuM2MxLjgtMy4yIDIyLjktNDAuNCA2My4zLTExMS42YzExLjctMjAuNyAyNS4xLTQ0LjMgNDAuMS03MC44YzMuMy01LjggNy40LTguNyAxMi41LTguN2g0Ni45YzUuNy0uMSA4LjggNC43IDYgMTBMMjU3LjMgMjg2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVlvdXR1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgyIDI1Ni4ybC05NS4yLTU0LjFWMzEwLjNMMjgyIDI1Ni4yek0zODQgMzJINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0em0xNC40IDEzNi4xYzcuNiAyOC42IDcuNiA4OC4yIDcuNiA4OC4yczAgNTkuNi03LjYgODguMWMtNC4yIDE1LjgtMTYuNSAyNy43LTMyLjIgMzEuOUMzMzcuOSAzODQgMjI0IDM4NCAyMjQgMzg0cy0xMTMuOSAwLTE0Mi4yLTcuNmMtMTUuNy00LjItMjgtMTYuMS0zMi4yLTMxLjlDNDIgMzE1LjkgNDIgMjU2LjMgNDIgMjU2LjNzMC01OS43IDcuNi04OC4yYzQuMi0xNS44IDE2LjUtMjguMiAzMi4yLTMyLjRDMTEwLjEgMTI4IDIyNCAxMjggMjI0IDEyOHMxMTMuOSAwIDE0Mi4yIDcuN2MxNS43IDQuMiAyOCAxNi42IDMyLjIgMzIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlc3BhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg2LjEyIDM0My4zNGMtOS42NSA5LjY1LTkuNjUgMjUuMjkgMCAzNC45NCA5LjY1IDkuNjUgMjUuMjkgOS42NSAzNC45NCAwTDM3OC4yNCAyMjEuMWMxOS4yOS0xOS4yOSA1MC41Ny0xOS4yOSA2OS44NiAwczE5LjI5IDUwLjU3IDAgNjkuODZMMjkzLjk1IDQ0NS4xYzE5LjI3IDE5LjI5IDUwLjUzIDE5LjMxIDY5LjgyLjA0bC4wNC0uMDQgMTE5LjI1LTExOS4yNGMzOC41OS0zOC41OSAzOC41OS0xMDEuMTQgMC0xMzkuNzItMzguNTktMzguNTktMTAxLjE1LTM4LjU5LTEzOS43MiAwbC0xNTcuMjIgMTU3LjJ6bTI0NC41My0xMDQuOGMtOS42NS05LjY1LTI1LjI5LTkuNjUtMzQuOTMgMGwtMTU3LjIgMTU3LjE4Yy0xOS4yNyAxOS4yOS01MC41MyAxOS4zMS02OS44Mi4wNWwtLjA1LS4wNWMtOS42NC05LjY0LTI1LjI3LTkuNjUtMzQuOTItLjAxbC0uMDEuMDFjLTkuNjUgOS42NC05LjY2IDI1LjI4LS4wMiAzNC45M2wuMDIuMDJjMzguNTggMzguNTcgMTAxLjE0IDM4LjU3IDEzOS43MiAwbDE1Ny4yLTE1Ny4yYzkuNjUtOS42NSA5LjY1LTI1LjI5LjAxLTM0Ljkzem0tMjYxLjk5IDg3LjMzbDE1Ny4xOC0xNTcuMThjOS42NC05LjY1IDkuNjQtMjUuMjkgMC0zNC45NC05LjY0LTkuNjQtMjUuMjctOS42NC0zNC45MSAwTDEzMy43MiAyOTAuOTNjLTE5LjI4IDE5LjI5LTUwLjU2IDE5LjMtNjkuODUuMDFsLS4wMS0uMDFjLTE5LjI5LTE5LjI4LTE5LjMxLTUwLjU0LS4wMy02OS44NGwuMDMtLjAzTDIxOC4wMyA2Ni44OWMtMTkuMjgtMTkuMjktNTAuNTUtMTkuMy02OS44NS0uMDJsLS4wMi4wMkwyOC45MyAxODYuMTRjLTM4LjU4IDM4LjU5LTM4LjU4IDEwMS4xNCAwIDEzOS43MiAzOC42IDM4LjU5IDEwMS4xMyAzOC41OSAxMzkuNzMuMDF6bS04Ny4zMy01Mi40YzkuNjQgOS42NCAyNS4yNyA5LjY0IDM0LjkxIDBsMTU3LjIxLTE1Ny4xOWMxOS4yOC0xOS4yOSA1MC41NS0xOS4zIDY5Ljg0LS4wMmwuMDIuMDJjOS42NSA5LjY1IDI1LjI5IDkuNjUgMzQuOTMgMCA5LjY1LTkuNjUgOS42NS0yNS4yOSAwLTM0LjkzLTM4LjU5LTM4LjU5LTEwMS4xMy0zOC41OS0xMzkuNzIgMEw4MS4zMyAyMzguNTRjLTkuNjUgOS42NC05LjY1IDI1LjI4LS4wMSAzNC45M2guMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrRXhjaGFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNyAzMzIuM2g0MTIuN3YyMmMwIDM3LjctMjkuMyA2OC02NS4zIDY4aC0xOUwyNTkuMyA1MTJ2LTg5LjdIODNjLTM2IDAtNjUuMy0zMC4zLTY1LjMtNjh2LTIyem0wLTIzLjZoNDEyLjd2LTg1SDE3Ljd2ODV6bTAtMTA5LjRoNDEyLjd2LTg1SDE3Ljd2ODV6TTM2NSAwSDgzQzQ3IDAgMTcuNyAzMC4zIDE3LjcgNjcuN1Y5MGg0MTIuN1Y2Ny43QzQzMC4zIDMwLjMgNDAxIDAgMzY1IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrT3ZlcmZsb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkwLjcgMzExTDk1IDI2OS43IDg2LjggMzA5bDE5NS43IDQxem01MS04N0wxODguMiA5NS43bC0yNS41IDMwLjggMTUzLjUgMTI4LjN6bS0zMS4yIDM5LjdMMTI5LjIgMTc5bC0xNi43IDM2LjVMMjkzLjcgMzAwek0yNjIgMzJsLTMyIDI0IDExOS4zIDE2MC4zIDMyLTI0em0yMC41IDMyOGgtMjAwdjM5LjdoMjAwem0zOS43IDgwSDQyLjdWMzIwaC00MHYxNjBoMzU5LjVWMzIwaC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhY2twYXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0NC42IDIzMi40YzAgOC41LTQuMjYgMjAuNDktMjEuMzQgMjAuNDloLTE5LjYxdi00MS40N2gxOS42MWMxNy4xMyAwIDIxLjM0IDEyLjM2IDIxLjM0IDIwLjk4ek00NDggMzJ2NDQ4SDBWMzJ6TTE1MS4zIDI4Ny44NGMwLTIxLjI0LTEyLjEyLTM0LjU0LTQ2LjcyLTQ0Ljg1LTIwLjU3LTcuNDEtMjYtMTAuOTEtMjYtMTguNjNzNy0xNC42MSAyMC40MS0xNC42MWMxNC4wOSAwIDIwLjc5IDguNDUgMjAuNzkgMTguMzVoMzAuN2wuMTktLjU3Yy41LTE5LjU3LTE1LjA2LTQxLjY1LTUxLjEyLTQxLjY1LTIzLjM3IDAtNTIuNTUgMTAuNzUtNTIuNTUgMzguMjkgMCAxOS40IDkuMjUgMzEuMjkgNTAuNzQgNDQuMzcgMTcuMjYgNi4xNSAyMS45MSAxMC40IDIxLjkxIDE5LjQ4IDAgMTUuMi0xOS4xMyAxNC4yMy0xOS40NyAxNC4yMy0yMC40IDAtMjUuNjUtOS4xLTI1LjY1LTIxLjloLTMwLjhsLS4xOC41NmMtLjY4IDMxLjMyIDI4LjM4IDQ1LjIyIDU2LjYzIDQ1LjIyIDI5Ljk4IDAgNTEuMTItMTMuNTUgNTEuMTItMzguMjl6bTEyNS4zOC01NS42M2MwLTI1LjMtMTguNDMtNDUuNDYtNTMuNDItNDUuNDZoLTUxLjc4djEzOC4xOGgzMi4xN3YtNDcuMzZoMTkuNjFjMzAuMjUgMCA1My40Mi0xNS45NSA1My40Mi00NS4zNnpNMjk3Ljk0IDMyNUwzNDcgMTg2Ljc4aC0zMS4wOUwyNjggMzI1em0xMDYuNTItMTM4LjIyaC0zMS4wOUwzMjUuNDYgMzI1aDI5Ljk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGF5bGlua2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Mi43IDI5Mi41bDIuNyAyLjctMTcwLTE2Ny4zYy0zLjUtMy41LTkuNy0zLjctMTMuOC0uNUwxNDQuMyAxNzFjLTQuMiAzLjItNC42IDguNy0xLjEgMTIuMmw2OC4xIDY0LjNjMy42IDMuNSA5LjkgMy43IDE0IC41bC4xLS4xYzQuMS0zLjIgMTAuNC0zIDE0IC41bDg0IDgxLjNjMy42IDMuNSAzLjIgOS0uOSAxMi4ybC05My4yIDc0Yy00LjIgMy4zLTEwLjUgMy4xLTE0LjItLjRMNjMuMiAyNjhjLTMuNS0zLjUtOS43LTMuNy0xMy45LS41TDMuNSAzMDIuNGMtNC4yIDMuMi00LjcgOC43LTEuMiAxMi4yTDIxMSA1MTAuN3M3LjQgNi44IDE3LjMtLjhsMTk4LTE2My45YzQtMy4yIDQuNC04LjcuNy0xMi4yem01NC41LTgzLjRMMjI2LjcgMi41Yy0xLjUtMS4yLTgtNS41LTE2LjMgMS4xTDMuNiAxNjUuN2MtNC4yIDMuMi00LjggOC43LTEuMiAxMi4ybDQyLjMgNDEuNyAxNzEuNyAxNjUuMWMzLjcgMy41IDEwLjEgMy43IDE0LjMuNGw1MC4yLTM4LjgtLjMtLjMgNy43LTZjNC4yLTMuMiA0LjYtOC43LjktMTIuMmwtNTcuMS01NC40Yy0zLjYtMy41LTEwLTMuNy0xNC4yLS41bC0uMS4xYy00LjIgMy4yLTEwLjUgMy4xLTE0LjItLjRMMTA5IDE4MC44Yy0zLjYtMy41LTMuMS04LjkgMS4xLTEyLjJsOTIuMi03MS41YzQuMS0zLjIgMTAuMy0zIDEzLjkuNWwxNjAuNCAxNTljMy43IDMuNSAxMCAzLjcgMTQuMS41bDQ1LjgtMzUuOGM0LjEtMy4yIDQuNC04LjcuNy0xMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVhbVN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTUuNSAxNzcuNWMwIDMzLjgtMjcuNSA2MS02MSA2MS0zMy44IDAtNjEtMjcuMy02MS02MXMyNy4zLTYxIDYxLTYxYzMzLjUgMCA2MSAyNy4yIDYxIDYxem01Mi41LjJjMCA2My01MSAxMTMuOC0xMTMuNyAxMTMuOEwyMjUgMzcxLjNjLTQgNDMtNDAuNSA3Ni44LTg0LjUgNzYuOC00MC41IDAtNzQuNy0yOC44LTgzLTY3TDAgMzU4VjI1MC43TDk3LjIgMjkwYzE1LjEtOS4yIDMyLjItMTMuMyA1Mi0xMS41bDcxLTEwMS43Yy41LTYyLjMgNTEuNS0xMTIuOCAxMTQtMTEyLjhDMzk3IDY0IDQ0OCAxMTUgNDQ4IDE3Ny43ek0yMDMgMzYzYzAtMzQuNy0yNy44LTYyLjUtNjIuNS02Mi41LTQuNSAwLTkgLjUtMTMuNSAxLjVsMjYgMTAuNWMyNS41IDEwLjIgMzggMzkgMjcuNyA2NC41LTEwLjIgMjUuNS0zOS4yIDM4LTY0LjcgMjcuNS0xMC4yLTQtMjAuNS04LjMtMzAuNy0xMi4yIDEwLjUgMTkuNyAzMS4yIDMzLjIgNTUuMiAzMy4yIDM0LjcgMCA2Mi41LTI3LjggNjIuNS02Mi41em0yMDcuNS0xODUuM2MwLTQyLTM0LjMtNzYuMi03Ni4yLTc2LjItNDIuMyAwLTc2LjUgMzQuMi03Ni41IDc2LjIgMCA0Mi4yIDM0LjMgNzYuMiA3Ni41IDc2LjIgNDEuOS4xIDc2LjItMzMuOSA3Ni4yLTc2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0ZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyNTZjMCAxMzctMTExLjIgMjQ4LTI0OC40IDI0OC0xMTMuOCAwLTIwOS42LTc2LjMtMjM5LTE4MC40bDk1LjIgMzkuM2M2LjQgMzIuMSAzNC45IDU2LjQgNjguOSA1Ni40IDM5LjIgMCA3MS45LTMyLjQgNzAuMi03My41bDg0LjUtNjAuMmM1Mi4xIDEuMyA5NS44LTQwLjkgOTUuOC05My41IDAtNTEuNi00Mi05My41LTkzLjctOTMuNXMtOTMuNyA0Mi05My43IDkzLjV2MS4yTDE3Ni42IDI3OWMtMTUuNS0uOS0zMC43IDMuNC00My41IDEyLjFMMCAyMzYuMUMxMC4yIDEwOC40IDExNy4xIDggMjQ3LjYgOCAzODQuOCA4IDQ5NiAxMTkgNDk2IDI1NnpNMTU1LjcgMzg0LjNsLTMwLjUtMTIuNmE1Mi43OSA1Mi43OSAwIDAgMCAyNy4yIDI1LjhjMjYuOSAxMS4yIDU3LjgtMS42IDY5LTI4LjQgNS40LTEzIDUuNS0yNy4zLjEtNDAuMy01LjQtMTMtMTUuNS0yMy4yLTI4LjUtMjguNi0xMi45LTUuNC0yNi43LTUuMi0zOC45LS42bDMxLjUgMTNjMTkuOCA4LjIgMjkuMiAzMC45IDIwLjkgNTAuNy04LjMgMTkuOS0zMSAyOS4yLTUwLjggMjF6bTE3My44LTEyOS45Yy0zNC40IDAtNjIuNC0yOC02Mi40LTYyLjNzMjgtNjIuMyA2Mi40LTYyLjMgNjIuNCAyOCA2Mi40IDYyLjMtMjcuOSA2Mi4zLTYyLjQgNjIuM3ptLjEtMTUuNmMyNS45IDAgNDYuOS0yMSA0Ni45LTQ2LjggMC0yNS45LTIxLTQ2LjgtNDYuOS00Ni44cy00Ni45IDIxLTQ2LjkgNDYuOGMuMSAyNS44IDIxLjEgNDYuOCA0Ni45IDQ2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0aWNrZXJNdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MS43IDE5OS42Yy0xLjMuMy4zIDAgMCAwem0tNi4yLTc3LjRjLTcuNy0yMi4zLTUuMS03LjItMTMuNC0zNi45LTEuNi02LjUtMy42LTE0LjUtNi4yLTIwLTQuNC04LjctNC42LTcuNS00LjYtOS41IDAtNS4zIDMwLjctNDUuMyAxOS00Ni45LTUuNy0uNi0xMi4yIDExLjYtMjAuNiAxNy04LjYgNC4yLTggNS0xMC4zIDUtMi42IDAtNS43LTMtNi4yLTUtMi01LjcgMS45LTI1LjktMy42LTI1LjktMy42IDAtMTIuMyAyNC44LTE3IDI1LjgtNS4yIDEuMy0yNy45LTExLjQtNzUuMSAxOC0yNS4zIDEzLjItODYuOSA2NS4yLTg3IDY1LjMtNi43IDQuNy0yMCA0LjctMzUuNSAxNi00NC40IDMwLjEtMTA5LjYgOS40LTExMC43IDktMTEwLjYtMjYuOC0xMjgtMTUuMi0xNTkgMTEuNS0yMC44IDE3LjktMjMuNyAzNi41LTI0LjIgMzguOS00LjIgMjAuNCA1LjIgNDguMyA2LjcgNjQuMyAxLjggMTkuMy0yLjcgMTcuNyA3LjcgOTguMy41IDEgNC4xIDAgNS4xIDEuNSAwIDguNC0zLjggMTIuMS00LjEgMTMtMS41IDQuNS0xLjUgMTAuNSAwIDE2IDIuMyA4LjIgOC4yIDM3LjIgOC4yIDQ2LjkgMCA0MS44LjQgNDQgMi42IDQ5LjQgMy45IDEwIDEyLjUgOS4xIDE3IDEyIDMuMSAzLjUtLjUgOC41IDEgMTIuNS41IDIgMy42IDQgNi4yIDUgOS4yIDMuNiAyNyAuMyAyOS45LTIuNSAxLjYtMS41LjUtNC41IDMuMS01IDUuMSAwIDEwLjgtLjUgMTQuNC0yLjUgNS4xLTIuNSA0LjEtNiAxLjUtMTAuNS0uNC0uOC03LTEzLjMtOS44LTE2LTIuMS0yLTUuMS0zLTcuMi00LjUtNS44LTQuOS0xMC4zLTE5LjQtMTAuMy0xOS41LTQuNi0xOS40LTEwLjMtNDYuMy00LjEtNjYuOCA0LjYtMTcuMiAzOS41LTg3LjcgMzkuNi04Ny44IDQuMS02LjUgMTctMTEuNSAyNy4zLTcgNiAxLjkgMTkuMyAyMiA2NS40IDMwLjkgNDcuOSA4LjcgOTcuNC0yIDExMi4yLTIgMi44IDItMS45IDEzLS41IDM4LjkgMCAyNi40LS40IDEzLjctNC4xIDI5LjktMi4yIDkuNyAzLjQgMjMuMi0xLjUgNDYuOS0xLjQgOS44LTkuOSAzMi43LTguMiA0My40LjUgMSAxIDIgMS41IDMuNS41IDQuNSAxLjUgOC41IDQuNiAxMCA3LjMgMy42IDEyLTMuNSA5LjggMTEuNS0uNyAzLjEtMi42IDEyIDEuNSAxNSA0LjQgMy43IDMwLjYgMy40IDM2LjUuNSAyLjYtMS41IDEuNi00LjUgNi40LTcuNCAxLjktLjkgMTEuMy0uNCAxMS4zLTYuNS4zLTEuOC05LjItMTkuOS05LjMtMjAtMi42LTMuNS05LjItNC41LTExLjMtOC02LjktMTAuMS0xLjctNTIuNi41LTU5LjQgMy0xMSA1LjYtMjIuNCA4LjctMzIuNCAxMS00Mi41IDEwLjMtNTAuNiAxNi41LTY4LjMuOC0xLjggNi40LTIzLjEgMTAuMy0yOS45IDkuMy0xNyAyMS43LTMyLjQgMzMuNS00Ny40IDE4LTIyLjkgMzQtNDYuOSA1Mi02OS44IDYuMS03IDguMi0xMy43IDE4LTggMTAuOCA1LjcgMjEuNiA3IDMxLjkgMTcgMTQuNiAxMi44IDEwLjIgMTguMiAxMS44IDIyLjkgMS41IDUgNy43IDEwLjUgMTQuOSA5LjUgMTAuNC0yIDEzLTIuNSAxMy40LTIuNSAyLjYtLjUgNS43LTUgNy4yLTggMy4xLTUuNSA3LjItOSA3LjItMTYuNSAwLTcuNy0uNC0yLjgtMjAuNi01Mi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJhdmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU4LjQgMEw3IDI5Mmg4OS4ybDYyLjItMTE2LjFMMjIwLjEgMjkyaDg4LjV6bTE1MC4yIDI5MmwtNDMuOSA4OC4yLTQ0LjYtODguMmgtNjcuNmwxMTIuMiAyMjAgMTExLjUtMjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJpcGVTIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1NS4zIDE1NC42YzAtMjIuMyAxOC42LTMwLjkgNDguNC0zMC45IDQzLjQgMCA5OC41IDEzLjMgMTQxLjkgMzYuN1YyNi4xQzI5OC4zIDcuMiAyNTEuMSAwIDIwMy44IDAgODguMSAwIDExIDYwLjQgMTEgMTYxLjRjMCAxNTcuOSAyMTYuOCAxMzIuMyAyMTYuOCAyMDAuNCAwIDI2LjQtMjIuOSAzNC45LTU0LjcgMzQuOS00Ny4yIDAtMTA4LjItMTkuNS0xNTYuMS00NS41djEyOC41YTM5Ni4wOSAzOTYuMDkgMCAwIDAgMTU2IDMyLjRjMTE4LjYgMCAyMDAuMy01MSAyMDAuMy0xNTMuNiAwLTE3MC4yLTIxOC0xMzkuNy0yMTgtMjAzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmlwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUgMTQ0LjdsLTQzLjMgOS4yLS4yIDE0Mi40YzAgMjYuMyAxOS44IDQzLjMgNDYuMSA0My4zIDE0LjYgMCAyNS4zLTIuNyAzMS4yLTUuOXYtMzMuOGMtNS43IDIuMy0zMy43IDEwLjUtMzMuNy0xNS43VjIyMWgzMy43di0zNy44aC0zMy43em04OS4xIDUxLjZsLTIuNy0xMy4xSDIxM3YxNTMuMmg0NC4zVjIzMy4zYzEwLjUtMTMuOCAyOC4yLTExLjEgMzMuOS05LjN2LTQwLjhjLTYtMi4xLTI2LjctNi0zNy4xIDEzLjF6bTkyLjMtNzIuM2wtNDQuNiA5LjV2MzYuMmw0NC42LTkuNXpNNDQuOSAyMjguM2MwLTYuOSA1LjgtOS42IDE1LjEtOS43IDEzLjUgMCAzMC43IDQuMSA0NC4yIDExLjR2LTQxLjhjLTE0LjctNS44LTI5LjQtOC4xLTQ0LjEtOC4xLTM2IDAtNjAgMTguOC02MCA1MC4yIDAgNDkuMiA2Ny41IDQxLjIgNjcuNSA2Mi40IDAgOC4yLTcuMSAxMC45LTE3IDEwLjktMTQuNyAwLTMzLjctNi4xLTQ4LjYtMTQuMnY0MGMxNi41IDcuMSAzMy4yIDEwLjEgNDguNSAxMC4xIDM2LjkgMCA2Mi4zLTE1LjggNjIuMy00Ny44IDAtNTIuOS02Ny45LTQzLjQtNjcuOS02My40ek02NDAgMjYxLjZjMC00NS41LTIyLTgxLjQtNjQuMi04MS40cy02Ny45IDM1LjktNjcuOSA4MS4xYzAgNTMuNSAzMC4zIDc4LjIgNzMuNSA3OC4yIDIxLjIgMCAzNy4xLTQuOCA0OS4yLTExLjV2LTMzLjRjLTEyLjEgNi4xLTI2IDkuOC00My42IDkuOC0xNy4zIDAtMzIuNS02LjEtMzQuNS0yNi45aDg2LjljLjItMi4zLjYtMTEuNi42LTE1Ljl6bS04Ny45LTE2LjhjMC0yMCAxMi4zLTI4LjQgMjMuNC0yOC40IDEwLjkgMCAyMi41IDguNCAyMi41IDI4LjR6bS0xMTIuOS02NC42Yy0xNy40IDAtMjguNiA4LjItMzQuOCAxMy45bC0yLjMtMTFIMzYzdjIwNC44bDQ0LjQtOS40LjEtNTAuMmM2LjQgNC43IDE1LjkgMTEuMiAzMS40IDExLjIgMzEuOCAwIDYwLjgtMjMuMiA2MC44LTc5LjYuMS01MS42LTI5LjMtNzkuNy02MC41LTc5Ljd6bS0xMC42IDEyMi41Yy0xMC40IDAtMTYuNi0zLjgtMjAuOS04LjRsLS4zLTY2YzQuNi01LjEgMTEtOC44IDIxLjItOC44IDE2LjIgMCAyNy40IDE4LjIgMjcuNCA0MS40LjEgMjMuOS0xMC45IDQxLjgtMjcuNCA0MS44em0tMTI2LjcgMzMuN2g0NC42VjE4My4yaC00NC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHViYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNi41IDI5NC4ybDU4LjggMjIuOWM5LjEtMzYuOCAyNS40LTYxLjEgNTUtNjEuMWM0OS40IDAgNzEuNCA2My42IDE0Mi40IDYzLjZjMTUuNiAwIDM1LjktMi44IDU1LjMtMTMuM1YzNjhjMCA2MS44LTUwLjQgMTEyLTExMi4zIDExMkgwbDQxLjgtNTZMMCAzNjhsNDEuNy01NkwwIDI1Ni4xbDQxLjgtNTZMMCAxNDQuMSA0MS44IDg4IDAgMzJIMzM1LjdDMzk3LjYgMzIgNDQ4IDgyLjMgNDQ4IDE0NC4xdjUxLjNjLTkuMiAzNi4zLTI1LjkgNjAuNi01NSA2MC42Yy00OS42IDAtNzEuNi02My41LTE0Mi40LTYzLjVjLTM1LjkgMC05NS4yIDE0LjYtMTE0LjEgMTAxLjZoMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1ZGlvdmluYXJpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MC4zIDE4Ny43bDQuMiAyOHYyOGwtMjUuMSA0NC4xLTM5LjggNzguNC01Ni4xIDY3LjUtNzkuMSAzNy44LTE3LjcgMjQuNS03LjcgMTItOS42IDRzMTcuMy02My42IDE5LjQtNjMuNmMyLjEgMCAyMC4zLjcgMjAuMy43bDY2LjctMzguNi05Mi41IDI2LjEtNTUuOSAzNi44LTIyLjggMjgtNi42IDEuNCAyMC44LTczLjYgNi45LTUuNSAyMC43IDEyLjkgODguMy00NS4yIDU2LjgtNTEuNSAxNC44LTY4LjQtMTI1LjQgMjMuMyAxNS4yLTE4LjItMTczLjQtNTMuMyA4MS45LTEwLjUtMTY2LTEyMi45TDEzMy41IDEwOCAzMi4yIDBsMjUyLjkgMTI2LjYtMzEuNS0zOEwzNzggMTYzIDIzNC43IDY0bDE4LjcgMzguNC00OS42LTE4LjFMMTU4LjMgMGwxOTQuNiAxMjJMMzEwIDY2LjJsMTA4IDk2LjQgMTItOC45LTIxLTE2LjQgNC4yLTM3LjhMNDUxIDg5LjFsMjkuMiAyNC43IDExLjUgNC4yLTcgNi4yIDguNSAxMi0xMy4xIDcuNC0xMC4zIDIwLjIgMTAuNSAyMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHVtYmxldXBvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDE3Ny41Yy05LjggMC0xNy44IDgtMTcuOCAxNy44djEwNi45YzAgNDAuOS0zMy45IDczLjktNzQuOSA3My45LTQxLjQgMC03NC45LTMzLjUtNzQuOS03NC45di00Ni41aDU3LjN2NDUuOGMwIDEwIDggMTcuOCAxNy44IDE3LjhzMTcuOC03LjkgMTcuOC0xNy44VjIwMC4xYzAtNDAgMzQuMi03Mi4xIDc0LjctNzIuMSA0MC43IDAgNzQuNyAzMi4zIDc0LjcgNzIuNnYyMy43bC0zNC4xIDEwLjEtMjIuOS0xMC43di0yMC42Yy4xLTkuNi03LjktMTcuNi0xNy43LTE3LjZ6bTE2Ny42IDEyMy42YzAgNDEuNC0zMy41IDc0LjktNzQuOSA3NC45LTQxLjIgMC03NC45LTMzLjItNzQuOS03NC4yVjI2M2wyMi45IDEwLjcgMzQuMS0xMC4xdjQ3LjFjMCA5LjggOCAxNy42IDE3LjggMTcuNnMxNy44LTcuOSAxNy44LTE3LjZ2LTQ4aDU3LjNjLS4xIDQ1LjktLjEgNDYuNC0uMSA0Ni40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHVtYmxldXBvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuOSAyNjZ2NjkuN2MwIDYyLjEtNTAuMyAxMTIuNC0xMTIuNCAxMTIuNC02MS44IDAtMTEyLjQtNDkuOC0xMTIuNC0xMTEuM3YtNzAuMmwzNC4zIDE2IDUxLjEtMTUuMlYzMzhjMCAxNC43IDEyIDI2LjUgMjYuNyAyNi41UzQxNyAzNTIuNyA0MTcgMzM4di03Mmg4NS45em0tMjI0LjctNTguMmwzNC4zIDE2IDUxLjEtMTUuMlYxNzNjMC02MC41LTUxLjEtMTA5LTExMi4xLTEwOS02MC44IDAtMTEyLjEgNDguMi0xMTIuMSAxMDguMnYxNjIuNGMwIDE0LjktMTIgMjYuNy0yNi43IDI2LjdTODYgMzQ5LjUgODYgMzM0LjZWMjY2SDB2NjkuN0MwIDM5Ny43IDUwLjMgNDQ4IDExMi40IDQ0OGM2MS42IDAgMTEyLjQtNDkuNSAxMTIuNC0xMTAuOFYxNzYuOWMwLTE0LjcgMTItMjYuNyAyNi43LTI2LjdzMjYuNyAxMiAyNi43IDI2Ljd2MzAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VwZXJwb3dlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDMyYy04My4zIDExLTE2Ni44IDIyLTI1MCAzMy05MiAxMi41LTE2My4zIDg2LjctMTY5IDE4MC0zLjMgNTUuNSAxOCAxMDkuNSA1Ny44IDE0OC4yTDAgNDgwYzgzLjMtMTEgMTY2LjUtMjIgMjQ5LjgtMzMgOTEuOC0xMi41IDE2My4zLTg2LjggMTY4LjctMTc5LjggMy41LTU1LjUtMTgtMTA5LjUtNTcuNy0xNDguMkw0NDggMzJ6bS03OS43IDIzMi4zYy00LjIgNzkuNS03NCAxMzkuMi0xNTIuOCAxMzQuNS03OS41LTQuNy0xNDAuNy03MS0xMzYuMy0xNTEgNC41LTc5LjIgNzQuMy0xMzkuMyAxNTMtMTM0LjUgNzkuMyA0LjcgMTQwLjUgNzEgMTM2LjEgMTUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdXBwbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDI2Mi41YzAgNjQuMS0xMDkgMTE2LjEtMjQzLjUgMTE2LjEtMjQuOCAwLTQ4LjYtMS44LTcxLjEtNSA3LjcuNCAxNS41LjYgMjMuNC42IDEzNC41IDAgMjQzLjUtNTYuOSAyNDMuNS0xMjcuMSAwLTI5LjQtMTkuMS01Ni40LTUxLjItNzggNjAgMjEuMSA5OC45IDU1LjEgOTguOSA5My40ek00Ny43IDIyNy45Yy0uMS03MC4yIDEwOC44LTEyNy4zIDI0My4zLTEyNy42IDcuOSAwIDE1LjYuMiAyMy4zLjUtMjIuNS0zLjItNDYuMy00LjktNzEtNC45QzEwOC44IDk2LjMtLjEgMTQ4LjUgMCAyMTIuNmMuMSAzOC4zIDM5LjEgNzIuMyA5OS4zIDkzLjMtMzIuMy0yMS41LTUxLjUtNDguNi01MS42LTc4em02MC4yIDM5LjlzMTAuNSAxMy4yIDI5LjMgMTMuMmMxNy45IDAgMjguNC0xMS41IDI4LjQtMjUuMSAwLTI4LTQwLjItMjUuMS00MC4yLTM5LjcgMC01LjQgNS4zLTkuMSAxMi41LTkuMSA1LjcgMCAxMS4zIDIuNiAxMS4zIDYuNnYzLjloMTQuMnYtNy45YzAtMTIuMS0xNS40LTE2LjgtMjUuNC0xNi44LTE2LjUgMC0yOC41IDEwLjItMjguNSAyNC4xIDAgMjYuNiA0MC4yIDI1LjQgNDAuMiAzOS45IDAgNi42LTUuOCAxMC4xLTEyLjMgMTAuMS0xMS45IDAtMjAuNy0xMC4xLTIwLjctMTAuMWwtOC44IDEwLjl6bTEyMC44LTczLjZ2NTQuNGMwIDExLjMtNy4xIDE3LjgtMTcuOCAxNy44LTEwLjcgMC0xNy44LTYuNS0xNy44LTE3Ljd2LTU0LjVoLTE1Ljh2NTVjMCAxOC45IDEzLjQgMzEuOSAzMy43IDMxLjkgMjAuMSAwIDMzLjQtMTMgMzMuNC0zMS45di01NWgtMTUuN3ptMzQuNCA4NS40aDE1Ljh2LTI5LjVoMTUuNWMxNiAwIDI3LjItMTEuNSAyNy4yLTI4LjFzLTExLjItMjcuOC0yNy4yLTI3LjhoLTM5LjF2MTMuNGg3Ljh2NzJ6bTE1LjgtNDN2LTI5LjFoMTIuOWM4LjcgMCAxMy43IDUuNyAxMy43IDE0LjQgMCA4LjktNS4xIDE0LjctMTQgMTQuN2gtMTIuNnptNTcgNDNoMTUuOHYtMjkuNWgxNS41YzE2IDAgMjcuMi0xMS41IDI3LjItMjguMXMtMTEuMi0yNy44LTI3LjItMjcuOGgtMzkuMXYxMy40aDcuOHY3MnptMTUuNy00M3YtMjkuMWgxMi45YzguNyAwIDEzLjcgNS43IDEzLjcgMTQuNCAwIDguOS01IDE0LjctMTQgMTQuN2gtMTIuNnptNTcuMSAzNC44YzAgNS44IDIuNCA4LjIgOC4yIDguMmgzNy42YzUuOCAwIDguMi0yLjQgOC4yLTguMnYtMTNoLTE0LjN2NS4yYzAgMS43LTEgMi42LTIuNiAyLjZoLTE4LjZjLTEuNyAwLTIuNi0xLTIuNi0yLjZ2LTYxLjJjMC01LjctMi40LTguMi04LjItOC4ySDQwMXYxMy40aDUuMmMxLjcgMCAyLjYgMSAyLjYgMi42djYxLjJ6bTYzLjQgMGMwIDUuOCAyLjQgOC4yIDguMiA4LjJINTE5YzUuNyAwIDguMi0yLjQgOC4yLTguMnYtMTNoLTE0LjN2NS4yYzAgMS43LTEgMi42LTIuNiAyLjZoLTE5LjdjLTEuNyAwLTIuNi0xLTIuNi0yLjZ2LTIwLjNoMjcuN3YtMTMuNEg0ODh2LTIyLjRoMTkuMmMxLjcgMCAyLjYgMSAyLjYgMi42djUuMkg1MjR2LTEzYzAtNS43LTIuNS04LjItOC4yLTguMmgtNTEuNnYxMy40aDcuOHY2My45em01OC45LTc2djUuOWgxLjZ2LTUuOWgyLjd2LTEuMmgtN3YxLjJoMi43em01LjctMS4ydjcuMWgxLjV2LTUuN2wyLjMgNS43aDEuM2wyLjMtNS43djUuN2gxLjV2LTcuMWgtMi4zbC0yLjEgNS4xLTIuMS01LjFoLTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTMuMSAxOTIuNkExMC40IDEwLjQgMCAxIDEgNjA0LjUgMjEwYTEwLjQgMTAuNCAwIDEgMSAtMTEuNC0xNy40em0tNDcuMSAxMi4yYTM4LjUgMzguNSAwIDEgMSA3NS0xNy42IDM4LjUgMzguNSAwIDEgMSAtNzUgMTcuNnpNNDMzLjcgMzM2LjdjMy4yIDQuNiA1LjggOSA3LjMgMTMuNGMxIDMuMSAyLjQgNy4zIDUuNSA4LjljLjIgLjEgLjMgLjIgLjUgLjJjNS43IDIuMSAyMC4zIDEuNyAyMC4zIDEuN2gyNi44YzIuMyAwIDIyLjQgMCAyMS45LTIuM2MtMi40LTEwLjgtMTQuOS0xMi43LTI0LjQtMTguM2MtOC43LTUuMi0xNy0xMS4xLTIwLjgtMjEuM2MtMi01LjItLjgtMTcuNCAyLjYtMjEuOGMyLjUtMy4yIDYuMS01LjMgMTAtNi4yYzQuMy0uOSA4LjgtLjEgMTMuMSAuM2M1LjMgLjUgMTAuNiAxLjUgMTUuOSAyLjJjMTAuMyAxLjMgMjAuNiAxLjkgMzEgMS42YzE3LjEtLjUgMzQuMi0zLjIgNTAuNC04LjdjMTEuMy0zLjggMjIuNC04LjkgMzItMTYuMWMxMC45LTguMSA4LjEtNy40LTMtNi4yYy0xMy4zIDEuNC0yNi42IDEuNi0zOS45IC44Yy0xMi40LS43LTI0LjctMi4yLTM1LjktNy45Yy04LjgtNC42LTE2LjQtOS4xLTIzLjQtMTYuMmMtMS0xLjEtMS43LTQuMiAuMi02LjJjMS45LTEuOSA1LjgtLjggNyAuMmMxMi4yIDEwLjIgMzAuNSAxOC42IDQ5LjMgMTkuNWMxMC4yIC41IDIwLjEgLjcgMzAuNCAuM2M1LjEtLjIgMTIuOC0uMiAxNy45LS4zYzIuNiAwIDkuOCAuNyAxMS4yLTIuMWMuNC0uOCAuNC0xLjggLjMtMi43Yy0xLjUtNDAuOS00LjUtODYuOS00Ny4zLTEwNi41Yy0zMS45LTE0LjYtNzkuNy0zNy4yLTk5LjktNDYuNmMtNC43LTIuMi0xMC4yIDEuMy0xMC4yIDYuNWMwIDEzLjYgLjcgMzMuMyAuNyA1MS4xYy05LjctOS45LTI2LTE2LjEtMzguNC0yMS44Yy0xNC4xLTYuNS0yOC43LTEyLTQzLjUtMTYuNmMtMjkuOC05LjItNjAuNy0xNC45LTkxLjctMThjLTM1LjItMy41LTcxLTEuOC0xMDUuNyA1LjNDMTQ3IDExNS4xIDkwLjggMTQyLjYgNDguMiAxODIuN0MyMi4xIDIwNy4zIDEuNiAyNDIuNCAuMiAyNzcuOWMtMiA1MC4zIDEyLjEgNzcuMyAzOCAxMDUuMmM0MS4zIDQ0LjQgMTMwLjIgNTAuNiAxNjYuMi0yYzE2LjItMjMuNyAxOS43LTU1LjggOC04MmMtMTEuOC0yNi4yLTM4LjgtNDUuMS02Ny40LTQ2Yy0yMi4yLS43LTQ1LjkgMTAuNi01NC41IDMxLjFjLTYuNSAxNS43LTIuOCAzNS4xIDkgNDcuM2M0LjYgNC44IDEwLjkgOC43IDE3LjcgNy4xYzQtLjkgNy40LTMuOSA4LThjLjktNi00LjQtOS45LTcuNi0xNC41Yy01LjgtOC4zLTQuNy0yMC45IDIuNy0yNy45YzYuMi02IDE1LjMtNy44IDIzLjktNy43YzggMCAxNi4yIDEuNCAyMy4xIDUuNWM5LjcgNS43IDE2LjIgMTYuMiAxOC40IDI3LjJjNi43IDMzLTIwLjIgNTkuOS01Ni42IDYyYy0xOC42IDEuMS0zNy42LTMuOC01Mi4xLTE1LjVDNDAuMSAzMjkuOSAzMS4xIDI2OS40IDczLjIgMjM3YzQwLTMwLjcgOTAuNC0yMi44IDEyMC4yLTYuOGMyMy44IDEyLjggNDEuNSAzMy42IDU1IDU2LjdjNi43IDExLjYgMTIuNSAyMy43IDE3LjggMzYuMWM1LjEgMTEuOCA5LjkgMjMuOCAyMC4yIDMyLjVjNi44IDUuOCAxNS4yIDUuNiAyNC4xIDUuNmg1MC44YzYuOSAwIDUuMi00LjYgMi4yLTcuN2MtNi43LTYuOS0xNi40LTguNC0yNS40LTEwLjljLTIwLjUtNS42LTE4LjQtMzIuOC0xMi43LTMyLjhjMTguMyAwIDE4LjkgLjYgMzQuOSAuM2MyMy4yLS4zIDMwLjItMS43IDQ4LjMgNWM5LjcgMy42IDE5IDEzLjEgMjUuMSAyMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTd2lmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMTU2LjA5YzAtNC41MS0uMDgtOS0uMi0xMy41MmExOTYuMzEgMTk2LjMxIDAgMCAwLTIuNTgtMjkuNDIgOTkuNjIgOTkuNjIgMCAwIDAtOS4yMi0yOEE5NC4wOCA5NC4wOCAwIDAgMCAzOTQuODQgNDRhOTkuMTcgOTkuMTcgMCAwIDAtMjgtOS4yMiAxOTUgMTk1IDAgMCAwLTI5LjQzLTIuNTljLTQuNTEtLjEyLTktLjE3LTEzLjUyLS4ySDEyNC4xNGMtNC41MSAwLTkgLjA4LTEzLjUyLjItMi40NS4wNy00LjkxLjE1LTcuMzcuMjdhMTcxLjY4IDE3MS42OCAwIDAgMC0yMi4wNiAyLjMyIDEwMy4wNiAxMDMuMDYgMCAwIDAtMjEuMjEgNi4xcS0zLjQ2IDEuNDUtNi44MSAzLjEyYTk0LjY2IDk0LjY2IDAgMCAwLTE4LjM5IDEyLjMyYy0xLjg4IDEuNjEtMy42OSAzLjI4LTUuNDMgNUE5My44NiA5My44NiAwIDAgMCAxMiA4NS4xN2E5OS40NSA5OS40NSAwIDAgMC05LjIyIDI4IDE5Ni4zMSAxOTYuMzEgMCAwIDAtMi41NCAyOS40Yy0uMTMgNC41MS0uMTggOS0uMjEgMTMuNTJ2MTk5LjgzYzAgNC41MS4wOCA5IC4yMSAxMy41MWExOTYuMDggMTk2LjA4IDAgMCAwIDIuNTggMjkuNDIgOTkuMyA5OS4zIDAgMCAwIDkuMjIgMjhBOTQuMzEgOTQuMzEgMCAwIDAgNTMuMTcgNDY4YTk5LjQ3IDk5LjQ3IDAgMCAwIDI4IDkuMjEgMTk1IDE5NSAwIDAgMCAyOS40MyAyLjU5YzQuNS4xMiA5IC4xNyAxMy41Mi4ySDMyMy45MWM0LjUxIDAgOS0uMDggMTMuNTItLjJhMTk2LjU5IDE5Ni41OSAwIDAgMCAyOS40NC0yLjU5IDk5LjU3IDk5LjU3IDAgMCAwIDI4LTkuMjFBOTQuMjIgOTQuMjIgMCAwIDAgNDM2IDQyNi44NGE5OS4zIDk5LjMgMCAwIDAgOS4yMi0yOCAxOTQuNzkgMTk0Ljc5IDAgMCAwIDIuNTktMjkuNDJjLjEyLTQuNS4xNy05IC4yLTEzLjUxVjE3Mi4xNGMtLjAxLTUuMzUtLjAxLTEwLjctLjAxLTE2LjA1em0tNjkuODggMjQxYy0yMC0zOC45My01Ny4yMy0yOS4yNy03Ni4zMS0xOS40Ny0xLjcyIDEtMy40OCAyLTUuMjUgM2wtLjQyLjI1Yy0zOS41IDIxLTkyLjUzIDIyLjU0LTE0NS44NS0uMzhBMjM0LjY0IDIzNC42NCAwIDAgMSA0NSAyOTAuMTJhMjMwLjYzIDIzMC42MyAwIDAgMCAzOS4xNyAyMy4zN2M1Ni4zNiAyNi40IDExMyAyNC40OSAxNTMgMC01Ny00My44NS0xMDQuNi0xMDEtMTQxLjA5LTE0Ny4yMmExOTcuMDkgMTk3LjA5IDAgMCAxLTE4Ljc4LTI1LjljNDMuNyA0MCAxMTIuNyA5MC4yMiAxMzcuNDggMTA0LjEyLTUyLjU3LTU1LjQ5LTk4Ljg5LTEyMy45NC05Ni43Mi0xMjEuNzQgODIuNzkgODMuNDIgMTU5LjE4IDEzMC41OSAxNTkuMTggMTMwLjU5IDIuODggMS41OCA1IDIuODUgNi43MyA0YTEyNy40NCAxMjcuNDQgMCAwIDAgNC4xNi0xMi40N2MxMy4yMi00OC4zMy0xLjY2LTEwMy41OC0zNS4zMS0xNDkuMkMzMjkuNjEgMTQxLjc1IDM3NSAyMjkuMzQgMzU2LjQgMzAzLjQyYy0uNDQgMS43My0uOTUgMy40LTEuNDQgNS4wOSAzOC41MiA0Ny40IDI4LjA0IDk4LjE3IDIzLjEzIDg4LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTeW1mb255IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTEzMy43NCAxNDMuNTRjLTExLjQ3LjQxLTE5LjQtNi40NS0xOS43Ny0xNi44Ny0uMjctOS4xOCA2LjY4LTEzLjQ0IDYuNTMtMTguODUtLjIzLTYuNTUtMTAuMTYtNi44Mi0xMi44Ny02LjY3LTM5Ljc4IDEuMjktNDguNTkgNTctNTguODkgMTEzLjg1IDIxLjQzIDMuMTUgMzYuNjUtLjcyIDQ1LjE0LTYuMjIgMTItNy43NS0zLjM0LTE1LjcyLTEuNDItMjQuNTYgNC0xOC4xNiAzMi41NS0xOSAzMiA1LjMtLjM2IDE3Ljg2LTI1LjkyIDQxLjgxLTc3LjYgMzUuNy0xMC43NiA1OS41Mi0xOC4zNSAxMTUtNTguMiAxNjEuNzItMjkgMzQuNDYtNTguNCAzOS44Mi03MS41OCA0MC4yNi0yNC42NS44NS00MS0xMi4zMS00MS41OC0yOS44NC0uNTYtMTcgMTQuNDUtMjYuMjYgMjQuMzEtMjYuNTkgMjEuODktLjc1IDMwLjEyIDI1LjY3IDE0Ljg4IDM0LTEyLjA5IDkuNzEuMTEgMTIuNjEgMi4wNSAxMi41NSAxMC40Mi0uMzYgMTcuMzQtNS41MSAyMi4xOC05IDI0LTIwIDMzLjI0LTU0Ljg2IDQ1LjM1LTExOC4zNSA4LjE5LTQ5LjY2IDE3LTc4IDE4LjIzLTgyLTE2LjkzLTEyLjc1LTI3LjA4LTI4LjU1LTQ5Ljg1LTM0LjcyLTE1LjYxLTQuMjMtMjUuMTItLjYzLTMxLjgxIDcuODMtNy45MiAxMC01LjI5IDIzIDIuMzcgMzAuN2wxMi42MyAxNGMxNS41MSAxNy45MyAyNCAzMS44NyAyMC44IDUwLjYyLTUuMDYgMjkuOTMtNDAuNzIgNTIuOS04Mi44OCAzOS45NC0zNi0xMS4xMS00Mi43LTM2LjU2LTM4LjM4LTUwLjYyIDcuNTEtMjQuMTUgNDIuMzYtMTEuNzIgMzQuNjIgMTMuNi0yLjc5IDguNi00LjkyIDguNjgtNi4yOCAxMy4wNy00LjU2IDE0Ljc3IDQxLjg1IDI4LjQgNTEtMS4zOSA0LjQ3LTE0LjUyLTUuMy0yMS43MS0yMi4yNS0zOS44NS0yOC40Ny0zMS43NS0xNi02NS40OSAyLjk1LTc5LjY3QzIwNC4yMyAxNDAuMTMgMjUxLjk0IDE5NyAyNjIgMjA1LjI5YzM3LjE3LTEwOSAxMDAuNTMtMTA1LjQ2IDEwMi40My0xMDUuNTMgMjUuMTYtLjgxIDQ0LjE5IDEwLjU5IDQ0LjgzIDI4LjY1LjI1IDcuNjktNC4xNyAyMi41OS0xOS41MiAyMy4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVhbXNwZWFrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Mi44IDM3LjJjLTMyLjIgMzguMS01Ni4xIDgyLjYtNjkuOSAxMzAuNWMwIC4yLS4xIC4zLS4xIC41QzQzLjUgMTg0LjQgMTYgMjIzIDE2IDI2OGMwIDU5LjYgNDguNCAxMDggMTA4IDEwOHMxMDgtNDguNCAxMDgtMTA4YzAtNTMuNS0zOC45LTk3LjktOTAtMTA2LjVjMTUuNy00MS44IDQwLjQtNzkuNiA3Mi4zLTExMC43YzEuOC0xLjYgNC0yLjYgNi4zLTMuMWMzNy4yLTExLjUgNzYuNy0xMy4zIDExNC44LTUuMkM0NTQuNyA2Ny42IDUzNCAxODAuNyA1MTcuMSAzMDEuM2MtOC40IDYyLjYtMzguNiAxMTIuNy04Ny43IDE1MS40Yy01MC4xIDM5LjctMTA3LjUgNTQuMy0xNzAuMiA1Mi4ybC0yNC0xYzEyLjQgMi44IDI1IDQuOSAzNy42IDYuM2M0MC43IDQuMiA4MS40IDIuMSAxMjAuMS0xMi41Yzk0LTM1LjUgMTQ5LjMtMTAyLjMgMTYyLjktMjAyLjVjNC44LTUyLjYtNS44LTEwNS40LTMwLjgtMTUyQzQ1NC42IDExLjMgMjkwLjgtMzguNCAxNTkgMzJjLTIuNCAxLjQtNC41IDMuMS02LjMgNS4yek0zMDkuNCA0MzMuOWMtMi4xIDExLjUtNC4yIDIxLjktMTQuNiAzMS4zYzUzLjItMSAxMjMuMi0yOS4yIDE2MS44LTk3LjFjMzkuNy02OS45IDM3LjYtMTM5LjktNi4zLTIwNy44QzQxMy44IDEwNSAzNjAuNSA3Ny45IDI5My43IDczLjdjMS41IDIuMyAzLjIgNC40IDUuMiA2LjNsNS4yIDYuM2MyNS4xIDMxLjMgMzcuNiA2Ny45IDQyLjggMTA3LjVjMi4xIDE1LjctMSAzMC4zLTEzLjYgNDEuOGMtNC4yIDMuMS01LjIgNi4zLTQuMiAxMC40bDcuMyAxNy43TDM2NS43IDMxOGM1LjIgMTEuNSA0LjIgMTkuOC02LjMgMjguMmMtMy4yIDIuNS02LjcgNC42LTEwLjQgNi4zbC0xOC44IDguNCAzLjEgMTMuNmMzLjEgNi4zIDEgMTIuNS0zLjEgMTcuN2MtMi41IDIuNC0zLjggNS45LTMuMSA5LjRjMi4xIDExLjUtMi4xIDE5LjgtMTIuNSAyNS4xYy0yLjEgMS00LjIgNS4yLTUuMiA3LjN6bS0xMzMuNi0zLjFjMTYuNyAxMS41IDM0LjUgMjAuOSA1My4yIDI2LjFjMjQgNS4yIDQxLjgtNi4zIDQ0LjktMzAuM2MxLTguNCA1LjItMTQuNiAxMi41LTE3LjdjNy4zLTQuMiA4LjQtNy4zIDIuMS0xMy42bC05LjQtOC40IDEzLjYtNC4yYzYuMy0yLjEgNy4zLTUuMiA1LjItMTEuNWMtMS40LTMtMi40LTYuMi0zLjEtOS40Yy0zLjEtMTQuNi0yLjEtMTUuNyAxMS41LTE4LjhjOC40LTMuMSAxNS43LTYuMyAyMS45LTEyLjVjMy4xLTIuMSAzLjEtNC4yIDEtOC40bC0xNi43LTMwLjNjLTEtMS45LTIuMS0zLjgtMy4xLTUuN2MtNi40LTExLjctMTMtMjMuNi0xNS43LTM3LjFjLTIuMS05LjQtMS0xNy43IDguNC0yNGM1LjItNC4yIDguNC05LjQgOC40LTE2LjdjLS40LTEwLjEtMS41LTIwLjMtMy4xLTMwLjNjLTYuMy0zNy42LTIzLTY4LjktNTEuMi05NWMtNS4yLTQuMi05LjQtNi4zLTE2LjctNC4yTDIwMy45IDkxLjVjMiAxLjIgNCAyLjQgNiAzLjZsMCAwYzYuMyAzLjcgMTIuMiA3LjMgMTcgMTIuMWMzMC4zIDI2LjEgNDEuOCA2MS42IDQ1LjkgMTAwLjJjMSA4LjQgMCAxNi43LTcuMyAyMS45Yy04LjQgNS4yLTEwLjQgMTIuNS03LjMgMjAuOWM0LjkgMTMuMiAxMC40IDI2IDE2LjcgMzguNkwyOTEuNiAzMThjLTYuMyA4LjQtMTMuNiAxMS41LTIxLjkgMTQuNmMtMTIuNSAzLjEtMTQuNiA3LjMtMTAuNCAyMC45Yy42IDEuNSAxLjQgMi44IDIuMSA0LjJjMi4xIDUuMiAxIDguNC00LjIgMTAuNGwtMTIuNSAzLjEgNS4yIDQuMiA0LjIgNC4yYzQuMiA1LjIgNC4yIDguNC0yLjEgMTAuNGMtNy4zIDQuMi0xMS41IDkuNC0xMS41IDE3LjdjMCAxMi41LTcuMyAxOS44LTE4LjggMjRjLTMuOCAxLTcuNiAxLjUtMTEuNSAxbC0zNC41LTIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVsZWdyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4LDhDMTExLjAzMyw4LDAsMTE5LjAzMywwLDI1NlMxMTEuMDMzLDUwNCwyNDgsNTA0LDQ5NiwzOTIuOTY3LDQ5NiwyNTYsMzg0Ljk2Nyw4LDI0OCw4Wk0zNjIuOTUyLDE3Ni42NmMtMy43MzIsMzkuMjE1LTE5Ljg4MSwxMzQuMzc4LTI4LjEsMTc4LjMtMy40NzYsMTguNTg0LTEwLjMyMiwyNC44MTYtMTYuOTQ4LDI1LjQyNS0xNC40LDEuMzI2LTI1LjMzOC05LjUxNy0zOS4yODctMTguNjYxLTIxLjgyNy0xNC4zMDgtMzQuMTU4LTIzLjIxNS01NS4zNDYtMzcuMTc3LTI0LjQ4NS0xNi4xMzUtOC42MTItMjUsNS4zNDItMzkuNSwzLjY1Mi0zLjc5Myw2Ny4xMDctNjEuNTEsNjguMzM1LTY2Ljc0Ni4xNTMtLjY1NS4zLTMuMS0xLjE1NC00LjM4NHMtMy41OS0uODQ5LTUuMTM1LS41cS0zLjI4My43NDYtMTA0LjYwOCw2OS4xNDItMTQuODQ1LDEwLjE5NC0yNi44OTQsOS45MzRjLTguODU1LS4xOTEtMjUuODg4LTUuMDA2LTM4LjU1MS05LjEyMy0xNS41MzEtNS4wNDgtMjcuODc1LTcuNzE3LTI2LjgtMTYuMjkxcS44NC02LjcsMTguNDUtMTMuNywxMDguNDQ2LTQ3LjI0OCwxNDQuNjI4LTYyLjNjNjguODcyLTI4LjY0Nyw4My4xODMtMzMuNjIzLDkyLjUxMS0zMy43ODksMi4wNTItLjAzNCw2LjYzOS40NzQsOS42MSwyLjg4NWExMC40NTIsMTAuNDUyLDAsMCwxLDMuNTMsNi43MTZBNDMuNzY1LDQzLjc2NSwwLDAsMSwzNjIuOTUyLDE3Ni42NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVuY2VudFdlaWJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcyLjMgNDk1LjhjMS40IDE5LjktMjcuNiAyMi4yLTI5LjcgMi45QzMxIDM2OC44IDczLjcgMjU5LjIgMTQ0IDE4NS41Yy0xNS42LTM0IDkuMi03Ny4xIDUwLjYtNzcuMSAzMC4zIDAgNTUuMSAyNC42IDU1LjEgNTUuMSAwIDQ0LTQ5LjUgNzAuOC04Ni45IDQ1LjEtNjUuNyA3MS4zLTEwMS40IDE2OS44LTkwLjUgMjg3LjJ6TTE5MiAuMUM2Ni4xLjEtMTIuMyAxMzQuMyA0My43IDI0Mi40IDUyLjQgMjU5LjggNzkgMjQ2LjkgNzAgMjI5IDIzLjcgMTM2LjQgOTEgMjkuOCAxOTIgMjkuOGM3NS40IDAgMTM2LjkgNjEuNCAxMzYuOSAxMzYuOSAwIDkwLjgtODYuOSAxNTMuOS0xNjcuNyAxMzMuMS0xOS4xLTQuMS0yNS42IDI0LjQtNi42IDI5LjEgMTEwLjcgMjMuMiAyMDQtNjAgMjA0LTE2Mi4zQzM1OC42IDc0LjcgMjg0IC4xIDE5MiAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlUmVkWWV0aSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguMjMgMjQxLjdsMjAuNyA3LjFjLTkuNi0yMy45LTIzLjktMzctMzEuNy00NC44bDcuMS0xOC4yYy4yIDAgMTIuMy0yNy44LTIuNS0zMC43LS42LTExLjMtNi42LTI3LTE4LjQtMjctNy42LTEwLjYtMTcuNy0xMi4zLTMwLjctNS45YTEyMi4yIDEyMi4yIDAgMCAwLTI1LjMgMTYuNWMtNS4zLTYuNC0zIC40LTMtMjkuOC0zNy4xLTI0LjMtNDUuNC0xMS43LTc0LjggM2wuNS41YTIzOS4zNiAyMzkuMzYgMCAwIDAtNjguNC0xMy4zYy01LjUtOC43LTE4LjYtMTkuMS0yNS4xLTI1LjFsMjQuOCA3LjFjLTUuNS01LjUtMjYuOC0xMi45LTM0LjItMTUuMiAxOC4yLTQuMSAyOS44LTIwLjggNDIuNS0zMy0zNC45LTEwLjEtNjcuOS01LjktOTcuOSAxMS44bDEyLTQ0LjJMMTgyIDBjLTMxLjYgMjQuMi0zMyA0MS45LTMzLjcgNDUuNS0uOS0yLjQtNi4zLTE5LjYtMTUuMi0yN2EzNS4xMiAzNS4xMiAwIDAgMC0uNSAyNS4zYzMgOC40IDUuOSAxNC44IDguNCAxOC45LTE2LTMuMy0yOC4zLTQuOS00OS4yIDBoLTMuN2wzMyAxNC4zYTE5NC4yNiAxOTQuMjYgMCAwIDAtNDYuNyA2Ny40bC0xLjcgOC40IDEuNyAxLjcgNy42LTQuN2MtMy4zIDExLjYtNS4zIDE5LjQtNi42IDI1LjhhMjAwLjE4IDIwMC4xOCAwIDAgMC0yNy44IDQwLjNjLTE1IDEtMzEuOCAxMC44LTQwLjMgMTQuM2wzIDMuNCAyOC44IDFjLS41IDEtLjcgMi4yLTEuMiAzLjItNy4zIDYuNC0zOS44IDM3LjctMzMgODAuN2wyMC4yLTIyLjRjLjUgMS43LjcgMy40IDEuMiA1LjIgMCAyNS41LjQgODkuNiA2NC45IDE1MC41IDQzLjYgNDAgOTYgNjAuMiAxNTcuNSA2MC4yIDEyMS43IDAgMjIzLTg3LjMgMjIzLTIxMS41IDYuOC05LjctMS4yIDMgMTYuNy0yNS4xbDEzIDE0LjMgMi41LS41QTE4MS44NCAxODEuODQgMCAwIDAgNDk1IDI1NWE0NC43NCA0NC43NCAwIDAgMC02LjgtMTMuM3pNMzk4IDExMS4ybC0uNSAyMS45YzUuNSAxOC4xIDE2LjkgMTcuMiAyMi40IDE3LjJsLTMuNC00LjcgMjIuNC01LjRhMjQyLjQ0IDI0Mi40NCAwIDAgMS0yNyAwYzEyLjgtMi4xIDMzLjMtMjkgNDMtMTEuMyAzLjQgNy42IDYuNCAxNy4yIDkuMyAyNy44bDEuNy01LjlhNTYuMzggNTYuMzggMCAwIDEtMS43LTE1LjJjNS40LjUgOC44IDMuNCA5LjMgMTAuMS41IDYuNCAxLjcgMTQuOCAzLjQgMjUuM2w0LjctMTEuM2M0LjYgMCA0LjUtMy42LTIuNSAyMC43LTIwLjktOC43LTM1LjEtOC40LTQ2LjUtOC40bDE4LjItMTZjLTI1LjMgOC4yLTMzIDEwLjgtNTQuOCAyMC45LTEuMS01LjQtNS0xMy41LTE2LTE5LjktMy4yIDMuOC0yLjguOS0uNyAxNC44aC0yLjVhNjIuMzIgNjIuMzIgMCAwIDAtOC40LTIzLjFsNC4yLTMuNGM4LjQtNy4xIDExLjgtMTQuMyAxMC42LTIxLjktLjUtNi40LTUuNC0xMy41LTEzLjUtMjAuNyA1LjYtMy40IDE1LjItLjQgMjguMyA4LjV6bS0zOS42LTEwLjFjMi43IDEuOSAxMS40IDUuNCAxOC45IDE3LjIgNC4yIDguNCA0IDkuOCAzLjQgMTEuMS0uNSAyLjQtLjUgNC4zLTMgNy4xLTEuNyAyLjUtNS40IDQuNy0xMS44IDcuNi03LjYtMTMtMTYuNS0yMy42LTI3LjgtMzEuMnpNOTEgMTQzLjFsMS4yLTEuN2MxLjItMi45IDQuMi03LjYgOS4zLTE1LjJsMi41LTMuNC0xMyAxMi4zIDUuNC00LjctMTAuMSA5LjMtNC4yIDEuMmMxMi4zLTI0LjEgMjMuMS00MS4zIDMyLjUtNTAuMiA5LjMtOS4zIDE2LTE2IDIwLjItMTkuNGwtNi40IDEuMmMtMTEuMy00LjItMTkuNC03LjEtMjQuOC04LjQgMi41LS41IDMuNy0uNSAzLjItLjUgMTAuMyAwIDE3LjUuNSAyMC45IDEuMmE1Mi4zNSA1Mi4zNSAwIDAgMCAxNiAyLjVsLjUtMS43LTguNC0zNS44IDEzLjUgMjlhNDIuODkgNDIuODkgMCAwIDAgNS45LTE0LjNjMS43LTYuNCA1LjQtMTMgMTAuMS0xOS40czcuNi0xMC42IDkuMy0xMS4zYTIzNC42OCAyMzQuNjggMCAwIDAtNi40IDI1LjNsLTEuNyA3LjEtLjUgNC43IDIuNSAyLjVDMTkwLjQgMzkuOSAyMTQgMzQgMjM5LjggMzQuNWwyMS4xLjVjLTExLjggMTMuNS0yNy44IDIxLjktNDguNSAyNC44YTIwMS4yNiAyMDEuMjYgMCAwIDEtMjMuNCAyLjlsLS4yLS41LTIuNS0xLjJhMjAuNzUgMjAuNzUgMCAwIDAtMTQgMmMtMi41LS4yLTQuOS0uNS03LjEtLjdsLTIuNSAxLjcuNSAxLjJjMiAuMiAzLjkuNSA2LjIuN2wtMiAzLjQgMy40LS41LTEwLjYgMTEuM2MtNC4yIDMtNS40IDYuNC00LjIgOS4zbDUuNC0zLjRoMS4yYTM5LjQgMzkuNCAwIDAgMSAyNS4zLTE1LjJ2LTNjNi40LjUgMTMgMSAxOS40IDEuMiA2LjQgMCA4LjQuNSA1LjQgMS4yYTE4OS42IDE4OS42IDAgMCAxIDIwLjcgMTMuNWMxMy41IDEwLjEgMjMuNiAyMS45IDMwIDM1LjQgOC44IDE4LjIgMTMuNSAzNy4xIDEzLjUgNTYuNmExNDEuMTMgMTQxLjEzIDAgMCAxLTMgMjguMyAyMDkuOTEgMjA5LjkxIDAgMCAxLTE2IDQ2bDIuNS41YzE4LjItMTkuNyA0MS45LTE2IDQ5LjItMTZsLTYuNCA1LjkgMjIuNCAxNy43LTEuNyAzMC43Yy01LjQtMTIuMy0xNi41LTIxLjEtMzMtMjcuOCAxNi41IDE0LjggMjMuNiAyMS4xIDIxLjkgMjAuMi00LjgtMi44LTMuNS0xLjktMTAuOC0zLjcgNC4xIDQuMSAxNy41IDE4LjggMTguMiAyMC43bC4yLjItLjIuMmMwIDEuOCAxLjYtMS4yLTE0IDIyLjktNzUuMi0xNS4zLTEwNi4yNy00Mi43LTE0MS4yLTYzLjJsMTEuOCAxLjJjLTExLjgtMTguNS0xNS42LTE3LjctMzguNC0yNi4xTDE0OSAyMjVjLTguOC0zLTE4LjItMy0yOC4zLjVsNy42LTEwLjYtMS4yLTEuN2MtMTQuOSA0LjMtMTkuOCA5LjItMjIuNiAxMS4zLTEuMS01LjUtMi44LTEyLjQtMTIuMy0yOC44bC0xLjIgMjctMTMuMi01YzEuNS0yNS4yIDUuNC01MC41IDEzLjItNzQuNnptMjc2LjUgMzMwYy00OS45IDI1LTU2LjEgMjIuNC01OSAyMy45LTI5LjgtMTEuOC01MC45LTMxLjctNjMuNS01OC44bDMwIDE2LjVjLTkuOC05LjMtMTguMy0xNi41LTM4LjQtNDQuM2wxMS44IDIzLjEtMTcuNy03LjZjMTQuMiAyMS4xIDIzLjUgNTEuNyA2Ni42IDczLjUtMTIwLjggMjQuMi0xOTktNzIuMS0yMDAuOS03NC4zYTI2Mi41NyAyNjIuNTcgMCAwIDAgMzUuNCAyNC44YzMuNCAxLjcgNy4xIDIuNSAxMC4xIDEuMmwtMTYtMjAuN2M5LjIgNC4yIDkuNSA0LjUgNjkuMSAyOS00Mi41LTIwLjctNzMuOC00MC44LTkzLjItNjAuMi0uNSA2LjQtMS4yIDEwLjEtMS4yIDEwLjFhODAuMjUgODAuMjUgMCAwIDEgMjAuNyAyNi42Yy0zOS0xOC45LTU3LjYtNDcuNi03MS4zLTgyLjYgNDkuOSA1NS4xIDExOC45IDM3LjUgMTIwLjUgMzcuMSAzNC44IDE2LjQgNjkuOSAyMy42IDExMy45IDEwLjYgMy4zIDAgMjAuMyAxNyAyNS4zIDM5LjFsNC4yLTMtMi41LTIzLjZjOSA5IDI0LjkgMjIuNiAzNC40IDEzLTE1LjYtNS4zLTIzLjUtOS41LTI5LjUtMzEuNyA0LjYgNC4yIDcuNiA5IDI3LjggMTVsMS4yLTEuMi0xMC41LTE0LjJjMTEuNy00LjgtMy41IDEgMzItMTAuOCA0LjMgMzQuMyA5IDQ5LjIuNyA4OS41em0xMTUuMy0yMTQuNGwtMi41LjUgMyA5LjNjLTMuNSA1LjktMjMuNyA0NC4zLTcxLjYgNzkuNy0zOS41IDI5LjgtNzYuNiAzOS4xLTgwLjkgNDAuM2wtNy42LTcuMS0xLjIgMyAxNC4zIDE2LTcuMS00LjcgMy40IDQuMmgtMS4ybC0yMS45LTEzLjUgOS4zIDI2LjYtMTktMjcuOS0xLjIgMi41IDcuNiAyOWMtNi4xLTguMi0yMS0zMi42LTU2LjgtMzkuNmwzMi41IDIxLjJhMjE0LjgyIDIxNC44MiAwIDAgMS05My4yLTYuNGMtNC4yLTEuMi04LjktMi41LTEzLjUtNC4ybDEuMi0zLTQ0LjgtMjIuNCAyNi4xIDIyLjRjLTU3LjcgOS4xLTExMy0yNS40LTEyNi40LTgzLjRsLTIuNS0xNi40LTIyLjI3IDIyLjNjMTkuNS01Ny41IDI1LjYtNTcuOSA1MS40LTcwLjEtOS4xLTUuMy0xLjYtMy4zLTM4LjQtOS4zIDE1LjgtNS44IDMzLTE1LjQgNzMgNS4yYTE4LjUgMTguNSAwIDAgMSAzLjctMS43Yy42LTMuMi40LS44IDEtMTEuOCAzLjkgMTAgMy42IDguNyAzIDkuM2wxLjcuNWMxMi43LTYuNSA4LjktNC41IDE3LTguOWwtNS40IDEzLjUgMjIuMy01LjgtOC40IDguNCAyLjUgMi41YzQuNS0xLjggMzAuMyAzLjQgNDAuOCAxNmwtMjMuNi0yLjVjMzkuNCAyMyA1MS41IDU0IDU1LjggNjkuNmwxLjctMS4yYy0yLjgtMjIuMy0xMi40LTMzLjktMTYtNDAuMSA0LjIgNSAzOS4yIDM0LjYgMTEwLjQgNDYtMTEuMy0uNS0yMy4xIDUuNC0zNC45IDE4LjlsNDYuNy0yMC4yLTkuMyAyMS45YzcuNi0xMC4xIDE0LjgtMjMuNiAyMS4yLTM5LjZ2LS41bDEuMi0zLTEuMiAxNmMxMy41LTQxLjggMjUuMy03OC41IDM1LjQtMTA5LjdsMTMuNS0yNy44di0ybC01LjQtNC4yaDEwLjFsNS45IDQuMiAyLjUtMS4yLTMuNC0xNiAxMi4zIDE4LjkgNDEuOC0yMC4yLTE0LjggMTMgLjUgMi45IDE3LjctLjVhMTg0IDE4NCAwIDAgMSAzMyA0LjJsLTIzLjYgMi41LTEuMiAzIDI2LjYgMjMuMWEyNTQuMjEgMjU0LjIxIDAgMCAxIDI3IDMyYy0xMS4yLTMuMy0xMC4zLTMuNC0yMS4yLTMuNGwxMi4zIDMyLjV6bS02LjEtNzEuM2wtMy45IDEzLTE0LjMtMTEuOHptLTI1NC44IDcuMWMxLjcgMTAuNiA0LjcgMTcuNyA4LjggMjEuOS05LjMgNi42LTI3LjUgMTMuOS00Ni41IDE2bC41IDEuMmE1MC4yMiA1MC4yMiAwIDAgMCAyNC44LTIuNWwtNy4xIDEzYzQuMi0xLjcgMTAuMS03LjEgMTcuNy0xNC44IDExLjktNS41IDEyLjctNS4xIDIwLjItMTYtMTIuNy02LjQtMTUuNy0xMy43LTE4LjQtMTguOHptMy43LTEwMi4zYy02LjQtMy40LTEwLjYgMy0xMi4zIDE4LjlzMi41IDI5LjUgMTEuOCAzOS42IDE4LjIgMTAuNiAyNi4xIDMgMy40LTIzLjYtMTEuMy00Ny43YTM5LjU3IDM5LjU3IDAgMCAwLTE0LjI3LTEzLjh6bS00LjcgNDYuM2M1LjQgMi4yIDEwLjUgMS45IDEyLjMtMTAuNnYtNC43bC0xLjIuNWMtNC4zLTMuMS0yLjUtNC41LTEuNy02LjJsLjUtLjVjLS45LTEuMi01LTguMS0xMi41IDQuNy0uNS0xMy41LjUtMjEuOSAzLTI0LjggMS4yLTIuNSA0LjctMS4yIDExLjMgNC4yIDYuNCA1LjQgMTEuMyAxNiAxNS4yIDMyLjUgNi41IDI4LTE5LjggMjYuMi0yNi45IDQuOXptLTQ1LTUuNWMxLjYuMyA5LjMtMS4xIDkuMy0xNC44aC0uNWMtNS40LTEuMS0yLjItNS41LS43LTUuOS0xLjctMy0zLjQtNC4yLTUuNC00LjctOC4xIDAtMTEuNiAxMi43LTguMSAyMS4yYTcuNTEgNy41MSAwIDAgMCA1LjQzIDQuMnpNMjE2IDgyLjlsLTIuNS41LjUgM2E0OC45NCA0OC45NCAwIDAgMSAyNi4xIDUuOWMtMi41LTUuNS0xMC0xNC4zLTI4LjMtMTQuM2wuNSAyLjV6bS03MS44IDQ5LjRjMjEuNyAxNi44IDE2LjUgMjEuNCA0Ni41IDIzLjZsLTIuOS00LjdhNDIuNjcgNDIuNjcgMCAwIDAgMTQuOC0yOC4zYzEuNy0xNi0xLjItMjkuNS04LjgtNDEuM2wxMy03LjZhMi4yNiAyLjI2IDAgMCAwLS41LTEuNyAxNC4yMSAxNC4yMSAwIDAgMC0xMy41IDEuN2MtMTIuNyA2LjctMjggMjAuOS0yOSAyMi40LTEuNyAxLjctMy40IDUuOS01LjQgMTMuNWE5OS42MSA5OS42MSAwIDAgMC0yLjkgMjMuNmMtNC43LTgtMTAuNS02LjQtMTkuOS01LjlsNy4xIDcuNmMtMTYuNSAwLTIzLjMgMTUuNC0yMy42IDE2IDYuOCAwIDQuNi03LjYgMzAtMTIuMy00LjMtNi4zLTMuMy01LTQuOS02LjZ6bTE4LjctMTguN2MxLjItNy42IDMuNC0xMyA2LjQtMTcuMiA1LjQtNi40IDEwLjYtMTAuMSAxNi0xMS44IDQuMi0xLjcgNy4xIDEuMiAxMC4xIDkuM2E3Mi4xNCA3Mi4xNCAwIDAgMSAzIDI1LjNjLS41IDkuMy0zLjQgMTcuMi04LjQgMjMuMS0yLjkgMy40LTUuNCA1LjktNi40IDcuNmEzOS4yMSAzOS4yMSAwIDAgMS0xMS4zLS41bC03LjEtMy40LTUuNC02LjRjLjgtMTAgMS4zLTE4LjggMy4xLTI2em00MiA1Ni4xYy0zNC44IDE0LjQtMzQuNyAxNC0zNi4xIDE0LjMtMjAuOCA0LjctMTktMjQuNC0xOC45LTI0LjhsNS45LTEuMi0uNS0yLjVjLTIwLjItMi42LTMxIDQuMi0zMi41IDQuOS41LjUgMyAzLjQgNS45IDkuMyA0LjItNi40IDguOC0xMC4xIDE1LjItMTAuNmE4My40NyA4My40NyAwIDAgMCAxLjcgMzMuN2MuMS41IDIuNiAxNy40IDI3LjUgMjQuMSAxMS4zIDMgMjcgMS4yIDQ4LjktNS40bC05LjIuNWMtNC4yLTE0LjgtNi40LTI0LjgtNS45LTI5LjUgMTEuMy04LjggMjEuOS0xMS4zIDMwLjctNy42aDIuNWwtMTEuOC03LjYtNy4xLjVjLTUuOSAxLjItMTIuMyA0LjItMTkuNCA4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZW1lY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAyLjkgOC40M2M5LjktNS43MyAyNi01LjgyIDM1Ljk1LS4yMUw0MzAgMTE1Ljg1YzEwIDUuNiAxOCAxOS40NCAxOCAzMC44NlYzNjRjMCAxMS40NC04LjA2IDI1LjI5LTE4IDMxTDIzOC44MSA1MDMuNzRjLTkuOTMgNS42Ni0yNiA1LjU3LTM1Ljg1LS4yMUwxNy44NiAzOTUuMTJDOCAzODkuMzQgMCAzNzUuMzggMCAzNjRWMTQ2LjcxYzAtMTEuNDQgOC0yNS4zNiAxNy45MS0zMS4wOHptLTc3LjQgMTk5LjgzYy0xNS45NCAwLTMxLjg5LjE0LTQ3LjgzLjE0djEwMS40NUg5Ni44VjI4MGgyOC43YzQ5LjcxIDAgNDkuNTYtNzEuNzQgMC03MS43NHptMTQwLjE0IDEwMC4yOWwtMzAuNzMtMzQuNjRjMzctNy41MSAzNC44LTY1LjIzLTEwLjg3LTY1LjUxLTE2LjA5IDAtMzIuMTctLjE0LTQ4LjI2LS4xNHYxMDEuNTloMTkuMTN2LTMzLjkxaDE4LjQxbDI5LjU2IDMzLjkxaDIyLjc2em0tNDEuNTktODIuMzJjMjMuMzQgMCAyMy4yNiAzMi40NiAwIDMyLjQ2aC0yOS4xM3YtMzIuNDZ6bS05NS41Ni0xLjZjMjEuMTggMCAyMS4xMSAzOC44NSAwIDM4Ljg1SDk2LjE4di0zOC44NHptMTkyLjY1LTE4LjI1Yy02OC40NiAwLTcxIDEwNS44IDAgMTA1LjggNjkuNDgtLjAxIDY5LjQxLTEwNS44IDAtMTA1Ljh6bTAgMTcuMzljNDQuMTIgMCA0NC44IDcwLjg2IDAgNzAuODZzLTQ0LjQzLTcwLjg2IDAtNzAuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZW1laXNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggODguMjg2YzAtMTAgNi4yODYtMjEuNzE0IDE3LjcxNS0yMS43MTQgMTEuMTQyIDAgMTcuNzE0IDExLjcxNCAxNy43MTQgMjEuNzE0IDAgMTAuMjg1LTYuNTcyIDIxLjcxNC0xNy43MTQgMjEuNzE0QzIxNC4yODYgMTEwIDIwOCA5OC41NzEgMjA4IDg4LjI4NnptMzA0IDE2MGMwIDM2LjAwMS0xMS40MjkgMTAyLjI4Ni0zNi4yODYgMTI5LjcxNC0yMi44NTggMjQuODU4LTg3LjQyOCA2MS4xNDMtMTIwLjg1NyA3MC41NzJsLTEuMTQzLjI4NnYzMi41NzFjMCAxNi4yODYtMTIuNTcyIDMwLjU3MS0yOS4xNDMgMzAuNTcxLTEwIDAtMTkuNDI5LTUuNzE0LTI0LjU3Mi0xNC4yODYtNS40MjcgOC41NzItMTQuODU2IDE0LjI4Ni0yNC44NTYgMTQuMjg2LTEwIDAtMTkuNDI5LTUuNzE0LTI0Ljg1OC0xNC4yODYtNS4xNDIgOC41NzItMTQuNTcxIDE0LjI4Ni0yNC41NyAxNC4yODYtMTAuMjg2IDAtMTkuNDI5LTUuNzE0LTI0Ljg1OC0xNC4yODYtNS4xNDMgOC41NzItMTQuNTcxIDE0LjI4Ni0yNC41NzEgMTQuMjg2LTE4Ljg1NyAwLTI5LjQyOS0xNS43MTQtMjkuNDI5LTMyLjg1Ny0xNi4yODYgMTIuMjg1LTM1LjcxNSAxOS40MjgtNTYuNTcxIDE5LjQyOC0yMiAwLTQzLjQyOS04LjI4NS02MC4yODYtMjIuODU3IDEwLjI4NS0uMjg2IDIwLjU3MS0yLjI4NiAzMC4yODUtNS43MTQtMjAuODU3LTUuNzE0LTM5LjQyOC0xOC44NTctNTItMzYuMjg2IDIxLjM3IDQuNjQ1IDQ2LjIwOSAxLjY3MyA2Ny4xNDMtMTEuMTQzLTIyLTIyLTU2LjU3MS01OC44NTctNjguNTcyLTg3LjQyOEMxLjE0MyAzMjEuNzE0IDAgMzAzLjcxNCAwIDI4OS40MjljMC00OS43MTQgMjAuMjg2LTE2MCA4Ni4yODYtMTYwIDEwLjU3MSAwIDE4Ljg1NyA0Ljg1OCAyMy4xNDMgMTQuODU3YTE1OC43OTIgMTU4Ljc5MiAwIDAgMSAxMi0xNS40MjhjMi0yLjU3MiA1LjcxNC01LjQyOSA3LjE0My04LjI4NiA3Ljk5OS0xMi41NzEgMTEuNzE0LTIxLjE0MiAyMS43MTQtMzRDMTgyLjU3MSA0NS40MjggMjMyIDE3LjE0MyAyODUuMTQzIDE3LjE0M2M2IDAgMTIgLjI4NSAxNy43MTQgMS4xNDNDMzEzLjcxNCA2LjU3MSAzMjguODU3IDAgMzQ0LjU3MiAwYzE0LjU3MSAwIDI5LjcxNCA2IDQwIDE2LjI4Ni44NTcuODU4IDEuNDI4IDIuMjg2IDEuNDI4IDMuNDI4IDAgMy43MTQtMTAuMjg1IDEzLjQyOS0xMi44NTcgMTYuMjg2IDQuMjg2IDEuNDI5IDE1LjcxNCA2Ljg1OCAxNS43MTQgMTIgMCAyLjg1Ny0yLjg1NyA1LjE0My00LjU3MSA3LjE0MyAzMS40MjkgMjcuNzE0IDQ5LjQyOSA2Ny4xNDMgNTYuMjg2IDEwOCA0LjI4Ni01LjE0MyAxMC4yODUtOC41NzIgMTcuMTQzLTguNTcyIDEwLjU3MSAwIDIwLjg1NyA3LjE0NCAyOC41NzEgMTQuMDAxQzUwNy4xNDMgMTg3LjE0MyA1MTIgMjIxLjcxNCA1MTIgMjQ4LjI4NnpNMTg4IDg5LjQyOGMwIDE4LjI4NiAxMi41NzEgMzcuMTQzIDMyLjI4NiAzNy4xNDMgMTkuNzE0IDAgMzIuMjg1LTE4Ljg1NyAzMi4yODUtMzcuMTQzIDAtMTgtMTIuNTcxLTM2Ljg1Ny0zMi4yODUtMzYuODU3LTE5LjcxNSAwLTMyLjI4NiAxOC44NTgtMzIuMjg2IDM2Ljg1N3pNMjM3LjcxNCAxOTRjMC0xOS43MTQgMy43MTQtMzkuMTQzIDguNTcxLTU4LjI4Ni01Mi4wMzkgNzkuNTM0LTEzLjUzMSAxODQuNTcxIDY4Ljg1OCAxODQuNTcxIDIxLjQyOCAwIDQyLjU3MS03LjcxNCA2MC0yMCAyLTcuNDI5IDMuNzE0LTE0Ljg1NyAzLjcxNC0yMi41NzIgMC0xNC4yODYtNi4yODYtMjEuNDI4LTIwLjU3Mi0yMS40MjgtNC41NzEgMC05LjE0My44NTctMTMuNDI5IDEuNzE0LTYzLjM0MyAxMi42NjgtMTA3LjE0MiAzLjY2OS0xMDcuMTQyLTYzLjk5OXptLTQxLjE0MiAyNTQuODU4YzAtMTEuMTQzLTguODU4LTIwLjg1Ny0yMC4yODYtMjAuODU3LTExLjQyOSAwLTIwIDkuNzE1LTIwIDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC41NzEgMjEuMTQyIDIwIDIxLjE0MiAxMS40MjggMCAyMC4yODYtOS43MTUgMjAuMjg2LTIxLjE0MnYtMzIuNTcxem00OS4xNDMgMGMwLTExLjE0My04LjU3Mi0yMC44NTctMjAtMjAuODU3LTExLjQyOSAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1NyAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjggMCAyMC0xMCAyMC0yMS4xNDJ2LTMyLjU3MXptNDkuNzEzIDBjMC0xMS4xNDMtOC44NTctMjAuODU3LTIwLjI4NS0yMC44NTctMTEuNDI5IDAtMjAuMjg2IDkuNzE1LTIwLjI4NiAyMC44NTd2MzIuNTcxYzAgMTEuMTQzIDguODU3IDIxLjE0MiAyMC4yODYgMjEuMTQyIDExLjQyOCAwIDIwLjI4NS05LjcxNSAyMC4yODUtMjEuMTQydi0zMi41NzF6bTQ5LjcxNSAwYzAtMTEuMTQzLTguODU3LTIwLjg1Ny0yMC4yODYtMjAuODU3LTExLjQyOCAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1OCAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjkgMCAyMC4yODYtMTAgMjAuMjg2LTIxLjE0MnYtMzIuNTcxek00MjEuNzE0IDI4NmMtMzAuODU3IDU5LjE0Mi05MC4yODUgMTAyLjU3Mi0xNTguNTcxIDEwMi41NzItOTYuNTcxIDAtMTYwLjU3MS04NC41NzItMTYwLjU3MS0xNzYuNTcyIDAtMTYuODU3IDItMzMuNDI5IDYtNDkuNzE0LTIwIDMzLjcxNS0yOS43MTQgNzIuNTcyLTI5LjcxNCAxMTEuNDI5IDAgNjAuMjg2IDI0Ljg1NyAxMjEuNzE1IDcxLjQyOSAxNjAuODU3IDUuMTQzLTkuNzE0IDE0Ljg1Ny0xNi4yODYgMjYtMTYuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0LjU3MSAxNC4yODYgNS40MjktOC41NzEgMTQuNTcxLTE0LjI4NiAyNC44NTgtMTQuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0LjU3MSAxNC4yODYgNS40MjktOC41NzEgMTQuODU3LTE0LjI4NiAyNC44NTgtMTQuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0Ljg1NyAxNC4yODYgNS4xNDMtOC41NzEgMTQuNTcxLTE0LjI4NiAyNC41NzItMTQuMjg2IDEwLjg1NyAwIDIwLjg1NyA2LjU3MiAyNS43MTQgMTYgNDMuNDI3LTM2LjI4NiA2OC41NjktOTIgNzEuNDI2LTE0OC4yODZ6bTEwLjU3Mi05OS43MTRjMC01My43MTQtMzQuNTcxLTEwNS43MTQtOTIuNTcyLTEwNS43MTQtMzAuMjg1IDAtNTguNTcxIDE1LjE0My03OC44NTcgMzYuODU3QzI0MC44NjIgMTgzLjgxMiAyMzMuNDEgMjU0IDMwMi4yODYgMjU0YzI4LjgwNSAwIDk3LjM1Ny0yOC41MzggODQuMjg2IDM2Ljg1NyAyOC44NTctMjYgNDUuNzE0LTY1LjcxNCA0NS43MTQtMTA0LjU3MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhpbmtQZWFrcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjUuNCA0MDkuNGw4Ny4xLTE1MC4yLTMyLS4zLTU1LjEgOTVMMjU5LjIgMCAyMyA0MDcuNGwzMiAuM0wyNTkuMiA1NS42em0tMzU1LjMtNDQuMWgzMi4xbDExNy40LTIwMi41TDQ2MyA1MTEuOWwzMi41LjEtMjM1LjgtNDA0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRocmVhZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMxLjUgMjM1LjdjMi4yIC45IDQuMiAxLjkgNi4zIDIuOGMyOS4yIDE0LjEgNTAuNiAzNS4yIDYxLjggNjEuNGMxNS43IDM2LjUgMTcuMiA5NS44LTMwLjMgMTQzLjJjLTM2LjIgMzYuMi04MC4zIDUyLjUtMTQyLjYgNTNoLS4zYy03MC4yLS41LTEyNC4xLTI0LjEtMTYwLjQtNzAuMmMtMzIuMy00MS00OC45LTk4LjEtNDkuNS0xNjkuNlYyNTZ2LS4yQzE3IDE4NC4zIDMzLjYgMTI3LjIgNjUuOSA4Ni4yQzEwMi4yIDQwLjEgMTU2LjIgMTYuNSAyMjYuNCAxNmguM2M3MC4zIC41IDEyNC45IDI0IDE2Mi4zIDY5LjljMTguNCAyMi43IDMyIDUwIDQwLjYgODEuN2wtNDAuNCAxMC44Yy03LjEtMjUuOC0xNy44LTQ3LjgtMzIuMi02NS40Yy0yOS4yLTM1LjgtNzMtNTQuMi0xMzAuNS01NC42Yy01NyAuNS0xMDAuMSAxOC44LTEyOC4yIDU0LjRDNzIuMSAxNDYuMSA1OC41IDE5NC4zIDU4IDI1NmMuNSA2MS43IDE0LjEgMTA5LjkgNDAuMyAxNDMuM2MyOCAzNS42IDcxLjIgNTMuOSAxMjguMiA1NC40YzUxLjQtLjQgODUuNC0xMi42IDExMy43LTQwLjljMzIuMy0zMi4yIDMxLjctNzEuOCAyMS40LTk1LjljLTYuMS0xNC4yLTE3LjEtMjYtMzEuOS0zNC45Yy0zLjcgMjYuOS0xMS44IDQ4LjMtMjQuNyA2NC44Yy0xNy4xIDIxLjgtNDEuNCAzMy42LTcyLjcgMzUuM2MtMjMuNiAxLjMtNDYuMy00LjQtNjMuOS0xNmMtMjAuOC0xMy44LTMzLTM0LjgtMzQuMy01OS4zYy0yLjUtNDguMyAzNS43LTgzIDk1LjItODYuNGMyMS4xLTEuMiA0MC45LS4zIDU5LjIgMi44Yy0yLjQtMTQuOC03LjMtMjYuNi0xNC42LTM1LjJjLTEwLTExLjctMjUuNi0xNy43LTQ2LjItMTcuOEgyMjdjLTE2LjYgMC0zOSA0LjYtNTMuMyAyNi4zbC0zNC40LTIzLjZjMTkuMi0yOS4xIDUwLjMtNDUuMSA4Ny44LTQ1LjFoLjhjNjIuNiAuNCA5OS45IDM5LjUgMTAzLjcgMTA3LjdsLS4yIC4yem0tMTU2IDY4LjhjMS4zIDI1LjEgMjguNCAzNi44IDU0LjYgMzUuM2MyNS42LTEuNCA1NC42LTExLjQgNTkuNS03My4yYy0xMy4yLTIuOS0yNy44LTQuNC00My40LTQuNGMtNC44IDAtOS42IC4xLTE0LjQgLjRjLTQyLjkgMi40LTU3LjIgMjMuMi01Ni4yIDQxLjhsLS4xIC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaWt0b2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LDIwOS45MWEyMTAuMDYsMjEwLjA2LDAsMCwxLTEyMi43Ny0zOS4yNVYzNDkuMzhBMTYyLjU1LDE2Mi41NSwwLDEsMSwxODUsMTg4LjMxVjI3OC4yYTc0LjYyLDc0LjYyLDAsMSwwLDUyLjIzLDcxLjE4VjBsODgsMGExMjEuMTgsMTIxLjE4LDAsMCwwLDEuODYsMjIuMTdoMEExMjIuMTgsMTIyLjE4LDAsMCwwLDM4MSwxMDIuMzlhMTIxLjQzLDEyMS40MywwLDAsMCw2NywyMC4xNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhZGVGZWRlcmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4LjhjLTEzNyAwLTI0OCAxMTEtMjQ4IDI0OHMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4LTExMS0yNDgtMjQ4LTI0OHptMCA0ODIuOGMtMTI5LjcgMC0yMzQuOC0xMDUuMS0yMzQuOC0yMzQuOFMxMTguMyAyMiAyNDggMjJzMjM0LjggMTA1LjEgMjM0LjggMjM0LjhTMzc3LjcgNDkxLjYgMjQ4IDQ5MS42em0xNTUuMS0zMjguNXYtNDYuOEgyMDkuM1YxOThINTQuMmwzNi43IDQ2aDExNy43djE5Ni44aDQ4LjhWMjQ1aDgzLjN2LTQ3aC04My4zdi0zNC44aDE0NS43em0tNzMuMyA0NS4xdjIzLjloLTgyLjl2MTk3LjRoLTI2LjhWMjMyLjFIOTYuM2wtMjAuMS0yMy45aDE0My45di04MC42aDE3MS44VjE1MmgtMTQ1djU2LjJ6bS0xNjEuMy02OWwtMTIuNC0yMC43IDIuMSAyMy44LTIzLjUgNS40IDIzLjMgNS40LTIuMSAyNCAxMi4zLTIwLjUgMjIuMiA5LjUtMTUuNy0xOC4xIDE1LjgtMTguMXptLTI5LjYtMTkuN2w5LjMtMTEuNS0xMi43IDUuOS04LTEyLjQgMS43IDEzLjktMTQuMyAzLjggMTMuNyAyLjctLjggMTQuNyA2LjgtMTIuMiAxMy44IDUuM3ptMTY1LjQgMTQ1LjJsLTEzLjEgNS42LTcuMy0xMi4yIDEuMyAxNC4yLTEzLjkgMy4yIDEzLjkgMy4yLTEuMiAxNC4yIDcuMy0xMi4yIDEzLjEgNS41LTkuNC0xMC43em0xMDYuOS03Ny4ybC0yMC45IDkuMS0xMi0xOS42IDIuMiAyMi43LTIyLjMgNS40IDIyLjIgNC45LTEuOCAyMi45IDExLjUtMTkuNiAyMS4yIDguOC0xNS4xLTE3ek0yNDggMjkuOWMtMTI1LjMgMC0yMjYuOSAxMDEuNi0yMjYuOSAyMjYuOVMxMjIuNyA0ODMuNyAyNDggNDgzLjdzMjI2LjktMTAxLjYgMjI2LjktMjI2LjlTMzczLjMgMjkuOSAyNDggMjkuOXpNMzQyLjYgMTk2djUxaC04My4zdjE5NS43aC01Mi43VjI0NS45SDg5LjlsLTQwLTQ5LjloMTU3LjR2LTgxLjZoMTk3Ljh2NTAuN0gyNTkuNFYxOTZ6TTI0OCA0My4yYzYwLjMgMCAxMTQuOCAyNSAxNTMuNiA2NS4ySDIwMi41VjE5MEg0NS4xQzczLjEgMTA0LjggMTUzLjQgNDMuMiAyNDggNDMuMnptMCA0MjcuMWMtMTE3LjkgMC0yMTMuNi05NS42LTIxMy42LTIxMy41IDAtMjEuMiAzLjEtNDEuOCA4LjktNjEuMUw4Ny4xIDI1MmgxMTQuN3YxOTYuOGg2NC42VjI1M2g4My4zdi02Mi43aC04My4ydi0xOS4yaDE0NS42di01MC44YzMwLjggMzcgNDkuMyA4NC42IDQ5LjMgMTM2LjUuMSAxMTcuOS05NS41IDIxMy41LTIxMy40IDIxMy41ek0xNzguOCAyNzVsLTExLTIxLjQgMS43IDI0LjUtMjMuNyAzLjkgMjMuOCA1LjktMy43IDIzLjggMTMtMjAuOSAyMS41IDEwLjgtMTUuOC0xOC44IDE2LjktMTcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJlbGxvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Mi4zIDMySDU2LjFDMjUuMSAzMiAwIDU3LjEgMCA4OGMtLjEgMCAwLTQgMCAzMzYgMCAzMC45IDI1LjEgNTYgNTYgNTZoMzM2LjJjMzAuOC0uMiA1NS43LTI1LjIgNTUuNy01NlY4OGMuMS0zMC44LTI0LjgtNTUuOC01NS42LTU2ek0xOTcgMzcxLjNjLS4yIDE0LjctMTIuMSAyNi42LTI2LjkgMjYuNkg4Ny40Yy0xNC44LjEtMjYuOS0xMS44LTI3LTI2LjZWMTE3LjFjMC0xNC44IDEyLTI2LjkgMjYuOS0yNi45aDgyLjljMTQuOCAwIDI2LjkgMTIgMjYuOSAyNi45djI1NC4yem0xOTMuMS0xMTJjMCAxNC44LTEyIDI2LjktMjYuOSAyNi45aC04MWMtMTQuOCAwLTI2LjktMTItMjYuOS0yNi45VjExNy4yYzAtMTQuOCAxMi0yNi45IDI2LjgtMjYuOWg4MS4xYzE0LjggMCAyNi45IDEyIDI2LjkgMjYuOXYxNDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHVtYmxyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOS44IDQ4MC4zYy0xMy42IDE0LjUtNTAgMzEuNy05Ny40IDMxLjctMTIwLjggMC0xNDctODguOC0xNDctMTQwLjZ2LTE0NEgxNy45Yy01LjUgMC0xMC00LjUtMTAtMTB2LTY4YzAtNy4yIDQuNS0xMy42IDExLjMtMTYgNjItMjEuOCA4MS41LTc2IDg0LjMtMTE3LjEuOC0xMSA2LjUtMTYuMyAxNi4xLTE2LjNoNzAuOWM1LjUgMCAxMCA0LjUgMTAgMTB2MTE1LjJoODNjNS41IDAgMTAgNC40IDEwIDkuOXY4MS43YzAgNS41LTQuNSAxMC0xMCAxMGgtODMuNFYzNjBjMCAzNC4yIDIzLjcgNTMuNiA2OCAzNS44IDQuOC0xLjkgOS0zLjIgMTIuNy0yLjIgMy41LjkgNS44IDMuNCA3LjQgNy45bDIyIDY0LjNjMS44IDUgMy4zIDEwLjYtLjQgMTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHdpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5MS4xNywxMDMuNDdIMzUyLjU0djEwOS43aDM4LjYzWk0yODUsMTAzSDI0Ni4zN1YyMTIuNzVIMjg1Wk0xMjAuODMsMCwyNC4zMSw5MS40MlY0MjAuNThIMTQwLjE0VjUxMmw5Ni41My05MS40Mmg3Ny4yNUw0ODcuNjksMjU2VjBaTTQ0OS4wNywyMzcuNzVsLTc3LjIyLDczLjEySDI5NC42MWwtNjcuNiw2NHYtNjRIMTQwLjE0VjM2LjU4SDQ0OS4wN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTkuMzcgMTUxLjcxNmMuMzI1IDQuNTQ4LjMyNSA5LjA5Ny4zMjUgMTMuNjQ1IDAgMTM4LjcyLTEwNS41ODMgMjk4LjU1OC0yOTguNTU4IDI5OC41NTgtNTkuNDUyIDAtMTE0LjY4LTE3LjIxOS0xNjEuMTM3LTQ3LjEwNiA4LjQ0Ny45NzQgMTYuNTY4IDEuMjk5IDI1LjM0IDEuMjk5IDQ5LjA1NSAwIDk0LjIxMy0xNi41NjggMTMwLjI3NC00NC44MzItNDYuMTMyLS45NzUtODQuNzkyLTMxLjE4OC05OC4xMTItNzIuNzcyIDYuNDk4Ljk3NCAxMi45OTUgMS42MjQgMTkuODE4IDEuNjI0IDkuNDIxIDAgMTguODQzLTEuMyAyNy42MTQtMy41NzMtNDguMDgxLTkuNzQ3LTg0LjE0My01MS45OC04NC4xNDMtMTAyLjk4NXYtMS4yOTljMTMuOTY5IDcuNzk3IDMwLjIxNCAxMi42NyA0Ny40MzEgMTMuMzE5LTI4LjI2NC0xOC44NDMtNDYuNzgxLTUxLjAwNS00Ni43ODEtODcuMzkxIDAtMTkuNDkyIDUuMTk3LTM3LjM2IDE0LjI5NC01Mi45NTQgNTEuNjU1IDYzLjY3NSAxMjkuMyAxMDUuMjU4IDIxNi4zNjUgMTA5LjgwNy0xLjYyNC03Ljc5Ny0yLjU5OS0xNS45MTgtMi41OTktMjQuMDQgMC01Ny44MjggNDYuNzgyLTEwNC45MzQgMTA0LjkzNC0xMDQuOTM0IDMwLjIxMyAwIDU3LjUwMiAxMi42NyA3Ni42NyAzMy4xMzcgMjMuNzE1LTQuNTQ4IDQ2LjQ1Ni0xMy4zMiA2Ni41OTktMjUuMzQtNy43OTggMjQuMzY2LTI0LjM2NiA0NC44MzMtNDYuMTMyIDU3LjgyNyAyMS4xMTctMi4yNzMgNDEuNTg0LTguMTIyIDYwLjQyNi0xNi4yNDMtMTQuMjkyIDIwLjc5MS0zMi4xNjEgMzkuMzA4LTUyLjYyOCA1NC4yNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR5cG8zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OC43IDc4LjRjMC0yNC43IDUuNC0zMi40IDEzLjktMzkuNC02OS41IDguNS0xNDkuMyAzNC0xNzYuMyA2Ni40LTUuNCA3LjctOS4zIDIwLjgtOS4zIDM3LjFDNyAyNDYgMTEzLjggNDgwIDE5MS4xIDQ4MGMzNi4zIDAgOTcuMy01OS41IDE0Ni43LTEzOS03IDIuMy0xMS42IDIuMy0xOC41IDIuMy01Ny4yIDAtMTQwLjYtMTk4LjUtMTQwLjYtMjY0Ljl6TTMwMS41IDMyYy0zMC4xIDAtNDEuNyA1LjQtNDEuNyAzNi4zIDAgNjYuNCA1My44IDE5OC41IDEwMS43IDE5OC41IDI2LjMgMCA3OC44LTk5LjcgNzguOC0xODIuMyAwLTQwLjktNjctNTIuNS0xMzguOC01Mi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNC4xIDMySDMzLjlDMTUuMiAzMiAwIDQ3LjIgMCA2NS45VjQ0NmMwIDE4LjggMTUuMiAzNCAzMy45IDM0SDQxNGMxOC43IDAgMzMuOS0xNS4yIDMzLjktMzMuOVY2NS45QzQ0OCA0Ny4yIDQzMi44IDMyIDQxNC4xIDMyek0yMzcuNiAzOTEuMUMxNjMgMzk4LjYgOTYuNCAzNDQuMiA4OC45IDI2OS42aDk0LjRWMjkwYzAgMy43IDMgNi44IDYuOCA2LjhIMjU4YzMuNyAwIDYuOC0zIDYuOC02Ljh2LTY3LjljMC0zLjctMy02LjgtNi44LTYuOGgtNjcuOWMtMy43IDAtNi44IDMtNi44IDYuOHYyMC40SDg4LjljNy02OS40IDY1LjQtMTIyLjIgMTM1LjEtMTIyLjIgNjkuNyAwIDEyOC4xIDUyLjggMTM1LjEgMTIyLjIgNy41IDc0LjUtNDYuOSAxNDEuMS0xMjEuNSAxNDguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVWJ1bnR1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2OS4yIDc1QTc1LjYgNzUuNiAwIDEgMCAzMTcuOSA3NWE3NS42IDc1LjYgMCAxIDAgMTUxLjIgMHpNMTU0LjIgMjQwLjdBNzUuNiA3NS42IDAgMSAwIDMgMjQwLjdhNzUuNiA3NS42IDAgMSAwIDE1MS4yIDB6TTU3IDM0NkM3NS42IDM5Mi45IDEwOCA0MzMgMTUwIDQ2MS4xczkxLjUgNDIuNiAxNDIgNDEuN2MtMTQuNy0xOC42LTIyLjktNDEuNS0yMy4yLTY1LjJjLTYuOC0uOS0xMy4zLTIuMS0xOS41LTMuNGMtMjYuOC01LjctNTEuOS0xNy4zLTczLjYtMzRzLTM5LjMtMzguMS01MS43LTYyLjVjLTIwLjkgOS45LTQ0LjUgMTIuOC02Ny4xIDguMnptMzk1LjEgODkuOGE3NS42IDc1LjYgMCAxIDAgLTE1MS4yIDAgNzUuNiA3NS42IDAgMSAwIDE1MS4yIDB6TTQ0NCAzNTEuNmMxOC41IDE0LjggMzEuNiAzNS4yIDM3LjIgNTguMmMzMy4zLTQxLjMgNTIuNi05Mi4yIDU0LjgtMTQ1LjJzLTEyLjUtMTA1LjQtNDIuMi0xNDkuNGMtOC42IDIxLjUtMjQgMzkuNi00My44IDUxLjZjMTUuNCAyOC42IDIyLjkgNjAuOCAyMS45IDkzLjJzLTEwLjcgNjQtMjggOTEuNnpNMTAxLjEgMTM1LjRjMTIuNCAyLjcgMjQuMyA3LjUgMzUuMSAxNC4zYzE2LjYtMjQuMiAzOC45LTQ0LjEgNjQuOC01OFMyNTUuOCA3MC40IDI4NS4yIDcwYy4yLTUuOSAuOS0xMS45IDItMTcuN2MzLjYtMTYuNyAxMS4xLTMyLjMgMjEuOC00NS41Yy00Ny43LTMuOC05NS40IDYtMTM3LjYgMjguNVM5NC4zIDkxLjcgNzAuOCAxMzMuNGMyLjctLjIgNS4zLS4zIDgtLjNjNy41IDAgMTUgLjggMjIuNCAyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVpa2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My45IDEyOHYyNTZMMjE4IDUxMiAwIDM4NFYxNjkuN2w4Ny42IDQ1LjF2MTE3bDEzMy41IDc1LjUgMTM1LjgtNzUuNXYtMTUxbC0xMDEuMS01Ny42IDg3LjYtNTMuMUw0NDMuOSAxMjh6TTMwOC42IDQ5LjFMMjIzLjggMGwtODguNiA1NC44IDg2IDQ3LjMgODcuNC01M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW1icmFjbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuMzUgOEMxMTguMzYgNy44MyA3LjE0IDExOC43MiA3IDI1NS42OGMtLjA3IDEzNyAxMTEgMjQ4LjIgMjQ4IDI0OC4yNyAxMzYuODUgMCAyNDcuODItMTEwLjcgMjQ4LTI0Ny42N1MzOTIuMzQgOC4xNyAyNTUuMzUgOHptMTQ1IDI2NnEtMS4xNCA0MC42OC0xNCA2NXQtNDMuNTEgMzVxLTMwLjYxIDEwLjctODUuNDUgMTAuNDdoLTQuNnEtNTQuNzguMjItODUuNDQtMTAuNDd0LTQzLjUyLTM1cS0xMi44NS0yNC4zNi0xNC02NWEyMjQuODEgMjI0LjgxIDAgMCAxIDAtMzAuNzEgNDE4LjM3IDQxOC4zNyAwIDAgMSAzLjYtNDMuODhjMS44OC0xMy4zOSAzLjU3LTIyLjU4IDUuNC0zMiAxLTQuODggMS4yOC02LjQyIDEuODItOC40NWE1LjA5IDUuMDkgMCAwIDEgNC45LTMuODloLjY5bDMyIDVhNS4wNyA1LjA3IDAgMCAxIDQuMTYgNSA1IDUgMCAwIDEgMCAuNzdsLTEuNyA4Ljc4cS0yLjQxIDEzLjI1LTQuODQgMzMuNjhhMzgwLjYyIDM4MC42MiAwIDAgMC0yLjY0IDQyLjE1cS0uMjggNDAuNDMgOC4xMyA1OS44M2E0My44NyA0My44NyAwIDAgMCAzMS4zMSAyNS4xOEEyNDMgMjQzIDAgMCAwIDI1MCAzNDAuNmgxMC4yNWEyNDIuNjQgMjQyLjY0IDAgMCAwIDU3LjI3LTUuMTYgNDMuODYgNDMuODYgMCAwIDAgMzEuMTUtMjUuMjNxOC41My0xOS40MiA4LjEzLTU5Ljc4YTM4OCAzODggMCAwIDAtMi42LTQyLjE1cS0yLjQ4LTIwLjM4LTQuODktMzMuNjhsLTEuNjktOC43OGE1IDUgMCAwIDEgMC0uNzcgNSA1IDAgMCAxIDQuMi01bDMyLTVoLjgyYTUgNSAwIDAgMSA0LjkgMy44OWMuNTUgMi4wNS44MSAzLjU3IDEuODMgOC40NSAxLjgyIDkuNjIgMy41MiAxOC43OCA1LjM5IDMyYTQxNS43MSA0MTUuNzEgMCAwIDEgMy42MSA0My44OCAyMjguMDYgMjI4LjA2IDAgMCAxLS4wNCAzMC43M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5jaGFydGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MS43MywyMzIuODEzQTUuMzgxLDUuMzgxLDAsMCwwLDE3Ni43LDIyOS41LDQ4LjA4MSw0OC4wODEsMCwwLDEsMTkxLjYsMjA0LjI0NGMxLjI0My0uODI4LDEuNjU3LTIuNDg0LDEuNjU3LTQuMTQxYTQuMjIsNC4yMiwwLDAsMC0yLjA3MS0zLjMxMkw3NC40MjksMTI4LjQ3MywxNDguOTU4LDg1YTkuOTQxLDkuOTQxLDAsMCwwLDQuOTY4LTguMjgxLDkuMTA4LDkuMTA4LDAsMCwwLTQuOTY4LTguMjgxTDEyNi42LDU1LjZhOS43NDgsOS43NDgsMCwwLDAtOS41MjMsMGwtMTAwLjIsNTcuOTY2YTkuOTQzLDkuOTQzLDAsMCwwLTQuOTY5LDguMjgxVjIzNi45NTRhOS4xMDksOS4xMDksMCwwLDAsNC45NjksOC4yODFMMzkuMjM1LDI1OC4wN2E4LjgyOSw4LjgyOSwwLDAsMCw0Ljk2OCwxLjI0Miw5LjQsOS40LDAsMCwwLDYuNjI1LTIuNDg0LDEwLjgsMTAuOCwwLDAsMCwyLjktNy4wMzlWMTY0LjVMMTY5LjY2LDIzMi40QTQuNSw0LjUsMCwwLDAsMTcxLjczLDIzMi44MTNaTTMyMy4yNzIsMzc3LjczYTEyLjQ3OCwxMi40NzgsMCwwLDAtNC45NjksMS4yNDJsLTc0LjUyOCw0My4wNjJWMjg3Ljg4MmMwLTIuOS0yLjktNS44LTYuMjExLTQuNTU1YTUzLjAzNiw1My4wMzYsMCwwLDEtMjguOTg0LjQxNCw0Ljg2LDQuODYsMCwwLDAtNi4yMSw0LjU1NVY0MjEuNjE5bC03NC41MjktNDMuMDYxYTguODMsOC44MywwLDAsMC00Ljk2OS0xLjI0Miw5LjYzMSw5LjYzMSwwLDAsMC05LjUyMyw5LjUyM3YyNi4wODVhOS4xMDcsOS4xMDcsMCwwLDAsNC45NjksOC4yODFsMTAwLjIsNTcuNTUzQTguODI5LDguODI5LDAsMCwwLDIyMy40ODYsNDgwYTExLjAyNywxMS4wMjcsMCwwLDAsNC45NjktMS4yNDJsMTAwLjItNTcuNTUzYTkuOTQxLDkuOTQxLDAsMCwwLDQuOTY4LTguMjgxVjM4Ni44MzlDMzMyLjgsMzgyLjI4NSwzMjguMjQsMzc3LjczLDMyMy4yNzIsMzc3LjczWk0yODYuMDA3LDc4YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDI4Ni4wMDcsNzhabTYzLjYyNy0xMC4wODZhMjMsMjMsMCwxLDAsMjMsMjNBMjMsMjMsMCwwLDAsMzQ5LjYzNCw2Ny45MTRaTTQxMi44MTYsMTUxLjZhMjMsMjMsMCwxLDAtMjMtMjNBMjMsMjMsMCwwLDAsNDEyLjgxNiwxNTEuNlptLTYzLjE4Mi05LjJhMjMsMjMsMCwxLDAsMjMsMjNBMjMsMjMsMCwwLDAsMzQ5LjYzNCwxNDIuNFptLTYzLjYyNyw4My4yNDRhMjMsMjMsMCwxLDAtMjMtMjNBMjMsMjMsMCwwLDAsMjg2LjAwNywyMjUuNjQ4Wm0tNjIuMDc0LDM2LjM1OGEyMywyMywwLDEsMC0yMy0yM0EyMywyMywwLDAsMCwyMjMuOTMzLDI2Mi4wMDZabTE4OC44ODMtODIuMzU4YTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMTc5LjY0OFptMCw3Mi4yNzJhMjMsMjMsMCwxLDAsMjMsMjNBMjMsMjMsMCwwLDAsNDEyLjgxNiwyNTEuOTJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXJlZ2lzdHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA0ODBjMzkuNSAwIDc2LjItMTEuOCAxMDYuOC0zMi4ySDg1LjNDMTE1LjggNDY4LjIgMTUyLjUgNDgwIDE5MiA0ODB6bS04OS4xLTE5My4xdi0xMi40SDB2MTIuNGMwIDIuNSAwIDUgLjEgNy40aDEwMy4xYy0uMi0yLjQtLjMtNC45LS4zLTcuNHptMjAuNSA1N0g4LjVjMi42IDguNSA1LjggMTYuOCA5LjYgMjQuOGgxMzguM2MtMTIuOS01LjctMjQuMS0xNC4yLTMzLTI0Ljh6bS0xNy43LTM0LjdIMS4zYy45IDcuNiAyLjIgMTUgMy45IDIyLjNoMTA5LjdjLTQtNi45LTcuMi0xNC40LTkuMi0yMi4zem0tMi44LTY5LjNIMHYxNy4zaDEwMi45em0wLTE3My4ySDB2NC45aDEwMi45em0wLTM0LjdIMHYyLjVoMTAyLjl6bTAgNjkuM0gwdjcuNGgxMDIuOXptMCAxMDRIMHYxNC44aDEwMi45em0wLTY5LjNIMHY5LjloMTAyLjl6bTAgMzQuNkgwVjE4M2gxMDIuOXptMTY2LjIgMTYwLjloMTA5LjdjMS44LTcuMyAzLjEtMTQuNyAzLjktMjIuM0gyNzguM2MtMi4xIDcuOS01LjIgMTUuNC05LjIgMjIuM3ptMTItMTg1LjdIMzg0VjEzNkgyODEuMXptMCAzNy4ySDM4NHYtMTIuNEgyODEuMXptMC03NC4zSDM4NHYtNy40SDI4MS4xem0wLTc2Ljd2Mi41SDM4NFYzMnptLTIwMyA0MTAuOWgyMjcuN2MxMS44LTguNyAyMi43LTE4LjYgMzIuMi0yOS43SDQ0LjljOS42IDExIDIxLjQgMjEgMzMuMiAyOS43em0yMDMtMzcxLjNIMzg0di00LjlIMjgxLjF6bTAgMTQ4LjVIMzg0di0xNC44SDI4MS4xek0zOC44IDQwNS43aDMwNS4zYzYuNy04LjUgMTIuNi0xNy42IDE3LjgtMjcuMkgyM2M1LjIgOS42IDkuMiAxOC43IDE1LjggMjcuMnptMTg4LjgtMzcuMUgzNjdjMy43LTggNS44LTE2LjIgOC41LTI0LjhoLTExNWMtOC44IDEwLjctMjAuMSAxOS4yLTMyLjkgMjQuOHptNTMuNS04MS43YzAgMi41LS4xIDUtLjQgNy40aDEwMy4xYy4xLTIuNS4yLTQuOS4yLTcuNHYtMTIuNEgyODEuMXptMC0yOS43SDM4NHYtMTcuM0gyODEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5pdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQzLjU4MyA5MS42MDI3TDMyMy42OTUgMTM4LjM4NEMzMjYuNTc1IDE0MC4wMjYgMzI2LjY4IDE0NC41ODMgMzIzLjY5NSAxNDYuMjI1TDIyOC41MDMgMjAxLjg1NEMyMjUuNjIzIDIwMy41NSAyMjIuMjIgMjAzLjQ0NCAyMTkuNTQ5IDIwMS44NTRMMTI0LjM1NyAxNDYuMjI1QzEyMS40MjUgMTQ0LjYzNiAxMjEuMzczIDEzOS45NzMgMTI0LjM1NyAxMzguMzg0TDIwNC40MTcgOTEuNjAyN1YwTDAgMTE5LjQxN1YzNTguMjUyTDc4LjM4NDMgMzEyLjQ3N1YyMTguOTE0Qzc4LjMzMTkgMjE1LjU3NiA4Mi4yMDY2IDIxMy4xOTIgODUuMDg2NSAyMTQuOTkzTDE4MC4yNzkgMjcwLjYyMkMxODMuMTU5IDI3Mi4zMTggMTg0Ljc4MiAyNzUuMzM4IDE4NC43ODIgMjc4LjQ2NFYzODkuNjY5QzE4NC44MzQgMzkzLjAwNyAxODAuOTU5IDM5NS4zOTEgMTc4LjA3OSAzOTMuNTg5TDk3Ljk2NzMgMzQ2LjgwOEwxOS41ODMgMzkyLjU4M0wyMjQgNTEyTDQyOC40MTcgMzkyLjU4M0wzNTAuMDMzIDM0Ni44MDhMMjY5LjkyMSAzOTMuNTg5QzI2Ny4wOTMgMzk1LjMzOCAyNjMuMTE0IDM5My4wNiAyNjMuMjE4IDM4OS42NjlWMjc4LjQ2NEMyNjMuMjE4IDI3NS4xMjYgMjY1LjA1MSAyNzIuMTU5IDI2Ny43MjEgMjcwLjYyMkwzNjIuOTE0IDIxNC45OTNDMzY1Ljc0MSAyMTMuMjQ1IDM2OS43MiAyMTUuNDcgMzY5LjYxNiAyMTguOTE0VjMxMi40NzdMNDQ4IDM1OC4yNTJWMTE5LjQxN0wyNDMuNTgzIDBWOTEuNjAyN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5zcGxhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LDIzMC4xN1Y0ODBIMFYyMzAuMTdIMTQxLjEzVjM1NS4wOUgzMDYuODdWMjMwLjE3Wk0zMDYuODcsMzJIMTQxLjEzVjE1Ni45MUgzMDYuODdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVudGFwcGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAxLjMgNDkuOWMtNzkuOCAxNjAuMS04NC42IDE1Mi41LTg3LjkgMTczLjJsLTUuMiAzMi44Yy0xLjkgMTItNi42IDIzLjUtMTMuNyAzMy40TDE0NS42IDQ5Ny4xYy03LjYgMTAuNi0yMC40IDE2LjItMzMuNCAxNC42LTQwLjMtNS03Ny44LTMyLjItOTUuMy02OC41LTUuNy0xMS44LTQuNS0yNS44IDMuMS0zNi40bDE0OC45LTIwNy45YzcuMS05LjkgMTYuNC0xOCAyNy4yLTIzLjdsMjkuMy0xNS41YzE4LjUtOS44IDkuNy0xMS45IDEzNS42LTEzOC45IDEtNC44IDEtNy4zIDMuNi04IDMtLjcgNi42LTEgNi4zLTQuNmwtLjQtNC42Yy0uMi0xLjkgMS4zLTMuNiAzLjItMy42IDQuNS0uMSAxMy4yIDEuMiAyNS42IDEwIDEyLjMgOC45IDE2LjQgMTYuOCAxNy43IDIxLjEuNiAxLjgtLjYgMy43LTIuNCA0LjJsLTQuNSAxLjFjLTMuNC45LTIuNSA0LjQtMi4zIDcuNC4xIDIuOC0yLjMgMy42LTYuNSA2LjF6TTIzMC4xIDM2LjRjMy40LjkgMi41IDQuNCAyLjMgNy40LS4yIDIuNyAyLjEgMy41IDYuNCA2IDcuOSAxNS45IDE1LjMgMzAuNSAyMi4yIDQ0IC43IDEuMyAyLjMgMS41IDMuMy41IDExLjItMTIgMjQuNi0yNi4yIDQwLjUtNDIuNiAxLjMtMS40IDEuNC0zLjUuMS00LjktOC04LjItMTYuNS0xNi45LTI1LjYtMjYuMS0xLTQuNy0xLTcuMy0zLjYtOC0zLS44LTYuNi0xLTYuMy00LjYuMy0zLjMgMS40LTguMS0yLjgtOC4yLTQuNS0uMS0xMy4yIDEuMS0yNS42IDEwLTEyLjMgOC45LTE2LjQgMTYuOC0xNy43IDIxLjEtMS40IDQuMiAzLjYgNC42IDYuOCA1LjR6TTYyMCA0MDYuN0w0NzEuMiAxOTguOGMtMTMuMi0xOC41LTI2LjYtMjMuNC01Ni40LTM5LjEtMTEuMi01LjktMTQuMi0xMC45LTMwLjUtMjguOS0xLTEuMS0yLjktLjktMy42LjUtNDYuMyA4OC44LTQ3LjEgODIuOC00OSA5NC44LTEuNyAxMC43LTEuMyAyMCAuMyAyOS44IDEuOSAxMiA2LjYgMjMuNSAxMy43IDMzLjRsMTQ4LjkgMjA3LjljNy42IDEwLjYgMjAuMiAxNi4yIDMzLjEgMTQuNyA0MC4zLTQuOSA3OC0zMiA5NS43LTY4LjYgNS40LTExLjkgNC4zLTI1LjktMy40LTM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDMuMiAzMDNjLTUuMiAzLjYtMzIuNiAxMy4xLTMyLjYtMTlWMTgwSDM3Ljl2MTAyLjZjMCA3NC45IDgwLjIgNTEuMSA5Ny45IDM5VjE4MGgtMzIuNnpNNCA3NC44MnYyMjAuOWMwIDEwMy43IDc0LjkgMTM1LjIgMTg3LjcgMTg0LjEgMTEyLjQtNDguOSAxODcuNy04MC4yIDE4Ny43LTE4NC4xVjc0LjgyYy0xMTYuMy02MS42LTI4MS44LTQ5LjYtMzc1LjQgMHptMzU4LjEgMjIwLjljMCA4Ni42LTUzLjIgMTEzLjYtMTcwLjQgMTY1LjMtMTE3LjUtNTEuOC0xNzAuNS03OC43LTE3MC41LTE2NS4zdi0xMjYuNGMxMDIuMy05My44IDIzMS42LTEwMCAzNDAuOS04OS44em0tMjA5LjYtMTA3LjR2MjEyLjhoMzIuN3YtNjguN2MyNC40IDcuMyA3MS43LTIuNiA3MS43LTc4LjUgMC05Ny40LTgwLjctODAuOTItMTA0LjQtNjUuNnptMzIuNyAxMTcuM3YtMTAwLjNjOC40LTQuMiAzOC40LTEyLjcgMzguNCA0OS4zIDAgNjcuOS0zNi40IDUxLjgtMzguNCA1MXptNzkuMS04Ni40Yy4xIDQ3LjMgNTEuNiA0Mi41IDUyLjIgNzAuNC42IDIzLjUtMzAuNCAyMy01MC44IDQuOXYzMC4xYzM2LjIgMjEuNSA4MS45IDguMSA4My4yLTMzLjUgMS43LTUxLjUtNTQuMS00Ni42LTUzLjQtNzMuMi42LTIwLjMgMzAuNi0yMC41IDQ4LjUtMi4ydi0yOC40Yy0yOC41LTIyLTc5LjktOS4yLTc5LjcgMzEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXB3b3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDEgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NC43IDI5NS42Yy01MC4zIDAtODMuNS0zOC45LTkyLjgtNTMuOWMxMS45LTk1LjMgNDYuOC0xMjUuNCA5Mi44LTEyNS40YzQ1LjUgMCA4MC45IDM2LjQgODAuOSA4OS43cy0zNS40IDg5LjctODAuOSA4OS43em0wLTIzNy44Yy04MS45IDAtMTI3LjggNTMuNC0xNDEgMTA4LjRjLTE0LjktMjgtMjUuOS02NS41LTM0LjUtMTAwLjNIMjA2djE0MWMwIDUxLjEtMjMuMyA4OS02OC44IDg5cy03MS42LTM3LjgtNzEuNi04OWwuNS0xNDFILjh2MTQxYzAgNDEuMSAxMy4zIDc4LjQgMzcuNiAxMDUuMWMyNSAyNy41IDU5LjIgNDEuOCA5OC44IDQxLjhjNzguOCAwIDEzMy44LTYwLjQgMTMzLjgtMTQ2LjlWMTEyLjFjOC4yIDMxLjIgMjcuOCA5MS4xIDY1LjMgMTQzLjZsLTM1IDE5OS40aDY2LjRsMjMuMS0xNDEuM2M3LjYgNi4zIDE1LjcgMTIgMjQuMiAxN2MyMi4yIDE0IDQ3LjcgMjEuOSA3My45IDIyLjhjMCAwIDQgLjIgNi4xIC4yYzgxLjIgMCAxNDUuOS02Mi45IDE0NS45LTE0Ny44cy02NC44LTE0OC4xLTE0Ni0xNDguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MS41IDI1NmMwIDMuMS0xLjcgNi4xLTQuNSA3LjVMNTQ3LjkgMzE3Yy0xLjQuOC0yLjggMS40LTQuNSAxLjQtMS40IDAtMy4xLS4zLTQuNS0xLjEtMi44LTEuNy00LjUtNC41LTQuNS03Ljh2LTM1LjZIMjk1LjdjMjUuMyAzOS42IDQwLjUgMTA2LjkgNjkuNiAxMDYuOUgzOTJWMzU0YzAtNSAzLjktOC45IDguOS04LjlINDkwYzUgMCA4LjkgMy45IDguOSA4Ljl2ODkuMWMwIDUtMy45IDguOS04LjkgOC45aC04OS4xYy01IDAtOC45LTMuOS04LjktOC45di0yNi43aC0yNi43Yy03NS40IDAtODEuMS0xNDIuNS0xMjQuNy0xNDIuNUgxNDAuM2MtOC4xIDMwLjYtMzUuOSA1My41LTY5IDUzLjVDMzIgMzI3LjMgMCAyOTUuMyAwIDI1NnMzMi03MS4zIDcxLjMtNzEuM2MzMy4xIDAgNjEgMjIuOCA2OSA1My41IDM5LjEgMCA0My45IDkuNSA3NC42LTYwLjRDMjU1IDg4LjcgMjczIDk1LjcgMzIzLjggOTUuN2M3LjUtMjAuOSAyNy0zNS42IDUwLjQtMzUuNiAyOS41IDAgNTMuNSAyMy45IDUzLjUgNTMuNXMtMjMuOSA1My41LTUzLjUgNTMuNWMtMjMuNCAwLTQyLjktMTQuOC01MC40LTM1LjZIMjk0Yy0yOS4xIDAtNDQuMyA2Ny40LTY5LjYgMTA2LjloMzEwLjF2LTM1LjZjMC0zLjMgMS43LTYuMSA0LjUtNy44IDIuOC0xLjcgNi40LTEuNCA4LjkuM2w4OS4xIDUzLjVjMi44IDEuMSA0LjUgNC4xIDQuNSA3LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYwLjMgMjQxLjdjMjUuOC00MS4zIDE1LjItNDguOC0xMS43LTQ4LjhoLTI3Yy0uMSAwLTEuNS0xLjQtMTAuOSA4LTExLjIgNS42LTM3LjkgNi4zLTM3LjkgOC43IDAgNC41IDcwLjMtMy4xIDg4LjEgMCA5LjUgMS41LTEuNSAyMC40LTQuNCAzMi0uNSA0LjUgMi40IDIuMyAzLjguMXptLTExMi4xIDIyLjZjNjQtMjEuMyA5Ny4zLTIzLjkgMTAyLTI2LjIgNC40LTIuOS00LjQtNi42LTI2LjItNS44LTUxLjcgMi4yLTEzNy42IDM3LjEtMTcyLjYgNTMuOWwtMzAuNy05My4zaDE5Ni42Yy0yLjctMjguMi0xNTIuOS0yMi42LTMzNy45LTIyLjZMMjcgNDE1LjhjMTk2LjQtOTcuMyAyNTguOS0xMzAuMyAzMjEuMi0xNTEuNXpNOTQuNyA5NmMyNTMuMyA1My43IDMzMCA2NS43IDMzMi4xIDg1LjIgMzYuNCAwIDQ1LjkgMCA1Mi40IDYuNiAyMS4xIDE5LjctMTQuNiA2Ny43LTE0LjYgNjcuNy00LjQgMi45LTQwNi40IDE2MC4yLTQwNi40IDE2MC4yaDQyMy4xTDU0OSA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNzdW5uYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgxLjkgMjY4LjFBMjQwLjkgMjQwLjkgMCAxIDEgLjEgMjY4YTI0MC45IDI0MC45IDAgMSAxIDQ4MS45IDB6TTI0LjUgMjY4YTIxNi41IDIxNi41IDAgMSAwIDQzMi45IDBBMjE2LjUgMjE2LjUgMCAxIDAgMjQuNSAyNjh6bTM4NS45IDYzLjNjLTEyLjcgMC0yMS42LTEuOS0yNi43LTUuOWMtNS41LTQuMy04LjItMTIuMy04LjItMjMuOFYyMDUuMWMwLTYuNS01LjItMjAuMi0xNS43LTQxLjJjNyAwIDE3LTkuMSAzMC0yNy4yVjI4NC41YzAgMTEgMi40IDE5LjQgNyAyNS4zYzMuNyA0LjcgMTAuMSA4LjkgMTkgMTIuNmMxLjIgLjQgMi42IC45IDQuMSAxLjRjMi45IC45IDYuMyAyLjEgMTAuMyAzLjVjLTEuOCAyLjctOC4zIDQtMTkuOSA0em0tMjE5IDBjLTEuMyAyLjQtMy42IDUuNS02LjggOS40bC0xOC41IDIyLjVjLTEtNi4xLTQtMTMtOS4zLTIwLjZzLTkuNy0xMS40LTEzLjQtMTEuNGgtOC4zSDUzLjZjMy4zLTUuMyA0LjktOC44IDQuOS0xMC44YzAtMi0uOC01LjMtMi40LTkuN2MtMS41LTQuNC0yLjQtOC41LTIuNC0xMi40YzAtNy40IDIuMS0xMy45IDYuMy0xOS4zTDgwIDI1My40bC03LjEtMTcuN0w4OSAyMTUuOWw2LjcgMTYuOCA4LTEwLjNjLTEuOCA2LjQtMi42IDEyLjMtMi42IDE3LjdjMCA0LjIgMi44IDEzLjMgOC4zIDI3LjNsMTYuMiA0MC43SDEzNWg4IC4zYzIuOCAuNCA3LjcgNSAxNC42IDEzLjljMS44IDIuNCA0LjMgNS44IDcuNyAxMC4yYzEuNCAxLjkgMi45IDMuOSA0LjYgNi4xYzEuMy0yLjMgMi00LjYgMi03LjFjMC0yLTEuMy02LjYtNC0xMy40TDE2MyAzMDQuMWMtNC0xMC42LTYuMS0xNy43LTYuMS0yMS4zYzAtNi4zIDEuOS0xMi4zIDUuOC0xNy45Yy41LS42IDEtMS4zIDEuNS0xLjljNC40LTUuNiA4LjgtMTEuMSAxMy4zLTE2LjVjLTEuMSA0LjYtMS43IDguNy0xLjcgMTJjMCAzLjcgMS43IDkuOSA1LjEgMTguOGw3LjkgMjAuNGMxLjkgNC43IDMgOC4yIDMuNyAxMC4zaDE3LjYgOC4zbC0uOS0yLjZjLTEuNC0zLjktNC03LTcuNy05LjNsMTUuNi0yMC4xIDEyLjMgMzJoMTMuNEwyNDUgMjkyLjJjLTEuNS0zLjktNC03LTcuNy05LjNMMjUzIDI2Mi44IDI3MC4zIDMwOGgxMy40bC0xMS40LTI5LjRjLTEuNS0zLjktNC03LTcuNy05LjNsMTUuNi0yMEwzMDIuNiAzMDhoMTAuMyA4LjMgNy42YzEuNSAwIDMtMS4xIDQuNS0zLjFzMi4yLTQuMSAyLjItNi4zVjIwNS4xYzAtNi41LTQuNS0yMC4zLTEzLjctNDEuMmM1LjQgMCAxNC4xLTkuMSAyNi4yLTI3LjJWMzAwLjJjMCA3LjIgLjYgMTIgMS43IDE0LjZjMS42IDMuNCA1LjMgNi4yIDExLjEgOC4yYy0zLjkgNS42LTguNyA4LjUtMTQuNSA4LjVIMzIxLjFoLTguM0gyMTAuNWgtMTl6TTkzLjQgMjg3LjNjLTIuNy02LjctNC0xMS43LTQtMTVjLS42IDEuMi0yLjQgMy43LTUuNCA3LjZjLTEuNCAxLjktMi4yIDMuNy0yLjIgNS4zYzAgMi42IC44IDUuNyAyLjIgOS4zbDUuNiAxMy45aDBjNSAwIDkgMCAxMS45LS4xbC04LjItMjAuOXptMTMuNS03Mi40Yy0zLTUuMi03LTkuMy0xMS45LTExLjljLTMuNS0xLjktNS4zLTQuMy01LjMtNy40YzAtMi40IDQuNi04LjYgMTQtMTguM2MuMiAzLjggMS45IDcuNiA0LjkgMTEuMmMzLjEgMy42IDQuNiA3IDQuNiAxMC4xYzAgMi42LTIuMSA4LTYuMiAxNi4zem0tMjcuNiAwYy0zLTUuMi03LTkuMy0xMS45LTExLjljLTMuNS0xLjktNS4zLTQuMy01LjMtNy40YzAtMi40IDQuNi04LjYgMTQtMTguM2MuMiAzLjggMS45IDcuNiA0LjkgMTEuMmMzLjEgMy42IDQuNiA3IDQuNiAxMC4xYzAgMi42LTIuMSA4LTYuMiAxNi4zem04NyAyNy41Yy0zLTUuMi03LTkuMy0xMS45LTExLjljLTMuNS0xLjktNS4zLTQuMy01LjMtNy40YzAtMi40IDQuNi04LjYgMTQtMTguM2MuMiAzLjggMS45IDcuNiA0LjkgMTEuMmMzLjEgMy42IDQuNiA3IDQuNiAxMC4xYzAgMi42LTIuMSA4LTYuMiAxNi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWYWFkaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjUgMTQwLjdjMS41LTE3LjYgNC45LTUyLjcgNDkuOC01Mi43aDk4LjZjMjAuNyAwIDMyLjEtNy44IDMyLjEtMjEuNlY1NC4xYzAtMTIuMiA5LjMtMjIuMSAyMS41LTIyLjFTNDQ4IDQxLjkgNDQ4IDU0LjF2MzYuNWMwIDQyLjktMjEuNSA2Mi02Ni44IDYySDI4MC43Yy0zMC4xIDAtMzMgMTQuNy0zMyAyNy4xIDAgMS4zLS4xIDIuNS0uMiAzLjctLjcgMTIuMy0xMC45IDIyLjItMjMuNCAyMi4ycy0yMi43LTkuOC0yMy40LTIyLjJjLS4xLTEuMi0uMi0yLjQtLjItMy43IDAtMTIuMy0zLTI3LjEtMzMtMjcuMUg2Ni44Yy00NS4zIDAtNjYuOC0xOS4xLTY2LjgtNjJWNTQuMUMwIDQxLjkgOS40IDMyIDIxLjYgMzJzMjEuNSA5LjkgMjEuNSAyMi4xdjEyLjNDNDMuMSA4MC4yIDU0LjUgODggNzUuMiA4OGg5OC42YzQ0LjggMCA0OC4zIDM1LjEgNDkuOCA1Mi43aC45ek0yMjQgNDU2YzExLjUgMCAyMS40LTcgMjUuNy0xNi4zIDEuMS0xLjggOTcuMS0xNjkuNiA5OC4yLTE3MS40IDExLjktMTkuNi0zLjItNDQuMy0yNy4yLTQ0LjMtMTMuOSAwLTIzLjMgNi40LTI5LjggMjAuM0wyMjQgMzYybC02Ni45LTExNy43Yy02LjQtMTMuOS0xNS45LTIwLjMtMjkuOC0yMC4zLTI0IDAtMzkuMSAyNC42LTI3LjIgNDQuMyAxLjEgMS45IDk3LjEgMTY5LjYgOTguMiAxNzEuNCA0LjMgOS4zIDE0LjIgMTYuMyAyNS43IDE2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWNvaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyaC02NGwtODAuNyAxOTJoLTk0LjVMNjQgMzJIMGw0OCAxMTJIMHY0OGg2OC41bDEzLjggMzJIMHY0OGgxMDIuOEwxOTIgNDgwbDg5LjItMjA4SDM4NHYtNDhoLTgyLjNsMTMuOC0zMkgzODR2LTQ4aC00OGw0OC0xMTJ6TTE5MiAzMzZsLTI3LTY0aDU0bC0yNyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Ni4yIDE1MC41di43QzI1OC4zIDk4LjYgMjMzLjYgNDcuOCAyMDUuNCAwYzQzLjMgMjkuMiA2NyAxMDAgNzAuOCAxNTAuNXptMzIuNyAxMjEuN2M3LjYgMTguMiAxMSAzNy41IDExIDU3IDAgNzcuNy01Ny44IDE0MS0xMzcuOCAxMzkuNGwzLjgtLjNjNzQuMi00Ni43IDEwOS4zLTExOC42IDEwOS4zLTIwNS4xIDAtMzguMS02LjUtNzUuOS0xOC45LTExMiAxIDExLjcgMSAyMy43IDEgMzUuNCAwIDkxLjgtMTguMSAyNDEuNi0xMTYuNiAyODBDOTUgNDU1LjIgNDkuNCAzOTggNDkuNCAzMjkuMmMwLTc1LjYgNTcuNC0xNDIuMyAxMzUuNC0xNDIuMyAxNi44IDAgMzMuNyAzLjEgNDkuMSA5LjYgMS43LTE1LjEgNi41LTI5LjkgMTMuNC00My4zLTE5LjktNy4yLTQxLjItMTAuNy02Mi41LTEwLjctMTYxLjUgMC0yMzguNyAxOTUuOS0xMjkuOSAzMTMuNyA2Ny45IDc0LjYgMTkyIDczLjkgMjU5LjggMCA1Ni42LTYxLjMgNjAuOS0xNDIuNCAzNi40LTIwMS0xMi43IDgtMjcuMSAxMy45LTQyLjIgMTd6TTQxOC4xIDExLjdjLTMxIDY2LjUtODEuMyA0Ny4yLTExNS44IDgwLjEtMTIuNCAxMi0yMC42IDM0LTIwLjYgNTAuNSAwIDE0LjEgNC41IDI3LjEgMTIgMzguOCA0Ny40LTExIDk4LjMtNDYgMTE4LjItOTAuNy0uNyA1LjUtNC44IDE0LjQtNy4yIDE5LjItMjAuMyAzNS43LTY0LjYgNjUuNi05OS43IDg0LjkgMTQuOCAxNC40IDMzLjcgMjUuOCA1NSAyNS44IDc5IDAgMTEwLjEtMTM0LjYgNTguMS0yMDguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmliZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ0IDQ5LjlDNDMxLjMgMzguMiAzNzkuOS45IDI2NS4zLjRjMCAwLTEzNS4xLTguMS0yMDAuOSA1Mi4zQzI3LjggODkuMyAxNC45IDE0MyAxMy41IDIwOS41Yy0xLjQgNjYuNS0zLjEgMTkxLjEgMTE3IDIyNC45aC4xbC0uMSA1MS42cy0uOCAyMC45IDEzIDI1LjFjMTYuNiA1LjIgMjYuNC0xMC43IDQyLjMtMjcuOCA4LjctOS40IDIwLjctMjMuMiAyOS44LTMzLjcgODIuMiA2LjkgMTQ1LjMtOC45IDE1Mi41LTExLjIgMTYuNi01LjQgMTEwLjUtMTcuNCAxMjUuNy0xNDIgMTUuOC0xMjguNi03LjYtMjA5LjgtNDkuOC0yNDYuNXpNNDU3LjkgMjg3Yy0xMi45IDEwNC04OSAxMTAuNi0xMDMgMTE1LjEtNiAxLjktNjEuNSAxNS43LTEzMS4yIDExLjIgMCAwLTUyIDYyLjctNjguMiA3OS01LjMgNS4zLTExLjEgNC44LTExLTUuNyAwLTYuOS40LTg1LjcuNC04NS43LS4xIDAtLjEgMCAwIDAtMTAxLjgtMjguMi05NS44LTEzNC4zLTk0LjctMTg5LjggMS4xLTU1LjUgMTEuNi0xMDEgNDIuNi0xMzEuNiA1NS43LTUwLjUgMTcwLjQtNDMgMTcwLjQtNDMgOTYuOS40IDE0My4zIDI5LjYgMTU0LjEgMzkuNCAzNS43IDMwLjYgNTMuOSAxMDMuOCA0MC42IDIxMS4xem0tMTM5LTgwLjhjLjQgOC42LTEyLjUgOS4yLTEyLjkuNi0xLjEtMjItMTEuNC0zMi43LTMyLjYtMzMuOS04LjYtLjUtNy44LTEzLjQuNy0xMi45IDI3LjkgMS41IDQzLjQgMTcuNSA0NC44IDQ2LjJ6bTIwLjMgMTEuM2MxLTQyLjQtMjUuNS03NS42LTc1LjgtNzkuMy04LjUtLjYtNy42LTEzLjUuOS0xMi45IDU4IDQuMiA4OC45IDQ0LjEgODcuOCA5Mi41LS4xIDguNi0xMy4xIDguMi0xMi45LS4zem00NyAxMy40Yy4xIDguNi0xMi45IDguNy0xMi45LjEtLjYtODEuNS01NC45LTEyNS45LTEyMC44LTEyNi40LTguNS0uMS04LjUtMTIuOSAwLTEyLjkgNzMuNy41IDEzMyA1MS40IDEzMy43IDEzOS4yek0zNzQuOSAzMjl2LjJjLTEwLjggMTktMzEgNDAtNTEuOCAzMy4zbC0uMi0uM2MtMjEuMS01LjktNzAuOC0zMS41LTEwMi4yLTU2LjUtMTYuMi0xMi44LTMxLTI3LjktNDIuNC00Mi40LTEwLjMtMTIuOS0yMC43LTI4LjItMzAuOC00Ni42LTIxLjMtMzguNS0yNi01NS43LTI2LTU1LjctNi43LTIwLjggMTQuMi00MSAzMy4zLTUxLjhoLjJjOS4yLTQuOCAxOC0zLjIgMjMuOSAzLjkgMCAwIDEyLjQgMTQuOCAxNy43IDIyLjEgNSA2LjggMTEuNyAxNy43IDE1LjIgMjMuOCA2LjEgMTAuOSAyLjMgMjItMy43IDI2LjZsLTEyIDkuNmMtNi4xIDQuOS01LjMgMTQtNS4zIDE0czE3LjggNjcuMyA4NC4zIDg0LjNjMCAwIDkuMS44IDE0LTUuM2w5LjYtMTJjNC42LTYgMTUuNy05LjggMjYuNi0zLjcgMTQuNyA4LjMgMzMuNCAyMS4yIDQ1LjggMzIuOSA3IDUuNyA4LjYgMTQuNCAzLjggMjMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmltZW9WIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ny44IDE1My42Yy0yIDQzLjYtMzIuNCAxMDMuMy05MS40IDE3OS4xLTYwLjkgNzkuMi0xMTIuNCAxMTguOC0xNTQuNiAxMTguOC0yNi4xIDAtNDguMi0yNC4xLTY2LjMtNzIuM0MxMDAuMyAyNTAgODUuMyAxNzQuMyA1Ni4yIDE3NC4zYy0zLjQgMC0xNS4xIDcuMS0zNS4yIDIxLjFMMCAxNjguMmM1MS42LTQ1LjMgMTAwLjktOTUuNyAxMzEuOC05OC41IDM0LjktMy40IDU2LjMgMjAuNSA2NC40IDcxLjUgMjguNyAxODEuNSA0MS40IDIwOC45IDkzLjYgMTI2LjcgMTguNy0yOS42IDI4LjgtNTIuMSAzMC4yLTY3LjYgNC44LTQ1LjktMzUuOC00Mi44LTYzLjMtMzEgMjItNzIuMSA2NC4xLTEwNy4xIDEyNi4yLTEwNS4xIDQ1LjggMS4yIDY3LjUgMzEuMSA2NC45IDg5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbWVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMy4yIDMySDQ0LjhDMjAuMSAzMiAwIDUyLjEgMCA3Ni44djM1OC40QzAgNDU5LjkgMjAuMSA0ODAgNDQuOCA0ODBoMzU4LjRjMjQuNyAwIDQ0LjgtMjAuMSA0NC44LTQ0LjhWNzYuOGMwLTI0LjctMjAuMS00NC44LTQ0LjgtNDQuOHpNMzc3IDE4MC44Yy0xLjQgMzEuNS0yMy40IDc0LjctNjYgMTI5LjQtNDQgNTcuMi04MS4zIDg1LjgtMTExLjcgODUuOC0xOC45IDAtMzQuOC0xNy40LTQ3LjktNTIuMy0yNS41LTkzLjMtMzYuNC0xNDgtNTcuNC0xNDgtMi40IDAtMTAuOSA1LjEtMjUuNCAxNS4ybC0xNS4yLTE5LjZjMzcuMy0zMi44IDcyLjktNjkuMiA5NS4yLTcxLjIgMjUuMi0yLjQgNDAuNyAxNC44IDQ2LjUgNTEuNyAyMC43IDEzMS4yIDI5LjkgMTUxIDY3LjYgOTEuNiAxMy41LTIxLjQgMjAuOC0zNy43IDIxLjgtNDguOSAzLjUtMzMuMi0yNS45LTMwLjktNDUuOC0yMi40IDE1LjktNTIuMSA0Ni4zLTc3LjQgOTEuMi03NiAzMy4zLjkgNDkgMjIuNSA0Ny4xIDY0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDI1NC43djUyLjFjLTE4LjQgNC4yLTM2LjkgNi4xLTUyLjEgNi4xLTM2LjkgNzcuNC0xMDMgMTQzLjgtMTI1LjEgMTU2LjItMTQgNy45LTI3LjEgOC40LTQyLjctLjhDMTM3IDQ1MiAzNC4yIDM2Ny43IDAgMTAyLjdoNzQuNUM5My4yIDI2MS44IDEzOSAzNDMuNCAxODkuMyA0MDQuNWMyNy45LTI3LjkgNTQuOC02NS4xIDc1LjYtMTA2LjktNDkuOC0yNS4zLTgwLjEtODAuOS04MC4xLTE0NS42IDAtNjUuNiAzNy43LTExNS4xIDEwMi4yLTExNS4xIDExNC45IDAgMTA2LjIgMTI3LjkgODEuNiAxODEuNSAwIDAtNDYuNCA5LjItNjMuNS0yMC41IDMuNC0xMS4zIDguMi0zMC44IDguMi00OC41IDAtMzEuMy0xMS4zLTQ2LjYtMjguNC00Ni42LTE4LjIgMC0zMC44IDE3LjEtMzAuOCA1MCAuMSA3OS4yIDU5LjQgMTE4LjcgMTI5LjkgMTAxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxLjQ5MDcgNjMuNDkwN0MwIDk0Ljk4MTMgMCAxNDUuNjcxIDAgMjQ3LjA0VjI2NC45NkMwIDM2Ni4zMjkgMCA0MTcuMDE5IDMxLjQ5MDcgNDQ4LjUwOUM2Mi45ODEzIDQ4MCAxMTMuNjcxIDQ4MCAyMTUuMDQgNDgwSDIzMi45NkMzMzQuMzI5IDQ4MCAzODUuMDE5IDQ4MCA0MTYuNTA5IDQ0OC41MDlDNDQ4IDQxNy4wMTkgNDQ4IDM2Ni4zMjkgNDQ4IDI2NC45NlYyNDcuMDRDNDQ4IDE0NS42NzEgNDQ4IDk0Ljk4MTMgNDE2LjUwOSA2My40OTA3QzM4NS4wMTkgMzIgMzM0LjMyOSAzMiAyMzIuOTYgMzJIMjE1LjA0QzExMy42NzEgMzIgNjIuOTgxMyAzMiAzMS40OTA3IDYzLjQ5MDdaTTc1LjYgMTY4LjI2N0gxMjYuNzQ3QzEyOC40MjcgMjUzLjc2IDE2Ni4xMzMgMjg5Ljk3MyAxOTYgMjk3LjQ0VjE2OC4yNjdIMjQ0LjE2VjI0MkMyNzMuNjUzIDIzOC44MjcgMzA0LjY0IDIwNS4yMjcgMzE1LjA5MyAxNjguMjY3SDM2My4yNTNDMzU5LjMxMyAxODcuNDM1IDM1MS40NiAyMDUuNTgzIDM0MC4xODYgMjIxLjU3OUMzMjguOTEzIDIzNy41NzQgMzE0LjQ2MSAyNTEuMDcxIDI5Ny43MzMgMjYxLjIyN0MzMTYuNDEgMjcwLjQ5OSAzMzIuOTA3IDI4My42MyAzNDYuMTMyIDI5OS43NTFDMzU5LjM1NyAzMTUuODczIDM2OS4wMSAzMzQuNjE4IDM3NC40NTMgMzU0Ljc0N0gzMjEuNDRDMzE2LjU1NSAzMzcuMjYyIDMwNi42MTQgMzIxLjYxIDI5Mi44NjUgMzA5Ljc1NEMyNzkuMTE3IDI5Ny44OTkgMjYyLjE3MyAyOTAuMzY4IDI0NC4xNiAyODguMTA3VjM1NC43NDdIMjM4LjM3M0MxMzYuMjY3IDM1NC43NDcgNzguMDI2NyAyODQuNzQ3IDc1LjYgMTY4LjI2N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm52IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNC45IDM1MmMtMzQuMSAwLTQ2LjQtMzAuNC00Ni40LTMwLjRMMi42IDIxMC4xUy03LjggMTkyIDEzIDE5MmgzMi44YzEwLjQgMCAxMy4yIDguNyAxOC44IDE4LjFsMzYuNyA3NC41czUuMiAxMy4xIDIxLjEgMTMuMSAyMS4xLTEzLjEgMjEuMS0xMy4xbDM2LjctNzQuNWM1LjYtOS41IDguNC0xOC4xIDE4LjgtMTguMWgzMi44YzIwLjggMCAxMC40IDE4LjEgMTAuNCAxOC4xbC01NS44IDExMS41UzE3NC4yIDM1MiAxNDAgMzUyaC0zNS4xem0zOTUgMGMtMzQuMSAwLTQ2LjQtMzAuNC00Ni40LTMwLjRsLTU1LjktMTExLjVTMzg3LjIgMTkyIDQwOCAxOTJoMzIuOGMxMC40IDAgMTMuMiA4LjcgMTguOCAxOC4xbDM2LjcgNzQuNXM1LjIgMTMuMSAyMS4xIDEzLjEgMjEuMS0xMy4xIDIxLjEtMTMuMWwzNi44LTc0LjVjNS42LTkuNSA4LjQtMTguMSAxOC44LTE4LjFINjI3YzIwLjggMCAxMC40IDE4LjEgMTAuNCAxOC4xbC01NS45IDExMS41UzU2OS4zIDM1MiA1MzUuMSAzNTJoLTM1LjJ6TTMzNy42IDE5MmMzNC4xIDAgNDYuNCAzMC40IDQ2LjQgMzAuNGw1NS45IDExMS41czEwLjQgMTguMS0xMC40IDE4LjFoLTMyLjhjLTEwLjQgMC0xMy4yLTguNy0xOC44LTE4LjFsLTM2LjctNzQuNXMtNS4yLTEzLjEtMjEuMS0xMy4xYy0xNS45IDAtMjEuMSAxMy4xLTIxLjEgMTMuMWwtMzYuNyA3NC41Yy01LjYgOS40LTguNCAxOC4xLTE4LjggMTguMWgtMzIuOWMtMjAuOCAwLTEwLjQtMTguMS0xMC40LTE4LjFsNTUuOS0xMTEuNXMxMi4yLTMwLjQgNDYuNC0zMC40aDM1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZ1ZWpzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Ni45IDY0LjNIMjgwbC01NiA4OC42LTQ4LTg4LjZIMEwyMjQgNDQ4IDQ0OCA2NC4zaC05MS4xem0tMzAxLjIgMzJoNTMuOEwyMjQgMjk0LjUgMzM4LjQgOTYuM2g1My44TDIyNCAzODQuNSA1NS43IDk2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhdGNobWFuTW9uaXRvcmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYsMTZDMTIzLjQ1MiwxNiwxNiwxMjMuNDUyLDE2LDI1NlMxMjMuNDUyLDQ5NiwyNTYsNDk2LDQ5NiwzODguNTQ4LDQ5NiwyNTYsMzg4LjU0OCwxNiwyNTYsMTZaTTEyMS42OSw0MjkuMTIyQzcwLjA1NiwzODguOTcyLDM2Ljc0MSwzMjYuMzIyLDM2Ljc0MSwyNTZhMjE4LjUxOSwyMTguNTE5LDAsMCwxLDkuNTg3LTY0LjEyMmwxMDIuOS0xNy44OTUtLjEyMSwxMC45NjctMTMuOTQzLDIuMDEzcy0uMTQ0LDEyLjUtLjE0NCwxOS41NDlhMTIuNzc4LDEyLjc3OCwwLDAsMCw0Ljg4NywxMC4zNDlsOS40NjgsNy40Wm0xMDUuNjkyLTI4My4yNyw4LjQ4LTcuNjE4czYuOTM0LTUuMzgtLjE0My05LjM0NGMtNy4xODgtNC4wMjQtMzkuNTMtMzQuNS0zOS41My0zNC41LTUuMzQ4LTUuNDc3LTguMjU3LTcuMzQ3LTE1LjQ2LDAsMCwwLTMyLjM0MiwzMC40NzQtMzkuNTI5LDM0LjUtNy4wNzgsMy45NjQtLjE0NCw5LjM0NC0uMTQ0LDkuMzQ0bDguNDgxLDcuNjE4LS4wNDgsNC4zNjlMNzUuOTgyLDEzMS4wNDVjMzkuNjQ0LTU2LjkzOCwxMDUuNTMyLTk0LjMsMTgwLjAxOC05NC4zQTIxOC43NTQsMjE4Ljc1NCwwLDAsMSw0MjAuOTM0LDExMS43N2wtMTkzLjUxMiwzNy43Wm0zNC4wNjMsMzI5LjI2OS0zMy45LTI1MC44NTcsOS40NjctNy40YTEyLjc3OCwxMi43NzgsMCwwLDAsNC44ODgtMTAuMzQ5YzAtNy4wNDQtLjE0NC0xOS41NDktLjE0NC0xOS41NDlsLTEzLjk0My0yLjAxMy0uMTE2LTEwLjQ3NCwyNDEuNzExLDMxLjM5MUEyMTguODcyLDIxOC44NzIsMCwwLDEsNDc1LjI1OSwyNTZDNDc1LjI1OSwzNzUuMDc0LDM3OS44MzEsNDcyLjIxMiwyNjEuNDQ1LDQ3NS4xMjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjE3IDIwMS42N0M1MTYuNjkgMjg3LjUzIDQ3MS4yMyAzNjkuNTkgMzg5IDQwOS44YzEzIDM0LjEtMTIuNCA3MC4yLTQ4LjMyIDcwLjJhNTEuNjggNTEuNjggMCAwIDEtNTEuNTctNDljLTYuNDQuMTktNjQuMiAwLTc2LjMzLS42NEE1MS42OSA1MS42OSAwIDAgMSAxNTkgNDc5LjkyYy0zMy44Ni0xLjM2LTU3Ljk1LTM0Ljg0LTQ3LTY3LjkyLTM3LjIxLTEzLjExLTcyLjU0LTM0Ljg3LTk5LjYyLTcwLjgtMTMtMTcuMjgtLjQ4LTQxLjggMjAuODQtNDEuOCA0Ni4zMSAwIDMyLjIyLTU0LjE3IDQzLjE1LTExMC4yNkM5NC44IDk1LjIgMTkzLjEyIDMyIDI4OC4wOSAzMmMxMDIuNDggMCAxOTcuMTUgNzAuNjcgMjE0LjA4IDE2OS42N3pNMzczLjUxIDM4OC4yOGM0Mi0xOS4xOCA4MS4zMy01Ni43MSA5Ni4yOS0xMDIuMTQgNDAuNDgtMTIzLjA5LTY0LjE1LTIyOC0xODEuNzEtMjI4LTgzLjQ1IDAtMTcwLjMyIDU1LjQyLTE4Ni4wNyAxMzYtOS41MyA0OC45MSA1IDEzMS4zNS02OC43NSAxMzEuMzVDNTguMjEgMzU4LjYgOTEuNiAzNzguMTEgMTI3IDM4OS41NGMyNC42Ni0yMS44IDYzLjg3LTE1LjQ3IDc5LjgzIDE0LjM0IDE0LjIyIDEgNzkuMTkgMS4xOCA4Ny45LjgyYTUxLjY5IDUxLjY5IDAgMCAxIDc4Ljc4LTE2LjQyek0yMDUuMTIgMTg3LjEzYzAtMzQuNzQgNTAuODQtMzQuNzUgNTAuODQgMHMtNTAuODQgMzQuNzQtNTAuODQgMHptMTE2LjU3IDBjMC0zNC43NCA1MC44Ni0zNC43NSA1MC44NiAwcy01MC44NiAzNC43NS01MC44NiAwem0tMTIyLjYxIDcwLjY5Yy0zLjQ0LTE2Ljk0IDIyLjE4LTIyLjE4IDI1LjYyLTUuMjFsLjA2LjI4YzQuMTQgMjEuNDIgMjkuODUgNDQgNjQuMTIgNDMuMDcgMzUuNjgtLjk0IDU5LjI1LTIyLjIxIDY0LjExLTQyLjc3IDQuNDYtMTYuMDUgMjguNi0xMC4zNiAyNS40NyA2LTUuMjMgMjIuMTgtMzEuMjEgNjItOTEuNDYgNjIuOS00Mi41NSAwLTgwLjg4LTI3Ljg0LTg3LjktNjQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlYkF3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyLjIgNTJjMCAyMC45LTEyLjQgMzktMzAuMiA0Ny4yTDQ0OCAxOTJsMTA0LjQtMjAuOWMtNS4zLTcuNy04LjQtMTcuMS04LjQtMjcuMWMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4YzAgMjYtMjAuNiA0Ny4xLTQ2LjQgNDhMNDgxIDQ0Mi4zYy0xMC4zIDIzLTMzLjIgMzcuNy01OC40IDM3LjdsLTIwNS4yIDBjLTI1LjIgMC00OC0xNC44LTU4LjQtMzcuN0w0Ni40IDE5MkMyMC42IDE5MS4xIDAgMTcwIDAgMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhjMCAxMC4xLTMuMSAxOS40LTguNCAyNy4xTDE5MiAxOTIgMjk4LjEgOTkuMWMtMTcuNy04LjMtMzAtMjYuMy0zMC00Ny4xYzAtMjguNyAyMy4zLTUyIDUyLTUyczUyIDIzLjMgNTIgNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlYmZsb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDY0TDQzNS44IDQ2My4ySDI0NGw4NS41LTE2NS41aC0zLjhDMjU1LjEgMzg5LjMgMTQ5LjkgNDQ5LjUgMCA0NjMuMlYzMDAuMXM5NS45LTUuNyAxNTIuMy02NC45SDBWNjRIMTcxLjFWMjA0LjhsMy44IDBMMjQ0LjkgNjRIMzc0LjNWMjAzLjlsMy44IDBMNDUwLjcgNjRINjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWVibHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI1LjA5IDY1LjgzYy0zOS44OCAwLTczLjI4IDI1LjczLTgzLjY2IDY0LjMzLTE4LjE2LTU4LjA2LTY1LjUtNjQuMzMtODQuOTUtNjQuMzMtMTkuNzggMC02Ni44IDYuMjgtODUuMjggNjQuMzMtMTAuMzgtMzguNi00My40NS02NC4zMy04My42Ni02NC4zM0MzOC41OSA2NS44MyAwIDk5LjcyIDAgMTQzLjAzYzAgMjguOTYgNC4xOCAzMy4yNyA3Ny4xNyAyMzMuNDggMjIuMzcgNjAuNTcgNjcuNzcgNjkuMzUgOTIuNzQgNjkuMzUgMzkuMjMgMCA3MC4wNC0xOS40NiA4NS45My01My45OCAxNS44OSAzNC44MyA0Ni42OSA1NC4yOSA4NS45MyA1NC4yOSAyNC45NyAwIDcwLjM2LTkuMSA5Mi43NC02OS42NyA3Ni41NS0yMDguNjUgNzcuNS0yMDUuNTggNzcuNS0yMjcuMi42My00OC4zMi0zNi4wMS04My40Ny04Ni45Mi04My40N3ptMjYuMzQgMTE0LjgxbC02NS41NyAxNzYuNDRjLTcuOTIgMjEuNDktMjEuMjIgMzcuMjItNDYuMjQgMzcuMjItMjMuNDQgMC0zNy4zOC0xMi40MS00NC4wMy0zMy45bC0zOS4yOC0xMTcuNDJoLS45NUwyMTYuMDggMzYwLjRjLTYuOTYgMjEuNS0yMC45IDMzLjYtNDQuMDIgMzMuNi0yNS4wMiAwLTM4LjMzLTE1Ljc0LTQ2LjI0LTM3LjIyTDYwLjg4IDE4MS41NWMtNS4zOC0xNC44My03LjkyLTIzLjkxLTcuOTItMzQuNSAwLTE2LjM0IDE1Ljg0LTI5LjM2IDM4LjMzLTI5LjM2IDE4LjY5IDAgMzEuOTkgMTEuOCAzNi4xMSAyOS4wNWw0NC4wMyAxMzkuODJoLjk1bDQ0LjY2LTEzNi43OWM2LjAyLTE5LjY3IDE2LjQ3LTMyLjA4IDM4Ljk2LTMyLjA4czMyLjk0IDEyLjExIDM4Ljk2IDMyLjA4bDQ0LjY2IDEzNi43OWguOTVsNDQuMDMtMTM5LjgyYzQuMTItMTcuMjUgMTcuNDItMjkuMDUgMzYuMTEtMjkuMDUgMjIuMTcgMCAzOC4zMyAxMy4zMiAzOC4zMyAzNS43MS0uMzIgNy44Ny00LjEyIDE2LjA0LTcuNjEgMjcuMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNyAxNzcuNmM3LjYtMjQtMTMuNC00Ni44LTM3LjQtNDEuNy0yMiA0LjgtMjguOC0yOC4xLTcuMS0zMi44IDUwLjEtMTAuOSA5Mi4zIDM3LjEgNzYuNSA4NC44LTYuOCAyMS4yLTM4LjggMTAuOC0zMi0xMC4zek0yMTQuOCA0NDYuN0MxMDguNSA0NDYuNyAwIDM5NS4zIDAgMzEwLjRjMC00NC4zIDI4LTk1LjQgNzYuMy0xNDMuN0MxNzYgNjcgMjc5LjUgNjUuOCAyNDkuOSAxNjFjLTQgMTMuMSAxMi4zIDUuNyAxMi4zIDYgNzkuNS0zMy42IDE0MC41LTE2LjggMTE0IDUxLjQtMy43IDkuNCAxLjEgMTAuOSA4LjMgMTMuMSAxMzUuNyA0Mi4zIDM0LjggMjE1LjItMTY5LjcgMjE1LjJ6bTE0My43LTE0Ni4zYy01LjQtNTUuNy03OC41LTk0LTE2My40LTg1LjctODQuOCA4LjYtMTQ4LjggNjAuMy0xNDMuNCAxMTZzNzguNSA5NCAxNjMuNCA4NS43Yzg0LjgtOC42IDE0OC44LTYwLjMgMTQzLjQtMTE2ek0zNDcuOSAzNS4xYy0yNS45IDUuNi0xNi44IDQzLjcgOC4zIDM4LjMgNzIuMy0xNS4yIDEzNC44IDUyLjggMTExLjcgMTI0LTcuNCAyNC4yIDI5LjEgMzcgMzcuNCAxMiAzMS45LTk5LjgtNTUuMS0xOTUuOS0xNTcuNC0xNzQuM3ptLTc4LjUgMzExYy0xNy4xIDM4LjgtNjYuOCA2MC0xMDkuMSA0Ni4zLTQwLjgtMTMuMS01OC01My40LTQwLjMtODkuNyAxNy43LTM1LjQgNjMuMS01NS40IDEwMy40LTQ1LjEgNDIgMTAuOCA2My4xIDUwLjIgNDYgODguNXptLTg2LjMtMzBjLTEyLjktNS40LTMwIC4zLTM4IDEyLjktOC4zIDEyLjktNC4zIDI4IDguNiAzNCAxMy4xIDYgMzAuOC4zIDM5LjEtMTIuOSA4LTEzLjEgMy43LTI4LjMtOS43LTM0em0zMi42LTEzLjRjLTUuMS0xLjctMTEuNC42LTE0LjMgNS40LTIuOSA1LjEtMS40IDEwLjYgMy43IDEyLjkgNS4xIDIgMTEuNy0uMyAxNC42LTUuNCAyLjgtNS4yIDEuMS0xMC45LTQtMTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VpeGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NS4yIDE2Ny42YzYuNCAwIDEyLjYuMyAxOC44IDEuMUMzODcuNCA5MC4zIDMwMy4zIDMyIDIwNy43IDMyIDEwMC41IDMyIDEzIDEwNC44IDEzIDE5Ny40YzAgNTMuNCAyOS4zIDk3LjUgNzcuOSAxMzEuNmwtMTkuMyA1OC42IDY4LTM0LjFjMjQuNCA0LjggNDMuOCA5LjcgNjguMiA5LjcgNi4yIDAgMTIuMS0uMyAxOC4zLS44LTQtMTIuOS02LjItMjYuNi02LjItNDAuOC0uMS04NC45IDcyLjktMTU0IDE2NS4zLTE1NHptLTEwNC41LTUyLjljMTQuNSAwIDI0LjIgOS43IDI0LjIgMjQuNCAwIDE0LjUtOS43IDI0LjItMjQuMiAyNC4yLTE0LjggMC0yOS4zLTkuNy0yOS4zLTI0LjIuMS0xNC43IDE0LjYtMjQuNCAyOS4zLTI0LjR6bS0xMzYuNCA0OC42Yy0xNC41IDAtMjkuMy05LjctMjkuMy0yNC4yIDAtMTQuOCAxNC44LTI0LjQgMjkuMy0yNC40IDE0LjggMCAyNC40IDkuNyAyNC40IDI0LjQgMCAxNC42LTkuNiAyNC4yLTI0LjQgMjQuMnpNNTYzIDMxOS40YzAtNzcuOS03Ny45LTE0MS4zLTE2NS40LTE0MS4zLTkyLjcgMC0xNjUuNCA2My40LTE2NS40IDE0MS4zUzMwNSA0NjAuNyAzOTcuNiA0NjAuN2MxOS4zIDAgMzguOS01LjEgNTguNi05LjlsNTMuNCAyOS4zLTE0LjgtNDguNkM1MzQgNDAyLjEgNTYzIDM2My4yIDU2MyAzMTkuNHptLTIxOS4xLTI0LjVjLTkuNyAwLTE5LjMtOS43LTE5LjMtMTkuNiAwLTkuNyA5LjctMTkuMyAxOS4zLTE5LjMgMTQuOCAwIDI0LjQgOS43IDI0LjQgMTkuMyAwIDEwLTkuNyAxOS42LTI0LjQgMTkuNnptMTA3LjEgMGMtOS43IDAtMTkuMy05LjctMTkuMy0xOS42IDAtOS43IDkuNy0xOS4zIDE5LjMtMTkuMyAxNC41IDAgMjQuNCA5LjcgMjQuNCAxOS4zLjEgMTAtOS45IDE5LjYtMjQuNCAxOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGF0c2FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODAuOSA5Ny4xQzMzOSA1NS4xIDI4My4yIDMyIDIyMy45IDMyYy0xMjIuNCAwLTIyMiA5OS42LTIyMiAyMjIgMCAzOS4xIDEwLjIgNzcuMyAyOS42IDExMUwwIDQ4MGwxMTcuNy0zMC45YzMyLjQgMTcuNyA2OC45IDI3IDEwNi4xIDI3aC4xYzEyMi4zIDAgMjI0LjEtOTkuNiAyMjQuMS0yMjIgMC01OS4zLTI1LjItMTE1LTY3LjEtMTU3em0tMTU3IDM0MS42Yy0zMy4yIDAtNjUuNy04LjktOTQtMjUuN2wtNi43LTQtNjkuOCAxOC4zTDcyIDM1OS4ybC00LjQtN2MtMTguNS0yOS40LTI4LjItNjMuMy0yOC4yLTk4LjIgMC0xMDEuNyA4Mi44LTE4NC41IDE4NC42LTE4NC41IDQ5LjMgMCA5NS42IDE5LjIgMTMwLjQgNTQuMSAzNC44IDM0LjkgNTYuMiA4MS4yIDU2LjEgMTMwLjUgMCAxMDEuOC04NC45IDE4NC42LTE4Ni42IDE4NC42em0xMDEuMi0xMzguMmMtNS41LTIuOC0zMi44LTE2LjItMzcuOS0xOC01LjEtMS45LTguOC0yLjgtMTIuNSAyLjgtMy43IDUuNi0xNC4zIDE4LTE3LjYgMjEuOC0zLjIgMy43LTYuNSA0LjItMTIgMS40LTMyLjYtMTYuMy01NC0yOS4xLTc1LjUtNjYtNS43LTkuOCA1LjctOS4xIDE2LjMtMzAuMyAxLjgtMy43LjktNi45LS41LTkuNy0xLjQtMi44LTEyLjUtMzAuMS0xNy4xLTQxLjItNC41LTEwLjgtOS4xLTkuMy0xMi41LTkuNS0zLjItLjItNi45LS4yLTEwLjYtLjItMy43IDAtOS43IDEuNC0xNC44IDYuOS01LjEgNS42LTE5LjQgMTktMTkuNCA0Ni4zIDAgMjcuMyAxOS45IDUzLjcgMjIuNiA1Ny40IDIuOCAzLjcgMzkuMSA1OS43IDk0LjggODMuOCAzNS4yIDE1LjIgNDkgMTYuNSA2Ni42IDEzLjkgMTAuNy0xLjYgMzIuOC0xMy40IDM3LjQtMjYuNCA0LjYtMTMgNC42LTI0LjEgMy4yLTI2LjQtMS4zLTIuNS01LTMuOS0xMC41LTYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2htY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDE2MXYtMjEuM2wtMjguNS04LjgtMi4yLTEwLjQgMjAuMS0yMC43TDQyNyA4MC40bC0yOSA3LjUtNy4yLTcuNSA3LjUtMjguMi0xOS4xLTExLjYtMjEuMyAyMS0xMC43LTMuMi03LTI2LjRoLTIyLjZsLTYuMiAyNi40LTEyLjEgMy4yLTE5LjctMjEtMTkuNCAxMSA4LjEgMjcuNy04LjEgOC40LTI4LjUtNy41LTExIDE5LjEgMjAuNyAyMS0yLjkgMTAuNC0yOC41IDcuOC0uMyAyMS43IDI4LjggNy41IDIuNCAxMi4xLTIwLjEgMTkuOSAxMC40IDE4LjUgMjkuNi03LjUgNy4yIDguNi04LjEgMjYuOSAxOS45IDExLjYgMTkuNC0yMC40IDExLjYgMi45IDYuNyAyOC41IDIyLjYuMyA2LjctMjguOCAxMS42LTMuNSAyMC43IDIxLjYgMjAuNC0xMi4xLTguOC0yOCA3LjgtOC4xIDI4LjggOC44IDEwLjMtMjAuMS0yMC45LTE4LjggMi4yLTEyLjEgMjkuMS03em0tMTE5LjIgNDUuMmMtMzEuMyAwLTU2LjgtMjUuNC01Ni44LTU2LjhzMjUuNC01Ni44IDU2LjgtNTYuOCA1Ni44IDI1LjQgNTYuOCA1Ni44YzAgMzEuNS0yNS40IDU2LjgtNTYuOCA1Ni44em03Mi4zIDE2LjRsNDYuOSAxNC41VjI3N2wtNTUuMSAxMy40LTQuMSAyMi43IDM4LjkgMzUuMy0xOS4yIDM3LjktNTQtMTYuNy0xNC42IDE1LjIgMTYuNyA1Mi41LTM4LjMgMjIuNy0zOC45LTQwLjUtMjEuNyA2LjYtMTIuNiA1NC00Mi40LS41LTEyLjYtNTMuNi0yMS43LTUuNi0zNi40IDM4LjQtMzcuNC0yMS43IDE1LjItNTAuNS0xMy43LTE2LjEtNTUuNSAxNC4xLTE5LjctMzQuOCAzNy45LTM3LjQtNC44LTIyLjgtNTQtMTQuMS41LTQwLjlMNTQgMjE5LjlsNS43LTE5LjctMzguOS0zOS40TDQxLjUgMTI1bDUzLjYgMTQuMSAxNS4yLTE1LjctMTUuMi01MiAzNi40LTIwLjcgMzYuOCAzOS40TDE5MSA4NGwxMS42LTUySDI0NWwxMS42IDQ1LjlMMjM0IDcybC02LjMtMS43LTMuMyA1LjctMTEgMTkuMS0zLjMgNS42IDQuNiA0LjYgMTcuMiAxNy40LS4zIDEtMjMuOCA2LjUtNi4yIDEuNy0uMSA2LjQtLjIgMTIuOUMxNTMuOCAxNjEuNiAxMTggMjA0IDExOCAyNTQuN2MwIDU4LjMgNDcuMyAxMDUuNyAxMDUuNyAxMDUuNyA1MC41IDAgOTIuNy0zNS40IDEwMy4yLTgyLjhsMTMuMi4yIDYuOS4xIDEuNi02LjcgNS42LTI0IDEuOS0uNiAxNy4xIDE3LjggNC43IDQuOSA1LjgtMy40IDIwLjQtMTIuMSA1LjgtMy41LTItNi41LTYuOC0yMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaWtpcGVkaWFXIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCA1MS4ybC0uMyAxMi4yYy0yOC4xLjgtNDUgMTUuOC01NS44IDQwLjMtMjUgNTcuOC0xMDMuMyAyNDAtMTU1LjMgMzU4LjZINDE1bC04MS45LTE5My4xYy0zMi41IDYzLjYtNjguMyAxMzAtOTkuMiAxOTMuMS0uMy4zLTE1IDAtMTUtLjNDMTcyIDM1Mi4zIDEyMi44IDI0My40IDc1LjggMTMzLjQgNjQuNCAxMDYuNyAyNi40IDYzLjQuMiA2My43YzAtMy4xLS4zLTEwLS4zLTE0LjJoMTYxLjl2MTMuOWMtMTkuMiAxLjEtNTIuOCAxMy4zLTQzLjMgMzQuMiAyMS45IDQ5LjcgMTAzLjYgMjQwLjMgMTI1LjYgMjg4LjYgMTUtMjkuNyA1Ny44LTEwOS4yIDc1LjMtMTQyLjgtMTMuOS0yOC4zLTU4LjYtMTMzLjktNzIuOC0xNjAtOS43LTE3LjgtMzYuMS0xOS40LTU1LjgtMTkuN1Y0OS44bDE0Mi41LjN2MTMuMWMtMTkuNC42LTM4LjEgNy44LTI5LjQgMjYuMSAxOC45IDQwIDMwLjYgNjguMSA0OC4xIDEwNC43IDUuNi0xMC44IDM0LjctNjkuNCA0OC4xLTEwMC44IDguOS0yMC42LTMuOS0yOC42LTM4LjYtMjkuNC4zLTMuNiAwLTEwLjMuMy0xMy42IDQ0LjQtLjMgMTExLjEtLjMgMTIzLjEtLjZ2MTMuNmMtMjIuNS44LTQ1LjggMTIuOC01OC4xIDMxLjdsLTU5LjIgMTIyLjhjNi40IDE2LjEgNjMuMyAxNDIuOCA2OS4yIDE1Ni43TDU1OS4yIDkxLjhjLTguNi0yMy4xLTM2LjQtMjguMS00Ny4yLTI4LjNWNDkuNmwxMjcuOCAxLjEuMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTMuN2wxODMuNi0yNS4zdjE3Ny40SDBWOTMuN3ptMCAzMjQuNmwxODMuNiAyNS4zVjI2OC40SDB2MTQ5Ljl6bTIwMy44IDI4TDQ0OCA0ODBWMjY4LjRIMjAzLjh2MTc3Ljl6bTAtMzgwLjZ2MTgwLjFINDQ4VjMyTDIwMy44IDY1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpcnNpbmRoYW5kd2VyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MC43NzE2MSw0NzkuODEyMTNoODMuMzYwNzFWMzY3Ljg0NzQxbC04My4zNjA3MSw0Ny4wMDlabTMyOS4wNDY3NSwwaDgyLjM1MDIyVjQxNC44NTY0NWwtODIuMzUwMjItNDcuMDA5Wm0uMDA1NjgtNDQ4VjI1MS41NjhMMjU2LjE3NTksMTc5LjE4NjEsMTM0LjUwMzc4LDI1MS41NjhWMzEuODEyMTNINTAuNzcxNjFWMzkyLjYwNTY1TDI1Ni4xNzU5LDI3MC4zMTkwOSw0NjIuMTY4NTgsMzkyLjYwNTY1VjMxLjgxMjEzWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkzLjM4IDEzMS42OWMwIDEzLjAzIDIuMDggMzIuNjktMjguNjggNDMuODMtOS41MiAzLjQ1LTE1Ljk1IDkuNjYtMTUuOTUgOS42NiAwLTMxIDQuNzItNDIuMjIgMTcuNC00OC44NiA5Ljc1LTUuMTEgMjcuMjMtNC42MyAyNy4yMy00LjYzem0tMTE1LjggMzUuNTRsLTM0LjI0IDEzMi42Ni0yOC40OC0xMDguNTdjLTcuNjktMzEuOTktMjAuODEtNDguNTMtNDguNDMtNDguNTMtMjcuMzcgMC00MC42NiAxNi4xOC00OC40MyA0OC41M0w4OS41MiAyOTkuODkgNTUuMjggMTY3LjIzQzQ5LjczIDE0MC41MSAyMy44NiAxMjguOTYgMCAxMzEuOTZsNjUuNTcgMjQ3LjkzczIxLjYzIDEuNTYgMzIuNDYtMy45NmMxNC4yMi03LjI1IDIwLjk4LTEyLjg0IDI5LjU5LTQ2LjU3IDcuNjctMzAuMDcgMjkuMTEtMTE4LjQxIDMxLjEyLTEyNC43IDQuNzYtMTQuOTQgMTEuMDktMTMuODEgMTUuNCAwIDEuOTcgNi4zIDIzLjQ1IDk0LjYzIDMxLjEyIDEyNC43IDguNiAzMy43MyAxNS4zNyAzOS4zMiAyOS41OSA0Ni41NyAxMC44MiA1LjUyIDMyLjQ2IDMuOTYgMzIuNDYgMy45Nmw2NS41Ny0yNDcuOTNjLTI0LjQyLTMuMDctNDkuODIgOC45My01NS4zIDM1LjI3em0xMTUuNzggNS4yMXMtNC4xIDYuMzQtMTMuNDYgMTEuNTdjLTYuMDEgMy4zNi0xMS43OCA1LjY0LTE3Ljk3IDguNjEtMTUuMTQgNy4yNi0xMy4xOCAxMy45NS0xMy4xOCAzNS4ydjE1Mi4wN3MxNi41NSAyLjA5IDI3LjM3LTMuNDNjMTMuOTMtNy4xIDE3LjEzLTEzLjk1IDE3LjI2LTQ0Ljc4VjE4MS40MWwtLjAyLjAxdi04Ljk4em0xNjMuNDQgODQuMDhMNjQwIDEzMi43OHMtMzUuMTEtNS45OC01Mi41IDkuODVjLTEzLjMgMTIuMS0yNC40MSAyOS41NS01NC4xOCA3Mi40Ny0uNDcuNzMtNi4yNSAxMC41NC0xMy4wNyAwLTI5LjI5LTQyLjIzLTQwLjgtNjAuMjktNTQuMTgtNzIuNDctMTcuMzktMTUuODMtNTIuNS05Ljg1LTUyLjUtOS44NWw4My4yIDEyMy43NC04Mi45NyAxMjMuMzZzMzYuNTcgNC42MiA1My45NS0xMS4yMWMxMS40OS0xMC40NiAxNy41OC0yMC4zNyA1Mi41MS03MC43MiA2LjgxLTEwLjUyIDEyLjU3LS43NyAxMy4wNyAwIDI5LjQgNDIuMzggMzkuMjMgNTguMDYgNTMuMTQgNzAuNzIgMTcuMzkgMTUuODMgNTMuMzIgMTEuMjEgNTMuMzIgMTEuMjFMNTU2LjggMjU2LjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaXphcmRzT2ZUaGVDb2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTkuMTkgMzQ1LjY5Yy0xLjkgMS4zOC0xMS4wNyA4LjQ0LS4yNiAyMy41NyA0LjY0IDYuNDIgMTQuMTEgMTIuNzkgMjEuNzMgNi41NSA2LjUtNC44OCA3LjM1LTEyLjkyLjI2LTIzLjA0LTUuNDctNy43Ni0xNC4yOC0xMi44OC0yMS43My03LjA4em0zMzYuNzUgNzUuOTRjLS4zNCAxLjctLjU1IDEuNjcuNzkgMCAyLjA5LTQuMTkgNC4xOS0xMC4yMSA0Ljk4LTE5LjkgMy4xNC0zOC40OS00MC4zMy03MS40OS0xMDEuMzQtNzguMDMtNTQuNzMtNi4wMi0xMjQuMzggOS4xNy0xODguOCA2MC40OWwtLjI2IDEuNTdjMi42MiA0Ljk4IDQuOTggMTAuNzQgMy40IDIxLjIxbC43OS4yNmM2My44OS01OC40IDEzMS4xOS03Ny4yNSAxODQuMzUtNzMuODUgNTguNCAzLjY3IDEwMC4wMyAzNC4wNCAxMDAuMDMgNjguMDgtLjAxIDkuOTYtMi42MyAxNS43Mi0zLjk0IDIwLjE3ek0zOTIuMjggMjQwLjQyYy43OSA3LjA3IDQuMTkgMTAuMjEgOS4xNyAxMC40NyA1LjUuMjYgOS40My0yLjYyIDEwLjQ3LTYuNTUuNzktMy40IDIuMDktMjkuODUgMi4wOS0yOS44NXMtMTEuMjYgNi41NS0xNC45MyAxMC40N2MtMy42NiAzLjY4LTcuMzMgOC4zOS02LjggMTUuNDZ6bS01MC4wMi0xNTEuMUMxMzcuNzUgODkuMzIgMTMuMSAyMjYuOC43OSAyNDEuMmMtMS4wNS41Mi0xLjMxLjc5Ljc5IDEuMzEgNjAuNDkgMTYuNSAxNTUuODEgODEuMTggMTk2LjEzIDIwMi4xNmwxLjA1LjI2YzU1LjI1LTY5LjkyIDE0MC44OC0xMjguMDUgMjM2Ljk5LTEyOC4wNSA4MC45MiAwIDEzMC4xNSA0Mi4xNiAxMzAuMTUgODAuMzkgMCAxOC4zMy02LjU1IDMzLjUyLTIyLjI2IDQ2LjM1IDAgLjk2LS4yLjc5Ljc5Ljc5IDE0LjY2LTEwLjc0IDI3LjUtMjguOCAyNy41LTQ4LjE4IDAtMjIuNzgtMTIuMDUtMzguMjMtMTIuMDUtMzguMjMgNy4wNyA3LjA3IDEwLjc0IDE2LjI0IDEwLjc0IDE2LjI0IDUuNzYtNDAuODUgMjYuOTctNjIuMzIgMjYuOTctNjIuMzItMi4zNi05LjY5LTYuODEtMTcuODEtNi44MS0xNy44MSA3LjU5IDguMTIgMTQuNCAyNy41IDE0LjQgNDEuMzcgMCAxMC40Ny0zLjQgMjIuNzgtMTIuNTcgMzEuOTVsLjI2LjUyYzguMTItNC45OCAxNi41LTE2Ljc2IDE2LjUtMzcuOTcgMC0xNS43MS00LjcxLTI1LjkyLTQuNzEtMjUuOTIgNS43Ni01LjI0IDExLjI2LTkuMTcgMTUuOTctMTEuNzguNzkgMy40IDIuMDkgOS42OSAyLjM2IDE0LjkzIDAgMS4wNS43OSAxLjgzIDEuMDUgMCAuNzktNS43Ni0uMjYtMTYuMjQtLjI2LTE2LjUgNi4wMi0zLjE0IDkuNjktNC40NSA5LjY5LTQuNDVDNjE3Ljc0IDE3NiA0ODkuNDMgODkuMzIgMzQyLjI2IDg5LjMyem0tOTkuMjQgMjg5LjYyYy0xMS4wNiA4Ljk5LTI0LjIgNC4wOC0zMC42NC00LjE5LTcuNDUtOS41OC02Ljc2LTI0LjA5IDQuMTktMzIuNDcgMTQuODUtMTEuMzUgMjcuMDgtLjQ5IDMxLjE2IDUuNS4yOC4zOSAxMi4xMyAxNi41Ny00LjcxIDMxLjE2em0yLjA5LTEzNi40M2w5LjQzLTE3LjgxIDExLjc4IDcwLjk2LTEyLjU3IDYuMDItMjQuNjItMjguOCAxNC4xNC0yNi43MSAzLjY3IDQuNDUtMS44My04LjExem0xOC41OSAxMTcuNThsLS4yNi0uMjZjMi4wNS00LjEtMi41LTYuNjEtMTcuNTQtMzEuNjktMS4zMS0yLjM2LTMuMTQtMi44OC00LjQ1LTIuNjJsLS4yNi0uNTJjNy44Ni01Ljc2IDE1LjQ1LTEwLjIxIDI1LjQtMTUuNzFsLjUyLjI2YzEuMzEgMS44MyAyLjA5IDIuODggMy40IDQuNzFsLS4yNi41MmMtMS4wNS0uMjYtMi4zNi0uNzktNS4yNC4yNi0yLjA5Ljc5LTcuODYgMy42Ny0xMi4zMSA3LjU5djEuMzFjMS41NyAyLjM2IDMuOTMgNi41NSA1Ljc2IDkuNjloLjI2YzEwLjA1LTYuMjggNy41Ni00LjU1IDExLjUyLTcuODZoLjI2Yy41MiAxLjgzLjUyIDEuODMgMS44MyA1LjVsLS4yNi4yNmMtMy4wNi42MS00LjY1LjM0LTExLjUyIDUuNXYuMjZjOS40NiAxNy4wMiAxMS4wMSAxNi43NSAxMi41NyAxNS45N2wuMjYuMjZjLTIuMzQgMS41OS02LjI3IDQuMjEtOS42OCA2LjU3em01NS4yNi0zMi40N2MtMy4xNCAxLjU3LTYuMDIgMi44OC05Ljk1IDQuOThsLS4yNi0uMjZjMS4yOS0yLjU5IDEuMTYtMi43MS0xMS43OC0zMi40N2wtLjI2LS4yNmMtLjE1IDAtOC45IDMuNjUtOS45NSA3LjMzaC0uNTJsLTEuMDUtNS43Ni4yNi0uNTJjNy4yOS00LjU2IDI1LjUzLTExLjY0IDI3Ljc2LTEyLjU3bC41Mi4yNiAzLjE0IDQuOTgtLjI2LjUyYy0zLjUzLTEuNzYtNy4zNS43Ni0xMi4zMSAyLjYydi4yNmMxMi4zMSAzMi4wMSAxMi42NyAzMC42NCAxNC42NiAzMC42NHYuMjV6bTQ0Ljc3LTE2LjVjLTQuMTkgMS4wNS01LjI0IDEuMzEtOS42OSAyLjg4bC0uMjYtLjI2LjUyLTQuNDVjLTEuMDUtMy40LTMuMTQtMTEuNTItMy42Ny0xMy42MmwtLjI2LS4yNmMtMy40Ljc5LTguOSAyLjYyLTEyLjgzIDMuOTNsLS4yNi4yNmMuNzkgMi42MiAzLjE0IDkuOTUgNC4xOSAxMy44OC43OSAyLjM2IDEuODMgMi44OCAyLjg4IDMuMTR2LjUyYy0zLjY3IDEuMDUtNy4wNyAyLjYyLTEwLjIxIDMuOTNsLS4yNi0uMjZjMS4wNS0xLjMxIDEuMDUtMi44OC4yNi00Ljk4LTEuMDUtMy4xNC04LjEyLTIzLjgzLTkuMTctMjcuMjMtLjUyLTEuODMtMS41Ny0zLjE0LTIuNjItMy4xNHYtLjUyYzMuMTQtMS4wNSA2LjAyLTIuMDkgMTAuNzQtMy40bC4yNi4yNi0uMjYgNC43MWMxLjMxIDMuOTMgMi4zNiA3LjU5IDMuMTQgOS42OWguMjZjMy45My0xLjMxIDkuNDMtMi44OCAxMi44My0zLjkzbC4yNi0uMjYtMi42Mi05LjQzYy0uNTItMS44My0xLjA1LTMuNC0yLjYyLTMuOTN2LS4yNmM0LjQ1LTEuMDUgNy4zMy0xLjgzIDEwLjc0LTIuMzZsLjI2LjI2Yy0xLjA1IDEuMzEtMS4wNSAyLjg4LS41MiA0LjQ1IDEuNTcgNi4yOCA0LjcxIDIwLjQzIDYuMjggMjYuNDUuNTQgMi42MiAxLjg1IDMuNDEgMi42MyAzLjkzem0zMi4yMS02LjgxbC0uMjYuMjZjLTQuNzEuNTItMTQuMTQgMi4zNi0yMi41MiA0LjE5bC0uMjYtLjI2Ljc5LTQuMTljLTEuNTctNy44Ni0zLjQtMTguNTktNC45OC0yNi4xOS0uMjYtMS44My0uNzktMi44OC0yLjYyLTMuNjdsLjc5LS41MmM5LjE3LTEuNTcgMjAuMTYtMi4zNiAyNC44OC0yLjYybC4yNi4yNmMuNTIgMi4zNi43OSAzLjE0IDEuNTcgNS41bC0uMjYuMjZjLTEuMTQtMS4xNC0zLjM0LTMuMi0xNi4yNC0uNzlsLS4yNi4yNmMuMjYgMS41NyAxLjA1IDYuNTUgMS41NyA5Ljk1bC4yNi4yNmM5LjUyLTEuNjggNC43Ni0uMDYgMTAuNzQtMi4zNmguMjZjMCAxLjU3LS4yNiAxLjgzLS4yNiA1LjI0aC0uMjZjLTQuODEtMS4wMy0yLjE1LS45LTEwLjIxIDBsLS4yNi4yNmMuMjYgMi4wOSAxLjU3IDkuNDMgMi4wOSAxMi41N2wuMjYuMjZjMS4xNS4zOCAxNC4yMS0uNjUgMTYuMjQtNC43MWguMjZjLS41MyAyLjM4LTEuMDUgNC4yMS0xLjU4IDYuMDR6bTEwLjc0LTQ0LjUxYy00LjQ1IDIuMzYtOC4xMiAyLjg4LTExIDIuODgtLjI1LjAyLTExLjQxIDEuMDktMTcuNTQtOS45NS02Ljc0LTEwLjc5LS45OC0yNS4yIDUuNS0zMS42OSA4LjgtOC4xMiAyMy4zNS0xMC4xIDI4LjU0LTE3LjAyIDguMDMtMTAuMzMtMTMuMDQtMjIuMzEtMjkuNTktNS43NmwtMi42Mi0yLjg4IDUuMjQtMTYuMjRjMjUuNTktMS41NyA0NS4yLTMuMDQgNTAuMDIgMTYuMjQuNzkgMy4xNCAwIDkuNDMtLjI2IDEyLjA1IDAgMi42Mi0xLjgzIDE4Ljg1LTIuMDkgMjMuMDQtLjUyIDQuMTktLjc5IDE4LjMzLS43OSAyMC42OS4yNiAyLjM2LjUyIDQuMTkgMS41NyA1LjUgMS41NyAxLjgzIDUuNzYgMS44MyA1Ljc2IDEuODNsLS43OSA0LjcxYy0xMS44Mi0xLjA3LTEwLjI4LS41OS0yMC40My0xLjA1LTMuMjItNS4xNS0yLjIzLTMuMjgtNC4xOS03Ljg2IDAgLjAxLTQuMTkgMy45NC03LjMzIDUuNTF6bTM3LjE4IDIxLjIxYy02LjM1LTEwLjU4LTE5LjgyLTcuMTYtMjEuNzMgNS41LTIuNjMgMTcuMDggMTQuMyAxOS43OSAyMC42OSAxMC4yMWwuMjYuMjZjLS41MiAxLjgzLTEuODMgNi4wMi0xLjgzIDYuMjhsLS41Mi41MmMtMTAuMyA2Ljg3LTI4LjUtMi41LTI1LjY2LTE4LjU5IDEuOTQtMTAuODcgMTQuNDQtMTguOTMgMjguOC05Ljk1bC4yNi41MmMwIDEuMDYtLjI3IDMuNDEtLjI3IDUuMjV6bTUuNzctODcuNzN2LTYuNTVjLjY5IDAgMTkuNjUgMy4yOCAyNy43NiA3LjMzbC0xLjU3IDE3LjU0czEwLjIxLTkuNDMgMTUuNDUtMTAuNzRjNS4yNC0xLjU3IDE0LjkzIDcuMzMgMTQuOTMgNy4zM2wtMTEuMjYgMTEuMjZjLTEyLjA3LTYuMzUtMTkuNTktLjA4LTIwLjY5Ljc5LTUuMjkgMzguNzItOC42IDQyLjE3IDQuNDUgNDYuMDlsLS41MiA0LjcxYy0xNy41NS00LjI5LTE4LjUzLTQuNS0zNi45Mi03LjMzbC43OS00LjcxYzcuMjUgMCA3LjQ4LTUuMzIgNy41OS02LjgxIDAgMCA0Ljk4LTUzLjE2IDQuOTgtNTUuMjUtLjAyLTIuODctNC45OS0zLjY2LTQuOTktMy42NnptMTAuOTkgMTE0LjQ0Yy04LjEyLTIuMDktMTQuMTQtMTEtMTAuNzQtMjAuNjkgMy4xNC05LjQzIDEyLjMxLTEyLjMxIDE4Ljg1LTEwLjIxIDkuMTcgMi42MiAxMi44MyAxMS43OCAxMC43NCAxOS4zOC0yLjYxIDguOS05LjQyIDEzLjg3LTE4Ljg1IDExLjUyem00Mi4xNiA5LjY5Yy0yLjM2LS41Mi03LjA3LTIuMzYtOC42NC0yLjg4di0uMjZsMS41Ny0xLjgzYy41OS04LjI0LjU5LTcuMjcuMjYtNy41OS00LjgyLTEuODEtNi42Ni0yLjM2LTcuMDctMi4zNi0xLjMxIDEuODMtMi44OCA0LjQ1LTMuNjcgNS41bC0uNzkgMy40di4yNmMtMS4zMS0uMjYtMy45My0xLjMxLTYuMDItMS41N3YtLjI2bDIuNjItMS44M2MzLjQtNC43MSA5Ljk1LTE0LjE0IDEzLjg4LTIwLjE2di0yLjA5bC41Mi0uMjZjMi4wOS43OSA1LjUgMi4wOSA3LjU5IDIuODguNDguNDguMTgtMS44Ny0xLjA1IDI1LjE0LS4yNCAxLjgxLjAyIDIuNi44IDMuOTF6bS00LjcxLTg5LjgyYzExLjI1LTE4LjI3IDMwLjc2LTE2LjE5IDM0LjA0LTMuNEw1MzkuNyAxOThjMi4zNC02LjI1LTIuODItOS45LTQuNDUtMTEuMjZsMS44My0zLjY3YzEyLjIyIDEwLjM3IDE2LjM4IDEzLjk3IDIyLjUyIDIwLjQzLTI1LjkxIDczLjA3LTMwLjc2IDgwLjgxLTI0LjYyIDg0LjMybC0xLjgzIDQuNDVjLTYuMzctMy4zNS04LjktNC40Mi0xNy44MS04LjY0bDIuMDktNi44MWMtLjI2LS4yNi0zLjkzIDMuOTMtOS42OSAzLjY3LTE5LjA2LTEuMy0yMi44OS0zMS43NS05LjY3LTUyLjl6bTI5LjMzIDc5LjM0YzAtNS43MS02LjM0LTcuODktNy44Ni01LjI0LTEuMzEgMi4wOSAxLjA1IDQuOTggMi44OCA4LjM4IDEuNTcgMi42MiAyLjYyIDYuMjggMS4wNSA5LjQzLTIuNjQgNi4zNC0xMi40IDUuMzEtMTUuNDUtLjc5IDAtLjctLjI3LjA5IDEuODMtNC43MWwuNzktLjI2Yy0uNTcgNS42NiA2LjA2IDkuNjEgOC4zOCA0Ljk4IDEuMDUtMi4wOS0uNTItNS41LTIuMDktOC4zOC0xLjU3LTIuNjItMy42Ny02LjI4LTEuODMtOS42OSAyLjcyLTUuMDYgMTEuMjUtNC40NyAxNC42NiAyLjM2di41MmwtMi4zNiAzLjR6bTIxLjIxIDEzLjM2Yy0xLjk2LTMuMjctLjkxLTIuMTQtNC40NS00LjcxaC0uMjZjLTIuMzYgNC4xOS01Ljc2IDEwLjQ3LTguNjQgMTYuMjQtMS4zMSAyLjM2LTEuMDUgMy40LS43OSAzLjkzbC0uMjYuMjYtNS43Ni00LjQ1LjI2LS4yNiAyLjA5LTEuMzFjMy4xNC01Ljc2IDYuNTUtMTIuMDUgOS4xNy0xNy4wMnYtLjI2Yy0yLjY0LTEuOTgtMS4yMi0xLjUxLTYuMDItMS44M3YtLjI2bDMuMTQtMy40aC4yNmMzLjY3IDIuMzYgOS45NSA2LjgxIDEyLjMxIDguOWwuMjYuMjYtMS4zMSAzLjkxem0yNy4yMy00NC4yNmwtMi44OC0yLjg4Yy43OS0yLjM2IDEuODMtNC45OCAyLjA5LTcuNTkuNzUtOS43NC0xMS41Mi0xMS44NC0xMS41Mi00Ljk4IDAgNC45OCA3Ljg2IDE5LjM4IDcuODYgMjcuNzYgMCAxMC4yMS01Ljc2IDE1LjcxLTEzLjg4IDE2LjUtOC4zOC43OS0yMC4xNi0xMC40Ny0yMC4xNi0xMC40N2w0Ljk4LTE0LjQgMi44OCAyLjA5Yy0yLjk3IDE3LjggMTcuNjggMjAuMzcgMTMuMzUgNS4yNC0xLjA2LTQuMDItMTguNzUtMzQuMiAyLjA5LTM4LjIzIDEzLjYyLTIuMzYgMjMuMDQgMTYuNSAyMy4wNCAxNi41bC03Ljg1IDEwLjQ2em0zNS42Mi0xMC4yMWMtMTEtMzAuMzgtNjAuNDktMTI3LjUzLTE5MS45NS0xMjkuNjItNTMuNDItMS4wNS05NC4yNyAxNS40NS0xMzIuNzYgMzcuOTdsODUuNjMtOS4xNy05MS4zOSAyMC42OSAyNS4xNCAxOS42NC0zLjkzLTE2LjVjNy41LTEuNzEgMzkuMTUtOC40NSA2Ni43Ny04LjlsLTIyLjI2IDgwLjM5YzEzLjYxLS43IDE4Ljk3LTguOTggMTkuNjQtMjIuNzhsNC45OC0xLjA1LjI2IDI2LjcxYy0yMi40NiAzLjIxLTM3LjMgNi42OS00OS40OSA5Ljk1bDEzLjA5LTQzLjIxLTYxLjU0LTM2LjY2IDIuMzYgOC4xMiAxMC4yMSA0Ljk4YzYuMjggMTguNTkgMTkuMzggNTYuNTYgMjAuNDMgNTguNjYgMS45NSA0LjI4IDMuMTYgNS43OCAxMi4wNSA0LjQ1bDEuMDUgNC45OGMtMTYuMDggNC44Ni0yMy42NiA3LjYxLTM5LjAyIDE0LjRsLTIuMzYtNC43MWM0LjQtMi45NCA4LjczLTMuOTQgNS41LTEyLjgzLTIzLjctNjIuNS0yMS40OC01OC4xNC0yMi43OC01OS40NGwyLjM2LTQuNDUgMzMuNTIgNjcuM2MtMy44NC0xMS44NyAxLjY4IDEuNjktMzIuOTktNzguODJsLTQxLjkgODguNTEgNC43MS0xMy44OC0zNS44OC00Mi4xNiAyNy43NiA5My40OC0xMS43OCA4LjM4Qzk1IDIyOC41OCAxMDEuMDUgMjMxLjg3IDkzLjIzIDIzMS41MmMtNS41LS4yNi0xMy42MiA1LjUtMTMuNjIgNS41TDc0LjYzIDIzMWMzMC41Ni0yMy41MyAzMS42Mi0yNC4zMyA1OC40LTQyLjY4bDQuMTkgNy4wN3MtNS43NiA0LjE5LTcuODYgNy4wN2MtNS45IDkuMjggMS42NyAxMy4yOCA2MS44IDc1LjY4bC0xOC44NS01OC45MiAzOS44LTEwLjIxIDI1LjY2IDMwLjY0IDQuNDUtMTIuMzEtNC45OC0yNC42MiAxMy4wOS0zLjQuNTIgMy4xNCAzLjY3LTEwLjQ3LTk0LjI3IDI5LjMzIDExLjI2LTQuOTgtMTMuNjItNDIuNDIgMTcuMjgtOS4xNyAzMC4xMSAzNi4xNCAyOC41NC0xMy4wOWMtMS40MS03LjQ3LTIuNDctMTQuNS00LjcxLTE5LjY0bDE3LjI4IDEzLjg4IDQuNzEtMi4wOS01OS4xOC00Mi42OCAyMy4wOCAxMS41YzE4Ljk4LTYuMDcgMjUuMjMtNy40NyAzMi4yMS05LjY5bDIuNjIgMTFjLTEyLjU1IDEyLjU1IDEuNDMgMTYuODIgNi41NSAxOS4zOGwtMTMuNjItNjEuMDEgMTIuMDUgMjguMjhjNC4xOS0xLjMxIDcuMzMtMi4wOSA3LjMzLTIuMDlsMi42MiA4LjY0cy0zLjE0IDEuMDUtNi4yOCAyLjA5bDguOSAyMC45NSAzMy43OC02NS43My0yMC42OSA2MS4wMWM0Mi40Mi0yNC4wOSA4MS40NC0zNi42NiAxMzEuOTgtMzUuODggNjcuMDQgMS4wNSAxNjcuMzMgNDAuODUgMTk5LjggMTM5LjgzLjc4IDIuMS0uMDEgMi42My0uNzkuMjd6TTIwMy40OCAxNTIuNDNzMS44My0uNTIgNC4xOS0xLjMxbDkuNDMgNy41OWMtLjQgMC0zLjQ0LS4yNS0xMS4yNiAyLjM2bC0yLjM2LTguNjR6bTE0My43NiAzOC41Yy0xLjU3LS42LTI2LjQ2LTQuODEtMzMuMjYgMjAuNjlsMjEuNzMgMTcuMDIgMTEuNTMtMzcuNzF6TTMxOC40MyA2Ny4wN2MtNTguNCAwLTEwNi4wNSAxMi4wNS0xMTQuOTYgMTQuNHYuNzljOC4zOCAyLjA5IDE0LjQgNC4xOSAyMS4yMSAxMS43OGwxLjU3LjI2YzYuNTUtMS44MyA0OC45Ny0xMy44OCAxMTAuMjQtMTMuODggMTgwLjE2IDAgMzAxLjY3IDExNi43OSAzMDEuNjcgMjIzLjM3djkuOTVjMCAxLjMxLjc5IDIuNjIgMS4wNS41Mi41Mi0yLjA5Ljc5LTguNjQuNzktMTkuNjQuMjYtODMuNzktOTYuNjMtMjI3LjU1LTMyMS41Ny0yMjcuNTV6bTIxMS4wNiAxNjkuNjhjMS4zMS01Ljc2IDAtMTIuMzEtNy4zMy0xMy4wOS05LjYyLTEuMTMtMTYuMTQgMjMuNzktMTcuMDIgMzMuNTItLjc5IDUuNS0xLjMxIDE0LjkzIDYuMDIgMTQuOTMgNC42OC0uMDEgOS43Mi0uOTEgMTguMzMtMzUuMzZ6bS02MS41MyA0Mi45NWMtMi42Mi0uNzktOS40My0uNzktMTIuNTcgMTAuNDctMS44MyA2LjgxLjUyIDEzLjM1IDYuMDIgMTQuNjYgMy42NyAxLjA1IDguOS41MiAxMS43OC0xMC43NCAyLjYyLTkuOTQtMS44My0xMy42MS01LjIzLTE0LjM5ek00OTEgMzAwLjY1YzEuODMuNTIgMy4xNCAxLjA1IDUuNzYgMS44MyAwLTEuODMuNTItOC4zOC43OS0xMi4wNS0xLjA1IDEuMzEtNS41IDguMTItNi41NSA5Ljk1di4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV29kdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzguNDE0IDMzOS43MDZIMTQxLjFMMTEyLjE2NiAyMjMuNDc1aC0uNDc4TDgzLjIyOCAzMzkuNzA2SDQ1LjJMMCAxNjguOTQ2SDM3LjU0OEw2NC41NzQgMjg1LjE3N2guNDc4TDk0LjcwNyAxNjguOTQ2aDM1LjE1N2wyOS4xNzggMTE3LjY2N2guNDc5TDE4Ny41IDE2OC45NDZoMzYuODMxek0yNzEuNCAyMTIuNzEzYzM4Ljk4NCAwIDY0LjEgMjUuODI4IDY0LjEgNjUuMjkxIDAgMzkuMjIyLTI1LjExMSA2NS4wNS02NC4xIDY1LjA1LTM4Ljc0MyAwLTYzLjg1NS0yNS44MjgtNjMuODU1LTY1LjA1QzIwNy41NDcgMjM4LjU0MSAyMzIuNjU5IDIxMi43MTMgMjcxLjQgMjEyLjcxM3ptMCAxMDQuNzUzYzIzLjIgMCAzMC4xMzMtMTkuODUyIDMwLjEzMy0zOS40NjIgMC0xOS44NTItNi45MzQtMzkuNy0zMC4xMzMtMzkuNy0yNy43IDAtMjkuODk0IDE5Ljg1LTI5Ljg5NCAzOS43QzI0MS41MDggMjk3LjYxNCAyNDguNDQzIDMxNy40NjYgMjcxLjQgMzE3LjQ2NnpNNDM1LjA4NCAzMjMuOTIyaC0uNDc4Yy03Ljg5MyAxMy4zOTItMjEuNzY1IDE5LjEzMi0zNy41NDggMTkuMTMyLTM3LjMxIDAtNTUuNDg1LTMyLjA0NS01NS40ODUtNjYuMjQ2IDAtMzMuMjQzIDE4LjQxNS02NC4wOTUgNTQuNzY3LTY0LjA5NSAxNC41ODkgMCAyOC45MzggNi4yMTggMzYuODMxIDE4LjQxNmguMjRWMTY4Ljk0NmgzMy45NnYxNzAuNzZINDM1LjA4NHpNNDA1LjQyOCAyMzguM2MtMjIuMjQgMC0yOS44OTQgMTkuMTM0LTI5Ljg5NCAzOS40NjMgMCAxOS4zNzEgOC44NDggMzkuNyAyOS44OTQgMzkuNyAyMi40ODIgMCAyOS4xNzgtMTkuNjEzIDI5LjE3OC0zOS45NEM0MzQuNjA2IDI1Ny40MzYgNDI3LjQzMiAyMzguMyA0MDUuNDI4IDIzOC4zek01OTIuOTYgMzM5LjcwNkg1NjAuNjczVjMyMi40ODdoLS43MThjLTguNjA5IDEzLjg3LTIzLjQzNiAyMC41NjctMzcuNzg2IDIwLjU2Ny0zNi4xMTMgMC00NS4yLTIwLjMyOC00NS4yLTUwLjk0MVYyMTYuMDYxaDMzLjk1OVYyODUuOWMwIDIwLjMyOSA1Ljk3OSAzMC4zNzIgMjEuNzY1IDMwLjM3MiAxOC40MTUgMCAyNi4zMDYtMTAuMjgzIDI2LjMwNi0zNS4zOTNWMjE2LjA2MUg1OTIuOTZ6TTYwMi40NTMgMzAyLjg3Nkg2NDB2MzYuODNINjAyLjQ1M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV29sZlBhY2tCYXR0YWxpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY3LjczIDQ3MS41M2wxMC41NiAxNS44NCA1LjI4LTEyLjMyIDUuMjggN1Y1MTJjMjEuMDYtNy45MiAyMS4xMS02Ni44NiAyNS41MS05Ny4yMSA0LjYyLTMxLjg5LS44OC05Mi44MSA4MS4zNy0xNDkuMTEtOC44OC0yMy42MS0xMi00OS40My0yLjY0LTgwLjA1QzQyMSAxODkgNDQ3IDE5Ni4yMSA0NTYuNDMgMjM5LjczbC0zMC4zNSA4LjM2YzExLjE1IDIzIDE3IDQ2Ljc2IDEzLjIgNzIuMTRMNDEyIDMxMy4xOGwtNi4xNiAzMy40My0xOC40Ny03LTguOCAzMy4zOS0xOS4zNS03IDI2LjM5IDIxLjExIDguOC0yOC4xNUw0MTkgMzY0LjJsNy0zNS42MyAyNi4zOSAxNC41MmMuMjUtMjAgNy01OC4wNi04LjgtODQuNDVsMjYuMzkgNS4yOGM0LTIyLjA3LTIuMzgtMzkuMjEtNy45Mi01Ni43NGwyMi40MyA5LjY4Yy0uNDQtMjUuMDctMjkuOTQtNTYuNzktNjEuNTgtNTguNS0yMC4yMi0xLjA5LTU2Ljc0LTI1LjE3LTU0LjEtNTEuOSAyLTE5Ljg3IDE3LjQ1LTQyLjYyIDQzLjExLTQ5LjctNDQgMzYuNTEtOS42OCA2Ny4zIDUuMjggNzMuNDYgNC40LTExLjQ0IDE3LjU0LTY5LjA4IDAtMTMwLjItNDAuMzkgMjIuODctODkuNjUgNjUuMS05My4yIDE0Ny43OWwtNTggMzguNzEtMy41MiA5My4yNUwzNjkuNzggMjIwbDcgNy0xNy41OSAzLjUyLTQ0IDM4LjcxLTE1Ljg0LTUuMjgtMjguMSA0OS4yNS0zLjUyIDExOS42NCAyMS4xMSAxNS44NC0zMi41NSAxNS44NC0zMi41NS0xNS44NCAyMS4xMS0xNS44NC0zLjUyLTExOS42NC0yOC4xNS00OS4yNi0xNS44NCA1LjI4LTQ0LTM4LjcxLTE3LjU4LTMuNTEgNy03IDEwNy4zMyA1OS44Mi0zLjUyLTkzLjI1LTU4LjA2LTM4LjcxQzE4NSA2NS4xIDEzNS43NyAyMi44NyA5NS4zIDBjLTE3LjU0IDYxLjEyLTQuNCAxMTguNzYgMCAxMzAuMiAxNS02LjE2IDQ5LjI2LTM2Ljk1IDUuMjgtNzMuNDYgMjUuNjYgNy4wOCA0MS4xNSAyOS44MyA0My4xMSA0OS43IDIuNjMgMjYuNzQtMzMuODggNTAuODEtNTQuMSA1MS45LTMxLjY1IDEuNzItNjEuMTUgMzMuNDQtNjEuNTkgNTguNTFsMjIuNDMtOS42OGMtNS41NCAxNy41My0xMS45MSAzNC42Ny03LjkyIDU2Ljc0bDI2LjM5LTUuMjhjLTE1Ljc2IDI2LjM5LTkuMDUgNjQuNDMtOC44IDg0LjQ1bDI2LjM5LTE0LjUyIDcgMzUuNjMgMjQuNjMtNS4yOCA4LjggMjguMTVMMTUzLjM1IDM2NiAxMzQgMzczbC04LjgtMzMuNDMtMTguNDcgNy02LjE2LTMzLjQzLTI3LjI3IDdjLTMuODItMjUuMzggMi00OS4xIDEzLjItNzIuMTRsLTMwLjM1LTguMzZjOS40LTQzLjUyIDM1LjQ3LTUwLjc3IDYzLjM0LTU0LjEgOS4zNiAzMC42MiA2LjI0IDU2LjQ1LTIuNjQgODAuMDUgODIuMjUgNTYuMyA3Ni43NSAxMTcuMjMgODEuMzcgMTQ5LjExIDQuNCAzMC4zNSA0LjQ1IDg5LjI5IDI1LjUxIDk3LjIxdi0yOS44M2w1LjI4LTcgNS4yOCAxMi4zMiAxMC41Ni0xNS44NCAxMS40NCAyMS4xMSAxMS40My0yMS4xem03OS4xNy05NUwzMzEuMDYgMzY2YzcuNDctNC4zNiAxMy43Ni04LjQyIDE5LjM1LTEyLjMyLS42IDcuMjItLjI3IDEzLjg0LTMuNTEgMjIuODR6bTI4LjE1LTQ5LjI2Yy0uNCAxMC45NC0uOSAyMS42Ni0xLjc2IDMxLjY3LTcuODUtMS44Ni0xNS41Ny0zLjgtMjEuMTEtNyA4LjI0LTcuOTQgMTUuNTUtMTYuMzIgMjIuODctMjQuNjh6bTI0LjYzIDUuMjhjMC0xMy40My0yLjA1LTI0LjIxLTUuMjgtMzMuNDNhMjM1IDIzNSAwIDAgMS0xOC40NyAyNy4yN3ptMy41Mi04MC45NGMxOS40NCAxMi44MSAyNy44IDMzLjY2IDI5LjkxIDU2LjMtMTIuMzItNC41My0yNC42My05LjMxLTM2Ljk1LTEwLjU2IDUuMDYtMTIgNi42NS0yOC4xNCA3LTQ1Ljc0em0tMS43Ni00NS43NGMuODEgMTQuMyAxLjg0IDI4LjgyIDEuNzYgNDIuMjMgMTkuMjItOC4xMSAyOS43OC05LjcyIDQ0LTE0LjA4LTEwLjYxLTE4Ljk2LTI3LjItMjUuNTMtNDUuNzYtMjguMTZ6TTE2NS42OCAzNzYuNTJMMTgxLjUyIDM2NmMtNy40Ny00LjM2LTEzLjc2LTguNDItMTkuMzUtMTIuMzIuNiA3LjI2LjI3IDEzLjg4IDMuNTEgMjIuODh6bS0yOC4xNS00OS4yNmMuNCAxMC45NC45IDIxLjY2IDEuNzYgMzEuNjcgNy44NS0xLjg2IDE1LjU3LTMuOCAyMS4xMS03LTguMjQtNy45My0xNS41NS0xNi4zMS0yMi44Ny0yNC42N3ptLTI0LjY0IDUuMjhjMC0xMy40MyAyLTI0LjIxIDUuMjgtMzMuNDNhMjM1IDIzNSAwIDAgMCAxOC40NyAyNy4yN3ptLTMuNTItODAuOTRjLTE5LjQ0IDEyLjgxLTI3LjggMzMuNjYtMjkuOTEgNTYuMyAxMi4zMi00LjUzIDI0LjYzLTkuMzEgMzctMTAuNTYtNS0xMi02LjY1LTI4LjE0LTctNDUuNzR6bTEuNzYtNDUuNzRjLS44MSAxNC4zLTEuODQgMjguODItMS43NiA0Mi4yMy0xOS4yMi04LjExLTI5Ljc4LTkuNzItNDQtMTQuMDggMTAuNjMtMTguOTUgMjcuMjMtMjUuNTIgNDUuNzYtMjguMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvcmRwcmVzc1NpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMyA4IDggMTE5LjIgOCAyNTZjMCAxMzYuNyAxMTEuMyAyNDggMjQ4IDI0OHMyNDgtMTExLjMgMjQ4LTI0OEM1MDQgMTE5LjIgMzkyLjcgOCAyNTYgOHpNMzMgMjU2YzAtMzIuMyA2LjktNjMgMTkuMy05MC43bDEwNi40IDI5MS40Qzg0LjMgNDIwLjUgMzMgMzQ0LjIgMzMgMjU2em0yMjMgMjIzYy0yMS45IDAtNDMtMy4yLTYzLTkuMWw2Ni45LTE5NC40IDY4LjUgMTg3LjhjLjUgMS4xIDEgMi4xIDEuNiAzLjEtMjMuMSA4LjEtNDggMTIuNi03NCAxMi42em0zMC43LTMyNy41YzEzLjQtLjcgMjUuNS0yLjEgMjUuNS0yLjEgMTItMS40IDEwLjYtMTkuMS0xLjQtMTguNCAwIDAtMzYuMSAyLjgtNTkuNCAyLjgtMjEuOSAwLTU4LjctMi44LTU4LjctMi44LTEyLS43LTEzLjQgMTcuNy0xLjQgMTguNCAwIDAgMTEuNCAxLjQgMjMuNCAyLjFsMzQuNyA5NS4yTDIwMC42IDM5M2wtODEuMi0yNDEuNWMxMy40LS43IDI1LjUtMi4xIDI1LjUtMi4xIDEyLTEuNCAxMC42LTE5LjEtMS40LTE4LjQgMCAwLTM2LjEgMi44LTU5LjQgMi44LTQuMiAwLTkuMS0uMS0xNC40LS4zQzEwOS42IDczIDE3OC4xIDMzIDI1NiAzM2M1OCAwIDExMC45IDIyLjIgMTUwLjYgNTguNS0xLS4xLTEuOS0uMi0yLjktLjItMjEuOSAwLTM3LjQgMTkuMS0zNy40IDM5LjYgMCAxOC40IDEwLjYgMzMuOSAyMS45IDUyLjMgOC41IDE0LjggMTguNCAzMy45IDE4LjQgNjEuNSAwIDE5LjEtNy4zIDQxLjItMTcgNzIuMWwtMjIuMiA3NC4zLTgwLjctMjM5LjZ6bTgxLjQgMjk3LjJsNjguMS0xOTYuOWMxMi43LTMxLjggMTctNTcuMiAxNy03OS45IDAtOC4yLS41LTE1LjgtMS41LTIyLjkgMTcuNCAzMS44IDI3LjMgNjguMiAyNy4zIDEwNyAwIDgyLjMtNDQuNiAxNTQuMS0xMTAuOSAxOTIuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV29yZHByZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjcgMTY5LjRsMTAxLjUgMjc4QzkyLjIgNDEzIDQzLjMgMzQwLjIgNDMuMyAyNTZjMC0zMC45IDYuNi02MC4xIDE4LjQtODYuNnptMzM3LjkgNzUuOWMwLTI2LjMtOS40LTQ0LjUtMTcuNS01OC43LTEwLjgtMTcuNS0yMC45LTMyLjQtMjAuOS00OS45IDAtMTkuNiAxNC44LTM3LjggMzUuNy0zNy44LjkgMCAxLjguMSAyLjguMi0zNy45LTM0LjctODguMy01NS45LTE0My43LTU1LjktNzQuMyAwLTEzOS43IDM4LjEtMTc3LjggOTUuOSA1IC4yIDkuNy4zIDEzLjcuMyAyMi4yIDAgNTYuNy0yLjcgNTYuNy0yLjcgMTEuNS0uNyAxMi44IDE2LjIgMS40IDE3LjUgMCAwLTExLjUgMS4zLTI0LjMgMmw3Ny41IDIzMC40TDI0OS44IDI0N2wtMzMuMS05MC44Yy0xMS41LS43LTIyLjMtMi0yMi4zLTItMTEuNS0uNy0xMC4xLTE4LjIgMS4zLTE3LjUgMCAwIDM1LjEgMi43IDU2IDIuNyAyMi4yIDAgNTYuNy0yLjcgNTYuNy0yLjcgMTEuNS0uNyAxMi44IDE2LjIgMS40IDE3LjUgMCAwLTExLjUgMS4zLTI0LjMgMmw3Ni45IDIyOC43IDIxLjItNzAuOWM5LTI5LjQgMTYtNTAuNSAxNi02OC43em0tMTM5LjkgMjkuM2wtNjMuOCAxODUuNWMxOS4xIDUuNiAzOS4yIDguNyA2MC4xIDguNyAyNC44IDAgNDguNS00LjMgNzAuNi0xMi4xLS42LS45LTEuMS0xLjktMS41LTIuOWwtNjUuNC0xNzkuMnptMTgzLTEyMC43Yy45IDYuOCAxLjQgMTQgMS40IDIxLjkgMCAyMS42LTQgNDUuOC0xNi4yIDc2LjJsLTY1IDE4Ny45QzQyNi4yIDQwMyA0NjguNyAzMzQuNSA0NjguNyAyNTZjMC0zNy05LjQtNzEuOC0yNi0xMDIuMXpNNTA0IDI1NmMwIDEzNi44LTExMS4zIDI0OC0yNDggMjQ4QzExOS4yIDUwNCA4IDM5Mi43IDggMjU2IDggMTE5LjIgMTE5LjIgOCAyNTYgOGMxMzYuNyAwIDI0OCAxMTEuMiAyNDggMjQ4em0tMTEuNCAwYzAtMTMwLjUtMTA2LjItMjM2LjYtMjM2LjYtMjM2LjZDMTI1LjUgMTkuNCAxOS40IDEyNS41IDE5LjQgMjU2UzEyNS42IDQ5Mi42IDI1NiA0OTIuNmMxMzAuNSAwIDIzNi42LTEwNi4xIDIzNi42LTIzNi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcGJlZ2lubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2Mi43OTkgMzIyLjM3NEM1MTkuMDEgMzg2LjY4MiA0NjYuOTYxIDQ4MCAzNzAuOTQ0IDQ4MGMtMzkuNjAyIDAtNzguODI0LTE3LjY4Ny0xMDAuMTQyLTUwLjA0LTYuODg3LjM1Ni0yMi43MDIuMzU2LTI5LjU5IDBDMjE5Ljg0OCA0NjIuMzgxIDE4MC41ODggNDgwIDE0MS4wNjkgNDgwYy05NS40OSAwLTE0OC4zNDgtOTIuOTk2LTkxLjg1NS0xNTcuNjI2Qy0yOS45MjUgMTkwLjUyMyA4MC40NzkgMzIgMjU2LjAwNiAzMmMxNzUuNjMyIDAgMjg1Ljg3IDE1OC42MjYgMjA2Ljc5MyAyOTAuMzc0em0tMzM5LjY0Ny04Mi45NzJoNDEuNTI5di01OC4wNzVoLTQxLjUyOXY1OC4wNzV6bTIxNy4xOCA4Ni4wNzJ2LTIzLjgzOWMtNjAuNTA2IDIwLjkxNS0xMzIuMzU1IDkuMTk4LTE4Ny41ODktMzMuOTcxbC4yNDYgMjQuODk3YzUxLjEwMSA0Ni4zNjcgMTMxLjc0NiA1Ny44NzUgMTg3LjM0MyAzMi45MTN6bS0xNTAuNzUzLTg2LjA3MmgxNjYuMDU4di01OC4wNzVIMTg5LjU3OXY1OC4wNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdwZXhwbG9yZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDI1NmMwIDE0MS4yLTExNC43IDI1Ni0yNTYgMjU2QzExNC44IDUxMiAwIDM5Ny4zIDAgMjU2UzExNC43IDAgMjU2IDBzMjU2IDExNC43IDI1NiAyNTZ6bS0zMiAwYzAtMTIzLjItMTAwLjMtMjI0LTIyNC0yMjRDMTMyLjUgMzIgMzIgMTMyLjUgMzIgMjU2czEwMC41IDIyNCAyMjQgMjI0IDIyNC0xMDAuNSAyMjQtMjI0ek0xNjAuOSAxMjQuNmw4Ni45IDM3LjEtMzcuMSA4Ni45LTg2LjktMzcuMSAzNy4xLTg2Ljl6bTExMCAxNjkuMWw0Ni42IDk0aC0xNC42bC01MC0xMDAtNDguOSAxMDBoLTE0bDUxLjEtMTA2LjktMjIuMy05LjQgNi0xNCA2OC42IDI5LjEtNiAxNC4zLTE2LjUtNy4xem0tMTEuOC0xMTYuM2w2OC42IDI5LjQtMjkuNCA2OC4zTDIzMCAyNDZsMjkuMS02OC42em04MC4zIDQyLjlsNTQuNiAyMy4xLTIzLjQgNTQuMy01NC4zLTIzLjEgMjMuMS01NC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcGZvcm1zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA3NS4ydjM2MS43YzAgMjQuMy0xOSA0My4yLTQzLjIgNDMuMkg0My4yQzE5LjMgNDgwIDAgNDYxLjQgMCA0MzYuOFY3NS4yQzAgNTEuMSAxOC44IDMyIDQzLjIgMzJoMzYxLjdjMjQgMCA0My4xIDE4LjggNDMuMSA0My4yem0tMzcuMyAzNjEuNlY3NS4yYzAtMy0yLjYtNS44LTUuOC01LjhoLTkuM0wyODUuMyAxNDQgMjI0IDk0LjEgMTYyLjggMTQ0IDUyLjUgNjkuM2gtOS4zYy0zLjIgMC01LjggMi44LTUuOCA1Ljh2MzYxLjdjMCAzIDIuNiA1LjggNS44IDUuOGgzNjEuN2MzLjIuMSA1LjgtMi43IDUuOC01Ljh6TTE1MC4yIDE4NnYzN0g3Ni43di0zN2g3My41em0wIDc0LjR2MzcuM0g3Ni43di0zNy4zaDczLjV6bTExLjEtMTQ3LjNsNTQtNDMuN0g5Ni44bDY0LjUgNDMuN3ptMjEwIDcyLjl2MzdoLTE5NnYtMzdoMTk2em0wIDc0LjR2MzcuM2gtMTk2di0zNy4zaDE5NnptLTg0LjYtMTQ3LjNsNjQuNS00My43SDIzMi44bDUzLjkgNDMuN3pNMzcxLjMgMzM1djM3LjNoLTk5LjRWMzM1aDk5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdwcmVzc3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTcxLjMzIDE1OC42Yy0xNS4xOCAzNC41MS0zMC4zNyA2OS4wMi00NS42MyAxMDMuNS0yLjQ0IDUuNTEtNi44OSA4LjI0LTEyLjk3IDguMjQtMjMuMDItLjAxLTQ2LjAzLjA2LTY5LjA1LS4wNS01LjEyLS4wMy04LjI1IDEuODktMTAuMzQgNi43Mi0xMC4xOSAyMy41Ni0yMC42MyA0Ny0zMC45NSA3MC41LTEuNTQgMy41MS00LjA2IDUuMjktNy45MiA1LjI5LTQ1Ljk0LS4wMS05MS44Ny0uMDItMTM3LjgxIDAtMy4xMyAwLTUuNjMtMS4xNS03LjcyLTMuNDUtMTEuMjEtMTIuMzMtMjIuNDYtMjQuNjMtMzMuNjgtMzYuOTQtMi42OS0yLjk1LTIuNzktNi4xOC0xLjIxLTkuNzMgOC42Ni0xOS41NCAxNy4yNy0zOS4xIDI1Ljg5LTU4LjY2IDEyLjkzLTI5LjM1IDI1Ljg5LTU4LjY5IDM4Ljc1LTg4LjA4IDEuNy0zLjg4IDQuMjgtNS42OCA4LjU0LTUuNjUgMTQuMjQuMSAyOC40OC4wMiA0Mi43Mi4wNSA2LjI0LjAxIDkuMiA0Ljg0IDYuNjYgMTAuNTktMTMuNiAzMC43Ny0yNy4xNyA2MS41NS00MC43NCA5Mi4zMy01LjcyIDEyLjk5LTExLjQyIDI1Ljk5LTE3LjA5IDM5LTMuOTEgOC45NSA3LjA4IDExLjk3IDEwLjk1IDUuNi4yMy0uMzctMS40MiA0LjE4IDMwLjAxLTY3LjY5IDEuMzYtMy4xIDMuNDEtNC40IDYuNzctNC4zOSAxNS4yMS4wOCAzMC40My4wMiA0NS42NC4wNCA1LjU2LjAxIDcuOTEgMy42NCA1LjY2IDguNzUtOC4zMyAxOC45Ni0xNi43MSAzNy45LTI0Ljk4IDU2Ljg5LTQuOTggMTEuNDMgOC4wOCAxMi40OSAxMS4yOCA1LjMzLjA0LS4wOCAyNy44OS02My4zMyAzMi4xOS03My4xNiAyLjAyLTQuNjEgNS40NC02LjUxIDEwLjM1LTYuNSAyNi40My4wNSA1Mi44NiAwIDc5LjI5LjA1IDEyLjQ0LjAyIDEzLjkzLTEzLjY1IDMuOS0xMy42NC0yNS4yNi4wMy01MC41Mi4wMi03NS43OC4wMi02LjI3IDAtNy44NC0yLjQ3LTUuMjctOC4yNyA1Ljc4LTEzLjA2IDExLjU5LTI2LjExIDE3LjMtMzkuMjEgMS43My0zLjk2IDQuNTItNS43OSA4Ljg0LTUuNzggMjMuMDkuMDYgMjUuOTguMDIgMTMwLjc4LjAzIDYuMDgtLjAxIDguMDMgMi43OSA1LjYyIDguMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVhUd2l0dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4OS4yIDQ4aDcwLjZMMzA1LjYgMjI0LjIgNDg3IDQ2NEgzNDVMMjMzLjcgMzE4LjYgMTA2LjUgNDY0SDM1LjhMMjAwLjcgMjc1LjUgMjYuOCA0OEgxNzIuNEwyNzIuOSAxODAuOSAzODkuMiA0OHpNMzY0LjQgNDIxLjhoMzkuMUwxNTEuMSA4OGgtNDJMMzY0LjQgNDIxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVhib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgMzE4LjJjNDQuMyA1NC4zIDY0LjcgOTguOCA1NC40IDExOC43LTcuOSAxNS4xLTU2LjcgNDQuNi05Mi42IDU1LjktMjkuNiA5LjMtNjguNCAxMy4zLTEwMC40IDEwLjItMzguMi0zLjctNzYuOS0xNy40LTExMC4xLTM5QzkzLjMgNDQ1LjggODcgNDM4LjMgODcgNDIzLjRjMC0yOS45IDMyLjktODIuMyA4OS4yLTE0Mi4xIDMyLTMzLjkgNzYuNS03My43IDgxLjQtNzIuNiA5LjQgMi4xIDg0LjMgNzUuMSAxMTIuMyAxMDkuNXpNMTg4LjYgMTQzLjhjLTI5LjctMjYuOS01OC4xLTUzLjktODYuNC02My40LTE1LjItNS4xLTE2LjMtNC44LTI4LjcgOC4xLTI5LjIgMzAuNC01My41IDc5LjctNjAuMyAxMjIuNC01LjQgMzQuMi02LjEgNDMuOC00LjIgNjAuNSA1LjYgNTAuNSAxNy4zIDg1LjQgNDAuNSAxMjAuOSA5LjUgMTQuNiAxMi4xIDE3LjMgOS4zIDkuOS00LjItMTEtLjMtMzcuNSA5LjUtNjQgMTQuMy0zOSA1My45LTExMi45IDEyMC4zLTE5NC40em0zMTEuNiA2My41QzQ4My4zIDEyNy4zIDQzMi43IDc3IDQyNS42IDc3Yy03LjMgMC0yNC4yIDYuNS0zNiAxMy45LTIzLjMgMTQuNS00MSAzMS40LTY0LjMgNTIuOEMzNjcuNyAxOTcgNDI3LjUgMjgzLjEgNDQ4LjIgMzQ2YzYuOCAyMC43IDkuNyA0MS4xIDcuNCA1Mi4zLTEuNyA4LjUtMS43IDguNSAxLjQgNC42IDYuMS03LjcgMTkuOS0zMS4zIDI1LjQtNDMuNSA3LjQtMTYuMiAxNS00MC4yIDE4LjYtNTguNyA0LjMtMjIuNSAzLjktNzAuOC0uOC05My40ek0xNDEuMyA0M0MxODkgNDAuNSAyNTEgNzcuNSAyNTUuNiA3OC40Yy43LjEgMTAuNC00LjIgMjEuNi05LjcgNjMuOS0zMS4xIDk0LTI1LjggMTA3LjQtMjUuMi02My45LTM5LjMtMTUyLjctNTAtMjMzLjktMTEuNy0yMy40IDExLjEtMjQgMTEuOS05LjQgMTEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuNyAyMTBjLTEuOCAzLjMtMjUuMiA0NC40LTcwLjEgMTIzLjUtNC45IDguMy0xMC44IDEyLjUtMTcuNyAxMi41SDkuOGMtNy43IDAtMTIuMS03LjUtOC41LTE0LjRsNjktMTIxLjNjLjIgMCAuMi0uMSAwLS4zbC00My45LTc1LjZjLTQuMy03LjguMy0xNC4xIDguNS0xNC4xSDEwMGM3LjMgMCAxMy4zIDQuMSAxOCAxMi4ybDQ0LjcgNzcuNXpNMzgyLjYgNDYuMWwtMTQ0IDI1M3YuM0wzMzAuMiA0NjZjMy45IDcuMS4yIDE0LjEtOC41IDE0LjFoLTY1LjJjLTcuNiAwLTEzLjYtNC0xOC0xMi4ybC05Mi40LTE2OC41YzMuMy01LjggNTEuNS05MC44IDE0NC44LTI1NS4yIDQuNi04LjEgMTAuNC0xMi4yIDE3LjUtMTIuMmg2NS43YzggMCAxMi4zIDYuNyA4LjUgMTQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWUNvbWJpbmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDMydjQ0OEgwVjMyaDQ0OHpNMjM2IDI4Ny41TDMxMy41IDE0MmgtMzIuN0wyMzUgMjMzYy00LjcgOS4zLTkgMTguMy0xMi44IDI2LjhMMjEwIDIzM2wtNDUuMi05MWgtMzVsNzYuNyAxNDMuOHY5NC41SDIzNnYtOTIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFob28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjY5LDE0MS4wNiwxNjcsMjg0LjIzLDExMSwxNDEuMDZIMTQuOTNMMTIwLjc2LDM5MC4xOSw4Mi4xOSw0ODBoOTQuMTdMMzE3LjI3LDE0MS4wNlptMTA1LjQsMTM1Ljc5YTU4LjIyLDU4LjIyLDAsMSwwLDU4LjIyLDU4LjIyQTU4LjIyLDU4LjIyLDAsMCwwLDMyOS4wOSwyNzYuODVaTTM5NC42NSwzMmwtOTMsMjIzLjQ3SDQwNi40NEw0OTkuMDcsMzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDAuNjc2LDE1OS40ODZhMTIuNzc5LDEyLjc3OSwwLDAsMC02LjQtOC4yODIsMTMuOTU0LDEzLjk1NCwwLDAsMC0xMC4wNzgtMS4xMjVMNDU3LjgsMTU2LjdsLS4wNDMtLjItMjIuMyw1Ljc4NS0xLjI0My4zMzMtLjYwOC0yLjE3QTM2OS4wMzcsMzY5LjAzNywwLDAsMCwzNDcuNTM4LDQuMjg5YTE0LjEsMTQuMSwwLDAsMC0xOS43ODQtLjQ2M2wtMTAyLjksMTAyLjc0N0gyNC45NDdBMjQuOSwyNC45LDAsMCwwLDAsMTMxLjQxN1YzODAuMzhhMjQuOTYzLDI0Ljk2MywwLDAsMCwyNC45MTgsMjQuOUgyMjQuOTg2TDMyOC4wNzIsNTA4YTEzLjY2NywxMy42NjcsMCwwLDAsMTkuMzI3LDBjLjEyNi0uMTI2LjI0OS0uMjU1LjM3LS4zODVhMzY4LjAyNSwzNjguMDI1LDAsMCwwLDY5LjU3Ny0xMDcuMzc0LDQwMy40NSw0MDMuNDUsMCwwLDAsMTcuMy01MC44di0uMDI4bDIwLjQwNiw1LjMzNi4wMjktLjA3M0w0ODMuMzQ1LDM2MmEyMC4yNTMsMjAuMjUzLDAsMCwwLDIuNjE5LjUsMTMuMzU5LDEzLjM1OSwwLDAsMCw0LjEzOS0uMDcyLDEzLjUsMTMuNSwwLDAsMCwxMC41MTUtOS45MjQsNDE1Ljg1NSw0MTUuODU1LDAsMCwwLC4wNTgtMTkzLjAxM1pNMzM3LjEyNSwyNC42NWwuMDEzLjAxNGgtLjAxM1ptLTExMC4yLDE2NS4xNjFMMTc0LjMxMSwyODEuMWExMS4zMzgsMTEuMzM4LDAsMCwwLTEuNDg5LDUuNjU1djQ2LjE4OWEyMi4wNCwyMi4wNCwwLDAsMS0yMi4wNDEsMjJoLTMuNEEyMi4wNjgsMjIuMDY4LDAsMCwxLDEyNS4zLDMzMi45NjJWMjg3LjI5NGExMS41MzIsMTEuNTMyLDAsMCwwLTEuMzg4LTUuNTFsLTUxLjYtOTIuMmEyMS45ODgsMjEuOTg4LDAsMCwxLDE5LjI2NC0zMi43MjZoMy4yNjhhMjIuMDU5LDIyLjA1OSwwLDAsMSwxOS42MTEsMTEuOTE2bDM2LjM1Nyw3MC4yODEsMzcuNTE1LTcwLjUxMmEyMi4wNjYsMjIuMDY2LDAsMCwxLDM4LjU1Ni0uNjk1LDIxLjcsMjEuNywwLDAsMSwwLDIxLjk2N1pNMzM3LjE0NSwyNC42NzNhMzQ4LjE0NywzNDguMTQ3LDAsMCwxLDc1LjgsMTQxLjMzNWwuNTY0LDEuOTUyLTExNC4xMzQsMjkuNlYxMzEuNDE3YTI1LjAwNiwyNS4wMDYsMCwwLDAtMjQuOTQ3LTI0LjlIMjU1LjA2N1ptNjAuNSwzNjcuMzA1di0uMDQzbC0uMDE0LjAxNGEzNDcuMTksMzQ3LjE5LDAsMCwxLTYwLjE3Nyw5NS4yMjdsLTgyLjItODEuODkzaDE5LjE3N2EyNC45NzgsMjQuOTc4LDAsMCwwLDI0Ljk0Ny0yNC45di02Ni4ybDExNC42LDI5Ljg2MkEzODUuMTkxLDM4NS4xOTEsMCwwLDEsMzk3LjY0OCwzOTEuOTc4Wm04NC01Mi40NS4wMTUuMDE0LTUwLjYxOC0xMy4xMzFMMjk5LjM3OSwyOTIuMVYyMTkuNTcybDExOS43NDYtMzAuOTksNC40NjgtMS4xNTcsMzkuNTQtMTAuMjUzLDE4LjUxMS00LjgxNkEzOTMsMzkzLDAsMCwxLDQ4MS42NDQsMzM5LjUyOFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFuZGV4SW50ZXJuYXRpb25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjkuNSA1MTJWMzQ1LjlMMTguNSA0OGg1NS44bDgxLjggMjI5LjdMMjUwLjIgMGg1MS4zTDE4MC44IDM0Ny44VjUxMmgtNTEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFuZGV4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1My4xIDMxNS44TDY1LjcgNTEySDJsOTYtMjA5LjhjLTQ1LjEtMjIuOS03NS4yLTY0LjQtNzUuMi0xNDEuMUMyMi43IDUzLjcgOTAuOCAwIDE3MS43IDBIMjU0djUxMmgtNTUuMVYzMTUuOGgtNDUuOHptNDUuOC0yNjkuM2gtMjkuNGMtNDQuNCAwLTg3LjQgMjkuNC04Ny40IDExNC42IDAgODIuMyAzOS40IDEwOC44IDg3LjQgMTA4LjhoMjkuNFY0Ni41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYXJuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5My45IDM0NS4yYy0zOSA5LjMtNDguNCAzMi4xLTEwNCA0Ny40IDAgMC0yLjcgNC0xMC40IDUuOC0xMy40IDMuMy02My45IDYtNjguNSA2LjEtMTIuNC4xLTE5LjktMy4yLTIyLTguMi02LjQtMTUuMyA5LjItMjIgOS4yLTIyLTguMS01LTktOS45LTkuOC04LjEtMi40IDUuOC0zLjYgMjAuMS0xMC4xIDI2LjUtOC44IDguOS0yNS41IDUuOS0zNS4zLjgtMTAuOC01LjcuOC0xOS4yLjgtMTkuMnMtNS44IDMuNC0xMC41LTMuNmMtNi05LjMtMTcuMS0zNy4zIDExLjUtNjItMS4zLTEwLjEtNC42LTUzLjcgNDAuNi04NS42IDAgMC0yMC42LTIyLjgtMTIuOS00My4zIDUtMTMuNCA3LTEzLjMgOC42LTEzLjkgNS43LTIuMiAxMS4zLTQuNiAxNS40LTkuMSAyMC42LTIyLjIgNDYuOC0xOCA0Ni44LTE4czEyLjQtMzcuOCAyMy45LTMwLjRjMy41IDIuMyAxNi4zIDMwLjYgMTYuMyAzMC42czEzLjYtNy45IDE1LjEtNWM4LjIgMTYgOS4yIDQ2LjUgNS42IDY1LjEtNi4xIDMwLjYtMjEuNCA0Ny4xLTI3LjYgNTcuNS0xLjQgMi40IDE2LjUgMTAgMjcuOCA0MS4zIDEwLjQgMjguNiAxLjEgNTIuNyAyLjggNTUuMy44IDEuNCAxMy43LjggMzYuNC0xMy4yIDEyLjgtNy45IDI4LjEtMTYuOSA0NS40LTE3IDE2LjctLjUgMTcuNiAxOS4yIDQuOSAyMi4yek00OTYgMjU2YzAgMTM2LjktMTExLjEgMjQ4LTI0OCAyNDhTMCAzOTIuOSAwIDI1NiAxMTEuMSA4IDI0OCA4czI0OCAxMTEuMSAyNDggMjQ4em0tNzkuMyA3NS4yYy0xLjctMTMuNi0xMy4yLTIzLTI4LTIyLjgtMjIgLjMtNDAuNSAxMS43LTUyLjggMTkuMi00LjggMy04LjkgNS4yLTEyLjQgNi44IDMuMS00NC41LTIyLjUtNzMuMS0yOC43LTc5LjQgNy44LTExLjMgMTguNC0yNy44IDIzLjQtNTMuMiA0LjMtMjEuNyAzLTU1LjUtNi45LTc0LjUtMS42LTMuMS03LjQtMTEuMi0yMS03LjQtOS43LTIwLTEzLTIyLjEtMTUuNi0yMy44LTEuMS0uNy0yMy42LTE2LjQtNDEuNCAyOC0xMi4yLjktMzEuMyA1LjMtNDcuNSAyMi44LTIgMi4yLTUuOSAzLjgtMTAuMSA1LjRoLjFjLTguNCAzLTEyLjMgOS45LTE2LjkgMjIuMy02LjUgMTcuNC4yIDM0LjYgNi44IDQ1LjctMTcuOCAxNS45LTM3IDM5LjgtMzUuNyA4Mi41LTM0IDM2LTExLjggNzMtNS42IDc5LjYtMS42IDExLjEgMy43IDE5LjQgMTIgMjMuOCAxMi42IDYuNyAzMC4zIDkuNiA0My45IDIuOCA0LjkgNS4yIDEzLjggMTAuMSAzMCAxMC4xIDYuOCAwIDU4LTIuOSA3Mi42LTYuNSA2LjgtMS42IDExLjUtNC41IDE0LjYtNy4xIDkuOC0zLjEgMzYuOC0xMi4zIDYyLjItMjguNyAxOC0xMS43IDI0LjItMTQuMiAzNy42LTE3LjQgMTIuOS0zLjIgMjEtMTUuMSAxOS40LTI4LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVllbHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIuOSAyNDAuMzJsOTkuNjIgNDguNjFjMTkuMiA5LjQgMTYuMiAzNy41MS00LjUgNDIuNzFMMzAuNSAzNTguNDVhMjIuNzkgMjIuNzkgMCAwIDEtMjguMjEtMTkuNiAxOTcuMTYgMTk3LjE2IDAgMCAxIDktODUuMzIgMjIuOCAyMi44IDAgMCAxIDMxLjYxLTEzLjIxem00NCAyMzkuMjVhMTk5LjQ1IDE5OS40NSAwIDAgMCA3OS40MiAzMi4xMUEyMi43OCAyMi43OCAwIDAgMCAxOTIuOTQgNDkwbDMuOS0xMTAuODJjLjctMjEuMy0yNS41LTMxLjkxLTM5LjgxLTE2LjFsLTc0LjIxIDgyLjRhMjIuODIgMjIuODIgMCAwIDAgNC4wOSAzNC4wOXptMTQ1LjM0LTEwOS45Mmw1OC44MSA5NGEyMi45MyAyMi45MyAwIDAgMCAzNCA1LjUgMTk4LjM2IDE5OC4zNiAwIDAgMCA1Mi43MS02Ny42MUEyMyAyMyAwIDAgMCAzNjQuMTcgMzcwbC0xMDUuNDItMzQuMjZjLTIwLjMxLTYuNS0zNy44MSAxNS44LTI2LjUxIDMzLjkxem0xNDguMzMtMTMyLjIzYTE5Ny40NCAxOTcuNDQgMCAwIDAtNTAuNDEtNjkuMzEgMjIuODUgMjIuODUgMCAwIDAtMzQgNC40bC02MiA5MS45MmMtMTEuOSAxNy43IDQuNyA0MC42MSAyNS4yIDM0LjcxTDM2NiAyNjguNjNhMjMgMjMgMCAwIDAgMTQuNjEtMzEuMjF6TTYyLjExIDMwLjE4YTIyLjg2IDIyLjg2IDAgMCAwLTkuOSAzMmwxMDQuMTIgMTgwLjQ0YzExLjcgMjAuMiA0Mi42MSAxMS45IDQyLjYxLTExLjRWMjIuODhhMjIuNjcgMjIuNjcgMCAwIDAtMjQuNS0yMi44IDMyMC4zNyAzMjAuMzcgMCAwIDAtMTEyLjMzIDMwLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlvYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkxLjMgNzZoMTg2bC03IDE4LjloLTE3OWMtMzkuNyAwLTcxLjkgMzEuNi03MS45IDcwLjN2MjA1LjRjMCAzNS40IDI0LjkgNzAuMyA4NCA3MC4zVjQ2MEg5MS4zQzQxLjIgNDYwIDAgNDE5LjggMCAzNzAuNVYxNjUuMkMwIDExNS45IDQwLjcgNzYgOTEuMyA3NnptMjI5LjEtNTZoNjYuNUMyNDMuMSAzOTguMSAyNDEuMiA0MTguOSAyMDIuMiA0NTkuM2MtMjAuOCAyMS42LTQ5LjMgMzEuNy03OC4zIDMyLjd2LTUxLjFjNDkuMi03LjcgNjQuNi00OS45IDY0LjYtNzUuMyAwLTIwLjEuNi0xMi42LTgyLjEtMjIzLjJoNjEuNEwyMTguMiAyOTkgMzIwLjQgMjB6TTQ0OCAxNjEuNVY0NjBIMjM0YzYuNi05LjYgMTAuNy0xNi4zIDEyLjEtMTkuNGgxODIuNVYxNjEuNWMwLTMyLjUtMTcuMS01MS45LTQ4LjItNjIuOWw2LjctMTcuNmM0MS43IDEzLjYgNjAuOSA0My4xIDYwLjkgODAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWW91dHViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDkuNjU1IDEyNC4wODNjLTYuMjgxLTIzLjY1LTI0Ljc4Ny00Mi4yNzYtNDguMjg0LTQ4LjU5N0M0NTguNzgxIDY0IDI4OCA2NCAyODggNjRTMTE3LjIyIDY0IDc0LjYyOSA3NS40ODZjLTIzLjQ5NyA2LjMyMi00Mi4wMDMgMjQuOTQ3LTQ4LjI4NCA0OC41OTctMTEuNDEyIDQyLjg2Ny0xMS40MTIgMTMyLjMwNS0xMS40MTIgMTMyLjMwNXMwIDg5LjQzOCAxMS40MTIgMTMyLjMwNWM2LjI4MSAyMy42NSAyNC43ODcgNDEuNSA0OC4yODQgNDcuODIxQzExNy4yMiA0NDggMjg4IDQ0OCAyODggNDQ4czE3MC43OCAwIDIxMy4zNzEtMTEuNDg2YzIzLjQ5Ny02LjMyMSA0Mi4wMDMtMjQuMTcxIDQ4LjI4NC00Ny44MjEgMTEuNDEyLTQyLjg2NyAxMS40MTItMTMyLjMwNSAxMS40MTItMTMyLjMwNXMwLTg5LjQzOC0xMS40MTItMTMyLjMwNXptLTMxNy41MSAyMTMuNTA4VjE3NS4xODVsMTQyLjczOSA4MS4yMDUtMTQyLjczOSA4MS4yMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVpoaWh1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MC41NCAxNDguMTN2MjE3LjU0bDIzLjQzLjAxIDcuNzEgMjYuMzcgNDIuMDEtMjYuMzdoNDkuNTNWMTQ4LjEzSDE3MC41NHptOTcuNzUgMTkzLjkzaC0yNy45NGwtMjcuOSAxNy41MS01LjA4LTE3LjQ3LTExLjktLjA0VjE3MS43NWg3Mi44MnYxNzAuMzF6bS0xMTguNDYtOTQuMzlIOTcuNWMxLjc0LTI3LjEgMi4yLTUxLjU5IDIuMi03My40Nmg1MS4xNnMxLjk3LTIyLjU2LTguNTgtMjIuMzFoLTg4LjVjMy40OS0xMy4xMiA3Ljg3LTI2LjY2IDEzLjEyLTQwLjY3IDAgMC0yNC4wNyAwLTMyLjI3IDIxLjU3LTMuMzkgOC45LTEzLjIxIDQzLjE0LTMwLjcgNzguMTIgNS44OS0uNjQgMjUuMzctMS4xOCAzNi44NC0yMi4yMSAyLjExLTUuODkgMi41MS02LjY2IDUuMTQtMTQuNTNoMjguODdjMCAxMC41LTEuMiA2Ni44OC0xLjY4IDczLjQ0SDIwLjgzYy0xMS43NCAwLTE1LjU2IDIzLjYyLTE1LjU2IDIzLjYyaDY1LjU4QzY2LjQ1IDMyMS4xIDQyLjgzIDM2My4xMiAwIDM5Ni4zNGMyMC40OSA1Ljg1IDQwLjkxLS45MyA1MS05LjkgMCAwIDIyLjk4LTIwLjkgMzUuNTktNjkuMjVsNTMuOTYgNjQuOTRzNy45MS0yNi44OS0xLjI0LTM5Ljk5Yy03LjU4LTguOTItMjguMDYtMzMuMDYtMzYuNzktNDEuODFMODcuOSAzMTEuOTVjNC4zNi0xMy45OCA2Ljk5LTI3LjU1IDcuODctNDAuNjdoNjEuNjVzLS4wOS0yMy42Mi03LjU5LTIzLjYydi4wMXptNDEyLjAyLTEuNmMyMC44My0yNS42NCA0NC45OC01OC41NyA0NC45OC01OC41N3MtMTguNjUtMTQuOC0yNy4zOC00LjA2Yy02IDguMTUtMzYuODMgNDguMi0zNi44MyA0OC4ybDE5LjIzIDE0LjQzem0tMTUwLjA5LTU5LjA5Yy05LjAxLTguMjUtMjUuOTEgMi4xMy0yNS45MSAyLjEzczM5LjUyIDU1LjA0IDQxLjEyIDU3LjQ1bDE5LjQ2LTEzLjczcy0yNS42Ny0zNy42MS0zNC42Ni00NS44NmgtLjAxek02NDAgMjU4LjM1Yy0xOS43OCAwLTEzMC45MS45My0xMzEuMDYuOTN2LTEwMWM0LjgxIDAgMTIuNDItLjQgMjIuODUtMS4yIDQwLjg4LTIuNDEgNzAuMTMtNCA4Ny43Ny00LjgxIDAgMCAxMi4yMi0yNy4xOS0uNTktMzMuNDQtMy4wNy0xLjE4LTIzLjE3IDQuNTgtMjMuMTcgNC41OHMtMTY1LjIyIDE2LjQ5LTIzMi4zNiAxOC4wNWMxLjYgOC44MiA3LjYyIDE3LjA4IDE1Ljc4IDE5LjU1IDEzLjMxIDMuNDggMjIuNjkgMS43IDQ5LjE1Ljg5IDI0LjgzLTEuNiA0My42OC0yLjQzIDU2LjUxLTIuNDN2OTkuODFIMzUxLjQxczIuODIgMjIuMzEgMjUuNTEgMjIuODVoMTA3Ljk0djcwLjkyYzAgMTMuOTctMTEuMTkgMjEuOTktMjQuNDggMjEuMTItMTQuMDguMTEtMjYuMDgtMS4xNS00MS42OS0xLjgxIDEuOTkgMy45NyA2LjMzIDE0LjM5IDE5LjMxIDIxLjg0IDkuODggNC44MSAxNi4xNyA2LjU3IDI2LjAyIDYuNTcgMjkuNTYgMCA0NS42Ny0xNy4yOCA0NC44OS00NS4zMXYtNzMuMzJoMTIyLjM2YzkuNjggMCA4LjctMjMuNzggOC43LTIzLjc4bC4wMy0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxOTJDMCAxMDMuNiA3MS42IDMyIDE2MCAzMnMxNjAgNzEuNiAxNjAgMTYwVjMyMGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQwOC40IDAgMzIwVjE5MnpNMTYwIDk2Yy01MyAwLTk2IDQzLTk2IDk2VjMyMGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2VjE5MmMwLTUzLTQzLTk2LTk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmExIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMwLTExLjgtNi41LTIyLjYtMTYuOS0yOC4ycy0yMy01LTMyLjggMS42bC05NiA2NEMtLjUgMTExLjItNC40IDEzMSA1LjQgMTQ1LjhzMjkuNyAxOC43IDQ0LjQgOC45TDk2IDEyMy44VjQxNkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NiA5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNjBWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQyLjkgOTZjLTIxLjUgMC00Mi4yIDguNS01Ny40IDIzLjhMNTQuNiAxNTAuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMNDAuMiA3NC41QzY3LjUgNDcuMyAxMDQuNCAzMiAxNDIuOSAzMkMyMjMgMzIgMjg4IDk3IDI4OCAxNzcuMWMwIDM4LjUtMTUuMyA3NS40LTQyLjUgMTAyLjZMMTA5LjMgNDE2SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0LjlMMjAwLjIgMjM0LjVjMTUuMi0xNS4yIDIzLjgtMzUuOSAyMy44LTU3LjRjMC00NC44LTM2LjMtODEuMS04MS4xLTgxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkgyNzJjMTMuMiAwIDI1IDguMSAyOS44IDIwLjRzMS41IDI2LjMtOC4yIDM1LjJMMTYyLjMgMjA4SDE4NGM3NS4xIDAgMTM2IDYwLjkgMTM2IDEzNnMtNjAuOSAxMzYtMTM2IDEzNkgxMDUuNEM2MyA0ODAgMjQuMiA0NTYgNS4zIDQxOC4xbC0xLjktMy44Yy03LjktMTUuOC0xLjUtMzUgMTQuMy00Mi45czM1LTEuNSA0Mi45IDE0LjNsMS45IDMuOGM4LjEgMTYuMyAyNC44IDI2LjUgNDIuOSAyNi41SDE4NGMzOS44IDAgNzItMzIuMiA3Mi03MnMtMzIuMi03Mi03Mi03Mkg4MGMtMTMuMiAwLTI1LTguMS0yOS44LTIwLjRzLTEuNS0yNi4zIDguMi0zNS4yTDE4OS43IDk2SDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg5IDc3LjZjNy41LTE2IC43LTM1LjEtMTUuMy00Mi42cy0zNS4xLS43LTQyLjYgMTUuM0wzIDMyMi40Yy00LjcgOS45LTMuOSAyMS41IDEuOSAzMC44UzIxIDM2OCAzMiAzNjhIMjU2djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzY4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMFYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzA0SDgyLjRMMTg5IDc3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIuNSA1OC4zQzM1LjMgNDMuMSA0OC41IDMyIDY0IDMySDI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg5MC43TDcwLjMgMjA4SDE4NGM3NS4xIDAgMTM2IDYwLjkgMTM2IDEzNnMtNjAuOSAxMzYtMTM2IDEzNkgxMDAuNWMtMzkuNCAwLTc1LjQtMjIuMy05My01Ny41bC00LjEtOC4yYy03LjktMTUuOC0xLjUtMzUgMTQuMy00Mi45czM1LTEuNSA0Mi45IDE0LjNsNC4xIDguMmM2LjggMTMuNiAyMC42IDIyLjEgMzUuOCAyMi4xSDE4NGMzOS44IDAgNzItMzIuMiA3Mi03MnMtMzIuMi03Mi03Mi03MkgzMmMtOS41IDAtMTguNS00LjItMjQuNi0xMS41cy04LjYtMTYuOS02LjktMjYuMmwzMi0xNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYTYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyLjQgODQuN2MxMS40LTEzLjUgOS43LTMzLjctMy44LTQ1LjFzLTMzLjctOS43LTQ1LjEgMy44TDM4LjYgMjE0LjdDMTQuNyAyNDIuOSAxLjEgMjc4LjQgLjEgMzE1LjJjMCAxLjQtLjEgMi45LS4xIDQuM2MwIC4yIDAgLjMgMCAuNWMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MHMxNjAtNzEuNiAxNjAtMTYwYzAtODUuNS02Ny4xLTE1NS40LTE1MS41LTE1OS44bDYzLjktNzUuNnpNMjU2IDMyMEE5NiA5NiAwIDEgMSA2NCAzMjBhOTYgOTYgMCAxIDEgMTkyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYTcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkgyODhjMTEuNSAwIDIyIDYuMSAyNy43IDE2LjFzNS43IDIyLjItLjEgMzIuMWwtMjI0IDM4NGMtOC45IDE1LjMtMjguNSAyMC40LTQzLjggMTEuNXMtMjAuNC0yOC41LTExLjUtNDMuOEwyMzIuMyA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAxNjBjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhIMTQ0QzczLjMgMzIgMTYgODkuMyAxNiAxNjBjMCAzNC42IDEzLjcgNjYgMzYgODlDMjAuNSAyNzIuMyAwIDMwOS44IDAgMzUyYzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4aDY0YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4YzAtNDIuMi0yMC41LTc5LjctNTItMTAzYzIyLjMtMjMgMzYtNTQuNCAzNi04OXpNMTc2LjEgMjg4SDE5MmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NEgxMjhjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRoMTUuOWMwIDAgLjEgMCAuMSAwaDMyYzAgMCAuMSAwIC4xIDB6bTAtNjRjMCAwIDAgMCAwIDBIMTQ0YzAgMCAwIDAgMCAwYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTM1LjMgMjguNy02NCA2NC02NGgzMmMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDM1LjMtMjguNiA2NC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhOSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxOTJhOTYgOTYgMCAxIDAgMTkyIDBBOTYgOTYgMCAxIDAgNjQgMTkyem04Ny41IDE1OS44QzY3LjEgMzQ3LjQgMCAyNzcuNSAwIDE5MkMwIDEwMy42IDcxLjYgMzIgMTYwIDMyczE2MCA3MS42IDE2MCAxNjBjMCAyLjYtLjEgNS4zLS4yIDcuOWMtMS43IDM1LjctMTUuMiA3MC0zOC40IDk3LjRsLTE0NSAxNzEuNGMtMTEuNCAxMy41LTMxLjYgMTUuMi00NS4xIDMuOHMtMTUuMi0zMS42LTMuOC00NS4xbDYzLjktNzUuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjEuNSA1MS43QzIxNi42IDM5LjggMjA0LjkgMzIgMTkyIDMycy0yNC42IDcuOC0yOS41IDE5LjdsLTEyMCAyODgtNDAgOTZjLTYuOCAxNi4zIC45IDM1IDE3LjIgNDEuOHMzNS0uOSA0MS44LTE3LjJMOTMuMyAzODRIMjkwLjdsMzEuOCA3Ni4zYzYuOCAxNi4zIDI1LjUgMjQgNDEuOCAxNy4yczI0LTI1LjUgMTcuMi00MS44bC00MC05Ni0xMjAtMjg4ek0yNjQgMzIwSDEyMGw3Mi0xNzIuOEwyNjQgMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIOTZ6TTIwOCAyODhoNjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2SDE0NGMtOC44IDAtMTYtNy4yLTE2LTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwem0tMzItOTZhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek01MTIgODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY4MHpNNDk2IDE5MmMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnptMTYgMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZGRyZXNzQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTgwIDI1Nmg2NGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTMyLTk2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHptMjU2LTMySDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRINDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGlnbkNlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnptOTYgMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnpNMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzUyIDMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGlnbkp1c3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ6bTAgMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnpNMCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNNDQ4IDQ0OGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsaWduTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggNjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NFMxNC4zIDMyIDMyIDMySDI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnptMCAyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMyek0wIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00NDggNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnptMCAyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDQ4IDQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuY2hvckNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0yMS4xIDgwQzM2NyAxNTguOCAzODQgMTI5LjQgMzg0IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMzMuNCAxNyA2Mi44IDQyLjkgODBIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyVjQ0OEgyMDhjLTUzIDAtOTYtNDMtOTYtOTZ2LTYuMWw3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDk3IDI2M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3LTdWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwaDgwIDgwYzguMiAwIDE2LjMtLjYgMjQuMi0xLjhjLTIyLjItMTYuMi00MC40LTM3LjUtNTMtNjIuMkgzMjBWMzY4IDI0MGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNDEuMXpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5jaG9yQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDk2YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bTIxLjEgODBDMzY3IDE1OC44IDM4NCAxMjkuNCAzODQgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAzMy40IDE3IDYyLjggNDIuOSA4MEgyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJWNDQ4SDIwOGMtNTMgMC05Ni00My05Ni05NnYtNi4xbDcgN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMOTcgMjYzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMxOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctN1YzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBoODAgODBjOC4yIDAgMTYuMy0uNiAyNC4yLTEuOGMtMjIuMi0xNi4yLTQwLjQtMzcuNS01My02Mi4ySDMyMFYzNjggMjQwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0MS4xek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmNob3JDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptMjEuMSA4MEMzNjcgMTU4LjggMzg0IDEyOS40IDM4NCA5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDMzLjQgMTcgNjIuOCA0Mi45IDgwSDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMlY0NDhIMjA4Yy01MyAwLTk2LTQzLTk2LTk2di02LjFsNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw5NyAyNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzE5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03VjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGg4MCA4MGM4LjIgMCAxNi4zLS42IDI0LjItMS44Yy0yMi4yLTE2LjItNDAuNC0zNy41LTUzLTYyLjJIMzIwVjM2OCAyNDBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzQxLjF6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmNob3JMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0yMS4xIDgwQzM2NyAxNTguOCAzODQgMTI5LjQgMzg0IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMzMuNCAxNyA2Mi44IDQyLjkgODBIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyVjQ0OEgyMDhjLTUzIDAtOTYtNDMtOTYtOTZ2LTYuMWw3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDk3IDI2M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3LTdWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwaDgwIDgwYzggMCAxNS45LS42IDIzLjYtMS43Yy00LjgtOS03LjYtMTkuMy03LjYtMzAuM1Y0NDYuN2MtNS4yIC45LTEwLjUgMS4zLTE2IDEuM0gzMjBWMjQwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0MS4xek01MjggMjQwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4SDQ5NlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMnY0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJWMjcyYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmNob3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDk2YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bTIxLjEgODBDMzY3IDE1OC44IDM4NCAxMjkuNCAzODQgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAzMy40IDE3IDYyLjggNDIuOSA4MEgyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJWNDQ4SDIwOGMtNTMgMC05Ni00My05Ni05NnYtNi4xbDcgN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMOTcgMjYzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMxOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctN1YzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBoODAgODBjODguNCAwIDE2MC03MS42IDE2MC0xNjB2LTYuMWw3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC01Ni01NmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTU2IDU2Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03VjM1MmMwIDUzLTQzIDk2LTk2IDk2SDMyMFYyNDBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzQxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEuNCAyMzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDEwOS4zIDI1NiAyNDYuNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzguNiAyMzMuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTYwIDE2MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMjEwLjcgMjU2IDczLjQgMTE4LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTYwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDEuNCAxMzcuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxNjAgMTYwYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDIyNCAyMDUuMyA4Ni42IDM0Mi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZXNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni42IDQ3MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTYwLTE2MGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwyMjQgNDAyLjcgMzYxLjQgMjY1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM2wtMTYwIDE2MHptMTYwLTM1MmwtMTYwIDE2MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTE2MC0xNjBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBMMjI0IDIxMC43IDM2MS40IDczLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVzTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjMgMjU2IDI0Ni42IDExOC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwem0zNTItMTYwbC0xNjAgMTYwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMzAxLjMgMjU2IDQzOC42IDExOC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZXNSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzAuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNDAyLjcgMjU2IDI2NS40IDM5My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6bS0zNTIgMTYwbDE2MC0xNjBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDIxMC43IDI1NiA3My40IDM5My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZXNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuNiA0MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwyMjQgMTA5LjMgMzYxLjQgMjQ2LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MHptMTYwIDM1MmwtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjI0IDMwMS4zIDM2MS40IDQzOC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFua2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMTI4YzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjRjMCA0MS42LTIwLjcgNzYuNi00Ni42IDEwNC4xYy01LjkgNi4yLTExLjggMTEuOC0xNy40IDE2LjdjLTUuNi00LjktMTEuNS0xMC41LTE3LjQtMTYuN0MxMTYuNyAyMDQuNiA5NiAxNjkuNiA5NiAxMjh6TTE2MCAwQzg5LjMgMCAzMiA1Ny4zIDMyIDEyOGMwIDUyLjQgMjEuNSA5NS41IDQ2LjggMTI4SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyMGg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNDEuMmMyNS40LTMyLjUgNDYuOC03NS42IDQ2LjgtMTI4QzI4OCA1Ny4zIDIzMC43IDAgMTYwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcGxlV2hvbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDExMmMtOC44IDAtMTYtNy4yLTE2LTE2VjgwYzAtNDQuMiAzNS44LTgwIDgwLTgwaDE2YzguOCAwIDE2IDcuMiAxNiAxNlYzMmMwIDQ0LjItMzUuOCA4MC04MCA4MEgyMjR6TTAgMjg4YzAtNzYuMyAzNS43LTE2MCAxMTItMTYwYzI3LjMgMCA1OS43IDEwLjMgODIuNyAxOS4zYzE4LjggNy4zIDM5LjkgNy4zIDU4LjcgMGMyMi45LTguOSA1NS40LTE5LjMgODIuNy0xOS4zYzc2LjMgMCAxMTIgODMuNyAxMTIgMTYwYzAgMTI4LTgwIDIyNC0xNjAgMjI0Yy0xNi41IDAtMzguMS02LjYtNTEuNS0xMS4zYy04LjEtMi44LTE2LjktMi44LTI1IDBjLTEzLjQgNC43LTM1IDExLjMtNTEuNSAxMS4zQzgwIDUxMiAwIDQxNiAwIDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJjaHdheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyem0wIDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg5Nmg2NFYzNTJjMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NlY0ODBoNjQgNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMTI4SDMyVjQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duMTkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUwLjcgMzhjLTguMy02LTE5LjEtNy43LTI4LjgtNC40bC00OCAxNmMtMTYuOCA1LjYtMjUuOCAyMy43LTIwLjIgNDAuNXMyMy43IDI1LjggNDAuNSAyMC4ybDUuOS0yVjE2MEgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNDggNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDY0VjY0YzAtMTAuMy00LjktMTkuOS0xMy4zLTI2ek0xNjAgNDgwYzkgMCAxNy41LTMuOCAyMy42LTEwLjRsODgtOTZjMTEuOS0xMyAxMS4xLTMzLjMtMi00NS4ycy0zMy4zLTExLjEtNDUuMiAyTDE5MiAzNjUuN1Y2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYzNjUuN0w5NS42IDMzMC40Yy0xMS45LTEzLTMyLjItMTMuOS00NS4yLTJzLTEzLjkgMzIuMi0yIDQ1LjJsODggOTZDMTQyLjUgNDc2LjIgMTUxIDQ4MCAxNjAgNDgwek00MTguMyAzMDdhMzIgMzIgMCAxIDEgMjcuNCA1Ny45QTMyIDMyIDAgMSAxIDQxOC4zIDMwN3pNNDA1LjEgNDE5LjhsLTYuOCA5LjJjLTEwLjUgMTQuMi03LjUgMzQuMiA2LjcgNDQuOHMzNC4yIDcuNSA0NC44LTYuN2w0OC44LTY1LjhjMTQtMTguOSAyMS41LTQxLjcgMjEuNS02NS4yYzAtNDguNi0zOS40LTg4LTg4LTg4cy04OCAzOS40LTg4IDg4YzAgMzkuMiAyNS42IDcyLjQgNjEuMSA4My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd245MSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNDgwYzkgMCAxNy41LTMuOCAyMy42LTEwLjRsODgtOTZjMTEuOS0xMyAxMS4xLTMzLjMtMi00NS4ycy0zMy4zLTExLjEtNDUuMiAyTDE5MiAzNjUuN1Y2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYzNjUuN0w5NS42IDMzMC40Yy0xMS45LTEzLTMyLjItMTMuOS00NS4yLTJzLTEzLjkgMzIuMi0yIDQ1LjJsODggOTZDMTQyLjUgNDc2LjIgMTUxIDQ4MCAxNjAgNDgwek00NTAuNyAyOTRjLTguMy02LTE5LjEtNy43LTI4LjgtNC40bC00OCAxNmMtMTYuOCA1LjYtMjUuOCAyMy43LTIwLjIgNDAuNXMyMy43IDI1LjggNDAuNSAyMC4ybDUuOS0yVjQxNkgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNDggNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDY0VjMyMGMwLTEwLjMtNC45LTE5LjktMTMuMy0yNnpNNDE4LjMgOTFhMzIgMzIgMCAxIDEgMjcuNCA1Ny45QTMyIDMyIDAgMSAxIDQxOC4zIDkxek00MDUuMSAyMDMuOGwtNi44IDkuMmMtMTAuNSAxNC4yLTcuNSAzNC4yIDYuNyA0NC44czM0LjIgNy41IDQ0LjgtNi43bDQ4LjgtNjUuOGMxNC0xOC45IDIxLjUtNDEuNyAyMS41LTY1LjJjMC00OC42LTM5LjQtODgtODgtODhzLTg4IDM5LjQtODggODhjMCAzOS4yIDI1LjYgNzIuNCA2MS4xIDgzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93bkFaIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4My42IDQ2OS42QzE3Ny41IDQ3Ni4yIDE2OSA0ODAgMTYwIDQ4MHMtMTcuNS0zLjgtMjMuNi0xMC40bC04OC05NmMtMTEuOS0xMy0xMS4xLTMzLjMgMi00NS4yczMzLjMtMTEuMSA0NS4yIDJMMTI4IDM2NS43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzY1LjdsMzIuNC0zNS40YzExLjktMTMgMzIuMi0xMy45IDQ1LjItMnMxMy45IDMyLjIgMiA0NS4ybC04OCA5NnpNMzIwIDMyMGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOUw0MjkuMyA0MTZINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM1MmMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0LjlMNDAyLjcgMzUySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQxNiAzMmMxMi4xIDAgMjMuMiA2LjggMjguNiAxNy43bDY0IDEyOCAxNiAzMmM3LjkgMTUuOCAxLjUgMzUtMTQuMyA0Mi45cy0zNSAxLjUtNDIuOS0xNC4zTDQ2MC4yIDIyNEgzNzEuOGwtNy4yIDE0LjNjLTcuOSAxNS44LTI3LjEgMjIuMi00Mi45IDE0LjNzLTIyLjItMjcuMS0xNC4zLTQyLjlsMTYtMzIgNjQtMTI4QzM5Mi44IDM4LjggNDAzLjkgMzIgNDE2IDMyek0zOTUuOCAxNzZoNDAuNEw0MTYgMTM1LjYgMzk1LjggMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25Mb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OS40IDUwMi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjhjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjI0IDQwMi43IDIyNCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDM3MC43TDg2LjYgMzI5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93blNob3J0V2lkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTEuNiA0NjkuNkMxNDUuNSA0NzYuMiAxMzcgNDgwIDEyOCA0ODBzLTE3LjUtMy44LTIzLjYtMTAuNGwtODgtOTZjLTExLjktMTMtMTEuMS0zMy4zIDItNDUuMnMzMy4zLTExLjEgNDUuMiAyTDk2IDM2NS43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzY1LjdsMzIuNC0zNS40YzExLjktMTMgMzIuMi0xMy45IDQ1LjItMnMxMy45IDMyLjIgMiA0NS4ybC04OCA5NnpNMzIwIDMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxMjhoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0wIDEyOEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0wIDEyOEg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25VcEFjcm9zc0xpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM3LjQgNTAyLjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsOTYtOTZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTkyIDQwMi43VjI4OEg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDQ4VjEwOS4zbDQxLjQgNDEuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05Ni05NmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDM4NCAxMDkuM1YyMjRIMTkyIDEyOCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NlY0MDIuN0w4Ni42IDM2MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5NiA5NnpNMTI4IDE5Mmg2NFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYxOTJ6TTQ0OCAzMjBIMzg0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duVXBMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MC42IDUwMi42bDk2LTk2YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE2MCA0MDIuN1YyODhINDE2VjI3MmMwLTE3LjIgMy45LTMzLjUgMTAuOC00OEgzNTJWMTA5LjNsNDEuNCA0MS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy02LTYtMTQuMS05LjQtMjIuNi05LjRzLTE2LjYgMy40LTIyLjYgOS40bC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwyODggMTA5LjNWMjI0bC0xMjggMEg5NmwtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg5NlY0MDIuN0w1NC42IDM2MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHpNMTYwIDE5MlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYxOTJoNjR6TTI4OCAzMjBWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzIwSDI4OHptMjQwLTgwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4SDQ5NlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMnY0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJWMjcyYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25XaWRlU2hvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjYgNDY5LjZDMTQ1LjUgNDc2LjIgMTM3IDQ4MCAxMjggNDgwcy0xNy41LTMuOC0yMy42LTEwLjRsLTg4LTk2Yy0xMS45LTEzLTExLjEtMzMuMyAyLTQ1LjJzMzMuMy0xMS4xIDQ1LjIgMkw5NiAzNjUuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM2NS43bDMyLjQtMzUuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTJzMTMuOSAzMi4yIDIgNDUuMmwtODggOTZ6TTMyMCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwem0wLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjB6bTAtMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjB6bTAtMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93blpBIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4My42IDQ2OS42QzE3Ny41IDQ3Ni4yIDE2OSA0ODAgMTYwIDQ4MHMtMTcuNS0zLjgtMjMuNi0xMC40bC04OC05NmMtMTEuOS0xMy0xMS4xLTMzLjMgMi00NS4yczMzLjMtMTEuMSA0NS4yIDJMMTI4IDM2NS43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzY1LjdsMzIuNC0zNS40YzExLjktMTMgMzIuMi0xMy45IDQ1LjItMnMxMy45IDMyLjIgMiA0NS4ybC04OCA5NnpNMzIwIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQ4MGMxMi45IDAgMjQuNiA3LjggMjkuNiAxOS44czIuMiAyNS43LTYuOSAzNC45TDQyOS4zIDE2MEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzUyYy0xMi45IDAtMjQuNi03LjgtMjkuNi0xOS44cy0yLjItMjUuNyA2LjktMzQuOUw0MDIuNyA5NkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem05NiAxOTJjMTIuMSAwIDIzLjIgNi44IDI4LjYgMTcuN2w2NCAxMjggMTYgMzJjNy45IDE1LjggMS41IDM1LTE0LjMgNDIuOXMtMzUgMS41LTQyLjktMTQuM0w0NjAuMiA0NDhIMzcxLjhsLTcuMiAxNC4zYy03LjkgMTUuOC0yNy4xIDIyLjItNDIuOSAxNC4zcy0yMi4yLTI3LjEtMTQuMy00Mi45bDE2LTMyIDY0LTEyOGM1LjQtMTAuOCAxNi41LTE3LjcgMjguNi0xNy43ek0zOTUuOCA0MDBoNDAuNEw0MTYgMzU5LjYgMzk1LjggNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY5LjQgNDcwLjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyMjQgMzcwLjggMjI0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMzA2LjdMNTQuNiAyNjUuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dMZWZ0TG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDEyOCAxMjhjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyODggNDgwIDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzcwLjcgMCA3My40LTczLjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMiAyODggNDE2IDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzA2LjcgMEwyMTQuNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dQb2ludGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNTUuMlY0MjZjMCAxMi4yIDkuOSAyMiAyMiAyMmM2LjMgMCAxMi40LTIuNyAxNi42LTcuNUwxMjEuMiAzNDZsNTguMSAxMTYuM2M3LjkgMTUuOCAyNy4xIDIyLjIgNDIuOSAxNC4zczIyLjItMjcuMSAxNC4zLTQyLjlMMTc5LjggMzIwSDI5Ny45YzEyLjIgMCAyMi4xLTkuOSAyMi4xLTIyLjFjMC02LjMtMi43LTEyLjMtNy40LTE2LjVMMzguNiAzNy45QzM0LjMgMzQuMSAyOC45IDMyIDIzLjIgMzJDMTAuNCAzMiAwIDQyLjQgMCA1NS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1JpZ2h0QXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOC42IDE1MC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC05Ni05NmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMzM4LjcgOTYgMzIgOTZDMTQuMyA5NiAwIDExMC4zIDAgMTI4czE0LjMgMzIgMzIgMzJsMzA2LjcgMC00MS40IDQxLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsOTYtOTZ6bS0zMzMuMyAzNTJjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyA0MTYgNDE2IDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzA2LjcgMCA0MS40LTQxLjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w5NiA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSaWdodEZyb21CcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi42IDI3OC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w0MDIuNyAyMjQgMTkyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyMTAuNyAwLTczLjQgNzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4ek0xNjAgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMOTYgMzJDNDMgMzIgMCA3NSAwIDEyOEwwIDM4NGMwIDUzIDQzIDk2IDk2IDk2bDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UmlnaHRMb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi42IDI3OC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w0MDIuNyAyMjQgMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDM3MC43IDAtNzMuNCA3My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UmlnaHRUb0JyYWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDk2bDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGM1MyAwIDk2LTQzIDk2LTk2bDAtMjU2YzAtNTMtNDMtOTYtOTYtOTZsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bS05LjQgMTgyLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDI0Mi43IDIyNCAzMiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjEwLjcgMC03My40IDczLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSaWdodFRvQ2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggNDhjMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMTkyaDQwVjEyMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djcyaDI0YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0MzIgMzM2Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OHptNjQgMzJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlY4MGMwLTguOC03LjItMTYtMTYtMTZIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZ6bTE2IDgwYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxNzZjMC04LjgtNy4yLTE2LTE2LTE2SDM2OHpNMzUyIDI3MnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZ6bTE3Ni0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjcyYzAtOC44LTcuMi0xNi0xNi0xNkg1Mjh6TTUxMiAzNjh2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDUyOGMtOC44IDAtMTYgNy4yLTE2IDE2ek0xNjYuNiAxNTMuNGw4MCA4MGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtODAgODBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDE0Ni43IDI4OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxNDYuN2wtMjUuNC0yNS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOC42IDI3OC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wzMzguOCAyMjQgMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMwNi43IDBMMjMzLjQgMzkzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSb3RhdGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNS43IDE2MEgxNzZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NTEuMkw5Ny42IDk3LjZjODcuNS04Ny41IDIyOS4zLTg3LjUgMzE2LjggMHM4Ny41IDIyOS4zIDAgMzE2LjhzLTIyOS4zIDg3LjUtMzE2LjggMGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGM2Mi41IDYyLjUgMTYzLjggNjIuNSAyMjYuMyAwczYyLjUtMTYzLjggMC0yMjYuM3MtMTYzLjgtNjIuNS0yMjYuMyAwTDEyNS43IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSb3RhdGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuMyAxNjBIMzM2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ2NGMxNy43IDAgMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY1MS4yTDQxNC40IDk3LjZjLTg3LjUtODcuNS0yMjkuMy04Ny41LTMxNi44IDBzLTg3LjUgMjI5LjMgMCAzMTYuOHMyMjkuMyA4Ny41IDMxNi44IDBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBjLTYyLjUgNjIuNS0xNjMuOCA2Mi41LTIyNi4zIDBzLTYyLjUtMTYzLjggMC0yMjYuM3MxNjMuOC02Mi41IDIyNi4zIDBMMzg2LjMgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1RyZW5kRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2ODIuN0wzNDIuNiAxMzcuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBMMTkyIDI0Mi43IDU0LjYgMTA1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBMMzIwIDIwNS4zIDQ2Ni43IDM1MkgzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VHJlbmRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMlYyODhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjA1LjNMMzQyLjYgMzc0LjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwTDE5MiAyNjkuMyA1NC42IDQwNi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxNjAtMTYwYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwTDMyMCAzMDYuNyA0NjYuNyAxNjBIMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1R1cm5Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0QzE0LjMgNjQgMCA0OS43IDAgMzJTMTQuMyAwIDMyIDBsOTYgMGM1MyAwIDk2IDQzIDk2IDk2bDAgMzA2LjcgNzMuNC03My40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTEyOCAxMjhjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC0xMjgtMTI4Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwTDE2MCA0MDIuNyAxNjAgOTZjMC0xNy43LTE0LjMtMzItMzItMzJMMzIgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VHVyblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5NiAwYzUzIDAgOTYtNDMgOTYtOTZsMC0zMDYuNyA3My40IDczLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTEyOCAxMjhjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTYwIDEwOS4zIDE2MCA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXAxOSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTAuNyAzOGM4LjMgNiAxMy4zIDE1LjcgMTMuMyAyNnY5NmgxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MzIgMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDE2VjEwOC40bC01LjkgMmMtMTYuOCA1LjYtMzQuOS0zLjUtNDAuNS0yMC4yczMuNS0zNC45IDIwLjItNDAuNWw0OC0xNmM5LjgtMy4zIDIwLjUtMS42IDI4LjggNC40ek0xNjAgMzJjOSAwIDE3LjUgMy44IDIzLjYgMTAuNGw4OCA5NmMxMS45IDEzIDExLjEgMzMuMy0yIDQ1LjJzLTMzLjMgMTEuMS00NS4yLTJMMTkyIDE0Ni4zVjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNDYuM0w5NS42IDE4MS42Yy0xMS45IDEzLTMyLjIgMTMuOS00NS4yIDJzLTEzLjktMzIuMi0yLTQ1LjJsODgtOTZDMTQyLjUgMzUuOCAxNTEgMzIgMTYwIDMyek00NDUuNyAzNjQuOUEzMiAzMiAwIDEgMCA0MTguMyAzMDdhMzIgMzIgMCAxIDAgMjcuNCA1Ny45em0tNDAuNyA1NC45QzM2OS42IDQwOC40IDM0NCAzNzUuMiAzNDQgMzM2YzAtNDguNiAzOS40LTg4IDg4LTg4czg4IDM5LjQgODggODhjMCAyMy41LTcuNSA0Ni4zLTIxLjUgNjUuMkw0NDkuNyA0NjdjLTEwLjUgMTQuMi0zMC42IDE3LjItNDQuOCA2LjdzLTE3LjItMzAuNi02LjctNDQuOGw2LjgtOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwOTEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDMyYzkgMCAxNy41IDMuOCAyMy42IDEwLjRsODggOTZjMTEuOSAxMyAxMS4xIDMzLjMtMiA0NS4ycy0zMy4zIDExLjEtNDUuMi0yTDE5MiAxNDYuM1Y0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTQ2LjNMOTUuNiAxODEuNmMtMTEuOSAxMy0zMi4yIDEzLjktNDUuMiAycy0xMy45LTMyLjItMi00NS4ybDg4LTk2QzE0Mi41IDM1LjggMTUxIDMyIDE2MCAzMnpNNDUwLjcgMjk0YzguMyA2IDEzLjMgMTUuNyAxMy4zIDI2djk2aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQzMiAzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMTZWMzY0LjRsLTUuOSAyYy0xNi44IDUuNi0zNC45LTMuNS00MC41LTIwLjJzMy41LTM0LjkgMjAuMi00MC41bDQ4LTE2YzkuOC0zLjMgMjAuNS0xLjYgMjguOCA0LjR6bS01LTE0NS4xQTMyIDMyIDAgMSAwIDQxOC4zIDkxYTMyIDMyIDAgMSAwIDI3LjQgNTcuOXptLTQwLjcgNTQuOUMzNjkuNiAxOTIuNCAzNDQgMTU5LjIgMzQ0IDEyMGMwLTQ4LjYgMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMjMuNS03LjUgNDYuMy0yMS41IDY1LjJMNDQ5LjcgMjUxYy0xMC41IDE0LjItMzAuNiAxNy4yLTQ0LjggNi43cy0xNy4yLTMwLjYtNi43LTQ0LjhsNi44LTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcEFaIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4My42IDQyLjRDMTc3LjUgMzUuOCAxNjkgMzIgMTYwIDMycy0xNy41IDMuOC0yMy42IDEwLjRsLTg4IDk2Yy0xMS45IDEzLTExLjEgMzMuMyAyIDQ1LjJzMzMuMyAxMS4xIDQ1LjItMkwxMjggMTQ2LjNWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTQ2LjNsMzIuNCAzNS40YzExLjkgMTMgMzIuMiAxMy45IDQ1LjIgMnMxMy45LTMyLjIgMi00NS4ybC04OC05NnpNMzIwIDMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg1MC43bC03My40IDczLjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQyOS4zbDczLjQtNzMuNGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEgzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek00MTYgMzJjLTEyLjEgMC0yMy4yIDYuOC0yOC42IDE3LjdsLTY0IDEyOC0xNiAzMmMtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zbDcuMi0xNC4zaDg4LjRsNy4yIDE0LjNjNy45IDE1LjggMjcuMSAyMi4yIDQyLjkgMTQuM3MyMi4yLTI3LjEgMTQuMy00Mi45bC0xNi0zMi02NC0xMjhDNDM5LjIgMzguOCA0MjguMSAzMiA0MTYgMzJ6TTM5NS44IDE3Nkw0MTYgMTM1LjYgNDM2LjIgMTc2SDM5NS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwRnJvbUJyYWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ2LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxOTIgMTA5LjMgMTkyIDMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjEwLjcgNzMuNCA3My40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjh6TTY0IDM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDY0YzAgNTMgNDMgOTYgOTYgOTZsMjU2IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJMOTYgNDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwRnJvbUdyb3VuZFdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTA5LjNsMjUuNCAyNS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTgwLTgwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtODAgODBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjU2IDEwOS4zVjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnptLTE4LjUgNjkuOUMyNDcgNDM3LjQgMjE5LjUgNDQ4IDE5MiA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA1MDEuNyAxNTkgNTEyIDE5MiA1MTJjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjFjLTExLjEtNy45LTI1LjktNy45LTM3IDB6TTE5MiAxOTJINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQyNWM1LjMtMy4xIDExLjItNS40IDE3LjUtNi45YzEzLjEtMy4xIDI2LjctOS44IDM3LjMtMTguNmMyMi4yLTE4LjcgNTQuMy0yMC4xIDc4LjEtMy40YzE4IDEyLjQgNDAuMSAyMC4zIDU5LjEgMjAuM1YxOTJ6bTM4NCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEgzODRWNDE2LjVoMGMxOSAwIDQxLjItNy45IDU5LjItMjAuM2MyMy44LTE2LjcgNTUuOC0xNS4zIDc4LjEgMy40YzEwLjYgOC44IDI0LjIgMTUuNiAzNy4zIDE4LjZjNi4zIDEuNSAxMi4xIDMuOCAxNy41IDYuOVYyNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBGcm9tV2F0ZXJQdW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAwQzg1LjUgMCA2NCAyMS41IDY0IDQ4VjI1Nkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2OTZjMCA4IDIgMTUuNiA1LjQgMjIuMmMzLjgtMS43IDcuOC0zLjEgMTItNC4xYzEzLjEtMy4xIDI2LjctOS44IDM3LjMtMTguNmMyMi4yLTE4LjcgNTQuMy0yMC4xIDc4LjEtMy40YzE4IDEyLjQgNDAuMSAyMC4zIDU5LjIgMjAuM2MyMS4xIDAgNDItOC41IDU5LjItMjAuM2MyMi4xLTE1LjUgNTEuNi0xNS41IDczLjcgMGMxOC40IDEyLjcgMzkuNiAyMC4zIDU5LjIgMjAuM2MxOSAwIDQxLjItNy45IDU5LjItMjAuM2MyMy44LTE2LjcgNTUuOC0xNS4zIDc4LjEgMy40YzEwLjYgOC44IDI0LjIgMTUuNiAzNy4zIDE4LjZjNC4yIDEgOC4yIDIuNCAxMiA0LjFDNTc0IDQxNS42IDU3NiA0MDggNTc2IDQwMFYzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDhINDgwbDAtMTQ2LjcgMjUuNCAyNS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTgwLTgwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtODAgODBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMNDE2IDEwOS4zIDQxNiAyNTZIMjg4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDExMnpNMzA2LjUgNDIxLjljLTExLjEtNy45LTI1LjktNy45LTM3IDBDMjQ3IDQzNy40IDIxOS41IDQ0OCAxOTIgNDQ4Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWwwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgNTAxLjcgMTU5IDUxMiAxOTIgNTEyYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43bDAgMEM0MzkuNCA0MzcuMiA0MTAuOSA0NDggMzg0IDQ0OGMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwTG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTQuNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE2MCAxMDkuM1Y0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxMDkuM2w3My40IDczLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcFJpZ2h0RG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg1MC43TDkuNCAyNjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwyNTYgMTA5LjNWMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTYwek01NzYgODBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNNDQ4IDIwOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00MDAgMzg0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptNDggODBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHptMTI4IDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMjcyIDM4NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ4IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTE0NCA1MTJhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek01NzYgMzM2YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bS00OC04MGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBSaWdodEZyb21TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoODIuN0wyMDEuNCAyNjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0NDggMTA5LjNWMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzIwek04MCAzMkMzNS44IDMyIDAgNjcuOCAwIDExMlY0MzJjMCA0NC4yIDM1LjggODAgODAgODBINDAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwVjMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNkgxOTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBTaG9ydFdpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjYgNDIuNEMxNDUuNSAzNS44IDEzNyAzMiAxMjggMzJzLTE3LjUgMy44LTIzLjYgMTAuNGwtODggOTZjLTExLjkgMTMtMTEuMSAzMy4zIDIgNDUuMnMzMy4zIDExLjEgNDUuMi0yTDk2IDE0Ni4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0Ni4zbDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMHptMCAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMHptMCAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcFdpZGVTaG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTEuNiA0Mi40QzE0NS41IDM1LjggMTM3IDMyIDEyOCAzMnMtMTcuNSAzLjgtMjMuNiAxMC40bC04OCA5NmMtMTEuOSAxMy0xMS4xIDMzLjMgMiA0NS4yczMzLjMgMTEuMSA0NS4yLTJMOTYgMTQ2LjNWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTQ2LjNsMzIuNCAzNS40YzExLjkgMTMgMzIuMiAxMy45IDQ1LjIgMnMxMy45LTMyLjIgMi00NS4ybC04OC05NnpNMzIwIDQ4MGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bTAtMTI4aDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnptMC0xMjhINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnptMC0xMjhINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcFpBIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4My42IDQyLjRDMTc3LjUgMzUuOCAxNjkgMzIgMTYwIDMycy0xNy41IDMuOC0yMy42IDEwLjRsLTg4IDk2Yy0xMS45IDEzLTExLjEgMzMuMyAyIDQ1LjJzMzMuMyAxMS4xIDQ1LjItMkwxMjggMTQ2LjNWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTQ2LjNsMzIuNCAzNS40YzExLjkgMTMgMzIuMiAxMy45IDQ1LjIgMnMxMy45LTMyLjIgMi00NS4ybC04OC05NnpNMzIwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDUwLjdsLTczLjQgNzMuNGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDI5LjNsNzMuNC03My40YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44SDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTk2IDE5MmMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtNjQgMTI4LTE2IDMyYy03LjkgMTUuOC0xLjUgMzUgMTQuMyA0Mi45czM1IDEuNSA0Mi45LTE0LjNsNy4yLTE0LjNoODguNGw3LjIgMTQuM2M3LjkgMTUuOCAyNy4xIDIyLjIgNDIuOSAxNC4zczIyLjItMjcuMSAxNC4zLTQyLjlsLTE2LTMyLTY0LTEyOEM0MzkuMiAyNjIuOCA0MjguMSAyNTYgNDE2IDI1NnpNMzk1LjggNDAwTDQxNiAzNTkuNiA0MzYuMiA0MDBIMzk1Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE0LjYgNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTYwIDE0MS4yVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0MS4yTDMyOS40IDI0Ni42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c0Rvd25Ub0xpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDQxNkwzMiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNTEyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJ6bTIyLjYtMTM3LjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMNDgwIDI3NC43IDQ4MCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDIxMC43LTQxLjQtNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsOTYtOTZ6bS0zMjAtNDUuM2MtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBMMTYwIDI3NC43IDE2MCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDIxMC43TDU0LjYgMjMzLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDk2LTk2YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NEb3duVG9QZW9wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjE0Mi4xTDk3IDExOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw2NCA2NGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw2NC02NGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC0yMyAyM1YyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNMzYwIDIwMGE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwek0xODQgMjk2YTQwIDQwIDAgMSAwIC04MCAwIDQwIDQwIDAgMSAwIDgwIDB6bTMxMiA0MGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTIwMCA0NDEuNWwyNi45IDQ5LjljNi4zIDExLjcgMjAuOCAxNiAzMi41IDkuOHMxNi0yMC44IDkuOC0zMi41bC0zNi4zLTY3LjVjMS43LTEuNyAzLjItMy42IDQuMy01LjhMMjY0IDM0NS41VjQwMGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNDUuNWwyNi45IDQ5LjljMS4yIDIuMiAyLjYgNC4xIDQuMyA1LjhsLTM2LjMgNjcuNWMtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMNDQwIDQ0MS41VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0OGMxNy43IDAgMzItMTQuMyAzMi0zMlY0NDEuNWwyNi45IDQ5LjljNi4zIDExLjcgMjAuOCAxNiAzMi41IDkuOHMxNi0yMC44IDkuOC0zMi41bC0zNy45LTcwLjNjLTE1LjMtMjguNS00NS4xLTQ2LjMtNzcuNS00Ni4zSDQ4Ni4yYy0xNi4zIDAtMzEuOSA0LjUtNDUuNCAxMi42bC0zMy42LTYyLjNjLTE1LjMtMjguNS00NS4xLTQ2LjMtNzcuNS00Ni4zSDMxMC4yYy0zMi40IDAtNjIuMSAxNy44LTc3LjUgNDYuM2wtMzMuNiA2Mi4zYy0xMy41LTguMS0yOS4xLTEyLjYtNDUuNC0xMi42SDEzNC4yYy0zMi40IDAtNjIuMSAxNy44LTc3LjUgNDYuM0wxOC45IDQ2OC42Yy02LjMgMTEuNy0xLjkgMjYuMiA5LjggMzIuNXMyNi4yIDEuOSAzMi41LTkuOEw4OCA0NDEuNVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQxLjV6TTQxNSAxNTNsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsNjQtNjRjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMjMgMjNWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWMTQyLjFsLTIzLTIzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NMZWZ0UmlnaHRUb0xpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjR6bTIxNC42IDczLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNMMjA1LjMgMjI0bDIyOS41IDAtNDEuNC00MS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDk2IDk2YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC05NiA5NmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMNDM0LjcgMjg4bC0yMjkuNSAwIDQxLjQgNDEuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMGwtOTYtOTZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDk2LTk2YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwek02NDAgOTZWNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c0xlZnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDYuNiAzNzQuNmw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDQwMi43IDIyNGwtMjkzLjUgMCA0MS40LTQxLjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDEwOS4zIDI4OGwyOTMuNSAwLTQxLjQgNDEuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzUm90YXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNS4xIDIwMi42YzcuNy0yMS44IDIwLjItNDIuMyAzNy44LTU5LjhjNjIuNS02Mi41IDE2My44LTYyLjUgMjI2LjMgMEwzODYuMyAxNjBIMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ2My41YzAgMCAwIDAgMCAwaC40YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjgwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjM1LjJMNDE0LjQgOTcuNmMtODcuNS04Ny41LTIyOS4zLTg3LjUtMzE2LjggMEM3My4yIDEyMiA1NS42IDE1MC43IDQ0LjggMTgxLjRjLTUuOSAxNi43IDIuOSAzNC45IDE5LjUgNDAuOHMzNC45LTIuOSA0MC44LTE5LjV6TTM5IDI4OS4zYy01IDEuNS05LjggNC4yLTEzLjcgOC4yYy00IDQtNi43IDguOC04LjEgMTRjLS4zIDEuMi0uNiAyLjUtLjggMy44Yy0uMyAxLjctLjQgMy40LS40IDUuMVY0MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzOTYuOWwxNy42IDE3LjUgMCAwYzg3LjUgODcuNCAyMjkuMyA4Ny40IDMxNi43IDBjMjQuNC0yNC40IDQyLjEtNTMuMSA1Mi45LTgzLjdjNS45LTE2LjctMi45LTM0LjktMTkuNS00MC44cy0zNC45IDIuOS00MC44IDE5LjVjLTcuNyAyMS44LTIwLjIgNDIuMy0zNy44IDU5LjhjLTYyLjUgNjIuNS0xNjMuOCA2Mi41LTIyNi4zIDBsLS4xLS4xTDEyNS42IDM1MkgxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDguNGMtMS42IDAtMy4yIC4xLTQuOCAuM3MtMy4xIC41LTQuNiAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NTcGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA5NmMzOC40IDAgNzMuNyAxMy41IDEwMS4zIDM2LjFsLTMyLjYgMzIuNmMtNC42IDQuNi01LjkgMTEuNS0zLjUgMTcuNHM4LjMgOS45IDE0LjggOS45SDQ0OGM4LjggMCAxNi03LjIgMTYtMTZWNjRjMC02LjUtMy45LTEyLjMtOS45LTE0LjhzLTEyLjktMS4xLTE3LjQgMy41bC0zNCAzNEMzNjMuNCA1Mi42IDMxMi4xIDMyIDI1NiAzMmMtMTAuOSAwLTIxLjUgLjgtMzIgMi4zVjk5LjJjMTAuMy0yLjEgMjEtMy4yIDMyLTMuMnpNMTMyLjEgMTU0LjdsMzIuNiAzMi42YzQuNiA0LjYgMTEuNSA1LjkgMTcuNCAzLjVzOS45LTguMyA5LjktMTQuOFY2NGMwLTguOC03LjItMTYtMTYtMTZINjRjLTYuNSAwLTEyLjMgMy45LTE0LjggOS45cy0xLjEgMTIuOSAzLjUgMTcuNGwzNCAzNEM1Mi42IDE0OC42IDMyIDE5OS45IDMyIDI1NmMwIDEwLjkgLjggMjEuNSAyLjMgMzJIOTkuMmMtMi4xLTEwLjMtMy4yLTIxLTMuMi0zMmMwLTM4LjQgMTMuNS03My43IDM2LjEtMTAxLjN6TTQ3Ny43IDIyNEg0MTIuOGMyLjEgMTAuMyAzLjIgMjEgMy4yIDMyYzAgMzguNC0xMy41IDczLjctMzYuMSAxMDEuM2wtMzIuNi0zMi42Yy00LjYtNC42LTExLjUtNS45LTE3LjQtMy41cy05LjkgOC4zLTkuOSAxNC44VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZINDQ4YzYuNSAwIDEyLjMtMy45IDE0LjgtOS45czEuMS0xMi45LTMuNS0xNy40bC0zNC0zNEM0NTkuNCAzNjMuNCA0ODAgMzEyLjEgNDgwIDI1NmMwLTEwLjktLjgtMjEuNS0yLjMtMzJ6TTI1NiA0MTZjLTM4LjQgMC03My43LTEzLjUtMTAxLjMtMzYuMWwzMi42LTMyLjZjNC42LTQuNiA1LjktMTEuNSAzLjUtMTcuNHMtOC4zLTkuOS0xNC44LTkuOUg2NGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTEyYzAgNi41IDMuOSAxMi4zIDkuOSAxNC44czEyLjkgMS4xIDE3LjQtMy41bDM0LTM0QzE0OC42IDQ1OS40IDE5OS45IDQ4MCAyNTYgNDgwYzEwLjkgMCAyMS41LS44IDMyLTIuM1Y0MTIuOGMtMTAuMyAyLjEtMjEgMy4yLTMyIDMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzU3BsaXRVcEFuZExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ2LjYgMTUwLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDk2LTk2YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDk2IDk2YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDM1MiAxMDkuM1YzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDE2Yy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOGMwLTM1LjMtMjguNy02NC02NC02NEgxMDkuM2w0MS40IDQxLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTk2LTk2Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zTDEwOS4zIDI1NkgyMjRjMjMuMyAwIDQ1LjIgNi4yIDY0IDE3LjFWMTA5LjNsLTQxLjQgNDEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzVG9DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDkuNEMyMS45LTMuMSA0Mi4xLTMuMSA1NC42IDkuNEwxNjAgMTE0LjdWOTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY5NmMwIDQuMy0uOSA4LjUtMi40IDEyLjJjLTEuNiAzLjctMy44IDcuMy02LjkgMTAuM2wtLjEgLjFjLTMuMSAzLTYuNiA1LjMtMTAuMyA2LjljLTMuOCAxLjYtNy45IDIuNC0xMi4yIDIuNEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgxOC43TDkuNCA1NC42Qy0zLjEgNDIuMS0zLjEgMjEuOSA5LjQgOS40ek0yNTYgMjU2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMTE0LjcgMzUySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDk2IDBsLjEgMGM4LjggMCAxNi43IDMuNiAyMi41IDkuM2wuMSAuMWMzIDMuMSA1LjMgNi42IDYuOSAxMC4zYzEuNiAzLjggMi40IDcuOSAyLjQgMTIuMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzOTcuM0w1NC42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wxMTQuNyAzNTJ6TTQxNiA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjE4LjdMNTg1LjQgOS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMNTI1LjMgMTYwSDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0NDhjLTguOCAwLTE2LjgtMy42LTIyLjYtOS4zbC0uMS0uMWMtMy0zLjEtNS4zLTYuNi02LjktMTAuM3MtMi40LTcuOC0yLjQtMTIuMmwwLS4xdjBWOTZ6TTUyNS4zIDM1Mkw2MzAuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEw0ODAgMzk3LjNWNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMyMHYwYzAgMCAwLS4xIDAtLjFjMC00LjMgLjktOC40IDIuNC0xMi4yYzEuNi0zLjggMy45LTcuMyA2LjktMTAuNGM1LjgtNS44IDEzLjctOS4zIDIyLjUtOS40YzAgMCAuMSAwIC4xIDBoMCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1MjUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzVG9Eb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRoMzJjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOWwtNjQgNjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC02NC02NGMtOS4yLTkuMi0xMS45LTIyLjktNi45LTM0LjlzMTYuNi0xOS44IDI5LjYtMTkuOGgzMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMTY5LjQgMzkzLjRsNjQtNjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsNjQgNjRjOS4yIDkuMiAxMS45IDIyLjkgNi45IDM0LjlzLTE2LjYgMTkuOC0yOS42IDE5LjhIMjg4djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgxOTJjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45ek0zMiAyMjRINjRWMTkyYzAtMTIuOSA3LjgtMjQuNiAxOS44LTI5LjZzMjUuNy0yLjIgMzQuOSA2LjlsNjQgNjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTY0IDY0Yy05LjIgOS4yLTIyLjkgMTEuOS0zNC45IDYuOXMtMTkuOC0xNi42LTE5LjgtMjkuNlYyODhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTI5Ny40IDU0LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDY0LTY0YzkuMi05LjIgMjIuOS0xMS45IDM0LjktNi45czE5LjggMTYuNiAxOS44IDI5LjZ2MzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDQ4djMyYzAgMTIuOS03LjggMjQuNi0xOS44IDI5LjZzLTI1LjcgMi4yLTM0LjktNi45bC02NC02NHpNMjU2IDIyNGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1RvRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE1QzI0LjQgNS43IDM5LjYgNS43IDQ5IDE1bDYzIDYzVjQwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2OTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRINzguMUwxNSA0OUM1LjcgMzkuNiA1LjcgMjQuNCAxNSAxNXpNMTMzLjUgMjQzLjlDMTU4LjYgMTkzLjYgMjIyLjcgMTEyIDMyMCAxMTJzMTYxLjQgODEuNiAxODYuNSAxMzEuOWMzLjggNy42IDMuOCAxNi41IDAgMjQuMkM0ODEuNCAzMTguNCA0MTcuMyA0MDAgMzIwIDQwMHMtMTYxLjQtODEuNi0xODYuNS0xMzEuOWMtMy44LTcuNi0zLjgtMTYuNSAwLTI0LjJ6TTMyMCAzMjBhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6TTU5MSAxNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTYzIDYzSDYwMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1MDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjQwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRWNzguMWw2My02M3pNMTUgNDk3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw2My02M0g0MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHY5NmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0MzMuOUw0OSA0OTdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwem01NzYgMGwtNjMtNjNWNDcyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGg5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NjEuOWw2MyA2M2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NUdXJuUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk3LjQgOS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDk2IDk2YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC05NiA5NmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMzM4LjcgMTYwSDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjI0QzAgMTUzLjMgNTcuMyA5NiAxMjggOTZIMzM4LjdMMjk3LjQgNTQuNmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjN6bS05NiAyNTZjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsOTYgOTZjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTk2IDk2Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyNDIuNyA0MTZIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OGMwLTUzIDQzLTk2IDk2LTk2SDI0Mi43bC00MS40LTQxLjRjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NUdXJuVG9Eb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OS40IDI1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM0wyNjkuMyA5NiA0MTYgOTZjNTMgMCA5NiA0MyA5NiA5NnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJsLTE0Ni43IDAgMjUuNCAyNS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwbC04MC04MGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsODAtODB6bTEzLjMgMjU2bDgwIDgwYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC04MCA4MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMjQyLjcgNDE2IDk2IDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4YzAtNTMgNDMtOTYgOTYtOTZsMTQ2LjcgMC0yNS40LTI1LjRjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDB6TTM4NCAzODRhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek02NCAxOTJBNjQgNjQgMCAxIDEgNjQgNjRhNjQgNjQgMCAxIDEgMCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1VwRG93bkxlZnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzguNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw5LjQtOS40VjIyNEgxMDkuM2w5LjQtOS40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOS40LTkuNEgyMjRWNDAyLjdsLTkuNC05LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC05LjQgOS40VjI4OEg0MDIuN2wtOS40IDkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDkuNCA5LjRIMjg4VjEwOS4zbDkuNCA5LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1VwRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODIuNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxMjggMTA5LjNWNDAyLjdMODYuNiAzNjEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsOTYtOTZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTkyIDQwMi43VjEwOS4zbDQxLjQgNDEuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzVXBUb0xpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgOTZsNTEyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2ek05LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMOTYgMjM3LjMgOTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMTAuNyA0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC05NiA5NnptMzIwIDQ1LjNjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBMNDE2IDIzNy4zIDQxNiA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTIxMC43IDQxLjQgNDEuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05Ni05NmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXN0ZXJpc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE5OS41bDExMS41LTY2LjljMTUuMi05LjEgMzQuOC00LjIgNDMuOSAxMXM0LjIgMzQuOC0xMSA0My45TDI1NC4yIDI1NmwxMTQuMyA2OC42YzE1LjIgOS4xIDIwLjEgMjguNyAxMSA0My45cy0yOC43IDIwLjEtNDMuOSAxMUwyMjQgMzEyLjVWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMxMi41TDQ4LjUgMzc5LjRjLTE1LjIgOS4xLTM0LjggNC4yLTQzLjktMTFzLTQuMi0zNC44IDExLTQzLjlMMTI5LjggMjU2IDE1LjUgMTg3LjRjLTE1LjItOS4xLTIwLjEtMjguNy0xMS00My45czI4LjctMjAuMSA0My45LTExTDE2MCAxOTkuNVY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDY0QzE1MCA2NCA2NCAxNTAgNjQgMjU2czg2IDE5MiAxOTIgMTkyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyQzExNC42IDUxMiAwIDM5Ny40IDAgMjU2UzExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZ2MzJjMCA1My00MyA5Ni05NiA5NmMtMjkuMyAwLTU1LjYtMTMuMi03My4yLTMzLjlDMzIwIDM3MS4xIDI4OS41IDM4NCAyNTYgMzg0Yy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOHM1Ny4zLTEyOCAxMjgtMTI4YzI3LjkgMCA1My43IDguOSA3NC43IDI0LjFjNS43LTUgMTMuMS04LjEgMjEuMy04LjFjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2ODAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNTZjMC0xMDYtODYtMTkyLTE5Mi0xOTJ6bTY0IDE5MmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDM5OC44Yy0xMS44IDUuMS0yMy40IDkuNy0zNC45IDEzLjVjMTYuNyAzMy44IDMxIDM1LjcgMzQuOSAzNS43czE4LjEtMS45IDM0LjktMzUuN2MtMTEuNC0zLjktMjMuMS04LjQtMzQuOS0xMy41ek00NDYgMjU2YzMzIDQ1LjIgNDQuMyA5MC45IDIzLjYgMTI4Yy0yMC4yIDM2LjMtNjIuNSA0OS4zLTExNS4yIDQzLjJjLTIyIDUyLjEtNTUuNiA4NC44LTk4LjQgODQuOHMtNzYuNC0zMi43LTk4LjQtODQuOGMtNTIuNyA2LjEtOTUtNi44LTExNS4yLTQzLjJDMjEuNyAzNDYuOSAzMyAzMDEuMiA2NiAyNTZjLTMzLTQ1LjItNDQuMy05MC45LTIzLjYtMTI4YzIwLjItMzYuMyA2Mi41LTQ5LjMgMTE1LjItNDMuMkMxNzkuNiAzMi43IDIxMy4yIDAgMjU2IDBzNzYuNCAzMi43IDk4LjQgODQuOGM1Mi43LTYuMSA5NSA2LjggMTE1LjIgNDMuMmMyMC43IDM3LjEgOS40IDgyLjgtMjMuNiAxMjh6bS02NS44IDY3LjRjLTEuNyAxNC4yLTMuOSAyOC02LjcgNDEuMmMzMS44IDEuNCAzOC42LTguNyA0MC4yLTExLjdjMi4zLTQuMiA3LTE3LjktMTEuOS00OC4xYy02LjggNi4zLTE0IDEyLjUtMjEuNiAxOC42em0tNi43LTE3NS45YzIuOCAxMy4xIDUgMjYuOSA2LjcgNDEuMmM3LjYgNi4xIDE0LjggMTIuMyAyMS42IDE4LjZjMTguOS0zMC4yIDE0LjItNDQgMTEuOS00OC4xYy0xLjYtMi45LTguNC0xMy00MC4yLTExLjd6TTI5MC45IDk5LjdDMjc0LjEgNjUuOSAyNTkuOSA2NCAyNTYgNjRzLTE4LjEgMS45LTM0LjkgMzUuN2MxMS40IDMuOSAyMy4xIDguNCAzNC45IDEzLjVjMTEuOC01LjEgMjMuNC05LjcgMzQuOS0xMy41em0tMTU5IDg4LjljMS43LTE0LjMgMy45LTI4IDYuNy00MS4yYy0zMS44LTEuNC0zOC42IDguNy00MC4yIDExLjdjLTIuMyA0LjItNyAxNy45IDExLjkgNDguMWM2LjgtNi4zIDE0LTEyLjUgMjEuNi0xOC42ek0xMTAuMiAzMDQuOEM5MS40IDMzNSA5NiAzNDguNyA5OC4zIDM1Mi45YzEuNiAyLjkgOC40IDEzIDQwLjIgMTEuN2MtMi44LTEzLjEtNS0yNi45LTYuNy00MS4yYy03LjYtNi4xLTE0LjgtMTIuMy0yMS42LTE4LjZ6TTMzNiAyNTZhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwem0tODAtMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdWRpb0Rlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjEzLjUgMTczLjNsNzIgMTQ0YzUuOSAxMS45IDEuMSAyNi4zLTEwLjcgMzIuMnMtMjYuMyAxLjEtMzIuMi0xMC43bC05LjQtMTguOUgxNTAuOWwtOS40IDE4LjljLTUuOSAxMS45LTIwLjMgMTYuNy0zMi4yIDEwLjdzLTE2LjctMjAuMy0xMC43LTMyLjJsNzItMTQ0YzQuMS04LjEgMTIuNC0xMy4zIDIxLjUtMTMuM3MxNy40IDUuMSAyMS41IDEzLjN6bS0uNCAxMDYuNkwxOTIgMjM3LjdsLTIxLjEgNDIuMmg0Mi4yek0zMDQgMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDU2YzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDMyOGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTg0em00OCAyNHY5NmgzMmMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEgzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF1c3RyYWxTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1My41IDUxLjdDMjQ4LjYgMzkuOCAyMzYuOSAzMiAyMjQgMzJzLTI0LjYgNy44LTI5LjUgMTkuN0wxMjIuNyAyMjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZMODIuNyAzMjBIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTZMMzQuNSA0MzUuN2MtNi44IDE2LjMgLjkgMzUgMTcuMiA0MS44czM1LS45IDQxLjgtMTcuMkwxMjUuMyAzODRIMzIyLjdsMzEuOCA3Ni4zYzYuOCAxNi4zIDI1LjUgMjQgNDEuOCAxNy4yczI0LTI1LjUgMTcuMi00MS44TDM5MiAzODRoMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzY1LjNMMzUyIDI4OGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjUuM0wyNTMuNSA1MS43ek0yNTYgMjI0SDE5MmwzMi03Ni44TDI1NiAyMjR6bS05MC43IDY0SDI4Mi43TDI5NiAzMjBIMTUybDEzLjMtMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3My44IDUuNWMxMS03LjMgMjUuNC03LjMgMzYuNCAwTDIyOCAxNy4yYzYgMy45IDEzIDUuOCAyMC4xIDUuNGwyMS4zLTEuM2MxMy4yLS44IDI1LjYgNi40IDMxLjUgMTguMmw5LjYgMTkuMWMzLjIgNi40IDguNCAxMS41IDE0LjcgMTQuN0wzNDQuNSA4M2MxMS44IDUuOSAxOSAxOC4zIDE4LjIgMzEuNWwtMS4zIDIxLjNjLS40IDcuMSAxLjUgMTQuMiA1LjQgMjAuMWwxMS44IDE3LjhjNy4zIDExIDcuMyAyNS40IDAgMzYuNEwzNjYuOCAyMjhjLTMuOSA2LTUuOCAxMy01LjQgMjAuMWwxLjMgMjEuM2MuOCAxMy4yLTYuNCAyNS42LTE4LjIgMzEuNWwtMTkuMSA5LjZjLTYuNCAzLjItMTEuNSA4LjQtMTQuNyAxNC43TDMwMSAzNDQuNWMtNS45IDExLjgtMTguMyAxOS0zMS41IDE4LjJsLTIxLjMtMS4zYy03LjEtLjQtMTQuMiAxLjUtMjAuMSA1LjRsLTE3LjggMTEuOGMtMTEgNy4zLTI1LjQgNy4zLTM2LjQgMEwxNTYgMzY2LjhjLTYtMy45LTEzLTUuOC0yMC4xLTUuNGwtMjEuMyAxLjNjLTEzLjIgLjgtMjUuNi02LjQtMzEuNS0xOC4ybC05LjYtMTkuMWMtMy4yLTYuNC04LjQtMTEuNS0xNC43LTE0LjdMMzkuNSAzMDFjLTExLjgtNS45LTE5LTE4LjMtMTguMi0zMS41bDEuMy0yMS4zYy40LTcuMS0xLjUtMTQuMi01LjQtMjAuMUw1LjUgMjEwLjJjLTcuMy0xMS03LjMtMjUuNCAwLTM2LjRMMTcuMiAxNTZjMy45LTYgNS44LTEzIDUuNC0yMC4xbC0xLjMtMjEuM2MtLjgtMTMuMiA2LjQtMjUuNiAxOC4yLTMxLjVsMTkuMS05LjZDNjUgNzAuMiA3MC4yIDY1IDczLjQgNTguNkw4MyAzOS41YzUuOS0xMS44IDE4LjMtMTkgMzEuNS0xOC4ybDIxLjMgMS4zYzcuMSAuNCAxNC4yLTEuNSAyMC4xLTUuNEwxNzMuOCA1LjV6TTI3MiAxOTJhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek0xLjMgNDQxLjhMNDQuNCAzMzkuM2MuMiAuMSAuMyAuMiAuNCAuNGw5LjYgMTkuMWMxMS43IDIzLjIgMzYgMzcuMyA2MiAzNS44bDIxLjMtMS4zYy4yIDAgLjUgMCAuNyAuMmwxNy44IDExLjhjNS4xIDMuMyAxMC41IDUuOSAxNi4xIDcuN2wtMzcuNiA4OS4zYy0yLjMgNS41LTcuNCA5LjItMTMuMyA5LjdzLTExLjYtMi4yLTE0LjgtNy4yTDc0LjQgNDU1LjVsLTU2LjEgOC4zYy01LjcgLjgtMTEuNC0xLjUtMTUtNnMtNC4zLTEwLjctMi4xLTE2em0yNDggNjAuNEwyMTEuNyA0MTNjNS42LTEuOCAxMS00LjMgMTYuMS03LjdsMTcuOC0xMS44Yy4yLS4xIC40LS4yIC43LS4ybDIxLjMgMS4zYzI2IDEuNSA1MC4zLTEyLjYgNjItMzUuOGw5LjYtMTkuMWMuMS0uMiAuMi0uMyAuNC0uNGw0My4yIDEwMi41YzIuMiA1LjMgMS40IDExLjQtMi4xIDE2cy05LjMgNi45LTE1IDZsLTU2LjEtOC4zLTMyLjIgNDkuMmMtMy4yIDUtOC45IDcuNy0xNC44IDcuMnMtMTEtNC4zLTEzLjMtOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWMjU2IDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgxOTJjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhjMC00Ni41LTI0LjgtODcuMy02Mi0xMDkuN2MxOC43LTIyLjMgMzAtNTEgMzAtODIuM2MwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEg2NHptOTYgMTkySDY0Vjk2aDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0ek02NCAyODhoOTYgMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRINjRWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWJ5Q2FycmlhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDE5MkguMUMyLjcgMTE3LjkgNDEuMyA1Mi45IDk5IDE0LjFjMTMuMy04LjkgMzAuOC00LjMgMzkuOSA4LjhMMjU2IDE5MnptMTI4LTMyYzAtMzUuMyAyOC43LTY0IDY0LTY0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwdjY0YzAgMjUuMi01LjggNTAuMi0xNyA3My41cy0yNy44IDQ0LjUtNDguNiA2Mi4zcy00NS41IDMyLTcyLjcgNDEuNlMyNTMuNCA0MTYgMjI0IDQxNnMtNTguNS01LTg1LjctMTQuNnMtNTEuOS0yMy44LTcyLjctNDEuNnMtMzcuMy0zOS00OC42LTYyLjNTMCAyNDkuMiAwIDIyNGwyMjQgMCAxNjAgMFYxNjB6TTgwIDQxNmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTI0MCA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiA4OGE3MiA3MiAwIDEgMSAxNDQgMEE3MiA3MiAwIDEgMSAxNTIgODh6TTM5LjcgMTQ0LjVjMTMtMTcuOSAzOC0yMS44IDU1LjktOC44TDEzMS44IDE2MmMyNi44IDE5LjUgNTkuMSAzMCA5Mi4yIDMwczY1LjQtMTAuNSA5Mi4yLTMwbDM2LjItMjYuNGMxNy45LTEzIDQyLjktOSA1NS45IDguOHM5IDQyLjktOC44IDU1LjlsLTM2LjIgMjYuNGMtMTMuNiA5LjktMjguMSAxOC4yLTQzLjMgMjVWMjg4SDEyOFYyNTEuN2MtMTUuMi02LjctMjkuNy0xNS4xLTQzLjMtMjVMNDguNSAyMDAuM2MtMTcuOS0xMy0yMS44LTM4LTguOC01NS45em04OS44IDE4NC44bDYwLjYgNTMtMjYgMzcuMiAyNC4zIDI0LjNjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZzLTQwLjkgMTUuNi01Ni42IDBsLTQ4LTQ4QzcwIDQzOC42IDY4LjEgNDE3IDc5LjIgNDAxLjFsNTAuMi03MS44em0xMjguNSA1M2w2MC42LTUzIDUwLjIgNzEuOGMxMS4xIDE1LjkgOS4yIDM3LjUtNC41IDUxLjJsLTQ4IDQ4Yy0xNS42IDE1LjYtNDAuOSAxNS42LTU2LjYgMHMtMTUuNi00MC45IDAtNTYuNkwyODQgNDE5LjRsLTI2LTM3LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY2t3YXJkRmFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTMuNiA0NDVjLTExLjIgNS4zLTI0LjUgMy42LTM0LjEtNC40TDI4OCAyOTcuN1Y0MTZjMCAxMi40LTcuMiAyMy43LTE4LjQgMjlzLTI0LjUgMy42LTM0LjEtNC40TDY0IDI5Ny43VjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NHMzMiAxNC4zIDMyIDMyVjIxNC4zTDIzNS41IDcxLjRjOS41LTcuOSAyMi44LTkuNyAzNC4xLTQuNFMyODggODMuNiAyODggOTZWMjE0LjNMNDU5LjUgNzEuNGM5LjUtNy45IDIyLjgtOS43IDM0LjEtNC40UzUxMiA4My42IDUxMiA5NlY0MTZjMCAxMi40LTcuMiAyMy43LTE4LjQgMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY2t3YXJkU3RlcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNSA0NDAuNmM5LjUgNy45IDIyLjggOS43IDM0LjEgNC40czE4LjQtMTYuNiAxOC40LTI5Vjk2YzAtMTIuNC03LjItMjMuNy0xOC40LTI5cy0yNC41LTMuNi0zNC4xIDQuNGwtMTkyIDE2MEw2NCAyNDFWOTZjMC0xNy43LTE0LjMtMzItMzItMzJTMCA3OC4zIDAgOTZWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjcxbDExLjUgOS42IDE5MiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY2t3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1OS41IDQ0MC42YzkuNSA3LjkgMjIuOCA5LjcgMzQuMSA0LjRzMTguNC0xNi42IDE4LjQtMjlWOTZjMC0xMi40LTcuMi0yMy43LTE4LjQtMjlzLTI0LjUtMy42LTM0LjEgNC40TDI4OCAyMTQuM1YyNTZ2NDEuN0w0NTkuNSA0NDAuNnpNMjU2IDM1MlYyNTYgMTI4IDk2YzAtMTIuNC03LjItMjMuNy0xOC40LTI5cy0yNC41LTMuNi0zNC4xIDQuNGwtMTkyIDE2MEM0LjIgMjM3LjUgMCAyNDYuNSAwIDI1NnM0LjIgMTguNSAxMS41IDI0LjZsMTkyIDE2MGM5LjUgNy45IDIyLjggOS43IDM0LjEgNC40czE4LjQtMTYuNiAxOC40LTI5VjM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM5LjIgMS4yYzExLjItMy4yIDIzLjItLjEgMzEuNCA4LjFMNTE4IDU2LjdsLTI2LjUgNy45Yy01OCAxNi42LTk4LjEgMzkuNi0xMjkuNiA2Ny40Yy0zMS4yIDI3LjUtNTMuMiA1OS4xLTc1LjEgOTAuOWwtMi4zIDMuM0MyNDEuNiAyODguNyAxOTUgMzU2LjYgNzIuOCA0MTcuN0wzNy45IDQzNS4yIDkuNCA0MDYuNmMtNy4zLTcuMy0xMC42LTE3LjYtOS0yNy44czguMS0xOC45IDE3LjMtMjMuNUMxMzYuMSAyOTYuMiAxODAuOSAyMzEgMjIzLjMgMTY5LjNsMi4zLTMuNGMyMS44LTMxLjggNDQuOS02NC45IDc3LjctOTMuOWMzMy40LTI5LjUgNzUuOC01My42IDEzNS45LTcwLjh6TTYxLjggNDU5bDI1LjQtMTIuN2MxMjkuNS02NC43IDE3OS45LTEzOC4xIDIyMy44LTIwMmwyLjItMy4zYzIyLjEtMzIuMSA0Mi4xLTYwLjUgNjkuOS04NS4xYzI3LjUtMjQuMyA2My40LTQ1LjIgMTE3LjMtNjAuNmwwIDAgLjItLjEgNDMuMS0xMi45IDIzIDIzYzggOCAxMS4yIDE5LjcgOC4zIDMwLjdzLTExLjMgMTkuNi0yMi4yIDIyLjdjLTUxLjkgMTQuOC04NS42IDM0LjctMTExLjEgNTcuMmMtMjYuMSAyMy00NS4xIDQ5LjktNjcuMyA4Mi4xbC0yLjIgMy4yQzMyNy44IDM2NS45IDI3NS41IDQ0MiAxNDIuMyA1MDguNmMtMTIuMyA2LjItMjcuMiAzLjctMzYuOS02TDYxLjggNDU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWN0ZXJpYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQuOSAuN2MtOS42LTIuNy0xOS41IDIuOC0yMi4zIDEyLjRsLTQuMyAxNS4yYy04LjMtLjYtMTYuOCAwLTI1LjIgMS45Yy03LjMgMS43LTE0LjMgMy41LTIxLjEgNS41bC01LjUtMTIuN2MtMy45LTkuMS0xNC41LTEzLjQtMjMuNi05LjVzLTEzLjQgMTQuNS05LjUgMjMuNmw0LjQgMTAuNGMtMTYuNiA2LjctMzEuNyAxNC40LTQ1LjQgMjIuOEwxNDcgNjJjLTUuNS04LjMtMTYuNy0xMC41LTI1LTVzLTEwLjUgMTYuNy01IDI1bDYgOWMtMTMuNyAxMS0yNS41IDIyLjgtMzUuOCAzNC45bC0xMC04Yy03LjgtNi4yLTE5LjEtNS0yNS4zIDIuOHMtNSAxOS4xIDIuOCAyNS4zTDY1LjkgMTU1Yy0xLjggMi44LTMuNSA1LjctNS4xIDguNWMtNi42IDExLjQtMTEuOCAyMi42LTE2IDMzbC04LTMuMmMtOS4yLTMuNy0xOS43IC44LTIzLjQgMTBzLjggMTkuNyAxMCAyMy40bDEwLjQgNC4yYy0uMiAuOC0uNCAxLjUtLjUgMi4zYy0yLjIgOS4zLTMuNCAxNy4zLTQuMSAyMy40Yy0uNCAzLjEtLjYgNS43LS44IDcuOGMtLjEgMS4xLS4xIDItLjIgMi44bC0uMSAxLjEgMCAuNSAwIC4yIDAgLjFjMCAwIDAgLjEgMjkuMSAxbC0uMSAwTDI4IDI2OS4zYy0uMSAzLjEgMCA2LjEgLjIgOS4xbC0xNS4yIDQuM0MzLjUgMjg1LjQtMiAyOTUuNCAuNyAzMDQuOXMxMi43IDE1LjEgMjIuMyAxMi40bDE1LjYtNC41YzcuNiAxMy42IDE4LjkgMjUgMzIuNiAzMi42TDY2LjcgMzYxYy0yLjcgOS42IDIuOCAxOS41IDEyLjQgMjIuM3MxOS41LTIuOCAyMi4zLTEyLjRsNC4zLTE1LjJjMS4yIC4xIDIuNCAuMiAzLjYgLjJjMTUuNiAuNSAzMC4zLTMuMyA0My0xMC4ybDkgOWM3IDcgMTguNCA3IDI1LjUgMHM3LTE4LjQgMC0yNS41bC03LjItNy4yYzkuMy0xMi42IDE1LjItMjcuOCAxNi4zLTQ0LjVsNy4xIDNjOS4xIDMuOSAxOS43LS4zIDIzLjYtOS41cy0uMy0xOS43LTkuNS0yMy42bC04LjYtMy43YzYuNC05LjkgMTcuMy0yMi40IDM2LjktMzMuM2wxLjMgNC40YzIuNyA5LjYgMTIuNyAxNS4xIDIyLjMgMTIuNHMxNS4xLTEyLjcgMTIuNC0yMi4zbC0yLjMtOC4xYzMuOC0xLjEgNy43LTIuMSAxMS45LTMuMWMxMS42LTIuNyAyMi4xLTcuNyAzMS4xLTE0LjRsNy4yIDcuMmM3IDcgMTguNCA3IDI1LjUgMHM3LTE4LjQgMC0yNS41bC05LTljNy42LTEzLjkgMTEuMy0zMC4xIDEwLjEtNDYuNmwxNS4yLTQuM2M5LjYtMi43IDE1LjEtMTIuNyAxMi40LTIyLjNTMzcwLjYgNjQgMzYxIDY2LjdsLTE1LjYgNC41Yy03LjctMTMuOS0xOS4xLTI1LjEtMzIuNi0zMi42bDQuNS0xNS42YzIuNy05LjYtMi44LTE5LjUtMTIuNC0yMi4zek0xMTIgMjcybC00OC0xLjUgMCAwYzExLjcgLjQgMjcuMyAuOSA0OCAxLjZ6bTE2LTgwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptNjQtNDhhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpNMzIyLjcgNDg5Yy0yLjcgOS42IDIuOCAxOS41IDEyLjQgMjIuM3MxOS41LTIuOCAyMi4yLTEyLjRsNC4zLTE1LjJjOC4zIC42IDE2LjggMCAyNS4yLTEuOWM3LjMtMS43IDE0LjMtMy41IDIxLjEtNS41bDUuNSAxMi43YzMuOSA5LjEgMTQuNSAxMy40IDIzLjYgOS41czEzLjQtMTQuNSA5LjUtMjMuNmwtNC40LTEwLjRjMTYuNi02LjcgMzEuNy0xNC40IDQ1LjQtMjIuOEw0OTMgNDUwYzUuNSA4LjMgMTYuNyAxMC41IDI1IDVzMTAuNS0xNi43IDUtMjVsLTYtOWMxMy43LTExIDI1LjUtMjIuOCAzNS44LTM0LjlsMTAgOGM3LjggNi4yIDE5LjEgNSAyNS4zLTIuOHM1LTE5LjEtMi44LTI1LjNMNTc0LjEgMzU3YzEuOC0yLjggMy41LTUuNyA1LjEtOC41YzYuNi0xMS40IDExLjgtMjIuNiAxNi0zM2w4IDMuMmM5LjIgMy43IDE5LjctLjggMjMuNC0xMHMtLjgtMTkuNy0xMC0yMy40bC0xMC40LTQuMmMuMi0uOCAuNC0xLjUgLjUtMi4zYzIuMi05LjMgMy40LTE3LjMgNC4xLTIzLjRjLjQtMy4xIC42LTUuNyAuOC03LjhjLjEtMS4xIC4xLTIgLjItMi44bC4xLTEuMSAwLS41IDAtLjIgMC0uMWMwIDAgMC0uMS0yOS4xLTFsLjEgMCAyOS4xIC45Yy4xLTMuMSAwLTYuMS0uMi05LjFsMTUuMi00LjNjOS42LTIuNyAxNS4xLTEyLjcgMTIuNC0yMi4zcy0xMi43LTE1LjEtMjIuMy0xMi40bC0xNS42IDQuNWMtNy42LTEzLjYtMTguOS0yNS0zMi42LTMyLjZsNC41LTE1LjZjMi43LTkuNi0yLjgtMTkuNS0xMi40LTIyLjNzLTE5LjUgMi44LTIyLjMgMTIuNGwtNC4zIDE1LjJjLTEuMi0uMS0yLjQtLjItMy42LS4yYy0xNS42LS41LTMwLjMgMy4zLTQzIDEwLjJsLTktOWMtNy03LTE4LjQtNy0yNS41IDBzLTcgMTguNCAwIDI1LjVsNy4yIDcuMmMtOS4zIDEyLjYtMTUuMiAyNy44LTE2LjMgNDQuNWwtNy4xLTNjLTkuMS0zLjktMTkuNyAuMy0yMy42IDkuNXMuMyAxOS43IDkuNSAyMy42bDguNiAzLjdjLTYuNCA5LjktMTcuMyAyMi40LTM2LjkgMzMuM2wtMS4zLTQuNGMtMi43LTkuNi0xMi43LTE1LjEtMjIuMy0xMi40cy0xNS4xIDEyLjctMTIuNCAyMi4zbDIuMyA4LjFjLTMuOCAxLjEtNy43IDIuMS0xMS45IDMuMWMtMTEuNiAyLjctMjIuMSA3LjctMzEuMSAxNC40bC03LjItNy4yYy03LTctMTguNC03LTI1LjUgMHMtNyAxOC40IDAgMjUuNWw5IDljLTcuNiAxMy45LTExLjMgMzAuMS0xMC4xIDQ2LjZsLTE1LjIgNC4zYy05LjYgMi43LTE1LjEgMTIuNy0xMi40IDIyLjJzMTIuNyAxNS4xIDIyLjMgMTIuNGwxNS42LTQuNWM3LjcgMTMuOSAxOS4xIDI1LjEgMzIuNiAzMi42TDMyMi43IDQ4OXpNNTc2IDI0MS41bDAgMGMtMTEuNy0uNC0yNy4zLS45LTQ4LTEuNmw0OCAxLjV6TTQ0OCAzODRhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjdGVyaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy4xIDMwLjZjMy42LTEyLjctMy43LTI2LTE2LjUtMjkuN3MtMjYgMy43LTI5LjcgMTYuNWwtNC4yIDE0LjdjLTkuOC0uNC0xOS45IC41LTI5LjkgMi44Yy0xMi4xIDIuOC0yMy43IDUuOS0zNC45IDkuNGwtNS45LTEzLjdjLTUuMi0xMi4yLTE5LjMtMTcuOC0zMS41LTEyLjZzLTE3LjggMTkuMy0xMi42IDMxLjVsNC45IDExLjNjLTIyIDkuNC00MiAyMC4xLTYwLjIgMzEuOEwxOTYgODIuN2MtNy40LTExLTIyLjMtMTQtMzMuMy02LjdzLTE0IDIyLjMtNi43IDMzLjNsNy44IDExLjZjLTE4IDE1LTMzLjcgMzAuOC00Ny4zIDQ3LjFMMTAzIDE1Ny4zYy0xMC40LTguMy0yNS41LTYuNi0zMy43IDMuN3MtNi42IDI1LjUgMy43IDMzLjdsMTUgMTJjLTIuMSAzLjItNC4xIDYuNS02IDkuN2MtOS40IDE1LjctMTcgMzEtMjMuMiA0NS4zbC05LjktMy45Yy0xMi4zLTQuOS0yNi4zIDEuMS0zMS4yIDEzLjRzMS4xIDI2LjMgMTMuNCAzMS4ybDExLjYgNC42Yy0uMyAxLjEtLjYgMi4xLS45IDMuMWMtMy41IDEyLjUtNS43IDIzLjItNy4xIDMxLjNjLS43IDQuMS0xLjIgNy41LTEuNiAxMC4zYy0uMiAxLjQtLjMgMi42LS40IDMuNmwtLjEgMS40LS4xIC42IDAgLjMgMCAuMWMwIDAgMCAuMSAzOS4yIDMuN2wwIDAtMzkuMi0zLjZjLS41IDUtLjYgMTAtLjQgMTQuOWwtMTQuNyA0LjJDNC43IDM4MC42LTIuNyAzOTMuOCAuOSA0MDYuNnMxNi45IDIwLjEgMjkuNyAxNi41bDEzLjgtMy45YzEwLjYgMjAuNyAyNy42IDM3LjggNDguNSA0OC41bC0zLjkgMTMuN2MtMy42IDEyLjcgMy43IDI2IDE2LjUgMjkuN3MyNi0zLjcgMjkuNy0xNi41bDQuMi0xNC43YzIzLjggMSA0Ni4zLTUuNSA2NS4xLTE3LjZMMjE1IDQ3M2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTEwLjYtMTAuNmM5LjEtMTQuMSAxNS4xLTMwLjUgMTctNDguM2wuMS0uOGMuMy0xLjcgMS01LjEgMi4zLTkuOGwuMi0uOCAxMi42IDUuNGMxMi4yIDUuMiAyNi4zLS40IDMxLjUtMTIuNnMtLjQtMjYuMy0xMi42LTMxLjVsLTExLjMtNC44YzkuOS0xNC45IDI0LjktMzEuNiA0OC42LTQ2bDIuMSA3LjVjMy42IDEyLjcgMTYuOSAyMC4xIDI5LjcgMTYuNXMyMC4xLTE2LjkgMTYuNS0yOS43TDM3MSAyNTkuMmM2LjktMi4yIDE0LjMtNC4zIDIyLjItNi4xYzEyLjktMyAyNC43LTggMzUuMi0xNC44TDQzOSAyNDljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0xMC42LTEwLjZjMTIuMi0xOSAxOC42LTQxLjYgMTcuNi02NS4xbDE0LjctNC4yYzEyLjctMy42IDIwLjEtMTYuOSAxNi41LTI5LjdzLTE2LjktMjAuMS0yOS43LTE2LjVsLTEzLjcgMy45Yy0xMC44LTIxLjItMjgtMzgtNDguNS00OC41bDMuOS0xMy44ek05Mi4xIDM2My4zbDAgMEwxNDQgMzY4bC01MS45LTQuN3pNMTEyIDMyMGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0yNDAgMTg0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFnU2hvcHBpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDExMmMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0djQ4SDE2MFYxMTJ6bS00OCA0OEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWNDE2YzAgNTMgNDMgOTYgOTYgOTZIMzUyYzUzIDAgOTYtNDMgOTYtOTZWMjA4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMzNlYxMTJDMzM2IDUwLjEgMjg1LjkgMCAyMjQgMFMxMTIgNTAuMSAxMTIgMTEydjQ4em0yNCA0OGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTE1MiAyNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWhhaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMxNC41IDAgMjcuMiA5LjcgMzAuOSAyMy44bDIzLjkgODkuNiA3NS45LTUzLjNjMTEuOS04LjMgMjcuOC03LjYgMzkgMS43czE0LjYgMjQuOSA4LjQgMzguMWwtMzkuMyA4NCA5Mi40IDhjMTQuNCAxLjIgMjYuMiAxMiAyOC44IDI2LjNzLTQuOSAyOC41LTE4IDM0LjZsLTg0LjEgMzkuMSA2NS43IDY1LjVjMTAuMyAxMC4yIDEyLjQgMjYuMSA1LjEgMzguN3MtMjIgMTguNy0zNiAxNC45TDM5MSAzODYuOGw4LjIgOTIuNGMxLjMgMTQuNC03LjMgMjcuOS0yMC45IDMyLjlzLTI4LjkgLjEtMzcuMi0xMS43bC01My4xLTc2LTUzLjEgNzZjLTguMyAxMS45LTIzLjYgMTYuNy0zNy4yIDExLjdzLTIyLjItMTguNS0yMC45LTMyLjlsOC4yLTkyLjRMOTUuNCA0MTAuOWMtMTQgMy44LTI4LjgtMi4zLTM2LTE0LjlzLTUuMi0yOC40IDUuMS0zOC43bDY1LjctNjUuNUw0NiAyNTIuN2MtMTMuMS02LjEtMjAuNS0yMC4zLTE4LTM0LjZzMTQuMy0yNS4xIDI4LjgtMjYuM2w5Mi40LTgtMzkuMy04NGMtNi4xLTEzLjEtMi43LTI4LjggOC40LTM4LjFzMjcuMS0xMCAzOS0xLjdsNzUuOSA1My4zIDIzLjktODkuNkMyNjAuOCA5LjcgMjczLjUgMCAyODggMHptMCAxNTYuMmwtNC44IDE4Yy0yLjcgMTAuMS0xMC4yIDE4LjItMjAgMjEuOHMtMjAuOCAyLjEtMjkuMy0zLjlsLTE1LjItMTAuNyA3LjkgMTYuOGM0LjQgOS41IDQgMjAuNS0xLjMgMjkuNnMtMTQuNSAxNS0yNSAxNS45bC0xOC41IDEuNiAxNi44IDcuOGM5LjUgNC40IDE2LjIgMTMuMiAxOCAyMy41cy0xLjUgMjAuOC04LjkgMjguMmwtMTMuMiAxMy4xIDE3LjktNC44YzEwLjEtMi43IDIwLjktLjMgMjguOSA2LjRzMTIuMiAxNi45IDExLjMgMjcuM2wtMS42IDE4LjUgMTAuNi0xNS4yYzYtOC42IDE1LjgtMTMuNyAyNi4yLTEzLjdzMjAuMiA1LjEgMjYuMiAxMy43bDEwLjYgMTUuMi0xLjYtMTguNWMtLjktMTAuNCAzLjMtMjAuNiAxMS4zLTI3LjNzMTguOC05LjEgMjguOS02LjRsMTcuOSA0LjgtMTMuMi0xMy4xYy03LjQtNy40LTEwLjctMTcuOS04LjktMjguMnM4LjUtMTkuMSAxOC0yMy41bDE2LjgtNy44LTE4LjUtMS42Yy0xMC40LS45LTE5LjctNi44LTI1LTE1LjlzLTUuNy0yMC4xLTEuMy0yOS42bDcuOS0xNi44LTE1LjIgMTAuN2MtOC42IDYtMTkuNSA3LjUtMjkuMyAzLjlzLTE3LjMtMTEuNy0yMC0yMS44bC00LjgtMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhaHRTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY2NEgzNy42QzE2LjggNjQgMCA4MC44IDAgMTAxLjZWMjI0djQxLjdWMjg4IDQwNi4zYzAgMjMgMTguNyA0MS43IDQxLjcgNDEuN0gxMTJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDhoMzJjNjEuOSAwIDExMi01MC4xIDExMi0xMTJjMC00MC4xLTIxLjEtNzUuMy01Mi43LTk1LjFDMjgwLjMgMjIyLjYgMjg4IDIwMC4yIDI4OCAxNzZjMC02MS45LTUwLjEtMTEyLTExMi0xMTJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTExMiAxMjh2OTZINjRWMTI4aDQ4em02NCA5NlYxMjhjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDh6bS02NCA2NHY5Nkg2NFYyODhoNDh6bTY0IDk2VjI4OGgzMmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhblNtb2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTkuNSAxNDQuOEwxNzguNyAyMjRsOTYgOTYgOTIuNSA5Mi41QzMzNS45IDQzNC45IDI5Ny41IDQ0OCAyNTYgNDQ4QzE1MCA0NDggNjQgMzYyIDY0IDI1NmMwLTQxLjUgMTMuMS03OS45IDM1LjUtMTExLjJ6TTMzMy4zIDI4OGwtMzItMzJIMzg0djMySDMzMy4zem0zMiAzMkg0MDBjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIMjY5LjNMMTQ0LjggOTkuNUMxNzYuMSA3Ny4xIDIxNC41IDY0IDI1NiA2NGMxMDYgMCAxOTIgODYgMTkyIDE5MmMwIDQxLjUtMTMuMSA3OS45LTM1LjUgMTExLjJMMzY1LjMgMzIwek0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjcyIDk2Yy04LjggMC0xNiA3LjItMTYgMTZjMCAyNi41IDIxLjUgNDggNDggNDhoMzJjOC44IDAgMTYgNy4yIDE2IDE2czcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzA0Yy04LjggMC0xNi03LjItMTYtMTZzLTcuMi0xNi0xNi0xNnpNMjI5LjUgMzIwbC05Ni05NkgxMTJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZIMjI5LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjcuMiA0MTIuNUw5OS41IDE0NC44Qzc3LjEgMTc2LjEgNjQgMjE0LjUgNjQgMjU2YzAgMTA2IDg2IDE5MiAxOTIgMTkyYzQxLjUgMCA3OS45LTEzLjEgMTExLjItMzUuNXptNDUuMy00NS4zQzQzNC45IDMzNS45IDQ0OCAyOTcuNSA0NDggMjU2YzAtMTA2LTg2LTE5Mi0xOTItMTkyYy00MS41IDAtNzkuOSAxMy4xLTExMS4yIDM1LjVMNDEyLjUgMzY3LjJ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFuZGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgNDE2aDk2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NEg0ODBWNDE2ek00NDggOTZIMTkyVjQxNkg0NDhWOTZ6TTY0IDk2QzI4LjcgOTYgMCAxMjQuNyAwIDE2MFYzNTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTZWOTZINjR6TTI0OCAyMDhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTIwLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMjQ4IDMwNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xMjAtMjRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYW5nbGFkZXNoaVRha2FTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2IDMyLjJDMTguNCAzMC4xIDIuNCA0Mi41IC4yIDYwUzEwLjUgOTMuNiAyOCA5NS44bDcuOSAxYzE2IDIgMjggMTUuNiAyOCAzMS44VjE2MEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NFYzODRjMCA1MyA0MyA5NiA5NiA5NmgzMmMxMDYgMCAxOTItODYgMTkyLTE5MlYyNTZjMC01My00My05Ni05Ni05NkgyNzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2MzJjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMjRoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTI4VjEyOC41YzAtNDguNC0zNi4xLTg5LjMtODQuMS05NS4zbC03LjktMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFyY29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCAzMkMxMC43IDMyIDAgNDIuNyAwIDU2VjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNEg0MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyNHptODggMGMtOC44IDAtMTYgNy4yLTE2IDE2VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjQ4YzAtOC44LTcuMi0xNi0xNi0xNnptNzIgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRWNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDE4NHptOTYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRWNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDI4MHpNNDQ4IDU2VjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEg0NzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0em0tNjQtOFY0NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY0OGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFyc1Byb2dyZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxNjBIMzIwVjEyOEg0NDh2MzJ6TTQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEydjY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQ2NGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTQ0OCAzNTJ2MzJIMTkyVjM1Mkg0NDh6TTQ4IDI4OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NjRjMCAyNi41IDIxLjUgNDggNDggNDhINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMzNmMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFyc1N0YWdnZXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNzguMyAxNC4zIDY0IDMyIDY0SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDEyOCAwIDExMy43IDAgOTZ6TTY0IDI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00NDggNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNzguMyAxNC4zIDY0IDMyIDY0SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDEyOCAwIDExMy43IDAgOTZ6TTAgMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ0OCA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXNlYmFsbEJhdEJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0IDBjLTEyLjQgMC0yNC4yIDQuOS0zMyAxMy43TDIzMy41IDE3MS4yYy0xMC41IDEwLjUtMTkuOCAyMi4xLTI3LjcgMzQuNkwxMzIuNyAzMjEuNmMtNy4zIDExLjUtMTUuOCAyMi4yLTI1LjUgMzEuOUw2OS45IDM5MC43bDUxLjMgNTEuMyAzNy4zLTM3LjNjOS42LTkuNiAyMC4zLTE4LjIgMzEuOS0yNS41bDExNS44LTczLjFjMTIuNS03LjkgMjQuMS0xNy4yIDM0LjYtMjcuN0w0OTguMyAxMjFjOC43LTguNyAxMy43LTIwLjYgMTMuNy0zM3MtNC45LTI0LjItMTMuNy0zM0w0NTcgMTMuN0M0NDguMiA0LjkgNDM2LjQgMCA0MjQgMHptODggNDMyYTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHpNMTUgMzk5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw2NCA2NGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMNDkgMzk5Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFzZWJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIuNyAyMjMuNGMtNC44IC40LTkuNyAuNi0xNC43IC42Yy0xNS42IDAtMzAuOC0yLTQ1LjItNS45QzE5LjIgMTA3LjEgMTA3LjEgMTkuMiAyMTguMSAyLjhDMjIyIDE3LjIgMjI0IDMyLjQgMjI0IDQ4YzAgNC45LS4yIDkuOC0uNiAxNC43Yy0uNyA4LjggNS44IDE2LjUgMTQuNiAxNy4zczE2LjUtNS44IDE3LjMtMTQuNmMuNS01LjcgLjctMTEuNSAuNy0xNy4zYzAtMTYuNS0xLjktMzIuNi01LjYtNDcuOWMxLjggMCAzLjctLjEgNS42LS4xQzM5Ny40IDAgNTEyIDExNC42IDUxMiAyNTZjMCAxLjkgMCAzLjctLjEgNS42Yy0xNS40LTMuNi0zMS40LTUuNi00Ny45LTUuNmMtNS44IDAtMTEuNiAuMi0xNy4zIC43Yy04LjggLjctMTUuNCA4LjUtMTQuNiAxNy4zczguNSAxNS40IDE3LjMgMTQuNmM0LjgtLjQgOS43LS42IDE0LjctLjZjMTUuNiAwIDMwLjggMiA0NS4yIDUuOUM0OTIuOCA0MDQuOSA0MDQuOSA0OTIuOCAyOTMuOSA1MDkuMkMyOTAgNDk0LjggMjg4IDQ3OS42IDI4OCA0NjRjMC00LjkgLjItOS44IC42LTE0LjdjLjctOC44LTUuOC0xNi41LTE0LjYtMTcuM3MtMTYuNSA1LjgtMTcuMyAxNC42Yy0uNSA1LjctLjcgMTEuNS0uNyAxNy4zYzAgMTYuNSAxLjkgMzIuNiA1LjYgNDcuOWMtMS44IDAtMy43IC4xLTUuNiAuMUMxMTQuNiA1MTIgMCAzOTcuNCAwIDI1NmMwLTEuOSAwLTMuNyAuMS01LjZDMTUuNCAyNTQuMSAzMS41IDI1NiA0OCAyNTZjNS44IDAgMTEuNi0uMiAxNy4zLS43YzguOC0uNyAxNS40LTguNSAxNC42LTE3LjNzLTguNS0xNS40LTE3LjMtMTQuNnpNMTIxLjMgMjA4Yy04IDMuNy0xMS42IDEzLjItNy45IDIxLjJzMTMuMiAxMS42IDIxLjIgNy45YzQ1LjItMjAuOCA4MS43LTU3LjIgMTAyLjUtMTAyLjVjMy43LTggLjItMTcuNS03LjktMjEuMnMtMTcuNS0uMi0yMS4yIDcuOWMtMTcuNiAzOC4zLTQ4LjUgNjkuMi04Ni43IDg2Ljd6bTI3Ny4yIDc0LjdjLTMuNy04LTEzLjItMTEuNi0yMS4yLTcuOWMtNDUuMiAyMC44LTgxLjcgNTcuMi0xMDIuNSAxMDIuNWMtMy43IDgtLjIgMTcuNSA3LjkgMjEuMnMxNy41IC4yIDIxLjItNy45YzE3LjYtMzguMyA0OC41LTY5LjIgODYuNy04Ni43YzgtMy43IDExLjYtMTMuMiA3LjktMjEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFza2V0U2hvcHBpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUzLjMgMzUuMWM2LjEtMTEuOCAxLjUtMjYuMy0xMC4yLTMyLjRzLTI2LjMtMS41LTMyLjQgMTAuMkwxMTcuNiAxOTJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJMODMuOSA0NjMuNUM5MSA0OTIgMTE2LjYgNTEyIDE0NiA1MTJINDMwYzI5LjQgMCA1NS0yMCA2Mi4xLTQ4LjVMNTQ0IDI1NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NTguNEwzNjUuMyAxMi45QzM1OS4yIDEuMiAzNDQuNy0zLjQgMzMyLjkgMi43cy0xNi4zIDIwLjYtMTAuMiAzMi40TDQwNC4zIDE5MkgxNzEuN0wyNTMuMyAzNS4xek0xOTIgMzA0djk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMwNGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2em05Ni0xNmM4LjggMCAxNiA3LjIgMTYgMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzA0YzAtOC44IDcuMi0xNiAxNi0xNnptMTI4IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMwNGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXNrZXRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg2LjYgNjRsODUuMiA4NS4yQzE5NC41IDEyMS43IDIwOCA4Ni40IDIwOCA0OGMwLTE0LjctMi0yOC45LTUuNy00Mi40QzE1OC42IDE1IDExOSAzNS41IDg2LjYgNjR6TTY0IDg2LjZDMzUuNSAxMTkgMTUgMTU4LjYgNS42IDIwMi4zQzE5LjEgMjA2IDMzLjMgMjA4IDQ4IDIwOGMzOC40IDAgNzMuNy0xMy41IDEwMS4zLTM2LjFMNjQgODYuNnpNMjU2IDBjLTcuMyAwLTE0LjYgLjMtMjEuOCAuOUMyMzggMTYgMjQwIDMxLjggMjQwIDQ4YzAgNDcuMy0xNy4xIDkwLjUtNDUuNCAxMjRMMjU2IDIzMy40IDQyNS40IDY0QzM4MC4yIDI0LjIgMzIwLjkgMCAyNTYgMHpNNDggMjQwYy0xNi4yIDAtMzItMi00Ny4xLTUuOEMuMyAyNDEuNCAwIDI0OC43IDAgMjU2YzAgNjQuOSAyNC4yIDEyNC4yIDY0IDE2OS40TDIzMy40IDI1NiAxNzIgMTk0LjZDMTM4LjUgMjIyLjkgOTUuMyAyNDAgNDggMjQwem00NjMuMSAzNy44Yy42LTcuMiAuOS0xNC41IC45LTIxLjhjMC02NC45LTI0LjItMTI0LjItNjQtMTY5LjRMMjc4LjYgMjU2IDM0MCAzMTcuNGMzMy40LTI4LjMgNzYuNy00NS40IDEyNC00NS40YzE2LjIgMCAzMiAyIDQ3LjEgNS44em0tNC43IDMxLjlDNDkyLjkgMzA2IDQ3OC43IDMwNCA0NjQgMzA0Yy0zOC40IDAtNzMuNyAxMy41LTEwMS4zIDM2LjFMNDQ4IDQyNS40YzI4LjUtMzIuMyA0OS4xLTcxLjkgNTguNC0xMTUuN3pNMzQwLjEgMzYyLjdDMzE3LjUgMzkwLjMgMzA0IDQyNS42IDMwNCA0NjRjMCAxNC43IDIgMjguOSA1LjcgNDIuNEMzNTMuNCA0OTcgMzkzIDQ3Ni41IDQyNS40IDQ0OGwtODUuMi04NS4yek0zMTcuNCAzNDBMMjU2IDI3OC42IDg2LjYgNDQ4YzQ1LjEgMzkuOCAxMDQuNCA2NCAxNjkuNCA2NGM3LjMgMCAxNC42LS4zIDIxLjgtLjlDMjc0IDQ5NiAyNzIgNDgwLjIgMjcyIDQ2NGMwLTQ3LjMgMTcuMS05MC41IDQ1LjQtMTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDc3LjNjMC03LjMgNS45LTEzLjMgMTMuMy0xMy4zYzMuNSAwIDYuOSAxLjQgOS40IDMuOWwxNC45IDE0LjlDMTMwIDkxLjggMTI4IDEwMS43IDEyOCAxMTJjMCAxOS45IDcuMiAzOCAxOS4yIDUyYy01LjMgOS4yLTQgMjEuMSAzLjggMjljOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMjg5IDg5YzkuNC05LjQgOS40LTI0LjYgMC0zMy45Yy03LjktNy45LTE5LjgtOS4xLTI5LTMuOEMyNDYgMzkuMiAyMjcuOSAzMiAyMDggMzJjLTEwLjMgMC0yMC4yIDItMjkuMiA1LjVMMTYzLjkgMjIuNkMxNDkuNCA4LjEgMTI5LjcgMCAxMDkuMyAwQzY2LjYgMCAzMiAzNC42IDMyIDc3LjNWMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg5NlY3Ny4zek0zMiAzNTJ2MTZjMCAyOC40IDEyLjQgNTQgMzIgNzEuNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NjRIMzg0djE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDM5LjZjMTkuNi0xNy42IDMyLTQzLjEgMzItNzEuNlYzNTJIMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAxNjBjLTguOCAwLTE2IDcuMi0xNiAxNlYzMzZjMCA4LjggNy4yIDE2IDE2IDE2SDQ2NGM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkg4MHpNMCAxNzZjMC00NC4yIDM1LjgtODAgODAtODBINDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwdjE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMydjE2YzAgNDQuMi0zNS44IDgwLTgwIDgwSDgwYy00NC4yIDAtODAtMzUuOC04MC04MFYxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxNjBjOC44IDAgMTYgNy4yIDE2IDE2VjMzNmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NHpNODAgOTZDMzUuOCA5NiAwIDEzMS44IDAgMTc2VjMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0NjRjNDQuMiAwIDgwLTM1LjggODAtODBWMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMlYxNzZjMC00NC4yLTM1LjgtODAtODAtODBIODB6bTM2OCA5Nkg5NlYzMjBINDQ4VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeUhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDE2MGM4LjggMCAxNiA3LjIgMTYgMTZWMzM2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZINDY0ek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZWMzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwSDQ2NGM0NC4yIDAgODAtMzUuOCA4MC04MFYzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE3NmMwLTQ0LjItMzUuOC04MC04MC04MEg4MHptMjA4IDk2SDk2VjMyMEgyODhWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0ZXJ5UXVhcnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMTYwYzguOCAwIDE2IDcuMiAxNiAxNlYzMzZjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNkg0NjR6TTgwIDk2QzM1LjggOTYgMCAxMzEuOCAwIDE3NlYzMzZjMCA0NC4yIDM1LjggODAgODAgODBINDY0YzQ0LjIgMCA4MC0zNS44IDgwLTgwVjMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJWMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwSDgwem0xMTIgOTZIOTZWMzIwaDk2VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeVRocmVlUXVhcnRlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDE2MGM4LjggMCAxNiA3LjIgMTYgMTZWMzM2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZINDY0ek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZWMzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwSDQ2NGM0NC4yIDAgODAtMzUuOCA4MC04MFYzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE3NmMwLTQ0LjItMzUuOC04MC04MC04MEg4MHptMjcyIDk2SDk2VjMyMEgzNTJWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWRQdWxzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODMuMiA5LjZMNTI0IDY0aDkyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDUxMmMtNy42IDAtMTQuNy0zLjYtMTkuMi05LjZMNDY4LjcgNzAuM2wtNDcgOTkuOWMtMy43IDcuOC0xMS4zIDEzLjEtMTkuOSAxMy43cy0xNi45LTMuNC0yMS43LTEwLjZMMzM5LjIgMTEySDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNEgzNTJjOCAwIDE1LjUgNCAyMCAxMC43bDI0LjQgMzYuNiA0NS45LTk3LjVDNDQ1LjkgNi4yIDQ1My4yIDEgNDYxLjYgLjFzMTYuNiAyLjcgMjEuNiA5LjV6TTMyMCAxNjBoMTIuN2wyMC43IDMxLjFjMTEuMiAxNi44IDMwLjYgMjYuMyA1MC43IDI0LjhzMzcuOS0xMy43IDQ2LjUtMzJMNDYxLjkgMTYwSDU0NGM1MyAwIDk2IDQzIDk2IDk2VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMzUyIDMyMCA2NHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NHMzMiAxNC4zIDMyIDMyVjM1MkgyODhWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tMTQ0IDBhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzMjBIMjg4VjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NDRjNTMgMCA5NiA0MyA5NiA5NlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDE2SDM1MiAzMjAgNjR2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6bTE0NCA5NmE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVlck11Z0VtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlY5Nmg1MS4yYzQyLjQgMCA3Ni44IDM0LjQgNzYuOCA3Ni44VjI3NC45YzAgMzAuNC0xNy45IDU3LjktNDUuNiA3MC4yTDM4NCAzODEuN1Y0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0zODQgMzExLjZsNTYuNC0yNS4xYzQuNi0yLjEgNy42LTYuNiA3LjYtMTEuN1YxNzIuOGMwLTcuMS01LjctMTIuOC0xMi44LTEyLjhIMzg0VjMxMS42ek0xNjAgMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjM2OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjE0NHptNjQgMGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlYzNjhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxNDR6bTY0IDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzY4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWxsQ29uY2llcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNiA2NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGgxNnYzMy4zQzExOS42IDE1Ny4yIDMyIDI1Mi40IDMyIDM2OEg0ODBjMC0xMTUuNi04Ny42LTIxMC44LTIwMC0yMjIuN1YxMTJoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjU2IDIxNnpNMjQgNDAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDQ4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVsbFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTkwLjItNzAuN2MuMi0uNCAuNC0uOSAuNi0xLjNjNS4yLTExLjUgMy4xLTI1LTUuMy0zNC40bC03LjQtOC4zQzQ5Ny4zIDMxOS4yIDQ4MCAyNzMuOSA0ODAgMjI2LjhWMjA4YzAtNzcuNC01NS0xNDItMTI4LTE1Ni44VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjUxLjJjLTQyLjYgOC42LTc5IDM0LjItMTAyIDY5LjNMMzguOCA1LjF6TTQwNi4yIDQxNkwxNjAgMjIyLjF2NC44YzAgNDctMTcuMyA5Mi40LTQ4LjUgMTI3LjZsLTcuNCA4LjNjLTguNCA5LjQtMTAuNCAyMi45LTUuMyAzNC40UzExNS40IDQxNiAxMjggNDE2SDQwNi4yem0tNDAuOSA3Ny4zYzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNIMzIwIDI1NmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM3MyOC4zIDE4LjcgNDUuMyAxOC43czMzLjMtNi43IDQ1LjMtMTguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNTEuMkMxMTkgNjYgNjQgMTMwLjYgNjQgMjA4djE4LjhjMCA0Ny0xNy4zIDkyLjQtNDguNSAxMjcuNmwtNy40IDguM2MtOC40IDkuNC0xMC40IDIyLjktNS4zIDM0LjRTMTkuNCA0MTYgMzIgNDE2SDQxNmMxMi42IDAgMjQtNy40IDI5LjItMTguOXMzLjEtMjUtNS4zLTM0LjRsLTcuNC04LjNDNDAxLjMgMzE5LjIgMzg0IDI3My45IDM4NCAyMjYuOFYyMDhjMC03Ny40LTU1LTE0Mi0xMjgtMTU2LjhWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6bTQ1LjMgNDkzLjNjMTItMTIgMTguNy0yOC4zIDE4LjctNDUuM0gyMjQgMTYwYzAgMTcgNi43IDMzLjMgMTguNyA0NS4zczI4LjMgMTguNyA0NS4zIDE4LjdzMzMuMy02LjcgNDUuMy0xOC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZXppZXJDdXJ2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTYgMTM2Vjg4aDQ4djQ4SDI5NnpNMjg4IDMyYy0yNi41IDAtNDggMjEuNS00OCA0OHY0SDEyMS42QzExMS4yIDYyLjcgODkuMyA0OCA2NCA0OEMyOC43IDQ4IDAgNzYuNyAwIDExMnMyOC43IDY0IDY0IDY0YzI1LjMgMCA0Ny4yLTE0LjcgNTcuNi0zNmg2Ni45Yy01OC45IDM5LjYtOTguOSAxMDUtMTA0IDE4MEg4MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NjRjMCAyNi41IDIxLjUgNDggNDggNDhoNjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzY4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4aC0zLjNjNS45LTY3IDQ4LjUtMTIzLjQgMTA3LjUtMTQ5LjFjOC42IDEyLjcgMjMuMiAyMS4xIDM5LjggMjEuMWg2NGMxNi42IDAgMzEuMS04LjQgMzkuOC0yMS4xYzU5IDI1LjcgMTAxLjYgODIuMSAxMDcuNSAxNDkuMUg0OTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM2OGMwLTI2LjUtMjEuNS00OC00OC00OGgtNC41Yy01LTc1LTQ1LjEtMTQwLjQtMTA0LTE4MGg2Ni45YzEwLjQgMjEuMyAzMi4zIDM2IDU3LjYgMzZjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRjLTI1LjMgMC00Ny4yIDE0LjctNTcuNiAzNkg0MDBWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjg4ek04OCAzNzZoNDh2NDhIODhWMzc2em00MTYgNDhWMzc2aDQ4djQ4SDUwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmljeWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTIgMzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMjUuN2wzNC42IDY0SDIyMi45bC0yNy40LTM4QzE5MSA5OS43IDE4My43IDk2IDE3NiA5NkgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNDMuN2wyMi4xIDMwLjctMjYuNiA1My4xYy0xMC0yLjUtMjAuNS0zLjgtMzEuMi0zLjhDNTcuMyAyMjQgMCAyODEuMyAwIDM1MnM1Ny4zIDEyOCAxMjggMTI4YzY1LjMgMCAxMTkuMS00OC45IDEyNy0xMTJoNDljOC41IDAgMTYuMy00LjUgMjAuNy0xMS44bDg0LjgtMTQzLjUgMjEuNyA0MC4xQzQwMi40IDI3Ni4zIDM4NCAzMTIgMzg0IDM1MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4cy01Ny4zLTEyOC0xMjgtMTI4Yy0xMy41IDAtMjYuNSAyLjEtMzguNyA2TDM3NS40IDQ4LjhDMzY5LjggMzguNCAzNTkgMzIgMzQ3LjIgMzJIMzEyek00NTguNiAzMDMuN2wzMi4zIDU5LjdjNi4zIDExLjcgMjAuOSAxNiAzMi41IDkuN3MxNi0yMC45IDkuNy0zMi41bC0zMi4zLTU5LjdjMy42LS42IDcuNC0uOSAxMS4yLS45YzM5LjggMCA3MiAzMi4yIDcyIDcycy0zMi4yIDcyLTcyIDcycy03Mi0zMi4yLTcyLTcyYzAtMTguNiA3LTM1LjUgMTguNi00OC4zek0xMzMuMiAzNjhoNjVjLTcuMyAzMi4xLTM2IDU2LTcwLjIgNTZjLTM5LjggMC03Mi0zMi4yLTcyLTcyczMyLjItNzIgNzItNzJjMS43IDAgMy40IC4xIDUuMSAuMmwtMjQuMiA0OC41Yy05IDE4LjEgNC4xIDM5LjQgMjQuMyAzOS40em0zMy43LTQ4bDUwLjctMTAxLjMgNzIuOSAxMDEuMi0uMSAuMUgxNjYuOHptOTAuNi0xMjhIMzY1LjlMMzE3IDI3NC44IDI1Ny40IDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlub2N1bGFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTZIOTZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTY0IDk2VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg4LjljMC0zNC42IDkuNC02OC42IDI3LjItOTguM0M0MC45IDI2Ny44IDQ5LjcgMjQyLjQgNTMgMjE2TDYwLjUgMTU2YzItMTYgMTUuNi0yOCAzMS44LTI4SDE5MnptMjI3LjggMGMxNi4xIDAgMjkuOCAxMiAzMS44IDI4TDQ1OSAyMTZjMy4zIDI2LjQgMTIuMSA1MS44IDI1LjggNzQuNmMxNy44IDI5LjcgMjcuMiA2My43IDI3LjIgOTguM1Y0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxMjhoOTkuOHpNMzIwIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2SDMyMFY2NHptLTMyIDY0VjI4OEgyMjRWMTI4aDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaW9oYXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTczLjIgMGMtMS44IDAtMy41IC43LTQuOCAyQzEzOC41IDMyLjMgMTIwIDc0IDEyMCAxMjBjMCAyNi4yIDYgNTAuOSAxNi42IDczYy0yMiAyLjQtNDMuOCA5LjEtNjQuMiAyMC41QzM3LjkgMjMyLjggMTMuMyAyNjIuNCAuNCAyOTZjLS43IDEuNy0uNSAzLjcgLjUgNS4yYzIuMiAzLjcgNy40IDQuMyAxMC42IDEuM0M2NC4yIDI1NC4zIDE1OCAyNDUuMSAyMDUgMzI0cy04LjEgMTUzLjEtNzcuNiAxNzMuMmMtNC4yIDEuMi02LjMgNS45LTQuMSA5LjZjMSAxLjYgMi42IDIuNyA0LjUgM2MzNi41IDUuOSA3NS4yIC4xIDEwOS43LTE5LjJjMjAuNC0xMS40IDM3LjQtMjYuNSA1MC41LTQzLjhjMTMuMSAxNy4zIDMwLjEgMzIuNCA1MC41IDQzLjhjMzQuNSAxOS4zIDczLjMgMjUuMiAxMDkuNyAxOS4yYzEuOS0uMyAzLjUtMS40IDQuNS0zYzIuMi0zLjcgLjEtOC40LTQuMS05LjZDMzc5LjEgNDc3LjEgMzI0IDQwMyAzNzEgMzI0czE0MC43LTY5LjggMTkzLjUtMjEuNGMzLjIgMi45IDguNCAyLjMgMTAuNi0xLjNjMS0xLjYgMS4xLTMuNSAuNS01LjJjLTEyLjktMzMuNi0zNy41LTYzLjItNzIuMS04Mi41Yy0yMC40LTExLjQtNDIuMi0xOC4xLTY0LjItMjAuNUM0NTAgMTcwLjkgNDU2IDE0Ni4yIDQ1NiAxMjBjMC00Ni0xOC41LTg3LjctNDguNC0xMThjLTEuMy0xLjMtMy0yLTQuOC0yYy01IDAtOC40IDUuMi02LjcgOS45QzQyMS43IDgwLjUgMzg1LjYgMTc2IDI4OCAxNzZTMTU0LjMgODAuNSAxNzkuOSA5LjljMS43LTQuNy0xLjYtOS45LTYuNy05Ljl6TTI0MCAyNzJhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMTgxLjcgNDE3LjZjNi4zLTExLjggOS44LTI1LjEgOC42LTM5LjhjLTE5LjUtMTgtMzQtNDEuNC00MS4yLTY3LjhjLTEyLjUtOC4xLTI2LjItMTEuOC00MC0xMi40Yy05LS40LTE4LjEgLjYtMjcuMSAyLjdjNy44IDU3LjEgMzguNyAxMDYuOCA4Mi45IDEzOS40YzYuOC02LjcgMTIuNi0xNC4xIDE2LjgtMjIuMXpNMjg4IDY0Yy0yOC44IDAtNTYuMyA1LjktODEuMiAxNi41YzIgOC4zIDUgMTYuMiA5IDIzLjVjNi44IDEyLjQgMTYuNyAyMy4xIDMwLjEgMzAuM2MxMy4zLTQuMSAyNy41LTYuMyA0Mi4yLTYuM3MyOC44IDIuMiA0Mi4yIDYuM2MxMy40LTcuMiAyMy4zLTE3LjkgMzAuMS0zMC4zYzQtNy4zIDctMTUuMiA5LTIzLjVDMzQ0LjMgNjkuOSAzMTYuOCA2NCAyODggNjR6TTQyNi45IDMxMGMtNy4yIDI2LjQtMjEuNyA0OS43LTQxLjIgNjcuOGMtMS4yIDE0LjcgMi4yIDI4LjEgOC42IDM5LjhjNC4zIDggMTAgMTUuNCAxNi44IDIyLjFjNDQuMy0zMi42IDc1LjItODIuMyA4Mi45LTEzOS40Yy05LTIuMi0xOC4xLTMuMS0yNy4xLTIuN2MtMTMuOCAuNi0yNy41IDQuNC00MCAxMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaXRjb2luU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAzMkM0OCAxNC4zIDYyLjMgMCA4MCAwczMyIDE0LjMgMzIgMzJWNjRoMzJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY2NGMwIDEuNS0uMSAzLjEtLjMgNC41QzI1NC4xIDgyLjIgMjg4IDEyNS4xIDI4OCAxNzZjMCAyNC4yLTcuNyA0Ni42LTIwLjcgNjQuOWMzMS43IDE5LjggNTIuNyA1NSA1Mi43IDk1LjFjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDExMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhINDEuN0MxOC43IDQ0OCAwIDQyOS4zIDAgNDA2LjNWMjg4IDI2NS43IDIyNCAxMDEuNkMwIDgwLjggMTYuOCA2NCAzNy42IDY0SDQ4VjMyek02NCAyMjRIMTc2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4SDY0djk2em0xMTIgNjRINjR2OTZIMjA4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4SDE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxlbmRlclBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAzNTJMMTk2LjggNTIuM0MxOTQuMiAyNC4yIDIxNi4zIDAgMjQ0LjYgMEg1MzQuMWMyMS4xIDAgMzYuNCAyMC4xIDMwLjkgNDAuNEw1NTguNSA2NEg0MDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINTQ5LjhsLTE3LjUgNjRINDAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDUyMy42bC0xNy41IDY0SDQwMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg5Ny41TDQ4MCAzNTJIMjI0em0tMTYgMzJINDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDIwOGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em0xNDQgOTZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0xNDcuNSAzMC43YzEwLjggNi43IDE1LjMgMjEgMTAuNiAzMy40bC0yMiA1Ny44Yy00LjIgMTAuOS0xNC41IDE3LjYtMjUuMyAxNi40bC0zMy4zLTMuNmMtMTMuNiA0Mi4yLTEzLjYgODguNCAwIDEzMC43bDMzLjMtMy42YzEwLjktMS4yIDIxLjIgNS41IDI1LjMgMTYuNGwyMiA1Ny44YzQuNyAxMi40IC4yIDI2LjctMTAuNiAzMy40bC00NCAyNy4yYy05LjcgNi0yMS45IDQuMi0yOS44LTQuM0MtMjQuNiAyODYtMjQuNiAxMTQgNzMuNyA3LjhDODEuNi0uNyA5My44LTIuNSAxMDMuNSAzLjVsNDQgMjcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMGg2NCAzMkg0NzAuMWMyMS4xIDAgMzYuNCAyMC4xIDMwLjkgNDAuNEw0OTQuNSA2NEgzMzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINDg1LjhsLTE3LjUgNjRIMzM2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDQ1OS42bC0xNy41IDY0SDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg5Ny41TDQxNiAzNTJIMTYwbC04LjctOTZINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0xNDUuNSAxOTJMMTMzLjggNjRINjRWMTkyaDgxLjV6TTE0NCAzODRINDMyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4djMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDE0NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em0xNDQgOTZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmMxMjMuNyAwIDIyNCAxMDAuMyAyMjQgMjI0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJDNTEyIDEyOC45IDM4My4xIDAgMjI0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem0wIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyYzcwLjcgMCAxMjggNTcuMyAxMjggMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0xMDYtODYtMTkyLTE5Mi0xOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek05NiAxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhTMCAxMTcuNSAwIDE0NFYzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NHMtNjQuNS0xNDQtMTQ0LTE0NEgxMjh2OTZoMTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhWMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIODAgOTYgMjI0YzcwLjcgMCAxMjggNTcuMyAxMjggMTI4YzAgMzEuMy0xMS4zIDYwLjEtMzAgODIuM2MzNy4xIDIyLjQgNjIgNjMuMSA2MiAxMDkuN2MwIDcwLjctNTcuMyAxMjgtMTI4IDEyOEg5NiA4MCAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0OFYyNTYgOTZIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMjI0IDIyNGMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NEgxMTJWMjI0SDIyNHpNMTEyIDI4OFY0MTZIMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0SDIyNCAxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbHRMaWdodG5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZMMjguNSAyOGMyLTE2IDE1LjYtMjggMzEuOC0yOEgyMjguOWMxNSAwIDI3LjEgMTIuMSAyNy4xIDI3LjFjMCAzLjItLjYgNi41LTEuNyA5LjVMMjA4IDE2MEgzNDcuM2MyMC4yIDAgMzYuNyAxNi40IDM2LjcgMzYuN2MwIDcuNC0yLjIgMTQuNi02LjQgMjAuN2wtMTkyLjIgMjgxYy01LjkgOC42LTE1LjYgMTMuNy0yNS45IDEzLjdoLTIuOWMtMTUuNyAwLTI4LjUtMTIuOC0yOC41LTI4LjVjMC0yLjMgLjMtNC42IC45LTYuOUwxNzYgMjg4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDkuNCA0NC42YzUuOS0xMy43IDEuNS0yOS43LTEwLjYtMzguNXMtMjguNi04LTM5LjkgMS44bC0yNTYgMjI0Yy0xMCA4LjgtMTMuNiAyMi45LTguOSAzNS4zUzUwLjcgMjg4IDY0IDI4OEgxNzUuNUw5OC42IDQ2Ny40Yy01LjkgMTMuNy0xLjUgMjkuNyAxMC42IDM4LjVzMjguNiA4IDM5LjktMS44bDI1Ni0yMjRjMTAtOC44IDEzLjYtMjIuOSA4LjktMzUuM3MtMTYuNi0yMC43LTMwLTIwLjdIMjcyLjVMMzQ5LjQgNDQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9tYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTkuMSA1Mi40TDQ0Mi42IDYuNUM0NDAuNyAyLjYgNDM2LjUgMCA0MzIuMSAwcy04LjUgMi42LTEwLjQgNi41TDQwNS4yIDUyLjRsLTQ2IDE2LjhjLTQuMyAxLjYtNy4zIDUuOS03LjIgMTAuNGMwIDQuNSAzIDguNyA3LjIgMTAuMmw0NS43IDE2LjggMTYuOCA0NS44YzEuNSA0LjQgNS44IDcuNSAxMC40IDcuNXM4LjktMy4xIDEwLjQtNy41bDE2LjUtNDUuOCA0NS43LTE2LjhjNC4yLTEuNSA3LjItNS43IDcuMi0xMC4yYzAtNC42LTMtOC45LTcuMi0xMC40TDQ1OS4xIDUyLjR6bS0xMzIuNCA1M2MtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTIuOSAyLjlDMjU2LjUgMTAwLjMgMjMyLjcgOTYgMjA4IDk2QzkzLjEgOTYgMCAxODkuMSAwIDMwNFM5My4xIDUxMiAyMDggNTEyczIwOC05My4xIDIwOC0yMDhjMC0yNC43LTQuMy00OC41LTEyLjItNzAuNWwyLjktMi45YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC04MC04MHpNMjAwIDE5MmMtNTcuNCAwLTEwNCA0Ni42LTEwNCAxMDR2OGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNnYtOGMwLTc1LjEgNjAuOS0xMzYgMTM2LTEzNmg4YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2aC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1My43IDE0NC44YzYuOSAxNi4zIDIwLjYgMzEuMiAzOC4zIDMxLjJIMzg0YzE3LjcgMCAzMS40LTE0LjkgMzguMy0zMS4yQzQzNC40IDExNi4xIDQ2Mi45IDk2IDQ5NiA5NmM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDMwLjQtMTcgNTYuOS00MiA3MC40Yy0zLjYgMS45LTYgNS41LTYgOS42czIuNCA3LjcgNiA5LjZjMjUgMTMuNSA0MiA0MCA0MiA3MC40YzAgNDQuMi0zNS44IDgwLTgwIDgwYy0zMy4xIDAtNjEuNi0yMC4xLTczLjctNDguOEM0MTUuNCAzNTAuOSA0MDEuNyAzMzYgMzg0IDMzNkgxOTJjLTE3LjcgMC0zMS40IDE0LjktMzguMyAzMS4yQzE0MS42IDM5NS45IDExMy4xIDQxNiA4MCA0MTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwYzAtMzAuNCAxNy01Ni45IDQyLTcwLjRjMy42LTEuOSA2LTUuNSA2LTkuNnMtMi40LTcuNy02LTkuNkMxNyAyMzIuOSAwIDIwNi40IDAgMTc2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzMzLjEgMCA2MS42IDIwLjEgNzMuNyA0OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAyMDguNWMwIDI5LjEtMTUuNiA1My45LTM3LjIgNjcuOGMtMTcuMiAxMS4xLTMxLjUgMjYuMS00MS43IDQzLjdIMzAyLjljLTEwLjItMTcuNi0yNC41LTMyLjYtNDEuNy00My43Yy0yMS42LTEzLjktMzcuMi0zOC43LTM3LjItNjcuOFY2NEgxNjBWMjA4LjV6TTI4OCA2NFYyMDguNWMwIDUuNyAzLjEgMTAuOSA3LjkgMTRjMTEuMiA3LjIgMjEuNSAxNS41IDMwLjkgMjQuOEwzNjYuMSAyMDhsLTctN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDI0IDI0IDI0IDI0YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTctNy00My4zIDQzLjNDMzc0IDMxNC4xIDM4NCAzNDcuOSAzODQgMzg0YzAgMzkuNC0xMS45IDc2LjEtMzIuMiAxMDYuNWMtOS42IDE0LjQtMjYuNSAyMS41LTQzLjggMjEuNUg3Ni4xYy0xNy4zIDAtMzQuMi03LjEtNDMuOC0yMS41QzExLjkgNDYwLjEgMCA0MjMuNCAwIDM4NGMwLTY3LjggMzUuMS0xMjcuMyA4OC4xLTE2MS41YzQuOC0zLjEgNy45LTguMyA3LjktMTRWNjRDNzguMyA2NCA2NCA0OS43IDY0IDMyUzc4LjMgMCA5NiAwaDE2SDI3MmgxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va0F0bGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA0MyA0MyAwIDk2IDBIMzg0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODQgOTZjLTUzIDAtOTYtNDMtOTYtOTZWOTZ6TTY0IDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzNTJWMzg0SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMjQ3LjQgMjgzLjhjLTMuNyAzLjctNi4yIDQuMi03LjQgNC4ycy0zLjctLjUtNy40LTQuMmMtMy44LTMuNy04LTEwLTExLjgtMTguOWMtNi4yLTE0LjUtMTAuOC0zNC4zLTEyLjItNTYuOWg2M2MtMS41IDIyLjYtNiA0Mi40LTEyLjIgNTYuOWMtMy44IDguOS04IDE1LjItMTEuOCAxOC45em00Mi43LTkuOWM3LjMtMTguMyAxMi00MS4xIDEzLjQtNjUuOWgzMS4xYy00LjcgMjcuOS0yMS40IDUxLjctNDQuNSA2NS45em0wLTE2My44YzIzLjIgMTQuMiAzOS45IDM4IDQ0LjUgNjUuOUgzMDMuNWMtMS40LTI0LjctNi4xLTQ3LjUtMTMuNC02NS45ek0zNjggMTkyYTEyOCAxMjggMCAxIDAgLTI1NiAwIDEyOCAxMjggMCAxIDAgMjU2IDB6TTE0NS4zIDIwOGgzMS4xYzEuNCAyNC43IDYuMSA0Ny41IDEzLjQgNjUuOWMtMjMuMi0xNC4yLTM5LjktMzgtNDQuNS02NS45em0zMS4xLTMySDE0NS4zYzQuNy0yNy45IDIxLjQtNTEuNyA0NC41LTY1LjljLTcuMyAxOC4zLTEyIDQxLjEtMTMuNCA2NS45em01Ni4xLTc1LjhjMy43LTMuNyA2LjItNC4yIDcuNC00LjJzMy43IC41IDcuNCA0LjJjMy44IDMuNyA4IDEwIDExLjggMTguOWM2LjIgMTQuNSAxMC44IDM0LjMgMTIuMiA1Ni45aC02M2MxLjUtMjIuNiA2LTQyLjQgMTIuMi01Ni45YzMuOC04LjkgOC0xNS4yIDExLjgtMTguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va0JpYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNDMgMCAwIDQzIDAgOTZWNDE2YzAgNTMgNDMgOTYgOTYgOTZIMzg0aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjM4NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzODQgOTZ6bTAgMzg0SDM1MnY2NEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpNMjA4IDgwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJWMzA0YzAgOC44LTcuMiAxNi0xNiAxNkgyMjRjLTguOCAwLTE2LTcuMi0xNi0xNlYxOTJIMTYwYy04LjggMC0xNi03LjItMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNmg0OFY4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA0MyA0MyAwIDk2IDBoOTZWMTkwLjdjMCAxMy40IDE1LjUgMjAuOSAyNiAxMi41TDI3MiAxNjBsNTQgNDMuMmMxMC41IDguNCAyNiAuOSAyNi0xMi41VjBoMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NCA5NmMtNTMgMC05Ni00My05Ni05NlY5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MlYzODRIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rSm91cm5hbFdoaWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNDMgNDMgMCA5NiAwSDM4NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0IDk2Yy01MyAwLTk2LTQzLTk2LTk2Vjk2ek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyVjM4NEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTkwLjQtMjM0LjRsLTIxLjItMjEuMmMtMyAxMC4xLTUuMSAyMC42LTUuMSAzMS42YzAgLjIgMCAuNSAuMSAuOHMuMSAuNSAuMSAuOEwxNjUuMiAyMjZjMi41IDIuMSAzLjQgNS44IDIuMyA4LjljLTEuMyAzLTQuMSA1LjEtNy41IDUuMWMtMS45LS4xLTMuOC0uOC01LjItMmwtMjMuNi0yMC42QzE0Mi44IDI2NyAxODYuOSAzMDQgMjQwIDMwNHM5Ny4zLTM3IDEwOC45LTg2LjZMMzI1LjMgMjM4Yy0xLjQgMS4yLTMuMyAyLTUuMyAyYy0yLjItLjEtNC40LTEuMS02LTIuOGMtMS4yLTEuNS0xLjktMy40LTItNS4yYy4xLTIuMiAxLjEtNC40IDIuOC02bDM3LjEtMzIuNWMwLS4zIDAtLjUgLjEtLjhzLjEtLjUgLjEtLjhjMC0xMS0yLjEtMjEuNS01LjEtMzEuNmwtMjEuMiAyMS4yYy0zLjEgMy4xLTguMSAzLjEtMTEuMyAwcy0zLjEtOC4xIDAtMTEuMmwyNi40LTI2LjVjLTguMi0xNy0yMC41LTMxLjctMzUuOS00Mi42Yy0yLjctMS45LTYuMiAxLjQtNSA0LjVjOC41IDIyLjQgMy42IDQ4LTEzIDY1LjZjLTMuMiAzLjQtMy42IDguOS0uOSAxMi43YzkuOCAxNCAxMi43IDMxLjkgNy41IDQ4LjVjLTUuOSAxOS40LTIyIDM0LjEtNDEuOSAzOC4zbC0xLjQtMzQuMyAxMi42IDguNmMuNiAuNCAxLjUgLjYgMi4zIC42YzEuNSAwIDIuNy0uOCAzLjUtMnMuNi0yLjgtLjEtNEwyNjAgMjI1LjRsMTgtMy42YzEuOC0uNCAzLjEtMi4xIDMuMS00cy0xLjQtMy41LTMuMS0zLjlsLTE4LTMuNyA4LjUtMTQuM2MuOC0xLjIgLjktMi45IC4xLTQuMXMtMi0yLTMuNS0ybC0uMSAwYy0uNyAuMS0xLjUgLjMtMi4xIC43bC0xNC4xIDkuNkwyNDQgODcuOWMtLjEtMi4yLTEuOS0zLjktNC0zLjlzLTMuOSAxLjYtNCAzLjlsLTQuNiAxMTAuOC0xMi04LjFjLTEuNS0xLjEtMy42LS45LTUgLjRzLTEuNiAzLjQtLjggNWw4LjYgMTQuMy0xOCAzLjdjLTEuOCAuNC0zLjEgMi0zLjEgMy45czEuNCAzLjYgMy4xIDRsMTggMy44LTguNiAxNC4yYy0uMiAuNi0uNSAxLjQtLjUgMmMwIDEuMSAuNSAyLjEgMS4yIDNjLjggLjYgMS44IDEgMi44IDFjLjcgMCAxLjYtLjIgMi4yLS42bDEwLjQtNy4xLTEuNCAzMi44Yy0xOS45LTQuMS0zNi0xOC45LTQxLjktMzguM2MtNS4xLTE2LjYtMi4yLTM0LjQgNy42LTQ4LjVjMi43LTMuOSAyLjMtOS4zLS45LTEyLjdjLTE2LjYtMTcuNS0yMS42LTQzLjEtMTMuMS02NS41YzEuMi0zLjEtMi4zLTYuNC01LTQuNWMtMTUuMyAxMC45LTI3LjYgMjUuNi0zNS44IDQyLjZsMjYuNCAyNi41YzMuMSAzLjEgMy4xIDguMSAwIDExLjJzLTguMSAzLjEtMTEuMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNDMgNDMgMCA5NiAwSDM4NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0IDk2Yy01MyAwLTk2LTQzLTk2LTk2Vjk2ek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyVjM4NEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTIwOCAxMTJ2NDhIMTYwYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjI0aDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYxNzZjMC04LjgtNy4yLTE2LTE2LTE2SDI3MlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rT3BlblJlYWRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgOTZhOTYgOTYgMCAxIDEgMTkyIDBBOTYgOTYgMCAxIDEgMTYwIDk2em04MCAxNTJWNTEybC00OC40LTI0LjJjLTIwLjktMTAuNC00My41LTE3LTY2LjgtMTkuM2wtOTYtOS42QzEyLjUgNDU3LjIgMCA0NDMuNSAwIDQyN1YyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJINjIuM2M2My42IDAgMTI1LjYgMTkuNiAxNzcuNyA1NnptMzIgMjY0VjI0OGM1Mi4xLTM2LjQgMTE0LjEtNTYgMTc3LjctNTZINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQyN2MwIDE2LjQtMTIuNSAzMC4yLTI4LjggMzEuOGwtOTYgOS42Yy0yMy4yIDIuMy00NS45IDguOS02Ni44IDE5LjNMMjcyIDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ5LjYgNDcxLjVjMTAuOCAzLjggMjIuNC00LjEgMjIuNC0xNS41Vjc4LjZjMC00LjItMS42LTguNC01LTExQzI0Ny40IDUyIDIwMi40IDMyIDE0NCAzMkM5My41IDMyIDQ2LjMgNDUuMyAxOC4xIDU2LjFDNi44IDYwLjUgMCA3MS43IDAgODMuOFY0NTQuMWMwIDExLjkgMTIuOCAyMC4yIDI0LjEgMTYuNUM1NS42IDQ2MC4xIDEwNS41IDQ0OCAxNDQgNDQ4YzMzLjkgMCA3OSAxNCAxMDUuNiAyMy41em03Ni44IDBDMzUzIDQ2MiAzOTguMSA0NDggNDMyIDQ0OGMzOC41IDAgODguNCAxMi4xIDExOS45IDIyLjZjMTEuMyAzLjggMjQuMS00LjYgMjQuMS0xNi41VjgzLjhjMC0xMi4xLTYuOC0yMy4zLTE4LjEtMjcuNkM1MjkuNyA0NS4zIDQ4Mi41IDMyIDQzMiAzMmMtNTguNCAwLTEwMy40IDIwLTEyMyAzNS42Yy0zLjMgMi42LTUgNi44LTUgMTFWNDU2YzAgMTEuNCAxMS43IDE5LjMgMjIuNCAxNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rUXVyYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDBjNTMgMCA5NiA0MyA5NiA5NlY0MTZjMCA1My00MyA5Ni05NiA5Nkg2NCAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlYzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjMyQzAgMTQuMyAxNC4zIDAgMzIgMEg2NCAzNTJ6bTAgMzg0SDk2djY0SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMnpNMjc0LjEgMTUwLjJsLTguOSAyMS40LTIzLjEgMS45Yy01LjcgLjUtOCA3LjUtMy43IDExLjJMMjU2IDE5OS44bC01LjQgMjIuNmMtMS4zIDUuNSA0LjcgOS45IDkuNiA2LjlMMjgwIDIxNy4ybDE5LjggMTIuMWM0LjkgMyAxMC45LTEuNCA5LjYtNi45TDMwNCAxOTkuOGwxNy42LTE1LjFjNC4zLTMuNyAyLTEwLjgtMy43LTExLjJsLTIzLjEtMS45LTguOS0yMS40Yy0yLjItNS4zLTkuNi01LjMtMTEuOCAwek05NiAxOTJjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhjMjUuNiAwIDQ5LjUtNy41IDY5LjUtMjAuNWMzLjItMi4xIDQuNS02LjIgMy4xLTkuN3MtNS4yLTUuNi05LTQuOGMtNi4xIDEuMi0xMi41IDEuOS0xOSAxLjljLTUyLjQgMC05NC45LTQyLjUtOTQuOS05NC45czQyLjUtOTQuOSA5NC45LTk0LjljNi41IDAgMTIuOCAuNyAxOSAxLjljMy44IC44IDcuNS0xLjMgOS00LjhzLjItNy42LTMuMS05LjdDMjczLjUgNzEuNSAyNDkuNiA2NCAyMjQgNjRDMTUzLjMgNjQgOTYgMTIxLjMgOTYgMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rU2t1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDQzIDQzIDAgOTYgMEgzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NCA5NmMtNTMgMC05Ni00My05Ni05NlY5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MlYzODRIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0zMjAgMTEyYzAtMzUuMy0zNS44LTY0LTgwLTY0cy04MCAyOC43LTgwIDY0YzAgMjAuOSAxMi42IDM5LjUgMzIgNTEuMlYxNzZjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYxNjMuMmMxOS40LTExLjcgMzItMzAuMyAzMi01MS4yek0yMDggOTZhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyem00OCAxNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwek0xMzQuMyAyMDkuM2MtOC4xLTMuNS0xNy41IC4zLTIxIDguNHMuMyAxNy41IDguNCAyMUwxOTkuNCAyNzJsLTc3LjcgMzMuM2MtOC4xIDMuNS0xMS45IDEyLjktOC40IDIxczEyLjkgMTEuOSAyMSA4LjRMMjQwIDI4OS40bDEwNS43IDQ1LjNjOC4xIDMuNSAxNy41LS4zIDIxLTguNHMtLjMtMTcuNS04LjQtMjFMMjgwLjYgMjcybDc3LjctMzMuM2M4LjEtMy41IDExLjktMTIuOSA4LjQtMjFzLTEyLjktMTEuOS0yMS04LjRMMjQwIDI1NC42IDEzNC4zIDIwOS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rVGFuYWtoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAwYzUzIDAgOTYgNDMgOTYgOTZWNDE2YzAgNTMtNDMgOTYtOTYgOTZINjQgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMkMwIDE0LjMgMTQuMyAwIDMyIDBINjQgMzUyem0wIDM4NEg5NnY2NEgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJ6TTEzOC43IDIwOGwxMy45IDI0SDEyNC45bDEzLjktMjR6bS0xMy45LTI0TDk3LjEgMjMyYy02LjIgMTAuNyAxLjUgMjQgMTMuOSAyNGg1NS40bDI3LjcgNDhjNi4yIDEwLjcgMjEuNiAxMC43IDI3LjcgMGwyNy43LTQ4SDMwNWMxMi4zIDAgMjAtMTMuMyAxMy45LTI0bC0yNy43LTQ4IDI3LjctNDhjNi4yLTEwLjctMS41LTI0LTEzLjktMjRIMjQ5LjZMMjIxLjkgNjRjLTYuMi0xMC43LTIxLjYtMTAuNy0yNy43IDBsLTI3LjcgNDhIMTExYy0xMi4zIDAtMjAgMTMuMy0xMy45IDI0bDI3LjcgNDh6bTI3LjcgMGwyNy43LTQ4aDU1LjRsMjcuNyA0OC0yNy43IDQ4SDE4MC4zbC0yNy43LTQ4em0wLTQ4bC0xMy45IDI0LTEzLjktMjRoMjcuN3ptNDEuNi0yNEwyMDggODhsMTMuOSAyNEgxOTQuMXptNjkuMyAyNGgyNy43bC0xMy45IDI0LTEzLjktMjR6bTEzLjkgNzJsMTMuOSAyNEgyNjMuNGwxMy45LTI0em0tNTUuNCA0OEwyMDggMjgwbC0xMy45LTI0aDI3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM0MyAwIDAgNDMgMCA5NlY0MTZjMCA1MyA0MyA5NiA5NiA5NkgzODRoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDM4NCA5NnptMCAzODRIMzUydjY0SDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0zMi0yNDBjMC04LjggNy4yLTE2IDE2LTE2SDMzNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNnptMTYgNDhIMzM2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE0NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0OFY0ODcuN0MwIDUwMS4xIDEwLjkgNTEyIDI0LjMgNTEyYzUgMCA5LjktMS41IDE0LTQuNEwxOTIgNDAwIDM0NS43IDUwNy42YzQuMSAyLjkgOSA0LjQgMTQgNC40YzEzLjQgMCAyNC4zLTEwLjkgMjQuMy0yNC4zVjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9yZGVyQWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA5NlYyMjRIMjU2Vjk2SDM4NHptMCAxOTJWNDE2SDI1NlYyODhIMzg0ek0xOTIgMjI0SDY0Vjk2SDE5MlYyMjR6TTY0IDI4OEgxOTJWNDE2SDY0VjI4OHpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JkZXJOb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDQ4MGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6bTk2LTY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMC0zODRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0wIDI1NmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTMyMCA0MTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0wLTMyMGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6bTAgMTI4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMjI0IDQ4MGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6bTAtNDQ4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMCAyNTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek00MTYgNDE2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMC0zODRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0zMiA5NmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTQxNiAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0zMiAyODhhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0xOTIgMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xOTIgNjRhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek0zMiAzMjBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek00MTYgMTkyYTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpNMzIgMTI4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTkyIDY0YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9yZGVyVG9wTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzM2YzAtOC44IDcuMi0xNiAxNi0xNmwzMzYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw4MCAzMkMzNS44IDMyIDAgNjcuOCAwIDExMkwwIDQ0OHptMTYwIDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTkyIDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptLTk2IDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTkyIDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDE2IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTAgMzJhMzIgMzIgMCAxIDAgMCA2NCAzMiAzMiAwIDEgMCAwLTY0em0wLTEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvcmVIb2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlYyOTYuNmMtMTkuMSAxMS4xLTMyIDMxLjctMzIgNTUuNGMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0YzAtMjMuNy0xMi45LTQ0LjQtMzItNTUuNFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNDggMTI4Yy0yNi41IDAtNDggMjEuNS00OCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE3NmMwLTI2LjUtMjEuNS00OC00OC00OEgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjM1MmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvdHRsZURyb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM4Mi43IDAgNzIgMTAuNyA3MiAyNHMxMC43IDI0IDI0IDI0YzQuNCAwIDggMy42IDggOHY2NC45YzAgMTIuMi03LjIgMjMuMS0xNy4yIDMwLjFDNTMuNyAxNzQuMSAzMiAyMTIuNSAzMiAyNTZWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDIyNGMzNS4zIDAgNjQtMjguNyA2NC02NFYyNTZjMC00My41LTIxLjctODEuOS01NC44LTEwNWMtMTAtNy0xNy4yLTE3LjktMTcuMi0zMC4xVjU2YzAtNC40IDMuNi04IDgtOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtOCAwIDAgMCAwIDBIMTA0bDAgMCAwIDBMOTYgMHptNjQgMzgyYy0yNi41IDAtNDgtMjAuMS00OC00NWMwLTE2LjggMjIuMS00OC4xIDM2LjMtNjYuNGM2LTcuOCAxNy41LTcuOCAyMy41IDBDMTg1LjkgMjg4LjkgMjA4IDMyMC4yIDIwOCAzMzdjMCAyNC45LTIxLjUgNDUtNDggNDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvdHRsZVdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMCAwbDgwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA0MEw5NiA2NGwwLTQwYzAtMTMuMyAxMC43LTI0IDI0LTI0ek0zMiAxNjcuNWMwLTE5LjUgMTAtMzcuNiAyNi42LTQ3LjlsMTUuOC05LjlDODguNyAxMDAuNyAxMDUuMiA5NiAxMjIuMSA5Nmw3NS44IDBjMTYuOSAwIDMzLjQgNC43IDQ3LjcgMTMuN2wxNS44IDkuOUMyNzggMTI5LjkgMjg4IDE0OCAyODggMTY3LjVjMCAxNy03LjUgMzIuMy0xOS40IDQyLjZDMjgwLjYgMjIxLjcgMjg4IDIzOCAyODggMjU2YzAgMTkuMS04LjQgMzYuMy0yMS43IDQ4YzEzLjMgMTEuNyAyMS43IDI4LjkgMjEuNyA0OHMtOC40IDM2LjMtMjEuNyA0OGMxMy4zIDExLjcgMjEuNyAyOC45IDIxLjcgNDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMOTYgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTE5LjEgOC40LTM2LjMgMjEuNy00OEM0MC40IDM4OC4zIDMyIDM3MS4xIDMyIDM1MnM4LjQtMzYuMyAyMS43LTQ4QzQwLjQgMjkyLjMgMzIgMjc1LjEgMzIgMjU2YzAtMTggNy40LTM0LjMgMTkuNC00NS45QzM5LjUgMTk5LjcgMzIgMTg0LjUgMzIgMTY3LjV6TTk2IDI0MGMwIDguOCA3LjIgMTYgMTYgMTZsOTYgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtOTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNiAxMTJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsOTYgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm93bEZvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxOTJjMC0zNS4zIDI4LjctNjQgNjQtNjRjLjUgMCAxLjEgMCAxLjYgMEM3MyA5MS41IDEwNS4zIDY0IDE0NCA2NGMxNSAwIDI5IDQuMSA0MC45IDExLjJDMTk4LjIgNDkuNiAyMjUuMSAzMiAyNTYgMzJzNTcuOCAxNy42IDcxLjEgNDMuMkMzMzkgNjguMSAzNTMgNjQgMzY4IDY0YzM4LjcgMCA3MSAyNy41IDc4LjQgNjRjLjUgMCAxLjEgMCAxLjYgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDExLjctMy4xIDIyLjYtOC42IDMySDguNkMzLjEgMjE0LjYgMCAyMDMuNyAwIDE5MnptMCA5MS40QzAgMjY4LjMgMTIuMyAyNTYgMjcuNCAyNTZINDg0LjZjMTUuMSAwIDI3LjQgMTIuMyAyNy40IDI3LjRjMCA3MC41LTQ0LjQgMTMwLjctMTA2LjcgMTU0LjFMNDAzLjUgNDUyYy0yIDE2LTE1LjYgMjgtMzEuOCAyOEgxNDAuMmMtMTYuMSAwLTI5LjgtMTItMzEuOC0yOGwtMS44LTE0LjRDNDQuNCA0MTQuMSAwIDM1My45IDAgMjgzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvd2xSaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA1NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0yNCA0OGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6TTU2IDE3Nkg3MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNMCAyODMuNEMwIDI2OC4zIDEyLjMgMjU2IDI3LjQgMjU2SDQ4NC42YzE1LjEgMCAyNy40IDEyLjMgMjcuNCAyNy40YzAgNzAuNS00NC40IDEzMC43LTEwNi43IDE1NC4xTDQwMy41IDQ1MmMtMiAxNi0xNS42IDI4LTMxLjggMjhIMTQwLjJjLTE2LjEgMC0yOS44LTEyLTMxLjgtMjhsLTEuOC0xNC40QzQ0LjQgNDE0LjEgMCAzNTMuOSAwIDI4My40ek0yMjQgMjAwYzAtMTMuMyAxMC43LTI0IDI0LTI0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0OGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bS05NiAwYzAtMTMuMyAxMC43LTI0IDI0LTI0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bS0yNC05NmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxMDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTIxNiA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzNDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tMjQtOTZoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0em0xMjAgOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDQwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptLTI0LTk2aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDM5MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNMjk2IDMyaDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI5NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm93bGluZ0JhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTI0MCA4MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTIwOCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptLTY0LTY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94QXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJDMTQuMyAxMjggMCAxMTMuNyAwIDk2VjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyem0wIDEyOEg0ODBWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxNjB6bTEyOCA4MGMwIDguOCA3LjIgMTYgMTYgMTZIMzM2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4LjkgNDIuMWMzLTYuMSA5LjYtOS42IDE2LjMtOC43TDMyMCA2NCA1NjQuOCAzMy40YzYuNy0uOCAxMy4zIDIuNyAxNi4zIDguN2w0MS43IDgzLjRjOSAxNy45LS42IDM5LjYtMTkuOCA0NS4xTDQzOS42IDIxNy4zYy0xMy45IDQtMjguOC0xLjktMzYuMi0xNC4zTDMyMCA2NCAyMzYuNiAyMDNjLTcuNCAxMi40LTIyLjMgMTguMy0zNi4yIDE0LjNMMzcuMSAxNzAuNmMtMTkuMy01LjUtMjguOC0yNy4yLTE5LjgtNDUuMUw1OC45IDQyLjF6TTMyMS4xIDEyOGw1NC45IDkxLjRjMTQuOSAyNC44IDQ0LjYgMzYuNiA3Mi41IDI4LjZMNTc2IDIxMS42djE2N2MwIDIyLTE1IDQxLjItMzYuNCA0Ni42bC0yMDQuMSA1MWMtMTAuMiAyLjYtMjAuOSAyLjYtMzEgMGwtMjA0LjEtNTFDNzkgNDE5LjcgNjQgNDAwLjUgNjQgMzc4LjV2LTE2N0wxOTEuNiAyNDhjMjcuOCA4IDU3LjYtMy44IDcyLjUtMjguNkwzMTguOSAxMjhoMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hUaXNzdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTIuNSAwSDIwOGM0MCAwIDUyIDI0IDY0IDQ4czI0IDQ4IDY0IDQ4aDg1LjJDNDM2IDk2IDQ0OCAxMDggNDQ4IDEyMi44YzAgMy40LS43IDYuOC0xLjkgMTBMNDA5LjYgMjI0IDM4NCAyODhIMTI4bC0xNi02NEw2NC45IDM1LjRjLS42LTIuMy0uOS00LjYtLjktNi45QzY0IDEyLjggNzYuOCAwIDkyLjUgMHpNNzkgMjI0bDE2IDY0SDgwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDQ4SDM4NGg0OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg0MTguNWwyNS42LTY0SDQ2NGMyNi41IDAgNDggMjEuNSA0OCA0OFYzODRIMFYyNzJjMC0yNi41IDIxLjUtNDggNDgtNDhINzl6TTAgNDE2SDUxMnY0OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAuNyA1OC41TDAgMTYwSDIwOFYzMkg5My43Qzc1LjUgMzIgNTguOSA0Mi4zIDUwLjcgNTguNXpNMjQwIDE2MEg0NDhMMzk3LjMgNTguNUMzODkuMSA0Mi4zIDM3Mi41IDMyIDM1NC4zIDMySDI0MFYxNjB6bTIwOCAzMkgwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hlc1BhY2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDU5MmMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMzgxLjNjMS44LTUgMi43LTEwLjQgMi43LTE2VjI1My4zYzE4LjYtNi42IDMyLTI0LjQgMzItNDUuM1YxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjU2VjQ4ek01NzEuMyAzNDcuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNjQtNjRjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC02NCA2NGMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwTDQ4MCAzMTAuNlY0MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMTAuNmwzNi43IDM2LjdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDB6TTAgMTc2YzAtOC44IDcuMi0xNiAxNi0xNkgzNjhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNmMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NnptMzUyIDgwVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjU2SDM1MnpNMTQ0IDMyMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg5NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJveGVzU3RhY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMEgyMDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjE2MGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzI4VjgwYzAgOC44LTcuMiAxNi0xNiAxNkgyNjRjLTguOCAwLTE2LTcuMi0xNi0xNlYwek02NCAyNTZjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDE4NHY4MGMwIDguOC03LjIgMTYtMTYgMTZIMTIwYy04LjggMC0xNi03LjItMTYtMTZWMjU2SDY0ek0zNTIgNTEySDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYzMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRINDcydjgwYzAgOC44LTcuMiAxNi0xNiAxNkg0MDhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNTZIMzUyYy0xNSAwLTI4LjggNS4xLTM5LjcgMTMuOGM0LjkgMTAuNCA3LjcgMjIgNy43IDM0LjJWNDY0YzAgMTIuMi0yLjggMjMuOC03LjcgMzQuMkMzMjMuMiA1MDYuOSAzMzcgNTEyIDM1MiA1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyYWlsbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSAwIDk2ek0yMjQgMjcyYTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptMC04MGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNODAgNDE2YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6TTAgNDE2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDAgNDE2em0yNDAgMGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tODAgMGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTY0IDE5MmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMjI0IDMyYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek0zNTIgOTZhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgMzUyIDk2em0yNDAgMGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tODAgMGE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA1MTIgOTZ6bTY0IDE3NmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTAtODBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6bTE2IDIyNGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tODAgMGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTQxNiAyNzJhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0wLTgwYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4em0xNiAyMjRhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptLTgwIDBhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODQgMGMzMC45IDAgNTYgMjUuMSA1NiA1NlY0NTZjMCAzMC45LTI1LjEgNTYtNTYgNTZjLTI4LjkgMC01Mi43LTIxLjktNTUuNy01MC4xYy01LjIgMS40LTEwLjcgMi4xLTE2LjMgMi4xYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTcuNCAxLjMtMTQuNiAzLjYtMjEuMkMyMS40IDM2Ny40IDAgMzM4LjIgMCAzMDRjMC0zMS45IDE4LjctNTkuNSA0NS44LTcyLjNDMzcuMSAyMjAuOCAzMiAyMDcgMzIgMTkyYzAtMzAuNyAyMS42LTU2LjMgNTAuNC02Mi42QzgwLjggMTIzLjkgODAgMTE4IDgwIDExMmMwLTI5LjkgMjAuNi01NS4xIDQ4LjMtNjIuMUMxMzEuMyAyMS45IDE1NS4xIDAgMTg0IDB6TTMyOCAwYzI4LjkgMCA1Mi42IDIxLjkgNTUuNyA0OS45YzI3LjggNyA0OC4zIDMyLjEgNDguMyA2Mi4xYzAgNi0uOCAxMS45LTIuNCAxNy40YzI4LjggNi4yIDUwLjQgMzEuOSA1MC40IDYyLjZjMCAxNS01LjEgMjguOC0xMy44IDM5LjdDNDkzLjMgMjQ0LjUgNTEyIDI3Mi4xIDUxMiAzMDRjMCAzNC4yLTIxLjQgNjMuNC01MS42IDc0LjhjMi4zIDYuNiAzLjYgMTMuOCAzLjYgMjEuMmMwIDM1LjMtMjguNyA2NC02NCA2NGMtNS42IDAtMTEuMS0uNy0xNi4zLTIuMWMtMyAyOC4yLTI2LjggNTAuMS01NS43IDUwLjFjLTMwLjkgMC01Ni0yNS4xLTU2LTU2VjU2YzAtMzAuOSAyNS4xLTU2IDU2LTU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmF6aWxpYW5SZWFsU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY1MC4yYzEyLjUgMi4zIDI0LjcgNi40IDM2LjIgMTIuMWwxMC4xIDUuMWMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zbC0xMC4yLTUuMWMtOS45LTUtMjAuOS03LjUtMzItNy41aC0xLjdjLTI5LjggMC01My45IDI0LjEtNTMuOSA1My45YzAgMjIgMTMuNCA0MS44IDMzLjkgNTBsNTIgMjAuOGM0NC43IDE3LjkgNzQuMSA2MS4yIDc0LjEgMTA5LjR2My40YzAgNTEuMi0zMy42IDk0LjYtODAgMTA5LjJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ2MC42Yy0xNS0zLjUtMjkuNC05LjctNDIuMy0xOC4zbC0yMy40LTE1LjZjLTE0LjctOS44LTE4LjctMjkuNy04LjktNDQuNHMyOS43LTE4LjcgNDQuNC04LjlMMzYxLjIgMzg5YzEwLjggNy4yIDIzLjQgMTEgMzYuMyAxMWMyNy45IDAgNTAuNS0yMi42IDUwLjUtNTAuNXYtMy40YzAtMjItMTMuNC00MS44LTMzLjktNTBsLTUyLTIwLjhDMzE3LjMgMjU3LjQgMjg4IDIxNC4xIDI4OCAxNjUuOUMyODggMTE0IDMyMS41IDcwIDM2OCA1NC4yVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyaDgwYzc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0YzAgNTguOC0zNS4yIDEwOS4zLTg1LjcgMTMxLjdsNTEuNCAxMjguNGM2LjYgMTYuNC0xLjQgMzUtMTcuOCA0MS42cy0zNS0xLjQtNDEuNi0xNy44TDEwNi4zIDMyMEg2NFY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjg4IDY0ek02NCAyNTZoNDhjNDQuMiAwIDgwLTM1LjggODAtODBzLTM1LjgtODAtODAtODBINjRWMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmVhZFNsaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxOTIgMzIgMCA2NCAwIDE5MmMwIDM1LjMgMjguNyA2NCA2NCA2NFY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhINDAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1NmMzNS4zIDAgNjQtMjguNyA2NC02NEM1MTIgNjQgMzIwIDMyIDI1NiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZGdlQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0czE0LjMgMzIgMzIgMzJoNDB2NjRIMzJWMjg4YzUzIDAgOTYgNDMgOTYgOTZ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0YzAtNTMgNDMtOTYgOTYtOTZjNi4zIDAgMTIuNCAuNiAxOC4zIDEuN0MzNjcuMSAyMzEuOCA0MjYuOSAxOTIgNDk2IDE5MmM0Mi41IDAgODEuNiAxNS4xIDExMiA0MC4yVjE2MEg1MzZWOTZoNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6TTQ4OCA5NnY2NEg0MDhWOTZoODB6TTM2MCA5NnY2NEgyODBWOTZoODB6TTIzMiA5NnY2NEgxNTJWOTZoODB6TTY0MCAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWRnZUNpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NHMxNC4zIDMyIDMyIDMyaDQwdjY0SDMyVjI4OGM1MyAwIDk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2YzYuMyAwIDEyLjQgLjYgMTguMyAxLjdDMzY3LjEgMjMxLjggNDI2LjkgMTkyIDQ5NiAxOTJjNDIuNSAwIDgxLjYgMTUuMSAxMTIgNDAuMlYxNjBINTM2Vjk2aDQwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0ek00ODggOTZ2NjRINDA4Vjk2aDgwek0zNjAgOTZ2NjRIMjgwVjk2aDgwek0yMzIgOTZ2NjRIMTUyVjk2aDgwek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmlkZ2VDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjRzMTQuMyAzMiAzMiAzMmg0MHY2NEgzMlYyODhjNTMgMCA5NiA0MyA5NiA5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzODRjMC01MyA0My05NiA5Ni05NmM2LjMgMCAxMi40IC42IDE4LjMgMS43QzM2Ny4xIDIzMS44IDQyNi45IDE5MiA0OTYgMTkyYzQyLjUgMCA4MS42IDE1LjEgMTEyIDQwLjJWMTYwSDUzNlY5Nmg0MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NHpNNDg4IDk2djY0SDQwOFY5Nmg4MHpNMzYwIDk2djY0SDI4MFY5Nmg4MHpNMjMyIDk2djY0SDE1MlY5Nmg4MHpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNTE4LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQ5NiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQ3My40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDk2IDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWRnZUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJINTc2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDUzNnY2NGgtOGMtNjEuOSAwLTExMiA1MC4xLTExMiAxMTJ2MjQuNmMtOS45IDUuOC0xOC4yIDE0LjEtMjMuOCAyNC4xYy0xNy42LTIwLTQzLjQtMzIuNy03Mi4yLTMyLjdjLTUzIDAtOTYgNDMtOTYgOTZ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzODRjMC01My00My05Ni05Ni05NlYxNjBoNzJWOTZINjRDNDYuMyA5NiAzMiA4MS43IDMyIDY0ek00MDggOTZ2NjRoODBWOTZINDA4em0tNDggNjRWOTZIMjgwdjY0aDgwek0xNTIgOTZ2NjRoODBWOTZIMTUyek01MjggMjQwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY0OGg2NFYyNzJjMC0xNy43LTE0LjMtMzItMzItMzJ6bS04MCAzMmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwdjQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0NDhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMlYyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWRnZVdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjM1LjZjMCAxNS43LTEyLjcgMjguNC0yOC40IDI4LjRjLTM3LjMgMC02Ny42IDMwLjItNjcuNiA2Ny42VjM1Mi41Yy0xMi45IDAtMjUuOCAzLjktMzYuOCAxMS43Yy0xOCAxMi40LTQwLjEgMjAuMy01OS4yIDIwLjNoMGwwLS41VjI1NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NlYzODRsMCAuNWMtMTkgMC00MS4yLTcuOS01OS4xLTIwLjNjLTExLjEtNy44LTI0LTExLjctMzYuOS0xMS43VjIyNy42Qzk2IDE5MC4yIDY1LjggMTYwIDI4LjQgMTYwQzEyLjcgMTYwIDAgMTQ3LjMgMCAxMzEuNlY5NnpNMzA2LjUgMzg5LjlDMzI5IDQwNS40IDM1Ni41IDQxNiAzODQgNDE2YzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDQ2OS43IDQxNyA0ODAgMzg0IDQ4MGMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDQwNS4yIDE2NS4xIDQxNiAxOTIgNDE2YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmlkZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2SDcydjY0SDBWMjg4YzUzIDAgOTYgNDMgOTYgOTZ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0YzAtNTMgNDMtOTYgOTYtOTZWMTYwSDUwNFY5Nmg0MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpNNDU2IDk2djY0SDM3NlY5Nmg4MHpNMzI4IDk2djY0SDI0OFY5Nmg4MHpNMjAwIDk2djY0SDEyMFY5Nmg4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZWZjYXNlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODQgNDhIMzI4YzQuNCAwIDggMy42IDggOFY5NkgxNzZWNTZjMC00LjQgMy42LTggOC04em0tNTYgOFY5Nkg2NEMyOC43IDk2IDAgMTI0LjcgMCAxNjBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzg0VjU2YzAtMzAuOS0yNS4xLTU2LTU2LTU2SDE4NGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZ6bTk2IDE1MmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjg4djQ4YzAgOC44LTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNlYzMjBIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmg0OFYyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWVmY2FzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODQgNDhIMzI4YzQuNCAwIDggMy42IDggOFY5NkgxNzZWNTZjMC00LjQgMy42LTggOC04em0tNTYgOFY5Nkg2NEMyOC43IDk2IDAgMTI0LjcgMCAxNjB2OTZIMTkyIDMyMCA1MTJWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM4NFY1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxODRjLTMwLjkgMC01NiAyNS4xLTU2IDU2ek01MTIgMjg4SDMyMHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI4OEgwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcm9vbUJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY2LjYgOS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0xOTIgMTkyIDM0LjcgMzQuN2M0LjIgNC4yIDYuNiAxMCA2LjYgMTZjMCAxMi41LTEwLjEgMjIuNi0yMi42IDIyLjZIMzY0LjNMMjU2IDIxMS43VjE4Mi42YzAtMTIuNSAxMC4xLTIyLjYgMjIuNi0yMi42YzYgMCAxMS44IDIuNCAxNiA2LjZsMzQuNyAzNC43IDE5Mi0xOTJjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDB6bS0zNDQgMjI1LjVMMzQxLjEgMzUzLjRjMy43IDQyLjctMTEuNyA4NS4yLTQyLjMgMTE1LjhDMjcxLjQgNDk2LjYgMjM0LjIgNTEyIDE5NS41IDUxMkwyMi4xIDUxMkM5LjkgNTEyIDAgNTAyLjEgMCA0ODkuOWMwLTYuMyAyLjctMTIuMyA3LjMtMTYuNUwxMzMuNyAzNTkuN2M0LjItMy43LS40LTEwLjQtNS40LTcuOUw3Ny4yIDM3Ny40Yy02LjEgMy0xMy4yLTEuNC0xMy4yLTguMmMwLTMxLjUgMTIuNS02MS43IDM0LjgtODRsOC04YzMwLjYtMzAuNiA3My4xLTQ1LjkgMTE1LjgtNDIuM3pNNDY0IDM1MmE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY2LjYgNTQuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTkyIDE5Mi0zNC43LTM0LjdjLTQuMi00LjItMTAtNi42LTE2LTYuNmMtMTIuNSAwLTIyLjYgMTAuMS0yMi42IDIyLjZ2MjkuMUwzNjQuMyAzMjBoMjkuMWMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNmMwLTYtMi40LTExLjgtNi42LTE2bC0zNC43LTM0LjcgMTkyLTE5MnpNMzQxLjEgMzUzLjRMMjIyLjYgMjM0LjljLTQyLjctMy43LTg1LjIgMTEuNy0xMTUuOCA0Mi4zbC04IDhDNzYuNSAzMDcuNSA2NCAzMzcuNyA2NCAzNjkuMmMwIDYuOCA3LjEgMTEuMiAxMy4yIDguMmw1MS4xLTI1LjVjNS0yLjUgOS41IDQuMSA1LjQgNy45TDcuMyA0NzMuNEMyLjcgNDc3LjYgMCA0ODMuNiAwIDQ4OS45QzAgNTAyLjEgOS45IDUxMiAyMi4xIDUxMmwxNzMuMyAwYzM4LjggMCA3NS45LTE1LjQgMTAzLjQtNDIuOGMzMC42LTMwLjYgNDUuOS03My4xIDQyLjMtMTE1Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJydXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Mi40IDZjLTEuNS0zLjYtNS02LTguOS02aC0xOWMtMy45IDAtNy41IDIuNC04LjkgNkwxMDQuOSA1Ny43Yy0zLjIgOC0xNC42IDgtMTcuOCAwTDY2LjQgNmMtMS41LTMuNi01LTYtOC45LTZINDhDMjEuNSAwIDAgMjEuNSAwIDQ4VjIyNHYyMi40VjI1Nkg5LjYgMzc0LjQgMzg0di05LjZWMjI0IDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDIzMC41Yy0zLjkgMC03LjUgMi40LTguOSA2TDIwMC45IDU3LjdjLTMuMiA4LTE0LjYgOC0xNy44IDBMMTYyLjQgNnpNMCAyODh2MzJjMCAzNS4zIDI4LjcgNjQgNjQgNjRoNjR2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NFYzODRoNjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjg4SDB6TTE5MiA0MzJhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMTUydjhINDh2LThDNDggNjguMSAxMTYuMSAwIDIwMCAwaDQ4YzgzLjkgMCAxNTIgNjguMSAxNTIgMTUydjhIMzUydi04YzAtNTcuNC00Ni42LTEwNC0xMDQtMTA0SDIwMEMxNDIuNiA0OCA5NiA5NC42IDk2IDE1MnpNMCAyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyaC01LjFMMzg4LjUgNDY5Yy0yLjYgMjQuNC0yMy4yIDQzLTQ3LjcgNDNIMTA3LjJjLTI0LjYgMC00NS4yLTE4LjUtNDcuNy00M0wzNy4xIDI1NkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1Z1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDc3LjQgMzQ4LjljMS43LTkuNCAyLjYtMTkgMi42LTI4LjloNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDc5LjdjLTEuMS0xNC4xLTUtMjcuNS0xMS4xLTM5LjVjLjctLjYgMS40LTEuMiAyLjEtMS45bDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtLjcgLjctMS4zIDEuNC0xLjkgMi4xQzQwOS4yIDE2NC4xIDM5My4xIDE2MCAzNzYgMTYwSDI2NGMtOC4zIDAtMTYuMyAxLTI0IDIuOEwzOC44IDUuMXptMzkyIDQzMC4zTDMzNiAzNjAuN1Y0NzkuMmMzNi42LTMuNiA2OS43LTE5LjYgOTQuOC00My44ek0xNjYuNyAyMjcuM2MtMy40IDktNS42IDE4LjctNi40IDI4LjdIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNjRjMCAyNC42IDUuNSA0Ny44IDE1LjQgNjguNmMtMi4yIDEuMy00LjIgMi45LTYgNC44bC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw2My4xLTYzLjFjMjQuNSAyMS44IDU1LjggMzYuMiA5MC4zIDM5LjZWMzM1LjVMMTY2LjcgMjI3LjN6TTMyMCAwYy01MyAwLTk2IDQzLTk2IDk2djMuNmMwIDE1LjcgMTIuNyAyOC40IDI4LjQgMjguNEgzODcuNmMxNS43IDAgMjguNC0xMi43IDI4LjQtMjguNFY5NmMwLTUzLTQzLTk2LTk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjNTMgMCA5NiA0MyA5NiA5NnYzLjZjMCAxNS43LTEyLjcgMjguNC0yOC40IDI4LjRIMTg4LjRjLTE1LjcgMC0yOC40LTEyLjctMjguNC0yOC40Vjk2YzAtNTMgNDMtOTYgOTYtOTZ6TTQxLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsNjQgNjRjLjcgLjcgMS4zIDEuNCAxLjkgMi4xYzE0LjItNy4zIDMwLjQtMTEuNCA0Ny41LTExLjRIMzEyYzE3LjEgMCAzMy4yIDQuMSA0Ny41IDExLjRjLjYtLjcgMS4yLTEuNCAxLjktMi4xbDY0LTY0YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTY0IDY0Yy0uNyAuNy0xLjQgMS4zLTIuMSAxLjljNi4yIDEyIDEwLjEgMjUuMyAxMS4xIDM5LjVINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQxNmMwIDI0LjYtNS41IDQ3LjgtMTUuNCA2OC42YzIuMiAxLjMgNC4yIDIuOSA2IDQuOGw2NCA2NGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMGwtNjMuMS02My4xYy0yNC41IDIxLjgtNTUuOCAzNi4yLTkwLjMgMzkuNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWNDc5LjJjLTM0LjUtMy40LTY1LjgtMTcuOC05MC4zLTM5LjZMODYuNiA1MDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsNjQtNjRjMS45LTEuOSAzLjktMy40IDYtNC44QzEwMS41IDM2Ny44IDk2IDM0NC42IDk2IDMyMEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg5Ni4zYzEuMS0xNC4xIDUtMjcuNSAxMS4xLTM5LjVjLS43LS42LTEuNC0xLjItMi4xLTEuOWwtNjQtNjRjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NC41IDEwNy40bDMzLjQtNzMuNWM1LjUtMTIuMSAuMS0yNi4zLTExLjktMzEuOHMtMjYuMy0uMS0zMS44IDExLjlMMTI4IDcxLjcgMTAxLjkgMTQuMUM5Ni40IDIgODIuMS0zLjMgNzAuMSAyLjFTNTIuNyAyMS45IDU4LjEgMzMuOWwzMy40IDczLjVjLTEwLjIgNy4xLTE4LjIgMTctMjIuOSAyOC42aC0xN2wtNC4xLTIwLjdjLTIuNi0xMy0xNS4yLTIxLjQtMjguMi0xOC44Uy0yLjEgMTExLjcgLjUgMTI0LjdsOCA0MEMxMC43IDE3NS45IDIwLjYgMTg0IDMyIDE4NEg2NHYyMy4zbC0zNy44IDkuNWMtOS41IDIuNC0xNi42IDEwLjItMTcuOSAxOS45bC04IDU2Yy0xLjkgMTMuMSA3LjIgMjUuMyAyMC40IDI3LjJzMjUuMy03LjIgMjcuMi0yMC40bDUuNy00MCAxOC40LTQuNkM4Mi43IDI3NC42IDEwMy44IDI4OCAxMjggMjg4czQ1LjMtMTMuNCA1Ni4xLTMzLjJsMTguNCA0LjYgNS43IDQwYzEuOSAxMy4xIDE0IDIyLjIgMjcuMiAyMC40czIyLjItMTQgMjAuNC0yNy4ybC04LTU2Yy0xLjQtOS43LTguNS0xNy41LTE3LjktMTkuOUwxOTIgMjA3LjNWMTg0aDMyYzExLjQgMCAyMS4zLTguMSAyMy41LTE5LjNsOC00MGMyLjYtMTMtNS44LTI1LjYtMTguOC0yOC4ycy0yNS42IDUuOC0yOC4yIDE4LjhMMjA0LjMgMTM2aC0xN2MtNC43LTExLjYtMTIuNy0yMS41LTIyLjktMjguNnpNNDk2IDI4Ni41bDY1LjYtNDdjMTAuOC03LjcgMTMuMy0yMi43IDUuNi0zMy41cy0yMi43LTEzLjMtMzMuNS01LjZsLTUxLjQgMzYuOCA2LjEtNjIuOWMxLjMtMTMuMi04LjQtMjQuOS0yMS42LTI2LjJzLTI0LjkgOC40LTI2LjIgMjEuNkw0MzIuOCAyNTBjLTEyLjMgMS0yNC4yIDUuNi0zNC4xIDEzLjNMMzg0IDI1NC44bDYuOC0yMGM0LjItMTIuNi0yLjUtMjYuMi0xNS0zMC40cy0yNi4yIDIuNS0zMC40IDE1bC0xMy4xIDM4LjZjLTMuNyAxMC44IC44IDIyLjggMTAuNyAyOC41bDI3LjcgMTZMMzU5IDMyMi43IDMyMS41IDMxMmMtOS40LTIuNy0xOS41IC42LTI1LjUgOC4zbC0zNC45IDQ0LjVjLTguMiAxMC40LTYuNCAyNS41IDQuMSAzMy43czI1LjUgNi40IDMzLjctNC4xbDI1LTMxLjggMTguMiA1LjJjLS41IDIyLjYgMTEgNDQuNyAzMiA1Ni44czQ1LjkgMTEgNjUuMi0uN2wxMy42IDEzLjItMTUuMSAzNy41Yy00LjkgMTIuMyAxIDI2LjMgMTMuMyAzMS4yczI2LjMtMSAzMS4yLTEzLjNMNTAzLjUgNDQwYzMuNi05LjEgMS40LTE5LjQtNS42LTI2LjJsLTI4LTI3LjEgMTEuNi0yMC4xIDI3LjcgMTZjOS45IDUuNyAyMi41IDMuNyAzMC00LjlMNTY2LjIgMzQ3YzguNy0xMCA3LjgtMjUuMS0yLjItMzMuOXMtMjUuMS03LjgtMzMuOSAyLjJsLTEzLjkgMTUuOS0xNC43LTguNWMxLjctMTIuNC0uMi0yNS01LjUtMzYuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdDaXJjbGVBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFYyMzIuMmMtMzkuMSAzMi4zLTY0IDgxLjEtNjQgMTM1LjhjMCA0OS41IDIwLjQgOTQuMiA1My4zIDEyNi4yQzM2NC41IDUwNS4xIDM1MS4xIDUxMiAzMzYgNTEySDI0MFY0MzJjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh2ODBINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4ek04MCAyMjRjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIODB6bTgwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnptMTEyLTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDI3MnpNNjQgMTEydjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkg4MGMtOC44IDAtMTYgNy4yLTE2IDE2ek0xNzYgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMTc2em04MCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ6bTk2IDI1NmExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xNDAuNy02Ny4zYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNkw1MjEuNCAzNTJINDMyYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDg5LjRsLTI4LjcgMjguN2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwbDU2LTU2YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC01Ni01NmMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djgwaDk2YzE1LjEgMCAyOC41LTYuOSAzNy4zLTE3LjhDMzQwLjQgNDYyLjIgMzIwIDQxNy41IDMyMCAzNjhjMC01NC43IDI0LjktMTAzLjUgNjQtMTM1LjhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek04MCA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTEyek0yNzIgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2ek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ0NpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMxNS4xIDAgMjguNS02LjkgMzcuMy0xNy44QzM0MC40IDQ2Mi4yIDMyMCA0MTcuNSAzMjAgMzY4YzAtNTQuNyAyNC45LTEwMy41IDY0LTEzNS44VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNODAgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMnpNMjcyIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMTUuMSAwIDI4LjUtNi45IDM3LjMtMTcuOEMzNDAuNCA0NjIuMiAzMjAgNDE3LjUgMzIwIDM2OGMwLTU0LjcgMjQuOS0xMDMuNSA2NC0xMzUuOFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ0NvbHVtbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQzLjQgMi42bC0yMjQgOTZjLTE0IDYtMjEuOCAyMS0xOC43IDM1LjhTMTYuOCAxNjAgMzIgMTYwdjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDU2YzEzLjMgMCAyNC0xMC43IDI0LTI0di04YzE1LjIgMCAyOC4zLTEwLjcgMzEuMy0yNS42cy00LjgtMjkuOS0xOC43LTM1LjhsLTIyNC05NmMtOC0zLjQtMTcuMi0zLjQtMjUuMiAwek0xMjggMjI0SDY0VjQyMC4zYy0uNiAuMy0xLjIgLjctMS44IDEuMWwtNDggMzJjLTExLjcgNy44LTE3IDIyLjQtMTIuOSAzNS45UzE3LjkgNTEyIDMyIDUxMkg0ODBjMTQuMSAwIDI2LjUtOS4yIDMwLjYtMjIuN3MtMS4xLTI4LjEtMTIuOS0zNS45bC00OC0zMmMtLjYtLjQtMS4yLS43LTEuOC0xLjFWMjI0SDM4NFY0MTZIMzQ0VjIyNEgyODBWNDE2SDIzMlYyMjRIMTY4VjQxNkgxMjhWMjI0ek0yNTYgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ0ZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djgwaDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNODAgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMnpNMjcyIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnpNNDQ4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjUxMmg2NFYxOTJINjI0YzguOCAwIDE2LTcuMiAxNi0xNlY0OGMwLTguOC03LjItMTYtMTYtMTZINDgwYzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ0xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djgwaDg4LjZjLTUuNC05LjQtOC42LTIwLjMtOC42LTMyVjM1MmMwLTIzLjcgMTIuOS00NC40IDMyLTU1LjRWMjcyYzAtMzAuNSAxMi4yLTU4LjIgMzItNzguNFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ2NCAyNDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NDhINDMyVjI3MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTgwIDMydjQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMlYyNzJjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nTmdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTE2OCA2NGg0OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxODR2NjRoMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMTc2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY4MGMwLTguOCA3LjItMTYgMTYtMTZ6TTMwNCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQ4IDE2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MzJjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhWMTEyek02MS4zIDcxLjFsMzQuNyA1MlY4MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djk2YzAgNy4xLTQuNiAxMy4zLTExLjQgMTUuM3MtMTQtLjYtMTcuOS02LjRMNjQgMTMyLjhWMTc2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjgwYzAtNy4xIDQuNi0xMy4zIDExLjQtMTUuM3MxNCAuNiAxNy45IDYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBIMzM2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjIwN2wtNDIuNCAxN0gzMDQgMjcyYy04LjggMC0xNiA3LjItMTYgMTZ2MzIgMjQuMlYzMDRjMCAuOSAuMSAxLjcgLjIgMi42YzIuMyA1OC4xIDI0LjEgMTQ0LjggOTguNyAyMDEuNWMtNS44IDIuNS0xMi4yIDMuOS0xOC45IDMuOUgyNDBWNDMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djgwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OHpNODAgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDgwem04MCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZ6TTY0IDExMnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTc2IDk2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDE3NnptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2ek00MjMuMSAyMjUuN2M1LjctMi4zIDEyLjEtMi4zIDE3LjggMGwxMjAgNDhDNTcwIDI3Ny40IDU3NiAyODYuMiA1NzYgMjk2YzAgNjMuMy0yNS45IDE2OC44LTEzNC44IDIxNC4yYy01LjkgMi41LTEyLjYgMi41LTE4LjUgMEMzMTMuOSA0NjQuOCAyODggMzU5LjMgMjg4IDI5NmMwLTkuOCA2LTE4LjYgMTUuMS0yMi4zbDEyMC00OHpNNTI3LjQgMzEyTDQzMiAyNzMuOFY0NjEuN2M2OC4yLTMzIDkxLjUtOTkgOTUuNC0xNDkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdVbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek0yMzcuMyA3MS4xbDM0LjcgNTJWODBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40bC0zNC43LTUyVjE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY4MGMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6TTExMiA4MHY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjgwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhWODBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg4OS45Yy02LjMtMTAuMi05LjktMjIuMi05LjktMzUuMWMwLTQ2LjkgMjUuOC04Ny44IDY0LTEwOS4yVjI3MS44IDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNODAgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMnpNMjcyIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnpNNTc2IDI3MmE4MCA4MCAwIDEgMCAtMTYwIDAgODAgODAgMCAxIDAgMTYwIDB6TTM1MiA0NzcuMWMwIDE5LjMgMTUuNiAzNC45IDM0LjkgMzQuOUg2MDUuMWMxOS4zIDAgMzQuOS0xNS42IDM0LjktMzQuOWMwLTUxLjQtNDEuNy05My4xLTkzLjEtOTMuMUg0NDUuMWMtNTEuNCAwLTkzLjEgNDEuNy05My4xIDkzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nV2hlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBIMzM2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEgyNDBWNDMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djgwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OHpNODAgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDgwem04MCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZ6bTExMi0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJ6TTY0IDExMnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTc2IDk2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDE3NnptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2em0zODQgODB2MTZjMCA0NC4yLTM1LjggODAtODAgODBINTQ0VjI3MmMwLTQ0LjIgMzUuOC04MCA4MC04MGgxNnptMCAxMjhjMCA0NC4yLTM1LjggODAtODAgODBINTQ0VjM4NGMwLTQ0LjIgMzUuOC04MCA4MC04MGgxNnYxNnptMCAxMTJjMCA0NC4yLTM1LjggODAtODAgODBINTQ0VjQ5NmMwLTQ0LjIgMzUuOC04MCA4MC04MGgxNnYxNnpNNTEyIDQ5NnYxNkg0OTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjQxNmgxNmM0NC4yIDAgODAgMzUuOCA4MCA4MHptMC05Nkg0OTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjMwNGgxNmM0NC4yIDAgODAgMzUuOCA4MCA4MHYxNnptMC0xMjh2MTZINDk2Yy00NC4yIDAtODAtMzUuOC04MC04MFYxOTJoMTZjNDQuMiAwIDgwIDM1LjggODAgODB6TTUyOCAzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxNjBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWNTZjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTk2IDY0djMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0Vjk2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6TTQ1NiA3MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHYzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djgwaDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNODAgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMnpNMjcyIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVsbGhvcm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDMyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45TDM4MS43IDUzYy00OCA0OC0xMTMuMSA3NS0xODEgNzVIMTkyIDE2MCA2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUybDguNyAwYzY3LjkgMCAxMzMgMjcgMTgxIDc1bDQzLjYgNDMuNmM5LjIgOS4yIDIyLjkgMTEuOSAzNC45IDYuOXMxOS44LTE2LjYgMTkuOC0yOS42VjMwMC40YzE4LjYtOC44IDMyLTMyLjUgMzItNjAuNHMtMTMuNC01MS42LTMyLTYwLjRWMzJ6bS02NCA3Ni43VjI0MCAzNzEuM0MzNTcuMiAzMTcuOCAyODAuNSAyODggMjAwLjcgMjg4SDE5MlYxOTJoOC43Yzc5LjggMCAxNTYuNS0yOS44IDIxNS4zLTgzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1bGxzZXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAyNTZBMTkyIDE5MiAwIDEgMCA2NCAyNTZhMTkyIDE5MiAwIDEgMCAzODQgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgODBhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6bTAtMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHpNMjI0IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXJnZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEuMSAyMjRDNDUgMjI0IDMyIDIxMSAzMiAxOTQuOWMwLTEuOSAuMi0zLjcgLjYtNS42QzM3LjkgMTY4LjMgNzguOCAzMiAyNTYgMzJzMjE4LjEgMTM2LjMgMjIzLjQgMTU3LjNjLjUgMS45IC42IDMuNyAuNiA1LjZjMCAxNi4xLTEzIDI5LjEtMjkuMSAyOS4xSDYxLjF6TTE0NCAxMjhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptMjQwIDE2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpNMjcyIDk2YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6TTE2IDMwNGMwLTI2LjUgMjEuNS00OCA0OC00OEg0NDhjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhINjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4em0xNiA5NmMwLTguOCA3LjItMTYgMTYtMTZINDY0YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNy42IDQuMkMyOC0yLjMgMTUuMi0xLjEgNyA3cy05LjQgMjEtMi44IDMwLjVsMTEyIDE2My4zTDE2LjYgMjMzLjJDNi43IDIzNi40IDAgMjQ1LjYgMCAyNTZzNi43IDE5LjYgMTYuNiAyMi44bDEwMy4xIDMzLjRMNjYuOCA0MTIuOGMtNC45IDkuMy0zLjIgMjAuNyA0LjMgMjguMXMxOC44IDkuMiAyOC4xIDQuM2wxMDAuNi01Mi45IDMzLjQgMTAzLjFjMy4yIDkuOSAxMi40IDE2LjYgMjIuOCAxNi42czE5LjYtNi43IDIyLjgtMTYuNmwzMy40LTEwMy4xIDEwMC42IDUyLjljOS4zIDQuOSAyMC43IDMuMiAyOC4xLTQuM3M5LjItMTguOCA0LjMtMjguMUwzOTIuMyAzMTIuMmwxMDMuMS0zMy40YzkuOS0zLjIgMTYuNi0xMi40IDE2LjYtMjIuOHMtNi43LTE5LjYtMTYuNi0yMi44TDM4OC45IDE5OC43bDI1LjctNzAuNGMzLjItOC44IDEtMTguNi01LjYtMjUuMnMtMTYuNC04LjgtMjUuMi01LjZsLTcwLjQgMjUuN0wyNzguOCAxNi42QzI3NS42IDYuNyAyNjYuNCAwIDI1NiAwcy0xOS42IDYuNy0yMi44IDE2LjZsLTMyLjMgOTkuNkwzNy42IDQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVzU2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwQzM0OC44IDAgNDQ4IDM1LjIgNDQ4IDgwVjk2IDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0OEgxMjh2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjk2IDgwQzAgMzUuMiA5OS4yIDAgMjI0IDB6TTY0IDEyOFYyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTgwIDQwMGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTI4OCAwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAwQzQyMi40IDAgNTEyIDM1LjIgNTEyIDgwVjk2bDAgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJsMCAxNjBjMCAxNy43LTE0LjMgMzItMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJINDE2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0NDhIMTkydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgwVjk2aDBWODBDNjQgMzUuMiAxNTMuNiAwIDI4OCAwek0xMjggMTYwdjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDI3MlYxMjhIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzA0IDI4OEg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDMwNFYyODh6TTE0NCA0MDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0yODggMGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTM4NCA4MGMwLTguOC03LjItMTYtMTYtMTZIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDM2OGM4LjggMCAxNi03LjIgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1c2luZXNzVGltZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODQgNDhIMzI4YzQuNCAwIDggMy42IDggOFY5NkgxNzZWNTZjMC00LjQgMy42LTggOC04em0tNTYgOFY5Nkg2NEMyOC43IDk2IDAgMTI0LjcgMCAxNjB2OTZIMTkyIDM1Mmg4LjJjMzIuMy0zOS4xIDgxLjEtNjQgMTM1LjgtNjRjNS40IDAgMTAuNyAuMiAxNiAuN1YxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzg0VjU2YzAtMzAuOS0yNS4xLTU2LTU2LTU2SDE4NGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZ6TTMyMCAzNTJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODhIMFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzYwLjJDMzM1LjEgNDQ5LjYgMzIwIDQxMC41IDMyMCAzNjhjMC01LjQgLjItMTAuNyAuNy0xNmwtLjcgMHptMzIwIDE2YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6TTQ5NiAyODhjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDQ5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMwNGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI5LjEgMTQyLjljLTYyLjUtNjIuNS0xNTUuOC02Mi41LTIxOC4zIDBzLTYyLjUgMTYzLjggMCAyMjYuM3MxNTUuOCA2Mi41IDIxOC4zIDBjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM2MtODcuNSA4Ny41LTIyMS4zIDg3LjUtMzA4LjggMHMtODcuNS0yMjkuMyAwLTMxNi44czIyMS4zLTg3LjUgMzA4LjggMGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FibGVDYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNjAgNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzIgMjg4YzAtMzUuMyAyOC43LTY0IDY0LTY0SDIzMlYxNTcuNWwtMjAzLjEgNDJjLTEzIDIuNy0yNS43LTUuNy0yOC40LTE4LjZzNS43LTI1LjcgMTguNi0yOC40bDIzMi00OCAyMzItNDhjMTMtMi43IDI1LjcgNS43IDI4LjQgMTguNnMtNS43IDI1LjctMTguNiAyOC40TDI4MCAxNDcuNVYyMjRINDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg4em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2SDk2em0xMTIgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2SDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2VjMwNGMwLTguOC03LjItMTYtMTYtMTZIMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWtlQ2FuZGxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Ni40IDUuNUw2MS44IDQ3LjZDNTggNTQuMSA1NiA2MS42IDU2IDY5LjJWNzJjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MFY2OS4yYzAtNy42LTItMTUtNS44LTIxLjZMMTA1LjYgNS41QzEwMy42IDIuMSAxMDAgMCA5NiAwcy03LjYgMi4xLTkuNiA1LjV6bTEyOCAwTDE4OS44IDQ3LjZjLTMuOCA2LjUtNS44IDE0LTUuOCAyMS42VjcyYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBWNjkuMmMwLTcuNi0yLTE1LTUuOC0yMS42TDIzMy42IDUuNUMyMzEuNiAyLjEgMjI4IDAgMjI0IDBzLTcuNiAyLjEtOS42IDUuNXpNMzE3LjggNDcuNmMtMy44IDYuNS01LjggMTQtNS44IDIxLjZWNzJjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MFY2OS4yYzAtNy42LTItMTUtNS44LTIxLjZMMzYxLjYgNS41QzM1OS42IDIuMSAzNTYgMCAzNTIgMHMtNy42IDIuMS05LjYgNS41TDMxNy44IDQ3LjZ6TTEyOCAxNzZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhjLTM1LjMgMC02NCAyOC43LTY0IDY0djcxYzguMyA1LjIgMTguMSA5IDI4LjggOWMxMy41IDAgMjcuMi02LjEgMzguNC0xMy40YzUuNC0zLjUgOS45LTcuMSAxMy05LjdjMS41LTEuMyAyLjctMi40IDMuNS0zLjFjLjQtLjQgLjctLjYgLjgtLjhsLjEtLjEgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBjMy4xLTMuMiA3LjQtNC45IDExLjktNC44czguNiAyLjEgMTEuNiA1LjRsMCAwIDAgMCAuMSAuMWMuMSAuMSAuNCAuNCAuNyAuN2MuNyAuNyAxLjcgMS43IDMuMSAzYzIuOCAyLjYgNi44IDYuMSAxMS44IDkuNWMxMC4yIDcuMSAyMyAxMy4xIDM2LjMgMTMuMXMyNi4xLTYgMzYuMy0xMy4xYzUtMy41IDktNi45IDExLjgtOS41YzEuNC0xLjMgMi40LTIuMyAzLjEtM2MuMy0uMyAuNi0uNiAuNy0uN2wuMS0uMWMzLTMuNSA3LjQtNS40IDEyLTUuNHM5IDIgMTIgNS40bC4xIC4xYy4xIC4xIC40IC40IC43IC43Yy43IC43IDEuNyAxLjcgMy4xIDNjMi44IDIuNiA2LjggNi4xIDExLjggOS41YzEwLjIgNy4xIDIzIDEzLjEgMzYuMyAxMy4xczI2LjEtNiAzNi4zLTEzLjFjNS0zLjUgOS02LjkgMTEuOC05LjVjMS40LTEuMyAyLjQtMi4zIDMuMS0zYy4zLS4zIC42LS42IC43LS43bC4xLS4xYzIuOS0zLjQgNy4xLTUuMyAxMS42LTUuNHM4LjcgMS42IDExLjkgNC44bDAgMCAwIDAgMCAwIC4xIC4xYy4yIC4yIC40IC40IC44IC44Yy44IC43IDEuOSAxLjggMy41IDMuMWMzLjEgMi42IDcuNSA2LjIgMTMgOS43YzExLjIgNy4zIDI0LjkgMTMuNCAzOC40IDEzLjRjMTAuNyAwIDIwLjUtMy45IDI4LjgtOVYyODhjMC0zNS4zLTI4LjctNjQtNjQtNjRWMTc2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjQ4SDI1NlYxNzZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhIMTI4VjE3NnpNNDQ4IDM5NC42Yy04LjUgMy4zLTE4LjIgNS40LTI4LjggNS40Yy0yMi41IDAtNDIuNC05LjktNTUuOC0xOC42Yy00LjEtMi43LTcuOC01LjQtMTAuOS03LjhjLTIuOCAyLjQtNi4xIDUtOS44IDcuNUMzMjkuOCAzOTAgMzEwLjYgNDAwIDI4OCA0MDBzLTQxLjgtMTAtNTQuNi0xOC45Yy0zLjUtMi40LTYuNy00LjktOS40LTcuMmMtMi43IDIuMy01LjkgNC43LTkuNCA3LjJDMjAxLjggMzkwIDE4Mi42IDQwMCAxNjAgNDAwcy00MS44LTEwLTU0LjYtMTguOWMtMy43LTIuNi03LTUuMi05LjgtNy41Yy0zLjEgMi40LTYuOCA1LjEtMTAuOSA3LjhDNzEuMiAzOTAuMSA1MS4zIDQwMCAyOC44IDQwMGMtMTAuNiAwLTIwLjMtMi4yLTI4LjgtNS40VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzk0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGN1bGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNOTYgNjRIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMzIgMTYwYTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6TTk2IDM1MmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTY0IDQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTE5MiAyNTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0zMiA2NGEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem02NC02NGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6bTMyIDY0YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6TTI4OCA0NDhhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhckNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6TTMyOSAzMDVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtOTUgOTUtNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMzI5IDMwNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJEYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMFYxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIOTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMTkySDQ0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE5MnptODAgNjRjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyRGF5cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NEgyODhWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY2NGg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHY0OEgwVjExMkMwIDg1LjUgMjEuNSA2NCA0OCA2NEg5NlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAxOTJINDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTkyem02NCA4MHYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTI4IDB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZIMzM2ek02NCA0MDB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlY0MDBjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6bTE0NC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWNDAwYzAtOC44LTcuMi0xNi0xNi0xNkgyMDh6bTExMiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjQwMGMwLTguOC03LjItMTYtMTYtMTZIMzM2Yy04LjggMC0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMFYxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIOTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMTkySDQ0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE5MnpNMzEyIDM3NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJWNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2NDhINDQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OEgzNTJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNjRIMTYwVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzk2IDE0LjMgOTYgMzJ6TTQ0OCAxOTJIMFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINDAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE5MnpNMjI0IDI0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY1Nmg1NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNDh2NTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzc2SDE0NGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg1NlYyNzJjMC0xMy4zIDEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyV2VlayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NEgyODhWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY2NGg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHY0OEgwVjExMkMwIDg1LjUgMjEuNSA2NCA0OCA2NEg5NlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAxOTJINDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTkyem04MCA2NGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNkgzNjhjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMFYxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIOTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMTkySDQ0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE5MnpNMzA1IDMwNWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC00NyA0Ny00Ny00N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw0NyA0Ny00NyA0N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDQ3LTQ3IDQ3IDQ3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNDctNDcgNDctNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMyVjY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjQ4SDQ0OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzUyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjY0SDE2MFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMlM5NiAxNC4zIDk2IDMyek00NDggMTkySDBWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQwMGMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbWVyYVJldHJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMC42IDEyMS4yTDI3MS4xIDk2IDQ0OCA5NnY5NkgzMzMuMmMtMjEuOS0xNS4xLTQ4LjUtMjQtNzcuMi0yNHMtNTUuMiA4LjktNzcuMiAyNEg2NFYxMjhIMTkyYzkuOSAwIDE5LjctMi4zIDI4LjYtNi44ek0wIDEyOFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDI3MS4xYy05LjkgMC0xOS43IDIuMy0yOC42IDYuOEwxOTIgNjRIMTYwVjQ4YzAtOC44LTcuMi0xNi0xNi0xNkg4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTZDMjguNyA2NCAwIDkyLjcgMCAxMjh6TTE2OCAzMDRhODggODggMCAxIDEgMTc2IDAgODggODggMCAxIDEgLTE3NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1lcmFSb3RhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEzLjEgNjQuOEwyMDIuNyA5NkgxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDQzNy4zTDQyNi45IDY0LjhDNDIwLjQgNDUuMiA0MDIuMSAzMiAzODEuNCAzMkgyNTguNmMtMjAuNyAwLTM5IDEzLjItNDUuNSAzMi44ek00NDggMjU2YzAgOC44LTcuMiAxNi0xNiAxNkgzNTUuM2MtNi4yIDAtMTEuMy01LjEtMTEuMy0xMS4zYzAtMyAxLjItNS45IDMuMy04TDM3MSAyMjljLTEzLjYtMTMuNC0zMS45LTIxLTUxLTIxYy0xOS4yIDAtMzcuNyA3LjYtNTEuMyAyMS4zTDI0OSAyNDljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMTkuNy0xOS43QzI1Ny40IDE3Mi43IDI4OCAxNjAgMzIwIDE2MGMzMS44IDAgNjIuNCAxMi42IDg1IDM1bDIzLjctMjMuN2MyLjEtMi4xIDUtMy4zIDgtMy4zYzYuMiAwIDExLjMgNS4xIDExLjMgMTEuM1YyNTZ6TTE5MiAzMjBjMC04LjggNy4yLTE2IDE2LTE2aDc2LjdjNi4yIDAgMTEuMyA1LjEgMTEuMyAxMS4zYzAgMy0xLjIgNS45LTMuMyA4TDI2OSAzNDdjMTMuNiAxMy40IDMxLjkgMjEgNTEgMjFjMTkuMiAwIDM3LjctNy42IDUxLjMtMjEuM0wzOTEgMzI3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtMTkuNyAxOS43QzM4Mi42IDQwMy4zIDM1MiA0MTYgMzIwIDQxNmMtMzEuOCAwLTYyLjQtMTIuNi04NS0zNWwtMjMuNyAyMy43Yy0yLjEgMi4xLTUgMy4zLTggMy4zYy02LjIgMC0xMS4zLTUuMS0xMS4zLTExLjNWMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ5LjEgNjQuOEwxMzguNyA5Nkg2NEMyOC43IDk2IDAgMTI0LjcgMCAxNjBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzczLjNMMzYyLjkgNjQuOEMzNTYuNCA0NS4yIDMzOC4xIDMyIDMxNy40IDMySDE5NC42Yy0yMC43IDAtMzkgMTMuMi00NS41IDMyLjh6TTI1NiAxOTJhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbXBncm91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc3IDUyYzExLTEzLjggOC44LTMzLjktNS00NXMtMzMuOS04LjgtNDUgNUwyODggNjAuOCAyNDkgMTJjLTExLTEzLjgtMzEuMi0xNi00NS01cy0xNiAzMS4yLTUgNDVsNDggNjBMMTIuMyA0MDUuNEM0LjMgNDE1LjQgMCA0MjcuNyAwIDQ0MC40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyODggNTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ0MC40YzAtMTIuNy00LjMtMjUuMS0xMi4zLTM1TDMyOSAxMTJsNDgtNjB6TTI4OCA0NDhIMTY4LjVMMjg4IDI5MS43IDQwNy41IDQ0OEgyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbmR5Q2FuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDguOCAxMzEuNWMzLjctMi4zIDcuOS0zLjUgMTIuMi0zLjVjMTIuNyAwIDIzIDEwLjMgMjMgMjN2NS42YzAgOS45LTUuMSAxOS4xLTEzLjUgMjQuM0wzMC4xIDM5My43Qy4xIDQxMi41LTkgNDUxLjkgOS43IDQ4MS45czU4LjIgMzkuMSA4OC4yIDIwLjRMNDM4LjQgMjg5LjVjNDUuOC0yOC42IDczLjYtNzguOCA3My42LTEzMi44VjE1MUM1MTIgNjcuNiA0NDQuNCAwIDM2MSAwYy0yOC4zIDAtNTYgOC04MC4xIDIzTDI1NC4xIDM5LjdjLTMwIDE4LjctMzkuMSA1OC4yLTIwLjQgODguMnM1OC4yIDM5LjEgODguMiAyMC40bDI2LjgtMTYuOHpNMjk4LjQgNDkuOGM5LjItNS43IDE5LjEtMTAuMSAyOS40LTEzLjFMMzQ4IDk3LjVjLTUuNyAxLjQtMTEuMiAzLjctMTYuMyA2LjhsLTEyLjYgNy45TDI5OC40IDQ5Ljh6bTg4LjUgNTIuN2w0Ni4yLTQ2LjJjOC41IDYuNSAxNi4xIDE0LjEgMjIuNiAyMi42bC00Ni4yIDQ2LjJjLTUuMS05LjYtMTMtMTcuNS0yMi42LTIyLjZ6bTI4LjkgNTkuM2w2MS42IDIwLjVjLTIuMiAxMC41LTUuOCAyMC43LTEwLjUgMzAuMmwtNjItMjAuN2M2LjItOC44IDEwLjEtMTkuMSAxMS0zMC4xem0tODYuMSA4Mi41bDYwLjQgMzcuNy0zMC4yIDE4LjktNjAuNC0zNy43IDMwLjItMTguOXptLTEwNy4yIDY3bDYwLjQgMzcuNy0zMC4yIDE4LjktNjAuNC0zNy43IDMwLjItMTguOXpNMTE5LjMgMzc1LjdsNjAuNCAzNy43LTMwLjIgMTguOUw4OS4xIDM5NC42bDMwLjItMTguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FubmFiaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjNS4zIDAgMTAuMyAyLjcgMTMuMyA3LjFjMTUuOCAyMy41IDM2LjcgNjMuNyA0OS4yIDEwOWM3LjIgMjYuNCAxMS44IDU1LjIgMTAuNCA4NGMxMS41LTguOCAyMy43LTE2LjcgMzUuOC0yMy42YzQxLTIzLjMgODQuNC0zNi45IDExMi4yLTQyLjVjNS4yLTEgMTAuNyAuNiAxNC40IDQuNHM1LjQgOS4yIDQuNCAxNC41Yy01LjYgMjcuNy0xOS4zIDcwLjktNDIuNyAxMTEuN2MtOS4xIDE1LjktMTkuOSAzMS43LTMyLjQgNDYuM2MyNy44IDYuNiA1Mi40IDE3LjMgNjcuMiAyNS41YzUuMSAyLjggOC4yIDguMiA4LjIgMTRzLTMuMiAxMS4yLTguMiAxNGMtMTUuMiA4LjQtNDAuOSAxOS41LTY5LjggMjYuMWMtMjAuMiA0LjYtNDIuOSA3LjItNjUuMiA0LjZsOC4zIDMzLjFjMS41IDYuMS0uNiAxMi40LTUuNSAxNi40cy0xMS42IDQuNi0xNy4yIDEuOUwyODAgNDE3LjJWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjQxNy4ybC01OC41IDI5LjFjLTUuNiAyLjgtMTIuMyAyLjEtMTcuMi0xLjlzLTctMTAuMy01LjUtMTYuNGw4LjMtMzMuMWMtMjIuMiAyLjYtNDUgMC02NS4yLTQuNmMtMjguOS02LjYtNTQuNi0xNy42LTY5LjgtMjYuMWMtNS4xLTIuOC04LjItOC4yLTguMi0xNHMzLjItMTEuMiA4LjItMTRjMTQuOC04LjIgMzkuNC0xOC44IDY3LjItMjUuNUM3OC45IDI5Ni4zIDY4LjEgMjgwLjUgNTkgMjY0LjZjLTIzLjQtNDAuOC0zNy4xLTg0LTQyLjctMTExLjdjLTEuMS01LjIgLjYtMTAuNyA0LjQtMTQuNXM5LjItNS40IDE0LjQtNC40YzI3LjkgNS41IDcxLjIgMTkuMiAxMTIuMiA0Mi41YzEyLjEgNi45IDI0LjMgMTQuNyAzNS44IDIzLjZjLTEuNC0yOC43IDMuMS01Ny42IDEwLjQtODRjMTIuNS00NS4zIDMzLjQtODUuNSA0OS4yLTEwOWMzLTQuNCA4LTcuMSAxMy4zLTcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2Fwc3VsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhWMjU2SDY0VjE0NHpNMCAxNDRWMzY4YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJWMTg5LjZjMS44IDE5LjEgOC4yIDM4IDE5LjggNTQuOEwzNzIuMyA0MzEuN2MzNS41IDUxLjcgMTA1LjMgNjQuMyAxNTYgMjguMXM2My0xMDcuNSAyNy41LTE1OS4yTDQyNy4zIDExMy4zQzM5MS44IDYxLjUgMzIxLjkgNDkgMjcxLjMgODUuMmMtMjggMjAtNDQuMyA1MC44LTQ3LjMgODNWMTQ0YzAtNjEuOS01MC4xLTExMi0xMTItMTEyUzAgODIuMSAwIDE0NHptMjk2LjYgNjQuMmMtMTYtMjMuMy0xMC01NS4zIDExLjktNzFjMjEuMi0xNS4xIDUwLjUtMTAuMyA2NiAxMi4ybDY3IDk3LjZMMzYxLjYgMzAzbC02NS05NC44ek00OTEgNDA3LjdjLS44IC42LTEuNiAxLjEtMi40IDEuNmw0LTIuOGMtLjUgLjQtMSAuOC0xLjYgMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMybDk2IDBjMC0xNy43IDE0LjMtMzIgMzItMzJoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJoMTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRsMTYgMHptMzA0IDk2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djMySDMyMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgzMnYzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjI1NmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzODRWMTkyek04MCAyNDBjMCA4LjggNy4yIDE2IDE2IDE2aDk2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDk2Yy04LjggMC0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhckJ1cnN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA4Yy02LjYgMC0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNmwzNS4zLTMyLjUgOS41LTM1LjQgMTAuNC0zOC42YzgtMjkuOSAzMC41LTUyLjEgNTcuOS02MC45bDQxLTU5LjJjMTEuMy0xNi4zIDI2LjQtMjguOSA0My41LTM3LjJjLS40LS42LS44LTEuMi0xLjMtMS44Yy00LjEtNS4xLTEwLjktNy4yLTE3LjItNS4zTDIyMC4zIDkyLjFsLTI5LjQtNzRDMTg4LjQgMTIgMTgyLjYgOCAxNzYgOHpNMzY3LjcgMTYxLjVsMTM1LjYgMzYuM2M2LjUgMS44IDExLjMgNy40IDExLjggMTQuMmw0LjYgNTYuNS0yMDEuNS01NCAzMi4yLTQ2LjZjMy44LTUuNiAxMC44LTguMSAxNy4zLTYuNHptLTY5LjktMzBsLTQ3LjkgNjkuM2MtMjEuNiAzLTQwLjMgMTguNi00Ni4zIDQxbC0xMC40IDM4LjYtMTYuNiA2MS44LTguMyAzMC45Yy00LjYgMTcuMSA1LjYgMzQuNiAyMi42IDM5LjJsMTUuNSA0LjFjMTcuMSA0LjYgMzQuNi01LjYgMzkuMi0yMi42bDguMy0zMC45IDI0Ny4zIDY2LjMtOC4zIDMwLjljLTQuNiAxNy4xIDUuNiAzNC42IDIyLjYgMzkuMmwxNS41IDQuMWMxNy4xIDQuNiAzNC42LTUuNiAzOS4yLTIyLjZsOC4zLTMwLjlMNTk1IDM4OGwxMC40LTM4LjZjNi0yMi40LTIuNS00NS4yLTE5LjYtNTguN2wtNi44LTg0Yy0yLjctMzMuNy0yNi40LTYyLTU5LTcwLjhMMzg0LjIgOTkuN2MtMzIuNy04LjgtNjcuMyA0LTg2LjUgMzEuOHptLTE3IDEzMWEyNCAyNCAwIDEgMSAtMTIuNCA0Ni40IDI0IDI0IDAgMSAxIDEyLjQtNDYuNHptMjE3LjkgODMuMkEyNCAyNCAwIDEgMSA1NDUgMzU4LjFhMjQgMjQgMCAxIDEgLTQ2LjQtMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgwIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjR6TTE4NS44IDIyNEgzMjYuMmM2LjggMCAxMi44IDQuMyAxNS4xIDEwLjZMMzYwLjMgMjg4SDE1MS43bDE5LjEtNTMuNGMyLjMtNi40IDguMy0xMC42IDE1LjEtMTAuNnptLTc1LjMtMTAuOUw4Mi4yIDI5Mi40QzYyLjEgMzAwLjkgNDggMzIwLjggNDggMzQ0djQwIDY0IDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQ0OEgzODR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQ4IDM4NCAzNDRjMC0yMy4yLTE0LjEtNDMuMS0zNC4yLTUxLjZsLTI4LjMtNzkuM0MzOTAuMSAxODEuMyAzNjAgMTYwIDMyNi4yIDE2MEgxODUuOGMtMzMuOCAwLTY0IDIxLjMtNzUuMyA1My4xek0xMjggMzQ0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMjMyIDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTM5IDM5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw0OCA0OGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMNzMgMzljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwem00MDAgMEwzOTEgODdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw0OC00OGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJSZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NS40IDk2SDM0Ni42YzEzLjYgMCAyNS43IDguNiAzMC4yIDIxLjRMNDAyLjkgMTkySDEwOS4xbDI2LjEtNzQuNmM0LjUtMTIuOCAxNi42LTIxLjQgMzAuMi0yMS40em0tOTAuNiAuM0wzOS42IDE5Ni44QzE2LjQgMjA2LjQgMCAyMjkuMyAwIDI1NnY4MGMwIDIzLjcgMTIuOSA0NC40IDMyIDU1LjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQwMEgzODR2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzkxLjRjMTkuMS0xMS4xIDMyLTMxLjcgMzItNTUuNFYyNTZjMC0yNi43LTE2LjQtNDkuNi0zOS42LTU5LjJMNDM3LjIgOTYuM0M0MjMuNyA1Ny44IDM4Ny40IDMyIDM0Ni42IDMySDE2NS40Yy00MC44IDAtNzcuMSAyNS44LTkwLjYgNjQuM3pNMjA4IDI3Mmg5NmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6TTQ4IDI4MGMwLTEzLjMgMTAuNy0yNCAyNC0yNGgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg3MmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTM2MC0yNGgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg0MDhjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhclNpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcxLjMgOTZIMjI0djk2SDExMS4zbDMwLjQtNzUuOUMxNDYuNSAxMDQgMTU4LjIgOTYgMTcxLjMgOTZ6TTI3MiAxOTJWOTZoODEuMmM5LjcgMCAxOC45IDQuNCAyNSAxMmw2Ny4yIDg0SDI3MnptMjU2LjIgMUw0MjguMiA2OGMtMTguMi0yMi44LTQ1LjgtMzYtNzUtMzZIMTcxLjNjLTM5LjMgMC03NC42IDIzLjktODkuMSA2MC4zTDQwLjYgMTk2LjRDMTYuOCAyMDUuOCAwIDIyOC45IDAgMjU2VjM2OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2NS4zYzcuNiA0NS40IDQ3LjEgODAgOTQuNyA4MHM4Ny4xLTM0LjYgOTQuNy04MEgzODUuM2M3LjYgNDUuNCA0Ny4xIDgwIDk0LjcgODBzODcuMS0zNC42IDk0LjctODBINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMyMGMwLTY1LjItNDguOC0xMTktMTExLjgtMTI3ek00MzQuNyAzNjhhNDggNDggMCAxIDEgOTAuNSAzMiA0OCA0OCAwIDEgMSAtOTAuNS0zMnpNMTYwIDMzNmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhclR1bm5lbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMEMxMTQuNiAwIDAgMTE0LjYgMCAyNTZWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0aDQyLjhjLTYuNi01LjktMTAuOC0xNC40LTEwLjgtMjRWMzc2YzAtMjAuOCAxMS4zLTM4LjkgMjguMS00OC42bDIxLTY0LjdjNy41LTIzLjEgMjktMzguNyA1My4zLTM4LjdIMzEzLjZjMjQuMyAwIDQ1LjggMTUuNiA1My4zIDM4LjdsMjEgNjQuN2MxNi44IDkuNyAyOC4yIDI3LjggMjguMiA0OC42VjQ4OGMwIDkuNi00LjIgMTguMS0xMC44IDI0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYyNTZDNTEyIDExNC42IDM5Ny40IDAgMjU2IDB6TTM2Mi44IDUxMmMtNi42LTUuOS0xMC44LTE0LjQtMTAuOC0yNFY0NDhIMTYwdjQwYzAgOS42LTQuMiAxOC4xLTEwLjggMjRIMzYyLjh6TTE5MC44IDI3Ny41TDE3NyAzMjBIMzM1bC0xMy44LTQyLjVjLTEuMS0zLjMtNC4xLTUuNS03LjYtNS41SDE5OC40Yy0zLjUgMC02LjUgMi4yLTcuNiA1LjV6TTE2OCA0MDhhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0yMDAtMjRhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNS4yIDExNy40TDEwOS4xIDE5Mkg0MDIuOWwtMjYuMS03NC42QzM3Mi4zIDEwNC42IDM2MC4yIDk2IDM0Ni42IDk2SDE2NS40Yy0xMy42IDAtMjUuNyA4LjYtMzAuMiAyMS40ek0zOS42IDE5Ni44TDc0LjggOTYuM0M4OC4zIDU3LjggMTI0LjYgMzIgMTY1LjQgMzJIMzQ2LjZjNDAuOCAwIDc3LjEgMjUuOCA5MC42IDY0LjNsMzUuMiAxMDAuNWMyMy4yIDkuNiAzOS42IDMyLjUgMzkuNiA1OS4yVjQwMHY0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0NDhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwMEg5NnY0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDAwIDI1NmMwLTI2LjcgMTYuNC00OS42IDM5LjYtNTkuMnpNMTI4IDI4OGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0yODggMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJhdmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTEyQzAgNjcuOCAzNS44IDMyIDgwIDMySDQxNmM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MFYzNTJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDBIMjg4YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDgwYy00NC4yIDAtODAtMzUuOC04MC04MFYxMTJ6TTMyMCAzNTJINDQ4VjI1Nkg0MTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMzUyek05NiAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIOTZ6bTk2IDMzNmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzcuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44TDMyIDE5MmMtMTIuOSAwLTI0LjYgNy44LTI5LjYgMTkuOHMtMi4yIDI1LjcgNi45IDM0LjlsMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNCAyNzguNmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsMTI4LTEyOGM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOXMxOS44IDE2LjYgMTkuOCAyOS42bDAgMjU2YzAgMTIuOS03LjggMjQuNi0xOS44IDI5LjZzLTI1LjcgMi4yLTM0LjktNi45bC0xMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni42IDI3OC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy05LjItOS4yLTIyLjktMTEuOS0zNC45LTYuOXMtMTkuOCAxNi42LTE5LjggMjkuNmwwIDI1NmMwIDEyLjkgNy44IDI0LjYgMTkuOCAyOS42czI1LjcgMi4yIDM0LjktNi45bDEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgyLjYgMTM3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44SDI4OGMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC0xMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJyb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ2LjcgNkMzMzcuNiAxNyAzMjAgNDIuMyAzMjAgNzJjMCA0MCAxNS4zIDU1LjMgNDAgODBzNDAgNDAgODAgNDBjMjkuNyAwIDU1LTE3LjYgNjYtMjYuN2M0LTMuMyA2LTguMiA2LTEzLjNzLTItMTAtNi0xMy4yYy0xMS40LTkuMS0zOC4zLTI2LjgtNzQtMjYuOGMtMzIgMC00MCA4LTQwIDhzOC04IDgtNDBjMC0zNS43LTE3LjctNjIuNi0yNi44LTc0QzM3MCAyIDM2NS4xIDAgMzYwIDBzLTEwIDItMTMuMyA2ek0yNDQuNiAxMzZjLTQwIDAtNzcuMSAxOC4xLTEwMS43IDQ4LjJsNjAuNSA2MC41YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTU1LjMtNTUuMyAwIC4xTDIuMiA0NzcuOUMtMiA0ODctLjEgNDk3LjggNyA1MDVzMTcuOSA5IDI3LjEgNC44bDEzNC43LTYyLjQtNTIuMS01Mi4xYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMMTk5LjcgNDMzbDEwMC4yLTQ2LjRjNDYuNC0yMS41IDc2LjItNjggNzYuMi0xMTkuMkMzNzYgMTk0LjggMzE3LjIgMTM2IDI0NC42IDEzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FydEFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCAwQzEwLjcgMCAwIDEwLjcgMCAyNFMxMC43IDQ4IDI0IDQ4SDY5LjVjMy44IDAgNy4xIDIuNyA3LjkgNi41bDUxLjYgMjcxYzYuNSAzNCAzNi4yIDU4LjUgNzAuNyA1OC41SDQ4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxOTkuN2MtMTEuNSAwLTIxLjQtOC4yLTIzLjYtMTkuNUwxNzAuNyAyODhINDU5LjJjMzIuNiAwIDYxLjEtMjEuOCA2OS41LTUzLjNsNDEtMTUyLjNDNTc2LjYgNTcgNTU3LjQgMzIgNTMxLjEgMzJIMzYwVjEzNC4xbDIzLTIzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNjQgNjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDIzIDIzVjMySDEyMC4xQzExMSAxMi44IDkxLjYgMCA2OS41IDBIMjR6TTE3NiA1MTJhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0zMzYtNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FydEZsYXRiZWRTdWl0Y2FzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEg0OGM0NC4yIDAgODAgMzUuOCA4MCA4MFYzNjhjMCA4LjggNy4yIDE2IDE2IDE2SDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1NDEuM2MxLjggNSAyLjcgMTAuNCAyLjcgMTZjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC01LjYgMS0xMSAyLjctMTZIMjUzLjNjMS44IDUgMi43IDEwLjQgMi43IDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtNS42IDEtMTEgMi43LTE2SDE0NGMtNDQuMiAwLTgwLTM1LjgtODAtODBWODBjMC04LjgtNy4yLTE2LTE2LTE2SDMyQzE0LjMgNjQgMCA0OS43IDAgMzJ6TTQzMiA5NlY1NmMwLTQuNC0zLjYtOC04LThIMzQ0Yy00LjQgMC04IDMuNi04IDhWOTZoOTZ6TTI4OCA5NlY1NmMwLTMwLjkgMjUuMS01NiA1Ni01Nmg4MGMzMC45IDAgNTYgMjUuMSA1NiA1NlY5NiAzMjBIMjg4Vjk2ek01MTIgMzIwVjk2aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjI3MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg1MTJ6TTI0MCA5NmgxNlYzMjBIMjQwYy0yNi41IDAtNDgtMjEuNS00OC00OFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRGbGF0YmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyUzE0LjMgNjQgMzIgNjRINDhjOC44IDAgMTYgNy4yIDE2IDE2VjM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MGgxOC43Yy0xLjggNS0yLjcgMTAuNC0yLjcgMTZjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGMwLTUuNi0xLTExLTIuNy0xNkg0NTAuN2MtMS44IDUtMi43IDEwLjQtMi43IDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC01LjYtMS0xMS0yLjctMTZINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE0NGMtOC44IDAtMTYtNy4yLTE2LTE2VjgwQzEyOCAzNS44IDkyLjIgMCA0OCAwSDMyek0xOTIgODBWMjcyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDU2MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEg0NjRWMTc2YzAgNS45LTMuMiAxMS4zLTguNSAxNC4xcy0xMS41IDIuNS0xNi40LS44TDQwMCAxNjMuMmwtMzkuMSAyNi4xYy00LjkgMy4zLTExLjIgMy42LTE2LjQgLjhzLTguNS04LjItOC41LTE0LjFWMzJIMjQwYy0yNi41IDAtNDggMjEuNS00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FydFBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNEMwIDEwLjcgMTAuNyAwIDI0IDBINjkuNWMyMiAwIDQxLjUgMTIuOCA1MC42IDMyaDQxMWMyNi4zIDAgNDUuNSAyNSAzOC42IDUwLjRsLTQxIDE1Mi4zYy04LjUgMzEuNC0zNyA1My4zLTY5LjUgNTMuM0gxNzAuN2w1LjQgMjguNWMyLjIgMTEuMyAxMi4xIDE5LjUgMjMuNiAxOS41SDQ4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxOTkuN2MtMzQuNiAwLTY0LjMtMjQuNi03MC43LTU4LjVMNzcuNCA1NC41Yy0uNy0zLjgtNC02LjUtNy45LTYuNUgyNEMxMC43IDQ4IDAgMzcuMyAwIDI0ek0xMjggNDY0YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTMzNi00OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTI1MiAxNjBjMCAxMSA5IDIwIDIwIDIwaDQ0djQ0YzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwVjE4MGg0NGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBIMzU2Vjk2YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMHY0NEgyNzJjLTExIDAtMjAgOS0yMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FydFNob3BwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjRDMCAxMC43IDEwLjcgMCAyNCAwSDY5LjVjMjIgMCA0MS41IDEyLjggNTAuNiAzMmg0MTFjMjYuMyAwIDQ1LjUgMjUgMzguNiA1MC40bC00MSAxNTIuM2MtOC41IDMxLjQtMzcgNTMuMy02OS41IDUzLjNIMTcwLjdsNS40IDI4LjVjMi4yIDExLjMgMTIuMSAxOS41IDIzLjYgMTkuNUg0ODhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTk5LjdjLTM0LjYgMC02NC4zLTI0LjYtNzAuNy01OC41TDc3LjQgNTQuNWMtLjctMy44LTQtNi41LTcuOS02LjVIMjRDMTAuNyA0OCAwIDM3LjMgMCAyNHpNMTI4IDQ2NGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0zMzYtNDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXNoUmVnaXN0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEM0Ni4zIDAgMzIgMTQuMyAzMiAzMlY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MHYzMkg4N2MtMzEuNiAwLTU4LjUgMjMuMS02My4zIDU0LjRMMS4xIDM2NC4xQy40IDM2OC44IDAgMzczLjYgMCAzNzguNFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjM3OC40YzAtNC44LS40LTkuNi0xLjEtMTQuNEw0ODguMiAyMTQuNEM0ODMuNSAxODMuMSA0NTYuNiAxNjAgNDI1IDE2MEgyMDhWMTI4aDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDY0ek05NiA0OEgyNTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6TTY0IDQzMmMwLTguOCA3LjItMTYgMTYtMTZINDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZ6bTQ4LTE2OGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6bTEyMC0yNGEyNCAyNCAwIDEgMSAtNDggMCAyNCAyNCAwIDEgMSA0OCAwek0xNjAgMzQ0YTI0IDI0IDAgMSAxIDAtNDggMjQgMjQgMCAxIDEgMCA0OHpNMzI4IDI0MGEyNCAyNCAwIDEgMSAtNDggMCAyNCAyNCAwIDEgMSA0OCAwek0yNTYgMzQ0YTI0IDI0IDAgMSAxIDAtNDggMjQgMjQgMCAxIDEgMCA0OHpNNDI0IDI0MGEyNCAyNCAwIDEgMSAtNDggMCAyNCAyNCAwIDEgMSA0OCAwek0zNTIgMzQ0YTI0IDI0IDAgMSAxIDAtNDggMjQgMjQgMCAxIDEgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2F0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAxOTJoMTcuMWMyMi4xIDM4LjMgNjMuNSA2NCAxMTAuOSA2NGMxMSAwIDIxLjgtMS40IDMyLTR2NCAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzM5LjJMMjgwIDQ0OGg1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxOTJjLTUzIDAtOTYtNDMtOTYtOTZWMTkyLjVjMC0xNi4xLTEyLTI5LjgtMjgtMzEuOGwtNy45LTFjLTE3LjUtMi4yLTMwLTE4LjItMjcuOC0zNS43czE4LjItMzAgMzUuNy0yNy44bDcuOSAxYzQ4IDYgODQuMSA0Ni44IDg0LjEgOTUuM3Y4NS4zYzM0LjQtNTEuNyA5My4yLTg1LjggMTYwLTg1Ljh6bTE2MCAyNi41djBjLTEwIDMuNS0yMC44IDUuNS0zMiA1LjVjLTI4LjQgMC01NC0xMi40LTcxLjYtMzJoMGMtMy43LTQuMS03LTguNS05LjktMTMuMkMzNTcuMyAxNjQgMzUyIDE0Ni42IDM1MiAxMjh2MFYzMiAxMiAxMC43QzM1MiA0LjggMzU2LjcgLjEgMzYyLjYgMGguMmMzLjMgMCA2LjQgMS42IDguNCA0LjJsMCAuMUwzODQgMjEuM2wyNy4yIDM2LjNMNDE2IDY0aDY0bDQuOC02LjRMNTEyIDIxLjMgNTI0LjggNC4zbDAtLjFjMi0yLjYgNS4xLTQuMiA4LjQtNC4yaC4yQzUzOS4zIC4xIDU0NCA0LjggNTQ0IDEwLjdWMTIgMzJ2OTZjMCAxNy4zLTQuNiAzMy42LTEyLjYgNDcuNmMtMTEuMyAxOS44LTI5LjYgMzUuMi01MS40IDQyLjl6TTQzMiAxMjhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptNDggMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZWRpU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNjYuN0MxMDEuMiA4MS45IDMyIDE2MC45IDMyIDI1NnM2OS4yIDE3NC4xIDE2MCAxODkuM1Y0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDUuM2MzMC45LTUuMiA1OS4yLTE3LjcgODMuMi0zNS44YzE0LjEtMTAuNiAxNy0zMC43IDYuNC00NC44cy0zMC43LTE3LTQ0LjgtNi40Yy0xMy4yIDkuOS0yOC4zIDE3LjMtNDQuOCAyMS42VjEzMmMxNi40IDQuMiAzMS42IDExLjYgNDQuOCAyMS42YzE0LjEgMTAuNiAzNC4yIDcuOCA0NC44LTYuNHM3LjgtMzQuMi02LjQtNDQuOGMtMjQtMTgtNTIuNC0zMC42LTgzLjItMzUuOFYzMnpNMTkyIDEzMlYzODBjLTU1LjItMTQuMi05Ni02NC4zLTk2LTEyNHM0MC44LTEwOS44IDk2LTEyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2VudFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjYuN2MzMC45IDUuMiA1OS4yIDE3LjcgODMuMiAzNS44YzE0LjEgMTAuNiAxNyAzMC43IDYuNCA0NC44cy0zMC43IDE3LTQ0LjggNi40QzI3OS40IDEzNy41IDI1Mi45IDEyOCAyMjQgMTI4Yy03MC43IDAtMTI4IDU3LjMtMTI4IDEyOHM1Ny4zIDEyOCAxMjggMTI4YzI4LjkgMCA1NS40LTkuNSA3Ni44LTI1LjZjMTQuMS0xMC42IDM0LjItNy44IDQ0LjggNi40czcuOCAzNC4yLTYuNCA0NC44Yy0yNCAxOC01Mi40IDMwLjYtODMuMiAzNS44VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDUuM0MxMDEuMiA0MzAuMSAzMiAzNTEuMSAzMiAyNTZzNjkuMi0xNzQuMSAxNjAtMTg5LjNWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNlcnRpZmljYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMSA3LjNDMjA1IDEgMTk2LTEuNCAxODcuNiAuOHMtMTQuOSA4LjktMTcuMSAxNy4zTDE1NC43IDgwLjZsLTYyLTE3LjVjLTguNC0yLjQtMTcuNCAwLTIzLjUgNi4xcy04LjUgMTUuMS02LjEgMjMuNWwxNy41IDYyTDE4LjEgMTcwLjZjLTguNCAyLjEtMTUgOC43LTE3LjMgMTcuMVMxIDIwNSA3LjMgMjExbDQ2LjIgNDVMNy4zIDMwMUMxIDMwNy0xLjQgMzE2IC44IDMyNC40czguOSAxNC45IDE3LjMgMTcuMWw2Mi41IDE1LjgtMTcuNSA2MmMtMi40IDguNCAwIDE3LjQgNi4xIDIzLjVzMTUuMSA4LjUgMjMuNSA2LjFsNjItMTcuNSAxNS44IDYyLjVjMi4xIDguNCA4LjcgMTUgMTcuMSAxNy4zczE3LjMtLjIgMjMuNC02LjRsNDUtNDYuMiA0NSA0Ni4yYzYuMSA2LjIgMTUgOC43IDIzLjQgNi40czE0LjktOC45IDE3LjEtMTcuM2wxNS44LTYyLjUgNjIgMTcuNWM4LjQgMi40IDE3LjQgMCAyMy41LTYuMXM4LjUtMTUuMSA2LjEtMjMuNWwtMTcuNS02MiA2Mi41LTE1LjhjOC40LTIuMSAxNS04LjcgMTcuMy0xNy4xcy0uMi0xNy40LTYuNC0yMy40bC00Ni4yLTQ1IDQ2LjItNDVjNi4yLTYuMSA4LjctMTUgNi40LTIzLjRzLTguOS0xNC45LTE3LjMtMTcuMWwtNjIuNS0xNS44IDE3LjUtNjJjMi40LTguNCAwLTE3LjQtNi4xLTIzLjVzLTE1LjEtOC41LTIzLjUtNi4xbC02MiAxNy41TDM0MS40IDE4LjFjLTIuMS04LjQtOC43LTE1LTE3LjEtMTcuM1MzMDcgMSAzMDEgNy4zTDI1NiA1My41IDIxMSA3LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA0OFYyNTZoNDhWNTguN2MyMy45IDEzLjggNDAgMzkuNyA0MCA2OS4zVjI1Nmg0OFYxMjhDMzg0IDU3LjMgMzI2LjcgMCAyNTYgMEgxOTJDMTIxLjMgMCA2NCA1Ny4zIDY0IDEyOFYyNTZoNDhWMTI4YzAtMjkuNiAxNi4xLTU1LjUgNDAtNjkuM1YyNTZoNDhWNDhoNDh6TTQ4IDI4OGMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtMTYgMzJjLTUgOS45LTQuNCAyMS43IDEuNCAzMS4xUzIwLjkgMzg0IDMyIDM4NGwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzg0SDM1MnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGMxMS4xIDAgMjEuNC01LjcgMjcuMi0xNS4yczYuNC0yMS4yIDEuNC0zMS4xbC0xNi0zMkM0MjMuMiAyOTQuOCA0MTIuMSAyODggNDAwIDI4OEg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhbGtib2FyZFVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDY0YzAtMzUuMyAyOC43LTY0IDY0LTY0SDU3NmMzNS4zIDAgNjQgMjguNyA2NCA2NFYzNTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzM2LjhjLTExLjgtMjUuNS0yOS45LTQ3LjUtNTIuNC02NEgzODRWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjMyaDY0VjY0TDIyNCA2NHY0OS4xQzIwNS4yIDEwMi4yIDE4My4zIDk2IDE2MCA5NlY2NHptMCA2NGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpNMTMzLjMgMzUyaDUzLjNDMjYwLjMgMzUyIDMyMCA0MTEuNyAzMjAgNDg1LjNjMCAxNC43LTExLjkgMjYuNy0yNi43IDI2LjdIMjYuN0MxMS45IDUxMiAwIDUwMC4xIDAgNDg1LjNDMCA0MTEuNyA1OS43IDM1MiAxMzMuMyAzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWxrYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDNjAuNyAzMiAzMiA2MC43IDMyIDk2VjM4NEg5NlY5NmwzODQgMFYzODRoNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIOTZ6TTIyNCAzODR2MzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQxNlYzODRjMC0xNy43LTE0LjMtMzItMzItMzJIMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhbXBhZ25lR2xhc3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTUuNiAxNy4zQzE2MyAzIDE3OS45LTMuNiAxOTUgMS45TDMyMCA0Ny41bDEyNS00NS42YzE1LjEtNS41IDMyIDEuMSAzOS40IDE1LjRsNzguOCAxNTIuOWMyOC44IDU1LjggMTAuMyAxMjIuMy0zOC41IDE1Ni42TDU1Ni4xIDQxM2w0MS0xNWMxNi42LTYgMzUgMi41IDQxIDE5LjFzLTIuNSAzNS0xOS4xIDQxbC03MS4xIDI1LjlMNDc2LjggNTEwYy0xNi42IDYuMS0zNS0yLjUtNDEtMTkuMXMyLjUtMzUgMTkuMS00MWw0MS0xNS0zMS4zLTg2LjJjLTU5LjQgNS4yLTExNi4yLTM0LTEzMC05NS4yTDMyMCAxODguOGwtMTQuNiA2NC43Yy0xMy44IDYxLjMtNzAuNiAxMDAuNC0xMzAgOTUuMmwtMzEuMyA4Ni4yIDQxIDE1YzE2LjYgNiAyNS4yIDI0LjQgMTkuMSA0MXMtMjQuNCAyNS4yLTQxIDE5LjFMOTIuMiA0ODQuMSAyMS4xIDQ1OC4yYy0xNi42LTYuMS0yNS4yLTI0LjQtMTkuMS00MXMyNC40LTI1LjIgNDEtMTkuMWw0MSAxNSAzMS4zLTg2LjJDNjYuNSAyOTIuNSA0OC4xIDIyNiA3Ni45IDE3MC4yTDE1NS42IDE3LjN6bTQ0IDU0LjRsLTI3LjIgNTIuOEwyNjEuNiAxNTdsMTMuMS01Ny45TDE5OS42IDcxLjd6bTI0MC45IDBMMzY1LjQgOTkuMSAzNzguNSAxNTdsODkuMi0zMi41TDQ0MC41IDcxLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJnaW5nU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0VjQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMzA0aDE2YzIyLjEgMCA0MCAxNy45IDQwIDQwdjMyYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzJWMjUyLjNjMzIuNS0xMC4yIDU2LTQwLjUgNTYtNzYuM1YxNDRjMC04LjgtNy4yLTE2LTE2LTE2SDU0NFY4MGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY0OEg0ODBWODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDhINDMyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCAzNS44IDIzLjUgNjYuMSA1NiA3Ni4zVjM3NmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYzNDRjMC00OC42LTM5LjQtODgtODgtODhIMzIwVjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2ek0yMTYuOSA4Mi43YzYgNCA4LjUgMTEuNSA2LjMgMTguM2wtMjUgNzQuOUgyNTZjNi43IDAgMTIuNyA0LjIgMTUgMTAuNHMuNSAxMy4zLTQuNiAxNy43bC0xMTIgOTZjLTUuNSA0LjctMTMuNCA1LjEtMTkuMyAxLjFzLTguNS0xMS41LTYuMy0xOC4zbDI1LTc0LjlIOTZjLTYuNyAwLTEyLjctNC4yLTE1LTEwLjRzLS41LTEzLjMgNC42LTE3LjdsMTEyLTk2YzUuNS00LjcgMTMuNC01LjEgMTkuMy0xLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0QXJlYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFY0MDBjMCA0NC4yIDM1LjggODAgODAgODBINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDgwYy04LjggMC0xNi03LjItMTYtMTZWNjR6bTk2IDI4OEg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjUxLjhjMC03LjYtMi43LTE1LTcuNy0yMC44bC02NS44LTc2LjhjLTEyLjEtMTQuMi0zMy43LTE1LTQ2LjktMS44bC0yMSAyMWMtMTAgMTAtMjYuNCA5LjItMzUuNC0xLjZsLTM5LjItNDdjLTEyLjYtMTUuMS0zNS43LTE1LjQtNDguNy0uNkwxMzUuOSAyMTVjLTUuMSA1LjgtNy45IDEzLjMtNy45IDIxLjF2ODRjMCAxNy43IDE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQwMGMwIDguOCA3LjIgMTYgMTYgMTZINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDgwYy00NC4yIDAtODAtMzUuOC04MC04MFY2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnptOTYgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnptMzIgNjRIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCA5Nkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydENvbHVtbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0MDBjMCA4LjggNy4yIDE2IDE2IDE2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6TTE2MCAyMjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0xMjgtNjRWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyem02NCAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ4MCA5NlYzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWOTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRHYW50dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0MDBjMCA4LjggNy4yIDE2IDE2IDE2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6bTk2IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnptOTYgNjRIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMTYwIDk2aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjQwMGMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODBjLTguOCAwLTE2LTcuMi0xNi0xNlY2NHptNDA2LjYgODYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwzMjAgMjEwLjdsLTU3LjQtNTcuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTExMiAxMTJjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjQwIDIyMS4zbDU3LjQgNTcuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydFBpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgMjQwVjE2LjZjMC05IDctMTYuNiAxNi0xNi42QzQ0My43IDAgNTQ0IDEwMC4zIDU0NCAyMjRjMCA5LTcuNiAxNi0xNi42IDE2SDMwNHpNMzIgMjcyQzMyIDE1MC43IDEyMi4xIDUwLjMgMjM5IDM0LjNjOS4yLTEuMyAxNyA2LjEgMTcgMTUuNFYyODhMNDEyLjUgNDQ0LjVjNi43IDYuNyA2LjIgMTcuNy0xLjUgMjMuMUMzNzEuOCA0OTUuNiAzMjMuOCA1MTIgMjcyIDUxMkMxMzkuNSA1MTIgMzIgNDA0LjYgMzIgMjcyem01MjYuNCAxNmM5LjMgMCAxNi42IDcuOCAxNS40IDE3Yy03LjcgNTUuOS0zNC42IDEwNS42LTczLjkgMTQyLjNjLTYgNS42LTE1LjQgNS4yLTIxLjItLjdMMzIwIDI4OEg1NTguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDMyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQzMmMwIDI2LjUtMjEuNSA0OC00OCA0OEgyMDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4Vjgwek0wIDI3MmMwLTI2LjUgMjEuNS00OCA0OC00OEg4MGMyNi41IDAgNDggMjEuNSA0OCA0OFY0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjI3MnpNMzY4IDk2aDMyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQzMmMwIDI2LjUtMjEuNSA0OC00OCA0OEgzNjhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlY2tEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQyLjYgODYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxNjAgMTc4LjdsLTU3LjQtNTcuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsODAgODBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MHptOTYgMTI4YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE2MCA0MDIuNyA1NC42IDI5Ny40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDI1Ni0yNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrVG9TbG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDQzMmMyNi41IDAgNDggMjEuNSA0OCA0OFYzODRIOTZWODB6bTMxMyA0N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTExMSAxMTEtNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMNDA5IDE2MWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXpNMCAzMzZjMC0yNi41IDIxLjUtNDggNDgtNDhINjRWNDE2SDUxMlYyODhoMTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjMzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM4LjYgMTA1LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTI1NiAyNTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC0xMjgtMTI4Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwTDE2MCAzMzguNyAzOTMuNCAxMDUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlZXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNDAuMlYyNTZIMGMwLTIwIDEwLTM4LjcgMjYuNi00OS44TDI3NC45IDQwLjdjOC42LTUuNyAxOC42LTguNyAyOC45LTguN0M0MTguOCAzMiA1MTIgMTI1LjIgNTEyIDI0MC4yem0wIDQ3LjhWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyODhINTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0Jpc2hvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMEMxMTAuMyAwIDk2IDE0LjMgOTYgMzJjMCAxNi4xIDExLjkgMjkuNCAyNy40IDMxLjdDNzguNCAxMDYuOCA4IDE5MCA4IDI4OGMwIDQ3LjQgMzAuOCA3Mi4zIDU2IDg0LjdWNDAwSDI1NlYzNzIuN2MyNS4yLTEyLjUgNTYtMzcuNCA1Ni04NC43YzAtMzcuMy0xMC4yLTcyLjQtMjUuMy0xMDQuMWwtOTkuNCA5OS40Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDI3MC44IDE1NC42Yy0yMy4yLTM4LjEtNTEuOC02OS41LTc0LjItOTAuOUMyMTIuMSA2MS40IDIyNCA0OC4xIDIyNCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxMjh6TTQ4IDQzMkw2LjYgNDczLjRjLTQuMiA0LjItNi42IDEwLTYuNiAxNkMwIDUwMS45IDEwLjEgNTEyIDIyLjYgNTEySDI5Ny40YzEyLjUgMCAyMi42LTEwLjEgMjIuNi0yMi42YzAtNi0yLjQtMTEuOC02LjYtMTZMMjcyIDQzMkg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NCb2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTY0IDY0djY0aDY0Vjk2aDY0djY0aDY0Vjk2aDY0djY0SDMyMHY2NGg2NHY2NEgzMjB2NjRoNjR2NjRIMzIwVjM1MkgyNTZ2NjRIMTkyVjM1MkgxMjh2NjRINjRWMzUyaDY0VjI4OEg2NFYyMjRoNjRWMTYwSDY0Vjk2aDY0em02NCAxMjhoNjRWMTYwSDE5MnY2NHptMCA2NFYyMjRIMTI4djY0aDY0em02NCAwSDE5MnY2NGg2NFYyODh6bTAgMGg2NFYyMjRIMjU2djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDhoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjU2djQ4SDQwOGMyMi4xIDAgNDAgMTcuOSA0MCA0MGMwIDUuMy0xIDEwLjUtMy4xIDE1LjRMMzY4IDQwMEg4MEwzLjEgMjE1LjRDMSAyMTAuNSAwIDIwNS4zIDAgMjAwYzAtMjIuMSAxNy45LTQwIDQwLTQwSDE5MlYxMTJIMTc2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDE2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zOC42IDQ3My40TDgwIDQzMkgzNjhsNDEuNCA0MS40YzQuMiA0LjIgNi42IDEwIDYuNiAxNmMwIDEyLjUtMTAuMSAyMi42LTIyLjYgMjIuNkg1NC42QzQyLjEgNTEyIDMyIDUwMS45IDMyIDQ4OS40YzAtNiAyLjQtMTEuOCA2LjYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzS25pZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQ4TDgyLjcgNjEuM0M3MC43IDczLjMgNjQgODkuNSA2NCAxMDYuNVYyMzguOWMwIDEwLjcgNS4zIDIwLjcgMTQuMiAyNi42bDEwLjYgN2MxNC4zIDkuNiAzMi43IDEwLjcgNDguMSAzbDMuMi0xLjZjMi42LTEuMyA1LTIuOCA3LjMtNC41bDQ5LjQtMzdjNi42LTUgMTUuNy01IDIyLjMgMGMxMC4yIDcuNyA5LjkgMjMuMS0uNyAzMC4zTDkwLjQgMzUwQzczLjkgMzYxLjMgNjQgMzgwIDY0IDQwMEgzODRsMjguOS0xNTljMi4xLTExLjMgMy4xLTIyLjggMy4xLTM0LjNWMTkyQzQxNiA4NiAzMzAgMCAyMjQgMEg4My44QzcyLjkgMCA2NCA4LjkgNjQgMTkuOGMwIDcuNSA0LjIgMTQuMyAxMC45IDE3LjdMOTYgNDh6bTI0IDY4YTIwIDIwIDAgMSAxIDQwIDAgMjAgMjAgMCAxIDEgLTQwIDB6TTIyLjYgNDczLjRjLTQuMiA0LjItNi42IDEwLTYuNiAxNkMxNiA1MDEuOSAyNi4xIDUxMiAzOC42IDUxMkg0MDkuNGMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNmMwLTYtMi40LTExLjgtNi42LTE2TDM4NCA0MzJINjRMMjIuNiA0NzMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NQYXduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNS41IDIyNGMyOS4yLTE4LjQgNDguNS01MC45IDQ4LjUtODhjMC01Ny40LTQ2LjYtMTA0LTEwNC0xMDRTNTYgNzguNiA1NiAxMzZjMCAzNy4xIDE5LjQgNjkuNiA0OC41IDg4SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmMwIDE2LjUgMTIuNSAzMCAyOC41IDMxLjhMODAgNDAwSDI0MEwyMjcuNSAyODcuOGMxNi0xLjggMjguNS0xNS4zIDI4LjUtMzEuOGMwLTE3LjctMTQuMy0zMi0zMi0zMmgtOC41ek0yMi42IDQ3My40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMTYgNTAxLjkgMjYuMSA1MTIgMzguNiA1MTJIMjgxLjRjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZjMC02LTIuNC0xMS44LTYuNi0xNkwyNTYgNDMySDY0TDIyLjYgNDczLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUXVlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBhNTYgNTYgMCAxIDEgMCAxMTJBNTYgNTYgMCAxIDEgMjU2IDB6TTEzNC4xIDE0My44YzMuMy0xMyAxNS0yMy44IDMwLjItMjMuOGMxMi4zIDAgMjIuNiA3LjIgMjcuNyAxN2MxMiAyMy4yIDM2LjIgMzkgNjQgMzlzNTItMTUuOCA2NC0zOWM1LjEtOS44IDE1LjQtMTcgMjcuNy0xN2MxNS4zIDAgMjcgMTAuOCAzMC4yIDIzLjhjNyAyNy44IDMyLjIgNDguMyA2Mi4xIDQ4LjNjMTAuOCAwIDIxLTIuNyAyOS44LTcuNGM4LjQtNC40IDE4LjktNC41IDI3LjYgLjljMTMgOCAxNy4xIDI1IDkuMiAzOEwzOTkuNyA0MDBIMzg0IDM0My42IDE2OC40IDEyOCAxMTIuM0w1LjQgMjIzLjZjLTcuOS0xMy0zLjgtMzAgOS4yLTM4YzguNy01LjMgMTkuMi01LjMgMjcuNi0uOWM4LjkgNC43IDE5IDcuNCAyOS44IDcuNGMyOS45IDAgNTUuMS0yMC41IDYyLjEtNDguM3pNMjU2IDIyNGwwIDAgMCAwaDB6TTExMiA0MzJINDAwbDQxLjQgNDEuNGM0LjIgNC4yIDYuNiAxMCA2LjYgMTZjMCAxMi41LTEwLjEgMjIuNi0yMi42IDIyLjZIODYuNkM3NC4xIDUxMiA2NCA1MDEuOSA2NCA0ODkuNGMwLTYgMi40LTExLjggNi42LTE2TDExMiA0MzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxOTJWNDhjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNlY4OGMwIDQuNCAzLjYgOCA4IDhoMzJjNC40IDAgOC0zLjYgOC04VjQ4YzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZWODhjMCA0LjQgMy42IDggOCA4aDMyYzQuNCAwIDgtMy42IDgtOFY0OGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2VjE5MmMwIDEwLjEtNC43IDE5LjYtMTIuOCAyNS42TDM1MiAyNTZsMTYgMTQ0SDgwTDk2IDI1NiA0NC44IDIxNy42QzM2LjcgMjExLjYgMzIgMjAyLjEgMzIgMTkyem0xNzYgOTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY0OGMwIDguOCA3LjIgMTYgMTYgMTZ6TTIyLjYgNDczLjRMNjQgNDMySDM4NGw0MS40IDQxLjRjNC4yIDQuMiA2LjYgMTAgNi42IDE2YzAgMTIuNS0xMC4xIDIyLjYtMjIuNiAyMi42SDM4LjZDMjYuMSA1MTIgMTYgNTAxLjkgMTYgNDg5LjRjMC02IDIuNC0xMS44IDYuNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDE2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjMySDk2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDE2Vjk2SDYwLjJDNDkuMSA5NiA0MCAxMDUuMSA0MCAxMTYuMmMwIDIuNSAuNSA0LjkgMS4zIDcuM0w3My44IDIwOEg3MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg0TDYwIDM4NEgxOTZMMTgwIDI1Nmg0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0aC0xLjhsMzIuNS04NC41Yy45LTIuMyAxLjMtNC44IDEuMy03LjNjMC0xMS4yLTkuMS0yMC4yLTIwLjItMjAuMkgxNDRWNjRoMTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTQ0VjE2ek00OCA0MTZMNC44IDQ3My42QzEuNyA0NzcuOCAwIDQ4Mi44IDAgNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDIzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNGMwLTUuMi0xLjctMTAuMi00LjgtMTQuNEwyMDggNDE2SDQ4em0yODggMGwtNDMuMiA1Ny42Yy0zLjEgNC4yLTQuOCA5LjItNC44IDE0LjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0YzAtNS4yLTEuNy0xMC4yLTQuOC0xNC40TDQ2NCA0MTZIMzM2ek0zMDQgMjA4djUxLjljMCA3LjggMi44IDE1LjMgOCAyMS4xTDMzOS4yIDMxMiAzMzcgMzg0SDQ2Mi41bC0zLjMtNzIgMjguMy0zMC44YzUuNC01LjkgOC41LTEzLjYgOC41LTIxLjdWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkg0NjRjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkg0MjRWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgzOTJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkgzNTJWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgzMjBjLTguOCAwLTE2IDcuMi0xNiAxNnptODAgOTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYzMkgzODRWMzA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGV2cm9uRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzMuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxOTItMTkyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDI1NiAzMzguNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGV2cm9uTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE5MiAxOTJjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w3Ny4zIDI1NiAyNDYuNiA4Ni42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0xOTIgMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGV2cm9uUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEwLjYgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE5MiAxOTJjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0Mi43IDI1NiA3My40IDg2LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMy40IDEwNS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDE5MiAxOTJjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMjU2IDE3My4zIDg2LjYgMzQyLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDE5Mi0xOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoaWxkQ29tYmF0YW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAxMjhBNjQgNjQgMCAxIDAgMTc2IDBhNjQgNjQgMCAxIDAgMCAxMjh6bS04IDM1MlYzNTJoMTZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzAwLjVMMjYwLjkgMzIxYzkuNCAxNSAyOS4yIDE5LjQgNDQuMSAxMHMxOS40LTI5LjIgMTAtNDQuMWwtNTEuNy04Mi4xYy0xNy42LTI3LjktNDguMy00NC45LTgxLjItNDQuOUgxNjkuOGMtMzMgMC02My43IDE2LjktODEuMiA0NC45TDM2LjkgMjg3Yy05LjQgMTUtNC45IDM0LjcgMTAgNDQuMXMzNC43IDQuOSA0NC4xLTEwTDEwNCAzMDAuNVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpNNDQ4IDBINDMyIDQxNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNlYxMzIuM2MtOS42IDUuNS0xNiAxNS45LTE2IDI3Ljd2MzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjM2OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoNTkuNWMxMC40IDAgMTgtOS44IDE1LjUtMTkuOUw0ODQgNDAwaDQ0YzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDQ4MFYzMjUuM2w1My4xLTE3LjdjNi41LTIuMiAxMC45LTguMyAxMC45LTE1LjJWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkg1MTJjLTguOCAwLTE2IDcuMi0xNiAxNnY1NmwtMTYgNS4zVjE2MGMwLTExLjgtNi40LTIyLjItMTYtMjcuN1YxNmMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoaWxkRHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDY0QTY0IDY0IDAgMSAwIDk2IDY0YTY0IDY0IDAgMSAwIDEyOCAwek04OCA0MDB2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MDBoMTZ2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MDBoMTcuOGMxMC45IDAgMTguNi0xMC43IDE1LjItMjEuMWwtMzEuMS05My40IDI4LjYgMzcuOGMxMC43IDE0LjEgMzAuOCAxNi44IDQ0LjggNi4yczE2LjgtMzAuNyA2LjItNDQuOEwyNTQuNiAyMDdjLTIyLjQtMjkuNi01Ny41LTQ3LTk0LjYtNDdzLTcyLjIgMTcuNC05NC42IDQ3TDYuNSAyODQuN2MtMTAuNyAxNC4xLTcuOSAzNC4yIDYuMiA0NC44czM0LjIgNy45IDQ0LjgtNi4ybDI4LjctMzcuOEw1NSAzNzguOUM1MS42IDM4OS4zIDU5LjMgNDAwIDcwLjIgNDAwSDg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGlsZFJlYWNoaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA2NEE2NCA2NCAwIDEgMCAxMjggNjRhNjQgNjQgMCAxIDAgMTI4IDB6TTE1Mi45IDE2OS4zYy0yMy43LTguNC00NC41LTI0LjMtNTguOC00NS44TDc0LjYgOTQuMkM2NC44IDc5LjUgNDUgNzUuNiAzMC4yIDg1LjRzLTE4LjcgMjkuNy04LjkgNDQuNEw0MC45IDE1OWMxOC4xIDI3LjEgNDIuOCA0OC40IDcxLjEgNjIuNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRoMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjEuNmMyOS4xLTE0LjIgNTQuNC0zNi4yIDcyLjctNjQuMmwxOC4yLTI3LjljOS42LTE0LjggNS40LTM0LjYtOS40LTQ0LjNzLTM0LjYtNS41LTQ0LjMgOS40TDI5MSAxMjIuNGMtMjEuOCAzMy40LTU4LjkgNTMuNi05OC44IDUzLjZjLTEyLjYgMC0yNC45LTItMzYuNi01LjhjLS45LS4zLTEuOC0uNy0yLjctLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoaWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDY0YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDk2IDY0em00OCAzMjB2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjg3LjhMNTkuMSAzMjFjLTkuNCAxNS0yOS4yIDE5LjQtNDQuMSAxMFMtNC41IDMwMS45IDQuOSAyODdsMzkuOS02My4zQzY5LjcgMTg0IDExMy4yIDE2MCAxNjAgMTYwczkwLjMgMjQgMTE1LjIgNjMuNkwzMTUuMSAyODdjOS40IDE1IDQuOSAzNC43LTEwIDQ0LjFzLTM0LjcgNC45LTQ0LjEtMTBMMjQwIDI4Ny44VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRIMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGlsZHJlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMGE2NCA2NCAwIDEgMSAwIDEyOEE2NCA2NCAwIDEgMSAxNjAgMHpNODggNDgwVjQwMEg3MC4yYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMWwzMS4xLTkzLjRMNTcuNSAzMjMuM2MtMTAuNyAxNC4xLTMwLjggMTYuOC00NC44IDYuMnMtMTYuOC0zMC43LTYuMi00NC44TDY1LjQgMjA3YzIyLjQtMjkuNiA1Ny41LTQ3IDk0LjYtNDdzNzIuMiAxNy40IDk0LjYgNDdsNTguOSA3Ny43YzEwLjcgMTQuMSA3LjkgMzQuMi02LjIgNDQuOHMtMzQuMiA3LjktNDQuOC02LjJsLTI4LjYtMzcuOEwyNjUgMzc4LjljMy41IDEwLjQtNC4zIDIxLjEtMTUuMiAyMS4xSDIzMnY4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0MDBIMTUydjgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyek00ODAgMGE2NCA2NCAwIDEgMSAwIDEyOEE2NCA2NCAwIDEgMSA0ODAgMHptLTggMzg0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMwMC41TDM5NS4xIDMyMWMtOS40IDE1LTI5LjIgMTkuNC00NC4xIDEwcy0xOS40LTI5LjItMTAtNDQuMWw1MS43LTgyLjFjMTcuNi0yNy45IDQ4LjMtNDQuOSA4MS4yLTQ0LjloMTIuM2MzMyAwIDYzLjcgMTYuOSA4MS4yIDQ0LjlMNjE5LjEgMjg3YzkuNCAxNSA0LjkgMzQuNy0xMCA0NC4xcy0zNC43IDQuOS00NC4xLTEwTDU1MiAzMDAuNVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0SDQ3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2h1cmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NCAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY0OEgyNjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMzJ2NDYuNEwxODMuMyAyMTBjLTE0LjUgOC43LTIzLjMgMjQuMy0yMy4zIDQxLjJWNTEyaDk2VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0djk2aDk2VjI1MS4yYzAtMTYuOS04LjgtMzIuNS0yMy4zLTQxLjJMMzQ0IDE0Mi40Vjk2aDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM0NFYyNHpNMjQuOSAzMzAuM0M5LjUgMzM4LjggMCAzNTQuOSAwIDM3Mi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MFYyNzMuNkwyNC45IDMzMC4zek01OTIgNTEyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM3Mi40YzAtMTcuNS05LjUtMzMuNi0yNC45LTQyLjFMNTEyIDI3My42VjUxMmg4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTI3IDI4MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDcxIDcxTDIzMiAxMzZjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDE4Mi4xIDcxLTcxYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOUwyNzMgMzkzYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxMjcgMjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDI1NkEyNTYgMjU2IDAgMSAwIDAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDB6TTIzMSAxMjdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC03MSA3MUwzNzYgMjMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xODIuMSAwIDcxIDcxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBMMTE5IDI3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMMjMxIDEyN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwQTI1NiAyNTYgMCAxIDAgMCAyNTZ6TTI4MSAzODVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNzEtNzFMMTM2IDI4MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxODIuMSAwLTcxLTcxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBMMzkzIDIzOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwyODEgMzg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODUgMjMxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTcxLTcxVjM3NmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYxOTMuOWwtNzEgNzFjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMjM5IDExOWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMEwzODUgMjMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzY5IDIwOUwyNDEgMzM3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0N0wzMzUgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQ2hldnJvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwek0xMzUgMjQxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsODcgODcgODctODdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45TDI3MyAzNDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDEzNSAyNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUNoZXZyb25MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZBMjU2IDI1NiAwIDEgMCAwIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwek0yNzEgMTM1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtODcgODcgODcgODdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEwxNjcgMjczYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUwyNzEgMTM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVDaGV2cm9uUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yNDEgMzc3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDg3LTg3LTg3LTg3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBMMzQ1IDIzOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwyNDEgMzc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVDaGV2cm9uVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM3NyAyNzFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtODctODctODcgODdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMjM5IDE2N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMEwzNzcgMjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVEb2xsYXJUb1Nsb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI2LjcgNDAzLjdjLTIyLjEgOC00NS45IDEyLjMtNzAuNyAxMi4zcy00OC43LTQuNC03MC43LTEyLjNjLS4zLS4xLS41LS4yLS44LS4zYy0zMC0xMS01Ni44LTI4LjctNzguNi01MS40QzcwIDMxNC42IDQ4IDI2My45IDQ4IDIwOEM0OCA5My4xIDE0MS4xIDAgMjU2IDBTNDY0IDkzLjEgNDY0IDIwOGMwIDU1LjktMjIgMTA2LjYtNTcuOSAxNDRjLTEgMS0yIDIuMS0zIDMuMWMtMjEuNCAyMS40LTQ3LjQgMzguMS03Ni4zIDQ4LjZ6TTI1NiA4NGMtMTEgMC0yMCA5LTIwIDIwdjE0Yy03LjYgMS43LTE1LjIgNC40LTIyLjIgOC41Yy0xMy45IDguMy0yNS45IDIyLjgtMjUuOCA0My45Yy4xIDIwLjMgMTIgMzMuMSAyNC43IDQwLjdjMTEgNi42IDI0LjcgMTAuOCAzNS42IDE0bDEuNyAuNWMxMi42IDMuOCAyMS44IDYuOCAyOCAxMC43YzUuMSAzLjIgNS44IDUuNCA1LjkgOC4yYy4xIDUtMS44IDgtNS45IDEwLjVjLTUgMy4xLTEyLjkgNS0yMS40IDQuN2MtMTEuMS0uNC0yMS41LTMuOS0zNS4xLTguNWMtMi4zLS44LTQuNy0xLjYtNy4yLTIuNGMtMTAuNS0zLjUtMjEuOCAyLjItMjUuMyAxMi42czIuMiAyMS44IDEyLjYgMjUuM2MxLjkgLjYgNCAxLjMgNi4xIDIuMWwwIDAgMCAwYzguMyAyLjkgMTcuOSA2LjIgMjguMiA4LjRWMzEyYzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwVjI5OC4yYzgtMS43IDE2LTQuNSAyMy4yLTljMTQuMy04LjkgMjUuMS0yNC4xIDI0LjgtNDVjLS4zLTIwLjMtMTEuNy0zMy40LTI0LjYtNDEuNmMtMTEuNS03LjItMjUuOS0xMS42LTM3LjEtMTVsLS43LS4yYy0xMi44LTMuOS0yMS45LTYuNy0yOC4zLTEwLjVjLTUuMi0zLjEtNS4zLTQuOS01LjMtNi43YzAtMy43IDEuNC02LjUgNi4yLTkuM2M1LjQtMy4yIDEzLjYtNS4xIDIxLjUtNWM5LjYgLjEgMjAuMiAyLjIgMzEuMiA1LjJjMTAuNyAyLjggMjEuNi0zLjUgMjQuNS0xNC4ycy0zLjUtMjEuNi0xNC4yLTI0LjVjLTYuNS0xLjctMTMuNy0zLjQtMjEuMS00LjdWMTA0YzAtMTEtOS0yMC0yMC0yMHpNNDggMzUySDY0YzE5LjUgMjUuOSA0NCA0Ny43IDcyLjIgNjRINjR2MzJIMjU2IDQ0OFY0MTZIMzc1LjhjMjguMi0xNi4zIDUyLjgtMzguMSA3Mi4yLTY0aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0MDBjMC0yNi41IDIxLjUtNDggNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZURvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMC0zNTJhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwek0zNzYuOSAyOTQuNkwyNjkuOCAzOTQuNWMtMy44IDMuNS04LjcgNS41LTEzLjggNS41cy0xMC4xLTItMTMuOC01LjVMMTM1LjEgMjk0LjZjLTQuNS00LjItNy4xLTEwLjEtNy4xLTE2LjNjMC0xMi4zIDEwLTIyLjMgMjIuMy0yMi4zbDU3LjcgMCAwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NiA1Ny43IDBjMTIuMyAwIDIyLjMgMTAgMjIuMyAyMi4zYzAgNi4yLTIuNiAxMi4xLTcuMSAxNi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMC0zODRjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMjY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjE1MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMjI0IDM1MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zNjggMTUyVjI1NiAzNjBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDE5MmwwIDgwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMjA4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2ODBIMzIwVjE1MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVIYWxmU3Ryb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAyNTZjMC0xMDYtODYtMTkyLTE5Mi0xOTJWNDQ4YzEwNiAwIDE5Mi04NiAxOTItMTkyek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUluZm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIxNiAzMzZoMjRWMjcySDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY4OGg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptNDAtMjA4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjU2QTI1NiAyNTYgMCAxIDAgMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMHpNMjE3LjQgMzc2LjlMMTE3LjUgMjY5LjhjLTMuNS0zLjgtNS41LTguNy01LjUtMTMuOHMyLTEwLjEgNS41LTEzLjhsOTkuOS0xMDcuMWM0LjItNC41IDEwLjEtNy4xIDE2LjMtNy4xYzEyLjMgMCAyMi4zIDEwIDIyLjMgMjIuM2wwIDU3LjcgOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwIDAgNTcuN2MwIDEyLjMtMTAgMjIuMy0yMi4zIDIyLjNjLTYuMiAwLTEyLjEtMi42LTE2LjMtNy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTg0IDIzMkgzMjhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTg0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVOb2RlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTguNCAxNTcuOWMzNS4zLTguMyA2MS42LTQwIDYxLjYtNzcuOWMwLTQ0LjItMzUuOC04MC04MC04MGMtNDMuNCAwLTc4LjcgMzQuNS04MCA3Ny41TDEzNi4yIDE1MS4xQzEyMS43IDEzNi44IDEwMS45IDEyOCA4MCAxMjhjLTQ0LjIgMC04MCAzNS44LTgwIDgwczM1LjggODAgODAgODBjMTIuMiAwIDIzLjgtMi43IDM0LjEtNy42TDI1OS43IDQwNy44Yy0yLjQgNy42LTMuNyAxNS44LTMuNyAyNC4yYzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0yNy43LTE0LTUyLjEtMzUuNC02Ni40bDM3LjgtMjA3Ljd6TTE1Ni4zIDIzMi4yYzIuMi02LjkgMy41LTE0LjIgMy43LTIxLjdsMTgzLjgtNzMuNWMzLjYgMy41IDcuNCA2LjcgMTEuNiA5LjVMMzE3LjYgMzU0LjFjLTUuNSAxLjMtMTAuOCAzLjEtMTUuOCA1LjVMMTU2LjMgMjMyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZU5vdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMi43IDMyLjFjNSAxNi45LTQuNiAzNC44LTIxLjUgMzkuOEMxMjEuOCA5NS42IDY0IDE2OS4xIDY0IDI1NmMwIDEwNiA4NiAxOTIgMTkyIDE5MnMxOTItODYgMTkyLTE5MmMwLTg2LjktNTcuOC0xNjAuNC0xMzcuMS0xODQuMWMtMTYuOS01LTI2LjYtMjIuOS0yMS41LTM5LjhzMjIuOS0yNi42IDM5LjgtMjEuNUM0MzQuOSA0Mi4xIDUxMiAxNDAgNTEyIDI1NmMwIDE0MS40LTExNC42IDI1Ni0yNTYgMjU2UzAgMzk3LjQgMCAyNTZDMCAxNDAgNzcuMSA0Mi4xIDE4Mi45IDEwLjZjMTYuOS01IDM0LjggNC42IDM5LjggMjEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIyNCAxOTJWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyem0xMjggMFYzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0xODguMyAxNDcuMWMtNy42IDQuMi0xMi4zIDEyLjMtMTIuMyAyMC45VjM0NGMwIDguNyA0LjcgMTYuNyAxMi4zIDIwLjlzMTYuOCA0LjEgMjQuMy0uNWwxNDQtODhjNy4xLTQuNCAxMS41LTEyLjEgMTEuNS0yMC41cy00LjQtMTYuMS0xMS41LTIwLjVsLTE0NC04OGMtNy40LTQuNS0xNi43LTQuNy0yNC4zLS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMzIgMzQ0VjI4MEgxNjhjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNjRWMTY4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NjRoNjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjgwdjY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVRdWVzdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY5LjggMTY1LjNjNy45LTIyLjMgMjkuMS0zNy4zIDUyLjgtMzcuM2g1OC4zYzM0LjkgMCA2My4xIDI4LjMgNjMuMSA2My4xYzAgMjIuNi0xMi4xIDQzLjUtMzEuNyA1NC44TDI4MCAyNjQuNGMtLjIgMTMtMTAuOSAyMy42LTI0IDIzLjZjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjI1MC41YzAtOC42IDQuNi0xNi41IDEyLjEtMjAuOGw0NC4zLTI1LjRjNC43LTIuNyA3LjYtNy43IDcuNi0xMy4xYzAtOC40LTYuOC0xNS4xLTE1LjEtMTUuMUgyMjIuNmMtMy40IDAtNi40IDIuMS03LjUgNS4zbC0uNCAxLjJjLTQuNCAxMi41LTE4LjIgMTktMzAuNiAxNC42cy0xOS0xOC4yLTE0LjYtMzAuNmwuNC0xLjJ6TTIyNCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlUmFkaWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA2NGExOTIgMTkyIDAgMSAxIDAgMzg0IDE5MiAxOTIgMCAxIDEgMC0zODR6bTAgNDQ4QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjAwIDI1NmMwLTIwLjcgMTEuMy0zOC44IDI4LTQ4LjVsLTM2LTYyLjNjLTguOC0xNS4zLTI4LjctMjAuOC00Mi05Yy0yNS42IDIyLjYtNDMuOSA1My4zLTUwLjkgODguMUM5NS43IDI0MS41IDExMC4zIDI1NiAxMjggMjU2bDcyIDB6bTI4IDQ4LjVsLTM2IDYyLjRjLTguOCAxNS4zLTMuNiAzNS4yIDEzLjEgNDAuOGMxNiA1LjQgMzMuMSA4LjMgNTAuOSA4LjNzMzQuOS0yLjkgNTAuOS04LjNjMTYuNy01LjYgMjEuOS0yNS41IDEzLjEtNDAuOGwtMzYtNjIuNGMtOC4yIDQuOC0xNy44IDcuNS0yOCA3LjVzLTE5LjgtMi43LTI4LTcuNXpNMzEyIDI1Nmw3MiAwYzE3LjcgMCAzMi4zLTE0LjUgMjguOC0zMS44Yy03LTM0LjgtMjUuMy02NS41LTUwLjktODguMWMtMTMuMi0xMS43LTMzLjEtNi4zLTQyIDlsLTM2IDYyLjNjMTYuNyA5LjcgMjggMjcuOCAyOCA0OC41em0tNTYgMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwQTI1NiAyNTYgMCAxIDAgMCAyNTZ6TTI5NC42IDEzNS4xbDk5LjkgMTA3LjFjMy41IDMuOCA1LjUgOC43IDUuNSAxMy44cy0yIDEwLjEtNS41IDEzLjhMMjk0LjYgMzc2LjljLTQuMiA0LjUtMTAuMSA3LjEtMTYuMyA3LjFDMjY2IDM4NCAyNTYgMzc0IDI1NiAzNjEuN2wwLTU3LjctOTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwIDAtNTcuN2MwLTEyLjMgMTAtMjIuMyAyMi4zLTIyLjNjNi4yIDAgMTIuMSAyLjYgMTYuMyA3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE5MiAxNjBIMzIwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTEzNS4xIDIxNy40bDEwNy4xLTk5LjljMy44LTMuNSA4LjctNS41IDEzLjgtNS41czEwLjEgMiAxMy44IDUuNWwxMDcuMSA5OS45YzQuNSA0LjIgNy4xIDEwLjEgNy4xIDE2LjNjMCAxMi4zLTEwIDIyLjMtMjIuMyAyMi4zSDMwNHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgyNDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI1NkgxNTAuM0MxMzggMjU2IDEyOCAyNDYgMTI4IDIzMy43YzAtNi4yIDIuNi0xMi4xIDcuMS0xNi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5OSAzODQuMkMzNzYuOSAzNDUuOCAzMzUuNCAzMjAgMjg4IDMyMEgyMjRjLTQ3LjQgMC04OC45IDI1LjgtMTExIDY0LjJjMzUuMiAzOS4yIDg2LjIgNjMuOCAxNDMgNjMuOHMxMDcuOC0yNC43IDE0My02My44ek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTI1NiAxNmE3MiA3MiAwIDEgMCAwLTE0NCA3MiA3MiAwIDEgMCAwIDE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3NSAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzM2Yy0yNi41IDAtNDggMjEuNS00OCA0OFY5NkgyMjRWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWOTZIMTEyVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0UzY0IDEwLjcgNjQgMjRWOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0djk2VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMDRoMzIgOTZINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI0MGMwLTI2LjUtMjEuNS00OC00OC00OEg0ODBWNDh6bTk2IDMyMHYzMmMwIDguOC03LjIgMTYtMTYgMTZINTI4Yy04LjggMC0xNi03LjItMTYtMTZWMzY4YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ6TTI0MCA0MTZIMjA4Yy04LjggMC0xNi03LjItMTYtMTZWMzY4YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2ek0xMjggNDAwYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjM2OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyek01NjAgMjU2YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINTI4Yy04LjggMC0xNi03LjItMTYtMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmgzMnpNMjU2IDE3NnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjA4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ6TTExMiAxNjBjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJ6TTI1NiAzMDRjMCA4LjgtNy4yIDE2LTE2IDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyek0xMTIgMzIwSDgwYy04LjggMC0xNi03LjItMTYtMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2em0zMDQtNDh2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2ek00MDAgNjRjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNlY4MGMwLTguOCA3LjItMTYgMTYtMTZoMzJ6bTE2IDExMnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsYXBwZXJib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzJIMzYxLjlsLTEgMS0xMjcgMTI3aDkyLjFsMS0xTDQ1My44IDMyLjNjLTEuOS0uMi0zLjgtLjMtNS44LS4zem02NCAxMjhWOTZjMC0xNS4xLTUuMy0yOS4xLTE0LTQwbC0xMDQgMTA0SDUxMnpNMjk0LjEgMzJIMjAxLjlsLTEgMUw3My45IDE2MGg5Mi4xbDEtMSAxMjctMTI3ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2djY0SDYuMWwxLTEgMTI3LTEyN0g2NHpNNTEyIDE5MkgwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMGMtNDEuOCAwLTc3LjQgMjYuNy05MC41IDY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4Mi41QzI2OS40IDI2LjcgMjMzLjggMCAxOTIgMHptMCA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTMwNSAyNzNMMTc3IDQwMWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNzkgMzM3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNDcgNDdMMjcxIDIzOWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZExpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek03MiAyNzJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTA0LTE2SDMwNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6TTcyIDM2OGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem04OCAwYzAtOC44IDcuMi0xNiAxNi0xNkgzMDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZFF1ZXN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAwYy00MS44IDAtNzcuNCAyNi43LTkwLjUgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjgyLjVDMjY5LjQgMjYuNyAyMzMuOCAwIDE5MiAwem0wIDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMTA1LjggMjI5LjNjNy45LTIyLjMgMjkuMS0zNy4zIDUyLjgtMzcuM2g1OC4zYzM0LjkgMCA2My4xIDI4LjMgNjMuMSA2My4xYzAgMjIuNi0xMi4xIDQzLjUtMzEuNyA1NC44TDIxNiAzMjguNGMtLjIgMTMtMTAuOSAyMy42LTI0IDIzLjZjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjMxNC41YzAtOC42IDQuNi0xNi41IDEyLjEtMjAuOGw0NC4zLTI1LjRjNC43LTIuNyA3LjYtNy43IDcuNi0xMy4xYzAtOC40LTYuOC0xNS4xLTE1LjEtMTUuMUgxNTguNmMtMy40IDAtNi40IDIuMS03LjUgNS4zbC0uNCAxLjJjLTQuNCAxMi41LTE4LjIgMTktMzAuNiAxNC42cy0xOS0xOC4yLTE0LjYtMzAuNmwuNC0xLjJ6TTE2MCA0MTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xpcGJvYXJkVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMGMtNDEuOCAwLTc3LjQgMjYuNy05MC41IDY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4Mi41QzI2OS40IDI2LjcgMjMzLjggMCAxOTIgMHptMCA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTEyOCAyNTZhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek04MCA0MzJjMC00NC4yIDM1LjgtODAgODAtODBoNjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMGMtNDEuOCAwLTc3LjQgMjYuNy05MC41IDY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4Mi41QzI2OS40IDI2LjcgMjMzLjggMCAxOTIgMHptMCA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTExMiAxOTJIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvY2tSb3RhdGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTc1IDc1TDQxIDQxQzI1LjkgMjUuOSAwIDM2LjYgMCA1Ny45VjE2OGMwIDEzLjMgMTAuNyAyNCAyNCAyNEgxMzQuMWMyMS40IDAgMzIuMS0yNS45IDE3LTQxbC0zMC44LTMwLjhDMTU1IDg1LjUgMjAzIDY0IDI1NiA2NGMxMDYgMCAxOTIgODYgMTkyIDE5MnMtODYgMTkyLTE5MiAxOTJjLTQwLjggMC03OC42LTEyLjctMTA5LjctMzQuNGMtMTQuNS0xMC4xLTM0LjQtNi42LTQ0LjYgNy45cy02LjYgMzQuNCA3LjkgNDQuNkMxNTEuMiA0OTUgMjAxLjcgNTEyIDI1NiA1MTJjMTQxLjQgMCAyNTYtMTE0LjYgMjU2LTI1NlMzOTcuNCAwIDI1NiAwQzE4NS4zIDAgMTIxLjMgMjguNyA3NSA3NXptMTgxIDUzYy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYyNTZjMCA2LjQgMi41IDEyLjUgNyAxN2w3MiA3MmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTY1LTY1VjE1MmMwLTEzLjMtMTAuNy0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBhMjU2IDI1NiAwIDEgMSAwIDUxMkEyNTYgMjU2IDAgMSAxIDI1NiAwek0yMzIgMTIwVjI1NmMwIDggNCAxNS41IDEwLjcgMjBsOTYgNjRjMTEgNy40IDI1LjkgNC40IDMzLjMtNi43czQuNC0yNS45LTYuNy0zMy4zTDI4MCAyNDMuMlYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCA0NDhINjRWMjI0aDY0VjE2MEg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDI4OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzODRIMjg4djY0em0tNjQtOTZINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDIyNGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWMjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG9zZWRDYXB0aW9uaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTIwMCAyMDhjMTQuMiAwIDI3IDYuMSAzNS44IDE2YzguOCA5LjkgMjQgMTAuNyAzMy45IDEuOXMxMC43LTI0IDEuOS0zMy45Yy0xNy41LTE5LjYtNDMuMS0zMi03MS41LTMyYy01MyAwLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2YzI4LjQgMCA1NC0xMi40IDcxLjUtMzJjOC44LTkuOSA4LTI1LTEuOS0zMy45cy0yNS04LTMzLjkgMS45Yy04LjggOS45LTIxLjYgMTYtMzUuOCAxNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OHptMTQ0IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4YzE0LjIgMCAyNyA2LjEgMzUuOCAxNmM4LjggOS45IDI0IDEwLjcgMzMuOSAxLjlzMTAuNy0yNCAxLjktMzMuOWMtMTcuNS0xOS42LTQzLjEtMzItNzEuNS0zMmMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyOC40IDAgNTQtMTIuNCA3MS41LTMyYzguOC05LjkgOC0yNS0xLjktMzMuOXMtMjUtOC0zMy45IDEuOWMtOC44IDkuOS0yMS42IDE2LTM1LjggMTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZEFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNDgwQzY0LjUgNDgwIDAgNDE1LjUgMCAzMzZjMC02Mi44IDQwLjItMTE2LjIgOTYuMi0xMzUuOWMtLjEtMi43LS4yLTUuNC0uMi04LjFjMC04OC40IDcxLjYtMTYwIDE2MC0xNjBjNTkuMyAwIDExMSAzMi4yIDEzOC43IDgwLjJDNDA5LjkgMTAyIDQyOC4zIDk2IDQ0OCA5NmM1MyAwIDk2IDQzIDk2IDk2YzAgMTIuMi0yLjMgMjMuOC02LjQgMzQuNkM1OTYgMjM4LjQgNjQwIDI5MC4xIDY0MCAzNTJjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIMTQ0em03OS0xNjdsODAgODBjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsODAtODBjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMzkgMzlWMTg0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjMxOC4xbC0zOS0zOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCA0ODBDNjQuNSA0ODAgMCA0MTUuNSAwIDMzNmMwLTYyLjggNDAuMi0xMTYuMiA5Ni4yLTEzNS45Yy0uMS0yLjctLjItNS40LS4yLTguMWMwLTg4LjQgNzEuNi0xNjAgMTYwLTE2MGM1OS4zIDAgMTExIDMyLjIgMTM4LjcgODAuMkM0MDkuOSAxMDIgNDI4LjMgOTYgNDQ4IDk2YzUzIDAgOTYgNDMgOTYgOTZjMCAxMi4yLTIuMyAyMy44LTYuNCAzNC42QzU5NiAyMzguNCA2NDAgMjkwLjEgNjQwIDM1MmMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOEgxNDR6bTc5LTIxN2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDM5LTM5VjM5MmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI1Ny45bDM5IDM5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtODAtODBjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0YzAgNTMgNDMgOTYgOTYgOTZoNDcuMkwyOTAgMjAyLjVjMTcuNi0xNC4xIDQyLjYtMTQgNjAuMiAuMnMyMi44IDM4LjYgMTIuOCA1OC44TDMzMy43IDMyMEgzNTJoNjRjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZjLS41IDAtMS4xIDAtMS42IDBjMS4xLTUuMiAxLjYtMTAuNSAxLjYtMTZjMC00NC4yLTM1LjgtODAtODAtODBjLTI0LjMgMC00Ni4xIDEwLjktNjAuOCAyOEMyNTYuNSAyNC4zIDIxOS4xIDAgMTc2IDBDMTE0LjEgMCA2NCA1MC4xIDY0IDExMmMwIDcuMSAuNyAxNC4xIDEuOSAyMC44QzI3LjYgMTQ1LjQgMCAxODEuNSAwIDIyNHptMzMwLjEgMy42Yy01LjgtNC43LTE0LjItNC43LTIwLjEtLjFsLTE2MCAxMjhjLTUuMyA0LjItNy40IDExLjQtNS4xIDE3LjhzOC4zIDEwLjcgMTUuMSAxMC43aDcwLjFMMTc3LjcgNDg4LjhjLTMuNCA2LjctMS42IDE0LjkgNC4zIDE5LjZzMTQuMiA0LjcgMjAuMSAuMWwxNjAtMTI4YzUuMy00LjIgNy40LTExLjQgNS4xLTE3LjhzLTguMy0xMC43LTE1LjEtMTAuN0gyODEuOWw1Mi40LTEwNC44YzMuNC02LjcgMS42LTE0LjktNC4yLTE5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkTWVhdGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMjRjMCA1MyA0MyA5NiA5NiA5Nmg0NC43YzkuNS0yMy41IDMyLjUtNDAgNTkuMy00MGMyIDAgMy45IC4xIDUuOCAuM0MyMTcuNiAyNjUuNSAyMzUuNyAyNTYgMjU2IDI1NnMzOC40IDkuNSA1MC4yIDI0LjNjMS45LS4yIDMuOS0uMyA1LjgtLjNjMjYuOSAwIDQ5LjkgMTYuNSA1OS4zIDQwSDQxNmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NmMtLjUgMC0xLjEgMC0xLjYgMGMxLjEtNS4yIDEuNi0xMC41IDEuNi0xNmMwLTQ0LjItMzUuOC04MC04MC04MGMtMjQuMyAwLTQ2LjEgMTAuOS02MC44IDI4QzI1Ni41IDI0LjMgMjE5LjEgMCAxNzYgMEMxMTQuMSAwIDY0IDUwLjEgNjQgMTEyYzAgNy4xIC43IDE0LjEgMS45IDIwLjhDMjcuNiAxNDUuNCAwIDE4MS41IDAgMjI0em0yODggOTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJjMCAxIC4xIDIuMSAuMSAzLjFjLS43LS44LTEuNC0xLjYtMi4xLTIuM2MtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNjLjcgLjcgMS41IDEuNCAyLjMgMi4xYy0xLS4xLTIuMS0uMS0zLjEtLjFjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJjMSAwIDIuMS0uMSAzLjEtLjFjLS44IC43LTEuNiAxLjMtMi4zIDIuMWMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGMuNy0uNyAxLjQtMS41IDIuMS0yLjNjLS4xIDEtLjEgMi4xLS4xIDMuMWMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMS0uMS0yLjEtLjEtMy4xYy43IC44IDEuMyAxLjYgMi4xIDIuM2MxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zYy0uNy0uNy0xLjUtMS40LTIuMy0yLjFjMSAuMSAyLjEgLjEgMy4xIC4xYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyYy0xIDAtMi4xIC4xLTMuMSAuMWMuOC0uNyAxLjYtMS4zIDIuMy0yLjFjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBjLS43IC43LTEuNCAxLjUtMi4xIDIuM2MuMS0xIC4xLTIuMSAuMS0zLjF6TTQ4IDQ0OGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQxNiAwYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRNb29uUmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEuMiAwQzQxNyAwIDM2My41IDQ2LjUgMzUzLjcgMTA3LjZjMzUuNCAxNy42IDYwLjIgNTMuMyA2Mi4xIDk1LjFjMjMuMiAxMSA0MiAyOS43IDUzLjEgNTIuN2M0IC40IDguMSAuNiAxMi4zIC42YzM0LjkgMCA2Ni43LTEzLjggODkuOS0zNi4xYzUuMS00LjkgNi40LTEyLjUgMy4yLTE4LjdzLTEwLjEtOS43LTE3LTguNmMtNC45IC44LTEwIDEuMy0xNS4yIDEuM2MtNDkgMC04OC40LTM5LjMtODguNC04Ny40YzAtMzIuNiAxOC02MS4xIDQ0LjktNzYuMWM2LjEtMy40IDkuMy0xMC41IDcuOC0xNy40cy03LjMtMTItMTQuMy0xMi42Yy0zLjYtLjMtNy4zLS41LTEwLjktLjV6TTM2Ny45IDM4My45YzQ0LjIgMCA4MC0zNS44IDgwLTgwYzAtMzkuMy0yOC40LTcyLjEtNjUuOC03OC43YzEuMi01LjYgMS45LTExLjMgMS45LTE3LjJjMC00NC4yLTM1LjgtODAtODAtODBjLTE3IDAtMzIuOCA1LjMtNDUuOCAxNC40QzI0MS4zIDExNC42IDIxMC44IDk2IDE3NiA5NmMtNTMgMC05NiA0My05NiA5NmwwIDEuM2MtNDUuNCA3LjYtODAgNDcuMS04MCA5NC42YzAgNTMgNDMgOTYgOTYgOTZIMzY3Ljl6TTg1LjQgNDIwLjFjLTExLTcuNC0yNS45LTQuNC0zMy4zIDYuN2wtMzIgNDhjLTcuNCAxMS00LjQgMjUuOSA2LjcgMzMuM3MyNS45IDQuNCAzMy4zLTYuN2wzMi00OGM3LjQtMTEgNC40LTI1LjktNi43LTMzLjN6bTk2IDBjLTExLTcuNC0yNS45LTQuNC0zMy4zIDYuN2wtMzIgNDhjLTcuNCAxMS00LjQgMjUuOSA2LjcgMzMuM3MyNS45IDQuNCAzMy4zLTYuN2wzMi00OGM3LjQtMTEgNC40LTI1LjktNi43LTMzLjN6bTk2IDBjLTExLTcuNC0yNS45LTQuNC0zMy4zIDYuN2wtMzIgNDhjLTcuNCAxMS00LjQgMjUuOSA2LjcgMzMuM3MyNS45IDQuNCAzMy4zLTYuN2wzMi00OGM3LjQtMTEgNC40LTI1LjktNi43LTMzLjN6bTk2IDBjLTExLTcuNC0yNS45LTQuNC0zMy4zIDYuN2wtMzIgNDhjLTcuNCAxMS00LjQgMjUuOSA2LjcgMzMuM3MyNS45IDQuNCAzMy4zLTYuN2wzMi00OGM3LjQtMTEgNC40LTI1LjktNi43LTMzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTUuOCAwYzUuNSAwIDEwLjkgLjIgMTYuMyAuN2M3IC42IDEyLjggNS43IDE0LjMgMTIuNXMtMS42IDEzLjktNy43IDE3LjNjLTQ0LjQgMjUuMi03NC40IDczLTc0LjQgMTI3LjhjMCA4MSA2NS41IDE0Ni42IDE0Ni4yIDE0Ni42YzguNiAwIDE3LS43IDI1LjEtMi4xYzYuOS0xLjIgMTMuOCAyLjIgMTcgOC41czEuOSAxMy44LTMuMSAxOC43Yy0zNC41IDMzLjYtODEuNyA1NC40LTEzMy42IDU0LjRjLTkuMyAwLTE4LjQtLjctMjcuNC0xLjljLTExLjItMjIuNi0yOS44LTQwLjktNTIuNi01MS43Yy0yLjctNTguNS01MC4zLTEwNS4zLTEwOS4yLTEwNi43Yy0xLjctMTAuNC0yLjYtMjEtMi42LTMxLjhDMzA0IDg2LjEgMzg5LjggMCA0OTUuOCAwek00NDcuOSA0MzEuOWMwIDQ0LjItMzUuOCA4MC04MCA4MEg5NmMtNTMgMC05Ni00My05Ni05NmMwLTQ3LjYgMzQuNi04NyA4MC05NC42bDAtMS4zYzAtNTMgNDMtOTYgOTYtOTZjMzQuOSAwIDY1LjQgMTguNiA4Mi4yIDQ2LjRjMTMtOS4xIDI4LjgtMTQuNCA0NS44LTE0LjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA1LjktLjYgMTEuNy0xLjkgMTcuMmMzNy40IDYuNyA2NS44IDM5LjQgNjUuOCA3OC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzIwYy01MyAwLTk2LTQzLTk2LTk2YzAtNDIuNSAyNy42LTc4LjYgNjUuOS05MS4yQzY0LjcgMTI2LjEgNjQgMTE5LjEgNjQgMTEyQzY0IDUwLjEgMTE0LjEgMCAxNzYgMGM0My4xIDAgODAuNSAyNC4zIDk5LjIgNjBjMTQuNy0xNy4xIDM2LjUtMjggNjAuOC0yOGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuNS0uNiAxMC44LTEuNiAxNmMuNSAwIDEuMSAwIDEuNiAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDk2em0tNi44IDUyYzEuMy0yLjUgMy45LTQgNi44LTRzNS40IDEuNSA2LjggNGwzNS4xIDY0LjZjNC4xIDcuNSA2LjIgMTUuOCA2LjIgMjQuM3YzYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4di0zYzAtOC41IDIuMS0xNi45IDYuMi0yNC4zTDg5LjIgMzcyem0xNjAgMGMxLjMtMi41IDMuOS00IDYuOC00czUuNCAxLjUgNi44IDRsMzUuMSA2NC42YzQuMSA3LjUgNi4yIDE1LjggNi4yIDI0LjN2M2MwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHYtM2MwLTguNSAyLjEtMTYuOSA2LjItMjQuM0wyNDkuMiAzNzJ6bTEyNC45IDY0LjZMNDA5LjIgMzcyYzEuMy0yLjUgMy45LTQgNi44LTRzNS40IDEuNSA2LjggNGwzNS4xIDY0LjZjNC4xIDcuNSA2LjIgMTUuOCA2LjIgMjQuM3YzYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4di0zYzAtOC41IDIuMS0xNi45IDYuMi0yNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFNob3dlcnNIZWF2eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMjBjLTUzIDAtOTYtNDMtOTYtOTZjMC00Mi41IDI3LjYtNzguNiA2NS45LTkxLjJDNjQuNyAxMjYuMSA2NCAxMTkuMSA2NCAxMTJDNjQgNTAuMSAxMTQuMSAwIDE3NiAwYzQzLjEgMCA4MC41IDI0LjMgOTkuMiA2MGMxNC43LTE3LjEgMzYuNS0yOCA2MC44LTI4YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgNS41LS42IDEwLjgtMS42IDE2Yy41IDAgMS4xIDAgMS42IDBjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZIOTZ6TTgxLjUgMzUzLjljMTIuMiA1LjIgMTcuOCAxOS4zIDEyLjYgMzEuNWwtNDggMTEyYy01LjIgMTIuMi0xOS4zIDE3LjgtMzEuNSAxMi42Uy0zLjMgNDkwLjcgMS45IDQ3OC41bDQ4LTExMmM1LjItMTIuMiAxOS4zLTE3LjggMzEuNS0xMi42em0xMjAgMGMxMi4yIDUuMiAxNy44IDE5LjMgMTIuNiAzMS41bC00OCAxMTJjLTUuMiAxMi4yLTE5LjMgMTcuOC0zMS41IDEyLjZzLTE3LjgtMTkuMy0xMi42LTMxLjVsNDgtMTEyYzUuMi0xMi4yIDE5LjMtMTcuOCAzMS41LTEyLjZ6bTI0NC42IDMxLjVsLTQ4IDExMmMtNS4yIDEyLjItMTkuMyAxNy44LTMxLjUgMTIuNnMtMTcuOC0xOS4zLTEyLjYtMzEuNWw0OC0xMTJjNS4yLTEyLjIgMTkuMy0xNy44IDMxLjUtMTIuNnMxNy44IDE5LjMgMTIuNiAzMS41ek0zMTMuNSAzNTMuOWMxMi4yIDUuMiAxNy44IDE5LjMgMTIuNiAzMS41bC00OCAxMTJjLTUuMiAxMi4yLTE5LjMgMTcuOC0zMS41IDEyLjZzLTE3LjgtMTkuMy0xMi42LTMxLjVsNDgtMTEyYzUuMi0xMi4yIDE5LjMtMTcuOCAzMS41LTEyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU2hvd2Vyc1dhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzM4LjYgMCA3MS45IDIyLjggODcuMiA1NS43QzMyNS43IDQxLjEgMzQ1LjggMzIgMzY4IDMyYzM4LjcgMCA3MSAyNy41IDc4LjQgNjRINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0SDEyOGMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NGMwLTUzIDQzLTk2IDk2LTk2ek0xNDAuNiAyOTIuM2wtNDggODBjLTYuOCAxMS40LTIxLjYgMTUtMzIuOSA4LjJzLTE1LjEtMjEuNi04LjItMzIuOWw0OC04MGM2LjgtMTEuNCAyMS42LTE1LjEgMzIuOS04LjJzMTUuMSAyMS42IDguMiAzMi45em0zMjcuOC0zMi45YzExLjQgNi44IDE1IDIxLjYgOC4yIDMyLjlsLTQ4IDgwYy02LjggMTEuNC0yMS42IDE1LTMyLjkgOC4ycy0xNS0yMS42LTguMi0zMi45bDQ4LTgwYzYuOC0xMS40IDIxLjYtMTUuMSAzMi45LTguMnpNMjUyLjYgMjkyLjNsLTQ4IDgwYy02LjggMTEuNC0yMS42IDE1LTMyLjkgOC4ycy0xNS4xLTIxLjYtOC4yLTMyLjlsNDgtODBjNi44LTExLjQgMjEuNi0xNS4xIDMyLjktOC4yczE1LjEgMjEuNiA4LjIgMzIuOXptMTAzLjgtMzIuOWMxMS40IDYuOCAxNSAyMS42IDguMiAzMi45bC00OCA4MGMtNi44IDExLjQtMjEuNiAxNS0zMi45IDguMnMtMTUuMS0yMS42LTguMi0zMi45bDQ4LTgwYzYuOC0xMS40IDIxLjYtMTUuMSAzMi45LTguMnpNMzA2LjUgNDIxLjlDMzI5IDQzNy40IDM1Ni41IDQ0OCAzODQgNDQ4YzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDUwMS43IDQxNyA1MTIgMzg0IDUxMmMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDQzNy4yIDE2NS4xIDQ0OCAxOTIgNDQ4YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFN1blJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk0LjIgMS4yYzUuMSAyLjEgOC43IDYuNyA5LjYgMTIuMWwxMC40IDYyLjRjLTIzLjMgMTAuOC00Mi45IDI4LjQtNTYgNTAuM2MtMTQuNi05LTMxLjgtMTQuMS01MC4yLTE0LjFjLTUzIDAtOTYgNDMtOTYgOTZjMCAzNS41IDE5LjMgNjYuNiA0OCA4My4yYy44IDMxLjggMTMuMiA2MC43IDMzLjEgODIuN2wtNTYgMzkuMmMtNC41IDMuMi0xMC4zIDMuOC0xNS40IDEuNnMtOC43LTYuNy05LjYtMTIuMUw5OC4xIDMxNy45IDEzLjQgMzAzLjhjLTUuNC0uOS0xMC00LjUtMTIuMS05LjZzLTEuNS0xMC45IDEuNi0xNS40TDUyLjUgMjA4IDIuOSAxMzcuMmMtMy4yLTQuNS0zLjgtMTAuMy0xLjYtMTUuNHM2LjctOC43IDEyLjEtOS42TDk4LjEgOTguMWwxNC4xLTg0LjdjLjktNS40IDQuNS0xMCA5LjYtMTIuMXMxMC45LTEuNSAxNS40IDEuNkwyMDggNTIuNSAyNzguOCAyLjljNC41LTMuMiAxMC4zLTMuOCAxNS40LTEuNnpNMjA4IDE0NGMxMy44IDAgMjYuNyA0LjQgMzcuMSAxMS45Yy0xLjIgNC4xLTIuMiA4LjMtMyAxMi42Yy0zNy45IDE0LjYtNjcuMiA0Ni42LTc3LjggODYuNEMxNTEuOCAyNDMuMSAxNDQgMjI2LjUgMTQ0IDIwOGMwLTM1LjMgMjguNy02NCA2NC02NHptNjkuNCAyNzZjMTEgNy40IDE0IDIyLjMgNi43IDMzLjNsLTMyIDQ4Yy03LjQgMTEtMjIuMyAxNC0zMy4zIDYuN3MtMTQtMjIuMy02LjctMzMuM2wzMi00OGM3LjQtMTEgMjIuMy0xNCAzMy4zLTYuN3ptOTYgMGMxMSA3LjQgMTQgMjIuMyA2LjcgMzMuM2wtMzIgNDhjLTcuNCAxMS0yMi4zIDE0LTMzLjMgNi43cy0xNC0yMi4zLTYuNy0zMy4zbDMyLTQ4YzcuNC0xMSAyMi4zLTE0IDMzLjMtNi43em05NiAwYzExIDcuNCAxNCAyMi4zIDYuNyAzMy4zbC0zMiA0OGMtNy40IDExLTIyLjMgMTQtMzMuMyA2LjdzLTE0LTIyLjMtNi43LTMzLjNsMzItNDhjNy40LTExIDIyLjMtMTQgMzMuMy02Ljd6bTk2IDBjMTEgNy40IDE0IDIyLjMgNi43IDMzLjNsLTMyIDQ4Yy03LjQgMTEtMjIuMyAxNC0zMy4zIDYuN3MtMTQtMjIuMy02LjctMzMuM2wzMi00OGM3LjQtMTEgMjIuMy0xNCAzMy4zLTYuN3ptNzQuNS0xMTYuMWMwIDQ0LjItMzUuOCA4MC04MCA4MEgyODhjLTUzIDAtOTYtNDMtOTYtOTZjMC00Ny42IDM0LjYtODcgODAtOTQuNmwwLTEuM2MwLTUzIDQzLTk2IDk2LTk2YzM0LjkgMCA2NS40IDE4LjYgODIuMiA0Ni40YzEzLTkuMSAyOC44LTE0LjQgNDUuOC0xNC40YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgNS45LS42IDExLjctMS45IDE3LjJjMzcuNCA2LjcgNjUuOCAzOS40IDY1LjggNzguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRTdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk0LjIgMS4yYzUuMSAyLjEgOC43IDYuNyA5LjYgMTIuMWwxNC4xIDg0LjcgODQuNyAxNC4xYzUuNCAuOSAxMCA0LjUgMTIuMSA5LjZzMS41IDEwLjktMS42IDE1LjRsLTM4LjUgNTVjLTIuMi0uMS00LjQtLjItNi43LS4yYy0yMy4zIDAtNDUuMSA2LjItNjQgMTcuMWwwLTEuMWMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnM0MyA5NiA5NiA5NmM4LjEgMCAxNS45LTEgMjMuNC0yLjljLTM2LjYgMTguMS02My4zIDUzLjEtNjkuOCA5NC45bC0yNC40IDE3Yy00LjUgMy4xLTEwLjMgMy44LTE1LjQgMS42cy04LjctNi43LTkuNi0xMi4xTDk4LjEgMzE3LjkgMTMuNCAzMDMuOGMtNS40LS45LTEwLTQuNS0xMi4xLTkuNnMtMS41LTEwLjkgMS42LTE1LjRMNTIuNSAyMDggMi45IDEzNy4yYy0zLjItNC41LTMuOC0xMC4zLTEuNi0xNS40czYuNy04LjcgMTIuMS05LjZMOTguMSA5OC4xbDE0LjEtODQuN2MuOS01LjQgNC41LTEwIDkuNi0xMi4xczEwLjktMS41IDE1LjQgMS42TDIwOCA1Mi41IDI3OC44IDIuOWM0LjUtMy4yIDEwLjMtMy44IDE1LjQtMS42ek0xNDQgMjA4YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNjM5LjkgNDMxLjljMCA0NC4yLTM1LjggODAtODAgODBIMjg4Yy01MyAwLTk2LTQzLTk2LTk2YzAtNDcuNiAzNC42LTg3IDgwLTk0LjZsMC0xLjNjMC01MyA0My05NiA5Ni05NmMzNC45IDAgNjUuNCAxOC42IDgyLjIgNDYuNGMxMy05LjEgMjguOC0xNC40IDQ1LjgtMTQuNGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuOS0uNiAxMS43LTEuOSAxNy4yYzM3LjQgNi43IDY1LjggMzkuNCA2NS44IDc4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0SDUxMmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGMwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjRjNC4xLTEwLjcgNi40LTIyLjQgNi40LTM0LjZjMC01My00My05Ni05Ni05NmMtMTkuNyAwLTM4LjEgNi01My4zIDE2LjJDMzY3IDY0LjIgMzE1LjMgMzIgMjU2IDMyQzE2Ny42IDMyIDk2IDEwMy42IDk2IDE5MmMwIDIuNyAuMSA1LjQgLjIgOC4xQzQwLjIgMjE5LjggMCAyNzMuMiAwIDMzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNi42IDQ5LjlDMjA1LjEgMzguNSAxODkuNSAzMiAxNzMuMyAzMkMxMzkuNCAzMiAxMTIgNTkuNCAxMTIgOTMuM3Y0LjljMCAxMiAzLjMgMjMuNyA5LjQgMzRsMTguOCAzMS4zYzEuMSAxLjggMS4yIDMuMSAxIDQuMmMtLjIgMS4yLS44IDIuNS0yIDMuNnMtMi40IDEuOC0zLjYgMmMtMSAuMi0yLjQgLjEtNC4yLTFsLTMxLjMtMTguOGMtMTAuMy02LjItMjItOS40LTM0LTkuNEg2MS4zQzI3LjQgMTQ0IDAgMTcxLjQgMCAyMDUuM2MwIDE2LjIgNi41IDMxLjggMTcuOSA0My4zbDEuMiAxLjJjMy40IDMuNCAzLjQgOSAwIDEyLjRsLTEuMiAxLjJDNi41IDI3NC45IDAgMjkwLjUgMCAzMDYuN0MwIDM0MC42IDI3LjQgMzY4IDYxLjMgMzY4aDQuOWMxMiAwIDIzLjctMy4zIDM0LTkuNGwzMS4zLTE4LjhjMS44LTEuMSAzLjEtMS4yIDQuMi0xYzEuMiAuMiAyLjUgLjggMy42IDJzMS44IDIuNCAyIDMuNmMuMiAxIC4xIDIuNC0xIDQuMmwtMTguOCAzMS4zYy02LjIgMTAuMy05LjQgMjItOS40IDM0djQuOWMwIDMzLjggMjcuNCA2MS4zIDYxLjMgNjEuM2MxNi4yIDAgMzEuOC02LjUgNDMuMy0xNy45bDEuMi0xLjJjMy40LTMuNCA5LTMuNCAxMi40IDBsMS4yIDEuMmMxMS41IDExLjUgMjcuMSAxNy45IDQzLjMgMTcuOWMzMy44IDAgNjEuMy0yNy40IDYxLjMtNjEuM3YtNC45YzAtMTItMy4zLTIzLjctOS40LTM0bC0xOC44LTMxLjNjLTEuMS0xLjgtMS4yLTMuMS0xLTQuMmMuMi0xLjIgLjgtMi41IDItMy42czIuNC0xLjggMy42LTJjMS0uMiAyLjQtLjEgNC4yIDFsMzEuMyAxOC44YzEwLjMgNi4yIDIyIDkuNCAzNCA5LjRoNC45YzMzLjggMCA2MS4zLTI3LjQgNjEuMy02MS4zYzAtMTYuMi02LjUtMzEuOC0xNy45LTQzLjNsLTEuMi0xLjJjLTMuNC0zLjQtMy40LTkgMC0xMi40bDEuMi0xLjJjMTEuNS0xMS41IDE3LjktMjcuMSAxNy45LTQzLjNjMC0zMy44LTI3LjQtNjEuMy02MS4zLTYxLjNoLTQuOWMtMTIgMC0yMy43IDMuMy0zNCA5LjRsLTMxLjMgMTguOGMtMS44IDEuMS0zLjEgMS4yLTQuMiAxYy0xLjItLjItMi41LS44LTMuNi0ycy0xLjgtMi40LTItMy42Yy0uMi0xLS4xLTIuNCAxLTQuMmwxOC44LTMxLjNjNi4yLTEwLjMgOS40LTIyIDkuNC0zNFY5My4zQzMzNiA1OS40IDMwOC42IDMyIDI3NC43IDMyYy0xNi4yIDAtMzEuOCA2LjUtNDMuMyAxNy45bC0xLjIgMS4yYy0zLjQgMy40LTkgMy40LTEyLjQgMGwtMS4yLTEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZUJyYW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAxMDRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em04MC0yNGMwIDMyLjgtMTkuNyA2MS00OCA3My4zdjg3LjhjMTguOC0xMC45IDQwLjctMTcuMSA2NC0xNy4xaDk2YzM1LjMgMCA2NC0yOC43IDY0LTY0di02LjdDMzA3LjcgMTQxIDI4OCAxMTIuOCAyODggODBjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDMyLjgtMTkuNyA2MS00OCA3My4zVjE2MGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOEgxNzZjLTM1LjMgMC02NCAyOC43LTY0IDY0djYuN2MyOC4zIDEyLjMgNDggNDAuNSA0OCA3My4zYzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMzIuOCAxOS43LTYxIDQ4LTczLjNWMzUyIDE1My4zQzE5LjcgMTQxIDAgMTEyLjggMCA4MEMwIDM1LjggMzUuOCAwIDgwIDBzODAgMzUuOCA4MCA4MHptMjMyIDBhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNODAgNDU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZUNvbW1pdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzM2YTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0xNTYuOC00OEM0NjIgMzYxIDM5Ny40IDQxNiAzMjAgNDE2cy0xNDItNTUtMTU2LjgtMTI4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDE2My4yQzE3OCAxNTEgMjQyLjYgOTYgMzIwIDk2czE0MiA1NSAxNTYuOCAxMjhINjA4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ3Ni44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlQ29tcGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDg4YzAgOS41LTUuNiAxOC4xLTE0LjIgMjEuOXMtMTguOCAyLjMtMjUuOC00LjFsLTgwLTcyYy01LjEtNC42LTcuOS0xMS03LjktMTcuOHMyLjktMTMuMyA3LjktMTcuOGw4MC03MmM3LTYuMyAxNy4yLTcuOSAyNS44LTQuMXMxNC4yIDEyLjQgMTQuMiAyMS45djQwaDE2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE1My4zQzM3MS43IDE0MSAzNTIgMTEyLjggMzUyIDgwYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM1YzMjBjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIMzIwdjQwek00NTYgODBhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNMTkyIDI0YzAtOS41IDUuNi0xOC4xIDE0LjItMjEuOXMxOC44LTIuMyAyNS44IDQuMWw4MCA3MmM1LjEgNC42IDcuOSAxMSA3LjkgMTcuOHMtMi45IDEzLjMtNy45IDE3LjhsLTgwIDcyYy03IDYuMy0xNy4yIDcuOS0yNS44IDQuMXMtMTQuMi0xMi40LTE0LjItMjEuOVYxMjhIMTc2Yy0zNS4zIDAtNjQgMjguNy02NCA2NFYzNTguN2MyOC4zIDEyLjMgNDggNDAuNSA0OCA3My4zYzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMzIuOCAxOS43LTYxIDQ4LTczLjNWMTkyYzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4aDE2VjI0ek01NiA0MzJhMjQgMjQgMCAxIDAgNDggMCAyNCAyNCAwIDEgMCAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZUZvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTA0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptODAtMjRjMCAzMi44LTE5LjcgNjEtNDggNzMuM1YxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzA0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE1My4zQzMwNy43IDE0MSAyODggMTEyLjggMjg4IDgwYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM1YxOTJjMCA1My00MyA5Ni05NiA5NkgyNTZ2NzAuN2MyOC4zIDEyLjMgNDggNDAuNSA0OCA3My4zYzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMzIuOCAxOS43LTYxIDQ4LTczLjNWMjg4SDE0NGMtNTMgMC05Ni00My05Ni05NlYxNTMuM0MxOS43IDE0MSAwIDExMi44IDAgODBDMCAzNS44IDM1LjggMCA4MCAwczgwIDM1LjggODAgODB6bTIwOCAyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6TTI0OCA0MzJhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZU1lcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDU2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMzIuNCA5Ny4yYzI4LTEyLjQgNDcuNi00MC41IDQ3LjYtNzMuMmMwLTQ0LjItMzUuOC04MC04MC04MFMwIDM1LjggMCA4MGMwIDMyLjggMTkuNyA2MSA0OCA3My4zVjM1OC43QzE5LjcgMzcxIDAgMzk5LjIgMCA0MzJjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTMyLjgtMTkuNy02MS00OC03My4zVjI3MmMyNi43IDIwLjEgNjAgMzIgOTYgMzJoODYuN2MxMi4zIDI4LjMgNDAuNSA0OCA3My4zIDQ4YzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwYy0zMi44IDAtNjEgMTkuNy03My4zIDQ4SDIwOGMtNDkuOSAwLTkxLTM4LjEtOTUuNi04Ni44ek04MCA0MDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek0zNDQgMjcyYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVQdWxsUmVxdWVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDUuOCAyLjFDMzE0LjQgNS45IDMyMCAxNC41IDMyMCAyNFY2NGgxNmM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOFYzNTguN2MyOC4zIDEyLjMgNDggNDAuNSA0OCA3My4zYzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMzIuOCAxOS43LTYxIDQ4LTczLjNWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDMyMHY0MGMwIDkuNS01LjYgMTguMS0xNC4yIDIxLjlzLTE4LjggMi4zLTI1LjgtNC4xbC04MC03MmMtNS4xLTQuNi03LjktMTEtNy45LTE3LjhzMi45LTEzLjMgNy45LTE3LjhsODAtNzJjNy02LjMgMTcuMi03LjkgMjUuOC00LjF6TTEwNCA4MEEyNCAyNCAwIDEgMCA1NiA4MGEyNCAyNCAwIDEgMCA0OCAwem04IDczLjNWMzU4LjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjE1My4zQzE5LjcgMTQxIDAgMTEyLjggMCA4MEMwIDM1LjggMzUuOCAwIDgwIDBzODAgMzUuOCA4MCA4MGMwIDMyLjgtMTkuNyA2MS00OCA3My4zek0xMDQgNDMyYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTMyOCAyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyLjggMS4yYy0xNy00LjktMzQuNyA1LTM5LjYgMjJsLTEyOCA0NDhjLTQuOSAxNyA1IDM0LjcgMjIgMzkuNnMzNC43LTUgMzkuNi0yMmwxMjgtNDQ4YzQuOS0xNy01LTM0LjctMjItMzkuNnptODAuNiAxMjAuMWMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNMNTYyLjcgMjU2bC04OS40IDg5LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMTEyLTExMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTEyLTExMmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDB6bS0zMDYuNyAwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTEyIDExMmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTEyIDExMmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDc3LjMgMjU2bDg5LjQtODkuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29pbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDgwYzAgMTgtMTQuMyAzNC42LTM4LjQgNDhjLTI5LjEgMTYuMS03Mi41IDI3LjUtMTIyLjMgMzAuOWMtMy43LTEuOC03LjQtMy41LTExLjMtNUMzMDAuNiAxMzcuNCAyNDguMiAxMjggMTkyIDEyOGMtOC4zIDAtMTYuNCAuMi0yNC41IC42bC0xLjEtLjZDMTQyLjMgMTE0LjYgMTI4IDk4IDEyOCA4MGMwLTQ0LjIgODYtODAgMTkyLTgwUzUxMiAzNS44IDUxMiA4MHpNMTYwLjcgMTYxLjFjMTAuMi0uNyAyMC43LTEuMSAzMS4zLTEuMWM2Mi4yIDAgMTE3LjQgMTIuMyAxNTIuNSAzMS40QzM2OS4zIDIwNC45IDM4NCAyMjEuNyAzODQgMjQwYzAgNC0uNyA3LjktMi4xIDExLjdjLTQuNiAxMy4yLTE3IDI1LjMtMzUgMzUuNWMwIDAgMCAwIDAgMGMtLjEgLjEtLjMgLjEtLjQgLjJsMCAwIDAgMGMtLjMgLjItLjYgLjMtLjkgLjVjLTM1IDE5LjQtOTAuOCAzMi0xNTMuNiAzMmMtNTkuNiAwLTExMi45LTExLjMtMTQ4LjItMjkuMWMtMS45LS45LTMuNy0xLjktNS41LTIuOUMxNC4zIDI3NC42IDAgMjU4IDAgMjQwYzAtMzQuOCA1My40LTY0LjUgMTI4LTc1LjRjMTAuNS0xLjUgMjEuNC0yLjcgMzIuNy0zLjV6TTQxNiAyNDBjMC0yMS45LTEwLjYtMzkuOS0yNC4xLTUzLjRjMjguMy00LjQgNTQuMi0xMS40IDc2LjItMjAuNWMxNi4zLTYuOCAzMS41LTE1LjIgNDMuOS0yNS41VjE3NmMwIDE5LjMtMTYuNSAzNy4xLTQzLjggNTAuOWMtMTQuNiA3LjQtMzIuNCAxMy43LTUyLjQgMTguNWMuMS0xLjggLjItMy41IC4yLTUuM3ptLTMyIDk2YzAgMTgtMTQuMyAzNC42LTM4LjQgNDhjLTEuOCAxLTMuNiAxLjktNS41IDIuOUMzMDQuOSA0MDQuNyAyNTEuNiA0MTYgMTkyIDQxNmMtNjIuOCAwLTExOC42LTEyLjYtMTUzLjYtMzJDMTQuMyAzNzAuNiAwIDM1NCAwIDMzNlYzMDAuNmMxMi41IDEwLjMgMjcuNiAxOC43IDQzLjkgMjUuNUM4My40IDM0Mi42IDEzNS44IDM1MiAxOTIgMzUyczEwOC42LTkuNCAxNDguMS0yNS45YzcuOC0zLjIgMTUuMy02LjkgMjIuNC0xMC45YzYuMS0zLjQgMTEuOC03LjIgMTcuMi0xMS4yYzEuNS0xLjEgMi45LTIuMyA0LjMtMy40VjMwNHY1LjdWMzM2em0zMiAwVjMwNCAyNzguMWMxOS00LjIgMzYuNS05LjUgNTIuMS0xNmMxNi4zLTYuOCAzMS41LTE1LjIgNDMuOS0yNS41VjI3MmMwIDEwLjUtNSAyMS0xNC45IDMwLjljLTE2LjMgMTYuMy00NSAyOS43LTgxLjMgMzguNGMuMS0xLjcgLjItMy41IC4yLTUuM3pNMTkyIDQ0OGM1Ni4yIDAgMTA4LjYtOS40IDE0OC4xLTI1LjljMTYuMy02LjggMzEuNS0xNS4yIDQzLjktMjUuNVY0MzJjMCA0NC4yLTg2IDgwLTE5MiA4MFMwIDQ3Ni4yIDAgNDMyVjM5Ni42YzEyLjUgMTAuMyAyNy42IDE4LjcgNDMuOSAyNS41QzgzLjQgNDM4LjYgMTM1LjggNDQ4IDE5MiA0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbG9uU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUgMzkuOGM0LjMtMTcuMS02LjEtMzQuNS0yMy4zLTM4LjhTMTk3LjIgNy4xIDE5MyAyNC4yTDE4MS45IDY4LjZDOTYuMSA4Ny44IDMyIDE2NC40IDMyIDI1NmMwIDU4LjEgMjUuOCAxMTAuMiA2Ni43IDE0NS40TDgxIDQ3Mi4yYy00LjMgMTcuMSA2LjEgMzQuNSAyMy4zIDM4LjhzMzQuNS02LjEgMzguOC0yMy4zbDEzLTUyLjFjOSAzLjQgMTguNCA2LjIgMjggOC4yTDE3NyA0NzIuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wxMC40LTQxLjRjMzMuNC00LjQgNjQuMS0xNy40IDg5LjgtMzYuN2MxNC4xLTEwLjYgMTctMzAuNyA2LjQtNDQuOHMtMzAuNy0xNy00NC44LTYuNGMtMTAuMiA3LjctMjEuNyAxMy45LTM0IDE4LjNMMzIxIDE2MGM5LjQtLjMgMTguNS00LjcgMjQuNi0xMi44YzEwLjYtMTQuMSA3LjgtMzQuMi02LjQtNDQuOGMtMS4xLS44LTIuMi0xLjYtMy4zLTIuNEwzNTEgMzkuOGM0LjMtMTcuMS02LjEtMzQuNS0yMy4zLTM4LjhTMjkzLjIgNy4xIDI4OSAyNC4yTDI3Ny4yIDcxLjVjLTkuMy0yLjctMTguOC00LjYtMjguNi01LjlMMjU1IDM5Ljh6TTE2My4yIDE0My4zTDExNy4zIDMyNi44QzEwMy45IDMwNi41IDk2IDI4Mi4yIDk2IDI1NmMwLTQ4LjcgMjcuMi05MSA2Ny4yLTExMi43em04LjYgMjI5LjVsNjEuMS0yNDQuNmM5LjkgLjcgMTkuNSAyLjUgMjguNyA1LjNsLTYyIDI0OC4xYy05LjctMS45LTE5LTQuOC0yNy44LTguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudERvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJTMCAxMjUuMSAwIDI0MGMwIDQ1LjEgMTcuNyA4Ni44IDQ3LjcgMTIwLjljLTEuOSAyNC41LTExLjQgNDYuMy0yMS40IDYyLjljLTUuNSA5LjItMTEuMSAxNi42LTE1LjIgMjEuNmMtMi4xIDIuNS0zLjcgNC40LTQuOSA1LjdjLS42IC42LTEgMS4xLTEuMyAxLjRsLS4zIC4zIDAgMCAwIDAgMCAwIDAgMGMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzI4LjcgMCA1Ny42LTguOSA4MS42LTE5LjNjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3Ljl6bTIwLTMxMnYxMy45YzcuNSAxLjIgMTQuNiAyLjkgMjEuMSA0LjdjMTAuNyAyLjggMTcgMTMuOCAxNC4yIDI0LjVzLTEzLjggMTctMjQuNSAxNC4yYy0xMS0yLjktMjEuNi01LTMxLjItNS4yYy03LjktLjEtMTYgMS44LTIxLjUgNWMtNC44IDIuOC02LjIgNS42LTYuMiA5LjNjMCAxLjggLjEgMy41IDUuMyA2LjdjNi4zIDMuOCAxNS41IDYuNyAyOC4zIDEwLjVsLjcgLjJjMTEuMiAzLjQgMjUuNiA3LjcgMzcuMSAxNWMxMi45IDguMSAyNC4zIDIxLjMgMjQuNiA0MS42Yy4zIDIwLjktMTAuNSAzNi4xLTI0LjggNDVjLTcuMiA0LjUtMTUuMiA3LjMtMjMuMiA5VjM0NGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBWMzI5LjRjLTEwLjMtMi4yLTIwLTUuNS0yOC4yLTguNGwwIDAgMCAwYy0yLjEtLjctNC4xLTEuNC02LjEtMi4xYy0xMC41LTMuNS0xNi4xLTE0LjgtMTIuNi0yNS4zczE0LjgtMTYuMSAyNS4zLTEyLjZjMi41IC44IDQuOSAxLjcgNy4yIDIuNGMxMy42IDQuNiAyNCA4LjEgMzUuMSA4LjVjOC42IC4zIDE2LjUtMS42IDIxLjQtNC43YzQuMS0yLjUgNi01LjUgNS45LTEwLjVjMC0yLjktLjgtNS01LjktOC4yYy02LjMtNC0xNS40LTYuOS0yOC0xMC43bC0xLjctLjVjLTEwLjktMy4zLTI0LjYtNy40LTM1LjYtMTRjLTEyLjctNy43LTI0LjYtMjAuNS0yNC43LTQwLjdjLS4xLTIxLjEgMTEuOC0zNS43IDI1LjgtNDMuOWM2LjktNC4xIDE0LjUtNi44IDIyLjItOC41VjEzNmMwLTExIDktMjAgMjAtMjBzMjAgOSAyMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyUzAgMTI1LjEgMCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuMyAwIDAgMCAwIDAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45ek0xMjggMjA4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em05NiAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50TWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJTMCAxMjUuMSAwIDI0MGMwIDQ1LjEgMTcuNyA4Ni44IDQ3LjcgMTIwLjljLTEuOSAyNC41LTExLjQgNDYuMy0yMS40IDYyLjljLTUuNSA5LjItMTEuMSAxNi42LTE1LjIgMjEuNmMtMi4xIDIuNS0zLjcgNC40LTQuOSA1LjdjLS42IC42LTEgMS4xLTEuMyAxLjRsLS4zIC4zIDAgMCAwIDAgMCAwIDAgMGMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzI4LjcgMCA1Ny42LTguOSA4MS42LTE5LjNjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3Ljl6TTIyNCAxNjBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI4OHY0OGMwIDguOC03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZWMjcySDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjIyNGMwLTguOCA3LjItMTYgMTYtMTZoNDhWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w1MTIuOSAzNzYuN0M1NTIuMiAzNDAuMiA1NzYgMjkyLjMgNTc2IDI0MEM1NzYgMTI1LjEgNDYxLjQgMzIgMzIwIDMyYy02Ny43IDAtMTI5LjMgMjEuNC0xNzUuMSA1Ni4zTDM4LjggNS4xem0zODUuMiA0MjVMODIuOSAxNjEuM0M3MC43IDE4NS42IDY0IDIxMi4yIDY0IDI0MGMwIDQ1LjEgMTcuNyA4Ni44IDQ3LjcgMTIwLjljLTEuOSAyNC41LTExLjQgNDYuMy0yMS40IDYyLjljLTUuNSA5LjItMTEuMSAxNi42LTE1LjIgMjEuNmMtMi4xIDIuNS0zLjcgNC40LTQuOSA1LjdjLS42IC42LTEgMS4xLTEuMyAxLjRsLS4zIC4zIDAgMCAwIDAgMCAwIDAgMGMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzI4LjcgMCA1Ny42LTguOSA4MS42LTE5LjNjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3LjljMzcgMCA3Mi4zLTYuNCAxMDQuMS0xNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50U21zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0NDhjMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMlMwIDEyNS4xIDAgMjQwYzAgNDUuMSAxNy43IDg2LjggNDcuNyAxMjAuOWMtMS45IDI0LjUtMTEuNCA0Ni4zLTIxLjQgNjIuOWMtNS41IDkuMi0xMS4xIDE2LjYtMTUuMiAyMS42Yy0yLjEgMi41LTMuNyA0LjQtNC45IDUuN2MtLjYgLjYtMSAxLjEtMS4zIDEuNGwtLjMgLjMgMCAwIDAgMCAwIDAgMCAwYy00LjYgNC42LTUuOSAxMS40LTMuNCAxNy40YzIuNSA2IDguMyA5LjkgMTQuOCA5LjljMjguNyAwIDU3LjYtOC45IDgxLjYtMTkuM2MyMi45LTEwIDQyLjQtMjEuOSA1NC4zLTMwLjZjMzEuOCAxMS41IDY3IDE3LjkgMTA0LjEgMTcuOXpNOTYgMjEyLjhjMC0yMC4zIDE2LjUtMzYuOCAzNi44LTM2LjhIMTUyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDEzMi44Yy0yLjcgMC00LjggMi4yLTQuOCA0LjhjMCAxLjYgLjggMy4xIDIuMiA0bDI5LjQgMTkuNmMxMC4zIDYuOCAxNi40IDE4LjMgMTYuNCAzMC43YzAgMjAuMy0xNi41IDM2LjgtMzYuOCAzNi44SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgyNy4yYzIuNyAwIDQuOC0yLjIgNC44LTQuOGMwLTEuNi0uOC0zLjEtMi4yLTRsLTI5LjQtMTkuNkMxMDIuMiAyMzYuNyA5NiAyMjUuMiA5NiAyMTIuOHpNMzcyLjggMTc2SDM5MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNzIuOGMtMi43IDAtNC44IDIuMi00LjggNC44YzAgMS42IC44IDMuMSAyLjIgNGwyOS40IDE5LjZjMTAuMiA2LjggMTYuNCAxOC4zIDE2LjQgMzAuN2MwIDIwLjMtMTYuNSAzNi44LTM2LjggMzYuOEgzNTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMjcuMmMyLjcgMCA0LjgtMi4yIDQuOC00LjhjMC0xLjYtLjgtMy4xLTIuMi00bC0yOS40LTE5LjZjLTEwLjItNi44LTE2LjQtMTguMy0xNi40LTMwLjdjMC0yMC4zIDE2LjUtMzYuOCAzNi44LTM2Ljh6bS0xNTIgNi40TDI1NiAyMjkuM2wzNS4yLTQ2LjljNC4xLTUuNSAxMS4zLTcuOCAxNy45LTUuNnMxMC45IDguMyAxMC45IDE1LjJ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjQwbC0xOS4yIDI1LjZjLTMgNC03LjggNi40LTEyLjggNi40cy05LjgtMi40LTEyLjgtNi40TDIyNCAyNDB2NDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMTkyYzAtNi45IDQuNC0xMyAxMC45LTE1LjJzMTMuNyAuMSAxNy45IDUuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjQwYzAgMTE0LjktMTE0LjYgMjA4LTI1NiAyMDhjLTM3LjEgMC03Mi4zLTYuNC0xMDQuMS0xNy45Yy0xMS45IDguNy0zMS4zIDIwLjYtNTQuMyAzMC42QzczLjYgNDcxLjEgNDQuNyA0ODAgMTYgNDgwYy02LjUgMC0xMi4zLTMuOS0xNC44LTkuOWMtMi41LTYtMS4xLTEyLjggMy40LTE3LjRsMCAwIDAgMCAwIDAgMCAwIC4zLS4zYy4zLS4zIC43LS43IDEuMy0xLjRjMS4xLTEuMiAyLjgtMy4xIDQuOS01LjdjNC4xLTUgOS42LTEyLjQgMTUuMi0yMS42YzEwLTE2LjYgMTkuNS0zOC40IDIxLjQtNjIuOUMxNy43IDMyNi44IDAgMjg1LjEgMCAyNDBDMCAxMjUuMSAxMTQuNiAzMiAyNTYgMzJzMjU2IDkzLjEgMjU2IDIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudHNEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDE3NmMwIDk3LjItOTMuMSAxNzYtMjA4IDE3NmMtMzguMiAwLTczLjktOC43LTEwNC43LTIzLjljLTcuNSA0LTE2IDcuOS0yNS4yIDExLjRDNTkuOCAzNDYuNCAzNy44IDM1MiAxNiAzNTJjLTYuOSAwLTEzLjEtNC41LTE1LjItMTEuMXMuMi0xMy44IDUuOC0xNy45bDAgMCAwIDAgLjItLjJjLjItLjIgLjYtLjQgMS4xLS44YzEtLjggMi41LTIgNC4zLTMuN2MzLjYtMy4zIDguNS04LjEgMTMuMy0xNC4zYzUuNS03IDEwLjctMTUuNCAxNC4yLTI0LjdDMTQuNyAyNTAuMyAwIDIxNC42IDAgMTc2QzAgNzguOCA5My4xIDAgMjA4IDBTNDE2IDc4LjggNDE2IDE3NnpNMjMxLjUgMzgzQzM0OC45IDM3Mi45IDQ0OCAyODguMyA0NDggMTc2YzAtNS4yLS4yLTEwLjQtLjYtMTUuNUM1NTUuMSAxNjcuMSA2NDAgMjQzLjIgNjQwIDMzNmMwIDM4LjYtMTQuNyA3NC4zLTM5LjYgMTAzLjRjMy41IDkuNCA4LjcgMTcuNyAxNC4yIDI0LjdjNC44IDYuMiA5LjcgMTEgMTMuMyAxNC4zYzEuOCAxLjYgMy4zIDIuOSA0LjMgMy43Yy41IC40IC45IC43IDEuMSAuOGwuMiAuMiAwIDAgMCAwYzUuNiA0LjEgNy45IDExLjMgNS44IDE3LjljLTIuMSA2LjYtOC4zIDExLjEtMTUuMiAxMS4xYy0yMS44IDAtNDMuOC01LjYtNjIuMS0xMi41Yy05LjItMy41LTE3LjgtNy40LTI1LjItMTEuNEM1MDUuOSA1MDMuMyA0NzAuMiA1MTIgNDMyIDUxMmMtOTUuNiAwLTE3Ni4yLTU0LjYtMjAwLjUtMTI5ek0yMjggNzJjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwVjg2Yy03LjYgMS43LTE1LjIgNC40LTIyLjIgOC41Yy0xMy45IDguMy0yNS45IDIyLjgtMjUuOCA0My45Yy4xIDIwLjMgMTIgMzMuMSAyNC43IDQwLjdjMTEgNi42IDI0LjcgMTAuOCAzNS42IDE0bDEuNyAuNWMxMi42IDMuOCAyMS44IDYuOCAyOCAxMC43YzUuMSAzLjIgNS44IDUuNCA1LjkgOC4yYy4xIDUtMS44IDgtNS45IDEwLjVjLTUgMy4xLTEyLjkgNS0yMS40IDQuN2MtMTEuMS0uNC0yMS41LTMuOS0zNS4xLTguNWMtMi4zLS44LTQuNy0xLjYtNy4yLTIuNGMtMTAuNS0zLjUtMjEuOCAyLjItMjUuMyAxMi42czIuMiAyMS44IDEyLjYgMjUuM2MxLjkgLjYgNCAxLjMgNi4xIDIuMWwwIDAgMCAwYzguMyAyLjkgMTcuOSA2LjIgMjguMiA4LjRWMjgwYzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwVjI2Ni4yYzgtMS43IDE2LTQuNSAyMy4yLTljMTQuMy04LjkgMjUuMS0yNC4xIDI0LjgtNDVjLS4zLTIwLjMtMTEuNy0zMy40LTI0LjYtNDEuNmMtMTEuNS03LjItMjUuOS0xMS42LTM3LjEtMTVsLS43LS4yYy0xMi44LTMuOS0yMS45LTYuNy0yOC4zLTEwLjVjLTUuMi0zLjEtNS4zLTQuOS01LjMtNi43YzAtMy43IDEuNC02LjUgNi4yLTkuM2M1LjQtMy4yIDEzLjYtNS4xIDIxLjUtNWM5LjYgLjEgMjAuMiAyLjIgMzEuMiA1LjJjMTAuNyAyLjggMjEuNi0zLjUgMjQuNS0xNC4ycy0zLjUtMjEuNi0xNC4yLTI0LjVjLTYuNS0xLjctMTMuNy0zLjQtMjEuMS00LjdWNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAzNTJjMTE0LjkgMCAyMDgtNzguOCAyMDgtMTc2UzMyMi45IDAgMjA4IDBTMCA3OC44IDAgMTc2YzAgMzguNiAxNC43IDc0LjMgMzkuNiAxMDMuNGMtMy41IDkuNC04LjcgMTcuNy0xNC4yIDI0LjdjLTQuOCA2LjItOS43IDExLTEzLjMgMTQuM2MtMS44IDEuNi0zLjMgMi45LTQuMyAzLjdjLS41IC40LS45IC43LTEuMSAuOGwtLjIgLjIgMCAwIDAgMEMxIDMyNy4yLTEuNCAzMzQuNCAuOCAzNDAuOVM5LjEgMzUyIDE2IDM1MmMyMS44IDAgNDMuOC01LjYgNjIuMS0xMi41YzkuMi0zLjUgMTcuOC03LjQgMjUuMy0xMS40QzEzNC4xIDM0My4zIDE2OS44IDM1MiAyMDggMzUyek00NDggMTc2YzAgMTEyLjMtOTkuMSAxOTYuOS0yMTYuNSAyMDdDMjU1LjggNDU3LjQgMzM2LjQgNTEyIDQzMiA1MTJjMzguMiAwIDczLjktOC43IDEwNC43LTIzLjljNy41IDQgMTYgNy45IDI1LjIgMTEuNGMxOC4zIDYuOSA0MC4zIDEyLjUgNjIuMSAxMi41YzYuOSAwIDEzLjEtNC41IDE1LjItMTEuMWMyLjEtNi42LS4yLTEzLjgtNS44LTE3LjlsMCAwIDAgMC0uMi0uMmMtLjItLjItLjYtLjQtMS4xLS44Yy0xLS44LTIuNS0yLTQuMy0zLjdjLTMuNi0zLjMtOC41LTguMS0xMy4zLTE0LjNjLTUuNS03LTEwLjctMTUuNC0xNC4yLTI0LjdjMjQuOS0yOSAzOS42LTY0LjcgMzkuNi0xMDMuNGMwLTkyLjgtODQuOS0xNjguOS0xOTIuNi0xNzUuNWMuNCA1LjEgLjYgMTAuMyAuNiAxNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wYWN0RGlzYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTI1NiAzMmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6bS05Ni0zMmE5NiA5NiAwIDEgMCAxOTIgMCA5NiA5NiAwIDEgMCAtMTkyIDB6TTk2IDI0MGMwLTM1IDE3LjUtNzEuMSA0NS4yLTk4LjhTMjA1IDk2IDI0MCA5NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtNDUuNCAwLTg5LjIgMjIuMy0xMjEuNSA1NC41UzY0IDE5NC42IDY0IDI0MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wYXNzRHJhZnRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDk2YzAgMTQuMy0zLjEgMjcuOS04LjggNDAuMkwzOTYgMjI3LjRjLTIzLjcgMjUuMy01NC4yIDQ0LjEtODguNSA1My42TDI1NiAxOTJoMCAwbC02OCAxMTcuNWMyMS41IDYuOCA0NC4zIDEwLjUgNjguMSAxMC41YzcwLjcgMCAxMzMuOC0zMi43IDE3NC45LTg0YzExLjEtMTMuOCAzMS4yLTE2IDQ1LTVzMTYgMzEuMiA1IDQ1QzQyOC4xIDM0MS44IDM0NyAzODQgMjU2IDM4NGMtMzUuNCAwLTY5LjQtNi40LTEwMC43LTE4LjFMOTguNyA0NjMuN0M5NCA0NzEuOCA4NyA0NzguNCA3OC42IDQ4Mi42TDIzLjIgNTEwLjNjLTUgMi41LTEwLjkgMi4yLTE1LjYtLjdTMCA1MDEuNSAwIDQ5NlY0NDAuNmMwLTguNCAyLjItMTYuNyA2LjUtMjQuMWw2MC0xMDMuN0M1My43IDMwMS42IDQxLjggMjg5LjMgMzEuMiAyNzZjLTExLjEtMTMuOC04LjgtMzMuOSA1LTQ1czMzLjktOC44IDQ1IDVjNS43IDcuMSAxMS44IDEzLjggMTguMiAyMC4xbDY5LjQtMTE5LjljLTUuNi0xMi4yLTguOC0yNS44LTguOC00MC4yYzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZ6bTIxIDI5Ny45YzMyLjYtMTIuOCA2Mi41LTMwLjggODguOS01Mi45bDQzLjcgNzUuNWM0LjIgNy4zIDYuNSAxNS42IDYuNSAyNC4xVjQ5NmMwIDUuNS0yLjkgMTAuNy03LjYgMTMuNnMtMTAuNiAzLjItMTUuNiAuN2wtNTUuNC0yNy43Yy04LjQtNC4yLTE1LjQtMTAuOC0yMC4xLTE4LjlMMzczIDM5My45ek0yNTYgMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptNTAuNy0xODYuOUwxNjIuNCAzODAuNmMtMTkuNCA3LjUtMzguNS0xMS42LTMxLTMxbDU1LjUtMTQ0LjNjMy4zLTguNSA5LjktMTUuMSAxOC40LTE4LjRsMTQ0LjMtNTUuNWMxOS40LTcuNSAzOC41IDExLjYgMzEgMzFMMzI1LjEgMzA2LjdjLTMuMiA4LjUtOS45IDE1LjEtMTguNCAxOC40ek0yODggMjU2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXByZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMlY2NHpNMzIgMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek0zNTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjY0ek0zMjAgMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXB1dGVyTW91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxOTJIMTc2VjBIMTYwQzcxLjYgMCAwIDcxLjYgMCAxNjB2MzJ6bTAgMzJWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwaDY0Yzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwVjIyNEgxOTIgMHptMzg0LTMyVjE2MEMzODQgNzEuNiAzMTIuNCAwIDIyNCAwSDIwOFYxOTJIMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgOTZWMzIwSDY0TDY0IDk2SDM4NHpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMTgxLjNsLTEwLjcgMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI3Ny4zbC0xMC43LTMySDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNDY0IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg2NGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEg1Mjh6bTE2IDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDU0NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptLTE2IDgwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg1NDRjLTguOCAwLTE2LTcuMi0xNi0xNnptMzIgMTYwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29va2llQml0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTcuNSAyNy42Yy0uOC01LjQtNC45LTkuOC0xMC4zLTEwLjZ2MGMtMjIuMS0zLjEtNDQuNiAuOS02NC40IDExLjRsLTc0IDM5LjVDODkuMSA3OC40IDczLjIgOTQuOSA2My40IDExNUwyNi43IDE5MC42Yy05LjggMjAuMS0xMyA0Mi45LTkuMSA2NC45bDE0LjUgODIuOGMzLjkgMjIuMSAxNC42IDQyLjMgMzAuNyA1Ny45bDYwLjMgNTguNGMxNi4xIDE1LjYgMzYuNiAyNS42IDU4LjcgMjguN2w4MyAxMS43YzIyLjEgMy4xIDQ0LjYtLjkgNjQuNC0xMS40bDc0LTM5LjVjMTkuNy0xMC41IDM1LjYtMjcgNDUuNC00Ny4ybDM2LjctNzUuNWM5LjgtMjAuMSAxMy00Mi45IDkuMS02NC45djBjLS45LTUuMy01LjMtOS4zLTEwLjYtMTAuMWMtNTEuNS04LjItOTIuOC00Ny4xLTEwNC41LTk3LjRjLTEuOC03LjYtOC0xMy40LTE1LjctMTQuNmMtNTQuNi04LjctOTcuNy01Mi0xMDYuMi0xMDYuOHpNMjA4IDE0NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTE0NCAzMzZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMjI0LTY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29va2llIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny4yIDE3Yy0yMi4xLTMuMS00NC42IC45LTY0LjQgMTEuNGwtNzQgMzkuNUM4OS4xIDc4LjQgNzMuMiA5NC45IDYzLjQgMTE1TDI2LjcgMTkwLjZjLTkuOCAyMC4xLTEzIDQyLjktOS4xIDY0LjlsMTQuNSA4Mi44YzMuOSAyMi4xIDE0LjYgNDIuMyAzMC43IDU3LjlsNjAuMyA1OC40YzE2LjEgMTUuNiAzNi42IDI1LjYgNTguNyAyOC43bDgzIDExLjdjMjIuMSAzLjEgNDQuNi0uOSA2NC40LTExLjRsNzQtMzkuNWMxOS43LTEwLjUgMzUuNi0yNyA0NS40LTQ3LjJsMzYuNy03NS41YzkuOC0yMC4xIDEzLTQyLjkgOS4xLTY0LjlsLTE0LjYtODIuOGMtMy45LTIyLjEtMTQuNi00Mi4zLTMwLjctNTcuOUwzODguOSA1Ny41Yy0xNi4xLTE1LjYtMzYuNi0yNS42LTU4LjctMjguN0wyNDcuMiAxN3pNMjA4IDE0NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTE0NCAzMzZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMjI0LTY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMEgzMzIuMWMxMi43IDAgMjQuOSA1LjEgMzMuOSAxNC4xbDY3LjkgNjcuOWM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOVYzMzZjMCAyNi41LTIxLjUgNDgtNDggNDhIMjA4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OGMwLTI2LjUgMjEuNS00OCA0OC00OHpNNDggMTI4aDgwdjY0SDY0VjQ0OEgyNTZWNDE2aDY0djQ4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvcHlyaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTk5LjQgMzEyLjZjMzEuMiAzMS4yIDgxLjkgMzEuMiAxMTMuMSAwYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWMtNTAgNTAtMTMxIDUwLTE4MSAwcy01MC0xMzEgMC0xODFzMTMxLTUwIDE4MSAwYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBjLTMxLjItMzEuMi04MS45LTMxLjItMTEzLjEgMHMtMzEuMiA4MS45IDAgMTEzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvdWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDE2MEM2NCA4OS4zIDEyMS4zIDMyIDE5MiAzMkg0NDhjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjh2MzMuNmMtMzYuNSA3LjQtNjQgMzkuNy02NCA3OC40djQ4SDEyOFYyNzJjMC0zOC43LTI3LjUtNzEtNjQtNzguNFYxNjB6TTU0NCAyNzJjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zYzUtMS44IDEwLjQtMi43IDE2LTIuN2MyNi41IDAgNDggMjEuNSA0OCA0OFY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJINTc2Yy0xNy43IDAtMzItMTQuMy0zMi0zMkg5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjcyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4YzUuNiAwIDExIDEgMTYgMi43YzE4LjYgNi42IDMyIDI0LjQgMzIgNDUuM3Y0OCAzMmgzMkg1MTJoMzJWMzIwIDI3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ293IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDIyNHYzMlY0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzI3LjhjOS45IDYuNiAyMC42IDEyIDMyIDE2LjFWMzY4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzUxLjFjNS4zIC42IDEwLjYgLjkgMTYgLjlzMTAuNy0uMyAxNi0uOVYzNjhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzNDMuOGMxMS40LTQgMjIuMS05LjQgMzItMTYuMVY0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2bDMyIDMydjQ5LjVjMCA5LjUgMi44IDE4LjcgOC4xIDI2LjZMNTMwIDQyN2M4LjggMTMuMSAyMy41IDIxIDM5LjMgMjFjMjIuNSAwIDQxLjktMTUuOSA0Ni4zLTM4bDIwLjMtMTAxLjZjMi42LTEzLS4zLTI2LjUtOC0zNy4zbC0zLjktNS41VjE4NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHYxNC40bC01Mi45LTc0LjFDNDk2IDg2LjUgNDUyLjQgNjQgNDA1LjkgNjRIMjcyIDI1NiAxOTIgMTQ0Qzc3LjcgNjQgMjQgMTE3LjcgMjQgMTg0djU0QzkuNCAyNDkuOCAwIDI2Ny44IDAgMjg4djE3LjZjMCA4IDYuNCAxNC40IDE0LjQgMTQuNEM0Ni4yIDMyMCA3MiAyOTQuMiA3MiAyNjIuNFYyNTYgMjI0IDE4NGMwLTI0LjMgMTIuMS00NS44IDMwLjUtNTguOUM5OC4zIDEzNS45IDk2IDE0Ny43IDk2IDE2MHY2NHpNNTYwIDMzNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwek0xNjYuNiAxNjYuNmMtNC4yLTQuMi02LjYtMTAtNi42LTE2YzAtMTIuNSAxMC4xLTIyLjYgMjIuNi0yMi42SDM2MS40YzEyLjUgMCAyMi42IDEwLjEgMjIuNiAyMi42YzAgNi0yLjQgMTEuOC02LjYgMTZsLTIzLjQgMjMuNEMzMzIuMiAyMTEuOCAzMDIuNyAyMjQgMjcyIDIyNHMtNjAuMi0xMi4yLTgxLjktMzMuOWwtMjMuNC0yMy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZ2MzJINTc2Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01NzYgMjI0SDBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYyMjR6TTExMiAzNTJoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0xMTIgMTZjMC04LjggNy4yLTE2IDE2LTE2SDM2OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JvcFNpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMzJjMC0xNy43LTE0LjMtMzItMzItMzJTNjQgMTQuMyA2NCAzMlY2NEgzMkMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJINjRWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM1MlYzODRIMTI4VjMyek0zODQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ0OGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NEwxNjAgNjR2NjRsMjI0IDAgMCAzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDEwOS4zbDU0LjYtNTQuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEw0MDIuNyA2NCAxNjAgNjR2NjRsMTc4LjcgMEwxMjggMzM4LjdWMzJjMC0xNy43LTE0LjMtMzItMzItMzJTNjQgMTQuMyA2NCAzMlY2NEgzMkMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJINjRWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM1MlYzODRIMTczLjNMMzg0IDE3My4zIDM4NCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDhoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDQ4bDAtMjc0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3NzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAwYy0yNi41IDAtNDggMjEuNS00OCA0OHY4MEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MzJjMCAyNi41IDIxLjUgNDggNDggNDhoODBWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1Nmg4MGMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjU2VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3Jvc3NoYWlycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0Mi40YzkzLjcgMTMuOSAxNjcuNyA4OCAxODEuNiAxODEuNkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDY5LjZjLTEzLjkgOTMuNy04OCAxNjcuNy0xODEuNiAxODEuNlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDY5LjZDMTMwLjMgNDU1LjcgNTYuMyAzODEuNyA0Mi40IDI4OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0Mi40QzU2LjMgMTMwLjMgMTMwLjMgNTYuMyAyMjQgNDIuNFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMTA3LjQgMjg4YzEyLjUgNTguMyA1OC40IDEwNC4xIDExNi42IDExNi42VjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjIwLjZjNTguMy0xMi41IDEwNC4xLTU4LjQgMTE2LjYtMTE2LjZIMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDIwLjZDMzkyLjEgMTY1LjcgMzQ2LjMgMTE5LjkgMjg4IDEwNy40VjEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMDcuNEMxNjUuNyAxMTkuOSAxMTkuOSAxNjUuNyAxMDcuNCAyMjRIMTI4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDEwNy40ek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTYgMGMtNDguNiAwLTg4IDM5LjQtODggODh2MjkuMkwxMi41IDM5MC42Yy0xNCAxMC44LTE2LjYgMzAuOS01LjkgNDQuOXMzMC45IDE2LjYgNDQuOSA1LjlMMTI2LjEgMzg0SDI1OS4ybDQ2LjYgMTEzLjFjNSAxMi4zIDE5LjEgMTguMSAzMS4zIDEzLjFzMTguMS0xOS4xIDEzLjEtMzEuM0wzMTEuMSAzODRIMzUyYzEuMSAwIDIuMSAwIDMuMiAwbDQ2LjYgMTEzLjJjNSAxMi4zIDE5LjEgMTguMSAzMS4zIDEzLjFzMTguMS0xOS4xIDEzLjEtMzEuM2wtNDItMTAyQzQ4NC45IDM1NC4xIDU0NCAyODAgNTQ0IDE5MlYxMjh2LThsODAuNS0yMC4xYzguNi0yLjEgMTMuOC0xMC44IDExLjYtMTkuNEM2MjkgNTIgNjAzLjQgMzIgNTc0IDMySDUyMy45QzUwNy43IDEyLjUgNDgzLjMgMCA0NTYgMHptMCA2NGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOSAxMDZjMTEuNC03IDE5LTE5LjcgMTktMzRjMC0yMi4xLTE3LjktNDAtNDAtNDBzLTQwIDE3LjktNDAgNDBjMCAxNC40IDcuNiAyNyAxOSAzNEwyMDkuNyAyMjAuNmMtOS4xIDE4LjItMzIuNyAyMy40LTQ4LjYgMTAuN0w3MiAxNjBjNS02LjcgOC0xNSA4LTI0YzAtMjIuMS0xNy45LTQwLTQwLTQwUzAgMTEzLjkgMCAxMzZzMTcuOSA0MCA0MCA0MGMuMiAwIC41IDAgLjcgMEw4Ni40IDQyNy40YzUuNSAzMC40IDMyIDUyLjYgNjMgNTIuNkg0MjYuNmMzMC45IDAgNTcuNC0yMi4xIDYzLTUyLjZMNTM1LjMgMTc2Yy4yIDAgLjUgMCAuNyAwYzIyLjEgMCA0MC0xNy45IDQwLTQwcy0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwYzAgOSAzIDE3LjMgOCAyNGwtODkuMSA3MS4zYy0xNS45IDEyLjctMzkuNSA3LjUtNDguNi0xMC43TDMwOSAxMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNydXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTcuNCA5LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDB6bS05NiAxNDRsLTM0LjggMzQuOGMtMTIuOSAxMi45LTIxLjkgMjkuMi0yNS44IDQ3LjFMMTE2LjggMzQyLjljLTEuMyA1LjktNC4zIDExLjQtOC42IDE1LjdMOS40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDk4LjgtOTguOGM0LjMtNC4zIDkuNy03LjMgMTUuNy04LjZsMTA3LjYtMjMuOWMxNy44LTQgMzQuMS0xMi45IDQ3LjEtMjUuOGwzNC43LTM0LjdjMCAwIC4xLS4xIC4xLS4xcy4xLS4xIC4xLS4xbDc0LjYtNzQuNi00NS4zLTQ1LjNMMzM2IDI0Mi43IDI2OS4zIDE3Nmw1Mi4xLTUyLjFMMjc2LjEgNzguNmwtNzQuNyA3NC43ek0yMjQgMjIxLjNMMjkwLjcgMjg4bC0xMi4yIDEyLjJjLTQuMyA0LjMtOS43IDcuMy0xNS43IDguNmwtNzYuNyAxNyAxNy03Ni43YzEuMy01LjkgNC4zLTExLjQgOC42LTE1LjdMMjI0IDIyMS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcnV6ZWlyb1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMjU2YzAtODguNCA3MS42LTE2MCAxNjAtMTYwYzQxIDAgNzguMyAxNS40IDEwNi43IDQwLjdjMTMuMiAxMS44IDMzLjQgMTAuNyA0NS4yLTIuNXMxMC43LTMzLjQtMi41LTQ1LjJjLTM5LjYtMzUuNS05Mi01Ny0xNDkuMy01N0MxMzIuMyAzMiAzMiAxMzIuMyAzMiAyNTZzMTAwLjMgMjI0IDIyNCAyMjRjNTcuNCAwIDEwOS43LTIxLjYgMTQ5LjMtNTdjMTMuMi0xMS44IDE0LjMtMzIgMi41LTQ1LjJzLTMyLTE0LjMtNDUuMi0yLjVDMzM0LjMgNDAwLjYgMjk3IDQxNiAyNTYgNDE2VjMyMHYtOC43YzAtMTIuOCAxMC40LTIzLjMgMjMuMy0yMy4zYzQuNiAwIDkuMSAxLjQgMTIuOSAzLjlsMTAuMSA2LjdjMTQuNyA5LjggMzQuNiA1LjggNDQuNC04LjlzNS44LTM0LjYtOC45LTQ0LjRsLTEwLjEtNi43Yy0xNC4zLTkuNi0zMS4yLTE0LjctNDguNC0xNC43Yy0xMi40IDAtMjQuMiAyLjYtMzQuOSA3LjNjLTUuNS00LjUtMTIuNi03LjMtMjAuMy03LjNjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjU1LjNWMzIwdjgyLjdDMTM1LjUgMzc4IDk2IDMyMS42IDk2IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3ViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzQuNSA1LjdjMTMuOS01IDI5LjEtNSA0My4xIDBsMTkyIDY4LjZDNDk1IDgzLjQgNTEyIDEwNy41IDUxMiAxMzQuNlYzNzcuNGMwIDI3LTE3IDUxLjItNDIuNSA2MC4zbC0xOTIgNjguNmMtMTMuOSA1LTI5LjEgNS00My4xIDBsLTE5Mi02OC42QzE3IDQyOC42IDAgNDA0LjUgMCAzNzcuNFYxMzQuNmMwLTI3IDE3LTUxLjIgNDIuNS02MC4zbDE5Mi02OC42ek0yNTYgNjZMODIuMyAxMjggMjU2IDE5MGwxNzMuNy02MkwyNTYgNjZ6bTMyIDM2OC42bDE2MC01Ny4xdi0xODhMMjg4IDI0Ni42djE4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3ViZXNTdGFja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA2NHY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04Mi43IDIwN2MtMTUuMyA4LjgtMjAuNSAyOC40LTExLjcgNDMuN2wzMiA1NS40YzguOCAxNS4zIDI4LjQgMjAuNSA0My43IDExLjdsNTUuNC0zMmMxNS4zLTguOCAyMC41LTI4LjQgMTEuNy00My43bC0zMi01NS40Yy04LjgtMTUuMy0yOC40LTIwLjUtNDMuNy0xMS43TDgyLjcgMjA3ek0yODggMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJIMjg4em02NCAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzNTJ6TTE2MCAzODR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTMyIDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDdWJlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTAuOCA0OC42bDc4LjQgMjkuN0wyODggMTA5LjUgMjA2LjggNzguM2w3OC40LTI5LjdjMS44LS43IDMuOC0uNyA1LjcgMHpNMTM2IDkyLjVWMjA0LjdjLTEuMyAuNC0yLjYgLjgtMy45IDEuM2wtOTYgMzYuNEMxNC40IDI1MC42IDAgMjcxLjUgMCAyOTQuN1Y0MTMuOWMwIDIyLjIgMTMuMSA0Mi4zIDMzLjUgNTEuM2w5NiA0Mi4yYzE0LjQgNi4zIDMwLjcgNi4zIDQ1LjEgMEwyODggNDU3LjVsMTEzLjUgNDkuOWMxNC40IDYuMyAzMC43IDYuMyA0NS4xIDBsOTYtNDIuMmMyMC4zLTguOSAzMy41LTI5LjEgMzMuNS01MS4zVjI5NC43YzAtMjMuMy0xNC40LTQ0LjEtMzYuMS01Mi40bC05Ni0zNi40Yy0xLjMtLjUtMi42LS45LTMuOS0xLjNWOTIuNWMwLTIzLjMtMTQuNC00NC4xLTM2LjEtNTIuNGwtOTYtMzYuNGMtMTIuOC00LjgtMjYuOS00LjgtMzkuNyAwbC05NiAzNi40QzE1MC40IDQ4LjQgMTM2IDY5LjMgMTM2IDkyLjV6TTM5MiAyMTAuNmwtODIuNCAzMS4yVjE1Mi42TDM5MiAxMjF2ODkuNnpNMTU0LjggMjUwLjlsNzguNCAyOS43TDE1MiAzMTEuNyA3MC44IDI4MC42bDc4LjQtMjkuN2MxLjgtLjcgMy44LS43IDUuNyAwem0xOC44IDIwNC40VjM1NC44TDI1NiAzMjMuMnY5NS45bC04Mi40IDM2LjJ6TTQyMS4yIDI1MC45YzEuOC0uNyAzLjgtLjcgNS43IDBsNzguNCAyOS43TDQyNCAzMTEuN2wtODEuMi0zMS4xIDc4LjQtMjkuN3pNNTIzLjIgNDIxLjJsLTc3LjYgMzQuMVYzNTQuOEw1MjggMzIzLjJ2OTAuN2MwIDMuMi0xLjkgNi00LjggNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJoOTZjMTIzLjcgMCAyMjQgMTAwLjMgMjI0IDIyNHMtMTAwLjMgMjI0LTIyNCAyMjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em0xNjAgMEg2NFY0MTZoOTZjODguNCAwIDE2MC03MS42IDE2MC0xNjBzLTcxLjYtMTYwLTE2MC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhdGFiYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA4MHY0OGMwIDQ0LjItMTAwLjMgODAtMjI0IDgwUzAgMTcyLjIgMCAxMjhWODBDMCAzNS44IDEwMC4zIDAgMjI0IDBTNDQ4IDM1LjggNDQ4IDgwek0zOTMuMiAyMTQuN2MyMC44LTcuNCAzOS45LTE2LjkgNTQuOC0yOC42VjI4OGMwIDQ0LjItMTAwLjMgODAtMjI0IDgwUzAgMzMyLjIgMCAyODhWMTg2LjFjMTQuOSAxMS44IDM0IDIxLjIgNTQuOCAyOC42Qzk5LjcgMjMwLjcgMTU5LjUgMjQwIDIyNCAyNDBzMTI0LjMtOS4zIDE2OS4yLTI1LjN6TTAgMzQ2LjFjMTQuOSAxMS44IDM0IDIxLjIgNTQuOCAyOC42Qzk5LjcgMzkwLjcgMTU5LjUgNDAwIDIyNCA0MDBzMTI0LjMtOS4zIDE2OS4yLTI1LjNjMjAuOC03LjQgMzkuOS0xNi45IDU0LjgtMjguNlY0MzJjMCA0NC4yLTEwMC4zIDgwLTIyNCA4MFMwIDQ3Ni4yIDAgNDMyVjM0Ni4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZWxldGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiAxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjA1LjNjLTE3IDAtMzMuMyA2LjctNDUuMyAxOC43TDkuNCAyMzMuNGMtNiA2LTkuNCAxNC4xLTkuNCAyMi42czMuNCAxNi42IDkuNCAyMi42TDE2MCA0MjkuM2MxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjh6TTI3MSAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlbW9jcmF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyYzAtOC45IDMuOC0yMC45IDYuMi0yNy4zQzcxLjIgMS44IDc0IDAgNzcgMGMxLjkgMCAzLjggLjcgNS4yIDIuMUwxMjggNDUuNyAxNzMuOCAyLjFDMTc1LjIgLjcgMTc3LjEgMCAxNzkgMGMzIDAgNS44IDEuOCA2LjggNC43YzIuNCA2LjUgNi4yIDE4LjQgNi4yIDI3LjNjMCAyNi41LTIxLjkgNDItMjkuNSA0Ni42bDc2LjIgNzIuNmM2IDUuNyAxMy45IDguOCAyMi4xIDguOEg0ODBsMzIgMGM0MC4zIDAgNzguMiAxOSAxMDIuNCA1MS4ybDE5LjIgMjUuNmMxMC42IDE0LjEgNy43IDM0LjItNi40IDQ0LjhzLTM0LjIgNy43LTQ0LjgtNi40bC0xOS4yLTI1LjZjLTUuMy03LTExLjgtMTIuOC0xOS4yLTE3VjMyMEgxOTJsLTQwLjQtOTQuM2MtMy45LTkuMi0xNS4zLTEyLjYtMjMuNi03bC00Mi4xIDI4Yy05LjEgNi4xLTE5LjcgOS4zLTMwLjcgOS4zaC0yQzIzLjkgMjU2IDAgMjMyLjEgMCAyMDIuN2MwLTEyLjEgNC4xLTIzLjggMTEuNy0zMy4zTDg3LjYgNzQuNkM3OC4xIDY3LjQgNjQgNTMuMiA2NCAzMnpNNDQ4IDM1Mmg5NnY2NCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNkgyODh2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTYgMzUyaDk2SDQ0OHpNMjYwLjkgMjEwLjljLS45LTEuOC0yLjgtMi45LTQuOC0yLjlzLTMuOSAxLjEtNC44IDIuOWwtMTAuNSAyMC41LTIzLjUgMy4zYy0yIC4zLTMuNyAxLjYtNC4zIDMuNXMtLjEgMy45IDEuMyA1LjNsMTcgMTYtNCAyMi42Yy0uMyAxLjkgLjUgMy45IDIuMSA1czMuOCAxLjMgNS42IC40bDIxLTEwLjcgMjEgMTAuN2MxLjggLjkgNCAuOCA1LjYtLjRzMi41LTMuMSAyLjEtNWwtNC0yMi42IDE3LTE2YzEuNS0xLjQgMi0zLjQgMS4zLTUuM3MtMi4zLTMuMi00LjMtMy41bC0yMy41LTMuMy0xMC41LTIwLjV6TTM2OC4xIDIwOGMtMiAwLTMuOSAxLjEtNC44IDIuOWwtMTAuNSAyMC41LTIzLjUgMy4zYy0yIC4zLTMuNyAxLjYtNC4zIDMuNXMtLjEgMy45IDEuMyA1LjNsMTcgMTYtNCAyMi42Yy0uMyAxLjkgLjUgMy45IDIuMSA1czMuOCAxLjMgNS42IC40bDIxLTEwLjcgMjEgMTAuN2MxLjggLjkgNCAuOCA1LjYtLjRzMi41LTMuMSAyLjEtNWwtNC0yMi42IDE3LTE2YzEuNS0xLjQgMi0zLjQgMS40LTUuM3MtMi4zLTMuMi00LjMtMy41bC0yMy41LTMuMy0xMC41LTIwLjVjLS45LTEuOC0yLjgtMi45LTQuOC0yLjl6bTExNi44IDIuOWMtLjktMS44LTIuOC0yLjktNC44LTIuOXMtMy45IDEuMS00LjggMi45bC0xMC41IDIwLjUtMjMuNSAzLjNjLTIgLjMtMy43IDEuNi00LjMgMy41cy0uMSAzLjkgMS4zIDUuM2wxNyAxNi00IDIyLjZjLS4zIDEuOSAuNSAzLjkgMi4xIDVzMy44IDEuMyA1LjYgLjRsMjEtMTAuNyAyMSAxMC43YzEuOCAuOSA0IC44IDUuNi0uNHMyLjUtMy4xIDIuMS01bC00LTIyLjYgMTctMTZjMS41LTEuNCAyLTMuNCAxLjQtNS4zcy0yLjMtMy4yLTQuMy0zLjVsLTIzLjUtMy4zLTEwLjUtMjAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVza3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFYzNTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjQwbC0xMC43IDMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzQ2LjdMMzM2IDQxNkg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTUxMiA2NFYyODhINjRWNjRINTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaGFybWFjaGFrcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM3LjggMjA1LjdsNDguNi00Mi41YzEzLjggMTkuMyAyMy40IDQxLjkgMjcuNCA2Ni4ybC02NC40IDQuM2MtMi40LTEwLjEtNi40LTE5LjUtMTEuNi0yOHptMTQwLjEgMTkuNWMtNS4zLTM4LjgtMjAuNi03NC41LTQzLjItMTA0LjNsLjgtLjdDNDQ5IDEwOC40IDQ0OS43IDg3LjYgNDM3IDc1cy0zMy40LTEyLTQ1LjIgMS41bC0uNyAuOGMtMjkuOC0yMi42LTY1LjUtMzcuOS0xMDQuMy00My4ybC4xLTEuMWMxLjItMTcuOS0xMy0zMy0zMC45LTMzcy0zMi4xIDE1LjItMzAuOSAzM2wuMSAxLjFjLTM4LjggNS4zLTc0LjUgMjAuNi0xMDQuMyA0My4ybC0uNy0uOEMxMDguNCA2MyA4Ny42IDYyLjMgNzUgNzVzLTEyIDMzLjQgMS41IDQ1LjJsLjggLjdjLTIyLjYgMjkuOC0zNy45IDY1LjUtNDMuMiAxMDQuM2wtMS4xLS4xYy0xNy45LTEuMi0zMyAxMy0zMyAzMC45czE1LjIgMzIuMSAzMyAzMC45bDEuMS0uMWM1LjMgMzguOCAyMC42IDc0LjUgNDMuMiAxMDQuM2wtLjggLjdDNjMgNDAzLjYgNjIuMyA0MjQuNCA3NSA0MzdzMzMuNCAxMiA0NS4yLTEuNWwuNy0uOGMyOS44IDIyLjYgNjUuNSAzNy45IDEwNC4zIDQzLjJsLS4xIDEuMWMtMS4yIDE3LjkgMTMgMzMgMzAuOSAzM3MzMi4xLTE1LjIgMzAuOS0zM2wtLjEtMS4xYzM4LjgtNS4zIDc0LjUtMjAuNiAxMDQuMy00My4ybC43IC44YzExLjggMTMuNSAzMi41IDE0LjIgNDUuMiAxLjVzMTItMzMuNC0xLjUtNDUuMmwtLjgtLjdjMjIuNi0yOS44IDM3LjktNjUuNSA0My4yLTEwNC4zbDEuMSAuMWMxNy45IDEuMiAzMy0xMyAzMy0zMC45cy0xNS4yLTMyLjEtMzMtMzAuOWwtMS4xIC4xek0xNjMuMiAxMjUuNmMxOS4zLTEzLjggNDEuOS0yMy40IDY2LjItMjcuNWw0LjMgNjQuNGMtMTAgMi40LTE5LjUgNi40LTI4IDExLjZsLTQyLjUtNDguNnptLTY1IDEwMy44YzQuMS0yNC40IDEzLjctNDYuOSAyNy41LTY2LjJsNDguNiA0Mi41Yy01LjMgOC41LTkuMiAxOC0xMS42IDI4bC02NC40LTQuM3ptMjcuNSAxMTkuNGMtMTMuOC0xOS4zLTIzLjQtNDEuOS0yNy41LTY2LjJsNjQuNC00LjNjMi40IDEwIDYuNCAxOS41IDExLjYgMjhsLTQ4LjYgNDIuNXptMTAzLjggNjVjLTI0LjQtNC4xLTQ2LjktMTMuNy02Ni4yLTI3LjRsNDIuNS00OC42YzguNSA1LjMgMTggOS4yIDI4IDExLjZsLTQuMyA2NC40em0xMTkuNC0yNy40Yy0xOS4zIDEzLjgtNDEuOSAyMy40LTY2LjIgMjcuNGwtNC4zLTY0LjRjMTAtMi40IDE5LjUtNi40IDI4LTExLjZsNDIuNSA0OC42em02NS0xMDMuOGMtNC4xIDI0LjQtMTMuNyA0Ni45LTI3LjQgNjYuMmwtNDguNi00Mi41YzUuMy04LjUgOS4yLTE4IDExLjYtMjhsNjQuNCA0LjN6bS02NS0xNTYuOWwtNDIuNSA0OC42Yy04LjUtNS4zLTE4LTkuMi0yOC0xMS42bDQuMy02NC40YzI0LjQgNC4xIDQ2LjkgMTMuNyA2Ni4yIDI3LjV6TTI1NiAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFncmFtTmV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMTYwYzAgMzUuMy0yOC43IDY0LTY0IDY0SDI4MHY2NGg0Ni4xYzIxLjQgMCAzMi4xIDI1LjkgMTcgNDFMMjczIDM5OWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTY5IDMyOWMtMTUuMS0xNS4xLTQuNC00MSAxNy00MUgyMzJWMjI0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjR6TTQ0OCA0MTZWMzUySDM2NS4zbC40LS40YzE4LjQtMTguNCAyMC40LTQzLjcgMTEtNjMuNmw3MS4zIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NFYzNTJjMC0zNS4zIDI4LjctNjQgNjQtNjRsNzEuMyAwYy05LjQgMTkuOS03LjQgNDUuMiAxMSA2My42bC40IC40SDY0djY0SDIxMC43bDUuNyA1LjdjMjEuOSAyMS45IDU3LjMgMjEuOSA3OS4yIDBsNS43LTUuN0g0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpYWdyYW1QcmVkZWNlc3NvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDE2bDAtNjRMNjQgMzUybDAgNjQgMzg0IDB6bTAgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjR6TTI4OCAxNjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgMjI0Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDE0NCAwIDE2IDAgMTQ0IDBjNDQuMiAwIDgwIDM1LjggODAgODBsMCAxNiAzOC4xIDBjMjEuNCAwIDMyLjEgMjUuOSAxNyA0MUw0MzMgMjM5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwzMjkgMTY5Yy0xNS4xLTE1LjEtNC40LTQxIDE3LTQxbDM4LjEgMCAwLTE2YzAtOC44LTcuMi0xNi0xNi0xNmwtODAgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFncmFtUHJvamVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDgwQzAgNTMuNSAyMS41IDMyIDQ4IDMyaDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4Vjk2SDM4NFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0MzJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE2MEgxOTJ2MTZjMCAxLjctLjEgMy40LS4zIDVMMjcyIDI4OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEgyNzJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjMzNmMwLTEuNyAuMS0zLjQgLjMtNUwxNDQgMjI0SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhZ3JhbVN1Y2Nlc3NvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgNDE2bDAtNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMjg4Yy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDY0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0ek02NCAxNjBsMC02NCAxNDQgMCAxNiAwIDAgNjRMNjQgMTYwem0yMjQgMGwwLTY0IDgwIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTYtMzguMSAwYy0yMS40IDAtMzIuMSAyNS45LTE3IDQxTDM5OSAyMzljOS40IDkuNCAyNC42IDkuNCAzMy45IDBMNTAzIDE2OWMxNS4xLTE1LjEgNC40LTQxLTE3LTQxTDQ0OCAxMjhsMC0xNmMwLTQ0LjItMzUuOC04MC04MC04MEwyMjQgMzJsLTE2IDBMNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NmwwIDY0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE2MCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFtb25kVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNy43IDExLjdjMTUuNi0xNS42IDQwLjktMTUuNiA1Ni42IDBsMjE2IDIxNmMxNS42IDE1LjYgMTUuNiA0MC45IDAgNTYuNmwtMjE2IDIxNmMtMTUuNiAxNS42LTQwLjkgMTUuNi01Ni42IDBsLTIxNi0yMTZjLTE1LjYtMTUuNi0xNS42LTQwLjkgMC01Ni42bDIxNi0yMTZ6bTg3LjYgMTM3Yy00LjYtNC42LTExLjUtNS45LTE3LjQtMy41cy05LjkgOC4zLTkuOSAxNC44djU2SDIyNGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyODBjMC04LjggNy4yLTE2IDE2LTE2aDY0djU2YzAgNi41IDMuOSAxMi4zIDkuOSAxNC44czEyLjkgMS4xIDE3LjQtMy41bDgwLTgwYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC04MC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhbW9uZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODQuMyAxMS43Yy0xNS42LTE1LjYtNDAuOS0xNS42LTU2LjYgMGwtMjE2IDIxNmMtMTUuNiAxNS42LTE1LjYgNDAuOSAwIDU2LjZsMjE2IDIxNmMxNS42IDE1LjYgNDAuOSAxNS42IDU2LjYgMGwyMTYtMjE2YzE1LjYtMTUuNiAxNS42LTQwLjkgMC01Ni42bC0yMTYtMjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRDIwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4LjcgMTI1LjhsNTMuMiAzMS45YzcuOCA0LjcgMTcuOCAyIDIyLjItNS45TDIwMS42IDEyLjFjMy01LjQtLjktMTIuMS03LjEtMTIuMWMtMS42IDAtMy4yIC41LTQuNiAxLjRMNDcuOSA5OC44Yy05LjYgNi42LTkuMiAyMC45IC44IDI2Ljl6TTE2IDE3MS43VjI5NS4zYzAgOCAxMC40IDExIDE0LjcgNC40bDYwLTkyYzUtNy42IDIuNi0xNy44LTUuMi0yMi41TDQwLjIgMTU4QzI5LjYgMTUxLjYgMTYgMTU5LjMgMTYgMTcxLjd6TTMxMC40IDEyLjFsNzcuNiAxMzkuNmM0LjQgNy45IDE0LjUgMTAuNiAyMi4yIDUuOWw1My4yLTMxLjljMTAtNiAxMC40LTIwLjMgLjgtMjYuOUwzMjIuMSAxLjRjLTEuNC0uOS0zLTEuNC00LjYtMS40Yy02LjIgMC0xMC4xIDYuNy03LjEgMTIuMXpNNDk2IDE3MS43YzAtMTIuNC0xMy42LTIwLjEtMjQuMi0xMy43bC00NS4zIDI3LjJjLTcuOCA0LjctMTAuMSAxNC45LTUuMiAyMi41bDYwIDkyYzQuMyA2LjcgMTQuNyAzLjYgMTQuNy00LjRWMTcxLjd6bS00OS4zIDI0NkwyODYuMSA0MzYuNmMtOC4xIC45LTE0LjEgNy44LTE0LjEgMTUuOXY1Mi44YzAgMy43IDMgNi44IDYuOCA2LjhjLjggMCAxLjYtLjEgMi40LS40bDE3Mi43LTY0YzYuMS0yLjIgMTAuMS04IDEwLjEtMTQuNWMwLTkuMy04LjEtMTYuNS0xNy4zLTE1LjR6TTIzMy4yIDUxMmMzLjcgMCA2LjgtMyA2LjgtNi44VjQ1Mi42YzAtOC4xLTYuMS0xNC45LTE0LjEtMTUuOWwtMTYwLjYtMTljLTkuMi0xLjEtMTcuMyA2LjEtMTcuMyAxNS40YzAgNi41IDQgMTIuMyAxMC4xIDE0LjVsMTcyLjcgNjRjLjggLjMgMS42IC40IDIuNCAuNHpNNDEuNyAzODIuOWwxNzAuOSAyMC4yYzcuOCAuOSAxMy40LTcuNSA5LjUtMTQuM2wtODUuNy0xNTBjLTUuOS0xMC40LTIwLjctMTAuOC0yNy4zLS44TDMwLjIgMzU4LjJjLTYuNSA5LjktLjMgMjMuMyAxMS41IDI0Ljd6bTQzOS42LTI0LjhMNDAyLjkgMjM4LjFjLTYuNS0xMC0yMS40LTkuNi0yNy4zIC44TDI5MC4yIDM4OC41Yy0zLjkgNi44IDEuNiAxNS4yIDkuNSAxNC4zbDE3MC4xLTIwYzExLjgtMS40IDE4LTE0LjcgMTEuNS0yNC42em0tMjE2LjkgMTFsNzguNC0xMzcuMmM2LjEtMTAuNy0xLjYtMjMuOS0xMy45LTIzLjlIMTgzLjFjLTEyLjMgMC0yMCAxMy4zLTEzLjkgMjMuOWw3OC40IDEzNy4yYzMuNyA2LjQgMTMgNi40IDE2LjcgMHpNMTc0LjQgMTc2SDMzNy42YzEyLjIgMCAxOS45LTEzLjEgMTQtMjMuOGwtODAtMTQ0Yy0yLjgtNS4xLTguMi04LjItMTQtOC4yaC0zLjJjLTUuOCAwLTExLjIgMy4yLTE0IDguMmwtODAgMTQ0Yy01LjkgMTAuNyAxLjggMjMuOCAxNCAyMy44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRDYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAxIDEwLjNjMTQuMy03LjggMzEuNi03LjggNDYgMEw0MjIuMyAxMDZjNS4xIDIuOCA4LjMgOC4yIDguMyAxNHMtMy4yIDExLjItOC4zIDE0TDIzMS43IDIzOGMtNC44IDIuNi0xMC41IDIuNi0xNS4zIDBMMjUuNyAxMzRjLTUuMS0yLjgtOC4zLTguMi04LjMtMTRzMy4yLTExLjIgOC4zLTE0TDIwMSAxMC4zek0yMy43IDE3MGwxNzYgOTZjNS4xIDIuOCA4LjMgOC4yIDguMyAxNFY0OTZjMCA1LjYtMyAxMC45LTcuOCAxMy44cy0xMC45IDMtMTUuOCAuM0wyNSA0MjMuMUM5LjYgNDE0LjcgMCAzOTguNiAwIDM4MVYxODRjMC01LjYgMy0xMC45IDcuOC0xMy44czEwLjktMyAxNS44LS4zem00MDAuNyAwYzUtMi43IDExLTIuNiAxNS44IC4zczcuOCA4LjEgNy44IDEzLjhWMzgxYzAgMTcuNi05LjYgMzMuNy0yNSA0Mi4xTDI2My43IDUxMGMtNSAyLjctMTEgMi42LTE1LjgtLjNzLTcuOC04LjEtNy44LTEzLjhWMjgwYzAtNS45IDMuMi0xMS4yIDguMy0xNGwxNzYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VGaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNjQgOTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek05NiAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMjI0IDIyNGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0LTY0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTMyIDE2MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VGb3VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTE2MCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0xMjggMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMzUyIDE2MGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zMjAgMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZU9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIyNCAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlU2l4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTE2MCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0xMjggMjg4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMzIgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzIwIDE5MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTMyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMyMCAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlVGhyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCA5NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0IDEyOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xMjggNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlVHdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTM1MiAzNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTI4IDE5MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc0LjkgMzQuM2MtMjguMS0yOC4xLTczLjctMjguMS0xMDEuOCAwTDM0LjMgMTczLjFjLTI4LjEgMjguMS0yOC4xIDczLjcgMCAxMDEuOEwxNzMuMSA0MTMuN2MyOC4xIDI4LjEgNzMuNyAyOC4xIDEwMS44IDBMNDEzLjcgMjc0LjljMjguMS0yOC4xIDI4LjEtNzMuNyAwLTEwMS44TDI3NC45IDM0LjN6TTIwMCAyMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpNOTYgMjAwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMjI0IDM3NmEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6TTM1MiAyMDBhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek0yMjQgMTIwYTI0IDI0IDAgMSAxIDAtNDggMjQgMjQgMCAxIDEgMCA0OHptOTYgMzI4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDU3NmMzNS4zIDAgNjQtMjguNyA2NC02NFYyNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINDYxLjdjMTEuNiAzNiAzLjEgNzctMjUuNCAxMDUuNUwzMjAgNDEzLjhWNDQ4ek00ODAgMzI4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzYuNCA2MS40TDIyNyA3NS41Yy0yMS4zIDMyLTU5LjQgNDguNS05Ny4zIDQyLjFsLTU5LjYtOS45QzMzLjQgMTAxLjYgMCAxMjkuOSAuMSAxNjcuMWMwIDE1LjkgNi40IDMxLjIgMTcuNiA0Mi41bDI5LjIgMjkuMmMxMSAxMSAxNy4yIDI1LjkgMTcuMiA0MS41YzAgMTUuOC02LjQgMzAuOS0xNy43IDQyTDMzLjMgMzM1LjFDMjIuMiAzNDUuOSAxNiAzNjAuNyAxNiAzNzYuMmMwIDM2LjggMzQuMSA2NC4yIDcwLjEgNTYuMmw2Mi4zLTEzLjhjNy43LTEuNyAxNS43LTIuNiAyMy42LTIuNmgxMGMyNy4yIDAgNTMuNyA5LjMgNzUgMjYuM0wyODcuOCA0NjdjMTAuNSA4LjQgMjMuNiAxMyAzNyAxM2MzMi43IDAgNTkuMy0yNi41IDU5LjMtNTkuM2wwLTI1LjJjMC0zNC45IDIxLjQtNjYuMiA1My45LTc4LjhsMzYuOS0xNC4zYzIyLjQtOC43IDM3LjItMzAuMyAzNy4yLTU0LjNjMC0yOC4xLTIwLjEtNTIuMy00Ny44LTU3LjNsLTI4LTUuMWMtMzYuNS02LjctNjUuNC0zNC41LTczLjYtNzAuN2wtNy4xLTMxLjVDMzQ4LjkgNTMuNCAzMjIuMSAzMiAyOTEuMyAzMmMtMjIgMC00Mi42IDExLTU0LjkgMjkuNHpNMTYwIDE5MmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAxNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwem0wIDgwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzcGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFYzNTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjQwbC0xMC43IDMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzQ2LjdMMzM2IDQxNkg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTUxMiA2NFYzNTJINjRWNjRINTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaXZpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDk2YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTAgMzIwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQwMCAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEbmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJjMCA1OS44LTMwLjMgMTA3LjUtNjkuNCAxNDYuNmMtMjggMjgtNjIuNSA1My41LTk3LjMgNzcuNGwtMi41IDEuN2MtMTEuOSA4LjEtMjMuOCAxNi4xLTM1LjUgMjMuOWwwIDAgMCAwIDAgMC0xLjYgMWMtNiA0LTExLjkgNy45LTE3LjggMTEuOWMtMjAuOSAxNC00MC44IDI3LjctNTkuMyA0MS41SDI4My4zYy05LjgtNy40LTIwLjEtMTQuNy0zMC43LTIyLjFsNy00LjcgMy0yYzE1LjEtMTAuMSAzMC45LTIwLjYgNDYuNy0zMS42YzI1IDE4LjEgNDguOSAzNy4zIDY5LjQgNTcuN0M0MTcuNyAzNzIuNSA0NDggNDIwLjIgNDQ4IDQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMkg2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTU5LjggMzAuMy0xMDcuNSA2OS40LTE0Ni42YzI4LTI4IDYyLjUtNTMuNSA5Ny4zLTc3LjRjLTM0LjgtMjMuOS02OS4zLTQ5LjMtOTcuMy03Ny40QzMwLjMgMTM5LjUgMCA5MS44IDAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwUzY0IDE0LjMgNjQgMzJIMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zMzguNiAzODRIMTA5LjRjLTEwLjEgMTAuNi0xOC42IDIxLjMtMjUuNSAzMkgzNjQuMWMtNi44LTEwLjctMTUuMy0yMS40LTI1LjUtMzJ6TTEwOS40IDEyOEgzMzguNmMxMC4xLTEwLjcgMTguNi0yMS4zIDI1LjUtMzJIODMuOWM2LjggMTAuNyAxNS4zIDIxLjMgMjUuNSAzMnptNTUuNCA0OGMxOC40IDEzLjggMzguNCAyNy41IDU5LjMgNDEuNWMyMC45LTE0IDQwLjgtMjcuNyA1OS4zLTQxLjVIMTY0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDkuNiAxNTguNUwzMzIuNyAxOS44QzMzNC42IDguNCAzNDQuNSAwIDM1Ni4xIDBjNy41IDAgMTQuNSAzLjUgMTkgOS41TDM5MiAzMmg1Mi4xYzEyLjcgMCAyNC45IDUuMSAzMy45IDE0LjFMNDk2IDY0aDU2YzEzLjMgMCAyNCAxMC43IDI0IDI0djI0YzAgNDQuMi0zNS44IDgwLTgwIDgwSDQ2NCA0NDggNDI2LjdsLTUuMSAzMC41LTExMi02NHpNNDE2IDI1Ni4xTDQxNiA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNjQuOGMtMjQgMTIuMy01MS4yIDE5LjItODAgMTkuMnMtNTYtNi45LTgwLTE5LjJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNDkuOGMtMjguOC0xMC45LTUxLjQtMzUuMy01OS4yLTY2LjVMMSAxNjcuOGMtNC4zLTE3LjEgNi4xLTM0LjUgMjMuMy0zOC44czM0LjUgNi4xIDM4LjggMjMuM2wzLjkgMTUuNUM3MC41IDE4MiA4My4zIDE5MiA5OCAxOTJoMzAgMTZIMzAzLjhMNDE2IDI1Ni4xek00NjQgODBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9sbGFyU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2Ny43YzEuNiAuMiAzLjEgLjQgNC43IC43Yy40IC4xIC43IC4xIDEuMSAuMmw0OCA4LjhjMTcuNCAzLjIgMjguOSAxOS45IDI1LjcgMzcuMnMtMTkuOSAyOC45LTM3LjIgMjUuN2wtNDcuNS04LjdjLTMxLjMtNC42LTU4LjktMS41LTc4LjMgNi4ycy0yNy4yIDE4LjMtMjkgMjguMWMtMiAxMC43LS41IDE2LjcgMS4yIDIwLjRjMS44IDMuOSA1LjUgOC4zIDEyLjggMTMuMmMxNi4zIDEwLjcgNDEuMyAxNy43IDczLjcgMjYuM2wyLjkgLjhjMjguNiA3LjYgNjMuNiAxNi44IDg5LjYgMzMuOGMxNC4yIDkuMyAyNy42IDIxLjkgMzUuOSAzOS41YzguNSAxNy45IDEwLjMgMzcuOSA2LjQgNTkuMmMtNi45IDM4LTMzLjEgNjMuNC02NS42IDc2LjdjLTEzLjcgNS42LTI4LjYgOS4yLTQ0LjQgMTFWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0NS4xYy0uNC0uMS0uOS0uMS0xLjMtLjJsLS4yIDAgMCAwYy0yNC40LTMuOC02NC41LTE0LjMtOTEuNS0yNi4zYy0xNi4xLTcuMi0yMy40LTI2LjEtMTYuMi00Mi4yczI2LjEtMjMuNCA0Mi4yLTE2LjJjMjAuOSA5LjMgNTUuMyAxOC41IDc1LjIgMjEuNmMzMS45IDQuNyA1OC4yIDIgNzYtNS4zYzE2LjktNi45IDI0LjYtMTYuOSAyNi44LTI4LjljMS45LTEwLjYgLjQtMTYuNy0xLjMtMjAuNGMtMS45LTQtNS42LTguNC0xMy0xMy4zYy0xNi40LTEwLjctNDEuNS0xNy43LTc0LTI2LjNsLTIuOC0uNyAwIDBDMTE5LjQgMjc5LjMgODQuNCAyNzAgNTguNCAyNTNjLTE0LjItOS4zLTI3LjUtMjItMzUuOC0zOS42Yy04LjQtMTcuOS0xMC4xLTM3LjktNi4xLTU5LjJDMjMuNyAxMTYgNTIuMyA5MS4yIDg0LjggNzguM2MxMy4zLTUuMyAyNy45LTguOSA0My4yLTExVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2xseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMGg3Mi45YzI3LjUgMCA1MiAxNy42IDYwLjcgNDMuOEwyNTcuNyAzMjBjMzAuMSAuNSA1Ni44IDE0LjkgNzQgMzdsMjAyLjEtNjcuNGMxNi44LTUuNiAzNC45IDMuNSA0MC41IDIwLjJzLTMuNSAzNC45LTIwLjIgNDAuNUwzNTIgNDE3LjdjLS45IDUyLjItNDMuNSA5NC4zLTk2IDk0LjNjLTUzIDAtOTYtNDMtOTYtOTZjMC0zMC44IDE0LjUtNTguMiAzNy03NS44TDEwNC45IDY0SDMyQzE0LjMgNjQgMCA0OS43IDAgMzJ6TTI0NC44IDEzNC41Yy01LjUtMTYuOCAzLjctMzQuOSAyMC41LTQwLjNMMzExIDc5LjRsMTkuOCA2MC45IDYwLjktMTkuOEwzNzEuOCA1OS42bDQ1LjctMTQuOGMxNi44LTUuNSAzNC45IDMuNyA0MC4zIDIwLjVsNDkuNCAxNTIuMmM1LjUgMTYuOC0zLjcgMzQuOS0yMC41IDQwLjNMMzM0LjUgMzA3LjJjLTE2LjggNS41LTM0LjktMy43LTQwLjMtMjAuNUwyNDQuOCAxMzQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9uZ1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMnY0OS4xYy0xOC44LTEwLjktNDAuNy0xNy4xLTY0LTE3LjFjLTcwLjcgMC0xMjggNTcuMy0xMjggMTI4czU3LjMgMTI4IDEyOCAxMjhjMjQuNSAwIDQ3LjQtNi45IDY2LjgtMTguOGM1IDExLjEgMTYuMiAxOC44IDI5LjIgMTguOGMxNy43IDAgMzItMTQuMyAzMi0zMlYyODggMTI4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0xMjggMjg4YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMzIgNDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9vckNsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGMwLTM1LjMgMjguNy02NCA2NC02NEg0MTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQzMiAxNDQgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTZWNjR6TTM4NCAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb29yT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzJjMC05LjktNC41LTE5LjItMTIuMy0yNS4yUzI4OS44LTEuNCAyODAuMiAxbC0xNzkuOSA0NUM3OSA1MS4zIDY0IDcwLjUgNjQgOTIuNVY0NDhIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTYgMjg4aDMyVjQ4MCAzMnpNMjU2IDI1NmMwIDE3LjctMTAuNyAzMi0yNCAzMnMtMjQtMTQuMy0yNC0zMnMxMC43LTMyIDI0LTMyczI0IDE0LjMgMjQgMzJ6bTk2LTEyOGg5NlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINTEyVjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgzNTJ2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwLjggOTYuNWMxNCAxNyAzMSAzMC45IDQ5LjUgNDIuMmMyNS45IDE1LjggNTMuNyAyNS45IDc3LjcgMzEuNlYxMzguOEMyNjUuOCAxMDguNSAyNTAgNzEuNSAyNDguNiAyOGMtLjQtMTEuMy03LjUtMjEuNS0xOC40LTI0LjRjLTcuNi0yLTE1LjgtLjItMjEgNS44Yy0xMy4zIDE1LjQtMzIuNyA0NC42LTQ4LjQgODcuMnpNMzIwIDE0NHYzMC42bDAgMHYxLjNsMCAwIDAgMzIuMWMtNjAuOC01LjEtMTg1LTQzLjgtMjE5LjMtMTU3LjJDOTcuNCA0MCA4Ny45IDMyIDc2LjYgMzJjLTcuOSAwLTE1LjMgMy45LTE4LjggMTFDNDYuOCA2NS45IDMyIDExMi4xIDMyIDE3NmMwIDExNi45IDgwLjEgMTgwLjUgMTE4LjQgMjAyLjhMMTEuOCA0MTYuNkM2LjcgNDE4IDIuNiA0MjEuOCAuOSA0MjYuOHMtLjggMTAuNiAyLjMgMTQuOEMyMS43IDQ2Ni4yIDc3LjMgNTEyIDE2MCA1MTJjMy42IDAgNy4yLTEuMiAxMC0zLjVMMjQ1LjYgNDQ4SDMyMGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFYxMjhsMjkuOS00NC45YzEuMy0yIDIuMS00LjQgMi4xLTYuOGMwLTYuOC01LjUtMTIuMy0xMi4zLTEyLjNINDAwYy00NC4yIDAtODAgMzUuOC04MCA4MHptODAtMTZhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3duTGVmdEFuZFVwUmlnaHRUb0NlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzkgN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwzMiAzMmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtODcgODcgMzkgMzljNi45IDYuOSA4LjkgMTcuMiA1LjIgMjYuMnMtMTIuNSAxNC44LTIyLjIgMTQuOEgyOTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjcyYzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMmwzOSAzOUw0MzkgN3pNNzIgMjcySDIxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNFY0NDBjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtMzktMzlMNzMgNTA1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEw3IDQ3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsODctODdMNTUgMzEzYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yczEyLjUtMTQuOCAyMi4yLTE0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvd25Mb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMzM0LjVjLTMuOCA4LjgtMiAxOSA0LjYgMjZsMTM2IDE0NGM0LjUgNC44IDEwLjggNy41IDE3LjQgNy41czEyLjktMi43IDE3LjQtNy41bDEzNi0xNDRjNi42LTcgOC40LTE3LjIgNC42LTI2cy0xMi41LTE0LjUtMjItMTQuNWwtNzIgMCAwLTI4OGMwLTE3LjctMTQuMy0zMi0zMi0zMkwxMjggMEMxMTAuMyAwIDk2IDE0LjMgOTYgMzJsMCAyODgtNzIgMGMtOS42IDAtMTguMiA1LjctMjIgMTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI3NC43bC03My40LTczLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDEyOCAxMjhjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyODggMjc0LjdWMzJ6TTY0IDM1MmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjQxNmMwLTM1LjMtMjguNy02NC02NC02NEgzNDYuNWwtNDUuMyA0NS4zYy0yNSAyNS02NS41IDI1LTkwLjUgMEwxNjUuNSAzNTJINjR6bTM2OCA1NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyYWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMTI0LjVsLTUxLjktMTNjLTYuNS0xLjYtMTEuMy03LjEtMTItMTMuOHMyLjgtMTMuMSA4LjctMTYuMWw0MC44LTIwLjRMMjk0LjQgMjguOGMtNS41LTQuMS03LjgtMTEuMy01LjYtMTcuOVMyOTcuMSAwIDMwNCAwSDQxNmgzMiAxNmMzMC4yIDAgNTguNyAxNC4yIDc2LjggMzguNGw1Ny42IDc2LjhjNi4yIDguMyA5LjYgMTguNCA5LjYgMjguOGMwIDI2LjUtMjEuNSA0OC00OCA0OEg1MzguNWMtMTcgMC0zMy4zLTYuNy00NS4zLTE4LjdMNDgwIDE2MEg0NDh2MjEuNWMwIDI0LjggMTIuOCA0Ny45IDMzLjggNjEuMWwxMDYuNiA2Ni42YzMyLjEgMjAuMSA1MS42IDU1LjIgNTEuNiA5My4xQzY0MCA0NjIuOSA1OTAuOSA1MTIgNTMwLjIgNTEySDQ5NiA0MzIgMzIuM2MtMy4zIDAtNi42LS40LTkuNi0xLjRDMTMuNSA1MDcuOCA2IDUwMSAyLjQgNDkyLjFDMSA0ODguNyAuMiA0ODUuMiAwIDQ4MS40Yy0uMi0zLjcgLjMtNy4zIDEuMy0xMC43YzIuOC05LjIgOS42LTE2LjcgMTguNi0yMC40YzMtMS4yIDYuMi0yIDkuNS0yLjJMNDMzLjMgNDEyYzguMy0uNyAxNC43LTcuNyAxNC43LTE2LjFjMC00LjMtMS43LTguNC00LjctMTEuNGwtNDQuNC00NC40Yy0zMC0zMC00Ni45LTcwLjctNDYuOS0xMTMuMVYxODEuNXYtNTd6TTUxMiA3Mi4zYzAtLjEgMC0uMiAwLS4zczAtLjIgMC0uM3YuNnptLTEuMyA3LjRMNDY0LjMgNjguMWMtLjIgMS4zLS4zIDIuNi0uMyAzLjljMCAxMy4zIDEwLjcgMjQgMjQgMjRjMTAuNiAwIDE5LjUtNi44IDIyLjctMTYuM3pNMTMwLjkgMTE2LjVjMTYuMy0xNC41IDQwLjQtMTYuMiA1OC41LTQuMWwxMzAuNiA4N1YyMjdjMCAzMi44IDguNCA2NC44IDI0IDkzSDExMmMtNi43IDAtMTIuNy00LjItMTUtMTAuNHMtLjUtMTMuMyA0LjYtMTcuN0wxNzEgMjMyLjMgMTguNCAyNTUuOGMtNyAxLjEtMTMuOS0yLjYtMTYuOS05cy0xLjUtMTQuMSAzLjgtMTguOEwxMzAuOSAxMTYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJhd1BvbHlnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMTUxLjRWMzYwLjZjOS43IDUuNiAxNy44IDEzLjcgMjMuNCAyMy40SDMyOC42YzAtLjEgLjEtLjIgLjEtLjNsLTQuNS03LjktMzItNTYgMCAwYy0xLjQgLjEtMi44IC4xLTQuMiAuMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NGMxLjQgMCAyLjggMCA0LjIgLjFsMCAwIDMyLTU2IDQuNS03LjktLjEtLjNIMTE5LjRjLTUuNiA5LjctMTMuNyAxNy44LTIzLjQgMjMuNHpNMzg0LjMgMzUyYzM1LjIgLjIgNjMuNyAyOC43IDYzLjcgNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTIzLjcgMC00NC40LTEyLjktNTUuNC0zMkgxMTkuNGMtMTEuMSAxOS4xLTMxLjcgMzItNTUuNCAzMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjE1MS40QzEyLjkgMTQwLjQgMCAxMTkuNyAwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMyYzIzLjcgMCA0NC40IDEyLjkgNTUuNCAzMkgzMjguNmMxMS4xLTE5LjEgMzEuNy0zMiA1NS40LTMyYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMzUuMy0yOC41IDYzLjgtNjMuNyA2NGwtNC41IDcuOS0zMiA1Ni0yLjMgNGM0LjIgOC41IDYuNSAxOCA2LjUgMjguMXMtMi4zIDE5LjYtNi41IDI4LjFsMi4zIDQgMzIgNTYgNC41IDcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJvcGxldFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA1MTJjNTMuMiAwIDEwMS40LTIxLjYgMTM2LjEtNTYuNmwtMjk4LjMtMjM1QzE0MCAyNTcuMSAxMjggMjkyLjMgMTI4IDMyMGMwIDEwNiA4NiAxOTIgMTkyIDE5MnpNNTA1LjIgMzcwLjdjNC40LTE2LjEgNi44LTMzLjEgNi44LTUwLjdjMC05MS4yLTEzMC4yLTI2Mi4zLTE2Ni42LTMwOC4zQzMzOS40IDQuMiAzMzAuNSAwIDMyMC45IDBoLTEuOGMtOS42IDAtMTguNSA0LjItMjQuNSAxMS43QzI3Ny44IDMzIDI0MC43IDgxLjMgMjA1LjggMTM2TDM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTA1LjIgMzcwLjd6TTIyNCAzMzZjMCA0NC4yIDM1LjggODAgODAgODBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTYxLjkgMC0xMTItNTAuMS0xMTItMTEyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDUxMkM4NiA1MTIgMCA0MjYgMCAzMjBDMCAyMjguOCAxMzAuMiA1Ny43IDE2Ni42IDExLjdDMTcyLjYgNC4yIDE4MS41IDAgMTkxLjEgMGgxLjhjOS42IDAgMTguNSA0LjIgMjQuNSAxMS43QzI1My44IDU3LjcgMzg0IDIyOC44IDM4NCAzMjBjMCAxMDYtODYgMTkyLTE5MiAxOTJ6TTk2IDMzNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtNDQuMiAwLTgwLTM1LjgtODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW1TdGVlbHBhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMTU5LjEgMCAyODggNDggMjg4IDEyOFYzNTJjMCA4MC0xMjguOSAxMjgtMjg4IDEyOFMwIDQzMiAwIDM1MlYxNjBDMCA4MCAxMjguOSAzMiAyODggMzJ6TTUyOCAxNjBjMC05LjktOC0yOS45LTU1LTQ5LjhjLTE4LjYtNy45LTQwLjktMTQuNC02Ni0xOS40bC0yNy44IDQzLjZjLTcuMyAxMS41LTExLjIgMjQuOC0xMS4yIDM4LjRjMCAxNy41IDYuNCAzNC40IDE4LjEgNDcuNWw5LjggMTFjMjkuOC01LjIgNTUuOS0xMi41IDc3LjItMjEuNWM0Ny4xLTE5LjkgNTUtMzkuOSA1NS00OS44ek0zNDkuMiAyMzcuM2MtOC0yNi4yLTMyLjQtNDUuMy02MS4yLTQ1LjNzLTUzLjMgMTkuMS02MS4yIDQ1LjNjMTkuNCAxLjcgMzkuOSAyLjcgNjEuMiAyLjdzNDEuOC0uOSA2MS4yLTIuN3pNMTY5IDkwLjhjLTI1LjIgNS00Ny40IDExLjYtNjYgMTkuNEM1NiAxMzAuMSA0OCAxNTAuMSA0OCAxNjBzOCAyOS45IDU1IDQ5LjhjMjEuMyA5IDQ3LjQgMTYuMyA3Ny4yIDIxLjVsOS44LTExYzExLjYtMTMuMSAxOC4xLTMwIDE4LjEtNDcuNWMwLTEzLjYtMy45LTI2LjktMTEuMi0zOC40TDE2OSA5MC44em01Ni4zLThDMjI0LjUgODcgMjI0IDkxLjUgMjI0IDk2YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRjMC00LjUtLjUtOS0xLjQtMTMuMkMzMzAuOCA4MSAzMDkuOCA4MCAyODggODBzLTQyLjggMS02Mi42IDIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDEuMiA3Ni4xYzExLjEtNy4zIDE0LjItMjIuMSA2LjktMzMuMnMtMjIuMS0xNC4yLTMzLjItNi45TDM3MC4yIDEwNC41QzMzNS44IDk4LjcgMjk3IDk2IDI1NiA5NkMxMTQuNiA5NiAwIDEyOCAwIDIwOFYzNjhjMCAzMS4zIDI3LjQgNTguOCA3MiA3OC43VjM0NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0VjQ2My40YzMzIDguOSA3MS4xIDE0LjUgMTEyIDE2LjFWMzc2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRWNDc5LjVjNDAuOS0xLjYgNzktNy4yIDExMi0xNi4xVjM0NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0VjQ0Ni43YzQ0LjYtMTkuOSA3Mi00Ny40IDcyLTc4LjdWMjA4YzAtNDEuMS0zMC4yLTY5LjUtNzguOC04Ny40bDY3LjktNDQuNXpNMzA3LjQgMTQ1LjZsLTY0LjYgNDIuM2MtMTEuMSA3LjMtMTQuMiAyMi4xLTYuOSAzMy4yczIyLjEgMTQuMiAzMy4yIDYuOWwxMTEuMS03Mi44YzE0LjcgMy4yIDI3LjkgNyAzOS40IDExLjVDNDU4LjQgMTgxLjggNDY0IDE5Ny40IDQ2NCAyMDhjMCAuOC0yLjcgMTcuMi00NiAzNS45QzM3OS4xIDI2MC43IDMyMiAyNzIgMjU2IDI3MnMtMTIzLjEtMTEuMy0xNjItMjguMUM1MC43IDIyNS4yIDQ4IDIwOC44IDQ4IDIwOGMwLTEwLjYgNS42LTI2LjIgNDQuNC00MS4zQzEzMC42IDE1MS45IDE4Ny44IDE0NCAyNTYgMTQ0YzE4IDAgMzUuMSAuNSA1MS40IDEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1bXN0aWNrQml0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjY1LjJjMCA4LjUtMy40IDE2LjYtOS40IDIyLjZsLTI2LjggMjYuOGMtMTIuMyAxMi4zLTMyLjUgMTEuNC00OS40IDcuMkM2OS44IDMyMC42IDY1IDMyMCA2MCAzMjBjLTMzLjEgMC02MCAyNi45LTYwIDYwczI2LjkgNjAgNjAgNjBjNi4zIDAgMTIgNS43IDEyIDEyYzAgMzMuMSAyNi45IDYwIDYwIDYwczYwLTI2LjkgNjAtNjBjMC01LS42LTkuOC0xLjgtMTQuNWMtNC4yLTE2LjktNS4yLTM3LjEgNy4yLTQ5LjRsMjYuOC0yNi44YzYtNiAxNC4xLTkuNCAyMi42LTkuNEgzMzZjNi4zIDAgMTIuNC0uMyAxOC41LTFjMTEuOS0xLjIgMTYuNC0xNS41IDEwLjgtMjZjLTguNS0xNS44LTEzLjMtMzMuOC0xMy4zLTUzYzAtNjEuOSA1MC4xLTExMiAxMTItMTEyYzggMCAxNS43IC44IDIzLjIgMi40YzExLjcgMi41IDI0LjEtNS45IDIyLTE3LjZDNDk0LjUgNjIuNSA0MjIuNSAwIDMzNiAwQzIzOC44IDAgMTYwIDc4LjggMTYwIDE3NnY4OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEdW1iYmVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYyMjR2NjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg0SDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDk2VjY0em00NDggMHY2NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg1NDR2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJINDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODggMjI0IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyek00MTYgMjI0djY0SDIyNFYyMjRINDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEdW1wc3RlckZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDkuNyAzMmw5MC44IDBMMTE0LjkgMTYwbC05NCAwQzkuMyAxNjAgMCAxNTAuNyAwIDEzOS4xYzAtMi4xIC4zLTQuMSAuOS02LjFMMjYuOCA0OC45QzI5LjkgMzguOSAzOS4yIDMyIDQ5LjcgMzJ6TTI3MiAxNjBsLTEyNC41IDBMMTczLjEgMzIgMjcyIDMybDAgMTI4em0zMiAwbDAtMTI4IDk4LjkgMCAxNC40IDcyLjFjLTEuNyAxLjEtMy4zIDIuNC00LjggMy44Yy0xOC40IDE2LjQtMzUuNCAzNC01MC41IDUyLjFsLTU4IDB6bTIwOS45LTIzLjdjLTEuNyAxLjYtMy40IDMuMi01IDQuOEM0OTggMTI5LjYgNDg2LjcgMTE4LjYgNDc1IDEwOGMtNy42LTYuOS0xNy0xMC44LTI2LjYtMTEuOEw0MzUuNSAzMmw5MC44IDBjMTAuNSAwIDE5LjggNi45IDIyLjkgMTYuOUw1NzUuMSAxMzNjLjIgLjcgLjQgMS40IC41IDIuMWMtMTcuOC0xNS00NC4zLTE0LjYtNjEuNyAxLjJ6TTMyNS4yIDIxMC43QzMwNC4zIDI0NC41IDI4OCAyODIuOSAyODggMzE4LjFjMCA0OS4zIDE4LjYgOTUuMiA0OS42IDEyOS45TDEyOCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJMNDQgMjg4bC0xMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDQgMC00LTMyIDMwNS41IDBjLTQuNCA2LjItOC41IDEyLjUtMTIuMyAxOC43em0xODAuNi0zNC41TDUxOCAxNjIuNWM1LjQtNi4xIDEzLjMtOC44IDIwLjktOC45YzcuMiAwIDE0LjMgMi42IDE5LjkgNy44YzE5LjcgMTguMyAzOS44IDQzLjIgNTUgNzAuNkM2MjkgMjU5LjIgNjQwIDI5MC4yIDY0MCAzMjAuMkM2NDAgNDA4LjggNTY4LjcgNDgwIDQ4MCA0ODBjLTg5LjYgMC0xNjAtNzEuMy0xNjAtMTU5LjhjMC0zNy4zIDE2LTczLjQgMzYuOC0xMDQuNWMyMC45LTMxLjMgNDcuNS01OSA3MC45LTgwLjJjNS43LTUuMiAxMy4xLTcuNyAyMC4zLTcuNWMxNC4xIC4zIDIzLjggMTEuNCAzMi43IDIxLjZjMCAwIDAgMCAwIDBjMiAyLjMgNCA0LjYgNiA2LjdsMTkgMTkuOXpNNTQ0IDM2OC4yYzAtMzYuNS0zNy03My01NC44LTg4LjRjLTUuNC00LjctMTMuMS00LjctMTguNSAwQzQ1MyAyOTUuMSA0MTYgMzMxLjYgNDE2IDM2OC4yYzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUR1bXBzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5LjcgMzJjLTEwLjUgMC0xOS44IDYuOS0yMi45IDE2LjlMLjkgMTMzYy0uNiAyLS45IDQuMS0uOSA2LjFDMCAxNTAuNyA5LjMgMTYwIDIwLjkgMTYwaDk0TDE0MC41IDMySDQ5Ljd6TTI3MiAxNjBWMzJIMTczLjFMMTQ3LjUgMTYwSDI3MnptMzIgMEg0MjguNUw0MDIuOSAzMkgzMDRWMTYwem0xNTcuMSAwaDk0YzExLjUgMCAyMC45LTkuMyAyMC45LTIwLjljMC0yLjEtLjMtNC4xLS45LTYuMUw1NDkuMiA0OC45QzU0Ni4xIDM4LjkgNTM2LjggMzIgNTI2LjMgMzJINDM1LjVsMjUuNiAxMjh6TTMyIDE5Mmw0IDMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ0TDY0IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMySDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDIwLTE2MGgxMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtNGw0LTMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEdW5nZW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNi42IDE1Ni41YzEuMyAxLjEgMi43IDIuMiAzLjkgMy4zYzkuMyA4LjIgMjMgMTAuNSAzMy40IDMuNmw2Ny42LTQ1LjFjMTEuNC03LjYgMTQuMi0yMy4yIDUuMS0zMy40QzQzMCA2Ni42IDQxMC45IDUwLjYgMzg5LjcgMzcuNmMtMTEuOS03LjMtMjYuOS0xLjQtMzIuMSAxMS42bC0zMC41IDc2LjJjLTQuNSAxMS4xIC4yIDIzLjYgOS41IDMxLjJ6TTMyOCAzNi44YzUuMS0xMi44LTEuNi0yNy40LTE1LTMwLjVDMjk0LjcgMi4yIDI3NS42IDAgMjU2IDBzLTM4LjcgMi4yLTU3IDYuNEMxODUuNSA5LjQgMTc4LjggMjQgMTg0IDM2LjhsMzAuMyA3NS44YzQuNSAxMS4zIDE2LjggMTcuMiAyOSAxNmM0LjItLjQgOC40LS42IDEyLjctLjZzOC42IC4yIDEyLjcgLjZjMTIuMSAxLjIgMjQuNC00LjcgMjktMTZMMzI4IDM2Ljh6TTY1LjUgODVjLTkuMSAxMC4yLTYuMyAyNS44IDUuMSAzMy40bDY3LjYgNDUuMWMxMC4zIDYuOSAyNC4xIDQuNiAzMy40LTMuNmMxLjMtMS4xIDIuNi0yLjMgNC0zLjNjOS4zLTcuNSAxMy45LTIwLjEgOS41LTMxLjJMMTU0LjQgNDkuMmMtNS4yLTEyLjktMjAuMy0xOC44LTMyLjEtMTEuNkMxMDEuMSA1MC42IDgyIDY2LjYgNjUuNSA4NXptMzE0IDEzNy4xYy45IDMuMyAxLjcgNi42IDIuMyAxMGMyLjUgMTMgMTMgMjMuOSAyNi4yIDIzLjloODBjMTMuMyAwIDI0LjEtMTAuOCAyMi45LTI0Yy0yLjUtMjcuMi05LjMtNTMuMi0xOS43LTc3LjNjLTUuNS0xMi45LTIxLjQtMTYuNi0zMy4xLTguOWwtNjguNiA0NS43Yy05LjggNi41LTEzLjIgMTkuMi0xMCAzMC41ek01My45IDE0NS44Yy0xMS42LTcuOC0yNy42LTQtMzMuMSA4LjlDMTAuNCAxNzguOCAzLjYgMjA0LjggMS4xIDIzMmMtMS4yIDEzLjIgOS42IDI0IDIyLjkgMjRoODBjMTMuMyAwIDIzLjgtMTAuOCAyNi4yLTIzLjljLjYtMy40IDEuNC02LjcgMi4zLTEwYzMuMS0xMS40LS4yLTI0LTEwLTMwLjVMNTMuOSAxNDUuOHpNMTA0IDI4OEgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0em0zMDQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQwOHpNMjQgNDE2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY0NDBjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjR6bTM4NCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY0NDBjMC0xMy4zLTEwLjctMjQtMjQtMjRINDA4ek0yNzIgMTkyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjE5MnptLTY0IDMyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIyNHptMTI4IDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWNDY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWMjU2IDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjRWMjg4SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NFY5NkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVhckRlYWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjYgNTQuNmwtNDAgNDBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDQwLTQwYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjN6bS0zMjAgMzIwbC0xMjggMTI4Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxMjgtMTI4YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjN6TTI0MCAxMjhjLTU3LjYgMC0xMDUuMSA0My42LTExMS4zIDk5LjVjLTEuOSAxNy42LTE3LjggMzAuMi0zNS4zIDI4LjNzLTMwLjItMTcuOC0yOC4zLTM1LjNDNzQuOCAxMzIuNSAxNDkuNCA2NCAyNDAgNjRjOTcuMiAwIDE3NiA3OC44IDE3NiAxNzZjMCA0Ni0xNy43IDg3LjktNDYuNiAxMTkuM2MtMTIgMTMtMTcuNCAyNC44LTE3LjQgMzQuN1Y0MDBjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTYuMWMwLTMyLjkgMTcuNC01OS42IDM0LjQtNzhjMTguNC0yMCAyOS42LTQ2LjYgMjkuNi03NS45YzAtNjEuOS01MC4xLTExMi0xMTItMTEyem0wIDgwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJMaXN0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk4LjMgMy40Yy0xNS44LTcuOS0zNS0xLjUtNDIuOSAxNC4zYy03LjkgMTUuOC0xLjUgMzQuOSAxNC4yIDQyLjlsLjQgLjJjLjQgLjIgMS4xIC42IDIuMSAxLjJjMiAxLjIgNSAzIDguNyA1LjZjNy41IDUuMiAxNy42IDEzLjIgMjcuNyAyNC4yQzQyOC41IDExMy40IDQ0OCAxNDYgNDQ4IDE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNjYtMjguNS0xMTMuNC01Ni41LTE0My43QzQ0MS42IDMzLjIgNDI3LjcgMjIuMiA0MTcuMyAxNWMtNS4zLTMuNy05LjctNi40LTEzLTguM2MtMS42LTEtMy0xLjctNC0yLjJjLS41LS4zLS45LS41LTEuMi0uN2wtLjQtLjItLjItLjEtLjEgMCAwIDBjMCAwIDAgMC0xNC4zIDI4LjZMMzk4LjMgMy40ek0xMjguNyAyMjcuNWM2LjItNTYgNTMuNy05OS41IDExMS4zLTk5LjVjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJjMCAyOS4zLTExLjIgNTUuOS0yOS42IDc1LjljLTE3IDE4LjQtMzQuNCA0NS4xLTM0LjQgNzhWNDAwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyYzYxLjkgMCAxMTItNTAuMSAxMTItMTEydi02LjFjMC05LjggNS40LTIxLjcgMTcuNC0zNC43QzM5OC4zIDMyNy45IDQxNiAyODYgNDE2IDI0MGMwLTk3LjItNzguOC0xNzYtMTc2LTE3NkMxNDkuNCA2NCA3NC44IDEzMi41IDY1LjEgMjIwLjVjLTEuOSAxNy42IDEwLjcgMzMuNCAyOC4zIDM1LjNzMzMuNC0xMC43IDM1LjMtMjguM3pNMzIgNTEyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMTkyIDM1MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek00MS40IDM2MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDB6TTIwOCAyNDBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVhcnRoQWZyaWNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ny44IDYzLjJsMTAgMTcuNGMyLjggNC44IDQuMiAxMC4zIDQuMiAxNS45djQxLjRjMCAzLjkgMS42IDcuNyA0LjMgMTAuNGM2LjIgNi4yIDE2LjUgNS43IDIyLTEuMmwxMy42LTE3YzQuNy01LjkgMTIuOS03LjcgMTkuNi00LjNsMTUuMiA3LjZjMy40IDEuNyA3LjIgMi42IDExIDIuNmM2LjUgMCAxMi44LTIuNiAxNy40LTcuMmwzLjktMy45YzIuOS0yLjkgNy4zLTMuNiAxMS0xLjhsMjkuMiAxNC42YzcuOCAzLjkgMTIuNiAxMS44IDEyLjYgMjAuNWMwIDEwLjUtNy4xIDE5LjYtMTcuMyAyMi4ybC0zNS40IDguOGMtNy40IDEuOC0xNS4xIDEuNS0yMi40LS45bC0zMi0xMC43Yy0zLjMtMS4xLTYuNy0xLjctMTAuMi0xLjdjLTcgMC0xMy44IDIuMy0xOS40IDYuNUwxNzYgMjEyYy0xMC4xIDcuNi0xNiAxOS40LTE2IDMydjI4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmMxMC4xIDAgMTkuNi00LjcgMjUuNi0xMi44bDI1LjYtMzQuMWM4LjMtMTEuMSAxMi44LTI0LjYgMTIuOC0zOC40VjMxOC42YzAtMy45IDIuNi03LjMgNi40LTguMmw1LjMtMS4zYzExLjktMyAyMC4zLTEzLjcgMjAuMy0yNmMwLTcuMS0yLjgtMTMuOS03LjgtMTguOWwtMzMuNS0zMy41Yy0zLjctMy43LTMuNy05LjcgMC0xMy40YzUuNy01LjcgMTQuMS03LjcgMjEuOC01LjFsMTQuMSA0LjdjMTIuMyA0LjEgMjUuNy0xLjUgMzEuNS0xM2MzLjUtNyAxMS4yLTEwLjggMTguOS05LjJsMjcuNCA1LjVDNDMyIDExMi40IDM1MS41IDQ4IDI1NiA0OGMtMjcuNyAwLTU0IDUuNC03OC4yIDE1LjJ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFydGhBbWVyaWNhcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ny43IDE5M2w5LjQgMTYuNGM4LjMgMTQuNSAyMS45IDI1LjIgMzggMjkuOEwxNjMgMjU1LjdjMTcuMiA0LjkgMjkgMjAuNiAyOSAzOC41djM5LjljMCAxMSA2LjIgMjEgMTYgMjUuOXMxNiAxNC45IDE2IDI1Ljl2MzljMCAxNS42IDE0LjkgMjYuOSAyOS45IDIyLjZjMTYuMS00LjYgMjguNi0xNy41IDMyLjctMzMuOGwyLjgtMTEuMmM0LjItMTYuOSAxNS4yLTMxLjQgMzAuMy00MGw4LjEtNC42YzE1LTguNSAyNC4yLTI0LjUgMjQuMi00MS43di04LjNjMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOWwtMy45LTMuOWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFIMjU3Yy0xMS4xIDAtMjIuMS0yLjktMzEuOC04LjRsLTM0LjUtMTkuN2MtNC4zLTIuNS03LjYtNi41LTkuMi0xMS4yYy0zLjItOS42IDEuMS0yMCAxMC4yLTI0LjVsNS45LTNjNi42LTMuMyAxNC4zLTMuOSAyMS4zLTEuNWwyMy4yIDcuN2M4LjIgMi43IDE3LjItLjQgMjEuOS03LjVjNC43LTcgNC4yLTE2LjMtMS4yLTIyLjhsLTEzLjYtMTYuM2MtMTAtMTItOS45LTI5LjUgLjMtNDEuM2wxNS43LTE4LjNjOC44LTEwLjMgMTAuMi0yNSAzLjUtMzYuN2wtMi40LTQuMmMtMy41LS4yLTYuOS0uMy0xMC40LS4zQzE2My4xIDQ4IDg0LjQgMTA4LjkgNTcuNyAxOTN6TTQ2NCAyNTZjMC0zNi44LTkuNi03MS40LTI2LjQtMTAxLjVMNDEyIDE2NC44Yy0xNS43IDYuMy0yMy44IDIzLjgtMTguNSAzOS44bDE2LjkgNTAuN2MzLjUgMTAuNCAxMiAxOC4zIDIyLjYgMjAuOWwyOS4xIDcuM2MxLjItOSAxLjgtMTguMiAxLjgtMjcuNXpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJ0aEFzaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEuNyAyOTUuMWwzMS43IDYuM2M3LjkgMS42IDE2LS45IDIxLjctNi42bDE1LjQtMTUuNGMxMS42LTExLjYgMzEuMS04LjQgMzguNCA2LjJsOS4zIDE4LjVjNC44IDkuNiAxNC42IDE1LjcgMjUuNCAxNS43YzE1LjIgMCAyNi4xLTE0LjYgMjEuNy0yOS4ybC02LTE5LjljLTQuNi0xNS40IDYuOS0zMC45IDIzLTMwLjloMi4zYzEzLjQgMCAyNS45LTYuNyAzMy4zLTE3LjhsMTAuNy0xNi4xYzUuNi04LjUgNS4zLTE5LjYtLjgtMjcuN2wtMTYuMS0yMS41Yy0xMC4zLTEzLjctMy4zLTMzLjUgMTMuNC0zNy43bDE3LTQuM2M3LjUtMS45IDEzLjYtNy4yIDE2LjUtMTQuNGwxNi40LTQwLjlDMzAzLjQgNTIuMSAyODAuMiA0OCAyNTYgNDhDMTQxLjEgNDggNDggMTQxLjEgNDggMjU2YzAgMTMuNCAxLjMgMjYuNSAzLjcgMzkuMXptNDA3LjcgNC42Yy0zLS4zLTYtLjEtOSAuOGwtMTUuOCA0LjRjLTYuNyAxLjktMTMuOC0uOS0xNy41LTYuN2wtMi0zLjFjLTYtOS40LTE2LjQtMTUuMS0yNy42LTE1LjFzLTIxLjYgNS43LTI3LjYgMTUuMWwtNi4xIDkuNWMtMS40IDIuMi0zLjQgNC4xLTUuNyA1LjNMMzEyIDMzMC4xYy0xOC4xIDEwLjEtMjUuNSAzMi40LTE3IDUxLjNsNS41IDEyLjRjOC42IDE5LjIgMzAuNyAyOC41IDUwLjUgMjEuMWwyLjYtMWMxMC0zLjcgMjEuMy0yLjIgMjkuOSA0LjFsMS41IDEuMWMzNy4yLTI5LjUgNjQuMS03MS40IDc0LjQtMTE5LjV6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTQ0LjUgOTIuMWMtMi4xIDguNiAzLjEgMTcuMyAxMS42IDE5LjRsMzIgOGM4LjYgMi4xIDE3LjMtMy4xIDE5LjQtMTEuNnMtMy4xLTE3LjMtMTEuNi0xOS40bC0zMi04Yy04LjYtMi4xLTE3LjMgMy4xLTE5LjQgMTEuNnptOTItMjBjLTIuMSA4LjYgMy4xIDE3LjMgMTEuNiAxOS40czE3LjMtMy4xIDE5LjQtMTEuNmw4LTMyYzIuMS04LjYtMy4xLTE3LjMtMTEuNi0xOS40cy0xNy4zIDMuMS0xOS40IDExLjZsLTggMzJ6TTM0My4yIDExMy43Yy03LjktNC0xNy41LS43LTIxLjUgNy4ybC0xNiAzMmMtNCA3LjktLjcgMTcuNSA3LjIgMjEuNXMxNy41IC43IDIxLjUtNy4ybDE2LTMyYzQtNy45IC43LTE3LjUtNy4yLTIxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVhcnRoRXVyb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2Ni4zIDQ4LjNMMjMyLjUgNzMuNmMtNS40IDQtOC41IDEwLjQtOC41IDE3LjF2OS4xYzAgNi44IDUuNSAxMi4zIDEyLjMgMTIuM2MyLjQgMCA0LjgtLjcgNi44LTIuMWw0MS44LTI3LjljMi0xLjMgNC40LTIuMSA2LjgtMi4xaDFjNi4yIDAgMTEuMyA1LjEgMTEuMyAxMS4zYzAgMy0xLjIgNS45LTMuMyA4bC0xOS45IDE5LjljLTUuOCA1LjgtMTIuOSAxMC4yLTIwLjcgMTIuOGwtMjYuNSA4LjhjLTUuOCAxLjktOS42IDcuMy05LjYgMTMuNGMwIDMuNy0xLjUgNy4zLTQuMSAxMGwtMTcuOSAxNy45Yy02LjQgNi40LTkuOSAxNS05LjkgMjR2NC4zYzAgMTYuNCAxMy42IDI5LjcgMjkuOSAyOS43YzExIDAgMjEuMi02LjIgMjYuMS0xNmw0LTguMWMyLjQtNC44IDcuNC03LjkgMTIuOC03LjljNC41IDAgOC43IDIuMSAxMS40IDUuN2wxNi4zIDIxLjdjMi4xIDIuOSA1LjUgNC41IDkuMSA0LjVjOC40IDAgMTMuOS04LjkgMTAuMS0xNi40bC0xLjEtMi4zYy0zLjUtNyAwLTE1LjUgNy41LTE4bDIxLjItNy4xYzcuNi0yLjUgMTIuNy05LjYgMTIuNy0xNy42YzAtMTAuMyA4LjMtMTguNiAxOC42LTE4LjZINDAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM3OS4zYy03LjIgMC0xNC4yIDIuOS0xOS4zIDhsLTQuNyA0LjdjLTIuMSAyLjEtMy4zIDUtMy4zIDhjMCA2LjIgNS4xIDExLjMgMTEuMyAxMS4zaDExLjNjNiAwIDExLjggMi40IDE2IDYuNmw2LjUgNi41YzEuOCAxLjggMi44IDQuMyAyLjggNi44cy0xIDUtMi44IDYuOGwtNy41IDcuNUMzODYgMjYyIDM4NCAyNjYuOSAzODQgMjcyczIgMTAgNS43IDEzLjdMNDA4IDMwNGMxMC4yIDEwLjIgMjQuMSAxNiAzOC42IDE2SDQ1NGM2LjUtMjAuMiAxMC00MS43IDEwLTY0YzAtMTExLjQtODcuNi0yMDIuNC0xOTcuNy0yMDcuN3ptMTcyIDMwNy45Yy0zLjctMi42LTguMi00LjEtMTMtNC4xYy02IDAtMTEuOC0yLjQtMTYtNi42TDM5NiAzMzJjLTcuNy03LjctMTgtMTItMjguOS0xMmMtOS43IDAtMTkuMi0zLjUtMjYuNi05LjhMMzE0IDI4Ny40Yy0xMS42LTkuOS0yNi40LTE1LjQtNDEuNy0xNS40SDI1MS40Yy0xMi42IDAtMjUgMy43LTM1LjUgMTAuN0wxODguNSAzMDFjLTE3LjggMTEuOS0yOC41IDMxLjktMjguNSA1My4zdjMuMmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2wxNiAxNmM4LjUgOC41IDIwIDEzLjMgMzIgMTMuM0gyNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRjMCAyLjUgLjQgNSAxLjEgNy4zYzcxLjMtNS44IDEzMi41LTQ3LjYgMTY1LjItMTA3LjJ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMTg3LjMgMTAwLjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0zMiAzMmMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwbDMyLTMyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJ0aE9jZWFuaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIwOC42IDM1Ny4zbC0zOS0xMy41Yy02LjUtMi4yLTEzLjYtMi4zLTIwLjEtLjNsLTE1LjMgNC45Yy0xOC41IDUuOS0zOC41LTIuNC00Ny41LTE5LjVsLTMuMy02LjJjLTEwLjYtMjAuMS0yLjMtNDUgMTguMi01NC43bDM1LjMtMTYuOGMyLjMtMS4xIDQuNC0yLjggNS45LTQuOGw1LjMtN2M3LjItOS42IDE4LjYtMTUuMyAzMC42LTE1LjNzMjMuNCA1LjcgMzAuNiAxNS4zbDQuNiA2LjFjMiAyLjYgNC45IDQuNSA4LjEgNS4xYzcuOCAxLjYgMTUuNy0xLjUgMjAuNC03LjlsMTAuNC0xNC4yYzItMi44IDUuMy00LjQgOC43LTQuNGM0LjQgMCA4LjQgMi43IDEwIDYuOGwxMC4xIDI1LjljMi44IDcuMiA2LjcgMTQgMTEuNSAyMC4yTDMxMSAyOTkuOGM1LjggNy40IDkgMTYuNiA5IDI2cy0zLjIgMTguNi05IDI2TDI5OSAzNjcuMmMtOC4zIDEwLjYtMjEgMTYuOC0zNC40IDE2LjhjLTguNCAwLTE2LjYtMi40LTIzLjctN2wtMjUuNC0xNi40Yy0yLjItMS40LTQuNS0yLjUtNi45LTMuNHptNjUuMi0yMTQuOEwyOTYgMTY0LjdjMTAuMSAxMC4xIDIuOSAyNy4zLTExLjMgMjcuM0gyNTQuOGMtNS42IDAtMTEuMS0xLjItMTYuMi0zLjRsLTQyLjgtMTljLTE0LjMtNi4zLTExLjktMjcuMyAzLjQtMzAuM2wzOC41LTcuN2MxMy4xLTIuNiAyNi43IDEuNSAzNi4xIDEwLjl6TTI0OCA0MzJjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDI2NGMtOC44IDAtMTYtNy4yLTE2LTE2ek00MzEuMiAyOTguOWw4IDI0YzIuOCA4LjQtMS43IDE3LjQtMTAuMSAyMC4ycy0xNy40LTEuNy0yMC4yLTEwLjFsLTgtMjRjLTIuOC04LjQgMS43LTE3LjQgMTAuMS0yMC4yczE3LjQgMS43IDIwLjIgMTAuMXptLTE5LjkgODAuNGwtMzIgMzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZsMzItMzJjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFZ2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDQ5NkM4NiA0OTYgMCAzOTQgMCAyODhDMCAxNzYgNjQgMTYgMTkyIDE2czE5MiAxNjAgMTkyIDI3MmMwIDEwNi04NiAyMDgtMTkyIDIwOHpNMTU0LjggMTM0YzYuNS02IDctMTYuMSAxLTIyLjZzLTE2LjEtNy0yMi42LTFjLTIzLjkgMjEuOC00MS4xIDUyLjctNTIuMyA4NC4yQzY5LjcgMjI2LjEgNjQgMjU5LjcgNjQgMjg4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZjMC0yNC41IDUtNTQuNCAxNS4xLTgyLjhjMTAuMS0yOC41IDI1LTU0LjEgNDMuNy03MS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFamVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzJjMTMuNSAwIDI2LjMgNS42IDM1LjQgMTUuNmwxNzYgMTkyYzEyLjkgMTQgMTYuMiAzNC4zIDguNiA1MS44UzQxOSAzMjAgNDAwIDMyMEg0OGMtMTkgMC0zNi4zLTExLjItNDMuOS0yOC43cy00LjMtMzcuNyA4LjYtNTEuOGwxNzYtMTkyQzE5Ny43IDM3LjYgMjEwLjUgMzIgMjI0IDMyek0wIDQzMmMwLTI2LjUgMjEuNS00OCA0OC00OEg0MDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGV2YXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzIuNyA0LjdsLTY0IDY0Yy00LjYgNC42LTUuOSAxMS41LTMuNSAxNy40czguMyA5LjkgMTQuOCA5LjlIMjA4YzYuNSAwIDEyLjMtMy45IDE0LjgtOS45czEuMS0xMi45LTMuNS0xNy40bC02NC02NGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDB6TTY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYxOTJjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTk2IDk2YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpNODAgNDAwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDY0YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djE2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDExMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDAwem0xOTIgMGMwLTI2LjUgMjEuNS00OCA0OC00OGg2NGMyNi41IDAgNDggMjEuNSA0OCA0OHYxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwMHptMzItMTI4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTM1Ni43IDkxLjNjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsNjQtNjRjNC42LTQuNiA1LjktMTEuNSAzLjUtMTcuNFM0MzguNSAwIDQzMiAwSDMwNGMtNi41IDAtMTIuMyAzLjktMTQuOCA5LjlzLTEuMSAxMi45IDMuNSAxNy40bDY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxpcHNpc1ZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxMjggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDM2MGE1NiA1NiAwIDEgMCAwIDExMiA1NiA1NiAwIDEgMCAwLTExMnptMC0xNjBhNTYgNTYgMCAxIDAgMCAxMTIgNTYgNTYgMCAxIDAgMC0xMTJ6TTEyMCA5NkE1NiA1NiAwIDEgMCA4IDk2YTU2IDU2IDAgMSAwIDExMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxpcHNpcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI1NmE1NiA1NiAwIDEgMSAxMTIgMEE1NiA1NiAwIDEgMSA4IDI1NnptMTYwIDBhNTYgNTYgMCAxIDEgMTEyIDAgNTYgNTYgMCAxIDEgLTExMiAwem0yMTYtNTZhNTYgNTYgMCAxIDEgMCAxMTIgNTYgNTYgMCAxIDEgMC0xMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3BlQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggNjRDMjEuNSA2NCAwIDg1LjUgMCAxMTJjMCAxNS4xIDcuMSAyOS4zIDE5LjIgMzguNEwyMzYuOCAzMTMuNmMxMS40IDguNSAyNyA4LjUgMzguNCAwbDU3LjQtNDNjMjMuOS01OS44IDc5LjctMTAzLjMgMTQ2LjMtMTA5LjhsMTMuOS0xMC40YzEyLjEtOS4xIDE5LjItMjMuMyAxOS4yLTM4LjRjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTI5NC40IDMzOS4yYy0yMi44IDE3LjEtNTQgMTcuMS03Ni44IDBMMCAxNzZWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM2MC4yQzMzNS4xIDQxNy42IDMyMCAzNzguNSAzMjAgMzM2YzAtNS42IC4zLTExLjEgLjgtMTYuNmwtMjYuNCAxOS44ek02NDAgMzM2YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzUzLjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZU9wZW5UZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNS40IDk2SDE0NCAxMDcuOCA5NnY4LjhWMTQ0djQwLjQgODlMLjIgMjAyLjVjMS42LTE4LjEgMTAuOS0zNC45IDI1LjctNDUuOEw0OCAxNDAuM1Y5NmMwLTI2LjUgMjEuNS00OCA0OC00OGg3Ni42bDQ5LjktMzYuOUMyMzIuMiAzLjkgMjQzLjkgMCAyNTYgMHMyMy44IDMuOSAzMy41IDExTDMzOS40IDQ4SDQxNmMyNi41IDAgNDggMjEuNSA0OCA0OHY0NC4zbDIyLjEgMTYuNGMxNC44IDEwLjkgMjQuMSAyNy43IDI1LjcgNDUuOEw0MTYgMjczLjR2LTg5VjE0NCAxMDQuOCA5Nkg0MDQuMiAzNjggMjk2LjYgMjE1LjR6TTAgNDQ4VjI0Mi4xTDIxNy42IDQwMy4zYzExLjEgOC4yIDI0LjYgMTIuNyAzOC40IDEyLjdzMjcuMy00LjQgMzguNC0xMi43TDUxMiAyNDIuMVY0NDh2MGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjR2MHpNMTc2IDE2MEgzMzZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0SDMzNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3BlT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAyMDguMUwyNTYgNjUuOSA0NDggMjA4LjF2NDcuNEwyODkuNSAzNzNjLTkuNyA3LjItMjEuNCAxMS0zMy41IDExcy0yMy44LTMuOS0zMy41LTExTDY0IDI1NS41VjIwOC4xek0yNTYgMGMtMTIuMSAwLTIzLjggMy45LTMzLjUgMTFMMjUuOSAxNTYuN0M5LjYgMTY4LjggMCAxODcuOCAwIDIwOC4xVjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjA4LjFjMC0yMC4zLTkuNi0zOS40LTI1LjktNTEuNEwyODkuNSAxMUMyNzkuOCAzLjkgMjY4LjEgMCAyNTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggNjRDMjEuNSA2NCAwIDg1LjUgMCAxMTJjMCAxNS4xIDcuMSAyOS4zIDE5LjIgMzguNEwyMzYuOCAzMTMuNmMxMS40IDguNSAyNyA4LjUgMzguNCAwTDQ5Mi44IDE1MC40YzEyLjEtOS4xIDE5LjItMjMuMyAxOS4yLTM4LjRjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTAgMTc2VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTc2TDI5NC40IDMzOS4yYy0yMi44IDE3LjEtNTQgMTcuMS03Ni44IDBMMCAxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3Blc0J1bGsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMyVjIyNGg5NlYxOTJjMC0zNS4zIDI4LjctNjQgNjQtNjRINDgwVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDEyOHpNMjU2IDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJoOTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2SDU3NmMxNy43IDAgMzItMTQuMyAzMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJIMjU2em0yNDAgNjRoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0OTZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2ek02NCAyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjEzTDE4Ny4xIDQxNS45YzEuNCAxIDMuMSAxLjYgNC45IDEuNnMzLjUtLjYgNC45LTEuNkwzNTIgMzAxVjI4OGMwLTE3LjctMTQuMy0zMi0zMi0zMkg2NHptMjg4IDg0LjhMMjE2IDQ0MS42Yy02LjkgNS4xLTE1LjMgNy45LTI0IDcuOXMtMTctMi44LTI0LTcuOUwzMiAzNDAuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM0MC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFcXVhbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQwMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0OHptMCAxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFcmFzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkwLjcgNTcuNEw1Ny40IDI5MC43Yy0yNSAyNS0yNSA2NS41IDAgOTAuNWw4MCA4MGMxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43SDI4OGg5LjRINTEyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM4Ny45TDUxOC42IDI4NS4zYzI1LTI1IDI1LTY1LjUgMC05MC41TDM4MS4zIDU3LjRjLTI1LTI1LTY1LjUtMjUtOTAuNSAwek0yOTcuNCA0MTZIMjg4bC0xMDUuNCAwLTgwLTgwTDIyNy4zIDIxMS4zIDM2NC43IDM0OC43IDI5Ny40IDQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXRoZXJuZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMjRWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDk2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjQ0OGg2NFYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlY0NDhoNjRWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWNDQ4aDY0VjMzNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjQ0OGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJINDQ4VjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzODRWOTZjMC0xNy43LTE0LjMtMzItMzItMzJIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdXJvU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OC4xIDI0MGMtLjEgMi43LS4xIDUuMy0uMSA4djE2YzAgMi43IDAgNS4zIC4xIDhIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjAuM0M4OS45IDQxOS45IDE3MCA0ODAgMjY0IDQ4MGgyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNjRjLTU3LjkgMC0xMDguMi0zMi40LTEzMy45LTgwSDI1NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTIuMmMtLjEtMi42LS4yLTUuMy0uMi04VjI0OGMwLTIuNyAuMS01LjQgLjItOEgyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTMwLjFjMjUuNy00Ny42IDc2LTgwIDEzMy45LTgwaDI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI2NEMxNzAgMzIgODkuOSA5Mi4xIDYwLjMgMTc2SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRjMC0xNy43LTE0LjMtMzItMzItMzJTMCA0Ni4zIDAgNjRWMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNjR6TTMyIDQ4MGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4cGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0djk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWOTZoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6TTY0IDM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NFYzNTJ6TTMyMCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg2NHY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyMHpNNDQ4IDM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NEgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBsb3Npb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk5LjYgMTEuM2M2LjctMTAuNyAyMC41LTE0LjUgMzEuNy04LjVzMTUuOCAxOS41IDEwLjYgMzFMNDA0LjggMzM4LjZjMi4yIDIuMyA0LjMgNC43IDYuMyA3LjFsOTcuMi01NC43YzEwLjUtNS45IDIzLjYtMy4xIDMwLjkgNi40czYuMyAyMy0yLjIgMzEuNWwtODcgODdIMzc4LjVjLTEzLjItMzcuMy00OC43LTY0LTkwLjUtNjRzLTc3LjQgMjYuNy05MC41IDY0SDExNy44TDQyLjMgMzYzLjdjLTkuNy02LjctMTMuMS0xOS42LTcuOS0zMC4zczE3LjQtMTUuOSAyOC43LTEyLjRsOTcuMiAzMC40YzMtMy45IDYuMS03LjcgOS40LTExLjNMMTA3LjQgMjM2LjNjLTYuMS0xMC4xLTMuOS0yMy4xIDUuMS0zMC43czIyLjItNy41IDMxLjEgLjFMMjQ2IDI5My42YzEuNS0uNCAzLS44IDQuNS0xLjFsMTMuNi0xNDIuN2MxLjItMTIuMyAxMS41LTIxLjcgMjMuOS0yMS43czIyLjcgOS40IDIzLjkgMjEuN2wxMy41IDE0MS45TDQ5OS42IDExLjN6TTY0IDQ0OHYwSDUxMnYwaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDY0ek0yODggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY3MmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXllRHJvcHBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDEuNiAyOS4yTDI0MC4xIDEzMC44bC05LjQtOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTkuNC05LjRMNDgyLjggMTcwLjRjMzktMzkgMzktMTAyLjIgMC0xNDEuMXMtMTAyLjItMzktMTQxLjEgMHpNNTUuNCAzMjMuM2MtMTUgMTUtMjMuNCAzNS40LTIzLjQgNTYuNnY0Mi40TDUuNCA0NjIuMmMtOC41IDEyLjctNi44IDI5LjYgNCA0MC40czI3LjcgMTIuNSA0MC40IDRMODkuNyA0ODBoNDIuNGMyMS4yIDAgNDEuNi04LjQgNTYuNi0yMy40TDMwOS40IDMzNS45bC00NS4zLTQ1LjNMMTQzLjQgNDExLjNjLTMgMy03LjEgNC43LTExLjMgNC43SDk2VjM3OS45YzAtNC4yIDEuNy04LjMgNC43LTExLjNMMjIxLjQgMjQ3LjlsLTQ1LjMtNDUuM0w1NS40IDMyMy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWVMb3dWaXNpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w1MjUuNiAzODYuN2MzOS42LTQwLjYgNjYuNC04Ni4xIDc5LjktMTE4LjRjMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjZjLTE0LjktMzUuNy00Ni4yLTg3LjctOTMtMTMxLjFDNDY1LjUgNjguOCA0MDAuOCAzMiAzMjAgMzJjLTY4LjIgMC0xMjUgMjYuMy0xNjkuMyA2MC44TDM4LjggNS4xek0yMjMgMTQ5LjVjNDguNi00NC4zIDEyMy01MC44IDE3OS4zLTExLjdjNjAuOCA0Mi40IDc4LjkgMTIzLjIgNDQuMiAxODYuOUw0MDggMjk0LjVjOC40LTE5LjMgMTAuNi00MS40IDQuOC02My4zYy0xMS4xLTQxLjUtNDcuOC02OS40LTg4LjYtNzEuMWMtNS44LS4yLTkuMiA2LjEtNy40IDExLjdjMi4xIDYuNCAzLjMgMTMuMiAzLjMgMjAuM2MwIDEwLjItMi40IDE5LjgtNi42IDI4LjNMMjIzIDE0OS41em0tMTM5LjkgMTJjLTExIDE0LjQtMjAuNSAyOC43LTI4LjQgNDIuMmwzMzkgMjY1LjdjMTguNy01LjUgMzYuMi0xMyA1Mi42LTIxLjhMODMuMSAxNjEuNXptLTUwIDg2LjNjLTEuOCA2LjgtMS4zIDE0IDEuNCAyMC41YzE0LjkgMzUuNyA0Ni4yIDg3LjcgOTMgMTMxLjFDMTc0LjUgNDQzLjIgMjM5LjIgNDgwIDMyMCA0ODBjMy4xIDAgNi4xLS4xIDkuMi0uMkwzMy4xIDI0Ny44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDUyNS42IDM4Ni43YzM5LjYtNDAuNiA2Ni40LTg2LjEgNzkuOS0xMTguNGMzLjMtNy45IDMuMy0xNi43IDAtMjQuNmMtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMUM0NjUuNSA2OC44IDQwMC44IDMyIDMyMCAzMmMtNjguMiAwLTEyNSAyNi4zLTE2OS4zIDYwLjhMMzguOCA1LjF6TTIyMy4xIDE0OS41QzI0OC42IDEyNi4yIDI4Mi43IDExMiAzMjAgMTEyYzc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0YzAgMjQuOS02LjMgNDguMy0xNy40IDY4LjdMNDA4IDI5NC41YzguNC0xOS4zIDEwLjYtNDEuNCA0LjgtNjMuM2MtMTEuMS00MS41LTQ3LjgtNjkuNC04OC42LTcxLjFjLTUuOC0uMi05LjIgNi4xLTcuNCAxMS43YzIuMSA2LjQgMy4zIDEzLjIgMy4zIDIwLjNjMCAxMC4yLTIuNCAxOS44LTYuNiAyOC4zbC05MC4zLTcwLjh6TTM3MyAzODkuOWMtMTYuNCA2LjUtMzQuMyAxMC4xLTUzIDEwLjFjLTc5LjUgMC0xNDQtNjQuNS0xNDQtMTQ0YzAtNi45IC41LTEzLjYgMS40LTIwLjJMODMuMSAxNjEuNUM2MC4zIDE5MS4yIDQ0IDIyMC44IDM0LjUgMjQzLjdjLTMuMyA3LjktMy4zIDE2LjcgMCAyNC42YzE0LjkgMzUuNyA0Ni4yIDg3LjcgOTMgMTMxLjFDMTc0LjUgNDQzLjIgMjM5LjIgNDgwIDMyMCA0ODBjNDcuOCAwIDg5LjktMTIuOSAxMjYuMi0zMi41TDM3MyAzODkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMmMtODAuOCAwLTE0NS41IDM2LjgtMTkyLjYgODAuNkM0OC42IDE1NiAxNy4zIDIwOCAyLjUgMjQzLjdjLTMuMyA3LjktMy4zIDE2LjcgMCAyNC42QzE3LjMgMzA0IDQ4LjYgMzU2IDk1LjQgMzk5LjRDMTQyLjUgNDQzLjIgMjA3LjIgNDgwIDI4OCA0ODBzMTQ1LjUtMzYuOCAxOTIuNi04MC42YzQ2LjgtNDMuNSA3OC4xLTk1LjQgOTMtMTMxLjFjMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjZjLTE0LjktMzUuNy00Ni4yLTg3LjctOTMtMTMxLjFDNDMzLjUgNjguOCAzNjguOCAzMiAyODggMzJ6TTE0NCAyNTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMTQ0LTY0YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy03LjEgMC0xMy45LTEuMi0yMC4zLTMuM2MtNS41LTEuOC0xMS45IDEuNi0xMS43IDcuNGMuMyA2LjkgMS4zIDEzLjggMy4yIDIwLjdjMTMuNyA1MS4yIDY2LjQgODEuNiAxMTcuNiA2Ny45czgxLjYtNjYuNCA2Ny45LTExNy42Yy0xMS4xLTQxLjUtNDcuOC02OS40LTg4LjYtNzEuMWMtNS44LS4yLTkuMiA2LjEtNy40IDExLjdjMi4xIDYuNCAzLjMgMTMuMiAzLjMgMjAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjI1NiA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhIMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0Vjk2SDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUFuZ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMzM4LjcgMzk1LjljNi42LTUuOSA3LjEtMTYgMS4yLTIyLjZDMzIzLjggMzU1LjQgMjk1LjcgMzM2IDI1NiAzMzZzLTY3LjggMTkuNC04My45IDM3LjNjLTUuOSA2LjYtNS40IDE2LjcgMS4yIDIyLjZzMTYuNyA1LjQgMjIuNi0xLjJjMTEuNy0xMyAzMS42LTI2LjcgNjAuMS0yNi43czQ4LjQgMTMuNyA2MC4xIDI2LjdjNS45IDYuNiAxNiA3LjEgMjIuNiAxLjJ6TTE3Ni40IDI3MmMxNy43IDAgMzItMTQuMyAzMi0zMmMwLTEuNS0uMS0zLS4zLTQuNGwxMC45IDMuNmM4LjQgMi44IDE3LjQtMS43IDIwLjItMTAuMXMtMS43LTE3LjQtMTAuMS0yMC4ybC05Ni0zMmMtOC40LTIuOC0xNy40IDEuNy0yMC4yIDEwLjFzMS43IDE3LjQgMTAuMSAyMC4ybDMwLjcgMTAuMmMtNS44IDUuOC05LjMgMTMuOC05LjMgMjIuNmMwIDE3LjcgMTQuMyAzMiAzMiAzMnptMTkyLTMyYzAtOC45LTMuNi0xNy05LjUtMjIuOGwzMC4yLTEwLjFjOC40LTIuOCAxMi45LTExLjkgMTAuMS0yMC4ycy0xMS45LTEyLjktMjAuMi0xMC4xbC05NiAzMmMtOC40IDIuOC0xMi45IDExLjktMTAuMSAyMC4yczExLjkgMTIuOSAyMC4yIDEwLjFsMTEuNy0zLjljLS4yIDEuNS0uMyAzLjEtLjMgNC43YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VEaXp6eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMC0yMjRhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTEwMC43IDEzMi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwTDE2MCAxNjkuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42TDE4Mi42IDE5MmwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEwxNjAgMjE0LjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkwxMzcuNCAxOTJsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZ6bTE5MiAwYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwTDM1MiAxNjkuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42TDM3NC42IDE5MmwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEwzNTIgMjE0LjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkwzMjkuNCAxOTJsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VGbHVzaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMTc2IDM4NGMwIDguOCA3LjIgMTYgMTYgMTZIMzIwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE5MmMtOC44IDAtMTYgNy4yLTE2IDE2em0tMTYtODhhNzIgNzIgMCAxIDAgMC0xNDQgNzIgNzIgMCAxIDAgMCAxNDR6bTI2NC03MmE3MiA3MiAwIDEgMCAtMTQ0IDAgNzIgNzIgMCAxIDAgMTQ0IDB6bS0yODggMGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xOTIgMGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlRnJvd25PcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNzYuNCAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptLTEyMiAxNzQuNWMtMTIuNCA1LjItMjYuNS00LjEtMjEuMS0xNi40YzE2LTM2LjYgNTIuNC02Mi4xIDk0LjgtNjIuMXM3OC44IDI1LjYgOTQuOCA2Mi4xYzUuNCAxMi4zLTguNyAyMS42LTIxLjEgMTYuNGMtMjIuNC05LjUtNDcuNC0xNC44LTczLjctMTQuOHMtNTEuMyA1LjMtNzMuNyAxNC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlRnJvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE1OS4zIDM4OC43Yy0yLjYgOC40LTExLjYgMTMuMi0yMCAxMC41cy0xMy4yLTExLjYtMTAuNS0yMEMxNDUuMiAzMjYuMSAxOTYuMyAyODggMjU2IDI4OHMxMTAuOCAzOC4xIDEyNy4zIDkxLjNjMi42IDguNC0yLjEgMTcuNC0xMC41IDIwcy0xNy40LTIuMS0yMC0xMC41QzM0MC41IDM0OS40IDMwMi4xIDMyMCAyNTYgMzIwcy04NC41IDI5LjQtOTYuNyA2OC43ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW1hY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTk2LTExMmgtOFYzNjBsNTUuMyAwYy0zLjggMjIuNy0yMy42IDQwLTQ3LjMgNDB6bTQ3LjMtNTZMMzQ0IDM0NFYzMDRoOGMyMy44IDAgNDMuNSAxNy4zIDQ3LjMgNDB6TTMyOCAzNDRIMjY0VjMwNGg2NHY0MHptMCA1NkgyNjRWMzYwaDY0djQwem0tODAtOTZ2NDBsLTY0IDBWMzA0aDY0em0wIDU2djQwSDE4NFYzNjBsNjQgMHptLTgwLTE2SDExMi43YzMuOC0yMi43IDIzLjYtNDAgNDcuMy00MGg4djQwem0wIDU2aC04Yy0yMy44IDAtNDMuNS0xNy4zLTQ3LjMtNDBIMTY4djQwek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5CZWFtU3dlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc2LjggMTI2LjNjLTQuMSAxLjEtOC40IDEuNy0xMi44IDEuN2MtMjYuNSAwLTQ4LTIxLTQ4LTQ3YzAtNSAxLjgtMTEuMyA0LjYtMTguMWMuMy0uNyAuNi0xLjQgLjktMi4xYzktMjAuMiAyNi41LTQ0LjkgMzYtNTcuNWMzLjItNC40IDkuNi00LjQgMTIuOCAwQzQ4My40IDIwLjYgNTEyIDYxIDUxMiA4MWMwIDIxLjctMTQuOSAzOS44LTM1LjIgNDUuM3pNMjU2IDBjNTEuNCAwIDk5LjMgMTUuMiAxMzkuNCA0MS4yYy0xLjUgMy4xLTMgNi4yLTQuMyA5LjNjLTMuNCA4LTcuMSAxOS03LjEgMzAuNWMwIDQ0LjMgMzYuNiA3OSA4MCA3OWM5LjYgMCAxOC44LTEuNyAyNy40LTQuOGMxMy4zIDMwLjkgMjAuNiA2NSAyMC42IDEwMC44YzAgMTQxLjQtMTE0LjYgMjU2LTI1NiAyNTZTMCAzOTcuNCAwIDI1NlMxMTQuNiAwIDI1NiAwek0zODguMSAzMTIuOGMtMzkuNyAxMi4yLTg0LjUgMTktMTMxLjggMTlzLTkyLjEtNi44LTEzMS44LTE5Yy0xMi4zLTMuOC0yNC4zIDYuOS0xOS4zIDE4LjdjMjUgNTkuMSA4My4yIDEwMC41IDE1MS4xIDEwMC41czEyNi4yLTQxLjQgMTUxLjEtMTAwLjVjNS0xMS44LTctMjIuNS0xOS4zLTE4Ljd6bS0xNzAuNS04NGwwIDAgMCAwYzIuMSAyLjggNS43IDMuOSA4LjkgMi44czUuNS00LjEgNS41LTcuNmMwLTE3LjktNi43LTM1LjYtMTYuNi00OC44Yy05LjgtMTMtMjMuOS0yMy4yLTM5LjQtMjMuMnMtMjkuNiAxMC4yLTM5LjQgMjMuMkMxMjYuNyAxODguNCAxMjAgMjA2LjEgMTIwIDIyNGMwIDMuNCAyLjIgNi41IDUuNSA3LjZzNi45IDAgOC45LTIuOGwwIDAgMCAwIDAgMCAuMi0uMmMuMi0uMiAuNC0uNSAuNy0uOWMuNi0uOCAxLjYtMiAyLjgtMy40YzIuNS0yLjggNi02LjYgMTAuMi0xMC4zYzguOC03LjggMTguOC0xNCAyNy43LTE0czE4LjkgNi4yIDI3LjcgMTRjNC4yIDMuNyA3LjcgNy41IDEwLjIgMTAuM2MxLjIgMS40IDIuMiAyLjYgMi44IDMuNGMuMyAuNCAuNiAuNyAuNyAuOWwuMiAuMiAwIDAgMCAwem0xNjAgMGwwIDAgMCAwIDAgMGMyLjEgMi44IDUuNyAzLjkgOC45IDIuOHM1LjUtNC4xIDUuNS03LjZjMC0xNy45LTYuNy0zNS42LTE2LjYtNDguOGMtOS44LTEzLTIzLjktMjMuMi0zOS40LTIzLjJzLTI5LjYgMTAuMi0zOS40IDIzLjJDMjg2LjcgMTg4LjQgMjgwIDIwNi4xIDI4MCAyMjRjMCAzLjQgMi4yIDYuNSA1LjUgNy42czYuOSAwIDguOS0yLjhsMCAwIDAgMCAwIDAgLjItLjJjLjItLjIgLjQtLjUgLjctLjljLjYtLjggMS42LTIgMi44LTMuNGMyLjUtMi44IDYtNi42IDEwLjItMTAuM2M4LjgtNy44IDE4LjgtMTQgMjcuNy0xNHMxOC45IDYuMiAyNy43IDE0YzQuMiAzLjcgNy43IDcuNSAxMC4yIDEwLjNjMS4yIDEuNCAyLjIgMi42IDIuOCAzLjRjLjMgLjQgLjYgLjcgLjcgLjlsLjIgLjIgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpbkJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM4OC4xIDMxMi44YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN0MzODIuNCAzOTAuNiAzMjQuMiA0MzIgMjU2LjMgNDMycy0xMjYuMi00MS40LTE1MS4xLTEwMC41Yy01LTExLjggNy0yMi41IDE5LjMtMTguN2MzOS43IDEyLjIgODQuNSAxOSAxMzEuOCAxOXM5Mi4xLTYuOCAxMzEuOC0xOXptLTE3MC41LTg0bDAgMCAwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDB6bTE2MCAwbDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMCAwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluSGVhcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6TTE5OS4zIDEyOS4xYzE3LjggNC44IDI4LjQgMjMuMSAyMy42IDQwLjhsLTE3LjQgNjVjLTIuMyA4LjUtMTEuMSAxMy42LTE5LjYgMTEuM2wtNjUuMS0xNy40Yy0xNy44LTQuOC0yOC40LTIzLjEtMjMuNi00MC44czIzLjEtMjguNCA0MC44LTIzLjZsMTYuMSA0LjMgNC4zLTE2LjFjNC44LTE3LjggMjMuMS0yOC40IDQwLjgtMjMuNnptMTU0LjMgMjMuNmw0LjMgMTYuMSAxNi4xLTQuM2MxNy44LTQuOCAzNi4xIDUuOCA0MC44IDIzLjZzLTUuOCAzNi4xLTIzLjYgNDAuOGwtNjUuMSAxNy40Yy04LjUgMi4zLTE3LjMtMi44LTE5LjYtMTEuM2wtMTcuNC02NWMtNC44LTE3LjggNS44LTM2LjEgMjMuNi00MC44czM2LjEgNS44IDQwLjkgMjMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5TcXVpbnRUZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjYuOCAxNC4yQzQ0Ni01IDQ3Ny41LTQuNiA0OTcuMSAxNC45czIwIDUxIC43IDcwLjNjLTYuOCA2LjgtMjEuNCAxMi40LTM3LjQgMTYuN2MtMTYuMyA0LjQtMzQuMSA3LjUtNDYuMyA5LjNjLTEuNiAuMi0zLjEgLjUtNC42IC42Yy01LjYgLjktMTAuMy0zLjktOS41LTkuNWMxLjYtMTEuMiA0LjYtMjkuNiA5LTQ3Yy4zLTEuMyAuNy0yLjYgMS0zLjljNC4zLTE1LjkgOS44LTMwLjUgMTYuNy0zNy40em0tNDQuNyAxOWMtMS41IDQuOC0yLjkgOS42LTQuMSAxNC4zYy00LjggMTguOS04IDM4LjUtOS43IDUwLjNjLTQgMjYuOCAxOC45IDQ5LjcgNDUuNyA0NS44YzExLjktMS42IDMxLjUtNC44IDUwLjQtOS43YzQuNy0xLjIgOS41LTIuNSAxNC4zLTQuMUM1MzQuMiAyMjcuNSA1MjAuMiAzNTMuOCA0MzcgNDM3Yy04My4yIDgzLjItMjA5LjUgOTcuMi0zMDcuMiA0MS44YzEuNS00LjggMi44LTkuNiA0LTE0LjNjNC44LTE4LjkgOC0zOC41IDkuNy01MC4zYzQtMjYuOC0xOC45LTQ5LjctNDUuNy00NS44Yy0xMS45IDEuNi0zMS41IDQuOC01MC40IDkuN2MtNC43IDEuMi05LjUgMi41LTE0LjMgNC4xQy0yMi4yIDI4NC41LTguMiAxNTguMiA3NSA3NUMxNTguMi04LjMgMjg0LjUtMjIuMiAzODIuMiAzMy4yek01MS41IDQxMC4xYzE4LjUtNSAzOC44LTguMyA1MC45LTEwYzUuNi0uOSAxMC4zIDMuOSA5LjUgOS41Yy0xLjcgMTIuMS01IDMyLjQtMTAgNTAuOUM5Ny42IDQ3Ni40IDkyIDQ5MSA4NS4yIDQ5Ny44QzY2IDUxNyAzNC41IDUxNi42IDE0LjkgNDk3LjFzLTIwLTUxLS43LTcwLjNjNi44LTYuOCAyMS40LTEyLjQgMzcuNC0xNi43ek00MTYuNCAyMDIuM2MtNC44LTExLjktMjAuOS0xMC45LTI2LjkgLjRjLTE5LjQgMzYuNy00Ni4zIDczLjItNzkuOCAxMDYuN3MtNzAgNjAuMy0xMDYuNyA3OS44Yy0xMS4zIDYtMTIuMyAyMi4xLS40IDI2LjljNTkuNCAyNC4xIDEyOS45IDEyLjIgMTc3LjktMzUuOHM1OS45LTExOC41IDM1LjgtMTc3Ljl6TTg3LjEgMjg1LjFjMiAyIDQuNiAzLjIgNy4zIDMuNGw1Ni4xIDUuMSA1LjEgNTYuMWMuMyAyLjggMS41IDUuNCAzLjQgNy4zYzYuMyA2LjMgMTcuMiAzLjYgMTkuOC00LjlsMjkuNy05Ny40YzMuNS0xMS42LTcuMy0yMi41LTE5LTE5TDkyIDI2NS4zYy04LjYgMi42LTExLjMgMTMuNC00LjkgMTkuOHpNMjY1LjMgOTJsLTI5LjcgOTcuNGMtMy41IDExLjYgNy4zIDIyLjUgMTkgMTlsOTcuNC0yOS43YzguNi0yLjYgMTEuMy0xMy40IDQuOS0xOS44Yy0yLTItNC42LTMuMi03LjMtMy40bC01Ni4xLTUuMS01LjEtNTYuMWMtLjMtMi44LTEuNS01LjQtMy40LTcuM2MtNi4zLTYuMy0xNy4yLTMuNi0xOS44IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5TcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM4OC4xIDMxMi44YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN0MzODIuNCAzOTAuNiAzMjQuMiA0MzIgMjU2LjMgNDMycy0xMjYuMi00MS40LTE1MS4xLTEwMC41Yy01LTExLjggNy0yMi41IDE5LjMtMTguN2MzOS43IDEyLjIgODQuNSAxOSAxMzEuOCAxOXM5Mi4xLTYuOCAxMzEuOC0xOXpNMTMzLjUgMTQ2LjdsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42YzAtOSA5LjYtMTQuNyAxNy41LTEwLjV6TTM5NiAxNTcuMWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5TdGFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTQwNy40IDc1LjVjNS0xMS44LTctMjIuNS0xOS4zLTE4LjdjLTM5LjcgMTIuMi04NC41IDE5LTEzMS44IDE5cy05Mi4xLTYuOC0xMzEuOC0xOWMtMTIuMy0zLjgtMjQuMyA2LjktMTkuMyAxOC43YzI1IDU5LjEgODMuMiAxMDAuNSAxNTEuMSAxMDAuNXMxMjYuMi00MS40IDE1MS4xLTEwMC41ek0xNjAgMTIwYy0zLjEgMC01LjkgMS44LTcuMiA0LjZsLTE2LjYgMzQuNy0zOC4xIDVjLTMuMSAuNC01LjYgMi41LTYuNiA1LjVzLS4xIDYuMiAyLjEgOC4zbDI3LjkgMjYuNS03IDM3LjhjLS42IDMgLjcgNi4xIDMuMiA3LjlzNS44IDIgOC41IC42TDE2MCAyMzIuNWwzMy44IDE4LjNjMi43IDEuNSA2IDEuMyA4LjUtLjZzMy43LTQuOSAzLjItNy45bC03LTM3LjhMMjI2LjQgMTc4YzIuMi0yLjEgMy4xLTUuMyAyLjEtOC4zcy0zLjUtNS4xLTYuNi01LjVsLTM4LjEtNS0xNi42LTM0LjdjLTEuMy0yLjgtNC4xLTQuNi03LjItNC42em0xOTIgMGMtMy4xIDAtNS45IDEuOC03LjIgNC42bC0xNi42IDM0LjctMzguMSA1Yy0zLjEgLjQtNS42IDIuNS02LjYgNS41cy0uMSA2LjIgMi4xIDguM2wyNy45IDI2LjUtNyAzNy44Yy0uNiAzIC43IDYuMSAzLjIgNy45czUuOCAyIDguNSAuNkwzNTIgMjMyLjVsMzMuOCAxOC4zYzIuNyAxLjUgNiAxLjMgOC41LS42czMuNy00LjkgMy4yLTcuOWwtNy0zNy44TDQxOC40IDE3OGMyLjItMi4xIDMuMS01LjMgMi4xLTguM3MtMy41LTUuMS02LjYtNS41bC0zOC4xLTUtMTYuNi0zNC43Yy0xLjMtMi44LTQuMS00LjYtNy4yLTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5UZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDguNiAzNzEuNEM1MDYuNCA0NTQuOCA0MTkuOSA1MTIgMzIwIDUxMnMtMTg2LjQtNTcuMi0yMjguNi0xNDAuNmM0LjUtMi45IDguNy02LjMgMTIuNy0xMC4zYzguMS04LjEgMTMuMi0xOC42IDE2LjUtMjYuNmMzLjYtOC44IDYuNS0xOC40IDguOC0yNy41YzQuNi0xOC4yIDcuNy0zNyA5LjMtNDguMmMzLjktMjYuNS0xOC44LTQ5LjItNDUuMi00NS40Yy02LjggLjktMTYuMiAyLjQtMjYuNiA0LjRDODUuMyA5NC41IDE5MS42IDAgMzIwIDBTNTU0LjcgOTQuNSA1NzMuMiAyMTcuN2MtMTAuMy0yLTE5LjgtMy41LTI2LjYtNC40Yy0yNi41LTMuOS00OS4yIDE4LjgtNDUuMiA0NS40YzEuNiAxMS4zIDQuNiAzMCA5LjMgNDguMmMyLjMgOS4xIDUuMiAxOC44IDguOCAyNy41YzMuMyA4LjEgOC40IDE4LjUgMTYuNSAyNi42YzMuOSAzLjkgOC4yIDcuNCAxMi43IDEwLjN6TTEwNyAyNTQuMWMtMy4xIDIxLjUtMTEuNCA3MC4yLTI1LjUgODQuNGMtLjkgMS0xLjkgMS44LTIuOSAyLjdDNjAgMzU2LjcgMzIgMzU1LjUgMTQuMyAzMzcuN2MtMTguNy0xOC43LTE5LjEtNDguOC0uNy02Ny4yYzguNi04LjYgMzAuMS0xNS4xIDUwLjUtMTkuNmMxMy0yLjggMjUuNS00LjggMzMuOS02YzUuNC0uOCA5LjkgMy43IDkgOXptNDU0LjUgODcuMWMtLjgtLjYtMS41LTEuMy0yLjMtMmMtLjItLjItLjUtLjQtLjctLjdjLTE0LjEtMTQuMS0yMi41LTYyLjktMjUuNS04NC40Yy0uOC01LjQgMy43LTkuOSA5LTljMSAuMSAyLjIgLjMgMy4zIC41YzguMiAxLjIgMTkuMiAzIDMwLjYgNS41YzIwLjQgNC40IDQxLjkgMTAuOSA1MC41IDE5LjZjMTguNCAxOC40IDE4IDQ4LjUtLjcgNjcuMmMtMTcuNyAxNy43LTQ1LjcgMTktNjQuMiAzLjR6bS05MC4xLTkuN2M1LTExLjgtNy0yMi41LTE5LjMtMTguN2MtMzkuNyAxMi4yLTg0LjUgMTktMTMxLjggMTlzLTkyLjEtNi44LTEzMS44LTE5Yy0xMi4zLTMuOC0yNC4zIDYuOS0xOS4zIDE4LjdjMjUgNTkuMSA4My4yIDEwMC41IDE1MS4xIDEwMC41czEyNi4yLTQxLjQgMTUxLjEtMTAwLjV6TTI4MS42IDIyOC44bDAgMCAwIDAgMCAwYzIuMSAyLjggNS43IDMuOSA4LjkgMi44czUuNS00LjEgNS41LTcuNmMwLTE3LjktNi43LTM1LjYtMTYuNi00OC44Yy05LjgtMTMtMjMuOS0yMy4yLTM5LjQtMjMuMnMtMjkuNiAxMC4yLTM5LjQgMjMuMkMxOTAuNyAxODguNCAxODQgMjA2LjEgMTg0IDIyNGMwIDMuNCAyLjIgNi41IDUuNSA3LjZzNi45IDAgOC45LTIuOGwwIDAgMCAwIDAgMCAuMi0uMmMuMi0uMiAuNC0uNSAuNy0uOWMuNi0uOCAxLjYtMiAyLjgtMy40YzIuNS0yLjggNi02LjYgMTAuMi0xMC4zYzguOC03LjggMTguOC0xNCAyNy43LTE0czE4LjkgNi4yIDI3LjcgMTRjNC4yIDMuNyA3LjcgNy41IDEwLjIgMTAuM2MxLjIgMS40IDIuMiAyLjYgMi44IDMuNGMuMyAuNCAuNiAuNyAuNyAuOWwuMiAuMiAwIDB6bTE2MCAwbDAgMCAwIDBjMi4xIDIuOCA1LjcgMy45IDguOSAyLjhzNS41LTQuMSA1LjUtNy42YzAtMTcuOS02LjctMzUuNi0xNi42LTQ4LjhjLTkuOC0xMy0yMy45LTIzLjItMzkuNC0yMy4ycy0yOS42IDEwLjItMzkuNCAyMy4yQzM1MC43IDE4OC40IDM0NCAyMDYuMSAzNDQgMjI0YzAgMy40IDIuMiA2LjUgNS41IDcuNnM2LjkgMCA4LjktMi44bDAgMCAwIDAgMCAwIC4yLS4yYy4yLS4yIC40LS41IC43LS45Yy42LS44IDEuNi0yIDIuOC0zLjRjMi41LTIuOCA2LTYuNiAxMC4yLTEwLjNjOC44LTcuOCAxOC44LTE0IDI3LjctMTRzMTguOSA2LjIgMjcuNyAxNGM0LjIgMy43IDcuNyA3LjUgMTAuMiAxMC4zYzEuMiAxLjQgMi4yIDIuNiAyLjggMy40Yy4zIC40IC42IC43IC43IC45bC4yIC4yIDAgMCAwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluVG9uZ3VlU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2QzAgMzY4LjkgNzMuMSA0NjQuNyAxNzQuNSA0OTguOEMxNjUuMyA0ODQgMTYwIDQ2Ni42IDE2MCA0NDhWNDAwLjdjLTI0LTE3LjUtNDMuMS00MS40LTU0LjgtNjkuMmMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTljMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43Yy0xMS44IDI4LTMxLjEgNTItNTUuNCA2OS42VjQ0OGMwIDE4LjYtNS4zIDM2LTE0LjUgNTAuOEM0MzguOSA0NjQuNyA1MTIgMzY4LjkgNTEyIDI1NkM1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMFMwIDExNC42IDAgMjU2ek0xMTYgMTQxLjFjMC05IDkuNi0xNC43IDE3LjUtMTAuNWw4OS45IDQ3LjljMTAuNyA1LjcgMTAuNyAyMS4xIDAgMjYuOGwtODkuOSA0Ny45Yy03LjkgNC4yLTE3LjUtMS41LTE3LjUtMTAuNWMwLTIuOCAxLTUuNSAyLjgtNy42bDM2LTQzLjItMzYtNDMuMmMtMS44LTIuMS0yLjgtNC44LTIuOC03LjZ6bTI2Mi41LTEwLjVjNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjVjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3Ljl6TTMyMCA0NDhWNDAyLjZjMC0xNC43LTExLjktMjYuNi0yNi42LTI2LjZoLTJjLTExLjMgMC0yMS4xIDcuOS0yMy42IDE4LjljLTIuOCAxMi42LTIwLjggMTIuNi0yMy42IDBjLTIuNS0xMS4xLTEyLjMtMTguOS0yMy42LTE4LjloLTJjLTE0LjcgMC0yNi42IDExLjktMjYuNiAyNi42VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpblRvbmd1ZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc0LjUgNDk4LjhDNzMuMSA0NjQuNyAwIDM2OC45IDAgMjU2QzAgMTE0LjYgMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NmMwIDExMi45LTczLjEgMjA4LjctMTc0LjUgMjQyLjhDMzQ2LjcgNDg0IDM1MiA0NjYuNiAzNTIgNDQ4VjQwMS4xYzI0LjMtMTcuNSA0My42LTQxLjYgNTUuNC02OS42YzUtMTEuOC03LTIyLjUtMTkuMy0xOC43Yy0zOS43IDEyLjItODQuNSAxOS0xMzEuOCAxOXMtOTIuMS02LjgtMTMxLjgtMTljLTEyLjMtMy44LTI0LjMgNi45LTE5LjMgMTguN2MxMS43IDI3LjggMzAuOCA1MS43IDU0LjggNjkuMlY0NDhjMCAxOC42IDUuMyAzNiAxNC41IDUwLjh6bTIwLjctMjY1LjJjNS4zIDcuMSAxNS4zIDguNSAyMi40IDMuMnM4LjUtMTUuMyAzLjItMjIuNGMtMzAuNC00MC41LTkxLjItNDAuNS0xMjEuNiAwYy01LjMgNy4xLTMuOSAxNy4xIDMuMiAyMi40czE3LjEgMy45IDIyLjQtMy4yYzE3LjYtMjMuNSA1Mi44LTIzLjUgNzAuNCAwek0zMzYgMjcyYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek0zMjAgNDAyLjZWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0VjQwMi42YzAtMTQuNyAxMS45LTI2LjYgMjYuNi0yNi42aDJjMTEuMyAwIDIxLjEgNy45IDIzLjYgMTguOWMyLjggMTIuNiAyMC44IDEyLjYgMjMuNiAwYzIuNS0xMS4xIDEyLjMtMTguOSAyMy42LTE4LjloMmMxNC43IDAgMjYuNiAxMS45IDI2LjYgMjYuNnpNMzM2IDE4NGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluVG9uZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2QzAgMzY4LjkgNzMuMSA0NjQuNyAxNzQuNSA0OTguOEMxNjUuMyA0ODQgMTYwIDQ2Ni42IDE2MCA0NDhWNDAwLjdjLTI0LTE3LjUtNDMuMS00MS40LTU0LjgtNjkuMmMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTljMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43Yy0xMS44IDI4LTMxLjEgNTItNTUuNCA2OS42VjQ0OGMwIDE4LjYtNS4zIDM2LTE0LjUgNTAuOEM0MzguOSA0NjQuNyA1MTIgMzY4LjkgNTEyIDI1NkM1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMFMwIDExNC42IDAgMjU2em0xNzYuNC04MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0zMjAgNDQ4VjQwMi42YzAtMTQuNy0xMS45LTI2LjYtMjYuNi0yNi42aC0yYy0xMS4zIDAtMjEuMSA3LjktMjMuNiAxOC45Yy0yLjggMTIuNi0yMC44IDEyLjYtMjMuNiAwYy0yLjUtMTEuMS0xMi4zLTE4LjktMjMuNi0xOC45aC0yYy0xNC43IDAtMjYuNiAxMS45LTI2LjYgMjYuNlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5XaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6TTIwOCAxOTJjMCAzNS4zLTE0LjMgNjQtMzIgNjRzLTMyLTI4LjctMzItNjRzMTQuMy02NCAzMi02NHMzMiAyOC43IDMyIDY0em0xMjggNjRjLTE3LjcgMC0zMi0yOC43LTMyLTY0czE0LjMtNjQgMzItNjRzMzIgMjguNyAzMiA2NHMtMTQuMyA2NC0zMiA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5XaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6bS0xNi45LTc5LjJjLTE3LjYtMjMuNS01Mi44LTIzLjUtNzAuNCAwYy01LjMgNy4xLTE1LjMgOC41LTIyLjQgMy4ycy04LjUtMTUuMy0zLjItMjIuNGMzMC40LTQwLjUgOTEuMi00MC41IDEyMS42IDBjNS4zIDcuMSAzLjkgMTcuMS0zLjIgMjIuNHMtMTcuMSAzLjktMjIuNC0zLjJ6TTE3Ni40IDE3NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlS2lzc0JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTQ4LjctMTk4LjNjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNzQuNyA0NDMuMSAyNTcuNCA0NDggMjQwIDQ0OGMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xYy0uNC0uMi0uNy0uNC0uOS0uNWwtLjItLjEgMCAwIDAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03bDAgMCAwIDAgMCAwIDAgMCAwIDAgLjItLjEgLjMtLjIgLjYtLjRjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFsLS40LS4zLS41LS4zLS4yLS4xIDAgMCAwIDAgMCAwYy0zLjItMS44LTQuNy01LjUtMy44LTlzNC4xLTYgNy43LTZjMTcuNCAwIDM0LjcgNC45IDQ3LjkgMTIuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNHptLTg3LjEtODQuOWwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlS2lzc1dpbmtIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTggMzM5LjdjOS4xLTI2LjIgMTQtNTQuNCAxNC04My43QzUxMiAxMTQuNiAzOTcuNCAwIDI1NiAwUzAgMTE0LjYgMCAyNTZTMTE0LjYgNTEyIDI1NiA1MTJjMzUuNCAwIDY5LjEtNy4yIDk5LjctMjAuMmMtNC44LTUuNS04LjUtMTIuMi0xMC40LTE5LjdsLTIyLjktODkuM2MtMTAtMzkgMTEuOC04MC45IDUxLjgtOTIuMWMzNy4yLTEwLjQgNzMuOCAxMC4xIDg3LjUgNDRjMTIuNy0xLjYgMjUuMSAuNCAzNi4yIDV6TTI5NiAzMzJjMCA2LjktMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNTguNyA0NDMuMSAyNDEuNCA0NDggMjI0IDQ0OGMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xbC0uNi0uNC0uMy0uMi0uMi0uMSAwIDAgMCAwIDAgMGMtMi41LTEuNC00LjEtNC4xLTQuMS03czEuNi01LjYgNC4xLTdsMCAwIDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWMtLjQtLjItLjctLjQtLjktLjVsLS4yLS4xIDAgMCAwIDAgMCAwYy0zLjItMS44LTQuNy01LjUtMy44LTlzNC4xLTYgNy43LTZjMTcuNCAwIDM0LjcgNC45IDQ3LjkgMTIuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNGM0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zek0xNzYuNCAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xOTQuOCA1Ny42Yy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMGMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yek00MzQgMzUyLjNjLTYtMjMuMi0yOC44LTM3LTUxLjEtMzAuOHMtMzUuNCAzMC4xLTI5LjUgNTMuNGwyMi45IDg5LjNjMi4yIDguNyAxMS4yIDEzLjkgMTkuOCAxMS40bDg0LjktMjMuOGMyMi4yLTYuMiAzNS40LTMwLjEgMjkuNS01My40cy0yOC44LTM3LTUxLjEtMzAuOGwtMjAuMiA1LjYtNS40LTIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlS2lzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptNDguNy0xOTguM2M0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRjLTIuNyAxLjUtNS43IDMtOC43IDQuM2MzLjEgMS4zIDYgMi43IDguNyA0LjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjRjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40QzI3NC43IDQ0My4xIDI1Ny40IDQ0OCAyNDAgNDQ4Yy0zLjYgMC02LjgtMi41LTcuNy02cy42LTcuMiAzLjgtOWwwIDAgMCAwIDAgMCAwIDAgLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFjLS40LS4yLS43LS40LS45LS41bC0uMi0uMSAwIDAgMCAwIDAgMGMtMi41LTEuNC00LjEtNC4xLTQuMS03czEuNi01LjYgNC4xLTdsMCAwIDAgMCAwIDAgMCAwIDAgMCAuMi0uMSAuMy0uMiAuNi0uNGMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWwtLjQtLjMtLjUtLjMtLjItLjEgMCAwIDAgMCAwIDBjLTMuMi0xLjgtNC43LTUuNS0zLjgtOXM0LjEtNiA3LjctNmMxNy40IDAgMzQuNyA0LjkgNDcuOSAxMi4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUxhdWdoQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNOTYuOCAzMTQuMWMtMy44LTEzLjcgNy40LTI2LjEgMjEuNi0yNi4xSDM5My42YzE0LjIgMCAyNS41IDEyLjQgMjEuNiAyNi4xQzM5Ni4yIDM4MiAzMzIuMSA0MzIgMjU2IDQzMnMtMTQwLjItNTAtMTU5LjItMTE3Ljl6TTIxNy42IDIxMi44bDAgMCAwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDB6bTE2MCAwbDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMCAwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VMYXVnaFNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNOTYuOCAzMTQuMWMtMy44LTEzLjcgNy40LTI2LjEgMjEuNi0yNi4xSDM5My42YzE0LjIgMCAyNS41IDEyLjQgMjEuNiAyNi4xQzM5Ni4yIDM4MiAzMzIuMSA0MzIgMjU2IDQzMnMtMTQwLjItNTAtMTU5LjItMTE3Ljl6bTM2LjctMTk5LjRsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42YzAtOSA5LjYtMTQuNyAxNy41LTEwLjV6TTM5NiAxMjUuMWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUxhdWdoV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNOTYuOCAzMTQuMWMtMy44LTEzLjcgNy40LTI2LjEgMjEuNi0yNi4xSDM5My42YzE0LjIgMCAyNS41IDEyLjQgMjEuNiAyNi4xQzM5Ni4yIDM4MiAzMzIuMSA0MzIgMjU2IDQzMnMtMTQwLjItNTAtMTU5LjItMTE3Ljl6TTE0NC40IDE5MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xNTYuNCAyNS42Yy01LjMgNy4xLTE1LjMgOC41LTIyLjQgMy4ycy04LjUtMTUuMy0zLjItMjIuNGMzMC40LTQwLjUgOTEuMi00MC41IDEyMS42IDBjNS4zIDcuMSAzLjkgMTcuMS0zLjIgMjIuNHMtMTcuMSAzLjktMjIuNC0zLjJjLTE3LjYtMjMuNS01Mi44LTIzLjUtNzAuNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlTGF1Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45ek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZU1laEJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMjA4LjQtNDhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTI4IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZU1laCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTc2LjQgMTc2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTE2MCAzMzZIMzUyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE2MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVJvbGxpbmdFeWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xOTIgMzY4SDMyMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxOTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTMyLTE0NGMwIDM1LjMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NGMwLTI2IDE1LjUtNDguNCAzNy44LTU4LjRjLTMuNyA1LjItNS44IDExLjYtNS44IDE4LjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTYuOS0yLjItMTMuMi01LjgtMTguNEMyMDguNSAxNzUuNiAyMjQgMTk4IDIyNCAyMjR6bTEyOCA2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0yNiAxNS41LTQ4LjQgMzcuOC01OC40Yy0zLjcgNS4yLTUuOCAxMS42LTUuOCAxOC40YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC02LjktMi4yLTEzLjItNS44LTE4LjRDNDAwLjUgMTc1LjYgNDE2IDE5OCA0MTYgMjI0YzAgMzUuMy0yOC43IDY0LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlU2FkQ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA0OTMuNGMtMjkuNiAxMi02Mi4xIDE4LjYtOTYgMTguNnMtNjYuNC02LjYtOTYtMTguNlYyODhjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWNDc3LjhDNTEuNSA0MzMuNSAwIDM1MC44IDAgMjU2QzAgMTE0LjYgMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NmMwIDk0LjgtNTEuNSAxNzcuNS0xMjggMjIxLjhWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ5My40ek0xOTUuMiAyMzMuNmM1LjMgNy4xIDE1LjMgOC41IDIyLjQgMy4yczguNS0xNS4zIDMuMi0yMi40Yy0zMC40LTQwLjUtOTEuMi00MC41LTEyMS42IDBjLTUuMyA3LjEtMy45IDE3LjEgMy4yIDIyLjRzMTcuMSAzLjkgMjIuNC0zLjJjMTcuNi0yMy41IDUyLjgtMjMuNSA3MC40IDB6bTEyMS42IDBjMTcuNi0yMy41IDUyLjgtMjMuNSA3MC40IDBjNS4zIDcuMSAxNS4zIDguNSAyMi40IDMuMnM4LjUtMTUuMyAzLjItMjIuNGMtMzAuNC00MC41LTkxLjItNDAuNS0xMjEuNiAwYy01LjMgNy4xLTMuOSAxNy4xIDMuMiAyMi40czE3LjEgMy45IDIyLjQtMy4yek0yMDggMzM2djMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhWMzM2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlU2FkVGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwQTI1NiAyNTYgMCAxIDAgMCAyNTZ6bTI0MCA4MGMwLTguOCA3LjItMTYgMTYtMTZjNDUgMCA4NS42IDIwLjUgMTE1LjcgNTMuMWM2IDYuNSA1LjYgMTYuNi0uOSAyMi42cy0xNi42IDUuNi0yMi42LS45Yy0yNS0yNy4xLTU3LjQtNDIuOS05Mi4zLTQyLjljLTguOCAwLTE2LTcuMi0xNi0xNnptLTgwIDgwYy0yNi41IDAtNDgtMjEtNDgtNDdjMC0yMCAyOC42LTYwLjQgNDEuNi03Ny43YzMuMi00LjQgOS42LTQuNCAxMi44IDBDMTc5LjYgMzA4LjYgMjA4IDM0OSAyMDggMzY5YzAgMjYtMjEuNSA0Ny00OCA0N3pNMzY3LjYgMjA4YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bS0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlU21pbGVCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjQuMSAzMjUuNUMxODIgMzQ2LjIgMjEyLjYgMzY4IDI1NiAzNjhzNzQtMjEuOCA5MS45LTQyLjVjNS44LTYuNyAxNS45LTcuNCAyMi42LTEuNnM3LjQgMTUuOSAxLjYgMjIuNkMzNDkuOCAzNzIuMSAzMTEuMSA0MDAgMjU2IDQwMHMtOTMuOC0yNy45LTExNi4xLTUzLjVjLTUuOC02LjctNS4xLTE2LjggMS42LTIyLjZzMTYuOC01LjEgMjIuNiAxLjZ6bTUzLjUtOTYuN2wwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlU21pbGVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjQuMSAzMjUuNUMxODIgMzQ2LjIgMjEyLjYgMzY4IDI1NiAzNjhzNzQtMjEuOCA5MS45LTQyLjVjNS44LTYuNyAxNS45LTcuNCAyMi42LTEuNnM3LjQgMTUuOSAxLjYgMjIuNkMzNDkuOCAzNzIuMSAzMTEuMSA0MDAgMjU2IDQwMHMtOTMuOC0yNy45LTExNi4xLTUzLjVjLTUuOC02LjctNS4xLTE2LjggMS42LTIyLjZzMTYuOC01LjEgMjIuNiAxLjZ6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xNTYuNCAyNS42Yy01LjMgNy4xLTE1LjMgOC41LTIyLjQgMy4ycy04LjUtMTUuMy0zLjItMjIuNGMzMC40LTQwLjUgOTEuMi00MC41IDEyMS42IDBjNS4zIDcuMSAzLjkgMTcuMS0zLjIgMjIuNHMtMTcuMSAzLjktMjIuNC0zLjJjLTE3LjYtMjMuNS01Mi44LTIzLjUtNzAuNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlU21pbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2NC4xIDMyNS41QzE4MiAzNDYuMiAyMTIuNiAzNjggMjU2IDM2OHM3NC0yMS44IDkxLjktNDIuNWM1LjgtNi43IDE1LjktNy40IDIyLjYtMS42czcuNCAxNS45IDEuNiAyMi42QzM0OS44IDM3Mi4xIDMxMS4xIDQwMCAyNTYgNDAwcy05My44LTI3LjktMTE2LjEtNTMuNWMtNS44LTYuNy01LjEtMTYuOCAxLjYtMjIuNnMxNi44LTUuMSAyMi42IDEuNnpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VTdXJwcmlzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTc2LjQgMTc2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTI1NiAyODhhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VUaXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY0LjcgMzI4LjdjMjItMjIgNTMuOS00MC43IDkxLjMtNDAuN3M2OS4zIDE4LjcgOTEuMyA0MC43YzExLjEgMTEuMSAyMC4xIDIzLjQgMjYuNCAzNS40YzYuMiAxMS43IDEwLjMgMjQuNCAxMC4zIDM1LjljMCA1LjItMi42IDEwLjItNi45IDEzLjJzLTkuOCAzLjctMTQuNyAxLjhsLTIwLjUtNy43Yy0yNi45LTEwLjEtNTUuNS0xNS4zLTg0LjMtMTUuM2gtMy4yYy0yOC44IDAtNTcuMyA1LjItODQuMyAxNS4zTDE0OS42IDQxNWMtNC45IDEuOC0xMC40IDEuMi0xNC43LTEuOHMtNi45LTcuOS02LjktMTMuMmMwLTExLjYgNC4yLTI0LjIgMTAuMy0zNS45YzYuMy0xMiAxNS4zLTI0LjMgMjYuNC0zNS40em0tMzEuMi0xODJsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42YzAtOSA5LjYtMTQuNyAxNy41LTEwLjV6TTM5NiAxNTcuMWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1OC42IDBjLTEuNyAwLTMuNCAuMS01LjEgLjVDMTY4IDE3IDExNS42IDEwMi4zIDEzMC41IDE4OS4zYzIuOSAxNyA4LjQgMzIuOSAxNS45IDQ3LjRMMzIgMjI0SDI5LjRDMTMuMiAyMjQgMCAyMzcuMiAwIDI1My40YzAgMS43IC4xIDMuNCAuNSA1LjFDMTcgMzQ0IDEwMi4zIDM5Ni40IDE4OS4zIDM4MS41YzE3LTIuOSAzMi45LTguNCA0Ny40LTE1LjlMMjI0IDQ4MHYyLjZjMCAxNi4yIDEzLjIgMjkuNCAyOS40IDI5LjRjMS43IDAgMy40LS4xIDUuMS0uNUMzNDQgNDk1IDM5Ni40IDQwOS43IDM4MS41IDMyMi43Yy0yLjktMTctOC40LTMyLjktMTUuOS00Ny40TDQ4MCAyODhoMi42YzE2LjIgMCAyOS40LTEzLjIgMjkuNC0yOS40YzAtMS43LS4xLTMuNC0uNS01LjFDNDk1IDE2OCA0MDkuNyAxMTUuNiAzMjIuNyAxMzAuNWMtMTcgMi45LTMyLjkgOC40LTQ3LjQgMTUuOUwyODggMzJWMjkuNEMyODggMTMuMiAyNzQuOCAwIDI1OC42IDB6TTI1NiAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXVjZXREcmlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ0bDk2LTEyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDI1NiA4NGwtMzEtMy45LTEtLjEtMSAuMUwxOTIgODQgOTYgOTZDNzguMyA5NiA2NCA4MS43IDY0IDY0czE0LjMtMzIgMzItMzJsOTYgMTJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2bDIyLjYtMjIuNmM2LTYgMTQuMS05LjQgMjIuNi05LjRIMTkyVjExNi4ybDMyLTQgMzIgNFYxNjBoMTguN2M4LjUgMCAxNi42IDMuNCAyMi42IDkuNEwzMjAgMTkyaDMyYzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDQxNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzLTE0LjMtMzItMzItMzJIMzE1LjljLTIwLjIgMjktNTMuOSA0OC05MS45IDQ4cy03MS43LTE5LTkxLjktNDhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjIyNHpNNDM2LjggNDIzLjRjMS45LTQuNSA2LjMtNy40IDExLjItNy40czkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ2LTEuMmMwLTQuNSAuOS04LjkgMi43LTEzLjFsMTguMi00Mi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXVjZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDk2djEyTDk2IDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2LTEyIDMxLTMuOSAxLS4xIDEgLjEgMzEgMy45IDk2IDEyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC05NiAxMlY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpNMzIgMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgxMzIuMWMyMC4yIDI5IDUzLjkgNDggOTEuOSA0OHM3MS43LTE5IDkxLjktNDhIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMyczE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC04OC40LTcxLjYtMTYwLTE2MC0xNjBIMzIwbC0yMi42LTIyLjZjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgyNTZWMTgwLjJsLTMyLTQtMzIgNFYyMjRIMTczLjNjLTguNSAwLTE2LjYgMy40LTIyLjYgOS40TDEyOCAyNTZIMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZheCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNjR2OTZoNjRWNjRIMzg2LjdMNDE2IDkzLjNWMTYwaDY0VjkzLjNjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNDMyIDE4LjdDNDIwIDYuNyA0MDMuNyAwIDM4Ni43IDBIMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHpNMCAxNjBWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTQ4MCAzMkgxMjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI1NiAyNTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em05NiAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0zMiA5NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTIyNCA0MTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVhdGhlclBvaW50ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc4LjUgMjE1LjZMMjMgNDcxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNzQuOC03NC44YzcuNCA0LjYgMTUuMyA4LjIgMjMuOCAxMC41QzIwMC4zIDQ1Mi44IDI3MCA0NTQuNSAzMzggNDA5LjRjMTIuMi04LjEgNS44LTI1LjQtOC44LTI1LjRsLTE2LjEgMGMtNS4xIDAtOS4yLTQuMS05LjItOS4yYzAtNC4xIDIuNy03LjYgNi41LTguOGw5Ny43LTI5LjNjMy40LTEgNi40LTMuMSA4LjQtNi4xYzQuNC02LjQgOC42LTEyLjkgMTIuNi0xOS42YzYuMi0xMC4zLTEuNS0yMy0xMy41LTIzbC0zOC42IDBjLTUuMSAwLTkuMi00LjEtOS4yLTkuMmMwLTQuMSAyLjctNy42IDYuNS04LjhsODAuOS0yNC4zYzQuNi0xLjQgOC40LTQuOCAxMC4yLTkuM0M0OTQuNSAxNjMgNTA3LjggODYuMSA1MTEuOSAzNi44Yy44LTkuOS0zLTE5LjYtMTAtMjYuNnMtMTYuNy0xMC44LTI2LjYtMTBDMzkxLjUgNyAyMjguNSA0MC41IDEzNy40IDEzMS42QzU3LjMgMjExLjcgNTYuNyAzMDIuMyA3MS4zIDM1Ni40YzIuMSA3LjkgMTIgOS42IDE3LjggMy44TDI1My42IDE5NS44YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwYzUuNCA1LjQgNi4xIDEzLjYgMi4yIDE5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlYXRoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc4LjUgMjE1LjZMMjMgNDcxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNTctNTdoNjhjNDkuNyAwIDk3LjktMTQuNCAxMzktNDFjMTEuMS03LjIgNS41LTIzLTcuOC0yM2MtNS4xIDAtOS4yLTQuMS05LjItOS4yYzAtNC4xIDIuNy03LjYgNi41LTguOGw4MS0yNC4zYzIuNS0uOCA0LjgtMi4xIDYuNy00bDIyLjQtMjIuNGMxMC4xLTEwLjEgMi45LTI3LjMtMTEuMy0yNy4zbC0zMi4yIDBjLTUuMSAwLTkuMi00LjEtOS4yLTkuMmMwLTQuMSAyLjctNy42IDYuNS04LjhsMTEyLTMzLjZjNC0xLjIgNy40LTMuOSA5LjMtNy43QzUwNi40IDIwNy42IDUxMiAxODQuMSA1MTIgMTYwYzAtNDEtMTYuMy04MC4zLTQ1LjMtMTA5LjNsLTUuNS01LjVDNDMyLjMgMTYuMyAzOTMgMCAzNTIgMHMtODAuMyAxNi4zLTEwOS4zIDQ1LjNMMTM5IDE0OUM5MSAxOTcgNjQgMjYyLjEgNjQgMzMwdjU1LjNMMjUzLjYgMTk1LjhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBjNS40IDUuNCA2LjEgMTMuNiAyLjIgMTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMyaDc1LjFjMjAuNiAwIDMxLjYgMjQuMyAxOC4xIDM5LjhMNDU2IDk2SDEyMEw5OC44IDcxLjhDODUuMyA1Ni4zIDk2LjMgMzIgMTE2LjkgMzJIMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek05NiAxMjhINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjI4My41YzAgMTMuMy00LjIgMjYuMy0xMS45IDM3LjJsLTUxLjQgNzEuOWMtMS45IDEuMS0zLjcgMi4yLTUuNSAzLjVjLTE1LjUgMTAuNy0zNCAxOC01MSAxOS45SDM3NS42Yy0xNy4xLTEuOC0zNS05LTUwLjgtMTkuOWMtMjIuMS0xNS41LTUxLjYtMTUuNS03My43IDBjLTE0LjggMTAuMi0zMi41IDE4LTUwLjYgMTkuOUgxODMuOWMtMTctMS44LTM1LjYtOS4yLTUxLTE5LjljLTEuOC0xLjMtMy43LTIuNC01LjYtMy41TDc1LjkgMzIwLjdDNjguMiAzMDkuOCA2NCAyOTYuOCA2NCAyODMuNVYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTMyIDY0djk2SDQ0OFYxOTJIMTI4ek0zMDYuNSA0MjEuOUMzMjkgNDM3LjQgMzU2LjUgNDQ4IDM4NCA0NDhjMjYuOSAwIDU1LjMtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNTAxLjcgNDE3IDUxMiAzODQgNTEyYy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2wwIDBDMTM2LjcgNDM3LjIgMTY1LjEgNDQ4IDE5MiA0NDhjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xYzExLjEtNy45IDI1LjktNy45IDM3IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0yMTYgMjMyVjMzNC4xbDMxLTMxYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNzIgNzJjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC03Mi03MmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDMxIDMxVjIzMmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTIxNiA0MDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzA1LjlsLTMxIDMxYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDcyLTcyYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDcyIDcyYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTMxLTMxVjQwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUF1ZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHptMiAyMjYuM2MzNy4xIDIyLjQgNjIgNjMuMSA2MiAxMDkuN3MtMjQuOSA4Ny4zLTYyIDEwOS43Yy03LjYgNC42LTE3LjQgMi4xLTIyLTUuNHMtMi4xLTE3LjQgNS40LTIyQzI2OS40IDQwMS41IDI4OCAzNzAuOSAyODggMzM2cy0xOC42LTY1LjUtNDYuNS04Mi4zYy03LjYtNC42LTEwLTE0LjQtNS40LTIyczE0LjQtMTAgMjItNS40em0tOTEuOSAzMC45YzYgMi41IDkuOSA4LjMgOS45IDE0LjhWNDAwYzAgNi41LTMuOSAxMi4zLTkuOSAxNC44cy0xMi45IDEuMS0xNy40LTMuNUwxMTMuNCAzNzZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYzMTJjMC04LjggNy4yLTE2IDE2LTE2aDMzLjRsMzUuMy0zNS4zYzQuNi00LjYgMTEuNS01LjkgMTcuNC0zLjV6bTUxIDM0LjljNi42LTUuOSAxNi43LTUuMyAyMi42IDEuM0MyNDkuOCAzMDQuNiAyNTYgMzE5LjYgMjU2IDMzNnMtNi4yIDMxLjQtMTYuMyA0Mi43Yy01LjkgNi42LTE2IDcuMS0yMi42IDEuM3MtNy4xLTE2LTEuMy0yMi42YzUuMS01LjcgOC4xLTEzLjEgOC4xLTIxLjNzLTMuMS0xNS43LTguMS0yMS4zYy01LjktNi42LTUuMy0xNi43IDEuMy0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4ek0yODggMzY4YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIxMS4zLTQzLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDQxNiAzODUuNGwtMjguNy0yOC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDQwIDQwYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDcyLTcyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em00OCA5NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMC0xOTJjLTguOCAwLTE2IDcuMi0xNiAxNnY4MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjI4OGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDaXJjbGVNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NHYzOC42QzMxMC4xIDIxOS41IDI1NiAyODcuNCAyNTYgMzY4YzAgNTkuMSAyOS4xIDExMS4zIDczLjcgMTQzLjNjLTMuMiAuNS02LjQgLjctOS43IC43SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptMzg0IDY0SDI1NlYwTDM4NCAxMjh6TTI4OCAzNjhhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjI0IDBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0OTZjOC44IDAgMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ2lyY2xlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NHYzOC42QzMxMC4xIDIxOS41IDI1NiAyODcuNCAyNTYgMzY4YzAgNTkuMSAyOS4xIDExMS4zIDczLjcgMTQzLjNjLTMuMiAuNS02LjQgLjctOS43IC43SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptMzg0IDY0SDI1NlYwTDM4NCAxMjh6bTQ4IDk2YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMTYgODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDhIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzg0aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDQ0OFYzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDaXJjbGVRdWVzdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NHYzOC42QzMxMC4xIDIxOS41IDI1NiAyODcuNCAyNTYgMzY4YzAgNTkuMSAyOS4xIDExMS4zIDczLjcgMTQzLjNjLTMuMiAuNS02LjQgLjctOS43IC43SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptMzg0IDY0SDI1NlYwTDM4NCAxMjh6bTQ4IDk2YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4ek0zNjggMzIxLjZWMzI4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZ2LTYuNGMwLTUuMyA0LjMtOS42IDkuNi05LjZoNDAuNWM3LjcgMCAxMy45IDYuMiAxMy45IDEzLjljMCA1LjItMi45IDkuOS03LjQgMTIuM2wtMzIgMTYuOGMtNS4zIDIuOC04LjYgOC4yLTguNiAxNC4yVjM4NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2di01LjFsMjMuNS0xMi4zYzE1LjEtNy45IDI0LjUtMjMuNiAyNC41LTQwLjZjMC0yNS40LTIwLjYtNDUuOS00NS45LTQ1LjlINDA5LjZjLTIzIDAtNDEuNiAxOC42LTQxLjYgNDEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djM4LjZDMzEwLjEgMjE5LjUgMjU2IDI4Ny40IDI1NiAzNjhjMCA1OS4xIDI5LjEgMTExLjMgNzMuNyAxNDMuM2MtMy4yIC41LTYuNCAuNy05LjcgLjdINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHptNDggOTZhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em01OS4zIDEwNy4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDMyIDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDA5LjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0MzIgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0NTQuNiAzNjhsMzYuNy0zNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTE1MyAyODlsLTMxIDMxIDMxIDMxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBMNzEgMzM3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw0OC00OGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6TTI2NSAyNTVsNDggNDhjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTQ4IDQ4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDMxLTMxLTMxLTMxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDb250cmFjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTgwIDY0aDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0aDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em01NC4yIDI1My44Yy02LjEgMjAuMy0yNC44IDM0LjItNDYgMzQuMkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4LjJjNy4xIDAgMTMuMy00LjYgMTUuMy0xMS40bDE0LjktNDkuNWMzLjQtMTEuMyAxMy44LTE5LjEgMjUuNi0xOS4xczIyLjIgNy43IDI1LjYgMTkuMWwxMS42IDM4LjZjNy40LTYuMiAxNi44LTkuNyAyNi44LTkuN2MxNS45IDAgMzAuNCA5IDM3LjUgMjMuMmw0LjQgOC44SDMwNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNDBjLTYuMSAwLTExLjYtMy40LTE0LjMtOC44bC04LjgtMTcuN2MtMS43LTMuNC01LjEtNS41LTguOC01LjVzLTcuMiAyLjEtOC44IDUuNWwtOC44IDE3LjdjLTIuOSA1LjktOS4yIDkuNC0xNS43IDguOHMtMTIuMS01LjEtMTMuOS0xMS4zTDE0NCAzNDlsLTkuOCAzMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ3N2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0VjMwNEgxNzZjLTM1LjMgMC02NCAyOC43LTY0IDY0VjUxMkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4ek0yMDAgMzUyaDE2YzIyLjEgMCA0MCAxNy45IDQwIDQwdjhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZ2LThjMC00LjQtMy42LTgtOC04SDIwMGMtNC40IDAtOCAzLjYtOCA4djgwYzAgNC40IDMuNiA4IDggOGgxNmM0LjQgMCA4LTMuNiA4LTh2LThjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY4YzAgMjIuMS0xNy45IDQwLTQwIDQwSDIwMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBWMzkyYzAtMjIuMSAxNy45LTQwIDQwLTQwem0xMzMuMSAwSDM2OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzMzMuMWMtNy4yIDAtMTMuMSA1LjktMTMuMSAxMy4xYzAgNS4yIDMgOS45IDcuOCAxMmwzNy40IDE2LjZjMTYuMyA3LjIgMjYuOCAyMy40IDI2LjggNDEuMmMwIDI0LjktMjAuMiA0NS4xLTQ1LjEgNDUuMUgzMDRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNDIuOWM3LjIgMCAxMy4xLTUuOSAxMy4xLTEzLjFjMC01LjItMy05LjktNy44LTEybC0zNy40LTE2LjZjLTE2LjMtNy4yLTI2LjgtMjMuNC0yNi44LTQxLjJjMC0yNC45IDIwLjItNDUuMSA0NS4xLTQ1LjF6bTk4LjkgMGM4LjggMCAxNiA3LjIgMTYgMTZ2MzEuNmMwIDIzIDUuNSA0NS42IDE2IDY2YzEwLjUtMjAuMyAxNi00Mi45IDE2LTY2VjM2OGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMxLjZjMCAzNC43LTEwLjMgNjguNy0yOS42IDk3LjZsLTUuMSA3LjdjLTMgNC41LTggNy4xLTEzLjMgNy4xcy0xMC4zLTIuNy0xMy4zLTcuMWwtNS4xLTcuN2MtMTkuMy0yOC45LTI5LjYtNjIuOS0yOS42LTk3LjZWMzY4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUV4Y2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTU1LjcgMjUwLjJMMTkyIDMwMi4xbDM2LjMtNTEuOWM3LjYtMTAuOSAyMi42LTEzLjUgMzMuNC01LjlzMTMuNSAyMi42IDUuOSAzMy40TDIyMS4zIDM0NGw0Ni40IDY2LjJjNy42IDEwLjkgNSAyNS44LTUuOSAzMy40cy0yNS44IDUtMzMuNC01LjlMMTkyIDM4NS44bC0zNi4zIDUxLjljLTcuNiAxMC45LTIyLjYgMTMuNS0zMy40IDUuOXMtMTMuNS0yMi42LTUuOS0zMy40TDE2Mi43IDM0NGwtNDYuNC02Ni4yYy03LjYtMTAuOS01LTI1LjggNS45LTMzLjRzMjUuOC01IDMzLjQgNS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlRXhwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0VjI4OEgyMTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzg0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTM4NCAzMzZWMjg4SDQ5NC4xbC0zOS0zOWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDgwIDgwYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC04MCA4MGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzOS0zOUgzODR6bTAtMjA4SDI1NlYwTDM4NCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTY0IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xNTIgMzJjNS4zIDAgMTAuMiAyLjYgMTMuMiA2LjlsODggMTI4YzMuNCA0LjkgMy43IDExLjMgMSAxNi41cy04LjIgOC42LTE0LjIgOC42SDIxNiAxNzYgMTI4IDgwYy01LjggMC0xMS4xLTMuMS0xMy45LTguMXMtMi44LTExLjIgLjItMTYuMWw0OC04MGMyLjktNC44IDguMS03LjggMTMuNy03LjhzMTAuOCAyLjkgMTMuNyA3LjhsMTIuOCAyMS40IDQ4LjMtNzAuMmMzLTQuMyA3LjktNi45IDEzLjItNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlSW1wb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCA2NGMwLTM1LjMgMjguNy02NCA2NC02NEgzNTJWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDUxMlY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMTkyYy0zNS4zIDAtNjQtMjguNy02NC02NFYzMzZIMzAyLjFsLTM5IDM5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsODAtODBjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTgwLTgwYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDM5IDM5SDEyOFY2NHptMCAyMjR2NDhIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMTI4ek01MTIgMTI4SDM4NFYwTDUxMiAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVJbnZvaWNlRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNNjQgODBjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZ6bTAgNjRjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZ6bTEyOCA3MmM4LjggMCAxNiA3LjIgMTYgMTZ2MTcuM2M4LjUgMS4yIDE2LjcgMy4xIDI0LjEgNS4xYzguNSAyLjMgMTMuNiAxMSAxMS4zIDE5LjZzLTExIDEzLjYtMTkuNiAxMS4zYy0xMS4xLTMtMjItNS4yLTMyLjEtNS4zYy04LjQtLjEtMTcuNCAxLjgtMjMuNiA1LjVjLTUuNyAzLjQtOC4xIDcuMy04LjEgMTIuOGMwIDMuNyAxLjMgNi41IDcuMyAxMC4xYzYuOSA0LjEgMTYuNiA3LjEgMjkuMiAxMC45bC41IC4xIDAgMCAwIDBjMTEuMyAzLjQgMjUuMyA3LjYgMzYuMyAxNC42YzEyLjEgNy42IDIyLjQgMTkuNyAyMi43IDM4LjJjLjMgMTkuMy05LjYgMzMuMy0yMi45IDQxLjZjLTcuNyA0LjgtMTYuNCA3LjYtMjUuMSA5LjFWNDQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjQyMi4yYy0xMS4yLTIuMS0yMS43LTUuNy0zMC45LTguOWwwIDAgMCAwYy0yLjEtLjctNC4yLTEuNC02LjItMi4xYy04LjQtMi44LTEyLjktMTEuOS0xMC4xLTIwLjJzMTEuOS0xMi45IDIwLjItMTAuMWMyLjUgLjggNC44IDEuNiA3LjEgMi40bDAgMCAwIDAgMCAwYzEzLjYgNC42IDI0LjYgOC40IDM2LjMgOC43YzkuMSAuMyAxNy45LTEuNyAyMy43LTUuM2M1LjEtMy4yIDcuOS03LjMgNy44LTE0Yy0uMS00LjYtMS44LTcuOC03LjctMTEuNmMtNi44LTQuMy0xNi41LTcuNC0yOS0xMS4ybC0xLjYtLjUgMCAwYy0xMS0zLjMtMjQuMy03LjMtMzQuOC0xMy43Yy0xMi03LjItMjIuNi0xOC45LTIyLjctMzcuM2MtLjEtMTkuNCAxMC44LTMyLjggMjMuOC00MC41YzcuNS00LjQgMTUuOC03LjIgMjQuMS04LjdWMjMyYzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUludm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek04MCA2NGg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NGg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMTYgOTZIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTAgMzJ2NjRIMjg4VjI1Nkg5NnpNMjQwIDQxNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVMaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTExMiAyNTZIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTYwIDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjI0djQ4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYzNTJIMTEyYy04LjggMC0xNi03LjItMTYtMTZWMzA0YzAtOC44IDcuMi0xNiAxNi0xNmg0OFYyNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVQZGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMjI0IDBsMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDAgMCAxNDQtMjA4IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgMTQ0LTQ4IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTM4NCA2NGwtMTI4IDBMMjU2IDAgMzg0IDEyOHpNMTc2IDM1MmwzMiAwYzMwLjkgMCA1NiAyNS4xIDU2IDU2cy0yNS4xIDU2LTU2IDU2bC0xNiAwIDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC00OCAwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnptMzIgODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE2IDAgMCA0OCAxNiAwem05Ni04MGwzMiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNjRjMCAyNi41LTIxLjUgNDgtNDggNDhsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTEyOGMwLTguOCA3LjItMTYgMTYtMTZ6bTMyIDEyOGM4LjggMCAxNi03LjIgMTYtMTZsMC02NGMwLTguOC03LjItMTYtMTYtMTZsLTE2IDAgMCA5NiAxNiAwem04MC0xMTJjMC04LjggNy4yLTE2IDE2LTE2bDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTMyIDAgMCAzMiAzMiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwIDAgNDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC02NCAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0VjI5OS42bC05NC43IDk0LjdjLTguMiA4LjItMTQgMTguNS0xNi44IDI5LjdsLTE1IDYwLjFjLTIuMyA5LjQtMS44IDE5IDEuNCAyNy44SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptMzg0IDY0SDI1NlYwTDM4NCAxMjh6TTU0OS44IDIzNS43bDE0LjQgMTQuNGMxNS42IDE1LjYgMTUuNiA0MC45IDAgNTYuNmwtMjkuNCAyOS40LTcxLTcxIDI5LjQtMjkuNGMxNS42LTE1LjYgNDAuOS0xNS42IDU2LjYgMHpNMzExLjkgNDE3TDQ0MS4xIDI4Ny44bDcxIDcxTDM4Mi45IDQ4Ny45Yy00LjEgNC4xLTkuMiA3LTE0LjkgOC40bC02MC4xIDE1Yy01LjUgMS40LTExLjItLjItMTUuMi00LjJzLTUuNi05LjctNC4yLTE1LjJsMTUtNjAuMWMxLjQtNS42IDQuMy0xMC44IDguNC0xNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUG93ZXJwb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTEzNiAyNDBoNjhjNDIgMCA3NiAzNCA3NiA3NnMtMzQgNzYtNzYgNzZIMTYwdjMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM2OCAyNjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTY4IDEwNGMxNS41IDAgMjgtMTIuNSAyOC0yOHMtMTIuNS0yOC0yOC0yOEgxNjB2NTZoNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVQcmVzY3JpcHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xMDQgMTk2aDcyYzMzLjEgMCA2MCAyNi45IDYwIDYwYzAgMjUuNS0xNS45IDQ3LjItMzguMyA1NS45bDQzIDQwLjMgMzMuOC0zMWM4LjEtNy41IDIwLjgtNi45IDI4LjMgMS4yczYuOSAyMC44LTEuMiAyOC4zTDI3MCAzNzkuN2wzMS43IDI5LjdjOC4xIDcuNiA4LjUgMjAuMiAuOSAyOC4zcy0yMC4yIDguNS0yOC4zIC45bC0zMy45LTMxLjgtMzQuOSAzMmMtOC4xIDcuNS0yMC44IDYuOS0yOC4zLTEuMnMtNi45LTIwLjggMS4yLTI4LjNsMzIuNi0yOS45LTY0LjgtNjAuOGMtLjktLjgtMS42LTEuNy0yLjMtMi42SDEyNHY0NGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBWMjk2IDIxNmMwLTExIDktMjAgMjAtMjB6bTcyIDgwYzExIDAgMjAtOSAyMC0yMHMtOS0yMC0yMC0yMEgxMjR2NDBoNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2NDdsLTkyLjggMzcuMWMtMjEuMyA4LjUtMzUuMiAyOS4xLTM1LjIgNTJjMCA1Ni42IDE4LjkgMTQ4IDk0LjIgMjA4LjNjLTkgNC44LTE5LjMgNy42LTMwLjIgNy42SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptMzg0IDY0SDI1NlYwTDM4NCAxMjh6bTM5LjEgOTcuN2M1LjctMi4zIDEyLjEtMi4zIDE3LjggMGwxMjAgNDhDNTcwIDI3Ny40IDU3NiAyODYuMiA1NzYgMjk2YzAgNjMuMy0yNS45IDE2OC44LTEzNC44IDIxNC4yYy01LjkgMi41LTEyLjYgMi41LTE4LjUgMEMzMTMuOSA0NjQuOCAyODggMzU5LjMgMjg4IDI5NmMwLTkuOCA2LTE4LjYgMTUuMS0yMi4zbDEyMC00OHpNNTI3LjQgMzEyTDQzMiAyNzMuOFY0NjEuN2M2OC4yLTMzIDkxLjUtOTkgOTUuNC0xNDkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVNpZ25hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjQyOC43Yy0yLjcgMS4xLTUuNCAyLTguMiAyLjdsLTYwLjEgMTVjLTMgLjctNiAxLjItOSAxLjRjLS45IC4xLTEuOCAuMi0yLjcgLjJIMjQwYy02LjEgMC0xMS42LTMuNC0xNC4zLTguOGwtOC44LTE3LjdjLTEuNy0zLjQtNS4xLTUuNS04LjgtNS41cy03LjIgMi4xLTguOCA1LjVsLTguOCAxNy43Yy0yLjkgNS45LTkuMiA5LjQtMTUuNyA4LjhzLTEyLjEtNS4xLTEzLjktMTEuM0wxNDQgMzgxbC05LjggMzIuOGMtNi4xIDIwLjMtMjQuOCAzNC4yLTQ2IDM0LjJIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoOC4yYzcuMSAwIDEzLjMtNC42IDE1LjMtMTEuNGwxNC45LTQ5LjVjMy40LTExLjMgMTMuOC0xOS4xIDI1LjYtMTkuMXMyMi4yIDcuOCAyNS42IDE5LjFsMTEuNiAzOC42YzcuNC02LjIgMTYuOC05LjcgMjYuOC05LjdjMTUuOSAwIDMwLjQgOSAzNy41IDIzLjJsNC40IDguOGg4LjljLTMuMS04LjgtMy43LTE4LjQtMS40LTI3LjhsMTUtNjAuMWMyLjgtMTEuMyA4LjYtMjEuNSAxNi44LTI5LjdMMzg0IDIwMy42VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTU0OS44IDEzOS43Yy0xNS42LTE1LjYtNDAuOS0xNS42LTU2LjYgMGwtMjkuNCAyOS40IDcxIDcxIDI5LjQtMjkuNGMxNS42LTE1LjYgMTUuNi00MC45IDAtNTYuNmwtMTQuNC0xNC40ek0zMTEuOSAzMjFjLTQuMSA0LjEtNyA5LjItOC40IDE0LjlsLTE1IDYwLjFjLTEuNCA1LjUgLjIgMTEuMiA0LjIgMTUuMnM5LjcgNS42IDE1LjIgNC4ybDYwLjEtMTVjNS42LTEuNCAxMC44LTQuMyAxNC45LTguNEw1MTIuMSAyNjIuN2wtNzEtNzFMMzExLjkgMzIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek02NCAyODhjMC0xNy43IDE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI4OHpNMzAwLjkgMzk3LjlMMjU2IDM2OFYzMDRsNDQuOS0yOS45YzItMS4zIDQuNC0yLjEgNi44LTIuMWM2LjggMCAxMi4zIDUuNSAxMi4zIDEyLjNWMzg3LjdjMCA2LjgtNS41IDEyLjMtMTIuMyAxMi4zYy0yLjQgMC00LjgtLjctNi44LTIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVdhdmVmb3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNjAuNyAwIDMyIDI4LjcgMzIgNjRWMjg4SDE0NGM2LjEgMCAxMS42IDMuNCAxNC4zIDguOEwxNzYgMzMyLjJsNDkuNy05OS40YzIuNy01LjQgOC4zLTguOCAxNC4zLTguOHMxMS42IDMuNCAxNC4zIDguOEwyODEuOSAyODhIMzUyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDI3MmMtNi4xIDAtMTEuNi0zLjQtMTQuMy04LjhMMjQwIDI3NS44bC00OS43IDk5LjRjLTIuNyA1LjQtOC4zIDguOC0xNC4zIDguOHMtMTEuNi0zLjQtMTQuMy04LjhMMTM0LjEgMzIwSDMyVjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg5NnpNMjg4IDBWMTI4SDQxNkwyODggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVdvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xMTEgMjU3LjFsMjYuOCA4OS4yIDMxLjYtOTAuM2MzLjQtOS42IDEyLjUtMTYuMSAyMi43LTE2LjFzMTkuMyA2LjQgMjIuNyAxNi4xbDMxLjYgOTAuM0wyNzMgMjU3LjFjMy44LTEyLjcgMTcuMi0xOS45IDI5LjktMTYuMXMxOS45IDE3LjIgMTYuMSAyOS45bC00OCAxNjBjLTMgMTAtMTIgMTYuOS0yMi40IDE3LjFzLTE5LjgtNi4yLTIzLjItMTYuMUwxOTIgMzM2LjZsLTMzLjMgOTUuM2MtMy40IDkuOC0xMi44IDE2LjMtMjMuMiAxNi4xcy0xOS41LTcuMS0yMi40LTE3LjFsLTQ4LTE2MGMtMy44LTEyLjcgMy40LTI2LjEgMTYuMS0yOS45czI2LjEgMy40IDI5LjkgMTYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVppcHBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTk2IDQ4YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnptMCA2NGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZ6bTAgNjRjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2em0tNi4zIDcxLjhjMy43LTE0IDE2LjQtMjMuOCAzMC45LTIzLjhoMTQuOGMxNC41IDAgMjcuMiA5LjcgMzAuOSAyMy44bDIzLjUgODguMmMxLjQgNS40IDIuMSAxMC45IDIuMSAxNi40YzAgMzUuMi0yOC44IDYzLjctNjQgNjMuN3MtNjQtMjguNS02NC02My43YzAtNS41IC43LTExLjEgMi4xLTE2LjRsMjMuNS04OC4yek0xMTIgMzM2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDExMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsbERyaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEuNCA5LjRDNTMuOS0zLjEgNzQuMS0zLjEgODYuNiA5LjRMMTY4IDkwLjdsNTMuMS01My4xYzI4LjEtMjguMSA3My43LTI4LjEgMTAxLjggMEw0NzQuMyAxODkuMWMyOC4xIDI4LjEgMjguMSA3My43IDAgMTAxLjhMMjgzLjkgNDgxLjRjLTM3LjUgMzcuNS05OC4zIDM3LjUtMTM1LjggMEwzMC42IDM2My45Yy0zNy41LTM3LjUtMzcuNS05OC4zIDAtMTM1LjhMMTIyLjcgMTM2IDQxLjQgNTQuNmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjN6bTE3NiAyMjEuM0wxNjggMTgxLjMgNzUuOSAyNzMuNGMtNC4yIDQuMi03IDkuMy04LjQgMTQuNkgzODYuN2w0Mi4zLTQyLjNjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM0wyNzcuNyA4Mi45Yy0zLjEtMy4xLTguMi0zLjEtMTEuMyAwTDIxMy4zIDEzNmw0OS40IDQ5LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDB6TTUxMiA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjUuMiAzMi42LTc5LjYgNTEuMi0xMDguN2M2LTkuNCAxOS41LTkuNCAyNS41IDBDNTQzLjQgMzY4LjQgNTc2IDQyMi44IDU3NiA0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODYuNiA5LjRDNzQuMS0zLjEgNTMuOS0zLjEgNDEuNCA5LjRzLTEyLjUgMzIuOCAwIDQ1LjNMMTIyLjcgMTM2IDMwLjYgMjI4LjFjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOEwxNDguMSA0ODEuNGMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBMNDc0LjMgMjkwLjljMjguMS0yOC4xIDI4LjEtNzMuNyAwLTEwMS44TDMyMi45IDM3LjdjLTI4LjEtMjguMS03My43LTI4LjEtMTAxLjggMEwxNjggOTAuNyA4Ni42IDkuNHpNMTY4IDE4MS4zbDQ5LjQgNDkuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDIxMy4zIDEzNmw1My4xLTUzLjFjMy4xLTMuMSA4LjItMy4xIDExLjMgMEw0MjkuMSAyMzQuM2MzLjEgMy4xIDMuMSA4LjIgMCAxMS4zTDM4Ni43IDI4OEg2Ny41YzEuNC01LjQgNC4yLTEwLjQgOC40LTE0LjZMMTY4IDE4MS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTQ4IDM2OHYzMmMwIDguOCA3LjIgMTYgMTYgMTZIOTZjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZINjRjLTguOCAwLTE2IDcuMi0xNiAxNnptMzY4LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDQxNnpNNDggMjQwdjMyYzAgOC44IDcuMiAxNiAxNiAxNkg5NmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2em0zNjgtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZINDE2ek00OCAxMTJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2SDk2YzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDY0Yy04LjggMC0xNiA3LjItMTYgMTZ6TTQxNiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkg0MTZ6TTE2MCAxMjh2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWx0ZXJDaXJjbGVEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy45IDIyLjlDMTAuNSA4LjkgMjQuNSAwIDQwIDBINDcyYzE1LjUgMCAyOS41IDguOSAzNi4xIDIyLjlzNC42IDMwLjUtNS4yIDQyLjVMMzk2LjQgMTk1LjZDMzE2LjIgMjEyLjEgMjU2IDI4MyAyNTYgMzY4YzAgMjcuNCA2LjMgNTMuNCAxNy41IDc2LjVjLTEuNi0uOC0zLjItMS44LTQuNy0yLjlsLTY0LTQ4Yy04LjEtNi0xMi44LTE1LjUtMTIuOC0yNS42VjI4OC45TDkgNjUuM0MtLjcgNTMuNC0yLjggMzYuOCAzLjkgMjIuOXpNMjg4IDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xMjAuOC0zMi42Yy42LS45IDEuOC0yLjEgNC4yLTMuNGM1LjEtMi43IDEyLjUtNC4xIDE4LjctNGM4LjIgLjEgMTcuMSAxLjggMjYuNCA0LjFjOC42IDIuMSAxNy4zLTMuMSAxOS40LTExLjdzLTMuMS0xNy4zLTExLjctMTkuNGMtNS42LTEuNC0xMS42LTIuNy0xNy45LTMuN1YyODhjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2OS41Yy02LjEgMS4yLTEyLjMgMy4yLTE4IDYuM2MtMTEuOCA2LjMtMjMgMTguNC0yMS44IDM3LjJjMSAxNiAxMS43IDI1LjMgMjEuNiAzMC43YzguOCA0LjcgMTkuNyA3LjggMjguNiAxMC4zbDEuOCAuNWMxMC4zIDIuOSAxNy45IDUuMiAyMy4yIDguM2M0LjUgMi43IDQuNyA0LjIgNC43IDUuNmMuMSAyLjQtLjUgMy43LTEgNC41Yy0uNiAxLTEuOCAyLjItNCAzLjNjLTQuNyAyLjUtMTEuOCAzLjgtMTguNSAzLjZjLTkuNS0uMy0xOC41LTMuMS0yOS45LTYuOGMtMS45LS42LTMuOC0xLjItNS44LTEuOGMtOC40LTIuNi0xNy40IDIuMS0yMCAxMC41czIuMSAxNy40IDEwLjUgMjBjMS42IC41IDMuMyAxIDUgMS42bDAgMCAwIDBjNyAyLjMgMTUuMSA0LjggMjMuNyA2LjZ2MTEuNGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjQzOC43YzYuMi0xLjEgMTIuNS0zLjEgMTguMy02LjJjMTIuMS02LjUgMjIuMy0xOC43IDIxLjctMzYuOWMtLjUtMTYuMi0xMC4zLTI2LjMtMjAuNS0zMi4zYy05LjQtNS42LTIxLjItOC45LTMwLjUtMTEuNWwtLjIgMGMtMTAuNC0yLjktMTguMy01LjItMjMuOS04LjJjLTQuOC0yLjYtNC44LTQtNC44LTQuNWwwLS4xYy0uMS0xLjkgLjMtMi45IC44LTMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsdGVyQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy45IDIyLjlDMTAuNSA4LjkgMjQuNSAwIDQwIDBINDcyYzE1LjUgMCAyOS41IDguOSAzNi4xIDIyLjlzNC42IDMwLjUtNS4yIDQyLjVMMzk2LjQgMTk1LjZDMzE2LjIgMjEyLjEgMjU2IDI4MyAyNTYgMzY4YzAgMjcuNCA2LjMgNTMuNCAxNy41IDc2LjVjLTEuNi0uOC0zLjItMS44LTQuNy0yLjlsLTY0LTQ4Yy04LjEtNi0xMi44LTE1LjUtMTIuOC0yNS42VjI4OC45TDkgNjUuM0MtLjcgNTMuNC0yLjggMzYuOCAzLjkgMjIuOXpNNDMyIDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTU5LjMgMTA3LjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZzLTE2LjQtNi4yLTIyLjYgMEw0MzIgMzQ1LjRsLTM2LjctMzYuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNkw0MDkuNCAzNjhsLTM2LjcgMzYuN2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwTDQzMiAzOTAuNmwzNi43IDM2LjdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42TDQ1NC42IDM2OGwzNi43LTM2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjkgNTQuOUMxMC41IDQwLjkgMjQuNSAzMiA0MCAzMkg0NzJjMTUuNSAwIDI5LjUgOC45IDM2LjEgMjIuOXM0LjYgMzAuNS01LjIgNDIuNUwzMjAgMzIwLjlWNDQ4YzAgMTIuMS02LjggMjMuMi0xNy43IDI4LjZzLTIzLjggNC4zLTMzLjUtM2wtNjQtNDhjLTguMS02LTEyLjgtMTUuNS0xMi44LTI1LjZWMzIwLjlMOSA5Ny4zQy0uNyA4NS40LTIuOCA2OC44IDMuOSA1NC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaW5nZXJwcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAyNTZDNDggMTQxLjEgMTQxLjEgNDggMjU2IDQ4YzYzLjEgMCAxMTkuNiAyOC4xIDE1Ny44IDcyLjVjOC42IDEwLjEgMjMuOCAxMS4yIDMzLjggMi42czExLjItMjMuOCAyLjYtMzMuOEM0MDMuMyAzNC42IDMzMy43IDAgMjU2IDBDMTE0LjYgMCAwIDExNC42IDAgMjU2djQwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjU2em00NTguNS01Mi45Yy0yLjctMTMtMTUuNS0yMS4zLTI4LjQtMTguNXMtMjEuMyAxNS41LTE4LjUgMjguNGMyLjkgMTMuOSA0LjUgMjguMyA0LjUgNDMuMXY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI1NmMwLTE4LjEtMS45LTM1LjgtNS41LTUyLjl6TTI1NiA4MGMtMTkgMC0zNy40IDMtNTQuNSA4LjZjLTE1LjIgNS0xOC43IDIzLjctOC4zIDM1LjljNy4xIDguMyAxOC44IDEwLjggMjkuNCA3LjljMTAuNi0yLjkgMjEuOC00LjQgMzMuNC00LjRjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjh2MjQuOWMwIDI1LjItMS41IDUwLjMtNC40IDc1LjNjLTEuNyAxNC42IDkuNCAyNy44IDI0LjIgMjcuOGMxMS44IDAgMjEuOS04LjYgMjMuMy0yMC4zYzMuMy0yNy40IDUtNTUgNS04Mi43VjI1NmMwLTk3LjItNzguOC0xNzYtMTc2LTE3NnpNMTUwLjcgMTQ4LjdjLTkuMS0xMC42LTI1LjMtMTEuNC0zMy45LS40QzkzLjcgMTc4IDgwIDIxNS40IDgwIDI1NnYyNC45YzAgMjQuMi0yLjYgNDguNC03LjggNzEuOUM2OC44IDM2OC40IDgwLjEgMzg0IDk2LjEgMzg0YzEwLjUgMCAxOS45LTcgMjIuMi0xNy4zYzYuNC0yOC4xIDkuNy01Ni44IDkuNy04NS44VjI1NmMwLTI3LjIgOC41LTUyLjQgMjIuOS03My4xYzcuMi0xMC40IDgtMjQuNi0uMi0zNC4yek0yNTYgMTYwYy01MyAwLTk2IDQzLTk2IDk2djI0LjljMCAzNS45LTQuNiA3MS41LTEzLjggMTA2LjFjLTMuOCAxNC4zIDYuNyAyOSAyMS41IDI5YzkuNSAwIDE3LjktNi4yIDIwLjQtMTUuNGMxMC41LTM5IDE1LjktNzkuMiAxNS45LTExOS43VjI1NmMwLTI4LjcgMjMuMy01MiA1Mi01MnM1MiAyMy4zIDUyIDUydjI0LjljMCAzNi4zLTMuNSA3Mi40LTEwLjQgMTA3LjljLTIuNyAxMy45IDcuNyAyNy4yIDIxLjggMjcuMmMxMC4yIDAgMTktNyAyMS0xN2M3LjctMzguOCAxMS42LTc4LjMgMTEuNi0xMTguMVYyNTZjMC01My00My05Ni05Ni05NnptMjQgOTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MjQuOWMwIDU5LjktMTEgMTE5LjMtMzIuNSAxNzUuMmwtNS45IDE1LjNjLTQuOCAxMi40IDEuNCAyNi4zIDEzLjggMzFzMjYuMy0xLjQgMzEtMTMuOGw1LjktMTUuM0MyNjcuOSA0MTEuOSAyODAgMzQ2LjcgMjgwIDI4MC45VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyZUJ1cm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDUuNyA0OC4zTDM1OCAzNC41YzUuNC02LjEgMTMuMy04LjggMjAuOS04LjljNy4yIDAgMTQuMyAyLjYgMTkuOSA3LjhjMTkuNyAxOC4zIDM5LjggNDMuMiA1NSA3MC42QzQ2OSAxMzEuMiA0ODAgMTYyLjIgNDgwIDE5Mi4yQzQ4MCAyODAuOCA0MDguNyAzNTIgMzIwIDM1MmMtODkuNiAwLTE2MC03MS4zLTE2MC0xNTkuOGMwLTM3LjMgMTYtNzMuNCAzNi44LTEwNC41YzIwLjktMzEuMyA0Ny41LTU5IDcwLjktODAuMkMyNzMuNCAyLjMgMjgwLjctLjIgMjg4IDBjMTQuMSAuMyAyMy44IDExLjQgMzIuNyAyMS42YzAgMCAwIDAgMCAwYzIgMi4zIDQgNC42IDYgNi43bDE5IDE5Ljl6TTM4NCAyNDAuMmMwLTM2LjUtMzctNzMtNTQuOC04OC40Yy01LjQtNC43LTEzLjEtNC43LTE4LjUgMEMyOTMgMTY3LjEgMjU2IDIwMy42IDI1NiAyNDAuMmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0ek0zMiAyODhjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDY0IDQ0OCAwIDAtNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJMMzIgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDAtOTZ6TTMyMCA0ODBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xNjAtMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTkyIDQ4MGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVFeHRpbmd1aXNoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwLjMgNy4zQzUwNy43IDEzLjMgNTEyIDIyLjQgNTEyIDMydjk2YzAgOS42LTQuMyAxOC43LTExLjcgMjQuN3MtMTcuMiA4LjUtMjYuNiA2LjZsLTE2MC0zMkMzMDEuNSAxMjQuOSAyOTIgMTE1LjcgMjg5IDEwNEgyMjR2MzQuOGMzNy44IDE4IDY0IDU2LjUgNjQgMTAxLjJWMzg0SDY0VjI0MGMwLTQ0LjcgMjYuMi04My4yIDY0LTEwMS4yVjExMGMtMzYuMiAxMS4xLTY2IDM2LjktODIuMyA3MC41Yy01LjggMTEuOS0yMC4yIDE2LjktMzIuMSAxMS4xUy0zLjMgMTcxLjQgMi41IDE1OS41QzI2LjcgMTA5LjggNzIuNyA3Mi42IDEyOCA2MC40VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjU2aDY1YzMtMTEuNyAxMi41LTIwLjkgMjQuNy0yMy40bDE2MC0zMmM5LjQtMS45IDE5LjEgLjYgMjYuNiA2LjZ6TTI4OCA0MTZ2MzJjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMTI4Yy0zNS4zIDAtNjQtMjguNy02NC02NFY0MTZIMjg4ek0xNzYgOTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlRmxhbWVDdXJ2ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUzLjYgMjkuOWwxNi0yMS4zQzE3My42IDMuMiAxODAgMCAxODYuNyAwQzE5OC40IDAgMjA4IDkuNiAyMDggMjEuM1Y0My41YzAgMTMuMSA1LjQgMjUuNyAxNC45IDM0LjdMMzA3LjYgMTU5QzM1Ni40IDIwNS42IDM4NCAyNzAuMiAzODQgMzM3LjdDMzg0IDQzNCAzMDYgNTEyIDIwOS43IDUxMkgxOTJDODYgNTEyIDAgNDI2IDAgMzIwdi0zLjhjMC00OC44IDE5LjQtOTUuNiA1My45LTEzMC4xbDMuNS0zLjVjNC4yLTQuMiAxMC02LjYgMTYtNi42Qzg1LjkgMTc2IDk2IDE4Ni4xIDk2IDE5OC42VjI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0di0zLjljMC0xOC03LjItMzUuMy0xOS45LTQ4bC0zOC42LTM4LjZjLTI0LTI0LTM3LjUtNTYuNy0zNy41LTkwLjdjMC0yNy43IDktNTQuOCAyNS42LTc2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVGbGFtZVNpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIuNSAyNTYuNWwtLjctMS45QzMzNy44IDE2MC44IDI4MiA3Ni41IDIwOS4xIDguNWwtMy4zLTNDMjAyLjEgMiAxOTcuMSAwIDE5MiAwcy0xMC4xIDItMTMuOCA1LjVsLTMuMyAzQzEwMiA3Ni41IDQ2LjIgMTYwLjggMTIuMiAyNTQuNmwtLjcgMS45QzMuOSAyNzcuMyAwIDI5OS40IDAgMzIxLjZDMCA0MjYuNyA4Ni44IDUxMiAxOTIgNTEyczE5Mi04NS4zIDE5Mi0xOTAuNGMwLTIyLjItMy45LTQ0LjItMTEuNS02NS4xem0tOTAuOCA0OS41YzQuMSA5LjMgNi4yIDE5LjQgNi4yIDI5LjVjMCA1My00MyA5Ni41LTk2IDk2LjVzLTk2LTQzLjUtOTYtOTYuNWMwLTEwLjEgMi4xLTIwLjMgNi4yLTI5LjVsMS45LTQuM2MxNS44LTM1LjQgMzcuOS02Ny43IDY1LjMtOTUuMWw4LjktOC45YzMuNi0zLjYgOC41LTUuNiAxMy42LTUuNnMxMCAyIDEzLjYgNS42bDguOSA4LjljMjcuNCAyNy40IDQ5LjYgNTkuNyA2NS4zIDk1LjFsMS45IDQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTkuMyA1LjRjNy44LTcuMyAxOS45LTcuMiAyNy43IC4xYzI3LjYgMjUuOSA1My41IDUzLjggNzcuNyA4NGMxMS0xNC40IDIzLjUtMzAuMSAzNy00Mi45YzcuOS03LjQgMjAuMS03LjQgMjggLjFjMzQuNiAzMyA2My45IDc2LjYgODQuNSAxMThjMjAuMyA0MC44IDMzLjggODIuNSAzMy44IDExMS45QzQ0OCA0MDQuMiAzNDguMiA1MTIgMjI0IDUxMkM5OC40IDUxMiAwIDQwNC4xIDAgMjc2LjVjMC0zOC40IDE3LjgtODUuMyA0NS40LTEzMS43QzczLjMgOTcuNyAxMTIuNyA0OC42IDE1OS4zIDUuNHpNMjI1LjcgNDE2YzI1LjMgMCA0Ny43LTcgNjguOC0yMWM0Mi4xLTI5LjQgNTMuNC04OC4yIDI4LjEtMTM0LjRjLTQuNS05LTE2LTkuNi0yMi41LTJsLTI1LjIgMjkuM2MtNi42IDcuNi0xOC41IDcuNC0yNC43LS41Yy0xNi41LTIxLTQ2LTU4LjUtNjIuOC03OS44Yy02LjMtOC0xOC4zLTguMS0yNC43LS4xYy0zMy44IDQyLjUtNTAuOCA2OS4zLTUwLjggOTkuNEMxMTIgMzc1LjQgMTYyLjYgNDE2IDIyNS43IDQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlzaEZpbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjIgMzguNGMtMTAuNi04LTI1LTguNS0zNi4zLTEuNVMyMjIgNTcuMyAyMjQuNiA3MC4zbDkuNyA0OC42Yy0xOS40IDktMzYuOSAxOS45LTUyLjQgMzEuNWMtMTUuMyAxMS41LTI5IDIzLjktNDAuNyAzNi4zTDQ4LjEgMTMyLjRjLTEyLjUtNy4zLTI4LjQtNS4zLTM4LjYgNC45Uy0zIDE2My4zIDQuMiAxNzUuOUw1MCAyNTYgNC4yIDMzNi4xYy03LjIgMTIuNi01IDI4LjQgNS4zIDM4LjZzMjYuMSAxMi4yIDM4LjYgNC45bDkzLjEtNTQuM2MxMS44IDEyLjMgMjUuNCAyNC44IDQwLjcgMzYuM2MxNS41IDExLjYgMzMgMjIuNSA1Mi40IDMxLjVsLTkuNyA0OC42Yy0yLjYgMTMgMy4xIDI2LjMgMTQuMyAzMy4zczI1LjYgNi41IDM2LjMtMS41bDc3LjYtNTguMmM1NC45LTQgMTAxLjUtMjcgMTM3LjItNTMuOGMzOS4yLTI5LjQgNjcuMi02NC43IDgxLjYtODkuNWM1LjgtOS45IDUuOC0yMi4yIDAtMzIuMWMtMTQuNC0yNC44LTQyLjUtNjAuMS04MS42LTg5LjVjLTM1LjgtMjYuOC04Mi4zLTQ5LjgtMTM3LjItNTMuOEwyNzUuMiAzOC40ek0zODQgMjU2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgwLjUgMTQxLjVDMjE5LjcgMTA4LjUgMjcyLjYgODAgMzM2IDgwczExNi4zIDI4LjUgMTU1LjUgNjEuNWMzOS4xIDMzIDY2LjkgNzIuNCA4MSA5OS44YzQuNyA5LjIgNC43IDIwLjEgMCAyOS4zYy0xNC4xIDI3LjQtNDEuOSA2Ni44LTgxIDk5LjhDNDUyLjMgNDAzLjUgMzk5LjQgNDMyIDMzNiA0MzJzLTExNi4zLTI4LjUtMTU1LjUtNjEuNWMtMTYuMi0xMy43LTMwLjUtMjguNS00Mi43LTQzLjFMNDguMSAzNzkuNmMtMTIuNSA3LjMtMjguNCA1LjMtMzguNy00LjlTLTMgMzQ4LjcgNC4yIDMzNi4xTDUwIDI1NiA0LjIgMTc1LjljLTcuMi0xMi42LTUtMjguNCA1LjMtMzguNnMyNi4xLTEyLjIgMzguNy00LjlsODkuNyA1Mi4zYzEyLjItMTQuNiAyNi41LTI5LjQgNDIuNy00My4xek00NDggMjU2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsYWdDaGVja2VyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEM0OS43IDAgNjQgMTQuMyA2NCAzMlY0OGw2OS0xNy4yYzM4LjEtOS41IDc4LjMtNS4xIDExMy41IDEyLjVjNDYuMyAyMy4yIDEwMC44IDIzLjIgMTQ3LjEgMGw5LjYtNC44QzQyMy44IDI4LjEgNDQ4IDQzLjEgNDQ4IDY2LjFWMzQ1LjhjMCAxMy4zLTguMyAyNS4zLTIwLjggMzBsLTM0LjcgMTNjLTQ2LjIgMTcuMy05Ny42IDE0LjYtMTQxLjctNy40Yy0zNy45LTE5LTgxLjMtMjMuNy0xMjIuNS0xMy40TDY0IDM4NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0MDAgMzM0IDY0IDMyQzAgMTQuMyAxNC4zIDAgMzIgMHpNNjQgMTg3LjFsNjQtMTMuOXY2NS41TDY0IDI1Mi42VjMxOGw0OC44LTEyLjJjNS4xLTEuMyAxMC4xLTIuNCAxNS4yLTMuM1YyMzguN2wzOC45LTguNGM4LjMtMS44IDE2LjctMi41IDI1LjEtMi4xbDAtNjRjMTMuNiAuNCAyNy4yIDIuNiA0MC40IDYuNGwyMy42IDYuOXY2Ni43bC00MS43LTEyLjNjLTcuMy0yLjEtMTQuOC0zLjQtMjIuMy0zLjh2NzEuNGMyMS44IDEuOSA0My4zIDYuNyA2NCAxNC40VjI0NC4ybDIyLjcgNi43YzEzLjUgNCAyNy4zIDYuNCA0MS4zIDcuNFYxOTRjLTcuOC0uOC0xNS42LTIuMy0yMy4yLTQuNWwtNDAuOC0xMnYtNjJjLTEzLTMuOC0yNS44LTguOC0zOC4yLTE1Yy04LjItNC4xLTE2LjktNy0yNS44LTguOHY3Mi40Yy0xMy0uNC0yNiAuOC0zOC43IDMuNkwxMjggMTczLjJWOThMNjQgMTE0djczLjF6TTMyMCAzMzUuN2MxNi44IDEuNSAzMy45LS43IDUwLTYuOGwxNC01LjJWMjUxLjlsLTcuOSAxLjhjLTE4LjQgNC4zLTM3LjMgNS43LTU2LjEgNC41djc3LjR6bTY0LTE0OS40VjExNS40Yy0yMC45IDYuMS00Mi40IDkuMS02NCA5LjFWMTk0YzEzLjkgMS40IDI4IC41IDQxLjctMi42bDIyLjMtNS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnVXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDNDkuNyAwIDY0IDE0LjMgNjQgMzJWNDhsNjktMTcuMmMzOC4xLTkuNSA3OC4zLTUuMSAxMTMuNSAxMi41YzQ2LjMgMjMuMiAxMDAuOCAyMy4yIDE0Ny4xIDBsOS42LTQuOEM0MjMuOCAyOC4xIDQ0OCA0My4xIDQ0OCA2Ni4xdjM2LjFsLTQ0LjcgMTYuMmMtNDIuOCAxNS42LTkwIDEzLjktMTMxLjYtNC42bC0xNi4xLTcuMmMtMjAuMy05LTQxLjgtMTQuNy02My42LTE2Ljl2MzIuMmMxNy40IDIuMSAzNC40IDYuNyA1MC42IDEzLjlsMTYuMSA3LjJjNDkuMiAyMS45IDEwNSAyMy44IDE1NS42IDUuNEw0NDggMTM2LjN2NjJsLTQ0LjcgMTYuMmMtNDIuOCAxNS42LTkwIDEzLjktMTMxLjYtNC42bC0xNi4xLTcuMmMtNDAuMi0xNy45LTg1LTIyLjUtMTI4LjEtMTMuM0w2NCAyMDMuMXYzMi43bDcwLjItMTUuMWMzNi40LTcuOCA3NC4zLTMuOSAxMDguNCAxMS4zbDE2LjEgNy4yYzQ5LjIgMjEuOSAxMDUgMjMuOCAxNTUuNiA1LjRMNDQ4IDIzMi4zdjYybC00NC43IDE2LjJjLTQyLjggMTUuNi05MCAxMy45LTEzMS42LTQuNmwtMTYuMS03LjJjLTQwLjItMTcuOS04NS0yMi41LTEyOC4xLTEzLjNMNjQgMjk5LjF2MzIuN2w3MC4yLTE1LjFjMzYuNC03LjggNzQuMy0zLjkgMTA4LjQgMTEuM2wxNi4xIDcuMmM0OS4yIDIxLjkgMTA1IDIzLjggMTU1LjYgNS40TDQ0OCAzMjguM3YzMy41YzAgMTMuMy04LjMgMjUuMy0yMC44IDMwbC0zNC43IDEzYy00Ni4yIDE3LjMtOTcuNiAxNC42LTE0MS43LTcuNGMtMzcuOS0xOS04MS4zLTIzLjctMTIyLjUtMTMuNEw2NCA0MDB2ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDE2IDM0NS41IDMxMi44IDI0OS41IDIxNi44IDE1My41IDEyMC44IDY0IDMyQzAgMTQuMyAxNC4zIDAgMzIgMHptODAgOTZBMTYgMTYgMCAxIDAgODAgOTZhMTYgMTYgMCAxIDAgMzIgMHptMzIgMGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bS0zMiA0OGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0zMiAwYTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkM2NCAxNC4zIDQ5LjcgMCAzMiAwUzAgMTQuMyAwIDMyVjY0IDM2OCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNTJsNjQuMy0xNi4xYzQxLjEtMTAuMyA4NC42LTUuNSAxMjIuNSAxMy40YzQ0LjIgMjIuMSA5NS41IDI0LjggMTQxLjcgNy40bDM0LjctMTNjMTIuNS00LjcgMjAuOC0xNi42IDIwLjgtMzBWNjYuMWMwLTIzLTI0LjItMzgtNDQuOC0yNy43bC05LjYgNC44Yy00Ni4zIDIzLjItMTAwLjggMjMuMi0xNDcuMSAwYy0zNS4xLTE3LjYtNzUuNC0yMi0xMTMuNS0xMi41TDY0IDQ4VjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFza1ZpYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc1IDM4OS40Yy05LjggMTYtMTUgMzQuMy0xNSA1My4xYy0xMCAzLjUtMjAuOCA1LjUtMzIgNS41Yy01MyAwLTk2LTQzLTk2LTk2VjY0QzE0LjMgNjQgMCA0OS43IDAgMzJTMTQuMyAwIDMyIDBIOTZoNjQgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJWMzA5LjlsLTQ5IDc5LjZ6TTk2IDY0djk2aDY0VjY0SDk2ek0zNTIgMEg0ODBoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJWMjE0LjlMNjI5LjcgNDA2LjJjNi43IDEwLjkgMTAuMyAyMy41IDEwLjMgMzYuNGMwIDM4LjMtMzEuMSA2OS40LTY5LjQgNjkuNEgyNjEuNGMtMzguMyAwLTY5LjQtMzEuMS02OS40LTY5LjRjMC0xMi44IDMuNi0yNS40IDEwLjMtMzYuNEwzMjAgMjE0LjlWNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMzJ6bTMyIDY0VjIyNGMwIDUuOS0xLjYgMTEuNy00LjcgMTYuOEwzMzAuNSAzMjBoMTcxbC00OC44LTc5LjJjLTMuMS01LTQuNy0xMC44LTQuNy0xNi44VjY0SDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBIMTYwIDEyOEMxMTAuMyAwIDk2IDE0LjMgOTYgMzJzMTQuMyAzMiAzMiAzMlYxOTYuOGMwIDExLjgtMy4zIDIzLjUtOS41IDMzLjVMMTAuMyA0MDYuMkMzLjYgNDE3LjIgMCA0MjkuNyAwIDQ0Mi42QzAgNDgwLjkgMzEuMSA1MTIgNjkuNCA1MTJIMzc4LjZjMzguMyAwIDY5LjQtMzEuMSA2OS40LTY5LjRjMC0xMi44LTMuNi0yNS40LTEwLjMtMzYuNEwzMjkuNSAyMzAuNGMtNi4yLTEwLjEtOS41LTIxLjctOS41LTMzLjVWNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjg4ek0xOTIgMTk2LjhWNjRoNjRWMTk2LjhjMCAyMy43IDYuNiA0Ni45IDE5IDY3LjFMMzA5LjUgMzIwaC0xNzFMMTczIDI2My45YzEyLjQtMjAuMiAxOS00My40IDE5LTY3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsb3BweURpc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE3My4zYzAtMTctNi43LTMzLjMtMTguNy00NS4zTDM1MiA1MC43QzM0MCAzOC43IDMyMy43IDMyIDMwNi43IDMySDY0em0wIDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4ek0yMjQgMjg4YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbG9yaW5TaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNC43IDMyYy0zOC44IDAtNzMuNyAyMy4zLTg4LjYgNTkuMUwxNzAuNyAyMjRINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoODBMOTguOSAzOTYuM2MtNSAxMS45LTE2LjYgMTkuNy0yOS41IDE5LjdIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjkuM2MzOC44IDAgNzMuNy0yMy4zIDg4LjYtNTkuMUwyMTMuMyAyODhIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI0MGw0NS4xLTEwOC4zYzUtMTEuOSAxNi42LTE5LjcgMjkuNS0xOS43SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMTQuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0ODBINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5Mkg1MTJWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0em02NC0zMjBIMFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTJjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNmwxOS4yIDI1LjZjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0ODBINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDE5MmMyMC4xIDAgMzkuMSA5LjUgNTEuMiAyNS42bDE5LjIgMjUuNmM2IDguMSAxNS41IDEyLjggMjUuNiAxMi44SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjR6TTE4NCAyNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzI4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDE4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OC43IDIyMy44TDAgMzc1LjhWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMTgxLjVjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdsMjYuNSAyNi41YzEyIDEyIDI4LjMgMTguNyA0NS4zIDE4LjdINDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0djMySDE0NGMtMjIuOCAwLTQzLjggMTIuMS01NS4zIDMxLjh6bTI3LjYgMTYuMUMxMjIuMSAyMzAgMTMyLjYgMjI0IDE0NCAyMjRINTQ0YzExLjUgMCAyMiA2LjEgMjcuNyAxNi4xczUuNyAyMi4yLS4xIDMyLjFsLTExMiAxOTJDNDUzLjkgNDc0IDQ0My40IDQ4MCA0MzIgNDgwSDMyYy0xMS41IDAtMjItNi4xLTI3LjctMTYuMXMtNS43LTIyLjIgLjEtMzIuMWwxMTItMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDE5MmMyMC4xIDAgMzkuMSA5LjUgNTEuMiAyNS42bDE5LjIgMjUuNmM2IDguMSAxNS41IDEyLjggMjUuNiAxMi44SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZ6TTIzMiAzNzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzMTJoNjRjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjgwVjIwMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY2NEgxNjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNjR2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlclRyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNjQgMTQuMyA0OS43IDAgMzIgMFMwIDE0LjMgMCAzMnY5NlYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjU2VjM4NEg2NFYxNjBIMjU2Vjk2SDY0VjMyek0yODggMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0NDUuM2MtOC41IDAtMTYuNi0zLjQtMjIuNi05LjRMNDA5LjQgOS40Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlYxOTJ6bTAgMjg4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJINDQ1LjNjLTguNSAwLTE2LjYtMy40LTIyLjYtOS40bC0xMy4zLTEzLjNjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ4MEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4OGMtMTAuMSAwLTE5LjYtNC43LTI1LjYtMTIuOEwyNDMuMiA1Ny42QzIzMS4xIDQxLjUgMjEyLjEgMzIgMTkyIDMySDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NCA1Mi44QzI0OS4zIDQwLjMgMjM3LjMgMzIgMjI0IDMycy0yNS4zIDguMy0zMCAyMC44TDU3LjggNDE2SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyaC0xLjhsMTgtNDhIMzAzLjhsMTggNDhIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM5MC4yTDI1NCA1Mi44ek0yNzkuOCAzMDRIMTY4LjJMMjI0IDE1NS4xIDI3OS44IDMwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9vdGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjUgMjUuNGMtMTMuNSAzLjMtMjYuNCA3LjItMzguNiAxMS43QzE0Mi45IDYxLjYgOTYuNyAxMDMuNiA2NiAxNTMuNmMtMTguMyAyOS44LTMwLjkgNjIuMy0zOS4yIDk1LjRMMjY0LjUgNDg2LjZjMTMuNS0zLjMgMjYuNC03LjIgMzguNi0xMS43YzY2LTI0LjUgMTEyLjItNjYuNSAxNDIuOS0xMTYuNWMxOC4zLTI5LjggMzAuOS02Mi4zIDM5LjEtOTUuM0wyNDcuNSAyNS40ek00OTUuMiAyMDUuM2M2LjEtNTYuOCAxLjQtMTEyLjItNy43LTE1Ni40Yy0yLjctMTIuOS0xMy0yMi45LTI2LjEtMjUuMWMtNTguMi05LjctMTA5LjktMTItMTU1LjYtNy45TDQ5NS4yIDIwNS4zek0yMDYuMSA0OTZMMTYuOCAzMDYuN2MtNi4xIDU2LjgtMS40IDExMi4yIDcuNyAxNTYuNGMyLjcgMTIuOSAxMyAyMi45IDI2LjEgMjUuMWM1OC4yIDkuNyAxMDkuOSAxMiAxNTUuNiA3Ljl6bTU0LjYtMzMxLjNjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsNjQgNjRjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtNjQtNjRjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42em0tNDggNDhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsNjQgNjRjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtNjQtNjRjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42em0tNDggNDhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsNjQgNjRjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtNjQtNjRjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J3YXJkRmFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC40IDQ0NWMxMS4yIDUuMyAyNC41IDMuNiAzNC4xLTQuNEwyMjQgMjk3LjdWNDE2YzAgMTIuNCA3LjIgMjMuNyAxOC40IDI5czI0LjUgMy42IDM0LjEtNC40TDQ0OCAyOTcuN1Y0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyMTQuM0wyNzYuNSA3MS40Yy05LjUtNy45LTIyLjgtOS43LTM0LjEtNC40UzIyNCA4My42IDIyNCA5NlYyMTQuM0w1Mi41IDcxLjRjLTkuNS03LjktMjIuOC05LjctMzQuMS00LjRTMCA4My42IDAgOTZWNDE2YzAgMTIuNCA3LjIgMjMuNyAxOC40IDI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J3YXJkU3RlcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Mi41IDQ0MC42Yy05LjUgNy45LTIyLjggOS43LTM0LjEgNC40UzAgNDI4LjQgMCA0MTZWOTZDMCA4My42IDcuMiA3Mi4zIDE4LjQgNjdzMjQuNS0zLjYgMzQuMSA0LjRsMTkyIDE2MEwyNTYgMjQxVjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI3MWwtMTEuNSA5LjYtMTkyIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Mi41IDQ0MC42Yy05LjUgNy45LTIyLjggOS43LTM0LjEgNC40UzAgNDI4LjQgMCA0MTZWOTZDMCA4My42IDcuMiA3Mi4zIDE4LjQgNjdzMjQuNS0zLjYgMzQuMSA0LjRMMjI0IDIxNC4zVjI1NnY0MS43TDUyLjUgNDQwLjZ6TTI1NiAzNTJWMjU2IDEyOCA5NmMwLTEyLjQgNy4yLTIzLjcgMTguNC0yOXMyNC41LTMuNiAzNC4xIDQuNGwxOTIgMTYwYzcuMyA2LjEgMTEuNSAxNS4xIDExLjUgMjQuNnMtNC4yIDE4LjUtMTEuNSAyNC42bC0xOTIgMTYwYy05LjUgNy45LTIyLjggOS43LTM0LjEgNC40cy0xOC40LTE2LjYtMTguNC0yOVYzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyYW5jU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAzMkM2Mi4zIDMyIDQ4IDQ2LjMgNDggNjRWMjI0djk2SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzg0aDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDExMlYyNTZIMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDExMlY5NkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDMyYzQxLjcgMCA3NS45IDMxLjggNzkuNyA3Mi41bDg1LjYgMjYuM2MyNS40IDcuOCA0Mi44IDMxLjMgNDIuOCA1Ny45YzAgMjEuOC0xMS43IDQxLjktMzAuNyA1Mi43TDQwMC44IDMyMy41IDQ5My4zIDQxNkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDgwYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNEwzNDYuOSAzNjAuMmMxMS43LTM2IDMuMi03Ny4xLTI1LjQtMTA1LjdjLTQwLjYtNDAuNi0xMDYuMy00MC42LTE0Ni45LS4xTDEwMSAzMjQuNGMtNi40IDYuMS02LjcgMTYuMi0uNiAyMi42czE2LjIgNi42IDIyLjYgLjZsNzMuOC03MC4yIC4xLS4xIC4xLS4xYzMuNS0zLjUgNy4zLTYuNiAxMS4zLTkuMmMyNy45LTE4LjUgNjUuOS0xNS40IDkwLjUgOS4yYzI0LjcgMjQuNyAyNy43IDYyLjkgOSA5MC45Yy0yLjYgMy44LTUuNiA3LjUtOSAxMC45TDI2MS44IDQxNkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0QzAgMjQ5LjYgMTI3IDExMi45IDI4OS4zIDk3LjVDMjk2LjIgNjAuMiAzMjguOCAzMiAzNjggMzJ6bTAgMTA0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnV0Ym9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNy4zIDM2MC4xbC03MS42LTQuOGMtNS4yLS4zLTEwLjMgMS4xLTE0LjUgNC4ycy03LjIgNy40LTguNCAxMi41bC0xNy42IDY5LjZDMjg5LjUgNDQ1LjggMjczIDQ0OCAyNTYgNDQ4cy0zMy41LTIuMi00OS4yLTYuNEwxODkuMiAzNzJjLTEuMy01LTQuMy05LjQtOC40LTEyLjVzLTkuMy00LjUtMTQuNS00LjJsLTcxLjYgNC44Yy0xNy42LTI3LjItMjguNS01OS4yLTMwLjQtOTMuNkwxMjUgMjI4LjNjNC40LTIuOCA3LjYtNyA5LjItMTEuOXMxLjQtMTAuMi0uNS0xNWwtMjYuNy02Ni42QzEyOCAxMDkuMiAxNTUuMyA4OSAxODYuNyA3Ni45bDU1LjIgNDZjNCAzLjMgOSA1LjEgMTQuMSA1LjFzMTAuMi0xLjggMTQuMS01LjFsNTUuMi00NmMzMS4zIDEyLjEgNTguNyAzMi4zIDc5LjYgNTcuOWwtMjYuNyA2Ni42Yy0xLjkgNC44LTIuMSAxMC4xLS41IDE1czQuOSA5LjEgOS4yIDExLjlsNjAuNyAzOC4yYy0xLjkgMzQuNC0xMi44IDY2LjQtMzAuNCA5My42ek0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMTQuMS0zMjUuN2MtOC40LTYuMS0xOS44LTYuMS0yOC4yIDBMMTk0IDIyMWMtOC40IDYuMS0xMS45IDE2LjktOC43IDI2LjhsMTguMyA1Ni4zYzMuMiA5LjkgMTIuNCAxNi42IDIyLjggMTYuNmg1OS4yYzEwLjQgMCAxOS42LTYuNyAyMi44LTE2LjZsMTguMy01Ni4zYzMuMi05LjktLjMtMjAuNy04LjctMjYuOGwtNDcuOS0zNC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA5NkMxMzUuNiA5NiA2NCAxNjcuNiA2NCAyNTZzNzEuNiAxNjAgMTYwIDE2MGM3Ny40IDAgMTQyLTU1IDE1Ni44LTEyOEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDAwYzI1LjggMCA0OS42IDIxLjQgNDcuMiA1MC42QzQzNy44IDM4OS42IDM0MS40IDQ4MCAyMjQgNDgwQzEwMC4zIDQ4MCAwIDM3OS43IDAgMjU2UzEwMC4zIDMyIDIyNCAzMmM1Ny40IDAgMTA5LjcgMjEuNiAxNDkuMyA1N2MxMy4yIDExLjggMTQuMyAzMiAyLjUgNDUuMnMtMzIgMTQuMy00NS4yIDIuNUMzMDIuMyAxMTEuNCAyNjUgOTYgMjI0IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYW1lcGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA2NEM4NiA2NCAwIDE1MCAwIDI1NlM4NiA0NDggMTkyIDQ0OEg0NDhjMTA2IDAgMTkyLTg2IDE5Mi0xOTJzLTg2LTE5Mi0xOTItMTkySDE5MnpNNDk2IDE2OGE0MCA0MCAwIDEgMSAwIDgwIDQwIDQwIDAgMSAxIDAtODB6TTM5MiAzMDRhNDAgNDAgMCAxIDEgODAgMCA0MCA0MCAwIDEgMSAtODAgMHpNMTY4IDIwMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djMyaDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIxNnYzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyODBIMTM2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDMyVjIwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FzUHVtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA2NEMzMiAyOC43IDYwLjcgMCA5NiAwSDI1NmMzNS4zIDAgNjQgMjguNyA2NCA2NFYyNTZoOGM0OC42IDAgODggMzkuNCA4OCA4OHYzMmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjIyMmMtMjcuNi03LjEtNDgtMzIuMi00OC02MlY5NkwzODQgNjRjLTguOC04LjgtOC44LTIzLjIgMC0zMnMyMy4yLTguOCAzMiAwbDc3LjMgNzcuM2MxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zVjE2OHYyNCAzMlYzNzZjMCAzOS44LTMyLjIgNzItNzIgNzJzLTcyLTMyLjItNzItNzJWMzQ0YzAtMjIuMS0xNy45LTQwLTQwLTQwaC04VjQ0OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlY2NHpNOTYgODB2OTZjMCA4LjggNy4yIDE2IDE2IDE2SDI0MGM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2SDExMmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYXVnZUhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0yODggOTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMjU2IDQxNmMzNS4zIDAgNjQtMjguNyA2NC02NGMwLTE3LjQtNi45LTMzLjEtMTguMS00NC42TDM2NiAxNjEuN2M1LjMtMTIuMS0uMi0yNi4zLTEyLjMtMzEuNnMtMjYuMyAuMi0zMS42IDEyLjNMMjU3LjkgMjg4Yy0uNiAwLTEuMyAwLTEuOSAwYy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0ek0xNzYgMTQ0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTk2IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTM1Mi0zMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYXVnZVNpbXBsZUhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0zMjAgOTZjMC0xNS45LTUuOC0zMC40LTE1LjMtNDEuNmw3Ni42LTE0Ny40YzYuMS0xMS44IDEuNS0yNi4zLTEwLjItMzIuNHMtMjYuMi0xLjUtMzIuNCAxMC4yTDI2Mi4xIDI4OC4zYy0yLS4yLTQtLjMtNi4xLS4zYy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhdWdlU2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzIwIDk2YzAtMjYuOS0xNi41LTQ5LjktNDAtNTkuM1Y4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFYyOTIuN2MtMjMuNSA5LjUtNDAgMzIuNS00MCA1OS4zYzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhdWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzIwIDk2YzAtMjYuOS0xNi41LTQ5LjktNDAtNTkuM1Y4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFYyOTIuN2MtMjMuNSA5LjUtNDAgMzIuNS00MCA1OS4zYzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6TTE0NCAxNzZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0tMTYgODBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMjg4IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNNDAwIDE0NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYXZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMjAgMTIwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNiAxNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw0LTRMMzI1LjQgMjkzLjRsLTQgNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYgMTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTIwLTEyMGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYtMTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC00IDRMMzMwLjYgNzQuNmw0LTRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTE2LTE2em0tMTUyIDI4OGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTExMiAxMTJjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDQ4IDQ4YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDExMi0xMTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTEuNC0xLjRMMjcyIDI4NS4zIDIyNi43IDI0MCAxNjggMjk4LjdsLTEuNC0xLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk1LjkgMTY2LjZjMy4yIDguNyAuNSAxOC40LTYuNCAyNC42bC00My4zIDM5LjRjMS4xIDguMyAxLjcgMTYuOCAxLjcgMjUuNHMtLjYgMTcuMS0xLjcgMjUuNGw0My4zIDM5LjRjNi45IDYuMiA5LjYgMTUuOSA2LjQgMjQuNmMtNC40IDExLjktOS43IDIzLjMtMTUuOCAzNC4zbC00LjcgOC4xYy02LjYgMTEtMTQgMjEuNC0yMi4xIDMxLjJjLTUuOSA3LjItMTUuNyA5LjYtMjQuNSA2LjhsLTU1LjctMTcuN2MtMTMuNCAxMC4zLTI4LjIgMTguOS00NCAyNS40bC0xMi41IDU3LjFjLTIgOS4xLTkgMTYuMy0xOC4yIDE3LjhjLTEzLjggMi4zLTI4IDMuNS00Mi41IDMuNXMtMjguNy0xLjItNDIuNS0zLjVjLTkuMi0xLjUtMTYuMi04LjctMTguMi0xNy44bC0xMi41LTU3LjFjLTE1LjgtNi41LTMwLjYtMTUuMS00NC0yNS40TDgzLjEgNDI1LjljLTguOCAyLjgtMTguNiAuMy0yNC41LTYuOGMtOC4xLTkuOC0xNS41LTIwLjItMjIuMS0zMS4ybC00LjctOC4xYy02LjEtMTEtMTEuNC0yMi40LTE1LjgtMzQuM2MtMy4yLTguNy0uNS0xOC40IDYuNC0yNC42bDQzLjMtMzkuNEM2NC42IDI3My4xIDY0IDI2NC42IDY0IDI1NnMuNi0xNy4xIDEuNy0yNS40TDIyLjQgMTkxLjJjLTYuOS02LjItOS42LTE1LjktNi40LTI0LjZjNC40LTExLjkgOS43LTIzLjMgMTUuOC0zNC4zbDQuNy04LjFjNi42LTExIDE0LTIxLjQgMjIuMS0zMS4yYzUuOS03LjIgMTUuNy05LjYgMjQuNS02LjhsNTUuNyAxNy43YzEzLjQtMTAuMyAyOC4yLTE4LjkgNDQtMjUuNGwxMi41LTU3LjFjMi05LjEgOS0xNi4zIDE4LjItMTcuOEMyMjcuMyAxLjIgMjQxLjUgMCAyNTYgMHMyOC43IDEuMiA0Mi41IDMuNWM5LjIgMS41IDE2LjIgOC43IDE4LjIgMTcuOGwxMi41IDU3LjFjMTUuOCA2LjUgMzAuNiAxNS4xIDQ0IDI1LjRsNTUuNy0xNy43YzguOC0yLjggMTguNi0uMyAyNC41IDYuOGM4LjEgOS44IDE1LjUgMjAuMiAyMi4xIDMxLjJsNC43IDguMWM2LjEgMTEgMTEuNCAyMi40IDE1LjggMzQuM3pNMjU2IDMzNmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA4LjUgMTM1LjNjNy4xLTYuMyA5LjktMTYuMiA2LjItMjVjLTIuMy01LjMtNC44LTEwLjUtNy42LTE1LjVMMzA0IDg5LjRjLTMtNS02LjMtOS45LTkuOC0xNC42Yy01LjctNy42LTE1LjctMTAuMS0yNC43LTcuMWwtMjguMiA5LjNjLTEwLjctOC44LTIzLTE2LTM2LjItMjAuOUwxOTkgMjcuMWMtMS45LTkuMy05LjEtMTYuNy0xOC41LTE3LjhDMTczLjkgOC40IDE2Ny4yIDggMTYwLjQgOGgtLjdjLTYuOCAwLTEzLjUgLjQtMjAuMSAxLjJjLTkuNCAxLjEtMTYuNiA4LjYtMTguNSAxNy44TDExNSA1Ni4xYy0xMy4zIDUtMjUuNSAxMi4xLTM2LjIgMjAuOUw1MC41IDY3LjhjLTktMy0xOS0uNS0yNC43IDcuMWMtMy41IDQuNy02LjggOS42LTkuOSAxNC42bC0zIDUuM2MtMi44IDUtNS4zIDEwLjItNy42IDE1LjZjLTMuNyA4LjctLjkgMTguNiA2LjIgMjVsMjIuMiAxOS44QzMyLjYgMTYxLjkgMzIgMTY4LjkgMzIgMTc2cy42IDE0LjEgMS43IDIwLjlMMTEuNSAyMTYuN2MtNy4xIDYuMy05LjkgMTYuMi02LjIgMjVjMi4zIDUuMyA0LjggMTAuNSA3LjYgMTUuNmwzIDUuMmMzIDUuMSA2LjMgOS45IDkuOSAxNC42YzUuNyA3LjYgMTUuNyAxMC4xIDI0LjcgNy4xbDI4LjItOS4zYzEwLjcgOC44IDIzIDE2IDM2LjIgMjAuOWw2LjEgMjkuMWMxLjkgOS4zIDkuMSAxNi43IDE4LjUgMTcuOGM2LjcgLjggMTMuNSAxLjIgMjAuNCAxLjJzMTMuNy0uNCAyMC40LTEuMmM5LjQtMS4xIDE2LjYtOC42IDE4LjUtMTcuOGw2LjEtMjkuMWMxMy4zLTUgMjUuNS0xMi4xIDM2LjItMjAuOWwyOC4yIDkuM2M5IDMgMTkgLjUgMjQuNy03LjFjMy41LTQuNyA2LjgtOS41IDkuOC0xNC42bDMuMS01LjRjMi44LTUgNS4zLTEwLjIgNy42LTE1LjVjMy43LTguNyAuOS0xOC42LTYuMi0yNWwtMjIuMi0xOS44YzEuMS02LjggMS43LTEzLjggMS43LTIwLjlzLS42LTE0LjEtMS43LTIwLjlsMjIuMi0xOS44ek0xMTIgMTc2YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTUwNC43IDUwMC41YzYuMyA3LjEgMTYuMiA5LjkgMjUgNi4yYzUuMy0yLjMgMTAuNS00LjggMTUuNS03LjZsNS40LTMuMWM1LTMgOS45LTYuMyAxNC42LTkuOGM3LjYtNS43IDEwLjEtMTUuNyA3LjEtMjQuN2wtOS4zLTI4LjJjOC44LTEwLjcgMTYtMjMgMjAuOS0zNi4ybDI5LjEtNi4xYzkuMy0xLjkgMTYuNy05LjEgMTcuOC0xOC41Yy44LTYuNyAxLjItMTMuNSAxLjItMjAuNHMtLjQtMTMuNy0xLjItMjAuNGMtMS4xLTkuNC04LjYtMTYuNi0xNy44LTE4LjVMNTgzLjkgMzA3Yy01LTEzLjMtMTIuMS0yNS41LTIwLjktMzYuMmw5LjMtMjguMmMzLTkgLjUtMTktNy4xLTI0LjdjLTQuNy0zLjUtOS42LTYuOC0xNC42LTkuOWwtNS4zLTNjLTUtMi44LTEwLjItNS4zLTE1LjYtNy42Yy04LjctMy43LTE4LjYtLjktMjUgNi4ybC0xOS44IDIyLjJjLTYuOC0xLjEtMTMuOC0xLjctMjAuOS0xLjdzLTE0LjEgLjYtMjAuOSAxLjdsLTE5LjgtMjIuMmMtNi4zLTcuMS0xNi4yLTkuOS0yNS02LjJjLTUuMyAyLjMtMTAuNSA0LjgtMTUuNiA3LjZsLTUuMiAzYy01LjEgMy05LjkgNi4zLTE0LjYgOS45Yy03LjYgNS43LTEwLjEgMTUuNy03LjEgMjQuN2w5LjMgMjguMmMtOC44IDEwLjctMTYgMjMtMjAuOSAzNi4yTDMxNS4xIDMxM2MtOS4zIDEuOS0xNi43IDkuMS0xNy44IDE4LjVjLS44IDYuNy0xLjIgMTMuNS0xLjIgMjAuNHMuNCAxMy43IDEuMiAyMC40YzEuMSA5LjQgOC42IDE2LjYgMTcuOCAxOC41bDI5LjEgNi4xYzUgMTMuMyAxMi4xIDI1LjUgMjAuOSAzNi4ybC05LjMgMjguMmMtMyA5LS41IDE5IDcuMSAyNC43YzQuNyAzLjUgOS41IDYuOCAxNC42IDkuOGw1LjQgMy4xYzUgMi44IDEwLjIgNS4zIDE1LjUgNy42YzguNyAzLjcgMTguNiAuOSAyNS02LjJsMTkuOC0yMi4yYzYuOCAxLjEgMTMuOCAxLjcgMjAuOSAxLjdzMTQuMS0uNiAyMC45LTEuN2wxOS44IDIyLjJ6TTQ2NCAzMDRhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHZW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE2LjcgMzMuOGM0LjUtNi4xIDExLjctOS44IDE5LjMtOS44SDM3NmM3LjYgMCAxNC44IDMuNiAxOS4zIDkuOGwxMTIgMTUyYzYuOCA5LjIgNi4xIDIxLjktMS41IDMwLjRsLTIzMiAyNTZjLTQuNSA1LTExIDcuOS0xNy44IDcuOXMtMTMuMi0yLjktMTcuOC03LjlsLTIzMi0yNTZjLTcuNy04LjUtOC4zLTIxLjItMS41LTMwLjRsMTEyLTE1MnptMzguNSAzOS44Yy0zLjMgMi41LTQuMiA3LTIuMSAxMC41bDU3LjQgOTUuNkw2My4zIDE5MmMtNC4xIC4zLTcuMyAzLjgtNy4zIDhzMy4yIDcuNiA3LjMgOGwxOTIgMTZjLjQgMCAuOSAwIDEuMyAwbDE5Mi0xNmM0LjEtLjMgNy4zLTMuOCA3LjMtOHMtMy4yLTcuNi03LjMtOEwzMDEuNSAxNzkuOGw1Ny40LTk1LjZjMi4xLTMuNSAxLjItOC4xLTIuMS0xMC41cy03LjktMi0xMC43IDFMMjU2IDE3Mi4yIDE2NS45IDc0LjZjLTIuOC0zLTcuNC0zLjQtMTAuNy0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHZW5kZXJsZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAxNDRhMTEyIDExMiAwIDEgMSAwIDIyNCAxMTIgMTEyIDAgMSAxIDAtMjI0em0wIDI4OGExNzYgMTc2IDAgMSAwIDAtMzUyIDE3NiAxNzYgMCAxIDAgMCAzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdob3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwLjEgNDY3LjFsLTExLjIgOWMtMy4yIDIuNS03LjEgMy45LTExLjEgMy45QzggNDgwIDAgNDcyIDAgNDYyLjJWMTkyQzAgODYgODYgMCAxOTIgMFMzODQgODYgMzg0IDE5MlY0NjIuMmMwIDkuOC04IDE3LjgtMTcuOCAxNy44Yy00IDAtNy45LTEuNC0xMS4xLTMuOWwtMTEuMi05Yy0xMy40LTEwLjctMzIuOC05LTQ0LjEgMy45TDI2OS4zIDUwNmMtMy4zIDMuOC04LjIgNi0xMy4zIDZzLTkuOS0yLjItMTMuMy02bC0yNi42LTMwLjVjLTEyLjctMTQuNi0zNS40LTE0LjYtNDguMiAwTDE0MS4zIDUwNmMtMy4zIDMuOC04LjIgNi0xMy4zIDZzLTkuOS0yLjItMTMuMy02TDg0LjIgNDcxYy0xMS4zLTEyLjktMzAuNy0xNC42LTQ0LjEtMy45ek0xNjAgMTkyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTk2IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2lmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTAuNSA2OC44TDIyNS4zIDEyOEgyMjQgMTUyYy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwaDIuMmMxNC45IDAgMjguOCA3LjkgMzYuMyAyMC44ek02NCA4OGMwIDE0LjQgMy41IDI4IDkuNiA0MEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0MzguNGM2LjEtMTIgOS42LTI1LjYgOS42LTQwYzAtNDguNi0zOS40LTg4LTg4LTg4aC0yLjJjLTMxLjkgMC02MS41IDE2LjktNzcuNyA0NC40TDI1NiA4NS41bC0yNC4xLTQxQzIxNS43IDE2LjkgMTg2LjEgMCAxNTQuMiAwSDE1MkMxMDMuNCAwIDY0IDM5LjQgNjQgODh6bTMzNiAwYzAgMjIuMS0xNy45IDQwLTQwIDQwSDI4OGgtMS4zbDM0LjgtNTkuMkMzMjkuMSA1NS45IDM0Mi45IDQ4IDM1Ny44IDQ4SDM2MGMyMi4xIDAgNDAgMTcuOSA0MCA0MHpNMzIgMjg4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyMjRWMjg4SDMyek0yODggNTEySDQzMmMyNi41IDAgNDgtMjEuNSA0OC00OFYyODhIMjg4VjUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2lmdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAwLjYgMzJDMjA1IDE5LjUgMTk4LjUgNS44IDE4NiAxLjRTMTU5LjggMy41IDE1NS40IDE2TDE0NC43IDQ2LjJsLTkuOS0yOS44QzEzMC42IDMuOCAxMTctMyAxMDQuNCAxLjJTODUgMTkgODkuMiAzMS42bDguMyAyNS0yNy40LTIwYy0xMC43LTcuOC0yNS43LTUuNC0zMy41IDUuM3MtNS40IDI1LjcgNS4zIDMzLjVMNzAuMiA5Nkg0OEMyMS41IDk2IDAgMTE3LjUgMCAxNDRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDIwMC42Yy01LjQtOS40LTguNi0yMC4zLTguNi0zMlYyNTZjMC0yOS45IDIwLjUtNTUgNDguMi02MmMxLjgtMzEgMTcuMS01OC4yIDQwLjEtNzYuMUMyNzEuNyAxMDQuNyAyNTYuOSA5NiAyNDAgOTZIMjE3LjhsMjguMy0yMC42YzEwLjctNy44IDEzLjEtMjIuOCA1LjMtMzMuNXMtMjIuOC0xMy4xLTMzLjUtNS4zTDE5Mi41IDU1LjEgMjAwLjYgMzJ6TTM2My41IDE4NS41TDM5My4xIDIyNEgzNDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0YzAtMTMuMSAxMC44LTI0IDI0LjItMjRjNy42IDAgMTQuNyAzLjUgMTkuMyA5LjV6TTI3MiAyMDBjMCA4LjQgMS40IDE2LjUgNC4xIDI0SDI3MmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2ODBINDE2VjI1NmgzMnY5Nkg2NDBWMjcyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4aC00LjFjMi43LTcuNSA0LjEtMTUuNiA0LjEtMjRjMC0zOS45LTMyLjUtNzItNzIuMi03MmMtMjIuNCAwLTQzLjYgMTAuNC01Ny4zIDI4LjJMNDMyIDE5NS44bC0zMC41LTM5LjZjLTEzLjctMTcuOC0zNS0yOC4yLTU3LjMtMjguMmMtMzkuNyAwLTcyLjIgMzIuMS03Mi4yIDcyek0yMjQgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQxNlYzODRIMjI0djgwem0yMjQgNDhINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM4NEg0NDhWNTEyem05Ni0zMTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRINDcwLjlsMjkuNi0zOC41YzQuNi01LjkgMTEuNy05LjUgMTkuMy05LjVjMTMuNCAwIDI0LjIgMTAuOSAyNC4yIDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGFzc1dhdGVyRHJvcGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzIzLjEgMCAxNC42IDMuNyA4LjYgMTAuMlMtLjYgMjUuNCAuMSAzNC4zTDI4LjkgNDM3LjdjMyA0MS45IDM3LjggNzQuMyA3OS44IDc0LjNIMjc1LjNjNDIgMCA3Ni44LTMyLjQgNzkuOC03NC4zTDM4My45IDM0LjNjLjYtOC45LTIuNC0xNy42LTguNS0yNC4xUzM2MC45IDAgMzUyIDBIMzJ6TTgzIDI5Ny41TDY2LjQgNjRIMzE3LjZMMzAxIDI5Ny41IDI4OCAzMDRjLTIwLjEgMTAuMS00My45IDEwLjEtNjQgMHMtNDMuOS0xMC4xLTY0IDBzLTQzLjkgMTAuMS02NCAwbC0xMy02LjV6TTI1NiAxOTZjMC0yNC0zMy43LTcwLjEtNTIuMi05My41Yy02LjEtNy43LTE3LjUtNy43LTIzLjYgMEMxNjEuNyAxMjUuOSAxMjggMTcyIDEyOCAxOTZjMCAzMy4xIDI4LjcgNjAgNjQgNjBzNjQtMjYuOSA2NC02MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzIzLjEgMCAxNC42IDMuNyA4LjYgMTAuMlMtLjYgMjUuNCAuMSAzNC4zTDI4LjkgNDM3LjdjMyA0MS45IDM3LjggNzQuMyA3OS44IDc0LjNIMjc1LjNjNDIgMCA3Ni44LTMyLjQgNzkuOC03NC4zTDM4My45IDM0LjNjLjYtOC45LTIuNC0xNy42LTguNS0yNC4xUzM2MC45IDAgMzUyIDBIMzJ6TTczIDE1Ni41TDY2LjQgNjRIMzE3LjZMMzExIDE1Ni41bC0yNC4yIDEyLjFjLTE5LjQgOS43LTQyLjIgOS43LTYxLjYgMGMtMjAuOS0xMC40LTQ1LjUtMTAuNC02Ni40IDBjLTE5LjQgOS43LTQyLjIgOS43LTYxLjYgMEw3MyAxNTYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTguNiA4MGMtMTEuNSAwLTIxLjQgNy45LTI0IDE5LjFMNTcgMjYwLjNjMjAuNS02LjIgNDguMy0xMi4zIDc4LjctMTIuM2MzMi4zIDAgNjEuOCA2LjkgODIuOCAxMy41YzEwLjYgMy4zIDE5LjMgNi43IDI1LjQgOS4yYzMuMSAxLjMgNS41IDIuNCA3LjMgMy4yYy45IC40IDEuNiAuNyAyLjEgMWwuNiAuMyAuMiAuMSAuMSAwIDAgMCAwIDBzMCAwLTYuMyAxMi43aDBsNi4zLTEyLjdjNS44IDIuOSAxMC40IDcuMyAxMy41IDEyLjdoNDAuNmMzLjEtNS4zIDcuNy05LjggMTMuNS0xMi43bDYuMyAxMi43aDBjLTYuMy0xMi43LTYuMy0xMi43LTYuMy0xMi43bDAgMCAwIDAgLjEgMCAuMi0uMSAuNi0uM2MuNS0uMiAxLjItLjYgMi4xLTFjMS44LS44IDQuMi0xLjkgNy4zLTMuMmM2LjEtMi42IDE0LjgtNS45IDI1LjQtOS4yYzIxLTYuNiA1MC40LTEzLjUgODIuOC0xMy41YzMwLjQgMCA1OC4yIDYuMSA3OC43IDEyLjNMNDgxLjQgOTkuMWMtMi42LTExLjItMTIuNi0xOS4xLTI0LTE5LjFjLTMuMSAwLTYuMiAuNi05LjIgMS44TDQxNi45IDk0LjNjLTEyLjMgNC45LTI2LjMtMS4xLTMxLjItMTMuNHMxLjEtMjYuMyAxMy40LTMxLjJsMzEuMy0xMi41YzguNi0zLjQgMTcuNy01LjIgMjctNS4yYzMzLjggMCA2My4xIDIzLjMgNzAuOCA1Ni4ybDQzLjkgMTg4YzEuNyA3LjMgMi45IDE0LjcgMy41IDIyLjFjLjMgMS45IC41IDMuOCAuNSA1Ljd2Ni43VjM1MnYxNmMwIDYxLjktNTAuMSAxMTItMTEyIDExMkg0MTkuN2MtNTkuNCAwLTEwOC41LTQ2LjQtMTExLjgtMTA1LjhMMzA2LjYgMzUySDI2OS40bC0xLjIgMjIuMkMyNjQuOSA0MzMuNiAyMTUuOCA0ODAgMTU2LjMgNDgwSDExMkM1MC4xIDQ4MCAwIDQyOS45IDAgMzY4VjM1MiAzMTAuNyAzMDRjMC0xLjkgLjItMy44IC41LTUuN2MuNi03LjQgMS44LTE0LjggMy41LTIyLjFsNDMuOS0xODhDNTUuNSA1NS4zIDg0LjggMzIgMTE4LjYgMzJjOS4yIDAgMTguNCAxLjggMjcgNS4ybDMxLjMgMTIuNWMxMi4zIDQuOSAxOC4zIDE4LjkgMTMuNCAzMS4ycy0xOC45IDE4LjMtMzEuMiAxMy40TDEyNy44IDgxLjhjLTIuOS0xLjItNi0xLjgtOS4yLTEuOHpNNjQgMzI1LjRWMzY4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ0LjNjMjUuNSAwIDQ2LjUtMTkuOSA0Ny45LTQ1LjNsMi41LTQ1LjZjLTIuMy0uOC00LjktMS43LTcuNS0yLjVjLTE3LjItNS40LTM5LjktMTAuNS02My42LTEwLjVjLTIzLjcgMC00Ni4yIDUuMS02My4yIDEwLjVjLTMuMSAxLTUuOSAxLjktOC41IDIuOXpNNTEyIDM2OFYzMjUuNGMtMi42LS45LTUuNS0xLjktOC41LTIuOWMtMTctNS40LTM5LjUtMTAuNS02My4yLTEwLjVjLTIzLjcgMC00Ni40IDUuMS02My42IDEwLjVjLTIuNyAuOC01LjIgMS43LTcuNSAyLjVsMi41IDQ1LjZjMS40IDI1LjQgMjIuNSA0NS4zIDQ3LjkgNDUuM0g0NjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsb2JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAyNTZjMCAyMi4yLTEuMiA0My42LTMuMyA2NEgxNjMuM2MtMi4yLTIwLjQtMy4zLTQxLjgtMy4zLTY0czEuMi00My42IDMuMy02NEgzNDguN2MyLjIgMjAuNCAzLjMgNDEuOCAzLjMgNjR6bTI4LjgtNjRINTAzLjljNS4zIDIwLjUgOC4xIDQxLjkgOC4xIDY0cy0yLjggNDMuNS04LjEgNjRIMzgwLjhjMi4xLTIwLjYgMy4yLTQyIDMuMi02NHMtMS4xLTQzLjQtMy4yLTY0em0xMTIuNi0zMkgzNzYuN2MtMTAtNjMuOS0yOS44LTExNy40LTU1LjMtMTUxLjZjNzguMyAyMC43IDE0MiA3Ny41IDE3MS45IDE1MS42em0tMTQ5LjEgMEgxNjcuN2M2LjEtMzYuNCAxNS41LTY4LjYgMjctOTQuN2MxMC41LTIzLjYgMjIuMi00MC43IDMzLjUtNTEuNUMyMzkuNCAzLjIgMjQ4LjcgMCAyNTYgMHMxNi42IDMuMiAyNy44IDEzLjhjMTEuMyAxMC44IDIzIDI3LjkgMzMuNSA1MS41YzExLjYgMjYgMjAuOSA1OC4yIDI3IDk0Ljd6bS0yMDkgMEgxOC42QzQ4LjYgODUuOSAxMTIuMiAyOS4xIDE5MC42IDguNEMxNjUuMSA0Mi42IDE0NS4zIDk2LjEgMTM1LjMgMTYwek04LjEgMTkySDEzMS4yYy0yLjEgMjAuNi0zLjIgNDItMy4yIDY0czEuMSA0My40IDMuMiA2NEg4LjFDMi44IDI5OS41IDAgMjc4LjEgMCAyNTZzMi44LTQzLjUgOC4xLTY0ek0xOTQuNyA0NDYuNmMtMTEuNi0yNi0yMC45LTU4LjItMjctOTQuNkgzNDQuM2MtNi4xIDM2LjQtMTUuNSA2OC42LTI3IDk0LjZjLTEwLjUgMjMuNi0yMi4yIDQwLjctMzMuNSA1MS41QzI3Mi42IDUwOC44IDI2My4zIDUxMiAyNTYgNTEycy0xNi42LTMuMi0yNy44LTEzLjhjLTExLjMtMTAuOC0yMy0yNy45LTMzLjUtNTEuNXpNMTM1LjMgMzUyYzEwIDYzLjkgMjkuOCAxMTcuNCA1NS4zIDE1MS42QzExMi4yIDQ4Mi45IDQ4LjYgNDI2LjEgMTguNiAzNTJIMTM1LjN6bTM1OC4xIDBjLTMwIDc0LjEtOTMuNiAxMzAuOS0xNzEuOSAxNTEuNmMyNS41LTM0LjIgNDUuMi04Ny43IDU1LjMtMTUxLjZINDkzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvbGZCYWxsVGVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxOTJjMCA2Ni44LTM0LjEgMTI1LjYtODUuOCAxNjBIODUuOEMzNC4xIDMxNy42IDAgMjU4LjggMCAxOTJDMCA4NiA4NiAwIDE5MiAwUzM4NCA4NiAzODQgMTkyek0yNDIuMSAyNTYuNmMwIDE4LjUtMTUgMzMuNS0zMy41IDMzLjVjLTQuOSAwLTkuMSA1LjEtNS40IDguNGM1LjkgNS4yIDEzLjcgOC40IDIyLjEgOC40YzE4LjUgMCAzMy41LTE1IDMzLjUtMzMuNWMwLTguNS0zLjItMTYuMi04LjQtMjIuMWMtMy4zLTMuNy04LjQgLjUtOC40IDUuNHptLTUyLjMtNDkuM2MtNC45IDAtOS4xIDUuMS01LjQgOC40YzUuOSA1LjIgMTMuNyA4LjQgMjIuMSA4LjRjMTguNSAwIDMzLjUtMTUgMzMuNS0zMy41YzAtOC41LTMuMi0xNi4yLTguNC0yMi4xYy0zLjMtMy43LTguNCAuNS04LjQgNS40YzAgMTguNS0xNSAzMy41LTMzLjUgMzMuNXptMTEzLjUtMTcuNWMwIDE4LjUtMTUgMzMuNS0zMy41IDMzLjVjLTQuOSAwLTkuMSA1LjEtNS40IDguNGM1LjkgNS4yIDEzLjcgOC40IDIyLjEgOC40YzE4LjUgMCAzMy41LTE1IDMzLjUtMzMuNWMwLTguNS0zLjItMTYuMi04LjQtMjIuMWMtMy4zLTMuNy04LjQgLjUtOC40IDUuNHpNOTYgNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ2NGMwLTguOC03LjItMTYtMTYtMTZIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29wdXJhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY4aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2OGg0OFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djhoNDBWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY4VjY0djY0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQxNlYzNTJIMzg0VjIyNEgzNTJWMTI4SDMyMHY5NmgzMlYzNTJoMzJWNTEySDMwNFY0NjRjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh2NDhIMTI4VjM1MmgzMlYyMjRoMzJWMTI4SDE2MHY5NkgxMjhWMzUySDk2VjUxMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyVjI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJWNjQgMzIgMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTI1NiAyNzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjQ4aDY0VjMwNGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTMyLTgwdjMyaDY0VjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JhZHVhdGlvbkNhcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzJjLTguMSAwLTE2LjEgMS40LTIzLjcgNC4xTDE1LjggMTM3LjRDNi4zIDE0MC45IDAgMTQ5LjkgMCAxNjBzNi4zIDE5LjEgMTUuOCAyMi42bDU3LjkgMjAuOUM1Ny4zIDIyOS4zIDQ4IDI1OS44IDQ4IDI5MS45djI4LjFjMCAyOC40LTEwLjggNTcuNy0yMi4zIDgwLjhjLTYuNSAxMy0xMy45IDI1LjgtMjIuNSAzNy42QzAgNDQyLjctLjkgNDQ4LjMgLjkgNDUzLjRzNiA4LjkgMTEuMiAxMC4ybDY0IDE2YzQuMiAxLjEgOC43IC4zIDEyLjQtMnM2LjMtNi4xIDcuMS0xMC40YzguNi00Mi44IDQuMy04MS4yLTIuMS0xMDguN0M5MC4zIDM0NC4zIDg2IDMyOS44IDgwIDMxNi41VjI5MS45YzAtMzAuMiAxMC4yLTU4LjcgMjcuOS04MS41YzEyLjktMTUuNSAyOS42LTI4IDQ5LjItMzUuN2wxNTctNjEuN2M4LjItMy4yIDE3LjUgLjggMjAuNyA5cy0uOCAxNy41LTkgMjAuN2wtMTU3IDYxLjdjLTEyLjQgNC45LTIzLjMgMTIuNC0zMi4yIDIxLjZsMTU5LjYgNTcuNmM3LjYgMi43IDE1LjYgNC4xIDIzLjcgNC4xczE2LjEtMS40IDIzLjctNC4xTDYyNC4yIDE4Mi42YzkuNS0zLjQgMTUuOC0xMi41IDE1LjgtMjIuNnMtNi4zLTE5LjEtMTUuOC0yMi42TDM0My43IDM2LjFDMzM2LjEgMzMuNCAzMjguMSAzMiAzMjAgMzJ6TTEyOCA0MDhjMCAzNS4zIDg2IDcyIDE5MiA3MnMxOTItMzYuNyAxOTItNzJMNDk2LjcgMjYyLjYgMzU0LjUgMzE0Yy0xMS4xIDQtMjIuOCA2LTM0LjUgNnMtMjMuNS0yLTM0LjUtNkwxNDMuMyAyNjIuNiAxMjggNDA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmVhdGVyVGhhbkVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyLjEgOTMuN0MzNS43IDg3LjEgMjcuNyA2OC41IDM0LjMgNTIuMXMyNS4yLTI0LjQgNDEuNi0xNy44bDMyMCAxMjhDNDA4IDE2Ny4xIDQxNiAxNzguOSA0MTYgMTkycy04IDI0LjktMjAuMSAyOS43bC0zMjAgMTI4Yy0xNi40IDYuNi0zNS0xLjQtNDEuNi0xNy44czEuNC0zNSAxNy44LTQxLjZMMjk3LjggMTkyIDUyLjEgOTMuN3pNNDE2IDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyZWF0ZXJUaGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNCA4MS43Yy03LjkgMTUuOC0xLjUgMzUgMTQuMyA0Mi45TDI4MC41IDI1NiAxNy43IDM4Ny40QzEuOSAzOTUuMy00LjUgNDE0LjUgMy40IDQzMC4zczI3LjEgMjIuMiA0Mi45IDE0LjNsMzIwLTE2MGMxMC44LTUuNCAxNy43LTE2LjUgMTcuNy0yOC42cy02LjgtMjMuMi0xNy43LTI4LjZsLTMyMC0xNjBjLTE1LjgtNy45LTM1LTEuNS00Mi45IDE0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBMaW5lc1ZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxOTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjY0em0xMjggMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpcExpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDI4OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAyODh6bTAtMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDM4NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpcFZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwIDM1Mmw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDBjLTIyLjEgMC00MC0xNy45LTQwLTQwbDAtNDhjMC0yMi4xIDE3LjktNDAgNDAtNDB6bTE5MiAwbDQ4IDBjMjIuMSAwIDQwIDE3LjkgNDAgNDBsMCA0OGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtNDggMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MHpNNDAgMzIwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwbDQ4IDBjMjIuMSAwIDQwIDE3LjkgNDAgNDBsMCA0OGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtNDggMHpNMjMyIDE5Mmw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDBjLTIyLjEgMC00MC0xNy45LTQwLTQwbDAtNDhjMC0yMi4xIDE3LjktNDAgNDAtNDB6TTQwIDE2MGMtMjIuMSAwLTQwLTE3LjktNDAtNDBMMCA3MkMwIDQ5LjkgMTcuOSAzMiA0MCAzMmw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDB6TTIzMiAzMmw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDBjLTIyLjEgMC00MC0xNy45LTQwLTQwbDAtNDhjMC0yMi4xIDE3LjktNDAgNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDEzNmMwLTIyLjEtMTcuOS00MC00MC00MEw0MCA5NkMxNy45IDk2IDAgMTEzLjkgMCAxMzZsMCA0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MEg4OGMyMi4xIDAgNDAtMTcuOSA0MC00MGwwLTQ4em0wIDE5MmMwLTIyLjEtMTcuOS00MC00MC00MEg0MGMtMjIuMSAwLTQwIDE3LjktNDAgNDBsMCA0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MEg4OGMyMi4xIDAgNDAtMTcuOSA0MC00MFYzMjh6bTMyLTE5MnY0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MGg0OGMyMi4xIDAgNDAtMTcuOSA0MC00MFYxMzZjMC0yMi4xLTE3LjktNDAtNDAtNDBsLTQ4IDBjLTIyLjEgMC00MCAxNy45LTQwIDQwek0yODggMzI4YzAtMjIuMS0xNy45LTQwLTQwLTQwSDIwMGMtMjIuMSAwLTQwIDE3LjktNDAgNDBsMCA0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MGg0OGMyMi4xIDAgNDAtMTcuOSA0MC00MFYzMjh6bTMyLTE5MnY0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MGg0OGMyMi4xIDAgNDAtMTcuOSA0MC00MFYxMzZjMC0yMi4xLTE3LjktNDAtNDAtNDBsLTQ4IDBjLTIyLjEgMC00MCAxNy45LTQwIDQwek00NDggMzI4YzAtMjIuMS0xNy45LTQwLTQwLTQwSDM2MGMtMjIuMSAwLTQwIDE3LjktNDAgNDB2NDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBoNDhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMzI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcm91cEFycm93c1JvdGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDEuMSA3MS45YzE2LjktNSAyNi42LTIyLjkgMjEuNS0zOS44cy0yMi45LTI2LjYtMzkuOC0yMS41Yy0yMS41IDYuNC00MS44IDE1LjUtNjAuNiAyN0MxMTQuMyAzNCAxMDUuNCAzMiA5NiAzMkM2MC43IDMyIDMyIDYwLjcgMzIgOTZjMCA5LjQgMiAxOC4zIDUuNiAyNi4zYy0xMS41IDE4LjctMjAuNiAzOS0yNyA2MC42Yy01IDE2LjkgNC42IDM0LjggMjEuNSAzOS44czM0LjgtNC42IDM5LjgtMjEuNWM0LjMtMTQuNiAxMC40LTI4LjUgMTcuOS00MS40YzIgLjIgNC4xIC4zIDYuMSAuM2MzNS4zIDAgNjQtMjguNyA2NC02NGMwLTIuMS0uMS00LjEtLjMtNi4xYzEyLjktNy41IDI2LjgtMTMuNiA0MS40LTE3Ljl6bTEyOC02MS4zYy0xNi45LTUtMzQuOCA0LjYtMzkuOCAyMS41czQuNiAzNC44IDIxLjUgMzkuOGMxNC42IDQuMyAyOC41IDEwLjQgNDEuNCAxNy45Yy0uMiAyLS4zIDQuMS0uMyA2LjFjMCAzNS4zIDI4LjcgNjQgNjQgNjRjMi4xIDAgNC4xLS4xIDYuMi0uM2M3LjUgMTIuOSAxMy42IDI2LjggMTcuOSA0MS40YzUgMTYuOSAyMi45IDI2LjYgMzkuOCAyMS41czI2LjYtMjIuOSAyMS41LTM5LjhjLTYuNC0yMS41LTE1LjUtNDEuOC0yNy02MC42YzMuNi04IDUuNi0xNi45IDUuNi0yNi4zYzAtMzUuMy0yOC43LTY0LTY0LTY0Yy05LjQgMC0xOC4zIDItMjYuMyA1LjZjLTE4LjctMTEuNS0zOS0yMC42LTYwLjYtMjd6TTcxLjkgMzEwLjljLTUtMTYuOS0yMi45LTI2LjYtMzkuOC0yMS41cy0yNi42IDIyLjktMjEuNSAzOS44YzYuNCAyMS41IDE1LjUgNDEuOCAyNyA2MC42QzM0IDM5Ny43IDMyIDQwNi42IDMyIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGM5LjQgMCAxOC4zLTIgMjYuMy01LjZjMTguNyAxMS41IDM5IDIwLjYgNjAuNiAyN2MxNi45IDUgMzQuOC00LjYgMzkuOC0yMS41cy00LjYtMzQuOC0yMS41LTM5LjhjLTE0LjYtNC4zLTI4LjUtMTAuNC00MS40LTE3LjljLjItMiAuMy00LjEgLjMtNi4yYzAtMzUuMy0yOC43LTY0LTY0LTY0Yy0yLjEgMC00LjEgLjEtNi4yIC4zYy03LjUtMTIuOS0xMy42LTI2LjgtMTcuOS00MS40em00MjkuNCAxOC4zYzUtMTYuOS00LjYtMzQuOC0yMS41LTM5LjhzLTM0LjggNC42LTM5LjggMjEuNWMtNC4zIDE0LjYtMTAuNCAyOC41LTE3LjkgNDEuNGMtMi0uMi00LjEtLjMtNi4yLS4zYy0zNS4zIDAtNjQgMjguNy02NCA2NGMwIDIuMSAuMSA0LjEgLjMgNi4yYy0xMi45IDcuNS0yNi44IDEzLjYtNDEuNCAxNy45Yy0xNi45IDUtMjYuNiAyMi45LTIxLjUgMzkuOHMyMi45IDI2LjYgMzkuOCAyMS41YzIxLjUtNi40IDQxLjgtMTUuNSA2MC42LTI3YzggMy42IDE2LjkgNS42IDI2LjMgNS42YzM1LjMgMCA2NC0yOC43IDY0LTY0YzAtOS40LTItMTguMy01LjYtMjYuM2MxMS41LTE4LjcgMjAuNi0zOSAyNy02MC42ek0xOTIuOCAyNTYuOGMwLTE1LjYgNS42LTI5LjkgMTQuOS00MS4xTDIyMyAyMzFjNi42IDYuNiAxNy44IDEuOSAxNy44LTcuNFYxNjMuMmMwLTUuNy00LjctMTAuNC0xMC40LTEwLjRIMTY5LjljLTkuMyAwLTEzLjkgMTEuMi03LjQgMTcuOGwxMS4yIDExLjJjLTE3LjkgMTkuOC0yOC45IDQ2LjItMjguOSA3NS4xYzAgNDMuNiAyNC45IDgxLjMgNjEuMSA5OS44YzExLjggNiAyNi4zIDEuNCAzMi4zLTEwLjRzMS40LTI2LjMtMTAuNC0zMi4zYy0yMC44LTEwLjYtMzQuOS0zMi4yLTM0LjktNTd6bTkzLjEtNTguNmMyMC44IDEwLjYgMzQuOSAzMi4yIDM0LjkgNTdjMCAxNS42LTUuNiAyOS45LTE0LjkgNDEuMUwyOTAuNiAyODFjLTYuNi02LjYtMTcuOC0xLjktMTcuOCA3LjR2NjAuNWMwIDUuNyA0LjcgMTAuNCAxMC40IDEwLjRoNjAuNWM5LjMgMCAxMy45LTExLjIgNy40LTE3LjhsLTExLjItMTEuMmMxNy45LTE5LjggMjguOS00Ni4yIDI4LjktNzUuMWMwLTQzLjYtMjQuOS04MS4zLTYxLjEtOTkuOGMtMTEuOC02LTI2LjMtMS40LTMyLjMgMTAuNHMtMS40IDI2LjMgMTAuNCAzMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWFyYW5pU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNjYuN0M2OS4yIDgxLjkgMCAxNjAuOSAwIDI1NnM2OS4yIDE3NC4xIDE2MCAxODkuM1Y0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDUuM2M5MC44LTE1LjIgMTYwLTk0LjIgMTYwLTE4OS4zYzAtMTcuNy0xNC4zLTMyLTMyLTMySDIyNFYxMzJjMjIuMSA1LjcgNDEuOCAxNy4xIDU3LjYgMzIuNmMxMi42IDEyLjQgMzIuOSAxMi4yIDQ1LjMtLjRzMTIuMi0zMi45LS41LTQ1LjNDMjk5IDkyIDI2My41IDczLjMgMjI0IDY2LjdWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTE2MCAxMzJWMzgwYy01NS4yLTE0LjItOTYtNjQuMy05Ni0xMjRzNDAuOC0xMDkuOCA5Ni0xMjR6TTIyNCAzODBWMjg4aDkyYy0xMS42IDQ1LTQ3IDgwLjQtOTIgOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1aXRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjUgN2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMzgzIDU1Yy0yLjQgMi40LTQuMyA1LjMtNS41IDguNWwtMTUuNCA0MS03Ny41IDc3LjZjLTQ1LjEtMjkuNC05OS4zLTMwLjItMTMxIDEuNmMtMTEgMTEtMTggMjQuNi0yMS40IDM5LjZjLTMuNyAxNi42LTE5LjEgMzAuNy0zNi4xIDMxLjZjLTI1LjYgMS4zLTQ5LjMgMTAuNy02Ny4zIDI4LjZDLTE2IDMyOC40LTcuNiA0MDkuNCA0Ny41IDQ2NC41czEzNi4xIDYzLjUgMTgwLjkgMTguN2MxNy45LTE3LjkgMjcuNC00MS43IDI4LjYtNjcuM2MuOS0xNyAxNS0zMi4zIDMxLjYtMzYuMWMxNS0zLjQgMjguNi0xMC41IDM5LjYtMjEuNGMzMS44LTMxLjggMzEtODUuOSAxLjYtMTMxbDc3LjYtNzcuNiA0MS0xNS40YzMuMi0xLjIgNi4xLTMuMSA4LjUtNS41bDQ4LTQ4YzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDQ2NSA3ek0yMDggMjU2YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY4SDMyQzE0LjMgNjQgMCA3OC4zIDAgOTZWMjA4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQyYzIwLjggMCAzNi4xIDE5LjYgMzEgMzkuOEwzMyA0NDAuMmMtMi40IDkuNi0uMiAxOS43IDUuOCAyNy41UzU0LjEgNDgwIDY0IDQ4MGg5NmMxNC43IDAgMjcuNS0xMCAzMS0yNC4yTDIxNyAzNTJIMzIxLjRjMjMuNyAwIDQ0LjgtMTQuOSA1Mi43LTM3LjJMNDAwLjkgMjQwSDQzMmM4LjUgMCAxNi42LTMuNCAyMi42LTkuNEw0NzcuMyAyMDhINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDUyOFY1NnpNMzIxLjQgMzA0SDIyOWwxNi02NGgxMDVsLTIxIDU4LjdjLTEuMSAzLjItNC4yIDUuMy03LjUgNS4zek04MCAxMjhINDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAyNTZsMCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTIyNFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYxOTJMNjQgMTkyIDY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTkyIDI1NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW1tZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEzLjUgMjM3LjVjLTI4LjIgNC44LTU4LjItMy42LTgwLTI1LjRsLTM4LjEtMzguMUMyODAuNCAxNTkgMjcyIDEzOC44IDI3MiAxMTcuNlYxMDUuNUwxOTIuMyA2MmMtNS4zLTIuOS04LjYtOC42LTguMy0xNC43czMuOS0xMS41IDkuNS0xNGw0Ny4yLTIxQzI1OS4xIDQuMiAyNzkgMCAyOTkuMiAwaDE4LjFjMzYuNyAwIDcyIDE0IDk4LjcgMzkuMWw0NC42IDQyYzI0LjIgMjIuOCAzMy4yIDU1LjcgMjYuNiA4Nkw1MDMgMTgzbDgtOGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwyNCAyNGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtODggODhjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC0yNC0yNGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsOC04LTE3LjUtMTcuNXpNMjcuNCAzNzcuMUwyNjAuOSAxODIuNmMzLjUgNC45IDcuNSA5LjYgMTEuOCAxNGwzOC4xIDM4LjFjNiA2IDEyLjQgMTEuMiAxOS4yIDE1LjdMMTM0LjkgNDg0LjZjLTE0LjUgMTcuNC0zNiAyNy40LTU4LjYgMjcuNEMzNC4xIDUxMiAwIDQ3Ny44IDAgNDM1LjdjMC0yMi42IDEwLjEtNDQuMSAyNy40LTU4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0LjYgMjg4SDgwYzguOCAwIDE2LTcuMiAxNi0xNlY3MmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwVjIwNGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFY0MGMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwVjIwNGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFY3MmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwVjI3MmMwIDguOCA3LjIgMTYgMTYgMTZoNDUuNGMxOS4xIDAgMzQuNiAxNS41IDM0LjYgMzQuNmMwIDguNi0zLjIgMTYuOS05IDIzLjNMNDE2LjYgNDQxYy00MS4xIDQ1LjItOTkuNCA3MS0xNjAuNiA3MXMtMTE5LjQtMjUuOC0xNjAuNi03MUw5IDM0NS45Yy01LjgtNi40LTktMTQuNy05LTIzLjNDMCAzMDMuNSAxNS41IDI4OCAzNC42IDI4OHpNMjU2IDI4OGMtMzguNCAwLTc2LjggMzUuOC05MC42IDUwLjJjLTMuNiAzLjctNS40IDguNy01LjQgMTMuOHMxLjggMTAuMSA1LjQgMTMuOEMxNzkuMiAzODAuMiAyMTcuNiA0MTYgMjU2IDQxNnM3Ni44LTM1LjggOTAuNi01MC4yYzMuNi0zLjcgNS40LTguNyA1LjQtMTMuOHMtMS44LTEwLjEtNS40LTEzLjhDMzMyLjggMzIzLjggMjk0LjQgMjg4IDI1NiAyODh6bTAgMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kQmFja0Zpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDBDMTE3LjUgMCA5NiAyMS41IDk2IDQ4Vjk2djI4LjVWMTc2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE0OS4zbC05IDcuNUM0MC40IDE2OSAzMiAxODcgMzIgMjA2VjI0NGMwIDM4IDE2LjkgNzQgNDYuMSA5OC4zTDEyOCAzODR2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM3NC43YzQ2LjktMTkgODAtNjUgODAtMTE4LjdWMTc2IDE2MCAxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhjLTEyLjQgMC0yMy42IDQuNy0zMi4xIDEyLjNDMzUwIDgzLjUgMzI5LjMgNjQgMzA0IDY0Yy0xMi40IDAtMjMuNiA0LjctMzIuMSAxMi4zQzI3MCA1MS41IDI0OS4zIDMyIDIyNCAzMmMtMTIuNCAwLTIzLjYgNC43LTMyLjEgMTIuM0MxOTAgMTkuNSAxNjkuMyAwIDE0NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kRG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjMzNmMwIDEuNSAwIDMuMSAuMSA0LjZMNjcuNiAyODNjLTE2LTE1LjItNDEuMy0xNC42LTU2LjYgMS40cy0xNC42IDQxLjMgMS40IDU2LjZMMTI0LjggNDQ4YzQzLjEgNDEuMSAxMDAuNCA2NCAxNjAgNjRIMzA0Yzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2VjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyNDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMyek0yNDAgMzM2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bTgwIDE2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptNDgtMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptLTE2IDgwYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpNMjQwIDQzMmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwem0tNDgtNDhhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kRmlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlYxNDRIMTYwVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek02NCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjgwSDY0VjY0em0xOTIgMGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0em05NiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjEyOHptLTk2IDg4bDAtLjZjOS40IDUuNCAyMC4zIDguNiAzMiA4LjZjMTMuMiAwIDI1LjQtNCAzNS42LTEwLjhjOC43IDI0LjkgMzIuNSA0Mi44IDYwLjQgNDIuOGMxMS43IDAgMjIuNi0zLjEgMzItOC42VjI1NmMwIDUyLjMtMjUuMSA5OC44LTY0IDEyOHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwMS42Yy0xNy4zLTcuOS0zMy4yLTE4LjgtNDYuOS0zMi41TDY5LjUgMzU3LjVDNDUuNSAzMzMuNSAzMiAzMDAuOSAzMiAyNjdWMjQwYzAtMzUuMyAyOC43LTY0IDY0LTY0aDg4YzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwSDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg1NmMzOS44IDAgNzItMzIuMiA3Mi03MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDI0VjM0LjVjNi40IDEuMiAxMi42IDIuNyAxOC4yIDQuMmMxMi44IDMuNCAyMC40IDE2LjYgMTcgMjkuNHMtMTYuNiAyMC40LTI5LjQgMTdjLTEwLjktMi45LTIxLjEtNC45LTMwLjItNWMtNy4zLS4xLTE0LjcgMS43LTE5LjQgNC40Yy0yLjEgMS4zLTMuMSAyLjQtMy41IDNjLS4zIC41LS43IDEuMi0uNyAyLjhjMCAuMyAwIC41IDAgLjZjLjIgLjIgLjkgMS4yIDMuMyAyLjZjNS44IDMuNSAxNC40IDYuMiAyNy40IDEwLjFsLjkgLjNjMTEuMSAzLjMgMjUuOSA3LjggMzcuOSAxNS4zYzEzLjcgOC42IDI2LjEgMjIuOSAyNi40IDQ0LjljLjMgMjIuNS0xMS40IDM4LjktMjYuNyA0OC41Yy02LjcgNC4xLTEzLjkgNy0yMS4zIDguOFYyMzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjIwLjZjLTkuNS0yLjMtMTguMi01LjMtMjUuNi03LjhjLTIuMS0uNy00LjEtMS40LTYtMmMtMTIuNi00LjItMTkuNC0xNy44LTE1LjItMzAuNHMxNy44LTE5LjQgMzAuNC0xNS4yYzIuNiAuOSA1IDEuNyA3LjMgMi41YzEzLjYgNC42IDIzLjQgNy45IDMzLjkgOC4zYzggLjMgMTUuMS0xLjYgMTkuMi00LjFjMS45LTEuMiAyLjgtMi4yIDMuMi0yLjljLjQtLjYgLjktMS44IC44LTQuMWwwLS4yYzAtMSAwLTIuMS00LTQuNmMtNS43LTMuNi0xNC4zLTYuNC0yNy4xLTEwLjNsLTEuOS0uNmMtMTAuOC0zLjItMjUtNy41LTM2LjQtMTQuNGMtMTMuNS04LjEtMjYuNS0yMi0yNi42LTQ0LjFjLS4xLTIyLjkgMTIuOS0zOC42IDI3LjctNDcuNGM2LjQtMy44IDEzLjMtNi40IDIwLjItOC4yVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6TTU2OC4yIDMzNi4zYzEzLjEgMTcuOCA5LjMgNDIuOC04LjUgNTUuOUw0MzMuMSA0ODUuNWMtMjMuNCAxNy4yLTUxLjYgMjYuNS04MC43IDI2LjVIMTkyIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJINjguOGw0NC45LTM2YzIyLjctMTguMiA1MC45LTI4IDgwLTI4SDI3MmgxNiA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyODggMjcyYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDM5Mi42bDExOS43LTg4LjJjMTcuOC0xMy4xIDQyLjgtOS4zIDU1LjkgOC41ek0xOTMuNiAzODRsMCAwLS45IDBjLjMgMCAuNiAwIC45IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRIb2xkaW5nRHJvcGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzUuNSA2LjZDMjc4LjMgMi41IDI4MyAwIDI4OCAwczkuNyAyLjUgMTIuNSA2LjZMMzY2LjggMTAzQzM3OCAxMTkuMyAzODQgMTM4LjYgMzg0IDE1OC4zVjE2MGMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NnYtMS43YzAtMTkuOCA2LTM5IDE3LjItNTUuM0wyNzUuNSA2LjZ6TTU2OC4yIDMzNi4zYzEzLjEgMTcuOCA5LjMgNDIuOC04LjUgNTUuOUw0MzMuMSA0ODUuNWMtMjMuNCAxNy4yLTUxLjYgMjYuNS04MC43IDI2LjVIMTkyIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJINjguOGw0NC45LTM2YzIyLjctMTguMiA1MC45LTI4IDgwLTI4SDI3MmgxNiA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyODggMjcyYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDM5Mi42bDExOS43LTg4LjJjMTcuOC0xMy4xIDQyLjgtOS4zIDU1LjkgOC41ek0xOTMuNiAzODRsMCAwLS45IDBjLjMgMCAuNiAwIC45IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRIb2xkaW5nSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjggMjA3LjdjLTEzLjEtMTcuOC05LjMtNDIuOCA4LjUtNTUuOUwxNDIuOSA1OC41QzE2Ni4yIDQxLjMgMTk0LjUgMzIgMjIzLjUgMzJIMzg0IDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg1MDcuMmwtNDQuOSAzNmMtMjIuNyAxOC4yLTUwLjkgMjgtODAgMjhIMzA0IDI4OCAyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoNjQgMTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTgzLjRMNjMuNyAyMTYuMmMtMTcuOCAxMy4xLTQyLjggOS4zLTU1LjktOC41ek0zODIuNCAxNjBsMCAwIC45IDBjLS4zIDAtLjYgMC0uOSAwek01NjguMiAzMDQuM2MxMy4xIDE3LjggOS4zIDQyLjgtOC41IDU1LjlMNDMzLjEgNDUzLjVjLTIzLjQgMTcuMi01MS42IDI2LjUtODAuNyAyNi41SDE5MiAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDY4LjhsNDQuOS0zNmMyMi43LTE4LjIgNTAuOS0yOCA4MC0yOEgyNzJoMTYgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjg4IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzOTIuNmwxMTkuNy04OC4yYzE3LjgtMTMuMSA0Mi44LTkuMyA1NS45IDguNXpNMTkzLjYgMzUybDAgMC0uOSAwYy4zIDAgLjYgMCAuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ0hlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2My45IDEzNi45Yy0yOS40LTI5LjgtMjkuNC03OC4yIDAtMTA4czc3LTI5LjggMTA2LjQgMGwxNy43IDE4IDE3LjctMThjMjkuNC0yOS44IDc3LTI5LjggMTA2LjQgMHMyOS40IDc4LjIgMCAxMDhMMzEwLjUgMjQwLjFjLTYuMiA2LjMtMTQuMyA5LjQtMjIuNSA5LjRzLTE2LjMtMy4xLTIyLjUtOS40TDE2My45IDEzNi45ek01NjguMiAzMzYuM2MxMy4xIDE3LjggOS4zIDQyLjgtOC41IDU1LjlMNDMzLjEgNDg1LjVjLTIzLjQgMTcuMi01MS42IDI2LjUtODAuNyAyNi41SDE5MiAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDY4LjhsNDQuOS0zNmMyMi43LTE4LjIgNTAuOS0yOCA4MC0yOEgyNzJoMTYgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjg4IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzOTIuNmwxMTkuNy04OC4yYzE3LjgtMTMuMSA0Mi44LTkuMyA1NS45IDguNXpNMTkzLjYgMzg0bDAgMC0uOSAwYy4zIDAgLjYgMCAuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI0VjgwSDE2OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNTZ2NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTc2aDU2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjEwNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMjBWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNNTU5LjcgMzkyLjJjMTcuOC0xMy4xIDIxLjYtMzguMSA4LjUtNTUuOXMtMzguMS0yMS42LTU1LjktOC41TDM5Mi42IDQxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMTYgNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjg4IDI3MiAxOTMuN2MtMjkuMSAwLTU3LjMgOS45LTgwIDI4TDY4LjggMzg0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgxOTIgMzUyLjVjMjkgMCA1Ny4zLTkuMyA4MC43LTI2LjVsMTI2LjYtOTMuM3ptLTM2Ny04LjJsLjkgMCAwIDBjLS4zIDAtLjYgMC0uOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTkuNyAzOTIuMmMxNy44LTEzLjEgMjEuNi0zOC4xIDguNS01NS45cy0zOC4xLTIxLjYtNTUuOS04LjVMMzkyLjYgNDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgxNiA2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyODggMjcyIDE5My43Yy0yOS4xIDAtNTcuMyA5LjktODAgMjhMNjguOCAzODRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDE5MiAzNTIuNWMyOSAwIDU3LjMtOS4zIDgwLjctMjYuNWwxMjYuNi05My4zem0tMzY2LjEtOC4zYS41IC41IDAgMSAxIC0uOSAuMiAuNSAuNSAwIDEgMSAuOS0uMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZExpemFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExMkMwIDg1LjUgMjEuNSA2NCA0OCA2NEgxNjBoODAgNDYuNWMzNi44IDAgNzEuMiAxOCA5Mi4xIDQ4LjJsMTEzLjUgMTY0YzEzIDE4LjcgMTkuOSA0MSAxOS45IDYzLjh2MTIgMTYgNDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDIuMkwyNzMuOSAzNTJIMjQwIDE2MCAxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDhoNDggODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhIMTYwIDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZE1pZGRsZUZpbmdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIgMGMtMjIuMSAwLTQwIDE3LjktNDAgNDBWMjA0LjJjLTguNS03LjYtMTkuNy0xMi4yLTMyLTEyLjJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djcgNzNjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjY0LjNjLTIgMS40LTMuOSAzLTUuOCA0LjVMNTUgMjg0LjhDNDAuNCAyOTcgMzIgMzE1IDMyIDMzNFYzNzJjMCAzOCAxNi45IDc0IDQ2LjEgOTguM2w1LjQgNC41YzI4LjggMjQgNjUgMzcuMSAxMDIuNCAzNy4xSDMwNGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFYzMjAgMjg4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4Yy0xMi40IDAtMjMuNiA0LjctMzIuMSAxMi4zQzM1MCAyMjcuNSAzMjkuMyAyMDggMzA0IDIwOGMtMTIuMyAwLTIzLjUgNC42LTMyIDEyLjJWNDBjMC0yMi4xLTE3LjktNDAtNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQZWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlYyNDBIMTkyVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAxNjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem02NCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNHpNOTMuMyA1MS4yTDE3NS45IDI0MEgxMDYuMUwzNC43IDc2LjhDMjcuNiA2MC42IDM1IDQxLjggNTEuMiAzNC43czM1LjEgLjMgNDIuMSAxNi41em0yNyAyMjEuM2wtLjItLjVoNjkuOUgyMTZjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDBIMTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDU2YzM5LjggMCA3Mi0zMi4yIDcyLTcybDAtLjZjOS40IDUuNCAyMC4zIDguNiAzMiA4LjZjMTMuMiAwIDI1LjQtNCAzNS42LTEwLjhjOC43IDI0LjkgMzIuNSA0Mi44IDYwLjQgNDIuOGMxMS43IDAgMjIuNi0zLjEgMzItOC42VjM1MmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MEgyMjYuM2MtNDIuNCAwLTgzLjEtMTYuOS0xMTMuMS00Ni45bC0xMS42LTExLjZDNzcuNSA0MjkuNSA2NCAzOTYuOSA2NCAzNjNWMzM2YzAtMzIuNyAyNC42LTU5LjcgNTYuMy02My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI3MkgzMlY0ODB6TTIyNCAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjR6bS02NCA2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMDRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJ6bTE2MC05NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NHptLTk2LTg4bDAgLjZjOS40LTUuNCAyMC4zLTguNiAzMi04LjZjMTMuMiAwIDI1LjQgNCAzNS42IDEwLjhjOC43LTI0LjkgMzIuNS00Mi44IDYwLjQtNDIuOGMxMS43IDAgMjIuNiAzLjEgMzIgOC42VjE2MEMzODQgNzEuNiAzMTIuNCAwIDIyNCAwSDE2Mi4zQzExOS44IDAgNzkuMSAxNi45IDQ5LjEgNDYuOUwzNy41IDU4LjVDMTMuNSA4Mi41IDAgMTE1LjEgMCAxNDl2MjdjMCAzNS4zIDI4LjcgNjQgNjQgNjRoODhjMjIuMSAwIDQwLTE3LjkgNDAtNDBzLTE3LjktNDAtNDAtNDBIOTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNTZjMzkuOCAwIDcyIDMyLjIgNzIgNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQb2ludExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgOTZDMTQuMyA5NiAwIDExMC4zIDAgMTI4czE0LjMgMzIgMzIgMzJsMjA4IDAgMC02NEwzMiA5NnpNMTkyIDI4OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02NCAwem0tNjQtNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsNDggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNDggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTk2IDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02NCAwem04OC05NmwtLjYgMGM1LjQgOS40IDguNiAyMC4zIDguNiAzMmMwIDEzLjItNCAyNS40LTEwLjggMzUuNmMyNC45IDguNyA0Mi44IDMyLjUgNDIuOCA2MC40YzAgMTEuNy0zLjEgMjIuNi04LjYgMzJsOC42IDBjODguNCAwIDE2MC03MS42IDE2MC0xNjBsMC02MS43YzAtNDIuNC0xNi45LTgzLjEtNDYuOS0xMTMuMWwtMTEuNi0xMS42QzQyOS41IDc3LjUgMzk2LjkgNjQgMzYzIDY0bC0yNyAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDg4YzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBsMC01NmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgNTZjMCAzOS44LTMyLjIgNzItNzIgNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQb2ludFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjA4IDAgMC02NCAyMDggMHpNMzIwIDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwem02NC02NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNDggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyek0yODggMzg0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDY0IDB6bS04OC05NmwuNiAwYy01LjQgOS40LTguNiAyMC4zLTguNiAzMmMwIDEzLjIgNCAyNS40IDEwLjggMzUuNkMxNzcuOSAzNjQuMyAxNjAgMzg4LjEgMTYwIDQxNmMwIDExLjcgMy4xIDIyLjYgOC42IDMybC04LjYgMEM3MS42IDQ0OCAwIDM3Ni40IDAgMjg4bDAtNjEuN2MwLTQyLjQgMTYuOS04My4xIDQ2LjktMTEzLjFsMTEuNi0xMS42QzgyLjUgNzcuNSAxMTUuMSA2NCAxNDkgNjRsMjcgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDg4YzAgMjIuMS0xNy45IDQwLTQwIDQwcy00MC0xNy45LTQwLTQwbDAtNTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCA1NmMwIDM5LjggMzIuMiA3MiA3MiA3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMzIgMTQuMyA0Ni4zIDAgNjQgMFM5NiAxNC4zIDk2IDMyVjI0MEgzMlYzMnpNMjI0IDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE5MnptLTY0LTY0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTYwIDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjI0em0tOTYgODhsMC0uNmM5LjQgNS40IDIwLjMgOC42IDMyIDguNmMxMy4yIDAgMjUuNC00IDM1LjYtMTAuOGM4LjcgMjQuOSAzMi41IDQyLjggNjAuNCA0Mi44YzExLjcgMCAyMi42LTMuMSAzMi04LjZWMzUyYzAgODguNC03MS42IDE2MC0xNjAgMTYwSDE2Mi4zYy00Mi40IDAtODMuMS0xNi45LTExMy4xLTQ2LjlMMzcuNSA0NTMuNUMxMy41IDQyOS41IDAgMzk2LjkgMCAzNjNWMzM2YzAtMzUuMyAyOC43LTY0IDY0LTY0aDg4YzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwSDk2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDU2YzM5LjggMCA3Mi0zMi4yIDcyLTcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNDBjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MFYxODguMmM4LjUtNy42IDE5LjctMTIuMiAzMi0xMi4yYzIwLjYgMCAzOC4yIDEzIDQ1IDMxLjJjOC44LTkuMyAyMS4yLTE1LjIgMzUtMTUuMmMyNS4zIDAgNDYgMTkuNSA0Ny45IDQ0LjNjOC41LTcuNyAxOS44LTEyLjMgMzIuMS0xMi4zYzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4IDE2IDQ4YzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4bC0xNiAwSDI0MGwtLjEgMGgtNS4yYy01IDAtOS45LS4zLTE0LjctMWMtNTUuMy01LjYtMTA2LjItMzQtMTQwLTc5TDggMzM2Yy0xMy4zLTE3LjctOS43LTQyLjcgOC01NnM0Mi43LTkuNyA1NiA4bDU2IDc0LjdWNDB6TTI0MCAzMDRjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMDR6bTQ4LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2em04MCAxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjMwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFNjaXNzb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwIDIwOGMtMjIuMSAwLTQwIDE3LjktNDAgNDBzMTcuOSA0MCA0MCA0MGwxODAuMiAwYy03LjYgOC41LTEyLjIgMTkuNy0xMi4yIDMyYzAgMjUuMyAxOS41IDQ2IDQ0LjMgNDcuOWMtNy43IDguNS0xMi4zIDE5LjgtMTIuMyAzMi4xYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDMyIDAgNjQgMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGwwLTExMy4xYzAtNDAuMi0xNi03OC44LTQ0LjQtMTA3LjNDNDQ0LjggNzYuOCA0MTMuOSA2NCAzODEuNyA2NEwzMzYgNjRjLTIxLjMgMC0zOS4zIDEzLjktNDUuNiAzMy4xbDc0LjUgMjMuN2M4LjQgMi43IDEzLjEgMTEuNyAxMC40IDIwLjFzLTExLjcgMTMuMS0yMC4xIDEwLjRMMjg4IDEyOS45bDAgLjFMODQgNjUuOEM2Mi45IDU5LjIgNDAuNSA3MC45IDMzLjggOTJzNS4xIDQzLjUgMjYuMiA1MC4yTDI2OS41IDIwOCA0MCAyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlYyNDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjI0MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjMyMy4xYy0xMS45IDQuOC0yMS4zIDE0LjktMjUgMjcuOGwtOC45IDMxLjJMNDc4LjkgMzkxQzQ2MC42IDM5Ni4zIDQ0OCA0MTMgNDQ4IDQzMmMwIDE4LjkgMTIuNSAzNS42IDMwLjYgNDAuOUM0NDguNCA0OTcuNCA0MDkuOSA1MTIgMzY4IDUxMkgzNDguOGMtNTkuNiAwLTExNi45LTIyLjktMTYwLTY0TDc2LjQgMzQxYy0xNi0xNS4yLTE2LjYtNDAuNi0xLjQtNTYuNnM0MC42LTE2LjYgNTYuNi0xLjRsNjAuNSA1Ny42YzAtMS41LS4xLTMuMS0uMS00LjZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYyNDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTcuMyAzMjYuNmMtMS4xLTMuOS00LjctNi42LTguNy02LjZzLTcuNiAyLjctOC43IDYuNkwyODggMzUybC0yNS40IDcuM2MtMy45IDEuMS02LjYgNC43LTYuNiA4LjdzMi43IDcuNiA2LjYgOC43TDI4OCAzODRsNy4zIDI1LjRjMS4xIDMuOSA0LjcgNi42IDguNyA2LjZzNy42LTIuNyA4LjctNi42TDMyMCAzODRsMjUuNC03LjNjMy45LTEuMSA2LjYtNC43IDYuNi04LjdzLTIuNy03LjYtNi42LTguN0wzMjAgMzUybC03LjMtMjUuNHpNMTA0IDEyMGw0OC4zIDEzLjhjNC42IDEuMyA3LjcgNS41IDcuNyAxMC4ycy0zLjEgOC45LTcuNyAxMC4yTDEwNCAxNjggOTAuMiAyMTYuM2MtMS4zIDQuNi01LjUgNy43LTEwLjIgNy43cy04LjktMy4xLTEwLjItNy43TDU2IDE2OCA3LjcgMTU0LjJDMy4xIDE1Mi45IDAgMTQ4LjcgMCAxNDRzMy4xLTguOSA3LjctMTAuMkw1NiAxMjAgNjkuOCA3MS43QzcxLjEgNjcuMSA3NS4zIDY0IDgwIDY0czguOSAzLjEgMTAuMiA3LjdMMTA0IDEyMHpNNTg0IDQwOGw0OC4zIDEzLjhjNC42IDEuMyA3LjcgNS41IDcuNyAxMC4ycy0zLjEgOC45LTcuNyAxMC4yTDU4NCA0NTZsLTEzLjggNDguM2MtMS4zIDQuNi01LjUgNy43LTEwLjIgNy43cy04LjktMy4xLTEwLjItNy43TDUzNiA0NTZsLTQ4LjMtMTMuOGMtNC42LTEuMy03LjctNS41LTcuNy0xMC4yczMuMS04LjkgNy43LTEwLjJMNTM2IDQwOGwxMy44LTQ4LjNjMS4zLTQuNiA1LjUtNy43IDEwLjItNy43czguOSAzLjEgMTAuMiA3LjdMNTg0IDQwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFNwb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni45IDIzLjdDMjQyLjMgNi42IDIyNC44LTMuNSAyMDcuNyAxLjFzLTI3LjIgMjIuMS0yMi42IDM5LjJMMjM4IDIzNy44YzIuNSA5LjItNC41IDE4LjItMTQgMTguMmMtNi40IDAtMTItNC4yLTEzLjktMTAuM0wxNjYuNiAxMDIuN2MtNS4xLTE2LjktMjMtMjYuNC0zOS45LTIxLjNzLTI2LjQgMjMtMjEuMyAzOS45bDYyLjggMjA2LjRjMi40IDcuOS03LjIgMTMuOC0xMy4yIDguMUw5OS42IDI4M2MtMTYtMTUuMi00MS4zLTE0LjYtNTYuNiAxLjRzLTE0LjYgNDEuMyAxLjQgNTYuNkwxNTYuOCA0NDhjNDMuMSA0MS4xIDEwMC40IDY0IDE2MCA2NGgxMC45IDguMmMuMSAwIC4xLS4xIC4xLS4xcy4xLS4xIC4xLS4xYzU4LjMtMy41IDEwOC42LTQzLjIgMTI1LjMtOTkuN2w4MS4yLTI3NWM1LTE2LjktNC43LTM0LjctMjEuNi0zOS44cy0zNC43IDQuNy0zOS44IDIxLjZMNDQzLjUgMjQ3LjFjLTEuNiA1LjMtNi40IDguOS0xMiA4LjljLTcuOSAwLTEzLjgtNy4zLTEyLjItMTUuMWwzNi0xNzAuM2MzLjctMTcuMy03LjQtMzQuMy0yNC43LTM3LjlzLTM0LjMgNy40LTM3LjkgMjQuN0wzNTUuMSAyMzUuMWMtMi42IDEyLjItMTMuMyAyMC45LTI1LjggMjAuOWMtMTEuOSAwLTIyLjQtOC0yNS40LTE5LjVsLTU3LTIxMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyNDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzM2YzAgMS41IDAgMy4xIC4xIDQuNkw2Ny42IDI4M2MtMTYtMTUuMi00MS4zLTE0LjYtNTYuNiAxLjRzLTE0LjYgNDEuMyAxLjQgNTYuNkwxMjQuOCA0NDhjNDMuMSA0MS4xIDEwMC40IDY0IDE2MCA2NEgzMDRjOTcuMiAwIDE3Ni03OC44IDE3Ni0xNzZWMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyNDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRjdWZmcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMTkyIDQ4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptLTMyIDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyaDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MTZjMCAxLjctLjIgMy40LS41IDUuMUMyODAuMyAyMjkuNiAzMjAgMjg2LjIgMzIwIDM1MmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQ0MC40IDAgMzUyYzAtNjUuOCAzOS43LTEyMi40IDk2LjUtMTQ2LjljLS40LTEuNi0uNS0zLjMtLjUtNS4xVjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg4YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0wIDMyMGE5NiA5NiAwIDEgMCAwLTE5MiA5NiA5NiAwIDEgMCAwIDE5MnptMTkyLTk2YzAtMjUuOS01LjEtNTAuNS0xNC40LTczLjFjMTYuOS0zMi45IDQ0LjgtNTkuMSA3OC45LTczLjljLS40LTEuNi0uNS0zLjMtLjUtNS4xVjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYxNmMwIDEuNy0uMiAzLjQtLjUgNS4xQzYwMC4zIDIyOS42IDY0MCAyODYuMiA2NDAgMzUyYzAgODguNC03MS42IDE2MC0xNjAgMTYwYy02MiAwLTExNS44LTM1LjMtMTQyLjQtODYuOWM5LjMtMjIuNSAxNC40LTQ3LjIgMTQuNC03My4xem0yMjQgMGE5NiA5NiAwIDEgMCAtMTkyIDAgOTYgOTYgMCAxIDAgMTkyIDB6TTM2OCAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptODAgNDhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc0FzbEludGVycHJldGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTYuNiA0Ni4zYzcuOS0xNS44IDEuNS0zNS0xNC4zLTQyLjlzLTM1LTEuNS00Mi45IDE0LjNMMTMuNSAxODkuNEM0LjYgMjA3LjIgMCAyMjYuOCAwIDI0Ni43VjI1NmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOGg3MiA4di0uM2MzNS4yLTIuNyA2NS40LTIyLjggODIuMS01MS43YzguOC0xNS4zIDMuNi0zNC45LTExLjctNDMuN3MtMzQuOS0zLjYtNDMuNyAxMS43Yy03IDEyLTE5LjkgMjAtMzQuNyAyMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MGMxNC44IDAgMjcuNyA4IDM0LjcgMjBjOC44IDE1LjMgMjguNCAyMC41IDQzLjcgMTEuN3MyMC41LTI4LjQgMTEuNy00My43Yy0xMi44LTIyLjEtMzMuNi0zOS4xLTU4LjQtNDcuMWw4MC44LTIyYzE3LTQuNiAyNy4xLTIyLjIgMjIuNS0zOS4zcy0yMi4yLTI3LjEtMzkuMy0yMi41TDE5NC45IDEyNC42bDgxLjYtNjhjMTMuNi0xMS4zIDE1LjQtMzEuNSA0LjEtNDUuMVMyNDkuMS0zLjkgMjM1LjUgNy40TDEzMy42IDkyLjNsMjMtNDZ6TTQ4My40IDQ2NS43Yy03LjkgMTUuOC0xLjUgMzUgMTQuMyA0Mi45czM1IDEuNSA0Mi45LTE0LjNsODUuOS0xNzEuN2M4LjktMTcuOCAxMy41LTM3LjQgMTMuNS01Ny4yVjI1NmMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEg0NDBoLTh2LjNjLTM1LjIgMi43LTY1LjQgMjIuOC04Mi4xIDUxLjdjLTguOSAxNS4zLTMuNiAzNC45IDExLjcgNDMuN3MzNC45IDMuNiA0My43LTExLjdjNy0xMiAxOS45LTIwIDM0LjctMjBjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDBjLTE0LjggMC0yNy43LTgtMzQuNy0yMGMtOC45LTE1LjMtMjguNC0yMC41LTQzLjctMTEuN3MtMjAuNSAyOC40LTExLjcgNDMuN2MxMi44IDIyLjEgMzMuNiAzOS4xIDU4LjQgNDcuMWwtODAuOCAyMmMtMTcuMSA0LjctMjcuMSAyMi4yLTIyLjUgMzkuM3MyMi4yIDI3LjEgMzkuMyAyMi41bDEwMC43LTI3LjUtODEuNiA2OGMtMTMuNiAxMS4zLTE1LjQgMzEuNS00LjEgNDUuMXMzMS41IDE1LjQgNDUuMSA0LjFsMTAxLjktODQuOS0yMyA0NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNCb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMkM5NiAxNC4zIDgxLjcgMCA2NCAwUzMyIDE0LjMgMzIgMzJWOTZ2NTkuMSAuN1YxOTJ2MjEuOWMwIDE0LjIgNS4xIDI3LjkgMTQuMyAzOC43TDEzMS42IDM1MkgxMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMzJIMjg4aDY0SDQ4MGgzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGgtMy42bDg1LjMtOTkuNWM5LjItMTAuOCAxNC4zLTI0LjUgMTQuMy0zOC43VjE5MiAxNTUuOHYtLjdWOTYgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWOTZ2NDguOGwtNjkuMyA5Mi40Yy01LjcgNy42LTE2LjEgOS42LTI0LjIgNC44Yy05LjctNS43LTEyLjEtMTguNy01LjEtMjcuNUw0NzMgMTgwYzEwLjgtMTMuNSA4LjktMzMuMy00LjQtNDQuNXMtMzMtOS44LTQ0LjUgMy4ybC00Ni43IDUyLjVDMzYxIDIwOS43IDM1MiAyMzMuNCAzNTIgMjU4LjFWMzIwdjMySDI4OFYzMjAgMjU4LjFjMC0yNC42LTktNDguNC0yNS40LTY2LjhsLTQ2LjctNTIuNWMtMTEuNS0xMy0zMS4zLTE0LjQtNDQuNS0zLjJzLTE1LjIgMzAuOS00LjQgNDQuNWwyNy42IDM0LjVjNyA4LjggNC43IDIxLjgtNS4xIDI3LjVjLTguMSA0LjgtMTguNiAyLjctMjQuMi00LjhMOTYgMTQ0LjhWOTYgMzJ6bTY0IDQ0OHYzMkgyODhWNDgwaDY0djMySDQ4MFY0ODBoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDgwIDM1MiAyODggMTYwIDEyOGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNCdWJibGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiA2NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTk2IDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTE2MCA0NjRhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMzIgMTYwbC4xIDcyLjZjLjEgNTIuMiAyNCAxMDEgNjQgMTMzLjFjLS4xLTEuOS0uMS0zLjgtLjEtNS43di04YzAtNzEuOCAzNy0xMzguNiA5Ny45LTE3Ni43bDYwLjItMzcuNmM4LjYtNS40IDE3LjktOC40IDI3LjMtOS40bDQ1LjktNzkuNWM2LjYtMTEuNSAyLjctMjYuMi04LjgtMzIuOHMtMjYuMi0yLjctMzIuOCA4LjhsLTc4IDEzNS4xYy0zLjMgNS43LTEwLjcgNy43LTE2LjQgNC40cy03LjctMTAuNy00LjQtMTYuNGw2Mi0xMDcuNGM2LjYtMTEuNSAyLjctMjYuMi04LjgtMzIuOFMyMTQgNSAyMDcuNCAxNi41bC02OCAxMTcuOCAwIDAgMCAwLTQzLjMgNzVMOTYgMTYwYzAtMTcuNy0xNC40LTMyLTMyLTMycy0zMiAxNC40LTMyIDMyek0zMzIuMSA4OC41TDMwNy41IDEzMWMxMy45IDQuNSAyNi40IDEzLjcgMzQuNyAyN2MuOSAxLjUgMS44IDIuOSAyLjUgNC40bDI4LjktNTBjNi42LTExLjUgMi43LTI2LjItOC44LTMyLjhzLTI2LjItMi43LTMyLjggOC44em00Ni40IDYzLjdsLTI2LjggNDYuNGMtLjYgNi0yLjEgMTEuOC00LjMgMTcuNEgzNTJoMTMuM2wwIDBIMzk3bDIzLTM5LjhjNi42LTExLjUgMi43LTI2LjItOC44LTMyLjhzLTI2LjItMi43LTMyLjggOC44ek0zMTUuMSAxNzVjLTkuNC0xNS0yOS4xLTE5LjUtNDQuMS0xMC4ybC02MC4yIDM3LjZDMTU5LjMgMjM0LjcgMTI4IDI5MS4yIDEyOCAzNTJ2OGMwIDguOSAuOCAxNy42IDIuMiAyNi4xYzM1LjQgOC4yIDYxLjggNDAgNjEuOCA3Ny45YzAgNi4zLS43IDEyLjUtMi4xIDE4LjRDMjE1LjEgNTAxIDI0Ni4zIDUxMiAyODAgNTEySDQ1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNjRjLTYuNiAwLTEyLTUuNC0xMi0xMnM1LjQtMTIgMTItMTJINDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM2NGMtNi42IDAtMTItNS40LTEyLTEyczUuNC0xMiAxMi0xMkg1MjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzY0Yy02LjYgMC0xMi01LjQtMTItMTJzNS40LTEyIDEyLTEySDQ4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNTJsMCAwIDAgMEgyNTguOEwzMDUgMjE5LjFjMTUtOS40IDE5LjUtMjkuMSAxMC4yLTQ0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzQ2xhcHBpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDE2VjgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bS05OC43IDcuMWwzMiA0OGM0LjkgNy40IDIuOSAxNy4zLTQuNCAyMi4ycy0xNy4zIDIuOS0yMi4yLTQuNGwtMzItNDhjLTQuOS03LjQtMi45LTE3LjMgNC40LTIyLjJzMTcuMy0yLjkgMjIuMiA0LjR6TTEzNSAxMTljOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMjkyLjcgMjQyLjdjMTAuMSAxMC4xIDI3LjMgMi45IDI3LjMtMTEuM1YxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzNDUuNmMwIDU3LjEtMzAgMTEwLTc4LjkgMTM5LjRjLTY0IDM4LjQtMTQ1LjggMjguMy0xOTguNS0yNC40TDcgMzYxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNTMgNTNjNi4xIDYuMSAxNiA2LjEgMjIuMSAwczYuMS0xNiAwLTIyLjFMMjMgMjY1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsOTMgOTNjNi4xIDYuMSAxNiA2LjEgMjIuMSAwczYuMS0xNiAwLTIyLjFMNTUgMTg1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMTE3IDExN2M2LjEgNi4xIDE2IDYuMSAyMi4xIDBzNi4xLTE2IDAtMjIuMWwtOTMtOTNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45ek00MzMuMSA0ODQuOWMtMjQuMiAxNC41LTUwLjkgMjIuMS03Ny43IDIzLjFjNDguMS0zOS42IDc2LjYtOTkgNzYuNi0xNjIuNGwwLTk4LjFjOC4yLS4xIDE2LTYuNCAxNi0xNlYxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzNDUuNmMwIDU3LjEtMzAgMTEwLTc4LjkgMTM5LjR6TTQyNC45IDE4LjdjNy40IDQuOSA5LjMgMTQuOCA0LjQgMjIuMmwtMzIgNDhjLTQuOSA3LjQtMTQuOCA5LjMtMjIuMiA0LjRzLTkuMy0xNC44LTQuNC0yMi4ybDMyLTQ4YzQuOS03LjQgMTQuOC05LjMgMjIuMi00LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzSG9sZGluZ0NoaWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAwYTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHptNDQuNyAxNjQuM0wzNzUuOCAyNTNjMS42IDEzLjItNy43IDI1LjEtMjAuOCAyNi44cy0yNS4xLTcuNy0yNi44LTIwLjhsLTQuNC0zNWgtNy42bC00LjQgMzVjLTEuNiAxMy4yLTEzLjYgMjIuNS0yNi44IDIwLjhzLTIyLjUtMTMuNi0yMC44LTI2LjhsMTEuMS04OC44TDI1NS41IDE4MWMtMTAuMSA4LjYtMjUuMyA3LjMtMzMuOC0yLjhzLTcuMy0yNS4zIDIuOC0zMy44bDI3LjktMjMuNkMyNzEuMyAxMDQuOCAyOTUuMyA5NiAzMjAgOTZzNDguNyA4LjggNjcuNiAyNC43bDI3LjkgMjMuNmMxMC4xIDguNiAxMS40IDIzLjcgMi44IDMzLjhzLTIzLjcgMTEuNC0zMy44IDIuOGwtMTkuOC0xNi43ek00MCA2NGMyMi4xIDAgNDAgMTcuOSA0MCA0MHY0MCA4MCA0MC4yYzAgMTcgNi43IDMzLjMgMTguNyA0NS4zbDUxLjEgNTEuMWM4LjMgOC4zIDIxLjMgOS42IDMxIDMuMWMxMi45LTguNiAxNC43LTI2LjkgMy43LTM3LjhsLTE1LjItMTUuMi0zMi0zMmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGwzMiAzMiAxNS4yIDE1LjIgMCAwIDI1LjMgMjUuM2MyMSAyMSAzMi44IDQ5LjUgMzIuOCA3OS4yVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEgxNzMuM2MtMTcgMC0zMy4zLTYuNy00NS4zLTE4LjdMMjguMSAzOTMuNEMxMC4xIDM3NS40IDAgMzUxIDAgMzI1LjVWMjI0IDE2MCAxMDRDMCA4MS45IDE3LjkgNjQgNDAgNjR6bTU2MCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwdjU2IDY0VjMyNS41YzAgMjUuNS0xMC4xIDQ5LjktMjguMSA2Ny45TDUxMiA0OTMuM2MtMTIgMTItMjguMyAxOC43LTQ1LjMgMTguN0g0MDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM4NS4xYzAtMjkuNyAxMS44LTU4LjIgMzIuOC03OS4ybDI1LjMtMjUuMyAwIDAgMTUuMi0xNS4yIDMyLTMyYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTMyIDMyLTE1LjIgMTUuMmMtMTEgMTEtOS4yIDI5LjIgMy43IDM3LjhjOS43IDYuNSAyMi43IDUuMiAzMS0zLjFsNTEuMS01MS4xYzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNWMjI0IDE0NCAxMDRjMC0yMi4xIDE3LjktNDAgNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzSG9sZGluZ0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMGExMjggMTI4IDAgMSAxIDAgMjU2QTEyOCAxMjggMCAxIDEgMzIwIDB6TTQwIDY0YzIyLjEgMCA0MCAxNy45IDQwIDQwdjQwIDgwIDQwLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNsNTEuMSA1MS4xYzguMyA4LjMgMjEuMyA5LjYgMzEgMy4xYzEyLjktOC42IDE0LjctMjYuOSAzLjctMzcuOGwtMTUuMi0xNS4yLTMyLTMyYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDMyIDMyIDE1LjIgMTUuMiAwIDAgMjUuMyAyNS4zYzIxIDIxIDMyLjggNDkuNSAzMi44IDc5LjJWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDE3My4zYy0xNyAwLTMzLjMtNi43LTQ1LjMtMTguN0wyOC4xIDM5My40QzEwLjEgMzc1LjQgMCAzNTEgMCAzMjUuNVYyMjQgMTYwIDEwNEMwIDgxLjkgMTcuOSA2NCA0MCA2NHptNTYwIDBjMjIuMSAwIDQwIDE3LjkgNDAgNDB2NTYgNjRWMzI1LjVjMCAyNS41LTEwLjEgNDkuOS0yOC4xIDY3LjlMNTEyIDQ5My4zYy0xMiAxMi0yOC4zIDE4LjctNDUuMyAxOC43SDQwMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzg1LjFjMC0yOS43IDExLjgtNTguMiAzMi44LTc5LjJsMjUuMy0yNS4zIDAgMCAxNS4yLTE1LjIgMzItMzJjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM2wtMzIgMzItMTUuMiAxNS4yYy0xMSAxMS05LjIgMjkuMiAzLjcgMzcuOGM5LjcgNi41IDIyLjcgNS4yIDMxLTMuMWw1MS4xLTUxLjFjMTItMTIgMTguNy0yOC4zIDE4LjctNDUuM1YyMjQgMTQ0IDEwNGMwLTIyLjEgMTcuOS00MCA0MC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNIb2xkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDEwNGMwLTIyLjEtMTcuOS00MC00MC00MFMwIDgxLjkgMCAxMDR2NTYgNjRWMzI1LjVjMCAyNS41IDEwLjEgNDkuOSAyOC4xIDY3LjlMMTI4IDQ5My4zYzEyIDEyIDI4LjMgMTguNyA0NS4zIDE4LjdIMjQwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM4NS4xYzAtMjkuNy0xMS44LTU4LjItMzIuOC03OS4ybC0yNS4zLTI1LjMgMCAwLTE1LjItMTUuMi0zMi0zMmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMzIgMzIgMTUuMiAxNS4yYzExIDExIDkuMiAyOS4yLTMuNyAzNy44Yy05LjcgNi41LTIyLjcgNS4yLTMxLTMuMUw5OC43IDMwOS41Yy0xMi0xMi0xOC43LTI4LjMtMTguNy00NS4zVjIyNCAxNDQgMTA0em00ODAgMHY0MCA4MCA0MC4yYzAgMTctNi43IDMzLjMtMTguNyA0NS4zbC01MS4xIDUxLjFjLTguMyA4LjMtMjEuMyA5LjYtMzEgMy4xYy0xMi45LTguNi0xNC43LTI2LjktMy43LTM3LjhsMTUuMi0xNS4yIDMyLTMyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0zMiAzMi0xNS4yIDE1LjIgMCAwLTI1LjMgMjUuM2MtMjEgMjEtMzIuOCA0OS41LTMyLjggNzkuMlY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoNjYuN2MxNyAwIDMzLjMtNi43IDQ1LjMtMTguN2w5OS45LTk5LjljMTgtMTggMjguMS00Mi40IDI4LjEtNjcuOVYyMjQgMTYwIDEwNGMwLTIyLjEtMTcuOS00MC00MC00MHMtNDAgMTcuOS00MCA0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNQcmF5aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MS4yIDQuOGMzLjItMiA2LjYtMy4zIDEwLTQuMWM0LjctMSA5LjYtLjkgMTQuMSAuMWM3LjcgMS44IDE0LjggNi41IDE5LjQgMTMuNkw1MTQuNiAxOTQuMmM4LjggMTMuMSAxMy40IDI4LjYgMTMuNCA0NC40djczLjVjMCA2LjkgNC40IDEzIDEwLjkgMTUuMmw3OS4yIDI2LjRDNjMxLjIgMzU4IDY0MCAzNzAuMiA2NDAgMzg0djk2YzAgOS45LTQuNiAxOS4zLTEyLjUgMjUuNHMtMTguMSA4LjEtMjcuNyA1LjVMNDMxIDQ2NS45Yy01Ni0xNC45LTk1LTY1LjctOTUtMTIzLjdWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2ODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMTkuMWMwLTctMS44LTEzLjgtNS4zLTE5LjhMMzQwLjMgNDguMWMtMS43LTMtMi45LTYuMS0zLjYtOS4zYy0xLTQuNy0xLTkuNiAuMS0xNC4xYzEuOS04IDYuOC0xNS4yIDE0LjMtMTkuOXptLTYyLjQgMGM3LjUgNC42IDEyLjQgMTEuOSAxNC4zIDE5LjljMS4xIDQuNiAxLjIgOS40IC4xIDE0LjFjLS43IDMuMi0xLjkgNi4zLTMuNiA5LjNMMjEzLjMgMTk5LjNjLTMuNSA2LTUuMyAxMi45LTUuMyAxOS44VjMwNGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM0Mi4zYzAgNTgtMzkgMTA4LjctOTUgMTIzLjdsLTE2OC43IDQ1Yy05LjYgMi42LTE5LjkgLjUtMjcuNy01LjVTMCA0OTAgMCA0ODBWMzg0YzAtMTMuOCA4LjgtMjYgMjEuOS0zMC40bDc5LjItMjYuNGM2LjUtMi4yIDEwLjktOC4zIDEwLjktMTUuMlYyMzguNWMwLTE1LjggNC43LTMxLjIgMTMuNC00NC40TDI0NS4yIDE0LjVjNC42LTcuMSAxMS43LTExLjggMTkuNC0xMy42YzQuNi0xLjEgOS40LTEuMiAxNC4xLS4xYzMuNSAuOCA2LjkgMi4xIDEwIDQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDE2MGwtLjEgNzIuNmMtLjEgNTIuMi0yNCAxMDEtNjQgMTMzLjFjLjEtMS45IC4xLTMuOCAuMS01Ljd2LThjMC03MS44LTM3LTEzOC42LTk3LjktMTc2LjdsLTYwLjItMzcuNmMtOC42LTUuNC0xNy45LTguNC0yNy4zLTkuNEwyNDguNyA0OC44Yy02LjYtMTEuNS0yLjctMjYuMiA4LjgtMzIuOHMyNi4yLTIuNyAzMi44IDguOGw3OCAxMzUuMWMzLjMgNS43IDEwLjcgNy43IDE2LjQgNC40czcuNy0xMC43IDQuNC0xNi40bC02Mi0xMDcuNGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhTMzYyIDUgMzY4LjYgMTYuNWw2OCAxMTcuOCAwIDAgMCAwIDQzLjMgNzVMNDgwIDE2MGMwLTE3LjcgMTQuNC0zMiAzMi0zMnMzMiAxNC40IDMyIDMyek0yNDMuOSA4OC41TDI2OC41IDEzMWMtMTMuOSA0LjUtMjYuNCAxMy43LTM0LjcgMjdjLS45IDEuNC0xLjcgMi45LTIuNSA0LjRsLTI4LjktNTBjLTYuNi0xMS41LTIuNy0yNi4yIDguOC0zMi44czI2LjItMi43IDMyLjggOC44em0tNDYuNCA2My43bDI2LjggNDYuNGMuNiA2IDIuMSAxMS44IDQuMyAxNy40SDIyNCAyMTAuN2wwIDBIMTc5bC0yMy0zOS44Yy02LjYtMTEuNS0yLjctMjYuMiA4LjgtMzIuOHMyNi4yLTIuNyAzMi44IDguOHpNMjYwLjkgMTc1YzkuNC0xNSAyOS4xLTE5LjUgNDQuMS0xMC4ybDYwLjIgMzcuNkM0MTYuNyAyMzQuNyA0NDggMjkxLjIgNDQ4IDM1MnY4YzAgODMuOS02OC4xIDE1Mi0xNTIgMTUySDEyMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg5MmM2LjYgMCAxMi01LjQgMTItMTJzLTUuNC0xMi0xMi0xMkg4OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNEgyMTJjNi42IDAgMTItNS40IDEyLTEycy01LjQtMTItMTItMTJINTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMjEyYzYuNiAwIDEyLTUuNCAxMi0xMnMtNS40LTEyLTEyLTEySDg4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDIyNGwwIDAgMCAwaDkzLjJMMjcxIDIxOS4xYy0xNS05LjQtMTkuNS0yOS4xLTEwLjItNDQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNoYWtlQW5nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDI0OHYzLjNsNjkuNy02OS43YzIxLjktMjEuOSAyMS45LTU3LjMgMC03OS4yTDUzNS42IDI0LjRjLTIxLjktMjEuOS01Ny4zLTIxLjktNzkuMiAwTDQxNi4zIDY0LjVjLTIuNy0uMy01LjUtLjUtOC4zLS41SDI5NmMtMzcuMSAwLTY3LjYgMjgtNzEuNiA2NEgyMjRWMjQ4YzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBWMTc2YzAgMCAwLS4xIDAtLjFWMTYwbDE2IDAgMTM2IDBjMCAwIDAgMCAuMSAwSDQ2NGM0NC4yIDAgODAgMzUuOCA4MCA4MHY4ek0zMzYgMTkydjU2YzAgMzkuOC0zMi4yIDcyLTcyIDcycy03Mi0zMi4yLTcyLTcyVjEyOS40Yy0zNS45IDYuMi02NS44IDMyLjMtNzYgNjguMkw5OS41IDI1NS4yIDI2LjMgMzI4LjRjLTIxLjkgMjEuOS0yMS45IDU3LjMgMCA3OS4ybDc4LjEgNzguMWMyMS45IDIxLjkgNTcuMyAyMS45IDc5LjIgMGwzNy43LTM3LjdjLjkgMCAxLjggLjEgMi43IC4xSDM4NGMyNi41IDAgNDgtMjEuNSA0OC00OGMwLTUuNi0xLTExLTIuNy0xNkg0MzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC0xMi44LTUtMjQuNC0xMy4yLTMzYzI1LjctNSA0NS4xLTI3LjYgNDUuMi01NC44di0uNGMtLjEtMzAuOC0yNS4xLTU1LjgtNTYtNTUuOGMwIDAgMCAwIDAgMGwtMTIwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzaGFrZVNpbXBsZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTEzNS0xMDUuOGMtMS4xLTExLjMtNi4zLTIyLjMtMTUuMy0zMC43bC0xMzQuMi0xMjMtMjMuNCAxOC4yLTI2LTIwLjMgNzcuMi02MC4xYzctNS40IDE3LTQuMiAyMi41IDIuOHM0LjIgMTctMi44IDIyLjVsLTIwLjkgMTYuMkw1NTAuMiAzNTJINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE3NmMwLTI2LjUtMjEuNS00OC00OC00OEg1MTZoLTQtLjdsLTMuOS0yLjVMNDM0LjggNzljLTE1LjMtOS44LTMzLjItMTUtNTEuNC0xNWMtMjEuOCAwLTQzIDcuNS02MCAyMS4ybC04OS43IDcyLjYtMjUuOC0yMC4zIDgxLjgtNjYuMmMtMTEuNi00LjktMjQuMS03LjQtMzYuOC03LjRDMjM0IDY0IDIxNS43IDY5LjYgMjAwIDgwbC0zNS41IDIzLjdMMzguOCA1LjF6TTQxMy42IDQyMS45TDQxLjIgMTI4LjVDMTcuOSAxMzEuOCAwIDE1MS44IDAgMTc2VjMwNGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgxNTYuMmw5MS40IDgzLjRjMTkuNiAxNy45IDQ5LjkgMTYuNSA2Ny44LTMuMWM1LjUtNi4xIDkuMi0xMy4yIDExLjEtMjAuNmwxNyAxNS42YzE5LjUgMTcuOSA0OS45IDE2LjYgNjcuOC0yLjljLjgtLjggMS41LTEuNyAyLjItMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2VTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzLjQgODUuMmwtOTYuOCA3OC40Yy0xNi4xIDEzLTE5LjIgMzYuNC03IDUzLjFjMTIuOSAxNy44IDM4IDIxLjMgNTUuMyA3LjhsOTkuMy03Ny4yYzctNS40IDE3LTQuMiAyMi41IDIuOHM0LjIgMTctMi44IDIyLjVsLTIwLjkgMTYuMkw1NTAuMiAzNTJINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE3NmMwLTI2LjUtMjEuNS00OC00OC00OEg1MTZoLTQtLjdsLTMuOS0yLjVMNDM0LjggNzljLTE1LjMtOS44LTMzLjItMTUtNTEuNC0xNWMtMjEuOCAwLTQzIDcuNS02MCAyMS4yem0yMi44IDEyNC40bC01MS43IDQwLjJDMjYzIDI3NC40IDIxNy4zIDI2OCAxOTMuNyAyMzUuNmMtMjIuMi0zMC41LTE2LjYtNzMuMSAxMi43LTk2LjhsODMuMi02Ny4zYy0xMS42LTQuOS0yNC4xLTcuNC0zNi44LTcuNEMyMzQgNjQgMjE1LjcgNjkuNiAyMDAgODBsLTcyIDQ4SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OFYzMDRjMCAyNi41IDIxLjUgNDggNDggNDhIMTU2LjJsOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45YzQuNS00LjkgNy44LTEwLjYgOS45LTE2LjVjMTkuNCAxMyA0NS44IDEwLjMgNjIuMS03LjVjMTcuOS0xOS41IDE2LjYtNDkuOS0yLjktNjcuOGwtMTM0LjItMTIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2VTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC0xMzUtMTA1LjhjLTEuMS0xMS4zLTYuMy0yMi4zLTE1LjMtMzAuN2wtMTM0LjItMTIzLTIzLjQgMTguMi0yNi0yMC4zIDc3LjItNjAuMWM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTEyIDMxNi44VjEyOGgtLjdsLTMuOS0yLjVMNDM0LjggNzljLTE1LjMtOS44LTMzLjItMTUtNTEuNC0xNWMtMjEuOCAwLTQzIDcuNS02MCAyMS4ybC04OS43IDcyLjYtMjUuOC0yMC4zIDgxLjgtNjYuMmMtMTEuNi00LjktMjQuMS03LjQtMzYuOC03LjRDMjM0IDY0IDIxNS43IDY5LjYgMjAwIDgwbC0zNS41IDIzLjdMMzguOCA1LjF6TTQxMy42IDQyMS45TDEyOCAxOTYuOFYzNTJoMjguMmw5MS40IDgzLjRjMTkuNiAxNy45IDQ5LjkgMTYuNSA2Ny44LTMuMWM1LjUtNi4xIDkuMi0xMy4yIDExLjEtMjAuNmwxNyAxNS42YzE5LjUgMTcuOSA0OS45IDE2LjYgNjcuOC0yLjljLjgtLjggMS41LTEuNyAyLjItMi42ek05NiAxNzEuNkw0MC42IDEyOEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2VjM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNzEuNnpNNDggMzIwYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpNNTQ0IDEyOFYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkg1NDR6bTMyIDIwOGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzLjQgODUuMmwtOTYuOCA3OC40Yy0xNi4xIDEzLTE5LjIgMzYuNC03IDUzLjFjMTIuOSAxNy44IDM4IDIxLjMgNTUuMyA3LjhsOTkuMy03Ny4yYzctNS40IDE3LTQuMiAyMi41IDIuOHM0LjIgMTctMi44IDIyLjVsLTIwLjkgMTYuMkw1MTIgMzE2LjhWMTI4aC0uN2wtMy45LTIuNUw0MzQuOCA3OWMtMTUuMy05LjgtMzMuMi0xNS01MS40LTE1Yy0yMS44IDAtNDMgNy41LTYwIDIxLjJ6bTIyLjggMTI0LjRsLTUxLjcgNDAuMkMyNjMgMjc0LjQgMjE3LjMgMjY4IDE5My43IDIzNS42Yy0yMi4yLTMwLjUtMTYuNi03My4xIDEyLjctOTYuOGw4My4yLTY3LjNjLTExLjYtNC45LTI0LjEtNy40LTM2LjgtNy40QzIzNCA2NCAyMTUuNyA2OS42IDIwMCA4MGwtNzIgNDhWMzUyaDI4LjJsOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45YzQuNS00LjkgNy44LTEwLjYgOS45LTE2LjVjMTkuNCAxMyA0NS44IDEwLjMgNjIuMS03LjVjMTcuOS0xOS41IDE2LjYtNDkuOS0yLjktNjcuOGwtMTM0LjItMTIzek0xNiAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNlYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJINjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTI4SDE2ek00OCAzMjBhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyek01NDQgMTI4VjM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2SDU0NHptMzIgMjA4YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbnVraWFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNC4yIDMuM0MzMDkuMSAxMi4xIDI5NiAzNi42IDI5NiA1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43QzMyNC42IDEuMiAzMjIuNCAwIDMyMCAwcy00LjYgMS4yLTUuOCAzLjN6bS0yODggNDhDMjEuMSA2MC4xIDggODQuNiA4IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43QzM2LjYgNDkuMiAzNC40IDQ4IDMyIDQ4cy00LjYgMS4yLTUuOCAzLjN6TTg4IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zQzEwMS4xIDYwLjEgODggODQuNiA4OCAxMDR6bTgyLjItNTIuN0MxNjUuMSA2MC4xIDE1MiA4NC42IDE1MiAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM3pNMjE2IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zQzIyOS4xIDYwLjEgMjE2IDg0LjYgMjE2IDEwNHpNMzk0LjIgNTEuM0MzODkuMSA2MC4xIDM3NiA4NC42IDM3NiAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM3pNNDQwIDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zQzQ1My4xIDYwLjEgNDQwIDg0LjYgNDQwIDEwNHptODIuMi01Mi43QzUxNy4xIDYwLjEgNTA0IDg0LjYgNTA0IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zek01ODQgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjdjLTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjNDNTk3LjEgNjAuMSA1ODQgODQuNiA1ODQgMTA0ek0xMTIgMTYwYy04LjggMC0xNiA3LjItMTYgMTZ2OTYgMTZoMzJWMjcyIDE3NmMwLTguOC03LjItMTYtMTYtMTZ6bTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY5NiAxNmgzMlYyNzIgMTc2YzAtOC44LTcuMi0xNi0xNi0xNnptNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2djk2IDE2aDMyVjI3MiAxNzZjMC04LjgtNy4yLTE2LTE2LTE2em0xNjAgMGMtOC44IDAtMTYgNy4yLTE2IDE2djk2IDE2aDMyVjI3MiAxNzZjMC04LjgtNy4yLTE2LTE2LTE2em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2OTYgMTZoMzJWMjcyIDE3NmMwLTguOC03LjItMTYtMTYtMTZ6bTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY5NiAxNmgzMlYyNzIgMTc2YzAtOC44LTcuMi0xNi0xNi0xNnpNMzUyIDE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYzMjBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY5NmMwIDUzIDQzIDk2IDk2IDk2SDI4OHY2NEgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzIwIDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNTJWMzg0SDU0NGM1MyAwIDk2LTQzIDk2LTk2VjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzNTJWMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXJkRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMjgwLjRjLTE3LTE1LjItMzkuNC0yNC40LTY0LTI0LjRINjRjLTI0LjYgMC00NyA5LjItNjQgMjQuNFY5NnpNNjQgMjg4SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0ek0zMjAgNDE2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTI4LTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhc2h0YWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgxLjMgMzIuNGMxNy40IDIuOSAyOS4yIDE5LjQgMjYuMyAzNi44TDE5Ny44IDEyOGg5NS4xbDExLjUtNjkuM2MyLjktMTcuNCAxOS40LTI5LjIgMzYuOC0yNi4zczI5LjIgMTkuNCAyNi4zIDM2LjhMMzU3LjggMTI4SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzNDcuMUwzMjUuOCAzMjBIMzg0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMxNS4xbC0xMS41IDY5LjNjLTIuOSAxNy40LTE5LjQgMjkuMi0zNi44IDI2LjNzLTI5LjItMTkuNC0yNi4zLTM2LjhsOS44LTU4LjdIMTU1LjFsLTExLjUgNjkuM2MtMi45IDE3LjQtMTkuNCAyOS4yLTM2LjggMjYuM3MtMjkuMi0xOS40LTI2LjMtMzYuOEw5MC4yIDM4NEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg2OC45bDIxLjMtMTI4SDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDY4LjlsMTEuNS02OS4zYzIuOS0xNy40IDE5LjQtMjkuMiAzNi44LTI2LjN6TTE4Ny4xIDE5MkwxNjUuOCAzMjBoOTUuMWwyMS4zLTEyOEgxODcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGF0Q293Ym95U2lkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuNyAxMzUuOWwtMTAuNCA1Ny4yYzYuOC0uNyAxMy42LTEuMSAyMC41LTEuMWgxMC43YzM5LjQgMCA3Ny44IDEyLjEgMTEwLjEgMzQuN0w1NjIuNCA0MjEuOGwzNS4xIDI0LjZjMjQuNC02IDQyLjUtMjguMSA0Mi41LTU0LjRjMC03NS44LTk0LjctMTI2LjYtMTM0LjYtMTQ0LjdMNDc0IDgzLjlDNDY4LjIgNTMuOCA0NDEuOCAzMiA0MTEuMSAzMmgtMi43Yy01LjYgMC0xMS4xIC43LTE2LjUgMi4yTDE5OS4yIDg1LjVjLTIzLjkgNi40LTQyIDI2LTQ2LjUgNTAuNHpNMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTQ0TDI2NS4zIDI1Mi45Yy0yNi45LTE4LjgtNTguOS0yOC45LTkxLjgtMjguOUgxNjIuOWMtNjAuNiAwLTExNiAzNC4yLTE0My4xIDg4LjRMMTMuNSAzMjVDNC42IDM0Mi43IDAgMzYyLjMgMCAzODIuMlYzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdENvd2JveSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNjRjMTQuNCAwIDIyLjMtNyAzMC44LTE0LjRDMzYwLjQgNDEuMSAzNzAuNyAzMiAzOTIgMzJjNDkuMyAwIDg0LjQgMTUyLjIgOTcuOSAyMjEuOUM0NDcuOCAyNzIuMSAzOTAuOSAyODggMzIwIDI4OHMtMTI3LjgtMTUuOS0xNjkuOS0zNC4xQzE2My42IDE4NC4yIDE5OC43IDMyIDI0OCAzMmMyMS4zIDAgMzEuNiA5LjEgNDEuMiAxNy42QzI5Ny43IDU3IDMwNS42IDY0IDMyMCA2NHpNMTExLjEgMjcwLjdjNDcuMiAyNC41IDExNy41IDQ5LjMgMjA5IDQ5LjNzMTYxLjgtMjQuOCAyMDguOS00OS4zYzI0LjgtMTIuOSA0OS44LTI4LjMgNzAuMS00Ny43YzcuOS03LjkgMjAuMi05LjIgMjkuNi0zLjNjOS41IDUuOSAxMy41IDE3LjkgOS45IDI4LjVjLTEzLjUgMzcuNy0zOC40IDcyLjMtNjYuMSAxMDAuNkM1MjMuNyAzOTguOSA0NDMuNiA0NDggMzIwIDQ0OHMtMjAzLjYtNDkuMS0yNTIuNS05OS4yQzM5LjggMzIwLjQgMTQuOSAyODUuOCAxLjQgMjQ4LjFjLTMuNi0xMC42IC40LTIyLjYgOS45LTI4LjVjOS41LTUuOSAyMS43LTQuNSAyOS42IDMuM2MyMC40IDE5LjQgNDUuMyAzNC44IDcwLjEgNDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGF0V2l6YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQxNkwxNjguNiAxODAuN2MxNS4zLTM0LjQgNDAuMy02My41IDcyLTgzLjdsMTQ2LjktOTRjMy0xLjkgNi41LTIuOSAxMC0yLjlDNDA3LjcgMCA0MTYgOC4zIDQxNiAxOC42djEuNmMwIDIuNi0uNSA1LjEtMS40IDcuNUwzNTQuOCAxNzYuOWMtMS45IDQuNy0yLjggOS43LTIuOCAxNC43YzAgNS41IDEuMiAxMSAzLjQgMTYuMUw0NDggNDE2SDI0MC45bDExLjgtMzUuNCA0MC40LTEzLjVjNi41LTIuMiAxMC45LTguMyAxMC45LTE1LjJzLTQuNC0xMy0xMC45LTE1LjJsLTQwLjQtMTMuNS0xMy41LTQwLjRDMjM3IDI3Ni40IDIzMC45IDI3MiAyMjQgMjcycy0xMyA0LjQtMTUuMiAxMC45bC0xMy41IDQwLjQtNDAuNCAxMy41QzE0OC40IDMzOSAxNDQgMzQ1LjEgMTQ0IDM1MnM0LjQgMTMgMTAuOSAxNS4ybDQwLjQgMTMuNUwyMDcuMSA0MTZINjR6TTI3OS42IDE0MS41Yy0xLjEtMy4zLTQuMS01LjUtNy42LTUuNXMtNi41IDIuMi03LjYgNS41bC02LjcgMjAuMi0yMC4yIDYuN2MtMy4zIDEuMS01LjUgNC4xLTUuNSA3LjZzMi4yIDYuNSA1LjUgNy42bDIwLjIgNi43IDYuNyAyMC4yYzEuMSAzLjMgNC4xIDUuNSA3LjYgNS41czYuNS0yLjIgNy42LTUuNWw2LjctMjAuMiAyMC4yLTYuN2MzLjMtMS4xIDUuNS00LjEgNS41LTcuNnMtMi4yLTYuNS01LjUtNy42bC0yMC4yLTYuNy02LjctMjAuMnpNMzIgNDQ4SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZFNpZGVDb3VnaFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMjUuOGw0NCAzNC41YzguMSAxLjQgMTQuOCA2LjggMTggMTQuMUw1NTIuOSA0MDhjMTAuNiAuNCAxOS41IDcuNiAyMi4yIDE3LjRsMzkuMSAzMC42Yy42IDAgMS4yLS4xIDEuOC0uMWMxMS4xIDAgMjAuNCA3LjUgMjMuMiAxNy44aC0zLjljNi4yIDguNSA2LjQgMjAuNC0uNCAyOWMtOC4yIDEwLjQtMjMuMyAxMi4zLTMzLjcgNC4xTDkuMiA0Mi45Qy0xLjIgMzQuNy0zLjEgMTkuNiA1LjEgOS4yUzI4LjQtMy4xIDM4LjggNS4xTDg5LjYgNDQuOUMxMjcgMTYuNyAxNzMuNSAwIDIyNCAwaDI0Yzk1LjIgMCAxODEuMiA2OS4zIDE5Ny4zIDE2MC4yYzIuMyAxMyA2LjggMjUuNyAxNS4xIDM2bDQyIDUyLjZjNi4yIDcuOCA5LjYgMTcuNCA5LjYgMjcuNGMwIDI0LjItMTkuNiA0My44LTQzLjggNDMuOEg0NDh2MCA1Ljh6TTAgMjI0LjJjMC0zOC43IDkuOC03NS4xIDI3LjEtMTA2LjlMMzQxLjggMzY1LjNsLTIuNSAuM2MtMTEgMS40LTE5LjIgMTAuNy0xOS4yIDIxLjhjMCAxMS42IDkgMjEuMiAyMC42IDIxLjlsNjIgMy45IDQzIDMzLjlDNDM5LjMgNDY2LjIgNDIxLjIgNDgwIDQwMCA0ODBIMzIwdjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjU2djBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwNy4zYzAtMTYuNy02LjktMzIuNS0xNy4xLTQ1LjhDMTYuNiAzMjIuNCAwIDI3NC4xIDAgMjI0LjJ6TTYxNiAzNjBhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0tNjQtNDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em00MC0yNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkU2lkZUNvdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0LjJDMCAxMDAuNiAxMDAuMiAwIDIyNCAwaDI0Yzk1LjIgMCAxODEuMiA2OS4zIDE5Ny4zIDE2MC4yYzIuMyAxMyA2LjggMjUuNyAxNS4xIDM2bDQyIDUyLjZjNi4yIDcuOCA5LjYgMTcuNCA5LjYgMjcuNGMwIDI0LjItMTkuNiA0My44LTQzLjggNDMuOEg0NDh2MCAzMkwzMzkuMiAzNjUuNmMtMTEgMS40LTE5LjIgMTAuNy0xOS4yIDIxLjhjMCAxMS42IDkgMjEuMiAyMC42IDIxLjlMNDQ4IDQxNnYxNmMwIDI2LjUtMjEuNSA0OC00OCA0OEgzMjB2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgyNTZ2MEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDA3LjNjMC0xNi43LTYuOS0zMi41LTE3LjEtNDUuOEMxNi42IDMyMi40IDAgMjc0LjEgMCAyMjQuMnptMzUyLS4yYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNNDY0IDM4NGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xNTItMjRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek01OTIgNDgwYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTU1MiAzMTJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em00MC0yNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek01NTIgNDA4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZFNpZGVNYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDIyNC4yYzAtMjIuMiAzLjItNDMuNiA5LjItNjMuOUwyNjIuMiAzMjFjLTQgOS41LTYuMiAyMC02LjIgMzFWNTEySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDA3LjNjMC0xNi43LTYuOS0zMi41LTE3LjEtNDUuOEM0OC42IDMyMi40IDMyIDI3NC4xIDMyIDIyNC4yem0yNDguMyA3MC40TDUzIDEyOS4zQzg4LjcgNTMgMTY2LjIgMCAyNTYgMGgyNGM5NS4yIDAgMTgxLjIgNjkuMyAxOTcuMyAxNjAuMmMyLjMgMTMgNi44IDI1LjcgMTUuMSAzNmw0MiA1Mi42YzUuNCA2LjcgOC42IDE0LjggOS40IDIzLjJIMzM2Yy0yMS43IDAtNDEuMyA4LjYtNTUuNyAyMi42ek0zMzYgMzA0SDUzNGwwIDBoMTBsLTE5LjcgNjRIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDUxNC41bC05LjggMzJIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDQ5NC44bC0uOSAyLjhjLTguMyAyNi45LTMzLjEgNDUuMi02MS4yIDQ1LjJIMjg4VjM1MmMwLTE0IDYtMjYuNyAxNS42LTM1LjRjMCAwIDAgMCAwIDBjOC41LTcuOCAxOS45LTEyLjYgMzIuNC0xMi42em00OC04MGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlVmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMjQuMkMwIDEwMC42IDEwMC4yIDAgMjI0IDBoMjRjOTUuMiAwIDE4MS4yIDY5LjMgMTk3LjMgMTYwLjJjMi4zIDEzIDYuOCAyNS43IDE1LjEgMzZsNDIgNTIuNmM2LjIgNy44IDkuNiAxNy40IDkuNiAyNy40YzAgMjQuMi0xOS42IDQzLjgtNDMuOCA0My44SDQ0OHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMjB2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwNy4zYzAtMTYuNy02LjktMzIuNS0xNy4xLTQ1LjhDMTYuNiAzMjIuNCAwIDI3NC4xIDAgMjI0LjJ6TTIyNCA2NGMtOC44IDAtMTYgNy4yLTE2IDE2YzAgMzMtMzkuOSA0OS41LTYzLjIgMjYuMmMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNkMxNDUuNSAxNTIuMSAxMjkgMTkyIDk2IDE5MmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmMzMyAwIDQ5LjUgMzkuOSAyNi4yIDYzLjJjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEMxNjguMSAyODYuNSAyMDggMzAzIDIwOCAzMzZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmMwLTMzIDM5LjktNDkuNSA2My4yLTI2LjJjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42QzMwMi41IDI2My45IDMxOSAyMjQgMzUyIDIyNGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtMzMgMC00OS41LTM5LjktMjYuMi02My4yYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBDMjc5LjkgMTI5LjUgMjQwIDExMyAyNDAgODBjMC04LjgtNy4yLTE2LTE2LTE2em0tMjQgOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em00MCA4MGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIODBoNDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTEyVjIwOEgzMzZWOTZIMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDQ4IDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQwMFYyNDAgNDE2aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM2OCAzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMTZWMjcySDExMlY0MTZoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIODAgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDhWMjQwIDk2SDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRwaG9uZXNTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDgwQzE0MS4xIDgwIDQ4IDE3My4xIDQ4IDI4OFYzOTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjg4QzAgMTQ2LjYgMTE0LjYgMzIgMjU2IDMyczI1NiAxMTQuNiAyNTYgMjU2VjM5MmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyODhjMC0xMTQuOS05My4xLTIwOC0yMDgtMjA4ek04MCAzNTJjMC0zNS4zIDI4LjctNjQgNjQtNjRoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE0NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzUyem0yODgtNjRjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJoMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRwaG9uZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDgwQzE0OS45IDgwIDYyLjQgMTU5LjQgNDkuNiAyNjJjOS40LTMuOCAxOS42LTYgMzAuNC02YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQzMmMwIDI2LjUtMjEuNSA0OC00OCA0OGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMzg0IDMzNiAyODhDMCAxNDYuNiAxMTQuNiAzMiAyNTYgMzJzMjU2IDExNC42IDI1NiAyNTZ2NDggNDggMTZjMCA0NC4yLTM1LjggODAtODAgODBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjMwNGMwLTI2LjUgMjEuNS00OCA0OC00OGMxMC44IDAgMjEgMi4xIDMwLjQgNkM0NDkuNiAxNTkuNCAzNjIuMSA4MCAyNTYgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4QzE0MS4xIDQ4IDQ4IDE0MS4xIDQ4IDI1NnY0MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNTZDMCAxMTQuNiAxMTQuNiAwIDI1NiAwUzUxMiAxMTQuNiA1MTIgMjU2VjQwMC4xYzAgNDguNi0zOS40IDg4LTg4LjEgODhMMzEzLjYgNDg4Yy04LjMgMTQuMy0yMy44IDI0LTQxLjYgMjRIMjQwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4aDMyYzE3LjggMCAzMy4zIDkuNyA0MS42IDI0bDExMC40IC4xYzIyLjEgMCA0MC0xNy45IDQwLTQwVjI1NmMwLTExNC45LTkzLjEtMjA4LTIwOC0yMDh6TTE0NCAyMDhoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDE0NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjcyYzAtMzUuMyAyOC43LTY0IDY0LTY0em0yMjQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NHY0OGMwIDM1LjMtMjguNyA2NC02NCA2NEgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI0MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlsMi42LTIuNEMyNjcuMiA0MzguNiAyNTYgNDA0LjYgMjU2IDM2OGMwLTk3LjIgNzguOC0xNzYgMTc2LTE3NmMyOC4zIDAgNTUgNi43IDc4LjcgMTguNWMuOS02LjUgMS4zLTEzIDEuMy0xOS42di01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMXY1LjhjMCA0MS41IDE3LjIgODEuMiA0Ny42IDEwOS41ek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNDcuOS0yMjVjNC4zIDMuNyA1LjQgOS45IDIuNiAxNC45TDQ1Mi40IDM1Nkg0ODhjNS4yIDAgOS44IDMuMyAxMS40IDguMnMtLjEgMTAuMy00LjIgMTMuNGwtOTYgNzJjLTQuNSAzLjQtMTAuOCAzLjItMTUuMS0uNnMtNS40LTkuOS0yLjYtMTQuOUw0MTEuNiAzODBIMzc2Yy01LjIgMC05LjgtMy4zLTExLjQtOC4ycy4xLTEwLjMgNC4yLTEzLjRsOTYtNzJjNC41LTMuNCAxMC44LTMuMiAxNS4xIC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFydENpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlsMi42LTIuNEMyNjcuMiA0MzguNiAyNTYgNDA0LjYgMjU2IDM2OGMwLTk3LjIgNzguOC0xNzYgMTc2LTE3NmMyOC4zIDAgNTUgNi43IDc4LjcgMTguNWMuOS02LjUgMS4zLTEzIDEuMy0xOS42di01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMXY1LjhjMCA0MS41IDE3LjIgODEuMiA0Ny42IDEwOS41ek01NzYgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0MTYgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFydENpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlsMi42LTIuNEMyNjcuMiA0MzguNiAyNTYgNDA0LjYgMjU2IDM2OGMwLTk3LjIgNzguOC0xNzYgMTc2LTE3NmMyOC4zIDAgNTUgNi43IDc4LjcgMTguNWMuOS02LjUgMS4zLTEzIDEuMy0xOS42di01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMXY1LjhjMCA0MS41IDE3LjIgODEuMiA0Ny42IDEwOS41ek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFydENpcmNsZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlsMi42LTIuNEMyNjcuMiA0MzguNiAyNTYgNDA0LjYgMjU2IDM2OGMwLTk3LjIgNzguOC0xNzYgMTc2LTE3NmMyOC4zIDAgNTUgNi43IDc4LjcgMTguNWMuOS02LjUgMS4zLTEzIDEuMy0xOS42di01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMXY1LjhjMCA0MS41IDE3LjIgODEuMiA0Ny42IDEwOS41ek01NzYgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS02NCAwYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZINDk2YzguOCAwIDE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlsMi42LTIuNEMyNjcuMiA0MzguNiAyNTYgNDA0LjYgMjU2IDM2OGMwLTk3LjIgNzguOC0xNzYgMTc2LTE3NmMyOC4zIDAgNTUgNi43IDc4LjcgMTguNWMuOS02LjUgMS4zLTEzIDEuMy0xOS42di01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMXY1LjhjMCA0MS41IDE3LjIgODEuMiA0Ny42IDEwOS41ek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMTYtMjA4djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDQ0OHY0OGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzODRIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDQ4VjMwNGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFydENpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlsMi42LTIuNEMyNjcuMiA0MzguNiAyNTYgNDA0LjYgMjU2IDM2OGMwLTk3LjIgNzguOC0xNzYgMTc2LTE3NmMyOC4zIDAgNTUgNi43IDc4LjcgMTguNWMuOS02LjUgMS4zLTEzIDEuMy0xOS42di01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMXY1LjhjMCA0MS41IDE3LjIgODEuMiA0Ny42IDEwOS41ek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w0NTQuNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDMyIDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDA5LjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0MzIgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDcmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTkuNCA0NC4xYzIzLjMtMy45IDQ2LjgtMS45IDY4LjYgNS4zbDQ5LjggNzcuNS03NS40IDc1LjRjLTEuNSAxLjUtMi40IDMuNi0yLjMgNS44czEgNC4yIDIuNiA1LjdsMTEyIDEwNGMyLjkgMi43IDcuNCAyLjkgMTAuNSAuM3MzLjgtNyAxLjctMTAuNGwtNjAuNC05OC4xIDkwLjctNzUuNmMyLjYtMi4xIDMuNS01LjcgMi40LTguOEwyOTYuOCA2MS44YzI4LjUtMTYuNyA2Mi40LTIzLjIgOTUuNy0xNy42QzQ2MS41IDU1LjYgNTEyIDExNS4yIDUxMiAxODUuMXY1LjhjMCA0MS41LTE3LjIgODEuMi00Ny42IDEwOS41TDI4My43IDQ2OS4xYy03LjUgNy0xNy40IDEwLjktMjcuNyAxMC45cy0yMC4yLTMuOS0yNy43LTEwLjlMNDcuNiAzMDAuNEMxNy4yIDI3Mi4xIDAgMjMyLjQgMCAxOTAuOXYtNS44YzAtNjkuOSA1MC41LTEyOS41IDExOS40LTE0MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRQdWxzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjguMyA0NjkuMUw0Ny42IDMwMC40Yy00LjItMy45LTguMi04LjEtMTEuOS0xMi40aDg3YzIyLjYgMCA0My0xMy42IDUxLjctMzQuNWwxMC41LTI1LjIgNDkuMyAxMDkuNWMzLjggOC41IDEyLjEgMTQgMjEuNCAxNC4xczE3LjgtNSAyMi0xMy4zTDMyMCAyNTMuN2wxLjcgMy40YzkuNSAxOSAyOC45IDMxIDUwLjEgMzFINDc2LjNjLTMuNyA0LjMtNy43IDguNS0xMS45IDEyLjRMMjgzLjcgNDY5LjFjLTcuNSA3LTE3LjQgMTAuOS0yNy43IDEwLjlzLTIwLjItMy45LTI3LjctMTAuOXpNNTAzLjcgMjQwaC0xMzJjLTMgMC01LjgtMS43LTcuMi00LjRsLTIzLjItNDYuM2MtNC4xLTguMS0xMi40LTEzLjMtMjEuNS0xMy4zcy0xNy40IDUuMS0yMS41IDEzLjNsLTQxLjQgODIuOEwyMDUuOSAxNTguMmMtMy45LTguNy0xMi43LTE0LjMtMjIuMi0xNC4xcy0xOC4xIDUuOS0yMS44IDE0LjhsLTMxLjggNzYuM2MtMS4yIDMtNC4yIDQuOS03LjQgNC45SDE2Yy0yLjYgMC01IC40LTcuMyAxLjFDMyAyMjUuMiAwIDIwOC4yIDAgMTkwLjl2LTUuOGMwLTY5LjkgNTAuNS0xMjkuNSAxMTkuNC0xNDFDMTY1IDM2LjUgMjExLjQgNTEuNCAyNDQgODRsMTIgMTIgMTItMTJjMzIuNi0zMi42IDc5LTQ3LjUgMTI0LjYtMzkuOUM0NjEuNSA1NS42IDUxMiAxMTUuMiA1MTIgMTg1LjF2NS44YzAgMTYuOS0yLjggMzMuNS04LjMgNDkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcuNiAzMDAuNEwyMjguMyA0NjkuMWM3LjUgNyAxNy40IDEwLjkgMjcuNyAxMC45czIwLjItMy45IDI3LjctMTAuOUw0NjQuNCAzMDAuNGMzMC40LTI4LjMgNDcuNi02OCA0Ny42LTEwOS41di01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMXY1LjhjMCA0MS41IDE3LjIgODEuMiA0Ny42IDEwOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWxpY29wdGVyU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NS4zIDIyNEg1MTBDNDk1LjYgMTA4LjIgNDAzLjggMTYuNCAyODggMlY2Ni43QzM2OC40IDgwLjEgNDMxLjkgMTQzLjYgNDQ1LjMgMjI0ek01MTAgMjg4SDQ0NS4zQzQzMS45IDM2OC40IDM2OC40IDQzMS45IDI4OCA0NDUuNFY1MTBjMTE1LjgtMTQuNCAyMDcuNi0xMDYuMiAyMjItMjIyek0yIDI4OEMxNi40IDQwMy44IDEwOC4yIDQ5NS42IDIyNCA1MTBWNDQ1LjRDMTQzLjYgNDMxLjkgODAuMSAzNjguNCA2Ni43IDI4OEgyem0wLTY0SDY2LjdDODAuMSAxNDMuNiAxNDMuNiA4MC4xIDIyNCA2Ni43VjJDMTA4LjIgMTYuNCAxNi40IDEwOC4yIDIgMjI0em0yMDYtNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4aDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0SDIwOFYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlbGljb3B0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMySDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODR2NjRoMzJjODguNCAwIDE2MCA3MS42IDE2MCAxNjB2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMzg0IDMyMGMtMjAuMSAwLTM5LjEtOS41LTUxLjItMjUuNmwtNzEuNC05NS4yYy0zLjUtNC43LTguMy04LjMtMTMuNy0xMC41TDQ3LjIgMTk4LjFjLTkuNS0zLjgtMTYuNy0xMi0xOS4yLTIyTDUgODMuOUMyLjQgNzMuOCAxMC4xIDY0IDIwLjUgNjRINDhjMTAuMSAwIDE5LjYgNC43IDI1LjYgMTIuOEwxMTIgMTI4SDMyMFY2NEgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0zODQgMzIwSDUxMlYyODhjMC01My00My05Ni05Ni05NkgzODRWMzIwek02MzAuNiA0MjUuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMy45IDMuOWMtMjQgMjQtNTYuNiAzNy41LTkwLjUgMzcuNUgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINTM2LjJjMTcgMCAzMy4zLTYuNyA0NS4zLTE4LjdsMy45LTMuOWMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVsbWV0U2FmZXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2Mi4zIDk5LjZjMCA1LjYtNC41IDEwLjEtMTAuMSAxMC4xYy0zLjYgMC03LTEuOS04LjgtNS4xTDE1Ny4xIDg3QzgzIDEyMy41IDMyIDE5OS44IDMyIDI4OHY2NEg1NDRsMC02Ni40Yy0uOS04Ny4yLTUxLjctMTYyLjQtMTI1LjEtMTk4LjZsLTQ4IDgzLjljLTEuOCAzLjItNS4yIDUuMS04LjggNS4xYy01LjYgMC0xMC4xLTQuNS0xMC4xLTEwLjFWNjYuMyA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZ6TTE2LjYgMzg0QzcuNCAzODQgMCAzOTEuNCAwIDQwMC42YzAgNC43IDIgOS4yIDUuOCAxMS45QzI3LjUgNDI4LjQgMTExLjggNDgwIDI4OCA0ODBzMjYwLjUtNTEuNiAyODIuMi02Ny41YzMuOC0yLjggNS44LTcuMiA1LjgtMTEuOWMwLTkuMi03LjQtMTYuNi0xNi42LTE2LjZIMTYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVsbWV0VW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc5LjUgMjI0QzQ3MS4yIDk4LjkgMzY3LjIgMCAyNDAgMEMxMDcuNSAwIDAgMTA3LjUgMCAyNDB2NTYuM0MwIDM0NC44IDM5LjIgMzg0IDg3LjcgMzg0SDIwMGgxNC45TDM0My41IDUwNS40YzQuNSA0LjIgMTAuNCA2LjYgMTYuNSA2LjZoOTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzY5LjVsLTEuNS0xLjVWMjg4aDgwIDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyaC0uNXpNMzIwIDQxNy4ybC03OC03My43TDI3NC40IDI4OEgzMjBWNDE3LjJ6TTI4NS4zIDEwMy4xbDM0LjcgNTJWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OTZjMCA3LjEtNC42IDEzLjMtMTEuNCAxNS4zcy0xNC0uNi0xNy45LTYuNGwtMzQuNy01MlYyMDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMTEyYzAtNy4xIDQuNi0xMy4zIDExLjQtMTUuM3MxNCAuNiAxNy45IDYuNHpNMTYwIDExMnY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaWdobGlnaHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTUgMzE1bDE1OC40LTIxNUw0NDQuMSA3MC42IDIyOSAyMjkgMzE1IDMxNXptLTE4NyA1bDAgMFYyNDguM2MwLTE1LjMgNy4yLTI5LjYgMTkuNS0zOC42TDQyMC42IDguNEM0MjggMi45IDQzNyAwIDQ0Ni4yIDBjMTEuNCAwIDIyLjQgNC41IDMwLjUgMTIuNmw1NC44IDU0LjhjOC4xIDguMSAxMi42IDE5IDEyLjYgMzAuNWMwIDkuMi0yLjkgMTguMi04LjQgMjUuNkwzMzQuNCAzOTYuNWMtOSAxMi4zLTIzLjQgMTkuNS0zOC42IDE5LjVIMjI0bC0yNS40IDI1LjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC01MC43LTUwLjdjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zTDEyOCAzMjB6TTcgNDY2LjNsNjMtNjMgNzAuNiA3MC42LTMxIDMxYy00LjUgNC41LTEwLjYgNy0xNyA3SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHYtNC43YzAtNi40IDIuNS0xMi41IDctMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpbGxBdmFsYW5jaGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM5LjcgNDAxLjljMzQuMiAyMy4xIDgxLjEgMTkuNSAxMTEuNC0xMC44YzM0LjQtMzQuNCAzNC40LTkwLjEgMC0xMjQuNGMtMjcuOC0yNy44LTY5LjUtMzMuMS0xMDIuNi0xNmMtMTEuOCA2LjEtMTYuNCAyMC42LTEwLjMgMzIuM3MyMC42IDE2LjQgMzIuMyAxMC4zYzE1LjEtNy44IDM0LTUuMyA0Ni42IDcuM2MxNS42IDE1LjYgMTUuNiA0MC45IDAgNTYuNnMtNDAuOSAxNS42LTU2LjYgMGwtODEuNy04MS43QzQwMS4yIDI2MS4zIDQxNiAyMzYuNCA0MTYgMjA4YzAtMzMuOS0yMS4xLTYyLjktNTAuOS03NC41YzEuOS02LjggMi45LTE0IDIuOS0yMS41YzAtNDQuMi0zNS44LTgwLTgwLTgwYy0yNy4zIDAtNTEuNSAxMy43LTY1LjkgMzQuNkMyMTYuMyA0Ni42IDE5Ny45IDMyIDE3NiAzMmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhjMCA0IC41IDcuOSAxLjQgMTEuNkw0MzkuNyA0MDEuOXpNNDgwIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTAgMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNNjguMyA4N0M0My4xIDYxLjggMCA3OS43IDAgMTE1LjNWNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwSDM5Ni43YzM1LjYgMCA1My41LTQzLjEgMjguMy02OC4zTDY4LjMgODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpbGxSb2Nrc2xpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUyLjQgMTAzLjhsMjcgNDhjMi44IDUgOC4yIDguMiAxMy45IDguMmw1My4zIDBjNS44IDAgMTEuMS0zLjEgMTMuOS04LjJsMjctNDhjMi43LTQuOSAyLjctMTAuOCAwLTE1LjdsLTI3LTQ4Yy0yLjgtNS04LjItOC4yLTEzLjktOC4ySDI5My40Yy01LjggMC0xMS4xIDMuMS0xMy45IDguMmwtMjcgNDhjLTIuNyA0LjktMi43IDEwLjggMCAxNS43ek02OC4zIDg3QzQzLjEgNjEuOCAwIDc5LjcgMCAxMTUuM1Y0MzJjMCA0NC4yIDM1LjggODAgODAgODBIMzk2LjdjMzUuNiAwIDUzLjUtNDMuMSAyOC4zLTY4LjNMNjguMyA4N3pNNTA0LjIgNDAzLjZjNC45IDIuNyAxMC44IDIuNyAxNS43IDBsNDgtMjdjNS0yLjggOC4yLTguMiA4LjItMTMuOVYzMDkuNGMwLTUuOC0zLjEtMTEuMS04LjItMTMuOWwtNDgtMjdjLTQuOS0yLjctMTAuOC0yLjctMTUuNyAwbC00OCAyN2MtNSAyLjgtOC4yIDguMi04LjIgMTMuOXY1My4zYzAgNS44IDMuMSAxMS4xIDguMiAxMy45bDQ4IDI3ek0xOTIgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzg0IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpcHBvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNyA0N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxNy4yIDE3LjJjMS45LS4xIDMuOS0uMiA1LjgtLjJoMzJjMTEuMiAwIDIxLjkgMi4zIDMxLjYgNi41TDU0MyA1NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMNTY0IDEwMS45YzcuNiAxMi4yIDEyIDI2LjcgMTIgNDIuMWMwIDEwLjIgNy40IDE4LjggMTYuNyAyM2MyNy45IDEyLjUgNDcuMyA0MC41IDQ3LjMgNzNjMCAyNi4yLTEyLjYgNDkuNC0zMiA2NHYzMmMwIDguOC03LjIgMTYtMTYgMTZINTYwYy04LjggMC0xNi03LjItMTYtMTZWMzIwSDQ4MHYxNmMwIDguOC03LjIgMTYtMTYgMTZINDMyYy04LjggMC0xNi03LjItMTYtMTZWMzE4LjRjLTExLjgtMi40LTIyLjctNy40LTMyLTE0LjRjLTEuNS0xLjEtMi45LTIuMy00LjMtMy41Yy0xNy0xNC43LTI3LjctMzYuNC0yNy43LTYwLjVjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZjMCA0NC43IDI2LjIgODMuMiA2NCAxMDEuMlYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNzJjLTE5LjggNy43LTQxLjQgMTItNjQgMTJzLTQ0LjItNC4zLTY0LTEydjc2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMjkuMUw0NS45IDM2OS43Yy01LjQgMTIuMS0xOS42IDE3LjYtMzEuNyAxMi4yUy0zLjMgMzYyLjQgMi4xIDM1MC4zTDI0IDMwMC45YzUuMy0xMS45IDgtMjQuNyA4LTM3LjdDMzIgMTU1LjcgMTE3LjIgNjggMjIzLjggNjQuMWwuMi0uMWg3LjJIMjU2aDMyYzQxLjcgMCA4My40IDEyLjEgMTE3LjIgMjUuN2MxLjctMS44IDMuNS0zLjYgNS4zLTUuMkw0MDcgODFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45em03MyAxODVhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHptODggMjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4ek00ODAgMTQ0YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTQ4IDE2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9ja2V5UHVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMjU2QzExNC42IDI1NiAwIDIxMyAwIDE2MHMxMTQuNi05NiAyNTYtOTZzMjU2IDQzIDI1NiA5NnMtMTE0LjYgOTYtMjU2IDk2em0xOTIuMyAxLjhjMjQuNy05LjMgNDYuOS0yMSA2My43LTM1LjZWMzUyYzAgNTMtMTE0LjYgOTYtMjU2IDk2UzAgNDA1IDAgMzUyVjIyMi4zYzE2LjggMTQuNiAzOSAyNi4zIDYzLjcgMzUuNkMxMTQuNSAyNzYuOSAxODIuNSAyODggMjU2IDI4OHMxNDEuNS0xMS4xIDE5Mi4zLTMwLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvbGx5QmVycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTgwIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMjc2LjggMzgzLjhjMSAuMSAyLjEgLjIgMy4yIC4yYzM5LjggMCA3MiAzMi4yIDcyIDcydjIyLjdjMCAxNi40IDE2IDI3LjkgMzEuNiAyMi44bDEyLjgtNC4zYzE4LTYgMzcuMy02LjUgNTUuNi0xLjVsMTkuNCA1LjNjMTcuOSA0LjkgMzQuNC0xMS42IDI5LjUtMjkuNUw0OTUuNiA0NTJjLTUtMTguMy00LjQtMzcuNiAxLjUtNTUuNmw0LjMtMTIuOGM1LjItMTUuNS02LjQtMzEuNi0yMi44LTMxLjZjLTM0LjYgMC02Mi43LTI4LjEtNjIuNy02Mi43di0zMmMwLTE2LjQtMTYtMjcuOS0zMS42LTIyLjhsLTEyLjggNC4zYy0xOCA2LTM3LjMgNi41LTU1LjYgMS41bC0yOS42LTguMWMtMi45LS44LTUuOS0xLTguNy0uN2M0LjIgOS43IDUuOCAyMC44IDMuNyAzMi4zTDI3NSAyOTguN2MtMS41IDguNC0xLjQgMTcgLjUgMjUuM2w1LjMgMjMuOWMyLjggMTIuNyAxLjEgMjUuMi00IDM1Ljl6TTEyNy42IDIzNC41Yy0xNS41LTUuMi0zMS42IDYuNC0zMS42IDIyLjh2MzJDOTYgMzIzLjkgNjcuOSAzNTIgMzMuMyAzNTJjLTE2LjQgMC0yNy45IDE2LTIyLjggMzEuNmw0LjMgMTIuOGM2IDE4IDYuNSAzNy4zIDEuNSA1NS42bC01LjMgMTkuNEM2LjIgNDg5LjQgMjIuNiA1MDUuOCA0MC41IDUwMUw2MCA0OTUuNmMxOC4zLTUgMzcuNi00LjUgNTUuNiAxLjVsMTIuOCA0LjNjMTUuNSA1LjIgMzEuNi02LjQgMzEuNi0yMi44di0zMmMwLTM0LjYgMjguMS02Mi43IDYyLjctNjIuN2MxNi40IDAgMjcuOS0xNiAyMi44LTMxLjZsLTQuMy0xMi44Yy02LTE4LTYuNS0zNy4zLTEuNS01NS42bDUuMy0xOS40YzQuOS0xNy45LTExLjYtMzQuNC0yOS41LTI5LjVMMTk2IDI0MC40Yy0xOC4zIDUtMzcuNiA0LjQtNTUuNi0xLjVsLTEyLjgtNC4zek0zODQgMTQ0YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvcnNlSGVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NjRWMzE2LjljMC0xMDguNCA2OC4zLTIwNS4xIDE3MC41LTI0MS4zTDQwNC4yIDE1LjVDNDI1LjYgNy45IDQ0OCAyMy44IDQ0OCA0Ni40YzAgMTEtNS41IDIxLjItMTQuNiAyNy4zTDQwMCA5NmM0OC4xIDAgOTEuMiAyOS44IDEwOC4xIDc0LjlsNDguNiAxMjkuNWMxMS44IDMxLjQgNC4xIDY2LjgtMTkuNiA5MC41Yy0xNiAxNi0zNy44IDI1LjEtNjAuNSAyNS4xaC0zLjRjLTI2LjEgMC01MC45LTExLjYtNjcuNi0zMS43bC0zMi4zLTM4LjdjLTExLjcgNC4xLTI0LjIgNi40LTM3LjMgNi40bC0uMSAwIDAgMGMtNi4zIDAtMTIuNS0uNS0xOC42LTEuNWMtMy42LS42LTcuMi0xLjQtMTAuNy0yLjNsMCAwYy0yOC45LTcuOC01My4xLTI2LjgtNjcuOC01Mi4yYy00LjQtNy42LTE0LjItMTAuMy0yMS45LTUuOHMtMTAuMyAxNC4yLTUuOCAyMS45YzI0IDQxLjUgNjguMyA3MCAxMTkuMyA3MS45bDQ3LjIgNzAuOGM0IDYuMSA2LjIgMTMuMiA2LjIgMjAuNGMwIDIwLjMtMTYuNSAzNi44LTM2LjggMzYuOEgxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4ek0zOTIgMjI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9yc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDIzOC4xVjE2MGgxNmw5LjggMTkuNmMxMi41IDI1LjEgNDIuMiAzNi40IDY4LjMgMjZjMjAuNS04LjIgMzMuOS0yOCAzMy45LTUwLjFWODBjMC0xOS4xLTguNC0zNi4zLTIxLjctNDhINTYwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDQ4MCA0NDhDMzc3LjMgMCAzMjAgNTcuMyAzMjAgMTI4SDIyNCAyMDMuMiAxNDguOGMtMzAuNyAwLTU3LjYgMTYuMy03Mi41IDQwLjhDMzMuMiAxNzQuNSAwIDIxMS40IDAgMjU2djU2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjU2YzAtMTMuNCA2LjYtMjUuMiAxNi43LTMyLjVjMS42IDEzIDYuMyAyNS40IDEzLjYgMzYuNGwyOC4yIDQyLjRjOC4zIDEyLjQgNi40IDI4LjctMS4yIDQxLjZjLTE2LjUgMjgtMjAuNiA2Mi4yLTEwIDkzLjlsMTcuNSA1Mi40YzQuNCAxMy4xIDE2LjYgMjEuOSAzMC40IDIxLjloMzMuN2MyMS44IDAgMzcuMy0yMS40IDMwLjQtNDIuMWwtMjAuOC02Mi41Yy0yLjEtNi40LS41LTEzLjQgNC4zLTE4LjJsMTIuNy0xMi43YzEzLjItMTMuMiAyMC42LTMxLjEgMjAuNi00OS43YzAtMi4zLS4xLTQuNi0uMy02LjlsODQgMjRjNC4xIDEuMiA4LjIgMi4xIDEyLjMgMi44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTUuN2MxOS4yLTE5LjIgMzEuNS00NS43IDMyLTc1LjdoMHYtMS45ek00OTYgNjRhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3NwaXRhbFVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhWMjU2SDE0NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgwdjY0SDE0NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgwdjgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDI2NS45Yy02LjMtMTAuMi05LjktMjIuMi05LjktMzUuMWMwLTQ2LjkgMjUuOC04Ny44IDY0LTEwOS4yVjI3MS44IDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek0xNTIgNjRoMTZjOC44IDAgMTYgNy4yIDE2IDE2djI0aDI0YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMTg0djI0YzAgOC44LTcuMiAxNi0xNiAxNkgxNTJjLTguOCAwLTE2LTcuMi0xNi0xNlYxNTJIMTEyYy04LjggMC0xNi03LjItMTYtMTZWMTIwYzAtOC44IDcuMi0xNiAxNi0xNmgyNFY4MGMwLTguOCA3LjItMTYgMTYtMTZ6TTUxMiAyNzJhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek0yODggNDc3LjFjMCAxOS4zIDE1LjYgMzQuOSAzNC45IDM0LjlINTQxLjFjMTkuMyAwIDM0LjktMTUuNiAzNC45LTM0LjljMC01MS40LTQxLjctOTMuMS05My4xLTkzLjFIMzgxLjFjLTUxLjQgMC05My4xIDQxLjctOTMuMSA5My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3NwaXRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhINDAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjUxMkgzNjhWNDMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djgwSDE5MlY0OHpNNDggOTZIMTYwVjUxMkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzIwSDgwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDBWMjI0SDgwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDBWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em01NDQgMGMyNi41IDAgNDggMjEuNSA0OCA0OHY0OEg1NjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NjRINTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDgwVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0ODBWOTZINTkyek0zMTIgNjRjLTguOCAwLTE2IDcuMi0xNiAxNnYyNEgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMjR2MjRjMCA4LjggNy4yIDE2IDE2IDE2aDE2YzguOCAwIDE2LTcuMiAxNi0xNlYxNTJoMjRjOC44IDAgMTYtNy4yIDE2LTE2VjEyMGMwLTguOC03LjItMTYtMTYtMTZIMzQ0VjgwYzAtOC44LTcuMi0xNi0xNi0xNkgzMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdFR1YlBlcnNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NS4yYzAgMzQgMTQuNCA2Ni40IDM5LjcgODkuMmwxNi40IDE0LjhjMTUuMiAxMy43IDIzLjggMzMuMSAyMy44IDUzLjVWMjAwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTg2LjhjMC0zNC0xNC40LTY2LjQtMzkuNy04OS4yTDI5NS44IDgyLjhDMjgwLjcgNjkuMSAyNzIgNDkuNyAyNzIgMjkuMlYyNHpNMCAzMjB2MTZWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjc3LjNjLTEzLjggMC0yNy4zLTQuNS0zOC40LTEyLjhsLTg1LjMtNjRDMTM3IDE2Ni43IDExNi44IDE2MCA5NiAxNjBjLTUzIDAtOTYgNDMtOTYgOTZ2NjR6bTEyOCAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptODAtMTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6bTExMiAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptODAtMTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6TTM2MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY1LjJjMCAzNCAxNC40IDY2LjQgMzkuNyA4OS4ybDE2LjQgMTQuOGMxNS4yIDEzLjcgMjMuOCAzMy4xIDIzLjggNTMuNVYyMDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxODYuOGMwLTM0LTE0LjQtNjYuNC0zOS43LTg5LjJMNDA3LjggODIuOEMzOTIuNyA2OS4xIDM4NCA0OS43IDM4NCAyOS4yVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0ek02NCAxMjhBNjQgNjQgMCAxIDAgNjQgMGE2NCA2NCAwIDEgMCAwIDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90ZG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC42IDIzLjRjMzEuMiAzMS4yIDMxLjIgODEuOSAwIDExMy4xbC0zNTIgMzUyYy0zMS4yIDMxLjItODEuOSAzMS4yLTExMy4xIDBzLTMxLjItODEuOSAwLTExMy4xbDM1Mi0zNTJjMzEuMi0zMS4yIDgxLjktMzEuMiAxMTMuMSAwek00NDMuMyA5Mi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGMtMTIuNSAxMi41LTIzLjggMTUuMS0zNy41IDE3LjZsLTIuNSAuNGMtMTMuOCAyLjUtMzEuNiA1LjYtNDggMjJjLTE2LjcgMTYuNy0yMC45IDM2LTI0LjEgNTAuOWwwIDB2MGwtLjIgMWMtMy40IDE1LjYtNiAyNi40LTE1LjcgMzYuMXMtMjAuNSAxMi4zLTM2LjEgMTUuN2wtMSAuMmMtMTQuOSAzLjItMzQuMiA3LjQtNTAuOSAyNC4xcy0yMC45IDM2LTI0LjEgNTAuOWwtLjIgMWMtMy40IDE1LjYtNiAyNi40LTE1LjcgMzYuMWMtOS4yIDkuMi0xOCAxMC44LTMyLjcgMTMuNGwwIDAtLjkgLjJjLTE1LjYgMi44LTM0LjkgNi45LTU0LjQgMjYuNGMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwYzEyLjUtMTIuNSAyMy44LTE1LjEgMzcuNS0xNy42bDIuNS0uNGMxMy44LTIuNSAzMS42LTUuNiA0OC0yMmMxNi43LTE2LjcgMjAuOS0zNiAyNC4xLTUwLjlsLjItMWMzLjQtMTUuNiA2LTI2LjQgMTUuNy0zNi4xczIwLjUtMTIuMyAzNi4xLTE1LjdsMS0uMmMxNC45LTMuMiAzNC4yLTcuNCA1MC45LTI0LjFzMjAuOS0zNiAyNC4xLTUwLjlsLjItMWMzLjQtMTUuNiA2LTI2LjQgMTUuNy0zNi4xYzkuMi05LjIgMTgtMTAuOCAzMi43LTEzLjRsLjktLjJjMTUuNi0yLjggMzQuOS02LjkgNTQuNC0yNi40YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42ek0xOTEuMiA0NzkuMmwyODgtMjg4TDQ5NSAyMDdjMTAuOSAxMC45IDE3IDI1LjYgMTcgNDFzLTYuMSAzMC4xLTE3IDQxTDI4OSA0OTVjLTEwLjkgMTAuOS0yNS42IDE3LTQxIDE3cy0zMC4xLTYuMS00MS0xN2wtMTUuOC0xNS44ek0xNyAzMDVDNi4xIDI5NC4xIDAgMjc5LjQgMCAyNjRzNi4xLTMwLjEgMTctNDFMMjIzIDE3QzIzMy45IDYuMSAyNDguNiAwIDI2NCAwczMwLjEgNi4xIDQxIDE3bDE1LjggMTUuOC0yODggMjg4TDE3IDMwNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjQ0OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMDRWNDY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djQ4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjY0QzE0LjMgNjQgMCA0OS43IDAgMzJ6bTk2IDgwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgxMTJjLTguOCAwLTE2IDcuMi0xNiAxNnpNMjQwIDk2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDI0MHptMTEyIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTEyIDE5MmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgxMTJ6bTExMiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMjQwYy04LjggMC0xNiA3LjItMTYgMTZ6bTE0NC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgzNjh6TTMyOCAzODRjMTMuMyAwIDI0LjMtMTAuOSAyMS0yMy44Yy0xMC42LTQxLjUtNDguMi03Mi4yLTkzLTcyLjJzLTgyLjUgMzAuNy05MyA3Mi4yYy0zLjMgMTIuOCA3LjggMjMuOCAyMSAyMy44SDMyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91cmdsYXNzRW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyUzE0LjMgNjQgMzIgNjRWNzVjMCA0Mi40IDE2LjkgODMuMSA0Ni45IDExMy4xTDE0Ni43IDI1NiA3OC45IDMyMy45QzQ4LjkgMzUzLjkgMzIgMzk0LjYgMzIgNDM3djExYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0IDMyMGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlY0MzdjMC00Mi40LTE2LjktODMuMS00Ni45LTExMy4xTDIzNy4zIDI1Nmw2Ny45LTY3LjljMzAtMzAgNDYuOS03MC43IDQ2LjktMTEzLjFWNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwIDY0IDMyek05NiA3NVY2NEgyODhWNzVjMCAyNS41LTEwLjEgNDkuOS0yOC4xIDY3LjlMMTkyIDIxMC43bC02Ny45LTY3LjlDMTA2LjEgMTI0LjkgOTYgMTAwLjQgOTYgNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc0hhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEMxNC4zIDAgMCAxNC4zIDAgMzJTMTQuMyA2NCAzMiA2NFY3NWMwIDQyLjQgMTYuOSA4My4xIDQ2LjkgMTEzLjFMMTQ2LjcgMjU2IDc4LjkgMzIzLjlDNDguOSAzNTMuOSAzMiAzOTQuNiAzMiA0Mzd2MTFjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjQgMzIwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjQzN2MwLTQyLjQtMTYuOS04My4xLTQ2LjktMTEzLjFMMjM3LjMgMjU2bDY3LjktNjcuOWMzMC0zMCA0Ni45LTcwLjcgNDYuOS0xMTMuMVY2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjAgNjQgMzJ6TTk2IDc1VjY0SDI4OFY3NWMwIDE5LTUuNiAzNy40LTE2IDUzSDExMmMtMTAuMy0xNS42LTE2LTM0LTE2LTUzem0xNiAzMDljMy41LTUuMyA3LjYtMTAuMyAxMi4xLTE0LjlMMTkyIDMwMS4zbDY3LjkgNjcuOWM0LjYgNC42IDguNiA5LjYgMTIuMSAxNC45SDExMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91cmdsYXNzU3RhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEMxNC4zIDAgMCAxNC4zIDAgMzJTMTQuMyA2NCAzMiA2NFY3NWMwIDQyLjQgMTYuOSA4My4xIDQ2LjkgMTEzLjFMMTQ2LjcgMjU2IDc4LjkgMzIzLjlDNDguOSAzNTMuOSAzMiAzOTQuNiAzMiA0Mzd2MTFjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjQgMzIwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjQzN2MwLTQyLjQtMTYuOS04My4xLTQ2LjktMTEzLjFMMjM3LjMgMjU2bDY3LjktNjcuOWMzMC0zMCA0Ni45LTcwLjcgNDYuOS0xMTMuMVY2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjAgNjQgMzJ6TTI4OCA0Mzd2MTFIOTZWNDM3YzAtMjUuNSAxMC4xLTQ5LjkgMjguMS02Ny45TDE5MiAzMDEuM2w2Ny45IDY3LjljMTggMTggMjguMSA0Mi40IDI4LjEgNjcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91cmdsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDY0IDMyMGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMlY3NWMwIDQyLjQtMTYuOSA4My4xLTQ2LjkgMTEzLjFMMjM3LjMgMjU2bDY3LjkgNjcuOWMzMCAzMCA0Ni45IDcwLjcgNDYuOSAxMTMuMXYxMWMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjAgNjQgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWNDM3YzAtNDIuNCAxNi45LTgzLjEgNDYuOS0xMTMuMUwxNDYuNyAyNTYgNzguOSAxODguMUM0OC45IDE1OC4xIDMyIDExNy40IDMyIDc1VjY0QzE0LjMgNjQgMCA0OS43IDAgMzJ6TTk2IDY0Vjc1YzAgMjUuNSAxMC4xIDQ5LjkgMjguMSA2Ny45TDE5MiAyMTAuN2w2Ny45LTY3LjljMTgtMTggMjguMS00Mi40IDI4LjEtNjcuOVY2NEg5NnptMCAzODRIMjg4VjQzN2MwLTI1LjUtMTAuMS00OS45LTI4LjEtNjcuOUwxOTIgMzAxLjNsLTY3LjkgNjcuOWMtMTggMTgtMjguMSA0Mi40LTI4LjEgNjcuOXYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VDaGltbmV5Q3JhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYy4yIDM1LjUtMjguNSA2NC4zLTY0IDY0LjNIMzI2LjRMMjg4IDQ0OGw4MC44LTY3LjNjNy44LTYuNSA3LjYtMTguNi0uNC0yNC45TDI1MC42IDI2My4yYy0xNC42LTExLjUtMzMuOCA3LTIyLjggMjJMMjg4IDM2OGwtODUuNSA3MS4yYy02LjEgNS03LjUgMTMuOC0zLjUgMjAuNUwyMzAuNCA1MTJIMTI4LjFjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w0MTYgMTAwLjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTg1bDUyLjggNDYuNGM4IDcgMTIgMTUgMTEgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlQ2hpbW5leU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYy4yIDM1LjUtMjguNSA2NC4zLTY0IDY0LjNIMTI4LjFjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w0MTYgMTAwLjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTg1bDUyLjggNDYuNGM4IDcgMTIgMTUgMTEgMjR6TTI3MiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBoNDhjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZIMzIwVjIwOGMwLTguOC03LjItMTYtMTYtMTZIMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNoaW1uZXlVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0My44IDI4Ny42YzE3IDAgMzItMTQgMzItMzIuMWMxLTktMy0xNy0xMS0yNEw1MTIgMTg1VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzYuN0wzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4LjVjMzUuNSAwIDY0LjItMjguOCA2NC02NC4zbC0uNy0xNjAuMmgzMnpNMjg4IDE2MGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMTc2IDQwMGMwLTQ0LjIgMzUuOC04MCA4MC04MGg2NGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZIMTkyYy04LjggMC0xNi03LjItMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlQ2hpbW5leVdpbmRvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzUuOCAyNTUuNWMwIDE4LTE1IDMyLjEtMzIgMzIuMWgtMzJsLjcgMTYwLjJjLjIgMzUuNS0yOC41IDY0LjMtNjQgNjQuM0gxMjguMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDQxNiAxMDAuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYxODVsNTIuOCA0Ni40YzggNyAxMiAxNSAxMSAyNHpNMjQ4IDE5MmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2ODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VDaGltbmV5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0My44IDI4Ny42YzE3IDAgMzItMTQgMzItMzIuMWMxLTktMy0xNy0xMS0yNEw1MTIgMTg1VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzYuN0wzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NCAyNGMwIDIyLjEgMTcuOSA0MCA0MCA0MGgyNCAzMi41YzEuNCAwIDIuOCAwIDQuMi0uMWMxLjEgLjEgMi4yIC4xIDMuMyAuMWgxNmMyMi4xIDAgNDAtMTcuOSA0MC00MFY0NTUuOGMuMy0yLjYgLjUtNS4zIC41LTguMWwtLjctMTYwLjJoMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwLjcgMzUyYzguMS04OS43IDgzLjUtMTYwIDE3NS4zLTE2MGM4LjkgMCAxNy42IC43IDI2LjEgMS45TDMwOS41IDdjLTYtNS0xNC03LTIxLTdzLTE1IDEtMjIgOEwxMCAyMzEuNWMtNyA3LTEwIDE1LTEwIDI0YzAgMTggMTQgMzIuMSAzMiAzMi4xaDMydjY5LjdjLS4xIC45LS4xIDEuOC0uMSAyLjhWNDcyYzAgMjIuMSAxNy45IDQwIDQwIDQwaDE2YzEuMiAwIDIuNC0uMSAzLjYtLjJjMS41IC4xIDMgLjIgNC41IC4ySDE2MGgyNGMyMi4xIDAgNDAtMTcuOSA0MC00MFY0NDggMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0bC43IDB6TTY0MCAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwLjcgMzUyYzguMS04OS43IDgzLjUtMTYwIDE3NS4zLTE2MGM4LjkgMCAxNy42IC43IDI2LjEgMS45TDMwOS41IDdjLTYtNS0xNC03LTIxLTdzLTE1IDEtMjIgOEwxMCAyMzEuNWMtNyA3LTEwIDE1LTEwIDI0YzAgMTggMTQgMzIuMSAzMiAzMi4xaDMydjY5LjdjLS4xIC45LS4xIDEuOC0uMSAyLjhWNDcyYzAgMjIuMSAxNy45IDQwIDQwIDQwaDE2YzEuMiAwIDIuNC0uMSAzLjYtLjJjMS41IC4xIDMgLjIgNC41IC4ySDE2MGgyNGMyMi4xIDAgNDAtMTcuOSA0MC00MFY0NDggMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0bC43IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwLjcgMzUyYzguMS04OS43IDgzLjUtMTYwIDE3NS4zLTE2MGM4LjkgMCAxNy42IC43IDI2LjEgMS45TDMwOS41IDdjLTYtNS0xNC03LTIxLTdzLTE1IDEtMjIgOEwxMCAyMzEuNWMtNyA3LTEwIDE1LTEwIDI0YzAgMTggMTQgMzIuMSAzMiAzMi4xaDMydjY5LjdjLS4xIC45LS4xIDEuOC0uMSAyLjhWNDcyYzAgMjIuMSAxNy45IDQwIDQwIDQwaDE2YzEuMiAwIDIuNC0uMSAzLjYtLjJjMS41IC4xIDMgLjIgNC41IC4ySDE2MGgyNGMyMi4xIDAgNDAtMTcuOSA0MC00MFY0NDggMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0bC43IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNyYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0My44IDI4Ny42YzE3IDAgMzItMTQgMzItMzIuMWMxLTktMy0xNy0xMS0yNEwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjMwLjRsLTMxLjMtNTIuMmMtNC4xLTYuOC0yLjYtMTUuNSAzLjUtMjAuNUwyODggMzY4bC02MC4yLTgyLjhjLTEwLjktMTUgOC4yLTMzLjUgMjIuOC0yMmwxMTcuOSA5Mi42YzggNi4zIDguMiAxOC40IC40IDI0LjlMMjg4IDQ0OGwzOC40IDY0SDQ0OC41YzM1LjUgMCA2NC4yLTI4LjggNjQtNjQuM2wtLjctMTYwLjJoMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlRmlyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzUwLjFsMCAxLjlIMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NCAyNGMwIDIyLjEtMTcuOSA0MC00MCA0MEgxNjAgMTI4LjFjLTEuNSAwLTMtLjEtNC41LS4yYy0xLjIgLjEtMi40IC4yLTMuNiAuMkgxMDRjLTIyLjEgMC00MC0xNy45LTQwLTQwVjM2MGMwLS45IDAtMS45IC4xLTIuOFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNDQ3LjMgMTI4LjFjLTEyLjMtMS0yNSAzLTM0LjggMTEuN2MtMzUuNCAzMS42LTY1LjYgNjcuNy04Ny4zIDEwMi44QzMwNC4zIDI3Ni41IDI4OCAzMTQuOSAyODggMzUwLjF6TTQ4MCA1MTJjLTg4LjQgMC0xNjAtNzEuNi0xNjAtMTYwYzAtNzYuNyA2Mi41LTE0NC43IDEwNy4yLTE3OS40YzUtMy45IDEwLjktNS44IDE2LjgtNS44YzcuOS0uMSAxNiAzLjEgMjIgOS4ybDQ2IDQ2IDExLjMtMTEuM2MxMS43LTExLjcgMzAuNi0xMi43IDQyLjMtMUM2MjQuNSAyNjggNjQwIDMyMC4yIDY0MCAzNTJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjB6bTY0LTExMS44YzAtMzYuNS0zNy03My01NC44LTg4LjRjLTUuNC00LjctMTMuMS00LjctMTguNSAwQzQ1MyAzMjcuMSA0MTYgMzYzLjYgNDE2IDQwMC4yYzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMTkyIDUxMmg2NFYxOTJINjI0YzguOCAwIDE2LTcuMiAxNi0xNlY0OGMwLTguOC03LjItMTYtMTYtMTZINTEyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek00MTYgMTU5TDI3Ni44IDM5LjdjLTEyLTEwLjMtMjkuNy0xMC4zLTQxLjcgMGwtMjI0IDE5MkMxIDI0MC40LTIuNyAyNTQuNSAyIDI2Ny4xUzE4LjYgMjg4IDMyIDI4OEg2NFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0LjdsLjIgMGgtMVYxNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlRmxvb2RXYXRlckNpcmNsZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE0NEExNDQgMTQ0IDAgMSAwIDAgMTQ0YTE0NCAxNDQgMCAxIDAgMjg4IDB6TTE0MC43IDc2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsNTYgNTZjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTU2IDU2Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDE2OS40IDE2MEg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4OS40TDE0MC43IDk5LjNjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42ek0zMjAgMTQ0YzAgNTcuMy0yNy40IDEwOC4yLTY5LjggMTQwLjNjMTEuOC0zLjYgMjMtOS40IDMzLTE2LjJjMjIuMS0xNS41IDUxLjYtMTUuNSA3My43IDBjMTguNCAxMi43IDM5LjYgMjAuMyA1OS4yIDIwLjNjMTkgMCA0MS4yLTcuOSA1OS4yLTIwLjNjMjMuOC0xNi43IDU1LjgtMTUuNCA3OC4xIDMuNGMyLjEgMS43IDQuMiAzLjMgNi41IDQuOWwtLjMtODQuNEg1NzZjMTMuOSAwIDI2LjEtOC45IDMwLjQtMjIuMXMtLjQtMjcuNi0xMS42LTM1LjhsLTE3Ni0xMjhDNDA3LjYtMiAzOTIuNC0yIDM4MS4yIDYuMUwzMDEgNjQuNGMxMi4xIDIzLjkgMTkgNTAuOSAxOSA3OS42em0xOC41IDE2NS45Yy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI3OSAzMjUuNCAyNTEuNSAzMzYgMjI0IDMzNmMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFsMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzE1OC41IDM4OS43IDE5MSA0MDAgMjI0IDQwMGMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC42IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS41LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDcxLjQgMzI1LjIgNDQyLjkgMzM2IDQxNiAzMzZjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMXptMCAxMTJjLTExLjEtNy45LTI1LjktNy45LTM3IDBDMjc5IDQzNy40IDI1MS41IDQ0OCAyMjQgNDQ4Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWwwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTU4LjUgNTAxLjcgMTkxIDUxMiAyMjQgNTEyYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjYgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43bDAgMEM0NzEuNCA0MzcuMiA0NDIuOSA0NDggNDE2IDQ0OGMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUZsb29kV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA2LjggNi4xQzI5NS42LTIgMjgwLjQtMiAyNjkuMiA2LjFsLTE3NiAxMjhjLTExLjIgOC4yLTE1LjkgMjIuNi0xMS42IDM1LjhTOTguMSAxOTIgMTEyIDE5MmgxNnY3M2MxLjcgMSAzLjMgMiA0LjkgMy4xYzE4IDEyLjQgNDAuMSAyMC4zIDU5LjIgMjAuM2MyMS4xIDAgNDItOC41IDU5LjItMjAuM2MyMi4xLTE1LjUgNTEuNi0xNS41IDczLjcgMGMxOC40IDEyLjcgMzkuNiAyMC4zIDU5LjIgMjAuM2MxOSAwIDQxLjItNy45IDU5LjItMjAuM2MxLjUtMSAzLTIgNC41LTIuOWwtLjMtNzMuMkg0NjRjMTMuOSAwIDI2LjEtOC45IDMwLjQtMjIuMXMtLjQtMjcuNi0xMS42LTM1LjhsLTE3Ni0xMjh6TTI2OS41IDMwOS45QzI0NyAzMjUuNCAyMTkuNSAzMzYgMTkyIDMzNmMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFsMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzEyNi41IDM4OS43IDE1OSA0MDAgMTkyIDQwMGMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC41IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS41LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDM5LjQgMzI1LjIgNDEwLjkgMzM2IDM4NCAzMzZjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMWMtMTEuMS03LjktMjUuOS03LjktMzcgMHpNMzg0IDQ0OGMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI0NyA0MzcuNCAyMTkuNSA0NDggMTkyIDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFsMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzEyNi41IDUwMS43IDE1OSA1MTIgMTkyIDUxMmMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC41IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS40LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDM5LjQgNDM3LjIgNDEwLjkgNDQ4IDM4NCA0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlTGFwdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxOC4zIDguNWMxMi4zLTExLjMgMzEuMi0xMS4zIDQzLjQgMGwyMDggMTkyYzYuNyA2LjIgMTAuMyAxNC44IDEwLjMgMjMuNUgzMzZjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDY0VjQxNkgxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjI1NkgzMmMtMTMuMiAwLTI1LTguMS0yOS44LTIwLjNzLTEuNi0yNi4yIDguMS0zNS4ybDIwOC0xOTJ6TTM1MiAzMDRWNDQ4SDU0NFYzMDRIMzUyem0tNDgtMTZjMC0xNy43IDE0LjMtMzIgMzItMzJINTYwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ0OGgzMmM4LjggMCAxNiA3LjIgMTYgMTZjMCAyNi41LTIxLjUgNDgtNDggNDhINTQ0IDM1MiAzMDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtOC44IDcuMi0xNiAxNi0xNmgzMlYyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgNDgwYzAgMTEuNyAzLjEgMjIuNiA4LjYgMzJIMzkyYy0yMi4xIDAtNDAtMTcuOS00MC00MFY0NDggMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQgMjRjMCAyMi4xLTE3LjkgNDAtNDAgNDBIMTYwIDEyOC4xYy0xLjUgMC0zLS4xLTQuNS0uMmMtMS4yIC4xLTIuNCAuMi0zLjYgLjJIMTA0Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYzNjBjMC0uOSAwLTEuOSAuMS0yLjhWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDQ5MC43IDE2Ni4zQzQ0Ny4yIDE4MS43IDQxNiAyMjMuMiA0MTYgMjcydjI0LjZjLTE5LjEgMTEuMS0zMiAzMS43LTMyIDU1LjRWNDgwek01MjggMjQwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY0OGg2NFYyNzJjMC0xNy43LTE0LjMtMzItMzItMzJ6bS04MCAzMmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwdjQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0NDhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMlYyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlTWVkaWNhbENpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAzNjhjMCA1OS41IDI5LjUgMTEyLjEgNzQuOCAxNDRIMTI4LjFjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w1MjIuMSAxOTMuOWMtOC41LTEuMy0xNy4zLTEuOS0yNi4xLTEuOWMtNTQuNyAwLTEwMy41IDI0LjktMTM1LjggNjRIMzIwVjIwOGMwLTguOC03LjItMTYtMTYtMTZIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ6bTMyIDBhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjExLjMtNDMuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNDgwIDM4NS40bC0yOC43LTI4LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsNDAgNDBjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsNzItNzJjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlTWVkaWNhbENpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAzNjhjMCA1OS41IDI5LjUgMTEyLjEgNzQuOCAxNDRIMTI4LjFjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w1MjIuMSAxOTMuOWMtOC41LTEuMy0xNy4zLTEuOS0yNi4xLTEuOWMtNTQuNyAwLTEwMy41IDI0LjktMTM1LjggNjRIMzIwVjIwOGMwLTguOC03LjItMTYtMTYtMTZIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ6TTQ5NiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDI0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTAtMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2ODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyODhjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZU1lZGljYWxDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzY4YzAgNTkuNSAyOS41IDExMi4xIDc0LjggMTQ0SDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTIyLjEgMTkzLjljLTguNS0xLjMtMTcuMy0xLjktMjYuMS0xLjljLTU0LjcgMC0xMDMuNSAyNC45LTEzNS44IDY0SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2ek00OTYgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMjIuNiAxNDRsMzYuNy0zNi43YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDk2IDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDczLjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0OTYgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw1MTguNiAzNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlTWVkaWNhbEZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJINjI0YzguOCAwIDE2IDcuMiAxNiAxNlYxNzZjMCA4LjgtNy4yIDE2LTE2IDE2SDUxMlY1MTJINDQ4VjE5MiAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMjc2LjggMzkuN0w0MTYgMTU5VjUxMmgxbC0uMiAwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODhIMzJjLTEzLjQgMC0yNS40LTguMy0zMC0yMC45cy0xLTI2LjcgOS4yLTM1LjRsMjI0LTE5MmMxMi0xMC4zIDI5LjctMTAuMyA0MS43IDB6TTIyNCAyMDh2NDhIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwaDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDI4OFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQzLjggMjg3LjZjMTcgMCAzMi0xNCAzMi0zMi4xYzEtOS0zLTE3LTExLTI0TDMwOS41IDdjLTYtNS0xNC03LTIxLTdzLTE1IDEtMjIgOEwxMCAyMzEuNWMtNyA3LTEwIDE1LTEwIDI0YzAgMTggMTQgMzIuMSAzMiAzMi4xaDMyVjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDguNWMzNS41IDAgNjQuMi0yOC44IDY0LTY0LjNsLS43LTE2MC4yaDMyek0yNTYgMjA4YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzMjB2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjMyMEgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VTaWduYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzU3LjcgOC41Yy0xMi4zLTExLjMtMzEuMi0xMS4zLTQzLjQgMGwtMjA4IDE5MmMtOS40IDguNi0xMi43IDIyLTguNSAzNGM4Ny4xIDI1LjMgMTU1LjYgOTQuMiAxODAuMyAxODEuNkg0NjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjU2aDMyYzEzLjIgMCAyNS04LjEgMjkuOC0yMC4zczEuNi0yNi4yLTguMS0zNS4ybC0yMDgtMTkyek0yODggMjA4YzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDMwNGMtOC44IDAtMTYtNy4yLTE2LTE2VjIwOHpNMjQgMjU2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0YzEwMS42IDAgMTg0IDgyLjQgMTg0IDE4NGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTI4LjEtMTAzLjktMjMyLTIzMi0yMzJ6bTggMjU2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMCAzNzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRjNDguNiAwIDg4IDM5LjQgODggODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTc1LjEtNjAuOS0xMzYtMTM2LTEzNmMtMTMuMyAwLTI0IDEwLjctMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlVHN1bmFtaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MC44IDEzNi41QzEwNC45IDkzLjggMTUyLjYgNjQgMjA5IDY0YzE2LjkgMCAzMy4xIDIuNyA0OC4yIDcuN2MxNi44IDUuNSAzNC45LTMuNiA0MC40LTIwLjRzLTMuNi0zNC45LTIwLjQtNDAuNEMyNTUuOCAzLjggMjMyLjggMCAyMDkgMEM5NS4yIDAgMCA4OCAwIDIwMGMwIDkxLjYgNTMuNSAxNzIuMSAxNDIuMiAxOTQuMWMxMy40IDMuOCAyNy41IDUuOSA0Mi4yIDUuOWMuNyAwIDEuNCAwIDIuMS0uMWMxLjggMCAzLjcgLjEgNS41IC4xbDAgMGMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC41IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS41LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDM5LjQgMzI1LjIgNDEwLjkgMzM2IDM4NCAzMzZjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMWMtMTEuMS03LjktMjUuOS03LjktMzcgMGMtMjIuNCAxNS41LTQ5LjkgMjYuMS03Ny40IDI2LjFjMCAwLS4xIDAtLjEgMGMtMTIuNCAwLTI0LTEuNS0zNC45LTQuM0MxMjEuNiAzMjAuMiA5NiAyODcgOTYgMjQ4YzAtNDguNSAzOS41LTg4IDg4LjQtODhjMTMuNSAwIDI2LjEgMyAzNy41IDguM2MxNiA3LjUgMzUuMSAuNiA0Mi41LTE1LjVzLjYtMzUuMS0xNS41LTQyLjVDMjI5LjMgMTAxLjEgMjA3LjQgOTYgMTg0LjQgOTZjLTQwIDAtNzYuNCAxNS40LTEwMy42IDQwLjV6bTI1Mi0xOC4xYy04LjEgNi0xMi44IDE1LjUtMTIuOCAyNS42VjI2NWMxLjYgMSAzLjMgMiA0LjggMy4xYzE4LjQgMTIuNyAzOS42IDIwLjMgNTkuMiAyMC4zYzE5IDAgNDEuMi03LjkgNTkuMi0yMC4zYzIzLjgtMTYuNyA1NS44LTE1LjMgNzguMSAzLjRjMTAuNiA4LjggMjQuMiAxNS42IDM3LjMgMTguNmM1LjggMS40IDExLjIgMy40IDE2LjIgNi4yYy43LTIuNyAxLjEtNS41IDEuMS04LjRsLS40LTE0NGMwLTEwLTQuNy0xOS40LTEyLjctMjUuNWwtOTUuNS03MmMtMTEuNC04LjYtMjcuMS04LjYtMzguNSAwbC05NiA3MnpNMzg0IDQ0OGMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI0NyA0MzcuNCAyMTkuNSA0NDggMTkyIDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFsMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzEyNi41IDUwMS43IDE1OSA1MTIgMTkyIDUxMmMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC41IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS40LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDM5LjQgNDM3LjIgNDEwLjkgNDQ4IDM4NCA0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzUuOCAyNTUuNWMwIDE4LTE1IDMyLjEtMzIgMzIuMWgtMzJsLjcgMTYwLjJjLjIgMzUuNS0yOC41IDY0LjMtNjQgNjQuM0gxMjguMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDU2NC44IDIzMS41YzggNyAxMiAxNSAxMSAyNHpNMzUyIDIyNGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6bS05NiA5NmMtNDQuMiAwLTgwIDM1LjgtODAgODBjMCA4LjggNy4yIDE2IDE2IDE2SDM4NGM4LjggMCAxNi03LjIgMTYtMTZjMC00NC4yLTM1LjgtODAtODAtODBIMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzUuOCAyNTUuNWMwIDE4LTE1IDMyLjEtMzIgMzIuMWgtMzJsLjcgMTYwLjJjMCAyLjctLjIgNS40LS41IDguMVY0NzJjMCAyMi4xLTE3LjkgNDAtNDAgNDBINDU2Yy0xLjEgMC0yLjIgMC0zLjMtLjFjLTEuNCAuMS0yLjggLjEtNC4yIC4xSDQxNiAzOTJjLTIyLjEgMC00MC0xNy45LTQwLTQwVjQ0OCAzODRjMC0xNy43LTE0LjMtMzItMzItMzJIMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NCAyNGMwIDIyLjEtMTcuOSA0MC00MCA0MEgxNjAgMTI4LjFjLTEuNSAwLTMtLjEtNC41LS4yYy0xLjIgLjEtMi40IC4yLTMuNiAuMkgxMDRjLTIyLjEgMC00MC0xNy45LTQwLTQwVjM2MGMwLS45IDAtMS45IC4xLTIuOFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTY0LjggMjMxLjVjOCA3IDEyIDE1IDExIDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIcnl2bmlhU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjEuOSAxMTYuMkMxMzguMyAxMDMuMSAxNTguNyA5NiAxNzkuNiA5NkgyMjNjMjcuMSAwIDQ5IDIxLjkgNDkgNDljMCAxMS41LTQgMjIuNC0xMS4xIDMxSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE1NS41bC01MC42IDI4LjljLTEuNyAxLTMuNCAyLTUuMSAzLjFIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTIuM2MtMi44IDkuOS00LjMgMjAuNC00LjMgMzFjMCA2Mi40IDUwLjYgMTEzIDExMyAxMTNoNDMuNGMzNS41IDAgNzAtMTIuMSA5Ny43LTM0LjNMMzA4IDQ0MWMxMy44LTExIDE2LTMxLjIgNS00NXMtMzEuMi0xNi00NS01bC01LjkgNC43Yy0xNi40IDEzLjEtMzYuNyAyMC4yLTU3LjcgMjAuMkgxNjFjLTI3LjEgMC00OS0yMS45LTQ5LTQ5YzAtMTEuNSA0LTIyLjQgMTEuMS0zMUgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjI4LjVsNTAuNi0yOC45YzEuNy0xIDMuNC0yIDUuMS0zLjFIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMzMS43YzIuOC0xMCA0LjMtMjAuNCA0LjMtMzFjMC02Mi40LTUwLjYtMTEzLTExMy0xMTNIMTc5LjZjLTM1LjUgMC03MCAxMi4xLTk3LjcgMzQuM0w3NiA3MWMtMTMuOCAxMS0xNiAzMS4yLTUgNDVzMzEuMiAxNiA0NSA1bDUuOS00Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUh1cnJpY2FuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDIwOEMwIDEwNC40IDc1LjcgMTguNSAxNzQuOSAyLjZDMTg0IDEuMiAxOTIgOC42IDE5MiAxNy45VjgxLjJjMCA4LjQgNi41IDE1LjMgMTQuNyAxNi41QzMwNyAxMTIuNSAzODQgMTk5IDM4NCAzMDMuNGMwIDEwMy42LTc1LjcgMTg5LjUtMTc0LjkgMjA1LjRjLTkuMiAxLjUtMTcuMS01LjktMTcuMS0xNS4yVjQzMC4yYzAtOC40LTYuNS0xNS4zLTE0LjctMTYuNUM3NyAzOTguOSAwIDMxMi40IDAgMjA4em0yODggNDhBOTYgOTYgMCAxIDAgOTYgMjU2YTk2IDk2IDAgMSAwIDE5MiAwem0tOTYtMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJQ3Vyc29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS4xIDI5LjNDLTEuNCA0NyAxMS43IDYyLjQgMjkuMyA2My45bDggLjdDNzAuNSA2Ny4zIDk2IDk1IDk2IDEyOC4zVjIyNEg2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg5NnY5NS43YzAgMzMuMy0yNS41IDYxLTU4LjcgNjMuOGwtOCAuN0MxMS43IDQ0OS42LTEuNCA0NjUgLjEgNDgyLjdzMTYuOSAzMC43IDM0LjUgMjkuMmw4LS43YzM0LjEtMi44IDY0LjItMTguOSA4NS40LTQyLjljMjEuMiAyNCA1MS4yIDQwLjEgODUuNCA0Mi45bDggLjdjMTcuNiAxLjUgMzMuMS0xMS42IDM0LjUtMjkuMnMtMTEuNi0zMy4xLTI5LjItMzQuNWwtOC0uN0MxODUuNSA0NDQuNyAxNjAgNDE3IDE2MCAzODMuN1YyODhoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTYwVjEyOC4zYzAtMzMuMyAyNS41LTYxIDU4LjctNjMuOGw4LS43YzE3LjYtMS41IDMwLjctMTYuOSAyOS4yLTM0LjVTMjM5LTEuNCAyMjEuMyAuMWwtOCAuN0MxNzkuMiAzLjYgMTQ5LjIgMTkuNyAxMjggNDMuN2MtMjEuMi0yNC01MS4yLTQwLTg1LjQtNDIuOWwtOC0uN0MxNy0xLjQgMS42IDExLjcgLjEgMjkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZoOTZWNDE2SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJWOTZoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTYwIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJY2VDcmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjcuMSAxNjBjLjYtNS4zIC45LTEwLjYgLjktMTZDMzY4IDY0LjUgMzAzLjUgMCAyMjQgMFM4MCA2NC41IDgwIDE0NGMwIDUuNCAuMyAxMC43IC45IDE2SDgwYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4aDUzLjUgMTgxSDM2OGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OGgtLjl6TTk2IDI4OEwyMDAuOCA0OTcuN2M0LjQgOC44IDEzLjMgMTQuMyAyMy4yIDE0LjNzMTguOC01LjUgMjMuMi0xNC4zTDM1MiAyODhIOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUljaWNsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzUuOCAzMDQuOEwxIDM1LjdjLS43LTIuNS0xLTUtMS03LjVDMCAxMi42IDEyLjYgMCAyOC4yIDBINDgyLjRDNDk4LjggMCA1MTIgMTMuMiA1MTIgMjkuNmMwIDEuNi0uMSAzLjMtLjQgNC45TDQzNC42IDQ5Ni4xYy0xLjUgOS4yLTkuNSAxNS45LTE4LjggMTUuOWMtOS4yIDAtMTcuMS02LjYtMTguNy0xNS42TDMzNiAxNjAgMzA3LjIgMzAzLjljLTEuOSA5LjMtMTAuMSAxNi4xLTE5LjYgMTYuMWMtOS4yIDAtMTcuMi02LjItMTkuNC0xNS4xTDI0MCAxOTIgMjEwLjYgMzY4LjJjLTEuNSA5LjEtOS40IDE1LjgtMTguNiAxNS44cy0xNy4xLTYuNy0xOC42LTE1LjhMMTQ0IDE5MiAxMTUuOSAzMDQuM2MtMi4zIDkuMi0xMC42IDE1LjctMjAuMSAxNS43Yy05LjMgMC0xNy41LTYuMi0yMC0xNS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJY29ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDAuMyA3LjNDNTA3LjcgMTMuMyA1MTIgMjIuNCA1MTIgMzJWMTc2YzAgMjYuNS0yOC43IDQ4LTY0IDQ4cy02NC0yMS41LTY0LTQ4czI4LjctNDggNjQtNDhWNzFMMzUyIDkwLjJWMjA4YzAgMjYuNS0yOC43IDQ4LTY0IDQ4cy02NC0yMS41LTY0LTQ4czI4LjctNDggNjQtNDhWNjRjMC0xNS4zIDEwLjgtMjguNCAyNS43LTMxLjRsMTYwLTMyYzkuNC0xLjkgMTkuMSAuNiAyNi42IDYuNnpNNzQuNyAzMDRsMTEuOC0xNy44YzUuOS04LjkgMTUuOS0xNC4yIDI2LjYtMTQuMmg2MS43YzEwLjcgMCAyMC43IDUuMyAyNi42IDE0LjJMMjEzLjMgMzA0SDI0MGMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM1MmMwLTI2LjUgMjEuNS00OCA0OC00OEg3NC43ek0xOTIgNDA4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQ3OC43IDI3OC4zTDQ0MC4zIDM2OEg0OTZjNi43IDAgMTIuNiA0LjEgMTUgMTAuNHMuNiAxMy4zLTQuNCAxNy43bC0xMjggMTEyYy01LjYgNC45LTEzLjkgNS4zLTE5LjkgLjlzLTguMi0xMi40LTUuMy0xOS4yTDM5MS43IDQwMEgzMzZjLTYuNyAwLTEyLjYtNC4xLTE1LTEwLjRzLS42LTEzLjMgNC40LTE3LjdsMTI4LTExMmM1LjYtNC45IDEzLjktNS4zIDE5LjktLjlzOC4yIDEyLjQgNS4zIDE5LjJ6bS0zMzktNTkuMmMtNi41IDYuNS0xNyA2LjUtMjMgMEwxOS45IDExOS4yYy0yOC0yOS0yNi41LTc2LjkgNS0xMDMuOWMyNy0yMy41IDY4LjQtMTkgOTMuNCA2LjVsMTAgMTAuNSA5LjUtMTAuNWMyNS0yNS41IDY1LjktMzAgOTMuOS02LjVjMzEgMjcgMzIuNSA3NC45IDQuNSAxMDMuOWwtOTYuNCA5OS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZEJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTk2IDMyMGg2NGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTMyLTk2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMTQ0IDY0aDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE0NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRDYXJkQ2xpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMlY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek02NCA2NEgxOTJ2NDhjMCAyNi41IDIxLjUgNDggNDggNDhoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0ek0xNzYgNDM3LjNjMCA1LjkgNC44IDEwLjcgMTAuNyAxMC43SDM4OS4zYzUuOSAwIDEwLjctNC44IDEwLjctMTAuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0gyMjkuM2MtMjkuNSAwLTUzLjMgMjMuOS01My4zIDUzLjN6TTI4OCAzNTJhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlkQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2bDU3NiAwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZ6bTAgMzJWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhIMHpNNjQgNDA1LjNjMC0yOS41IDIzLjktNTMuMyA1My4zLTUzLjNIMjM0LjdjMjkuNSAwIDUzLjMgMjMuOSA1My4zIDUzLjNjMCA1LjktNC44IDEwLjctMTAuNyAxMC43SDc0LjdjLTUuOSAwLTEwLjctNC44LTEwLjctMTAuN3pNMTc2IDE5MmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptMTc2IDE2YzAtOC44IDcuMi0xNiAxNi0xNkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZ6bTAgNjRjMC04LjggNy4yLTE2IDE2LTE2SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnptMCA2NGMwLTguOCA3LjItMTYgMTYtMTZINDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZ2xvbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzMuOFYxNjBINDguNUMxMDAuMiA4Mi44IDE4OC4xIDMyIDI4OCAzMmMxMC44IDAgMjEuNSAuNiAzMiAxLjh6TTM1MiAxNjBWMzkuMUM0MjQuOSA1NS43IDQ4Ny4yIDk5LjggNTI3LjUgMTYwSDM1MnpNMjkuOSAxOTJIOTZWMzIwSDBjMC00NiAxMC44LTg5LjQgMjkuOS0xMjh6TTE5MiAzMjBIMTI4VjE5Mkg0NDhWMzIwSDM4NHYzMkg1NzZ2ODBjMCAyNi41LTIxLjUgNDgtNDggNDhIMzUyVjM1MmMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NFY0ODBINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM1MkgxOTJWMzIwem0yODggMFYxOTJoNjYuMWMxOS4yIDM4LjYgMjkuOSA4MiAyOS45IDEyOEg0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUltYWdlUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzg0ek0xMjggMTkyYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNODAgMzU2LjZjMC0zNy45IDMwLjctNjguNiA2OC42LTY4LjZoODYuOWMzNy45IDAgNjguNiAzMC43IDY4LjYgNjguNmMwIDE1LjEtMTIuMyAyNy40LTI3LjQgMjcuNEgxMDcuNEM5Mi4zIDM4NCA4MCAzNzEuNyA4MCAzNTYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnpNMzIzLjggMjAyLjVjLTQuNS02LjYtMTEuOS0xMC41LTE5LjgtMTAuNXMtMTUuNCAzLjktMTkuOCAxMC41bC04NyAxMjcuNkwxNzAuNyAyOTdjLTQuNi01LjctMTEuNS05LTE4LjctOXMtMTQuMiAzLjMtMTguNyA5bC02NCA4MGMtNS44IDcuMi02LjkgMTcuMS0yLjkgMjUuNHMxMi40IDEzLjYgMjEuNiAxMy42aDk2IDMySDQyNGM4LjkgMCAxNy4xLTQuOSAyMS4yLTEyLjhzMy42LTE3LjQtMS40LTI0LjdsLTEyMC0xNzZ6TTExMiAxOTJhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbWFnZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDMyYy0zNS4zIDAtNjQgMjguNy02NCA2NFYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE2MHpNMzk2IDEzOC43bDk2IDE0NGM0LjkgNy40IDUuNCAxNi44IDEuMiAyNC42UzQ4MC45IDMyMCA0NzIgMzIwSDMyOCAyODAgMjAwYy05LjIgMC0xNy42LTUuMy0yMS42LTEzLjZzLTIuOS0xOC4yIDIuOS0yNS40bDY0LTgwYzQuNi01LjcgMTEuNC05IDE4LjctOXMxNC4yIDMuMyAxOC43IDlsMTcuMyAyMS42IDU2LTg0QzM2MC41IDEzMiAzNjggMTI4IDM3NiAxMjhzMTUuNSA0IDIwIDEwLjd6TTE5MiAxMjhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNNDggMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0UzAgMTA2LjcgMCAxMjBWMzQ0YzAgNzUuMSA2MC45IDEzNiAxMzYgMTM2SDQ1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMzZjLTQ4LjYgMC04OC0zOS40LTg4LTg4VjEyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIxIDMyQzkxLjYgMzIgNjYgNTIgNTguOSA4MC41TDEuOSAzMDguNEMuNiAzMTMuNSAwIDMxOC43IDAgMzIzLjlWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzMjMuOWMwLTUuMi0uNi0xMC40LTEuOS0xNS41bC01Ny0yMjcuOUM0NDYgNTIgNDIwLjQgMzIgMzkxIDMySDEyMXptMCA2NEgzOTFsNDggMTkySDM4Ny44Yy0xMi4xIDAtMjMuMiA2LjgtMjguNiAxNy43bC0xNC4zIDI4LjZjLTUuNCAxMC44LTE2LjUgMTcuNy0yOC42IDE3LjdIMTk1LjhjLTEyLjEgMC0yMy4yLTYuOC0yOC42LTE3LjdsLTE0LjMtMjguNmMtNS40LTEwLjgtMTYuNS0xNy43LTI4LjYtMTcuN0g3M0wxMjEgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZGVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0ek0xOTIgMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem0zMiA5Nkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyek0wIDQ0OGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0xMjcuOCAyNjguNkwyNS44IDM0Ny45QzE1LjMgMzU2LjEgMCAzNDguNiAwIDMzNS4zVjE3Ni43YzAtMTMuMyAxNS4zLTIwLjggMjUuOC0xMi42bDEwMS45IDc5LjNjOC4yIDYuNCA4LjIgMTguOSAwIDI1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZGlhblJ1cGVlU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDk2aDE2SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMzEuOGM5LjYgMTQuNCAxNi43IDMwLjYgMjAuNyA0OEgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjUyLjRjLTEzLjIgNTguMy02MS45IDEwMy4yLTEyMi4yIDExMC45TDI3NC42IDQyMmMxNC40IDEwLjMgMTcuNyAzMC4zIDcuNCA0NC42cy0zMC4zIDE3LjctNDQuNiA3LjRMMTMuNCAzMTRDMi4xIDMwNi0yLjcgMjkxLjUgMS41IDI3OC4yUzE4LjEgMjU2IDMyIDI1Nmg4MGMzMi44IDAgNjEtMTkuNyA3My4zLTQ4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDE4NS4zQzE3MyAxMTUuNyAxNDQuOCA5NiAxMTIgOTZIOTYgMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5kdXN0cnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0VjMwNHY0OCA4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0OTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzA0IDE1Mi4yYzAtMTguMi0xOS40LTI5LjctMzUuNC0yMS4xTDM1MiAyMTUuNFYxNTIuMmMwLTE4LjItMTkuNC0yOS43LTM1LjQtMjEuMUwxNjAgMjE1LjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZmluaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjQxLjFDMCAxNjEgNjUgOTYgMTQ1LjEgOTZjMzguNSAwIDc1LjQgMTUuMyAxMDIuNiA0Mi41TDMyMCAyMTAuN2w3Mi4yLTcyLjJDNDE5LjUgMTExLjMgNDU2LjQgOTYgNDk0LjkgOTZDNTc1IDk2IDY0MCAxNjEgNjQwIDI0MS4xdjI5LjdDNjQwIDM1MSA1NzUgNDE2IDQ5NC45IDQxNmMtMzguNSAwLTc1LjQtMTUuMy0xMDIuNi00Mi41TDMyMCAzMDEuM2wtNzIuMiA3Mi4yQzIyMC41IDQwMC43IDE4My42IDQxNiAxNDUuMSA0MTZDNjUgNDE2IDAgMzUxIDAgMjcwLjlWMjQxLjF6TTI3NC43IDI1NmwtNzIuMi03Mi4yYy0xNS4yLTE1LjItMzUuOS0yMy44LTU3LjQtMjMuOEMxMDAuMyAxNjAgNjQgMTk2LjMgNjQgMjQxLjF2MjkuN2MwIDQ0LjggMzYuMyA4MS4xIDgxLjEgODEuMWMyMS41IDAgNDIuMi04LjUgNTcuNC0yMy44TDI3NC43IDI1NnptOTAuNSAwbDcyLjIgNzIuMmMxNS4yIDE1LjIgMzUuOSAyMy44IDU3LjQgMjMuOGM0NC44IDAgODEuMS0zNi4zIDgxLjEtODEuMVYyNDEuMWMwLTQ0LjgtMzYuMy04MS4xLTgxLjEtODEuMWMtMjEuNSAwLTQyLjIgOC41LTU3LjQgMjMuOEwzNjUuMyAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDE5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggODBhNDggNDggMCAxIDEgOTYgMEE0OCA0OCAwIDEgMSA0OCA4MHpNMCAyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJIOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDQ4aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDY0VjI1NkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUl0YWxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI5My4zTDE2MCA0MTZoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTAuN0wyMjQgOTZIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzIwYzAgODguNC03MS42IDE2MC0xNjAgMTYwUzAgNDA4LjQgMCAzMjBWMjg4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2MzJjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmFyV2hlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMzIgMTQuMyA0Ni4zIDAgNjQgMEgyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINjRDNDYuMyA2NCAzMiA0OS43IDMyIDMyek0wIDE2MGMwLTM1LjMgMjguNy02NCA2NC02NEgyNTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxNjB6bTExMiAwSDY5LjhjLTMuMiAwLTUuOCAyLjYtNS44IDUuOEM2NCAxOTggOTAgMjI0IDEyMi4yIDIyNEgxNDRoMzIgMjEuOGMzMi4xIDAgNTguMi0yNiA1OC4yLTU4LjJjMC0zLjItMi42LTUuOC01LjgtNS44SDIwOGMtMTkuMSAwLTM2LjMgOC40LTQ4IDIxLjdjLTExLjctMTMuMy0yOC45LTIxLjctNDgtMjEuN3ptNDggMTE3LjdjLTExLjctMTMuMy0yOC45LTIxLjctNDgtMjEuN0g2OS44Yy0zLjIgMC01LjggMi42LTUuOCA1LjhDNjQgMjk0IDkwIDMyMCAxMjIuMiAzMjBIMTQ0aDMyIDIxLjhjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yYzAtMy4yLTIuNi01LjgtNS44LTUuOEgyMDhjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43ek0xMTIgMzUySDY5LjhjLTMuMiAwLTUuOCAyLjYtNS44IDUuOEM2NCAzOTAgOTAgNDE2IDEyMi4yIDQxNkgxNDR2MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY0MTZoMjEuOGMzMi4xIDAgNTguMi0yNiA1OC4yLTU4LjJjMC0zLjItMi42LTUuOC01LjgtNS44SDIwOGMtMTkuMSAwLTM2LjMgOC40LTQ4IDIxLjdjLTExLjctMTMuMy0yOC45LTIxLjctNDgtMjEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBIMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0QzQ2LjMgNjQgMzIgNDkuNyAzMiAzMnpNMCAxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRIMjU2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwem05NiA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMkg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmVkaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYgMzE1LjdsLTIxLjItMzEuOWMtMi4xLTMuMi0xLjctNy40IDEtMTAuMXM2LjktMy4xIDEwLjEtMWwyOS41IDE5LjdjMi4xIDEuNCA0LjkgMCA1LTIuNkwyNzkuNyA4Yy4xLTQuNSAzLjgtOCA4LjMtOHM4LjEgMy41IDguMyA4bDkuNCAyODEuOWMuMSAyLjUgMi45IDMuOSA1IDIuNmwyOS41LTE5LjdjMy4yLTIuMSA3LjQtMS43IDEwLjEgMXMzLjEgNi45IDEgMTAuMUwzMzAgMzE1LjdjLTEuMyAxLjktLjIgNC41IDIgNC45bDM3LjYgNy41YzMuNyAuNyA2LjQgNCA2LjQgNy44cy0yLjcgNy4xLTYuNCA3LjhMMzMyIDM1MS40Yy0yLjIgLjQtMy4zIDMtMiA0LjlsMjEuMiAzMS45YzIuMSAzLjIgMS43IDcuNC0xIDEwLjFzLTYuOSAzLjEtMTAuMSAxbC0yNi4zLTE3LjZjLTIuMi0xLjQtNS4xIC4yLTUgMi44bDIuMSA2MS41QzM3MC42IDQzNS4yIDQxNiAzODIuOSA0MTYgMzIwYzAtMzctMTUuNy03MC40LTQwLjgtOTMuN2MtNy02LjUtNi41LTE4LjYgMS0yNC40QzQxMC4xIDE3NS41IDQzMiAxMzQuMyA0MzIgODhjMC0xNi44LTIuOS0zMy04LjItNDhjLTQuNi0xMyAxMC4yLTMwIDIxLjQtMjJjNTMuNSAzOCA5Mi43IDk0LjggMTA3LjggMTYwLjdjLjUgMi4xLS4yIDQuMy0xLjcgNS45bC0yOC40IDI4LjRjLTQgNC0xLjIgMTAuOSA0LjUgMTAuOWgyNmMzLjQgMCA2LjIgMi42IDYuMyA2Yy4xIDMuMyAuMiA2LjYgLjIgMTBjMCAxNy41LTEuNyAzNC43LTQuOCA1MS4zYy0uMiAxLjItLjkgMi40LTEuNyAzLjNsLTQ2LjUgNDYuNWMtNCA0LTEuMiAxMC45IDQuNSAxMC45SDUyNmM0LjYgMCA3LjcgNC44IDUuNyA5QzQ4Ny4yIDQ1MC41IDM5NC44IDUxMiAyODggNTEyUzg4LjggNDUwLjUgNDQuMyAzNjFjLTIuMS00LjIgMS05IDUuNy05SDY0LjVjNS43IDAgOC42LTYuOSA0LjUtMTAuOUwyMi42IDI5NC42Yy0uOS0uOS0xLjUtMi0xLjctMy4zQzE3LjcgMjc0LjcgMTYgMjU3LjUgMTYgMjQwYzAtMy4zIC4xLTYuNyAuMi0xMGMuMS0zLjQgMi45LTYgNi4zLTZoMjZjNS43IDAgOC42LTYuOSA0LjUtMTAuOUwyNC42IDE4NC42Yy0xLjUtMS41LTIuMi0zLjgtMS43LTUuOUMzOC4xIDExMi44IDc3LjMgNTYgMTMwLjggMThjMTEuMy04IDI2IDguOSAyMS40IDIyYy01LjMgMTUtOC4yIDMxLjItOC4yIDQ4YzAgNDYuMyAyMS45IDg3LjUgNTUuOCAxMTMuOWM3LjUgNS44IDggMTcuOSAxIDI0LjRDMTc1LjcgMjQ5LjYgMTYwIDI4MyAxNjAgMzIwYzAgNjIuOSA0NS40IDExNS4yIDEwNS4xIDEyNmwyLjEtNjEuNWMuMS0yLjYtMi44LTQuMi01LTIuOGwtMjYuMyAxNy42Yy0zLjIgMi4xLTcuNCAxLjctMTAuMS0xcy0zLjEtNi45LTEtMTAuMUwyNDYgMzU2LjNjMS4zLTEuOSAuMi00LjUtMi00LjlsLTM3LjYtNy41Yy0zLjctLjctNi40LTQtNi40LTcuOHMyLjctNy4xIDYuNC03LjhsMzcuNi03LjVjMi4yLS40IDMuMy0zIDItNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZXRGaWdodGVyVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcwLjcgOS43QzI2OC4yIDMuOCAyNjIuNCAwIDI1NiAwcy0xMi4yIDMuOC0xNC43IDkuN0wxOTcuMiAxMTIuNmMtMy40IDgtNS4yIDE2LjUtNS4yIDI1LjJ2NzdsLTE0NCA4NFYyODBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NTYgMzIgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNHYtOEgxOTJ2MzIuN0wxMzMuNSA0NjhjLTMuNSAzLTUuNSA3LjQtNS41IDEydjE2YzAgOC44IDcuMiAxNiAxNiAxNmg5NlY0NDhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY2NGg5NmM4LjggMCAxNi03LjIgMTYtMTZWNDgwYzAtNC42LTItOS01LjUtMTJMMzIwIDQxNi43VjM4NEg0NjR2OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjM2OCAzMzYgMjgwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djE4LjhsLTE0NC04NHYtNzdjMC04LjctMS44LTE3LjItNS4yLTI1LjJMMjcwLjcgOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZXRGaWdodGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNEgyOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjgwTDM4NCAxOTJINTAwLjRjNy43IDAgMTUuMyAxLjQgMjIuNSA0LjFMNjI1IDIzNC40YzkgMy40IDE1IDEyIDE1IDIxLjZzLTYgMTguMi0xNSAyMS42TDUyMi45IDMxNS45Yy03LjIgMi43LTE0LjggNC4xLTIyLjUgNC4xSDM4NEwyODAgNDY0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE4NGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg4VjMyMEgxNjBsLTU0LjYgNTQuNmMtNiA2LTE0LjEgOS40LTIyLjYgOS40SDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDgyLjdjOC41IDAgMTYuNiAzLjQgMjIuNiA5LjRMMTYwIDE5MmgzMlY0OGgtOGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTgwIDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSm9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjQzYzAgNTUuMiAyMS45IDEwOC4xIDYwLjkgMTQ3LjFsMjEgMjFjOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjl2MTFjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNDVjMC0yOS43LTExLjgtNTguMi0zMi44LTc5LjJsLTIxLTIxQzQ2My4yIDExNy44IDQ0OCA4MS4yIDQ0OCA0M1YzMnpNNTc2IDI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI0NWMwLTU1LjItMjEuOS0xMDguMS02MC45LTE0Ny4xbC0yMS0yMWMtOS05LTE0LjEtMjEuMi0xNC4xLTMzLjlWMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDNjMCAyOS43IDExLjggNTguMiAzMi44IDc5LjJsMjEgMjFjMjcgMjcgNDIuMiA2My42IDQyLjIgMTAxLjh2MTF6TTIyOS44IDM2MGMtNC43LTIuMy0xMC0yLjctMTUuMi0yYy0zNy44IDUuNi03NS4yIDE0LjMtMTA2LjkgMjIuOEM4MS4zIDM4OCA1OC4zIDM5NS4xIDQyIDQwMC40Yy04LjIgMi43LTE0LjcgNC45LTE5LjIgNi41Yy0yLjMgLjgtNCAxLjQtNS4yIDEuOGwtMS4zIC41QzYuOCA0MTIuNSAwIDQyMS40IDAgNDMyczYuOCAxOS41IDE2LjMgMjIuN2wxLjMgLjVjMS4yIC40IDMgMS4xIDUuMiAxLjhjNC41IDEuNiAxMSAzLjggMTkuMiA2LjVjMTYuMyA1LjQgMzkuMiAxMi41IDY1LjcgMTkuNkMxNjAuMyA0OTcuMyAyMjguOCA1MTIgMjg4IDUxMmg2Ny4zYzQuMSAwIDYuMy01LjEgMy42LTguM0wyNTYuNSAzODAuOGMtNy40LTguOS0xNi41LTE1LjktMjYuNy0yMC44ek00NDUgNTEyaDE5IDUxLjNjNC4xIDAgNi4zLTUuMSAzLjYtOC4zTDQxNi41IDM4MC44QzQwMS4zIDM2Mi41IDM3OC44IDM1MiAzNTUgMzUySDMzNiAyODhjLTEuMSAwLTIuMyAwLTMuNCAwYy00LjEgMC02LjIgNS4xLTMuNSA4LjNMMzgzLjUgNDgzLjJDMzk4LjcgNTAxLjUgNDIxLjIgNTEyIDQ0NSA1MTJ6bS0zLjktMTUxLjdMNTQzLjUgNDgzLjJjMTQuNiAxNy41IDM1LjkgMjcuOSA1OC42IDI4LjdjMjEuMS0xLjEgMzcuOS0xOC42IDM3LjktMzkuOVYzOTJjMC0yMi4xLTE3LjktNDAtNDAtNDBINDQ0LjdjLTQuMSAwLTYuMyA1LjEtMy42IDguM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnVnRGV0ZXJnZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDgwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjQ4aDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIODhDNzQuNyA5NiA2NCA4NS4zIDY0IDcyczEwLjctMjQgMjQtMjRoOFYyNHpNMCAyNTZjMC03MC43IDU3LjMtMTI4IDEyOC0xMjhIMjU2YzcwLjcgMCAxMjggNTcuMyAxMjggMTI4VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjU2em0yNTYgMHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTEgODYuM2MxMi4zLTEyLjcgMTItMzIuOS0uNy00NS4ycy0zMi45LTEyLTQ1LjIgLjdsLTE1NS4yIDE2MEw2NCAyNDlWNjRjMC0xNy43LTE0LjMtMzItMzItMzJTMCA0Ni4zIDAgNjRWMzI4IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM0MWw2NC43LTY2LjcgMTMzIDE5MmMxMC4xIDE0LjUgMzAgMTguMSA0NC41IDguMXMxOC4xLTMwIDguMS00NC41TDE3NC4xIDIyNy40IDMxMSA4Ni4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLYWFiYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MCAxMjBsMjI4IDcxLjJMNTE2IDEyMCAyODggNDguOCA2MCAxMjB6TTI3OC41IDEuNWM2LjItMS45IDEyLjktMS45IDE5LjEgMGwyNTYgODBDNTY2LjkgODUuNiA1NzYgOTggNTc2IDExMnYxNiAwIDIxLjJMMjkyLjggMjM3LjdjLTMuMSAxLTYuNCAxLTkuNSAwTDAgMTQ5LjJWMTI4IDExMkMwIDk4IDkuMSA4NS42IDIyLjUgODEuNWwyNTYtODB6bTIzLjkgMjY2LjhMNTc2IDE4Mi44djQ2LjVsLTUyLjggMTYuNWMtOC40IDIuNi0xMy4xIDExLjYtMTAuNSAyMHMxMS42IDEzLjEgMjAgMTAuNUw1NzYgMjYyLjhWNDAwYzAgMTQtOS4xIDI2LjQtMjIuNSAzMC41bC0yNTYgODBjLTYuMiAxLjktMTIuOSAxLjktMTkuMSAwbC0yNTYtODBDOS4xIDQyNi40IDAgNDE0IDAgNDAwVjI2Mi44bDQzLjIgMTMuNWM4LjQgMi42IDE3LjQtMi4xIDIwLTEwLjVzLTIuMS0xNy40LTEwLjUtMjBMMCAyMjkuMlYxODIuOGwyNzMuNyA4NS41YzkuMyAyLjkgMTkuMyAyLjkgMjguNiAwem0tMTg1LjUtMi42Yy04LjQtMi42LTE3LjQgMi4xLTIwIDEwLjVzMi4xIDE3LjQgMTAuNSAyMGw2NCAyMGM4LjQgMi42IDE3LjQtMi4xIDIwLTEwLjVzLTIuMS0xNy40LTEwLjUtMjBsLTY0LTIwem0zNTIgMzAuNWM4LjQtMi42IDEzLjEtMTEuNiAxMC41LTIwcy0xMS42LTEzLjEtMjAtMTAuNWwtNjQgMjBjLTguNCAyLjYtMTMuMSAxMS42LTEwLjUgMjBzMTEuNiAxMy4xIDIwIDEwLjVsNjQtMjB6bS0yMjQgOS41Yy04LjQtMi42LTE3LjQgMi4xLTIwIDEwLjVzMi4xIDE3LjQgMTAuNSAyMGwzOC41IDEyYzkuMyAyLjkgMTkuMyAyLjkgMjguNiAwbDM4LjUtMTJjOC40LTIuNiAxMy4xLTExLjYgMTAuNS0yMHMtMTEuNi0xMy4xLTIwLTEwLjVsLTM4LjUgMTJjLTMuMSAxLTYuNCAxLTkuNSAwbC0zOC41LTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDM1MmM5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NlM0MzMuMiAwIDMzNiAwUzE2MCA3OC44IDE2MCAxNzZjMCAxOC43IDIuOSAzNi44IDguMyA1My43TDcgMzkxYy00LjUgNC41LTcgMTAuNi03IDE3djgwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjQ0OGg0MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzODRoNDBjNi40IDAgMTIuNS0yLjUgMTctN2wzMy4zLTMzLjNjMTYuOSA1LjQgMzUgOC4zIDUzLjcgOC4zek0zNzYgOTZhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLZXlib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptMTYgNjRoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZ6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTYgODBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwLTE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDR6bTE2IDgwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnpNMTYwIDMzNmMwLTguOCA3LjItMTYgMTYtMTZINDAwYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMzM2ek0yNzIgMTI4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnpNMjU2IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTM2OCAxMjhoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2ek0zNTIgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNNDY0IDEyOGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZ6TTQ0OCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINDY0Yy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xNiA4MGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtoYW5kYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDUuOCAzLjdjNS45LTQuOSAxNC42LTQuOSAyMC41IDBsNDggNDBjNS45IDQuOSA3LjUgMTMuMiAzLjggMTkuOWwwIDAgMCAwIDAgMCAwIDAtLjEgLjEtLjMgLjZjLS4zIC41LS43IDEuMy0xLjIgMi4zYy0xIDItMi42IDUtNC40IDguNmMtLjUgLjktLjkgMS45LTEuNCAyLjlDMzQ0LjkgOTcuNCAzNjggMTM0IDM2OCAxNzZzLTIzLjEgNzguNi01Ny4zIDk3LjhjLjUgMSAxIDIgMS40IDIuOWMxLjggMy43IDMuMyA2LjYgNC40IDguNmMuNSAxIC45IDEuOCAxLjIgMi4zbC4zIC42IC4xIC4xIDAgMCAwIDBjMy42IDYuNyAyIDE1LTMuOCAxOS45TDI3MiAzNDMuNXYxOS44bDM1LjYtMjQuNSA0MS4xLTI4LjJjNDIuOC0yOS40IDY4LjQtNzggNjguNC0xMzBjMC0zMS4xLTkuMi02MS42LTI2LjUtODcuNWwtMi44LTQuMmMtNC02LTMuNS0xNCAxLjMtMTkuNXMxMi43LTcgMTkuMi0zLjdMNDAxLjEgODBjNy4yLTE0LjMgNy4yLTE0LjMgNy4yLTE0LjNsMCAwIDAgMCAuMSAwIC4zIC4yIDEgLjVjLjggLjQgMiAxLjEgMy41IDEuOWMyLjkgMS43IDcgNC4xIDExLjggNy4zYzkuNiA2LjQgMjIuNSAxNi4xIDM1LjQgMjljMjUuNyAyNS43IDUyLjcgNjUuNiA1Mi43IDExOS4zYzAgNTMuMS0yNi40IDEwMC41LTUxLjIgMTMzLjZjLTEyLjYgMTYuNy0yNS4xIDMwLjMtMzQuNSAzOS43Yy00LjcgNC43LTguNyA4LjQtMTEuNSAxMC45Yy0xLjQgMS4zLTIuNSAyLjItMy4zIDIuOWwtLjkgLjgtLjMgLjItLjEgLjEgMCAwIDAgMHMwIDAtMTAuMi0xMi4zbDEwLjIgMTIuM2MtNS4xIDQuMy0xMi40IDQuOS0xOC4yIDEuNmwtNzUuNi00My0zMi43IDIyLjUgNDUuNSAzMS4zYzEuOC0uNCAzLjctLjcgNS43LS43YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0xMi4yIDAtMjIuMy05LjEtMjMuOC0yMUwyNzIgNDIzLjR2MjguOWM5LjYgNS41IDE2IDE1LjkgMTYgMjcuN2MwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTExLjggNi40LTIyLjIgMTYtMjcuN1Y0MjQuMWwtNDAuMyAyNy43QzE5Ny44IDQ2My4zIDE4Ny45IDQ3MiAxNzYgNDcyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzIuMiAwIDQuNCAuMyA2LjUgLjlsNDUuOC0zMS41LTMyLjctMjIuNS03NS42IDQzYy01LjggMy4zLTEzIDIuNy0xOC4yLTEuNkwxMTIgNDAwYy0xMC4yIDEyLjMtMTAuMiAxMi4zLTEwLjMgMTIuM2wwIDAgMCAwLS4xLS4xLS4zLS4yLS45LS44Yy0uOC0uNy0xLjktMS43LTMuMy0yLjljLTIuOC0yLjUtNi43LTYuMi0xMS41LTEwLjljLTkuNC05LjQtMjEuOS0yMy0zNC41LTM5LjdDMjYuNCAzMjQuNSAwIDI3Ny4xIDAgMjI0YzAtNTMuNyAyNi45LTkzLjYgNTIuNy0xMTkuM2MxMi45LTEyLjkgMjUuOC0yMi42IDM1LjQtMjlDOTMgNzIuNSA5NyA3MCA5OS45IDY4LjRjMS41LS44IDIuNi0xLjUgMy41LTEuOWwxLS41IC4zLS4yIC4xIDAgMCAwIDAgMHMwIDAgNy4yIDE0LjNsLTcuMi0xNC4zYzYuNS0zLjIgMTQuMy0xLjcgMTkuMiAzLjdzNS4zIDEzLjQgMS4zIDE5LjVsLTIuOCA0LjJDMTA1LjIgMTE5IDk2IDE0OS41IDk2IDE4MC42YzAgNTEuOSAyNS42IDEwMC42IDY4LjQgMTMwbDQxLjEgMjguMkwyNDAgMzYyLjZWMzQzLjVsLTQyLjItMzUuMmMtNS45LTQuOS03LjUtMTMuMi0zLjgtMTkuOWwwIDAgMCAwIDAgMCAuMS0uMSAuMy0uNmMuMy0uNSAuNy0xLjMgMS4yLTIuM2MxLTIgMi42LTUgNC40LTguNmMuNS0uOSAuOS0xLjkgMS40LTIuOUMxNjcuMSAyNTQuNiAxNDQgMjE4IDE0NCAxNzZzMjMuMS03OC42IDU3LjMtOTcuOGMtLjUtMS0xLTItMS40LTIuOWMtMS44LTMuNy0zLjMtNi42LTQuNC04LjZjLS41LTEtLjktMS44LTEuMi0yLjNsLS4zLS42LS4xLS4xIDAgMCAwIDAgMCAwYy0zLjYtNi43LTItMTUgMy44LTE5LjlsNDgtNDB6TTIyMC4yIDEyMi45Yy0xNyAxMS41LTI4LjIgMzEtMjguMiA1My4xczExLjIgNDEuNiAyOC4yIDUzLjFDMjI3IDIxMC4yIDIzMiAxOTAuOSAyMzIgMTc2cy01LTM0LjItMTEuOC01My4xem03MS41IDEwNi4yYzE3LTExLjUgMjguMi0zMSAyOC4yLTUzLjFzLTExLjItNDEuNi0yOC4yLTUzLjFDMjg1IDE0MS44IDI4MCAxNjEuMSAyODAgMTc2czUgMzQuMiAxMS44IDUzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpcFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQwLjggODguM2MxMy40LTExLjUgMTUtMzEuNyAzLjUtNDUuMXMtMzEuNy0xNS00NS4xLTMuNUwxMjggMTg2LjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJTNjQgNDYuMyA2NCA2NFYyMjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzI1LjZMMjk5LjIgNDcyLjNjMTMuNCAxMS41IDMzLjYgOS45IDQ1LjEtMy41czkuOS0zMy42LTMuNS00NS4xTDE4Mi41IDI4OEgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTgyLjVMMzQwLjggODguM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2l0TWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg5NlYzMkg2NHptNjQgMFY0ODBINDQ4VjMySDEyOHpNNTEyIDQ4MGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg0ODBWNDgwaDMyek0yNTYgMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzMjB2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI4OEgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2l0Y2hlblNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAgMTQ0QTk2IDk2IDAgMSAwIDQ4IDE0NGE5NiA5NiAwIDEgMCAxOTIgMHptNDQuNCAzMkMyNjkuOSAyNDAuMSAyMTIuNSAyODggMTQ0IDI4OEM2NC41IDI4OCAwIDIyMy41IDAgMTQ0UzY0LjUgMCAxNDQgMGM2OC41IDAgMTI1LjkgNDcuOSAxNDAuNCAxMTJoNzEuOGM4LjgtOS44IDIxLjYtMTYgMzUuOC0xNkg0OTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhIMzkyYy0xNC4yIDAtMjctNi4yLTM1LjgtMTZIMjg0LjR6TTE0NCA4MGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNNDAwIDI0MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY4aDk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg5NnYtOGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMjg4IDQ2NFYzNTJINTEyVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEgzMzZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4ek00OCAzMjBoODAgMTYgMzJjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhIMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em0xMjggNjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTYwdjMyaDE2ek0yNCA0NjRIMjAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXdpQmlyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTEuMiAzODguNGMzMS4yLTE4LjggNjQuNy0zNi40IDEwMS4xLTM2LjRINDQ4YzQuNiAwIDkuMS0uMiAxMy42LS43bDg1LjMgMTIxLjljNCA1LjcgMTEuMyA4LjIgMTcuOSA2LjFzMTEuMi04LjMgMTEuMi0xNS4zVjIyNGMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEgzOTIuM2MtMzYuNCAwLTY5LjktMTcuNi0xMDEuMS0zNi40QzI2Mi4zIDQyLjEgMjI4LjMgMzIgMTkyIDMyQzg2IDMyIDAgMTE4IDAgMjI0YzAgNzEuMSAzOC42IDEzMy4xIDk2IDE2Ni4zVjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQxMGMxNS4zIDMuOSAzMS40IDYgNDggNmM1LjQgMCAxMC43LS4yIDE2LS43VjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQwNS4xYzEyLjQtNC40IDI0LjItMTAgMzUuMi0xNi43ek00NDggMjAwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0MTZIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZE1pbmVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQgMjRWMTY4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6TTE5MiAzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjMySDE5MlYzMjB6bS03Ny4zIDkwLjVjOC4xLTE2LjMgMjQuOC0yNi41IDQyLjktMjYuNUg0ODIuM2MxOC4yIDAgMzQuOCAxMC4zIDQyLjkgMjYuNWwyNy42IDU1LjJDNTYzLjUgNDg3IDU0OCA1MTIgNTI0LjIgNTEySDExNS44Yy0yMy44IDAtMzkuMy0yNS0yOC42LTQ2LjNsMjcuNi01NS4yek0zNi4zIDEzOC4zYzcuNS0xMC45IDIyLjUtMTMuNiAzMy40LTYuMWwxMDQgNzJjMTAuOSA3LjUgMTMuNiAyMi41IDYuMSAzMy40cy0yMi41IDEzLjYtMzMuNCA2LjFsLTEwNC03MmMtMTAuOS03LjUtMTMuNi0yMi41LTYuMS0zMy40em01MzQuMS02LjFjMTAuOS03LjUgMjUuOC00LjggMzMuNCA2LjFzNC44IDI1LjgtNi4xIDMzLjRsLTEwNCA3MmMtMTAuOSA3LjUtMjUuOCA0LjgtMzMuNC02LjFzLTQuOC0yNS44IDYuMS0zMy40bDEwNC03MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZG1hcmtEb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCAwaDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0VjM0LjdDMzY4LjQgNDguMSA0MzEuOSAxMTEuNiA0NDUuMyAxOTJINDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDIuN0M4MC4xIDExMS42IDE0My42IDQ4LjEgMjI0IDM0LjdWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTY0IDI4OGg2NFY0MTZoNDBWMjg4aDY0VjQxNmg0OFYyODhoNjRWNDE2aDQwVjI4OGg2NFY0MjAuM2MuNiAuMyAxLjIgLjcgMS43IDEuMWw0OCAzMmMxMS43IDcuOCAxNyAyMi40IDEyLjkgMzUuOVM0OTQuMSA1MTIgNDgwIDUxMkgzMmMtMTQuMSAwLTI2LjUtOS4yLTMwLjYtMjIuN3MxLjEtMjguMSAxMi45LTM1LjlsNDgtMzJjLjYtLjQgMS4yLS43IDEuOC0xLjFWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYW5kbWFya0ZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDBoODBjOC44IDAgMTYgNy4yIDE2IDE2VjgwYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJ2MzJINDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI0MFYxNmMwLTguOCA3LjItMTYgMTYtMTZoMTZ6TTY0IDIyNGg2NFY0MTZoNDBWMjI0aDY0VjQxNmg0OFYyMjRoNjRWNDE2aDQwVjIyNGg2NFY0MjAuM2MuNiAuMyAxLjIgLjcgMS44IDEuMWw0OCAzMmMxMS43IDcuOCAxNyAyMi40IDEyLjkgMzUuOVM0OTQuMSA1MTIgNDgwIDUxMkgzMmMtMTQuMSAwLTI2LjUtOS4yLTMwLjYtMjIuN3MxLjEtMjguMSAxMi45LTM1LjlsNDgtMzJjLjYtLjQgMS4yLS43IDEuOC0xLjFWMjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYW5kbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAuMSA0LjJjOS44LTUuNiAyMS45LTUuNiAzMS44IDBsMTcxLjggOTguMUw0NDggMTA0bDAgLjkgNDcuOSAyNy40YzEyLjYgNy4yIDE4LjggMjIgMTUuMSAzNnMtMTYuNCAyMy44LTMwLjkgMjMuOEgzMmMtMTQuNSAwLTI3LjItOS44LTMwLjktMjMuOHMyLjUtMjguOCAxNS4xLTM2TDY0IDEwNC45VjEwNGw0LjQtMS42TDI0MC4xIDQuMnpNNjQgMjI0aDY0VjQxNmg0MFYyMjRoNjRWNDE2aDQ4VjIyNGg2NFY0MTZoNDBWMjI0aDY0VjQyMC4zYy42IC4zIDEuMiAuNyAxLjggMS4xbDQ4IDMyYzExLjcgNy44IDE3IDIyLjQgMTIuOSAzNS45UzQ5NC4xIDUxMiA0ODAgNTEySDMyYy0xNC4xIDAtMjYuNS05LjItMzAuNi0yMi43czEuMS0yOC4xIDEyLjktMzUuOWw0OC0zMmMuNi0uNCAxLjItLjcgMS44LTEuMVYyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhbmd1YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0SDI1Nmg0OCAxNkg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDMyMCAzMDQgMjU2IDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6bTMyMCAwVjM4NEg1NzZWMTI4SDMyMHpNMTc4LjMgMTc1LjljLTMuMi03LjItMTAuNC0xMS45LTE4LjMtMTEuOXMtMTUuMSA0LjctMTguMyAxMS45bC02NCAxNDRjLTQuNSAxMC4xIC4xIDIxLjkgMTAuMiAyNi40czIxLjktLjEgMjYuNC0xMC4ybDguOS0yMC4xaDczLjZsOC45IDIwLjFjNC41IDEwLjEgMTYuMyAxNC42IDI2LjQgMTAuMnMxNC42LTE2LjMgMTAuMi0yNi40bC02NC0xNDR6TTE2MCAyMzMuMkwxNzkgMjc2SDE0MWwxOS00Mi44ek00NDggMTY0YzExIDAgMjAgOSAyMCAyMHY0aDQ0IDE2YzExIDAgMjAgOSAyMCAyMHMtOSAyMC0yMCAyMGgtMmwtMS42IDQuNWMtOC45IDI0LjQtMjIuNCA0Ni42LTM5LjYgNjUuNGMuOSAuNiAxLjggMS4xIDIuNyAxLjZsMTguOSAxMS4zYzkuNSA1LjcgMTIuNSAxOCA2LjkgMjcuNHMtMTggMTIuNS0yNy40IDYuOWwtMTguOS0xMS4zYy00LjUtMi43LTguOC01LjUtMTMuMS04LjVjLTEwLjYgNy41LTIxLjkgMTQtMzQgMTkuNGwtMy42IDEuNmMtMTAuMSA0LjUtMjEuOS0uMS0yNi40LTEwLjJzLjEtMjEuOSAxMC4yLTI2LjRsMy42LTEuNmM2LjQtMi45IDEyLjYtNi4xIDE4LjUtOS44bC0xMi4yLTEyLjJjLTcuOC03LjgtNy44LTIwLjUgMC0yOC4zczIwLjUtNy44IDI4LjMgMGwxNC42IDE0LjYgLjUgLjVjMTIuNC0xMy4xIDIyLjUtMjguMyAyOS44LTQ1SDQ0OCAzNzZjLTExIDAtMjAtOS0yMC0yMHM5LTIwIDIwLTIwaDUydi00YzAtMTEgOS0yMCAyMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFwdG9wQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA5NmMwLTM1LjMgMjguNy02NCA2NC02NEg1MTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUySDUxMlY5NkgxMjhWMzUySDY0Vjk2ek0wIDQwMy4yQzAgMzkyLjYgOC42IDM4NCAxOS4yIDM4NEg2MjAuOGMxMC42IDAgMTkuMiA4LjYgMTkuMiAxOS4yYzAgNDIuNC0zNC40IDc2LjgtNzYuOCA3Ni44SDc2LjhDMzQuNCA0ODAgMCA0NDUuNiAwIDQwMy4yek0yODEgMjA5bC0zMSAzMSAzMSAzMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00OC00OGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNDgtNDhjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45ek0zOTMgMTc1bDQ4IDQ4YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC00OCA0OGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzMS0zMS0zMS0zMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3BGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwQzkyLjcgMCA2NCAyOC43IDY0IDY0VjI4OEgxOS4yQzguNiAyODggMCAyOTYuNiAwIDMwNy4yQzAgMzQ5LjYgMzQuNCAzODQgNzYuOCAzODRIMzIwVjI4OEgxMjhWNjRINDQ4Vjk2aDY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDEyOHpNNTEyIDEyOEg0MDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg1OTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjU2SDU0NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4em0zMiAwdjk2aDk2bC05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFwdG9wTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA5NmMwLTM1LjMgMjguNy02NCA2NC02NEg1MTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUySDUxMlY5NkgxMjhWMzUySDY0Vjk2ek0wIDQwMy4yQzAgMzkyLjYgOC42IDM4NCAxOS4yIDM4NEg2MjAuOGMxMC42IDAgMTkuMiA4LjYgMTkuMiAxOS4yYzAgNDIuNC0zNC40IDc2LjgtNzYuOCA3Ni44SDc2LjhDMzQuNCA0ODAgMCA0NDUuNiAwIDQwMy4yek0yODggMTYwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNTJ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDMwNGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNlYyMjRjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFwdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAzMkM5Mi43IDMyIDY0IDYwLjcgNjQgOTZWMzUyaDY0Vjk2SDUxMlYzNTJoNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTI4ek0xOS4yIDM4NEM4LjYgMzg0IDAgMzkyLjYgMCA0MDMuMkMwIDQ0NS42IDM0LjQgNDgwIDc2LjggNDgwSDU2My4yYzQyLjQgMCA3Ni44LTM0LjQgNzYuOC03Ni44YzAtMTAuNi04LjYtMTkuMi0xOS4yLTE5LjJIMTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFyaVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2LjdjNS4zLS40IDEwLjYtLjcgMTYtLjdzMTAuNyAuMiAxNiAuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjQ5LjRjNTQuOSAyNS4yIDk1LjggNzUuNSAxMDguMiAxMzYuMmMzLjUgMTcuMy03LjcgMzQuMi0yNSAzNy43cy0zNC4yLTcuNy0zNy43LTI1Yy02LjEtMjkuOS0yMi41LTU1LjktNDUuNC03NC4zVjI1NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjFjLTUuMi0uNy0xMC42LTEtMTYtMXMtMTAuOCAuMy0xNiAxdjk1YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE4OC4xQzgyLjcgMjExLjUgNjQgMjQ3LjYgNjQgMjg4YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxOTIgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDguOUMxOC41IDM4MiAwIDMzNy4yIDAgMjg4YzAtNzcuNSA0NS45LTE0NC4zIDExMi0xNzQuNlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGF5ZXJHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjQuNSA1LjJjMTQuOS02LjkgMzIuMS02LjkgNDcgMGwyMTguNiAxMDFjOC41IDMuOSAxMy45IDEyLjQgMTMuOSAyMS44cy01LjQgMTcuOS0xMy45IDIxLjhsLTIxOC42IDEwMWMtMTQuOSA2LjktMzIuMSA2LjktNDcgMEw0NS45IDE0OS44QzM3LjQgMTQ1LjggMzIgMTM3LjMgMzIgMTI4czUuNC0xNy45IDEzLjktMjEuOEwyNjQuNSA1LjJ6TTQ3Ni45IDIwOS42bDUzLjIgMjQuNmM4LjUgMy45IDEzLjkgMTIuNCAxMy45IDIxLjhzLTUuNCAxNy45LTEzLjkgMjEuOGwtMjE4LjYgMTAxYy0xNC45IDYuOS0zMi4xIDYuOS00NyAwTDQ1LjkgMjc3LjhDMzcuNCAyNzMuOCAzMiAyNjUuMyAzMiAyNTZzNS40LTE3LjkgMTMuOS0yMS44bDUzLjItMjQuNiAxNTIgNzAuMmMyMy40IDEwLjggNTAuNCAxMC44IDczLjggMGwxNTItNzAuMnptLTE1MiAxOTguMmwxNTItNzAuMiA1My4yIDI0LjZjOC41IDMuOSAxMy45IDEyLjQgMTMuOSAyMS44cy01LjQgMTcuOS0xMy45IDIxLjhsLTIxOC42IDEwMWMtMTQuOSA2LjktMzIuMSA2LjktNDcgMEw0NS45IDQwNS44QzM3LjQgNDAxLjggMzIgMzkzLjMgMzIgMzg0czUuNC0xNy45IDEzLjktMjEuOGw1My4yLTI0LjYgMTUyIDcwLjJjMjMuNCAxMC44IDUwLjQgMTAuOCA3My44IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlYWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDk2Yy03OC42IDAtMTQ1LjEgNTEuNS0xNjcuNyAxMjIuNWMzMy42LTE3IDcxLjUtMjYuNSAxMTEuNy0yNi41aDg4YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDI4OCAyMTZzMCAwIDAgMGMtMTYuNiAwLTMyLjcgMS45LTQ4LjMgNS40Yy0yNS45IDUuOS00OS45IDE2LjQtNzEuNCAzMC43YzAgMCAwIDAgMCAwQzM4LjMgMjk4LjggMCAzNjQuOSAwIDQ0MHYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQ0MGMwLTQ4LjcgMjAuNy05Mi41IDUzLjgtMTIzLjJDMTIxLjYgMzkyLjMgMTkwLjMgNDQ4IDI3MiA0NDhsMSAwYzEzMi4xLS43IDIzOS0xMzAuOSAyMzktMjkxLjRjMC00Mi42LTcuNS04My4xLTIxLjEtMTE5LjZjLTIuNi02LjktMTIuNy02LjYtMTYuMi0uMUM0NTUuOSA3Mi4xIDQxOC43IDk2IDM3NiA5NkwyNzIgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlZnRMb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ny41IDQxNGMtOC44IDMuOC0xOSAyLTI2LTQuNmwtMTQ0LTEzNkMyLjcgMjY4LjkgMCAyNjIuNiAwIDI1NnMyLjctMTIuOSA3LjUtMTcuNGwxNDQtMTM2YzctNi42IDE3LjItOC40IDI2LTQuNnMxNC41IDEyLjUgMTQuNSAyMmwwIDcyIDI4OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTI4OCAwIDAgNzJjMCA5LjYtNS43IDE4LjItMTQuNSAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVmdFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC4zIDI3My42YzQuOS00LjUgNy43LTEwLjkgNy43LTE3LjZzLTIuOC0xMy03LjctMTcuNmwtMTEyLTEwNGMtNy02LjUtMTcuMi04LjItMjUuOS00LjRzLTE0LjQgMTIuNS0xNC40IDIybDAgNTYtMTkyIDAgMC01NmMwLTkuNS01LjctMTguMi0xNC40LTIycy0xOC45LTIuMS0yNS45IDQuNGwtMTEyIDEwNEMyLjggMjQzIDAgMjQ5LjMgMCAyNTZzMi44IDEzIDcuNyAxNy42bDExMiAxMDRjNyA2LjUgMTcuMiA4LjIgMjUuOSA0LjRzMTQuNC0xMi41IDE0LjQtMjJsMC01NiAxOTIgMCAwIDU2YzAgOS41IDUuNyAxOC4yIDE0LjQgMjJzMTguOSAyLjEgMjUuOS00LjRsMTEyLTEwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVtb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0Yy02LjYgMC0xMyAxLTE5IDIuOWMtMjIuNSA3LTQ4LjEgMTQuOS03MSA5Yy03NS4yLTE5LjEtMTU2LjQgMTEtMjEzLjcgNjguM1MtNy4yIDI1MC44IDExLjkgMzI2YzUuOCAyMi45LTIgNDguNC05IDcxQzEgNDAzIDAgNDA5LjQgMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRjNi42IDAgMTMtMSAxOS4xLTIuOWMyMi41LTcgNDguMS0xNC45IDcxLTljNzUuMiAxOS4xIDE1Ni40LTExIDIxMy43LTY4LjNzODcuNS0xMzguNSA2OC4zLTIxMy43Yy01LjgtMjIuOSAyLTQ4LjQgOS03MWMxLjktNiAyLjktMTIuNCAyLjktMTkuMXpNMjEyLjUgMTI3LjRjLTU0LjYgMTYtMTAxLjEgNjIuNS0xMTcuMSAxMTcuMUM5Mi45IDI1MyA4NCAyNTcuOCA3NS41IDI1NS40UzYyLjIgMjQ0IDY0LjYgMjM1LjVjMTkuMS02NS4xIDczLjctMTE5LjggMTM4LjktMTM4LjljOC41LTIuNSAxNy40IDIuNCAxOS45IDEwLjlzLTIuNCAxNy40LTEwLjkgMTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVzc1RoYW5FcXVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTUuOSA5My43YzE2LjQtNi42IDI0LjQtMjUuMiAxNy44LTQxLjZzLTI1LjItMjQuNC00MS42LTE3LjhsLTMyMCAxMjhDNDAgMTY3LjEgMzIgMTc4LjkgMzIgMTkyczggMjQuOSAyMC4xIDI5LjdsMzIwIDEyOGMxNi40IDYuNiAzNS0xLjQgNDEuNi0xNy44cy0xLjQtMzUtMTcuOC00MS42TDE1MC4yIDE5MiAzOTUuOSA5My43ek0zMiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzVGhhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODAuNiA4MS43YzcuOSAxNS44IDEuNSAzNS0xNC4zIDQyLjlMMTAzLjYgMjU2IDM2Ni4zIDM4Ny40YzE1LjggNy45IDIyLjIgMjcuMSAxNC4zIDQyLjlzLTI3LjEgMjIuMi00Mi45IDE0LjNsLTMyMC0xNjBDNi44IDI3OS4yIDAgMjY4LjEgMCAyNTZzNi44LTIzLjIgMTcuNy0yOC42bDMyMC0xNjBjMTUuOC03LjkgMzUtMS41IDQyLjkgMTQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlmZVJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY3LjIgNDEyLjVDMzM1LjkgNDM0LjkgMjk3LjUgNDQ4IDI1NiA0NDhzLTc5LjktMTMuMS0xMTEuMi0zNS41bDU4LTU4YzE1LjggOC42IDM0IDEzLjUgNTMuMyAxMy41czM3LjQtNC45IDUzLjMtMTMuNWw1OCA1OHptOTAuNyAuOGMzMy44LTQzLjQgNTQtOTggNTQtMTU3LjNzLTIwLjItMTEzLjktNTQtMTU3LjNjOS0xMi41IDcuOS0zMC4xLTMuNC00MS4zUzQyNS44IDQ1IDQxMy4zIDU0QzM2OS45IDIwLjIgMzE1LjMgMCAyNTYgMFMxNDIuMSAyMC4yIDk4LjcgNTRjLTEyLjUtOS0zMC4xLTcuOS00MS4zIDMuNFM0NSA4Ni4yIDU0IDk4LjdDMjAuMiAxNDIuMSAwIDE5Ni43IDAgMjU2czIwLjIgMTEzLjkgNTQgMTU3LjNjLTkgMTIuNS03LjkgMzAuMSAzLjQgNDEuM1M4Ni4yIDQ2NyA5OC43IDQ1OGM0My40IDMzLjggOTggNTQgMTU3LjMgNTRzMTEzLjktMjAuMiAxNTcuMy01NGMxMi41IDkgMzAuMSA3LjkgNDEuMy0zLjRzMTIuNC0yOC44IDMuNC00MS4zem0tNDUuNS00Ni4xbC01OC01OGM4LjYtMTUuOCAxMy41LTM0IDEzLjUtNTMuM3MtNC45LTM3LjQtMTMuNS01My4zbDU4LTU4QzQzNC45IDE3Ni4xIDQ0OCAyMTQuNSA0NDggMjU2cy0xMy4xIDc5LjktMzUuNSAxMTEuMnpNMzY3LjIgOTkuNWwtNTggNThjLTE1LjgtOC42LTM0LTEzLjUtNTMuMy0xMy41cy0zNy40IDQuOS01My4zIDEzLjVsLTU4LTU4QzE3Ni4xIDc3LjEgMjE0LjUgNjQgMjU2IDY0czc5LjkgMTMuMSAxMTEuMiAzNS41ek0xNTcuNSAzMDkuM2wtNTggNThDNzcuMSAzMzUuOSA2NCAyOTcuNSA2NCAyNTZzMTMuMS03OS45IDM1LjUtMTExLjJsNTggNThjLTguNiAxNS44LTEzLjUgMzQtMTMuNSA1My4zczQuOSAzNy40IDEzLjUgNTMuM3pNMjA4IDI1NmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaWdodGJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDM4NGM5LjYtMzEuOSAyOS41LTU5LjEgNDkuMi04Ni4ybDAgMGM1LjItNy4xIDEwLjQtMTQuMiAxNS40LTIxLjRjMTkuOC0yOC41IDMxLjQtNjMgMzEuNC0xMDAuM0MzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgMzcuMyAxMS42IDcxLjkgMzEuNCAxMDAuM2M1IDcuMiAxMC4yIDE0LjMgMTUuNCAyMS40bDAgMGMxOS44IDI3LjEgMzkuNyA1NC40IDQ5LjIgODYuMkgyNzJ6TTE5MiA1MTJjNDQuMiAwIDgwLTM1LjggODAtODBWNDE2SDExMnYxNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHpNMTEyIDE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmMwLTYxLjkgNTAuMS0xMTIgMTEyLTExMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwIDM1LjgtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmVzTGVhbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTAuNCA3NC4xYzUuNi0xNi44LTMuNS0zNC45LTIwLjItNDAuNXMtMzQuOSAzLjUtNDAuNSAyMC4ybC0xMjggMzg0Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDEyOC0zODR6bTcwLjktNDEuN2MtMTcuNC0yLjktMzMuOSA4LjktMzYuOCAyNi4zbC02NCAzODRjLTIuOSAxNy40IDguOSAzMy45IDI2LjMgMzYuOHMzMy45LTguOSAzNi44LTI2LjNsNjQtMzg0YzIuOS0xNy40LTguOS0zMy45LTI2LjMtMzYuOHpNMzUyIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlua1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDg5LjMgMzU4LjJsOTAuNS05MC41YzU2LjUtNTYuNSA1Ni41LTE0OCAwLTIwNC41Yy01MC01MC0xMjguOC01Ni41LTE4Ni4zLTE1LjRsLTEuNiAxLjFjLTE0LjQgMTAuMy0xNy43IDMwLjMtNy40IDQ0LjZzMzAuMyAxNy43IDQ0LjYgNy40bDEuNi0xLjFjMzIuMS0yMi45IDc2LTE5LjMgMTAzLjggOC42YzMxLjUgMzEuNSAzMS41IDgyLjUgMCAxMTRsLTk2IDk2LTMxLjktMjVDNDMwLjkgMjM5LjYgNDIwLjEgMTc1LjEgMzc3IDEzMmMtNTIuMi01Mi4zLTEzNC41LTU2LjItMTkxLjMtMTEuN0wzOC44IDUuMXpNMjM5IDE2MmMzMC4xLTE0LjkgNjcuNy05LjkgOTIuOCAxNS4zYzIwIDIwIDI3LjUgNDguMyAyMS43IDc0LjVMMjM5IDE2MnpNMTE2LjYgMTg3LjlMNjAuMiAyNDQuM2MtNTYuNSA1Ni41LTU2LjUgMTQ4IDAgMjA0LjVjNTAgNTAgMTI4LjggNTYuNSAxODYuMyAxNS40bDEuNi0xLjFjMTQuNC0xMC4zIDE3LjctMzAuMyA3LjQtNDQuNnMtMzAuMy0xNy43LTQ0LjYtNy40bC0xLjYgMS4xYy0zMi4xIDIyLjktNzYgMTkuMy0xMDMuOC04LjZDNzQgMzcyIDc0IDMyMSAxMDUuNSAyODkuNWw2MS44LTYxLjgtNTAuNi0zOS45ek0yMjAuOSAyNzBjLTIuMSAzOS44IDEyLjIgODAuMSA0Mi4yIDExMGMzOC45IDM4LjkgOTQuNCA1MSAxNDMuNiAzNi4zTDIyMC45IDI3MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzkuOCAyNjcuN2M1Ni41LTU2LjUgNTYuNS0xNDggMC0yMDQuNWMtNTAtNTAtMTI4LjgtNTYuNS0xODYuMy0xNS40bC0xLjYgMS4xYy0xNC40IDEwLjMtMTcuNyAzMC4zLTcuNCA0NC42czMwLjMgMTcuNyA0NC42IDcuNGwxLjYtMS4xYzMyLjEtMjIuOSA3Ni0xOS4zIDEwMy44IDguNmMzMS41IDMxLjUgMzEuNSA4Mi41IDAgMTE0TDQyMi4zIDMzNC44Yy0zMS41IDMxLjUtODIuNSAzMS41LTExNCAwYy0yNy45LTI3LjktMzEuNS03MS44LTguNi0xMDMuOGwxLjEtMS42YzEwLjMtMTQuNCA2LjktMzQuNC03LjQtNDQuNnMtMzQuNC02LjktNDQuNiA3LjRsLTEuMSAxLjZDMjA2LjUgMjUxLjIgMjEzIDMzMCAyNjMgMzgwYzU2LjUgNTYuNSAxNDggNTYuNSAyMDQuNSAwTDU3OS44IDI2Ny43ek02MC4yIDI0NC4zYy01Ni41IDU2LjUtNTYuNSAxNDggMCAyMDQuNWM1MCA1MCAxMjguOCA1Ni41IDE4Ni4zIDE1LjRsMS42LTEuMWMxNC40LTEwLjMgMTcuNy0zMC4zIDcuNC00NC42cy0zMC4zLTE3LjctNDQuNi03LjRsLTEuNiAxLjFjLTMyLjEgMjIuOS03NiAxOS4zLTEwMy44LTguNkM3NCAzNzIgNzQgMzIxIDEwNS41IDI4OS41TDIxNy43IDE3Ny4yYzMxLjUtMzEuNSA4Mi41LTMxLjUgMTE0IDBjMjcuOSAyNy45IDMxLjUgNzEuOCA4LjYgMTAzLjlsLTEuMSAxLjZjLTEwLjMgMTQuNC02LjkgMzQuNCA3LjQgNDQuNnMzNC40IDYuOSA0NC42LTcuNGwxLjEtMS42QzQzMy41IDI2MC44IDQyNyAxODIgMzc3IDEzMmMtNTYuNS01Ni41LTE0OC01Ni41LTIwNC41IDBMNjAuMiAyNDQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlyYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDE2MC40YzAtMzUuNSAyOC44LTY0LjQgNjQuNC02NC40YzYuOSAwIDEzLjggMS4xIDIwLjQgMy4zbDgxLjIgMjcuMWMxNi44IDUuNiAzNC45LTMuNSA0MC41LTIwLjJzLTMuNS0zNC45LTIwLjItNDAuNUwyMTcgMzguNmMtMTMuMS00LjQtMjYuOC02LjYtNDAuNi02LjZDMTA1LjUgMzIgNDggODkuNSA0OCAxNjAuNFYxOTJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDh2MzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDZjLTIuMiAxMC41LTYuMSAyMC42LTExLjcgMjkuOUw0LjYgNDMxLjVjLTUuOSA5LjktNi4xIDIyLjItLjQgMzIuMlMyMC41IDQ4MCAzMiA0ODBIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDg4LjVsLjctMS4xYzExLjYtMTkuMyAxOC45LTQwLjcgMjEuNi02Mi45SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWMjU2SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWMTYwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpc3RDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuMSAzOC4yYzkuOSA4LjkgMTAuNyAyNCAxLjggMzMuOWwtNzIgODBjLTQuNCA0LjktMTAuNiA3LjgtMTcuMiA3LjlzLTEyLjktMi40LTE3LjYtN0w3IDExM0MtMi4zIDEwMy42LTIuMyA4OC40IDcgNzlzMjQuNi05LjQgMzMuOSAwbDIyLjEgMjIuMSA1NS4xLTYxLjJjOC45LTkuOSAyNC0xMC43IDMzLjktMS44em0wIDE2MGM5LjkgOC45IDEwLjcgMjQgMS44IDMzLjlsLTcyIDgwYy00LjQgNC45LTEwLjYgNy44LTE3LjIgNy45cy0xMi45LTIuNC0xNy42LTdMNyAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMi4xIDIyLjEgNTUuMS02MS4yYzguOS05LjkgMjQtMTAuNyAzMy45LTEuOHpNMjI0IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem0wIDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMTYwIDQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDggMzY4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdE9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDU2YzAtMTMuMyAxMC43LTI0IDI0LTI0SDgwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjE3NmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg0MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNEg1NlY4MEg0OEMzNC43IDgwIDI0IDY5LjMgMjQgNTZ6TTg2LjcgMzQxLjJjLTYuNS03LjQtMTguMy02LjktMjQgMS4yTDUxLjUgMzU3LjljLTcuNyAxMC44LTIyLjcgMTMuMy0zMy41IDUuNnMtMTMuMy0yMi43LTUuNi0zMy41bDExLjEtMTUuNmMyMy43LTMzLjIgNzIuMy0zNS42IDk5LjItNC45YzIxLjMgMjQuNCAyMC44IDYwLjktMS4xIDg0LjdMODYuOCA0MzJIMTIwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDMyYy05LjUgMC0xOC4yLTUuNi0yMi0xNC40cy0yLjEtMTguOSA0LjMtMjUuOWw3Mi03OGM1LjMtNS44IDUuNC0xNC42IC4zLTIwLjV6TTIyNCA2NEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0wIDE2MEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0wIDE2MEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0VWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTQ0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMTkyIDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJ6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJ6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJ6TTY0IDQ2NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ4LTIwOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwIDQ4QzI2LjcgNDggMTYgNTguNyAxNiA3MnY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY3MmMwLTEzLjMtMTAuNy0yNC0yNC0yNEg0MHpNMTkyIDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJ6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJ6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJ6TTE2IDIzMnY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyMzJjMC0xMy4zLTEwLjctMjQtMjQtMjRINDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0ek00MCAzNjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjM5MmMwLTEzLjMtMTAuNy0yNC0yNC0yNEg0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGl0ZWNvaW5TaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlM2NCA0Ni4zIDY0IDY0VjIxMy42TDIzLjIgMjI1LjJjLTE3IDQuOS0yNi44IDIyLjYtMjIgMzkuNnMyMi42IDI2LjggMzkuNiAyMkw2NCAyODAuMVY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDEyOFYyNjEuOWwxMzYuOC0zOS4xYzE3LTQuOSAyNi44LTIyLjYgMjItMzkuNnMtMjIuNi0yNi44LTM5LjYtMjJMMTI4IDE5NS4zVjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NhdGlvbkFycm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyOS42IDkyLjFjNC45LTExLjkgMi4xLTI1LjYtNy0zNC43cy0yMi44LTExLjktMzQuNy03bC0zNTIgMTQ0Yy0xNC4yIDUuOC0yMi4yIDIwLjgtMTkuMyAzNS44czE2LjEgMjUuOCAzMS40IDI1LjhIMjI0VjQzMmMwIDE1LjMgMTAuOCAyOC40IDI1LjggMzEuNHMzMC01LjEgMzUuOC0xOS4zbDE0NC0zNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvY2F0aW9uQ3Jvc3NoYWlycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2Ni43QzM2OC40IDgwLjEgNDMxLjkgMTQzLjYgNDQ1LjMgMjI0SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0NDUuM0M0MzEuOSAzNjguNCAzNjguNCA0MzEuOSAyODggNDQ1LjNWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0NS4zQzE0My42IDQzMS45IDgwLjEgMzY4LjQgNjYuNyAyODhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINjYuN0M4MC4xIDE0My42IDE0My42IDgwLjEgMjI0IDY2LjdWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTEyOCAyNTZhMTI4IDEyOCAwIDEgMCAyNTYgMCAxMjggMTI4IDAgMSAwIC0yNTYgMHptMTI4LTgwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NhdGlvbkRvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTUuNyA0OTkuMkMyNjcgNDM1IDM4NCAyNzkuNCAzODQgMTkyQzM4NCA4NiAyOTggMCAxOTIgMFMwIDg2IDAgMTkyYzAgODcuNCAxMTcgMjQzIDE2OC4zIDMwNy4yYzEyLjMgMTUuMyAzNS4xIDE1LjMgNDcuNCAwek0xOTIgMTI4YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NhdGlvblBpbkxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1LjcgNDk5LjJjMTEtMTMuOCAyNS4xLTMxLjcgNDAuMy01Mi4zVjM1MmMwLTIzLjcgMTIuOS00NC40IDMyLTU1LjRWMjcyYzAtNTUuNiA0MC41LTEwMS43IDkzLjYtMTEwLjVDMzY3IDcwIDI4Ny43IDAgMTkyIDBDODYgMCAwIDg2IDAgMTkyYzAgODcuNCAxMTcgMjQzIDE2OC4zIDMwNy4yYzEyLjMgMTUuMyAzNS4xIDE1LjMgNDcuNCAwek0xOTIgMTI4YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek00MDAgMjQwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4SDM2OFYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMnY0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJWMjcyYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NhdGlvblBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTkyYzAgODcuNC0xMTcgMjQzLTE2OC4zIDMwNy4yYy0xMi4zIDE1LjMtMzUuMSAxNS4zLTQ3LjQgMEMxMTcgNDM1IDAgMjc5LjQgMCAxOTJDMCA4NiA4NiAwIDE5MiAwUzM4NCA4NiAzODQgMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NrT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMTQ0YzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODB2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNDRDNTc2IDY0LjUgNTExLjUgMCA0MzIgMFMyODggNjQuNSAyODggMTQ0djQ4SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjI1NmMwLTM1LjMtMjguNy02NC02NC02NEgzNTJWMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxNDR2NDhIMzA0VjE0NGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpNODAgMTkyVjE0NEM4MCA2NC41IDE0NC41IDAgMjI0IDBzMTQ0IDY0LjUgMTQ0IDE0NHY0OGgxNmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI1NmMwLTM1LjMgMjguNy02NCA2NC02NEg4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jdXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMiAzMmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGgxNmM5OC43IDAgMTgwLjYgNzEuNCAxOTcgMTY1LjRjLTktMy41LTE4LjgtNS40LTI5LTUuNEg0MzEuOGwtNDEuOC05Ny41Yy0zLjQtNy45LTEwLjgtMTMuNC0xOS4zLTE0LjRzLTE3IDIuNy0yMi4xIDkuNmwtNDAuOSA1NS41LTIxLjctNTAuN2MtMy4zLTcuOC0xMC41LTEzLjItMTguOS0xNC4zcy0xNi43IDIuMy0yMiA4LjlsLTI0MCAzMDRjLTguMiAxMC40LTYuNCAyNS41IDQgMzMuN3MyNS41IDYuNCAzMy43LTRsNzkuNC0xMDAuNSA0MyAxNi40LTQwLjUgNTVjLTcuOSAxMC43LTUuNiAyNS43IDUuMSAzMy42czI1LjcgNS42IDMzLjYtNS4xTDIxNS4xIDQwMGg3NC41bC0yOS4zIDQyLjNjLTcuNSAxMC45LTQuOCAyNS44IDYuMSAzMy40czI1LjggNC44IDMzLjQtNi4xTDM0OCA0MDBoODAuNGwzOC44IDY3LjljNi42IDExLjUgMjEuMiAxNS41IDMyLjcgOC45czE1LjUtMjEuMiA4LjktMzIuN0w0ODMuNiA0MDBINDk2YzQ0LjEgMCA3OS44LTM1LjcgODAtNzkuN2MwLS4xIDAtLjIgMC0uM1YyODBDNTc2IDE0MyA0NjUgMzIgMzI4IDMySDMxMnptNTAuNSAxNjhsMTcuMSA0MEgzMzNsMjkuNS00MHptLTg3LjcgMzguMWwtMS40IDEuOUgyMjUuMWwzMi43LTQxLjUgMTYuOSAzOS41ek04OC44IDI0MEM1Ny40IDI0MCAzMiAyNjUuNCAzMiAyOTYuOGMwIDE1LjUgNi4zIDMwIDE2LjkgNDAuNEwxMjYuNyAyNDBIODguOHpNNDk2IDI4OGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUx1bmdzVmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTU2LjJjLTguNS03LjYtMTkuNy0xMi4yLTMyLTEyLjJzLTIzLjUgNC42LTMyIDEyLjJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ0NC41IDE5NS41Yy0xNi40LTE2LjQtNDEuOC0xOC41LTYwLjUtNi4xVjE2NS4zQzM4NCAxMjcgNDE1IDk2IDQ1My4zIDk2YzIxLjcgMCA0Mi44IDEwLjIgNTUuOCAyOC44YzE1LjQgMjIuMSA0NC4zIDY1LjQgNzEgMTE2LjljMjYuNSA1MC45IDUyLjQgMTEyLjUgNTkuNiAxNzAuM2MuMiAxLjMgLjIgMi42IC4yIDR2N2MwIDQ5LjEtMzkuOCA4OS04OSA4OWMtNy4zIDAtMTQuNS0uOS0yMS42LTIuN2wtNzIuNy0xOC4yYy0yMC45LTUuMi0zOC43LTE3LjEtNTEuNS0zMi45YzE0IDEuNSAyOC41LTMgMzkuMi0xMy44bC0yMi42LTIyLjYgMjIuNiAyMi42YzE4LjctMTguNyAxOC43LTQ5LjEgMC02Ny45Yy0xLjEtMS4xLTEuNC0yLTEuNS0yLjVjLS4xLS44LS4xLTEuOCAuNC0yLjlzMS4yLTEuOSAxLjgtMi4zYy41LS4zIDEuMy0uOCAyLjktLjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhjLTEuNiAwLTIuNC0uNC0yLjktLjhjLS42LS40LTEuMy0xLjItMS44LTIuM3MtLjUtMi4yLS40LTIuOWMuMS0uNiAuNC0xLjQgMS41LTIuNWMxOC43LTE4LjcgMTguNy00OS4xIDAtNjcuOXpNNDIxLjggNDIxLjhjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwQzM3NS45IDM5OC41IDMzNiA0MTUgMzM2IDQ0OGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmMwLTMzLTM5LjktNDkuNS02My4yLTI2LjJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZDMjQxLjUgMzc1LjkgMjI1IDMzNiAxOTIgMzM2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2YzMzIDAgNDkuNS0zOS45IDI2LjItNjMuMmMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwQzI2NC4xIDI0MS41IDMwNCAyMjUgMzA0IDE5MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2YzAgMzMgMzkuOSA0OS41IDYzLjIgMjYuMmM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZDMzk4LjUgMjY0LjEgNDE1IDMwNCA0NDggMzA0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy0zMyAwLTQ5LjUgMzkuOS0yNi4yIDYzLjJjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZ6TTE4My4zIDQ5MS4ybC03Mi43IDE4LjJjLTcuMSAxLjgtMTQuMyAyLjctMjEuNiAyLjdjLTQ5LjEgMC04OS0zOS44LTg5LTg5di03YzAtMS4zIC4xLTIuNyAuMi00YzcuMi01Ny45IDMzLjEtMTE5LjQgNTkuNi0xNzAuM2MyNi44LTUxLjUgNTUuNi05NC44IDcxLTExNi45YzEzLTE4LjYgMzQtMjguOCA1NS44LTI4LjhDMjI1IDk2IDI1NiAxMjcgMjU2IDE2NS4zdjI0LjFjLTE4LjYtMTIuNC00NC0xMC4zLTYwLjUgNi4xYy0xOC43IDE4LjctMTguNyA0OS4xIDAgNjcuOWMxLjEgMS4xIDEuNCAyIDEuNSAyLjVjLjEgLjggLjEgMS44LS40IDIuOXMtMS4yIDEuOS0xLjggMi4zYy0uNSAuMy0xLjMgLjgtMi45IC44Yy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4YzEuNiAwIDIuNCAuNCAyLjkgLjhjLjYgLjQgMS4zIDEuMiAxLjggMi4zcy41IDIuMiAuNCAyLjljLS4xIC42LS40IDEuNC0xLjUgMi41Yy0xOC43IDE4LjctMTguNyA0OS4xIDAgNjcuOWMxMC43IDEwLjcgMjUuMyAxNS4zIDM5LjIgMTMuOGMtMTIuOCAxNS45LTMwLjYgMjcuNy01MS41IDMyLjl6TTI5NiAzMjBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em03MiAzMmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMdW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlYxNjQuMWMwIDE2LjQgOC40IDMxLjcgMjIuMiA0MC41bDkuOCA2LjJWMTY1LjNDMzg0IDEyNyA0MTUgOTYgNDUzLjMgOTZjMjEuNyAwIDQyLjggMTAuMiA1NS44IDI4LjhjMTUuNCAyMi4xIDQ0LjMgNjUuNCA3MSAxMTYuOWMyNi41IDUwLjkgNTIuNCAxMTIuNSA1OS42IDE3MC4zYy4yIDEuMyAuMiAyLjYgLjIgNHY3YzAgNDkuMS0zOS44IDg5LTg5IDg5Yy03LjMgMC0xNC41LS45LTIxLjYtMi43bC03Mi43LTE4LjJDNDE0IDQ4MC41IDM4NCA0NDIuMSAzODQgMzk4VjMyNWw5MC41IDU3LjZjNy41IDQuNyAxNy4zIDIuNSAyMi4xLTQuOXMyLjUtMTcuMy00LjktMjIuMUwzODQgMjg3LjF2LS40bC00NC4xLTI4LjFjLTcuMy00LjYtMTMuOS0xMC4xLTE5LjktMTYuMWMtNS45IDYtMTIuNiAxMS41LTE5LjkgMTYuMUwyNTYgMjg2LjcgMTYxLjIgMzQ3bC0xMy41IDguNmMwIDAgMCAwLS4xIDBjLTcuNCA0LjgtOS42IDE0LjYtNC44IDIyLjFjNC43IDcuNSAxNC42IDkuNyAyMi4xIDQuOWw5MS4xLTU4VjM5OGMwIDQ0LjEtMzAgODIuNS03Mi43IDkzLjFsLTcyLjcgMTguMmMtNy4xIDEuOC0xNC4zIDIuNy0yMS42IDIuN2MtNDkuMSAwLTg5LTM5LjgtODktODl2LTdjMC0xLjMgLjEtMi43IC4yLTRjNy4yLTU3LjkgMzMuMS0xMTkuNCA1OS42LTE3MC4zYzI2LjgtNTEuNSA1NS42LTk0LjggNzEtMTE2LjljMTMtMTguNiAzNC0yOC44IDU1LjgtMjguOEMyMjUgOTYgMjU2IDEyNyAyNTYgMTY1LjN2NDUuNWw5LjgtNi4yYzEzLjgtOC44IDIyLjItMjQuMSAyMi4yLTQwLjVWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuNyAzMy40YzEzLjUtNC4xIDI4LjEgMS4xIDM1LjkgMTIuOUwyMjQgMjk0LjMgMzg5LjQgNDYuMmM3LjgtMTEuNyAyMi40LTE3IDM1LjktMTIuOVM0NDggNDkuOSA0NDggNjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE2OS43TDI1MC42IDM2OS44Yy01LjkgOC45LTE1LjkgMTQuMi0yNi42IDE0LjJzLTIwLjctNS4zLTI2LjYtMTQuMkw2NCAxNjkuN1Y0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjRDMCA0OS45IDkuMiAzNy41IDIyLjcgMzMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTYwdjk2QzAgMzc5LjcgMTAwLjMgNDgwIDIyNCA0ODBzMjI0LTEwMC4zIDIyNC0yMjRWMTYwSDMyMHY5NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NlYxNjBIMHptMC0zMkgxMjhWNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NHY2NHptMzIwIDBINDQ4VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ25pZnlpbmdHbGFzc0Fycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHpNMjQxIDExOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzMSAzMUgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjM4LjFsLTMxIDMxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNzItNzJjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTcyLTcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3NDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4em0tMzEyIDh2NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTY0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0em04MC05NlYyODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR6bTgwIDY0djk2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTg0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3NEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHpNMjI4IDEwNGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjB2MTRjLTcuNiAxLjctMTUuMiA0LjQtMjIuMiA4LjVjLTEzLjkgOC4zLTI1LjkgMjIuOC0yNS44IDQzLjljLjEgMjAuMyAxMiAzMy4xIDI0LjcgNDAuN2MxMSA2LjYgMjQuNyAxMC44IDM1LjYgMTRsMS43IC41YzEyLjYgMy44IDIxLjggNi44IDI4IDEwLjdjNS4xIDMuMiA1LjggNS40IDUuOSA4LjJjLjEgNS0xLjggOC01LjkgMTAuNWMtNSAzLjEtMTIuOSA1LTIxLjQgNC43Yy0xMS4xLS40LTIxLjUtMy45LTM1LjEtOC41Yy0yLjMtLjgtNC43LTEuNi03LjItMi40Yy0xMC41LTMuNS0yMS44IDIuMi0yNS4zIDEyLjZzMi4yIDIxLjggMTIuNiAyNS4zYzEuOSAuNiA0IDEuMyA2LjEgMi4xbDAgMCAwIDBjOC4zIDIuOSAxNy45IDYuMiAyOC4yIDguNFYzMTJjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWMjk4LjJjOC0xLjcgMTYtNC41IDIzLjItOWMxNC4zLTguOSAyNS4xLTI0LjEgMjQuOC00NWMtLjMtMjAuMy0xMS43LTMzLjQtMjQuNi00MS42Yy0xMS41LTcuMi0yNS45LTExLjYtMzcuMS0xNWwtLjctLjJjLTEyLjgtMy45LTIxLjktNi43LTI4LjMtMTAuNWMtNS4yLTMuMS01LjMtNC45LTUuMy02LjdjMC0zLjcgMS40LTYuNSA2LjItOS4zYzUuNC0zLjIgMTMuNi01LjEgMjEuNS01YzkuNiAuMSAyMC4yIDIuMiAzMS4yIDUuMmMxMC43IDIuOCAyMS42LTMuNSAyNC41LTE0LjJzLTMuNS0yMS42LTE0LjItMjQuNWMtNi41LTEuNy0xMy43LTMuNC0yMS4xLTQuN1YxMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ25pZnlpbmdHbGFzc0xvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTI4OCAxNzZjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODBjMCA0OC44IDQ2LjUgMTExLjYgNjguNiAxMzguNmM2IDcuMyAxNi44IDcuMyAyMi43IDBjMjIuMS0yNyA2OC42LTg5LjggNjguNi0xMzguNnptLTExMiAwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ25pZnlpbmdHbGFzc01pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTEzNiAxODRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDEzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmlmeWluZ0dsYXNzUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0xODQgMjk2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjMyaDY0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIzMlYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDY0djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHpNMjA4IDM1MmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hbmF0U2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjk4LjdDNjkuMiAxMTMuOSAwIDE5Mi45IDAgMjg4VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI4OGMwLTU5LjYgNDAuOC0xMDkuOCA5Ni0xMjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTY0YzU1LjIgMTQuMiA5NiA2NC4zIDk2IDEyNFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhjMC05NS4xLTY5LjItMTc0LjEtMTYwLTE4OS4zVjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBMb2NhdGlvbkRvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDggMTIwYzAgNTQuNi03My4xIDE1MS45LTEwNS4yIDE5MmMtNy43IDkuNi0yMiA5LjYtMjkuNiAwQzI0MS4xIDI3MS45IDE2OCAxNzQuNiAxNjggMTIwQzE2OCA1My43IDIyMS43IDAgMjg4IDBzMTIwIDUzLjcgMTIwIDEyMHptOCA4MC40YzMuNS02LjkgNi43LTEzLjggOS42LTIwLjZjLjUtMS4yIDEtMi41IDEuNS0zLjdsMTE2LTQ2LjRDNTU4LjkgMTIzLjQgNTc2IDEzNSA1NzYgMTUyVjQyMi44YzAgOS44LTYgMTguNi0xNS4xIDIyLjNMNDE2IDUwM1YyMDAuNHpNMTM3LjYgMTM4LjNjMi40IDE0LjEgNy4yIDI4LjMgMTIuOCA0MS41YzIuOSA2LjggNi4xIDEzLjcgOS42IDIwLjZWNDUxLjhMMzIuOSA1MDIuN0MxNy4xIDUwOSAwIDQ5Ny40IDAgNDgwLjRWMjA5LjZjMC05LjggNi0xOC42IDE1LjEtMjIuM2wxMjIuNi00OXpNMzI3LjggMzMyYzEzLjktMTcuNCAzNS43LTQ1LjcgNTYuMi03N1Y1MDQuM0wxOTIgNDQ5LjRWMjU1YzIwLjUgMzEuMyA0Mi4zIDU5LjYgNTYuMiA3N2MyMC41IDI1LjYgNTkuMSAyNS42IDc5LjYgMHpNMjg4IDE1MmE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcExvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMi44IDMxMkMzMzQuOSAyNzEuOSA0MDggMTc0LjYgNDA4IDEyMEM0MDggNTMuNyAzNTQuMyAwIDI4OCAwUzE2OCA1My43IDE2OCAxMjBjMCA1NC42IDczLjEgMTUxLjkgMTA1LjIgMTkyYzcuNyA5LjYgMjIgOS42IDI5LjYgMHpNNDE2IDUwM2wxNDQuOS01OGM5LjEtMy42IDE1LjEtMTIuNSAxNS4xLTIyLjNWMTUyYzAtMTctMTcuMS0yOC42LTMyLjktMjIuM2wtMTE2IDQ2LjRjLS41IDEuMi0xIDIuNS0xLjUgMy43Yy0yLjkgNi44LTYuMSAxMy43LTkuNiAyMC42VjUwM3pNMTUuMSAxODcuM0M2IDE5MSAwIDE5OS44IDAgMjA5LjZWNDgwLjRjMCAxNyAxNy4xIDI4LjYgMzIuOSAyMi4zTDE2MCA0NTEuOFYyMDAuNGMtMy41LTYuOS02LjctMTMuOC05LjYtMjAuNmMtNS42LTEzLjItMTAuNC0yNy40LTEyLjgtNDEuNWwtMTIyLjYgNDl6TTM4NCAyNTVjLTIwLjUgMzEuMy00Mi4zIDU5LjYtNTYuMiA3N2MtMjAuNSAyNS42LTU5LjEgMjUuNi03OS42IDBjLTEzLjktMTcuNC0zNS43LTQ1LjctNTYuMi03N1Y0NDkuNGwxOTIgNTQuOVYyNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcFBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNDRhMTQ0IDE0NCAwIDEgMSAyODggMEExNDQgMTQ0IDAgMSAxIDE2IDE0NHpNMTYwIDgwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2Yy01MyAwLTk2IDQzLTk2IDk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZjMC0zNS4zIDI4LjctNjQgNjQtNjR6TTEyOCA0ODBWMzE3LjFjMTAuNCAxLjkgMjEuMSAyLjkgMzIgMi45czIxLjYtMSAzMi0yLjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ3Ni4xTDE5MiA0MjEuMlYzNS45TDM4NCA5MC44VjQ3Ni4xem0zMi0xLjJWODguNEw1NDMuMSAzNy41YzE1LjgtNi4zIDMyLjkgNS4zIDMyLjkgMjIuM1YzOTQuNmMwIDkuOC02IDE4LjYtMTUuMSAyMi4zTDQxNiA0NzQuOHpNMTUuMSA5NS4xTDE2MCAzNy4yVjQyMy42TDMyLjkgNDc0LjVDMTcuMSA0ODAuOCAwIDQ2OS4yIDAgNDUyLjJWMTE3LjRjMC05LjggNi0xOC42IDE1LjEtMjIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFya2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MSAzMUM0NDUuMS00LjggMzg2LjktNC44IDM1MSAzMWwtMTUgMTVMMzIyLjkgMzNDMjk0LjggNC45IDI0OS4yIDQuOSAyMjEuMSAzM0wxMzUgMTE5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBMMjU1IDY2LjljOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzAyLjEgODAgMTg2LjMgMTk1LjcgMzE2LjMgMzI1LjcgNDgxIDE2MWMzNS45LTM1LjkgMzUuOS05NC4xIDAtMTI5Ljl6TTI5My43IDM0OC4zTDE2My43IDIxOC4zIDk5LjUgMjgyLjVjLTQ4IDQ4LTgwLjggMTA5LjItOTQuMSAxNzUuOGwtNSAyNWMtMS42IDcuOSAuOSAxNiA2LjYgMjEuN3MxMy44IDguMSAyMS43IDYuNmwyNS01YzY2LjYtMTMuMyAxMjcuOC00Ni4xIDE3NS44LTk0LjFsNjQuMi02NC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzQW5kVmVudXNCdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMGMtOS43IDAtMTguNSA1LjgtMjIuMiAxNC44cy0xLjcgMTkuMyA1LjIgMjYuMmwzOSAzOS0yMi4yIDIyLjJDNDc1LjkgNzguNCA0MzkuNiA2NCA0MDAgNjRjLTg4LjQgMC0xNjAgNzEuNi0xNjAgMTYwYzAgODAuMiA1OSAxNDYuNiAxMzYgMTU4LjJWNDA4SDM1MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGgyNHYzMmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQ1NmgyNGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0MjRWMzgyLjJjNzctMTEuNiAxMzYtNzggMTM2LTE1OC4yYzAtMzEuNC05LTYwLjctMjQuNy04NS40TDU2MCAxMTMuOWwzOSAzOWM2LjkgNi45IDE3LjIgOC45IDI2LjIgNS4yczE0LjgtMTIuNSAxNC44LTIyLjJWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRINTA0ek00MDAgMTI4YTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyek0xOTAuOSAxOC4xQzE4OC40IDEyIDE4Mi42IDggMTc2IDhzLTEyLjQgNC0xNC45IDEwLjFsLTI5LjQgNzRMNTUuNiA2OC45Yy02LjMtMS45LTEzLjEgLjItMTcuMiA1LjNzLTQuNiAxMi4yLTEuNCAxNy45bDM5LjUgNjkuMUwxMC45IDIwNi40Yy01LjQgMy43LTggMTAuMy02LjUgMTYuN3M2LjcgMTEuMiAxMy4xIDEyLjJsNzguNyAxMi4yTDkwLjYgMzI3Yy0uNSA2LjUgMy4xIDEyLjcgOSAxNS41czEyLjkgMS44IDE3LjgtMi42TDE3NiAyODYuMWw1OC42IDUzLjljNC4xIDMuOCA5LjkgNS4xIDE1LjIgMy42QzIyMy42IDMxMC44IDIwOCAyNjkuMiAyMDggMjI0YzAtNjAuOCAyOC4zLTExNSA3Mi40LTE1MC4yTDIyMC4zIDkyLjFsLTI5LjQtNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnNBbmRWZW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzcuOCAxNC44QzM0MS41IDUuOCAzNTAuMyAwIDM2MCAwSDQ3MmMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxMzZjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtMzktMzktMjQuNyAyNC43QzQwNyAxNjMuMyA0MTYgMTkyLjYgNDE2IDIyNGMwIDgwLjItNTkgMTQ2LjYtMTM2IDE1OC4yVjQwOGgyNGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODB2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWNDU2SDIwOGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGgyNFYzODIuMkMxNTUgMzcwLjYgOTYgMzA0LjIgOTYgMjI0YzAtODguNCA3MS42LTE2MCAxNjAtMTYwYzM5LjYgMCA3NS45IDE0LjQgMTAzLjggMzguMkwzODIuMSA4MCAzNDMgNDFjLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJ6TTQ0OCA0OGwwIDBoMHYwek0zNTIgMjI0YTk2IDk2IDAgMSAwIC0xOTIgMCA5NiA5NiAwIDEgMCAxOTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc0RvdWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTIgMzJjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsMzMuNCAzMy40TDI3NS44IDE1OWMtMjguNC0xOS41LTYyLjctMzEtOTkuOC0zMUM3OC44IDEyOCAwIDIwNi44IDAgMzA0czc4LjggMTc2IDE3NiAxNzZzMTc2LTc4LjggMTc2LTE3NmMwLTM3LTExLjQtNzEuNC0zMS05OS44bDUyLjYtNTIuNkw0MDcgMTg1YzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMTJ6bTg4IDQ4aDB2MGwwIDB6TTY0IDMwNGExMTIgMTEyIDAgMSAxIDIyNCAwQTExMiAxMTIgMCAxIDEgNjQgMzA0ek0zNjggNDgwYzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2YzAtMzctMTEuNC03MS40LTMxLTk5LjhsNTIuNi01Mi42TDU5OSAxODVjNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4yVjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDUwNGMtOS43IDAtMTguNSA1LjgtMjIuMiAxNC44Yy0xLjIgMi45LTEuOCA2LTEuOCA5bDAgLjJ2LjJjMCA2LjIgMi41IDEyLjIgNyAxNi44bDMzLjQgMzMuNEw0ODAgMTQ2LjdWMTY4YzAgMjIuNi0xMy42IDQzLjEtMzQuNiA1MS43Yy0uOCAuMy0xLjcgLjctMi41IDFDNDY1LjcgMjQxLjIgNDgwIDI3MC45IDQ4MCAzMDRjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJjLTUuNCAwLTEwLjgtLjQtMTYtMS4xYy0xMi45IDIwLjQtMjkuMSAzOC4zLTQ4LjEgNTMuMWMxOS44IDcuOCA0MS40IDEyIDY0IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzU3Ryb2tlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDM2OGExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6bTE3NC40LTg4QzM3MC43IDM2NS44IDI5Ny4xIDQzMiAyMDggNDMyYy05Ny4yIDAtMTc2LTc4LjgtMTc2LTE3NnM3OC44LTE3NiAxNzYtMTc2Yzg5LjEgMCAxNjIuNyA2Ni4yIDE3NC40IDE1Mkg0MTZWMTc2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NTZoMzJWMTc2YzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMmw4MCA4MGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtODAgODBjLTYuOSA2LjktMTcuMiA4LjktMjYuMiA1LjJzLTE0LjgtMTIuNS0xNC44LTIyLjJWMjgwSDQ2NHY1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyODBIMzgyLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnNTdHJva2VVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDguNyA0LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsNjQgNjRjNC42IDQuNiA1LjkgMTEuNSAzLjUgMTcuNHMtOC4zIDkuOS0xNC44IDkuOUgxODR2MjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTg0djI0YzAgLjYgMCAxLjItLjEgMS44Yzc3IDExLjYgMTM2LjEgNzggMTM2LjEgMTU4LjJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0NDAuNCAwIDM1MmMwLTgwLjIgNTkuMS0xNDYuNyAxMzYuMS0xNTguMmMwLS42LS4xLTEuMi0uMS0xLjhWMTY4SDEwNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGgzMlY5Nkg5NmMtNi41IDAtMTIuMy0zLjktMTQuOC05LjlzLTEuMS0xMi45IDMuNS0xNy40bDY0LTY0ek0yNTYgMzUyQTk2IDk2IDAgMSAwIDY0IDM1MmE5NiA5NiAwIDEgMCAxOTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzYgMGMtOS43IDAtMTguNSA1LjgtMjIuMiAxNC44cy0xLjcgMTkuMyA1LjIgMjYuMmwzMy40IDMzLjRMMzcwLjMgOTYuNCAzNDUgNzFjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMjUuNCAyNS40TDMwNy44IDE1OWMtMjguNC0xOS41LTYyLjctMzEtOTkuOC0zMWMtOTcuMiAwLTE3NiA3OC44LTE3NiAxNzZzNzguOCAxNzYgMTc2IDE3NnMxNzYtNzguOCAxNzYtMTc2YzAtMzctMTEuNC03MS40LTMxLTk5LjhsMjguNi0yOC42TDQwNyAyMDFjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0yNS40LTI1LjQgMjIuMS0yMi4xTDQ3MSAxNTNjNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4yVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDM3NnptODggNDhoMHYwbDAgMHpNOTYgMzA0YTExMiAxMTIgMCAxIDEgMjI0IDBBMTEyIDExMiAwIDEgMSA5NiAzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg5LjggNDYuOGMzLjctOSAxMi41LTE0LjggMjIuMi0xNC44SDQyNGMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxNjhjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtMzMuNC0zMy40TDMyMSAyMDQuMmMxOS41IDI4LjQgMzEgNjIuNyAzMSA5OS44YzAgOTcuMi03OC44IDE3Ni0xNzYgMTc2UzAgNDAxLjIgMCAzMDRzNzguOC0xNzYgMTc2LTE3NmMzNyAwIDcxLjQgMTEuNCA5OS44IDMxbDUyLjYtNTIuNkwyOTUgNzNjLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJ6TTQwMCA4MGwwIDBoMHYwek0xNzYgNDE2YTExMiAxMTIgMCAxIDAgMC0yMjQgMTEyIDExMiAwIDEgMCAwIDIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFydGluaUdsYXNzQ2l0cnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiAyNDBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZjLTM1LjUgMC02Ni42IDE5LjMtODMuMiA0OEgyOTYuMkMzMTYgNDAuMSAzNjkuMyAwIDQzMiAwYzc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0cy02NC41IDE0NC0xNDQgMTQ0Yy0yNy43IDAtNTMuNS03LjgtNzUuNS0yMS4zbDM1LjQtMzUuNGMxMi4yIDUuNiAyNS44IDguNyA0MC4xIDguN3pNMS44IDE0Mi44QzUuNSAxMzMuOCAxNC4zIDEyOCAyNCAxMjhIMzkyYzkuNyAwIDE4LjUgNS44IDIyLjIgMTQuOHMxLjcgMTkuMy01LjIgMjYuMmwtMTc3IDE3N1Y0NjRoNjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjA4IDEyMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg2NFYzNDUuOUw3IDE2OWMtNi45LTYuOS04LjktMTcuMi01LjItMjYuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFydGluaUdsYXNzRW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEMxOS4xIDAgNy40IDcuOCAyLjQgMTkuOHMtMi4yIDI1LjcgNi45IDM0LjlMMjI0IDI2OS4zVjQ0OEgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTYgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjg4VjI2OS4zTDUwMi42IDU0LjZjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTNDkyLjkgMCA0ODAgMEgzMnpNMjU2IDIxMC43TDEwOS4zIDY0SDQwMi43TDI1NiAyMTAuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFydGluaUdsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTkuMSAwIDcuNCA3LjggMi40IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45TDIyNCAyNjkuM1Y0NDhIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2IDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OFYyNjkuM0w1MDIuNiA1NC42YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45UzQ5Mi45IDAgNDgwIDBIMzJ6TTE3My4zIDEyOGwtNjQtNjRINDAyLjdsLTY0IDY0SDE3My4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXNrRmFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNjRjLTI3LjIgMC01My44IDgtNzYuNCAyMy4xbC0zNy4xIDI0LjhjLTE1LjggMTAuNS0zNC4zIDE2LjEtNTMuMyAxNi4xSDE0NCAxMjggNTZjLTMwLjkgMC01NiAyNS4xLTU2IDU2djg1YzAgNTUuMSAzNy41IDEwMy4xIDkwLjkgMTE2LjRsMTA4IDI3QzIzMy44IDQzNSAyNzUuNCA0NDggMzIwIDQ0OHM4Ni4yLTEzIDEyMS4xLTM1LjVsMTA4LTI3QzYwMi41IDM3Mi4xIDY0MCAzMjQuMSA2NDAgMjY5VjE4NGMwLTMwLjktMjUuMS01Ni01Ni01Nkg1MTIgNDk2aC05LjJjLTE5IDAtMzcuNS01LjYtNTMuMy0xNi4xTDM5Ni40IDg3LjFDMzczLjggNzIgMzQ3LjIgNjQgMzIwIDY0ek0xMzIuMyAzNDYuM2wtMjkuOC03LjRDNzAuNSAzMzAuOSA0OCAzMDIuMSA0OCAyNjlWMTg0YzAtNC40IDMuNi04IDgtOEg5NnY0OGMwIDQ1LjEgMTMuNCA4Ny4yIDM2LjMgMTIyLjN6bTQwNS4xLTcuNGwtMjkuOCA3LjRjMjMtMzUuMiAzNi4zLTc3LjIgMzYuMy0xMjIuM1YxNzZoNDBjNC40IDAgOCAzLjYgOCA4djg1YzAgMzMtMjIuNSA2MS44LTU0LjUgNjkuOXpNMTkyIDIwOGMwLTguOCA3LjItMTYgMTYtMTZINDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2em0xNiA0OEg0MzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjA4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0xNiA4MGMwLTguOCA3LjItMTYgMTYtMTZINDAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDI0MGMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXNrVmVudGlsYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTkuMSAxNzZDMTM5LjQgMjE5LjIgMTI4IDI2NC43IDEyOCAzMDAuOGMwIDE1LjkgMi4yIDMxLjQgNi4zIDQ2bC0zMS44LTcuOUM3MC41IDMzMC45IDQ4IDMwMi4xIDQ4IDI2OVYxODRjMC00LjQgMy42LTggOC04SDE1OS4xem0yNi00OEg1NmMtMzAuOSAwLTU2IDI1LjEtNTYgNTZ2ODVjMCA1NS4xIDM3LjUgMTAzLjEgOTAuOSAxMTYuNGw3MS4zIDE3LjhjMjIuNyAzMC41IDU1LjQgNTQuMSA5My44IDY2LjZWMzkzLjNjLTE5LjctMTYuNC0zMi00MC4zLTMyLTY2LjljMC00OS41IDQzLTEzNC40IDk2LTEzNC40YzUyLjUgMCA5NiA4NC45IDk2IDEzNC40YzAgMjYuNy0xMi40IDUwLjQtMzIgNjYuOHY3Ni42YzM4LTEyLjYgNzAuNi0zNiA5My41LTY2LjRsNzEuNi0xNy45QzYwMi41IDM3Mi4xIDY0MCAzMjQuMSA2NDAgMjY5VjE4NGMwLTMwLjktMjUuMS01Ni01Ni01Nkg0NTQuNUM0MTkuNyA3My44IDM3Mi4xIDMyIDMyMCAzMmMtNTIuNiAwLTEwMC4yIDQxLjgtMTM0LjkgOTZ6bTI5NS42IDQ4SDU4NGM0LjQgMCA4IDMuNiA4IDh2ODVjMCAzMy0yMi41IDYxLjgtNTQuNSA2OS45bC0zMS44IDhjNC4yLTE0LjcgNi40LTMwLjEgNi40LTQ2LjFjMC0zNi4xLTExLjYtODEuNi0zMS4zLTEyNC44ek0yODggMzIwVjUxMmg2NFYzMjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDY0QzY0IDY0IDAgMTYwIDAgMjcyUzgwIDQ0OCAxNzYgNDQ4aDguNGMyNC4yIDAgNDYuNC0xMy43IDU3LjItMzUuNGwyMy4yLTQ2LjNjNC40LTguOCAxMy4zLTE0LjMgMjMuMi0xNC4zczE4LjggNS41IDIzLjIgMTQuM2wyMy4yIDQ2LjNjMTAuOCAyMS43IDMzIDM1LjQgNTcuMiAzNS40SDQwMGM5NiAwIDE3Ni02NCAxNzYtMTc2cy02NC0yMDgtMjg4LTIwOHpNOTYgMjU2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDk2IDI1NnptMzIwLTY0YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXNrc1RoZWF0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzQuNiAzNzMuMmM0MS43IDM2LjEgMTA4IDgyLjUgMTY2LjEgNzMuN2M2LjEtLjkgMTIuMS0yLjUgMTgtNC41Yy05LjItMTIuMy0xNy4zLTI0LjQtMjQuMi0zNS40Yy0yMS45LTM1LTI4LjgtNzUuMi0yNS45LTExMy42Yy0yMC42IDQuMS0zOS4yIDEzLTU0LjcgMjUuNGMtNi41IDUuMi0xNi4zIDEuMy0xNC44LTdjNi40LTMzLjUgMzMtNjAuOSA2OC4yLTY2LjNjMi42LS40IDUuMy0uNyA3LjktLjhsMTkuNC0xMzEuM2MyLTEzLjggOC0zMi43IDI1LTQ1LjlDMjc4LjIgNTMuMiAzMTAuNSAzNyAzNjMuMiAzMi4yYy0uOC0uNy0xLjYtMS40LTIuNC0yLjFDMzQwLjYgMTQuNSAyODguNC0xMS41IDE3NS43IDUuNlMyMC41IDYzIDUuNyA4My45QzAgOTEuOS0uOCAxMDIgLjYgMTExLjhMMjQuOCAyNzYuMWM1LjUgMzcuMyAyMS41IDcyLjYgNDkuOCA5Ny4yem04Ny43LTIxOS42YzQuNC0zLjEgMTAuOC0yIDExLjggMy4zYy4xIC41IC4yIDEuMSAuMyAxLjZjMy4yIDIxLjgtMTEuNiA0Mi0zMy4xIDQ1LjNzLTQxLjUtMTEuOC00NC43LTMzLjVjLS4xLS41LS4xLTEuMS0uMi0xLjZjLS42LTUuNCA1LjItOC40IDEwLjMtNi43YzkgMyAxOC44IDMuOSAyOC43IDIuNHMxOS4xLTUuMyAyNi44LTEwLjh6TTI2MS42IDM5MGMyOS40IDQ2LjkgNzkuNSAxMTAuOSAxMzcuNiAxMTkuN3MxMjQuNS0zNy41IDE2Ni4xLTczLjdjMjguMy0yNC41IDQ0LjMtNTkuOCA0OS44LTk3LjJsMjQuMi0xNjQuM2MxLjQtOS44IC42LTE5LjktNS4xLTI3LjljLTE0LjgtMjAuOS01Ny4zLTYxLjItMTcwLTc4LjNTMjk5LjQgNzcuMiAyNzkuMiA5Mi44Yy03LjggNi0xMS41IDE1LjQtMTIuOSAyNS4yTDI0Mi4xIDI4Mi4zYy01LjUgMzcuMy0uNCA3NS44IDE5LjYgMTA3Ljd6TTQwNC41IDIzNS4zYy03LjctNS41LTE2LjgtOS4zLTI2LjgtMTAuOHMtMTkuOC0uNi0yOC43IDIuNGMtNS4xIDEuNy0xMC45LTEuMy0xMC4zLTYuN2MuMS0uNSAuMS0xLjEgLjItMS42YzMuMi0yMS44IDIzLjItMzYuOCA0NC43LTMzLjVzMzYuMyAyMy41IDMzLjEgNDUuM2MtLjEgLjUtLjIgMS4xLS4zIDEuNmMtMSA1LjMtNy40IDYuNC0xMS44IDMuM3ptMTM2LjIgMTUuNWMtMSA1LjMtNy40IDYuNC0xMS44IDMuM2MtNy43LTUuNS0xNi44LTkuMy0yNi44LTEwLjhzLTE5LjgtLjYtMjguNyAyLjRjLTUuMSAxLjctMTAuOS0xLjMtMTAuMy02LjdjLjEtLjUgLjEtMS4xIC4yLTEuNmMzLjItMjEuOCAyMy4yLTM2LjggNDQuNy0zMy41czM2LjMgMjMuNSAzMy4xIDQ1LjNjLS4xIC41LS4yIDEuMS0uMyAxLjZ6TTUzMCAzNTAuMmMtMTkuNiA0NC43LTY2LjggNzIuNS0xMTYuOCA2NC45cy04Ny4xLTQ4LjItOTMtOTYuN2MtMS04LjMgOC45LTEyLjEgMTUuMi02LjdjMjMuOSAyMC44IDUzLjYgMzUuMyA4NyA0MC4zczY2LjEgLjEgOTQuOS0xMi44YzcuNi0zLjQgMTYgMy4yIDEyLjYgMTAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWF0dHJlc3NQaWxsb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgyNTZWNjR6bTMyIDM4NEg1NzZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4OFY0NDh6TTY0IDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAwIDMySDU2QzQyLjcgMzIgMzIgNDIuNyAzMiA1NlYyMDBjMCA5LjcgNS44IDE4LjUgMTQuOCAyMi4yczE5LjMgMS43IDI2LjItNS4ybDQwLTQwIDc5IDc5LTc5IDc5TDczIDI5NWMtNi45LTYuOS0xNy4yLTguOS0yNi4yLTUuMlMzMiAzMDIuMyAzMiAzMTJWNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0SDIwMGM5LjcgMCAxOC41LTUuOCAyMi4yLTE0LjhzMS43LTE5LjMtNS4yLTI2LjJsLTQwLTQwIDc5LTc5IDc5IDc5LTQwIDQwYy02LjkgNi45LTguOSAxNy4yLTUuMiAyNi4yczEyLjUgMTQuOCAyMi4yIDE0LjhINDU2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjMxMmMwLTkuNy01LjgtMTguNS0xNC44LTIyLjJzLTE5LjMtMS43LTI2LjIgNS4ybC00MCA0MC03OS03OSA3OS03OSA0MCA0MGM2LjkgNi45IDE3LjIgOC45IDI2LjIgNS4yczE0LjgtMTIuNSAxNC44LTIyLjJWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMzEyYy05LjcgMC0xOC41IDUuOC0yMi4yIDE0LjhzLTEuNyAxOS4zIDUuMiAyNi4ybDQwIDQwLTc5IDc5LTc5LTc5IDQwLTQwYzYuOS02LjkgOC45LTE3LjIgNS4yLTI2LjJTMjA5LjcgMzIgMjAwIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjEgMzguMkMxLjQgMzQuMiAwIDI5LjQgMCAyNC42QzAgMTEgMTEgMCAyNC42IDBIMTMzLjljMTEuMiAwIDIxLjcgNS45IDI3LjQgMTUuNWw2OC41IDExNC4xYy00OC4yIDYuMS05MS4zIDI4LjYtMTIzLjQgNjEuOUw0LjEgMzguMnptNTAzLjcgMEw0MDUuNiAxOTEuNWMtMzIuMS0zMy4zLTc1LjItNTUuOC0xMjMuNC02MS45TDM1MC43IDE1LjVDMzU2LjUgNS45IDM2Ni45IDAgMzc4LjEgMEg0ODcuNEM1MDEgMCA1MTIgMTEgNTEyIDI0LjZjMCA0LjgtMS40IDkuNi00LjEgMTMuNnpNODAgMzM2YTE3NiAxNzYgMCAxIDEgMzUyIDBBMTc2IDE3NiAwIDEgMSA4MCAzMzZ6bTE4NC40LTk0LjljLTMuNC03LTEzLjMtNy0xNi44IDBsLTIyLjQgNDUuNGMtMS40IDIuOC00IDQuNy03IDUuMUwxNjggMjk4LjljLTcuNyAxLjEtMTAuNyAxMC41LTUuMiAxNmwzNi4zIDM1LjRjMi4yIDIuMiAzLjIgNS4yIDIuNyA4LjNsLTguNiA0OS45Yy0xLjMgNy42IDYuNyAxMy41IDEzLjYgOS45bDQ0LjgtMjMuNmMyLjctMS40IDYtMS40IDguNyAwbDQ0LjggMjMuNmM2LjkgMy42IDE0LjktMi4yIDEzLjYtOS45bC04LjYtNDkuOWMtLjUtMyAuNS02LjEgMi43LTguM2wzNi4zLTM1LjRjNS42LTUuNCAyLjUtMTQuOC01LjItMTZsLTUwLjEtNy4zYy0zLS40LTUuNy0yLjQtNy01LjFsLTIyLjQtNDUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVtb3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4djcuNGMwIDYuOCA0LjQgMTIuNiAxMC4xIDE2LjNDMjMuMyAxNjAuMyAzMiAxNzUuMSAzMiAxOTJzLTguNyAzMS43LTIxLjkgNDAuM0M0LjQgMjM2IDAgMjQxLjggMCAyNDguNlYzMjBINTc2VjI0OC42YzAtNi44LTQuNC0xMi42LTEwLjEtMTYuM0M1NTIuNyAyMjMuNyA1NDQgMjA4LjkgNTQ0IDE5MnM4LjctMzEuNyAyMS45LTQwLjNjNS43LTMuNyAxMC4xLTkuNSAxMC4xLTE2LjNWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01NzYgMzUySDB2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIODBWNDE2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MzJoOTZWNDE2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MzJoOTZWNDE2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MzJoOTZWNDE2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyek0xOTIgMTYwdjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyem0xMjggMHY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTI4IDB2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lbm9yYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOCA3LjRDMjIuOCAyLjkgMjcuMSAwIDMyIDBzOS4yIDIuOSAxMS4yIDcuNEw2MS4zIDQ5LjdjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyUzAgODEuNyAwIDY0VjYyLjhjMC00LjUgLjktOC45IDIuNy0xMy4xTDIwLjggNy40em05NiAwQzExOC44IDIuOSAxMjMuMSAwIDEyOCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMUwxMTYuOCA3LjR6bTc3LjggNDIuNEwyMTIuOCA3LjRDMjE0LjggMi45IDIxOS4xIDAgMjI0IDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjYyLjhjMC00LjUgLjktOC45IDIuNy0xMy4xek0zMDguOCA3LjRDMzEwLjggMi45IDMxNS4xIDAgMzIwIDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjYyLjhjMC00LjUgLjktOC45IDIuNy0xMy4xTDMwOC44IDcuNHptNzcuOCA0Mi40TDQwNC44IDcuNEM0MDYuOCAyLjkgNDExLjEgMCA0MTYgMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjIuOGMwLTQuNSAuOS04LjkgMi43LTEzLjF6TTUwMC44IDcuNEM1MDIuOCAyLjkgNTA3LjEgMCA1MTIgMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjIuOGMwLTQuNSAuOS04LjkgMi43LTEzLjFMNTAwLjggNy40em03Ny44IDQyLjRMNTk2LjggNy40QzU5OC44IDIuOSA2MDMuMSAwIDYwOCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMXpNMzIgMTI4YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjI4OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgyODhWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzIwSDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYyODhjMCA1My00MyA5Ni05NiA5NkgzNTJ2NjRINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMCAxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMjg4VjM4NEg5NmMtNTMgMC05Ni00My05Ni05NlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTYgMzJIOTZWMjU2IDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NiAzMkgxOTJWMjU2IDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTYgMzJIMzg0VjI1NiAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTYgMzJINDgwVjI1NiAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lcmN1cnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzIuMSA3Qzg1LjgtNCAxMDYtMS44IDExNyAxMmMxNy42IDIyIDQ0LjcgMzYgNzUgMzZzNTcuMy0xNCA3NS0zNmMxMS4xLTEzLjggMzEuMi0xNiA0NS01czE2IDMxLjIgNSA0NWMtNy44IDkuNy0xNi42IDE4LjQtMjYuNCAyNi4xQzMzNy4zIDEwOS43IDM2OCAxNjMuMyAzNjggMjI0YzAgODkuMS02Ni4yIDE2Mi43LTE1MiAxNzQuNFY0MjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjE2djE2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjQ3MkgxMzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMzJWMzk4LjRDODIuMiAzODYuNyAxNiAzMTMuMSAxNiAyMjRjMC02MC43IDMwLjctMTE0LjMgNzcuNS0xNDUuOUM4My43IDcwLjUgNzQuOSA2MS43IDY3LjEgNTJjLTExLjEtMTMuOC04LjgtMzMuOSA1LTQ1ek04MCAyMjRhMTEyIDExMiAwIDEgMCAyMjQgMEExMTIgMTEyIDAgMSAwIDgwIDIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVzc2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFYzNTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTZ2ODBjMCA2LjEgMy40IDExLjYgOC44IDE0LjNzMTEuOSAyLjEgMTYuOC0xLjVMMzA5LjMgNDE2SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWV0ZW9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5My43IC45TDI5OS40IDc1LjZsMi4zLTI5LjNjMS0xMi44LTEyLjgtMjEuNS0yNC0xNS4xTDEwMS4zIDEzMy40QzM4LjYgMTY5LjcgMCAyMzYuNiAwIDMwOUMwIDQyMS4xIDkwLjkgNTEyIDIwMyA1MTJjNzIuNCAwIDEzOS40LTM4LjYgMTc1LjctMTAxLjNMNDgwLjggMjM0LjNjNi41LTExLjEtMi4yLTI1LTE1LjEtMjRsLTI5LjMgMi4zTDUxMS4xIDE4LjNjLjYtMS41IC45LTMuMiAuOS00LjhDNTEyIDYgNTA2IDAgNDk4LjUgMGMtMS43IDAtMy4zIC4zLTQuOCAuOXpNMTkyIDE5MmExMjggMTI4IDAgMSAxIDAgMjU2IDEyOCAxMjggMCAxIDEgMC0yNTZ6bTAgOTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTYgOTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb2NoaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NEgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2NHY1NkgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2NHY1NkgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2NGMwIDM1LjMgMjguNyA2NCA2NCA2NHY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQ0OGg1NnY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQ0OGg1NnY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NGg0MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0NDhWMjgwaDQwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ0OFYxNzZoNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDQ4YzAtMzUuMy0yOC43LTY0LTY0LTY0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjY0SDI4MFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgxNzZWMjR6TTE2MCAxMjhIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTkyIDMySDE2MFYzNTJIMzUyVjE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9waG9uZUxpbmVzU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w0NzIuMSAzNDQuN2MxNS4yLTI2IDIzLjktNTYuMyAyMy45LTg4LjdWMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djI0IDE2YzAgMjEuMi01LjEgNDEuMS0xNC4yIDU4LjdMNDE2IDMwMC44VjI1NkgzNTguOWwtMzQuNS0yN2MyLjktMy4xIDctNSAxMS42LTVoODBWMTkySDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4MFYxMjhIMzM2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDgwYzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2djU0LjNMMzguOCA1LjF6TTM1OC4yIDM3OC4yQzM0Ni4xIDM4MiAzMzMuMyAzODQgMzIwIDM4NGMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjh2LTguN0wxNDQuNyAyMTBjLS41IDEuOS0uNyAzLjktLjcgNnY0MGMwIDg5LjEgNjYuMiAxNjIuNyAxNTIgMTc0LjRWNDY0SDI0OGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg3MiA3MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNDRWNDMwLjRjMjAuNC0yLjggMzkuNy05LjEgNTcuMy0xOC4ybC00My4xLTMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmVMaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA5NlYyNTZjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODBWMTkySDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4MFYxMjhIMjA4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDgwYzAtNTMtNDMtOTYtOTYtOTZTOTYgNDMgOTYgOTZ6TTMyMCAyNDB2MTZjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhzLTEyOC01Ny4zLTEyOC0xMjhWMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djQwYzAgODkuMSA2Ni4yIDE2Mi43IDE1MiAxNzQuNFY0NjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDcyIDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIxNlY0MzAuNGM4NS44LTExLjcgMTUyLTg1LjMgMTUyLTE3NC40VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHYyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9waG9uZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDcyLjEgMzQ0LjdjMTUuMi0yNiAyMy45LTU2LjMgMjMuOS04OC43VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY0MGMwIDIxLjItNS4xIDQxLjEtMTQuMiA1OC43TDQxNiAzMDAuOFY5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnY1NC4zTDM4LjggNS4xem0zNjIuNSA0MDdsLTQzLjEtMzMuOUMzNDYuMSAzODIgMzMzLjMgMzg0IDMyMCAzODRjLTcwLjcgMC0xMjgtNTcuMy0xMjgtMTI4di04LjdMMTQ0LjcgMjEwYy0uNSAxLjktLjcgMy45LS43IDZ2NDBjMCA4OS4xIDY2LjIgMTYyLjcgMTUyIDE3NC40VjQ2NEgyNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNzIgNzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzQ0VjQzMC40YzIwLjQtMi44IDM5LjctOS4xIDU3LjMtMTguMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9waG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMEMxMzkgMCA5NiA0MyA5NiA5NlYyNTZjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NlY5NmMwLTUzLTQzLTk2LTk2LTk2ek02NCAyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NDBjMCA4OS4xIDY2LjIgMTYyLjcgMTUyIDE3NC40VjQ2NEgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNzIgNzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjE2VjQzMC40Yzg1LjgtMTEuNyAxNTItODUuMyAxNTItMTc0LjRWMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djQwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4VjIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9zY29wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMzJjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjg4YzAgMTcuNy0xNC4zIDMyLTMyIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zMiA0NDhIMzIwYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4cy01Ny4zLTEyOC0xMjgtMTI4VjEyOGMxMDYgMCAxOTIgODYgMTkyIDE5MmMwIDQ5LjItMTguNSA5NC00OC45IDEyOEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem04MC02NEgzMDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWxsU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMSA0Mi44YzUuOS0xNi42LTIuNy0zNS0xOS40LTQwLjlzLTM1IDIuNy00MC45IDE5LjRMMjA4IDExNi4xYy01LjcgNC0xMS4xIDguNS0xNiAxMy41QzE3MS43IDEwOC45IDE0My4zIDk2IDExMiA5NmMtMTkuNSAwLTM3LjggNS01My43IDEzLjdDNTIuNSAxMDEuNCA0Mi45IDk2IDMyIDk2QzE0LjMgOTYgMCAxMTAuMyAwIDEyOHY4MFY0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMDhjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY0Mi41TDgxLjkgNDY5LjJjLTUuOSAxNi42IDIuNyAzNSAxOS40IDQwLjlzMzUtMi43IDQwLjktMTkuNGwyMS40LTYwQzE2OC45IDQ0MSAxNzkuNiA0NDggMTkyIDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyNjEuNWwzNS43LTEwMGMzLjktMSA4LjEtMS42IDEyLjMtMS42YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIwOGMwLTU4LjItNDQuMy0xMDYtMTAxLjEtMTExLjVsMTkuMi01My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaW5pbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTYgMjI0SDMxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNTZjMC05LjcgNS44LTE4LjUgMTQuOC0yMi4yczE5LjMtMS43IDI2LjIgNS4ybDQwIDQwTDQ0Mi4zIDUuN0M0NDYgMiA0NTAuOSAwIDQ1NiAwczEwIDIgMTMuNyA1LjdsMzYuNyAzNi43QzUxMCA0NiA1MTIgNTAuOSA1MTIgNTZzLTIgMTAtNS43IDEzLjdMNDMzIDE0M2w0MCA0MGM2LjkgNi45IDguOSAxNy4yIDUuMiAyNi4ycy0xMi41IDE0LjgtMjIuMiAxNC44em0wIDY0YzkuNyAwIDE4LjUgNS44IDIyLjIgMTQuOHMxLjcgMTkuMy01LjIgMjYuMmwtNDAgNDAgNzMuNCA3My40YzMuNiAzLjYgNS43IDguNSA1LjcgMTMuN3MtMiAxMC01LjcgMTMuN2wtMzYuNyAzNi43QzQ2NiA1MTAgNDYxLjEgNTEyIDQ1NiA1MTJzLTEwLTItMTMuNy01LjdMMzY5IDQzM2wtNDAgNDBjLTYuOSA2LjktMTcuMiA4LjktMjYuMiA1LjJzLTE0LjgtMTIuNS0xNC44LTIyLjJWMzEyYzAtMTMuMyAxMC43LTI0IDI0LTI0SDQ1NnptLTI1NiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjQ1NmMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC00MC00MEw2OS43IDUwNi4zQzY2IDUxMCA2MS4xIDUxMiA1NiA1MTJzLTEwLTItMTMuNy01LjdMNS43IDQ2OS43QzIgNDY2IDAgNDYxLjEgMCA0NTZzMi0xMCA1LjctMTMuN0w3OSAzNjkgMzkgMzI5Yy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yczEyLjUtMTQuOCAyMi4yLTE0LjhIMjAwek01NiAyMjRjLTkuNyAwLTE4LjUtNS44LTIyLjItMTQuOHMtMS43LTE5LjMgNS4yLTI2LjJsNDAtNDBMNS43IDY5LjdDMiA2NiAwIDYxLjEgMCA1NnMyLTEwIDUuNy0xMy43TDQyLjMgNS43QzQ2IDIgNTAuOSAwIDU2IDBzMTAgMiAxMy43IDUuN0wxNDMgNzlsNDAtNDBjNi45LTYuOSAxNy4yLTguOSAyNi4yLTUuMnMxNC44IDEyLjUgMTQuOCAyMi4yVjIwMGMwIDEzLjMtMTAuNyAyNC0yNCAyNEg1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDI1NmMwIDE3LjctMTQuMyAzMi0zMiAzMkw0OCAyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMzUyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pdHRlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMzg0SDY0TDUuNCAxNzguOUMxLjggMTY2LjQgMCAxNTMuNCAwIDE0MC4zQzAgNjIuOCA2Mi44IDAgMTQwLjMgMGgzLjRjNjYgMCAxMjMuNSA0NC45IDEzOS41IDEwOC45bDMxLjQgMTI1LjggMTcuNi0yMC4xQzM0NC44IDIwMC4yIDM2Mi45IDE5MiAzODIgMTkyaDIuOGMzNC45IDAgNjMuMyAyOC4zIDYzLjMgNjMuM2MwIDE1LjktNiAzMS4yLTE2LjggNDIuOUwzNTIgMzg0ek0zMiA0NDhjMC0xNy43IDE0LjMtMzIgMzItMzJIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vYmlsZUJ1dHRvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAwQzQ0LjcgMCAxNiAyOC43IDE2IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMDRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIODB6TTE5MiA0MDBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2JpbGVSZXRybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyNTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptNjQgOTZ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTgwIDM1MmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTI0IDU2YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTU2LTU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjQgNTZhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHptNTYtNTZhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0yNCA1NmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwek0xMjggNDhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2JpbGVTY3JlZW5CdXR0b24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNjRDMTYgMjguNyA0NC43IDAgODAgMEgzMDRjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDgwYy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMjI0IDQ0OGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zMDQgNjRIODBWMzg0SDMwNFY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9iaWxlU2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDY0QzE2IDI4LjcgNDQuNyAwIDgwIDBIMzA0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTE0NCA0NDhjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2ek0zMDQgNjRIODBWMzg0SDMwNFY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDBDNDQuNyAwIDE2IDI4LjcgMTYgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMwNGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg4MHptODAgNDMyaDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE2MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsMVdhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMTIuNVY0MjIuM2MwIDE4IDEwLjEgMzUgMjcgNDEuM2M4NyAzMi41IDE3NCAxMC4zIDI2MS0xMS45Yzc5LjgtMjAuMyAxNTkuNi00MC43IDIzOS4zLTE4LjljMjMgNi4zIDQ4LjctOS41IDQ4LjctMzMuNFY4OS43YzAtMTgtMTAuMS0zNS0yNy00MS4zQzQ2MiAxNS45IDM3NSAzOC4xIDI4OCA2MC4zQzIwOC4yIDgwLjYgMTI4LjQgMTAwLjkgNDguNyA3OS4xQzI1LjYgNzIuOCAwIDg4LjYgMCAxMTIuNXpNMTI4IDQxNkg2NFYzNTJjMzUuMyAwIDY0IDI4LjcgNjQgNjR6TTY0IDIyNFYxNjBoNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjR6TTQ0OCAzNTJjMC0zNS4zIDI4LjctNjQgNjQtNjR2NjRINDQ4em02NC0xOTJjLTM1LjMgMC02NC0yOC43LTY0LTY0aDY0djY0ek0zODQgMjU2YzAgNjEuOS00MyAxMTItOTYgMTEycy05Ni01MC4xLTk2LTExMnM0My0xMTIgOTYtMTEyczk2IDUwLjEgOTYgMTEyek0yNTIgMjA4YzAgOS43IDYuOSAxNy43IDE2IDE5LjZWMjc2aC00Yy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMGgyNCAyNGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBoLTRWMjA4YzAtMTEtOS0yMC0yMC0yMEgyNzJjLTExIDAtMjAgOS0yMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNjQgMzIwSDY0VjMyMGMzNS4zIDAgNjQgMjguNyA2NCA2NHpNNjQgMTkyVjEyOGg2NGMwIDM1LjMtMjguNyA2NC02NCA2NHpNNDQ4IDM4NGMwLTM1LjMgMjguNy02NCA2NC02NHY2NEg0NDh6bTY0LTE5MmMtMzUuMyAwLTY0LTI4LjctNjQtNjRoNjR2NjR6TTE3NiAyNTZhMTEyIDExMiAwIDEgMSAyMjQgMCAxMTIgMTEyIDAgMSAxIC0yMjQgMHptNzYtNDhjMCA5LjcgNi45IDE3LjcgMTYgMTkuNlYyNzZoLTRjLTExIDAtMjAgOS0yMCAyMHM5IDIwIDIwIDIwaDI0IDI0YzExIDAgMjAtOSAyMC0yMHMtOS0yMC0yMC0yMGgtNFYyMDhjMC0xMS05LTIwLTIwLTIwSDI3MmMtMTEgMC0yMCA5LTIwIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25leUJpbGxUcmFuc2ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzUgNDFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw2NCA2NGM0LjUgNC41IDcgMTAuNiA3IDE3cy0yLjUgMTIuNS03IDE3bC02NCA2NGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwyMy0yM0wzODQgMTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDE3NC4xIDBMNTM1IDQxek0xMDUgMzc3bC0yMyAyM0wyNTYgNDAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDgxLjkgNDQ4bDIzIDIzYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBMNyA0NDFjLTQuNS00LjUtNy0xMC42LTctMTdzMi41LTEyLjUgNy0xN2w2NC02NGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6TTk2IDY0SDMzNy45Yy0zLjcgNy4yLTUuOSAxNS4zLTUuOSAyNGMwIDI4LjcgMjMuMyA1MiA1MiA1MmwxMTcuNCAwYy00IDE3IC42IDM1LjUgMTMuOCA0OC44YzIwLjMgMjAuMyA1My4yIDIwLjMgNzMuNSAwTDYwOCAxNjkuNVYzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzAyLjFjMy43LTcuMiA1LjktMTUuMyA1LjktMjRjMC0yOC43LTIzLjMtNTItNTItNTJsLTExNy40IDBjNC0xNy0uNi0zNS41LTEzLjgtNDguOGMtMjAuMy0yMC4zLTUzLjItMjAuMy03My41IDBMMzIgMzQyLjVWMTI4YzAtMzUuMyAyOC43LTY0IDY0LTY0em02NCA2NEg5NnY2NGMzNS4zIDAgNjQtMjguNyA2NC02NHpNNTQ0IDMyMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRoNjRWMzIwek0zMjAgMzUyYTk2IDk2IDAgMSAwIDAtMTkyIDk2IDk2IDAgMSAwIDAgMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25leUJpbGxUcmVuZFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MC43IDkuNGMzIDMuMSA1LjMgNi42IDYuOSAxMC4zczIuNCA3LjggMi40IDEyLjJsMCAuMXYwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjEwOS4zTDMxMC42IDIxNC42Yy0xMS44IDExLjgtMzAuOCAxMi42LTQzLjUgMS43TDE3NiAxMzguMSA4NC44IDIxNi4zYy0xMy40IDExLjUtMzMuNiA5LjktNDUuMS0zLjVzLTkuOS0zMy42IDMuNS00NS4xbDExMi05NmMxMi0xMC4zIDI5LjctMTAuMyA0MS43IDBsODkuNSA3Ni43TDM3MC43IDY0SDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg5NiAwYzguOCAwIDE2LjggMy42IDIyLjYgOS4zbC4xIC4xek0wIDMwNGMwLTI2LjUgMjEuNS00OCA0OC00OEg0NjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzMDR6TTQ4IDQxNnY0OEg5NmMwLTI2LjUtMjEuNS00OC00OC00OHpNOTYgMzA0SDQ4djQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4ek00NjQgNDE2Yy0yNi41IDAtNDggMjEuNS00OCA0OGg0OFY0MTZ6TTQxNiAzMDRjMCAyNi41IDIxLjUgNDggNDggNDhWMzA0SDQxNnptLTk2IDgwYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsV2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExMi41VjQyMi4zYzAgMTggMTAuMSAzNSAyNyA0MS4zYzg3IDMyLjUgMTc0IDEwLjMgMjYxLTExLjljNzkuOC0yMC4zIDE1OS42LTQwLjcgMjM5LjMtMTguOWMyMyA2LjMgNDguNy05LjUgNDguNy0zMy40Vjg5LjdjMC0xOC0xMC4xLTM1LTI3LTQxLjNDNDYyIDE1LjkgMzc1IDM4LjEgMjg4IDYwLjNDMjA4LjIgODAuNiAxMjguNCAxMDAuOSA0OC43IDc5LjFDMjUuNiA3Mi44IDAgODguNiAwIDExMi41ek0yODggMzUyYy00NC4yIDAtODAtNDMtODAtOTZzMzUuOC05NiA4MC05NnM4MCA0MyA4MCA5NnMtMzUuOCA5Ni04MCA5NnpNNjQgMzUyYzM1LjMgMCA2NCAyOC43IDY0IDY0SDY0VjM1MnptNjQtMjA4YzAgMzUuMy0yOC43IDY0LTY0IDY0VjE0NGg2NHpNNTEyIDMwNHY2NEg0NDhjMC0zNS4zIDI4LjctNjQgNjQtNjR6TTQ0OCA5Nmg2NHY2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbFdoZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODBjMC04LjggNy4yLTE2IDE2LTE2ek01NiAxNmg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NkM0Mi43IDY0IDMyIDUzLjMgMzIgNDBzMTAuNy0yNCAyNC0yNHpNMjQgODhIMTM2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFMxMC43IDg4IDI0IDg4em04IDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDU2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNMjcyIDE2YzAtOC44IDcuMi0xNiAxNi0xNmM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwek00MDAgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTQ0YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODBjOC44IDAgMTYgNy4yIDE2IDE2ek0zNTIgMTI4YzguOCAwIDE2IDcuMiAxNiAxNmMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwem0tOTYgMTZjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MGM4LjggMCAxNiA3LjIgMTYgMTZ6TTAgMzA0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDQ2NGMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjMwNHpNNDggNDE2djQ4SDk2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek05NiAzMDRINDh2NDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6TTQ2NCA0MTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4aDQ4VjQxNnpNNDE2IDMwNGMwIDI2LjUgMjEuNSA0OCA0OCA0OFYzMDRINDE2em0tOTYgODBhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25leUJpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTY0IDMyMEg2NFYzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjR6TTY0IDE5MlYxMjhoNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjR6TTQ0OCAzODRjMC0zNS4zIDI4LjctNjQgNjQtNjR2NjRINDQ4em02NC0xOTJjLTM1LjMgMC02NC0yOC43LTY0LTY0aDY0djY0ek0yODggMTYwYTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25leUJpbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDk2VjMyMGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1NzZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTYwYy0zNS4zIDAtNjQgMjguNy02NCA2NHptNjQgMTYwYzM1LjMgMCA2NCAyOC43IDY0IDY0SDE2MFYyNTZ6TTIyNCA5NmMwIDM1LjMtMjguNyA2NC02NCA2NFY5Nmg2NHpNNTc2IDI1NnY2NEg1MTJjMC0zNS4zIDI4LjctNjQgNjQtNjR6TTUxMiA5Nmg2NHY2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6TTI4OCAyMDhhODAgODAgMCAxIDEgMTYwIDAgODAgODAgMCAxIDEgLTE2MCAwek00OCAxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRTMCAxMDYuNyAwIDEyMFYzNjBjMCA2Ni4zIDUzLjcgMTIwIDEyMCAxMjBINTIwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDEyMGMtMzkuOCAwLTcyLTMyLjItNzItNzJWMTIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25leUNoZWNrRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yNzIgMTkySDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6TTI1NiAzMDRjMC04LjggNy4yLTE2IDE2LTE2SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnpNMTY0IDE1MnYxMy45YzcuNSAxLjIgMTQuNiAyLjkgMjEuMSA0LjdjMTAuNyAyLjggMTcgMTMuOCAxNC4yIDI0LjVzLTEzLjggMTctMjQuNSAxNC4yYy0xMS0yLjktMjEuNi01LTMxLjItNS4yYy03LjktLjEtMTYgMS44LTIxLjUgNWMtNC44IDIuOC02LjIgNS42LTYuMiA5LjNjMCAxLjggLjEgMy41IDUuMyA2LjdjNi4zIDMuOCAxNS41IDYuNyAyOC4zIDEwLjVsLjcgLjJjMTEuMiAzLjQgMjUuNiA3LjcgMzcuMSAxNWMxMi45IDguMSAyNC4zIDIxLjMgMjQuNiA0MS42Yy4zIDIwLjktMTAuNSAzNi4xLTI0LjggNDVjLTcuMiA0LjUtMTUuMiA3LjMtMjMuMiA5VjM2MGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBWMzQ1LjRjLTEwLjMtMi4yLTIwLTUuNS0yOC4yLTguNGwwIDAgMCAwYy0yLjEtLjctNC4xLTEuNC02LjEtMi4xYy0xMC41LTMuNS0xNi4xLTE0LjgtMTIuNi0yNS4zczE0LjgtMTYuMSAyNS4zLTEyLjZjMi41IC44IDQuOSAxLjcgNy4yIDIuNGMxMy42IDQuNiAyNCA4LjEgMzUuMSA4LjVjOC42IC4zIDE2LjUtMS42IDIxLjQtNC43YzQuMS0yLjUgNi01LjUgNS45LTEwLjVjMC0yLjktLjgtNS01LjktOC4yYy02LjMtNC0xNS40LTYuOS0yOC0xMC43bC0xLjctLjVjLTEwLjktMy4zLTI0LjYtNy40LTM1LjYtMTRjLTEyLjctNy43LTI0LjYtMjAuNS0yNC43LTQwLjdjLS4xLTIxLjEgMTEuOC0zNS43IDI1LjgtNDMuOWM2LjktNC4xIDE0LjUtNi44IDIyLjItOC41VjE1MmMwLTExIDktMjAgMjAtMjBzMjAgOSAyMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNDggMTYwSDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6TTk2IDMzNmMwLTguOCA3LjItMTYgMTYtMTZINDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2ek0zNzYgMTYwaDgwYzEzLjMgMCAyNCAxMC43IDI0IDI0djQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDM3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb251bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODAuNyA0LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsODAgODBjMi41IDIuNSA0LjEgNS44IDQuNiA5LjNsNDAuMiAzMjJINTUuOUw5Ni4xIDk0Yy40LTMuNSAyLTYuOCA0LjYtOS4zbDgwLTgwek0xNTIgMjcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDE1MnpNMzIgNDQ4SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjMuNSAzMkMxMDAgMzIgMCAxMzIuMyAwIDI1NlMxMDAgNDgwIDIyMy41IDQ4MGM2MC42IDAgMTE1LjUtMjQuMiAxNTUuOC02My40YzUtNC45IDYuMy0xMi41IDMuMS0xOC43cy0xMC4xLTkuNy0xNy04LjVjLTkuOCAxLjctMTkuOCAyLjYtMzAuMSAyLjZjLTk2LjkgMC0xNzUuNS03OC44LTE3NS41LTE3NmMwLTY1LjggMzYtMTIzLjEgODkuMy0xNTMuM2M2LjEtMy41IDkuMi0xMC41IDcuNy0xNy4zcy03LjMtMTEuOS0xNC4zLTEyLjVjLTYuMy0uNS0xMi42LS44LTE5LS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3J0YXJQZXN0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0LjMgMTEuMUM0OTMuMy0xLjYgNDc0LjUtMy43IDQ2MSA2LjJMMjUyLjMgMTYwSDM5Ny4zTDUwMi42IDU0LjZjMTEuOC0xMS44IDEyLjYtMzAuOCAxLjYtNDMuNXpNMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyYzAgODIuNSA0My40IDE0Ny43IDEyMy45IDE3Ni4yYy0xMS4xIDEzLjktMTkuNCAzMC4zLTIzLjkgNDguMUMxMjcuNiA0OTcuNCAxNDIuMyA1MTIgMTYwIDUxMkgzNTJjMTcuNyAwIDMyLjQtMTQuNiAyOC4xLTMxLjdjLTQuNS0xNy44LTEyLjgtMzQuMS0yMy45LTQ4LjFDNDM2LjYgNDAzLjcgNDgwIDMzOC41IDQ4MCAyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vc3F1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMGM1IDAgOS44IDIuNCAxMi44IDYuNGMzNC43IDQ2LjMgNzguMSA3NC45IDEzMy41IDExMS41bDAgMCAwIDBjNS4yIDMuNCAxMC41IDcgMTYgMTAuNmMyOC45IDE5LjIgNDUuNyA1MS43IDQ1LjcgODYuMWMwIDI4LjYtMTEuMyA1NC41LTI5LjggNzMuNEgyMjEuOGMtMTguNC0xOS0yOS44LTQ0LjktMjkuOC03My40YzAtMzQuNCAxNi43LTY2LjkgNDUuNy04Ni4xYzUuNC0zLjYgMTAuOC03LjEgMTYtMTAuNmwwIDAgMCAwQzMwOS4xIDgxLjMgMzUyLjUgNTIuNyAzODcuMiA2LjRjMy00IDcuOC02LjQgMTIuOC02LjR6TTI4OCA1MTJWNDQwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djcySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzUyYzAtMTcuNyAxNC4zLTMyIDMyLTMySDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINTYwVjQ0MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY3Mkg0NDhWNDU0YzAtMTktOC40LTM3LTIzLTQ5LjJMNDAwIDM4NGwtMjUgMjAuOEMzNjAuNCA0MTcgMzUyIDQzNSAzNTIgNDU0djU4SDI4OHpNNzAuNCA1LjJjNS43LTQuMyAxMy41LTQuMyAxOS4yIDBsMTYgMTJDMTM5LjggNDIuOSAxNjAgODMuMiAxNjAgMTI2djJIMHYtMkMwIDgzLjIgMjAuMiA0Mi45IDU0LjQgMTcuMmwxNi0xMnpNMCAxNjBIMTYwVjI5Ni42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40VjQ4MGMwIDkuNiAyLjEgMTguNiA1LjggMjYuOGMtNi42IDMuNC0xNCA1LjItMjEuOCA1LjJINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE3NiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vc3F1aXRvTmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OC44IDQ2Mi4zYy03LjktNC0xMS4xLTEzLjYtNy4yLTIxLjVMMTkyIDM4MC4ybDAtNDQuMmMwLTQuMiAxLjctOC4zIDQuNy0xMS4zTDI1NiAyNjUuNFYyNDIuMkwxMzkuMiAzNDRDODcuOCAzOTUuMyAwIDM1OC45IDAgMjg2LjNjMC00MS4xIDMwLjYtNzUuOCA3MS40LTgwLjlsMTU5LjktMjMuOS00OS42LTQxLjNjLTUuMS00LjItNy0xMS4xLTQuOS0xNy40bDEzLjktNDEuNy0yOS01OC4xYy00LTcuOS0uNy0xNy41IDcuMi0yMS41czE3LjUtLjcgMjEuNSA3LjJsMzIgNjRjMS45IDMuOCAyLjIgOC4yIC45IDEyLjJsLTEyLjUgMzcuNkwyNTYgMTYwLjVWMTM3LjljMC0xNC45IDEwLjEtMjcuMyAyMy44LTMxVjYzLjdjMC00LjUgMy43LTguMiA4LjItOC4yczguMiAzLjcgOC4yIDguMlYxMDdjMTMuNyAzLjYgMjMuOCAxNi4xIDIzLjggMzF2MjIuNmw0NS40LTM3LjhMMzUyLjggODUuMWMtMS4zLTQtMS04LjQgLjktMTIuMmwzMi02NGM0LTcuOSAxMy42LTExLjEgMjEuNS03LjJzMTEuMSAxMy42IDcuMiAyMS41bC0yOSA1OC4xIDEzLjkgNDEuN2MyLjEgNi4yIC4xIDEzLjEtNC45IDE3LjRsLTQ5LjYgNDEuMyAxNTkuOSAyMy45YzIyLjUgMi44IDQxLjggMTQuNiA1NC43IDMxLjRjLTIuNyAyLjYtNS4yIDUuNC03LjMgOC42Yy04LjYtMTIuOS0yMy4zLTIxLjUtNDAtMjEuNXMtMzEuNCA4LjUtNDAgMjEuNWMtOC42LTEyLjktMjMuMy0yMS41LTQwLTIxLjVjLTIxLjcgMC00MCAxNC4zLTQ1LjkgMzQuMWMtMTAuNyAzLjItMTkuOCAxMC4xLTI1LjkgMTkuMmwtNDAuMi0zNXYyMy4xbDMyLjQgMzIuNGMtLjMgMi0uNCA0LjEtLjQgNi4yYzAgMTYuNyA4LjUgMzEuNCAyMS41IDQwYy00IDIuNi03LjUgNS45LTEwLjYgOS41TDMyMCAzMTAuNnY1MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnYtNTBsLTMyIDMyIDAgNDEuNGMwIDIuNS0uNiA0LjktMS43IDcuMmwtMzIgNjRjLTQgNy45LTEzLjYgMTEuMS0yMS41IDcuMnpNNTEyIDI1NmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZoNDhWMjcyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINjA4djQ4aDE2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDYwOHY0OGgxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg2MDh2MTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNDgwSDUyOHYxNmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY0ODBINDQ4djE2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjQ4MEg0MDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMTZWNDAwSDQwMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgxNlYzMjBINDAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djE2aDQ4VjI3MmMwLTguOCA3LjItMTYgMTYtMTZ6bTE2IDExMmg0OFYzMjBINTI4djQ4em0wIDgwaDQ4VjQwMEg1Mjh2NDh6TTQ0OCAzMjB2NDhoNDhWMzIwSDQ0OHptMCA4MHY0OGg0OFY0MDBINDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3NxdWl0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjMuNyA1MDUuOWM5LjgtOC45IDEwLjctMjQuMyAyLjEtMzQuM2wtNDIuMS00OSAwLTU0LjdjMC01LjUtMS44LTEwLjgtNS4xLTE1LjFMMzUyIDI2Ni4zbDAtLjNMNDg1LjQgMzg3LjhDNTQyLjQgNDQ3LjYgNjQwIDQwNS4yIDY0MCAzMjAuNmMwLTQ3LjktMzQtODguMy03OS40LTk0LjJsLTE1My0yMy45IDQwLjgtNDAuOWM3LjgtNy44IDkuNC0yMC4xIDMuOS0yOS44TDQyOC41IDkwLjFsMzguMi01MC45YzgtMTAuNiA2LjEtMjUuOS00LjMtMzQuMXMtMjUuMi02LjMtMzMuMiA0LjRsLTQ4IDYzLjljLTUuOSA3LjktNi42IDE4LjYtMS43IDI3LjJMNDAyLjIgMTQwIDM1MiAxOTAuM2wwLTM4LjJjMC0xNC45LTEwLjItMjcuNC0yNC0zMWwwLTU3LjJjMC00LjQtMy42LTgtOC04cy04IDMuNi04IDhsMCA1Ny4yYy0xMy44IDMuNi0yNCAxNi4xLTI0IDMxbDAgMzguMUwyMzcuOCAxNDBsMjIuNi0zOS41YzQuOS04LjYgNC4yLTE5LjMtMS43LTI3LjJsLTQ4LTYzLjljLTgtMTAuNi0yMi44LTEyLjYtMzMuMi00LjRzLTEyLjIgMjMuNS00LjMgMzQuMWwzOC4yIDUwLjktMjMuOSA0MS43Yy01LjUgOS43LTMuOSAyMiAzLjkgMjkuOGw0MC44IDQwLjktMTUzIDIzLjlDMzQgMjMyLjMgMCAyNzIuNyAwIDMyMC42YzAgODQuNiA5Ny42IDEyNyAxNTQuNiA2Ny4xTDI4OCAyNjZsMCAuMy02Ni41IDg2LjRjLTMuMyA0LjMtNS4xIDkuNi01LjEgMTUuMWwwIDU0LjctNDIuMSA0OWMtOC42IDEwLjEtNy43IDI1LjUgMi4xIDM0LjNzMjQuNyA3LjkgMzMuNC0yLjFsNDgtNTUuOWMzLjgtNC40IDUuOS0xMC4yIDUuOS0xNi4xbDAtNTUuNEwyODggMzQ0LjdsMCA2My4xYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02My4xIDI0LjMgMzEuNiAwIDU1LjRjMCA1LjkgMi4xIDExLjcgNS45IDE2LjFsNDggNTUuOWM4LjYgMTAuMSAyMy42IDExIDMzLjQgMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3RvcmN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MCAzMmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg1Ny43bDE2LjQgMzAuM0wyNTYgMTkybC00NS4zLTQ1LjNjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyaDk2Yzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwYzAgMTEtMS4xIDIxLjctMy4yIDMyaDcwLjRjLTIuMS0xMC4zLTMuMi0yMS0zLjItMzJjMC01Mi4yIDI1LTk4LjYgNjMuNy0xMjcuOGwxNS40IDI4LjZDNDAyLjQgMjc2LjMgMzg0IDMxMiAzODQgMzUyYzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4czEyOC01Ny4zIDEyOC0xMjhzLTU3LjMtMTI4LTEyOC0xMjhjLTEzLjUgMC0yNi41IDIuMS0zOC43IDZMNDE4LjIgMTI4SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0NTkuNmMtNy41IDAtMTQuNyAyLjYtMjAuNSA3LjRMMzkxLjcgNzguOWwtMTQtMjZjLTctMTIuOS0yMC41LTIxLTM1LjItMjFIMjgwek00NjIuNyAzMTEuMmwyOC4yIDUyLjJjNi4zIDExLjcgMjAuOSAxNiAzMi41IDkuN3MxNi0yMC45IDkuNy0zMi41bC0yOC4yLTUyLjJjMi4zLS4zIDQuNy0uNCA3LjEtLjRjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjRjMC0xNS41IDUuNS0yOS43IDE0LjctNDAuOHpNMTg3LjMgMzc2Yy05LjUgMjMuNS0zMi41IDQwLTU5LjMgNDBjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMjYuOSAwIDQ5LjkgMTYuNSA1OS4zIDQwaDY2LjRDMjQyLjUgMjY4LjggMTkwLjUgMjI0IDEyOCAyMjRDNTcuMyAyMjQgMCAyODEuMyAwIDM1MnM1Ny4zIDEyOCAxMjggMTI4YzYyLjUgMCAxMTQuNS00NC44IDEyNS44LTEwNEgxODcuM3pNMTI4IDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NC4xIDE3OS4yQzE3My44IDEyNy43IDIyOC42IDk2IDI4OCA5NnMxMTQuMiAzMS43IDE0My45IDgzLjJMNTQwLjQgMzY4YzEyLjMgMjEuMy0zLjEgNDgtMjcuNyA0OEg2My4zYy0yNC42IDAtNDAtMjYuNi0yNy43LTQ4TDE0NC4xIDE3OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3VudGFpbkNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djkyLjFsNzEuNCAxMTguNGMyLjUtMS42IDUuNC0yLjUgOC42LTIuNWgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2aC0zLjVsNzMuOCAxMjIuNGMxMi40IDIwLjYgMTIuOSA0Ni4zIDEuMiA2Ny4zYy0uNCAuOC0uOSAxLjYtMS40IDIuM0g1OTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjQwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDU2OFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NzJINDgwVjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMzNnptMzIgNjRoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNlY4MGMwLTguOCA3LjItMTYgMTYtMTZ6TTM1MiAxNzZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2em0xNjAgOTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINTI4Yy04LjggMC0xNi03LjItMTYtMTZWMjcyem0xNiA4MGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDUyOGMtOC44IDAtMTYtNy4yLTE2LTE2VjM2OGMwLTguOCA3LjItMTYgMTYtMTZ6TTIyNCAxODguOUwyODMuOCAyODhIMjIzbC00OCA2NC0yNC42LTQxLjJMMjI0IDE4OC45em0yOS40LTQ0LjJDMjQ3LjEgMTM0LjMgMjM2IDEyOCAyMjQgMTI4cy0yMy4xIDYuMy0yOS40IDE2LjdMNS4xIDQ1OC45Yy02LjUgMTAuOC02LjcgMjQuMy0uNyAzNS4zUzIyIDUxMiAzNC41IDUxMkg0MTMuNWMxMi41IDAgMjQtNi44IDMwLjEtMTcuOHM1LjgtMjQuNS0uNy0zNS4zTDI1My40IDE0NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3VudGFpblN1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjAgMTYwQTgwIDgwIDAgMSAwIDU2MCAwYTgwIDgwIDAgMSAwIDAgMTYwek01NS45IDUxMkgzODEuMWg3NUg1NzguOWMzMy44IDAgNjEuMS0yNy40IDYxLjEtNjEuMWMwLTExLjItMy4xLTIyLjItOC45LTMxLjhsLTEzMi0yMTYuM0M0OTUgMTk2LjEgNDg3LjggMTkyIDQ4MCAxOTJzLTE1IDQuMS0xOS4xIDEwLjdsLTQ4LjIgNzlMMjg2LjggODFjLTYuNi0xMC42LTE4LjMtMTctMzAuOC0xN3MtMjQuMSA2LjQtMzAuOCAxN0w4LjYgNDI2LjRDMyA0MzUuMyAwIDQ0NS42IDAgNDU2LjFDMCA0ODcgMjUgNTEyIDU1LjkgNTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3VudGFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjMTIuNSAwIDI0LjEgNi40IDMwLjggMTdMNTAzLjQgMzk0LjRjNS42IDguOSA4LjYgMTkuMiA4LjYgMjkuN2MwIDMwLjktMjUgNTUuOS01NS45IDU1LjlINTUuOUMyNSA0ODAgMCA0NTUgMCA0MjQuMWMwLTEwLjUgMy0yMC44IDguNi0yOS43TDIyNS4yIDQ5YzYuNi0xMC42IDE4LjMtMTcgMzAuOC0xN3ptNjUgMTkyTDI1NiAxMjAuNCAxNzYuOSAyNDYuNWwxOC4zIDI0LjRjNi40IDguNSAxOS4yIDguNSAyNS42IDBsMjUuNi0zNC4xYzYtOC4xIDE1LjUtMTIuOCAyNS42LTEyLjhoNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU11Z0hvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OCAwQzc0LjcgMCA2NCAxMC43IDY0IDI0YzAgMzguOSAyMy40IDU5LjQgMzkuMSA3My4xbDEuMSAxQzEyMC41IDExMi4zIDEyOCAxMTkuOSAxMjggMTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0zOC45LTIzLjQtNTkuNC0zOS4xLTczLjFsLTEuMS0xQzExOS41IDQ3LjcgMTEyIDQwLjEgMTEyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0ek0zMiAxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQxNmMwIDUzIDQzIDk2IDk2IDk2SDI4OGM1MyAwIDk2LTQzIDk2LTk2aDE2YzYxLjkgMCAxMTItNTAuMSAxMTItMTEycy01MC4xLTExMi0xMTItMTEySDM1MiAzMnptMzUyIDY0aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDM4NFYyNTZ6TTIyNCAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGMwIDM4LjkgMjMuNCA1OS40IDM5LjEgNzMuMWwxLjEgMUMyMzIuNSAxMTIuMyAyNDAgMTE5LjkgMjQwIDEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMzguOS0yMy40LTU5LjQtMzkuMS03My4xbC0xLjEtMUMyMzEuNSA0Ny43IDIyNCA0MC4xIDIyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTXVnU2F1Y2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQ0OGg2NGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOHMtNTcuMyAxMjgtMTI4IDEyOEg0ODBjMCA1My00MyA5Ni05NiA5NkgxOTJjLTUzIDAtOTYtNDMtOTYtOTZWNjR6TTQ4MCAyMjRoMzJjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRINDgwVjIyNHpNMzIgNDE2SDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTXVzaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk5LjEgNi4zYzguMSA2IDEyLjkgMTUuNiAxMi45IDI1Ljd2NzJWMzY4YzAgNDQuMi00MyA4MC05NiA4MHMtOTYtMzUuOC05Ni04MHM0My04MCA5Ni04MGMxMS4yIDAgMjIgMS42IDMyIDQuNlYxNDdMMTkyIDIyMy44VjQzMmMwIDQ0LjItNDMgODAtOTYgODBzLTk2LTM1LjgtOTYtODBzNDMtODAgOTYtODBjMTEuMiAwIDIyIDEuNiAzMiA0LjZWMjAwIDEyOGMwLTE0LjEgOS4zLTI2LjYgMjIuOC0zMC43bDMyMC05NmM5LjctMi45IDIwLjItMS4xIDI4LjMgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xIDMzLjljMTIuNy00LjYgMjYuOS0uNyAzNS41IDkuNkwzMjAgMzU5LjZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY0NDhjMCAxMy41LTguNCAyNS41LTIxLjEgMzAuMXMtMjYuOSAuNy0zNS41LTkuNkw2NCAxNTIuNFY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjRDMCA1MC41IDguNCAzOC41IDIxLjEgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmFpcmFTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMi42IDQ2LjNjLTcuOC0xMS43LTIyLjQtMTctMzUuOS0xMi45UzY0IDQ5LjkgNjQgNjRWMjU2SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyMEgyMjguMmw5Ny4yIDE0NS44YzcuOCAxMS43IDIyLjQgMTcgMzUuOSAxMi45czIyLjctMTYuNSAyMi43LTMwLjZWMzIwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM4NFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyNTZIMjYyLjVMMTIyLjYgNDYuM3pNMzA1LjEgMzIwSDMyMHYyMi4zTDMwNS4xIDMyMHpNMTg1LjUgMjU2SDEyOFYxNjkuN0wxODUuNSAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5ldHdvcmtXaXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNjRIMzg0djY0SDI1NlY2NHpNMjQwIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djk2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4djMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2djMySDgwYy0yNi41IDAtNDggMjEuNS00OCA0OHY5NmMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyNDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzY4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDE5MlYyODhINDQ4djMySDQwMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2OTZjMCAyNi41IDIxLjUgNDggNDggNDhINTYwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM2OGMwLTI2LjUtMjEuNS00OC00OC00OEg1MTJWMjg4aDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM1MlYxOTJoNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjQwek05NiA0NDhWMzg0SDIyNHY2NEg5NnptMzIwLTY0SDU0NHY2NEg0MTZWMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZXV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTc2YTExMiAxMTIgMCAxIDEgMjI0IDBBMTEyIDExMiAwIDEgMSA4MCAxNzZ6TTIyNCAzNDkuMWM4MS45LTE1IDE0NC04Ni44IDE0NC0xNzMuMUMzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgODYuMyA2Mi4xIDE1OC4xIDE0NCAxNzMuMVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNDkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRIODBjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjQwMGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2Vjk2em02NCAyNHY4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNEgyOTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0SDE4NGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6bTIwOC04YzAgOC44IDcuMiAxNiAxNiAxNmg0OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzODRjLTguOCAwLTE2IDcuMi0xNiAxNnptMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzg0Yy04LjggMC0xNiA3LjItMTYgMTZ6TTE2MCAzMDRjMCA4LjggNy4yIDE2IDE2IDE2SDQzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnptMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZINDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3RFcXVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjkuOCAzNy40YzE0LjcgOS44IDE4LjcgMjkuNyA4LjkgNDQuNEwzMzcuMSAxNDRINDAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI5NC41bC02NCA5Nkg0MDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTg3LjhsLTY1LjIgOTcuN2MtOS44IDE0LjctMjkuNyAxOC43LTQ0LjQgOC45cy0xOC43LTI5LjctOC45LTQ0LjRMMTEwLjkgMzY4SDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDE1My41bDY0LTk2SDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI2MC4ybDY1LjItOTcuN2M5LjgtMTQuNyAyOS43LTE4LjcgNDQuNC04Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vdGRlZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzOTAuM0wxNTMuNSAyNTYgNjQgMTIxLjdWMzkwLjN6TTEwMi41IDQ0OEgyODEuNUwxOTIgMzEzLjcgMTAyLjUgNDQ4em0xMjgtMTkyTDMyMCAzOTAuM1YxMjEuN0wyMzAuNSAyNTZ6TTI4MS41IDY0SDEwMi41TDE5MiAxOTguMyAyODEuNSA2NHpNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBIMzM2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vdGVTdGlja3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjg4VjM2OGMwLTI2LjUgMjEuNS00OCA0OC00OEg0NDhWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTQ0OCAzNTJINDAyLjcgMzM2Yy04LjggMC0xNiA3LjItMTYgMTZ2NjYuN1Y0ODBsMzItMzIgNjQtNjQgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vdGVzTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzNTJWOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRINDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjI5My41YzAgMTctNi43IDMzLjMtMTguNyA0NS4zbC01OC41IDU4LjVjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdIMTYwYy0zNS4zIDAtNjQtMjguNy02NC02NHpNMjcyIDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI1Nmg0OGM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgzMjBWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJ6bTI0IDMzNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxMzZDNjAuOSA1MTIgMCA0NTEuMSAwIDM3NlYxNTJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDIyNGMwIDQ4LjYgMzkuNCA4OCA4OCA4OEgyOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDk2YTE2MCAxNjAgMCAxIDAgMCAzMjAgMTYwIDE2MCAwIDEgMCAwLTMyMHpNNDQ4IDI1NkEyMjQgMjI0IDAgMSAxIDAgMjU2YTIyNCAyMjQgMCAxIDEgNDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9iamVjdEdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDExOS40QzEyLjkgMTA4LjQgMCA4Ny43IDAgNjRDMCAyOC43IDI4LjcgMCA2NCAwYzIzLjcgMCA0NC40IDEyLjkgNTUuNCAzMkg0NTYuNkM0NjcuNiAxMi45IDQ4OC4zIDAgNTEyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAyMy43LTEyLjkgNDQuNC0zMiA1NS40VjM5Mi42YzE5LjEgMTEuMSAzMiAzMS43IDMyIDU1LjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTIzLjcgMC00NC40LTEyLjktNTUuNC0zMkgxMTkuNGMtMTEuMSAxOS4xLTMxLjcgMzItNTUuNCAzMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjExOS40ek00NTYuNiA5NkgxMTkuNGMtNS42IDkuNy0xMy43IDE3LjgtMjMuNCAyMy40VjM5Mi42YzkuNyA1LjYgMTcuOCAxMy43IDIzLjQgMjMuNEg0NTYuNmM1LjYtOS43IDEzLjctMTcuOCAyMy40LTIzLjRWMTE5LjRjLTkuNy01LjYtMTcuOC0xMy43LTIzLjQtMjMuNHpNMTI4IDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjB6TTI1NiAzMjBoMzJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjI0aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPYmplY3RVbmdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDExOS40QzEyLjkgMTA4LjQgMCA4Ny43IDAgNjRDMCAyOC43IDI4LjcgMCA2NCAwYzIzLjcgMCA0NC40IDEyLjkgNTUuNCAzMkgzMjguNkMzMzkuNiAxMi45IDM2MC4zIDAgMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAyMy43LTEyLjkgNDQuNC0zMiA1NS40VjIzMi42YzE5LjEgMTEuMSAzMiAzMS43IDMyIDU1LjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTIzLjcgMC00NC40LTEyLjktNTUuNC0zMkgxMTkuNGMtMTEuMSAxOS4xLTMxLjcgMzItNTUuNCAzMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjExOS40ek0xMTkuNCA5NmMtNS42IDkuNy0xMy43IDE3LjgtMjMuNCAyMy40VjIzMi42YzkuNyA1LjYgMTcuOCAxMy43IDIzLjQgMjMuNEgzMjguNmM1LjYtOS43IDEzLjctMTcuOCAyMy40LTIzLjRWMTE5LjRjLTkuNy01LjYtMTcuOC0xMy43LTIzLjQtMjMuNEgxMTkuNHptMTkyIDM4NGMtMTEuMSAxOS4xLTMxLjcgMzItNTUuNCAzMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjM1Mmg2NHY0MC42YzkuNyA1LjYgMTcuOCAxMy43IDIzLjQgMjMuNEg1MjAuNmM1LjYtOS43IDEzLjctMTcuOCAyMy40LTIzLjRWMjc5LjRjLTkuNy01LjYtMTcuOC0xMy43LTIzLjQtMjMuNGgtNDZjLTUuNC0xNS40LTE0LjYtMjguOS0yNi41LTM5LjZWMTkyaDcyLjZjMTEuMS0xOS4xIDMxLjctMzIgNTUuNC0zMmMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDIzLjctMTIuOSA0NC40LTMyIDU1LjRWMzkyLjZjMTkuMSAxMS4xIDMyIDMxLjcgMzIgNTUuNGMwIDM1LjMtMjguNyA2NC02NCA2NGMtMjMuNyAwLTQ0LjQtMTIuOS01NS40LTMySDMxMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPaWxDYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJ2MzJIMTQ0IDk2IDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHY2NC44YzAgMTkgMTEuMiAzNi4yIDI4LjUgNDMuOWw2Ny41IDMwVjM2OGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MDMuMWMxOC40IDAgMzUuOC03LjkgNDgtMjEuN0w2MzMuNSAxODcuN2MxMi4zLTEzLjktLjMtMzUuNC0xOC40LTMxLjVMNDQ4IDE5MmwtNTAuNS0yNS4yYy04LjktNC40LTE4LjctNi44LTI4LjYtNi44SDI4OFYxMjhoMzJ6TTk2IDIwOHY4Ni4xTDQ4IDI3Mi44VjIwOEg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2lsV2VsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjguMyA2MS4zYy0xMS40LTQyLjctNTUuMy02OC05OC01Ni42TDQxNC45IDguOEMzOTcuOCAxMy40IDM4Ny43IDMxIDM5Mi4zIDQ4bDI0LjUgOTEuNEwzMDguNSAxNjcuNWwtNi4zLTE4LjFDMjk3LjcgMTM2LjYgMjg1LjYgMTI4IDI3MiAxMjhzLTI1LjcgOC42LTMwLjIgMjEuNGwtMTMuNiAzOUw5NiAyMjIuNlYxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWNDQ4SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MDYuN0wzNDAgMjU3LjVsLTYyLjIgMTYuMUwzMDUuMyAzNTJIMjM4LjdMMjY1IDI3N2wtNzQuNiAxOS4zTDEzNy4zIDQ0OEg5NlYyODguOGwzMzcuNC04Ny41IDI1LjIgOTRjNC42IDE3LjEgMjIuMSAyNy4yIDM5LjIgMjIuNmwxNS41LTQuMWM0Mi43LTExLjQgNjgtNTUuMyA1Ni42LTk4TDUyOC4zIDYxLjN6TTIwNS4xIDQ0OGwxMS4yLTMySDMyNy43bDExLjIgMzJIMjA1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3OS4zIDQuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTE2IDE2Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNmwxNiAxNmM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwxNi0xNmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTYtMTZ6TTI4MSA2Ni43Yy0yLjItMS41LTQuOS0yLjUtNy43LTIuN2MtLjYgMC0xLjMtLjEtMS45IDBjLTMuOSAuMi03LjQgMS43LTEwLjEgNC4yYy0uOSAuOC0xLjYgMS43LTIuMyAyLjZjLTEuNyAyLjQtMi43IDUuMy0yLjkgOC41YzAgLjcgMCAxLjQgMCAyLjFjLjIgMi4yIC45IDQuMyAxLjkgNi4ybC4zIC42Yy4zIC42IC44IDEuNCAxLjQgMi40YzEuMiAyIDIuOSA0LjggNS4xIDguMmM0LjQgNi43IDExLjEgMTUuNSAyMCAyNC40QzMwMi40IDE0MS4xIDMzMC4zIDE2MCAzNjggMTYwYzMxLjIgMCA1Ni42LTEwLjQgNzMuOS0yMC4yYzguNy01IDE1LjYtOS45IDIwLjQtMTMuOGMyLjQtMS45IDQuMy0zLjYgNS43LTQuOWMuNy0uNiAxLjMtMS4yIDEuNy0xLjZsLjYtLjUgLjEtLjEgLjEtLjEgMCAwIDAgMGM1LjktNS44IDkuNS0xMy45IDkuNS0yMi44YzAtMTcuNy0xNC4zLTMyLTMyLTMyYy04LjcgMC0xNi43IDMuNS0yMi40IDkuMmMtLjEgLjEtLjIgLjItLjUgLjRjLS41IC41LTEuNSAxLjMtMi44IDIuNGMtMi43IDIuMi02LjggNS4yLTEyLjEgOC4yQzM5OS40IDkwLjQgMzg0LjggOTYgMzY4IDk2Yy0yMC44IDAtNDIuNC03LTU5LjUtMTQuNmMtOC40LTMuNy0xNS40LTcuNS0yMC4zLTEwLjNjLTIuNC0xLjQtNC4zLTIuNS01LjYtMy4zYy0uNi0uNC0xLjEtLjctMS40LS45bC0uMy0uMnpNMTE1LjIgMTY5LjZjOC02IDE3LjktOS42IDI4LjgtOS42YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDEwOS44Yy03LjYgMC0xMy44IDYuMi0xMy44IDEzLjhjMCAxLjUgLjIgMi45IC43IDQuNGw4IDI0YzQuNCAxMy4xIDE2LjYgMjEuOSAzMC40IDIxLjlIMTQ0aDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0Yy01MC44IDAtODIuNy0yMS41LTEwMi4yLTQyLjhjLTkuOS0xMC44LTE2LjYtMjEuNi0yMC45LTI5LjdjLTIuMS00LTMuNi03LjMtNC41LTkuNmMtLjUtMS4xLS44LTItMS0yLjVsLS4yLS41Yy0uMy0uOS0uNy0xLjgtMS4xLTIuNmMtMS4yLTIuMi0yLjgtNC00LjctNS40Yy0xLjktMS40LTQuMS0yLjMtNi41LTIuOGMtMS40LS4zLTIuOS0uMy00LjQtLjJjLTIuNSAuMi00LjggMS02LjggMi4zYy0xLjEgLjctMi4yIDEuNS0zLjEgMi41Yy0yLjQgMi41LTQuMSA1LjgtNC41IDkuNWMtLjEgLjYtLjEgMS4xLS4xIDEuN2MwIDAgMCAwIDAgMGMwIC44IC4xIDEuNyAuMiAyLjVsMCAuMWMwIC4zIC4xIC44IC4yIDEuM2MuMiAxLjEgLjQgMi43IC44IDQuNmMuOCAzLjkgMiA5LjQgMy45IDE1LjljMy44IDEzIDEwLjMgMzAuNCAyMS4zIDQ4QzQ4LjcgNDc2LjIgODkuNCA1MTIgMTYwIDUxMmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGMwLTIzLjMtNi4yLTQ1LjItMTcuMS02NGgyMi42YzI1LjUgMCA0OS45LTEwLjEgNjcuOS0yOC4xbDI2LjUtMjYuNWM2LTYgMTQuMS05LjQgMjIuNi05LjRINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMyYy0yNS43IDAtNDEuNC0xMi41LTUxLjItMjUuNmMtNS02LjctOC40LTEzLjQtMTAuNS0xOC42Yy0xLjEtMi41LTEuOC00LjYtMi4yLTZjLS4yLS43LS40LTEuMi0uNS0xLjVsLS4xLS4yYy0uMy0xLjMtLjgtMi42LTEuNS0zLjhjLTEuMS0yLTIuNi0zLjgtNC40LTUuMWMtMi43LTItNi0zLjItOS42LTMuMmwtLjIgMGMtOCAuMS0xNC42IDYuMS0xNS42IDEzLjlsMCAwYzAgLjMtLjEgLjYtLjIgMS4xYy0uMSAuOS0uMyAyLjEtLjQgMy42Yy0uMyAzLS42IDcuMy0uNiAxMi40YzAgMTAuMSAxLjEgMjMuOSA1LjggMzguMWM0LjggMTQuMyAxMy40IDI5LjMgMjguNiA0MC43QzM2OC43IDQ3My4zIDM4OS4zIDQ4MCA0MTYgNDgwYzUzIDAgOTYtNDMgOTYtOTZWMjg4YzAtNTMtNDMtOTYtOTYtOTZoLTUuNWMtMjUuNSAwLTQ5LjkgMTAuMS02Ny45IDI4LjFsLTI2LjUgMjYuNWMtNiA2LTE0LjEgOS40LTIyLjYgOS40SDI0NS4yYzYuOS0xNC41IDEwLjgtMzAuOCAxMC44LTQ4YzAtNjEuOS01MC4xLTExMi0xMTItMTEyYy0yNS4yIDAtNDguNSA4LjMtNjcuMiAyMi40Yy0xNC4xIDEwLjYtMTcgMzAuNy02LjQgNDQuOHMzMC43IDE3IDQ0LjggNi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODEuNSAxOTcuMWwxMi45IDYuNGM1LjkgMyAxMi40IDQuNSAxOS4xIDQuNWMyMy41IDAgNDIuNi0xOS4xIDQyLjYtNDIuNlYxNDRjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NHYyMS40YzAgMjMuNSAxOS4xIDQyLjYgNDIuNiA0Mi42YzYuNiAwIDEzLjEtMS41IDE5LjEtNC41bDEyLjktNi40IDguNC00LjJMMTM1LjEgMTg1Yy00LjUtMy03LjEtOC03LjEtMTMuM1YxNjhjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjR2My43YzAgNS4zLTIuNyAxMC4zLTcuMSAxMy4zbC0xMS44IDcuOSA4LjQgNC4yem0tOC42IDQ5LjRMMTYwIDI0MGwtMTIuOSA2LjRjLTEyLjYgNi4zLTI2LjUgOS42LTQwLjUgOS42Yy0zLjYgMC03LjEtLjItMTAuNi0uNnYuNmMwIDM1LjMgMjguNyA2NCA2NCA2NGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODRWMzM2IDMyMGMwLTIzLjcgMTIuOS00NC40IDMyLTU1LjRjOS40LTUuNCAyMC4zLTguNiAzMi04LjZWMjQwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMiAxNiA0OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIwNC4zYzAtNDguMi0zMC44LTkxLTc2LjYtMTA2LjNsLTguNS0yLjhjLTgtMi43LTEyLjYtMTEuMS0xMC40LTE5LjNzMTAuMy0xMy4yIDE4LjYtMTEuNmwxOS45IDRDNTc2IDg2LjEgNjQwIDE2NC4yIDY0MCAyNTQuOWwwIDEuMWgwYzAgMTIzLjctMTAwLjMgMjI0LTIyNCAyMjRoLTEuMUgyNTZoLS42QzEzMiA0ODAgMzIgMzgwIDMyIDI1Ni42VjI1NiAyMTYuOGMtMTAuMS0xNC42LTE2LTMyLjMtMTYtNTEuNFYxNDRsMC0xLjRDNi43IDEzOS4zIDAgMTMwLjUgMCAxMjBjMC0xMy4zIDEwLjctMjQgMjQtMjRoMi44QzQ0LjggNTguMiA4My4zIDMyIDEyOCAzMmg2NGM0NC43IDAgODMuMiAyNi4yIDEwMS4yIDY0SDI5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNGMwIDEwLjUtNi43IDE5LjMtMTYgMjIuNmwwIDEuNHYyMS40YzAgMS40IDAgMi44LS4xIDQuM2MxMi02LjIgMjUuNy05LjYgNDAuMS05LjZoOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmgtOGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2OGg1Ni40Yy0xNS4yIDE3LTI0LjQgMzkuNC0yNC40IDY0SDMyMGMtNDIuMyAwLTc4LjItMjcuNC05MS02NS4zYy01LjEgLjktMTAuMyAxLjMtMTUuNiAxLjNjLTE0LjEgMC0yNy45LTMuMy00MC41LTkuNnpNOTYgMTI4YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptMTEyIDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU91dGRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMTkyIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnptMzIgOTZINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpNMCA0NDhjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNLjIgMjY4LjZjLTguMi02LjQtOC4yLTE4LjkgMC0yNS4zbDEwMS45LTc5LjNjMTAuNS04LjIgMjUuOC0uNyAyNS44IDEyLjZWMzM1LjNjMCAxMy4zLTE1LjMgMjAuOC0yNS44IDEyLjZMLjIgMjY4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmg5NmM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MHMtNzEuNiAxNjAtMTYwIDE2MEg2NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMjAgOTZ6TTY0IDI4OGg5NmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05Nkg2NFYyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFYzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOHptNjQgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTgwIDMyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg4MHptMTM2IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWludFJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgzNTJjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0xNjAgMzUyYzAtMTcuNyAxNC4zLTMyIDMyLTMyVjMwNGMwLTQ0LjIgMzUuOC04MCA4MC04MEg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwIDY5LjVjMzcuMyAxMy4yIDY0IDQ4LjcgNjQgOTAuNXYzMmMwIDUzLTQzIDk2LTk2IDk2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFpbnRicnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzkuMyAzNjcuMWMyNy4zLTMuOSA1MS45LTE5LjQgNjcuMi00Mi45TDU2OC4yIDc0LjFjMTIuNi0xOS41IDkuNC00NS4zLTcuNi02MS4yUzUxNy43LTQuNCA0OTkuMSA5LjZMMjYyLjQgMTg3LjJjLTI0IDE4LTM4LjIgNDYuMS0zOC40IDc2LjFMMzM5LjMgMzY3LjF6bS0xOS42IDI1LjRsLTExNi0xMDQuNEMxNDMuOSAyOTAuMyA5NiAzMzkuNiA5NiA0MDBjMCAzLjkgLjIgNy44IC42IDExLjZDOTguNCA0MjkuMSA4Ni40IDQ0OCA2OC44IDQ0OEg2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgyMDhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJjMC0yLjUtLjEtNS0uMi03LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhbGV0dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDI1NmMwIC45IDAgMS44IDAgMi43Yy0uNCAzNi41LTMzLjYgNjEuMy03MC4xIDYxLjNIMzQ0Yy0yNi41IDAtNDggMjEuNS00OCA0OGMwIDMuNCAuNCA2LjcgMSA5LjljMi4xIDEwLjIgNi41IDIwIDEwLjggMjkuOWM2LjEgMTMuOCAxMi4xIDI3LjUgMTIuMSA0MmMwIDMxLjgtMjEuNiA2MC43LTUzLjQgNjJjLTMuNSAuMS03IC4yLTEwLjYgLjJDMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZTMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NnpNMTI4IDI4OGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0wLTk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMjg4IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTk2IDk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFsbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHY2NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg5NiAzMjAgNTQ0aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDU3NlYzODRoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINTQ0IDMyMCA5NiAzMnptOTYgNjRIMjg4djY0SDEyOFYzODR6bTIyNCAwSDUxMnY2NEgzNTJWMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYW5vcmFtYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NS42IDMyQzIwLjQgMzIgMCA1Mi40IDAgNzcuNlY0MzQuNEMwIDQ1OS42IDIwLjQgNDgwIDQ1LjYgNDgwYzUuMSAwIDEwLS44IDE0LjctMi40Qzc0LjYgNDcyLjggMTc3LjYgNDQwIDMyMCA0NDBzMjQ1LjQgMzIuOCAyNTkuNiAzNy42YzQuNyAxLjYgOS43IDIuNCAxNC43IDIuNGMyNS4yIDAgNDUuNi0yMC40IDQ1LjYtNDUuNlY3Ny42QzY0MCA1Mi40IDYxOS42IDMyIDU5NC40IDMyYy01IDAtMTAgLjgtMTQuNyAyLjRDNTY1LjQgMzkuMiA0NjIuNCA3MiAzMjAgNzJTNzQuNiAzOS4yIDYwLjQgMzQuNEM1NS42IDMyLjggNTAuNyAzMiA0NS42IDMyek05NiAxNjBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMjcyIDBjNy45IDAgMTUuNCAzLjkgMTkuOCAxMC41TDUxMi4zIDM1M2M1LjQgOCA1LjYgMTguNCAuNCAyNi41cy0xNC43IDEyLjMtMjQuMiAxMC43QzQ0Mi43IDM4Mi40IDM4NS4yIDM3NiAzMjAgMzc2Yy02NS42IDAtMTIzLjQgNi41LTE2OS4zIDE0LjRjLTkuOCAxLjctMTkuNy0yLjktMjQuNy0xMS41cy00LjMtMTkuNCAxLjktMjcuMkwxOTcuMyAyNjVjNC42LTUuNyAxMS40LTkgMTguNy05czE0LjIgMy4zIDE4LjcgOWwyNi40IDMzLjEgODctMTI3LjZjNC41LTYuNiAxMS45LTEwLjUgMTkuOC0xMC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXBlclBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OC4xIDUuNmMxMC4xIDcgMTUuNCAxOS4xIDEzLjUgMzEuMmwtNjQgNDE2Yy0xLjUgOS43LTcuNCAxOC4yLTE2IDIzcy0xOC45IDUuNC0yOCAxLjZMMjg0IDQyNy43bC02OC41IDc0LjFjLTguOSA5LjctMjIuOSAxMi45LTM1LjIgOC4xUzE2MCA0OTMuMiAxNjAgNDgwVjM5Ni40YzAtNCAxLjUtNy44IDQuMi0xMC43TDMzMS44IDIwMi44YzUuOC02LjMgNS42LTE2LS40LTIycy0xNS43LTYuNC0yMi0uN0wxMDYgMzYwLjggMTcuNyAzMTYuNkM3LjEgMzExLjMgLjMgMzAwLjcgMCAyODguOXM1LjktMjIuOCAxNi4xLTI4LjdsNDQ4LTI1NmMxMC43LTYuMSAyMy45LTUuNSAzNCAxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhcGVyY2xpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjQuMiA4My44Yy0yNC40LTI0LjQtNjQtMjQuNC04OC40IDBsLTE4NCAxODRjLTQyLjEgNDIuMS00Mi4xIDExMC4zIDAgMTUyLjRzMTEwLjMgNDIuMSAxNTIuNCAwbDE1Mi0xNTJjMTAuOS0xMC45IDI4LjctMTAuOSAzOS42IDBzMTAuOSAyOC43IDAgMzkuNmwtMTUyIDE1MmMtNjQgNjQtMTY3LjYgNjQtMjMxLjYgMHMtNjQtMTY3LjYgMC0yMzEuNmwxODQtMTg0YzQ2LjMtNDYuMyAxMjEuMy00Ni4zIDE2Ny42IDBzNDYuMyAxMjEuMyAwIDE2Ny42bC0xNzYgMTc2Yy0yOC42IDI4LjYtNzUgMjguNi0xMDMuNiAwcy0yOC42LTc1IDAtMTAzLjZsMTQ0LTE0NGMxMC45LTEwLjkgMjguNy0xMC45IDM5LjYgMHMxMC45IDI4LjcgMCAzOS42bC0xNDQgMTQ0Yy02LjcgNi43LTYuNyAxNy43IDAgMjQuNHMxNy43IDYuNyAyNC40IDBsMTc2LTE3NmMyNC40LTI0LjQgMjQuNC02NCAwLTg4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhcmFjaHV0ZUJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODMuNSAxOTJjLjMtNS4zIC41LTEwLjYgLjUtMTZjMC01MS0xNS45LTk2LTQwLjItMTI3LjZDMzE5LjUgMTYuOSAyODguMiAwIDI1NiAwcy02My41IDE2LjktODcuOCA0OC40QzE0My45IDgwIDEyOCAxMjUgMTI4IDE3NmMwIDUuNCAuMiAxMC43IC41IDE2SDI0MFYzMjBIMjA4Yy03IDAtMTMuNyAxLjUtMTkuNyA0LjJMNjguMiAxOTJIOTYuNWMtLjMtNS4zLS41LTEwLjYtLjUtMTZjMC02NCAyMi4yLTEyMS4yIDU3LjEtMTU5LjNDNjIgNDkuMyAxOC42IDEyMi42IDQuMiAxNzMuNkMxLjUgMTgzLjEgOSAxOTIgMTguOSAxOTJoNkwxNjUuMiAzNDYuM2MtMy4zIDYuNS01LjIgMTMuOS01LjIgMjEuN3Y5NmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OFYzNjhjMC03LjgtMS45LTE1LjItNS4yLTIxLjdMNDg3LjEgMTkyaDZjOS45IDAgMTcuNC04LjkgMTQuNy0xOC40QzQ5My40IDEyMi42IDQ1MCA0OS4zIDM1OC45IDE2LjdDMzkzLjggNTQuOCA0MTYgMTEyLjEgNDE2IDE3NmMwIDUuNC0uMiAxMC43LS41IDE2aDI4LjNMMzIzLjcgMzI0LjJjLTYtMi43LTEyLjctNC4yLTE5LjctNC4ySDI3MlYxOTJIMzgzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhcmFncmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzJoNjRINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NGwwIDM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTM1MkgyODhWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxOTJjLTg4LjQgMC0xNjAtNzEuNi0xNjAtMTYwczcxLjYtMTYwIDE2MC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhc3Nwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0xODMgMjc4LjhjLTI3LjktMTMuMi00OC40LTM5LjQtNTMuNy03MC44aDM5LjFjMS42IDMwLjQgNy43IDUzLjggMTQuNiA3MC44em00MS4zIDkuMmwtLjMgMC0uMyAwYy0yLjQtMy41LTUuNy04LjktOS4xLTE2LjVjLTYtMTMuNi0xMi40LTM0LjMtMTQuMi02My41aDQ3LjFjLTEuOCAyOS4yLTguMSA0OS45LTE0LjIgNjMuNWMtMy40IDcuNi02LjcgMTMtOS4xIDE2LjV6bTQwLjctOS4yYzYuOC0xNy4xIDEyLjktNDAuNCAxNC42LTcwLjhoMzkuMWMtNS4zIDMxLjQtMjUuOCA1Ny42LTUzLjcgNzAuOHpNMjc5LjYgMTc2Yy0xLjYtMzAuNC03LjctNTMuOC0xNC42LTcwLjhjMjcuOSAxMy4yIDQ4LjQgMzkuNCA1My43IDcwLjhIMjc5LjZ6TTIyMy43IDk2bC4zIDAgLjMgMGMyLjQgMy41IDUuNyA4LjkgOS4xIDE2LjVjNiAxMy42IDEyLjQgMzQuMyAxNC4yIDYzLjVIMjAwLjVjMS44LTI5LjIgOC4xLTQ5LjkgMTQuMi02My41YzMuNC03LjYgNi43LTEzIDkuMS0xNi41ek0xODMgMTA1LjJjLTYuOCAxNy4xLTEyLjkgNDAuNC0xNC42IDcwLjhIMTI5LjNjNS4zLTMxLjQgMjUuOC01Ny42IDUzLjctNzAuOHpNMzUyIDE5MkExMjggMTI4IDAgMSAwIDk2IDE5MmExMjggMTI4IDAgMSAwIDI1NiAwek0xMTIgMzg0Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDMzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhc3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAwYy0yMy43IDAtNDQuNCAxMi45LTU1LjQgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MFY0MDBjMCAyNi41IDIxLjUgNDggNDggNDhIMTkyVjE3NmMwLTQ0LjIgMzUuOC04MCA4MC04MGg0OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgyMTUuNEMyMDQuNCAxMi45IDE4My43IDAgMTYwIDB6TTI3MiAxMjhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQ0OHYxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0NjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjQzLjljMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOWwtNjcuOS02Ny45Yy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUgzMjAgMjcyek0xNjAgNDBhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCA2NEMyMS41IDY0IDAgODUuNSAwIDExMlY0MDBjMCAyNi41IDIxLjUgNDggNDggNDhIODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4em0xOTIgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWNDAwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OEgyNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjYuNSA5Mi45YzE0LjMgNDIuOS0uMyA4Ni4yLTMyLjYgOTYuOHMtNzAuMS0xNS42LTg0LjQtNTguNXMuMy04Ni4yIDMyLjYtOTYuOHM3MC4xIDE1LjYgODQuNCA1OC41ek0xMDAuNCAxOTguNmMxOC45IDMyLjQgMTQuMyA3MC4xLTEwLjIgODQuMXMtNTkuNy0uOS03OC41LTMzLjNTLTIuNyAxNzkuMyAyMS44IDE2NS4zczU5LjcgLjkgNzguNSAzMy4zek02OS4yIDQwMS4yQzEyMS42IDI1OS45IDIxNC43IDIyNCAyNTYgMjI0czEzNC40IDM1LjkgMTg2LjggMTc3LjJjMy42IDkuNyA1LjIgMjAuMSA1LjIgMzAuNXYxLjZjMCAyNS44LTIwLjkgNDYuNy00Ni43IDQ2LjdjLTExLjUgMC0yMi45LTEuNC0zNC00LjJsLTg4LTIyYy0xNS4zLTMuOC0zMS4zLTMuOC00Ni42IDBsLTg4IDIyYy0xMS4xIDIuOC0yMi41IDQuMi0zNCA0LjJDODQuOSA0ODAgNjQgNDU5LjEgNjQgNDMzLjN2LTEuNmMwLTEwLjQgMS42LTIwLjggNS4yLTMwLjV6TTQyMS44IDI4Mi43Yy0yNC41LTE0LTI5LjEtNTEuNy0xMC4yLTg0LjFzNTQtNDcuMyA3OC41LTMzLjNzMjkuMSA1MS43IDEwLjIgODQuMXMtNTQgNDcuMy03OC41IDMzLjN6TTMxMC4xIDE4OS43Yy0zMi4zLTEwLjYtNDYuOS01My45LTMyLjYtOTYuOHM1Mi4xLTY5LjEgODQuNC01OC41czQ2LjkgNTMuOSAzMi42IDk2LjhzLTUyLjEgNjkuMS04NC40IDU4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA0NDUuM1YzMjMuNWwtOTQuMyA3Ny4xYzI2LjEgMjIuOCA1OC41IDM4LjcgOTQuMyA0NC43ek04OS4yIDM1MS4xTDIyNCAyNDAuOFY2Ni43QzEzMy4yIDgxLjkgNjQgMTYwLjkgNjQgMjU2YzAgMzQuNiA5LjIgNjcuMSAyNS4yIDk1LjF6bTI5My4xIDQ5LjVMMjg4IDMyMy41VjQ0NS4zYzM1LjctNiA2OC4xLTIxLjkgOTQuMy00NC43em00MC42LTQ5LjVjMTYtMjggMjUuMi02MC41IDI1LjItOTUuMWMwLTk1LjEtNjkuMi0xNzQuMS0xNjAtMTg5LjNWMjQwLjhMNDIyLjggMzUxLjF6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuQ2xpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTMuMyAxOS4zbDM5LjQgMzkuNGMyNSAyNSAyNSA2NS41IDAgOTAuNWwtNTIuMSA1Mi4xIDAgMC0xLTEgMCAwLTE2LTE2LTk2LTk2LTE3LTE3IDUyLjEtNTIuMWMyNS0yNSA2NS41LTI1IDkwLjUgMHpNMjQxIDExNC45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxMDUgMjE3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDE3My4xIDgxYzI4LjEtMjguMSA3My43LTI4LjEgMTAxLjggMEwyODggOTQuMWwxNyAxNyA5NiA5NiAxNiAxNiAxIDEtMTcgMTdMMjI5LjUgNDEyLjVjLTQ4IDQ4LTEwOS4yIDgwLjgtMTc1LjggOTQuMWwtMjUgNWMtNy45IDEuNi0xNi0uOS0yMS43LTYuNnMtOC4xLTEzLjgtNi42LTIxLjdsNS0yNWMxMy4zLTY2LjYgNDYuMS0xMjcuOCA5NC4xLTE3NS44TDI1NC4xIDEyOCAyNDEgMTE0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbkZhbmN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3My41IDI3LjFDMzg4LjUgOS45IDQxMC4yIDAgNDMzIDBjNDMuNiAwIDc5IDM1LjQgNzkgNzljMCAyMi44LTkuOSA0NC42LTI3LjEgNTkuNkwyNzcuNyAzMTlsLTEwLjMtMTAuMy02NC02NEwxOTMgMjM0LjMgMzczLjUgMjcuMXpNMTcwLjMgMjU2LjlsMTAuNCAxMC40IDY0IDY0IDEwLjQgMTAuNC0xOS4yIDgzLjRjLTMuOSAxNy4xLTE2LjkgMzAuNy0zMy44IDM1LjRMMjQuNCA1MTAuM2w5NS40LTk1LjRjMi42IC43IDUuNCAxLjEgOC4zIDEuMWMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmMwIDIuOSAuNCA1LjYgMS4xIDguM0wxLjcgNDg3LjYgNTEuNSAzMTBjNC43LTE2LjkgMTguMy0yOS45IDM1LjQtMzMuOGw4My40LTE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbk5pYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjguNCAxOC4zTDMxMi43IDc0LjEgNDM3LjkgMTk5LjNsNTUuNy01NS43YzIxLjktMjEuOSAyMS45LTU3LjMgMC03OS4yTDQ0Ny42IDE4LjNjLTIxLjktMjEuOS01Ny4zLTIxLjktNzkuMiAwek0yODggOTQuNmwtOS4yIDIuOEwxMzQuNyAxNDAuNmMtMTkuOSA2LTM1LjcgMjEuMi00Mi4zIDQxTDMuOCA0NDUuOGMtMy44IDExLjMtMSAyMy45IDcuMyAzMi40TDE2NC43IDMyNC43Yy0zLTYuMy00LjctMTMuMy00LjctMjAuN2MwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4Yy03LjQgMC0xNC40LTEuNy0yMC43LTQuN0wzMy43IDUwMC45YzguNiA4LjMgMjEuMSAxMS4yIDMyLjQgNy4zbDI2NC4zLTg4LjZjMTkuNy02LjYgMzUtMjIuNCA0MS00Mi4zbDQzLjItMTQ0LjEgMi44LTkuMkwyODggOTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuUnVsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY5LjMgMTkuM2wyMy40IDIzLjRjMjUgMjUgMjUgNjUuNSAwIDkwLjVsLTU2LjQgNTYuNEwzMjIuMyA3NS43bDU2LjQtNTYuNGMyNS0yNSA2NS41LTI1IDkwLjUgMHpNNDQuOSAzNTMuMkwyOTkuNyA5OC4zIDQxMy43IDIxMi4zIDE1OC44IDQ2Ny4xYy02LjcgNi43LTE1LjEgMTEuNi0yNC4yIDE0LjJsLTEwNCAyOS43Yy04LjQgMi40LTE3LjQgLjEtMjMuNi02LjFzLTguNS0xNS4yLTYuMS0yMy42bDI5LjctMTA0YzIuNi05LjIgNy41LTE3LjUgMTQuMi0yNC4yek0yNDkuNCAxMDMuNEwxMDMuNCAyNDkuNCAxNiAxNjEuOWMtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3LjlMOTQuMSAxNmMxOC43LTE4LjcgNDkuMS0xOC43IDY3LjkgMGwxOS44IDE5LjhjLS4zIC4zLS43IC42LTEgLjlsLTY0IDY0Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsNjQtNjRjLjMtLjMgLjYtLjcgLjktMWw0NS4xIDQ1LjF6TTQwOC42IDI2Mi42bDQ1LjEgNDUuMWMtLjMgLjMtLjcgLjYtMSAuOWwtNjQgNjRjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw2NC02NGMuMy0uMyAuNi0uNyAuOS0xTDQ5NiAzNTAuMWMxOC43IDE4LjcgMTguNyA0OS4xIDAgNjcuOUw0MTcuOSA0OTZjLTE4LjcgMTguNy00OS4xIDE4LjctNjcuOSAwbC04Ny40LTg3LjRMNDA4LjYgMjYyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlblRvU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS42IDIxLjdjLTIxLjktMjEuOS01Ny4zLTIxLjktNzkuMiAwTDM2Mi4zIDUxLjdsOTcuOSA5Ny45IDMwLjEtMzAuMWMyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw0NzEuNiAyMS43em0tMjk5LjIgMjIwYy02LjEgNi4xLTEwLjggMTMuNi0xMy41IDIxLjlsLTI5LjYgODguOGMtMi45IDguNi0uNiAxOC4xIDUuOCAyNC42czE1LjkgOC43IDI0LjYgNS44bDg4LjgtMjkuNmM4LjItMi43IDE1LjctNy40IDIxLjktMTMuNUw0MzcuNyAxNzIuMyAzMzkuNyA3NC4zIDE3Mi40IDI0MS43ek05NiA2NEM0MyA2NCAwIDEwNyAwIDE2MFY0MTZjMCA1MyA0MyA5NiA5NiA5NkgzNTJjNTMgMCA5Ni00MyA5Ni05NlYzMjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2Mi43IDE5LjNMMzE0LjMgNjcuNyA0NDQuMyAxOTcuN2w0OC40LTQ4LjRjMjUtMjUgMjUtNjUuNSAwLTkwLjVMNDUzLjMgMTkuM2MtMjUtMjUtNjUuNS0yNS05MC41IDB6bS03MSA3MUw1OC42IDMyMy41Yy0xMC40IDEwLjQtMTggMjMuMy0yMi4yIDM3LjRMMSA0ODEuMkMtMS41IDQ4OS43IC44IDQ5OC44IDcgNTA1czE1LjMgOC41IDIzLjcgNi4xbDEyMC4zLTM1LjRjMTQuMS00LjIgMjctMTEuOCAzNy40LTIyLjJMNDIxLjcgMjIwLjMgMjkxLjcgOTAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuY2lsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxMC4zIDIzMWwxMS4zLTExLjMtMzMuOS0zMy45LTYyLjEtNjIuMUwyOTEuNyA4OS44bC0xMS4zIDExLjMtMjIuNiAyMi42TDU4LjYgMzIyLjljLTEwLjQgMTAuNC0xOCAyMy4zLTIyLjIgMzcuNEwxIDQ4MC43Yy0yLjUgOC40LS4yIDE3LjUgNi4xIDIzLjdzMTUuMyA4LjUgMjMuNyA2LjFsMTIwLjMtMzUuNGMxNC4xLTQuMiAyNy0xMS44IDM3LjQtMjIuMkwzODcuNyAyNTMuNyA0MTAuMyAyMzF6TTE2MCAzOTkuNGwtOS4xIDIyLjdjLTQgMy4xLTguNSA1LjQtMTMuMyA2LjlMNTkuNCA0NTJsMjMtNzguMWMxLjQtNC45IDMuOC05LjQgNi45LTEzLjNsMjIuNy05LjF2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyek0zNjIuNyAxOC43TDM0OC4zIDMzLjIgMzI1LjcgNTUuOCAzMTQuMyA2Ny4xbDMzLjkgMzMuOSA2Mi4xIDYyLjEgMzMuOSAzMy45IDExLjMtMTEuMyAyMi42LTIyLjYgMTQuNS0xNC41YzI1LTI1IDI1LTY1LjUgMC05MC41TDQ1My4zIDE4LjdjLTI1LTI1LTY1LjUtMjUtOTAuNSAwem0tNDcuNCAxNjhsLTE0NCAxNDRjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZsMTQ0LTE0NGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlb3BsZUFycm93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NGE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA2NCA2NHpNMjUuOSAyMzMuNEMyOS4zIDE5MS45IDY0IDE2MCAxMDUuNiAxNjBoNDQuOGMyNyAwIDUxIDEzLjQgNjUuNSAzNC4xYy0yLjcgMS45LTUuMiA0LTcuNSA2LjNsLTY0IDY0Yy0yMS45IDIxLjktMjEuOSA1Ny4zIDAgNzkuMkwxOTIgMzkxLjJWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDExMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzQ4LjNjLTI2LjUtOS41LTQ0LjctMzUuOC00Mi4yLTY1LjZsNC4xLTQ5LjN6TTQ0OCA2NGE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA0NDggNjR6TTQzMS42IDIwMC40Yy0yLjMtMi4zLTQuOS00LjQtNy41LTYuM2MxNC41LTIwLjcgMzguNi0zNC4xIDY1LjUtMzQuMWg0NC44YzQxLjYgMCA3Ni4zIDMxLjkgNzkuNyA3My40bDQuMSA0OS4zYzIuNSAyOS44LTE1LjcgNTYuMS00Mi4yIDY1LjZWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ5NmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzkxLjJsNDcuNi00Ny42YzIxLjktMjEuOSAyMS45LTU3LjMgMC03OS4ybC02NC02NHpNMjcyIDI0MHYzMmg5NlYyNDBjMC05LjcgNS44LTE4LjUgMTQuOC0yMi4yczE5LjMtMS43IDI2LjIgNS4ybDY0IDY0YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC02NCA2NGMtNi45IDYuOS0xNy4yIDguOS0yNi4yIDUuMnMtMTQuOC0xMi41LTE0LjgtMjIuMlYzMzZIMjcydjMyYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw2NC02NGM2LjktNi45IDE3LjItOC45IDI2LjItNS4yczE0LjggMTIuNSAxNC44IDIyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlb3BsZUNhcnJ5Qm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDQ4YTQ4IDQ4IDAgMSAxIDk2IDBBNDggNDggMCAxIDEgODAgNDh6bTY0IDE5My43djY1LjFsNTEgNTFjNy4xIDcuMSAxMS44IDE2LjIgMTMuNCAyNi4xbDE1LjIgOTAuOWMyLjkgMTcuNC04LjkgMzMuOS0yNi4zIDM2LjhzLTMzLjktOC45LTM2LjgtMjYuM2wtMTQuMy04NS45TDY2LjggMzIwQzU0LjggMzA4IDQ4IDI5MS43IDQ4IDI3NC43VjE4Ni42YzAtMzIuNCAyNi4yLTU4LjYgNTguNi01OC42YzI0LjEgMCA0Ni41IDEyIDU5LjkgMzJsNDcuNCA3MS4xIDEwLjEgNVYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJIMzg0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjc2LjJsMTAuMS01TDQ3My41IDE2MGMxMy4zLTIwIDM1LjgtMzIgNTkuOS0zMmMzMi40IDAgNTguNiAyNi4yIDU4LjYgNTguNnY4OC4xYzAgMTctNi43IDMzLjMtMTguNyA0NS4zbC03OS40IDc5LjQtMTQuMyA4NS45Yy0yLjkgMTcuNC0xOS40IDI5LjItMzYuOCAyNi4zcy0yOS4yLTE5LjQtMjYuMy0zNi44bDE1LjItOTAuOWMxLjYtOS45IDYuMy0xOSAxMy40LTI2LjFsNTEtNTFWMjQxLjdsLTE5IDI4LjVjLTQuNiA3LTExIDEyLjYtMTguNSAxNi4zbC01OS42IDI5LjhjLTIuNCAxLjMtNC45IDIuMi03LjYgMi44Yy0yLjYgLjYtNS4zIC45LTcuOSAuOEgyNTYuN2MtMi41IC4xLTUtLjItNy41LS43Yy0yLjktLjYtNS42LTEuNi04LjEtM2wtNTkuNS0yOS44Yy03LjUtMy43LTEzLjgtOS40LTE4LjUtMTYuM2wtMTktMjguNXpNMi4zIDQ2OC4xTDUwLjEgMzQ4LjZsNDkuMiA0OS4yLTM3LjYgOTRjLTYuNiAxNi40LTI1LjIgMjQuNC00MS42IDE3LjhTLTQuMyA0ODQuNSAyLjMgNDY4LjF6TTUxMiAwYTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnptNzcuOSAzNDguNmw0Ny44IDExOS41YzYuNiAxNi40LTEuNCAzNS0xNy44IDQxLjZzLTM1LTEuNC00MS42LTE3LjhsLTM3LjYtOTQgNDkuMi00OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MiA4OGE1NiA1NiAwIDEgMSAxMTIgMEE1NiA1NiAwIDEgMSA3MiA4OHpNNjQgMjQ1LjdDNTQgMjU2LjkgNDggMjcxLjggNDggMjg4czYgMzEuMSAxNiA0Mi4zVjI0NS43em0xNDQuNC00OS4zQzE3OC43IDIyMi43IDE2MCAyNjEuMiAxNjAgMzA0YzAgMzQuMyAxMiA2NS44IDMyIDkwLjVWNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzODkuMkMyNi4yIDM3MS4yIDAgMzMyLjcgMCAyODhjMC02MS45IDUwLjEtMTEyIDExMi0xMTJoMzJjMjQgMCA0Ni4yIDcuNSA2NC40IDIwLjN6TTQ0OCA0MTZWMzk0LjVjMjAtMjQuNyAzMi01Ni4yIDMyLTkwLjVjMC00Mi44LTE4LjctODEuMy00OC40LTEwNy43QzQ0OS44IDE4My41IDQ3MiAxNzYgNDk2IDE3NmgzMmM2MS45IDAgMTEyIDUwLjEgMTEyIDExMmMwIDQ0LjctMjYuMiA4My4yLTY0IDEwMS4yVjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkg0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem04LTMyOGE1NiA1NiAwIDEgMSAxMTIgMEE1NiA1NiAwIDEgMSA0NTYgODh6TTU3NiAyNDUuN3Y4NC43YzEwLTExLjMgMTYtMjYuMSAxNi00Mi4zcy02LTMxLjEtMTYtNDIuM3pNMzIwIDMyYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek0yNDAgMzA0YzAgMTYuMiA2IDMxIDE2IDQyLjNWMjYxLjdjLTEwIDExLjMtMTYgMjYuMS0xNiA0Mi4zem0xNDQtNDIuM3Y4NC43YzEwLTExLjMgMTYtMjYuMSAxNi00Mi4zcy02LTMxLjEtMTYtNDIuM3pNNDQ4IDMwNGMwIDQ0LjctMjYuMiA4My4yLTY0IDEwMS4yVjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwNS4yYy0zNy44LTE4LTY0LTU2LjUtNjQtMTAxLjJjMC02MS45IDUwLjEtMTEyIDExMi0xMTJoMzJjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlb3BsZUxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYwIDcyYTQwIDQwIDAgMSAwIC04MCAwIDQwIDQwIDAgMSAwIDgwIDB6TTE0NCAyMDhhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek0zMiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyek00OTYgMjA4YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHpNMjAwIDMxMy41bDI2LjkgNDkuOWM2LjMgMTEuNyAyMC44IDE2IDMyLjUgOS44czE2LTIwLjggOS44LTMyLjVsLTM2LjMtNjcuNWMxLjctMS43IDMuMi0zLjYgNC4zLTUuOEwyNjQgMjE3LjVWMjcyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIxNy41bDI2LjkgNDkuOWMxLjIgMi4yIDIuNiA0LjEgNC4zIDUuOGwtMzYuMyA2Ny41Yy02LjMgMTEuNy0xLjkgMjYuMiA5LjggMzIuNXMyNi4yIDEuOSAzMi41LTkuOEw0NDAgMzEzLjVWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMxMy41bDI2LjkgNDkuOWM2LjMgMTEuNyAyMC44IDE2IDMyLjUgOS44czE2LTIwLjggOS44LTMyLjVsLTM3LjktNzAuM2MtMTUuMy0yOC41LTQ1LjEtNDYuMy03Ny41LTQ2LjNINDg2LjJjLTE2LjMgMC0zMS45IDQuNS00NS40IDEyLjZsLTMzLjYtNjIuM2MtMTUuMy0yOC41LTQ1LjEtNDYuMy03Ny41LTQ2LjNIMzEwLjJjLTMyLjQgMC02Mi4xIDE3LjgtNzcuNSA0Ni4zbC0zMy42IDYyLjNjLTEzLjUtOC4xLTI5LjEtMTIuNi00NS40LTEyLjZIMTM0LjJjLTMyLjQgMC02Mi4xIDE3LjgtNzcuNSA0Ni4zTDE4LjkgMzQwLjZjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDg4IDMxMy41VjM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVvcGxlUHVsbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA5NkE0OCA0OCAwIDEgMCA4MCAwYTQ4IDQ4IDAgMSAwIDAgOTZ6TTY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyYzkuOCAwIDE4LjUtNC40IDI0LjQtMTEuMkw4MC40IDQ4NS4zYzIuOSAxNy40IDE5LjQgMjkuMiAzNi44IDI2LjNzMjkuMi0xOS40IDI2LjMtMzYuOEwxMjMuMSAzNTJoMTUuN2wzMCAxMzQuOWMzLjggMTcuMyAyMC45IDI4LjEgMzguMiAyNC4zczI4LjEtMjAuOSAyNC4zLTM4LjJsLTU3LjMtMjU4IDExNi4zIDUzLjhjLjUgLjMgMS4xIC41IDEuNiAuN2M4LjYgMy42IDE4IDMuMSAyNS45LS43YzMuNC0xLjYgNi42LTMuOSA5LjMtNi43YzMuMS0zLjIgNS41LTcgNy4xLTExLjRjLjEtLjMgLjItLjcgLjMtMWwyLjUtNy41YzUuNy0xNy4xIDE4LjMtMzAuOSAzNC43LTM4LjJsOC0zLjVjMS0uNCAxLjktLjggMi45LTEuMmwtMTYuOSA2My41Yy01LjYgMjEuMS0uMSA0My42IDE0LjcgNTkuN2w3MC43IDc3LjEgMjIgODguMWM0LjMgMTcuMSAyMS43IDI3LjYgMzguOCAyMy4zczI3LjYtMjEuNyAyMy4zLTM4LjhsLTIzLTkyLjFjLTEuOS03LjgtNS44LTE0LjktMTEuMi0yMC44bC00OS41LTU0IDE5LjMtNjUuNSA5LjYgMjNjNC40IDEwLjYgMTIuNSAxOS4zIDIyLjggMjQuNWwyNi43IDEzLjNjMTUuOCA3LjkgMzUgMS41IDQyLjktMTQuM3MxLjUtMzUtMTQuMy00Mi45TDUzNyAyMzIuN2wtMTUuMy0zNi44QzUwNC41IDE1NC44IDQ2NC4zIDEyOCA0MTkuNyAxMjhjLTIyLjggMC00NS4zIDQuOC02Ni4xIDE0bC04IDMuNWMtMjQuNCAxMC45LTQ0LjYgMjktNTguMSA1MS42TDE1Ny4zIDEzNi45QzE0NC43IDEzMSAxMzAuOSAxMjggMTE3IDEyOEg2NHpNNDY0IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMzQ5LjcgMzM1LjZsLTI1IDYyLjQtNTkuNCA1OS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDM3Mi4zIDQ0MWM0LjYtNC42IDguMi0xMC4xIDEwLjYtMTYuMWwxNC41LTM2LjItNDAuNy00NC40Yy0yLjUtMi43LTQuOC01LjYtNy04LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlb3BsZVJvYmJlcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4LjIgNTkuMUM0NzguMSA5OS42IDQ0MS43IDEyOCA0MDAgMTI4cy03OC4xLTI4LjQtODguMi02OC45TDMwMyAyNC4yQzI5OC44IDcuMSAyODEuNC0zLjMgMjY0LjIgMVMyMzYuNyAyMi42IDI0MSAzOS44bDguNyAzNC45YzExIDQ0IDQwLjIgNzkuNiA3OC4zIDk5LjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE3NC4zYzM4LjEtMjAgNjcuMy01NS42IDc4LjMtOTkuNkw1NTkgMzkuOGM0LjMtMTcuMS02LjEtMzQuNS0yMy4zLTM4LjhTNTAxLjIgNy4xIDQ5NyAyNC4ybC04LjcgMzQuOXpNNDAwIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNODAgOTZBNDggNDggMCAxIDAgODAgMGE0OCA0OCAwIDEgMCAwIDk2em0tOCAzMmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZsMCAuNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNTJIODhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjUyLjdsMTMgMjAuNWM1LjkgOS4yIDE2LjEgMTQuOSAyNyAxNC45aDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIwOS42bC0zNy40LTU4LjlDMTU3LjYgMTQyIDEzMi4xIDEyOCAxMDQuNyAxMjhINzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlb3BsZVJvb2YgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM1LjUgNGwyODggMTYwYzE1LjQgOC42IDIxIDI4LjEgMTIuNCA0My41cy0yOC4xIDIxLTQzLjUgMTIuNEwzMjAgNjguNiA0Ny41IDIyMGMtMTUuNCA4LjYtMzQuOSAzLTQzLjUtMTIuNHMtMy0zNC45IDEyLjQtNDMuNUwzMDQuNSA0YzkuNy01LjQgMjEuNC01LjQgMzEuMSAwek0zMjAgMTYwYTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHpNMTQ0IDI1NmE0MCA0MCAwIDEgMSAwIDgwIDQwIDQwIDAgMSAxIDAtODB6bTMxMiA0MGE0MCA0MCAwIDEgMSA4MCAwIDQwIDQwIDAgMSAxIC04MCAwek0yMjYuOSA0OTEuNEwyMDAgNDQxLjVWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDEyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQxLjVMNjEuMSA0OTEuNGMtNi4zIDExLjctMjAuOCAxNi0zMi41IDkuOHMtMTYtMjAuOC05LjgtMzIuNWwzNy45LTcwLjNjMTUuMy0yOC41IDQ1LjEtNDYuMyA3Ny41LTQ2LjNoMTkuNWMxNi4zIDAgMzEuOSA0LjUgNDUuNCAxMi42bDMzLjYtNjIuM2MxNS4zLTI4LjUgNDUuMS00Ni4zIDc3LjUtNDYuM2gxOS41YzMyLjQgMCA2Mi4xIDE3LjggNzcuNSA0Ni4zbDMzLjYgNjIuM2MxMy41LTguMSAyOS4xLTEyLjYgNDUuNC0xMi42aDE5LjVjMzIuNCAwIDYyLjEgMTcuOCA3Ny41IDQ2LjNsMzcuOSA3MC4zYzYuMyAxMS43IDEuOSAyNi4yLTkuOCAzMi41cy0yNi4yIDEuOS0zMi41LTkuOEw1NTIgNDQxLjVWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDQ3MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQxLjVsLTI2LjkgNDkuOWMtNi4zIDExLjctMjAuOCAxNi0zMi41IDkuOHMtMTYtMjAuOC05LjgtMzIuNWwzNi4zLTY3LjVjLTEuNy0xLjctMy4yLTMuNi00LjMtNS44TDM3NiAzNDUuNVY0MDBjMCAxNy43LTE0LjMgMzItMzIgMzJIMjk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNDUuNWwtMjYuOSA0OS45Yy0xLjIgMi4yLTIuNiA0LjEtNC4zIDUuOGwzNi4zIDY3LjVjNi4zIDExLjcgMS45IDI2LjItOS44IDMyLjVzLTI2LjIgMS45LTMyLjUtOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXBwZXJIb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI4LjMgM2MxMS42LTYuNCAyNi4yLTIuMyAzMi42IDkuM2w0LjggOC43YzE5LjMgMzQuNyAxOS44IDc1LjcgMy40IDExMEM0OTUuOCAxNTkuNiA1MTIgMTk3LjkgNTEyIDI0MGMwIDE4LjUtMy4xIDM2LjMtOC45IDUyLjhjLTYuMSAxNy4zLTI4LjUgMTYuMy0zNi44LS4xbC0xMS43LTIzLjRjLTQuMS04LjEtMTIuNC0xMy4zLTIxLjUtMTMuM0gzNjBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE1MmMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtMTcuMSAwYy0yMS4zIDAtMzAtMjMuOS0xMC44LTMyLjlDMzA0LjcgODUuNCAzMjcuNyA4MCAzNTIgODBjMjguMyAwIDU0LjggNy4zIDc3LjggMjAuMmM1LjUtMTguMiAzLjctMzguNC02LTU1LjhMNDE5IDM1LjdjLTYuNC0xMS42LTIuMy0yNi4yIDkuMy0zMi42ek0xNzEuMiAzNDUuNUwyNjQgMTYwbDQwIDB2ODBjMCAyNi41IDIxLjUgNDggNDggNDhoNzYuMmwyMy45IDQ3LjhDMzcyLjMgNDQzLjkgMjQ0LjMgNTEyIDEwMy4yIDUxMkg0NC40QzE5LjkgNTEyIDAgNDkyLjEgMCA0NjcuNmMwLTIwLjggMTQuNS0zOC44IDM0LjgtNDMuM2w0OS44LTExLjFjMzcuNi04LjQgNjkuNS0zMy4yIDg2LjctNjcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzQuNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMzIwIDMyMGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwzMjAtMzIwek0xMjggMTI4QTY0IDY0IDAgMSAwIDAgMTI4YTY0IDY0IDAgMSAwIDEyOCAwek0zODQgMzg0YTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQXJyb3dEb3duVG9MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04IDM1MlYzNTJoMTZ2OTZIMTg0em0tNjQgMEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgxNTJoODBINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI2NFYyNTYuOWwyOC42IDQ3LjVjOS4xIDE1LjEgMjguOCAyMCA0My45IDEwLjlzMjAtMjguOCAxMC45LTQzLjlsLTU4LjMtOTdjLTE3LjQtMjguOS00OC42LTQ2LjYtODIuMy00Ni42SDE3Ny4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUwxMjAgMjU2LjlWNDQ4ek00NjQgNjRWMzA2LjdsLTI1LjQtMjUuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsODAgODBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsODAtODBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMNTI4IDMwNi43VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25BcnJvd1VwRnJvbUxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTggMzUyVjM1MmgxNnY5NkgxODR6bS02NCAwSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE1Mmg4MEg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjY0VjI1Ni45bDI4LjYgNDcuNWM5LjEgMTUuMSAyOC44IDIwIDQzLjkgMTAuOXMyMC0yOC44IDEwLjktNDMuOWwtNTguMy05N2MtMTcuNC0yOC45LTQ4LjYtNDYuNi04Mi4zLTQ2LjZIMTc3LjFjLTMzLjcgMC02NC45IDE3LjctODIuMyA0Ni42bC01OC4zIDk3Yy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45TDEyMCAyNTYuOVY0NDh6TTU5OC42IDEyMS40bC04MC04MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTgwIDgwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDQ2NCAxNDEuMyA0NjQgMzg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTQxLjNsMjUuNCAyNS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkJpa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0yNy4yIDY0bC02MS44LTQ4LjhjLTE3LjMtMTMuNi00MS43LTEzLjgtNTkuMS0uM2wtODMuMSA2NC4yYy0zMC43IDIzLjgtMjguNSA3MC44IDQuMyA5MS42TDI4OCAzMDUuMVY0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhjMC0xMC43LTUuMy0yMC43LTE0LjItMjYuNkwyOTUgMjMyLjlsNjAuMy00OC41TDM5NiAyMTdjNS43IDQuNSAxMi43IDcgMjAgN2g2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MjcuMnpNNTYgMzg0YTcyIDcyIDAgMSAxIDE0NCAwQTcyIDcyIDAgMSAxIDU2IDM4NHptMjAwIDBBMTI4IDEyOCAwIDEgMCAwIDM4NGExMjggMTI4IDAgMSAwIDI1NiAwem0xODQgMGE3MiA3MiAwIDEgMSAxNDQgMCA3MiA3MiAwIDEgMSAtMTQ0IDB6bTIwMCAwYTEyOCAxMjggMCAxIDAgLTI1NiAwIDEyOCAxMjggMCAxIDAgMjU2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkJvb3RoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYxOTJoNjRWMzJ6bTMyMCAwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyek0yMjQgNTEyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMyMEgxOTJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyek0zMjAgMGMtOS4zIDAtMTguMSA0LTI0LjIgMTFzLTguOCAxNi4zLTcuNSAyNS41bDMxLjIgMjE4LjZMMjg4LjYgNDA5LjdjLTMuNSAxNy4zIDcuOCAzNC4yIDI1LjEgMzcuN3MzNC4yLTcuOCAzNy43LTI1LjFsLjctMy42YzEuMyAxNi40IDE1LjEgMjkuNCAzMS45IDI5LjRjMTcuNyAwIDMyLTE0LjMgMzItMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMjB6TTExMiA4MEE0OCA0OCAwIDEgMCAxNiA4MGE0OCA0OCAwIDEgMCA5NiAwem0wIDI2MS4zVjI2OS4zbDQuNyA0LjdjOSA5IDIxLjIgMTQuMSAzMy45IDE0LjFIMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE1Ny4zbC00MS42LTQxLjZjLTE0LjMtMTQuMy0zMy44LTIyLjQtNTQtMjIuNEMyNy42IDE2MCAwIDE4Ny42IDAgMjIxLjZ2NTUuN2wwIC45VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGwzMiA0Mi43VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQyMS4zYzAtMTAuNC0zLjQtMjAuNS05LjYtMjguOEwxMTIgMzQxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkJyZWFzdGZlZWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBhODAgODAgMCAxIDEgMCAxNjBBODAgODAgMCAxIDEgMjI0IDB6TTQzNi44IDM4Mi44TDM3My41IDQ2MmMtMTYuNiAyMC43LTQ2LjggMjQuMS02Ny41IDcuNWMtMTcuNi0xNC4xLTIyLjctMzguMS0xMy41LTU3LjdsLS44LS4xYy0zOC45LTUuNi03NC4zLTI1LjEtOTkuNy01NC44VjMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY0OGMwIC44IDAgMS42IC4xIDIuNGwxMDEuNCA1MC43YzIzLjcgMTEuOSAzMy4zIDQwLjcgMjEuNSA2NC40cy00MC43IDMzLjMtNjQuNCAyMS41TDI3LjIgNDI3LjNjLTEuMS0uNS0yLjItMS4xLTMuMy0xLjdjLTQuOS0yLjgtOS4yLTYuNC0xMi42LTEwLjZjLTQuNi01LjQtNy44LTExLjctOS42LTE4LjRjLTMuMy0xMi0xLjktMjUuMiA0LjgtMzYuNmMuNi0xLjEgMS4zLTIuMiAyLTMuMkw3NS42IDI1Ni4xYzI2LjctNDAuMSA3MS43LTY0LjEgMTE5LjgtNjQuMWg3NS4yYzQ2LjUgMCA5MC4xIDIyLjUgMTE3LjIgNjAuM2w1MC43IDcwLjljMi4yIDMgNCA2LjEgNS41IDkuNGMyLjkgNi43IDQuMyAxMy44IDQgMjAuOGMtLjMgMTAuNi00LjIgMjEtMTEuMiAyOS40ek0zMjAgMzMyYTQ0IDQ0IDAgMSAwIC04OCAwIDQ0IDQ0IDAgMSAwIDg4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkJ1cnN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04IDM4NFYzNTJoMTZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjU2LjlsMjguNiA0Ny41YzkuMSAxNS4xIDI4LjggMjAgNDMuOSAxMC45czIwLTI4LjggMTAuOS00My45bC01OC4zLTk3Yy0xNy40LTI4LjktNDguNi00Ni42LTgyLjMtNDYuNkg0NjUuMWMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlMNDA4IDI1Ni45VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyek0xOTAuOSAxOC4xQzE4OC40IDEyIDE4Mi42IDggMTc2IDhzLTEyLjQgNC0xNC45IDEwLjFsLTI5LjQgNzRMNTUuNiA2OC45Yy02LjMtMS45LTEzLjEgLjItMTcuMiA1LjNzLTQuNiAxMi4yLTEuNCAxNy45bDM5LjUgNjkuMUwxMC45IDIwNi40Yy01LjQgMy43LTggMTAuMy02LjUgMTYuN3M2LjcgMTEuMiAxMy4xIDEyLjJsNzguNyAxMi4yTDkwLjYgMzI3Yy0uNSA2LjUgMy4xIDEyLjcgOSAxNS41czEyLjkgMS44IDE3LjgtMi42TDE3NiAyODYuMWw1OC42IDUzLjljNC44IDQuNCAxMS45IDUuNSAxNy44IDIuNnM5LjUtOSA5LTE1LjVsLTUuNi03OS40IDUwLjUtNy44IDI0LjMtNDAuNS01NS4yLTM4TDMxNSA5Mi4yYzMuMy01LjcgMi43LTEyLjgtMS40LTE3LjlzLTEwLjktNy4yLTE3LjItNS4zTDIyMC4zIDkyLjFsLTI5LjQtNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkNhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bS04IDE4Ny4zbDQ3LjQgNTcuMWMxMS4zIDEzLjYgMzEuNSAxNS41IDQ1LjEgNC4yczE1LjUtMzEuNSA0LjItNDUuMWwtNzMuNy04OC45Yy0xOC4yLTIyLTQ1LjMtMzQuNy03My45LTM0LjdIMTc3LjFjLTMzLjcgMC02NC45IDE3LjctODIuMyA0Ni42bC01OC4zIDk3Yy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45TDEyMCAyNTYuOVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNTJoMTZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjM1LjN6TTM1MiAzNzZjMC00LjQgMy42LTggOC04czggMy42IDggOFY0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNzZjMC0zMC45LTI1LjEtNTYtNTYtNTZzLTU2IDI1LjEtNTYgNTZ2OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0di04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DaGFsa2JvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04IDM4NFYzNTJoMTZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTkyaDU2IDY0IDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM4NFY2NEg1NzZWMjU2SDM4NFYyMjRIMzIwdjQ4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgzNjhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djgwSDI0My4xIDE3Ny4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUwxMjAgMjU2LjlWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyem0xMzYgMTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjExLjMtNDMuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNDE2IDM4NS40bC0yOC43LTI4LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsNDAgNDBjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsNzItNzJjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkNpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyek00MzIgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wLTE5MmMtOC44IDAtMTYgNy4yLTE2IDE2djgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQ2lyY2xlTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlMNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw0NC45IDc0LjdjLTE2LjEgMTcuNi0yOC42IDM4LjUtMzYuNiA2MS41Yy0xLjktMS44LTMuNS0zLjktNC45LTYuM0wyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6bTEzNiAxNmExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMjQgMGMwLTguOC03LjItMTYtMTYtMTZIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDQ5NmM4LjggMCAxNi03LjIgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkNpcmNsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlMNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw0NC45IDc0LjdjLTE2LjEgMTcuNi0yOC42IDM4LjUtMzYuNiA2MS41Yy0xLjktMS44LTMuNS0zLjktNC45LTYuM0wyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6TTQzMiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0xNiA4MGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY0OEgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzODRoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINDQ4VjMwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQ2lyY2xlUXVlc3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlMNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw0NC45IDc0LjdjLTE2LjEgMTcuNi0yOC42IDM4LjUtMzYuNiA2MS41Yy0xLjktMS44LTMuNS0zLjktNC45LTYuM0wyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6TTQzMiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDI0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6TTM2OCAzMjEuNlYzMjhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnYtNi40YzAtNS4zIDQuMy05LjYgOS42LTkuNmg0MC41YzcuNyAwIDEzLjkgNi4yIDEzLjkgMTMuOWMwIDUuMi0yLjkgOS45LTcuNCAxMi4zbC0zMiAxNi44Yy01LjMgMi44LTguNiA4LjItOC42IDE0LjJWMzg0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZ2LTUuMWwyMy41LTEyLjNjMTUuMS03LjkgMjQuNS0yMy42IDI0LjUtNDAuNmMwLTI1LjQtMjAuNi00NS45LTQ1LjktNDUuOUg0MDkuNmMtMjMgMC00MS42IDE4LjYtNDEuNiA0MS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDAgMzA0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNTYuOUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmgyOS43YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDQ0LjkgNzQuN2MtMTYuMSAxNy42LTI4LjYgMzguNS0zNi42IDYxLjVjLTEuOS0xLjgtMy41LTMuOS00LjktNi4zTDIzMiAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDE1MnpNNDMyIDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTU5LjMgMTA3LjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZzLTE2LjQtNi4yLTIyLjYgMEw0MzIgMzQ1LjRsLTM2LjctMzYuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNkw0MDkuNCAzNjhsLTM2LjcgMzYuN2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwTDQzMiAzOTAuNmwzNi43IDM2LjdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42TDQ1NC42IDM2OGwzNi43LTM2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkRpZ2dpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDY0YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTkuOCAyMTQuOGM1LjEtMTIuMiAxOS4xLTE4IDMxLjQtMTIuOUw2MC43IDIxMGwyMi45LTM4LjFDOTkuOSAxNDQuNiAxMjkuMyAxMjggMTYxIDEyOGM1MS40IDAgOTcgMzIuOSAxMTMuMyA4MS43bDM0LjYgMTAzLjcgNzkuMyAzMy4xIDM0LjItNDUuNmM2LjQtOC41IDE2LjYtMTMuMyAyNy4yLTEyLjhzMjAuMyA2LjQgMjUuOCAxNS41bDk2IDE2MGM1LjkgOS45IDYuMSAyMi4yIC40IDMyLjJzLTE2LjMgMTYuMi0yNy44IDE2LjJIMjg4Yy0xMS4xIDAtMjEuNC01LjctMjcuMi0xNS4ycy02LjQtMjEuMi0xLjQtMzEuMWwxNi0zMmM1LjQtMTAuOCAxNi41LTE3LjcgMjguNi0xNy43aDMybDIyLjUtMzBMMjIuOCAyNDYuMmMtMTIuMi01LjEtMTgtMTkuMS0xMi45LTMxLjR6bTgyLjggOTEuOGwxMTIgNDhjMTEuOCA1IDE5LjQgMTYuNiAxOS40IDI5LjR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDA1LjFsLTYwLjYtMjYtMzcgMTExYy01LjYgMTYuOC0yMy43IDI1LjgtNDAuNSAyMC4yUy0zLjkgNDg2LjYgMS42IDQ2OS45bDQ4LTE0NCAxMS0zMyAzMiAxMy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Eb3RzRnJvbUxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE3NkE4OCA4OCAwIDEgMCAyODggMGE4OCA4OCAwIDEgMCAwIDE3NnpNNzguNyAzNzIuOWMxNS0xMi41IDUwLTM0LjQgOTcuMy01MC4xVjQzMkg0MDBWMzIyLjdjNDcuMyAxNS44IDgyLjMgMzcuNyA5Ny4zIDUwLjFjMjAuNCAxNyA1MC42IDE0LjIgNjcuNi02LjFzMTQuMi01MC42LTYuMS02Ny42Yy0xMi0xMC0zMC4xLTIyLjUtNTMuMi0zNUM0OTcuMiAyNzguNCA0ODEuNyAyODggNDY0IDI4OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhjMC00LjMgLjYtOC40IDEuNi0xMi40QzM3OS4xIDIxNS45IDMzNS4zIDIwOCAyODggMjA4Yy02MC4yIDAtMTE0LjkgMTIuOS0xNjAgMjkuOWMwIC43IDAgMS40IDAgMi4xYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4Yy0xMS44IDAtMjIuNy00LjMtMzEtMTEuNGMtMTMuMSA4LjEtMjMuNyAxNS45LTMxLjcgMjIuNWMtMjAuNCAxNy0yMy4xIDQ3LjItNi4xIDY3LjZzNDcuMiAyMy4xIDY3LjYgNi4xek0yNCA0NjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINTUyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI0ek0yMjQgMjgwYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTEwNCA1NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTk2IDI0MGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0zNjggMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25EcmVzc0J1cnN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA0OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0zOTAuMiAzODRINDA4djk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzg0aDE2djk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzg0aDE3LjhjMTAuOSAwIDE4LjYtMTAuNyAxNS4yLTIxLjFMNTQ2LjcgMjQ4LjFsMzMuOSA1Ni4zYzkuMSAxNS4xIDI4LjggMjAgNDMuOSAxMC45czIwLTI4LjggMTAuOS00My45bC01My42LTg5LjJjLTIwLjItMzMuNy01Ni43LTU0LjMtOTYtNTQuM0g0NzQuMmMtMzkuMyAwLTc1LjcgMjAuNi05NiA1NC4zbC01My42IDg5LjJjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlsMzMuOS01Ni4zTDM3NSAzNjIuOWMtMy41IDEwLjQgNC4zIDIxLjEgMTUuMiAyMS4xek0xOTAuOSAxOC4xQzE4OC40IDEyIDE4Mi42IDggMTc2IDhzLTEyLjQgNC0xNC45IDEwLjFsLTI5LjQgNzRMNTUuNiA2OC45Yy02LjMtMS45LTEzLjEgLjItMTcuMiA1LjNzLTQuNiAxMi4yLTEuNCAxNy45bDM5LjUgNjkuMUwxMC45IDIwNi40Yy01LjQgMy43LTggMTAuMy02LjUgMTYuN3M2LjcgMTEuMiAxMy4xIDEyLjJsNzguNyAxMi4yTDkwLjYgMzI3Yy0uNSA2LjUgMy4xIDEyLjcgOSAxNS41czEyLjkgMS44IDE3LjgtMi42TDE3NiAyODYuMWw1OC42IDUzLjljNC44IDQuNCAxMS45IDUuNSAxNy44IDIuNnM5LjUtOSA5LTE1LjVsLTUuNi03OS40IDUwLjUtNy44IDI0LjQtNDAuNS01NS4yLTM4TDMxNSA5Mi4yYzMuMy01LjcgMi43LTEyLjgtMS40LTE3LjlzLTEwLjktNy4yLTE3LjItNS4zTDIyMC4zIDkyLjFsLTI5LjQtNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkRyZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAwYTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpNODggMzg0SDcwLjJjLTEwLjkgMC0xOC42LTEwLjctMTUuMi0yMS4xTDkzLjMgMjQ4LjEgNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDUzLjYtODkuMmMyMC4zLTMzLjcgNTYuNy01NC4zIDk2LTU0LjNoMTEuNmMzOS4zIDAgNzUuNyAyMC42IDk2IDU0LjNsNTMuNiA4OS4yYzkuMSAxNS4xIDQuMiAzNC44LTEwLjkgNDMuOXMtMzQuOCA0LjItNDMuOS0xMC45bC0zMy45LTU2LjNMMjY1IDM2Mi45YzMuNSAxMC40LTQuMyAyMS4xLTE1LjIgMjEuMUgyMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0SDE1MnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkRyb3duaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY5Ni4yYzAgNTQuMSAyMy41IDEwNCA2Mi4yIDEzOC4zbC0yMSAxNDYuN2M3LjggMi4xIDE1LjUgMy4zIDIyLjggMy4zYzIxLjEgMCA0Mi04LjUgNTkuMi0yMC4zYzIyLjEtMTUuNSA1MS42LTE1LjUgNzMuNyAwYzEyLjQgOC41IDI2LjEgMTQuOCAzOS43IDE4bDE3LjctOTcuNmMxMC43LTEuMiAyMS4zLTMuMSAzMS45LTUuNWwxMDUtMjMuOWMxNy4yLTMuOSAyOC0yMS4xIDI0LjEtMzguM3MtMjEuMS0yOC0zOC4zLTI0LjFMNDAwIDIxNi42Yy00MSA5LjMtODMuNyA3LjUtMTIzLjctNS4yYy01MC4yLTE2LTg0LjMtNjIuNi04NC4zLTExNS4zVjY0ek0zMjAgMTkyYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek0zMDYuNSAzODkuOWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNDcgNDA1LjQgMjE5LjUgNDE2IDE5MiA0MTZjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA0NjkuNyAxNTkgNDgwIDE5MiA0ODBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDQwNS4yIDQxMC45IDQxNiAzODQgNDE2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkZhbGxpbmdCdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA5LjhjMCAzOS0yMy43IDc0LTU5LjkgODguNEM3MS42IDE1NC41IDMyIDIxMyAzMiAyNzguMlYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTczLjhjMC0xMCAxLjYtMTkuOCA0LjUtMjlMMjYxLjEgNDk3LjRjOS42IDE0LjggMjkuNCAxOS4xIDQ0LjMgOS41czE5LjEtMjkuNCA5LjUtNDQuM0wyMjIuNiAzMjBIMjI0bDgwIDAgMzguNCA1MS4yYzEwLjYgMTQuMSAzMC43IDE3IDQ0LjggNi40czE3LTMwLjcgNi40LTQ0LjhsLTQzLjItNTcuNkMzNDEuMyAyNjMuMSAzMjcuMSAyNTYgMzEyIDI1NmwtNzEuNSAwLTU2LjgtODAuMi0uMi0uM2M0NC43LTI5IDcyLjUtNzkgNzIuNS0xMzMuNmwwLTkuOHpNOTYgODBBNDggNDggMCAxIDAgMCA4MGE0OCA0OCAwIDEgMCA5NiAwek00NjQgMjg2LjFsNTguNiA1My45YzQuOCA0LjQgMTEuOSA1LjUgMTcuOCAyLjZzOS41LTkgOS0xNS41bC01LjYtNzkuNCA3OC43LTEyLjJjNi41LTEgMTEuNy01LjkgMTMuMS0xMi4ycy0xLjEtMTMtNi41LTE2LjdsLTY1LjYtNDUuMUw2MDMgOTIuMmMzLjMtNS43IDIuNy0xMi44LTEuNC0xNy45cy0xMC45LTcuMi0xNy4yLTUuM0w1MDguMyA5Mi4xbC0yOS40LTc0QzQ3Ni40IDEyIDQ3MC42IDggNDY0IDhzLTEyLjQgNC0xNC45IDEwLjFsLTI5LjQgNzRMMzQzLjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjEtNjUuNiA0NS4xYy01LjQgMy43LTggMTAuMy02LjUgMTYuN2MuMSAuMyAuMSAuNiAuMiAuOGwxOS40IDBjMjAuMSAwIDM5LjIgNy41IDUzLjggMjAuOGwxOC40IDIuOUwzODMgMjY1LjNsMzYuMiA0OC4zYzIuMSAyLjggMy45IDUuNyA1LjUgOC42TDQ2NCAyODYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uRmFsbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDkuOGMwIDU0LjYtMjcuOSAxMDQuNi03Mi41IDEzMy42bC4yIC4zTDMwNC41IDI1Nmw4Ny41IDBjMTUuMSAwIDI5LjMgNy4xIDM4LjQgMTkuMmw0My4yIDU3LjZjMTAuNiAxNC4xIDcuNyAzNC4yLTYuNCA0NC44cy0zNC4yIDcuNy00NC44LTYuNEwzODQgMzIwbC05NiAwaC0xLjRsOTIuMyAxNDIuNmM5LjYgMTQuOCA1LjQgMzQuNi05LjUgNDQuM3MtMzQuNiA1LjQtNDQuMy05LjVMMTY0LjUgMjQ5LjJjLTIuOSA5LjItNC41IDE5LTQuNSAyOWwwIDczLjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjc4LjJjMC02NS4xIDM5LjYtMTIzLjcgMTAwLjEtMTQ3LjlDMjMyLjMgMTE1LjggMjU2IDgwLjggMjU2IDQxLjhsMC05LjhjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTExMiAzMmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkhhbGZEcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTggMzUyVjEyOGg2LjljMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNTguMyA5N2M5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOUwyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1Mmgwek01OC4yIDE4Mi4zYzE5LjktMzMuMSA1NS4zLTUzLjUgOTMuOC01NC4zVjM4NGgwdjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NEg3MC4yYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMUw5My4zIDI0OC4xIDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1My42LTg5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkhhcmFzc2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek01OS40IDMwNC41TDg4IDI1Ni45VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM1MmgxNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMzUuM2w0Ny40IDU3LjFjMTEuMyAxMy42IDMxLjUgMTUuNSA0NS4xIDQuMnMxNS41LTMxLjUgNC4yLTQ1LjFsLTczLjctODguOWMtMTguMi0yMi00NS4zLTM0LjctNzMuOS0zNC43SDE0NS4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOXpNNDgwIDI0MGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00NjQgMzQ0djU4LjdsLTQxLjQtNDEuNGMtNy4zLTcuMy0xNy42LTEwLjYtMjcuOC05cy0xOC45IDguMS0yMy41IDE3LjNsLTQ4IDk2Yy03LjkgMTUuOC0xLjUgMzUgMTQuMyA0Mi45czM1IDEuNSA0Mi45LTE0LjNMNDA4LjggNDM4bDU0LjcgNTQuN2MxMi40IDEyLjQgMjkuMSAxOS4zIDQ2LjYgMTkuM2MzNi40IDAgNjUuOS0yOS41IDY1LjktNjUuOVYzNDRjMC0zMC45LTI1LjEtNTYtNTYtNTZzLTU2IDI1LjEtNTYgNTZ6TTI4OCA0OGMwIDguOCA3LjIgMTYgMTYgMTZoNTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzA0Yy04LjggMC0xNiA3LjItMTYgMTZ6bS0uOCA0OS43Yy03LjktNC0xNy41LS43LTIxLjUgNy4ycy0uNyAxNy41IDcuMiAyMS41bDQ4IDI0YzcuOSA0IDE3LjUgLjcgMjEuNS03LjJzLjctMTcuNS03LjItMjEuNWwtNDgtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkhpa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNTEuMyAxODIuN0wyMjQuMiAzMDdsNDkuNyA0OS43YzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzOTcuM2wtNzMuOS03My45Yy0xNS44LTE1LjgtMjIuMi0zOC42LTE2LjktNjAuM2wyMC40LTg0YzguMy0zNC4xIDQyLjctNTQuOSA3Ni43LTQ2LjRjMTkgNC44IDM1LjYgMTYuNCA0Ni40IDMyLjdMMzA1LjEgMjA4SDMzNlYxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY1NS44YzAgLjEgMCAuMiAwIC4yczAgLjIgMCAuMlY0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjcySDI5Ni42Yy0xNiAwLTMxLTgtMzkuOS0yMS40bC0xMy4zLTIwek04MS4xIDQ3MS45TDExNy4zIDMzNGMzIDQuMiA2LjQgOC4yIDEwLjEgMTEuOWw0MS45IDQxLjlMMTQyLjkgNDg4LjFjLTQuNSAxNy4xLTIyIDI3LjMtMzkuMSAyMi44cy0yNy4zLTIyLTIyLjgtMzkuMXptNTUuNS0zNDZMMTAxLjQgMjY2LjVjLTMgMTIuMS0xNC45IDE5LjktMjcuMiAxNy45bC00Ny45LThjLTE0LTIuMy0yMi45LTE2LjMtMTkuMi0zMEwzMS45IDE1NWM5LjUtMzQuOCA0MS4xLTU5IDc3LjItNTloNC4yYzE1LjYgMCAyNy4xIDE0LjcgMjMuMyAyOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25NaWxpdGFyeVBvaW50aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni45IDE0LjFDMjM0IDE1LjIgMjI0IDI2IDIyNCAzOWMwIDEzLjggMTEuMiAyNSAyNSAyNUg0MDBjOC44IDAgMTYtNy4yIDE2LTE2VjE3LjRDNDE2IDggNDA4IC43IDM5OC43IDEuNEwyNDYuOSAxNC4xek0yNDAgMTEyYzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC01LjUtLjYtMTAuOC0xLjYtMTZIMjQxLjZjLTEgNS4yLTEuNiAxMC41LTEuNiAxNnpNNzIgMjI0Yy0yMi4xIDAtNDAgMTcuOS00MCA0MHMxNy45IDQwIDQwIDQwSDIyNHY4OS40TDM4Ni44IDIzMC41Yy0xMy4zLTQuMy0yNy4zLTYuNS00MS42LTYuNUgyNDAgNzJ6bTM0NS43IDIwLjlMMjQ2LjYgNDE2SDQxNlYzNjkuN2w1My42IDkwLjZjMTEuMiAxOSAzNS44IDI1LjMgNTQuOCAxNC4xczI1LjMtMzUuOCAxNC4xLTU0LjhMNDYyLjMgMjkwLjhjLTExLjItMTguOS0yNi42LTM0LjUtNDQuNi00NS45ek0yMjQgNDQ4djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NGMxNy43IDAgMzItMTQuMyAzMi0zMlY0NDhIMjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25NaWxpdGFyeVJpZmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAzOWMwLTEzIDEwLTIzLjggMjIuOS0yNC45TDMzNC43IDEuNEMzNDQgLjcgMzUyIDggMzUyIDE3LjRWNDhjMCA4LjgtNy4yIDE2LTE2IDE2SDE4NWMtMTMuOCAwLTI1LTExLjItMjUtMjV6bTE3LjYgNTdIMzM0LjRjMSA1LjIgMS42IDEwLjUgMS42IDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtNS41IC42LTEwLjggMS42LTE2em0yMjggMzY0LjNMMzUyIDM2OS43VjQ4MGMwIDEuMy0uMSAyLjUtLjIgMy44TDE3Ny41IDIzNC45YzE2LjYtNy4xIDM0LjYtMTAuOSA1My4zLTEwLjloNTAuNGMxNS45IDAgMzEuMyAyLjggNDUuOCA3LjlMNDIxLjkgNjcuN2MtNy43LTQuNC0xMC4zLTE0LjItNS45LTIxLjlzMTQuMi0xMC4zIDIxLjktNS45bDEzLjkgOCAxMy45IDhjNy43IDQuNCAxMC4zIDE0LjIgNS45IDIxLjlMNDE2IDE3My45bDEuNiAuOWMxNS4zIDguOCAyMC42IDI4LjQgMTEuNyA0My43TDM5Mi42IDI4MmMyIDIuOCAzLjkgNS44IDUuNyA4LjhsNzYuMSAxMjguOGMxMS4yIDE5IDQuOSA0My41LTE0LjEgNTQuOHMtNDMuNSA0LjktNTQuOC0xNC4xek0zMjAgNTEySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzY5LjdsLTUzLjYgOTAuNmMtMTEuMiAxOS0zNS44IDI1LjMtNTQuOCAxNC4xcy0yNS4zLTM1LjgtMTQuMS01NC44bDc2LjEtMTI4LjhjOS40LTE1LjggMjEuNy0yOS4zIDM2LTQwTDMzMS4xIDUxMGMtMy41IDEuMy03LjIgMi0xMS4xIDJ6TTI5NiAzMjBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25NaWxpdGFyeVRvUGVyc29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcxIDEyLjVjLTguNiAxLTE1IDguMi0xNSAxNi44YzAgOS4zIDcuNSAxNi44IDE2LjcgMTYuOUgxODQuMWM4LjgtLjEgMTUuOS03LjIgMTUuOS0xNlYxNmMwLTkuNS04LjMtMTctMTcuOC0xNS45TDcxIDEyLjV6TTE4OS41IDc4LjFINjYuNUM2NC45IDgzLjggNjQgODkuOCA2NCA5NmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0YzAtNi4yLS45LTEyLjItMi41LTE3Ljl6TTMyIDI1NnYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgxOTJjMS44IDAgMy41LS4xIDUuMi0uNEw1MyAyMDguNkM0MC4xIDIyMC4zIDMyIDIzNy4yIDMyIDI1NnptMTkwLjIgNDIuNWMxLjEtMy4zIDEuOC02LjggMS44LTEwLjVWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2Yy0zLjcgMC03LjQgLjMtMTAuOSAuOUwyMjIuMiAyOTguNXpNMzg0IDE2MGE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHptLTMyIDMyYy0zNS4zIDAtNjQgMjguNy02NCA2NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM1MnpNMjE1LjggNDUwLjFjNS4yLTQuNiA4LjItMTEuMSA4LjItMTguMXMtMy0xMy41LTguMi0xOC4xbC02NC01NmMtNy4xLTYuMi0xNy4xLTcuNy0yNS43LTMuOFMxMTIgMzY2LjYgMTEyIDM3NnYzMmwtODggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw4OCAwdjMyYzAgOS40IDUuNSAxOCAxNC4xIDIxLjlzMTguNiAyLjQgMjUuNy0zLjhsNjQtNTZ6TTI4OCA0MzEuOWMwIDYuOSAyLjkgMTMuNSA4LjEgMTguMWw2NCA1Ni40YzcuMSA2LjIgMTcuMSA3LjggMjUuNyAzLjlzMTQuMS0xMi40IDE0LjEtMjEuOWwwLTMyLjQgODggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtODggMCAwLTMyYzAtOS40LTUuNS0xOC0xNC4xLTIxLjlzLTE4LjYtMi40LTI1LjcgMy44bC02NCA1NmMtNS4yIDQuNS04LjIgMTEuMS04LjIgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvblByYXlpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDY0QTY0IDY0IDAgMSAwIDIyNCA2NGE2NCA2NCAwIDEgMCAxMjggMHpNMjMyLjcgMjY0bDIyLjkgMzEuNWM2LjUgOC45IDE2LjMgMTQuNyAyNy4yIDE2LjFzMjEuOS0xLjcgMzAuNC04LjdsODgtNzJjMTcuMS0xNCAxOS42LTM5LjIgNS42LTU2LjNzLTM5LjItMTkuNi01Ni4zLTUuNmwtNTUuMiA0NS4yLTI2LjItMzZDMjUzLjYgMTU2LjcgMjI4LjYgMTQ0IDIwMiAxNDRjLTMwLjkgMC01OS4yIDE3LjEtNzMuNiA0NC40TDc5LjggMjgwLjljLTIwLjIgMzguNS05LjQgODUuOSAyNS42IDExMS44TDE1OC42IDQzMkg3MmMtMjIuMSAwLTQwIDE3LjktNDAgNDBzMTcuOSA0MCA0MCA0MEgyODBjMTcuMyAwIDMyLjYtMTEuMSAzOC0yNy41cy0uMy0zNC40LTE0LjItNDQuN0wxODcuNyAzNTRsNDUtOTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvblByZWduYW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAwYTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpNMTIwIDM4M2MtMTMuOC0zLjYtMjQtMTYuMS0yNC0zMVYyOTYuOWwtNC42IDcuNmMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTUtMjQuOSA0MC4zLTQxLjUgNjguNy00NS42YzQuMS0uNiA4LjItMSAxMi41LTFoMS4xIDEyLjVIMTkyYzEuNCAwIDIuOCAuMSA0LjEgLjNjMzUuNyAyLjkgNjUuNCAyOS4zIDcyLjEgNjVsNi4xIDMyLjVjNDQuMyA4LjYgNzcuNyA0Ny41IDc3LjcgOTQuM3YzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMDQgMjY0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NGgtOC04djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uUmF5cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDAgMzA0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNTYuOWwtMjguNiA0Ny41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmgyOS43YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDU4LjMgOTdjOS4xIDE1LjEgNC4yIDM0LjgtMTAuOSA0My45cy0zNC44IDQuMi00My45LTEwLjlMMzI4IDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMjQ4ek03IDdDMTYuNC0yLjMgMzEuNi0yLjMgNDEgN2w4MCA4MGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcgNDFDLTIuMyAzMS42LTIuMyAxNi40IDcgN3pNNDcxIDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC04MCA4MGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOUw0NzEgN3pNNyA1MDVjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDgwLTgwYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOUw0MSA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwem00NjQgMGwtODAtODBjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw4MCA4MGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25SaWZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjUuMiAxOTJjMjUuNCAwIDQ5LjggNy4xIDcwLjggMTkuOVY1MTJIMTQ0VjMzNy43TDkwLjQgNDI4LjNjLTExLjIgMTktMzUuOCAyNS4zLTU0LjggMTQuMXMtMjUuMy0zNS44LTE0LjEtNTQuOEw5Ny43IDI1OC44YzI0LjUtNDEuNCA2OS02Ni44IDExNy4xLTY2LjhoNTAuNHpNMTYwIDgwYTgwIDgwIDAgMSAxIDE2MCAwQTgwIDgwIDAgMSAxIDE2MCA4MHpNNDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2VjEzMi4zYzkuNiA1LjUgMTYgMTUuOSAxNiAyNy43VjI2OS4zbDE2LTUuM1YyMDhjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnY4NC41YzAgNi45LTQuNCAxMy0xMC45IDE1LjJMNDgwIDMyNS4zVjM1Mmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDQ4NGwyMyA5Mi4xYzIuNSAxMC4xLTUuMSAxOS45LTE1LjUgMTkuOUg0MzJjLTguOCAwLTE2LTcuMi0xNi0xNlY0MDBINDAwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJWMTYwYzAtMTEuOCA2LjQtMjIuMiAxNi0yNy43VjMyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25SdW5uaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xMjUuNyAxNzUuNWM5LjktOS45IDIzLjQtMTUuNSAzNy41LTE1LjVjMS45IDAgMy44IC4xIDUuNiAuM0wxMzcuNiAyNTRjLTkuMyAyOCAxLjcgNTguOCAyNi44IDc0LjVsODYuMiA1My45LTI1LjQgODguOGMtNC45IDE3IDUgMzQuNyAyMiAzOS42czM0LjctNSAzOS42LTIybDI4LjctMTAwLjRjNS45LTIwLjYtMi42LTQyLjYtMjAuNy01My45TDIzOCAyOTlsMzAuOS04Mi40IDUuMSAxMi4zQzI4OSAyNjQuNyAzMjMuOSAyODggMzYyLjcgMjg4SDM4NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNjIuN2MtMTIuOSAwLTI0LjYtNy44LTI5LjUtMTkuN2wtNi4zLTE1Yy0xNC42LTM1LjEtNDQuMS02MS45LTgwLjUtNzMuMWwtNDguNy0xNWMtMTEuMS0zLjQtMjIuNy01LjItMzQuNC01LjJjLTMxIDAtNjAuOCAxMi4zLTgyLjcgMzQuM0w1Ny40IDE1My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDIzLjEtMjMuMXpNOTEuMiAzNTJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNjkuNmMxOSAwIDM2LjItMTEuMiA0My45LTI4LjVMMTU3IDM2MS42bC05LjUtNmMtMTcuNS0xMC45LTMwLjUtMjYuOC0zNy45LTQ0LjlMOTEuMiAzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvblNoZWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcxLjkgNC4yYy05LjgtNS42LTIxLjktNS42LTMxLjggMGwtMjI0IDEyOEM2LjIgMTM3LjkgMCAxNDguNSAwIDE2MFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNzguNkwyNTYgNjguOSA0NDggMTc4LjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTYwYzAtMTEuNS02LjItMjIuMS0xNi4xLTI3LjhsLTIyNC0xMjh6TTI1NiAyMDhhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwem0tOCAyODBWNDAwaDE2djg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzEzLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzcuOS03MC4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM0gyNDYuMmMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNsLTM3LjkgNzAuM2MtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMMjAwIDMxMy41VjQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Ta2F0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0xMjggMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDMxOS40YzQzLjYgMCA2NC42IDUzLjQgMzIuOCA4My4xbC03NC40IDY5LjQgNjAuMiA2MC4yYzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45VjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNDkuM2wtNzcuOS03Ny44Yy0yNi42LTI2LjYtMjQuNi03MC4zIDQuMy05NC40bDIwLjQtMTdIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNODEuNCAzNTMuNGw4Ni45LTg2LjljNC42IDEwIDExIDE5LjMgMTkuMyAyNy41bDIxLjggMjEuOC04Mi43IDgyLjdjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zem0zMjIuNSA5NS4xYzguNiAyLjEgMTMuOCAxMC44IDExLjYgMTkuNGwtLjQgMS43Yy02LjIgMjQuOS0yOC42IDQyLjQtNTQuMyA0Mi40SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4OC44YzExIDAgMjAuNi03LjUgMjMuMy0xOC4ybC40LTEuN2MyLjEtOC42IDEwLjgtMTMuOCAxOS40LTExLjZ6TTEzNS4yIDQ3OC4zbC02LjIgMy4xYy0yMS42IDEwLjgtNDcuNiA2LjYtNjQuNi0xMC41TDQuNyA0MTEuM2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwbDU5LjYgNTkuNmM3LjMgNy4zIDE4LjUgOS4xIDI3LjcgNC41bDYuMi0zLjFjNy45LTQgMTcuNS0uNyAyMS41IDcuMnMuNyAxNy41LTcuMiAyMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Ta2lpbmdOb3JkaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMjI3LjIgMTYwYzEuOSAwIDMuOCAuMSA1LjYgLjNMMjAxLjYgMjU0Yy05LjMgMjggMS43IDU4LjggMjYuOCA3NC41bDg2LjIgNTMuOUwyOTEuMyA0NjRIMjAyLjhsNDEuMS04OC4xLTMyLjQtMjAuM2MtNy44LTQuOS0xNC43LTEwLjctMjAuNi0xNy4zTDEzMi4yIDQ2NEg5OS43bDU0LjItMjU3LjZjNC42LTEuNSA5LTQuMSAxMi43LTcuOGwyMy4xLTIzLjFjOS45LTkuOSAyMy40LTE1LjUgMzcuNS0xNS41ek0xMjEuNCAxOTguNmMuNCAuNCAuOCAuOCAxLjMgMS4yTDY3IDQ2NEgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgxNTkuM2MuNCAwIC45IDAgMS4zIDBIMzE5LjNjLjUgMCAxIDAgMS40IDBINTA0YzM5LjggMCA3Mi0zMi4yIDcyLTcydi04YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djhjMCAxMy4zLTEwLjcgMjQtMjQgMjRINDM0LjZsMjcuNi0xNzkuM2MxMC41LTUuMiAxNy44LTE2LjEgMTcuOC0yOC43YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQyNi43Yy0xMi45IDAtMjQuNi03LjgtMjkuNS0xOS43bC02LjMtMTVjLTE0LjYtMzUuMS00NC4xLTYxLjktODAuNS03My4xbC00OC43LTE1Yy0xMS4xLTMuNC0yMi43LTUuMi0zNC40LTUuMmMtMzEgMC02MC44IDEyLjMtODIuNyAzNC4zbC0yMy4xIDIzLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zem0zMDggODkuNEw0MDIuMyA0NjRIMzU3LjhsMjEuNi03NS42YzUuOS0yMC42LTIuNi00Mi42LTIwLjctNTMuOUwzMDIgMjk5bDMwLjktODIuNCA1LjEgMTIuM0MzNTMgMjY0LjcgMzg3LjkgMjg4IDQyNi43IDI4OGgyLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvblNraWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODAuNyA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0yLjcgMjY4LjljNi4xLTExLjggMjAuNi0xNi4zIDMyLjQtMTAuMkwyMzIuNyAzNjEuM2w0Ni4yLTY5LjItNzUuMS03NS4xYy0xNC42LTE0LjYtMjAuNC0zMy45LTE4LjQtNTIuMWwxMDguOCA1MiAzOS4zIDM5LjNjMTYuMiAxNi4yIDE4LjcgNDEuNSA2IDYwLjZMMjg5LjggMzkxbDEyOC43IDY2LjhjMTMuNiA3LjEgMjkuOCA3LjIgNDMuNiAuM2wxNS4yLTcuNmMxMS45LTUuOSAyNi4zLTEuMSAzMi4yIDEwLjdzMS4xIDI2LjMtMTAuNyAzMi4ybC0xNS4yIDcuNmMtMjcuNSAxMy43LTU5LjkgMTMuNS04Ny4yLS43TDEyLjkgMzAxLjNDMS4yIDI5NS4yLTMuNCAyODAuNyAyLjcgMjY4Ljl6TTExOC45IDY1LjZMMTM3IDc0LjJsOC43LTE3LjRjNC03LjkgMTMuNi0xMS4xIDIxLjUtNy4yczExLjEgMTMuNiA3LjIgMjEuNWwtOC41IDE2LjkgNTQuNyAyNi4yYzEuNS0uNyAzLjEtMS40IDQuNy0yLjFsODMuNC0zMy40YzM0LjItMTMuNyA3Mi44IDQuMiA4NC41IDM5LjJsMTcuMSA1MS4yIDUyLjEgMjYuMWMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zbC01OC4xLTI5Yy0xMS40LTUuNy0yMC0xNS43LTI0LjEtMjcuOGwtNS44LTE3LjMtMjcuMyAxMi4xLTYuOCAzLTYuNy0zLjJMMTUxLjUgMTE2LjdsLTkuMiAxOC40Yy00IDcuOS0xMy42IDExLjEtMjEuNSA3LjJzLTExLjEtMTMuNi03LjItMjEuNWw5LTE4LTE3LjYtOC40Yy04LTMuOC0xMS4zLTEzLjQtNy41LTIxLjNzMTMuNC0xMS4zIDIxLjMtNy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Tbm93Ym9hcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA5LjcgMy40YzE1LjgtNy45IDM1LTEuNSA0Mi45IDE0LjNsMjUgNTAgNDIuNCA4LjVjMTkuNSAzLjkgMzcuOCAxMi4zIDUzLjUgMjQuNWwxMjYuMSA5OC4xYzE0IDEwLjkgMTYuNSAzMSA1LjYgNDQuOXMtMzEgMTYuNS00NC45IDUuNmwtNzIuMS01Ni4xLTcxLjUgMzEuOCAzMy4xIDI3LjZjMjMuMiAxOS4zIDMzLjUgNTAgMjYuNyA3OS40bC0xNy40IDc1LjJjLTIuMiA5LjQtOC4yIDE2LjgtMTYuMSAyMWw4Ni41IDMzLjFjNC42IDEuOCA5LjQgMi42IDE0LjMgMi42SDQ3MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg0NDMuOGMtMTAuOCAwLTIxLjQtMi0zMS41LTUuOEw2MC4xIDM3MS4zYy0xMS41LTQuNC0yMi0xMS4yLTMwLjgtMjBMNyAzMjljLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMi40IDIyLjRjNCA0IDguNyA3LjEgMTQgOS4xbDIyLjQgOC42Yy0uOC0xLjYtMS41LTMuMi0yLjEtNC45Yy01LjYtMTYuOCAzLjUtMzQuOSAyMC4yLTQwLjVMMTkyIDI2NC45bDAtNTMuMmMwLTI0LjIgMTMuNy00Ni40IDM1LjQtNTcuMmw0NS4yLTIyLjYtNy41LTEuNWMtMTkuNC0zLjktMzUuOS0xNi41LTQ0LjctMzQuMWwtMjUtNTBjLTcuOS0xNS44LTEuNS0zNSAxNC4zLTQyLjl6TTEzOSAzNTAuMWwxNTkgNjAuOWMtMi4xLTUuNi0yLjYtMTEuOS0xLjEtMTguMmwxNy40LTc1LjJjMS40LTUuOS0uNy0xMi01LjMtMTUuOWwtNTIuOC00NCAwIDE4LjhjMCAyMC43LTEzLjIgMzktMzIuOCA0NS41TDEzOSAzNTAuMXpNNDMyIDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Td2ltbWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDkuNSAxNzguNEw0NDcuOSAyOTcuMWMtMS42IC45LTMuMiAyLTQuOCAzYy0xOCAxMi40LTQwLjEgMjAuMy01OS4yIDIwLjNjLTE5LjYgMC00MC44LTcuNy01OS4yLTIwLjNjLTIyLjEtMTUuNS01MS42LTE1LjUtNzMuNyAwYy0xNy4xIDExLjgtMzggMjAuMy01OS4yIDIwLjNjLTEwLjEgMC0yMS4xLTIuMi0zMS45LTYuMkMxNjMuMSAxOTMuMiAyNjIuMiA5NiAzODQgOTZoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0Yy0yNi45IDAtNTIuMyA2LjYtNzQuNSAxOC40ek0xNjAgMTYwQTY0IDY0IDAgMSAxIDMyIDE2MGE2NCA2NCAwIDEgMSAxMjggMHpNMzA2LjUgMzI1LjlDMzI5IDM0MS40IDM1Ni41IDM1MiAzODQgMzUyYzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDQwNS43IDQxNyA0MTYgMzg0IDQxNmMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDM0MS4yIDE2NS4xIDM1MiAxOTIgMzUyYzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25UaHJvdWdoV2luZG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0bDIyNCAwIDAgOS44YzAgMzktMjMuNyA3NC01OS45IDg4LjRDMTY3LjYgMTg2LjUgMTI4IDI0NSAxMjggMzEwLjJsMCA3My44czAgMCAwIDBINjRWNjR6bTI4OCAwbDIyNCAwVjM4NEg1MDguM2wtMy43LTQuNS03NS4yLTkwLjJjLTkuMS0xMC45LTIyLjYtMTcuMy0zNi45LTE3LjNsLTcxLjEgMC00MS02My4xYy0uMy0uNS0uNi0xLTEtMS40YzQ0LjctMjkgNzIuNS03OSA3Mi41LTEzMy42bDAtOS44em03MyAzMjBIMzc5LjJsNDIuNyA2NEg1OTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4VjQwMGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMDguMmwzMy4yIDQ5LjhjOS44IDE0LjcgMjkuNyAxOC43IDQ0LjQgOC45czE4LjctMjkuNyA4LjktNDQuNEwzMTAuNSAzMzZsNzQuNiAwIDQwIDQ4em0tMTU5LjUgMEgxOTJzMCAwIDAgMGwwLTczLjhjMC0xMC4yIDEuNi0yMC4xIDQuNy0yOS41TDI2NS41IDM4NHpNMTkyIDEyOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25XYWxraW5nQXJyb3dMb29wTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0xMjMuNyAyMDAuNWMxLS40IDEuOS0uOCAyLjktMS4ybC0xNi45IDYzLjVjLTUuNiAyMS4xLS4xIDQzLjYgMTQuNyA1OS43bDcwLjcgNzcuMSAyMiA4OC4xYzQuMyAxNy4xIDIxLjcgMjcuNiAzOC44IDIzLjNzMjcuNi0yMS43IDIzLjMtMzguOGwtMjMtOTIuMWMtMS45LTcuOC01LjgtMTQuOS0xMS4yLTIwLjhsLTQ5LjUtNTQgMTkuMy02NS41IDkuNiAyM2M0LjQgMTAuNiAxMi41IDE5LjMgMjIuOCAyNC41bDI2LjcgMTMuM2MxNS44IDcuOSAzNSAxLjUgNDIuOS0xNC4zczEuNS0zNS0xNC4zLTQyLjlMMjgxIDIzMi43bC0xNS4zLTM2LjhDMjQ4LjUgMTU0LjggMjA4LjMgMTI4IDE2My43IDEyOGMtMjIuOCAwLTQ1LjMgNC44LTY2LjEgMTRsLTggMy41Yy0zMi45IDE0LjYtNTguMSA0Mi40LTY5LjQgNzYuNWwtMi42IDcuOGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwyLjYtNy44YzUuNy0xNy4xIDE4LjMtMzAuOSAzNC43LTM4LjJsOC0zLjV6bS0zMCAxMzUuMUw2OC43IDM5OCA5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTE2LjMgNDQxYzQuNi00LjYgOC4yLTEwLjEgMTAuNi0xNi4xbDE0LjUtMzYuMi00MC43LTQ0LjRjLTIuNS0yLjctNC44LTUuNi03LTguNnptMzQ3LjcgMTE5YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMNDYxLjMgMzg0SDQ4MGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MHMtNzEuNi0xNjAtMTYwLTE2MEwzNTIgNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTI4IDBjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZINDYxLjNsMjUuNC0yNS40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC04MCA4MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbldhbGtpbmdBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTEyMy43IDIwMC41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUwyODEgMjMyLjdsLTE1LjMtMzYuOEMyNDguNSAxNTQuOCAyMDguMyAxMjggMTYzLjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTMyLjkgMTQuNi01OC4xIDQyLjQtNjkuNCA3Ni41bC0yLjYgNy44Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDIuNi03LjhjNS43LTE3LjEgMTguMy0zMC45IDM0LjctMzguMmw4LTMuNXptLTMwIDEzNS4xTDY4LjcgMzk4IDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxMTYuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42ek01NTAuNiAxNTMuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNTMwLjcgMjI0SDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1MzAuN2wtMjUuNCAyNS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDgwLTgwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC04MC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uV2Fsa2luZ0Rhc2hlZExpbmVBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTEyMy43IDIwMC41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUwyODEgMjMyLjdsLTE1LjMtMzYuOEMyNDguNSAxNTQuOCAyMDguMyAxMjggMTYzLjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTMyLjkgMTQuNi01OC4xIDQyLjQtNjkuNCA3Ni41bC0yLjYgNy44Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDIuNi03LjhjNS43LTE3LjEgMTguMy0zMC45IDM0LjctMzguMmw4LTMuNXptLTMwIDEzNS4xTDY4LjcgMzk4IDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxMTYuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42ek01NTAuNiAxNTMuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNTMwLjcgMjI0SDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1MzAuN2wtMjUuNCAyNS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDgwLTgwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC04MC04MHpNMzkyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjcyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTI0IDE1MmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE1MnpNMzkyIDMyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNDRjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTI0IDEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQ0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uV2Fsa2luZ0x1Z2dhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMzQ3LjcgMjAwLjVjMS0uNCAxLjktLjggMi45LTEuMmwtMTYuOSA2My41Yy01LjYgMjEuMS0uMSA0My42IDE0LjcgNTkuN2w3MC43IDc3LjEgMjIgODguMWM0LjMgMTcuMSAyMS43IDI3LjYgMzguOCAyMy4zczI3LjYtMjEuNyAyMy4zLTM4LjhsLTIzLTkyLjFjLTEuOS03LjgtNS44LTE0LjktMTEuMi0yMC44bC00OS41LTU0IDE5LjMtNjUuNSA5LjYgMjNjNC40IDEwLjYgMTIuNSAxOS4zIDIyLjggMjQuNWwyNi43IDEzLjNjMTUuOCA3LjkgMzUgMS41IDQyLjktMTQuM3MxLjUtMzUtMTQuMy00Mi45TDUwNSAyMzIuN2wtMTUuMy0zNi44QzQ3Mi41IDE1NC44IDQzMi4zIDEyOCAzODcuNyAxMjhjLTIyLjggMC00NS4zIDQuOC02Ni4xIDE0bC04IDMuNWMtMzIuOSAxNC42LTU4LjEgNDIuNC02OS40IDc2LjVsLTIuNiA3LjhjLTUuNiAxNi44IDMuNSAzNC45IDIwLjIgNDAuNXMzNC45LTMuNSA0MC41LTIwLjJsMi42LTcuOGM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41em0tMzAgMTM1LjFsLTI1IDYyLjQtNTkuNCA1OS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDM0MC4zIDQ0MWM0LjYtNC42IDguMi0xMC4xIDEwLjYtMTYuMWwxNC41LTM2LjItNDAuNy00NC40Yy0yLjUtMi43LTQuOC01LjYtNy04LjZ6TTI1NiAyNzQuMWMtNy43LTQuNC0xNy40LTEuOC0yMS45IDUuOWwtMzIgNTUuNEwxNDcuNyAzMDRjLTE1LjMtOC44LTM0LjktMy42LTQzLjcgMTEuN0w0MCA0MjYuNmMtOC44IDE1LjMtMy42IDM0LjkgMTEuNyA0My43bDU1LjQgMzJjMTUuMyA4LjggMzQuOSAzLjYgNDMuNy0xMS43bDY0LTExMC45YzEuNS0yLjYgMi42LTUuMiAzLjMtOEwyNjEuOSAyOTZjNC40LTcuNyAxLjgtMTcuNC01LjktMjEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uV2Fsa2luZ1dpdGhDYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04LjQgMzJjLTM2LjQgMC02OS42IDIwLjUtODUuOSA1My4xTDM1LjQgMjczLjdjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM0wxMjggMjMxLjZ2NDMuMmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM0wyMjQgMzk3LjNWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzkwLjZjMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOUwyMjQgMzA2LjdWMjEzLjNsNzAuNCA5My45YzEwLjYgMTQuMSAzMC43IDE3IDQ0LjggNi40czE3LTMwLjcgNi40LTQ0LjhMMjY4LjggMTY2LjRDMjUwLjcgMTQyLjIgMjIyLjIgMTI4IDE5MiAxMjhIMTY3LjZ6TTEyOC4zIDM0Ni44TDk3IDQ3Mi4yYy00LjMgMTcuMSA2LjEgMzQuNSAyMy4zIDM4LjhzMzQuNS02LjEgMzguOC0yMy4zbDIyLTg4LjItNTIuOC01Mi44ek00NTAuOCA1MDUuMWM1IDcuMyAxNSA5LjEgMjIuMyA0czkuMS0xNSA0LTIyLjNMMzU4LjkgMzE2LjFjLTIuOCAzLjgtNi4xIDcuMy0xMC4xIDEwLjNjLTUgMy44LTEwLjUgNi40LTE2LjIgNy45TDQ1MC44IDUwNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25XYWxraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0xMjYuNSAxOTkuM2MtMSAuNC0xLjkgLjgtMi45IDEuMmwtOCAzLjVjLTE2LjQgNy4zLTI5IDIxLjItMzQuNyAzOC4ybC0yLjYgNy44Yy01LjYgMTYuOC0yMy43IDI1LjgtNDAuNSAyMC4ycy0yNS44LTIzLjctMjAuMi00MC41bDIuNi03LjhjMTEuNC0zNC4xIDM2LjYtNjEuOSA2OS40LTc2LjVsOC0zLjVjMjAuOC05LjIgNDMuMy0xNCA2Ni4xLTE0YzQ0LjYgMCA4NC44IDI2LjggMTAxLjkgNjcuOUwyODEgMjMyLjdsMjEuNCAxMC43YzE1LjggNy45IDIyLjIgMjcuMSAxNC4zIDQyLjlzLTI3LjEgMjIuMi00Mi45IDE0LjNMMjQ3IDI4Ny4zYy0xMC4zLTUuMi0xOC40LTEzLjgtMjIuOC0yNC41bC05LjYtMjMtMTkuMyA2NS41IDQ5LjUgNTRjNS40IDUuOSA5LjIgMTMgMTEuMiAyMC44bDIzIDkyLjFjNC4zIDE3LjEtNi4xIDM0LjUtMjMuMyAzOC44cy0zNC41LTYuMS0zOC44LTIzLjNsLTIyLTg4LjEtNzAuNy03Ny4xYy0xNC44LTE2LjEtMjAuMy0zOC42LTE0LjctNTkuN2wxNi45LTYzLjV6TTY4LjcgMzk4bDI1LTYyLjRjMi4xIDMgNC41IDUuOCA3IDguNmw0MC43IDQ0LjQtMTQuNSAzNi4yYy0yLjQgNi02IDExLjUtMTAuNiAxNi4xTDU0LjYgNTAyLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDY4LjcgMzk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlMNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw1OC4zIDk3YzkuMSAxNS4xIDQuMiAzNC44LTEwLjkgNDMuOXMtMzQuOCA0LjItNDMuOS0xMC45TDIzMiAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDE1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVzZXRhU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjR2OTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMCA5NlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNTJoOTZjNzcuNCAwIDE0Mi01NSAxNTYuOC0xMjhIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyaC0zLjJDMzM0IDg3IDI2OS40IDMyIDE5MiAzMkg2NHpNMjgyLjUgMTYwSDk2Vjk2aDk2YzQxLjggMCA3Ny40IDI2LjcgOTAuNSA2NHpNOTYgMjI0SDI4Mi41Yy0xMy4yIDM3LjMtNDguNyA2NC05MC41IDY0SDk2VjIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVzb1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0djY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMCA2NHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGg4MGM2OC40IDAgMTI3LjctMzkgMTU2LjgtOTZIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyaC0uN2MuNS01LjMgLjctMTAuNiAuNy0xNnMtLjItMTAuNy0uNy0xNmguN2MxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMzIuOEMzMDMuNyA3MSAyNDQuNCAzMiAxNzYgMzJINjR6bTE5MC40IDk2SDk2Vjk2aDgwYzMwLjUgMCA1OC4yIDEyLjIgNzguNCAzMnpNOTYgMTkySDI4Ni45Yy43IDUuMiAxLjEgMTAuNiAxLjEgMTZzLS40IDEwLjgtMS4xIDE2SDk2VjE5MnptMTU4LjQgOTZjLTIwLjIgMTkuOC00Ny45IDMyLTc4LjQgMzJIOTZWMjg4SDI1NC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZUZsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ3LjEgMjQuNmM3LjctMTguNiAyOC0yOC41IDQ3LjQtMjMuMmw4OCAyNEM0OTkuOSAzMC4yIDUxMiA0NiA1MTIgNjRjMCAyNDcuNC0yMDAuNiA0NDgtNDQ4IDQ0OGMtMTggMC0zMy44LTEyLjEtMzguNi0yOS41bC0yNC04OGMtNS4zLTE5LjQgNC42LTM5LjcgMjMuMi00Ny40bDk2LTQwYzE2LjMtNi44IDM1LjItMi4xIDQ2LjMgMTEuNkwyMDcuMyAzNjhjNzAuNC0zMy4zIDEyNy40LTkwLjMgMTYwLjctMTYwLjdMMzE4LjcgMTY3Yy0xMy43LTExLjItMTguNC0zMC0xMS42LTQ2LjNsNDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob25lU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjAxLjIgNS4xYzEwLjQtOC4yIDI1LjUtNi4zIDMzLjcgNC4xczYuMyAyNS41LTQuMSAzMy43bC01OTIgNDY0Yy0xMC40IDguMi0yNS41IDYuMy0zMy43LTQuMXMtNi4zLTI1LjUgNC4xLTMzLjdsMTU1LjYtMTIyQzEwMS44IDI3MCA2NCAxNzEuNCA2NCA2NGMwLTE4IDEyLjEtMzMuOCAyOS41LTM4LjZsODgtMjRjMTkuNC01LjMgMzkuNyA0LjYgNDcuNCAyMy4ybDQwIDk2YzYuOCAxNi4zIDIuMSAzNS4yLTExLjYgNDYuM0wyMDggMjA3LjNjMTIgMjUuNSAyNy4yIDQ5LjIgNDUgNzAuN0w2MDEuMiA1LjF6TTIzNC4zIDQxNS42bDkxLjMtNzJjMTMuNyA5LjEgMjggMTcuMyA0MyAyNC4zTDQwOSAzMTguN2MxMS4yLTEzLjcgMzAtMTguNCA0Ni4zLTExLjZsOTYgNDBjMTguNiA3LjcgMjguNSAyOCAyMy4yIDQ3LjRsLTI0IDg4QzU0NS44IDQ5OS45IDUzMCA1MTIgNTEyIDUxMmMtMTA0LjkgMC0yMDEuMy0zNi0yNzcuNy05Ni40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVZvbHVtZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODAgMEM0MDguMSAwIDUxMiAxMDMuOSA1MTIgMjMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtMTAxLjYtODIuNC0xODQtMTg0LTE4NGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptOCAxOTJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0tMzItNzJjMC0xMy4zIDEwLjctMjQgMjQtMjRjNzUuMSAwIDEzNiA2MC45IDEzNiAxMzZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC00OC42LTM5LjQtODgtODgtODhjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek0xMTcuNSAxLjRjMTkuNC01LjMgMzkuNyA0LjYgNDcuNCAyMy4ybDQwIDk2YzYuOCAxNi4zIDIuMSAzNS4yLTExLjYgNDYuM0wxNDQgMjA3LjNjMzMuMyA3MC40IDkwLjMgMTI3LjQgMTYwLjcgMTYwLjdMMzQ1IDMxOC43YzExLjItMTMuNyAzMC0xOC40IDQ2LjMtMTEuNmw5NiA0MGMxOC42IDcuNyAyOC41IDI4IDIzLjIgNDcuNGwtMjQgODhDNDgxLjggNDk5LjkgNDY2IDUxMiA0NDggNTEyQzIwMC42IDUxMiAwIDMxMS40IDAgNjRDMCA0NiAxMi4xIDMwLjIgMjkuNSAyNS40bDg4LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjQuOSAyNC42Yy03LjctMTguNi0yOC0yOC41LTQ3LjQtMjMuMmwtODggMjRDMTIuMSAzMC4yIDAgNDYgMCA2NEMwIDMxMS40IDIwMC42IDUxMiA0NDggNTEyYzE4IDAgMzMuOC0xMi4xIDM4LjYtMjkuNWwyNC04OGM1LjMtMTkuNC00LjYtMzkuNy0yMy4yLTQ3LjRsLTk2LTQwYy0xNi4zLTYuOC0zNS4yLTIuMS00Ni4zIDExLjZMMzA0LjcgMzY4QzIzNC4zIDMzNC43IDE3Ny4zIDI3Ny43IDE0NCAyMDcuM0wxOTMuMyAxNjdjMTMuNy0xMS4yIDE4LjQtMzAgMTEuNi00Ni4zbC00MC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvdG9GaWxtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwSDU3NmMzNS4zIDAgNjQgMjguNyA2NCA2NFYyODhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMjU2Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NGMwLTM1LjMgMjguNy02NCA2NC02NHpNNDc2IDEwNi43QzQ3MS41IDEwMCA0NjQgOTYgNDU2IDk2cy0xNS41IDQtMjAgMTAuN2wtNTYgODRMMzYyLjcgMTY5Yy00LjYtNS43LTExLjUtOS0xOC43LTlzLTE0LjIgMy4zLTE4LjcgOWwtNjQgODBjLTUuOCA3LjItNi45IDE3LjEtMi45IDI1LjRzMTIuNCAxMy42IDIxLjYgMTMuNmg4MCA0OEg1NTJjOC45IDAgMTctNC45IDIxLjItMTIuN3MzLjctMTcuMy0xLjItMjQuNmwtOTYtMTQ0ek0zMzYgOTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNjQgMTI4aDk2VjM4NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0SDUxMnY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0em04IDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2SDg4YzguOCAwIDE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDcyem0wIDEwNGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNkg4OGM4LjggMCAxNi03LjIgMTYtMTZWMzEyYzAtOC44LTcuMi0xNi0xNi0xNkg3MnptMCAxMDRjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZIODhjOC44IDAgMTYtNy4yIDE2LTE2VjQxNmMwLTguOC03LjItMTYtMTYtMTZINzJ6bTMzNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMTZjOC44IDAgMTYtNy4yIDE2LTE2VjQxNmMwLTguOC03LjItMTYtMTYtMTZINDI0Yy04LjggMC0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZ2d5QmFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgOTZsMCAuN2MtNS4zLS40LTEwLjYtLjctMTYtLjdIMjU2Yy0xNi41IDAtMzIuNSAyLjEtNDcuOCA2Yy0uMS0yLS4yLTQtLjItNmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2em0tMTYgMzJjMy41IDAgNyAuMSAxMC40IC4zYzQuMiAuMyA4LjQgLjcgMTIuNiAxLjNDNDI0LjYgMTA5LjEgNDUwLjggOTYgNDgwIDk2aDExLjVjMTAuNCAwIDE4IDkuOCAxNS41IDE5LjlsLTEzLjggNTUuMmMxNS44IDE0LjggMjguNyAzMi44IDM3LjUgNTIuOUg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJINTEyYy05LjEgMTIuMS0xOS45IDIyLjktMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJINDE2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0NDhIMjU2djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2Yy0zNC45LTI2LjItNTguNy02Ni4zLTYzLjItMTEySDY4Yy0zNy42IDAtNjgtMzAuNC02OC02OHMzMC40LTY4IDY4LTY4aDRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINjhjLTExIDAtMjAgOS0yMCAyMHM5IDIwIDIwIDIwSDk5LjJjMTIuMS01OS44IDU3LjctMTA3LjUgMTE2LjMtMTIyLjhjMTIuOS0zLjQgMjYuNS01LjIgNDAuNS01LjJIMzg0em02NCAxMzZhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGlsbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDk2Yy0yNi41IDAtNDggMjEuNS00OCA0OFYyNTZoOTZWMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0wIDE0NEMwIDgyLjEgNTAuMSAzMiAxMTIgMzJzMTEyIDUwLjEgMTEyIDExMlYzNjhjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJTMCA0MjkuOSAwIDM2OFYxNDR6TTU1NC45IDM5OS40Yy03LjEgMTIuMy0yMy43IDEzLjEtMzMuOCAzLjFMMzMzLjUgMjE0LjljLTEwLTEwLTkuMy0yNi43IDMuMS0zMy44QzM2MCAxNjcuNyAzODcuMSAxNjAgNDE2IDE2MGM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MGMwIDI4LjktNy43IDU2LTIxLjEgNzkuNHptLTU5LjUgNTkuNUM0NzIgNDcyLjMgNDQ0LjkgNDgwIDQxNiA0ODBjLTg4LjQgMC0xNjAtNzEuNi0xNjAtMTYwYzAtMjguOSA3LjctNTYgMjEuMS03OS40YzcuMS0xMi4zIDIzLjctMTMuMSAzMy44LTMuMUw0OTguNSA0MjUuMWMxMCAxMCA5LjMgMjYuNy0zLjEgMzMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGl6emFTbGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjkuNyAuOWMtMjIuOC0xLjYtNDEuOSAxNC00Ny41IDM0LjdMMTEwLjQgODBjLjUgMCAxLjEgMCAxLjYgMGMxNzYuNyAwIDMyMCAxNDMuMyAzMjAgMzIwYzAgLjUgMCAxLjEgMCAxLjZsNDQuNC0xMS44YzIwLjgtNS41IDM2LjMtMjQuNyAzNC43LTQ3LjVDNDk4LjUgMTU5LjUgMzUyLjUgMTMuNSAxNjkuNyAuOXpNMzk5LjggNDEwLjJjLjEtMy40IC4yLTYuOCAuMi0xMC4yYzAtMTU5LjEtMTI4LjktMjg4LTI4OC0yODhjLTMuNCAwLTYuOCAuMS0xMC4yIC4yTC41IDQ5MS45Yy0xLjUgNS41IC4xIDExLjQgNC4xIDE1LjRzOS45IDUuNiAxNS40IDQuMUwzOTkuOCA0MTAuMnpNMTc2IDIwOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0IDEyOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek05NiAzODRhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhY2VPZldvcnNoaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEwOS4zVjIxNy42TDE4My4zIDI0MmMtMTQuNSA4LjctMjMuMyAyNC4zLTIzLjMgNDEuMlY1MTJoOTZWNDE2YzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR2OTZoOTZWMjgzLjJjMC0xNi45LTguOC0zMi41LTIzLjMtNDEuMkw0MTYgMjE3LjZWMTA5LjNjMC04LjUtMy40LTE2LjYtOS40LTIyLjZMMzMxLjMgMTEuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMjMzLjQgODYuNmMtNiA2LTkuNCAxNC4xLTkuNCAyMi42ek0yNC45IDMzMC4zQzkuNSAzMzguOCAwIDM1NC45IDAgMzcyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDgwVjI3My42TDI0LjkgMzMwLjN6TTU5MiA1MTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzcyLjRjMC0xNy41LTkuNS0zMy42LTI0LjktNDIuMUw1MTIgMjczLjZWNTEyaDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZUFycml2YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjMgMTY2LjlMMCA2OEMwIDU3LjcgOS41IDUwLjEgMTkuNSA1Mi4zbDM1LjYgNy45YzEwLjYgMi4zIDE5LjIgOS45IDIzIDIwTDk2IDEyOGwxMjcuMyAzNy42TDE4MS44IDIwLjRDMTc4LjkgMTAuMiAxODYuNiAwIDE5Ny4yIDBoNDAuMWMxMS42IDAgMjIuMiA2LjIgMjcuOSAxNi4zbDEwOSAxOTMuOCAxMDcuMiAzMS43YzE1LjkgNC43IDMwLjggMTIuNSA0My43IDIyLjhsMzQuNCAyNy42YzI0IDE5LjIgMTguMSA1Ny4zLTEwLjcgNjguMmMtNDEuMiAxNS42LTg2LjIgMTguMS0xMjguOCA3TDEyMS43IDI4OS44Yy0xMS4xLTIuOS0yMS4yLTguNy0yOS4zLTE2LjlMOS41IDE4OS40Yy01LjktNi05LjMtMTQuMS05LjMtMjIuNXpNMzIgNDQ4SDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptOTYtODBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTI4LTE2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGMtMzUgMC02NCA1OS41LTY0IDkzLjd2ODQuNkw4LjEgMjgzLjRjLTUgMi44LTguMSA4LjItOC4xIDEzLjl2NjUuNWMwIDEwLjYgMTAuMiAxOC4zIDIwLjQgMTUuNGwxNzEuNi00OSAwIDcwLjktNTcuNiA0My4yYy00IDMtNi40IDcuOC02LjQgMTIuOHY0MmMwIDcuOCA2LjMgMTQgMTQgMTRjMS4zIDAgMi42LS4yIDMuOS0uNUwyNTYgNDgwbDExMC4xIDMxLjVjMS4zIC40IDIuNiAuNSAzLjkgLjVjNiAwIDExLjEtMy43IDEzLjEtOUMzNDQuNSA0NzAuNyAzMjAgNDIyLjIgMzIwIDM2OGMwLTYwLjYgMzAuNi0xMTQgNzcuMS0xNDUuNkwzMjAgMTc4LjNWOTMuN0MzMjAgNTkuNSAyOTIgMCAyNTYgMHpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGMtMzUgMC02NCA1OS41LTY0IDkzLjd2ODQuNkw4LjEgMjgzLjRjLTUgMi44LTguMSA4LjItOC4xIDEzLjl2NjUuNWMwIDEwLjYgMTAuMiAxOC4zIDIwLjQgMTUuNGwxNzEuNi00OSAwIDcwLjktNTcuNiA0My4yYy00IDMtNi40IDcuOC02LjQgMTIuOHY0MmMwIDcuOCA2LjMgMTQgMTQgMTRjMS4zIDAgMi42LS4yIDMuOS0uNUwyNTYgNDgwbDExMC4xIDMxLjVjMS4zIC40IDIuNiAuNSAzLjkgLjVjNiAwIDExLjEtMy43IDEzLjEtOUMzNDQuNSA0NzAuNyAzMjAgNDIyLjIgMzIwIDM2OGMwLTYwLjYgMzAuNi0xMTQgNzcuMS0xNDUuNkwzMjAgMTc4LjNWOTMuN0MzMjAgNTkuNSAyOTIgMCAyNTYgMHpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGMtMzUgMC02NCA1OS41LTY0IDkzLjd2ODQuNkw4LjEgMjgzLjRjLTUgMi44LTguMSA4LjItOC4xIDEzLjl2NjUuNWMwIDEwLjYgMTAuMiAxOC4zIDIwLjQgMTUuNGwxNzEuNi00OSAwIDcwLjktNTcuNiA0My4yYy00IDMtNi40IDcuOC02LjQgMTIuOHY0MmMwIDcuOCA2LjMgMTQgMTQgMTRjMS4zIDAgMi42LS4yIDMuOS0uNUwyNTYgNDgwbDExMC4xIDMxLjVjMS4zIC40IDIuNiAuNSAzLjkgLjVjNiAwIDExLjEtMy43IDEzLjEtOUMzNDQuNSA0NzAuNyAzMjAgNDIyLjIgMzIwIDM2OGMwLTYwLjYgMzAuNi0xMTQgNzcuMS0xNDUuNkwzMjAgMTc4LjNWOTMuN0MzMjAgNTkuNSAyOTIgMCAyNTYgMHpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNTE4LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQ5NiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQ3My40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDk2IDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lRGVwYXJ0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4MSAxMTQuOUwxODYuMSA0MS44Yy0xNi43LTYuMi0zNS4yLTUuMy01MS4xIDIuN0w4OS4xIDY3LjRDNzggNzMgNzcuMiA4OC41IDg3LjYgOTUuMmwxNDYuOSA5NC41TDEzNiAyNDAgNzcuOCAyMTQuMWMtOC43LTMuOS0xOC44LTMuNy0yNy4zIC42TDE4LjMgMjMwLjhjLTkuMyA0LjctMTEuOCAxNi44LTUgMjQuN2w3My4xIDg1LjNjNi4xIDcuMSAxNSAxMS4yIDI0LjMgMTEuMkgyNDguNGM1IDAgOS45LTEuMiAxNC4zLTMuNEw1MzUuNiAyMTIuMmM0Ni41LTIzLjMgODIuNS02My4zIDEwMC44LTExMkM2NDUuOSA3NSA2MjcuMiA0OCA2MDAuMiA0OEg1NDIuOGMtMjAuMiAwLTQwLjIgNC44LTU4LjIgMTRMMzgxIDExNC45ek0wIDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDkzLjdDMTkyIDU5LjUgMjIxIDAgMjU2IDBjMzYgMCA2NCA1OS41IDY0IDkzLjd2ODQuNmwxMDEuOCA1OC4yQzQxOCAyNDcuNiA0MTYgMjU5LjYgNDE2IDI3MnYyNC42Yy0xNy45IDEwLjQtMzAuMyAyOS4xLTMxLjggNTAuOUwzMjAgMzI5LjFWNDAwbDU3LjYgNDMuMmM0IDMgNi40IDcuOCA2LjQgMTIuOHYyNCAxOGMwIDcuOC02LjMgMTQtMTQgMTRjLTEuMyAwLTIuNi0uMi0zLjktLjVMMjU2IDQ4MCAxNDUuOSA1MTEuNWMtMS4zIC40LTIuNiAuNS0zLjkgLjVjLTcuOCAwLTE0LTYuMy0xNC0xNFY0NTZjMC01IDIuNC05LjggNi40LTEyLjhMMTkyIDQwMGwwLTcwLjktMTcxLjYgNDlDMTAuMiAzODEuMSAwIDM3My40IDAgMzYyLjhWMjk3LjNjMC01LjcgMy4xLTExIDguMS0xMy45TDE5MiAxNzguM1Y5My43ek01MjggMjQwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY0OGg2NFYyNzJjMC0xNy43LTE0LjMtMzItMzItMzJ6bS04MCAzMmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwdjQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0NDhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMlYyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjYgMzIwaDczLjhjMzQuMiAwIDkzLjctMjggOTMuNy02NGMwLTM1LTU5LjUtNjQtOTMuNy02NGwtMTE2LjYgMEwyOTcuMiAxNi4xQzI5MS41IDYuMiAyODAuOSAwIDI2OS40IDBIMjEzLjJjLTEwLjYgMC0xOC4zIDEwLjItMTUuNCAyMC40bDQwLjMgMTQwLjlMMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w0NDAuNiAzMjB6bS03OC4xIDYxLjZMNDEuNSAxMjguN0MzNiAxMzAuNiAzMiAxMzUuOSAzMiAxNDJjMCAxLjMgLjIgMi42IC41IDMuOUw2NCAyNTYgMzIuNSAzNjYuMWMtLjQgMS4zLS41IDIuNi0uNSAzLjljMCA3LjggNi4zIDE0IDE0IDE0SDg4YzUgMCA5LjgtMi40IDEyLjgtNi40TDE0NCAzMjBIMjQ2LjlsLTQ5IDE3MS42Yy0yLjkgMTAuMiA0LjggMjAuNCAxNS40IDIwLjRsNTYuMiAwYzExLjUgMCAyMi4xLTYuMiAyNy44LTE2LjFsNjUuMy0xMTQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgOTMuN0MxOTIgNTkuNSAyMjEgMCAyNTYgMGMzNiAwIDY0IDU5LjUgNjQgOTMuN2wwIDY2LjNMNDk3LjggMjc4LjVjOC45IDUuOSAxNC4yIDE1LjkgMTQuMiAyNi42djU2LjdjMCAxMC45LTEwLjcgMTguNi0yMS4xIDE1LjJMMzIwIDMyMHY4MGw1Ny42IDQzLjJjNCAzIDYuNCA3LjggNi40IDEyLjh2NDJjMCA3LjgtNi4zIDE0LTE0IDE0Yy0xLjMgMC0yLjYtLjItMy45LS41TDI1NiA0ODAgMTQ1LjkgNTExLjVjLTEuMyAuNC0yLjYgLjUtMy45IC41Yy03LjggMC0xNC02LjMtMTQtMTRWNDU2YzAtNSAyLjQtOS44IDYuNC0xMi44TDE5MiA0MDBWMzIwTDIxLjEgMzc3QzEwLjcgMzgwLjQgMCAzNzIuNyAwIDM2MS44VjMwNS4xYzAtMTAuNyA1LjMtMjAuNyAxNC4yLTI2LjZMMTkyIDE2MFY5My43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODIuMyAxOTJjMzQuMiAwIDkzLjcgMjkgOTMuNyA2NGMwIDM2LTU5LjUgNjQtOTMuNyA2NGwtMTE2LjYgMEwyNjUuMiA0OTUuOWMtNS43IDEwLTE2LjMgMTYuMS0yNy44IDE2LjFsLTU2LjIgMGMtMTAuNiAwLTE4LjMtMTAuMi0xNS40LTIwLjRsNDktMTcxLjZMMTEyIDMyMCA2OC44IDM3Ny42Yy0zIDQtNy44IDYuNC0xMi44IDYuNGwtNDIgMGMtNy44IDAtMTQtNi4zLTE0LTE0YzAtMS4zIC4yLTIuNiAuNS0zLjlMMzIgMjU2IC41IDE0NS45Yy0uNC0xLjMtLjUtMi42LS41LTMuOWMwLTcuOCA2LjMtMTQgMTQtMTRsNDIgMGM1IDAgOS44IDIuNCAxMi44IDYuNEwxMTIgMTkybDEwMi45IDAtNDktMTcxLjZDMTYyLjkgMTAuMiAxNzAuNiAwIDE4MS4yIDBsNTYuMiAwYzExLjUgMCAyMi4xIDYuMiAyNy44IDE2LjFMMzY1LjcgMTkybDExNi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW50V2lsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTIwYzAtMzAuOSAyNS4xLTU2IDU2LTU2czU2IDI1LjEgNTYgNTZ2MTNjLTI5LjMgMTAtNDggMzQuNS00OCA3MC4xYzAgMjcuOSAyNS4zIDc0LjggNjYgMTExLjZjMy44IDMuNSA4LjkgNS4zIDE0IDUuM3MxMC4yLTEuOCAxNC01LjNjNDAuNy0zNi44IDY2LTgzLjcgNjYtMTExLjZjMC0zNS42LTE4LjctNjAuMi00OC03MC4xVjEyMEM0NjQgNTMuNyA0MTAuMyAwIDM0NCAwUzIyNCA1My43IDIyNCAxMjB2MjEuOEMyMDcuMyAxMzMgMTg4LjIgMTI4IDE2OCAxMjhjLTY2LjMgMC0xMjAgNTMuNy0xMjAgMTIwdjEzYy0yOS4zIDEwLTQ4IDM0LjUtNDggNzAuMUMwIDM1OSAyNS4zIDQwNS45IDY2IDQ0Mi43YzMuOCAzLjUgOC45IDUuMyAxNCA1LjNzMTAuMi0xLjggMTQtNS4zYzQwLjctMzYuOCA2Ni04My43IDY2LTExMS42YzAtMzUuNi0xOC43LTYwLjItNDgtNzAuMVYyNDhjMC0zMC45IDI1LjEtNTYgNTYtNTZzNTYgMjUuMSA1NiA1NnYzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODAgMjQ4IDEyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhdGVXaGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMzJjNDQuMiAwIDgwIDM1LjggODAgODB2MTZjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MFY0OGMwLTguOCA3LjItMTYgMTYtMTZ6TTU2IDY0aDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDU2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0ek0yNCAxMzZIMTM2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0em04IDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDU2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNMjcyIDQ4YzAtOC44IDcuMi0xNiAxNi0xNmM0NC4yIDAgODAgMzUuOCA4MCA4MHYxNmMwIDguOC03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjQ4ek00MDAgMzJjNDQuMiAwIDgwIDM1LjggODAgODB2MTZjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MFY0OGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2MHYxNmMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI1NmMwLTQ0LjIgMzUuOC04MCA4MC04MGM4LjggMCAxNiA3LjIgMTYgMTZ6TTM1MiAxNzZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZWMjU2YzAtNDQuMiAzNS44LTgwIDgwLTgwem0tOTYgMTZ2MTZjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNTZjMC00NC4yIDM1LjgtODAgODAtODBjOC44IDAgMTYgNy4yIDE2IDE2ek0zLjUgMzQ3LjZDMS42IDMzMi45IDEzIDMyMCAyNy44IDMyMEg0ODQuMmMxNC44IDAgMjYuMiAxMi45IDI0LjQgMjcuNkM1MDIuMyAzOTcuOCA0NjQuMiA0MzcgNDE2IDQ0NnYyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ2LTJjLTQ4LjItOS04Ni4zLTQ4LjItOTIuNS05OC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTczIDM5Yy0xNC44LTkuMS0zMy40LTkuNC00OC41LS45UzAgNjIuNiAwIDgwVjQzMmMwIDE3LjQgOS40IDMzLjQgMjQuNSA0MS45czMzLjcgOC4xIDQ4LjUtLjlMMzYxIDI5N2MxNC4zLTguNyAyMy0yNC4yIDIzLTQxcy04LjctMzIuMi0yMy00MUw3MyAzOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1Z0NpcmNsZUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6TTQzMiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em00Ny45LTIyNWM0LjMgMy43IDUuNCA5LjkgMi42IDE0LjlMNDUyLjQgMzU2SDQ4OGM1LjIgMCA5LjggMy4zIDExLjQgOC4ycy0uMSAxMC4zLTQuMiAxMy40bC05NiA3MmMtNC41IDMuNC0xMC44IDMuMi0xNS4xLS42cy01LjQtOS45LTIuNi0xNC45TDQxMS42IDM4MEgzNzZjLTUuMiAwLTkuOC0zLjMtMTEuNC04LjJzLjEtMTAuMyA0LjItMTMuNGw5Ni03MmM0LjUtMy40IDEwLjgtMy4yIDE1LjEgLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWdDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzc4LjMgMCA2NCAxNC4zIDY0IDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnYzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MTIuOGMxMi4zLTIuNSAyNC4xLTYuNCAzNS4xLTExLjVjLTIuMS0xMC44LTMuMS0yMS45LTMuMS0zMy4zYzAtODAuMyA1My44LTE0OCAxMjcuMy0xNjkuMmMuNS0yLjIgLjctNC41IC43LTYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNNTc2IDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDE2IDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1Z0NpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMydjMyYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxMi44YzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVnQ2lyY2xlTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6TTU3NiAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTY0IDBjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVnQ2lyY2xlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzc4LjMgMCA2NCAxNC4zIDY0IDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnYzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MTIuOGMxMi4zLTIuNSAyNC4xLTYuNCAzNS4xLTExLjVjLTIuMS0xMC44LTMuMS0yMS45LTMuMS0zMy4zYzAtODAuMyA1My44LTE0OCAxMjcuMy0xNjkuMmMuNS0yLjIgLjctNC41IC43LTYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTE2LTIwOHY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg0NDh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzg0SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg0OFYzMDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1Z0NpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMydjMyYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxMi44YzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w0NTQuNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDMyIDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDA5LjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0MzIgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1ZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzc4LjMgMCA2NCAxNC4zIDY0IDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnYzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MTIuOEMyOTcgMzk4IDM1MiAzMzMuNCAzNTIgMjU2VjIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1c01pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYxNDRINDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMTYwVjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIwOEgzMzZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjI0VjMyek0wIDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyMjRINDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMTkyVjQzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI4OEg0MDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjU2VjgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb2RjYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOS40IDM3MmM0OC41LTMxLjMgODAuNi04NS45IDgwLjYtMTQ4YzAtOTcuMi03OC44LTE3Ni0xNzYtMTc2UzQ4IDEyNi44IDQ4IDIyNGMwIDYyLjEgMzIuMSAxMTYuNiA4MC42IDE0OGMxLjIgMTcuMyA0IDM4IDcuMiA1Ny4xbC4yIDFDNTYgMzk1LjggMCAzMTYuNSAwIDIyNEMwIDEwMC4zIDEwMC4zIDAgMjI0IDBTNDQ4IDEwMC4zIDQ0OCAyMjRjMCA5Mi41LTU2IDE3MS45LTEzNiAyMDYuMWwuMi0xLjFjMy4xLTE5LjIgNi0zOS44IDcuMi01N3ptLTIuMy0zOC4xYy0xLjYtNS43LTMuOS0xMS4xLTctMTYuMmMtNS44LTkuNy0xMy41LTE3LTIxLjktMjIuNGMxOS41LTE3LjYgMzEuOC00MyAzMS44LTcxLjNjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyOC4zIDEyLjMgNTMuOCAzMS44IDcxLjNjLTguNCA1LjQtMTYuMSAxMi43LTIxLjkgMjIuNGMtMy4xIDUuMS01LjQgMTAuNS03IDE2LjJDOTkuOCAzMDcuNSA4MCAyNjggODAgMjI0YzAtNzkuNSA2NC41LTE0NCAxNDQtMTQ0czE0NCA2NC41IDE0NCAxNDRjMCA0NC0xOS44IDgzLjUtNTAuOSAxMDkuOXpNMjI0IDMxMmMzMi45IDAgNjQgOC42IDY0IDQzLjhjMCAzMy0xMi45IDEwNC4xLTIwLjYgMTMyLjljLTUuMSAxOS0yNC41IDIzLjQtNDMuNCAyMy40cy0zOC4yLTQuNC00My40LTIzLjRjLTcuOC0yOC41LTIwLjYtOTkuNy0yMC42LTEzMi44YzAtMzUuMSAzMS4xLTQzLjggNjQtNDMuOHptMC0xNDRhNTYgNTYgMCAxIDEgMCAxMTIgNTYgNTYgMCAxIDEgMC0xMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvb1N0b3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzNi45IC4yYy01LjUtLjctMTEgMS40LTE0LjUgNS43cy00LjYgMTAuMS0yLjggMTUuM2MyLjggOC4yIDQuMyAxNi45IDQuMyAyNi4xYzAgMjEuNy04LjUgMzcuMi0yMS45IDQ3LjZjLTEzLjggMTAuOC0zNCAxNy01Ny44IDE3SDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRjMCAxMi4yIDMuNCAyMy41IDkuMyAzMy4yQzMxLjcgMjE2LjIgMCAyNTIuNCAwIDI5NmMwIDQwLjkgMjggNzUuNCA2NS44IDg1LjJjLTUuMy0xOC41IDEtMzguNSAxNi4yLTUwLjdsMTYwLTEyOGMxNy42LTE0LjEgNDIuNi0xNCA2MC4yIC4yczIyLjggMzguNiAxMi44IDU4LjhMMjg1LjcgMzIwSDMwNGMyMC40IDAgMzguNSAxMi45IDQ1LjMgMzIuMWMzLjcgMTAuNiAzLjUgMjEuOCAwIDMxLjlIMzYwYzQ4LjYgMCA4OC0zOS40IDg4LTg4YzAtNDMuNi0zMS43LTc5LjgtNzMuMy04Ni44YzUuOS05LjcgOS4zLTIxLjEgOS4zLTMzLjJjMC0zNS4zLTI4LjctNjQtNjQtNjRoLTEuNGMuOS01LjQgMS40LTEwLjkgMS40LTE2LjZjMC00OC43LTM2LjEtODguOS04My4xLTk1LjJ6bTQ1LjEgMjI3LjRjLTUuOC00LjctMTQuMi00LjctMjAuMS0uMWwtMTYwIDEyOGMtNS4zIDQuMi03LjQgMTEuNC01LjEgMTcuOHM4LjMgMTAuNyAxNS4xIDEwLjdoNzAuMUwxMjkuNyA0ODguOGMtMy40IDYuNy0xLjYgMTQuOSA0LjMgMTkuNnMxNC4yIDQuNyAyMC4xIC4xbDE2MC0xMjhjNS4zLTQuMiA3LjQtMTEuNCA1LjEtMTcuOHMtOC4zLTEwLjctMTUuMS0xMC43SDIzMy45bDUyLjQtMTA0LjhjMy40LTYuNyAxLjYtMTQuOS00LjMtMTkuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OC45IC45Yy01LjUtLjctMTEgMS40LTE0LjUgNS43cy00LjYgMTAuMS0yLjggMTUuNGMyLjggOC4yIDQuMyAxNi45IDQuMyAyNi4xYzAgNDQuMS0zNS43IDc5LjktNzkuOCA4MEgxNjBjLTM1LjMgMC02NCAyOC43LTY0IDY0YzAgMTkuMSA4LjQgMzYuMyAyMS43IDQ4SDEwNGMtMzkuOCAwLTcyIDMyLjItNzIgNzJjMCAyMy4yIDExIDQzLjggMjggNTdjLTM0LjEgNS43LTYwIDM1LjMtNjAgNzFjMCAzOS44IDMyLjIgNzIgNzIgNzJINDQwYzM5LjggMCA3Mi0zMi4yIDcyLTcyYzAtMzUuNy0yNS45LTY1LjMtNjAtNzFjMTctMTMuMiAyOC0zMy44IDI4LTU3YzAtMzkuOC0zMi4yLTcyLTcyLTcySDM5NC4zYzEzLjMtMTEuNyAyMS43LTI4LjkgMjEuNy00OGMwLTM1LjMtMjguNy02NC02NC02NGgtNS41YzMuNS0xMCA1LjUtMjAuOCA1LjUtMzJjMC00OC42LTM2LjItODguOC04My4xLTk1LjF6TTE5MiAyNTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em05NiAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem02NCAxMDguM2MwIDIuNC0uNyA0LjgtMi4yIDYuN2MtOC4yIDEwLjUtMzkuNSA0NS05My44IDQ1cy04NS42LTM0LjYtOTMuOC00NWMtMS41LTEuOS0yLjItNC4zLTIuMi02LjdjMC02LjggNS41LTEyLjMgMTIuMy0xMi4zSDMzOS43YzYuOCAwIDEyLjMgNS41IDEyLjMgMTIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9vcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTQuNCA2LjZjMy41LTQuMyA5LTYuNSAxNC41LTUuN0MzMTUuOCA3LjIgMzUyIDQ3LjQgMzUyIDk2YzAgMTEuMi0xLjkgMjItNS41IDMySDM1MmMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDE5LjEtOC40IDM2LjMtMjEuNyA0OEg0MDhjMzkuOCAwIDcyIDMyLjIgNzIgNzJjMCAyMy4yLTExIDQzLjgtMjggNTdjMzQuMSA1LjcgNjAgMzUuMyA2MCA3MWMwIDM5LjgtMzIuMiA3Mi03MiA3Mkg3MmMtMzkuOCAwLTcyLTMyLjItNzItNzJjMC0zNS43IDI1LjktNjUuMyA2MC03MWMtMTctMTMuMi0yOC0zMy44LTI4LTU3YzAtMzkuOCAzMi4yLTcyIDcyLTcyaDEzLjdDMTA0LjQgMjI4LjMgOTYgMjExLjEgOTYgMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0aDE2LjJjNDQuMS0uMSA3OS44LTM1LjkgNzkuOC04MGMwLTkuMi0xLjUtMTcuOS00LjMtMjYuMWMtMS44LTUuMi0uOC0xMS4xIDIuOC0xNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb3dlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJ6TTE0My41IDEyMC42YzEzLjYtMTEuMyAxNS40LTMxLjUgNC4xLTQ1LjFzLTMxLjUtMTUuNC00NS4xLTQuMUM0OS43IDExNS40IDE2IDE4MS44IDE2IDI1NmMwIDEzMi41IDEwNy41IDI0MCAyNDAgMjQwczI0MC0xMDcuNSAyNDAtMjQwYzAtNzQuMi0zMy44LTE0MC42LTg2LjYtMTg0LjZjLTEzLjYtMTEuMy0zMy44LTkuNC00NS4xIDQuMXMtOS40IDMzLjggNC4xIDQ1LjFjMzguOSAzMi4zIDYzLjUgODEgNjMuNSAxMzUuNGMwIDk3LjItNzguOCAxNzYtMTc2IDE3NnMtMTc2LTc4LjgtMTc2LTE3NmMwLTU0LjQgMjQuNy0xMDMuMSA2My41LTEzNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmVzY3JpcHRpb25Cb3R0bGVNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0VjMyem0zMiA5NkgzNTJWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6TTE2MCAyNDB2NDhIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzUyaDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2SDIyNFYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmVzY3JpcHRpb25Cb3R0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRWMzJ6bTMyIDk2SDM1MlY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjQxNkgxNDRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzJWMzIwSDE0NGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMlYyMjRIMTQ0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMyVjEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyVjE5MnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIyNGg1MC43bDEyOCAxMjhMMTM3LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjg4IDM5Ny4zIDM5My40IDUwMi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMzMzLjMgMzUyIDQzOC42IDI0Ni42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDI4OCAzMDYuN2wtODUuOC04NS44QzI1MS40IDIwOS4xIDI4OCAxNjQuOCAyODggMTEyQzI4OCA1MC4xIDIzNy45IDAgMTc2IDBIMzJ6TTE3NiAxNjBINjRWNjRIMTc2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMEM5Mi43IDAgNjQgMjguNyA2NCA2NHY5Nmg2NFY2NEgzNTQuN0wzODQgOTMuM1YxNjBoNjRWOTMuM2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0w0MDAgMTguN0MzODggNi43IDM3MS43IDAgMzU0LjcgMEgxMjh6TTM4NCAzNTJ2MzIgNjRIMTI4VjM4NCAzNjggMzUySDM4NHptNjQgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2NHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzg0ek00MzIgMjQ4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHVtcE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDMydjk2SDI1NlY5Nmg2MC4xYzQuMiAwIDguMyAxLjcgMTEuMyA0LjdsMzMuOSAzMy45YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMzcyLjcgNTUuNGMtMTUtMTUtMzUuNC0yMy40LTU2LjYtMjMuNEgyNTZjMC0xNy43LTE0LjMtMzItMzItMzJIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMTE3LjQgMTYwYy0zMy4zIDAtNjEgMjUuNS02My44IDU4LjdMMzUgNDQyLjdDMzEuOSA0ODAgNjEuMyA1MTIgOTguOCA1MTJIMjg1LjJjMzcuNCAwIDY2LjktMzIgNjMuOC02OS4zbC0xOC43LTIyNGMtMi44LTMzLjItMzAuNS01OC43LTYzLjgtNTguN0gxMTcuNHpNMjE2IDI4MHYzMmgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZ2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzYwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGgzMlYyODBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHVtcFNvYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDMydjk2SDI1NlY5Nmg2MC4xYzQuMiAwIDguMyAxLjcgMTEuMyA0LjdsMzMuOSAzMy45YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMzcyLjcgNTUuNGMtMTUtMTUtMzUuNC0yMy40LTU2LjYtMjMuNEgyNTZjMC0xNy43LTE0LjMtMzItMzItMzJIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMTE3LjQgMTYwYy0zMy4zIDAtNjEgMjUuNS02My44IDU4LjdMMzUgNDQyLjdDMzEuOSA0ODAgNjEuMyA1MTIgOTguOCA1MTJIMjg1LjJjMzcuNCAwIDY2LjktMzIgNjMuOC02OS4zbC0xOC43LTIyNGMtMi44LTMzLjItMzAuNS01OC43LTYzLjgtNTguN0gxMTcuNHpNMjU2IDM2MGMwIDM1LjMtMjguNyA1Ni02NCA1NnMtNjQtMjAuNy02NC01NmMwLTMyLjUgMzctODAuOSA1MC45LTk3LjljMy4yLTMuOSA4LjEtNi4xIDEzLjEtNi4xczkuOSAyLjIgMTMuMSA2LjFDMjE5IDI3OS4xIDI1NiAzMjcuNSAyNTYgMzYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQdXp6bGVQaWVjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTA0LjhjMC05LjItNS44LTE3LjMtMTMuMi0yMi44QzE2Ny4yIDczLjMgMTYwIDYxLjMgMTYwIDQ4YzAtMjYuNSAyOC43LTQ4IDY0LTQ4czY0IDIxLjUgNjQgNDhjMCAxMy4zLTcuMiAyNS4zLTE4LjggMzRjLTcuNCA1LjUtMTMuMiAxMy42LTEzLjIgMjIuOGMwIDEyLjggMTAuNCAyMy4yIDIzLjIgMjMuMkgzMzZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NTYuOGMwIDEyLjggMTAuNCAyMy4yIDIzLjIgMjMuMmM5LjIgMCAxNy4zLTUuOCAyMi44LTEzLjJjOC43LTExLjYgMjAuNy0xOC44IDM0LTE4LjhjMjYuNSAwIDQ4IDI4LjcgNDggNjRzLTIxLjUgNjQtNDggNjRjLTEzLjMgMC0yNS4zLTcuMi0zNC0xOC44Yy01LjUtNy40LTEzLjYtMTMuMi0yMi44LTEzLjJjLTEyLjggMC0yMy4yIDEwLjQtMjMuMiAyMy4yVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEgyNzkuMmMtMTIuOCAwLTIzLjItMTAuNC0yMy4yLTIzLjJjMC05LjIgNS44LTE3LjMgMTMuMi0yMi44YzExLjYtOC43IDE4LjgtMjAuNyAxOC44LTM0YzAtMjYuNS0yOC43LTQ4LTY0LTQ4cy02NCAyMS41LTY0IDQ4YzAgMTMuMyA3LjIgMjUuMyAxOC44IDM0YzcuNCA1LjUgMTMuMiAxMy42IDEzLjIgMjIuOGMwIDEyLjgtMTAuNCAyMy4yLTIzLjIgMjMuMkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzQzLjJDMCAzMzAuNCAxMC40IDMyMCAyMy4yIDMyMGM5LjIgMCAxNy4zIDUuOCAyMi44IDEzLjJDNTQuNyAzNDQuOCA2Ni43IDM1MiA4MCAzNTJjMjYuNSAwIDQ4LTI4LjcgNDgtNjRzLTIxLjUtNjQtNDgtNjRjLTEzLjMgMC0yNS4zIDcuMi0zNCAxOC44QzQwLjUgMjUwLjIgMzIuNCAyNTYgMjMuMiAyNTZDMTAuNCAyNTYgMCAyNDUuNiAwIDIzMi44VjE3NmMwLTI2LjUgMjEuNS00OCA0OC00OEgxNjguOGMxMi44IDAgMjMuMi0xMC40IDIzLjItMjMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAyNTZjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBjMjguOSAwIDU2LTcuNyA3OS40LTIxLjFsLTcyLTg2LjRjLTExLjMtMTMuNi05LjUtMzMuOCA0LjEtNDUuMXMzMy44LTkuNSA0NS4xIDQuMWw3MC45IDg1LjFDMzcxLjkgMzI1LjggMzg0IDI5Mi4zIDM4NCAyNTZjMC04OC40LTcxLjYtMTYwLTE2MC0xNjBTNjQgMTY3LjYgNjQgMjU2ek0zNDQuOSA0NDQuNkMzMTAgNDY3IDI2OC41IDQ4MCAyMjQgNDgwQzEwMC4zIDQ4MCAwIDM3OS43IDAgMjU2UzEwMC4zIDMyIDIyNCAzMnMyMjQgMTAwLjMgMjI0IDIyNGMwIDU2LjEtMjAuNiAxMDcuNC01NC43IDE0Ni43bDQ3LjMgNTYuOGMxMS4zIDEzLjYgOS41IDMzLjgtNC4xIDQ1LjFzLTMzLjggOS41LTQ1LjEtNC4xbC00Ni42LTU1Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVFyY29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDgwQzAgNTMuNSAyMS41IDMyIDQ4IDMyaDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MHpNNjQgOTZ2NjRoNjRWOTZINjR6TTAgMzM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzMzZ6bTY0IDE2djY0aDY0VjM1Mkg2NHpNMzA0IDMyaDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDMwNGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDh6bTgwIDY0SDMyMHY2NGg2NFY5NnpNMjU2IDMwNGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2czcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzLTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMDR6TTM2OCA0ODBhMTYgMTYgMCAxIDEgMC0zMiAxNiAxNiAwIDEgMSAwIDMyem02NCAwYTE2IDE2IDAgMSAxIDAtMzIgMTYgMTYgMCAxIDEgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVlc3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0aDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0djMuNmMwIDIxLjgtMTEuMSA0Mi4xLTI5LjQgNTMuOGwtNDIuMiAyNy4xYy0yNS4yIDE2LjItNDAuNCA0NC4xLTQwLjQgNzRWMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ2LTEuNGMwLTguMiA0LjItMTUuOCAxMS0yMC4ybDQyLjItMjcuMWMzNi42LTIzLjYgNTguOC02NC4xIDU4LjgtMTA3LjdWMTYwYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4SDE0NEM3My4zIDMyIDE2IDg5LjMgMTYgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6bTgwIDMyMGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1b3RlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDIxNkMwIDE0OS43IDUzLjcgOTYgMTIwIDk2aDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJoLThjLTMwLjkgMC01NiAyNS4xLTU2IDU2djhoNjRjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjMyMCAyODggMjE2em0yNTYgMGMwLTY2LjMgNTMuNy0xMjAgMTIwLTEyMGg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyaC04Yy0zMC45IDAtNTYgMjUuMS01NiA1NnY4aDY0YzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDMyMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzIwIDI4OCAyMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1b3RlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDI5NmMwIDY2LjMtNTMuNyAxMjAtMTIwIDEyMGgtOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg4YzMwLjkgMCA1Ni0yNS4xIDU2LTU2di04SDMyMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0aDY0YzM1LjMgMCA2NCAyOC43IDY0IDY0djMyIDMyIDcyem0tMjU2IDBjMCA2Ni4zLTUzLjcgMTIwLTEyMCAxMjBINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOGMzMC45IDAgNTYtMjUuMSA1Ni01NnYtOEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0aDY0YzM1LjMgMCA2NCAyOC43IDY0IDY0djMyIDMyIDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWMjg4IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyMGg5NS4zTDI2MS44IDQ2Ni40YzEwLjEgMTQuNSAzMC4xIDE4IDQ0LjYgNy45czE4LTMwLjEgNy45LTQ0LjZMMjMwLjEgMzA5LjVDMjgyLjggMjg4LjEgMzIwIDIzNi40IDMyMCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRINjR6TTE3NiAyNTZINjRWOTZIMTc2YzQ0LjIgMCA4MCAzNS44IDgwIDgwcy0zNS44IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYWRpYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDE4Ni43Yy0yMy45IDEzLjgtNDAgMzkuNy00MCA2OS4zTDMyIDI1NkMxNC4zIDI1Ni0uMiAyNDEuNiAyIDIyNC4xQzEwLjcgMTU0IDQ3LjggOTIuNyAxMDEuMyA1MmMxNC4xLTEwLjcgMzMuOC01LjMgNDIuNyAxMGw3MiAxMjQuN3pNMjU2IDMzNmMxNC42IDAgMjguMi0zLjkgNDAtMTAuN2w3MiAxMjQuOGM4LjggMTUuMyAzLjcgMzUuMS0xMi42IDQxLjljLTMwLjYgMTIuOS02NC4yIDIwLTk5LjQgMjBzLTY4LjktNy4xLTk5LjQtMjBjLTE2LjMtNi45LTIxLjQtMjYuNi0xMi42LTQxLjlsNzItMTI0LjhjMTEuOCA2LjggMjUuNCAxMC43IDQwIDEwLjd6bTIyNC04MGwtMTQ0IDBjMC0yOS42LTE2LjEtNTUuNS00MC02OS4zTDM2OCA2MmM4LjgtMTUuMyAyOC42LTIwLjcgNDIuNy0xMGM1My42IDQwLjcgOTAuNiAxMDIgOTkuNCAxNzIuMWMyLjIgMTcuNS0xMi40IDMxLjktMzAgMzEuOXpNMjU2IDIwOGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NC44IDQ3YzEyLjctMy43IDIwLTE3LjEgMTYuMy0yOS44UzQ5NC0yLjggNDgxLjIgMUw1MS43IDEyNi45Yy05LjQgMi43LTE3LjkgNy4zLTI1LjEgMTMuMkMxMC41IDE1MS43IDAgMTcwLjYgMCAxOTJ2NFYzMDQgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYxOTJjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjE4LjVMNDk0LjggNDd6TTM2OCAyNDBhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6TTgwIDI1NmMwLTguOCA3LjItMTYgMTYtMTZoOTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNnpNNjQgMzIwYzAtOC44IDcuMi0xNiAxNi0xNkgyMDhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnptMTYgNjRjMC04LjggNy4yLTE2IDE2LTE2aDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhaW5ib3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDk2QzE3OC42IDk2IDY0IDIxMC42IDY0IDM1MnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJDMCAxNzUuMyAxNDMuMyAzMiAzMjAgMzJzMzIwIDE0My4zIDMyMCAzMjB2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyQzU3NiAyMTAuNiA0NjEuNCA5NiAzMjAgOTZ6bTAgMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJjMC03MC43IDU3LjMtMTI4IDEyOC0xMjhzMTI4IDU3LjMgMTI4IDEyOHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTE2MCAzNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyYzAtMTIzLjcgMTAwLjMtMjI0IDIyNC0yMjRzMjI0IDEwMC4zIDIyNCAyMjR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyYzAtODguNC03MS42LTE2MC0xNjAtMTYwcy0xNjAgNzEuNi0xNjAgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYW5raW5nU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTMuOCA1NC4xTDMzMC4yIDYuM2MtMy45LTguMy0xNi4xLTguNi0yMC40IDBMMjg2LjIgNTQuMWwtNTIuMyA3LjVjLTkuMyAxLjQtMTMuMyAxMi45LTYuNCAxOS44bDM4IDM3LTkgNTIuMWMtMS40IDkuMyA4LjIgMTYuNSAxNi44IDEyLjJsNDYuOS0yNC44IDQ2LjYgMjQuNGM4LjYgNC4zIDE4LjMtMi45IDE2LjgtMTIuMmwtOS01Mi4xIDM4LTM2LjZjNi44LTYuOCAyLjktMTguMy02LjQtMTkuOGwtNTIuMy03LjV6TTI1NiAyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjg4YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NnpNMzIgMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnptNDE2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlY0MTZjMC0xNy43LTE0LjMtMzItMzItMzJINDgwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjZWlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAyLjJDMjIuNS0xLjcgMzIuNS0uMyAzOS42IDUuOEw4MCA0MC40IDEyMC40IDUuOGM5LTcuNyAyMi4zLTcuNyAzMS4yIDBMMTkyIDQwLjQgMjMyLjQgNS44YzktNy43IDIyLjMtNy43IDMxLjIgMEwzMDQgNDAuNCAzNDQuNCA1LjhjNy4xLTYuMSAxNy4xLTcuNSAyNS42LTMuNnMxNCAxMi40IDE0IDIxLjhWNDg4YzAgOS40LTUuNSAxNy45LTE0IDIxLjhzLTE4LjUgMi41LTI1LjYtMy42TDMwNCA0NzEuNmwtNDAuNCAzNC42Yy05IDcuNy0yMi4zIDcuNy0zMS4yIDBMMTkyIDQ3MS42bC00MC40IDM0LjZjLTkgNy43LTIyLjMgNy43LTMxLjIgMEw4MCA0NzEuNiAzOS42IDUwNi4yYy03LjEgNi4xLTE3LjEgNy41LTI1LjYgMy42UzAgNDk3LjQgMCA0ODhWMjRDMCAxNC42IDUuNSA2LjEgMTQgMi4yek05NiAxNDRjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMjg4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDk2ek04MCAzNTJjMCA4LjggNy4yIDE2IDE2IDE2SDI4OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2ek05NiAyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMjg4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWNvcmRWaW55bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTI1Ni05NmE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnptMCAyMjRhMTI4IDEyOCAwIDEgMCAwLTI1NiAxMjggMTI4IDAgMSAwIDAgMjU2em0wLTk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjdGFuZ2xlQWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjkuNSAxNzMuM2w3MiAxNDRjNS45IDExLjkgMS4xIDI2LjMtMTAuNyAzMi4ycy0yNi4zIDEuMS0zMi4yLTEwLjdMMjUzLjIgMzI4SDE2Mi44bC01LjQgMTAuN2MtNS45IDExLjktMjAuMyAxNi43LTMyLjIgMTAuN3MtMTYuNy0yMC4zLTEwLjctMzIuMmw3Mi0xNDRjNC4xLTguMSAxMi40LTEzLjMgMjEuNS0xMy4zczE3LjQgNS4xIDIxLjUgMTMuM3pNMjA4IDIzNy43TDE4Ni44IDI4MGg0Mi4zTDIwOCAyMzcuN3pNMzkyIDI1NmEyNCAyNCAwIDEgMCAwIDQ4IDI0IDI0IDAgMSAwIDAtNDh6bTI0LTQzLjlWMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2OTYgNDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRjLTYuNiAwLTEyLjYtMi43LTE3LTdjLTkuNCA0LjUtMTkuOSA3LTMxIDdjLTM5LjggMC03Mi0zMi4yLTcyLTcyczMyLjItNzIgNzItNzJjOC40IDAgMTYuNSAxLjQgMjQgNC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWN0YW5nbGVMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTEyOCAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0zMi0xMjhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTI4IDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTk2LTI0OGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg0NDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjI0em0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDQ0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMjR6bTAgOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjdGFuZ2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0xNzUgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NC43IDQ1LjFDMTkyLjIgMTcgMjIzIDAgMjU2IDBzNjMuOCAxNyA4MS4zIDQ1LjFsMzguNiA2MS43IDI3LTE1LjZjOC40LTQuOSAxOC45LTQuMiAyNi42IDEuN3MxMS4xIDE1LjkgOC42IDI1LjNsLTIzLjQgODcuNGMtMy40IDEyLjgtMTYuNiAyMC40LTI5LjQgMTdsLTg3LjQtMjMuNGMtOS40LTIuNS0xNi4zLTEwLjQtMTcuNi0yMHMzLjQtMTkuMSAxMS44LTIzLjlsMjguNC0xNi40TDI4MyA3OWMtNS44LTkuMy0xNi0xNS0yNy0xNXMtMjEuMiA1LjctMjcgMTVsLTE3LjUgMjhjLTkuMiAxNC44LTI4LjYgMTkuNS00My42IDEwLjVjLTE1LjMtOS4yLTIwLjItMjkuMi0xMC43LTQ0LjRsMTcuNS0yOHpNNDI5LjUgMjUxLjljMTUtOSAzNC40LTQuMyA0My42IDEwLjVsMjQuNCAzOS4xYzkuNCAxNS4xIDE0LjQgMzIuNCAxNC42IDUwLjJjLjMgNTMuMS00Mi43IDk2LjQtOTUuOCA5Ni40TDMyMCA0NDh2MzJjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDY0LTY0YzYuOS02LjkgMTcuMi04LjkgMjYuMi01LjJzMTQuOCAxMi41IDE0LjggMjIuMnYzMmw5Ni4yIDBjMTcuNiAwIDMxLjktMTQuNCAzMS44LTMyYzAtNS45LTEuNy0xMS43LTQuOC0xNi43bC0yNC40LTM5LjFjLTkuNS0xNS4yLTQuNy0zNS4yIDEwLjctNDQuNHptLTM2NC42LTMxTDM2IDIwNC4yYy04LjQtNC45LTEzLjEtMTQuMy0xMS44LTIzLjlzOC4yLTE3LjUgMTcuNi0yMGw4Ny40LTIzLjRjMTIuOC0zLjQgMjYgNC4yIDI5LjQgMTdMMTgyIDI0MS4yYzIuNSA5LjQtLjkgMTkuMy04LjYgMjUuM3MtMTguMiA2LjYtMjYuNiAxLjdsLTI2LjUtMTUuM0w2OC44IDMzNS4zYy0zLjEgNS00LjggMTAuOC00LjggMTYuN2MtLjEgMTcuNiAxNC4yIDMyIDMxLjggMzJsMzIuMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMi4yIDBDNDIuNyA0NDgtLjMgNDA0LjggMCAzNTEuNmMuMS0xNy44IDUuMS0zNS4xIDE0LjYtNTAuMmw1MC4zLTgwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ2lzdGVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2MCAxNTJjMC0xMy4zIDEwLjctMjQgMjQtMjRoODhjNDQuMiAwIDgwIDM1LjggODAgODBjMCAyOC0xNC40IDUyLjctMzYuMyA2N2wzNC4xIDc1LjFjNS41IDEyLjEgLjEgMjYuMy0xMS45IDMxLjhzLTI2LjMgLjEtMzEuOC0xMS45TDI2OC45IDI4OEgyMDh2NzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjY0IDE1MnptNDggODhoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjA4djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTUzIDQzLTk2IDk2LTk2SDMyMHYzMmMwIDEyLjkgNy44IDI0LjYgMTkuOCAyOS42czI1LjcgMi4yIDM0LjktNi45bDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC02NC02NGMtOS4yLTkuMi0yMi45LTExLjktMzQuOS02LjlTMzIwIDE5LjEgMzIwIDMyVjY0SDE2MEM3MS42IDY0IDAgMTM1LjYgMCAyMjR6bTUxMiA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmMwIDUzLTQzIDk2LTk2IDk2SDE5MlYzNTJjMC0xMi45LTcuOC0yNC42LTE5LjgtMjkuNnMtMjUuNy0yLjItMzQuOSA2LjlsLTY0IDY0Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGM5LjIgOS4yIDIyLjkgMTEuOSAzNC45IDYuOXMxOS44LTE2LjYgMTkuOC0yOS42VjQ0OEgzNTJjODguNCAwIDE2MC03MS42IDE2MC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlcGx5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS40IDM5LjVjLTkuMS05LjYtMjQuMy0xMC0zMy45LS45TDMzLjggMTczLjJjLTE5LjkgMTguOS0xOS45IDUwLjcgMCA2OS42TDE3NS41IDM3Ny40YzkuNiA5LjEgMjQuOCA4LjcgMzMuOS0uOXM4LjctMjQuOC0uOS0zMy45TDY2LjggMjA4IDIwOC41IDczLjRjOS42LTkuMSAxMC0yNC4zIC45LTMzLjl6TTM1MiA2NGMwLTEyLjYtNy40LTI0LjEtMTktMjkuMnMtMjUtMy0zNC40IDUuNGwtMTYwIDE0NGMtNi43IDYuMS0xMC42IDE0LjctMTAuNiAyMy44czMuOSAxNy43IDEwLjYgMjMuOGwxNjAgMTQ0YzkuNCA4LjUgMjIuOSAxMC42IDM0LjQgNS40czE5LTE2LjYgMTktMjkuMlYyODhoMzJjNTMgMCA5NiA0MyA5NiA5NmMwIDMwLjQtMTIuOCA0Ny45LTIyLjIgNTYuN2MtNS41IDUuMS05LjggMTItOS44IDE5LjVjMCAxMC45IDguOCAxOS43IDE5LjcgMTkuN2MyLjggMCA1LjYtLjYgOC4xLTEuOUM0OTQuNSA0NjcuOSA1NzYgNDE3LjMgNTc2IDMwNGMwLTk3LjItNzguOC0xNzYtMTc2LTE3NkgzNTJWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlcGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNSAzNC44YzExLjUgNS4xIDE5IDE2LjYgMTkgMjkuMnY2NEgzMzZjOTcuMiAwIDE3NiA3OC44IDE3NiAxNzZjMCAxMTMuMy04MS41IDE2My45LTEwMC4yIDE3NC4xYy0yLjUgMS40LTUuMyAxLjktOC4xIDEuOWMtMTAuOSAwLTE5LjctOC45LTE5LjctMTkuN2MwLTcuNSA0LjMtMTQuNCA5LjgtMTkuNWM5LjQtOC44IDIyLjItMjYuNCAyMi4yLTU2LjdjMC01My00My05Ni05Ni05NkgyMjR2NjRjMCAxMi42LTcuNCAyNC4xLTE5IDI5LjJzLTI1IDMtMzQuNC01LjRsLTE2MC0xNDRDMy45IDIyNS43IDAgMjE3LjEgMCAyMDhzMy45LTE3LjcgMTAuNi0yMy44bDE2MC0xNDRjOS40LTguNSAyMi45LTEwLjYgMzQuNC01LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlcHVibGljYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxOTJDMCAxMDMuNiA3MS42IDMyIDE2MCAzMkgzODRjODguNCAwIDE2MCA3MS42IDE2MCAxNjB2NjRIMFYxOTJ6bTQxNS45LTY0Yy0yLjQgMC00LjcgMS4zLTUuNyAzLjRsLTEyLjYgMjQuNi0yOC4yIDRjLTIuNCAuMy00LjQgMi01LjIgNC4ycy0uMSA0LjcgMS42IDYuM2wyMC40IDE5LjItNC44IDI3LjFjLS40IDIuMyAuNiA0LjcgMi41IDZzNC42IDEuNiA2LjcgLjVsMjUuMi0xMi44IDI1LjIgMTIuOGMyLjIgMS4xIDQuOCAuOSA2LjctLjVzMy0zLjcgMi41LTZsLTQuOC0yNy4xTDQ2NiAxNzAuNWMxLjctMS42IDIuNC00LjEgMS42LTYuM3MtMi44LTMuOS01LjItNC4ybC0yOC4yLTQtMTIuNi0yNC42Yy0xLjEtMi4xLTMuMy0zLjQtNS43LTMuNHptLTEzOC4zIDMuNGMtMS4xLTIuMS0zLjMtMy40LTUuNy0zLjRzLTQuNyAxLjMtNS43IDMuNGwtMTIuNiAyNC42LTI4LjIgNGMtMi40IC4zLTQuNCAyLTUuMiA0LjJzLS4xIDQuNyAxLjYgNi4zbDIwLjQgMTkuMi00LjggMjcuMWMtLjQgMi4zIC42IDQuNyAyLjUgNnM0LjYgMS42IDYuNyAuNWwyNS4yLTEyLjggMjUuMiAxMi44YzIuMiAxLjEgNC44IC45IDYuNy0uNXMzLTMuNyAyLjUtNmwtNC44LTI3LjFMMzIyIDE3MC41YzEuNy0xLjYgMi40LTQuMSAxLjYtNi4zcy0yLjgtMy45LTUuMi00LjJsLTI4LjItNC0xMi42LTI0LjZ6TTEyNy45IDEyOGMtMi40IDAtNC43IDEuMy01LjcgMy40bC0xMi42IDI0LjYtMjguMiA0Yy0yLjQgLjMtNC40IDItNS4yIDQuMnMtLjEgNC43IDEuNiA2LjNsMjAuNCAxOS4yLTQuOCAyNy4xYy0uNCAyLjMgLjYgNC43IDIuNSA2czQuNiAxLjYgNi43IC41bDI1LjItMTIuOCAyNS4yIDEyLjhjMi4yIDEuMSA0LjggLjkgNi43LS41czMtMy43IDIuNS02bC00LjgtMjcuMUwxNzggMTcwLjVjMS43LTEuNiAyLjQtNC4xIDEuNi02LjNzLTIuOC0zLjktNS4yLTQuMmwtMjguMi00LTEyLjYtMjQuNmMtMS4xLTIuMS0zLjMtMy40LTUuNy0zLjR6bS4xIDE2MEgzMjBoOTYgMzIgNjQgMzJ2MzIgODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY0OGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MFYzNTJINDQ4djMyIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg0SDEyOHY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg0IDI4OEgxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlc3Ryb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDQ4YTQ4IDQ4IDAgMSAxIDk2IDBBNDggNDggMCAxIDEgODAgNDh6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzI1LjJjLTguMSA5LjItMjEuMSAxMy4yLTMzLjUgOS40Yy0xNi45LTUuMy0yNi4zLTIzLjItMjEtNDAuMWwzMC45LTk5LjFDNDQuOSAxNTUuMyA4MiAxMjggMTI0IDEyOGg4YzQyIDAgNzkuMSAyNy4zIDkxLjYgNjcuNGwzMC45IDk5LjFjNS4zIDE2LjktNC4xIDM0LjgtMjEgNDAuMWMtMTIuNCAzLjktMjUuNC0uMi0zMy41LTkuNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDEyMHpNMzIwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek00NjQgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNNDQwIDQ4MFYzODRINDIyLjJjLTEwLjkgMC0xOC42LTEwLjctMTUuMi0yMS4xbDktMjYuOWMtMy4yIDAtNi40LS41LTkuNS0xLjVjLTE2LjktNS4zLTI2LjMtMjMuMi0yMS00MC4xbDI5LjctOTUuMkM0MjguNCAxNTYuOSA0NjcuNiAxMjggNTEyIDEyOHM4My42IDI4LjkgOTYuOCA3MS4ybDI5LjcgOTUuMmM1LjMgMTYuOS00LjEgMzQuOC0yMSA0MC4xYy0zLjIgMS02LjQgMS41LTkuNSAxLjVsOSAyNi45YzMuNSAxMC40LTQuMyAyMS4xLTE1LjIgMjEuMUg1ODR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0SDUwNHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmV0d2VldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIgNDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTkyaDMyYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTY0LTY0Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhsMzIgMCAwIDEyOGMwIDUzIDQzIDk2IDk2IDk2SDI3MnpNMzA0IDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDExMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4SDQxNmMtMTIuOSAwLTI0LjYgNy44LTI5LjYgMTkuOHMtMi4yIDI1LjcgNi45IDM0LjlsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsNjQtNjRjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlzLTE2LjYtMTkuOC0yOS42LTE5LjhsLTMyIDBWMTkyYzAtNTMtNDMtOTYtOTYtOTZMMzA0IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSaWJib24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMzLjIgMzIyLjhsMCAwLTEzMy45LTE0NiAwIDBMMTQ2IDExOC42YzcuOC01LjEgMzctMjIuNiA3OC0yMi42czcwLjIgMTcuNCA3OCAyMi42TDI0NS43IDE4MGw4NS42IDkzLjQgMjcuNC0yOS44YzE2LjMtMTcuNyAyNS4zLTQwLjkgMjUuMy02NVYxNDkuMWMwLTE5LTUuNi0zNy41LTE2LjEtNTMuM0wzMjcuOCAzNS42QzMxMi45IDEzLjQgMjg3LjkgMCAyNjEuMiAwaC03NmMtMjUuOCAwLTUwLjEgMTIuNS02NS4xIDMzLjVMODEuOSA4N0M3MC4zIDEwMy4yIDY0IDEyMi44IDY0IDE0Mi44VjE2NGMwIDIzLjIgOC40IDQ1LjYgMjMuNiA2My4xbDU2IDY0LjIgMCAwIDgzLjMgOTUuNiAwIDAgOTEuOCAxMDUuM2MxMCAxMS41IDI2LjggMTQuMyA0MCA2LjhsNTQuNS0zMS4xYzE3LjgtMTAuMiAyMS42LTM0LjMgNy43LTQ5LjRsLTg3LjctOTUuN3pNMjA1LjIgNDEwLjZsLTgzLjMtOTUuNkwyNy4xIDQxOC41Yy0xMy45IDE1LjEtMTAuMSAzOS4yIDcuNyA0OS40bDU1LjEgMzEuNWMxMyA3LjQgMjkuMyA0LjkgMzkuNC02LjFsNzUuOS04Mi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSaWdodEZyb21CcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny45IDEwNS45TDUwMC43IDIyOC43YzcuMiA3LjIgMTEuMyAxNy4xIDExLjMgMjcuM3MtNC4xIDIwLjEtMTEuMyAyNy4zTDM3Ny45IDQwNi4xYy02LjQgNi40LTE1IDkuOS0yNCA5LjljLTE4LjcgMC0zMy45LTE1LjItMzMuOS0zMy45bDAtNjIuMS0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxMjggMCAwLTYyLjFjMC0xOC43IDE1LjItMzMuOSAzMy45LTMzLjljOSAwIDE3LjYgMy42IDI0IDkuOXpNMTYwIDk2TDk2IDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC02NCAwYy01MyAwLTk2LTQzLTk2LTk2TDAgMTI4QzAgNzUgNDMgMzIgOTYgMzJsNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmlnaHRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDk2bDMyMCAwVjMyYzAtMTIuOSA3LjgtMjQuNiAxOS44LTI5LjZzMjUuNy0yLjIgMzQuOSA2LjlsOTYgOTZjNiA2IDkuNCAxNC4xIDkuNCAyMi42cy0zLjQgMTYuNi05LjQgMjIuNmwtOTYgOTZjLTkuMiA5LjItMjIuOSAxMS45LTM0LjkgNi45cy0xOS44LTE2LjYtMTkuOC0yOS42VjE2MEwzMiAxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6TTQ4MCAzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTYwdjY0YzAgMTIuOS03LjggMjQuNi0xOS44IDI5LjZzLTI1LjcgMi4yLTM0LjktNi45bC05Ni05NmMtNi02LTkuNC0xNC4xLTkuNC0yMi42czMuNC0xNi42IDkuNC0yMi42bDk2LTk2YzkuMi05LjIgMjIuOS0xMS45IDM0LjktNi45czE5LjggMTYuNiAxOS44IDI5LjZsMCA2NEg0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpZ2h0TG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzQuNSA0MTRjOC44IDMuOCAxOSAyIDI2LTQuNmwxNDQtMTM2YzQuOC00LjUgNy41LTEwLjggNy41LTE3LjRzLTIuNy0xMi45LTcuNS0xNy40bC0xNDQtMTM2Yy03LTYuNi0xNy4yLTguNC0yNi00LjZzLTE0LjUgMTIuNS0xNC41IDIybDAgNzJMMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDI4OCAwIDAgNzJjMCA5LjYgNS43IDE4LjIgMTQuNSAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmlnaHRUb0JyYWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE3LjkgMTA1LjlMMzQwLjcgMjI4LjdjNy4yIDcuMiAxMS4zIDE3LjEgMTEuMyAyNy4zcy00LjEgMjAuMS0xMS4zIDI3LjNMMjE3LjkgNDA2LjFjLTYuNCA2LjQtMTUgOS45LTI0IDkuOWMtMTguNyAwLTMzLjktMTUuMi0zMy45LTMzLjlsMC02Mi4xTDMyIDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxMjggMCAwLTYyLjFjMC0xOC43IDE1LjItMzMuOSAzMy45LTMzLjljOSAwIDE3LjYgMy42IDI0IDkuOXpNMzUyIDQxNmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDY0IDBjNTMgMCA5NiA0MyA5NiA5NmwwIDI1NmMwIDUzLTQzIDk2LTk2IDk2bC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDIwOGMwIDcuOCA0LjQgMTguNyAxNy4xIDMwLjNDMTI2LjUgMjE0LjEgMTg4LjkgMjAwIDI1NiAyMDBzMTI5LjUgMTQuMSAxNzQuOSAzOC4zQzQ0My42IDIyNi43IDQ0OCAyMTUuOCA0NDggMjA4YzAtMTIuMy0xMC44LTMyLTQ3LjktNTAuNkMzNjQuOSAxMzkuOCAzMTQgMTI4IDI1NiAxMjhzLTEwOC45IDExLjgtMTQ0LjEgMjkuNEM3NC44IDE3NiA2NCAxOTUuNyA2NCAyMDh6bTE5MiA0MGMtNDcgMC04OS4zIDcuNi0xMjIuOSAxOS43QzE2Ni4zIDI4MC4yIDIwOC44IDI4OCAyNTYgMjg4czg5LjctNy44IDEyMi45LTIwLjNDMzQ1LjMgMjU1LjYgMzAzIDI0OCAyNTYgMjQ4ek0wIDIwOGMwLTQ5LjYgMzkuNC04NS44IDgzLjMtMTA3LjhDMTI5LjEgNzcuMyAxOTAuMyA2NCAyNTYgNjRzMTI2LjkgMTMuMyAxNzIuNyAzNi4yYzQzLjkgMjIgODMuMyA1OC4yIDgzLjMgMTA3Ljh2OTZjMCA0OS42LTM5LjQgODUuOC04My4zIDEwNy44QzM4Mi45IDQzNC43IDMyMS43IDQ0OCAyNTYgNDQ4cy0xMjYuOS0xMy4zLTE3Mi43LTM2LjJDMzkuNCAzODkuOCAwIDM1My42IDAgMzA0VjIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZEJhcnJpZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNjYuM0wxNDkuMiA5Nkg2NFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNDA1LjIgOTZIMzMwLjhsLTUuNCAxMC43TDIzNC44IDI4OGg3NC4zbDUuNC0xMC43TDQwNS4yIDk2ek0zNjIuOCAyODhoNzQuM2w1LjQtMTAuN0w1MzMuMiA5Nkg0NTguOGwtNS40IDEwLjdMMzYyLjggMjg4ek0yMDIuOCA5NmwtNS40IDEwLjdMMTA2LjggMjg4aDc0LjNsNS40LTEwLjdMMjc3LjIgOTZIMjAyLjh6bTI4OCAxOTJINTc2VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjUzLjdMNDkwLjggMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkQnJpZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAwSDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNDgwIDIwMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyMjRjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTI0IDE4NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjM4NHpNNDgwIDQwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjY0YzAtMTMuMy0xMC43LTI0LTI0LTI0ek0zMiA5NkgyODh2NjRIMjQ4djY0aDQwdjk2Yy01MyAwLTk2IDQzLTk2IDk2djY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2YzAtNTMtNDMtOTYtOTYtOTZWMjI0SDcyVjE2MEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMTY4IDY0SDEyMHY2NGg4MFYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWRDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTMuMiAzMkgyODhWOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMmg3NC44YzI3LjEgMCA1MS4zIDE3LjEgNjAuMyA0Mi42bDQyLjcgMTIwLjZjLTEwLjktMi4xLTIyLjItMy4yLTMzLjgtMy4yYy01OS41IDAtMTEyLjEgMjkuNi0xNDQgNzQuOFYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJjMi4zIDAgNC42LS4zIDYuOC0uN2MtNC41IDE1LjUtNi44IDMxLjgtNi44IDQ4LjdjMCA1LjQgLjIgMTAuNyAuNyAxNmwtLjcgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRIODYuNkM1Ni41IDQ4MCAzMiA0NTUuNSAzMiA0MjUuNGMwLTYuMiAxLjEtMTIuNCAzLjEtMTguMkwxNTIuOSA3NC42QzE2MiA0OS4xIDE4Ni4xIDMyIDIxMy4yIDMyek0zNTIgMzY4YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIxMS4zLTQzLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDQ4MCAzODUuNGwtMjguNy0yOC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDQwIDQwYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDcyLTcyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEzLjIgMzJIMjg4Vjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJoNzQuOGMyNy4xIDAgNTEuMyAxNy4xIDYwLjMgNDIuNmw0Mi43IDEyMC42Yy0xMC45LTIuMS0yMi4yLTMuMi0zMy44LTMuMmMtNTkuNSAwLTExMi4xIDI5LjYtMTQ0IDc0LjhWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyYzIuMyAwIDQuNi0uMyA2LjgtLjdjLTQuNSAxNS41LTYuOCAzMS44LTYuOCA0OC43YzAgNS40IC4yIDEwLjcgLjcgMTZsLS43IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0SDg2LjZDNTYuNSA0ODAgMzIgNDU1LjUgMzIgNDI1LjRjMC02LjIgMS4xLTEyLjQgMy4xLTE4LjJMMTUyLjkgNzQuNkMxNjIgNDkuMSAxODYuMSAzMiAyMTMuMiAzMnpNNDk2IDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMC0xOTJjLTguOCAwLTE2IDcuMi0xNiAxNnY4MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjI4OGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWRDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTMuMiAzMkgyODhWOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMmg3NC44YzI3LjEgMCA1MS4zIDE3LjEgNjAuMyA0Mi42bDQyLjcgMTIwLjZjLTEwLjktMi4xLTIyLjItMy4yLTMzLjgtMy4yYy01OS41IDAtMTEyLjEgMjkuNi0xNDQgNzQuOFYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJjMi4zIDAgNC42LS4zIDYuOC0uN2MtNC41IDE1LjUtNi44IDMxLjgtNi44IDQ4LjdjMCA1LjQgLjIgMTAuNyAuNyAxNmwtLjcgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRIODYuNkM1Ni41IDQ4MCAzMiA0NTUuNSAzMiA0MjUuNGMwLTYuMiAxLjEtMTIuNCAzLjEtMTguMkwxNTIuOSA3NC42QzE2MiA0OS4xIDE4Ni4xIDMyIDIxMy4yIDMyek00OTYgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMjIuNiAxNDRsMzYuNy0zNi43YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDk2IDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDczLjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0OTYgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw1MTguNiAzNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWRMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMkgyMTMuMmMtMjcuMSAwLTUxLjMgMTcuMS02MC4zIDQyLjZMMzUuMSA0MDcuMmMtMi4xIDUuOS0zLjEgMTItMy4xIDE4LjJDMzIgNDU1LjUgNTYuNSA0ODAgODYuNiA0ODBIMjg4VjQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjY0aDMyVjM1MmMwLTIzLjcgMTIuOS00NC40IDMyLTU1LjRWMjcyYzAtNTguMyA0NC42LTEwNi4yIDEwMS41LTExMS41TDQ4Ny4xIDc0LjZDNDc4IDQ5LjEgNDUzLjkgMzIgNDI2LjggMzJIMzUyVjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMyem02NCAxOTJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6bTE3NiAxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZFNwaWtlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMTYuOGMwLTE1LjggMjAuNS0yMiAyOS4zLTguOUwxOTIgMjU2VjExNi44YzAtMTUuOCAyMC41LTIyIDI5LjMtOC45TDMyMCAyNTZWMTE2LjhjMC0xNS44IDIwLjUtMjIgMjkuMy04LjlMNDQ4IDI1NlYxMTYuOGMwLTE1LjggMjAuNS0yMiAyOS4zLTguOUw2MDYuOCAzMDIuMmMxNC4yIDIxLjMtMS4xIDQ5LjctMjYuNiA0OS43SDUxMiA0NDggMzg0IDMyMCAyNTYgMTkyIDY0VjExNi44ek0zMiAzODRINjA4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkgxODEuMmMtMjcuMSAwLTUxLjMgMTcuMS02MC4zIDQyLjZMMy4xIDQwNy4yQzEuMSA0MTMgMCA0MTkuMiAwIDQyNS40QzAgNDU1LjUgMjQuNSA0ODAgNTQuNiA0ODBIMjU2VjQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjY0SDUyMS40YzMwLjIgMCA1NC42LTI0LjUgNTQuNi01NC42YzAtNi4yLTEuMS0xMi40LTMuMS0xOC4yTDQ1NS4xIDc0LjZDNDQ2IDQ5LjEgNDIxLjkgMzIgMzk0LjggMzJIMzIwVjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMyem02NCAxOTJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYm90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2SDQ3MmMzOS44IDAgNzIgMzIuMiA3MiA3MlY0NDBjMCAzOS44LTMyLjIgNzItNzIgNzJIMTY4Yy0zOS44IDAtNzItMzIuMi03Mi03MlYxNjhjMC0zOS44IDMyLjItNzIgNzItNzJIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0yMDggMzg0Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDIwOHptOTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMDR6bTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINDAwek0yNjQgMjU2YTQwIDQwIDAgMSAwIC04MCAwIDQwIDQwIDAgMSAwIDgwIDB6bTE1MiA0MGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTQ4IDIyNEg2NFY0MTZINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjI3MmMwLTI2LjUgMjEuNS00OCA0OC00OHptNTQ0IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhINTc2VjIyNGgxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ni42IDM4NC45TDEyNS43IDM1NGMtOC41LTguNS0xMS41LTIwLjgtNy43LTMyLjJjMy04LjkgNy0yMC41IDExLjgtMzMuOEwyNCAyODhjLTguNiAwLTE2LjYtNC42LTIwLjktMTIuMXMtNC4yLTE2LjcgLjItMjQuMWw1Mi41LTg4LjVjMTMtMjEuOSAzNi41LTM1LjMgNjEuOS0zNS4zbDgyLjMgMGMyLjQtNCA0LjgtNy43IDcuMi0xMS4zQzI4OS4xLTQuMSA0MTEuMS04LjEgNDgzLjkgNS4zYzExLjYgMi4xIDIwLjYgMTEuMiAyMi44IDIyLjhjMTMuNCA3Mi45IDkuMyAxOTQuOC0xMTEuNCAyNzYuN2MtMy41IDIuNC03LjMgNC44LTExLjMgNy4ydjgyLjNjMCAyNS40LTEzLjQgNDktMzUuMyA2MS45bC04OC41IDUyLjVjLTcuNCA0LjQtMTYuNiA0LjUtMjQuMSAuMnMtMTIuMS0xMi4yLTEyLjEtMjAuOVYzODAuOGMtMTQuMSA0LjktMjYuNCA4LjktMzUuNyAxMS45Yy0xMS4yIDMuNi0yMy40IC41LTMxLjgtNy44ek0zODQgMTY4YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OC41IDIyNEg0MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNzJjMC05LjcgNS44LTE4LjUgMTQuOC0yMi4yczE5LjMtMS43IDI2LjIgNS4yTDk4LjYgOTYuNmM4Ny42LTg2LjUgMjI4LjctODYuMiAzMTUuOCAxYzg3LjUgODcuNSA4Ny41IDIyOS4zIDAgMzE2LjhzLTIyOS4zIDg3LjUtMzE2LjggMGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGM2Mi41IDYyLjUgMTYzLjggNjIuNSAyMjYuMyAwczYyLjUtMTYzLjggMC0yMjYuM2MtNjIuMi02Mi4yLTE2Mi43LTYyLjUtMjI1LjMtMUwxODUgMTgzYzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJzLTEyLjUgMTQuOC0yMi4yIDE0LjhINDguNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm90YXRlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYzLjUgMjI0SDQ3MmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY3MmMwLTkuNy01LjgtMTguNS0xNC44LTIyLjJzLTE5LjMtMS43LTI2LjIgNS4yTDQxMy40IDk2LjZjLTg3LjYtODYuNS0yMjguNy04Ni4yLTMxNS44IDFjLTg3LjUgODcuNS04Ny41IDIyOS4zIDAgMzE2LjhzMjI5LjMgODcuNSAzMTYuOCAwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwYy02Mi41IDYyLjUtMTYzLjggNjIuNS0yMjYuMyAwcy02Mi41LTE2My44IDAtMjI2LjNjNjIuMi02Mi4yIDE2Mi43LTYyLjUgMjI1LjMtMUwzMjcgMTgzYy02LjkgNi45LTguOSAxNy4yLTUuMiAyNi4yczEyLjUgMTQuOCAyMi4yIDE0LjhINDYzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvdGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDIuOSAxNDIuOWM2Mi4yLTYyLjIgMTYyLjctNjIuNSAyMjUuMy0xTDMyNyAxODNjLTYuOSA2LjktOC45IDE3LjItNS4yIDI2LjJzMTIuNSAxNC44IDIyLjIgMTQuOEg0NjMuNWMwIDAgMCAwIDAgMEg0NzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNzJjMC05LjctNS44LTE4LjUtMTQuOC0yMi4ycy0xOS4zLTEuNy0yNi4yIDUuMkw0MTMuNCA5Ni42Yy04Ny42LTg2LjUtMjI4LjctODYuMi0zMTUuOCAxQzczLjIgMTIyIDU1LjYgMTUwLjcgNDQuOCAxODEuNGMtNS45IDE2LjcgMi45IDM0LjkgMTkuNSA0MC44czM0LjktMi45IDQwLjgtMTkuNWM3LjctMjEuOCAyMC4yLTQyLjMgMzcuOC01OS44ek0xNiAzMTJ2Ny42IC43VjQ0MGMwIDkuNyA1LjggMTguNSAxNC44IDIyLjJzMTkuMyAxLjcgMjYuMi01LjJsNDEuNi00MS42Yzg3LjYgODYuNSAyMjguNyA4Ni4yIDMxNS44LTFjMjQuNC0yNC40IDQyLjEtNTMuMSA1Mi45LTgzLjdjNS45LTE2LjctMi45LTM0LjktMTkuNS00MC44cy0zNC45IDIuOS00MC44IDE5LjVjLTcuNyAyMS44LTIwLjIgNDIuMy0zNy44IDU5LjhjLTYyLjIgNjIuMi0xNjIuNyA2Mi41LTIyNS4zIDFMMTg1IDMyOWM2LjktNi45IDguOS0xNy4yIDUuMi0yNi4ycy0xMi41LTE0LjgtMjIuMi0xNC44SDQ4LjRoLS43SDQwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm91dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDk2YzAgNTAuMi01OS4xIDEyNS4xLTg0LjYgMTU1Yy0zLjggNC40LTkuNCA2LjEtMTQuNSA1SDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NkgxMzkuNmM4LjctOS45IDE5LjMtMjIuNiAzMC0zNi44YzYuMy04LjQgMTIuOC0xNy42IDE5LTI3LjJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMGMtNTMgMC05Ni00My05Ni05NnM0My05NiA5Ni05NmgzOS44Yy0yMS0zMS41LTM5LjgtNjcuNy0zOS44LTk2YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZ6TTExNy4xIDQ4OS4xYy0zLjggNC4zLTcuMiA4LjEtMTAuMSAxMS4zbC0xLjggMi0uMi0uMmMtNiA0LjYtMTQuNiA0LTIwLTEuOEM1OS44IDQ3MyAwIDQwMi41IDAgMzUyYzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZjMCAzMC0yMS4xIDY3LTQzLjUgOTcuOWMtMTAuNyAxNC43LTIxLjcgMjgtMzAuOCAzOC41bC0uNiAuN3pNMTI4IDM1MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek00MTYgMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJjMjI5LjggMCA0MTYgMTg2LjIgNDE2IDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMkMzODQgMjUzLjYgMjI2LjQgOTYgMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMCA0MTZhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgMCA0MTZ6TTMyIDE2MGMxNTkuMSAwIDI4OCAxMjguOSAyODggMjg4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtMTIzLjctMTAwLjMtMjI0LTIyNC0yMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1YmxlU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMkM3OC4zIDMyIDY0IDQ2LjMgNjQgNjRWMjU2SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0djMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDE2SDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMjhWMzIwSDI0MGM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NHMtNjQuNS0xNDQtMTQ0LTE0NEg5NnpNMjQwIDI1NkgxMjhWOTZIMjQwYzQ0LjIgMCA4MCAzNS44IDgwIDgwcy0zNS44IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgNjRINTYgODBWODh2ODggODAgODAgODggMjRINTYgMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOFYzNjBIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOFYyODBIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOFYyMDBIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOFYxMTJIMjRDMTAuNyAxMTIgMCAxMDEuMyAwIDg4UzEwLjcgNjQgMjQgNjR6bTg4IDBINTI4VjQ0OEgxMTJWNjR6TTY0MCA4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNGgtOHY0MGg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0aC04djMyaDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRoLTh2MzJoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGgtOHY0MGg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDU4NCA1NjBWNDI0IDMzNiAyNTYgMTc2IDg4IDY0aDI0IDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlckNvbWJpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS4yIDQ2OC45QzIuNyA0OTMuMSAyMy4xIDUxMiA0OCA1MTJsOTYgMCAzMjAgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTk2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC00OCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MC02NCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MC02NCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MC04MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDgwIDAgMC02NC04MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDgwIDAgMC02NC04MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDgwIDAgMC00OGMwLTI2LjUtMjEuNS00OC00OC00OEw0OCAwQzIxLjUgMCAwIDIxLjUgMCA0OEwwIDM2OGwwIDk2YzAgMS43IC4xIDMuMyAuMiA0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1bGVySG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMzNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGw1NDQgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTE2MGMwLTI2LjUtMjEuNS00OC00OC00OGwtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhMMCAzMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1bGVyVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBIMjA4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4Vjk2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4MHY2NEgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NjRIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDgwdjY0SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4MHY0OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1bGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ny45IDQ5NC4xYy0xOC43IDE4LjctNDkuMSAxOC43LTY3LjkgMEwxNy45IDQwMS45Yy0xOC43LTE4LjctMTguNy00OS4xIDAtNjcuOWw1MC43LTUwLjcgNDggNDhjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC00OC00OCA0MS40LTQxLjQgNDggNDhjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC00OC00OCA0MS40LTQxLjQgNDggNDhjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC00OC00OCA0MS40LTQxLjQgNDggNDhjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC00OC00OCA1MC43LTUwLjdjMTguNy0xOC43IDQ5LjEtMTguNyA2Ny45IDBsOTIuMSA5Mi4xYzE4LjcgMTguNyAxOC43IDQ5LjEgMCA2Ny45TDE3Ny45IDQ5NC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdXBlZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmg4MGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NGMwIDU4LjgtMzUuMiAxMDkuMy04NS43IDEzMS43bDUxLjQgMTI4LjRjNi42IDE2LjQtMS40IDM1LTE3LjggNDEuNnMtMzUtMS40LTQxLjYtMTcuOEwxMDYuMyAzMjBINjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI4OCA2NHpNNjQgMjU2aDQ4YzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwSDY0VjI1NnptMjU2LjUgMTYuNGMtLjkgNiAwIDguNyAuNCA5LjhjLjQgMS4xIDEuNCAyLjYgNC4yIDQuOWM3LjIgNS43IDE4LjcgMTAgMzcuOSAxNi44bDEuMyAuNWMxNiA1LjYgMzguNyAxMy42IDU1LjcgMjguMWM5LjUgOC4xIDE3LjkgMTguNiAyMy4xIDMyLjNjNS4xIDEzLjcgNi4xIDI4LjUgMy44IDQ0Yy00LjIgMjguMS0yMC41IDQ5LjMtNDMuOCA2MC45Yy0yMi4xIDExLTQ4LjEgMTIuNS03My4yIDhsLS4yIDAgMCAwYy05LjMtMS44LTIwLjUtNS43LTI5LjMtOWMtNi0yLjMtMTIuNi00LjktMTcuNy02LjlsMCAwYy0yLjUtMS00LjYtMS44LTYuMy0yLjVjLTE2LjUtNi40LTI0LjYtMjUtMTguMi00MS40czI0LjktMjQuNiA0MS40LTE4LjJjMi42IDEgNS4yIDIgNy45IDMuMWwwIDBjNC44IDEuOSA5LjggMy45IDE1LjQgNmM4LjggMy4zIDE1LjMgNS40IDE4LjcgNmMxNS43IDIuOCAyNi43IC44IDMyLjktMi4zYzUtMi41IDgtNiA5LjEtMTNjMS02LjkgLjItMTAuNS0uNS0xMi4zYy0uNi0xLjctMS44LTMuNi00LjUtNS45Yy02LjktNS44LTE4LjItMTAuNC0zNi45LTE3bC0zLTEuMWMtMTUuNS01LjQtMzctMTMtNTMuMy0yNS45Yy05LjUtNy41LTE4LjMtMTcuNi0yMy43LTMxYy01LjUtMTMuNC02LjYtMjgtNC40LTQzLjJjOC40LTU3LjEgNjctNzggMTE2LjktNjguOWM2LjkgMS4zIDI3LjMgNS44IDM1LjQgOC40YzE2LjkgNS4yIDI2LjMgMjMuMiAyMS4xIDQwLjFzLTIzLjIgMjYuMy00MC4xIDIxLjFjLTQuNy0xLjQtMjIuMy01LjUtMjcuOS02LjVjLTE0LjYtMi43LTI1LjgtLjQtMzIuNiAzLjJjLTYuMyAzLjMtOC45IDcuNi05LjUgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1cGlhaFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmg4MGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NGMwIDU4LjgtMzUuMiAxMDkuMy04NS43IDEzMS43bDUxLjQgMTI4LjRjNi42IDE2LjQtMS40IDM1LTE3LjggNDEuNnMtMzUtMS40LTQxLjYtMTcuOEwxMDYuMyAzMjBINjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI4OCA2NHpNNjQgMjU2aDQ4YzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwSDY0VjI1NnptMjU2LTk2aDgwYzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEycy01MC4xIDExMi0xMTIgMTEySDM1MnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTIgMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem04MCAxNjBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhIMzUydjk2aDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk5LjEgMTA1LjRDNzkgMTE0IDY4LjIgMTI3LjIgNjUuMiAxNDQuOGMtMi40IDE0LjEtLjcgMjMuMiAyIDI5LjRjMi44IDYuMyA3LjkgMTIuNCAxNi43IDE4LjZjMTkuMiAxMy40IDQ4LjMgMjIuMSA4NC45IDMyLjVjMSAuMyAxLjkgLjYgMi45IC44YzMyLjcgOS4zIDcyIDIwLjYgMTAwLjkgNDAuN2MxNS43IDEwLjkgMjkuOSAyNS41IDM4LjYgNDUuMWM4LjggMTkuOCAxMC44IDQyIDYuNiA2Ni4zYy03LjMgNDIuNS0zNS4zIDcxLjctNzEuOCA4Ny4zYy0zNS40IDE1LjItNzkuMSAxNy45LTEyMy43IDEwLjlsLS4yIDAgMCAwYy0yNC0zLjktNjIuNy0xNy4xLTg3LjYtMjUuNmMtNC44LTEuNy05LjItMy4xLTEyLjgtNC4zQzUuMSA0NDAuOC0zLjkgNDIyLjcgMS42IDQwNS45czIzLjctMjUuOCA0MC41LTIwLjNjNC45IDEuNiAxMC4yIDMuNCAxNS45IDUuNGMyNS40IDguNiA1Ni40IDE5LjIgNzQuNCAyMi4xYzM2LjggNS43IDY3LjUgMi41IDg4LjUtNi41YzIwLjEtOC42IDMwLjgtMjEuOCAzMy45LTM5LjRjMi40LTE0LjEgLjctMjMuMi0yLTI5LjRjLTIuOC02LjMtNy45LTEyLjQtMTYuNy0xOC42Yy0xOS4yLTEzLjQtNDguMy0yMi4xLTg0LjktMzIuNWMtMS0uMy0xLjktLjYtMi45LS44Yy0zMi43LTkuMy03Mi0yMC42LTEwMC45LTQwLjdjLTE1LjctMTAuOS0yOS45LTI1LjUtMzguNi00NS4xYy04LjgtMTkuOC0xMC44LTQyLTYuNi02Ni4zbDMxLjUgNS41TDIuMSAxMzMuOUM5LjQgOTEuNCAzNy40IDYyLjIgNzMuOSA0Ni42YzM1LjQtMTUuMiA3OS4xLTE3LjkgMTIzLjctMTAuOWMxMyAyIDUyLjQgOS42IDY2LjYgMTMuNGMxNy4xIDQuNSAyNy4yIDIyLjEgMjIuNyAzOS4ycy0yMi4xIDI3LjItMzkuMiAyMi43Yy0xMS4yLTMtNDguMS0xMC4yLTYwLjEtMTJsNC45LTMxLjUtNC45IDMxLjVjLTM2LjktNS44LTY3LjUtMi41LTg4LjYgNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWNrRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NkgxOTJMMTQ0LjYgMjQuOUMxMzcuNSAxNC4yIDE0NS4xIDAgMTU3LjkgMEgzNTQuMWMxMi44IDAgMjAuNCAxNC4yIDEzLjMgMjQuOUwzMjAgOTZ6TTE5MiAxMjhIMzIwYzMuOCAyLjUgOC4xIDUuMyAxMyA4LjRDMzg5LjcgMTcyLjcgNTEyIDI1MC45IDUxMiA0MTZjMCA1My00MyA5Ni05NiA5Nkg5NmMtNTMgMC05Ni00My05Ni05NkMwIDI1MC45IDEyMi4zIDE3Mi43IDE3OSAxMzYuNGwwIDAgMCAwYzQuOC0zLjEgOS4yLTUuOSAxMy04LjR6bTg0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMHYxNGMtNy42IDEuNy0xNS4yIDQuNC0yMi4yIDguNWMtMTMuOSA4LjMtMjUuOSAyMi44LTI1LjggNDMuOWMuMSAyMC4zIDEyIDMzLjEgMjQuNyA0MC43YzExIDYuNiAyNC43IDEwLjggMzUuNiAxNGwxLjcgLjVjMTIuNiAzLjggMjEuOCA2LjggMjggMTAuN2M1LjEgMy4yIDUuOCA1LjQgNS45IDguMmMuMSA1LTEuOCA4LTUuOSAxMC41Yy01IDMuMS0xMi45IDUtMjEuNCA0LjdjLTExLjEtLjQtMjEuNS0zLjktMzUuMS04LjVjLTIuMy0uOC00LjctMS42LTcuMi0yLjRjLTEwLjUtMy41LTIxLjggMi4yLTI1LjMgMTIuNnMyLjIgMjEuOCAxMi42IDI1LjNjMS45IC42IDQgMS4zIDYuMSAyLjFsMCAwIDAgMGM4LjMgMi45IDE3LjkgNi4yIDI4LjIgOC40VjQyNGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFY0MTAuMmM4LTEuNyAxNi00LjUgMjMuMi05YzE0LjMtOC45IDI1LjEtMjQuMSAyNC44LTQ1Yy0uMy0yMC4zLTExLjctMzMuNC0yNC42LTQxLjZjLTExLjUtNy4yLTI1LjktMTEuNi0zNy4xLTE1bDAgMC0uNy0uMmMtMTIuOC0zLjktMjEuOS02LjctMjguMy0xMC41Yy01LjItMy4xLTUuMy00LjktNS4zLTYuN2MwLTMuNyAxLjQtNi41IDYuMi05LjNjNS40LTMuMiAxMy42LTUuMSAyMS41LTVjOS42IC4xIDIwLjIgMi4yIDMxLjIgNS4yYzEwLjcgMi44IDIxLjYtMy41IDI0LjUtMTQuMnMtMy41LTIxLjYtMTQuMi0yNC41Yy02LjUtMS43LTEzLjctMy40LTIxLjEtNC43VjIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Fja1htYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NkgzMjBsNDcuNC03MS4xQzM3NC41IDE0LjIgMzY2LjkgMCAzNTQuMSAwSDE1Ny45Yy0xMi44IDAtMjAuNCAxNC4yLTEzLjMgMjQuOUwxOTIgOTZ6bTEyOCAzMkgxOTJjLTMuOCAyLjUtOC4xIDUuMy0xMyA4LjRsMCAwIDAgMEMxMjIuMyAxNzIuNyAwIDI1MC45IDAgNDE2YzAgNTMgNDMgOTYgOTYgOTZINDE2YzUzIDAgOTYtNDMgOTYtOTZjMC0xNjUuMS0xMjIuMy0yNDMuMy0xNzktMjc5LjZjLTQuOC0zLjEtOS4yLTUuOS0xMy04LjR6TTI4OS45IDMzNmw0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhaWxib2F0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxNmMwLTcgNC41LTEzLjIgMTEuMi0xNS4zczEzLjkgLjQgMTcuOSA2LjFsMjI0IDMyMGMzLjQgNC45IDMuOCAxMS4zIDEuMSAxNi42cy04LjIgOC42LTE0LjIgOC42SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjE2ek0yMTIuMSA5Ni41YzcgMS45IDExLjkgOC4yIDExLjkgMTUuNVYzMzZjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy01LjcgMC0xMS0zLTEzLjgtOHMtMi45LTExLS4xLTE2bDEyOC0yMjRjMy42LTYuMyAxMS05LjQgMTgtNy41ek01LjcgNDA0LjNDMi44IDM5NC4xIDEwLjUgMzg0IDIxLjEgMzg0SDU1NC45YzEwLjYgMCAxOC4zIDEwLjEgMTUuNCAyMC4zbC00IDE0LjNDNTUwLjcgNDczLjkgNTAwLjQgNTEyIDQ0MyA1MTJIMTMzQzc1LjYgNTEyIDI1LjMgNDczLjkgOS43IDQxOC43bC00LTE0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhdGVsbGl0ZURpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyQzM4My4xIDAgNTEyIDEyOC45IDUxMiAyODhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJDNDQ4IDE2NC4zIDM0Ny43IDY0IDIyNCA2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTYwLjYgMjIwLjZMMTY0LjcgMzI0LjdsMjguNC0yOC40Yy0uNy0yLjYtMS4xLTUuNC0xLjEtOC4zYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJjLTIuOSAwLTUuNi0uNC04LjMtMS4xbC0yOC40IDI4LjRMMjkxLjQgNDUxLjRjMTQuNSAxNC41IDExLjggMzguOC03LjMgNDYuM0MyNjAuNSA1MDYuOSAyMzQuOSA1MTIgMjA4IDUxMkM5My4xIDUxMiAwIDQxOC45IDAgMzA0YzAtMjYuOSA1LjEtNTIuNSAxNC40LTc2LjFjNy41LTE5IDMxLjgtMjEuOCA0Ni4zLTcuM3pNMjI0IDk2YzEwNiAwIDE5MiA4NiAxOTIgMTkyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXRlbGxpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMzIDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC05NiA5NmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsODkuNCA4OS40LTE1LjUgMTUuNUMxNTIuMyAyMzAuNCAxMjQuOSAyMjQgOTYgMjI0Yy0zMS43IDAtNjEuNSA3LjctODcuOCAyMS4yYy05IDQuNy0xMC4zIDE2LjctMy4xIDIzLjhMMTEyLjcgMzc2LjcgOTYuMyAzOTMuMWMtMi42LS43LTUuNC0xLjEtOC4zLTEuMWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMi45LS40LTUuNi0xLjEtOC4zbDE2LjQtMTYuNEwyNDIuOSA1MDYuOWM3LjIgNy4yIDE5LjIgNS45IDIzLjgtMy4xQzI4MC4zIDQ3Ny41IDI4OCA0NDcuNyAyODggNDE2YzAtMjguOS02LjQtNTYuMy0xNy44LTgwLjlsMTUuNS0xNS41TDM3NSA0MDljOS40IDkuNCAyNC42IDkuNCAzMy45IDBsOTYtOTZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTg5LjQtODkuNCA1NS01NWMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNDgtNDhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC01NSA1NUwyMzMgN3ptMTU5IDM1MWwtNzIuNC03Mi40IDYyLjEtNjIuMUw0NTQuMSAyOTYgMzkyIDM1OC4xek0yMjYuMyAxOTIuNEwxNTMuOSAxMjAgMjE2IDU3LjlsNzIuNCA3Mi40LTYyLjEgNjIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NhbGVCYWxhbmNlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJINTEyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM5OC40Yy01LjIgMjUuOC0yMi45IDQ3LjEtNDYuNCA1Ny4zVjQ0OEg1MTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwIDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgyODhWMTUzLjNjLTIzLjUtMTAuMy00MS4yLTMxLjYtNDYuNC01Ny4zSDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgyNTZjMTQuNi0xOS40IDM3LjgtMzIgNjQtMzJzNDkuNCAxMi42IDY0IDMyem01NS42IDI4OEg1ODQuNEw1MTIgMTk1LjggNDM5LjYgMzIwek01MTIgNDE2Yy02Mi45IDAtMTE1LjItMzQtMTI2LTc4LjljLTIuNi0xMSAxLTIyLjMgNi43LTMyLjFsOTUuMi0xNjMuMmM1LTguNiAxNC4yLTEzLjggMjQuMS0xMy44czE5LjEgNS4zIDI0LjEgMTMuOGw5NS4yIDE2My4yYzUuNyA5LjggOS4zIDIxLjEgNi43IDMyLjFDNjI3LjIgMzgyIDU3NC45IDQxNiA1MTIgNDE2ek0xMjYuOCAxOTUuOEw1NC40IDMyMEgxOTkuM0wxMjYuOCAxOTUuOHpNLjkgMzM3LjFjLTIuNi0xMSAxLTIyLjMgNi43LTMyLjFsOTUuMi0xNjMuMmM1LTguNiAxNC4yLTEzLjggMjQuMS0xMy44czE5LjEgNS4zIDI0LjEgMTMuOGw5NS4yIDE2My4yYzUuNyA5LjggOS4zIDIxLjEgNi43IDMyLjFDMjQyIDM4MiAxODkuNyA0MTYgMTI2LjggNDE2UzExLjcgMzgyIC45IDMzNy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2FsZVVuYmFsYW5jZWRGbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNy45IDYyLjRjLTE2LjgtNS42LTI1LjgtMjMuNy0yMC4yLTQwLjVzMjMuNy0yNS44IDQwLjUtMjAuMmwxMTMgMzcuN0MyNjUgMTUuOCAyOTAuNyAwIDMyMCAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgMy0uMiA1LjktLjUgOC44bDEyMi42IDQwLjljMTYuOCA1LjYgMjUuOCAyMy43IDIwLjIgNDAuNXMtMjMuNyAyNS44LTQwLjUgMjAuMkwzNjYuNCAxNDUuMmMtNC41IDMuMi05LjMgNS45LTE0LjQgOC4yVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMjg4VjE1My4zYy0yMS05LjItMzcuMi0yNy00NC4yLTQ5bC0xMjUuOS00MnpNMjAwLjQgMjg4TDEyOCAxNjMuOCA1NS42IDI4OEgyMDAuNHpNMTI4IDM4NEM2NS4xIDM4NCAxMi44IDM1MCAyIDMwNS4xYy0yLjYtMTEgMS0yMi4zIDYuNy0zMi4xbDk1LjItMTYzLjJjNS04LjYgMTQuMi0xMy44IDI0LjEtMTMuOHMxOS4xIDUuMyAyNC4xIDEzLjhsOTUuMiAxNjMuMmM1LjcgOS44IDkuMyAyMS4xIDYuNyAzMi4xQzI0My4yIDM1MCAxOTAuOSAzODQgMTI4IDM4NHptMzgyLjgtOTIuMkw0MzguNCA0MTZINTgzLjNMNTEwLjggMjkxLjh6bTEyNiAxNDEuM0M2MjYgNDc4IDU3My43IDUxMiA1MTAuOCA1MTJzLTExNS4yLTM0LTEyNi03OC45Yy0yLjYtMTEgMS0yMi4zIDYuNy0zMi4xbDk1LjItMTYzLjJjNS04LjYgMTQuMi0xMy44IDI0LjEtMTMuOHMxOS4xIDUuMyAyNC4xIDEzLjhsOTUuMiAxNjMuMmM1LjcgOS44IDkuMyAyMS4xIDYuNyAzMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2FsZVVuYmFsYW5jZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTIyLjEgNjIuNGMxNi44LTUuNiAyNS44LTIzLjcgMjAuMi00MC41UzUxOC42LTMuOSA1MDEuOSAxLjZsLTExMyAzNy43QzM3NSAxNS44IDM0OS4zIDAgMzIwIDBjLTQ0LjIgMC04MCAzNS44LTgwIDgwYzAgMyAuMiA1LjkgLjUgOC44TDExNy45IDEyOS42Yy0xNi44IDUuNi0yNS44IDIzLjctMjAuMiA0MC41czIzLjcgMjUuOCA0MC41IDIwLjJsMTM1LjUtNDUuMmM0LjUgMy4yIDkuMyA1LjkgMTQuNCA4LjJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNTJWMTUzLjNjMjEtOS4yIDM3LjItMjcgNDQuMi00OWwxMjUuOS00MnpNNDM5LjYgMjg4TDUxMiAxNjMuOCA1ODQuNCAyODhINDM5LjZ6TTUxMiAzODRjNjIuOSAwIDExNS4yLTM0IDEyNi03OC45YzIuNi0xMS0xLTIyLjMtNi43LTMyLjFMNTM2LjEgMTA5LjhjLTUtOC42LTE0LjItMTMuOC0yNC4xLTEzLjhzLTE5LjEgNS4zLTI0LjEgMTMuOEwzOTIuNyAyNzMuMWMtNS43IDkuOC05LjMgMjEuMS02LjcgMzIuMUMzOTYuOCAzNTAgNDQ5LjEgMzg0IDUxMiAzODR6TTEyOS4yIDI5MS44TDIwMS42IDQxNkg1Ni43bDcyLjQtMTI0LjJ6TTMuMiA0MzMuMUMxNCA0NzggNjYuMyA1MTIgMTI5LjIgNTEyczExNS4yLTM0IDEyNi03OC45YzIuNi0xMS0xLTIyLjMtNi43LTMyLjFMMTUzLjIgMjM3LjhjLTUtOC42LTE0LjItMTMuOC0yNC4xLTEzLjhzLTE5LjEgNS4zLTI0LjEgMTMuOEw5LjkgNDAxLjFjLTUuNyA5LjgtOS4zIDIxLjEtNi43IDMyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaG9vbENpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNy44IDUuNEMzMjctMS44IDMxMy0xLjggMzAyLjIgNS40TDE2Ni4zIDk2SDQ4QzIxLjUgOTYgMCAxMTcuNSAwIDE0NFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMzIwdjBIMjU2VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NGwuMyAwaC41YzMuNC0zNy43IDE4LjctNzIuMSA0Mi4yLTk5LjFDMzUwLjIgMjYwIDMzNS42IDI2NCAzMjAgMjY0Yy00OC42IDAtODgtMzkuNC04OC04OHMzOS40LTg4IDg4LTg4czg4IDM5LjQgODggODhjMCAxOC4zLTUuNiAzNS4zLTE1LjEgNDkuNGMyOS0yMSA2NC42LTMzLjQgMTAzLjEtMzMuNGM1OS41IDAgMTEyLjEgMjkuNiAxNDQgNzQuOFYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhINDczLjdMMzM3LjggNS40ek05NiAxOTJoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjIwOGMwLTguOCA3LjItMTYgMTYtMTZ6bTAgMTI4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2ek0zMjAgMTI4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMzNlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2ek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS05OS4zLTQzLjNjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM4NS40bDYwLjctNjAuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Nob29sQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM3LjggNS40QzMyNy0xLjggMzEzLTEuOCAzMDIuMiA1LjRMMTY2LjMgOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMjB2MEgyNTZWNDE2YzAtMzUuMyAyOC43LTY0IDY0LTY0bC4zIDBoLjVjMy40LTM3LjcgMTguNy03Mi4xIDQyLjItOTkuMUMzNTAuMiAyNjAgMzM1LjYgMjY0IDMyMCAyNjRjLTQ4LjYgMC04OC0zOS40LTg4LTg4czM5LjQtODggODgtODhzODggMzkuNCA4OCA4OGMwIDE4LjMtNS42IDM1LjMtMTUuMSA0OS40YzI5LTIxIDY0LjYtMzMuNCAxMDMuMS0zMy40YzU5LjUgMCAxMTIuMSAyOS42IDE0NCA3NC44VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OEg0NzMuN0wzMzcuOCA1LjR6TTk2IDE5MmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMjA4YzAtOC44IDcuMi0xNiAxNi0xNnptMCAxMjhoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6TTMyMCAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzM2VjE0NGMwLTguOC03LjItMTYtMTYtMTZ6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaG9vbENpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNy44IDUuNEMzMjctMS44IDMxMy0xLjggMzAyLjIgNS40TDE2Ni4zIDk2SDQ4QzIxLjUgOTYgMCAxMTcuNSAwIDE0NFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMzIwdjBIMjU2VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NGwuMyAwaC41YzMuNC0zNy43IDE4LjctNzIuMSA0Mi4yLTk5LjFDMzUwLjIgMjYwIDMzNS42IDI2NCAzMjAgMjY0Yy00OC42IDAtODgtMzkuNC04OC04OHMzOS40LTg4IDg4LTg4czg4IDM5LjQgODggODhjMCAxOC4zLTUuNiAzNS4zLTE1LjEgNDkuNGMyOS0yMSA2NC42LTMzLjQgMTAzLjEtMzMuNGM1OS41IDAgMTEyLjEgMjkuNiAxNDQgNzQuOFYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhINDczLjdMMzM3LjggNS40ek05NiAxOTJoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjIwOGMwLTguOCA3LjItMTYgMTYtMTZ6bTAgMTI4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2ek0zMjAgMTI4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMzNlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2ek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMjIuNi0xNDRsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkw1MTguNiAzNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaG9vbEZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBINDAwYzguOCAwIDE2IDcuMiAxNiAxNlY4MGMwIDguOC03LjIgMTYtMTYgMTZIMzIwLjdsODkuNiA2NEg1MTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDMzNlY0MDBjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDhWNTEySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyMjRjMC0zNS4zIDI4LjctNjQgNjQtNjRIMTY1LjdMMjU2IDk1LjVWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTQ4IDI0MGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek04MCAyMjRjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIODB6bTM2OCAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZINDY0Yy04LjggMC0xNiA3LjItMTYgMTZ6TTgwIDM1MmMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg4MHptMzg0IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZINDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2xMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMi4yIDUuNGMxMC43LTcuMiAyNC44LTcuMiAzNS41IDBMNDczLjcgOTZINTkyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjI3MmMwLTYxLjktNTAuMS0xMTItMTEyLTExMnMtMTEyIDUwLjEtMTEyIDExMnYyNC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40SDMyMC4zbC0uMyAwYy0zNS4zIDAtNjQgMjguNy02NCA2NHY5Nmg2NHYwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhIMTY2LjNMMzAyLjIgNS40ek04MCAyMDh2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDk2Yy04LjggMC0xNiA3LjItMTYgMTZ6bTAgMTI4djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzM2YzAtOC44LTcuMi0xNi0xNi0xNkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2em0yNDAtNzJhODggODggMCAxIDAgMC0xNzYgODggODggMCAxIDAgMCAxNzZ6bTE2LTEyMHYxNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzMjBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptMTkyIDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY0OGg2NFYyNzJjMC0xNy43LTE0LjMtMzItMzItMzJ6bS04MCAzMmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwdjQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0NDhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMlYyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaG9vbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzcuOCA1LjRDMzI3LTEuOCAzMTMtMS44IDMwMi4yIDUuNEwxNjYuMyA5Nkg0OEMyMS41IDk2IDAgMTE3LjUgMCAxNDRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDI1NlY0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHY5Nkg1OTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ3My43TDMzNy44IDUuNHpNOTYgMTkyaDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYyMDhjMC04LjggNy4yLTE2IDE2LTE2em00MDAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZINTEyYy04LjggMC0xNi03LjItMTYtMTZWMjA4ek05NiAzMjBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6bTQwMCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg1MTJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZ6TTIzMiAxNzZhODggODggMCAxIDEgMTc2IDAgODggODggMCAxIDEgLTE3NiAwem04OC00OGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMzZWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Npc3NvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDE5MmwtMzkuNS0zOS41YzQuOS0xMi42IDcuNS0yNi4yIDcuNS00MC41QzIyNCA1MC4xIDE3My45IDAgMTEyIDBTMCA1MC4xIDAgMTEyczUwLjEgMTEyIDExMiAxMTJjMTQuMyAwIDI3LjktMi43IDQwLjUtNy41TDE5MiAyNTZsLTM5LjUgMzkuNWMtMTIuNi00LjktMjYuMi03LjUtNDAuNS03LjVDNTAuMSAyODggMCAzMzguMSAwIDQwMHM1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJjMC0xNC4zLTIuNy0yNy45LTcuNS00MC41TDQ5OS4yIDc2LjhjNy4xLTcuMSA3LjEtMTguNSAwLTI1LjZjLTI4LjMtMjguMy03NC4xLTI4LjMtMTAyLjQgMEwyNTYgMTkyem0yMi42IDE1MC42TDM5Ni44IDQ2MC44YzI4LjMgMjguMyA3NC4xIDI4LjMgMTAyLjQgMGM3LjEtNy4xIDcuMS0xOC41IDAtMjUuNkwzNDIuNiAyNzguNmwtNjQgNjR6TTY0IDExMmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00OCAyNDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3Jld2RyaXZlcldyZW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03OC42IDVDNjkuMS0yLjQgNTUuNi0xLjUgNDcgN0w3IDQ3Yy04LjUgOC41LTkuNCAyMi0yLjEgMzEuNmw4MCAxMDRjNC41IDUuOSAxMS42IDkuNCAxOSA5LjRoNTQuMWwxMDkgMTA5Yy0xNC43IDI5LTEwIDY1LjQgMTQuMyA4OS42bDExMiAxMTJjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTExMi0xMTJjLTI0LjItMjQuMi02MC42LTI5LTg5LjYtMTQuM2wtMTA5LTEwOVYxMDRjMC03LjUtMy41LTE0LjUtOS40LTE5TDc4LjYgNXpNMTkuOSAzOTYuMUM3LjIgNDA4LjggMCA0MjYuMSAwIDQ0NC4xQzAgNDgxLjYgMzAuNCA1MTIgNjcuOSA1MTJjMTggMCAzNS4zLTcuMiA0OC0xOS45TDIzMy43IDM3NC4zYy03LjgtMjAuOS05LTQzLjYtMy42LTY1LjFsLTYxLjctNjEuN0wxOS45IDM5Ni4xek01MTIgMTQ0YzAtMTAuNS0xLjEtMjAuNy0zLjItMzAuNWMtMi40LTExLjItMTYuMS0xNC4xLTI0LjItNmwtNjMuOSA2My45Yy0zIDMtNy4xIDQuNy0xMS4zIDQuN0gzNTJjLTguOCAwLTE2LTcuMi0xNi0xNlYxMDIuNmMwLTQuMiAxLjctOC4zIDQuNy0xMS4zbDYzLjktNjMuOWM4LjEtOC4xIDUuMi0yMS44LTYtMjQuMkMzODguNyAxLjEgMzc4LjUgMCAzNjggMEMyODguNSAwIDIyNCA2NC41IDIyNCAxNDRsMCAuOCA4NS4zIDg1LjNjMzYtOS4xIDc1LjggLjUgMTA0IDI4LjdMNDI5IDI3NC41YzQ5LTIzIDgzLTcyLjggODMtMTMwLjV6TTU2IDQzMmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3Jld2RyaXZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjUgN2MtOC41LTguNS0yMi05LjQtMzEuNi0yLjFsLTEwNCA4MGMtNS45IDQuNS05LjQgMTEuNi05LjQgMTl2NTQuMWwtODUuNiA4NS42YzYuNyA0LjIgMTMgOS4zIDE4LjggMTUuMXMxMC45IDEyLjIgMTUuMSAxOC44TDM1My45IDE5Mkg0MDhjNy41IDAgMTQuNS0zLjUgMTktOS40bDgwLTEwNGM3LjQtOS42IDYuNS0yMy4xLTIuMS0zMS42TDQ2NSA3ek0xMjEuNCAyODEuNGwtMTEyIDExMmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTEyLTExMmMzMC4yLTMwLjIgMzAuMi03OS4xIDAtMTA5LjNzLTc5LjEtMzAuMi0xMDkuMyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3JvbGxUb3JhaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA0ODBWMzJDOTYgMTQuMyA3NC41IDAgNDggMFMwIDE0LjMgMCAzMlY0ODBjMCAxNy43IDIxLjUgMzIgNDggMzJzNDgtMTQuMyA0OC0zMnpNNTEyIDMySDEyOFY0ODBINTEyVjMyek01OTIgMGMtMjYuNSAwLTQ4IDE0LjMtNDggMzJWNDgwYzAgMTcuNyAyMS41IDMyIDQ4IDMyczQ4LTE0LjMgNDgtMzJWMzJjMC0xNy43LTIxLjUtMzItNDgtMzJ6TTE5NiAzMTMuN2MwLTMuMiAuOS02LjQgMi41LTkuMkwyMjYuNyAyNTZsLTI4LjMtNDguNWMtMS42LTIuOC0yLjUtNi0yLjUtOS4yYzAtMTAuMSA4LjItMTguMyAxOC4zLTE4LjNIMjcxbDMxLjQtNTMuOWMzLjYtNi4zIDEwLjMtMTAuMSAxNy42LTEwLjFzMTMuOSAzLjggMTcuNiAxMC4xTDM2OSAxODBoNTYuN2MxMC4xIDAgMTguMyA4LjIgMTguMyAxOC4zYzAgMy4yLS45IDYuNC0yLjUgOS4yTDQxMy4zIDI1NmwyOC4zIDQ4LjVjMS42IDIuOCAyLjUgNiAyLjUgOS4yYzAgMTAuMS04LjIgMTguMy0xOC4zIDE4LjNIMzY5bC0zMS40IDUzLjljLTMuNiA2LjMtMTAuMyAxMC4xLTE3LjYgMTAuMXMtMTMuOS0zLjgtMTcuNi0xMC4xTDI3MSAzMzJIMjE0LjNjLTEwLjEgMC0xOC4zLTguMi0xOC4zLTE4LjN6bTEyNCA1NC43TDM0MS4yIDMzMkgyOTguOEwzMjAgMzY4LjR6TTI1NC41IDI1NmwzMC4zIDUyaDcwLjRsMzAuMy01Mi0zMC4zLTUySDI4NC44bC0zMC4zIDUyem0xNDQuOSAyMy44TDM4MyAzMDhoMzIuOGwtMTYuNC0yOC4yek00MTUuOCAyMDRIMzgzbDE2LjQgMjguMkw0MTUuOCAyMDR6TTMyMCAxNDMuNkwyOTguOCAxODBoNDIuNEwzMjAgMTQzLjZ6TTIyNC4yIDIwNGwxNi40IDI4LjJMMjU3IDIwNEgyMjQuMnpNMjU3IDMwOGwtMTYuNC0yOC4yTDIyNC4yIDMwOEgyNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjcm9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDgwdjQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQ4IDk2VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4UzAgNTMuNSAwIDgwek0xMTIgMzJjMTAgMTMuNCAxNiAzMCAxNiA0OFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHYtNS4zYzAtMzIuNCAyNi4zLTU4LjcgNTguNy01OC43SDQ4MFYxMjhjMC01My00My05Ni05Ni05NkgxMTJ6TTQ2NCA0ODBjNjEuOSAwIDExMi01MC4xIDExMi0xMTJjMC04LjgtNy4yLTE2LTE2LTE2SDMxNC43Yy0xNC43IDAtMjYuNyAxMS45LTI2LjcgMjYuN1YzODRjMCA1My00MyA5Ni05NiA5NkgzNjhoOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNkQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMEgxNDEuM0MxMjQuMyAwIDEwOCA2LjcgOTYgMTguN0wxOC43IDk2QzYuNyAxMDggMCAxMjQuMyAwIDE0MS4zVjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTE2MCA4OHY0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY4OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0em04MCAwdjQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0Vjg4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6bTgwIDB2NDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWODhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NC45IDk2QzY3LjEgODQuNCA3My43IDc2LjIgODYgNzAuNmMxMy44LTYuMiAzNC44LTguOSA2MS4yLTQuNWM4LjggMS40IDM2LjEgNy4xIDQ0LjEgOS4zYzE3IDQuOCAzNC43LTUuMSAzOS41LTIyLjJzLTUuMS0zNC43LTIyLjItMzkuNWMtMTEuMS0zLjEtNDEtOS4yLTUwLjktMTAuOEMxMjMtMi43IDg4LjMtLjYgNTkuNyAxMi4zQzI5LjkgMjUuOCA3LjUgNTAuOSAxLjYgODYuNWMtLjEgLjUtLjIgMS4xLS4yIDEuNmMtMi4yIDE5LjcgLjMgMzcuOSA4LjEgNTQuMWM3LjcgMTYuMSAxOS40IDI4IDMyIDM2LjljLjYgLjUgMS4zIC45IDIgMS40QzIyLjMgMTk0LjIgNi41IDIxNS4xIDEuNyAyNDNjLS4xIC42LS4yIDEuMS0uMiAxLjdjLTIuMyAxOS4zIC40IDM3LjEgOC40IDUzYzcuOSAxNS42IDE5LjggMjcgMzIuMyAzNS41YzIyLjQgMTUuMiA1MS45IDI0IDc1LjQgMzFsMCAwIDMuNyAxLjFjMjcuMiA4LjIgNDYuOSAxNC42IDU5LjQgMjMuOGM1LjUgNCA4LjIgNy42IDkuNSAxMC45YzEuMyAzLjIgMi42IDguNiAuOSAxOC4xYy0xLjcgMTAuMS03LjcgMTgtMjAuNyAyMy41Yy0xNCA2LTM1LjQgOC41LTYyIDQuNGMtMTIuOC0yLjEtMzUuMS05LjctNTQuMS0xNi4ybDAgMGMtNC4zLTEuNS04LjUtMi45LTEyLjMtNC4yQzI1LjMgNDIwIDcuMiA0MjkuMSAxLjYgNDQ1LjhzMy41IDM0LjkgMjAuMyA0MC41YzIuNiAuOCA1LjcgMS45IDkuMiAzLjFjMTguNiA2LjMgNDguNSAxNi42IDY3LjMgMTkuNmwwIDAgLjIgMGMzNC41IDUuNCA2OC44IDMuNCA5Ny4yLTguN2MyOS40LTEyLjYgNTIuNS0zNi41IDU4LjUtNzEuNWMzLjMtMTkuMyAxLjktMzcuNC01LTUzLjljLTYuMy0xNS0xNi40LTI2LjQtMjcuNi0zNS4yYzE2LjUtMTMuOSAyOC41LTMzLjIgMzIuNi01OC4yYzMuMi0xOS44IDEuOS0zOC4zLTQuOC01NS4xYy02LjctMTYuOC0xNy44LTI5LjQtMzAuMi0zOWMtMjIuOC0xNy42LTUzLjYtMjcuNC03Ny43LTM1bC0xLjQtLjVjLTI3LjQtOC43LTQ3LjgtMTUuMy02MS41LTI1Yy02LjEtNC40LTkuNS04LjUtMTEuNC0xMi40Yy0xLjgtMy43LTMuMi05LjMtMi4zLTE4LjV6bTc2LjcgMjA4LjVjLS4yLS4xLS40LS4xLS42LS4ybC0xLjQtLjRjLTI3LjQtOC4yLTQ3LjktMTQuNS02MS43LTIzLjhjLTYuMi00LjItOS4zLTcuOS0xMS0xMS4zYy0xLjUtMy0yLjktNy43LTIuMS0xNS43YzEuOS05LjcgNy45LTE3LjMgMjAuNS0yMi43YzE0LTYgMzUuNC04LjUgNjIuMS00LjNsMTYuNCAyLjZjNi4zIDIuOSAxMS43IDYgMTYuMiA5LjVjNS41IDQuMiA4LjQgOC4yIDEwIDEyLjJjMS42IDQgMi44IDEwLjQgMS4xIDIwLjljLTIuNCAxNC43LTEyLjggMjYuNC0zNy4xIDMxbC0xMi40IDIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VlZGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDMyYzAgMTEzLjYtODQuNiAyMDcuNS0xOTQuMiAyMjJjLTcuMS01My40LTMwLjYtMTAxLjYtNjUuMy0xMzkuM0MyOTAuOCA0Ni4zIDM2NCAwIDQ0OCAwaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyek0wIDk2QzAgNzguMyAxNC4zIDY0IDMyIDY0SDY0YzEyMy43IDAgMjI0IDEwMC4zIDIyNCAyMjR2MzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMyMEMxMDAuMyAzMjAgMCAyMTkuNyAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZXJ2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NnY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTI4MCA3MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTQ4IDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTY0IDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjM1MmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptMjgwIDcyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNTYgMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hhcGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNS40IDE1LjVDMzA5LjcgNS45IDI5OS4yIDAgMjg4IDBzLTIxLjcgNS45LTI3LjQgMTUuNWwtOTYgMTYwYy01LjkgOS45LTYuMSAyMi4yLS40IDMyLjJzMTYuMyAxNi4yIDI3LjggMTYuMkgzODRjMTEuNSAwIDIyLjItNi4yIDI3LjgtMTYuMnM1LjUtMjIuMy0uNC0zMi4ybC05Ni0xNjB6TTI4OCAzMTJWNDU2YzAgMjIuMSAxNy45IDQwIDQwIDQwSDQ3MmMyMi4xIDAgNDAtMTcuOSA0MC00MFYzMTJjMC0yMi4xLTE3LjktNDAtNDAtNDBIMzI4Yy0yMi4xIDAtNDAgMTcuOS00MCA0MHpNMTI4IDUxMmExMjggMTI4IDAgMSAwIDAtMjU2IDEyOCAxMjggMCAxIDAgMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlRnJvbVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMjI0SDMwNS41Yy00NSAwLTgxLjUgMzYuNS04MS41IDgxLjVjMCAyMi4zIDEwLjMgMzQuMyAxOS4yIDQwLjVjNi44IDQuNyAxMi44IDEyIDEyLjggMjAuM2MwIDkuOC04IDE3LjgtMTcuOCAxNy44aC0yLjVjLTIuNCAwLTQuOC0uNC03LjEtMS40QzIxMC44IDM3NC44IDEyOCAzMzMuNCAxMjggMjQwYzAtNzkuNSA2NC41LTE0NCAxNDQtMTQ0aDgwVjM0LjdDMzUyIDE1LjUgMzY3LjUgMCAzODYuNyAwYzguNiAwIDE2LjggMy4yIDIzLjIgOC45TDU0OC4xIDEzMy4zYzcuNiA2LjggMTEuOSAxNi41IDExLjkgMjYuN3MtNC4zIDE5LjktMTEuOSAyNi43bC0xMzkgMTI1LjFjLTUuOSA1LjMtMTMuNSA4LjItMjEuNCA4LjJIMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMjR6TTgwIDk2Yy04LjggMC0xNiA3LjItMTYgMTZWNDMyYzAgOC44IDcuMiAxNiAxNiAxNkg0MDBjOC44IDAgMTYtNy4yIDE2LTE2VjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjQ4YzAgNDQuMi0zNS44IDgwLTgwIDgwSDgwYy00NC4yIDAtODAtMzUuOC04MC04MFYxMTJDMCA2Ny44IDM1LjggMzIgODAgMzJoNDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlTm9kZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDIyNGM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCA0IC4yIDggLjcgMTEuOWwtOTQuMSA0N0MxNDUuNCAxNzAuMiAxMjEuOSAxNjAgOTYgMTYwYy01MyAwLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2YzI1LjkgMCA0OS40LTEwLjIgNjYuNi0yNi45bDk0LjEgNDdjLS41IDMuOS0uNyA3LjgtLjcgMTEuOWMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2cy00My05Ni05Ni05NmMtMjUuOSAwLTQ5LjQgMTAuMi02Ni42IDI2LjlsLTk0LjEtNDdjLjUtMy45IC43LTcuOCAuNy0xMS45cy0uMi04LS43LTExLjlsOTQuMS00N0MzMDIuNiAyMTMuOCAzMjYuMSAyMjQgMzUyIDIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA3IDM0LjhjLTExLjUgNS4xLTE5IDE2LjYtMTkgMjkuMnY2NEgxNzZDNzguOCAxMjggMCAyMDYuOCAwIDMwNEMwIDQxNy4zIDgxLjUgNDY3LjkgMTAwLjIgNDc4LjFjMi41IDEuNCA1LjMgMS45IDguMSAxLjljMTAuOSAwIDE5LjctOC45IDE5LjctMTkuN2MwLTcuNS00LjMtMTQuNC05LjgtMTkuNUMxMDguOCA0MzEuOSA5NiA0MTQuNCA5NiAzODRjMC01MyA0My05NiA5Ni05Nmg5NnY2NGMwIDEyLjYgNy40IDI0LjEgMTkgMjkuMnMyNSAzIDM0LjQtNS40bDE2MC0xNDRjNi43LTYuMSAxMC42LTE0LjcgMTAuNi0yMy44cy0zLjgtMTcuNy0xMC42LTIzLjhsLTE2MC0xNDRjLTkuNC04LjUtMjIuOS0xMC42LTM0LjQtNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGVldFBsYXN0aWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjI0VjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzODRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAwIDAgMjguNyAwIDY0VjQ0OHpNMTcxLjMgNzUuM2wtOTYgOTZjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZsOTYtOTZjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42em05NiAzMmwtMTYwIDE2MGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNmwxNjAtMTYwYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpNMzg0IDM4NEgyNTZWNTEyTDM4NCAzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoZWtlbFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY5NkgxOTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTYwYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4SDMyek0zMjAgNDgwYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjM1MmMwIDM1LjMtMjguNyA2NC02NCA2NEgxOTJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZENhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjkuNCAyLjlDMjY1LjIgMSAyNjAuNyAwIDI1NiAwcy05LjIgMS0xMy40IDIuOUw1NC4zIDgyLjhjLTIyIDkuMy0zOC40IDMxLTM4LjMgNTcuMmMuNSA5OS4yIDQxLjMgMjgwLjcgMjEzLjYgMzYzLjJjMTYuNyA4IDM2LjEgOCA1Mi44IDBDNDU0LjcgNDIwLjcgNDk1LjUgMjM5LjIgNDk2IDE0MGMuMS0yNi4yLTE2LjMtNDcuOS0zOC4zLTU3LjJMMjY5LjQgMi45ek0xNjAgMTU0LjRjMC01LjggNC43LTEwLjQgMTAuNC0xMC40aC4yYzMuNCAwIDYuNSAxLjYgOC41IDQuM2w0MCA1My4zYzMgNCA3LjggNi40IDEyLjggNi40aDQ4YzUgMCA5LjgtMi40IDEyLjgtNi40bDQwLTUzLjNjMi0yLjcgNS4yLTQuMyA4LjUtNC4zaC4yYzUuOCAwIDEwLjQgNC43IDEwLjQgMTAuNFYyNzJjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZWMTU0LjR6TTIxNiAyODhhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem05Ni0xNmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGllbGREb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjJjLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yYzE2LjcgOCAzNi4xIDggNTIuOCAwQzQ1NC43IDQyMC43IDQ5NS41IDIzOS4yIDQ5NiAxNDBjLjEtMjYuMi0xNi4zLTQ3LjktMzguMy01Ny4yTDI2OS40IDIuOXpNMTYwLjkgMjg2LjJjNC44IDEuMiA5LjkgMS44IDE1LjEgMS44YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGg0NC4yYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDE5Mmg2NGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA0NC4yLTM1LjggODAtODAgODBIMjcydjUwLjdjMCA3LjMtNS45IDEzLjMtMTMuMyAxMy4zYy0xLjggMC0zLjYtLjQtNS4yLTEuMWwtOTguNy00Mi4zYy02LjYtMi44LTEwLjgtOS4zLTEwLjgtMTYuNGMwLTIuOCAuNi01LjUgMS45LThsMTUtMzB6TTE2MCAxNjBoNDAgOHYzMiAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNzZjMC04LjggNy4yLTE2IDE2LTE2em0xMjggNDhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkSGFsdmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzQuNiAwIDkuMiAxIDEzLjQgMi45TDQ1Ny43IDgyLjhjMjIgOS4zIDM4LjQgMzEgMzguMyA1Ny4yYy0uNSA5OS4yLTQxLjMgMjgwLjctMjEzLjYgMzYzLjJjLTE2LjcgOC0zNi4xIDgtNTIuOCAwQzU3LjMgNDIwLjcgMTYuNSAyMzkuMiAxNiAxNDBjLS4xLTI2LjIgMTYuMy00Ny45IDM4LjMtNTcuMkwyNDIuNyAyLjlDMjQ2LjggMSAyNTEuNCAwIDI1NiAwem0wIDY2LjhWNDQ0LjhDMzk0IDM3OCA0MzEuMSAyMzAuMSA0MzIgMTQxLjRMMjU2IDY2LjhsMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGllbGRIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjkuNCAyLjlDMjY1LjIgMSAyNjAuNyAwIDI1NiAwcy05LjIgMS0xMy40IDIuOUw1NC4zIDgyLjhjLTIyIDkuMy0zOC40IDMxLTM4LjMgNTcuMmMuNSA5OS4yIDQxLjMgMjgwLjcgMjEzLjYgMzYzLjJjMTYuNyA4IDM2LjEgOCA1Mi44IDBDNDU0LjcgNDIwLjcgNDk1LjUgMjM5LjIgNDk2IDE0MGMuMS0yNi4yLTE2LjMtNDcuOS0zOC4zLTU3LjJMMjY5LjQgMi45ek0xNDQgMjIxLjNjMC0zMy44IDI3LjQtNjEuMyA2MS4zLTYxLjNjMTYuMiAwIDMxLjggNi41IDQzLjMgMTcuOWw3LjQgNy40IDcuNC03LjRjMTEuNS0xMS41IDI3LjEtMTcuOSA0My4zLTE3LjljMzMuOCAwIDYxLjMgMjcuNCA2MS4zIDYxLjNjMCAxNi4yLTYuNSAzMS44LTE3LjkgNDMuM2wtODIuNyA4Mi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtODIuNy04Mi43Yy0xMS41LTExLjUtMTcuOS0yNy4xLTE3LjktNDMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkVmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjJjLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yYzE2LjcgOCAzNi4xIDggNTIuOCAwQzQ1NC43IDQyMC43IDQ5NS41IDIzOS4yIDQ5NiAxNDBjLjEtMjYuMi0xNi4zLTQ3LjktMzguMy01Ny4yTDI2OS40IDIuOXpNMjU2IDExMmM4LjggMCAxNiA3LjIgMTYgMTZjMCAzMyAzOS45IDQ5LjUgNjMuMiAyNi4yYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkMzMzQuNSAyMDAuMSAzNTEgMjQwIDM4NCAyNDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTMzIDAtNDkuNSAzOS45LTI2LjIgNjMuMmM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwQzMxMS45IDMzNC41IDI3MiAzNTEgMjcyIDM4NGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmMwLTMzLTM5LjktNDkuNS02My4yLTI2LjJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZDMTc3LjUgMzExLjkgMTYxIDI3MiAxMjggMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2YzMzIDAgNDkuNS0zOS45IDI2LjItNjMuMmMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwQzIwMC4xIDE3Ny41IDI0MCAxNjEgMjQwIDEyOGMwLTguOCA3LjItMTYgMTYtMTZ6TTIzMiAyNTZhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em03MiAzMmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjNC42IDAgOS4yIDEgMTMuNCAyLjlMNDU3LjcgODIuOGMyMiA5LjMgMzguNCAzMSAzOC4zIDU3LjJjLS41IDk5LjItNDEuMyAyODAuNy0yMTMuNiAzNjMuMmMtMTYuNyA4LTM2LjEgOC01Mi44IDBDNTcuMyA0MjAuNyAxNi41IDIzOS4yIDE2IDE0MGMtLjEtMjYuMiAxNi4zLTQ3LjkgMzguMy01Ny4yTDI0Mi43IDIuOUMyNDYuOCAxIDI1MS40IDAgMjU2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMySDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NGg0OGMyNi41IDAgNDggMjEuNSA0OCA0OFYyNDBsNDQuNCAxNC44YzIzLjEgNy43IDI5LjUgMzcuNSAxMS41IDUzLjlsLTEwMSA5Mi42Yy0xNi4yIDkuNC0zNC43IDE1LjEtNTAuOSAxNS4xYy0xOS42IDAtNDAuOC03LjctNTkuMi0yMC4zYy0yMi4xLTE1LjUtNTEuNi0xNS41LTczLjcgMGMtMTcuMSAxMS44LTM4IDIwLjMtNTkuMiAyMC4zYy0xNi4yIDAtMzQuNy01LjctNTAuOS0xNS4xbC0xMDEtOTIuNmMtMTgtMTYuNS0xMS42LTQ2LjIgMTEuNS01My45TDk2IDI0MFYxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhoNDhWMzJ6TTE2MCAyMTguN2wxMDcuOC0zNS45YzEzLjEtNC40IDI3LjMtNC40IDQwLjUgMEw0MTYgMjE4LjdWMTI4SDE2MHY5MC43ek0zMDYuNSA0MjEuOUMzMjkgNDM3LjQgMzU2LjUgNDQ4IDM4NCA0NDhjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNTAxLjcgNDE3IDUxMiAzODQgNTEyYy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2wwIDBDMTM2LjcgNDM3LjIgMTY1LjEgNDQ4IDE5MiA0NDhjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xYzExLjEtNy45IDI1LjktNy45IDM3IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMS44IDBjNy44IDAgMTQuMyA1LjcgMTYuNyAxMy4yQzI0MC44IDUxLjkgMjc3LjEgODAgMzIwIDgwczc5LjItMjguMSA5MS41LTY2LjhDNDEzLjkgNS43IDQyMC40IDAgNDI4LjIgMGgxMi42YzIyLjUgMCA0NC4yIDcuOSA2MS41IDIyLjNMNjI4LjUgMTI3LjRjNi42IDUuNSAxMC43IDEzLjUgMTEuNCAyMi4xcy0yLjEgMTcuMS03LjggMjMuNmwtNTYgNjRjLTExLjQgMTMuMS0zMS4yIDE0LjYtNDQuNiAzLjVMNDgwIDE5Ny43VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEgyMjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5Ny43bC01MS41IDQyLjljLTEzLjMgMTEuMS0zMy4xIDkuNi00NC42LTMuNWwtNTYtNjRjLTUuNy02LjUtOC41LTE1LTcuOC0yMy42czQuOC0xNi42IDExLjQtMjIuMUwxMzcuNyAyMi4zQzE1NSA3LjkgMTc2LjcgMCAxOTkuMiAwaDEyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob2VQcmludHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDBDMzUyLjMgMCAyNTYgMzIgMjU2IDMyVjE2MGM0OCAwIDc2IDE2IDEwNCAzMnM1NiAzMiAxMDQgMzJjNTYuNCAwIDE3Ni0xNiAxNzYtOTZTNTEyIDAgNDE2IDB6TTEyOCA5NmMwIDM1LjMgMjguNyA2NCA2NCA2NGgzMlYzMkgxOTJjLTM1LjMgMC02NCAyOC43LTY0IDY0ek0yODggNTEyYzk2IDAgMjI0LTQ4IDIyNC0xMjhzLTExOS42LTk2LTE3Ni05NmMtNDggMC03NiAxNi0xMDQgMzJzLTU2IDMyLTEwNCAzMlY0ODBzOTYuMyAzMiAxNjAgMzJ6TTAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDk2VjM1Mkg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3BMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2LjggMTkySDQ0OS42YzIwLjItMTkuOCA0Ny45LTMyIDc4LjQtMzJjMzAuNSAwIDU4LjEgMTIuMiA3OC4zIDMxLjljMTguOS0xLjYgMzMuNy0xNy40IDMzLjctMzYuN2MwLTcuMy0yLjItMTQuNC02LjItMjAuNEw1NTguMiAyMS40QzU0OS4zIDggNTM0LjQgMCA1MTguMyAwSDEyMS43Yy0xNiAwLTMxIDgtMzkuOSAyMS40TDYuMiAxMzQuN2MtNCA2LjEtNi4yIDEzLjItNi4yIDIwLjRDMCAxNzUuNSAxNi41IDE5MiAzNi44IDE5MnpNMzg0IDIyNEgzMjBWMzg0SDEyOFYyMjRINjRWMzg0djgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDMzNmMyNi41IDAgNDgtMjEuNSA0OC00OFYzODQgMzUyIDIyNHptMTQ0IDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4SDQ5NlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMnY0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJWMjcyYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9wU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN2wtNTQuOC00M1YyMjRINTEyVjM3NkwzODQgMjc1LjdWMjI0SDMyMHYxLjVMMjc3LjIgMTkySDYwMy4yYzIwLjMgMCAzNi44LTE2LjUgMzYuOC0zNi44YzAtNy4zLTIuMi0xNC40LTYuMi0yMC40TDU1OC4yIDIxLjRDNTQ5LjMgOCA1MzQuNCAwIDUxOC4zIDBIMTIxLjdjLTE2IDAtMzEgOC0zOS45IDIxLjRMNzQuMSAzMi44IDM4LjggNS4xek0zNi44IDE5Mmg4NUwyMSAxMTIuNSA2LjIgMTM0LjdjLTQgNi4xLTYuMiAxMy4yLTYuMiAyMC40QzAgMTc1LjUgMTYuNSAxOTIgMzYuOCAxOTJ6TTMyMCAzODRIMTI4VjIyNEg2NFYzODR2ODBjMCAyNi41IDIxLjUgNDggNDggNDhIMzM2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM5OC41bC02NC01MC40VjM4NHpNNTQ0IDUxMmwtLjMgMGguNmwtLjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNi44IDE5Mkg2MDMuMmMyMC4zIDAgMzYuOC0xNi41IDM2LjgtMzYuOGMwLTcuMy0yLjItMTQuNC02LjItMjAuNEw1NTguMiAyMS40QzU0OS4zIDggNTM0LjQgMCA1MTguMyAwSDEyMS43Yy0xNiAwLTMxIDgtMzkuOSAyMS40TDYuMiAxMzQuN2MtNCA2LjEtNi4yIDEzLjItNi4yIDIwLjRDMCAxNzUuNSAxNi41IDE5MiAzNi44IDE5MnpNNjQgMjI0VjM4NHY4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMzZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzg0IDIyNEgzMjBWMzg0SDEyOFYyMjRINjR6bTQ0OCAwVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIyNEg1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMzEuOUM2NCAxMTIuMSA4MC4xIDk2IDk5LjkgOTZjOS41IDAgMTguNiAzLjggMjUuNCAxMC41bDE2LjIgMTYuMmMtMjEgMzguOS0xNy40IDg3LjUgMTAuOSAxMjNMMTUxIDI0N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwTDM0NSAxMjFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMS4zIDEuM2MtMzUuNS0yOC4zLTg0LjItMzEuOS0xMjMtMTAuOUwxNzAuNSA2MS4zQzE1MS44IDQyLjUgMTI2LjQgMzIgOTkuOSAzMkM0NC43IDMyIDAgNzYuNyAwIDEzMS45VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjEzMS45ek0yNTYgMzUyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptNjQgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMC0xMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em02NCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0wLTEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTY0IDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTMyLTMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hyaW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZzMjguNyA2NCA2NCA2NGgxYzMuNyA4OC45IDc3IDE2MCAxNjcgMTYwaDU2VjEyOEgyNjQgODguOCA2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0NjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINjR6TTIyNCA0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNzJWNDA3LjhsLTY0LjEtMjIuNGMtMTIuNS00LjQtMjYuMiAyLjItMzAuNiAxNC43czIuMiAyNi4yIDE0LjcgMzAuNmw0LjUgMS42QzIzMyA0MzMuOSAyMjQgNDQzLjkgMjI0IDQ1NnptMTI4IDIzLjNjMzYuNC0zLjMgNjkuNS0xNy42IDk2LjEtMzkuNmwtODYuNS0zNC42Yy0zIDEuOC02LjIgMy4yLTkuNiA0LjN2NjkuOXpNNDcyLjYgNDE1YzI0LjYtMzAuMyAzOS40LTY4LjkgMzkuNC0xMTFjMC0xMi4zLTEuMy0yNC4zLTMuNy0zNS45TDM4Mi44IDM1NS4xYy44IDMuNCAxLjIgNyAxLjIgMTAuNmMwIDQuNi0uNyA5LTEuOSAxMy4xTDQ3Mi42IDQxNXpNMzM2IDEyOEgzMjBWMzIwaDE4LjNjOS45IDAgMTkuMSAzLjIgMjYuNiA4LjVsMTMzLjUtOTIuNEM0NzEuOCAxNzIuNiA0MDkuMSAxMjggMzM2IDEyOHpNMTY4IDE5MmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaHVmZmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMy44IDM0LjRjMTItNSAyNS43LTIuMiAzNC45IDYuOWw2NCA2NGM2IDYgOS40IDE0LjEgOS40IDIyLjZzLTMuNCAxNi42LTkuNCAyMi42bC02NCA2NGMtOS4yIDkuMi0yMi45IDExLjktMzQuOSA2LjlzLTE5LjgtMTYuNi0xOS44LTI5LjZWMTYwSDM1MmMtMTAuMSAwLTE5LjYgNC43LTI1LjYgMTIuOEwyODQgMjI5LjMgMjQ0IDE3NmwzMS4yLTQxLjZDMjkzLjMgMTEwLjIgMzIxLjggOTYgMzUyIDk2aDMyVjY0YzAtMTIuOSA3LjgtMjQuNiAxOS44LTI5LjZ6TTE2NCAyODIuN0wyMDQgMzM2bC0zMS4yIDQxLjZDMTU0LjcgNDAxLjggMTI2LjIgNDE2IDk2IDQxNkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg5NmMxMC4xIDAgMTkuNi00LjcgMjUuNi0xMi44TDE2NCAyODIuN3ptMjc0LjYgMTg4Yy05LjIgOS4yLTIyLjkgMTEuOS0zNC45IDYuOXMtMTkuOC0xNi42LTE5LjgtMjkuNlY0MTZIMzUyYy0zMC4yIDAtNTguNy0xNC4yLTc2LjgtMzguNEwxMjEuNiAxNzIuOGMtNi04LjEtMTUuNS0xMi44LTI1LjYtMTIuOEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg5NmMzMC4yIDAgNTguNyAxNC4yIDc2LjggMzguNEwzMjYuNCAzMzkuMmM2IDguMSAxNS41IDEyLjggMjUuNiAxMi44aDMyVjMyMGMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDY0IDY0YzYgNiA5LjQgMTQuMSA5LjQgMjIuNnMtMy40IDE2LjYtOS40IDIyLjZsLTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaHV0dGxlU3BhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMwIDQ4MGM0MC42IDAgODAuNC0xMSAxMTUuMi0zMS45TDM1MiAzODRsLTIyNCAwIDAgOTZoMnpNMzUyIDEyOEwyNDUuMiA2My45QzIxMC40IDQzIDE3MC42IDMyIDEzMCAzMmgtMnY5NmwyMjQgMHpNOTYgMTI4bDAtOTZIODBDNTMuNSAzMiAzMiA1My41IDMyIDgwdjQ4aDhjLTIyLjEgMC00MCAxNy45LTQwIDQwdjE2VjMyOHYxNmMwIDIyLjEgMTcuOSA0MCA0MCA0MEgzMnY0OGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg5NmwwLTk2aDhjMjYuMiAwIDQ5LjQtMTIuNiA2NC0zMkg0NTZjNjkuMyAwIDEzNS0yMi43IDE3OS4yLTgxLjZjNi40LTguNSA2LjQtMjAuMyAwLTI4LjhDNTkxIDE4Mi43IDUyNS4zIDE2MCA0NTYgMTYwSDE2OGMtMTQuNi0xOS40LTM3LjgtMzItNjQtMzJsLTggMHpNNTEyIDI0My42djI0LjljMCAxOS42LTE1LjkgMzUuNi0zNS42IDM1LjZjLTIuNSAwLTQuNC0yLTQuNC00LjRWMjEyLjRjMC0yLjUgMi00LjQgNC40LTQuNGMxOS42IDAgMzUuNiAxNS45IDM1LjYgMzUuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbkhhbmdpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NGwzNTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzUyIDBWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjEyOEgzMkMxNC4zIDEyOCAwIDExMy43IDAgOTZTMTQuMyA2NCAzMiA2NEg2NFYzMkM2NCAxNC4zIDc4LjMgMCA5NiAwem05NiAxNjBINDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNDQ4IDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTM1MiAyMjRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyek0xOTIgMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTk2IDQxNnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbmF0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY3LjhjMCAyNy43LTIuNCA1NS4zLTcuMSA4Mi41bC04NC40IDI1LjNjLTQwLjYgMTIuMi02OC40IDQ5LjYtNjguNCA5MnY3MS45YzAgNDAgMzIuNSA3Mi41IDcyLjUgNzIuNWMyNiAwIDUwLTEzLjkgNjIuOS0zNi41bDEzLjktMjQuM2MyNi44LTQ3IDQ2LjUtOTcuNyA1OC40LTE1MC41bDk0LjQtMjguMy0xMi41IDM3LjVjLTMuMyA5LjgtMS42IDIwLjUgNC40IDI4LjhzMTUuNyAxMy4zIDI2IDEzLjNINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ2MC40bDE4LTUzLjljMy44LTExLjMgLjktMjMuOC03LjQtMzIuNHMtMjAuNy0xMS44LTMyLjItOC40TDMxNi40IDE5OC4xYzIuNC0yMC43IDMuNi00MS40IDMuNi02Mi4zVjEyOGMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjEyOHptLTkuMiAxNzdsNDktMTQuN2MtMTAuNCAzMy44LTI0LjUgNjYuNC00Mi4xIDk3LjJsLTEzLjkgMjQuM2MtMS41IDIuNi00LjMgNC4zLTcuNCA0LjNjLTQuNyAwLTguNS0zLjgtOC41LTguNVYzMzUuNmMwLTE0LjEgOS4zLTI2LjYgMjIuOC0zMC43ek0yNCAzNjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINjQuM2MtLjItMi44LS4zLTUuNi0uMy04LjVWMzY4SDI0em01OTIgNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzA1LjljLTYuNyAxNi4zLTE0LjIgMzIuMy0yMi4zIDQ4SDYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbnNQb3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAzMkg2NEM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJINDQxLjRjNC4yIDAgOC4zLTEuNyAxMS4zLTQuN2w0OC00OGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNDgtNDhjLTMtMy03LjEtNC43LTExLjMtNC43SDI4OGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpNNDgwIDI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMkgyODhWMTkySDIyNHYzMkg3MC42Yy00LjIgMC04LjMgMS43LTExLjMgNC43bC00OCA0OGMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZsNDggNDhjMyAzIDcuMSA0LjcgMTEuMyA0LjdINDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NnpNMjg4IDQ4MFYzODRIMjI0djk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpbUNhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEgyNDIuN2MxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0wzNjUuMyA5NmMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zVjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjRDMCAyOC43IDI4LjcgMCA2NCAwek05NiAxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyaDY0VjE5Mkg5NnpNNjQgMzUyaDgwIDk2IDgwVjI4OEgyNDAgMTQ0IDY0djY0ek0zMjAgMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NnY2NGg2NFYyMjR6TTE2MCAxOTJ2NjRoNjRWMTkySDE2MHpNMjg4IDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYzODRIMjU2djY0aDMyek0xNjAgMzg0djY0aDY0VjM4NEgxNjB6TTY0IDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMlYzODRINjR2MzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJzMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2VjI4OEgxNjBWMjY0YzAtMzAuOS0yNS4xLTU2LTU2LTU2SDU2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDQ4YzQuNCAwIDggMy42IDggOHYyNEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgyNTYgNDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQwMFYyNjRjMC00LjQgMy42LTggOC04aDU2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQwOGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZ2MjRIMjg4Vjk2ek00ODAgNDE2VjM4NEgzMnYzMmMwIDUzIDQzIDk2IDk2IDk2SDM4NGM1MyAwIDk2LTQzIDk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaXRlbWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg2NGMyNi41IDAgNDggMjEuNSA0OCA0OHY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OGgtOHY0MEg0NjRjMzAuOSAwIDU2IDI1LjEgNTYgNTZ2MzJoOGMyNi41IDAgNDggMjEuNSA0OCA0OHY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0NjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM2OGMwLTI2LjUgMjEuNS00OCA0OC00OGg4VjI4OGMwLTQuNC0zLjYtOC04LThIMzEydjQwaDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjU2Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNjhjMC0yNi41IDIxLjUtNDggNDgtNDhoOFYyODBIMTEyYy00LjQgMC04IDMuNi04IDh2MzJoOGMyNi41IDAgNDggMjEuNSA0OCA0OHY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzY4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDhWMjg4YzAtMzAuOSAyNS4xLTU2IDU2LTU2SDI2NFYxOTJoLThjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa3VsbENyb3NzYm9uZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDEyOGMwIDQ0LjQtMjUuNCA4My41LTY0IDEwNi40VjI1NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNzZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjIzNC40Yy0zOC42LTIzLTY0LTYyLjEtNjQtMTA2LjRDODAgNTcuMyAxNDQuNSAwIDIyNCAwczE0NCA1Ny4zIDE0NCAxMjh6TTE2OCAxNzZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xNDQtMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMy40IDI3My43YzcuOS0xNS44IDI3LjEtMjIuMiA0Mi45LTE0LjNMMjI0IDM0OC4ybDE3Ny43LTg4LjhjMTUuOC03LjkgMzUtMS41IDQyLjkgMTQuM3MxLjUgMzUtMTQuMyA0Mi45TDI5NS42IDM4NGwxMzQuOCA2Ny40YzE1LjggNy45IDIyLjIgMjcuMSAxNC4zIDQyLjlzLTI3LjEgMjIuMi00Mi45IDE0LjNMMjI0IDQxOS44IDQ2LjMgNTA4LjZjLTE1LjggNy45LTM1IDEuNS00Mi45LTE0LjNzLTEuNS0zNSAxNC4zLTQyLjlMMTUyLjQgMzg0IDE3LjcgMzE2LjZDMS45IDMwOC43LTQuNSAyODkuNSAzLjQgMjczLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNrdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzOTguOWM1OC41LTQxLjEgOTYtMTA0LjEgOTYtMTc0LjlDNTEyIDEwMC4zIDM5Ny40IDAgMjU2IDBTMCAxMDAuMyAwIDIyNGMwIDcwLjcgMzcuNSAxMzMuOCA5NiAxNzQuOWMwIC40IDAgLjcgMCAxLjF2NjRjMCAyNi41IDIxLjUgNDggNDggNDhoNDhWNDY0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NDhoNjRWNDY0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NDhoNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDAwYzAtLjQgMC0uNyAwLTEuMXpNOTYgMjU2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDk2IDI1NnptMjU2LTY0YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjEgOS4yQzEzLjMtMS4yIDI4LjQtMy4xIDM4LjggNS4xbDU5MiA0NjRjMTAuNCA4LjIgMTIuMyAyMy4zIDQuMSAzMy43cy0yMy4zIDEyLjMtMzMuNyA0LjFMOS4yIDQyLjlDLTEuMiAzNC43LTMuMSAxOS42IDUuMSA5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsZWlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZWMjU2YzAgNTMgNDMgOTYgOTYgOTZ2MzJoNjRWMzUySDM4NHYzMmg2NFYzNTJjNTMgMCA5Ni00MyA5Ni05NlYxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINTEyIDQ4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDEuM2MwIDMwLjItMjQuNSA1NC43LTU0LjcgNTQuN2MtNzUuNSAwLTE0NS42LTM4LjktMTg1LjYtMTAyLjlsLTQuMy02LjlDMTc0LjIgNjcuNiAxMjUgMzcuNiA3MC43IDMyLjdjLTIuMi0uNS00LjQtLjctNi43LS43SDU1IDMyek02NDAgMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTUyYzQ4LjYgMCA4OC0zOS40IDg4LTg4di04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGlkZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDU0LjcgMGMxMi4zIDI4LjMgNDAuNSA0OCA3My4zIDQ4czYxLTE5LjcgNzMuMy00OEw0ODAgNDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0yNDYuNyAwYy0xMi4zLTI4LjMtNDAuNS00OC03My4zLTQ4cy02MSAxOS43LTczLjMgNDhMMzIgMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnptMTI4IDBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzIwIDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0zMi04MGMtMzIuOCAwLTYxIDE5LjctNzMuMyA0OEwzMiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjQ2LjcgMGMxMi4zIDI4LjMgNDAuNSA0OCA3My4zIDQ4czYxLTE5LjcgNzMuMy00OGw1NC43IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTU0LjcgMGMtMTIuMy0yOC4zLTQwLjUtNDgtNzMuMy00OHpNMTkyIDEyOGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6bTczLjMtNjRDMjUzIDM1LjcgMjI0LjggMTYgMTkyIDE2cy02MSAxOS43LTczLjMgNDhMMzIgNjRDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMybDg2LjcgMGMxMi4zIDI4LjMgNDAuNSA0OCA3My4zIDQ4czYxLTE5LjcgNzMuMy00OEw0ODAgMTI4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDI2NS4zIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbW9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDE0NGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NEgyOTkuM2MyMi42IDE5LjkgNTIuMiAzMiA4NC43IDMyczYyLjEtMTIuMSA4NC43LTMySDQ5NmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMnMtNTAuMS0xMTItMTEyLTExMmMtMTAuNyAwLTIxIDEuNS0zMC44IDQuM0M0NDMuOCAyNy43IDQwMS4xIDAgMzUyIDBjLTMyLjYgMC02Mi40IDEyLjItODUuMSAzMi4zQzI0Mi4xIDEyLjEgMjEwLjUgMCAxNzYgMEM5Ni41IDAgMzIgNjQuNSAzMiAxNDR6TTYxNiAzNjhIMjgwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDYxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNHptLTY0IDk2SDQ0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg1NTJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjR6bS0xOTIgMEgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgzNjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjR6TTIyNCAzOTJjMC0xMy4zLTEwLjctMjQtMjQtMjRIOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjAwYzEzLjMgMCAyNC0xMC43IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbW9raW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMlY0M2MwIDM4LjIgMTUuMiA3NC44IDQyLjIgMTAxLjhsMjEgMjFjMjEgMjEgMzIuOCA0OS41IDMyLjggNzkuMnYxMWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNDVjMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOWwtMjEtMjFDNDA1LjkgMTUxLjEgMzg0IDk4LjEgMzg0IDQzVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6TTU3NiAyNTZWMjQ1YzAtMzguMi0xNS4yLTc0LjgtNDIuMi0xMDEuOGwtMjEtMjFjLTIxLTIxLTMyLjgtNDkuNS0zMi44LTc5LjJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY0M2MwIDEyLjcgNS4xIDI0LjkgMTQuMSAzMy45bDIxIDIxYzM5IDM5IDYwLjkgOTEuOSA2MC45IDE0Ny4xdjExYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyek0wIDQxNmMwLTM1LjMgMjguNy02NCA2NC02NEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjQxNnptMjI0IDB2MzJIMzg0VjQxNkgyMjR6bTI4OC02NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbm93Zmxha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjIuMWwxNS0xNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ5IDQ5djcwLjNsNjEuNC0zNS44IDE3LjctNjYuMWMzLjQtMTIuOCAxNi42LTIwLjQgMjkuNC0xN3MyMC40IDE2LjYgMTcgMjkuNGwtNS4yIDE5LjMgMjMuNi0xMy44YzE1LjMtOC45IDM0LjktMy43IDQzLjggMTEuNXMzLjggMzQuOS0xMS41IDQzLjhsLTI1LjMgMTQuOCAyMS43IDUuOGMxMi44IDMuNCAyMC40IDE2LjYgMTcgMjkuNHMtMTYuNiAyMC40LTI5LjQgMTdsLTY3LjctMTguMUwyODcuNSAyNTZsNjAuOSAzNS41IDY3LjctMTguMWMxMi44LTMuNCAyNiA0LjIgMjkuNCAxN3MtNC4yIDI2LTE3IDI5LjRsLTIxLjcgNS44IDI1LjMgMTQuOGMxNS4zIDguOSAyMC40IDI4LjUgMTEuNSA0My44cy0yOC41IDIwLjQtNDMuOCAxMS41bC0yMy42LTEzLjggNS4yIDE5LjNjMy40IDEyLjgtNC4yIDI2LTE3IDI5LjRzLTI2LTQuMi0yOS40LTE3bC0xNy43LTY2LjFMMjU2IDMxMS43djcwLjNsNDkgNDljOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtMTUtMTVWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OS45bC0xNSAxNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0OS00OVYzMTEuN2wtNjEuNCAzNS44LTE3LjcgNjYuMWMtMy40IDEyLjgtMTYuNiAyMC40LTI5LjQgMTdzLTIwLjQtMTYuNi0xNy0yOS40bDUuMi0xOS4zTDQ4LjEgMzk1LjZjLTE1LjMgOC45LTM0LjkgMy43LTQzLjgtMTEuNXMtMy43LTM0LjkgMTEuNS00My44bDI1LjMtMTQuOC0yMS43LTUuOGMtMTIuOC0zLjQtMjAuNC0xNi42LTE3LTI5LjRzMTYuNi0yMC40IDI5LjQtMTdsNjcuNyAxOC4xTDE2MC41IDI1NiA5OS42IDIyMC41IDMxLjkgMjM4LjZjLTEyLjggMy40LTI2LTQuMi0yOS40LTE3czQuMi0yNiAxNy0yOS40bDIxLjctNS44TDE1LjkgMTcxLjZDLjYgMTYyLjctNC41IDE0My4xIDQuNCAxMjcuOXMyOC41LTIwLjQgNDMuOC0xMS41bDIzLjYgMTMuOC01LjItMTkuM2MtMy40LTEyLjggNC4yLTI2IDE3LTI5LjRzMjYgNC4yIDI5LjQgMTdsMTcuNyA2Ni4xTDE5MiAyMDAuM1YxMjkuOUwxNDMgODFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwxNSAxNVYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDEuMSAxNDAuNmMtMiAzLjktMS42IDguNiAxLjIgMTJjNyA4LjUgMTIuOSAxOC4xIDE3LjIgMjguNEw0MDggMTYwLjJWMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2MTkuNmwyMi41LTkuN2MxMi4yLTUuMiAyNi4zIC40IDMxLjUgMTIuNnMtLjQgMjYuMy0xMi42IDMxLjVsLTU2IDI0LTczLjYgMzEuNWMtLjUgOS41LTIuMSAxOC42LTQuOCAyNy4zYy0xLjIgMy44LS4xIDggMi44IDEwLjhDMzk2LjcgMjk2LjkgNDE2IDMzOC4yIDQxNiAzODRjMCA0NC43LTE4LjMgODUtNDcuOCAxMTQuMWMtOS45IDkuNy0yMy43IDEzLjktMzcuNSAxMy45SDE4MS4zYy0xMy45IDAtMjcuNy00LjItMzcuNS0xMy45QzExNC4zIDQ2OSA5NiA0MjguNyA5NiAzODRjMC00NS44IDE5LjMtODcuMSA1MC4xLTExNi4zYzIuOS0yLjggNC02LjkgMi44LTEwLjhjLTIuNy04LjctNC4zLTE3LjktNC44LTI3LjNMNzAuNSAxOTguMWwtNTYtMjRDMi40IDE2OC44LTMuMyAxNTQuNyAxLjkgMTQyLjVzMTkuMy0xNy44IDMxLjUtMTIuNkw1NiAxMzkuNlYxMjBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY0MC4yTDE1Mi42IDE4MWM0LjMtMTAuMyAxMC4xLTE5LjkgMTcuMi0yOC40YzIuOC0zLjQgMy4zLTguMSAxLjItMTJDMTY0IDEyNy4yIDE2MCAxMTIuMSAxNjAgOTZjMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NmMwIDE2LjEtNCAzMS4yLTEwLjkgNDQuNnpNMjI0IDk2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptNDggMTI4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bS0xNiA4MGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTE2IDQ4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6TTI4OCA5NmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bS00OCAyNHYzLjJjMCAzLjIgLjggNi4zIDIuMyA5bDkgMTYuOWMuOSAxLjcgMi43IDIuOCA0LjcgMi44czMuOC0xLjEgNC43LTIuOGw5LTE2LjljMS41LTIuOCAyLjMtNS45IDIuMy05VjEyMGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd3Bsb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4LjkgNjRsNjguNiAxNjBIMjU2bC02NC02NFY2NEgyOTguOXpNNDQ1LjEgMjQyLjdsLTg3LjQtMjA0QzM0Ny42IDE1LjMgMzI0LjUgMCAyOTguOSAwSDE3NmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMTYwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlYyOTguOEMyNi4yIDMxNi44IDAgMzU1LjMgMCA0MDBjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJIMzY4YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtMTcuMi0zLjktMzMuNS0xMC44LTQ4SDUxMnY1MC43YzAgMTcgNi43IDMzLjMgMTguNyA0NS4zbDU0LjYgNTQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDU3NiA0MDIuN1YzMjAgMjM1LjJMNjMzIDE2NGMxMS0xMy44IDguOC0zMy45LTUtNDVzLTMzLjktOC44LTQ1IDVsLTU3IDcxLjJjLTkuMSAxMS4zLTE0IDI1LjQtMTQgNDBWMjg4SDQ0OFYyNTYuN2MuMS0yLjQtLjItNC44LS42LTcuMXMtMS4yLTQuNy0yLjItNi44ek0zNjggMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDExMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OEgzNjh6TTE0NCA0MDBhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHptMjE2IDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptLTU2LTI0YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTIwMCA0MjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTMyMCAyNTZhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6TTQxNiAzMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0wIDE2MGMwIDI3LjYtMTEuNyA1Mi41LTMwLjQgNzAuMUM0MjIuMSAyNzUuNyA0NDggMzEwLjggNDQ4IDM1MmMwIDUzLTQzIDk2LTk2IDk2SDE2MGMtNTMgMC05Ni00My05Ni05NnM0My05NiA5Ni05Nmg4OC40Yy0xNS4yLTE3LTI0LjQtMzkuNC0yNC40LTY0SDk2Yy01MyAwLTk2IDQzLTk2IDk2VjQxNmMwIDUzIDQzIDk2IDk2IDk2SDQxNmM1MyAwIDk2LTQzIDk2LTk2VjI4OGMwLTUzLTQzLTk2LTk2LTk2ek0xNjAgMjg4Yy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0SDM1MmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NEgzMjAgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb2NrcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzUuMiA0NzYuNmMtOS43LTE4LTE1LjItMzguNy0xNS4yLTYwLjZjMC00MC4zIDE5LTc4LjIgNTEuMi0xMDIuNGw2NC00OGM4LjEtNiAxMi44LTE1LjUgMTIuOC0yNS42Vjk2SDEyOFYyNDBjMCAyMC4xLTkuNSAzOS4xLTI1LjYgNTEuMmwtNjQgNDhDMTQuMiAzNTcuMyAwIDM4NS44IDAgNDE2YzAgNTMgNDMgOTYgOTYgOTZjMjAuOCAwIDQxLTYuNyA1Ny42LTE5LjJsMjEuNi0xNi4yek0xMjggNjRIMjg4VjQ4YzAtMTQuNSAzLjktMjguMiAxMC43LTM5LjlDMjkxIDMgMjgxLjkgMCAyNzIgMEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjY0ek0zMjAgOTZWMjQwYzAgMjAuMS05LjUgMzkuMS0yNS42IDUxLjJsLTY0IDQ4QzIwNi4yIDM1Ny4zIDE5MiAzODUuOCAxOTIgNDE2YzAgNTMgNDMgOTYgOTYgOTZjMjAuOCAwIDQxLTYuNyA1Ny42LTE5LjJsMTE1LjItODYuNEM0OTMgMzgyLjIgNTEyIDM0NC4zIDUxMiAzMDRWOTZIMzIwek01MTIgNjRWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzY4Yy0yNi41IDAtNDggMjEuNS00OCA0OFY2NEg1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvbGFyUGFuZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIyLjIgMEM5MS43IDAgNjUuNSAyMS41IDU5LjUgNTEuNEw4LjMgMzA3LjRDLjQgMzQ3IDMwLjYgMzg0IDcxIDM4NEgyODh2NjRIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNTJWMzg0SDU2OWM0MC40IDAgNzAuNy0zNi45IDYyLjgtNzYuNmwtNTEuMi0yNTZDNTc0LjUgMjEuNSA1NDguMyAwIDUxNy44IDBIMTIyLjJ6TTI2MC45IDY0SDM3OS4xbDEwLjQgMTA0aC0xMzlMMjYwLjkgNjR6TTIwMi4zIDE2OEgxMDEuNEwxMjIuMiA2NGg5MC40TDIwMi4zIDE2OHpNOTEuOCAyMTZIMTk3LjVMMTg3LjEgMzIwSDcxTDkxLjggMjE2em0xNTMuOSAwSDM5NC4zbDEwLjQgMTA0LTE2OS40IDAgMTAuNC0xMDR6bTE5Ni44IDBINTQ4LjJMNTY5IDMyMGgtMTE2TDQ0Mi41IDIxNnptOTYtNDhINDM3LjdMNDI3LjMgNjRoOTAuNGwzMS40LTYuM0w1MTcuOCA2NGwyMC44IDEwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgyLjYgNDcwLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC0xMjgtMTI4Yy05LjItOS4yLTExLjktMjIuOS02LjktMzQuOXMxNi42LTE5LjggMjkuNi0xOS44SDI4OGMxMi45IDAgMjQuNiA3LjggMjkuNiAxOS44czIuMiAyNS43LTYuOSAzNC45bC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgyLjYgNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTEyOCAxMjhjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhIMjg4YzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM3LjQgNDEuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxMjggMTI4YzkuMiA5LjIgMTEuOSAyMi45IDYuOSAzNC45cy0xNi42IDE5LjgtMjkuNiAxOS44SDMyYy0xMi45IDAtMjQuNi03LjgtMjkuNi0xOS44cy0yLjItMjUuNyA2LjktMzQuOWwxMjgtMTI4em0wIDQyOS4zbC0xMjgtMTI4Yy05LjItOS4yLTExLjktMjIuOS02LjktMzQuOXMxNi42LTE5LjggMjkuNi0xOS44SDI4OGMxMi45IDAgMjQuNiA3LjggMjkuNiAxOS44czIuMiAyNS43LTYuOSAzNC45bC0xMjggMTI4Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4My4xIDIzNS4zYzMzLjcgMjAuNyA2Mi45IDQ4LjEgODUuOCA4MC41YzcgOS45IDEzLjQgMjAuMyAxOS4xIDMxYzUuNy0xMC44IDEyLjEtMjEuMSAxOS4xLTMxYzIyLjktMzIuNCA1Mi4xLTU5LjggODUuOC04MC41QzQzNy42IDIwNy44IDQ5MC4xIDE5MiA1NDYgMTkyaDkuOWMxMS4xIDAgMjAuMSA5IDIwLjEgMjAuMUM1NzYgMzYwLjEgNDU2LjEgNDgwIDMwOC4xIDQ4MEgyODggMjY3LjlDMTE5LjkgNDgwIDAgMzYwLjEgMCAyMTIuMUMwIDIwMSA5IDE5MiAyMC4xIDE5MkgzMGM1NS45IDAgMTA4LjQgMTUuOCAxNTMuMSA0My4zek0zMDEuNSAzNy42YzE1LjcgMTYuOSA2MS4xIDcxLjggODQuNCAxNjQuNmMtMzggMjEuNi03MS40IDUwLjgtOTcuOSA4NS42Yy0yNi41LTM0LjgtNTkuOS02My45LTk3LjktODUuNmMyMy4yLTkyLjggNjguNi0xNDcuNyA4NC40LTE2NC42QzI3OCAzMy45IDI4Mi45IDMyIDI4OCAzMnMxMCAxLjkgMTMuNSA1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwYWdoZXR0aU1vbnN0ZXJGbHlpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDY0YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTQ4IDBjMCAxNi4yLTYgMzEuMS0xNiA0Mi4zbDE1LjYgMzEuMmMxOC43LTYgMzkuOS05LjUgNjQuNC05LjVzNDUuOCAzLjUgNjQuNCA5LjVMNDAwIDEwNi4zQzM5MCA5NS4xIDM4NCA4MC4yIDM4NCA2NGMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0Yy0xLjcgMC0zLjQtLjEtNS4xLS4yTDQyNy44IDE1OGMyMS4xIDEzLjYgMzcuNyAzMC4yIDUxLjQgNDYuNGM3LjEgOC4zIDEzLjUgMTYuNiAxOS4zIDI0bDEuNCAxLjhjNi4zIDguMSAxMS42IDE0LjggMTYuNyAyMC40QzUyNy4zIDI2Mi4zIDUzMi43IDI2NCA1MzYgMjY0YzIuNSAwIDQuMy0uNiA3LjEtMy4zYzMuNy0zLjUgNy4xLTguOCAxMi41LTE3LjRsLjYtLjljNC42LTcuNCAxMS0xNy42IDE5LjQtMjUuN2M5LjctOS4zIDIyLjktMTYuNyA0MC40LTE2LjdjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTIuNSAwLTQuMyAuNi03LjEgMy4zYy0zLjcgMy41LTcuMSA4LjgtMTIuNSAxNy40bC0uNiAuOWMtNC42IDcuNC0xMSAxNy42LTE5LjQgMjUuN2MtOS43IDkuMy0yMi45IDE2LjctNDAuNCAxNi43Yy0xOC41IDAtMzIuOS04LjUtNDQuMy0xOC42Yy0zLjEgNC02LjYgOC4zLTEwLjUgMTIuN2MxLjQgNC4zIDIuOCA4LjUgNCAxMi41Yy45IDMgMS44IDUuOCAyLjYgOC42YzMgOS44IDUuNSAxOC4yIDguNiAyNS45YzMuOSA5LjggNy40IDE1LjQgMTAuOCAxOC41YzIuNiAyLjQgNS45IDQuMyAxMi44IDQuM2M4LjcgMCAxNi45LTQuMiAzMy43LTEzLjJjMTUtOCAzNS43LTE4LjggNjIuMy0xOC44YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0xMy40IDAtMjQuNyA1LjItMzkuNyAxMy4yYy0xIC42LTIuMSAxLjEtMy4yIDEuN0M1NTkuOSA0MTQgNTQxLjQgNDI0IDUyMCA0MjRjLTE4LjQgMC0zMy42LTYuMS00NS41LTE3LjJjLTExLjEtMTAuMy0xNy45LTIzLjctMjIuNy0zNmMtMy42LTktNi43LTE5LjEtOS41LTI4LjVjLTE2LjQgMTIuMy0zNi4xIDIzLjYtNTguOSAzMS4zYzMuNiAxMC44IDguNCAyMy41IDE0LjQgMzYuMmM3LjUgMTUuOSAxNi4yIDMwLjQgMjUuOCA0MC41QzQzMyA0NjAuNSA0NDEuMiA0NjQgNDQ4IDQ2NGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMjUuMiAwLTQ1LTEzLjUtNTkuNS0yOC44Yy0xNC41LTE1LjQtMjUuNy0zNC45LTM0LjItNTNjLTgtMTctMTQuMS0zMy44LTE4LjMtNDYuOWMtNS4yIC40LTEwLjYgLjYtMTYgLjZzLTEwLjgtLjItMTYtLjZjLTQuMiAxMy0xMC4zIDI5LjktMTguMyA0Ni45Yy04LjUgMTguMS0xOS44IDM3LjYtMzQuMiA1M0MyMzcgNDk4LjUgMjE3LjIgNTEyIDE5MiA1MTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRjNi44IDAgMTUtMy41IDI0LjUtMTMuN2M5LjUtMTAuMSAxOC4zLTI0LjYgMjUuOC00MC41YzUuOS0xMi42IDEwLjctMjUuNCAxNC40LTM2LjJjLTIyLjgtNy43LTQyLjUtMTktNTguOS0zMS4zYy0yLjkgOS40LTYgMTkuNS05LjUgMjguNWMtNC44IDEyLjItMTEuNiAyNS42LTIyLjcgMzZDMTUzLjYgNDE3LjkgMTM4LjQgNDI0IDEyMCA0MjRjLTIxLjQgMC0zOS45LTEwLTUzLjEtMTcuMWwwIDBjLTEuMS0uNi0yLjItMS4yLTMuMi0xLjdjLTE1LTgtMjYuMy0xMy4yLTM5LjctMTMuMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyNi42IDAgNDcuMyAxMC44IDYyLjMgMTguOGMxNi44IDkgMjUgMTMuMiAzMy43IDEzLjJjNi44IDAgMTAuMi0xLjkgMTIuOC00LjNjMy40LTMuMiA3LTguOCAxMC44LTE4LjVjMy03LjcgNS42LTE2LjEgOC42LTI1LjljLjgtMi43IDEuNy01LjYgMi42LTguNmMxLjItNCAyLjYtOC4yIDQtMTIuNWMtMy45LTQuNS03LjQtOC44LTEwLjUtMTIuN0MxMzYuOSAzMDMuNSAxMjIuNSAzMTIgMTA0IDMxMmMtMTcuNSAwLTMwLjctNy40LTQwLjQtMTYuN2MtOC40LTguMS0xNC44LTE4LjMtMTkuNC0yNS43bC0uNi0uOWMtNS40LTguNi04LjgtMTMuOS0xMi41LTE3LjRjLTIuOC0yLjctNC42LTMuMy03LjEtMy4zYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzE3LjUgMCAzMC43IDcuNCA0MC40IDE2LjdjOC40IDguMSAxNC44IDE4LjMgMTkuNCAyNS43bC42IC45YzUuNCA4LjYgOC44IDEzLjkgMTIuNSAxNy40YzIuOCAyLjcgNC42IDMuMyA3LjEgMy4zYzMuMyAwIDguNy0xLjcgMTkuNC0xMy40YzUuMS01LjYgMTAuNC0xMi4zIDE2LjctMjAuNGwxLjQtMS44YzUuOC03LjQgMTIuMi0xNS43IDE5LjMtMjRjMTMuOC0xNi4yIDMwLjMtMzIuOCA1MS40LTQ2LjRsLTE1LjEtMzAuMmMtMS43IC4xLTMuNCAuMi01LjEgLjJjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHptMjA4IDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BlbGxDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMEM5OS4xIDAgODcuNCA3LjggODIuNSAxOS43bC02Ni43IDE2MC0xMy4zIDMyYy02LjggMTYuMyAuOSAzNSAxNy4yIDQxLjhzMzUtLjkgNDEuOC0xNy4yTDY2LjcgMjI0aDkwLjdsNS4xIDEyLjNjNi44IDE2LjMgMjUuNSAyNCA0MS44IDE3LjJzMjQtMjUuNSAxNy4yLTQxLjhsLTEzLjMtMzItNjYuNy0xNjBDMTM2LjYgNy44IDEyNC45IDAgMTEyIDB6bTE4LjcgMTYwSDkzLjNMMTEyIDExNS4yIDEzMC43IDE2MHpNMjU2IDMydjk2IDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwYzQ0LjIgMCA4MC0zNS44IDgwLTgwYzAtMjMuMS05LjgtNDMuOC0yNS40LTU4LjRjNi0xMS4yIDkuNC0yNCA5LjQtMzcuNmMwLTQ0LjItMzUuOC04MC04MC04MEgyODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05NiA2NEgzMjBWNjRoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZ6bS0zMiA2NGgzMiAxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzMjBWMTYwek01NjYuNiAzMTAuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwzNTIgNDM0LjdsLTczLjQtNzMuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTkyLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BpZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1OC40IDMyLjZjNC44LTEyLjQtMS40LTI2LjMtMTMuOC0zMXMtMjYuMyAxLjQtMzEgMTMuOEw4MS4xIDEwMGMtNy45IDIwLjctMyA0NC4xIDEyLjcgNTkuN2w1Ny40IDU3LjRMNzAuOCAxOTAuM2MtMi40LS44LTQuMy0yLjctNS4xLTUuMUw0Ni44IDEyOC40QzQyLjYgMTE1LjggMjkgMTA5IDE2LjQgMTEzLjJTLTMgMTMxIDEuMiAxNDMuNmwxOC45IDU2LjhjNS42IDE2LjcgMTguNyAyOS44IDM1LjQgMzUuNEwxMTYuMSAyNTYgNTUuNiAyNzYuMmMtMTYuNyA1LjYtMjkuOCAxOC43LTM1LjQgMzUuNEwxLjIgMzY4LjRDLTMgMzgxIDMuOCAzOTQuNiAxNi40IDM5OC44czI2LjItMi42IDMwLjQtMTUuMmwxOC45LTU2LjhjLjgtMi40IDIuNy00LjMgNS4xLTUuMWw4MC40LTI2LjhMOTMuNyAzNTIuM0M3OC4xIDM2OCA3My4xIDM5MS40IDgxLjEgNDEybDMyLjUgODQuNmM0LjggMTIuNCAxOC42IDE4LjUgMzEgMTMuOHMxOC41LTE4LjYgMTMuOC0zMWwtMzIuNS04NC42Yy0xLjEtMy0uNC02LjMgMS44LTguNUwxNjAgMzUzLjljMSA1Mi4xIDQzLjYgOTQuMSA5NiA5NC4xczk1LTQxLjkgOTYtOTQuMWwzMi4zIDMyLjNjMi4yIDIuMiAyLjkgNS42IDEuOCA4LjVsLTMyLjUgODQuNmMtNC44IDEyLjQgMS40IDI2LjMgMTMuOCAzMXMyNi4zLTEuNCAzMS0xMy44TDQzMC45IDQxMmM3LjktMjAuNyAzLTQ0LjEtMTIuNy01OS43bC01Ny40LTU3LjQgODAuNCAyNi44YzIuNCAuOCA0LjMgMi43IDUuMSA1LjFsMTguOSA1Ni44YzQuMiAxMi42IDE3LjggMTkuNCAzMC40IDE1LjJzMTkuNC0xNy44IDE1LjItMzAuNGwtMTguOS01Ni44Yy01LjYtMTYuNy0xOC43LTI5LjgtMzUuNC0zNS40TDM5NS45IDI1Nmw2MC41LTIwLjJjMTYuNy01LjYgMjkuOC0xOC43IDM1LjQtMzUuNGwxOC45LTU2LjhjNC4yLTEyLjYtMi42LTI2LjItMTUuMi0zMC40cy0yNi4yIDIuNi0zMC40IDE1LjJsLTE4LjkgNTYuOGMtLjggMi40LTIuNyA0LjMtNS4xIDUuMWwtODAuNCAyNi44IDU3LjQtNTcuNGMxNS42LTE1LjYgMjAuNi0zOSAxMi43LTU5LjdMMzk4LjQgMTUuNEMzOTMuNiAzIDM3OS44LTMuMiAzNjcuNCAxLjZzLTE4LjUgMTguNi0xMy44IDMxbDMyLjUgODQuNmMxLjEgMyAuNCA2LjMtMS44IDguNUwzMzYgMTc0LjFWMTYwYzAtMzEuOC0xOC42LTU5LjMtNDUuNS03Mi4yYy05LjEtNC40LTE4LjUgMy4zLTE4LjUgMTMuNFYxMTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMTAxLjJjMC0xMC4xLTkuNC0xNy43LTE4LjUtMTMuNEMxOTQuNiAxMDAuNyAxNzYgMTI4LjIgMTc2IDE2MHYxNC4xbC00OC4zLTQ4LjNjLTIuMi0yLjItMi45LTUuNi0xLjgtOC41bDMyLjUtODQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Bpbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHptMCA0MTZhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNNDggMzA0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptNDY0LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTE0Mi45IDQzN0E0OCA0OCAwIDEgMCA3NSAzNjkuMSA0OCA0OCAwIDEgMCAxNDIuOSA0Mzd6bTAtMjk0LjJBNDggNDggMCAxIDAgNzUgNzVhNDggNDggMCAxIDAgNjcuOSA2Ny45ek0zNjkuMSA0MzdBNDggNDggMCAxIDAgNDM3IDM2OS4xIDQ4IDQ4IDAgMSAwIDM2OS4xIDQzN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Bsb3RjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDguNSA2Mi4zbDI4LjEtMzYuOUMyNDguOCA5LjQgMjY3LjggMCAyODggMGMyOC41IDAgNTMuNiAxOC43IDYxLjggNDZsMTcuOCA1OS40YzEwLjMgMzQuNCAzNi4xIDYyIDY5LjggNzQuNmwzOS44IDE0LjljMjAuOSA3LjkgMzQuOCAyNy45IDM0LjggNTAuMmMwIDE2LjktNy45IDMyLjgtMjEuNSA0Mi45bC02Ny4zIDUwLjVjLTI0LjMgMTguMi0zNy4yIDQ3LjktMzMuOCA3OC4xbDIuNSAyMi43YzQuMyAzOC43LTI2IDcyLjYtNjUgNzIuNmMtMTQuOCAwLTI5LjMtNS4xLTQwLjgtMTQuM2wtNTUuNC00NC4zYy00LjUtMy42LTkuMy02LjctMTQuNS05LjJjLTE1LjgtNy45LTMzLjctMTAuNC01MS03LjNMODIuNCA0NTEuOUM0Ny44IDQ1OC4yIDE2IDQzMS42IDE2IDM5Ni41YzAtMTMuMiA0LjctMjYgMTMuMS0zNi4ybDExLjItMTMuNGMxNC42LTE3LjQgMjIuNi0zOS40IDIyLjYtNjIuMWMwLTE4LjgtNS41LTM3LjItMTUuOC01M0w4LjggMTczLjVDMy4xIDE2NC43IDAgMTU0LjQgMCAxNDMuOWMwLTMzLjQgMzAuMS01OC44IDYzLTUzLjJsNTEuMyA4LjdjMzUuOSA2LjEgNzIuMi04LjIgOTQuMi0zNy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcG9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDUuOCAyMjAuOWMtMTQuNS0xNy42LTIxLjgtMzkuMi0yMS44LTYwLjhDMjI0IDgwIDMyMCAwIDQxNiAwYzUzIDAgOTYgNDMgOTYgOTZjMCA5Ni04MCAxOTItMTYwLjIgMTkyYy0yMS42IDAtNDMuMi03LjMtNjAuOC0yMS44TDU0LjYgNTAyLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0NS44IDIyMC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcHJheUNhblNwYXJrbGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMydjk2SDIyNFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxMjhDMTEwLjMgMCA5NiAxNC4zIDk2IDMyem0wIDEyOGMtNTMgMC05NiA0My05NiA5NlY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMjcyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1NmMwLTUzLTQzLTk2LTk2LTk2SDk2em02NCA5NmE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpNMzg0IDQ4YzAtMS40LTEtMy0yLjItMy42TDM1MiAzMiAzMzkuNiAyLjJDMzM5IDEgMzM3LjQgMCAzMzYgMHMtMyAxLTMuNiAyLjJMMzIwIDMyIDI5MC4yIDQ0LjRDMjg5IDQ1IDI4OCA0Ni42IDI4OCA0OGMwIDEuNCAxIDMgMi4yIDMuNkwzMjAgNjRsMTIuNCAyOS44QzMzMyA5NSAzMzQuNiA5NiAzMzYgOTZzMy0xIDMuNi0yLjJMMzUyIDY0bDI5LjgtMTIuNEMzODMgNTEgMzg0IDQ5LjQgMzg0IDQ4em03Ni40IDQ1LjhDNDYxIDk1IDQ2Mi42IDk2IDQ2NCA5NnMzLTEgMy42LTIuMkw0ODAgNjRsMjkuOC0xMi40QzUxMSA1MSA1MTIgNDkuNCA1MTIgNDhjMC0xLjQtMS0zLTIuMi0zLjZMNDgwIDMyIDQ2Ny42IDIuMkM0NjcgMSA0NjUuNCAwIDQ2NCAwcy0zIDEtMy42IDIuMkw0NDggMzIgNDE4LjIgNDQuNEM0MTcgNDUgNDE2IDQ2LjYgNDE2IDQ4YzAgMS40IDEgMyAyLjIgMy42TDQ0OCA2NGwxMi40IDI5Ljh6bTcuMiAxMDAuNGMtLjYtMS4yLTIuMi0yLjItMy42LTIuMnMtMyAxLTMuNiAyLjJMNDQ4IDIyNGwtMjkuOCAxMi40Yy0xLjIgLjYtMi4yIDIuMi0yLjIgMy42YzAgMS40IDEgMyAyLjIgMy42TDQ0OCAyNTZsMTIuNCAyOS44Yy42IDEuMiAyLjIgMi4yIDMuNiAyLjJzMy0xIDMuNi0yLjJMNDgwIDI1NmwyOS44LTEyLjRjMS4yLS42IDIuMi0yLjIgMi4yLTMuNmMwLTEuNC0xLTMtMi4yLTMuNkw0ODAgMjI0bC0xMi40LTI5Ljh6TTQ0OCAxNDRjMC0xLjQtMS0zLTIuMi0zLjZMNDE2IDEyOCA0MDMuNiA5OC4yQzQwMyA5NyA0MDEuNCA5NiA0MDAgOTZzLTMgMS0zLjYgMi4yTDM4NCAxMjhsLTI5LjggMTIuNGMtMS4yIC42LTIuMiAyLjItMi4yIDMuNmMwIDEuNCAxIDMgMi4yIDMuNkwzODQgMTYwbDEyLjQgMjkuOGMuNiAxLjIgMi4yIDIuMiAzLjYgMi4yczMtMSAzLjYtMi4yTDQxNiAxNjBsMjkuOC0xMi40YzEuMi0uNiAyLjItMi4yIDIuMi0zLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwcmF5Q2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwaDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDI1NmMwLTUzIDQzLTk2IDk2LTk2SDIyNGM1MyAwIDk2IDQzIDk2IDk2VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjU2em0yNDAgODBBODAgODAgMCAxIDAgODAgMzM2YTgwIDgwIDAgMSAwIDE2MCAwek0yNTYgNjRhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzg0IDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptNjQgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzIgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek00NDggMjU2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTM4NCAxMjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVBcnJvd1VwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0ek0xNjAgMTQ0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDk0LjFMMTE5IDMyN2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDEzNS0xMzVWMzI4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTY4YzAtMTMuMy0xMC43LTI0LTI0LTI0SDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQ2FyZXREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA0ODBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMHpNMjI0IDM1MmMtNi43IDAtMTMtMi44LTE3LjYtNy43bC0xMDQtMTEyYy02LjUtNy04LjItMTcuMi00LjQtMjUuOXMxMi41LTE0LjQgMjItMTQuNGwyMDggMGM5LjUgMCAxOC4yIDUuNyAyMiAxNC40czIuMSAxOC45LTQuNCAyNS45bC0xMDQgMTEyYy00LjUgNC45LTEwLjkgNy43LTE3LjYgNy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVDYXJldExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNnpNMTI4IDI1NmMwLTYuNyAyLjgtMTMgNy43LTE3LjZsMTEyLTEwNGM3LTYuNSAxNy4yLTguMiAyNS45LTQuNHMxNC40IDEyLjUgMTQuNCAyMmwwIDIwOGMwIDkuNS01LjcgMTguMi0xNC40IDIycy0xOC45IDIuMS0yNS45LTQuNGwtMTEyLTEwNGMtNC45LTQuNS03LjctMTAuOS03LjctMTcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQ2FyZXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMHpNMzIwIDI1NmMwIDYuNy0yLjggMTMtNy43IDE3LjZsLTExMiAxMDRjLTcgNi41LTE3LjIgOC4yLTI1LjkgNC40cy0xNC40LTEyLjUtMTQuNC0yMmwwLTIwOGMwLTkuNSA1LjctMTguMiAxNC40LTIyczE4LjktMi4xIDI1LjkgNC40bDExMiAxMDRjNC45IDQuNSA3LjcgMTAuOSA3LjcgMTcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQ2FyZXRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIyNCAxNjBjNi43IDAgMTMgMi44IDE3LjYgNy43bDEwNCAxMTJjNi41IDcgOC4yIDE3LjIgNC40IDI1LjlzLTEyLjUgMTQuNC0yMiAxNC40SDEyMGMtOS41IDAtMTguMi01LjctMjItMTQuNHMtMi4xLTE4LjkgNC40LTI1LjlsMTA0LTExMmM0LjUtNC45IDEwLjktNy43IDE3LjYtNy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTMzNyAyMDlMMjA5IDMzN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNDcgNDdMMzAzIDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUVudmVsb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjE4IDI3MS43TDY0LjIgMTcyLjRDNjYgMTU2LjQgNzkuNSAxNDQgOTYgMTQ0SDM1MmMxNi41IDAgMzAgMTIuNCAzMS44IDI4LjRMMjMwIDI3MS43Yy0xLjggMS4yLTMuOSAxLjgtNiAxLjhzLTQuMi0uNi02LTEuOHptMjkuNCAyNi45TDM4NCAyMTAuNFYzMzZjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjIxMC40bDEzNi42IDg4LjJjNyA0LjUgMTUuMSA2LjkgMjMuNCA2LjlzMTYuNC0yLjQgMjMuNC02Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwSDUxMlY1MTJIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMzM2IDE1MlYyNTYgMzYwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI4MEgxNjBsMCA4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTIwOGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djgwSDI4OFYxNTJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em04OCAyMDBIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlTmZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTc1LjcgNjQuNkM2OC44IDE2Mi41IDY0IDE2OC44IDY0IDE3NlYzMzZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMzMuOGw2Ni4zIDExMC41YzMuNyA2LjIgMTEuMSA5LjEgMTggNy4yczExLjctOC4yIDExLjctMTUuNFYxNzZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMjc4LjJMOTMuNyAxNjcuOGMtMy43LTYuMi0xMS4xLTkuMS0xOC03LjJ6TTIyNCAxNzZ2NjQgOTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMjU2VjE5Mmg0OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYwIDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzM2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQYXJraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMTkyIDI1Nmg0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJ2NjR6bTQ4IDY0SDE5MnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyODggMTY4YzAtMjIuMSAxNy45LTQwIDQwLTQwaDcyYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0zMjUuOCAxMzkuN2wxNC40IDE0LjRjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZsLTIxLjQgMjEuNC03MS03MSAyMS40LTIxLjRjMTUuNi0xNS42IDQwLjktMTUuNiA1Ni42IDB6TTExOS45IDI4OUwyMjUuMSAxODMuOGw3MSA3MUwxOTAuOSAzNTkuOWMtNC4xIDQuMS05LjIgNy0xNC45IDguNGwtNjAuMSAxNWMtNS41IDEuNC0xMS4yLS4yLTE1LjItNC4ycy01LjYtOS43LTQuMi0xNS4ybDE1LTYwLjFjMS40LTUuNiA0LjMtMTAuOCA4LjQtMTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGVyc29uQ29uZmluZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em05NiAxMTJhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptODAgMTA0YzAtMzAuOSAyNS4xLTU2IDU2LTU2czU2IDI1LjEgNTYgNTZWMzUwLjFjMCAzNi40LTI5LjUgNjUuOS02NS45IDY1LjljLTE3LjUgMC0zNC4zLTYuOS00Ni42LTE5LjNMMTg0LjggMzQybC0yOC4xIDU2LjNjLTcuOSAxNS44LTI3LjEgMjIuMi00Mi45IDE0LjNzLTIyLjItMjcuMS0xNC4zLTQyLjlsNDgtOTZjNC42LTkuMiAxMy4zLTE1LjYgMjMuNS0xNy4zczIwLjUgMS43IDI3LjggOUwyNDAgMzA2LjdWMjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQaG9uZUZsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0em0tOTAuNyA5Ni43Yy05LjctMi42LTE5LjkgMi4zLTIzLjcgMTEuNmwtMjAgNDhjLTMuNCA4LjItMSAxNy42IDUuOCAyMy4yTDI4MCAyMzEuN2MtMTYuNiAzNS4yLTQ1LjEgNjMuNy04MC4zIDgwLjNsLTIwLjItMjQuN2MtNS42LTYuOC0xNS05LjItMjMuMi01LjhsLTQ4IDIwYy05LjMgMy45LTE0LjIgMTQtMTEuNiAyMy43bDEyIDQ0QzExMS4xIDM3OCAxMTkgMzg0IDEyOCAzODRjMTIzLjcgMCAyMjQtMTAwLjMgMjI0LTIyNGMwLTktNi0xNi45LTE0LjctMTkuM2wtNDQtMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptOTAuNyA5Ni43YzkuNy0yLjYgMTkuOSAyLjMgMjMuNyAxMS42bDIwIDQ4YzMuNCA4LjIgMSAxNy42LTUuOCAyMy4yTDE2OCAyMzEuN2MxNi42IDM1LjIgNDUuMSA2My43IDgwLjMgODAuM2wyMC4yLTI0LjdjNS42LTYuOCAxNS05LjIgMjMuMi01LjhsNDggMjBjOS4zIDMuOSAxNC4yIDE0IDExLjYgMjMuN2wtMTIgNDRDMzM2LjkgMzc4IDMyOSAzODQgMzIwIDM4NEMxOTYuMyAzODQgOTYgMjgzLjcgOTYgMTYwYzAtOSA2LTE2LjkgMTQuNy0xOS4zbDQ0LTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjAwIDM0NFYyODBIMTM2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDY0VjE2OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djY0aDY0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0OHY2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUG9sbEhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTI1NiAxNjBjMCAxNy43LTE0LjMgMzItMzIgMzJsLTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnptNjQgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE5MiAwek0xOTIgMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBvbGxWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTY0IDE5MmMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTY0LTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE2MHpNMzIwIDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVJvb3RWYXJpYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODIuNiA3OC4xYzgtMjcuMyAzMy00Ni4xIDYxLjQtNDYuMUg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzQ0TDIzOC43IDQ1N2MtMy42IDEyLjMtMTQuMSAyMS4yLTI2LjggMjIuOHMtMjUuMS00LjYtMzEuNS0xNS42TDc3LjYgMjg4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDc3LjZjMjIuOCAwIDQzLjggMTIuMSA1NS4zIDMxLjhsNjUuMiAxMTEuOEwyODIuNiA3OC4xek0zOTMuNCAyMzMuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMEw0ODAgMjc0LjdsNDEuNC00MS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMNTI1LjMgMzIwbDQxLjQgNDEuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEw0ODAgMzY1LjNsLTQxLjQgNDEuNGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMNDM0LjcgMzIwbC00MS40LTQxLjRjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVSc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek05NiAxMzZjMC0xMy4zIDEwLjctMjQgMjQtMjRjMTM3IDAgMjQ4IDExMSAyNDggMjQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtMTEwLjUtODkuNS0yMDAtMjAwLTIwMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTAgOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRjODMuOSAwIDE1MiA2OC4xIDE1MiAxNTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC01Ny40LTQ2LjYtMTA0LTEwNC0xMDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDEyMGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVTaGFyZU5vZGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMzg0IDE2MGMwIDM1LjMtMjguNyA2NC02NCA2NGMtMTUuNCAwLTI5LjUtNS40LTQwLjYtMTQuNUwxOTQuMSAyNTZsODUuMyA0Ni41YzExLTkuMSAyNS4yLTE0LjUgNDAuNi0xNC41YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0YzAtMi41IC4xLTQuOSAuNC03LjNMMTc0LjUgMzAwYy0xMS43IDEyLjMtMjguMiAyMC00Ni41IDIwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzE4LjMgMCAzNC44IDcuNyA0Ni41IDIwbDgxLjktNDQuN2MtLjMtMi40LS40LTQuOS0uNC03LjNjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlVXBSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzODR6TTMyMCAzMTMuNFYxNzZjMC04LjgtNy4yLTE2LTE2LTE2SDE2Ni42Yy0xMi41IDAtMjIuNiAxMC4xLTIyLjYgMjIuNmMwIDYgMi40IDExLjggNi42IDE2TDE4NCAyMzJsLTY2LjMgNjYuM0MxMTQgMzAyIDExMiAzMDYuOSAxMTIgMzEyczIgMTAgNS43IDEzLjdsMzYuNyAzNi43YzMuNiAzLjYgOC41IDUuNyAxMy43IDUuN3MxMC0yIDEzLjctNS43TDI0OCAyOTZsMzMuNCAzMy40YzQuMiA0LjIgMTAgNi42IDE2IDYuNmMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlVmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjMuOCA5My43YzEzLjMgMCAyNCAxMC43IDI0IDI0YzAgMjkuMyAzNS40IDQzLjkgNTYuMSAyMy4yYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWMtMjAuNyAyMC43LTYgNTYuMSAyMy4yIDU2LjFjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTI5LjMgMC00My45IDM1LjQtMjMuMiA1Ni4xYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBjLTIwLjctMjAuNy01Ni4xLTYtNTYuMSAyMy4yYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtMjkuMy0zNS40LTQzLjktNTYuMS0yMy4yYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45YzIwLjctMjAuNyA2LTU2LjEtMjMuMi01Ni4xYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzI5LjMgMCA0My45LTM1LjQgMjMuMi01Ni4xYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBjMjAuNyAyMC43IDU2LjEgNiA1Ni4xLTIzLjJjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTE5MiAyNTZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em04OCAzMmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTc5IDE0M2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3IDQ3IDQ3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ3LTQ3LTQ3IDQ3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ3LTQ3LTQ3LTQ3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWZmU25ha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIyLjYgNDMuMmwtLjEgNC44SDI4OGM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NkgyNDhWMTYwaDQwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDI0OCAyMjBsLTQuNSAxNDRIMjU2YzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDI0MFYzODRoMTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMjEzbC0zLjEgOTkuNUwyMDguNSA0OTVsMCAxYy0uMyA4LjktNy42IDE2LTE2LjUgMTZzLTE2LjItNy4xLTE2LjUtMTZsMC0xLTEtMzFIMTM2Yy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwaDM2bC0xLTMySDE1MmMtNTMgMC05Ni00My05Ni05NmMwLTQ3LjYgMzQuNi04Ny4xIDgwLTk0LjdWMjU2YzAgOC44IDcuMiAxNiAxNiAxNmgxNi41TDE2NCAxMjhIMTM2IDEyMi42Yy05IDE4LjktMjguMyAzMi01MC42IDMySDU2Yy0zMC45IDAtNTYtMjUuMS01Ni01NlMyNS4xIDQ4IDU2IDQ4aDggOCA4OS41bC0uMS00LjhMMTYxIDMyYzAtLjcgMC0xLjMgMC0xLjljLjUtMTYuNiAxNC4xLTMwIDMxLTMwczMwLjUgMTMuNCAzMSAzMGMwIC42IDAgMS4zIDAgMS45bC0uNCAxMS4yek02NCAxMTJhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFpcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0NDh2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzIwdjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg5NlYzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJoOTZWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTIgMjAxLjhjMC0xNy40IDkuMi0zMy4yIDE5LjktNDdDMzQ0LjUgMTM4LjUgMzUyIDExOC4xIDM1MiA5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDIyLjEgNy41IDQyLjUgMjAuMSA1OC44YzEwLjcgMTMuOCAxOS45IDI5LjYgMTkuOSA0N2MwIDI5LjktMjQuMyA1NC4yLTU0LjIgNTQuMkgxMTJDNTAuMSAyNTYgMCAzMDYuMSAwIDM2OGMwIDIwLjkgMTMuNCAzOC43IDMyIDQ1LjNWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQzMmMyNi41IDAgNDgtMjEuNSA0OC00OFY0MTMuM2MxOC42LTYuNiAzMi0yNC40IDMyLTQ1LjNjMC02MS45LTUwLjEtMTEyLTExMi0xMTJIMzY2LjJjLTI5LjkgMC01NC4yLTI0LjMtNTQuMi01NC4yek00MTYgNDE2djMySDk2VjQxNkg0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXBsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDI5OS4zVjMwNCA0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhINTEyIDQ0OCA2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0NDhWMzY4SDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMTkuNEwzMy44IDIxNEMxNC4yIDIxMC41IDAgMTkzLjUgMCAxNzMuN2MwLTguOSAyLjktMTcuNSA4LjItMjQuNmwzNS42LTQ3LjVDNzYuNyA1Ny44IDEyOC4yIDMyIDE4Mi45IDMyYzI3IDAgNTMuNiA2LjMgNzcuOCAxOC40TDU4Ni45IDIxMy41QzYxOS41IDIyOS43IDY0MCAyNjMgNjQwIDI5OS4zek00NDggMzA0VjI4OEwxMjggMjMwLjlWMzA0SDQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckFuZENyZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2QzAgMTE0LjYgMTE0LjYgMCAyNTYgMGMzMyAwIDY0LjYgNi4zIDkzLjYgMTcuN2M3LjQgMi45IDExLjUgMTAuNyA5LjggMTguNHMtOC44IDEzLTE2LjcgMTIuNGMtNC44LS4zLTkuNy0uNS0xNC42LS41Yy0xMTQuOSAwLTIwOCA5My4xLTIwOCAyMDhzOTMuMSAyMDggMjA4IDIwOGM0LjkgMCA5LjgtLjIgMTQuNi0uNWM3LjktLjUgMTUgNC43IDE2LjcgMTIuNHMtMi40IDE1LjUtOS44IDE4LjRDMzIwLjYgNTA1LjcgMjg5IDUxMiAyNTYgNTEyQzExNC42IDUxMiAwIDM5Ny40IDAgMjU2ek0zNzUuNCAxMzcuNGMzLjUtNy4xIDEzLjctNy4xIDE3LjIgMGwzMS41IDYzLjhjMS40IDIuOCA0LjEgNC44IDcuMiA1LjNsNzAuNCAxMC4yYzcuOSAxLjEgMTEgMTAuOCA1LjMgMTYuNGwtNTAuOSA0OS42Yy0yLjMgMi4yLTMuMyA1LjQtMi44IDguNWwxMiA3MC4xYzEuMyA3LjgtNi45IDEzLjgtMTMuOSAxMC4xbC02My0zMy4xYy0yLjgtMS41LTYuMS0xLjUtOC45IDBsLTYzIDMzLjFjLTcgMy43LTE1LjMtMi4zLTEzLjktMTAuMWwxMi03MC4xYy41LTMuMS0uNS02LjMtMi44LTguNUwyNjEgMjMzLjFjLTUuNy01LjYtMi42LTE1LjIgNS4zLTE2LjRsNzAuNC0xMC4yYzMuMS0uNSA1LjgtMi40IDcuMi01LjNsMzEuNS02My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFySGFsZlN0cm9rZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzc2LjRsLjEtLjEgMjYuNCAxNC4xIDg1LjIgNDUuNS0xNi41LTk3LjYtNC44LTI4LjcgMjAuNy0yMC41IDcwLjEtNjkuMy05Ni4xLTE0LjItMjkuMy00LjMtMTIuOS0yNi42TDI4OC4xIDg2LjlsLS4xIC4zVjM3Ni40em0xNzUuMSA5OC4zYzIgMTItMyAyNC4yLTEyLjkgMzEuM3MtMjMgOC0zMy44IDIuM0wyODguMSA0MzkuOCAxNTkuOCA1MDguM0MxNDkgNTE0IDEzNS45IDUxMy4xIDEyNiA1MDZzLTE0LjktMTkuMy0xMi45LTMxLjNMMTM3LjggMzI5IDMzLjYgMjI1LjljLTguNi04LjUtMTEuNy0yMS4yLTcuOS0zMi43czEzLjctMTkuOSAyNS43LTIxLjdMMTk1IDE1MC4zIDI1OS40IDE4YzUuNC0xMSAxNi41LTE4IDI4LjgtMThzMjMuNCA3IDI4LjggMThsNjQuMyAxMzIuMyAxNDMuNiAyMS4yYzEyIDEuOCAyMiAxMC4yIDI1LjcgMjEuN3MuNyAyNC4yLTcuOSAzMi43TDQzOC41IDMyOWwyNC42IDE0NS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMtMTIuMiAuMS0yMy4zIDctMjguNiAxOEwxOTUgMTUwLjMgNTEuNCAxNzEuNWMtMTIgMS44LTIyIDEwLjItMjUuNyAyMS43cy0uNyAyNC4yIDcuOSAzMi43TDEzNy44IDMyOSAxMTMuMiA0NzQuN2MtMiAxMiAzIDI0LjIgMTIuOSAzMS4zczIzIDggMzMuOCAyLjNMMjg4IDQzOS44VjB6TTQyOS45IDUxMmMxLjEgLjEgMi4xIC4xIDMuMiAwaC0zLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJPZkRhdmlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNC4yIDMwOS41TDM4My4xIDM0NGg0Mi4zbC0yMS4xLTM0LjV6TTM3MS40IDI1NmwtNTQtODhIMTk0LjZsLTU0IDg4IDU0IDg4SDMxNy40bDU0LTg4em02NS43IDBsNTMuNCA4N2MzLjYgNS45IDUuNSAxMi43IDUuNSAxOS42YzAgMjAuNy0xNi44IDM3LjQtMzcuNCAzNy40SDM0OC43bC01Ni4yIDkxLjVDMjg0LjggNTA0LjMgMjcwLjkgNTEyIDI1NiA1MTJzLTI4LjgtNy43LTM2LjYtMjAuNUwxNjMuMyA0MDBINTMuNEMzMi44IDQwMCAxNiAzODMuMiAxNiAzNjIuNmMwLTYuOSAxLjktMTMuNyA1LjUtMTkuNmw1My40LTg3TDIxLjUgMTY5Yy0zLjYtNS45LTUuNS0xMi43LTUuNS0xOS42QzE2IDEyOC44IDMyLjggMTEyIDUzLjQgMTEySDE2My4zbDU2LjItOTEuNUMyMjcuMiA3LjcgMjQxLjEgMCAyNTYgMHMyOC44IDcuNyAzNi42IDIwLjVMMzQ4LjcgMTEySDQ1OC42YzIwLjcgMCAzNy40IDE2LjggMzcuNCAzNy40YzAgNi45LTEuOSAxMy43LTUuNSAxOS42bC01My40IDg3em0tNTQtODhsMjEuMSAzNC41TDQyNS40IDE2OEgzODMuMXpNMjgzIDExMkwyNTYgNjhsLTI3IDQ0aDU0ek0xMjguOSAxNjhIODYuNmwyMS4xIDM0LjVMMTI4LjkgMTY4ek0xMDcuOCAzMDkuNUw4Ni42IDM0NGg0Mi4zbC0yMS4xLTM0LjV6TTIyOSA0MDBsMjcgNDQgMjctNDRIMjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyT2ZMaWZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYxNzIuOWwxMjItNzAuNGMxNS4zLTguOCAzNC45LTMuNiA0My43IDExLjdsMTYgMjcuN2M4LjggMTUuMyAzLjYgMzQuOS0xMS43IDQzLjdMMzUyIDI1NmwxMjIgNzAuNGMxNS4zIDguOCAyMC41IDI4LjQgMTEuNyA0My43bC0xNiAyNy43Yy04LjggMTUuMy0yOC40IDIwLjYtNDMuNyAxMS43TDMwNCAzMzkuMVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMjQwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMzkuMUw4NiA0MDkuNmMtMTUuMyA4LjgtMzQuOSAzLjYtNDMuNy0xMS43bC0xNi0yNy43Yy04LjgtMTUuMy0zLjYtMzQuOSAxMS43LTQzLjdMMTYwIDI1NiAzOCAxODUuNmMtMTUuMy04LjgtMjAuNS0yOC40LTExLjctNDMuN2wxNi0yNy43QzUxLjEgOTguOCA3MC43IDkzLjYgODYgMTAyLjRsMTIyIDcwLjRWMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE2LjkgMThDMzExLjYgNyAzMDAuNCAwIDI4OC4xIDBzLTIzLjQgNy0yOC44IDE4TDE5NSAxNTAuMyA1MS40IDE3MS41Yy0xMiAxLjgtMjIgMTAuMi0yNS43IDIxLjdzLS43IDI0LjIgNy45IDMyLjdMMTM3LjggMzI5IDExMy4yIDQ3NC43Yy0yIDEyIDMgMjQuMiAxMi45IDMxLjNzMjMgOCAzMy44IDIuM2wxMjguMy02OC41IDEyOC4zIDY4LjVjMTAuOCA1LjcgMjMuOSA0LjkgMzMuOC0yLjNzMTQuOS0xOS4zIDEyLjktMzEuM0w0MzguNSAzMjkgNTQyLjcgMjI1LjljOC42LTguNSAxMS43LTIxLjIgNy45LTMyLjdzLTEzLjctMTkuOS0yNS43LTIxLjdMMzgxLjIgMTUwLjMgMzE2LjkgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0ZXJsaW5nU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMTYwLjRjMC0zNS41IDI4LjgtNjQuNCA2NC40LTY0LjRjNi45IDAgMTMuOCAxLjEgMjAuNCAzLjNsODEuMiAyNy4xYzE2LjggNS42IDM0LjktMy41IDQwLjUtMjAuMnMtMy41LTM0LjktMjAuMi00MC41TDIxNyAzOC42Yy0xMy4xLTQuNC0yNi44LTYuNi00MC42LTYuNkMxMDUuNSAzMiA0OCA4OS41IDQ4IDE2MC40VjIyNEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0OHY0NC41YzAgMTcuNC00LjcgMzQuNS0xMy43IDQ5LjRMNC42IDQzMS41Yy01LjkgOS45LTYuMSAyMi4yLS40IDMyLjJTMjAuNSA0ODAgMzIgNDgwSDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg4OC41bC43LTEuMUMxMDQuMSAzOTAgMTEyIDM2MS41IDExMiAzMzIuNVYyODhIMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDExMlYxNjAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RldGhvc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQyLjQgMjEuOWM1LjYgMTYuOC0zLjUgMzQuOS0yMC4yIDQwLjVMOTYgNzEuMVYxOTJjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NlY3MS4xbC0yNi4xLTguN2MtMTYuOC01LjYtMjUuOC0yMy43LTIwLjItNDAuNXMyMy43LTI1LjggNDAuNS0yMC4ybDI2LjEgOC43QzMzNC40IDE5LjEgMzUyIDQzLjUgMzUyIDcxLjFWMTkyYzAgNzcuMi01NC42IDE0MS42LTEyNy4zIDE1Ni43QzIzMSA0MDQuNiAyNzguNCA0NDggMzM2IDQ0OGM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlYyNjUuM2MtMjguMy0xMi4zLTQ4LTQwLjUtNDgtNzMuM2MwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwYzAgMzIuOC0xOS43IDYxLTQ4IDczLjNWMzM2YzAgOTcuMi03OC44IDE3Ni0xNzYgMTc2Yy05Mi45IDAtMTY4LjktNzEuOS0xNzUuNS0xNjMuMUM4Ny4yIDMzNC4yIDMyIDI2OS42IDMyIDE5MlY3MS4xYzAtMjcuNSAxNy42LTUyIDQzLjgtNjAuN2wyNi4xLTguN2MxNi44LTUuNiAzNC45IDMuNSA0MC41IDIwLjJ6TTQ4MCAyMjRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQgMjguNyA2NCA2NFYzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcHdhdGNoMjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMTZWOTguNEM5Mi4zIDExMy44IDE2IDIwMCAxNiAzMDRjMCAxMTQuOSA5My4xIDIwOCAyMDggMjA4czIwOC05My4xIDIwOC0yMDhjMC00MS44LTEyLjMtODAuNy0zMy41LTExMy4ybDI0LjEtMjQuMWMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwzNTUuNyAxNDNjLTI4LjEtMjMtNjIuMi0zOC44LTk5LjctNDQuNlY2NGgxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNzZ6TTI4OCAyMDRjMjguNyAwIDUyIDIzLjMgNTIgNTJ2OTZjMCAyOC43LTIzLjMgNTItNTIgNTJzLTUyLTIzLjMtNTItNTJWMjU2YzAtMjguNyAyMy4zLTUyIDUyLTUyem0tMTIgNTJ2OTZjMCA2LjYgNS40IDEyIDEyIDEyczEyLTUuNCAxMi0xMlYyNTZjMC02LjYtNS40LTEyLTEyLTEycy0xMiA1LjQtMTIgMTJ6TTE1OS41IDI0NGMtNS40IDAtMTAuMiAzLjUtMTEuOSA4LjZsLS42IDEuN2MtMy41IDEwLjUtMTQuOCAxNi4xLTI1LjMgMTIuNnMtMTYuMS0xNC44LTEyLjYtMjUuM2wuNi0xLjdjNy4yLTIxLjUgMjcuMi0zNS45IDQ5LjgtMzUuOWMyOSAwIDUyLjUgMjMuNSA1Mi41IDUyLjV2Mi4yYzAgMTMuNC00LjkgMjYuNC0xMy44IDM2LjRsLTM5IDQzLjljLTYuMiA3LTEwIDE1LjctMTAuOSAyNC45SDE5MmMxMSAwIDIwIDkgMjAgMjBzLTkgMjAtMjAgMjBIMTI4Yy0xMSAwLTIwLTktMjAtMjBWMzY4LjNjMC0yMC42IDcuNS00MC40IDIxLjItNTUuOGwzOS00My45YzIuNC0yLjcgMy43LTYuMiAzLjctOS44di0yLjJjMC02LjktNS42LTEyLjUtMTIuNS0xMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9wd2F0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMTZWOTguNEM5Mi4zIDExMy44IDE2IDIwMCAxNiAzMDRjMCAxMTQuOSA5My4xIDIwOCAyMDggMjA4czIwOC05My4xIDIwOC0yMDhjMC00MS44LTEyLjMtODAuNy0zMy41LTExMy4ybDI0LjEtMjQuMWMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwzNTUuNyAxNDNjLTI4LjEtMjMtNjIuMi0zOC44LTk5LjctNDQuNlY2NGgxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyMjQgMTc2em03MiAxOTJWMzIwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjE5MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9yZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTg2LjgtNjhWMzg0IDI1Mi42Yy00IDEtOCAxLjgtMTIuMyAyLjNsLS4xIDBjLTUuMyAuNy0xMC43IDEuMS0xNi4yIDEuMWMtMTIuNCAwLTI0LjMtMS45LTM1LjQtNS4zVjM1MC45TDMwMS4yIDIxMC43YzctNC40IDEzLjMtOS43IDE4LjgtMTUuN2MxNS45IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzI2LjIgMCA0OS4zLTExLjQgNjUuMi0yOWMxNiAxNy42IDM5LjEgMjkgNjUuMiAyOWM0LjEgMCA4LjEtLjMgMTIuMS0uOGM1NS41LTcuNCA4MS44LTcyLjUgNTIuMS0xMTkuNEw1MjIuMyAxMy4xQzUxNy4yIDUgNTA4LjEgMCA0OTguNCAwSDE0MS42Yy05LjcgMC0xOC44IDUtMjMuOSAxMy4xbC0yMi43IDM2TDM4LjggNS4xek01MTQuOSA1MDEuN0wzNjUuNSAzODRIMTYwVjI1MC42Yy0xMS4yIDMuNS0yMy4yIDUuNC0zNS42IDUuNGMtNS41IDAtMTEtLjQtMTYuMy0xLjFsLS4xIDBjLTQuMS0uNi04LjEtMS4zLTEyLTIuM1YzODR2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDgwYzEyLjkgMCAyNC44LTMuOCAzNC45LTEwLjN6TTE1NS4zIDIxOC40TDQ4LjkgMTM0LjVjLTYuMSA0MC42IDE5LjUgODIuOCA2My4zIDg4LjdjNCAuNSA4LjEgLjggMTIuMSAuOGMxMSAwIDIxLjQtMiAzMS01LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0Ny42IDEwMy44TDQ5MC4zIDEzLjFDNDg1LjIgNSA0NzYuMSAwIDQ2Ni40IDBIMTA5LjZDOTkuOSAwIDkwLjggNSA4NS43IDEzLjFMMjguMyAxMDMuOGMtMjkuNiA0Ni44LTMuNCAxMTEuOSA1MS45IDExOS40YzQgLjUgOC4xIC44IDEyLjEgLjhjMjYuMSAwIDQ5LjMtMTEuNCA2NS4yLTI5YzE1LjkgMTcuNiAzOS4xIDI5IDY1LjIgMjljMjYuMSAwIDQ5LjMtMTEuNCA2NS4yLTI5YzE1LjkgMTcuNiAzOS4xIDI5IDY1LjIgMjljMjYuMiAwIDQ5LjMtMTEuNCA2NS4yLTI5YzE2IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzQuMSAwIDguMS0uMyAxMi4xLS44YzU1LjUtNy40IDgxLjgtNzIuNSA1Mi4xLTExOS40ek00OTkuNyAyNTQuOWwtLjEgMGMtNS4zIC43LTEwLjcgMS4xLTE2LjIgMS4xYy0xMi40IDAtMjQuMy0xLjktMzUuNC01LjNWMzg0SDEyOFYyNTAuNmMtMTEuMiAzLjUtMjMuMiA1LjQtMzUuNiA1LjRjLTUuNSAwLTExLS40LTE2LjMtMS4xbC0uMSAwYy00LjEtLjYtOC4xLTEuMy0xMi0yLjNWMzg0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzODQgMjUyLjZjLTQgMS04IDEuOC0xMi4zIDIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyZWV0VmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNjRBNjQgNjQgMCAxIDAgMTkyIDY0YTY0IDY0IDAgMSAwIDEyOCAwem0tOTYgOTZjLTM1LjMgMC02NCAyOC43LTY0IDY0djQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDEuOGwxMS4xIDk5LjVjMS44IDE2LjIgMTUuNSAyOC41IDMxLjggMjguNWgzOC43YzE2LjMgMCAzMC0xMi4zIDMxLjgtMjguNUwzMTguMiAzMDRIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGMwLTM1LjMtMjguNy02NC02NC02NEgyMjR6TTEzMi4zIDM5NC4yYzEzLTIuNCAyMS43LTE0LjkgMTkuMy0yNy45cy0xNC45LTIxLjctMjcuOS0xOS4zYy0zMi40IDUuOS02MC45IDE0LjItODIgMjQuOGMtMTAuNSA1LjMtMjAuMyAxMS43LTI3LjggMTkuNkM2LjQgMzk5LjUgMCA0MTAuNSAwIDQyNGMwIDIxLjQgMTUuNSAzNi4xIDI5LjEgNDVjMTQuNyA5LjYgMzQuMyAxNy4zIDU2LjQgMjMuNEMxMzAuMiA1MDQuNyAxOTAuNCA1MTIgMjU2IDUxMnMxMjUuOC03LjMgMTcwLjQtMTkuNmMyMi4xLTYuMSA0MS44LTEzLjggNTYuNC0yMy40YzEzLjctOC45IDI5LjEtMjMuNiAyOS4xLTQ1YzAtMTMuNS02LjQtMjQuNS0xNC0zMi42Yy03LjUtNy45LTE3LjMtMTQuMy0yNy44LTE5LjZjLTIxLTEwLjYtNDkuNS0xOC45LTgyLTI0LjhjLTEzLTIuNC0yNS41IDYuMy0yNy45IDE5LjNzNi4zIDI1LjUgMTkuMyAyNy45YzMwLjIgNS41IDUzLjcgMTIuOCA2OSAyMC41YzMuMiAxLjYgNS44IDMuMSA3LjkgNC41YzMuNiAyLjQgMy42IDcuMiAwIDkuNmMtOC44IDUuNy0yMy4xIDExLjgtNDMgMTcuM0MzNzQuMyA0NTcgMzE4LjUgNDY0IDI1NiA0NjRzLTExOC4zLTctMTU3LjctMTcuOWMtMTkuOS01LjUtMzQuMi0xMS42LTQzLTE3LjNjLTMuNi0yLjQtMy42LTcuMiAwLTkuNmMyLjEtMS40IDQuOC0yLjkgNy45LTQuNWMxNS4zLTcuNyAzOC44LTE0LjkgNjktMjAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyaWtldGhyb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjEuMyAxNDRjMy4yLTE3LjIgMTQtMzAuMSAzMy43LTM4LjZjMjEuMS05IDUxLjgtMTIuMyA4OC42LTYuNWMxMS45IDEuOSA0OC44IDkuMSA2MC4xIDEyYzE3LjEgNC41IDM0LjYtNS42IDM5LjItMjIuN3MtNS42LTM0LjYtMjIuNy0zOS4yYy0xNC4zLTMuOC01My42LTExLjQtNjYuNi0xMy40Yy00NC43LTctODguMy00LjItMTIzLjcgMTAuOWMtMzYuNSAxNS42LTY0LjQgNDQuOC03MS44IDg3LjNjLS4xIC42LS4yIDEuMS0uMiAxLjdjLTIuOCAyMy45IC41IDQ1LjYgMTAuMSA2NC42YzQuNSA5IDEwLjIgMTYuOSAxNi43IDIzLjlIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI3MC4xYy0uMSAwLS4zLS4xLS40LS4xbC0xLjEtLjNjLTM2LTEwLjgtNjUuMi0xOS42LTg1LjItMzMuMWMtOS4zLTYuMy0xNS0xMi42LTE4LjItMTkuMWMtMy4xLTYuMS01LjItMTQuNi0zLjgtMjcuNHpNMzQ4LjkgMzM3LjJjMi43IDYuNSA0LjQgMTUuOCAxLjkgMzAuMWMtMyAxNy42LTEzLjggMzAuOC0zMy45IDM5LjRjLTIxLjEgOS01MS43IDEyLjMtODguNSA2LjVjLTE4LTIuOS00OS4xLTEzLjUtNzQuNC0yMi4xYy01LjYtMS45LTExLTMuNy0xNS45LTUuNGMtMTYuOC01LjYtMzQuOSAzLjUtNDAuNSAyMC4zczMuNSAzNC45IDIwLjMgNDAuNWMzLjYgMS4yIDcuOSAyLjcgMTIuNyA0LjNsMCAwIDAgMGMyNC45IDguNSA2My42IDIxLjcgODcuNiAyNS42bDAgMCAuMiAwYzQ0LjcgNyA4OC4zIDQuMiAxMjMuNy0xMC45YzM2LjUtMTUuNiA2NC40LTQ0LjggNzEuOC04Ny4zYzMuNi0yMSAyLjctNDAuNC0zLjEtNTguMUgzMzUuMWM3IDUuNiAxMS40IDExLjIgMTMuOSAxNy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJvb3B3YWZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTMxMi42IDYzLjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDI1NiA5Ny42IDIyMi4xIDYzLjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsMzMuOSAzMy45LTQ1LjMgNDUuMy01Ni42LTU2LjZjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsNTYuNiA1Ni42LTQ1LjMgNDUuM0w4Ni4zIDE5OS40Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDk3LjYgMjU2IDYzLjcgMjg5LjljLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGwzMy45LTMzLjkgNDUuMyA0NS4zLTU2LjYgNTYuNmMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwbDU2LjYtNTYuNiA0NS4zIDQ1LjMtMzMuOSAzMy45Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMMjU2IDQxNC40bDMzLjkgMzMuOWM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTMzLjktMzMuOSA0NS4zLTQ1LjMgNTYuNiA1Ni42YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNTYuNi01Ni42IDQ1LjMtNDUuMyAzMy45IDMzLjljNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42TDQxNC40IDI1NmwzMy45LTMzLjljNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZzLTE2LjQtNi4yLTIyLjYgMGwtMzMuOSAzMy45LTQ1LjMtNDUuMyA1Ni42LTU2LjZjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZzLTE2LjQtNi4yLTIyLjYgMGwtNTYuNiA1Ni42LTQ1LjMtNDUuMyAzMy45LTMzLjljNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZ6TTE0Mi45IDI1Nmw0NS4zLTQ1LjNMMjMzLjQgMjU2bC00NS4zIDQ1LjNMMTQyLjkgMjU2em02Ny45IDY3LjlMMjU2IDI3OC42bDQ1LjMgNDUuM0wyNTYgMzY5LjFsLTQ1LjMtNDUuM3pNMjc4LjYgMjU2bDQ1LjMtNDUuM0wzNjkuMSAyNTZsLTQ1LjMgNDUuM0wyNzguNiAyNTZ6bTIyLjYtNjcuOUwyNTYgMjMzLjRsLTQ1LjMtNDUuM0wyNTYgMTQyLjlsNDUuMyA0NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdWJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNjRDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMySDQ3LjNsODkuNiAxMjhMNDcuMyAzODRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjRjMTAuNCAwIDIwLjItNS4xIDI2LjItMTMuNkwxNzYgMzExLjhsODUuOCAxMjIuNmM2IDguNiAxNS44IDEzLjYgMjYuMiAxMy42aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMwNC43TDIxNS4xIDI1Nmw4OS42LTEyOEgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjg4Yy0xMC40IDAtMjAuMiA1LjEtMjYuMiAxMy42TDE3NiAyMDAuMiA5MC4yIDc3LjZDODQuMiA2OS4xIDc0LjQgNjQgNjQgNjRIMzJ6TTQ4MCAzMjBjMC0xMS4xLTUuNy0yMS40LTE1LjItMjcuMnMtMjEuMi02LjQtMzEuMS0xLjRsLTMyIDE2Yy0xNS44IDcuOS0yMi4yIDI3LjEtMTQuMyA0Mi45QzM5MyAzNjEuNSA0MDQuMyAzNjggNDE2IDM2OHY4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMiAzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlYzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1aXRjYXNlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODQgNDhIMzI4YzQuNCAwIDggMy42IDggOFY5NkgxNzZWNTZjMC00LjQgMy42LTggOC04em0tNTYgOFY5NnYzMlY0ODBIMzg0VjEyOCA5NiA1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxODRjLTMwLjkgMC01NiAyNS4xLTU2IDU2ek05NiA5Nkg2NEMyOC43IDk2IDAgMTI0LjcgMCAxNjBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDk2Vjk2ek00MTYgNDgwaDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NEg0MTZWNDgwek0yMjQgMjA4YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyODh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDI0MGMtOC44IDAtMTYtNy4yLTE2LTE2VjMyMEgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VpdGNhc2VSb2xsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCA1NmMwLTQuNCAzLjYtOCA4LThoODBjNC40IDAgOCAzLjYgOCA4djcySDE0NFY1NnptMTc2IDcySDI4OFY1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxNTJDMTIxLjEgMCA5NiAyNS4xIDk2IDU2djcySDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMkgyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxOTJjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTExMiAyMjRIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCAxMjhIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VpdGNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDU2Vjk2SDMzNlY1NmMwLTQuNC0zLjYtOC04LThIMTg0Yy00LjQgMC04IDMuNi04IDh6TTEyOCA5NlY1NmMwLTMwLjkgMjUuMS01NiA1Ni01NkgzMjhjMzAuOSAwIDU2IDI1LjEgNTYgNTZWOTZ2MzJWNDgwSDEyOFYxMjggOTZ6TTY0IDk2SDk2VjQ4MEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0ek00NDggNDgwSDQxNlY5NmgzMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1blBsYW50V2lsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMGMtNi4zIDAtMTIgMy43LTE0LjYgOS41TDEyMC42IDY0LjkgNjMuOSA0My4yYy01LjktMi4zLTEyLjYtLjgtMTcgMy42cy01LjkgMTEuMS0zLjYgMTdsMjEuNyA1Ni43TDkuNSAxNDUuNEMzLjcgMTQ4IDAgMTUzLjcgMCAxNjBzMy43IDEyIDkuNSAxNC42bDU1LjQgMjQuOEw0My4yIDI1Ni4xYy0yLjMgNS45LS44IDEyLjYgMy42IDE3czExLjEgNS45IDE3IDMuNmw1Ni43LTIxLjcgMjQuOCA1NS40YzIuNiA1LjggOC4zIDkuNSAxNC42IDkuNXMxMi0zLjcgMTQuNi05LjVsMjQuOC01NS40IDU2LjcgMjEuN2M1LjkgMi4zIDEyLjYgLjggMTctMy42czUuOS0xMS4xIDMuNi0xN2wtMjEuNy01Ni43IDU1LjQtMjQuOGM1LjgtMi42IDkuNS04LjMgOS41LTE0LjZzLTMuNy0xMi05LjUtMTQuNmwtNTUuNC0yNC44IDIxLjctNTYuN2MyLjMtNS45IC44LTEyLjYtMy42LTE3cy0xMS4xLTUuOS0xNy0zLjZMMTk5LjQgNjQuOSAxNzQuNiA5LjVDMTcyIDMuNyAxNjYuMyAwIDE2MCAwem0wIDk2YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4em0zMiA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0zMTIgMTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY1My40Yy0xNC44IDcuNy0yNCAyMy4xLTI0IDQ0LjZjMCAxNi44IDE2IDQ0IDM3LjQgNjcuMmM1LjggNi4yIDE1LjUgNi4yIDIxLjIgMEM2MjQgMzE4IDY0MCAyOTAuNyA2NDAgMjc0YzAtMjEuNS05LjItMzctMjQtNDQuNlYxNzZjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB2MjIuN2MtOS44LTQuMy0yMC42LTYuNy0zMi02LjdjLTQ0LjIgMC04MCAzNS44LTgwIDgwdjIxLjRjLTE0LjggNy43LTI0IDIzLjEtMjQgNDQuNmMwIDE2LjggMTYgNDQgMzcuNCA2Ny4yYzUuOCA2LjIgMTUuNSA2LjIgMjEuMiAwQzQwMCAzODIgNDE2IDM1NC43IDQxNiAzMzhjMC0yMS41LTkuMi0zNy0yNC00NC42VjI3MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjhWNDQ4SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1MDRWMjgwdi04VjE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2MS41IDEuMmM1IDIuMSA4LjYgNi42IDkuNiAxMS45TDM5MSAxMjFsMTA3LjkgMTkuOGM1LjMgMSA5LjggNC42IDExLjkgOS42czEuNSAxMC43LTEuNiAxNS4yTDQ0Ni45IDI1Nmw2Mi4zIDkwLjNjMy4xIDQuNSAzLjcgMTAuMiAxLjYgMTUuMnMtNi42IDguNi0xMS45IDkuNkwzOTEgMzkxIDM3MS4xIDQ5OC45Yy0xIDUuMy00LjYgOS44LTkuNiAxMS45cy0xMC43IDEuNS0xNS4yLTEuNkwyNTYgNDQ2LjlsLTkwLjMgNjIuM2MtNC41IDMuMS0xMC4yIDMuNy0xNS4yIDEuNnMtOC42LTYuNi05LjYtMTEuOUwxMjEgMzkxIDEzLjEgMzcxLjFjLTUuMy0xLTkuOC00LjYtMTEuOS05LjZzLTEuNS0xMC43IDEuNi0xNS4yTDY1LjEgMjU2IDIuOCAxNjUuN2MtMy4xLTQuNS0zLjctMTAuMi0xLjYtMTUuMnM2LjYtOC42IDExLjktOS42TDEyMSAxMjEgMTQwLjkgMTMuMWMxLTUuMyA0LjYtOS44IDkuNi0xMS45czEwLjctMS41IDE1LjIgMS42TDI1NiA2NS4xIDM0Ni4zIDIuOGM0LjUtMy4xIDEwLjItMy43IDE1LjItMS42ek0xNjAgMjU2YTk2IDk2IDAgMSAxIDE5MiAwIDk2IDk2IDAgMSAxIC0xOTIgMHptMjI0IDBhMTI4IDEyOCAwIDEgMCAtMjU2IDAgMTI4IDEyOCAwIDEgMCAyNTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VwZXJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDMyYzAtMTEuMS01LjctMjEuNC0xNS4yLTI3LjJzLTIxLjItNi40LTMxLjEtMS40bC0zMiAxNmMtMTUuOCA3LjktMjIuMiAyNy4xLTE0LjMgNDIuOUMzOTMgNzMuNSA0MDQuMyA4MCA0MTYgODB2ODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzIgMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMzJ6TTMyIDY0QzE0LjMgNjQgMCA3OC4zIDAgOTZzMTQuMyAzMiAzMiAzMkg0Ny4zbDg5LjYgMTI4TDQ3LjMgMzg0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0YzEwLjQgMCAyMC4yLTUuMSAyNi4yLTEzLjZMMTc2IDMxMS44bDg1LjggMTIyLjZjNiA4LjYgMTUuOCAxMy42IDI2LjIgMTMuNmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMDQuN0wyMTUuMSAyNTZsODkuNi0xMjhIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OGMtMTAuNCAwLTIwLjIgNS4xLTI2LjIgMTMuNkwxNzYgMjAwLjIgOTAuMiA3Ny42Qzg0LjIgNjkuMSA3NC40IDY0IDY0IDY0SDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTd2F0Y2hib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDE2MGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0MTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZWMzJ6TTIyMy42IDQyNS45Yy4zLTMuMyAuNC02LjYgLjQtOS45VjE1NGw3NS40LTc1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsOTAuNSA5MC41YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zTDIyMy42IDQyNS45ek0xODIuOCA1MTJsMTkyLTE5Mkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDE4Mi44ek0xMjggNjRINjR2NjRoNjRWNjR6TTY0IDE5MnY2NGg2NFYxOTJINjR6TTk2IDQ0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5bmFnb2d1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDkuOCAzLjdjNS45LTQuOSAxNC42LTQuOSAyMC41IDBsMTIxIDEwMC44QzQ2OS41IDExOS43IDQ4MCAxNDIuMiA0ODAgMTY2VjI4MC4xIDUxMkg0NjQgMzUyVjQxNmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY5NkgxNzYgMTYwVjI4MC4xIDE2NmMwLTIzLjcgMTAuNS00Ni4zIDI4LjgtNjEuNUwzMDkuOCAzLjd6TTUxMiA1MTJWMjQ0LjVsMjguMS0zMS4yYzMtMy40IDcuNC01LjMgMTEuOS01LjNzOC45IDEuOSAxMS45IDUuM2w2My44IDcwLjljNy45IDguOCAxMi4zIDIwLjMgMTIuMyAzMi4xVjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg1MTJ6TTEyOCAyNDQuNVY1MTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjMxNi4zYzAtMTEuOSA0LjQtMjMuMyAxMi4zLTMyLjFsNjMuOC03MC45YzMtMy40IDcuNC01LjMgMTEuOS01LjNzOC45IDEuOSAxMS45IDUuM0wxMjggMjQ0LjV6TTMyNyAxMjQuM2MtMy4xLTUuNC0xMC45LTUuNC0xMy45IDBsLTE1LjkgMjguMS0zMi4zLS4zYy02LjItLjEtMTAuMSA2LjctNyAxMi4xTDI3NC4zIDE5MmwtMTYuNCAyNy44Yy0zLjIgNS40IC43IDEyLjEgNyAxMi4xbDMyLjMtLjNMMzEzIDI1OS43YzMuMSA1LjQgMTAuOSA1LjQgMTMuOSAwbDE1LjktMjguMSAzMi4zIC4zYzYuMiAuMSAxMC4xLTYuNyA3LTEyLjFMMzY1LjcgMTkybDE2LjQtMjcuOGMzLjItNS40LS43LTEyLjEtNy0xMi4xbC0zMi4zIC4zTDMyNyAxMjQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3lyaW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDEgN2wzMiAzMiAzMiAzMmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0xNS0xNUw0MTcuOSAxMjhsNTUgNTVjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNzItNzJMMjk1IDczYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNTUgNTVMNDIyLjEgNTYgNDA3IDQxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDB6TTIxMC4zIDE1NS43bDYxLjEtNjEuMWMuMyAuMyAuNiAuNyAxIDFsMTYgMTYgNTYgNTYgNTYgNTYgMTYgMTZjLjMgLjMgLjYgLjYgMSAxbC0xOTEgMTkxYy0xMC41IDEwLjUtMjQuNyAxNi40LTM5LjYgMTYuNEg5Ny45TDQxIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw1Ny01N1YzMjUuM2MwLTE0LjkgNS45LTI5LjEgMTYuNC0zOS42bDQzLjMtNDMuMyA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQxLjQtNDEuNCA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5NkgxNjBWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWOTZIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE5MiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGVDZWxsc0NvbHVtbkxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY1LjFjLTM3LjggNS40LTY5LjQgMjkuNi04NS4yIDYyLjlMMzYwIDIyNGwwIDY0IDU2IDAgMCA4LjZjLTE5LjEgMTEuMS0zMiAzMS43LTMyIDU1LjRsLTI0IDAgMCA2NCAyNCAwIDAgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2em0yMDggMGwwIDY0IDg4IDAgMC02NC04OCAwem0yNDAgMGwtODggMCAwIDY0IDg4IDAgMC02NHpNMjA4IDIyNGwwIDY0IDg4IDAgMC02NC04OCAwem0wIDEyOGwwIDY0IDg4IDAgMC02NC04OCAwek01MjggMjQwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDQ4IDY0IDAgMC00OGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTgwIDMyYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBsMCA0OGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlQ2VsbHNMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZWMjI0SDI4OFY5Nkg0NDh6bTAgMTkyVjQxNkgyODhWMjg4SDQ0OHpNMjI0IDIyNEg2NFY5NkgyMjRWMjI0ek02NCAyODhIMjI0VjQxNkg2NFYyODh6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGVDZWxsc1Jvd0xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY1LjFjLTM3LjggNS40LTY5LjQgMjkuNi04NS4yIDYyLjlMMzYwIDIyNGwwIDY0IDU2IDAgMCA4LjZjLTE5LjEgMTEuMS0zMiAzMS43LTMyIDU1LjRsLTI0IDAgMCA2NCAyNCAwIDAgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2ek02NCAyMjRsMCA2NCA4OCAwIDAtNjQtODggMHptMjMyIDBsLTg4IDAgMCA2NCA4OCAwIDAtNjR6TTE1MiAzNTJsLTg4IDAgMCA2NCA4OCAwIDAtNjR6bTU2IDBsMCA2NCA4OCAwIDAtNjQtODggMHpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA0OCA2NCAwIDAtNDhjMC0xNy43LTE0LjMtMzItMzItMzJ6bS04MCAzMmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwbDAgNDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE2MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZUNlbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptODggNjR2NjRINjRWOTZoODh6bTU2IDBoODh2NjRIMjA4Vjk2em0yNDAgMHY2NEgzNjBWOTZoODh6TTY0IDIyNGg4OHY2NEg2NFYyMjR6bTIzMiAwdjY0SDIwOFYyMjRoODh6bTY0IDBoODh2NjRIMzYwVjIyNHpNMTUyIDM1MnY2NEg2NFYzNTJoODh6bTU2IDBoODh2NjRIMjA4VjM1MnptMjQwIDB2NjRIMzYwVjM1Mmg4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGVDb2x1bW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTY0IDY0VjQxNkgyMjRWMTYwSDY0em0zODQgMEgyODhWNDE2SDQ0OFYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em02NCAwdjY0aDY0Vjk2SDY0em0zODQgMEgxOTJ2NjRINDQ4Vjk2ek02NCAyMjR2NjRoNjRWMjI0SDY0em0zODQgMEgxOTJ2NjRINDQ4VjIyNHpNNjQgMzUydjY0aDY0VjM1Mkg2NHptMzg0IDBIMTkydjY0SDQ0OFYzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlVGVubmlzUGFkZGxlQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMjg4Yy01MC4xIDAtOTMuNiAyOC44LTExNC42IDcwLjhMMTMyLjkgMTI2LjNsLjYtLjYgNjAuMS02MC4xYzg3LjUtODcuNSAyMjkuMy04Ny41IDMxNi44IDBjNjcuMSA2Ny4xIDgyLjcgMTY2LjMgNDYuOCAyNDguM0M1MzUuOCAyOTcuNiA1MDkgMjg4IDQ4MCAyODh6TTExMy4zIDE1MS45TDM1NC4xIDM5Mi43Yy0xLjQgNy41LTIuMSAxNS4zLTIuMSAyMy4zYzAgMjMuMiA2LjIgNDQuOSAxNi45IDYzLjdjLTMgLjItNi4xIC4zLTkuMiAuM0gzNTdjLTMzLjkgMC02Ni41LTEzLjUtOTAuNS0zNy41bC05LjgtOS44Yy0xMy4xLTEzLjEtMzQuNi0xMi40LTQ2LjggMS43TDE1Mi4yIDUwMWMtNS44IDYuNy0xNC4yIDEwLjctMjMgMTFzLTE3LjUtMy4xLTIzLjgtOS40bC0zMi0zMmMtNi4zLTYuMy05LjctMTQuOS05LjQtMjMuOHM0LjMtMTcuMiAxMS0yM2w2Ni42LTU3LjdjMTQtMTIuMiAxNC44LTMzLjcgMS43LTQ2LjhsLTkuOC05LjhjLTI0LTI0LTM3LjUtNTYuNi0zNy41LTkwLjV2LTIuN2MwLTIyLjggNi4xLTQ0LjkgMTcuMy02NC4zek00ODAgMzIwYTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAyNTZWMTYwSDIyNHY5Nkg2NHptMCA2NEgyMjR2OTZINjRWMzIwem0yMjQgOTZWMzIwSDQ0OHY5NkgyODh6TTQ0OCAyNTZIMjg4VjE2MEg0NDh2OTZ6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGV0QnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIyNCA0MDBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZXRTY3JlZW5CdXR0b24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTI1NiA0NDhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzg0IDY0SDY0VjM4NEgzODRWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0xNzYgNDMyaDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGV0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTQuMyAyNDdjMTYuMy0yNSAyNS43LTU0LjkgMjUuNy04N0M2NDAgNzEuNiA1NjguNCAwIDQ4MCAwYy0zMi4xIDAtNjEuOSA5LjQtODcgMjUuN2MtNy45IDUuMi04LjUgMTYuMi0xLjggMjIuOUw1OTEuNCAyNDguOGM2LjcgNi43IDE3LjggNi4yIDIyLjktMS44ek01NjcgMjk0LjNjNy45LTUuMiA4LjUtMTYuMiAxLjgtMjIuOUwzNjguNiA3MS4yYy02LjctNi43LTE3LjgtNi4yLTIyLjkgMS44Yy0xNi4zIDI1LTI1LjcgNTQuOS0yNS43IDg3YzAgODguNCA3MS42IDE2MCAxNjAgMTYwYzMyLjEgMCA2MS45LTkuNCA4Ny0yNS43ek0zMDEuNSAzNjhIMTguNWMtOS41IDAtMTYuOSA4LjItMTUgMTcuNUMxOC45IDQ1Ny44IDgzLjEgNTEyIDE2MCA1MTJzMTQxLjEtNTQuMiAxNTYuNS0xMjYuNWMyLTkuMy01LjUtMTcuNS0xNS0xNy41em0wLTMyYzkuNSAwIDE2LjktOC4yIDE1LTE3LjVDMzAxLjEgMjQ2LjIgMjM2LjkgMTkyIDE2MCAxOTJTMTguOSAyNDYuMiAzLjUgMzE4LjVjLTIgOS4zIDUuNSAxNy41IDE1IDE3LjVIMzAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhY2hvZ3JhcGhEaWdpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1NzZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em0zMiA2NEgzMjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgMzY4YzAtOC44IDcuMi0xNiAxNi0xNkgzMzZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnptMzIwIDBjMC04LjggNy4yLTE2IDE2LTE2SDU2MGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg0MDBjLTguOCAwLTE2LTcuMi0xNi0xNnpNODAgMjg4YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptNDggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptODAtMTZhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyem00OCAxNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwem04MC0xNmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDgwVjIyOS41YzAgMTcgNi43IDMzLjMgMTguNyA0NS4zbDE3NiAxNzZjMjUgMjUgNjUuNSAyNSA5MC41IDBMNDE4LjcgMzE3LjNjMjUtMjUgMjUtNjUuNSAwLTkwLjVsLTE3Ni0xNzZjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHptMTEyIDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDUgMzkuMUw0NzIuOCAxNjguNGM1Mi40IDUzIDUyLjQgMTM4LjIgMCAxOTEuMkwzNjAuOCA0NzIuOWMtOS4zIDkuNC0yNC41IDkuNS0zMy45IC4ycy05LjUtMjQuNS0uMi0zMy45TDQzOC42IDMyNS45YzMzLjktMzQuMyAzMy45LTg5LjQgMC0xMjMuN0wzMTAuOSA3Mi45Yy05LjMtOS40LTkuMi0yNC42IC4yLTMzLjlzMjQuNi05LjIgMzMuOSAuMnpNMCAyMjkuNVY4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMkgxOTcuNWMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2wxNjggMTY4YzI1IDI1IDI1IDY1LjUgMCA5MC41TDI3Ny4zIDQ0Mi43Yy0yNSAyNS02NS41IDI1LTkwLjUgMGwtMTY4LTE2OEM2LjcgMjYyLjcgMCAyNDYuNSAwIDIyOS41ek0xNDQgMTQ0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjggNDE2YzQxLjUtNDAuNyA2Ny4yLTk3LjMgNjcuMi0xNjBDNDQ4IDEzMi4zIDM0Ny43IDMyIDIyNCAzMlMwIDEzMi4zIDAgMjU2UzEwMC4zIDQ4MCAyMjQgNDgwSDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzODAuOHpNMjI0IDE2MGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnptNjQgOTZhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXJwRHJvcGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTYwYy0zNS4zIDAtNjQtMjYuOS02NC02MGMwLTI0IDMzLjctNzAuMSA1Mi4yLTkzLjVjNi4xLTcuNyAxNy41LTcuNyAyMy42IDBDMzE4LjMgMjkuOSAzNTIgNzYgMzUyIDEwMGMwIDMzLjEtMjguNyA2MC02NCA2MHpNNjQgMTI4SDE5Ny41YzEzLjIgMzcuMyA0OC43IDY0IDkwLjUgNjRzNzcuNC0yNi43IDkwLjUtNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM1Mkg0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMTI4TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0ek00NDggNTEybDAtMTI4SDU3Nkw0NDggNTEyek05NiAyNTZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXJwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiAxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM1MiAwIDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDU3NlYxMjh6TTQ0OCA0NDhMNTc2IDMyMEg0NDhsMCAxMjh6TTk2IDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRheGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjY0YzAgLjEgMCAuMSAwIC4yYy0zOC42IDIuMi03Mi4zIDI3LjMtODUuMiA2NC4xTDM5LjYgMjI4LjhDMTYuNCAyMzguNCAwIDI2MS4zIDAgMjg4VjQzMnY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlY0MzJINDE2djQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQzMiAyODhjMC0yNi43LTE2LjQtNDkuNi0zOS42LTU5LjJMNDM3LjIgMTI4LjNjLTEyLjktMzYuOC00Ni42LTYyLTg1LjItNjQuMWMwLS4xIDAtLjEgMC0uMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxOTJ6TTE2NS40IDEyOEgzNDYuNmMxMy42IDAgMjUuNyA4LjYgMzAuMiAyMS40TDQwMi45IDIyNEgxMDkuMWwyNi4xLTc0LjZjNC41LTEyLjggMTYuNi0yMS40IDMwLjItMjEuNHpNOTYgMjg4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMjg4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlZXRoT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMkM0MyAzMiAwIDc1IDAgMTI4djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC01My00My05Ni05Ni05Nkg5NnpNMjI0IDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djU2YzAgMTMuMy0xMC43IDI0LTI0IDI0SDIwMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em04MCA0OGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djU2YzAgMTMuMy0xMC43IDI0LTI0IDI0SDMyOGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTQ0ek05NiAxMjhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRINzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHptMzM2IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRINDU2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNzZ6TTk2IDQ4MEg0ODBjNTMgMCA5Ni00MyA5Ni05NlYzNTJjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgNTMgNDMgOTYgOTYgOTZ6bTAtNjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM0NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyNGMwIDI2LjUtMjEuNSA0OC00OCA0OHptODAtNDhWMzQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0djI0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4em0xNzYgNDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM0NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyNGMwIDI2LjUtMjEuNSA0OC00OCA0OHptODAtNDhWMzQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0djI0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWV0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDc1IDQzIDMyIDk2IDMySDQ4MGM1MyAwIDk2IDQzIDk2IDk2VjM4NGMwIDUzLTQzIDk2LTk2IDk2SDk2Yy01MyAwLTk2LTQzLTk2LTk2VjEyOHptMTc2IDQ4djU2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE3NmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHptMTc2LTQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHY1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4IDIwOHYyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyMDhjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh6TTk2IDM4NGMyNi41IDAgNDgtMjEuNSA0OC00OFYzMTJjMC0xMy4zLTEwLjctMjQtMjQtMjRINzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4em04MC00OGMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyMDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI0em0xNzYgNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDMyOGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjRjMCAyNi41IDIxLjUgNDggNDggNDh6bTgwLTE3NnYyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyMDhjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh6bTQ4IDE3NmMyNi41IDAgNDgtMjEuNSA0OC00OFYzMTJjMC0xMy4zLTEwLjctMjQtMjQtMjRINDU2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNGMwIDI2LjUgMjEuNSA0OCA0OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4VjI3Ni41YzAgMTcuMyA3LjEgMzEuOSAxNS4zIDQyLjVDMjQ5LjggMzMyLjYgMjU2IDM0OS41IDI1NiAzNjhjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0xOC41IDYuMi0zNS40IDE2LjctNDguOWM4LjItMTAuNiAxNS4zLTI1LjIgMTUuMy00Mi41VjExMnpNMTc2IDBDMTE0LjEgMCA2NCA1MC4xIDY0IDExMlYyNzYuNGMwIC4xLS4xIC4zLS4yIC42Yy0uMiAuNi0uOCAxLjYtMS43IDIuOEM0My4yIDMwNC4yIDMyIDMzNC44IDMyIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzMuMi0xMS4yLTYzLjgtMzAuMS04OC4xYy0uOS0xLjItMS41LTIuMi0xLjctMi44Yy0uMS0uMy0uMi0uNS0uMi0uNlYxMTJDMjg4IDUwLjEgMjM3LjkgMCAxNzYgMHptMCA0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC0yMC45LTEzLjQtMzguNy0zMi00NS4zVjI3MmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY1MC43Yy0xOC42IDYuNi0zMiAyNC40LTMyIDQ1LjNjMCAyNi41IDIxLjUgNDggNDggNDh6bTMzNi02NEg0ODBWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzUySDM4NGMtMTIuOSAwLTI0LjYgNy44LTI5LjYgMTkuOHMtMi4yIDI1LjcgNi45IDM0LjlsNjQgNjRjNiA2IDE0LjEgOS40IDIyLjYgOS40czE2LjYtMy40IDIyLjYtOS40bDY0LTY0YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW1wZXJhdHVyZUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4VjI3Ni41YzAgMTcuMyA3LjEgMzEuOSAxNS4zIDQyLjVDMjQ5LjggMzMyLjYgMjU2IDM0OS41IDI1NiAzNjhjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0xOC41IDYuMi0zNS40IDE2LjctNDguOWM4LjItMTAuNiAxNS4zLTI1LjIgMTUuMy00Mi41VjExMnpNMTc2IDBDMTE0LjEgMCA2NCA1MC4xIDY0IDExMlYyNzYuNGMwIC4xLS4xIC4zLS4yIC42Yy0uMiAuNi0uOCAxLjYtMS43IDIuOEM0My4yIDMwNC4yIDMyIDMzNC44IDMyIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzMuMi0xMS4yLTYzLjgtMzAuMS04OC4xYy0uOS0xLjItMS41LTIuMi0xLjctMi44Yy0uMS0uMy0uMi0uNS0uMi0uNlYxMTJDMjg4IDUwLjEgMjM3LjkgMCAxNzYgMHptMCA0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC0yMC45LTEzLjQtMzguNy0zMi00NS4zVjExMmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlYzMjIuN2MtMTguNiA2LjYtMzIgMjQuNC0zMiA0NS4zYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4ek00ODAgMTYwaDMyYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTY0LTY0Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhoMzJWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW1wZXJhdHVyZUVtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OFYyNzYuNWMwIDE3LjMgNy4xIDMxLjkgMTUuMyA0Mi41QzIzMy44IDMzMi42IDI0MCAzNDkuNSAyNDAgMzY4YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMTguNSA2LjItMzUuNCAxNi43LTQ4LjljOC4yLTEwLjYgMTUuMy0yNS4yIDE1LjMtNDIuNVYxMTJ6TTE2MCAwQzk4LjEgMCA0OCA1MC4yIDQ4IDExMlYyNzYuNWMwIC4xLS4xIC4zLS4yIC42Yy0uMiAuNi0uOCAxLjYtMS43IDIuOEMyNy4yIDMwNC4yIDE2IDMzNC44IDE2IDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzMuMi0xMS4yLTYzLjgtMzAuMS04OC4xYy0uOS0xLjItMS41LTIuMi0xLjctMi44Yy0uMS0uMy0uMi0uNS0uMi0uNlYxMTJDMjcyIDUwLjIgMjIxLjkgMCAxNjAgMHptMCA0MTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW1wZXJhdHVyZUZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDY0Yy0yNi41IDAtNDggMjEuNS00OCA0OFYyNzYuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41Qzg2LjIgMzMyLjYgODAgMzQ5LjUgODAgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNVYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4IDExMkM0OCA1MC4yIDk4LjEgMCAxNjAgMHMxMTIgNTAuMSAxMTIgMTEyVjI3Ni41YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzE2IDQ0Ny41IDE2IDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42VjExMnpNMjA4IDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWMzIyLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW1wZXJhdHVyZUhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDY0Yy0yNi41IDAtNDggMjEuNS00OCA0OFYyNzYuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41Qzg2LjIgMzMyLjYgODAgMzQ5LjUgODAgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNVYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4IDExMkM0OCA1MC4yIDk4LjEgMCAxNjAgMHMxMTIgNTAuMSAxMTIgMTEyVjI3Ni41YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzE2IDQ0Ny41IDE2IDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42VjExMnpNMjA4IDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNWMjA4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWMzIyLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW1wZXJhdHVyZUhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMCAxMjhBOTYgOTYgMCAxIDAgNDE2IDBhOTYgOTYgMCAxIDAgMCAxOTJ6TTk2IDExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4VjI3Ni41YzAgMTcuMyA3LjEgMzEuOSAxNS4zIDQyLjVDMjE3LjggMzMyLjYgMjI0IDM0OS41IDIyNCAzNjhjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0xOC41IDYuMi0zNS40IDE2LjctNDguOUM4OC45IDMwOC40IDk2IDI5My44IDk2IDI3Ni41VjExMnpNMTQ0IDBDODIuMSAwIDMyIDUwLjIgMzIgMTEyVjI3Ni41YzAgLjEtLjEgLjMtLjIgLjZjLS4yIC42LS44IDEuNi0xLjcgMi44QzExLjIgMzA0LjIgMCAzMzQuOCAwIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzMuMi0xMS4yLTYzLjgtMzAuMS04OC4xYy0uOS0xLjItMS41LTIuMi0xLjctMi44Yy0uMS0uMy0uMi0uNS0uMi0uNlYxMTJDMjU2IDUwLjIgMjA1LjkgMCAxNDQgMHptMCA0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC0yMC45LTEzLjQtMzguNy0zMi00NS4zVjExMmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlYzMjIuN2MtMTguNiA2LjYtMzIgMjQuNC0zMiA0NS4zYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW1wZXJhdHVyZUxvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzIwIDk2YTk2IDk2IDAgMSAxIDE5MiAwQTk2IDk2IDAgMSAxIDMyMCA5NnpNMTQ0IDY0Yy0yNi41IDAtNDggMjEuNS00OCA0OFYyNzYuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41QzcwLjIgMzMyLjYgNjQgMzQ5LjUgNjQgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNVYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTMyIDExMkMzMiA1MC4yIDgyLjEgMCAxNDQgMHMxMTIgNTAuMSAxMTIgMTEyVjI3Ni41YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzAgNDQ3LjUgMCAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNlYxMTJ6TTE5MiAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zVjI3MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djUwLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW1wZXJhdHVyZVF1YXJ0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDY0Yy0yNi41IDAtNDggMjEuNS00OCA0OFYyNzYuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41Qzg2LjIgMzMyLjYgODAgMzQ5LjUgODAgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNVYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4IDExMkM0OCA1MC4yIDk4LjEgMCAxNjAgMHMxMTIgNTAuMSAxMTIgMTEyVjI3Ni41YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzE2IDQ0Ny41IDE2IDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42VjExMnpNMjA4IDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNWMjcyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NTAuN2MxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbXBlcmF0dXJlVGhyZWVRdWFydGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNjRjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjI3Ni41YzAgMTcuMy03LjEgMzEuOS0xNS4zIDQyLjVDODYuMiAzMzIuNiA4MCAzNDkuNSA4MCAzNjhjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTE4LjUtNi4yLTM1LjQtMTYuNy00OC45Yy04LjItMTAuNi0xNS4zLTI1LjItMTUuMy00Mi41VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNNDggMTEyQzQ4IDUwLjIgOTguMSAwIDE2MCAwczExMiA1MC4xIDExMiAxMTJWMjc2LjVjMCAuMSAuMSAuMyAuMiAuNmMuMiAuNiAuOCAxLjYgMS43IDIuOGMxOC45IDI0LjQgMzAuMSA1NSAzMC4xIDg4LjFjMCA3OS41LTY0LjUgMTQ0LTE0NCAxNDRTMTYgNDQ3LjUgMTYgMzY4YzAtMzMuMiAxMS4yLTYzLjggMzAuMS04OC4xYy45LTEuMiAxLjUtMi4yIDEuNy0yLjhjLjEtLjMgLjItLjUgLjItLjZWMTEyek0yMDggMzY4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM1YxNDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlYzMjIuN2MxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbmdlU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0ek0wIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMkgxOTIgMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNFY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjI0SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVudEFycm93RG93blRvTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDEuOCAxMTEuOWM4LjkgOS45IDguMSAyNS0xLjggMzMuOWwtODAgNzJjLTkuMSA4LjItMjMgOC4yLTMyLjEgMGwtODAtNzJjLTkuOS04LjktMTAuNy0yNC0xLjgtMzMuOXMyNC0xMC43IDMzLjktMS44bDM5LjkgMzZMMTIwIDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxMjIuMSAzOS45LTM2YzkuOS04LjkgMjUtOC4xIDMzLjkgMS44em0xMjIuOCAyMi42YzExLjUtOC43IDI3LjMtOC43IDM4LjggMGwxNjggMTI4YzYuNiA1IDExIDEyLjUgMTIuMyAyMC43bDI0IDE2MCAuNyA0LjdjMTcuNSAuMiAzMS42IDE0LjQgMzEuNiAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxNTkuNmwuNy00LjcgMjQtMTYwYzEuMi04LjIgNS42LTE1LjcgMTIuMy0yMC43bDE2OC0xMjh6TTM4NCA0NDhoODBMNDAyLjcgMzI1LjVjLTEuNy0zLjQtNS4xLTUuNS04LjgtNS41Yy01LjUgMC05LjkgNC40LTkuOSA5LjlWNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW50QXJyb3dMZWZ0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4LjEgNi4yYy05LjktOC45LTI1LTguMS0zMy45IDEuOHMtOC4xIDI1IDEuOCAzMy45TDQ4OS41IDcyIDg2LjUgNzJsMzMuNS0zMC4yYzkuOS04LjkgMTAuNy0yNCAxLjgtMzMuOVM5Ny44LTIuNyA4Ny45IDYuMmwtODAgNzJDMi45IDgyLjcgMCA4OS4yIDAgOTZzMi45IDEzLjMgNy45IDE3LjhsODAgNzJjOS45IDguOSAyNSA4LjEgMzMuOS0xLjhzOC4xLTI1LTEuOC0zMy45TDg2LjUgMTIwbDQwMi45IDAtMzMuNSAzMC4yYy05LjkgOC45LTEwLjcgMjQtMS44IDMzLjlzMjQgMTAuNyAzMy45IDEuOGw4MC03MmM1LjEtNC42IDcuOS0xMSA3LjktMTcuOHMtMi45LTEzLjMtNy45LTE3LjhsLTgwLTcyek0zMDcuNCAxNjYuNWMtMTEuNS04LjctMjcuMy04LjctMzguOCAwbC0xNjggMTI4Yy02LjYgNS0xMSAxMi41LTEyLjMgMjAuN2wtMjQgMTYwYy0xLjQgOS4yIDEuMyAxOC42IDcuNCAyNS42Uzg2LjcgNTEyIDk2IDUxMkgyNDBoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzYxLjljMC01LjUgNC40LTkuOSA5LjktOS45YzMuNyAwIDcuMiAyLjEgOC44IDUuNWw2OC40IDEzNi44YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdINDY0aDE2YzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVudEFycm93VHVybkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjEgNDEuOGM5LjktOC45IDEwLjctMjQgMS44LTMzLjlTOTcuOC0yLjcgODcuOSA2LjJsLTgwIDcyQzIuOSA4Mi43IDAgODkuMiAwIDk2czIuOSAxMy4zIDcuOSAxNy44bDgwIDcyYzkuOSA4LjkgMjUgOC4xIDMzLjktMS44czguMS0yNS0xLjgtMzMuOUw4Ni41IDEyMCA0NTYgMTIwYzM5LjggMCA3MiAzMi4yIDcyIDcydjQwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTkyYzAtNjYuMy01My43LTEyMC0xMjAtMTIwTDg2LjUgNzJsMzMuNS0zMC4yek0zMDcuNCAxNjYuNWMtMTEuNS04LjctMjcuMy04LjctMzguOCAwbC0xNjggMTI4Yy02LjYgNS0xMSAxMi41LTEyLjMgMjAuN2wtMjQgMTYwYy0xLjQgOS4yIDEuMyAxOC42IDcuNCAyNS42Uzg2LjcgNTEyIDk2IDUxMkgyNDBoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzYxLjljMC01LjUgNC40LTkuOSA5LjktOS45YzMuNyAwIDcuMiAyLjEgOC44IDUuNWw2OC40IDEzNi44YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdINDY0aDE2YzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVudEFycm93c0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA5LjggMTExLjljLTguOS05LjktMjQtMTAuNy0zMy45LTEuOGwtMzkuOSAzNkwxMzYgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRTODggMTAuNyA4OCAyNGwwIDEyMi4xLTM5LjktMzZjLTkuOS04LjktMjUtOC4xLTMzLjkgMS44cy04LjEgMjUgMS44IDMzLjlsODAgNzJjOS4xIDguMiAyMyA4LjIgMzIuMSAwbDgwLTcyYzkuOS04LjkgMTAuNy0yNCAxLjgtMzMuOXptMzUyIDBjLTguOS05LjktMjQtMTAuNy0zMy45LTEuOGwtMzkuOSAzNlYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFYxNDYuMWwtMzkuOS0zNmMtOS45LTguOS0yNS04LjEtMzMuOSAxLjhzLTguMSAyNSAxLjggMzMuOWw4MCA3MmM5LjEgOC4yIDIzIDguMiAzMi4xIDBsODAtNzJjOS45LTguOSAxMC43LTI0IDEuOC0zMy45ek0zMDcuNCAxNjYuNWMtMTEuNS04LjctMjcuMy04LjctMzguOCAwbC0xNjggMTI4Yy02LjYgNS0xMSAxMi41LTEyLjMgMjAuN2wtMjQgMTYwYy0xLjQgOS4yIDEuMyAxOC42IDcuNCAyNS42Uzg2LjcgNTEyIDk2IDUxMkgyNDBoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzYxLjljMC01LjUgNC40LTkuOSA5LjktOS45YzMuNyAwIDcuMiAyLjEgOC44IDUuNWw2OC40IDEzNi44YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdINDY0aDE2YzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjkuNCA2QzI4MC41LTIgMjk1LjUtMiAzMDYuNiA2bDIyNCAxNjBjNy40IDUuMyAxMi4yIDEzLjUgMTMuMiAyMi41bDMyIDI4OGMxIDktMS45IDE4LjEtOCAyNC45cy0xNC43IDEwLjctMjMuOCAxMC43SDQ2NCA0MzUuOGMtMTIuMSAwLTIzLjItNi44LTI4LjYtMTcuN0wzMDYuNyAyOTMuNWMtMS43LTMuNC01LjEtNS41LTguOC01LjVjLTUuNSAwLTkuOSA0LjQtOS45IDkuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMjQwIDMyYy05LjEgMC0xNy44LTMuOS0yMy44LTEwLjdzLTktMTUuOC04LTI0LjlsMzItMjg4YzEtOSA1LjgtMTcuMiAxMy4yLTIyLjVMMjY5LjQgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk2LjYgNi41TDIzNS44IDEyOS4xYzkuNiAxLjggMTguOSA1LjggMjcgMTJsMTY4IDEyOGMxMy4yIDEwLjEgMjIgMjQuOSAyNC41IDQxLjRsNi4yIDQxLjVINjA4YzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOGMtMTEuNS04LjctMjcuMy04LjctMzguOCAwem0tMTUzLjIgMTYwYy0xMS41LTguNy0yNy4zLTguNy0zOC44IDBsLTE2OCAxMjhjLTYuNiA1LTExIDEyLjUtMTIuMyAyMC43bC0yNCAxNjBjLTEuNCA5LjIgMS4zIDE4LjYgNy40IDI1LjZTMjIuNyA1MTIgMzIgNTEySDE3NmgxNmMxNy43IDAgMzItMTQuMyAzMi0zMlYzNjEuOWMwLTUuNSA0LjQtOS45IDkuOS05LjljMy43IDAgNy4yIDIuMSA4LjggNS41bDY4LjQgMTM2LjhjNS40IDEwLjggMTYuNSAxNy43IDI4LjYgMTcuN0g0MDBoMTZjOS4zIDAgMTguMi00LjEgMjQuMi0xMS4xczguOC0xNi40IDcuNC0yNS42bC0yNC0xNjBjLTEuMi04LjItNS42LTE1LjctMTIuMy0yMC43bC0xNjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZXJtaW5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQgODYuNkMtMy4xIDc0LjEtMy4xIDUzLjkgOS40IDQxLjRzMzIuOC0xMi41IDQ1LjMgMGwxOTIgMTkyYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0xOTIgMTkyYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wxNzguNyAyNTYgOS40IDg2LjZ6TTI1NiA0MTZINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGV4dEhlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMjhWOTZoNjRsMCAzMjBIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE5MmwwLTMyMGg2NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDE2MCA0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6TTUwMi42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOGgzMlYzNTJINDE2Yy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOWw2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw2NC02NGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEg1MTJWMTYwaDMyYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZXh0U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0wzNTUuNyAyNTMuNSA0MDAuMiA5Nkg1MDNMNDk3IDEyMC4yYy00LjMgMTcuMSA2LjEgMzQuNSAyMy4zIDM4LjhzMzQuNS02LjEgMzguOC0yMy4zbDExLTQ0LjFDNTc3LjYgNjEuMyA1NTQuNyAzMiA1MjMuNSAzMkgzNzYuMWgtLjNIMjA0LjVjLTIyIDAtNDEuMiAxNS00Ni42IDM2LjRsLTYuMyAyNS4yTDM4LjggNS4xem0xNjggMTMxLjdjLjEtLjMgLjItLjcgLjMtMUwyMTcgOTZIMzMzLjdMMzAxLjMgMjEwLjhsLTk0LjUtNzQuMXpNMzI3LjMgMzUzLjlMMjcyLjkgMzExIDI0My4zIDQxNkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMwOS44bDE3LjYtNjIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGV4dFdpZHRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDEyOFY5NkgxOTJsMCAxMjhIMTc2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI1NmwwLTEyOEgzODR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgyMjQgNDhDMjEuNSAzMiAwIDUzLjUgMCA4MHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyek05LjQgMzYxLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzkuMiA5LjIgMjIuOSAxMS45IDM0LjkgNi45czE5LjgtMTYuNiAxOS44LTI5LjZWNDE2SDMyMHYzMmMwIDEyLjkgNy44IDI0LjYgMTkuOCAyOS42czI1LjcgMi4yIDM0LjktNi45bDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC02NC02NGMtOS4yLTkuMi0yMi45LTExLjktMzQuOS02LjlzLTE5LjggMTYuNi0xOS44IDI5LjZ2MzJIMTI4VjMyMGMwLTEyLjktNy44LTI0LjYtMTkuOC0yOS42cy0yNS43LTIuMi0zNC45IDYuOWwtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDM4Mi4xVjI5My4zYzAtMTQuOSA1LjktMjkuMSAxNi40LTM5LjZsMjcuMy0yNy4zIDU3IDU3YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNTctNTcgNDEuNC00MS40IDU3IDU3YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNTctNTcgNDEuNC00MS40IDU3IDU3YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNTctNTcgNDUuNS00NS41QzM1NS4yIDEwLjkgMzgxLjQgMCA0MDguOCAwQzQ2NS44IDAgNTEyIDQ2LjIgNTEyIDEwMy4yYzAgMjcuNC0xMC45IDUzLjYtMzAuMiA3M0wyNTguMyAzOTkuNmMtMTAuNSAxMC41LTI0LjcgMTYuNC0zOS42IDE2LjRIMTI5LjlMNDEgNTA1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDg5LTg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy40IDQ3OS4xYzI2LTUuMiA0Mi45LTMwLjUgMzcuNy01Ni41bC0yLjMtMTEuNGMtNS4zLTI2LjctMTUuMS01Mi4xLTI4LjgtNzUuMkg0NjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC0xOC41LTEwLjUtMzQuNi0yNS45LTQyLjZDNDk3IDIzNi42IDUwNCAyMjMuMSA1MDQgMjA4YzAtMjMuNC0xNi44LTQyLjktMzguOS00Ny4xYzQuNC03LjMgNi45LTE1LjggNi45LTI0LjljMC0yMS4zLTEzLjktMzkuNC0zMy4xLTQ1LjZjLjctMy4zIDEuMS02LjggMS4xLTEwLjRjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjk0LjVjLTE5IDAtMzcuNSA1LjYtNTMuMyAxNi4xTDIwMi43IDczLjhDMTc2IDkxLjYgMTYwIDEyMS42IDE2MCAxNTMuN1YxOTJ2NDggMjQuOWMwIDI5LjIgMTMuMyA1Ni43IDM2IDc1bDcuNCA1LjljMjYuNSAyMS4yIDQ0LjYgNTEgNTEuMiA4NC4ybDIuMyAxMS40YzUuMiAyNiAzMC41IDQyLjkgNTYuNSAzNy43ek0zMiAzODRIOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgOTYgMCAxMTAuMyAwIDEyOFYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRodW1ic1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy40IDMyLjljMjYgNS4yIDQyLjkgMzAuNSAzNy43IDU2LjVsLTIuMyAxMS40Yy01LjMgMjYuNy0xNS4xIDUyLjEtMjguOCA3NS4ySDQ2NGMyNi41IDAgNDggMjEuNSA0OCA0OGMwIDE4LjUtMTAuNSAzNC42LTI1LjkgNDIuNkM0OTcgMjc1LjQgNTA0IDI4OC45IDUwNCAzMDRjMCAyMy40LTE2LjggNDIuOS0zOC45IDQ3LjFjNC40IDcuMyA2LjkgMTUuOCA2LjkgMjQuOWMwIDIxLjMtMTMuOSAzOS40LTMzLjEgNDUuNmMuNyAzLjMgMS4xIDYuOCAxLjEgMTAuNGMwIDI2LjUtMjEuNSA0OC00OCA0OEgyOTQuNWMtMTkgMC0zNy41LTUuNi01My4zLTE2LjFsLTM4LjUtMjUuN0MxNzYgNDIwLjQgMTYwIDM5MC40IDE2MCAzNTguM1YzMjAgMjcyIDI0Ny4xYzAtMjkuMiAxMy4zLTU2LjcgMzYtNzVsNy40LTUuOWMyNi41LTIxLjIgNDQuNi01MSA1MS4yLTg0LjJsMi4zLTExLjRjNS4yLTI2IDMwLjUtNDIuOSA1Ni41LTM3Ljd6TTMyIDE5Mkg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGh1bWJ0YWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBIMzIwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI5MC41bDExLjQgMTQ4LjJjMzYuNyAxOS45IDY1LjcgNTMuMiA3OS41IDk0LjdsMSAzYzMuMyA5LjggMS42IDIwLjUtNC40IDI4LjhzLTE1LjcgMTMuMy0yNiAxMy4zSDMyYy0xMC4zIDAtMTkuOS00LjktMjYtMTMuM3MtNy43LTE5LjEtNC40LTI4LjhsMS0zYzEzLjgtNDEuNSA0Mi44LTc0LjggNzkuNS05NC43TDkzLjUgNjRINjRDNDYuMyA2NCAzMiA0OS43IDMyIDMyek0xNjAgMzg0aDY0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlja2V0U2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NGMwIDguOC03LjQgMTUuNy0xNS43IDE4LjZDNTQxLjUgMjE3LjEgNTI4IDIzNSA1MjggMjU2czEzLjUgMzguOSAzMi4zIDQ1LjRjOC4zIDIuOSAxNS43IDkuOCAxNS43IDE4LjZ2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjMyMGMwLTguOCA3LjQtMTUuNyAxNS43LTE4LjZDMzQuNSAyOTQuOSA0OCAyNzcgNDggMjU2cy0xMy41LTM4LjktMzIuMy00NS40QzcuNCAyMDcuNyAwIDIwMC44IDAgMTkyVjEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4djY0YzAgOC44IDcuNCAxNS43IDE1LjcgMTguNkMzNC41IDIxNy4xIDQ4IDIzNSA0OCAyNTZzLTEzLjUgMzguOS0zMi4zIDQ1LjRDNy40IDMwNC4zIDAgMzExLjIgMCAzMjB2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjMyMGMwLTguOC03LjQtMTUuNy0xNS43LTE4LjZDNTQxLjUgMjk0LjkgNTI4IDI3NyA1MjggMjU2czEzLjUtMzguOSAzMi4zLTQ1LjRjOC4zLTIuOSAxNS43LTkuOCAxNS43LTE4LjZWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCAxMTJsMCAxNjBjMCA4LjggNy4yIDE2IDE2IDE2SDQzMmM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgxNDRjLTguOCAwLTE2IDcuMi0xNiAxNnpNOTYgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQ0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpbWVsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCA3MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTMyIDk3LjNjMjguMy0xMi4zIDQ4LTQwLjUgNDgtNzMuM2MwLTQ0LjItMzUuOC04MC04MC04MFM0OCA1MS44IDQ4IDk2YzAgMzIuOCAxOS43IDYxIDQ4IDczLjNWMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDI4OHY1NC43Yy0yOC4zIDEyLjMtNDggNDAuNS00OCA3My4zYzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0zMi44LTE5LjctNjEtNDgtNzMuM1YyODhINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDU0NFYxNjkuM2MyOC4zLTEyLjMgNDgtNDAuNSA0OC03My4zYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgMzIuOCAxOS43IDYxIDQ4IDczLjNWMjI0SDE2MFYxNjkuM3pNNDg4IDk2YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTMyMCAzOTJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2dnbGVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDEyOGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOHMtNTcuMyAxMjgtMTI4IDEyOEgxOTJjLTcwLjcgMC0xMjgtNTcuMy0xMjgtMTI4czU3LjMtMTI4IDEyOC0xMjhIMzg0ek01NzYgMjU2YzAtMTA2LTg2LTE5Mi0xOTItMTkySDE5MkM4NiA2NCAwIDE1MCAwIDI1NlM4NiA0NDggMTkyIDQ0OEgzODRjMTA2IDAgMTkyLTg2IDE5Mi0xOTJ6TTE5MiAzNTJhOTYgOTYgMCAxIDAgMC0xOTIgOTYgOTYgMCAxIDAgMCAxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvZ2dsZU9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA2NEM4NiA2NCAwIDE1MCAwIDI1NlM4NiA0NDggMTkyIDQ0OEgzODRjMTA2IDAgMTkyLTg2IDE5Mi0xOTJzLTg2LTE5Mi0xOTItMTkySDE5MnptMTkyIDk2YTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXRQYXBlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTEwOS43LTg2QzU2OS45IDM3NCA2MDggMjkxLjkgNjA4IDE5MkM2MDggODYgNTY1IDAgNTEyIDBzLTk2IDg2LTk2IDE5MmMwIDQ5LjEgOS4yIDkzLjkgMjQuNCAxMjcuOWwtNTktNDYuMmMxLjYtMjQuOCAyLjYtNTIgMi42LTgxLjZjMC02NS41IDEzLjItMTQyLjQgNjAuMi0xOTJIMTYwYy0yNC44IDAtNDcuNCAxOC44LTY0LjQgNDkuNkwzOC44IDUuMXpNMzY3LjMgMzg1LjRMNjYuNSAxNDguNEM2NC45IDE2Mi40IDY0IDE3NyA2NCAxOTJjMCAxMDEuNS0xMS43IDE3MC44LTIzIDIxMy45Yy01LjEgMTkuNC0xMC43IDM5LjktMjAuNSA1Ny43Yy01LjkgOS45LTYuMSAyMi4xLS40IDMyLjJTMzYuNSA1MTIgNDggNTEySDI4NS45YzIyLjMgMCA0NS40LTEyLjEgNTUuNC0zNi4xYzcuNC0xNy43IDE3LjUtNDcuMiAyNi05MC42ek01NDQgMTkyYzAgMzUuMy0xNC4zIDY0LTMyIDY0cy0zMi0yOC43LTMyLTY0czE0LjMtNjQgMzItNjRzMzIgMjguNyAzMiA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9pbGV0UGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ0LjIgMEMzOTcuMiA0OS42IDM4NCAxMjYuNSAzODQgMTkyYzAgMTU4LjgtMjcuMyAyNDctNDIuNyAyODMuOWMtMTAgMjQtMzMuMiAzNi4xLTU1LjQgMzYuMUg0OGMtMTEuNSAwLTIyLjItNi4yLTI3LjgtMTYuMnMtNS42LTIyLjMgLjQtMzIuMmM5LjgtMTcuNyAxNS40LTM4LjIgMjAuNS01Ny43QzUyLjMgMzYyLjggNjQgMjkzLjUgNjQgMTkyQzY0IDg2IDEwNyAwIDE2MCAwSDQ0NC4yek01MTIgMzg0Yy01MyAwLTk2LTg2LTk2LTE5MlM0NTkgMCA1MTIgMHM5NiA4NiA5NiAxOTJzLTQzIDE5Mi05NiAxOTJ6bTAtMTI4YzE3LjcgMCAzMi0yOC43IDMyLTY0cy0xNC4zLTY0LTMyLTY0cy0zMiAyOC43LTMyIDY0czE0LjMgNjQgMzIgNjR6TTE0NCAyMDhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptNjQgMGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTgwLTE2YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvaWxldFBvcnRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJWNjRIMzIwVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgMCAwIDE0LjMgMCAzMnpNMjQgOTZIMHYyNFY0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNHYtOEgyNzJ2OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjEyMCA5NkgyOTYgMjR6TTI1NiAyNDB2NjRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvaWxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCAwQzEwLjcgMCAwIDEwLjcgMCAyNFMxMC43IDQ4IDI0IDQ4aDhWMTk2LjljLTEuOSAxLjQtMy44IDIuOS01LjYgNC40QzEwLjkgMjE0LjUgMCAyMzIuOSAwIDI1NmMwIDQ2LjkgMTQuMyA4NC4xIDM3IDExMi41YzE0LjIgMTcuNyAzMS4xIDMxLjMgNDguNSA0MS44TDY1LjYgNDY5LjljLTMuMyA5LjgtMS42IDIwLjUgNC40IDI4LjhzMTUuNyAxMy4zIDI2IDEzLjNIMzUyYzEwLjMgMCAxOS45LTQuOSAyNi0xMy4zczcuNy0xOS4xIDQuNC0yOC44bC0xOS44LTU5LjVjMTcuNC0xMC41IDM0LjMtMjQuMSA0OC41LTQxLjhjMjIuNy0yOC40IDM3LTY1LjUgMzctMTEyLjVjMC0yMy4xLTEwLjktNDEuNS0yNi40LTU0LjZjLTEuOC0xLjUtMy43LTMtNS42LTQuNFY0OGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI0ek0zODQgMjU2LjNjMCAxLS4zIDIuNi0zLjggNS42Yy00LjggNC4xLTE0IDktMjkuMyAxMy40QzMyMC41IDI4NCAyNzYuMSAyODggMjI0IDI4OHMtOTYuNS00LTEyNi45LTEyLjhjLTE1LjMtNC40LTI0LjUtOS4zLTI5LjMtMTMuNGMtMy41LTMtMy44LTQuNi0zLjgtNS42bDAtLjMgMC0uMWMwLTEgMC0yLjUgMy44LTUuOGM0LjgtNC4xIDE0LTkgMjkuMy0xMy40QzEyNy41IDIyOCAxNzEuOSAyMjQgMjI0IDIyNHM5Ni41IDQgMTI2LjkgMTIuOGMxNS4zIDQuNCAyNC41IDkuMyAyOS4zIDEzLjRjMy44IDMuMiAzLjggNC44IDMuOCA1LjhsMCAuMSAwIC4zek0zMjguMiAzODRsLS4yIC41IDAtLjVoLjJ6TTExMiA2NGgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvaWxldHNQb3J0YWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwSDIyNGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NEgwVjMyQzAgMTQuMyAxNC4zIDAgMzIgMHpNMCA5NkgyNCAyMzJoMjR2MjRWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0di04SDQ4djhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTIwIDk2ek0xOTIgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2ek0zNTIgMEg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMzIwVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zMjAgOTZoMjRINTUyaDI0djI0VjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHYtOEgzNjh2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYxMjAgOTZ6TTUxMiAyMjRjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvb2xib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDg4bDAgNDAgMTYwIDAgMC00MGMwLTQuNC0zLjYtOC04LThMMTg0IDgwYy00LjQgMC04IDMuNi04IDh6bS00OCA0MGwwLTQwYzAtMzAuOSAyNS4xLTU2IDU2LTU2bDE0NCAwYzMwLjkgMCA1NiAyNS4xIDU2IDU2bDAgNDAgMjguMSAwYzEyLjcgMCAyNC45IDUuMSAzMy45IDE0LjFsNTEuOSA1MS45YzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45bDAgOTIuMS0xMjggMCAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMzItMTI4IDAgMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMyTDAgMzIwbDAtOTIuMWMwLTEyLjcgNS4xLTI0LjkgMTQuMS0zMy45bDUxLjktNTEuOWM5LTkgMjEuMi0xNC4xIDMzLjktMTQuMWwyOC4xIDB6TTAgNDE2bDAtNjQgMTI4IDBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwxMjggMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDEyOCAwIDAgNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg2LjEgNTIuMUMxNjkuMyAzOS4xIDE0OC43IDMyIDEyNy41IDMyQzc0LjcgMzIgMzIgNzQuNyAzMiAxMjcuNXY2LjJjMCAxNS44IDMuNyAzMS4zIDEwLjcgNDUuNWwyMy41IDQ3LjFjNC41IDguOSA3LjYgMTguNCA5LjQgMjguMmwzNi43IDIwNS44YzIgMTEuMiAxMS42IDE5LjQgMjIuOSAxOS44czIxLjQtNy40IDI0LTE4LjRsMjguOS0xMjEuM0MxOTIuMiAzMjMuNyAyMDcgMzEyIDIyNCAzMTJzMzEuOCAxMS43IDM1LjggMjguM2wyOC45IDEyMS4zYzIuNiAxMS4xIDEyLjcgMTguOCAyNCAxOC40czIwLjktOC42IDIyLjktMTkuOGwzNi43LTIwNS44YzEuOC05LjggNC45LTE5LjMgOS40LTI4LjJsMjMuNS00Ny4xYzcuMS0xNC4xIDEwLjctMjkuNyAxMC43LTQ1LjV2LTIuMWMwLTU1LTQ0LjYtOTkuNi05OS42LTk5LjZjLTI0LjEgMC00Ny40IDguOC02NS42IDI0LjZsLTMuMiAyLjggMTkuNSAxNS4yYzcgNS40IDguMiAxNS41IDIuOCAyMi41cy0xNS41IDguMi0yMi41IDIuOGwtMjQuNC0xOS0zNy0yOC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb3JpaUdhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg2NHY2NGg2NFYxMjhoOTZ2NjRoNjRWMTI4aDk2djY0aDY0VjEyOGgxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMy40QzUxMiA2IDUwNiAwIDQ5OC42IDBjLTEuNyAwLTMuNCAuMy01IDFsLTQ5IDE5LjZDNDI1LjcgMjguMSA0MDUuNSAzMiAzODUuMiAzMkgxMjYuOGMtMjAuNCAwLTQwLjUtMy45LTU5LjQtMTEuNEwxOC40IDFjLTEuNi0uNi0zLjMtMS01LTFDNiAwIDAgNiAwIDEzLjRWODB6TTY0IDI4OFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhIMzg0VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI4OGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9ybmFkbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyVjQ1LjZDMCA2Mi43IDEuNyA3OS42IDUgOTZIMzU3LjhjMy4yLTYuOSA3LjUtMTMuMyAxMy0xOC44bDM4LjYtMzguNmM0LjItNC4yIDYuNi0xMCA2LjYtMTZDNDE2IDEwLjEgNDA1LjkgMCAzOTMuNCAwSDMyQzE0LjMgMCAwIDE0LjMgMCAzMnptMzUyLjIgOTZIMTMuNmMxMi4yIDM1LjkgMzIuMyA2OC43IDU4LjggOTZINDEybC00Ny4yLTYyLjljLTcuMy05LjctMTEuNi0yMS4yLTEyLjYtMzMuMXptLTIyNiAxMzguMmwxMTYuNCA2OC41YzguMiA0LjggMTUuOCAxMC43IDIyLjUgMTcuM0g0NDVjMi05LjggMy0xOS45IDMtMzAuMWMwLTIzLTUuMy00NS41LTE1LjMtNjUuOUgxMTAuMmM1LjIgMy42IDEwLjUgNyAxNiAxMC4yek0yODggMzg0YzEwLjMgMjEuNCAxMy44IDQ1LjUgOS45IDY5bC01LjkgMzUuN2MtMiAxMi4yIDcuNCAyMy40IDE5LjggMjMuNGM1LjMgMCAxMC40LTIuMSAxNC4yLTUuOWw3OC4yLTc4LjJjMTIuOC0xMi44IDIzLjEtMjcuNyAzMC40LTQzLjlIMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb3dlckJyb2FkY2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MC4zIDQ0QzY5LjggNjkuOSA2NCA5OC4yIDY0IDEyOHM1LjggNTguMSAxNi4zIDg0YzYuNiAxNi40LTEuMyAzNS0xNy43IDQxLjdzLTM1LTEuMy00MS43LTE3LjdDNy40IDIwMi42IDAgMTY2LjEgMCAxMjhTNy40IDUzLjQgMjAuOSAyMEMyNy42IDMuNiA0Ni4yLTQuMyA2Mi42IDIuM1M4Ni45IDI3LjYgODAuMyA0NHpNNTU1LjEgMjBDNTY4LjYgNTMuNCA1NzYgODkuOSA1NzYgMTI4cy03LjQgNzQuNi0yMC45IDEwOGMtNi42IDE2LjQtMjUuMyAyNC4zLTQxLjcgMTcuN1M0ODkuMSAyMjguNCA0OTUuNyAyMTJjMTAuNS0yNS45IDE2LjMtNTQuMiAxNi4zLTg0cy01LjgtNTguMS0xNi4zLTg0QzQ4OS4xIDI3LjYgNDk3IDkgNTEzLjQgMi4zczM1IDEuMyA0MS43IDE3Ljd6TTM1MiAxMjhjMCAyMy43LTEyLjkgNDQuNC0zMiA1NS40VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxODMuNGMtMTkuMS0xMS4xLTMyLTMxLjctMzItNTUuNGMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0ek0xNzAuNiA3Ni44QzE2My44IDkyLjQgMTYwIDEwOS43IDE2MCAxMjhzMy44IDM1LjYgMTAuNiA1MS4yYzcuMSAxNi4yLS4zIDM1LjEtMTYuNSA0Mi4xcy0zNS4xLS4zLTQyLjEtMTYuNWMtMTAuMy0yMy42LTE2LTQ5LjYtMTYtNzYuOHM1LjctNTMuMiAxNi03Ni44YzcuMS0xNi4yIDI1LjktMjMuNiA0Mi4xLTE2LjVzMjMuNiAyNS45IDE2LjUgNDIuMXpNNDY0IDUxLjJjMTAuMyAyMy42IDE2IDQ5LjYgMTYgNzYuOHMtNS43IDUzLjItMTYgNzYuOGMtNy4xIDE2LjItMjUuOSAyMy42LTQyLjEgMTYuNXMtMjMuNi0yNS45LTE2LjUtNDIuMWM2LjgtMTUuNiAxMC42LTMyLjkgMTAuNi01MS4ycy0zLjgtMzUuNi0xMC42LTUxLjJjLTcuMS0xNi4yIC4zLTM1LjEgMTYuNS00Mi4xczM1LjEgLjMgNDIuMSAxNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb3dlckNlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIuNiAyLjNDNDYuMi00LjMgMjcuNiAzLjYgMjAuOSAyMEM3LjQgNTMuNCAwIDg5LjkgMCAxMjhzNy40IDc0LjYgMjAuOSAxMDhjNi42IDE2LjQgMjUuMyAyNC4zIDQxLjcgMTcuN1M4Ni45IDIyOC40IDgwLjMgMjEyQzY5LjggMTg2LjEgNjQgMTU3LjggNjQgMTI4czUuOC01OC4xIDE2LjMtODRDODYuOSAyNy42IDc5IDkgNjIuNiAyLjN6bTQ1MC44IDBDNDk3IDkgNDg5LjEgMjcuNiA0OTUuNyA0NEM1MDYuMiA2OS45IDUxMiA5OC4yIDUxMiAxMjhzLTUuOCA1OC4xLTE2LjMgODRjLTYuNiAxNi40IDEuMyAzNSAxNy43IDQxLjdzMzUtMS4zIDQxLjctMTcuN2MxMy41LTMzLjQgMjAuOS02OS45IDIwLjktMTA4cy03LjQtNzQuNi0yMC45LTEwOEM1NDguNCAzLjYgNTI5LjgtNC4zIDUxMy40IDIuM3pNMzQwLjEgMTY1LjJjNy41LTEwLjUgMTEuOS0yMy4zIDExLjktMzcuMmMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NGMwIDEzLjkgNC40IDI2LjcgMTEuOSAzNy4yTDk4LjkgNDY2LjhjLTcuMyAxNi4xLS4yIDM1LjEgMTUuOSA0Mi40czM1LjEgLjIgNDIuNC0xNS45TDE3Ny43IDQ0OEgzOTguM2wyMC42IDQ1LjJjNy4zIDE2LjEgMjYuMyAyMy4yIDQyLjQgMTUuOXMyMy4yLTI2LjMgMTUuOS00Mi40TDM0MC4xIDE2NS4yek0zNjkuMiAzODRIMjA2LjhsMTQuNS0zMkgzNTQuN2wxNC41IDMyek0yODggMjA1LjNMMzI1LjYgMjg4SDI1MC40TDI4OCAyMDUuM3pNMTYzLjMgNzMuNmM1LjMtMTIuMS0uMi0yNi4zLTEyLjQtMzEuNnMtMjYuMyAuMi0zMS42IDEyLjRDMTA5LjUgNzcgMTA0IDEwMS45IDEwNCAxMjhzNS41IDUxIDE1LjMgNzMuNmM1LjMgMTIuMSAxOS41IDE3LjcgMzEuNiAxMi40czE3LjctMTkuNSAxMi40LTMxLjZDMTU2IDE2NS44IDE1MiAxNDcuNCAxNTIgMTI4czQtMzcuOCAxMS4zLTU0LjR6TTQ1Ni43IDU0LjRjLTUuMy0xMi4xLTE5LjUtMTcuNy0zMS42LTEyLjRzLTE3LjcgMTkuNS0xMi40IDMxLjZDNDIwIDkwLjIgNDI0IDEwOC42IDQyNCAxMjhzLTQgMzcuOC0xMS4zIDU0LjRjLTUuMyAxMi4xIC4yIDI2LjMgMTIuNCAzMS42czI2LjMtLjIgMzEuNi0xMi40QzQ2Ni41IDE3OSA0NzIgMTU0LjEgNDcyIDEyOHMtNS41LTUxLTE1LjMtNzMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG93ZXJPYnNlcnZhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDEuNyAzLjRjOS00LjUgMTkuNi00LjUgMjguNiAwbDE2MCA4MGMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45QzQzOSAxMzcuNSA0MjcuNyAxNDQgNDE2IDE0NHY4MGMwIDE3LjctMTQuMyAzMi0zMiAzMmgtNC45bDMyIDE5Mkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0LjVjLS40IDAtLjggMC0xLjEgMEgxMjguNmMtLjQgMC0uOCAwLTEuMSAwSDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDY4LjlsMzItMTkySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTQ0Yy0xMS43IDAtMjMtNi41LTI4LjYtMTcuN2MtNy45LTE1LjgtMS41LTM1IDE0LjMtNDIuOWwxNjAtODB6TTMxNC41IDQ0OEwyNTYgMzk5LjIgMTk3LjUgNDQ4aDExN3pNMTk3LjggMjU2bC00LjcgMjguM0wyNTYgMzM2LjhsNjIuOS01Mi41TDMxNC4yIDI1NkgxOTcuOHptLTEzLjkgODMuMmwtMTEuMiA2N0wyMTguNSAzNjhsLTM0LjYtMjguOHpNMjkzLjUgMzY4bDQ1LjggMzguMS0xMS4yLTY3TDI5My41IDM2OHpNMTc2IDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzMzZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFjdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDY0YzAtMzUuMyAyOC43LTY0IDY0LTY0SDI2Ni4zYzI2LjIgMCA0OS43IDE1LjkgNTkuNCA0MC4yTDM3My43IDE2MEg0ODBWMTI2LjJjMC0yNC44IDUuOC00OS4zIDE2LjktNzEuNmwyLjUtNWM3LjktMTUuOCAyNy4xLTIyLjIgNDIuOS0xNC4zczIyLjIgMjcuMSAxNC4zIDQyLjlsLTIuNSA1Yy02LjcgMTMuMy0xMC4xIDI4LTEwLjEgNDIuOVYxNjBoNTZjMjIuMSAwIDQwIDE3LjkgNDAgNDB2NDUuNGMwIDE2LjUtOC41IDMxLjktMjIuNiA0MC43bC00My4zIDI3LjFjLTE0LjItNS45LTI5LjgtOS4yLTQ2LjEtOS4yYy0zOS4zIDAtNzQuMSAxOC45LTk2IDQ4SDM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMmgtOC4yYy0xLjcgNC44LTMuNyA5LjUtNS44IDE0LjFsNS44IDUuOGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMjIuNiAyMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtNS44LTUuOGMtNC42IDIuMi05LjMgNC4xLTE0LjEgNS44VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi04LjJjLTQuOC0xLjctOS41LTMuNy0xNC4xLTUuOGwtNS44IDUuOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBMNDAuMiA0NDkuMWMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsNS44LTUuOGMtMi4yLTQuNi00LjEtOS4zLTUuOC0xNC4xSDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJoOC4yYzEuNy00LjggMy43LTkuNSA1LjgtMTQuMWwtNS44LTUuOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsMjIuNi0yMi42YzktOSAyMS45LTExLjUgMzMuMS03LjZWMTkyIDE2MCA2NHptMTcwLjMgMEgxNjB2OTZoMzJIMzA0LjdMMjY2LjMgNjR6TTE3NiAyNTZhODAgODAgMCAxIDAgMCAxNjAgODAgODAgMCAxIDAgMC0xNjB6TTUyOCA0NDhhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wIDY0Yy00OC42IDAtODgtMzkuNC04OC04OGMwLTI5LjggMTQuOC01Ni4xIDM3LjQtNzJjMTQuMy0xMC4xIDMxLjgtMTYgNTAuNi0xNmMyLjcgMCA1LjMgLjEgNy45IC4zYzQ0LjkgNCA4MC4xIDQxLjcgODAuMSA4Ny43YzAgNDguNi0zOS40IDg4LTg4IDg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFkZW1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ1LjYgMTA4LjhjLTguMy0xMS0yMi43LTE1LjUtMzUuNy0xMS4yUzI4OCAxMTQuMiAyODggMTI4VjM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIyNGw4Ni40IDExNS4yYzYgOC4xIDE1LjUgMTIuOCAyNS42IDEyLjhzMTkuNi00LjcgMjUuNi0xMi44TDU3NiAyMjRWMzg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTI4YzAtMTMuOC04LjgtMjYtMjEuOS0zMC40cy0yNy41IC4xLTM1LjcgMTEuMkw0NjQgMjY2LjcgMzQ1LjYgMTA4Ljh6TTAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDk2VjM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDk2IDAgMTEwLjMgMCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYWZmaWNMaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFYzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBzMTYwLTcxLjYgMTYwLTE2MFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptOTYgNDE2YTQ4IDQ4IDAgMSAxIDAtOTYgNDggNDggMCAxIDEgMCA5NnptNDgtMTc2YTQ4IDQ4IDAgMSAxIC05NiAwIDQ4IDQ4IDAgMSAxIDk2IDB6bS00OC04MGE0OCA0OCAwIDEgMSAwLTk2IDQ4IDQ4IDAgMSAxIDAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYWlsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzJDMjEuNSAzMiAwIDUzLjUgMCA4MFYzMzZjMCAyNi41IDIxLjUgNDggNDggNDhINjUuMWM3LjgtNTQuMyA1NC40LTk2IDExMC45LTk2czEwMy4xIDQxLjcgMTEwLjkgOTZINDg4aDhINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDU0NFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNODAgOTZjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTMxLjJjLTExLjQgNS45LTIyLjIgMTIuOS0zMiAyMVYxMTJjMC04LjggNy4yLTE2IDE2LTE2em05NiAxMjhjLTUuNCAwLTEwLjcgLjItMTYgLjdMMTYwIDExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMTEyLjdjLTUuMy0uNS0xMC42LS43LTE2LS43em04MCAxOS4yTDI1NiAxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDE1Mi4yYy05LjgtOC4xLTIwLjYtMTUuMi0zMi0yMXpNMzY4IDk2YzguOCAwIDE2IDcuMiAxNiAxNmwwIDE5MmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTE5MmMwLTguOCA3LjItMTYgMTYtMTZ6bTExMiAxNmwwIDE5MmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTE5MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2ek0xNzYgNDgwYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0wLTExMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYWluU3Vid2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNDMgMCAwIDQzIDAgOTZWMzUyYzAgNDggMzUuMiA4Ny43IDgxLjEgOTQuOWwtNDYgNDZDMjguMSA0OTkuOSAzMy4xIDUxMiA0MyA1MTJIODIuN2M4LjUgMCAxNi42LTMuNCAyMi42LTkuNEwxNjAgNDQ4SDI4OGw1NC42IDU0LjZjNiA2IDE0LjEgOS40IDIyLjYgOS40SDQwNWMxMCAwIDE1LTEyLjEgNy45LTE5LjFsLTQ2LTQ2YzQ2LTcuMSA4MS4xLTQ2LjkgODEuMS05NC45Vjk2YzAtNTMtNDMtOTYtOTYtOTZIOTZ6TTY0IDEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4ek0yNzIgOTZoODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMjcyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTY0IDM1MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0yODgtMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpblRyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODYuOCA0OGMtMTIuMiAwLTIzLjYgNS41LTMxLjIgMTVMNDIuNyA3OUMzNC41IDg5LjMgMTkuNCA5MSA5IDgyLjdTLTMgNTkuNCA1LjMgNDlMMTggMzNDMzQuNyAxMi4yIDYwIDAgODYuOCAwSDM2MS4yYzI2LjcgMCA1MiAxMi4yIDY4LjcgMzNsMTIuOCAxNmM4LjMgMTAuNCA2LjYgMjUuNS0zLjggMzMuN3MtMjUuNSA2LjYtMzMuNy0zLjdMMzkyLjUgNjNjLTcuNi05LjUtMTkuMS0xNS0zMS4yLTE1SDI0OFY5Nmg0MGM1MyAwIDk2IDQzIDk2IDk2VjM1MmMwIDMwLjYtMTQuMyA1Ny44LTM2LjYgNzUuNGw2NS41IDY1LjVjNy4xIDcuMSAyLjEgMTkuMS03LjkgMTkuMUgzNjUuM2MtOC41IDAtMTYuNi0zLjQtMjIuNi05LjRMMjg4IDQ0OEgxNjBsLTU0LjYgNTQuNmMtNiA2LTE0LjEgOS40LTIyLjYgOS40SDQzYy0xMCAwLTE1LTEyLjEtNy45LTE5LjFsNjUuNS02NS41Qzc4LjMgNDA5LjggNjQgMzgyLjYgNjQgMzUyVjE5MmMwLTUzIDQzLTk2IDk2LTk2aDQwVjQ4SDg2Ljh6TTE2MCAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJIMTYwem0zMiAxOTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptOTYgMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzQzIDAgMCA0MyAwIDk2VjM1MmMwIDQ4IDM1LjIgODcuNyA4MS4xIDk0LjlsLTQ2IDQ2QzI4LjEgNDk5LjkgMzMuMSA1MTIgNDMgNTEySDgyLjdjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMMTYwIDQ0OEgyODhsNTQuNiA1NC42YzYgNiAxNC4xIDkuNCAyMi42IDkuNEg0MDVjMTAgMCAxNS0xMi4xIDcuOS0xOS4xbC00Ni00NmM0Ni03LjEgODEuMS00Ni45IDgxLjEtOTQuOVY5NmMwLTUzLTQzLTk2LTk2LTk2SDk2ek02NCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjk2ek0yMjQgMjg4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhbnNnZW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDBjNi41IDAgMTIuMyAzLjkgMTQuOCA5LjlzMS4xIDEyLjktMy41IDE3LjRsLTMxIDMxTDExMiA3OC4xbDctN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTcgNyAxNS4yIDE1LjJDMTg3LjcgMTA3LjYgMjIwLjUgOTYgMjU2IDk2czY4LjMgMTEuNiA5NC45IDMxLjJsNjguOC02OC44LTMxLTMxYy00LjYtNC42LTUuOS0xMS41LTMuNS0xNy40czguMy05LjkgMTQuOC05LjloOTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgNi41LTMuOSAxMi4zLTkuOSAxNC44cy0xMi45IDEuMS0xNy40LTMuNWwtMzEtMzEtNjguOCA2OC44QzQwNC40IDE4Ny43IDQxNiAyMjAuNSA0MTYgMjU2YzAgODAuMi01OSAxNDYuNi0xMzYgMTU4LjJWNDMyaDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0di04SDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGgxNlY0MTQuMkMxNTUgNDAyLjYgOTYgMzM2LjIgOTYgMjU2YzAtMzUuNSAxMS42LTY4LjMgMzEuMi05NC45TDExMiAxNDUuOWwtNyA3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDctN0w1OC4zIDkyLjNsLTMxIDMxYy00LjYgNC42LTExLjUgNS45LTE3LjQgMy41UzAgMTE4LjUgMCAxMTJWMTZDMCA3LjIgNy4yIDAgMTYgMGg5NnpNMzUyIDI1NmE5NiA5NiAwIDEgMCAtMTkyIDAgOTYgOTYgMCAxIDAgMTkyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjMuOCAwSDI4NC4yYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMmg5Nmw3LjItMTQuM0MxNDAuNiA2LjggMTUxLjcgMCAxNjMuOCAwek0zMiAxMjhINDE2TDM5NC44IDQ2N2MtMS42IDI1LjMtMjIuNiA0NS00Ny45IDQ1SDEwMS4xYy0yNS4zIDAtNDYuMy0xOS43LTQ3LjktNDVMMzIgMTI4em0xOTIgNjRjLTYuNCAwLTEyLjUgMi41LTE3IDdsLTgwIDgwYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMzktMzlWNDA4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjczLjlsMzkgMzljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC04MC04MGMtNC41LTQuNS0xMC42LTctMTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhc2hDYW5BcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2My44IDBIMjg0LjJjMTIuMSAwIDIzLjIgNi44IDI4LjYgMTcuN0wzMjAgMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NFMxNC4zIDMyIDMyIDMyaDk2bDcuMi0xNC4zQzE0MC42IDYuOCAxNTEuNyAwIDE2My44IDB6TTMyIDEyOEg0MTZWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6bTE5MiA2NGMtNi40IDAtMTIuNSAyLjUtMTcgN2wtODAgODBjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwzOS0zOVY0MDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyNzMuOWwzOSAzOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTgwLTgwYy00LjUtNC41LTEwLjYtNy0xNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaENhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzUuMiAxNy43QzE0MC42IDYuOCAxNTEuNyAwIDE2My44IDBIMjg0LjJjMTIuMSAwIDIzLjIgNi44IDI4LjYgMTcuN0wzMjAgMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NFMxNC4zIDMyIDMyIDMyaDk2bDcuMi0xNC4zek0zMiAxMjhINDE2VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4em05NiA2NGMtOC44IDAtMTYgNy4yLTE2IDE2VjQzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZ6bTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNlY0MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2em05NiAwYy04LjggMC0xNiA3LjItMTYgMTZWNDMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM1LjIgMTcuN0wxMjggMzJIMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2SDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBsLTcuMi0xNC4zQzMwNy40IDYuOCAyOTYuMyAwIDI4NC4yIDBIMTYzLjhjLTEyLjEgMC0yMy4yIDYuOC0yOC42IDE3Ljd6TTQxNiAxMjhIMzJMNTMuMiA0NjdjMS42IDI1LjMgMjIuNiA0NSA0Ny45IDQ1SDM0Ni45YzI1LjMgMCA0Ni4zLTE5LjcgNDcuOS00NUw0MTYgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmVlQ2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggNDhjMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMTkyaDQwVjEyMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djcyaDI0YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0MzIgMzM2Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OHptNjQgMzJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlY4MGMwLTguOC03LjItMTYtMTYtMTZIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZ6bTE2IDgwYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxNzZjMC04LjgtNy4yLTE2LTE2LTE2SDM2OHpNMzUyIDI3MnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZ6bTE3Ni0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjcyYzAtOC44LTcuMi0xNi0xNi0xNkg1Mjh6TTUxMiAzNjh2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDUyOGMtOC44IDAtMTYgNy4yLTE2IDE2ek0yMjQgMTYwYzAgNi0xIDExLTIgMTZjMjAgMTQgMzQgMzggMzQgNjRjMCA0NS0zNiA4MC04MCA4MEgxNjBWNDgwYzAgMTgtMTUgMzItMzIgMzJjLTE4IDAtMzItMTQtMzItMzJWMzIwSDgwYy00NSAwLTgwLTM1LTgwLTgwYzAtMjYgMTMtNTAgMzMtNjRjLTEtNS0xLTEwLTEtMTZjMC01MyA0Mi05NiA5Ni05NmM1MyAwIDk2IDQzIDk2IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMC42IDUuOUw2MiAxNjkuNGMtMy45IDQuMi02IDkuOC02IDE1LjVDNTYgMTk3LjcgNjYuMyAyMDggNzkuMSAyMDhIMTA0TDMwLjYgMjgxLjRjLTQuMiA0LjItNi42IDEwLTYuNiAxNkMyNCAzMDkuOSAzNC4xIDMyMCA0Ni42IDMyMEg4MEw1LjQgNDA5LjVDMS45IDQxMy43IDAgNDE5IDAgNDI0LjVjMCAxMyAxMC41IDIzLjUgMjMuNSAyMy41SDE5MnYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQ0OEg0MjQuNWMxMyAwIDIzLjUtMTAuNSAyMy41LTIzLjVjMC01LjUtMS45LTEwLjgtNS40LTE1TDM2OCAzMjBoMzMuNGMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNmMwLTYtMi40LTExLjgtNi42LTE2TDM0NCAyMDhoMjQuOWMxMi43IDAgMjMuMS0xMC4zIDIzLjEtMjMuMWMwLTUuNy0yLjEtMTEuMy02LTE1LjVMMjM3LjQgNS45QzIzNCAyLjEgMjI5LjEgMCAyMjQgMHMtMTAgMi4xLTEzLjQgNS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmlhbmdsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMmMxNC4yIDAgMjcuMyA3LjUgMzQuNSAxOS44bDIxNiAzNjhjNy4zIDEyLjQgNy4zIDI3LjcgLjIgNDAuMVM0ODYuMyA0ODAgNDcyIDQ4MEg0MGMtMTQuMyAwLTI3LjYtNy43LTM0LjctMjAuMXMtNy0yNy44IC4yLTQwLjFsMjE2LTM2OEMyMjguNyAzOS41IDI0MS44IDMyIDI1NiAzMnptMCAxMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjI5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE4NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMzIgMjI0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyb3BoeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMEgxNzZjLTI2LjUgMC00OC4xIDIxLjgtNDcuMSA0OC4yYy4yIDUuMyAuNCAxMC42IC43IDE1LjhIMjRDMTAuNyA2NCAwIDc0LjcgMCA4OGMwIDkyLjYgMzMuNSAxNTcgNzguNSAyMDAuN2M0NC4zIDQzLjEgOTguMyA2NC44IDEzOC4xIDc1LjhjMjMuNCA2LjUgMzkuNCAyNiAzOS40IDQ1LjZjMCAyMC45LTE3IDM3LjktMzcuOSAzNy45SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzU3LjlDMzM3IDQ0OCAzMjAgNDMxIDMyMCA0MTAuMWMwLTE5LjYgMTUuOS0zOS4yIDM5LjQtNDUuNmMzOS45LTExIDkzLjktMzIuNyAxMzguMi03NS44QzU0Mi41IDI0NSA1NzYgMTgwLjYgNTc2IDg4YzAtMTMuMy0xMC43LTI0LTI0LTI0SDQ0Ni40Yy4zLTUuMiAuNS0xMC40IC43LTE1LjhDNDQ4LjEgMjEuOCA0MjYuNSAwIDQwMCAwek00OC45IDExMmg4NC40YzkuMSA5MC4xIDI5LjIgMTUwLjMgNTEuOSAxOTAuNmMtMjQuOS0xMS01MC44LTI2LjUtNzMuMi00OC4zYy0zMi0zMS4xLTU4LTc2LTYzLTE0Mi4zek00NjQuMSAyNTQuM2MtMjIuNCAyMS44LTQ4LjMgMzcuMy03My4yIDQ4LjNjMjIuNy00MC4zIDQyLjgtMTAwLjUgNTEuOS0xOTAuNmg4NC40Yy01LjEgNjYuMy0zMS4xIDExMS4yLTYzIDE0Mi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcm93ZWxCcmlja3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjggNC44QzI1MC4zIDEwLjYgMjU2IDIwLjkgMjU2IDMydjcyaDg5YzMuNi0xMy44IDE2LjEtMjQgMzEtMjRoODhjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhIMzc2Yy0xNC45IDAtMjcuNC0xMC4yLTMxLTI0SDI1NnY3MmMwIDExLjEtNS43IDIxLjQtMTUuMiAyNy4ycy0yMS4yIDYuNC0zMS4xIDEuNGwtMTkyLTk2QzYuOCAxNTEuMiAwIDE0MC4xIDAgMTI4czYuOC0yMy4yIDE3LjctMjguNmwxOTItOTZjOS45LTUgMjEuNy00LjQgMzEuMSAxLjR6TTI4OCAyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjU2ek0zMiAzODRoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTkyIDBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcm93ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQzLjkgMjEzLjRMMjQ1LjMgMzEybDY1LjQgNjUuNGM3LjkgNy45IDExLjEgMTkuNCA4LjQgMzAuM3MtMTAuOCAxOS42LTIxLjUgMjIuOWwtMjU2IDgwYy0xMS40IDMuNS0yMy44IC41LTMyLjItNy45Uy0yLjEgNDgxLjggMS41IDQ3MC41bDgwLTI1NmMzLjMtMTAuNyAxMi0xOC45IDIyLjktMjEuNXMyMi40IC41IDMwLjMgOC40TDIwMCAyNjYuN2w5OC42LTk4LjZjLTE0LjMtMTQuNi0xNC4yLTM4IC4zLTUyLjVsOTUuNC05NS40YzI2LjktMjYuOSA3MC41LTI2LjkgOTcuNSAwczI2LjkgNzAuNSAwIDk3LjVsLTk1LjQgOTUuNGMtMTQuNSAxNC41LTM3LjkgMTQuNi01Mi41IC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0Fycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBIMzY4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4Vjk2aDUwLjdjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMNTg5LjMgMTkyYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWMjU2djMyIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDU3NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgyNTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4ek00MTYgMjU2SDU0NFYyMzcuM0w0NjYuNyAxNjBINDE2djk2ek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMzY4LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTI1NyA5NWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzOSAzOUg5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgyNjIuMWwtMzkgMzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw4MC04MGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNTcgOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrRHJvcGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEgzNjhjMjYuNSAwIDQ4IDIxLjUgNDggNDhWOTZoNTAuN2MxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0w1ODkuMyAxOTJjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1YyNTZ2MzIgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTc2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDI1NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05Nkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTQxNiAyNTZINTQ0VjIzNy4zTDQ2Ni43IDE2MEg0MTZ2OTZ6TTE2MCA0NjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0zNjgtNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMjA4IDI3MmMzOS44IDAgNzItMjkuNiA3Mi02NmMwLTI3LTM5LjQtODIuOS01OS45LTExMC4zYy02LjEtOC4yLTE4LjEtOC4yLTI0LjIgMEMxNzUuNCAxMjMgMTM2IDE3OSAxMzYgMjA2YzAgMzYuNSAzMi4yIDY2IDcyIDY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0Zhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDBDODUuNSAwIDY0IDIxLjUgNjQgNDhWOTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINjQgMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDY0IDQ4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDY0IDI0MGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg2NCAxNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg2NCAyMDhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINjRWNDE2YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZIMzg0YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMjg4IDI1NiAyMzcuM2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0w1MTIgMTE0LjdjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdINDE2VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDExMnpNNTQ0IDIzNy4zVjI1Nkg0MTZWMTYwaDUwLjdMNTQ0IDIzNy4zek0xNjAgMzY4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnptMjcyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrRmllbGRVbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMkM2MC43IDMyIDMyIDYwLjcgMzIgOTZ2MzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMydjMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZIMzg0YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMjg4YzAtMzUuMy0yOC43LTY0LTY0LTY0aC00LjJjLS40LTEuMS0uOS0yLjEtMS4zLTMuMkw0ODUuNyAxMDJjLTEwLjMtMjMuMS0zMy4yLTM4LTU4LjUtMzhIMzc1LjRDMzY0LjQgNDQuOSAzNDMuNyAzMiAzMjAgMzJIOTZ6bTI4OCA5Nmg0My4ybDQyLjcgOTZIMzg0VjEyOHpNMTEyIDM4NGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0zNjgtNDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2ek0yNTMuMyAxMzUuMWwzNC43IDUyVjE0NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djk2YzAgNy4xLTQuNiAxMy4zLTExLjQgMTUuM3MtMTQtLjYtMTcuOS02LjRsLTM0LjctNTJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE0NGMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6TTEyOCAxNDR2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYxNDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tGaWVsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA5NmMwLTM1LjMgMjguNy02NCA2NC02NEgzMjBjMjMuNyAwIDQ0LjQgMTIuOSA1NS40IDMyaDUxLjhjMjUuMyAwIDQ4LjIgMTQuOSA1OC41IDM4bDUyLjggMTE4LjhjLjUgMS4xIC45IDIuMSAxLjMgMy4ySDU0NGMzNS4zIDAgNjQgMjguNyA2NCA2NHYzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1NzZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZIMjU2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyVjk2ek0zODQgMjI0aDg1LjlsLTQyLjctOTZIMzg0djk2ek0xNjAgNDMyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMzY4LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MEMwIDM1LjggMzUuOCAwIDgwIDBINDMyYzQ0LjIgMCA4MCAzNS44IDgwIDgwVjM2OGMwIDI2LjItMTIuNiA0OS40LTMyIDY0djQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQxNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQ4SDEyOHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDMyQzEyLjYgNDE3LjQgMCAzOTQuMiAwIDM2OFY4MHptMTI5LjkgNzIuMkwxMTIgMjI0SDQwMGwtMTcuOS03MS44QzM3OC41IDEzOCAzNjUuNyAxMjggMzUxIDEyOEgxNjFjLTE0LjcgMC0yNy41IDEwLTMxIDI0LjJ6TTEyOCAzMjBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMjg4IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDM2OGMyNi41IDAgNDggMjEuNSA0OCA0OFY5Nmg1MC43YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDU4OS4zIDE5MmMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zVjI1NnYzMiA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1NzZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZIMjU2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OHpNNDE2IDI1Nkg1NDRWMjM3LjNMNDY2LjcgMTYwSDQxNnY5NnpNMTYwIDQ2NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTM2OC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNzYgODB2NDhsLTQ4IDBjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxOTJoNDhjOC44IDAgMTYtNy4yIDE2LTE2VjE0NGMwLTguOC03LjItMTYtMTYtMTZIMjQwVjgwYzAtOC44LTcuMi0xNi0xNi0xNkgxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tNb25zdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCA2NHY2NEg0MTZMMzY4IDY0SDI4OHpNNDE5LjIgMjUuNkw0OTYgMTI4aDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyYy0yOS4yLTM4LjktNzUuNy02NC0xMjgtNjRzLTk4LjggMjUuMS0xMjggNjRIMjg4Yy0yOS4yLTM4LjktNzUuNy02NC0xMjgtNjRzLTk4LjggMjUuMS0xMjggNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDIyNFY0OGMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyMC4xIDAgMzkuMSA5LjUgNTEuMiAyNS42ek0xNTIgMjU2aDE2YzEyLjEgMCAyMi4xIDguOSAyMy44IDIwLjZjNy42IDIuMiAxNC45IDUuMyAyMS43IDljOS40LTcgMjIuOC02LjMgMzEuMyAyLjNsMTEuMyAxMS4zYzguNiA4LjYgOS4zIDIxLjkgMi4zIDMxLjNjMy43IDYuOCA2LjggMTQuMSA5IDIxLjdjMTEuNiAxLjcgMjAuNiAxMS43IDIwLjYgMjMuOHYxNmMwIDEyLjEtOC45IDIyLjEtMjAuNiAyMy44Yy0yLjIgNy42LTUuMyAxNC45LTkgMjEuN2M3IDkuNCA2LjMgMjIuOC0yLjMgMzEuM2wtMTEuMyAxMS4zYy04LjYgOC42LTIxLjkgOS4zLTMxLjMgMi4yYy02LjggMy43LTE0LjEgNi44LTIxLjcgOUMxOTAuMSA1MDMuMSAxODAuMSA1MTIgMTY4IDUxMkgxNTJjLTEyLjEgMC0yMi4xLTguOS0yMy44LTIwLjZjLTcuNi0yLjItMTQuOS01LjMtMjEuNy05Yy05LjQgNy4xLTIyLjggNi4zLTMxLjMtMi4yTDYzLjggNDY4LjljLTguNi04LjYtOS4zLTIxLjktMi4zLTMxLjNjLTMuNy02LjktNi44LTE0LjEtOS0yMS44QzQwLjkgNDE0LjEgMzIgNDA0LjEgMzIgMzkyVjM3NmMwLTEyLjEgOC45LTIyLjEgMjAuNi0yMy44YzIuMi03LjYgNS4zLTE0LjkgOS0yMS44Yy03LTkuNC02LjMtMjIuOCAyLjMtMzEuM2wxMS4zLTExLjNjOC42LTguNiAyMS45LTkuMyAzMS4zLTIuM2M2LjgtMy43IDE0LjEtNi44IDIxLjctOWMxLjctMTEuNiAxMS43LTIwLjYgMjMuOC0yMC42em04IDE3NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTQ0OC4yIDI3Ni42YzEuNy0xMS42IDExLjctMjAuNiAyMy44LTIwLjZoMTZjMTIuMSAwIDIyLjEgOC45IDIzLjggMjAuNmM3LjYgMi4yIDE0LjkgNS4zIDIxLjggOWM5LjQtNyAyMi44LTYuMyAzMS4zIDIuM2wxMS4zIDExLjNjOC42IDguNiA5LjMgMjEuOSAyLjIgMzEuM2MzLjcgNi44IDYuOCAxNC4xIDkgMjEuN2MxMS42IDEuNyAyMC42IDExLjcgMjAuNiAyMy44djE2YzAgMTIuMS04LjkgMjIuMS0yMC42IDIzLjhjLTIuMiA3LjYtNS4zIDE0LjktOSAyMS43YzcgOS40IDYuMyAyMi44LTIuMiAzMS4zbC0xMS4zIDExLjNjLTguNiA4LjYtMjEuOSA5LjMtMzEuMyAyLjJjLTYuOSAzLjctMTQuMSA2LjgtMjEuOCA5QzUxMC4xIDUwMy4xIDUwMC4xIDUxMiA0ODggNTEySDQ3MmMtMTIuMSAwLTIyLjEtOC45LTIzLjgtMjAuNmMtNy42LTIuMi0xNC45LTUuMy0yMS43LTljLTkuNCA3LjEtMjIuOCA2LjMtMzEuMy0yLjJsLTExLjMtMTEuM2MtOC42LTguNi05LjMtMjEuOS0yLjItMzEuM2MtMy43LTYuOS02LjgtMTQuMS05LTIxLjhDMzYwLjkgNDE0LjEgMzUyIDQwNC4xIDM1MiAzOTJWMzc2YzAtMTIuMSA4LjktMjIuMSAyMC42LTIzLjhjMi4yLTcuNiA1LjMtMTQuOSA5LTIxLjhjLTctOS40LTYuMy0yMi44IDIuMi0zMS4zbDExLjMtMTEuM2M4LjYtOC42IDIxLjktOS4zIDMxLjMtMi4zYzYuOC0zLjcgMTQuMS02LjggMjEuNy05ek01MjggMzg0YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTW92aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWMzA0djgwIDE2YzAgNDQuMiAzNS44IDgwIDgwIDgwYzI2LjIgMCA0OS40LTEyLjYgNjQtMzJjMTQuNiAxOS40IDM3LjggMzIgNjQgMzJjNDQuMiAwIDgwLTM1LjggODAtODBjMC01LjUtLjYtMTAuOC0xLjYtMTZINDE2aDMzLjZjLTEgNS4yLTEuNiAxMC41LTEuNiAxNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYyODggMjcyIDI2MS43YzAtOS4yLTMuMi0xOC4yLTktMjUuM2wtNTguOC03MS44Yy0xMC42LTEzLTI2LjUtMjAuNS00My4zLTIwLjVINDgwVjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01ODUgMjU2SDQ4MFYxOTJoNDguOGMyLjQgMCA0LjcgMS4xIDYuMiAyLjlMNTg1IDI1NnpNNTI4IDM2OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTE3NiA0MDBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNODAgMzY4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tQaWNrdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4LjYgOTZsNzYuOCA5NkgyODhWOTZoODAuNnpNMjI0IDgwVjE5Mkg2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjUuMWMtLjcgNS4yLTEuMSAxMC42LTEuMSAxNmMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyYzAtNS40LS40LTEwLjgtMS4xLTE2aDY2LjNjLS43IDUuMi0xLjEgMTAuNi0xLjEgMTZjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJzMTEyLTUwLjEgMTEyLTExMmMwLTUuNC0uNC0xMC44LTEuMS0xNkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDUyNy40TDQxOC42IDU2Yy0xMi4xLTE1LjItMzAuNS0yNC01MC0yNEgyNzJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4em0wIDI4OGE0OCA0OCAwIDEgMSAtOTYgMCA0OCA0OCAwIDEgMSA5NiAwem0yODggMGE0OCA0OCAwIDEgMSAtOTYgMCA0OCA0OCAwIDEgMSA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja1BsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMCAwYy0zMC42IDAtNTYgNTQuNy01NiA4Ni4xVjE5Mi41TDcuOCAyNzQuM0MyLjkgMjc3LjIgMCAyODIuNCAwIDI4OHY2NGMwIDUuMSAyLjQgOS44IDYuNCAxMi44czkuMyAzLjkgMTQuMSAyLjVsMTIzLjQtMzd2ODEuMmwtNTAgNDBjLTMuOCAzLTYgNy42LTYgMTIuNXYzMmMwIDUuMSAyLjUgMTAgNi42IDEzczkuNSAzLjggMTQuNCAyLjJMMjAwIDQ4MC45IDI5MC40IDUxMWMtMS42LTQuNy0yLjQtOS44LTIuNC0xNVY0NjMuNGMtMTguMi0xMC41LTMwLjctMjkuNy0zMS45LTUxLjhsLS4xLS4xVjQwOCAzMjUuNSAxODRsMC0xLjEgMCAwVjg2LjFDMjU2IDU0LjcgMjMxLjUgMCAyMDAgMHptODggMTc2VjQwMGMwIDIwLjkgMTMuNCAzOC43IDMyIDQ1LjNWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjQ0OEg1NDR2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNDQ1LjNjMTguNi02LjYgMzItMjQuNCAzMi00NS4zVjE3NmMwLTI2LjUtMjEuNS00OC00OC00OEgzMzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4em03OS44IDc4LjdjMy4zLTguNyAxMS4yLTE0LjcgMjAuNS0xNC43SDUzOS43YzkuMiAwIDE3LjIgNiAyMC41IDE0LjdMNTc2IDMwNEgzNTJsMTUuOC00OS4zek01NjggMzUyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMzM2IDM3NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja1JhbXBCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDBWNDAwYzAgNjEuOS01MC4xIDExMi0xMTIgMTEyYy02MSAwLTExMC41LTQ4LjctMTEyLTEwOS4zTDQ4LjQgNTAyLjljLTE3LjEgNC42LTM0LjYtNS40LTM5LjMtMjIuNXM1LjQtMzQuNiAyMi41LTM5LjNMMzUyIDM1My44VjY0YzAtMzUuMyAyOC43LTY0IDY0LTY0SDY0MHpNNTc2IDQwMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0yMy4xIDIwNy43Yy00LjYtMTcuMSA1LjYtMzQuNiAyMi42LTM5LjJsNDYuNC0xMi40IDIwLjcgNzcuM2MyLjMgOC41IDExLjEgMTMuNiAxOS42IDExLjNsMzAuOS04LjNjOC41LTIuMyAxMy42LTExLjEgMTEuMy0xOS42bC0yMC43LTc3LjMgNDYuNC0xMi40YzE3LjEtNC42IDM0LjYgNS42IDM5LjIgMjIuNmw0MS40IDE1NC41YzQuNiAxNy4xLTUuNiAzNC42LTIyLjYgMzkuMkwxMDMuNyAzODQuOWMtMTcuMSA0LjYtMzQuNi01LjYtMzkuMi0yMi42TDIzLjEgMjA3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjM2OGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg2NGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2SDM4NGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjI4OCAyNTYgMjM3LjNjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNTEyIDExNC43Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQxNlY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNDE2IDE2MGg1MC43TDU0NCAyMzcuM1YyNTZINDE2VjE2MHpNMTEyIDQxNmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0zNjgtNDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguMyAyNDEuM0wxNS4xIDIwMC42Yy05LjItMTYuMi04LjQtMzYuNSA0LjUtNTBDNjEuNCAxMDYuOCAxNDQuNyA0OCAyNTYgNDhzMTk0LjYgNTguOCAyMzYuNCAxMDIuNmMxMi45IDEzLjUgMTMuNyAzMy44IDQuNSA1MGwtMjMuMSA0MC43Yy03LjUgMTMuMi0yMy4zIDE5LjMtMzcuOCAxNC42bC04MS4xLTI2LjZjLTEzLjEtNC4zLTIyLTE2LjYtMjItMzAuNFYxNDRjLTQ5LjYtMTguMS0xMDQtMTguMS0xNTMuNiAwdjU0LjhjMCAxMy44LTguOSAyNi4xLTIyIDMwLjRMNzYuMSAyNTUuOGMtMTQuNSA0LjctMzAuMy0xLjQtMzcuOC0xNC42ek0zMiAzMzZjMC04LjggNy4yLTE2IDE2LTE2SDgwYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINDhjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZ6bTAgOTZjMC04LjggNy4yLTE2IDE2LTE2SDgwYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINDhjLTguOCAwLTE2LTcuMi0xNi0xNlY0MzJ6TTE0NCAzMjBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZ6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNnptMTYgODBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0MzJjLTguOCAwLTE2LTcuMi0xNi0xNlY0MzJjMC04LjggNy4yLTE2IDE2LTE2ek0xMjggNDMyYzAtOC44IDcuMi0xNiAxNi0xNkgzNjhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNlY0MzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR1cmtpc2hMaXJhU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY5OS4zTDI0Ny4yIDY1LjJjMTctNC45IDM0LjcgNSAzOS42IDIycy01IDM0LjctMjIgMzkuNkwxMjggMTY1Ljl2MjkuNGwxMTkuMi0zNC4xYzE3LTQuOSAzNC43IDUgMzkuNiAyMnMtNSAzNC43LTIyIDM5LjZMMTI4IDI2MS45VjQxNmg2My44YzY4LjIgMCAxMjQuNC01My41IDEyNy44LTEyMS42bC40LThjLjktMTcuNyAxNS45LTMxLjIgMzMuNi0zMC40czMxLjIgMTUuOSAzMC40IDMzLjZsLS40IDhDMzc4LjUgMzk5LjggMjk0LjEgNDgwIDE5MS44IDQ4MEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjgwLjFsLTIzLjIgNi42Yy0xNyA0LjktMzQuNy01LTM5LjYtMjJzNS0zNC43IDIyLTM5LjZMNjQgMjEzLjZWMTg0LjFsLTIzLjIgNi42Yy0xNyA0LjktMzQuNy01LTM5LjYtMjJzNS0zNC43IDIyLTM5LjZMNjQgMTE3LjZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR1cm5Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MCAzMzQuNWMzLjggOC44IDIgMTktNC42IDI2bC0xMzYgMTQ0Yy00LjUgNC44LTEwLjggNy41LTE3LjQgNy41cy0xMi45LTIuNy0xNy40LTcuNWwtMTM2LTE0NGMtNi42LTctOC40LTE3LjItNC42LTI2czEyLjUtMTQuNSAyMi0xNC41aDg4bDAtMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRWMzJDMCAxNC4zIDE0LjMgMCAzMiAwbDgwIDBjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhsMCAxOTJoODhjOS42IDAgMTguMiA1LjcgMjIgMTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHVyblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MCAxNzcuNWMzLjgtOC44IDItMTktNC42LTI2bC0xMzYtMTQ0QzIwNC45IDIuNyAxOTguNiAwIDE5MiAwcy0xMi45IDIuNy0xNy40IDcuNWwtMTM2IDE0NGMtNi42IDctOC40IDE3LjItNC42IDI2czEyLjUgMTQuNSAyMiAxNC41aDg4bDAgMTkyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw4MCAwYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4bDAtMTkyaDg4YzkuNiAwIDE4LjItNS43IDIyLTE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0VjM1Mkg1NzZWNjRINjR6TTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDU3NmMzNS4zIDAgNjQgMjguNyA2NCA2NFYzNTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0xMjggNDQ4SDUxMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjg4YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4czEyOC01Ny4zIDEyOC0xMjhWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYyODhjMCAxMDYtODYgMTkyLTE5MiAxOTJTMCAzOTQgMCAyODhWNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJlbGxhQmVhY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ2LjMgMjcxLjhsLTYwLjEtMjEuOUwyMTQgNDQ4SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyODIuMWw2NC4xLTE3Ni4yem0xMjEuMS0uMmwtMy4zIDkuMSA2Ny43IDI0LjZjMTguMSA2LjYgMzgtNC4yIDM5LjYtMjMuNGM2LjUtNzguNS0yMy45LTE1NS41LTgwLjgtMjA4LjVjMiA4IDMuMiAxNi4zIDMuNCAyNC44bC4yIDZjMS44IDU3LTcuMyAxMTMuOC0yNi44IDE2Ny40ek00NjIgOTkuMWMtMS4xLTM0LjQtMjIuNS02NC44LTU0LjQtNzcuNGMtLjktLjQtMS45LS43LTIuOC0xLjFjLTMzLTExLjctNjkuOC0yLjQtOTMuMSAyMy44bC00IDQuNUMyNzIuNCA4OC4zIDI0NSAxMzQuMiAyMjYuOCAxODRsLTMuMyA5LjFMNDM0IDI2OS43bDMuMy05LjFjMTguMS00OS44IDI2LjYtMTAyLjUgMjQuOS0xNTUuNWwtLjItNnpNMTA3LjIgMTEyLjljLTExLjEgMTUuNy0yLjggMzYuOCAxNS4zIDQzLjRsNzEgMjUuOCAzLjMtOS4xYzE5LjUtNTMuNiA0OS4xLTEwMyA4Ny4xLTE0NS41bDQtNC41YzYuMi02LjkgMTMuMS0xMyAyMC41LTE4LjJjLTc5LjYgMi41LTE1NC43IDQyLjItMjAxLjIgMTA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbWJyZWxsYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0OS43QzQ1MS44IDYzLjQgNTU3LjcgMTYxIDU3My45IDI4NS45YzIgMTUuNi0xNy4zIDI0LjQtMjcuOCAxMi43QzUzMi4xIDI4MyA1MDQuOCAyNzIgNDgwIDI3MmMtMzguNyAwLTcxIDI3LjUtNzguNCA2NC4xYy0xLjcgOC43LTguNyAxNS45LTE3LjYgMTUuOXMtMTUuOC03LjItMTcuNi0xNS45QzM1OSAyOTkuNSAzMjYuNyAyNzIgMjg4IDI3MnMtNzEgMjcuNS03OC40IDY0LjFjLTEuNyA4LjctOC43IDE1LjktMTcuNiAxNS45cy0xNS44LTcuMi0xNy42LTE1LjlDMTY3IDI5OS41IDEzNC43IDI3MiA5NiAyNzJjLTI0LjggMC01Mi4xIDExLTY2LjEgMjYuN0MxOS40IDMxMC40IC4xIDMwMS41IDIuMSAyODUuOUMxOC4zIDE2MSAxMjQuMiA2My40IDI1NiA0OS43VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0wIDMwNGMxMi4zIDAgMjMuNSA0LjYgMzIgMTIuMlY0MzAuNmMwIDQ1LTM2LjUgODEuNC04MS40IDgxLjRjLTMwLjggMC01OS0xNy40LTcyLjgtNDVsLTIuMy00LjdjLTcuOS0xNS44LTEuNS0zNSAxNC4zLTQyLjlzMzUtMS41IDQyLjkgMTQuM2wyLjMgNC43YzMgNS45IDkgOS42IDE1LjYgOS42YzkuNiAwIDE3LjQtNy44IDE3LjQtMTcuNFYzMTYuMmM4LjUtNy42IDE5LjctMTIuMiAzMi0xMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmRlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTI4VjIyNGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2Vjk2SDMwNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODRWMjI0YzAgODguNC03MS42IDE2MC0xNjAgMTYwcy0xNjAtNzEuNi0xNjAtMTYwVjk2SDQ4QzMwLjMgOTYgMTYgODEuNyAxNiA2NHpNMCA0NDhjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5pdmVyc2FsQWNjZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTYxLjUtODYuMWMtMTIuMi01LjItMjYuMyAuNC0zMS41IDEyLjZzLjQgMjYuMyAxMi42IDMxLjVsMTEuOSA1LjFjMTcuMyA3LjQgMzUuMiAxMi45IDUzLjYgMTYuM3Y1MC4xYzAgNC4zLS43IDguNi0yLjEgMTIuNmwtMjguNyA4Ni4xYy00LjIgMTIuNiAyLjYgMjYuMiAxNS4yIDMwLjRzMjYuMi0yLjYgMzAuNC0xNS4ybDI0LjQtNzMuMmMxLjMtMy44IDQuOC02LjQgOC44LTYuNHM3LjYgMi42IDguOCA2LjRsMjQuNCA3My4yYzQuMiAxMi42IDE3LjggMTkuNCAzMC40IDE1LjJzMTkuNC0xNy44IDE1LjItMzAuNGwtMjguNy04Ni4xYy0xLjQtNC4xLTIuMS04LjMtMi4xLTEyLjZWMjM1LjVjMTguNC0zLjUgMzYuMy04LjkgNTMuNi0xNi4zbDExLjktNS4xYzEyLjItNS4yIDE3LjgtMTkuMyAxMi42LTMxLjVzLTE5LjMtMTcuOC0zMS41LTEyLjZMMzM4LjcgMTc1Yy0yNi4xIDExLjItNTQuMiAxNy04Mi43IDE3cy01Ni41LTUuOC04Mi43LTE3bC0xMS45LTUuMXpNMjU2IDE2MGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVubG9ja0tleWhvbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDY0Yy00NC4yIDAtODAgMzUuOC04MCA4MHY0OEgzODRjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyNTZjMC0zNS4zIDI4LjctNjQgNjQtNjRIODBWMTQ0QzgwIDY0LjUgMTQ0LjUgMCAyMjQgMGM1Ny41IDAgMTA3IDMzLjcgMTMwLjEgODIuM2M3LjYgMTYgLjggMzUuMS0xNS4yIDQyLjZzLTM1LjEgLjgtNDIuNi0xNS4yQzI4My40IDgyLjYgMjU1LjkgNjQgMjI0IDY0em0zMiAzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDE0NGMwLTQ0LjIgMzUuOC04MCA4MC04MGMzMS45IDAgNTkuNCAxOC42IDcyLjMgNDUuN2M3LjYgMTYgMjYuNyAyMi44IDQyLjYgMTUuMnMyMi44LTI2LjcgMTUuMi00Mi42QzMzMSAzMy43IDI4MS41IDAgMjI0IDBDMTQ0LjUgMCA4MCA2NC41IDgwIDE0NHY0OEg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFYyNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTQ0VjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXBEb3duTGVmdFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OC42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44aDMydjk2SDEyOFYxOTJjMC0xMi45LTcuOC0yNC42LTE5LjgtMjkuNnMtMjUuNy0yLjItMzQuOSA2LjlsLTY0IDY0Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGM5LjIgOS4yIDIyLjkgMTEuOSAzNC45IDYuOXMxOS44LTE2LjYgMTkuOC0yOS42VjI4OGg5NnY5NkgxOTJjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44SDI4OFYyODhoOTZ2MzJjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTkuMi05LjItMjIuOS0xMS45LTM0LjktNi45cy0xOS44IDE2LjYtMTkuOCAyOS42djMySDI4OFYxMjhoMzJjMTIuOSAwIDI0LjYtNy44IDI5LjYtMTkuOHMyLjItMjUuNy02LjktMzQuOWwtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDUuNiA3LjdDMTQxIDIuOCAxMzQuNyAwIDEyOCAwcy0xMyAyLjgtMTcuNiA3LjdsLTEwNCAxMTJjLTYuNSA3LTguMiAxNy4yLTQuNCAyNS45UzE0LjUgMTYwIDI0IDE2MEg4MFYzNTJIMjRjLTkuNSAwLTE4LjIgNS43LTIyIDE0LjRzLTIuMSAxOC45IDQuNCAyNS45bDEwNCAxMTJjNC41IDQuOSAxMC45IDcuNyAxNy42IDcuN3MxMy0yLjggMTcuNi03LjdsMTA0LTExMmM2LjUtNyA4LjItMTcuMiA0LjQtMjUuOXMtMTIuNS0xNC40LTIyLTE0LjRIMTc2VjE2MGg1NmM5LjUgMCAxOC4yLTUuNyAyMi0xNC40czIuMS0xOC45LTQuNC0yNS45bC0xMDQtMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE4IDE3Ny41YzMuOC04LjggMi0xOS00LjYtMjZsLTEzNi0xNDRDMTcyLjkgMi43IDE2Ni42IDAgMTYwIDBzLTEyLjkgMi43LTE3LjQgNy41bC0xMzYgMTQ0Yy02LjYgNy04LjQgMTcuMi00LjYgMjZTMTQuNCAxOTIgMjQgMTkySDk2bDAgMjg4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMjg4aDcyYzkuNiAwIDE4LjItNS43IDIyLTE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwUmlnaHRBbmREb3duTGVmdEZyb21DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDBINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0VjE2OGMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC0zOS0zOS04NyA4N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTMyLTMyYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw4Ny04N0wzMjcgNDFjLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJTMzM0LjMgMCAzNDQgMHpNMTY4IDUxMkgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMzQ0YzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMmwzOSAzOSA4Ny04N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwzMiAzMmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtODcgODcgMzkgMzljNi45IDYuOSA4LjkgMTcuMiA1LjIgMjYuMnMtMTIuNSAxNC44LTIyLjIgMTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXBSaWdodEZyb21TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDBjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45TDM3MC43IDk2IDIwMS40IDI2NS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDQxNiAxNDEuM2w0MS40IDQxLjRjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzNTJ6TTgwIDMyQzM1LjggMzIgMCA2Ny44IDAgMTEyVjQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0MDBjNDQuMiAwIDgwLTM1LjggODAtODBWMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjQzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2SDE5MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxMDkuM1YzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTA5LjNsLTczLjQgNzMuNGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTI4LTEyOGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxMjggMTI4YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDI4OCAxMDkuM3pNNjQgMzUySDE5MmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NHYzMmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNDE2YzAtMzUuMyAyOC43LTY0IDY0LTY0ek00MzIgNDU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckFzdHJvbmF1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzAuNyA5Ni4xQzM0Ni4xIDM5LjUgMjg5LjcgMCAyMjQgMFMxMDEuOSAzOS41IDc3LjMgOTYuMUM2MC45IDk3LjUgNDggMTExLjIgNDggMTI4djY0YzAgMTYuOCAxMi45IDMwLjUgMjkuMyAzMS45QzEwMS45IDI4MC41IDE1OC4zIDMyMCAyMjQgMzIwczEyMi4xLTM5LjUgMTQ2LjctOTYuMWMxNi40LTEuNCAyOS4zLTE1LjEgMjkuMy0zMS45VjEyOGMwLTE2LjgtMTIuOS0zMC41LTI5LjMtMzEuOXpNMzM2IDE0NHYxNmMwIDUzLTQzIDk2LTk2IDk2SDIwOGMtNTMgMC05Ni00My05Ni05NlYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhIMjg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xODkuMyAxNjIuN2wtNi0yMS4yYy0uOS0zLjMtMy45LTUuNS03LjMtNS41cy02LjQgMi4yLTcuMyA1LjVsLTYgMjEuMi0yMS4yIDZjLTMuMyAuOS01LjUgMy45LTUuNSA3LjNzMi4yIDYuNCA1LjUgNy4zbDIxLjIgNiA2IDIxLjJjLjkgMy4zIDMuOSA1LjUgNy4zIDUuNXM2LjQtMi4yIDcuMy01LjVsNi0yMS4yIDIxLjItNmMzLjMtLjkgNS41LTMuOSA1LjUtNy4zcy0yLjItNi40LTUuNS03LjNsLTIxLjItNnpNMTEyLjcgMzE2LjVDNDYuNyAzNDIuNiAwIDQwNyAwIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJIMTI4VjQ0OGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRsOTguMyAwYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43YzAtNzUuMy00Ni43LTEzOS43LTExMi43LTE2NS44QzMwMy45IDMzOC44IDI2NS41IDM1MiAyMjQgMzUycy03OS45LTEzLjItMTExLjMtMzUuNXpNMTc2IDQ0OGMtOC44IDAtMTYgNy4yLTE2IDE2djQ4aDMyVjQ2NGMwLTguOC03LjItMTYtMTYtMTZ6bTk2IDMyYTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGExMjggMTI4IDAgMSAxIDI1NiAwQTEyOCAxMjggMCAxIDEgOTYgMTI4ek0wIDQ4Mi4zQzAgMzgzLjggNzkuOCAzMDQgMTc4LjMgMzA0aDkxLjRDMzY4LjIgMzA0IDQ0OCAzODMuOCA0NDggNDgyLjNjMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjN6TTYyNSAxNzdMNDk3IDMwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNDcgNDdMNTkxIDE0M2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMGExMjggMTI4IDAgMSAxIDAgMjU2QTEyOCAxMjggMCAxIDEgMjI0IDB6TTE3OC4zIDMwNGg5MS40YzIwLjYgMCA0MC40IDMuNSA1OC44IDkuOUMzMjMgMzMxIDMyMCAzNDkuMSAzMjAgMzY4YzAgNTkuNSAyOS41IDExMi4xIDc0LjggMTQ0SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zQzAgMzgzLjggNzkuOCAzMDQgMTc4LjMgMzA0ek0zNTIgMzY4YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTE0NC04MGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmg0OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg1MTJWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckRvY3RvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgMjI0IDBhMTI4IDEyOCAwIDEgMCAwIDI1NnptLTk2IDU1LjJDNTQgMzMyLjkgMCA0MDEuMyAwIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJINDE4LjNjMTYuNCAwIDI5LjctMTMuMyAyOS43LTI5LjdjMC04MS01NC0xNDkuNC0xMjgtMTcxLjFWMzYyYzI3LjYgNy4xIDQ4IDMyLjIgNDggNjJ2NDBjMCA4LjgtNy4yIDE2LTE2IDE2SDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNlY0MjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2MjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjU2Yy04LjggMC0xNi03LjItMTYtMTZWNDI0YzAtMjkuOCAyMC40LTU0LjkgNDgtNjJWMzA0LjljLTYtLjYtMTIuMS0uOS0xOC4zLS45SDE3OC4zYy02LjIgMC0xMi4zIC4zLTE4LjMgLjl2NjUuNGMyMy4xIDYuOSA0MCAyOC4zIDQwIDUzLjdjMCAzMC45LTI1LjEgNTYtNTYgNTZzLTU2LTI1LjEtNTYtNTZjMC0yNS40IDE2LjktNDYuOCA0MC01My43VjMxMS4yek0xNDQgNDQ4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckdlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBhMTI4IDEyOCAwIDEgMSAwIDI1NkExMjggMTI4IDAgMSAxIDIyNCAwek0xNzguMyAzMDRoOTEuNGMxMS44IDAgMjMuNCAxLjIgMzQuNSAzLjNjLTIuMSAxOC41IDcuNCAzNS42IDIxLjggNDQuOGMtMTYuNiAxMC42LTI2LjcgMzEuNi0yMCA1My4zYzQgMTIuOSA5LjQgMjUuNSAxNi40IDM3LjZzMTUuMiAyMy4xIDI0LjQgMzNjMTUuNyAxNi45IDM5LjYgMTguNCA1Ny4yIDguN3YuOWMwIDkuMiAyLjcgMTguNSA3LjkgMjYuM0gyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNHpNNDM2IDIxOC4yYzAtNyA0LjUtMTMuMyAxMS4zLTE0LjhjMTAuNS0yLjQgMjEuNS0zLjcgMzIuNy0zLjdzMjIuMiAxLjMgMzIuNyAzLjdjNi44IDEuNSAxMS4zIDcuOCAxMS4zIDE0Ljh2MTcuN2MwIDcuOCA0LjggMTQuOCAxMS42IDE4LjdjNi44IDMuOSAxNS4xIDQuNSAyMS44IC42bDEzLjgtNy45YzYuMS0zLjUgMTMuNy0yLjcgMTguNSAyLjRjNy42IDguMSAxNC4zIDE3LjIgMjAuMSAyNy4yczEwLjMgMjAuNCAxMy41IDMxYzIuMSA2LjctMS4xIDEzLjctNy4yIDE3LjJsLTE0LjQgOC4zYy02LjUgMy43LTEwIDEwLjktMTAgMTguNHMzLjUgMTQuNyAxMCAxOC40bDE0LjQgOC4zYzYuMSAzLjUgOS4yIDEwLjUgNy4yIDE3LjJjLTMuMyAxMC42LTcuOCAyMS0xMy41IDMxcy0xMi41IDE5LjEtMjAuMSAyNy4yYy00LjggNS4xLTEyLjUgNS45LTE4LjUgMi40bC0xMy44LTcuOWMtNi43LTMuOS0xNS4xLTMuMy0yMS44IC42Yy02LjggMy45LTExLjYgMTAuOS0xMS42IDE4Ljd2MTcuN2MwIDctNC41IDEzLjMtMTEuMyAxNC44Yy0xMC41IDIuNC0yMS41IDMuNy0zMi43IDMuN3MtMjIuMi0xLjMtMzIuNy0zLjdjLTYuOC0xLjUtMTEuMy03LjgtMTEuMy0xNC44VjQ2Ny44YzAtNy45LTQuOS0xNC45LTExLjctMTguOWMtNi44LTMuOS0xNS4yLTQuNS0yMi0uNmwtMTMuNSA3LjhjLTYuMSAzLjUtMTMuNyAyLjctMTguNS0yLjRjLTcuNi04LjEtMTQuMy0xNy4yLTIwLjEtMjcuMnMtMTAuMy0yMC40LTEzLjUtMzFjLTIuMS02LjcgMS4xLTEzLjcgNy4yLTE3LjJsMTQtOC4xYzYuNS0zLjggMTAuMS0xMS4xIDEwLjEtMTguNnMtMy41LTE0LjgtMTAuMS0xOC42bC0xNC04LjFjLTYuMS0zLjUtOS4yLTEwLjUtNy4yLTE3LjJjMy4zLTEwLjYgNy43LTIxIDEzLjUtMzFzMTIuNS0xOS4xIDIwLjEtMjcuMmM0LjgtNS4xIDEyLjQtNS45IDE4LjUtMi40bDEzLjYgNy44YzYuOCAzLjkgMTUuMiAzLjMgMjItLjZjNi45LTMuOSAxMS43LTExIDExLjctMTguOVYyMTguMnptOTIuMSAxMzMuNWE0OC4xIDQ4LjEgMCAxIDAgLTk2LjEgMCA0OC4xIDQ4LjEgMCAxIDAgOTYuMSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyR3JhZHVhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE5LjMgLjVjMy4xLS42IDYuMy0uNiA5LjQgMGwyMDAgNDBDNDM5LjkgNDIuNyA0NDggNTIuNiA0NDggNjRzLTguMSAyMS4zLTE5LjMgMjMuNUwzNTIgMTAyLjlWMTYwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4VjEwMi45TDQ4IDkzLjN2NjUuMWwxNS43IDc4LjRjLjkgNC43LS4zIDkuNi0zLjMgMTMuM3MtNy42IDUuOS0xMi40IDUuOUgxNmMtNC44IDAtOS4zLTIuMS0xMi40LTUuOXMtNC4zLTguNi0zLjMtMTMuM0wxNiAxNTguNFY4Ni42QzYuNSA4My4zIDAgNzQuMyAwIDY0QzAgNTIuNiA4LjEgNDIuNyAxOS4zIDQwLjVsMjAwLTQwek0xMTEuOSAzMjcuN2MxMC41LTMuNCAyMS44IC40IDI5LjQgOC41bDcxIDc1LjVjNi4zIDYuNyAxNyA2LjcgMjMuMyAwbDcxLTc1LjVjNy42LTguMSAxOC45LTExLjkgMjkuNC04LjVDNDAxIDM0OC42IDQ0OCA0MDkuNCA0NDggNDgxLjNjMCAxNy0xMy44IDMwLjctMzAuNyAzMC43SDMwLjdDMTMuOCA1MTIgMCA0OTguMiAwIDQ4MS4zYzAtNzEuOSA0Ny0xMzIuNyAxMTEuOS0xNTMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGExMjggMTI4IDAgMSAxIDI1NiAwQTEyOCAxMjggMCAxIDEgOTYgMTI4ek0wIDQ4Mi4zQzAgMzgzLjggNzkuOCAzMDQgMTc4LjMgMzA0aDkxLjRDMzY4LjIgMzA0IDQ0OCAzODMuOCA0NDggNDgyLjNjMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjN6TTYwOS4zIDUxMkg0NzEuNGM1LjQtOS40IDguNi0yMC4zIDguNi0zMnYtOGMwLTYwLjctMjcuMS0xMTUuMi02OS44LTE1MS44YzIuNC0uMSA0LjctLjIgNy4xLS4yaDYxLjRDNTY3LjggMzIwIDY0MCAzOTIuMiA2NDAgNDgxLjNjMCAxNy0xMy44IDMwLjctMzAuNyAzMC43ek00MzIgMjU2Yy0zMSAwLTU5LTEyLjYtNzkuMy0zMi45QzM3Mi40IDE5Ni41IDM4NCAxNjMuNiAzODQgMTI4YzAtMjYuOC02LjYtNTIuMS0xOC4zLTc0LjNDMzg0LjMgNDAuMSA0MDcuMiAzMiA0MzIgMzJjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJzLTUwLjEgMTEyLTExMiAxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJJbmp1cmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCA4MEgzNDIuN2MtNy45LTE5LjUtMjAuNC0zNi41LTM2LjItNDkuOUwyNDAgODB6bTM3LjctNjguMkMyNjEuMyA0LjIgMjQzLjIgMCAyMjQgMGMtNTMuNyAwLTk5LjcgMzMuMS0xMTguNyA4MGg4MS40bDkxLTY4LjJ6TTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhjMC01LjQtLjMtMTAuOC0xLTE2SDk3Yy0uNyA1LjItMSAxMC42LTEgMTZjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjh6TTEyNCAzMTIuNGMtOS43IDMuMS0xOS4xIDctMjggMTEuN1Y1MTJIMjQzLjdMMTgxLjUgNDA4LjIgMTI0IDMxMi40em0zMy03LjJMMjA0LjMgMzg0SDI3MmM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDE4LTYgMzQuNi0xNiA0OGg4Mi4zYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43QzQ0OCAzODMuOCAzNjguMiAzMDQgMjY5LjcgMzA0SDE3OC4zYy03LjIgMC0xNC4zIC40LTIxLjMgMS4zek0wIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJINjRWMzQ1LjRDMjQuOSAzNzguMSAwIDQyNy4zIDAgNDgyLjN6TTMyMCA0NjRjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjIzLjVsNTcuMSA5NS4yQzMwMyA1MDcuMiAzMjAgNDg3LjYgMzIwIDQ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckxhcmdlU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0wzODEuOSAyNzRjNDguNS0yMy4yIDgyLjEtNzIuNyA4Mi4xLTEzMEM0NjQgNjQuNSAzOTkuNSAwIDMyMCAwQzI1MC40IDAgMTkyLjQgNDkuMyAxNzguOSAxMTQuOUwzOC44IDUuMXpNNTQ1LjUgNTEySDUyOEwyODQuMyAzMjBoLTU5QzEzNi4yIDMyMCA2NCAzOTIuMiA2NCA0ODEuM2MwIDE3IDEzLjggMzAuNyAzMC43IDMwLjdINTQ1LjNsLjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckxhcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAyODhBMTQ0IDE0NCAwIDEgMCAyNTYgMGExNDQgMTQ0IDAgMSAwIDAgMjg4em0tOTQuNyAzMkM3Mi4yIDMyMCAwIDM5Mi4yIDAgNDgxLjNjMCAxNyAxMy44IDMwLjcgMzAuNyAzMC43SDQ4MS4zYzE3IDAgMzAuNy0xMy44IDMwLjctMzAuN0M1MTIgMzkyLjIgNDM5LjggMzIwIDM1MC43IDMyMEgxNjEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDIyNCAwYTEyOCAxMjggMCAxIDAgMCAyNTZ6bS00NS43IDQ4Qzc5LjggMzA0IDAgMzgzLjggMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDM5Mi42Yy01LjQtOS40LTguNi0yMC4zLTguNi0zMlYzNTJjMC0yLjEgLjEtNC4yIC4zLTYuM2MtMzEtMjYtNzEtNDEuNy0xMTQuNi00MS43SDE3OC4zek01MjggMjQwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4SDQ5NlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMnY0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJWMjcyYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMTI4YTEyOCAxMjggMCAxIDEgMjU2IDBBMTI4IDEyOCAwIDEgMSA5NiAxMjh6TTAgNDgyLjNDMCAzODMuOCA3OS44IDMwNCAxNzguMyAzMDRoOTEuNEMzNjguMiAzMDQgNDQ4IDM4My44IDQ0OCA0ODIuM2MwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0gyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM3pNNDcyIDIwMEg2MTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDcyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTmluamEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmMtNTcuMiAwLTEwNS42LTM3LjUtMTIyLTg5LjNjLTEuMSAxLjMtMi4yIDIuNi0zLjUgMy44Yy0xNS44IDE1LjgtMzguOCAyMC43LTUzLjYgMjIuMWMtOC4xIC44LTE0LjYtNS43LTEzLjgtMTMuOGMxLjQtMTQuNyA2LjMtMzcuOCAyMi4xLTUzLjZjNS44LTUuOCAxMi42LTEwLjEgMTkuNi0xMy40Yy03LTMuMi0xMy44LTcuNi0xOS42LTEzLjRDMzcuNCA4Mi43IDMyLjYgNTkuNyAzMS4xIDQ0LjljLS44LTguMSA1LjctMTQuNiAxMy44LTEzLjhjMTQuNyAxLjQgMzcuOCA2LjMgNTMuNiAyMi4xYzQuOCA0LjggOC43IDEwLjQgMTEuNyAxNi4xQzEzMS40IDI4LjIgMTc0LjQgMCAyMjQgMGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOHMtNTcuMyAxMjgtMTI4IDEyOHpNMCA0ODIuM0MwIDM5OS41IDU2LjQgMzMwIDEzMi44IDMwOS45YzYtMS42IDEyLjIgLjkgMTUuOSA1LjhsNjIuNSA4My4zYzYuNCA4LjUgMTkuMiA4LjUgMjUuNiAwbDYyLjUtODMuM2MzLjctNC45IDkuOS03LjQgMTUuOS01LjhDMzkxLjYgMzMwIDQ0OCAzOTkuNSA0NDggNDgyLjNjMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjN6TTE2MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgyODhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTnVyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMTI4VjcwLjJjMC0xMy4zIDguMy0yNS4zIDIwLjgtMzBsOTYtMzZjNy4yLTIuNyAxNS4yLTIuNyAyMi41IDBsOTYgMzZjMTIuNSA0LjcgMjAuOCAxNi42IDIwLjggMzBWMTI4aC0uM2MuMiAyLjYgLjMgNS4zIC4zIDh2NDBjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhzLTEyOC01Ny4zLTEyOC0xMjhWMTM2YzAtMi43IC4xLTUuNCAuMy04SDk2em00OCA0OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwVjE2MEgxNDR2MTZ6TTExMS45IDMyNy43YzEwLjUtMy40IDIxLjggLjQgMjkuNCA4LjVsNzEgNzUuNWM2LjMgNi43IDE3IDYuNyAyMy4zIDBsNzEtNzUuNWM3LjYtOC4xIDE4LjktMTEuOSAyOS40LTguNUM0MDEgMzQ4LjYgNDQ4IDQwOS40IDQ0OCA0ODEuM2MwIDE3LTEzLjggMzAuNy0zMC43IDMwLjdIMzAuN0MxMy44IDUxMiAwIDQ5OC4yIDAgNDgxLjNjMC03MS45IDQ3LTEzMi43IDExMS45LTE1My42ek0yMDggNDhWNjRIMTkyYy00LjQgMC04IDMuNi04IDhWODhjMCA0LjQgMy42IDggOCA4aDE2djE2YzAgNC40IDMuNiA4IDggOGgxNmM0LjQgMCA4LTMuNiA4LThWOTZoMTZjNC40IDAgOC0zLjYgOC04VjcyYzAtNC40LTMuNi04LTgtOEgyNDBWNDhjMC00LjQtMy42LTgtOC04SDIxNmMtNC40IDAtOCAzLjYtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyUGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkgzMjIuOGMtMy4xLTguOC0zLjctMTguNC0xLjQtMjcuOGwxNS02MC4xYzIuOC0xMS4zIDguNi0yMS41IDE2LjgtMjkuN2w0MC4zLTQwLjNjLTMyLjEtMzEtNzUuNy01MC4xLTEyMy45LTUwLjFIMTc4LjN6bTQzNS41LTY4LjNjLTE1LjYtMTUuNi00MC45LTE1LjYtNTYuNiAwbC0yOS40IDI5LjQgNzEgNzEgMjkuNC0yOS40YzE1LjYtMTUuNiAxNS42LTQwLjkgMC01Ni42bC0xNC40LTE0LjR6TTM3NS45IDQxN2MtNC4xIDQuMS03IDkuMi04LjQgMTQuOWwtMTUgNjAuMWMtMS40IDUuNSAuMiAxMS4yIDQuMiAxNS4yczkuNyA1LjYgMTUuMiA0LjJsNjAuMS0xNWM1LjYtMS40IDEwLjgtNC4zIDE0LjktOC40TDU3Ni4xIDM1OC43bC03MS03MUwzNzUuOSA0MTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGExMjggMTI4IDAgMSAxIDI1NiAwQTEyOCAxMjggMCAxIDEgOTYgMTI4ek0wIDQ4Mi4zQzAgMzgzLjggNzkuOCAzMDQgMTc4LjMgMzA0aDkxLjRDMzY4LjIgMzA0IDQ0OCAzODMuOCA0NDggNDgyLjNjMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjN6TTUwNCAzMTJWMjQ4SDQ0MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg2NFYxMzZjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY2NGg2NGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NTJ2NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJTZWNyZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDE2Yy02LjcgMC0xMC44LTIuOC0xNS41LTYuMUMyMDEuOSA1LjQgMTk0IDAgMTc2IDBjLTMwLjUgMC01MiA0My43LTY2IDg5LjRDNjIuNyA5OC4xIDMyIDExMi4yIDMyIDEyOGMwIDE0LjMgMjUgMjcuMSA2NC42IDM1LjljLS40IDQtLjYgOC0uNiAxMi4xYzAgMTcgMy4zIDMzLjIgOS4zIDQ4SDQ1LjRDMzggMjI0IDMyIDIzMCAzMiAyMzcuNGMwIDEuNyAuMyAzLjQgMSA1bDM4LjggOTYuOUMyOC4yIDM3MS44IDAgNDIzLjggMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDQxOC4zYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43YzAtNTguNS0yOC4yLTExMC40LTcxLjctMTQzTDQxNSAyNDIuNGMuNi0xLjYgMS0zLjMgMS01YzAtNy40LTYtMTMuNC0xMy40LTEzLjRIMzQyLjdjNi0xNC44IDkuMy0zMSA5LjMtNDhjMC00LjEtLjItOC4xLS42LTEyLjFDMzkxIDE1NS4xIDQxNiAxNDIuMyA0MTYgMTI4YzAtMTUuOC0zMC43LTI5LjktNzgtMzguNkMzMjQgNDMuNyAzMDIuNSAwIDI3MiAwYy0xOCAwLTI1LjkgNS40LTMyLjUgOS45Yy00LjggMy4zLTguOCA2LjEtMTUuNSA2LjF6bTU2IDIwOEgyNjcuNmMtMTYuNSAwLTMxLjEtMTAuNi0zNi4zLTI2LjJjLTIuMy03LTEyLjItNy0xNC41IDBjLTUuMiAxNS42LTE5LjkgMjYuMi0zNi4zIDI2LjJIMTY4Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYxNjkuNmMyOC4yIDQuMSA2MSA2LjQgOTYgNi40czY3LjgtMi4zIDk2LTYuNFYxODRjMCAyMi4xLTE3LjkgNDAtNDAgNDB6bS04OCA5NmwxNiAzMkwxNzYgNDgwIDEyOCAyODhsNjQgMzJ6bTEyOC0zMkwyNzIgNDgwIDI0MCAzNTJsMTYtMzIgNjQtMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDIyNCAwYTEyOCAxMjggMCAxIDAgMCAyNTZ6bS00NS43IDQ4Qzc5LjggMzA0IDAgMzgzLjggMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDQxOC4zYzEuOCAwIDMuNS0uMiA1LjMtLjVjLTc2LjMtNTUuMS05OS44LTE0MS0xMDMuMS0yMDAuMmMtMTYuMS00LjgtMzMuMS03LjMtNTAuNy03LjNIMTc4LjN6bTMwOC44LTc4LjNsLTEyMCA0OEMzNTggMjc3LjQgMzUyIDI4Ni4yIDM1MiAyOTZjMCA2My4zIDI1LjkgMTY4LjggMTM0LjggMjE0LjJjNS45IDIuNSAxMi42IDIuNSAxOC41IDBDNjE0LjEgNDY0LjggNjQwIDM1OS4zIDY0MCAyOTZjMC05LjgtNi0xOC42LTE1LjEtMjIuM2wtMTIwLTQ4Yy01LjctMi4zLTEyLjEtMi4zLTE3LjggMHpNNTkxLjQgMzEyYy0zLjkgNTAuNy0yNy4yIDExNi43LTk1LjQgMTQ5LjdWMjczLjhMNTkxLjQgMzEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0wzNTMuMyAyNTEuNkM0MDcuOSAyMzcgNDQ4IDE4Ny4yIDQ0OCAxMjhDNDQ4IDU3LjMgMzkwLjcgMCAzMjAgMEMyNTAuMiAwIDE5My41IDU1LjggMTkyIDEyNS4yTDM4LjggNS4xek0yNjQuMyAzMDQuM0MxNzAuNSAzMDkuNCA5NiAzODcuMiA5NiA0ODIuM2MwIDE2LjQgMTMuMyAyOS43IDI5LjcgMjkuN0g1MTQuM2MzLjkgMCA3LjYtLjcgMTEtMi4xbC0yNjEtMjA1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJUYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDIyNCAwYTEyOCAxMjggMCAxIDAgMCAyNTZ6bS00NS43IDQ4Qzc5LjggMzA0IDAgMzgzLjggMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDQxOC4zYzEwIDAgMTguOC00LjkgMjQuMi0xMi41bC05OS4yLTk5LjJjLTE0LjktMTQuOS0yMy4zLTM1LjEtMjMuMy01Ni4xdi0zM2MtMTUuOS00LjctMzIuOC03LjItNTAuMy03LjJIMTc4LjN6TTM4NCAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgyLjdjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNMNDc4LjEgNDkxLjNjMTguNyAxOC43IDQ5LjEgMTguNyA2Ny45IDBsNzMuNC03My40YzE4LjctMTguNyAxOC43LTQ5LjEgMC02Ny45TDUxMiAyNDIuN2MtMTItMTItMjguMy0xOC43LTQ1LjMtMTguN0gzODR6bTI0IDgwYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJUaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMTI4YTEyOCAxMjggMCAxIDAgMjU2IDBBMTI4IDEyOCAwIDEgMCA5NiAxMjh6bTk0LjUgMjAwLjJsMTguNiAzMUwxNzUuOCA0ODMuMWwtMzYtMTQ2LjljLTItOC4xLTkuOC0xMy40LTE3LjktMTEuM0M1MS45IDM0Mi40IDAgNDA1LjggMCA0ODEuM2MwIDE3IDEzLjggMzAuNyAzMC43IDMwLjdIMTYyLjVjMCAwIDAgMCAuMSAwSDE2OCAyODBoNS41YzAgMCAwIDAgLjEgMEg0MTcuM2MxNyAwIDMwLjctMTMuOCAzMC43LTMwLjdjMC03NS41LTUxLjktMTM4LjktMTIxLjktMTU2LjRjLTguMS0yLTE1LjkgMy4zLTE3LjkgMTEuM2wtMzYgMTQ2LjlMMjM4LjkgMzU5LjJsMTguNi0zMWM2LjQtMTAuNy0xLjMtMjQuMi0xMy43LTI0LjJIMjI0IDIwNC4zYy0xMi40IDAtMjAuMSAxMy42LTEzLjcgMjQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGExMjggMTI4IDAgMSAxIDI1NiAwQTEyOCAxMjggMCAxIDEgOTYgMTI4ek0wIDQ4Mi4zQzAgMzgzLjggNzkuOCAzMDQgMTc4LjMgMzA0aDkxLjRDMzY4LjIgMzA0IDQ0OCAzODMuOCA0NDggNDgyLjNjMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjN6TTQ3MSAxNDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDIyNCAwYTEyOCAxMjggMCAxIDAgMCAyNTZ6bS00NS43IDQ4Qzc5LjggMzA0IDAgMzgzLjggMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDQxOC4zYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43QzQ0OCAzODMuOCAzNjguMiAzMDQgMjY5LjcgMzA0SDE3OC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2Vyc0JldHdlZW5MaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI0QzAgMTAuNyAxMC43IDAgMjQgMEg2MTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjRDMTAuNyA0OCAwIDM3LjMgMCAyNHpNMCA0ODhjMC0xMy4zIDEwLjctMjQgMjQtMjRINjE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNODMuMiAxNjBhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek0zMiAzMjBjMC0zNS4zIDI4LjctNjQgNjQtNjRoOTZjMTIuMiAwIDIzLjcgMy40IDMzLjQgOS40Yy0zNy4yIDE1LjEtNjUuNiA0Ny4yLTc1LjggODYuNkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTQ2MS42IDMyYy0xMC4zLTQwLjEtMzkuNi03Mi42LTc3LjctODcuNGM5LjQtNS41IDIwLjQtOC42IDMyLjEtOC42aDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQ5My42ek0zOTEuMiAyOTAuNGMzMi4xIDcuNCA1OC4xIDMwLjkgNjguOSA2MS42YzMuNSAxMCA1LjUgMjAuOCA1LjUgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJoLTIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJjMC0xMS4yIDEuOS0yMiA1LjUtMzJjMTAuNS0yOS43IDM1LjMtNTIuOCA2Ni4xLTYwLjljNy44LTIuMSAxNi0zLjEgMjQuNS0zLjFoOTZjNy40IDAgMTQuNyAuOCAyMS42IDIuNHptNDQtMTMwLjRhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek0zMjEuNiA5NmE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNHZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxNjBBODAgODAgMCAxIDAgMTQ0IDBhODAgODAgMCAxIDAgMCAxNjB6bTM2OCAwQTgwIDgwIDAgMSAwIDUxMiAwYTgwIDgwIDAgMSAwIDAgMTYwek0wIDI5OC43QzAgMzEwLjQgOS42IDMyMCAyMS4zIDMyMEgyMzQuN2MuMiAwIC40IDAgLjcgMGMtMjYuNi0yMy41LTQzLjMtNTcuOC00My4zLTk2YzAtNy42IC43LTE1IDEuOS0yMi4zYy0xMy42LTYuMy0yOC43LTkuNy00NC42LTkuN0gxMDYuN0M0Ny44IDE5MiAwIDIzOS44IDAgMjk4Ljd6TTMyMCAzMjBjMjQgMCA0NS45LTguOCA2Mi43LTIzLjNjMi41LTMuNyA1LjItNy4zIDgtMTAuN2MyLjctMy4zIDUuNy02LjEgOS04LjNDNDEwIDI2Mi4zIDQxNiAyNDMuOSA0MTYgMjI0YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2em02NS40IDYwLjJjLTEwLjMtNS45LTE4LjEtMTYuMi0yMC44LTI4LjJIMjYxLjNDMTg3LjcgMzUyIDEyOCA0MTEuNyAxMjggNDg1LjNjMCAxNC43IDExLjkgMjYuNyAyNi43IDI2LjdINDU1LjJjLTIuMS01LjItMy4yLTEwLjktMy4yLTE2LjR2LTNjLTEuMy0uNy0yLjctMS41LTQtMi4zbC0yLjYgMS41Yy0xNi44IDkuNy00MC41IDgtNTQuNy05LjdjLTQuNS01LjYtOC42LTExLjUtMTIuNC0xNy42bC0uMS0uMi0uMS0uMi0yLjQtNC4xLS4xLS4yLS4xLS4yYy0zLjQtNi4yLTYuNC0xMi42LTktMTkuM2MtOC4yLTIxLjIgMi4yLTQyLjYgMTktNTIuM2wyLjctMS41YzAtLjggMC0xLjUgMC0yLjNzMC0xLjUgMC0yLjNsLTIuNy0xLjV6TTUzMy4zIDE5Mkg0OTAuN2MtMTUuOSAwLTMxIDMuNS00NC42IDkuN2MxLjMgNy4yIDEuOSAxNC43IDEuOSAyMi4zYzAgMTcuNC0zLjUgMzMuOS05LjcgNDljMi41IC45IDQuOSAyIDcuMSAzLjNsMi42IDEuNWMxLjMtLjggMi42LTEuNiA0LTIuM3YtM2MwLTE5LjQgMTMuMy0zOS4xIDM1LjgtNDIuNmM3LjktMS4yIDE2LTEuOSAyNC4yLTEuOXMxNi4zIC42IDI0LjIgMS45YzIyLjUgMy41IDM1LjggMjMuMiAzNS44IDQyLjZ2M2MxLjMgLjcgMi43IDEuNSA0IDIuM2wyLjYtMS41YzE2LjgtOS43IDQwLjUtOCA1NC43IDkuN2MyLjMgMi44IDQuNSA1LjggNi42IDguN2MtMi4xLTU3LjEtNDktMTAyLjctMTA2LjYtMTAyLjd6bTkxLjMgMTYzLjljNi4zLTMuNiA5LjUtMTEuMSA2LjgtMThjLTIuMS01LjUtNC42LTEwLjgtNy40LTE1LjlsLTIuMy00Yy0zLjEtNS4xLTYuNS05LjktMTAuMi0xNC41Yy00LjYtNS43LTEyLjctNi43LTE5LTNsLTIuOSAxLjdjLTkuMiA1LjMtMjAuNCA0LTI5LjYtMS4zcy0xNi4xLTE0LjUtMTYuMS0yNS4xdi0zLjRjMC03LjMtNC45LTEzLjgtMTIuMS0xNC45Yy02LjUtMS0xMy4xLTEuNS0xOS45LTEuNXMtMTMuNCAuNS0xOS45IDEuNWMtNy4yIDEuMS0xMi4xIDcuNi0xMi4xIDE0Ljl2My40YzAgMTAuNi02LjkgMTkuOC0xNi4xIDI1LjFzLTIwLjQgNi42LTI5LjYgMS4zbC0yLjktMS43Yy02LjMtMy42LTE0LjQtMi42LTE5IDNjLTMuNyA0LjYtNy4xIDkuNS0xMC4yIDE0LjZsLTIuMyAzLjljLTIuOCA1LjEtNS4zIDEwLjQtNy40IDE1LjljLTIuNiA2LjggLjUgMTQuMyA2LjggMTcuOWwyLjkgMS43YzkuMiA1LjMgMTMuNyAxNS44IDEzLjcgMjYuNHMtNC41IDIxLjEtMTMuNyAyNi40bC0zIDEuN2MtNi4zIDMuNi05LjUgMTEuMS02LjggMTcuOWMyLjEgNS41IDQuNiAxMC43IDcuNCAxNS44bDIuNCA0LjFjMyA1LjEgNi40IDkuOSAxMC4xIDE0LjVjNC42IDUuNyAxMi43IDYuNyAxOSAzbDIuOS0xLjdjOS4yLTUuMyAyMC40LTQgMjkuNiAxLjNzMTYuMSAxNC41IDE2LjEgMjUuMXYzLjRjMCA3LjMgNC45IDEzLjggMTIuMSAxNC45YzYuNSAxIDEzLjEgMS41IDE5LjkgMS41czEzLjQtLjUgMTkuOS0xLjVjNy4yLTEuMSAxMi4xLTcuNiAxMi4xLTE0Ljl2LTMuNGMwLTEwLjYgNi45LTE5LjggMTYuMS0yNS4xczIwLjQtNi42IDI5LjYtMS4zbDIuOSAxLjdjNi4zIDMuNiAxNC40IDIuNiAxOS0zYzMuNy00LjYgNy4xLTkuNCAxMC4xLTE0LjVsMi40LTQuMmMyLjgtNS4xIDUuMy0xMC4zIDcuNC0xNS44YzIuNi02LjgtLjUtMTQuMy02LjgtMTcuOWwtMy0xLjdjLTkuMi01LjMtMTMuNy0xNS44LTEzLjctMjYuNHM0LjUtMjEuMSAxMy43LTI2LjRsMy0xLjd6TTQ3MiAzODRhNDAgNDAgMCAxIDEgODAgMCA0MCA0MCAwIDEgMSAtODAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMS4yIDk2YTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpNMzIgMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDg1LjZjMTAuMS0zOS40IDM4LjYtNzEuNSA3NS44LTg2LjZjLTkuNy02LTIxLjItOS40LTMzLjQtOS40SDk2Yy0zNS4zIDAtNjQgMjguNy02NCA2NHptNDYxLjYgMzJINTc2YzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDQ0OGMtMTEuNyAwLTIyLjcgMy4xLTMyLjEgOC42YzM4LjEgMTQuOCA2Ny40IDQ3LjMgNzcuNyA4Ny40ek0zOTEuMiAyMjYuNGMtNi45LTEuNi0xNC4yLTIuNC0yMS42LTIuNGgtOTZjLTguNSAwLTE2LjcgMS4xLTI0LjUgMy4xYy0zMC44IDguMS01NS42IDMxLjEtNjYuMSA2MC45Yy0zLjUgMTAtNS41IDIwLjgtNS41IDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMmMwLTExLjItMS45LTIyLTUuNS0zMmMtMTAuOC0zMC43LTM2LjgtNTQuMi02OC45LTYxLjZ6TTU2My4yIDk2YTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpNMzIxLjYgMTkyYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwek0zMiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2Vyc1JheXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEgN0MzMS42LTIuMyAxNi40LTIuMyA3IDdTLTIuMyAzMS42IDcgNDFsNzIgNzJjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDQxIDd6TTU5OSA3TDUyNyA3OWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDcyLTcyYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDB6TTcgNTA1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDcyLTcyYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMNyA0NzFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45em01OTIgMGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTcyLTcyYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDcyIDcyek0zMjAgMjU2YTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek0yMTIuMSAzMzZjLTIuNyA3LjUtNC4xIDE1LjYtNC4xIDI0YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQwOGMxMy4zIDAgMjQtMTAuNyAyNC0yNGMwLTguNC0xLjQtMTYuNS00LjEtMjRjLS41LTEuNC0xLTIuNy0xLjYtNGMtOS40LTIyLjMtMjkuOC0zOC45LTU0LjMtNDNjLTMuOS0uNy03LjktMS0xMi0xSDI4MGMtNC4xIDAtOC4xIC4zLTEyIDFjLS44IC4xLTEuNyAuMy0yLjUgLjVjLTI0LjkgNS4xLTQ1LjEgMjMtNTMuNCA0Ni41ek0xNzUuOCAyMjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tMjYuNSAzMkMxMTkuOSAyNTYgOTYgMjc5LjkgOTYgMzA5LjNjMCAxNC43IDExLjkgMjYuNyAyNi43IDI2LjdoNTYuMWM4LTM0LjEgMzIuOC02MS43IDY1LjItNzMuNmMtNy41LTQuMS0xNi4yLTYuNC0yNS4zLTYuNEgxNDkuM3ptMzY4IDgwYzE0LjcgMCAyNi43LTExLjkgMjYuNy0yNi43YzAtMjkuNS0yMy45LTUzLjMtNTMuMy01My4zSDQyMS4zYy05LjIgMC0xNy44IDIuMy0yNS4zIDYuNGMzMi40IDExLjkgNTcuMiAzOS41IDY1LjIgNzMuNmg1Ni4xek00NjQgMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNSZWN0YW5nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM0MyAwIDAgNDMgMCA5NlY0MTZjMCA1MyA0MyA5NiA5NiA5Nkg1NDRjNTMgMCA5Ni00MyA5Ni05NlY5NmMwLTUzLTQzLTk2LTk2LTk2SDk2ek02NCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NnptMTU5LjggODBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNOTYgMzA5LjNjMCAxNC43IDExLjkgMjYuNyAyNi43IDI2LjdoNTYuMWM4LTM0LjEgMzIuOC02MS43IDY1LjItNzMuNmMtNy41LTQuMS0xNi4yLTYuNC0yNS4zLTYuNEgxNDkuM0MxMTkuOSAyNTYgOTYgMjc5LjkgOTYgMzA5LjN6TTQ2MS4yIDMzNmg1Ni4xYzE0LjcgMCAyNi43LTExLjkgMjYuNy0yNi43YzAtMjkuNS0yMy45LTUzLjMtNTMuMy01My4zSDQyMS4zYy05LjIgMC0xNy44IDIuMy0yNS4zIDYuNGMzMi40IDExLjkgNTcuMiAzOS41IDY1LjIgNzMuNnpNMzcyIDI4OWMtMy45LS43LTcuOS0xLTEyLTFIMjgwYy00LjEgMC04LjEgLjMtMTIgMWMtMjYgNC40LTQ3LjMgMjIuNy01NS45IDQ3Yy0yLjcgNy41LTQuMSAxNS42LTQuMSAyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg0MDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC04LjQtMS40LTE2LjUtNC4xLTI0Yy04LjYtMjQuMy0yOS45LTQyLjYtNTUuOS00N3pNNTEyIDE3NmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0zMjAgMjU2YTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2Vyc1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDQwLjYgMzIwSDYxOC43YzExLjggMCAyMS4zLTkuNiAyMS4zLTIxLjNDNjQwIDIzOS44IDU5Mi4yIDE5MiA1MzMuMyAxOTJINDkwLjdjLTE1LjkgMC0zMSAzLjUtNDQuNiA5LjdjMS4zIDcuMiAxLjkgMTQuNyAxLjkgMjIuM2MwIDMwLjItMTAuNSA1OC0yOCA3OS45bC0yNS4yLTE5LjdDNDA4LjEgMjY3LjcgNDE2IDI0Ni44IDQxNiAyMjRjMC01My00My05Ni05Ni05NmMtMzEuMSAwLTU4LjcgMTQuOC03Ni4zIDM3LjdsLTQwLjYtMzEuOGMxMy0xNC4yIDIwLjktMzMuMSAyMC45LTUzLjljMC00NC4yLTM1LjgtODAtODAtODBDMTE2LjMgMCA5MS45IDE0LjEgNzcuNSAzNS41TDM4LjggNS4xek0xMDYuNyAxOTJDNDcuOCAxOTIgMCAyMzkuOCAwIDI5OC43QzAgMzEwLjQgOS42IDMyMCAyMS4zIDMyMEgyMzQuN2MuMiAwIC40IDAgLjcgMGMtMjAuNi0xOC4yLTM1LjItNDIuOC00MC44LTcwLjhMMTIxLjggMTkySDEwNi43ek0yNjEuMyAzNTJDMTg3LjcgMzUyIDEyOCA0MTEuNyAxMjggNDg1LjNjMCAxNC43IDExLjkgMjYuNyAyNi43IDI2LjdINDg1LjNjMTAuNSAwIDE5LjUtNiAyMy45LTE0LjhMMzI0LjkgMzUySDI2MS4zek01MTIgMTYwQTgwIDgwIDAgMSAwIDUxMiAwYTgwIDgwIDAgMSAwIDAgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2Vyc1ZpZXdmaW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggNDhoODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzJDMTQuMyAwIDAgMTQuMyAwIDMyVjEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQ4ek0xNzUuOCAyMjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tMjYuNSAzMkMxMTkuOSAyNTYgOTYgMjc5LjkgOTYgMzA5LjNjMCAxNC43IDExLjkgMjYuNyAyNi43IDI2LjdoNTYuMWM4LTM0LjEgMzIuOC02MS43IDY1LjItNzMuNmMtNy41LTQuMS0xNi4yLTYuNC0yNS4zLTYuNEgxNDkuM3ptMzY4IDgwYzE0LjcgMCAyNi43LTExLjkgMjYuNy0yNi43YzAtMjkuNS0yMy45LTUzLjMtNTMuMy01My4zSDQyMS4zYy05LjIgMC0xNy44IDIuMy0yNS4zIDYuNGMzMi40IDExLjkgNTcuMiAzOS41IDY1LjIgNzMuNmg1Ni4xem0tODkuNCAwYy04LjYtMjQuMy0yOS45LTQyLjYtNTUuOS00N2MtMy45LS43LTcuOS0xLTEyLTFIMjgwYy00LjEgMC04LjEgLjMtMTIgMWMtMjYgNC40LTQ3LjMgMjIuNy01NS45IDQ3Yy0yLjcgNy41LTQuMSAxNS42LTQuMSAyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg0MDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC04LjQtMS40LTE2LjUtNC4xLTI0ek00NjQgMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTgwLTMyYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpNNTA0IDQ4aDg4djg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJINTA0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0ek00OCA0NjRWMzc2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgxMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDh6bTQ1NiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNzZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2ODhINTA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMGE4MCA4MCAwIDEgMSAwIDE2MEE4MCA4MCAwIDEgMSAxNDQgMHpNNTEyIDBhODAgODAgMCAxIDEgMCAxNjBBODAgODAgMCAxIDEgNTEyIDB6TTAgMjk4LjdDMCAyMzkuOCA0Ny44IDE5MiAxMDYuNyAxOTJoNDIuN2MxNS45IDAgMzEgMy41IDQ0LjYgOS43Yy0xLjMgNy4yLTEuOSAxNC43LTEuOSAyMi4zYzAgMzguMiAxNi44IDcyLjUgNDMuMyA5NmMtLjIgMC0uNCAwLS43IDBIMjEuM0M5LjYgMzIwIDAgMzEwLjQgMCAyOTguN3pNNDA1LjMgMzIwYy0uMiAwLS40IDAtLjcgMGMyNi42LTIzLjUgNDMuMy01Ny44IDQzLjMtOTZjMC03LjYtLjctMTUtMS45LTIyLjNjMTMuNi02LjMgMjguNy05LjcgNDQuNi05LjdoNDIuN0M1OTIuMiAxOTIgNjQwIDIzOS44IDY0MCAyOTguN2MwIDExLjgtOS42IDIxLjMtMjEuMyAyMS4zSDQwNS4zek0yMjQgMjI0YTk2IDk2IDAgMSAxIDE5MiAwIDk2IDk2IDAgMSAxIC0xOTIgMHpNMTI4IDQ4NS4zQzEyOCA0MTEuNyAxODcuNyAzNTIgMjYxLjMgMzUySDM3OC43QzQ1Mi4zIDM1MiA1MTIgNDExLjcgNTEyIDQ4NS4zYzAgMTQuNy0xMS45IDI2LjctMjYuNyAyNi43SDE1NC43Yy0xNC43IDAtMjYuNy0xMS45LTI2LjctMjYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXRlbnNpbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDBDNDAwIDAgMjg4IDMyIDI4OCAxNzZWMjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0aDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM1MiAyNDAgMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTY0IDE2QzY0IDcuOCA1Ny45IDEgNDkuNyAuMVMzNC4yIDQuNiAzMi40IDEyLjVMMi4xIDE0OC44Qy43IDE1NS4xIDAgMTYxLjUgMCAxNjcuOWMwIDQ1LjkgMzUuMSA4My42IDgwIDg3LjdWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjU1LjZjNDQuOS00LjEgODAtNDEuOCA4MC04Ny43YzAtNi40LS43LTEyLjgtMi4xLTE5LjFMMTkxLjYgMTIuNWMtMS44LTgtOS4zLTEzLjMtMTcuNC0xMi40UzE2MCA3LjggMTYwIDE2VjE1MC4yYzAgNS40LTQuNCA5LjgtOS44IDkuOGMtNS4xIDAtOS4zLTMuOS05LjgtOUwxMjcuOSAxNC42QzEyNy4yIDYuMyAxMjAuMyAwIDExMiAwcy0xNS4yIDYuMy0xNS45IDE0LjZMODMuNyAxNTFjLS41IDUuMS00LjcgOS05LjggOWMtNS40IDAtOS44LTQuNC05LjgtOS44VjE2em00OC4zIDE1MmwtLjMgMC0uMyAwIC4zLS43IC4zIC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjcgMzQuNWMxNi4zLTYuOCAzNSAuOSA0MS44IDE3LjJMMTkyIDM2NC44IDMyMi41IDUxLjdjNi44LTE2LjMgMjUuNS0yNCA0MS44LTE3LjJzMjQgMjUuNSAxNy4yIDQxLjhsLTE2MCAzODRjLTUgMTEuOS0xNi42IDE5LjctMjkuNSAxOS43cy0yNC42LTcuOC0yOS41LTE5LjdMMi41IDc2LjNjLTYuOC0xNi4zIC45LTM1IDE3LjItNDEuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmFuU2h1dHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMDR2ODhoOTZWOTZINzJjLTQuNCAwLTggMy42LTggOHptNDgyIDg4TDQ2NS4xIDk2SDM4NHY5Nkg1NDZ6bS0yMjYgMFY5NkgyMjR2OTZoOTZ6TTU5MiAzODRINTc2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDI1NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05Nkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTA0QzAgNjQuMiAzMi4yIDMyIDcyIDMySDE5MiAzNTIgNDY1LjFjMTguOSAwIDM2LjggOC4zIDQ5IDIyLjhMNjI1IDE4Ni41YzkuNyAxMS41IDE1IDI2LjEgMTUgNDEuMlYzMzZjMCAyNi41LTIxLjUgNDgtNDggNDh6bS02NCAwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTE2MCA0MzJhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWYXVsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIODBsMTYgMzJoNjRsMTYtMzJINDAwbDE2IDMyaDY0bDE2LTMyaDE2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgMzIwYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0wLTI0MGExNjAgMTYwIDAgMSAxIDAgMzIwIDE2MCAxNjAgMCAxIDEgMC0zMjB6TTQ4MCAyMjEuM1YzMzZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjIxLjNjLTE4LjYtNi42LTMyLTI0LjQtMzItNDUuM2MwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4YzAgMjAuOS0xMy40IDM4LjctMzIgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVjdG9yU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA4MGgzMnYzMkgzNjhWODB6TTM1MiAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJIMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJWMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NmMxNy43IDAgMzItMTQuMyAzMi0zMkgzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE2MGMxNy43IDAgMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzNTJ6TTk2IDE2MGMxNy43IDAgMzItMTQuMyAzMi0zMkgzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJWMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMkgxMjhjMC0xNy43LTE0LjMtMzItMzItMzJWMTYwek00OCA0MDBIODB2MzJINDhWNDAwem0zMjAgMzJWNDAwaDMydjMySDM2OHpNNDggMTEyVjgwSDgwdjMySDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZW51c0RvdWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMjg4YTExMiAxMTIgMCAxIDAgMC0yMjQgMTEyIDExMiAwIDEgMCAwIDIyNHpNMzY4IDE3NmMwIDg2LjMtNjIuMSAxNTguMS0xNDQgMTczLjFWMzg0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyVjM0OS4xQzc4LjEgMzM0LjEgMTYgMjYyLjMgMTYgMTc2QzE2IDc4LjggOTQuOCAwIDE5MiAwczE3NiA3OC44IDE3NiAxNzZ6TTM0NCAzMThjMTQuNi0xNS42IDI2LjgtMzMuNCAzNi01M2MxOC44IDE0LjQgNDIuNCAyMyA2OCAyM2M2MS45IDAgMTEyLTUwLjEgMTEyLTExMnMtNTAuMS0xMTItMTEyLTExMmMtMjUuNiAwLTQ5LjEgOC42LTY4IDIzYy05LjMtMTkuNS0yMS41LTM3LjQtMzYtNTNDMzczLjEgMTIuNiA0MDkuMSAwIDQ0OCAwYzk3LjIgMCAxNzYgNzguOCAxNzYgMTc2YzAgODYuMy02Mi4xIDE1OC4xLTE0NCAxNzMuMVYzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDgwdjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMzJWMzQ5LjFjLTI2LjYtNC45LTUxLjEtMTUuNy03Mi0zMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZW51c01hcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDI4OGExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6TTM1MiAxNzZjMCA4Ni4zLTYyLjEgMTU4LjEtMTQ0IDE3My4xVjM4NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMDh2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDExMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgzMlYzNDkuMUM2Mi4xIDMzNC4xIDAgMjYyLjMgMCAxNzZDMCA3OC44IDc4LjggMCAxNzYgMHMxNzYgNzguOCAxNzYgMTc2ek0yNzEuOSAzNjAuNmMxOS4zLTEwLjEgMzYuOS0yMy4xIDUyLjEtMzguNGMyMCAxOC41IDQ2LjcgMjkuOCA3Ni4xIDI5LjhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJzLTUwLjEtMTEyLTExMi0xMTJjLTcuMiAwLTE0LjMgLjctMjEuMSAyYy00LjktMjEuNS0xMy00MS43LTI0LTYwLjJDMzY5LjMgNjYgMzg0LjQgNjQgNDAwIDY0YzM3IDAgNzEuNCAxMS40IDk5LjggMzFsMjAuNi0yMC42TDQ4NyA0MWMtNi45LTYuOS04LjktMTcuMi01LjItMjYuMlM0OTQuMyAwIDUwNCAwSDYxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxMzZjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtMzMuNC0zMy40TDU0NSAxNDAuMmMxOS41IDI4LjQgMzEgNjIuNyAzMSA5OS44YzAgOTcuMi03OC44IDE3Ni0xNzYgMTc2Yy01MC41IDAtOTYtMjEuMy0xMjguMS01NS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAxNzZhMTEyIDExMiAwIDEgMSAyMjQgMEExMTIgMTEyIDAgMSAxIDgwIDE3NnpNMjI0IDM0OS4xYzgxLjktMTUgMTQ0LTg2LjggMTQ0LTE3My4xQzM2OCA3OC44IDI4OS4yIDAgMTkyIDBTMTYgNzguOCAxNiAxNzZjMCA4Ni4zIDYyLjEgMTU4LjEgMTQ0IDE3My4xVjM4NEgxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDhoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjI0VjM0OS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZXN0UGF0Y2hlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTEuMiA2OS43bDU1LjkgMTY3LjctMTEgMzMuMWMtMi43IDguMi00LjEgMTYuNy00LjEgMjUuM1Y0NjRjMCAxNC41IDMuOSAyOC4yIDEwLjcgMzkuOUMxOTUgNTA5IDE4NS45IDUxMiAxNzYgNTEySDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyNzAuNWMwLTkuNSAyLjgtMTguNyA4LjEtMjYuNmw0Ny45LTcxLjhjNS4zLTcuOSA4LjEtMTcuMSA4LjEtMjYuNlYxMjggNTQuMyA0OEM2NCAyMS41IDg1LjUgMCAxMTIgMGg0LjVjLjIgMCAuNCAwIC42IDBjLjQgMCAuOCAwIDEuMiAwYzE4LjggMCAzNC4xIDkuNyA0NC4xIDE4LjhDMTcxLjYgMjcuMiAxOTAuOCA0MCAyMjQgNDBzNTIuNC0xMi44IDYxLjctMjEuMkMyOTUuNyA5LjcgMzExIDAgMzI5LjcgMGMuNCAwIC44IDAgMS4yIDBjLjIgMCAuNCAwIC42IDBIMzM2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djYuM1YxMjh2MTcuNWMwIDkuNSAyLjggMTguNyA4LjEgMjYuNmw0Ny45IDcxLjhjNS4zIDcuOSA4LjEgMTcuMSA4LjEgMjYuNlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjcyYy0yNi41IDAtNDgtMjEuNS00OC00OFYyOTUuOGMwLTUuMiAuOC0xMC4zIDIuNS0xNS4yTDI5Ni44IDY5LjdDMjc5LjQgNzkuNyAyNTUuNCA4OCAyMjQgODhzLTU1LjQtOC4zLTcyLjgtMTguM3pNOTYgNDU2YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHpNNjMuNSAyNTUuNWMtNC43IDQuNy00LjcgMTIuMyAwIDE3TDc5IDI4OCA2My41IDMwMy41Yy00LjcgNC43LTQuNyAxMi4zIDAgMTdzMTIuMyA0LjcgMTcgMEw5NiAzMDVsMTUuNSAxNS41YzQuNyA0LjcgMTIuMyA0LjcgMTcgMHM0LjctMTIuMyAwLTE3TDExMyAyODhsMTUuNS0xNS41YzQuNy00LjcgNC43LTEyLjMgMC0xN3MtMTIuMy00LjctMTcgMEw5NiAyNzEgODAuNSAyNTUuNWMtNC43LTQuNy0xMi4zLTQuNy0xNyAwek0zMDQgMjgwdjggMzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyIDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRoLTh2LThjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA3LjEgMjM3LjRMMTUxLjIgNjkuN0MxNjguNiA3OS43IDE5Mi42IDg4IDIyNCA4OHM1NS40LTguMyA3Mi44LTE4LjNMMjI2LjUgMjgwLjZjLTEuNiA0LjktMi41IDEwLTIuNSAxNS4yVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjcwLjVjMC05LjUtMi44LTE4LjctOC4xLTI2LjZsLTQ3LjktNzEuOGMtNS4zLTcuOS04LjEtMTcuMS04LjEtMjYuNlYxMjggNTQuMyA0OGMwLTI2LjUtMjEuNS00OC00OC00OGgtNC41Yy0uMiAwLS40IDAtLjYgMGMtLjQgMC0uOCAwLTEuMiAwQzMxMSAwIDI5NS43IDkuNyAyODUuNyAxOC44QzI3Ni40IDI3LjIgMjU3LjIgNDAgMjI0IDQwcy01Mi40LTEyLjgtNjEuNy0yMS4yQzE1Mi4zIDkuNyAxMzcgMCAxMTguMyAwYy0uNCAwLS44IDAtMS4yIDBjLS4yIDAtLjQgMC0uNiAwSDExMkM4NS41IDAgNjQgMjEuNSA2NCA0OHY2LjNWMTI4djE3LjVjMCA5LjUtMi44IDE4LjctOC4xIDI2LjZMOC4xIDI0My45QzIuOCAyNTEuOCAwIDI2MS4xIDAgMjcwLjVWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDE3NmM5LjkgMCAxOS0zIDI2LjctOC4xQzE5NS45IDQ5Mi4yIDE5MiA0NzguNSAxOTIgNDY0VjI5NS44YzAtOC42IDEuNC0xNy4xIDQuMS0yNS4zbDExLTMzLjF6TTM0Ny4zIDM1Ni43bDQ4IDQ4YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTQ4LTQ4Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDB6bS0yOTQuNiA0OGw0OC00OGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZsLTQ4IDQ4Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFsQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg5Nmg2NCA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMlYyNjYuOGMtMjAuMiAyOC42LTMyIDYzLjUtMzIgMTAxLjJjMCAyNS4yIDUuMyA0OS4xIDE0LjggNzAuOEMxODkuNSA0NjMuNyAxNjAuNiA0ODAgMTI4IDQ4MGMtNTMgMC05Ni00My05Ni05NlY5NkMxNC4zIDk2IDAgODEuNyAwIDY0ek05NiA5NnY5Nmg2NFY5Nkg5NnpNMjI0IDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwzNTIgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhbFZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5NlYzODRjMCA1MyA0MyA5NiA5NiA5NmMyOC42IDAgNTQuMi0xMi41IDcxLjgtMzIuM2MuMS0xNC4yIDUuNi0yOC4zIDE2LjQtMzkuMWMuMi0uMiAuMS0uNi0uMi0uNmMtMzAuOSAwLTU2LTI1LjEtNTYtNTZzMjUuMS01NiA1Ni01NmMuMyAwIC40LS40IC4yLS42Yy0yMS45LTIxLjktMjEuOS01Ny4zIDAtNzkuMmMyLjQtMi40IDUtNC42IDcuOC02LjVWOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTYwIDk2IDMyek05NiAxOTJWOTZoNjR2OTZIOTZ6TTIxNiAzNzZjMjguOCAwIDQzLjIgMzQuOCAyMi45IDU1LjJjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGMyMC40LTIwLjQgNTUuMi01LjkgNTUuMiAyMi45YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0yOC44IDM0LjgtNDMuMiA1NS4yLTIyLjljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45QzQ0NC44IDQxMC44IDQ1OS4yIDM3NiA0ODggMzc2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0Yy0yOC44IDAtNDMuMi0zNC44LTIyLjktNTUuMmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwQzQxMC44IDI1OS4yIDM3NiAyNDQuOCAzNzYgMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0YzAgMjguOC0zNC44IDQzLjItNTUuMiAyMi45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45YzIwLjQgMjAuNCA1LjkgNTUuMi0yMi45IDU1LjJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjR6bTEwNC04OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTQwIDk2YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQyLjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5LjQgOS40TDI4LjEgMzQyLjZDMTAuMSAzNjAuNiAwIDM4NSAwIDQxMC41VjQxNmMwIDUzIDQzIDk2IDk2IDk2aDUuNWMyNS41IDAgNDkuOS0xMC4xIDY3LjktMjguMUw0NDggMjA1LjNsOS40IDkuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0zMi0zMi05Ni05Ni0zMi0zMnpNMjA1LjMgMjU2TDM1MiAxMDkuMyA0MDIuNyAxNjBsLTk2IDk2SDIwNS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDg4aDQ4IDU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjQwMGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MFY5NkMxNC4zIDk2IDAgODEuNyAwIDY0ek0xMzYgOTZIODhWMjU2aDQ4Vjk2ek0yODggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoNTYgNDggNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJWNDAwYzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwVjk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDI0IDk2SDM3NlYyNTZoNDhWOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpZGVvU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN2wtODYuNC02Ny43IDEzLjggOS4yYzkuOCA2LjUgMjIuNCA3LjIgMzIuOSAxLjZzMTYuOS0xNi40IDE2LjktMjguMlYxMjhjMC0xMS44LTYuNS0yMi42LTE2LjktMjguMnMtMjMtNS0zMi45IDEuNmwtOTYgNjRMNDQ4IDE3NC45VjE5MiAzMjB2NS44bC0zMi0yNS4xVjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgxMTMuOUwzOC44IDUuMXpNNDA3IDQxNi43TDMyLjMgMTIxLjVjLS4yIDIuMS0uMyA0LjMtLjMgNi41VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJjMjMuNCAwIDQzLjktMTIuNiA1NS0zMS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6TTU1OS4xIDk5LjhjMTAuNCA1LjYgMTYuOSAxNi40IDE2LjkgMjguMlYzODRjMCAxMS44LTYuNSAyMi42LTE2LjkgMjguMnMtMjMgNS0zMi45LTEuNmwtOTYtNjRMNDE2IDMzNy4xVjMyMCAxOTIgMTc0LjlsMTQuMi05LjUgOTYtNjRjOS44LTYuNSAyMi40LTcuMiAzMi45LTEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmloYXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MSAyMkwzMDUuOCA0LjdjMS4zLS45IDIuNy0xLjggNC4xLTIuNEMzMTMuMSAuNyAzMTYuNiAwIDMyMCAwczYuOSAuNyAxMC4xIDIuMmMxLjQgLjcgMi44IDEuNSA0LjEgMi40TDM1OSAyMkMzOTMgNDUuOCA0MzAuOCA2My41IDQ3MC44IDc0LjRsMjMgNi4zYzEuOCAuNSAzLjYgMS4xIDUuMiAyYzMuMiAxLjcgNS45IDQgOC4xIDYuOGMzLjggNC45IDUuNiAxMS4zIDQuNyAxNy44Yy0uNCAyLjgtMS4yIDUuNC0yLjUgNy44Yy0xLjcgMy4yLTQgNS45LTYuOCA4LjFjLTQuMyAzLjItOS42IDUuMS0xNS4xIDQuOUg0ODB2NTYuMWw2LjQgNS4xIDUuMiA0LjFjMjEuMSAxNi43IDQ1IDI5LjYgNzAuNSAzOC4xbDI4LjkgOS42YzEuNiAuNSAzLjIgMS4yIDQuNiAyYzMuMSAxLjcgNS44IDQuMSA3LjggNi45czMuNSA2LjEgNC4xIDkuNmMuNSAyLjcgLjYgNS41IC4xIDguM3MtMS40IDUuNC0yLjcgNy44Yy0xLjcgMy4xLTQuMSA1LjgtNi45IDcuOHMtNi4xIDMuNS05LjYgNC4xYy0xLjYgLjMtMy4zIC40LTUgLjRINTQ0djY1LjljMjAuNSAyMi44IDQ3LjQgMzkuMiA3Ny40IDQ2LjdDNjMyIDQwMyA2NDAgNDEyLjYgNjQwIDQyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNEg1NzZ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDM1MnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMTI4djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRjMC0xMS40IDgtMjEgMTguNi0yMy40YzMwLTcuNiA1Ni45LTIzLjkgNzcuNC00Ni43VjI4OEg1Ni42Yy0xLjcgMC0zLjQtLjEtNS0uNGMtMy41LS43LTYuOC0yLjEtOS42LTQuMXMtNS4yLTQuNy03LTcuOGMtMS4zLTIuNC0yLjMtNS0yLjctNy44cy0uNC01LjYgLjEtOC4zYy43LTMuNSAyLjEtNi44IDQuMS05LjZzNC43LTUuMiA3LjgtNi45YzEuNC0uOCAzLTEuNSA0LjYtMmwyOC45LTkuNmMyNS41LTguNSA0OS40LTIxLjQgNzAuNS0zOC4xbDUuMi00LjEgNi40LTUuMVYxNzYgMTI4aC03LjVjLTUuNSAuMS0xMC44LTEuNy0xNS4xLTQuOWMtMi44LTIuMS01LjEtNC44LTYuOC04LjFjLTEuMi0yLjQtMi4xLTUtMi41LTcuOGMtLjktNi41IC45LTEyLjggNC43LTE3LjhjMi4xLTIuOCA0LjgtNS4xIDguMS02LjhjMS42LS44IDMuNC0xLjUgNS4yLTJsMjMtNi4zQzIwOS4yIDYzLjUgMjQ3IDQ1LjggMjgxIDIyek00MTYgMTI4SDMyMCAyMjR2NjRoNzIgNDggNzJWMTI4ek0xNjAgMjg4djY0SDI5NmgyNCAyNEg0ODBWMjg4SDM0NCAzMjBoMEgyOTYgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c0NvdmlkU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w0NzIuMSAzNDQuN2MxMS40LTE5LjUgMTkuMS00MS40IDIyLjMtNjQuN0g1Mjh2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MTZINDk0LjRjLTQuMi0zMC43LTE2LjMtNTguOC0zNC4xLTgyLjNMNDg0IDEyNS45bDExLjMgMTEuM2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMNDcyLjcgNDYuN2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOUw0NTAuMSA5MmwtMjMuOCAyMy44QzQwMi44IDk3LjkgMzc0LjcgODUuOCAzNDQgODEuNlY0OGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyODBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMTZWODEuNmMtMzAuNyA0LjItNTguOCAxNi4zLTgyLjMgMzQuMUwxODkuOSA5MmwxMS4zLTExLjNjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwxMzQuMSA3OS44IDM4LjggNS4xem0zNjIuNSA0MDdMMTQ5LjIgMjEzLjVjLTEuNSA2LTIuNyAxMi4yLTMuNSAxOC41SDExMlYyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2ODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyODBoMzMuNmM0LjIgMzAuNyAxNi4zIDU4LjggMzQuMSA4Mi4zTDE1NiAzODYuMWwtMTEuMy0xMS4zYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDU2LjYgNTYuNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMMTg5LjkgNDIwbDIzLjgtMjMuOGMyMy41IDE3LjkgNTEuNyAyOS45IDgyLjMgMzQuMVY0NjRIMjgwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM0NFY0MzAuNGMyMC40LTIuOCAzOS43LTkuMSA1Ny4zLTE4LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpcnVzQ292aWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDgwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MFY4MS42YzMwLjcgNC4yIDU4LjggMTYuMyA4Mi4zIDM0LjFMMzg2LjEgOTIgMzc0LjggODAuNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDU2LjYgNTYuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDQyMCAxMjUuOWwtMjMuOCAyMy44YzE3LjkgMjMuNSAyOS45IDUxLjcgMzQuMSA4Mi4zSDQ2NFYyMTZjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyODBINDMwLjRjLTQuMiAzMC43LTE2LjMgNTguOC0zNC4xIDgyLjNMNDIwIDM4Ni4xbDExLjMtMTEuM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTU2LjYgNTYuNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOUwzODYuMSA0MjBsLTIzLjgtMjMuOGMtMjMuNSAxNy45LTUxLjcgMjkuOS04Mi4zIDM0LjFWNDY0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGgxNlY0MzAuNGMtMzAuNy00LjItNTguOC0xNi4zLTgyLjMtMzQuMUwxMjUuOSA0MjBsMTEuMyAxMS4zYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBMNDYuNyA0MDguN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwTDkyIDM4Ni4xbDIzLjgtMjMuOEM5Ny45IDMzOC44IDg1LjggMzEwLjcgODEuNiAyODBINDh2MTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjE2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2MTZIODEuNmM0LjItMzAuNyAxNi4zLTU4LjggMzQuMS04Mi4zTDkyIDEyNS45IDgwLjYgMTM3LjJjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNTYuNi01Ni42YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOUwxMjUuOSA5MmwyMy44IDIzLjhjMjMuNS0xNy45IDUxLjctMjkuOSA4Mi4zLTM0LjFWNDhIMjE2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptNDggMjAwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTY0IDEwNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpcnVzU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN2wtMTU0LjMtMTIxYy0yLTMwLjEgMjAuOC02MC4xIDU2LTYwLjFINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDUzMi41Yy00OS45IDAtNzQuOS02MC4zLTM5LjYtOTUuNmw4LjItOC4yYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC04LjIgOC4yQzQxMi4zIDExOC40IDM1MiA5My40IDM1MiA0My41VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjQzLjVjMCA0OS45LTYwLjMgNzQuOS05NS42IDM5LjZMMTg0LjIgNzVjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwYy0xLjYgMS42LTMuMSAzLjQtNC4zIDUuM0wzOC44IDUuMXptMjI1LjggMTc3YzYuOS0zLjkgMTQuOS02LjEgMjMuNC02LjFjMjYuNSAwIDQ4IDIxLjUgNDggNDhjMCA0LjQtLjYgOC43LTEuNyAxMi43bC02OS43LTU0LjZ6TTQwMiA0MTIuN0wxNDQuNyAyMTBjLTkuNSA4LjUtMjIuMiAxNC0zNy4yIDE0SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDExLjVjNDkuOSAwIDc0LjkgNjAuMyAzOS42IDk1LjZsLTguMiA4LjJjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsOC4yLTguMmMzNS4zLTM1LjMgOTUuNi0xMC4zIDk1LjYgMzkuNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NjguNWMwLTMxLjIgMjMuNi01Mi43IDUwLTU1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0My41YzAgNDkuOS02MC4zIDc0LjktOTUuNiAzOS42TDEyMC4yIDc1QzEwNy43IDYyLjUgODcuNSA2Mi41IDc1IDc1cy0xMi41IDMyLjggMCA0NS4zbDguMiA4LjJDMTE4LjQgMTYzLjcgOTMuNCAyMjQgNDMuNSAyMjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDMuNWM0OS45IDAgNzQuOSA2MC4zIDM5LjYgOTUuNkw3NSAzOTEuOGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw4LjItOC4yYzM1LjMtMzUuMyA5NS42LTEwLjMgOTUuNiAzOS42VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQ2OC41YzAtNDkuOSA2MC4zLTc0LjkgOTUuNi0zOS42bDguMiA4LjJjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOC4yLTguMmMtMzUuMy0zNS4zLTEwLjMtOTUuNiAzOS42LTk1LjZINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ2OC41Yy00OS45IDAtNzQuOS02MC4zLTM5LjYtOTUuNmw4LjItOC4yYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC04LjIgOC4yQzM0OC4zIDExOC40IDI4OCA5My40IDI4OCA0My41VjMyek0xNzYgMjI0YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTEyOCA1NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpcnVzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMzcuNWMwIDM1LjYgNDMuMSA1My41IDY4LjMgMjguM2w5LjUtOS41YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtOS41IDkuNUMyOTMgMTI0LjkgMzEwLjkgMTY4IDM0Ni41IDE2OEgzNjBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMzQ2LjVjLTM1LjYgMC01My41IDQzLjEtMjguMyA2OC4zbDkuNSA5LjVjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtOS41LTkuNUMyNTkuMSAyOTMgMjE2IDMxMC45IDIxNiAzNDYuNVYzNjBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzQ2LjVjMC0zNS42LTQzLjEtNTMuNS02OC4zLTI4LjNsLTkuNSA5LjVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsOS41LTkuNUM5MSAyNTkuMSA3My4xIDIxNiAzNy41IDIxNkgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNEgzNy41YzM1LjYgMCA1My41LTQzLjEgMjguMy02OC4zbC05LjUtOS41Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsOS41IDkuNUMxMjQuOSA5MSAxNjggNzMuMSAxNjggMzcuNVYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHptNDggMjI0YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptLTQ4LTY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTMyMCA4MGMwIDMzIDM5LjkgNDkuNSA2My4yIDI2LjJjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42QzU3NC41IDMxMi4xIDU5MSAzNTIgNjI0IDM1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtMzMgMC00OS41IDM5LjktMjYuMiA2My4yYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBDNTUxLjkgNDQ2LjUgNTEyIDQ2MyA1MTIgNDk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2YzAtMzMtMzkuOS00OS41LTYzLjItMjYuMmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkM0MTcuNSA0MjMuOSA0MDEgMzg0IDM2OCAzODRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZjMzMgMCA0OS41LTM5LjkgMjYuMi02My4yYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBDNDQwLjEgMjg5LjUgNDgwIDI3MyA0ODAgMjQwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTAgMTEyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvaWNlbWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMzIwYTgwIDgwIDAgMSAxIDAtMTYwIDgwIDgwIDAgMSAxIDAgMTYwem0xMTkuOCAwYzE1LjMtMjIuOSAyNC4yLTUwLjQgMjQuMi04MGMwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NFMwIDE2MC41IDAgMjQwczY0LjUgMTQ0IDE0NCAxNDRINDk2Yzc5LjUgMCAxNDQtNjQuNSAxNDQtMTQ0cy02NC41LTE0NC0xNDQtMTQ0cy0xNDQgNjQuNS0xNDQgMTQ0YzAgMjkuNiA4LjkgNTcuMSAyNC4yIDgwSDI2My44ek00OTYgMTYwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2xjYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAxNDRjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMTUuNyAwIDMwIDUuNiA0MS4yIDE1QzIxMi40IDEyLjQgMjMyLjcgMCAyNTYgMHM0My42IDEyLjQgNTQuOCAzMUMzMjIgMjEuNiAzMzYuMyAxNiAzNTIgMTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRjLTE0LjcgMC0yOC4zLTUtMzkuMS0xMy4zbC0zMiA0OEMyNzUuMyAxODcgMjY2IDE5MiAyNTYgMTkycy0xOS4zLTUtMjQuOS0xMy4zbC0zMi00OEMxODguMyAxMzkgMTc0LjcgMTQ0IDE2MCAxNDR6TTE0NCAzNTJsNDguNC0yNC4yYzEwLjItNS4xIDIxLjYtNy44IDMzLTcuOGMxOS42IDAgMzguNCA3LjggNTIuMiAyMS42bDMyLjUgMzIuNWM2LjMgNi4zIDE0LjkgOS45IDIzLjggOS45YzExLjMgMCAyMS44LTUuNiAyOC0xNWw5LjctMTQuNi01OC45LTY2LjNjLTkuMS0xMC4yLTIyLjItMTYuMS0zNS45LTE2LjFIMjM1LjFjLTEzLjcgMC0yNi44IDUuOS0zNS45IDE2LjFsLTU5LjkgNjcuNEwxNDQgMzUyem0xOS40LTk1LjhjMTguMi0yMC41IDQ0LjMtMzIuMiA3MS44LTMyLjJoNDEuOGMyNy40IDAgNTMuNSAxMS43IDcxLjggMzIuMmwxNTAuMiAxNjljOC41IDkuNSAxMy4yIDIxLjkgMTMuMiAzNC43YzAgMjguOC0yMy40IDUyLjItNTIuMiA1Mi4ySDUyLjJDMjMuNCA1MTIgMCA0ODguNiAwIDQ1OS44YzAtMTIuOCA0LjctMjUuMSAxMy4yLTM0LjdsMTUwLjItMTY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2xsZXliYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMS44IDI2Ny40Yy0yNi4xIDguNy01My40IDEzLjgtODEgMTUuMWM5LjItMTA1LjMtMzEuNS0yMDQuMi0xMDMuMi0yNzIuNEM0MzQuMSA0MS4xIDUxMiAxMzkuNSA1MTIgMjU2YzAgMy44LS4xIDcuNi0uMiAxMS40em0tMy45IDM0LjdjLTUuOCAzMi0xNy42IDYyLTM0LjIgODguN2MtOTcuNSA0OC41LTIxNy43IDQyLjYtMzExLjktMjQuNWMyMy43LTM2LjIgNTUuNC02Ny43IDk0LjUtOTEuOGM3OS45IDQzLjIgMTcwLjEgNTAuOCAyNTEuNiAyNy42em0tMjM2LTU1LjVjLTIuNS05MC45LTQxLjEtMTcyLjctMTAxLjktMjMxLjdDMTk2LjggNS4yIDIyNS44IDAgMjU2IDBjMi43IDAgNS4zIDAgNy45IC4xYzkwLjggNjAuMiAxNDUuNyAxNjcuMiAxMzQuNyAyODIuM2MtNDMuMS0yLjQtODYuNC0xNC4xLTEyNi44LTM1Ljl6TTEzOCAyOC44YzIwLjYgMTguMyAzOC43IDM5LjQgNTMuNyA2Mi42Qzk1LjkgMTM2LjEgMzAuNiAyMjAuOCA3LjMgMzE2LjlDMi41IDI5Ny40IDAgMjc3IDAgMjU2QzAgMTU3LjIgNTYgNzEuNSAxMzggMjguOHptNjkuNiA5MC41YzE5LjUgMzguNiAzMSA4MS45IDMyLjMgMTI3LjdDMTYyLjUgMjk0LjYgMTEwLjkgMzY4LjkgOTAuMiA0NTFDNjYgNDMwLjQgNDUuNiA0MDUuNCAzMC40IDM3Ny4yYzYuNy0xMDguNyA3MS45LTIwOS45IDE3Ny4xLTI1Ny45ek0yNTYgNTEyYy01MC43IDAtOTgtMTQuNy0xMzcuOC00MC4yYzUuNi0yNyAxNC44LTUzLjEgMjcuNC03Ny43QzIzMi4yIDQ1NC42IDMzOC4xIDQ2OC44IDQzMyA0NDFjLTQ2IDQ0LTEwOC4zIDcxLTE3NyA3MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sdW1lSGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzMuNiAzMi41QzU5OC41IDg1LjIgNjQwIDE2NS44IDY0MCAyNTZzLTQxLjUgMTcwLjctMTA2LjQgMjIzLjVjLTEwLjMgOC40LTI1LjQgNi44LTMzLjgtMy41cy02LjgtMjUuNCAzLjUtMzMuOEM1NTcuNSAzOTguMiA1OTIgMzMxLjIgNTkyIDI1NnMtMzQuNS0xNDIuMi04OC43LTE4Ni4zYy0xMC4zLTguNC0xMS44LTIzLjUtMy41LTMzLjhzMjMuNS0xMS44IDMzLjgtMy41ek00NzMuMSAxMDdjNDMuMiAzNS4yIDcwLjkgODguOSA3MC45IDE0OXMtMjcuNyAxMTMuOC03MC45IDE0OWMtMTAuMyA4LjQtMjUuNCA2LjgtMzMuOC0zLjVzLTYuOC0yNS40IDMuNS0zMy44QzQ3NS4zIDM0MS4zIDQ5NiAzMDEuMSA0OTYgMjU2cy0yMC43LTg1LjMtNTMuMi0xMTEuOGMtMTAuMy04LjQtMTEuOC0yMy41LTMuNS0zMy44czIzLjUtMTEuOCAzMy44LTMuNXptLTYwLjUgNzQuNUM0MzQuMSAxOTkuMSA0NDggMjI1LjkgNDQ4IDI1NnMtMTMuOSA1Ni45LTM1LjQgNzQuNWMtMTAuMyA4LjQtMjUuNCA2LjgtMzMuOC0zLjVzLTYuOC0yNS40IDMuNS0zMy44QzM5My4xIDI4NC40IDQwMCAyNzEgNDAwIDI1NnMtNi45LTI4LjQtMTcuNy0zNy4zYy0xMC4zLTguNC0xMS44LTIzLjUtMy41LTMzLjhzMjMuNS0xMS44IDMzLjgtMy41ek0zMDEuMSAzNC44QzMxMi42IDQwIDMyMCA1MS40IDMyMCA2NFY0NDhjMCAxMi42LTcuNCAyNC0xOC45IDI5LjJzLTI1IDMuMS0zNC40LTUuM0wxMzEuOCAzNTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjIyNGMwLTM1LjMgMjguNy02NCA2NC02NGg2Ny44TDI2Ni43IDQwLjFjOS40LTguNCAyMi45LTEwLjQgMzQuNC01LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbHVtZUxvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDEuMSAzNC44QzMxMi42IDQwIDMyMCA1MS40IDMyMCA2NFY0NDhjMCAxMi42LTcuNCAyNC0xOC45IDI5LjJzLTI1IDMuMS0zNC40LTUuM0wxMzEuOCAzNTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjIyNGMwLTM1LjMgMjguNy02NCA2NC02NGg2Ny44TDI2Ni43IDQwLjFjOS40LTguNCAyMi45LTEwLjQgMzQuNC01LjN6TTQxMi42IDE4MS41QzQzNC4xIDE5OS4xIDQ0OCAyMjUuOSA0NDggMjU2cy0xMy45IDU2LjktMzUuNCA3NC41Yy0xMC4zIDguNC0yNS40IDYuOC0zMy44LTMuNXMtNi44LTI1LjQgMy41LTMzLjhDMzkzLjEgMjg0LjQgNDAwIDI3MSA0MDAgMjU2cy02LjktMjguNC0xNy43LTM3LjNjLTEwLjMtOC40LTExLjgtMjMuNS0zLjUtMzMuOHMyMy41LTExLjggMzMuOC0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbHVtZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNjRjMC0xMi42LTcuNC0yNC0xOC45LTI5LjJzLTI1LTMuMS0zNC40IDUuM0wxMzEuOCAxNjBINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0aDY3LjhMMjY2LjcgNDcxLjljOS40IDguNCAyMi45IDEwLjQgMzQuNCA1LjNTMzIwIDQ2MC42IDMyMCA0NDhWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbHVtZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS4xIDM0LjhDMzEyLjYgNDAgMzIwIDUxLjQgMzIwIDY0VjQ0OGMwIDEyLjYtNy40IDI0LTE4LjkgMjkuMnMtMjUgMy4xLTM0LjQtNS4zTDEzMS44IDM1Mkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDY3LjhMMjY2LjcgNDAuMWM5LjQtOC40IDIyLjktMTAuNCAzNC40LTUuM3pNNDI1IDE2N2w1NSA1NSA1NS01NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTU1IDU1IDU1IDU1YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTU1LTU1LTU1IDU1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU1LTU1LTU1LTU1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZyQ2FyZGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMTg0LjRjMjQuMiAwIDQ2LjQtMTMuNyA1Ny4yLTM1LjRsMzItNjRjOC44LTE3LjUgMjYuNy0yOC42IDQ2LjMtMjguNnMzNy41IDExLjEgNDYuMyAyOC42bDMyIDY0YzEwLjggMjEuNyAzMyAzNS40IDU3LjIgMzUuNEg1NzZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0ek05NiAyNDBhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgOTYgMjQwem0zODQtNjRhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOCAzNGMxNi41LTYuMiAzNSAyLjIgNDEuMiAxOC43bDExMC4yIDI5NEwyNTcuMyA1NWM0LTEzLjcgMTYuNS0yMyAzMC43LTIzczI2LjcgOS40IDMwLjcgMjNsODUuMSAyOTEuN0w1MTQgNTIuOGM2LjItMTYuNSAyNC42LTI0LjkgNDEuMi0xOC43czI0LjkgMjQuNyAxOC43IDQxLjJsLTE0NCAzODRjLTQuOCAxMi45LTE3LjQgMjEuMy0zMS4yIDIwLjdzLTI1LjctOS44LTI5LjUtMjNMMjg4IDE3OC4zIDIwNi43IDQ1N2MtMy45IDEzLjItMTUuOCAyMi41LTI5LjUgMjNzLTI2LjMtNy44LTMxLjItMjAuN0wyIDc1LjJDLTQuMiA1OC43IDQuMiA0MC4yIDIwLjggMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbGtpZVRhbGtpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRTNjQgMTAuNyA2NCAyNFY5Nkg0OEMyMS41IDk2IDAgMTE3LjUgMCAxNDRWMzAwLjFjMCAxMi43IDUuMSAyNC45IDE0LjEgMzMuOWwzLjkgMy45YzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMDRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzcxLjljMC0xMi43IDUuMS0yNC45IDE0LjEtMzMuOWwzLjktMy45YzktOSAxNC4xLTIxLjIgMTQuMS0zMy45VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OEgzMjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJIMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMySDExMlYyNHptMCAxMzZIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2SDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NHpNNDE2IDI3MmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbmRNYWdpY1NwYXJrbGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzNC43IDQyLjdMMTk3IDU2LjhjLTMgMS4xLTUgNC01IDcuMnMyIDYuMSA1IDcuMmwzNy43IDE0LjFMMjQ4LjggMTIzYzEuMSAzIDQgNSA3LjIgNXM2LjEtMiA3LjItNWwxNC4xLTM3LjdMMzE1IDcxLjJjMy0xLjEgNS00IDUtNy4ycy0yLTYuMS01LTcuMkwyNzcuMyA0Mi43IDI2My4yIDVjLTEuMS0zLTQtNS03LjItNXMtNi4xIDItNy4yIDVMMjM0LjcgNDIuN3pNNDYuMSAzOTUuNGMtMTguNyAxOC43LTE4LjcgNDkuMSAwIDY3LjlsMzQuNiAzNC42YzE4LjcgMTguNyA0OS4xIDE4LjcgNjcuOSAwTDUyOS45IDExNi41YzE4LjctMTguNyAxOC43LTQ5LjEgMC02Ny45TDQ5NS4zIDE0LjFjLTE4LjctMTguNy00OS4xLTE4LjctNjcuOSAwTDQ2LjEgMzk1LjR6TTQ4NC42IDgyLjZsLTEwNSAxMDUtMjMuMy0yMy4zIDEwNS0xMDUgMjMuMyAyMy4zek03LjUgMTE3LjJDMyAxMTguOSAwIDEyMy4yIDAgMTI4czMgOS4xIDcuNSAxMC44TDY0IDE2MGwyMS4yIDU2LjVjMS43IDQuNSA2IDcuNSAxMC44IDcuNXM5LjEtMyAxMC44LTcuNUwxMjggMTYwbDU2LjUtMjEuMmM0LjUtMS43IDcuNS02IDcuNS0xMC44cy0zLTkuMS03LjUtMTAuOEwxMjggOTYgMTA2LjggMzkuNUMxMDUuMSAzNSAxMDAuOCAzMiA5NiAzMnMtOS4xIDMtMTAuOCA3LjVMNjQgOTYgNy41IDExNy4yem0zNTIgMjU2Yy00LjUgMS43LTcuNSA2LTcuNSAxMC44czMgOS4xIDcuNSAxMC44TDQxNiA0MTZsMjEuMiA1Ni41YzEuNyA0LjUgNiA3LjUgMTAuOCA3LjVzOS4xLTMgMTAuOC03LjVMNDgwIDQxNmw1Ni41LTIxLjJjNC41LTEuNyA3LjUtNiA3LjUtMTAuOHMtMy05LjEtNy41LTEwLjhMNDgwIDM1MmwtMjEuMi01Ni41Yy0xLjctNC41LTYtNy41LTEwLjgtNy41cy05LjEgMy0xMC44IDcuNUw0MTYgMzUybC01Ni41IDIxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbmRNYWdpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4xIDQ2My4zYy0xOC43LTE4LjctMTguNy00OS4xIDAtNjcuOUwzOTUuNCAxNC4xYzE4LjctMTguNyA0OS4xLTE4LjcgNjcuOSAwbDM0LjYgMzQuNmMxOC43IDE4LjcgMTguNyA0OS4xIDAgNjcuOUwxMTYuNSA0OTcuOWMtMTguNyAxOC43LTQ5LjEgMTguNy02Ny45IDBMMTQuMSA0NjMuM3pNMzQ3LjYgMTg3LjZsMTA1LTEwNUw0MjkuNCA1OS4zbC0xMDUgMTA1IDIzLjMgMjMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2FuZFNwYXJrbGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCA2LjFjOS41LTguNSAyNC04LjEgMzMgLjlsOCA4YzkgOSA5LjQgMjMuNSAuOSAzM2wtODUuOCA5NS45Yy0yLjYgMi45LTQuMSA2LjctNC4xIDEwLjdWMTc2YzAgOC44LTcuMiAxNi0xNiAxNkgzODQuMmMtNC42IDAtOC45IDEuOS0xMS45IDUuM0wxMDAuNyA1MDAuOUM5NC4zIDUwOCA4NS4zIDUxMiA3NS44IDUxMmMtOC44IDAtMTcuMy0zLjUtMjMuNS05LjhMOS43IDQ1OS43QzMuNSA0NTMuNCAwIDQ0NSAwIDQzNi4yYzAtOS41IDQtMTguNSAxMS4xLTI0LjhsMTExLjYtOTkuOGMzLjQtMyA1LjMtNy40IDUuMy0xMS45VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoMzQuNmMzLjkgMCA3LjctMS41IDEwLjctNC4xTDQ2NCA2LjF6TTQzMiAyODhjMy42IDAgNi43IDIuNCA3LjcgNS44bDE0LjggNTEuNyA1MS43IDE0LjhjMy40IDEgNS44IDQuMSA1LjggNy43cy0yLjQgNi43LTUuOCA3LjdsLTUxLjcgMTQuOC0xNC44IDUxLjdjLTEgMy40LTQuMSA1LjgtNy43IDUuOHMtNi43LTIuNC03LjctNS44bC0xNC44LTUxLjctNTEuNy0xNC44Yy0zLjQtMS01LjgtNC4xLTUuOC03LjdzMi40LTYuNyA1LjgtNy43bDUxLjctMTQuOCAxNC44LTUxLjdjMS0zLjQgNC4xLTUuOCA3LjctNS44ek04Ny43IDY5LjhsMTQuOCA1MS43IDUxLjcgMTQuOGMzLjQgMSA1LjggNC4xIDUuOCA3LjdzLTIuNCA2LjctNS44IDcuN2wtNTEuNyAxNC44TDg3LjcgMjE4LjJjLTEgMy40LTQuMSA1LjgtNy43IDUuOHMtNi43LTIuNC03LjctNS44TDU3LjUgMTY2LjUgNS44IDE1MS43Yy0zLjQtMS01LjgtNC4xLTUuOC03LjdzMi40LTYuNyA1LjgtNy43bDUxLjctMTQuOEw3Mi4zIDY5LjhjMS0zLjQgNC4xLTUuOCA3LjctNS44czYuNyAyLjQgNy43IDUuOHpNMjA4IDBjMy43IDAgNi45IDIuNSA3LjggNi4xbDYuOCAyNy4zIDI3LjMgNi44YzMuNiAuOSA2LjEgNC4xIDYuMSA3LjhzLTIuNSA2LjktNi4xIDcuOGwtMjcuMyA2LjgtNi44IDI3LjNjLS45IDMuNi00LjEgNi4xLTcuOCA2LjFzLTYuOS0yLjUtNy44LTYuMWwtNi44LTI3LjMtMjcuMy02LjhjLTMuNi0uOS02LjEtNC4xLTYuMS03LjhzMi41LTYuOSA2LjEtNy44bDI3LjMtNi44IDYuOC0yNy4zYy45LTMuNiA0LjEtNi4xIDcuOC02LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhcmVob3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ4OFYxNzEuM2MwLTI2LjIgMTUuOS00OS43IDQwLjItNTkuNEwzMDguMSA0LjhjNy42LTMuMSAxNi4xLTMuMSAyMy44IDBMNTk5LjggMTExLjljMjQuMyA5LjcgNDAuMiAzMy4zIDQwLjIgNTkuNFY0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRINTY4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em00ODggMjRsLTMzNiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY0MzJINTEybDAgNTZjMCAxMy4zLTEwLjcgMjQtMjQgMjR6TTEyOCA0MDBWMzM2SDUxMnY2NEgxMjh6bTAtOTZWMjI0SDUxMmwwIDgwSDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F0ZXJMYWRkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDEyNy43QzEyOCA3NC45IDE3MC45IDMyIDIyMy43IDMyYzQ4LjMgMCA4OSAzNiA5NSA4My45bDEgOC4yYzIuMiAxNy41LTEwLjIgMzMuNS0yNy44IDM1LjdzLTMzLjUtMTAuMi0zNS43LTI3LjhsLTEtOC4yYy0yLTE1LjktMTUuNS0yNy44LTMxLjUtMjcuOGMtMTcuNSAwLTMxLjcgMTQuMi0zMS43IDMxLjdWMjI0SDM4NFYxMjcuN0MzODQgNzQuOSA0MjYuOSAzMiA0NzkuNyAzMmM0OC4zIDAgODkgMzYgOTUgODMuOWwxIDguMmMyLjIgMTcuNS0xMC4yIDMzLjUtMjcuOCAzNS43cy0zMy41LTEwLjItMzUuNy0yNy44bC0xLTguMmMtMi0xNS45LTE1LjUtMjcuOC0zMS41LTI3LjhjLTE3LjUgMC0zMS43IDE0LjItMzEuNyAzMS43VjM2MWMtMS42IDEtMy4zIDItNC44IDMuMWMtMTggMTIuNC00MC4xIDIwLjMtNTkuMiAyMC4zaDBWMjg4SDE5MnY5Ni41Yy0xOSAwLTQxLjItNy45LTU5LjEtMjAuM2MtMS42LTEuMS0zLjItMi4yLTQuOS0zLjFWMTI3Ljd6TTMwNi41IDM4OS45QzMyOSA0MDUuNCAzNTYuNSA0MTYgMzg0IDQxNmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA0NjkuNyA0MTcgNDgwIDM4NCA0ODBjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA0MDUuMiAxNjUuMSA0MTYgMTkyIDQxNmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjUgNjkuOWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwQzMyOSA4NS40IDM1Ni41IDk2IDM4NCA5NmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSAxNDkuNyA0MTcgMTYwIDM4NCAxNjBjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40QzQyLjggOTIuNiA2MSA4My41IDc1LjMgNzEuNmMxMS4xLTkuNSAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDg1LjIgMTY1LjEgOTYgMTkyIDk2YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMXptMzcgMjg4QzMyOSAzNzMuNCAzNTYuNSAzODQgMzg0IDM4NGMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA0MzcuNyA0MTcgNDQ4IDM4NCA0NDhjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyAzNzMuMiAxNjUuMSAzODQgMTkyIDM4NGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHptMC0xNDRDMzI5IDIyOS40IDM1Ni41IDI0MCAzODQgMjQwYzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDI5My43IDQxNyAzMDQgMzg0IDMwNGMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNSAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDIyOS4yIDE2NS4xIDI0MCAxOTIgMjQwYzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXZlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzMjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDE2aDk2VjI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTEyVjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjk2SDE5MlYyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTZWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWdodEhhbmdpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDk2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTEyMi41IDMyYzMuNS0xMCA1LjUtMjAuOCA1LjUtMzJjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAxMS4yIDEuOSAyMiA1LjUgMzJIMTIwYy0yMiAwLTQxLjIgMTUtNDYuNiAzNi40bC03MiAyODhjLTMuNiAxNC4zLS40IDI5LjUgOC43IDQxLjJTMzMuMiA1MTIgNDggNTEySDQ2NGMxNC44IDAgMjguNy02LjggMzcuOC0xOC41czEyLjMtMjYuOCA4LjctNDEuMmwtNzItMjg4QzQzMy4yIDE0MyA0MTQgMTI4IDM5MiAxMjhIMzQ2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWdodFNjYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxNzZhMTI4IDEyOCAwIDEgMSAyNTYgMCAxMjggMTI4IDAgMSAxIC0yNTYgMHpNMzkxLjggNjRDMzU5LjUgMjQuOSAzMTAuNyAwIDI1NiAwUzE1Mi41IDI0LjkgMTIwLjIgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzkxLjh6TTI5NiAyMjRjMC0xMC42LTQuMS0yMC4yLTEwLjktMjcuNGwzMy42LTc4LjNjMy41LTguMS0uMy0xNy41LTguNC0yMXMtMTcuNSAuMy0yMSA4LjRMMjU1LjcgMTg0Yy0yMiAuMS0zOS43IDE4LTM5LjcgNDBjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2hlYXRBd25DaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDUgNDFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwzODMgOTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw4OC04OHpNMzA1LjUgMjcuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMjcxLjUgMzguNmMtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNC0zMC41IDMwLjVjLTMuNC0yNy4zLTE1LjUtNTMuOC0zNi41LTc0LjhsLTExLjMtMTEuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTExLjMgMTEuM2MtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNC0zMC41IDMwLjVjLTMuNC0yNy4zLTE1LjUtNTMuOC0zNi41LTc0LjhMMTAxLjggMjMxYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw2Ny45IDI0Mi4zYy0zNy41IDM3LjUtMzcuNSA5OC4zIDAgMTM1LjhsMTAuNCAxMC40TDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw2OC45LTY4LjkgMTIuMiAxMi4yYzM3LjUgMzcuNSA5OC4zIDM3LjUgMTM1LjggMGwxMS4zLTExLjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTExLjMtMTEuM2MtMjEuOC0yMS44LTQ5LjYtMzQuMS03OC4xLTM2LjlsMzEuOS0zMS45IDEyLjIgMTIuMmMyMi41IDIyLjUgNTMuMyAzMS41IDgyLjQgMjdjMC0xIDAtMi4xIDAtMy4xYzAtMzMuMSA5LjEtNjQuMSAyNS05MC42Yy0xNS41LTguNy0zMi41LTEzLjgtNDkuOC0xNS41bDMxLjktMzEuOSAxMi4yIDEyLjJjNiA2IDEyLjYgMTEuMSAxOS43IDE1LjJjMjcuNS0zNCA2Ny4zLTU3LjUgMTEyLjYtNjMuOGMtNC4xLTMuOC04LjQtNy4zLTEyLjktMTAuNUw1MDUgMTM3YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU5LjQgNTkuNGMtMjAuNi00LjQtNDItMy43LTYyLjMgMi4xYzYuMS0yMS4zIDYuNi00My44IDEuNC02NS4zTDQwOSA0MWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDMyOS4xIDUyLjljLTMuNy01LTcuOC05LjgtMTIuNC0xNC4zTDMwNS41IDI3LjN6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoZWF0QXduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNSA0MWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDM4MyA5NWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDg4LTg4ek0zMDUuNSAyNy4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNzEuNSAzOC42Yy0zNy41IDM3LjUtMzcuNSA5OC4zIDAgMTM1LjhsMTAuNCAxMC40LTMwLjUgMzAuNWMtMy40LTI3LjMtMTUuNS01My44LTM2LjUtNzQuOGwtMTEuMy0xMS4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGwtMTEuMyAxMS4zYy0zNy41IDM3LjUtMzcuNSA5OC4zIDAgMTM1LjhsMTAuNCAxMC40LTMwLjUgMzAuNWMtMy40LTI3LjMtMTUuNS01My44LTM2LjUtNzQuOEwxMDEuOCAyMzFjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDY3LjkgMjQyLjNjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjRMOS40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDY4LjktNjguOSAxMi4yIDEyLjJjMzcuNSAzNy41IDk4LjMgMzcuNSAxMzUuOCAwbDExLjMtMTEuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTEuMy0xMS4zYy0yMS44LTIxLjgtNDkuNi0zNC4xLTc4LjEtMzYuOWwzMS45LTMxLjkgMTIuMiAxMi4yYzM3LjUgMzcuNSA5OC4zIDM3LjUgMTM1LjggMGwxMS4zLTExLjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTExLjMtMTEuM2MtMjEuOC0yMS44LTQ5LjYtMzQuMS03OC4xLTM2LjlsMzEuOS0zMS45IDEyLjIgMTIuMmMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBMNDg2LjUgMjMxYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42TDQ3NS4yIDE5N2MtNS4yLTUuMi0xMC42LTkuOC0xNi40LTEzLjlMNTA1IDEzN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC01OS40IDU5LjRjLTIwLjYtNC40LTQyLTMuNy02Mi4zIDIuMWM2LjEtMjEuMyA2LjYtNDMuOCAxLjQtNjUuM0w0MDkgNDFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwzMjkuMSA1Mi45Yy0zLjctNS03LjgtOS44LTEyLjQtMTQuM0wzMDUuNSAyNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGVlbGNoYWlyTW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMjA0LjUgMTIxLjNjLTUuNC0yLjUtMTEuNy0xLjktMTYuNCAxLjdsLTQwLjkgMzAuN2MtMTQuMSAxMC42LTM0LjIgNy43LTQ0LjgtNi40cy03LjctMzQuMiA2LjQtNDQuOGw0MC45LTMwLjdjMjMuNy0xNy44IDU1LjMtMjEgODIuMS04LjRsOTAuNCA0Mi41YzI5LjEgMTMuNyAzNi44IDUxLjYgMTUuMiA3NS41TDI5OS4xIDIyNGg5Ny40YzMwLjMgMCA1MyAyNy43IDQ3LjEgNTcuNEw0MTUuNCA0MjIuM2MtMy41IDE3LjMtMjAuMyAyOC42LTM3LjcgMjUuMXMtMjguNi0yMC4zLTI1LjEtMzcuN0wzNzcgMjg4SDMwNi43YzguNiAxOS42IDEzLjMgNDEuMiAxMy4zIDY0YzAgODguNC03MS42IDE2MC0xNjAgMTYwUzAgNDQwLjQgMCAzNTJzNzEuNi0xNjAgMTYwLTE2MGMxMS4xIDAgMjIgMS4xIDMyLjQgMy4zbDU0LjItNTQuMi00Mi4xLTE5Ljh6TTE2MCA0NDhhOTYgOTYgMCAxIDAgMC0xOTIgOTYgOTYgMCAxIDAgMCAxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoZWVsY2hhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMTIwLjUgMjQ3LjJjMTIuNC00LjcgMTguNy0xOC41IDE0LTMwLjlzLTE4LjUtMTguNy0zMC45LTE0QzQzLjEgMjI1LjEgMCAyODMuNSAwIDM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGM2MS4yIDAgMTE0LjMtMzQuMyAxNDEuMi04NC43YzYuMi0xMS43IDEuOC0yNi4yLTkuOS0zMi41cy0yNi4yLTEuOC0zMi41IDkuOUMyNDAgNDQwIDIwMi44IDQ2NCAxNjAgNDY0Qzk4LjEgNDY0IDQ4IDQxMy45IDQ4IDM1MmMwLTQ3LjkgMzAuMS04OC44IDcyLjUtMTA0Ljh6TTI1OS44IDE3NmwtMS45LTkuN2MtNC41LTIyLjMtMjQtMzguMy00Ni44LTM4LjNjLTMwLjEgMC01Mi43IDI3LjUtNDYuOCA1N2wyMy4xIDExNS41YzYgMjkuOSAzMi4yIDUxLjQgNjIuOCA1MS40aDUuMWMuNCAwIC44IDAgMS4zIDBoOTQuMWM2LjcgMCAxMi42IDQuMSAxNSAxMC40TDQwMiA0NTkuMmM2IDE2LjEgMjMuOCAyNC42IDQwLjEgMTkuMWw0OC0xNmMxNi44LTUuNiAyNS44LTIzLjcgMjAuMi00MC41cy0yMy43LTI1LjgtNDAuNS0yMC4ybC0xOC43IDYuMi0yNS41LTY4Yy0xMS43LTMxLjItNDEuNi01MS45LTc0LjktNTEuOUgyODIuMmwtOS42LTQ4SDMzNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2hpc2tleUdsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyYy05LjMgMC0xOC4xIDQtMjQuMiAxMS4xUy0xIDU5LjQgLjMgNjguNmw1MCAzNDIuOWM1LjcgMzkuMyAzOS40IDY4LjUgNzkuMiA2OC41aDI1M2MzOS43IDAgNzMuNC0yOS4xIDc5LjItNjguNWw1MC0zNDIuOWMxLjMtOS4yLTEuNC0xOC41LTcuNS0yNS41UzQ4OS4zIDMyIDQ4MCAzMkgzMnpNODcuNyAyMjRMNjkgOTZINDQzTDQyNC4zIDIyNEg4Ny43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0LjIgMjAyLjlDMTIzLjIgMTM2LjcgMjE2LjggOTYgMzIwIDk2czE5Ni44IDQwLjcgMjY1LjggMTA2LjljMTIuOCAxMi4yIDMzIDExLjggNDUuMi0uOXMxMS44LTMzLS45LTQ1LjJDNTQ5LjcgNzkuNSA0NDAuNCAzMiAzMjAgMzJTOTAuMyA3OS41IDkuOCAxNTYuN0MtMi45IDE2OS0zLjMgMTg5LjIgOC45IDIwMnMzMi41IDEzLjIgNDUuMiAuOXpNMzIwIDI1NmM1Ni44IDAgMTA4LjYgMjEuMSAxNDguMiA1NmMxMy4zIDExLjcgMzMuNSAxMC40IDQ1LjItMi44czEwLjQtMzMuNS0yLjgtNDUuMkM0NTkuOCAyMTkuMiAzOTMgMTkyIDMyMCAxOTJzLTEzOS44IDI3LjItMTkwLjUgNzJjLTEzLjMgMTEuNy0xNC41IDMxLjktMi44IDQ1LjJzMzEuOSAxNC41IDQ1LjIgMi44YzM5LjUtMzQuOSA5MS4zLTU2IDE0OC4yLTU2em02NCAxNjBhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzNTJjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptNjQgMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0xMjggNTEyaDMyYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE2MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmRvd01heGltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNOTYgOTZINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dNaW5pbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA2NEgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNlY5NkgxMjhWODBjMC00NC4yIDM1LjgtODAgODAtODBINDMyYzQ0LjIgMCA4MCAzNS44IDgwIDgwVjMwNGMwIDQ0LjItMzUuOCA4MC04MCA4MEg0MTZWMzIwaDE2YzguOCAwIDE2LTcuMiAxNi0xNlY4MGMwLTguOC03LjItMTYtMTYtMTZ6TTAgMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0SDMyMGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MnptNjQgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZUJvdHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTMuNCA5LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsNjQgNjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNjLTExLjggMTEuOC0zMC43IDEyLjUtNDMuMiAxLjlsLTkuNSA5LjUtNDguOCA0OC44Yy05LjIgOS4yLTExLjUgMjIuOS04LjYgMzUuNmM5LjQgNDAuOS0xLjkgODUuNi0zMy44IDExNy41TDE5Ny4zIDQ5My4zYy0yNSAyNS02NS41IDI1LTkwLjUgMGwtODgtODhjLTI1LTI1LTI1LTY1LjUgMC05MC41TDE4MC4yIDE1My4zYzMxLjktMzEuOSA3Ni42LTQzLjEgMTE3LjUtMzMuOGMxMi42IDIuOSAyNi40IC41IDM1LjUtOC42bDQ4LjgtNDguOCA5LjUtOS41Yy0xMC42LTEyLjYtMTAtMzEuNCAxLjktNDMuMnpNOTkuMyAzNDcuM2w2NS40IDY1LjRjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsOTcuNC05Ny40YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC02NS40LTY1LjRjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDk5LjMgMzI0LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5lR2xhc3NFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzQ3LjQgMCAzMy41IDEyLjggMzIuMSAyOS4zbC0xNCAxNjguNGMtNiA3MiA0Mi41IDEzNS4yIDEwOS45IDE1MC42VjQ0OEg4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4MCA4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJWMzQ4LjRjNjcuNC0xNS40IDExNS45LTc4LjYgMTA5LjktMTUwLjZsLTE0LTE2OC40QzI4Ni41IDEyLjggMjcyLjYgMCAyNTYgMEg2NHpNODEuOSAyMDMuMUw5My40IDY0SDIyNi42bDExLjYgMTM5LjFDMjQyIDI0OC44IDIwNS45IDI4OCAxNjAgMjg4cy04Mi0zOS4yLTc4LjEtODQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZUdsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLjEgMjkuM0MzMy41IDEyLjggNDcuNCAwIDY0IDBIMjU2YzE2LjYgMCAzMC41IDEyLjggMzEuOSAyOS4zbDE0IDE2OC40YzYgNzItNDIuNSAxMzUuMi0xMDkuOSAxNTAuNlY0NDhoNDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTYwIDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDQ4VjM0OC40QzYwLjYgMzMzIDEyLjEgMjY5LjggMTguMSAxOTcuOGwxNC0xNjguNHptNTYgOTguN0gyMzEuOWwtNS4zLTY0SDkzLjRsLTUuMyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV29uU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Mi40IDUzLjlDNTYuOCAzNy4xIDM4LjYgMjguMSAyMS45IDMzLjZTLTMuOSA1Ny40IDEuNiA3NC4xTDUxLjYgMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDcyLjlsNTYuNyAxNzAuMWM0LjUgMTMuNSAxNy40IDIyLjQgMzEuNiAyMS45czI2LjQtMTAuNCAyOS44LTI0LjJMMjMzIDI4OGg0NkwzMjEgNDU1LjhjMy40IDEzLjggMTUuNiAyMy43IDI5LjggMjQuMnMyNy4xLTguNCAzMS42LTIxLjlMNDM5LjEgMjg4SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NjAuNGw1MC0xNDkuOWM1LjYtMTYuOC0zLjUtMzQuOS0yMC4yLTQwLjVzLTM0LjkgMy41LTQwLjUgMjAuMkwzOTIuOSAyMjRIMzI5TDI4NyA1Ni4yQzI4My41IDQyIDI3MC43IDMyIDI1NiAzMnMtMjcuNSAxMC0zMSAyNC4yTDE4MyAyMjRoLTY0TDYyLjQgNTMuOXptNzggMjM0LjFIMTY3bC0xMS40IDQ1LjZMMTQwLjQgMjg4ek0yNDkgMjI0bDctMjguMSA3IDI4LjFIMjQ5em05NiA2NGgyNi42bC0xNS4yIDQ1LjZMMzQ1IDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV29ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOTZjMC01MyA0My05NiA5Ni05NmgzOC40QzQzOS45IDAgNDgwIDQwLjEgNDgwIDg5LjZWMTc2djE2VjM3NmMwIDc1LjEtNjAuOSAxMzYtMTM2IDEzNnMtMTM2LTYwLjktMTM2LTEzNlYyOTZjMC0yMi4xLTE3LjktNDAtNDAtNDBzLTQwIDE3LjktNDAgNDBWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjI5NmMwLTc1LjEgNjAuOS0xMzYgMTM2LTEzNnMxMzYgNjAuOSAxMzYgMTM2djgwYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBWMTkySDM1MmMtNTMgMC05Ni00My05Ni05NnptMTQ0LThhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3JlbmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAzMjBjODguNCAwIDE2MC03MS42IDE2MC0xNjBjMC0xNS4zLTIuMi0zMC4xLTYuMi00NC4yYy0zLjEtMTAuOC0xNi40LTEzLjItMjQuMy01LjNsLTc2LjggNzYuOGMtMyAzLTcuMSA0LjctMTEuMyA0LjdIMzM2Yy04LjggMC0xNi03LjItMTYtMTZWMTE4LjZjMC00LjIgMS43LTguMyA0LjctMTEuM2w3Ni44LTc2LjhjNy45LTcuOSA1LjQtMjEuMi01LjMtMjQuM0MzODIuMSAyLjIgMzY3LjMgMCAzNTIgMEMyNjMuNiAwIDE5MiA3MS42IDE5MiAxNjBjMCAxOS4xIDMuNCAzNy41IDkuNSA1NC41TDE5LjkgMzk2LjFDNy4yIDQwOC44IDAgNDI2LjEgMCA0NDQuMUMwIDQ4MS42IDMwLjQgNTEyIDY3LjkgNTEyYzE4IDAgMzUuMy03LjIgNDgtMTkuOUwyOTcuNSAzMTAuNWMxNyA2LjIgMzUuNCA5LjUgNTQuNSA5LjV6TTgwIDQwOGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVhSYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJWNDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjk2QzE0LjMgOTYgMCA4MS43IDAgNjR6TTI1NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMySDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4MHY0OEgxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMjQwdjcwLjZMMTg5LjEgMzA3Yy01LjItMi0xMC42LTMtMTYuMi0zaC0yLjFjLTIzLjYgMC00Mi44IDE5LjItNDIuOCA0Mi44YzAgOS42IDMuMiAxOC45IDkuMSAyNi40bDE4LjIgMjMuMmM5LjcgMTIuNCAyNC42IDE5LjYgNDAuMyAxOS42SDMxNi40YzE1LjcgMCAzMC42LTcuMiA0MC4zLTE5LjZsMTguMi0yMy4yYzUuOS03LjUgOS4xLTE2LjggOS4xLTI2LjRjMC0yMy42LTE5LjItNDIuOC00Mi44LTQyLjhIMzM5Yy01LjUgMC0xMSAxLTE2LjIgM0wyNzIgMzI2LjZWMjU2SDM4NGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyNzJWMTc2aDgwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDI3MlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2ek0yMDggMzUyYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptODAgMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzYuNiA4NC41YzExLjMtMTMuNiA5LjUtMzMuOC00LjEtNDUuMXMtMzMuOC05LjUtNDUuMSA0LjFMMTkyIDIwNiA1Ni42IDQzLjVDNDUuMyAyOS45IDI1LjEgMjguMSAxMS41IDM5LjRTLTMuOSA3MC45IDcuNCA4NC41TDE1MC4zIDI1NiA3LjQgNDI3LjVjLTExLjMgMTMuNi05LjUgMzMuOCA0LjEgNDUuMXMzMy44IDkuNSA0NS4xLTQuMUwxOTIgMzA2IDMyNy40IDQ2OC41YzExLjMgMTMuNiAzMS41IDE1LjQgNDUuMSA0LjFzMTUuNC0zMS41IDQuMS00NS4xTDIzMy43IDI1NiAzNzYuNiA4NC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDIuNiAxNTAuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxOTIgMjEwLjcgODYuNiAxMDUuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMTQ2LjcgMjU2IDQxLjQgMzYxLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTkyIDMwMS4zIDI5Ny40IDQwNi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMjM3LjMgMjU2IDM0Mi42IDE1MC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYbWFya3NMaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyem0wIDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6TTcgMTY3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw1NSA1NUw3IDMxMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU1LTU1IDU1IDU1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTUtNTUgNTUtNTVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNTUgNTVMNDEgMTY3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHpNMjY1IDE2N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw1NSA1NS01NSA1NWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU1LTU1IDU1IDU1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTUtNTUgNTUtNTVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNTUgNTUtNTUtNTV6TTQ1NSAxNjdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDU1IDU1LTU1IDU1Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNTUtNTUgNTUgNTVjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC01NS01NSA1NS01NWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC01NSA1NS01NS01NWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTggNDUuNEM0Ny44IDMxIDI3LjggMjcuNyAxMy40IDM4Uy00LjMgNjguMiA2IDgyLjZMMTYwIDI5OC4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI5OC4zTDM3OCA4Mi42YzEwLjMtMTQuNCA2LjktMzQuNC03LjQtNDQuNlMzMzYuMiAzMSAzMjYgNDUuNEwxOTIgMjMyLjkgNTggNDUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWVuU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OC42IDQ2LjJDNDguOCAzMS41IDI5IDI3LjYgMTQuMyAzNy40Uy00LjQgNjcgNS40IDgxLjdMMTAwLjIgMjI0SDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDgwdjMySDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDgwdjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzg0aDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE5MlYyODhoODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjE5LjhMMzE0LjYgODEuN2M5LjgtMTQuNyA1LjgtMzQuNi04LjktNDQuNHMtMzQuNi01LjgtNDQuNCA4LjlMMTYwIDE5OC4zIDU4LjYgNDYuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWluWWFuZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNjRjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZzLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2QzE1MCA0NDggNjQgMzYyIDY0IDI1NlMxNTAgNjQgMjU2IDY0em0wIDQ0OEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTMyLTM1MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0yMjQgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkgzNTJjMTIuNCAwIDIzLjcgNy4yIDI5IDE4LjRzMy42IDI0LjUtNC40IDM0LjFMMTAwLjMgNDE2SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTIuNCAwLTIzLjctNy4yLTI5LTE4LjRzLTMuNi0yNC41IDQuNC0zNC4xTDI4My43IDk2SDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0FkZHJlc3NCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA0OGM4LjggMCAxNiA3LjIgMTYgMTZWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjY0YzAtOC44IDcuMi0xNiAxNi0xNkgzODR6TTk2IDBDNjAuNyAwIDMyIDI4LjcgMzIgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg5NnpNMjQwIDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHptLTMyIDMyYy00NC4yIDAtODAgMzUuOC04MCA4MGMwIDguOCA3LjIgMTYgMTYgMTZIMzM2YzguOCAwIDE2LTcuMiAxNi0xNmMwLTQ0LjItMzUuOC04MC04MC04MEgyMDh6TTUxMiA4MGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2Vjgwek00OTYgMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2em0xNiAxNDRjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0FkZHJlc3NDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA4MGM4LjggMCAxNiA3LjIgMTYgMTZWNDE2YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2Vjk2YzAtOC44IDcuMi0xNiAxNi0xNkg1MTJ6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjA4IDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHptLTMyIDMyYy00NC4yIDAtODAgMzUuOC04MCA4MGMwIDguOCA3LjIgMTYgMTYgMTZIMzA0YzguOCAwIDE2LTcuMiAxNi0xNmMwLTQ0LjItMzUuOC04MC04MC04MEgxNzZ6TTM3NiAxNDRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzc2em0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQmVsbFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTQyLjYgNDAwYzIuNy03LjggMS4zLTE2LjUtMy45LTIzbC0xNC45LTE4LjZDNDk1LjUgMzIyLjkgNDgwIDI3OC44IDQ4MCAyMzMuNFYyMDhjMC03Ny40LTU1LTE0Mi0xMjgtMTU2LjhWMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNTEuMmMtNDIuNiA4LjYtNzkgMzQuMi0xMDIgNjkuM0wzOC44IDUuMXpNMjI0IDE1MC4zQzI0My42IDExNy43IDI3OS4zIDk2IDMyMCA5NmM2MS45IDAgMTEyIDUwLjEgMTEyIDExMnYyNS40YzAgMzIuNyA2LjQgNjQuOCAxOC43IDk0LjVMMjI0IDE1MC4zek00MDYuMiA0MTZsLTYwLjktNDhIMTY4LjNjMjEuMi0zMi44IDM0LjQtNzAuMyAzOC40LTEwOS4xTDE2MCAyMjIuMXYxMS40YzAgNDUuNC0xNS41IDg5LjUtNDMuOCAxMjQuOUwxMDEuMyAzNzdjLTUuOCA3LjItNi45IDE3LjEtMi45IDI1LjRzMTIuNCAxMy42IDIxLjYgMTMuNkg0MDYuMnpNMzg0IDQ0OEgzMjAgMjU2YzAgMTcgNi43IDMzLjMgMTguNyA0NS4zczI4LjMgMTguNyA0NS4zIDE4LjdzMzMuMy02LjcgNDUuMy0xOC43czE4LjctMjguMyAxOC43LTQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0JlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjUxLjJDMTE5IDY2IDY0IDEzMC42IDY0IDIwOHYyNS40YzAgNDUuNC0xNS41IDg5LjUtNDMuOCAxMjQuOUw1LjMgMzc3Yy01LjggNy4yLTYuOSAxNy4xLTIuOSAyNS40UzE0LjggNDE2IDI0IDQxNkg0MjRjOS4yIDAgMTcuNi01LjMgMjEuNi0xMy42czIuOS0xOC4yLTIuOS0yNS40bC0xNC45LTE4LjZDMzk5LjUgMzIyLjkgMzg0IDI3OC44IDM4NCAyMzMuNFYyMDhjMC03Ny40LTU1LTE0Mi0xMjgtMTU2LjhWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6bTAgOTZjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJ2MjUuNGMwIDQ3LjkgMTMuOSA5NC42IDM5LjcgMTM0LjZINzIuM0M5OC4xIDMyOCAxMTIgMjgxLjMgMTEyIDIzMy40VjIwOGMwLTYxLjkgNTAuMS0xMTIgMTEyLTExMnptNjQgMzUySDIyNCAxNjBjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNzMjguMyAxOC43IDQ1LjMgMTguN3MzMy4zLTYuNyA0NS4zLTE4LjdzMTguNy0yOC4zIDE4LjctNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBsMCA0OFY0NDEuNGwxMzAuMS05Mi45YzguMy02IDE5LjYtNiAyNy45IDBMMzM2IDQ0MS40VjQ4SDQ4VjBIMzM2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQ4OGMwIDktNSAxNy4yLTEzIDIxLjNzLTE3LjYgMy40LTI0LjktMS44TDE5MiAzOTcuNSAzNy45IDUwNy41Yy03LjMgNS4yLTE2LjkgNS45LTI0LjkgMS44UzAgNDk3IDAgNDg4VjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0OGMtOC44IDAtMTYgNy4yLTE2IDE2VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZoODBWNDAwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2NjRoODBjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTg4IDQwYzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDEwNGMtOC44IDAtMTYtNy4yLTE2LTE2VjEwNHpNMjMyIDg4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnY0OGMwIDguOC03LjIgMTYtMTYgMTZIMjMyYy04LjggMC0xNi03LjItMTYtMTZWMTA0YzAtOC44IDcuMi0xNiAxNi0xNnpNODggMjMyYzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDEwNGMtOC44IDAtMTYtNy4yLTE2LTE2VjIzMnptMTQ0LTE2aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnY0OGMwIDguOC03LjIgMTYtMTYgMTZIMjMyYy04LjggMC0xNi03LjItMTYtMTZWMjMyYzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY2NEgyOTZWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY2NGg0MGMzNS4zIDAgNjQgMjguNyA2NCA2NHYxNiA0OFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MiAxNDQgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek00MDAgMTkySDQ4VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlYxOTJ6TTMyOSAyOTdMMjE3IDQwOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNDcgNDcgOTUtOTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYWxlbmRhckRheXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4djE2IDQ4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyIDE0NCAxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzQ0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjY0SDE1MlYyNHpNNDggMTkyaDgwdjU2SDQ4VjE5MnptMCAxMDRoODB2NjRINDhWMjk2em0xMjggMGg5NnY2NEgxNzZWMjk2em0xNDQgMGg4MHY2NEgzMjBWMjk2em04MC00OEgzMjBWMTkyaDgwdjU2em0wIDE2MHY0MGMwIDguOC03LjIgMTYtMTYgMTZIMzIwVjQwOGg4MHptLTEyOCAwdjU2SDE3NlY0MDhoOTZ6bS0xNDQgMHY1Nkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjQwOGg4MHpNMjcyIDI0OEgxNzZWMTkyaDk2djU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjY0SDI5NlYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0VjY0aDQwYzM1LjMgMCA2NCAyOC43IDY0IDY0djE2IDQ4VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTkyIDE0NCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRoNDBWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTQwMCAxOTJINDhWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2VjE5MnpNMjk2IDM1MkgxNTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYWxlbmRhclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4djE2IDQ4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyIDE0NCAxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzQ0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjY0SDE1MlYyNHpNNDggMTkySDQwMFY0NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDY0Yy04LjggMC0xNi03LjItMTYtMTZWMTkyem0xNzYgNDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4SDE1MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg0OHY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjM1Mmg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyNDhWMjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYWxlbmRhclhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjY0SDI5NlYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0VjY0aDQwYzM1LjMgMCA2NCAyOC43IDY0IDY0djE2IDQ4VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTkyIDE0NCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRoNDBWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTQwMCAxOTJINDhWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2VjE5MnptLTk1IDg5bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4djE2IDQ4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyIDE0NCAxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzQ0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjY0SDE1MlYyNHpNNDggMTkySDQwMFY0NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDY0Yy04LjggMC0xNi03LjItMTYtMTZWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGFydEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCAzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNFY0MDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDcyYy0zOS44IDAtNzItMzIuMi03Mi03MlY1NkMwIDQyLjcgMTAuNyAzMiAyNCAzMnpNMTI4IDEzNmMwLTEzLjMgMTAuNy0yNCAyNC0yNGwyMDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMjA4IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0yNCA3MkgyOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0em0wIDk2SDQyNGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxNTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NoZXNzQmlzaG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNCAwQzkwLjcgMCA4MCAxMC43IDgwIDI0YzAgMTEuMiA3LjYgMjAuNiAxOCAyMy4yYy03LjggOC0xNi4xIDE3LTI0LjQgMjdDMzguMiAxMTYuNyAwIDE3OC44IDAgMjUwLjljMCA0NC44IDI0LjYgNzIuMiA0OCA4Ny44VjM1Mkg5NlYzMjVjMC05LTUtMTcuMi0xMy0yMS4zYy0xOC05LjMtMzUtMjQuNy0zNS01Mi43YzAtNTUuNSAyOS44LTEwNi44IDYyLjQtMTQ1LjljMTYtMTkuMiAzMi4xLTM0LjggNDQuMi00NS41YzEuOS0xLjcgMy43LTMuMiA1LjMtNC42YzEuNyAxLjQgMy40IDMgNS4zIDQuNmMxMi4xIDEwLjcgMjguMiAyNi4zIDQ0LjIgNDUuNWM1LjMgNi4zIDEwLjUgMTMgMTUuNSAyMEwxNTkgMTkxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNTcuOC01Ny44YzEyLjggMjUuOSAyMS4yIDU0LjMgMjEuMiA4My44YzAgMjgtMTcgNDMuNC0zNSA1Mi43Yy04IDQuMS0xMyAxMi4zLTEzIDIxLjN2MjdoNDhWMzM4LjdjMjMuNC0xNS42IDQ4LTQyLjkgNDgtODcuOGMwLTcyLjEtMzguMi0xMzQuMi03My42LTE3Ni43Yy04LjMtOS45LTE2LjYtMTktMjQuNC0yN2MxMC4zLTIuNyAxOC0xMi4xIDE4LTIzLjJjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTYwIDEwNHpNNTIuNyA0NjRsMTYuNi0zMkgyNTAuOGwxNi42IDMySDUyLjd6bTIwNy45LTgwSDU5LjVjLTEyIDAtMjIuOSA2LjctMjguNCAxNy4zTDQuNiA0NTIuNWMtMyA1LjgtNC42IDEyLjItNC42IDE4LjdDMCA0OTMuOCAxOC4yIDUxMiA0MC44IDUxMkgyNzkuMmMyMi41IDAgNDAuOC0xOC4yIDQwLjgtNDAuOGMwLTYuNS0xLjYtMTIuOS00LjYtMTguN2wtMjYuNS01MS4yYy01LjUtMTAuNi0xNi41LTE3LjMtMjguNC0xNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc0tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjU2SDE2OGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGgzMnY0MEg1OS42QzI2LjcgMTQ0IDAgMTcwLjcgMCAyMDMuNmMwIDguMiAxLjcgMTYuMyA0LjkgMjMuOEw1OS4xIDM1Mmg1Mi4zTDQ5IDIwOC4yYy0uNi0xLjUtMS0zLTEtNC42YzAtNi40IDUuMi0xMS42IDExLjYtMTEuNkgyMjQgMzg4LjRjNi40IDAgMTEuNiA1LjIgMTEuNiAxMS42YzAgMS42LS4zIDMuMi0xIDQuNkwzMzYuNSAzNTJoNTIuM2w1NC4yLTEyNC42YzMuMy03LjUgNC45LTE1LjYgNC45LTIzLjhjMC0zMi45LTI2LjctNTkuNi01OS42LTU5LjZIMjQ4VjEwNGgzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyNDhWMjR6TTEwMS4yIDQzMkgzNDYuOGwxNi42IDMySDg0LjdsMTYuNi0zMnptMjgzLjctMzAuN2MtNS41LTEwLjYtMTYuNS0xNy4zLTI4LjQtMTcuM0g5MS41Yy0xMiAwLTIyLjkgNi43LTI4LjQgMTcuM0wzNi42IDQ1Mi41Yy0zIDUuOC00LjYgMTIuMi00LjYgMTguN0MzMiA0OTMuOCA1MC4yIDUxMiA3Mi44IDUxMkgzNzUuMmMyMi41IDAgNDAuOC0xOC4yIDQwLjgtNDAuOGMwLTYuNS0xLjYtMTIuOS00LjYtMTguN2wtMjYuNS01MS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc0tuaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjYuNiA0OEgxMTcuM2wxNy4xIDEyLjhjNiA0LjUgOS42IDExLjYgOS42IDE5LjJzLTMuNiAxNC43LTkuNiAxOS4ybC02LjUgNC45Yy0xMCA3LjUtMTYgMTkuMy0xNiAzMS45bC0uMyA5MWMwIDEwLjIgNC45IDE5LjkgMTMuMiAyNS44bDEuOSAxLjNjOS45IDcuMSAyMy4zIDcgMzMuMi0uMWw0OS45LTM2LjNjMTAuNy03LjggMjUuNy01LjQgMzMuNSA1LjNzNS40IDI1LjctNS4zIDMzLjVsLTQ5LjkgMzYuMy01My44IDM5LjFjLTcuMyA1LjMtMTMgMTIuMi0xNi45IDIwLjFINjYuOGM1LjMtMjIuMSAxNy44LTQxLjkgMzUuOS01Ni4zYy0xLjMtLjgtMi42LTEuNy0zLjgtMi42TDk3IDI5MS44Yy0yMS0xNS0zMy40LTM5LjItMzMuMy02NWwuMy05MWMuMS0xOS44IDYuNy0zOC43IDE4LjYtNTMuOWwtLjQtLjNDNzAuNyA3MyA2NCA1OS42IDY0IDQ1LjNDNjQgMjAuMyA4NC4zIDAgMTA5LjMgMEgyMjYuNkMzMzEuMiAwIDQxNiA4NC44IDQxNiAxODkuNGMwIDExLjEtMSAyMi4yLTIuOSAzMy4yTDM5MC4xIDM1MkgzNDEuM2wyNC41LTEzNy44YzEuNS04LjIgMi4yLTE2LjUgMi4yLTI0LjhDMzY4IDExMS4zIDMwNC43IDQ4IDIyNi42IDQ4ek04NS4yIDQzMkw2OC43IDQ2NEgzNzkuM2wtMTYuNi0zMkg4NS4yem0zMTUuNy0zMC43bDI2LjUgNTEuMmMzIDUuOCA0LjYgMTIuMiA0LjYgMTguN2MwIDIyLjUtMTguMiA0MC44LTQwLjggNDAuOEg1Ni44QzM0LjIgNTEyIDE2IDQ5My44IDE2IDQ3MS4yYzAtNi41IDEuNi0xMi45IDQuNi0xOC43bDI2LjUtNTEuMkM1Mi41IDM5MC43IDYzLjUgMzg0IDc1LjUgMzg0aDI5N2MxMiAwIDIyLjkgNi43IDI4LjQgMTcuM3pNMTcyIDEyOGEyMCAyMCAwIDEgMSAwIDQwIDIwIDIwIDAgMSAxIDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NoZXNzUGF3biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIgMTUyQTcyIDcyIDAgMSAwIDg4IDE1MmE3MiA3MiAwIDEgMCAxNDQgMHptMjQgMTIwSDI0My40bDEwLjcgODBIMjA1LjdMMTk1IDI3MkgxNjAgMTI1bC0xMC43IDgwSDY1LjlsMTAuNy04MEg2NGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMtMTUuMS0yMC4xLTI0LTQ1LTI0LTcyQzQwIDg1LjcgOTMuNyAzMiAxNjAgMzJzMTIwIDUzLjcgMTIwIDEyMGMwIDI3LTguOSA1MS45LTI0IDcyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0ek01Mi43IDQ2NEgyNjcuM2wtMTYuNi0zMkg2OS4yTDUyLjcgNDY0em0yMDcuOS04MGMxMiAwIDIyLjkgNi43IDI4LjQgMTcuM2wyNi41IDUxLjJjMyA1LjggNC42IDEyLjIgNC42IDE4LjdjMCAyMi41LTE4LjIgNDAuOC00MC44IDQwLjhINDAuOEMxOC4yIDUxMiAwIDQ5My44IDAgNDcxLjJjMC02LjUgMS42LTEyLjkgNC42LTE4LjdsMjYuNS01MS4yQzM2LjUgMzkwLjcgNDcuNSAzODQgNTkuNSAzODRoMjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc1F1ZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS05NS4yLThjLTE4LjEgMC0zMS4zIDEyLjgtMzUuNiAyNi45Yy04IDI2LjItMzIuNCA0NS4yLTYxLjIgNDUuMmMtMTAgMC0xOS40LTIuMy0yNy43LTYuM2MtNy42LTMuNy0xNi43LTMuMy0yNCAxLjJDLjcgMTYyLjEtMy4xIDE3Ny4xIDMuNyAxODguOUw5Ny42IDM1MkgxNTNsLTgzLTE0NC4xYzQwLjUtMi4yIDc1LjMtMjUuOSA5My4xLTU5LjhjMjIgMjYuOCA1NS40IDQzLjkgOTIuOCA0My45czcwLjgtMTcuMSA5Mi44LTQzLjljMTcuOCAzNCA1Mi42IDU3LjcgOTMuMSA1OS44TDM1OSAzNTJoNTUuNGw5My45LTE2My4xYzYuOC0xMS43IDMtMjYuNy04LjYtMzMuOGMtNy4zLTQuNS0xNi40LTQuOS0yNC0xLjJjLTguNCA0LTE3LjcgNi4zLTI3LjcgNi4zYy0yOC44IDAtNTMuMi0xOS02MS4yLTQ1LjJDMzgyLjUgMTAwLjggMzY5LjMgODggMzUxLjIgODhjLTE0LjUgMC0yNi4zIDguNS0zMi40IDE5LjNjLTEyLjQgMjItMzUuOSAzNi43LTYyLjggMzYuN3MtNTAuNC0xNC44LTYyLjgtMzYuN0MxODcuMSA5Ni41IDE3NS40IDg4IDE2MC44IDg4ek0xMzMuMiA0MzJIMzc4LjhsMTYuNiAzMkgxMTYuN2wxNi42LTMyem0yODMuNy0zMC43Yy01LjUtMTAuNi0xNi41LTE3LjMtMjguNC0xNy4zaC0yNjVjLTEyIDAtMjIuOSA2LjctMjguNCAxNy4zTDY4LjYgNDUyLjVjLTMgNS44LTQuNiAxMi4yLTQuNiAxOC43YzAgMjIuNSAxOC4yIDQwLjggNDAuOCA0MC44SDQwNy4yYzIyLjUgMCA0MC44LTE4LjIgNDAuOC00MC44YzAtNi41LTEuNi0xMi45LTQuNi0xOC43bC0yNi41LTUxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NoZXNzUm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA4MFYxOTJjMCAyLjUgMS4yIDQuOSAzLjIgNi40bDUxLjIgMzguNGM2LjggNS4xIDEwLjQgMTMuNCA5LjUgMjEuOUwxMzMuNSAzNTJIODUuMmw5LjQtODVMNTQuNCAyMzYuOEM0MC4zIDIyNi4yIDMyIDIwOS42IDMyIDE5MlY3MmMwLTIyLjEgMTcuOS00MCA0MC00MEgzNzZjMjIuMSAwIDQwIDE3LjkgNDAgNDBWMTkyYzAgMTcuNi04LjMgMzQuMi0yMi40IDQ0LjhMMzUzLjQgMjY3bDkuNCA4NUgzMTQuNWwtMTAuNC05My4zYy0uOS04LjQgMi43LTE2LjggOS41LTIxLjlsNTEuMi0zOC40YzItMS41IDMuMi0zLjkgMy4yLTYuNFY4MEgzMDR2MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWODBIMTkydjI0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjgwSDgwem00LjcgMzg0SDM2My4zbC0xNi42LTMySDEwMS4yTDg0LjcgNDY0em0yNzEuOS04MGMxMiAwIDIyLjkgNi43IDI4LjQgMTcuM2wyNi41IDUxLjJjMyA1LjggNC42IDEyLjIgNC42IDE4LjdjMCAyMi41LTE4LjIgNDAuOC00MC44IDQwLjhINzIuOEM1MC4yIDUxMiAzMiA0OTMuOCAzMiA0NzEuMmMwLTYuNSAxLjYtMTIuOSA0LjYtMTguN2wyNi41LTUxLjJDNjguNSAzOTAuNyA3OS41IDM4NCA5MS41IDM4NGgyNjV6TTIwOCAyODhjLTguOCAwLTE2LTcuMi0xNi0xNlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY0OGMwIDguOC03LjIgMTYtMTYgMTZIMjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM2OSAyMDljOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMTExIDExMS00Ny00N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw2NCA2NGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMEwzNjkgMjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGVEb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTI1Ni05NmE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDY0YTIwOCAyMDggMCAxIDEgMC00MTYgMjA4IDIwOCAwIDEgMSAwIDQxNnpNMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwek0zNzYuOSAyOTQuNmM0LjUtNC4yIDcuMS0xMC4xIDcuMS0xNi4zYzAtMTIuMy0xMC0yMi4zLTIyLjMtMjIuM0gzMDRWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NkgxNTAuM0MxMzggMjU2IDEyOCAyNjYgMTI4IDI3OC4zYzAgNi4yIDIuNiAxMi4xIDcuMSAxNi4zbDEwNy4xIDk5LjljMy44IDMuNSA4LjcgNS41IDEzLjggNS41czEwLjEtMiAxMy44LTUuNWwxMDcuMS05OS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDI1NmEyMDggMjA4IDAgMSAxIDQxNiAwQTIwOCAyMDggMCAxIDEgNDggMjU2em00NjQgMEEyNTYgMjU2IDAgMSAwIDAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDB6TTIxNy40IDM3Ni45YzQuMiA0LjUgMTAuMSA3LjEgMTYuMyA3LjFjMTIuMyAwIDIyLjMtMTAgMjIuMy0yMi4zVjMwNGg5NmMxNy43IDAgMzItMTQuMyAzMi0zMlYyNDBjMC0xNy43LTE0LjMtMzItMzItMzJIMjU2VjE1MC4zYzAtMTIuMy0xMC0yMi4zLTIyLjMtMjIuM2MtNi4yIDAtMTIuMSAyLjYtMTYuMyA3LjFMMTE3LjUgMjQyLjJjLTMuNSAzLjgtNS41IDguNy01LjUgMTMuOHMyIDEwLjEgNS41IDEzLjhsOTkuOSAxMDcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTIyNC03MlYzMjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6bTExMiAwVjMyOGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMTg4LjMgMTQ3LjFjNy42LTQuMiAxNi44LTQuMSAyNC4zIC41bDE0NCA4OGM3LjEgNC40IDExLjUgMTIuMSAxMS41IDIwLjVzLTQuNCAxNi4xLTExLjUgMjAuNWwtMTQ0IDg4Yy03LjQgNC41LTE2LjcgNC43LTI0LjMgLjVzLTEyLjMtMTIuMi0xMi4zLTIwLjlWMTY4YzAtOC43IDQuNy0xNi43IDEyLjMtMjAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlUXVlc3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE2OS44LTkwLjdjNy45LTIyLjMgMjkuMS0zNy4zIDUyLjgtMzcuM2g1OC4zYzM0LjkgMCA2My4xIDI4LjMgNjMuMSA2My4xYzAgMjIuNi0xMi4xIDQzLjUtMzEuNyA1NC44TDI4MCAyNjQuNGMtLjIgMTMtMTAuOSAyMy42LTI0IDIzLjZjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjI1MC41YzAtOC42IDQuNi0xNi41IDEyLjEtMjAuOGw0NC4zLTI1LjRjNC43LTIuNyA3LjYtNy43IDcuNi0xMy4xYzAtOC40LTYuOC0xNS4xLTE1LjEtMTUuMUgyMjIuNmMtMy40IDAtNi40IDIuMS03LjUgNS4zbC0uNCAxLjJjLTQuNCAxMi41LTE4LjIgMTktMzAuNiAxNC42cy0xOS0xOC4yLTE0LjYtMzAuNmwuNC0xLjJ6TTIyNCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAxIDQ4IDI1NmEyMDggMjA4IDAgMSAxIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwQTI1NiAyNTYgMCAxIDAgMCAyNTZ6TTI5NC42IDEzNS4xYy00LjItNC41LTEwLjEtNy4xLTE2LjMtNy4xQzI2NiAxMjggMjU2IDEzOCAyNTYgMTUwLjNWMjA4SDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoOTZ2NTcuN2MwIDEyLjMgMTAgMjIuMyAyMi4zIDIyLjNjNi4yIDAgMTIuMS0yLjYgMTYuMy03LjFsOTkuOS0xMDcuMWMzLjUtMy44IDUuNS04LjcgNS41LTEzLjhzLTItMTAuMS01LjUtMTMuOEwyOTQuNiAxMzUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlU3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTkyLTk2SDMyMGMxNy43IDAgMzIgMTQuMyAzMiAzMlYzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTM1LjEgMjE3LjRjLTQuNSA0LjItNy4xIDEwLjEtNy4xIDE2LjNjMCAxMi4zIDEwIDIyLjMgMjIuMyAyMi4zSDIwOHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYyNTZoNTcuN2MxMi4zIDAgMjIuMy0xMCAyMi4zLTIyLjNjMC02LjItMi42LTEyLjEtNy4xLTE2LjNMMjY5LjggMTE3LjVjLTMuOC0zLjUtOC43LTUuNS0xMy44LTUuNXMtMTAuMSAyLTEzLjggNS41TDEzNS4xIDIxNy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGVVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNi41IDM5OS42QzM4Ny40IDM1Mi45IDM0MS41IDMyMCAyODggMzIwSDIyNGMtNTMuNSAwLTk5LjQgMzIuOS0xMTguNSA3OS42QzY5LjkgMzYyLjIgNDggMzExLjcgNDggMjU2QzQ4IDE0MS4xIDE0MS4xIDQ4IDI1NiA0OHMyMDggOTMuMSAyMDggMjA4YzAgNTUuNy0yMS45IDEwNi4yLTU3LjUgMTQzLjZ6bS00MC4xIDMyLjdDMzM0LjQgNDUyLjQgMjk2LjYgNDY0IDI1NiA0NjRzLTc4LjQtMTEuNi0xMTAuNS0zMS43YzcuMy0zNi43IDM5LjctNjQuMyA3OC41LTY0LjNoNjRjMzguOCAwIDcxLjIgMjcuNiA3OC41IDY0LjN6TTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem0wLTI3MmE0MCA0MCAwIDEgMSAwLTgwIDQwIDQwIDAgMSAxIDAgODB6bS04OC00MGE4OCA4OCAwIDEgMCAxNzYgMCA4OCA4OCAwIDEgMCAtMTc2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTc1IDE3NWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNDcgNDctNDcgNDdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw0Ny00NyA0NyA0N2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTQ3LTQ3IDQ3LTQ3YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTQ3IDQ3LTQ3LTQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgwIDY0aDQwYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0aDQwIDkuNkMxMjEgMjcuNSAxNTMuMyAwIDE5MiAwczcxIDI3LjUgNzguNCA2NEgyODB6TTY0IDExMmMtOC44IDAtMTYgNy4yLTE2IDE2VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzIwYzguOCAwIDE2LTcuMiAxNi0xNlYxMjhjMC04LjgtNy4yLTE2LTE2LTE2SDMwNHYyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgxOTIgMTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxMTJINjR6bTEyOC04YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAxIDQ4IDI1NmEyMDggMjA4IDAgMSAxIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwQTI1NiAyNTYgMCAxIDAgMCAyNTZ6TTIzMiAxMjBWMjU2YzAgOCA0IDE1LjUgMTAuNyAyMGw5NiA2NGMxMSA3LjQgMjUuOSA0LjQgMzMuMy02LjdzNC40LTI1LjktNi43LTMzLjNMMjgwIDI0My4yVjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2xvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY0SDI4OGM4LjggMCAxNi03LjIgMTYtMTZWMzg0aDQ4djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyMjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoNjR2NDhINjRjLTguOCAwLTE2IDcuMi0xNiAxNlY0NDhjMCA4LjggNy4yIDE2IDE2IDE2ek0yMjQgMzA0SDQ0OGM4LjggMCAxNi03LjIgMTYtMTZWNjRjMC04LjgtNy4yLTE2LTE2LTE2SDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2VjI4OGMwIDguOCA3LjIgMTYgMTYgMTZ6bS02NC0xNlY2NGMwLTM1LjMgMjguNy02NCA2NC02NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMjg4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDIyNGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb3NlZENhcHRpb25pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDgwYzguOCAwIDE2IDcuMiAxNiAxNlY0MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDY0Yy04LjggMC0xNi03LjItMTYtMTZWOTZjMC04LjggNy4yLTE2IDE2LTE2SDUxMnpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMDAgMjA4YzE0LjIgMCAyNyA2LjEgMzUuOCAxNmM4LjggOS45IDI0IDEwLjcgMzMuOSAxLjlzMTAuNy0yNCAxLjktMzMuOWMtMTcuNS0xOS42LTQzLjEtMzItNzEuNS0zMmMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyOC40IDAgNTQtMTIuNCA3MS41LTMyYzguOC05LjkgOC0yNS0xLjktMzMuOXMtMjUtOC0zMy45IDEuOWMtOC44IDkuOS0yMS42IDE2LTM1LjggMTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDh6bTE0NCA0OGMwLTI2LjUgMjEuNS00OCA0OC00OGMxNC4yIDAgMjcgNi4xIDM1LjggMTZjOC44IDkuOSAyNCAxMC43IDMzLjkgMS45czEwLjctMjQgMS45LTMzLjljLTE3LjUtMTkuNi00My4xLTMyLTcxLjUtMzJjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZjMjguNCAwIDU0LTEyLjQgNzEuNS0zMmM4LjgtOS45IDgtMjUtMS45LTMzLjlzLTI1LTgtMzMuOSAxLjljLTguOCA5LjktMjEuNiAxNi0zNS44IDE2Yy0yNi41IDAtNDgtMjEuNS00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4LjIgMzg0LjljLTE1LTUuNC0zMS43LTMuMS00NC42IDYuNGMtOC4yIDYtMjIuMyAxNC44LTM5LjQgMjIuN2M1LjYtMTQuNyA5LjktMzEuMyAxMS4zLTQ5LjRjMS0xMi45LTMuMy0yNS43LTExLjgtMzUuNUM2MC40IDMwMi44IDQ4IDI3MiA0OCAyNDBjMC03OS41IDgzLjMtMTYwIDIwOC0xNjBzMjA4IDgwLjUgMjA4IDE2MHMtODMuMyAxNjAtMjA4IDE2MGMtMzEuNiAwLTYxLjMtNS41LTg3LjgtMTUuMXpNMjYuMyA0MjMuOGMtMS42IDIuNy0zLjMgNS40LTUuMSA4LjFsLS4zIC41Yy0xLjYgMi4zLTMuMiA0LjYtNC44IDYuOWMtMy41IDQuNy03LjMgOS4zLTExLjMgMTMuNWMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzUuMSAwIDEwLjItLjMgMTUuMy0uOGwuNy0uMWM0LjQtLjUgOC44LTEuMSAxMy4yLTEuOWMuOC0uMSAxLjYtLjMgMi40LS41YzE3LjgtMy41IDM0LjktOS41IDUwLjEtMTYuMWMyMi45LTEwIDQyLjQtMjEuOSA1NC4zLTMwLjZjMzEuOCAxMS41IDY3IDE3LjkgMTA0LjEgMTcuOWMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyUzAgMTI1LjEgMCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45ek0xNDQgMjcyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTQ0LTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTgwIDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjMuNiAzOTEuM2MxMi45LTkuNCAyOS42LTExLjggNDQuNi02LjRjMjYuNSA5LjYgNTYuMiAxNS4xIDg3LjggMTUuMWMxMjQuNyAwIDIwOC04MC41IDIwOC0xNjBzLTgzLjMtMTYwLTIwOC0xNjBTNDggMTYwLjUgNDggMjQwYzAgMzIgMTIuNCA2Mi44IDM1LjcgODkuMmM4LjYgOS43IDEyLjggMjIuNSAxMS44IDM1LjVjLTEuNCAxOC4xLTUuNyAzNC43LTExLjMgNDkuNGMxNy03LjkgMzEuMS0xNi43IDM5LjQtMjIuN3pNMjEuMiA0MzEuOWMxLjgtMi43IDMuNS01LjQgNS4xLTguMWMxMC0xNi42IDE5LjUtMzguNCAyMS40LTYyLjlDMTcuNyAzMjYuOCAwIDI4NS4xIDAgMjQwQzAgMTI1LjEgMTE0LjYgMzIgMjU2IDMyczI1NiA5My4xIDI1NiAyMDhzLTExNC42IDIwOC0yNTYgMjA4Yy0zNy4xIDAtNzIuMy02LjQtMTA0LjEtMTcuOWMtMTEuOSA4LjctMzEuMyAyMC42LTU0LjMgMzAuNmMtMTUuMSA2LjYtMzIuMyAxMi42LTUwLjEgMTYuMWMtLjggLjItMS42IC4zLTIuNCAuNWMtNC40IC44LTguNyAxLjUtMTMuMiAxLjljLS4yIDAtLjUgLjEtLjcgLjFjLTUuMSAuNS0xMC4yIC44LTE1LjMgLjhjLTYuNSAwLTEyLjMtMy45LTE0LjgtOS45Yy0yLjUtNi0xLjEtMTIuOCAzLjQtMTcuNGM0LjEtNC4yIDcuOC04LjcgMTEuMy0xMy41YzEuNy0yLjMgMy4zLTQuNiA0LjgtNi45Yy4xLS4yIC4yLS4zIC4zLS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb21tZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OC4yIDMwOS4xYzkuOC0xOC4zIDYuOC00MC44LTcuNS01NS44QzU5LjQgMjMwLjkgNDggMjA0IDQ4IDE3NmMwLTYzLjUgNjMuOC0xMjggMTYwLTEyOHMxNjAgNjQuNSAxNjAgMTI4cy02My44IDEyOC0xNjAgMTI4Yy0xMy4xIDAtMjUuOC0xLjMtMzcuOC0zLjZjLTEwLjQtMi0yMS4yLS42LTMwLjcgNC4yYy00LjEgMi4xLTguMyA0LjEtMTIuNiA2Yy0xNiA3LjItMzIuOSAxMy41LTQ5LjkgMThjMi44LTQuNiA1LjQtOS4xIDcuOS0xMy42YzEuMS0xLjkgMi4yLTMuOSAzLjItNS45ek0wIDE3NmMwIDQxLjggMTcuMiA4MC4xIDQ1LjkgMTEwLjNjLS45IDEuNy0xLjkgMy41LTIuOCA1LjFjLTEwLjMgMTguNC0yMi4zIDM2LjUtMzYuNiA1Mi4xYy02LjYgNy04LjMgMTcuMi00LjYgMjUuOUM1LjggMzc4LjMgMTQuNCAzODQgMjQgMzg0YzQzIDAgODYuNS0xMy4zIDEyMi43LTI5LjdjNC44LTIuMiA5LjYtNC41IDE0LjItNi44YzE1LjEgMyAzMC45IDQuNSA0Ny4xIDQuNWMxMTQuOSAwIDIwOC03OC44IDIwOC0xNzZTMzIyLjkgMCAyMDggMFMwIDc4LjggMCAxNzZ6TTQzMiA0ODBjMTYuMiAwIDMxLjktMS42IDQ3LjEtNC41YzQuNiAyLjMgOS40IDQuNiAxNC4yIDYuOEM1MjkuNSA0OTguNyA1NzMgNTEyIDYxNiA1MTJjOS42IDAgMTguMi01LjcgMjItMTQuNWMzLjgtOC44IDItMTktNC42LTI1LjljLTE0LjItMTUuNi0yNi4yLTMzLjctMzYuNi01Mi4xYy0uOS0xLjctMS45LTMuNC0yLjgtNS4xQzYyMi44IDM4NC4xIDY0MCAzNDUuOCA2NDAgMzA0YzAtOTQuNC04Ny45LTE3MS41LTE5OC4yLTE3NS44YzQuMSAxNS4yIDYuMiAzMS4yIDYuMiA0Ny44bDAgLjZjODcuMiA2LjcgMTQ0IDY3LjUgMTQ0IDEyNy40YzAgMjgtMTEuNCA1NC45LTMyLjcgNzcuMmMtMTQuMyAxNS0xNy4zIDM3LjYtNy41IDU1LjhjMS4xIDIgMi4yIDQgMy4yIDUuOWMyLjUgNC41IDUuMiA5IDcuOSAxMy42Yy0xNy00LjUtMzMuOS0xMC43LTQ5LjktMThjLTQuMy0xLjktOC41LTMuOS0xMi42LTZjLTkuNS00LjgtMjAuMy02LjItMzAuNy00LjJjLTEyLjEgMi40LTI0LjcgMy42LTM3LjggMy42Yy02MS43IDAtMTEwLTI2LjUtMTM2LjgtNjIuM2MtMTYgNS40LTMyLjggOS40LTUwIDExLjhDMjc5IDQzOS44IDM1MCA0ODAgNDMyIDQ4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tcGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzA2LjcgNjkuMUwxNjIuNCAzODAuNmMtMTkuNCA3LjUtMzguNS0xMS42LTMxLTMxbDU1LjUtMTQ0LjNjMy4zLTguNSA5LjktMTUuMSAxOC40LTE4LjRsMTQ0LjMtNTUuNWMxOS40LTcuNSAzOC41IDExLjYgMzEgMzFMMzI1LjEgMzA2LjdjLTMuMiA4LjUtOS45IDE1LjEtMTguNCAxOC40ek0yODggMjU2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMzNkgxOTJjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZsMTQwLjEgMEw0MDAgMTE1LjlWMzIwYzAgOC44LTcuMiAxNi0xNiAxNnpNMTkyIDM4NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTE1LjljMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOUwzNjYuMSAxNC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUgxOTJjLTM1LjMgMC02NCAyOC43LTY0IDY0VjMyMGMwIDM1LjMgMjguNyA2NCA2NCA2NHpNNjQgMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjQxNkgyNzJ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDY0Yy04LjggMC0xNi03LjItMTYtMTZWMTkyYzAtOC44IDcuMi0xNiAxNi0xNkg5NlYxMjhINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvcHlyaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE5OS40IDMxMi42Yy0zMS4yLTMxLjItMzEuMi04MS45IDAtMTEzLjFzODEuOS0zMS4yIDExMy4xIDBjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45Yy01MC01MC0xMzEtNTAtMTgxIDBzLTUwIDEzMSAwIDE4MXMxMzEgNTAgMTgxIDBjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA4MGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJINDhWOTZjMC04LjggNy4yLTE2IDE2LTE2SDUxMnptMTYgMTQ0VjQxNmMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlYyMjRINTI4ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTU2IDMwNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMjB6bTEyOCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDM2MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0VudmVsb3BlT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuNCA0OC4yYy4yLS4xIC40LS4yIC42LS4ycy40IC4xIC42IC4yTDQ2MC42IDE5NGMyLjEgMS41IDMuNCAzLjkgMy40IDYuNXYxMy42TDI5MS41IDM1NS43Yy0yMC43IDE3LTUwLjQgMTctNzEuMSAwTDQ4IDIxNC4xVjIwMC41YzAtMi42IDEuMi01IDMuNC02LjVMMjU1LjQgNDguMnpNNDggMjc2LjJMMTkwIDM5Mi44YzM4LjQgMzEuNSA5My43IDMxLjUgMTMyIDBMNDY0IDI3Ni4yVjQ1NmMwIDQuNC0zLjYgOC04IDhINTZjLTQuNCAwLTgtMy42LTgtOFYyNzYuMnpNMjU2IDBjLTEwLjIgMC0yMC4yIDMuMi0yOC41IDkuMUwyMy41IDE1NC45QzguNyAxNjUuNCAwIDE4Mi40IDAgMjAwLjVWNDU2YzAgMzAuOSAyNS4xIDU2IDU2IDU2SDQ1NmMzMC45IDAgNTYtMjUuMSA1Ni01NlYyMDAuNWMwLTE4LjEtOC43LTM1LjEtMjMuNC00NS42TDI4NC41IDkuMUMyNzYuMiAzLjIgMjY2LjIgMCAyNTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRW52ZWxvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTEyYy04LjggMC0xNiA3LjItMTYgMTZ2MjIuMUwyMjAuNSAyOTEuN2MyMC43IDE3IDUwLjQgMTcgNzEuMSAwTDQ2NCAxNTAuMVYxMjhjMC04LjgtNy4yLTE2LTE2LTE2SDY0ek00OCAyMTIuMlYzODRjMCA4LjggNy4yIDE2IDE2IDE2SDQ0OGM4LjggMCAxNi03LjIgMTYtMTZWMjEyLjJMMzIyIDMyOC44Yy0zOC40IDMxLjUtOTMuNyAzMS41LTEzMiAwTDQ4IDIxMi4yek0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0V5ZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTI1LjYgMzg2LjdjMzkuNi00MC42IDY2LjQtODYuMSA3OS45LTExOC40YzMuMy03LjkgMy4zLTE2LjcgMC0yNC42Yy0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xQzQ2NS41IDY4LjggNDAwLjggMzIgMzIwIDMyYy02OC4yIDAtMTI1IDI2LjMtMTY5LjMgNjAuOEwzOC44IDUuMXptMTUxIDExOC4zQzIyNiA5Ny43IDI2OS41IDgwIDMyMCA4MGM2NS4yIDAgMTE4LjggMjkuNiAxNTkuOSA2Ny43QzUxOC40IDE4My41IDU0NSAyMjYgNTU4LjYgMjU2Yy0xMi42IDI4LTM2LjYgNjYuOC03MC45IDEwMC45bC01My44LTQyLjJjOS4xLTE3LjYgMTQuMi0zNy41IDE0LjItNTguN2MwLTcwLjctNTcuMy0xMjgtMTI4LTEyOGMtMzIuMiAwLTYxLjcgMTEuOS04NC4yIDMxLjVsLTQ2LjEtMzYuMXpNMzk0LjkgMjg0LjJsLTgxLjUtNjMuOWM0LjItOC41IDYuNi0xOC4yIDYuNi0yOC4zYzAtNS41LS43LTEwLjktMi0xNmMuNyAwIDEuMyAwIDIgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDkuOS0xLjggMTkuNC01LjEgMjguMnptNTEuMyAxNjMuM2wtNDEuOS0zM0MzNzguOCA0MjUuNCAzNTAuNyA0MzIgMzIwIDQzMmMtNjUuMiAwLTExOC44LTI5LjYtMTU5LjktNjcuN0MxMjEuNiAzMjguNSA5NSAyODYgODEuNCAyNTZjOC4zLTE4LjQgMjEuNS00MS41IDM5LjQtNjQuOEw4My4xIDE2MS41QzYwLjMgMTkxLjIgNDQgMjIwLjggMzQuNSAyNDMuN2MtMy4zIDcuOS0zLjMgMTYuNyAwIDI0LjZjMTQuOSAzNS43IDQ2LjIgODcuNyA5MyAxMzEuMUMxNzQuNSA0NDMuMiAyMzkuMiA0ODAgMzIwIDQ4MGM0Ny44IDAgODkuOS0xMi45IDEyNi4yLTMyLjV6bS04OC02OS4zTDMwMiAzMzRjLTIzLjUtNS40LTQzLjEtMjEuMi01My43LTQyLjNsLTU2LjEtNDQuMmMtLjIgMi44LS4zIDUuNi0uMyA4LjVjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhjMTMuMyAwIDI2LjEtMiAzOC4yLTUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCA4MGMtNjUuMiAwLTExOC44IDI5LjYtMTU5LjkgNjcuN0M4OS42IDE4My41IDYzIDIyNiA0OS40IDI1NmMxMy42IDMwIDQwLjIgNzIuNSA3OC42IDEwOC4zQzE2OS4yIDQwMi40IDIyMi44IDQzMiAyODggNDMyczExOC44LTI5LjYgMTU5LjktNjcuN0M0ODYuNCAzMjguNSA1MTMgMjg2IDUyNi42IDI1NmMtMTMuNi0zMC00MC4yLTcyLjUtNzguNi0xMDguM0M0MDYuOCAxMDkuNiAzNTMuMiA4MCAyODggODB6TTk1LjQgMTEyLjZDMTQyLjUgNjguOCAyMDcuMiAzMiAyODggMzJzMTQ1LjUgMzYuOCAxOTIuNiA4MC42YzQ2LjggNDMuNSA3OC4xIDk1LjQgOTMgMTMxLjFjMy4zIDcuOSAzLjMgMTYuNyAwIDI0LjZjLTE0LjkgMzUuNy00Ni4yIDg3LjctOTMgMTMxLjFDNDMzLjUgNDQzLjIgMzY4LjggNDgwIDI4OCA0ODBzLTE0NS41LTM2LjgtMTkyLjYtODAuNkM0OC42IDM1NiAxNy4zIDMwNCAyLjUgMjY4LjNjLTMuMy03LjktMy4zLTE2LjcgMC0yNC42QzE3LjMgMjA4IDQ4LjYgMTU2IDk1LjQgMTEyLjZ6TTI4OCAzMzZjNDQuMiAwIDgwLTM1LjggODAtODBzLTM1LjgtODAtODAtODBjLS43IDAtMS4zIDAtMiAwYzEuMyA1LjEgMiAxMC41IDIgMTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTUuNSAwLTEwLjktLjctMTYtMmMwIC43IDAgMS4zIDAgMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHptMC0yMDhhMTI4IDEyOCAwIDEgMSAwIDI1NiAxMjggMTI4IDAgMSAxIDAtMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlQW5ncnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem03Mi40LTExOC41YzkuNy05IDEwLjItMjQuMiAxLjItMzMuOUMzMTUuMyAzNDQuMyAyOTAuNiAzMjggMjU2IDMyOHMtNTkuMyAxNi4zLTczLjUgMzEuNmMtOSA5LjctOC41IDI0LjkgMS4yIDMzLjlzMjQuOSA4LjUgMzMuOS0xLjJjNy40LTcuOSAyMC0xNi40IDM4LjUtMTYuNHMzMS4xIDguNSAzOC41IDE2LjRjOSA5LjcgMjQuMiAxMC4yIDMzLjkgMS4yek0xNzYuNCAyNzJjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC0xLjUtLjEtMy0uMy00LjRsMTAuOSAzLjZjOC40IDIuOCAxNy40LTEuNyAyMC4yLTEwLjFzLTEuNy0xNy40LTEwLjEtMjAuMmwtOTYtMzJjLTguNC0yLjgtMTcuNCAxLjctMjAuMiAxMC4xczEuNyAxNy40IDEwLjEgMjAuMmwzMC43IDEwLjJjLTUuOCA1LjgtOS4zIDEzLjgtOS4zIDIyLjZjMCAxNy43IDE0LjMgMzIgMzIgMzJ6bTE5Mi0zMmMwLTguOS0zLjYtMTctOS41LTIyLjhsMzAuMi0xMC4xYzguNC0yLjggMTIuOS0xMS45IDEwLjEtMjAuMnMtMTEuOS0xMi45LTIwLjItMTAuMWwtOTYgMzJjLTguNCAyLjgtMTIuOSAxMS45LTEwLjEgMjAuMnMxMS45IDEyLjkgMjAuMiAxMC4xbDExLjctMy45Yy0uMiAxLjUtLjMgMy4xLS4zIDQuN2MwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlRGl6enkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTI1NiAzMmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMTAzIDEzNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwyMyAyMyAyMy0yM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTIzIDIzIDIzIDIzYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTIzLTIzLTIzIDIzYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDIzLTIzLTIzLTIzYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXptMTkyIDBjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjMgMjMgMjMtMjNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC0yMyAyMyAyMyAyM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0yMy0yMy0yMyAyM2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwyMy0yMy0yMy0yM2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VGbHVzaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMSA0OCAyNTZhMjA4IDIwOCAwIDEgMSA0MTYgMHpNMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwek0xNjAuNCAyNDhhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0yMTYtMjRhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNMTkyIDMzNmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgzMjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTkyek0xNjAgMTc2YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnptMCAxMjhhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6bTE0NC04MGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0xMjggMGE4MCA4MCAwIDEgMCAtMTYwIDAgODAgODAgMCAxIDAgMTYwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VGcm93bk9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE4Mi40IDM4Mi41Yy0xMi40IDUuMi0yNi41LTQuMS0yMS4xLTE2LjRjMTYtMzYuNiA1Mi40LTYyLjEgOTQuOC02Mi4xczc4LjggMjUuNiA5NC44IDYyLjFjNS40IDEyLjMtOC43IDIxLjYtMjEuMSAxNi40Yy0yMi40LTkuNS00Ny40LTE0LjgtNzMuNy0xNC44cy01MS4zIDUuMy03My43IDE0Ljh6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlRnJvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE3NC42IDM4NC4xYy00LjUgMTIuNS0xOC4yIDE4LjktMzAuNyAxNC40cy0xOC45LTE4LjItMTQuNC0zMC43QzE0Ni45IDMxOS40IDE5OC45IDI4OCAyNTYgMjg4czEwOS4xIDMxLjQgMTI2LjYgNzkuOWM0LjUgMTIuNS0yIDI2LjItMTQuNCAzMC43cy0yNi4yLTItMzAuNy0xNC40QzMyOC4yIDM1OC41IDI5Ny4yIDMzNiAyNTYgMzM2cy03Mi4yIDIyLjUtODEuNCA0OC4xek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW1hY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDAgMCA0MTYgMjA4IDIwOCAwIDEgMCAwLTQxNnpNNTEyIDI1NkEyNTYgMjU2IDAgMSAxIDAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDB6TTE2OCAzMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoOFYzMjBoLTh6bTQwIDQ4aDMyVjMyMEgyMDh2NDh6bTk2IDBWMzIwSDI3MnY0OGgzMnptMzIgMGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0aC04djQ4ek0xNjggMjg4SDM0NGMzMC45IDAgNTYgMjUuMSA1NiA1NnMtMjUuMSA1Ni01NiA1NkgxNjhjLTMwLjkgMC01Ni0yNS4xLTU2LTU2czI1LjEtNTYgNTYtNTZ6bS0yMy42LTgwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluQmVhbVN3ZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Ni44IDEyNi4zQzQ5Ny4xIDEyMC44IDUxMiAxMDIuNyA1MTIgODFjMC0yMC0yOC42LTYwLjQtNDEuNi03Ny43Yy0zLjItNC40LTkuNi00LjQtMTIuOCAwYy05LjUgMTIuNi0yNy4xIDM3LjItMzYgNTcuNWMtLjMgLjctLjYgMS40LS45IDIuMUM0MTcuOCA2OS43IDQxNiA3NiA0MTYgODFjMCAyNiAyMS41IDQ3IDQ4IDQ3YzQuNCAwIDguNy0uNiAxMi44LTEuN3pNMzk1LjQgNDEuMkMzNTUuMyAxNS4yIDMwNy40IDAgMjU2IDBDMTE0LjYgMCAwIDExNC42IDAgMjU2UzExNC42IDUxMiAyNTYgNTEyczI1Ni0xMTQuNiAyNTYtMjU2YzAtMzUuOC03LjMtNjkuOS0yMC42LTEwMC44Yy04LjYgMy4xLTE3LjggNC44LTI3LjQgNC44Yy04LjkgMC0xNy42LTEuNS0yNS43LTQuMkM0NTQuNyAxODUuNSA0NjQgMjE5LjcgNDY0IDI1NmMwIDExNC45LTkzLjEgMjA4LTIwOCAyMDhTNDggMzcwLjkgNDggMjU2UzE0MS4xIDQ4IDI1NiA0OGM0OC43IDAgOTMuNCAxNi43IDEyOC45IDQ0LjdjLS42LTMuOC0uOS03LjctLjktMTEuN2MwLTExLjQgMy44LTIyLjQgNy4xLTMwLjVjMS4zLTMuMSAyLjctNi4yIDQuMy05LjN6TTM3NSAzMzYuNWMxMC40LTE2LjEtNi44LTMyLjUtMjUuNS0yOC4xYy0yOC45IDYuOC02MC41IDEwLjUtOTMuNiAxMC41cy02NC43LTMuNy05My42LTEwLjVjLTE4LjctNC40LTM1LjkgMTItMjUuNSAyOC4xYzI0LjYgMzguMSA2OC43IDYzLjUgMTE5LjEgNjMuNXM5NC41LTI1LjQgMTE5LjEtNjMuNXpNMjE3LjYgMjI4LjhsMCAwIDAgMCAwIDBjMi4xIDIuOCA1LjcgMy45IDguOSAyLjhzNS41LTQuMSA1LjUtNy42YzAtMTcuOS02LjctMzUuNi0xNi42LTQ4LjhjLTkuOC0xMy0yMy45LTIzLjItMzkuNC0yMy4ycy0yOS42IDEwLjItMzkuNCAyMy4yQzEyNi43IDE4OC40IDEyMCAyMDYuMSAxMjAgMjI0YzAgMy40IDIuMiA2LjUgNS41IDcuNnM2LjkgMCA4LjktMi44bDAgMCAwIDAgMCAwIC4yLS4yYy4yLS4yIC40LS41IC43LS45Yy42LS44IDEuNi0yIDIuOC0zLjRjMi41LTIuOCA2LTYuNiAxMC4yLTEwLjNjOC44LTcuOCAxOC44LTE0IDI3LjctMTRzMTguOSA2LjIgMjcuNyAxNGM0LjIgMy43IDcuNyA3LjUgMTAuMiAxMC4zYzEuMiAxLjQgMi4yIDIuNiAyLjggMy40Yy4zIC40IC42IC43IC43IC45bC4yIC4yIDAgMHptMTYwIDBsMCAwIDAgMGMyLjEgMi44IDUuNyAzLjkgOC45IDIuOHM1LjUtNC4xIDUuNS03LjZjMC0xNy45LTYuNy0zNS42LTE2LjYtNDguOGMtOS44LTEzLTIzLjktMjMuMi0zOS40LTIzLjJzLTI5LjYgMTAuMi0zOS40IDIzLjJDMjg2LjcgMTg4LjQgMjgwIDIwNi4xIDI4MCAyMjRjMCAzLjQgMi4yIDYuNSA1LjUgNy42czYuOSAwIDguOS0yLjhsMCAwIDAgMCAwIDAgLjItLjJjLjItLjIgLjQtLjUgLjctLjljLjYtLjggMS42LTIgMi44LTMuNGMyLjUtMi44IDYtNi42IDEwLjItMTAuM2M4LjgtNy44IDE4LjgtMTQgMjcuNy0xNHMxOC45IDYuMiAyNy43IDE0YzQuMiAzLjcgNy43IDcuNSAxMC4yIDEwLjNjMS4yIDEuNCAyLjIgMi42IDIuOCAzLjRjLjMgLjQgLjYgLjcgLjcgLjlsLjIgLjIgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW5CZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0zNDkuNSA1Mi40YzE4LjctNC40IDM1LjkgMTIgMjUuNSAyOC4xQzM1MC40IDM3NC42IDMwNi4zIDQwMCAyNTUuOSA0MDBzLTk0LjUtMjUuNC0xMTkuMS02My41Yy0xMC40LTE2LjEgNi44LTMyLjUgMjUuNS0yOC4xYzI4LjkgNi44IDYwLjUgMTAuNSA5My42IDEwLjVzNjQuNy0zLjcgOTMuNi0xMC41ek0yMTcuNiAyMjguOGwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpbkhlYXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXpNMjE1LjMgMTM3LjFjMTcuOCA0LjggMjguNCAyMy4xIDIzLjYgNDAuOGwtMTcuNCA2NWMtMi4zIDguNS0xMS4xIDEzLjYtMTkuNiAxMS4zbC02NS4xLTE3LjRjLTE3LjgtNC44LTI4LjQtMjMuMS0yMy42LTQwLjhzMjMuMS0yOC40IDQwLjgtMjMuNmwxNi4xIDQuMyA0LjMtMTYuMWM0LjgtMTcuOCAyMy4xLTI4LjQgNDAuOC0yMy42em0xMjIuMyAyMy42bDQuMyAxNi4xIDE2LjEtNC4zYzE3LjgtNC44IDM2LjEgNS44IDQwLjggMjMuNnMtNS44IDM2LjEtMjMuNiA0MC44bC02NS4xIDE3LjRjLTguNSAyLjMtMTcuMy0yLjgtMTkuNi0xMS4zbC0xNy40LTY1Yy00LjgtMTcuOCA1LjgtMzYuMSAyMy42LTQwLjhzMzYuMSA1LjggNDAuOSAyMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblNxdWludFRlYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNi44IDE0LjJDNDQ2LTUgNDc3LjUtNC42IDQ5Ny4xIDE0LjlzMjAgNTEgLjcgNzAuM2MtMTQuOCAxNC44LTY1LjcgMjMuNi04OC4zIDI2LjdjLTUuNiAuOS0xMC4zLTMuOS05LjUtOS41QzQwMy4zIDc5LjkgNDEyIDI5IDQyNi44IDE0LjJ6TTc1IDc1QzE1OC4yLTguMyAyODQuNS0yMi4yIDM4Mi4yIDMzLjJjLTEuNSA0LjgtMi45IDkuNi00LjEgMTQuM2MtMy4xIDEyLjItNS41IDI0LjYtNy4zIDM1Yy04MC44LTUzLjYtMTkwLjctNDQuOC0yNjEuOSAyNi40QzM3LjcgMTgwLjEgMjguOSAyOTAgODIuNSAzNzAuOGMtMTAuNSAxLjgtMjIuOSA0LjItMzUgNy4zYy00LjcgMS4yLTkuNSAyLjUtMTQuMyA0LjFDLTIyLjIgMjg0LjUtOC4yIDE1OC4yIDc1IDc1em0zODkuNiA1OC45YzQuNy0xLjIgOS41LTIuNSAxNC4zLTQuMUM1MzQuMiAyMjcuNSA1MjAuMiAzNTMuOCA0MzcgNDM3Yy04My4yIDgzLjItMjA5LjUgOTcuMi0zMDcuMiA0MS44YzEuNS00LjggMi44LTkuNiA0LTE0LjNjMy4xLTEyLjIgNS41LTI0LjYgNy4zLTM1YzgwLjggNTMuNiAxOTAuNyA0NC44IDI2MS45LTI2LjRjNzEuMi03MS4yIDgwLTE4MS4xIDI2LjQtMjYxLjljMTAuNS0xLjggMjIuOS00LjIgMzUtNy4zem0tMTA1LjQgOTNjMTAuMS0xNi4zIDMzLjktMTYuOSAzNy45IDEuOWM5LjUgNDQuNC0zLjcgOTMuNS0zOS4zIDEyOS4xcy04NC44IDQ4LjgtMTI5LjEgMzkuM2MtMTguNy00LTE4LjItMjcuOC0xLjktMzcuOWMyNS4yLTE1LjcgNTAuMi0zNS40IDczLjYtNTguOHM0My4xLTQ4LjQgNTguOC03My42ek05MiAyNjUuM2w5Ny40LTI5LjdjMTEuNi0zLjUgMjIuNSA3LjMgMTkgMTlsLTI5LjcgOTcuNGMtMi42IDguNi0xMy40IDExLjMtMTkuOCA0LjljLTItMi0zLjItNC42LTMuNC03LjNsLTUuMS01Ni4xLTU2LjEtNS4xYy0yLjgtLjMtNS40LTEuNS03LjMtMy40Yy02LjMtNi4zLTMuNi0xNy4yIDQuOS0xOS44em0xOTMtMTc4LjJjMiAyIDMuMiA0LjYgMy40IDcuM2w1LjEgNTYuMSA1Ni4xIDUuMWMyLjggLjMgNS40IDEuNSA3LjMgMy40YzYuMyA2LjMgMy42IDE3LjItNC45IDE5LjhsLTk3LjQgMjkuN2MtMTEuNiAzLjUtMjIuNS03LjMtMTktMTlMMjY1LjMgOTJjMi42LTguNiAxMy40LTExLjMgMTkuOC00Ljl6TTE0LjkgNDk3LjFjLTE5LjYtMTkuNi0yMC01MS0uNy03MC4zQzI5IDQxMiA3OS44IDQwMy4yIDEwMi40IDQwMC4xYzUuNi0uOSAxMC4zIDMuOSA5LjUgOS41Yy0zLjIgMjIuNS0xMS45IDczLjUtMjYuNyA4OC4zQzY2IDUxNyAzNC41IDUxNi42IDE0LjkgNDk3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0zNDkuNSA1Mi40YzE4LjctNC40IDM1LjkgMTIgMjUuNSAyOC4xQzM1MC40IDM3NC42IDMwNi4zIDQwMCAyNTUuOSA0MDBzLTk0LjUtMjUuNC0xMTkuMS02My41Yy0xMC40LTE2LjEgNi44LTMyLjUgMjUuNS0yOC4xYzI4LjkgNi44IDYwLjUgMTAuNSA5My42IDEwLjVzNjQuNy0zLjcgOTMuNi0xMC41em0tMjE2LTE2MS43bDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTU3LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluU3RhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xODMuMiAxMzIuNmMtMS4zLTIuOC00LjEtNC42LTcuMi00LjZzLTUuOSAxLjgtNy4yIDQuNmwtMTYuNiAzNC43LTM4LjEgNWMtMy4xIC40LTUuNiAyLjUtNi42IDUuNXMtLjEgNi4yIDIuMSA4LjNsMjcuOSAyNi41LTcgMzcuOGMtLjYgMyAuNyA2LjEgMy4yIDcuOXM1LjggMiA4LjUgLjZMMTc2IDI0MC41bDMzLjggMTguM2MyLjcgMS41IDYgMS4zIDguNS0uNnMzLjctNC45IDMuMi03LjlsLTctMzcuOEwyNDIuNCAxODZjMi4yLTIuMSAzLjEtNS4zIDIuMS04LjNzLTMuNS01LjEtNi42LTUuNWwtMzguMS01LTE2LjYtMzQuN3ptMTYwIDBjLTEuMy0yLjgtNC4xLTQuNi03LjItNC42cy01LjkgMS44LTcuMiA0LjZsLTE2LjYgMzQuNy0zOC4xIDVjLTMuMSAuNC01LjYgMi41LTYuNiA1LjVzLS4xIDYuMiAyLjEgOC4zbDI3LjkgMjYuNS03IDM3LjhjLS42IDMgLjcgNi4xIDMuMiA3LjlzNS44IDIgOC41IC42TDMzNiAyNDAuNWwzMy44IDE4LjNjMi43IDEuNSA2IDEuMyA4LjUtLjZzMy43LTQuOSAzLjItNy45bC03LTM3LjhMNDAyLjQgMTg2YzIuMi0yLjEgMy4xLTUuMyAyLjEtOC4zcy0zLjUtNS4xLTYuNi01LjVsLTM4LjEtNS0xNi42LTM0Ljd6bTYuMyAxNzUuOGMtMjguOSA2LjgtNjAuNSAxMC41LTkzLjYgMTAuNXMtNjQuNy0zLjctOTMuNi0xMC41Yy0xOC43LTQuNC0zNS45IDEyLTI1LjUgMjguMWMyNC42IDM4LjEgNjguNyA2My41IDExOS4xIDYzLjVzOTQuNS0yNS40IDExOS4xLTYzLjVjMTAuNC0xNi4xLTYuOC0zMi41LTI1LjUtMjguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW5UZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTYuMSAzMjUuNWMxIDMgMi4xIDYgMy4zIDguOWMzLjMgOC4xIDguNCAxOC41IDE2LjUgMjYuNmMzLjkgMy45IDguMiA3LjQgMTIuNyAxMC4zQzUwNi40IDQ1NC44IDQxOS45IDUxMiAzMjAgNTEycy0xODYuNC01Ny4yLTIyOC42LTE0MC42YzQuNS0yLjkgOC43LTYuMyAxMi43LTEwLjNjOC4xLTguMSAxMy4yLTE4LjYgMTYuNS0yNi42YzEuMi0yLjkgMi4zLTUuOSAzLjMtOC45QzE1Mi41IDQwNi4yIDIyOS41IDQ2NCAzMjAgNDY0czE2Ny41LTU3LjggMTk2LjEtMTM4LjV6TTMyMCA0OGMtMTAxLjQgMC0xODUuOCA3Mi41LTIwNC4zIDE2OC41Yy02LjctMy4xLTE0LjMtNC4zLTIyLjMtMy4xYy02LjggLjktMTYuMiAyLjQtMjYuNiA0LjRDODUuMyA5NC41IDE5MS42IDAgMzIwIDBTNTU0LjcgOTQuNSA1NzMuMiAyMTcuN2MtMTAuMy0yLTE5LjgtMy41LTI2LjYtNC40Yy04LTEuMi0xNS43IC4xLTIyLjMgMy4xQzUwNS44IDEyMC41IDQyMS40IDQ4IDMyMCA0OHpNNzguNSAzNDEuMUM2MCAzNTYuNyAzMiAzNTUuNSAxNC4zIDMzNy43Yy0xOC43LTE4LjctMTkuMS00OC44LS43LTY3LjJjOC42LTguNiAzMC4xLTE1LjEgNTAuNS0xOS42YzEzLTIuOCAyNS41LTQuOCAzMy45LTZjNS40LS44IDkuOSAzLjcgOSA5Yy0zLjEgMjEuNS0xMS40IDcwLjItMjUuNSA4NC40Yy0uOSAxLTEuOSAxLjgtMi45IDIuN3ptNDgzIDBjLS44LS42LTEuNS0xLjMtMi4zLTJjLS4yLS4yLS41LS40LS43LS43Yy0xNC4xLTE0LjEtMjIuNS02Mi45LTI1LjUtODQuNGMtLjgtNS40IDMuNy05LjkgOS05YzEgLjEgMi4yIC4zIDMuMyAuNWM4LjIgMS4yIDE5LjIgMyAzMC42IDUuNWMyMC40IDQuNCA0MS45IDEwLjkgNTAuNSAxOS42YzE4LjQgMTguNCAxOCA0OC41LS43IDY3LjJjLTE3LjcgMTcuNy00NS43IDE5LTY0LjIgMy40ek00MzkgMzM2LjVDNDE0LjQgMzc0LjYgMzcwLjMgNDAwIDMxOS45IDQwMHMtOTQuNS0yNS40LTExOS4xLTYzLjVjLTEwLjQtMTYuMSA2LjgtMzIuNSAyNS41LTI4LjFjMjguOSA2LjggNjAuNSAxMC41IDkzLjYgMTAuNXM2NC43LTMuNyA5My42LTEwLjVjMTguNy00LjQgMzUuOSAxMiAyNS41IDI4LjF6TTI4MS42IDIyOC44bDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMCAwIDB6bTE2MCAwbDAgMCAwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluVG9uZ3VlU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZjMC0xMTQuOS05My4xLTIwOC0yMDgtMjA4UzQ4IDE0MS4xIDQ4IDI1NmMwIDgxLjcgNDcuMSAxNTIuNCAxMTUuNyAxODYuNGMtMi40LTguNC0zLjctMTcuMy0zLjctMjYuNFYzOTIuN2MtMjQtMTcuNS00My4xLTQxLjQtNTQuOC02OS4yYy01LTExLjggNy0yMi41IDE5LjMtMTguN2MzOS43IDEyLjIgODQuNSAxOSAxMzEuOCAxOXM5Mi4xLTYuOCAxMzEuOC0xOWMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdjLTExLjggMjgtMzEuMSA1Mi01NS40IDY5LjZWNDE2YzAgOS4yLTEuMyAxOC0zLjcgMjYuNEM0MTYuOSA0MDguNCA0NjQgMzM3LjcgNDY0IDI1NnpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xMTYtOTguOWMwLTkgOS42LTE0LjcgMTcuNS0xMC41bDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNnptMjYyLjUtMTAuNWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOXpNMzIwIDQxNlYzNzguNmMwLTE0LjctMTEuOS0yNi42LTI2LjYtMjYuNmgtMmMtMTEuMyAwLTIxLjEgNy45LTIzLjYgMTguOWMtMi44IDEyLjYtMjAuOCAxMi42LTIzLjYgMGMtMi41LTExLjEtMTIuMy0xOC45LTIzLjYtMTguOWgtMmMtMTQuNyAwLTI2LjYgMTEuOS0yNi42IDI2LjZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluVG9uZ3VlV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDguMyA0NDIuNGMyLjQtOC40IDMuNy0xNy4zIDMuNy0yNi40VjM2My41YzguOC04IDE2LjYtMTcuMSAyMy0yN2MxMC40LTE2LjEtNi44LTMyLjUtMjUuNS0yOC4xYy0yOC45IDYuOC02MC41IDEwLjUtOTMuNiAxMC41cy02NC43LTMuNy05My42LTEwLjVjLTE4LjctNC40LTM1LjkgMTItMjUuNSAyOC4xYzYuNSAxMCAxNC4zIDE5LjEgMjMuMSAyNy4xVjQxNmMwIDkuMiAxLjMgMTggMy43IDI2LjRDOTUuMSA0MDguNCA0OCAzMzcuNyA0OCAyNTZDNDggMTQxLjEgMTQxLjEgNDggMjU2IDQ4czIwOCA5My4xIDIwOCAyMDhjMCA4MS43LTQ3LjEgMTUyLjQtMTE1LjcgMTg2LjR6TTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNTkuNiAyMjBjMTAuNiAwIDE5LjkgMy44IDI1LjQgOS43YzcuNiA4LjEgMjAuMiA4LjUgMjguMyAuOXM4LjUtMjAuMiAuOS0yOC4zQzE5OS43IDE4Ni44IDE3OSAxODAgMTU5LjYgMTgwcy00MC4xIDYuOC01NC42IDIyLjNjLTcuNiA4LjEtNy4xIDIwLjcgLjkgMjguM3MyMC43IDcuMSAyOC4zLS45YzUuNS01LjggMTQuOC05LjcgMjUuNC05Ljd6bTE3Ni43IDEyYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptLS40LTcyYTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnptMCAxMjhhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6TTMyMCA0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjRWMzc4LjZjMC0xNC43IDExLjktMjYuNiAyNi42LTI2LjZoMmMxMS4zIDAgMjEuMSA3LjkgMjMuNiAxOC45YzIuOCAxMi42IDIwLjggMTIuNiAyMy42IDBjMi41LTExLjEgMTIuMy0xOC45IDIzLjYtMTguOWgyYzE0LjcgMCAyNi42IDExLjkgMjYuNiAyNi42VjQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW5Ub25ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NmMwLTExNC45LTkzLjEtMjA4LTIwOC0yMDhTNDggMTQxLjEgNDggMjU2YzAgODEuNyA0Ny4xIDE1Mi40IDExNS43IDE4Ni40Yy0yLjQtOC40LTMuNy0xNy4zLTMuNy0yNi40VjM2My42Yy04LjktOC0xNi43LTE3LjEtMjMuMS0yNy4xYy0xMC40LTE2LjEgNi44LTMyLjUgMjUuNS0yOC4xYzI4LjkgNi44IDYwLjUgMTAuNSA5My42IDEwLjVzNjQuNy0zLjcgOTMuNi0xMC41YzE4LjctNC40IDM1LjkgMTIgMjUuNSAyOC4xYy02LjQgOS45LTE0LjIgMTktMjMgMjdWNDE2YzAgOS4yLTEuMyAxOC0zLjcgMjYuNEM0MTYuOSA0MDguNCA0NjQgMzM3LjcgNDY0IDI1NnpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzYuNC04MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0zMjAgNDE2VjM3OC42YzAtMTQuNy0xMS45LTI2LjYtMjYuNi0yNi42aC0yYy0xMS4zIDAtMjEuMSA3LjktMjMuNiAxOC45Yy0yLjggMTIuNi0yMC44IDEyLjYtMjMuNiAwYy0yLjUtMTEuMS0xMi4zLTE4LjktMjMuNi0xOC45aC0yYy0xNC43IDAtMjYuNiAxMS45LTI2LjYgMjYuNlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW5XaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0zNDkuNSA1Mi40YzE4LjctNC40IDM1LjkgMTIgMjUuNSAyOC4xQzM1MC40IDM3NC42IDMwNi4zIDQwMCAyNTUuOSA0MDBzLTk0LjUtMjUuNC0xMTkuMS02My41Yy0xMC40LTE2LjEgNi44LTMyLjUgMjUuNS0yOC4xYzI4LjkgNi44IDYwLjUgMTAuNSA5My42IDEwLjVzNjQuNy0zLjcgOTMuNi0xMC41ek0yMjQgMTkyYzAgMzUuMy0xNC4zIDY0LTMyIDY0cy0zMi0yOC43LTMyLTY0czE0LjMtNjQgMzItNjRzMzIgMjguNyAzMiA2NHptOTYgNjRjLTE3LjcgMC0zMi0yOC43LTMyLTY0czE0LjMtNjQgMzItNjRzMzIgMjguNyAzMiA2NHMtMTQuMyA2NC0zMiA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW5XaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0zNDkuNSA1Mi40YzE4LjctNC40IDM1LjkgMTIgMjUuNSAyOC4xQzM1MC40IDM3NC42IDMwNi4zIDQwMCAyNTUuOSA0MDBzLTk0LjUtMjUuNC0xMTkuMS02My41Yy0xMC40LTE2LjEgNi44LTMyLjUgMjUuNS0yOC4xYzI4LjkgNi44IDYwLjUgMTAuNSA5My42IDEwLjVzNjQuNy0zLjcgOTMuNi0xMC41ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTY1LjggMjEuN2MtNy42IDguMS0yMC4yIDguNS0yOC4zIC45cy04LjUtMjAuMi0uOS0yOC4zYzE0LjUtMTUuNSAzNS4yLTIyLjMgNTQuNi0yMi4zczQwLjEgNi44IDU0LjYgMjIuM2M3LjYgOC4xIDcuMSAyMC43LS45IDI4LjNzLTIwLjcgNy4xLTI4LjMtLjljLTUuNS01LjgtMTQuOC05LjctMjUuNC05LjdzLTE5LjkgMy44LTI1LjQgOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VLaXNzQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzA0LjcgNDEuN2M0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRjLTIuNyAxLjUtNS43IDMtOC43IDQuM2MzLjEgMS4zIDYgMi43IDguNyA0LjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjRjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40QzI3NC43IDQyNy4xIDI1Ny40IDQzMiAyNDAgNDMyYy0zLjYgMC02LjgtMi41LTcuNy02cy42LTcuMiAzLjgtOWwwIDAgMCAwIDAgMCAwIDAgLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFjLS40LS4yLS43LS40LS45LS41bC0uMi0uMSAwIDAgMCAwIDAgMGMtMi41LTEuNC00LjEtNC4xLTQuMS03czEuNi01LjYgNC4xLTdsMCAwIDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWMtLjQtLjItLjctLjQtLjktLjVsLS4yLS4xIDAgMCAwIDAgMCAwYy0zLjItMS44LTQuNy01LjUtMy44LTlzNC4xLTYgNy43LTZjMTcuNCAwIDM0LjcgNC45IDQ3LjkgMTIuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNHptLTg3LjEtNjguOWwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlS2lzc1dpbmtIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzguOSA0NDYuOGMtMjUuNCAxMS01My40IDE3LjItODIuOSAxNy4yQzE0MS4xIDQ2NCA0OCAzNzAuOSA0OCAyNTZTMTQxLjEgNDggMjU2IDQ4czIwOCA5My4xIDIwOCAyMDhjMCAyMi40LTMuNSA0My45LTEwLjEgNjQuMWMzLjEgNC41IDUuNyA5LjQgNy44IDE0LjZjMTIuNy0xLjYgMjUuMSAuNCAzNi4yIDVjOS4xLTI2LjIgMTQtNTQuNCAxNC04My43QzUxMiAxMTQuNiAzOTcuNCAwIDI1NiAwUzAgMTE0LjYgMCAyNTZTMTE0LjYgNTEyIDI1NiA1MTJjMzUuNCAwIDY5LjEtNy4yIDk5LjctMjAuMmMtNC44LTUuNS04LjUtMTIuMi0xMC40LTE5LjdsLTYuNS0yNS4zek0yOTYgMzE2YzAtNi45LTMuMS0xMy4yLTcuMy0xOC4zYy00LjMtNS4yLTEwLjEtOS43LTE2LjctMTMuNEMyNTguNyAyNzYuOSAyNDEuNCAyNzIgMjI0IDI3MmMtMy42IDAtNi44IDIuNS03LjcgNnMuNiA3LjIgMy44IDlsMCAwIDAgMCAwIDAgLjIgLjFjLjIgLjEgLjUgLjMgLjkgLjVjLjggLjUgMiAxLjIgMy40IDIuMWMyLjggMS45IDYuNSA0LjUgMTAuMiA3LjZjMy43IDMuMSA3LjIgNi42IDkuNiAxMC4xYzIuNSAzLjUgMy41IDYuNCAzLjUgOC42cy0xIDUtMy41IDguNmMtMi41IDMuNS01LjkgNi45LTkuNiAxMC4xYy0zLjcgMy4xLTcuNCA1LjctMTAuMiA3LjZjLTEuNCAuOS0yLjYgMS42LTMuNCAyLjFjLS40IC4yLS43IC40LS45IC41bC0uMiAuMSAwIDAgMCAwIDAgMCAwIDAgMCAwYy0yLjUgMS40LTQuMSA0LjEtNC4xIDdzMS42IDUuNiA0LjEgN2wwIDAgMCAwIDAgMCAuMiAuMWMuMiAuMSAuNSAuMyAuOSAuNWMuOCAuNSAyIDEuMiAzLjQgMi4xYzIuOCAxLjkgNi41IDQuNSAxMC4yIDcuNmMzLjcgMy4xIDcuMiA2LjYgOS42IDEwLjFjMi41IDMuNSAzLjUgNi40IDMuNSA4LjZzLTEgNS0zLjUgOC42Yy0yLjUgMy41LTUuOSA2LjktOS42IDEwLjFjLTMuNyAzLjEtNy40IDUuNy0xMC4yIDcuNmMtMS40IC45LTIuNiAxLjYtMy40IDIuMWMtLjQgLjItLjcgLjQtLjkgLjVsLS4yIC4xIDAgMCAwIDAgMCAwIDAgMGMtMy4yIDEuOC00LjcgNS41LTMuOCA5czQuMSA2IDcuNyA2YzE3LjQgMCAzNC43LTQuOSA0Ny45LTEyLjNjNi42LTMuNyAxMi41LTguMiAxNi43LTEzLjRjNC4zLTUuMSA3LjMtMTEuNCA3LjMtMTguM3MtMy4xLTEzLjItNy4zLTE4LjNjLTQuMy01LjItMTAuMS05LjctMTYuNy0xMy40Yy0yLjctMS41LTUuNy0zLTguNy00LjNjMy4xLTEuMyA2LTIuNyA4LjctNC4zYzYuNi0zLjcgMTIuNS04LjIgMTYuNy0xMy40YzQuMy01LjEgNy4zLTExLjQgNy4zLTE4LjN6TTE3Ni40IDI0MGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTE1OS4zLTIwYzEwLjYgMCAxOS45IDMuOCAyNS40IDkuN2M3LjYgOC4xIDIwLjIgOC41IDI4LjMgLjlzOC41LTIwLjIgLjktMjguM0MzNzUuNyAxODYuOCAzNTUgMTgwIDMzNS42IDE4MHMtNDAuMSA2LjgtNTQuNiAyMi4zYy03LjYgOC4xLTcuMSAyMC43IC45IDI4LjNzMjAuNyA3LjEgMjguMy0uOWM1LjUtNS44IDE0LjgtOS43IDI1LjQtOS43ek00MzQgMzUyLjNjLTYtMjMuMi0yOC44LTM3LTUxLjEtMzAuOHMtMzUuNCAzMC4xLTI5LjUgNTMuNGwyMi45IDg5LjNjMi4yIDguNyAxMS4yIDEzLjkgMTkuOCAxMS40bDg0LjktMjMuOGMyMi4yLTYuMiAzNS40LTMwLjEgMjkuNS01My40cy0yOC44LTM3LTUxLjEtMzAuOGwtMjAuMiA1LjYtNS40LTIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlS2lzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzA0LjcgMjUuN2M0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRjLTIuNyAxLjUtNS43IDMtOC43IDQuM2MzLjEgMS4zIDYgMi43IDguNyA0LjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjRjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40QzI3NC43IDQxMS4xIDI1Ny40IDQxNiAyNDAgNDE2Yy0zLjYgMC02LjgtMi41LTcuNy02cy42LTcuMiAzLjgtOWwwIDAgMCAwIDAgMCAwIDAgLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFsLS44LS41LS4xLS4xLS4yLS4xIDAgMCAwIDAgMCAwYy0yLjUtMS40LTQuMS00LjEtNC4xLTdzMS42LTUuNiA0LjEtN2wwIDAgMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xYy0uNC0uMi0uNy0uNC0uOS0uNWwtLjItLjEgMCAwIDAgMCAwIDBjLTMuMi0xLjgtNC43LTUuNS0zLjgtOXM0LjEtNiA3LjctNmMxNy40IDAgMzQuNyA0LjkgNDcuOSAxMi4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUxhdWdoQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTMwLjcgNTcuOWMtNC4yLTEzLjYgNy4xLTI1LjkgMjEuMy0yNS45SDM2NC41YzE0LjIgMCAyNS41IDEyLjQgMjEuMyAyNS45QzM2OSAzNjguNCAzMTguMiA0MDggMjU4LjIgNDA4cy0xMTAuOC0zOS42LTEyNy41LTk0LjF6bTg2LjktODUuMWwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlTGF1Z2hTcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTEzMC43IDU3LjljLTQuMi0xMy42IDcuMS0yNS45IDIxLjMtMjUuOUgzNjQuNWMxNC4yIDAgMjUuNSAxMi40IDIxLjMgMjUuOUMzNjkgMzY4LjQgMzE4LjIgNDA4IDI1OC4yIDQwOHMtMTEwLjgtMzkuNi0xMjcuNS05NC4xem0yLjgtMTgzLjNsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42YzAtOSA5LjYtMTQuNyAxNy41LTEwLjV6TTM5NiAxNDEuMWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUxhdWdoV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTMwLjcgNTcuOWMtNC4yLTEzLjYgNy4xLTI1LjkgMjEuMy0yNS45SDM2NC41YzE0LjIgMCAyNS41IDEyLjQgMjEuMyAyNS45QzM2OSAzNjguNCAzMTguMiA0MDggMjU4LjIgNDA4cy0xMTAuOC0zOS42LTEyNy41LTk0LjF6TTE0NC40IDE5MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xNjUuOCAyMS43Yy03LjYgOC4xLTIwLjIgOC41LTI4LjMgLjlzLTguNS0yMC4yLS45LTI4LjNjMTQuNS0xNS41IDM1LjItMjIuMyA1NC42LTIyLjNzNDAuMSA2LjggNTQuNiAyMi4zYzcuNiA4LjEgNy4xIDIwLjctLjkgMjguM3MtMjAuNyA3LjEtMjguMy0uOWMtNS41LTUuOC0xNC44LTkuNy0yNS40LTkuN3MtMTkuOSAzLjgtMjUuNCA5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VMYXVnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTMwLjcgNTcuOWMtNC4yLTEzLjYgNy4xLTI1LjkgMjEuMy0yNS45SDM2NC41YzE0LjIgMCAyNS41IDEyLjQgMjEuMyAyNS45QzM2OSAzNjguNCAzMTguMiA0MDggMjU4LjIgNDA4cy0xMTAuOC0zOS42LTEyNy41LTk0LjF6TTE0NC40IDE5MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlTWVoQmxhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDAgMCA0MTYgMjA4IDIwOCAwIDEgMCAwLTQxNnpNNTEyIDI1NkEyNTYgMjU2IDAgMSAxIDAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDB6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlTWVoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMSA0OCAyNTZhMjA4IDIwOCAwIDEgMSA0MTYgMHpNMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwek0xNzYuNCAyNDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xOTItMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTg0IDMyOGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgzMjhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlUm9sbGluZ0V5ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjggMzc2YzAgMTMuMyAxMC43IDI0IDI0IDI0SDMyMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxOTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0em0tOC0xMDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtMTQuMyA2LjMtMjcuMiAxNi4yLTM2Yy0uMiAxLjMtLjIgMi42LS4yIDRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTEuNC0uMS0yLjctLjItNGMxMCA4LjggMTYuMiAyMS43IDE2LjIgMzZjMCAyNi41LTIxLjUgNDgtNDggNDh6bTAgMzJhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6bTE5Mi0zMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhjMC0xNC4zIDYuMy0yNy4yIDE2LjItMzZjLS4yIDEuMy0uMiAyLjYtLjIgNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMS40LS4xLTIuNy0uMi00YzEwIDguOCAxNi4yIDIxLjcgMTYuMiAzNmMwIDI2LjUtMjEuNSA0OC00OCA0OHptMCAzMmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVNhZENyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgNDA2LjFWMjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjQ0MC42Yy0yOC43IDE1LTYxLjQgMjMuNC05NiAyMy40cy02Ny4zLTguNS05Ni0yMy40VjI4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY0MDYuMUM3Mi42IDM2OC4yIDQ4IDMxNSA0OCAyNTZDNDggMTQxLjEgMTQxLjEgNDggMjU2IDQ4czIwOCA5My4xIDIwOCAyMDhjMCA1OS0yNC42IDExMi4yLTY0IDE1MC4xek0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTU5LjYgMjIwYzEwLjYgMCAxOS45IDMuOCAyNS40IDkuN2M3LjYgOC4xIDIwLjIgOC41IDI4LjMgLjlzOC41LTIwLjIgLjktMjguM0MxOTkuNyAxODYuOCAxNzkgMTgwIDE1OS42IDE4MHMtNDAuMSA2LjgtNTQuNiAyMi4zYy03LjYgOC4xLTcuMSAyMC43IC45IDI4LjNzMjAuNyA3LjEgMjguMy0uOWM1LjUtNS44IDE0LjgtOS43IDI1LjQtOS43em0xNjYuNiA5LjdjNS41LTUuOCAxNC44LTkuNyAyNS40LTkuN3MxOS45IDMuOCAyNS40IDkuN2M3LjYgOC4xIDIwLjIgOC41IDI4LjMgLjlzOC41LTIwLjIgLjktMjguM0MzOTEuNyAxODYuOCAzNzEgMTgwIDM1MS42IDE4MHMtNDAuMSA2LjgtNTQuNiAyMi4zYy03LjYgOC4xLTcuMSAyMC43IC45IDI4LjNzMjAuNyA3LjEgMjguMy0uOXpNMjA4IDMyMHYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4VjMyMGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVNhZFRlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc1LjkgNDQ4Yy0zNS0uMS02NS41LTIyLjYtNzYtNTQuNkM2Ny42IDM1Ni44IDQ4IDMwOC43IDQ4IDI1NkM0OCAxNDEuMSAxNDEuMSA0OCAyNTYgNDhzMjA4IDkzLjEgMjA4IDIwOHMtOTMuMSAyMDgtMjA4IDIwOGMtMjguNCAwLTU1LjUtNS43LTgwLjEtMTZ6TTAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDBBMjU2IDI1NiAwIDEgMCAwIDI1NnpNMTI4IDM2OWMwIDI2IDIxLjUgNDcgNDggNDdzNDgtMjEgNDgtNDdjMC0yMC0yOC40LTYwLjQtNDEuNi03Ny43Yy0zLjItNC40LTkuNi00LjQtMTIuOCAwQzE1Ni42IDMwOC42IDEyOCAzNDkgMTI4IDM2OXptMTI4LTY1Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0YzMwLjcgMCA1OC43IDExLjUgODAgMzAuNmM5LjkgOC44IDI1IDggMzMuOS0xLjlzOC0yNS0xLjktMzMuOUMzMzguMyAzMjAuMiAyOTkgMzA0IDI1NiAzMDR6bTQ3LjYtOTZhMzIgMzIgMCAxIDAgNjQgMCAzMiAzMiAwIDEgMCAtNjQgMHptLTEyOCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VTbWlsZUJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE3Ny42IDYyLjFDMTkyLjggMzM0LjUgMjE4LjggMzUyIDI1NiAzNTJzNjMuMi0xNy41IDc4LjQtMzMuOWM5LTkuNyAyNC4yLTEwLjQgMzMuOS0xLjRzMTAuNCAyNC4yIDEuNCAzMy45Yy0yMiAyMy44LTYwIDQ5LjQtMTEzLjYgNDkuNHMtOTEuNy0yNS41LTExMy42LTQ5LjRjLTktOS43LTguNC0yNC45IDEuNC0zMy45czI0LjktOC40IDMzLjkgMS40em00MC04OS4zbDAgMCAwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDB6bTE2MCAwbDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMCAwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VTbWlsZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE3Ny42IDYyLjFDMTkyLjggMzM0LjUgMjE4LjggMzUyIDI1NiAzNTJzNjMuMi0xNy41IDc4LjQtMzMuOWM5LTkuNyAyNC4yLTEwLjQgMzMuOS0xLjRzMTAuNCAyNC4yIDEuNCAzMy45Yy0yMiAyMy44LTYwIDQ5LjQtMTEzLjYgNDkuNHMtOTEuNy0yNS41LTExMy42LTQ5LjRjLTktOS43LTguNC0yNC45IDEuNC0zMy45czI0LjktOC40IDMzLjkgMS40ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTY1LjggMjEuN2MtNy42IDguMS0yMC4yIDguNS0yOC4zIC45cy04LjUtMjAuMi0uOS0yOC4zYzE0LjUtMTUuNSAzNS4yLTIyLjMgNTQuNi0yMi4zczQwLjEgNi44IDU0LjYgMjIuM2M3LjYgOC4xIDcuMSAyMC43LS45IDI4LjNzLTIwLjcgNy4xLTI4LjMtLjljLTUuNS01LjgtMTQuOC05LjctMjUuNC05LjdzLTE5LjkgMy44LTI1LjQgOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlU21pbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE3Ny42IDYyLjFDMTkyLjggMzM0LjUgMjE4LjggMzUyIDI1NiAzNTJzNjMuMi0xNy41IDc4LjQtMzMuOWM5LTkuNyAyNC4yLTEwLjQgMzMuOS0xLjRzMTAuNCAyNC4yIDEuNCAzMy45Yy0yMiAyMy44LTYwIDQ5LjQtMTEzLjYgNDkuNHMtOTEuNy0yNS41LTExMy42LTQ5LjRjLTktOS43LTguNC0yNC45IDEuNC0zMy45czI0LjktOC40IDMzLjkgMS40ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVN1cnByaXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzYuNC04MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0yNTYgMjg4YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlVGlyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE3Ni41IDY0LjNDMTk2LjEgMzAyLjEgMjIzLjggMjg4IDI1NiAyODhzNTkuOSAxNC4xIDc5LjUgMzIuM0MzNTQuNSAzMzguMSAzNjggMzYyIDM2OCAzODRjMCA1LjQtMi43IDEwLjQtNy4yIDEzLjRzLTEwLjIgMy40LTE1LjIgMS4zbC0xNy4yLTcuNWMtMjIuOC0xMC00Ny41LTE1LjEtNzIuNC0xNS4xcy00OS42IDUuMi03Mi40IDE1LjFsLTE3LjIgNy41Yy00LjkgMi4yLTEwLjcgMS43LTE1LjItMS4zcy03LjItOC03LjItMTMuNGMwLTIyIDEzLjUtNDUuOSAzMi41LTYzLjd6bS00My0xNzMuNmw4OS45IDQ3LjljMTAuNyA1LjcgMTAuNyAyMS4xIDAgMjYuOGwtODkuOSA0Ny45Yy03LjkgNC4yLTE3LjUtMS41LTE3LjUtMTAuNWMwLTIuOCAxLTUuNSAyLjgtNy42bDM2LTQzLjItMzYtNDMuMmMtMS44LTIuMS0yLjgtNC44LTIuOC03LjZjMC05IDkuNi0xNC43IDE3LjUtMTAuNXpNMzk2IDE1Ny4xYzAgMi44LTEgNS41LTIuOCA3LjZsLTM2IDQzLjIgMzYgNDMuMmMxLjggMi4xIDIuOCA0LjggMi44IDcuNmMwIDktOS42IDE0LjctMTcuNSAxMC41bC04OS45LTQ3LjljLTEwLjctNS43LTEwLjctMjEuMSAwLTI2LjhsODkuOS00Ny45YzcuOS00LjIgMTcuNSAxLjUgMTcuNSAxMC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlQXVkaW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY0SDMyMGM4LjggMCAxNi03LjIgMTYtMTZWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDhINjRjLTguOCAwLTE2IDcuMi0xNiAxNlY0NDhjMCA4LjggNy4yIDE2IDE2IDE2ek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjkuNWMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2w5MC41IDkwLjVjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0xOTIgMjcyVjQwMGMwIDYuNS0zLjkgMTIuMy05LjkgMTQuOHMtMTIuOSAxLjEtMTcuNC0zLjVMMTI5LjQgMzc2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2VjMxMmMwLTguOCA3LjItMTYgMTYtMTZoMTcuNGwzNS4zLTM1LjNjNC42LTQuNiAxMS41LTUuOSAxNy40LTMuNXM5LjkgOC4zIDkuOSAxNC44em04NS44LTRjMTEuNiAyMCAxOC4yIDQzLjMgMTguMiA2OHMtNi42IDQ4LTE4LjIgNjhjLTYuNiAxMS41LTIxLjMgMTUuNC0zMi44IDguOHMtMTUuNC0yMS4zLTguOC0zMi44YzcuNS0xMi45IDExLjgtMjcuOSAxMS44LTQ0cy00LjMtMzEuMS0xMS44LTQ0Yy02LjYtMTEuNS0yLjctMjYuMiA4LjgtMzIuOHMyNi4yLTIuNyAzMi44IDguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY0Yy04LjggMC0xNi03LjItMTYtMTZWNjRjMC04LjggNy4yLTE2IDE2LTE2SDIyNHY4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MFY0NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDY0ek02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE1NC41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI3NC43IDE4LjdDMjYyLjcgNi43IDI0Ni41IDAgMjI5LjUgMEg2NHptOTcgMjg5YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMNzkgMzAzYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw0OCA0OGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTMxLTMxIDMxLTMxek0yNTcgMjU1Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDMxIDMxLTMxIDMxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNDgtNDhjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlRXhjZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggNDQ4VjY0YzAtOC44IDcuMi0xNiAxNi0xNkgyMjR2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2ek02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE1NC41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI3NC43IDE4LjdDMjYyLjcgNi43IDI0Ni41IDAgMjI5LjUgMEg2NHptOTAuOSAyMzMuM2MtOC4xLTEwLjUtMjMuMi0xMi4zLTMzLjctNC4ycy0xMi4zIDIzLjItNC4yIDMzLjdMMTYxLjYgMzIwbC00NC41IDU3LjNjLTguMSAxMC41LTYuMyAyNS41IDQuMiAzMy43czI1LjUgNi4zIDMzLjctNC4yTDE5MiAzNTkuMWwzNy4xIDQ3LjZjOC4xIDEwLjUgMjMuMiAxMi4zIDMzLjcgNC4yczEyLjMtMjMuMiA0LjItMzMuN0wyMjIuNCAzMjBsNDQuNS01Ny4zYzguMS0xMC41IDYuMy0yNS41LTQuMi0zMy43cy0yNS41LTYuMy0zMy43IDQuMkwxOTIgMjgwLjlsLTM3LjEtNDcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0YzAtOC44IDcuMi0xNiAxNi0xNkgyMjR2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NHpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTk2IDI1NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem02OS4yIDQ2LjljLTMtNC4zLTcuOS02LjktMTMuMi02LjlzLTEwLjIgMi42LTEzLjIgNi45bC00MS4zIDU5LjctMTEuOS0xOS4xYy0yLjktNC43LTguMS03LjUtMTMuNi03LjVzLTEwLjYgMi44LTEzLjYgNy41bC00MCA2NGMtMy4xIDQuOS0zLjIgMTEuMS0uNCAxNi4yczguMiA4LjIgMTQgOC4yaDQ4IDMyIDQwIDcyYzYgMCAxMS40LTMuMyAxNC4yLTguNnMyLjQtMTEuNi0xLTE2LjVsLTcyLTEwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUxpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0YzAtOC44IDcuMi0xNiAxNi0xNkgyMjR2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NHpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTU2IDI1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgyNjRjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTIwem0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDI2NGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVQZGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY0bDQ4IDAgMCA0OC00OCAwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyMjkuNSAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43bDkwLjUgOTAuNWMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zTDM4NCAzMDRsLTQ4IDAgMC0xNDQtODAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC04MEw2NCA0OGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzg0YzAgOC44IDcuMiAxNiAxNiAxNnpNMTc2IDM1MmwzMiAwYzMwLjkgMCA1NiAyNS4xIDU2IDU2cy0yNS4xIDU2LTU2IDU2bC0xNiAwIDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC00OCAwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnptMzIgODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE2IDAgMCA0OCAxNiAwem05Ni04MGwzMiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNjRjMCAyNi41LTIxLjUgNDgtNDggNDhsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTEyOGMwLTguOCA3LjItMTYgMTYtMTZ6bTMyIDEyOGM4LjggMCAxNi03LjIgMTYtMTZsMC02NGMwLTguOC03LjItMTYtMTYtMTZsLTE2IDAgMCA5NiAxNiAwem04MC0xMTJjMC04LjggNy4yLTE2IDE2LTE2bDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTMyIDAgMCAzMiAzMiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwIDAgNDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC02NCAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlUG93ZXJwb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjR6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTU0LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjc0LjcgMTguN0MyNjIuNyA2LjcgMjQ2LjUgMCAyMjkuNSAwSDY0em03MiAyMDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjMzNnY1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjM2MGg0NGM0MiAwIDc2LTM0IDc2LTc2cy0zNC03Ni03Ni03NkgxMzZ6bTY4IDEwNEgxNjBWMjU2aDQ0YzE1LjUgMCAyOCAxMi41IDI4IDI4cy0xMi41IDI4LTI4IDI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ2NGM4LjggMCAxNi03LjIgMTYtMTZWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDhINjRjLTguOCAwLTE2IDcuMi0xNiAxNlY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDMyMHpNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI5LjVjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdsOTAuNSA5MC41YzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNODAgMjg4YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjE2bDQ0LjktMjkuOWMyLTEuMyA0LjQtMi4xIDYuOC0yLjFjNi44IDAgMTIuMyA1LjUgMTIuMyAxMi4zVjM4Ny43YzAgNi44LTUuNSAxMi4zLTEyLjMgMTIuM2MtMi40IDAtNC44LS43LTYuOC0yLjFMMjQwIDM2OHYxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVdvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggNDQ4VjY0YzAtOC44IDcuMi0xNiAxNi0xNkgyMjR2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2ek02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE1NC41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI3NC43IDE4LjdDMjYyLjcgNi43IDI0Ni41IDAgMjI5LjUgMEg2NHptNTUgMjQxLjFjLTMuOC0xMi43LTE3LjItMTkuOS0yOS45LTE2LjFzLTE5LjkgMTcuMi0xNi4xIDI5LjlsNDggMTYwYzMgMTAuMiAxMi40IDE3LjEgMjMgMTcuMXMxOS45LTcgMjMtMTcuMWwyNS04My40IDI1IDgzLjRjMyAxMC4yIDEyLjQgMTcuMSAyMyAxNy4xczE5LjktNyAyMy0xNy4xbDQ4LTE2MGMzLjgtMTIuNy0zLjQtMjYuMS0xNi4xLTI5LjlzLTI2LjEgMy40LTI5LjkgMTYuMWwtMjUgODMuNC0yNS04My40Yy0zLTEwLjItMTIuNC0xNy4xLTIzLTE3LjFzLTE5LjkgNy0yMyAxNy4xbC0yNSA4My40LTI1LTgzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVaaXBwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY0Yy04LjggMC0xNi03LjItMTYtMTZWNjRjMC04LjggNy4yLTE2IDE2LTE2aDQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZoNDh2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NHpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTQ4IDExMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTI4Yy04LjggMC0xNiA3LjItMTYgMTZ6bTAgNjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2em0tNi4zIDcxLjhMODIuMSAzMzUuOWMtMS40IDUuNC0yLjEgMTAuOS0yLjEgMTYuNGMwIDM1LjIgMjguOCA2My43IDY0IDYzLjdzNjQtMjguNSA2NC02My43YzAtNS41LS43LTExLjEtMi4xLTE2LjRsLTIzLjUtODguMmMtMy43LTE0LTE2LjQtMjMuOC0zMC45LTIzLjhIMTM2LjZjLTE0LjUgMC0yNy4yIDkuNy0zMC45IDIzLjh6TTEyOCAzMzZoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTI4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0NjRjOC44IDAgMTYtNy4yIDE2LTE2VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ4SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNkgzMjB6TTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyOS41YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43bDkwLjUgOTAuNWMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zVjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMjRDNDggMTAuNyAzNy4zIDAgMjQgMFMwIDEwLjcgMCAyNFY2NCAzNTAuNSA0MDB2ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzODhsODAuMy0yMC4xYzQxLjEtMTAuMyA4NC42LTUuNSAxMjIuNSAxMy40YzQ0LjIgMjIuMSA5NS41IDI0LjggMTQxLjcgNy40bDM0LjctMTNjMTIuNS00LjcgMjAuOC0xNi42IDIwLjgtMzBWNjYuMWMwLTIzLTI0LjItMzgtNDQuOC0yNy43bC05LjYgNC44Yy00Ni4zIDIzLjItMTAwLjggMjMuMi0xNDcuMSAwYy0zNS4xLTE3LjYtNzUuNC0yMi0xMTMuNS0xMi41TDQ4IDUyVjI0em0wIDc3LjVsOTYuNi0yNC4yYzI3LTYuNyA1NS41LTMuNiA4MC40IDguOGM1NC45IDI3LjQgMTE4LjcgMjkuNyAxNzUgNi44VjMzNC43bC0yNC40IDkuMWMtMzMuNyAxMi42LTcxLjIgMTAuNy0xMDMuNC01LjRjLTQ4LjItMjQuMS0xMDMuMy0zMC4xLTE1NS42LTE3LjFMNDggMzM4LjV2LTIzN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmxvcHB5RGlzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCA5NlY0MTZjMCA4LjggNy4yIDE2IDE2IDE2SDM4NGM4LjggMCAxNi03LjIgMTYtMTZWMTcwLjVjMC00LjItMS43LTguMy00LjctMTEuM2wzMy45LTMzLjljMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1Y0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDMwOS41YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43bDc0LjUgNzQuNS0zMy45IDMzLjlMMzIwLjggODQuN2MtLjMtLjMtLjUtLjUtLjgtLjhWMTg0YzAgMTMuMy0xMC43IDI0LTI0IDI0SDEwNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWODBINjRjLTguOCAwLTE2IDcuMi0xNiAxNnptODAtMTZ2ODBIMjcyVjgwSDEyOHptMzIgMjQwYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRm9sZGVyQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjg5LjlMMjQ3IDUzLjFDMjMzLjUgMzkuNiAyMTUuMiAzMiAxOTYuMSAzMkg2NHpNNDggOTZjMC04LjggNy4yLTE2IDE2LTE2SDE5Ni4xYzYuNCAwIDEyLjUgMi41IDE3IDdsNDUuMyA0NS4zYzcuNSA3LjUgMTcuNyAxMS43IDI4LjMgMTEuN0g0NDhjOC44IDAgMTYgNy4yIDE2IDE2djMySDQ4Vjk2em0wIDE0NEg0NjRWNDE2YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRm9sZGVyT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgNDgwaDQ4YzExLjQgMCAyMS45LTYgMjcuNi0xNS45bDExMi0xOTJjNS44LTkuOSA1LjgtMjIuMSAuMS0zMi4xUzU1NS41IDIyNCA1NDQgMjI0SDE0NGMtMTEuNCAwLTIxLjkgNi0yNy42IDE1LjlMNDggMzU3LjFWOTZjMC04LjggNy4yLTE2IDE2LTE2SDE4MS41YzQuMiAwIDguMyAxLjcgMTEuMyA0LjdsMjYuNSAyNi41YzIxIDIxIDQ5LjUgMzIuOCA3OS4yIDMyLjhINDE2YzguOCAwIDE2IDcuMiAxNiAxNnYzMmg0OFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjk4LjVjLTE3IDAtMzMuMy02LjctNDUuMy0xOC43TDIyNi43IDUwLjdjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIODcuNyAzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDE5Ni4xYzE5LjEgMCAzNy40IDcuNiA1MC45IDIxLjFMMjg5LjkgOTZINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZWNDE2YzAgOC44IDcuMiAxNiAxNiAxNkg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjE2MGMwLTguOC03LjItMTYtMTYtMTZIMjg2LjZjLTEwLjYgMC0yMC44LTQuMi0yOC4zLTExLjdMMjEzLjEgODdjLTQuNS00LjUtMTAuNi03LTE3LTdINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkxLjcgOTZDMTA2LjMgODYuOCAxMTYgNzAuNSAxMTYgNTJDMTE2IDIzLjMgOTIuNyAwIDY0IDBTMTIgMjMuMyAxMiA1MmMwIDE2LjcgNy44IDMxLjUgMjAgNDFsMCAzIDAgNDggMCAyNTYgMCA0OCAwIDY0IDQ4IDAgMC02NCAzODkuNiAwYzE0LjYgMCAyNi40LTExLjggMjYuNC0yNi40YzAtMy43LS44LTcuMy0yLjMtMTAuN0w0MzIgMjcybDYxLjctMTM4LjljMS41LTMuNCAyLjMtNyAyLjMtMTAuN2MwLTE0LjYtMTEuOC0yNi40LTI2LjQtMjYuNEw5MS43IDk2ek04MCA0MDBsMC0yNTYgMzU2LjQgMEwzODguMSAyNTIuNWMtNS41IDEyLjQtNS41IDI2LjYgMCAzOUw0MzYuNCA0MDAgODAgNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGdXRib2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM1LjQgMzYxLjNsLTg5LjctNmMtNS4yLS4zLTEwLjMgMS4xLTE0LjUgNC4ycy03LjIgNy40LTguNCAxMi41bC0yMiA4Ny4yYy0xNC40IDMuMi0yOS40IDQuOC00NC44IDQuOHMtMzAuMy0xLjctNDQuOC00LjhsLTIyLTg3LjJjLTEuMy01LTQuMy05LjQtOC40LTEyLjVzLTkuMy00LjUtMTQuNS00LjJsLTg5LjcgNkM2MS43IDMzNS45IDUxLjkgMzA3IDQ5IDI3Ni4yTDEyNSAyMjguM2M0LjQtMi44IDcuNi03IDkuMi0xMS45czEuNC0xMC4yLS41LTE1TDEwMC40IDExOGMxOS45LTIyLjQgNDQuNi00MC41IDcyLjQtNTIuN2w2OS4xIDU3LjZjNCAzLjMgOSA1LjEgMTQuMSA1LjFzMTAuMi0xLjggMTQuMS01LjFsNjkuMS01Ny42YzI3LjggMTIuMiA1Mi41IDMwLjMgNzIuNCA1Mi43bC0zMy40IDgzLjRjLTEuOSA0LjgtMi4xIDEwLjEtLjUgMTVzNC45IDkuMSA5LjIgMTEuOUw0NjMgMjc2LjJjLTMgMzAuOC0xMi43IDU5LjctMjcuNiA4NS4xek0yNTYgNDhsLjkgMGgtMS44bC45IDB6TTU2LjcgMTk2LjJjLjktMyAxLjktNi4xIDIuOS05LjFsLTIuOSA5LjF6TTEzMiA0MjNsMy44IDIuN2MtMS4zLS45LTIuNS0xLjgtMy44LTIuN3ptMjQ4LjEtLjFjLTEuMyAxLTIuNyAyLTQgMi45bDQtMi45em03NS4yLTIyNi42bC0zLTkuMmMxLjEgMyAyLjEgNi4xIDMgOS4yek0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMTQuMS0zMjUuN2MtOC40LTYuMS0xOS44LTYuMS0yOC4yIDBMMTk0IDIyMWMtOC40IDYuMS0xMS45IDE2LjktOC43IDI2LjhsMTguMyA1Ni4zYzMuMiA5LjkgMTIuNCAxNi42IDIyLjggMTYuNmg1OS4yYzEwLjQgMCAxOS42LTYuNyAyMi44LTE2LjZsMTguMy01Ni4zYzMuMi05LjktLjMtMjAuNy04LjctMjYuOGwtNDcuOS0zNC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHZW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4LjUgNzJMMjU2IDE2NWw4Ny41LTkzaC0xNzV6TTM4My45IDk5LjFMMzExLjUgMTc2aDEyOUwzODMuOSA5OS4xem01MCAxMjQuOUgyNTYgNzguMUwyNTYgNDIwLjMgNDMzLjkgMjI0ek03MS41IDE3NmgxMjlMMTI4LjEgOTkuMSA3MS41IDE3NnptNDM0LjMgNDAuMWwtMjMyIDI1NmMtNC41IDUtMTEgNy45LTE3LjggNy45cy0xMy4yLTIuOS0xNy44LTcuOWwtMjMyLTI1NmMtNy43LTguNS04LjMtMjEuMi0xLjUtMzAuNGwxMTItMTUyYzQuNS02LjEgMTEuNy05LjggMTkuMy05LjhIMzc2YzcuNiAwIDE0LjggMy42IDE5LjMgOS44bDExMiAxNTJjNi44IDkuMiA2LjEgMjEuOS0xLjUgMzAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZEJhY2tGaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCA2NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2YzAgOS4xIDUuMSAxNy40IDEzLjMgMjEuNXMxNy45IDMuMiAyNS4xLTIuM2MyLjctMiA2LTMuMiA5LjYtMy4yYzguOCAwIDE2IDcuMiAxNiAxNmMwIDkuMSA1LjEgMTcuNCAxMy4zIDIxLjVzMTcuOSAzLjIgMjUuMS0yLjNjMi43LTIgNi0zLjIgOS42LTMuMmM4LjggMCAxNiA3LjIgMTYgMTZjMCA5LjEgNS4xIDE3LjQgMTMuMyAyMS41czE3LjkgMy4yIDI1LjEtMi4zYzIuNy0yIDYtMy4yIDkuNi0zLjJjOC44IDAgMTYgNy4yIDE2IDE2VjI2NGMwIDMxLjMtMjAgNTgtNDggNjcuOWMtOS42IDMuNC0xNiAxMi41LTE2IDIyLjZWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzcwLjJjMzgtMjAuMSA2NC02MC4xIDY0LTEwNi4yVjE2MGMwLTM1LjMtMjguNy02NC02NC02NGMtMi44IDAtNS42IC4yLTguMyAuNUMzMzIuOCA3Ny4xIDMxMS45IDY0IDI4OCA2NGMtMi44IDAtNS42IC4yLTguMyAuNUMyNjguOCA0NS4xIDI0Ny45IDMyIDIyNCAzMmMtMi44IDAtNS42IC4yLTguMyAuNUMyMDQuOCAxMy4xIDE4My45IDAgMTYwIDBDMTI0LjcgMCA5NiAyOC43IDk2IDY0djY0LjNjLTExLjcgNy40LTIyLjUgMTYuNC0zMiAyNi45bDE3LjggMTYuMUw2NCAxNTUuMmwtOS40IDEwLjVDNDAgMTgxLjggMzIgMjAyLjggMzIgMjI0LjZ2MTIuOGMwIDQ5LjYgMjQuMiA5Ni4xIDY0LjggMTI0LjVsMTMuOC0xOS43TDk2LjggMzYxLjlsOC45IDYuMmM2LjkgNC44IDE0LjQgOC42IDIyLjMgMTEuM1Y0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNTkuOWMwLTEyLjYtOS44LTIzLjEtMjIuNC0yMy45Yy03LjMtLjUtMTQuMy0yLjktMjAuMy03LjFsLTEzLjEgMTguNyAxMy4xLTE4LjctOC45LTYuMkM5Ni42IDMwMy4xIDgwIDI3MS4zIDgwIDIzNy40VjIyNC42YzAtOS45IDMuNy0xOS40IDEwLjMtMjYuOGw5LjQtMTAuNWMzLjgtNC4yIDcuOS04LjEgMTIuMy0xMS42VjIwOGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjE0Mi4zIDEyOCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZExpemFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MiAxMTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjQwYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0SDEzNmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgyODhjNC41IDAgOC45IDEuMyAxMi43IDMuNmw2NCA0MGM3IDQuNCAxMS4zIDEyLjEgMTEuMyAyMC40djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjQxMy4zTDI4MS4xIDM4NEgxMzZjLTM5LjggMC03Mi0zMi4yLTcyLTcyczMyLjItNzIgNzItNzJIMjQwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDcyYy0zOS44IDAtNzItMzIuMi03Mi03MlMzMi4yIDY0IDcyIDY0SDI4MS42YzQ2LjcgMCA5MC45IDIxLjUgMTE5LjcgNTguM2w3OC40IDEwMC4xYzIwLjkgMjYuNyAzMi4zIDU5LjcgMzIuMyA5My43VjQyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYzMTYuMWMwLTIzLjItNy44LTQ1LjgtMjIuMS02NC4xTDM2My41IDE1MS45Yy0xOS43LTI1LjItNDkuOS0zOS45LTgxLjktMzkuOUg3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBlYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1MC44IDEuNGMtMzUuMi0zLjctNjYuNiAyMS44LTcwLjMgNTdMMTc0IDExOSAxNTYuNyA2OS42QzE0NSAzNi4zIDEwOC40IDE4LjggNzUuMSAzMC41UzI0LjIgNzguOCAzNS45IDExMi4xTDg4LjcgMjYyLjJDNzMuNSAyNzYuNyA2NCAyOTcuMyA2NCAzMjB2MCAyNGMwIDkyLjggNzUuMiAxNjggMTY4IDE2OGg0OGM5Mi44IDAgMTY4LTc1LjIgMTY4LTE2OFYyNzIgMjU2IDIyNGMwLTM1LjMtMjguNy02NC02NC02NGMtNy45IDAtMTUuNCAxLjQtMjIuNCA0Yy0xMC40LTIxLjMtMzIuMy0zNi01Ny42LTM2Yy0uNyAwLTEuNSAwLTIuMiAwbDUuOS01Ni4zYzMuNy0zNS4yLTIxLjgtNjYuNi01Ny03MC4zem0tLjIgMTU1LjRDMjQzLjkgMTY2LjkgMjQwIDE3OSAyNDAgMTkydjQ4YzAgLjcgMCAxLjQgMCAyYy01LjEtMS4zLTEwLjUtMi0xNi0yaC03LjRsLTUuNC0xNS4zIDE3LTE2MS4zYy45LTguOCA4LjgtMTUuMiAxNy42LTE0LjJzMTUuMiA4LjggMTQuMiAxNy42bC05LjUgOTAuMXpNMTExLjQgODUuNkwxNjUuNyAyNDBIMTQ0Yy00IDAtOCAuMy0xMS45IC45TDgxLjIgOTYuMmMtMi45LTguMyAxLjUtMTcuNSA5LjgtMjAuNHMxNy41IDEuNSAyMC40IDkuOHpNMjg4IDE5MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyIDE2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE5MnptMzguNCAxMDhjMTAuNCAyMS4zIDMyLjMgMzYgNTcuNiAzNmM1LjUgMCAxMC45LS43IDE2LTJ2MTBjMCA2Ni4zLTUzLjcgMTIwLTEyMCAxMjBIMjMyYy02Ni4zIDAtMTIwLTUzLjctMTIwLTEyMGwwLTI0IDAgMGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4MGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxODRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC0uNyAwLTEuNCAwLTJjNS4xIDEuMyAxMC41IDIgMTYgMmM3LjkgMCAxNS40LTEuNCAyMi40LTR6TTQwMCAyNzJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjQwIDIyNGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyIDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ0OGwwLTE3Ny42YzUuMiAxIDEwLjUgMS42IDE2IDEuNmwxNiAwIDAgMzIgMCAxNDRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZ6TTgwIDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJjMCAwIDAgMCAwIDBsMC0yNGMwLTY2LjMgNTMuNy0xMjAgMTIwLTEyMGw0OCAwYzUyLjUgMCA5Ny4xIDMzLjcgMTEzLjQgODAuN2MtMy4xLS41LTYuMi0uNy05LjQtLjdjLTIwIDAtMzcuOSA5LjItNDkuNyAyMy42Yy05LTQuOS0xOS40LTcuNi0zMC4zLTcuNmMtMTUuMSAwLTI5IDUuMy00MCAxNGMtMTEtOC44LTI0LjktMTQtNDAtMTRsLTQwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNDAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNDAgMC00MCAwek0wIDE5MnMwIDAgMCAwYzAgMTggNiAzNC42IDE2IDQ4bDAgMjA4YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRsMC04MmM1LjEgMS4zIDEwLjUgMiAxNiAyYzI1LjMgMCA0Ny4yLTE0LjcgNTcuNi0zNmM3IDIuNiAxNC41IDQgMjIuNCA0YzIwIDAgMzcuOS05LjIgNDkuNy0yMy42YzkgNC45IDE5LjQgNy42IDMwLjMgNy42YzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtNjQgMC0yNEMzODQgNzUuMiAzMDguOCAwIDIxNiAwTDE2OCAwQzc1LjIgMCAwIDc1LjIgMCAxNjhsMCAyNHptMzM2IDY0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDggMC0xNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgNjR6TTE2MCAyNzJjNS41IDAgMTAuOS0uNyAxNi0ybDAgMiAwIDMyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtMzIgMTYgMHptNjQtMjRsMC00MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgNDggMCAxNmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDEyOGwxNzcuNiAwYy0xIDUuMi0xLjYgMTAuNS0xLjYgMTZsMCAxNi0zMiAwTDY0IDE2MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMjI0IDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyYzAgMCAwIDAgMCAwbDI0IDBjNjYuMyAwIDEyMCA1My43IDEyMCAxMjBsMCA0OGMwIDUyLjUtMzMuNyA5Ny4xLTgwLjcgMTEzLjRjLjUtMy4xIC43LTYuMiAuNy05LjRjMC0yMC05LjItMzcuOS0yMy42LTQ5LjdjNC45LTkgNy42LTE5LjQgNy42LTMwLjNjMC0xNS4xLTUuMy0yOS0xNC00MGM4LjgtMTEgMTQtMjQuOSAxNC00MGwwLTQwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgNDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC00MCAwLTQwem0zMi04MHMwIDAgMCAwYy0xOCAwLTM0LjYgNi00OCAxNkw2NCA4MEMyOC43IDgwIDAgMTA4LjcgMCAxNDRzMjguNyA2NCA2NCA2NGw4MiAwYy0xLjMgNS4xLTIgMTAuNS0yIDE2YzAgMjUuMyAxNC43IDQ3LjIgMzYgNTcuNmMtMi42IDctNCAxNC41LTQgMjIuNGMwIDIwIDkuMiAzNy45IDIzLjYgNDkuN2MtNC45IDktNy42IDE5LjQtNy42IDMwLjNjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNjQgMCAyNCAwYzkyLjggMCAxNjgtNzUuMiAxNjgtMTY4bDAtNDhjMC05Mi44LTc1LjItMTY4LTE2OC0xNjhsLTI0IDB6TTI1NiA0MDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsNDggMCAxNiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC02NCAwek0yNDAgMjI0YzAgNS41IC43IDEwLjkgMiAxNmwtMiAwLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsMzIgMCAwIDE2em0yNCA2NGw0MCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC00OCAwLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsMjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDEyOGwtMTc3LjYgMGMxIDUuMiAxLjYgMTAuNSAxLjYgMTZsMCAxNiAzMiAwIDE0NCAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2ek0yMjQgMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMyYzAgMCAwIDAgMCAwbC0yNCAwYy02Ni4zIDAtMTIwIDUzLjctMTIwIDEyMGwwIDQ4YzAgNTIuNSAzMy43IDk3LjEgODAuNyAxMTMuNGMtLjUtMy4xLS43LTYuMi0uNy05LjRjMC0yMCA5LjItMzcuOSAyMy42LTQ5LjdjLTQuOS05LTcuNi0xOS40LTcuNi0zMC4zYzAtMTUuMSA1LjMtMjkgMTQtNDBjLTguOC0xMS0xNC0yNC45LTE0LTQwbDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDQwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC00MCAwLTQwek0xOTIgNjRzMCAwIDAgMGMxOCAwIDM0LjYgNiA0OCAxNmwyMDggMGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGwtODIgMGMxLjMgNS4xIDIgMTAuNSAyIDE2YzAgMjUuMy0xNC43IDQ3LjItMzYgNTcuNmMyLjYgNyA0IDE0LjUgNCAyMi40YzAgMjAtOS4yIDM3LjktMjMuNiA0OS43YzQuOSA5IDcuNiAxOS40IDcuNiAzMC4zYzAgMzUuMy0yOC43IDY0LTY0IDY0bC02NCAwLTI0IDBDNzUuMiA0NDggMCAzNzIuOCAwIDI4MGwwLTQ4QzAgMTM5LjIgNzUuMiA2NCAxNjggNjRsMjQgMHptNjQgMzM2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC00OCAwLTE2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsNjQgMHptMTYtMTc2YzAgNS41LS43IDEwLjktMiAxNmwyIDAgMzIgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMzIgMCAwIDE2em0tMjQgNjRsLTQwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsNDggMCAxNiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0yNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NFYyNDEuNmM1LjItMSAxMC41LTEuNiAxNi0xLjZIOTZWMjA4IDY0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2ek04MCAyODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyYzAgMCAwIDAgMCAwdjI0YzAgNjYuMyA1My43IDEyMCAxMjAgMTIwaDQ4YzUyLjUgMCA5Ny4xLTMzLjcgMTEzLjQtODAuN2MtMy4xIC41LTYuMiAuNy05LjQgLjdjLTIwIDAtMzcuOS05LjItNDkuNy0yMy42Yy05IDQuOS0xOS40IDcuNi0zMC4zIDcuNmMtMTUuMSAwLTI5LTUuMy00MC0xNGMtMTEgOC44LTI0LjkgMTQtNDAgMTRIMTIwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDQwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDEyMCA4MHpNMCAzMjBzMCAwIDAgMGMwLTE4IDYtMzQuNiAxNi00OFY2NEMxNiAyOC43IDQ0LjcgMCA4MCAwczY0IDI4LjcgNjQgNjR2ODJjNS4xLTEuMyAxMC41LTIgMTYtMmMyNS4zIDAgNDcuMiAxNC43IDU3LjYgMzZjNy0yLjYgMTQuNS00IDIyLjQtNGMyMCAwIDM3LjkgOS4yIDQ5LjcgMjMuNmM5LTQuOSAxOS40LTcuNiAzMC4zLTcuNmMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NCAyNGMwIDkyLjgtNzUuMiAxNjgtMTY4IDE2OEgxNjhDNzUuMiA1MTIgMCA0MzYuOCAwIDM0NFYzMjB6bTMzNi02NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY0OCAxNmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjI1NnpNMTYwIDI0MGM1LjUgMCAxMC45IC43IDE2IDJ2LTJWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djMyaDE2em02NCAyNHY0MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjI1NiAyNDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjIwMGMwIDEwLjMgNi42IDE5LjUgMTYuNCAyMi44czIwLjYtLjEgMjYuOC04LjNjMy0zLjkgNy42LTYuNCAxMi44LTYuNGM4LjggMCAxNiA3LjIgMTYgMTZjMCAxMC4zIDYuNiAxOS41IDE2LjQgMjIuOHMyMC42LS4xIDI2LjgtOC4zYzMtMy45IDcuNi02LjQgMTIuOC02LjRjNy44IDAgMTQuMyA1LjYgMTUuNyAxM2MxLjYgOC4yIDcuMyAxNS4xIDE1LjEgMThzMTYuNyAxLjYgMjMuMy0zLjZjMi43LTIuMSA2LjEtMy40IDkuOS0zLjRjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZWMzkyYzAgMzkuOC0zMi4yIDcyLTcyIDcySDI3MiAyMTIuM2gtLjljLTM3LjQgMC03Mi40LTE4LjctOTMuMi00OS45TDUwLjcgMzEyLjljLTQuOS03LjQtMi45LTE3LjMgNC40LTIyLjJzMTcuMy0yLjkgMjIuMiA0LjRMMTE2IDM1My4yYzUuOSA4LjggMTYuOCAxMi43IDI2LjkgOS43czE3LTEyLjQgMTctMjNWMzIwIDY0ek0xNzYgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWMjYxLjdDOTEuMiAyMzggNTUuNSAyMzIuOCAyOC41IDI1MC43Qy0uOSAyNzAuNC04LjkgMzEwLjEgMTAuOCAzMzkuNUw3OC4zIDQ0MC44YzI5LjcgNDQuNSA3OS42IDcxLjIgMTMzLjEgNzEuMmguOUgyNzJoNTZjNjYuMyAwIDEyMC01My43IDEyMC0xMjBWMjg4bDAtMTZjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTQuNSAwLTguOCAuNS0xMyAxLjNjLTExLjctMTUuNC0zMC4yLTI1LjMtNTEtMjUuM2MtNi45IDAtMTMuNSAxLjEtMTkuNyAzLjFDMjg4LjcgMTcwLjcgMjY5LjYgMTYwIDI0OCAxNjBjLTIuNyAwLTUuNCAuMi04IC41VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0em00OCAzMDRjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMDR6bTQ4LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2em04MCAxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjMwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFNjaXNzb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS4yIDI3Ni4zYy0xLjItMzUuMyAyNi40LTY1IDYxLjctNjYuMmwzLjMtLjFMNTcgMjA4LjFDMjIuNSAyMDAuNSAuNyAxNjYuMyA4LjMgMTMxLjhTNTAuMiA3NS41IDg0LjcgODMuMmwxNzMgMzguM2MyLjMtMi45IDQuNy01LjcgNy4xLTguNWwxOC40LTIwLjNDMjk5LjkgNzQuNSAzMjMuNSA2NCAzNDguMyA2NGwxMC4yIDBjNTQuMSAwIDEwNC4xIDI4LjcgMTMxLjMgNzUuNGwxLjUgMi42YzEzLjYgMjMuMiAyMC43IDQ5LjcgMjAuNyA3Ni42TDUxMiAzNDRjMCA2Ni4zLTUzLjcgMTIwLTEyMCAxMjBsLTggMC05NiAwYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTIuOCAuMi01LjYgLjUtOC4zYy0xOS40LTExLTMyLjUtMzEuOC0zMi41LTU1LjdjMC0uOCAwLTEuNiAwLTIuNEw2Ni40IDMzOGMtMzUuMyAxLjItNjUtMjYuNC02Ni4yLTYxLjd6bTYzLjQtMTguMmMtOC44IC4zLTE1LjcgNy43LTE1LjQgMTYuNXM3LjcgMTUuNyAxNi41IDE1LjRsMTYxLjUtNS42YzkuOC0uMyAxOC43IDUuMyAyMi43IDE0LjJzMi4yIDE5LjMtNC41IDI2LjRjLTIuOCAyLjktNC40IDYuNy00LjQgMTFjMCA4LjggNy4yIDE2IDE2IDE2YzkuMSAwIDE3LjQgNS4xIDIxLjUgMTMuM3MzLjIgMTcuOS0yLjMgMjUuMWMtMiAyLjctMy4yIDYtMy4yIDkuNmMwIDguOCA3LjIgMTYgMTYgMTZsOTYgMCA4IDBjMzkuOCAwIDcyLTMyLjIgNzItNzJsMC0xMjUuNGMwLTE4LjQtNC45LTM2LjUtMTQuMi01Mi40bC0xLjUtMi42Yy0xOC42LTMyLTUyLjgtNTEuNi04OS44LTUxLjZsLTEwLjIgMGMtMTEuMyAwLTIyIDQuOC0yOS42IDEzLjFsLTE3LjUtMTUuOSAxNy41IDE1LjktMTguNCAyMC4zYy0uNiAuNi0xLjEgMS4zLTEuNyAxLjlsNTcgMTMuMmM4LjYgMiAxNCAxMC42IDEyIDE5LjJzLTEwLjYgMTQtMTkuMiAxMmwtODUuNi0xOS43TDc0LjMgMTMwYy04LjYtMS45LTE3LjIgMy41LTE5LjEgMTIuMnMzLjUgMTcuMiAxMi4yIDE5LjFsMTg3LjUgNDEuNmMxMC4yIDIuMyAxNy44IDEwLjkgMTguNyAyMS40bC4xIDFjLjYgNi42LTEuNSAxMy4xLTUuOCAxOC4xcy0xMC42IDcuOS0xNy4yIDguMkw2My42IDI1OC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kU3BvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcwLjIgODAuOEMxNjEgNDcgMTgwLjggMTIgMjE0LjYgMi40YzM0LTkuNiA2OS40IDEwLjIgNzkgNDQuMmwzMC4zIDEwNy4xTDMzNy4xIDg0YzYuNi0zNC43IDQwLjEtNTcuNSA3NC44LTUwLjljMzEuNCA2IDUzIDMzLjkgNTIgNjQuOWMxMC0yLjYgMjAuOC0yLjggMzEuNS0uMWMzNC4zIDguNiA1NS4xIDQzLjMgNDYuNiA3Ny42TDQ4Ni43IDM5Ny4yQzQ2OS44IDQ2NC43IDQwOS4yIDUxMiAzMzkuNiA1MTJjLTExLjIgMC0yMi41IDAtMzMuNyAwYy01Ni45IDAtMTEyLjItMTktMTU3LjItNTMuOWwtOTItNzEuNmMtMjcuOS0yMS43LTMyLjktNjEuOS0xMS4yLTg5LjhzNjEuOS0zMi45IDg5LjgtMTEuMmwxNyAxMy4yTDEwMC41IDE2Ny41Yy0xMy0zMi45IDMuMi03MC4xIDM2LTgzYzExLjEtNC40IDIyLjctNS40IDMzLjctMy43em03Ny4xLTIxLjJjLTIuNC04LjUtMTEuMi0xMy40LTE5LjctMTFzLTEzLjQgMTEuMi0xMSAxOS43bDU0LjggMTgyLjRjMy41IDEyLjMtMy4zIDI1LjItMTUuNCAyOS4zcy0yNS4zLTItMzAtMTMuOUwxNzQuOSAxMzguMWMtMy4yLTguMi0xMi41LTEyLjMtMjAuOC05cy0xMi4zIDEyLjUtOSAyMC44bDczLjMgMTg1LjZjMTIgMzAuMy0yMy43IDU3LTQ5LjQgMzdsLTYzLjEtNDkuMWMtNy01LjQtMTctNC4yLTIyLjUgMi44cy00LjIgMTcgMi44IDIyLjVsOTIgNzEuNmMzNi41IDI4LjQgODEuNCA0My44IDEyNy43IDQzLjhjMTEuMiAwIDIyLjUgMCAzMy43IDBjNDcuNSAwIDg5LTMyLjQgMTAwLjUtNzguNWw1NS40LTIyMS42YzIuMS04LjYtMy4xLTE3LjMtMTEuNi0xOS40cy0xNy4zIDMuMS0xOS40IDExLjZsLTI2IDEwNEM0MzUuNiAyNzEuOCA0MjUgMjgwIDQxMyAyODBjLTE2LjUgMC0yOC45LTE1LTI1LjgtMzEuMkw0MTUuNyA5OWMxLjctOC43LTQtMTcuMS0xMi43LTE4LjdzLTE3LjEgNC0xOC43IDEyLjdMMzUyLjUgMjYwYy0yLjIgMTEuNi0xMi40IDIwLTI0LjIgMjBjLTExIDAtMjAuNy03LjMtMjMuNy0xNy45TDI0Ny40IDU5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjLTI1LjMgMC00Ny4yIDE0LjctNTcuNiAzNmMtNy0yLjYtMTQuNS00LTIyLjQtNGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWMjYxLjVsLTIuNy0yLjdjLTI1LTI1LTY1LjUtMjUtOTAuNSAwcy0yNSA2NS41IDAgOTAuNUwxMDYuNSA0MzdjNDggNDggMTEzLjEgNzUgMTgxIDc1SDI5Nmg4YzEuNSAwIDMtLjEgNC41LS40YzkxLjctNi4yIDE2NS03OS40IDE3MS4xLTE3MS4xYy4zLTEuNSAuNC0zIC40LTQuNVYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTUuNSAwLTEwLjkgLjctMTYgMlY5NmMwLTM1LjMtMjguNy02NC02NC02NGMtNy45IDAtMTUuNCAxLjQtMjIuNCA0QzMwMy4yIDE0LjcgMjgxLjMgMCAyNTYgMHpNMjQwIDk2LjFjMCAwIDAtLjEgMC0uMVY2NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2Vjk1LjljMCAwIDAgLjEgMCAuMVYyMzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY5NmMwIDAgMCAwIDAtLjFjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY1NS45YzAgMCAwIC4xIDAgLjF2ODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxNjAuMWMwIDAgMC0uMSAwLS4xYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWMzMyLjljLS4xIC42LS4xIDEuMy0uMiAxLjljLTMuNCA2OS43LTU5LjMgMTI1LjYtMTI5IDEyOWMtLjYgMC0xLjMgLjEtMS45IC4ySDI5NmgtOC41Yy01NS4yIDAtMTA4LjEtMjEuOS0xNDcuMS02MC45TDUyLjcgMzE1LjNjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEwxMTkgMzM2LjRjNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4yVjk2YzAtOC44IDcuMi0xNiAxNi0xNmM4LjggMCAxNiA3LjEgMTYgMTUuOVYyMzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY5Ni4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kc2hha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyLjIgNjQuNmwtNTEuMSA1MS4xYy0xNS4zIDQuMi0yOS41IDExLjktNDEuNSAyMi41TDE1MyAxNjEuOUMxNDIuOCAxNzEgMTI5LjUgMTc2IDExNS44IDE3Nkg5NlYzMDRjMjAuNCAuNiAzOS44IDguOSA1NC4zIDIzLjRsMzUuNiAzNS42IDcgNyAwIDBMMjE5LjkgMzk3YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwYzEuNy0xLjcgMy0zLjcgMy43LTUuOGMyLjgtNy43IDkuMy0xMy41IDE3LjMtMTUuM3MxNi40IC42IDIyLjIgNi41TDI5Ni41IDM5M2MxMS42IDExLjYgMzAuNCAxMS42IDQxLjkgMGM1LjQtNS40IDguMy0xMi4zIDguNi0xOS40Yy40LTguOCA1LjYtMTYuNiAxMy42LTIwLjRzMTcuMy0zIDI0LjQgMi4xYzkuNCA2LjcgMjIuNSA1LjggMzAuOS0yLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMzQwLjEgMjQzbC0zNS44IDMzYy0yNy4zIDI1LjItNjkuMiAyNS42LTk3IC45Yy0zMS43LTI4LjItMzIuNC03Ny40LTEuNi0xMDYuNWw3MC4xLTY2LjJDMzAzLjIgNzguNCAzMzkuNCA2NCAzNzcuMSA2NGMzNi4xIDAgNzEgMTMuMyA5Ny45IDM3LjJMNTA1LjEgMTI4SDU0NGg0MCA0MGM4LjggMCAxNiA3LjIgMTYgMTZWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDU3NmMtMTEuOCAwLTIyLjItNi40LTI3LjctMTZINDYzLjRjLTMuNCA2LjctNy45IDEzLjEtMTMuNSAxOC43Yy0xNy4xIDE3LjEtNDAuOCAyMy44LTYzIDIwLjFjLTMuNiA3LjMtOC41IDE0LjEtMTQuNiAyMC4yYy0yNy4zIDI3LjMtNzAgMzAtMTAwLjQgOC4xYy0yNS4xIDIwLjgtNjIuNSAxOS41LTg2LTQuMUwxNTkgNDA0bC03LTctMzUuNi0zNS42Yy01LjUtNS41LTEyLjctOC43LTIwLjQtOS4zQzk2IDM2OS43IDgxLjYgMzg0IDY0IDM4NEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNkg1NiA5NmgxOS44YzIgMCAzLjktLjcgNS4zLTJsMjYuNS0yMy42QzE3NS41IDc3LjcgMjExLjQgNjQgMjQ4LjcgNjRIMjU5YzQuNCAwIDguOSAuMiAxMy4yIC42ek01NDQgMzIwVjE3Nkg0OTZjLTUuOSAwLTExLjYtMi4yLTE1LjktNi4xbC0zNi45LTMyLjhjLTE4LjItMTYuMi00MS43LTI1LjEtNjYuMS0yNS4xYy0yNS40IDAtNDkuOCA5LjctNjguMyAyNy4xbC03MC4xIDY2LjJjLTEwLjMgOS44LTEwLjEgMjYuMyAuNSAzNS43YzkuMyA4LjMgMjMuNCA4LjEgMzIuNS0uM2w3MS45LTY2LjRjOS43LTkgMjQuOS04LjQgMzMuOSAxLjRzOC40IDI0LjktMS40IDMzLjlsLS44IC44IDc0LjQgNzQuNGMxMCAxMCAxNi41IDIyLjMgMTkuNCAzNS4xSDU0NHpNNjQgMzM2YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTUyOCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhcmREcml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjI1OGM1LjEtMS4zIDEwLjUtMiAxNi0ySDQ0OGM1LjUgMCAxMC45IC43IDE2IDJWOTZjMC04LjgtNy4yLTE2LTE2LTE2SDY0ek00OCAzMjB2OTZjMCA4LjggNy4yIDE2IDE2IDE2SDQ0OGM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtOC44LTcuMi0xNi0xNi0xNkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2ek0wIDMyMFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzIwdjk2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzMjB6bTI4MCA0OGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xMjAtMjRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuOCA0NjguMmwtMi41LTIuM0w0OC4xIDMwMy4yQzE3LjQgMjc0LjcgMCAyMzQuNyAwIDE5Mi44di0zLjNjMC03MC40IDUwLTEzMC44IDExOS4yLTE0NEMxNTguNiAzNy45IDE5OC45IDQ3IDIzMSA2OS42YzkgNi40IDE3LjQgMTMuOCAyNSAyMi4zYzQuMi00LjggOC43LTkuMiAxMy41LTEzLjNjMy43LTMuMiA3LjUtNi4yIDExLjUtOWMwIDAgMCAwIDAgMEMzMTMuMSA0NyAzNTMuNCAzNy45IDM5Mi44IDQ1LjRDNDYyIDU4LjYgNTEyIDExOS4xIDUxMiAxODkuNXYzLjNjMCA0MS45LTE3LjQgODEuOS00OC4xIDExMC40TDI4OC43IDQ2NS45bC0yLjUgMi4zYy04LjIgNy42LTE5IDExLjktMzAuMiAxMS45cy0yMi00LjItMzAuMi0xMS45ek0yMzkuMSAxNDVjLS40LS4zLS43LS43LTEtMS4xbC0xNy44LTIwYzAgMC0uMS0uMS0uMS0uMWMwIDAgMCAwIDAgMGMtMjMuMS0yNS45LTU4LTM3LjctOTItMzEuMkM4MS42IDEwMS41IDQ4IDE0Mi4xIDQ4IDE4OS41djMuM2MwIDI4LjUgMTEuOSA1NS44IDMyLjggNzUuMkwyNTYgNDMwLjcgNDMxLjIgMjY4YzIwLjktMTkuNCAzMi44LTQ2LjcgMzIuOC03NS4ydi0zLjNjMC00Ny4zLTMzLjYtODgtODAuMS05Ni45Yy0zNC02LjUtNjkgNS40LTkyIDMxLjJjMCAwIDAgMC0uMSAuMXMwIDAtLjEgLjFsLTE3LjggMjBjLS4zIC40LS43IC43LTEgMS4xYy00LjUgNC41LTEwLjYgNy0xNi45IDdzLTEyLjQtMi41LTE2LjktN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyIDBjLTM5LjggMC03MiAzMi4yLTcyIDcydjhINzJDMzIuMiA4MCAwIDExMi4yIDAgMTUyVjQ0MGMwIDM5LjggMzIuMiA3MiA3MiA3MmguMiAuMiAuMiAuMiAuMkg3M2guMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMkg3NWguMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMkg3N2guMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMkg3OWguMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMkg4MmguMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMkg4NWguMiAuMiAuMiAuMkg4NmguMiAuMiAuMiAuMkg4N2guMiAuMiAuMiAuMkg4OGguMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMkg5OGguMiAuMiAuMiAuMkg5OWguMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMnYwSDQ1Nmg4djBINTY4YzM5LjggMCA3Mi0zMi4yIDcyLTcyVjE1MmMwLTM5LjgtMzIuMi03Mi03Mi03Mkg0ODBWNzJjMC0zOS44LTMyLjItNzItNzItNzJIMjMyek00ODAgMTI4aDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0djQwSDUzNmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg1NnY0OEg1MzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNTZWNDQwYzAgMTMuMy0xMC43IDI0LTI0IDI0SDQ4MFYzMzYgMTI4ek03MiAxMjhoODhWNDY0aC0uMS0uMi0uMi0uMkgxNTloLS4yLS4yLS4ySDE1OGgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTU0aC0uMi0uMi0uMkgxNTNoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDE1MGgtLjItLjItLjJIMTQ5aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxNDZoLS4yLS4yLS4ySDE0NWgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTQyaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMzloLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEzNmgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTMzaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMzFoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEyOGgtLjItLjItLjItLjItLjItLjItLjItLjJIMTI2aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMjRoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEyMmgtLjItLjItLjItLjItLjItLjItLjItLjJIMTIwaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMThoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDExNmgtLjItLjItLjItLjItLjItLjItLjItLjJIMTE0aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMTFoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEwOGgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTA1aC0uMi0uMi0uMi0uMkgxMDRoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEwMGgtLjItLjItLjItLjJIOTloLS4yLS4yLS4yLS4ySDk4aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkg4OGgtLjItLjItLjItLjJIODdoLS4yLS4yLS4yLS4ySDg2aC0uMi0uMi0uMi0uMkg4NWgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIODJoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDc5aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkg3N2gtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJINzVoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDczaC0uMi0uMi0uMi0uMi0uMkg3MmMtMTMuMiAwLTI0LTEwLjctMjQtMjRWMzM2aDU2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ4VjI0MGg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0OFYxNTJjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTIwOCA3MmMwLTEzLjMgMTAuNy0yNCAyNC0yNEg0MDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMzM2IDQ2NEgzNjhWNDAwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djY0SDIwOFY3MnptODggMjR2MjRIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDI0djI0YzAgOC44IDcuMiAxNiAxNiAxNmgxNmM4LjggMCAxNi03LjIgMTYtMTZWMTY4aDI0YzguOCAwIDE2LTcuMiAxNi0xNlYxMzZjMC04LjgtNy4yLTE2LTE2LTE2SDM0NFY5NmMwLTguOC03LjItMTYtMTYtMTZIMzEyYy04LjggMC0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hvdXJnbGFzc0hhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNEMwIDEwLjcgMTAuNyAwIDI0IDBIMzYwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0aC04VjY3YzAgNDAuMy0xNiA3OS00NC41IDEwNy41TDIyNS45IDI1Nmw4MS41IDgxLjVDMzM2IDM2NiAzNTIgNDA0LjcgMzUyIDQ0NXYxOWg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWNDQ1YzAtNDAuMyAxNi03OSA0NC41LTEwNy41TDE1OC4xIDI1NiA3Ni41IDE3NC41QzQ4IDE0NiAzMiAxMDcuMyAzMiA2N1Y0OEgyNEMxMC43IDQ4IDAgMzcuMyAwIDI0ek0xMTAuNSAzNzEuNWMtMy45IDMuOS03LjUgOC4xLTEwLjcgMTIuNUgyODQuMmMtMy4yLTQuNC02LjgtOC42LTEwLjctMTIuNUwxOTIgMjg5LjlsLTgxLjUgODEuNXpNMjg0LjIgMTI4QzI5NyAxMTAuNCAzMDQgODkgMzA0IDY3VjQ4SDgwVjY3YzAgMjIuMSA3IDQzLjQgMTkuOCA2MUgyODQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSG91cmdsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDBDMTAuNyAwIDAgMTAuNyAwIDI0UzEwLjcgNDggMjQgNDhoOFY2N2MwIDQwLjMgMTYgNzkgNDQuNSAxMDcuNUwxNTguMSAyNTYgNzYuNSAzMzcuNUM0OCAzNjYgMzIgNDA0LjcgMzIgNDQ1djE5SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDM2MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGgtOFY0NDVjMC00MC4zLTE2LTc5LTQ0LjUtMTA3LjVMMjI1LjkgMjU2bDgxLjUtODEuNUMzMzYgMTQ2IDM1MiAxMDcuMyAzNTIgNjdWNDhoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyNHpNMTkyIDI4OS45bDgxLjUgODEuNUMyOTMgMzkxIDMwNCA0MTcuNCAzMDQgNDQ1djE5SDgwVjQ0NWMwLTI3LjYgMTEtNTQgMzAuNS03My41TDE5MiAyODkuOXptMC02Ny45bC04MS41LTgxLjVDOTEgMTIxIDgwIDk0LjYgODAgNjdWNDhIMzA0VjY3YzAgMjcuNi0xMSA1NC0zMC41IDczLjVMMTkyIDIyMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJZEJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OFY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ4SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNkgzMjBjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtOC44LTcuMi0xNi0xNi0xNkgyNTZ6TTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDMyMGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0xNjAgMzIwaDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwem0tMzItOTZhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDE2MFY0MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDMyMGMwLTQ0LjItMzUuOC04MC04MC04MEgxNzZjLTQ0LjIgMC04MCAzNS44LTgwIDgwSDY0Yy04LjggMC0xNi03LjItMTYtMTZWMTYwSDUyOHpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yNzIgMjU2YTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHptMTA0LTQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM3NnptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA4MGM4LjggMCAxNiA3LjIgMTYgMTZWNDE1LjhsLTUtNi41LTEzNi0xNzZjLTQuNS01LjktMTEuNi05LjMtMTktOS4zcy0xNC40IDMuNC0xOSA5LjNMMjAyIDM0MC43bC0zMC41LTQyLjdDMTY3IDI5MS43IDE1OS44IDI4OCAxNTIgMjg4cy0xNSAzLjctMTkuNSAxMC4xbC04MCAxMTJMNDggNDE2LjNsMC0uM1Y5NmMwLTguOCA3LjItMTYgMTYtMTZINDQ4ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTgwIDE5MmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ltYWdlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgODBINTEyYzguOCAwIDE2IDcuMiAxNiAxNlYzMjBjMCA4LjgtNy4yIDE2LTE2IDE2SDQ5MC44TDM4OC4xIDE3OC45Yy00LjQtNi44LTEyLTEwLjktMjAuMS0xMC45cy0xNS43IDQuMS0yMC4xIDEwLjlsLTUyLjIgNzkuOC0xMi40LTE2LjljLTQuNS02LjItMTEuNy05LjgtMTkuNC05LjhzLTE0LjggMy42LTE5LjQgOS44TDE3NS42IDMzNkgxNjBjLTguOCAwLTE2LTcuMi0xNi0xNlY5NmMwLTguOCA3LjItMTYgMTYtMTZ6TTk2IDk2VjMyMGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTYwYy0zNS4zIDAtNjQgMjguNy02NCA2NHpNNDggMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0UzAgMTA2LjcgMCAxMjBWMzQ0YzAgNzUuMSA2MC45IDEzNiAxMzYgMTM2SDQ1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMzZjLTQ4LjYgMC04OC0zOS40LTg4LTg4VjEyMHptMjA4IDI0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0tleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDExMmMtOC44IDAtMTYgNy4yLTE2IDE2VjM4NGMwIDguOCA3LjIgMTYgMTYgMTZINTEyYzguOCAwIDE2LTcuMiAxNi0xNlYxMjhjMC04LjgtNy4yLTE2LTE2LTE2SDY0ek0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6TTE3NiAzMjBINDAwYzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnptLTcyLTcyYzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDEyMGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0OHptMTYtOTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgxMjBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNjhjMC04LjggNy4yLTE2IDE2LTE2em02NCA5NmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgyMDBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDh6bTE2LTk2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMjAwYy04LjggMC0xNi03LjItMTYtMTZWMTY4YzAtOC44IDcuMi0xNiAxNi0xNnptNjQgOTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMjgwYy04LjggMC0xNi03LjItMTYtMTZWMjQ4em0xNi05NmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDI4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE2OGMwLTguOCA3LjItMTYgMTYtMTZ6bTY0IDk2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDM2MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0OHptMTYtOTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgzNjBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNjhjMC04LjggNy4yLTE2IDE2LTE2em02NCA5NmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkg0NDBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDh6bTE2LTk2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZINDQwYy04LjggMC0xNi03LjItMTYtMTZWMTY4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGVtb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDgwYy0zLjIgMC02LjIgLjQtOC45IDEuM0MzNDAgODYuOCAzMTMgOTEuOSAyODQuOCA4NC42QzIyNy40IDY5LjcgMTYwLjIgOTIgMTEwLjEgMTQyLjFTMzcuNyAyNTkuNCA1Mi42IDMxNi44YzcuMyAyOC4yIDIuMiA1NS4yLTMuMyA3NC4zYy0uOCAyLjgtMS4zIDUuOC0xLjMgOC45YzAgMTcuNyAxNC4zIDMyIDMyIDMyYzMuMiAwIDYuMi0uNCA4LjktMS4zYzE5LjEtNS41IDQ2LjEtMTAuNyA3NC4zLTMuM2M1Ny40IDE0LjkgMTI0LjYtNy40IDE3NC43LTU3LjVzNzIuNC0xMTcuMyA1Ny41LTE3NC43Yy03LjMtMjguMi0yLjItNTUuMiAzLjMtNzQuM2MuOC0yLjggMS4zLTUuOCAxLjMtOC45YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0wLTQ4YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgNy43LTEuMSAxNS4yLTMuMSAyMi4zYy00LjYgMTUuOC03LjEgMzIuOS0zIDQ4LjljMjAuMSA3Ny42LTEwLjkgMTYxLjUtNzAgMjIwLjdzLTE0My4xIDkwLjItMjIwLjcgNzBjLTE2LTQuMS0zMy0xLjYtNDguOSAzYy03LjEgMi0xNC42IDMuMS0yMi4zIDMuMWMtNDQuMiAwLTgwLTM1LjgtODAtODBjMC03LjcgMS4xLTE1LjIgMy4xLTIyLjNjNC42LTE1LjggNy4xLTMyLjkgMy00OC45Qy0xNCAyNTEuMyAxNyAxNjcuMyA3Ni4yIDEwOC4yUzIxOS4zIDE4IDI5Ni44IDM4LjFjMTYgNC4xIDMzIDEuNiA0OC45LTNjNy4xLTIgMTQuNi0zLjEgMjIuMy0zLjF6TTI0Ni43IDE2N2MtNTIgMTUuMi05Ni41IDU5LjctMTExLjcgMTExLjdjLTMuNyAxMi43LTE3LjEgMjAtMjkuOCAxNi4zcy0yMC0xNy4xLTE2LjMtMjkuOGMxOS44LTY3LjcgNzYuNi0xMjQuNSAxNDQuMy0xNDQuM2MxMi43LTMuNyAyNi4xIDMuNiAyOS44IDE2LjNzLTMuNiAyNi4xLTE2LjMgMjkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlmZVJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg1LjEgNDE5LjFDMzQ5LjcgNDQ3LjIgMzA0LjggNDY0IDI1NiA0NjRzLTkzLjctMTYuOC0xMjkuMS00NC45bDgwLjQtODAuNGMxNC4zIDguNCAzMSAxMy4zIDQ4LjggMTMuM3MzNC41LTQuOCA0OC44LTEzLjNsODAuNCA4MC40em02OC4xIC4yQzQ4OS45IDM3NC45IDUxMiAzMTguMSA1MTIgMjU2cy0yMi4xLTExOC45LTU4LjgtMTYzLjNMNDY1IDgxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMNDE5LjMgNTguOEMzNzQuOSAyMi4xIDMxOC4xIDAgMjU2IDBTMTM3LjEgMjIuMSA5Mi43IDU4LjhMODEgNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlMNTguOCA5Mi43QzIyLjEgMTM3LjEgMCAxOTMuOSAwIDI1NnMyMi4xIDExOC45IDU4LjggMTYzLjNMNDcgNDMxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMTEuOC0xMS44QzEzNy4xIDQ4OS45IDE5My45IDUxMiAyNTYgNTEyczExOC45LTIyLjEgMTYzLjMtNTguOEw0MzEgNDY1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMTEuOC0xMS44em0tMzQuMS0zNC4xbC04MC40LTgwLjRjOC40LTE0LjMgMTMuMy0zMSAxMy4zLTQ4LjhzLTQuOC0zNC41LTEzLjMtNDguOGw4MC40LTgwLjRDNDQ3LjIgMTYyLjMgNDY0IDIwNy4yIDQ2NCAyNTZzLTE2LjggOTMuNy00NC45IDEyOS4xek0zODUuMSA5Mi45bC04MC40IDgwLjRjLTE0LjMtOC40LTMxLTEzLjMtNDguOC0xMy4zcy0zNC41IDQuOC00OC44IDEzLjNMMTI2LjkgOTIuOUMxNjIuMyA2NC44IDIwNy4yIDQ4IDI1NiA0OHM5My43IDE2LjggMTI5LjEgNDQuOXpNMTczLjMgMzA0LjhMOTIuOSAzODUuMUM2NC44IDM0OS43IDQ4IDMwNC44IDQ4IDI1NnMxNi44LTkzLjcgNDQuOS0xMjkuMWw4MC40IDgwLjRjLTguNCAxNC4zLTEzLjMgMzEtMTMuMyA0OC44czQuOCAzNC41IDEzLjMgNDguOHpNMjA4IDI1NmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMaWdodGJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk3LjIgMjQ4LjlDMzExLjYgMjI4LjMgMzIwIDIwMy4yIDMyMCAxNzZjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhTNjQgMTA1LjMgNjQgMTc2YzAgMjcuMiA4LjQgNTIuMyAyMi44IDcyLjljMy43IDUuMyA4LjEgMTEuMyAxMi44IDE3LjdsMCAwYzEyLjkgMTcuNyAyOC4zIDM4LjkgMzkuOCA1OS44YzEwLjQgMTkgMTUuNyAzOC44IDE4LjMgNTcuNUgxMDljLTIuMi0xMi01LjktMjMuNy0xMS44LTM0LjVjLTkuOS0xOC0yMi4yLTM0LjktMzQuNS01MS44bDAgMCAwIDBjLTUuMi03LjEtMTAuNC0xNC4yLTE1LjQtMjEuNEMyNy42IDI0Ny45IDE2IDIxMy4zIDE2IDE3NkMxNiA3OC44IDk0LjggMCAxOTIgMHMxNzYgNzguOCAxNzYgMTc2YzAgMzcuMy0xMS42IDcxLjktMzEuNCAxMDAuM2MtNSA3LjItMTAuMiAxNC4zLTE1LjQgMjEuNGwwIDAgMCAwYy0xMi4zIDE2LjgtMjQuNiAzMy43LTM0LjUgNTEuOGMtNS45IDEwLjgtOS42IDIyLjUtMTEuOCAzNC41SDIyNi40YzIuNi0xOC43IDcuOS0zOC42IDE4LjMtNTcuNWMxMS41LTIwLjkgMjYuOS00Mi4xIDM5LjgtNTkuOGwwIDAgMCAwIDAgMGM0LjctNi40IDktMTIuNCAxMi43LTE3Ljd6TTE5MiAxMjhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2em0wIDM4NGMtNDQuMiAwLTgwLTM1LjgtODAtODBWNDE2SDI3MnYxNmMwIDQ0LjItMzUuOCA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2NS42IDM2LjJDNTcyLjEgNDAuNyA1NzYgNDguMSA1NzYgNTZWMzkyYzAgMTAtNi4yIDE4LjktMTUuNSAyMi40bC0xNjggNjRjLTUuMiAyLTEwLjkgMi4xLTE2LjEgLjNMMTkyLjUgNDE3LjVsLTE2MCA2MWMtNy40IDIuOC0xNS43IDEuOC0yMi4yLTIuN1MwIDQ2My45IDAgNDU2VjEyMGMwLTEwIDYuMS0xOC45IDE1LjUtMjIuNGwxNjgtNjRjNS4yLTIgMTAuOS0yLjEgMTYuMS0uM0wzODMuNSA5NC41bDE2MC02MWM3LjQtMi44IDE1LjctMS44IDIyLjIgMi43ek00OCAxMzYuNVY0MjEuMmwxMjAtNDUuN1Y5MC44TDQ4IDEzNi41ek0zNjAgNDIyLjdWMTM3LjNsLTE0NC00OFYzNzQuN2wxNDQgNDh6bTQ4LTEuNWwxMjAtNDUuN1Y5MC44TDQwOCAxMzYuNVY0MjEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTWVzc2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMzY4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djE2bDcyLjUtNTQuNGM4LjMtNi4yIDE4LjQtOS42IDI4LjgtOS42SDQ0OGM4LjggMCAxNi03LjIgMTYtMTZWNjRjMC04LjgtNy4yLTE2LTE2LTE2SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWMzUyYzAgOC44IDcuMiAxNiAxNiAxNmg5NnptNDggMTI0bC0uMiAuMi01LjEgMy44LTE3LjEgMTIuOGMtNC44IDMuNi0xMS4zIDQuMi0xNi44IDEuNXMtOC44LTguMi04LjgtMTQuM1Y0NzQuN3YtNi40VjQ2OHYtNFY0MTZIMTEyIDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NEMwIDI4LjcgMjguNyAwIDY0IDBINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjM1MmMwIDM1LjMtMjguNyA2NC02NCA2NEgzMDkuM0wyMDggNDkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdNb25leUJpbGwxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAxMTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRWMzM2YzM1LjMgMCA2NCAyOC43IDY0IDY0SDQ2NGMwLTM1LjMgMjguNy02NCA2NC02NFYxNzZjLTM1LjMgMC02NC0yOC43LTY0LTY0SDExMnpNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4ek0xNzYgMjU2YTExMiAxMTIgMCAxIDEgMjI0IDAgMTEyIDExMiAwIDEgMSAtMjI0IDB6bTgwLTQ4YzAgOC44IDcuMiAxNiAxNiAxNnY2NGgtOGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgyNCAyNGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmgtOFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdNb29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NC43IDk4LjdjLTIxIDM0LjEtMzMuMSA3NC4zLTMzLjEgMTE3LjNjMCA5OCA2Mi44IDE4MS40IDE1MC40IDIxMS43Yy0xMi40IDIuOC0yNS4zIDQuMy0zOC42IDQuM0MxMjYuNiA0MzIgNDggMzUzLjMgNDggMjU2YzAtNjguOSAzOS40LTEyOC40IDk2LjgtMTU3LjN6bTYyLjEtNjZDOTEuMSA0MS4yIDAgMTM3LjkgMCAyNTZDMCAzNzkuNyAxMDAgNDgwIDIyMy41IDQ4MGM0Ny44IDAgOTItMTUgMTI4LjQtNDAuNmMxLjktMS4zIDMuNy0yLjcgNS41LTRjNC44LTMuNiA5LjQtNy40IDEzLjktMTEuNGMyLjctMi40IDUuMy00LjggNy45LTcuM2M1LTQuOSA2LjMtMTIuNSAzLjEtMTguN3MtMTAuMS05LjctMTctOC41Yy0zLjcgLjYtNy40IDEuMi0xMS4xIDEuNmMtNSAuNS0xMC4xIC45LTE1LjMgMWMtMS4yIDAtMi41IDAtMy43IDBjLS4xIDAtLjIgMC0uMyAwYy05Ni44LS4yLTE3NS4yLTc4LjktMTc1LjItMTc2YzAtNTQuOCAyNC45LTEwMy43IDY0LjEtMTM2YzEtLjkgMi4xLTEuNyAzLjItMi42YzQtMy4yIDguMi02LjIgMTIuNS05YzMuMS0yIDYuMy00IDkuNi01LjhjNi4xLTMuNSA5LjItMTAuNSA3LjctMTcuM3MtNy4zLTExLjktMTQuMy0xMi41Yy0zLjYtLjMtNy4xLS41LTEwLjctLjZjLTIuNy0uMS01LjUtLjEtOC4yLS4xYy0zLjMgMC02LjUgLjEtOS44IC4yYy0yLjMgLjEtNC42IC4yLTYuOSAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OCA4MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRWNDA4YzAgOC40LTEuNCAxNi41LTQuMSAyNEg0NDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTA0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDE2OHpNNzIgNDgwYy0zOS44IDAtNzItMzIuMi03Mi03MlYxMTJDMCA5OC43IDEwLjcgODggMjQgODhzMjQgMTAuNyAyNCAyNFY0MDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxMDRjMC0zOS44IDMyLjItNzIgNzItNzJINDQwYzM5LjggMCA3MiAzMi4yIDcyIDcyVjQwOGMwIDM5LjgtMzIuMiA3Mi03MiA3Mkg3MnpNMTc2IDEzNmMwLTEzLjMgMTAuNy0yNCAyNC0yNGg5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHY4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgyMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjEzNnptMjAwLTI0aDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDM3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMCA4MGgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6TTIwMCAyNzJINDA4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIwMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMCA4MEg0MDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdOb3RlU3RpY2t5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZWNDE2YzAgOC44IDcuMiAxNiAxNiAxNkgyODhWMzUyYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDgwVjk2YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNMjg4IDQ4MEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjMyMHY1LjVjMCAxNy02LjcgMzMuMy0xOC43IDQ1LjNsLTkwLjUgOTAuNWMtMTIgMTItMjguMyAxOC43LTQ1LjMgMTguN0gyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ09iamVjdEdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDExNS44QzM4LjIgMTA3IDMyIDk0LjIgMzIgODBjMC0yNi41IDIxLjUtNDggNDgtNDhjMTQuMiAwIDI3IDYuMiAzNS44IDE2SDQ2MC4yYzguOC05LjggMjEuNi0xNiAzNS44LTE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4YzAgMTQuMi02LjIgMjctMTYgMzUuOFYzOTYuMmM5LjggOC44IDE2IDIxLjYgMTYgMzUuOGMwIDI2LjUtMjEuNSA0OC00OCA0OGMtMTQuMiAwLTI3LTYuMi0zNS44LTE2SDExNS44Yy04LjggOS44LTIxLjYgMTYtMzUuOCAxNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhjMC0xNC4yIDYuMi0yNyAxNi0zNS44VjExNS44ek0xMjUuMyA5NmMtNC44IDEzLjYtMTUuNiAyNC40LTI5LjMgMjkuM1YzODYuN2MxMy42IDQuOCAyNC40IDE1LjYgMjkuMyAyOS4zSDQ1MC43YzQuOC0xMy42IDE1LjYtMjQuNCAyOS4zLTI5LjNWMTI1LjNjLTEzLjYtNC44LTI0LjQtMTUuNi0yOS4zLTI5LjNIMTI1LjN6bTIuNyA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjB6TTI1NiAzMjBoMzJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjI0aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdPYmplY3RVbmdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4LjIgNjYuOGMtLjEtLjgtLjItMS43LS4yLTIuNWMwLS4xIDAtLjEgMC0uMmMwLTguOCA3LjItMTYgMTYtMTZjLjkgMCAxLjkgLjEgMi44IC4yQzc0LjMgNDkuNSA4MCA1Ni4xIDgwIDY0YzAgOC44LTcuMiAxNi0xNiAxNmMtNy45IDAtMTQuNS01LjctMTUuOC0xMy4yek0wIDY0YzAgMjYuOSAxNi41IDQ5LjkgNDAgNTkuM1YyMjguN0MxNi41IDIzOC4xIDAgMjYxLjEgMCAyODhjMCAzNS4zIDI4LjcgNjQgNjQgNjRjMjYuOSAwIDQ5LjktMTYuNSA1OS4zLTQwSDMyNC43YzkuNSAyMy41IDMyLjUgNDAgNTkuMyA0MGMzNS4zIDAgNjQtMjguNyA2NC02NGMwLTI2LjktMTYuNS00OS45LTQwLTU5LjNWMTIzLjNjMjMuNS05LjUgNDAtMzIuNSA0MC01OS4zYzAtMzUuMy0yOC43LTY0LTY0LTY0Yy0yNi45IDAtNDkuOSAxNi41LTU5LjMgNDBIMTIzLjNDMTEzLjkgMTYuNSA5MC45IDAgNjQgMEMyOC43IDAgMCAyOC43IDAgNjR6bTM2OCAwYTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6TTMyNC43IDg4YzYuNSAxNiAxOS4zIDI4LjkgMzUuMyAzNS4zVjIyOC43Yy0xNiA2LjUtMjguOSAxOS4zLTM1LjMgMzUuM0gxMjMuM2MtNi41LTE2LTE5LjMtMjguOS0zNS4zLTM1LjNWMTIzLjNjMTYtNi41IDI4LjktMTkuMyAzNS4zLTM1LjNIMzI0Ljd6TTM4NCAyNzJhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyek04MCAyODhjMCA3LjktNS43IDE0LjUtMTMuMiAxNS44Yy0uOCAuMS0xLjcgLjItMi41IC4ybC0uMiAwYy04LjggMC0xNi03LjItMTYtMTZjMC0uOSAuMS0xLjkgLjItMi44QzQ5LjUgMjc3LjcgNTYuMSAyNzIgNjQgMjcyYzguOCAwIDE2IDcuMiAxNiAxNnptMzkxLjMtNDBoNDUuNGM2LjUgMTYgMTkuMyAyOC45IDM1LjMgMzUuM1YzODguN2MtMTYgNi41LTI4LjkgMTkuMy0zNS4zIDM1LjNIMzE1LjNjLTYuNS0xNi0xOS4zLTI4LjktMzUuMy0zNS4zVjM1MkgyMzJ2MzYuN2MtMjMuNSA5LjUtNDAgMzIuNS00MCA1OS4zYzAgMzUuMyAyOC43IDY0IDY0IDY0YzI2LjkgMCA0OS45LTE2LjUgNTkuMy00MEg1MTYuN2M5LjUgMjMuNSAzMi41IDQwIDU5LjMgNDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC0yNi45LTE2LjUtNDkuOS00MC01OS4zVjI4My4zYzIzLjUtOS41IDQwLTMyLjUgNDAtNTkuM2MwLTM1LjMtMjguNy02NC02NC02NGMtMjYuOSAwLTQ5LjkgMTYuNS01OS4zIDQwSDQ0OHYxNi40YzkuOCA4LjggMTcuOCAxOS41IDIzLjMgMzEuNnptODguOS0yNi43YTE2IDE2IDAgMSAxIDMxLjUgNS41IDE2IDE2IDAgMSAxIC0zMS41LTUuNXpNMjcxLjggNDUwLjdhMTYgMTYgMCAxIDEgLTMxLjUtNS41IDE2IDE2IDAgMSAxIDMxLjUgNS41em0zMDEuNSAxM2MtNy41LTEuMy0xMy4yLTcuOS0xMy4yLTE1LjhjMC04LjggNy4yLTE2IDE2LTE2YzcuOSAwIDE0LjUgNS43IDE1LjggMTMuMmwwIC4xYy4xIC45IC4yIDEuOCAuMiAyLjdjMCA4LjgtNy4yIDE2LTE2IDE2Yy0uOSAwLTEuOS0uMS0yLjgtLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1BhcGVyUGxhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMSAyNjAuMmMtMjIuNiAxMi45LTIwLjUgNDcuMyAzLjYgNTcuM0wxNjAgMzc2VjQ3OS4zYzAgMTguMSAxNC42IDMyLjcgMzIuNyAzMi43YzkuNyAwIDE4LjktNC4zIDI1LjEtMTEuOGw2Mi03NC4zIDEyMy45IDUxLjZjMTguOSA3LjkgNDAuOC00LjUgNDMuOS0yNC43bDY0LTQxNmMxLjktMTIuMS0zLjQtMjQuMy0xMy41LTMxLjJzLTIzLjMtNy41LTM0LTEuNGwtNDQ4IDI1NnptNTIuMSAyNS41TDQwOS43IDkwLjYgMTkwLjEgMzM2bDEuMiAxTDY4LjIgMjg1Ljd6TTQwMy4zIDQyNS40TDIzNi43IDM1NS45IDQ1MC44IDExNi42IDQwMy4zIDQyNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQYXN0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQuNiA0OEg2NEMyOC43IDQ4IDAgNzYuNyAwIDExMlYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTZWNDAwSDY0Yy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNkg4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3Mi40QzIwMiAxMDguNCAyMjcuNiA5NiAyNTYgOTZoNjJjLTcuMS0yNy42LTMyLjItNDgtNjItNDhIMjE1LjRDMjExLjYgMjAuOSAxODguMiAwIDE2MCAwcy01MS42IDIwLjktNTUuNCA0OHpNMTQ0IDU2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6TTQ0OCA0NjRIMjU2Yy04LjggMC0xNi03LjItMTYtMTZWMTkyYzAtOC44IDcuMi0xNiAxNi0xNmwxNDAuMSAwTDQ2NCAyNDMuOVY0NDhjMCA4LjgtNy4yIDE2LTE2IDE2ek0yNTYgNTEySDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYyNDMuOWMwLTEyLjctNS4xLTI0LjktMTQuMS0zMy45bC02Ny45LTY3LjljLTktOS0yMS4yLTE0LjEtMzMuOS0xNC4xSDI1NmMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQZW5Ub1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDEgNTguOUw0NTMuMSA3MWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUw0MjQgMTM0LjEgMzc3LjkgODggNDA3IDU4LjljOS40LTkuNCAyNC42LTkuNCAzMy45IDB6TTIwOS44IDI1Ni4yTDM0NCAxMjEuOSAzOTAuMSAxNjggMjU1LjggMzAyLjJjLTIuOSAyLjktNi41IDUtMTAuNCA2LjFsLTU4LjUgMTYuNyAxNi43LTU4LjVjMS4xLTMuOSAzLjItNy41IDYuMS0xMC40ek0zNzMuMSAyNUwxNzUuOCAyMjIuMmMtOC43IDguNy0xNSAxOS40LTE4LjMgMzEuMWwtMjguNiAxMDBjLTIuNCA4LjQtLjEgMTcuNCA2LjEgMjMuNnMxNS4yIDguNSAyMy42IDYuMWwxMDAtMjguNmMxMS44LTMuNCAyMi41LTkuNyAzMS4xLTE4LjNMNDg3IDEzOC45YzI4LjEtMjguMSAyOC4xLTczLjcgMC0xMDEuOEw0NzQuOSAyNUM0NDYuOC0zLjEgNDAxLjItMy4xIDM3My4xIDI1ek04OCA2NEMzOS40IDY0IDAgMTAzLjQgMCAxNTJWNDI0YzAgNDguNiAzOS40IDg4IDg4IDg4SDM2MGM0OC42IDAgODgtMzkuNCA4OC04OFYzMTJjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWNDI0YzAgMjIuMS0xNy45IDQwLTQwIDQwSDg4Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYxNTJjMC0yMi4xIDE3LjktNDAgNDAtNDBIMjAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdSZWN0YW5nbGVMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZWNDE2YzAgOC44IDcuMiAxNiAxNiAxNkg1MTJjOC44IDAgMTYtNy4yIDE2LTE2Vjk2YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkg1MTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnptOTYgNjRhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTA0IDBjMC0xMy4zIDEwLjctMjQgMjQtMjRINDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTAgOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRINDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTAgOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRINDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bS03Mi02NGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTk2IDM1MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdSZWN0YW5nbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZINDQ4YzguOCAwIDE2LTcuMiAxNi0xNlY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTE3NSA3OWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3IDQ3IDQ3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ3LTQ3LTQ3IDQ3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ3LTQ3LTQ3LTQ3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUmVnaXN0ZXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2MCAxNTJWMjY0djk2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjg4aDYwLjlsMzcuMiA4MS45YzUuNSAxMi4xIDE5LjcgMTcuNCAzMS44IDExLjlzMTcuNC0xOS43IDExLjktMzEuOEwzMTUuNyAyNzVjMjEuOC0xNC4zIDM2LjMtMzkgMzYuMy02N2MwLTQ0LjItMzUuOC04MC04MC04MEgxODRjLTEzLjMgMC0yNCAxMC43LTI0IDI0em00OCA4OFYxNzZoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTaGFyZUZyb21TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDI1NS40VjI0MCAyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDM1MiAzMzYgMjg5LjVjLTUwLjkgMC05My45IDMzLjUtMTA4LjMgNzkuNmMtMy4zLTkuNC01LjItMTkuOC01LjItMzEuNmMwLTYxLjkgNTAuMS0xMTIgMTEyLTExMmg0OCAxNiAzMmM4LjggMCAxNi03LjIgMTYtMTZWODAgNjQuNkw1MDYgMTYwIDQwMCAyNTUuNHpNMzM2IDI0MGgxNnY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzLjdjNy45IDAgMTUuNS0yLjkgMjEuNC04LjJsMTM5LTEyNS4xYzcuNi02LjggMTEuOS0xNi41IDExLjktMjYuN3MtNC4zLTE5LjktMTEuOS0yNi43TDQwOS45IDguOUM0MDMuNSAzLjIgMzk1LjMgMCAzODYuNyAwQzM2Ny41IDAgMzUyIDE1LjUgMzUyIDM0LjdWODBIMzM2IDMwNCAyODhjLTg4LjQgMC0xNjAgNzEuNi0xNjAgMTYwYzAgNjAuNCAzNC42IDk5LjEgNjMuOSAxMjAuOWM1LjkgNC40IDExLjUgOC4xIDE2LjcgMTEuMmM0LjQgMi43IDguNSA0LjkgMTEuOSA2LjZjMy40IDEuNyA2LjIgMyA4LjIgMy45YzIuMiAxIDQuNiAxLjQgNy4xIDEuNGgyLjVjOS44IDAgMTcuOC04IDE3LjgtMTcuOGMwLTcuOC01LjMtMTQuNy0xMS42LTE5LjVsMCAwYy0uNC0uMy0uNy0uNS0xLjEtLjhjLTEuNy0xLjEtMy40LTIuNS01LTQuMWMtLjgtLjgtMS43LTEuNi0yLjUtMi42cy0xLjYtMS45LTIuNC0yLjljLTEuOC0yLjUtMy41LTUuMy01LTguNWMtMi42LTYtNC4zLTEzLjMtNC4zLTIyLjRjMC0zNi4xIDI5LjMtNjUuNSA2NS41LTY1LjVIMzA0aDMyek03MiAzMkMzMi4yIDMyIDAgNjQuMiAwIDEwNFY0NDBjMCAzOS44IDMyLjIgNzIgNzIgNzJINDA4YzM5LjggMCA3Mi0zMi4yIDcyLTcyVjM3NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNEg3MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTA0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDY0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTbm93Zmxha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNzAuMWwyMy0yM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTU3IDU3djc2LjVsNjYuMi0zOC4yIDIwLjktNzcuOGMzLjQtMTIuOCAxNi42LTIwLjQgMjkuNC0xN3MyMC40IDE2LjYgMTcgMjkuNEwzNzMgMTQyLjJsMzcuMS0yMS40YzExLjUtNi42IDI2LjItMi43IDMyLjggOC44czIuNyAyNi4yLTguOCAzMi44TDM5NyAxODMuOGwzMS41IDguNGMxMi44IDMuNCAyMC40IDE2LjYgMTcgMjkuNHMtMTYuNiAyMC40LTI5LjQgMTdsLTc3LjgtMjAuOUwyNzIgMjU2bDY2LjIgMzguMiA3Ny44LTIwLjljMTIuOC0zLjQgMjYgNC4yIDI5LjQgMTdzLTQuMiAyNi0xNyAyOS40TDM5NyAzMjguMmwzNy4xIDIxLjRjMTEuNSA2LjYgMTUuNCAyMS4zIDguOCAzMi44cy0yMS4zIDE1LjQtMzIuOCA4LjhMMzczIDM2OS44bDguNCAzMS41YzMuNCAxMi44LTQuMiAyNi0xNyAyOS40cy0yNi00LjItMjkuNC0xN2wtMjAuOS03Ny44TDI0OCAyOTcuNnY3Ni41bDU3IDU3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTIzLTIzVjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0NDEuOWwtMjMgMjNjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNTctNTdWMjk3LjZsLTY2LjIgMzguMi0yMC45IDc3LjhjLTMuNCAxMi44LTE2LjYgMjAuNC0yOS40IDE3cy0yMC40LTE2LjYtMTctMjkuNEw3NSAzNjkuOCAzNy45IDM5MS4yYy0xMS41IDYuNi0yNi4yIDIuNy0zMi44LTguOHMtMi43LTI2LjIgOC44LTMyLjhMNTEgMzI4LjJsLTMxLjUtOC40Yy0xMi44LTMuNC0yMC40LTE2LjYtMTctMjkuNHMxNi42LTIwLjQgMjkuNC0xN2w3Ny44IDIwLjlMMTc2IDI1NmwtNjYuMi0zOC4yTDMxLjkgMjM4LjZjLTEyLjggMy40LTI2LTQuMi0yOS40LTE3czQuMi0yNiAxNy0yOS40TDUxIDE4My44IDEzLjkgMTYyLjRjLTExLjUtNi42LTE1LjQtMjEuMy04LjgtMzIuOHMyMS4zLTE1LjQgMzIuOC04LjhMNzUgMTQyLjJsLTguNC0zMS41Yy0zLjQtMTIuOCA0LjItMjYgMTctMjkuNHMyNiA0LjIgMjkuNCAxN2wyMC45IDc3LjhMMjAwIDIxNC40VjEzNy45TDE0MyA4MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDIzIDIzVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTcXVhcmVDYXJldERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQzMmM4LjggMCAxNi03LjIgMTYtMTZsMC0zMjBjMC04LjgtNy4yLTE2LTE2LTE2TDY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMjBjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwem02NC0xNmMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjB6TTIyNCAzNTJjLTYuNyAwLTEzLTIuOC0xNy42LTcuN2wtMTA0LTExMmMtNi41LTctOC4yLTE3LjItNC40LTI1LjlzMTIuNS0xNC40IDIyLTE0LjRsMjA4IDBjOS41IDAgMTguMiA1LjcgMjIgMTQuNHMyLjEgMTguOS00LjQgMjUuOWwtMTA0IDExMmMtNC41IDQuOS0xMC45IDcuNy0xNy42IDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlQ2FyZXRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQxNmMwIDguOCA3LjIgMTYgMTYgMTZsMzIwIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzIwYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzIwem0xNiA2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODB6bTY0LTIyNGMwLTYuNyAyLjgtMTMgNy43LTE3LjZsMTEyLTEwNGM3LTYuNSAxNy4yLTguMiAyNS45LTQuNHMxNC40IDEyLjUgMTQuNCAyMmwwIDIwOGMwIDkuNS01LjcgMTguMi0xNC40IDIycy0xOC45IDIuMS0yNS45LTQuNGwtMTEyLTEwNGMtNC45LTQuNS03LjctMTAuOS03LjctMTcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlQ2FyZXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgOTZjMC04LjgtNy4yLTE2LTE2LTE2TDY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMjBjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyMHpNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMHpNMzIwIDI1NmMwIDYuNy0yLjggMTMtNy43IDE3LjZsLTExMiAxMDRjLTcgNi41LTE3LjIgOC4yLTI1LjkgNC40cy0xNC40LTEyLjUtMTQuNC0yMmwwLTIwOGMwLTkuNSA1LjctMTguMiAxNC40LTIyczE4LjktMi4xIDI1LjkgNC40bDExMiAxMDRjNC45IDQuNSA3LjcgMTAuOSA3LjcgMTcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlQ2FyZXRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzIwYzAgOC44IDcuMiAxNiAxNiAxNmwzMjAgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMjBjMC04LjgtNy4yLTE2LTE2LTE2TDY0IDgwek0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnptMjI0IDY0YzYuNyAwIDEzIDIuOCAxNy42IDcuN2wxMDQgMTEyYzYuNSA3IDguMiAxNy4yIDQuNCAyNS45cy0xMi41IDE0LjQtMjIgMTQuNGwtMjA4IDBjLTkuNSAwLTE4LjItNS43LTIyLTE0LjRzLTIuMS0xOC45IDQuNC0yNS45bDEwNC0xMTJjNC41LTQuOSAxMC45LTcuNyAxNy42LTcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNlY0MTZjMCA4LjggNy4yIDE2IDE2IDE2SDM4NGM4LjggMCAxNi03LjIgMTYtMTZWOTZjMC04LjgtNy4yLTE2LTE2LTE2SDY0ek0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek0zMzcgMjA5TDIwOSAzMzdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDMwMyAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTcXVhcmVGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCA0OFY0NjRINDhWNDhINDY0ek00OCAwSDBWNDggNDY0djQ4SDQ4IDQ2NGg0OFY0NjQgNDggMEg0NjQgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZWNDE2YzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2Vjk2YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzODRjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnpNMTUyIDIzMkgyOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTcXVhcmVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZWNDE2YzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2Vjk2YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzODRjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnpNMjAwIDM0NFYyODBIMTM2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDY0VjE2OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djY0aDY0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0OHY2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA4MGM4LjggMCAxNiA3LjIgMTYgMTZWNDE2YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2Vjk2YzAtOC44IDcuMi0xNiAxNi0xNkgzODR6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RhckhhbGZTdHJva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA5LjUgMTMuNUMzMDUuNSA1LjIgMjk3LjEgMCAyODcuOSAwcy0xNy42IDUuMi0yMS42IDEzLjVMMTk3LjcgMTU0LjggNDQuNSAxNzcuNWMtOSAxLjMtMTYuNSA3LjYtMTkuMyAxNi4zcy0uNSAxOC4xIDUuOSAyNC41TDE0Mi4yIDMyOC40IDExNiA0ODMuOWMtMS41IDkgMi4yIDE4LjEgOS43IDIzLjVzMTcuMyA2IDI1LjMgMS43bDEzNy03My4yIDEzNyA3My4yYzguMSA0LjMgMTcuOSAzLjcgMjUuMy0xLjdzMTEuMi0xNC41IDkuNy0yMy41TDQzMy42IDMyOC40IDU0NC44IDIxOC4yYzYuNS02LjQgOC43LTE1LjkgNS45LTI0LjVzLTEwLjMtMTQuOS0xOS4zLTE2LjNMMzc4LjEgMTU0LjggMzA5LjUgMTMuNXpNMjg4IDM4NC43Vjc5LjFsNTIuNSAxMDguMWMzLjUgNy4xIDEwLjIgMTIuMSAxOC4xIDEzLjNsMTE4LjMgMTcuNUwzOTEgMzAzYy01LjUgNS41LTguMSAxMy4zLTYuOCAyMWwyMC4yIDExOS42TDI5OS4yIDM4Ny41Yy0zLjUtMS45LTcuNC0yLjgtMTEuMi0yLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N0YXJIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5My4zIC42YzEwLjkgMi41IDE4LjYgMTIuMiAxOC42IDIzLjRWNDA4LjdjMCA4LjktNC45IDE3LTEyLjcgMjEuMkwxNTEgNTA5LjFjLTguMSA0LjMtMTcuOSAzLjctMjUuMy0xLjdzLTExLjItMTQuNS05LjctMjMuNWwyNi4yLTE1NS42TDMxLjEgMjE4LjNjLTYuNS02LjQtOC43LTE1LjktNS45LTI0LjVzMTAuMy0xNC45IDE5LjMtMTYuM2wxNTMuMi0yMi42TDI2Ni4zIDEzLjVjNC45LTEwLjEgMTYuMS0xNS40IDI3LTEyLjl6TTI2My45IDEyOC40bC0yOC42IDU4LjhjLTMuNSA3LjEtMTAuMiAxMi4xLTE4LjEgMTMuM0w5OSAyMTcuOSAxODQuOSAzMDNjNS41IDUuNSA4LjEgMTMuMyA2LjggMjFMMTcxLjQgNDQzLjdsOTIuNS00OS40VjEyOC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4Ny45IDBjOS4yIDAgMTcuNiA1LjIgMjEuNiAxMy41bDY4LjYgMTQxLjMgMTUzLjIgMjIuNmM5IDEuMyAxNi41IDcuNiAxOS4zIDE2LjNzLjUgMTguMS01LjkgMjQuNUw0MzMuNiAzMjguNGwyNi4yIDE1NS42YzEuNSA5LTIuMiAxOC4xLTkuNyAyMy41cy0xNy4zIDYtMjUuMyAxLjdsLTEzNy03My4yTDE1MSA1MDkuMWMtOC4xIDQuMy0xNy45IDMuNy0yNS4zLTEuN3MtMTEuMi0xNC41LTkuNy0yMy41bDI2LjItMTU1LjZMMzEuMSAyMTguMmMtNi41LTYuNC04LjctMTUuOS01LjktMjQuNXMxMC4zLTE0LjkgMTkuMy0xNi4zbDE1My4yLTIyLjZMMjY2LjMgMTMuNUMyNzAuNCA1LjIgMjc4LjcgMCAyODcuOSAwem0wIDc5TDIzNS40IDE4Ny4yYy0zLjUgNy4xLTEwLjIgMTIuMS0xOC4xIDEzLjNMOTkgMjE3LjkgMTg0LjkgMzAzYzUuNSA1LjUgOC4xIDEzLjMgNi44IDIxTDE3MS40IDQ0My43bDEwNS4yLTU2LjJjNy4xLTMuOCAxNS42LTMuOCAyMi42IDBsMTA1LjIgNTYuMkwzODQuMiAzMjQuMWMtMS4zLTcuNyAxLjItMTUuNSA2LjgtMjFsODUuOS04NS4xTDM1OC42IDIwMC41Yy03LjgtMS4yLTE0LjYtNi4xLTE4LjEtMTMuM0wyODcuOSA3OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3NS43IDE5LjdjLTEuNS04LTYuOS0xNC43LTE0LjQtMTcuOHMtMTYuMS0yLjItMjIuOCAyLjRMMjU2IDYxLjEgMTczLjUgNC4yYy02LjctNC42LTE1LjMtNS41LTIyLjgtMi40cy0xMi45IDkuOC0xNC40IDE3LjhsLTE4LjEgOTguNUwxOS43IDEzNi4zYy04IDEuNS0xNC43IDYuOS0xNy44IDE0LjRzLTIuMiAxNi4xIDIuNCAyMi44TDYxLjEgMjU2IDQuMiAzMzguNWMtNC42IDYuNy01LjUgMTUuMy0yLjQgMjIuOHM5LjggMTMgMTcuOCAxNC40bDk4LjUgMTguMSAxOC4xIDk4LjVjMS41IDggNi45IDE0LjcgMTQuNCAxNy44czE2LjEgMi4yIDIyLjgtMi40TDI1NiA0NTAuOWw4Mi41IDU2LjljNi43IDQuNiAxNS4zIDUuNSAyMi44IDIuNHMxMi45LTkuOCAxNC40LTE3LjhsMTguMS05OC41IDk4LjUtMTguMWM4LTEuNSAxNC43LTYuOSAxNy44LTE0LjRzMi4yLTE2LjEtMi40LTIyLjhMNDUwLjkgMjU2bDU2LjktODIuNWM0LjYtNi43IDUuNS0xNS4zIDIuNC0yMi44cy05LjgtMTIuOS0xNy44LTE0LjRsLTk4LjUtMTguMUwzNzUuNyAxOS43ek0yNjkuNiAxMTBsNjUuNi00NS4yIDE0LjQgNzguM2MxLjggOS44IDkuNSAxNy41IDE5LjMgMTkuM2w3OC4zIDE0LjRMNDAyIDI0Mi40Yy01LjcgOC4yLTUuNyAxOSAwIDI3LjJsNDUuMiA2NS42LTc4LjMgMTQuNGMtOS44IDEuOC0xNy41IDkuNS0xOS4zIDE5LjNsLTE0LjQgNzguM0wyNjkuNiA0MDJjLTguMi01LjctMTktNS43LTI3LjIgMGwtNjUuNiA0NS4yLTE0LjQtNzguM2MtMS44LTkuOC05LjUtMTcuNS0xOS4zLTE5LjNMNjQuOCAzMzUuMiAxMTAgMjY5LjZjNS43LTguMiA1LjctMTkgMC0yNy4yTDY0LjggMTc2LjhsNzguMy0xNC40YzkuOC0xLjggMTcuNS05LjUgMTkuMy0xOS4zbDE0LjQtNzguM0wyNDIuNCAxMTBjOC4yIDUuNyAxOSA1LjcgMjcuMiAwek0yNTYgMzY4YTExMiAxMTIgMCAxIDAgMC0yMjQgMTEyIDExMiAwIDEgMCAwIDIyNHpNMTkyIDI1NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RodW1ic0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzLjggNDc3LjJjLTM4LjIgMTAuOS03OC4xLTExLjItODktNDkuNGwtNS43LTIwYy0zLjctMTMtMTAuNC0yNS0xOS41LTM1bC01MS4zLTU2LjRjLTguOS05LjgtOC4yLTI1IDEuNi0zMy45czI1LTguMiAzMy45IDEuNmw1MS4zIDU2LjRjMTQuMSAxNS41IDI0LjQgMzQgMzAuMSA1NC4xbDUuNyAyMGMzLjYgMTIuNyAxNi45IDIwLjEgMjkuNyAxNi41czIwLjEtMTYuOSAxNi41LTI5LjdsLTUuNy0yMGMtNS43LTE5LjktMTQuNy0zOC43LTI2LjYtNTUuNWMtNS4yLTcuMy01LjgtMTYuOS0xLjctMjQuOXMxMi4zLTEzIDIxLjMtMTNMNDQ4IDI4OGM4LjggMCAxNi03LjIgMTYtMTZjMC02LjgtNC4zLTEyLjctMTAuNC0xNWMtNy40LTIuOC0xMy05LTE0LjktMTYuN3MuMS0xNS44IDUuMy0yMS43YzIuNS0yLjggNC02LjUgNC0xMC42YzAtNy44LTUuNi0xNC4zLTEzLTE1LjdjLTguMi0xLjYtMTUuMS03LjMtMTgtMTUuMnMtMS42LTE2LjcgMy42LTIzLjNjMi4xLTIuNyAzLjQtNi4xIDMuNC05LjljMC02LjctNC4yLTEyLjYtMTAuMi0xNC45Yy0xMS41LTQuNS0xNy43LTE2LjktMTQuNC0yOC44Yy40LTEuMyAuNi0yLjggLjYtNC4zYzAtOC44LTcuMi0xNi0xNi0xNkgyODYuNWMtMTIuNiAwLTI1IDMuNy0zNS41IDEwLjdsLTYxLjcgNDEuMWMtMTEgNy40LTI1LjkgNC40LTMzLjMtNi43cy00LjQtMjUuOSA2LjctMzMuM2w2MS43LTQxLjFjMTguNC0xMi4zIDQwLTE4LjggNjIuMS0xOC44SDM4NGMzNC43IDAgNjIuOSAyNy42IDY0IDYyYzE0LjYgMTEuNyAyNCAyOS43IDI0IDUwYzAgNC41LS41IDguOC0xLjMgMTNjMTUuNCAxMS43IDI1LjMgMzAuMiAyNS4zIDUxYzAgNi41LTEgMTIuOC0yLjggMTguN0M1MDQuOCAyMzguMyA1MTIgMjU0LjMgNTEyIDI3MmMwIDM1LjMtMjguNiA2NC02NCA2NGwtOTIuMyAwYzQuNyAxMC40IDguNyAyMS4yIDExLjggMzIuMmw1LjcgMjBjMTAuOSAzOC4yLTExLjIgNzguMS00OS40IDg5ek0zMiAzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RodW1ic1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy44IDM0LjhjLTM4LjItMTAuOS03OC4xIDExLjItODkgNDkuNGwtNS43IDIwYy0zLjcgMTMtMTAuNCAyNS0xOS41IDM1bC01MS4zIDU2LjRjLTguOSA5LjgtOC4yIDI1IDEuNiAzMy45czI1IDguMiAzMy45LTEuNmw1MS4zLTU2LjRjMTQuMS0xNS41IDI0LjQtMzQgMzAuMS01NC4xbDUuNy0yMGMzLjYtMTIuNyAxNi45LTIwLjEgMjkuNy0xNi41czIwLjEgMTYuOSAxNi41IDI5LjdsLTUuNyAyMGMtNS43IDE5LjktMTQuNyAzOC43LTI2LjYgNTUuNWMtNS4yIDcuMy01LjggMTYuOS0xLjcgMjQuOXMxMi4zIDEzIDIxLjMgMTNMNDQ4IDIyNGM4LjggMCAxNiA3LjIgMTYgMTZjMCA2LjgtNC4zIDEyLjctMTAuNCAxNWMtNy40IDIuOC0xMyA5LTE0LjkgMTYuN3MuMSAxNS44IDUuMyAyMS43YzIuNSAyLjggNCA2LjUgNCAxMC42YzAgNy44LTUuNiAxNC4zLTEzIDE1LjdjLTguMiAxLjYtMTUuMSA3LjMtMTggMTUuMnMtMS42IDE2LjcgMy42IDIzLjNjMi4xIDIuNyAzLjQgNi4xIDMuNCA5LjljMCA2LjctNC4yIDEyLjYtMTAuMiAxNC45Yy0xMS41IDQuNS0xNy43IDE2LjktMTQuNCAyOC44Yy40IDEuMyAuNiAyLjggLjYgNC4zYzAgOC44LTcuMiAxNi0xNiAxNkgyODYuNWMtMTIuNiAwLTI1LTMuNy0zNS41LTEwLjdsLTYxLjctNDEuMWMtMTEtNy40LTI1LjktNC40LTMzLjMgNi43cy00LjQgMjUuOSA2LjcgMzMuM2w2MS43IDQxLjFjMTguNCAxMi4zIDQwIDE4LjggNjIuMSAxOC44SDM4NGMzNC43IDAgNjIuOS0yNy42IDY0LTYyYzE0LjYtMTEuNyAyNC0yOS43IDI0LTUwYzAtNC41LS41LTguOC0xLjMtMTNjMTUuNC0xMS43IDI1LjMtMzAuMiAyNS4zLTUxYzAtNi41LTEtMTIuOC0yLjgtMTguN0M1MDQuOCAyNzMuNyA1MTIgMjU3LjcgNTEyIDI0MGMwLTM1LjMtMjguNi02NC02NC02NGwtOTIuMyAwYzQuNy0xMC40IDguNy0yMS4yIDExLjgtMzIuMmw1LjctMjBjMTAuOS0zOC4yLTExLjItNzguMS00OS40LTg5ek0zMiAxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NmMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RyYXNoQ2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MC41IDUxLjZMMTUxLjUgODBoMTQ1bC0xOS0yOC40Yy0xLjUtMi4yLTQtMy42LTYuNy0zLjZIMTc3LjFjLTIuNyAwLTUuMiAxLjMtNi43IDMuNnptMTQ3LTI2LjZMMzU0LjIgODBIMzY4aDQ4IDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRoLThWNDMyYzAgNDQuMi0zNS44IDgwLTgwIDgwSDExMmMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTI4SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFMxMC43IDgwIDI0IDgwaDhIODAgOTMuOGwzNi43LTU1LjFDMTQwLjkgOS40IDE1OC40IDAgMTc3LjEgMGg5My43YzE4LjcgMCAzNi4yIDkuNCA0Ni42IDI0Ljl6TTgwIDEyOFY0MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOEg4MHptODAgNjRWNDAwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE5MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2em04MCAwVjQwMGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptODAgMFY0MDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMTkyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1VzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDEyOGE4MCA4MCAwIDEgMCAtMTYwIDAgODAgODAgMCAxIDAgMTYwIDB6TTk2IDEyOGExMjggMTI4IDAgMSAxIDI1NiAwQTEyOCAxMjggMCAxIDEgOTYgMTI4ek00OS4zIDQ2NEgzOTguN2MtOC45LTYzLjMtNjMuMy0xMTItMTI5LTExMkgxNzguM2MtNjUuNyAwLTEyMC4xIDQ4LjctMTI5IDExMnpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dNYXhpbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMyA4OS41Qy4xIDkxLjYgMCA5My44IDAgOTZWMjI0IDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NFYyMjQgOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRjLTIuMiAwLTQuNCAuMS02LjUgLjNjLTkuMiAuOS0xNy44IDMuOC0yNS41IDguMkMyMS44IDQ2LjUgMTMuNCA1NS4xIDcuNyA2NS41Yy0zLjkgNy4zLTYuNSAxNS40LTcuNCAyNHpNNDggMjI0SDQ2NGwwIDE5MmMwIDguOC03LjIgMTYtMTYgMTZMNjQgNDMyYy04LjggMC0xNi03LjItMTYtMTZsMC0xOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1dpbmRvd01pbmltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDQzMmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1dpbmRvd1Jlc3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDQ4SDIwOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWOTZIMTI4VjgwYzAtNDQuMiAzNS44LTgwIDgwLTgwSDQzMmM0NC4yIDAgODAgMzUuOCA4MCA4MFYzMDRjMCA0NC4yLTM1LjggODAtODAgODBINDE2VjMzNmgxNmMxNy43IDAgMzItMTQuMyAzMi0zMlY4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNDggNDQ4YzAgOC44IDcuMiAxNiAxNiAxNkgzMjBjOC44IDAgMTYtNy4yIDE2LTE2VjI1Nkg0OFY0NDh6TTY0IDEyOEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTJjMC0zNS4zIDI4LjctNjQgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbiIsImNvbnN0IGNvcHlUb0NsaXBib2FyZCA9ICh2YWx1ZVRvQ29weSwgc2V0SXNKdXN0Q29waWVkKSA9PiB7XG4gIHNldElzSnVzdENvcGllZCh0cnVlKTtcbiAgbmF2aWdhdG9yPy5jbGlwYm9hcmQ/LndyaXRlVGV4dCh2YWx1ZVRvQ29weSkudGhlbigoKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJDb3B5IFN1Y2Nlc3NmdWxsXCIpO1xuICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIENvcHkgdGV4dDogXCIsIGVycm9yKTtcbiAgICBzZXRJc0p1c3RDb3BpZWQoZmFsc2UpO1xuICB9KTtcbiAgc2V0VGltZW91dCgoKSA9PiBzZXRJc0p1c3RDb3BpZWQoZmFsc2UpLCA0ZTMpO1xufTtcblxuZXhwb3J0IHsgY29weVRvQ2xpcGJvYXJkIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWxwZXJzLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRmFDaGVjaywgRmFDbGlwYm9hcmRMaXN0IH0gZnJvbSAncmVhY3QtaWNvbnMvZmE2JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IGNvcHlUb0NsaXBib2FyZCB9IGZyb20gJy4vaGVscGVycy5tanMnO1xuXG5jb25zdCBDbGlwYm9hcmRXaXRoSWNvbiA9IGZvcndhcmRSZWYoXG4gICh7IHZhbHVlVG9Db3B5LCBpY29uOiBJY29uID0gRmFDbGlwYm9hcmRMaXN0LCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgY2xhc3NOYW1lLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IFtpc0p1c3RDb3BpZWQsIHNldElzSnVzdENvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5jbGlwYm9hcmQud2l0aEljb24sIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiBjb3B5VG9DbGlwYm9hcmQodmFsdWVUb0NvcHksIHNldElzSnVzdENvcGllZCksXG4gICAgICAgIC4uLnJlc3QsXG4gICAgICAgIHJlZixcbiAgICAgICAgY2hpbGRyZW46IGlzSnVzdENvcGllZCA/IC8qIEBfX1BVUkVfXyAqLyBqc3goRmFDaGVjaywgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbi5zdWNjZXNzSWNvbiB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbi5kZWZhdWx0SWNvbiB9KVxuICAgICAgfVxuICAgICk7XG4gIH1cbik7XG5cbmV4cG9ydCB7IENsaXBib2FyZFdpdGhJY29uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DbGlwYm9hcmRXaXRoSWNvbi5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3gsIGpzeHMgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZhQ2hlY2ssIEZhQ2xpcGJvYXJkTGlzdCB9IGZyb20gJ3JlYWN0LWljb25zL2ZhNic7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBjb3B5VG9DbGlwYm9hcmQgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcblxuY29uc3QgQ2xpcGJvYXJkV2l0aEljb25UZXh0ID0gZm9yd2FyZFJlZihcbiAgKHsgdmFsdWVUb0NvcHksIGljb246IEljb24gPSBGYUNsaXBib2FyZExpc3QsIGxhYmVsID0gXCJDb3B5XCIsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCBjbGFzc05hbWUsIC4uLnJlc3QgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgW2lzSnVzdENvcGllZCwgc2V0SXNKdXN0Q29waWVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmNsaXBib2FyZC53aXRoSWNvblRleHQsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiBjb3B5VG9DbGlwYm9hcmQodmFsdWVUb0NvcHksIHNldElzSnVzdENvcGllZCksXG4gICAgICAgIC4uLnJlc3QsXG4gICAgICAgIHJlZixcbiAgICAgICAgY2hpbGRyZW46IGlzSnVzdENvcGllZCA/IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGFiZWwuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KEZhQ2hlY2ssIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24uc3VjY2Vzc0ljb24gfSksXG4gICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLnN1Y2Nlc3NUZXh0LCBjaGlsZHJlbjogXCJDb3BpZWRcIiB9KVxuICAgICAgICBdIH0pIDogLyogQF9fUFVSRV9fICovIGpzeHMoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5sYWJlbC5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbi5kZWZhdWx0SWNvbiB9KSxcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGFiZWwuZGVmYXVsdFRleHQsIGNoaWxkcmVuOiBsYWJlbCB9KVxuICAgICAgICBdIH0pXG4gICAgICB9XG4gICAgKTtcbiAgfVxuKTtcblxuZXhwb3J0IHsgQ2xpcGJvYXJkV2l0aEljb25UZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DbGlwYm9hcmRXaXRoSWNvblRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnLi4vVG9vbHRpcC9Ub29sdGlwLm1qcyc7XG5pbXBvcnQgeyBDbGlwYm9hcmRXaXRoSWNvbiB9IGZyb20gJy4vQ2xpcGJvYXJkV2l0aEljb24ubWpzJztcbmltcG9ydCB7IENsaXBib2FyZFdpdGhJY29uVGV4dCB9IGZyb20gJy4vQ2xpcGJvYXJkV2l0aEljb25UZXh0Lm1qcyc7XG5pbXBvcnQgeyBjb3B5VG9DbGlwYm9hcmQgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcblxuY29uc3QgQ2xpcGJvYXJkQ29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKHsgY2xhc3NOYW1lLCB2YWx1ZVRvQ29weSwgbGFiZWwsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IFtpc0p1c3RDb3BpZWQsIHNldElzSnVzdENvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5jbGlwYm9hcmQuYnV0dG9uLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVG9vbHRpcCwgeyBjb250ZW50OiBpc0p1c3RDb3BpZWQgPyBcIkNvcGllZFwiIDogXCJDb3B5IHRvIGNsaXBib2FyZFwiLCBjbGFzc05hbWU6IFwiWyZfKl06Y3Vyc29yLXBvaW50ZXJcIiwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImJ1dHRvblwiLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgb25DbGljazogKCkgPT4gY29weVRvQ2xpcGJvYXJkKHZhbHVlVG9Db3B5LCBzZXRJc0p1c3RDb3BpZWQpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgICByZWYsXG4gICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGFiZWwsIGNoaWxkcmVuOiBsYWJlbCB9KVxuICAgICAgfVxuICAgICkgfSk7XG4gIH1cbik7XG5DbGlwYm9hcmRDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIkNsaXBib2FyZFwiO1xuQ2xpcGJvYXJkV2l0aEljb24uZGlzcGxheU5hbWUgPSBcIkNsaXBib2FyZC5XaXRoSWNvblwiO1xuQ2xpcGJvYXJkV2l0aEljb25UZXh0LmRpc3BsYXlOYW1lID0gXCJDbGlwYm9hcmQuV2l0aEljb25UZXh0XCI7XG5jb25zdCBDbGlwYm9hcmQgPSBPYmplY3QuYXNzaWduKENsaXBib2FyZENvbXBvbmVudCwge1xuICBXaXRoSWNvbjogQ2xpcGJvYXJkV2l0aEljb24sXG4gIFdpdGhJY29uVGV4dDogQ2xpcGJvYXJkV2l0aEljb25UZXh0XG59KTtcblxuZXhwb3J0IHsgQ2xpcGJvYXJkIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DbGlwYm9hcmQubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBIZWxwZXJUZXh0ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgY29sb3IgPSBcImRlZmF1bHRcIixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHZhbHVlLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmhlbHBlclRleHQsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJwXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgdGhlbWUucm9vdC5jb2xvcnNbY29sb3JdLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IHZhbHVlID8/IGNoaWxkcmVuID8/IFwiXCIgfSk7XG59O1xuSGVscGVyVGV4dC5kaXNwbGF5TmFtZSA9IFwiSGVscGVyVGV4dFwiO1xuXG5leHBvcnQgeyBIZWxwZXJUZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1IZWxwZXJUZXh0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIEZyYWdtZW50LCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgSGVscGVyVGV4dCB9IGZyb20gJy4uL0hlbHBlclRleHQvSGVscGVyVGV4dC5tanMnO1xuXG5jb25zdCBUZXh0SW5wdXQgPSBmb3J3YXJkUmVmKFxuICAoe1xuICAgIGFkZG9uLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb2xvciA9IFwiZ3JheVwiLFxuICAgIGhlbHBlclRleHQsXG4gICAgaWNvbjogSWNvbixcbiAgICByaWdodEljb246IFJpZ2h0SWNvbixcbiAgICBzaGFkb3csXG4gICAgc2l6aW5nID0gXCJtZFwiLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIHR5cGUgPSBcInRleHRcIixcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnRleHRJbnB1dCwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IFtcbiAgICAgICAgYWRkb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmFkZG9uLCBjaGlsZHJlbjogYWRkb24gfSksXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgICAgIEljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuZmllbGQuaWNvbi5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IGNsYXNzTmFtZTogdGhlbWUuZmllbGQuaWNvbi5zdmcgfSkgfSksXG4gICAgICAgICAgUmlnaHRJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwicmlnaHQtaWNvblwiLCBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLnJpZ2h0SWNvbi5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChSaWdodEljb24sIHsgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5yaWdodEljb24uc3ZnIH0pIH0pLFxuICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICBcImlucHV0XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgICAgICB0aGVtZS5maWVsZC5pbnB1dC5iYXNlLFxuICAgICAgICAgICAgICAgIHRoZW1lLmZpZWxkLmlucHV0LmNvbG9yc1tjb2xvcl0sXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQuc2l6ZXNbc2l6aW5nXSxcbiAgICAgICAgICAgICAgICB0aGVtZS5maWVsZC5pbnB1dC53aXRoSWNvbltJY29uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQud2l0aFJpZ2h0SWNvbltSaWdodEljb24gPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICAgICAgICB0aGVtZS5maWVsZC5pbnB1dC53aXRoQWRkb25bYWRkb24gPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICAgICAgICB0aGVtZS5maWVsZC5pbnB1dC53aXRoU2hhZG93W3NoYWRvdyA/IFwib25cIiA6IFwib2ZmXCJdXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgIC4uLnByb3BzLFxuICAgICAgICAgICAgICByZWZcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgIF0gfSlcbiAgICAgIF0gfSksXG4gICAgICBoZWxwZXJUZXh0ICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSGVscGVyVGV4dCwgeyBjb2xvciwgY2hpbGRyZW46IGhlbHBlclRleHQgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuVGV4dElucHV0LmRpc3BsYXlOYW1lID0gXCJUZXh0SW5wdXRcIjtcblxuZXhwb3J0IHsgVGV4dElucHV0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZXh0SW5wdXQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgRGF0ZXBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VEYXRlUGlja2VyQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZXBpY2tlckNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VEYXRlUGlja2VyQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIERhdGVQaWNrZXJDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgRGF0ZXBpY2tlckNvbnRleHQsIHVzZURhdGVQaWNrZXJDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXRlcGlja2VyQ29udGV4dC5tanMubWFwXG4iLCJ2YXIgVmlld3MgPSAvKiBAX19QVVJFX18gKi8gKChWaWV3czIpID0+IHtcbiAgVmlld3MyW1ZpZXdzMltcIkRheXNcIl0gPSAwXSA9IFwiRGF5c1wiO1xuICBWaWV3czJbVmlld3MyW1wiTW9udGhzXCJdID0gMV0gPSBcIk1vbnRoc1wiO1xuICBWaWV3czJbVmlld3MyW1wiWWVhcnNcIl0gPSAyXSA9IFwiWWVhcnNcIjtcbiAgVmlld3MyW1ZpZXdzMltcIkRlY2FkZXNcIl0gPSAzXSA9IFwiRGVjYWRlc1wiO1xuICByZXR1cm4gVmlld3MyO1xufSkoVmlld3MgfHwge30pO1xudmFyIFdlZWtTdGFydCA9IC8qIEBfX1BVUkVfXyAqLyAoKFdlZWtTdGFydDIpID0+IHtcbiAgV2Vla1N0YXJ0MltXZWVrU3RhcnQyW1wiU3VuZGF5XCJdID0gMF0gPSBcIlN1bmRheVwiO1xuICBXZWVrU3RhcnQyW1dlZWtTdGFydDJbXCJNb25kYXlcIl0gPSAxXSA9IFwiTW9uZGF5XCI7XG4gIFdlZWtTdGFydDJbV2Vla1N0YXJ0MltcIlR1ZXNkYXlcIl0gPSAyXSA9IFwiVHVlc2RheVwiO1xuICBXZWVrU3RhcnQyW1dlZWtTdGFydDJbXCJXZWRuZXNkYXlcIl0gPSAzXSA9IFwiV2VkbmVzZGF5XCI7XG4gIFdlZWtTdGFydDJbV2Vla1N0YXJ0MltcIlRodXJzZGF5XCJdID0gNF0gPSBcIlRodXJzZGF5XCI7XG4gIFdlZWtTdGFydDJbV2Vla1N0YXJ0MltcIkZyaWRheVwiXSA9IDVdID0gXCJGcmlkYXlcIjtcbiAgV2Vla1N0YXJ0MltXZWVrU3RhcnQyW1wiU2F0dXJkYXlcIl0gPSA2XSA9IFwiU2F0dXJkYXlcIjtcbiAgcmV0dXJuIFdlZWtTdGFydDI7XG59KShXZWVrU3RhcnQgfHwge30pO1xuY29uc3QgaXNEYXRlSW5SYW5nZSA9IChkYXRlLCBtaW5EYXRlLCBtYXhEYXRlKSA9PiB7XG4gIGNvbnN0IGRhdGVUaW1lID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKS5nZXRUaW1lKCk7XG4gIGlmIChtaW5EYXRlICYmIG1heERhdGUpIHtcbiAgICBjb25zdCBtaW5EYXRlVGltZSA9IG5ldyBEYXRlKG1pbkRhdGUuZ2V0RnVsbFllYXIoKSwgbWluRGF0ZS5nZXRNb250aCgpLCBtaW5EYXRlLmdldERhdGUoKSkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IG1heERhdGVUaW1lID0gbmV3IERhdGUobWF4RGF0ZS5nZXRGdWxsWWVhcigpLCBtYXhEYXRlLmdldE1vbnRoKCksIG1heERhdGUuZ2V0RGF0ZSgpKS5nZXRUaW1lKCk7XG4gICAgcmV0dXJuIGRhdGVUaW1lID49IG1pbkRhdGVUaW1lICYmIGRhdGVUaW1lIDw9IG1heERhdGVUaW1lO1xuICB9XG4gIGlmIChtaW5EYXRlKSB7XG4gICAgY29uc3QgbWluRGF0ZVRpbWUgPSBuZXcgRGF0ZShtaW5EYXRlLmdldEZ1bGxZZWFyKCksIG1pbkRhdGUuZ2V0TW9udGgoKSwgbWluRGF0ZS5nZXREYXRlKCkpLmdldFRpbWUoKTtcbiAgICByZXR1cm4gZGF0ZVRpbWUgPj0gbWluRGF0ZVRpbWU7XG4gIH1cbiAgaWYgKG1heERhdGUpIHtcbiAgICBjb25zdCBtYXhEYXRlVGltZSA9IG5ldyBEYXRlKG1heERhdGUuZ2V0RnVsbFllYXIoKSwgbWF4RGF0ZS5nZXRNb250aCgpLCBtYXhEYXRlLmdldERhdGUoKSkuZ2V0VGltZSgpO1xuICAgIHJldHVybiBkYXRlVGltZSA8PSBtYXhEYXRlVGltZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5jb25zdCBpc0RhdGVFcXVhbCA9IChkYXRlLCBzZWxlY3RlZERhdGUpID0+IHtcbiAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSk7XG4gIHNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpLCBzZWxlY3RlZERhdGUuZ2V0TW9udGgoKSwgc2VsZWN0ZWREYXRlLmdldERhdGUoKSk7XG4gIHJldHVybiBkYXRlLmdldFRpbWUoKSA9PT0gc2VsZWN0ZWREYXRlLmdldFRpbWUoKTtcbn07XG5jb25zdCBnZXRGaXJzdERhdGVJblJhbmdlID0gKGRhdGUsIG1pbkRhdGUsIG1heERhdGUpID0+IHtcbiAgaWYgKCFpc0RhdGVJblJhbmdlKGRhdGUsIG1pbkRhdGUsIG1heERhdGUpKSB7XG4gICAgaWYgKG1pbkRhdGUgJiYgZGF0ZSA8IG1pbkRhdGUpIHtcbiAgICAgIGRhdGUgPSBtaW5EYXRlO1xuICAgIH0gZWxzZSBpZiAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSkge1xuICAgICAgZGF0ZSA9IG1heERhdGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRlO1xufTtcbmNvbnN0IGdldEZpcnN0RGF5T2ZUaGVNb250aCA9IChkYXRlLCB3ZWVrU3RhcnQpID0+IHtcbiAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIDEpO1xuICBjb25zdCBkYXlPZldlZWsgPSBmaXJzdERheU9mTW9udGguZ2V0RGF5KCk7XG4gIGxldCBkaWZmID0gZGF5T2ZXZWVrIC0gd2Vla1N0YXJ0O1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgcmV0dXJuIGFkZERheXMoZmlyc3REYXlPZk1vbnRoLCAtZGlmZik7XG59O1xuY29uc3QgZ2V0V2Vla0RheXMgPSAobGFuZywgd2Vla1N0YXJ0KSA9PiB7XG4gIGNvbnN0IHdlZWtkYXlzID0gW107XG4gIGNvbnN0IGRhdGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoMCk7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIGRhdGUuZ2V0RGF5KCkgKyB3ZWVrU3RhcnQpO1xuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsYW5nLCB7IHdlZWtkYXk6IFwic2hvcnRcIiB9KTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICB3ZWVrZGF5cy5wdXNoKGZvcm1hdHRlci5mb3JtYXQoYWRkRGF5cyhkYXRlLCBpKSkpO1xuICB9XG4gIHJldHVybiB3ZWVrZGF5cztcbn07XG5jb25zdCBhZGREYXlzID0gKGRhdGUsIGFtb3VudCkgPT4ge1xuICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gIG5ld0RhdGUuc2V0RGF0ZShuZXdEYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBuZXdEYXRlO1xufTtcbmNvbnN0IGFkZE1vbnRocyA9IChkYXRlLCBhbW91bnQpID0+IHtcbiAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICBuZXdEYXRlLnNldE1vbnRoKG5ld0RhdGUuZ2V0TW9udGgoKSArIGFtb3VudCk7XG4gIHJldHVybiBuZXdEYXRlO1xufTtcbmNvbnN0IGFkZFllYXJzID0gKGRhdGUsIGFtb3VudCkgPT4ge1xuICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gIG5ld0RhdGUuc2V0RnVsbFllYXIobmV3RGF0ZS5nZXRGdWxsWWVhcigpICsgYW1vdW50KTtcbiAgcmV0dXJuIG5ld0RhdGU7XG59O1xuY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChsYW5ndWFnZSwgZGF0ZSwgb3B0aW9ucykgPT4ge1xuICBsZXQgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgZGF5OiBcIm51bWVyaWNcIixcbiAgICBtb250aDogXCJsb25nXCIsXG4gICAgeWVhcjogXCJudW1lcmljXCJcbiAgfTtcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBkZWZhdWx0T3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cbiAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxhbmd1YWdlLCBkZWZhdWx0T3B0aW9ucykuZm9ybWF0KGRhdGUpO1xufTtcbmNvbnN0IHN0YXJ0T2ZZZWFyUGVyaW9kID0gKGRhdGUsIHllYXJzKSA9PiB7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHJldHVybiBNYXRoLmZsb29yKHllYXIgLyB5ZWFycykgKiB5ZWFycztcbn07XG5jb25zdCBpc0RhdGVJbkRlY2FkZSA9IChkYXRlLCBzdGFydFllYXIpID0+IHtcbiAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZW5kWWVhciA9IHN0YXJ0WWVhciArIDk7XG4gIHJldHVybiB5ZWFyID49IHN0YXJ0WWVhciAmJiB5ZWFyIDw9IGVuZFllYXI7XG59O1xuXG5leHBvcnQgeyBWaWV3cywgV2Vla1N0YXJ0LCBhZGREYXlzLCBhZGRNb250aHMsIGFkZFllYXJzLCBnZXRGaXJzdERhdGVJblJhbmdlLCBnZXRGaXJzdERheU9mVGhlTW9udGgsIGdldEZvcm1hdHRlZERhdGUsIGdldFdlZWtEYXlzLCBpc0RhdGVFcXVhbCwgaXNEYXRlSW5EZWNhZGUsIGlzRGF0ZUluUmFuZ2UsIHN0YXJ0T2ZZZWFyUGVyaW9kIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWxwZXJzLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIEZyYWdtZW50LCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VEYXRlUGlja2VyQ29udGV4dCB9IGZyb20gJy4uL0RhdGVwaWNrZXJDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBnZXRXZWVrRGF5cywgZ2V0Rmlyc3REYXlPZlRoZU1vbnRoLCBhZGREYXlzLCBnZXRGb3JtYXR0ZWREYXRlLCBpc0RhdGVFcXVhbCwgaXNEYXRlSW5SYW5nZSB9IGZyb20gJy4uL2hlbHBlcnMubWpzJztcblxuY29uc3QgRGF0ZXBpY2tlclZpZXdzRGF5cyA9ICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9IH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHRoZW1lOiByb290VGhlbWUsXG4gICAgd2Vla1N0YXJ0LFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICB2aWV3RGF0ZSxcbiAgICBzZWxlY3RlZERhdGUsXG4gICAgY2hhbmdlU2VsZWN0ZWREYXRlLFxuICAgIGxhbmd1YWdlXG4gIH0gPSB1c2VEYXRlUGlja2VyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUudmlld3MuZGF5cywgY3VzdG9tVGhlbWUpO1xuICBjb25zdCB3ZWVrRGF5cyA9IGdldFdlZWtEYXlzKGxhbmd1YWdlLCB3ZWVrU3RhcnQpO1xuICBjb25zdCBzdGFydERhdGUgPSBnZXRGaXJzdERheU9mVGhlTW9udGgodmlld0RhdGUsIHdlZWtTdGFydCk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmhlYWRlci5iYXNlLCBjaGlsZHJlbjogd2Vla0RheXMubWFwKChkYXksIGluZGV4KSA9PiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaGVhZGVyLnRpdGxlLCBjaGlsZHJlbjogZGF5IH0sIGluZGV4KSkgfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaXRlbXMuYmFzZSwgY2hpbGRyZW46IFsuLi5BcnJheSg0MildLm1hcCgoX2RhdGUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IGFkZERheXMoc3RhcnREYXRlLCBpbmRleCk7XG4gICAgICBjb25zdCBkYXkgPSBnZXRGb3JtYXR0ZWREYXRlKGxhbmd1YWdlLCBjdXJyZW50RGF0ZSwgeyBkYXk6IFwibnVtZXJpY1wiIH0pO1xuICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkRGF0ZSAmJiBpc0RhdGVFcXVhbChzZWxlY3RlZERhdGUsIGN1cnJlbnREYXRlKTtcbiAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAhaXNEYXRlSW5SYW5nZShjdXJyZW50RGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAge1xuICAgICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUuaXRlbXMuaXRlbS5iYXNlLFxuICAgICAgICAgICAgaXNTZWxlY3RlZCAmJiB0aGVtZS5pdGVtcy5pdGVtLnNlbGVjdGVkLFxuICAgICAgICAgICAgaXNEaXNhYmxlZCAmJiB0aGVtZS5pdGVtcy5pdGVtLmRpc2FibGVkXG4gICAgICAgICAgKSxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgICAgICAgY2hhbmdlU2VsZWN0ZWREYXRlKGN1cnJlbnREYXRlLCB0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoaWxkcmVuOiBkYXlcbiAgICAgICAgfSxcbiAgICAgICAgaW5kZXhcbiAgICAgICk7XG4gICAgfSkgfSlcbiAgXSB9KTtcbn07XG5cbmV4cG9ydCB7IERhdGVwaWNrZXJWaWV3c0RheXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURheXMubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRGF0ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgc3RhcnRPZlllYXJQZXJpb2QsIGFkZFllYXJzLCBpc0RhdGVJbkRlY2FkZSwgaXNEYXRlSW5SYW5nZSwgVmlld3MgfSBmcm9tICcuLi9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IERhdGVwaWNrZXJWaWV3c0RlY2FkZXMgPSAoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgdmlld0RhdGUsIHNlbGVjdGVkRGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSwgc2V0Vmlld0RhdGUsIHNldFZpZXcgfSA9IHVzZURhdGVQaWNrZXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS52aWV3cy5kZWNhZGVzLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IGZpcnN0ID0gc3RhcnRPZlllYXJQZXJpb2Qodmlld0RhdGUsIDEwMCk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5pdGVtcy5iYXNlLCBjaGlsZHJlbjogWy4uLkFycmF5KDEyKV0ubWFwKChfeWVhciwgaW5kZXgpID0+IHtcbiAgICBjb25zdCB5ZWFyID0gZmlyc3QgLSAxMCArIGluZGV4ICogMTA7XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKHZpZXdEYXRlLmdldFRpbWUoKSk7XG4gICAgbmV3RGF0ZS5zZXRGdWxsWWVhcih5ZWFyICsgdmlld0RhdGUuZ2V0RnVsbFllYXIoKSAlIDEwKTtcbiAgICBjb25zdCBmaXJzdERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgICBjb25zdCBsYXN0RGF0ZSA9IGFkZFllYXJzKGZpcnN0RGF0ZSwgOSk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkRGF0ZSAmJiBpc0RhdGVJbkRlY2FkZShzZWxlY3RlZERhdGUsIHllYXIpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAhaXNEYXRlSW5SYW5nZShmaXJzdERhdGUsIG1pbkRhdGUsIG1heERhdGUpICYmICFpc0RhdGVJblJhbmdlKGxhc3REYXRlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgdGhlbWUuaXRlbXMuaXRlbS5iYXNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5zZWxlY3RlZCxcbiAgICAgICAgICBpc0Rpc2FibGVkICYmIHRoZW1lLml0ZW1zLml0ZW0uZGlzYWJsZWRcbiAgICAgICAgKSxcbiAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICAgICAgc2VsZWN0ZWREYXRlICYmIHNldFZpZXdEYXRlKGFkZFllYXJzKHZpZXdEYXRlLCB5ZWFyIC0gc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCkpKTtcbiAgICAgICAgICBzZXRWaWV3KFZpZXdzLlllYXJzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IHllYXJcbiAgICAgIH0sXG4gICAgICBpbmRleFxuICAgICk7XG4gIH0pIH0pO1xufTtcblxuZXhwb3J0IHsgRGF0ZXBpY2tlclZpZXdzRGVjYWRlcyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGVjYWRlcy5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VEYXRlUGlja2VyQ29udGV4dCB9IGZyb20gJy4uL0RhdGVwaWNrZXJDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBnZXRGb3JtYXR0ZWREYXRlLCBpc0RhdGVFcXVhbCwgaXNEYXRlSW5SYW5nZSwgVmlld3MgfSBmcm9tICcuLi9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IERhdGVwaWNrZXJWaWV3c01vbnRoID0gKHsgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30gfSkgPT4ge1xuICBjb25zdCB7XG4gICAgdGhlbWU6IHJvb3RUaGVtZSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2VsZWN0ZWREYXRlLFxuICAgIHZpZXdEYXRlLFxuICAgIGxhbmd1YWdlLFxuICAgIHNldFZpZXdEYXRlLFxuICAgIHNldFZpZXdcbiAgfSA9IHVzZURhdGVQaWNrZXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS52aWV3cy5tb250aHMsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLml0ZW1zLmJhc2UsIGNoaWxkcmVuOiBbLi4uQXJyYXkoMTIpXS5tYXAoKF9tb250aCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBuZXdEYXRlID0gLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCk7XG4gICAgbmV3RGF0ZS5zZXRNb250aChpbmRleCwgMSk7XG4gICAgbmV3RGF0ZS5zZXRGdWxsWWVhcih2aWV3RGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgICBjb25zdCBtb250aCA9IGdldEZvcm1hdHRlZERhdGUobGFuZ3VhZ2UsIG5ld0RhdGUsIHsgbW9udGg6IFwic2hvcnRcIiB9KTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gc2VsZWN0ZWREYXRlICYmIGlzRGF0ZUVxdWFsKHNlbGVjdGVkRGF0ZSwgbmV3RGF0ZSk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9ICFpc0RhdGVJblJhbmdlKG5ld0RhdGUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJidXR0b25cIixcbiAgICAgIHtcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICB0aGVtZS5pdGVtcy5pdGVtLmJhc2UsXG4gICAgICAgICAgaXNTZWxlY3RlZCAmJiB0aGVtZS5pdGVtcy5pdGVtLnNlbGVjdGVkLFxuICAgICAgICAgIGlzRGlzYWJsZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5kaXNhYmxlZFxuICAgICAgICApLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgICAgICBzZXRWaWV3RGF0ZShuZXdEYXRlKTtcbiAgICAgICAgICBzZXRWaWV3KFZpZXdzLkRheXMpO1xuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogbW9udGhcbiAgICAgIH0sXG4gICAgICBpbmRleFxuICAgICk7XG4gIH0pIH0pO1xufTtcblxuZXhwb3J0IHsgRGF0ZXBpY2tlclZpZXdzTW9udGggfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vbnRocy5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VEYXRlUGlja2VyQ29udGV4dCB9IGZyb20gJy4uL0RhdGVwaWNrZXJDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBzdGFydE9mWWVhclBlcmlvZCwgaXNEYXRlRXF1YWwsIGlzRGF0ZUluUmFuZ2UsIFZpZXdzIH0gZnJvbSAnLi4vaGVscGVycy5tanMnO1xuXG5jb25zdCBEYXRlcGlja2VyVmlld3NZZWFycyA9ICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9IH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBzZWxlY3RlZERhdGUsIG1pbkRhdGUsIG1heERhdGUsIHZpZXdEYXRlLCBzZXRWaWV3RGF0ZSwgc2V0VmlldyB9ID0gdXNlRGF0ZVBpY2tlckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLnZpZXdzLnllYXJzLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5pdGVtcy5iYXNlLCBjaGlsZHJlbjogWy4uLkFycmF5KDEyKV0ubWFwKChfeWVhciwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBmaXJzdCA9IHN0YXJ0T2ZZZWFyUGVyaW9kKHZpZXdEYXRlLCAxMCk7XG4gICAgY29uc3QgeWVhciA9IGZpcnN0ICsgaW5kZXg7XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKHZpZXdEYXRlLmdldFRpbWUoKSk7XG4gICAgbmV3RGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gc2VsZWN0ZWREYXRlICYmIGlzRGF0ZUVxdWFsKHNlbGVjdGVkRGF0ZSwgbmV3RGF0ZSk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9ICFpc0RhdGVJblJhbmdlKG5ld0RhdGUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJidXR0b25cIixcbiAgICAgIHtcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICB0aGVtZS5pdGVtcy5pdGVtLmJhc2UsXG4gICAgICAgICAgaXNTZWxlY3RlZCAmJiB0aGVtZS5pdGVtcy5pdGVtLnNlbGVjdGVkLFxuICAgICAgICAgIGlzRGlzYWJsZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5kaXNhYmxlZFxuICAgICAgICApLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgICAgICBzZXRWaWV3RGF0ZShuZXdEYXRlKTtcbiAgICAgICAgICBzZXRWaWV3KFZpZXdzLk1vbnRocyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiB5ZWFyXG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9KSB9KTtcbn07XG5cbmV4cG9ydCB7IERhdGVwaWNrZXJWaWV3c1llYXJzIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ZZWFycy5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3gsIGpzeHMgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VJbXBlcmF0aXZlSGFuZGxlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIaUNhbGVuZGFyLCBIaUFycm93TGVmdCwgSGlBcnJvd1JpZ2h0IH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgVGV4dElucHV0IH0gZnJvbSAnLi4vVGV4dElucHV0L1RleHRJbnB1dC5tanMnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckNvbnRleHQgfSBmcm9tICcuL0RhdGVwaWNrZXJDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBnZXRGaXJzdERhdGVJblJhbmdlLCBWaWV3cywgaXNEYXRlRXF1YWwsIGdldEZvcm1hdHRlZERhdGUsIFdlZWtTdGFydCwgc3RhcnRPZlllYXJQZXJpb2QsIGFkZFllYXJzLCBhZGRNb250aHMgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcbmltcG9ydCB7IERhdGVwaWNrZXJWaWV3c0RheXMgfSBmcm9tICcuL1ZpZXdzL0RheXMubWpzJztcbmltcG9ydCB7IERhdGVwaWNrZXJWaWV3c0RlY2FkZXMgfSBmcm9tICcuL1ZpZXdzL0RlY2FkZXMubWpzJztcbmltcG9ydCB7IERhdGVwaWNrZXJWaWV3c01vbnRoIH0gZnJvbSAnLi9WaWV3cy9Nb250aHMubWpzJztcbmltcG9ydCB7IERhdGVwaWNrZXJWaWV3c1llYXJzIH0gZnJvbSAnLi9WaWV3cy9ZZWFycy5tanMnO1xuXG5jb25zdCBEYXRlcGlja2VyUmVuZGVyID0gKHtcbiAgdGl0bGUsXG4gIG9wZW4sXG4gIGlubGluZSA9IGZhbHNlLFxuICBhdXRvSGlkZSA9IHRydWUsXG4gIC8vIEhpZGUgd2hlbiBzZWxlY3RlZCB0aGUgZGF5XG4gIHNob3dDbGVhckJ1dHRvbiA9IHRydWUsXG4gIGxhYmVsQ2xlYXJCdXR0b24gPSBcIkNsZWFyXCIsXG4gIHNob3dUb2RheUJ1dHRvbiA9IHRydWUsXG4gIGxhYmVsVG9kYXlCdXR0b24gPSBcIlRvZGF5XCIsXG4gIGRlZmF1bHRWYWx1ZSxcbiAgbWluRGF0ZSxcbiAgbWF4RGF0ZSxcbiAgbGFuZ3VhZ2UgPSBcImVuXCIsXG4gIHdlZWtTdGFydCA9IFdlZWtTdGFydC5TdW5kYXksXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIG9uQ2hhbmdlLFxuICBsYWJlbCxcbiAgdmFsdWUsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5kYXRlcGlja2VyLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IGluaXRpYWxEYXRlID0gZGVmYXVsdFZhbHVlID8gZ2V0Rmlyc3REYXRlSW5SYW5nZShkZWZhdWx0VmFsdWUsIG1pbkRhdGUsIG1heERhdGUpIDogbnVsbDtcbiAgY29uc3QgZWZmZWN0aXZlRGVmYXVsdFZpZXcgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlID8gZ2V0Rmlyc3REYXRlSW5SYW5nZShkZWZhdWx0VmFsdWUsIG1pbkRhdGUsIG1heERhdGUpIDogLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCk7XG4gIH0sIFtdKTtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKG9wZW4pO1xuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSB1c2VTdGF0ZShWaWV3cy5EYXlzKTtcbiAgY29uc3QgW3NlbGVjdGVkRGF0ZSwgc2V0U2VsZWN0ZWREYXRlXSA9IHVzZVN0YXRlKHZhbHVlID8/IGluaXRpYWxEYXRlKTtcbiAgY29uc3QgW3ZpZXdEYXRlLCBzZXRWaWV3RGF0ZV0gPSB1c2VTdGF0ZSh2YWx1ZSA/PyBlZmZlY3RpdmVEZWZhdWx0Vmlldyk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBkYXRlcGlja2VyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBjaGFuZ2VTZWxlY3RlZERhdGUgPSAoZGF0ZSwgdXNlQXV0b2hpZGUpID0+IHtcbiAgICBzZXRTZWxlY3RlZERhdGUoZGF0ZSk7XG4gICAgaWYgKChkYXRlID09PSBudWxsIHx8IGRhdGUpICYmIG9uQ2hhbmdlKSB7XG4gICAgICBvbkNoYW5nZShkYXRlKTtcbiAgICB9XG4gICAgaWYgKGF1dG9IaWRlICYmIHZpZXcgPT09IFZpZXdzLkRheXMgJiYgdXNlQXV0b2hpZGUgPT0gdHJ1ZSAmJiAhaW5saW5lKSB7XG4gICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgY2xlYXJEYXRlID0gKCkgPT4ge1xuICAgIGNoYW5nZVNlbGVjdGVkRGF0ZShpbml0aWFsRGF0ZSwgdHJ1ZSk7XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgc2V0Vmlld0RhdGUoZGVmYXVsdFZhbHVlKTtcbiAgICB9XG4gIH07XG4gIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgIGZvY3VzKCkge1xuICAgICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICB9LFxuICAgIGNsZWFyKCkge1xuICAgICAgY2xlYXJEYXRlKCk7XG4gICAgfVxuICB9KSk7XG4gIGNvbnN0IHJlbmRlclZpZXcgPSAodHlwZSkgPT4ge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBWaWV3cy5EZWNhZGVzOlxuICAgICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChEYXRlcGlja2VyVmlld3NEZWNhZGVzLCB7IHRoZW1lOiB0aGVtZS52aWV3cy5kZWNhZGVzIH0pO1xuICAgICAgY2FzZSBWaWV3cy5ZZWFyczpcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRGF0ZXBpY2tlclZpZXdzWWVhcnMsIHsgdGhlbWU6IHRoZW1lLnZpZXdzLnllYXJzIH0pO1xuICAgICAgY2FzZSBWaWV3cy5Nb250aHM6XG4gICAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KERhdGVwaWNrZXJWaWV3c01vbnRoLCB7IHRoZW1lOiB0aGVtZS52aWV3cy5tb250aHMgfSk7XG4gICAgICBjYXNlIFZpZXdzLkRheXM6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChEYXRlcGlja2VyVmlld3NEYXlzLCB7IHRoZW1lOiB0aGVtZS52aWV3cy5kYXlzIH0pO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2V0TmV4dFZpZXcgPSAoKSA9PiB7XG4gICAgc3dpdGNoICh2aWV3KSB7XG4gICAgICBjYXNlIFZpZXdzLkRheXM6XG4gICAgICAgIHJldHVybiBWaWV3cy5Nb250aHM7XG4gICAgICBjYXNlIFZpZXdzLk1vbnRoczpcbiAgICAgICAgcmV0dXJuIFZpZXdzLlllYXJzO1xuICAgICAgY2FzZSBWaWV3cy5ZZWFyczpcbiAgICAgICAgcmV0dXJuIFZpZXdzLkRlY2FkZXM7XG4gICAgfVxuICAgIHJldHVybiB2aWV3O1xuICB9O1xuICBjb25zdCBnZXRWaWV3VGl0bGUgPSAoKSA9PiB7XG4gICAgc3dpdGNoICh2aWV3KSB7XG4gICAgICBjYXNlIFZpZXdzLkRlY2FkZXM6XG4gICAgICAgIHJldHVybiBgJHtzdGFydE9mWWVhclBlcmlvZCh2aWV3RGF0ZSwgMTAwKSAtIDEwfSAtICR7c3RhcnRPZlllYXJQZXJpb2Qodmlld0RhdGUsIDEwMCkgKyAxMDB9YDtcbiAgICAgIGNhc2UgVmlld3MuWWVhcnM6XG4gICAgICAgIHJldHVybiBgJHtzdGFydE9mWWVhclBlcmlvZCh2aWV3RGF0ZSwgMTApfSAtICR7c3RhcnRPZlllYXJQZXJpb2Qodmlld0RhdGUsIDEwKSArIDExfWA7XG4gICAgICBjYXNlIFZpZXdzLk1vbnRoczpcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUobGFuZ3VhZ2UsIHZpZXdEYXRlLCB7IHllYXI6IFwibnVtZXJpY1wiIH0pO1xuICAgICAgY2FzZSBWaWV3cy5EYXlzOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUobGFuZ3VhZ2UsIHZpZXdEYXRlLCB7IG1vbnRoOiBcImxvbmdcIiwgeWVhcjogXCJudW1lcmljXCIgfSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBnZXRWaWV3RGF0ZVBhZ2UgPSAodmlldzIsIGRhdGUsIHZhbHVlMikgPT4ge1xuICAgIHN3aXRjaCAodmlldzIpIHtcbiAgICAgIGNhc2UgVmlld3MuRGF5czpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGFkZE1vbnRocyhkYXRlLCB2YWx1ZTIpKTtcbiAgICAgIGNhc2UgVmlld3MuTW9udGhzOlxuICAgICAgICByZXR1cm4gbmV3IERhdGUoYWRkWWVhcnMoZGF0ZSwgdmFsdWUyKSk7XG4gICAgICBjYXNlIFZpZXdzLlllYXJzOlxuICAgICAgICByZXR1cm4gbmV3IERhdGUoYWRkWWVhcnMoZGF0ZSwgdmFsdWUyICogMTApKTtcbiAgICAgIGNhc2UgVmlld3MuRGVjYWRlczpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGFkZFllYXJzKGRhdGUsIHZhbHVlMiAqIDEwMCkpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGFkZFllYXJzKGRhdGUsIHZhbHVlMiAqIDEwKSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgICAgY29uc3QgY2xpY2tlZEluc2lkZURhdGVwaWNrZXIgPSBkYXRlcGlja2VyUmVmPy5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgY29uc3QgY2xpY2tlZEluc2lkZUlucHV0ID0gaW5wdXRSZWY/LmN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICBpZiAoIWNsaWNrZWRJbnNpZGVEYXRlcGlja2VyICYmICFjbGlja2VkSW5zaWRlSW5wdXQpIHtcbiAgICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgIH07XG4gIH0sIFtpbnB1dFJlZiwgZGF0ZXBpY2tlclJlZiwgc2V0SXNPcGVuXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWZmZWN0aXZlVmFsdWUgPSB2YWx1ZSAmJiBnZXRGaXJzdERhdGVJblJhbmdlKG5ldyBEYXRlKHZhbHVlKSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgY29uc3QgZWZmZWN0aXZlU2VsZWN0ZWREYXRlID0gc2VsZWN0ZWREYXRlICYmIGdldEZpcnN0RGF0ZUluUmFuZ2UobmV3IERhdGUoc2VsZWN0ZWREYXRlKSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgaWYgKGVmZmVjdGl2ZVNlbGVjdGVkRGF0ZSAmJiBlZmZlY3RpdmVWYWx1ZSAmJiAhaXNEYXRlRXF1YWwoZWZmZWN0aXZlVmFsdWUsIGVmZmVjdGl2ZVNlbGVjdGVkRGF0ZSkpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0ZShlZmZlY3RpdmVWYWx1ZSk7XG4gICAgfVxuICAgIGlmIChzZWxlY3RlZERhdGUgPT0gbnVsbCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRlKGluaXRpYWxEYXRlKTtcbiAgICB9XG4gIH0sIFt2YWx1ZSwgc2V0U2VsZWN0ZWREYXRlLCBzZXRWaWV3RGF0ZSwgc2VsZWN0ZWREYXRlXSk7XG4gIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gbGFiZWwgOiBnZXRGb3JtYXR0ZWREYXRlKGxhbmd1YWdlLCBzZWxlY3RlZERhdGUgfHwgLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCkpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBEYXRlcGlja2VyQ29udGV4dC5Qcm92aWRlcixcbiAgICB7XG4gICAgICB2YWx1ZToge1xuICAgICAgICB0aGVtZSxcbiAgICAgICAgbGFuZ3VhZ2UsXG4gICAgICAgIG1pbkRhdGUsXG4gICAgICAgIG1heERhdGUsXG4gICAgICAgIHdlZWtTdGFydCxcbiAgICAgICAgaXNPcGVuLFxuICAgICAgICBzZXRJc09wZW4sXG4gICAgICAgIHZpZXcsXG4gICAgICAgIHNldFZpZXcsXG4gICAgICAgIHZpZXdEYXRlLFxuICAgICAgICBzZXRWaWV3RGF0ZSxcbiAgICAgICAgc2VsZWN0ZWREYXRlLFxuICAgICAgICBzZXRTZWxlY3RlZERhdGUsXG4gICAgICAgIGNoYW5nZVNlbGVjdGVkRGF0ZVxuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbXG4gICAgICAgICFpbmxpbmUgJiYgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBUZXh0SW5wdXQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGhlbWU6IHRoZW1lLnJvb3QuaW5wdXQsXG4gICAgICAgICAgICBpY29uOiBIaUNhbGVuZGFyLFxuICAgICAgICAgICAgcmVmOiBpbnB1dFJlZixcbiAgICAgICAgICAgIG9uRm9jdXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGF0ZSAmJiAhaXNEYXRlRXF1YWwodmlld0RhdGUsIHNlbGVjdGVkRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICBzZXRWaWV3RGF0ZShzZWxlY3RlZERhdGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNldElzT3Blbih0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWx1ZTogZGlzcGxheVZhbHVlLFxuICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGluaXRpYWxEYXRlID8gZ2V0Rm9ybWF0dGVkRGF0ZShsYW5ndWFnZSwgaW5pdGlhbERhdGUpIDogbGFiZWwsXG4gICAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgKGlzT3BlbiB8fCBpbmxpbmUpICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyByZWY6IGRhdGVwaWNrZXJSZWYsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5wb3B1cC5yb290LmJhc2UsIGlubGluZSAmJiB0aGVtZS5wb3B1cC5yb290LmlubGluZSksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucG9wdXAucm9vdC5pbm5lciwgY2hpbGRyZW46IFtcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucG9wdXAuaGVhZGVyLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICB0aXRsZSAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5wb3B1cC5oZWFkZXIudGl0bGUsIGNoaWxkcmVuOiB0aXRsZSB9KSxcbiAgICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5wb3B1cC5oZWFkZXIuc2VsZWN0b3JzLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgICAgICAgICB0aGVtZS5wb3B1cC5oZWFkZXIuc2VsZWN0b3JzLmJ1dHRvbi5iYXNlLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZS5wb3B1cC5oZWFkZXIuc2VsZWN0b3JzLmJ1dHRvbi5wcmV2XG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4gc2V0Vmlld0RhdGUoZ2V0Vmlld0RhdGVQYWdlKHZpZXcsIHZpZXdEYXRlLCAtMSkpLFxuICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSGlBcnJvd0xlZnQsIHt9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLnBvcHVwLmhlYWRlci5zZWxlY3RvcnMuYnV0dG9uLmJhc2UsXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLnBvcHVwLmhlYWRlci5zZWxlY3RvcnMuYnV0dG9uLnZpZXdcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBzZXRWaWV3KGdldE5leHRWaWV3KCkpLFxuICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IGdldFZpZXdUaXRsZSgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUucG9wdXAuaGVhZGVyLnNlbGVjdG9ycy5idXR0b24uYmFzZSxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUucG9wdXAuaGVhZGVyLnNlbGVjdG9ycy5idXR0b24ubmV4dFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldFZpZXdEYXRlKGdldFZpZXdEYXRlUGFnZSh2aWV3LCB2aWV3RGF0ZSwgMSkpLFxuICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSGlBcnJvd1JpZ2h0LCB7fSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0gfSlcbiAgICAgICAgICBdIH0pLFxuICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnBvcHVwLnZpZXcuYmFzZSwgY2hpbGRyZW46IHJlbmRlclZpZXcodmlldykgfSksXG4gICAgICAgICAgKHNob3dDbGVhckJ1dHRvbiB8fCBzaG93VG9kYXlCdXR0b24pICYmIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5wb3B1cC5mb290ZXIuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHNob3dUb2RheUJ1dHRvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucG9wdXAuZm9vdGVyLmJ1dHRvbi5iYXNlLCB0aGVtZS5wb3B1cC5mb290ZXIuYnV0dG9uLnRvZGF5KSxcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgY2hhbmdlU2VsZWN0ZWREYXRlKHRvZGF5LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgIHNldFZpZXdEYXRlKHRvZGF5KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBsYWJlbFRvZGF5QnV0dG9uXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzaG93Q2xlYXJCdXR0b24gJiYgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnBvcHVwLmZvb3Rlci5idXR0b24uYmFzZSwgdGhlbWUucG9wdXAuZm9vdGVyLmJ1dHRvbi5jbGVhciksXG4gICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY2hhbmdlU2VsZWN0ZWREYXRlKG51bGwsIHRydWUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IGxhYmVsQ2xlYXJCdXR0b25cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0gfSlcbiAgICAgICAgXSB9KSB9KVxuICAgICAgXSB9KVxuICAgIH1cbiAgKTtcbn07XG5jb25zdCBEYXRlcGlja2VyID0gZm9yd2FyZFJlZihEYXRlcGlja2VyUmVuZGVyKTtcbkRhdGVwaWNrZXIuZGlzcGxheU5hbWUgPSBcIkRhdGVwaWNrZXJcIjtcblxuZXhwb3J0IHsgRGF0ZXBpY2tlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGF0ZXBpY2tlci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBEcmF3ZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlRHJhd2VyQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRHJhd2VyQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZURyYXdlckNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBEcmF3ZXJDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgRHJhd2VyQ29udGV4dCwgdXNlRHJhd2VyQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJhd2VyQ29udGV4dC5tanMubWFwXG4iLCIvLyBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURURcbmltcG9ydCB7IEdlbkljb24gfSBmcm9tICcuLi9saWIvaW5kZXgubWpzJztcbmV4cG9ydCBmdW5jdGlvbiBNZDEyMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTVINS41di00LjVINFY5aDN2NnptNi41LTEuNWgtM3YtMWgyYy41NSAwIDEtLjQ1IDEtMVYxMGMwLS41NS0uNDUtMS0xLTFIOXYxLjVoM3YxaC0yYy0uNTUgMC0xIC40NS0xIDFWMTVoNC41di0xLjV6bTYgLjV2LTRjMC0uNTUtLjQ1LTEtMS0xSDE1djEuNWgzdjFoLTJ2MWgydjFoLTNWMTVoMy41Yy41NSAwIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kM2RSb3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNTIgMjEuNDhBMTAuNDg3IDEwLjQ4NyAwIDAgMSAxLjU1IDEzSC4wNUMuNTYgMTkuMTYgNS43MSAyNCAxMiAyNGwuNjYtLjAzLTMuODEtMy44MS0xLjMzIDEuMzJ6bS44OS02LjUyYy0uMTkgMC0uMzctLjAzLS41Mi0uMDhhMS4wNyAxLjA3IDAgMCAxLS40LS4yNGMtLjExLS4xLS4yLS4yMi0uMjYtLjM3LS4wNi0uMTQtLjA5LS4zLS4wOS0uNDdoLTEuM2MwIC4zNi4wNy42OC4yMS45NS4xNC4yNy4zMy41LjU2LjY5LjI0LjE4LjUxLjMyLjgyLjQxLjMuMS42Mi4xNS45Ni4xNS4zNyAwIC43Mi0uMDUgMS4wMy0uMTUuMzItLjEuNi0uMjUuODMtLjQ0cy40Mi0uNDMuNTUtLjcyYy4xMy0uMjkuMi0uNjEuMi0uOTcgMC0uMTktLjAyLS4zOC0uMDctLjU2YTEuNjcgMS42NyAwIDAgMC0uMjMtLjUxYy0uMS0uMTYtLjI0LS4zLS40LS40My0uMTctLjEzLS4zNy0uMjMtLjYxLS4zMWEyLjA5OCAyLjA5OCAwIDAgMCAuODktLjc1Yy4xLS4xNS4xNy0uMy4yMi0uNDYuMDUtLjE2LjA3LS4zMi4wNy0uNDggMC0uMzYtLjA2LS42OC0uMTgtLjk2YTEuNzggMS43OCAwIDAgMC0uNTEtLjY5Yy0uMi0uMTktLjQ3LS4zMy0uNzctLjQzQzkuMSA4LjA1IDguNzYgOCA4LjM5IDhjLS4zNiAwLS42OS4wNS0xIC4xNi0uMy4xMS0uNTcuMjYtLjc5LjQ1LS4yMS4xOS0uMzguNDEtLjUxLjY3LS4xMi4yNi0uMTguNTQtLjE4Ljg1aDEuM2MwLS4xNy4wMy0uMzIuMDktLjQ1cy4xNC0uMjUuMjUtLjM0Yy4xMS0uMDkuMjMtLjE3LjM4LS4yMi4xNS0uMDUuMy0uMDguNDgtLjA4LjQgMCAuNy4xLjg5LjMxLjE5LjIuMjkuNDkuMjkuODYgMCAuMTgtLjAzLjM0LS4wOC40OWEuODcuODcgMCAwIDEtLjI1LjM3Yy0uMTEuMS0uMjUuMTgtLjQxLjI0LS4xNi4wNi0uMzYuMDktLjU4LjA5SDcuNXYxLjAzaC43N2MuMjIgMCAuNDIuMDIuNi4wN3MuMzMuMTMuNDUuMjNjLjEyLjExLjIyLjI0LjI5LjQuMDcuMTYuMS4zNS4xLjU3IDAgLjQxLS4xMi43Mi0uMzUuOTMtLjIzLjIzLS41NS4zMy0uOTUuMzN6bTguNTUtNS45MmMtLjMyLS4zMy0uNy0uNTktMS4xNC0uNzctLjQzLS4xOC0uOTItLjI3LTEuNDYtLjI3SDEydjhoMi4zYy41NSAwIDEuMDYtLjA5IDEuNTEtLjI3LjQ1LS4xOC44NC0uNDMgMS4xNi0uNzYuMzItLjMzLjU3LS43My43NC0xLjE5LjE3LS40Ny4yNi0uOTkuMjYtMS41N3YtLjRjMC0uNTgtLjA5LTEuMS0uMjYtMS41Ny0uMTgtLjQ3LS40My0uODctLjc1LTEuMnptLS4zOSAzLjE2YzAgLjQyLS4wNS43OS0uMTQgMS4xMy0uMS4zMy0uMjQuNjItLjQzLjg1LS4xOS4yMy0uNDMuNDEtLjcxLjUzLS4yOS4xMi0uNjIuMTgtLjk5LjE4aC0uOTFWOS4xMmguOTdjLjcyIDAgMS4yNy4yMyAxLjY0LjY5LjM4LjQ2LjU3IDEuMTIuNTcgMS45OXYuNHpNMTIgMGwtLjY2LjAzIDMuODEgMy44MSAxLjMzLTEuMzNjMy4yNyAxLjU1IDUuNjEgNC43MiA1Ljk2IDguNDhoMS41QzIzLjQ0IDQuODQgMTguMjkgMCAxMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBYmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMWgtMS41di0uNWgtMnYzaDJWMTNIMjF2MWMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxek04IDEwdjVINi41di0xLjVoLTJWMTVIM3YtNWMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXptLTEuNS41aC0yVjEyaDJ2LTEuNXptNyAxLjVjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxaC00VjloNGMuNTUgMCAxIC40NSAxIDF2MWMwIC41NS0uNDUgMS0xIDF6TTExIDEwLjV2Ljc1aDJ2LS43NWgtMnptMiAyLjI1aC0ydi43NWgydi0uNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY2Vzc2liaWxpdHlOZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41IDZjLTIuNjEuNy01LjY3IDEtOC41IDFzLTUuODktLjMtOC41LTFMMyA4YzEuODYuNSA0IC44MyA2IDF2MTNoMnYtNmgydjZoMlY5YzItLjE3IDQuMTQtLjUgNi0xbC0uNS0yek0xMiA2YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjZXNzaWJpbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem05IDdoLTZ2MTNoLTJ2LTZoLTJ2Nkg5VjlIM1Y3aDE4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY2Vzc2libGVGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxN1wiLFwiY3lcIjpcIjQuNTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTdoLTJjMCAxLjY1LTEuMzUgMy0zIDNzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM3YtMmMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01em0zLTMuNWgtMS44NmwxLjY3LTMuNjdDMTcuNDIgOC41IDE2LjQ0IDcgMTQuOTYgN2gtNS4yYy0uODEgMC0xLjU0LjQ3LTEuODcgMS4yTDcuMjIgMTBsMS45Mi41M0w5Ljc5IDlIMTJsLTEuODMgNC4xYy0uNiAxLjMzLjM5IDIuOSAxLjg1IDIuOUgxN3Y1aDJ2LTUuNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjZXNzaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzdi0yYy0xLjU0LjAyLTMuMDktLjc1LTQuMDctMS44M2wtMS4yOS0xLjQzYy0uMTctLjE5LS4zOC0uMzQtLjYxLS40NS0uMDEgMC0uMDEtLjAxLS4wMi0uMDFIMTNjLS4zNS0uMi0uNzUtLjMtMS4xOS0uMjZDMTAuNzYgNy4xMSAxMCA4LjA0IDEwIDkuMDlWMTVjMCAxLjEuOSAyIDIgMmg1djVoMnYtNS41YzAtMS4xLS45LTItMi0yaC0zdi0zLjQ1YzEuMjkgMS4wNyAzLjI1IDEuOTQgNSAxLjk1em0tNi4xNyA1Yy0uNDEgMS4xNi0xLjUyIDItMi44MyAyLTEuNjYgMC0zLTEuMzQtMy0zIDAtMS4zMS44NC0yLjQxIDItMi44M1YxMi4xYTUgNSAwIDEgMCA1LjkgNS45aC0yLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2NvdW50QmFsYW5jZVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE4djFjMCAxLjEtLjkgMi0yIDJINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgxNGMxLjEgMCAyIC45IDIgMnYxaC05YTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDl6bS05LTJoMTBWOEgxMnY4em00LTIuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY291bnRCYWxhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMGgzdjdINHpNMTAuNSAxMGgzdjdoLTN6TTIgMTloMjB2M0gyek0xNyAxMGgzdjdoLTN6TTEyIDEgMiA2djJoMjBWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjb3VudEJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAzYzEuOTMgMCAzLjUgMS41NyAzLjUgMy41UzEzLjkzIDEzIDEyIDEzcy0zLjUtMS41Ny0zLjUtMy41UzEwLjA3IDYgMTIgNnptNyAxM0g1di0uMjNjMC0uNjIuMjgtMS4yLjc2LTEuNThDNy40NyAxNS44MiA5LjY0IDE1IDEyIDE1czQuNTMuODIgNi4yNCAyLjE5Yy40OC4zOC43Ni45Ny43NiAxLjU4VjE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2NvdW50Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCA0YzEuOTMgMCAzLjUgMS41NyAzLjUgMy41UzEzLjkzIDEzIDEyIDEzcy0zLjUtMS41Ny0zLjUtMy41UzEwLjA3IDYgMTIgNnptMCAxNGMtMi4wMyAwLTQuNDMtLjgyLTYuMTQtMi44OGE5Ljk0NyA5Ljk0NyAwIDAgMSAxMi4yOCAwQzE2LjQzIDE5LjE4IDE0LjAzIDIwIDEyIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTB2LTJINHYtNmgxOFY2YzAtMS4xMS0uODktMi0yLTJ6bTAgNEg0VjZoMTZ2MnptNCA5djJoLTN2M2gtMnYtM2gtM3YtMmgzdi0zaDJ2M2gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRIb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTFjLjcgMCAxLjM3LjEgMiAuMjlWOWwtOC02LTggNnYxMmg3LjY4QTYuOTk1IDYuOTk1IDAgMCAxIDE4IDExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTMgNS41aC0yLjVWMjFoLTF2LTIuNUgxNXYtMWgyLjVWMTVoMXYyLjVIMjF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkU2hvcHBpbmdDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMTguMzEgNi0yLjc2IDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDloMlY2aDNWNGgtM1YxaC0ydjNIOHYyaDN2M3ptLTQgOWMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnptMTAgMGMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6bS05LjgzLTMuMjUuMDMtLjEyLjktMS42M2g3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjg2LTcuMDFMMTkuNDIgNGgtLjAxbC0xLjEgMi0yLjc2IDVIOC41M2wtLjEzLS4yN0w2LjE2IDZsLS45NS0yLS45NC0ySDF2MmgybDMuNiA3LjU5LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmgxMnYtMkg3LjQyYy0uMTMgMC0uMjUtLjExLS4yNS0uMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFRhc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA1LjE4IDEwLjU5IDE2LjZsLTQuMjQtNC4yNCAxLjQxLTEuNDEgMi44MyAyLjgzIDEwLTEwTDIyIDUuMTh6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04YzEuNTcgMCAzLjA0LjQ2IDQuMjggMS4yNWwxLjQ1LTEuNDVBMTAuMDIgMTAuMDIgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMGMxLjczIDAgMy4zNi0uNDQgNC43OC0xLjIybC0xLjUtMS41Yy0xIC40Ni0yLjExLjcyLTMuMjguNzJ6bTctNWgtM3YyaDN2M2gydi0zaDN2LTJoLTN2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkVG9Ecml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDIxdi0zaDN2LTJoLTN2LTNoLTJ2M2gtM3YyaDN2M2gyem0tNC45Ny41SDUuNjZjLS43MiAwLTEuMzgtLjM4LTEuNzMtMWwtMi4zNi00LjFjLS4zNi0uNjItLjM1LTEuMzguMDEtMkw3LjkyIDMuNDljLjM2LS42MSAxLjAyLS45OSAxLjczLS45OWg0LjdjLjcxIDAgMS4zNy4zOCAxLjczLjk5bDQuNDggNy43MWE2LjE3NiA2LjE3NiAwIDAgMC0yLjQtLjE0TDE0LjM1IDQuNWgtNC43TDMuMzEgMTUuNDFsMi4zNSA0LjA5aDcuODljLjM1Ljc3Ljg1IDEuNDUgMS40OCAyek0xMy4zNCAxNWMtLjIyLjYzLS4zNCAxLjMtLjM0IDJINy4yNWwtLjczLTEuMjcgNC41OC03Ljk4aDEuOGwyLjUzIDQuNDJjLS41Ni40Mi0xLjA1LjkzLTEuNDQgMS41MWwtMi0zLjQ5TDkuMjUgMTVoNC4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkY2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA1djJoLTN2M2gtMlY3aC0zVjVoM1YyaDJ2M2gzem0tMyAxNEg1VjVoNlYzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTZoLTJ2NnptLTQtNnY0aDJ2LTRoLTJ6bS00IDRoMlY5aC0ydjh6bS0yIDB2LTZIN3Y2aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkbWluUGFuZWxTZXR0aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExYy4zNCAwIC42Ny4wNCAxIC4wOVY2LjI3TDEwLjUgMyAzIDYuMjd2NC45MWMwIDQuNTQgMy4yIDguNzkgNy41IDkuODIuNTUtLjEzIDEuMDgtLjMyIDEuNi0uNTUtLjY5LS45OC0xLjEtMi4xNy0xLjEtMy40NSAwLTMuMzEgMi42OS02IDYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTNjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDEuMzhjLjYyIDAgMS4xMi41MSAxLjEyIDEuMTJzLS41MSAxLjEyLTEuMTIgMS4xMi0xLjEyLS41MS0xLjEyLTEuMTIuNS0xLjEyIDEuMTItMS4xMnptMCA1LjM3Yy0uOTMgMC0xLjc0LS40Ni0yLjI0LTEuMTcuMDUtLjcyIDEuNTEtMS4wOCAyLjI0LTEuMDhzMi4xOS4zNiAyLjI0IDEuMDhjLS41LjcxLTEuMzEgMS4xNy0yLjI0IDEuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkc0NsaWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNzEgMTcuOTlBNS45OTMgNS45OTMgMCAwIDEgNiAxMmMwLTMuMzEgMi42OS02IDYtNiAzLjIyIDAgNS44NCAyLjUzIDUuOTkgNS43MWwtMi4xLS42M2EzLjk5OSAzLjk5OSAwIDEgMC00LjgxIDQuODFsLjYzIDIuMXpNMjIgMTJjMCAuMy0uMDEuNi0uMDQuOWwtMS45Ny0uNTljLjAxLS4xLjAxLS4yMS4wMS0uMzEgMC00LjQyLTMuNTgtOC04LThzLTggMy41OC04IDggMy41OCA4IDggOGMuMSAwIC4yMSAwIC4zMS0uMDFsLjU5IDEuOTdjLS4zLjAzLS42LjA0LS45LjA0LTUuNTIgMC0xMC00LjQ4LTEwLTEwUzYuNDggMiAxMiAyczEwIDQuNDggMTAgMTB6bS0zLjc3IDQuMjZMMjIgMTVsLTEwLTMgMyAxMCAxLjI2LTMuNzcgNC4yNyA0LjI3IDEuOTgtMS45OC00LjI4LTQuMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsYXJtQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44OCAzLjM5IDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0yMiA1LjcybC00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE5IDkgMCAwIDAgMC0xOHptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bTEtMTFoLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGFybU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjMy44NyAwIDcgMy4xMyA3IDcgMCAuODQtLjE2IDEuNjUtLjQzIDIuNGwxLjUyIDEuNTJjLjU4LTEuMTkuOTEtMi41MS45MS0zLjkyYTkgOSAwIDAgMC05LTljLTEuNDEgMC0yLjczLjMzLTMuOTIuOTFMOS42IDYuNDNDMTAuMzUgNi4xNiAxMS4xNiA2IDEyIDZ6bTEwLS4yOC00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNMi45MiAyLjI5IDEuNjUgMy41NyAyLjk4IDQuOWwtMS4xMS45MyAxLjQyIDEuNDIgMS4xMS0uOTQuOC44QTguOTY0IDguOTY0IDAgMCAwIDMgMTNjMCA0Ljk3IDQuMDIgOSA5IDkgMi4yNSAwIDQuMzEtLjgzIDUuODktMi4ybDIuMiAyLjIgMS4yNy0xLjI3TDMuODkgMy4yN2wtLjk3LS45OHptMTMuNTUgMTYuMUMxNS4yNiAxOS4zOSAxMy43IDIwIDEyIDIwYy0zLjg3IDAtNy0zLjEzLTctNyAwLTEuNy42MS0zLjI2IDEuNjEtNC40N2w5Ljg2IDkuODZ6TTguMDIgMy4yOCA2LjYgMS44NmwtLjg2LjcxIDEuNDIgMS40Mi44Ni0uNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsYXJtT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA1LjcyLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMTh6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0tMS40Ni01LjQ3TDguNDEgMTIuNGwtMS4wNiAxLjA2IDMuMTggMy4xOCA2LTYtMS4wNi0xLjA2LTQuOTMgNC45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxhcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA1LjcyLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyLjUgOEgxMXY2bDQuNzUgMi44NS43NS0xLjIzLTQtMi4zN1Y4ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxsSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2N2MwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgNmgtNGMwIDEuNjItMS4zOCAzLTMgM3MtMy0xLjM4LTMtM0g1VjVoMTR2NHptLTQgN2g2djNjMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJ2LTNoNmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGxPdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjIxIDQuMTYgNCA0di00em00IDEyLTQgNGg0em0tMTIgNC00LTR2NHptLTQtMTIgNC00aC00em0xMi45NS0uOTVjLTIuNzMtMi43My03LjE3LTIuNzMtOS45IDBzLTIuNzMgNy4xNyAwIDkuOSA3LjE3IDIuNzMgOS45IDAgMi43My03LjE2IDAtOS45em0tMS4xIDguOGMtMi4xMyAyLjEzLTUuNTcgMi4xMy03LjcgMHMtMi4xMy01LjU3IDAtNy43IDUuNTctMi4xMyA3LjcgMCAyLjEzIDUuNTcgMCA3Ljd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS4yMS4xNmgyNHYyNGgtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFuYWx5dGljcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTVoMnY1em00IDBoLTJ2LTNoMnYzem0wLTVoLTJ2LTJoMnYyem00IDVoLTJWN2gydjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbmNob3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyAxNSAxLjU1IDEuNTVjLS45NiAxLjY5LTMuMzMgMy4wNC01LjU1IDMuMzdWMTFoM1Y5aC0zVjcuODJDMTQuMTYgNy40IDE1IDYuMyAxNSA1YzAtMS42NS0xLjM1LTMtMy0zUzkgMy4zNSA5IDVjMCAxLjMuODQgMi40IDIgMi44MlY5SDh2MmgzdjguOTJjLTIuMjItLjMzLTQuNTktMS42OC01LjU1LTMuMzdMNyAxNWwtNC0zdjNjMCAzLjg4IDQuOTIgNyA5IDdzOS0zLjEyIDktN3YtM2wtNCAzek0xMiA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFuZHJvaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjYgOS40OCAxLjg0LTMuMThjLjE2LS4zMS4wNC0uNjktLjI2LS44NWEuNjM3LjYzNyAwIDAgMC0uODMuMjJsLTEuODggMy4yNGExMS40NjMgMTEuNDYzIDAgMCAwLTguOTQgMEw1LjY1IDUuNjdhLjY0My42NDMgMCAwIDAtLjg3LS4yYy0uMjguMTgtLjM3LjU0LS4yMi44M0w2LjQgOS40OEExMC43OCAxMC43OCAwIDAgMCAxIDE4aDIyYTEwLjc4IDEwLjc4IDAgMCAwLTUuNC04LjUyek03IDE1LjI1YTEuMjUgMS4yNSAwIDEgMSAwLTIuNSAxLjI1IDEuMjUgMCAwIDEgMCAyLjV6bTEwIDBhMS4yNSAxLjI1IDAgMSAxIDAtMi41IDEuMjUgMS4yNSAwIDAgMSAwIDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQW5ub3VuY2VtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDloLTJWNWgydjZ6bTAgNGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDEyLTIgMi0yLTIgMi0yIDIgMnptLTItNiAyLjEyIDIuMTIgMi41LTIuNUwxMiAxIDcuMzggNS42MmwyLjUgMi41TDEyIDZ6bS02IDYgMi4xMi0yLjEyLTIuNS0yLjVMMSAxMmw0LjYyIDQuNjIgMi41LTIuNUw2IDEyem0xMiAwLTIuMTIgMi4xMiAyLjUgMi41TDIzIDEybC00LjYyLTQuNjItMi41IDIuNUwxOCAxMnptLTYgNi0yLjEyLTIuMTItMi41IDIuNUwxMiAyM2w0LjYyLTQuNjItMi41LTIuNUwxMiAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXBwQmxvY2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptLTIuNSA0QTIuNSAyLjUgMCAwIDEgMTggOS41Yy40MiAwIC44LjExIDEuMTUuMjlsLTMuMzYgMy4zNmMtLjE4LS4zNS0uMjktLjczLS4yOS0xLjE1em0yLjUgMi41Yy0uNDIgMC0uOC0uMTEtMS4xNS0uMjlsMy4zNi0zLjM2Yy4xOC4zNS4yOS43My4yOSAxLjE1YTIuNSAyLjUgMCAwIDEtMi41IDIuNXpNMTcgMThIN1Y2aDEwdjFoMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXBwU2hvcnRjdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxOEg3VjZoMTB2MWgyVjNjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNGgtMnYxek0yMC4zOCA5LjYyIDIxIDExbC42Mi0xLjM4TDIzIDlsLTEuMzgtLjYyTDIxIDdsLS42MiAxLjM4TDE5IDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDgtMS4yNSAyLjc1TDEyIDEybDIuNzUgMS4yNUwxNiAxNmwxLjI1LTIuNzVMMjAgMTJsLTIuNzUtMS4yNXpNMjEgMTNsLS42MiAxLjM4TDE5IDE1bDEuMzguNjJMMjEgMTdsLjYyLTEuMzhMMjMgMTVsLTEuMzgtLjYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0NpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4cy0zLjU5IDgtOCA4LTgtMy41OS04LTggMy41OS04IDgtOG0wLTJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTBWOGgtMnY0SDhsNCA0IDQtNGgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMHMxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMiAyIDYuNDggMiAxMnptMTAtMWg0djJoLTR2M2wtNC00IDQtNHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0NpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTBTMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwem0tMTAgMUg4di0yaDRWOGw0IDQtNCA0di0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0NpcmNsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjBjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4bTAgMmM1LjUyIDAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMHptLTEtMTB2NGgydi00aDNsLTQtNC00IDRoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dPdXR3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2djJoOC41OUw1IDE3LjU5IDYuNDEgMTkgMTYgOS40MVYxOGgyVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93UmlnaHRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4wMSAxMUg0djJoMTIuMDF2M0wyMCAxMmwtMy45OS00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnRpY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01IDE0SDd2LTJoN3Yyem0zLTRIN3YtMmgxMHYyem0wLTRIN1Y3aDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzcGVjdFJhdGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoLTJ2M2gtM3YyaDV2LTV6TTcgOWgzVjdINXY1aDJWOXptMTQtNkgzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3Nlc3NtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMTdIN3YtN2gydjd6bTQgMGgtMlY3aDJ2MTB6bTQgMGgtMnYtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnRBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTMgNS41aC0yLjVWMjFoLTF2LTIuNUgxNXYtMWgyLjVWMTVoMXYyLjVIMjF2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNjkgMTVjLjM2LS43NS44NC0xLjQzIDEuNDMtMkg3di0yaDExYzEuMDcgMCAyLjA5LjI1IDMgLjY5VjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNi42OWMtLjQ0LS45MS0uNjktMS45My0uNjktMyAwLS4zNC4wMy0uNjcuMDgtMUg3di0yaDQuNjl6TTEyIDIuNzVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek03IDdoMTB2Mkg3Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnRJbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMCA0YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptNiAxMkg2di0xLjRjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xVjE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3NpZ25tZW50TGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTYgMTVoLTJ2LTJoMnYyem0wLTRoLTJWOGgydjZ6bS0xLTljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzaWdubWVudFJldHVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem00IDEyaC00djNsLTUtNSA1LTV2M2g0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnRSZXR1cm5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0wIDE1LTUtNWgzVjloNHY0aDNsLTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzaWdubWVudFR1cm5lZEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS0yIDE0LTQtNCAxLjQxLTEuNDFMMTAgMTQuMTdsNi41OS02LjU5TDE4IDlsLTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzaWdubWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0yIDE0SDd2LTJoN3Yyem0zLTRIN3YtMmgxMHYyem0wLTRIN1Y3aDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc3VyZWRXb3JrbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTBoMnY3SDV6TTExIDEwaDJ2N2gtMnpNMjIgNiAxMiAxIDIgNnYyaDIwek0yIDE5djJoMTIuNGMtLjIxLS42NC0uMzItMS4zMS0uMzYtMkgyek0xOSAxMi4yNlYxMGgtMnYzLjI2ek0yMCAxNGwtNCAydjIuNTVjMCAyLjUyIDEuNzEgNC44OCA0IDUuNDUgMi4yOS0uNTcgNC0yLjkzIDQtNS40NVYxNmwtNC0yem0tLjcyIDctMi4wMy0yLjAzIDEuMDYtMS4wNi45Ny45NyAyLjQxLTIuMzggMS4wNiAxLjA2TDE5LjI4IDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvcmVuZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2djNsNC00LTQtNHYzYy00LjQyIDAtOCAzLjU4LTggOCAwIDEuNTcuNDYgMy4wMyAxLjI0IDQuMjZMNi43IDE0LjhBNS44NyA1Ljg3IDAgMCAxIDYgMTJjMC0zLjMxIDIuNjktNiA2LTZ6bTYuNzYgMS43NEwxNy4zIDkuMmMuNDQuODQuNyAxLjc5LjcgMi44IDAgMy4zMS0yLjY5IDYtNiA2di0zbC00IDQgNCA0di0zYzQuNDIgMCA4LTMuNTggOC04IDAtMS41Ny0uNDYtMy4wMy0xLjI0LTQuMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhY2t1cFRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNnYxNEg2djJoMTRjMS4xIDAgMi0uOSAyLTJWNmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgMTZINHYtNWg1djV6bTcgMGgtNXYtNWg1djV6bTAtN0g0VjRoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFja3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNCAxM3Y0aC00di00SDdsNS01IDUgNWgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFsYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDcuODNjLjg1LS4zIDEuNTMtLjk4IDEuODMtMS44M0gxOGwtMyA3YzAgMS42NiAxLjU3IDMgMy41IDNzMy41LTEuMzQgMy41LTNsLTMtN2gyVjRoLTYuMTdjLS40MS0xLjE3LTEuNTItMi0yLjgzLTJzLTIuNDIuODMtMi44MyAySDN2MmgybC0zIDdjMCAxLjY2IDEuNTcgMyAzLjUgM1M5IDE0LjY2IDkgMTNMNiA2aDMuMTdjLjMuODUuOTggMS41MyAxLjgzIDEuODNWMTlIMnYyaDIwdi0yaC05VjcuODN6TTIwLjM3IDEzaC0zLjc0bDEuODctNC4zNkwyMC4zNyAxM3ptLTEzIDBIMy42M0w1LjUgOC42NCA3LjM3IDEzek0xMiA2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhcmNvZGVSZWFkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA4Ljc1aC00di0xLjVoNHYxLjV6bS0uMzgtNC4zOEwyMiAzbC0zLjYyIDEuNjNMMTkgNmwzLjYyLTEuNjN6TTE5IDEwbC0uNjIgMS4zN0wyMiAxM2wuNjItMS4zN0wxOSAxMHptLTggM2MuNTUgMCAxIC40NSAxIDF2MmMwIC41NS0uNDUgMS0xIDFIOS42NGwtLjc0IDIuNzhBMi45OTkgMi45OTkgMCAwIDEgNiAyMmEyLjk5NSAyLjk5NSAwIDAgMS0yLjktMy43N2wxLjgyLTYuOEE0LjAyOCA0LjAyOCAwIDAgMSAzIDhjMC0yLjIxIDEuNzktNCA0LTRoOGMxLjQ5IDAgMi40NSAxLjU2IDEuNzkgMi44OWwtMiA0QzE0LjQ1IDExLjU3IDEzLjc1IDEyIDEzIDEyaC0yLjAybC0uMjcgMUgxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0Y2hQcmVkaWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOEg3Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNCAxMi41aC0yVjE5aDJ2MS41em0wLTIuNWgtMmMwLTEuNS0yLjUtMy0yLjUtNSAwLTEuOTMgMS41Ny0zLjUgMy41LTMuNXMzLjUgMS41NyAzLjUgMy41YzAgMi0yLjUgMy41LTIuNSA1em01LTExLjVINkM2IDUuNjcgNi42NyA1IDcuNSA1aDljLjgzIDAgMS41LjY3IDEuNSAxLjV6bS0xLTNIN0M3IDIuNjcgNy42NyAyIDguNSAyaDdjLjgzIDAgMS41LjY3IDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvb2tPbmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNyAxOFY2aDEwdjEySDd6bTktN1Y5LjE0QzE2IDguNTEgMTUuNTUgOCAxNSA4SDljLS41NSAwLTEgLjUxLTEgMS4xNHYxLjk2Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxdjEuNzZjMCAuNjMuNDUgMS4xNCAxIDEuMTRoNmMuNTUgMCAxLS41MSAxLTEuMTRWMTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTF6bS0zLjUgMy41aC0xdi0xaDF2MXptMC0yaC0xdi0xaDF2MXptMC0yaC0xdi0xaDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek02IDRoNXY4bC0yLjUtMS41TDYgMTJWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9va21hcmtBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA3aC0ydjJoLTJWN2gtMlY1aDJWM2gydjJoMnYyem0tMiAxNC03LTMtNyAzVjVjMC0xLjEuOS0yIDItMmg3YTUuMDAyIDUuMDAyIDAgMCAwIDUgNy45VjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb29rbWFya0FkZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkgMjEtNy0zLTcgM1Y1YzAtMS4xLjktMiAyLTJoN2E1LjAwMiA1LjAwMiAwIDAgMCA1IDcuOVYyMXpNMTcuODMgOSAxNSA2LjE3bDEuNDEtMS40MSAxLjQxIDEuNDEgMy41NC0zLjU0IDEuNDEgMS40MUwxNy44MyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb29rbWFya0JvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnptMCAxNS01LTIuMThMNyAxOFY1aDEwdjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb29rbWFya1JlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDdoLTZWNWg2djJ6bS0yIDMuOUE1LjAwMiA1LjAwMiAwIDAgMSAxNCAzSDdjLTEuMSAwLTIgLjktMiAydjE2bDctMyA3IDNWMTAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAyMWw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvb2ttYXJrcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkgMTggMiAxVjNjMC0xLjEtLjktMi0yLTJIOC45OUM3Ljg5IDEgNyAxLjkgNyAzaDEwYzEuMSAwIDIgLjkgMiAydjEzek0xNSA1SDVjLTEuMSAwLTIgLjktMiAydjE2bDctMyA3IDNWN2MwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJvd3NlR2FsbGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgM2E5IDkgMCAxIDAgLjAwMSAxOC4wMDFBOSA5IDAgMCAwIDkgM3ptMi43OSAxMy4yMUw4IDEyLjQxVjdoMnY0LjU5bDMuMjEgMy4yMS0xLjQyIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljk5IDMuNTJ2Mi4xNkE2Ljk5IDYuOTkgMCAwIDEgMjIgMTJjMCAyLjc5LTEuNjQgNS4yLTQuMDEgNi4zMnYyLjE2QzIxLjQ4IDE5LjI0IDI0IDE1LjkxIDI0IDEycy0yLjUyLTcuMjQtNi4wMS04LjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCdWdSZXBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4aC0yLjgxYTUuOTg1IDUuOTg1IDAgMCAwLTEuODItMS45NkwxNyA0LjQxIDE1LjU5IDNsLTIuMTcgMi4xN0MxMi45NiA1LjA2IDEyLjQ5IDUgMTIgNWMtLjQ5IDAtLjk2LjA2LTEuNDEuMTdMOC40MSAzIDcgNC40MWwxLjYyIDEuNjNDNy44OCA2LjU1IDcuMjYgNy4yMiA2LjgxIDhINHYyaDIuMDljLS4wNS4zMy0uMDkuNjYtLjA5IDF2MUg0djJoMnYxYzAgLjM0LjA0LjY3LjA5IDFINHYyaDIuODFjMS4wNCAxLjc5IDIuOTcgMyA1LjE5IDNzNC4xNS0xLjIxIDUuMTktM0gyMHYtMmgtMi4wOWMuMDUtLjMzLjA5LS42Ni4wOS0xdi0xaDJ2LTJoLTJ2LTFjMC0uMzQtLjA0LS42Ny0uMDktMUgyMFY4em0tNiA4aC00di0yaDR2MnptMC00aC00di0yaDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVpbGRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNC45IDEzLjQ5LTEuNCAxLjRjLS4yLjItLjUxLjItLjcxIDBsLTMuNDEtMy40MWMtMS4yMi40My0yLjY0LjE3LTMuNjItLjgxYTMuNDY4IDMuNDY4IDAgMCAxLS41OS00LjFsMi4zNSAyLjM1IDEuNDEtMS40MS0yLjM1LTIuMzRjMS4zMi0uNzEgMi45OS0uNTIgNC4xLjU5Ljk4Ljk4IDEuMjQgMi40LjgxIDMuNjJsMy40MSAzLjQxYy4xOS4xOS4xOS41MSAwIC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCdWlsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMi43IDE5LTkuMS05LjFjLjktMi4zLjQtNS0xLjUtNi45LTItMi01LTIuNC03LjQtMS4zTDkgNiA2IDkgMS42IDQuN0MuNCA3LjEuOSAxMC4xIDIuOSAxMi4xYzEuOSAxLjkgNC42IDIuNCA2LjkgMS41bDkuMSA5LjFjLjQuNCAxIC40IDEuNCAwbDIuMy0yLjNjLjUtLjQuNS0xLjEuMS0xLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhY2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDgtNCA0aDNjMCAzLjMxLTIuNjkgNi02IDZhNS44NyA1Ljg3IDAgMCAxLTIuOC0uN2wtMS40NiAxLjQ2QTcuOTMgNy45MyAwIDAgMCAxMiAyMGM0LjQyIDAgOC0zLjU4IDgtOGgzbC00LTR6TTYgMTJjMC0zLjMxIDIuNjktNiA2LTYgMS4wMSAwIDEuOTcuMjUgMi44LjdsMS40Ni0xLjQ2QTcuOTMgNy45MyAwIDAgMCAxMiA0Yy00LjQyIDAtOCAzLjU4LTggOEgxbDQgNCA0LTRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsZW5kYXJNb250aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVYxMGgxNHYxMHpNOSAxNEg3di0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptLTggNEg3di0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptNCAwaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsZW5kYXJUb2RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNoLTFWMWgtMnYySDdWMUg1djJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE4SDRWOGgxNnYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsZW5kYXJWaWV3RGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxN2gxOHYySDN6bTAtN2gxOHY1SDN6bTAtNGgxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyVmlld01vbnRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNOCAxMUg0VjZoNHY1em02IDBoLTRWNmg0djV6bTYgMGgtNFY2aDR2NXpNOCAxOEg0di01aDR2NXptNiAwaC00di01aDR2NXptNiAwaC00di01aDR2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsZW5kYXJWaWV3V2VlayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS03IDJoMi41djEySDEzVjZ6bS0yIDEySDguNVY2SDExdjEyek00IDZoMi41djEySDRWNnptMTYgMTJoLTIuNVY2SDIwdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1lcmFFbmhhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDMgNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAzSDl6bTMgMTVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNyAxLjI1LTIuNzVMMTYgMTNsLTIuNzUtMS4yNUwxMiA5bC0xLjI1IDIuNzVMOCAxM2wyLjc1IDEuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbmNlbFNjaGVkdWxlU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgOWMtLjQyIDAtLjgzLjA0LTEuMjQuMTFMMS4wMSAzIDEgMTBsOSAyLTkgMiAuMDEgNyA4LjA3LTMuNDZDOS41OSAyMS4xOSAxMi43MSAyNCAxNi41IDI0YzQuMTQgMCA3LjUtMy4zNiA3LjUtNy41UzIwLjY0IDkgMTYuNSA5em0wIDEzYy0zLjAzIDAtNS41LTIuNDctNS41LTUuNXMyLjQ3LTUuNSA1LjUtNS41IDUuNSAyLjQ3IDUuNSA1LjUtMi40NyA1LjUtNS41IDUuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguMjcgMTQuMDMtMS43NyAxLjc2LTEuNzctMS43Ni0uNy43IDEuNzYgMS43Ny0xLjc2IDEuNzcuNy43IDEuNzctMS43NiAxLjc3IDEuNzYuNy0uNy0xLjc2LTEuNzcgMS43Ni0xLjc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXJkR2lmdGNhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTFhMi45OTYgMi45OTYgMCAwIDAtNS41LTEuNjVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FyZE1lbWJlcnNoaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTFjMCAxLjExLjg5IDIgMiAyaDR2NWw0LTIgNCAydi01aDRjMS4xMSAwIDItLjg5IDItMlY0YzAtMS4xMS0uODktMi0yLTJ6bTAgMTNINHYtMmgxNnYyem0wLTVINFY0aDE2djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhcmRUcmF2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC0zVjRjMC0xLjExLS44OS0yLTItMkg5Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6TTkgNGg2djJIOVY0em0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoM3YyaDJWOGg2djJoMlY4aDN2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hhbmdlSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNy43NyAxOC4zOSAxOEg1LjYxTDEyIDcuNzdNMTIgNCAyIDIwaDIwTDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrQ2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTkgNy41OCAxMCAxNC4xN2wtMy41OS0zLjU4TDUgMTJsNSA1IDgtOHpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTUtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaHJvbWVSZWFkZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0tNzQgMjloNDh2NDhoLTQ4VjI5ek0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMmg3djEuNWgtN3ptMC0yLjVoN1YxMWgtN3ptMCA1aDdWMTZoLTd6TTIxIDRIM2MtMS4xIDAtMiAuOS0yIDJ2MTNjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE1aC05VjZoOXYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2lyY2xlTm90aWZpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTYuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41aDNjMCAuODMtLjY3IDEuNS0xLjUgMS41em01LTIuNUg3di0xbDEtMXYtMi42MUM4IDkuMjcgOS4wMyA3LjQ3IDExIDd2LS41YzAtLjU3LjQzLTEgMS0xczEgLjQzIDEgMVY3YzEuOTcuNDcgMyAyLjI4IDMgNC4zOVYxNGwxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA0aDV2OGwtMi41LTEuNUw2IDEyVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3NlRnVsbHNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDMuNDEgMTYuNzEgOC43IDIwIDEyaC04VjRsMy4yOSAzLjI5TDIwLjU5IDIgMjIgMy40MXpNMy40MSAyMmw1LjI5LTUuMjlMMTIgMjB2LThINGwzLjI5IDMuMjlMMiAyMC41OSAzLjQxIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2RlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuMTcgMTItNC41OC00LjU5TDE2IDZsNiA2LTMuNTkgMy41OUwxNyAxNC4xNyAxOS4xNyAxMnpNMS4zOSA0LjIybDQuMTkgNC4xOUwyIDEybDYgNiAxLjQxLTEuNDFMNC44MyAxMiA3IDkuODNsMTIuNzggMTIuNzggMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNCAxNi42IDQuOCAxMmw0LjYtNC42TDggNmwtNiA2IDYgNiAxLjQtMS40em01LjIgMCA0LjYtNC42LTQuNi00LjZMMTYgNmw2IDYtNiA2LTEuNC0xLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbW1lbnRCYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgMTEtMi41LTEuNUwxNCAxM1Y1aDV2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tbWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuOSAxMWE1IDUgMCAwIDAtOS44IDBIMnYyaDUuMWE1IDUgMCAwIDAgOS44IDBIMjJ2LTJoLTUuMXpNMTIgMTVjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb21tdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEg1QzMuMzQgNCAyIDUuMzQgMiA3djhjMCAxLjY2IDEuMzQgMyAzIDNsLTEgMXYxaDFsMi0yLjAzTDkgMTh2LTVINFY1Ljk4TDEzIDZ2MmgyVjdjMC0xLjY2LTEuMzQtMy0zLTN6TTUgMTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTUuNTctNC4zNGMtLjE0LS40LS41Mi0uNjYtLjk3LS42NmgtNy4xOWMtLjQ2IDAtLjgzLjI2LS45OC42NkwxMCAxMy43N2wuMDEgNS41MWMwIC4zOC4zMS43Mi42OS43MmguNjJjLjM4IDAgLjY4LS4zOC42OC0uNzZWMThoOHYxLjI0YzAgLjM4LjMxLjc2LjY5Ljc2aC42MWMuMzggMCAuNjktLjM0LjY5LS43MmwuMDEtMS4zN3YtNC4xNGwtMS40My00LjExem0tOC4xNi4zNGg3LjE5bDEuMDMgM2gtOS4yNWwxLjAzLTN6TTEyIDE2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTggMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb21wYXJlQXJyb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wMSAxNEgydjJoNy4wMXYzTDEzIDE1bC0zLjk5LTR2M3ptNS45OC0xdi0zSDIyVjhoLTcuMDFWNUwxMSA5bDMuOTkgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tcHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE5aDN2M2gydi0zaDNsLTQtNC00IDR6bTgtMTVoLTNWMWgtMnYzSDhsNCA0IDQtNHpNNCA5djJoMTZWOUg0ek00IDEyaDE2djJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGFjdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMiA4YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptNCA4SDh2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAxNiAxNy40M1YxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGFjdFN1cHBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDJDNi44MSAyIDMgNS44MSAzIDEwLjVTNi44MSAxOSAxMS41IDE5aC41djNjNC44Ni0yLjM0IDgtNyA4LTExLjVDMjAgNS44MSAxNi4xOSAyIDExLjUgMnptMSAxNC41aC0ydi0yaDJ2MnptMC0zLjVoLTJjMC0zLjI1IDMtMyAzLTUgMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyaC0yYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAyLjUtMyAyLjc1LTMgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGFjdGxlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek04LjQ2IDE0LjQ1bC0xLjM2LS42MmMuMjgtLjYxLjQxLTEuMjQuNC0xLjg2YTQuNDIgNC40MiAwIDAgMC0uNC0xLjhsMS4zNi0uNjNjLjM1Ljc1LjUzIDEuNTYuNTQgMi40LjAxLjg2LS4xNyAxLjctLjU0IDIuNTF6bTMuMDcgMS41Ni0xLjMtLjc0Yy41Mi0uOTIuNzgtMS45OC43OC0zLjE1IDAtMS4xOS0uMjctMi4zMy0uOC0zLjRsMS4zNC0uNjdjLjY0IDEuMjguOTYgMi42NS45NiA0LjA3IDAgMS40My0uMzMgMi43NC0uOTggMy44OXptMy4xNCAxLjMyLTEuMzUtLjY2Yy43OC0xLjYgMS4xOC0zLjE4IDEuMTgtNC42OSAwLTEuNTEtLjQtMy4wNy0xLjE4LTQuNjRsMS4zNC0uNjdjLjkgMS43OCAxLjM0IDMuNTYgMS4zNCA1LjMxIDAgMS43NC0uNDQgMy41NC0xLjMzIDUuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvcHlyaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjg4IDkuMTRjMS4yOC4wNiAxLjYxIDEuMTUgMS42MyAxLjY2aDEuNzljLS4wOC0xLjk4LTEuNDktMy4xOS0zLjQ1LTMuMTlDOS42NCA3LjYxIDggOSA4IDEyLjE0YzAgMS45NC45MyA0LjI0IDMuODQgNC4yNCAyLjIyIDAgMy40MS0xLjY1IDMuNDQtMi45NWgtMS43OWMtLjAzLjU5LS40NSAxLjM4LTEuNjMgMS40NC0xLjMxLS4wNC0xLjg2LTEuMDYtMS44Ni0yLjczIDAtMi44OSAxLjI4LTIuOTggMS44OC0zek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JlZGl0Q2FyZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjkgMjEuOSAyLjEgMi4xLjY5IDMuNTFsMS41NSAxLjU1Yy0uMTUuMjgtLjIzLjYtLjIzLjk0TDIgMThjMCAxLjExLjg5IDIgMiAyaDEzLjE3bDMuMzEgMy4zMSAxLjQyLTEuNDF6TTQgMTJWOGgxLjE3bDQgNEg0em0yLjgzLThIMjBjMS4xMSAwIDIgLjg5IDIgMnYxMmMwIC4zNC0uMDguNjYtLjIzLjk0TDE0LjgzIDEySDIwVjhoLTkuMTdsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JlZGl0Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDR2LTZoMTZ2NnptMC0xMEg0VjZoMTZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3NzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDE0di0xSDExdi41aDJ2LTFoLTIuNWMtLjU1IDAtMS0uNDUtMS0xVjEwYzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjFIMTN2LS41aC0ydjFoMi41Yy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXptNy41IDFoM2MuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFoLTIuNXYtMWgydi41SDIxdi0xYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdjEuNWMwIC41NS40NSAxIDEgMWgyLjV2MWgtMlYxM0gxNnYxYzAgLjU1LjQ1IDEgMSAxem0tOS01YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMXYtMUg2LjV2LjVoLTJ2LTNoMnYuNUg4di0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJyZW5jeUV4Y2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuODkgMTEuMWMtMS43OC0uNTktMi42NC0uOTYtMi42NC0xLjkgMC0xLjAyIDEuMTEtMS4zOSAxLjgxLTEuMzkgMS4zMSAwIDEuNzkuOTkgMS45IDEuMzRsMS41OC0uNjdjLS4xNS0uNDUtLjgyLTEuOTItMi41NC0yLjI0VjVoLTJ2MS4yNmMtMi40OC41Ni0yLjQ5IDIuODYtMi40OSAyLjk2IDAgMi4yNyAyLjI1IDIuOTEgMy4zNSAzLjMxIDEuNTguNTYgMi4yOCAxLjA3IDIuMjggMi4wMyAwIDEuMTMtMS4wNSAxLjYxLTEuOTggMS42MS0xLjgyIDAtMi4zNC0xLjg3LTIuNC0yLjA5bC0xLjY2LjY3Yy42MyAyLjE5IDIuMjggMi43OCAyLjkgMi45NlYxOWgydi0xLjI0Yy40LS4wOSAyLjktLjU5IDIuOS0zLjIyIDAtMS4zOS0uNjEtMi42MS0zLjAxLTMuNDR6TTMgMjFIMXYtNmg2djJINC41MmMxLjYxIDIuNDEgNC4zNiA0IDcuNDggNGE5IDkgMCAwIDAgOS05aDJjMCA2LjA4LTQuOTIgMTEtMTEgMTEtMy43MiAwLTcuMDEtMS44NS05LTQuNjdWMjF6bS0yLTlDMSA1LjkyIDUuOTIgMSAxMiAxYzMuNzIgMCA3LjAxIDEuODUgOSA0LjY3VjNoMnY2aC02VjdoMi40OEMxNy44NyA0LjU5IDE1LjEyIDMgMTIgM2E5IDkgMCAwIDAtOSA5SDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhbmdlcm91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjczIDNIOC4yN0wzIDguMjd2Ny40Nkw4LjI3IDIxaDcuNDZMMjEgMTUuNzNWOC4yN0wxNS43MyAzek0xNyAxNS43NCAxNS43NCAxNyAxMiAxMy4yNiA4LjI2IDE3IDcgMTUuNzQgMTAuNzQgMTIgNyA4LjI2IDguMjYgNyAxMiAxMC43NCAxNS43NCA3IDE3IDguMjYgMTMuMjYgMTIgMTcgMTUuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhc2hib2FyZEN1c3RvbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2g4djhIM3ptMTAgMGg4djhoLTh6TTMgMTNoOHY4SDN6bTE1IDBoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhc2hib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNoOFYzSDN2MTB6bTAgOGg4di02SDN2NnptMTAgMGg4VjExaC04djEwem0wLTE4djZoOFYzaC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRhRXhwbG9yYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMmMwIDEuMzMuMjYgMi42MS43NCAzLjc3TDggMTAuNWwzLjMgMi43OEwxNC41OCAxMEgxM1Y4aDV2NWgtMnYtMS41OEwxMS40MSAxNmwtMy4yOS0yLjc5LTQuNCA0LjRBOS45OTYgOS45OTYgMCAwIDAgMTIgMjJoOGMxLjEgMCAyLS45IDItMnYtOGMwLTUuNTItNC40OC0xMC0xMC0xMHptNy41IDE4LjVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YVRocmVzaG9sZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOC4zMyA1LjE3IDIgMiAzLjY3LTMuNjcgMS40MSAxLjQxTDEyLjY3IDEzbC0yLTItMyAzLTEuNDEtMS40MSA0LjQxLTQuNDJ6TTUgMTZoMS43Mkw1IDE3LjcyVjE2em0uODQgMyAzLTNoMS44M2wtMyAzSDUuODR6bTMuOTYgMCAzLTNoMS42MmwtMyAzSDkuOHptMy43MyAwIDMtM2gxLjYybC0zIDNoLTEuNjJ6TTE5IDE5aC0xLjczTDE5IDE3LjI3VjE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRlUmFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDExSDd2Mmgydi0yem00IDBoLTJ2Mmgydi0yem00IDBoLTJ2Mmgydi0yem0yLTdoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZWxldGVGb3JldmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyem0yLjQ2LTcuMTIgMS40MS0xLjQxTDEyIDEyLjU5bDIuMTItMi4xMiAxLjQxIDEuNDFMMTMuNDEgMTRsMi4xMiAyLjEyLTEuNDEgMS40MUwxMiAxNS40MWwtMi4xMiAyLjEyLTEuNDEtMS40MUwxMC41OSAxNGwtMi4xMy0yLjEyek0xNS41IDRsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZWxldGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTggOWg4djEwSDhWOXptNy41LTUtMS0xaC01bC0xIDFINXYyaDE0VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlbGV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnpNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVuc2l0eUxhcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djJIM3pNMyAxOWgxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlbnNpdHlNZWRpdW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDNoMTh2Mkgzek0zIDE5aDE4djJIM3pNMyAxMWgxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlbnNpdHlTbWFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMmgxOHYySDN6TTMgMjBoMTh2Mkgzek0zIDE0aDE4djJIM3pNMyA4aDE4djJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVzY3JpcHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTIgMTZIOHYtMmg4djJ6bTAtNEg4di0yaDh2MnptLTMtNVYzLjVMMTguNSA5SDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXNhYmxlZEJ5RGVmYXVsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM3YxOGgxOFYzSDN6bTE0IDEyLjU5TDE1LjU5IDE3IDEyIDEzLjQxIDguNDEgMTcgNyAxNS41OSAxMC41OSAxMiA3IDguNDEgOC40MSA3IDEyIDEwLjU5IDE1LjU5IDcgMTcgOC40MSAxMy40MSAxMiAxNyAxNS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlzYWJsZWRWaXNpYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTkgMTIuMzRjLjAxLS4xMS4wMS0uMjMuMDEtLjM0IDAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyYzAgNS4xNyAzLjkzIDkuNDMgOC45NiA5Ljk1YTkuMzQzIDkuMzQzIDAgMCAxLTIuMzItMi42OEE4LjAxIDguMDEgMCAwIDEgNCAxMmMwLTEuODUuNjMtMy41NSAxLjY5LTQuOWw1LjY2IDUuNjZjLjU2LS40IDEuMTctLjczIDEuODItMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuMjQgMCA3LjcgMy4yOSA3Ljk4IDcuNDUuNzEuMjIgMS4zOS41MiAyLjAxLjg5ek0xNyAxM2MtMy4xOCAwLTUuOSAxLjg3LTcgNC41IDEuMSAyLjYzIDMuODIgNC41IDcgNC41czUuOS0xLjg3IDctNC41Yy0xLjEtMi42My0zLjgyLTQuNS03LTQuNXptMCA3YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1em0xLjUtMi41YzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXNwbGF5U2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg0djJoOHYtMmg0YzEuMSAwIDItLjkgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxNEg0VjVoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgOC4yNWg4djEuNUg2ek0xNi41IDkuNzVIMTh2LTEuNWgtMS41VjdIMTV2NGgxLjV6TTEwIDEyLjI1aDh2MS41aC04ek03LjUgMTVIOXYtNEg3LjV2MS4yNUg2djEuNWgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEzSDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMXYtNmMwLS41NS0uNDUtMS0xLTF6TTcgMTljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyek0yMCAzSDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMVY0YzAtLjU1LS40NS0xLTEtMXpNNyA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9uZUFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDctMS40MS0xLjQxLTYuMzQgNi4zNCAxLjQxIDEuNDFMMTggN3ptNC4yNC0xLjQxTDExLjY2IDE2LjE3IDcuNDggMTJsLTEuNDEgMS40MUwxMS42NiAxOWwxMi0xMi0xLjQyLTEuNDF6TS40MSAxMy40MSA2IDE5bDEuNDEtMS40MUwxLjgzIDEyIC40MSAxMy40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9uZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDUuMDMgMS40IDEuNEw4LjQzIDE5LjE3bC01LjYtNS42IDEuNC0xLjQgNC4yIDQuMkwxOS43NyA1LjAzbTAtMi44M0w4LjQzIDEzLjU0bC00LjItNC4yTDAgMTMuNTcgOC40MyAyMiAyNCA2LjQzIDE5Ljc3IDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTYuMiA0LjggMTJsLTEuNCAxLjRMOSAxOSAyMSA3bC0xLjQtMS40TDkgMTYuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9udXRMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDUuMDhWMmMtNSAuNS05IDQuODEtOSAxMHM0IDkuNSA5IDEwdi0zLjA4Yy0zLS40OC02LTMuNC02LTYuOTJzMy02LjQ0IDYtNi45MnpNMTguOTcgMTFIMjJjLS40Ny01LTQtOC41My05LTl2My4wOEMxNiA1LjUxIDE4LjU0IDggMTguOTcgMTF6TTEzIDE4LjkyVjIyYzUtLjQ3IDguNTMtNCA5LTloLTMuMDNjLS40MyAzLTIuOTcgNS40OS01Ljk3IDUuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbnV0U21hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA5LjE2VjJjLTUgLjUtOSA0Ljc5LTkgMTBzNCA5LjUgOSAxMHYtNy4xNmMtMS0uNDEtMi0xLjUyLTItMi44NHMxLTIuNDMgMi0yLjg0ek0xNC44NiAxMUgyMmMtLjQ4LTQuNzUtNC04LjUzLTktOXY3LjE2YzEgLjMgMS41Mi45OCAxLjg2IDEuODR6TTEzIDE0Ljg0VjIyYzUtLjQ3IDguNTItNC4yNSA5LTloLTcuMTRjLS4zNC44Ni0uODYgMS41NC0xLjg2IDEuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERyYWdJbmRpY2F0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE4YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptLTItOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTYgNGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTAgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZER5bmFtaWNGb3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMjB2LTloLTJWNGg3bC0yIDVoMmwtNSAxMXptLTItN3Y3SDRjLTEuMSAwLTItLjktMi0ydi0zYzAtMS4xLjktMiAyLTJoMTF6bS04Ljc1IDIuNzVoLTEuNXYxLjVoMS41di0xLjV6TTEzIDR2N0g0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoOXpNNi4yNSA2Ljc1aC0xLjV2MS41aDEuNXYtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjA1IDguMDVhNy4wMDEgNy4wMDEgMCAwIDAtLjAyIDkuODhjMS40Ny0zLjQgNC4wOS02LjI0IDcuMzYtNy45M0ExNS45NTIgMTUuOTUyIDAgMCAwIDggMTkuMzJjMi42IDEuMjMgNS44Ljc4IDcuOTUtMS4zN0MxOS40MyAxNC40NyAyMCA0IDIwIDRTOS41MyA0LjU3IDYuMDUgOC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWRpdENhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJINWEyIDIgMCAwIDEtMi0ybC4wMS0xNGMwLTEuMS44OC0yIDEuOTktMmgxVjJoMnYyaDhWMmgydjJoMWMxLjEgMCAyIC45IDIgMnY2aC0ydi0ySDV2MTBoN3Yyem0xMC4xMy01LjAxLjcxLS43MWEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLS43MS0uNzFhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0uNzEuNzEgMi4xMiAyLjEyem0tLjcxLjcxLTUuMyA1LjNIMTR2LTIuMTJsNS4zLTUuMyAyLjEyIDIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXREb2N1bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE5Ljg4VjIyaDIuMTJsNS4xNy01LjE3LTIuMTItMi4xMnpNMjAgOGwtNi02SDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxMnYtMi45NWw4LThWOHptLTcgMVYzLjVMMTguNSA5SDEzek0yMi43MSAxNGwtLjcxLS43MWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLS43MS43MUwyMiAxNi4xMmwuNzEtLjcxYS45OTYuOTk2IDAgMCAwIDAtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWRpdE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi4xMjYgOC4xMjUgMS45MzctMS45MzcgMy43NDcgMy43NDctMS45MzcgMS45Mzh6TTIwLjcxIDUuNjNsLTIuMzQtMi4zNGExIDEgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1TDIwLjcxIDdhMSAxIDAgMCAwIDAtMS4zN3pNMiA1bDYuNjMgNi42M0wzIDE3LjI1VjIxaDMuNzVsNS42My01LjYyTDE4IDIxbDItMkw0IDMgMiA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxN1Y5LjkzTDEzLjkzIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtOC45M0wxNC4wNyAxN0g3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE1aDQuMjRsNy4yLTcuMi00LjI0LTQuMjQtNy4yIDcuMnpNMjIuOTEgMi40OSAyMS41IDEuMDhjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC0xLjA2IDEuMDYgNC4yNCA0LjI0IDEuMDYtMS4wNmMuNzktLjc4Ljc5LTIuMDUgMC0yLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFamVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAyNFYwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTdoMTR2Mkg1em03LTEyTDUuMzMgMTVoMTMuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV1cm9TeW1ib2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOC41QTYuNDggNi40OCAwIDAgMSA5LjI0IDE1SDE1di0ySDguNThjLS4wNS0uMzMtLjA4LS42Ni0uMDgtMXMuMDMtLjY3LjA4LTFIMTVWOUg5LjI0QTYuNDkxIDYuNDkxIDAgMCAxIDE1IDUuNWMxLjYxIDAgMy4wOS41OSA0LjIzIDEuNTdMMjEgNS4zQTguOTU1IDguOTU1IDAgMCAwIDE1IDNjLTMuOTIgMC03LjI0IDIuNTEtOC40OCA2SDN2MmgzLjA2YTguMjYyIDguMjYyIDAgMCAwIDAgMkgzdjJoMy41MmMxLjI0IDMuNDkgNC41NiA2IDguNDggNiAyLjMxIDAgNC40MS0uODcgNi0yLjNsLTEuNzgtMS43N2MtMS4xMy45OC0yLjYgMS41Ny00LjIyIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV2ZW50UmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTJWNmMwLTEuMS0uOS0yLTItMmgtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDd2LTJINVYxMGgxNHYyaDJ6bS01LjM2IDhhMy41MDQgMy41MDQgMCAwIDAgNi44Ni0xYzAtMS45My0xLjU3LTMuNS0zLjUtMy41LS45NSAwLTEuODIuMzgtMi40NSAxSDE4VjE4aC00di00aDEuNXYxLjQzYy45LS44OCAyLjE0LTEuNDMgMy41LTEuNDMgMi43NiAwIDUgMi4yNCA1IDVhNS4wMDIgNS4wMDIgMCAwIDEtOS45IDFoMS41NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnRTZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOHYzaDN2LTNoMTB2M2gzdi02SDR2M3ptMTUtOGgzdjNoLTN2LTN6TTIgMTBoM3YzSDJ2LTN6bTE1IDNIN1Y1YzAtMS4xLjktMiAyLTJoNmMxLjEgMCAyIC45IDIgMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyaC01djVoNXYtNXpNMTYgMXYySDhWMUg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJoLTFWMWgtMnptMyAxOEg1VjhoMTR2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4aXRUb0FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA5IDE1LjU5IDExLjUgMTdsNS01LTUtNS0xLjQxIDEuNDFMMTIuNjcgMTFIM3YyaDkuNjdsLTIuNTggMi41OXpNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2NGgyVjVoMTR2MTRINXYtNEgzdjRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIwaDE2djJINHpNNCAyaDE2djJINHptOSA3aDNsLTQtNC00IDRoM3Y2SDhsNCA0IDQtNGgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwbG9yZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMTkgMTQuMTktMS40MS0xLjQxLTEuNTYtMS41NkwxMSAxMSA5LjgxIDkuODEgNC45MyA0LjkzIDIuMjcgMi4yNyAxIDMuNTRsMi43OCAyLjc4Yy0uMTEuMTYtLjIxLjMyLS4zMS40OC0uMDQuMDctLjA5LjE0LS4xMy4yMS0uMDkuMTUtLjE3LjMxLS4yNS40Ny0uMDUuMS0uMS4yMS0uMTYuMzItLjA2LjE0LS4xMy4yOC0uMTkuNDMtLjEuMjQtLjE5LjQ4LS4yNy43M2wtLjA5LjNjLS4wNS4yLS4xLjM5LS4xNC41OS0uMDIuMTEtLjA0LjIyLS4wNy4zMy0uMDQuMi0uMDcuNC0uMDkuNjEtLjAxLjEtLjAzLjItLjAzLjMtLjAzLjI5LS4wNS42LS4wNS45MSAwIDUuNTIgNC40OCAxMCAxMCAxMCAuMzEgMCAuNjItLjAyLjkyLS4wNWwuMy0uMDNjLjItLjAyLjQxLS4wNi42MS0uMDkuMTEtLjAyLjIyLS4wNC4zMy0uMDcuMi0uMDQuMzktLjA5LjU4LS4xNS4xLS4wMy4yLS4wNS4zLS4wOS4yNS0uMDguNDktLjE3LjczLS4yNy4xNS0uMDYuMjktLjEzLjQzLS4xOS4xMS0uMDUuMjItLjEuMzMtLjE2LjE2LS4wOC4zMS0uMTYuNDYtLjI1LjA3LS4wNC4xNC0uMDkuMjEtLjEzLjE2LS4xLjMyLS4yLjQ4LS4zMUwyMC40NiAyM2wxLjI3LTEuMjctMi42Ni0yLjY2LTQuODgtNC44OHpNNiAxOGwzLTYuNDZMMTIuNDYgMTUgNiAxOHptMTYtNmMwIC4zMS0uMDIuNjItLjA1LjkybC0uMDMuM2MtLjAyLjItLjA2LjQxLS4wOS42MS0uMDIuMTEtLjA0LjIyLS4wNy4zMy0uMDQuMi0uMDkuMzktLjE1LjU4LS4wMy4xLS4wNS4yMS0uMDkuMzEtLjA4LjI1LS4xNy40OS0uMjcuNzMtLjA2LjE1LS4xMy4yOS0uMTkuNDMtLjA1LjExLS4xLjIyLS4xNi4zMy0uMDguMTYtLjE2LjMxLS4yNS40Ni0uMDQuMDctLjA5LjE0LS4xMy4yMS0uMS4xNi0uMi4zMi0uMzEuNDhMMTUgMTIuNDYgMTggNmwtNi40NiAzLTUuMjItNS4yMmMuMTYtLjExLjMyLS4yMS40OC0uMzEuMDctLjA0LjE0LS4wOS4yMS0uMTMuMTUtLjA5LjMxLS4xNy40Ni0uMjUuMTEtLjA1LjIyLS4xLjMzLS4xNi4xNC0uMDYuMjgtLjEzLjQzLS4xOS4yNC0uMS40OC0uMTkuNzMtLjI3bC4zMS0uMDljLjE5LS4wNS4zOC0uMTEuNTgtLjE1LjExLS4wMi4yMi0uMDQuMzMtLjA3LjItLjA0LjQtLjA3LjYxLS4wOS4xLS4wMS4yLS4wMy4zLS4wMy4yOS0uMDIuNi0uMDQuOTEtLjA0IDUuNTIgMCAxMCA0LjQ4IDEwIDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBsb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTAuOWMtLjYxIDAtMS4xLjQ5LTEuMSAxLjFzLjQ5IDEuMSAxLjEgMS4xYy42MSAwIDEuMS0uNDkgMS4xLTEuMXMtLjQ5LTEuMS0xLjEtMS4xek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0yLjE5IDEyLjE5TDYgMThsMy44MS04LjE5TDE4IDZsLTMuODEgOC4xOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXh0ZW5zaW9uT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuNzggMjIuNjEtMS42My0xLjYzYy0uMDUgMC0uMS4wMi0uMTUuMDJoLTMuOGMwLTIuNzEtMi4xNi0zLTIuNy0zcy0yLjcuMjktMi43IDNINWMtMS4xIDAtMi0uOS0yLTJ2LTMuOGMyLjcxIDAgMy0yLjE2IDMtMi43cy0uMy0yLjctMi45OS0yLjdWNmMwLS4wNS4wMi0uMDkuMDItLjE0TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnptLjIyLTUuNDRWMTVhMi41IDIuNSAwIDAgMCAwLTVWNmMwLTEuMS0uOS0yLTItMmgtNGEyLjUgMi41IDAgMCAwLTUgMEg2LjgzTDIwIDE3LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHRlbnNpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41IDExSDE5VjdjMC0xLjEtLjktMi0yLTJoLTRWMy41YTIuNSAyLjUgMCAwIDAtNSAwVjVINGMtMS4xIDAtMS45OS45LTEuOTkgMnYzLjhIMy41YzEuNDkgMCAyLjcgMS4yMSAyLjcgMi43cy0xLjIxIDIuNy0yLjcgMi43SDJWMjBjMCAxLjEuOSAyIDIgMmgzLjh2LTEuNWMwLTEuNDkgMS4yMS0yLjcgMi43LTIuNyAxLjQ5IDAgMi43IDEuMjEgMi43IDIuN1YyMkgxN2MxLjEgMCAyLS45IDItMnYtNGgxLjVhMi41IDIuNSAwIDAgMCAwLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDExLjc1YTEuMjUgMS4yNSAwIDEgMCAwIDIuNSAxLjI1IDEuMjUgMCAwIDAgMC0yLjV6bTYgMGExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41ek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOCAwLS4yOS4wMi0uNTguMDUtLjg2IDIuMzYtMS4wNSA0LjIzLTIuOTggNS4yMS01LjM3YTkuOTc0IDkuOTc0IDAgMCAwIDEwLjQxIDMuOTdjLjIxLjcxLjMzIDEuNDcuMzMgMi4yNiAwIDQuNDEtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjdENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIwIDNINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek0xMCAxN0g1di0yaDV2MnptMC00SDV2LTJoNXYyem0wLTRINVY3aDV2MnptNC44MiA2TDEyIDEyLjE2bDEuNDEtMS40MSAxLjQxIDEuNDJMMTcuOTkgOWwxLjQyIDEuNDJMMTQuODIgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhdm9yaXRlQm9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAzYy0xLjc0IDAtMy40MS44MS00LjUgMi4wOUMxMC45MSAzLjgxIDkuMjQgMyA3LjUgMyA0LjQyIDMgMiA1LjQyIDIgOC41YzAgMy43OCAzLjQgNi44NiA4LjU1IDExLjU0TDEyIDIxLjM1bDEuNDUtMS4zMkMxOC42IDE1LjM2IDIyIDEyLjI4IDIyIDguNSAyMiA1LjQyIDE5LjU4IDMgMTYuNSAzem0tNC40IDE1LjU1LS4xLjEtLjEtLjFDNy4xNCAxNC4yNCA0IDExLjM5IDQgOC41IDQgNi41IDUuNSA1IDcuNSA1YzEuNTQgMCAzLjA0Ljk5IDMuNTcgMi4zNmgxLjg3QzEzLjQ2IDUuOTkgMTQuOTYgNSAxNi41IDVjMiAwIDMuNSAxLjUgMy41IDMuNSAwIDIuODktMy4xNCA1Ljc0LTcuOSAxMC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmF2b3JpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAyMS4zNS0xLjQ1LTEuMzJDNS40IDE1LjM2IDIgMTIuMjggMiA4LjUgMiA1LjQyIDQuNDIgMyA3LjUgM2MxLjc0IDAgMy40MS44MSA0LjUgMi4wOUMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzIDE5LjU4IDMgMjIgNS40MiAyMiA4LjVjMCAzLjc4LTMuNCA2Ljg2LTguNTUgMTEuNTRMMTIgMjEuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZheCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTFWNEg4djE2aDE0di04YzAtMS42Ni0xLjM0LTMtMy0zem0tOS0zaDZ2M2gtNlY2em00IDExaC00di01aDR2NXptMiAwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAtM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0zIDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMC0zYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTQuNSA4QTIuNSAyLjUgMCAwIDAgMiAxMC41djhhMi41IDIuNSAwIDAgMCA1IDB2LThBMi41IDIuNSAwIDAgMCA0LjUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmVlZGJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgMTJoLTJ2LTJoMnYyem0wLTRoLTJWNmgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbGVQcmVzZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWN2wtNS01ek02IDIwVjRoOHY0aDR2MTJINnptMTAtMTB2NWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNFY4LjVhMi41IDIuNSAwIDAgMSAyLjc2LTIuNDljMS4zLjEzIDIuMjQgMS4zMiAyLjI0IDIuNjNWMTVoLTJWOC41YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNVYxNWMwIDEuMS45IDIgMiAyczItLjkgMi0ydi01aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckFsdE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljc5IDUuNjFBLjk5OC45OTggMCAwIDAgMTkgNEg2LjgzbDcuOTcgNy45NyA0Ljk5LTYuMzZ6TTIuODEgMi44MSAxLjM5IDQuMjIgMTAgMTN2NmMwIC41NS40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXYtMi4xN2w1Ljc4IDUuNzggMS40MS0xLjQxTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjRtMCAyNEgwXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMjUgNS42MUM2LjI3IDguMiAxMCAxMyAxMCAxM3Y2YzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi02czMuNzItNC44IDUuNzQtNy4zOUEuOTk4Ljk5OCAwIDAgMCAxOC45NSA0SDUuMDRjLS44MyAwLTEuMy45NS0uNzkgMS42MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyTGlzdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpNMCAwaDI0bTAgMjRIMFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjI1IDUuNjZjLjEuMTMgNS43NCA3LjMzIDUuNzQgNy4zM1YxOWMwIC41NS40NSAxIDEuMDEgMWgyLjAxYy41NSAwIDEuMDEtLjQ1IDEuMDEtMXYtNi4wMnM1LjQ5LTcuMDIgNS43NS03LjM0QzIwLjAzIDUuMzIgMjAgNSAyMCA1YzAtLjU1LS40NS0xLTEuMDEtMUg1LjAxQzQuNCA0IDQgNC40OCA0IDVjMCAuMi4wNi40NC4yNS42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmluZEluUGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5LjU5VjhsLTYtNkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjLjQ1IDAgLjg1LS4xNSAxLjE5LS40bC00LjQzLTQuNDNjLS44LjUyLTEuNzQuODMtMi43Ni44My0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDVjMCAxLjAyLS4zMSAxLjk2LS44MyAyLjc1TDIwIDE5LjU5ek05IDEzYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaW5kUmVwbGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZjMS4zOCAwIDIuNjMuNTYgMy41NCAxLjQ2TDEyIDEwaDZWNGwtMi4wNSAyLjA1QTYuOTc2IDYuOTc2IDAgMCAwIDExIDRjLTMuNTMgMC02LjQzIDIuNjEtNi45MiA2SDYuMUE1IDUgMCAwIDEgMTEgNnptNS42NCA5LjE0QTYuODkgNi44OSAwIDAgMCAxNy45MiAxMkgxNS45YTUgNSAwIDAgMS00LjkgNGMtMS4zOCAwLTIuNjMtLjU2LTMuNTQtMS40NkwxMCAxMkg0djZsMi4wNS0yLjA1QTYuOTc2IDYuOTc2IDAgMCAwIDExIDE4YzEuNTUgMCAyLjk4LS41MSA0LjE0LTEuMzZMMjAgMjEuNDkgMjEuNDkgMjBsLTQuODUtNC44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmluZ2VycHJpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44MSA0LjQ3Yy0uMDggMC0uMTYtLjAyLS4yMy0uMDZDMTUuNjYgMy40MiAxNCAzIDEyLjAxIDNjLTEuOTggMC0zLjg2LjQ3LTUuNTcgMS40MS0uMjQuMTMtLjU0LjA0LS42OC0uMmEuNTA2LjUwNiAwIDAgMSAuMi0uNjhDNy44MiAyLjUyIDkuODYgMiAxMi4wMSAyYzIuMTMgMCAzLjk5LjQ3IDYuMDMgMS41Mi4yNS4xMy4zNC40My4yMS42N2EuNDkuNDkgMCAwIDEtLjQ0LjI4ek0zLjUgOS43MmEuNDk5LjQ5OSAwIDAgMS0uNDEtLjc5Yy45OS0xLjQgMi4yNS0yLjUgMy43NS0zLjI3QzkuOTggNC4wNCAxNCA0LjAzIDE3LjE1IDUuNjVjMS41Ljc3IDIuNzYgMS44NiAzLjc1IDMuMjVhLjUuNSAwIDAgMS0uMTIuN2MtLjIzLjE2LS41NC4xMS0uNy0uMTJhOS4zODggOS4zODggMCAwIDAtMy4zOS0yLjk0Yy0yLjg3LTEuNDctNi41NC0xLjQ3LTkuNC4wMS0xLjM2LjctMi41IDEuNy0zLjQgMi45Ni0uMDguMTQtLjIzLjIxLS4zOS4yMXptNi4yNSAxMi4wN2EuNDcuNDcgMCAwIDEtLjM1LS4xNWMtLjg3LS44Ny0xLjM0LTEuNDMtMi4wMS0yLjY0LS42OS0xLjIzLTEuMDUtMi43My0xLjA1LTQuMzQgMC0yLjk3IDIuNTQtNS4zOSA1LjY2LTUuMzlzNS42NiAyLjQyIDUuNjYgNS4zOWMwIC4yOC0uMjIuNS0uNS41cy0uNS0uMjItLjUtLjVjMC0yLjQyLTIuMDktNC4zOS00LjY2LTQuMzktMi41NyAwLTQuNjYgMS45Ny00LjY2IDQuMzkgMCAxLjQ0LjMyIDIuNzcuOTMgMy44NS42NCAxLjE1IDEuMDggMS42NCAxLjg1IDIuNDIuMTkuMi4xOS41MSAwIC43MS0uMTEuMS0uMjQuMTUtLjM3LjE1em03LjE3LTEuODVjLTEuMTkgMC0yLjI0LS4zLTMuMS0uODktMS40OS0xLjAxLTIuMzgtMi42NS0yLjM4LTQuMzkgMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVjMCAxLjQxLjcyIDIuNzQgMS45NCAzLjU2LjcxLjQ4IDEuNTQuNzEgMi41NC43MS4yNCAwIC42NC0uMDMgMS4wNC0uMS4yNy0uMDUuNTMuMTMuNTguNDEuMDUuMjctLjEzLjUzLS40MS41OC0uNTcuMTEtMS4wNy4xMi0xLjIxLjEyek0xNC45MSAyMmMtLjA0IDAtLjA5LS4wMS0uMTMtLjAyLTEuNTktLjQ0LTIuNjMtMS4wMy0zLjcyLTIuMWE3LjI5NyA3LjI5NyAwIDAgMS0yLjE3LTUuMjJjMC0xLjYyIDEuMzgtMi45NCAzLjA4LTIuOTQgMS43IDAgMy4wOCAxLjMyIDMuMDggMi45NCAwIDEuMDcuOTMgMS45NCAyLjA4IDEuOTRzMi4wOC0uODcgMi4wOC0xLjk0YzAtMy43Ny0zLjI1LTYuODMtNy4yNS02LjgzLTIuODQgMC01LjQ0IDEuNTgtNi42MSA0LjAzLS4zOS44MS0uNTkgMS43Ni0uNTkgMi44IDAgLjc4LjA3IDIuMDEuNjcgMy42MS4xLjI2LS4wMy41NS0uMjkuNjQtLjI2LjEtLjU1LS4wNC0uNjQtLjI5YTExLjE0IDExLjE0IDAgMCAxLS43My0zLjk2YzAtMS4yLjIzLTIuMjkuNjgtMy4yNCAxLjMzLTIuNzkgNC4yOC00LjYgNy41MS00LjYgNC41NSAwIDguMjUgMy41MSA4LjI1IDcuODMgMCAxLjYyLTEuMzggMi45NC0zLjA4IDIuOTRzLTMuMDgtMS4zMi0zLjA4LTIuOTRjMC0xLjA3LS45My0xLjk0LTIuMDgtMS45NHMtMi4wOC44Ny0yLjA4IDEuOTRjMCAxLjcxLjY2IDMuMzEgMS44NyA0LjUxLjk1Ljk0IDEuODYgMS40NiAzLjI3IDEuODUuMjcuMDcuNDIuMzUuMzUuNjEtLjA1LjIzLS4yNi4zOC0uNDcuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpdFNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDRoM2MxLjEgMCAyIC45IDIgMnYyaC0yVjZoLTNWNHpNNCA4VjZoM1Y0SDRjLTEuMSAwLTIgLjktMiAydjJoMnptMTYgOHYyaC0zdjJoM2MxLjEgMCAyLS45IDItMnYtMmgtMnpNNyAxOEg0di0ySDJ2MmMwIDEuMS45IDIgMiAyaDN2LTJ6TTE4IDhINnY4aDEyVjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYWt5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwibTE0LjA1IDE3LjU4LS4wMS4wMS0yLjQtMi40IDEuMDYtMS4wNiAxLjM1IDEuMzVMMTYuNTQgMTNsMS4wNiAxLjA2LTMuNTQgMy41NC0uMDEtLjAyek0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnpNNy4zNCA2LjI4bDEuNDEgMS40MSAxLjQxLTEuNDEgMS4wNiAxLjA2LTEuNDEgMS40MSAxLjQxIDEuNDEtMS4wNiAxLjA2LTEuNDEtMS40MS0xLjQxIDEuNDEtMS4wNi0xLjA2IDEuNDEtMS40MS0xLjQxLTEuNDEgMS4wNi0xLjA2ek0xMiAyMGMtMi4yIDAtNC4yLS45LTUuNy0yLjNMMTcuNyA2LjNDMTkuMSA3LjggMjAgOS44IDIwIDEyYzAgNC40LTMuNiA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxpZ2h0TGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAxOWgxOXYyaC0xOXYtMnptMTYuODQtMy4xNWMuOC4yMSAxLjYyLS4yNiAxLjg0LTEuMDYuMjEtLjgtLjI2LTEuNjItMS4wNi0xLjg0bC01LjMxLTEuNDItMi43Ni05LjAyTDEwLjEyIDJ2OC4yOEw1LjE1IDguOTVsLS45My0yLjMyLTEuNDUtLjM5djUuMTdsMTYuNTcgNC40NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxpZ2h0VGFrZW9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAxOWgxOXYyaC0xOXYtMnptMTkuNTctOS4zNmMtLjIxLS44LTEuMDQtMS4yOC0xLjg0LTEuMDZMMTQuOTIgMTBsLTYuOS02LjQzLTEuOTMuNTEgNC4xNCA3LjE3LTQuOTcgMS4zMy0xLjk3LTEuNTQtMS40NS4zOSAyLjU5IDQuNDlzNy4xMi0xLjkgMTYuNTctNC40M2MuODEtLjIzIDEuMjgtMS4wNSAxLjA3LTEuODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaXBUb0JhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdIN3YyaDJWN3ptMCA0SDd2Mmgydi0yem0wLThhMiAyIDAgMCAwLTIgMmgyVjN6bTQgMTJoLTJ2Mmgydi0yem02LTEydjJoMmMwLTEuMS0uOS0yLTItMnptLTYgMGgtMnYyaDJWM3pNOSAxN3YtMkg3YTIgMiAwIDAgMCAyIDJ6bTEwLTRoMnYtMmgtMnYyem0wLTRoMlY3aC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyek01IDdIM3YxMmEyIDIgMCAwIDAgMiAyaDEydi0ySDVWN3ptMTAtMmgyVjNoLTJ2MnptMCAxMmgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaXBUb0Zyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0yIDR2LTJIM2EyIDIgMCAwIDAgMiAyek0zIDloMlY3SDN2MnptMTIgMTJoMnYtMmgtMnYyem00LTE4SDlhMiAyIDAgMCAwLTIgMnYxMGEyIDIgMCAwIDAgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJIOVY1aDEwdjEwem0tOCA2aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmx1dHRlckRhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4wNyAxMS43Yy4yOS0uMzkuODEtLjU2IDEuMjctLjM3LjE3LjA3LjMyLjE4LjQzLjMzLjIyLjI4LjI1LjU5LjIyLjg1LS4wNS4zMy0uMjUuNjMtLjU0Ljc5IDAgMC00Ljg3IDIuOTUtNS4wNyAyLjY5czMuNjktNC4yOSAzLjY5LTQuMjl6TTIyIDEwYzAgMi41LTEgMy0xLjUgMy0uMjMgMC0uNDQtLjEtLjYyLS4yNi0uNDggMy4zMi0yLjM2IDUuMzEtNS4zMyA1Ljk5LjExLjQ0LjQ4Ljc3Ljk1Ljc3aC41OGMuMjIgMCAuNDEuMTUuNDguMzYuMTcuNTIuNjYgMS4wMiAxLjAyIDEuMzIuMjUuMjEuMjQuNTktLjAzLjc4LS4zNC4yNC0uOS40OS0xLjc5LjUzYS41MDEuNTAxIDAgMCAxLS40NS0uMjJjLS4xMy0uMi0uMzEtLjU2LS4zMS0xLjAxIDAtLjMuMDQtLjU3LjA5LS44LS43OC0uMTYtMS4zOS0uNzgtMS41NS0xLjU2LS40OS4wNi0xIC4xLTEuNTQuMS0uODggMC0xLjctLjA5LTIuNDUtLjI1LS4wMi4wOC0uMDUuMTYtLjA1LjI1IDAgLjU1LjQ1IDEgMSAxaC41OGMuMjIgMCAuNDEuMTUuNDguMzYuMTcuNTIuNjYgMS4wMiAxLjAyIDEuMzIuMjUuMjEuMjQuNTktLjAzLjc4LS4zNC4yNC0uOS40OS0xLjc5LjUzYS41MDEuNTAxIDAgMCAxLS40NS0uMjJjLS4xMy0uMi0uMzEtLjU2LS4zMS0xLjAxIDAtLjMuMDQtLjU3LjA5LS44LS45LS4xOS0xLjU5LTEtMS41OS0xLjk2IDAtLjE4LjAzLS4zNi4wOC0uNTMtMi40Ni0uODYtNC4wMy0yLjc4LTQuNDYtNS43NC0uMTguMTctLjM4LjI3LS42Mi4yN0MzIDEzIDIgMTIuNSAyIDEwYzAtMi4yNyAxLjctNC41IDMtNC41LjQzIDAgLjQ5LjQ5LjUuODVhNy45ODkgNy45ODkgMCAwIDEgNS41NS0zLjI5Yy4yLS45NiAxLjA4LTEuNTYgMS45NS0xLjU2djFzLjMzLS41IDEtLjVjLjY3IDAgMSAuNSAxIC41LS40OSAwLS44NS4zNS0uOTYuNzcgMS44Mi40OCAzLjM5IDEuNTkgNC40NiAzLjA4LjAxLS4zNi4wNy0uODUuNS0uODUgMS4zIDAgMyAyLjIzIDMgNC41ek01IDExYzAgLjgxLjEgMS41My4yNSAyLjIxLjE4LS42OS40Ni0xLjMzLjgzLTEuOTJhMy43NyAzLjc3IDAgMCAxLS4zNC0xLjU0QTMuNzY2IDMuNzY2IDAgMCAxIDkuNSA2Yy45NiAwIDEuODQuMzcgMi41Ljk3LjY2LS42IDEuNTQtLjk3IDIuNS0uOTcgMi4wNyAwIDMuNzUgMS42OCAzLjc1IDMuNzUgMCAuNTUtLjEyIDEuMDctLjM0IDEuNTQuMzcuNTkuNjYgMS4yNC44NCAxLjk0LjE1LS42OC4yNS0xLjQxLjI1LTIuMjMgMC0zLjg2LTMuMTQtNy03LTdzLTcgMy4xNC03IDd6bTEyLjk4IDQuMjljMC0uMS4wMi0uMTkuMDItLjI5IDAtMS4wMS0uMjYtMS45NS0uNy0yLjc4LS42OS43OC0xLjY4IDEuMjgtMi44IDEuMjgtLjI3IDAtLjU0LS4wMy0uNzktLjA5LjE0LS4yMy4yMy0uNDkuMjctLjc3LjAxLS4wNy4wMS0uMTMuMDItLjE5LjE3LjAzLjMzLjA1LjUuMDUgMS41MiAwIDIuNzUtMS4yMyAyLjc1LTIuNzVTMTYuMDIgNyAxNC41IDdjLS42NyAwLTEuMzIuMjUtMS44My43MmwtLjY3LjYtLjY3LS42QzEwLjgyIDcuMjUgMTAuMTcgNyA5LjUgNyA3Ljk4IDcgNi43NSA4LjIzIDYuNzUgOS43NWMwIDEuMzQuOTYgMi40NiAyLjIzIDIuN2wtLjc2LjgzYy0uNi0uMjItMS4xMi0uNTktMS41My0xLjA1QTYuMDEgNi4wMSAwIDAgMCA2IDE1YzAgLjA4LjAxLjE1LjAxLjI0QzcuMTMgMTcuMDYgOS4xNCAxOCAxMiAxOGMyLjg4IDAgNC44OC0uOTEgNS45OC0yLjcxek0xNiA5Ljc1YzAgLjk3LS42NyAxLjc1LTEuNSAxLjc1UzEzIDEwLjcyIDEzIDkuNzUgMTMuNjcgOCAxNC41IDhzMS41Ljc4IDEuNSAxLjc1em0tLjc1LS44N2MwLS4yMS0uMTctLjM4LS4zOC0uMzhzLS4zNy4xNy0uMzcuMzguMTcuMzguMzguMzguMzctLjE4LjM3LS4zOHpNMTEgOS43NWMwIC45Ny0uNjcgMS43NS0xLjUgMS43NVM4IDEwLjcyIDggOS43NSA4LjY3IDggOS41IDhzMS41Ljc4IDEuNSAxLjc1em0tLjc1LS44N2MwLS4yMS0uMTctLjM4LS4zOC0uMzhzLS4zNy4xNy0uMzcuMzguMTcuMzguMzguMzguMzctLjE4LjM3LS4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRnJlZUNhbmNlbGxhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjIxIDIwSDVWMTBoMTR2NC4zOGwyLTJWNmMwLTEuMS0uOS0yLTItMmgtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYTIgMiAwIDAgMCAyIDJoOC4yMWwtMi0yem01LjMzIDIuNUwxMyAxOC45NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNCAxLjQxIDEuNDEtNS42NCA1LjY2ek0xMC40MSAxNCAxMiAxNS41OSAxMC41OSAxNyA5IDE1LjQxIDcuNDEgMTcgNiAxNS41OSA3LjU5IDE0IDYgMTIuNDEgNy40MSAxMSA5IDEyLjU5IDEwLjU5IDExIDEyIDEyLjQxIDEwLjQxIDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHVHJhbnNsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDExbC0xLTNIM2MtMS4xIDAtMiAuOS0yIDJ2MTVjMCAxLjEuOSAyIDIgMmg4bDEgM2g5YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTcgMTZjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTVjMS4zNSAwIDIuNDguNSAzLjM1IDEuM0w5LjAzIDguNTdjLS4zOC0uMzYtMS4wNC0uNzgtMi4wMy0uNzgtMS43NCAwLTMuMTUgMS40NC0zLjE1IDMuMjFTNS4yNiAxNC4yMSA3IDE0LjIxYzIuMDEgMCAyLjg0LTEuNDQgMi45Mi0yLjQxSDd2LTEuNzFoNC42OGMuMDcuMzEuMTIuNjEuMTIgMS4wMkMxMS44IDEzLjk3IDkuODkgMTYgNyAxNnptNi4xNy01LjQyaDMuN2MtLjQzIDEuMjUtMS4xMSAyLjQzLTIuMDUgMy40Ny0uMzEtLjM1LS42LS43Mi0uODYtMS4xbC0uNzktMi4zN3ptOC4zMyA5LjkyYzAgLjU1LS40NSAxLTEgMUgxNGwyLTIuNS0xLjA0LTMuMSAzLjEgMy4xLjkyLS45Mi0zLjMtMy4yNS4wMi0uMDJjMS4xMy0xLjI1IDEuOTMtMi42OSAyLjQtNC4yMkgyMHYtMS4zaC00LjUzVjhoLTEuMjl2MS4yOWgtMS40NEwxMS40NiA1LjVoOS4wNGMuNTUgMCAxIC40NSAxIDF2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2F2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm01LjI1IDguMDY5IDIuODMtMi44MjcgMTQuMTM0IDE0LjE1LTIuODMgMi44Mjd6TTkuNDg2IDMuODI3IDEyLjMxNC45OThsNS42NTcgNS42NTYtMi44MjggMi44M3pNLjk5OSAxMi4zMTVsMi44MjgtMi44MjkgNS42NTcgNS42NTctMi44MjggMi44Mjh6TTEgMjFoMTJ2MkgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHZW5lcmF0aW5nVG9rZW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMyA2LjVoLTJ2NUg4di01SDZWOWg2djEuNXptOC4yNS02Ljc1TDIzIDVsLTIuNzUgMS4yNUwxOSA5bC0xLjI1LTIuNzVMMTUgNWwyLjc1LTEuMjVMMTkgMWwxLjI1IDIuNzV6bTAgMTRMMjMgMTlsLTIuNzUgMS4yNUwxOSAyM2wtMS4yNS0yLjc1TDE1IDE5bDIuNzUtMS4yNUwxOSAxNWwxLjI1IDIuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdldEFwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2lmQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkuNSAxM3YtMWgxdjFjMCAuNTUtLjQ1IDEtMSAxaC0xYy0uNTUgMC0xLS40NS0xLTF2LTJjMC0uNTUuNDUtMSAxLTFoMWMuNTUgMCAxIC40NSAxIDFoLTJ2Mmgxem0zIDFoLTF2LTRoMXY0em00LTNoLTJ2LjVIMTZ2MWgtMS41VjE0aC0xdi00aDN2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2lmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSA5SDEzdjZoLTEuNXpNOSA5SDZjLS42IDAtMSAuNS0xIDF2NGMwIC41LjQgMSAxIDFoM2MuNiAwIDEtLjUgMS0xdi0ySDguNXYxLjVoLTJ2LTNIMTBWMTBjMC0uNS0uNC0xLTEtMXpNMTkgMTAuNVY5aC00LjV2NkgxNnYtMmgydi0xLjVoLTJ2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTcuMjcgMTguMTggMjFsLTEuNjQtNy4wM0wyMiA5LjI0bC03LjE5LS42MUwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyYWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDdoMTZ2Mkg0Vjd6bTAgNmgxNnYtMkg0djJ6bTAgNGg3di0ySDR2MnptMCA0aDd2LTJINHYyem0xMS40MS0yLjgzTDE0IDE2Ljc1bC0xLjQxIDEuNDFMMTUuNDEgMjEgMjAgMTYuNDIgMTguNTggMTVsLTMuMTcgMy4xN3pNNCAzdjJoMTZWM0g0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cFdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek04IDE3LjVhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6TTkuNSA4YTIuNSAyLjUgMCAwIDEgNSAwIDIuNSAyLjUgMCAwIDEtNSAwem02LjUgOS41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWxwQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02Ljk5IDE1Yy0uNyAwLTEuMjYtLjU2LTEuMjYtMS4yNiAwLS43MS41Ni0xLjI1IDEuMjYtMS4yNS43MSAwIDEuMjUuNTQgMS4yNSAxLjI1LS4wMS42OS0uNTQgMS4yNi0xLjI1IDEuMjZ6bTMuMDEtNy40Yy0uNzYgMS4xMS0xLjQ4IDEuNDYtMS44NyAyLjE3LS4xNi4yOS0uMjIuNDgtLjIyIDEuNDFoLTEuODJjMC0uNDktLjA4LTEuMjkuMzEtMS45OC40OS0uODcgMS40Mi0xLjM5IDEuOTYtMi4xNi41Ny0uODEuMjUtMi4zMy0xLjM3LTIuMzMtMS4wNiAwLTEuNTguOC0xLjggMS40OGwtMS42NS0uN0M5LjAxIDcuMTUgMTAuMjIgNiAxMS45OSA2YzEuNDggMCAyLjQ5LjY3IDMuMDEgMS41Mi40NC43Mi43IDIuMDcuMDIgMy4wOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVscE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxOGgydi0yaC0ydjJ6bTEtMTZDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTE0Yy0yLjIxIDAtNCAxLjc5LTQgNGgyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAyLTMgMS43NS0zIDVoMmMwLTIuMjUgMy0yLjUgMy01IDAtMi4yMS0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWxwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxN2gtMnYtMmgydjJ6bTIuMDctNy43NS0uOS45MkMxMy40NSAxMi45IDEzIDEzLjUgMTMgMTVoLTJ2LS41YzAtMS4xLjQ1LTIuMSAxLjE3LTIuODNsMS4yNC0xLjI2Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDEgMC0xLjEtLjktMi0yLTJzLTIgLjktMiAySDhjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIC44OC0uMzYgMS42OC0uOTMgMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlkZVNvdXJjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmwyLjI3IDIuMjdBOS45MSA5LjkxIDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4wNCAwIDMuOTMtLjYxIDUuNTEtMS42NmwyLjI3IDIuMjcgMS40MS0xLjQxTDIuODEgMi44MXpNMTIgMjBjLTQuNDEgMC04LTMuNTktOC04IDAtMS40OC40MS0yLjg2IDEuMTItNC4wNmwxMC45NCAxMC45NEMxNC44NiAxOS41OSAxMy40OCAyMCAxMiAyMHpNNy45NCA1LjEyIDYuNDkgMy42NkE5LjkxIDkuOTEgMCAwIDEgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMCAwIDIuMDQtLjYxIDMuOTMtMS42NiA1LjUxbC0xLjQ2LTEuNDZBNy44NjkgNy44NjkgMCAwIDAgMjAgMTJjMC00LjQxLTMuNTktOC04LTgtMS40OCAwLTIuODYuNDEtNC4wNiAxLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaWdobGlnaHRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1aC0yVjNoMnYyem0tMiAxNmgydi0yLjU5TDE5LjU5IDIxIDIxIDE5LjU5IDE4LjQxIDE3SDIxdi0yaC02djZ6bTQtMTJoMlY3aC0ydjJ6bTAgNGgydi0yaC0ydjJ6bS04IDhoMnYtMmgtMnYyek03IDVoMlYzSDd2MnpNMyAxN2gydi0ySDN2MnptMiA0di0ySDNjMCAxLjEuOSAyIDIgMnpNMTkgM3YyaDJjMC0xLjEtLjktMi0yLTJ6bS04IDJoMlYzaC0ydjJ6TTMgOWgyVjdIM3Yyem00IDEyaDJ2LTJIN3Yyem0tNC04aDJ2LTJIM3Yyem0wLThoMlYzYy0xLjEgMC0yIC45LTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlnaGxpZ2h0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNTkgOCAxMiAxMC41OSA5LjQxIDggOCA5LjQxIDEwLjU5IDEyIDggMTQuNTkgOS40MSAxNiAxMiAxMy40MSAxNC41OSAxNiAxNiAxNC41OSAxMy40MSAxMiAxNiA5LjQxIDE0LjU5IDh6TTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaXN0b3J5VG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuMSAxOS4zNyAxIDEuNzRjLS45Ni40NC0yLjAxLjczLTMuMS44NHYtMi4wMmMuNzQtLjA5IDEuNDQtLjI4IDIuMS0uNTZ6TTQuMDcgMTNIMi4wNWMuMTEgMS4xLjQgMi4xNC44NCAzLjFsMS43NC0xYy0uMjgtLjY2LS40Ny0xLjM2LS41Ni0yLjF6TTE1LjEgNC42M2wxLTEuNzRjLS45Ni0uNDQtMi0uNzMtMy4xLS44NHYyLjAyYy43NC4wOSAxLjQ0LjI4IDIuMS41NnpNMTkuOTMgMTFoMi4wMmMtLjExLTEuMS0uNC0yLjE0LS44NC0zLjFsLTEuNzQgMWMuMjguNjYuNDcgMS4zNi41NiAyLjF6TTguOSAxOS4zN2wtMSAxLjc0Yy45Ni40NCAyLjAxLjczIDMuMS44NHYtMi4wMmMtLjc0LS4wOS0xLjQ0LS4yOC0yLjEtLjU2ek0xMSA0LjA3VjIuMDVjLTEuMS4xMS0yLjE0LjQtMy4xLjg0bDEgMS43NGMuNjYtLjI4IDEuMzYtLjQ3IDIuMS0uNTZ6bTcuMzYgMy4xIDEuNzQtMS4wMWMtLjYzLS44Ny0xLjQtMS42NC0yLjI3LTIuMjdsLTEuMDEgMS43NGMuNTkuNDUgMS4xLjk2IDEuNTQgMS41NHpNNC42MyA4LjlsLTEuNzQtMWMtLjQ0Ljk2LS43MyAyLS44NCAzLjFoMi4wMmMuMDktLjc0LjI4LTEuNDQuNTYtMi4xem0xNS4zIDQuMWMtLjA5Ljc0LS4yOCAxLjQ0LS41NiAyLjFsMS43NCAxYy40NC0uOTYuNzMtMi4wMS44NC0zLjFoLTIuMDJ6bS0zLjEgNS4zNiAxLjAxIDEuNzRjLjg3LS42MyAxLjY0LTEuNCAyLjI3LTIuMjdsLTEuNzQtMS4wMWMtLjQ1LjU5LS45NiAxLjEtMS41NCAxLjU0ek03LjE3IDUuNjRsLTEtMS43NWMtLjg4LjY0LTEuNjQgMS40LTIuMjcgMi4yOGwxLjc0IDEuMDFhNy43IDcuNyAwIDAgMSAxLjUzLTEuNTR6TTUuNjQgMTYuODNsLTEuNzQgMWMuNjMuODcgMS40IDEuNjQgMi4yNyAyLjI3bDEuMDEtMS43NGE3LjcgNy43IDAgMCAxLTEuNTQtMS41M3pNMTMgN2gtMnY1LjQxbDQuMjkgNC4yOSAxLjQxLTEuNDEtMy43LTMuN1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2E5IDkgMCAwIDAtOSA5SDFsMy44OSAzLjg5LjA3LjE0TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkE4Ljk1NCA4Ljk1NCAwIDAgMCAxMyAyMWE5IDkgMCAwIDAgMC0xOHptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhsc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjgzIDE1aDEuNjdjLjU1IDAgMS0uNDUgMS0xdi0xLjVjMC0uNTUtLjQ1LTEtMS0xSDE3di0xaDJ2LjVoMS41di0xYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdjEuNWMwIC41NS40NSAxIDEgMUgxOXYxaC0yVjEzaC0xLjE3bDIgMnpNOCAxMC44M1YxNUg2LjV2LTIuNWgtMlYxNUgzVjloMS41djJoMlY5LjMzTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDEtNy42LTcuNkgxMHYtMi4xN2wtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgOUg4djZINi41di0yLjVoLTJWMTVIM1Y5aDEuNXYyaDJWOXptMTAgNmgzYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUgxN3YtMWgydi41aDEuNXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFIMTl2MWgtMlYxM2gtMS41djFjMCAuNTUuNDUgMSAxIDF6TTE0IDE1di0xLjVoLTIuNVY5SDEwdjZoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9tZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgNCA5djEyaDV2LTdoNnY3aDVWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDIwdi02aDR2Nmg1di04aDNMMTIgMyAyIDEyaDN2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9yaXpvbnRhbFNwbGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE5aDE4di02SDN2NnptMC04aDE4VjlIM3Yyem0wLTZ2MmgxOFY1SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdGVsQ2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjU4IDEwSDFsNi4xNyA0LjQxTDQuODMgMjIgMTEgMTcuMzEgMTcuMTggMjJsLTIuMzUtNy41OUwyMSAxMGgtNy41OEwxMSAybC0yLjQyIDh6bTEyLjc4IDEyLTEuODYtNi4wMUwyMy42OCAxM2gtMy40NGwtMy4wOCAyLjIgMS40NiA0LjcyTDIxLjM2IDIyek0xNyA4bC0xLjgyLTYtMS4wNCAzLjQ1Ljc3IDIuNTVIMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXJnbGFzc0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA0aDh2My41bC0yLjg0IDIuODQgMS4yNSAxLjI1TDE4IDguMDEgMTcuOTkgOEgxOFYySDZ2MS4xN2wyIDJ6TTIuMSAyLjEuNjkgMy41MWw4LjkgOC45TDYgMTZsLjAxLjAxSDZWMjJoMTJ2LTEuMTdsMi40OSAyLjQ5IDEuNDEtMS40MUwyLjEgMi4xek0xNiAyMEg4di0zLjVsMi44NC0yLjg0TDE2IDE4LjgzVjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3VyZ2xhc3NFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAydjZoLjAxTDYgOC4wMSAxMCAxMmwtNCA0IC4wMS4wMUg2VjIyaDEydi01Ljk5aC0uMDFMMTggMTZsLTQtNCA0LTMuOTktLjAxLS4wMUgxOFYySDZ6bTEwIDE0LjVWMjBIOHYtMy41bDQtNCA0IDR6bS00LTUtNC00VjRoOHYzLjVsLTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG91cmdsYXNzRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAydjZoLjAxTDYgOC4wMSAxMCAxMmwtNCA0IC4wMS4wMUg2VjIyaDEydi01Ljk5aC0uMDFMMTggMTZsLTQtNCA0LTMuOTktLjAxLS4wMUgxOFYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEh0bWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgOUg1djZIMy41di0yLjVoLTJWMTVIMFY5aDEuNXYyaDJWOXptMTQgMEgxM2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41di00LjVoMVYxNEgxNnYtMy41MWgxVjE1aDEuNXYtNWMwLS41NS0uNDUtMS0xLTF6TTExIDlINnYxLjVoMS43NVYxNWgxLjV2LTQuNUgxMVY5em0xMyA2di0xLjVoLTIuNVY5SDIwdjZoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSHR0cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDExaC0yVjlIMXY2aDEuNXYtMi41aDJWMTVINlY5SDQuNXYyem0yLjUtLjVoMS41VjE1SDEwdi00LjVoMS41VjlIN3YxLjV6bTUuNSAwSDE0VjE1aDEuNXYtNC41SDE3VjloLTQuNXYxLjV6bTktMS41SDE4djZoMS41di0yaDJjLjggMCAxLjUtLjcgMS41LTEuNXYtMWMwLS44LS43LTEuNS0xLjUtMS41em0wIDIuNWgtMnYtMWgydjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHYyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSHR0cHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bS02IDljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0zLjEtOUg4LjlWNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbXBvcnRhbnREZXZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxMS4wMSAxOCAxMWMtLjU1IDAtMSAuNDUtMSAxdjljMCAuNTUuNDUgMSAxIDFoNWMuNTUgMCAxLS40NSAxLTF2LTljMC0uNTUtLjQ1LS45OS0xLS45OXpNMjMgMjBoLTV2LTdoNXY3ek0yMCAySDJDLjg5IDIgMCAyLjg5IDAgNHYxMmEyIDIgMCAwIDAgMiAyaDd2Mkg3djJoOHYtMmgtMnYtMmgydi0ySDJWNGgxOHY1aDJWNGEyIDIgMCAwIDAtMi0yem0tOC4wMyA3TDExIDZsLS45NyAzSDdsMi40NyAxLjc2LS45NCAyLjkxIDIuNDctMS44IDIuNDcgMS44LS45NC0yLjkxTDE1IDloLTMuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluZm9PdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3aDJ2MmgtMlY3em0wIDRoMnY2aC0ydi02em0xLTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbmZvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5wdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzLjAxSDNjLTEuMSAwLTIgLjktMiAyVjloMlY0Ljk5aDE4djE0LjAzSDNWMTVIMXY0LjAxYzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4di0xNGEyIDIgMCAwIDAtMi0yek0xMSAxNmw0LTQtNC00djNIMXYyaDEwdjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc3RhbGxEZXNrdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTdINFY1aDhWM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMnYtM2gtMnYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyAxNCA1LTUtMS40MS0xLjQxTDE4IDEwLjE3VjNoLTJ2Ny4xN2wtMi41OS0yLjU4TDEyIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc3RhbGxNb2JpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxOEg3VjZoN1YxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTVoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMTQgNS01LTEuNDEtMS40MUwxOSAxMC4xN1YzaC0ydjcuMTdsLTIuNTktMi41OEwxMyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnRlZ3JhdGlvbkluc3RydWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIzLjVcIixcInJcIjpcIi43NVwiLFwiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIuNzVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjMuNVwiLFwiclwiOlwiLjc1XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLS4xNCAwLS4yNy4wMS0uNC4wNGEyLjAwOCAyLjAwOCAwIDAgMC0xLjQ0IDEuMTljLS4xLjIzLS4xNi40OS0uMTYuNzd2MTRjMCAuMjcuMDYuNTQuMTYuNzhzLjI1LjQ1LjQzLjY0Yy4yNy4yNy42Mi40NyAxLjAxLjU1LjEzLjAyLjI2LjAzLjQuMDNoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTggMTEuMTctMS40MSAxLjQyTDYgMTJsMy41OS0zLjU5TDExIDkuODMgOC44MyAxMiAxMSAxNC4xN3ptMS05LjkyYy0uNDEgMC0uNzUtLjM0LS43NS0uNzVzLjM0LS43NS43NS0uNzUuNzUuMzQuNzUuNzUtLjM0Ljc1LS43NS43NXptMi40MSAxMS4zNEwxMyAxNC4xNyAxNS4xNyAxMiAxMyA5LjgzbDEuNDEtMS40MkwxOCAxMmwtMy41OSAzLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnZlcnRDb2xvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDQuODFWMTljLTMuMzEgMC02LTIuNjMtNi01Ljg3IDAtMS41Ni42Mi0zLjAzIDEuNzUtNC4xNEwxMiA0LjgxTTYuMzUgNy41NkM0LjkgOC45OSA0IDEwLjk2IDQgMTMuMTMgNCAxNy40OCA3LjU4IDIxIDEyIDIxczgtMy41MiA4LTcuODdjMC0yLjE3LS45LTQuMTQtMi4zNS01LjU3TDEyIDIgNi4zNSA3LjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRKYXZhc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTR2LTFoMS41di41aDJ2LTFIMTNjLS41NSAwLTEtLjQ1LTEtMVYxMGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxaC0xLjV2LS41aC0ydjFIMTZjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMWgtM2MtLjU1IDAtMS0uNDUtMS0xek05IDl2NC41SDcuNXYtMUg2djFjMCAuODMuNjcgMS41IDEuNSAxLjVIOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVWOUg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRKb2luRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJ4XCI6XCIzXCIsXCJyeVwiOlwiNS43NFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTJjMC0uOTcuMjMtNC4xNiAzLjAzLTYuNUM5Ljc1IDUuMTkgOC45IDUgOCA1Yy0zLjg2IDAtNyAzLjE0LTcgN3MzLjE0IDcgNyA3Yy45IDAgMS43NS0uMTkgMi41My0uNS0yLjgtMi4zNC0zLjAzLTUuNTMtMy4wMy02LjV6TTE2IDVjLS45IDAtMS43NS4xOS0yLjUzLjUgMi44IDIuMzQgMy4wMyA1LjUzIDMuMDMgNi41IDAgLjk3LS4yMyA0LjE2LTMuMDMgNi41Ljc4LjMxIDEuNjMuNSAyLjUzLjUgMy44NiAwIDctMy4xNCA3LTdzLTMuMTQtNy03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEpvaW5Jbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJ4XCI6XCIzXCIsXCJyeVwiOlwiNS43NFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjA0IDE2Ljg3Yy0uMzMuMDgtLjY4LjEzLTEuMDQuMTMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNWMuMzYgMCAuNzEuMDUgMS4wNC4xMy4zOS0uNTYuODgtMS4xMiAxLjQ5LTEuNjNDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtLjYxLS41MS0xLjEtMS4wNy0xLjQ5LTEuNjN6TTE2IDVjLS45IDAtMS43NS4xOS0yLjUzLjUuNjEuNTEgMS4xIDEuMDcgMS40OSAxLjYzLjMzLS4wOC42OC0uMTMgMS4wNC0uMTMgMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDVjLS4zNiAwLS43MS0uMDUtMS4wNC0uMTMtLjM5LjU2LS44OCAxLjEyLTEuNDkgMS42My43OC4zMSAxLjYzLjUgMi41My41IDMuODYgMCA3LTMuMTQgNy03cy0zLjE0LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRKb2luTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJ4XCI6XCIzXCIsXCJyeVwiOlwiNS43NFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTJjMC0uOTcuMjMtNC4xNiAzLjAzLTYuNUM5Ljc1IDUuMTkgOC45IDUgOCA1Yy0zLjg2IDAtNyAzLjE0LTcgN3MzLjE0IDcgNyA3Yy45IDAgMS43NS0uMTkgMi41My0uNS0yLjgtMi4zNC0zLjAzLTUuNTMtMy4wMy02LjV6TTE2IDVjLS45IDAtMS43NS4xOS0yLjUzLjUuNjEuNTEgMS4xIDEuMDcgMS40OSAxLjYzLjMzLS4wOC42OC0uMTMgMS4wNC0uMTMgMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDVjLS4zNiAwLS43MS0uMDUtMS4wNC0uMTMtLjM5LjU2LS44OCAxLjEyLTEuNDkgMS42My43OC4zMSAxLjYzLjUgMi41My41IDMuODYgMCA3LTMuMTQgNy03cy0zLjE0LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRKb2luUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMmMwIC45Ny0uMjMgNC4xNi0zLjAzIDYuNS43OC4zMSAxLjYzLjUgMi41My41IDMuODYgMCA3LTMuMTQgNy03cy0zLjE0LTctNy03Yy0uOSAwLTEuNzUuMTktMi41My41IDIuOCAyLjM0IDMuMDMgNS41MyAzLjAzIDYuNXpNOCAxOWMuOSAwIDEuNzUtLjE5IDIuNTMtLjUtLjYxLS41MS0xLjEtMS4wNy0xLjQ5LTEuNjMtLjMzLjA4LS42OC4xMy0xLjA0LjEzLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTVjLjM2IDAgLjcxLjA1IDEuMDQuMTMuMzktLjU2Ljg4LTEuMTIgMS40OS0xLjYzQzkuNzUgNS4xOSA4LjkgNSA4IDVjLTMuODYgMC03IDMuMTQtNyA3czMuMTQgNyA3IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhYmVsSW1wb3J0YW50T3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTlIM2w0LjUtN0wzIDVoMTJjLjY1IDAgMS4yNi4zMSAxLjYzLjg0TDIxIDEybC00LjM3IDYuMTZjLS4zNy41Mi0uOTguODQtMS42My44NHptLTguNS0ySDE1bDMuNS01TDE1IDdINi41bDMuNSA1LTMuNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYWJlbEltcG9ydGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy41IDE4Ljk5IDExIC4wMWMuNjcgMCAxLjI3LS4zMyAxLjYzLS44NEwyMC41IDEybC00LjM3LTYuMTZjLS4zNi0uNTEtLjk2LS44NC0xLjYzLS44NGwtMTEgLjAxTDguMzQgMTIgMy41IDE4Ljk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYWJlbE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy4yNSAyLjc1IDE3IDE3TDE5IDIxbC0yLTJINWMtMS4xIDAtMi0uOS0yLTJWN2MwLS41NS4yMy0xLjA1LjU5LTEuNDFMMiA0bDEuMjUtMS4yNXpNMjIgMTJsLTQuMzctNi4xNkMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUg4bDExIDExIDMtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFiZWxPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUw1IDUuMDFDMy45IDUuMDEgMyA1LjkgMyA3djEwYzAgMS4xLjkgMS45OSAyIDEuOTlMMTYgMTljLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjIgMTJsLTQuMzctNi4xNnpNMTYgMTdINVY3aDExbDMuNTUgNUwxNiAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFiZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42MyA1Ljg0QzE3LjI3IDUuMzMgMTYuNjcgNSAxNiA1TDUgNS4wMUMzLjkgNS4wMSAzIDUuOSAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuNjcgMCAxLjI3LS4zMyAxLjYzLS44NEwyMiAxMmwtNC4zNy02LjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6bTYuOTMgNmgtMi45NWExNS42NSAxNS42NSAwIDAgMC0xLjM4LTMuNTZBOC4wMyA4LjAzIDAgMCAxIDE4LjkyIDh6TTEyIDQuMDRjLjgzIDEuMiAxLjQ4IDIuNTMgMS45MSAzLjk2aC0zLjgyYy40My0xLjQzIDEuMDgtMi43NiAxLjkxLTMuOTZ6TTQuMjYgMTRDNC4xIDEzLjM2IDQgMTIuNjkgNCAxMnMuMS0xLjM2LjI2LTJoMy4zOGMtLjA4LjY2LS4xNCAxLjMyLS4xNCAyIDAgLjY4LjA2IDEuMzQuMTQgMkg0LjI2em0uODIgMmgyLjk1Yy4zMiAxLjI1Ljc4IDIuNDUgMS4zOCAzLjU2QTcuOTg3IDcuOTg3IDAgMCAxIDUuMDggMTZ6bTIuOTUtOEg1LjA4YTcuOTg3IDcuOTg3IDAgMCAxIDQuMzMtMy41NkExNS42NSAxNS42NSAwIDAgMCA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMiAwLS42OC4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAyIDAgLjY4LS4wNyAxLjM0LS4xNiAyem0uMjUgNS41NmMuNi0xLjExIDEuMDYtMi4zMSAxLjM4LTMuNTZoMi45NWE4LjAzIDguMDMgMCAwIDEtNC4zMyAzLjU2ek0xNi4zNiAxNGMuMDgtLjY2LjE0LTEuMzIuMTQtMiAwLS42OC0uMDYtMS4zNC0uMTQtMmgzLjM4Yy4xNi42NC4yNiAxLjMxLjI2IDJzLS4xIDEuMzYtLjI2IDJoLTMuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhdW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5SDVWNWg3VjNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2N3pNMTQgM3YyaDMuNTlsLTkuODMgOS44MyAxLjQxIDEuNDFMMTkgNi40MVYxMGgyVjNoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExlYWRlcmJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDIxSDJWOWg1LjV2MTJ6bTcuMjUtMThoLTUuNXYxOGg1LjVWM3pNMjIgMTFoLTUuNXYxMEgyMlYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGlnaHRidWxiQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxN2MtLjgzIDAtMS41LS42Ny0xLjUtMS41aDNjMCAuODMtLjY3IDEuNS0xLjUgMS41em0zLTIuNUg5VjE1aDZ2MS41em0tLjAzLTIuNUg5LjAzQTQuOTY2IDQuOTY2IDAgMCAxIDcgMTBjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWMwIDEuNjQtLjggMy4wOS0yLjAzIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpZ2h0YnVsYk91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIxYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0xSDl2MXptMy0xOUM4LjE0IDIgNSA1LjE0IDUgOWMwIDIuMzggMS4xOSA0LjQ3IDMgNS43NFYxN2MwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMXYtMi4yNmMxLjgxLTEuMjcgMy0zLjM2IDMtNS43NCAwLTMuODYtMy4xNC03LTctN3ptMiAxMS43VjE2aC00di0yLjNDOC40OCAxMi42MyA3IDExLjUzIDcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMi40OS0xLjUxIDMuNjUtMyA0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpZ2h0YnVsYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMjFjMCAuNS40IDEgMSAxaDRjLjYgMCAxLS41IDEtMXYtMUg5djF6bTMtMTlDOC4xIDIgNSA1LjEgNSA5YzAgMi40IDEuMiA0LjUgMyA1LjdWMTdjMCAuNS40IDEgMSAxaDZjLjYgMCAxLS41IDEtMXYtMi4zYzEuOC0xLjMgMy0zLjQgMy01LjcgMC0zLjktMy4xLTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaW5lU3R5bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE2aDV2LTJIM3Yyem02LjUgMGg1di0yaC01djJ6bTYuNSAwaDV2LTJoLTV2MnpNMyAyMGgydi0ySDN2MnptNCAwaDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyek0zIDEyaDh2LTJIM3Yyem0xMCAwaDh2LTJoLTh2MnpNMyA0djRoMThWNEgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaW5lV2VpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxN2gxOHYtMkgzdjJ6bTAgM2gxOHYtMUgzdjF6bTAtN2gxOHYtM0gzdjN6bTAtOXY0aDE4VjRIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTQgNGgxNHYtMkg3djJ6bTAgNGgxNHYtMkg3djJ6TTcgN3YyaDE0VjdIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9ja0Nsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC41IDE0LjIgMi45IDEuNy0uOCAxLjNMMTMgMTV2LTVoMS41djQuMnpNMjIgMTRjMCA0LjQxLTMuNTkgOC04IDgtMi4wMiAwLTMuODYtLjc2LTUuMjctMkg0Yy0xLjE1IDAtMi0uODUtMi0yVjljMC0xLjEyLjg5LTEuOTYgMi0ydi0uNUM0IDQuMDEgNi4wMSAyIDguNSAyYzIuMzQgMCA0LjI0IDEuNzkgNC40NiA0LjA4LjM0LS4wNS42OS0uMDggMS4wNC0uMDggNC40MSAwIDggMy41OSA4IDh6TTYgN2g1di0uNzRBMi41MDkgMi41MDkgMCAwIDAgOC41IDQgMi41IDIuNSAwIDAgMCA2IDYuNVY3em0xNCA3YzAtMy4zMS0yLjY5LTYtNi02cy02IDIuNjktNiA2IDIuNjkgNiA2IDYgNi0yLjY5IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9ja09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtOWgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZoMS45YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xIDEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xdjJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptMCAxMkg2VjEwaDEydjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NrT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE3YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNi05aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6TTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2Mkg4LjlWNnpNMTggMjBINlYxMGgxMnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9ja1BlcnNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExYy43IDAgMS4zNy4xIDIgLjI5VjEwYzAtMS4xLS45LTItMi0yaC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoNi4yNkE2Ljk5NSA2Ljk5NSAwIDAgMSAxOCAxMXpNOC45IDZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFzMy4xIDEuMzkgMy4xIDMuMXYySDguOVY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTAgMmMuODMgMCAxLjUuNjcgMS41IDEuNVMxOC44MyAxOCAxOCAxOHMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41em0wIDZjLTEuMDMgMC0xLjk0LS41Mi0yLjQ4LTEuMzIuNzMtLjQyIDEuNTctLjY4IDIuNDgtLjY4czEuNzUuMjYgMi40OC42OGMtLjU0LjgtMS40NSAxLjMyLTIuNDggMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9ja1Jlc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2E5IDkgMCAwIDAtOSA5SDFsNCA0IDQtNEg2YzAtMy44NiAzLjE0LTcgNy03czcgMy4xNCA3IDctMy4xNCA3LTcgN2MtMS45IDAtMy42Mi0uNzYtNC44OC0xLjk5TDYuNyAxOC40MkE4Ljk4MiA4Ljk4MiAwIDAgMCAxMyAyMWE5IDkgMCAwIDAgMC0xOHptMiA4di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bS02IDljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0zLjEtOUg4LjlWNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2dpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDcgOS42IDguNGwyLjYgMi42SDJ2MmgxMC4ybC0yLjYgMi42TDExIDE3bDUtNS01LTV6bTkgMTJoLTh2Mmg4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJoLTh2Mmg4djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2dvdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyA3LTEuNDEgMS40MUwxOC4xNyAxMUg4djJoMTAuMTdsLTIuNTggMi41OEwxNyAxN2w1LTV6TTQgNWg4VjNINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4di0ySDRWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG95YWx0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjQxIDExLjU4LTktOUMxMi4wNSAyLjIyIDExLjU1IDIgMTEgMkg0Yy0xLjEgMC0yIC45LTIgMnY3YzAgLjU1LjIyIDEuMDUuNTkgMS40Mmw5IDljLjM2LjM2Ljg2LjU4IDEuNDEuNTguNTUgMCAxLjA1LS4yMiAxLjQxLS41OWw3LTdjLjM3LS4zNi41OS0uODYuNTktMS40MSAwLS41NS0uMjMtMS4wNi0uNTktMS40MnpNNS41IDdDNC42NyA3IDQgNi4zMyA0IDUuNVM0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41IDYuMzMgNyA1LjUgN3ptMTEuNzcgOC4yN0wxMyAxOS41NGwtNC4yNy00LjI3QTIuNSAyLjUgMCAwIDEgMTAuNSAxMWMuNjkgMCAxLjMyLjI4IDEuNzcuNzRsLjczLjcyLjczLS43M2EyLjUgMi41IDAgMCAxIDMuNTQgMy41NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFuYWdlQWNjb3VudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI4XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjY3IDEzLjAyYy0uMjItLjAxLS40NC0uMDItLjY3LS4wMi0yLjQyIDAtNC42OC42Ny02LjYxIDEuODItLjg4LjUyLTEuMzkgMS41LTEuMzkgMi41M1YyMGg5LjI2YTYuOTYzIDYuOTYzIDAgMCAxLS41OS02Ljk4ek0yMC43NSAxNmMwLS4yMi0uMDMtLjQyLS4wNi0uNjNsMS4xNC0xLjAxLTEtMS43My0xLjQ1LjQ5Yy0uMzItLjI3LS42OC0uNDgtMS4wOC0uNjNMMTggMTFoLTJsLS4zIDEuNDljLS40LjE1LS43Ni4zNi0xLjA4LjYzbC0xLjQ1LS40OS0xIDEuNzMgMS4xNCAxLjAxYy0uMDMuMjEtLjA2LjQxLS4wNi42M3MuMDMuNDIuMDYuNjNsLTEuMTQgMS4wMSAxIDEuNzMgMS40NS0uNDljLjMyLjI3LjY4LjQ4IDEuMDguNjNMMTYgMjFoMmwuMy0xLjQ5Yy40LS4xNS43Ni0uMzYgMS4wOC0uNjNsMS40NS40OSAxLTEuNzMtMS4xNC0xLjAxYy4wMy0uMjEuMDYtLjQxLjA2LS42M3pNMTcgMThjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYW5hZ2VIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuNjkgMTguMzcgMS4xNC0xLTEtMS43My0xLjQ1LjQ5Yy0uMzItLjI3LS42OC0uNDgtMS4wOC0uNjNMMjAgMTRoLTJsLS4zIDEuNDljLS40LjE1LS43Ni4zNi0xLjA4LjYzbC0xLjQ1LS40OS0xIDEuNzMgMS4xNCAxYy0uMDguNS0uMDguNzYgMCAxLjI2bC0xLjE0IDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE4IDI0aDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMWMuMDgtLjUxLjA4LS43NyAwLTEuMjd6TTE5IDIxYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMTEgN3Y1LjQxbDIuMzYgMi4zNiAxLjA0LTEuNzktMS40LTEuMzlWN2gtMnptMTAgNWE5IDkgMCAwIDAtOS05QzkuMTcgMyA2LjY1IDQuMzIgNSA2LjM2VjRIM3Y2aDZWOEg2LjI2QTcuMDEgNy4wMSAwIDAgMSAxMiA1YzMuODYgMCA3IDMuMTQgNyA3aDJ6bS0xMC4xNCA2LjkxYy0yLjk5LS40OS01LjM1LTIuOS01Ljc4LTUuOTFIMy4wNmMuNSA0LjUgNC4zMSA4IDguOTQgOGguMDdsLTEuMjEtMi4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFya0FzVW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC44MyA3aC0yLjZMMTAuNSA0IDQgNy40VjE3Yy0xLjEgMC0yLS45LTItMlY3LjE3YzAtLjUzLjMyLTEuMDkuOC0xLjM0TDEwLjUgMmw3LjU0IDMuODNjLjQzLjIzLjczLjcuNzkgMS4xN3pNMjAgOEg3Yy0xLjEgMC0yIC45LTIgMnY5YzAgMS4xLjkgMiAyIDJoMTNjMS4xIDAgMi0uOSAyLTJ2LTljMC0xLjEtLjktMi0yLTJ6bTAgMy42N0wxMy41IDE1IDcgMTEuNjdWMTBsNi41IDMuMzNMMjAgMTB2MS42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFya3VucmVhZE1haWxib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS02MTgtMzAwMEg3ODJWNjAwSC02MTh6TTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2SDEwdjZIOFY0aDZWMEg2djZINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXhpbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVkaWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMTItNCA0LTEuNDEtMS40MUwxOC4xNyAxM2gtNS4yM0E4Ljk3NCA4Ljk3NCAwIDAgMSA4IDIwLjA1IDMuMDA1IDMuMDA1IDAgMCAxIDUgMjNjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTNjLjk1IDAgMS43OC40NSAyLjMzIDEuMTRBNi45NjkgNi45NjkgMCAwIDAgMTAuOTEgMTNoLTMuMUM3LjQgMTQuMTYgNi4zIDE1IDUgMTVjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTNjMS4zIDAgMi40Ljg0IDIuODIgMmgzLjFjLS4zMi0yLjIzLTEuNjktNC4xLTMuNTktNS4xNEM2Ljc4IDYuNTUgNS45NSA3IDUgNyAzLjM0IDcgMiA1LjY2IDIgNHMxLjM0LTMgMy0zYTIuOTkgMi45OSAwIDAgMSAyLjk5IDIuOTVBOC45NzQgOC45NzQgMCAwIDEgMTIuOTMgMTFoNS4yM2wtMS41OC0xLjU5TDE4IDhsNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaW5pbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxOWgxMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGVsVHJhaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDEzLjVjMCAyLTIuNSAzLjUtMi41IDVoLTJjMC0xLjUtMi41LTMtMi41LTUgMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNXptLTIuNSA2aC0yVjIxaDJ2LTEuNXptNi02LjVjMCAxLjY4LS41OSAzLjIxLTEuNTggNC40MmwxLjQyIDEuNDJhOC45NzggOC45NzggMCAwIDAtMS0xMi42OGwtMS40MiAxLjQyQTYuOTkzIDYuOTkzIDAgMCAxIDE5IDEzem0tMy04LTQtNHYzYTkgOSAwIDAgMC05IDljMCAyLjIzLjgyIDQuMjcgMi4xNiA1Ljg0bDEuNDItMS40MkE2LjkzOCA2LjkzOCAwIDAgMSA1IDEzYzAtMy44NiAzLjE0LTcgNy03djNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXR3b3JrUGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0LjY3IDMuNDEgNi4wOSAyIDcuNWw4LjUgOC41SDR2MmgxNnYtMmgtNi41bDUuMTUtNS4xNUEyLjUgMi41IDAgMSAwIDE5LjUgNiAyLjUgMi41IDAgMCAwIDE3IDguNWMwIC4zNS4wNy42Ny4yLjk3bC01LjIgNS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXdMYWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDEyLTQuMzcgNi4xNmMtLjM3LjUyLS45OC44NC0xLjYzLjg0aC0zdi02SDl2LTNIM1Y3YzAtMS4xLjktMiAyLTJoMTBjLjY1IDAgMS4yNi4zMSAxLjYzLjg0TDIxIDEyem0tMTEgM0g3di0zSDV2M0gydjJoM3YzaDJ2LTNoM3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV4dFBsYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem02IDExLjk3aC01bDIuMjYtMi4yNmE0Ljk0IDQuOTQgMCAwIDAtMy43Ni0xLjc0Yy0yLjM3IDAtNC4zNSAxLjY2LTQuODYgMy44OGwtLjk2LS4zMmMuNjQtMi42MiAzLTQuNTYgNS44Mi00LjU2IDEuNzggMCAzLjM3Ljc5IDQuNDcgMi4wM0wxOCA4Ljk3djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5pZ2h0bGlnaHRSb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDEgMTJjMC0zLjU3IDIuMi02LjYyIDUuMzEtNy44Ny44OS0uMzYuNzUtMS42OS0uMTktMS45LTEuMS0uMjQtMi4yNy0uMy0zLjQ4LS4xNC00LjUxLjYtOC4xMiA0LjMxLTguNTkgOC44M0M0LjQ0IDE2LjkzIDkuMTMgMjIgMTUuMDEgMjJjLjczIDAgMS40My0uMDggMi4xMi0uMjMuOTUtLjIxIDEuMS0xLjUzLjItMS45QTguNDYgOC40NiAwIDAgMSAxMi4wMSAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9BY2NvdW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjE4IDEwLjk0Yy4yLS40NC4zMi0uOTIuMzItMS40NEMxNS41IDcuNTcgMTMuOTMgNiAxMiA2Yy0uNTIgMC0xIC4xMi0xLjQ0LjMybDQuNjIgNC42MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxM2MtMi4zMiAwLTQuNDUuOC02LjE0IDIuMTJBNy45NTcgNy45NTcgMCAwIDEgNCAxMmMwLTEuODUuNjMtMy41NSAxLjY5LTQuOWwyLjg2IDIuODZhMy40NyAzLjQ3IDAgMCAwIDIuOTkgMi45OWwyLjIgMi4yYy0uNTctLjEtMS4xNS0uMTUtMS43NC0uMTV6bTYuMzEgMS45TDcuMSA1LjY5QTcuOTAyIDcuOTAyIDAgMCAxIDEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjg1LS42MyAzLjU0LTEuNjkgNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb2lzZUF3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTVoLTJhMS4wMDMgMS4wMDMgMCAwIDEtMS45NS4zMmMtLjE1LS40NC0uNC0xLjA4LS45My0xLjYxbC0xLjM2LTEuMzZDOS4yOCAxMS44NyA5IDExLjE5IDkgMTAuNWEyLjUgMi41IDAgMCAxIDQuOTUtLjVoMi4wMmMtLjI1LTIuMjUtMi4xNi00LTQuNDctNEM5LjAyIDYgNyA4LjAyIDcgMTAuNWMwIDEuMjIuNDkgMi40MSAxLjM1IDMuMjdsMS4zNiAxLjM2Yy4xNy4xNy4zMS40NC40NC44MkEzLjAxMyAzLjAxMyAwIDAgMCAxMyAxOGMxLjY1IDAgMy0xLjM1IDMtM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiMTIuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuNiA2LjU4IDEuNTggMS4yNmMuMzUtLjU3Ljc3LTEuMSAxLjI0LTEuNTdMNC44NSA1LjAyYy0uNDcuNDctLjg4IDEtMS4yNSAxLjU2ek05LjQ2IDQuNDJsLS44Ny0xLjgxYy0uNjMuMjMtMS4yNC41Mi0xLjguODdsLjg3IDEuODFjLjU2LS4zNiAxLjE2LS42NSAxLjgtLjg3ek00LjQ5IDkuMjZsLTEuOTYtLjQ1Yy0uMjEuNjMtLjM2IDEuMjgtLjQ0IDEuOTVsMS45Ni40NWE3LjkgNy45IDAgMCAxIC40NC0xLjk1ek0yMC40IDYuNThhOS40IDkuNCAwIDAgMC0xLjI1LTEuNTZsLTEuNTggMS4yNmMuNDguNDcuODkuOTkgMS4yNCAxLjU3bDEuNTktMS4yN3pNNC4wNCAxMi43OWwtMS45Ni40NWMuMDguNjcuMjMgMS4zMy40NCAxLjk1bDEuOTctLjQ1Yy0uMjItLjYyLS4zOC0xLjI3LS40NS0xLjk1ek0xNy4yMSAzLjQ4Yy0uNTctLjM1LTEuMTctLjY0LTEuOC0uODdsLS44NyAxLjgxYy42NC4yMiAxLjI0LjUxIDEuOC44N2wuODctMS44MXpNMTMgNC4wN1YyLjA1Yy0uMzMtLjAzLS42Ni0uMDUtMS0uMDVzLS42Ny4wMi0xIC4wNXYyLjAyYy4zMy0uMDQuNjYtLjA3IDEtLjA3cy42Ny4wMyAxIC4wN3pNMTEgMTkuOTN2Mi4wMmMuMzMuMDMuNjYuMDUgMSAuMDVzLjY3LS4wMiAxLS4wNXYtMi4wMmMtLjMzLjA0LS42Ni4wNy0xIC4wN3MtLjY3LS4wMy0xLS4wN3pNMTkuNTEgMTQuNzRsMS45Ny40NWMuMjEtLjYzLjM2LTEuMjguNDQtMS45NWwtMS45Ni0uNDVjLS4wNy42OC0uMjMgMS4zMy0uNDUgMS45NXpNMTkuOTYgMTEuMjFsMS45Ni0uNDVhOS42OSA5LjY5IDAgMCAwLS40NC0xLjk1bC0xLjk3LjQ1Yy4yMi42Mi4zOCAxLjI3LjQ1IDEuOTV6TTE3LjU4IDE3LjczbDEuNTggMS4yNmMuNDctLjQ4Ljg4LTEgMS4yNS0xLjU2bC0xLjU4LTEuMjZhOS40IDkuNCAwIDAgMS0xLjI1IDEuNTZ6TTYuNzkgMjAuNTJjLjU3LjM1IDEuMTcuNjQgMS44Ljg3bC44Ny0xLjgxYy0uNjQtLjIyLTEuMjQtLjUxLTEuOC0uODdsLS44NyAxLjgxek0xNC41NCAxOS41OGwuODcgMS44MWMuNjMtLjIzIDEuMjQtLjUyIDEuOC0uODdsLS44Ny0xLjgxYy0uNTYuMzYtMS4xNi42NS0xLjguODd6TTMuNiAxNy40MmE5LjQgOS40IDAgMCAwIDEuMjUgMS41NmwxLjU4LTEuMjZhNy44NyA3Ljg3IDAgMCAxLTEuMjQtMS41N0wzLjYgMTcuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vaXNlQ29udHJvbE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjMS40NCAwIDIuNzkuMzggMy45NSAxLjA1TDE3LjQgMy42QzE1Ljg1IDIuNTkgMTMuOTkgMiAxMiAycy0zLjg1LjU5LTUuNDEgMS41OWwxLjQ1IDEuNDVBOC4wMzQgOC4wMzQgMCAwIDEgMTIgNHpNMjAgMTJjMCAxLjQ0LS4zOCAyLjc5LTEuMDUgMy45NWwxLjQ1IDEuNDVjMS4wMS0xLjU1IDEuNi0zLjQxIDEuNi01LjRzLS41OS0zLjg1LTEuNTktNS40MWwtMS40NSAxLjQ1QTguMDM0IDguMDM0IDAgMCAxIDIwIDEyek0xMiAyMGMtMS40NCAwLTIuNzktLjM4LTMuOTUtMS4wNUw2LjYgMjAuNEM4LjE1IDIxLjQxIDEwLjAxIDIyIDEyIDIyczMuODUtLjU5IDUuNDEtMS41OWwtMS40NS0xLjQ1QTguMDM0IDguMDM0IDAgMCAxIDEyIDIwek00IDEyYzAtMS40NC4zOC0yLjc5IDEuMDUtMy45NUwzLjU5IDYuNTlDMi41OSA4LjE1IDIgMTAuMDEgMiAxMnMuNTkgMy44NSAxLjU5IDUuNDFsMS40NS0xLjQ1QTguMDM0IDguMDM0IDAgMCAxIDQgMTJ6TTExLjUgNkM5LjAyIDYgNyA4LjAyIDcgMTAuNWMwIDEuMjIuNDkgMi40MSAxLjM1IDMuMjdsMS4zNiAxLjM2Yy4xNy4xNy4zMS40NC40NC44MkEzLjAxMyAzLjAxMyAwIDAgMCAxMyAxOGMxLjY1IDAgMy0xLjM1IDMtM2gtMmExLjAwMyAxLjAwMyAwIDAgMS0xLjk1LjMyYy0uMTUtLjQ0LS40LTEuMDgtLjkzLTEuNjFsLTEuMzYtMS4zNkM5LjI4IDExLjg3IDkgMTEuMTkgOSAxMC41YTIuNSAyLjUgMCAwIDEgNC45NS0uNWgyLjAyYy0uMjUtMi4yNS0yLjE2LTQtNC40Ny00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzLjVcIixcImN5XCI6XCIxMi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90QWNjZXNzaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDExLjA1LTMuNDItMy40MmMuMzItLjM0Ljc0LS41NyAxLjIzLS42MS40OC0uMDQuODQuMDcgMS4yLjI2LjE5LjEuMzkuMjIuNjMuNDZsMS4yOSAxLjQzYy45OCAxLjA4IDIuNTMgMS44NSA0LjA3IDEuODN2MmMtMS43NS0uMDEtMy43MS0uODgtNS0xLjk1ek0xMiA2YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNMi44MSAyLjgxIDEuMzkgNC4yMiAxMCAxMi44M1YxNWMwIDEuMS45IDIgMiAyaDIuMTdsNS42MSA1LjYxIDEuNDEtMS40MUwyLjgxIDIuODF6TTEwIDIwYy0xLjY2IDAtMy0xLjM0LTMtMyAwLTEuMzEuODQtMi40MSAyLTIuODNWMTIuMWE1IDUgMCAxIDAgNS45IDUuOWgtMi4wN2MtLjQxIDEuMTYtMS41MiAyLTIuODMgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90U3RhcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE0SDlWOGgydjh6bTEgMFY4bDUgNC01IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdGVBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTIgMTRoLTN2M2gtMnYtM0g4di0yaDN2LTNoMnYzaDN2MnptLTMtN1YzLjVMMTguNSA5SDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPZmZsaW5lQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE9mZmxpbmVQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnptNSAxNkg3di0yaDEwdjJ6bS02LjctNEw3IDEwLjdsMS40LTEuNCAxLjkgMS45IDUuMy01LjNMMTcgNy4zIDEwLjMgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE9uRGV2aWNlVHJhaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNmgydjFoLTJ6TTEyIDExYy0xLjEgMC0yIC45LTIgMiAwIC43NC40IDEuMzggMSAxLjcydi43OGgydi0uNzhjLjYtLjM1IDEtLjk4IDEtMS43MiAwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMS4wMSA2IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTggMThINlY2aDEydjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4wMSAxNS45NWMuNjItLjgzLjk5LTEuODQuOTktMi45NXMtLjM3LTIuMTItLjk5LTIuOTVsLTEuMDcgMS4wN2MuMzUuNTQuNTYgMS4xOS41NiAxLjg4cy0uMjEgMS4zNC0uNTYgMS44OGwxLjA3IDEuMDd6TTkuMDYgMTQuODhjLS4zNS0uNTQtLjU2LTEuMTktLjU2LTEuODggMC0xLjkzIDEuNTctMy41IDMuNS0zLjV2MS4yNWwyLjI1LTItMi4yNS0yVjhjLTIuNzYgMC01IDIuMjQtNSA1IDAgMS4xMS4zNyAyLjEyLjk5IDIuOTVsMS4wNy0xLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPbmxpbmVQcmVkaWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxMS41YzAgMi0yLjUgMy41LTIuNSA1aC0yYzAtMS41LTIuNS0zLTIuNS01QzguNSA5LjU3IDEwLjA3IDggMTIgOHMzLjUgMS41NyAzLjUgMy41em0tMi41IDZoLTJWMTloMnYtMS41em05LTUuNWMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN2wtMS4wNiAxLjA2QTguNDgxIDguNDgxIDAgMCAxIDIwLjUgMTJjMCAyLjM0LS45NSA0LjQ3LTIuNDkgNi4wMWwxLjA2IDEuMDZBOS45NjkgOS45NjkgMCAwIDAgMjIgMTJ6TTMuNSAxMmMwLTIuMzQuOTUtNC40NyAyLjQ5LTYuMDFMNC45MyA0LjkzQTkuOTY5IDkuOTY5IDAgMCAwIDIgMTJjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS4wNi0xLjA2QTguNDgxIDguNDgxIDAgMCAxIDMuNSAxMnptMTQgMGMwIDEuNTItLjYyIDIuODktMS42MSAzLjg5bDEuMDYgMS4wNkE2Ljk3NiA2Ljk3NiAwIDAgMCAxOSAxMmMwLTEuOTMtLjc4LTMuNjgtMi4wNS00Ljk1bC0xLjA2IDEuMDZjLjk5IDEgMS42MSAyLjM3IDEuNjEgMy44OXpNNy4wNSAxNi45NWwxLjA2LTEuMDZjLTEtMS0xLjYxLTIuMzctMS42MS0zLjg5cy42Mi0yLjg5IDEuNjEtMy44OUw3LjA1IDcuMDVBNi45NzYgNi45NzYgMCAwIDAgNSAxMmMwIDEuOTMuNzggMy42OCAyLjA1IDQuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE9wYWNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDBIMHYyNGgyNFYwem0wIDBIMHYyNGgyNFYwek0wIDI0aDI0VjBIMHYyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjYgOCAxMiAyLjM1IDYuMzQgOEE4LjAyIDguMDIgMCAwIDAgNCAxMy42NGMwIDIgLjc4IDQuMTEgMi4zNCA1LjY3YTcuOTkgNy45OSAwIDAgMCAxMS4zMiAwYzEuNTYtMS41NiAyLjM0LTMuNjcgMi4zNC01LjY3UzE5LjIyIDkuNTYgMTcuNjYgOHpNNiAxNGMuMDEtMiAuNjItMy4yNyAxLjc2LTQuNEwxMiA1LjI3bDQuMjQgNC4zOEMxNy4zOCAxMC43NyAxNy45OSAxMiAxOCAxNEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPcGVuSW5Ccm93c2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg0di0ySDVWOGgxNHYxMGgtNHYyaDRjMS4xIDAgMi0uOSAyLTJWNmEyIDIgMCAwIDAtMi0yem0tNyA2LTQgNGgzdjZoMnYtNmgzbC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE9wZW5JbkZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMVYzaC04bDMuMjkgMy4yOS0xMCAxMEwzIDEzdjhoOGwtMy4yOS0zLjI5IDEwLTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPcGVuSW5OZXdPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43OSA1LjggMTQgM2g3djdsLTIuNzktMi44LTQuMDkgNC4wOS0xLjQxLTEuNDEgNC4wOC00LjA4ek0xOSAxMnY0LjE3bDIgMlYxMmgtMnptLjc4IDEwLjYxTDE4LjE3IDIxSDVhMiAyIDAgMCAxLTItMlY1LjgzTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnpNMTYuMTcgMTlsLTQuODgtNC44OC0xLjU5IDEuNTktMS40MS0xLjQxIDEuNTktMS41OUw1IDcuODNWMTloMTEuMTd6TTcuODMgNUgxMlYzSDUuODNsMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPcGVuSW5OZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoN1YzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPcGVuV2l0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDloNFY2aDNsLTUtNS01IDVoM3Yzem0tMSAxSDZWN2wtNSA1IDUgNXYtM2gzdi00em0xNCAyLTUtNXYzaC0zdjRoM3YzbDUtNXptLTkgM2gtNHYzSDdsNSA1IDUtNWgtM3YtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0Ym9uZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEuODggOS41NEw4LjkyIDE2LjVsLTEuNDEtMS40MSA0Ljk2LTQuOTZMMTAuMzQgOGw1LjY1LjAxLjAxIDUuNjUtMi4xMi0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRib3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEuODggOS41NEw4LjkyIDE2LjVsLTEuNDEtMS40MSA0Ljk2LTQuOTZMMTAuMzQgOGw1LjY1LjAxLjAxIDUuNjUtMi4xMi0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINC45OWMtMS4xMSAwLTEuOTguOS0xLjk4IDJMMyAxOWMwIDEuMS44OCAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEyaC00YzAgMS42Ni0xLjM1IDMtMyAzcy0zLTEuMzQtMy0zSDQuOTlWNUgxOXYxMHpNOCAxMWgydjNoNHYtM2gybC00LTQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRnb2luZ01haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41IDExYy4xNyAwIC4zNC4wMS41LjAzVjYuODdDMTkgNS44NCAxOC4xNiA1IDE3LjEzIDVIMy44N0MyLjg0IDUgMiA1Ljg0IDIgNi44N3YxMC4yNkMyIDE4LjE2IDIuODQgMTkgMy44NyAxOWg5LjczYy0uMzgtLjc1LS42LTEuNi0uNi0yLjUgMC0zLjA0IDIuNDYtNS41IDUuNS01LjV6bS04LjEgMkw0IDkuMTlWN2guMjNsNi4xOCAzLjY4TDE2Ljc0IDdIMTd2Mi4xNkwxMC40IDEzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxMy0xLjQxIDEuNDFMMTkuMTcgMTZIMTV2Mmg0LjE3bC0xLjU4IDEuNTlMMTkgMjFsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek05IDEyYy0uNTUgMC0xLS40NS0xLTFWOGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2M2MwIC41NS0uNDUgMS0xIDF6bTUgNmgtNHYtMmMwLTEuMS45LTIgMi0yczIgLjkgMiAydjJ6bTItN2MwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVY4YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRwdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyAxNyA1LTUtNS01LTEuNDEgMS40MUwxOC4xNyAxMUg5djJoOS4xN2wtMi41OCAyLjU5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoMTR2MmgyVjVhMiAyIDAgMCAwLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFnZXZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDlhMi41IDIuNSAwIDAgMCAwIDUgMi41IDIuNSAwIDAgMCAwLTV6TTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tMy4yMSAxNC4yMS0yLjkxLTIuOTFjLS42OS40NC0xLjUxLjctMi4zOS43QzkuMDEgMTYgNyAxMy45OSA3IDExLjVTOS4wMSA3IDExLjUgNyAxNiA5LjAxIDE2IDExLjVjMCAuODgtLjI2IDEuNjktLjcgMi4zOWwyLjkxIDIuOS0xLjQyIDEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0uODggMTUuNzZWMTloLTEuNzV2LTEuMjljLS43NC0uMTgtMi4zOS0uNzctMy4wMi0yLjk2bDEuNjUtLjY3Yy4wNi4yMi41OCAyLjA5IDIuNCAyLjA5LjkzIDAgMS45OC0uNDggMS45OC0xLjYxIDAtLjk2LS43LTEuNDYtMi4yOC0yLjAzLTEuMS0uMzktMy4zNS0xLjAzLTMuMzUtMy4zMSAwLS4xLjAxLTIuNCAyLjYyLTIuOTZWNWgxLjc1djEuMjRjMS44NC4zMiAyLjUxIDEuNzkgMi42NiAyLjIzbC0xLjU4LjY3Yy0uMTEtLjM1LS41OS0xLjM0LTEuOS0xLjM0LS43IDAtMS44MS4zNy0xLjgxIDEuMzkgMCAuOTUuODYgMS4zMSAyLjY0IDEuOSAyLjQuODMgMy4wMSAyLjA1IDMuMDEgMy40NSAwIDIuNjMtMi41IDMuMTMtMy4wMiAzLjIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYW5Ub29sQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuOTggMTQuODItLjYzIDQuNDZjLS4xNC45OS0uOTkgMS43Mi0xLjk4IDEuNzJoLTYuMTZjLS41MyAwLTEuMjktLjIxLTEuNjYtLjU5TDUgMTUuNjJsLjgzLS44NGMuMjQtLjI0LjU4LS4zNS45Mi0uMjhsMy4yNS43NFY0LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2NmguOTFjLjMxIDAgLjYyLjA3Ljg5LjIxbDQuMDkgMi4wNGMuNzcuMzkgMS4yMSAxLjIyIDEuMDkgMi4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFuVG9vbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDUuNVYyMGMwIDIuMi0xLjggNC00IDRoLTcuM2MtMS4wOCAwLTIuMS0uNDMtMi44NS0xLjE5TDEgMTQuODNzMS4yNi0xLjIzIDEuMy0xLjI1Yy4yMi0uMTkuNDktLjI5Ljc5LS4yOS4yMiAwIC40Mi4wNi42LjE2LjA0LjAxIDQuMzEgMi40NiA0LjMxIDIuNDZWNGMwLS44My42Ny0xLjUgMS41LTEuNVMxMSAzLjE3IDExIDR2N2gxVjEuNWMwLS44My42Ny0xLjUgMS41LTEuNVMxNSAuNjcgMTUgMS41VjExaDFWMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjExaDFWNS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXltZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2YzAtMS4xMS0uODktMi0yLTJ6bTAgMTRINHYtNmgxNnY2em0wLTEwSDRWNmgxNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZW5kaW5nQWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDE2LjUgMTcuMlYxNGgxdjIuNzlsMS44NSAxLjg1LS43Ljcxek0xOCAzaC0zLjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNWMwIDEuMS45IDIgMiAyaDYuMTFhNi43NDMgNi43NDMgMCAwIDEtMS40Mi0ySDZWNWgydjNoOFY1aDJ2NS4wOGMuNzEuMSAxLjM4LjMxIDIgLjZWNWMwLTEuMS0uOS0yLTItMnptLTYgMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZW5kaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNyAxMy41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxMUM5LjQzIDExIDExIDkuNDMgMTEgNy41UzkuNDMgNCA3LjUgNCA0IDUuNTcgNCA3LjUgNS41NyAxMSA3LjUgMTF6bTAtNUM4LjMzIDYgOSA2LjY3IDkgNy41UzguMzMgOSA3LjUgOSA2IDguMzMgNiA3LjUgNi42NyA2IDcuNSA2ek00LjAwMiAxOC41ODMgMTguNTkgMy45OTZsMS40MTQgMS40MTRMNS40MTcgMTkuOTk3ek0xNi41IDEzYy0xLjkzIDAtMy41IDEuNTctMy41IDMuNXMxLjU3IDMuNSAzLjUgMy41IDMuNS0xLjU3IDMuNS0zLjUtMS41Ny0zLjUtMy41LTMuNXptMCA1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVybUNhbWVyYU1pYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMTdMMTUgM0g5TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDd2LTIuMDljLTIuODMtLjQ4LTUtMi45NC01LTUuOTFoMmMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00aDJjMCAyLjk3LTIuMTcgNS40My01IDUuOTFWMjFoN2MxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tNiA4YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVybUNvbnRhY3RDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgM2MxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJINnYtMWMwLTIgNC0zLjEgNi0zLjFzNiAxLjEgNiAzLjF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVybURhdGFTZXR0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTkgMTEuNWMuMzQgMCAuNjcuMDMgMSAuMDdMMjAgMCAwIDIwaDExLjU2Yy0uMDQtLjMzLS4wNy0uNjYtLjA3LTEgMC00LjE0IDMuMzYtNy41IDcuNS03LjV6bTMuNzEgNy45OWMuMDItLjE2LjA0LS4zMi4wNC0uNDkgMC0uMTctLjAxLS4zMy0uMDQtLjQ5bDEuMDYtLjgzYS4yNi4yNiAwIDAgMCAuMDYtLjMybC0xLTEuNzNjLS4wNi0uMTEtLjE5LS4xNS0uMzEtLjExbC0xLjI0LjVjLS4yNi0uMi0uNTQtLjM3LS44NS0uNDlsLS4xOS0xLjMyYy0uMDEtLjEyLS4xMi0uMjEtLjI0LS4yMWgtMmMtLjEyIDAtLjIzLjA5LS4yNS4yMWwtLjE5IDEuMzJjLS4zLjEzLS41OS4yOS0uODUuNDlsLTEuMjQtLjVjLS4xMS0uMDQtLjI0IDAtLjMxLjExbC0xIDEuNzNjLS4wNi4xMS0uMDQuMjQuMDYuMzJsMS4wNi44M2EzLjkwOCAzLjkwOCAwIDAgMCAwIC45OGwtMS4wNi44M2EuMjYuMjYgMCAwIDAtLjA2LjMybDEgMS43M2MuMDYuMTEuMTkuMTUuMzEuMTFsMS4yNC0uNWMuMjYuMi41NC4zNy44NS40OWwuMTkgMS4zMmMuMDIuMTIuMTIuMjEuMjUuMjFoMmMuMTIgMCAuMjMtLjA5LjI1LS4yMWwuMTktMS4zMmMuMy0uMTMuNTktLjI5Ljg0LS40OWwxLjI1LjVjLjExLjA0LjI0IDAgLjMxLS4xMWwxLTEuNzNhLjI2LjI2IDAgMCAwLS4wNi0uMzJsLTEuMDctLjgzem0tMy43MSAxLjAxYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVybURldmljZUluZm9ybWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnYyaDJWN3ptMCA0aC0ydjZoMnYtNnptNC05Ljk5TDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1JZGVudGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuOWEyLjEgMi4xIDAgMSAxIDAgNC4yIDIuMSAyLjEgMCAwIDEgMC00LjJtMCA5YzIuOTcgMCA2LjEgMS40NiA2LjEgMi4xdjEuMUg1LjlWMTdjMC0uNjQgMy4xMy0yLjEgNi4xLTIuMU0xMiA0QzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDljLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1NZWRpYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNkgwdjVoLjAxTDAgMjBjMCAxLjEuOSAyIDIgMmgxOHYtMkgyVjZ6bTIwLTJoLThsLTItMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek03IDE1bDQuNS02IDMuNSA0LjUxIDIuNS0zLjAxTDIxIDE1SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1QaG9uZU1zZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA3NCAxNS4wNzQgMCAwIDEtNi41OS02LjU4bDIuMi0yLjIxYy4yOC0uMjcuMzYtLjY2LjI1LTEuMDFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTEyIDN2MTBsMy0zaDZWM2gtOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVybVNjYW5XaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM0M2Ljk1IDMgMy4xNSA0Ljg1IDAgNy4yM0wxMiAyMiAyNCA3LjI1QzIwLjg1IDQuODcgMTcuMDUgMyAxMiAzem0xIDEzaC0ydi02aDJ2NnptLTItOFY2aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGV0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiNS41XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTkuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjM0IDE0Ljg2Yy0uODctMS4wMi0xLjYtMS44OS0yLjQ4LTIuOTEtLjQ2LS41NC0xLjA1LTEuMDgtMS43NS0xLjMyLS4xMS0uMDQtLjIyLS4wNy0uMzMtLjA5LS4yNS0uMDQtLjUyLS4wNC0uNzgtLjA0cy0uNTMgMC0uNzkuMDVjLS4xMS4wMi0uMjIuMDUtLjMzLjA5LS43LjI0LTEuMjguNzgtMS43NSAxLjMyLS44NyAxLjAyLTEuNiAxLjg5LTIuNDggMi45MS0xLjMxIDEuMzEtMi45MiAyLjc2LTIuNjIgNC43OS4yOSAxLjAyIDEuMDIgMi4wMyAyLjMzIDIuMzIuNzMuMTUgMy4wNi0uNDQgNS41NC0uNDRoLjE4YzIuNDggMCA0LjgxLjU4IDUuNTQuNDQgMS4zMS0uMjkgMi4wNC0xLjMxIDIuMzMtMi4zMi4zMS0yLjA0LTEuMy0zLjQ5LTIuNjEtNC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA5aDEuNXY2SDEzdi0yLjVoLTJWMTVIOS41VjlIMTF2MmgyVjl6bS01IDEuNXYxYzAgLjgtLjcgMS41LTEuNSAxLjVoLTJ2MkgzVjloMy41Yy44IDAgMS41LjcgMS41IDEuNXptLTEuNSAwaC0ydjFoMnYtMXptMTUgMHYxYzAgLjgtLjcgMS41LTEuNSAxLjVoLTJ2MmgtMS41VjlIMjBjLjggMCAxLjUuNyAxLjUgMS41em0tMS41IDBoLTJ2MWgydi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaWN0dXJlSW5QaWN0dXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMWgtOHY2aDh2LTZ6bTQgOFY0Ljk4QzIzIDMuODggMjIuMSAzIDIxIDNIM2MtMS4xIDAtMiAuODgtMiAxLjk4VjE5YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJ6bS0yIC4wMkgzVjQuOTdoMTh2MTQuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpY3R1cmVJblBpY3R1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3aC04djZoOFY3em0yLTRIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOThWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOThoMTh2MTQuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpbkVuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyVjZINHYxMmgxMHYySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxNmMxLjEgMCAyIC45IDIgMnY2aC0yem0tMSAyYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptLTQuMzQtNkg5djUuNjZsMi4xMi0yLjEyIDIuODMgMi44MyAxLjQxLTEuNDEtMi44My0yLjgzTDE0LjY2IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpbkludm9rZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEydjZjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDEwdjJINHYxMmgxNnYtNmgyem0wLTVjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDMgMS4zNCAzIDMgMyAzLTEuMzQgMy0zem0tMTAuNTMgNS4xMi0yLjgzIDIuODMgMS40MSAxLjQxIDIuODMtMi44M0wxNSAxNS42NlYxMEg5LjM0bDIuMTMgMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGluY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDIuNVYxaDV2NUg5LjVWMy41NkwzLjU2IDkuNUg2VjExSDFWNmgxLjV2Mi40NEw4LjQ0IDIuNUg2em0xNi45OCAxNC4zMi0uNjMgNC40NmMtLjE0Ljk5LS45OSAxLjcyLTEuOTggMS43MmgtNi4xNmMtLjUzIDAtMS4yOS0uMjEtMS42Ni0uNTlMOCAxNy42MmwuODMtLjg0Yy4yNC0uMjQuNTgtLjM1LjkyLS4yOGwzLjI1Ljc0VjYuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXY2aC45MWMuMzEgMCAuNjIuMDcuODkuMjFsNC4wOSAyLjA0Yy43Ny4zOSAxLjIxIDEuMjIgMS4wOSAyLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGFnaWFyaXNtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTEuMDQgMTcuNDUtMS44OC0xLjg4Yy0xLjMzLjcxLTMuMDEuNTMtNC4xMy0uNTlhMy40OTUgMy40OTUgMCAwIDEgMC00Ljk1IDMuNDk1IDMuNDk1IDAgMCAxIDQuOTUgMCAzLjQ4IDMuNDggMCAwIDEgLjU5IDQuMTNsMS44OCAxLjg4LTEuNDEgMS40MXpNMTMgOVYzLjVMMTguNSA5SDEzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExLjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheUZvcldvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1djUuNTlINy41bDQuNSA0LjUgNC41LTQuNUgxM1Y1aC0yem0tNSA5YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZoLTJjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9seW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRoLTRMNy4xMSAxNi42MyA0LjUgMTIgOSA0SDVMLjUgMTIgNSAyMGg0bDcuODktMTIuNjNMMTkuNSAxMiAxNSAyMGg0bDQuNS04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQb3dlclNldHRpbmdzTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2gtMnYxMGgyVjN6bTQuODMgMi4xNy0xLjQyIDEuNDJBNi45MiA2LjkyIDAgMCAxIDE5IDEyYzAgMy44Ny0zLjEzIDctNyA3QTYuOTk1IDYuOTk1IDAgMCAxIDcuNTggNi41OEw2LjE3IDUuMTdBOC45MzIgOC45MzIgMCAwIDAgMyAxMmE5IDkgMCAwIDAgMTggMGMwLTIuNzQtMS4yMy01LjE4LTMuMTctNi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJlZ25hbnRXb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNGMwLTEuMTEuODktMiAyLTJzMiAuODkgMiAyLS44OSAyLTIgMi0yLS44OS0yLTJ6bTcgOWEzLjI4NSAzLjI4NSAwIDAgMC0yLTNjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDN2N2gydjVoM3YtNWgzdi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcmV2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTZINVY3aDE0djEyem0tNS41LTZjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjUuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjV6TTEyIDljLTIuNzMgMC01LjA2IDEuNjYtNiA0IC45NCAyLjM0IDMuMjcgNCA2IDRzNS4wNi0xLjY2IDYtNGMtLjk0LTIuMzQtMy4yNy00LTYtNHptMCA2LjVhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOEg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zem0tMyAxMUg4di01aDh2NXptMy03Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0xLTlINnY0aDEyVjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaXZhY3lUaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHptLTEgNmgydjJoLTJWN3ptMCA0aDJ2NmgtMnYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJpdmF0ZUNvbm5lY3Rpdml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkzIDExYy0uNDktMy4zOS0zLjQtNi02LjkzLTZzLTYuNDQgMi42MS02LjkzIDZIMnYyaDMuMDdjLjQ5IDMuMzkgMy40IDYgNi45MyA2czYuNDQtMi42MSA2LjkzLTZIMjJ2LTJoLTMuMDd6TTE1IDE0LjVjMCAuNTUtLjQ1IDEtMSAxaC00Yy0uNTUgMC0xLS40NS0xLTF2LTNjMC0uNTUuNDUtMSAxLTF2LTFhMiAyIDAgMCAxIDIuMzQtMS45N2MuOTguMTYgMS42NiAxLjA4IDEuNjYgMi4wOHYuODljLjU1IDAgMSAuNDUgMSAxdjN6TTEyLjc1IDEzYzAgLjQxLS4zNC43NS0uNzUuNzVzLS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1Ljc1LjM0Ljc1Ljc1ek0xMyA5LjV2MWgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByb2R1Y3Rpb25RdWFudGl0eUxpbWl0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwaC0yVjhoMnYyem0wLTRoLTJWMWgydjV6TTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOC45LTVoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNMMjEgNC45NiAxOS4yNSA0bC0zLjcgN0g4LjUzTDQuMjcgMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHVibGlzaGVkV2l0aENoYW5nZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy42NiA5LjUzLTcuMDcgNy4wNy00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44MyA1LjY2LTUuNjYgMS40MSAxLjQxek00IDEyYzAtMi4zMyAxLjAyLTQuNDIgMi42Mi01Ljg4TDkgOC41di02SDNsMi4yIDIuMkMzLjI0IDYuNTIgMiA5LjExIDIgMTJjMCA1LjE5IDMuOTUgOS40NSA5IDkuOTV2LTIuMDJjLTMuOTQtLjQ5LTctMy44Ni03LTcuOTN6bTE4IDBjMC01LjE5LTMuOTUtOS40NS05LTkuOTV2Mi4wMmMzLjk0LjQ5IDcgMy44NiA3IDcuOTMgMCAyLjMzLTEuMDIgNC40Mi0yLjYyIDUuODhMMTUgMTUuNXY2aDZsLTIuMi0yLjJjMS45Ni0xLjgyIDMuMi00LjQxIDMuMi03LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1ZXJ5QnVpbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1ZXN0aW9uQW5zd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNmgtMnY5SDZ2MmMwIC41NS40NSAxIDEgMWgxMWw0IDRWN2MwLS41NS0uNDUtMS0xLTF6bS00IDZWM2MwLS41NS0uNDUtMS0xLTFIM2MtLjU1IDAtMSAuNDUtMSAxdjE0bDQtNGgxMGMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1ZXN0aW9uTWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjA3IDEyLjg1Yy43Ny0xLjM5IDIuMjUtMi4yMSAzLjExLTMuNDQuOTEtMS4yOS40LTMuNy0yLjE4LTMuNy0xLjY5IDAtMi41MiAxLjI4LTIuODcgMi4zNEw2LjU0IDYuOTZDNy4yNSA0LjgzIDkuMTggMyAxMS45OSAzYzIuMzUgMCAzLjk2IDEuMDcgNC43OCAyLjQxLjcgMS4xNSAxLjExIDMuMy4wMyA0LjktMS4yIDEuNzctMi4zNSAyLjMxLTIuOTcgMy40NS0uMjUuNDYtLjM1Ljc2LS4zNSAyLjI0aC0yLjg5Yy0uMDEtLjc4LS4xMy0yLjA1LjQ4LTMuMTV6TTE0IDIwYzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUXVpY2tyZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDRjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGg5di04aDdWNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuNSAxNmgtMi4ybDEuNy00aC01djZoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWJhc2VFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOVwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNzYgOS4yNCAxNSA1IDEwLjc2Ljc2IDkuMzQgMi4xNyAxMS4xNyA0SDcuODJDNy40IDIuODQgNi4zIDIgNSAyIDMuMzQgMiAyIDMuMzQgMiA1YzAgMS4zLjg0IDIuNCAyIDIuODJ2OC4zN0MyLjg0IDE2LjYgMiAxNy43IDIgMTljMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2MwLTEuMy0uODQtMi40LTItMi44MlY3LjgyYy44NS0uMzEgMS41MS0uOTcgMS44Mi0xLjgyaDMuMzZMOS4zNCA3LjgzbDEuNDIgMS40MXpNMTAgMTl2M2gzbDYuMjYtNi4yNi0zLTN6TTIwLjEyIDEwLjI5YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS4zOCAxLjM4IDMgMyAxLjM4LTEuMzhhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0xLjU5LTEuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlY2VpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxN0g2di0yaDEydjJ6bTAtNEg2di0yaDEydjJ6bTAtNEg2VjdoMTJ2MnpNMyAyMmwxLjUtMS41TDYgMjJsMS41LTEuNUw5IDIybDEuNS0xLjVMMTIgMjJsMS41LTEuNUwxNSAyMmwxLjUtMS41TDE4IDIybDEuNS0xLjVMMjEgMjJWMmwtMS41IDEuNUwxOCAybC0xLjUgMS41TDE1IDJsLTEuNSAxLjVMMTIgMmwtMS41IDEuNUw5IDIgNy41IDMuNSA2IDIgNC41IDMuNSAzIDJ2MjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlY29yZFZvaWNlT3ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjlcIixcInJcIjpcIjRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNWMtMi42NyAwLTggMS4zNC04IDR2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHptNy43Ni05LjY0LTEuNjggMS42OWMuODQgMS4xOC44NCAyLjcxIDAgMy44OWwxLjY4IDEuNjljMi4wMi0yLjAyIDIuMDItNS4wNyAwLTcuMjd6TTIwLjA3IDJsLTEuNjMgMS42M2MyLjc3IDMuMDIgMi43NyA3LjU2IDAgMTAuNzRMMjAuMDcgMTZjMy45LTMuODkgMy45MS05Ljk1IDAtMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlZGVlbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLTIuMThjLjExLS4zMS4xOC0uNjUuMTgtMWEyLjk5NiAyLjk5NiAwIDAgMC01LjUtMS42NWwtLjUuNjctLjUtLjY4QzEwLjk2IDIuNTQgMTAuMDUgMiA5IDIgNy4zNCAyIDYgMy4zNCA2IDVjMCAuMzUuMDcuNjkuMTggMUg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS01LTJjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNOSA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTExIDE1SDR2LTJoMTZ2MnptMC01SDRWOGg1LjA4TDcgMTAuODMgOC42MiAxMiAxMSA4Ljc2bDEtMS4zNiAxIDEuMzZMMTUuMzggMTIgMTcgMTAuODMgMTQuOTIgOEgyMHY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmVEb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMS43OSAxMiA1LjU4IDUuNTlMNS45NiAxOSAuMzcgMTMuNDEgMS43OSAxMnptLjQ1LTcuNzhMMTIuOSAxNC44OWwtMS4yOCAxLjI4TDcuNDQgMTJsLTEuNDEgMS40MUwxMS42MiAxOWwyLjY5LTIuNjkgNC44OSA0Ljg5IDEuNDEtMS40MUwzLjY1IDIuODEgMi4yNCA0LjIyem0xNC45IDkuMjdMMjMuNjIgNyAyMi4yIDUuNTlsLTYuNDggNi40OCAxLjQyIDEuNDJ6TTE3Ljk2IDdsLTEuNDEtMS40MS0zLjY1IDMuNjYgMS40MSAxLjQxTDE3Ljk2IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZVNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjczIDIyLjczIDIuNzcgMi43NyAyIDJsLS43My0uNzNMMCAyLjU0bDQuMzkgNC4zOSAyLjIxIDQuNjYtMS4zNSAyLjQ1Yy0uMTYuMjgtLjI1LjYxLS4yNS45NiAwIDEuMS45IDIgMiAyaDcuNDZsMS4zOCAxLjM4QTEuOTk3IDEuOTk3IDAgMCAwIDE3IDIyYy42NyAwIDEuMjYtLjMzIDEuNjItLjg0TDIxLjQ2IDI0bDEuMjctMS4yN3pNNy40MiAxNWMtLjE0IDAtLjI1LS4xMS0uMjUtLjI1bC4wMy0uMTIuOS0xLjYzaDIuMzZsMiAySDcuNDJ6bTguMTMtMmMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy41OC02LjQ5QTEuMDAzIDEuMDAzIDAgMCAwIDIwIDRINi41NGw5LjAxIDl6TTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE1aDE4di0ySDN2MnptMCA0aDE4di0ySDN2MnptMC04aDE4VjlIM3Yyem0wLTZ2MmgxOFY1SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcGFydGl0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgxOHYtNkgzdjZ6bTcuMzMtMnYtMmgzLjMzdjJoLTMuMzN6TTE5IDE5aC0zLjMzdi0ySDE5djJ6TTUgMTdoMy4zM3YySDV2LTJ6TTYgMTBsMS40Mi0xLjQyTDUuODMgN0gxN2MxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJIM3YyaDE0YzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00SDUuODNsMS41OS0xLjU5TDYgMiAyIDZsNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBvcnRQcm9ibGVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXF1ZXN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTEgOWgtNHYxaDNjLjU1IDAgMSAuNDUgMSAxdjNjMCAuNTUtLjQ1IDEtMSAxaC0xdjFoLTJ2LTFIOXYtMmg0di0xaC0zYy0uNTUgMC0xLS40NS0xLTF2LTNjMC0uNTUuNDUtMSAxLTFoMVY4aDJ2MWgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RvcmVGcm9tVHJhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNHpNNiA3djEyYzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ6bTggN3Y0aC00di00SDhsNC00IDQgNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVzdG9yZVBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bS0yIDE2Yy0yLjA1IDAtMy44MS0xLjI0LTQuNTgtM2gxLjcxYy42My45IDEuNjggMS41IDIuODcgMS41IDEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzEzLjkzIDkuNSAxMiA5LjVhMy41IDMuNSAwIDAgMC0zLjEgMS45bDEuNiAxLjZoLTRWOWwxLjMgMS4zQzguNjkgOC45MiAxMC4yMyA4IDEyIDhjMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYTkgOSAwIDAgMC05IDlIMWwzLjg5IDMuODkuMDcuMTRMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQTguOTU0IDguOTU0IDAgMCAwIDEzIDIxYTkgOSAwIDAgMCAwLTE4em0tMSA1djVsNC4yOCAyLjU0LjcyLTEuMjEtMy41LTIuMDhWOEgxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9ja2V0TGF1bmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4xOSA2LjM1Yy0yLjA0IDIuMjktMy40NCA1LjU4LTMuNTcgNS44OUwyIDEwLjY5bDQuMDUtNC4wNWMuNDctLjQ3IDEuMTUtLjY4IDEuODEtLjU1bDEuMzMuMjZ6TTExLjE3IDE3czMuNzQtMS41NSA1Ljg5LTMuN2M1LjQtNS40IDQuNS05LjYyIDQuMjEtMTAuNTctLjk1LS4zLTUuMTctMS4xOS0xMC41NyA0LjIxQzguNTUgOS4wOSA3IDEyLjgzIDcgMTIuODNMMTEuMTcgMTd6bTYuNDgtMi4xOWMtMi4yOSAyLjA0LTUuNTggMy40NC01Ljg5IDMuNTdMMTMuMzEgMjJsNC4wNS00LjA1Yy40Ny0uNDcuNjgtMS4xNS41NS0xLjgxbC0uMjYtMS4zM3pNOSAxOGMwIC44My0uMzQgMS41OC0uODggMi4xMkM2Ljk0IDIxLjMgMiAyMiAyIDIycy43LTQuOTQgMS44OC02LjEyQTIuOTk2IDIuOTk2IDAgMCAxIDkgMTh6bTQtOWMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb2NrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyLjVzNC41IDIuMDQgNC41IDEwLjVjMCAyLjQ5LTEuMDQgNS41Ny0xLjYgN0g5LjFjLS41Ni0xLjQzLTEuNi00LjUxLTEuNi03QzcuNSA0LjU0IDEyIDIuNSAxMiAyLjV6bTIgOC41YzAtMS4xLS45LTItMi0ycy0yIC45LTIgMiAuOSAyIDIgMiAyLS45IDItMnptLTYuMzEgOS41MmMtLjQ4LTEuMjMtMS41Mi00LjE3LTEuNjctNi44N2wtMS4xMy43NWMtLjU2LjM4LS44OSAxLS44OSAxLjY3VjIybDMuNjktMS40OHpNMjAgMjJ2LTUuOTNjMC0uNjctLjMzLTEuMjktLjg5LTEuNjZsLTEuMTMtLjc1Yy0uMTUgMi42OS0xLjIgNS42NC0xLjY3IDYuODdMMjAgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6bTAgOS41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb3VuZGVkQ29ybmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTloMnYyaC0ydi0yem0wLTJoMnYtMmgtMnYyek0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem0wLTRoMlYzSDN2MnptNCAwaDJWM0g3djJ6bTggMTZoMnYtMmgtMnYyem0tNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptLTggMGgydi0ySDd2MnptLTQgMGgydi0ySDN2MnpNMjEgOGMwLTIuNzYtMi4yNC01LTUtNWgtNXYyaDVjMS42NSAwIDMgMS4zNSAzIDN2NWgyVjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvd2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxNC41IDQgMTlsMS41IDEuNUw5IDE3aDJsLTIuNS0yLjV6TTE1IDFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDIwLjAxTDE4IDI0bC0yLjk5LTMuMDFWMTkuNWwtNy4xLTcuMDljLS4zMS4wNS0uNjEuMDctLjkxLjA3di0yLjE2YzEuNjYuMDMgMy42MS0uODcgNC42Ny0yLjA0bDEuNC0xLjU1Yy4zNS0uMzkuOTktLjczIDEuNjUtLjczaC4wM0MxNS45OSA2LjAxIDE3IDcuMDIgMTcgOC4yNnY1Ljc1YzAgLjg0LS4zNSAxLjYxLS45MiAyLjE2bC0zLjU4LTMuNTh2LTIuMjdjLS42My41Mi0xLjQzIDEuMDItMi4yOSAxLjM5TDE2LjUgMThIMThsMyAzLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTQgMTEgMTMgNy40NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNCAxLjQxIDEuNDFMMTYuNTQgMTF6TTExIDdIMnYyaDlWN3ptMTAgNi40MUwxOS41OSAxMiAxNyAxNC41OSAxNC40MSAxMiAxMyAxMy40MSAxNS41OSAxNiAxMyAxOC41OSAxNC40MSAyMCAxNyAxNy40MSAxOS41OSAyMCAyMSAxOC41OSAxOC40MSAxNiAyMSAxMy40MXpNMTEgMTVIMnYyaDl2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhdGVsbGl0ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjQ0LjU5LTMuMTggMy4xOGMtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wxLjI0IDEuMjQtLjcxLjcxLTEuMjQtMS4yNWMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBMNy4zIDguNzJjLS43OC43OC0uNzggMi4wNSAwIDIuODNsMS4yNCAxLjI0LS43MS43MS0xLjIzLTEuMjVjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwTC41OSAxNS40M2MtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wzLjU0IDMuNTRjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDMuMTgtMy4xOGMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDguOSAxNC41NWwuNzEtLjcxIDEuMjQgMS4yNGMuNzguNzggMi4wNS43OCAyLjgzIDBsMS40MS0xLjQxYy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTMuODQgOS42bC43MS0uNzEgMS4yNCAxLjI0Yy43OC43OCAyLjA1Ljc4IDIuODMgMGwzLjE4LTMuMThjLjc4LS43OC43OC0yLjA1IDAtMi44M0wxOC4yNi41OGMtLjc4LS43OC0yLjA0LS43OC0yLjgyLjAxek02LjYgMTkuMzJsLTEuMDYgMS4wNkwyIDE2Ljg1bDEuMDYtMS4wNiAzLjU0IDMuNTN6bTIuMTItMi4xMi0xLjA2IDEuMDYtMy41NC0zLjU0IDEuMDYtMS4wNiAzLjU0IDMuNTR6bTkuNTQtOS41NEwxNy4yIDguNzJsLTMuNTQtMy41NCAxLjA2LTEuMDYgMy41NCAzLjU0em0yLjEyLTIuMTJMMTkuMzIgNi42bC0zLjU0LTMuNTRMMTYuODUgMmwzLjUzIDMuNTR6TTE0IDIxdjJhOSA5IDAgMCAwIDktOWgtMmMwIDMuODctMy4xMyA3LTcgN3ptMC00djJjMi43NiAwIDUtMi4yNCA1LTVoLTJjMCAxLjY2LTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhdmVkU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6bS0yLjE3LTEuNSAyLjE0LTEuNTMgMi4xNCAxLjUzLS44My0yLjQ2IDIuMTUtMS41aC0yLjYyTDkuNDcgNmwtLjg0IDIuNTRINmwyLjE0IDEuNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhdmluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS44MyA3LjUtMi4yNy0yLjI3Yy4wNy0uNDIuMTgtLjgxLjMyLTEuMTVBMS40OTggMS40OTggMCAwIDAgMTYuNSAyYy0xLjY0IDAtMy4wOS43OS00IDJoLTVDNC40NiA0IDIgNi40NiAyIDkuNVM0LjUgMjEgNC41IDIxSDEwdi0yaDJ2Mmg1LjVsMS42OC01LjU5IDIuODItLjk0VjcuNWgtMi4xN3pNMTMgOUg4VjdoNXYyem0zIDJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NoZWR1bGVTZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEyLjVIMTV2NGwzIDIgLjc1LTEuMjMtMi4yNS0xLjUyVjEyLjV6TTE2IDkgMiAzdjdsOSAyLTkgMnY3bDcuMjctMy4xMUMxMC4wOSAyMC44MyAxMi43OSAyMyAxNiAyM2MzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3ptMCAxMmMtMi43NSAwLTQuOTgtMi4yMi01LTQuOTd2LS4wN2E1LjAwOCA1LjAwOCAwIDAgMSA1LTQuOTdjMi43NiAwIDUgMi4yNCA1IDVTMTguNzYgMjEgMTYgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjaGVkdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDdIMTF2Nmw1LjI1IDMuMTUuNzUtMS4yMy00LjUtMi42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VhcmNoT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMCAwIDkuNSAzQzYuMDggMyAzLjI4IDUuNjQgMy4wMyA5aDIuMDJDNS4zIDYuNzUgNy4xOCA1IDkuNSA1IDExLjk5IDUgMTQgNy4wMSAxNCA5LjVTMTEuOTkgMTQgOS41IDE0Yy0uMTcgMC0uMzMtLjAzLS41LS4wNXYyLjAyYy4xNy4wMi4zMy4wMy41LjAzIDEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi40NyAxMC44MiA0IDEzLjI5bC0yLjQ3LTIuNDctLjcxLjcxTDMuMjkgMTQgLjgyIDE2LjQ3bC43MS43MUw0IDE0LjcxbDIuNDcgMi40Ny43MS0uNzFMNC43MSAxNGwyLjQ3LTIuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWdtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE4aDEydi0ySDl2MnpNMyA2djJoMThWNkgzem02IDdoMTJ2LTJIOXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5kQW5kQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBoLTNMMiAzdjdsOSAyLTkgMnY3bDgtMy41VjIxYzAgMS4xLjkgMiAyIDJoOWMxLjEgMCAyLS45IDItMnYtOWMwLTEuMS0uOS0yLTItMnptMCAxMWgtOXYtOWg5djl6bS00LjUtMUwxMyAxNmgydi0zaDN2M2gybC0zLjUgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2Vuc29yc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMTQgMTAuOTZjLS4wOS4zMy0uMTQuNjgtLjE0IDEuMDQgMCAxLjEuNDUgMi4xIDEuMTcgMi44M2wtMS40MiAxLjQyQTYuMDE4IDYuMDE4IDAgMCAxIDYgMTJjMC0uOTMuMjEtMS44LjU4LTIuNTlMNS4xMSA3Ljk0QTcuODk3IDcuODk3IDAgMCAwIDQgMTJjMCAyLjIxLjkgNC4yMSAyLjM1IDUuNjVsLTEuNDIgMS40MkE5Ljk2OSA5Ljk2OSAwIDAgMSAyIDEyYzAtMi4wNC42MS0zLjkzIDEuNjYtNS41MUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxTDguMTQgMTAuOTZ6bTkuMjggMy42M2MuMzctLjc5LjU4LTEuNjYuNTgtMi41OSAwLTEuNjYtLjY3LTMuMTYtMS43Ni00LjI0bC0xLjQyIDEuNDJhMy45NTEgMy45NTEgMCAwIDEgMS4wNCAzLjg2bDEuNTYgMS41NXpNMjAgMTJjMCAxLjQ4LS40IDIuODctMS4xMSA0LjA2bDEuNDUgMS40NUE5LjkxIDkuOTEgMCAwIDAgMjIgMTJjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDdsLTEuNDIgMS40MkE3Ljk0IDcuOTQgMCAwIDEgMjAgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnNvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc2IDE2LjI0QzYuNjcgMTUuMTYgNiAxMy42NiA2IDEycy42Ny0zLjE2IDEuNzYtNC4yNGwxLjQyIDEuNDJDOC40NSA5LjkgOCAxMC45IDggMTJjMCAxLjEuNDUgMi4xIDEuMTcgMi44M2wtMS40MSAxLjQxem04LjQ4IDBDMTcuMzMgMTUuMTYgMTggMTMuNjYgMTggMTJzLS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MiAxLjQyQzE1LjU1IDkuOSAxNiAxMC45IDE2IDEyYzAgMS4xLS40NSAyLjEtMS4xNyAyLjgzbDEuNDEgMS40MXpNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem04IDJjMCAyLjIxLS45IDQuMjEtMi4zNSA1LjY1bDEuNDIgMS40MkMyMC44OCAxNy4yNiAyMiAxNC43NiAyMiAxMnMtMS4xMi01LjI2LTIuOTMtNy4wN2wtMS40MiAxLjQyQTcuOTQgNy45NCAwIDAgMSAyMCAxMnpNNi4zNSA2LjM1IDQuOTMgNC45M0MzLjEyIDYuNzQgMiA5LjI0IDIgMTJzMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJDNC45IDE2LjIxIDQgMTQuMjEgNCAxMnMuOS00LjIxIDIuMzUtNS42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NBY2Nlc3NpYmlsaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSA0Yy0yLjYxLjctNS42NyAxLTguNSAxcy01Ljg5LS4zLTguNS0xTDMgNmMxLjg2LjUgNCAuODMgNiAxdjEyaDJ2LTZoMnY2aDJWN2MyLS4xNyA0LjE0LS41IDYtMWwtLjUtMnpNMTIgNGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTcgMjRoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzQXBwbGljYXRpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem03LTdINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY1YTIgMiAwIDAgMC0yLTJ6bS0xLjc1IDljMCAuMjMtLjAyLjQ2LS4wNS42OGwxLjQ4IDEuMTZjLjEzLjExLjE3LjMuMDguNDVsLTEuNCAyLjQyYy0uMDkuMTUtLjI3LjIxLS40My4xNWwtMS43NC0uN2MtLjM2LjI4LS43Ni41MS0xLjE4LjY5bC0uMjYgMS44NWMtLjAzLjE3LS4xOC4zLS4zNS4zaC0yLjhjLS4xNyAwLS4zMi0uMTMtLjM1LS4yOWwtLjI2LTEuODVjLS40My0uMTgtLjgyLS40MS0xLjE4LS42OWwtMS43NC43Yy0uMTYuMDYtLjM0IDAtLjQzLS4xNWwtMS40LTIuNDJhLjM1My4zNTMgMCAwIDEgLjA4LS40NWwxLjQ4LTEuMTZjLS4wMy0uMjMtLjA1LS40Ni0uMDUtLjY5IDAtLjIzLjAyLS40Ni4wNS0uNjhsLTEuNDgtMS4xNmEuMzUzLjM1MyAwIDAgMS0uMDgtLjQ1bDEuNC0yLjQyYy4wOS0uMTUuMjctLjIxLjQzLS4xNWwxLjc0LjdjLjM2LS4yOC43Ni0uNTEgMS4xOC0uNjlsLjI2LTEuODVjLjAzLS4xNy4xOC0uMy4zNS0uM2gyLjhjLjE3IDAgLjMyLjEzLjM1LjI5bC4yNiAxLjg1Yy40My4xOC44Mi40MSAxLjE4LjY5bDEuNzQtLjdjLjE2LS4wNi4zNCAwIC40My4xNWwxLjQgMi40MmMuMDkuMTUuMDUuMzQtLjA4LjQ1bC0xLjQ4IDEuMTZjLjAzLjIzLjA1LjQ2LjA1LjY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0JhY2t1cFJlc3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMmMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS0yLTlhOSA5IDAgMCAwLTkgOUgwbDQgNCA0LTRINWMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3YTYuOTk1IDYuOTk1IDAgMCAxLTExLjA2IDUuN2wtMS40MiAxLjQ0QTkgOSAwIDEgMCAxMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0JsdWV0b290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDI0aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnptOCAwaDJ2LTJoLTJ2MnptMi43MS0xOC4yOUwxMiAwaC0xdjcuNTlMNi40MSAzIDUgNC40MSAxMC41OSAxMCA1IDE1LjU5IDYuNDEgMTcgMTEgMTIuNDFWMjBoMWw1LjcxLTUuNzEtNC4zLTQuMjkgNC4zLTQuMjl6TTEzIDMuODNsMS44OCAxLjg4TDEzIDcuNTlWMy44M3ptMS44OCAxMC40NkwxMyAxNi4xN3YtMy43NmwxLjg4IDEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzQnJpZ2h0bmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpNOCAxNmgyLjVsMS41IDEuNSAxLjUtMS41SDE2di0yLjVsMS41LTEuNS0xLjUtMS41VjhoLTIuNUwxMiA2LjUgMTAuNSA4SDh2Mi41TDYuNSAxMiA4IDEzLjVWMTZ6bTQtN2MxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0NlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyek0xNiAuMDEgOCAwQzYuOSAwIDYgLjkgNiAydjE2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlYyYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNiAxNkg4VjRoOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NFdGhlcm5ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzcgNi43NiA2LjIzIDUuNDguODIgMTJsNS40MSA2LjUyIDEuNTQtMS4yOEwzLjQyIDEybDQuMzUtNS4yNHpNNyAxM2gydi0ySDd2MnptMTAtMmgtMnYyaDJ2LTJ6bS02IDJoMnYtMmgtMnYyem02Ljc3LTcuNTItMS41NCAxLjI4TDIwLjU4IDEybC00LjM1IDUuMjQgMS41NCAxLjI4TDIzLjE4IDEybC01LjQxLTYuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRBbnRlbm5hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNWMtMy44NyAwLTcgMy4xMy03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTEgOS4yOWMuODgtLjM5IDEuNS0xLjI2IDEuNS0yLjI5YTIuNSAyLjUgMCAwIDAtNSAwYzAgMS4wMi42MiAxLjkgMS41IDIuMjl2My4zTDcuNTkgMjEgOSAyMi40MWwzLTMgMyAzTDE2LjQxIDIxIDEzIDE3LjU5di0zLjN6TTEyIDFDNS45MyAxIDEgNS45MyAxIDEyaDJhOSA5IDAgMCAxIDE4IDBoMmMwLTYuMDctNC45My0xMS0xMS0xMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NJbnB1dENvbXBvbmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDF2Nmg2VjZINVYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0ySDl2MnptLTggMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThDNi4xNiAxOC40IDcgMTcuMyA3IDE2di0ySDF2MnpNMjEgNlYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRoLTJ2Nmg2VjZoLTJ6bS04LTRjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djZoNlY2aC0yVjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJoLTZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NJbnB1dENvbXBvc2l0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDF2Nmg2VjZINVYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0ySDl2MnptLTggMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThDNi4xNiAxOC40IDcgMTcuMyA3IDE2di0ySDF2MnpNMjEgNlYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRoLTJ2Nmg2VjZoLTJ6bS04LTRjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djZoNlY2aC0yVjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJoLTZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NJbnB1dEhkbWkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA3VjRjMC0xLjEtLjktMi0yLTJIOGMtMS4xIDAtMiAuOS0yIDJ2M0g1djZsMyA2djNoOHYtM2wzLTZWN2gtMXpNOCA0aDh2M2gtMlY1aC0xdjJoLTJWNWgtMXYySDhWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NJbnB1dFN2aWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTEuNWMwLS44My0uNjctMS41LTEuNS0xLjVTNSAxMC42NyA1IDExLjUgNS42NyAxMyA2LjUgMTMgOCAxMi4zMyA4IDExLjV6bTctNWMwLS44My0uNjctMS41LTEuNS0xLjVoLTNDOS42NyA1IDkgNS42NyA5IDYuNVM5LjY3IDggMTAuNSA4aDNjLjgzIDAgMS41LS42NyAxLjUtMS41ek04LjUgMTVjLS44MyAwLTEuNS42Ny0xLjUgMS41UzcuNjcgMTggOC41IDE4czEuNS0uNjcgMS41LTEuNVM5LjMzIDE1IDguNSAxNXpNMTIgMUM1LjkzIDEgMSA1LjkzIDEgMTJzNC45MyAxMSAxMSAxMSAxMS00LjkzIDExLTExUzE4LjA3IDEgMTIgMXptMCAyMGMtNC45NiAwLTktNC4wNC05LTlzNC4wNC05IDktOSA5IDQuMDQgOSA5LTQuMDQgOS05IDl6bTUuNS0xMWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bS0yIDVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc092ZXJzY2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDEgNS41IDEwIDhoNGwtMS45OS0yLjV6TTE4IDEwdjRsMi41LTEuOTlMMTggMTB6TTYgMTBsLTIuNSAyLjAxTDYgMTR2LTR6bTggNmgtNGwyLjAxIDIuNUwxNCAxNnptNy0xM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc1Bob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOWgtMnYyaDJWOXptNCAwaC0ydjJoMlY5em0zIDYuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhMS4wMiAxLjAyIDAgMCAwLTEuMDIuMjRsLTIuMiAyLjJhMTUuMDc0IDE1LjA3NCAwIDAgMS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTkgOXYyaDJWOWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NQb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjRoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTItMjJoLTJ2MTBoMlYyem0zLjU2IDIuNDQtMS40NSAxLjQ1QTUuOTY5IDUuOTY5IDAgMCAxIDE4IDExYzAgMy4zMS0yLjY5IDYtNiA2cy02LTIuNjktNi02YzAtMi4xNyAxLjE2LTQuMDYgMi44OC01LjEyTDcuNDQgNC40NEE3Ljk2MSA3Ljk2MSAwIDAgMCA0IDExYzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LThjMC0yLjcyLTEuMzYtNS4xMi0zLjQ0LTYuNTZ6TTE1IDI0aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NSZW1vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA5SDljLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMVYxMGMwLS41NS0uNDUtMS0xLTF6bS0zIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyek03LjA1IDYuMDVsMS40MSAxLjQxYTUuMDIyIDUuMDIyIDAgMCAxIDcuMDggMGwxLjQxLTEuNDFDMTUuNjggNC43OCAxMy45MyA0IDEyIDRzLTMuNjguNzgtNC45NSAyLjA1ek0xMiAwQzguOTYgMCA2LjIxIDEuMjMgNC4yMiAzLjIybDEuNDEgMS40MUM3LjI2IDMuMDEgOS41MSAyIDEyIDJzNC43NCAxLjAxIDYuMzYgMi42NGwxLjQxLTEuNDFDMTcuNzkgMS4yMyAxNS4wNCAwIDEyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzVm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDI0aDJ2LTJIN3Yyem01LTExYzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zTDE1IDRjMC0xLjY2LTEuMzQtMy0zLTNTOSAyLjM0IDkgNHY2YzAgMS42NiAxLjM0IDMgMyAzem0tMSAxMWgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6bTQtMTRoLTEuN2MwIDMtMi41NCA1LjEtNS4zIDUuMVM2LjcgMTMgNi43IDEwSDVjMCAzLjQxIDIuNzIgNi4yMyA2IDYuNzJWMjBoMnYtMy4yOGMzLjI4LS40OSA2LTMuMzEgNi02LjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMTQgMTIuOTRjLjA0LS4zLjA2LS42MS4wNi0uOTQgMC0uMzItLjAyLS42NC0uMDctLjk0bDIuMDMtMS41OGEuNDkuNDkgMCAwIDAgLjEyLS42MWwtMS45Mi0zLjMyYS40ODguNDg4IDAgMCAwLS41OS0uMjJsLTIuMzkuOTZjLS41LS4zOC0xLjAzLS43LTEuNjItLjk0bC0uMzYtMi41NGEuNDg0LjQ4NCAwIDAgMC0uNDgtLjQxaC0zLjg0Yy0uMjQgMC0uNDMuMTctLjQ3LjQxbC0uMzYgMi41NGMtLjU5LjI0LTEuMTMuNTctMS42Mi45NGwtMi4zOS0uOTZjLS4yMi0uMDgtLjQ3IDAtLjU5LjIyTDIuNzQgOC44N2MtLjEyLjIxLS4wOC40Ny4xMi42MWwyLjAzIDEuNThjLS4wNS4zLS4wOS42My0uMDkuOTRzLjAyLjY0LjA3Ljk0bC0yLjAzIDEuNThhLjQ5LjQ5IDAgMCAwLS4xMi42MWwxLjkyIDMuMzJjLjEyLjIyLjM3LjI5LjU5LjIybDIuMzktLjk2Yy41LjM4IDEuMDMuNyAxLjYyLjk0bC4zNiAyLjU0Yy4wNS4yNC4yNC40MS40OC40MWgzLjg0Yy4yNCAwIC40NC0uMTcuNDctLjQxbC4zNi0yLjU0Yy41OS0uMjQgMS4xMy0uNTYgMS42Mi0uOTRsMi4zOS45NmMuMjIuMDguNDcgMCAuNTktLjIybDEuOTItMy4zMmMuMTItLjIyLjA3LS40Ny0uMTItLjYxbC0yLjAxLTEuNTh6TTEyIDE1LjZjLTEuOTggMC0zLjYtMS42Mi0zLjYtMy42czEuNjItMy42IDMuNi0zLjYgMy42IDEuNjIgMy42IDMuNi0xLjYyIDMuNi0zLjYgMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaG9wMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOUgxdjExYzAgMS4xMS44OSAyIDIgMmgxNnYtMkgzVjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDVWM2MwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem0wIDEyVjhsNS41IDMuNUwxMiAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcFR3byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOUgxdjExYzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0ySDNWOXptMTUtNFYzYzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg1djExYzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0yVjVoLTV6bS02LTJoNHYyaC00VjN6bTAgMTJWOGw1LjUgMy01LjUgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDZWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJIMnYxM2MwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2aC02em0tNi0yaDR2MmgtNFY0ek05IDE4VjlsNy41IDRMOSAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcHBpbmdCYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA2aC0yYzAtMi4yMS0xLjc5LTQtNC00UzggMy43OSA4IDZINmMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tOCA0YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjhoMnYyem0yLTZjMS4xIDAgMiAuOSAyIDJoLTRjMC0xLjEuOS0yIDItMnptNCA2YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjhoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaG9wcGluZ0Jhc2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjIxIDktNC4zOC02LjU2YS45OTMuOTkzIDAgMCAwLS44My0uNDJjLS4zMiAwLS42NC4xNC0uODMuNDNMNi43OSA5SDJjLS41NSAwLTEgLjQ1LTEgMSAwIC4wOS4wMS4xOC4wNC4yN2wyLjU0IDkuMjdjLjIzLjg0IDEgMS40NiAxLjkyIDEuNDZoMTNjLjkyIDAgMS42OS0uNjIgMS45My0xLjQ2bDIuNTQtOS4yN0wyMyAxMGMwLS41NS0uNDUtMS0xLTFoLTQuNzl6TTkgOWwzLTQuNEwxNSA5SDl6bTMgOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3BwaW5nQ2FydENoZWNrb3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnptMTAgMGMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6bS04LjktNWg3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM0wyMSA0Ljk2IDE5LjI1IDRsLTMuNyA3SDguNTNMNC4yNyAySDF2MmgybDMuNiA3LjU5LTEuMzUgMi40NEM0LjUyIDE1LjM3IDUuNDggMTcgNyAxN2gxMnYtMkg3bDEuMS0yek0xMiAybDQgNC00IDQtMS40MS0xLjQxTDEyLjE3IDdIOFY1aDQuMTdsLTEuNTktMS41OUwxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yek0xIDJ2MmgybDMuNiA3LjU5LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmgxMnYtMkg3LjQyYy0uMTQgMC0uMjUtLjExLS4yNS0uMjVsLjAzLS4xMi45LTEuNjNoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy41OC02LjQ5QTEuMDAzIDEuMDAzIDAgMCAwIDIwIDRINS4yMWwtLjk0LTJIMXptMTYgMTZjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbWFydEJ1dHRvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDl2NmMwIDEuMS0uOSAyLTIgMmgtMXYtMmgxVjlINHY2aDZ2Mkg0Yy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJ6bS03LjUgMTAgMS4wOS0yLjQxTDE4IDE1LjVsLTIuNDEtMS4wOUwxNC41IDEybC0xLjA5IDIuNDFMMTEgMTUuNWwyLjQxIDEuMDlMMTQuNSAxOXptMi41LTUgLjYyLTEuMzhMMTkgMTJsLTEuMzgtLjYyTDE3IDEwbC0uNjIgMS4zOEwxNSAxMmwxLjM4LjYyTDE3IDE0em0tMi41IDUgMS4wOS0yLjQxTDE4IDE1LjVsLTIuNDEtMS4wOUwxNC41IDEybC0xLjA5IDIuNDFMMTEgMTUuNWwyLjQxIDEuMDlMMTQuNSAxOXptMi41LTUgLjYyLTEuMzhMMTkgMTJsLTEuMzgtLjYyTDE3IDEwbC0uNjIgMS4zOEwxNSAxMmwxLjM4LjYyTDE3IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb3VyY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTYgMTBINnYtMmg4djJ6bTQtNEg2di0yaDEydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwYWNlRGFzaGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjFINWMtMS4xIDAtMi0uOS0yLTJWNWMwLTEuMS45LTIgMi0yaDZ2MTh6bTIgMGg2YzEuMSAwIDItLjkgMi0ydi03aC04djl6bTgtMTFWNWMwLTEuMS0uOS0yLTItMmgtNnY3aDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwYXRpYWxBdWRpb09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI5XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjM5IDE1LjU2QzE0LjcxIDE0LjcgMTIuNTMgMTQgMTAgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDIgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMjAuMzYgMWwtMS40MSAxLjQxYTcuMDA3IDcuMDA3IDAgMCAxIDAgOS45bDEuNDEgMS40MWE4Ljk4IDguOTggMCAwIDAgMC0xMi43MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNTQgMTAuOWE1LjAwMyA1LjAwMyAwIDAgMCAwLTcuMDdsLTEuNDEgMS40MWEzIDMgMCAwIDEgMCA0LjI0bDEuNDEgMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BhdGlhbEF1ZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjlcIixcInJcIjpcIjRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMzkgMTUuNTZDMTQuNzEgMTQuNyAxMi41MyAxNCAxMCAxNHMtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgMiAxOC4yMlYyMWgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xNiAxaC0yYTkgOSAwIDAgMCA5IDlWOGMtMy44NiAwLTctMy4xNC03LTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDFoLTJjMCAyLjc2IDIuMjQgNSA1IDVWNGMtMS42NSAwLTMtMS4zNS0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwYXRpYWxUcmFja2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI5XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjM5IDE1LjU2QzE0LjcxIDE0LjcgMTIuNTMgMTQgMTAgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDIgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMjAuMDUgMi40MSAxOC42NCAxYy0zLjUxIDMuNTEtMy41MSA5LjIxIDAgMTIuNzNsMS40MS0xLjQxYy0yLjczLTIuNzQtMi43My03LjE4IDAtOS45MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuODggNS4yNC0xLjQxLTEuNDFhNS4wMDMgNS4wMDMgMCAwIDAgMCA3LjA3bDEuNDEtMS40MWEzLjAxMiAzLjAxMiAwIDAgMSAwLTQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwZWFrZXJOb3Rlc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjU0IDExLS41NC0uNTRMNy41NCA4IDYgNi40NiAyLjM4IDIuODQgMS4yNyAxLjczIDAgM2wyLjAxIDIuMDFMMiAyMmw0LTRoOWw1LjczIDUuNzNMMjIgMjIuNDYgMTcuNTQgMThsLTctN3pNOCAxNEg2di0yaDJ2MnptLTItM1Y5bDIgMkg2em0xNC05SDQuMDhMMTAgNy45MlY2aDh2MmgtNy45MmwxIDFIMTh2MmgtNC45Mmw2Ljk5IDYuOTlDMjEuMTQgMTcuOTUgMjIgMTcuMDggMjIgMTZWNGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BlYWtlck5vdGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTggMTRINnYtMmgydjJ6bTAtM0g2VjloMnYyem0wLTNINlY2aDJ2MnptNyA2aC01di0yaDV2MnptMy0zaC04VjloOHYyem0wLTNoLThWNmg4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwZWxsY2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi40NSAxNmgyLjA5TDkuNDMgM0g3LjU3TDIuNDYgMTZoMi4wOWwxLjEyLTNoNS42NGwxLjE0IDN6bS02LjAyLTVMOC41IDUuNDggMTAuNTcgMTFINi40M3ptMTUuMTYuNTktOC4wOSA4LjA5TDkuODMgMTZsLTEuNDEgMS40MSA1LjA5IDUuMDlMMjMgMTNsLTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhclJhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC40MyAxMCAxMiAybC0yLjQzIDhIMmw2LjE4IDQuNDFMNS44MyAyMiAxMiAxNy4zMSAxOC4xOCAyMmwtMi4zNS03LjU5TDIyIDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6bTQuMjQgMTZMMTIgMTUuNDUgNy43NyAxOGwxLjEyLTQuODEtMy43My0zLjIzIDQuOTItLjQyTDEyIDVsMS45MiA0LjUzIDQuOTIuNDItMy43MyAzLjIzTDE2LjIzIDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGlja3lOb3RlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINC45OUMzLjg5IDMgMyAzLjkgMyA1bC4wMSAxNGMwIDEuMS44OSAyIDEuOTkgMmgxMGw2LTZWNWMwLTEuMS0uOS0yLTItMnpNNyA4aDEwdjJIN1Y4em01IDZIN3YtMmg1djJ6bTIgNS41VjE0aDUuNUwxNCAxOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINHYyaDE2VjR6bTEgMTB2LTJsLTEtNUg0bC0xIDV2MmgxdjZoMTB2LTZoNHY2aDJ2LTZoMXptLTkgNEg2di00aDZ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3ViamVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE3SDR2MmgxMHYtMnptNi04SDR2MmgxNlY5ek00IDE1aDE2di0ySDR2MnpNNCA1djJoMTZWNUg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdWJ0aXRsZXNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDYuODNsOCA4SDIwdjJoLTMuMTdsNC45MyA0LjkzYy4xNS0uMjguMjQtLjU5LjI0LS45M1Y2YzAtMS4xLS45LTItMi0yek0xLjA0IDMuODdsMS4yIDEuMkMyLjA5IDUuMzUgMiA1LjY2IDIgNnYxMmMwIDEuMS45IDIgMiAyaDEzLjE3bDIuOTYgMi45NiAxLjQxLTEuNDFMMi40NSAyLjQ1IDEuMDQgMy44N3pNOCAxMnYySDR2LTJoNHptNiA0LjgzVjE4SDR2LTJoOS4xN2wuODMuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1cGVydmlzZWRVc2VyQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMmMtNS41MiAwLTEwIDQuNDgtMTAgMTBzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwLTQuNDgtMTAtMTAtMTB6bTMuNjEgNi4zNGMxLjA3IDAgMS45My44NiAxLjkzIDEuOTMgMCAxLjA3LS44NiAxLjkzLTEuOTMgMS45My0xLjA3IDAtMS45My0uODYtMS45My0xLjkzLS4wMS0xLjA3Ljg2LTEuOTMgMS45My0xLjkzem0tNi0xLjU4YzEuMyAwIDIuMzYgMS4wNiAyLjM2IDIuMzYgMCAxLjMtMS4wNiAyLjM2LTIuMzYgMi4zNnMtMi4zNi0xLjA2LTIuMzYtMi4zNmMwLTEuMzEgMS4wNS0yLjM2IDIuMzYtMi4zNnptMCA5LjEzdjMuNzVjLTIuNC0uNzUtNC4zLTIuNi01LjE0LTQuOTYgMS4wNS0xLjEyIDMuNjctMS42OSA1LjE0LTEuNjkuNTMgMCAxLjIuMDggMS45LjIyLTEuNjQuODctMS45IDIuMDItMS45IDIuNjh6TTExLjk5IDIwYy0uMjcgMC0uNTMtLjAxLS43OS0uMDR2LTQuMDdjMC0xLjQyIDIuOTQtMi4xMyA0LjQtMi4xMyAxLjA3IDAgMi45Mi4zOSAzLjg0IDEuMTUtMS4xNyAyLjk3LTQuMDYgNS4wOS03LjQ1IDUuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1cGVydmlzb3JBY2NvdW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMmMxLjM4IDAgMi40OS0xLjEyIDIuNDktMi41UzE3Ljg4IDcgMTYuNSA3YTIuNSAyLjUgMCAwIDAgMCA1ek05IDExYzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zUzEwLjY2IDUgOSA1QzcuMzQgNSA2IDYuMzQgNiA4czEuMzQgMyAzIDN6bTcuNSAzYy0xLjgzIDAtNS41LjkyLTUuNSAyLjc1VjE5aDExdi0yLjI1YzAtMS44My0zLjY3LTIuNzUtNS41LTIuNzV6TTkgMTNjLTIuMzMgMC03IDEuMTctNyAzLjVWMTloN3YtMi4yNWMwLS44NS4zMy0yLjM0IDIuMzctMy40N0MxMC41IDEzLjEgOS42NiAxMyA5IDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdXBwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNy40NiA3LjEyLTIuNzggMS4xNWE0Ljk4MiA0Ljk4MiAwIDAgMC0yLjk1LTIuOTRsMS4xNS0yLjc4YzIuMS44IDMuNzcgMi40NyA0LjU4IDQuNTd6TTEyIDE1Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pNOS4xMyA0LjU0bDEuMTcgMi43OGE1IDUgMCAwIDAtMi45OCAyLjk3TDQuNTQgOS4xM2E3Ljk4NCA3Ljk4NCAwIDAgMSA0LjU5LTQuNTl6TTQuNTQgMTQuODdsMi43OC0xLjE1YTQuOTY4IDQuOTY4IDAgMCAwIDIuOTcgMi45NmwtMS4xNyAyLjc4YTcuOTk2IDcuOTk2IDAgMCAxLTQuNTgtNC41OXptMTAuMzQgNC41OS0xLjE1LTIuNzhhNC45NzggNC45NzggMCAwIDAgMi45NS0yLjk3bDIuNzggMS4xN2E4LjAwNyA4LjAwNyAwIDAgMS00LjU4IDQuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBIb3JpeiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuOTkgMTEgMyAxNWwzLjk5IDR2LTNIMTR2LTJINi45OXYtM3pNMjEgOWwtMy45OS00djNIMTB2Mmg3LjAxdjNMMjEgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dhcEhvcml6b250YWxDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMHptLTctNS41IDMuNSAzLjUtMy41IDMuNVYxMWgtNFY5aDRWNi41em0tNiAxMUw1LjUgMTQgOSAxMC41VjEzaDR2Mkg5djIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dhcFZlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNy4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dhcFZlcnRpY2FsQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNi41IDkgMTAgNS41IDEzLjUgOUgxMXY0SDlWOUg2LjV6bTExIDZMMTQgMTguNSAxMC41IDE1SDEzdi00aDJ2NGgyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEzLjlhNSA1IDAgMSAwLTIgMHY0LjI3bC0xLjU5LTEuNTlMOCAxOGw0IDQgNC00LTEuNDEtMS40MUwxMyAxOC4xN1YxMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjggMTIuMThjLS4yLS44Ni0uMy0xLjc2LS4zLTIuNjggMC0yLjg0Ljk5LTUuNDUgMi42My03LjVMNy4yIDMuMDdhMTAuNDU3IDEwLjQ1NyAwIDAgMC0xLjg4IDguOTlsMS42Mi0xLjYyTDggMTEuNSA0LjUgMTUgMSAxMS41bDEuMDYtMS4wNiAxLjc0IDEuNzR6bTEwLjA1LS41Ni0yLjY4LTUuMzdhMS40OTggMS40OTggMCAwIDAtMi4wMS0uNjdjLS43NS4zOC0xLjA1IDEuMjgtLjY4IDIuMDJsNC44MSA5LjYtMy4yNC44Yy0uMzMuMDktLjU5LjMzLS43LjY2TDkgMTkuNzhsNi4xOSAyLjI1Yy41LjE3IDEuMjguMDIgMS43NS0uMjJsNS41MS0yLjc1Yy44OS0uNDUgMS4zMi0xLjQ4IDEtMi40MmwtMS40My00LjI3YTIgMiAwIDAgMC0xLjktMS4zN2gtNC41NmMtLjMxIDAtLjYyLjA3LS44OS4yMWwtLjgyLjQxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlTGVmdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjEgMTNhNSA1IDAgMSAwIDAtMkg1LjgzbDEuNTktMS41OUw2IDhsLTQgNCA0IDQgMS40MS0xLjQxTDUuODMgMTNoNC4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpcGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuOTggMTYuODItLjYzIDQuNDZjLS4xNC45OS0uOTkgMS43Mi0xLjk4IDEuNzJoLTYuMTZjLS41MyAwLTEuMjktLjIxLTEuNjYtLjU5TDUgMTcuNjJsLjgzLS44NGMuMjQtLjI0LjU4LS4zNS45Mi0uMjhsMy4yNS43NFY2LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2NmguOTFjLjMxIDAgLjYyLjA3Ljg5LjIxbDQuMDkgMi4wNGMuNzcuMzkgMS4yMSAxLjIyIDEuMDkgMi4wN3pNMTIgMi41YzQuNzQgMCA3LjY3IDIuNTIgOC40MyA0LjVIMjJjLS43My0yLjg4LTQuNTEtNi0xMC02LTMuMjIgMC02LjE4IDEuMTMtOC41IDMuMDJWMkgydjVoNVY1LjVINC4wOWMyLjEyLTEuODYgNC44OC0zIDcuOTEtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpcGVSaWdodEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkgMTFhNSA1IDAgMSAwIDAgMmg0LjI3bC0xLjU5IDEuNTlMMTggMTZsNC00LTQtNC0xLjQxIDEuNDFMMTguMTcgMTFIMTMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpcGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljk4IDE2LjgyLS42MyA0LjQ2Yy0uMTQuOTktLjk5IDEuNzItMS45OCAxLjcyaC02LjE2Yy0uNTMgMC0xLjI5LS4yMS0xLjY2LS41OUw1IDE3LjYybC44My0uODRjLjI0LS4yNC41OC0uMzUuOTItLjI4bDMuMjUuNzRWNi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41djZoLjkxYy4zMSAwIC42Mi4wNy44OS4yMWw0LjA5IDIuMDRjLjc3LjM5IDEuMjEgMS4yMiAxLjA5IDIuMDd6TTE5LjkxIDUuNUgxN1Y3aDVWMmgtMS41djIuMDJBMTMuNDEzIDEzLjQxMyAwIDAgMCAxMiAxQzYuNTEgMSAyLjczIDQuMTIgMiA3aDEuNTdDNC4zMyA1LjAyIDcuMjYgMi41IDEyIDIuNWMzLjAzIDAgNS43OSAxLjE0IDcuOTEgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpcGVVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzIDUuODMgMS41OSAxLjU5TDE2IDZsLTQtNC00IDQgMS40MSAxLjQxTDExIDUuODN2NC4yN2E1IDUgMCAxIDAgMiAwVjUuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjA2IDUuNTYgMSA0LjUgNC41IDEgOCA0LjUgNi45NCA1LjU2IDUuMzIgMy45NGExMC40NTcgMTAuNDU3IDAgMCAwIDEuODggOC45OUw2LjEzIDE0QTExLjk3NCAxMS45NzQgMCAwIDEgMy41IDYuNWMwLS45Mi4xLTEuODIuMy0yLjY4TDIuMDYgNS41NnptMTEuNzkgNi4wNi0yLjY4LTUuMzdhMS40OTggMS40OTggMCAwIDAtMi4wMS0uNjdjLS43NS4zOC0xLjA1IDEuMjgtLjY4IDIuMDJsNC44MSA5LjYtMy4yNC44Yy0uMzMuMDktLjU5LjMzLS43LjY2TDkgMTkuNzhsNi4xOSAyLjI1Yy41LjE3IDEuMjguMDIgMS43NS0uMjJsNS41MS0yLjc1Yy44OS0uNDUgMS4zMi0xLjQ4IDEtMi40MmwtMS40My00LjI3YTIgMiAwIDAgMC0xLjktMS4zN2gtNC41NmMtLjMxIDAtLjYyLjA3LS44OS4yMWwtLjgyLjQxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDMuNWgyLjAyQzEuMTMgNS44MiAwIDguNzggMCAxMnMxLjEzIDYuMTggMy4wMiA4LjVIMVYyMmg1di01SDQuNXYyLjkxYy0xLjg2LTIuMTEtMy00Ljg4LTMtNy45MXMxLjE0LTUuNzkgMy03LjkxVjdINlYySDF2MS41em0xMi44NSA4LjEyLTIuNjgtNS4zN2ExLjQ5OCAxLjQ5OCAwIDAgMC0yLjAxLS42N2MtLjc1LjM4LTEuMDUgMS4yOC0uNjggMi4wMmw0LjgxIDkuNi0zLjI0LjhjLS4zMy4wOS0uNTkuMzMtLjcuNjZMOSAxOS43OGw2LjE5IDIuMjVjLjUuMTcgMS4yOC4wMiAxLjc1LS4yMmw1LjUxLTIuNzVjLjg5LS40NSAxLjMyLTEuNDggMS0yLjQybC0xLjQzLTQuMjdhMiAyIDAgMCAwLTEuOS0xLjM3aC00LjU2Yy0uMzEgMC0uNjIuMDctLjg5LjIxbC0uODIuNDFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC44OSAxNC43NS00LjA5LTIuMDRjLS4yOC0uMTQtLjU4LS4yMS0uODktLjIxSDEzdi02YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCA1LjY3IDEwIDYuNXYxMC43NGwtMy4yNS0uNzRhLjk5Ljk5IDAgMCAwLS45Mi4yOGwtLjgzLjg0IDQuNTQgNC43OWMuMzguMzggMS4xNC41OSAxLjY3LjU5aDYuMTZjMSAwIDEuODQtLjczIDEuOTgtMS43MmwuNjMtNC40NmMuMTItLjg1LS4zMi0xLjY4LTEuMDktMi4wN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTMgMy44N0MxOC42OSAyLjE3IDE1LjYgMSAxMiAxUzUuMzEgMi4xNyAzLjg3IDMuODdMMiAydjVoNUw0LjkzIDQuOTNjMS0xLjI5IDMuNy0yLjQzIDcuMDctMi40M3M2LjA3IDEuMTQgNy4wNyAyLjQzTDE3IDdoNVYybC0xLjg3IDEuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXRjaEFjY2Vzc1Nob3J0Y3V0QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMTRoLTJ2LTJoLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2LTJ6TTcuMDYgOC45NCA1IDhsMi4wNi0uOTRMOCA1bC45NCAyLjA2TDExIDhsLTIuMDYuOTRMOCAxMWwtLjk0LTIuMDZ6TTggMjFsLjk0LTIuMDZMMTEgMThsLTIuMDYtLjk0TDggMTVsLS45NCAyLjA2TDUgMThsMi4wNi45NEw4IDIxem0tMy42My04LjYzTDMgMTNsMS4zNy42M0w1IDE1bC42My0xLjM3TDcgMTNsLTEuMzctLjYzTDUgMTFsLS42MyAxLjM3ek0xMiAxMmMwLTIuNzMgMS4wOC01LjI3IDIuNzUtNy4yNUwxMiAyaDd2N2wtMi44Mi0yLjgyQzE0Ljg0IDcuODIgMTQgOS44OCAxNCAxMmMwIDMuMzIgMi4xIDYuMzYgNSA3LjgyVjIyYy00LjA5LTEuNTktNy01LjY1LTctMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXRjaEFjY2Vzc1Nob3J0Y3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wNiA4Ljk0IDUgOGwyLjA2LS45NEw4IDVsLjk0IDIuMDZMMTEgOGwtMi4wNi45NEw4IDExbC0uOTQtMi4wNnpNOCAyMWwuOTQtMi4wNkwxMSAxOGwtMi4wNi0uOTRMOCAxNWwtLjk0IDIuMDZMNSAxOGwyLjA2Ljk0TDggMjF6bS0zLjYzLTguNjNMMyAxM2wxLjM3LjYzTDUgMTVsLjYzLTEuMzdMNyAxM2wtMS4zNy0uNjNMNSAxMWwtLjYzIDEuMzd6TTEyIDEyYzAtMi43MyAxLjA4LTUuMjcgMi43NS03LjI1TDEyIDJoN3Y3bC0yLjgyLTIuODJDMTQuODQgNy44MiAxNCA5Ljg4IDE0IDEyYzAgMy4zMiAyLjEgNi4zNiA1IDcuODJWMjJjLTQuMDktMS41OS03LTUuNjUtNy0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3luY0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDEyIDQtNC00LTR2M0gzdjJoMTV6TTYgMTJsLTQgNCA0IDR2LTNoMTV2LTJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3lzdGVtVXBkYXRlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIC41aDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDE2LjUgNC00aC0zdi05aC0ydjlIOGw0IDR6bTktMTNoLTZ2MS45OWg2djE0LjAzSDNWNS40OWg2VjMuNUgzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0ydi0xNGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFiVW5zZWxlY3RlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgOWgyVjdIMXYyem0wIDRoMnYtMkgxdjJ6bTAtOGgyVjNjLTEuMSAwLTIgLjktMiAyem04IDE2aDJ2LTJIOXYyem0tOC00aDJ2LTJIMXYyem0yIDR2LTJIMWMwIDEuMS45IDIgMiAyek0yMSAzaC04djZoMTBWNWMwLTEuMS0uOS0yLTItMnptMCAxNGgydi0yaC0ydjJ6TTkgNWgyVjNIOXYyek01IDIxaDJ2LTJINXYyek01IDVoMlYzSDV2MnptMTYgMTZjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptLTggOGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYmxlVmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdIOWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDJ2Mkg5VjloMTB6bS02IDZ2LTJoMnYyaC0yem0yIDJ2MmgtMnYtMmgyem0tNC0ySDl2LTJoMnYyem02LTJoMnYyaC0ydi0yem0tOCA0aDJ2Mkg5di0yem04IDJ2LTJoMnYyaC0yek02IDE3SDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMnYxaC0yVjVINXYxMGgxdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhc2tBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA1LjE4IDEwLjU5IDE2LjZsLTQuMjQtNC4yNCAxLjQxLTEuNDEgMi44MyAyLjgzIDEwLTEwTDIyIDUuMTh6bS0yLjIxIDUuMDRjLjEzLjU3LjIxIDEuMTcuMjEgMS43OCAwIDQuNDItMy41OCA4LTggOHMtOC0zLjU4LTgtOCAzLjU4LTggOC04YzEuNTggMCAzLjA0LjQ2IDQuMjggMS4yNWwxLjQ0LTEuNDRBOS45IDkuOSAwIDAgMCAxMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBjMC0xLjE5LS4yMi0yLjMzLS42LTMuMzlsLTEuNjEgMS42MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptMCAxNEg0VjhoMTZ2MTB6bS0yLTFoLTZ2LTJoNnYyek03LjUgMTdsLTEuNDEtMS40MUw4LjY3IDEzbC0yLjU5LTIuNTlMNy41IDlsNCA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dFJvdGF0ZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMnYxLjVsMTEgNC43NXYtMi4xbC0yLjItLjl2LTVsMi4yLS45di0yLjFMMyAxMnptNyAyLjYyLTUuMDItMS44N0wxMCAxMC44OHYzLjc0em04LTEwLjM3LTMgM2gydjEyLjVoMlY3LjI1aDJsLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dFJvdGF0ZVZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzUgNWgtMS41TDkuNSAxNmgyLjFsLjktMi4yaDVsLjkgMi4yaDIuMUwxNS43NSA1em0tMi42MiA3TDE1IDYuOTggMTYuODcgMTJoLTMuNzR6TTYgMTkuNzVsMy0zSDdWNC4yNUg1djEyLjVIM2wzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGlvbkFuZ2xlZG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjQgNC45MS0xLjA2LTEuMDZMNy4yIDguMjdsMS40OCAxLjQ4IDIuMTktLjkyIDMuNTQgMy41NC0uOTIgMi4xOSAxLjQ4IDEuNDhMMTkuNCA0Ljkxem0tNi44MSAzLjEgNC44Ny0yLjIzLTIuMjMgNC44Ny0yLjY0LTIuNjR6TTE0LjI3IDIxdi00LjI0bC0xLjQxIDEuNDEtOC44NC04Ljg0LTEuNDIgMS40MiA4Ljg0IDguODRMMTAuMDMgMjFoNC4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dFJvdGF0aW9uQW5nbGV1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNDkgNC4yMSAzLjQzIDUuMjcgNy44NSAxNi40bDEuNDgtMS40OC0uOTItMi4xOSAzLjU0LTMuNTQgMi4xOS45MiAxLjQ4LTEuNDhMNC40OSA0LjIxem0zLjA5IDYuOEw1LjM2IDYuMTRsNC44NyAyLjIzLTIuNjUgMi42NHptMTIuOTktMS42OGgtNC4yNGwxLjQxIDEuNDEtOC44NCA4Ljg0TDEwLjMyIDIxbDguODQtOC44NCAxLjQxIDEuNDFWOS4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dFJvdGF0aW9uRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEydi0xLjVMMTAgNS43NXYyLjFsMi4yLjl2NWwtMi4yLjl2Mi4xTDIxIDEyem0tNy0yLjYyIDUuMDIgMS44N0wxNCAxMy4xMlY5LjM4ek02IDE5Ljc1bDMtM0g3VjQuMjVINXYxMi41SDNsMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXh0Um90YXRpb25Ob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNzUgM2gtMS41TDYuNSAxNGgyLjFsLjktMi4yaDVsLjkgMi4yaDIuMUwxMi43NSAzem0tMi42MiA3TDEyIDQuOTggMTMuODcgMTBoLTMuNzR6bTEwLjM3IDgtMy0zdjJINXYyaDEyLjV2MmwzLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRoZWF0ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggM3YyaC0yVjNIOHYySDZWM0g0djE4aDJ2LTJoMnYyaDh2LTJoMnYyaDJWM2gtMnpNOCAxN0g2di0yaDJ2MnptMC00SDZ2LTJoMnYyem0wLTRINlY3aDJ2MnptMTAgOGgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGh1bWJEb3duT2ZmQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjg5IDE4LjI4LjU3LTIuODljLjEyLS41OS0uMDQtMS4yLS40Mi0xLjY2LS4zOC0uNDYtLjk0LS43My0xLjU0LS43M0g0di0xLjA4TDYuNTcgNmg4LjA5Yy4xOCAwIC4zNC4xNi4zNC4zNHY3Ljg0bC00LjExIDQuMU0xMCAyMmw2LjQxLTYuNDFjLjM4LS4zOC41OS0uODkuNTktMS40MlY2LjM0QzE3IDUuMDUgMTUuOTUgNCAxNC42NiA0aC04LjFjLS43MSAwLTEuMzYuMzctMS43Mi45N2wtMi42NyA2LjE1Yy0uMTEuMjUtLjE3LjUyLS4xNy44VjEzYzAgMS4xLjkgMiAyIDJoNS41bC0uOTIgNC42NWMtLjA1LjIyLS4wMi40Ni4wOC42Ni4yMy40NS41Mi44Ni44OCAxLjIyTDEwIDIyem0xMC03aDJWNGgtMmMtLjU1IDAtMSAuNDUtMSAxdjljMCAuNTUuNDUgMSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRodW1iRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDNINmMtLjgzIDAtMS41NC41LTEuODQgMS4yMmwtMy4wMiA3LjA1Yy0uMDkuMjMtLjE0LjQ3LS4xNC43M3YyYzAgMS4xLjkgMiAyIDJoNi4zMWwtLjk1IDQuNTctLjAzLjMyYzAgLjQxLjE3Ljc5LjQ0IDEuMDZMOS44MyAyM2w2LjU5LTYuNTljLjM2LS4zNi41OC0uODYuNTgtMS40MVY1YzAtMS4xLS45LTItMi0yem00IDB2MTJoNFYzaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVtYlVwT2ZmQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMy4xMSA1LjcyLS41NyAyLjg5Yy0uMTIuNTkuMDQgMS4yLjQyIDEuNjYuMzguNDYuOTQuNzMgMS41NC43M0gyMHYxLjA4TDE3LjQzIDE4SDkuMzRhLjM1LjM1IDAgMCAxLS4zNC0uMzRWOS44Mmw0LjExLTQuMU0xNCAyIDcuNTkgOC40MUM3LjIxIDguNzkgNyA5LjMgNyA5LjgzdjcuODNDNyAxOC45NSA4LjA1IDIwIDkuMzQgMjBoOC4xYy43MSAwIDEuMzYtLjM3IDEuNzItLjk3bDIuNjctNi4xNWMuMTEtLjI1LjE3LS41Mi4xNy0uOFYxMWMwLTEuMS0uOS0yLTItMmgtNS41bC45Mi00LjY1Yy4wNS0uMjIuMDItLjQ2LS4wOC0uNjZhNC44IDQuOCAwIDAgMC0uODgtMS4yMkwxNCAyek00IDlIMnYxMWgyYy41NSAwIDEtLjQ1IDEtMXYtOWMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRodW1iVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjFoNFY5SDF2MTJ6bTIyLTExYzAtMS4xLS45LTItMi0yaC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OSA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVtYnNVcERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzAtLjU1LS40NS0xLTEtMUg1LjgybC42Ni0zLjE4LjAyLS4yM2MwLS4zMS0uMTMtLjU5LS4zMy0uOEw1LjM4IDAgLjQ0IDQuOTRDLjE3IDUuMjEgMCA1LjU5IDAgNnY2LjVjMCAuODMuNjcgMS41IDEuNSAxLjVoNi43NWMuNjIgMCAxLjE1LS4zOCAxLjM4LS45MWwyLjI2LTUuMjljLjA3LS4xNy4xMS0uMzYuMTEtLjU1VjZ6bTEwLjUgNGgtNi43NWMtLjYyIDAtMS4xNS4zOC0xLjM4LjkxbC0yLjI2IDUuMjljLS4wNy4xNy0uMTEuMzYtLjExLjU1VjE4YzAgLjU1LjQ1IDEgMSAxaDUuMThsLS42NiAzLjE4LS4wMi4yNGMwIC4zMS4xMy41OS4zMy44bC43OS43OCA0Ljk0LTQuOTRjLjI3LS4yNy40NC0uNjUuNDQtMS4wNnYtNi41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZWxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA4YzAgMS4xLS45IDItMiAyYTEuNyAxLjcgMCAwIDEtLjUxLS4wN2wtMy41NiAzLjU1Yy4wNS4xNi4wNy4zNC4wNy41MiAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJjMC0uMTguMDItLjM2LjA3LS41MmwtMi41NS0yLjU1Yy0uMTYuMDUtLjM0LjA3LS41Mi4wN3MtLjM2LS4wMi0uNTItLjA3bC00LjU1IDQuNTZjLjA1LjE2LjA3LjMzLjA3LjUxIDAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMmMuMTggMCAuMzUuMDIuNTEuMDdsNC41Ni00LjU1QzguMDIgOS4zNiA4IDkuMTggOCA5YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAuMTgtLjAyLjM2LS4wNy41MmwyLjU1IDIuNTVjLjE2LS4wNS4zNC0uMDcuNTItLjA3cy4zNi4wMi41Mi4wN2wzLjU1LTMuNTZBMS43IDEuNyAwIDAgMSAxOSA4YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpcHNBbmRVcGRhdGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMGg0YzAgMS4xLS45IDItMiAycy0yLS45LTItMnptLTItMWg4di0ySDV2MnptMTEuNS05LjVjMCAzLjgyLTIuNjYgNS44Ni0zLjc3IDYuNUg1LjI3Yy0xLjExLS42NC0zLjc3LTIuNjgtMy43Ny02LjVDMS41IDUuMzYgNC44NiAyIDkgMnM3LjUgMy4zNiA3LjUgNy41em00Ljg3LTIuMTNMMjAgOGwxLjM3LjYzTDIyIDEwbC42My0xLjM3TDI0IDhsLTEuMzctLjYzTDIyIDZsLS42MyAxLjM3ek0xOSA2bC45NC0yLjA2TDIyIDNsLTIuMDYtLjk0TDE5IDBsLS45NCAyLjA2TDE2IDNsMi4wNi45NEwxOSA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDloMTRWN0gzdjJ6bTAgNGgxNHYtMkgzdjJ6bTAgNGgxNHYtMkgzdjJ6bTE2IDBoMnYtMmgtMnYyem0wLTEwdjJoMlY3aC0yem0wIDZoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb2RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb2tlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk3IDYuNDMgMTIgMiA0LjAzIDYuNDMgOS4xIDkuMjRDOS44MyA4LjQ4IDEwLjg2IDggMTIgOHMyLjE3LjQ4IDIuOSAxLjI0bDUuMDctMi44MXpNMTAgMTJjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptMSA5LjQ0TDMgMTdWOC4xNGw1LjEzIDIuODVjLS4wOS4zMi0uMTMuNjYtLjEzIDEuMDEgMCAxLjg2IDEuMjcgMy40MyAzIDMuODd2NS41N3ptMiAwdi01LjU3YzEuNzMtLjQ0IDMtMi4wMSAzLTMuODcgMC0uMzUtLjA0LS42OS0uMTMtMS4wMUwyMSA4LjE0VjE3bC04IDQuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpNMyAxMmE1Ljk5IDUuOTkgMCAwIDEgNC01LjY1VjQuMjZDMy41NSA1LjE1IDEgOC4yNyAxIDEyczIuNTUgNi44NSA2IDcuNzR2LTIuMDlBNS45OSA1Ljk5IDAgMCAxIDMgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvdWNoQXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMS4yNFY3LjVhMi41IDIuNSAwIDAgMSA1IDB2My43NGMxLjIxLS44MSAyLTIuMTggMi0zLjc0QzE2IDUuMDEgMTMuOTkgMyAxMS41IDNTNyA1LjAxIDcgNy41YzAgMS41Ni43OSAyLjkzIDIgMy43NHptOS44NCA0LjYzLTQuNTQtMi4yNmMtLjE3LS4wNy0uMzUtLjExLS41NC0uMTFIMTN2LTZjMC0uODMtLjY3LTEuNS0xLjUtMS41UzEwIDYuNjcgMTAgNy41djEwLjc0Yy0zLjYtLjc2LTMuNTQtLjc1LTMuNjctLjc1LS4zMSAwLS41OS4xMy0uNzkuMzNsLS43OS44IDQuOTQgNC45NGMuMjcuMjcuNjUuNDQgMS4wNi40NGg2Ljc5Yy43NSAwIDEuMzMtLjU1IDEuNDQtMS4yOGwuNzUtNS4yN2MuMDEtLjA3LjAyLS4xNC4wMi0uMiAwLS42Mi0uMzgtMS4xNi0uOTEtMS4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG91ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDRIN1YySDV2MjBoMnYtOGgxNGwtMi01IDItNXptLTYgNWMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyYWNrQ2hhbmdlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuMDcgNC45My0xLjQxIDEuNDFBOC4wMTQgOC4wMTQgMCAwIDEgMjAgMTJjMCA0LjQyLTMuNTggOC04IDhzLTgtMy41OC04LThjMC00LjA4IDMuMDUtNy40NCA3LTcuOTN2Mi4wMkM4LjE2IDYuNTcgNiA5LjAzIDYgMTJjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNmMwLTEuNjYtLjY3LTMuMTYtMS43Ni00LjI0bC0xLjQxIDEuNDFDMTUuNTUgOS45IDE2IDEwLjkgMTYgMTJjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRjMC0xLjg2IDEuMjgtMy40MSAzLTMuODZ2Mi4xNGMtLjYuMzUtMSAuOTgtMSAxLjcyIDAgMS4xLjkgMiAyIDJzMi0uOSAyLTJjMC0uNzQtLjQtMS4zOC0xLTEuNzJWMmgtMUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtMi43Ni0xLjEyLTUuMjYtMi45My03LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFuc2NyaWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuOTMgMTYgMS42My0xLjYzYy0yLjc3LTMuMDItMi43Ny03LjU2IDAtMTAuNzRMMTcuOTMgMmMtMy45IDMuODktMy45MSA5Ljk1IDAgMTR6bTQuOTktNS4wNWEzLjMxNyAzLjMxNyAwIDAgMSAwLTMuODlsLTEuNjgtMS42OWMtMi4wMiAyLjAyLTIuMDIgNS4wNyAwIDcuMjdsMS42OC0xLjY5ek05IDEzYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptNi4zOSAyLjU2QzEzLjcxIDE0LjcgMTEuNTMgMTQgOSAxNHMtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgMSAxOC4yMlYyMWgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFuc2xhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi44NyAxNS4wNy0yLjU0LTIuNTEuMDMtLjAzQTE3LjUyIDE3LjUyIDAgMCAwIDE0LjA3IDZIMTdWNGgtN1YySDh2MkgxdjEuOTloMTEuMTdDMTEuNSA3LjkyIDEwLjQ0IDkuNzUgOSAxMS4zNSA4LjA3IDEwLjMyIDcuMyA5LjE5IDYuNjkgOGgtMmMuNzMgMS42MyAxLjczIDMuMTcgMi45OCA0LjU2bC01LjA5IDUuMDJMNCAxOWw1LTUgMy4xMSAzLjExLjc2LTIuMDR6TTE4LjUgMTBoLTJMMTIgMjJoMmwxLjEyLTNoNC43NUwyMSAyMmgybC00LjUtMTJ6bS0yLjYyIDcgMS42Mi00LjMzTDE5LjEyIDE3aC0zLjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmVuZGluZ0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiAxOCAyLjI5LTIuMjktNC44OC00Ljg4LTQgNEwyIDcuNDEgMy40MSA2bDYgNiA0LTQgNi4zIDYuMjlMMjIgMTJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJlbmRpbmdGbGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMTItNC00djNIM3YyaDE1djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyZW5kaW5nVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA2IDIuMjkgMi4yOS00Ljg4IDQuODgtNC00TDIgMTYuNTkgMy40MSAxOGw2LTYgNCA0IDYuMy02LjI5TDIyIDEyVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyb3VibGVzaG9vdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDIwLjU5LTQuNjktNC42OUE3LjkwMiA3LjkwMiAwIDAgMCAxOSAxMWMwLTQuNDItMy41OC04LTgtOC00LjA4IDAtNy40NCAzLjA1LTcuOTMgN2gyLjAyQzUuNTcgNy4xNyA4LjAzIDUgMTEgNWMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNmMtMi40MiAwLTQuNS0xLjQ0LTUuNDUtMy41SDMuNEM0LjQ1IDE2LjY5IDcuNDYgMTkgMTEgMTljMS44NSAwIDMuNTUtLjYzIDQuOS0xLjY5TDIwLjU5IDIyIDIyIDIwLjU5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjQzIDkuNjkgOS42NSAxNWgxLjY0bDEuMjYtMy43OC45NSAyLjI4aDJWMTJoLTFsLTEuMjUtM2gtMS41NGwtMS4xMiAzLjM3TDkuMzUgN0g3LjdsLTEuMjUgNEgxdjEuNWg2LjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNi40MyA5LjU3TDEyIDE1bC0xLjU3LTMuNDNMNyAxMGwzLjQzLTEuNTdMMTIgNWwxLjU3IDMuNDNMMTcgMTBsLTMuNDMgMS41N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVybmVkSW5Ob3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAyMWw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTUtNS0yLjE4TDcgMThWNWgxMHYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVybmVkSW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAyMWw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVuZm9sZExlc3NEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41OCAxLjQxIDE1LjE2IDBsLTMuMTcgMy4xN0w4LjgyIDAgNy40MSAxLjQxIDExLjk5IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU4IDYuNDEgMTUuMTYgNWwtMy4xNyAzLjE3TDguODIgNSA3LjQxIDYuNDEgMTEuOTkgMTF6TTcuNDIgMTcuNTkgOC44NCAxOWwzLjE3LTMuMTdMMTUuMTggMTlsMS40MS0xLjQxTDEyLjAxIDEzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQyIDIyLjU5IDguODQgMjRsMy4xNy0zLjE3TDE1LjE4IDI0bDEuNDEtMS40MUwxMi4wMSAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5mb2xkTW9yZURvdWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDcuODMgMTUuMTcgMTFsMS40MS0xLjQxTDEyIDUgNy40MSA5LjU5IDguODMgMTEgMTIgNy44M3ptMC01TDE1LjE3IDZsMS40MS0xLjQxTDEyIDAgNy40MSA0LjU5IDguODMgNiAxMiAyLjgzem0wIDE4LjM0TDguODMgMThsLTEuNDEgMS40MUwxMiAyNGw0LjU5LTQuNTlMMTUuMTcgMTggMTIgMjEuMTd6bTAtNUw4LjgzIDEzbC0xLjQxIDEuNDFMMTIgMTlsNC41OS00LjU5TDE1LjE3IDEzIDEyIDE2LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbnB1Ymxpc2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MnptLTEwLjYtNC41OS00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44My4xOC0uMTggMS40MSAxLjQxLTEuNTkgMS41OXptMy01Ljg0LTcuMS03LjFBOS45MSA5LjkxIDAgMCAxIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTAgMCAyLjA0LS42MSAzLjkzLTEuNjYgNS41MUwxNSAxMi4xN2wyLjY1LTIuNjUtMS40MS0xLjQxLTIuNjUgMi42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVXBkYXRlRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjY3IDUuODQgNy4yMiA0LjM5QTguODYgOC44NiAwIDAgMSAxMiAzYzIuNzQgMCA1LjE5IDEuMjMgNi44NCAzLjE2TDIxIDR2NmgtNmwyLjQxLTIuNDFDMTYuMTIgNi4wMiAxNC4xOCA1IDEyIDVjLTEuMiAwLTIuMzQuMzEtMy4zMy44NHpNMTMgN2gtMnYxLjE3bDIgMlY3em02Ljc4IDE1LjYxLTMtM0E4Ljk3MyA4Ljk3MyAwIDAgMSAxMiAyMWE5IDkgMCAwIDEtOS05YzAtMS43Ni41MS0zLjQgMS4zOS00Ljc4bC0zLTNMMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6bS00LjQ2LTQuNDZMNS44NCA4LjY3QTcuMDYgNy4wNiAwIDAgMCA1IDEyYzAgMy44NiAzLjE0IDcgNyA3IDEuMiAwIDIuMzQtLjMxIDMuMzItLjg1ek0yMC45NCAxM2gtMi4wMmMtLjEyLjgzLS4zOSAxLjYxLS43NyAyLjMybDEuNDcgMS40N2MuNy0xLjEyIDEuMTctMi40MSAxLjMyLTMuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEwLjEyaC02Ljc4bDIuNzQtMi44MmMtMi43My0yLjctNy4xNS0yLjgtOS44OC0uMS0yLjczIDIuNzEtMi43MyA3LjA4IDAgOS43OXM3LjE1IDIuNzEgOS44OCAwQzE4LjMyIDE1LjY1IDE5IDE0LjA4IDE5IDEyLjFoMmMwIDEuOTgtLjg4IDQuNTUtMi42NCA2LjI5LTMuNTEgMy40OC05LjIxIDMuNDgtMTIuNzIgMC0zLjUtMy40Ny0zLjUzLTkuMTEtLjAyLTEyLjU4czkuMTQtMy40NyAxMi42NSAwTDIxIDN2Ny4xMnpNMTIuNSA4djQuMjVsMy41IDIuMDgtLjcyIDEuMjFMMTEgMTNWOGgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVwZ3JhZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxOHYySDh2LTJoOHpNMTEgNy45OVYxNmgyVjcuOTloM0wxMiA0IDggNy45OWgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWZXJpZmllZFVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHptLTIgMTYtNC00IDEuNDEtMS40MUwxMCAxNC4xN2w2LjU5LTYuNTlMMTggOWwtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWZXJpZmllZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzIDEyLTIuNDQtMi43OS4zNC0zLjY5LTMuNjEtLjgyLTEuODktMy4yTDEyIDIuOTYgOC42IDEuNSA2LjcxIDQuNjkgMy4xIDUuNWwuMzQgMy43TDEgMTJsMi40NCAyLjc5LS4zNCAzLjcgMy42MS44Mkw4LjYgMjIuNWwzLjQtMS40NyAzLjQgMS40NiAxLjg5LTMuMTkgMy42MS0uODItLjM0LTMuNjlMMjMgMTJ6bS0xMi45MSA0LjcyLTMuOC0zLjgxIDEuNDgtMS40OCAyLjMyIDIuMzMgNS44NS01Ljg3IDEuNDggMS40OC03LjMzIDcuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsU3BsaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTVoOHYtMkgzdjJ6bTAgNGg4di0ySDN2MnptMC04aDhWOUgzdjJ6bTAtNnYyaDhWNUgzem0xMCAwaDh2MTRoLThWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0FnZW5kYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzSDVjLTEuMSAwLTIgLjktMiAydjRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNGMwLTEuMS0uOS0yLTItMnpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0FycmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWgtM3YxNGgzVjV6bS00IDBIN3YxNGgxMFY1ek02IDVIM3YxNGgzVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdDYXJvdXNlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgN2g0djEwSDJWN3ptNSAxMmgxMFY1SDd2MTR6TTE4IDdoNHYxMGgtNFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q29sdW1uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNjcgNXYxNEg5LjMzVjVoNS4zNHptMSAxNEgyMVY1aC01LjMzdjE0em0tNy4zNCAwVjVIM3YxNGg1LjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q29tZnlBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTkgMTNIN3YtNGg0djR6bTAtNkg3VjdoNHY0em02IDZoLTR2LTRoNHY0em0wLTZoLTRWN2g0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdDb21wYWN0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS04LjUgMTIuNWgtNHYtNGg0djR6bTAtNWgtNHYtNGg0djR6bTUgNWgtNHYtNGg0djR6bTAtNWgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdDb3p5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS04Ljc1IDEyLjc1aC00di00aDR2NHptMC01LjVoLTR2LTRoNHY0em01LjUgNS41aC00di00aDR2NHptMC01LjVoLTR2LTRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3RGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMWgxOXYtM0gydjN6TTIwIDhIM2MtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTdjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xek0yIDN2M2gxOVYzSDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdIZWFkbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxNWgxNnYtMkg0djJ6bTAgNGgxNnYtMkg0djJ6bTAtOGgxNlY5SDR2MnptMC02djJoMTZWNUg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3SW5BciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjI1IDcuNi01LjUtMy4xOGExLjQ5IDEuNDkgMCAwIDAtMS41IDBMNS43NSA3LjZjLS40Ni4yNy0uNzUuNzYtLjc1IDEuM3Y2LjM1YzAgLjU0LjI5IDEuMDMuNzUgMS4zbDUuNSAzLjE4Yy40Ni4yNyAxLjA0LjI3IDEuNSAwbDUuNS0zLjE4Yy40Ni0uMjcuNzUtLjc2Ljc1LTEuM1Y4LjljMC0uNTQtLjI5LTEuMDMtLjc1LTEuM3pNNyAxNC45NnYtNC42Mmw0IDIuMzJ2NC42MWwtNC0yLjMxem01LTQuMDNMOCA4LjYxbDQtMi4zMSA0IDIuMzEtNCAyLjMyem0xIDYuMzR2LTQuNjFsNC0yLjMydjQuNjJsLTQgMi4zMXpNNyAySDMuNUMyLjY3IDIgMiAyLjY3IDIgMy41VjdoMlY0aDNWMnptMTAgMGgzLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVWN2gtMlY0aC0zVjJ6TTcgMjJIMy41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVWMTdoMnYzaDN2MnptMTAgMGgzLjVjLjgzIDAgMS41LS42NyAxLjUtMS41VjE3aC0ydjNoLTN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0thbmJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDdWN2gydjEwem00LTVoLTJWN2gydjV6bTQgM2gtMlY3aDJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0xpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE0aDR2LTRIM3Y0em0wIDVoNHYtNEgzdjR6TTMgOWg0VjVIM3Y0em01IDVoMTN2LTRIOHY0em0wIDVoMTN2LTRIOHY0ek04IDV2NGgxM1Y1SDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdNb2R1bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC42NyA1djYuNUg5LjMzVjVoNS4zNHptMSA2LjVIMjFWNWgtNS4zM3Y2LjV6bS0xIDcuNXYtNi41SDkuMzNWMTloNS4zNHptMS02LjVWMTlIMjF2LTYuNWgtNS4zM3ptLTcuMzQgMEgzVjE5aDUuMzN2LTYuNXptMC0xVjVIM3Y2LjVoNS4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld1F1aWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNXY2LjVIOS4zM1Y1SDIxem0tNi4zMyAxNHYtNi41SDkuMzNWMTloNS4zNHptMS02LjVWMTlIMjF2LTYuNWgtNS4zM3pNOC4zMyAxOVY1SDN2MTRoNS4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld1NpZGViYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyMEgyVjRoMTR2MTZ6bTItMTJoNFY0aC00djR6bTAgMTJoNHYtNGgtNHY0em0wLTZoNHYtNGgtNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3U3RyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxN3YtMmMwLTEuMS45LTIgMi0yaDE0YzEuMSAwIDIgLjkgMiAydjJjMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJ6TTMgN3YyYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld1RpbWVsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE0SDZ2LTJoNnYyem0zLTRIOXYtMmg2djJ6bTMtNGgtNlY3aDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld1dlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjMzIDIwSDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxLjMzYzEuMSAwIDIgLjkgMiAydjEyYTIgMiAwIDAgMS0yIDJ6TTIyIDE4VjZjMC0xLjEtLjktMi0yLTJoLTEuMzNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJIMjBhMiAyIDAgMCAwIDItMnptLTcuMzMgMFY2YzAtMS4xLS45LTItMi0yaC0xLjMzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEuMzNjMS4xIDAgMi0uOSAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpc2liaWxpdHlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY1LS4xMyAxLjI2LS4zNiAxLjgzbDIuOTIgMi45MmMxLjUxLTEuMjYgMi43LTIuODkgMy40My00Ljc1LTEuNzMtNC4zOS02LTcuNS0xMS03LjUtMS40IDAtMi43NC4yNS0zLjk4LjdsMi4xNiAyLjE2QzEwLjc0IDcuMTMgMTEuMzUgNyAxMiA3ek0yIDQuMjdsMi4yOCAyLjI4LjQ2LjQ2QTExLjgwNCAxMS44MDQgMCAwIDAgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41IDEuNTUgMCAzLjAzLS4zIDQuMzgtLjg0bC40Mi40MkwxOS43MyAyMiAyMSAyMC43MyAzLjI3IDMgMiA0LjI3ek03LjUzIDkuOGwxLjU1IDEuNTVjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42NiAxLjM0IDMgMyAzIC4yMiAwIC40NC0uMDMuNjUtLjA4bDEuNTUgMS41NWMtLjY3LjMzLTEuNDEuNTMtMi4yLjUzLTIuNzYgMC01LTIuMjQtNS01IDAtLjc5LjItMS41My41My0yLjJ6bTQuMzEtLjc4IDMuMTUgMy4xNS4wMi0uMTZjMC0xLjY2LTEuMzQtMy0zLTNsLS4xNy4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlzaWJpbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDQuNUM3IDQuNSAyLjczIDcuNjEgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41czkuMjctMy4xMSAxMS03LjVjLTEuNzMtNC4zOS02LTcuNS0xMS03LjV6TTEyIDE3Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMC04Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9pY2VPdmVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi45OSA5LjE4YzAtLjA2LjAxLS4xMi4wMS0uMTggMC0yLjIxLTEuNzktNC00LTQtLjA2IDAtLjEyLjAxLS4xOC4wMWw0LjE3IDQuMTd6bS02LjEtMy41Nkw0LjI3IDMgMyA0LjI3bDIuNjIgMi42MkM1LjIzIDcuNSA1IDguMjIgNSA5YzAgMi4yMSAxLjc5IDQgNCA0IC43OCAwIDEuNS0uMjMgMi4xMS0uNjJMMTkuNzMgMjEgMjEgMTkuNzNsLTguNjItOC42Mi01LjQ5LTUuNDl6TTkgMTVjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bTcuNzYtOS42NC0xLjY4IDEuNjljLjg0IDEuMTguODQgMi43MSAwIDMuODlsMS42OCAxLjY5YzIuMDItMi4wMiAyLjAyLTUuMDcgMC03LjI3ek0yMC4wNyAybC0xLjYzIDEuNjNjMi43NyAzLjAyIDIuNzcgNy41NiAwIDEwLjc0TDIwLjA3IDE2YzMuOS0zLjg5IDMuOTEtOS45NSAwLTE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXRjaExhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTQuMiAxNC4yTDExIDEzVjdoMS41djUuMmw0LjUgMi43LS44IDEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2ViaG9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE1aDUuODhjLjI3LS4zMS42Ny0uNSAxLjEyLS41LjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNWMtLjQ0IDAtLjg0LS4xOS0xLjEyLS41SDExLjlBNSA1IDAgMSAxIDYgMTEuMXYyLjA3Yy0xLjE2LjQxLTIgMS41My0yIDIuODMgMCAxLjY1IDEuMzUgMyAzIDNzMy0xLjM1IDMtM3YtMXptMi41LTExYzEuNjUgMCAzIDEuMzUgMyAzaDJjMC0yLjc2LTIuMjQtNS01LTVhNS4wMDIgNS4wMDIgMCAwIDAtMy40NSA4LjYybC0yLjM1IDMuOWMtLjY4LjE0LTEuMi43NS0xLjIgMS40OCAwIC44My42NyAxLjUgMS41IDEuNWExLjQ5OCAxLjQ5OCAwIDAgMCAxLjQzLTEuOTVsMy4zOC01LjYzQTMuMDAzIDMuMDAzIDAgMCAxIDkuNSA3YzAtMS42NSAxLjM1LTMgMy0zem00LjUgOWMtLjY0IDAtMS4yMy4yLTEuNzIuNTRsLTMuMDUtNS4wN0MxMS41MyA4LjM1IDExIDcuNzQgMTEgN2MwLS44My42Ny0xLjUgMS41LTEuNVMxNCA2LjE3IDE0IDdjMCAuMTUtLjAyLjI5LS4wNi40M2wyLjE5IDMuNjVjLjI4LS4wNS41Ny0uMDguODctLjA4IDIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1YTUgNSAwIDAgMS00LjMzLTIuNWgyLjY3Yy40OC4zMiAxLjA1LjUgMS42Ni41IDEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWR0aEZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCA2aDF2MTJINFY2em0xNiAxMmgtMVY2aDF2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZHRoTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgNmg0djEySDRWNnptMTYgMTJoLTRWNmg0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWR0aFdpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCA2aDJ2MTJINFY2em0xNiAxMmgtMlY2aDJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlQcm90ZWN0ZWRTZXR1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjcxIDUuMjkgMTkgM2gtOHY4bDIuMy0yLjNjMS45NyAxLjQ2IDMuMjUgMy43OCAzLjI1IDYuNDIgMCAxLjMxLS4zMiAyLjU0LS44OCAzLjYzIDIuMzMtMS41MiAzLjg4LTQuMTQgMy44OC03LjEzIDAtMi41Mi0xLjExLTQuNzctMi44NC02LjMzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQ2IDguODhjMC0xLjMxLjMyLTIuNTQuODgtMy42M2E4LjQ3OSA4LjQ3OSAwIDAgMC0zLjg4IDcuMTNjMCAyLjUyIDEuMSA0Ljc3IDIuODQgNi4zM0w1IDIxaDh2LThsLTIuMyAyLjNjLTEuOTYtMS40Ni0zLjI0LTMuNzgtMy4yNC02LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3JrSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExYzEuNDkgMCAyLjg3LjQ3IDQgMS4yNlY4YzAtMS4xMS0uODktMi0yLTJoLTRWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDcuNjhBNi45OTUgNi45OTUgMCAwIDEgMTggMTF6bS04LTdoNHYyaC00VjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDE3LjUgMTguMlYxNWgxdjIuNzlsMS44NSAxLjg1LS43LjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3JrT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgMjEuNzQtMS40Ni0xLjQ2TDcuMjEgNS45NSAzLjI1IDEuOTkgMS45OSAzLjI1bDIuNyAyLjdoLS42NGMtMS4xMSAwLTEuOTkuODktMS45OSAybC0uMDEgMTFjMCAxLjExLjg5IDIgMiAyaDE1LjY0TDIxLjc0IDIzIDIzIDIxLjc0ek0yMiA3Ljk1Yy4wNS0xLjExLS44NC0yLTEuOTUtMS45NWgtNFYzLjk1YzAtMS4xMS0uODktMi0yLTEuOTVoLTRjLTEuMTEtLjA1LTIgLjg0LTIgMS45NXYuMzJsMTMuOTUgMTRWNy45NXpNMTQuMDUgNkgxMFYzLjk1aDQuMDVWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV29ya091dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQgNlY0aC00djJoNHpNNCA4djExaDE2VjhINHptMTYtMmMxLjExIDAgMiAuODkgMiAydjExYzAgMS4xMS0uODkgMi0yIDJINGMtMS4xMSAwLTItLjg5LTItMmwuMDEtMTFjMC0xLjExLjg4LTIgMS45OS0yaDRWNGMwLTEuMTEuODktMiAyLTJoNGMxLjExIDAgMiAuODkgMiAydjJoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLTRWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNiAwaC00VjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXeXNpd3lnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTZINVY3aDE0djEyem0tMi03SDd2LTJoMTB2MnptLTQgNEg3di0yaDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kWW91dHViZVNlYXJjaGVkRm9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4wMSAxNGgtLjhsLS4yNy0uMjdhNi40NTEgNi40NTEgMCAwIDAgMS41Ny00LjIzYzAtMy41OS0yLjkxLTYuNS02LjUtNi41cy02LjUgMy02LjUgNi41SDJsMy44NCA0IDQuMTYtNEg2LjUxYTQuNSA0LjUgMCAwIDEgOSAwIDQuNTA3IDQuNTA3IDAgMCAxLTYuMzIgNC4xMkw3LjcxIDE1LjFhNi40NzQgNi40NzQgMCAwIDAgNy41Mi0uNjdsLjI3LjI3di43OWw1LjAxIDQuOTlMMjIgMTlsLTQuOTktNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kWm9vbUluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdBNi40NzEgNi40NzEgMCAwIDAgMTYgOS41IDYuNSA2LjUgMCAxIDAgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTBoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kWm9vbU91dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6TTcgOWg1djFIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjAxIDIxLjAxYzAgMS4xLjg5IDEuOTkgMS45OSAxLjk5czEuOTktLjg5IDEuOTktMS45OWgtMy45OHptOC44Ny00LjE5VjExYzAtMy4yNS0yLjI1LTUuOTctNS4yOS02LjY5di0uNzJDMTMuNTkgMi43MSAxMi44OCAyIDEyIDJzLTEuNTkuNzEtMS41OSAxLjU5di43MkE2Ljg3MyA2Ljg3MyAwIDAgMCA1LjEyIDExdjUuODJMMyAxOC45NFYyMGgxOHYtMS4wNmwtMi4xMi0yLjEyek0xNiAxMy4wMWgtM3YzaC0ydi0zSDhWMTFoM1Y4aDJ2M2gzdjIuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9EZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyaC0zLjVsLTEtMWgtNWwtMSAxSDF2MmgxNHpNMTYgOWMtLjcgMC0xLjM3LjEtMiAuMjlWNUgydjEyYzAgMS4xLjkgMiAyIDJoNS42OEE2Ljk5OSA2Ljk5OSAwIDAgMCAyMyAxNmMwLTMuODctMy4xMy03LTctN3ptMCAxMmMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTJIMTV2NWwzLjYgMi4xLjgtMS4yLTIuOS0xLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVycm9yT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yem0wLThoMnY2aC0yem0uOTktNUM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFcnJvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdGlmaWNhdGlvbkltcG9ydGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTZ2LTVjMC0zLjA3LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjMgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tNSAwaC0ydi0yaDJ2MnptMC00aC0yVjhoMnY0em0tMSAxMGMxLjEgMCAyLS45IDItMmgtNGEyIDIgMCAwIDAgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXJuaW5nQW1iZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1Ljk5IDE5LjUzIDE5SDQuNDdMMTIgNS45OU0xMiAyIDEgMjFoMjJMMTIgMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTZoLTJ2Mmgyek0xMyAxMGgtMnY1aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhcm5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDIxaDIyTDEyIDIgMSAyMXptMTItM2gtMnYtMmgydjJ6bTAtNGgtMnYtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDEwSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTAuNWgxLjV2M0gxMHpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTcuNSAxNUg2di00LjVINC41VjloM3Y2em01LjUtMWMwIC41NS0uNDUgMS0xIDFIOS41Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFIMTJjLjU1IDAgMSAuNDUgMSAxdjR6bTYuNSAxaC0xLjc1TDE2IDEyLjc1VjE1aC0xLjVWOUgxNnYyLjI1TDE3Ljc1IDloMS43NWwtMi4yNSAzIDIuMjUgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMWtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxNUg3LjV2LTQuNUg2VjloM3Y2em00Ljc1IDBMMTIgMTIuNzVWMTVoLTEuNVY5SDEydjIuMjVMMTMuNzUgOWgxLjc1bC0yLjI1IDMgMi4yNSAzaC0xLjc1em01Ljc1LTIuNUgxOFYxNGgtMXYtMS41aC0xLjV2LTFIMTdWMTBoMXYxLjVoMS41djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDFLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTguNSAxMkg5di00LjVINy41VjloM3Y2em03IDBoLTEuNzVMMTQgMTIuNzVWMTVoLTEuNVY5SDE0djIuMjVMMTUuNzUgOWgxLjc1bC0yLjI1IDMgMi4yNSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQya1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOS41IDguNWMwIC41NS0uNDUgMS0xIDFoLTJ2MWgzVjE1SDV2LTIuNWMwLS41NS40NS0xIDEtMWgydi0xSDVWOWgzLjVjLjU1IDAgMSAuNDUgMSAxdjEuNXptNC43NSAzLjUtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1aC0xLjc1ek0yMCAxMi41aC0xLjVWMTRoLTF2LTEuNUgxNnYtMWgxLjVWMTBoMXYxLjVIMjB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMksgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSA5LjVIOHYxaDNWMTVINi41di0yLjVjMC0uNTUuNDUtMSAxLTFoMnYtMWgtM1Y5SDEwYy41NSAwIDEgLjQ1IDEgMXYxLjVjMCAuNTUtLjQ1IDEtMSAxem04IDIuNWgtMS43NWwtMS43NS0yLjI1VjE1SDEzVjloMS41djIuMjVMMTYuMjUgOUgxOGwtMi4yNSAzTDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQza1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05LjUgMTRjMCAuNTUtLjQ1IDEtMSAxSDV2LTEuNWgzdi0xSDZ2LTFoMnYtMUg1VjloMy41Yy41NSAwIDEgLjQ1IDEgMXY0em02LjUgMWgtMS43NWwtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1em00LTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDNLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTggMTFjMCAuNTUtLjQ1IDEtMSAxSDYuNXYtMS41aDN2LTFoLTJ2LTFoMnYtMWgtM1Y5SDEwYy41NSAwIDEgLjQ1IDEgMXY0em03IDFoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNGtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTguNSAxMC41aC0xVjE1SDh2LTEuNUg1VjloMS41djNIOFY5aDEuNXYzaDF2MS41ek0xNiAxNWgtMS43NWwtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1em00LTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDRLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTAuNWgtMVYxNUg5LjV2LTEuNWgtM1Y5SDh2M2gxLjVWOUgxMXYzaDF2MS41em02IDEuNWgtMS43NWwtMS43NS0yLjI1VjE1SDEzVjloMS41djIuMjVMMTYuMjUgOUgxOGwtMi4yNSAzTDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ1RyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEzaDJ2MmgtNVY5aDdjMC0xLjEtLjktMi0yLTJoLTVjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg1YzEuMSAwIDItLjkgMi0ydi00aC00djJ6TTMgMTNoNXYySDN2Mmg1YzEuMSAwIDItLjkgMi0ydi0yYzAtMS4xLS45LTItMi0ySDVWOWg1VjdIM3Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ1a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOS41IDcuNWgtM3YxaDJjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg1di0xLjVoM3YtMUg1VjloNC41djEuNXpNMTYgMTVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxMVY5aDEuNXYyLjI1TDE0LjI1IDlIMTZsLTIuMjUgM0wxNiAxNXptNC0yLjVoLTEuNVYxNGgtMXYtMS41SDE2di0xaDEuNVYxMGgxdjEuNUgyMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ1SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDcuNUg4djFoMmMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxSDYuNXYtMS41aDN2LTFoLTNWOUgxMXYxLjV6bTcgNC41aC0xLjc1bC0xLjc1LTIuMjVWMTVIMTNWOWgxLjV2Mi4yNUwxNi4yNSA5SDE4bC0yLjI1IDNMMTggMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDZrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDEyLjVIOFYxNEg2LjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOS41IDcuNWgtM3YxaDJjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg2Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoMy41djEuNXpNMTYgMTVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxMVY5aDEuNXYyLjI1TDE0LjI1IDlIMTZsLTIuMjUgM0wxNiAxNXptNC0yLjVoLTEuNVYxNGgtMXYtMS41SDE2di0xaDEuNVYxMGgxdjEuNUgyMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ2SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMi41aDEuNVYxNEg4ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTggNy41SDh2MWgyYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFINy41Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFIMTF2MS41em03IDQuNWgtMS43NWwtMS43NS0yLjI1VjE1SDEzVjloMS41djIuMjVMMTYuMjUgOUgxOGwtMi4yNSAzTDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ3a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek04IDE1SDYuMjVsMS4zOC00LjVINVY5aDMuNWMuNjcgMCAxLjE1LjY1Ljk2IDEuMjlMOCAxNXptOCAwaC0xLjc1bC0xLjc1LTIuMjVWMTVIMTFWOWgxLjV2Mi4yNUwxNC4yNSA5SDE2bC0yLjI1IDNMMTYgMTV6bTQtMi41aC0xLjVWMTRoLTF2LTEuNUgxNnYtMWgxLjVWMTBoMXYxLjVIMjB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kN0sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05LjUgMTVINy43NWwxLjM4LTQuNUg2LjVWOUgxMGMuNjcgMCAxLjE1LjY1Ljk2IDEuMjlMOS41IDE1em04LjUgMGgtMS43NWwtMS43NS0yLjI1VjE1SDEzVjloMS41djIuMjVMMTYuMjUgOUgxOGwtMi4yNSAzTDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ4a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxMi41SDhWMTRINi41em0wLTIuNUg4djEuNUg2LjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05LjUgMTRjMCAuNTUtLjQ1IDEtMSAxSDZjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjR6bTYuNSAxaC0xLjc1bC0xLjc1LTIuMjVWMTVIMTFWOWgxLjV2Mi4yNUwxNC4yNSA5SDE2bC0yLjI1IDNMMTYgMTV6bTQtMi41aC0xLjVWMTRoLTF2LTEuNUgxNnYtMWgxLjVWMTBoMXYxLjVIMjB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOEsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTIuNWgxLjVWMTRIOHpNOCAxMGgxLjV2MS41SDh6bTExLTdINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOCAxMWMwIC41NS0uNDUgMS0xIDFINy41Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFIMTBjLjU1IDAgMSAuNDUgMSAxdjR6bTcgMWgtMS43NWwtMS43NS0yLjI1VjE1SDEzVjloMS41djIuMjVMMTYuMjUgOUgxOGwtMi4yNSAzTDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ5a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxMEg4djEuNUg2LjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05LjUgMTRjMCAuNTUtLjQ1IDEtMSAxSDV2LTEuNWgzdi0xSDZjLS41NSAwLTEtLjQ1LTEtMVYxMGMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjR6bTYuNSAxaC0xLjc1bC0xLjc1LTIuMjVWMTVIMTFWOWgxLjV2Mi4yNUwxNC4yNSA5SDE2bC0yLjI1IDNMMTYgMTV6bTQtMi41aC0xLjVWMTRoLTF2LTEuNUgxNnYtMWgxLjVWMTBoMXYxLjVIMjB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOUsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTBoMS41djEuNUg4em0xMS03SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTggMTFjMCAuNTUtLjQ1IDEtMSAxSDYuNXYtMS41aDN2LTFoLTJjLS41NSAwLTEtLjQ1LTEtMVYxMGMwLS41NS40NS0xIDEtMUgxMGMuNTUgMCAxIC40NSAxIDF2NHptNyAxaC0xLjc1bC0xLjc1LTIuMjVWMTVIMTNWOWgxLjV2Mi4yNUwxNi4yNSA5SDE4bC0yLjI1IDNMMTggMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFRvUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnptLTUtN3YyaC0zdjNoLTJ2LTNIOHYtMmgzVjdoMnYzaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcnBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDIyaDEybC02LTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg0di0ySDNWNWgxOHYxMmgtNHYyaDRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxidW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE0LjVjLTIuNDkgMC00LjUtMi4wMS00LjUtNC41UzkuNTEgNy41IDEyIDcuNXM0LjUgMi4wMSA0LjUgNC41LTIuMDEgNC41LTQuNSA0LjV6bTAtNS41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFydFRyYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTNoLTh2LTJoOHYyem0wLTZoLTh2Mmg4Vjd6bS04IDEwaDh2LTJoLTh2MnptLTItOHY2YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjljMC0xLjEuOS0yIDItMmg2YzEuMSAwIDIgLjkgMiAyem0tMS41IDYtMi4yNS0zLTEuNzUgMi4yNi0xLjI1LTEuNTFMMy41IDE1aDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1ZGlvRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMiAxMWgtM3YzLjc1YzAgMS4yNC0xLjAxIDIuMjUtMi4yNSAyLjI1UzguNSAxNy45OSA4LjUgMTYuNzVzMS4wMS0yLjI1IDIuMjUtMi4yNWMuNDYgMCAuODkuMTQgMS4yNS4zOFYxMWg0djJ6bS0zLTRWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXZUaW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3YzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMS0uNDUtMS0xLTEtMSAuNDUtMSAxem0wLTE0djRoMlY1LjA4YzMuMzkuNDkgNiAzLjM5IDYgNi45MiAwIDMuODctMy4xMyA3LTcgN3MtNy0zLjEzLTctN2MwLTEuNjguNTktMy4yMiAxLjU4LTQuNDJMMTIgMTNsMS40MS0xLjQxLTYuOC02Ljh2LjAyQzQuNDIgNi40NSAzIDkuMDUgMyAxMmMwIDQuOTcgNC4wMiA5IDkgOWE5IDkgMCAwIDAgMC0xOGgtMXptNyA5YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxIC40NSAxIDEgMSAxLS40NSAxLTF6TTYgMTJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyYW5kaW5nV2F0ZXJtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtOXYtNmg5djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxUb0FjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM3YtM2gxOHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG9zZWRDYXB0aW9uRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgzIDRIMTljMS4xIDAgMiAuOSAyIDJ2MTJjMCAuMDUtLjAxLjEtLjAyLjE2bC0zLjM4LTMuMzhjLjI0LS4xOS40LS40Ni40LS43OHYtMWgtMS41di41aC0uMTdsLTEuODMtMS44M1YxMC41aDJ2LjVIMTh2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2LjE3TDYuODMgNHptMTIuOTUgMTguNjFMMTcuMTcgMjBINWEyIDIgMCAwIDEtMi0yVjZjMC0uMDUuMDItLjEuMDItLjE1TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnpNMTEgMTMuODNsLS44My0uODNIOS41di41aC0ydi0zaC4xN0w2LjQgOS4yMmMtLjI0LjE5LS40LjQ2LS40Ljc4djRjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTF2LS4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvc2VkQ2FwdGlvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSA1LjV2MTNoLTE1di0xM2gxNXpNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tOCA3SDkuNXYtLjVoLTJ2M2gyVjEzSDExdjFjMCAuNTUtLjQ1IDEtMSAxSDdjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxem03IDBoLTEuNXYtLjVoLTJ2M2gyVjEzSDE4djFjMCAuNTUtLjQ1IDEtMSAxaC0zYy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvc2VkQ2FwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTggN0g5LjV2LS41aC0ydjNoMlYxM0gxMXYxYzAgLjU1LS40NSAxLTEgMUg3Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MXptNyAwaC0xLjV2LS41aC0ydjNoMlYxM0gxOHYxYzAgLjU1LS40NSAxLTEgMWgtM2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRyb2xDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41NCA1LjU0IDEzLjc3IDcuMyAxMiA1LjU0IDEwLjIzIDcuMyA4LjQ2IDUuNTQgMTIgMnptMi45MiAxMC0xLjc2LTEuNzdMMTguNDYgMTJsLTEuNzYtMS43NyAxLjc2LTEuNzdMMjIgMTJ6bS0xMCAyLjkyIDEuNzctMS43NkwxMiAxOC40NmwxLjc3LTEuNzYgMS43NyAxLjc2TDEyIDIyem0tMi45Mi0xMCAxLjc2IDEuNzdMNS41NCAxMmwxLjc2IDEuNzctMS43NiAxLjc3TDIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFcXVhbGl6ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyMGg0VjRoLTR2MTZ6bS02IDBoNHYtOEg0djh6TTE2IDl2MTFoNFY5aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBsaWNpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA2aC00djJoNHYyaC00djJoNHYySDlWN2g2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhc3RGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNCAxOCA4LjUtNkw0IDZ2MTJ6bTktMTJ2MTJsOC41LTZMMTMgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFzdFJld2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE4VjZsLTguNSA2IDguNSA2em0uNS02IDguNSA2VjZsLTguNSA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGZWF0dXJlZFBsYXlMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkgOEgzVjloOXYyem0wLTRIM1Y1aDl2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmVhdHVyZWRWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDlIM1Y1aDl2N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmliZXJEdnIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDEwLjVoMnYxaC0ydi0xem0tMTMgMGgydjNoLTJ2LTN6TTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE4YTIgMiAwIDAgMCAyLTJWNWMwLTEuMTEtLjg5LTItMi0yek04IDEzLjVjMCAuODUtLjY1IDEuNS0xLjUgMS41SDNWOWgzLjVjLjg1IDAgMS41LjY1IDEuNSAxLjV2M3ptNC42MiAxLjVoLTEuNUw5LjM3IDloMS41bDEgMy40MyAxLTMuNDNoMS41bC0xLjc1IDZ6TTIxIDExLjVjMCAuNi0uNCAxLjE1LS45IDEuNEwyMSAxNWgtMS41bC0uODUtMkgxNy41djJIMTZWOWgzLjVjLjg1IDAgMS41LjY1IDEuNSAxLjV2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmliZXJNYW51YWxSZWNvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHYyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCI4XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2YzAtMS4xMS0uODktMi0yLTJ6TTguNSAxNUg3LjNsLTIuNTUtMy41VjE1SDMuNVY5aDEuMjVsMi41IDMuNVY5SDguNXY2em01LTQuNzRIMTF2MS4xMmgyLjV2MS4yNkgxMXYxLjExaDIuNVYxNWgtNFY5aDR2MS4yNnptNyAzLjc0YzAgLjU1LS40NSAxLTEgMWgtNGMtLjU1IDAtMS0uNDUtMS0xVjloMS4yNXY0LjUxaDEuMTNWOS45OWgxLjI1djMuNTFoMS4xMlY5aDEuMjV2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmliZXJQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTAuNWgydjFoLTJ6TTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yek05IDExLjVjMCAuODUtLjY1IDEuNS0xLjUgMS41aC0ydjJINFY5aDMuNWMuODUgMCAxLjUuNjUgMS41IDEuNXYxem0zLjUgMy41SDExVjloMS41djZ6bTcuNSAwaC0xLjJsLTIuNTUtMy41VjE1SDE1VjloMS4yNWwyLjUgMy41VjlIMjB2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmliZXJTbWFydFJlY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiOFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA0LjI2djIuMDlhNS45OSA1Ljk5IDAgMCAxIDAgMTEuM3YyLjA5YzMuNDUtLjg5IDYtNC4wMSA2LTcuNzRzLTIuNTUtNi44NS02LTcuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcndhcmQxMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzYzAgMy4zMS0yLjY5IDYtNiA2cy02LTIuNjktNi02IDIuNjktNiA2LTZ2NGw1LTUtNS01djRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOGgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODYgMTUuOTR2LTQuMjdoLS4wOUw5IDEyLjN2LjY5bDEuMDEtLjMxdjMuMjZ6TTEyLjI1IDEzLjQ0di43NGMwIDEuOSAxLjMxIDEuODIgMS40NCAxLjgyLjE0IDAgMS40NC4wOSAxLjQ0LTEuODJ2LS43NGMwLTEuOS0xLjMxLTEuODItMS40NC0xLjgyLS4xNCAwLTEuNDQtLjA5LTEuNDQgMS44MnptMi4wNC0uMTJ2Ljk3YzAgLjc3LS4yMSAxLjAzLS41OSAxLjAzcy0uNi0uMjYtLjYtMS4wM3YtLjk3YzAtLjc1LjIyLTEuMDEuNTktMS4wMS4zOC0uMDEuNi4yNi42IDEuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcndhcmQzMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzYzAgMy4zMS0yLjY5IDYtNiA2cy02LTIuNjktNi02IDIuNjktNiA2LTZ2NGw1LTUtNS01djRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOGgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDYgMTUuMzhjLS4yOSAwLS42Mi0uMTctLjYyLS41NGgtLjg1YzAgLjk3LjkgMS4yMyAxLjQ1IDEuMjMuODcgMCAxLjUxLS40NiAxLjUxLTEuMjUgMC0uNjYtLjQ1LS45LS43MS0xIC4xMS0uMDUuNjUtLjMyLjY1LS45MiAwLS4yMS0uMDUtMS4yMi0xLjQ0LTEuMjItLjYyIDAtMS40LjM1LTEuNCAxLjE2aC44NWMwLS4zNC4zMS0uNDguNTctLjQ4LjU5IDAgLjU4LjUuNTguNTQgMCAuNTItLjQxLjU5LS42My41OWgtLjQ2di42NmguNDVjLjY1IDAgLjcuNDIuNy42NCAwIC4zMi0uMjEuNTktLjY1LjU5ek0xMy44NSAxMS42OGMtLjE0IDAtMS40NC0uMDgtMS40NCAxLjgydi43NGMwIDEuOSAxLjMxIDEuODIgMS40NCAxLjgyLjE0IDAgMS40NC4wOSAxLjQ0LTEuODJ2LS43NGMuMDEtMS45MS0xLjMtMS44Mi0xLjQ0LTEuODJ6bS42IDIuNjdjMCAuNzctLjIxIDEuMDMtLjU5IDEuMDNzLS42LS4yNi0uNi0xLjAzdi0uOTdjMC0uNzUuMjItMS4wMS41OS0xLjAxLjM4IDAgLjYuMjYuNiAxLjAxdi45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9yd2FyZDUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNiAyLjY5LTYgNi02djRsNS01LTUtNXY0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LThoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAzIDE1LjM4Yy0uNDQgMC0uNTgtLjMxLS42LS41NmgtLjg0Yy4wMy44NS43OSAxLjI1IDEuNDQgMS4yNS45MyAwIDEuNDQtLjYzIDEuNDQtMS40MyAwLTEuMzMtLjk3LTEuNDQtMS4zLTEuNDQtLjIgMC0uNDMuMDUtLjY0LjE2bC4xMS0uOTJoMS43di0uNzFoLTIuMzlsLS4yNSAyLjE3LjY3LjE3Yy4xMy0uMTMuMjgtLjIzLjU3LS4yMy40IDAgLjY5LjIzLjY5Ljc1LS4wMS4wNS4wMi43OS0uNi43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2FtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3LjVWMkg5djUuNWwzIDMgMy0zek03LjUgOUgydjZoNS41bDMtMy0zLTN6TTkgMTYuNVYyMmg2di01LjVsLTMtMy0zIDN6TTE2LjUgOWwtMyAzIDMgM0gyMlY5aC01LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOCAxMkg5LjV2LTJoLTJ2Mkg2VjloMS41djIuNWgyVjlIMTF2NnptMi02aDRjLjU1IDAgMSAuNDUgMSAxdjRjMCAuNTUtLjQ1IDEtMSAxaC00Vjl6bTEuNSA0LjVoMnYtM2gtMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFyaW5nRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjAzIDMuMkM3LjE1IDIuNDQgOC41MSAyIDEwIDJjMy45MyAwIDcgMy4wNyA3IDcgMCAxLjI2LS4zOCAyLjY1LTEuMDcgMy45LS4wMi4wNC0uMDUuMDgtLjA4LjEzbC0xLjQ4LTEuNDhjLjQtLjg2LjYzLTEuNzUuNjMtMi41NSAwLTIuOC0yLjItNS01LTUtLjkyIDAtMS43Ni4yNi0yLjUuNjdMNi4wMyAzLjJ6bTExLjE4IDExLjE4IDEuNDMgMS40M0MyMC4xMSAxMy45MyAyMSAxMS41NyAyMSA5YzAtMy4wNC0xLjIzLTUuNzktMy4yMi03Ljc4bC0xLjQyIDEuNDJBOC45MzcgOC45MzcgMCAwIDEgMTkgOWMwIDIuMDItLjY3IDMuODgtMS43OSA1LjM4ek0xMCA2LjVjLS4yMSAwLS40LjAzLS41OS4wOGwzLjAxIDMuMDFjLjA1LS4xOS4wOC0uMzguMDgtLjU5QTIuNSAyLjUgMCAwIDAgMTAgNi41em0xMS4xOSAxNC42OUwyLjgxIDIuODEgMS4zOSA0LjIybDIuMTMgMi4xM0MzLjE5IDcuMTYgMyA4LjA1IDMgOWgyYzAtLjM2LjA1LS43MS4xMi0xLjA1bDYuNjEgNi42MWMtLjg4LjY4LTEuNzggMS40MS0yLjI3IDIuOS0uNSAxLjUtMSAyLjAxLTEuNzEgMi4zOC0uMTkuMS0uNDYuMTYtLjc1LjE2LTEuMSAwLTItLjktMi0ySDNhMy45OTkgMy45OTkgMCAwIDAgNS42NCAzLjY1YzEuMzYtLjcxIDIuMTMtMS43MyAyLjczLTMuNTUuMzItLjk4LjktMS40MyAxLjcxLTIuMDUuMDMtLjAyLjA1LS4wNC4wOC0uMDZsNi42MiA2LjYyIDEuNDEtMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhcmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIwYy0uMjkgMC0uNTYtLjA2LS43Ni0uMTUtLjcxLS4zNy0xLjIxLS44OC0xLjcxLTIuMzgtLjUxLTEuNTYtMS40Ny0yLjI5LTIuMzktMy0uNzktLjYxLTEuNjEtMS4yNC0yLjMyLTIuNTNDOS4yOSAxMC45OCA5IDkuOTMgOSA5YzAtMi44IDIuMi01IDUtNXM1IDIuMiA1IDVoMmMwLTMuOTMtMy4wNy03LTctN1M3IDUuMDcgNyA5YzAgMS4yNi4zOCAyLjY1IDEuMDcgMy45LjkxIDEuNjUgMS45OCAyLjQ4IDIuODUgMy4xNS44MS42MiAxLjM5IDEuMDcgMS43MSAyLjA1LjYgMS44MiAxLjM3IDIuODQgMi43MyAzLjU1QTMuOTk5IDMuOTk5IDAgMCAwIDIxIDE4aC0yYzAgMS4xLS45IDItMiAyek03LjY0IDIuNjQgNi4yMiAxLjIyQzQuMjMgMy4yMSAzIDUuOTYgMyA5czEuMjMgNS43OSAzLjIyIDcuNzhsMS40MS0xLjQxQzYuMDEgMTMuNzQgNSAxMS40OSA1IDlzMS4wMS00Ljc0IDIuNjQtNi4zNnpNMTEuNSA5YTIuNSAyLjUgMCAwIDAgNSAwIDIuNSAyLjUgMCAwIDAtNSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaWdoUXVhbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTggMTFIOS41di0yaC0ydjJINlY5aDEuNXYyLjVoMlY5SDExdjZ6bTctMWMwIC41NS0uNDUgMS0xIDFoLS43NXYxLjVoLTEuNVYxNUgxNGMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjR6bS0zLjUtLjVoMnYtM2gtMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnRlcnByZXRlck1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41IDE2LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXYtMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjE1YzAgLjgzLS42NyAxLjUtMS41IDEuNXpNMjAgMjBoMXYtMS41NGMxLjY5LS4yNCAzLTEuNyAzLTMuNDZoLTFhMi41IDIuNSAwIDAgMS01IDBoLTFjMCAxLjc2IDEuMzEgMy4yMiAzIDMuNDZWMjB6TTkgMTJjLTIuMjEgMC00LTEuNzktNC00YTMuOTk5IDMuOTk5IDAgMCAxIDUuMzQtMy43N0E1LjkzOCA1LjkzOCAwIDAgMCA5IDhjMCAxLjQzLjUgMi43NCAxLjM0IDMuNzctLjQyLjE1LS44Ny4yMy0xLjM0LjIzem0tMS44OSAxLjEzQTQuOTY1IDQuOTY1IDAgMCAwIDUgMTcuMjJWMjBIMXYtMi43OGMwLTEuMTIuNjEtMi4xNSAxLjYxLTIuNjYgMS4yNC0uNjQgMi43Ni0xLjE5IDQuNS0xLjQzek0xMSA4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDQtMS43OSA0LTQgNC00LTEuNzktNC00em03LjMyIDEyYTQuOTk3IDQuOTk3IDAgMCAxLTIuODItNC41YzAtLjg5LjIzLTEuNzMuNjQtMi40NS0uMzctLjAzLS43NS0uMDUtMS4xNC0uMDUtMi41MyAwLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDcgMTcuMjJWMjBoMTEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpYnJhcnlBZGRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNy41MyAxMkw5IDEwLjVsMS40LTEuNDEgMi4wNyAyLjA4TDE3LjYgNiAxOSA3LjQxIDEyLjQ3IDE0ek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGlicmFyeUFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgOWgtNHY0aC0ydi00SDlWOWg0VjVoMnY0aDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGlicmFyeUJvb2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSA5SDlWOWgxMHYyem0tNCA0SDl2LTJoNnYyem00LThIOVY1aDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpYnJhcnlNdXNpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMiA1aC0zdjUuNWEyLjUgMi41IDAgMCAxLTUgMCAyLjUgMi41IDAgMCAxIDIuNS0yLjVjLjU3IDAgMS4wOC4xOSAxLjUuNTFWNWg0djJ6TTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb29wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNFYxTDggNWw0IDRWNmMzLjMxIDAgNiAyLjY5IDYgNiAwIDEuMDEtLjI1IDEuOTctLjcgMi44bDEuNDYgMS40NkE3LjkzIDcuOTMgMCAwIDAgMjAgMTJjMC00LjQyLTMuNTgtOC04LTh6bTAgMTRjLTMuMzEgMC02LTIuNjktNi02IDAtMS4wMS4yNS0xLjk3LjctMi44TDUuMjQgNy43NEE3LjkzIDcuOTMgMCAwIDAgNCAxMmMwIDQuNDIgMy41OCA4IDggOHYzbDQtNC00LTR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTHlyaWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWMwLTIuMDQgMS4yNC0zLjc5IDMtNC41N1Y0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoOWMxLjEgMCAyLS45IDItMnYtMi40MmMtMS43Ni0uNzgtMy0yLjUzLTMtNC41OHptLTQgNUg2di0yaDR2MnptMy0zSDZWOWg3djJ6bTAtM0g2VjZoN3YyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2LjE4Yy0uMzEtLjExLS42NS0uMTgtMS0uMTgtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zVjNoMlYxaC00djUuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pY05vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2NmMwIDEuNjYgMS4zNCAzIDMgM3ptLTEuMi05LjFjMC0uNjYuNTQtMS4yIDEuMi0xLjIuNjYgMCAxLjIuNTQgMS4yIDEuMmwtLjAxIDYuMmMwIC42Ni0uNTMgMS4yLTEuMTkgMS4yLS42NiAwLTEuMi0uNTQtMS4yLTEuMlY0Ljl6bTYuNSA2LjFjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDE0IDYuNyAxMUg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIxaDJ2LTMuMjhjMy4yOC0uNDggNi0zLjMgNi02LjcyaC0xLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pY09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMWgtMS43YzAgLjc0LS4xNiAxLjQzLS40MyAyLjA1bDEuMjMgMS4yM2MuNTYtLjk4LjktMi4wOS45LTMuMjh6bS00LjAyLjE3YzAtLjA2LjAyLS4xMS4wMi0uMTdWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1di4xOGw1Ljk4IDUuOTl6TTQuMjcgMyAzIDQuMjdsNi4wMSA2LjAxVjExYzAgMS42NiAxLjMzIDMgMi45OSAzIC4yMiAwIC40NC0uMDMuNjUtLjA4bDEuNjYgMS42NmMtLjcxLjMzLTEuNS41Mi0yLjMxLjUyLTIuNzYgMC01LjMtMi4xLTUuMy01LjFINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMWgydi0zLjI4Yy45MS0uMTMgMS43Ny0uNDUgMi41NC0uOUwxOS43MyAyMSAyMSAxOS43MyA0LjI3IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0YzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zTDE1IDVjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNXY2YzAgMS42NiAxLjM0IDMgMyAzem01LjMtM2MwIDMtMi41NCA1LjEtNS4zIDUuMVM2LjcgMTQgNi43IDExSDVjMCAzLjQxIDIuNzIgNi4yMyA2IDYuNzJWMjFoMnYtMy4yOGMzLjI4LS40OCA2LTMuMyA2LTYuNzJoLTEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWlzc2VkVmlkZW9DYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMC41VjdjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTF2LTMuNWw0IDR2LTExbC00IDR6TTEwIDE1bC0zLjg5LTMuODl2Mi41NUg1VjkuMjJoNC40NHYxLjExSDYuODlsMy4xMSAzLjEgNC4yMi00LjIyLjc4Ljc5LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92aWVFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMGgxOFY2YzAtMS4xLS45LTItMi0yaC0zbDIgNGgtM2wtMi00aC0ybDIgNGgtM0w5IDRIN2wyIDRINkw0IDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDh2LTJINHYtOHpNMTQgMTguODhWMjFoMi4xMmw1LjE3LTUuMTctMi4xMi0yLjEyek0yMi43MSAxM2wtLjcxLS43MWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLS43MS43MUwyMiAxNS4xMmwuNzEtLjcxYS45OTYuOTk2IDAgMCAwIDAtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92aWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA0IDIgNGgtM2wtMi00aC0ybDIgNGgtM2wtMi00SDhsMiA0SDdMNSA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE11c2ljVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxOHYxNHpNOCAxNWMwLTEuNjYgMS4zNC0zIDMtMyAuMzUgMCAuNjkuMDcgMSAuMThWNmg1djJoLTN2Ny4wM0EzLjAwMyAzLjAwMyAwIDAgMSAxMSAxOGMtMS42NiAwLTMtMS4zNC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5ld1JlbGVhc2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgMTItMi40NC0yLjc4LjM0LTMuNjgtMy42MS0uODItMS44OS0zLjE4TDEyIDMgOC42IDEuNTQgNi43MSA0LjcybC0zLjYxLjgxLjM0IDMuNjhMMSAxMmwyLjQ0IDIuNzgtLjM0IDMuNjkgMy42MS44MiAxLjg5IDMuMThMMTIgMjFsMy40IDEuNDYgMS44OS0zLjE4IDMuNjEtLjgyLS4zNC0zLjY4TDIzIDEyem0tMTAgNWgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90SW50ZXJlc3RlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04IDAtMS44NS42My0zLjU1IDEuNjktNC45TDE2LjkgMTguMzFBNy45MDIgNy45MDIgMCAwIDEgMTIgMjB6bTYuMzEtMy4xTDcuMSA1LjY5QTcuOTAyIDcuOTAyIDAgMCAxIDEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjg1LS42MyAzLjU1LTEuNjkgNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiAxMC02LTZINGMtMS4xIDAtMiAuOS0yIDJ2MTIuMDFjMCAxLjEuOSAxLjk5IDIgMS45OWwxNi0uMDFjMS4xIDAgMi0uODkgMi0xLjk5di04em0tNy00LjUgNS41IDUuNUgxNVY1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhdXNlQ2lyY2xlRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTEgMTRIOVY4aDJ2OHptNCAwaC0yVjhoMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXVzZUNpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2aDJWOEg5djh6bTMtMTRDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0xLTRoMlY4aC0ydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhdXNlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTEgMTRIOVY4aDJ2OHptNCAwaC0yVjhoMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTloNFY1SDZ2MTR6bTgtMTR2MTRoNFY1aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5QXJyb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDV2MTRsMTEtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheUNpcmNsZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE0LjV2LTlsNiA0LjUtNiA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgMTYuNSA2LTQuNS02LTQuNXY5ek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTkuNSAxNi41di05bDcgNC41LTcgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5RGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTExLjc1IDExLjQ3LS4xMS0uMTEuMTEuMTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNS4xOVY1bDExIDctMi41NSAxLjYzTDggNS4xOXptMTIgMTQuNTQtNS4xMS01LjExTDggNy43MyA0LjI3IDQgMyA1LjI3bDUgNVYxOWw1LjMzLTMuNCA1LjQgNS40TDIwIDE5LjczelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5bGlzdEFkZENoZWNrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNyA3aDd2Mkg3Vjd6bTAgM2g3djJIN3YtMnptMyA1SDd2LTJoM3Yyem00LjA1IDMuMzYtMi44My0yLjgzIDEuNDEtMS40MSAxLjQxIDEuNDFMMTcuNTkgMTIgMTkgMTMuNDFsLTQuOTUgNC45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheWxpc3RBZGRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTBoMTF2Mkgzek0zIDZoMTF2Mkgzek0zIDE0aDd2Mkgzek0yMC41OSAxMS45M2wtNC4yNSA0LjI0LTIuMTItMi4xMi0xLjQxIDEuNDFMMTYuMzQgMTkgMjIgMTMuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlsaXN0QWRkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNyA3aDd2Mkg3Vjd6bTMgOEg3di0yaDN2MnptLTMtM3YtMmg3djJIN3ptMTIgM2gtMnYyaC0ydi0yaC0ydi0yaDJ2LTJoMnYyaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheWxpc3RBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMEgzdjJoMTF2LTJ6bTAtNEgzdjJoMTFWNnptNCA4di00aC0ydjRoLTR2Mmg0djRoMnYtNGg0di0yaC00ek0zIDE2aDd2LTJIM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5bGlzdFBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEwaDExdjJIM3pNMyA2aDExdjJIM3pNMyAxNGg3djJIM3pNMTYgMTN2OGw2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlsaXN0UmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBIM3YyaDExdi0yem0wLTRIM3YyaDExVjZ6TTMgMTZoN3YtMkgzdjJ6bTExLjQxIDZMMTcgMTkuNDEgMTkuNTkgMjIgMjEgMjAuNTkgMTguNDEgMTggMjEgMTUuNDEgMTkuNTkgMTQgMTcgMTYuNTkgMTQuNDEgMTQgMTMgMTUuNDEgMTUuNTkgMTggMTMgMjAuNTkgMTQuNDEgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1ZXVlTXVzaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA2SDN2MmgxMlY2em0wIDRIM3YyaDEydi0yek0zIDE2aDh2LTJIM3Yyek0xNyA2djguMThjLS4zMS0uMTEtLjY1LS4xOC0xLS4xOC0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTNWOGgzVjZoLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1ZXVlUGxheU5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg1djJoOHYtMmgydi0ySDNWNWgxOHY4aDJWNWEyIDIgMCAwIDAtMi0yem0tOCA3VjdoLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM3ptMTEgOC00LjUgNC41TDE4IDIxbDMtMy0zLTMgMS41LTEuNUwyNCAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0xIDloLTR2NGgtMnYtNEg5VjloNFY1aDJ2NGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy4yNCA2LjE1QzIuNTEgNi40MyAyIDcuMTcgMiA4djEyYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMlY4YzAtMS4xMS0uODktMi0yLTJIOC4zbDguMjYtMy4zNEwxNS44OCAxIDMuMjQgNi4xNXpNNyAyMGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6bTEzLThoLTJ2LTJoLTJ2Mkg0VjhoMTZ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVjZW50QWN0b3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNXYxNGgyVjVoLTJ6bS00IDE0aDJWNWgtMnYxNHpNMTQgNUgyYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xek04IDcuNzVjMS4yNCAwIDIuMjUgMS4wMSAyLjI1IDIuMjVTOS4yNCAxMi4yNSA4IDEyLjI1IDUuNzUgMTEuMjQgNS43NSAxMCA2Ljc2IDcuNzUgOCA3Ljc1ek0xMi41IDE3aC05di0uNzVjMC0xLjUgMy0yLjI1IDQuNS0yLjI1czQuNS43NSA0LjUgMi4yNVYxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlRnJvbVF1ZXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNXYyaDh2LTJoNWMxLjEgMCAxLjk5LS45IDEuOTktMkwyMyA1YTIgMiAwIDAgMC0yLTJ6bTAgMTRIM1Y1aDE4djEyem0tNS03djJIOHYtMmg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBlYXRPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIxIDFIM2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yek03IDdoMTB2M2w0LTQtNC00djNINXY2aDJWN3ptMTAgMTBIN3YtM2wtNCA0IDQgNHYtM2gxMnYtNmgtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBlYXRPbmVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIxIDFIM2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yek03IDdoMTB2M2w0LTQtNC00djNINXY2aDJWN3ptMTAgMTBIN3YtM2wtNCA0IDQgNHYtM2gxMnYtNmgtMnY0em0tNC0yVjloLTFsLTIgMXYxaDEuNXY0SDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBlYXRPbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoMTB2M2w0LTQtNC00djNINXY2aDJWN3ptMTAgMTBIN3YtM2wtNCA0IDQgNHYtM2gxMnYtNmgtMnY0em0tNC0yVjloLTFsLTIgMXYxaDEuNXY0SDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoMTB2M2w0LTQtNC00djNINXY2aDJWN3ptMTAgMTBIN3YtM2wtNCA0IDQgNHYtM2gxMnYtNmgtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBsYXkxMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDVWMWwtNSA1IDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZoLTJjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOC0zLjU4LTgtOC04elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44OSAxNmgtLjg1di0zLjI2bC0xLjAxLjMxdi0uNjlsMS43Ny0uNjNoLjA5VjE2ek0xNS4xNyAxNC4yNGMwIC4zMi0uMDMuNi0uMS44MnMtLjE3LjQyLS4yOS41Ny0uMjguMjYtLjQ1LjMzLS4zNy4xLS41OS4xLS40MS0uMDMtLjU5LS4xLS4zMy0uMTgtLjQ2LS4zMy0uMjMtLjM0LS4zLS41Ny0uMTEtLjUtLjExLS44MnYtLjc0YzAtLjMyLjAzLS42LjEtLjgycy4xNy0uNDIuMjktLjU3LjI4LS4yNi40NS0uMzMuMzctLjEuNTktLjEuNDEuMDMuNTkuMS4zMy4xOC40Ni4zMy4yMy4zNC4zLjU3LjExLjUuMTEuODJ2Ljc0em0tLjg1LS44NmMwLS4xOS0uMDEtLjM1LS4wNC0uNDhzLS4wNy0uMjMtLjEyLS4zMS0uMTEtLjE0LS4xOS0uMTctLjE2LS4wNS0uMjUtLjA1LS4xOC4wMi0uMjUuMDUtLjE0LjA5LS4xOS4xNy0uMDkuMTgtLjEyLjMxLS4wNC4yOS0uMDQuNDh2Ljk3YzAgLjE5LjAxLjM1LjA0LjQ4cy4wNy4yNC4xMi4zMi4xMS4xNC4xOS4xNy4xNi4wNS4yNS4wNS4xOC0uMDIuMjUtLjA1LjE0LS4wOS4xOS0uMTcuMDktLjE5LjExLS4zMi4wNC0uMjkuMDQtLjQ4di0uOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcGxheTMwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNVYxTDcgNmw1IDVWN2MzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02SDRjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOC0zLjU4LTgtOC04elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjU2IDEzLjQ5aC40NWMuMjEgMCAuMzctLjA1LjQ4LS4xNnMuMTYtLjI1LjE2LS40M2EuNTM4LjUzOCAwIDAgMC0uMTUtLjM5Yy0uMDUtLjA1LS4xMS0uMDktLjE4LS4xMXMtLjE2LS4wNC0uMjUtLjA0Yy0uMDggMC0uMTUuMDEtLjIyLjAzcy0uMTMuMDUtLjE4LjEtLjA5LjA5LS4xMi4xNS0uMDUuMTMtLjA1LjJoLS44NWExLjA2IDEuMDYgMCAwIDEgLjQxLS44NWMuMTMtLjEuMjctLjE4LjQ0LS4yM3MuMzUtLjA4LjU0LS4wOGMuMjEgMCAuNDEuMDMuNTkuMDhzLjMzLjEzLjQ2LjIzLjIzLjIzLjMuMzguMTEuMzMuMTEuNTNhLjg0Mi44NDIgMCAwIDEtLjE3LjUyIDEuMSAxLjEgMCAwIDEtLjQ4LjM5Yy4yNC4wOS40Mi4yMS41NC4zOXMuMTguMzguMTguNjFjMCAuMi0uMDQuMzgtLjEyLjUzcy0uMTguMjktLjMyLjM5LS4yOS4xOS0uNDguMjQtLjM4LjA4LS42LjA4Yy0uMTggMC0uMzYtLjAyLS41My0uMDdzLS4zMy0uMTItLjQ2LS4yMy0uMjUtLjIzLS4zMy0uMzgtLjEyLS4zNC0uMTItLjU1aC44NWMwIC4wOC4wMi4xNS4wNS4yMnMuMDcuMTIuMTMuMTcuMTIuMDkuMi4xMS4xNi4wNC4yNS4wNGMuMSAwIC4xOS0uMDEuMjctLjA0cy4xNS0uMDcuMi0uMTIuMS0uMTEuMTMtLjE4LjA0LS4xNS4wNC0uMjRjMC0uMTEtLjAyLS4yMS0uMDUtLjI5cy0uMDgtLjE1LS4xNC0uMi0uMTMtLjA5LS4yMi0uMTEtLjE4LS4wNC0uMjktLjA0aC0uNDd2LS42NXpNMTUuMyAxNC4yNGMwIC4zMi0uMDMuNi0uMS44MnMtLjE3LjQyLS4yOS41Ny0uMjguMjYtLjQ1LjMzLS4zNy4xLS41OS4xLS40MS0uMDMtLjU5LS4xLS4zMy0uMTgtLjQ2LS4zMy0uMjMtLjM0LS4zLS41Ny0uMTEtLjUtLjExLS44MnYtLjc0YzAtLjMyLjAzLS42LjEtLjgycy4xNy0uNDIuMjktLjU3LjI4LS4yNi40NS0uMzMuMzctLjEuNTktLjEuNDEuMDMuNTkuMS4zMy4xOC40Ni4zMy4yMy4zNC4zLjU3LjExLjUuMTEuODJ2Ljc0em0tLjg1LS44NmMwLS4xOS0uMDEtLjM1LS4wNC0uNDhzLS4wNy0uMjMtLjEyLS4zMS0uMTEtLjE0LS4xOS0uMTctLjE2LS4wNS0uMjUtLjA1LS4xOC4wMi0uMjUuMDUtLjE0LjA5LS4xOS4xNy0uMDkuMTgtLjEyLjMxLS4wNC4yOS0uMDQuNDh2Ljk3YzAgLjE5LjAxLjM1LjA0LjQ4cy4wNy4yNC4xMi4zMi4xMS4xNC4xOS4xNy4xNi4wNS4yNS4wNS4xOC0uMDIuMjUtLjA1LjE0LS4wOS4xOS0uMTcuMDktLjE5LjExLS4zMmMuMDMtLjEzLjA0LS4yOS4wNC0uNDh2LS45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwbGF5NSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMUw3IDZsNSA1VjdjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNkg0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAuNjkgMTMuOS4yNS0yLjE3aDIuMzl2LjcxaC0xLjdsLS4xMS45MmMuMDMtLjAyLjA3LS4wMy4xMS0uMDVzLjA5LS4wNC4xNS0uMDUuMTItLjAzLjE4LS4wNC4xMy0uMDIuMi0uMDJjLjIxIDAgLjM5LjAzLjU1LjFzLjMuMTYuNDEuMjguMi4yNy4yNS40NS4wOS4zOC4wOS42YzAgLjE5LS4wMy4zNy0uMDkuNTRzLS4xNS4zMi0uMjcuNDUtLjI3LjI0LS40NS4zMS0uMzkuMTItLjY0LjEyYy0uMTggMC0uMzYtLjAzLS41My0uMDhzLS4zMi0uMTQtLjQ2LS4yNC0uMjQtLjI0LS4zMi0uMzktLjEzLS4zMy0uMTMtLjUzaC44NGMuMDIuMTguMDguMzIuMTkuNDFzLjI1LjE1LjQyLjE1YS40OS40OSAwIDAgMCAuNDUtLjIzYy4wNC0uMDcuMDgtLjE1LjExLS4yNXMuMDMtLjIuMDMtLjMxLS4wMS0uMjEtLjA0LS4zMS0uMDctLjE3LS4xMy0uMjQtLjEzLS4xMi0uMjEtLjE1LS4xOS0uMDUtLjMtLjA1Yy0uMDggMC0uMTUuMDEtLjIuMDJzLS4xMS4wMy0uMTUuMDUtLjA4LjA1LS4xMi4wNy0uMDcuMDYtLjEuMDlsLS42Ny0uMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcGxheUNpcmNsZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTYgMTBjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTZoMmMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00LTEuNzktNC00LTR2M0w4IDdsNC00djNjMy4zMSAwIDYgMi42OSA2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMUw3IDZsNSA1VjdjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNkg0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTYgNmg0Yy41NSAwIDEgLjQ1IDEgMXY0YzAgLjU1LS40NSAxLTEgMWgtNFY5em0tMy41IDQuNXYtMUg3Yy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MUg5LjV2LS41aC0ydjFIMTBjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg3Yy0uNTUgMC0xLS40NS0xLTF2LTFoMS41di41aDJ6bTUgMGgydi0zaC0ydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNodWZmbGVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIxIDFIM2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yek0xMC41OSA5LjE3IDUuNDEgNCA0IDUuNDFsNS4xNyA1LjE3IDEuNDItMS40MXpNMTQuNSA0bDIuMDQgMi4wNEw0IDE4LjU5IDUuNDEgMjAgMTcuOTYgNy40NiAyMCA5LjVWNGgtNS41em0uMzMgOS40MS0xLjQxIDEuNDEgMy4xMyAzLjEzTDE0LjUgMjBIMjB2LTUuNWwtMi4wNCAyLjA0LTMuMTMtMy4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2h1ZmZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjU5IDkuMTcgNS40MSA0IDQgNS40MWw1LjE3IDUuMTcgMS40Mi0xLjQxek0xNC41IDRsMi4wNCAyLjA0TDQgMTguNTkgNS40MSAyMCAxNy45NiA3LjQ2IDIwIDkuNVY0aC01LjV6bS4zMyA5LjQxLTEuNDEgMS40MSAzLjEzIDMuMTNMMTQuNSAyMEgyMHYtNS41bC0yLjA0IDIuMDQtMy4xMy0zLjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTa2lwTmV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYgMTggOC41LTZMNiA2djEyek0xNiA2djEyaDJWNmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2tpcFByZXZpb3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2aDJ2MTJINnptMy41IDYgOC41IDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2xvd01vdGlvblZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4wNSA5Ljc5IDEwIDcuNXY5bDMuMDUtMi4yOUwxNiAxMnptMCAwTDEwIDcuNXY5bDMuMDUtMi4yOUwxNiAxMnptMCAwTDEwIDcuNXY5bDMuMDUtMi4yOUwxNiAxMnpNMTEgNC4wN1YyLjA1Yy0yLjAxLjItMy44NCAxLTUuMzIgMi4yMUw3LjEgNS42OUE3Ljk0MSA3Ljk0MSAwIDAgMSAxMSA0LjA3ek01LjY5IDcuMSA0LjI2IDUuNjhBOS45NDkgOS45NDkgMCAwIDAgMi4wNSAxMWgyLjAyYy4xOC0xLjQ2Ljc2LTIuNzkgMS42Mi0zLjl6TTQuMDcgMTNIMi4wNWMuMiAyLjAxIDEgMy44NCAyLjIxIDUuMzJsMS40My0xLjQzQTcuODY4IDcuODY4IDAgMCAxIDQuMDcgMTN6bTEuNjEgNi43NEE5Ljk4MSA5Ljk4MSAwIDAgMCAxMSAyMS45NXYtMi4wMmE3Ljk0MSA3Ljk0MSAwIDAgMS0zLjktMS42MmwtMS40MiAxLjQzek0yMiAxMmMwIDUuMTYtMy45MiA5LjQyLTguOTUgOS45NXYtMi4wMkMxNi45NyAxOS40MSAyMCAxNi4wNSAyMCAxMnMtMy4wMy03LjQxLTYuOTUtNy45M1YyLjA1QzE4LjA4IDIuNTggMjIgNi44NCAyMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU25vb3plIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44OCAzLjM5IDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0yMiA1LjcybC00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE5IDkgMCAwIDAgMC0xOHptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bS0zLTloMy42M0w5IDE1LjJWMTdoNnYtMmgtMy42M0wxNSAxMC44VjlIOXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb3J0QnlBbHBoYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptLjc1Ljc1aDIyLjV2MjIuNUguNzV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljk0IDQuNjZoLTQuNzJsMi4zNi0yLjM2em0tNC42OSAxNC43MWg0LjY2bC0yLjMzIDIuMzN6TTYuMSA2LjI3IDEuNiAxNy43M2gxLjg0bC45Mi0yLjQ1aDUuMTFsLjkyIDIuNDVoMS44NEw3Ljc0IDYuMjdINi4xem0tMS4xMyA3LjM3IDEuOTQtNS4xOCAxLjk0IDUuMThINC45N3ptMTAuNzYgMi41aDYuMTJ2MS41OWgtOC41M3YtMS4yOWw1LjkyLTguNTZoLTUuODh2LTEuNmg4LjN2MS4yNmwtNS45MyA4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwZWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMzggOC41Ny0xLjIzIDEuODVhOCA4IDAgMCAxLS4yMiA3LjU4SDUuMDdBOCA4IDAgMCAxIDE1LjU4IDYuODVsMS44NS0xLjIzQTEwIDEwIDAgMCAwIDMuMzUgMTlhMiAyIDAgMCAwIDEuNzIgMWgxMy44NWEyIDIgMCAwIDAgMS43NC0xIDEwIDEwIDAgMCAwLS4yNy0xMC40NHptLTkuNzkgNi44NGEyIDIgMCAwIDAgMi44MyAwbDUuNjYtOC40OS04LjQ5IDUuNjZhMiAyIDAgMCAwIDAgMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTQgMTRIOFY4aDh2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNmgxMnYxMkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdWJzY3JpcHRpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOEg0VjZoMTZ2MnptLTItNkg2djJoMTJWMnptNCAxMHY4YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0ydi04YzAtMS4xLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJ6bS02IDQtNi0zLjI3djYuNTNMMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1YnRpdGxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDEyaDR2Mkg0di0yem0xMCA2SDR2LTJoMTB2MnptNiAwaC00di0yaDR2MnptMC00SDEwdi0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1cnJvdW5kU291bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNy43NiAxNi4yNGwtMS40MSAxLjQxQTcuOTA5IDcuOTA5IDAgMCAxIDQgMTJjMC0yLjA1Ljc4LTQuMSAyLjM0LTUuNjZsMS40MSAxLjQxQzYuNTkgOC45MyA2IDEwLjQ2IDYgMTJzLjU5IDMuMDcgMS43NiA0LjI0ek0xMiAxNmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6bTUuNjYgMS42Ni0xLjQxLTEuNDFDMTcuNDEgMTUuMDcgMTggMTMuNTQgMTggMTJzLS41OS0zLjA3LTEuNzYtNC4yNGwxLjQxLTEuNDFBNy45MDkgNy45MDkgMCAwIDEgMjAgMTJjMCAyLjA1LS43OCA0LjEtMi4zNCA1LjY2ek0xMiAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTAuNVY3YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xMWwtNCA0ek0xNCAxM2gtM3YzSDl2LTNINnYtMmgzVjhoMnYzaDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9GaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2LjAxYTIgMiAwIDAgMC0yIDJMNCAyMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnptLTEgN1YzLjVMMTguNSA5SDEzem0xIDUgMi0xLjA2djQuMTJMMTQgMTZ2MWMwIC41NS0uNDUgMS0xIDFIOWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvTGFiZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEzSDNWNWgxOHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9MaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tOCAxMi41di05bDYgNC41LTYgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb1NldHRpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA2aDE4djVoMlY2YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOXYtMkgzVjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEyIDkgOHY4ek0yMi43MSAxOC40M2MuMDMtLjI5LjA0LS41OC4wMS0uODZsMS4wNy0uODVjLjEtLjA4LjEyLS4yMS4wNi0uMzJsLTEuMDMtMS43OWMtLjA2LS4xMS0uMTktLjE1LS4zMS0uMTFsLTEuMjguNWEzLjQ0IDMuNDQgMCAwIDAtLjc1LS40MmwtLjItMS4zNmEuMjQ5LjI0OSAwIDAgMC0uMjUtLjIyaC0yLjA3Yy0uMTIgMC0uMjMuMDktLjI1LjIxbC0uMiAxLjM2Yy0uMjYuMTEtLjUxLjI2LS43NC40MmwtMS4yOC0uNWMtLjEyLS4wNS0uMjUgMC0uMzEuMTFsLTEuMDMgMS43OWMtLjA2LjExLS4wNC4yNC4wNi4zMmwxLjA3Ljg2Yy0uMDMuMjktLjA0LjU4LS4wMS44NmwtMS4wNy44NWMtLjEuMDgtLjEyLjIxLS4wNi4zMmwxLjAzIDEuNzljLjA2LjExLjE5LjE1LjMxLjExbDEuMjctLjVjLjIzLjE3LjQ4LjMxLjc1LjQybC4yIDEuMzZjLjAyLjEyLjEyLjIxLjI1LjIxaDIuMDdjLjEyIDAgLjIzLS4wOS4yNS0uMjFsLjItMS4zNmMuMjYtLjExLjUxLS4yNi43NC0uNDJsMS4yOC41Yy4xMi4wNS4yNSAwIC4zMS0uMTFsMS4wMy0xLjc5Yy4wNi0uMTEuMDQtLjI0LS4wNi0uMzJsLTEuMDYtLjg1ek0xOSAxOS41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9jYW1PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgNi41LTQgNFY3YzAtLjU1LS40NS0xLTEtMUg5LjgyTDIxIDE3LjE4VjYuNXpNMy4yNyAyIDIgMy4yNyA0LjczIDZINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy4yMSAwIC4zOS0uMDguNTQtLjE4TDE5LjczIDIxIDIxIDE5LjczIDMuMjcgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9jYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMC41VjdjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTF2LTMuNWw0IDR2LTExbC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvbHVtZURvd25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3Ljk3djguMDVjMS40OC0uNzMgMi41LTIuMjUgMi41LTQuMDJTMTUuNDggOC43MSAxNCA3Ljk3ek0zIDl2Nmg0bDUgNVY0TDcgOUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWb2x1bWVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxMkE0LjUgNC41IDAgMCAwIDE2IDcuOTd2OC4wNWMxLjQ4LS43MyAyLjUtMi4yNSAyLjUtNC4wMnpNNSA5djZoNGw1IDVWNEw5IDlINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9sdW1lTXV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOXY2aDRsNSA1VjRsLTUgNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEyQTQuNSA0LjUgMCAwIDAgMTQgNy45N3YyLjIxbDIuNDUgMi40NWMuMDMtLjIuMDUtLjQxLjA1LS42M3ptMi41IDBjMCAuOTQtLjIgMS44Mi0uNTQgMi42NGwxLjUxIDEuNTFBOC43OTYgOC43OTYgMCAwIDAgMjEgMTJjMC00LjI4LTIuOTktNy44Ni03LTguNzd2Mi4wNmMyLjg5Ljg2IDUgMy41NCA1IDYuNzF6TTQuMjcgMyAzIDQuMjcgNy43MyA5SDN2Nmg0bDUgNXYtNi43M2w0LjI1IDQuMjVjLS42Ny41Mi0xLjQyLjkzLTIuMjUgMS4xOHYyLjA2YTguOTkgOC45OSAwIDAgMCAzLjY5LTEuODFMMTkuNzMgMjEgMjEgMTkuNzNsLTktOUw0LjI3IDN6TTEyIDQgOS45MSA2LjA5IDEyIDguMThWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9sdW1lVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDl2Nmg0bDUgNVY0TDcgOUgzem0xMy41IDNBNC41IDQuNSAwIDAgMCAxNCA3Ljk3djguMDVjMS40OC0uNzMgMi41LTIuMjUgMi41LTQuMDJ6TTE0IDMuMjN2Mi4wNmMyLjg5Ljg2IDUgMy41NCA1IDYuNzFzLTIuMTEgNS44NS01IDYuNzF2Mi4wNmM0LjAxLS45MSA3LTQuNDkgNy04Ljc3cy0yLjk5LTcuODYtNy04Ljc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXZWJBc3NldE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuODMgNEgyMGEyIDIgMCAwIDEgMiAydjEyYzAgLjM0LS4wOS42Ni0uMjMuOTRMMjAgMTcuMTdWOGgtOS4xN2wtNC00em0xMy42NiAxOS4zMUwxNy4xNyAyMEg0YTIgMiAwIDAgMS0yLTJWNmMwLS4zNC4wOC0uNjYuMjMtLjk0TC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MXpNMTUuMTcgMThsLTEwLTEwSDR2MTBoMTEuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdlYkFzc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YTIgMiAwIDAgMC0yLTJ6bTAgMTRINVY4aDE0djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXZWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS01IDE0SDR2LTRoMTF2NHptMC01SDRWOWgxMXY0em01IDVoLTRWOWg0djl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDNQIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0LjAxYy0xLjEgMC0yIC45LTIgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tOCA0YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptNCA4SDh2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAxNiAxMy40M1YxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkSWNDYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhMS4wMiAxLjAyIDAgMCAwLTEuMDIuMjRsLTIuMiAyLjJhMTUuMDQ1IDE1LjA0NSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMjFhLjk2Ljk2IDAgMCAwIC4yNS0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek0yMSA2aC0zVjNoLTJ2M2gtM3YyaDN2M2gyVjhoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWx0ZXJuYXRlRW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwaDV2LTJoLTVjLTQuMzQgMC04LTMuNjYtOC04czMuNjYtOCA4LTggOCAzLjY2IDggOHYxLjQzYzAgLjc5LS43MSAxLjU3LTEuNSAxLjU3cy0xLjUtLjc4LTEuNS0xLjU3VjEyYzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1IDIuMjQgNSA1IDVjMS4zOCAwIDIuNjQtLjU2IDMuNTQtMS40Ny42NS44OSAxLjc3IDEuNDcgMi45NiAxLjQ3IDEuOTcgMCAzLjUtMS42IDMuNS0zLjU3VjEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwem0wIDEzYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXBwUmVnaXN0cmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNGg0djRoLTR6TTQgMTZoNHY0SDR6TTQgMTBoNHY0SDR6TTQgNGg0djRINHpNMTQgMTIuNDJWMTBoLTR2NGgyLjQyek0yMC44OCAxMS4yOWwtMS4xNy0xLjE3YS40MS40MSAwIDAgMC0uNTggMGwtLjg4Ljg4TDIwIDEyLjc1bC44OC0uODhhLjQxLjQxIDAgMCAwIDAtLjU4ek0xMSAxOC4yNVYyMGgxLjc1bDYuNjctNi42Ny0xLjc1LTEuNzV6TTE2IDRoNHY0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCdXNpbmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdWM0gydjE4aDIwVjdIMTJ6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTAtNEg0VjVoMnYyem00IDEySDh2LTJoMnYyem0wLTRIOHYtMmgydjJ6bTAtNEg4VjloMnYyem0wLTRIOFY1aDJ2MnptMTAgMTJoLTh2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloOHYxMHptLTItOGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxFbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA5Yy0xLjYgMC0zLjE1LjI1LTQuNi43MnYzLjFjMCAuMzktLjIzLjc0LS41Ni45LS45OC40OS0xLjg3IDEuMTItMi42NiAxLjg1LS4xOC4xOC0uNDMuMjgtLjcuMjgtLjI4IDAtLjUzLS4xMS0uNzEtLjI5TC4yOSAxMy4wOGEuOTU2Ljk1NiAwIDAgMS0uMjktLjdjMC0uMjguMTEtLjUzLjI5LS43MUMzLjM0IDguNzggNy40NiA3IDEyIDdzOC42NiAxLjc4IDExLjcxIDQuNjdjLjE4LjE4LjI5LjQzLjI5LjcxIDAgLjI4LS4xMS41My0uMjkuNzFsLTIuNDggMi40OGMtLjE4LjE4LS40My4yOS0uNzEuMjktLjI3IDAtLjUyLS4xMS0uNy0uMjhhMTEuMjcgMTEuMjcgMCAwIDAtMi42Ny0xLjg1Ljk5Ni45OTYgMCAwIDEtLjU2LS45di0zLjFDMTUuMTUgOS4yNSAxMy42IDkgMTIgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsbE1hZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDV2Mmg2LjU5TDQgMTguNTkgNS40MSAyMCAxNyA4LjQxVjE1aDJWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsbE1lcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMjAuNDEgMTguNDEgMTkgMTUgMTUuNTkgMTMuNTkgMTcgMTcgMjAuNDF6TTcuNSA4SDExdjUuNTlMNS41OSAxOSA3IDIwLjQxbDYtNlY4aDMuNUwxMiAzLjUgNy41IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxNaXNzZWRPdXRnb2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMgOC40MSA5IDkgNy03VjE1aDJWN2gtOHYyaDQuNTlMMTIgMTQuNTkgNC40MSA3IDMgOC40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsbE1pc3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjU5IDcgMTIgMTQuNTkgNi40MSA5SDExVjdIM3Y4aDJ2LTQuNTlsNyA3IDktOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsbFJlY2VpdmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNS40MSAxOC41OSA0IDcgMTUuNTlWOUg1djEwaDEwdi0ySDguNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxTcGxpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDQgMi4yOSAyLjI5LTIuODggMi44OCAxLjQyIDEuNDIgMi44OC0yLjg4TDIwIDEwVjR6bS00IDBINHY2bDIuMjktMi4yOSA0LjcxIDQuN1YyMGgydi04LjQxbC01LjI5LTUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjAxIDE1LjM4Yy0xLjIzIDAtMi40Mi0uMi0zLjUzLS41NmEuOTc3Ljk3NyAwIDAgMC0xLjAxLjI0bC0xLjU3IDEuOTdjLTIuODMtMS4zNS01LjQ4LTMuOS02Ljg5LTYuODNsMS45NS0xLjY2Yy4yNy0uMjguMzUtLjY3LjI0LTEuMDItLjM3LTEuMTEtLjU2LTIuMy0uNTYtMy41MyAwLS41NC0uNDUtLjk5LS45OS0uOTlINC4xOUMzLjY1IDMgMyAzLjI0IDMgMy45OSAzIDEzLjI4IDEwLjczIDIxIDIwLjAxIDIxYy43MSAwIC45OS0uNjMuOTktMS4xOHYtMy40NWMwLS41NC0uNDUtLjk5LS45OS0uOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbmNlbFByZXNlbnRhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE5LjFIM1Y1aDE4djE0LjF6TTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yMSAxOS4xSDNWNWgxOHYxNC4xek0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNTkgOCAxMiAxMC41OSA5LjQxIDggOCA5LjQxIDEwLjU5IDEyIDggMTQuNTkgOS40MSAxNiAxMiAxMy40MSAxNC41OSAxNiAxNiAxNC41OSAxMy40MSAxMiAxNiA5LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDZWxsVG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm03LjMgMTQuNyAxLjItMS4yYy0xLTEtMS41LTIuMy0xLjUtMy41IDAtMS4zLjUtMi42IDEuNS0zLjVMNy4zIDUuM2MtMS4zIDEuMy0yIDMtMiA0LjdzLjcgMy40IDIgNC43ek0xOS4xIDIuOWwtMS4yIDEuMmMxLjYgMS42IDIuNCAzLjggMi40IDUuOSAwIDIuMS0uOCA0LjMtMi40IDUuOWwxLjIgMS4yYzItMiAyLjktNC41IDIuOS03LjEgMC0yLjYtMS01LjEtMi45LTcuMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4xIDQuMSA0LjkgMi45QzMgNC45IDIgNy40IDIgMTBjMCAyLjYgMSA1LjEgMi45IDcuMWwxLjItMS4yYy0xLjYtMS42LTIuNC0zLjgtMi40LTUuOSAwLTIuMS44LTQuMyAyLjQtNS45ek0xNi43IDE0LjdjMS4zLTEuMyAyLTMgMi00LjctLjEtMS43LS43LTMuNC0yLTQuN2wtMS4yIDEuMmMxIDEgMS41IDIuMyAxLjUgMy41IDAgMS4zLS41IDIuNi0xLjUgMy41bDEuMiAxLjJ6TTE0LjUgMTBhMi41IDIuNSAwIDAgMC01IDBjMCAuNzYuMzQgMS40Mi44NyAxLjg4TDcgMjJoMmwuNjctMmg0LjY3bC42NiAyaDJsLTMuMzctMTAuMTJjLjUzLS40Ni44Ny0xLjEyLjg3LTEuODh6bS00LjE3IDhMMTIgMTNsMS42NyA1aC0zLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDZWxsV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDkuOTggNiAyMmgxNlY1Ljk3bC00IDQuMDF6TTIwIDIwaC0ydi03LjIybDItMlYyMHpNNS4yMiA3LjIyIDMuOTMgNS45M2MzLjktMy45MSAxMC4yNC0zLjkxIDE0LjE1IDBsLTEuMjkgMS4yOWMtMy4xOS0zLjE5LTguMzgtMy4xOS0xMS41NyAwem03LjcxIDMuODVMMTEgMTNsLTEuOTMtMS45M2EyLjc0IDIuNzQgMCAwIDEgMy44NiAwem0xLjI5LTEuMjhjLTEuNzgtMS43Ny00LjY2LTEuNzctNi40MyAwTDYuNSA4LjVhNi4zNzQgNi4zNzQgMCAwIDEgOSAwbC0xLjI4IDEuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYXRCdWJibGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDZsLTIgMlY0aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGF0QnViYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek02IDloMTJ2Mkg2Vjl6bTggNUg2di0yaDh2MnptNC02SDZWNmgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbGVhckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTNoMTR2LTJINXYyem0tMiA0aDE0di0ySDN2MnpNNyA3djJoMTRWN0g3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb1ByZXNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjhoMlY1aDE4djE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEwXCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjM5IDE2LjU2QzEzLjcxIDE1LjcgMTEuNTMgMTUgOSAxNXMtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgMSAxOS4yMlYyMmgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTkgNGMwLTEuMS0uODktMi0xLjk5LTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGw0IDQtLjAxLTE4ek0xOCAxNEg2di0yaDEydjJ6bTAtM0g2VjloMTJ2MnptMC0zSDZWNmgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb21tZW50c0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuODMgMTRIMTh2LTJoLTMuMTdsLTEtMUgxOFY5aC02LjE3bC0xLTFIMThWNkg4LjgzbC00LTRIMjBjMS4xIDAgMiAuOSAyIDJ2MTUuMTdMMTYuODMgMTR6TTIuMSAyLjEuNjkgMy41MSAyIDQuODNWMTZjMCAxLjEuOSAyIDIgMmgxMS4xN2w1LjMxIDUuMzEgMS40MS0xLjQxTDIuMSAyLjF6TTYgOWguMTdsMiAySDZWOXptMCA1di0yaDMuMTdsMiAySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RFbWVyZ2VuY3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDJDLjkgMyAwIDMuOSAwIDV2MTRjMCAxLjEuOSAyIDIgMmgyMGMxLjEgMCAxLjk5LS45IDEuOTktMkwyNCA1YzAtMS4xLS45LTItMi0yek05IDhjMS42NSAwIDMgMS4zNSAzIDNzLTEuMzUgMy0zIDMtMy0xLjM1LTMtMyAxLjM1LTMgMy0zek0yLjA4IDE5YzEuMzgtMi4zOSAzLjk2LTQgNi45Mi00czUuNTQgMS42MSA2LjkyIDRIMi4wOHptMTguODktOS4xNS0uNzUgMS4zLTEuNDctLjg1VjEyaC0xLjV2LTEuN2wtMS40Ny44NS0uNzUtMS4zTDE2LjUgOWwtMS40Ny0uODUuNzUtMS4zIDEuNDcuODVWNmgxLjV2MS43bDEuNDctLjg1Ljc1IDEuM0wxOS41IDlsMS40Ny44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGFjdE1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOFY3bC0zIDItMy0ydjFsMyAyIDMtMnptMS01SDJDLjkgMyAwIDMuOSAwIDV2MTRjMCAxLjEuOSAyIDIgMmgyMGMxLjEgMCAxLjk5LS45IDEuOTktMkwyNCA1YzAtMS4xLS45LTItMi0yek04IDZjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem02IDEySDJ2LTFjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xdjF6bTgtNmgtOFY2aDh2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGFjdFBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0gyQy45IDMgMCAzLjkgMCA1djE0YzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjQgNWMwLTEuMS0uOS0yLTItMnpNOCA2YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptNiAxMkgydi0xYzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMXYxem0zLjg1LTRoMS42NEwyMSAxNmwtMS45OSAxLjk5QTcuNTEyIDcuNTEyIDAgMCAxIDE2LjI4IDE0Yy0uMTgtLjY0LS4yOC0xLjMxLS4yOC0ycy4xLTEuMzYuMjgtMmE3LjQ3NCA3LjQ3NCAwIDAgMSAyLjczLTMuOTlMMjEgOGwtMS41MSAyaC0xLjY0Yy0uMjIuNjMtLjM1IDEuMy0uMzUgMnMuMTMgMS4zNy4zNSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250YWN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMEg0djJoMTZWMHpNNCAyNGgxNnYtMkg0djJ6TTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tOCAyLjc1YzEuMjQgMCAyLjI1IDEuMDEgMi4yNSAyLjI1cy0xLjAxIDIuMjUtMi4yNSAyLjI1UzkuNzUgMTAuMjQgOS43NSA5IDEwLjc2IDYuNzUgMTIgNi43NXpNMTcgMTdIN3YtMS41YzAtMS42NyAzLjMzLTIuNSA1LTIuNXM1IC44MyA1IDIuNVYxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVza3RvcEFjY2Vzc0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxNmMwIDEuMS0uOSAyLTIgMmgtMWwtMi0yaDNWNEg2TDQgMmgxN2MxLjEgMCAyIC45IDIgMnYxMnptLTUuNSAyLTItMnptLTIuNiAwIDYgNiAxLjMtMS4zLTQuNy00LjctMi0yTDEuMiAxLjggMCAzLjFsMSAxVjE2YzAgMS4xLjkgMiAyIDJoN3YySDh2Mmg4di0yaC0ydi0yaC45ek0zIDE2VjYuMWw5LjkgOS45SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpYWxlclNpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNoLTF2NWgxVjN6bS0yIDJoLTJWNGgyVjNoLTN2M2gydjFoLTJ2MWgzVjV6bTMtMnY1aDFWNmgyVjNoLTN6bTIgMmgtMVY0aDF2MXptMCAxMC41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2EuOTk4Ljk5OCAwIDAgMC0xLjAxLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYy4yNy0uMjYuMzUtLjY1LjI0LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpYWxwYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTYgMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyLThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tNiA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiAwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMC02Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTYgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvY3VtZW50U2Nhbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgM0g0djNIMlYxaDV2MnptMTUgM1YxaC01djJoM3YzaDJ6TTcgMjFINHYtM0gydjVoNXYtMnptMTMtM3YzaC0zdjJoNXYtNWgtMnptLTEgMGMwIDEuMS0uOSAyLTIgMkg3Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDJ2MTJ6TTE1IDhIOXYyaDZWOHptMCAzSDl2Mmg2di0yem0wIDNIOXYyaDZ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbWFpbkRpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDVoMnYyaC0uOUwxMiA5LjlWOWg4djguOWwyIDJWN0gxMlYzSDUuMUw4IDUuOXptOCA2aDJ2MmgtMnpNMS4zIDEuOC4xIDMuMSAyIDV2MTZoMTZsMyAzIDEuMy0xLjMtMjEtMjAuOXpNNiAxOUg0di0yaDJ2MnptMC00SDR2LTJoMnYyem0wLTRINFY5aDJ2MnptNCA4SDh2LTJoMnYyem0wLTRIOHYtMmgydjJ6bTIgNHYtMmgybDIgMmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9tYWluVmVyaWZpY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuNiAxMC44OC0xLjQyLTEuNDItNC4yNCA0LjI1LTIuMTItMi4xM0w3LjQgMTNsMy41NCAzLjU0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptMCAxNEg1VjhoMTR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZER1byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJoLThDNi4zOCAyIDIgNi42NiAyIDEyLjI4IDIgMTcuNSA2LjQ5IDIyIDExLjcyIDIyIDE3LjM5IDIyIDIyIDE3LjYyIDIyIDEyVjRjMC0xLjEtLjktMi0yLTJ6bS0zIDEzLTMtMnYySDdWOWg3djJsMy0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDQtOCA1LTgtNVY2bDggNSA4LTV2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ydW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2aC0ydjlINnYyYzAgLjU1LjQ1IDEgMSAxaDExbDQgNFY3YzAtLjU1LS40NS0xLTEtMXptLTQgNlYzYzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2MTRsNC00aDEwYy41NSAwIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9yd2FyZFRvSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOXYtMkg0VjhsOCA1IDgtNXY1aDJWNmMwLTEuMS0uOS0yLTItMnptLTggN0w0IDZoMTZsLTggNXptNyA0IDQgNC00IDR2LTNoLTR2LTJoNHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG91cmdsYXNzQm90dG9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMjItLjAxLTZMMTQgMTJsMy45OS00LjAxTDE4IDJINnY2bDQgNC00IDMuOTlWMjJoMTJ6TTggNy41VjRoOHYzLjVsLTQgNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXJnbGFzc1RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYgMiAuMDEgNkwxMCAxMmwtMy45OSA0LjAxTDYgMjJoMTJ2LTZsLTQtNCA0LTMuOTlWMkg2em0xMCAxNC41VjIwSDh2LTMuNWw0LTQgNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIdWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjQgMTguMmMuMzguNS42IDEuMTIuNiAxLjggMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM2MuNDQgMCAuODUuMDkgMS4yMy4yNmwxLjQxLTEuNzdhNC41MDQgNC41MDQgMCAwIDEtMS4wOS0zLjY5bC0yLjAzLS42OEEyLjk5NyAyLjk5NyAwIDAgMSAwIDkuNWMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzYzAgLjA3IDAgLjE0LS4wMS4yMWwyLjAzLjY4YTQuNDY4IDQuNDY4IDAgMCAxIDMuMjItMi4zMlY1LjkxQTMuMDE4IDMuMDE4IDAgMCAxIDkgM2MwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzYzAgMS40LS45NiAyLjU3LTIuMjUgMi45MXYyLjE2YzEuNC4yMyAyLjU4IDEuMTEgMy4yMiAyLjMyTDE4IDkuNzFWOS41YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDMtMS4zNCAzLTMgM2MtMS4wNiAwLTEuOTgtLjU1LTIuNTItMS4zN2wtMi4wMy42OGE0LjQ5IDQuNDkgMCAwIDEtMS4wOSAzLjY5bDEuNDEgMS43N2MuMzgtLjE4Ljc5LS4yNyAxLjIzLS4yNyAxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zYzAtLjY4LjIyLTEuMy42LTEuOGwtMS40MS0xLjc3Yy0xLjM1Ljc1LTMuMDEuNzYtNC4zNyAwTDguNCAxOC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbXBvcnRDb250YWN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgNC41Yy0xLjk1IDAtNC4wNS40LTUuNSAxLjUtMS40NS0xLjEtMy41NS0xLjUtNS41LTEuNVMyLjQ1IDQuOSAxIDZ2MTQuNjVjMCAuNjUuNzMuNDUuNzUuNDVDMy4xIDIwLjQ1IDUuMDUgMjAgNi41IDIwYzEuOTUgMCA0LjA1LjQgNS41IDEuNSAxLjM1LS44NSAzLjgtMS41IDUuNS0xLjUgMS42NSAwIDMuMzUuMyA0Ljc1IDEuMDUuNDEuMjEuNzUtLjE5Ljc1LS40NVY2Yy0xLjQ5LTEuMTItMy42My0xLjUtNS41LTEuNXptMy41IDE0Yy0xLjEtLjM1LTIuMy0uNS0zLjUtLjUtMS43IDAtNC4xNS42NS01LjUgMS41VjhjMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuMiAwIDIuNC4xNSAzLjUuNXYxMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbXBvcnRFeHBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDMgNSA2Ljk5aDNWMTRoMlY2Ljk5aDNMOSAzem03IDE0LjAxVjEwaC0ydjcuMDFoLTNMMTUgMjFsNC0zLjk5aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnZlcnRDb2xvcnNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIybDQuMiA0LjJhNy43MyA3LjczIDAgMCAwLTEuNiA0LjdDNCAxNy40OCA3LjU4IDIxIDEyIDIxYzEuNzUgMCAzLjM2LS41NiA0LjY3LTEuNWwzLjEgMy4xIDEuNDItMS40MXpNMTIgMTljLTMuMzEgMC02LTIuNjMtNi01Ljg3IDAtMS4xOS4zNi0yLjMyIDEuMDItMy4yOEwxMiAxNC44M1YxOXpNOC4zOCA1LjU2IDEyIDJsNS42NSA1LjU2QzE5LjEgOC45OSAyMCAxMC45NiAyMCAxMy4xM2MwIDEuMTgtLjI3IDIuMjktLjc0IDMuM0wxMiA5LjE3VjQuODFMOS44IDYuOTcgOC4zOCA1LjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi45MSAxNC4wOSAxNyAxNGwyIDIgNC00LjA0TDIxIDEwaC04LjE3bDQuMDggNC4wOXpNMy45OCA2LjgxQTYuMDEyIDYuMDEyIDAgMCAwIDEgMTJjMCAzLjMxIDIuNjkgNiA2IDYgMi4yMSAwIDQuMTUtMS4yIDUuMTgtMi45OWw3LjU5IDcuNTkgMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJsMi41OSAyLjU5em01LjkzIDUuOTNBMy4wMTUgMy4wMTUgMCAwIDEgNyAxNWMtMS42NSAwLTMtMS4zNS0zLTMgMC0xLjQuOTctMi41OCAyLjI2LTIuOTFsMy42NSAzLjY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMGgtOC4zNUE1Ljk5IDUuOTkgMCAwIDAgNyA2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2YTUuOTkgNS45OSAwIDAgMCA1LjY1LTRIMTNsMiAyIDItMiAyIDIgNC00LjA0TDIxIDEwek03IDE1Yy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGlzdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDV2MTRINVY1aDE0bTEuMS0ySDMuOWMtLjUgMC0uOS40LS45Ljl2MTYuMmMwIC40LjQuOS45LjloMTYuMmMuNCAwIC45LS41LjktLjlWMy45YzAtLjUtLjUtLjktLjktLjl6TTExIDdoNnYyaC02Vjd6bTAgNGg2djJoLTZ2LTJ6bTAgNGg2djJoLTZ6TTcgN2gydjJIN3ptMCA0aDJ2Mkg3em0wIDRoMnYySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpdmVIZWxwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg0bDMgMyAzLTNoNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNiAxNmgtMnYtMmgydjJ6bTIuMDctNy43NS0uOS45MkMxMy40NSAxMS45IDEzIDEyLjUgMTMgMTRoLTJ2LS41YzAtMS4xLjQ1LTIuMSAxLjE3LTIuODNsMS4yNC0xLjI2Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDEgMC0xLjEtLjktMi0yLTJzLTIgLjktMiAySDhjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIC44OC0uMzYgMS42OC0uOTMgMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYXRpb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0xMS43NSAxMS40Ny0uMTEtLjExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2LjVBMi41IDIuNSAwIDAgMSAxNC41IDljMCAuNzQtLjMzIDEuMzktLjgzIDEuODVsMy42MyAzLjYzYy45OC0xLjg2IDEuNy0zLjggMS43LTUuNDggMC0zLjg3LTMuMTMtNy03LTdhNyA3IDAgMCAwLTUuMDQgMi4xNWwzLjE5IDMuMTljLjQ2LS41MiAxLjExLS44NCAxLjg1LS44NHptNC4zNyA5LjYtNC42My00LjYzLS4xMS0uMTFMMy4yNyAzIDIgNC4yN2wzLjE4IDMuMThDNS4wNyA3Ljk1IDUgOC40NyA1IDljMCA1LjI1IDcgMTMgNyAxM3MxLjY3LTEuODUgMy4zOC00LjM1TDE4LjczIDIxIDIwIDE5LjczbC0zLjYzLTMuNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2F0aW9uT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6bTAgOS41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYWlsTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDkuOTdWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxMnYtNS4wM2MwLTIuNzYgMi4yNC01IDUtNWgxek0yMCA4bC04IDUtOC01VjZsOCA1IDgtNXYyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxNXYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYWlsT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjhsOCA1IDgtNXYxMHptLTgtN0w0IDZoMTZsLTggNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFya0NoYXRSZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMjAtMy41NC0zLjU0IDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0TDIzIDE0LjM0IDE3LjM0IDIwek0xMiAxN2E2Ljk5NSA2Ljk5NSAwIDAgMSAxMC02LjMyVjRjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDZjMC0uMTcuMDEtLjMzLjAzLS41QTQuMDcgNC4wNyAwIDAgMSAxMiAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFya0NoYXRVbnJlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2Ljk4VjE2YzAgMS4xLS45IDItMiAySDZsLTQgNFY0YzAtMS4xLjktMiAyLTJoMTAuMUE1LjAwMiA1LjAwMiAwIDAgMCAxOSA4YzEuMTMgMCAyLjE2LS4zOSAzLTEuMDJ6TTE2IDNjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zLTMgMS4zNC0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtFbWFpbFJlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOWE2Ljk5NSA2Ljk5NSAwIDAgMSAxMC02LjMyVjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg4LjA4Yy0uMDUtLjMzLS4wOC0uNjYtLjA4LTF6TTQgNmw4IDUgOC01djJsLTggNS04LTVWNnptMTMuMzQgMTYtMy41NC0zLjU0IDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0TDIzIDE2LjM0IDE3LjM0IDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXJrRW1haWxVbnJlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA4Ljk4VjE4YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxMC4xYy0uMDYuMzItLjEuNjYtLjEgMSAwIDEuNDguNjUgMi43OSAxLjY3IDMuNzFMMTIgMTEgNCA2djJsOCA1IDUuMy0zLjMyYy41NC4yIDEuMS4zMiAxLjcuMzIgMS4xMyAwIDIuMTYtLjM5IDMtMS4wMnpNMTYgNWMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFya1VucmVhZENoYXRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5XCIsXCJjeVwiOlwiM1wiLFwiclwiOlwiM1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDhWNmg5LjAzYTQuOTA2IDQuOTA2IDAgMCAxLS45Mi00SDQuMDFhMiAyIDAgMCAwLTIgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY2Ljk3QzIxLjE2IDcuNjEgMjAuMTMgOCAxOSA4SDZ6bTggNkg2di0yaDh2MnptNC0zSDZWOWgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZXNzYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0yIDEySDZ2LTJoMTJ2MnptMC0zSDZWOWgxMnYyem0wLTNINlY2aDEydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vYmlsZVNjcmVlblNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMS45OS45LTEuOTkgMnYxOGMwIDEuMS44OSAyIDEuOTkgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6bS00LjItNS43OHYxLjc1bDMuMi0yLjk5TDEyLjggOXYxLjdjLTMuMTEuNDMtNC4zNSAyLjU2LTQuOCA0LjcgMS4xMS0xLjUgMi41OC0yLjE4IDQuOC0yLjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3JlVGltZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDh2Nmw0LjcgMi45LjgtMS4yLTQtMi40Vjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjkyIDEyQTYuOTU3IDYuOTU3IDAgMCAxIDExIDIwYy0zLjkgMC03LTMuMS03LTdzMy4xLTcgNy03Yy43IDAgMS4zNy4xIDIgLjI5VjQuMjNjLS42NC0uMTUtMS4zMS0uMjMtMi0uMjMtNSAwLTkgNC05IDlzNCA5IDkgOWE4Ljk2MyA4Ljk2MyAwIDAgMCA4Ljk0LTEwaC0yLjAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1VjJoLTJ2M2gtM3YyaDN2M2gyVjdoM1Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgyIDEzSDExdi0ySDYuODJDNi40IDkuODQgNS4zIDkgNCA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzYzEuMyAwIDIuNC0uODQgMi44Mi0yek00IDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzIDEyLTQtM3YyaC00LjA1Yy0uNS01LjA1LTQuNzYtOS05Ljk1LTl2MmM0LjQyIDAgOCAzLjU4IDggOHMtMy41OCA4LTggOHYyYzUuMTkgMCA5LjQ1LTMuOTUgOS45NS05SDE5djJsNC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb1NpbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk5IDVjMC0xLjEtLjg5LTItMS45OS0yaC03TDcuNjYgNS4zNCAxOSAxNi42OCAxOC45OSA1ek0zLjY1IDMuODggMi4zOCA1LjE1IDUgNy43N1YxOWMwIDEuMS45IDIgMiAyaDEwLjAxYy4zNSAwIC42Ny0uMS45Ni0uMjZsMS44OCAxLjg4IDEuMjctMS4yN0wzLjY1IDMuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhdXNlUHJlc2VudGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTkuMUgzVjVoMTh2MTQuMXpNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTIxIDE5LjFIM1Y1aDE4djE0LjF6TTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDhoMnY4SDl6bTQgMGgydjhoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvbkFkZERpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAyMHYtMmMwLTIuMy00LjEtMy43LTYuOS0zLjlsNiA1LjloLjl6bS0xMS42LTUuNUM5LjIgMTUuMSA3IDE2LjMgNyAxOHYyaDkuOWw0IDQgMS4zLTEuMy0yMS0yMC45TDAgMy4xbDQgNFYxMEgxdjJoM3YzaDJ2LTNoMi45bDIuNSAyLjV6TTYgMTB2LS45bC45LjlINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMzUgMTQuMDFDNy42MiAxMy45MSAyIDE1LjI3IDIgMTh2Mmg5LjU0Yy0yLjQ3LTIuNzYtMS4yMy01Ljg5LTEuMTktNS45OXpNMTkuNDMgMTguMDJjLjM2LS41OS41Ny0xLjI4LjU3LTIuMDIgMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDQgMS43OSA0IDQgNGMuNzQgMCAxLjQzLS4yMiAyLjAyLS41N0wyMC41OSAyMiAyMiAyMC41OWwtMi41Ny0yLjU3ek0xNiAxOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4zNCAxNC41NC0xLjQzLTEuNDNjLjU2LS43MyAxLjA1LTEuNSAxLjQ3LTIuMzJsLTIuMi0yLjJjLS4yOC0uMjgtLjM2LS42Ny0uMjUtMS4wMi4zNy0xLjEyLjU3LTIuMzIuNTctMy41NyAwLS41NS40NS0xIDEtMUgyMGMuNTUgMCAxIC40NSAxIDEgMCAzLjk4LTEuMzcgNy42NC0zLjY2IDEwLjU0em0tMi44MiAyLjgxQTE2Ljg4NCAxNi44ODQgMCAwIDEgNCAyMWMtLjU1IDAtMS0uNDUtMS0xdi0zLjQ5YzAtLjU1LjQ1LTEgMS0xIDEuMjQgMCAyLjQ1LS4yIDMuNTctLjU3LjM1LS4xMi43NS0uMDMgMS4wMi4yNGwyLjIgMi4yYy44MS0uNDIgMS41OC0uOSAyLjMtMS40NkwxLjM5IDQuMjJsMS40Mi0xLjQxTDIxLjE5IDIxLjJsLTEuNDEgMS40MS01LjI2LTUuMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lRW5hYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjM4IDEwLjc5LTIuMi0yLjJjLS4yOC0uMjgtLjM2LS42Ny0uMjUtMS4wMi4zNy0xLjEyLjU3LTIuMzIuNTctMy41NyAwLS41NS40NS0xIDEtMUgyMGMuNTUgMCAxIC40NSAxIDEgMCA5LjM5LTcuNjEgMTctMTcgMTctLjU1IDAtMS0uNDUtMS0xdi0zLjQ5YzAtLjU1LjQ1LTEgMS0xIDEuMjQgMCAyLjQ1LS4yIDMuNTctLjU3LjM1LS4xMi43NS0uMDMgMS4wMi4yNGwyLjIgMi4yYzIuODMtMS40NSA1LjE1LTMuNzYgNi41OS02LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNjIgMTAuNzljMS40NCAyLjgzIDMuNzYgNS4xNCA2LjU5IDYuNTlsMi4yLTIuMmMuMjctLjI3LjY3LS4zNiAxLjAyLS4yNCAxLjEyLjM3IDIuMzMuNTcgMy41Ny41Ny41NSAwIDEgLjQ1IDEgMVYyMGMwIC41NS0uNDUgMS0xIDEtOS4zOSAwLTE3LTcuNjEtMTctMTcgMC0uNTUuNDUtMSAxLTFoMy41Yy41NSAwIDEgLjQ1IDEgMSAwIDEuMjUuMiAyLjQ1LjU3IDMuNTcuMTEuMzUuMDMuNzQtLjI1IDEuMDJsLTIuMiAyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lbGlua0VyYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA4LjItMS0xLTQgNC00LTQtMSAxIDQgNC00IDQgMSAxIDQtNCA0IDQgMS0xLTQtNCA0LTR6TTE5IDFIOWMtMS4xIDAtMiAuOS0yIDJ2M2gyVjRoMTB2MTZIOXYtMkg3djNjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZWxpbmtMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptLTguMiAxMFY5LjVDMTAuOCA4LjEgOS40IDcgOCA3UzUuMiA4LjEgNS4yIDkuNVYxMWMtLjYgMC0xLjIuNi0xLjIgMS4ydjMuNWMwIC43LjYgMS4zIDEuMiAxLjNoNS41Yy43IDAgMS4zLS42IDEuMy0xLjJ2LTMuNWMwLS43LS42LTEuMy0xLjItMS4zem0tMS4zIDBoLTNWOS41YzAtLjguNy0xLjMgMS41LTEuM3MxLjUuNSAxLjUgMS4zVjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZWxpbmtSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4xIDcuNy0xIDFjMS44IDEuOCAxLjggNC42IDAgNi41bDEgMWMyLjUtMi4zIDIuNS02LjEgMC04LjV6TTE4IDkuOGwtMSAxYy41LjcuNSAxLjYgMCAyLjNsMSAxYzEuMi0xLjIgMS4yLTMgMC00LjN6TTE0IDFINGMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE5SDRWNGgxMHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVsaW5rU2V0dXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44MiAxMi40OWMuMDItLjE2LjA0LS4zMi4wNC0uNDkgMC0uMTctLjAyLS4zMy0uMDQtLjQ5bDEuMDgtLjgyYy4xLS4wNy4xMi0uMjEuMDYtLjMybC0xLjAzLTEuNzNjLS4wNi0uMTEtLjItLjE1LS4zMS0uMTFsLTEuMjguNWMtLjI3LS4yLS41Ni0uMzYtLjg3LS40OWwtLjItMS4zM2MwLS4xMi0uMTEtLjIxLS4yNC0uMjFINS45OGEuMjYuMjYgMCAwIDAtLjI2LjIxbC0uMiAxLjMyYy0uMzEuMTItLjYuMy0uODcuNDlsLTEuMjgtLjVjLS4xMi0uMDUtLjI1IDAtLjMxLjExbC0xLjAzIDEuNzNjLS4wNi4xMi0uMDMuMjUuMDcuMzNsMS4wOC44MmMtLjAyLjE2LS4wMy4zMy0uMDMuNDkgMCAuMTcuMDIuMzMuMDQuNDlsLTEuMDkuODNjLS4xLjA3LS4xMi4yMS0uMDYuMzJsMS4wMyAxLjczYy4wNi4xMS4yLjE1LjMxLjExbDEuMjgtLjVjLjI3LjIuNTYuMzYuODcuNDlsLjIgMS4zMmMuMDEuMTIuMTIuMjEuMjUuMjFoMi4wNmMuMTMgMCAuMjQtLjA5LjI1LS4yMWwuMi0xLjMyYy4zMS0uMTIuNi0uMy44Ny0uNDlsMS4yOC41Yy4xMi4wNS4yNSAwIC4zMS0uMTFsMS4wMy0xLjczYy4wNi0uMTEuMDQtLjI0LS4wNi0uMzJsLTEuMS0uODN6TTcgMTMuNzVjLS45OSAwLTEuOC0uNzgtMS44LTEuNzVzLjgxLTEuNzUgMS44LTEuNzUgMS44Ljc4IDEuOCAxLjc1UzggMTMuNzUgNyAxMy43NXpNMTggMS4wMSA4IDFjLTEuMSAwLTIgLjktMiAydjNoMlY1aDEwdjE0SDh2LTFINnYzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9ydGFibGVXaWZpT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjU2IDE0LjI0Yy4yOC0uNjkuNDQtMS40NS40NC0yLjI0IDAtMy4zMS0yLjY5LTYtNi02LS43OSAwLTEuNTUuMTYtMi4yNC40NGwxLjYyIDEuNjJjLjItLjAzLjQxLS4wNi42Mi0uMDZhMy45OTkgMy45OTkgMCAwIDEgMy45NSA0LjYzbDEuNjEgMS42MXpNMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuMzUtLjM1IDIuNjItLjk1IDMuNzRsMS40NyAxLjQ3QTkuODYgOS44NiAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0xLjkxIDAtMy42OS41NS01LjIxIDEuNDdsMS40NiAxLjQ2QzkuMzcgNC4zNCAxMC42NSA0IDEyIDR6TTMuMjcgMi41IDIgMy43N2wyLjEgMi4xQzIuNzkgNy41NyAyIDkuNjkgMiAxMmMwIDMuNyAyLjAxIDYuOTIgNC45OSA4LjY1bDEtMS43M0M1LjYxIDE3LjUzIDQgMTQuOTYgNCAxMmMwLTEuNzYuNTctMy4zOCAxLjUzLTQuNjlsMS40MyAxLjQ0QzYuMzYgOS42OCA2IDEwLjggNiAxMmMwIDIuMjIgMS4yMSA0LjE1IDMgNS4xOWwxLTEuNzRjLTEuMTktLjctMi0xLjk3LTItMy40NSAwLS42NS4xNy0xLjI1LjQ0LTEuNzlsMS41OCAxLjU4TDEwIDEyYzAgMS4xLjkgMiAyIDJsLjIxLS4wMi4wMS4wMSA3LjUxIDcuNTFMMjEgMjAuMjMgNC4yNyAzLjVsLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJlc2VudFRvQWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTRjMCAxLjExLjg5IDIgMiAyaDE4YzEuMTEgMCAyLS44OSAyLTJWNWMwLTEuMTEtLjg5LTItMi0yem0wIDE2LjAySDNWNC45OGgxOHYxNC4wNHpNMTAgMTJIOGw0LTQgNCA0aC0ydjRoLTR2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaW50RGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjEgMTdIMjJ2LTZjMC0xLjctMS4zLTMtMy0zaC05bDkuMSA5em0tLjEtN2MuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMS0zVjNINnYxLjFMOSA3ek0xLjIgMS44IDAgM2w0LjkgNUMzLjMgOC4xIDIgOS40IDIgMTF2Nmg0djRoMTEuOWwzIDMgMS4zLTEuMy0yMS0yMC45ek04IDE5di01aDIuOWw1IDVIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUXJDb2RlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDIxaC0ydi0yaDJ2MnptLTItN2gtMnY1aDJ2LTV6bTgtMmgtMnY0aDJ2LTR6bS0yLTJoLTJ2Mmgydi0yek03IDEySDV2Mmgydi0yem0tMi0ySDN2Mmgydi0yem03LTVoMlYzaC0ydjJ6bS03LjUtLjV2M2gzdi0zaC0zek05IDlIM1YzaDZ2NnptLTQuNSA3LjV2M2gzdi0zaC0zek05IDIxSDN2LTZoNnY2em03LjUtMTYuNXYzaDN2LTNoLTN6TTIxIDloLTZWM2g2djZ6bS0yIDEwdi0zaC00djJoMnYzaDR2LTJoLTJ6bS0yLTdoLTR2Mmg0di0yem0tNC0ySDd2MmgydjJoMnYtMmgydi0yem0xLTFWN2gtMlY1aC0ydjRoNHpNNi43NSA1LjI1aC0xLjV2MS41aDEuNXYtMS41em0wIDEyaC0xLjV2MS41aDEuNXYtMS41em0xMi0xMmgtMS41djEuNWgxLjV2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUXJDb2RlU2Nhbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSA2LjV2M2gtM3YtM2gzTTExIDVINXY2aDZWNXptLTEuNSA5LjV2M2gtM3YtM2gzTTExIDEzSDV2Nmg2di02em02LjUtNi41djNoLTN2LTNoM00xOSA1aC02djZoNlY1em0tNiA4aDEuNXYxLjVIMTNWMTN6bTEuNSAxLjVIMTZWMTZoLTEuNXYtMS41ek0xNiAxM2gxLjV2MS41SDE2VjEzem0tMyAzaDEuNXYxLjVIMTNWMTZ6bTEuNSAxLjVIMTZWMTloLTEuNXYtMS41ek0xNiAxNmgxLjV2MS41SDE2VjE2em0xLjUtMS41SDE5VjE2aC0xLjV2LTEuNXptMCAzSDE5VjE5aC0xLjV2LTEuNXpNMjIgN2gtMlY0aC0zVjJoNXY1em0wIDE1di01aC0ydjNoLTN2Mmg1ek0yIDIyaDV2LTJINHYtM0gydjV6TTIgMnY1aDJWNGgzVjJIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUXJDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMWg4VjNIM3Y4em0yLTZoNHY0SDVWNXpNMyAyMWg4di04SDN2OHptMi02aDR2NEg1di00ek0xMyAzdjhoOFYzaC04em02IDZoLTRWNWg0djR6TTE5IDE5aDJ2MmgtMnpNMTMgMTNoMnYyaC0yek0xNSAxNWgydjJoLTJ6TTEzIDE3aDJ2MmgtMnpNMTUgMTloMnYyaC0yek0xNyAxN2gydjJoLTJ6TTE3IDEzaDJ2MmgtMnpNMTkgMTVoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWFkTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoOXYyaC05ek0xMyAxNWg5djJoLTl6TTE2IDExaDZ2MmgtNnpNMTMgMTIgOCA3djRIMnYyaDZ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmluZ1ZvbHVtZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzLjcxIDE2LjY3QTE2Ljk3MSAxNi45NzEgMCAwIDAgMTIgMTJDNy40NiAxMiAzLjM0IDEzLjc4LjI5IDE2LjY3Yy0uMTguMTgtLjI5LjQzLS4yOS43MSAwIC4yOC4xMS41My4yOS43MWwyLjQ4IDIuNDhjLjE4LjE4LjQzLjI5LjcxLjI5LjI3IDAgLjUyLS4xMS43LS4yOC43OS0uNzQgMS42OS0xLjM2IDIuNjYtMS44NS4zMy0uMTYuNTYtLjUuNTYtLjl2LTMuMWMxLjQ1LS40OCAzLS43MyA0LjYtLjczczMuMTUuMjUgNC42LjcydjMuMWMwIC4zOS4yMy43NC41Ni45Ljk4LjQ5IDEuODcgMS4xMiAyLjY2IDEuODUuMTguMTguNDMuMjguNy4yOC4yOCAwIC41My0uMTEuNzEtLjI5bDIuNDgtMi40OGMuMTgtLjE4LjI5LS40My4yOS0uNzFhLjk5Ljk5IDAgMCAwLS4yOS0uN3pNMjEuMTYgNi4yNmwtMS40MS0xLjQxLTMuNTYgMy41NSAxLjQxIDEuNDFzMy40NS0zLjUyIDMuNTYtMy41NXpNMTMgMmgtMnY1aDJWMnpNNi40IDkuODEgNy44MSA4LjQgNC4yNiA0Ljg0IDIuODQgNi4yNmMuMTEuMDMgMy41NiAzLjU1IDMuNTYgMy41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnNzRmVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNi4xOFwiLFwiY3lcIjpcIjE3LjgyXCIsXCJyXCI6XCIyLjE4XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNC40NHYyLjgzYzcuMDMgMCAxMi43MyA1LjcgMTIuNzMgMTIuNzNoMi44M2MwLTguNTktNi45Ny0xNS41Ni0xNS41Ni0xNS41NnptMCA1LjY2djIuODNjMy45IDAgNy4wNyAzLjE3IDcuMDcgNy4wN2gyLjgzYzAtNS40Ny00LjQzLTkuOS05LjktOS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSdHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05LjAzIDMtMS4xMSA3LjA3aDIuNjJsLjctNC41aDIuNThMMTEuOCAxOC40M0g5LjQ3TDkuMDYgMjFoNy4yN2wuNC0yLjU3aC0yLjM1bDItMTIuODZoMi41OGwtLjcxIDQuNWgyLjY1TDIyIDNIOS4wM3pNOCA1SDRsLS4zMSAyaDRMOCA1em0tLjYxIDRoLTRsLS4zMSAyaDRsLjMxLTJ6bS45MiA4aC02TDIgMTloNmwuMzEtMnptLjYyLTRoLTZsLS4zMSAyaDYuMDFsLjMtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NyZWVuU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDZhMiAyIDAgMCAwLTItMkg0Yy0xLjExIDAtMiAuODktMiAydjEwYTIgMiAwIDAgMCAyIDJIMHYyaDI0di0yaC00em0tNy0zLjUzdi0yLjE5Yy0yLjc4IDAtNC42MS44NS02IDIuNzIuNTYtMi42NyAyLjExLTUuMzMgNi01Ljg3VjdsNCAzLjczLTQgMy43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VuZFRpbWVFeHRlbnNpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2YzAtMS4xLS45LTItMi0yaC00YTIuNSAyLjUgMCAwIDAtNSAwSDUuMDFjLTEuMSAwLTIgLjktMiAydjMuOEM1LjcgOS44IDYgMTEuOTYgNiAxMi41cy0uMjkgMi43LTMgMi43VjE5YzAgMS4xLjkgMiAyIDJoMy44YzAtMi4xNiAxLjM3LTIuNzggMi4yLTIuOTR2LTkuM2w5IDQuNVY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMnY0bDQgMS00IDF2NGwxMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW50aW1lbnRTYXRpc2ZpZWRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTAtMi41YzIuMzMgMCA0LjMyLTEuNDUgNS4xMi0zLjVoLTEuNjdjLS42OSAxLjE5LTEuOTcgMi0zLjQ1IDJzLTIuNzUtLjgxLTMuNDUtMkg2Ljg4Yy44IDIuMDUgMi43OSAzLjUgNS4xMiAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTAuNWgydjFoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tMTAgNi41SDYuNXYuNzVIOWMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxSDV2LTEuNWgzLjV2LS43NUg2Yy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoNHYxLjV6bTMgNC41aC0yVjloMnY2em02LTNjMCAuNTUtLjQ1IDEtMSAxaC0yLjV2MkgxNFY5aDRjLjU1IDAgMSAuNDUgMSAxdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwZWFrZXJQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3LjA3IDguNDMgOC41Yy45MS0uOTEgMi4xOC0xLjQ4IDMuNTctMS40OHMyLjY2LjU3IDMuNTcgMS40OEwxNyA3LjA3QzE1LjcyIDUuNzkgMTMuOTUgNSAxMiA1cy0zLjcyLjc5LTUgMi4wN3pNMTIgMUM4Ljk4IDEgNi4yNCAyLjIzIDQuMjUgNC4yMWwxLjQxIDEuNDFDNy4yOCA0IDkuNTMgMyAxMiAzczQuNzIgMSA2LjM0IDIuNjJsMS40MS0xLjQxQTEwLjk2MyAxMC45NjMgMCAwIDAgMTIgMXptMi44NiA5LjAxTDkuMTQgMTBDOC41MSAxMCA4IDEwLjUxIDggMTEuMTR2OS43MWMwIC42My41MSAxLjE0IDEuMTQgMS4xNGg1LjcxYy42MyAwIDEuMTQtLjUxIDEuMTQtMS4xNHYtOS43MWMuMDEtLjYzLS41LTEuMTMtMS4xMy0xLjEzek0xNSAyMEg5di04aDZ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Bva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3YzAgMi4yMS0xLjc5IDQtNCA0UzggOS4yMSA4IDdzMS43OS00IDQtNCA0IDEuNzkgNCA0em0tOSA2Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMTAgMGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YXlDdXJyZW50TGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS4wMSA3IDEgMTdjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTEuOTkuOS0xLjk5IDJ6TTE5IDd2MTBINVY3aDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGF5Q3VycmVudFBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2MThjMCAxLjEuODkgMiAxLjk5IDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGF5UHJpbWFyeUxhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMDEgNyAxIDE3YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0xLjk5LjktMS45OSAyek0xOSA3djEwSDVWN2gxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RheVByaW1hcnlQb3J0cmFpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0xLjk5LjktMS45OSAydjE4YzAgMS4xLjg5IDIgMS45OSAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE5SDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcFNjcmVlblNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS4yMiAxOC4wMiAyIDJIMjR2LTJoLTIuNzh6bS43Ny0yIC4wMS0xMGEyIDIgMCAwIDAtMi0ySDcuMjJsNS4yMyA1LjIzYy4xOC0uMDQuMzYtLjA3LjU1LS4xVjcuMDJsNCAzLjczLTEuNTggMS40NyA1LjU0IDUuNTRjLjYxLS4zMyAxLjAzLS45OSAxLjAzLTEuNzR6TTIuMzkgMS43MyAxLjExIDNsMS41NCAxLjU0Yy0uNC4zNi0uNjUuODktLjY1IDEuNDh2MTBhMiAyIDAgMCAwIDIgMkgwdjJoMTguMTNsMi43MSAyLjcxIDEuMjctMS4yN0wyLjM5IDEuNzN6TTcgMTUuMDJjLjMxLTEuNDguOTItMi45NSAyLjA3LTQuMDZsMS41OSAxLjU5Yy0xLjU0LjM4LTIuNyAxLjE4LTMuNjYgMi40N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dhcENhbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNC00IDRoM3Y3YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY4YzAtMi4yMS0xLjc5LTQtNC00UzUgNS43OSA1IDh2N0gybDQgNCA0LTRIN1Y4YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2N2MwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00VjhoM2wtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXh0c21zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgMTFIN1Y5aDJ2MnptNCAwaC0yVjloMnYyem00IDBoLTJWOWgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVuc3Vic2NyaWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41IDEzYy0xLjkzIDAtMy41IDEuNTctMy41IDMuNXMxLjU3IDMuNSAzLjUgMy41IDMuNS0xLjU3IDMuNS0zLjUtMS41Ny0zLjUtMy41LTMuNXptMiA0aC00di0xaDR2MXptLTYuOTUgMGMtLjAyLS4xNy0uMDUtLjMzLS4wNS0uNSAwLTIuNzYgMi4yNC01IDUtNSAuOTIgMCAxLjc2LjI2IDIuNS42OVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoOC41NXpNMTIgMTAuNSA1IDdWNWw3IDMuNUwxOSA1djJsLTcgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWb2ljZW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41IDZDMTUuNDYgNiAxMyA4LjQ2IDEzIDExLjVjMCAxLjMzLjQ3IDIuNTUgMS4yNiAzLjVIOS43NGMuNzktLjk1IDEuMjYtMi4xNyAxLjI2LTMuNUMxMSA4LjQ2IDguNTQgNiA1LjUgNlMwIDguNDYgMCAxMS41IDIuNDYgMTcgNS41IDE3aDEzYzMuMDQgMCA1LjUtMi40NiA1LjUtNS41UzIxLjU0IDYgMTguNSA2em0tMTMgOUMzLjU3IDE1IDIgMTMuNDMgMiAxMS41UzMuNTcgOCA1LjUgOCA5IDkuNTcgOSAxMS41IDcuNDMgMTUgNS41IDE1em0xMyAwYy0xLjkzIDAtMy41LTEuNTctMy41LTMuNVMxNi41NyA4IDE4LjUgOCAyMiA5LjU3IDIyIDExLjUgMjAuNDMgMTUgMTguNSAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVnBuS2V5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuODMgMThIMjF2LTRoMnYtNEgxMi44M2w4IDh6bS0xLjA1IDQuNjEgMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJsMi41OSAyLjU5QTYuMDEyIDYuMDEyIDAgMCAwIDEgMTJjMCAzLjMxIDIuNjkgNiA2IDYgMi4yMSAwIDQuMTUtMS4yIDUuMTgtMi45OWw3LjYgNy42ek04Ljk5IDExLjgyYy4wMS4wNi4wMS4xMi4wMS4xOCAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTJjLjA2IDAgLjEyIDAgLjE4LjAxbDEuODEgMS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVnBuS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNjUgMTBBNS45OSA1Ljk5IDAgMCAwIDcgNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNmE1Ljk5IDUuOTkgMCAwIDAgNS42NS00SDE3djRoNHYtNGgydi00SDEyLjY1ek03IDE0Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUNhbGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA0Ljk1QzIxLjc5IDQuNzggMTkuNjcgMyAxNi41IDNjLTMuMTggMC01LjI5IDEuNzgtNS41IDEuOTVMMTYuNSAxMiAyMiA0Ljk1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS41MWMtMS4yNCAwLTIuNDUtLjItMy41Ny0uNTdhLjk5NC45OTQgMCAwIDAtMS4wMi4yNGwtMi4yIDIuMmExNS4xNDkgMTUuMTQ5IDAgMCAxLTYuNTktNi41OWwyLjItMi4yYy4yOC0uMjguMzYtLjY3LjI1LTEuMDJBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNDljMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0yIDEwaC00djRoLTJ2LTRIN3YtMmg0VjdoMnY0aDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQ2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMWgtNHY0aC0ydi00SDd2LTJoNFY3aDJ2NGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZExpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTFoOHYySDh6bTEyLjEgMUgyMmMwLTIuNzYtMi4yNC01LTUtNWgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXpNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNMTkgMTJoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQW1wU3RvcmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNGgxMHYxNUg3ek0zIDZoMnYxMUgzek0xOSA2aDJ2MTFoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC41NCA1LjIzLTEuMzktMS42OEMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2Yy0uNDcgMC0uODguMjEtMS4xNi41NUwzLjQ2IDUuMjNDMy4xNyA1LjU3IDMgNi4wMiAzIDYuNVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjYuNWMwLS40OC0uMTctLjkzLS40Ni0xLjI3ek0xMiAxNy41IDYuNSAxMkgxMHYtMmg0djJoMy41TDEyIDE3LjV6TTUuMTIgNWwuODEtMWgxMmwuOTQgMUg1LjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdHRyaWJ1dGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDguNWMtLjkxIDAtMi43NS40Ni0yLjc1IDEuMzh2NC42MmgxLjVWMTloMi41di00LjVoMS41VjkuODhjMC0uOTEtMS44NC0xLjM4LTIuNzUtMS4zOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWNrc3BhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDdjLS42OSAwLTEuMjMuMzUtMS41OS44OEwwIDEybDUuNDEgOC4xMWMuMzYuNTMuOS44OSAxLjU5Ljg5aDE1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0zIDEyLjU5TDE3LjU5IDE3IDE0IDEzLjQxIDEwLjQxIDE3IDkgMTUuNTkgMTIuNTkgMTIgOSA4LjQxIDEwLjQxIDcgMTQgMTAuNTkgMTcuNTkgNyAxOSA4LjQxIDE1LjQxIDEyIDE5IDE1LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWxsb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTMgOS41aDV2LTJoLTV2MnptMCA3aDV2LTJoLTV2MnptNiA0LjVINWMtMS4xIDAtMi0uOS0yLTJWNWMwLTEuMS45LTIgMi0yaDE0YzEuMSAwIDIgLjkgMiAydjE0YzAgMS4xLS45IDItMiAyek02IDExaDVWNkg2djV6bTEtNGgzdjNIN1Y3ek02IDE4aDV2LTVINnY1em0xLTRoM3YzSDd2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJpb3RlY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE5Yy0xLjEgMC0yIC45LTIgMmgxNGMwLTEuMS0uOS0yLTItMmgtNHYtMmgzYzEuMSAwIDItLjkgMi0yaC04Yy0xLjY2IDAtMy0xLjM0LTMtMyAwLTEuMDkuNTktMi4wNCAxLjQ2LTIuNTZDOC4xNyA5LjAzIDggOC41NCA4IDhjMC0uMjEuMDQtLjQyLjA5LS42MkE1LjAxIDUuMDEgMCAwIDAgNSAxMmMwIDIuNzYgMi4yNCA1IDUgNXYySDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjU2IDUuNTFDMTEuOTEgNS41NCAxMyA2LjY0IDEzIDhjMCAuNzUtLjMzIDEuNDEtLjg1IDEuODdsLjU5IDEuNjIuOTQtLjM0LjM0Ljk0IDEuODgtLjY4LS4zNC0uOTQuOTQtLjM0LTIuNzQtNy41My0uOTQuMzQtLjM0LS45NC0xLjg4LjY4LjM0Ljk0LS45NC4zNS41NiAxLjU0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwLjVcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmxvY2tGbGlwcGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTJjMC01LjUtNC41LTEwLTEwLTEwUzIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMHpNNS43IDcuMWwxMS4yIDExLjJjLTEuMyAxLjEtMyAxLjctNC45IDEuNy00LjQgMC04LTMuNi04LTggMC0xLjkuNi0zLjYgMS43LTQuOXpNMjAgMTJjMCAxLjktLjYgMy42LTEuNyA0LjlMNy4xIDUuN0M4LjQgNC42IDEwLjEgNCAxMiA0YzQuNCAwIDggMy42IDggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtNC40MiAzLjU4LTggOC04IDEuODUgMCAzLjU1LjYzIDQuOSAxLjY5TDUuNjkgMTYuOUE3LjkwMiA3LjkwMiAwIDAgMSA0IDEyem04IDhjLTEuODUgMC0zLjU1LS42My00LjktMS42OUwxOC4zMSA3LjFBNy45MDIgNy45MDIgMCAwIDEgMjAgMTJjMCA0LjQyLTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIxaC0xbDEtN0g3LjVjLS41OCAwLS41Ny0uMzItLjM4LS42Ni4xOS0uMzQuMDUtLjA4LjA3LS4xMkM4LjQ4IDEwLjk0IDEwLjQyIDcuNTQgMTMgM2gxbC0xIDdoMy41Yy40OSAwIC41Ni4zMy40Ny41MWwtLjA3LjE1QzEyLjk2IDE3LjU1IDExIDIxIDExIDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxjdWxhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTUuOTcgNC4wNkwxNC4wOSA2bDEuNDEgMS40MUwxNi45MSA2bDEuMDYgMS4wNi0xLjQxIDEuNDEgMS40MSAxLjQxLTEuMDYgMS4wNi0xLjQxLTEuNC0xLjQxIDEuNDEtMS4wNi0xLjA2IDEuNDEtMS40MS0xLjQxLTEuNDJ6bS02Ljc4LjY2aDV2MS41aC01di0xLjV6TTExLjUgMTZoLTJ2Mkg4di0ySDZ2LTEuNWgydi0yaDEuNXYyaDJWMTZ6bTYuNSAxLjI1aC01di0xLjVoNXYxLjV6bTAtMi41aC01di0xLjVoNXYxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYW5nZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS4wNiAxN3YtMi4wMUgxMmMtMS4yOCAwLTIuNTYtLjQ5LTMuNTQtMS40NmE1LjAwNiA1LjAwNiAwIDAgMS0uNjQtNi4yOWwxLjEgMS4xYy0uNzEgMS4zMy0uNTMgMy4wMS41OSA0LjEzLjcuNyAxLjYyIDEuMDMgMi41NCAxLjAxdi0yLjE0bDIuODMgMi44M0wxMi4wNiAxOXptNC4xMS00LjI0LTEuMS0xLjFjLjcxLTEuMzMuNTMtMy4wMS0uNTktNC4xM0EzLjQ4MiAzLjQ4MiAwIDAgMCAxMiA4LjVoLS4wNnYyLjE1TDkuMTEgNy44MyAxMS45NCA1djIuMDJjMS4zLS4wMiAyLjYxLjQ1IDMuNiAxLjQ1IDEuNyAxLjcgMS45MSA0LjM1LjYzIDYuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNi40MSAxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250ZW50Q29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFINGMtMS4xIDAtMiAuOS0yIDJ2MTRoMlYzaDEyVjF6bTMgNEg4Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDExYzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTZIOFY3aDExdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250ZW50Q3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjJcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIuNVwiLFwiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGVudFBhc3RlR28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDVoMnYzaDEwVjVoMnY2aDJWNWMwLTEuMS0uOS0yLTItMmgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1di0ySDVWNXptNy0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjAxIDEzLTEuNDIgMS40MSAxLjU4IDEuNThIMTJ2Mmg2LjE3bC0xLjU4IDEuNTkgMS40MiAxLjQxIDMuOTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGVudFBhc3RlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wxLjYxIDEuNjEgMS40MS0xLjQyek01IDE5VjcuODNMMTYuMTcgMTlINXpNMTcgOFY1aDJ2MTEuMTdsMiAyVjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDUuODNsNSA1SDE3em0tNS01Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRlbnRQYXN0ZVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNWgydjNoMTBWNWgydjVoMlY1YzAtMS4xLS45LTItMi0yaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDV2LTJINVY1em03LTJjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMyAxOC45Yy40LS43LjctMS41LjctMi40IDAtMi41LTItNC41LTQuNS00LjVTMTIgMTQgMTIgMTYuNXMyIDQuNSA0LjUgNC41Yy45IDAgMS43LS4zIDIuNC0uN2wyLjcgMi43IDEuNC0xLjQtMi43LTIuN3ptLTMuOC4xYy0xLjQgMC0yLjUtMS4xLTIuNS0yLjVzMS4xLTIuNSAyLjUtMi41IDIuNSAxLjEgMi41IDIuNS0xLjEgMi41LTIuNSAyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRlbnRQYXN0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29weUFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJIOWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg5YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOVY0aDl2MTJ6TTMgMTV2LTJoMnYySDN6bTAtNS41aDJ2Mkgzdi0yek0xMCAyMGgydjJoLTJ2LTJ6bS03LTEuNXYtMmgydjJIM3pNNSAyMmMtMS4xIDAtMi0uOS0yLTJoMnYyem0zLjUgMGgtMnYtMmgydjJ6bTUgMHYtMmgyYzAgMS4xLS45IDItMiAyek01IDZ2MkgzYzAtMS4xLjktMiAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyZWF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZWxldGVTd2VlcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE2aDR2MmgtNHptMC04aDd2MmgtN3ptMCA0aDZ2MmgtNnpNMyAxOGMwIDEuMS45IDIgMiAyaDZjMS4xIDAgMi0uOSAyLTJWOEgzdjEwek0xNCA1aC0zbC0xLTFINkw1IDVIMnYyaDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNoMnYtMkgzdjJ6bTQgOGgydi0ySDd2MnptNi0xOGgtMnYyaDJWM3ptNiAwdjJoMmMwLTEuMS0uOS0yLTItMnpNNSAyMXYtMkgzYzAgMS4xLjkgMiAyIDJ6bS0yLTRoMnYtMkgzdjJ6bTggNGgydi0yaC0ydjJ6bTgtOGgydi0yaC0ydjJ6bTAtNGgyVjdoLTJ2MnptLTQtNGgyVjNoLTJ2MnpNNy44MyA1IDcgNC4xN1YzaDJ2Mkg3Ljgzem0xMiAxMi0uODMtLjgzVjE1aDJ2MmgtMS4xN3ptMS4zNiA0LjE5TDIuODEgMi44MSAxLjM5IDQuMjIgNC4xNyA3SDN2MmgyVjcuODNsMiAyVjE3aDcuMTdsMiAySDE1djJoMnYtMS4xN2wyLjc4IDIuNzggMS40MS0xLjQyek05IDE1di0zLjE3TDEyLjE3IDE1SDl6bTYtMi44M1Y5aC0zLjE3bC0yLTJIMTd2Ny4xN2wtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcmFmdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OSA4YzAtLjcyLS4zNy0xLjM1LS45NC0xLjdMMTIgMSAyLjk1IDYuM0MyLjM4IDYuNjUgMiA3LjI4IDIgOHYxMGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ybC0uMDEtMTB6TTEyIDEzIDMuNzQgNy44NCAxMiAzbDguMjYgNC44NEwxMiAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHluYW1pY0ZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDhINnY3YzAgMS4xLjkgMiAyIDJoOXYtMkg4Vjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNoLThjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOGgtOFY3aDh2NHpNNCAxMkgydjdjMCAxLjEuOSAyIDIgMmg5di0ySDR2LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbGVDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMUg0Yy0xLjEgMC0yIC45LTIgMnYxNGgyVjNoMTJWMXptLTEgNCA2IDZ2MTBjMCAxLjEtLjkgMi0yIDJINy45OUM2Ljg5IDIzIDYgMjIuMSA2IDIxbC4wMS0xNGMwLTEuMS44OS0yIDEuOTktMmg3em0tMSA3aDUuNUwxNCA2LjVWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckxpc3RPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44MyA4SDIxVjZIOC44M2wyIDJ6bTUgNUgxOHYtMmgtNC4xN2wyIDJ6TTE0IDE2LjgzVjE4aC00di0yaDMuMTdsLTMtM0g2di0yaDIuMTdsLTMtM0gzVjZoLjE3TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDFMMTQgMTYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckxpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxOGg0di0yaC00djJ6TTMgNnYyaDE4VjZIM3ptMyA3aDEydi0ySDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhZ0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTYgMTNoLTVsLTEtMkg5LjV2NUg4VjdoNmwxIDJoM3Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNCA2IDE0IDRINXYxN2gydi03aDUuNmwuNCAyaDdWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9udERvd25sb2FkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuNTggOS43NS0uODctLjg3LjIzLS42NmguMWwuNTQgMS41M3ptLTIuMjMtMi4yM0wxMC45MiA2aDIuMTRsMi41NSA2Ljc5TDIyIDE5LjE3VjRjMC0xLjEtLjktMi0yLTJINC44M2w1LjUyIDUuNTJ6bTEwLjE0IDE1Ljc5TDE5LjE3IDIySDRjLTEuMSAwLTItLjktMi0yVjQuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxem0tOC4zOS04LjM4LTMuMy0zLjNMNi40MSAxOGgyLjA4bDEuMDktMy4wN2gyLjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb250RG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiYmFzZVByb2ZpbGVcIjpcInRpbnlcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjkzIDEzLjVoNC4xNEwxMiA3Ljk4ek0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTQuMDUgMTYuNS0xLjE0LTNIOS4xN2wtMS4xMiAzSDUuOTZsNS4xMS0xM2gxLjg2bDUuMTEgMTNoLTIuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4VjRsOCA4LTggOHYtNEg0Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdlc3R1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjU5IDYuODljLjctLjcxIDEuNC0xLjM1IDEuNzEtMS4yMi41LjIgMCAxLjAzLS4zIDEuNTItLjI1LjQyLTIuODYgMy44OS0yLjg2IDYuMzEgMCAxLjI4LjQ4IDIuMzQgMS4zNCAyLjk4Ljc1LjU2IDEuNzQuNzMgMi42NC40NiAxLjA3LS4zMSAxLjk1LTEuNCAzLjA2LTIuNzcgMS4yMS0xLjQ5IDIuODMtMy40NCA0LjA4LTMuNDQgMS42MyAwIDEuNjUgMS4wMSAxLjc2IDEuNzktMy43OC42NC01LjM4IDMuNjctNS4zOCA1LjM3IDAgMS43IDEuNDQgMy4wOSAzLjIxIDMuMDkgMS42MyAwIDQuMjktMS4zMyA0LjY5LTYuMUgyMXYtMi41aC0yLjQ3Yy0uMTUtMS42NS0xLjA5LTQuMi00LjAzLTQuMi0yLjI1IDAtNC4xOCAxLjkxLTQuOTQgMi44NC0uNTguNzMtMi4wNiAyLjQ4LTIuMjkgMi43Mi0uMjUuMy0uNjguODQtMS4xMS44NC0uNDUgMC0uNzItLjgzLS4zNi0xLjkyLjM1LTEuMDkgMS40LTIuODYgMS44NS0zLjUyLjc4LTEuMTQgMS4zLTEuOTIgMS4zLTMuMjhDOC45NSAzLjY5IDcuMzEgMyA2LjQ0IDMgNS4xMiAzIDMuOTcgNCAzLjcyIDQuMjVjLS4zNi4zNi0uNjYuNjYtLjg4LjkzbDEuNzUgMS43MXptOS4yOSAxMS42NmMtLjMxIDAtLjc0LS4yNi0uNzQtLjcyIDAtLjYuNzMtMi4yIDIuODctMi43Ni0uMyAyLjY5LTEuNDMgMy40OC0yLjEzIDMuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvd1RvUmVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05IDE3IDMtMi45NGE5LjM0IDkuMzQgMCAwIDAtMS0uMDZjLTIuNjcgMC04IDEuMzQtOCA0djJoOWwtMy0zem0yLTVjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0TTE1LjQ3IDIwLjUgMTIgMTdsMS40LTEuNDEgMi4wNyAyLjA4IDUuMTMtNS4xNyAxLjQgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3dUb1ZvdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzaC0uNjhsLTIgMmgxLjkxTDE5IDE3SDVsMS43OC0yaDIuMDVsLTItMkg2bC0zIDN2NGMwIDEuMS44OSAyIDEuOTkgMkgxOWEyIDIgMCAwIDAgMi0ydi00bC0zLTN6bS0xLTUuMDUtNC45NSA0Ljk1LTMuNTQtMy41NCA0Ljk1LTQuOTVMMTcgNy45NXptLTQuMjQtNS42Nkw2LjM5IDguNjZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDQuOTUgNC45NWMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNi4zNi02LjM2YS45OTYuOTk2IDAgMCAwIDAtMS40MUwxNC4xNiAyLjNhLjk3NS45NzUgMCAwIDAtMS40LS4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINC45OWMtMS4xMSAwLTEuOTguODktMS45OCAyTDMgMTljMCAxLjEuODggMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDEyaC00YzAgMS42Ni0xLjM1IDMtMyAzcy0zLTEuMzQtMy0zSDQuOTlWNUgxOXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5zaWdodHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA4Yy0xLjQ1IDAtMi4yNiAxLjQ0LTEuOTMgMi41MWwtMy41NSAzLjU2Yy0uMy0uMDktLjc0LS4wOS0xLjA0IDBsLTIuNTUtMi41NUMxMi4yNyAxMC40NSAxMS40NiA5IDEwIDljLTEuNDUgMC0yLjI3IDEuNDQtMS45MyAyLjUybC00LjU2IDQuNTVDMi40NCAxNS43NCAxIDE2LjU1IDEgMThjMCAxLjEuOSAyIDIgMiAxLjQ1IDAgMi4yNi0xLjQ0IDEuOTMtMi41MWw0LjU1LTQuNTZjLjMuMDkuNzQuMDkgMS4wNCAwbDIuNTUgMi41NUMxMi43MyAxNi41NSAxMy41NCAxOCAxNSAxOGMxLjQ1IDAgMi4yNy0xLjQ0IDEuOTMtMi41MmwzLjU2LTMuNTVjMS4wNy4zMyAyLjUxLS40OCAyLjUxLTEuOTMgMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDkgLjk0LTIuMDdMMTggNmwtMi4wNi0uOTNMMTUgM2wtLjkyIDIuMDdMMTIgNmwyLjA4Ljkzek0zLjUgMTEgNCA5bDItLjVMNCA4bC0uNS0yTDMgOGwtMiAuNUwzIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEludmVudG9yeTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEgMC0yIC45LTIgMnYzLjAxYzAgLjcyLjQzIDEuMzQgMSAxLjY5VjIwYzAgMS4xIDEuMSAyIDIgMmgxNGMuOSAwIDItLjkgMi0yVjguN2MuNTctLjM1IDEtLjk3IDEtMS42OVY0YzAtMS4xLTEtMi0yLTJ6bS01IDEySDl2LTJoNnYyem01LTdINFY0aDE2djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEludmVudG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xIDAtMiAuOS0yIDJ2My4wMWMwIC43Mi40MyAxLjM0IDEgMS42OVYyMGMwIDEuMSAxLjEgMiAyIDJoMTRjLjkgMCAyLS45IDItMlY4LjdjLjU3LS4zNSAxLS45NyAxLTEuNjlWNGMwLTEuMS0xLTItMi0yem0tNSAxMkg5di0yaDZ2MnptNS03SDRWNGwxNi0uMDJWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGlua09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgN2gtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMSAwIDEuNDMtLjk4IDIuNjMtMi4zMSAyLjk4bDEuNDYgMS40NkMyMC44OCAxNS42MSAyMiAxMy45NSAyMiAxMmMwLTIuNzYtMi4yNC01LTUtNXptLTEgNGgtMi4xOWwyIDJIMTZ6TTIgNC4yN2wzLjExIDMuMTFBNC45OTEgNC45OTEgMCAwIDAgMiAxMmMwIDIuNzYgMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjEgMC0xLjU5IDEuMjEtMi45IDIuNzYtMy4wN0w4LjczIDExSDh2MmgyLjczTDEzIDE1LjI3VjE3aDEuNzNsNC4wMSA0TDIwIDE5Ljc0IDMuMjcgMyAyIDQuMjd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMjRWMFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOCAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvd1ByaW9yaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNWg4djJoLTh6bTAgNS41aDh2MmgtOHptMCA1LjVoOHYyaC04ek0yIDExLjVDMiAxNS4wOCA0LjkyIDE4IDguNSAxOEg5djJsMy0zLTMtM3YyaC0uNUM2LjAyIDE2IDQgMTMuOTggNCAxMS41UzYuMDIgNyA4LjUgN0gxMlY1SDguNUM0LjkyIDUgMiA3LjkyIDIgMTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0LTggNS04LTVWNmw4IDUgOC01djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmt1bnJlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgNC04IDUtOC01VjZsOCA1IDgtNXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3ZlVG9JbmJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g0Ljk5Yy0xLjExIDAtMS45OC45LTEuOTggMkwzIDE5YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJoLTRjMCAxLjY2LTEuMzUgMy0zIDNzLTMtMS4zNC0zLTNINC45OVY1SDE5djEwem0tMy01aC0yVjdoLTR2M0g4bDQgNCA0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5leHRXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gtNFY1YzAtLjU1LS4yMi0xLjA1LS41OS0xLjQxQzE1LjA1IDMuMjIgMTQuNTUgMyAxNCAzaC00Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnpNMTAgNWg0djJoLTRWNXptMSAxMy41LTEtMSAzLTMtMy0zIDEtMSA0IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lZEZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTEtMkg1djE3aDJ2LTdoNWwxIDJoN1Y2aC02em00IDhoLTRsLTEtMkg3VjZoNWwxIDJoNXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQb2xpY3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSA1LTktNC05IDR2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDIuMy0uNTYgNC4zMy0xLjkgNS44OC0zLjcxbC0zLjEyLTMuMTJhNC45OTQgNC45OTQgMCAwIDEtNi4yOS0uNjQgNS4wMDMgNS4wMDMgMCAwIDEgMC03LjA3IDUuMDAzIDUuMDAzIDAgMCAxIDcuMDcgMCA1LjAwNiA1LjAwNiAwIDAgMSAuNjQgNi4yOWwyLjkgMi45QzIwLjI5IDE1LjY5IDIxIDEzLjM4IDIxIDExVjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQdXNoUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2IDlWNGgxYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMXY1YzAgMS42Ni0xLjM0IDMtMyAzdjJoNS45N3Y3bDEgMSAxLTF2LTdIMTl2LTJjLTEuNjYgMC0zLTEuMzQtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmE4LjAwMiA4LjAwMiAwIDAgMSA3LjYtNS41YzEuOTUgMCAzLjczLjcyIDUuMTIgMS44OEwxMyAxNmg5VjdsLTMuNiAzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZUNpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDExdjJoMTB2LTJIN3ptNS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMUg3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzSDV2LTJoMTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwbHlBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDhWNWwtNyA3IDcgN3YtM2wtNC00IDQtNHptNiAxVjVsLTcgNyA3IDd2LTQuMWM1IDAgOC41IDEuNiAxMSA1LjEtMS01LTQtMTAtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBvcnRHbWFpbGVycm9ycmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzMgM0g4LjI3TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NkwyMSAxNS43M1Y4LjI3TDE1LjczIDN6TTE5IDE0LjkgMTQuOSAxOUg5LjFMNSAxNC45VjkuMUw5LjEgNWg1LjhMMTkgOS4xdjUuOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjZoLTJ6TTExIDE1aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwb3J0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjIuOTJsNi45MSA2LjkxIDEuMDktMS4xVjguMjdMMTUuNzMgM0g4LjI3TDcuMTggNC4xIDExIDcuOTJ6bTExLjI3IDE0LjczLTIwLTIwLjAxTDEgMi45OWwzLjY0IDMuNjRMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2bDEuNjQtMS42M0wyMSAyM2wxLjI3LTEuMjd6TTEyIDE3LjNjLS43MiAwLTEuMy0uNTgtMS4zLTEuM3MuNTgtMS4zIDEuMy0xLjMgMS4zLjU4IDEuMyAxLjMtLjU4IDEuMy0xLjMgMS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTIgMTcuM2MtLjcyIDAtMS4zLS41OC0xLjMtMS4zIDAtLjcyLjU4LTEuMyAxLjMtMS4zLjcyIDAgMS4zLjU4IDEuMyAxLjMgMCAuNzItLjU4IDEuMy0xLjMgMS4zem0xLTQuM2gtMlY3aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2F2ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEydjdINXYtN0gzdjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnptLTYgLjY3IDIuNTktMi41OEwxNyAxMS41bC01IDUtNS01IDEuNDEtMS40MUwxMSAxMi42N1YzaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhdmVBcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEyLjRWN2wtNC00SDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDcuNGw4LjYtOC42ek0xNSAxNWMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6TTYgNmg5djRINlY2em0xMy45OSAxMC4yNSAxLjc3IDEuNzdMMTYuNzcgMjNIMTV2LTEuNzdsNC45OS00Ljk4em0zLjI2LjI2LS44NS44NS0xLjc3LTEuNzcuODUtLjg1Yy4yLS4yLjUxLS4yLjcxIDBsMS4wNiAxLjA2Yy4yLjIuMi41MiAwIC43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2wtNC00em0tNSAxNmMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6bTMtMTBINVY1aDEwdjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbGVjdEFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNWgyVjNjLTEuMSAwLTIgLjktMiAyem0wIDhoMnYtMkgzdjJ6bTQgOGgydi0ySDd2MnpNMyA5aDJWN0gzdjJ6bTEwLTZoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3ptMiAxOGgydi0yaC0ydjJ6bTgtOGgydi0yaC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyem0wLTEyaDJWN2gtMnYyem0wIDhoMnYtMmgtMnYyem0tNCA0aDJ2LTJoLTJ2MnptMC0xNmgyVjNoLTJ2MnpNNyAxN2gxMFY3SDd2MTB6bTItOGg2djZIOVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4wMSAyMSAyMyAxMiAyLjAxIDMgMiAxMGwxNSAyLTE1IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoaWVsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOGg2di0ySDN2MnpNMyA2djJoMThWNkgzem0wIDdoMTJ2LTJIM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcXVhcmVGb290IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNjYgMTcuNjYtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDYtMS45NC0xLjk0LTEuMDYgMS4wNi0uNzEtLjcxIDEuMDYtMS4wNkw5LjcgOS43bC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDYtMS45NC0xLjk0LTEuMDYgMS4wNi0uNzEtLjcxIDEuMDYtMS4wNkw0IDR2MTRjMCAxLjEuOSAyIDIgMmgxNGwtMi4zNC0yLjM0ek03IDE3di01Ljc2TDEyLjc2IDE3SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YWNrZWRCYXJDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOWg0djExSDR6TTQgNGg0djRINHpNMTAgN2g0djRoLTR6TTE2IDEwaDR2NGgtNHpNMTYgMTVoNHY1aC00ek0xMCAxMmg0djhoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0cmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMjBcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjRcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDUgOC41OSA2LjAzIDQuNTVoLS4wMWwtLjMxLS4zMi0xLjQyIDEuNDEgNC4wMiA0LjA1LjAxLS4wMS4zMS4zMnptMy44OTMuMDI3IDQuNDA1LTQuMzkyTDE5Ljc2IDUuNjRsLTQuNDA1IDQuMzkzek0xMC4wMSAxNS4zNmwtMS40Mi0xLjQxLTQuMDMgNC4wMS0uMzIuMzMgMS40MSAxLjQxIDQuMDMtNC4wMnptOS43NSAyLjk0LTMuOTktNC4wMS0uMzYtLjM1TDE0IDE1LjM1bDMuOTkgNC4wMS4zNS4zNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMFY4aC00VjRoLTJ2NGgtNFY0SDh2NEg0djJoNHY0SDR2Mmg0djRoMnYtNGg0djRoMnYtNGg0di0yaC00di00aDR6bS02IDRoLTR2LTRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXh0Rm9ybWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxN3YyaDE0di0ySDV6bTQuNS00LjJoNWwuOSAyLjJoMi4xTDEyLjc1IDRoLTEuNUw2LjUgMTVoMi4xbC45LTIuMnpNMTIgNS45OCAxMy44NyAxMWgtMy43NEwxMiA1Ljk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbmFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC41NSA1LjIyLTEuMzktMS42OEExLjUxIDEuNTEgMCAwIDAgMTggM0g2Yy0uNDcgMC0uODguMjEtMS4xNS41NUwzLjQ2IDUuMjJDMy4xNyA1LjU3IDMgNi4wMSAzIDYuNVYxOWEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjYuNWMwLS40OS0uMTctLjkzLS40NS0xLjI4ek0xMiA5LjVsNS41IDUuNUgxNHYyaC00di0ySDYuNUwxMiA5LjV6TTUuMTIgNWwuODItMWgxMmwuOTMgMUg1LjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbmRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVwY29taW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuMTYgNy4yNi0xLjQxLTEuNDEtMy41NiAzLjU1IDEuNDEgMS40MXMzLjQ1LTMuNTIgMy41Ni0zLjU1ek0xMSAzaDJ2NWgtMnpNNi40IDEwLjgxIDcuODEgOS40IDQuMjYgNS44NCAyLjg0IDcuMjZjLjExLjAzIDMuNTYgMy41NSAzLjU2IDMuNTV6TTIwIDEyaC01YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zSDRjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F2ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE2Ljk5Yy0xLjM1IDAtMi4yLjQyLTIuOTUuOC0uNjUuMzMtMS4xOC42LTIuMDUuNi0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQyLTIuOTUuOGMtLjY1LjMzLTEuMTcuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MiAyLjk1LS44LjY1LS4zMyAxLjE3LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQyIDIuOTUtLjhjLjY1LS4zMyAxLjE4LS42IDIuMDUtLjYuOSAwIDEuNC4yNSAyLjA1LjYuNzUuMzggMS41OC44IDIuOTUuOHYtMS45NWMtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjYtLjgtMi45NS0uOHptMC00LjQ1Yy0xLjM1IDAtMi4yLjQzLTIuOTUuOC0uNjUuMzItMS4xOC42LTIuMDUuNi0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQzLTIuOTUuOGMtLjY1LjMyLTEuMTcuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MyAyLjk1LS44LjY1LS4zNSAxLjE1LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQzIDIuOTUtLjhjLjY1LS4zNSAxLjE1LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41OC44IDIuOTUuOHYtMS45NWMtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjYtLjgtMi45NS0uOHptMi45NS04LjA4Yy0uNzUtLjM4LTEuNTgtLjgtMi45NS0uOHMtMi4yLjQyLTIuOTUuOGMtLjY1LjMyLTEuMTguNi0yLjA1LjYtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zNy0xLjU3LS44LTIuOTUtLjhzLTIuMi40Mi0yLjk1LjhjLS42NS4zMy0xLjE3LjYtMi4wNS42djEuOTNjMS4zNSAwIDIuMi0uNDMgMi45NS0uOC42NS0uMzMgMS4xNy0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MyAyLjk1LS44Yy42NS0uMzIgMS4xOC0uNiAyLjA1LS42LjkgMCAxLjQuMjUgMi4wNS42Ljc1LjM4IDEuNTguOCAyLjk1LjhWNS4wNGMtLjkgMC0xLjQtLjI1LTIuMDUtLjU4ek0xNyA4LjA5Yy0xLjM1IDAtMi4yLjQzLTIuOTUuOC0uNjUuMzUtMS4xNS42LTIuMDUuNnMtMS40LS4yNS0yLjA1LS42Yy0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQzLTIuOTUuOGMtLjY1LjM1LTEuMTUuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MyAyLjk1LS44LjY1LS4zMiAxLjE4LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQzIDIuOTUtLjhjLjY1LS4zMiAxLjE4LS42IDIuMDUtLjYuOSAwIDEuNC4yNSAyLjA1LjYuNzUuMzggMS41OC44IDIuOTUuOFY5LjQ5Yy0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNi0uOC0yLjk1LS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXZWJTdG9yaWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNGMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMlY0ek0yIDIwYzAgMS4xLjkgMiAyIDJoOWMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjE2em0xOS0yYy44MyAwIDEuNS0uNjcgMS41LTEuNXYtOWMwLS44My0uNjctMS41LTEuNS0xLjV2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdlZWtlbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMGMtMS4xIDAtMiAuOS0yIDJ2M0g1di0zYTIgMiAwIDEgMC00IDB2NWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0ydi01YzAtMS4xLS45LTItMi0yem0tMy01SDZjLTEuMSAwLTIgLjktMiAydjIuMTVjMS4xNi40MSAyIDEuNTIgMiAyLjgxVjE0aDEydi0yLjAzYzAtMS4zLjg0LTIuNCAyLTIuODFWN2MwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2hlcmVUb1ZvdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjMy44NiAwIDcgMy4xNCA3IDcgMCA1LjI1LTcgMTMtNyAxM1M1IDE0LjI1IDUgOWMwLTMuODYgMy4xNC03IDctN3ptLTEuNTMgMTJMMTcgNy40MSAxNS42IDZsLTUuMTMgNS4xOEw4LjQgOS4wOSA3IDEwLjVsMy40NyAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDF4TW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA3aDR2MTBINlY5SDRWN3ptMTEuODMgNC43MkwxOC42NiA3aC0yLjMzbC0xLjY2IDIuNzdMMTMgN2gtMi4zM2wyLjgzIDQuNzJMMTAuMzMgMTdoMi4zM2wyLTMuMzQgMiAzLjM0SDE5bC0zLjE3LTUuMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDMwRnBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDV2M2g2djIuNUgzdjNoNVYxNkgydjNoNmMxLjY2IDAgMy0xLjM0IDMtM3YtMS45QTIuMSAyLjEgMCAwIDAgOC45IDEyIDIuMSAyLjEgMCAwIDAgMTEgOS45VjhjMC0xLjY2LTEuMzQtMy0zLTNIMnptMTcgM3Y4aC00VjhoNG0wLTNoLTRjLTEuNjYgMC0zIDEuMzQtMyAzdjhjMCAxLjY2IDEuMzQgMyAzIDNoNGMxLjY2IDAgMy0xLjM0IDMtM1Y4YzAtMS42Ni0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzZ01vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgN3YyaDV2Mkg0djJoNHYySDN2Mmg1YzEuMSAwIDItLjkgMi0ydi0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjljMC0xLjEtLjktMi0yLTJIM3ptMTggNHY0YzAgMS4xLS45IDItMiAyaC01Yy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNWMxLjEgMCAyIC45IDIgMmgtN3Y2aDV2LTJoLTIuNXYtMkgyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNGdNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdIN3Y1SDVWN0gzdjdoNHYzaDJ2LTNoMnYtMkg5Vjd6bTggNHYyaDJ2MmgtNVY5aDdjMC0xLjEtLjktMi0yLTJoLTVjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg1YzEuMSAwIDItLjkgMi0ydi00aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ0Z1BsdXNNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMXYyaDJ2MmgtNFY5aDZjMC0xLjEtLjktMi0yLTJoLTRjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg0YzEuMSAwIDItLjkgMi0ydi00aC00em0xMSAwaC0yVjloLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2LTJ6TTcgN0g1djVIM1Y3SDF2N2g0djNoMnYtM2gxdi0ySDdWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNjBGcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDh2OGgtNFY4aDRtMC0zaC00Yy0xLjY2IDAtMyAxLjM0LTMgM3Y4YzAgMS42NiAxLjM0IDMgMyAzaDRjMS42NiAwIDMtMS4zNCAzLTNWOGMwLTEuNjYtMS4zNC0zLTMtM3ptLTkgM1Y1SDVDMy4zNCA1IDIgNi4zNCAyIDh2OGMwIDEuNjYgMS4zNCAzIDMgM2gzYzEuNjYgMCAzLTEuMzQgMy0zdi0zYzAtMS42Ni0xLjM0LTMtMy0zSDVWOGg1em0tMiA1djNINXYtM2gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NBbGFybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDUuNzItNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOSA2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3Vjh6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMTh6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NBbGFybXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS02MTgtNTY4SDc4MnYzNjAwSC02MTh6TTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA1LjctNC42LTMuOS0xLjMgMS41IDQuNiAzLjlMMjIgNS43ek03LjkgMy40IDYuNiAxLjkgMiA1LjdsMS4zIDEuNSA0LjYtMy44ek0xMi41IDhIMTF2Nmw0LjcgMi45LjgtMS4yLTQtMi40Vjh6TTEyIDRjLTUgMC05IDQtOSA5czQgOSA5IDkgOS00IDktOS00LTktOS05em0wIDE2Yy0zLjkgMC03LTMuMS03LTdzMy4xLTcgNy03IDcgMy4xIDcgNy0zLjEgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY2Vzc1RpbWVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6bTMuMyAxNC43MUwxMSAxMi40MVY3aDJ2NC41OWwzLjcxIDMuNzEtMS40MiAxLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NUaW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDdIMTF2Nmw1LjI1IDMuMTUuNzUtMS4yMy00LjUtMi42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRVbml0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE4SDdWNWgxMHYxNHpNOCA2aDh2Mkg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRBbGFybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODggMy4zOSA2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMTh6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0xLTExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkVG9Ib21lU2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxLjAxIDggMWMtMS4xIDAtMiAuOS0yIDJ2M2gyVjVoMTB2MTRIOHYtMUg2djNjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xMCAxNWgyVjhINXYyaDMuNTlMMyAxNS41OSA0LjQxIDE3IDEwIDExLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTdjMCAxLjY1LTEuMzUgMy0zIDNzLTMtMS4zNS0zLTNoMmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xSDJ2LTJoOS41YzEuNjUgMCAzIDEuMzUgMyAzek0xOSA2LjVDMTkgNC41NyAxNy40MyAzIDE1LjUgM1MxMiA0LjU3IDEyIDYuNWgyYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzE2LjMzIDggMTUuNSA4SDJ2MmgxMy41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41em0tLjUgNC41SDJ2MmgxNi41Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjV2MmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMyMC40MyAxMSAxOC41IDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJwbGFuZVRpY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTkgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS44MS0yLTEuODEtMnptLTIuNDYgOS4zLTguODYgMi4zNi0xLjY2LTIuODguOTMtLjI1IDEuMjYuOTkgMi4zOS0uNjQtMi40LTQuMTYgMS40LS4zOCA0LjAxIDMuNzQgMi40NC0uNjVhLjk2Ny45NjcgMCAwIDEgMS4xOC42OC45ODguOTg4IDAgMCAxLS42OSAxLjE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJwbGFuZW1vZGVBY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0ybC04LjUtNVYzLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNVY5TDIgMTR2Mmw4LjUtMi41VjE5TDggMjAuNVYyMmw0LTEgNCAxdi0xLjVMMTMuNSAxOXYtNS41TDIyIDE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJwbGFuZW1vZGVJbmFjdGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSA3LjY3VjMuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVY5bDguNSA1djJsLTQuNDktMS4zMi03LjAxLTcuMDF6bTkuMjggMTQuOTQgMS40MS0xLjQxLTcuNjktNy43LTMuOTQtMy45NC02Ljc1LTYuNzUtMS40MiAxLjQxIDYuMzggNi4zOEwyIDE0djJsOC41LTIuNVYxOUw4IDIwLjVWMjJsNC0xIDQgMXYtMS41TDEzLjUgMTl2LTIuNjdsNi4yOCA2LjI4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE4SDdWNmgxMHYxMnptLTktOGg4djEuNUg4VjEwem0xIDNoNnYxLjVIOVYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTRoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5MUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXYxMmg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djEwaDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2OGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnk0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djZoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5NUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXY0aDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTZCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2Mmg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjE1LjMzQzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0ek0xMyAxOGgtMnYtMmgydjJ6bTAtNGgtMlY5aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUNoYXJnaW5nRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjE1LjMzQzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0ek0xMSAyMHYtNS41SDlMMTMgN3Y1LjVoMkwxMSAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeVNhdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0aC0yVjJoLTR2Mkg4Yy0uNTUgMC0xIC40NS0xIDF2MTZjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTFWNWMwLS41NS0uNDUtMS0xLTF6bS0xIDEwaC0ydjJoLTJ2LTJIOXYtMmgydi0yaDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlTdGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeVVua25vd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHptLTIuNzIgMTMuOTVoLTEuOXYtMS45aDEuOXYxLjl6bTEuMzUtNS4yNnMtLjM4LjQyLS42Ny43MWMtLjQ4LjQ4LS44MyAxLjE1LS44MyAxLjZoLTEuNmMwLS44My40Ni0xLjUyLjkzLTJsLjkzLS45NEExLjQ5OCAxLjQ5OCAwIDAgMCAxMiA5LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41SDljMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2MwIC42Ni0uMjcgMS4yNi0uNyAxLjY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbG9vZHR5cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTUuMzMgNC41NS04IDguNDgtOCAxMS44IDAgNC45OCAzLjggOC4yIDggOC4yczgtMy4yMiA4LTguMmMwLTMuMzItMi42Ny03LjI1LTgtMTEuOHptMyAxNkg5di0yaDZ2MnptMC01aC0ydjJoLTJ2LTJIOXYtMmgyVjloMnYyaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ZXRvb3RoQ29ubmVjdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyAxMi0yLTItMiAyIDIgMiAyLTJ6bTEwLjcxLTQuMjlMMTIgMmgtMXY3LjU5TDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDExIDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyA1LjgzbDEuODggMS44OEwxMyA5LjU5VjUuODN6bTEuODggMTAuNDZMMTMgMTguMTd2LTMuNzZsMS44OCAxLjg4ek0xOSAxMGwtMiAyIDIgMiAyLTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVldG9vdGhEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzIDUuODMgMS44OCAxLjg4LTEuNiAxLjYgMS40MSAxLjQxIDMuMDItMy4wMkwxMiAyaC0xdjUuMDNsMiAydi0zLjJ6TTUuNDEgNCA0IDUuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDExIDE0LjQxVjIyaDFsNC4yOS00LjI5IDIuMyAyLjI5TDIwIDE4LjU5IDUuNDEgNHpNMTMgMTguMTd2LTMuNzZsMS44OCAxLjg4TDEzIDE4LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVldG9vdGhEcml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTBINC44MWwxLjA0LTNIMTVWNUg1LjVjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDIgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04aC0zYy0xLjEgMC0yLS45LTItMnptLTguNSA2Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyAxMyA2LjUgMTNzMS41LjY3IDEuNSAxLjVTNy4zMyAxNiA2LjUgMTZ6bTkgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDMuODUgMTkuMTUgMWgtLjV2My43OWwtMi4zLTIuMjktLjcuN0wxOC40NCA2bC0yLjc5IDIuNzkuNy43MSAyLjMtMi4zVjExaC41TDIyIDguMTQgMTkuODUgNiAyMiAzLjg1em0tMi4zNS0uOTQuOTQuOTQtLjk0Ljk0VjIuOTF6bS45NCA1LjIzLS45NC45NFY3LjJsLjk0Ljk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVldG9vdGhTZWFyY2hpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4yNCAxMi4wMSAyLjMyIDIuMzJjLjI4LS43Mi40NC0xLjUxLjQ0LTIuMzMgMC0uODItLjE2LTEuNTktLjQzLTIuMzFsLTIuMzMgMi4zMnptNS4yOS01LjMtMS4yNiAxLjI2Yy42MyAxLjIxLjk4IDIuNTcuOTggNC4wMnMtLjM2IDIuODItLjk4IDQuMDJsMS4yIDEuMmE5LjkzNiA5LjkzNiAwIDAgMCAxLjU0LTUuMzFjLS4wMS0xLjg5LS41NS0zLjY3LTEuNDgtNS4xOXptLTMuODIgMUwxMCAySDl2Ny41OUw0LjQxIDUgMyA2LjQxIDguNTkgMTIgMyAxNy41OSA0LjQxIDE5IDkgMTQuNDFWMjJoMWw1LjcxLTUuNzEtNC4zLTQuMjkgNC4zLTQuMjl6TTExIDUuODNsMS44OCAxLjg4TDExIDkuNTlWNS44M3ptMS44OCAxMC40NkwxMSAxOC4xN3YtMy43NmwxLjg4IDEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsdWV0b290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcxIDcuNzEgMTIgMmgtMXY3LjU5TDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDExIDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyA1LjgzbDEuODggMS44OEwxMyA5LjU5VjUuODN6bTEuODggMTAuNDZMMTMgMTguMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjg1IDEyLjY1aDIuM0wxMiA5bC0xLjE1IDMuNjV6TTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTE0LjMgMTZsLS43LTJoLTMuMmwtLjcgMkg3LjhMMTEgN2gybDMuMiA5aC0xLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3NIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjlMMjMuMzEgMTIgMjAgOC42OXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2em0wLTEwYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJpZ2h0bmVzc0xvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjMxIDIzLjMxIDEyIDIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5ek0xMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3NNZWRpdW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS4zMSAyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThWNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVWNGMwLS41NS0uNDUtMS0xLTFoLTJjLS41NSAwLTEgLjQ1LTEgMXYxaC0xdjRjMCAuNTUuNDUgMSAxIDFoMXY3YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY3YzAtMi4yMS0xLjc5LTQtNC00UzUgNC43OSA1IDd2N0g0Yy0uNTUgMC0xIC40NS0xIDF2NGgxdjFjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTFoMXYtNGMwLS41NS0uNDUtMS0xLTFIN1Y3YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2MTBjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtN2gxYy41NSAwIDEtLjQ1IDEtMVY1aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1lcmFzd2l0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDdoLTFsLTEtMWgtNEw5IDdIOGMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptLTQgN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguNTcuNTEgNC40OCA0LjQ4VjIuMDRjNC43Mi40NyA4LjQ4IDQuMjMgOC45NSA4Ljk1aDJDMjMuMzQgMy4wMiAxNS40OS0xLjU5IDguNTcuNTF6TTEwLjk1IDIxLjk2Yy00LjcyLS40Ny04LjQ4LTQuMjMtOC45NS04Ljk1SDBjLjY2IDcuOTcgOC41MSAxMi41OCAxNS40MyAxMC40OGwtNC40OC00LjQ4djIuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyZWRpdFNjb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmg1di0ySDR2LTZoMThWNmMwLTEuMTEtLjg5LTItMi0yem0wIDRINFY2aDE2djJ6bS01LjA3IDExLjE3LTIuODMtMi44My0xLjQxIDEuNDFMMTQuOTMgMjIgMjIgMTQuOTNsLTEuNDEtMS40MS01LjY2IDUuNjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhcmtNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM2E5IDkgMCAxIDAgOSA5YzAtLjQ2LS4wNC0uOTItLjEtMS4zNmE1LjM4OSA1LjM4OSAwIDAgMS00LjQgMi4yNiA1LjQwMyA1LjQwMyAwIDAgMS0zLjE0LTkuOGMtLjQ0LS4wNi0uOS0uMS0xLjM2LS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRhU2F2ZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIuMDV2My4wM2MzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAuOS0uMTggMS43NS0uNDggMi41NGwyLjYgMS41M2MuNTYtMS4yNC44OC0yLjYyLjg4LTQuMDcgMC01LjE4LTMuOTUtOS40NS05LTkuOTV6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctNyAwLTMuNTMgMi42MS02LjQzIDYtNi45MlYyLjA1Yy01LjA2LjUtOSA0Ljc2LTkgOS45NSAwIDUuNTIgNC40NyAxMCA5Ljk5IDEwIDMuMzEgMCA2LjI0LTEuNjEgOC4wNi00LjA5bC0yLjYtMS41M0E2Ljk1IDYuOTUgMCAwIDEgMTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhdGFTYXZlck9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA4djNIOHYyaDN2M2gydi0zaDN2LTJoLTNWOGgtMnptMi01Ljk1djMuMDNjMy4zOS40OSA2IDMuMzkgNiA2LjkyIDAgLjktLjE4IDEuNzUtLjQ4IDIuNTRsMi42IDEuNTNjLjU2LTEuMjQuODgtMi42Mi44OC00LjA3IDAtNS4xOC0zLjk1LTkuNDUtOS05Ljk1ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTcgMC0zLjUzIDIuNjEtNi40MyA2LTYuOTJWMi4wNWMtNS4wNi41LTkgNC43Ni05IDkuOTUgMCA1LjUyIDQuNDcgMTAgOS45OSAxMCAzLjMxIDAgNi4yNC0xLjYxIDguMDYtNC4wOWwtMi42LTEuNTNBNi45NSA2Ljk1IDAgMCAxIDEyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRhVXNhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyLjA1djMuMDNjMy4zOS40OSA2IDMuMzkgNiA2LjkyIDAgLjktLjE4IDEuNzUtLjQ4IDIuNTRsMi42IDEuNTNjLjU2LTEuMjQuODgtMi42Mi44OC00LjA3IDAtNS4xOC0zLjk1LTkuNDUtOS05Ljk1ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTcgMC0zLjUzIDIuNjEtNi40MyA2LTYuOTJWMi4wNWMtNS4wNi41LTkgNC43Ni05IDkuOTUgMCA1LjUyIDQuNDcgMTAgOS45OSAxMCAzLjMxIDAgNi4yNC0xLjYxIDguMDYtNC4wOWwtMi42LTEuNTNBNi45NSA2Ljk1IDAgMCAxIDEyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRhc2V0TGlua2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4wOSAxN0g3di00aDMuNjljLjk1LS42MyAyLjA5LTEgMy4zMS0xaDZjLjM0IDAgLjY3LjA0IDEgLjA5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgzLjgxQzguMyAyMC4xMiA4IDE5LjA5IDggMThjMC0uMzQuMDQtLjY3LjA5LTF6TTEzIDdoNHY0aC00Vjd6TTcgN2g0djRIN1Y3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOGMwLTEuMS45LTIgMi0yaDJ2LTJoLTJjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDRoMnYtMmgtMmMtMS4xIDAtMi0uOS0yLTJ6TTIwIDE0aC0ydjJoMmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJoLTJ2MmgyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxN2g2djJoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhdGFzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTggMTRIN3YtNGg0djR6bTAtNkg3VjdoNHY0em02IDZoLTR2LTRoNHY0em0wLTZoLTRWN2g0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmVsb3Blck1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDVoMTB2MmgyVjNjMC0xLjEtLjktMS45OS0yLTEuOTlMNyAxYy0xLjEgMC0yIC45LTIgMnY0aDJWNXptOC40MSAxMS41OUwyMCAxMmwtNC41OS00LjU5TDE0IDguODMgMTcuMTcgMTIgMTQgMTUuMTdsMS40MSAxLjQyek0xMCAxNS4xNyA2LjgzIDEyIDEwIDguODMgOC41OSA3LjQxIDQgMTJsNC41OSA0LjU5TDEwIDE1LjE3ek0xNyAxOUg3di0ySDV2NGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi00aC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmljZVRoZXJtb3N0YXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxM1Y1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2OGMtMS4yMS45MS0yIDIuMzctMiA0IDAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVjMC0xLjYzLS43OS0zLjA5LTItNHptLTQtOGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDFoLTF2MWgxdjJoLTF2MWgxdjJoLTJWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2aWNlc0ZvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzaC0zYzAtMS40My0xLjQ3LTIuNC0yLjc5LTEuODRsLTMgMS4yOUMxMC40OCAyLjc2IDEwIDMuNDkgMTAgNC4yOVYxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtNS4zM2wxLjEyLS40OGMuNzMtLjMyIDEuMjEtMS4wNCAxLjIxLTEuODRWNWgzdjE0ek0yIDNoMnYySDJ6TTIgMTloMnYySDJ6TTIgMTVoMnYySDJ6TTIgMTFoMnYySDJ6TTIgN2gydjJIMnpNNiAzaDJ2Mkg2ek02IDE5aDJ2Mkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2aDE4VjRINGMtMS4xIDAtMiAuOS0yIDJ2MTFIMHYzaDE0di0zSDRWNnptMTkgMmgtNmMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xem0tMSA5aC00di03aDR2N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlzY291bnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi43OSAyMSAzIDExLjIxdjJjMCAuNTMuMjEgMS4wNC41OSAxLjQxbDcuNzkgNy43OWMuNzguNzggMi4wNS43OCAyLjgzIDBsNi4yMS02LjIxYy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTIuNzkgMjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjM4IDE3LjQxYy43OC43OCAyLjA1Ljc4IDIuODMgMGw2LjIxLTYuMjFjLjc4LS43OC43OC0yLjA1IDAtMi44M0wxMi42My41OEEyLjA0IDIuMDQgMCAwIDAgMTEuMjEgMEg1QzMuOSAwIDMgLjkgMyAydjYuMjFjMCAuNTMuMjEgMS4wNC41OSAxLjQxbDcuNzkgNy43OXpNNy4yNSAzYTEuMjUgMS4yNSAwIDEgMSAwIDIuNSAxLjI1IDEuMjUgMCAwIDEgMC0yLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvTm90RGlzdHVyYk9uVG90YWxTaWxlbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMC0xNGMtMy4zIDAtNiAyLjctNiA2czIuNyA2IDYgNiA2LTIuNyA2LTYtMi42LTYtNi02em0zIDdIOXYtMmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZER2ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg1djJoOHYtMmg1YzEuMSAwIDEuOTktLjkgMS45OS0yTDIzIDVjMC0xLjEtLjktMi0yLTJ6bTAgMTRIM1Y1aDE4djEyem0tMi05SDh2MmgxMVY4em0wIDRIOHYyaDExdi0yek03IDhINXYyaDJWOHptMCA0SDV2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOVY3SDh2MTBoOHYtMmgtNnYtMmg2di0yaC02VjloNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWRnZXNlbnNvckhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgN2gydjdIM1Y3em0tMyAzaDJ2N0gwdi03em0yMi0zaDJ2N2gtMlY3em0tMyAzaDJ2N2gtMnYtN3ptLTMtNy45OUw4IDJjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNiAxN0g4VjdoOHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWRnZXNlbnNvckxvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA3aDJ2N0gyVjd6bTE4IDNoMnY3aC0ydi03em0tNC03Ljk5TDggMmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE2IDE3SDhWN2g4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFzaGxpZ2h0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1VjJINnYxLjE3TDcuODMgNXpNMTYgMTFsMi0zVjdIOS44M0wxNiAxMy4xN3pNMi44MSAyLjgxIDEuMzkgNC4yMiA4IDEwLjgzVjIyaDh2LTMuMTdsMy43OCAzLjc4IDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYXNobGlnaHRPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyaDEydjNINnpNNiA3djFsMiAzdjExaDhWMTFsMi0zVjdINnptNiA4LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbG91cmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA5aDE0djZINXpNMTEgMmgydjNoLTJ6TTE3LjI4NiA2LjM5OWwxLjc5LTEuODAzIDEuNDIgMS40MS0xLjc5IDEuODAyek0xMSAxOWgydjNoLTJ6TTE3LjI5IDE3LjcxbDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNMy40OTUgNi4wMWwxLjQwNy0xLjQwOEw2LjY5IDYuMzkxIDUuMjg0IDcuNzk4ek0zLjQ5MiAxOC4wNzZsMS44MDMtMS43OSAxLjQwOSAxLjQyLTEuODAzIDEuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsdW9yZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDloMTR2Nkg1ek0xMSAyaDJ2M2gtMnpNMTcuMjg2IDYuMzk5bDEuNzktMS44MDMgMS40MiAxLjQxLTEuNzkgMS44MDJ6TTExIDE5aDJ2M2gtMnpNMTcuMjkgMTcuNzFsMS43OSAxLjggMS40Mi0xLjQyLTEuOC0xLjc5ek0zLjQ5NSA2LjAxbDEuNDA3LTEuNDA4TDYuNjkgNi4zOTEgNS4yODQgNy43OTh6TTMuNDkyIDE4LjA3NmwxLjgwMy0xLjc5IDEuNDA5IDEuNDItMS44MDMgMS43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm1kQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00LjIgMC04IDMuMjItOCA4LjIgMCAzLjMyIDIuNjcgNy4yNSA4IDExLjggNS4zMy00LjU1IDgtOC40OCA4LTExLjhDMjAgNS4yMiAxNi4yIDIgMTIgMnptMSAxM2gtMnYtMmgydjJ6bTAtNGgtMlY2aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm1kR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC4yIDAtOCAzLjIyLTggOC4yIDAgMy4zMiAyLjY3IDcuMjUgOCAxMS44IDUuMzMtNC41NSA4LTguNDggOC0xMS44QzIwIDUuMjIgMTYuMiAyIDEyIDJ6bTAgMTBjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTF2MmgydjJIOVY5aDdjMC0xLjEtLjktMi0yLTJIOWMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDVjMS4xIDAgMi0uOSAyLTJ2LTRoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdwcEJhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptMy41IDEyLjA5LTEuNDEgMS40MUwxMiAxMy40MiA5LjkxIDE1LjUgOC41IDE0LjA5IDEwLjU5IDEyIDguNSA5LjkxIDkuOTEgOC41IDEyIDEwLjU5bDIuMDktMi4wOSAxLjQxIDEuNDFMMTMuNDIgMTJsMi4wOCAyLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcHBHb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem0tMS4wNiAxMy41NEw3LjQgMTJsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxLTUuNjQgNS42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3BwTWF5YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6bTEgMTRoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdwc0ZpeGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTguOTQgM0E4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMjAuOTQgMTNIMjN2LTJoLTIuMDZ6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3BzTm90Rml4ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45NCAxMUE4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMjAuOTQgMTNIMjN2LTJoLTIuMDZ6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3BzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTQgMTFBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZjLTEuMTMuMTItMi4xOS40Ni0zLjE2Ljk3bDEuNSAxLjVBNi45OTUgNi45OTUgMCAwIDEgMTkgMTJjMCAuOTQtLjE5IDEuODQtLjUyIDIuNjVsMS41IDEuNWMuNS0uOTYuODQtMi4wMi45Ny0zLjE1SDIzdi0yaC0yLjA2ek0zIDQuMjdsMi4wNCAyLjA0QTguOTE0IDguOTE0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNmMxLjc3LS4yIDMuMzgtLjkxIDQuNjktMS45OEwxOS43MyAyMSAyMSAxOS43MyA0LjI3IDMgMyA0LjI3em0xMy4yNyAxMy4yN2E2Ljk5NSA2Ljk5NSAwIDAgMS05LjgxLTkuODFsOS44MSA5LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmFwaGljRXEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE4aDJWNkg3djEyem00IDRoMlYyaC0ydjIwem0tOC04aDJ2LTRIM3Y0em0xMiA0aDJWNmgtMnYxMnptNC04djRoMnYtNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JpZDNYMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTBWOGgtNFY0aC0ydjRoLTRWNEg4djRINHYyaDR2NEg0djJoNHY0aDJ2LTRoNHY0aDJ2LTRoNHYtMmgtNHYtNGg0em0tNiA0aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JpZDRYNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN1Y1aC0zVjJoLTJ2M2gtNFYyaC0ydjNIN1YySDV2M0gydjJoM3Y0SDJ2MmgzdjRIMnYyaDN2M2gydi0zaDR2M2gydi0zaDR2M2gydi0zaDN2LTJoLTN2LTRoM3YtMmgtM1Y3aDN6TTcgN2g0djRIN1Y3em0wIDEwdi00aDR2NEg3em0xMCAwaC00di00aDR2NHptMC02aC00VjdoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmlkR29sZGVucmF0aW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExVjloLTdWMmgtMnY3aC0yVjJIOXY3SDJ2Mmg3djJIMnYyaDd2N2gydi03aDJ2N2gydi03aDd2LTJoLTd2LTJoN3ptLTkgMmgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMUg5VjdIN3YxMGgydi00aDZ2NGgyVjdoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSFBsdXNNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMUg2VjdINHYxMGgydi00aDZ2NGgyVjdoLTJ2NHptMTAgMGgtMlY5aC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJBdXRvU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNkg2LjV2NkgxMGMuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41SDh2LTNoMnYzek0xNi41IDE2SDEzdjZoMS41di0yaDEuMWwuOSAySDE4bC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHYtMWMwLS44LS43LTEuNS0xLjUtMS41em0wIDIuNWgtMnYtMWgydjF6TTMuNSAxOGgtMnYtMkgwdjZoMS41di0yLjVoMlYyMkg1di02SDMuNXpNMjIgMTguNXYtMmgtMS41djJoLTJWMjBoMnYySDIydi0yaDJ2LTEuNXpNMTEuOTcgNS4zbC0xLjAyIDIuODloMi4xTDEyLjAzIDUuM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjY5IDIgNiA0LjY5IDYgOHMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptMi4wNCA5LS42My0xLjc5aC0yLjgzTDkuOTYgMTFIOC43NGwyLjYzLTdoMS4yNWwyLjYzIDdoLTEuMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkckF1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjA0IDguMDRoLS4wOWwtMS42IDQuNTVoMy4yOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMy4yMSAxNS0uOTgtMi44MUg5Ljc4bC0xIDIuODFoLTEuOWw0LjEzLTExaDEuOTdsNC4xMyAxMWgtMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJPZmZTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE4LjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxM3Y2aDEuNXYtMmgxLjFsLjkgMkgxOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMnYtMkgwdjZoMS41di0yLjVoMlYyMkg1di02SDMuNXYyem02LjUtMkg2LjV2NkgxMGMuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41SDh2LTNoMnYzem0xNC0uNWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHpNMTAuOTggNC4xNSA5LjQyIDIuNTljNS4xLTIuNDIgMTAuNDEgMi44OSA3Ljk5IDcuOTlsLTEuNTYtMS41NmMuODEtMi45Ni0xLjkxLTUuNjgtNC44Ny00Ljg3ek02LjM0IDIuMzQgNC45MyAzLjc2bDEuNjYgMS42NmMtMi40MiA1LjEgMi44OSAxMC40MSA3Ljk5IDcuOTlsMS42NiAxLjY2IDEuNDEtMS40MUw2LjM0IDIuMzR6bTEuODEgNC42NCA0Ljg3IDQuODdjLTIuOTYuODEtNS42OC0xLjkxLTQuODctNC44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyT25TZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE4LjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxM3Y2aDEuNXYtMmgxLjFsLjkgMkgxOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMnYtMkgwdjZoMS41di0yLjVoMlYyMkg1di02SDMuNXYyem02LjUtMkg2LjV2NkgxMGMuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41SDh2LTNoMnYzem0xNC0uNWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHpNMTIgNGMyLjIxIDAgNCAxLjc5IDQgNHMtMS43OSA0LTQgNC00LTEuNzktNC00IDEuNzktNCA0LTRtMC0yQzguNjkgMiA2IDQuNjkgNiA4czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyMmg4di03aC0zdi00aC01VjloM1YySDh2N2gzdjJINnY0SDN2N2g4di03SDh2LTJoOHYyaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMZW5zQmx1ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zIC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiA1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTE1IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC0zLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tMTEgMTBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTE3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDUuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTggLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMyA4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0xNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS00LTEyYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMCA4LjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wLTRjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWdodE1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXpNMiAxM2gyYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xSDJjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF6bTE4IDBoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXpNMTEgMnYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMVYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxem0wIDE4djJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxek01Ljk5IDQuNThhLjk5Ni45OTYgMCAwIDAtMS40MSAwIC45OTYuOTk2IDAgMCAwIDAgMS40MWwxLjA2IDEuMDZjLjM5LjM5IDEuMDMuMzkgMS40MSAwcy4zOS0xLjAzIDAtMS40MUw1Ljk5IDQuNTh6bTEyLjM3IDEyLjM3YS45OTYuOTk2IDAgMCAwLTEuNDEgMCAuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMS4wNiAxLjA2Yy4zOS4zOSAxLjAzLjM5IDEuNDEgMGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTEuMDYtMS4wNnptMS4wNi0xMC45NmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuMDYgMS4wNmMtLjM5LjM5LS4zOSAxLjAzIDAgMS40MXMxLjAzLjM5IDEuNDEgMGwxLjA2LTEuMDZ6TTcuMDUgMTguMzZhLjk5Ni45OTYgMCAwIDAgMC0xLjQxLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjA2IDEuMDZjLS4zOS4zOS0uMzkgMS4wMyAwIDEuNDFzMS4wMy4zOSAxLjQxIDBsMS4wNi0xLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhdGlvbkRpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTQgMTFBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZjLTEuMTMuMTItMi4xOS40Ni0zLjE2Ljk3bDEuNSAxLjVBNi45OTUgNi45OTUgMCAwIDEgMTkgMTJjMCAuOTQtLjE5IDEuODQtLjUyIDIuNjVsMS41IDEuNWMuNS0uOTYuODQtMi4wMi45Ny0zLjE1SDIzdi0yaC0yLjA2ek0zIDQuMjdsMi4wNCAyLjA0QTguOTE0IDguOTE0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNmMxLjc3LS4yIDMuMzgtLjkxIDQuNjktMS45OEwxOS43MyAyMSAyMSAxOS43MyA0LjI3IDMgMyA0LjI3em0xMy4yNyAxMy4yN2E2Ljk5NSA2Ljk5NSAwIDAgMS05LjgxLTkuODFsOS44MSA5LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhdGlvblNlYXJjaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDExQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAyMC45NCAxM0gyM3YtMmgtMi4wNnpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMdGVNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE0aDN2Mkg0VjhoMnY2em0zLTRoMnY2aDJ2LTZoMlY4SDl2MnptMTIgMFY4aC01djhoNXYtMmgtM3YtMWgzdi0yaC0zdi0xaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEx0ZVBsdXNNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE0aDN2MkgxVjhoMnY2em0yLTRoMnY2aDJ2LTZoMlY4SDV2MnptNyA2aDV2LTJoLTN2LTFoM3YtMmgtM3YtMWgzVjhoLTV2OHptMTItNWgtMlY5aC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYWNyb09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk4IDE3LjE1QTguOTA5IDguOTA5IDAgMCAwIDIxIDEzYy0xLjUgMC0yLjkxLjM3LTQuMTUgMS4wMmwzLjEzIDMuMTN6TTMgMTNhOSA5IDAgMCAwIDkgOSA5IDkgMCAwIDAtOS05ek0xMiA1LjVBMi41IDIuNSAwIDAgMSAxNC41IDhjMCAuOTktLjU4IDEuODQtMS40MiAyLjI1bDIuNDggMi40OGMuMTEuMDIuMjMuMDMuMzUuMDNhMi41IDIuNSAwIDAgMCAyLjUtMi41YzAtMS0uNTktMS44NS0xLjQzLTIuMjUuODQtLjQgMS40My0xLjI1IDEuNDMtMi4yNWEyLjUgMi41IDAgMCAwLTMuOTItMi4wNmwuMDEtLjJhMi41IDIuNSAwIDAgMC01IDBsLjAyLjE5YTIuNDg1IDIuNDg1IDAgMCAwLTIuOTMuMDhsMy4xNiAzLjE2Yy40MS0uODUgMS4yNi0xLjQzIDIuMjUtMS40M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmw0LjY0IDQuNjRjLS4yNy40LS40My44Ny0uNDMgMS4zOWEyLjUgMi41IDAgMCAwIDIuNSAyLjVjLjUyIDAgLjk5LS4xNiAxLjQtLjQzbC4wMi4wMi0uMDIuMTZBMi41IDIuNSAwIDAgMCAxMiAxNWMuMDUgMCAuMS0uMDEuMTYtLjAybDEuNjQgMS42NEE4LjkwNSA4LjkwNSAwIDAgMCAxMiAyMmMyLjAyIDAgMy44OC0uNjcgNS4zOC0xLjhsMi40IDIuNCAxLjQxLTEuNDFMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWRpYUJsdWV0b290aE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2LjE3VjNoNnY0aC00djEuMTdsLTItMnpNMTkuNDIgMTUgMjIgMTcuNTdsLS44LjgtNi43OC02Ljc4LjgtLjggMi43NSAyLjc1VjloLjZMMjIgMTIuNDMgMTkuNDIgMTV6bS0uMjUtMS40NSAxLjEzLTEuMTMtMS4xMy0xLjEzdjIuMjZ6bTIuMDIgNy42NC0xLjQxIDEuNDEtMy45OC0zLjk4LS41OC41OC0uODUtLjg1LjU4LS41OEwxMSAxMy44M1YxN2MwIDIuMjEtMS43OCA0LTMuOTkgNFMzIDE5LjIxIDMgMTdzMS43OS00IDQuMDEtNGMuNzMgMCAxLjQxLjIxIDIgLjU1di0xLjcyTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOSAxOC4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVkaWFCbHVldG9vdGhPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOSAzIC4wMSAxMC41NWMtLjYtLjM0LTEuMjgtLjU1LTItLjU1YTQuMDAxIDQuMDAxIDAgMSAwIDAgOEM5LjIzIDIxIDExIDE5LjIxIDExIDE3VjdoNFYzSDl6bTEyIDkuNDNMMTcuNTcgOWgtLjZ2NC41NWwtMi43NS0yLjc1LS44NS44NUwxNi43MyAxNWwtMy4zNSAzLjM1Ljg1Ljg1IDIuNzUtMi43NVYyMWguNkwyMSAxNy41NyAxOC40MiAxNSAyMSAxMi40M3ptLTIuODMtMS4xMyAxLjEzIDEuMTMtMS4xMyAxLjEzVjExLjN6bTEuMTMgNi4yNy0xLjEzIDEuMTN2LTIuMjZsMS4xMyAxLjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWRpY2F0aW9uTGlxdWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDEydjJIM3pNMTQgNkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0xIDloLTIuNXYyLjVoLTNWMTVINXYtM2gyLjVWOS41aDNWMTJIMTN2M3pNMjAgNmMtMS42OCAwLTMgMS43Ni0zIDQgMCAxLjc3LjgzIDMuMjIgMiAzLjc2VjIwYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtNi4yNGMxLjE3LS41NCAyLTEuOTkgMi0zLjc2IDAtMi4yNC0xLjMyLTQtMy00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWRpY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDNoMTJ2Mkg2ek0xNyA2SDdjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTEgOWgtMi41djIuNWgtM1YxNUg4di0zaDIuNVY5LjVoM1YxMkgxNnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2JpbGVGcmllbmRseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDFIOWMtMS4xIDAtMiAuOS0yIDJ2M2gyVjRoMTB2MTZIOXYtMkg3djNjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yek03LjAxIDEzLjQ3bC0yLjU1LTIuNTUtMS4yNyAxLjI3TDcgMTZsNy4xOS03LjE5LTEuMjctMS4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9iaWxlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi43NiAyLjQ5IDEuNDkgMy43NiA1IDcuMjdWMjFjMCAxLjEuOSAyIDIgMmgxMGMxLjAyIDAgMS44NS0uNzcgMS45OC0xLjc1bDEuNzIgMS43MiAxLjI3LTEuMjdMMi43NiAyLjQ5ek03IDE5VjkuMjdMMTYuNzMgMTlIN3pNMTcgNXY5LjE3bDIgMlYzYzAtMS4xLS45LTItMi0ySDdjLS44NSAwLTEuNTguNTQtMS44NyAxLjNMNy44MyA1SDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2JpbGVkYXRhT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3aDNsLTQtNC00IDRoM3Y0LjE3bDIgMnpNMi44MSAyLjgxIDEuMzkgNC4yMiA4IDEwLjgzdjYuMThsLTMgLjAxTDkgMjFsNC00LTMgLjAxdi00LjE4bDkuNzggOS43OCAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGVOaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDJjLTEuODIgMC0zLjUzLjUtNSAxLjM1IDIuOTkgMS43MyA1IDQuOTUgNSA4LjY1cy0yLjAxIDYuOTItNSA4LjY1YzEuNDcuODUgMy4xOCAxLjM1IDUgMS4zNSA1LjUyIDAgMTAtNC40OCAxMC0xMFMxNS4wMiAyIDkuNSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlU3RhbmRieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMCAxMC00LjQ5IDEwLTEwUzE3LjUxIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMtOGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbml0b3JIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjExIDEyLjQ1IDE0IDEwLjI0bC0zLjExIDYuMjFjLS4xNi4zNC0uNTEuNTUtLjg5LjU1cy0uNzMtLjIxLS44OS0uNTVMNy4zOCAxM0gydjVjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNWgtNmMtLjM4IDAtLjczLS4yMS0uODktLjU1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjVoNmMuMzggMCAuNzMuMjEuODkuNTVMMTAgMTMuNzZsMy4xMS02LjIxYy4zNC0uNjggMS40NS0uNjggMS43OSAwTDE2LjYyIDExSDIyVjZjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbml0b3JXZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyA5Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOC41aDF2MWgtMXpNMTEuNSA4LjVoMXYxaC0xek0xMyA4LjVoMXYxaC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZWFyYnlFcnJvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNy41NyA0LjQyIDQuNDJMMTIgMTYuNDFsLTQuNDItNC40MkwxMiA3LjU3em0wIDExLjYyLTcuMi03LjIgNy4yLTcuMiA2IDZWNy4xNmwtNC41OC00LjU4Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtOC4wMSA4Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDguMDEgOGMuNzguNzggMi4wNS43OCAyLjgzIDBMMTggMTYuODJ2LTMuNjNsLTYgNnptOCAuODFoMnYyaC0ydi0yem0yLTEwaC0ydjhoMnYtOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZWFyYnlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjQxIDEzLjQyIDE4LjgzIDE2bC0xLjgxLTEuODFMMTkuMiAxMiAxMiA0LjggOS44MSA2Ljk5IDggNS4xN2wyLjU4LTIuNThjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBsOCA4Yy43OS43OC43OSAyLjA0IDAgMi44M3ptLS4yMiA3Ljc3LTEuNDEgMS40MUwxNiAxOC44M2wtMi41OCAyLjU4Yy0uNzguNzgtMi4wNS43OC0yLjgzIDBsLTgtOGMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNMNS4xNyA4IDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOSAxOC4zOHptLTctNC4xNy0xLjM5LTEuMzktLjguOEw3LjU4IDEybC44LS44LTEuNC0xLjM5TDQuOCAxMmw3LjIgNy4yIDIuMTktMi4xOHpNMTYuNDIgMTIgMTIgNy41OGwtLjguOCA0LjQyIDQuNDIuOC0uOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya0NlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIyaDIwVjJMMiAyMnptMTgtMmgtM1Y5LjgzbDMtM1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1dpZmkxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHptMy4zMiAxMC44NEMxNC4zNCAxNC4zIDEzLjIgMTQgMTIgMTRjLTEuMiAwLTIuMzQuMy0zLjMyLjg0TDIuOTIgOS4wN0M1LjUxIDcuMDggOC42NyA2IDEyIDZzNi40OSAxLjA4IDkuMDggMy4wN2wtNS43NiA1Ljc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXR3b3JrV2lmaTJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0em00Ljc4IDkuMzhBOC44NTMgOC44NTMgMCAwIDAgMTIgMTJjLTEuNzYgMC0zLjQuNS00Ljc4IDEuMzhsLTQuMy00LjNDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTQuMyA0LjMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXR3b3JrV2lmaTNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0ek0yLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTIuODUgMi44NkExMC45NDUgMTAuOTQ1IDAgMCAwIDEyIDEwYy0yLjMxIDAtNC40Ni43MS02LjIzIDEuOTNMMi45MiA5LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXR3b3JrV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOTh6bS0yMS4wOC4wOUM1LjUxIDcuMDggOC42NyA2IDEyIDZzNi40OSAxLjA4IDkuMDggMy4wN2wtMS40MyAxLjQzQzE3LjUgOC45NCAxNC44NiA4IDEyIDhzLTUuNS45NC03LjY1IDIuNTFMMi45MiA5LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk00IDIwaDE2VjRINHYxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMThINFY0aDE2djE2ek0xOCA2aC01Yy0xLjEgMC0yIC45LTIgMnYyLjI4Yy0uNi4zNS0xIC45OC0xIDEuNzIgMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLS43NC0uNC0xLjM4LTEtMS43MlY4aDN2OEg4VjhoMlY2SDZ2MTJoMTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmlnaHRsaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMmMxLjgyIDAgMy41My41IDUgMS4zNS0yLjk5IDEuNzMtNSA0Ljk1LTUgOC42NXMyLjAxIDYuOTIgNSA4LjY1QTkuOTczIDkuOTczIDAgMCAxIDE0IDIyQzguNDggMjIgNCAxNy41MiA0IDEyUzguNDggMiAxNCAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03LS4yNWMuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzUtLjc1LS4zNC0uNzUtLjc1LjM0LS43NS43NS0uNzV6TTkuMSAxN0g3di0yLjE0bDUuOTYtNS45NiAyLjEyIDIuMTJMOS4xIDE3em03Ljc1LTcuNzMtMS4wNiAxLjA2LTIuMTItMi4xMiAxLjA2LTEuMDZjLjItLjIuNTEtLjIuNzEgMGwxLjQxIDEuNDFjLjIuMi4yLjUxIDAgLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXNzd29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxN2gyMHYySDJ2LTJ6bTEuMTUtNC4wNUw0IDExLjQ3bC44NSAxLjQ4IDEuMy0uNzUtLjg1LTEuNDhIN3YtMS41SDUuM2wuODUtMS40N0w0Ljg1IDcgNCA4LjQ3IDMuMTUgN2wtMS4zLjc1Ljg1IDEuNDdIMXYxLjVoMS43bC0uODUgMS40OCAxLjMuNzV6bTYuNy0uNzUgMS4zLjc1Ljg1LTEuNDguODUgMS40OCAxLjMtLjc1LS44NS0xLjQ4SDE1di0xLjVoLTEuN2wuODUtMS40Ny0xLjMtLjc1TDEyIDguNDcgMTEuMTUgN2wtMS4zLjc1Ljg1IDEuNDdIOXYxLjVoMS43bC0uODUgMS40OHpNMjMgOS4yMmgtMS43bC44NS0xLjQ3LTEuMy0uNzVMMjAgOC40NyAxOS4xNSA3bC0xLjMuNzUuODUgMS40N0gxN3YxLjVoMS43bC0uODUgMS40OCAxLjMuNzUuODUtMS40OC44NSAxLjQ4IDEuMy0uNzUtLjg1LTEuNDhIMjN2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGF0dGVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTIgOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0uMDIgNmMtLjc0IDAtMS4zNy40LTEuNzIgMWgtMi41NGExLjk4IDEuOTggMCAwIDAtMy40NCAwSDguNDFsMy4wNy0zLjA3Yy4xNy4wNC4zNC4wNy41Mi4wNyAxLjEgMCAyLS45IDItMiAwLS4xOC0uMDMtLjM1LS4wNy0uNTFsMy41Ni0zLjU2Yy4xNi4wNC4zMy4wNy41MS4wNyAxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDJjMCAuMTguMDMuMzUuMDcuNTFsLTMuNTYgMy41NmMtLjE2LS4wNC0uMzMtLjA3LS41MS0uMDctMS4xIDAtMiAuOS0yIDIgMCAuMTguMDMuMzUuMDcuNTFsLTMuNTYgMy41NkM2LjM1IDE2LjAzIDYuMTggMTYgNiAxNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDJjLjc0IDAgMS4zNy0uNCAxLjcyLTFoMi41N2ExLjk4IDEuOTggMCAwIDAgMy40NCAwaDIuNTVjLjM0LjYuOTggMSAxLjcyIDEgMS4xIDAgMi0uOSAyLTItLjAyLTEuMS0uOTItMi0yLjAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBoaXNoaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWMwLTEuMy0uODQtMi40LTItMi44MlYyaC0ydjQuMThDMTMuODQgNi42IDEzIDcuNyAxMyA5cy44NCAyLjQgMiAyLjgyVjE1YzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00di0xaDNMNSA5djZjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNnYtMy4xOGMxLjE2LS40MiAyLTEuNTIgMi0yLjgyem0tMyAxYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTcuNjQgMTVINi40OXYtNC41bC0uOS42Ni0uNTgtLjg5TDYuNzcgOWguODd2NnptNS44NiAwSDkuNjF2LTEuMDJjMS4wNy0xLjA3IDEuNzctMS43NyAyLjEzLTIuMTUuNC0uNDIuNTQtLjY5LjU0LTEuMDYgMC0uNC0uMzEtLjcyLS44MS0uNzItLjUyIDAtLjguMzktLjkuNzJsLTEuMDEtLjQyYy4wMS0uMDIuMTgtLjc2IDEtMS4xNS42OS0uMzMgMS40OC0uMiAxLjk1LjAzLjg2LjQ0LjkxIDEuMjQuOTEgMS40OCAwIC42NC0uMzEgMS4yNi0uOTIgMS44Ni0uMjUuMjUtLjcyLjcxLTEuNCAxLjM5bC4wMy4wNWgyLjM3VjE1em01LjI1LS44NWMtLjA4LjEzLS41Ni44NS0xLjc2Ljg1LS4wNCAwLTEuNi4wOC0yLjA1LTEuNTFsMS4wMy0uNDFjLjAzLjEuMTkuODYgMS4wMi44Ni40MSAwIC44OS0uMjguODktLjc3IDAtLjU1LS40OC0uNzktMS4wNC0uNzloLS41di0xaC40NmMuMzMgMCAuODgtLjE0Ljg4LS43MiAwLS4zOS0uMzEtLjY1LS43NS0uNjUtLjUgMC0uNzQuMzItLjg1LjY0bC0uOTktLjQxQzE1LjIgOS45IDE1LjY4IDkgMTYuOTQgOWMxLjA5IDAgMS41NC42NCAxLjYyLjc1LjMzLjUuMjggMS4xNi4wMiAxLjU3LS4xNS4yMi0uMzIuMzgtLjUyLjQ4di4wN2MuMjguMTEuNTEuMjguNjguNTIuMzcuNTIuMzMgMS4yNy4wMSAxLjc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5TGVzc29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMWMuMzQgMCAuNjcuMDMgMSAuMDhWNGMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDcuMjZBNi45OTUgNi45OTUgMCAwIDEgMTggMTF6TTcgMTFWNGg1djdMOS41IDkuNSA3IDExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS0xLjI1IDcuNXYtNWw0IDIuNS00IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJpY2VDaGFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0tOCA2SDh2MWgzYy41NSAwIDEgLjQ1IDEgMXYzYzAgLjU1LS40NSAxLTEgMWgtMXYxSDh2LTFINnYtMmg0di0xSDdjLS41NSAwLTEtLjQ1LTEtMVY5YzAtLjU1LjQ1LTEgMS0xaDFWN2gydjFoMnYyem00IDYuMjUtMi0yaDRsLTIgMnpNMTQgMTBsMi0yIDIgMmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJpY2VDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTNWOWMwLS41NS0uNDUtMS0xLTFIN1Y2aDVWNEg5LjVWM2gtMnYxSDZjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDR2Mkg1djJoMi41djFoMnYtMUgxMWMuNTUgMCAxLS40NSAxLTF6TTE5LjU5IDEyLjUybC01LjY2IDUuNjUtMi44My0yLjgzLTEuNDEgMS40MkwxMy45MyAyMSAyMSAxMy45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHVuY2hDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZoLTFWMUg2djVINWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yek04IDNoOHYzSDhWM3ptNCAxNmMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTEuNWgtMXYyLjcxbDEuNjQgMS42NC43MS0uNzEtMS4zNS0xLjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWl6IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS01Ljk5IDEzYy0uNTkgMC0xLjA1LS40Ny0xLjA1LTEuMDUgMC0uNTkuNDctMS4wNCAxLjA1LTEuMDQuNTkgMCAxLjA0LjQ1IDEuMDQgMS4wNC0uMDEuNTgtLjQ1IDEuMDUtMS4wNCAxLjA1em0yLjUtNi4xN2MtLjYzLjkzLTEuMjMgMS4yMS0xLjU2IDEuODEtLjEzLjI0LS4xOC40LS4xOCAxLjE4aC0xLjUyYzAtLjQxLS4wNi0xLjA4LjI2LTEuNjUuNDEtLjczIDEuMTgtMS4xNiAxLjYzLTEuOC40OC0uNjguMjEtMS45NC0xLjE0LTEuOTQtLjg4IDAtMS4zMi42Ny0xLjUgMS4yM2wtMS4zNy0uNTdDMTEuNTEgNS45NiAxMi41MiA1IDEzLjk5IDVjMS4yMyAwIDIuMDguNTYgMi41MSAxLjI2LjM3LjYxLjU4IDEuNzMuMDEgMi41N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUk1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuOCA3LjIgOSAxMEg3TDUuODcgNy4zM0g0VjEwSDJWMmg1YzEuMTMgMCAyIC44NyAyIDJ2MS4zM2MwIC44LS41MyAxLjU0LTEuMiAxLjg3ek03IDRINHYxLjMzaDNWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmFkYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljc0IDE4LjMzQTkuOTg0IDkuOTg0IDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBhOS45ODQgOS45ODQgMCAwIDAgNy4xMS0yLjk3Yy4wMy0uMDMuMDUtLjA2LjA3LS4wOC4yLS4yLjM5LS40MS41Ni0uNjJ6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDhjMCAxLjg1LS42MyAzLjU0LTEuNjkgNC45bC0xLjQzLTEuNDNjLjY5LS45OCAxLjEtMi4xNyAxLjEtMy40NiAwLTMuMzEtMi42OS02LTYtNnMtNiAyLjY5LTYgNiAyLjY5IDYgNiA2YzEuMyAwIDIuNTEtLjQyIDMuNDktMS4xM2wxLjQyIDEuNDJBNy44MjIgNy44MjIgMCAwIDEgMTIgMjB6bTEuOTItNy40OWMuMTctLjY2LjAyLTEuMzgtLjQ5LTEuOWwtLjAyLS4wMmMtLjc3LS43Ny0yLS43OC0yLjc4LS4wNC0uMDEuMDEtLjAzLjAyLS4wNS4wNC0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbC4wMi4wMmMuNTIuNTEgMS4yNS42NyAxLjkxLjQ5bDEuNTEgMS41MWMtLjYuMzYtMS4yOS41OC0yLjA0LjU4LTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNGMwIC43My0uMjEgMS40MS0uNTYgMmwtMS41LTEuNTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbWVtYmVyTWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE0LjIxYy0xLjUtLjc3LTMuMi0xLjIxLTUtMS4yMXMtMy41LjQ0LTUgMS4yMVY2aDEwdjkuMjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXNldFR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMGgtOC4wMVY3TDkgMTFsMy45OSA0di0zSDIxdjVIM1Y1aDE4djNoMlY1YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNXYyaDh2LTJoNWMxLjEgMCAxLjk5LS45IDEuOTktMnYtNUgyM2MwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVzdGFydEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNVYyTDggNmw0IDRWN2MzLjMxIDAgNiAyLjY5IDYgNiAwIDIuOTctMi4xNyA1LjQzLTUgNS45MXYyLjAyYzMuOTUtLjQ5IDctMy44NSA3LTcuOTMgMC00LjQyLTMuNTgtOC04LTh6TTYgMTNjMC0xLjY1LjY3LTMuMTUgMS43Ni00LjI0TDYuMzQgNy4zNEE4LjAxNCA4LjAxNCAwIDAgMCA0IDEzYzAgNC4wOCAzLjA1IDcuNDQgNyA3Ljkzdi0yLjAyYy0yLjgzLS40OC01LTIuOTQtNS01LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXZpZXdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNi40MyA5LjU3TDEyIDE1bC0xLjU3LTMuNDNMNyAxMGwzLjQzLTEuNTdMMTIgNWwxLjU3IDMuNDNMMTcgMTBsLTMuNDMgMS41N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnN2cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOWgxLjVsLTEuNzUgNmgtMS41TDEyLjUgOUgxNGwxIDMuNDNMMTYgOXpNNS4xIDEyLjkgNiAxNUg0LjVsLS44NS0ySDIuNXYySDFWOWgzLjVjLjg1IDAgMS41LjY1IDEuNSAxLjV2MWMwIC42LS40IDEuMTUtLjkgMS40em0tLjYtMi40aC0ydjFoMnYtMXptMTcgMi41aC0ydjJIMThWOWgzLjVjLjgzIDAgMS41LjY3IDEuNSAxLjV2MWMwIC44My0uNjcgMS41LTEuNSAxLjV6bTAtMi41aC0ydjFoMnYtMXpNMTEuNSA5djEuNWgtM3YuNzVoMmMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxSDd2LTEuNWgzdi0uNzVINy43NWMtLjQxIDAtLjc1LS4zNC0uNzUtLjc1di0yYzAtLjU1LjQ1LTEgMS0xaDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NyZWVuTG9ja0xhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVIM2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tMiAxMkg1VjdoMTR2MTB6bS05LTFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xdi0xYTIgMiAwIDEgMC00IDB2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDF6bS44LTZjMC0uNjYuNTQtMS4yIDEuMi0xLjIuNjYgMCAxLjIuNTQgMS4yIDEuMnYxaC0yLjR2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlbkxvY2tQb3J0cmFpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE2aDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXYtMWEyIDIgMCAxIDAtNCAwdjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxem0uOC02YzAtLjY2LjU0LTEuMiAxLjItMS4yLjY2IDAgMS4yLjU0IDEuMiAxLjJ2MWgtMi40di0xek0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxOEg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlbkxvY2tSb3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzLjI1IDEyLjc3LTIuNTctMi41Ny0xLjQxIDEuNDEgMi4yMiAyLjIyLTUuNjYgNS42Nkw0LjUxIDguMTdsNS42Ni01LjY2IDIuMSAyLjEgMS40MS0xLjQxTDExLjIzLjc1YTEuNDkgMS40OSAwIDAgMC0yLjEyIDBMMi43NSA3LjExYTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsMTIuMDIgMTIuMDJjLjU5LjU5IDEuNTQuNTkgMi4xMiAwbDYuMzYtNi4zNmMuNTktLjU5LjU5LTEuNTQgMC0yLjEyek04LjQ3IDIwLjQ4QTEwLjQ4NyAxMC40ODcgMCAwIDEgMi41IDEySDFjLjUxIDYuMTYgNS42NiAxMSAxMS45NSAxMWwuNjYtLjAzLTMuODEtMy44Mi0xLjMzIDEuMzN6TTE2IDloNWMuNTUgMCAxLS40NSAxLTFWNGMwLS41NS0uNDUtMS0xLTF2LS41YTIuNSAyLjUgMCAwIDAtNSAwVjNjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uOC02LjVjMC0uOTQuNzYtMS43IDEuNy0xLjdzMS43Ljc2IDEuNyAxLjdWM2gtMy40di0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NyZWVuUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi40OCAyLjUyYzMuMjcgMS41NSA1LjYxIDQuNzIgNS45NyA4LjQ4aDEuNUMyMy40NCA0Ljg0IDE4LjI5IDAgMTIgMGwtLjY2LjAzIDMuODEgMy44MSAxLjMzLTEuMzJ6bS02LjI1LS43N2ExLjQ5IDEuNDkgMCAwIDAtMi4xMiAwTDEuNzUgOC4xMWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDEyLjAyIDEyLjAyYy41OS41OSAxLjU0LjU5IDIuMTIgMGw2LjM2LTYuMzZjLjU5LS41OS41OS0xLjU0IDAtMi4xMkwxMC4yMyAxLjc1em00LjYgMTkuNDRMMi44MSA5LjE3bDYuMzYtNi4zNiAxMi4wMiAxMi4wMi02LjM2IDYuMzZ6bS03LjMxLjI5QTEwLjQ4NyAxMC40ODcgMCAwIDEgMS41NSAxM0guMDVDLjU2IDE5LjE2IDUuNzEgMjQgMTIgMjRsLjY2LS4wMy0zLjgxLTMuODEtMS4zMyAxLjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5TZWFyY2hEZXNrdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZW5hYmxlQmFja2dyb3VuZFwiOlwibmV3IDAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjYgMTYuOGg0Ljh2MS44SDkuNnpcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNmEyIDIgMCAwIDAtMi0ySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTBhMiAyIDAgMCAwIDIgMkgwdjJoMjR2LTJoLTRaTTQgMTZWNmgxNnYxMC4wMUw0IDE2Wm01LjA5Ny02LjA0N2MwLTEuMDI3LjgzNi0xLjg2NCAxLjg2NC0xLjg2NCAxLjAyNyAwIDEuODY0LjgzNyAxLjg2NCAxLjg2NGExLjg2NyAxLjg2NyAwIDAgMS0xLjg2NCAxLjg2NCAxLjg2NyAxLjg2NyAwIDAgMS0xLjg2NC0xLjg2NFptNy4wMzIgNC4yMzYtMi40ODItMi40ODJhMy4xOSAzLjE5IDAgMCAwIC41MjctMS43NTRBMy4yMTYgMy4yMTYgMCAwIDAgMTAuOTYgNi43NGEzLjIxNyAzLjIxNyAwIDAgMC0zLjIxNCAzLjIxMyAzLjIxOCAzLjIxOCAwIDAgMCAzLjIxNCAzLjIxNCAzLjE5IDMuMTkgMCAwIDAgMS43MjQtLjUxbDIuNDg5IDIuNDg3Ljk1NS0uOTU1WlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NyZWVuc2hvdE1vbml0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg0djJoOHYtMmg0YzEuMSAwIDItLjkgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxNEg0VjVoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA3LjVIOVY2SDV2NGgxLjV6TTE5IDEyaC0xLjV2Mi41SDE1VjE2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlbnNob3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE4SDdWNmgxMHYxMnpNOS41IDguNUgxMlY3SDh2NGgxLjVWOC41ek0xMiAxN2g0di00aC0xLjV2Mi41SDEyVjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZFN0b3JhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQuMDIgOCA0IDIwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYgNmgtMlY0aDJ2NHptMyAwaC0yVjRoMnY0em0zIDBoLTJWNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlY3VyaXR5VXBkYXRlR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTdIN1Y2aDEwdjEyem0tMS03Ljk1LTEuNDEtMS40MS0zLjU0IDMuNTQtMS40MS0xLjQxLTEuNDEgMS40MUwxMS4wNSAxNSAxNiAxMC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VjdXJpdHlVcGRhdGVXYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNWgydjJoLTJ6TTExIDdoMnY2aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2MThjMCAxLjEuODkgMiAxLjk5IDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxN0g3VjZoMTB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlY3VyaXR5VXBkYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDN2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAyem0xMiAxNUg3VjZoMTB2MTJ6bS0xLTZoLTNWOGgtMnY0SDhsNCA0IDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNDEtOC44My04LjgzYy0uMzctLjM3LS44OC0uNTgtMS40MS0uNThINGMtMS4xIDAtMiAuOS0yIDJ2Ny4xN2MwIC41My4yMSAxLjA0LjU5IDEuNDFsOC44MyA4LjgzYy43OC43OCAyLjA1Ljc4IDIuODMgMGw3LjE3LTcuMTdjLjc4LS43OC43OC0yLjA0LS4wMS0yLjgzek02LjUgOEM1LjY3IDggNSA3LjMzIDUgNi41UzUuNjcgNSA2LjUgNSA4IDUuNjcgOCA2LjUgNy4zMyA4IDYuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5kVG9Nb2JpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxN2gydjRjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWM2MwLTEuMS45LTEuOTkgMi0xLjk5TDE3IDFjMS4xIDAgMiAuOSAyIDJ2NGgtMlY2SDd2MTJoMTB2LTF6bTUtNS00LTR2M2gtNXYyaDV2M2w0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzU3VnZ2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjQxIDYuNTkgMTUgNS41bDIuNDEtMS4wOUwxOC41IDJsMS4wOSAyLjQxTDIyIDUuNWwtMi40MSAxLjA5TDE4LjUgOWwtMS4wOS0yLjQxem0zLjg3IDYuMTNMMjAuNSAxMWwtLjc4IDEuNzItMS43Mi43OCAxLjcyLjc4Ljc4IDEuNzIuNzgtMS43MkwyMyAxMy41bC0xLjcyLS43OHptLTUuMDQgMS42NSAxLjk0IDEuNDctMi41IDQuMzMtMi4yNC0uOTRjLS4yLjEzLS40Mi4yNi0uNjQuMzdsLS4zIDIuNGgtNWwtLjMtMi40MWMtLjIyLS4xMS0uNDMtLjIzLS42NC0uMzdsLTIuMjQuOTQtMi41LTQuMzMgMS45NC0xLjQ3Yy0uMDEtLjExLS4wMS0uMjQtLjAxLS4zNnMwLS4yNS4wMS0uMzdsLTEuOTQtMS40NyAyLjUtNC4zMyAyLjI0Ljk0Yy4yLS4xMy40Mi0uMjYuNjQtLjM3TDcuNSA2aDVsLjMgMi40MWMuMjIuMTEuNDMuMjMuNjQuMzdsMi4yNC0uOTQgMi41IDQuMzMtMS45NCAxLjQ3Yy4wMS4xMi4wMS4yNC4wMS4zN3MwIC4yNC0uMDEuMzZ6TTEzIDE0YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzIDEuMzQgMyAzIDMgMy0xLjM0IDMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NTeXN0ZW1EYXlkcmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTZoNi41YTIuNSAyLjUgMCAwIDAgMC01aC0uMDVjLS4yNC0xLjY5LTEuNjktMy0zLjQ1LTMtMS40IDAtMi42LjgzLTMuMTYgMi4wMmgtLjE2QTIuOTk0IDIuOTk0IDAgMCAwIDYgMTNjMCAxLjY2IDEuMzQgMyAzIDN6TTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hhcmVMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMDIgMTkuOTN2Mi4wMmMyLjAxLS4yIDMuODQtMSA1LjMyLTIuMjFsLTEuNDItMS40M2E3Ljk0MSA3Ljk0MSAwIDAgMS0zLjkgMS42MnpNNC4wMyAxMmMwLTQuMDUgMy4wMy03LjQxIDYuOTUtNy45M1YyLjA1QzUuOTUgMi41OCAyLjAzIDYuODQgMi4wMyAxMmMwIDUuMTYgMy45MiA5LjQyIDguOTUgOS45NXYtMi4wMmMtMy45Mi0uNTItNi45NS0zLjg4LTYuOTUtNy45M3pNMTkuOTUgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMybC0xLjQzIDEuNDNjLjg2IDEuMSAxLjQ0IDIuNDMgMS42MiAzLjg5ek0xOC4zNCA0LjI2YTkuOTgxIDkuOTgxIDAgMCAwLTUuMzItMi4yMXYyLjAyYzEuNDYuMTggMi43OS43NiAzLjkgMS42MmwxLjQyLTEuNDN6TTE4LjMzIDE2LjlsMS40MyAxLjQyQTkuOTQ5IDkuOTQ5IDAgMCAwIDIxLjk3IDEzaC0yLjAyYTcuOTQxIDcuOTQxIDAgMCAxLTEuNjIgMy45elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMS4xQzE2IDguNjEgMTQuMSA3IDEyIDdzLTQgMS42MS00IDQuMWMwIDEuNjYgMS4zMyAzLjYzIDQgNS45IDIuNjctMi4yNyA0LTQuMjQgNC01Ljl6bS00IC45YTEuMDcxIDEuMDcxIDAgMCAxIDAtMi4xNEExLjA3MSAxLjA3MSAwIDAgMSAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcnRjdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDExLTYtNnY1SDhjLTIuNzYgMC01IDIuMjQtNSA1djRoMnYtNGMwLTEuNjUgMS4zNS0zIDMtM2g3djVsNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhcjBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2LjgzVjIwSDYuODNMMjAgNi44M00yMiAyIDIgMjJoMjBWMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXI0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMmgyMFYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhckFsdDFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE0aDN2Nkg1di02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhckFsdDJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE0aDN2Nkg1di02em02LTVoM3YxMWgtM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDRoM3YxNmgtM3pNNSAxNGgzdjZINXptNi01aDN2MTFoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGgydi04aC0ydjh6bTAgNGgydi0yaC0ydjJ6bS0yLTJ2MkgyTDIyIDJ2NmgtMlY2LjgzTDYuODMgMjBIMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4aDJ2LThoLTJ2OHptMCA0aDJ2LTJoLTJ2MnpNMiAyMmgxNlY4aDRWMkwyIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhck5vU2ltIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0tNjE4LTI4NzJINzgyVjcyOEgtNjE4ek0tMSAwaDI2djI0SC0xem0xIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTkgNWMwLTEuMS0uODktMi0xLjk5LTJoLTdMNy42NiA1LjM0IDE5IDE2LjY4IDE4Ljk5IDV6TTMuNjUgMy44OCAyLjM4IDUuMTUgNSA3Ljc3VjE5YzAgMS4xLjkgMiAyIDJoMTAuMDFjLjM1IDAgLjY3LS4xLjk2LS4yNmwxLjg4IDEuODggMS4yNy0xLjI3TDMuNjUgMy44OHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNLjAxIDBoMjR2MjRoLTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhck5vZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTNoLTl2OUgyTDIyIDJ2MTF6bS0xIDIuNDFMMTkuNTkgMTRsLTIuMDkgMi4wOUwxNS40MSAxNCAxNCAxNS40MWwyLjA5IDIuMDlMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyTnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDYuODNWMjBINi44M0wyMCA2LjgzTTIyIDIgMiAyMmgyMFYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDEtOC41OSA4LjU5TDIxIDE4LjE4VjF6TTQuNzcgNC41IDMuNSA1Ljc3bDYuMzYgNi4zNkwxIDIxaDE3LjczbDIgMkwyMiAyMS43MyA0Ljc3IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaTBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzMuMzMgMCA2LjQ5IDEuMDggOS4wOCAzLjA3TDEyIDE4LjE3bC05LjA4LTkuMUM1LjUxIDcuMDggOC42NyA2IDEyIDZtMC0yQzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpNEJhckxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk4IDExIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4bDYuMzUgNi4zNkwxMiAyMWwzLjA1LTMuMDVWMTVjMC0uNDUuMDktLjg4LjIzLTEuMjkuNTQtMS41NyAyLjAxLTIuNzEgMy43Ny0yLjcxaDIuOTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmk0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDEgMjEuNDkgMjMuNjQgN2MtLjQ1LS4zNC00LjkzLTQtMTEuNjQtNEM1LjI4IDMgLjgxIDYuNjYuMzYgN2wxMS42MyAxNC40OS4wMS4wMS4wMS0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlCYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxdi05aDguOTlMMjQgOC45OHpNMTkuNTkgMTRsLTIuMDkgMi4wOUwxNS40MSAxNCAxNCAxNS40MWwyLjA5IDIuMDlMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDEgMTkuNTkgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlDb25uZWN0ZWROb0ludGVybmV0NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjF2LTloOC45OUwyNCA4Ljk4ek0xOS41OSAxNGwtMi4wOSAyLjA5TDE1LjQxIDE0IDE0IDE1LjQxbDIuMDkgMi4wOUwxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MSAxOS41OSAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTQtMS41IDAtMi44OS4xOS00LjE1LjQ4TDE4LjE4IDEzLjggMjMuNjQgN3ptLTYuNiA4LjIyTDMuMjcgMS40NCAyIDIuNzJsMi4wNSAyLjA2QzEuOTEgNS43Ni41OSA2LjgyLjM2IDdsMTEuNjMgMTQuNDkuMDEuMDEuMDEtLjAxIDMuOS00Ljg2IDMuMzIgMy4zMiAxLjI3LTEuMjctMy40Ni0zLjQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyNEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhckNvbm5lY3RlZE5vSW50ZXJuZXQ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjFsNS01LjAxVjhoNS45MkMxOS45NyA1LjUxIDE2LjE2IDQgMTIgNHpNMTkgMThoMnYyaC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMGgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXJOdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0ek0yLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdMMTIgMTguMTdsLTkuMDgtOS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaW1DYXJkRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNCA4djEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYgMTUtNC00aDNWOS4wMkwxMyA5djRoM2wtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGxpdHNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNHY1SDZWNGgxMm0wLTJINmMtMS4xIDAtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTN2NUg2di01aDEybTAtMkg2Yy0xLjEgMC0yIC45LTIgMnY1YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c1Njb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA2SDlWNGgydjJ6bTQtMmgtMnYyaDJWNHpNOSAxNGgydi0ySDl2MnptMTAtNFY4aC0ydjJoMnptMCA0di0yaC0ydjJoMnptLTYgMGgydi0yaC0ydjJ6bTYtMTBoLTJ2MmgyVjR6bS02IDRWNmgtMnYyaDJ6bS02IDJWOGgyVjZIN1Y0SDV2MTZoMnYtOGgydi0ySDd6bTggMmgydi0yaC0ydjJ6bS00LTJ2Mmgydi0yaC0yek05IDh2MmgyVjhIOXptNCAyaDJWOGgtMnYyem0yLTR2MmgyVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNzaWRDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDUuNDcgMTIgMTIgNy42MiA3LjYyIDMgMTFWOC41Mkw3LjgzIDVsNC4zOCA0LjM4TDIxIDN2Mi40N3pNMjEgMTVoLTQuN2wtNC4xNyAzLjM0TDYgMTIuNDFsLTMgMi4xM1YxN2wyLjgtMiA2LjIgNiA1LTRoNHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcmFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjBoMjB2LTRIMnY0em0yLTNoMnYySDR2LTJ6TTIgNHY0aDIwVjRIMnptNCAzSDRWNWgydjJ6bS00IDdoMjB2LTRIMnY0em0yLTNoMnYySDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MyA4QzE2LjcyIDQuMTggMTEuODIgMi44NyA4IDUuMDdjLTEuNDEuODItMi40OCAyLTMuMTYgMy4zNy0uMTMtMi4yLjIyLTQuNCAxLjAyLTYuNDRIMy43NEMyLjIgNi40OSAyLjUyIDExLjU4IDUuMDcgMTZhNy45NiA3Ljk2IDAgMCAwIDQuODYgMy43MmMxLjk4LjUzIDQuMTYuMzEgNi4wNy0uNzkgMS40MS0uODIgMi40OC0yIDMuMTYtMy4zNy4xMyAyLjItLjIxIDQuNC0xLjAxIDYuNDRoMi4xMWMxLjUzLTQuNDkgMS4yMi05LjU4LTEuMzMtMTR6TTE1IDE3LjJBNi4wMTIgNi4wMTIgMCAwIDEgNi44IDE1Yy0uMTEtLjItLjIxLS40LS4zLS42LTEuMi0yLjc2LS4xNy02LjA2IDIuNS03LjYgMi44Ni0xLjY1IDYuNTQtLjY3IDguMiAyLjIuMTEuMi4yMS40LjMuNiAxLjIgMi43Ni4xNyA2LjA2LTIuNSA3LjZ6TTEyIDEwYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMm0wLTJjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdW1tYXJpemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDNINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjlsLTYtNnpNOCAxN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0wLTRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMC00Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTYgMVY0LjVsNS41IDUuNUgxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3lzdGVtU2VjdXJpdHlVcGRhdGVHb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxN0g3VjZoMTB2MTJ6bS0xLTcuOTUtMS40MS0xLjQxLTMuNTQgMy41NC0xLjQxLTEuNDEtMS40MSAxLjQxTDExLjA1IDE1IDE2IDEwLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTeXN0ZW1TZWN1cml0eVVwZGF0ZVdhcm5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2MmgtMnpNMTEgN2gydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMS45OS45LTEuOTkgMnYxOGMwIDEuMS44OSAyIDEuOTkgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE3SDdWNmgxMHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3lzdGVtU2VjdXJpdHlVcGRhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM3YxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ6bTEyIDE1SDdWNmgxMHYxMnptLTEtNmgtM1Y4aC0ydjRIOGw0IDQgNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bS0zLjA2IDE2TDcuNCAxNC40NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNCAxLjQxIDEuNDFMMTAuOTQgMTh6TTEzIDlWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGhlcm1vc3RhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djhjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wOS0yLTR6bS00LTJWNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MWgtMXYxaDF2MmgtMXYxaDF2MWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZXIxMFNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDh2OGgtM1Y4aDNtMC0zaC0zQzguMzQgNSA3IDYuMzQgNyA4djhjMCAxLjY2IDEuMzQgMyAzIDNoM2MxLjY2IDAgMy0xLjM0IDMtM1Y4YzAtMS42Ni0xLjM0LTMtMy0zek0xIDhoMnYxMWgzVjVIMXYzem0xNy41IDNjLS44MyAwLTEuNS42OC0xLjUgMS41djJjMCAuODIuNjcgMS41IDEuNSAxLjVIMjF2MWgtNHYyaDQuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTJjMC0uODMtLjY3LTEuNS0xLjUtMS41SDE5di0xaDR2LTJoLTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZXIzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTF2MmgtNHYxaDIuNWMuODMgMCAxLjUuNjggMS41IDEuNXYyYzAgLjgzLS42NyAxLjUtMS41IDEuNUgxNXYtMmg0di0xaC0yLjVjLS44MiAwLTEuNS0uNjgtMS41LTEuNXYtMmMwLS44Mi42OC0xLjUgMS41LTEuNUgyMXpNNCA1djNoNnYyLjVINHYzaDZWMTZINHYzaDZjMS42NiAwIDMtMS4zNCAzLTN2LTEuOWEyLjEgMi4xIDAgMCAwLTIuMS0yLjFBMi4xIDIuMSAwIDAgMCAxMyA5LjlWOGMwLTEuNjYtMS4zNC0zLTMtM0g0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdW5nc3RlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTloMnYzaC0yek0yIDExaDN2Mkgyek0xOSAxMWgzdjJoLTN6TTE1Ljg5NCAxNy44MDFsMS40MDctMS40MDcgMi4xMjIgMi4xMjItMS40MDggMS40MDd6TTQuNTg0IDE4LjUwOWwyLjEyMS0yLjEyMiAxLjQwOCAxLjQwNy0yLjEyMiAyLjEyMnpNMTUgOC4wMlYzSDl2NS4wMmMtMS4yMS45Mi0yIDIuMzUtMiAzLjk4IDAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVjMC0xLjYzLS43OS0zLjA2LTItMy45OHpNMTEgNWgydjIuMWMtLjMyLS4wNi0uNjYtLjEtMS0uMXMtLjY4LjA0LTEgLjFWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVXNiT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOGg0djRoLTF2MmMwIC4zNC0uMDguNjYtLjIzLjk0TDE2IDEzLjE3VjEyaC0xVjh6bS00IC4xNyAyIDJWNmgybC0zLTQtMyA0aDJ2Mi4xN3pNMTMgMTZ2Mi4yOGMuNi4zNCAxIC45OCAxIDEuNzIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjc0LjQtMS4zNyAxLTEuNzJWMTZIOGMtMS4xMSAwLTItLjg5LTItMnYtMi4yOGMtLjYtLjM0LTEtLjk4LTEtMS43MiAwLS41OS4yNi0xLjEzLjY4LTEuNDlMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MS02LjYtNi42SDEzem0tMi0ydi0uMTdsLTIuNTEtMi41MWMtLjE0LjE2LS4zMS4yOS0uNDkuNFYxNGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVc2IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3djRoMXYyaC0zVjVoMmwtMy00LTMgNGgydjhIOHYtMi4wN2MuNy0uMzcgMS4yLTEuMDggMS4yLTEuOTMgMC0xLjIxLS45OS0yLjItMi4yLTIuMi0xLjIxIDAtMi4yLjk5LTIuMiAyLjIgMCAuODUuNSAxLjU2IDEuMiAxLjkzVjEzYzAgMS4xMS44OSAyIDIgMmgzdjMuMDVjLS43MS4zNy0xLjIgMS4xLTEuMiAxLjk1YTIuMiAyLjIgMCAwIDAgNC40IDBjMC0uODUtLjQ5LTEuNTgtMS4yLTEuOTVWMTVoM2MxLjExIDAgMi0uODkgMi0ydi0yaDFWN2gtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2FsbHBhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA0aDdWMkg0Yy0xLjEgMC0yIC45LTIgMnY3aDJWNHptNiA5LTQgNWgxMmwtMy00LTIuMDMgMi43MUwxMCAxM3ptNy00LjVjMC0uODMtLjY3LTEuNS0xLjUtMS41UzE0IDcuNjcgMTQgOC41cy42NyAxLjUgMS41IDEuNVMxNyA5LjMzIDE3IDguNXpNMjAgMmgtN3YyaDd2N2gyVjRjMC0xLjEtLjktMi0yLTJ6bTAgMThoLTd2Mmg3YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTQgMTNIMnY3YzAgMS4xLjkgMiAyIDJoN3YtMkg0di03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTggMTRIMjJoLS4wMnpNNS4zNSAxM2MxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzEgMXYtMmMtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDF2MmMxLjkgMCAyLjE3LTEgMy4zNS0xem0xMy4zMiAyYy0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxLTEuMjQgMC0xLjM4LTEtMy4zMy0xLTEuOTUgMC0yLjEgMS0zLjM0IDF2MmMxLjk1IDAgMi4xMS0xIDMuMzQtMSAxLjI0IDAgMS4zOCAxIDMuMzMgMSAxLjk1IDAgMi4xLTEgMy4zNC0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTQgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxdi0yYy0xLjI0IDAtMS4zOC0xLTMuMzMtMXpNNS4zNSA5YzEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQuOTggMy4zMSAxVjhjLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xQzMuMzggNyAzLjI0IDggMiA4djJjMS45IDAgMi4xNy0xIDMuMzUtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lkZ2V0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEzdjhoOHYtOGgtOHpNMyAyMWg4di04SDN2OHpNMyAzdjhoOFYzSDN6bTEzLjY2LTEuMzFMMTEgNy4zNCAxNi42NiAxM2w1LjY2LTUuNjYtNS42Ni01LjY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUzIDE3LjQ2IDEyIDIxbC0zLjUzLTMuNTRjLjktLjkgMi4xNS0xLjQ2IDMuNTMtMS40NnMyLjYzLjU2IDMuNTMgMS40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaTJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwYzMuMDMgMCA1Ljc4IDEuMjMgNy43NiAzLjIybC0yLjEyIDIuMTJBNy45NjcgNy45NjcgMCAwIDAgMTIgMTNjLTIuMiAwLTQuMi45LTUuNjQgMi4zNWwtMi4xMi0yLjEyQzYuMjIgMTEuMjMgOC45NyAxMCAxMiAxMHptMCA2Yy0xLjM4IDAtMi42My41Ni0zLjUzIDEuNDZMMTIgMjFsMy41My0zLjU0QTQuOTggNC45OCAwIDAgMCAxMiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUNhbGxpbmczIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi40OSAzYy0yLjIxIDAtNC4yMS45LTUuNjYgMi4zNGwxLjA2IDEuMDZhNi40NyA2LjQ3IDAgMCAxIDkuMTggMGwxLjA2LTEuMDZBNy45MzIgNy45MzIgMCAwIDAgMTYuNDkgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMDMgNy40NmE1LjAyMiA1LjAyMiAwIDAgMC03LjA4IDBsMS4wNiAxLjA2Yy42My0uNjMgMS41MS0xLjAzIDIuNDctMS4wM3MxLjg0LjM5IDIuNDcgMS4wM2wxLjA4LTEuMDZ6TTE1LjA4IDkuNTkgMTYuNDkgMTFsMS40MS0xLjQxYy0uMzYtLjM3LS44Ni0uNTktMS40MS0uNTlzLTEuMDUuMjItMS40MS41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNjMgMTQuNC0yLjUyIDIuNWMtMi41LTEuNDMtNC41Ny0zLjUtNi02bDIuNS0yLjUyYy4yMy0uMjQuMzMtLjU3LjI3LS45TDkuMTMgMy44Yy0uMDktLjQ2LS41LS44LS45OC0uOEg0Yy0uNTYgMC0xLjAzLjQ3LTEgMS4wMy4xNyAyLjg5IDEuMDUgNS42IDIuNDMgNy45NyAxLjU4IDIuNzMgMy44NSA0Ljk5IDYuNTcgNi41NyAyLjM3IDEuMzcgNS4wOCAyLjI2IDcuOTcgMi40My41Ni4wMyAxLjAzLS40NCAxLjAzLTF2LTQuMTVjMC0uNDgtLjM0LS44OS0uOC0uOThsLTMuNjctLjczYS45ODUuOTg1IDAgMCAwLS45LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpQ2hhbm5lbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNjLTIuNTEgMC0zLjc3IDUuNjEtNC40IDEwLjU3QzEwLjc5IDEwLjY2IDkuNjEgOCA4IDggNC40MyA4IDMgMjEgMyAyMWgyLjAxYy42MS01LjI3IDItOS44MiAyLjk5LTEwLjg3Ljk4IDEuMDUgMi4zOCA1LjYxIDIuOTkgMTAuODdIMTNjLjUtMi41MyAyLTYgMy02czIuNSAzLjUzIDMgNmgycy0uNS0xOC01LTE4em0wIDEwYy0uOTkgMC0xLjgyLjYyLTIuNSAxLjUuNTctNC43NyAxLjU0LTguNjIgMi41LTkuNDQuOTcuODEgMS45MSA0LjY3IDIuNDkgOS40M0MxNy44MSAxMy42MiAxNi45OCAxMyAxNiAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUZpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNGMwLTMuMzYgMi42NC02IDYtNiAyLjIgMCA0LjA4IDEuMTMgNS4xMyAyLjg2TDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxbDEuODYtMS44N0MxMi4xNCAxOC4wOSAxMSAxNi4yIDExIDE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNGMwLTIuMjQtMS43Ni00LTQtNHMtNCAxLjc2LTQgNCAxLjc2IDQgNCA0Yy43NSAwIDEuNDQtLjIxIDIuMDMtLjU2TDIxLjU5IDIwIDIzIDE4LjU5bC0yLjU2LTIuNTZjLjM1LS41OS41Ni0xLjI4LjU2LTIuMDN6bS02IDBjMC0xLjEyLjg4LTIgMi0yczIgLjg4IDIgMi0uODggMi0yIDItMi0uODgtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTggMTEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNi4zNSA2LjM2TDEyIDIxbDMuMDUtMy4wNVYxNWMwLS40NS4wOS0uODguMjMtMS4yOS41NC0xLjU3IDIuMDEtMi43MSAzLjc3LTIuNzFoMi45M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTZ2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaVBhc3N3b3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTl2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXptMi0xMC4wMi0yLjEyIDIuMTNDMTkuMzUgOC41NyAxNS44NSA3IDEyIDdzLTcuMzUgMS41Ny05Ljg4IDQuMTFMMCA4Ljk4QzMuMDcgNS45IDcuMzEgNCAxMiA0czguOTMgMS45IDEyIDQuOTh6TTEyIDEwYzMuMDMgMCA1Ljc4IDEuMjMgNy43NiAzLjIybC0yLjEyIDIuMTJBNy45NjcgNy45NjcgMCAwIDAgMTIgMTNjLTIuMiAwLTQuMi45LTUuNjQgMi4zNWwtMi4xMi0yLjEyQzYuMjIgMTEuMjMgOC45NyAxMCAxMiAxMHptMy41MyA3LjQ2TDEyIDIxbC0zLjUzLTMuNTRjLjktLjkgMi4xNS0xLjQ2IDMuNTMtMS40NnMyLjYzLjU2IDMuNTMgMS40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaVRldGhlcmluZ0Vycm9yUm91bmRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMy4zMSAwLTYgMi42OS02IDYgMCAxLjY2LjY4IDMuMTUgMS43NiA0LjI0bDEuNDItMS40MkEzLjkzNCAzLjkzNCAwIDAgMSA4IDEzYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjExLS40NSAyLjEtMS4xOCAyLjgybDEuNDIgMS40MkE2LjAwMyA2LjAwMyAwIDAgMCAxOCAxM2MwLTMuMzEtMi42OS02LTYtNnptMC00QzYuNDggMyAyIDcuNDggMiAxM2MwIDIuNzYgMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJBNy45NCA3Ljk0IDAgMCAxIDQgMTNjMC00LjQyIDMuNTgtOCA4LTggMi41MyAwIDQuNzggMS4xNyA2LjI0IDNoMi40MkMxOC45MyA1LjAxIDE1LjcgMyAxMiAzem0wIDhjLTEuMSAwLTIgLjktMiAyIDAgLjU1LjIzIDEuMDUuNTkgMS40MS4zNi4zNi44Ni41OSAxLjQxLjU5czEuMDUtLjIzIDEuNDEtLjU5Yy4zNi0uMzYuNTktLjg2LjU5LTEuNDEgMC0xLjEtLjktMi0yLTJ6bTgtMWgydjZoLTJ2LTZ6bTAgOGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlUZXRoZXJpbmdFcnJvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMy4zMSAwLTYgMi42OS02IDYgMCAxLjY2LjY4IDMuMTUgMS43NiA0LjI0bDEuNDItMS40MkEzLjkzNCAzLjkzNCAwIDAgMSA4IDEzYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjExLS40NSAyLjEtMS4xOCAyLjgybDEuNDIgMS40MkE2LjAwMyA2LjAwMyAwIDAgMCAxOCAxM2MwLTMuMzEtMi42OS02LTYtNnptMC00QzYuNDggMyAyIDcuNDggMiAxM2MwIDIuNzYgMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJBNy45NCA3Ljk0IDAgMCAxIDQgMTNjMC00LjQyIDMuNTgtOCA4LTggMi41MyAwIDQuNzggMS4xNyA2LjI0IDNoMi40MkMxOC45MyA1LjAxIDE1LjcgMyAxMiAzem0wIDhjLTEuMSAwLTIgLjktMiAyIDAgLjU1LjIzIDEuMDUuNTkgMS40MS4zNi4zNi44Ni41OSAxLjQxLjU5czEuMDUtLjIzIDEuNDEtLjU5Yy4zNi0uMzYuNTktLjg2LjU5LTEuNDEgMC0xLjEtLjktMi0yLTJ6bTgtMWgydjZoLTJ2LTZ6bTAgOGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlUZXRoZXJpbmdPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjJsMi42OSAyLjY5QTkuOTU4IDkuOTU4IDAgMCAwIDIgMTNjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyYTcuOTU3IDcuOTU3IDAgMCAxLS44NC0xMC4zMWwxLjQzIDEuNDNhNi4wMDMgNi4wMDMgMCAwIDAgLjgyIDcuNDdsMS40Mi0xLjQyQTMuOTM0IDMuOTM0IDAgMCAxIDggMTNjMC0uNjMuMTUtMS4yMy40MS0xLjc2bDEuNjEgMS42MWMwIC4wNS0uMDIuMS0uMDIuMTUgMCAuNTUuMjMgMS4wNS41OSAxLjQxLjM2LjM2Ljg2LjU5IDEuNDEuNTkuMDUgMCAuMS0uMDEuMTYtLjAybDcuNjIgNy42MiAxLjQxLTEuNDFMMi44MSAyLjgxek0xNy43IDE0Ljg3Yy4xOS0uNTkuMy0xLjIyLjMtMS44NyAwLTMuMzEtMi42OS02LTYtNi0uNjUgMC0xLjI4LjEtMS44Ny4zbDEuNzEgMS43MUMxMS44OSA5IDExLjk1IDkgMTIgOWMyLjIxIDAgNCAxLjc5IDQgNCAwIC4wNSAwIC4xMS0uMDEuMTZsMS43MSAxLjcxek0xMiA1YzQuNDIgMCA4IDMuNTggOCA4IDAgMS4yMi0uMjcgMi4zNy0uNzcgMy40bDEuNDkgMS40OUE5Ljk1MyA5Ljk1MyAwIDAgMCAyMiAxM2MwLTUuNTItNC40OC0xMC0xMC0xMC0xLjc4IDAtMy40NC40Ni00Ljg5IDEuMjhsMS40OCAxLjQ4QzkuNjMgNS4yNyAxMC43OCA1IDEyIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlUZXRoZXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTYgMmMwLTMuMzEtMi42OS02LTYtNnMtNiAyLjY5LTYgNmMwIDIuMjIgMS4yMSA0LjE1IDMgNS4xOWwxLTEuNzRjLTEuMTktLjctMi0xLjk3LTItMy40NSAwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMS40OC0uODEgMi43NS0yIDMuNDVsMSAxLjc0YzEuNzktMS4wNCAzLTIuOTcgMy01LjE5ek0xMiAzQzYuNDggMyAyIDcuNDggMiAxM2MwIDMuNyAyLjAxIDYuOTIgNC45OSA4LjY1bDEtMS43M0M1LjYxIDE4LjUzIDQgMTUuOTYgNCAxM2MwLTQuNDIgMy41OC04IDgtOHM4IDMuNTggOCA4YzAgMi45Ni0xLjYxIDUuNTMtNCA2LjkybDEgMS43M2MyLjk5LTEuNzMgNS00Ljk1IDUtOC42NSAwLTUuNTItNC40OC0xMC0xMC0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgOS45OWgydjdINnptOCAzaDJ2NGgtMnptLTQtNmgydjEwaC0yek0yMCA3VjRoLTJ2M2gtM3YyaDN2M2gyVjloM1Y3em0tMiAxMkg0VjVoMTJWM0g0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01aC0ydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk5IDRjMC0xLjEtLjg5LTItMS45OS0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0LS4wMS0xOHpNMTcgMTFoLTR2NGgtMnYtNEg3VjloNFY1aDJ2NGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsaWduSG9yaXpvbnRhbENlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDJoMnY1aDh2M2gtOHY0aDV2M2gtNXY1aC0ydi01SDZ2LTNoNXYtNEgzVjdoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25Ib3Jpem9udGFsTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjJIMlYyaDJ2MjB6TTIyIDdINnYzaDE2Vjd6bS02IDdINnYzaDEwdi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGlnbkhvcml6b250YWxSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJoMnYyMGgtMlYyek0yIDEwaDE2VjdIMnYzem02IDdoMTB2LTNIOHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGlnblZlcnRpY2FsQm90dG9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMjJIMnYtMmgyMHYyek0xMCAySDd2MTZoM1Yyem03IDZoLTN2MTBoM1Y4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGlnblZlcnRpY2FsQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTFoLTVWNmgtM3Y1aC00VjNIN3Y4SDEuODR2Mkg3djhoM3YtOGg0djVoM3YtNWg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGlnblZlcnRpY2FsVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMnYySDJWMmgyMHpNNyAyMmgzVjZIN3YxNnptNy02aDNWNmgtM3YxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJlYUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxM3Y3aDE4di0xLjVsLTktN0w4IDE3bC01LTR6bTAtNiA0IDMgNS03IDUgNGg0djguOTdsLTkuNC03LjMxLTMuOTggNS40OEwzIDEwLjQ0Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF0dGFjaEZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDZ2MTEuNWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNFY1YTIuNSAyLjUgMCAwIDEgNSAwdjEwLjVjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTFWNkgxMHY5LjVhMi41IDIuNSAwIDAgMCA1IDBWNWMwLTIuMjEtMS43OS00LTQtNFM3IDIuNzkgNyA1djEyLjVjMCAzLjA0IDIuNDYgNS41IDUuNSA1LjVzNS41LTIuNDYgNS41LTUuNVY2aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF0dGFjaE1vbmV5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOCAxMC45Yy0yLjI3LS41OS0zLTEuMi0zLTIuMTUgMC0xLjA5IDEuMDEtMS44NSAyLjctMS44NSAxLjc4IDAgMi40NC44NSAyLjUgMi4xaDIuMjFjLS4wNy0xLjcyLTEuMTItMy4zLTMuMjEtMy44MVYzaC0zdjIuMTZjLTEuOTQuNDItMy41IDEuNjgtMy41IDMuNjEgMCAyLjMxIDEuOTEgMy40NiA0LjcgNC4xMyAyLjUuNiAzIDEuNDggMyAyLjQxIDAgLjY5LS40OSAxLjc5LTIuNyAxLjc5LTIuMDYgMC0yLjg3LS45Mi0yLjk4LTIuMWgtMi4yYy4xMiAyLjE5IDEuNzYgMy40MiAzLjY4IDMuODNWMjFoM3YtMi4xNWMxLjk1LS4zNyAzLjUtMS41IDMuNS0zLjU1IDAtMi44NC0yLjQzLTMuODEtNC43LTQuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0dyYXBoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMDYgOS45NCAxMiA5bDIuMDYtLjk0TDE1IDZsLjk0IDIuMDZMMTggOWwtMi4wNi45NEwxNSAxMmwtLjk0LTIuMDZ6TTQgMTRsLjk0LTIuMDZMNyAxMWwtMi4wNi0uOTRMNCA4bC0uOTQgMi4wNkwxIDExbDIuMDYuOTRMNCAxNHptNC41LTUgMS4wOS0yLjQxTDEyIDUuNSA5LjU5IDQuNDEgOC41IDIgNy40MSA0LjQxIDUgNS41bDIuNDEgMS4wOUw4LjUgOXptLTQgMTEuNSA2LTYuMDEgNCA0TDIzIDguOTNsLTEuNDEtMS40MS03LjA5IDcuOTctNC00TDMgMTlsMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFyQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloNHYxMUg0ek0xNiAxM2g0djdoLTR6TTEwIDRoNHYxNmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVyQWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptOCAxNkg1di02aDZ2NnptMC04SDVWNWg2djZ6bTggOGgtNnYtNmg2djZ6bTAtOGgtNlY1aDZ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVyQm90dG9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMUg3djJoMnYtMnptNCA0aC0ydjJoMnYtMnpNOSAzSDd2MmgyVjN6bTQgOGgtMnYyaDJ2LTJ6TTUgM0gzdjJoMlYzem04IDRoLTJ2MmgyVjd6bTQgNGgtMnYyaDJ2LTJ6bS00LThoLTJ2MmgyVjN6bTQgMGgtMnYyaDJWM3ptMiAxMGgydi0yaC0ydjJ6bTAgNGgydi0yaC0ydjJ6TTUgN0gzdjJoMlY3em0xNC00djJoMlYzaC0yem0wIDZoMlY3aC0ydjJ6TTUgMTFIM3YyaDJ2LTJ6TTMgMjFoMTh2LTJIM3Yyem0yLTZIM3YyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlckNsZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1aDJWM0g3djJ6bTAgOGgydi0ySDd2MnptMCA4aDJ2LTJIN3Yyem00LTRoMnYtMmgtMnYyem0wIDRoMnYtMmgtMnYyem0tOCAwaDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6bTAtNGgydi0ySDN2MnptMC00aDJWN0gzdjJ6bTAtNGgyVjNIM3Yyem04IDhoMnYtMmgtMnYyem04IDRoMnYtMmgtMnYyem0wLTRoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0wLTEyaDJWN2gtMnYyem0tOCAwaDJWN2gtMnYyem04LTZ2MmgyVjNoLTJ6bS04IDJoMlYzaC0ydjJ6bTQgMTZoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyem0wLThoMlYzaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlckNvbG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMjRIMnYtNGgyMHY0ek0xMy4wNiA1LjE5bDMuNzUgMy43NUw3Ljc1IDE4SDR2LTMuNzVsOS4wNi05LjA2em00LjgyIDIuNjgtMy43NS0zLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMSAxLjQxIDBsMi4zNCAyLjM0Yy4zOS4zOS4zOSAxLjAyIDAgMS40MWwtMS44MyAxLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgydi0ySDN2MnpNNSA3SDN2MmgyVjd6TTMgMTdoMnYtMkgzdjJ6bTQgNGgydi0ySDd2MnpNNSAzSDN2MmgyVjN6bTQgMEg3djJoMlYzem04IDBoLTJ2MmgyVjN6bS00IDRoLTJ2MmgyVjd6bTAtNGgtMnYyaDJWM3ptNiAxNGgydi0yaC0ydjJ6bS04IDRoMnYtMmgtMnYyem0tOC04aDE4di0ySDN2MnpNMTkgM3YyaDJWM2gtMnptMCA2aDJWN2gtMnYyem0tOCA4aDJ2LTJoLTJ2MnptNCA0aDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVySW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDJ2LTJIM3Yyem00IDBoMnYtMkg3djJ6TTUgN0gzdjJoMlY3ek0zIDE3aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3pNNSAzSDN2MmgyVjN6bTEyIDBoLTJ2MmgyVjN6bTIgNmgyVjdoLTJ2MnptMC02djJoMlYzaC0yem0tNCAxOGgydi0yaC0ydjJ6TTEzIDNoLTJ2OEgzdjJoOHY4aDJ2LThoOHYtMmgtOFYzem02IDE4aDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVyTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIxaDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnptMC0xMmgyVjNoLTJ2MnptMCA0aDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyem0tNCA4aDJ2LTJIN3Yyek03IDVoMlYzSDd2MnptMCA4aDJ2LTJIN3Yyem0tNCA4aDJWM0gzdjE4ek0xOSA5aDJWN2gtMnYyem0tNCAxMmgydi0yaC0ydjJ6bTQtNGgydi0yaC0ydjJ6bTAtMTR2MmgyVjNoLTJ6bTAgMTBoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0tNC04aDJ2LTJoLTJ2MnptMC04aDJWM2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJPdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2MmgyVjd6bTAgNGgtMnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6TTMgM3YxOGgxOFYzSDN6bTE2IDE2SDVWNWgxNHYxNHptLTYtNGgtMnYyaDJ2LTJ6bS00LTRIN3YyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlclJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMWgydi0ySDd2MnpNMyA1aDJWM0gzdjJ6bTQgMGgyVjNIN3Yyem0wIDhoMnYtMkg3djJ6bS00IDhoMnYtMkgzdjJ6bTggMGgydi0yaC0ydjJ6bS04LThoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTggOGgydi0yaC0ydjJ6bTQtNGgydi0yaC0ydjJ6bTQtMTB2MThoMlYzaC0yem0tNCAxOGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6bS00IDhoMnYtMmgtMnYyem0wLThoMlYzaC0ydjJ6bTAgNGgyVjdoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVyU3R5bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6TTcgMjFoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTgtNGgydi0yaC0ydjJ6bTAtNGgydi0yaC0ydjJ6TTMgM3YxOGgyVjVoMTZWM0gzem0xNiA2aDJWN2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJUb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIxaDJ2LTJIN3Yyem0wLThoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTAgOGgydi0yaC0ydjJ6bS04LTRoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJ2LTJIM3Yyem0wLTRoMlY3SDN2MnptOCA4aDJ2LTJoLTJ2MnptOC04aDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyek0zIDN2MmgxOFYzSDN6bTE2IDE0aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6TTExIDloMlY3aC0ydjJ6bTggMTJoMnYtMmgtMnYyem0tNC04aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVyVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDloMlY3SDN2MnptMC00aDJWM0gzdjJ6bTQgMTZoMnYtMkg3djJ6bTAtOGgydi0ySDd2MnptLTQgMGgydi0ySDN2MnptMCA4aDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6TTcgNWgyVjNIN3Yyem0xMiAxMmgydi0yaC0ydjJ6bS04IDRoMlYzaC0ydjE4em04IDBoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyem0wLTEwdjJoMlYzaC0yem0wIDZoMlY3aC0ydjJ6bS00LTRoMlYzaC0ydjJ6bTAgMTZoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCdWJibGVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy4yXCIsXCJjeVwiOlwiMTQuNFwiLFwiclwiOlwiMy4yXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTQuOFwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuMlwiLFwiY3lcIjpcIjguOFwiLFwiclwiOlwiNC44XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbmRsZXN0aWNrQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRIN3YySDV2MTJoMnYyaDJ2LTJoMlY2SDl6TTE5IDhoLTJWNGgtMnY0aC0ydjdoMnY1aDJ2LTVoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hlY2tsaXN0UnRsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN0gydjJoOVY3em0wIDhIMnYyaDl2LTJ6bTUuMzQtNEwxMi44IDcuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjRMMjIgNS4zNCAxNi4zNCAxMXptMCA4LTMuNTQtMy41NCAxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNEwyMiAxMy4zNCAxNi4zNCAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hlY2tsaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN2gtOXYyaDlWN3ptMCA4aC05djJoOXYtMnpNNS41NCAxMSAyIDcuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDUuNTQgMTF6bTAgOEwyIDE1LjQ2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0IDEuNDEgMS40MUw1LjU0IDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRhQXJyYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0djJoM3YxMmgtM3YyaDVWNHpNNCAyMGg1di0ySDZWNmgzVjRINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YU9iamVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgN3YyYzAgLjU1LS40NSAxLTEgMUgydjRoMWMuNTUgMCAxIC40NSAxIDF2MmMwIDEuNjUgMS4zNSAzIDMgM2gzdi0ySDdjLS41NSAwLTEtLjQ1LTEtMXYtMmMwLTEuMy0uODQtMi40Mi0yLTIuODN2LS4zNEM1LjE2IDExLjQyIDYgMTAuMyA2IDlWN2MwLS41NS40NS0xIDEtMWgzVjRIN0M1LjM1IDQgNCA1LjM1IDQgN3pNMjEgMTBjLS41NSAwLTEtLjQ1LTEtMVY3YzAtMS42NS0xLjM1LTMtMy0zaC0zdjJoM2MuNTUgMCAxIC40NSAxIDF2MmMwIDEuMy44NCAyLjQyIDIgMi44M3YuMzRjLTEuMTYuNDEtMiAxLjUyLTIgMi44M3YyYzAgLjU1LS40NSAxLTEgMWgtM3YyaDNjMS42NSAwIDMtMS4zNSAzLTN2LTJjMC0uNTUuNDUtMSAxLTFoMXYtNGgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJhZ0hhbmRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDlINHYyaDE2Vjl6TTQgMTVoMTZ2LTJINHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcmF3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODUgMTAuMzkgMS4wNi0xLjA2Yy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTguNSA1LjA5Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtMS4wNiAxLjA2IDQuMjQgNC4yNHptLTUuNjYtMi44M0w0IDE2Ljc2VjIxaDQuMjRsOS4xOS05LjE5LTQuMjQtNC4yNXpNMTkgMTcuNWMwIDIuMTktMi41NCAzLjUtNSAzLjUtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWMxLjU0IDAgMy0uNzMgMy0xLjUgMC0uNDctLjQ4LS44Ny0xLjIzLTEuMmwxLjQ4LTEuNDhjMS4wNy42MyAxLjc1IDEuNDcgMS43NSAyLjY4ek00LjU4IDEzLjM1QzMuNjEgMTIuNzkgMyAxMi4wNiAzIDExYzAtMS44IDEuODktMi42MyAzLjU2LTMuMzZDNy41OSA3LjE4IDkgNi41NiA5IDZjMC0uNDEtLjc4LTEtMi0xLTEuMjYgMC0xLjguNjEtMS44My42NC0uMzUuNDEtLjk4LjQ2LTEuNC4xMmEuOTkyLjk5MiAwIDAgMS0uMTUtMS4zOEMzLjczIDQuMjQgNC43NiAzIDcgM3M0IDEuMzIgNCAzYzAgMS44Ny0xLjkzIDIuNzItMy42NCAzLjQ3QzYuNDIgOS44OCA1IDEwLjUgNSAxMWMwIC4zMS40My42IDEuMDcuODZsLTEuNDkgMS40OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWRpdE5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEwaDExdjJIM3YtMnptMC0yaDExVjZIM3Yyem0wIDhoN3YtMkgzdjJ6bTE1LjAxLTMuMTMuNzEtLjcxYS45OTYuOTk2IDAgMCAxIDEuNDEgMGwuNzEuNzFjLjM5LjM5LjM5IDEuMDIgMCAxLjQxbC0uNzEuNzEtMi4xMi0yLjEyem0tLjcxLjcxLTUuMyA1LjNWMjFoMi4xMmw1LjMtNS4zLTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0QWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE1djJoMTB2LTJIN3ptLTQgNmgxOHYtMkgzdjJ6bTAtOGgxOHYtMkgzdjJ6bTQtNnYyaDEwVjdIN3pNMyAzdjJoMThWM0gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRBbGlnbkp1c3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDE4di0ySDN2MnptMC00aDE4di0ySDN2MnptMC00aDE4di0ySDN2MnptMC00aDE4VjdIM3Yyem0wLTZ2MmgxOFYzSDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdEFsaWduTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE1SDN2MmgxMnYtMnptMC04SDN2MmgxMlY3ek0zIDEzaDE4di0ySDN2MnptMCA4aDE4di0ySDN2MnpNMyAzdjJoMThWM0gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRBbGlnblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgxOHYtMkgzdjJ6bTYtNGgxMnYtMkg5djJ6bS02LTRoMTh2LTJIM3Yyem02LTRoMTJWN0g5djJ6TTMgM3YyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0Qm9sZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjYgMTAuNzljLjk3LS42NyAxLjY1LTEuNzcgMS42NS0yLjc5IDAtMi4yNi0xLjc1LTQtNC00SDd2MTRoNy4wNGMyLjA5IDAgMy43MS0xLjcgMy43MS0zLjc5IDAtMS41Mi0uODYtMi44Mi0yLjE1LTMuNDJ6TTEwIDYuNWgzYy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVoLTN2LTN6bTMuNSA5SDEwdi0zaDMuNWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMjcgNSAyIDYuMjdsNi45NyA2Ljk3TDYuNSAxOWgzbDEuNTctMy42NkwxNi43MyAyMSAxOCAxOS43MyAzLjU1IDUuMjcgMy4yNyA1ek02IDV2LjE4TDguODIgOGgyLjRsLS43MiAxLjY4IDIuMSAyLjFMMTQuMjEgOEgyMFY1SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdENvbG9yRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU2IDguOTQgNy42MiAwIDYuMjEgMS40MWwyLjM4IDIuMzgtNS4xNSA1LjE1YTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsNS41IDUuNWMuMjkuMjkuNjguNDQgMS4wNi40NHMuNzctLjE1IDEuMDYtLjQ0bDUuNS01LjVjLjU5LS41OC41OS0xLjUzIDAtMi4xMnpNNS4yMSAxMCAxMCA1LjIxIDE0Ljc5IDEwSDUuMjF6TTE5IDExLjVzLTIgMi4xNy0yIDMuNWMwIDEuMS45IDIgMiAyczItLjkgMi0yYzAtMS4zMy0yLTMuNS0yLTMuNXpNMiAyMGgyMHY0SDJ2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdENvbG9yUmVzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE0YzAtNC02LTEwLjgtNi0xMC44cy0xLjMzIDEuNTEtMi43MyAzLjUybDguNTkgOC41OWMuMDktLjQyLjE0LS44Ni4xNC0xLjMxem0tLjg4IDMuMTJMMTIuNSAxMi41IDUuMjcgNS4yNyA0IDYuNTVsMy4zMiAzLjMyQzYuNTUgMTEuMzIgNiAxMi43OSA2IDE0YzAgMy4zMSAyLjY5IDYgNiA2IDEuNTIgMCAyLjktLjU3IDMuOTYtMS41bDIuNjMgMi42MyAxLjI3LTEuMjctMi43NC0yLjc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRDb2xvclRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIwaDIwdjRIMnYtNHptMy40OS0zaDIuNDJsMS4yNy0zLjU4aDUuNjVMMTYuMDkgMTdoMi40MkwxMy4yNSAzaC0yLjVMNS40OSAxN3ptNC40Mi01LjYxIDIuMDMtNS43OWguMTJsMi4wMyA1Ljc5SDkuOTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdEluZGVudERlY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTdoMTB2LTJIMTF2MnptLTgtNSA0IDRWOGwtNCA0em0wIDloMTh2LTJIM3Yyek0zIDN2MmgxOFYzSDN6bTggNmgxMFY3SDExdjJ6bTAgNGgxMHYtMkgxMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRJbmRlbnRJbmNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTJIM3Yyek0zIDh2OGw0LTQtNC00em04IDloMTB2LTJIMTF2MnpNMyAzdjJoMThWM0gzem04IDZoMTBWN0gxMXYyem0wIDRoMTB2LTJIMTF2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0SXRhbGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNHYzaDIuMjFsLTMuNDIgOEg2djNoOHYtM2gtMi4yMWwzLjQyLThIMThWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0TGluZVNwYWNpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDdoMi41TDUgMy41IDEuNSA3SDR2MTBIMS41TDUgMjAuNSA4LjUgMTdINlY3em00LTJ2MmgxMlY1SDEwem0wIDE0aDEydi0ySDEwdjJ6bTAtNmgxMnYtMkgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRMaXN0QnVsbGV0ZWRBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTMgNS41aC0yLjVWMjFoLTF2LTIuNUgxNXYtMWgyLjVWMTVoMXYyLjVIMjF2MXpNNyA1aDEzdjJIN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzLjVcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExSDd2Mmg2LjExYzEuMjYtMS4yNCAyLjk5LTIgNC44OS0yek03IDE3djJoNC4wOGMtLjA1LS4zMy0uMDgtLjY2LS4wOC0xcy4wMy0uNjcuMDgtMUg3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjMuNVwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjMuNVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0TGlzdEJ1bGxldGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEwLjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wLTZjLS44MyAwLTEuNS42Ny0xLjUgMS41UzMuMTcgNy41IDQgNy41IDUuNSA2LjgzIDUuNSA2IDQuODMgNC41IDQgNC41em0wIDEyYy0uODMgMC0xLjUuNjgtMS41IDEuNXMuNjggMS41IDEuNSAxLjUgMS41LS42OCAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpNNyAxOWgxNHYtMkg3djJ6bTAtNmgxNHYtMkg3djJ6bTAtOHYyaDE0VjVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0TGlzdE51bWJlcmVkUnRsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTdoMnYuNWgtMXYxaDF2LjVoLTJ2MWgzdi00aC0zem0xLTloMVY0aC0ydjFoMXptLTEgM2gxLjhMMTggMTMuMXYuOWgzdi0xaC0xLjhsMS44LTIuMVYxMGgtM3pNMiA1aDE0djJIMnptMCAxMmgxNHYySDJ6bTAtNmgxNHYySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdExpc3ROdW1iZXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTdoMnYuNUgzdjFoMXYuNUgydjFoM3YtNEgydjF6bTEtOWgxVjRIMnYxaDF2M3ptLTEgM2gxLjhMMiAxMy4xdi45aDN2LTFIMy4yTDUgMTAuOVYxMEgydjF6bTUtNnYyaDE0VjVIN3ptMCAxNGgxNHYtMkg3djJ6bTAtNmgxNHYtMkg3djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdFBhaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNFYzYzAtLjU1LS40NS0xLTEtMUg1Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTFWNmgxdjRIOXYxMWMwIC41NS40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXYtOWg4VjRoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdFF1b3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxN2gzbDItNFY3SDV2Nmgzem04IDBoM2wyLTRWN2gtNnY2aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdFNoYXBlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDdWMWgtNnYySDdWMUgxdjZoMnYxMEgxdjZoNnYtMmgxMHYyaDZ2LTZoLTJWN2gyek0zIDNoMnYySDNWM3ptMiAxOEgzdi0yaDJ2MnptMTItMkg3di0ySDVWN2gyVjVoMTB2MmgydjEwaC0ydjJ6bTQgMmgtMnYtMmgydjJ6TTE5IDVWM2gydjJoLTJ6bS01LjI3IDloLTMuNDlsLS43MyAySDcuODlsMy40LTloMS40bDMuNDEgOWgtMS42M2wtLjc0LTJ6bS0zLjA0LTEuMjZoMi42MUwxMiA4LjkxbC0xLjMxIDMuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdFNpemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDR2M2g1djEyaDNWN2g1VjRIOXptLTYgOGgzdjdoM3YtN2gzVjlIM3YzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRTdHJpa2V0aHJvdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTloNHYtM2gtNHYzek01IDR2M2g1djNoNFY3aDVWNEg1ek0zIDE0aDE4di0ySDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0VGV4dGRpcmVjdGlvbkxUb1IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEwdjVoMlY0aDJ2MTFoMlY0aDJWMkg5QzYuNzkgMiA1IDMuNzkgNSA2czEuNzkgNCA0IDR6bTEyIDgtNC00djNINXYyaDEydjNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRUZXh0ZGlyZWN0aW9uUlRvTCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEwdjVoMlY0aDJ2MTFoMlY0aDJWMmgtOEM3Ljc5IDIgNiAzLjc5IDYgNnMxLjc5IDQgNCA0em0tMiA3di0zbC00IDQgNCA0di0zaDEydi0ySDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdFVuZGVybGluZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxN2MzLjMxIDAgNi0yLjY5IDYtNlYzaC0yLjV2OGMwIDEuOTMtMS41NyAzLjUtMy41IDMuNVM4LjUgMTIuOTMgOC41IDExVjNINnY4YzAgMy4zMSAyLjY5IDYgNiA2em0tNyAydjJoMTR2LTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRnVuY3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNEg2djJsNi41IDZMNiAxOHYyaDEydi0zaC03bDUtNS01LTVoN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNi45OWgzTDEyIDMgOCA2Ljk5aDN2MTAuMDJIOEwxMiAyMWw0LTMuOTloLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhleGFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4yIDNINi44bC01LjIgOSA1LjIgOWgxMC40bDUuMi05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaWdobGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDE0IDMgM3Y1aDZ2LTVsMy0zVjlINnY1em01LTEyaDJ2M2gtMlYyek0zLjUgNS44OGwxLjQxLTEuNDEgMi4xMiAyLjEyTDUuNjIgOCAzLjUgNS44OHptMTMuNDYuNzEgMi4xMi0yLjEyIDEuNDEgMS40MUwxOC4zOCA4bC0xLjQyLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvcml6b250YWxEaXN0cmlidXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMkgyVjJoMnYyMHpNMjIgMmgtMnYyMGgyVjJ6bS04LjUgNWgtM3YxMGgzVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvcml6b250YWxSdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgMTFoMTZ2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRDaGFydE91dGxpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxN0g3di03aDJ2N3ptNCAwaC0yVjdoMnYxMHptNCAwaC0ydi00aDJ2NHptMi41IDIuMWgtMTVWNWgxNXYxNC4xem0wLTE2LjFoLTE1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc2VydENoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMTdIN3YtN2gydjd6bTQgMGgtMlY3aDJ2MTB6bTQgMGgtMnYtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc2VydENvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0VjRjMC0xLjEtLjktMi0yLTJ6bS0yIDEySDZ2LTJoMTJ2MnptMC0zSDZWOWgxMnYyem0wLTNINlY2aDEydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc2VydERyaXZlRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNkg2em03IDdWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5zZXJ0RW1vdGljb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSA2LjVjMi4zMyAwIDQuMzEtMS40NiA1LjExLTMuNUg2Ljg5Yy44IDIuMDQgMi43OCAzLjUgNS4xMSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc2VydEludml0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmgtNXY1aDV2LTV6TTE2IDF2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yaC0xVjFoLTJ6bTMgMThINVY4aDE0djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOCAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc2VydFBhZ2VCcmVhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJ2LTNINHYzek0yMCA4bC02LTZINmMtMS4xIDAtMS45OS45LTEuOTkgMnY3SDIwVjh6bS03IDFWMy41TDE4LjUgOUgxM3pNOSAxM2g2djJIOXpNMTcgMTNoNnYyaC02ek0xIDEzaDZ2MkgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRQaG90byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnpNOC41IDEzLjVsMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1bDMuNS00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpbmVBeGlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNy40My0xLjQxLTEuNDEtNC4wMyA0LjUzTDkuNSA0IDIgMTEuNTFsMS41IDEuNSA2LjE0LTYuMTUgNS41OSA1LjE4LTEuNzMgMS45NS00LTRMMiAxNy41IDMuNSAxOWw2LTYuMDEgNCA0IDMuMTktMy41OSAzLjkgMy42MUwyMiAxNS42bC0zLjk4LTMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGluZWFyU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDkuNWMtMS4wMyAwLTEuOS42Mi0yLjI5IDEuNWgtMi45MmMtLjM5LS44OC0xLjI2LTEuNS0yLjI5LTEuNXMtMS45LjYyLTIuMjkgMS41SDYuNzljLS4zOS0uODgtMS4yNi0xLjUtMi4yOS0xLjVhMi41IDIuNSAwIDAgMCAwIDVjMS4wMyAwIDEuOS0uNjIgMi4yOS0xLjVoMi45MmMuMzkuODggMS4yNiAxLjUgMi4yOSAxLjVzMS45LS42MiAyLjI5LTEuNWgyLjkyYy4zOS44OCAxLjI2IDEuNSAyLjI5IDEuNWEyLjUgMi41IDAgMCAwIDAtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFyZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptMTYgMTZINVY1aDE0djE0ek0xMSA3aDJ2MmgtMnpNNyA3aDJ2Mkg3em04IDBoMnYyaC0yem0tOCA0aDJ2Mkg3em00IDBoMnYyaC0yem00IDBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZXJnZVR5cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMC40MSAxOC40MSAxOSAxNSAxNS41OSAxMy41OSAxNyAxNyAyMC40MXpNNy41IDhIMTF2NS41OUw1LjU5IDE5IDcgMjAuNDFsNi02VjhoMy41TDEyIDMuNSA3LjUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9kZUNvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OSA0YzAtMS4xLS44OS0yLTEuOTktMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNC0uMDEtMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGVFZGl0T3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzV6TTIwLjcxIDUuNjNsLTIuMzQtMi4zNGEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzYS45OTYuOTk2IDAgMCAwIDAtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9kZUVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzV6TTIwLjcxIDUuNjNsLTIuMzQtMi4zNGEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzYS45OTYuOTk2IDAgMCAwIDAtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9uZXRpemF0aW9uT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjQxIDE2LjA5VjIwaC0yLjY3di0xLjkzYy0xLjcxLS4zNi0zLjE2LTEuNDYtMy4yNy0zLjRoMS45NmMuMSAxLjA1LjgyIDEuODcgMi42NSAxLjg3IDEuOTYgMCAyLjQtLjk4IDIuNC0xLjU5IDAtLjgzLS40NC0xLjYxLTIuNjctMi4xNC0yLjQ4LS42LTQuMTgtMS42Mi00LjE4LTMuNjcgMC0xLjcyIDEuMzktMi44NCAzLjExLTMuMjFWNGgyLjY3djEuOTVjMS44Ni40NSAyLjc5IDEuODYgMi44NSAzLjM5SDE0LjNjLS4wNS0xLjExLS42NC0xLjg3LTIuMjItMS44Ny0xLjUgMC0yLjQuNjgtMi40IDEuNjQgMCAuODQuNjUgMS4zOSAyLjY3IDEuOTFzNC4xOCAxLjM5IDQuMTggMy45MWMtLjAxIDEuODMtMS4zOCAyLjgzLTMuMTIgMy4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9uZXlPZmZDc3JlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUzIDcuNDNjLjQyLS4zMS45My0uNDcgMS41NC0uNDdzMS4xMS4xNiAxLjUuNDljLjM5LjMyLjY1LjcuNzkgMS4xMmwxLjg5LS44Yy0uMjQtLjcxLS43MS0xLjM1LTEuNC0xLjkyLS41LS40LTEuMTItLjY1LTEuODUtLjc3VjNoLTJ2Mi4xMWMtLjQxLjA4LS43OS4yMS0xLjE0LjM5LS4zNS4xOC0uNjQuMzktLjkuNjNsMS40MyAxLjQzYy4wNC0uMDQuMDktLjA5LjE0LS4xM3pNMi44MSAyLjgxIDEuMzkgNC4yMmwxMi4zNSAxMi4zNWMtLjQzLjI4LS45NS40My0xLjU1LjQzLS43MSAwLTEuMzItLjIzLTEuODMtLjctLjUtLjQ3LS44Ni0xLjA3LTEuMDYtMS44MWwtMS45OC44Yy4zNCAxLjE3Ljk1IDIuMDggMS44MyAyLjczLjU3LjQyIDEuMTkuNjggMS44NS44M1YyMWgydi0yLjA4Yy40NC0uMDcuODctLjE3IDEuMjktLjM1LjM0LS4xNC42NC0uMzIuOTItLjUzbDQuNTcgNC41NyAxLjQxLTEuNDFMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb25leU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgNi45YzEuNzggMCAyLjQ0Ljg1IDIuNSAyLjFoMi4yMWMtLjA3LTEuNzItMS4xMi0zLjMtMy4yMS0zLjgxVjNoLTN2Mi4xNmMtLjUzLjEyLTEuMDMuMy0xLjQ4LjU0bDEuNDcgMS40N2MuNDEtLjE3LjkxLS4yNyAxLjUxLS4yN3pNNS4zMyA0LjA2IDQuMDYgNS4zMyA3LjUgOC43N2MwIDIuMDggMS41NiAzLjIxIDMuOTEgMy45MWwzLjUxIDMuNTFjLS4zNC40OC0xLjA1LjkxLTIuNDIuOTEtMi4wNiAwLTIuODctLjkyLTIuOTgtMi4xaC0yLjJjLjEyIDIuMTkgMS43NiAzLjQyIDMuNjggMy44M1YyMWgzdi0yLjE1Yy45Ni0uMTggMS44Mi0uNTUgMi40NS0xLjEybDIuMjIgMi4yMiAxLjI3LTEuMjdMNS4zMyA0LjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3ZlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTFjMCAyLjQ1IDEuNzYgNC40NyA0LjA4IDQuOTFsLTEuNDktMS40OUw3IDEzbDQgNC4wMUw3IDIxbC0xLjQxLTEuNDEgMS41OC0xLjU4di0uMDZBNy4wMDcgNy4wMDcgMCAwIDEgMSAxMWMwLTMuODcgMy4xMy03IDctN2gzdjJIOGMtMi43NiAwLTUgMi4yNC01IDV6TTIyIDExVjRoLTl2N2g5em0tMi0yaC01VjZoNXYzek0xMyAxM2g5djdoLTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vdmVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNjMC0yLjQ1IDEuNzYtNC40NyA0LjA4LTQuOTFsLTEuNDkgMS41TDcgMTFsNC00LjAxTDcgMyA1LjU5IDQuNDFsMS41OCAxLjU4di4wNkE3LjAwNyA3LjAwNyAwIDAgMCAxIDEzYzAgMy44NyAzLjEzIDcgNyA3aDN2LTJIOGMtMi43NiAwLTUtMi4yNC01LTV6TTEzIDEzdjdoOXYtN2gtOXptNyA1aC01di0zaDV2M3pNMTMgNGg5djdoLTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE11bHRpbGluZUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNi45Mi0xLjQxLTEuNDEtMi44NSAzLjIxQzE1LjY4IDYuNCAxMi44MyA1IDkuNjEgNSA2LjcyIDUgNC4wNyA2LjE2IDIgOGwxLjQyIDEuNDJDNS4xMiA3LjkzIDcuMjcgNyA5LjYxIDdjMi43NCAwIDUuMDkgMS4yNiA2Ljc3IDMuMjRsLTIuODggMy4yNC00LTRMMiAxNi45OWwxLjUgMS41IDYtNi4wMSA0IDQgNC4wNS00LjU1Yy43NSAxLjM1IDEuMjUgMi45IDEuNDQgNC41NUgyMWMtLjIyLTIuMy0uOTUtNC4zOS0yLjA0LTYuMTRMMjIgNi45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMThoMTJ2LTJIM3Yyek0zIDZ2MmgxOFY2SDN6bTAgN2gxOHYtMkgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE51bWJlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC41IDEwIC41LTJoLTRsMS00aC0ybC0xIDRoLTRsMS00aC0yTDkgOEg1bC0uNSAyaDRsLTEgNGgtNEwzIDE2aDRsLTEgNGgybDEtNGg0bC0xIDRoMmwxLTRoNGwuNS0yaC00bDEtNGg0em0tNyA0aC00bDEtNGg0bC0xIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhZGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2MThoMThWM0gzem0xNiAxNkg1VjVoMTR2MTR6TTExIDdoMnYyaC0yek03IDdoMnYySDd6bTggMGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlbnRhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMiA5IDQgMTJoMTJsNC0xMi0xMC03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaWVDaGFydE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnptMSAyLjA3YzMuNjEuNDUgNi40OCAzLjMzIDYuOTMgNi45M0gxM1Y0LjA3ek00IDEyYzAtNC4wNiAzLjA3LTcuNDQgNy03LjkzdjE1Ljg3Yy0zLjkzLS41LTctMy44OC03LTcuOTR6bTkgNy45M1YxM2g2LjkzQTguMDAyIDguMDAyIDAgMCAxIDEzIDE5LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaWVDaGFydE91dGxpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnptMSAyLjA3YzMuNjEuNDUgNi40OCAzLjMzIDYuOTMgNi45M0gxM1Y0LjA3ek00IDEyYzAtNC4wNiAzLjA3LTcuNDQgNy03LjkzdjE1Ljg3Yy0zLjkzLS41LTctMy44OC03LTcuOTR6bTkgNy45M1YxM2g2LjkzQTguMDAyIDguMDAyIDAgMCAxIDEzIDE5LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaWVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMnYyMGMtNS4wNy0uNS05LTQuNzktOS0xMHMzLjkzLTkuNSA5LTEwem0yLjAzIDB2OC45OUgyMmMtLjQ3LTQuNzQtNC4yNC04LjUyLTguOTctOC45OXptMCAxMS4wMVYyMmM0Ljc0LS40NyA4LjUtNC4yNSA4Ljk3LTguOTloLTguOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvbHlsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTZ2MS4yNmwtNi0zdi0zLjE3TDExLjcgOEgxNlYyaC02djQuOUw3LjMgMTBIM3Y2aDVsNyAzLjVWMjJoNnYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9zdEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE5LjIySDVWN2g3VjVINWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtN2gtMnY3LjIyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAyaC0ydjNoLTNjLjAxLjAxIDAgMiAwIDJoM3YyLjk5Yy4wMS4wMSAyIDAgMiAwVjdoM1Y1aC0zVjJ6TTcgOWg4djJIN3pNNyAxMnYyaDh2LTJoLTN6TTcgMTVoOHYySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFB1Ymxpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDR2MmgxNFY0SDV6bTAgMTBoNHY2aDZ2LTZoNGwtNy03LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUXVlcnlTdGF0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljg4IDE4LjQ3Yy40NC0uNy43LTEuNTEuNy0yLjM5IDAtMi40OS0yLjAxLTQuNS00LjUtNC41cy00LjUgMi4wMS00LjUgNC41IDIuMDEgNC41IDQuNDkgNC41Yy44OCAwIDEuNy0uMjYgMi4zOS0uN0wyMS41OCAyMyAyMyAyMS41OGwtMy4xMi0zLjExem0tMy44LjExYTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1em0tLjM2LTguNWMtLjc0LjAyLTEuNDUuMTgtMi4xLjQ1bC0uNTUtLjgzLTMuOCA2LjE4LTMuMDEtMy41Mi0zLjYzIDUuODFMMSAxN2w1LTggMyAzLjVMMTMgNmwyLjcyIDQuMDh6bTIuNTkuNWMtLjY0LS4yOC0xLjMzLS40NS0yLjA1LS40OUwyMS4zOCAyIDIzIDMuMThsLTQuNjkgNy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWN0YW5nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDRoMjB2MTZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NhdHRlclBsb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiN1wiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIzXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIzXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNlwiLFwiY3lcIjpcIjE3LjZcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NoZW1hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOXYyaC0zVjlIOC41VjdIMTFWMUg0djZoMi41djJINHY2aDIuNXYySDR2Nmg3di02SDguNXYtMkgxMXYtMmgzdjJoN1Y5aC03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY29yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAyaDEuNXYzbDItM2gxLjdsLTIgMyAyIDNoLTEuN2wtMi0zdjNIMTJWNXpNNyA3LjI1aDIuNVY2LjVIN1Y1aDR2My43NUg4LjV2Ljc1SDExVjExSDdWNy4yNXpNMTkgMTNsLTYgNi00LTQtNCA0di0yLjVsNC00IDQgNCA2LTZWMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoYXBlTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTFjMi43NiAwIDUtMi4yNCA1LTVTOC43NiAxIDYgMSAxIDMuMjQgMSA2czIuMjQgNSA1IDV6TTIxIDE0aC01Yy0xLjEgMC0yIC45LTIgMnY1YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNzEgNy43Yy40LjE5LjgzLjMgMS4yOS4zIDEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zLTMgMS4zNS0zIDNjMCAuNDYuMTEuODkuMyAxLjI5TDYuMjkgMTYuM2MtLjQtLjE5LS44My0uMy0xLjI5LS4zLTEuNjUgMC0zIDEuMzUtMyAzczEuMzUgMyAzIDMgMy0xLjM1IDMtM2MwLS40Ni0uMTEtLjg5LS4zLTEuMjlMMTcuNzEgNy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaG9ydFRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloMTZ2Mkg0Vjl6bTAgNGgxMHYySDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3dDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuNSAxOC40OSA2LTYuMDEgNCA0TDIyIDYuOTJsLTEuNDEtMS40MS03LjA5IDcuOTctNC00TDIgMTYuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwYWNlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5djRINlY5SDR2NmgxNlY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDNoMTh2MThIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhY2tlZExpbmVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgMTkuOTkgNy41LTcuNTEgNCA0IDcuMDktNy45N0wyMiA5LjkybC04LjUgOS41Ni00LTQtNiA2LjAxLTEuNS0xLjV6bTEuNS00LjUgNi02LjAxIDQgNEwyMiAzLjkybC0xLjQxLTEuNDEtNy4wOSA3Ljk3LTQtNEwyIDEzLjk5bDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0cmlrZXRocm91Z2hTIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi44NSA3LjA4QzYuODUgNC4zNyA5LjQ1IDMgMTIuMjQgM2MxLjY0IDAgMyAuNDkgMy45IDEuMjguNzcuNjUgMS40NiAxLjczIDEuNDYgMy4yNGgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjI5LS44Ni0xLjItMS4yOC0yLjI1LTEuMjgtMS44NiAwLTIuMzQgMS4wMi0yLjM0IDEuNyAwIC40OC4yNS44OC43NCAxLjIxLjM4LjI1Ljc3LjQ4IDEuNDEuN0g3LjM5Yy0uMjEtLjM0LS41NC0uODktLjU0LTEuOTJ6TTIxIDEydi0ySDN2Mmg5LjYyYzEuMTUuNDUgMS45Ni43NSAxLjk2IDEuOTcgMCAxLS44MSAxLjY3LTIuMjggMS42Ny0xLjU0IDAtMi45My0uNTQtMi45My0yLjUxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguODEgMi4yOSAzLjI5IDMuMyA1LjY3IDMuMyAyLjI3IDAgNS4zLS44OSA1LjMtNC4wNSAwLS4zLS4wMS0xLjE2LS40OC0xLjk0SDIxVjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdWJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOGgtMnYxaDN2MWgtNHYtMmMwLS41NS40NS0xIDEtMWgydi0xaC0zdi0xaDNjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek01Ljg4IDE4aDIuNjZsMy40LTUuNDJoLjEybDMuNCA1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSA0aC0yLjY4bC0zLjA3IDQuOTloLS4xMkw4Ljg1IDRINi4xOWw0LjMyIDYuNzNMNS44OCAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VwZXJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA3aC0ydjFoM3YxaC00VjdjMC0uNTUuNDUtMSAxLTFoMlY1aC0zVjRoM2MuNTUgMCAxIC40NSAxIDF2MWMwIC41NS0uNDUgMS0xIDF6TTUuODggMjBoMi42NmwzLjQtNS40MmguMTJsMy40IDUuNDJoMi42NmwtNC42NS03LjI3TDE3LjgxIDZoLTIuNjhsLTMuMDcgNC45OWgtLjEyTDguODUgNkg2LjE5bDQuMzIgNi43M0w1Ljg4IDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMC4wMmg1VjIxaC01ek0xNyAyMWgzYzEuMSAwIDItLjkgMi0ydi05aC01djExem0zLTE4SDVjLTEuMSAwLTIgLjktMiAydjNoMTlWNWMwLTEuMS0uOS0yLTItMnpNMyAxOWMwIDEuMS45IDIgMiAyaDNWMTBIM3Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZVJvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA4SDNWNGgxOHY0em0wIDJIM3Y0aDE4di00em0wIDZIM3Y0aDE4di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXh0RGVjcmVhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uOTkgMTloMi40MmwxLjI3LTMuNThoNS42NUwxMS41OSAxOWgyLjQyTDguNzUgNWgtMi41TC45OSAxOXptNC40Mi01LjYxTDcuNDQgNy42aC4xMmwyLjAzIDUuNzlINS40MXpNMjMgMTF2MmgtOHYtMmg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXh0RmllbGRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDR2M2g1djEyaDNWN2g1VjRoLTEzem0xOSA1aC05djNoM3Y3aDN2LTdoM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXh0SW5jcmVhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uOTkgMTloMi40MmwxLjI3LTMuNThoNS42NUwxMS41OSAxOWgyLjQyTDguNzUgNWgtMi41TC45OSAxOXptNC40Mi01LjYxTDcuNDQgNy42aC4xMmwyLjAzIDUuNzlINS40MXpNMjAgMTFoM3YyaC0zdjNoLTJ2LTNoLTN2LTJoM1Y4aDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGl0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNHYzaDUuNXYxMmgzVjdIMTlWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHlwZVNwZWNpbWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMy4zNyAxMi41LS44LTIuM0gxMi4ybC0uODIgMi4zSDkuODFsMy4zOC05aDEuNjFsMy4zOCA5aC0xLjU1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMy45NiA3LjE3LTEuMzEgMy43MmgyLjY5bC0xLjMtMy43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmVydGljYWxBbGlnbkJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEzaC0zVjNoLTJ2MTBIOGw0IDQgNC00ek00IDE5djJoMTZ2LTJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmVydGljYWxBbGlnbkNlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTloM3Y0aDJ2LTRoM2wtNC00LTQgNHptOC0xNGgtM1YxaC0ydjRIOGw0IDQgNC00ek00IDExdjJoMTZ2LTJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmVydGljYWxBbGlnblRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTFoM3YxMGgyVjExaDNsLTQtNC00IDR6TTQgM3YyaDE2VjNINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmVydGljYWxEaXN0cmlidXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMnYySDJWMmgyMHpNNyAxMC41djNoMTB2LTNIN3pNMiAyMHYyaDIwdi0ySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdyYXBUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOWg2di0ySDR2MnpNMjAgNUg0djJoMTZWNXptLTMgNkg0djJoMTMuMjVjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAySDE1di0ybC0zIDMgMyAzdi0yaDJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcHJvdmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxNnY2aDE2di02YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAyem0xNCAySDZ2LTJoMTJ2MnpNMTIgMkM5LjI0IDIgNyA0LjI0IDcgN2w1IDcgNS03YzAtMi43Ni0yLjI0LTUtNS01em0wIDlMOSA3YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDNsLTMgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXR0YWNoRW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMFY0YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMSAxNmMwIDEuMS45IDIgMiAyaDExdi01YzAtMS42NiAxLjM0LTMgMy0zaDR6bS0xMCAxTDMgNlY0bDggNSA4LTV2MmwtOCA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNHY0YzAgMS4xLS45IDItMiAycy0yLS45LTItMnYtNC41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjE4aDJ2LTQuNWEyLjUgMi41IDAgMCAwLTUgMFYxOGMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00di00aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdHRhY2htZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEyLjVDMiA5LjQ2IDQuNDYgNyA3LjUgN0gxOGMyLjIxIDAgNCAxLjc5IDQgNHMtMS43OSA0LTQgNEg5LjVhMi41IDIuNSAwIDAgMSAwLTVIMTd2Mkg5LjQxYy0uNTUgMC0uNTUgMSAwIDFIMThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0ySDcuNUM1LjU3IDkgNCAxMC41NyA0IDEyLjVTNS41NyAxNiA3LjUgMTZIMTd2Mkg3LjVDNC40NiAxOCAyIDE1LjU0IDIgMTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem00LjUgMTRIOGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtM2wuMTQuMDFBMy45OCAzLjk4IDAgMCAxIDEyIDdjMi4yMSAwIDQgMS43OSA0IDRoLjVhMi41IDIuNSAwIDAgMSAwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTAgMTdsLTMuNS0zLjUgMS40MS0xLjQxTDEwIDE0LjE3IDE1LjE4IDlsMS40MSAxLjQxTDEwIDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZERvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNyAxM2wtNSA1LTUtNWgzVjloNHY0aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRjLTEuNDggMC0yLjg1LjQzLTQuMDEgMS4xN2wxLjQ2IDEuNDZhNS40OTcgNS40OTcgMCAwIDEgOC4wNSA0Ljg3di41SDE5YzEuNjYgMCAzIDEuMzQgMyAzIDAgMS4xMy0uNjQgMi4xMS0xLjU2IDIuNjJsMS40NSAxLjQ1QzIzLjE2IDE4LjE2IDI0IDE2LjY4IDI0IDE1YzAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0zIDUuMjdsMi43NSAyLjc0QzIuNTYgOC4xNSAwIDEwLjc3IDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTEuNzNsMiAyTDIxIDIwLjczIDQuMjcgNCAzIDUuMjd6TTcuNzMgMTBsOCA4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMS43M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWRRdWV1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGguNzFDNy4zNyA3LjY5IDkuNDggNiAxMiA2YzMuMDQgMCA1LjUgMi40NiA1LjUgNS41di41SDE5YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZFN5bmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS41IDE0Ljk4Yy0uMDIgMC0uMDMgMC0uMDUuMDFBMy40OSAzLjQ5IDAgMCAwIDE4IDEyYy0xLjQgMC0yLjYuODMtMy4xNiAyLjAyQTIuOTg4IDIuOTg4IDAgMCAwIDEyIDE3YzAgMS42NiAxLjM0IDMgMyAzbDYuNS0uMDJhMi41IDIuNSAwIDAgMCAwLTV6TTEwIDQuMjZ2Mi4wOUM3LjY3IDcuMTggNiA5LjM5IDYgMTJjMCAxLjc3Ljc4IDMuMzQgMiA0LjQ0VjE0aDJ2Nkg0di0yaDIuNzNBNy45NDIgNy45NDIgMCAwIDEgNCAxMmMwLTMuNzMgMi41NS02Ljg1IDYtNy43NHpNMjAgNmgtMi43M2E3Ljk4IDcuOTggMCAwIDEgMi42NiA1aC0yLjAyYy0uMjMtMS4zNi0uOTMtMi41NS0xLjkxLTMuNDRWMTBoLTJWNGg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNCAxM3Y0aC00di00SDdsNS01IDUgNWgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNEM5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyZWF0ZU5ld0ZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTEgOGgtM3YzaC0ydi0zaC0zdi0yaDNWOWgydjNoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaWZmZXJlbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjNINGMtMS4xIDAtMi0uOS0yLTJWN2gydjE0aDE0djJ6TTE1IDFIOGMtMS4xIDAtMS45OS45LTEuOTkgMkw2IDE3YzAgMS4xLjg5IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjdsLTYtNnptMS41IDE0aC02di0yaDZ2MnptMC02aC0ydjJoLTJWOWgtMlY3aDJWNWgydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb3dubG9hZERvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4xMyA1LjQxIDE4LjcyIDRsLTkuMTkgOS4xOS00LjI1LTQuMjQtMS40MSAxLjQxIDUuNjYgNS42NnpNNSAxOGgxNHYySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvd25sb2FkRm9yT2ZmbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bS0xIDhWNmgydjRoM2wtNCA0LTQtNGgzem02IDdIN3YtMmgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMjBoMTR2LTJINXYyek0xOSA5aC00VjNIOXY2SDVsNyA3IDctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG93bmxvYWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zMiA0LjI2QTkuOTQ5IDkuOTQ5IDAgMCAwIDEzIDIuMDV2Mi4wMmMxLjQ2LjE4IDIuNzkuNzYgMy45IDEuNjJsMS40Mi0xLjQzek0xOS45MyAxMWgyLjAyYy0uMi0yLjAxLTEtMy44NC0yLjIxLTUuMzJMMTguMzEgNy4xYTcuOTQxIDcuOTQxIDAgMCAxIDEuNjIgMy45em0tMS42MiA1LjkgMS40MyAxLjQzYTkuOTgxIDkuOTgxIDAgMCAwIDIuMjEtNS4zMmgtMi4wMmE3Ljk0NSA3Ljk0NSAwIDAgMS0xLjYyIDMuODl6TTEzIDE5LjkzdjIuMDJjMi4wMS0uMiAzLjg0LTEgNS4zMi0yLjIxbC0xLjQzLTEuNDNjLTEuMS44Ni0yLjQzIDEuNDQtMy44OSAxLjYyek0xMyAxMlY3aC0ydjVIN2w1IDUgNS01aC00em0tMiA3LjkzdjIuMDJjLTUuMDUtLjUtOS00Ljc2LTktOS45NXMzLjk1LTkuNDUgOS05Ljk1djIuMDJDNy4wNSA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERyaXZlRmlsZU1vdmVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY4aDE2djEwem0tOC4wMS05LTEuNDEgMS40MUwxMi4xNiAxMkg4djJoNC4xNmwtMS41OSAxLjU5TDExLjk5IDE3IDE2IDEzLjAxIDExLjk5IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERyaXZlRmlsZU1vdmVSdGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tOCAxMS00LTQgNC00djNoNHYyaC00djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERyaXZlRmlsZU1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS02IDEydi0zaC00di00aDRWOGw1IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUZpbGVSZW5hbWVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNDEgNS44IDE3LjIgNC41OWMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTIuNjggMi42OEwzIDE1Ljk2VjIwaDQuMDRsOC43NC04Ljc0IDIuNjMtMi42M2MuNzktLjc4Ljc5LTIuMDUgMC0yLjgzek02LjIxIDE4SDV2LTEuMjFsOC42Ni04LjY2IDEuMjEgMS4yMUw2LjIxIDE4ek0xMSAyMGw0LTRoNnY0SDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUZvbGRlclVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWOGgxNnYxMHpNOCAxMy4wMWwxLjQxIDEuNDFMMTEgMTIuODRWMTdoMnYtNC4xNmwxLjU5IDEuNTlMMTYgMTMuMDEgMTIuMDEgOSA4IDEzLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWxlRG93bmxvYWREb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE4aDE0djJINXYtMnptNC42LTIuN0w1IDEwLjdsMi0xLjkgMi42IDIuNkwxNyA0bDIgMi05LjQgOS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWxlRG93bmxvYWRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDYuMTdWM2g2djZoNGwtMy41OSAzLjU5TDkgNi4xN3ptMTIuMTkgMTUuMDJMMi44MSAyLjgxIDEuMzkgNC4yMiA2LjE3IDlINWw3IDcgLjU5LS41OUwxNS4xNyAxOEg1djJoMTIuMTdsMi42MSAyLjYxIDEuNDEtMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6TTUgMTh2MmgxNHYtMkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWxlT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuODkgMiAxLjk5IDJIMTV2LThoNVY4bC02LTZ6bS0xIDdWMy41TDE4LjUgOUgxM3ptNCAxMi42NlYxNmg1LjY2djJoLTIuMjRsMi45NSAyLjk1LTEuNDEgMS40MUwxOSAxOS40MXYyLjI0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWxlVXBsb2FkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMmw0LjcgNC42OUw1IDEwaDIuMTdMOSAxMS44M1YxNmg0LjE3bDIgMkg1djJoMTIuMTdsMi42MSAyLjYxek0xNSAxMGg0bC03LTctMy4wOSAzLjA5TDE1IDEyLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWxlVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmg2di02aDRsLTctNy03IDdoNHptLTQgMmgxNHYySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbGRlckNvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDZIMXYxM2MwIDEuMS45IDIgMiAyaDE3di0ySDNWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNGgtN2wtMi0ySDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAxNWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbGRlckRlbGV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDh2MTBjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJsLjAxLTEyYzAtMS4xLjg5LTIgMS45OS0yaDZsMiAyaDhjMS4xIDAgMiAuOSAyIDJ6bS01LjUgMlY5aC0ydjFIMTJ2MS41aDF2NGMwIC44My42NyAxLjUgMS41IDEuNWgyYy44MyAwIDEuNS0uNjcgMS41LTEuNXYtNGgxVjEwaC0yLjV6bTAgNS41aC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9sZGVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDYuODNsMTQuOTMgMTQuOTNjLjE1LS4yOC4yNC0uNTkuMjQtLjkzVjhjMC0xLjEtLjktMi0yLTJ6TTIuMSAyLjEuNjkgMy41MWwxLjU2IDEuNTZjLS4xNS4yOC0uMjQuNTktLjI0LjkzTDIgMThjMCAxLjEuOSAyIDIgMmgxMy4xN2wzLjMxIDMuMzEgMS40MS0xLjQxTDIuMSAyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjhoMTZ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbGRlclNoYXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tNSAzYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptNCA4aC04di0xYzAtMS4zMyAyLjY3LTIgNC0yczQgLjY3IDQgMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJaaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTIgNmgtMnYyaDJ2MmgtMnYyaC0ydi0yaDJ2LTJoLTJ2LTJoMnYtMmgtMlY4aDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMmgtOGwtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRPdmVybGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDN2Mkg1VjNoMTR6bS03IDRjLTMuODcgMC03IDMuMTMtNyA3czMuMTMgNyA3IDcgNy0zLjEzIDctNy0zLjEzLTctNy03em0wIDExLjVjLTIuNDkgMC00LjUtMi4wMS00LjUtNC41UzkuNTEgOS41IDEyIDkuNXM0LjUgMi4wMSA0LjUgNC41LTIuMDEgNC41LTQuNSA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyaWRWaWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2OGg4VjNIM3ptNiA2SDVWNWg0djR6bS02IDR2OGg4di04SDN6bTYgNkg1di00aDR2NHptNC0xNnY4aDhWM2gtOHptNiA2aC00VjVoNHY0em0tNiA0djhoOHYtOGgtOHptNiA2aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXdzcGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiAzLTEuNjcgMS42N0wxOC42NyAzIDE3IDQuNjcgMTUuMzMgM2wtMS42NiAxLjY3TDEyIDNsLTEuNjcgMS42N0w4LjY3IDMgNyA0LjY3IDUuMzMgMyAzLjY3IDQuNjcgMiAzdjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWM3pNMTEgMTlINHYtNmg3djZ6bTkgMGgtN3YtMmg3djJ6bTAtNGgtN3YtMmg3djJ6bTAtNEg0VjhoMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVxdWVzdFF1b3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0xIDEwaC00djFoM2MuNTUgMCAxIC40NSAxIDF2M2MwIC41NS0uNDUgMS0xIDFoLTF2MWgtMnYtMUg5di0yaDR2LTFoLTNjLS41NSAwLTEtLjQ1LTEtMXYtM2MwLS41NS40NS0xIDEtMWgxVjloMnYxaDJ2MnptLTItNFYzLjVMMTcuNSA4SDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSdWxlRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6TTcuODMgMTYgNSAxMy4xN2wxLjQxLTEuNDEgMS40MSAxLjQxIDMuNTQtMy41NCAxLjQxIDEuNDFMNy44MyAxNnptOS41OC0zTDE5IDE0LjU5IDE3LjU5IDE2IDE2IDE0LjQxIDE0LjQxIDE2IDEzIDE0LjU5IDE0LjU5IDEzIDEzIDExLjQxIDE0LjQxIDEwIDE2IDExLjU5IDE3LjU5IDEwIDE5IDExLjQxIDE3LjQxIDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbmlwcGV0Rm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuODggMTAuNSAxLjYyIDEuNjJ2My4zOGgtM3YtNWgxLjM4ek0yMiA4djEwYzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0ybC4wMS0xMmMwLTEuMS44OS0yIDEuOTktMmg2bDIgMmg4YzEuMSAwIDIgLjkgMiAyem0tMyAzLjVMMTYuNSA5SDEzdjhoNnYtNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXh0U25pcHBldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjQxIDguNDEtNC44My00LjgzYy0uMzctLjM3LS44OC0uNTgtMS40MS0uNThINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY5LjgzYzAtLjUzLS4yMS0xLjA0LS41OS0xLjQyek03IDdoN3YySDdWN3ptMTAgMTBIN3YtMmgxMHYyem0wLTRIN3YtMmgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb3BpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tNiAxMEg2di0yaDh2MnptNC00SDZ2LTJoMTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVXBsb2FkRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXpNOCAxNS4wMWwxLjQxIDEuNDFMMTEgMTQuODRWMTloMnYtNC4xNmwxLjU5IDEuNTlMMTYgMTUuMDEgMTIuMDEgMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMjBoMTR2LTJINXYyem0wLTEwaDR2Nmg2di02aDRsLTctNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvcmtzcGFjZXNGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEzYy0yLjIgMC00IDEuOC00IDRzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6bTYtMTBDOS44IDMgOCA0LjggOCA3czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02IDEwYy0yLjIgMC00IDEuOC00IDRzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvcmtzcGFjZXNPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNWMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJtMC0yYy0yLjIgMC00IDEuOC00IDRzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6bTYtOGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJtMC0yQzkuOCAzIDggNC44IDggN3MxLjggNCA0IDQgNC0xLjggNC00LTEuOC00LTQtNHptNiAxMmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJtMC0yYy0yLjIgMC00IDEuOC00IDRzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvcmtzcGFjZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEzYy0yLjIgMC00IDEuOC00IDRzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6bTYtMTBDOS44IDMgOCA0LjggOCA3czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02IDEwYy0yLjIgMC00IDEuOC00IDRzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZlNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMmgtMVY0SDZ2OEg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y1aDIwdi01YzAtMS42Ni0xLjM0LTMtMy0zem0tMyAwSDhWNmg4djZ6bTIgNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcm93c2VyTm90U3VwcG9ydGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNnYxMC41bDEuOTUgMS45NWMuMDMtLjE1LjA1LS4zLjA1LS40NVY2YzAtMS4xLS45LTItMi0ySDYuNWwyIDJIMTl6TTMuMjIgMy4zMiAxLjk1IDQuNTkgMyA1LjY0VjE4YzAgMS4xLjkgMiAyIDJoMTIuMzZsMi4wNiAyLjA2IDEuMjctMS4yN0wzLjIyIDMuMzJ6TTE1IDE4SDVWNy42NEwxNS4zNiAxOEgxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJvd3NlclVwZGF0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxM3YzYzAgMS4xLS45IDItMiAyaC0zbDEgMXYySDZ2LTJsMS0xSDRjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmg4djJINHYxMWgxNnYtM2gyem0tNyAyLTUtNWg0VjNoMnY3aDRsLTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FzdENvbm5lY3RlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwiLFwib3BhY2l0eVwiOlwiLjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxOHYzaDNjMC0xLjY2LTEuMzQtMy0zLTN6bTAtNHYyYzIuNzYgMCA1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTE4LTdINXYxLjYzYzMuOTYgMS4yOCA3LjA5IDQuNDEgOC4zNyA4LjM3SDE5Vjd6TTEgMTB2MmE5IDkgMCAwIDEgOSA5aDJjMC02LjA4LTQuOTMtMTEtMTEtMTF6bTIwLTdIM2MtMS4xIDAtMiAuOS0yIDJ2M2gyVjVoMTh2MTRoLTd2Mmg3YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhc3RGb3JFZHVjYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2M2gyVjVoMTh2MTRoLTd2Mmg3YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTEgMTh2M2gzYzAtMS42Ni0xLjM0LTMtMy0zem0wLTR2MmMyLjc2IDAgNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0wLTR2MmE5IDkgMCAwIDEgOSA5aDJjMC02LjA4LTQuOTMtMTEtMTEtMTF6bTEwIDEuMDl2MkwxNC41IDE1bDMuNS0xLjkxdi0yTDE0LjUgMTMgMTEgMTEuMDl6TTE0LjUgNiA5IDlsNS41IDNMMjAgOWwtNS41LTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIixcIm9wYWNpdHlcIjpcIi4xXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2M2gyVjVoMTh2MTRoLTd2Mmg3YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTEgMTh2M2gzYzAtMS42Ni0xLjM0LTMtMy0zem0wLTR2MmMyLjc2IDAgNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0wLTR2MmE5IDkgMCAwIDEgOSA5aDJjMC02LjA4LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbXB1dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAySDB2MmgyNHYtMmgtNHpNNCA2aDE2djEwSDRWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29ubmVjdGVkVHYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNXYyaDh2LTJoNWMxLjEgMCAxLjk5LS45IDEuOTktMkwyMyA1YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNWgxOHYxMnpNNCAxNHYyaDJjMC0xLjExLS44OS0yLTItMnptMC0zdjEuNDNjMS45NyAwIDMuNTcgMS42IDMuNTcgMy41N0g5YzAtMi43Ni0yLjI0LTUtNS01em0wLTN2MS40NWMzLjYxIDAgNi41NSAyLjkzIDYuNTUgNi41NUgxMmMwLTQuNDItMy41OS04LTgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udmV5b3JCZWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTVINWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2gxNGMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtM3ptMCA0SDVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoMTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDF6TTkgNHY4YzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xVjRjMC0uNTUtLjQ1LTEtMS0xaC04Yy0uNTUgMC0xIC40NS0xIDF6bTcgNGgtNFY2LjAyaDRWOHpNMiA5LjAyaDQuOTR2MS45MUgyVjkuMDJ6bTIuMDEtM2gyLjkzdjEuOTZINC4wMVY2LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXNrdG9wTWFjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDZsLTIgMnYxaDh2LTFsLTItMmg2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVza3RvcFdpbmRvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoNnYySDh2Mmg4di0yaC0ydi0yaDZjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZlbG9wZXJCb2FyZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODMgNUgxOHYxMC4xN0wxOS44MyAxN0gyMnYtMmgtMnYtMmgydi0yaC0yVjloMlY3aC0yVjVjMC0xLjEtLjktMi0yLTJINS44M2wyIDJ6TTEyIDkuMTdWN2g0djNoLTMuMTdMMTIgOS4xN3pNOS44MyA3SDExdjEuMTdMOS44MyA3em00IDRIMTZ2Mi4xN0wxMy44MyAxMXpNMTggMjFjLjA2IDAgLjExIDAgLjE2LS4wMWwyLjMyIDIuMzIgMS40MS0xLjQxTDIuMSAyLjEuNjkgMy41MWwxLjMyIDEuMzJDMiA0Ljg5IDIgNC45NCAyIDV2MTRjMCAxLjEuOSAyIDIgMmgxNHpNNCAxOVY2LjgzbDIgMlYxMmgzLjE3bDEgMUg2djRoNXYtMy4xN2wxIDFWMTdoMi4xN2wyIDJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2ZWxvcGVyQm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDlWN2gtMlY1YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloMnptLTQgMTBINFY1aDE0djE0ek02IDEzaDV2NEg2em02LTZoNHYzaC00ek02IDdoNXY1SDZ6bTYgNGg0djZoLTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2aWNlSHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTYtNC00VjguODJDMTQuMTYgOC40IDE1IDcuMyAxNSA2YzAtMS42Ni0xLjM0LTMtMy0zUzkgNC4zNCA5IDZjMCAxLjMuODQgMi40IDIgMi44MlYxMmwtNCA0SDN2NWg1di0zLjA1bDQtNC4yIDQgNC4yVjIxaDV2LTVoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmljZVVua25vd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxOEg3VjVoMTB2MTR6TTEyIDYuNzJjLTEuOTYgMC0zLjUgMS41Mi0zLjUgMy40N2gxLjc1YzAtLjkzLjgyLTEuNzUgMS43NS0xLjc1czEuNzUuODIgMS43NSAxLjc1YzAgMS43NS0yLjYzIDEuNTctMi42MyA0LjQ1aDEuNzZjMC0xLjk2IDIuNjItMi4xOSAyLjYyLTQuNDUgMC0xLjk2LTEuNTQtMy40Ny0zLjUtMy40N3ptLS44OCA4LjhoMS43NnYxLjc2aC0xLjc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZpY2VzT3RoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDZoMThWNEgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDR2LTJIM1Y2em0xMCA2SDl2MS43OGMtLjYxLjU1LTEgMS4zMy0xIDIuMjJzLjM5IDEuNjcgMSAyLjIyVjIwaDR2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIycy0uMzktMS42Ny0xLTIuMjJWMTJ6bS0yIDUuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTIyIDhoLTZjLS41IDAtMSAuNS0xIDF2MTBjMCAuNS41IDEgMSAxaDZjLjUgMCAxLS41IDEtMVY5YzAtLjUtLjUtMS0xLTF6bS0xIDEwaC00di04aDR2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjNoOHYtMkg4djJ6bTgtMjEuOTlMOCAxYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMTVIOFY1aDh2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVhcmJ1ZHNCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgN2gtMVY2aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xVjhjMC0uNTUtLjQ1LTEtMS0xek0xMC42MiA2QzguNzYgNiA3LjI1IDcuNTEgNy4yNSA5LjM4djUuMjVjMCAxLjA0LS44NCAxLjg4LTEuODggMS44OHMtMS44Ny0uODUtMS44Ny0xLjg5di00LjdjLjE2LjA1LjMzLjA4LjUuMDggMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAydjYuNjJDMiAxNi40OSAzLjUxIDE4IDUuMzggMThzMy4zOC0xLjUxIDMuMzgtMy4zOFY5LjM4YzAtMS4wNC44NC0xLjg4IDEuODgtMS44OHMxLjg4Ljg0IDEuODggMS44OHY0LjdjLS4xOC0uMDUtLjM1LS4wOC0uNTItLjA4LTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yVjkuMzhDMTQgNy41MSAxMi40OSA2IDEwLjYyIDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVhcmJ1ZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjIgMy4wMUM0LjQ0IDIuODkgMyA0LjQyIDMgNi4xOVYxNmMwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01VjhjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM3Y3aC0uODNjLTEuNjEgMC0zLjA2IDEuMTgtMy4xNyAyLjc5QTMgMyAwIDAgMCAxNy44IDIxYzEuNzYuMTIgMy4yLTEuNDIgMy4yLTMuMThWOGMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNXY4YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zVjloLjgzQzcuNDQgOSA4Ljg5IDcuODIgOSA2LjIxYy4xMS0xLjY4LTEuMTctMy4xLTIuOC0zLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcmtsaWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTd2MmgtNVYzaDJ2MTRoM3ptLTYuMjctMS44NWMuMTcuNDIuMjcuODcuMjcgMS4zNSAwIDEuOTMtMS41NyAzLjUtMy41IDMuNS0xLjQgMC0yLjYtLjgyLTMuMTYtMkg2LjgzQTIuOTkgMi45OSAwIDAgMSA0IDIwYy0xLjY2IDAtMy0xLjM0LTMtMyAwLS44OS4zOS0xLjY5IDEtMi4yNFYxMGgyVjRoOGw0LjczIDExLjE1ek01IDE3YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxIC40NSAxIDEgMSAxLS40NSAxLTF6bTguNjUtNC0yLjk3LTdINnY0bDIuOTIgM2g0Ljczek0xNSAxNi41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGcm9udExvYWRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjUgNi41LTEuOTEgMS45MWMtLjM4LjM4LS41OS44OS0uNTkgMS40MlYxMWgtMVY3YzAtMS42Ni0xLjM0LTMtMy0zSDh2NUgzYy0xLjEgMC0yIC45LTIgMnY1Ljg1YzAgMS41OCAxLjE2IDMuMDEgMi43NCAzLjE0YTIuOTkgMi45OSAwIDAgMCAzLjA3LTEuOThsNC4zNy0uMDFhMi45NzkgMi45NzkgMCAwIDAgMy40MSAxLjk0IDMuMDEzIDMuMDEzIDAgMCAwIDIuMzUtMi4zOWMuMi0xLjExLS4yMi0yLjExLS45NS0yLjc3VjEzaDFjMCAxLjEuOSAyIDIgMmg1TDE5LjUgNi41ek00IDE4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTYtMTJoM2MuNTUgMCAxIC40NSAxIDF2NGgtNFY2em00IDEyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhbWVwYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3LjVWMkg5djUuNWwzIDMgMy0zek03LjUgOUgydjZoNS41bDMtMy0zLTN6TTkgMTYuNVYyMmg2di01LjVsLTMtMy0zIDN6TTE2LjUgOWwtMyAzIDMgM0gyMlY5aC01LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlYWRwaG9uZXNCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgN2gtMVY2aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xVjhjMC0uNTUtLjQ1LTEtMS0xek04IDZjLTMuMzEgMC02IDIuNjktNiA2djRjMCAxLjEuOSAyIDIgMmgydi01SDMuNXYtMWMwLTIuNDggMi4wMi00LjUgNC41LTQuNXM0LjUgMi4wMiA0LjUgNC41djFIMTB2NWgyYzEuMSAwIDItLjkgMi0ydi00YzAtMy4zMS0yLjY5LTYtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFkcGhvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM2E5IDkgMCAwIDAtOSA5djdjMCAxLjEuOSAyIDIgMmg0di04SDV2LTFjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgN3YxaC00djhoNGMxLjEgMCAyLS45IDItMnYtN2E5IDkgMCAwIDAtOS05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFkc2V0TWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIixcIm9wYWNpdHlcIjpcIi4xXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDFhOSA5IDAgMCAwLTkgOXY3YzAgMS42NiAxLjM0IDMgMyAzaDN2LThINXYtMmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3djJoLTR2OGg0djFoLTd2Mmg2YzEuNjYgMCAzLTEuMzQgMy0zVjEwYTkgOSAwIDAgMC05LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlYWRzZXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjMy44NyAwIDcgMy4xMyA3IDd2MmgtMi45MkwyMSAxNy45MlYxMWE5IDkgMCAwIDAtOS05Yy0xLjk1IDAtMy43Ni42Mi01LjIzIDEuNjhsMS40NCAxLjQ0QTYuOTE0IDYuOTE0IDAgMCAxIDEyIDR6TTIuMjcgMS43MiAxIDNsMy4zMyAzLjMyQTguODk5IDguODk5IDAgMCAwIDMgMTF2N2MwIDEuNjYgMS4zNCAzIDMgM2gzdi04SDV2LTJjMC0xLjE3LjI5LTIuMjYuNzktMy4yMkwxNSAxN3Y0aDNjLjMgMCAuNTktLjA2Ljg2LS4xNEwyMSAyM2wxLjI3LTEuMjctMjAtMjAuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlYWRzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwiLFwib3BhY2l0eVwiOlwiLjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMWE5IDkgMCAwIDAtOSA5djdjMCAxLjY2IDEuMzQgMyAzIDNoM3YtOEg1di0yYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDd2MmgtNHY4aDNjMS42NiAwIDMtMS4zNCAzLTN2LTdhOSA5IDAgMCAwLTktOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9tZU1heCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVINUMyLjc5IDUgMSA2Ljc5IDEgOXY1YzAgMi4yMSAxLjc5IDQgNCA0aDJ2MWgxMHYtMWgyYzIuMjEgMCA0LTEuNzkgNC00VjljMC0yLjIxLTEuNzktNC00LTR6bTIgOWMwIDEuMS0uOSAyLTIgMkg1Yy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9tZU1pbmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1QzQuMTkgNSAyIDkuNDggMiAxMmMwIDMuODYgMy4xMyA3IDYuOTkgN2g2LjAyQzE3LjcgMTkgMjIgMTYuOTIgMjIgMTJjMCAwIDAtNy0xMC03em0wIDJjNy42NCAwIDcuOTkgNC41MSA4IDVINGMwLS4yLjA5LTUgOC01em0yLjg2IDEwSDkuMTRjLTIuMSAwLTMuOTItMS4yNC00LjcxLTNoMTUuMTVjLS44IDEuNzYtMi42MiAzLTQuNzIgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNyAxMnYySDV2LTJoMnptLTItMlY4aDJ2Mkg1em02IDJ2Mkg5di0yaDJ6bS0yLTJWOGgydjJIOXptNyA2djFIOHYtMWg4em0tMS00djJoLTJ2LTJoMnptLTItMlY4aDJ2MmgtMnptNCA0di0yaDJ2MmgtMnptMi00aC0yVjhoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40MSA4LjU5IDEyIDEzLjE3bDQuNTktNC41OEwxOCAxMGwtNiA2LTYtNiAxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS40MSAxNi41OSAxMC44MyAxMmw0LjU4LTQuNTlMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41OSAxNi41OSAxMy4xNyAxMiA4LjU5IDcuNDEgMTAgNmw2IDYtNiA2LTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40MSAxNS40MSAxMiAxMC44M2w0LjU5IDQuNThMMTggMTRsLTYtNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTFINi44M2wzLjU4LTMuNTlMOSA2bC02IDYgNiA2IDEuNDEtMS40MUw2LjgzIDEzSDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZENhcHNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOC40MSAxNi41OSAxMyAxOCAxMS41OWwtNi02LTYgNkw3LjQxIDEzIDEyIDguNDF6TTYgMThoMTJ2LTJINnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZENvbW1hbmRLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDNDMTUuNTcgMyAxNCA0LjU3IDE0IDYuNVY4aC00VjYuNUMxMCA0LjU3IDguNDMgMyA2LjUgM1MzIDQuNTcgMyA2LjUgNC41NyAxMCA2LjUgMTBIOHY0SDYuNUM0LjU3IDE0IDMgMTUuNTcgMyAxNy41UzQuNTcgMjEgNi41IDIxczMuNS0xLjU3IDMuNS0zLjVWMTZoNHYxLjVjMCAxLjkzIDEuNTcgMy41IDMuNSAzLjVzMy41LTEuNTcgMy41LTMuNS0xLjU3LTMuNS0zLjUtMy41SDE2di00aDEuNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxOS40MyAzIDE3LjUgM3pNMTYgOFY2LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTMTguMzMgOCAxNy41IDhIMTZ6TTYuNSA4QzUuNjcgOCA1IDcuMzMgNSA2LjVTNS42NyA1IDYuNSA1IDggNS42NyA4IDYuNVY4SDYuNXptMy41IDZ2LTRoNHY0aC00em03LjUgNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjE2aDEuNWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41em0tMTEgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTYgNi41IDE2SDh2MS41YzAgLjgzLS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRDb250cm9sS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNSAxMiAxLjQxIDEuNDFMMTIgNy44M2w1LjU5IDUuNThMMTkgMTJsLTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmREb3VibGVBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA2LjQxIDE2LjU5IDUgMTIgOS41OCA3LjQxIDUgNiA2LjQxbDYgNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMTMtMS40MS0xLjQxTDEyIDE2LjE3bC00LjU5LTQuNThMNiAxM2w2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkRG91YmxlQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNTkgMTggMTkgMTYuNTkgMTQuNDIgMTIgMTkgNy40MSAxNy41OSA2bC02IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDE4IDEuNDEtMS40MUw3LjgzIDEybDQuNTgtNC41OUwxMSA2bC02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkRG91YmxlQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNDEgNiA1IDcuNDEgOS41OCAxMiA1IDE2LjU5IDYuNDEgMThsNi02elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA2LTEuNDEgMS40MUwxNi4xNyAxMmwtNC41OCA0LjU5TDEzIDE4bDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmREb3VibGVBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNy41OSA3LjQxIDE5IDEyIDE0LjQyIDE2LjU5IDE5IDE4IDE3LjU5bC02LTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYgMTEgMS40MSAxLjQxTDEyIDcuODNsNC41OSA0LjU4TDE4IDExbC02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkSGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE1YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkgM2gydjJoLTJWNnptMCAzaDJ2MmgtMlY5ek04IDZoMnYySDhWNnptMCAzaDJ2Mkg4Vjl6bS0xIDJINVY5aDJ2MnptMC0zSDVWNmgydjJ6bTkgN0g4di0yaDh2MnptMC00aC0yVjloMnYyem0wLTNoLTJWNmgydjJ6bTMgM2gtMlY5aDJ2MnptMC0zaC0yVjZoMnYyem0tNyAxNSA0LTRIOGw0IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkT3B0aW9uS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNWg2djJoLTZ6TTkgNUgzdjJoNC44NWw2LjkyIDEySDIxdi0yaC01LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZFJldHVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDd2NEg1LjgzbDMuNTgtMy41OUw4IDZsLTYgNiA2IDYgMS40MS0xLjQxTDUuODMgMTNIMjFWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRUYWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41OSA3LjQxIDE1LjE3IDExSDF2MmgxNC4xN2wtMy41OSAzLjU5TDEzIDE4bDYtNi02LTYtMS40MSAxLjQxek0yMCA2djEyaDJWNmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRWb2ljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE1YzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zTDE1IDZjMC0xLjY2LTEuMzQtMy0zLTNTOSA0LjM0IDkgNnY2YzAgMS42NiAxLjM0IDMgMyAzem01LjMtM2MwIDMtMi41NCA1LjEtNS4zIDUuMVM2LjcgMTUgNi43IDEySDVjMCAzLjQyIDIuNzIgNi4yMyA2IDYuNzJWMjJoMnYtMy4yOGMzLjI4LS40OCA2LTMuMyA2LTYuNzJoLTEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE3YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptLTkgM2gydjJoLTJWOHptMCAzaDJ2MmgtMnYtMnpNOCA4aDJ2Mkg4Vjh6bTAgM2gydjJIOHYtMnptLTEgMkg1di0yaDJ2MnptMC0zSDVWOGgydjJ6bTkgN0g4di0yaDh2MnptMC00aC0ydi0yaDJ2MnptMC0zaC0yVjhoMnYyem0zIDNoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFwdG9wQ2hyb21lYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE4VjNIMnYxNUgwdjJoMjR2LTJoLTJ6bS04IDBoLTR2LTFoNHYxem02LTNINFY1aDE2djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXB0b3BNYWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGMxLjEgMCAxLjk5LS45IDEuOTktMkwyMiA1YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJIMGMwIDEuMS45IDIgMiAyaDIwYzEuMSAwIDItLjkgMi0yaC00ek00IDVoMTZ2MTFINFY1em04IDE0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhcHRvcFdpbmRvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOHYtMWMxLjEgMCAxLjk5LS45IDEuOTktMkwyMiA1YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJ2MUgwdjJoMjR2LTJoLTR6TTQgNWgxNnYxMEg0VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMkgwdjJoMjR2LTJoLTR6TTQgNmgxNnYxMEg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lbW9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb25pdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoM2wtMSAxdjJoMTJ2LTJsLTEtMWgzYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTNINFY1aDE2djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEuMDdWOWg3YzAtNC4wOC0zLjA1LTcuNDQtNy03Ljkzek00IDE1YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTh2LTRINHY0em03LTEzLjkzQzcuMDUgMS41NiA0IDQuOTIgNCA5aDdWMS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFsbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxOHY0aDN2LTJoNS41djJoM3YtMkgxOXYyaDN2LTR6TTE4IDJINmMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMVYzYzAtLjU1LS40NS0xLTEtMXptLTMgNkg5VjZoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZUFuZHJvaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxSDhDNi4zNCAxIDUgMi4zNCA1IDR2MTZjMCAxLjY2IDEuMzQgMyAzIDNoOGMxLjY2IDAgMy0xLjM0IDMtM1Y0YzAtMS42Ni0xLjM0LTMtMy0zem0tMiAyMGgtNHYtMWg0djF6bTMuMjUtM0g2Ljc1VjRoMTAuNXYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVJcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDFoLThBMi41IDIuNSAwIDAgMCA1IDMuNXYxN0EyLjUgMi41IDAgMCAwIDcuNSAyM2g4YTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtMTdBMi41IDIuNSAwIDAgMCAxNS41IDF6bS00IDIxYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNC41LTRIN1Y0aDl2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lbGlua09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2VjRINi44MmwyIDJIMjJ6TTEuOTIgMS42NS42NSAyLjkybDEuODIgMS44MkMyLjE4IDUuMDggMiA1LjUyIDIgNnYxMUgwdjNoMTcuNzNsMi4zNSAyLjM1IDEuMjctMS4yN0wzLjg5IDMuNjIgMS45MiAxLjY1ek00IDYuMjcgMTQuNzMgMTdINFY2LjI3ek0yMyA4aC02Yy0uNTUgMC0xIC40NS0xIDF2NC4xOGwyIDJWMTBoNHY3aC0yLjE4bDMgM0gyM2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lbGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxOFY0SDRjLTEuMSAwLTIgLjktMiAydjExSDB2M2gxNHYtM0g0VjZ6bTE5IDJoLTZjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXptLTEgOWgtNHYtN2g0djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvaW50T2ZTYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMkg3Yy0xLjEgMC0yIC45LTIgMnYyYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCA0SDdWNGgxMHYyem0zIDE2SDRjLTEuMSAwLTItLjktMi0ydi0xaDIwdjFjMCAxLjEtLjkgMi0yIDJ6bS0xLjQ3LTExLjgxQTIuMDA4IDIuMDA4IDAgMCAwIDE2LjcgOUg3LjNjLS43OSAwLTEuNTEuNDctMS44MyAxLjE5TDIgMThoMjBsLTMuNDctNy44MXpNOS41IDE2aC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTAtMmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMyA0aC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTAtMmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMyA0aC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTAtMmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG93ZXJJbnB1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA5djJoMTlWOUgyem0wIDZoNXYtMkgydjJ6bTcgMGg1di0ySDl2MnptNyAwaDV2LTJoLTV2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm91dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMiA1LjkuOC0uOEMxOS42IDMuNyAxNy44IDMgMTYgM3MtMy42LjctNSAyLjFsLjguOEMxMyA0LjggMTQuNSA0LjIgMTYgNC4yczMgLjYgNC4yIDEuN3ptLS45LjhjLS45LS45LTIuMS0xLjQtMy4zLTEuNHMtMi40LjUtMy4zIDEuNGwuOC44Yy43LS43IDEuNi0xIDIuNS0xIC45IDAgMS44LjMgMi41IDFsLjgtLjh6TTE5IDEzaC0yVjloLTJ2NEg1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTRjMC0xLjEtLjktMi0yLTJ6TTggMThINnYtMmgydjJ6bTMuNSAwaC0ydi0yaDJ2MnptMy41IDBoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY2FubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOCAxMC43IDQuMiA1bC0uNyAxLjlMMTcuNiAxMkg1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTUuNWMwLS44LS41LTEuNi0xLjItMS44ek03IDE3SDV2LTJoMnYyem0xMiAwSDl2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VjdXJpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHptMCAxMC45OWg3Yy0uNTMgNC4xMi0zLjI4IDcuNzktNyA4Ljk0VjEySDVWNi4zbDctMy4xMXY4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpbUNhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45OSA0YzAtMS4xLS44OS0yLTEuOTktMmgtOEw0IDh2MTJjMCAxLjEuOSAyIDIgMmgxMi4wMWMxLjEgMCAxLjk5LS45IDEuOTktMmwtLjAxLTE2ek05IDE5SDd2LTJoMnYyem04IDBoLTJ2LTJoMnYyem0tOC00SDd2LTRoMnY0em00IDRoLTJ2LTRoMnY0em0wLTZoLTJ2LTJoMnYyem00IDJoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbWFydERpc3BsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNOS41IDE2LjV2LTlsNyA0LjUtNyA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNtYXJ0U2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNUgzYy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS0zIDEySDZWN2gxMnYxMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTEuMjVoMS41djEuNUgxNXpNMTIuNSAxMS4yNUgxNHYxLjVoLTEuNXpNMTAgMTEuMjVoMS41djEuNUgxMHpNNy41IDExLjI1SDl2MS41SDcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU21hcnRUb3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA5VjdjMC0xLjEtLjktMi0yLTJoLTNjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNUg2Yy0xLjEgMC0yIC45LTIgMnYyYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzdjRjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtNGMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtM3pNNy41IDExLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTOS44MyAxMyA5IDEzcy0xLjUtLjY3LTEuNS0xLjV6TTE2IDE3SDh2LTJoOHYyem0tMS00Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTQuMTcgMTAgMTUgMTBzMS41LjY3IDEuNSAxLjVTMTUuODMgMTMgMTUgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNtYXJ0cGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwZWFrZXJHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjIgMUg5LjhDOC44MSAxIDggMS44MSA4IDIuOHYxNC40YzAgLjk5LjgxIDEuNzkgMS44IDEuNzlsOC40LjAxYy45OSAwIDEuOC0uODEgMS44LTEuOFYyLjhjMC0uOTktLjgxLTEuOC0xLjgtMS44ek0xNCAzYzEuMSAwIDIgLjg5IDIgMnMtLjkgMi0yIDItMi0uODktMi0yIC45LTIgMi0yem0wIDEzLjVjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0XCIsXCJjeVwiOlwiMTIuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNUg0djE2YTIgMiAwIDAgMCAyIDJoMTB2LTJINlY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMkg3Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDEuOTkgMiAxLjk5TDE3IDIyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS01IDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyYTIgMiAwIDEgMSAwLTR6bTAgMTZjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDcuNDEgMTguMTcgMTFINnYyaDEyLjE3bC0zLjU5IDMuNTlMMTYgMThsNi02LTYtNi0xLjQxIDEuNDF6TTIgNnYxMmgyVjZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFibGV0QW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDBINkM0LjM0IDAgMyAxLjM0IDMgM3YxOGMwIDEuNjYgMS4zNCAzIDMgM2gxMmMxLjY2IDAgMy0xLjM0IDMtM1YzYzAtMS42Ni0xLjM0LTMtMy0zem0tNCAyMmgtNHYtMWg0djF6bTUuMjUtM0g0Ljc1VjNoMTQuNXYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFibGV0TWFjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41IDBoLTE0QTIuNSAyLjUgMCAwIDAgMiAyLjV2MTlBMi41IDIuNSAwIDAgMCA0LjUgMjRoMTRhMi41IDIuNSAwIDAgMCAyLjUtMi41di0xOUEyLjUgMi41IDAgMCAwIDE4LjUgMHptLTcgMjNjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em03LjUtNEg0VjNoMTV2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYmxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDRIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAxLjk5LS45IDEuOTktMkwyMyA2YzAtMS4xLS45LTItMi0yem0tMiAxNEg1VjZoMTR2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRveXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE0YzAtMS45NS0xLjQtMy41Ny0zLjI1LTMuOTJMMTcuNCA2LjA1QTIuOTc4IDIuOTc4IDAgMCAwIDE0LjU2IDRIOS40NEM4LjE1IDQgNyA0LjgyIDYuNiA2LjA1TDUuODEgOC40IDQuNDEgN2wuMjktLjI5QS45OTYuOTk2IDAgMSAwIDMuMjkgNS4zbC0yIDJBLjk5Ni45OTYgMCAxIDAgMi43IDguNzFsLjMtLjMgMS43OSAxLjc5QzMuMTggMTAuNzIgMiAxMi4yMiAyIDE0YzAgMS41LjgzIDIuNzkgMi4wNSAzLjQ4QTMgMyAwIDAgMCA3IDIwYzEuMyAwIDIuNC0uODQgMi44Mi0yaDQuMzdjLjQxIDEuMTYgMS41MSAyIDIuODIgMmEzIDMgMCAwIDAgMi45NS0yLjUyQzIxLjE3IDE2Ljc5IDIyIDE1LjUgMjIgMTR6TTcgMThjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNC04SDcuNDFsLS4wMi0uMDIgMS4xLTMuM0ExIDEgMCAwIDEgOS40NCA2SDExdjR6bTItNGgxLjU2YTEgMSAwIDAgMSAuOTUuNjhsMS4xIDMuMzJIMTNWNnptNCAxMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcm9sbGV5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTR2Mkg0VjRIMlYyaDR2MTJoMTV6TTUuOTkgMTdDNC44OSAxNyA0IDE3LjkgNCAxOXMuODkgMiAxLjk5IDJDNy4xIDIxIDggMjAuMSA4IDE5cy0uOS0yLTIuMDEtMnptMTMgMGMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDJTMjEgMjAuMSAyMSAxOXMtLjktMi0yLjAxLTJ6TTEzIDEzSDdWN2g2djZ6bTcgMGgtNlY3aDZ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNXYyaDh2LTJoNWMxLjEgMCAxLjk5LS45IDEuOTktMkwyMyA1YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNWgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9nYW1lQXNzZXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIyIDMuMyA2LjEzQzIuNTQgNi40MSAyIDcuMTUgMiA4djhjMCAxLjEuOSAyIDIgMmgxMS4xN2w0LjYxIDQuNjEgMS40MS0xLjQyek05IDEzdjJIN3YtMkg1di0yaDJWOS44M0wxMC4xNyAxM0g5em0xMS43IDQuODdjLjc2LS4yOCAxLjMtMS4wMiAxLjMtMS44N1Y4YzAtMS4xLS45LTItMi0ySDguODNMMjAuNyAxNy44N3pNMTcuNSA5Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb2dhbWVBc3NldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwdjI0aDI0VjBIMHptMjMgMTZjMCAxLjEtLjkgMi0yIDJIM2MtMS4xIDAtMi0uOS0yLTJWOGMwLTEuMS45LTIgMi0yaDE4YzEuMSAwIDIgLjkgMiAydjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0xMCA3SDh2M0g2di0zSDN2LTJoM1Y4aDJ2M2gzdjJ6bTQuNSAyYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNC0zYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTguNjcgOSAxOS41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXRjaE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjMi43NiAwIDUgMi4yNCA1IDUgMCAuNjQtLjEzIDEuMjUtLjM1IDEuODJsMS41IDEuNWE2Ljk2MyA2Ljk2MyAwIDAgMC0xLjc5LTguNzlMMTUgMkg5bC0uOTYgMy4yMSAyLjE0IDIuMTRDMTAuNzUgNy4xMyAxMS4zNiA3IDEyIDd6TTIuODEgMi44MSAxLjM5IDQuMjJsNC40NiA0LjQ2YTYuOTYzIDYuOTYzIDAgMCAwIDEuNzkgOC43OUw5IDIyaDZsLjk2LTMuMjEgMy44MiAzLjgyIDEuNDEtMS40MUwyLjgxIDIuODF6TTEyIDE3Yy0yLjc2IDAtNS0yLjI0LTUtNSAwLS42NC4xMy0xLjI1LjM1LTEuODJsNi40NyA2LjQ3Yy0uNTcuMjItMS4xOC4zNS0xLjgyLjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCIsXCJvcGFjaXR5XCI6XCIuMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMmMwLTIuNTQtMS4xOS00LjgxLTMuMDQtNi4yN0wxNiAwSDhsLS45NSA1LjczQzUuMTkgNy4xOSA0IDkuNDUgNCAxMnMxLjE5IDQuODEgMy4wNSA2LjI3TDggMjRoOGwuOTYtNS43M0E3Ljk3NiA3Ljk3NiAwIDAgMCAyMCAxMnpNNiAxMmMwLTMuMzEgMi42OS02IDYtNnM2IDIuNjkgNiA2LTIuNjkgNi02IDYtNi0yLjY5LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b01vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wMyAzLjU2Yy0xLjY3LTEuMzktMy43NC0yLjMtNi4wMy0yLjUxdjIuMDFjMS43My4xOSAzLjMxLjg4IDQuNjEgMS45MmwxLjQyLTEuNDJ6TTExIDMuMDZWMS4wNWMtMi4yOS4yLTQuMzYgMS4xMi02LjAzIDIuNTFsMS40MiAxLjQyQTguOTI4IDguOTI4IDAgMCAxIDExIDMuMDZ6TTQuOTggNi4zOSAzLjU2IDQuOTdDMi4xNyA2LjY0IDEuMjYgOC43MSAxLjA1IDExaDIuMDFjLjE5LTEuNzMuODgtMy4zMSAxLjkyLTQuNjF6TTIwLjk0IDExaDIuMDFjLS4yMS0yLjI5LTEuMTItNC4zNi0yLjUxLTYuMDNsLTEuNDIgMS40MkE4LjkyOCA4LjkyOCAwIDAgMSAyMC45NCAxMXpNNyAxMmwzLjQ0IDEuNTZMMTIgMTdsMS41Ni0zLjQ0TDE3IDEybC0zLjQ0LTEuNTZMMTIgN2wtMS41NiAzLjQ0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMWE4Ljk2IDguOTYgMCAwIDEtNy40Ni00SDd2LTJIMXY2aDJ2LTIuN2MxLjk5IDIuODQgNS4yNyA0LjcgOSA0LjcgNC44NyAwIDktMy4xNyAxMC40NC03LjU2bC0xLjk2LS40NUMxOS4yNSAxOC40OCAxNS45MiAyMSAxMiAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmxpbmRzQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgxMS4yNWMwIC45Ny43OCAxLjc1IDEuNzUgMS43NXMxLjc1LS43OCAxLjc1LTEuNzVIMjJ2LTJoLTJ6bS0yLThoLTJWOWgydjJ6bS00IDBINlY5aDh2MnptMCAydjJINnYtMmg4em0yIDBoMnYyaC0ydi0yem0yLTZoLTJWNWgydjJ6bS00LTJ2Mkg2VjVoOHpNNiAxOXYtMmg4djJINnptMTAgMHYtMmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsaW5kcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTE2IDloMnYyaC0yVjl6bS0yIDJINlY5aDh2MnptNC00aC0yVjVoMnYyem0tNC0ydjJINlY1aDh6TTYgMTl2LTZoOHYxLjgyQTEuNzQ2IDEuNzQ2IDAgMCAwIDE1IDE4YTEuNzQ2IDEuNzQ2IDAgMCAwIDEtMy4xOFYxM2gydjZINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJvYWRjYXN0T25Ib21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmMwLTEuMS0uOS0yLTItMkg0djJoMTZ2Mi41OWMuNzMuMjkgMS40LjY5IDIgMS4xN1Y2ek04IDlIM2MtLjUgMC0xIC41LTEgMXY5YzAgLjUuNSAxIDEgMWg1Yy41IDAgMS0uNSAxLTF2LTljMC0uNS0uNS0xLTEtMXptLTEgOUg0di03aDN2N3pNMTcuNzUgMTYuOTdjLjMtLjIzLjUtLjU3LjUtLjk3YTEuMjUgMS4yNSAwIDAgMC0yLjUgMGMwIC40LjIuNzUuNS45N1YyMmgxLjV2LTUuMDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEzLjVhMi41IDIuNSAwIDAgMSAyLjUgMi41YzAgLjY5LS4yOCAxLjMxLS43MyAxLjc2bDEuMDYgMS4wNkMyMC41NSAxOC4xIDIxIDE3LjEgMjEgMTZjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDRjMCAxLjEuNDUgMi4xIDEuMTcgMi44M2wxLjA2LTEuMDZBMi41IDIuNSAwIDAgMSAxNyAxMy41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA5LjVhNi41IDYuNSAwIDAgMC02LjUgNi41YzAgMS43OS43MyAzLjQyIDEuOSA0LjZsMS4wNi0xLjA2QzEyLjU2IDE4LjYzIDEyIDE3LjM4IDEyIDE2YzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVjMCAxLjM3LS41NiAyLjYyLTEuNDYgMy41MmwxLjA3IDEuMDZBNi41IDYuNSAwIDAgMCAxNyA5LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb2FkY2FzdE9uUGVyc29uYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA4Yy43IDAgMS4zOC4xIDIuMDIuMjdMMTIgMyA0IDl2MTJoNi43NkE3Ljk5OCA3Ljk5OCAwIDAgMSAxNyA4ek0xNyAxNC43NWMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjUgMCAuNC4yLjc1LjUuOTdWMjJoMS41di01LjAzYy4zLS4yMy41LS41Ny41LS45NyAwLS42OS0uNTYtMS4yNS0xLjI1LTEuMjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYy0yLjIxIDAtNCAxLjc5LTQgNCAwIDEuMS40NSAyLjEgMS4xNyAyLjgzbDEuMDYtMS4wNkEyLjUgMi41IDAgMSAxIDE5LjUgMTZjMCAuNjktLjI4IDEuMzEtLjczIDEuNzZsMS4wNiAxLjA2QzIwLjU1IDE4LjEgMjEgMTcuMSAyMSAxNmMwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOS41YTYuNSA2LjUgMCAwIDAtNi41IDYuNWMwIDEuNzkuNzMgMy40MiAxLjkgNC42bDEuMDYtMS4wNkMxMi41NiAxOC42MyAxMiAxNy4zOCAxMiAxNmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS4zNy0uNTYgMi42Mi0xLjQ2IDMuNTJsMS4wNyAxLjA2QTYuNSA2LjUgMCAwIDAgMTcgOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZHlTbm93aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxOGMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXptMTIgMGMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXptLTkgNGMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXptMy00YzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMS0uNDUtMS0xLTEtMSAuNDUtMSAxem0zIDRjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bTMuNS02aC0xMEE1LjUxIDUuNTEgMCAwIDEgMiAxMC41YzAtMi43NiAyLjA5LTUuMDkgNC43OC01LjQ0QTUuOTc1IDUuOTc1IDAgMCAxIDEyIDJjMi45NyAwIDUuNDUgMi4xOCA1LjkyIDUuMDJBNC41IDQuNSAwIDAgMSAyMiAxMS41YzAgMi40OC0yLjAyIDQuNS00LjUgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJ0YWluc0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTExIDVoMnYxNGgtMlY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJ0YWlucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTguMTkgMTJjMi4wNC0xLjM1IDMuNS0zLjk0IDMuNzYtN2guMDljLjI2IDMuMDYgMS43MiA1LjY1IDMuNzYgNy0yLjA0IDEuMzUtMy41IDMuOTQtMy43NiA3aC0uMDljLS4yNi0zLjA2LTEuNzItNS42NS0zLjc2LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZWN0cmljQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjY5IDIuMjEgNC4zMyAxMS40OWMtLjY0LjU4LS4yOCAxLjY1LjU4IDEuNzNMMTMgMTRsLTQuODUgNi43NmMtLjIyLjMxLS4xOS43NC4wOCAxLjAxLjMuMy43Ny4zMSAxLjA4LjAybDEwLjM2LTkuMjhjLjY0LS41OC4yOC0xLjY1LS41OC0xLjczTDExIDEwbDQuODUtNi43NmMuMjItLjMxLjE5LS43NC0uMDgtMS4wMWEuNzcuNzcgMCAwIDAtMS4wOC0uMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZWN0cmljTWV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00Ljk2IDAtOSA0LjA0LTkgOSAwIDMuOTEgMi41MSA3LjI0IDYgOC40N1YyMmgydi0yLjA2YTguMjYyIDguMjYyIDAgMCAwIDIgMFYyMmgydi0yLjUzYzMuNDktMS4yNCA2LTQuNTcgNi04LjQ3IDAtNC45Ni00LjA0LTktOS05em0yLjI1IDEyLTMgMy0xLjUtMS41TDExIDE0LjI1IDkuNzUgMTNsMy0zIDEuNSAxLjVMMTMgMTIuNzUgMTQuMjUgMTR6TTE2IDlIOFY3aDh2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW5lcmd5U2F2aW5nc0xlYWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzYy00LjggMC05IDMuODYtOSA5IDAgMi4xMi43NCA0LjA3IDEuOTcgNS42MUwzIDE5LjU5IDQuNDEgMjFsMS45Ny0xLjk3QTkuMDEyIDkuMDEyIDAgMCAwIDEyIDIxYzIuMyAwIDQuNjEtLjg4IDYuMzYtMi42NEE4Ljk1IDguOTUgMCAwIDAgMjEgMTJWM2gtOXptMy44MyA5LjI2LTUuMTYgNC42M2MtLjE2LjE1LS40MS4xNC0uNTYtLjAxYS4zOTcuMzk3IDAgMCAxLS4wNC0uNTJsMi40NC0zLjMzLTQuMDUtLjRhLjUxNC41MTQgMCAwIDEtLjMtLjg5bDUuMTYtNC42M2MuMTYtLjE1LjQxLS4xNC41Ni4wMS4xNC4xNC4xNi4zNi4wNC41MmwtMi40NCAzLjMzIDQuMDUuNGMuNDUuMDQuNjMuNTkuMy44OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9nZ3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45MiA3LjAyQzE3LjQ1IDQuMTggMTQuOTcgMiAxMiAyIDkuODIgMiA3LjgzIDMuMTggNi43OCA1LjA2IDQuMDkgNS40MSAyIDcuNzQgMiAxMC41IDIgMTMuNTMgNC40NyAxNiA3LjUgMTZoMTBjMi40OCAwIDQuNS0yLjAyIDQuNS00LjVhNC41IDQuNSAwIDAgMC00LjA4LTQuNDh6bS4wOCA5Ljk5Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS0xMSAzYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS0xLTNoOWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMUg2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xem00IDNoN2MuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMWgtN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2FzTWV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0aC0xVjJoLTJ2MmgtMlYySDl2Mkg4QzUuNzkgNCA0IDUuNzkgNCA4djEwYzAgMi4yMSAxLjc5IDQgNCA0aDhjMi4yMSAwIDQtMS43OSA0LTRWOGMwLTIuMjEtMS43OS00LTQtNHptLTQgMTRjLTEuMzggMC0yLjUtMS4xLTIuNS0yLjQ2IDAtMS4wOS40My0xLjM5IDIuNS0zLjc5IDIuMDUgMi4zOCAyLjUgMi43IDIuNSAzLjc5QzE0LjUgMTYuOSAxMy4zOCAxOCAxMiAxOHptNC04SDhWOGg4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlYXRQdW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02LjI1IDQuMDhjLjgyLjEyIDEuNTcuNDQgMi4yLjkxbC0yLjIgMi4yVjcuMDh6bS0xLjUgMHYzLjExbC0yLjItMi4yYy42My0uNDcgMS4zOC0uNzkgMi4yLS45MXpNNy45OSA5LjA1bDIuMiAyLjJINy4wOGMuMTItLjgyLjQ0LTEuNTcuOTEtMi4yem0tLjkxIDMuN2gzLjExbC0yLjIgMi4yYy0uNDctLjYzLS43OS0xLjM4LS45MS0yLjJ6bTQuMTcgNC4xN2MtLjgyLS4xMi0xLjU3LS40NC0yLjItLjkxbDIuMi0yLjJ2My4xMXpNMTIgMTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLjc1IDMuOTJ2LTMuMTFsMi4yIDIuMmMtLjYzLjQ3LTEuMzguNzktMi4yLjkxem0zLjI2LTEuOTctMi4yLTIuMmgzLjExYy0uMTIuODItLjQ0IDEuNTctLjkxIDIuMnptLTIuMi0zLjcgMi4yLTIuMmMuNDcuNjQuNzkgMS4zOS45MSAyLjJoLTMuMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGVGYW5PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi4zNCA4LjM2LTIuMjkuODJjLS4xOC0uMTMtLjM4LS4yNS0uNTgtLjM0LjE3LS44My42My0xLjU4IDEuMzYtMi4wNkMxNi44NSA1LjQ0IDE2LjE4IDIgMTMuMzkgMmMtMy4wOCAwLTQuOSAxLjQ3LTUuMyAzLjI2TDE4LjczIDE1LjljMS41LjM5IDMuMjctLjUxIDMuMjctMi41MSAwLTQuMzktMy4wMS02LjIzLTUuNjYtNS4wM3pNMi44MSAyLjgxIDEuMzkgNC4yMiA1LjI3IDguMUMzLjc3IDcuNyAyIDguNjEgMiAxMC42MWMwIDQuNCAzLjAxIDYuMjQgNS42NiA1LjAzbDIuMjktLjgyYy4xOC4xMy4zOC4yNS41OC4zNC0uMTcuODMtLjYzIDEuNTgtMS4zNiAyLjA2QzcuMTUgMTguNTYgNy44MiAyMiAxMC42MSAyMmMzLjA4IDAgNC45LTEuNDcgNS4zLTMuMjZsMy44NyAzLjg3IDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5lc3RDYW1XaXJlZFN0YW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuODMgMS4wMS00LjExLjQyQzguNDcgMS43NSA2IDQuNDggNiA3Ljc1czIuNDcgNiA1LjcyIDYuMzNsMS45LjE5LS41Ni44NWMtLjM1LS4wOC0uNy0uMTItMS4wNi0uMTItMi43NiAwLTUgMi4yNC01IDV2MmMwIC41NS40NSAxIDEgMWg4Yy41NSAwIDEtLjQ1IDEtMXYtMmMwLTEuNjctLjgzLTMuMTUtMi4wOS00LjA2bC45Ny0xLjQ1YzEuMTQuMDcgMi4xMi0uODMgMi4xMi0xLjk5VjNjMC0xLjE3LTEtMi4wOS0yLjE3LTEuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE9pbEJhcnJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEzYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xaC0xVjVoMWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDF2Nkg0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDF2Nkg0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xaC0xdi02aDF6bS04IDNjLTEuNjYgMC0zLTEuMzItMy0yLjk1IDAtMS4zLjUyLTEuNjcgMy00LjU1IDIuNDcgMi44NiAzIDMuMjQgMyA0LjU1IDAgMS42My0xLjM0IDIuOTUtMyAyLjk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcm9wYW5lVGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTV2M2MwIDIuMjEgMS43OSA0IDQgNGg4YzIuMjEgMCA0LTEuNzkgNC00di0zSDR6TTIwIDEzdi0zYzAtMS44Ni0xLjI4LTMuNDEtMy0zLjg2VjRjMC0xLjEtLjktMi0yLTJIOWMtMS4xIDAtMiAuOS0yIDJ2Mi4xNGMtMS43Mi40NS0zIDItMyAzLjg2djNoMTZ6TTkgNGg2djJoLTJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDFIOVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcm9wYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNmgtMVY1YzAtMS4xLS45LTItMi0yaC00Yy0xLjEgMC0yIC45LTIgMnYxSDdjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDZ2M2gydi0zaDZ2M2gydi0zYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0tNy0xaDR2MWgtNFY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb2xsZXJTaGFkZXNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDguMjVjMCAuOTcuNzggMS43NSAxLjc1IDEuNzVzMS43NS0uNzggMS43NS0xLjc1SDIydi0yaC0yek02IDE5di0yaDV2Mkg2em03IDB2LTJoNXYyaC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb2xsZXJTaGFkZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek02IDE5di02aDV2MS44Yy0uNC4zLS44LjgtLjggMS40IDAgMSAuOCAxLjggMS44IDEuOHMxLjgtLjggMS44LTEuOGMwLS42LS4zLTEuMS0uOC0xLjRWMTNoNXY2SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnNvckRvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE4aDE2VjRjMC0xLjEtLjktMi0yLTJ6bS0yLjUgMTEuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnNvck9jY3VwaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTFjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTMtMyAxLjM0LTMgMyAxLjM0IDMgMyAzek0xMiAxMmMtMS44NCAwLTMuNTYuNS01LjAzIDEuMzctLjYxLjM1LS45NyAxLjAyLS45NyAxLjcyVjE3aDEydi0xLjkxYzAtLjctLjM2LTEuMzYtLjk3LTEuNzJBOS44NDQgOS44NDQgMCAwIDAgMTIgMTJ6TTIxLjIzIDguMTVsMS44NS0uNzdBMTIuMDU2IDEyLjA1NiAwIDAgMCAxNi42Mi45MmwtLjc3IDEuODVjMi40MiAxLjAyIDQuMzYgMi45NiA1LjM4IDUuMzh6TTguMTUgMi43NyA3LjM4LjkyQTEyLjA4OSAxMi4wODkgMCAwIDAgLjkyIDcuMzhsMS44NS43N2MxLjAyLTIuNDIgMi45Ni00LjM2IDUuMzgtNS4zOHpNMi43NyAxNS44NWwtMS44NS43N2MxLjIyIDIuOTEgMy41NSA1LjI1IDYuNDYgNi40NmwuNzctMS44NWExMC4xMTcgMTAuMTE3IDAgMCAxLTUuMzgtNS4zOHpNMTUuODUgMjEuMjNsLjc3IDEuODVjMi45MS0xLjIyIDUuMjUtMy41NSA2LjQ2LTYuNDZsLTEuODUtLjc3YTEwLjExNyAxMC4xMTcgMCAwIDEtNS4zOCA1LjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5zb3JXaW5kb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0djE2SDZWNGgxMm0wLTJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek03IDE5aDEwdi02SDd2NnptMy05aDR2MWgzVjVIN3Y2aDN2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoZWx2ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxdjJINVYxSDN2MjJoMnYtMmgxNHYyaDJWMWgtMnptMCA0djZoLTZWN0g3djRINVY1aDE0em0tMiAxNHYtNGgtNnY0SDV2LTZoMTR2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hpZWxkTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6bTMuOTcgMTIuNDFjLTEuODQgMi4xNy01LjIxIDIuMS02Ljk2LS4wNy0yLjE5LTIuNzItLjY1LTYuNzIgMi42OS03LjMzLjM0LS4wNi42My4yNy41MS42LS40NiAxLjIzLS4zOSAyLjY0LjMyIDMuODZhNC41MSA0LjUxIDAgMCAwIDMuMTggMi4yYy4zNC4wNS40OS40Ny4yNi43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU25vd2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTIuNzVhMS4yNSAxLjI1IDAgMSAxIDAgMi41IDEuMjUgMS4yNSAwIDAgMSAwLTIuNXpNNC43NSA2YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTEyIDhhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHptMC04YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bS05IDEyYTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTAtOGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0zIDRhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHptMC04YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTMgMTJhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHptMC04YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNvbGFyUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjMzIDE2SDExdi0zSDR6TTEzIDE2aDcuNjdMMjAgMTNoLTd6TTIxLjExIDE4SDEzdjRoOXpNMiAyMmg5di00SDIuODl6TTExIDhoMnYzaC0yek0xNS43NjQgNy4yMDVsMS40MTUtMS40MTRMMTkuMyA3LjkxMmwtMS40MTQgMS40MTR6TTQuNzA1IDcuOTEzIDYuODI2IDUuNzkgOC4yNCA3LjIwNiA2LjEyIDkuMzI3ek0zIDJoM3YySDN6TTE4IDJoM3YyaC0zek0xMiA3YzIuNzYgMCA1LTIuMjQgNS01SDdjMCAyLjc2IDIuMjQgNSA1IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1bm55U25vd2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDVoLTJWMWgydjR6TTEgMTFoNHYySDF2LTJ6bTE4IDJ2LTJoNHYyaC00em0tMS4zNC01LjI0LTEuNDEtMS40MSAyLjgzLTIuODMgMS40MSAxLjQxLTIuODMgMi44M3pNMy41MSA0LjkzbDEuNDEtMS40MSAyLjgzIDIuODMtMS40MSAxLjQxLTIuODMtMi44M3pNNC43NSAxN2ExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0xMiAwYTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bS05IDRhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHptMy00YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTMgNGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwek0xNyAxM3YtMWMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNXYxaDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdW5ueSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDRWMmMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MmMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXptNy4zNiAzLjA1IDEuNDEtMS40MmEuOTk2Ljk5NiAwIDEgMC0xLjQxLTEuNDFsLTEuNDEgMS40MmEuOTk2Ljk5NiAwIDEgMCAxLjQxIDEuNDF6TTIyIDExaC0yYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTF6bS0xMCA4Yy0uNTUgMC0xIC40NS0xIDF2MmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTF2LTJjMC0uNTUtLjQ1LTEtMS0xek01LjY0IDcuMDUgNC4yMiA1LjY0Yy0uMzktLjM5LS4zOS0xLjAzIDAtMS40MXMxLjAzLS4zOSAxLjQxIDBsMS40MSAxLjQxYy4zOS4zOS4zOSAxLjAzIDAgMS40MXMtMS4wMi4zOS0xLjQgMHptMTEuMzEgOS45YS45OTYuOTk2IDAgMCAwIDAgMS40MWwxLjQxIDEuNDFjLjM5LjM5IDEuMDMuMzkgMS40MSAwYS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMS40MS0xLjQxYS45OTYuOTk2IDAgMCAwLTEuNDEgMHpNMiAxM2gyYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xSDJjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF6bTMuNjQgNi43OCAxLjQxLTEuNDFjLjM5LS4zOS4zOS0xLjAzIDAtMS40MXMtMS4wMy0uMzktMS40MSAwbC0xLjQxIDEuNDFhLjk5Ni45OTYgMCAwIDAgMCAxLjQxYy4zOC4zOSAxLjAyLjM5IDEuNDEgMHpNMTIgNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsU2hhZGVzQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnpNMTMgNWgxLjV2MTRIMTNWNXptLTIgMTRIOS41VjVIMTF2MTR6TTYgNWgxLjV2MTRINlY1em0xMC41IDE0VjVIMTh2MTRoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmVydGljYWxTaGFkZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yem0tMTAgMFY1aDR2MTRoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpbmRQb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgM2g2djJINHpNMSA3aDV2Mkgxek0zIDE5aDV2Mkgzek0xMy43MyAxMC42MWMuNzUuMjMgMS4zLjc4IDEuNTcgMS40Nmw0LjI3LTcuMTFhMi4yOCAyLjI4IDAgMCAwLTMuNTEtMi44NGwtMy40MyAzLjIxYy0uNC4zNy0uNjMuOS0uNjMgMS40NXYzLjkzYy4zNi0uMTUuOTgtLjMzIDEuNzMtLjF6TTEwLjYxIDEyLjI3Yy4xNi0uNTIuNDgtLjk2Ljg5LTEuMjdIMy4yOGEyLjI3OSAyLjI3OSAwIDAgMC0uNjMgNC40N2w0LjUxIDEuMjljLjUzLjE1IDEuMS4wOCAxLjU4LS4yMWwyLjY5LTEuNjFhMi40ODcgMi40ODcgMCAwIDEtLjgyLTIuNjd6TTIyLjIxIDE4LjYxbC0yLjI4LTQuMWEyLjA1IDIuMDUgMCAwIDAtMS4yNi0uOTdsLTMuMTgtLjhjLjAzLjMyIDAgLjY2LS4xLjk5QTIuNDc4IDIuNDc4IDAgMCAxIDEzIDE1LjVjLS42MSAwLS45OS0uMjItMS0uMjJWMjFjLTEuMSAwLTIgLjktMiAyaDZjMC0xLjEtLjktMi0yLTJ2LTQuMjhsNC42MSA0LjYxYy44OS44OSAyLjMzLjg5IDMuMjIgMCAuNzItLjcyLjg4LTEuODMuMzgtMi43MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNTYgMTQuNDNjLjc5LjI0IDEuNjMtLjIgMS44Ny0xIC4yNC0uNzktLjItMS42My0xLTEuODctLjc5LS4yNC0xLjYzLjItMS44NyAxLS4yNC43OS4yMSAxLjYzIDEgMS44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTBNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSA3SDE1djNoLTEuNXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDUuNXY2SDguNVY3SDdWNS41aDN6bTYuNSA1YzAgLjU1LS40NSAxLTEgMUgxM2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDIuNWMuNTUgMCAxIC40NSAxIDF2NHptLTEgMy41SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxMU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTEgNS41djZIOS41VjdIOFY1LjVoM3ptNSAwdjZoLTEuNVY3SDEzVjUuNWgzem0tLjUgOC41SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxMk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTAgNS41djZIOC41VjdIN1Y1LjVoM3pNMTUuNSA5aC0ydjFoM3YxLjVIMTJWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41aDMuNWMuNTUgMCAxIC40NSAxIDFWOGMwIC41NS0uNDUgMS0xIDF6bTAgNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTNNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDUuNXY2SDguNVY3SDdWNS41aDN6bTYuNSA1YzAgLjU1LS40NSAxLTEgMUgxMlYxMGgzVjloLTJWOGgyVjdoLTNWNS41aDMuNWMuNTUgMCAxIC40NSAxIDF2NHptLTEgMy41SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxNE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTAgNS41djZIOC41VjdIN1Y1LjVoM3ptNy41IDQuNWgtMXYxLjVIMTVWMTBoLTNWNS41aDEuNXYzSDE1di0zaDEuNXYzaDFWMTB6bS0yIDRIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDE1TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzek0xNi41IDdoLTN2MWgyYy41NSAwIDEgLjQ1IDEgMXYxLjVjMCAuNTUtLjQ1IDEtMSAxSDEyVjEwaDNWOWgtM1Y1LjVoNC41Vjd6bS0xIDdIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDE2TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgOUgxNXYxLjVoLTEuNXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDUuNXY2SDguNVY3SDdWNS41aDN6bTMgNmMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDMuNVY3aC0zdjFoMmMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMUgxM3ptMi41IDIuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTdNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDUuNXY2SDguNVY3SDdWNS41aDN6bTUgNmgtMS43NUwxNC42MiA3SDEyVjUuNWgzLjVjLjY3IDAgMS4xNS42NS45NiAxLjI5TDE1IDExLjV6bS41IDIuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMThNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDUuNXY2SDguNVY3SDdWNS41aDN6bTYuNSA1YzAgLjU1LS40NSAxLTEgMUgxM2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDIuNWMuNTUgMCAxIC40NSAxIDF2NHptLTMgMEgxNVY5aC0xLjV2MS41em0wLTIuNUgxNVY2LjVoLTEuNVY4em0yIDZIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDE5TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyA3aDNWOWgtMmMtLjU1IDAtMS0uNDUtMS0xVjYuNWMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjRjMCAuNTUtLjQ1IDEtMSAxSDEyVjEwem0xLjUtMkgxNVY2LjVoLTEuNVY4ek03IDUuNWgzdjZIOC41VjdIN1Y1LjV6bTUgMTNoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em02LjUtMi41YzAgLjU1LS40NSAxLTEgMWgtMnYxLjVIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNnptLTMtMkgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMjBNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSA3SDE2djNoLTEuNXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6bTItOGMwIC41NS0uNDUgMS0xIDFIMTRjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjR6TTEwIDlIOHYxaDN2MS41SDYuNVY5YzAtLjU1LjQ1LTEgMS0xaDJWN2gtM1Y1LjVIMTBjLjU1IDAgMSAuNDUgMSAxVjhjMCAuNTUtLjQ1IDEtMSAxem01LjUgNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMjFNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTExIDlIOXYxaDN2MS41SDcuNVY5YzAtLjU1LjQ1LTEgMS0xaDJWN2gtM1Y1LjVIMTFjLjU1IDAgMSAuNDUgMSAxVjhjMCAuNTUtLjQ1IDEtMSAxem0zLTMuNWgzdjZoLTEuNVY3SDE0VjUuNXptMS41IDguNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMjJNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDlIOHYxaDN2MS41SDYuNVY5YzAtLjU1LjQ1LTEgMS0xaDJWN2gtM1Y1LjVIMTBjLjU1IDAgMSAuNDUgMSAxVjhjMCAuNTUtLjQ1IDEtMSAxem02LjUgMGgtMnYxaDN2MS41SDEzVjljMC0uNTUuNDUtMSAxLTFoMlY3aC0zVjUuNWgzLjVjLjU1IDAgMSAuNDUgMSAxVjhjMCAuNTUtLjQ1IDEtMSAxem0tMSA1SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQyM01wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTAgOUg4djFoM3YxLjVINi41VjljMC0uNTUuNDUtMSAxLTFoMlY3aC0zVjUuNUgxMGMuNTUgMCAxIC40NSAxIDFWOGMwIC41NS0uNDUgMS0xIDF6bTcuNSAxLjVjMCAuNTUtLjQ1IDEtMSAxSDEzVjEwaDNWOWgtMlY4aDJWN2gtM1Y1LjVoMy41Yy41NSAwIDEgLjQ1IDEgMXY0em0tMiAzLjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDI0TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA5SDh2MWgzdjEuNUg2LjVWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41SDEwYy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptOC41IDFoLTF2MS41SDE2VjEwaC0zVjUuNWgxLjV2M0gxNnYtM2gxLjV2M2gxVjEwem0tMyA0SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQyTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0tMi05LjVoLTJ2MWgzdjEuNUgxMFY5YzAtLjU1LjQ1LTEgMS0xaDJWN2gtM1Y1LjVoMy41Yy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptMiA1SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzMEZwc1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNHYyaDV2Mkg1djJoNHYySDR2Mmg1YzEuMSAwIDItLjkgMi0ydi0xLjVjMC0uODMtLjE3LTEuNS0xLTEuNS44MyAwIDEtLjY3IDEtMS41VjZjMC0xLjEtLjktMi0yLTJINHptMTQgMGMxLjEgMCAyIC45IDIgMnY2YzAgMS4xLS45IDItMiAyaC0zYy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoM3ptMCAyaC0zdjZoM1Y2ek01IDIySDN2LTVoMnY1em00IDBIN3YtNWgydjV6bTQgMGgtMnYtNWgydjV6bTggMGgtNnYtNWg2djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDNNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6bS0xLThjMCAuNTUtLjQ1IDEtMSAxSDEwVjEwaDNWOWgtMlY4aDJWN2gtM1Y1LjVoMy41Yy41NSAwIDEgLjQ1IDEgMXY0em0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMtOC41aC0xdjEuNWgtMS41VjEwaC0zVjUuNUgxMXYzaDEuNXYtM0gxNHYzaDFWMTB6bS41IDguNUgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6bTAtNC41SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ1TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xNC41IDdoLTN2MWgyYy41NSAwIDEgLjQ1IDEgMXYxLjVjMCAuNTUtLjQ1IDEtMSAxSDEwVjEwaDNWOWgtM1Y1LjVoNC41Vjd6bTEgN0gxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNjBGcHNTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA2djZoLTNWNmgzem0wLTJoLTNjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmgzYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS03IDJWNEg2Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMnYtMmMwLTEuMS0uOS0yLTItMkg2VjZoNXptLTIgNHYySDZ2LTJoM3pNNSAyMkgzdi01aDJ2NXptNCAwSDd2LTVoMnY1em00IDBoLTJ2LTVoMnY1em04IDBoLTZ2LTVoNnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ2TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgOUgxM3YxLjVoLTEuNXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0tMS03Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoMy41VjdoLTN2MWgyYy41NSAwIDEgLjQ1IDEgMXYxLjVjMCAuNTUtLjQ1IDEtMSAxSDExem00LjUgN0gxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6bTAtNC41SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ3TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0tMi41LTdoLTEuNzVMMTIuNjIgN0gxMFY1LjVoMy41Yy42NyAwIDEuMTUuNjUuOTYgMS4yOUwxMyAxMS41em0yLjUgMi41SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ4TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgOUgxM3YxLjVoLTEuNXptMC0yLjVIMTNWOGgtMS41ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXptLTEtOGMwIC41NS0uNDUgMS0xIDFIMTFjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjR6bTEgMy41SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ5TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgNi41SDEzVjhoLTEuNXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6bS0xLThjMCAuNTUtLjQ1IDEtMSAxSDEwVjEwaDNWOWgtMmMtLjU1IDAtMS0uNDUtMS0xVjYuNWMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjR6bTEgMy41SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRBUGhvdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDRWMWgydjNoM3YySDV2M0gzVjZIMFY0aDN6bTMgNlY3aDNWNGg3bDEuODMgMkgyMWMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg1Yy0xLjEgMC0yLS45LTItMlYxMGgzem03IDljMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTUtNSAyLjI0LTUgNSAyLjI0IDUgNSA1em0tMy4yLTVjMCAxLjc3IDEuNDMgMy4yIDMuMiAzLjJzMy4yLTEuNDMgMy4yLTMuMi0xLjQzLTMuMi0zLjItMy4yLTMuMiAxLjQzLTMuMiAzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFBob3RvQWx0ZXJuYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN3YyLjk5cy0xLjk5LjAxLTIgMFY3aC0zcy4wMS0xLjk5IDAtMmgzVjJoMnYzaDN2MmgtM3ptLTMgNFY4aC0zVjVINWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtOGgtM3pNNSAxOWwzLTQgMiAzIDMtNCA0IDVINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkVG9QaG90b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0xIDloLTR2NGgtMnYtNEg5VjloNFY1aDJ2NGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkanVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0zLThjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbmltYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyYy0yLjcxIDAtNS4wNSAxLjU0LTYuMjIgMy43OGE3LjA2MiA3LjA2MiAwIDAgMC0zIDNBNy4wMTQgNy4wMTQgMCAwIDAgMiAxNWMwIDMuODcgMy4xMyA3IDcgNyAyLjcxIDAgNS4wNS0xLjU0IDYuMjItMy43OGE3LjA2MiA3LjA2MiAwIDAgMCAzLTNBNy4wMTQgNy4wMTQgMCAwIDAgMjIgOWMwLTMuODctMy4xMy03LTctN3pNOSAyMGE1LjAwMiA1LjAwMiAwIDAgMS00LThjMCAzLjg3IDMuMTMgNyA3IDctLjg0LjYzLTEuODggMS0zIDF6bTMtM2E1LjAwMiA1LjAwMiAwIDAgMS00LThjMCAzLjg2IDMuMTMgNi45OSA3IDctLjg0LjYzLTEuODggMS0zIDF6bTQuNy0zLjNjLS41My4xOS0xLjEuMy0xLjcuMy0yLjc2IDAtNS0yLjI0LTUtNSAwLS42LjExLTEuMTcuMy0xLjcuNTMtLjE5IDEuMS0uMyAxLjctLjMgMi43NiAwIDUgMi4yNCA1IDUgMCAuNi0uMTEgMS4xNy0uMyAxLjd6TTE5IDEyYzAtMy44Ni0zLjEzLTYuOTktNy03YTUuMDAyIDUuMDAyIDAgMCAxIDcgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3Npc3RhbnRQaG90byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjQgNiAxNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lzdGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg0bDMgMyAzLTNoNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNS4xMiAxMC44OEwxMiAxN2wtMS44OC00LjEyTDYgMTFsNC4xMi0xLjg4TDEyIDVsMS44OCA0LjEyTDE4IDExbC00LjEyIDEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1ZGlvdHJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzdjkuMjhhNC4zOSA0LjM5IDAgMCAwLTEuNS0uMjhDOC4wMSAxMiA2IDE0LjAxIDYgMTYuNVM4LjAxIDIxIDEwLjUgMjFjMi4zMSAwIDQuMi0xLjc1IDQuNDUtNEgxNVY2aDRWM2gtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0F3ZXNvbWVNb3NhaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRhMiAyIDAgMCAwIDIgMmg2VjNINWEyIDIgMCAwIDAtMiAyem0xNi0yaC02djhoOFY1YzAtMS4xLS45LTItMi0yem0tNiAxOGg2YzEuMSAwIDItLjkgMi0ydi02aC04djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9Bd2Vzb21lTW90aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg0YTIgMiAwIDAgMC0yIDJ2MTBoMlY0aDEwVjJ6bTQgNEg4YTIgMiAwIDAgMC0yIDJ2MTBoMlY4aDEwVjZ6bTIgNGgtOGEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg4YzEuMSAwIDItLjkgMi0ydi04YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvQXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDkgMS4yNS0yLjc1TDIzIDVsLTIuNzUtMS4yNUwxOSAxbC0xLjI1IDIuNzVMMTUgNWwyLjc1IDEuMjVMMTkgOXptLTcuNS41TDkgNCA2LjUgOS41IDEgMTJsNS41IDIuNUw5IDIwbDIuNS01LjVMMTcgMTJsLTUuNS0yLjV6TTE5IDE1bC0xLjI1IDIuNzVMMTUgMTlsMi43NSAxLjI1TDE5IDIzbDEuMjUtMi43NUwyMyAxOWwtMi43NS0xLjI1TDE5IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvRml4SGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSA1LjYgMTAgNyA4LjYgNC41IDEwIDIgNy41IDMuNCA1IDJsMS40IDIuNUw1IDd6bTEyIDkuOEwxNyAxNGwxLjQgMi41TDE3IDE5bDIuNS0xLjRMMjIgMTlsLTEuNC0yLjVMMjIgMTR6TTIyIDJsLTIuNSAxLjRMMTcgMmwxLjQgMi41TDE3IDdsMi41LTEuNEwyMiA3bC0xLjQtMi41em0tNy42MyA1LjI5YS45OTYuOTk2IDAgMCAwLTEuNDEgMEwxLjI5IDE4Ljk2YS45OTYuOTk2IDAgMCAwIDAgMS40MWwyLjM0IDIuMzRjLjM5LjM5IDEuMDIuMzkgMS40MSAwTDE2LjcgMTEuMDVhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjMzLTIuMzV6bS0xLjAzIDUuNDktMi4xMi0yLjEyIDIuNDQtMi40NCAyLjEyIDIuMTItMi40NCAyLjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvRml4Tm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMi0yLjUgMS40TDE3IDJsMS40IDIuNUwxNyA3bDIuNS0xLjRMMjIgN2wtMS40LTIuNXptLTcuNjMgNS4yOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBMMS4yOSAxOC45NmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi4zNCAyLjM0Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMEwxNi43IDExLjA1YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zMy0yLjM1em0tMS4wMyA1LjQ5LTIuMTItMi4xMiAyLjQ0LTIuNDQgMi4xMiAyLjEyLTIuNDQgMi40NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0ZpeE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMyAxLTIuNSAxLjRMMTggMWwxLjQgMi41TDE4IDZsMi41LTEuNEwyMyA2bC0xLjQtMi41TDIzIDF6bS04LjM0IDYuMjIgMi4xMiAyLjEyLTIuNDQgMi40NC44MS44MSAyLjU1LTIuNTVhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwTDExLjQgOC44NGwuODEuODEgMi40NS0yLjQzem0tLjc4IDYuNjUtMy43NS0zLjc1LTYuODYtNi44NkwyIDQuNTNsNi44NiA2Ljg2LTYuNTcgNi41N2EuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi4zNCAyLjM0Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw2LjU3LTYuNTdMMTkuNDcgMjJsMS4yNy0xLjI3LTYuODYtNi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b1N0b3JpZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDEtNSA1djExbDUtNC41VjF6TTEgNnYxNC42NWMwIC4yNS4yNS41LjUuNS4xIDAgLjE1LS4wNS4yNS0uMDVDMy4xIDIwLjQ1IDUuMDUgMjAgNi41IDIwYzEuOTUgMCA0LjA1LjQgNS41IDEuNVY2Yy0xLjQ1LTEuMS0zLjU1LTEuNS01LjUtMS41UzIuNDUgNC45IDEgNnptMjIgMTMuNVY2Yy0uNi0uNDUtMS4yNS0uNzUtMi0xdjEzLjVjLTEuMS0uMzUtMi4zLS41LTMuNS0uNS0xLjcgMC00LjE1LjY1LTUuNSAxLjV2MmMxLjM1LS44NSAzLjgtMS41IDUuNS0xLjUgMS42NSAwIDMuMzUuMyA0Ljc1IDEuMDUuMS4wNS4xNS4wNS4yNS4wNS4yNSAwIC41LS4yNS41LS41di0xLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9mcHNTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMyA2LjNoLS4wNmwtMS4wMiAyLjg5aDIuMXpNMyAxN2gydjVIM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTVjMy4zMSAwIDYtMi42OSA2LTZzLTIuNjktNi02LTYtNiAyLjY5LTYgNiAyLjY5IDYgNiA2em0tLjYzLTEwaDEuMjVsMi42MyA3aC0xLjIxbC0uNjMtMS43OWgtMi44M0w5Ljk2IDEySDguNzRsMi42My03ek03IDE3aDJ2NUg3ek0xMSAxN2gydjVoLTJ6TTE1IDE3aDZ2NWgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmVkdGltZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTU5IDkuOTU5IDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4wNCAwIDMuOTMtLjYyIDUuNTEtMS42NmwyLjI3IDIuMjcgMS40MS0xLjQyek0xMi4zNCAyLjAyYy0yLjE4LS4wNy00LjE5LjU1LTUuODUgMS42NGw0LjU5IDQuNTljLS4yNy0yLjA1LjEtNC4yMiAxLjI2LTYuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlZHRpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4zNCAyLjAyQzYuNTkgMS44MiAyIDYuNDIgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAzLjcxIDAgNi45My0yLjAyIDguNjYtNS4wMi03LjUxLS4yNS0xMi4wOS04LjQzLTguMzItMTQuOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsdXJDaXJjdWxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDljLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6TTcgOS41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMyA3Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptLTMtM2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTMtNmMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTE0IDljLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC0xLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0zIDZjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTRjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMi0zLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTMuNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVyTGluZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNy41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek05IDEzYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxek0zIDIxaDE4di0ySDN2MnpNNSA5LjVjLjgzIDAgMS41LS42NyAxLjUtMS41UzUuODMgNi41IDUgNi41IDMuNSA3LjE3IDMuNSA4IDQuMTcgOS41IDUgOS41em0wIDRjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6TTkgMTdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptOC0uNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTMgM3YyaDE4VjNIM3ptMTQgNS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptMCA0Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTMgOWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA0Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsdXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bS0uMiA0LjQ4LjIuMDJjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjVsLjAyLjJjLjA5LjY3LjYxIDEuMTkgMS4yOCAxLjI4ek0xNCAzLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tNCAwYy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptMTEgN2MuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEwIDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptOCA4Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptLTQgMTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTIuNSA1LjI3bDMuNzggMy43OEw2IDljLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xYzAtLjEtLjAzLS4xOS0uMDYtLjI4bDIuODEgMi44MWMtLjcxLjExLTEuMjUuNzMtMS4yNSAxLjQ3IDAgLjgzLjY3IDEuNSAxLjUgMS41Ljc0IDAgMS4zNi0uNTQgMS40Ny0xLjI1bDIuODEgMi44MUEuODc1Ljg3NSAwIDAgMCAxNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTFjMC0uMS0uMDMtLjE5LS4wNi0uMjhsMy43OCAzLjc4TDIwIDIwLjIzIDMuNzcgNCAyLjUgNS4yN3pNMTAgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMTEtMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek0zIDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTcgMTFjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek02IDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zLTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsdXJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0tMyAuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xNSA1LjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtMy41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptLTExIDEwYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNyA3Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0xN2MuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEwIDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA1LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em04IC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLThjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC00Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMgOC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTQgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCAzLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tNC0xMmMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAgOC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTQtNC41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMC00Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJpZ2h0bmVzczEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3MyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMmMtMS44MiAwLTMuNTMuNS01IDEuMzVDNy45OSA1LjA4IDEwIDguMyAxMCAxMnMtMi4wMSA2LjkyLTUgOC42NUM2LjQ3IDIxLjUgOC4xOCAyMiAxMCAyMmM1LjUyIDAgMTAtNC40OCAxMC0xMFMxNS41MiAyIDEwIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3MzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyYy0xLjA1IDAtMi4wNS4xNi0zIC40NiA0LjA2IDEuMjcgNyA1LjA2IDcgOS41NCAwIDQuNDgtMi45NCA4LjI3LTcgOS41NC45NS4zIDEuOTUuNDYgMyAuNDYgNS41MiAwIDEwLTQuNDggMTAtMTBTMTQuNTIgMiA5IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3M0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjlMMjMuMzEgMTIgMjAgOC42OXpNMTIgMThjLS44OSAwLTEuNzQtLjItMi41LS41NUMxMS41NiAxNi41IDEzIDE0LjQyIDEzIDEycy0xLjQ0LTQuNS0zLjUtNS40NUMxMC4yNiA2LjIgMTEuMTEgNiAxMiA2YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjMxIDIzLjMxIDEyIDIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5ek0xMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3M2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuMzEgMjMuMzEgMTIgMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjl6TTEyIDE4VjZjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3M3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjlMMjMuMzEgMTIgMjAgOC42OXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2em0wLTEwYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJva2VuSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTIxIDE5YzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1djYuNTlsLTMtMy4wMS00IDQuMDEtNC00LTQgNC0zLTMuMDFWNWMwLTEuMS45LTIgMi0yaDE0YzEuMSAwIDIgLjkgMiAyem0tMyA2LjQyIDMgMy4wMVYxOWMwIDEuMS0uOSAyLTIgMkg1Yy0xLjEgMC0yLS45LTItMnYtNi41OGwzIDIuOTkgNC00IDQgNCA0LTMuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJydXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNGMtMS42NiAwLTMgMS4zNC0zIDMgMCAxLjMxLTEuMTYgMi0yIDIgLjkyIDEuMjIgMi40OSAyIDQgMiAyLjIxIDAgNC0xLjc5IDQtNCAwLTEuNjYtMS4zNC0zLTMtM3ptMTMuNzEtOS4zNy0xLjM0LTEuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwTDkgMTIuMjUgMTEuNzUgMTVsOC45Ni04Ljk2YS45OTYuOTk2IDAgMCAwIDAtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVyc3RNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDVoMnYxNEgxem00IDBoMnYxNEg1em0xNyAwSDEwYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xek0xMSAxN2wyLjUtMy4xNUwxNS4yOSAxNmwyLjUtMy4yMkwyMSAxN0gxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzLjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyIDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJoLTMuMTdMMTUgMkg5em0zIDE1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyMEg1djJoNXYybDMtMy0zLTN2MnptNCAwdjJoNXYtMmgtNXpNMTIgOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMS45OS45LTEuOTkgMlMxMC45IDggMTIgOHptNS04SDdDNS45IDAgNSAuOSA1IDJ2MTRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYyYzAtMS4xLS45LTItMi0yek03IDJoMTB2MTAuNWMwLTEuNjctMy4zMy0yLjUtNS0yLjVzLTUgLjgzLTUgMi41VjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYVJlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyMEg1djJoNXYybDMtMy0zLTN2MnptNCAwdjJoNXYtMmgtNXptMy0yMEg3QzUuOSAwIDUgLjkgNSAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMnptLTUgNmMtMS4xMSAwLTItLjktMi0ycy44OS0yIDEuOTktMiAyIC45IDIgMkMxNCA1LjEgMTMuMSA2IDEyIDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYVJvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA1YzAtMS4xLS45LTItMi0yaC0xVjJjMC0uNTUtLjQ1LTEtMS0xSDZjLS41NSAwLTEgLjQ1LTEgMXYxSDRjLTEuMSAwLTIgLjktMiAydjE1YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMmg4VjVoLTh6bS0yIDEzaC0ydi0yaDJ2MnptMC05aC0yVjdoMnYyem00IDloLTJ2LTJoMnYyem0wLTloLTJWN2gydjJ6bTQgOWgtMnYtMmgydjJ6bTAtOWgtMlY3aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS40IDEwLjUgNC43Ny04LjI2YTkuOTg0IDkuOTg0IDAgMCAwLTguNDkgMi4wMWwzLjY2IDYuMzUuMDYtLjF6TTIxLjU0IDljLS45Mi0yLjkyLTMuMTUtNS4yNi02LTYuMzRMMTEuODggOWg5LjY2em0uMjYgMWgtNy40OWwuMjkuNSA0Ljc2IDguMjVBOS45MSA5LjkxIDAgMCAwIDIyIDEyYzAtLjY5LS4wNy0xLjM1LS4yLTJ6TTguNTQgMTJsLTMuOS02Ljc1QTkuOTU4IDkuOTU4IDAgMCAwIDIuMiAxNGg3LjQ5bC0xLjE1LTJ6bS02LjA4IDNjLjkyIDIuOTIgMy4xNSA1LjI2IDYgNi4zNEwxMi4xMiAxNUgyLjQ2em0xMS4yNyAwLTMuOSA2Ljc2YTkuOTg0IDkuOTg0IDAgMCAwIDguNDktMi4wMWwtMy42Ni02LjM1LS45MyAxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhc2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNlY0bC0yLTJoLTVMOSA0djJINXYxMXMxIDIgMiAyaDEzczItLjk4IDItMlY2aC00ek00IDlIMnYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMkg0Vjl6bTctNGMwLS41NS41My0xIDEtMWgzYy40NiAwIDEgLjU0IDEgMXYxaC01VjV6TTUgNmgxN3YxMWMwIDEuMS0uOSAyLTIgMkg3Yy0xLjEgMC0yLS45LTItMlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDZW50ZXJGb2N1c1N0cm9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0tNyA3SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENlbnRlckZvY3VzV2VhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTVIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00ek01IDVoNFYzSDVjLTEuMSAwLTIgLjktMiAydjRoMlY1em0xNC0yaC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtNHYyaDRjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2NHpNMTIgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbGxlY3Rpb25zQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxMC0yLjUtMS41TDE1IDEyVjRoNXY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2xsZWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2VjRjMC0xLjEtLjktMi0yLTJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnptLTExLTQgMi4wMyAyLjcxTDE2IDExbDQgNUg4bDMtNHpNMiA2djE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbG9yTGVucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNhOSA5IDAgMCAwIDAgMThjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjM5LS4xNS0uNzQtLjM5LTEuMDEtLjIzLS4yNi0uMzgtLjYxLS4zOC0uOTkgMC0uODMuNjctMS41IDEuNS0xLjVIMTZjMi43NiAwIDUtMi4yNCA1LTUgMC00LjQyLTQuMDMtOC05LTh6bS01LjUgOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyem0zLTRDOC42NyA4IDggNy4zMyA4IDYuNVM4LjY3IDUgOS41IDVzMS41LjY3IDEuNSAxLjVTMTAuMzMgOCA5LjUgOHptNSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTMuNjcgNSAxNC41IDVzMS41LjY3IDEuNSAxLjVTMTUuMzMgOCAxNC41IDh6bTMgNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjY3IDkgMTcuNSA5czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29sb3JpemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC43MSA1LjYzLTIuMzQtMi4zNGEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTMuMTIgMy4xMi0xLjkzLTEuOTEtMS40MSAxLjQxIDEuNDIgMS40MkwzIDE2LjI1VjIxaDQuNzVsOC45Mi04LjkyIDEuNDIgMS40MiAxLjQxLTEuNDEtMS45Mi0xLjkyIDMuMTItMy4xMmMuNC0uNC40LTEuMDMuMDEtMS40MnpNNi45MiAxOSA1IDE3LjA4bDguMDYtOC4wNiAxLjkyIDEuOTJMNi45MiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tcGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1djJoMlYxaC0ydjJ6bTAgMTVINWw1LTZ2NnptOS0xNWgtNXYyaDV2MTNsLTUtNnY5aDVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udHJhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmM1LjUyIDAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMHptMS0xNy45M2MzLjk0LjQ5IDcgMy44NSA3IDcuOTNzLTMuMDUgNy40NC03IDcuOTNWNC4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udHJvbFBvaW50RHVwbGljYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOGgtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMmgtM3pNMiAxMmMwLTIuNzkgMS42NC01LjIgNC4wMS02LjMyVjMuNTJDMi41MiA0Ljc2IDAgOC4wOSAwIDEyczIuNTIgNy4yNCA2LjAxIDguNDh2LTIuMTZBNi45OSA2Ljk5IDAgMCAxIDIgMTJ6bTEzLTljLTQuOTYgMC05IDQuMDQtOSA5czQuMDQgOSA5IDkgOS00LjA0IDktOS00LjA0LTktOS05em0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udHJvbFBvaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wMTY5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN0g1Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCA4SDVWOWgxNHY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wMzIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2SDVjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEwSDVWOGgxNHY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wNTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg1VjZoMTR2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3A3NSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVINWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDEySDVWN2gxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcERpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcEZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2NGgyVjVoNFYzSDVjLTEuMSAwLTIgLjktMiAyem0yIDEwSDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHptMTQgNGgtNHYyaDRjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2NHptMC0xNmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3BMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxMkg1VjdoMTR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3BPcmlnaW5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHptLTUuMDQtNi43MS0yLjc1IDMuNTQtMS45Ni0yLjM2TDYuNSAxN2gxMWwtMy41NC00LjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzSDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3BSb3RhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDcgMjEuNDlDNC4yIDE5LjkzIDEuODYgMTYuNzYgMS41IDEzSDBjLjUxIDYuMTYgNS42NiAxMSAxMS45NSAxMSAuMjMgMCAuNDQtLjAyLjY2LS4wM0w4LjggMjAuMTVsLTEuMzMgMS4zNHpNMTIuMDUgMGMtLjIzIDAtLjQ0LjAyLS42Ni4wNGwzLjgxIDMuODEgMS4zMy0xLjMzQzE5LjggNC4wNyAyMi4xNCA3LjI0IDIyLjUgMTFIMjRjLS41MS02LjE2LTUuNjYtMTEtMTEuOTUtMTF6TTE2IDE0aDJWOGEyIDIgMCAwIDAtMi0yaC02djJoNnY2em0tOCAyVjRINnYySDR2MmgydjhhMiAyIDAgMCAwIDIgMmg4djJoMnYtMmgydi0ySDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3BTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg2VjZoMTJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNWgyVjdjMC0xLjEtLjktMi0yLTJIOXYyaDh2OHpNNyAxN1YxSDV2NEgxdjJoNHYxMGMwIDEuMS45IDIgMiAyaDEwdjRoMnYtNGg0di0ySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEN1cnJlbmN5Qml0Y29pbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjA2IDExLjU3Yy41OS0uNjkuOTQtMS41OS45NC0yLjU3IDAtMS44Ni0xLjI3LTMuNDMtMy0zLjg3VjNoLTJ2MmgtMlYzSDl2Mkg2djJoMnYxMEg2djJoM3YyaDJ2LTJoMnYyaDJ2LTJjMi4yMSAwIDQtMS43OSA0LTQgMC0xLjQ1LS43OC0yLjczLTEuOTQtMy40M3pNMTAgN2g0YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMmgtNFY3em01IDEwaC01di00aDVjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJyZW5jeUZyYW5jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNVYzSDd2MTNINXYyaDJ2M2gydi0zaDR2LTJIOXYtM2g4di0ySDlWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lMaXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA4Ljc2VjNoMnY0LjUxTDE1IDV2Mi4zNmwtNCAyLjUxLjAxIDIuMzVMMTUgOS43MnYyLjM2bC00IDIuNTFWMTljMi43NiAwIDUtMi4yNCA1LTVoMmMwIDMuODctMy4xMyA3LTcgN0g5di01LjE2bC0zIDEuODh2LTIuMzZsMy0xLjg4di0yLjM2TDYgMTN2LTIuMzZsMy0xLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJyZW5jeVBvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMjFjMS45MyAwIDMuNjItMS4xNyA0LTNsLTEuNzUtLjg4QzE2IDE4LjIxIDE1LjMzIDE5IDE0IDE5SDkuMWMuODMtMSAxLjUtMi4zNCAxLjUtNCAwLS4zNS0uMDMtLjY5LS4wOC0xSDE0di0ySDkuODJDOSAxMC40MiA4IDkuNiA4IDhhMy41IDMuNSAwIDAgMSA2Ljc4LTEuMjJMMTYuNjMgNmMtLjgtMi4wNS0yLjc5LTMuNS01LjEzLTMuNUM4LjQ2IDIuNSA2IDQuOTYgNiA4YzAgMS43OC43OSAyLjkgMS40OSA0SDZ2MmgyLjQ3Yy4wOC4zMS4xMy42NC4xMyAxIDAgMi43LTIuNiA0LTIuNiA0djJoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lSdWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgM0g3djlINXYyaDJ2Mkg1djJoMnYzaDJ2LTNoNHYtMkg5di0yaDQuNWMzLjA0IDAgNS41LTIuNDYgNS41LTUuNVMxNi41NCAzIDEzLjUgM3ptMCA5SDlWNWg0LjVDMTUuNDMgNSAxNyA2LjU3IDE3IDguNVMxNS40MyAxMiAxMy41IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJyZW5jeVJ1cGVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNjYgN2MtLjU2LTEuMTgtMS43Ni0yLTMuMTYtMkg2VjNoMTJ2MmgtMy4yNmMuNDguNTguODQgMS4yNiAxLjA1IDJIMTh2MmgtMi4wMmMtLjI1IDIuOC0yLjYxIDUtNS40OCA1aC0uNzNsNi43MyA3aC0yLjc3TDcgMTR2LTJoMy41YzEuNzYgMCAzLjIyLTEuMyAzLjQ2LTNINlY3aDcuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEN1cnJlbmN5WWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTIgMTFIMTh2MmgtNXYyaDV2MmgtNXY0aC0ydi00SDZ2LTJoNXYtMkg2di0yaDQuMDhMNSAzaDIuMzdMMTIgMTAuMjkgMTYuNjMgM0gxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lZdWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMjggMTJIMTh2MmgtNXY3aC0ydi03SDZ2LTJoNC43Mkw1IDNoMi4zN0wxMiAxMC4yOSAxNi42MyAzSDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZWJsdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzdjE4YTkgOSAwIDAgMCAwLTE4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjNcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjNcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjIxXCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiM1wiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjEwXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlaGF6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTUuNXYyaDIwdi0ySDJ6bTAtNXYyaDIwdi0ySDJ6bTAtNXYyaDIwdi0ySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldGFpbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDIgMjFoMjBMMTIgM3ptMSA1LjkyTDE4LjYgMTlIMTNWOC45MnptLTIgMFYxOUg1LjRMMTEgOC45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlydHlMZW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOTUgMTlIMjBWN0g0djEyaDcuMjRjLjE0LS45OC40Mi0yLjA1LS4xNi0yLjQzLS44OS0uNTktMS4yNyAyLjA2LTIuOCAxLjM1LTEuMzktMS4xMiAxLjA1LTEuMjkuNS0zLjI3LS4yMi0uNzktMi4yOC4zNi0yLjQtMS4yNC0uMDgtMSAxLjQ5LS43NCAxLjUxLTEuNDkuMDMtLjc1LTEuMDMtMS4wNS0uMjUtMS45MS4yMi0uMjQuNzEtLjI2LjkxLS4xOS43OS4yNyAxLjU1IDEuODIgMi41MSAxLjE5IDEuMDMtLjY2LTEuODgtMi4zNSAwLTIuODYgMS42NC0uNDQgMS4zMSAyLjA4IDIuNjUgMi40NCAxLjk0LjUyIDIuNjUtNC41NSA0LjQxLTIuMzMgMS44NSAyLjMzLTMuNDMgMi4yNy0yLjg1IDQuMDEuMzQgMS4wMSAyLjE1LTEuMiAyLjc2LjUzLjY0IDEuODMtMy4wOS44Mi0zLjA0IDEuNjYuMDYuODMgMi40MS41NSAxLjY0IDIuMTItMS4xNCAxLjg2LTMtMS4wMy0zLjgxLjA5LS4zOS41Ny0uMDkgMS40OS4xMyAyLjMzek0yMCA1YzEuMSAwIDIgLjkgMiAydjEyYzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjdjMC0xLjEuOS0yIDItMmgzLjE3TDkgM2g2bDEuODMgMkgyMHptLTEuODYgMTMuMDFjLS40NyAwLS44Ni0uMzgtLjg2LS44NnMuMzgtLjg2Ljg2LS44NmMuNDcgMCAuODYuMzguODYuODZzLS4zOC44Ni0uODYuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE4LjVBNi40OCA2LjQ4IDAgMCAxIDkuMjQgMTVIMTVsMS0ySDguNThjLS4wNS0uMzMtLjA4LS42Ni0uMDgtMXMuMDMtLjY3LjA4LTFIMTVsMS0ySDkuMjRBNi40OTEgNi40OTEgMCAwIDEgMTUgNS41YzEuNjEgMCAzLjA5LjU5IDQuMjMgMS41N0wyMSA1LjNBOC45NTUgOC45NTUgMCAwIDAgMTUgM2MtMy45MiAwLTcuMjQgMi41MS04LjQ4IDZIM2wtMSAyaDQuMDZhOC4yNjIgOC4yNjIgMCAwIDAgMCAySDNsLTEgMmg0LjUyYzEuMjQgMy40OSA0LjU2IDYgOC40OCA2IDIuMzEgMCA0LjQxLS44NyA2LTIuM2wtMS43OC0xLjc3Yy0xLjEzLjk4LTIuNiAxLjU3LTQuMjIgMS41N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwb3N1cmVOZWcxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTF2Mmg4di0ySDR6bTE1IDdoLTJWNy4zOEwxNCA4LjRWNi43TDE4LjcgNWguM3YxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwb3N1cmVOZWcyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjA1IDE2LjI5IDIuODYtMy4wN2MuMzgtLjM5LjcyLS43OSAxLjA0LTEuMTguMzItLjM5LjU5LS43OC44Mi0xLjE3LjIzLS4zOS40MS0uNzguNTQtMS4xN3MuMTktLjc5LjE5LTEuMThjMC0uNTMtLjA5LTEuMDItLjI3LTEuNDYtLjE4LS40NC0uNDQtLjgxLS43OC0xLjExLS4zNC0uMzEtLjc3LS41NC0xLjI2LS43MUE1LjcyIDUuNzIgMCAwIDAgMTYuNDcgNWMtLjY5IDAtMS4zMS4xMS0xLjg1LjMyLS41NC4yMS0xIC41MS0xLjM2Ljg4LS4zNy4zNy0uNjUuOC0uODQgMS4zLS4xOC40Ny0uMjcuOTctLjI4IDEuNWgyLjE0Yy4wMS0uMzEuMDUtLjYuMTMtLjg3LjA5LS4yOS4yMy0uNTQuNC0uNzUuMTgtLjIxLjQxLS4zNy42OC0uNDkuMjctLjEyLjYtLjE4Ljk2LS4xOC4zMSAwIC41OC4wNS44MS4xNS4yMy4xLjQzLjI1LjU5LjQzLjE2LjE4LjI4LjQuMzcuNjUuMDguMjUuMTMuNTIuMTMuODEgMCAuMjItLjAzLjQzLS4wOC42NS0uMDYuMjItLjE1LjQ1LS4yOS43LS4xNC4yNS0uMzIuNTMtLjU2LjgzLS4yMy4zLS41Mi42NS0uODggMS4wM2wtNC4xNyA0LjU1VjE4SDIxdi0xLjcxaC01Ljk1ek0yIDExdjJoOHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBvc3VyZVBsdXMxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDdIOHY0SDR2Mmg0djRoMnYtNGg0di0yaC00Vjd6bTEwIDExaC0yVjcuMzhMMTUgOC40VjYuN0wxOS43IDVoLjN2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cG9zdXJlUGx1czIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuMDUgMTYuMjkgMi44Ni0zLjA3Yy4zOC0uMzkuNzItLjc5IDEuMDQtMS4xOC4zMi0uMzkuNTktLjc4LjgyLTEuMTcuMjMtLjM5LjQxLS43OC41NC0xLjE3LjEzLS4zOS4xOS0uNzkuMTktMS4xOCAwLS41My0uMDktMS4wMi0uMjctMS40Ni0uMTgtLjQ0LS40NC0uODEtLjc4LTEuMTEtLjM0LS4zMS0uNzctLjU0LTEuMjYtLjcxQTUuNzIgNS43MiAwIDAgMCAxNy40NyA1Yy0uNjkgMC0xLjMxLjExLTEuODUuMzItLjU0LjIxLTEgLjUxLTEuMzYuODgtLjM3LjM3LS42NS44LS44NCAxLjMtLjE4LjQ3LS4yNy45Ny0uMjggMS41aDIuMTRjLjAxLS4zMS4wNS0uNi4xMy0uODcuMDktLjI5LjIzLS41NC40LS43NS4xOC0uMjEuNDEtLjM3LjY4LS40OS4yNy0uMTIuNi0uMTguOTYtLjE4LjMxIDAgLjU4LjA1LjgxLjE1LjIzLjEuNDMuMjUuNTkuNDMuMTYuMTguMjguNC4zNy42NS4wOC4yNS4xMy41Mi4xMy44MSAwIC4yMi0uMDMuNDMtLjA4LjY1LS4wNi4yMi0uMTUuNDUtLjI5LjctLjE0LjI1LS4zMi41My0uNTYuODMtLjIzLjMtLjUyLjY1LS44OCAxLjAzbC00LjE3IDQuNTVWMThIMjJ2LTEuNzFoLTUuOTV6TTggN0g2djRIMnYyaDR2NGgydi00aDR2LTJIOFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBvc3VyZVplcm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4xNCAxMi41YzAgMS0uMSAxLjg1LS4zIDIuNTUtLjIuNy0uNDggMS4yNy0uODMgMS43LS4zNi40NC0uNzkuNzUtMS4zLjk1LS41MS4yLTEuMDcuMy0xLjcuMy0uNjIgMC0xLjE4LS4xLTEuNjktLjMtLjUxLS4yLS45NS0uNTEtMS4zMS0uOTUtLjM2LS40NC0uNjUtMS4wMS0uODUtMS43LS4yLS43LS4zLTEuNTUtLjMtMi41NXYtMi4wNGMwLTEgLjEtMS44NS4zLTIuNTUuMi0uNy40OC0xLjI2Ljg0LTEuNjkuMzYtLjQzLjgtLjc0IDEuMzEtLjkzQzEwLjgxIDUuMSAxMS4zOCA1IDEyIDVjLjYzIDAgMS4xOS4xIDEuNy4yOS41MS4xOS45NS41IDEuMzEuOTMuMzYuNDMuNjQuOTkuODQgMS42OS4yLjcuMyAxLjU0LjMgMi41NXYyLjA0em0tMi4xMS0yLjM2YzAtLjY0LS4wNS0xLjE4LS4xMy0xLjYyLS4wOS0uNDQtLjIyLS43OS0uNC0xLjA2LS4xNy0uMjctLjM5LS40Ni0uNjQtLjU4LS4yNS0uMTMtLjU0LS4xOS0uODYtLjE5LS4zMiAwLS42MS4wNi0uODYuMThzLS40Ny4zMS0uNjQuNThjLS4xNy4yNy0uMzEuNjItLjQgMS4wNnMtLjEzLjk4LS4xMyAxLjYydjIuNjdjMCAuNjQuMDUgMS4xOC4xNCAxLjYyLjA5LjQ1LjIzLjgxLjQgMS4wOXMuMzkuNDguNjQuNjEuNTQuMTkuODcuMTljLjMzIDAgLjYyLS4wNi44Ny0uMTlzLjQ2LS4zMy42My0uNjFjLjE3LS4yOC4zLS42NC4zOS0xLjA5LjA5LS40NS4xMy0uOTkuMTMtMS42MnYtMi42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwb3N1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek02IDdoNXYxLjVINlY3em0xMyAxMkg1TDE5IDV2MTR6bS00LjUtM3YySDE2di0yaDJ2LTEuNWgtMnYtMmgtMS41djJoLTJWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY2VSZXRvdWNoaW5nTmF0dXJhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjc3IDguNTgtLjkyIDIuMDFjLjA5LjQ2LjE1LjkzLjE1IDEuNDEgMCA0LjQxLTMuNTkgOC04IDhzLTgtMy41OS04LThjMC0uMDUuMDEtLjEgMC0uMTQgMi42LS45OCA0LjY5LTIuOTkgNS43NC01LjU1QTEwIDEwIDAgMCAwIDE3LjUgMTBjLjQ1IDAgLjg5LS4wNCAxLjMzLS4xbC0uNi0xLjMyLS44OC0xLjkzLTEuOTMtLjg4LTIuNzktMS4yNyAyLjc5LTEuMjcuNzEtLjMyQTkuODYgOS44NiAwIDAgMCAxMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBjMC0xLjQ3LS4zMy0yLjg3LS45LTQuMTNsLS4zMy43MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjYgNS42IDE5LjUgOGwtMS4xLTIuNEwxNiA0LjVsMi40LTEuMUwxOS41IDFsMS4xIDIuNEwyMyA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY2VSZXRvdWNoaW5nT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAxMGMuNzUgMCAxLjQ3LS4wOSAyLjE3LS4yNC4yMS43MS4zMyAxLjQ2LjMzIDIuMjQgMCAxLjIyLS4yOCAyLjM3LS43NyAzLjRsMS40OSAxLjQ5QTkuOTgxIDkuOTgxIDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTEuNzggMC0zLjQ0LjQ3LTQuODkgMS4yOGw1LjMzIDUuMzNjMS40OS44OCAzLjIxIDEuMzkgNS4wNiAxLjM5ek0xLjg5IDMuNzJsMi4xOSAyLjE5QTkuOTU4IDkuOTU4IDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4yOSAwIDQuNC0uNzggNi4wOS0yLjA4bDIuMTkgMi4xOSAxLjQxLTEuNDFMMy4zMSAyLjMxIDEuODkgMy43MnptMTQuNzcgMTQuNzdBNy45MSA3LjkxIDAgMCAxIDEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLS4wNS4wMS0uMSAwLS4xNGE5Ljk0NiA5Ljk0NiAwIDAgMCAzLjY0LTIuMzlsOS4wMiA5LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXIxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTExIDEwaDJWNWgtNHYyaDJ2OHptNy0xNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXIyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE4LTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHptLTQtNGgtNHYtMmgyYTIgMiAwIDAgMCAyLTJWN2EyIDIgMCAwIDAtMi0yaC00djJoNHYyaC0yYTIgMiAwIDAgMC0yIDJ2NGg2di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXIzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMUg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTQgOHYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YTIgMiAwIDAgMC0yLTJoLTR2Mmg0djJoLTJ2MmgydjJoLTR2Mmg0YTIgMiAwIDAgMCAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlcjQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTIgMTBoMlY1aC0ydjRoLTJWNWgtMnY2aDR2NHptNi0xNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXI1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMUg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTQgOHYtMmEyIDIgMCAwIDAtMi0yaC0yVjdoNFY1aC02djZoNHYyaC00djJoNGEyIDIgMCAwIDAgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXI2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE4LTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHptLTgtMmgyYTIgMiAwIDAgMCAyLTJ2LTJhMiAyIDAgMCAwLTItMmgtMlY3aDRWNWgtNGEyIDIgMCAwIDAtMiAydjZhMiAyIDAgMCAwIDIgMnptMC00aDJ2MmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyNyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTIgNC04VjVoLTZ2Mmg0bC00IDhoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyOCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmEyIDIgMCAwIDAgMi0ydi0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjdhMiAyIDAgMCAwLTItMmgtMmEyIDIgMCAwIDAtMiAydjEuNWMwIC44My42NyAxLjUgMS41IDEuNS0uODMgMC0xLjUuNjctMS41IDEuNVYxM2EyIDIgMCAwIDAgMiAyem0wLThoMnYyaC0yVjd6bTAgNGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlcjlQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTExIDdWOGEyIDIgMCAwIDAtMi0yaC0xYTIgMiAwIDAgMC0yIDJ2MWEyIDIgMCAwIDAgMiAyaDF2MUg5djJoM2EyIDIgMCAwIDAgMi0yem0tMy0zVjhoMXYxaC0xem0xMC04SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCA4aC0yVjdoLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2Nkg3VjNoMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyOSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6TTE1IDVoLTJhMiAyIDAgMCAwLTIgMnYyYTIgMiAwIDAgMCAyIDJoMnYyaC00djJoNGEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMnptMCA0aC0yVjdoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJCQW5kVyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LTctOHY4SDVsNy04VjVoN3YxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyQ2VudGVyRm9jdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6TTEyIDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJEcmFtYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0YTcuNDggNy40OCAwIDAgMC02LjY0IDQuMDRBNS45OTYgNS45OTYgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0aDJjMC0yLjc2LTEuODYtNS4wOC00LjQtNS43OEM4LjYxIDYuODggMTAuMiA2IDEyIDZjMy4wMyAwIDUuNSAyLjQ3IDUuNSA1LjV2LjVIMTljMS42NSAwIDMgMS4zNSAzIDNzLTEuMzUgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckZyYW1lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRoLTRsLTQtNC00IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDRWNmg0LjUybDMuNTItMy41TDE1LjUyIDZIMjB2MTR6TTE4IDhINnYxMGgxMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJIZHIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTMuNzUgNSAyLjg1IDMuOC0xLjYgMS4yQzkuODEgMTMuNzUgNyAxMCA3IDEwbC02IDhoMjJMMTQgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyTm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlclRpbHRTaGlmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDQuMDdWMi4wNWMtMi4wMS4yLTMuODQgMS01LjMyIDIuMjFMNy4xIDUuNjlBNy45NDEgNy45NDEgMCAwIDEgMTEgNC4wN3ptNy4zMi4xOUE5Ljk0OSA5Ljk0OSAwIDAgMCAxMyAyLjA1djIuMDJjMS40Ni4xOCAyLjc5Ljc2IDMuOSAxLjYybDEuNDItMS40M3pNMTkuOTMgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMyTDE4LjMxIDcuMWE3Ljk0MSA3Ljk0MSAwIDAgMSAxLjYyIDMuOXpNNS42OSA3LjEgNC4yNiA1LjY4QTkuOTQ5IDkuOTQ5IDAgMCAwIDIuMDUgMTFoMi4wMmMuMTgtMS40Ni43Ni0yLjc5IDEuNjItMy45ek00LjA3IDEzSDIuMDVjLjIgMi4wMSAxIDMuODQgMi4yMSA1LjMybDEuNDMtMS40M0E3Ljg2OCA3Ljg2OCAwIDAgMSA0LjA3IDEzek0xNSAxMmMwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzIDMtMS4zNCAzLTN6bTMuMzEgNC45IDEuNDMgMS40M2E5Ljk4MSA5Ljk4MSAwIDAgMCAyLjIxLTUuMzJoLTIuMDJhNy45NDUgNy45NDUgMCAwIDEtMS42MiAzLjg5ek0xMyAxOS45M3YyLjAyYzIuMDEtLjIgMy44NC0xIDUuMzItMi4yMWwtMS40My0xLjQzYy0xLjEuODYtMi40MyAxLjQ0LTMuODkgMS42MnptLTcuMzItLjE5QTkuOTgxIDkuOTgxIDAgMCAwIDExIDIxLjk1di0yLjAyYTcuOTQxIDcuOTQxIDAgMCAxLTMuOS0xLjYybC0xLjQyIDEuNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlclZpbnRhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC43IDEyLjRhNi4wNiA2LjA2IDAgMCAwLS44Ni0uNGMuMjktLjExLjU4LS4yNC44Ni0uNGE2LjAxMiA2LjAxMiAwIDAgMCAzLTUuMTkgNi4wMDcgNi4wMDcgMCAwIDAtNiAwYy0uMjguMTYtLjU0LjM1LS43OC41NC4wNS0uMzEuMDgtLjYzLjA4LS45NSAwLTIuMjItMS4yMS00LjE1LTMtNS4xOUMxMC4yMSAxLjg1IDkgMy43OCA5IDZjMCAuMzIuMDMuNjQuMDguOTUtLjI0LS4yLS41LS4zOS0uNzgtLjU1YTYuMDA4IDYuMDA4IDAgMCAwLTYgMCA1Ljk3IDUuOTcgMCAwIDAgMyA1LjE5Yy4yOC4xNi41Ny4yOS44Ni40LS4yOS4xMS0uNTguMjQtLjg2LjRhNi4wMTIgNi4wMTIgMCAwIDAtMyA1LjE5IDYuMDA3IDYuMDA3IDAgMCAwIDYgMGMuMjgtLjE2LjU0LS4zNS43OC0uNTQtLjA1LjMyLS4wOC42NC0uMDguOTYgMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTkgMS43OS0xLjA0IDMtMi45NyAzLTUuMTkgMC0uMzItLjAzLS42NC0uMDgtLjk1LjI0LjIuNS4zOC43OC41NGE2LjAwOCA2LjAwOCAwIDAgMCA2IDAgNi4wMTIgNi4wMTIgMCAwIDAtMy01LjE5ek0xMiAxNmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljk2IDEwLjI5LTIuNzUgMy41NC0xLjk2LTIuMzZMOC41IDE1aDExbC0zLjU0LTQuNzF6TTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMUgxdjJoNnYtMnptMi4xNy0zLjI0TDcuMDUgNS42NCA1LjY0IDcuMDVsMi4xMiAyLjEyIDEuNDEtMS40MXpNMTMgMWgtMnY2aDJWMXptNS4zNiA2LjA1LTEuNDEtMS40MS0yLjEyIDIuMTIgMS40MSAxLjQxIDIuMTItMi4xMnpNMTcgMTF2Mmg2di0yaC02em0tNS0yYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMi44MyA3LjI0IDIuMTIgMi4xMiAxLjQxLTEuNDEtMi4xMi0yLjEyLTEuNDEgMS40MXptLTkuMTkuNzEgMS40MSAxLjQxIDIuMTItMi4xMi0xLjQxLTEuNDEtMi4xMiAyLjEyek0xMSAyM2gydi02aC0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYXNoQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMnYxMmgzdjlsNy0xMkg5bDQtOUgzem0xNiAwaC0ybC0zLjIgOWgxLjlsLjctMmgzLjJsLjcgMmgxLjlMMTkgMnptLTIuMTUgNS42NUwxOCA0bDEuMTUgMy42NWgtMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFzaE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMjcgMyAyIDQuMjdsNSA1VjEzaDN2OWwzLjU4LTYuMTRMMTcuNzMgMjAgMTkgMTguNzMgMy4yNyAzek0xNyAxMGgtNGw0LThIN3YyLjE4bDguNDYgOC40NkwxNyAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhc2hPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMnYxMWgzdjlsNy0xMmgtNGw0LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaXBDYW1lcmFBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMFY4SDUuMDlDNi40NyA1LjYxIDkuMDUgNCAxMiA0YzMuNzIgMCA2Ljg1IDIuNTYgNy43NCA2aDIuMDZjLS45My00LjU2LTQuOTYtOC05LjgtOC0zLjI3IDAtNi4xOCAxLjU4LTggNC4wMVY0SDJ2Nmg2ek0xNiAxNHYyaDIuOTFjLTEuMzggMi4zOS0zLjk2IDQtNi45MSA0LTMuNzIgMC02Ljg1LTIuNTYtNy43NC02SDIuMmMuOTMgNC41NiA0Ljk2IDggOS44IDggMy4yNyAwIDYuMTgtMS41OCA4LTQuMDFWMjBoMnYtNmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxpcENhbWVyYUlvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMTdMMTUgM0g5TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS04IDEzYy0yLjc2IDAtNS0yLjI0LTUtNUg1bDIuNS0yLjVMMTAgMTNIOGMwIDIuMjEgMS43OSA0IDQgNCAuNTggMCAxLjEzLS4xMyAxLjYyLS4zNWwuNzQuNzRjLS43MS4zNy0xLjUuNjEtMi4zNi42MXptNC41LTIuNUwxNCAxM2gyYzAtMi4yMS0xLjc5LTQtNC00LS41OCAwLTEuMTMuMTMtMS42Mi4zNWwtLjc0LS43M0MxMC4zNSA4LjI0IDExLjE0IDggMTIgOGMyLjc2IDAgNSAyLjI0IDUgNWgybC0yLjUgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMjFoMnYtMmgtMnYyem00LTEyaDJWN2gtMnYyek0zIDV2MTRjMCAxLjEuOSAyIDIgMmg0di0ySDVWNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ6bTE2LTJ2MmgyYzAtMS4xLS45LTItMi0yem0tOCAyMGgyVjFoLTJ2MjJ6bTgtNmgydi0yaC0ydjJ6TTE1IDVoMlYzaC0ydjJ6bTQgOGgydi0yaC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmFkaWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDloMnYyaC0yem0tMiAyaDJ2Mkg5em00IDBoMnYyaC0yem0yLTJoMnYyaC0yek03IDloMnYySDd6bTEyLTZINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE4SDd2LTJoMnYyem00IDBoLTJ2LTJoMnYyem00IDBoLTJ2LTJoMnYyem0yLTdoLTJ2MmgydjJoLTJ2LTJoLTJ2MmgtMnYtMmgtMnYySDl2LTJIN3YySDV2LTJoMnYtMkg1VjVoMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTYgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyLThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tNCA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmlkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA0djEuNDVsMiAyVjRoNHY0aC0zLjQ1bDIgMkgxNHYxLjQ1bDIgMlYxMGg0djRoLTMuNDVsMiAySDIwdjEuNDVsMiAyVjRjMC0xLjEtLjktMi0yLTJINC41NWwyIDJIOHptOCAwaDR2NGgtNFY0ek0xLjI3IDEuMjcgMCAyLjU1bDIgMlYyMGMwIDEuMS45IDIgMiAyaDE1LjQ2bDIgMiAxLjI3LTEuMjdMMS4yNyAxLjI3ek0xMCAxMi41NSAxMS40NSAxNEgxMHYtMS40NXptLTYtNkw1LjQ1IDhINFY2LjU1ek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGgzLjQ1bC41NS41NVYxNHptNiA2aC00di00aDMuNDVsLjU1LjU0VjIwem0yIDB2LTEuNDZMMTcuNDYgMjBIMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyaWRPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGg0djR6bTAtNkg0VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJFbmhhbmNlZFNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNiAyLjY5LTYgNi02em0wIDJDOS43OSA0IDggNS43OSA4IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTEgN2gtMlY5SDlWN2gyVjVoMnYyaDJ2MmgtMnYyem0xMSA5aC0ydjJoLTEuNXYtMmgtMnYtMS41aDJ2LTJIMjJ2MmgyVjIwem0tNi0xLjVjMCAuNi0uNCAxLjEtLjkgMS40TDE4IDIyaC0xLjVsLS45LTJoLTEuMXYySDEzdi02aDMuNWMuOCAwIDEuNS43IDEuNSAxLjV2MXptLTEuNSAwdi0xaC0ydjFoMnptLTEzLS41di0ySDV2NkgzLjV2LTIuNWgtMlYyMkgwdi02aDEuNXYyaDJ6bTYuNS0yYy44IDAgMS41LjcgMS41IDEuNXYzYzAgLjgtLjcgMS41LTEuNSAxLjVINi41di02SDEwem0wIDQuNXYtM0g4djNoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDE1di0yaDEuMWwuOSAySDIxbC0uOS0yLjFjLjUtLjIuOS0uOC45LTEuNHYtMWMwLS44LS43LTEuNS0xLjUtMS41SDE2djQuOWwxLjEgMS4xaC40em0wLTQuNWgydjFoLTJ2LTF6bS00LjUgMHYuNGwxLjUgMS41di0xLjljMC0uOC0uNy0xLjUtMS41LTEuNWgtMS45bDEuNSAxLjVoLjR6bS0zLjUtMS03LTctMS4xIDFMNi45IDloLS40djJoLTJWOUgzdjZoMS41di0yLjVoMlYxNUg4di00LjlsMS41IDEuNVYxNWgzLjRsNy42IDcuNiAxLjEtMS4xLTEyLjEtMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkck9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMS41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTZ2NmgxLjV2LTJoMS4xbC45IDJIMjFsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJWOUgzdjZoMS41di0yLjVoMlYxNUg4VjlINi41djJ6TTEzIDlIOS41djZIMTNjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNWgtMnYtM2gydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTQuNWgydjFoLTJ6TTE0LjUgNy41SDE2djNoLTEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxMy41YzAgLjYtLjQgMS4xLS45IDEuNEwxMiAxOWgtMS41bC0uOS0ySDguNXYySDd2LTZoMy41Yy44IDAgMS41LjcgMS41IDEuNXYxem0wLTMuNWgtMS41VjkuNWgtMlYxMkg3VjZoMS41djJoMlY2SDEydjZ6bTUuNSA0SDE2djEuNWgtMS41VjE2SDEzdi0xLjVoMS41VjEzSDE2djEuNDloMS41VjE2em0wLTUuNWMwIC44LS43IDEuNS0xLjUgMS41aC0zVjZoM2MuOCAwIDEuNS43IDEuNSAxLjV2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyU3Ryb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6TTUgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkcldlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0xMi0yYy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptMCAxMGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlYWxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy43MyAxMi4wMiAzLjk4LTMuOThhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC00LjM0LTQuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0zLjk4IDMuOThMOCAyLjI5YTEuMDAxIDEuMDAxIDAgMCAwLTEuNDEgMEwyLjI1IDYuNjNhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDMuOTggMy45OEwyLjI1IDE2YS45OTYuOTk2IDAgMCAwIDAgMS40MWw0LjM0IDQuMzRjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDMuOTgtMy45OCAzLjk4IDMuOThjLjIuMi40NS4yOS43MS4yOS4yNiAwIC41MS0uMS43MS0uMjlsNC4zNC00LjM0YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMy45OS0zLjk4ek0xMiA5Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS00LjcxIDEuOTZMMy42NiA3LjM0bDMuNjMtMy42MyAzLjYyIDMuNjItMy42MiAzLjYzek0xMCAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yIDJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTIuNjYgOS4zNC0zLjYzLTMuNjIgMy42My0zLjYzIDMuNjIgMy42Mi0zLjYyIDMuNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhldmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTFoLTFWOUgzdjZoMS41di0yLjVoMVYxNUg3VjlINS41ek0yMSAxMXYtMWMwLS41NS0uNDUtMS0xLTFoLTJjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi0xaC0xLjV2LjVoLTF2LTNoMXYuNUgyMXpNMTQuMjUgMTMuNSAxMy41IDlIMTJsMSA2aDIuNWwxLTZIMTV6TTggOXY2aDMuNXYtMS41aC0ydi0xaDJWMTFoLTJ2LS41aDJWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlkZUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWMwLTEuMS0uOS0yLTItMkg1LjgzTDIxIDE4LjE3VjV6TTIuODEgMi44MSAxLjM5IDQuMjIgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMS42MSAxLjYxIDEuNDEtMS40MUwyLjgxIDIuODF6TTYgMTdsMy00IDIuMjUgMyAuODItMS4xIDIuMSAyLjFINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1hZ2VBc3BlY3RSYXRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEwaC0ydjJoMnYtMnptMCA0aC0ydjJoMnYtMnptLTgtNEg2djJoMnYtMnptNCAwaC0ydjJoMnYtMnptOC02SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEltYWdlTm90U3VwcG9ydGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuOSAyMS45LTguNDktOC40OS05LjgyLTkuODJMMi4xIDIuMS42OSAzLjUxIDMgNS44M1YxOWMwIDEuMS45IDIgMiAyaDEzLjE3bDIuMzEgMi4zMSAxLjQyLTEuNDF6TTUgMThsMy41LTQuNSAyLjUgMy4wMUwxMi4xNyAxNWwzIDNINXptMTYgLjE3TDUuODMgM0gxOWMxLjEgMCAyIC45IDIgMnYxMy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1hZ2VTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM3Y3SDRWNmg1LjAyYy4wNS0uNzEuMjItMS4zOC40OC0ySDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTVsLTItMnptLTEuNSA1aC0xMWwyLjc1LTMuNTMgMS45NiAyLjM2IDIuNzUtMy41NHptMi44LTkuMTFjLjQ0LS43LjctMS41MS43LTIuMzlDMjAgNC4wMSAxNy45OSAyIDE1LjUgMlMxMSA0LjAxIDExIDYuNXMyLjAxIDQuNSA0LjQ5IDQuNWMuODggMCAxLjctLjI2IDIuMzktLjdMMjEgMTMuNDIgMjIuNDIgMTIgMTkuMyA4Ljg5ek0xNS41IDlhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yek04LjUgMTMuNWwyLjUgMy4wMUwxNC41IDEybDQuNSA2SDVsMy41LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5jb21wbGV0ZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTIuNzYgMS4xMi01LjI2IDIuOTMtNy4wN0wxMiAxMlYyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJc28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTUuNSA3LjVoMnYtMkg5djJoMlY5SDl2Mkg3LjVWOWgtMlY3LjV6TTE5IDE5SDVMMTkgNXYxNHptLTItMnYtMS41aC01VjE3aDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDYtMy43NSA1IDIuODUgMy44LTEuNiAxLjJDOS44MSAxMy43NSA3IDEwIDcgMTBsLTYgOGgyMkwxNCA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMZWFrQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzSDN2M2MxLjY2IDAgMy0xLjM0IDMtM3ptOCAwaC0yYTkgOSAwIDAgMS05IDl2MmM2LjA4IDAgMTEtNC45MyAxMS0xMXptLTQgMEg4YzAgMi43Ni0yLjI0IDUtNSA1djJjMy44NyAwIDctMy4xMyA3LTd6bTAgMThoMmE5IDkgMCAwIDEgOS05di0yYy02LjA3IDAtMTEgNC45My0xMSAxMXptOCAwaDN2LTNjLTEuNjYgMC0zIDEuMzQtMyAzem0tNCAwaDJjMC0yLjc2IDIuMjQtNSA1LTV2LTJjLTMuODcgMC03IDMuMTMtNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMZWFrUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgM0g4YzAgLjM3LS4wNC43Mi0uMTIgMS4wNmwxLjU5IDEuNTlDOS44MSA0Ljg0IDEwIDMuOTQgMTAgM3pNMyA0LjI3bDIuODQgMi44NEM1LjAzIDcuNjcgNC4wNiA4IDMgOHYyYzEuNjEgMCAzLjA5LS41NSA0LjI3LTEuNDZMOC43IDkuOTdBOC45OSA4Ljk5IDAgMCAxIDMgMTJ2MmMyLjcxIDAgNS4xOS0uOTkgNy4xMS0yLjYybDIuNSAyLjVBMTEuMDQ0IDExLjA0NCAwIDAgMCAxMCAyMWgyYzAtMi4xNi43Ni00LjE0IDIuMDMtNS42OWwxLjQzIDEuNDNBNi45MjIgNi45MjIgMCAwIDAgMTQgMjFoMmMwLTEuMDYuMzMtMi4wMy44OS0yLjg0TDE5LjczIDIxIDIxIDE5LjczIDQuMjcgMyAzIDQuMjd6TTE0IDNoLTJjMCAxLjUtLjM3IDIuOTEtMS4wMiA0LjE2bDEuNDYgMS40NkMxMy40MiA2Ljk4IDE0IDUuMDYgMTQgM3ptNS45NCAxMy4xMmMuMzQtLjA4LjY5LS4xMiAxLjA2LS4xMnYtMmMtLjk0IDAtMS44NC4xOS0yLjY2LjUybDEuNiAxLjZ6bS00LjU2LTQuNTYgMS40NiAxLjQ2QTguOTggOC45OCAwIDAgMSAyMSAxMnYtMmMtMi4wNiAwLTMuOTguNTgtNS42MiAxLjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMZW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGlua2VkQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjMuMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMy4zM2MyLjU4IDAgNC42NyAyLjA5IDQuNjcgNC42N0gyMmMwLTMuMzEtMi42OS02LTYtNnYxLjMzTTE2IDZjMS4xMSAwIDIgLjg5IDIgMmgxLjMzYzAtMS44NC0xLjQ5LTMuMzMtMy4zMy0zLjMzVjZcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMEgwdjI0aDI0VjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDljMC0xLjExLS44OS0yLTItMlY0SDlMNy4xNyA2SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWgtNXptLTUgMTBjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2dvRGV2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTcuNjggMTQuOThINlY5aDEuNzFjMS4yOCAwIDEuNzEgMS4wMyAxLjcxIDEuNzF2Mi41NmMwIC42OC0uNDIgMS43MS0xLjc0IDEuNzF6bTQuNy0zLjUydjEuMDdIMTEuMnYxLjM5aDEuOTN2MS4wN2gtMi4yNWMtLjQuMDEtLjc0LS4zMS0uNzUtLjcxVjkuNzVjLS4wMS0uNC4zMS0uNzQuNzEtLjc1aDIuMjh2MS4wN0gxMS4ydjEuMzloMS4xOHptNC41IDIuNzdjLS40OCAxLjExLTEuMzMuODktMS43MSAwTDEzLjc3IDloMS4xOGwxLjA3IDQuMTFMMTcuMDkgOWgxLjE4bC0xLjM5IDUuMjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzcgMTAuMTJoLS42M3YzLjc3aC42M2MuMTQgMCAuMjgtLjA1LjQyLS4xNi4xNC0uMS4yMS0uMjYuMjEtLjQ3di0yLjUyYzAtLjIxLS4wNy0uMzctLjIxLS40N2EuNzIuNzIgMCAwIDAtLjQyLS4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9va3MzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0uMDEgMGgyNHYyNGgtMjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjAxIDNoLTE0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDcuNWMwIC44My0uNjcgMS41LTEuNSAxLjUuODMgMCAxLjUuNjcgMS41IDEuNVYxNWEyIDIgMCAwIDEtMiAyaC00di0yaDR2LTJoLTJ2LTJoMlY5aC00VjdoNGEyIDIgMCAwIDEgMiAydjEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9va3M0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDE0aC0ydi00SDlWN2gydjRoMlY3aDJ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA2aC00djJoMmEyIDIgMCAwIDEgMiAydjJhMiAyIDAgMCAxLTIgMkg5di0yaDR2LTJIOVY3aDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9va3M2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYtMmgtMnYyem04LTEySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNmgtNHYyaDJhMiAyIDAgMCAxIDIgMnYyYTIgMiAwIDAgMS0yIDJoLTJhMiAyIDAgMCAxLTItMlY5YTIgMiAwIDAgMSAyLTJoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb29rc09uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNSAxNGgtMlY5aC0yVjdoNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9va3NUd28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgOGEyIDIgMCAwIDEtMiAyaC0ydjJoNHYySDl2LTRhMiAyIDAgMCAxIDItMmgyVjlIOVY3aDRhMiAyIDAgMCAxIDIgMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb29rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwYy0zLjg2IDAtNyAzLjE0LTcgN2gyYzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVoMmMwLTMuODYtMy4xNC03LTctN3ptMC00QzUuOTMgNiAxIDEwLjkzIDEgMTdoMmMwLTQuOTYgNC4wNC05IDktOXM5IDQuMDQgOSA5aDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvdXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTBoOGMxLjEgMCAyLS45IDItMnYtOGMwLTUuNTEtNC40OS0xMC0xMC0xMHptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pY0V4dGVybmFsT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiA1LjE3IDhINGwxIDEwaDFjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtMS4xN2w1Ljc4IDUuNzggMS40MS0xLjQyek0xMiAxOGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJoMWwuNTYtNS42MUwxMiAxNC44M1YxOHptMi0xMnY1LjE3bC0yLTJWNmMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0djExLjE3bC0yLTJWNmMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ6bS00LTFjMCAuNjItLjIgMS4xOC0uNTIgMS42Nkw1LjMzIDIuNTFBMi45OTYgMi45OTYgMCAwIDEgMTAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWljRXh0ZXJuYWxPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjIgN0g0Ljc4QzQuMyA2LjQ3IDQgNS43NyA0IDVjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2MwIC43Ny0uMyAxLjQ3LS43OCAyek0xNiAyYzIuMjEgMCA0IDEuNzkgNCA0djE2aC0yVjZjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjEyYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00SDVMNCA4aDZMOSAxOEg4YzAgMS4xLjkgMiAyIDJzMi0uOSAyLTJWNmMwLTIuMjEgMS43OS00IDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9ub2Nocm9tZVBob3RvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpNLTc0IDI5aDQ4djQ4aC00OFYyOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtMy4yTDE1IDNIOUw3LjIgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRoLTh2LTFjLTIuOCAwLTUtMi4yLTUtNXMyLjItNSA1LTVWN2g4djEyem0tMy02YzAtMi44LTIuMi01LTUtNXYxLjhjMS44IDAgMy4yIDEuNCAzLjIgMy4ycy0xLjQgMy4yLTMuMiAzLjJWMThjMi44IDAgNS0yLjIgNS01em0tOC4yIDBjMCAxLjggMS40IDMuMiAzLjIgMy4yVjkuOGMtMS44IDAtMy4yIDEuNC0zLjIgMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3Rpb25QaG90b3NBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi44OCA3Ljg4IDEuNTQgMS41NEM0LjE1IDEwLjIzIDQgMTEuMSA0IDEyYzAgNC40MSAzLjU5IDggOCA4czgtMy41OSA4LTgtMy41OS04LTgtOGMtLjkgMC0xLjc3LjE1LTIuNTguNDJMNy44OSAyLjg5QzkuMTUgMi4zMiAxMC41NCAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTBzLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyYzAtMS40Ny4zMi0yLjg2Ljg4LTQuMTJ6TTcgNS41QzcgNi4zMyA2LjMzIDcgNS41IDdTNCA2LjMzIDQgNS41IDQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjV6bTUuMDMgMy40OWgtLjA3TDEwLjggMTIuM2gyLjM5bC0xLjE2LTMuMzF6TTEyIDE4YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnptLS43MS0xMC41aDEuNDNsMy4wMSA4aC0xLjM5bC0uNzItMi4wNGgtMy4yM2wtLjczIDIuMDRIOC4yOGwzLjAxLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vdGlvblBob3Rvc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjg0IDIwLjg0IDMuMTYgMy4xNiAxLjg5IDQuNDNsMS44OSAxLjg5QTkuOTIgOS45MiAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMTEgMCA0LjA3LS42NiA1LjY4LTEuNzdsMS44OSAxLjg5IDEuMjctMS4yOHpNMTIgMjBjLTQuNDEgMC04LTMuNTktOC04IDAtMS41NS40NS0zIDEuMjItNC4yM2wxLjQ2IDEuNDZDNi4yNSAxMC4wNiA2IDExIDYgMTJjMCAzLjMxIDIuNjkgNiA2IDYgMSAwIDEuOTQtLjI1IDIuNzctLjY4bDEuNDYgMS40NkE3Ljk1MSA3Ljk1MSAwIDAgMSAxMiAyMHpNNi4zMiAzLjc3QTkuOTg2IDkuOTg2IDAgMCAxIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTAgMCAyLjExLS42NiA0LjA3LTEuNzcgNS42OGwtMS40NS0xLjQ1QTcuOTUxIDcuOTUxIDAgMCAwIDIwIDEyYzAtNC40MS0zLjU5LTgtOC04LTEuNTUgMC0zIC40NS00LjIzIDEuMjJMNi4zMiAzLjc3ek0xOCAxMmMwIDEtLjI1IDEuOTQtLjY4IDIuNzdMOS4yMyA2LjY4QzEwLjA2IDYuMjUgMTEgNiAxMiA2YzMuMzEgMCA2IDIuNjkgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3Rpb25QaG90b3NPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuODggNy44OCAxLjU0IDEuNTRDNC4xNSAxMC4yMyA0IDExLjEgNCAxMmMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04LTMuNTktOC04LThjLS45IDAtMS43Ny4xNS0yLjU4LjQyTDcuODkgMi44OUM5LjE1IDIuMzIgMTAuNTQgMiAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTEuNDcuMzItMi44Ni44OC00LjEyek02IDEyYzAtMy4zMSAyLjY5LTYgNi02czYgMi42OSA2IDYtMi42OSA2LTYgNi02LTIuNjktNi02em0xLTYuNUM3IDYuMzMgNi4zMyA3IDUuNSA3UzQgNi4zMyA0IDUuNSA0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3Rpb25QaG90b3NQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuODggNy44OCAxLjU0IDEuNTRDNC4xNSAxMC4yMyA0IDExLjEgNCAxMmMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04LTMuNTktOC04LThjLS45IDAtMS43Ny4xNS0yLjU4LjQyTDcuODkgMi44OUM5LjE1IDIuMzIgMTAuNTQgMiAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTEuNDcuMzItMi44Ni44OC00LjEyek03IDUuNUM3IDYuMzMgNi4zMyA3IDUuNSA3UzQgNi4zMyA0IDUuNSA0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41em01IC41Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptLTEgOUg5VjloMnY2em00IDBoLTJWOWgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vdGlvblBob3Rvc1BhdXNlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTEuMTkuMjItMi4zMi42LTMuMzhsMS44OC42OEM0LjE3IDEwLjE0IDQgMTEuMDUgNCAxMmMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04LTMuNTktOC04LThjLS45NSAwLTEuODUuMTctMi42OS40OGwtLjY4LTEuODlDOS42OSAyLjIyIDEwLjgyIDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHpNNS41IDRDNC42NyA0IDQgNC42NyA0IDUuNVM0LjY3IDcgNS41IDcgNyA2LjMzIDcgNS41IDYuMzMgNCA1LjUgNHpNMTEgMTZWOEg5djhoMnptNCAwVjhoLTJ2OGgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3ZpZUNyZWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNCAyIDRoLTNsLTItNGgtMmwyIDRoLTNsLTItNEg4bDIgNEg3TDUgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3ZpZUZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDQgMiAzaC0zbC0yLTNoLTJsMiAzaC0zbC0yLTNIOGwyIDNIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGgtNHptLTYuNzUgMTEuMjVMMTAgMThsLTEuMjUtMi43NUw2IDE0bDIuNzUtMS4yNUwxMCAxMGwxLjI1IDIuNzVMMTQgMTRsLTIuNzUgMS4yNXptNS42OS0zLjMxTDE2IDE0bC0uOTQtMi4wNkwxMyAxMWwyLjA2LS45NEwxNiA4bC45NCAyLjA2TDE5IDExbC0yLjA2Ljk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTYuNSA5SDExYy41NSAwIDEgLjQ1IDEgMXY1aC0xLjV2LTQuNWgtMXYzSDh2LTNIN1YxNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTF6bTkgNkgxNFY5aDMuNWMuNTUgMCAxIC40NSAxIDF2Mi41YzAgLjU1LS40NSAxLTEgMWgtMlYxNXptMC0zSDE3di0xLjVoLTEuNVYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTXVzaWNOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM3YxMC41NWMtLjU5LS4zNC0xLjI3LS41NS0yLS41NS0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRWN2g0VjNoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE11c2ljT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4yNyAzIDMgNC4yN2w5IDl2LjI4Yy0uNTktLjM0LTEuMjctLjU1LTItLjU1LTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNHYtMS43M0wxOS43MyAyMSAyMSAxOS43MyA0LjI3IDN6TTE0IDdoNFYzaC02djUuMThsMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROYXR1cmVQZW9wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi4xNyA5LjE3YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3QTYuOTggNi45OCAwIDAgMCAxNCAxNi4wNlYyMEg2di0zaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXY0aDF2NWgxNnYtMmgtM3YtMy44OGE3IDcgMCAwIDAgNi4xNy02Ljk1ek00LjUgMTFjLjgzIDAgMS41LS42NyAxLjUtMS41UzUuMzMgOCA0LjUgOCAzIDguNjcgMyA5LjUgMy42NyAxMSA0LjUgMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDE2LjEyYTcgNyAwIDAgMCA2LjE3LTYuOTVjMC0zLjg3LTMuMTMtNy03LTdzLTcgMy4xMy03IDdBNi45OCA2Ljk4IDAgMCAwIDExIDE2LjA2VjIwSDV2MmgxNHYtMmgtNnYtMy44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF2aWdhdGVCZWZvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS40MSA3LjQxIDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxTDEwLjgzIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROYXZpZ2F0ZU5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2IDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFsZXR0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTBhMi41IDIuNSAwIDAgMCAyLjUtMi41YzAtLjYxLS4yMy0xLjItLjY0LTEuNjdhLjUyOC41MjggMCAwIDEtLjEzLS4zM2MwLS4yOC4yMi0uNS41LS41SDE2YzMuMzEgMCA2LTIuNjkgNi02IDAtNC45Ni00LjQ5LTktMTAtOXptNS41IDExYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptLTMtNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzEzLjY3IDYgMTQuNSA2czEuNS42NyAxLjUgMS41UzE1LjMzIDkgMTQuNSA5ek01IDExLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTNy4zMyAxMyA2LjUgMTMgNSAxMi4zMyA1IDExLjV6bTYtNGMwIC44My0uNjcgMS41LTEuNSAxLjVTOCA4LjMzIDggNy41IDguNjcgNiA5LjUgNnMxLjUuNjcgMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFGaXNoRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hSG9yaXpvbnRhbFNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjQzIDRjLS4xIDAtLjIuMDItLjMxLjA2QzE4LjE4IDUuMTYgMTUuMDkgNS43IDEyIDUuN3MtNi4xOC0uNTUtOS4xMi0xLjY0QS45NC45NCAwIDAgMCAyLjU3IDRjLS4zNCAwLS41Ny4yMy0uNTcuNjN2MTQuNzVjMCAuMzkuMjMuNjIuNTcuNjIuMSAwIC4yLS4wMi4zMS0uMDYgMi45NC0xLjEgNi4wMy0xLjY0IDkuMTItMS42NHM2LjE4LjU1IDkuMTIgMS42NGMuMTEuMDQuMjEuMDYuMzEuMDYuMzMgMCAuNTctLjIzLjU3LS42M1Y0LjYzYzAtLjQtLjI0LS42My0uNTctLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYW5vcmFtYUhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2LjU0djEwLjkxYy0yLjYtLjc3LTUuMjgtMS4xNi04LTEuMTYtMi43MiAwLTUuNC4zOS04IDEuMTZWNi41NGMyLjYuNzcgNS4yOCAxLjE2IDggMS4xNiAyLjcyLjAxIDUuNC0uMzggOC0xLjE2TTIxLjQzIDRjLS4xIDAtLjIuMDItLjMxLjA2QzE4LjE4IDUuMTYgMTUuMDkgNS43IDEyIDUuN2MtMy4wOSAwLTYuMTgtLjU1LTkuMTItMS42NEEuOTQuOTQgMCAwIDAgMi41NyA0Yy0uMzQgMC0uNTcuMjMtLjU3LjYzdjE0Ljc1YzAgLjM5LjIzLjYyLjU3LjYyLjEgMCAuMi0uMDIuMzEtLjA2IDIuOTQtMS4xIDYuMDMtMS42NCA5LjEyLTEuNjQgMy4wOSAwIDYuMTguNTUgOS4xMiAxLjY0LjExLjA0LjIxLjA2LjMxLjA2LjMzIDAgLjU3LS4yMy41Ny0uNjNWNC42M2MwLS40LS4yNC0uNjMtLjU3LS42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFQaG90b3NwaGVyZVNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjQ5IDguNTFjLS40Ny0uMjMtLjkzLS40NC0xLjQtLjY0QzE5LjUyIDQuNDEgMTYuMDUgMiAxMiAyUzQuNDcgNC40MSAyLjkgNy44OGMtLjQ3LjItLjkzLjQxLTEuNC42My0uMzEuMTUtLjUuNDgtLjUuODN2NS4zMmMwIC4zNS4xOS42OC41MS44My40Ny4yMy45My40NCAxLjM5LjY0IDMuNTUgNy44MyAxNC42NSA3LjgyIDE4LjIgMCAuNDctLjIuOTMtLjQxIDEuMzktLjYzLjMxLS4xNy41MS0uNDkuNTEtLjg0VjkuMzRhLjkxLjkxIDAgMCAwLS41MS0uODN6TTEyIDMuOGMyLjYgMCA0LjkxIDEuMjMgNi40MSAzLjEyLTQuMS0xLjE5LTguNDgtMS4yNi0xMi44My4wMUM3LjA4IDUuMDMgOS40IDMuOCAxMiAzLjh6TTUuNiAxNy4wOGM0LjE5IDEuMjIgOC41NyAxLjIzIDEyLjgyLS4wMWE4LjEzNiA4LjEzNiAwIDAgMS0xMi44Mi4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFQaG90b3NwaGVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjQgMTEuMzJ2Mi45M2MtLjEuMDUtMi4xNy44NS0zLjMzIDEuMTctLjk0LjI2LTMuODQuNzMtNi4wNy43My0zLjcgMC03LS43LTkuMTYtMS44LS4wOC0uMDQtLjE2LS4wNi0uMjQtLjFWOS43NmM2LjAyLTIuODQgMTIuNi0yLjkyIDE4LjggMHYxLjU2em0tOS4zOSA4Ljg4Yy0yLjUgMC00Ljg3LTEuMTUtNi40MS0zLjEyIDQuMTkgMS4yMiA4LjU3IDEuMjMgMTIuODItLjAxYTguMTM2IDguMTM2IDAgMCAxLTYuNDEgMy4xM3pNMTIgMy44YzIuNiAwIDQuOTEgMS4yMyA2LjQxIDMuMTItNC4xLTEuMTktOC40OC0xLjI2LTEyLjgzLjAxQzcuMDggNS4wMyA5LjQgMy44IDEyIDMuOHptMTAuNDkgNC43MWMtLjQ3LS4yMy0uOTMtLjQ0LTEuNC0uNjRDMTkuNTIgNC40MSAxNi4wNSAyIDEyIDJTNC40NyA0LjQxIDIuOSA3Ljg4Yy0uNDcuMi0uOTMuNDEtMS40LjYzLS4zMS4xNS0uNS40OC0uNS44M3Y1LjMyYzAgLjM1LjE5LjY4LjUxLjgzLjQ3LjIzLjkzLjQ0IDEuMzkuNjQgMy41NSA3LjgzIDE0LjY1IDcuODIgMTguMiAwIC40Ny0uMi45My0uNDEgMS4zOS0uNjMuMzEtLjE3LjUxLS40OS41MS0uODRWOS4zNGEuOTEuOTEgMCAwIDAtLjUxLS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFWZXJ0aWNhbFNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjkzIDIxLjEyYy0xLjEtMi45NC0xLjY0LTYuMDMtMS42NC05LjEycy41NS02LjE4IDEuNjQtOS4xMmMuMDUtLjExLjA3LS4yMi4wNy0uMzEgMC0uMzQtLjI0LS41Ny0uNjQtLjU3SDQuNjJjLS40IDAtLjYzLjIzLS42My41NyAwIC4xLjAyLjIuMDYuMzFDNS4xNiA1LjgyIDUuNyA4LjkxIDUuNyAxMnMtLjU1IDYuMTgtMS42NCA5LjEyYy0uMDUuMTEtLjA3LjIyLS4wNy4zMSAwIC4zMy4yMy41Ny42My41N2gxNC43NWMuMzkgMCAuNjMtLjI0LjYzLS41NyAwLS4xLS4wMi0uMi0uMDctLjMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYW5vcmFtYVZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTQgMjEuMTJjLTEuMS0yLjk0LTEuNjQtNi4wMy0xLjY0LTkuMTIgMC0zLjA5LjU1LTYuMTggMS42NC05LjEyYS45NC45NCAwIDAgMCAuMDYtLjMxYzAtLjM0LS4yMy0uNTctLjYzLS41N0g0LjYzYy0uNCAwLS42My4yMy0uNjMuNTcgMCAuMS4wMi4yLjA2LjMxQzUuMTYgNS44MiA1LjcxIDguOTEgNS43MSAxMmMwIDMuMDktLjU1IDYuMTgtMS42NCA5LjEyLS4wNS4xMS0uMDcuMjItLjA3LjMxIDAgLjMzLjIzLjU3LjYzLjU3aDE0Ljc1Yy4zOSAwIC42My0uMjQuNjMtLjU3LS4wMS0uMS0uMDMtLjItLjA3LS4zMXpNNi41NCAyMGMuNzctMi42IDEuMTYtNS4yOCAxLjE2LTggMC0yLjcyLS4zOS01LjQtMS4xNi04aDEwLjkxYy0uNzcgMi42LTEuMTYgNS4yOC0xLjE2IDggMCAyLjcyLjM5IDUuNCAxLjE2IDhINi41NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFXaWRlQW5nbGVTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0Yy0yLjczIDAtNS4yMi4yNC03Ljk1LjcybC0uOTMuMTYtLjI1LjlDMi4yOSA3Ljg1IDIgOS45MyAyIDEycy4yOSA0LjE1Ljg3IDYuMjJsLjI1Ljg5LjkzLjE2YzIuNzMuNDkgNS4yMi43MyA3Ljk1LjczczUuMjItLjI0IDcuOTUtLjcybC45My0uMTYuMjUtLjg5Yy41OC0yLjA4Ljg3LTQuMTYuODctNi4yM3MtLjI5LTQuMTUtLjg3LTYuMjJsLS4yNS0uODktLjkzLS4xNkMxNy4yMiA0LjI0IDE0LjczIDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFXaWRlQW5nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzIuNDUgMCA0LjcxLjIgNy4yOS42NEEyMSAyMSAwIDAgMSAyMCAxMmEyMSAyMSAwIDAgMS0uNzEgNS4zNmMtMi41OC40NC00Ljg0LjY0LTcuMjkuNjRzLTQuNzEtLjItNy4yOS0uNjRBMjEgMjEgMCAwIDEgNCAxMmEyMSAyMSAwIDAgMSAuNzEtNS4zNkM3LjI5IDYuMiA5LjU1IDYgMTIgNm0wLTJjLTIuNzMgMC01LjIyLjI0LTcuOTUuNzJsLS45My4xNi0uMjUuOUMyLjI5IDcuODUgMiA5LjkzIDIgMTJzLjI5IDQuMTUuODcgNi4yMmwuMjUuODkuOTMuMTZjMi43My40OSA1LjIyLjczIDcuOTUuNzNzNS4yMi0uMjQgNy45NS0uNzJsLjkzLS4xNi4yNS0uODljLjU4LTIuMDguODctNC4xNi44Ny02LjIzcy0uMjktNC4xNS0uODctNi4yMmwtLjI1LS44OS0uOTMtLjE2QzE3LjIyIDQuMjQgMTQuNzMgNCAxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYW5vcmFtYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE4VjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnpNOC41IDEyLjVsMi41IDMuMDFMMTQuNSAxMWw0LjUgNkg1bDMuNS00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvQWxidW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgMmg1djdsLTIuNS0xLjVMMTEgMTFWNHpNNyAxOGwyLjM4LTMuMTdMMTEgMTdsMi42Mi0zLjVMMTcgMThIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9DYW1lcmFCYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY3YzAtMS4xLjktMiAyLTJoMy4xN0w5IDNoNmwxLjgzIDJIMjB6bTAgMTRWN0g0djEyaDE2em0tNi03LTMgMy43Mkw5IDEzbC0zIDRoMTJsLTQtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9DYW1lcmFGcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDEwLjQ4IDQtMy45OHYxMWwtNC0zLjk4VjE4YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxMmMxLjEgMCAyIC45IDIgMnY0LjQ4em0tMi0uNzlWNkg0djEyaDEyVjkuNjl6TTEwIDEyYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMCAxYzEuMzQgMCA0IC42NyA0IDJ2MUg2di0xYzAtMS4zMyAyLjY2LTIgNC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG90b0NhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMy4yXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMiA3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDJIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvRmlsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wMiAxMHY5SDVWNWg5VjNINS4wMmMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtOWgtMnpNMTcgMTBsLjk0LTIuMDZMMjAgN2wtMi4wNi0uOTRMMTcgNGwtLjk0IDIuMDZMMTQgN2wyLjA2Ljk0em0tMy43NS43NUwxMiA4bC0xLjI1IDIuNzVMOCAxMmwyLjc1IDEuMjVMMTIgMTZsMS4yNS0yLjc1TDE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG90b0xpYnJhcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNlY0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ6bS0xMS00IDIuMDMgMi43MUwxNiAxMWw0IDVIOGwzLTR6TTIgNnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG90b1NpemVTZWxlY3RBY3R1YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHYyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzQzIgMyAxIDQgMSA1djE0YzAgMS4xLjkgMiAyIDJoMThjMSAwIDItMSAyLTJWNWMwLTEtMS0yLTItMnpNNSAxN2wzLjUtNC41IDIuNSAzLjAxTDE0LjUgMTFsNC41IDZINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9TaXplU2VsZWN0TGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHYyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTVoMnYyaC0ydi0yem0wLTRoMnYyaC0ydi0yem0yIDhoLTJ2MmMxIDAgMi0xIDItMnpNMTMgM2gydjJoLTJWM3ptOCA0aDJ2MmgtMlY3em0wLTR2MmgyYzAtMS0xLTItMi0yek0xIDdoMnYySDFWN3ptMTYtNGgydjJoLTJWM3ptMCAxNmgydjJoLTJ2LTJ6TTMgM0MyIDMgMSA0IDEgNWgyVjN6bTYgMGgydjJIOVYzek01IDNoMnYySDVWM3ptLTQgOHY4YzAgMS4xLjkgMiAyIDJoMTJWMTFIMXptMiA4IDIuNS0zLjIxIDEuNzkgMi4xNSAyLjUtMy4yMkwxMyAxOUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG90b1NpemVTZWxlY3RTbWFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMjQgMjRIMFYwaDI0djI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxNWgtMnYyaDJ2LTJ6bTAtNGgtMnYyaDJ2LTJ6bTAgOGgtMnYyYzEgMCAyLTEgMi0yek0xNSAzaC0ydjJoMlYzem04IDRoLTJ2MmgyVjd6bS0yLTR2MmgyYzAtMS0xLTItMi0yek0zIDIxaDh2LTZIMXY0YzAgMS4xLjkgMiAyIDJ6TTMgN0gxdjJoMlY3em0xMiAxMmgtMnYyaDJ2LTJ6bTQtMTZoLTJ2MmgyVjN6bTAgMTZoLTJ2Mmgydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem0wIDhIMXYyaDJ2LTJ6bTgtOEg5djJoMlYzek03IDNINXYyaDJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMy41bDIuNSAzLjAxTDE0LjUgMTJsNC41IDZINWwzLjUtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaWN0dXJlQXNQZGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTguNSA3LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41SDl2Mkg3LjVWN0gxMGMuODMgMCAxLjUuNjcgMS41IDEuNXYxem01IDJjMCAuODMtLjY3IDEuNS0xLjUgMS41aC0yLjVWN0gxNWMuODMgMCAxLjUuNjcgMS41IDEuNXYzem00LTNIMTl2MWgxLjVWMTFIMTl2MmgtMS41VjdoM3YxLjV6TTkgOS41aDF2LTFIOXYxek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTAgNS41aDF2LTNoLTF2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMi4yNWMxLjI0IDAgMi4yNS0xLjAxIDIuMjUtMi4yNVMxMy4yNCA3Ljc1IDEyIDcuNzUgOS43NSA4Ljc2IDkuNzUgMTBzMS4wMSAyLjI1IDIuMjUgMi4yNXptNC41IDRjMC0xLjUtMy0yLjI1LTQuNS0yLjI1cy00LjUuNzUtNC41IDIuMjVWMTdoOXYtLjc1ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhd09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjE1IDE0LjMyLjU5LTIuMzYuNzYgMy4wNGgxLjQ4bDEuNS02aC0xLjVsLS43NCAzLS43NC0zaC0xLjUybC0uNzQgMy0uNzQtM0gxNGwuNzIgMi45ek0xLjM5IDQuMjIgNi4xNyA5SDN2NmgxLjV2LTJoMS4xbC45IDJIOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LS42N2wxLjQzIDEuNDNMOC43NSAxNWgxLjVsLjM4LTEuNWguMDRsOS4xMSA5LjExIDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyek02LjUgMTEuNWgtMnYtMWgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhd09uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDlIM3Y2aDEuNXYtMmgxLjFsLjkgMkg4bC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHYtMUM4IDkuNyA3LjMgOSA2LjUgOXptMCAyLjVoLTJ2LTFoMnYxek0xMC4yNSA5bC0xLjUgNmgxLjVsLjM4LTEuNWgxLjc1bC4zNyAxLjVoMS41bC0xLjUtNmgtMi41em0uNzUgMyAuMjUtMWguNWwuMjUgMWgtMXpNMTkuOTggOWwtLjc0IDMtLjc0LTNoLTEuNTJsLS43NCAzLS43NC0zSDE0bDEuNSA2aDEuNDhsLjc2LTMuMDQuNzYgMy4wNGgxLjQ4bDEuNS02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWNlaXB0TG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSAzLjUgMTggMmwtMS41IDEuNUwxNSAybC0xLjUgMS41TDEyIDJsLTEuNSAxLjVMOSAyIDcuNSAzLjUgNiAydjE0SDN2M2MwIDEuNjYgMS4zNCAzIDMgM2gxMmMxLjY2IDAgMy0xLjM0IDMtM1YybC0xLjUgMS41ek0xOSAxOWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXYtM0g4VjVoMTF2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgN2g2djJIOXpNMTYgN2gydjJoLTJ6TTkgMTBoNnYySDl6TTE2IDEwaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlUmVkRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNC41QzcgNC41IDIuNzMgNy42MSAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXpNMTIgMTdjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb3RhdGU5MERlZ3JlZXNDY3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjM0IDYuNDEuODYgMTIuOWw2LjQ5IDYuNDggNi40OS02LjQ4LTYuNS02LjQ5ek0zLjY5IDEyLjlsMy42Ni0zLjY2TDExIDEyLjlsLTMuNjYgMy42Ni0zLjY1LTMuNjZ6bTE1LjY3LTYuMjZBOC45NSA4Ljk1IDAgMCAwIDEzIDRWLjc2TDguNzYgNSAxMyA5LjI0VjZjMS43OSAwIDMuNTguNjggNC45NSAyLjA1YTcuMDA3IDcuMDA3IDAgMCAxIDAgOS45IDYuOTczIDYuOTczIDAgMCAxLTcuNzkgMS40NGwtMS40OSAxLjQ5QzEwLjAyIDIxLjYyIDExLjUxIDIyIDEzIDIyYzIuMyAwIDQuNjEtLjg4IDYuMzYtMi42NGE4Ljk4IDguOTggMCAwIDAgMC0xMi43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm90YXRlOTBEZWdyZWVzQ3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjY0IDE5LjM3YzMuMDMgMy4wMyA3LjY3IDMuNDQgMTEuMTUgMS4yNWwtMS40Ni0xLjQ2Yy0yLjY2IDEuNDMtNi4wNCAxLjAzLTguMjgtMS4yMWE3LjAwNyA3LjAwNyAwIDAgMSAwLTkuOUM3LjQyIDYuNjkgOS4yMSA2LjAzIDExIDYuMDNWOWw0LTQtNC00djMuMDFjLTIuMyAwLTQuNjEuODctNi4zNiAyLjYzLTMuNTIgMy41MS0zLjUyIDkuMjEgMCAxMi43M3pNMTEgMTNsNiA2IDYtNi02LTYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb3RhdGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4xMSA4LjUzIDUuNyA3LjExQzQuOCA4LjI3IDQuMjQgOS42MSA0LjA3IDExaDIuMDJjLjE0LS44Ny40OS0xLjcyIDEuMDItMi40N3pNNi4wOSAxM0g0LjA3Yy4xNyAxLjM5LjcyIDIuNzMgMS42MiAzLjg5bDEuNDEtMS40MmMtLjUyLS43NS0uODctMS41OS0xLjAxLTIuNDd6bTEuMDEgNS4zMmMxLjE2LjkgMi41MSAxLjQ0IDMuOSAxLjYxVjE3LjljLS44Ny0uMTUtMS43MS0uNDktMi40Ni0xLjAzTDcuMSAxOC4zMnpNMTMgNC4wN1YxTDguNDUgNS41NSAxMyAxMFY2LjA5YzIuODQuNDggNSAyLjk0IDUgNS45MXMtMi4xNiA1LjQzLTUgNS45MXYyLjAyYzMuOTUtLjQ5IDctMy44NSA3LTcuOTNzLTMuMDUtNy40NC03LTcuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdGF0ZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTUgNS41NSAxMSAxdjMuMDdDNy4wNiA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODQtLjQ4LTUtMi45NC01LTUuOTFzMi4xNi01LjQzIDUtNS45MVYxMGw0LjU1LTQuNDV6TTE5LjkzIDExYTcuOTA2IDcuOTA2IDAgMCAwLTEuNjItMy44OWwtMS40MiAxLjQyYy41NC43NS44OCAxLjYgMS4wMiAyLjQ3aDIuMDJ6TTEzIDE3Ljl2Mi4wMmMxLjM5LS4xNyAyLjc0LS43MSAzLjktMS42MWwtMS40NC0xLjQ0Yy0uNzUuNTQtMS41OS44OS0yLjQ2IDEuMDN6bTMuODktMi40MiAxLjQyIDEuNDFjLjktMS4xNiAxLjQ1LTIuNSAxLjYyLTMuODloLTIuMDJjLS4xNC44Ny0uNDggMS43Mi0xLjAyIDIuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNodXR0ZXJTcGVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMUg5djJoNlYxem00LjAzIDYuMzkgMS40Mi0xLjQyYy0uNDMtLjUxLS45LS45OS0xLjQxLTEuNDFsLTEuNDIgMS40MkE4Ljk2MiA4Ljk2MiAwIDAgMCAxMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTguOTk0IDguOTk0IDAgMCAwIDcuMDMtMTQuNjF6TTEyIDIwYy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptLS4zMi01SDYuMzVhNS45OTIgNS45OTIgMCAwIDAgMy40MSAzLjU2bC0uMTEtLjA2IDIuMDMtMy41em01Ljk3LTRhNi4wMTIgNi4wMTIgMCAwIDAtMy4zNC0zLjU0TDEyLjI2IDExaDUuMzl6bS03LjA0IDcuODNjLjQ1LjExLjkxLjE3IDEuMzkuMTcgMS4zNCAwIDIuNTctLjQ1IDMuNTctMS4xOWwtMi4xMS0zLjktMi44NSA0Ljkyek03LjU1IDguOTlBNS45NjUgNS45NjUgMCAwIDAgNiAxM2MwIC4zNC4wNC42Ny4wOSAxaDQuNzJMNy41NSA4Ljk5em04Ljc5IDguMTRBNS45NCA1Ljk0IDAgMCAwIDE4IDEzYzAtLjM0LS4wNC0uNjctLjA5LTFoLTQuMzRsMi43NyA1LjEzem0tMy4wMS05Ljk4QzEyLjkgNy4wNiAxMi40NiA3IDEyIDdjLTEuNCAwLTIuNjkuNDktMy43MSAxLjI5bDIuMzIgMy41NiAyLjcyLTQuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2xpZGVzaG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOHY4bDUtNC01LTR6bTktNUg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJhaWdodGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEgzVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY0aDJWOGgydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi41MyAxOS42NSAxLjM0LjU2di05LjAzbC0yLjQzIDUuODZjLS40MSAxLjAyLjA4IDIuMTkgMS4wOSAyLjYxem0xOS41LTMuN0wxNy4wNyAzLjk4YTIuMDEzIDIuMDEzIDAgMCAwLTEuODEtMS4yM2MtLjI2IDAtLjUzLjA0LS43OS4xNUw3LjEgNS45NWExLjk5OSAxLjk5OSAwIDAgMC0xLjA4IDIuNmw0Ljk2IDExLjk3YTEuOTk4IDEuOTk4IDAgMCAwIDIuNiAxLjA4bDcuMzYtMy4wNWExLjk5NCAxLjk5NCAwIDAgMCAxLjA5LTIuNnpNNy44OCA4Ljc1Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0yIDExYzAgMS4xLjkgMiAyIDJoMS40NWwtMy40NS04LjM0djYuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXRjaENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRoLTMuMTdMMTUgMkg5TDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS01IDExLjVWMTNIOXYyLjVMNS41IDEyIDkgOC41VjExaDZWOC41bDMuNSAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpdGNoVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5LjVWNmMwLS41NS0uNDUtMS0xLTFIM2MtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDE0Yy41NSAwIDEtLjQ1IDEtMXYtMy41bDQgNHYtMTNsLTQgNHptLTUgNlYxM0g3djIuNUwzLjUgMTIgNyA4LjVWMTFoNlY4LjVsMy41IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWdGYWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMy41LTljLjgzIDAgMS41LS42NyAxLjUtMS41UzE2LjMzIDggMTUuNSA4IDE0IDguNjcgMTQgOS41cy42NyAxLjUgMS41IDEuNXptLTcgMGMuODMgMCAxLjUtLjY3IDEuNS0xLjVTOS4zMyA4IDguNSA4IDcgOC42NyA3IDkuNSA3LjY3IDExIDguNSAxMXptMy41IDYuNWMyLjMzIDAgNC4zMS0xLjQ2IDUuMTEtMy41SDYuODljLjggMi4wNCAyLjc4IDMuNSA1LjExIDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUxIDMuMDggMy4wOCAxOS41MWMuMDkuMzQuMjcuNjUuNTEuOS4yNS4yNC41Ni40Mi45LjUxTDIwLjkzIDQuNDljLS4xOS0uNjktLjczLTEuMjMtMS40Mi0xLjQxek0xMS44OCAzIDMgMTEuODh2Mi44M0wxNC43MSAzaC0yLjgzek01IDNjLTEuMSAwLTIgLjktMiAydjJsNC00SDV6bTE0IDE4Yy41NSAwIDEuMDUtLjIyIDEuNDEtLjU5LjM3LS4zNi41OS0uODYuNTktMS40MXYtMmwtNCA0aDJ6bS05LjcxIDBoMi44M0wyMSAxMi4xMlY5LjI5TDkuMjkgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRoZXJtb3N0YXRBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTJWNmMwLTEuNjYtMS4zNC0zLTMtM1M1IDQuMzQgNSA2djZjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDEuMTIuMzggMi4xNCAxIDIuOTdWMTloLjAyYy45MSAxLjIxIDIuMzUgMiAzLjk4IDJzMy4wNi0uNzkgMy45OC0ySDEydi0uMDNjLjYyLS44MyAxLTEuODUgMS0yLjk3IDAtMS42My0uNzktMy4wOS0yLTR6bS02IDRjMC0uOTQuNDUtMS44NCAxLjItMi40TDcgMTNWNmMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2N2wuOC42Yy43NS41NyAxLjIgMS40NiAxLjIgMi40SDV6TTE4LjYyIDRoLTEuNjFsLTMuMzggOWgxLjU2bC44MS0yLjNoMy42M2wuOCAyLjNIMjJsLTMuMzgtOXptLTIuMTUgNS4zOSAxLjMxLTMuNzJoLjA4bDEuMzEgMy43MmgtMi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lbGFwc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yNCA3Ljc2QTUuOTc0IDUuOTc0IDAgMCAwIDEyIDZ2NmwtNC4yNCA0LjI0YzIuMzQgMi4zNCA2LjE0IDIuMzQgOC40OSAwYTUuOTkgNS45OSAwIDAgMC0uMDEtOC40OHpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVyMTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA3LjcyVjkuNGwzLTFWMThoMlY2aC0uMjVMMCA3Ljcyem0yMy43OCA2LjY1Yy0uMTQtLjI4LS4zNS0uNTMtLjYzLS43NC0uMjgtLjIxLS42MS0uMzktMS4wMS0uNTNzLS44NS0uMjctMS4zNS0uMzhhNi42NCA2LjY0IDAgMCAxLS44Ny0uMjMgMi42MSAyLjYxIDAgMCAxLS41NS0uMjUuNzE3LjcxNyAwIDAgMS0uMjgtLjMuOTc4Ljk3OCAwIDAgMSAuMDEtLjhjLjA2LS4xMy4xNS0uMjUuMjctLjM0LjEyLS4xLjI3LS4xOC40NS0uMjRzLjQtLjA5LjY0LS4wOWMuMjUgMCAuNDcuMDQuNjYuMTEuMTkuMDcuMzUuMTcuNDguMjkuMTMuMTIuMjIuMjYuMjkuNDIuMDYuMTYuMS4zMi4xLjQ5aDEuOTVhMi41MTcgMi41MTcgMCAwIDAtLjkzLTEuOTdjLS4zLS4yNS0uNjYtLjQ0LTEuMDktLjU5QzIxLjQ5IDkuMDcgMjEgOSAyMC40NiA5Yy0uNTEgMC0uOTguMDctMS4zOS4yMS0uNDEuMTQtLjc3LjMzLTEuMDYuNTctLjI5LjI0LS41MS41Mi0uNjcuODQtLjE2LjMyLS4yMy42NS0uMjMgMS4wMXMuMDguNjkuMjMuOTZjLjE1LjI4LjM2LjUyLjY0LjczLjI3LjIxLjYuMzguOTguNTMuMzguMTQuODEuMjYgMS4yNy4zNi4zOS4wOC43MS4xNy45NS4yNnMuNDMuMTkuNTcuMjljLjEzLjEuMjIuMjIuMjcuMzQuMDUuMTIuMDcuMjUuMDcuMzkgMCAuMzItLjEzLjU3LS40Ljc3LS4yNy4yLS42Ni4yOS0xLjE3LjI5LS4yMiAwLS40My0uMDItLjY0LS4wOC0uMjEtLjA1LS40LS4xMy0uNTYtLjI0YTEuMzMzIDEuMzMzIDAgMCAxLS41OS0xLjExaC0xLjg5YzAgLjM2LjA4LjcxLjI0IDEuMDUuMTYuMzQuMzkuNjUuNy45My4zMS4yNy42OS40OSAxLjE1LjY2LjQ2LjE3Ljk4LjI1IDEuNTguMjUuNTMgMCAxLjAxLS4wNiAxLjQ0LS4xOS40My0uMTMuOC0uMzEgMS4xMS0uNTQuMzEtLjIzLjU0LS41MS43MS0uODMuMTctLjMyLjI1LS42Ny4yNS0xLjA2LS4wMi0uNC0uMDktLjc0LS4yNC0xLjAyem0tOS45Ni03LjMyYy0uMzQtLjQtLjc1LS43LTEuMjMtLjg4LS40Ny0uMTgtMS4wMS0uMjctMS41OS0uMjctLjU4IDAtMS4xMS4wOS0xLjU5LjI3LS40OC4xOC0uODkuNDctMS4yMy44OC0uMzQuNDEtLjYuOTMtLjc5IDEuNTktLjE4LjY1LS4yOCAxLjQ1LS4yOCAyLjM5djEuOTJjMCAuOTQuMDkgMS43NC4yOCAyLjM5LjE5LjY2LjQ1IDEuMTkuOCAxLjYuMzQuNDEuNzUuNzEgMS4yMy44OS40OC4xOCAxLjAxLjI4IDEuNTkuMjguNTkgMCAxLjEyLS4wOSAxLjU5LS4yOC40OC0uMTguODgtLjQ4IDEuMjItLjg5LjM0LS40MS42LS45NC43OC0xLjYuMTgtLjY1LjI4LTEuNDUuMjgtMi4zOXYtMS45MmMwLS45NC0uMDktMS43NC0uMjgtMi4zOS0uMTgtLjY2LS40NC0xLjE5LS43OC0xLjU5em0tLjkyIDYuMTdjMCAuNi0uMDQgMS4xMS0uMTIgMS41My0uMDguNDItLjIuNzYtLjM2IDEuMDItLjE2LjI2LS4zNi40NS0uNTkuNTctLjIzLjEyLS41MS4xOC0uODIuMTgtLjMgMC0uNTgtLjA2LS44Mi0uMThzLS40NC0uMzEtLjYtLjU3Yy0uMTYtLjI2LS4yOS0uNi0uMzgtMS4wMi0uMDktLjQyLS4xMy0uOTMtLjEzLTEuNTN2LTIuNWMwLS42LjA0LTEuMTEuMTMtMS41Mi4wOS0uNDEuMjEtLjc0LjM4LTEgLjE2LS4yNS4zNi0uNDMuNi0uNTUuMjQtLjExLjUxLS4xNy44MS0uMTcuMzEgMCAuNTguMDYuODEuMTcuMjQuMTEuNDQuMjkuNi41NS4xNi4yNS4yOS41OC4zNy45OS4wOC40MS4xMy45Mi4xMyAxLjUydjIuNTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVyMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS42MSAxMi45N2MtLjE2LS4yNC0uMzYtLjQ2LS42Mi0uNjVhMy4zOCAzLjM4IDAgMCAwLS45My0uNDhjLjMtLjE0LjU3LS4zLjgtLjUuMjMtLjIuNDItLjQxLjU3LS42NC4xNS0uMjMuMjctLjQ2LjM0LS43MS4wOC0uMjQuMTEtLjQ5LjExLS43MyAwLS41NS0uMDktMS4wNC0uMjgtMS40Ni0uMTgtLjQyLS40NC0uNzctLjc4LTEuMDYtLjMzLS4yOC0uNzMtLjUtMS4yLS42NC0uNDUtLjEzLS45Ny0uMi0xLjUzLS4yLS41NSAwLTEuMDYuMDgtMS41Mi4yNC0uNDcuMTctLjg3LjQtMS4yLjY5LS4zMy4yOS0uNi42My0uNzggMS4wMy0uMi4zOS0uMjkuODMtLjI5IDEuMjloMS45OGMwLS4yNi4wNS0uNDkuMTQtLjY5LjA5LS4yLjIyLS4zOC4zOC0uNTIuMTctLjE0LjM2LS4yNS41OC0uMzMuMjItLjA4LjQ2LS4xMi43My0uMTIuNjEgMCAxLjA2LjE2IDEuMzYuNDcuMy4zMS40NC43NS40NCAxLjMyIDAgLjI3LS4wNC41Mi0uMTIuNzQtLjA4LjIyLS4yMS40MS0uMzguNTctLjE3LjE2LS4zOC4yOC0uNjMuMzctLjI1LjA5LS41NS4xMy0uODkuMTNINi43MnYxLjU3SDcuOWMuMzQgMCAuNjQuMDQuOTEuMTEuMjcuMDguNS4xOS42OS4zNS4xOS4xNi4zNC4zNi40NC42MS4xLjI0LjE2LjU0LjE2Ljg3IDAgLjYyLS4xOCAxLjA5LS41MyAxLjQyLS4zNS4zMy0uODQuNDktMS40NS40OS0uMjkgMC0uNTYtLjA0LS44LS4xMy0uMjQtLjA4LS40NC0uMi0uNjEtLjM2LS4xNy0uMTYtLjMtLjM0LS4zOS0uNTYtLjA5LS4yMi0uMTQtLjQ2LS4xNC0uNzJINC4xOWMwIC41NS4xMSAxLjAzLjMyIDEuNDUuMjEuNDIuNS43Ny44NiAxLjA1cy43Ny40OSAxLjI0LjYzLjk2LjIxIDEuNDguMjFjLjU3IDAgMS4wOS0uMDggMS41OC0uMjMuNDktLjE1LjkxLS4zOCAxLjI2LS42OC4zNi0uMy42NC0uNjYuODQtMS4xLjItLjQzLjMtLjkzLjMtMS40OCAwLS4yOS0uMDQtLjU4LS4xMS0uODYtLjA4LS4yNS0uMTktLjUxLS4zNS0uNzZ6bTkuMjYgMS40Yy0uMTQtLjI4LS4zNS0uNTMtLjYzLS43NC0uMjgtLjIxLS42MS0uMzktMS4wMS0uNTNzLS44NS0uMjctMS4zNS0uMzhhNi42NCA2LjY0IDAgMCAxLS44Ny0uMjMgMi42MSAyLjYxIDAgMCAxLS41NS0uMjUuNzE3LjcxNyAwIDAgMS0uMjgtLjNjLS4wNS0uMTEtLjA4LS4yNC0uMDgtLjM5YS45NDYuOTQ2IDAgMCAxIC4zNi0uNzVjLjEyLS4xLjI3LS4xOC40NS0uMjRzLjQtLjA5LjY0LS4wOWMuMjUgMCAuNDcuMDQuNjYuMTEuMTkuMDcuMzUuMTcuNDguMjkuMTMuMTIuMjIuMjYuMjkuNDIuMDYuMTYuMS4zMi4xLjQ5aDEuOTVhMi41MTcgMi41MTcgMCAwIDAtLjkzLTEuOTdjLS4zLS4yNS0uNjYtLjQ0LTEuMDktLjU5LS40My0uMTUtLjkyLS4yMi0xLjQ2LS4yMi0uNTEgMC0uOTguMDctMS4zOS4yMS0uNDEuMTQtLjc3LjMzLTEuMDYuNTctLjI5LjI0LS41MS41Mi0uNjcuODQtLjE2LjMyLS4yMy42NS0uMjMgMS4wMXMuMDguNjguMjMuOTZjLjE1LjI4LjM3LjUyLjY0LjczLjI3LjIxLjYuMzguOTguNTMuMzguMTQuODEuMjYgMS4yNy4zNi4zOS4wOC43MS4xNy45NS4yNnMuNDMuMTkuNTcuMjljLjEzLjEuMjIuMjIuMjcuMzQuMDUuMTIuMDcuMjUuMDcuMzkgMCAuMzItLjEzLjU3LS40Ljc3LS4yNy4yLS42Ni4yOS0xLjE3LjI5LS4yMiAwLS40My0uMDItLjY0LS4wOC0uMjEtLjA1LS40LS4xMy0uNTYtLjI0YTEuMzMzIDEuMzMzIDAgMCAxLS41OS0xLjExaC0xLjg5YzAgLjM2LjA4LjcxLjI0IDEuMDUuMTYuMzQuMzkuNjUuNy45My4zMS4yNy42OS40OSAxLjE1LjY2LjQ2LjE3Ljk4LjI1IDEuNTguMjUuNTMgMCAxLjAxLS4wNiAxLjQ0LS4xOS40My0uMTMuOC0uMzEgMS4xMS0uNTQuMzEtLjIzLjU0LS41MS43MS0uODMuMTctLjMyLjI1LS42Ny4yNS0xLjA2LS4wMi0uNC0uMDktLjc0LS4yNC0xLjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMWg2djJIOXpNMTMgOHYyLjE3bDYuOTggNi45OGE4Ljk2MyA4Ljk2MyAwIDAgMC0uOTUtOS43NmwxLjQyLTEuNDJjLS40My0uNTEtLjktLjk5LTEuNDEtMS40MWwtMS40MiAxLjQyYTguOTYyIDguOTYyIDAgMCAwLTkuNzctLjk2TDEwLjgzIDhIMTN6TTIuODEgMi44MSAxLjM5IDQuMjJsMy40IDMuNGE4Ljk5NCA4Ljk5NCAwIDAgMCAxMi41OSAxMi41OWwyLjQgMi40IDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxaDZ2Mkg5ek0xOS4wMyA3LjM5bDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJBOC45NjIgOC45NjIgMCAwIDAgMTIgNGE5IDkgMCAwIDAtOSA5YzAgNC45NyA0LjAyIDkgOSA5YTguOTk0IDguOTk0IDAgMCAwIDcuMDMtMTQuNjF6TTEzIDE0aC0yVjhoMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb25hbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE3LjkzYy0zLjk0LS40OS03LTMuODUtNy03LjkzczMuMDUtNy40NCA3LTcuOTN2MTUuODZ6bTItMTUuODZjMS4wMy4xMyAyIC40NSAyLjg3LjkzSDEzdi0uOTN6TTEzIDdoNS4yNGMuMjUuMzEuNDguNjUuNjggMUgxM1Y3em0wIDNoNi43NGMuMDguMzMuMTUuNjYuMTkgMUgxM3YtMXptMCA5LjkzVjE5aDIuODdjLS44Ny40OC0xLjg0LjgtMi44Ny45M3pNMTguMjQgMTdIMTN2LTFoNS45MmMtLjIuMzUtLjQzLjY5LS42OCAxem0xLjUtM0gxM3YtMWg2LjkzYy0uMDQuMzQtLjExLjY3LS4xOSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFuc2Zvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOHYtMkg4VjRoMkw3IDEgNCA0aDJ2MkgydjJoNHY4YzAgMS4xLjkgMiAyIDJoOHYyaC0ybDMgMyAzLTNoLTJ2LTJoNHpNMTAgOGg2djZoMlY4YzAtMS4xLS45LTItMi0yaC02djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1bmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3djJoNnYtMkgzek0zIDV2MmgxMFY1SDN6bTEwIDE2di0yaDh2LTJoLTh2LTJoLTJ2Nmgyek03IDl2MkgzdjJoNHYyaDJWOUg3em0xNCA0di0ySDExdjJoMTB6bS02LTRoMlY3aDRWNWgtNFYzaC0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvQ2FtZXJhQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEwLjQ4VjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtNC40OGw0IDMuOTh2LTExbC00IDMuOTh6TTUgMTZsMi4zOC0zLjE3TDkgMTVsMi42Mi0zLjVMMTUgMTZINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9DYW1lcmFGcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEwLjQ4VjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtNC40OGw0IDMuOTh2LTExbC00IDMuOTh6TTEwIDhjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem00IDhINnYtLjU3YzAtLjgxLjQ4LTEuNTMgMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMSA1LjU2IDBBMi4wMSAyLjAxIDAgMCAxIDE0IDE1LjQzVjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb1N0YWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDE4VjZoMi45NWwtMi4zMyA4LjczTDE2LjgyIDE4SDR6bTE2IDBoLTIuOTVsMi4zNC04LjczTDcuMTggNkgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0NvbWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0djdoMjBWNEgyem04IDE2aDEydi03SDEwdjd6bS04IDBoNnYtN0gydjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdDb21wYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOGgyLjV2LTIuNUg0VjE4em0wLTQuNzVoMi41di0yLjVINHYyLjV6TTQgOC41aDIuNVY2SDR2Mi41ek0xNy41IDZ2Mi41SDIwVjZoLTIuNXpNMTMgOC41aDIuNVY2SDEzdjIuNXptNC41IDkuNUgyMHYtMi41aC0yLjVWMTh6bTAtNC43NUgyMHYtMi41aC0yLjV2Mi41ek04LjUgMThIMTF2LTIuNUg4LjVWMTh6bTQuNSAwaDIuNXYtMi41SDEzVjE4ek04LjUgOC41SDExVjZIOC41djIuNXptNC41IDQuNzVoMi41di0yLjVIMTN2Mi41em0tNC41IDBIMTF2LTIuNUg4LjV2Mi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWduZXR0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDE1Yy00LjQyIDAtOC0yLjY5LTgtNnMzLjU4LTYgOC02IDggMi42OSA4IDYtMy41OCA2LTggNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVnJwYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNjkgNC4wNUMxOC42NiA0LjczIDE1Ljg2IDUuNSAxMiA1LjVjLTMuODkgMC02Ljk1LS44NC04LjY5LTEuNDNBLjk5My45OTMgMCAwIDAgMiA1LjAyVjE5YzAgLjY4LjY2IDEuMTcgMS4zMS45NUM1LjM2IDE5LjI2IDguMSAxOC41IDEyIDE4LjVjMy44NyAwIDYuNjYuNzYgOC42OSAxLjQ1QS45OTkuOTk5IDAgMCAwIDIyIDE5VjVjMC0uNjgtLjY2LTEuMTYtMS4zMS0uOTV6TTEyIDE1Yy0yLjM0IDAtNC41Mi4xNS02LjUyLjQxbDMuNjktNC40MiAyIDIuNEwxNCAxMGw0LjUxIDUuNGMtMS45OS0uMjUtNC4yMS0uNC02LjUxLS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYkF1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljg1IDEyLjY1aDIuM0w4IDlsLTEuMTUgMy42NXpNMjIgN2wtMS4yIDYuMjlMMTkuMyA3aC0xLjZsLTEuNDkgNi4yOUwxNSA3aC0uNzZDMTIuNzcgNS4xNyAxMC41MyA0IDggNGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOGMzLjEzIDAgNS44NC0xLjgxIDcuMTUtNC40M2wuMS40M0gxN2wxLjUtNi4xTDIwIDE2aDEuNzVsMi4wNS05SDIyem0tMTEuNyA5LS43LTJINi40bC0uNyAySDMuOEw3IDdoMmwzLjIgOWgtMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYkNsb3VkeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM2IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjQtNC45NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JJbmNhbmRlc2NlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zLjU1IDE4LjU0IDEuNDEgMS40MSAxLjc5LTEuOC0xLjQxLTEuNDEtMS43OSAxLjh6TTExIDIyLjQ1aDJWMTkuNWgtMnYyLjk1ek00IDEwLjVIMXYyaDN2LTJ6bTExLTQuMTlWMS41SDl2NC44MUM3LjIxIDcuMzUgNiA5LjI4IDYgMTEuNWMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02YzAtMi4yMi0xLjIxLTQuMTUtMy01LjE5em01IDQuMTl2Mmgzdi0yaC0zem0tMi43NiA3LjY2IDEuNzkgMS44IDEuNDEtMS40MS0xLjgtMS43OS0xLjQgMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYklyaWRlc2NlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTQuNWgxNHYtNkg1djZ6TTExIC41NVYzLjVoMlYuNTVoLTJ6bTguMDQgMi41LTEuNzkgMS43OSAxLjQxIDEuNDEgMS44LTEuNzktMS40Mi0xLjQxek0xMyAyMi40NVYxOS41aC0ydjIuOTVoMnptNy40NS0zLjkxLTEuOC0xLjc5LTEuNDEgMS40MSAxLjc5IDEuOCAxLjQyLTEuNDJ6TTMuNTUgNC40NmwxLjc5IDEuNzkgMS40MS0xLjQxLTEuNzktMS43OS0xLjQxIDEuNDF6bTEuNDEgMTUuNDkgMS43OS0xLjgtMS40MS0xLjQxLTEuNzkgMS43OSAxLjQxIDEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdiU2hhZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEydjIuNWw1LjUgNS41SDIyem0wIDhoM2wtMy0zek04IDRsLTYgNmgydjEwaDhWMTBoMkw4IDR6bTEgMTBIN3YtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdiU3VubnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02Ljc2IDQuODQtMS44LTEuNzktMS40MSAxLjQxIDEuNzkgMS43OSAxLjQyLTEuNDF6TTQgMTAuNUgxdjJoM3YtMnptOS05Ljk1aC0yVjMuNWgyVi41NXptNy40NSAzLjkxLTEuNDEtMS40MS0xLjc5IDEuNzkgMS40MSAxLjQxIDEuNzktMS43OXptLTMuMjEgMTMuNyAxLjc5IDEuOCAxLjQxLTEuNDEtMS44LTEuNzktMS40IDEuNHpNMjAgMTAuNXYyaDN2LTJoLTN6bS04LTVjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02em0tMSAxNi45NWgyVjE5LjVoLTJ2Mi45NXptLTcuNDUtMy45MSAxLjQxIDEuNDEgMS43OS0xLjgtMS40MS0xLjQxLTEuNzkgMS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYlR3aWdobGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2Ljk1NCA4LjY2IDIuMTItMi4xMiAxLjQxNSAxLjQxNC0yLjEzIDIuMTJ6TTE3LjkgMTRjLS41LTIuODUtMi45NS01LTUuOS01cy01LjQ1IDIuMTUtNS45IDVoMTEuOHpNMiAxNmgyMHY0SDJ6bTktMTJoMnYzaC0yek0zLjU0IDcuOTI1IDQuOTU0IDYuNTFsMi4xMjIgMi4xMjItMS40MTUgMS40MTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdiVHdpbGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45NTUgOC42NjIgMi4xMi0yLjEyMiAxLjQxNiAxLjQxNC0yLjEyMSAyLjEyMnpNMiAxOGgyMHYySDJ6TTExIDRoMnYzaC0yek0zLjU0MyA3LjkyNSA0Ljk1NyA2LjUxbDIuMTIxIDIuMTItMS40MTQgMS40MTV6TTUgMTZoMTRjMC0zLjg3LTMuMTMtNy03LTdzLTcgMy4xMy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDM2MCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdDNi40OCA3IDIgOS4yNCAyIDEyYzAgMi4yNCAyLjk0IDQuMTMgNyA0Ljc3VjIwbDQtNC00LTR2Mi43M2MtMy4xNS0uNTYtNS0xLjktNS0yLjczIDAtMS4wNiAzLjA0LTMgOC0zczggMS45NCA4IDNjMCAuNzMtMS40NiAxLjg5LTQgMi41M3YyLjA1YzMuNTMtLjc3IDYtMi41MyA2LTQuNTggMC0yLjc2LTQuNDgtNS0xMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRCdXNpbmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE3aDJ2LTNoMXYtMmwtMS01SDJsLTEgNXYyaDF2Nmg5di02aDR2M3ptLTYgMUg0di00aDV2NHpNMiA0aDE1djJIMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTh2LTNoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZExvY2F0aW9uQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMXYzaDN2MmgtM3YzaC0yVjZoLTNWNGgzVjFoMnptLTggMTJjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0yLTkuNzVWN2gzdjNoMi45MmMuMDUuMzkuMDguNzkuMDggMS4yIDAgMy4zMi0yLjY3IDcuMjUtOCAxMS44LTUuMzMtNC41NS04LTguNDgtOC0xMS44QzQgNi4yMiA3LjggMyAxMiAzYy42OCAwIDEuMzUuMDggMiAuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZExvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTQgMiA1IDUuMTQgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg2LTMuMTQtNy03LTd6bTQgOGgtM3YzaC0ydi0zSDhWOGgzVjVoMnYzaDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkUm9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4di0zaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yek0xOCA0aDJ2OWgtMnpNNCA0aDJ2MTZINHpNMTEgNGgydjRoLTJ6TTExIDEwaDJ2NGgtMnpNMTEgMTZoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZ3JpY3VsdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgMTJjLjkzIDAgMS43OC4yOCAyLjUuNzZWOGMwLTEuMS0uOS0yLTItMmgtNi4yOWwtMS4wNi0xLjA2IDEuNDEtMS40MS0uNzEtLjcxLTMuNTMgMy41My43MS43MSAxLjQxLTEuNDFMMTMgNi43MVY5YzAgMS4xLS45IDItMiAyaC0uNTRBNS45OCA1Ljk4IDAgMCAxIDEyIDE1YzAgLjM0LS4wNC42Ny0uMDkgMWgzLjE0Yy4yNS0yLjI1IDIuMTQtNCA0LjQ1LTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgMTNjLTEuOTMgMC0zLjUgMS41Ny0zLjUgMy41czEuNTcgMy41IDMuNSAzLjUgMy41LTEuNTcgMy41LTMuNS0xLjU3LTMuNS0zLjUtMy41em0wIDVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek00IDloNWMwLTEuMS0uOS0yLTItMkg0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxek05LjgzIDEzLjgybC0uMTgtLjQ3LjkzLS4zNWE0LjkyIDQuOTIgMCAwIDAtMi4zMS0yLjQzbC0uNC44OS0uNDYtLjIxLjQtLjlDNy4yNiAxMC4xMyA2LjY0IDEwIDYgMTBjLS41MyAwLTEuMDQuMTEtMS41Mi4yNmwuMzQuOTEtLjQ3LjE4LS4zNS0uOTNhNC45MiA0LjkyIDAgMCAwLTIuNDMgMi4zMWwuODkuNC0uMjEuNDYtLjktLjRDMS4xMyAxMy43NCAxIDE0LjM2IDEgMTVjMCAuNTMuMTEgMS4wNC4yNiAxLjUybC45MS0uMzQuMTguNDctLjkzLjM1YTQuOTIgNC45MiAwIDAgMCAyLjMxIDIuNDNsLjQtLjg5LjQ2LjIxLS40LjljLjU1LjIyIDEuMTcuMzUgMS44MS4zNS41MyAwIDEuMDQtLjExIDEuNTItLjI2bC0uMzQtLjkxLjQ3LS4xOC4zNS45M2E0LjkyIDQuOTIgMCAwIDAgMi40My0yLjMxbC0uODktLjQuMjEtLjQ2LjkuNGMuMjItLjU1LjM1LTEuMTcuMzUtMS44MSAwLS41My0uMTEtMS4wNC0uMjYtMS41MmwtLjkxLjM0em0tMi42OCAzLjk1Yy0xLjUzLjYzLTMuMjktLjA5LTMuOTItMS42Mi0uNjMtMS41My4wOS0zLjI5IDEuNjItMy45MiAxLjUzLS42MyAzLjI5LjA5IDMuOTIgMS42Mi42NCAxLjUzLS4wOSAzLjI5LTEuNjIgMy45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlybGluZVN0b3BzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMjEgOS4yMUMxNS45MyAxMC43OCAxMy40NSAxMy4zIDEzIDE3aDJ2Mkg5di0yaDJjLS41LTQuNS00LjM3LTgtOS04VjdjNC4zOSAwIDguMjIgMi41NSAxMCA2LjMgMS4xMy0yLjQzIDIuOTktNC4yNSA0Ljc4LTUuNTJMMTQgNWg3djdsLTIuNzktMi43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlybGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA0IDIgMjBoMTdsMy0xNmgtOXptMS41IDEwYTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbHRSb3V0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkuNzggMTEuMTYtMS40MiAxLjQyYTcuMjgyIDcuMjgyIDAgMCAxLTEuNzktMi45NGwxLjk0LS40OWMuMzIuODkuNzcgMS41IDEuMjcgMi4wMXpNMTEgNiA3IDIgMyA2aDMuMDJjLjAyLjgxLjA4IDEuNTQuMTkgMi4xN2wxLjk0LS40OUM4LjA4IDcuMiA4LjAzIDYuNjMgOC4wMiA2SDExem0xMCAwLTQtNC00IDRoMi45OWMtLjEgMy42OC0xLjI4IDQuNzUtMi41NCA1Ljg4LS41LjQ0LTEuMDEuOTItMS40NSAxLjU1LS4zNC0uNDktLjczLS44OC0xLjEzLTEuMjRMOS40NiAxMy42Yy45My44NSAxLjU0IDEuNTQgMS41NCAzLjR2NWgydi01YzAtMi4wMi43MS0yLjY2IDEuNzktMy42MyAxLjM4LTEuMjQgMy4wOC0yLjc4IDMuMi03LjM3SDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDl2MS41aDIuMjVWMTVoMS41di00LjVIMTRWOXpNNiA5SDNjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNXYtMS41aDJWMTVIN3YtNWMwLS41NS0uNDUtMS0xLTF6bS0uNSAzaC0ydi0xLjVoMlYxMnpNMjEgOWgtNC41Yy0uNTUgMC0xIC40NS0xIDF2NUgxN3YtNC41aDFWMTRoMS41di0zLjUxaDFWMTVIMjJ2LTVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdHRyYWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjQzIDE4Ljc1Yy4zNy0uNDYuOTQtLjc1IDEuNTctLjc1LjYzIDAgMS4xOS4yOSAxLjU2Ljc1LjM5LS4wOS43Ni0uMjEgMS4xMi0uMzZsLTEuNDItMy4xOGEzLjUyMiAzLjUyMiAwIDAgMS0yLjU2LS4wMmwtMS40MyAzLjE5Yy4zOC4xNi43Ni4yOSAxLjE2LjM3ek01LjE1IDEwYTcuMDYgNy4wNiAwIDAgMCAuMDggNGMuNjMuMDUgMS4yMi40IDEuNTYuOTkuMzMuNTcuMzUgMS4yMy4xMSAxLjc5LjI3LjI3LjU2LjUzLjg3Ljc2bDEuNTItMy4zOWMtLjQ3LS41OC0uNzUtMS4zMi0uNzUtMi4xMyAwLTEuODkgMS41NS0zLjQxIDMuNDYtMy40MXMzLjQ2IDEuNTMgMy40NiAzLjQxYzAgLjgyLS4yOSAxLjU3LS43OCAyLjE2bDEuNSAzLjM1Yy4zMi0uMjQuNjItLjUuOS0uNzktLjIyLS41NS0uMi0xLjIuMTItMS43NS4zMy0uNTcuOS0uOTIgMS41Mi0uOTlhNy4wMjUgNy4wMjUgMCAwIDAgLjA5LTQuMDJjLS42NC0uMDQtMS4yNi0uMzktMS42LTEtLjM2LS42Mi0uMzUtMS4zNi0uMDMtMS45NS0uOTEtLjk4LTIuMS0xLjcxLTMuNDQtMi4wNUMxMy4zOSA1LjYgMTIuNzQgNiAxMiA2cy0xLjM5LS40MS0xLjc0LTEuMDFhNy4wNTMgNy4wNTMgMCAwIDAtMy40NCAyLjAzYy4zMy42LjM1IDEuMzUtLjAyIDEuOTgtLjM1LjYyLS45OS45Ny0xLjY1IDF6bS0xLjMtLjQyYy0uNzgtLjYtMS4wMi0xLjctLjUxLTIuNTguNTEtLjg4IDEuNTgtMS4yMyAyLjQ5LS44NWE4LjUzIDguNTMgMCAwIDEgNC4xOC0yLjQyQzEwLjE1IDIuNzUgMTAuOTkgMiAxMiAyczEuODUuNzUgMS45OCAxLjczYzEuNjMuMzkgMy4wNyAxLjI0IDQuMTggMi40MmExLjk5IDEuOTkgMCAwIDEgMi40OS44NWMuNTEuODguMjcgMS45OC0uNTEgMi41OC4yMy43Ny4zNSAxLjU4LjM1IDIuNDJzLS4xMiAxLjY1LS4zNSAyLjQyYy43OC42IDEuMDIgMS43LjUxIDIuNTgtLjUxLjg4LTEuNTggMS4yMy0yLjQ5Ljg1LS40LjQzLS44NS44MS0xLjM0IDEuMTVsMS4zNCAzSDE2LjNsLS45Ny0yLjE3Yy0uNDMuMTgtLjg4LjMzLTEuMzQuNDQtLjE0Ljk4LS45OCAxLjczLTEuOTkgMS43M3MtMS44NS0uNzUtMS45OC0xLjczYy0uNDgtLjEyLS45NC0uMjctMS4zOC0uNDZMNy42NiAyMkg1Ljc4bDEuMzYtMy4wM2E4LjcyIDguNzIgMCAwIDEtMS4zLTEuMTJjLS45Mi4zOC0xLjk5LjAzLTIuNS0uODVzLS4yNy0xLjk4LjUxLTIuNThjLS4yMy0uNzctLjM1LTEuNTgtLjM1LTIuNDJzLjEyLTEuNjUuMzUtMi40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFkZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aC01VjRjMC0xLjEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjktMiAydjNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yek05IDEyYy44MyAwIDEuNS42NyAxLjUgMS41UzkuODMgMTUgOSAxNXMtMS41LS42Ny0xLjUtMS41UzguMTcgMTIgOSAxMnptMyA2SDZ2LS43NWMwLTEgMi0xLjUgMy0xLjVzMyAuNSAzIDEuNVYxOHptMS05aC0yVjRoMnY1em01IDcuNWgtNFYxNWg0djEuNXptMC0zaC00VjEyaDR2MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWtlcnlEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTkuMjggMTYuMzQgMTcuNDYgMTVzLjMyLS41OS45Ni0xLjc4YS45NDQuOTQ0IDAgMCAxIDEuNiAwbC44MSAxLjI2Yy4xOS4zLjIxLjY4LjA2IDFsLS4yMi40N2EuOTQuOTQgMCAwIDEtMS4zOS4zOXptLTE0LjU2IDBhLjk0Ni45NDYgMCAwIDEtMS4zOS0uMzhsLS4yMy0uNDdjLS4xNS0uMzItLjEzLS43LjA2LTFsLjgxLTEuMjZhLjk0NC45NDQgMCAwIDEgMS42IDBjLjY1IDEuMTguOTcgMS43Ny45NyAxLjc3bC0xLjgyIDEuMzR6bTEwLjY0LTYuOTdjLjA5LS42OC43My0xLjA2IDEuMjctLjc1bDEuNTkuOWMuNDYuMjYuNjMuOTEuMzYgMS40MUwxNi41IDE1aC0xLjhsLjY2LTUuNjN6bS02LjczIDBMOS4zIDE1SDcuNWwtMi4wOS00LjA4Yy0uMjctLjUtLjEtMS4xNS4zNi0xLjQxbDEuNTktLjljLjUzLS4zIDEuMTguMDggMS4yNy43NnpNMTMuOCAxNWgtMy42bC0uNzQtNi44OGMtLjA3LS41OS4zNS0xLjEyLjg4LTEuMTJoMy4zYy41MyAwIC45NC41My44OCAxLjEyTDEzLjggMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlZW5oZXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMUg1Yy0xLjEgMC0xLjk5LjktMS45OSAyTDMgMTUuOTNjMCAuNjkuMzUgMS4zLjg4IDEuNjZMMTIgMjNsOC4xMS01LjQxYy41My0uMzYuODgtLjk3Ljg4LTEuNjZMMjEgM2MwLTEuMS0uOS0yLTItMnptLTkgMTUtNS01IDEuNDEtMS40MUwxMCAxMy4xN2w3LjU5LTcuNTlMMTkgN2wtOSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCaWtlU2Nvb3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE0aC43NEw4LjgyIDUuNTZBMi4wMDkgMi4wMDkgMCAwIDAgNi44NyA0SDN2MmgzLjg3bDEuNDIgNi4yNWgtLjAxQTYuMDA4IDYuMDA4IDAgMCAwIDQuMDkgMTdIMHYyaDZ2LTFjMC0yLjIxIDEuNzktNCA0LTR6TTE5IDhoLS44MmwtMS4zNS0zLjY5QTEuOTc2IDEuOTc2IDAgMCAwIDE0Ljk2IDNIMTF2MmgzLjk2bDEuMSAzSDEwLjRsLjQ2IDJIMTVjLS40My41OC0uNzUgMS4yNS0uOSAyaC0yLjc5bC40NiAyaDIuMzNjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNUMyNCAxMC4yIDIxLjggOCAxOSA4em0wIDhjLTEuNjggMC0zLTEuMzItMy0zIDAtLjkzLjQxLTEuNzMgMS4wNS0yLjI4bC45NiAyLjY0IDEuODgtLjY4LS45Ny0yLjY3Yy4wMyAwIC4wNi0uMDEuMDktLjAxIDEuNjggMCAzIDEuMzIgMyAzcy0xLjMzIDMtMy4wMSAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmVha2Zhc3REaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggM0g2QzMuNzkgMyAyIDQuNzkgMiA3YzAgMS40OC44MSAyLjc1IDIgMy40NVYxOWMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi04LjU1YzEuMTktLjY5IDItMS45NyAyLTMuNDUgMC0yLjIxLTEuNzktNC00LTR6bS00IDEyaC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJ1bmNoRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDhoMlY0aC0ydjR6bS0yLjQ5IDE0SDIuNDljLS4yNyAwLS40OS0uMjItLjQ5LS41VjIwaDE0djEuNWMwIC4yOC0uMjIuNS0uNDkuNXpNMTggMTUuODlsLS40LS40MmE1Ljg1MiA1Ljg1MiAwIDAgMS0xLjYtNFYyaDZ2OS41MWMwIDEuNDYtLjU0IDIuODctMS41MyAzLjk0bC0uNDcuNTJWMjBoMnYyaC00di02LjExek03IDE2di0yaDR2Mmg0LjVjLjI4IDAgLjUuMjIuNS41djFjMCAuMjgtLjIyLjUtLjUuNWgtMTNjLS4yOCAwLS41LS4yMi0uNS0uNXYtMWMwLS4yOC4yMi0uNS41LS41SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJ1c0FsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxYTcgNyAwIDAgMC01Ljc4IDMuMDVsLjAyLS4wM0M5Ljg0IDQgOS40MiA0IDkgNGMtNC40MiAwLTggLjUtOCA0djEwYzAgLjg4LjM5IDEuNjcgMSAyLjIyVjIyYTEgMSAwIDAgMCAxIDFoMWExIDEgMCAwIDAgMS0xdi0xaDh2MWExIDEgMCAwIDAgMSAxaDFhMSAxIDAgMCAwIDEtMXYtMS43OGMuNjEtLjU1IDEtMS4zNCAxLTIuMjJ2LTMuMDhBNyA3IDAgMCAwIDE2IDF6TTQuNSAxOWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pNMyAxM1Y4aDZjMCAxLjk2LjgxIDMuNzMgMi4xMSA1SDN6bTEwLjUgNmExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptMi41LTZhNSA1IDAgMSAxIDAtMTAgNSA1IDAgMCAxIDAgMTB6bS0xLTloMnY1aC0yem0wIDZoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXJDcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDFjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0uNSA2aC0xVjNoMXY0em0wIDF2MWgtMVY4aDF6bS0uNTkgNWMuMDYuMTYuMDkuMzMuMDkuNSAwIC44My0uNjcgMS41LTEuNSAxLjVzLTEuNS0uNjctMS41LTEuNWMwLS4zOS4xNS0uNzQuMzktMS4wMUE3LjAzMiA3LjAzMiAwIDAgMSAxMS42OCA5SDUuODFsMS4wNC0zSDExYzAtLjY5LjEtMS4zNy4yOS0ySDYuNWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxMXY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTYuNjhjLTEuMDUuNTEtMi4xNi42OS0zLjA5LjY4ek03LjUgMTVjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDEyIDcuNSAxMnMxLjUuNjcgMS41IDEuNVM4LjMzIDE1IDcuNSAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FyUmVudGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMzkgOUg3LjYxYy0uNDMgMC0uODEuMjgtLjk1LjY4bC0xLjY2IDV2Ni44MWMwIC4yOS4yMy41MS41LjUxaDFjLjI4IDAgLjUtLjIyLjUtLjVWMjBoMTB2MS41YzAgLjI4LjIyLjUuNS41aDFjLjI4IDAgLjUtLjIyLjUtLjV2LTYuODFsLTEuNjYtNWExLjAxIDEuMDEgMCAwIDAtLjk1LS42OXptLTguNjEgOWMtLjY4IDAtMS4yMi0uNTQtMS4yMi0xLjIycy41NC0xLjIyIDEuMjItMS4yMlM5IDE2LjExIDkgMTYuNzggOC40NiAxOCA3Ljc4IDE4em04LjQ0IDBjLS42NyAwLTEuMjItLjU0LTEuMjItMS4yMnMuNTQtMS4yMiAxLjIyLTEuMjIgMS4yMi41NCAxLjIyIDEuMjJTMTYuOSAxOCAxNi4yMiAxOHptLTkuOTMtNCAxLjMzLTRoOC43OGwxLjMzIDRINi4yOXpNMTAuODMgM0EzLjAxIDMuMDEgMCAwIDAgOCAxQzYuMzQgMSA1IDIuMzQgNSA0YzAgMS42NSAxLjM0IDMgMyAzIDEuMyAwIDIuNDEtLjg0IDIuODMtMkgxNnYyaDJWNWgxVjNoLTguMTd6TTggNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXJSZXBhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yMiAxMmMuNjggMCAxLjIyLS41NCAxLjIyLTEuMjIgMC0uNjctLjU0LTEuMjItMS4yMi0xLjIyUzE1IDEwLjExIDE1IDEwLjc4YzAgLjY4LjU1IDEuMjIgMS4yMiAxLjIyem0tOS42Ni0xLjIyYzAgLjY3LjU0IDEuMjIgMS4yMiAxLjIyUzkgMTEuNDYgOSAxMC43OGMwLS42Ny0uNTQtMS4yMi0xLjIyLTEuMjJzLTEuMjIuNTUtMS4yMiAxLjIyek03LjYxIDQgNi4yOCA4aDExLjQzbC0xLjMzLTRINy42MXptOC42Ny0xcy41NC4wMS45Mi41NGMuMDIuMDIuMDMuMDQuMDUuMDcuMDcuMTEuMTQuMjQuMTkuNC4yMi42NSAxLjU2IDQuNjggMS41NiA0LjY4djYuNWMwIC40NS0uMzUuODEtLjc4LjgxaC0uNDRjLS40MyAwLS43OC0uMzYtLjc4LS44MVYxNEg3djEuMTljMCAuNDUtLjM1LjgxLS43OC44MWgtLjQ0Yy0uNDMgMC0uNzgtLjM2LS43OC0uODF2LTYuNVM2LjM0IDQuNjcgNi41NSA0Yy4wNS0uMTYuMTItLjI4LjE5LS40LjAzLS4wMi4wNC0uMDQuMDYtLjA2LjM4LS41My45Mi0uNTQuOTItLjU0aDguNTZ6TTQgMTcuMDFoMTZWMTloLTd2M2gtMnYtM0g0di0xLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXN0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA5djJoLTJWM2gtMnYyaC0yVjNoLTJ2MmgtMlYzSDl2Mkg3VjNINXY4SDNWOUgxdjEyaDl2LTNjMC0xLjEuOS0yIDItMnMyIC45IDIgMnYzaDlWOWgtMnptLTEwIDNIOVY5aDJ2M3ptNCAwaC0yVjloMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXRlZ29yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDItNS41IDloMTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTcuNVwiLFwiY3lcIjpcIjE3LjVcIixcInJcIjpcIjQuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzLjVoOHY4SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENlbGVicmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMiAyMiAxNC01LTktOXpNMTQuNTMgMTIuNTNsNS41OS01LjU5YTEuMjUgMS4yNSAwIDAgMSAxLjc3IDBsLjU5LjU5IDEuMDYtMS4wNi0uNTktLjU5YTIuNzU4IDIuNzU4IDAgMCAwLTMuODkgMGwtNS41OSA1LjU5IDEuMDYgMS4wNnpNMTAuMDYgNi44OGwtLjU5LjU5IDEuMDYgMS4wNi41OS0uNTlhMi43NTggMi43NTggMCAwIDAgMC0zLjg5bC0uNTktLjU5LTEuMDYgMS4wNy41OS41OWMuNDguNDguNDggMS4yOCAwIDEuNzZ6TTE3LjA2IDExLjg4bC0xLjU5IDEuNTkgMS4wNiAxLjA2IDEuNTktMS41OWExLjI1IDEuMjUgMCAwIDEgMS43NyAwbDEuNjEgMS42MSAxLjA2LTEuMDYtMS42MS0xLjYxYTIuNzU4IDIuNzU4IDAgMCAwLTMuODkgMHpNMTUuMDYgNS44OGwtMy41OSAzLjU5IDEuMDYgMS4wNiAzLjU5LTMuNTlhMi43NTggMi43NTggMCAwIDAgMC0zLjg5bC0xLjU5LTEuNTktMS4wNiAxLjA2IDEuNTkgMS41OWMuNDguNDkuNDggMS4yOSAwIDEuNzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENodXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEyLjIyVjlsLTUtMi41VjVoMlYzaC0yVjFoLTJ2Mkg5djJoMnYxLjVMNiA5djMuMjJMMiAxNHY4aDh2LTNjMC0xLjEuOS0yIDItMnMyIC45IDIgMnYzaDh2LThsLTQtMS43OHptLTYgMS4yOGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsZWFuaW5nU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMWgtMVYzYzAtMS4xLS45LTItMi0yaC0yYy0xLjEgMC0yIC45LTIgMnY4SDhjLTIuNzYgMC01IDIuMjQtNSA1djdoMTh2LTdjMC0yLjc2LTIuMjQtNS01LTV6bTMgMTBoLTJ2LTNjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2M2gtMnYtM2MwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXYzSDl2LTNjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2M0g1di01YzAtMS42NSAxLjM1LTMgMy0zaDhjMS42NSAwIDMgMS4zNSAzIDN2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tcGFzc0NhbGlicmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE3XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwLjA3YzEuOTUgMCAzLjcyLjc5IDUgMi4wN2w1LTVDMTkuNDQgNC41OSAxNS45IDMgMTIgM1M0LjU2IDQuNTkgMiA3LjE1bDUgNWE3LjA2IDcuMDYgMCAwIDEgNS0yLjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb25uZWN0aW5nQWlycG9ydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS40IDE3IDEuMyA0LjRoLTEuMUwxMyAxN2gtM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWgzbDIuNi00LjRoMS4xTDE1LjQgMTVoMi44NWwuNzUtMWgxbC0uNiAyIC42IDJoLTFsLS43NS0xSDE1LjR6TTUuNzUgNyA1IDZINGwuNiAyLS42IDJoMWwuNzUtMUg4LjZsLTEuMyA0LjRoMS4xTDExIDloM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtM0w4LjQgMi42SDcuM0w4LjYgN0g1Ljc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcmlzaXNBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMi41YzAgMS41LTEuNSA2LTEuNSA2aC0yUzkuNSA0IDkuNSAyLjVhMi41IDIuNSAwIDAgMSA1IDB6TTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNC4wOC00Ljg5Yy4xOC0uNzUuMzMtMS40Ny4zOS0yLjA2QTkuOTk2IDkuOTk2IDAgMCAxIDIyIDEyYzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTMuOTIgMi4yNS03LjMxIDUuNTMtOC45NS4wNy41OS4yMSAxLjMyLjM5IDIuMDZBOC4wMjggOC4wMjggMCAwIDAgNCAxMmMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi45My0xLjU4LTUuNDktMy45Mi02Ljg5ek0xOCAxMmMwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNmMwLTIgLjk4LTMuNzcgMi40OC00Ljg2LjIzLjgxLjY1IDIuMDcuNjUgMi4wN0M4LjQzIDkuOTMgOCAxMC45MiA4IDEyYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRjMC0xLjA4LS40My0yLjA3LTEuMTMtMi43OSAwIDAgLjQxLTEuMjIuNjUtMi4wN0E1Ljk5OCA1Ljk5OCAwIDAgMSAxOCAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVsaXZlcnlEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3YzAtMS4xLS45LTItMi0yaC0zdjJoM3YyLjY1TDEzLjUyIDE0SDEwVjlINmMtMi4yMSAwLTQgMS43OS00IDR2M2gyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNC40OEwxOSAxMC4zNVY3ek03IDE3Yy0uNTUgMC0xLS40NS0xLTFoMmMwIC41NS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNmg1djJINXpNMTkgMTNjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVwYXJ0dXJlQm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFjLTIuNCAwLTQuNTIgMS4yMS01Ljc4IDMuMDUuMDEtLjAxLjAxLS4wMi4wMi0uMDNDOS44NCA0IDkuNDIgNCA5IDRjLTQuNDIgMC04IC41LTggNHYxMGMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMmMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIydi0zLjA4YzMuMzktLjQ5IDYtMy4zOSA2LTYuOTIgMC0zLjg3LTMuMTMtNy03LTd6TTQuNSAxOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzMuNjcgMTYgNC41IDE2czEuNS42NyAxLjUgMS41UzUuMzMgMTkgNC41IDE5ek0zIDEzVjhoNmMwIDEuOTYuODEgMy43MyAyLjExIDVIM3ptMTAuNSA2Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptMi41LTZjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0uNS05SDE1djVsMy42MiAyLjE2Ljc1LTEuMjMtMi44Ny0xLjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXNpZ25TZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjI0IDExLjUxIDEuNTctMS41Ny0zLjc1LTMuNzUtMS41NyAxLjU3LTQuMTQtNC4xM2MtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTEuOSAxLjljLS43OC43OC0uNzggMi4wNSAwIDIuODNsNC4xMyA0LjEzTDMgMTcuMjVWMjFoMy43NWw0Ljc2LTQuNzYgNC4xMyA0LjEzYy45NS45NSAyLjIzLjYgMi44MyAwbDEuOS0xLjljLjc4LS43OC43OC0yLjA1IDAtMi44M2wtNC4xMy00LjEzem0tNy4wNi0uNDRMNS4wNCA2Ljk0bDEuODktMS45TDguMiA2LjMxIDcuMDIgNy41bDEuNDEgMS40MSAxLjE5LTEuMTkgMS40NSAxLjQ1LTEuODkgMS45em03Ljg4IDcuODktNC4xMy00LjEzIDEuOS0xLjkgMS40NSAxLjQ1LTEuMTkgMS4xOSAxLjQxIDEuNDEgMS4xOS0xLjE5IDEuMjcgMS4yNy0xLjkgMS45ek0yMC43MSA3LjA0YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0Yy0uNDctLjQ3LTEuMTItLjI5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpYW1vbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4xNiAzaC0uMzJMOS4yMSA4LjI1aDUuNTh6TTE2LjQ2IDguMjVoNS4xNkwxOSAzaC01LjE2ek0yMS4zOCA5Ljc1aC04LjYzVjIwLjF6TTExLjI1IDIwLjFWOS43NUgyLjYyek03LjU0IDguMjUgMTAuMTYgM0g1TDIuMzggOC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlubmVyRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxOWgyMGwtMiAySDRsLTItMnpNNSA2aDF2MUg1VjZ6bTAtMmgxdjFINVY0em00IDB2MUg3VjRoMnptMCAzSDdWNmgydjF6bS0zIDguMjNjLS4zNi4xMS0uNjkuMjgtMSAuNDdWOGgxdjcuMjN6bS0yIDEuMjljLS4zOC40NC0uNjguOTMtLjg0IDEuNDhoMTYuODJjLjAxLS4xNi4wMy0uMzMuMDMtLjVhNS40OTcgNS40OTcgMCAwIDAtMTAuNTgtMi4xYy0uNTktLjI1LTEuMjQtLjQtMS45My0uNC0uMTcgMC0uMzMuMDItLjUuMDRWOGgyYzEuMDMuMDYgMS45LS45NiAyLTJoMTBWNUgxMWMtLjEtMS4wNS0uOTctMS45Ny0yLTJIM3YxaDF2MUgzdjFoMXYxSDN2MWgxdjguNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcmVjdGlvbnNCaWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek01IDEyYy0yLjggMC01IDIuMi01IDVzMi4yIDUgNSA1IDUtMi4yIDUtNS0yLjItNS01LTV6bTAgOC41Yy0xLjkgMC0zLjUtMS42LTMuNS0zLjVzMS42LTMuNSAzLjUtMy41IDMuNSAxLjYgMy41IDMuNS0xLjYgMy41LTMuNSAzLjV6bTUuOC0xMCAyLjQtMi40LjguOGMxLjMgMS4zIDMgMi4xIDUuMSAyLjFWOWMtMS41IDAtMi43LS42LTMuNi0xLjVsLTEuOS0xLjljLS41LS40LTEtLjYtMS42LS42cy0xLjEuMi0xLjQuNkw3LjggOC40Yy0uNC40LS42LjktLjYgMS40IDAgLjYuMiAxLjEuNiAxLjRMMTEgMTR2NWgydi02LjJsLTIuMi0yLjN6TTE5IDEyYy0yLjggMC01IDIuMi01IDVzMi4yIDUgNSA1IDUtMi4yIDUtNS0yLjItNS01LTV6bTAgOC41Yy0xLjkgMC0zLjUtMS42LTMuNS0zLjVzMS42LTMuNSAzLjUtMy41IDMuNSAxLjYgMy41IDMuNS0xLjYgMy41LTMuNSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcmVjdGlvbnNCb2F0RmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMjFjLTEuMzkgMC0yLjc4LS40Ny00LTEuMzItMi40NCAxLjcxLTUuNTYgMS43MS04IDBDNi43OCAyMC41MyA1LjM5IDIxIDQgMjFIMnYyaDJjMS4zOCAwIDIuNzQtLjM1IDQtLjk5YTguNzUyIDguNzUyIDAgMCAwIDggMGMxLjI2LjY1IDIuNjIuOTkgNCAuOTloMnYtMmgtMnpNMy45NSAxOUg0YzEuNiAwIDMuMDItLjg4IDQtMiAuOTggMS4xMiAyLjQgMiA0IDJzMy4wMi0uODggNC0yYy45OCAxLjEyIDIuNCAyIDQgMmguMDVsMS45LTYuNjhjLjExLS4zNy4wNC0xLjA2LS42Ni0xLjI4TDIwIDEwLjYyVjZjMC0xLjEtLjktMi0yLTJoLTNWMUg5djNINmMtMS4xIDAtMiAuOS0yIDJ2NC42MmwtMS4yOS40MmMtLjYzLjE5LS44MS44NC0uNjYgMS4yOEwzLjk1IDE5ek02IDZoMTJ2My45N0wxMiA4IDYgOS45N1Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zQm9hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDIxYy0xLjM5IDAtMi43OC0uNDctNC0xLjMyLTIuNDQgMS43MS01LjU2IDEuNzEtOCAwQzYuNzggMjAuNTMgNS4zOSAyMSA0IDIxSDJ2MmgyYzEuMzggMCAyLjc0LS4zNSA0LS45OWE4Ljc1MiA4Ljc1MiAwIDAgMCA4IDBjMS4yNi42NSAyLjYyLjk5IDQgLjk5aDJ2LTJoLTJ6TTMuOTUgMTlINGMxLjYgMCAzLjAyLS44OCA0LTIgLjk4IDEuMTIgMi40IDIgNCAyczMuMDItLjg4IDQtMmMuOTggMS4xMiAyLjQgMiA0IDJoLjA1bDEuODktNi42OGMuMDgtLjI2LjA2LS41NC0uMDYtLjc4cy0uMzQtLjQyLS42LS41TDIwIDEwLjYyVjZjMC0xLjEtLjktMi0yLTJoLTNWMUg5djNINmMtMS4xIDAtMiAuOS0yIDJ2NC42MmwtMS4yOS40MmExLjAwNyAxLjAwNyAwIDAgMC0uNjYgMS4yOEwzLjk1IDE5ek02IDZoMTJ2My45N0wxMiA4IDYgOS45N1Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zQnVzRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNWMwIC45NS4zOCAxLjgxIDEgMi40NFYyMGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTIuMDZjLjYyLS42MyAxLTEuNDkgMS0yLjQ0VjZjMC0zLjUtMy41OC00LTgtNHpNOC41IDE2Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNy42NyAxMyA4LjUgMTNzMS41LjY3IDEuNSAxLjVTOS4zMyAxNiA4LjUgMTZ6bTcgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTIuNS02SDZWN2gxMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zQnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxNmMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIyVjZjMC0zLjUtMy41OC00LTgtNHMtOCAuNS04IDR2MTB6bTMuNSAxYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNi42NyAxNCA3LjUgMTRzMS41LjY3IDEuNSAxLjVTOC4zMyAxNyA3LjUgMTd6bTkgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTEuNS02SDZWNmgxMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zQ2FyRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgNi4wMUMxOC43MiA1LjQyIDE4LjE2IDUgMTcuNSA1aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxMnY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNy41IDE2Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNi42NyAxMyA3LjUgMTNzMS41LjY3IDEuNSAxLjVTOC4zMyAxNiA3LjUgMTZ6bTkgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTUuODEgMTBsMS4wNC0zaDEwLjI5bDEuMDQgM0g1LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgNi4wMUMxOC43MiA1LjQyIDE4LjE2IDUgMTcuNSA1aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxMnY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi41IDE2Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyAxMyA2LjUgMTNzMS41LjY3IDEuNSAxLjVTNy4zMyAxNiA2LjUgMTZ6bTExIDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01IDExbDEuNS00LjVoMTFMMTkgMTFINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1JhaWx3YXlGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMHYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6bTAgMTRjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMS4xNyAxMyAxMiAxM3MxLjUuNjcgMS41IDEuNVMxMi44MyAxNiAxMiAxNnptNi02SDZWN2gxMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zUmFpbHdheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTUuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY1YzAtMy41LTMuNTgtNC04LTRzLTggLjUtOCA0djEwLjV6bTggMS41Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptNi03SDZWNWgxMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zUnVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNDkgNS40OGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bS0zLjYgMTMuOSAxLTQuNCAyLjEgMnY2aDJ2LTcuNWwtMi4xLTIgLjYtM2MxLjMgMS41IDMuMyAyLjUgNS41IDIuNXYtMmMtMS45IDAtMy41LTEtNC4zLTIuNGwtMS0xLjZjLS40LS42LTEtMS0xLjctMS0uMyAwLS41LjEtLjguMWwtNS4yIDIuMnY0LjdoMnYtMy40bDEuOC0uNy0xLjYgOC4xLTQuOS0xLS40IDIgNyAxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcmVjdGlvbnNTdWJ3YXlGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMHYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6TTguNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuNjcgMTMgOC41IDEzczEuNS42NyAxLjUgMS41UzkuMzMgMTYgOC41IDE2em0yLjUtNkg2VjdoNXYzem00LjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTIuNS02aC01VjdoNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zU3Vid2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC40MiAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6TTcuNSAxN2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTQgNy41IDE0czEuNS42NyAxLjUgMS41UzguMzMgMTcgNy41IDE3em0zLjUtNkg2VjZoNXY1em01LjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTEuNS02aC01VjZoNXY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zVHJhbnNpdEZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQgMC04IC41LTggNHY5LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwdjFoMTJ2LTFsLTEuNS0xYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjZjMC0zLjUtMy41OC00LTgtNHpNOC41IDE2Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNy42NyAxMyA4LjUgMTNzMS41LjY3IDEuNSAxLjVTOS4zMyAxNiA4LjUgMTZ6bTIuNS02SDZWN2g1djN6bTQuNSA2Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptMi41LTZoLTVWN2g1djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcmVjdGlvbnNUcmFuc2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC40MiAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6TTcuNSAxN2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTQgNy41IDE0czEuNS42NyAxLjUgMS41UzguMzMgMTcgNy41IDE3em0zLjUtNkg2VjZoNXY1em01LjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTEuNS02aC01VjZoNXY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zV2FsayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNOS44IDguOSA3IDIzaDIuMWwxLjgtOCAyLjEgMnY2aDJ2LTcuNWwtMi4xLTIgLjYtM0MxNC44IDEyIDE2LjggMTMgMTkgMTN2LTJjLTEuOSAwLTMuNS0xLTQuMy0yLjRsLTEtMS42Yy0uNC0uNi0xLTEtMS43LTEtLjMgMC0uNS4xLS44LjFMNiA4LjNWMTNoMlY5LjZsMS44LS43XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcmVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS40MSAxMC41OS03Ljk5LThjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC04LjAxIDhjLS43OC43OC0uNzggMi4wNSAwIDIuODNsOC4wMSA4Yy43OC43OCAyLjA1Ljc4IDIuODMgMGw3Ljk5LThjLjc5LS43OS43OS0yLjA1IDAtMi44M3pNMTMuNSAxNC41VjEySDEwdjNIOHYtNGMwLS41NS40NS0xIDEtMWg0LjVWNy41TDE3IDExbC0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcnlDbGVhbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjU2IDExLjM2IDEzIDguNDRWN2MwLS41NS0uNDUtMS0xLTFzLTEtLjQ1LTEtMSAuNDUtMSAxLTEgMSAuNDUgMSAxaDJjMC0xLjg0LTEuNjYtMy4zLTMuNTYtMi45NS0xLjE4LjIyLTIuMTUgMS4xNy0yLjM4IDIuMzUtLjMgMS41Ni42IDIuOTQgMS45NCAzLjQydi42M2wtNi41NiAyLjkyYy0uODguMzgtMS40NCAxLjI1LTEuNDQgMi4ydi4wMUMzIDE0LjkyIDQuMDggMTYgNS40MiAxNkg3djZoMTB2LTZoMS41OGMxLjM0IDAgMi40Mi0xLjA4IDIuNDItMi40MnYtLjAxYzAtLjk1LS41Ni0xLjgyLTEuNDQtMi4yMXpNMTguNTggMTRIMTd2LTFIN3YxSDUuNDJjLS4yMyAwLS40Mi0uMTktLjQyLS40MyAwLS4xNy4xLS4zMi4yNS0uMzhsNi43NS0zIDYuNzUgM2EuNDIzLjQyMyAwIDAgMS0uMTcuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXRBdHRyaWJ1dGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjMgN0g2LjM3QzMuOTYgNyAyIDkuMjQgMiAxMnMxLjk2IDUgNC4zNyA1aDExLjI2YzIuNDEgMCA0LjM3LTIuMjQgNC4zNy01cy0xLjk2LTUtNC4zNy01ek03LjI0IDE0LjQ2bC0yLjU3LTIuNTcuNy0uNyAxLjg3IDEuODcgMy41Mi0zLjUyLjcuNy00LjIyIDQuMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXRMb2NhdGlvbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk1IDEzSDlWOC4wNWw1LjYxLTUuNjFBOC4xNyA4LjE3IDAgMCAwIDEyIDJjLTQuMiAwLTggMy4yMi04IDguMiAwIDMuMzIgMi42NyA3LjI1IDggMTEuOCA1LjMzLTQuNTUgOC04LjQ4IDgtMTEuOCAwLTEuMDEtLjE2LTEuOTQtLjQ1LTIuOGwtNS42IDUuNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTFoMi4xMmw2LjE2LTYuMTYtMi4xMi0yLjEyTDExIDguODh6TTIwLjcxIDIgMjAgMS4yOWMtLjItLjE5LS40NS0uMjktLjcxLS4yOS0uMTMgMC0uNDguMDctLjcxLjI5bC0uNzIuNzIgMi4xMiAyLjEyLjcyLS43MmMuNC0uMzkuNC0xLjAyLjAxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXRMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC4xNCAyIDUgNS4xNCA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODYtMy4xNC03LTctN3ptLTEuNTYgMTBIOXYtMS40NGwzLjM1LTMuMzQgMS40MyAxLjQzTDEwLjQ0IDEyem00LjQ1LTQuNDUtLjcuNy0xLjQ0LTEuNDQuNy0uN2EuMzguMzggMCAwIDEgLjU0IDBsLjkuOWMuMTUuMTUuMTUuMzkgMCAuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXRSb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNGgtMnY3LjlsMi0yek00IDRoMnYxNkg0ek0xMCA0aDJ2NGgtMnpNMTAgMTBoMnY0aC0yek0xMCAxNmgydjRoLTJ6TTIyLjU2IDEyLjU5bC0xLjE1LTEuMTVhMS40OSAxLjQ5IDAgMCAwLTIuMTIgMEwxNCAxNi43M1YyMGgzLjI3bDUuMjktNS4yOWMuNTktLjU5LjU5LTEuNTQgMC0yLjEyem0tNS45OCA1Ljg2aC0xLjAzdi0xLjAzTDE5IDEzLjk3IDIwLjAzIDE1bC0zLjQ1IDMuNDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVnZ0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDljLTItMi0zLjAxLTctOS4wMy03QzQuOTUgMiAxLjk0IDYgMiAxMS41MiAyLjA2IDE3LjA0IDYuOTYgMTkgOS45NyAxOWMyLjAxIDAgMi4wMSAzIDYuMDIgM0MxOSAyMiAyMiAxOSAyMiAxNS4wMiAyMiAxMiAyMS4wMSAxMSAxOSA5em0tNyA2LjVjLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41czEuNTctMy41IDMuNS0zLjUgMy41IDEuNTcgMy41IDMuNS0xLjU3IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZ2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzQzguNSAzIDUgOS4zMyA1IDE0YzAgMy44NyAzLjEzIDcgNyA3czctMy4xMyA3LTdjMC00LjY3LTMuNS0xMS03LTExem0xIDE1Yy0zIDAtNS0xLjk5LTUtNSAwLS41NS40NS0xIDEtMXMxIC40NSAxIDFjMCAyLjkyIDIuNDIgMyAzIDMgLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZWN0cmljQmlrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdoLS44MmwtMS43LTQuNjhBMi4wMDggMi4wMDggMCAwIDAgMTQuNiAxSDEydjJoMi42bDEuNDYgNGgtNC44MWwtLjM2LTFIMTJWNEg3djJoMS43NWwxLjgyIDVIOS45Yy0uNDQtMi4yMy0yLjMxLTMuODgtNC42NS0zLjk5QzIuNDUgNi44NyAwIDkuMiAwIDEyYzAgMi44IDIuMiA1IDUgNSAyLjQ2IDAgNC40NS0xLjY5IDQuOS00aDQuMmMuNDQgMi4yMyAyLjMxIDMuODggNC42NSAzLjk5IDIuOC4xMyA1LjI1LTIuMTkgNS4yNS01QzI0IDkuMiAyMS44IDcgMTkgN3pNNy44MiAxM2MtLjQgMS4xNy0xLjQ5IDItMi44MiAyLTEuNjggMC0zLTEuMzItMy0zczEuMzItMyAzLTNjMS4zMyAwIDIuNDIuODMgMi44MiAySDV2MmgyLjgyem02LjI4LTJoLTEuNGwtLjczLTJIMTVjLS40NC41OC0uNzYgMS4yNS0uOSAyem00LjkgNGMtMS42OCAwLTMtMS4zMi0zLTMgMC0uOTMuNDEtMS43MyAxLjA1LTIuMjhsLjk2IDIuNjQgMS44OC0uNjgtLjk3LTIuNjdjLjAyIDAgLjA1LS4wMS4wOC0uMDEgMS42OCAwIDMgMS4zMiAzIDNzLTEuMzIgMy0zIDN6TTExIDIwSDdsNiAzdi0yaDRsLTYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxlY3RyaWNDYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiAyLjAxQzE4LjcyIDEuNDIgMTguMTYgMSAxNy41IDFoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDh2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xVjhsLTIuMDgtNS45OXpNNi41IDEyYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTExIDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNi42NyA5IDE3LjUgOXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTUgN2wxLjUtNC41aDExTDE5IDdINXpNNyAyMGg0di0ybDYgM2gtNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY01vcGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNWMwLTEuMS0uOS0yLTItMmgtM3YyaDN2Mi42NUwxMy41MiAxMkgxMFY3SDZjLTIuMjEgMC00IDEuNzktNCA0djNoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDQuNDhMMTkgOC4zNVY1ek03IDE1Yy0uNTUgMC0xLS40NS0xLTFoMmMwIC41NS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNGg1djJINXpNMTkgMTFjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNNyAyMGg0di0ybDYgM2gtNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY1JpY2tzaGF3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTEuMThWOS43MmMwLS40Ny0uMTYtLjkyLS40Ni0xLjI4TDE2LjYgMy43MmMtLjM4LS40Ni0uOTQtLjcyLTEuNTQtLjcySDNjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmguMThDMy42IDE2LjE2IDQuNyAxNyA2IDE3czIuNC0uODQgMi44Mi0yaDguMzdhMi45OTYgMi45OTYgMCAwIDAgNS44Mi0xYy0uMDEtMS4zLS44NS0yLjQtMi4wMS0yLjgyek0xOC40IDlIMTZWNi4xMkwxOC40IDl6TTMgNWg0djRIM1Y1em0zIDEwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTMtMnYtMmgzVjlIOVY1aDV2OEg5em0xMSAyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTcgMjBoNHYtMmw2IDNoLTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxlY3RyaWNTY29vdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44MiAxNkgxNXYtMWMwLTIuMjEgMS43OS00IDQtNGguNzRsLTEuOS04LjQ0QTIuMDA5IDIuMDA5IDAgMCAwIDE1Ljg5IDFIMTJ2MmgzLjg5bDEuNCA2LjI1aC0uMDFBNi4wMDggNi4wMDggMCAwIDAgMTMuMDkgMTRINy44MmEyLjk5NiAyLjk5NiAwIDAgMC0zLjQyLTEuOTRjLTEuMTguMjMtMi4xMyAxLjItMi4zNSAyLjM4QTMuMDAyIDMuMDAyIDAgMCAwIDUgMThjMS4zIDAgMi40LS44NCAyLjgyLTJ6TTUgMTZjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNMTEgMjBIN2w2IDN2LTJoNGwtNi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY2FsU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNGMwLS41NS0uNDUtMS0xLTFoLTJ2MmgyYy41NSAwIDEtLjQ1IDEtMXpNMjAgMTdoLTJ2MmgyYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xek0xMiAxNGgtMnY0aDJjMCAxLjEuOSAyIDIgMmgzdi04aC0zYy0xLjEgMC0yIC45LTIgMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxM2MwLTEuMS45LTIgMi0yaDEuNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMC40MyA0IDguNSA0SDVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMy41Yy44MyAwIDEuNS42NyAxLjUgMS41UzkuMzMgOSA4LjUgOUg3Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0aDJ2LTJIN2MtMS4xIDAtMi0uOS0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtZXJnZW5jeVJlY29yZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEwLjQ4VjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtNC40OGw0IDMuOTh2LTExbC00IDMuOTh6TTEyIDEybDMgMS43My0xIDEuNzMtMy0xLjczVjE3SDl2LTMuMjdsLTMgMS43My0xLTEuNzNMOCAxMmwtMy0xLjczIDEtMS43MyAzIDEuNzNWN2gydjMuMjdsMy0xLjczIDEgMS43M0wxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW1lcmdlbmN5U2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA5Yy0zLjE1IDAtNiAyLjQxLTYgNi4xNSAwIDIuNDkgMiA1LjQ0IDYgOC44NSA0LTMuNDEgNi02LjM2IDYtOC44NUMxOCAxMS40MSAxNS4xNSA5IDEyIDl6bTAgNy41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNMTIgNGMxLjkzIDAgMy42OC43OCA0Ljk1IDIuMDVsLTEuNDEgMS40MWE1LjAyMiA1LjAyMiAwIDAgMC03LjA4IDBMNy4wNSA2LjA1QTYuOTc2IDYuOTc2IDAgMCAxIDEyIDR6bTcuNzgtLjc3LTEuNDEgMS40MUMxNi43NCAzLjAxIDE0LjQ5IDIgMTIuMDEgMlM3LjI3IDMuMDEgNS42NCA0LjYzTDQuMjIgMy4yMkM2LjIyIDEuMjMgOC45NyAwIDEyLjAxIDBzNS43OCAxLjIzIDcuNzcgMy4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW1lcmdlbmN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNzkgOS4yMy0yLTMuNDZMMTQgOC41NFYzaC00djUuNTRMNS4yMSA1Ljc3bC0yIDMuNDZMOCAxMmwtNC43OSAyLjc3IDIgMy40NkwxMCAxNS40NlYyMWg0di01LjU0bDQuNzkgMi43NyAyLTMuNDZMMTYgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV2U3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuNzcgNy4yMy4wMS0uMDEtMy43Mi0zLjcyTDE1IDQuNTZsMi4xMSAyLjExYy0uOTQuMzYtMS42MSAxLjI2LTEuNjEgMi4zM2EyLjUgMi41IDAgMCAwIDIuNSAyLjVjLjM2IDAgLjY5LS4wOCAxLS4yMXY3LjIxYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjE0YzAtMS4xLS45LTItMi0yaC0xVjVjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ2MTZoMTB2LTcuNWgxLjV2NWEyLjUgMi41IDAgMCAwIDUgMFY5YzAtLjY5LS4yOC0xLjMyLS43My0xLjc3ek0xOCAxMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxek04IDE4di00LjVINkwxMCA2djVoMmwtNCA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTB2MTJIMlYxMGw3LTN2Mmw1LTJ2M2g4em0tNC44LTEuNUwxOCAyaDNsLjggNi41aC00LjZ6TTExIDE4aDJ2LTRoLTJ2NHptLTQgMGgydi00SDd2NHptMTAtNGgtMnY0aDJ2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhc3Rmb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMDYgMjIuOTloMS42NmMuODQgMCAxLjUzLS42NCAxLjYzLTEuNDZMMjMgNS4wNWgtNVYxaC0xLjk3djQuMDVoLTQuOTdsLjMgMi4zNGMxLjcxLjQ3IDMuMzEgMS4zMiA0LjI3IDIuMjYgMS40NCAxLjQyIDIuNDMgMi44OSAyLjQzIDUuMjl2OC4wNXpNMSAyMS45OVYyMWgxNS4wM3YuOTljMCAuNTUtLjQ1IDEtMS4wMSAxSDIuMDFjLS41NiAwLTEuMDEtLjQ1LTEuMDEtMXptMTUuMDMtN2MwLTgtMTUuMDMtOC0xNS4wMyAwaDE1LjAzek0xLjAyIDE3aDE1djJoLTE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGZXN0aXZhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDUuN1Y0aDNsLTEtMS40OUwxNiAxaC01djQuN0wyIDEydjEwaDd2LTVsMy4wMy0yTDE1IDE3djVoN1YxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlyZUh5ZHJhbnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMWgtMVY4aDJWNmgtMi4zNWE1Ljk5IDUuOTkgMCAwIDAtMTEuMyAwSDR2MmgydjNINWMtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDF2M0g0djJoMTZ2LTJoLTJ2LTNoMWMxLjEgMCAyLS45IDItMnYtMmMwLTEuMS0uOS0yLTItMnptLTcgNi41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlyZVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuOSAxMC42OS0xLjQ0LTQuMzJBMi4wMSAyLjAxIDAgMCAwIDE5LjU2IDVIMTlWNGMwLS41NS0uNDUtMS0xLTFoLTFjLS41NSAwLTEgLjQ1LTEgMXYxaC0yYy0xLjEgMC0yIC45LTIgMnY0SDF2NWMwIDEuMS45IDIgMiAyaDFjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g0YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoM3YtNi42OGMwLS4yMS0uMDMtLjQyLS4xLS42M3pNNyAxOWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0xMCAwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0zLThWN2g1LjU2bDEuMzMgNEgxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOC41aC0xdi0yaDFWNUgxdjEuNWgxdjJIMVYxMGgxMFY4LjV6bS01Ljc1IDBIMy41di0yaDEuNzV2MnptMy4yNSAwSDYuNzV2LTJIOC41djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaWdodENsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMmMtMS4xIDAtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDJjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNOS41IDE2SDE4djJIOS40OWMtLjg4IDAtMS42Ni0uNTgtMS45Mi0xLjQzTDUgOFY0aDJ2NGwyLjUgOHpNOCAxOWgxMHYySDh2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE2di0ybC04LTVWMy41YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCAyLjY3IDEwIDMuNVY5bC04IDV2Mmw4LTIuNVYxOWwtMiAxLjVWMjJsMy41LTEgMy41IDF2LTEuNUwxMyAxOXYtNS41bDggMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3Jlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMiA5IDIgMiAxMmgxLjg2TDAgMThoN3Y0aDR2LTRoN2wtMy44Ni02elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4xNCAxMkgyMkwxNSAybC0yLjM5IDMuNDFMMTcuOTIgMTNoLTEuOTVsMy4yMiA1SDI0ek0xMyAxOWg0djNoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcmtMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40MSAxNS41OSA4IDE3bC00LTQgNC00IDEuNDEgMS40MUw3LjgzIDEyYzEuNTEtLjMzIDMuNzMuMDggNS4xNyAxLjM2VjYuODNsLTEuNTkgMS41OUwxMCA3bDQtNCA0IDQtMS40MSAxLjQxTDE1IDYuODNWMjFoLTJ2LTRjLS43My0yLjU4LTMuMDctMy40Ny01LjE3LTNsMS41OCAxLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JrUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41OSAxNS41OSAxNiAxN2w0LTQtNC00LTEuNDEgMS40MUwxNi4xNyAxMmMtMS41MS0uMzMtMy43My4wOC01LjE3IDEuMzZWNi44M2wxLjU5IDEuNTlMMTQgN2wtNC00LTQgNCAxLjQxIDEuNDFMOSA2LjgzVjIxaDJ2LTRjLjczLTIuNTggMy4wNy0zLjQ3IDUuMTctM2wtMS41OCAxLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM3YyaC0yVjNoLTJ2MmgtMlYzaC0ydjRsMiAydjFIOVY5bDItMlYzSDl2Mkg3VjNINXYySDNWM0gxdjRsMiAydjZsLTIgMnY0aDl2LTNjMC0xLjEuOS0yIDItMnMyIC45IDIgMnYzaDl2LTRsLTItMlY5bDItMlYzaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTUtNGgydi40Yy0uMSAyLjItLjggMy45LTIuMyA1LjEtLjUuNC0xLjEuNy0xLjcuOVYyMmgtMnYtNmgtMnY2SDlWMTAuMWMtLjMuMS0uNS4yLS42LjMtLjkuNy0xLjM5IDEuNi0xLjQgMy4xdi41SDV2LS41YzAtMiAuNzEtMy41OSAyLjExLTQuNzlDOC4yMSA3LjgxIDEwIDcgMTIgN3MyLjY4LS40NiAzLjQ4LTEuMDZDMTYuNDggNS4xNCAxNyA0IDE3IDIuNVYyek00IDE2aDN2Nkg0di02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIYW5keW1hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjY3IDE4LjE3LTUuMy01LjNoLS45OWwtMi41NCAyLjU0di45OWw1LjMgNS4zYy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwyLjEyLTIuMTJhLjk5Ni45OTYgMCAwIDAgMC0xLjQxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4zNCAxMC4xOSAxLjQxLTEuNDEgMi4xMiAyLjEyYTMgMyAwIDAgMCAwLTQuMjRsLTMuNTQtMy41NC0xLjQxIDEuNDFWMS43MWwtLjctLjcxLTMuNTQgMy41NC43MS43MWgyLjgzbC0xLjQxIDEuNDEgMS4wNiAxLjA2LTIuODkgMi44OS00LjEzLTQuMTNWNS4wNkw0LjgzIDIuMDQgMiA0Ljg3IDUuMDMgNy45aDEuNDFsNC4xMyA0LjEzLS44NS44NUg3LjZsLTUuMyA1LjNhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDIuMTIgMi4xMmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNS4zLTUuM3YtMi4xMmw1LjE1LTUuMTUgMS4wNiAxLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIYXJkd2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDMtMyAzVjNIOUM2LjI0IDMgNCA1LjI0IDQgOGg1djNoNlY4bDMgM2gyVjNoLTJ6TTkgMTN2N2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtN0g5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb21lUmVwYWlyU2VydmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE2aC0ydi0xSDh2MUg2di0xSDJ2NWgyMHYtNWgtNHpNMjAgOGgtM1Y2YzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAydjJINGMtMS4xIDAtMiAuOS0yIDJ2NGg0di0yaDJ2Mmg4di0yaDJ2Mmg0di00YzAtMS4xLS45LTItMi0yem0tNSAwSDlWNmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdGVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxM2MxLjY2IDAgMy0xLjM0IDMtM1M4LjY2IDcgNyA3cy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTEyLTZoLTh2N0gzVjVIMXYxNWgydi0zaDE4djNoMnYtOWMwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSHZhYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE2YzEuMDEgMCAxLjkxLS4zOSAyLjYyLTFIOS4zOGMuNzEuNjEgMS42MSAxIDIuNjIgMXpNOC41NiAxNGg2Ljg5Yy4yNi0uNDUuNDQtLjk2LjUxLTEuNWgtNy45Yy4wNi41NC4yMyAxLjA1LjUgMS41ek0xMiA4Yy0xLjAxIDAtMS45MS4zOS0yLjYyIDFoNS4yNGMtLjcxLS42MS0xLjYxLTEtMi42Mi0xek04LjU2IDEwYy0uMjYuNDUtLjQ0Ljk2LS41MSAxLjVoNy45Yy0uMDctLjU0LS4yNC0xLjA1LS41MS0xLjVIOC41NnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSWNlY3JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJtOC43OSAxMi40IDMuMjYgNi4yMiAzLjE3LTYuMjFjLS4xMS0uMDgtLjIxLS4xNi0uMy0uMjUtLjg0LjUzLTEuODUuODQtMi45Mi44NHMtMi4wOC0uMzEtMi45Mi0uODRjLS4wOS4wOS0uMTkuMTctLjI5LjI0em0tMS45Ni41OUEyLjk5NSAyLjk5NSAwIDAgMSA0IDEwYTMgMyAwIDAgMSAyLjUyLTIuOTZDNi43NSA0LjIyIDkuMTIgMiAxMiAyczUuMjUgMi4yMiA1LjQ4IDUuMDRBMyAzIDAgMCAxIDIwIDEwYzAgMS41OS0xLjI0IDIuOS0yLjgxIDIuOTlMMTIuMDcgMjMgNi44MyAxMi45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2ViYWJEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc1IDhIMTF2NUg3Ljc1djFoLjc1YTIuNSAyLjUgMCAwIDEgMCA1aC0uNzV2NGgtMS41di00SDUuNWEyLjUgMi41IDAgMCAxIDAtNWguNzV2LTFIM1Y4aDMuMjVWN0g1LjVhMi41IDIuNSAwIDAgMSAwLTVoLjc1VjFoMS41djFoLjc1YTIuNSAyLjUgMCAwIDEgMCA1aC0uNzV2MXptMTAtMWguNzVhMi41IDIuNSAwIDAgMCAwLTVoLS43NVYxaC0xLjV2MWgtLjc1YTIuNSAyLjUgMCAwIDAgMCA1aC43NXYxSDEzdjVoMy4yNXYxaC0uNzVhMi41IDIuNSAwIDAgMCAwIDVoLjc1djRoMS41di00aC43NWEyLjUgMi41IDAgMCAwIDAtNWgtLjc1di0xSDIxVjhoLTMuMjVWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGF5ZXJzQ2xlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS44MSAxNC45OSAxLjE5LS45Mi0xLjQzLTEuNDMtMS4xOS45MiAxLjQzIDEuNDN6bS0uNDUtNC43MkwyMSA5bC05LTctMi45MSAyLjI3IDcuODcgNy44OCAyLjQtMS44OHpNMy4yNyAxIDIgMi4yN2w0LjIyIDQuMjJMMyA5bDEuNjMgMS4yN0wxMiAxNmwyLjEtMS42MyAxLjQzIDEuNDNMMTIgMTguNTRsLTcuMzctNS43M0wzIDE0LjA3bDkgNyA0Ljk1LTMuODVMMjAuNzMgMjEgMjIgMTkuNzMgMy4yNyAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXllcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMS45OSAxOC41NC03LjM3LTUuNzNMMyAxNC4wN2w5IDcgOS03LTEuNjMtMS4yNy03LjM4IDUuNzR6TTEyIDE2bDcuMzYtNS43M0wyMSA5bC05LTctOSA3IDEuNjMgMS4yN0wxMiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGlxdW9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIwSDN2Mmg2di0ySDd2LTMuMThDOC4xNiAxNi40IDkgMTUuMyA5IDE0VjZIM3Y4em0yLTZoMnYzSDVWOHpNMjAuNjMgOC41NGwtLjk1LS4zMmEuOTkxLjk5MSAwIDAgMS0uNjgtLjk0VjNjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2NC4yOGMwIC40My0uMjguODEtLjY4Ljk1bC0uOTUuMzJjLS44Mi4yNy0xLjM3IDEuMDMtMS4zNyAxLjg5VjIwYzAgMS4xLjkgMiAyIDJoN2MxLjEgMCAyLS45IDItMnYtOS41NmMwLS44Ni0uNTUtMS42Mi0xLjM3LTEuOXpNMTYgNGgxdjFoLTFWNHptLTMgNi40NC45NS0uMzJDMTUuMTggOS43MiAxNiA4LjU3IDE2IDcuMjhWN2gxdi4yOGEzIDMgMCAwIDAgMi4wNSAyLjg1bC45NS4zMVYxMmgtN3YtMS41NnpNMjAgMjBoLTd2LTJoN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEFjdGl2aXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJjMC0xLjEuOS0yIDItMlY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2NGMxLjEgMCAxLjk5LjkgMS45OSAycy0uODkgMi0yIDJ2NGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi00Yy0xLjEgMC0yLS45LTItMnptLTQuNDIgNC44TDEyIDE0LjVsLTMuNTggMi4zIDEuMDgtNC4xMi0zLjI5LTIuNjkgNC4yNC0uMjVMMTIgNS44bDEuNTQgMy45NSA0LjI0LjI1LTMuMjkgMi42OSAxLjA5IDQuMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsQWlycG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTZ2LTJsLTguNS01VjMuNWMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41VjlMMiAxNHYybDguNS0yLjVWMTlMOCAyMC41VjIybDQtMSA0IDF2LTEuNUwxMy41IDE5di01LjVMMjIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsQXRtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTdoMnYtMWgxYy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTFoLTN2LTFoNFY4aC0yVjdoLTJ2MWgtMWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoM3YxSDl2MmgydjF6bTktMTNINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1VjNIM3YybDggOXY1SDZ2MmgxMnYtMmgtNXYtNWw4LTl6TTcuNDMgNyA1LjY2IDVoMTIuNjlsLTEuNzggMkg3LjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbENhZmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJhMiAyIDAgMCAwIDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bTAgNWgtMlY1aDJ2M3pNNCAxOWgxNnYySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsQ2FyV2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtMS0xLjUtMi43LTEuNS0yLjdzLTEuNSAxLjctMS41IDIuN2MwIC44My42NyAxLjUgMS41IDEuNXptLTUgMGMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0xLTEuNS0yLjctMS41LTIuN3MtMS41IDEuNy0xLjUgMi43YzAgLjgzLjY3IDEuNSAxLjUgMS41ek03IDVjLjgzIDAgMS41LS42NyAxLjUtMS41QzguNSAyLjUgNyAuOCA3IC44UzUuNSAyLjUgNS41IDMuNUM1LjUgNC4zMyA2LjE3IDUgNyA1em0xMS45MiAzLjAxQzE4LjcyIDcuNDIgMTguMTYgNyAxNy41IDdoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDE0djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02LjUgMThjLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDE1IDYuNSAxNXMxLjUuNjcgMS41IDEuNVM3LjMzIDE4IDYuNSAxOHptMTEgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTUgMTNsMS41LTQuNWgxMUwxOSAxM0g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbENvbnZlbmllbmNlU3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3VjRINXYzSDJ2MTNoOHYtNGg0djRoOFY3aC0zem0tOCAzSDl2MWgydjFIOFY5aDJWOEg4VjdoM3Yzem01IDJoLTF2LTJoLTJWN2gxdjJoMVY3aDF2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjEgMTMuMzQgMi44My0yLjgzTDMuOTEgMy41YTQuMDA4IDQuMDA4IDAgMCAwIDAgNS42Nmw0LjE5IDQuMTh6bTYuNzgtMS44MWMxLjUzLjcxIDMuNjguMjEgNS4yNy0xLjM4IDEuOTEtMS45MSAyLjI4LTQuNjUuODEtNi4xMi0xLjQ2LTEuNDYtNC4yLTEuMS02LjEyLjgxLTEuNTkgMS41OS0yLjA5IDMuNzQtMS4zOCA1LjI3TDMuNyAxOS44N2wxLjQxIDEuNDFMMTIgMTQuNDFsNi44OCA2Ljg4IDEuNDEtMS40MUwxMy40MSAxM2wxLjQ3LTEuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsRHJpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zIDIgMi4wMSAxOC4yM0M1LjEzIDIxLjIzIDUuOTcgMjIgNyAyMmgxMGMxLjAzIDAgMS44Ny0uNzcgMS45OS0xLjc3TDIxIDJIM3ptOSAxN2MtMS42NiAwLTMtMS4zNC0zLTMgMC0yIDMtNS40IDMtNS40czMgMy40IDMgNS40YzAgMS42Ni0xLjM0IDMtMyAzem02LjMzLTExSDUuNjdsLS40NC00aDEzLjUzbC0uNDMgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxGaXJlRGVwYXJ0bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDEyLjktMi4xMyAyLjA5Yy0uNTYuNTYtLjg3IDEuMjktLjg3IDIuMDdDOSAxOC42OCAxMC4zNSAyMCAxMiAyMHMzLTEuMzIgMy0yLjk0YzAtLjc4LS4zMS0xLjUyLS44Ny0yLjA3TDEyIDEyLjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDYtLjQ0LjU1QzE0LjM4IDguMDIgMTIgNy4xOSAxMiA1LjNWMlM0IDYgNCAxM2MwIDIuOTIgMS41NiA1LjQ3IDMuODkgNi44Ni0uNTYtLjc5LS44OS0xLjc2LS44OS0yLjggMC0xLjMyLjUyLTIuNTYgMS40Ny0zLjVMMTIgMTAuMWwzLjUzIDMuNDdjLjk1LjkzIDEuNDcgMi4xNyAxLjQ3IDMuNSAwIDEuMDItLjMxIDEuOTYtLjg1IDIuNzUgMS44OS0xLjE1IDMuMjktMy4wNiAzLjcxLTUuMy42Ni0zLjU1LTEuMDctNi45LTMuODYtOC41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxGbG9yaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJhOSA5IDAgMCAwIDktOSA5IDkgMCAwIDAtOSA5ek01LjYgMTAuMjVhMi41IDIuNSAwIDAgMCAzLjkyIDIuMDZsLS4wMi4xOWEyLjUgMi41IDAgMCAwIDUgMGwtLjAyLS4xOWMuNC4yOC44OS40NCAxLjQyLjQ0YTIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLTEtLjU5LTEuODUtMS40My0yLjI1Ljg0LS40IDEuNDMtMS4yNSAxLjQzLTIuMjVhMi41IDIuNSAwIDAgMC0zLjkyLTIuMDZsLjAyLS4xOWEyLjUgMi41IDAgMCAwLTUgMGwuMDIuMTljLS40LS4yOC0uODktLjQ0LTEuNDItLjQ0YTIuNSAyLjUgMCAwIDAtMi41IDIuNWMwIDEgLjU5IDEuODUgMS40MyAyLjI1LS44NC40LTEuNDMgMS4yNS0xLjQzIDIuMjV6TTEyIDUuNWEyLjUgMi41IDAgMCAxIDAgNSAyLjUgMi41IDAgMCAxIDAtNXpNMyAxM2E5IDkgMCAwIDAgOSA5IDkgOSAwIDAgMC05LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsR2FzU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDcuMjMuMDEtLjAxLTMuNzItMy43MkwxNSA0LjU2bDIuMTEgMi4xMWMtLjk0LjM2LTEuNjEgMS4yNi0xLjYxIDIuMzNhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy4zNiAwIC42OS0uMDggMS0uMjF2Ny4yMWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVYxNGMwLTEuMS0uOS0yLTItMmgtMVY1YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAydjE2aDEwdi03LjVoMS41djVhMi41IDIuNSAwIDAgMCA1IDBWOWMwLS42OS0uMjgtMS4zMi0uNzMtMS43N3pNMTIgMTBINlY1aDZ2NXptNiAwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsR3JvY2VyeVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnpNMSAydjJoMmwzLjYgNy41OS0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoMTJ2LTJINy40MmMtLjE0IDAtLjI1LS4xMS0uMjUtLjI1bC4wMy0uMTIuOS0xLjYzaDcuNDVjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OUExLjAwMyAxLjAwMyAwIDAgMCAyMCA0SDUuMjFsLS45NC0ySDF6bTE2IDE2Yy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxIb3NwaXRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTEgMTFoLTR2NGgtNHYtNEg2di00aDRWNmg0djRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEhvdGVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxM2MxLjY2IDAgMy0xLjM0IDMtM1M4LjY2IDcgNyA3cy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTEyLTZoLTh2N0gzVjVIMXYxNWgydi0zaDE4djNoMnYtOWMwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxMYXVuZHJ5U2VydmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMTcgMTYuODNhNC4wMDggNC4wMDggMCAwIDAgNS42NiAwIDQuMDA4IDQuMDA4IDAgMCAwIDAtNS42NmwtNS42NiA1LjY2ek0xOCAyLjAxIDYgMmMtMS4xMSAwLTIgLjg5LTIgMnYxNmMwIDEuMTEuODkgMiAyIDJoMTJjMS4xMSAwIDItLjg5IDItMlY0YzAtMS4xMS0uODktMS45OS0yLTEuOTl6TTEwIDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNNyA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTUgMTZjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbExpYnJhcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMS41NUM5LjY0IDkuMzUgNi40OCA4IDMgOHYxMWMzLjQ4IDAgNi42NCAxLjM1IDkgMy41NSAyLjM2LTIuMTkgNS41Mi0zLjU1IDktMy41NVY4Yy0zLjQ4IDAtNi42NCAxLjM1LTkgMy41NXpNMTIgOGMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsTWFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZoLTJjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNkg1Yy0xLjEgMC0xLjk5LjktMS45OSAyTDMgMjBjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tNy0zYzEuNjYgMCAzIDEuMzQgMyAzSDljMC0xLjY2IDEuMzQtMyAzLTN6bTAgMTBjLTIuNzYgMC01LTIuMjQtNS01aDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2gyYzAgMi43Ni0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbE1vdmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDN2MmgtMlYzSDh2Mkg2VjNINHYxOGgydi0yaDJ2Mmg4di0yaDJ2MmgyVjNoLTJ6TTggMTdINnYtMmgydjJ6bTAtNEg2di0yaDJ2MnptMC00SDZWN2gydjJ6bTEwIDhoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsT2ZmZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS40MSAxMS41OC05LTlDMTIuMDUgMi4yMiAxMS41NSAyIDExIDJINGMtMS4xIDAtMiAuOS0yIDJ2N2MwIC41NS4yMiAxLjA1LjU5IDEuNDJsOSA5Yy4zNi4zNi44Ni41OCAxLjQxLjU4LjU1IDAgMS4wNS0uMjIgMS40MS0uNTlsNy03Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDEgMC0uNTUtLjIzLTEuMDYtLjU5LTEuNDJ6TTUuNSA3QzQuNjcgNyA0IDYuMzMgNCA1LjVTNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNSA2LjMzIDcgNS41IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUGFya2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNINnYxOGg0di02aDNjMy4zMSAwIDYtMi42OSA2LTZzLTIuNjktNi02LTZ6bS4yIDhIMTBWN2gzLjJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFBoYXJtYWN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWgtMi42NGwxLjE0LTMuMTRMMTcuMTUgMWwtMS40NiA0SDN2MmwyIDYtMiA2djJoMTh2LTJsLTItNiAyLTZWNXptLTUgOWgtM3YzaC0ydi0zSDh2LTJoM1Y5aDJ2M2gzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjYyIDEwLjc5YzEuNDQgMi44MyAzLjc2IDUuMTQgNi41OSA2LjU5bDIuMi0yLjJjLjI3LS4yNy42Ny0uMzYgMS4wMi0uMjQgMS4xMi4zNyAyLjMzLjU3IDMuNTcuNTcuNTUgMCAxIC40NSAxIDFWMjBjMCAuNTUtLjQ1IDEtMSAxLTkuMzkgMC0xNy03LjYxLTE3LTE3IDAtLjU1LjQ1LTEgMS0xaDMuNWMuNTUgMCAxIC40NSAxIDEgMCAxLjI1LjIgMi40NS41NyAzLjU3LjExLjM1LjAzLjc0LS4yNSAxLjAybC0yLjIgMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFBpenphIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjQzIDIgNS4yMyAzLjU0IDMuMDEgNkwxMiAyMmw4Ljk5LTE2QzE4Ljc4IDMuNTUgMTUuNTcgMiAxMiAyek03IDdjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNSA4Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJjMC0xLjEuOS0yIDItMlY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2NGMxLjEgMCAxLjk5LjkgMS45OSAycy0uODkgMi0yIDJ2NGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi00Yy0xLjEgMC0yLS45LTItMnptLTQuNDIgNC44TDEyIDE0LjVsLTMuNTggMi4zIDEuMDgtNC4xMi0zLjI5LTIuNjkgNC4yNC0uMjVMMTIgNS44bDEuNTQgMy45NSA0LjI0LjI1LTMuMjkgMi42OSAxLjA5IDQuMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUG9saWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bTIuNSAxMS41OS45IDMuODgtMy40LTIuMDUtMy40IDIuMDUuOS0zLjg3LTMtMi41OSAzLjk2LS4zNEwxMiA2LjAybDEuNTQgMy42NCAzLjk2LjM0LTMgMi41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxQb3N0T2ZmaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDQtOCA1LTgtNVY2bDggNSA4LTV2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxQcmludHNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4SDVjLTEuNjYgMC0zIDEuMzQtMyAzdjZoNHY0aDEydi00aDR2LTZjMC0xLjY2LTEuMzQtMy0zLTN6bS0zIDExSDh2LTVoOHY1em0zLTdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLTEtOUg2djRoMTJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxTZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjMuMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIgNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAySDl6bTMgMTVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFNoaXBwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOGgtM1Y0SDNjLTEuMSAwLTIgLjktMiAydjExaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g2YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoMnYtNWwtMy00ek02IDE4LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0xMy41LTkgMS45NiAyLjVIMTdWOS41aDIuNXptLTEuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxUYXhpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgNi4wMUMxOC43MiA1LjQyIDE4LjE2IDUgMTcuNSA1SDE1VjNIOXYySDYuNWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxMnY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi41IDE2Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyAxMyA2LjUgMTNzMS41LjY3IDEuNSAxLjVTNy4zMyAxNiA2LjUgMTZ6bTExIDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01IDExbDEuNS00LjVoMTFMMTkgMTFINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYXRpb25QaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgMS43NC41IDMuMzcgMS40MSA0Ljg0Ljk1IDEuNTQgMi4yIDIuODYgMy4xNiA0LjQuNDcuNzUuODEgMS40NSAxLjE3IDIuMjYuMjYuNTUuNDcgMS41IDEuMjYgMS41czEtLjk1IDEuMjUtMS41Yy4zNy0uODEuNy0xLjUxIDEuMTctMi4yNi45Ni0xLjUzIDIuMjEtMi44NSAzLjE2LTQuNEMxOC41IDEyLjM3IDE5IDEwLjc0IDE5IDljMC0zLjg3LTMuMTMtNy03LTd6bTAgOS43NWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTHVuY2hEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEwYy4zMi0zLjI4LTQuMjgtNi05Ljk5LTZTMS43IDYuNzIgMi4wMiAxMEgyMnpNNS4zNSAxMy41Yy41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDcuNjQgMi4xOC42NHMxLjczLS4zNyAyLjE4LS42NGMuMzctLjIzLjU5LS4zNiAxLjE1LS4zNi41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDcuNjQgMi4xOC42NHMxLjczLS4zNyAyLjE4LS42NGMuMzctLjIzLjU5LS4zNiAxLjE1LS4zNi41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDcuNjMgMi4xNy42NHYtMS45OHMtLjc5LS4xNi0xLjE2LS4zOGMtLjQ1LS4yNy0xLjA3LS42NC0yLjE4LS42NHMtMS43My4zNy0yLjE4LjY0Yy0uMzcuMjMtLjYuMzYtMS4xNS4zNnMtLjc4LS4xNC0xLjE1LS4zNmMtLjQ1LS4yNy0xLjA3LS42NC0yLjE4LS42NHMtMS43My4zNy0yLjE4LjY0Yy0uMzcuMjMtLjU5LjM2LTEuMTUuMzYtLjU1IDAtLjc4LS4xNC0xLjE1LS4zNi0uNDUtLjI3LTEuMDctLjY0LTIuMTgtLjY0cy0xLjczLjM3LTIuMTguNjRjLS4zNy4yMy0uNTkuMzYtMS4xNS4zNnYyYzEuMTEgMCAxLjczLS4zNyAyLjIxLS42NC4zNy0uMjMuNTktLjM2IDEuMTQtLjM2ek0yIDE2djJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtMkgyelwifSxcImNoaWxkXCI6W119XX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjUgMy0uMTYuMDNMMTUgNS4xIDkgMyAzLjM2IDQuOWMtLjIxLjA3LS4zNi4yNS0uMzYuNDhWMjAuNWMwIC4yOC4yMi41LjUuNWwuMTYtLjAzTDkgMTguOWw2IDIuMSA1LjY0LTEuOWMuMjEtLjA3LjM2LS4yNS4zNi0uNDhWMy41YzAtLjI4LS4yMi0uNS0uNS0uNXpNMTUgMTlsLTYtMi4xMVY1bDYgMi4xMVYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFwc1VnYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMmMwIDEuNTQuMzYgMi45OC45NyA0LjI5TDEgMjNsNi43MS0xLjk3YzEuMzEuNjEgMi43NS45NyA0LjI5Ljk3IDUuNTIgMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNCAxMWgtM3YzaC0ydi0zSDh2LTJoM1Y4aDJ2M2gzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lZGljYWxJbmZvcm1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDdoLTVWNGMwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJ2M0g0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bS05LTNoMnY1aC0yVjR6bTAgMTJIOXYySDd2LTJINXYtMmgydi0yaDJ2MmgydjJ6bTItMS41VjEzaDZ2MS41aC02em0wIDNWMTZoNHYxLjVoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lZGljYWxTZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLTRWNGMwLTEuMS0uOS0yLTItMmgtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6TTEwIDRoNHYyaC00VjR6bTYgMTFoLTN2M2gtMnYtM0g4di0yaDN2LTNoMnYzaDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVudUJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1Yy0xLjExLS4zNS0yLjMzLS41LTMuNS0uNS0xLjk1IDAtNC4wNS40LTUuNSAxLjUtMS40NS0xLjEtMy41NS0xLjUtNS41LTEuNVMyLjQ1IDQuOSAxIDZ2MTQuNjVjMCAuMjUuMjUuNS41LjUuMSAwIC4xNS0uMDUuMjUtLjA1QzMuMSAyMC40NSA1LjA1IDIwIDYuNSAyMGMxLjk1IDAgNC4wNS40IDUuNSAxLjUgMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuNjUgMCAzLjM1LjMgNC43NSAxLjA1LjEuMDUuMTUuMDUuMjUuMDUuMjUgMCAuNS0uMjUuNS0uNVY2Yy0uNi0uNDUtMS4yNS0uNzUtMi0xem0wIDEzLjVjLTEuMS0uMzUtMi4zLS41LTMuNS0uNS0xLjcgMC00LjE1LjY1LTUuNSAxLjVWOGMxLjM1LS44NSAzLjgtMS41IDUuNS0xLjUgMS4yIDAgMi40LjE1IDMuNS41djExLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTAuNWMuODggMCAxLjczLjA5IDIuNS4yNlY5LjI0Yy0uNzktLjE1LTEuNjQtLjI0LTIuNS0uMjQtMS43IDAtMy4yNC4yOS00LjUuODN2MS42NmMxLjEzLS42NCAyLjctLjk5IDQuNS0uOTl6TTEzIDEyLjQ5djEuNjZjMS4xMy0uNjQgMi43LS45OSA0LjUtLjk5Ljg4IDAgMS43My4wOSAyLjUuMjZWMTEuOWMtLjc5LS4xNS0xLjY0LS4yNC0yLjUtLjI0LTEuNyAwLTMuMjQuMy00LjUuODN6TTE3LjUgMTQuMzNjLTEuNyAwLTMuMjQuMjktNC41LjgzdjEuNjZjMS4xMy0uNjQgMi43LS45OSA0LjUtLjk5Ljg4IDAgMS43My4wOSAyLjUuMjZ2LTEuNTJjLS43OS0uMTYtMS42NC0uMjQtMi41LS4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQxIDIxIDUgMTkuNTlsNC44My00LjgzYy43NS0uNzUgMS4xNy0xLjc3IDEuMTctMi44M3YtNS4xTDkuNDEgOC40MSA4IDdsNC00IDQgNC0xLjQxIDEuNDFMMTMgNi44M3Y1LjFjMCAxLjA2LjQyIDIuMDggMS4xNyAyLjgzTDE5IDE5LjU5IDE3LjU5IDIxIDEyIDE1LjQxIDYuNDEgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pbm9yQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA5LjAxQzE4LjcyIDguNDIgMTguMTYgOCAxNy41IDhoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDE1djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDEwaDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNNiAxNy41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzguMzMgMTkgNy41IDE5IDYgMTguMzMgNiAxNy41em05IDBjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41LTEuNS0uNjctMS41LTEuNXpNOS40MSA1IDggNi40MWwtMy0zTDYuNDEgMmwzIDN6TTE2IDYuNDEgMTQuNTkgNWwzLTNMMTkgMy40MWwtMyAzek0xMyA1aC0yVjBoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaXNjZWxsYW5lb3VzU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4xNyAxMy43MSAxLjQtMi40MmMuMDktLjE1LjA1LS4zNC0uMDgtLjQ1bC0xLjQ4LTEuMTZjLjAzLS4yMi4wNS0uNDUuMDUtLjY4cy0uMDItLjQ2LS4wNS0uNjlsMS40OC0xLjE2Yy4xMy0uMTEuMTctLjMuMDgtLjQ1bC0xLjQtMi40MmMtLjA5LS4xNS0uMjctLjIxLS40My0uMTVsLTEuNzQuN2MtLjM2LS4yOC0uNzUtLjUxLTEuMTgtLjY5bC0uMjYtMS44NWEuMzY0LjM2NCAwIDAgMC0uMzUtLjI5aC0yLjhjLS4xNyAwLS4zMi4xMy0uMzUuM0w2LjggNC4xNWMtLjQyLjE4LS44Mi40MS0xLjE4LjY5bC0xLjc0LS43Yy0uMTYtLjA2LS4zNCAwLS40My4xNWwtMS40IDIuNDJjLS4wOS4xNS0uMDUuMzQuMDguNDVsMS40OCAxLjE2Yy0uMDMuMjItLjA1LjQ1LS4wNS42OHMuMDIuNDYuMDUuNjlsLTEuNDggMS4xNmMtLjEzLjExLS4xNy4zLS4wOC40NWwxLjQgMi40MmMuMDkuMTUuMjcuMjEuNDMuMTVsMS43NC0uN2MuMzYuMjguNzUuNTEgMS4xOC42OWwuMjYgMS44NWMuMDMuMTYuMTguMjkuMzUuMjloMi44Yy4xNyAwIC4zMi0uMTMuMzUtLjNsLjI2LTEuODVjLjQyLS4xOC44Mi0uNDEgMS4xOC0uNjlsMS43NC43Yy4xNi4wNi4zNCAwIC40My0uMTV6TTguODEgMTFjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyek0yMS45MiAxOC42N2wtLjk2LS43NGMuMDItLjE0LjA0LS4yOS4wNC0uNDQgMC0uMTUtLjAxLS4zLS4wNC0uNDRsLjk1LS43NGMuMDgtLjA3LjExLS4xOS4wNS0uMjlsLS45LTEuNTVjLS4wNS0uMS0uMTctLjEzLS4yOC0uMWwtMS4xMS40NWMtLjIzLS4xOC0uNDgtLjMzLS43Ni0uNDRsLS4xNy0xLjE4YS4yMTYuMjE2IDAgMCAwLS4yMS0uMmgtMS43OWMtLjExIDAtLjIxLjA4LS4yMi4xOWwtLjE3IDEuMThjLS4yNy4xMi0uNTMuMjYtLjc2LjQ0bC0xLjExLS40NWEuMjMuMjMgMCAwIDAtLjI4LjFsLS45IDEuNTVjLS4wNS4xLS4wNC4yMi4wNS4yOWwuOTUuNzRhMy4xNDUgMy4xNDUgMCAwIDAgMCAuODhsLS45NS43NGMtLjA4LjA3LS4xMS4xOS0uMDUuMjlsLjkgMS41NWMuMDUuMS4xNy4xMy4yOC4xbDEuMTEtLjQ1Yy4yMy4xOC40OC4zMy43Ni40NGwuMTcgMS4xOGMuMDIuMTEuMTEuMTkuMjIuMTloMS43OWMuMTEgMCAuMjEtLjA4LjIyLS4xOWwuMTctMS4xOGMuMjctLjEyLjUzLS4yNi43NS0uNDRsMS4xMi40NWMuMS4wNC4yMiAwIC4yOC0uMWwuOS0xLjU1Yy4wNi0uMDkuMDMtLjIxLS4wNS0uMjh6bS00LjI5LjE2YTEuMzUgMS4zNSAwIDEgMSAuMDAxLTIuNzAxIDEuMzUgMS4zNSAwIDAgMS0uMDAxIDIuNzAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlT2ZUcmF2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4zMSAxOC45Yy0uOTYgMS0yLjA2IDIuMDMtMy4zMSAzLjEtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJjNCAwIDcuNjQgMi45MiA3Ljk3IDcuNWgzLjUzTDE5IDE0bC00LjUtNC41aDMuNDdDMTcuNjUgNi4yNCAxNS4xMyA0IDEyIDRjLTMuMzUgMC02IDIuNTctNiA2LjIgMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQuNjQtLjU5IDEuMjMtMS4xNiAxLjc3LTEuNzFhMi41IDIuNSAwIDAgMS0uMjctMS4xMiAyLjUgMi41IDAgMCAxIDUgMCAyLjQ5MiAyLjQ5MiAwIDAgMS0zLjE5IDIuMzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbmV5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDhoMnY4SDV6bTcgMEg5Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXptLTEgNmgtMXYtNGgxdjR6bTctNmgtM2MtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDZoLTF2LTRoMXY0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk00IDZoMTZ2MTJINHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0djE2aDIwVjRIMnptMiAxNFY2aDE2djEySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vcGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2MwLTEuMS0uOS0yLTItMmgtM3YyaDN2Mi42NUwxMy41MiAxNEgxMFY5SDZjLTIuMjEgMC00IDEuNzktNCA0djNoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDQuNDhMMTkgMTAuMzVWN3pNNyAxN2MtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDZoNXYySDV6TTE5IDEzYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vc3F1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOGgxMGMuMjkgMCAuNTcuMDYuODQuMTMuMDktLjMzLjE2LS42Ny4xNi0xLjA0IDAtMS4zMS0uNjUtMi41My0xLjc0LTMuMjVMMTIgMSA3Ljc0IDMuODRBMy44ODcgMy44ODcgMCAwIDAgNiA3LjA5YzAgLjM3LjA3LjcxLjE2IDEuMDQuMjctLjA3LjU1LS4xMy44NC0uMTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDdjMC0xLjEtMi0zLTItM3MtMiAxLjktMiAzYzAgLjc0LjQgMS4zOCAxIDEuNzJWMTNoLTJ2LTJjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MkgzVjguNzJjLjYtLjM0IDEtLjk4IDEtMS43MiAwLTEuMS0yLTMtMi0zUzAgNS45IDAgN2MwIC43NC40IDEuMzggMSAxLjcyVjIxaDl2LTRjMC0xLjEuOS0yIDItMnMyIC45IDIgMnY0aDlWOC43MmMuNi0uMzQgMS0uOTggMS0xLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3ZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43MSA5LjcxIDIyIDEyVjZoLTZsMi4yOSAyLjI5LTQuMTcgNC4xN2EuOTk2Ljk5NiAwIDAgMS0xLjQxIDBsLTEuMTctMS4xN2EzIDMgMCAwIDAtNC4yNCAwTDIgMTYuNTkgMy40MSAxOGw1LjI5LTUuMjlhLjk5Ni45OTYgMCAwIDEgMS40MSAwbDEuMTcgMS4xN2EzIDMgMCAwIDAgNC4yNCAwbDQuMTktNC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTXVsdGlwbGVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgNCA0IDQtNCA0VjloLTRWN2g0VjR6bS03IDNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNNiA3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTEgMTBoNHYtMkg3di0zbC00IDQgNCA0di0zem03IDBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptNCAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE11c2V1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExVjlMMTIgMiAyIDl2MmgydjlIMnYyaDIwdi0yaC0ydi05aDJ6bS02IDdoLTJ2LTRsLTIgMy0yLTN2NEg4di03aDJsMiAzIDItM2gydjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE15TG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptOC45NCAzQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAyMC45NCAxM0gyM3YtMmgtMi4wNnpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROYXZpZ2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0LjUgMjAuMjlsLjcxLjcxTDEyIDE4bDYuNzkgMyAuNzEtLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZWFyTWVEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDYuMzQgMjEgM2wtMy4zNCA5TDEyIDYuMzR6bTEwLjYxIDEzLjQ0TDQuMjIgMS4zOSAyLjgxIDIuODFsNS4wNyA1LjA3TDMgOS42OXYxLjQxbDcuMDcgMi44M0wxMi45IDIxaDEuNDFsMS44MS00Ljg4IDUuMDcgNS4wNyAxLjQyLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5lYXJNZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMyAzIDEwLjUzdi45OGw2Ljg0IDIuNjVMMTIuNDggMjFoLjk4TDIxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5pZ2h0bGlmZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgNWgxNGwtNiA5djRoMnYySDV2LTJoMnYtNEwxIDV6bTkuMSA0IDEuNC0ySDQuNDlsMS40IDJoNC4yMXpNMTcgNWg1djNoLTN2OWMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zYTMgMyAwIDAgMSAxIC4xN1Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb0NyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgOS4wMUMxOC43MiA4LjQyIDE4LjE2IDggMTcuNSA4aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxNXY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi44NSAxMGgxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTYgMTcuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVM4LjMzIDE5IDcuNSAxOSA2IDE4LjMzIDYgMTcuNXptOSAwYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNS0xLjUtLjY3LTEuNS0xLjV6TTEyIDYuMzYgOS4xNyAzLjU0bDEuNDEtMS40MUwxMiAzLjU0IDE1LjU0IDBsMS40MSAxLjQxTDEyIDYuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vTWVhbHNPdWxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNFY2YzAtMS43NiAyLjI0LTQgNS00djE2LjE3bC0yLTJWMTRoLTN6bTQuNDkgOS4zMUwxMC4wMiAxMi44NWMtLjMzLjA5LS42Ni4xNS0xLjAyLjE1djlIN3YtOWMtMi4yMSAwLTQtMS43OS00LTRWNS44M0wuNjkgMy41MSAyLjEgMi4xbDE5LjggMTkuOC0xLjQxIDEuNDF6TTYuMTcgOSA1IDcuODNWOWgxLjE3ek05IDJIN3YyLjE3bDIgMlYyem00IDdWMmgtMnY2LjE3bDEuODUgMS44NWMuMDktLjMzLjE1LS42Ni4xNS0xLjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb01lYWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTRWNmMwLTEuNzYgMi4yNC00IDUtNHYxNi4xN2wtMi0yVjE0aC0zem00LjQ5IDkuMzFMMTAuMDIgMTIuODVjLS4zMy4wOS0uNjYuMTUtMS4wMi4xNXY5SDd2LTljLTIuMjEgMC00LTEuNzktNC00VjUuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek02LjE3IDkgNSA3LjgzVjloMS4xN3pNOSAySDd2Mi4xN2wyIDJWMnptNCA3VjJoLTJ2Ni4xN2wxLjg1IDEuODVjLjA5LS4zMy4xNS0uNjYuMTUtMS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9UcmFuc2ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjIgNCA2LjgzVjE2YzAgLjg4LjM5IDEuNjcgMSAyLjIyVjIwYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDh2MWMwIC41NS40NSAxIDEgMWgxYy4wNSAwIC4wOS0uMDIuMTQtLjAzbDEuNjQgMS42NCAxLjQxLTEuNDJ6TTcuNSAxN2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTQgNy41IDE0czEuNS42NyAxLjUgMS41UzguMzMgMTcgNy41IDE3ek02IDExVjguODNMOC4xNyAxMUg2em0yLjgzLTVMNS43OCAyLjk1QzcuMjQgMi4xNiA5LjQ4IDIgMTIgMmM0LjQyIDAgOCAuNSA4IDR2MTBjMCAuMzUtLjA4LjY3LS4xOS45OEwxMy44MyAxMUgxOFY2SDguODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdExpc3RlZExvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTQgMiA1IDUuMTQgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg2LTMuMTQtNy03LTd6bS44OCAxMy43NWgtMS43NVYxNGgxLjc1djEuNzV6bTAtMi44N2gtMS43NWMwLTIuODQgMi42Mi0yLjYyIDIuNjItNC4zOCAwLS45Ni0uNzktMS43NS0xLjc1LTEuNzVzLTEuNzUuNzktMS43NSAxLjc1SDguNUM4LjUgNi41NyAxMC4wNyA1IDEyIDVzMy41IDEuNTcgMy41IDMuNWMwIDIuMTktMi42MiAyLjQxLTIuNjIgNC4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyaDJMMTIgMiA1LjA1IDEySDdsLTMuOSA2aDYuOTJ2NGgzLjk2di00SDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZWRhbEJpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4xOCAxMC0xLjctNC42OEEyLjAwOCAyLjAwOCAwIDAgMCAxNC42IDRIMTJ2MmgyLjZsMS40NiA0aC00LjgxbC0uMzYtMUgxMlY3SDd2MmgxLjc1bDEuODIgNUg5LjljLS40NC0yLjIzLTIuMzEtMy44OC00LjY1LTMuOTlDMi40NSA5Ljg3IDAgMTIuMiAwIDE1YzAgMi44IDIuMiA1IDUgNSAyLjQ2IDAgNC40NS0xLjY5IDQuOS00aDQuMmMuNDQgMi4yMyAyLjMxIDMuODggNC42NSAzLjk5IDIuOC4xMyA1LjI1LTIuMTkgNS4yNS01IDAtMi44LTIuMi01LTUtNWgtLjgyek03LjgyIDE2Yy0uNCAxLjE3LTEuNDkgMi0yLjgyIDItMS42OCAwLTMtMS4zMi0zLTNzMS4zMi0zIDMtM2MxLjMzIDAgMi40Mi44MyAyLjgyIDJINXYyaDIuODJ6bTYuMjgtMmgtMS40bC0uNzMtMkgxNWMtLjQ0LjU4LS43NiAxLjI1LS45IDJ6bTQuOSA0Yy0xLjY4IDAtMy0xLjMyLTMtMyAwLS45My40MS0xLjczIDEuMDUtMi4yOGwuOTYgMi42NCAxLjg4LS42OC0uOTctMi42N2MuMDMgMCAuMDYtLjAxLjA5LS4wMSAxLjY4IDAgMyAxLjMyIDMgM3MtMS4zMyAzLTMuMDEgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uUGluQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjE0IDIgNSA1LjE0IDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ni0zLjE0LTctNy03em0wIDJhMiAyIDAgMSAxIC4wMDEgNC4wMDFBMiAyIDAgMCAxIDEyIDR6bTAgMTBjLTEuNjcgMC0zLjE0LS44NS00LTIuMTUuMDItMS4zMiAyLjY3LTIuMDUgNC0yLjA1czMuOTguNzMgNCAyLjA1QTQuNzgzIDQuNzgzIDAgMCAxIDEyIDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25QaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYTkgOSAwIDAgMC05IDljMCA0LjE3IDIuODQgNy42NyA2LjY5IDguNjlMMTIgMjJsMi4zMS0yLjMxQzE4LjE2IDE4LjY3IDIxIDE1LjE3IDIxIDExYTkgOSAwIDAgMC05LTl6bTAgMmMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTAgMTQuM2E3LjIgNy4yIDAgMCAxLTYtMy4yMmMuMDMtMS45OSA0LTMuMDggNi0zLjA4IDEuOTkgMCA1Ljk3IDEuMDkgNiAzLjA4YTcuMiA3LjIgMCAwIDEtNiAzLjIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXN0Q29udHJvbFJvZGVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjMxIDE3LjM4LTIuMzktMi4xM2MuNTItMi4zNi0xLjM2LTQuMjUtMy40Mi00LjI1LTEuMTYgMC0zLjUuOS0zLjUgMy41IDAgLjk3LjM5IDEuODQgMS4wMyAyLjQ3bC0uNzEuNzFBNC40NTcgNC40NTcgMCAwIDEgMTEgMTQuNWMwLTEuNy45Ni0zLjE3IDIuMzUtMy45M2E1IDUgMCAwIDAtMi4yOC0uNTdjLTIuMzggMC00LjM3IDEuNjUtNC45MSAzLjg3QTIuOTk3IDIuOTk3IDAgMCAxIDQgMTFjMC0xLjY2IDEuMzQtMyAzLTNoMi41YTIuNSAyLjUgMCAwIDAgMC01SDhjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMS41Yy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNUg3YTUuMDAyIDUuMDAyIDAgMCAwLTEgOS45di4wM0M2IDE4LjczIDguMjcgMjEgMTEuMDcgMjFoOC44NmMxLjg3IDAgMi44MS0yLjM0IDEuMzgtMy42MnpNMTggMTljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVzdENvbnRyb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNXYtMmgtMy4wN2MtLjA1LS4zOS0uMTItLjc3LS4yMi0xLjE0bDIuNTgtMS40OS0xLTEuNzNMMTYuOTIgMTBjLS4yOC0uNDgtLjYyLS45MS0uOTktMS4yOS4wNC0uMjMuMDctLjQ2LjA3LS43MSAwLS44LS4yNC0xLjU1LS42NS0yLjE4TDE3IDQuMTdsLTEuNDEtMS40MS0xLjcyIDEuNzJjLTEuNjgtLjg5LTMuMS0uMzMtMy43MyAwTDguNDEgMi43NiA3IDQuMTdsMS42NSAxLjY1QTMuOTkgMy45OSAwIDAgMCA4IDhjMCAuMjUuMDMuNDguMDcuNzItLjM3LjM4LS43MS44MS0uOTkgMS4yOEw0LjcxIDguNjNsLTEgMS43MyAyLjU4IDEuNDljLS4xLjM3LS4xNy43NS0uMjIgMS4xNEgzdjJoMy4wN2MuMDUuMzkuMTIuNzcuMjIgMS4xNGwtMi41OCAxLjQ5IDEgMS43M0w3LjA4IDE4YzEuMDggMS44MSAyLjg4IDMgNC45MiAzczMuODQtMS4xOSA0LjkyLTNsMi4zNyAxLjM3IDEtMS43My0yLjU4LTEuNDljLjEtLjM3LjE3LS43NS4yMi0xLjE0SDIxem0tOCAyaC0ydi02aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGluRHJvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDhjMC0zLjMxLTIuNjktNi02LTZTNiA0LjY5IDYgOGMwIDQuNSA2IDExIDYgMTFzNi02LjUgNi0xMXptLTggMGMwLTEuMS45LTIgMi0yczIgLjkgMiAyYTIgMiAwIDEgMS00IDB6TTUgMjB2MmgxNHYtMkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC4xMyAyIDUgNS4xMyA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODctMy4xMy03LTctN3ptMCA5LjVhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsdW1iaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuMjggNC45My0yLjEyLTIuMTJjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwTDExLjUgNS42NGwyLjEyIDIuMTIgMi4xMi0yLjEyIDMuNTQgMy41NGEzLjAxMiAzLjAxMiAwIDAgMCAwLTQuMjV6TTUuNDkgMTMuNzdjLjU5LjU5IDEuNTQuNTkgMi4xMiAwbDIuNDctMi40Ny0yLjEyLTIuMTMtMi40NyAyLjQ3Yy0uNTkuNTktLjU5IDEuNTQgMCAyLjEzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS4wNCA3Ljc2LS43MS43MS0uNzEuNzFMMTAuNDQgNmMtLjU5LS42LTEuNTQtLjYtMi4xMi0uMDFhMS40OSAxLjQ5IDAgMCAwIDAgMi4xMmwzLjE4IDMuMTgtLjcxLjcxLTYuMzYgNi4zNmMtLjc4Ljc4LS43OCAyLjA1IDAgMi44My43OC43OCAyLjA1Ljc4IDIuODMgMEwxNi40NSAxMmEuOTk2Ljk5NiAwIDEgMCAxLjQxLTEuNDFsLTIuODItMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmFpbHdheUFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA4YTcgNyAwIDAgMC0xMS45NS00Ljk1QTMzLjggMzMuOCAwIDAgMCA5IDNjLTQuNDIgMC04IC41LTggNHYxMC41QTMuNSAzLjUgMCAwIDAgNC41IDIxTDMgMjIuNXYuNWgxMnYtLjVMMTMuNSAyMWEzLjUgMy41IDAgMCAwIDMuNS0zLjV2LTIuNThBNyA3IDAgMCAwIDIzIDh6TTMgMTJWN2g2LjA4YTYuOTYgNi45NiAwIDAgMCAxLjE4IDVIM3ptNiA3Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptNy43MS02LjA2LS4yLjAzTDE2IDEzbC0uNDctLjAyLS4xNi0uMDItLjI5LS4wNC0uMi0uMDQtLjIyLS4wNmExLjU1IDEuNTUgMCAwIDEtLjIzLS4wN2wtLjEzLS4wNUE0Ljk5IDQuOTkgMCAwIDEgMTEuMSA3Yy4wNC0uMTkuMDktLjM3LjE1LS41NGwuMDUtLjE0LjE1LS4zOC4wNy0uMTUuMi0uMzYuMDctLjEyLjMtLjQyLjAyLS4wMmMuMjQtLjMuNTItLjU3LjgyLS44MWwuMDEtLjAxLjQ2LS4zMi4wMy0uMDJBNS4yNSA1LjI1IDAgMCAxIDE2IDNhNSA1IDAgMCAxIC43MSA5Ljk0ek0xNSA0aDJ2NWgtMnptMCA2aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmFtZW5EaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDZIOFY0LjY1bDEtLjEyVjZ6bTAgNkg4VjdoMXY1ek02IDdoMXY1SDZWN3ptMC0yLjEyIDEtLjEyVjZINlY0Ljg4ek0yMiAzVjJMNSA0djhIMmMwIDMuNjkgMi40NyA2Ljg2IDYgOC4yNVYyMmg4di0xLjc1YzMuNTMtMS4zOSA2LTQuNTYgNi04LjI1SDEwVjdoMTJWNkgxMFY0LjQxTDIyIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhbXBMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMjFoLTJWNi44M0w5LjQxIDguNDEgOCA3bDQtNCA0IDQtMS40MSAxLjQxTDEzIDYuODNWOWMwIDQuMjcgNC4wMyA3LjEzIDYgOC4yN2wtMS40NiAxLjQ2Yy0xLjkxLTEuMTYtMy40NC0yLjUzLTQuNTQtNC4wMlYyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmFtcFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjFoMlY2LjgzbDEuNTkgMS41OUwxNiA3bC00LTQtNCA0IDEuNDEgMS40MUwxMSA2LjgzVjljMCA0LjI3LTQuMDMgNy4xMy02IDguMjdsMS40NiAxLjQ2QzguMzcgMTcuNTYgOS45IDE2LjE5IDExIDE0LjdWMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhdGVSZXZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0xNS4zNSA2LjQxLTEuNzctMS43N2MtLjItLjItLjUxLS4yLS43MSAwTDYgMTEuNTNWMTRoMi40N2w2Ljg4LTYuODhjLjItLjE5LjItLjUxIDAtLjcxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiAxNHYtMi40N2w2Ljg4LTYuODhjLjItLjIuNTEtLjIuNzEgMGwxLjc3IDEuNzdjLjIuMi4yLjUxIDAgLjcxTDguNDcgMTRINnptMTIgMGgtNy41bDItMkgxOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmVSb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNGgydjloLTJ6TTQgNGgydjE2SDR6TTExIDRoMnY0aC0yek0xMSAxMGgydjRoLTJ6TTExIDE2aDJ2NGgtMnpNMjIuNSAxNi40MSAyMS4wOSAxNSAxOSAxNy4wOSAxNi45MSAxNWwtMS40MSAxLjQxIDIuMDkgMi4wOS0yLjA5IDIuMDlMMTYuOTEgMjIgMTkgMTkuOTEgMjEuMDkgMjJsMS40MS0xLjQxLTIuMDktMi4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVzdGF1cmFudE1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjEgMTMuMzQgMi44My0yLjgzTDMuOTEgMy41YTQuMDA4IDQuMDA4IDAgMCAwIDAgNS42Nmw0LjE5IDQuMTh6bTYuNzgtMS44MWMxLjUzLjcxIDMuNjguMjEgNS4yNy0xLjM4IDEuOTEtMS45MSAyLjI4LTQuNjUuODEtNi4xMi0xLjQ2LTEuNDYtNC4yLTEuMS02LjEyLjgxLTEuNTkgMS41OS0yLjA5IDMuNzQtMS4zOCA1LjI3TDMuNyAxOS44N2wxLjQxIDEuNDFMMTIgMTQuNDFsNi44OCA2Ljg4IDEuNDEtMS40MUwxMy40MSAxM2wxLjQ3LTEuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RhdXJhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA5SDlWMkg3djdINVYySDN2N2MwIDIuMTIgMS42NiAzLjg0IDMuNzUgMy45N1YyMmgyLjV2LTkuMDNDMTEuMzQgMTIuODQgMTMgMTEuMTIgMTMgOVYyaC0ydjd6bTUtM3Y4aDIuNXY4SDIxVjJjLTIuNzYgMC01IDIuMjQtNSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb3VuZGFib3V0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA4IDhBNiA2IDAgMCAxIDE2IDNjMy4zMSAwIDYgMi42OSA2IDYgMCAyLjk3LTIuMTYgNS40NC01IDUuOTJWMjFoLTJ2LTYuMDljMC0uOTguNzEtMS44IDEuNjctMS45N2EzLjk5OSAzLjk5OSAwIDEgMC00LjYxLTQuNjFjLS4xNy45Ni0uOTkgMS42Ny0xLjk3IDEuNjdINS44M2wxLjU5IDEuNTlMNiAxMyAyIDlsNC00IDEuNDEgMS40MUw1LjgzIDhoNC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm91bmRhYm91dFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTIgOEMxMy40NCA1LjE2IDEwLjk3IDMgOCAzIDQuNjkgMyAyIDUuNjkgMiA5YzAgMi45NyAyLjE2IDUuNDQgNSA1LjkyVjIxaDJ2LTYuMDljMC0uOTgtLjcxLTEuOC0xLjY3LTEuOTdhMy45OTkgMy45OTkgMCAxIDEgNC42MS00LjYxYy4xNy45Ni45OSAxLjY3IDEuOTcgMS42N2g0LjI2bC0xLjU5IDEuNTlMMTggMTNsNC00LTQtNC0xLjQxIDEuNDFMMTguMTcgOGgtNC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm91dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNS4xOFY3YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0djEwYzAgMS4xLS45IDItMiAycy0yLS45LTItMlY4LjgyQzguMTYgOC40IDkgNy4zIDkgNmMwLTEuNjYtMS4zNC0zLTMtM1MzIDQuMzQgMyA2YzAgMS4zLjg0IDIuNCAyIDIuODJWMTdjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNFY3YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2OC4xOEEyLjk5NiAyLjk5NiAwIDAgMCAxOCAyMWMxLjY2IDAgMy0xLjM0IDMtMyAwLTEuMy0uODQtMi40LTItMi44MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnVuQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMS41IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMi41IDZjLS43IDAtMi4wMS0uNTQtMi45MS0xLjc2bC0uNDEgMi4zNUwxNCAxNC4wM1YxOGgtMXYtMy41OGwtMS4xMS0xLjIxLS41MiAyLjY0LTMuNzctLjc3LjItLjk4IDIuNzguNTcuOTYtNC44OS0xLjU0LjU3VjEySDlWOS42NWwzLjI4LTEuMjFjLjQ5LS4xOCAxLjAzLjA2IDEuMjYuNTMuODMgMS43IDIuMDUgMi4wMyAyLjQ2IDIuMDN2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2FmZXR5Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem0wIDE1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMS42NS0yLjY1TDExLjUgMTIuMlY5aDF2Mi43OWwxLjg1IDEuODUtLjcuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhaWxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMy41VjJMMyAxMy41aDh6bTEwIDBDMjEgNi41IDE0LjUgMSAxMi41IDFjMCAwIDEgMyAxIDYuNXMtMSA2LTEgNkgyMXptMSAxLjVIMmE2LjIzMyA2LjIzMyAwIDAgMCAyLjMzIDMuNzNjLjY1LS4yNyAxLjIyLS43MiAxLjY3LTEuMjMuNzMuODQgMS44IDEuNSAzIDEuNXMyLjI3LS42NiAzLTEuNWMuNzMuODQgMS44IDEuNSAzIDEuNXMyLjI2LS42NiAzLTEuNWMuNDUuNTEgMS4wMi45NiAxLjY3IDEuMjMgMS4xNy0uODkgMi4wMi0yLjIgMi4zMy0zLjczem0wIDh2LTJoLTFjLTEuMDQgMC0yLjA4LS4zNS0zLTEtMS44MyAxLjMtNC4xNyAxLjMtNiAwLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0uOTEuNjUtMS45NiAxLTMgMUgydjJoMWMxLjAzIDAgMi4wNS0uMjUgMy0uNzUgMS44OSAxIDQuMTEgMSA2IDAgMS44OSAxIDQuMTEgMSA2IDAgLjk1LjUgMS45Ny43NSAzIC43NWgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXRlbGxpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNNSA0Ljk5aDNDOCA2LjY1IDYuNjYgOCA1IDhWNC45OXpNNSAxMnYtMmMyLjc2IDAgNS0yLjI1IDUtNS4wMWgyQzEyIDguODYgOC44NyAxMiA1IDEyem0wIDYgMy41LTQuNSAyLjUgMy4wMUwxNC41IDEybDQuNSA2SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlblJvdGF0aW9uQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNCA3LjU5IDUtNWMuNzgtLjc4IDIuMDUtLjc4IDIuODMgMEwyMC4yNCAxMWgtMi44M0wxMC40IDQgNS40MSA5SDh2MkgyVjVoMnYyLjU5ek0yMCAxOWgydi02aC02djJoMi41OWwtNC45OSA1LTcuMDEtN0gzLjc2bDguNDEgOC40MWMuNzguNzggMi4wNS43OCAyLjgzIDBsNS01VjE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXRNZWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuMDUgMTcuNTYtMTcuOTcuOTRMMyAxN2wxNy45OC0uOTQuMDcgMS41ek0yMSAxOS40OEgzdjEuNWgxOHYtMS41ek0yMiA1djdjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNWMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAyem0tMiAxYy0xLjY4IDAtMy4wNC45OC0zLjIxIDIuMjMtLjY0LS43My0yLjczLTIuNzMtNi41NC0yLjczLTQuNjcgMC02Ljc1IDMtNi43NSAzczIuMDggMyA2Ljc1IDNjMy44MSAwIDUuOS0yIDYuNTQtMi43M0MxNi45NiAxMC4wMiAxOC4zMiAxMSAyMCAxMVY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWducG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwaDVsMy0zLTMtM2gtNVYyaC0ydjJINHY2aDd2Mkg2bC0zIDMgMyAzaDV2NGgydi00aDd2LTZoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub3dtb2JpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxN2MwIC41NS0uNDUgMS0xIDFoLS4xN2wtMi4yLTIuMkMyMC41OCAxNS4zNyAyMiAxNC40IDIyIDEzYzAtMS04LTgtOC04aC0zdjJoMi4yNWwxLjQ1IDEuM0wxMSAxMWwtOS41LTFMMCAxM2w0LjU0IDEuMzYtMy40OSAxLjg4Qy0uNzcgMTcuMjItLjA3IDIwIDIgMjBoNmMyLjIxIDAgNC0xLjc5IDQtNGg0bDIgMmgtM3YyaDZjMS42NiAwIDMtMS4zNCAzLTNoLTJ6TTggMThIMmw1LjI1LTIuODNMMTAgMTZhMiAyIDAgMCAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU29zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSA3aC0zYy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDhoLTNWOWgzdjZ6TTEgMTVoNHYtMkgzYy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNHYySDN2MmgyYzEuMSAwIDIgLjkgMiAydjJjMCAxLjEtLjkgMi0yIDJIMXYtMnptMTYgMGg0di0yaC0yYy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNHYyaC00djJoMmMxLjEgMCAyIC45IDIgMnYyYzAgMS4xLS45IDItMiAyaC00di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb3VwS2l0Y2hlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNCA3Yy0uMzQuNTUtLjQuOTctLjQgMS4zOEM2IDkuMTUgNyAxMSA3IDEyYzAgLjk1LS40IDEuNS0uNCAxLjVINS4xcy40LS41NS40LTEuNWMwLTEtMS0yLjg1LTEtMy42MiAwLS40MS4wNi0uODMuNC0xLjM4aDEuNXptNSAwYy0uMzQuNTUtLjQuOTctLjQgMS4zOCAwIC43NyAxIDIuNjIgMSAzLjYyIDAgLjk1LS40IDEuNS0uNCAxLjVoMS41cy40LS41NS40LTEuNWMwLTEtMS0yLjg1LTEtMy42MiAwLS40MS4wNi0uODMuNC0xLjM4aC0xLjV6TTguMTUgN2MtLjM0LjU1LS40Ljk3LS40IDEuMzggMCAuNzcgMSAyLjYzIDEgMy42MiAwIC45NS0uNCAxLjUtLjQgMS41aDEuNXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgtMS41em0xMy4zMi0uNXMuMTMtMS4wNi4xMy0xLjVjMC0xLjY1LTEuMzUtMy0zLTMtMS41NCAwLTIuODEgMS4xNi0yLjk4IDIuNjVMMTQuNTMgMTVINC4wMWMtLjYgMC0xLjA5LjUzLTEgMS4xM0MzLjUzIDE5LjQ2IDYuMzkgMjIgOS43NSAyMmMzLjQ4IDAgNi4zNC0yLjczIDYuNzEtNi4yM0wxNy42MSA0LjljLjA1LS41MS40Ny0uOS45OS0uOS41NSAwIDEgLjQ1IDEgMSAwIC4zLS4xIDEuMjUtLjEgMS4yNWwxLjk3LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1IDMgN1YzbDQgMnptMTEtMnY0bDQtMi00LTJ6bS03LTF2NGw0LTItNC0yem0tNiA4LjA0YzEuMzguNDkgMy43Ny45NiA3IC45NnM1LjYyLS40NyA3LS45NkMxOSA5Ljg2IDE2LjIyIDkgMTIgOXMtNyAuODYtNyAxLjA0ek0xNSAxN0g5djQuODhjLTQuMDYtLjM5LTctMS41NC03LTIuODh2LTljMC0xLjY2IDQuNDgtMyAxMC0zczEwIDEuMzQgMTAgM3Y5YzAgMS4zNC0yLjk0IDIuNDgtNyAyLjg3VjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdG9yZU1hbGxEaXJlY3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDR2MmgxNlY0em0xIDEwdi0ybC0xLTVINGwtMSA1djJoMXY2aDEwdi02aDR2Nmgydi02aDF6bS05IDRINnYtNGg2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0cmFpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNi44MyA5LjQxIDguNDEgOCA3bDQtNCA0IDQtMS40MSAxLjQxTDEzIDYuODNWMjFoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0cmVldHZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41NiAxNC4zM2MtLjM0LjI3LS41Ni43LS41NiAxLjE3VjIxaDdjMS4xIDAgMi0uOSAyLTJ2LTUuOThjLS45NC0uMzMtMS45NS0uNTItMy0uNTItMi4wMyAwLTMuOTMuNy01LjQ0IDEuODN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCI2XCIsXCJyXCI6XCI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgNmMwLTEuMDguMjctMi4xLjc0LTNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAuNTUuMjMgMS4wNS41OSAxLjQxbDkuODItOS44MkE2LjQzNSA2LjQzNSAwIDAgMSAxMS41IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwdjI0aDI0VjBIMHptMjIgMjJIMlY4Ljg2QzIgNi4wNSAzLjUzIDMuODQgNi4yIDIuOCA4IDIuMDkgMTAuMTQgMiAxMiAyYzEuODYgMCA0IC4wOSA1LjguOEMyMC40NyAzLjg0IDIyIDYuMDUgMjIgOC44NlYyMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjAxIDloMTB2NWgtMTB6TTE3LjggMi44QzE2IDIuMDkgMTMuODYgMiAxMiAyYy0xLjg2IDAtNCAuMDktNS44LjhDMy41MyAzLjg0IDIgNi4wNSAyIDguODZWMjJoMjBWOC44NmMwLTIuODEtMS41My01LjAyLTQuMi02LjA2em0uMiAxMy4wOGMwIDEuNDUtMS4xOCAyLjYyLTIuNjMgMi42MmwxLjEzIDEuMTJWMjBIMTVsLTEuNS0xLjVoLTIuODNMOS4xNyAyMEg3LjV2LS4zOGwxLjEyLTEuMTJDNy4xOCAxOC41IDYgMTcuMzIgNiAxNS44OFY5YzAtMi42MyAzLTMgNi0zIDMuMzIgMCA2IC4zOCA2IDN2Ni44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3luYWdvZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA4djEzaDR2LTVjMC0xLjEuOS0yIDItMnMyIC45IDIgMnY1aDRWOGwtNi01LTYgNXptNy41IDJjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjUuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjV6TTMgNWMtMS4xIDAtMiAuOS0yIDJ2MWg0VjdjMC0xLjEtLjktMi0yLTJ6TTEgOWg0djEySDF6TTIxIDVjLTEuMSAwLTIgLjktMiAydjFoNFY3YzAtMS4xLS45LTItMi0yek0xOSA5aDR2MTJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRha2VvdXREaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNS4yNiAxMWgxMy40OGwtLjY3IDlINS45M2wtLjY3LTl6bTMuNzYtN2g1Ljk1TDE5IDcuMzhsMS41OS0xLjU5TDIyIDcuMjEgMTkuMjEgMTBINC43OUwyIDcuMjEgMy40MSA1LjggNSA3LjM4IDkuMDIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGF4aUFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA4QTcgNyAwIDAgMCA5LjY4IDVIN3YySDQuNWExLjUgMS41IDAgMCAwLTEuNDIgMS4wMUwxIDE0djhhMSAxIDAgMCAwIDEgMWgxYTEgMSAwIDAgMCAxLTF2LTFoMTJ2MWExIDEgMCAwIDAgMSAxaDFhMSAxIDAgMCAwIDEtMXYtNy42OEE3LjAxIDcuMDEgMCAwIDAgMjMgOHptLTE4LjUuNWg0LjUzYTYuOTMgNi45MyAwIDAgMCAyLjA4IDQuNUgzbDEuNS00LjV6bTAgOS41YTEuNSAxLjUgMCAxIDEgMC0zIDEuNSAxLjUgMCAwIDEgMCAzem0xMSAwYTEuNSAxLjUgMCAxIDEgMC0zIDEuNSAxLjUgMCAwIDEgMCAzem0yLjkzLTUuNjMtLjIxLjExLS4xOC4wOWE0Ljk3IDQuOTcgMCAwIDEtLjQyLjE2bC0uMjIuMDctLjIzLjA2LS4yLjA1YTUgNSAwIDAgMS01Ljk0LTQuNDFBNC4wNyA0LjA3IDAgMCAxIDExIDhsLjAyLS40Ny4wMi0uMTcuMDQtLjI4LjA0LS4yMS4wNS0uMjEuMDctLjI0LjA1LS4xM2E0Ljk5IDQuOTkgMCAwIDEgOS42OSAxLjcgNC45NiA0Ljk2IDAgMCAxLTIuNTUgNC4zOHpNMTUgNGgydjVoLTJ6bTAgNmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRlbXBsZUJ1ZGRoaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOS4wMmMwIDEuMDktLjg5IDEuOTgtMS45OCAxLjk4SDQuOThDMy44OSAxMSAzIDEwLjExIDMgOS4wMkgxYzAgMS44NiAxLjI4IDMuNCAzIDMuODRWMjJoNnYtM2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjNoNnYtOS4xNGMuNTUtLjE0IDMtMS4wNCAzLTMuODZsLTIgLjAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDguODZWMTBoMTJWOC44NmMuNTUtLjE0IDMtMS4wNCAzLTMuODZsLTIgLjAyQzE5IDYuMTEgMTguMTEgNyAxNy4wMiA3SDYuOThDNS44OSA3IDUgNi4xMSA1IDUuMDJIM2MwIDEuODUgMS4yOCAzLjQgMyAzLjg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxIDguMjUgNmg3LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRlbXBsZUhpbmR1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi42IDExaDEwLjhsLS45LTNoLTl6TTIwIDExdjJINHYtMkgydjExaDh2LTVoNHY1aDhWMTF6TTE1LjkgNiAxNSAzVjFoLTJ2MmgtMi4wM1YxaC0ydjIuMTJMOC4xIDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRlcnJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTMuNzUgNSAyLjg1IDMuOC0xLjYgMS4yQzkuODEgMTMuNzUgNyAxMCA3IDEwbC02IDhoMjJMMTQgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGhlYXRlckNvbWVkeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTYuNUMyIDE5LjU0IDQuNDYgMjIgNy41IDIyczUuNS0yLjQ2IDUuNS01LjVWMTBIMnY2LjV6bTUuNSAyQzYuMTIgMTguNSA1IDE3LjgzIDUgMTdoNWMwIC44My0xLjEyIDEuNS0yLjUgMS41ek0xMCAxM2MuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tNSAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDN2NmgzdjIuNWMwLS44MyAxLjEyLTEuNSAyLjUtMS41czIuNS42NyAyLjUgMS41aC01djIuODljLjc1LjM4IDEuNi42MSAyLjUuNjEgMy4wNCAwIDUuNS0yLjQ2IDUuNS01LjVWM0gxMXptMyA1LjA4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMWMwIC41Ni0uNDUgMS0xIDF6bTUgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDFjMCAuNTYtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaXJlUmVwYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggN2ExLjAwMyAxLjAwMyAwIDAgMCAxLjcxLjcxYy40LS40IDEuMDQtMi40NiAxLjA0LTIuNDZzLTIuMDYuNjQtMi40NiAxLjA0Yy0uMTguMTgtLjI5LjQzLS4yOS43MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMmMtMi43NiAwLTUgMi4yNC01IDUgMCAyLjA1IDEuMjMgMy44MSAzIDQuNThWMTNoMXY1YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xdi0yYTMuMDA5IDMuMDA5IDAgMCAwLTQtMi44M1Y1YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNmMxLjEgMCAyLS45IDItMnYtM2MwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MmMwIDEuNjUgMS4zNSAzIDMgM3MzLTEuMzUgMy0zdi01aDF2LTEuNDJjMS43Ny0uNzcgMy0yLjUzIDMtNC41OCAwLTIuNzYtMi4yNC01LTUtNXpNNiAxOS41bC0yLTJ2LTIuODNsMiAydjIuODN6bTAtNS0yLTJWOS42N2wyIDJ2Mi44M3ptMC01LTItMlY0LjY3bDIgMlY5LjV6bTQgOC0yIDJ2LTIuODNsMi0ydjIuODN6bTAtNS0yIDJ2LTIuODNsMi0ydjIuODN6bTAtNS0yIDJWNi42N2wyLTJWNy41em05IDIuNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyYWZmaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMGgtM1Y4Ljg2YzEuNzItLjQ1IDMtMiAzLTMuODZoLTNWNGMwLS41NS0uNDUtMS0xLTFIOGMtLjU1IDAtMSAuNDUtMSAxdjFINGMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYxMEg0YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjE1SDRjMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMjBjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF2LTEuMTRjMS43Mi0uNDUgMy0yIDMtMy44NmgtM3YtMS4xNGMxLjcyLS40NSAzLTIgMy0zLjg2em0tOCA5YTIgMiAwIDEgMS0uMDAxLTMuOTk5QTIgMiAwIDAgMSAxMiAxOXptMC01YTIgMiAwIDEgMS0uMDAxLTMuOTk5QTIgMiAwIDAgMSAxMiAxNHptMC01YTIgMiAwIDAgMS0yLTJjMC0xLjExLjg5LTIgMi0yYTIgMiAwIDEgMSAwIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMC41di41aDIuMjNsMi0ySDE0bDIgMmgydi0uNUwxNi41IDE5YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjZjMC0zLjUtMy41OC00LTgtNHpNNy41IDE3Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNi42NyAxNCA3LjUgMTRzMS41LjY3IDEuNSAxLjVTOC4zMyAxNyA3LjUgMTd6bTMuNS03SDZWNmg1djR6bTIgMFY2aDV2NGgtNXptMy41IDdjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNi45NFY4LjVjMC0yLjc5LTIuNjEtMy40LTYuMDEtMy40OWwuNzYtMS41MUgxN1YySDd2MS41aDQuNzVsLS43NiAxLjUyQzcuODYgNS4xMSA1IDUuNzMgNSA4LjV2OC40NGMwIDEuNDUgMS4xOSAyLjY2IDIuNTkgMi45N0w2IDIxLjV2LjVoMi4yM2wyLTJIMTRsMiAyaDJ2LS41TDE2LjUgMjBoLS4wOGMxLjY5IDAgMi41OC0xLjM3IDIuNTgtMy4wNnptLTcgMS41NmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTUtNC41SDdWOWgxMHY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFuc2ZlcldpdGhpbkFTdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgMTUuNXYtMS43NUwxNCAxNi4yNWwyLjQ5IDIuNVYxN0gyMnYtMS41em0zLjAyIDQuMjVIMTR2MS41aDUuNTFWMjNMMjIgMjAuNSAxOS41MSAxOHpNOS41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTUuNzUgOC45IDMgMjNoMi4xbDEuNzUtOEw5IDE3djZoMnYtNy41NUw4Ljk1IDEzLjRsLjYtM0MxMC44NSAxMiAxMi44IDEzIDE1IDEzdi0yYy0xLjg1IDAtMy40NS0xLTQuMzUtMi40NWwtLjk1LTEuNkM5LjM1IDYuMzUgOC43IDYgOCA2Yy0uMjUgMC0uNS4wNS0uNzUuMTVMMiA4LjNWMTNoMlY5LjY1bDEuNzUtLjc1XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyYW5zaXRFbnRlcmV4aXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxOEg2VjhoM3Y0Ljc3TDE1Ljk4IDYgMTggOC4wMyAxMS4xNSAxNUgxNnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmlwT3JpZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTJDMiA2LjQ4IDYuNDggMiAxMiAyczEwIDQuNDggMTAgMTAtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJ6bTEwIDZjMy4zMSAwIDYtMi42OSA2LTZzLTIuNjktNi02LTYtNiAyLjY5LTYgNiAyLjY5IDYgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdXJuTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYuODMgMTEgMS41OSAxLjU5TDcgMTRsLTQtNCA0LTQgMS40MSAxLjQxTDYuODMgOUgxNWMxLjEgMCAyIC45IDIgMnY5aC0ydi05SDYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1cm5SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjE3IDExLTEuNTkgMS41OUwxNyAxNGw0LTQtNC00LTEuNDEgMS40MUwxNy4xNyA5SDljLTEuMSAwLTIgLjktMiAydjloMnYtOWg4LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdXJuU2hhcnBMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2LjgzIDQuNDEgOC40MSAzIDdsNC00IDQgNC0xLjQxIDEuNDFMOCA2LjgzVjEzaDhjMS4xIDAgMiAuOSAyIDJ2NmgtMnYtNkg4Yy0xLjEgMC0yLS45LTItMlY2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdXJuU2hhcnBSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDYuODMgMS41OSAxLjU5TDIxIDdsLTQtNC00IDQgMS40MSAxLjQxTDE2IDYuODNWMTNIOGMtMS4xIDAtMiAuOS0yIDJ2Nmgydi02aDhjMS4xIDAgMi0uOSAyLTJWNi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVyblNsaWdodExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS42NiA2VjRINnY1LjY2aDJWNy40MWw1IDVWMjBoMnYtNy41OGMwLS41My0uMjEtMS4wNC0uNTktMS40MWwtNS01aDIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1cm5TbGlnaHRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjM0IDZWNEgxOHY1LjY2aC0yVjcuNDFsLTUgNVYyMEg5di03LjU4YzAtLjUzLjIxLTEuMDQuNTktMS40MWw1LTVoLTIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR3b1doZWVsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMWMtLjE4IDAtLjM2LjAzLS41My4wNUwxNy40MSA5SDIwVjZsLTMuNzIgMS44NkwxMy40MSA1SDl2MmgzLjU5bDIgMkgxMWwtNCAyLTItMkgwdjJoNGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00bDIgMmgzbDMuNDktNi4xIDEuMDEgMS4wMWMtLjkxLjczLTEuNSAxLjg0LTEuNSAzLjA5IDAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTQtMS43OS00LTQtNHpNNCAxN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTE2IDBjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVVHVybkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5djEyaC0yVjljMC0yLjIxLTEuNzktNC00LTRTOCA2Ljc5IDggOXY0LjE3bDEuNTktMS41OUwxMSAxM2wtNCA0LTQtNCAxLjQxLTEuNDFMNiAxMy4xN1Y5YzAtMy4zMSAyLjY5LTYgNi02czYgMi42OSA2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVUdXJuUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDl2MTJoMlY5YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDR2NC4xN2wtMS41OS0xLjU5TDEzIDEzbDQgNCA0LTQtMS40MS0xLjQxTDE4IDEzLjE3VjljMC0zLjMxLTIuNjktNi02LTZTNiA1LjY5IDYgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9sdW50ZWVyQWN0aXZpc20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDExaDR2MTFIMXpNMTYgMy4yNUMxNi42NSAyLjQ5IDE3LjY2IDIgMTguNyAyIDIwLjU1IDIgMjIgMy40NSAyMiA1LjNjMCAyLjI3LTIuOTEgNC45LTYgNy43LTMuMDktMi44MS02LTUuNDQtNi03LjdDMTAgMy40NSAxMS40NSAyIDEzLjMgMmMxLjA0IDAgMi4wNS40OSAyLjcgMS4yNXpNMjAgMTdoLTdsLTIuMDktLjczLjMzLS45NEwxMyAxNmgyLjgyYy42NSAwIDEuMTgtLjUzIDEuMTgtMS4xOCAwLS40OS0uMzEtLjkzLS43Ny0xLjExTDguOTcgMTFIN3Y5LjAyTDE0IDIybDguMDEtM2MtLjAxLTEuMS0uOS0yLTIuMDEtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2FyZWhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMjFWN0wxMiAzIDIgN3YxNGg1di05aDEwdjloNXptLTExLTJIOXYyaDJ2LTJ6bTItM2gtMnYyaDJ2LTJ6bTIgM2gtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpbmVCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDN2NmMwIDIuOTcgMi4xNiA1LjQzIDUgNS45MVYxOUg4djJoOHYtMmgtM3YtNC4wOWMyLjg0LS40OCA1LTIuOTQgNS01LjkxVjNINnptMTAgNUg4VjVoOHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXcm9uZ0xvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBWMy4yNmMtLjY1LS4xNy0xLjMyLS4yNi0yLS4yNi00LjIgMC04IDMuMjItOCA4LjIgMCAzLjMyIDIuNjcgNy4yNSA4IDExLjggNS4zMy00LjU1IDgtOC40OCA4LTExLjggMC0uNDEtLjA0LS44MS0uMDktMS4ySDE0em0tMiAzYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuNTQgMi44OC0xLjQyLTEuNDJMMTkgMy41OWwtMi4xMi0yLjEzLTEuNDIgMS40MkwxNy41OSA1bC0yLjEzIDIuMTIgMS40MiAxLjQyTDE5IDYuNDFsMi4xMiAyLjEzIDEuNDItMS40MkwyMC40MSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRab29tSW5NYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDlWM0g3djIuNTlMMy45MSAyLjUgMi41IDMuOTEgNS41OSA3SDN2Mmg2em0xMiAwVjdoLTIuNTlsMy4wOS0zLjA5LTEuNDEtMS40MUwxNyA1LjU5VjNoLTJ2Nmg2ek0zIDE1djJoMi41OUwyLjUgMjAuMDlsMS40MSAxLjQxTDcgMTguNDFWMjFoMnYtNkgzem0xMiAwdjZoMnYtMi41OWwzLjA5IDMuMDkgMS40MS0xLjQxTDE4LjQxIDE3SDIxdi0yaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRab29tT3V0TWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgMyAyLjMgMi4zLTIuODkgMi44NyAxLjQyIDEuNDJMMTguNyA2LjcgMjEgOVYzaC02ek0zIDlsMi4zLTIuMyAyLjg3IDIuODkgMS40Mi0xLjQyTDYuNyA1LjMgOSAzSDN2NnptNiAxMi0yLjMtMi4zIDIuODktMi44Ny0xLjQyLTEuNDJMNS4zIDE3LjMgMyAxNXY2aDZ6bTEyLTYtMi4zIDIuMy0yLjg3LTIuODktMS40MiAxLjQyIDIuODkgMi44N0wxNSAyMWg2di02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRIb21lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExLjY4VjExTDggNmwtNyA1djEwaDV2LTZoNHY2aDEuNjhjLS40My0uOTEtLjY4LTEuOTItLjY4LTMgMC0yLjc5IDEuNjQtNS4xOSA0LTYuMzJ6TTIzIDEzLjExVjNIMTB2MS45N2w3IDV2MS4xMWMuMzMtLjA1LjY2LS4wOCAxLS4wOCAxLjk2IDAgMy43My44MSA1IDIuMTF6TTE3IDdoMnYyaC0yVjd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE4YzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1IDIuMjQgNSA1IDUgNS0yLjI0IDUtNXptLTUuNSAzdi0yLjVIMTV2LTFoMi41VjE1aDF2Mi41SDIxdjFoLTIuNVYyMWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXBwU2V0dGluZ3NBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS44MSAxMi43NC0uODItLjYzdi0uMjJsLjgtLjYzYy4xNi0uMTIuMi0uMzQuMS0uNTFsLS44NS0xLjQ4YS4zOTUuMzk1IDAgMCAwLS4zNS0uMmMtLjA1IDAtLjEuMDEtLjE1LjAzbC0uOTUuMzhjLS4wOC0uMDUtLjExLS4wNy0uMTktLjExbC0uMTUtMS4wMWEuNDA4LjQwOCAwIDAgMC0uNC0uMzZoLTEuNzFjLS4yIDAtLjM3LjE1LS40LjM0bC0uMTQgMS4wMWMtLjAzLjAyLS4wNy4wMy0uMS4wNWwtLjA5LjA2LS45NS0uMzhhLjQwMS40MDEgMCAwIDAtLjUuMTdsLS44NSAxLjQ4Yy0uMS4xNy0uMDYuMzkuMS41MWwuOC42M3YuMjNsLS44LjYzYS4zOS4zOSAwIDAgMC0uMS41MWwuODUgMS40OGMuMDcuMTMuMjEuMi4zNS4yLjA1IDAgLjEtLjAxLjE1LS4wM2wuOTUtLjM3Yy4wOC4wNS4xMi4wNy4yLjExbC4xNSAxLjAxYy4wMy4yLjIuMzQuNC4zNGgxLjcxYy4yIDAgLjM3LS4xNS40LS4zNGwuMTUtMS4wMWMuMDMtLjAyLjA3LS4wMy4xLS4wNWwuMDktLjA2Ljk1LjM4YS40MDEuNDAxIDAgMCAwIC41LS4xN2wuODUtMS40OGEuMzkuMzkgMCAwIDAtLjEtLjUxek0xOCAxMy41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNMTcgMTdoMnY0YzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjNjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMnY0aC0yVjZIN3YxMmgxMHYtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXBwc091dGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOGg0VjRINHY0em02IDEyaDR2LTRoLTR2NHptLTYgMGg0di00SDR2NHptMC02aDR2LTRINHY0em02IDBoNHYtNGgtNHY0em02IDZoNHYtNGgtNHY0em0zLTIwYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLjUgOGgtMVY3aDF2MXptMC0yaC0xVjJoMXY0ek0xNiAxNGg0di0yLjA3Yy0uMzMuMDUtLjY2LjA3LTEgLjA3LTEuMDcgMC0yLjA5LS4yNC0zLS42OFYxNHpNMTAgNHY0aDIuNjhjLS40NC0uOTEtLjY4LTEuOTMtLjY4LTMgMC0uMzQuMDItLjY3LjA3LTFIMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDhoNFY0SDR2NHptNiAxMmg0di00aC00djR6bS02IDBoNHYtNEg0djR6bTAtNmg0di00SDR2NHptNiAwaDR2LTRoLTR2NHptNi0xMHY0aDRWNGgtNHptLTYgNGg0VjRoLTR2NHptNiA2aDR2LTRoLTR2NHptMCA2aDR2LTRoLTR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dCYWNrSW9zTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNzcgMy43NyAxNiAyIDYgMTJsMTAgMTAgMS43Ny0xLjc3TDkuNTQgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93QmFja0lvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjY3IDMuODcgOS45IDIuMSAwIDEybDkuOSA5LjkgMS43Ny0xLjc3TDMuNTQgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93QmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDExSDcuODNsNS41OS01LjU5TDEyIDRsLTggOCA4IDggMS40MS0xLjQxTDcuODMgMTNIMjB2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93RG93bndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwIDEyLTEuNDEtMS40MUwxMyAxNi4xN1Y0aC0ydjEyLjE3bC01LjU4LTUuNTlMNCAxMmw4IDggOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0Ryb3BEb3duQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxMi00LTRoOGwtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0Ryb3BEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyAxMCA1IDUgNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0Ryb3BVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcgMTQgNS01IDUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dGb3J3YXJkSW9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjIzIDIwLjIzIDggMjJsMTAtMTBMOCAyIDYuMjMgMy43NyAxNC40NiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNC0xLjQxIDEuNDFMMTYuMTcgMTFINHYyaDEyLjE3bC01LjU4IDUuNTlMMTIgMjBsOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDctNSA1IDUgNVY3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAwdjI0SDBWMGgyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgMTcgNS01LTUtNXYxMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAyNFYwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93VXB3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm00IDEyIDEuNDEgMS40MUwxMSA3LjgzVjIwaDJWNy44M2w1LjU4IDUuNTlMMjAgMTJsLTgtOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lzdGFudERpcmVjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBIOWMtLjYgMC0xIC40LTEgMXY0aDJ2LTNoNHYyLjVsMy41LTMuNUwxNCA3LjVWMTB6bS0yLTlDNS45IDEgMSA1LjkgMSAxMnM0LjkgMTEgMTEgMTEgMTEtNC45IDExLTExUzE4LjEgMSAxMiAxem03LjczIDExLjU4LTcuMTkgNy4yMmMtLjM1LjI3LS43OS4yNy0xLjE1IDBMNC4yIDEyLjU4YS45MzIuOTMyIDAgMCAxIDAtMS4xNmw3LjE5LTcuMjJjLjM1LS4yNy43OS0uMjcgMS4xNSAwbDcuMTkgNy4yMmMuMzYuMjcuMzYuOCAwIDEuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lzdGFudE5hdmlnYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDFDNS45MyAxIDEgNS45MyAxIDEyczQuOTMgMTEgMTEgMTEgMTEtNC45MyAxMS0xMVMxOC4wNyAxIDEyIDF6bTMuNTcgMTZMMTIgMTUuNDIgOC40MyAxN2wtLjM3LS4zN0wxMiA3bDMuOTUgOS42My0uMzguMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbXBhaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTF2Mmg0di0yaC00em0tMiA2LjYxYy45Ni43MSAyLjIxIDEuNjUgMy4yIDIuMzkuNC0uNTMuOC0xLjA3IDEuMi0xLjYtLjk5LS43NC0yLjI0LTEuNjgtMy4yLTIuNC0uNC41NC0uOCAxLjA4LTEuMiAxLjYxek0yMC40IDUuNmMtLjQtLjUzLS44LTEuMDctMS4yLTEuNi0uOTkuNzQtMi4yNCAxLjY4LTMuMiAyLjQuNC41My44IDEuMDcgMS4yIDEuNi45Ni0uNzIgMi4yMS0xLjY1IDMuMi0yLjR6TTQgOWMtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDF2NGgydi00aDFsNSAzVjZMOCA5SDR6bTExLjUgM2MwLTEuMzMtLjU4LTIuNTMtMS41LTMuMzV2Ni42OWMuOTItLjgxIDEuNS0yLjAxIDEuNS0zLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW5jZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem01IDEzLjU5TDE1LjU5IDE3IDEyIDEzLjQxIDguNDEgMTcgNyAxNS41OSAxMC41OSAxMiA3IDguNDEgOC40MSA3IDEyIDEwLjU5IDE1LjU5IDcgMTcgOC40MSAxMy40MSAxMiAxNyAxNS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2LjE3IDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS40MSA3LjQxIDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxTDEwLjgzIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGV2cm9uUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2IDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2LjQxIDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvdWJsZUFycm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSA1SDExbDUgNy01IDdoNC41bDUtN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDVINGw1IDctNSA3aDQuNWw1LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSA1LTEuNDEgMS40MUwxOC4xNyAxMUgydjJoMTYuMTdsLTQuNTkgNC41OUwxNSAxOWw3LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBhbmRDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxMy41TDcuNSAxMWwxLjQyLTEuNDFMMTIgMTIuNjdsMy4wOC0zLjA4TDE2LjUgMTEgMTIgMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwYW5kTGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDgtNiA2IDEuNDEgMS40MUwxMiAxMC44M2w0LjU5IDQuNThMMTggMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cGFuZE1vcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41OSA4LjU5IDEyIDEzLjE3IDcuNDEgOC41OSA2IDEwbDYgNiA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcnN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNDEgMTYuNTkgMTMuODIgMTJsNC41OS00LjU5TDE3IDZsLTYgNiA2IDZ6TTYgNmgydjEySDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHYyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRnVsbHNjcmVlbkV4aXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE2aDN2M2gydi01SDV2MnptMy04SDV2Mmg1VjVIOHYzem02IDExaDJ2LTNoM3YtMmgtNXY1em0yLTExVjVoLTJ2NWg1VjhoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZ1bGxzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE0SDV2NWg1di0ySDd2LTN6bS0yLTRoMlY3aDNWNUg1djV6bTEyIDdoLTN2Mmg1di01aC0ydjN6TTE0IDV2MmgzdjNoMlY1aC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb21lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTF2MTBoNXYtNmg0djZoNVYxMUw4IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDN2MS45N2w3IDVWMTFoMnYyaC0ydjJoMnYyaC0ydjRoNlYzSDEwem05IDZoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhc3RQYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjU5IDcuNDEgMTAuMTggMTJsLTQuNTkgNC41OUw3IDE4bDYtNi02LTZ6TTE2IDZoMnYxMmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVnZW5kVG9nZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTVINHYtMmgxNnYyem0wIDJINHYyaDE2di0yem0tNS02IDUtMy41NVY1bC01IDMuNTVMMTAgNSA0IDguNjZWMTFsNS45Mi0zLjYxTDE1IDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXBzSG9tZVdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTF2MTBoNXYtNmg0djZoNVYxMUw4IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDN2MS45N2w3IDVWMTFoMnYyaC0ydjJoMnYyaC0ydjRoNlYzSDEwem05IDZoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lbnVPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE4aDEzdi0ySDN2MnptMC01aDEwdi0ySDN2MnptMC03djJoMTNWNkgzem0xOCA5LjU5TDE3LjQyIDEyIDIxIDguNDEgMTkuNTkgN2wtNSA1IDUgNUwyMSAxNS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVudSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMThoMTh2LTJIM3Yyem0wLTVoMTh2LTJIM3Yyem0wLTd2MmgxOFY2SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vcmVIb3JpeiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMiAwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTYgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vcmVWZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTAgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vcnRoRWFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNXYyaDYuNTlMNCAxOC41OSA1LjQxIDIwIDE3IDguNDFWMTVoMlY1SDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vcnRoV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTVoMlY4LjQxTDE4LjU5IDIwIDIwIDE4LjU5IDguNDEgN0gxNVY1SDV2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vcnRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNSA5IDEuNDEgMS40MUwxMSA1LjgzVjIyaDJWNS44M2w0LjU5IDQuNTlMMTkgOWwtNy03LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT2ZmbGluZVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNiAxMC4yNnYxLjMxTDE3IDkuMzMgMTQuNiA3LjF2MS4yOGMtMi4zMy4zMi0zLjI2IDEuOTItMy42IDMuNTIuODMtMS4xMyAxLjkzLTEuNjQgMy42LTEuNjR6TTE2IDIzSDZjLTEuMSAwLTItLjktMi0yVjVoMnYxNmgxMHYyem0yLTIyaC04Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNWgtOFY0aDh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBheW1lbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTRWNmMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6bS05LTFjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0xMy02djExYzAgMS4xLS45IDItMiAySDR2LTJoMTdWN2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaXZvdFRhYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA4aDExVjVjMC0xLjEtLjktMi0yLTJoLTl2NXpNMyA4aDVWM0g1Yy0xLjEgMC0yIC45LTIgMnYzem0yIDEzaDNWMTBIM3Y5YzAgMS4xLjkgMiAyIDJ6bTggMS00LTQgNC00em0xLTkgNC00IDQgNHpNMTQuNTggMTlIMTN2LTJoMS41OGMxLjMzIDAgMi40Mi0xLjA4IDIuNDItMi40MlYxM2gydjEuNThjMCAyLjQ0LTEuOTggNC40Mi00LjQyIDQuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlZnJlc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42NSA2LjM1QTcuOTU4IDcuOTU4IDAgMCAwIDEyIDRjLTQuNDIgMC03Ljk5IDMuNTgtNy45OSA4czMuNTcgOCA3Ljk5IDhjMy43MyAwIDYuODQtMi41NSA3LjczLTZoLTIuMDhBNS45OSA1Ljk5IDAgMCAxIDEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU291dGhFYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWgtMnY2LjU5TDUuNDEgNCA0IDUuNDEgMTUuNTkgMTdIOXYyaDEwVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNvdXRoV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE5di0ySDguNDFMMjAgNS40MSAxOC41OSA0IDcgMTUuNTlWOUg1djEwaDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb3V0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDE1LTEuNDEtMS40MUwxMyAxOC4xN1YyaC0ydjE2LjE3bC00LjU5LTQuNTlMNSAxNWw3IDcgNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdWJkaXJlY3RvcnlBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDkgMS40MiAxLjQyTDguODMgMTRIMThWNGgydjEySDguODNsMy41OSAzLjU4TDExIDIxbC02LTYgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdWJkaXJlY3RvcnlBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxNS02IDYtMS40Mi0xLjQyTDE1LjE3IDE2SDRWNGgydjEwaDkuMTdsLTMuNTktMy41OEwxMyA5bDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpdGNoTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA4LjYydjYuNzZMNS4xMiAxMiA4LjUgOC42Mk0xMCA1bC03IDcgNyA3VjV6bTQgMHYxNGw3LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2l0Y2hSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE1LjM4VjguNjJMMTguODggMTJsLTMuMzggMy4zOE0xNCAxOWw3LTctNy03djE0em0tNCAwVjVsLTcgNyA3IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVuZm9sZExlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQxIDE4LjU5IDguODMgMjAgMTIgMTYuODMgMTUuMTcgMjBsMS40MS0xLjQxTDEyIDE0bC00LjU5IDQuNTl6bTkuMTgtMTMuMThMMTUuMTcgNCAxMiA3LjE3IDguODMgNCA3LjQxIDUuNDEgMTIgMTBsNC41OS00LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbmZvbGRNb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS44MyAxNS4xNyA5bDEuNDEtMS40MUwxMiAzIDcuNDEgNy41OSA4LjgzIDkgMTIgNS44M3ptMCAxMi4zNEw4LjgzIDE1bC0xLjQxIDEuNDFMMTIgMjFsNC41OS00LjU5TDE1LjE3IDE1IDEyIDE4LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXRlcmZhbGxDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoM3YxNmgtM3pNMyAxM2gzdjdIM3ptMTEtOWgzdjNoLTN6bS00IDFoM3Y0aC0zem0tMyA1aDN2NEg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOSAxOSAxLjQxLTEuNDFMNS44MyAxM0gyMnYtMkg1LjgzbDQuNTktNC41OUw5IDVsLTcgNyA3IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY291bnRUcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTFWM2gtN3YzSDlWM0gydjhoN1Y4aDJ2MTBoNHYzaDd2LThoLTd2M2gtMlY4aDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNmMwIDMuODcgMy4xMyA3IDcgN3M3LTMuMTMgNy03di00SDV2NHpNMTYuMTIgNC4zN2wyLjEtMi4xLS44Mi0uODMtMi4zIDIuMzFDMTQuMTYgMy4yOCAxMy4xMiAzIDEyIDNzLTIuMTYuMjgtMy4wOS43NUw2LjYgMS40NGwtLjgyLjgzIDIuMSAyLjFDNi4xNCA1LjY0IDUgNy42OCA1IDEwdjFoMTR2LTFjMC0yLjMyLTEuMTQtNC4zNi0yLjg4LTUuNjN6TTkgOWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem02IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhMS4wMiAxLjAyIDAgMCAwLTEuMDIuMjRsLTIuMiAyLjJhMTUuMDQ1IDE1LjA0NSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMjFhLjk2Ljk2IDAgMCAwIC4yNS0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek0yMSA2aC0zVjNoLTJ2M2gtM3YyaDN2M2gyVjhoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlybGluZVNlYXRGbGF0QW5nbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuMjUgMTQuMjktLjY5IDEuODlMOS4yIDExLjcxbDIuMDgtNS42NiA4LjU2IDMuMDlhNCA0IDAgMCAxIDIuNDEgNS4xNXpNMS41IDEyLjE0IDggMTQuNDhWMTloOHYtMS42M0wyMC41MiAxOWwuNjktMS44OS0xOS4wMi02Ljg2LS42OSAxLjg5em01LjgtMS45NGEzLjAxIDMuMDEgMCAwIDAgMS40MS00QTMuMDA1IDMuMDA1IDAgMCAwIDQuNyA0LjhhMi45OSAyLjk5IDAgMCAwLTEuNCA0IDIuOTkgMi45OSAwIDAgMCA0IDEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlybGluZVNlYXRGbGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTF2Mkg5VjdoOWMyLjIxIDAgNCAxLjc5IDQgNHpNMiAxNHYyaDZ2Mmg4di0yaDZ2LTJIMnptNS4xNC0xLjlhMyAzIDAgMCAwLS4wNC00LjI0IDMgMyAwIDAgMC00LjI0LjA0IDMgMyAwIDAgMCAuMDQgNC4yNCAzIDMgMCAwIDAgNC4yNC0uMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0SW5kaXZpZHVhbFN1aXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDEzYzEuNjUgMCAzLTEuMzUgMy0zUzguNjUgNyA3IDdzLTMgMS4zNS0zIDMgMS4zNSAzIDMgM3ptMTItNmgtOHY3SDNWN0gxdjEwaDIydi02YzAtMi4yMS0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJsaW5lU2VhdExlZ3Jvb21FeHRyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTJWM0gydjljMCAyLjc2IDIuMjQgNSA1IDVoNnYtMkg3Yy0xLjY2IDAtMy0xLjM0LTMtM3ptMTguODMgNS4yNGMtLjM4LS43Mi0xLjI5LS45Ny0yLjAzLS42M2wtMS4wOS41LTMuNDEtNi45OGEyLjAxIDIuMDEgMCAwIDAtMS43OS0xLjEyTDExIDlWM0g1djhjMCAxLjY2IDEuMzQgMyAzIDNoN2wzLjQxIDcgMy43Mi0xLjdjLjc3LS4zNiAxLjEtMS4zLjctMi4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlybGluZVNlYXRMZWdyb29tTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxMlYzSDN2OWMwIDIuNzYgMi4yNCA1IDUgNWg2di0ySDhjLTEuNjYgMC0zLTEuMzQtMy0zem0xNS41IDZIMTl2LTdjMC0xLjEtLjktMi0yLTJoLTVWM0g2djhjMCAxLjY1IDEuMzUgMyAzIDNoN3Y3aDQuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlybGluZVNlYXRMZWdyb29tUmVkdWNlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk3IDE5LjJjLjE4Ljk2LS41NSAxLjgtMS40NyAxLjhIMTR2LTNsMS00SDljLTEuNjUgMC0zLTEuMzUtMy0zVjNoNnY2aDVjMS4xIDAgMiAuOSAyIDJsLTIgN2gxLjQ0Yy43MyAwIDEuMzkuNDkgMS41MyAxLjJ6TTUgMTJWM0gzdjljMCAyLjc2IDIuMjQgNSA1IDVoNHYtMkg4Yy0xLjY2IDAtMy0xLjM0LTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlybGluZVNlYXRSZWNsaW5lRXh0cmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjM1IDUuNjRjLS45LS42NC0xLjEyLTEuODgtLjQ5LTIuNzkuNjMtLjkgMS44OC0xLjEyIDIuNzktLjQ5LjkuNjQgMS4xMiAxLjg4LjQ5IDIuNzktLjY0LjktMS44OCAxLjEyLTIuNzkuNDl6TTE2IDE5SDguOTNjLTEuNDggMC0yLjc0LTEuMDgtMi45Ni0yLjU0TDQgN0gybDEuOTkgOS43NkE1LjAxIDUuMDEgMCAwIDAgOC45NCAyMUgxNnYtMnptLjIzLTRoLTQuODhsLTEuMDMtNC4xYzEuNTguODkgMy4yOCAxLjU0IDUuMTUgMS4yMlY5Ljk5Yy0xLjYzLjMxLTMuNDQtLjI3LTQuNjktMS4yNUw5LjE0IDcuNDdjLS4yMy0uMTgtLjQ5LS4zLS43Ni0uMzhhMi4yMSAyLjIxIDAgMCAwLS45OS0uMDZoLS4wMmEyLjI2OCAyLjI2OCAwIDAgMC0xLjg0IDIuNjFsMS4zNSA1LjkyQTMuMDA4IDMuMDA4IDAgMCAwIDkuODMgMThoNi44NWwzLjgyIDMgMS41LTEuNS01Ljc3LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlybGluZVNlYXRSZWNsaW5lTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41OSA1LjQxYy0uNzgtLjc4LS43OC0yLjA1IDAtMi44My43OC0uNzggMi4wNS0uNzggMi44MyAwIC43OC43OC43OCAyLjA1IDAgMi44My0uNzkuNzktMi4wNS43OS0yLjgzIDB6TTYgMTZWN0g0djljMCAyLjc2IDIuMjQgNSA1IDVoNnYtMkg5Yy0xLjY2IDAtMy0xLjM0LTMtM3ptMTQgNC4wN0wxNC45MyAxNUgxMS41di0zLjY4YzEuNCAxLjE1IDMuNiAyLjE2IDUuNSAyLjE2di0yLjE2Yy0xLjY2LjAyLTMuNjEtLjg3LTQuNjctMi4wNGwtMS40LTEuNTVjLS4xOS0uMjEtLjQzLS4zOC0uNjktLjUtLjI5LS4xNC0uNjItLjIzLS45Ni0uMjNoLS4wM0M4LjAxIDcgNyA4LjAxIDcgOS4yNVYxNWMwIDEuNjYgMS4zNCAzIDMgM2g1LjA3bDMuNSAzLjVMMjAgMjAuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsdWV0b290aEF1ZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMjQgMTIuMDEgMi4zMiAyLjMyYy4yOC0uNzIuNDQtMS41MS40NC0yLjMzIDAtLjgyLS4xNi0xLjU5LS40My0yLjMxbC0yLjMzIDIuMzJ6bTUuMjktNS4zLTEuMjYgMS4yNmMuNjMgMS4yMS45OCAyLjU3Ljk4IDQuMDJzLS4zNiAyLjgyLS45OCA0LjAybDEuMiAxLjJhOS45MzYgOS45MzYgMCAwIDAgMS41NC01LjMxYy0uMDEtMS44OS0uNTUtMy42Ny0xLjQ4LTUuMTl6bS0zLjgyIDFMMTAgMkg5djcuNTlMNC40MSA1IDMgNi40MSA4LjU5IDEyIDMgMTcuNTkgNC40MSAxOSA5IDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMSA1LjgzbDEuODggMS44OEwxMSA5LjU5VjUuODN6bTEuODggMTAuNDZMMTEgMTguMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb25maXJtYXRpb25OdW1iZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMFY2YTIgMiAwIDAgMC0yLTJINGMtMS4xIDAtMS45OS44OS0xLjk5IDJ2NGMxLjEgMCAxLjk5LjkgMS45OSAycy0uODkgMi0yIDJ2NGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi00Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMnptLTkgNy41aC0ydi0yaDJ2MnptMC00LjVoLTJ2LTJoMnYyem0wLTQuNWgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcmVjdGlvbnNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi44MyAxMGguNjdWNy41TDE3IDExbC0xLjU5IDEuNTlMMTguODMgMTZsMi41OS0yLjU5Yy43OC0uNzguNzgtMi4wNSAwLTIuODNsLTcuOTktOGMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBMOCA1LjE3IDEyLjgzIDEwek0yLjgxIDIuODEgMS4zOSA0LjIyIDUuMTcgOGwtMi41OSAyLjU5Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDguMDEgOGMuNzguNzggMi4wNS43OCAyLjgzIDBMMTYgMTguODNsMy43OCAzLjc4IDEuNDEtMS40MUwyLjgxIDIuODF6TTEwIDE1SDh2LTRjMC0uMDUuMDItLjA5LjAzLS4xNEwxMCAxMi44M1YxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlzY0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNmgydi0yaC0ydjJ6bTAtOXY1aDJWN2gtMnpNMTAgNGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04LTMuNTgtOC04LTh6bTAgMTBjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb0Rpc3R1cmJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04IDAtMS44NS42My0zLjU1IDEuNjktNC45TDE2LjkgMTguMzFBNy45MDIgNy45MDIgMCAwIDEgMTIgMjB6bTYuMzEtMy4xTDcuMSA1LjY5QTcuOTAyIDcuOTAyIDAgMCAxIDEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjg1LS42MyAzLjU1LTEuNjkgNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb0Rpc3R1cmJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExdjJoLTEuMTdsNC41MSA0LjUxQTkuOTEgOS45MSAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0yLjA0IDAtMy45My42MS01LjUxIDEuNjZMMTMuODMgMTFIMTd6TTEuMzkgNC4yMmwyLjI3IDIuMjdBOS45MSA5LjkxIDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4wNCAwIDMuOTMtLjYxIDUuNTEtMS42NmwyLjI3IDIuMjcgMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJ6TTcgMTFoMS4xN2wyIDJIN3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9EaXN0dXJiT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFIN3YtMmgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb0Rpc3R1cmIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyek00IDEyYzAtNC40IDMuNi04IDgtOCAxLjggMCAzLjUuNiA0LjkgMS43TDUuNyAxNi45QzQuNiAxNS41IDQgMTMuOCA0IDEyem04IDhjLTEuOCAwLTMuNS0uNi00LjktMS43TDE4LjMgNy4xQzE5LjQgOC41IDIwIDEwLjIgMjAgMTJjMCA0LjQtMy42IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdERpc3R1cmJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS02MTgtMTQ2NEg3ODJ2MzYwMEgtNjE4ek0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6TTQgMTJjMC00LjQgMy42LTggOC04IDEuOCAwIDMuNS42IDQuOSAxLjdMNS43IDE2LjlDNC42IDE1LjUgNCAxMy44IDQgMTJ6bTggOGMtMS44IDAtMy41LS42LTQuOS0xLjdMMTguMyA3LjFDMTkuNCA4LjUgMjAgMTAuMiAyMCAxMmMwIDQuNC0zLjYgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvTm90RGlzdHVyYk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTF2MmgtMS40Nmw0LjY4IDQuNjhBOS45MiA5LjkyIDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTIuMTEgMC00LjA3LjY2LTUuNjggMS43OEwxMy41NCAxMUgxN3pNMi4yNyAyLjI3IDEgMy41NGwyLjc4IDIuNzhBOS45MiA5LjkyIDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4xMSAwIDQuMDctLjY2IDUuNjgtMS43OEwyMC40NiAyM2wxLjI3LTEuMjdMMTEgMTEgMi4yNyAyLjI3ek03IDEzdi0yaDEuNDZsMiAySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvTm90RGlzdHVyYk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9Ob3REaXN0dXJiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LTggMC0xLjg1LjYzLTMuNTUgMS42OS00LjlMMTYuOSAxOC4zMUE3LjkwMiA3LjkwMiAwIDAgMSAxMiAyMHptNi4zMS0zLjFMNy4xIDUuNjlBNy45MDIgNy45MDIgMCAwIDEgMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuODUtLjYzIDMuNTUtMS42OSA0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERyaXZlRXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgNS4wMUMxOC43MiA0LjQyIDE4LjE2IDQgMTcuNSA0aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxMXY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi41IDE1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyAxMiA2LjUgMTJzMS41LjY3IDEuNSAxLjVTNy4zMyAxNSA2LjUgMTV6bTExIDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01IDEwbDEuNS00LjVoMTFMMTkgMTBINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW5oYW5jZWRFbmNyeXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDhoLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2djJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnpNOC45IDZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFzMy4xIDEuMzkgMy4xIDMuMXYySDguOVY2ek0xNiAxNmgtM3YzaC0ydi0zSDh2LTJoM3YtM2gydjNoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdmVudEF2YWlsYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUzIDExLjA2IDE1LjQ3IDEwbC00Ljg4IDQuODgtMi4xMi0yLjEyLTEuMDYgMS4wNkwxMC41OSAxN2w1Ljk0LTUuOTR6TTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdmVudEJ1c3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05LjMxIDE3IDIuNDQtMi40NEwxNC4xOSAxN2wxLjA2LTEuMDYtMi40NC0yLjQ0IDIuNDQtMi40NEwxNC4xOSAxMGwtMi40NCAyLjQ0TDkuMzEgMTBsLTEuMDYgMS4wNiAyLjQ0IDIuNDQtMi40NCAyLjQ0TDkuMzEgMTd6TTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdmVudE5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMEg3djJoMTB2LTJ6bTItN2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjhoMTR2MTF6bS01LTVIN3YyaDd2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbGRlclNwZWNpYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yLjA2IDExTDE1IDE1LjI4IDEyLjA2IDE3bC43OC0zLjMzLTIuNTktMi4yNCAzLjQxLS4yOUwxNSA4bDEuMzQgMy4xNCAzLjQxLjI5LTIuNTkgMi4yNC43OCAzLjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbWFnZXNlYXJjaFJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJ2Nkg2VjZINHY0aDEwdjVoMnY4aC02di04aDJ2LTNIMlY0aDRWMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaXZlVHYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZoLTcuNTlsMy4yOS0zLjI5TDE2IDJsLTQgNC00LTQtLjcxLjcxTDEwLjU5IDZIM2EyIDIgMCAwIDAtMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWOGEyIDIgMCAwIDAtMi0yem0wIDE0SDNWOGgxOHYxMnpNOSAxMHY4bDctNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW1zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTUgMTRsMy41LTQuNSAyLjUgMy4wMUwxNC41IDhsNC41IDZINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIN2MtLjY5IDAtMS4yMy4zNS0xLjU5Ljg4TDAgMTJsNS40MSA4LjExYy4zNi41My45Ny44OSAxLjY2Ljg5SDIyYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMTMuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5ldHdvcmtDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjkgNWMtLjE3IDAtLjMyLjA5LS40MS4yM2wtLjA3LjE1LTUuMTggMTEuNjVjLS4xNi4yOS0uMjYuNjEtLjI2Ljk2IDAgMS4xMS45IDIuMDEgMi4wMSAyLjAxLjk2IDAgMS43Ny0uNjggMS45Ni0xLjU5bC4wMS0uMDNMMTYuNCA1LjVjMC0uMjgtLjIyLS41LS41LS41ek0xIDlsMiAyYzIuODgtMi44OCA2Ljc5LTQuMDggMTAuNTMtMy42MmwxLjE5LTIuNjhDOS44OSAzLjg0IDQuNzQgNS4yNyAxIDl6bTIwIDIgMi0yYTE1LjM2NyAxNS4zNjcgMCAwIDAtNS41OS0zLjU3bC0uNTMgMi44MmMxLjUuNjIgMi45IDEuNTMgNC4xMiAyLjc1em0tNCA0IDItMmMtLjgtLjgtMS43LTEuNDItMi42Ni0xLjg5bC0uNTUgMi45MmMuNDIuMjcuODMuNTkgMS4yMS45N3pNNSAxM2wyIDJhNy4xIDcuMSAwIDAgMSA0LjAzLTJsMS4yOC0yLjg4Yy0yLjYzLS4wOC01LjMuODctNy4zMSAyLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXR3b3JrTG9ja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgMTBjLjE3IDAgLjMzLjAzLjUuMDVWMUwxIDIwaDEzdi0zYzAtLjg5LjM5LTEuNjggMS0yLjIzdi0uMjdjMC0yLjQ4IDIuMDItNC41IDQuNS00LjV6bTIuNSA2di0xLjVhMi41IDIuNSAwIDAgMC01IDBWMTZjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMXptLTEgMGgtM3YtMS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb0VuY3J5cHRpb25HbWFpbGVycm9ycmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMXMzLjEgMS4zOSAzLjEgMy4xdjJoLTQuMjdMMjAgMTcuMTdWMTBjMC0xLjEtLjktMi0yLTJoLTFWNmMwLTIuNzYtMi4yNC01LTUtNS0yLjIxIDAtNC4wNyAxLjQ1LTQuNzMgMy40NEw4LjkgNi4wN1Y2ek0yLjEgMi4xLjY5IDMuNTEgNS4zIDguMTNDNC41NSA4LjQyIDQgOS4xNSA0IDEwdjEwYzAgMS4xLjkgMiAyIDJoMTJjLjM0IDAgLjY1LS4wOS45My0uMjRsMS41NiAxLjU2IDEuNDEtMS40MUwyLjEgMi4xek0xMiAxN2MtMS4xIDAtMi0uOS0yLTIgMC0uNTkuMjctMS4xMi42OC0xLjQ5bDIuODEgMi44MWMtLjM3LjQxLS45LjY4LTEuNDkuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vRW5jcnlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAyMS43OCA0LjIyIDUgMyA2LjIybDIuMDQgMi4wNEM0LjQyIDguNiA0IDkuMjUgNCAxMHYxMGMwIDEuMS45IDIgMiAyaDEyYy4yMyAwIC40NS0uMDUuNjYtLjEyTDE5Ljc4IDIzIDIxIDIxLjc4ek04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMXMzLjEgMS4zOSAzLjEgMy4xdjJIOS42NkwyMCAxOC4zNFYxMGMwLTEuMS0uOS0yLTItMmgtMVY2YzAtMi43Ni0yLjI0LTUtNS01LTIuNTYgMC00LjY0IDEuOTMtNC45NCA0LjRMOC45IDcuMjRWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT25kZW1hbmRWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNXYyaDh2LTJoNWMxLjEgMCAxLjk5LS45IDEuOTktMkwyMyA1YTIgMiAwIDAgMC0yLTJ6bTAgMTRIM1Y1aDE4djEyem0tNS02LTcgNFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25hbFZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNXYyaDh2LTJoNWMxLjEgMCAxLjk5LS45IDEuOTktMkwyMyA1YTIgMiAwIDAgMC0yLTJ6bTAgMTRIM1Y1aDE4djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZUJsdWV0b290aFNwZWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC43MSA5LjUgMTcgNy4yMVYxMWguNWwyLjg1LTIuODVMMTguMjEgNmwyLjE1LTIuMTVMMTcuNSAxSDE3djMuNzlMMTQuNzEgMi41bC0uNzEuNzFMMTYuNzkgNiAxNCA4Ljc5bC43MS43MXpNMTggMi45MWwuOTQuOTQtLjk0Ljk0VjIuOTF6bTAgNC4zLjk0Ljk0LS45NC45NFY3LjIxem0yIDguMjljLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVDYWxsYmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNjIgMTAuNzljMS40NCAyLjgzIDMuNzYgNS4xNCA2LjU5IDYuNTlsMi4yLTIuMmMuMjctLjI3LjY3LS4zNiAxLjAyLS4yNCAxLjEyLjM3IDIuMzMuNTcgMy41Ny41Ny41NSAwIDEgLjQ1IDEgMVYyMGMwIC41NS0uNDUgMS0xIDEtOS4zOSAwLTE3LTcuNjEtMTctMTcgMC0uNTUuNDUtMSAxLTFoMy41Yy41NSAwIDEgLjQ1IDEgMSAwIDEuMjUuMiAyLjQ1LjU3IDMuNTcuMTEuMzUuMDMuNzQtLjI1IDEuMDJsLTIuMiAyLjJ6bTEzLjU0LTcuMS0uNzEtLjdMMTMgOS4yOVY1aC0xdjZoNnYtMWgtNC4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVGb3J3YXJkZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxMSA1LTUtNS01djNoLTR2NGg0djN6bTIgNC41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2ExLjAyIDEuMDIgMCAwIDAtMS4wMi4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lSW5UYWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhMS4wMiAxLjAyIDAgMCAwLTEuMDIuMjRsLTIuMiAyLjJhMTUuMDQ1IDE1LjA0NSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMjFhLjk2Ljk2IDAgMCAwIC4yNS0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek0xOSAxMmgyYTkgOSAwIDAgMC05LTl2MmMzLjg3IDAgNyAzLjEzIDcgN3ptLTQgMGgyYzAtMi43Ni0yLjI0LTUtNS01djJjMS42NiAwIDMgMS4zNCAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lTG9ja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1VjRjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFoLTF2NWg2VjVoLTF6bS0xIDBoLTJWNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNjMgMTQuNC0yLjUyIDIuNWMtMi41LTEuNDMtNC41Ny0zLjUtNi02bDIuNS0yLjUyYy4yMy0uMjQuMzMtLjU3LjI3LS45TDkuMTMgMy44Yy0uMDktLjQ2LS41LS44LS45OC0uOEg0Yy0uNTYgMC0xLjAzLjQ3LTEgMS4wMy4xNyAyLjg5IDEuMDUgNS42IDIuNDMgNy45NyAxLjU4IDIuNzMgMy44NSA0Ljk5IDYuNTcgNi41NyAyLjM3IDEuMzcgNS4wOCAyLjI2IDcuOTcgMi40My41Ni4wMyAxLjAzLS40NCAxLjAzLTF2LTQuMTVjMC0uNDgtLjM0LS44OS0uOC0uOThsLTMuNjctLjczYS45ODUuOTg1IDAgMCAwLS45LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZU1pc3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA1LjUgMTIgMTFsNy03LTEtMS02IDYtNC41LTQuNUgxMVYzSDV2NmgxLjVWNS41em0xNy4yMSAxMS4xN0ExNi45NzEgMTYuOTcxIDAgMCAwIDEyIDEyQzcuNDYgMTIgMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzFzLjExLjUzLjI5LjcxbDIuNDggMi40OGMuMTguMTguNDMuMjkuNzEuMjkuMjcgMCAuNTItLjExLjctLjI4Ljc5LS43NCAxLjY5LTEuMzYgMi42Ni0xLjg1LjMzLS4xNi41Ni0uNS41Ni0uOXYtMy4xYzEuNDUtLjQ4IDMtLjczIDQuNi0uNzMgMS42IDAgMy4xNS4yNSA0LjYuNzJ2My4xYzAgLjM5LjIzLjc0LjU2LjkuOTguNDkgMS44NyAxLjEyIDIuNjcgMS44NS4xOC4xOC40My4yOC43LjI4LjI4IDAgLjUzLS4xMS43MS0uMjlsMi40OC0yLjQ4Yy4xOC0uMTguMjktLjQzLjI5LS43MXMtLjEyLS41Mi0uMy0uN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzaC0ydjdoMlYzem0zIDEyLjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTkgM3Y3aDJWM2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG93ZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE0LjQ5VjljMC0xLTEuMDEtMi4wMS0yLTJWM2gtMnY0aC00VjNIOHYyLjQ4bDkuNTEgOS41LjQ5LS40OXptLTEuNzYgMS43N0w3LjIgNy4ybC0uMDEuMDFMMy45OCA0IDIuNzEgNS4yNWwzLjM2IDMuMzZDNi4wNCA4Ljc0IDYgOC44NyA2IDl2NS40OEw5LjUgMTh2M2g1di0zbC40OC0uNDhMMTkuNDUgMjJsMS4yNi0xLjI4LTQuNDctNC40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4wMSA3IDE2IDNoLTJ2NGgtNFYzSDh2NGgtLjAxQzcgNi45OSA2IDcuOTkgNiA4Ljk5djUuNDlMOS41IDE4djNoNXYtM2wzLjUtMy41MXYtNS41YzAtMS0xLTItMS45OS0xLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcmlvcml0eUhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTlcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgM2g0djEyaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSdW5uaW5nV2l0aEVycm9ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEwdjhoLTJ2LThoMnptLTIgMTB2Mmgydi0yaC0yem0tMi0yLjcxQTcuOTkgNy45OSAwIDAgMSAxMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOHY5bDcuNTUtNy41NUE5Ljk2NSA5Ljk2NSAwIDAgMCAxMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwYzIuMjUgMCA0LjMzLS43NCA2LTJ2LTIuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNkQ2FyZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQuMDIgOCA0IDIwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTUgMTVoLTJ2LTJoMnYyem0wLTRoLTJWOGgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNkQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNC4wMiA4IDQgMjBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNiA2aC0yVjRoMnY0em0zIDBoLTJWNGgydjR6bTMgMGgtMlY0aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2ltQ2FyZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0LjAyIDggNCAyMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS01IDE1aC0ydi0yaDJ2MnptMC00aC0yVjhoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbXNGYWlsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgMTJoLTJ2LTJoMnYyem0wLTRoLTJWNmgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek05IDExSDdWOWgydjJ6bTQgMGgtMlY5aDJ2MnptNCAwaC0yVjloMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdXBwb3J0QWdlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMi4yMkMyMSA2LjczIDE2Ljc0IDMgMTIgM2MtNC42OSAwLTkgMy42NS05IDkuMjgtLjYuMzQtMSAuOTgtMSAxLjcydjJjMCAxLjEuOSAyIDIgMmgxdi02LjFjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgN1YxOWgtOHYyaDhjMS4xIDAgMi0uOSAyLTJ2LTEuMjJjLjU5LS4zMSAxLS45MiAxLTEuNjR2LTIuM2MwLS43LS40MS0xLjMxLTEtMS42MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExLjAzQTYuMDQgNi4wNCAwIDAgMCAxMi4wNSA2Yy0zLjAzIDAtNi4yOSAyLjUxLTYuMDMgNi40NWE4LjA3NSA4LjA3NSAwIDAgMCA0Ljg2LTUuODljMS4zMSAyLjYzIDQgNC40NCA3LjEyIDQuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5bmNEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2LjM1VjQuMjZjLS44LjIxLTEuNTUuNTQtMi4yMy45NmwxLjQ2IDEuNDZjLjI1LS4xMi41LS4yNC43Ny0uMzN6bS03LjE0LS45NCAyLjM2IDIuMzZhNy45MjUgNy45MjUgMCAwIDAgMS4xNCA5Ljg3TDQgMjBoNnYtNmwtMi4yNCAyLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDYgMTJjMC0xIC4yNS0xLjk0LjY4LTIuNzdsOC4wOCA4LjA4Yy0uMjUuMTMtLjUuMjUtLjc3LjM0djIuMDljLjgtLjIxIDEuNTUtLjU0IDIuMjMtLjk2bDIuMzYgMi4zNiAxLjI3LTEuMjdMNC4xNCA0LjE0IDIuODYgNS40MXpNMjAgNGgtNnY2bDIuMjQtMi4yNEE2LjAwMyA2LjAwMyAwIDAgMSAxOCAxMmMwIDEtLjI1IDEuOTQtLjY4IDIuNzdsMS40NiAxLjQ2YTcuOTI1IDcuOTI1IDAgMCAwLTEuMTQtOS44N0wyMCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTeW5jTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDQuMjZ2Mi4wOUM3LjY3IDcuMTggNiA5LjM5IDYgMTJjMCAxLjc3Ljc4IDMuMzQgMiA0LjQ0VjE0aDJ2Nkg0di0yaDIuNzNBNy45NDIgNy45NDIgMCAwIDEgNCAxMmMwLTMuNzMgMi41NS02Ljg1IDYtNy43NHpNMjAgNGgtNnY2aDJWNy41NmMxLjIyIDEuMSAyIDIuNjcgMiA0LjQ0aDJjMC0yLjQtMS4wNi00LjU0LTIuNzMtNkgyMFY0em0wIDEzdi0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5bmNQcm9ibGVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMmMwIDIuMjEuOTEgNC4yIDIuMzYgNS42NEwzIDIwaDZ2LTZsLTIuMjQgMi4yNEE2LjAwMyA2LjAwMyAwIDAgMSA1IDEyYTUuOTkgNS45OSAwIDAgMSA0LTUuNjVWNC4yNkM1LjU1IDUuMTUgMyA4LjI3IDMgMTJ6bTggNWgydi0yaC0ydjJ6TTIxIDRoLTZ2NmwyLjI0LTIuMjRBNi4wMDMgNi4wMDMgMCAwIDEgMTkgMTJhNS45OSA1Ljk5IDAgMCAxLTQgNS42NXYyLjA5YzMuNDUtLjg5IDYtNC4wMSA2LTcuNzQgMC0yLjIxLS45MS00LjItMi4zNi01LjY0TDIxIDR6bS0xMCA5aDJWN2gtMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTeW5jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNFYxTDggNWw0IDRWNmMzLjMxIDAgNiAyLjY5IDYgNiAwIDEuMDEtLjI1IDEuOTctLjcgMi44bDEuNDYgMS40NkE3LjkzIDcuOTMgMCAwIDAgMjAgMTJjMC00LjQyLTMuNTgtOC04LTh6bTAgMTRjLTMuMzEgMC02LTIuNjktNi02IDAtMS4wMS4yNS0xLjk3LjctMi44TDUuMjQgNy43NEE3LjkzIDcuOTMgMCAwIDAgNCAxMmMwIDQuNDIgMy41OCA4IDggOHYzbDQtNC00LTR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3lzdGVtVXBkYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0em0tMS02aC0zVjhoLTJ2NUg4bDQgNCA0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhcEFuZFBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMCA0djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC04djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkyLTExLTExLTExek0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2Ny4zN2MuNjkuMTYgMS4zNi4zNyAyIC42NFY1aDEwdjEzaC0zLjAzYy41MiAxLjI1Ljg0IDIuNTkuOTUgNEgxN2MxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lVG9MZWF2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDUuMDFDMTguNzIgNC40MiAxOC4xNiA0IDE3LjUgNGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTF2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuNSAxNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTIgNi41IDEyczEuNS42NyAxLjUgMS41UzcuMzMgMTUgNi41IDE1em0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNSAxMGwxLjUtNC41aDExTDE5IDEwSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR2T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xIDMuNTQgMS41MyAxLjUzQzEuNjUgNS4yOCAxIDYuMDYgMSA3djEyYzAgMS4xLjkgMiAyIDJoMTUuNDZsMiAyIDEuMjYtMS4yN0wyLjI3IDIuMjcgMSAzLjU0ek0zIDE5VjdoMS40NmwxMiAxMkgzek0yMSA1aC03LjU4bDMuMjktMy4zTDE2IDFsLTQgNC00LTQtLjcuN0wxMC41OCA1SDcuNTJsMiAySDIxdjExLjQ4bDEuNjUgMS42NWMuMjItLjMyLjM1LS43MS4zNS0xLjEzVjdjMC0xLjExLS44OS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlicmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNWgyVjlIMHY2em0zIDJoMlY3SDN2MTB6bTE5LTh2NmgyVjloLTJ6bS0zIDhoMlY3aC0ydjEwek0xNi41IDNoLTlDNi42NyAzIDYgMy42NyA2IDQuNXYxNWMwIC44My42NyAxLjUgMS41IDEuNWg5Yy44MyAwIDEuNS0uNjcgMS41LTEuNXYtMTVjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xNiAxOUg4VjVoOHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9DaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTMgMTEtMi0xLjk5VjEzYzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWN2MwLS41NS40NS0xIDEtMWg2Yy41NSAwIDEgLjQ1IDEgMXYxLjk5TDE3IDd2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9pY2VDaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjUgNWgxLjV2MTBoLTEuNXpNOC41IDdIMTB2Nkg4LjV6TTYgOWgxLjV2Mkg2ek0xNCA3aDEuNXY2SDE0ek0xNi41IDlIMTh2MmgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWcG5Mb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNHYtLjVhMi41IDIuNSAwIDAgMC01IDBWNGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoNWMuNTUgMCAxLS40NSAxLTFWNWMwLS41NS0uNDUtMS0xLTF6bS0uOCAwaC0zLjR2LS41YzAtLjk0Ljc2LTEuNyAxLjctMS43czEuNy43NiAxLjcgMS43VjR6bS0yLjI4IDhjLjA0LjMzLjA4LjY2LjA4IDEgMCAyLjA4LS44IDMuOTctMi4xIDUuMzktLjI2LS44MS0xLTEuMzktMS45LTEuMzloLTF2LTNjMC0uNTUtLjQ1LTEtMS0xSDd2LTJoMmMuNTUgMCAxLS40NSAxLTFWOGgyYzEuMSAwIDItLjkgMi0yVjMuNDZjLS45NS0uMy0xLjk1LS40Ni0zLS40NkM1LjQ4IDMgMSA3LjQ4IDEgMTNzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtLjM0LS4wMi0uNjctLjA1LTFoLTIuMDN6TTEwIDIwLjkzYy0zLjk1LS40OS03LTMuODUtNy03LjkzIDAtLjYyLjA4LTEuMjEuMjEtMS43OUw4IDE2djFjMCAxLjEuOSAyIDIgMnYxLjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDIydi03LjVINFY5YzAtMS4xLjktMiAyLTJoM2MxLjEgMCAyIC45IDIgMnY1LjVIOS41VjIyaC00ek0xOCAyMnYtNmgzbC0yLjU0LTcuNjNBMi4wMSAyLjAxIDAgMCAwIDE2LjU2IDdoLS4xMmEyIDIgMCAwIDAtMS45IDEuMzdMMTIgMTZoM3Y2aDN6TTcuNSA2YzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyem05IDBjMS4xMSAwIDItLjg5IDItMnMtLjg5LTItMi0yLTIgLjg5LTIgMiAuODkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IC4wMWMwLS4wMSAwLS4wMSAwIDBMMCAwdjI0aDI0Vi4wMXpNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuOTkgOUMxOS4xNSA1LjE2IDEzLjggMy43NiA4Ljg0IDQuNzhsMi41MiAyLjUyYzMuNDctLjE3IDYuOTkgMS4wNSA5LjYzIDMuN2wyLTJ6bS00IDRhOS43OTMgOS43OTMgMCAwIDAtNC40OS0yLjU2bDMuNTMgMy41My45Ni0uOTd6TTIgMy4wNSA1LjA3IDYuMUMzLjYgNi44MiAyLjIyIDcuNzggMSA5bDEuOTkgMmMxLjI0LTEuMjQgMi42Ny0yLjE2IDQuMi0yLjc3bDIuMjQgMi4yNEE5LjY4NCA5LjY4NCAwIDAgMCA1IDEzdi4wMUw2Ljk5IDE1YTcuMDQyIDcuMDQyIDAgMCAxIDQuOTItMi4wNkwxOC45OCAyMGwxLjI3LTEuMjZMMy4yOSAxLjc5IDIgMy4wNXpNOSAxN2wzIDMgMy0zYTQuMjM3IDQuMjM3IDAgMCAwLTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEgOSAyIDJjNC45Ny00Ljk3IDEzLjAzLTQuOTcgMTggMGwyLTJDMTYuOTMgMi45MyA3LjA4IDIuOTMgMSA5em04IDggMyAzIDMtM2E0LjIzNyA0LjIzNyAwIDAgMC02IDB6bS00LTQgMiAyYTcuMDc0IDcuMDc0IDAgMCAxIDEwIDBsMi0yQzE1LjE0IDkuMTQgOC44NyA5LjE0IDUgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjVW5pdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExaC00LjE3bDMuMjQtMy4yNC0xLjQxLTEuNDJMMTUgMTFoLTJWOWw0LjY2LTQuNjYtMS40Mi0xLjQxTDEzIDYuMTdWMmgtMnY0LjE3TDcuNzYgMi45MyA2LjM0IDQuMzQgMTEgOXYySDlMNC4zNCA2LjM0IDIuOTMgNy43NiA2LjE3IDExSDJ2Mmg0LjE3bC0zLjI0IDMuMjQgMS40MSAxLjQyTDkgMTNoMnYybC00LjY2IDQuNjYgMS40MiAxLjQxTDExIDE3LjgzVjIyaDJ2LTQuMTdsMy4yNCAzLjI0IDEuNDItMS40MUwxMyAxNXYtMmgybDQuNjYgNC42NiAxLjQxLTEuNDJMMTcuODMgMTNIMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcnBvcnRTaHV0dGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNUgzYTIgMiAwIDAgMC0yIDJ2OWgyYzAgMS42NSAxLjM0IDMgMyAzczMtMS4zNSAzLTNoNS41YzAgMS42NSAxLjM0IDMgMyAzczMtMS4zNSAzLTNIMjN2LTVsLTYtNnpNMyAxMVY3aDR2NEgzem0zIDYuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTctNi41SDlWN2g0djR6bTQuNSA2LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek0xNSAxMVY3aDFsNCA0aC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGxJbmNsdXNpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjYgNi42MmMtMS40NCAwLTIuOC41Ni0zLjc3IDEuNTNMMTIgMTAuNjYgMTAuNDggMTJoLjAxTDcuOCAxNC4zOWMtLjY0LjY0LTEuNDkuOTktMi40Ljk5LTEuODcgMC0zLjM5LTEuNTEtMy4zOS0zLjM4UzMuNTMgOC42MiA1LjQgOC42MmMuOTEgMCAxLjc2LjM1IDIuNDQgMS4wM2wxLjEzIDEgMS41MS0xLjM0TDkuMjIgOC4yQTUuMzcgNS4zNyAwIDAgMCA1LjQgNi42MkMyLjQyIDYuNjIgMCA5LjA0IDAgMTJzMi40MiA1LjM4IDUuNCA1LjM4YzEuNDQgMCAyLjgtLjU2IDMuNzctMS41M2wyLjgzLTIuNS4wMS4wMUwxMy41MiAxMmgtLjAxbDIuNjktMi4zOWMuNjQtLjY0IDEuNDktLjk5IDIuNC0uOTkgMS44NyAwIDMuMzkgMS41MSAzLjM5IDMuMzhzLTEuNTIgMy4zOC0zLjM5IDMuMzhjLS45IDAtMS43Ni0uMzUtMi40NC0xLjAzbC0xLjE0LTEuMDEtMS41MSAxLjM0IDEuMjcgMS4xMmE1LjM4NiA1LjM4NiAwIDAgMCAzLjgyIDEuNTdjMi45OCAwIDUuNC0yLjQxIDUuNC01LjM4cy0yLjQyLTUuMzctNS40LTUuMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwYXJ0bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExVjNIN3Y0SDN2MTRoOHYtNGgydjRoOFYxMWgtNHpNNyAxOUg1di0yaDJ2MnptMC00SDV2LTJoMnYyem0wLTRINVY5aDJ2MnptNCA0SDl2LTJoMnYyem0wLTRIOVY5aDJ2MnptMC00SDlWNWgydjJ6bTQgOGgtMnYtMmgydjJ6bTAtNGgtMlY5aDJ2MnptMC00aC0yVjVoMnYyem00IDEyaC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFieUNoYW5naW5nU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDh2MmgtM0w4LjMxIDguODIgNyAxMi43NVYyMkgzVjEybDEuNTgtNC42M0EyLjAwMyAyLjAwMyAwIDAgMSA3LjMgNi4xOGw0LjE1IDEuODNMMTQgOHpNOCAxYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMSAxOGgxMnYtMkg5djJ6bTEwLjUtM2MuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNMTMgMTJjMC0uNTUtLjQ1LTEtMS0xSDl2MmgydjFjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0ydi0zaC0ydjJoLTJ2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhY2twYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOHYxMmMwIDEuMS0uOSAyLTIgMkg2Yy0xLjEgMC0yLS45LTItMlY4YzAtMS44NiAxLjI4LTMuNDEgMy0zLjg2VjJoM3YyaDRWMmgzdjIuMTRjMS43Mi40NSAzIDIgMyAzLjg2ek02IDEydjJoMTB2Mmgydi00SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhbGNvbnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMHYySDh2LTJoMnptNiAydi0yaC0ydjJoMnptNSAydjhIM3YtOGgxdi00YzAtNC40MiAzLjU4LTggOC04czggMy41OCA4IDh2NGgxek03IDE2SDV2NGgydi00em00IDBIOXY0aDJ2LTR6bTAtMTEuOTJDOC4xNiA0LjU2IDYgNy4wMyA2IDEwdjRoNVY0LjA4ek0xMyAxNGg1di00YzAtMi45Ny0yLjE2LTUuNDQtNS01LjkyVjE0em0yIDJoLTJ2NGgydi00em00IDBoLTJ2NGgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXRodHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiN1wiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxM1Y0LjgzQzIwIDMuMjcgMTguNzMgMiAxNy4xNyAyYy0uNzUgMC0xLjQ3LjMtMiAuODNsLTEuMjUgMS4yNWMtLjE2LS4wNS0uMzMtLjA4LS41MS0uMDgtLjQgMC0uNzcuMTItMS4wOC4zMmwyLjc2IDIuNzZjLjItLjMxLjMyLS42OC4zMi0xLjA4IDAtLjE4LS4wMy0uMzQtLjA3LS41MWwxLjI1LTEuMjVhLjgyOC44MjggMCAwIDEgMS40MS41OVYxM2gtNi44NWMtLjMtLjIxLS41Ny0uNDUtLjgyLS43MmwtMS40LTEuNTVjLS4xOS0uMjEtLjQzLS4zOC0uNjktLjVBMi4yNTEgMi4yNTEgMCAwIDAgNSAxMi4yNVYxM0gydjZjMCAxLjEuOSAyIDIgMiAwIC41NS40NSAxIDEgMWgxNGMuNTUgMCAxLS40NSAxLTEgMS4xIDAgMi0uOSAyLTJ2LTZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlYWNoQWNjZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuMTI3IDE0LjU2IDEuNDMtMS40MyA2LjQ0IDYuNDQzTDE5LjU3IDIxem00LjI5My01LjczIDIuODYtMi44NmMtMy45NS0zLjk1LTEwLjM1LTMuOTYtMTQuMy0uMDIgMy45My0xLjMgOC4zMS0uMjUgMTEuNDQgMi44OHpNNS45NSA1Ljk4Yy0zLjk0IDMuOTUtMy45MyAxMC4zNS4wMiAxNC4zbDIuODYtMi44NkM1LjcgMTQuMjkgNC42NSA5LjkxIDUuOTUgNS45OHptLjAyLS4wMi0uMDEuMDFjLS4zOCAzLjAxIDEuMTcgNi44OCA0LjMgMTAuMDJsNS43My01LjczYy0zLjEzLTMuMTMtNy4wMS00LjY4LTEwLjAyLTQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmVudG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMVY1aDRjMS4xIDAgMiAuOSAyIDJ2NGgtNnptNCA4YzEuMSAwIDItLjkgMi0ydi00aC02djZoNHpNMTQgNXYxNEg0Yy0xLjEgMC0yLS45LTItMlY3YzAtMS4xLjktMiAyLTJoMTB6bS00LjUgN2MwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVuZ2Fsb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQuMiAxNS41bDEuNyAxLjA2TDcgMTQuOFYyMWg0di01aDJ2NWg0di02LjIxbDEuMSAxLjc3IDEuNy0xLjA2TDEyIDN6bTEgMTFoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCdXNpbmVzc0NlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTEwIDVoNHYyaC00em0wIDBoNHYyaC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNnYtMUgzLjAxTDMgMTljMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJ2LTRoLTd2MWgtNHptMTAtOWgtNC4wMVY1bC0yLTJoLTRsLTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjNjMCAxLjExLjg5IDIgMiAyaDZ2LTJoNHYyaDZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptLTYgMGgtNFY1aDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FiaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxYzAgMS42Ni0xLjM0IDMtMyAzLS41NSAwLTEgLjQ1LTEgMUg0YzAtMS42NiAxLjM0LTMgMy0zIC41NSAwIDEtLjQ1IDEtMWgyem0yIDJMNiA3LjU4VjZINHYzLjExTDEgMTEuNGwxLjIxIDEuNTlMNCAxMS42MlYyMWgxNnYtOS4zOGwxLjc5IDEuMzZMMjMgMTEuNCAxMiAzem0xLjk0IDRoLTMuODlMMTIgNS41MiAxMy45NCA3em0tNi41IDJoOS4xMkwxOCAxMC4xdi45SDZ2LS45TDcuNDQgOXpNMTggMTN2Mkg2di0yaDEyek02IDE5di0yaDEydjJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FycGVudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNzMgMTQuMjMgNyAxLjUgMy4xMSA1LjM5bDguMTMgMTEuNjdjLS43OC43OC0uNzggMi4wNSAwIDIuODNsMS40MSAxLjQxYy43OC43OCAyLjA1Ljc4IDIuODMgMGw0LjI0LTQuMjRjLjc5LS43OC43OS0yLjA1LjAxLTIuODN6bS01LjY2IDUuNjUtMS40MS0xLjQxIDQuMjQtNC4yNCAxLjQxIDEuNDEtNC4yNCA0LjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXNpbm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0yMS4wMiAxOWMwIDEuMS0uOSAyLTIgMmgtMTRjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTcuNSAxOGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTUgNy41IDE1czEuNS42NyAxLjUgMS41UzguMzMgMTggNy41IDE4em0wLTlDNi42NyA5IDYgOC4zMyA2IDcuNVM2LjY3IDYgNy41IDYgOSA2LjY3IDkgNy41IDguMzMgOSA3LjUgOXptNC41IDQuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQuNSA0LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0wLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNS42NyA2IDE2LjUgNnMxLjUuNjcgMS41IDEuNVMxNy4zMyA5IDE2LjUgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hhbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgNy41IDcuNSA3LjUtMS40MSAxLjQxTDE1IDE1LjMzVjIwaC00di01SDl2NUg1di00LjY3bC0xLjA5IDEuMDlMMi41IDE1IDEwIDcuNXptMTItMWgtMS4xOWwuNzUtLjc1LS43MS0uNzEtMS40NiAxLjQ2aC0uODl2LS44OWwxLjQ1LTEuNDUtLjcxLS43MS0uNzQuNzRWM2gtMXYxLjE5bC0uNzUtLjc1LS43MS43MSAxLjQ1IDEuNDV2LjloLS44OWwtMS40NS0xLjQ1LS43MS43MS43NS43NUgxNHYxaDEuMTlsLS43NS43NS43MS43MSAxLjQ1LTEuNDVoLjg5di44OWwtMS40NSAxLjQ1LjcxLjcxLjc1LS43NVYxMWgxVjkuODFsLjc1Ljc1LjcxLS43MS0xLjQ2LTEuNDZWNy41aC44OWwxLjQ1IDEuNDUuNzEtLjcxLS43NC0uNzRIMjJ2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYXJnaW5nU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjUgMTEtMyA2di00aC0ybDMtNnY0aDJ6TTcgMWgxMGMxLjEgMCAyIC45IDIgMnYxOGMwIDEuMS0uOSAyLTIgMkg3Yy0xLjEgMC0yLS45LTItMlYzYzAtMS4xLjktMiAyLTJ6bTAgNXYxMmgxMFY2SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrcm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjYgMTguMiAxMyAxMS43NXYtLjkxYTMuNDk2IDMuNDk2IDAgMCAwLS4xOC02Ljc1QTMuNTEgMy41MSAwIDAgMCA4LjUgNy41aDJjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVjMCAuODQtLjY5IDEuNTItMS41MyAxLjUtLjU0LS4wMS0uOTcuNDUtLjk3Ljk5djEuNzZMMi40IDE4LjJjLS43Ny41OC0uMzYgMS44LjYgMS44aDE4Yy45NiAwIDEuMzctMS4yMi42LTEuOHpNNiAxOGw2LTQuNSA2IDQuNUg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGlsZENhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCIxMC41XCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOS41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi45NCAxMi42NmMuMDQtLjIxLjA2LS40My4wNi0uNjZzLS4wMi0uNDUtLjA2LS42NmE0LjAwOCA0LjAwOCAwIDAgMC0yLjgxLTMuMTcgOS4xMTQgOS4xMTQgMCAwIDAtMi4xOS0yLjkxQzE2LjM2IDMuODUgMTQuMjggMyAxMiAzcy00LjM2Ljg1LTUuOTQgMi4yNmMtLjkyLjgxLTEuNjcgMS44LTIuMTkgMi45MWEzLjk5NCAzLjk5NCAwIDAgMC0yLjgxIDMuMTdjLS4wNC4yMS0uMDYuNDMtLjA2LjY2cy4wMi40NS4wNi42NmE0LjAwOCA0LjAwOCAwIDAgMCAyLjgxIDMuMTcgOC45NzcgOC45NzcgMCAwIDAgMi4xNyAyLjg5QzcuNjIgMjAuMTQgOS43MSAyMSAxMiAyMXM0LjM4LS44NiA1Ljk3LTIuMjhjLjktLjggMS42NS0xLjc5IDIuMTctMi44OWEzLjk5OCAzLjk5OCAwIDAgMCAyLjgtMy4xN3pNMTkgMTRjLS4xIDAtLjE5LS4wMi0uMjktLjAzLS4yLjY3LS40OSAxLjI5LS44NiAxLjg2QzE2LjYgMTcuNzQgMTQuNDUgMTkgMTIgMTlzLTQuNi0xLjI2LTUuODUtMy4xN2MtLjM3LS41Ny0uNjYtMS4xOS0uODYtMS44Ni0uMS4wMS0uMTkuMDMtLjI5LjAzLTEuMSAwLTItLjktMi0ycy45LTIgMi0yYy4xIDAgLjE5LjAyLjI5LjAzLjItLjY3LjQ5LTEuMjkuODYtMS44NkM3LjQgNi4yNiA5LjU1IDUgMTIgNXM0LjYgMS4yNiA1Ljg1IDMuMTdjLjM3LjU3LjY2IDEuMTkuODYgMS44Ni4xLS4wMS4xOS0uMDMuMjktLjAzIDEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpNNy41IDE0Yy43NiAxLjc3IDIuNDkgMyA0LjUgM3MzLjc0LTEuMjMgNC41LTNoLTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoaWxkRnJpZW5kbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAydjhoOGMwLTQuNDItMy41OC04LTgtOHptNi4zMiAxMy44OUE3Ljk0OCA3Ljk0OCAwIDAgMCAyMSAxMUg2LjQ0bC0uOTUtMkgydjJoMi4yMnMxLjg5IDQuMDcgMi4xMiA0LjQyYy0xLjEuNTktMS44NCAxLjc1LTEuODQgMy4wOEM0LjUgMjAuNDMgNi4wNyAyMiA4IDIyYzEuNzYgMCAzLjIyLTEuMyAzLjQ2LTNoMi4wOGMuMjQgMS43IDEuNyAzIDMuNDYgMyAxLjkzIDAgMy41LTEuNTcgMy41LTMuNSAwLTEuMDQtLjQ2LTEuOTctMS4xOC0yLjYxek04IDIwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNy4xNyAxNyA4IDE3czEuNS42NyAxLjUgMS41UzguODMgMjAgOCAyMHptOSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuMTcgMTcgMTcgMTdzMS41LjY3IDEuNSAxLjVTMTcuODMgMjAgMTcgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvcnBvcmF0ZUZhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgyMFY3SDEyem0tMiAxMkg0di0yaDZ2MnptMC00SDR2LTJoNnYyem0wLTRINFY5aDZ2MnptMC00SDRWNWg2djJ6bTEwIDEyaC04VjloOHYxMHptLTItOGgtNHYyaDR2LTJ6bTAgNGgtNHYyaDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvdHRhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDYgNy41OFY2SDR2My4xMUwxIDExLjRsMS4yMSAxLjU5TDQgMTEuNjJWMjFoN3YtNmgydjZoN3YtOS4zOGwxLjc5IDEuMzZMMjMgMTEuNCAxMiAzem0tMi0yYzAgMS42Ni0xLjM0IDMtMyAzLS41NSAwLTEgLjQ1LTEgMUg0YzAtMS42NiAxLjM0LTMgMy0zIC41NSAwIDEtLjQ1IDEtMWgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb3VudGVydG9wcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEwVjdjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDNoMmMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2M0g4YzEuMSAwIDItLjkgMi0yVjRINHY0YzAgMS4xLjkgMiAyIDJIMnYyaDJ2OGgxNnYtOGgydi0yaC00em0tNSA4aC0ydi02aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JpYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDloLTZWNEg4QzUuNzkgNCA0IDUuNzkgNCA4djZjMCAxLjEuOSAyIDIgMmgydjIuOTNjLS42MS0uMzUtMS4xNi0uNzgtMS42NS0xLjI3bC0xLjQyIDEuNDJDNi43NCAyMC44OCA5LjI0IDIyIDEyIDIyYzIuNzYgMCA1LjI2LTEuMTIgNy4wNy0yLjkzbC0xLjQyLTEuNDJjLS40OS40OS0xLjA1LjkyLTEuNjUgMS4yN1YxNmgyYzEuMSAwIDItLjkgMi0ydi0zYzAtMS4xLS45LTItMi0yem0tNCAxMC43NWMtLjY0LjE2LTEuMzEuMjUtMiAuMjVzLTEuMzYtLjA5LTItLjI1VjE2aDR2My43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNnYxMmgyVjhoMTB2MTBoMnYtMmg0djJoMlY2SDJ6bTE4IDJ2MmgtNFY4aDR6bS00IDZ2LTJoNHYyaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdFN0ZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xLjM5IDQuMjIgNy45IDcuOWMuMTguMi4xOC41LS4wMS43YS40ODUuNDg1IDAgMCAxLS43IDBMNi44NyAxMS4xYy0uMTEuNC0uMjYuNzgtLjQ1IDEuMTJsMS40IDEuNGMuMi4yLjIuNTEgMCAuNzFhLjQ4NS40ODUgMCAwIDEtLjcgMGwtMS4yNy0xLjI3Yy0uMjQuMjktLjUuNTYtLjc3LjhsMS4yOCAxLjI4Yy4yLjIuMi41MSAwIC43MS0uMS4xLS4yMy4xNS0uMzYuMTVzLS4yNi0uMDUtLjM1LS4xNWwtMS4zOC0xLjM4Yy0uNjkuNDYtMS4zOS43OS0xLjk3IDEuMDItLjc4LjMxLTEuMyAxLjA0LTEuMyAxLjg4VjIwaDkuNWwzLjMzLTMuMzMgNS45NCA1Ljk0IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyem0xNy4xMiAxMS40Ni0xLjQxLTEuNDEgNC40OC00LjQ4TDIzIDExLjJsLTQuNDkgNC40OHptMi4zNy02LjYtNC40OCA0LjQ4LTcuMS03LjA5TDEzLjggMmw3LjA4IDcuMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvTm90VG91Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyAxMC4xNy0yLjUtMi41VjIuMjVhMS4yNSAxLjI1IDAgMCAxIDIuNSAwdjcuOTJ6bTcgMi41OHYtNy41YTEuMjUgMS4yNSAwIDAgMC0yLjUgMFYxMWgtMVYzLjI1YTEuMjUgMS4yNSAwIDAgMC0yLjUgMHY3LjkybDYgNnYtNC40MnpNOS41IDQuMjVDOS41IDMuNTYgOC45NCAzIDguMjUgM2MtLjY3IDAtMS4yLjUzLTEuMjQgMS4xOEw5LjUgNi42N1Y0LjI1em0zLjUgNS45Mi0yLjUtMi41VjIuMjVhMS4yNSAxLjI1IDAgMCAxIDIuNSAwdjcuOTJ6bTcgMi41OHYtNy41YTEuMjUgMS4yNSAwIDAgMC0yLjUgMFYxMWgtMVYzLjI1YTEuMjUgMS4yNSAwIDAgMC0yLjUgMHY3LjkybDYgNnYtNC40MnpNOS41IDQuMjVDOS41IDMuNTYgOC45NCAzIDguMjUgM2MtLjY3IDAtMS4yLjUzLTEuMjQgMS4xOEw5LjUgNi42N1Y0LjI1em0xMS42OSAxNi45NEwyLjgxIDIuODEgMS4zOSA0LjIybDUuNjMgNS42M0w3IDkuODN2NC4zYy0xLjExLS42NC0yLjU4LTEuNDctMi42LTEuNDgtLjE3LS4wOS0uMzQtLjE0LS41NC0uMTQtLjI2IDAtLjUuMDktLjcuMjYtLjA0LjAxLTEuMTYgMS4xMS0xLjE2IDEuMTFsNi44IDcuMThjLjU3LjYgMS4zNS45NCAyLjE4Ljk0SDE3Yy42MiAwIDEuMTgtLjE5IDEuNjUtLjUybC0uMDItLjAyIDEuMTUgMS4xNSAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjY1IDQuODYtLjA3LS4wN2MtLjU3LS42Mi0uODItMS40MS0uNjctMi4yTDE1IDJoLTEuODlsLS4wNi40M2MtLjIgMS4zNi4yNyAyLjcxIDEuMyAzLjcybC4wNy4wNmMuNTcuNjIuODIgMS40MS42NyAyLjJsLS4xMS41OWgxLjkxbC4wNi0uNDNjLjIxLTEuMzYtLjI3LTIuNzEtMS4zLTMuNzF6bTQgMC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTkgMmgtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2Yy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MXpNOS4xMiA1bC03LjE4IDYuNzljLS42LjU2LS45NCAxLjM1LS45NCAyLjE4VjIwYzAgMS42NiAxLjM0IDMgMyAzaDEzLjc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg3Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg4Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg2Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUg4Ljg2Yy42NC0xLjExIDEuNDgtMi41OCAxLjQ5LTIuNjFhMS4wNjUgMS4wNjUgMCAwIDAtLjEyLTEuMjNDMTAuMjIgNi4xMiA5LjEyIDUgOS4xMiA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGV2YXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek04LjUgNmExLjI1IDEuMjUgMCAxIDEgMCAyLjUgMS4yNSAxLjI1IDAgMCAxIDAtMi41em0yLjUgOGgtMXY0SDd2LTRINnYtMi41YzAtMS4xLjktMiAyLTJoMWMxLjEgMCAyIC45IDIgMlYxNHptNC41IDNMMTMgMTNoNWwtMi41IDR6TTEzIDExbDIuNS00IDIuNSA0aC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFc2NhbGF0b3JXYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem05IDcuNWMwIC44My42NyAxLjUgMS41IDEuNXMxLjUtLjY3IDEuNS0xLjVTMTcuODMgOCAxNyA4cy0xLjUuNjctMS41IDEuNXptMyAyLjVoLTIuODRjLS41OC4wMS0xLjE0LjMyLTEuNDUuODZsLS45MiAxLjMyTDkuNzIgOGEyLjAyIDIuMDIgMCAwIDAtMS43MS0xSDVjLTEuMSAwLTIgLjktMiAydjZoMS41djdoNVYxMS42MUwxMi4wMyAxNmgyLjJsLjc3LTEuMVYyMmg0di01aDF2LTMuNWMwLS44Mi0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVzY2FsYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiA2aC0xLjdsLTUgOUg3Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNi4xNyAxNSA3IDE1aDEuN2w1LTlIMTdjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTcuODMgOSAxNyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYW1pbHlSZXN0cm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRjMC0xLjExLjg5LTIgMi0yczIgLjg5IDIgMi0uODkgMi0yIDItMi0uODktMi0yem00IDE4di02aDIuNWwtMi41NC03LjYzQTIuMDEgMi4wMSAwIDAgMCAxOC4wNiA3aC0uMTJhMiAyIDAgMCAwLTEuOSAxLjM3bC0uODYgMi41OGMxLjA4LjYgMS44MiAxLjczIDEuODIgMy4wNXY4aDN6bS03LjUtMTAuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNVMxMSA5LjE3IDExIDEwcy42NyAxLjUgMS41IDEuNXpNNS41IDZjMS4xMSAwIDItLjg5IDItMnMtLjg5LTItMi0yLTIgLjg5LTIgMiAuODkgMiAyIDJ6bTIgMTZ2LTdIOVY5YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjZoMS41djdoNHptNi41IDB2LTRoMXYtNGMwLS44Mi0uNjgtMS41LTEuNS0xLjVoLTJjLS44MiAwLTEuNS42OC0xLjUgMS41djRoMXY0aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZlbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTJ2LTJoLTJWN2wtMy0zLTIgMi0yLTItMiAyLTItMi0zIDN2M0gzdjJoMnYySDN2MmgydjRoMTR2LTRoMnYtMmgtMnYtMmgyem0tNS01LjE3IDEgMVYxMGgtMlY3LjgzbC40MS0uNDEuNTktLjU5em0tNCAwIC41OS41OS40MS40MVYxMGgtMlY3LjgzbC40MS0uNDEuNTktLjU5ek0xMSAxNHYtMmgydjJoLTJ6bTIgMnYyaC0ydi0yaDJ6TTcgNy44M2wxLTEgLjU5LjU5LjQxLjQxVjEwSDdWNy44M3pNNyAxMmgydjJIN3YtMnptMCA0aDJ2Mkg3di0yem0xMCAyaC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlyZUV4dGluZ3Vpc2hlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTloMTB2MWMwIDEuMS0uOSAyLTIgMkg5Yy0xLjEgMC0yLS45LTItMnYtMXptMC0xaDEwdi01SDd2NXpNMTcgM3Y2bC0zLjE1LS42NmMtLjAxIDAtLjAxLjAxLS4wMi4wMiAxLjU1LjYyIDIuNzIgMS45OCAzLjA3IDMuNjRINy4xYy4zNC0xLjY2IDEuNTItMy4wMiAzLjA3LTMuNjQtLjMzLS4yNi0uNi0uNTgtLjgtLjk1TDUgNi41di0xbDQuMzctLjkxQzkuODcgMy42NSAxMC44NiAzIDEyIDNjLjcgMCAxLjM0LjI1IDEuODUuNjZMMTcgM3ptLTQgM2MtLjAzLS41OS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaXRuZXNzQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNTcgMTQuODYgMjIgMTMuNDMgMjAuNTcgMTIgMTcgMTUuNTcgOC40MyA3IDEyIDMuNDMgMTAuNTcgMiA5LjE0IDMuNDMgNy43MSAyIDUuNTcgNC4xNCA0LjE0IDIuNzEgMi43MSA0LjE0bDEuNDMgMS40M0wyIDcuNzFsMS40MyAxLjQzTDIgMTAuNTcgMy40MyAxMiA3IDguNDMgMTUuNTcgMTcgMTIgMjAuNTcgMTMuNDMgMjJsMS40My0xLjQzTDE2LjI5IDIybDIuMTQtMi4xNCAxLjQzIDEuNDMgMS40My0xLjQzLTEuNDMtMS40M0wyMiAxNi4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9vZEJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bS41IDkuNWMwIC44My0uNjcgMS41LTEuNSAxLjV2NGgtMXYtNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41di0zaDF2M2guNXYtM2gxdjNoLjV2LTNoMXYzek0xNSAxOGgtMXYtMy41aC0xdi0zYzAtMS4xLjktMiAyLTJWMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvdW5kYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMmgzTDEyIDMgMiAxMmgzdjNIM3YyaDJ2M2gydi0zaDR2M2gydi0zaDR2M2gydi0zaDJ2LTJoLTJ2LTN6TTcgMTV2LTQuODFsNC0zLjZWMTVIN3ptNiAwVjYuNTlsNCAzLjZWMTVoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZyZWVCcmVha2Zhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJhMiAyIDAgMCAwIDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bTAgNWgtMlY1aDJ2M3pNNCAxOWgxNnYySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA2SDlWNEg3djJINmwtNCA0djloMjB2LTlsLTQtNHpNNCAxMmgxMHY1SDR2LTV6bTE2IDVoLTR2LTYuMTdsMi0yIDIgMlYxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR29sZkNvdXJzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOS41XCIsXCJjeVwiOlwiMTkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDUuOTIgOSAydjE4SDd2LTEuNzNjLTEuNzkuMzUtMyAuOTktMyAxLjczIDAgMS4xIDIuNjkgMiA2IDJzNi0uOSA2LTJjMC0uOTktMi4xNi0xLjgxLTUtMS45N1Y4Ljk4bDYtMy4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3Jhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMEgydi0yaDUuNzVBOC4wMzIgOC4wMzIgMCAwIDAgMiAxMi4yNmMuNjQtLjE2IDEuMzEtLjI2IDItLjI2IDQuNDIgMCA4IDMuNTggOCA4em0xMC03Ljc0Yy0uNjQtLjE2LTEuMzEtLjI2LTItLjI2LTIuOTMgMC01LjQ4IDEuNTgtNi44OCAzLjkzYTkuODIgOS44MiAwIDAgMSAuODcgNC4wN2g4di0yaC01Ljc1QTguMDYxIDguMDYxIDAgMCAxIDIyIDEyLjI2em0tNi4zNi0xLjI0YTEwLjAzIDEwLjAzIDAgMCAxIDQuMDktNUMxNS40NCA2LjE2IDEyIDkuNjcgMTIgMTR2LjAyYy45NS0xLjI3IDIuMi0yLjMgMy42NC0zem0tNC4yMi0yLjE3QTguNTI3IDguNTI3IDAgMCAwIDYuNyA0QzguMTQgNS44NiA5IDguMTggOSAxMC43MWMwIC4yMS0uMDMuNDEtLjA0LjYxLjQzLjI0LjgzLjUyIDEuMjIuODJhOS45MSA5LjkxIDAgMCAxIDEuMjQtMy4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9saWRheVZpbGxhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyMFY4LjM1TDEzLjY1IDRoLTIuODNMMTYgOS4xOFYyMGgyem00IDBWNi42OUwxOS4zMSA0aC0yLjgzTDIwIDcuNTJWMjBoMnpNOCA0bC02IDZ2MTBoNXYtNWgydjVoNVYxMEw4IDR6bTEgOUg3di0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG90VHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4xNSAxMmMtLjMxLS4yMi0uNTktLjQ2LS44Mi0uNzJsLTEuNC0xLjU1Yy0uMTktLjIxLS40My0uMzgtLjY5LS41LS4yOS0uMTQtLjYyLS4yMy0uOTYtLjIzaC0uMDNDNi4wMSA5IDUgMTAuMDEgNSAxMS4yNVYxMkgydjhjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtOEgxMS4xNXpNNyAyMEg1di02aDJ2NnptNCAwSDl2LTZoMnY2em00IDBoLTJ2LTZoMnY2em00IDBoLTJ2LTZoMnY2em0tLjM1LTE0LjE0LS4wNy0uMDdjLS41Ny0uNjItLjgyLTEuNDEtLjY3LTIuMkwxOCAzaC0xLjg5bC0uMDYuNDNjLS4yIDEuMzYuMjcgMi43MSAxLjMgMy43MmwuMDcuMDZjLjU3LjYyLjgyIDEuNDEuNjcgMi4ybC0uMTEuNTloMS45MWwuMDYtLjQzYy4yMS0xLjM2LS4yNy0yLjcxLTEuMy0zLjcxem0tNCAwLS4wNy0uMDdjLS41Ny0uNjItLjgyLTEuNDEtLjY3LTIuMkwxNCAzaC0xLjg5bC0uMDYuNDNjLS4yIDEuMzYuMjcgMi43MSAxLjMgMy43MmwuMDcuMDZjLjU3LjYyLjgyIDEuNDEuNjcgMi4ybC0uMTEuNTloMS45MWwuMDYtLjQzYy4yMS0xLjM2LS4yNy0yLjcxLTEuMy0zLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3VzZVNpZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyaDNMMTIgMyAyIDEyaDN2OGgydi0yaDEwdjJoMnYtOHpNNy4yMSAxMGg5LjU4bC4yMS4xOVYxMkg3di0xLjgxbC4yMS0uMTl6bTcuMzYtMkg5LjQzTDEyIDUuNjkgMTQuNTcgOHpNNyAxNnYtMmgxMHYySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOS4zVjRoLTN2Mi42TDEyIDMgMiAxMmgzdjhoNXYtNmg0djZoNXYtOGgzbC0zLTIuN3ptLTkgLjdjMC0xLjEuOS0yIDItMnMyIC45IDIgMmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG91c2Vib2F0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjLTEuOTUgMC0yLjEgMS0zLjM0IDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDF2MmMxLjkgMCAyLjE3LTEgMy4zNS0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA4LTEgMy4zMi0xczEuMzcgMSAzLjMyIDFjMS45MSAwIDIuMTQtMSAzLjMzLTEgMS4xOCAwIDEuNDUgMSAzLjM1IDF2LTJjLTEuMjQgMC0xLjM4LTEtMy4zMy0xLTEuOTEgMC0yLjE0IDEtMy4zMyAxLTEuMjQgMC0xLjM5LTEtMy4zNC0xem04LjM0LTQuNjYtMS4zNyAxLjM3Yy0uMTkuMTgtLjQ1LjI5LS43MS4yOUgxN1Y5LjY1bDEuMzIuOTdMMTkuNSA5IDEyIDMuNSA0LjUgOWwxLjE4IDEuNjFMNyA5LjY1VjEzSDUuNzRjLS4yNyAwLS41Mi0uMTEtLjcxLS4yOWwtMS4zNy0xLjM3LTEuNDEgMS40MSAxLjM3IDEuMzdjLjU2LjU2IDEuMzMuODggMi4xMi44OGgxMi41MWMuOCAwIDEuNTYtLjMyIDIuMTItLjg4bDEuMzctMS4zNy0xLjQtMS40MXpNMTMgMTNoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJcm9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNmMtMS42NiAwLTMgMS4zNC0zIDN2NGMwIC41NS0uNDUgMS0xIDF2LTRjMC0xLjY2LTEuMzQtMy0zLTNoLTRjLTEuNjYgMC0zIDEuMzQtMyAzaDJjMC0uNTUuNDUtMSAxLTFoNGMuNTUgMCAxIC40NSAxIDF2MUg2Yy0yLjIxIDAtNCAxLjc5LTQgNHYzaDE1di0yYzEuNjYgMCAzLTEuMzQgMy0zVjljMC0uNTUuNDUtMSAxLTFoMVY2aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLaXRjaGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOVY0YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAydjVoMTZ6TTggNWgydjNIOFY1em0tNCA2djljMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtOUg0em02IDZIOHYtNWgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lZXRpbmdSb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA2djE1SDN2LTJoMlYzaDl2MWg1djE1aDJ2MmgtNFY2aC0zem0tNCA1djJoMnYtMmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWljcm93YXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi44IDEwLjYxIDUuMzcgOS4xOUM1LjczIDguNzkgNi41OSA4IDcuNzUgOGMuOCAwIDEuMzkuMzkgMS44MS42Ny4zMS4yMS41MS4zMy42OS4zMy4zNyAwIC44LS40MS45NS0uNjFsMS40MiAxLjQyYy0uMzYuNC0xLjIyIDEuMTktMi4zNyAxLjE5LS43OSAwLTEuMzctLjM4LTEuNzktLjY2LS4zMy0uMjItLjUyLS4zNC0uNzEtLjM0LS4zNyAwLS44LjQxLS45NS42MXpNNy43NSAxNWMuMTkgMCAuMzguMTIuNzEuMzQuNDIuMjggMSAuNjYgMS43OS42NiAxLjE2IDAgMi4wMS0uNzkgMi4zNy0xLjE5bC0xLjQyLTEuNDJjLS4xNS4yLS41OS42MS0uOTUuNjEtLjE4IDAtLjM4LS4xMi0uNjktLjMzLS40Mi0uMjgtMS4wMS0uNjctMS44MS0uNjctMS4xNiAwLTIuMDIuNzktMi4zOCAxLjE5bDEuNDIgMS40MmMuMTYtLjIuNTktLjYxLjk2LS42MXpNMjIgNnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJ6bS04IDBINHYxMmgxMFY2em01IDEwYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxIC40NSAxIDEgMSAxLS40NSAxLTF6bTAtNGMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xem0wLTVoLTJ2MmgyVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5pZ2h0U2hlbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgNCA5djEyaDE2VjlsLTgtNnptLTIuMjUgOS41YTEuMjUgMS4yNSAwIDEgMSAwIDIuNSAxLjI1IDEuMjUgMCAwIDEgMC0yLjV6TTE3IDE4aC0xdi0xLjVIOFYxOEg3di03aDF2NC41aDMuNVYxMkgxNWMxLjEgMCAyIC45IDIgMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb0JhY2twYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMmwyLjc2IDIuNzZDNC4wNiA3LjMxIDQgNy42NCA0IDh2MTJjMCAxLjEuOSAyIDIgMmgxMmMuMzQgMCAuNjUtLjA5LjkzLS4yNGwuODUuODUgMS40MS0xLjQyek02IDE0di0yaDMuMTdsMiAySDZ6bTguODMtMkw2Ljk4IDQuMTVjLjAxIDAgLjAxLS4wMS4wMi0uMDFWMmgzdjJoNFYyaDN2Mi4xNGMxLjcyLjQ1IDMgMiAzIDMuODZ2OS4xN2wtMi0yVjEyaC0zLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb0NlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjgzIDYtMy43LTMuN0M1LjQyIDEuNTUgNi4xNSAxIDcgMWwxMCAuMDFjMS4xIDAgMiAuODkgMiAxLjk5djEzLjE3bC0yLTJWNkg4Ljgzem0xMC45NSAxNi42MS0uOTEtLjkxYy0uMjkuNzUtMS4wMiAxLjMtMS44NyAxLjNIN2MtMS4xIDAtMi0uOS0yLTJWNy44M0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTE1LjE3IDE4IDcgOS44M1YxOGg4LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb0RyaW5rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuODMgM0gyMXYybC02LjIgNi45N0w5LjgzIDdoNi43NGwxLjc4LTJINy44M2wtMi0yem0xMy45NSAxOS42MUwxOCAyMC44M1YyMUg2di0yaDV2LTVsLTEuMzctMS41NC04LjI0LTguMjRMMi44IDIuODEgMyAzbDE4LjE5IDE4LjE5LTEuNDEgMS40MnpNMTYuMTcgMTkgMTMgMTUuODNWMTloMy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9GbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkzIDEzLjkzIDIuNDUgMi40NSAxLjA0IDMuODdsNS4zIDUuMy0uMi4yM0gzLjZjLS44OCAwLTEuNi43Mi0xLjYgMS42djkuNGMwIC44OC43MiAxLjYgMS42IDEuNmgxMi44Yy43NSAwIDEuMzgtLjUyIDEuNTUtMS4yMmwyLjE4IDIuMTggMS40MS0xLjQxTDE4IDE4bC00LjA3LTQuMDd6TTEwIDIwYy0yLjIxIDAtNC0xLjc5LTQtNCAwLTEuOTUgMS40LTMuNTcgMy4yNS0zLjkybDEuNTcgMS41N2MtLjI2LS4wOS0uNTMtLjE1LS44Mi0uMTVhMi41IDIuNSAwIDAgMCAwIDUgMi41IDIuNSAwIDAgMCAyLjUtMi41YzAtLjI5LS4wNi0uNTYtLjE1LS44MmwxLjU3IDEuNTdBMy45OTMgMy45OTMgMCAwIDEgMTAgMjB6bTgtNC44M0wxMC44MyA4aDEuNzVsMS4yOCAxLjRoMi41NGMuODggMCAxLjYuNzIgMS42IDEuNnY0LjE3em0yLjQtOS41N0gyMkwxOSAxMVY3aC0xVjJoNGwtMS42IDMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9Gb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMzUgOC41MiAxMSA1aDVWMWgydjRoNWwtMS4zOCAxMy43OUwxMS4zNSA4LjUyek0xIDIxdjFjMCAuNTUuNDUgMSAxIDFoMTNjLjU1IDAgMS0uNDUgMS0xdi0xSDF6bTIwLjkuOUwyLjEgMi4xLjY5IDMuNTFsNS43IDUuN0MzLjI4IDkuODcgMSAxMS45OSAxIDE1aDExLjE3bDIgMkgxdjJoMTV2LS4xN2w0LjQ5IDQuNDkgMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb01lZXRpbmdSb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMWgtMXYyaDJ2LTFsOS43MyA5LjczTDIwLjQ2IDIzIDE0IDE2LjU0VjIxSDN2LTJoMlY3LjU0bC00LTQgMS4yNy0xLjI3TDExIDExem0zIC40OUw1LjUxIDNIMTR2MWg1djEyLjQ5bC0yLTJWNmgtM3Y1LjQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb1Bob3RvZ3JhcGh5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuOTQgOC4xMiA3LjQ4IDQuNjYgOSAzaDZsMS44MyAySDIwYzEuMSAwIDIgLjkgMiAydjEyYzAgLjA1LS4wMS4xLS4wMi4xNmwtNS4xLTUuMWMuMDgtLjM1LjEyLS43LjEyLTEuMDYgMC0yLjc2LTIuMjQtNS01LTUtLjM2IDAtLjcxLjA0LTEuMDYuMTJ6bTkuNTUgMTUuMTlMMTguMTcgMjFINGMtMS4xIDAtMi0uOS0yLTJWN2MwLS41OS4yNy0xLjEyLjY4LTEuNDlsLTItMkwyLjEgMi4xbDE5LjggMTkuOC0xLjQxIDEuNDF6bS02LTUuOTktMS41LTEuNWMtLjMyLjEtLjY0LjE4LS45OS4xOC0xLjY2IDAtMy0xLjM0LTMtMyAwLS4zNS4wOC0uNjcuMTktLjk4bC0xLjUtMS41QTQuNzQgNC43NCAwIDAgMCA3IDEzYzAgMi43NiAyLjI0IDUgNSA1IC45MSAwIDEuNzYtLjI1IDIuNDktLjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb1N0cm9sbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxOGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTE4LjY1IDNjLTEuNjYgMC0yLjU0IDEuMjctMy4xOCAyLjAzbC0zLjUgNC4xMUwxNyAxNC4xN3YtNy45Yy41OC0uNjguOTctMS4yNyAxLjY1LTEuMjcuNzcgMCAxLjM1LjY2IDEuMzUgMS40OFY3aDJ2LS41MkMyMiA0LjU2IDIwLjUyIDMgMTguNjUgM3ptLTcuOTggNy42N0wyLjgxIDIuODEgMS4zOSA0LjIybDcuOTcgNy45Ny0yLjY2IDMuMTJjLS41NS42NS0uMDkgMS42NS43NiAxLjY1aDYuNjZsMS4xNyAxLjE3QzE0LjU0IDE4LjQyIDE0IDE5LjE0IDE0IDIwYzAgMS4xLjkgMiAyIDIgLjg2IDAgMS41OC0uNTQgMS44Ny0xLjNsMS45MSAxLjkxIDEuNDEtMS40MS00LjgtNC44LTUuNzItNS43M3ptMi44LTUuNjRjLjI3LS4zMi41OC0uNzIuOTgtMS4wOWE5LjM0NyA5LjM0NyAwIDAgMC03LjgxLS4xM2w0LjI1IDQuMjUgMi41OC0zLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdGhlckhvdXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMSAxMS40bDEuMjEgMS41OUw0IDExLjYyVjIxaDE2di05LjM4bDEuNzkgMS4zNkwyMyAxMS40IDEyIDN6TTggMTVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNCAwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTQgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQb29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMjFjLTEuMTEgMC0xLjczLS4zNy0yLjE4LS42NC0uMzctLjIyLS42LS4zNi0xLjE1LS4zNi0uNTYgMC0uNzguMTMtMS4xNS4zNi0uNDYuMjctMS4wNy42NC0yLjE4LjY0cy0xLjczLS4zNy0yLjE4LS42NGMtLjM3LS4yMi0uNi0uMzYtMS4xNS0uMzYtLjU2IDAtLjc4LjEzLTEuMTUuMzYtLjQ2LjI3LTEuMDguNjQtMi4xOS42NC0xLjExIDAtMS43My0uMzctMi4xOC0uNjQtLjM3LS4yMy0uNi0uMzYtMS4xNS0uMzZzLS43OC4xMy0xLjE1LjM2Yy0uNDYuMjctMS4wOC42NC0yLjE5LjY0di0yYy41NiAwIC43OC0uMTMgMS4xNS0uMzYuNDYtLjI3IDEuMDgtLjY0IDIuMTktLjY0czEuNzMuMzcgMi4xOC42NGMuMzcuMjMuNTkuMzYgMS4xNS4zNi41NiAwIC43OC0uMTMgMS4xNS0uMzYuNDYtLjI3IDEuMDgtLjY0IDIuMTktLjY0IDEuMTEgMCAxLjczLjM3IDIuMTguNjQuMzcuMjIuNi4zNiAxLjE1LjM2cy43OC0uMTMgMS4xNS0uMzZjLjQ1LS4yNyAxLjA3LS42NCAyLjE4LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIzLjU5LjM2IDEuMTUuMzZ2MnptMC00LjVjLTEuMTEgMC0xLjczLS4zNy0yLjE4LS42NC0uMzctLjIyLS42LS4zNi0xLjE1LS4zNi0uNTYgMC0uNzguMTMtMS4xNS4zNi0uNDUuMjctMS4wNy42NC0yLjE4LjY0cy0xLjczLS4zNy0yLjE4LS42NGMtLjM3LS4yMi0uNi0uMzYtMS4xNS0uMzYtLjU2IDAtLjc4LjEzLTEuMTUuMzYtLjQ1LjI3LTEuMDcuNjQtMi4xOC42NHMtMS43My0uMzctMi4xOC0uNjRjLS4zNy0uMjItLjYtLjM2LTEuMTUtLjM2cy0uNzguMTMtMS4xNS4zNmMtLjQ3LjI3LTEuMDkuNjQtMi4yLjY0di0yYy41NiAwIC43OC0uMTMgMS4xNS0uMzYuNDUtLjI3IDEuMDctLjY0IDIuMTgtLjY0czEuNzMuMzcgMi4xOC42NGMuMzcuMjIuNi4zNiAxLjE1LjM2LjU2IDAgLjc4LS4xMyAxLjE1LS4zNi40NS0uMjcgMS4wNy0uNjQgMi4xOC0uNjRzMS43My4zNyAyLjE4LjY0Yy4zNy4yMi42LjM2IDEuMTUuMzZzLjc4LS4xMyAxLjE1LS4zNmMuNDUtLjI3IDEuMDctLjY0IDIuMTgtLjY0czEuNzMuMzcgMi4xOC42NGMuMzcuMjIuNi4zNiAxLjE1LjM2djJ6TTguNjcgMTJjLjU2IDAgLjc4LS4xMyAxLjE1LS4zNi40Ni0uMjcgMS4wOC0uNjQgMi4xOS0uNjQgMS4xMSAwIDEuNzMuMzcgMi4xOC42NC4zNy4yMi42LjM2IDEuMTUuMzZzLjc4LS4xMyAxLjE1LS4zNmMuMTItLjA3LjI2LS4xNS40MS0uMjNMMTAuNDggNUM4LjkzIDMuNDUgNy41IDIuOTkgNSAzdjIuNWMxLjgyLS4wMSAyLjg5LjM5IDQgMS41bDEgMS0zLjI1IDMuMjVjLjMxLjEyLjU2LjI3Ljc3LjM5LjM3LjIzLjU5LjM2IDEuMTUuMzZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJpY2VCb3dsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTBTMiA2LjQ4IDIgMTJjMCAzLjY5IDIuNDcgNi44NiA2IDguMjVWMjJoOHYtMS43NWMzLjUzLTEuMzkgNi00LjU2IDYtOC4yNXptLTIgMGgtNFY1LjA4YzIuMzkgMS4zOSA0IDMuOTcgNCA2Ljkyem0tNi03Ljc0VjEyaC00VjQuMjZjLjY0LS4xNiAxLjMxLS4yNiAyLS4yNnMxLjM2LjEgMiAuMjZ6TTQgMTJjMC0yLjk1IDEuNjEtNS41MyA0LTYuOTJWMTJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9vZmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDE4aC0ydi0yaDJ2MnptMi00SDl2Nmg2di02em00LTQuN1Y0aC0zdjIuNkwxMiAzIDIgMTJoM2w3LTYuMzFMMTkgMTJoM2wtMy0yLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvb21QcmVmZXJlbmNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDExLjI2VjZoM3Y0aDJWNGgtNVYzSDV2MTZIM3YyaDkuMjZBNi45NjMgNi45NjMgMCAwIDEgMTEgMTdjMC0yLjM4IDEuMTktNC40NyAzLTUuNzR6TTEwIDExaDJ2MmgtMnYtMnptMTEuNjkgNS4zNyAxLjE0LTEtMS0xLjczLTEuNDUuNDljLS4zMi0uMjctLjY4LS40OC0xLjA4LS42M0wxOSAxMmgtMmwtLjMgMS40OWMtLjQuMTUtLjc2LjM2LTEuMDguNjNsLTEuNDUtLjQ5LTEgMS43MyAxLjE0IDFjLS4wOC41LS4wOC43NiAwIDEuMjZsLTEuMTQgMSAxIDEuNzMgMS40NS0uNDljLjMyLjI3LjY4LjQ4IDEuMDguNjNMMTcgMjJoMmwuMy0xLjQ5Yy40LS4xNS43Ni0uMzYgMS4wOC0uNjNsMS40NS40OSAxLTEuNzMtMS4xNC0xYy4wOC0uNTEuMDgtLjc3IDAtMS4yN3pNMTggMTljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb29tU2VydmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxN2gyMHYySDJ6bTExLjg0LTkuMjFBMi4wMDYgMi4wMDYgMCAwIDAgMTIgNWEyLjAwNiAyLjAwNiAwIDAgMC0xLjg0IDIuNzlDNi4yNSA4LjYgMy4yNyAxMS45MyAzIDE2aDE4Yy0uMjctNC4wNy0zLjI1LTcuNC03LjE2LTguMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJ2SG9va3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMTQgMTFoNHYzaC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxN3YtNmMwLTEuMS0uOS0yLTItMkg3VjdsLTMgMyAzIDN2LTJoNHYzSDR2M2MwIDEuMS45IDIgMiAyaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g4di0yaC0yem0tOSAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTctNmgtNHYtM2g0djN6TTE3IDJ2Mkg5djJoOHYybDMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU21va2VGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMiA2IDYuOTkgN0gydjNoOS45OWw3IDcgMS4yNi0xLjI1LTE3LTE3em0xOC41IDdIMjJ2M2gtMS41ek0xOCAxM2gxLjV2M0gxOHptLjg1LTguMTJjLjYyLS42MSAxLTEuNDUgMS0yLjM4aC0xLjVjMCAxLjAyLS44MyAxLjg1LTEuODUgMS44NXYxLjVjMi4yNCAwIDQgMS44MyA0IDQuMDdWMTJIMjJWOS45MmMwLTIuMjMtMS4yOC00LjE1LTMuMTUtNS4wNHpNMTQuNSA4LjdoMS41M2MxLjA1IDAgMS45Ny43NCAxLjk3IDIuMDVWMTJoMS41di0xLjU5YzAtMS44LTEuNi0zLjE2LTMuNDctMy4xNkgxNC41Yy0xLjAyIDAtMS44NS0uOTgtMS44NS0ycy44My0xLjc1IDEuODUtMS43NVYyYTMuMzUgMy4zNSAwIDAgMCAwIDYuN3ptMi41IDcuMjNWMTNoLTIuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNtb2tpbmdSb29tcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTZoMTV2M0gyem0xOC41IDBIMjJ2M2gtMS41ek0xOCAxNmgxLjV2M0gxOHptLjg1LTguMjdjLjYyLS42MSAxLTEuNDUgMS0yLjM4QzE5Ljg1IDMuNSAxOC4zNSAyIDE2LjUgMnYxLjVjMS4wMiAwIDEuODUuODMgMS44NSAxLjg1UzE3LjUyIDcuMiAxNi41IDcuMnYxLjVjMi4yNCAwIDQgMS44MyA0IDQuMDdWMTVIMjJ2LTIuMjRjMC0yLjIyLTEuMjgtNC4xNC0zLjE1LTUuMDN6bS0yLjgyIDIuNDdIMTQuNWMtMS4wMiAwLTEuODUtLjk4LTEuODUtMnMuODMtMS43NSAxLjg1LTEuNzV2LTEuNWEzLjM1IDMuMzUgMCAwIDAgMCA2LjdoMS41M2MxLjA1IDAgMS45Ny43NCAxLjk3IDIuMDVWMTVoMS41di0xLjY0YzAtMS44MS0xLjYtMy4xNi0zLjQ3LTMuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNvYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05LjEyIDUtNy4xOCA2Ljc5Yy0uNi41Ni0uOTQgMS4zNS0uOTQgMi4xOFYyMGMwIDEuNjYgMS4zNCAzIDMgM2gxMy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoOC43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNi43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIOC44NmMuNjQtMS4xMSAxLjQ4LTIuNTggMS40OS0yLjYxYTEuMDY1IDEuMDY1IDAgMCAwLS4xMi0xLjIzQzEwLjIyIDYuMTIgOS4xMiA1IDkuMTIgNXpNMTQgNi4yNWMuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzUtLjc1LS4zNC0uNzUtLjc1LjM0LS43NS43NS0uNzVtMC0xLjVjLTEuMjQgMC0yLjI1IDEuMDEtMi4yNSAyLjI1UzEyLjc2IDkuMjUgMTQgOS4yNSAxNi4yNSA4LjI0IDE2LjI1IDcgMTUuMjQgNC43NSAxNCA0Ljc1em01Ljc1Ljc1Yy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNS0uNS0uMjItLjUtLjUuMjItLjUuNS0uNW0wLTEuNWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTE2LjUgMWMtLjgzIDAtMS41LjY3LTEuNSAxLjVTMTUuNjcgNCAxNi41IDQgMTggMy4zMyAxOCAyLjUgMTcuMzMgMSAxNi41IDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMTMuOTcgMjEuNDljLS42My4yMy0xLjI5LjQtMS45Ny41MS42OC0uMTIgMS4zMy0uMjkgMS45Ny0uNTF6TTEyIDIyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjU1IDEyem0xMC40My0xLjYxek0xNS40OSA5LjYzYy0uMTgtMi43OS0xLjMxLTUuNTEtMy40My03LjYzYTEyLjE4OCAxMi4xODggMCAwIDAtMy41NSA3LjYzYzEuMjguNjggMi40NiAxLjU2IDMuNDkgMi42MyAxLjAzLTEuMDYgMi4yMS0xLjk0IDMuNDktMi42M3ptLTYuNSAyLjY1Yy0uMTQtLjEtLjMtLjE5LS40NS0uMjkuMTUuMTEuMzEuMTkuNDUuMjl6bTYuNDItLjI1Yy0uMTMuMDktLjI3LjE2LS40LjI2LjEzLS4xLjI3LS4xNy40LS4yNnpNMTIgMTUuNDVDOS44NSAxMi4xNyA2LjE4IDEwIDIgMTBjMCA1LjMyIDMuMzYgOS44MiA4LjAzIDExLjQ5LjYzLjIzIDEuMjkuNCAxLjk3LjUxLjY4LS4xMiAxLjMzLS4yOSAxLjk3LS41MUMxOC42NCAxOS44MiAyMiAxNS4zMiAyMiAxMGMtNC4xOCAwLTcuODUgMi4xNy0xMCA1LjQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5aC0xLjU2Yy4zNS0uNTkuNTYtMS4yNy41Ni0yIDAtMi4yMS0xLjc5LTQtNC00LS4zNCAwLS42Ni4wNS0uOTguMTNBNC43MDcgNC43MDcgMCAwIDAgMTAgMi4wMmMtMS44OSAwLTMuNTEgMS4xMS00LjI3IDIuNzFDNC4xNSA1LjI2IDMgNi43NCAzIDguNWMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYyMWgxMXYtMmgyYzEuMSAwIDItLjkgMi0ydi02YzAtMS4xLS45LTItMi0yek03IDEwLjVjLTEuMSAwLTItLjktMi0yIDAtLjg1LjU1LTEuNiAxLjM3LTEuODhsLjgtLjI3LjM2LS43NkM4IDQuNjIgOC45NCA0LjAyIDEwIDQuMDJjLjc5IDAgMS4zOS4zNSAxLjc0LjY1bC43OC42NVMxMy4xNiA1IDEzLjk5IDVjMS4xIDAgMiAuOSAyIDJoLTNDOS42NyA3IDkuMTUgMTAuNSA3IDEwLjV6TTE5IDE3aC0ydi02aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhaXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0xIDVoLTIuNDJ2My4zM0gxM3YzLjMzaC0yLjU4VjE4SDZ2LTJoMi40MnYtMy4zM0gxMVY5LjMzaDIuNThWNkgxOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdG9yZWZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuOSA4Ljg5LTEuMDUtNC4zN2MtLjIyLS45LTEtMS41Mi0xLjkxLTEuNTJINS4wNWMtLjkgMC0xLjY5LjYzLTEuOSAxLjUyTDIuMSA4Ljg5Yy0uMjQgMS4wMi0uMDIgMi4wNi42MiAyLjg4LjA4LjExLjE5LjE5LjI4LjI5VjE5YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTYuOTRjLjA5LS4wOS4yLS4xOC4yOC0uMjguNjQtLjgyLjg3LTEuODcuNjItMi44OXptLTIuOTktMy45IDEuMDUgNC4zN2MuMS40Mi4wMS44NC0uMjUgMS4xNy0uMTQuMTgtLjQ0LjQ3LS45NC40Ny0uNjEgMC0xLjE0LS40OS0xLjIxLTEuMTRMMTYuOTggNWwxLjkzLS4wMXpNMTMgNWgxLjk2bC41NCA0LjUyYy4wNS4zOS0uMDcuNzgtLjMzIDEuMDctLjIyLjI2LS41NC40MS0uOTUuNDEtLjY3IDAtMS4yMi0uNTktMS4yMi0xLjMxVjV6TTguNDkgOS41MiA5LjA0IDVIMTF2NC42OWMwIC43Mi0uNTUgMS4zMS0xLjI5IDEuMzEtLjM0IDAtLjY1LS4xNS0uODktLjQxYTEuNDIgMS40MiAwIDAgMS0uMzMtMS4wN3ptLTQuNDUtLjE2TDUuMDUgNWgxLjk3bC0uNTggNC44NmMtLjA4LjY1LS42IDEuMTQtMS4yMSAxLjE0LS40OSAwLS44LS4yOS0uOTMtLjQ3LS4yNy0uMzItLjM2LS43NS0uMjYtMS4xN3pNNSAxOXYtNi4wM2MuMDguMDEuMTUuMDMuMjMuMDMuODcgMCAxLjY2LS4zNiAyLjI0LS45NS42LjYgMS40Ljk1IDIuMzEuOTUuODcgMCAxLjY1LS4zNiAyLjIzLS45My41OS41NyAxLjM5LjkzIDIuMjkuOTMuODQgMCAxLjY0LS4zNSAyLjI0LS45NS41OC41OSAxLjM3Ljk1IDIuMjQuOTUuMDggMCAuMTUtLjAyLjIzLS4wM1YxOUg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIyMFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIyMFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA3di0uNTJDMjIgNC41NiAyMC41MiAzIDE4LjY1IDNjLTEuNjYgMC0yLjU0IDEuMjctMy4xOCAyLjAzbC04LjggMTAuMzJDNi4xMiAxNiA2LjU4IDE3IDcuNDMgMTdIMTVjMS4xIDAgMi0uOSAyLTJWNi4yN2MuNTgtLjY4Ljk3LTEuMjcgMS42NS0xLjI3Ljc3IDAgMS4zNS42NiAxLjM1IDEuNDhWN2gyek0xNC4zIDQuMWE4Ljk2MiA4Ljk2MiAwIDAgMC05LjU4LjYybDQuODkgNC44OUwxNC4zIDQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFwYXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMFYxaC04djljMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMjFoLTJ2Mmg2di0yaC0ydi03LjE0YzEuNzItLjQ1IDMtMiAzLTMuODZ6bS0yLTd2M2gtNFYzaDR6bS03LjUgOC41QTIuNSAyLjUgMCAwIDEgMTAgMTRIOHY5SDZ2LTlINGEyLjUgMi41IDAgMCAxIDAtNWgyVjhINGEyLjUgMi41IDAgMCAxIDAtNWgyVjFoMnYyaDJhMi41IDIuNSAwIDAgMSAwIDVIOHYxaDJhMi41IDIuNSAwIDAgMSAyLjUgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA0aDJ2MmgtMlY0em0tMSAzaDJ2MmgtMlY3em0tMi0zaDJ2MmgtMlY0em03IDVoLTJWN2gydjJ6bTEtM2gtMlY0aDJ2MnptMiAzaC0yVjdoMnYyem0xLTNoLTJWNGgydjJ6bS03LjM4IDguMzhMMTIuMSAxNi45Yy0yLjUtMS40My00LjU3LTMuNS02LTZsMi41Mi0yLjUyYy4yNC0uMjQuMzQtLjU4LjI4LS45TDguMTYgMy44Yy0uMDktLjQ2LS41LS44LS45OC0uOEgzLjAzYy0uNTYgMC0xLjAzLjQ3LTEgMS4wMy4xNyAyLjg5IDEuMDIgNS42IDIuNCA3Ljk3IDEuNTggMi43MyAzLjg1IDQuOTkgNi41NyA2LjU3IDIuMzcgMS4zNyA1LjA4IDIuMjMgNy45NyAyLjQuNTYuMDMgMS4wMy0uNDQgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4bC0zLjY3LS43M2EuOTkuOTkgMCAwIDAtLjkxLjI3ek0xNCAxMGgydjJoLTJ2LTJ6bS0zIDBoMnYyaC0ydi0yem04IDJoLTJ2LTJoMnYyem0zIDBoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbWJyZWxsYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgNi45MiAxMyA1Ljc3VjMuNGMwLS4yNi4yMi0uNDguNS0uNDhzLjUuMjEuNS40OFY0aDJ2LS42QzE2IDIuMDcgMTQuODggMSAxMy41IDFTMTEgMi4wNyAxMSAzLjR2Mi4zN0w5LjUgNi45MiA2IDYuMDdsNS4wNSAxNS4yNWMuMTUuNDUuNTUuNjguOTUuNjhzLjgtLjIzLjk1LS42OUwxOCA2LjA3bC0zLjUuODV6TTEzLjI4IDguNWwuNzYuNTguOTItLjIzTDEzIDE0LjhWOC4yOWwuMjguMjF6bS0zLjMyLjU5Ljc2LS41OC4yOC0uMjJ2Ni41MUw5LjAzIDguODZsLjkzLjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWYXBlRnJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTYuNWgxYzEuMzMgMCAyLjcxLS4xOCA0LS41djNjLTEuMjktLjMyLTIuNjctLjUtNC0uNUgydi0yek0xNi4xNyAxOUg4di0zaDUuMTdMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MS0zLjYtMy42em0yLjY2LTNIMjJ2M2gtLjE3bC0zLTN6TTExIDE3LjVjMC0uMjgtLjIyLS41LS41LS41cy0uNS4yMi0uNS41LjIyLjUuNS41LjUtLjIyLjUtLjV6bTExLTQuNzRWMTVoLTEuNXYtMi4yM2MwLTIuMjQtMS43Ni00LjA3LTQtNC4wN1Y3LjJjMS4wMiAwIDEuODUtLjgzIDEuODUtMS44NVMxNy41MiAzLjUgMTYuNSAzLjVWMmMxLjg1IDAgMy4zNSAxLjUgMy4zNSAzLjM1IDAgLjkzLS4zOCAxLjc3LTEgMi4zOCAxLjg3Ljg5IDMuMTUgMi44MSAzLjE1IDUuMDN6TTExLjE1IDguMzJWOC4zYzAtMS44NSAxLjUtMy4zNSAzLjM1LTMuMzV2MS41Yy0xLjAyIDAtMS44NS43My0xLjg1IDEuNzVzLjgzIDIgMS44NSAyaDEuNTNjMS44NyAwIDMuNDcgMS4zNSAzLjQ3IDMuMTZWMTVIMTh2LTEuM2MwLTEuMzEtLjkyLTIuMDUtMS45Ny0yLjA1aC0xLjU1bC0zLjMzLTMuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZhcGluZ1Jvb21zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNi41aDFjMS4zMyAwIDIuNzEtLjE4IDQtLjV2M2MtMS4yOS0uMzItMi42Ny0uNS00LS41SDJ2LTJ6bTIwLS41djNIOHYtM2gxNHptLTExIDEuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjUuMjIuNS41LjUuNS0uMjIuNS0uNXptMTEtNC43NFYxNWgtMS41di0yLjIzYzAtMi4yNC0xLjc2LTQuMDctNC00LjA3VjcuMmMxLjAyIDAgMS44NS0uODMgMS44NS0xLjg1UzE3LjUyIDMuNSAxNi41IDMuNVYyYzEuODUgMCAzLjM1IDEuNSAzLjM1IDMuMzUgMCAuOTMtLjM4IDEuNzctMSAyLjM4IDEuODcuODkgMy4xNSAyLjgxIDMuMTUgNS4wM3ptLTIuNS42VjE1SDE4di0xLjNjMC0xLjMxLS45Mi0yLjA1LTEuOTctMi4wNUgxNC41YTMuMzUgMy4zNSAwIDAgMSAwLTYuN3YxLjVjLTEuMDIgMC0xLjg1LjczLTEuODUgMS43NXMuODMgMiAxLjg1IDJoMS41M2MxLjg3IDAgMy40NyAxLjM1IDMuNDcgMy4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIxSDNWOGwxMy01djdIN3YxMXptMTItMTFjLTEuMSAwLTIgLjktMiAySDl2OWg1di01aDJ2NWg1di05YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSA4QTIuNSAyLjUgMCAwIDAgMjEgNS41QzIxIDMuODMgMTguNSAxIDE4LjUgMVMxNiAzLjgzIDE2IDUuNUEyLjUgMi41IDAgMCAwIDE4LjUgOHptLTUgMWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uODQtMS41LTIuNS0xLjUtMi41UzEyIDYuNjYgMTIgNy41YzAgLjgzLjY3IDEuNSAxLjUgMS41ek05LjEyIDVsLTcuMTggNi43OWMtLjYuNTYtLjk0IDEuMzUtLjk0IDIuMThWMjBjMCAxLjY2IDEuMzQgMyAzIDNoMTMuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDcuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDguNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDYuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDguODZjLjY0LTEuMTEgMS40OC0yLjU4IDEuNDktMi42MWExLjA2NSAxLjA2NSAwIDAgMC0uMTItMS4yM0MxMC4yMiA2LjEyIDkuMTIgNSA5LjEyIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhdGVyRGFtYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyAyIDEyaDN2OGgxNHYtOGgzTDEyIDN6bTAgMTNjLTEuMSAwLTItLjktMi0yczItNCAyLTQgMiAyLjkgMiA0LS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaGVlbGNoYWlyUGlja3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDRjMC0xLjExLjg5LTIgMi0yczIgLjg5IDIgMi0uODkgMi0yIDItMi0uODktMi0yem01LjUgNi45NVY5YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjZoMnY3aDMuNXYtLjExYy0xLjI0LTEuMjYtMi0yLjk5LTItNC44OSAwLTIuNTggMS40MS00Ljg0IDMuNS02LjA1ek0xNi41IDE3YzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zYzAtMS4xMS42MS0yLjA2IDEuNS0yLjU4di0yLjE2Yy0yLjAyLjY0LTMuNSAyLjUxLTMuNSA0Ljc0IDAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVoLTJ6bTMuMDQtM0gxNVY4aC0ydjhoNS40NmwyLjQ3IDMuNzEgMS42Ni0xLjExLTMuMDUtNC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXRocm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgMThjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMC0zYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTMgM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0wLTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMyAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAtM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yLTNIN3YtMWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEwLjc4VjhjMC0xLjY1LTEuMzUtMy0zLTNoLTRjLS43NyAwLTEuNDcuMy0yIC43OC0uNTMtLjQ4LTEuMjMtLjc4LTItLjc4SDZDNC4zNSA1IDMgNi4zNSAzIDh2Mi43OGMtLjYxLjU1LTEgMS4zNC0xIDIuMjJ2Nmgydi0yaDE2djJoMnYtNmMwLS44OC0uMzktMS42Ny0xLTIuMjJ6TTE0IDdoNGMuNTUgMCAxIC40NSAxIDF2MmgtNlY4YzAtLjU1LjQ1LTEgMS0xek01IDhjMC0uNTUuNDUtMSAxLTFoNGMuNTUgMCAxIC40NSAxIDF2Mkg1Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlZHJvb21CYWJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTggMTZjLTIuNjQgMC01LjEzLTEuMDMtNy0yLjlsMS4wNi0xLjA2Yy4zNC4zNC43MS42NSAxLjEuOTJMOCAxMy41VjkuNTFsLTEuNTUuOTktLjk1LTFMNyA3Ljc2IDYgN2gzLjY1bDEuNzMgM0gxN3YxaC0xdjIuNWwuODQgMS40NmMuMzktLjI4Ljc2LS41OCAxLjEtLjkyTDE5IDE1LjFhOS44NDIgOS44NDIgMCAwIDEtNyAyLjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjY5IDE0LjI0YTcuNzIgNy43MiAwIDAgMS01LjQgMGwtLjgxIDEuNDEtLjAzLjA2YzEuMS41MiAyLjI4Ljc5IDMuNTMuNzlzMi40NS0uMjggMy41NS0uNzlsLS4wMy0uMDYtLjgxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlZHJvb21DaGlsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA4LjVoNnYySDl6TTE1LjY0IDEySDguMzdhLjg3Ljg3IDAgMCAwLS44Ny44N2guMDFWMTRoOXYtMS4xM2EuODcuODcgMCAwIDAtLjg3LS44N3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0yIDE1aC0xLjV2LTEuNWgtOVYxN0g2di00LjEzYzAtMSAuNjItMS44NSAxLjUtMi4yVjljMC0xLjEuOS0yIDItMmg1YzEuMSAwIDIgLjkgMiAydjEuNjdjLjg4LjM1IDEuNSAxLjIgMS41IDIuMlYxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmVkcm9vbVBhcmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMmgtOWMtLjU1IDAtMSAuNDUtMSAxdjFoMTF2LTFjMC0uNTUtLjQ1LTEtMS0xek03LjI1IDguNWg0djJoLTR6TTEyLjc1IDguNWg0djJoLTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSAxNWgtMS41di0xLjVoLTExVjE3SDV2LTMuODNjMC0uNjYuMjUtMS4yNi42NS0xLjcyVjljMC0xLjEuOS0yIDItMkgxMWMuMzcgMCAuNzIuMTIgMSAuMzIuMjgtLjIuNjMtLjMyIDEtLjMyaDMuMzVjMS4xIDAgMiAuOSAyIDJ2Mi40NWMuNC40Ni42NSAxLjA2LjY1IDEuNzJWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsZW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjEzIDE1LjEzIDE4IDNoLTRWMmgtNHYxSDVjLTEuMSAwLTIgLjktMiAydjRjMCAxLjEuOSAyIDIgMmgyLjIzbC42NCA0LjEzQzYuNzQgMTYuMDUgNiAxNy40MyA2IDE5djFjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0ydi0xYzAtMS41Ny0uNzQtMi45NS0xLjg3LTMuODd6TTUgOVY1aDEuMzFsLjYyIDRINXptNyAxMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yLjI5LTVIOS43Mkw4LjMzIDVoNy4zNGwtMS4zOCA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1lcmFJbmRvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgNCA5djEyaDE2VjlsLTgtNnptNCAxMy4wNkwxNCAxNXYxYzAgLjU1LS40NSAxLTEgMUg5Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoNGMuNTUgMCAxIC40NSAxIDF2MWwyLTEuMDZ2NC4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhT3V0ZG9vciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMC0uNTUtLjQ1LTEtMS0xaC00Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMWwyIDEuMDZ2LTQuMTJMMTggMTR2LTF6TTEyIDMgNCA5djEyaDE2di0ySDZ2LTlsNi00LjUgNiA0LjV2MWgyVjlsLTgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hhaXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2M2MwIDEuMS45IDIgMiAyaDF2Mkg3Yy0xLjEgMC0yIC45LTIgMnY3aDJ2LTNoMTB2M2gydi03YzAtMS4xLS45LTItMi0yaC0xdi0yaDF6TTcgOFY1aDEwdjNIN3ptMTAgOEg3di0yaDEwdjJ6bS0zLTRoLTR2LTJoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMXYyaDEwdi0yYzAtMS44NiAxLjI4LTMuNDEgMy0zLjg2VjZjMC0xLjY1LTEuMzUtMy0zLTNIN0M1LjM1IDMgNCA0LjM1IDQgNnYxLjE0YzEuNzIuNDUgMyAyIDMgMy44NnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOWMtMS4xIDAtMiAuOS0yIDJ2NEg1di00YzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnY1YzAgMS42NSAxLjM1IDMgMyAzdjFjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0xYzEuNjUgMCAzLTEuMzUgMy0zdi01YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2ZmZWVNYWtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNlY0aDJWMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0di0yaC00LjAzQTQuOTY2IDQuOTY2IDAgMCAwIDE4IDE2di01SDh2NWMwIDEuNjQuODEgMy4wOSAyLjAzIDRINlY0aDJ2MmMwIC41NS40NSAxIDEgMWg4Yy41NSAwIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxM1wiLFwiY3lcIjpcIjlcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29mZmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41IDNINmMtMS4xIDAtMiAuOS0yIDJ2NS43MWMwIDMuODMgMi45NSA3LjE4IDYuNzggNy4yOSAzLjk2LjEyIDcuMjItMy4wNiA3LjIyLTd2LTFoLjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMjAuNDMgMyAxOC41IDN6TTE2IDV2M0g2VjVoMTB6bTIuNSAzSDE4VjVoLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTkuMzMgOCAxOC41IDh6TTQgMTloMTZ2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tOSA4LjNjMCAuOTMtLjY0IDEuNzEtMS41IDEuOTNWMTlIOHYtNi43N2MtLjg2LS4yMi0xLjUtMS0xLjUtMS45M1Y2LjVjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVWOWguNzVWNi41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjlIMTBWNi41YzAtLjI4LjIzLS41LjUtLjUuMjggMCAuNS4yMi41LjV2My44em00LjU4IDIuMjktLjA4LjAzVjE5SDE0di02LjM4bC0uMDgtLjA0Yy0uOTctLjQ3LTEuNjctMS43LTEuNjctMy4xOCAwLTEuODggMS4xMy0zLjQgMi41LTMuNCAxLjM4IDAgMi41IDEuNTMgMi41IDMuNDEgMCAxLjQ4LS43IDIuNzEtMS42NyAzLjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb29yQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlWNWMwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxNEgzdjJoMTh2LTJoLTJ6bS04LTZIOXYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvb3JGcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlWNWMwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxNEgzdjJoMTh2LTJoLTJ6bS00LTZoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb29yU2xpZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWNWMwLTEuMS0uOS0yLTItMmgtNS4yNXYxNmgtMS41VjNINmMtMS4xIDAtMiAuOS0yIDJ2MTRIM3YyaDE4di0yaC0xem0tMTAtNkg4di0yaDJ2MnptNiAwaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9vcmJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgNCA5djEyaDE2VjlsLTgtNnptMCAxNC41Yy0uNTUgMC0xLS40NS0xLTFoMmMwIC41NS0uNDUgMS0xIDF6bTQtMS41SDh2LTFoMXYtMi4zNGMwLTEuNTQuODItMi44MiAyLjI1LTMuMTZ2LS4yNWMwLS40MS4zNC0uNzUuNzUtLjc1cy43NS4zNC43NS43NXYuMjVjMS40NC4zNCAyLjI1IDEuNjIgMi4yNSAzLjE2VjE1aDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjhsLTUtNXpNNyA3aDV2Mkg3Vjd6bTEwIDEwSDd2LTJoMTB2MnptMC00SDd2LTJoMTB2MnptLTItNFY1bDQgNGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhdHdhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDcuMDhjMCAxLjc3LS44NCAzLjI1LTIgMy44MlYyMWgtMlYxMC45Yy0xLjE2LS41Ny0yLTIuMDUtMi0zLjgyQzEwLjAxIDQuODMgMTEuMzUgMyAxMyAzYzEuNjYgMCAzIDEuODMgMyA0LjA4ek0xNyAzdjE4aDJ2LThoMlY3YzAtMS43Ni0xLjI0LTQtNC00ek04LjI4IDNjLS40IDAtLjcyLjMyLS43Mi43MlY3aC0uODRWMy43MkM2LjcyIDMuMzIgNi40IDMgNiAzcy0uNzIuMzItLjcyLjcyVjdoLS44NFYzLjcyYzAtLjQtLjMyLS43Mi0uNzItLjcyUzMgMy4zMiAzIDMuNzJWOWMwIDEuMS45IDIgMiAydjEwaDJWMTFjMS4xIDAgMi0uOSAyLTJWMy43MmMwLS40LS4zMi0uNzItLjcyLS43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2FyYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC4zMyA3LjUtLjY2IDJoOC42NmwtLjY2LTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSAxNS42OWMwIC40NS0uMzUuODEtLjc4LjgxaC0uNDRjLS40NCAwLS43OC0uMzYtLjc4LS44MVYxNi41SDd2MS4xOWMwIC40NS0uMzUuODEtLjc4LjgxaC0uNDRjLS40MyAwLS43OC0uMzYtLjc4LS44MXYtNi41Yy44Mi0yLjQ3IDEuMzQtNC4wMyAxLjU2LTQuNjkuMDUtLjE2LjEyLS4yOS4xOS0uNC4wMi0uMDIuMDMtLjA0LjA1LS4wNi4zOC0uNTMuOTItLjU0LjkyLS41NGg4LjU2cy41NC4wMS45Mi41M2MuMDIuMDMuMDMuMDUuMDUuMDcuMDcuMTEuMTQuMjQuMTkuNC4yMi42Ni43NCAyLjIzIDEuNTYgNC42OXY2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA2LjA2VjNoLTJ2My4wNmMtNC41LjUtOCA0LjMxLTggOC45M0MzIDE2LjEgMy45IDE3IDUuMDEgMTdIOGMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00aDIuOTljMS4xMSAwIDIuMDEtLjkgMi4wMS0yLjAxIDAtNC42Mi0zLjUtOC40My04LTguOTN6TTEyIDE1SDVjMC0zLjg2IDMuMTQtNyA3LTdzNyAzLjE0IDcgN2gtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGl2aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDExLjVjLS41NSAwLTEgLjQ1LTEgMXYyaC03di0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxVjE2YzAgLjI4LjIyLjUuNS41aDEwYy4yOCAwIC41LS4yMi41LS41di0zLjVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMi41di41aDR2LS41YzAtMS4zLjk5LTIuMzUgMi4yNS0yLjQ3VjljMC0uODMtLjY3LTEuNS0xLjUtMS41aC01LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41djEuMDNBMi40OCAyLjQ4IDAgMCAxIDEwIDEyLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSAxNGMwIDEuMS0uOSAyLTIgMkg3Yy0xLjEgMC0yLS45LTItMnYtMy41YzAtLjkyLjUxLTEuNzIgMS4yNS0yLjE1VjljMC0xLjY2IDEuMzQtMyAzLTNoNS41YzEuNjYgMCAzIDEuMzQgMyAzdjEuMzVjLjc0LjQzIDEuMjUgMS4yMyAxLjI1IDIuMTVWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hbmFnZVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA5SDJWN2g1djJ6bTAgM0gydjJoNXYtMnptMTMuNTkgNy0zLjgzLTMuODNjLS44LjUyLTEuNzQuODMtMi43Ni44My0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDVjMCAxLjAyLS4zMSAxLjk2LS44MyAyLjc1TDIyIDE3LjU5IDIwLjU5IDE5ek0xNyAxMWMwLTEuNjUtMS4zNS0zLTMtM3MtMyAxLjM1LTMgMyAxLjM1IDMgMyAzIDMtMS4zNSAzLTN6TTIgMTloMTB2LTJIMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQb2RjYXN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJjMCAuNzQtLjQgMS4zOC0xIDEuNzJWMjJoLTJ2LTguMjhjLS42LS4zNS0xLS45OC0xLTEuNzIgMC0xLjEuOS0yIDItMnMyIC45IDIgMnptLTItNmMtMy4zMSAwLTYgMi42OS02IDYgMCAxLjc0Ljc1IDMuMzEgMS45NCA0LjRsMS40Mi0xLjQyQTMuOTU3IDMuOTU3IDAgMCAxIDggMTJjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIDEuMTktLjUzIDIuMjUtMS4zNiAyLjk4bDEuNDIgMS40MkE1Ljk1NyA1Ljk1NyAwIDAgMCAxOCAxMmMwLTMuMzEtMi42OS02LTYtNnptMC00QzYuNDggMiAyIDYuNDggMiAxMmMwIDIuODUgMS4yIDUuNDEgMy4xMSA3LjI0bDEuNDItMS40MkE3Ljk4NyA3Ljk4NyAwIDAgMSA0IDEyYzAtNC40MSAzLjU5LTggOC04czggMy41OSA4IDhjMCAyLjI5LS45OCA0LjM2LTIuNTMgNS44MmwxLjQyIDEuNDJDMjAuOCAxNy40MSAyMiAxNC44NSAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCIxN1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTdcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNlwiLFwiY3lcIjpcIjE3XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDUuMDhWM2gtMnYyLjA4QzcuNjEgNS41NyA1IDguNDcgNSAxMnYyaDE0di0yYzAtMy41My0yLjYxLTYuNDMtNi02LjkyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCIyMFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNlwiLFwiY3lcIjpcIjIwXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYmxlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNy41QzIyIDUuNTcgMTcuNTIgNCAxMiA0UzIgNS41NyAyIDcuNWMwIDEuODEgMy45NSAzLjMxIDkgMy40OFYxNUg5LjM1Yy0uODIgMC0xLjU1LjUtMS44NiAxLjI2TDYgMjBoMmwxLjItM2g1LjZsMS4yIDNoMmwtMS41LTMuNzRjLS4zLS43Ni0xLjA0LTEuMjYtMS44NS0xLjI2SDEzdi00LjAyYzUuMDUtLjE3IDktMS42NyA5LTMuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYmxlUmVzdGF1cmFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjk2IDkuNzMtMS40My01YS45OTYuOTk2IDAgMCAwLS45Ni0uNzNINC40M2MtLjQ1IDAtLjg0LjMtLjk2LjczbC0xLjQzIDVjLS4xOC42My4zIDEuMjcuOTYgMS4yN2gyLjJMNCAyMGgybC42Ny01aDEwLjY3bC42NiA1aDJsLTEuMi05SDIxYy42NiAwIDEuMTQtLjY0Ljk2LTEuMjd6TTYuOTMgMTNsLjI3LTJoOS42bC4yNyAySDYuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpbmRvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDExVjNINWMtMS4xIDAtMiAuOS0yIDJ2Nmg4em0yIDBoOFY1YzAtMS4xLS45LTItMi0yaC02djh6bS0yIDJIM3Y2YzAgMS4xLjkgMiAyIDJoNnYtOHptMiAwdjhoNmMxLjEgMCAyLS45IDItMnYtNmgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kWWFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTggOC4yMmExLjU2MiAxLjU2MiAwIDAgMSAyLjQ1LTEuMjhsLS4wMS0uMTJjMC0uODYuNy0xLjU2IDEuNTYtMS41NnMxLjU2LjcgMS41NiAxLjU2bC0uMDEuMTJBMS41NjIgMS41NjIgMCAwIDEgMTYgOC4yMmMwIC42Mi0uMzcgMS4xNi0uODkgMS40LjUyLjI1Ljg5Ljc5Ljg5IDEuNDEgMCAuODYtLjcgMS41Ni0xLjU2IDEuNTYtLjMzIDAtLjY0LS4xMS0uODktLjI4bC4wMS4xMmMwIC44Ni0uNyAxLjU2LTEuNTYgMS41NnMtMS41Ni0uNy0xLjU2LTEuNTZsLjAxLS4xMkExLjU2MiAxLjU2MiAwIDAgMSA4IDExLjAzYzAtLjYyLjM3LTEuMTYuODktMS40QzguMzcgOS4zOCA4IDguODQgOCA4LjIyek0xMiAxOWMtMy4zMSAwLTYtMi42OS02LTYgMy4zMSAwIDYgMi42OSA2IDYgMC0zLjMxIDIuNjktNiA2LTYgMCAzLjMxLTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI5LjYyXCIsXCJyXCI6XCIxLjU2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDE4VXBSYXRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMi41aDEuNVYxNEgxM3pNMTMgMTBoMS41djEuNUgxM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDEySDguNXYtNC41SDdWOWgzdjZ6bTYtMWMwIC41NS0uNDUgMS0xIDFoLTIuNWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xSDE1Yy41NSAwIDEgLjQ1IDEgMXY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ2RnRBcGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMiA5LjQzVjEwaDh2LS41N3pNMTggNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMTQgOS40M1YxMGg4di0uNTd6TTE5IDE3di0yLjAxTDUgMTV2MmwtMy0zIDMtM3YyLjAxTDE5IDEzdi0ybDMgMy0zIDN6bS05IDJ2LTFINy41Yy0uMjggMC0uNS4yMi0uNS41djNjMCAuMjguMjIuNS41LjVoMmMuMjggMCAuNS0uMjIuNS0uNVYyMGMwLS4yOC0uMjItLjUtLjUtLjVIOFYxOWgyem0tMSAxLjV2LjVIOHYtLjVoMXptOC41LTEuNWgtMXYzaC0xdi0zaC0xdi0xaDN2MXptLTUgMHYuNWgxdjFoLTFWMjJoLTF2LTRIMTR2MWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRNb2RlcmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMjIgMjIuNjFjLS40LjE1LS44LjI5LTEuMjIuMzktNS4xNi0xLjI2LTktNi40NS05LTEyVjVsOS00IDkgNHY2YzAgLjktLjExIDEuNzgtLjMgMi42NS0uODEtLjQxLTEuNzMtLjY1LTIuNy0uNjUtMy4zMSAwLTYgMi42OS02IDYgMCAxLjM2LjQ2IDIuNjEgMS4yMiAzLjYxek0xOSAyMHYyLjk5cy0xLjk5LjAxLTIgMFYyMGgtM3YtMmgzdi0zaDJ2M2gzdjJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFJlYWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOVY3aC0yVjIuODRBOS45MjkgOS45MjkgMCAwIDAgMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyYzAtMS4wNS0uMTctMi4wNS0uNDctM0gxOHptLTIuNS0xYy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41em0tNyAwYy44MyAwIDEuNS42NyAxLjUgMS41UzkuMzMgMTEgOC41IDExIDcgMTAuMzMgNyA5LjUgNy42NyA4IDguNSA4em0zLjUgOS41Yy0yLjMzIDAtNC4zMS0xLjQ2LTUuMTEtMy41aDEwLjIyYy0uOCAyLjA0LTIuNzggMy41LTUuMTEgMy41ek0yMiAzaDJ2MmgtMnYyaC0yVjVoLTJWM2gyVjFoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcmNoaXRlY3R1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjM2IDE4Ljc4IDYuNjEgMjFsMS42Mi0xLjU0IDIuNzctNy42Yy0uNjgtLjE3LTEuMjgtLjUxLTEuNzctLjk4bC0yLjg3IDcuOXpNMTQuNzcgMTAuODhjLS40OS40Ny0xLjEuODEtMS43Ny45OGwyLjc3IDcuNkwxNy4zOSAyMWwuMjYtMi4yMi0yLjg4LTcuOXpNMTUgOGMwLTEuMy0uODQtMi40LTItMi44MlYzaC0ydjIuMThDOS44NCA1LjYgOSA2LjcgOSA4YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTN6bS0zIDFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzaXN0V2Fsa2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMi41XCIsXCJjeVwiOlwiNC41XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDE3LjcyLS42NC02LjM3QTEuNDkgMS40OSAwIDAgMCAxNy42NCAxMEgxNmMtMS41LS4wMi0yLjg2LS41NC0zLjc2LTEuNDRsLTItMS45OEExLjk1IDEuOTUgMCAwIDAgOC44MyA2Yy0uNTEgMC0xLjAyLjItMS40MS41OUw0LjA4IDkuOTFjLS41My42OC0uNTEgMS41Ny0uMjEgMi4xM2wxLjQzIDIuOC0zLjE1IDQuMDUgMS41NyAxLjI0TDcuNCAxNS40bC0uMTctMS4zNi43Ny43MVYyMGgydi02LjEybC0yLjEyLTIuMTIgMi4zNi0yLjM2Yy45NC45NCAxLjcyIDEuODIgMy41OSAyLjMyTDEzIDIwaDEuNWwuNDEtMy41aDMuMThsLjE0IDEuMjJjLS40NC4yNi0uNzMuNzQtLjczIDEuMjggMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41YzAtLjU0LS4yOS0xLjAyLS43My0xLjI4ek0xNS4wOSAxNWwuNDEtMy41aDJsLjQxIDMuNWgtMi44MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFja0hhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyNGMtMy4yNiAwLTYuMTktMS45OS03LjQtNS4wMmwtMy4wMy03LjYxYTEgMSAwIDAgMSAxLjI0LTEuMzJsLjc5LjI2Yy41Ni4xOCAxLjAyLjYxIDEuMjQgMS4xNkw3LjI1IDE1SDhWMy4yNWExLjI1IDEuMjUgMCAwIDEgMi41IDBWMTJoMVYxLjI1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMFYxMmgxVjIuNzVhMS4yNSAxLjI1IDAgMCAxIDIuNSAwVjEyaDFWNS43NWExLjI1IDEuMjUgMCAwIDEgMi41IDBWMTZjMCA0LjQyLTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMS41XCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjEzIDcuMTJjLS4xNy0uMzUtLjQ0LS42NS0uOC0uODVhMS45OCAxLjk4IDAgMCAwLTEuOTMtLjAzdi0uMDFMNCA5LjNWMTRoMnYtMy41NGwxLjUtLjg1QzcuMTggMTAuNzEgNyAxMS44NSA3IDEzdjUuMzNMNC40IDIxLjggNiAyM2wzLTQgLjIyLTMuNTRMMTEgMTh2NWgydi02LjVsLTEuOTctMi44MWMtLjA0LS41Mi0uMTQtMS43Ni40NS0zLjQuNzUgMS4xNCAxLjg4IDEuOTggMy4yIDIuNDFMMjAuNjMgMjNsLjg3LS41LTUuNDgtOS41SDE3di0yYy0uNDkgMC0yLjg4LjE3LTQuMDgtMi4yMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3LjVjLjk3IDAgMS43NS0uNzggMS43NS0xLjc1UzEyLjk3IDQgMTIgNHMtMS43NS43OC0xLjc1IDEuNzVTMTEuMDMgNy41IDEyIDcuNXpNMTQgMjB2LTVoMXYtNC41YzAtMS4xLS45LTItMi0yaC0yYy0xLjEgMC0yIC45LTIgMlYxNWgxdjVoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZhMiAyIDAgMCAwIDItMmMwLS4zOC0uMS0uNzMtLjI5LTEuMDNMMTIgMGwtMS43MSAyLjk3Yy0uMTkuMy0uMjkuNjUtLjI5IDEuMDMgMCAxLjEuOSAyIDIgMnptNC42IDkuOTktMS4wNy0xLjA3LTEuMDggMS4wN2MtMS4zIDEuMy0zLjU4IDEuMzEtNC44OSAwbC0xLjA3LTEuMDctMS4wOSAxLjA3QzYuNzUgMTYuNjQgNS44OCAxNyA0Ljk2IDE3Yy0uNzMgMC0xLjQtLjIzLTEuOTYtLjYxVjIxYzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMXYtNC42MWMtLjU2LjM4LTEuMjMuNjEtMS45Ni42MS0uOTIgMC0xLjc5LS4zNi0yLjQ0LTEuMDF6TTE4IDloLTVWN2gtMnYySDZjLTEuNjYgMC0zIDEuMzQtMyAzdjEuNTRjMCAxLjA4Ljg4IDEuOTYgMS45NiAxLjk2LjUyIDAgMS4wMi0uMiAxLjM4LS41N2wyLjE0LTIuMTMgMi4xMyAyLjEzYy43NC43NCAyLjAzLjc0IDIuNzcgMGwyLjE0LTIuMTMgMi4xMyAyLjEzYy4zNy4zNy44Ni41NyAxLjM4LjU3IDEuMDggMCAxLjk2LS44OCAxLjk2LTEuOTZWMTJDMjEgMTAuMzQgMTkuNjYgOSAxOCA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXRjaGluZ1Bva2Vtb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEyYTIuNSAyLjUgMCAwIDEtNSAwIDIuNSAyLjUgMCAwIDEgNSAwem03LjUgMGMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTIgNi40OCAyIDEyIDJzMTAgNC40OCAxMCAxMHptLTIgMGgtNGMwLTIuMjEtMS43OS00LTQtNHMtNCAxLjc5LTQgNEg0YzAgNC40MSAzLjU5IDggOCA4czgtMy41OSA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsZWFuSGFuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45OSA1IC42MyAxLjM3IDEuMzcuNjMtMS4zNy42M0wxNi45OSA5bC0uNjMtMS4zN0wxNC45OSA3bDEuMzctLjYzLjYzLTEuMzdNMTEgNi4xM1Y0aDJjLjU3IDAgMS4xLjE3IDEuNTUuNDVsMS40My0xLjQzQTQuODk5IDQuODk5IDAgMCAwIDEzIDJINy41djJIOXYyLjE0QTUuMDA3IDUuMDA3IDAgMCAwIDUuMjYgOS41aDMuOThMMTUgMTEuNjV2LS42MmE1IDUgMCAwIDAtNC00Ljl6TTEgMjJoNFYxMUgxdjExem0xOS01aC03bC0yLjA5LS43My4zMy0uOTRMMTMgMTZoMi44MmMuNjUgMCAxLjE4LS41MyAxLjE4LTEuMTggMC0uNDktLjMxLS45My0uNzctMS4xMUw4Ljk3IDExSDd2OS4wMkwxNCAyMmw4LTNjLS4wMS0xLjEtLjg5LTItMi0yem0wLTNjMS4xIDAgMi0uOSAyLTJzLTItNC0yLTQtMiAyLjktMiA0IC45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbzIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA5aC0zYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTF6bS0uNSA0LjVoLTJ2LTNoMnYzek04IDEzdjFjMCAuNTUtLjQ1IDEtMSAxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxSDYuNXYtLjVoLTJ2M2gyVjEzSDh6bTEyLjUgMi41aC0ydjFoM1YxOEgxN3YtMi41YzAtLjU1LjQ1LTEgMS0xaDJ2LTFoLTNWMTJoMy41Yy41NSAwIDEgLjQ1IDEgMXYxLjVjMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb21wb3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuODcgMTEuODFBMi41IDIuNSAwIDAgMSAxNSA4aDFjMS41MSAwIDItMSAyLTFzLjU1IDYtMyA2Yy0uNDkgMC0uOTQtLjE0LTEuMzItLjM4LS4yNC42NC0uNTkgMS43Ni0uNzYgMi45NiAxLjI2LjIyIDIuMjguODkgMi43NyAxLjc3QTYuNTA1IDYuNTA1IDAgMCAwIDE4LjUgMTJoM2MwIDUuMjQtNC4yNiA5LjUtOS41IDkuNVMyLjUgMTcuMjQgMi41IDEyIDYuNzYgMi41IDEyIDIuNVYwbDQgNC00IDRWNS41Yy0zLjU4IDAtNi41IDIuOTItNi41IDYuNSAwIDIuMjEgMS4xMSA0LjE3IDIuODEgNS4zNS41MS0uOTIgMS42My0xLjYyIDIuOTgtMS44LS4wOS0uNjktLjI2LTEuNDItLjQ5LTIuMDMtLjM1LjMtLjguNDgtMS4zLjQ4LTEuMSAwLTItLjktMi0ydi0uOTljMC0uNTYtLjE5LTEuMDktLjUtMS41MSAwIDAgNC40NS0uMjMgNC41IDIuNSAwIC4yOS0uMDYuNTYtLjE3LjgtLjQyLS4zMi0uODYtLjYtMS4zMy0uOC41OC40MyAxLjM3IDEuMzcgMiAyLjYuNjctMS42MiAxLjY4LTMuMjcgMy00LjYtLjc2LjUyLTEuNDcgMS4xMi0yLjEzIDEuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbm5lY3RXaXRob3V0Q29udGFjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0SDlhOSA5IDAgMCAxIDktOXYyYy0zLjg3IDAtNyAzLjEzLTcgN3ptNy0zVjljLTIuNzYgMC01IDIuMjQtNSA1aDJjMC0xLjY2IDEuMzQtMyAzLTN6TTcgNGMwLTEuMTEtLjg5LTItMi0ycy0yIC44OS0yIDIgLjg5IDIgMiAyIDItLjg5IDItMnptNC40NS41aC0yQTIuOTkgMi45OSAwIDAgMSA2LjUgN2gtM0MyLjY3IDcgMiA3LjY3IDIgOC41VjExaDZWOC43NGE0Ljk3IDQuOTcgMCAwIDAgMy40NS00LjI0ek0xOSAxN2MxLjExIDAgMi0uODkgMi0ycy0uODktMi0yLTItMiAuODktMiAyIC44OSAyIDIgMnptMS41IDFoLTNhMi45OSAyLjk5IDAgMCAxLTIuOTUtMi41aC0yQTQuOTcgNC45NyAwIDAgMCAxNiAxOS43NFYyMmg2di0yLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb25zdHJ1Y3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMy43ODMgMTUuMTcyIDIuMTIxLTIuMTIxIDUuOTk2IDUuOTk2LTIuMTIxIDIuMTIxek0xNy41IDEwYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41IDAtLjU4LS4xNi0xLjEyLS40MS0xLjZsLTIuNyAyLjctMS40OS0xLjQ5IDIuNy0yLjdjLS40OC0uMjUtMS4wMi0uNDEtMS42LS40MUMxNS41NyAzIDE0IDQuNTcgMTQgNi41YzAgLjQxLjA4LjguMjEgMS4xNmwtMS44NSAxLjg1LTEuNzgtMS43OC43MS0uNzEtMS40MS0xLjQxTDEyIDMuNDlhMyAzIDAgMCAwLTQuMjQgMEw0LjIyIDcuMDNsMS40MSAxLjQxSDIuODFsLS43MS43MSAzLjU0IDMuNTQuNzEtLjcxVjkuMTVsMS40MSAxLjQxLjcxLS43MSAxLjc4IDEuNzgtNy40MSA3LjQxIDIuMTIgMi4xMkwxNi4zNCA5Ljc5Yy4zNi4xMy43NS4yMSAxLjE2LjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb29raWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45NSAxMC45OWMtMS43OS0uMDMtMy43LTEuOTUtMi42OC00LjIyLTIuOTggMS01Ljc3LTEuNTktNS4xOS00LjU2QzYuOTUuNzEgMiA2LjU4IDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgNS44OSAwIDEwLjU0LTUuMDggOS45NS0xMS4wMXpNOC41IDE1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNy42NyAxMiA4LjUgMTJzMS41LjY3IDEuNSAxLjVTOS4zMyAxNSA4LjUgMTV6bTItNUM5LjY3IDEwIDkgOS4zMyA5IDguNVM5LjY3IDcgMTAuNSA3czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNC41IDZjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29yb25hdmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4yNSAxMC41Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1aC0xLjU0YTYuOTc4IDYuOTc4IDAgMCAwLTEuNTItMy42NWwxLjA5LTEuMDkuMDEuMDFjLjI5LjI5Ljc3LjI5IDEuMDYgMHMuMjktLjc3IDAtMS4wNkwxOC41NCA0LjRhLjc1NC43NTQgMCAwIDAtMS4wNiAwYy0uMjkuMjktLjI5Ljc2LS4wMSAxLjA1bC0xLjA5IDEuMDlhNy4wMTUgNy4wMTUgMCAwIDAtMy42NC0xLjUxVjMuNWguMDFjLjQxIDAgLjc1LS4zNC43NS0uNzVTMTMuMTYgMiAxMi43NSAyaC0xLjVjLS40MSAwLS43NS4zNC0uNzUuNzVzLjMzLjc0Ljc0Ljc1djEuNTVjLTEuMzcuMTQtMi42Mi42OS0zLjY0IDEuNTFMNi41MSA1LjQ3bC4wMS0uMDFjLjI5LS4yOS4yOS0uNzcgMC0xLjA2YS43NTQuNzU0IDAgMCAwLTEuMDYgMEw0LjQgNS40NmMtLjI5LjI5LS4yOS43NyAwIDEuMDYuMjkuMjkuNzYuMjkgMS4wNS4wMWwxLjA5IDEuMDlhNi44OSA2Ljg5IDAgMCAwLTEuNSAzLjYzSDMuNWMwLS40MS0uMzQtLjc1LS43NS0uNzVzLS43NS4zNC0uNzUuNzV2MS41YzAgLjQxLjM0Ljc1Ljc1Ljc1cy43NS0uMzQuNzUtLjc1aDEuNTRjLjE1IDEuMzcuNjkgMi42MSAxLjUgMy42M2wtMS4wOSAxLjA5YS43NDIuNzQyIDAgMCAwLTEuMDUuMDFjLS4yOS4yOS0uMjkuNzcgMCAxLjA2bDEuMDYgMS4wNmMuMjkuMjkuNzcuMjkgMS4wNiAwIC4yOS0uMjkuMjktLjc3IDAtMS4wNmwtLjAxLS4wMSAxLjA5LTEuMDljMS4wMi44MiAyLjI2IDEuMzYgMy42MyAxLjUxdjEuNTVjLS40MS4wMS0uNzQuMzQtLjc0Ljc1cy4zNC43NS43NS43NWgxLjVjLjQxIDAgLjc1LS4zNC43NS0uNzVzLS4zNC0uNzUtLjc1LS43NWgtLjAxdi0xLjU0YzEuMzctLjE0IDIuNjItLjY5IDMuNjQtMS41MWwxLjA5IDEuMDljLS4yOS4yOS0uMjguNzYuMDEgMS4wNS4yOS4yOS43Ny4yOSAxLjA2IDBsMS4wNi0xLjA2Yy4yOS0uMjkuMjktLjc3IDAtMS4wNmEuNzU0Ljc1NCAwIDAgMC0xLjA2IDBsLS4wMS4wMS0xLjA5LTEuMDlhNy4wMjUgNy4wMjUgMCAwIDAgMS41Mi0zLjY1aDEuNTRjMCAuNDEuMzQuNzUuNzUuNzVzLjc1LS4zNC43NS0uNzV2LTEuNWMuMDEtLjQtLjMzLS43NC0uNzQtLjc0ek0xMy43NSA4Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTEyIDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0xLjc1LTVjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNOC41IDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTEuNzUgM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0zLjUgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0uNzUtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDEtLjQ1IDEtMSAxLTEtLjQ1LTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3J1ZWx0eUZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi44NCAxNC41MmMtLjI2LS4xOS0uNjItLjYzLS43OS0uODRDMTcuMjQgMTIuMDEgMTkgOC44NyAxOSA1YzAtMS45NS0uNzQtMy0yLTMtMS41NCAwLTMuOTYgMi4wNi01IDUuOTdDMTAuOTYgNC4wNiA4LjU0IDIgNyAyIDUuNzQgMiA1IDMuMDUgNSA1YzAgMy44NyAxLjc2IDcuMDEgMi45NSA4LjY4LS4xNy4yMS0uNTMuNjUtLjc5Ljg0LS41LjQxLTEuNjYgMS4zNy0xLjY2IDIuOTggMCAyLjIxIDEuNzkgNCA0IDQgMS41NSAwIDIuNS0uNTYgMi41LS41NnMuOTUuNTYgMi41LjU2YzIuMjEgMCA0LTEuNzkgNC00IDAtMS42MS0xLjE2LTIuNTctMS42Ni0yLjk4ek05LjM1IDEyLjJDOC4zNCAxMC43IDcgOC4xMiA3IDVjMC0uNDkuMDYtLjguMTItLjk3Ljk0LjMxIDMuMjQgMi43MSAzLjM4IDcuNjQtLjQ3LjEyLS44NC4zLTEuMTUuNTN6bTEuMTUgNC41NWMtLjI4IDAtLjUtLjM0LS41LS43NXMuMjItLjc1LjUtLjc1LjUuMzQuNS43NS0uMjIuNzUtLjUuNzV6TTEyIDE5LjVjLS41NSAwLTEtLjcyLTEtMXMuNDUtLjUgMS0uNSAxIC4yMiAxIC41LS40NSAxLTEgMXptMS41LTIuNzVjLS4yOCAwLS41LS4zNC0uNS0uNzVzLjIyLS43NS41LS43NS41LjM0LjUuNzUtLjIyLjc1LS41Ljc1em0wLTUuMDhjLjE0LTQuOTMgMi40NC03LjMzIDMuMzgtNy42NC4wNi4xNy4xMi40OC4xMi45NyAwIDMuMTItMS4zNCA1LjctMi4zNSA3LjItLjMxLS4yMy0uNjgtLjQxLTEuMTUtLjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDeWNsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDcuNDdWNS4zNUMyMC4wNSA0Ljc3IDE2LjU2IDQgMTIgNGMtMi4xNSAwLTQuMTEuODYtNS41NCAyLjI0LjEzLS44NS40LTIuNCAxLjAxLTQuMjRINS4zNUM0Ljc3IDMuOTUgNCA3LjQ0IDQgMTJjMCAyLjE1Ljg2IDQuMTEgMi4yNCA1LjU0LS44NS0uMTQtMi40LS40LTQuMjQtMS4wMXYyLjEyQzMuOTUgMTkuMjMgNy40NCAyMCAxMiAyMGMyLjE1IDAgNC4xMS0uODYgNS41NC0yLjI0LS4xNC44NS0uNCAyLjQtMS4wMSA0LjI0aDIuMTJjLjU4LTEuOTUgMS4zNS01LjQ0IDEuMzUtMTAgMC0yLjE1LS44Ni00LjExLTIuMjQtNS41NC44NS4xMyAyLjQuNCA0LjI0IDEuMDF6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDkgMTIgMiAyIDloOXYxM2gyVjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQuMTQgMTItMS45Ni4zNy44MiA0LjM3VjIyaDJsLjAyLTRIN3Y0aDJ2LTZINC45ek0xOS4xIDE2SDE1djZoMnYtNGgxLjk4bC4wMiA0aDJ2LTUuMjZsLjgyLTQuMzctMS45Ni0uMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERld1BvaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M2IDMuMzQgNiA1djhjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wOS0yLTR6bS00LTJWNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MUg5djFoMXYySDl2MWgxdjFIOHptMTMtNC41YzAtLjg0LTEuNS0yLjUtMS41LTIuNVMxOCA1LjY2IDE4IDYuNWMwIC44My42NyAxLjUgMS41IDEuNVMyMSA3LjMzIDIxIDYuNXptLTQgM2MwLS44NC0xLjUtMi41LTEuNS0yLjVTMTQgOC42NiAxNCA5LjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41em00IDNjMC0uODQtMS41LTIuNS0xLjUtMi41UzE4IDExLjY2IDE4IDEyLjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXZlcnNpdHkxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI0XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS4yMiAxNy41OEEyLjAxIDIuMDEgMCAwIDAgMCAxOS40M1YyMWg0LjV2LTEuNjFjMC0uODMuMjMtMS42MS42My0yLjI5LS4zNy0uMDYtLjc0LS4xLTEuMTMtLjEtLjk5IDAtMS45My4yMS0yLjc4LjU4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjIwXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuNzggMTcuNThBNi45NSA2Ljk1IDAgMCAwIDIwIDE3Yy0uMzkgMC0uNzYuMDQtMS4xMy4xLjQuNjguNjMgMS40Ni42MyAyLjI5VjIxSDI0di0xLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNMTYuMjQgMTYuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxOS4zOVYyMWgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek05IDEyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjQ4IDEwLjg2QzIuMTcgMTAuMSAyIDkuMzYgMiA4LjYgMiA2LjAyIDQuMDIgNCA2LjYgNGMyLjY4IDAgMy44MiAxLjc0IDUuNCAzLjU5QzEzLjU3IDUuNzYgMTQuNyA0IDE3LjQgNCAxOS45OCA0IDIyIDYuMDIgMjIgOC42YzAgLjc2LS4xNyAxLjUtLjQ4IDIuMjYuNjUuMzEgMS4xOC44MiAxLjUzIDEuNDQuNi0xLjIuOTUtMi40Mi45NS0zLjdDMjQgNC45IDIxLjEgMiAxNy40IDJjLTIuMDkgMC00LjA5Ljk3LTUuNCAyLjUxQzEwLjY5IDIuOTcgOC42OSAyIDYuNiAyIDIuOSAyIDAgNC45IDAgOC42YzAgMS4yOC4zNSAyLjUuOTYgMy43LjM1LS42Mi44OC0xLjEzIDEuNTItMS40NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGl2ZXJzaXR5MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjEgMTUuOSAxLjQyLTEuNDJDOC43OSAxMi4wNSA3IDEwLjQxIDcgOC44NSA3IDcuOCA3LjggNyA4Ljg1IDdjMS4xMSAwIDEuNTQuNjUgMi42OCAyaC45M2MxLjEyLTEuMzEgMS41My0yIDIuNjgtMiAuODcgMCAxLjU1LjU0IDEuNzcgMS4zMi4zNS0uMDQuNjgtLjA2IDEtLjA2LjM2IDAgLjcuMDMgMS4wMy4wOEMxOC43IDYuNDMgMTcuMTMgNSAxNS4xNSA1Yy0uMTIgMC0uMjMuMDMtLjM1LjA0LjEyLS4zMy4yLS42Ny4yLTEuMDQgMC0xLjY2LTEuMzQtMy0zLTNTOSAyLjM0IDkgNGMwIC4zNy4wOC43MS4yIDEuMDQtLjEyLS4wMS0uMjMtLjA0LS4zNS0uMDRDNi42OSA1IDUgNi42OSA1IDguODVjMCAyLjQyIDIuMDQgNC4zMSA1LjEgNy4wNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuNSAxNi4yNGMtLjMyLS4xOC0uNjYtLjI5LTEtLjM1LjA3LS4xLjE1LS4xOC4yMS0uMjggMS4wOC0xLjg3LjQ2LTQuMTgtMS40MS01LjI2LTIuMDktMS4yMS00Ljc2LS4zOS04LjY1LjlsLjUyIDEuOTRjMy40Ny0xLjE0IDUuNzktMS44OCA3LjE0LTEuMS45MS41MyAxLjIgMS42MS42OCAyLjUzLS41Ni45Ni0xLjMzIDEtMy4wNyAxLjMybC0uNDcuODFjLjU4IDEuNjIuOTcgMi4zMy4zOSAzLjMyLS41My45MS0xLjYxIDEuMi0yLjUzLjY4LS4wNi0uMDMtLjExLS4wOS0uMTctLjEzLS4zLjY3LS42NCAxLjI0LTEuMDMgMS43My4wNy4wNC4xMy4wOS4yLjE0IDEuODcgMS4wOCA0LjE4LjQ2IDUuMjYtMS40MS4wNi0uMS4wOS0uMjEuMTQtLjMyLjIyLjI3LjQ4LjUxLjguNjkgMS40My44MyAzLjI3LjM0IDQuMS0xLjFzLjMyLTMuMjktMS4xMS00LjExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4zMiAxNC4wMWMtLjc0IDMuNTgtMS4yNyA1Ljk1LTIuNjIgNi43My0uOTEuNTMtMiAuMjQtMi41My0uNjgtLjU2LS45Ni0uMi0xLjY2LjM5LTMuMzJsLS40Ni0uODFjLTEuNy0uMzEtMi41LS4zMy0zLjA3LTEuMzItLjUzLS45MS0uMjQtMiAuNjgtMi41My4wOS0uMDUuMTktLjA4LjI5LS4xMS0uMzUtLjU2LS42NC0xLjE3LS44Mi0xLjg1LS4xNi4wNy0uMzIuMTQtLjQ4LjIzLTEuODcgMS4wOC0yLjQ5IDMuMzktMS40MSA1LjI2LjA2LjEuMTQuMTguMjEuMjgtLjM0LjA2LS42OC4xNy0xIC4zNS0xLjQzLjgzLTEuOTMgMi42Ni0xLjEgNC4xczIuNjYgMS45MyA0LjEgMS4xYy4zMi0uMTguNTgtLjQyLjgtLjY5LjA1LjExLjA4LjIyLjE0LjMyIDEuMDggMS44NyAzLjM5IDIuNDkgNS4yNiAxLjQxIDIuMDktMS4yMSAyLjcxLTMuOTMgMy41NS03Ljk0bC0xLjkzLS41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGl2ZXJzaXR5MyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMzIgMTMuMDFjLjk2LjAyIDEuODUuNSAyLjQ1IDEuMzRBMy45NjEgMy45NjEgMCAwIDAgMTIgMTZjMS4yOSAwIDIuNS0uNjIgMy4yMy0xLjY2LjYtLjg0IDEuNDktMS4zMiAyLjQ1LTEuMzQtLjcyLTEuMjItMy42LTItNS42OC0yLTIuMDcgMC00Ljk2Ljc4LTUuNjggMi4wMXpNNCAxM2MxLjY2IDAgMy0xLjM0IDMtM1M1LjY2IDcgNCA3cy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6TTIwIDEzYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pNMTIgMTBjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTMtMyAxLjM0LTMgMyAxLjM0IDMgMyAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNGgtMy4yN2MtLjc3IDAtMS4zNS40NS0xLjY4LjkyLS4wNC4wNi0xLjM2IDIuMDgtNC4wNSAyLjA4LTEuNDMgMC0zLjAzLS42NC00LjA1LTIuMDgtLjM5LS41NS0xLS45Mi0xLjY4LS45MkgzYy0xLjEgMC0yIC45LTIgMnY0aDd2LTIuMjZjMS4xNS44IDIuNTQgMS4yNiA0IDEuMjZzMi44NS0uNDYgNC0xLjI2VjIwaDd2LTRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbWFpbkFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdWM0gydjE4aDE0di0yaC00di0yaDJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDh2NmgyVjdIMTJ6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTAtNEg0VjVoMnYyem00IDEySDh2LTJoMnYyem0wLTRIOHYtMmgydjJ6bTAtNEg4VjloMnYyem0wLTRIOFY1aDJ2MnptMTQgMTJ2MmgtMnYyaC0ydi0yaC0ydi0yaDJ2LTJoMnYyaDJ6bS02LThoLTJ2Mmgydi0yem0wIDRoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb21haW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdWM0gydjE4aDIwVjdIMTJ6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTAtNEg0VjVoMnYyem00IDEySDh2LTJoMnYyem0wLTRIOHYtMmgydjJ6bTAtNEg4VjloMnYyem0wLTRIOFY1aDJ2MnptMTAgMTJoLTh2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloOHYxMHptLTItOGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvd25oaWxsU2tpaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSA0LjVjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyem0tMi43MiAxNi40Ljc2LjI3YTUuOTMzIDUuOTMzIDAgMCAwIDQuMzQtLjE3TDIyIDIyLjEzYy0xLjA1LjU1LTIuMjQuODctMy41Ljg3LS44NiAwLTEuNjgtLjE0LTIuNDUtLjQxTDIgMTcuNDdsLjUtMS40MSA2LjkgMi41MSAxLjcyLTQuNDQtMy41Ny0zLjczYy0uODktLjk0LS42Ny0yLjQ3LjQ1LTMuMTJsMy40OC0yLjAxYzEuMS0uNjQgMi41Mi0uMSAyLjkxIDEuMTFsLjMzIDEuMDhhNS4wMTcgNS4wMTcgMCAwIDAgMi44MyAzLjE0bC41Mi0xLjYgMS40My40Ni0xLjEyIDMuNDVBNy4wMjkgNy4wMjkgMCAwIDEgMTMgOC41OWwtMi41MyAxLjQ1IDMuMDMgMy40Ni0yLjIyIDUuNzYgMy4wOSAxLjEyIDIuMS02LjQ0Yy40Ni4xOC45NC4zMSAxLjQ0LjQxbC0yLjEzIDYuNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXROb3RpZmljYXRpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNTggNi4yNSAxLjc3IDEuNzdMMTQuMzcgMTNIMTIuNnYtMS43N2w0Ljk4LTQuOTh6bTMuMjctLjQ0LTEuMDYtMS4wNmMtLjItLjItLjUxLS4yLS43MSAwbC0uODUuODVMMjAgNy4zN2wuODUtLjg1Yy4yLS4yLjItLjUyIDAtLjcxek0xOCAxMi4yVjE3aDJ2Mkg0di0yaDJ2LTdjMC0yLjc5IDEuOTEtNS4xNCA0LjUtNS44di0uN2MwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXYuN2MuODIuMjEgMS41Ny41OSAyLjIxIDEuMDlMMTAuNiAxMC40VjE1aDQuNmwyLjgtMi44ek0xMCAyMGg0YzAgMS4xLS45IDItMiAycy0yLS45LTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxkZXJseVdvbWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxMWMtMS41NiAwLTIuOTItLjktMy41OC0yLjIxbC0uNzktMS42N0MxNC4xMiA3LjEgMTMuNjMgNiAxMi4zNCA2IDguNzIgNiA2IDE2LjY5IDYgMTloMi41bC0yLjEgMi44TDggMjNsMy00aDJ2NGgydi00LjAzTDEzIDEzbC40OS0yLjcxQTYuMDIgNi4wMiAwIDAgMCAxNyAxMi44MXYuNjloMXYtMWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYyM2gxVjEyLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xMS42IDIuOTFjLS4wNi4xOS0uMS4zOC0uMS41OSAwIDEuMS45IDIgMiAyczItLjkgMi0yLS45LTItMi0yYy0uMjEgMC0uNC4wNC0uNTkuMS0uMTUtLjM1LS41LS42LS45MS0uNi0uNTUgMC0xIC40NS0xIDEgMCAuNDEuMjUuNzYuNi45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxkZXJseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNi41IDdWMjNoLTFWMTIuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjV2MWgtMXYtLjY5YTYuMDIgNi4wMiAwIDAgMS0zLjUxLTIuNTJjLS4zMS44Ny0uNDkgMS43OC0uNDkgMi43MSAwIC4yMy4wMi40Ni4wMy42OUwxNSAxNi41VjIzaC0ydi01bC0xLjc4LTIuNTRMMTEgMTlsLTMgNC0xLjYtMS4yTDkgMTguMzNWMTNjMC0xLjE1LjE4LTIuMjkuNS0zLjM5bC0xLjUuODVWMTRINlY5LjNsNS40LTMuMDd2LjAxYTIgMiAwIDAgMSAxLjk0LjAzYy4zNi4yMS42My41MS44Ljg1bC43OSAxLjY3QTMuOTg3IDMuOTg3IDAgMCAwIDE4LjUgMTFjLjgzIDAgMS41LjY3IDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtb2ppRW1vdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek04LjUgOGMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjMzIDExIDguNSAxMSA3IDEwLjMzIDcgOS41IDcuNjcgOCA4LjUgOHpNMTIgMThjLTIuMjggMC00LjIyLTEuNjYtNS00aDEwYy0uNzggMi4zNC0yLjcyIDQtNSA0em0zLjUtN2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE0LjY3IDggMTUuNSA4czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW1vamlFdmVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1aC0yVjNIN3YySDVjLTEuMSAwLTIgLjktMiAydjFjMCAyLjU1IDEuOTIgNC42MyA0LjM5IDQuOTRBNS4wMSA1LjAxIDAgMCAwIDExIDE1LjlWMTlIN3YyaDEwdi0yaC00di0zLjFhNS4wMSA1LjAxIDAgMCAwIDMuNjEtMi45NkMxOS4wOCAxMi42MyAyMSAxMC41NSAyMSA4VjdjMC0xLjEtLjktMi0yLTJ6TTUgOFY3aDJ2My44MkM1Ljg0IDEwLjQgNSA5LjMgNSA4em0xNCAwYzAgMS4zLS44NCAyLjQtMiAyLjgyVjdoMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaUZsYWdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgOS0xLTJIN1Y1LjcyYy42LS4zNCAxLS45OCAxLTEuNzIgMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyYzAgLjc0LjQgMS4zOCAxIDEuNzJWMjFoMnYtNGg1bDEgMmg3VjloLTZ6bTQgOGgtNGwtMS0ySDdWOWg1bDEgMmg1djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtb2ppRm9vZEJldmVyYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g5djIuNGwxLjgxIDEuNDVjLjEyLjA5LjE5LjI0LjE5LjM5djQuMjZjMCAuMjgtLjIyLjUtLjUuNWgtNGMtLjI4IDAtLjUtLjIyLS41LS41VjcuMjRjMC0uMTUuMDctLjMuMTktLjM5TDggNS40VjNINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJhMiAyIDAgMCAwIDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bTAgNWgtMlY1aDJ2M3pNNCAxOWgxNnYySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtb2ppTmF0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTQgNC44OEExLjMyIDEuMzIgMCAwIDAgMjAuNjggNEgxOS42bC0uMzEtLjk3QzE5LjE1IDIuNDMgMTguNjEgMiAxOCAycy0xLjE1LjQzLTEuMjkgMS4wNEwxNi40IDRoLTEuMDdjLS41NyAwLTEuMDguMzUtMS4yNi44OC0uMTkuNTYuMDQgMS4xNy41NiAxLjQ4bC44Ny41Mi0uNCAxLjI0Yy0uMjMuNTgtLjA0IDEuMjUuNDUgMS42Mi4yMy4xNy41MS4yNi43OC4yNi4zMSAwIC42MS0uMTEuODYtLjMybC44MS0uNy44MS43Yy4yNS4yMS41NS4zMi44Ni4zMi4yNyAwIC41NS0uMDkuNzgtLjI2LjUtLjM3LjY4LTEuMDQuNDUtMS42MmwtLjM5LTEuMjQuODctLjUyYy41MS0uMzEuNzQtLjkyLjU2LTEuNDh6TTE4IDdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNMTMuNDkgMTAuNTFjLS40My0uNDMtLjk0LS43My0xLjQ5LS45M1Y4aC0xdjEuMzhjLS4xMS0uMDEtLjIzLS4wMy0uMzQtLjAzLTEuMDIgMC0yLjA1LjM5LTIuODMgMS4xNy0uMTYuMTYtLjMuMzQtLjQzLjUzTDYgMTAuNTJhMy4wMSAzLjAxIDAgMCAwLTMuODMgMS44MmMtLjI3Ljc1LS4yMyAxLjU3LjEyIDIuMjkuMjMuNDguNTguODcgMSAxLjE2LS4zOCAxLjM1LS4wNiAyLjg1IDEgMy45MWEzLjk4MSAzLjk4MSAwIDAgMCAzLjkxIDFjLjI5LjQyLjY4Ljc3IDEuMTYgMSAuNDIuMi44NS4zIDEuMjkuMy4zNCAwIC42OC0uMDYgMS4wMS0uMTdhMy4wMDcgMy4wMDcgMCAwIDAgMS44Mi0zLjg1bC0uNTItMS4zN2MuMTgtLjEzLjM2LS4yNy41My0uNDMuODctLjg3IDEuMjQtMi4wNCAxLjE0LTMuMTdIMTZ2LTFoLTEuNTljLS4xOS0uNTUtLjQ5LTEuMDYtLjkyLTEuNXptLTguODIgMy43OGMtLjI1LS4wOS0uNDUtLjI3LS41Ny0uNTFzLS4xMy0uNTEtLjA0LS43NmMuMTktLjUyLjc2LS43OSAxLjI2LS42MWwzLjE2IDEuMTljLTEuMTUuNi0yLjYzIDEuMTEtMy44MS42OXptNi4zMiA1LjY1Yy0uMjUuMDktLjUyLjA4LS43Ni0uMDRhLjk4OS45ODkgMCAwIDEtLjUxLS41N2MtLjQyLTEuMTguMDktMi42NS43LTMuOGwxLjE4IDMuMTNjLjE4LjUyLS4wOSAxLjEtLjYxIDEuMjh6bTEuMjEtNS4zNC0uNjEtMS42MWMwLS4wMS0uMDEtLjAyLS4wMi0uMDNsLS4wNi0uMTJhLjY3My42NzMgMCAwIDAtLjA3LS4xMWwtLjA5LS4wOS0uMDktLjA5Yy0uMDMtLjAzLS4wNy0uMDUtLjExLS4wNy0uMDQtLjAyLS4wNy0uMDUtLjEyLS4wNi0uMDEgMC0uMDItLjAxLS4wMy0uMDJsLTEuNi0uNmExLjk2NiAxLjk2NiAwIDAgMSAyLjY3LjEzYy43My43My43NyAxLjg4LjEzIDIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtb2ppT2JqZWN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNjLS40NiAwLS45My4wNC0xLjQuMTQtMi43Ni41My00Ljk2IDIuNzYtNS40OCA1LjUyLS40OCAyLjYxLjQ4IDUuMDEgMi4yMiA2LjU2LjQzLjM4LjY2LjkxLjY2IDEuNDdWMTljMCAxLjEuOSAyIDIgMmguMjhhMS45OCAxLjk4IDAgMCAwIDMuNDQgMEgxNGMxLjEgMCAyLS45IDItMnYtMi4zMWMwLS41NS4yMi0xLjA5LjY0LTEuNDZBNi45NTYgNi45NTYgMCAwIDAgMTkgMTBjMC0zLjg3LTMuMTMtNy03LTd6bTIgMTZoLTR2LTFoNHYxem0wLTJoLTR2LTFoNHYxem0tMS41LTUuNTlWMTRoLTF2LTIuNTlMOS42NyA5LjU5bC43MS0uNzFMMTIgMTAuNWwxLjYyLTEuNjIuNzEuNzEtMS44MyAxLjgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaVBlb3BsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljg5IDguMTFDMTUuNSA3LjcyIDE0LjgzIDcgMTMuNTMgN2gtMi41NEM4LjI0IDYuOTkgNiA0Ljc1IDYgMkg0YzAgMy4xNiAyLjExIDUuODQgNSA2LjcxVjIyaDJ2LTZoMnY2aDJWMTAuMDVMMTguOTUgMTRsMS40MS0xLjQxLTQuNDctNC40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW1vamlTeW1ib2xzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyaDh2Mkgzek02IDExaDJWN2gzVjVIM3YyaDN6TTEyLjQwNCAyMC4xODJsNy43NzgtNy43NzggMS40MTQgMS40MTQtNy43NzggNy43Nzh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTQuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5LjVcIixcImN5XCI6XCIxOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxMUEyLjUgMi41IDAgMCAwIDE4IDguNVY0aDNWMmgtNHY0LjUxYy0uNDItLjMyLS45My0uNTEtMS41LS41MWEyLjUgMi41IDAgMCAwIDAgNXpNOS43NCAxNS45NmwtMS40MSAxLjQxLS43MS0uNzEuMzUtLjM1YTIuNDk5IDIuNDk5IDAgMCAwLTEuNzctNC4yNyAyLjQ5OSAyLjQ5OSAwIDAgMC0xLjc3IDQuMjdsLjM1LjM1LTEuMDYgMS4wNmMtLjk4Ljk4LS45OCAyLjU2IDAgMy41NC41LjUgMS4xNC43NCAxLjc4Ljc0czEuMjgtLjI0IDEuNzctLjczbDEuMDYtMS4wNiAxLjQxIDEuNDEgMS40MS0xLjQxLTEuNDEtMS40MSAxLjQxLTEuNDEtMS40MS0xLjQzek01Ljg1IDE0LjJjLjEyLS4xMi4yNi0uMTUuMzUtLjE1cy4yMy4wMy4zNS4xNWMuMTkuMi4xOS41MSAwIC43MWwtLjM1LjM1LS4zNS0uMzZhLjUwMS41MDEgMCAwIDEgMC0uN3ptMCA1LjY1Yy0uMTIuMTItLjI2LjE1LS4zNS4xNXMtLjIzLS4wMy0uMzUtLjE1YS41MTMuNTEzIDAgMCAxIDAtLjcxbDEuMDYtMS4wNi43MS43MS0xLjA3IDEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtb2ppVHJhbnNwb3J0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41NyAxMC42NmMtLjE0LS40LS41Mi0uNjYtLjk3LS42NmgtNy4xOWMtLjQ2IDAtLjgzLjI2LS45OC42NkwxMCAxNC43N2wuMDEgNS41MWMwIC4zOC4zMS43Mi42OS43MmguNjJjLjM4IDAgLjY4LS4zOC42OC0uNzZWMTloOHYxLjI0YzAgLjM4LjMxLjc2LjY5Ljc2aC42MWMuMzggMCAuNjktLjM0LjY5LS43MmwuMDEtMS4zN3YtNC4xNGwtMS40My00LjExem0tOC4xNi4zNGg3LjE5bDEuMDMgM2gtOS4yNWwxLjAzLTN6TTEyIDE3Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTggMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA5aDFWM0g3djVIMnYxM2gxVjloNVY0aDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTFoMnYySDV6TTEwIDVoMnYyaC0yek01IDE1aDJ2Mkg1ek01IDE5aDJ2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbmdpbmVlcmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTVjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6TTIyLjEgNi44NGMuMDEtLjExLjAyLS4yMi4wMi0uMzQgMC0uMTItLjAxLS4yMy0uMDMtLjM0bC43NC0uNThjLjA3LS4wNS4wOC0uMTUuMDQtLjIybC0uNy0xLjIxYy0uMDQtLjA4LS4xNC0uMS0uMjEtLjA4bC0uODYuMzVjLS4xOC0uMTQtLjM4LS4yNS0uNTktLjM0bC0uMTMtLjkzQS4xODIuMTgyIDAgMCAwIDIwLjIgM2gtMS40Yy0uMDkgMC0uMTYuMDYtLjE3LjE1bC0uMTMuOTNjLS4yMS4wOS0uNDEuMjEtLjU5LjM0bC0uODctLjM1Yy0uMDgtLjAzLS4xNyAwLS4yMS4wOGwtLjcgMS4yMWMtLjA0LjA4LS4wMy4xNy4wNC4yMmwuNzQuNThhMS45NTMgMS45NTMgMCAwIDAgMCAuNjhsLS43NC41OGMtLjA3LjA1LS4wOC4xNS0uMDQuMjJsLjcgMS4yMWMuMDQuMDguMTQuMS4yMS4wOGwuODctLjM1Yy4xOC4xNC4zOC4yNS41OS4zNGwuMTMuOTNjLjAxLjA5LjA4LjE1LjE3LjE1aDEuNGMuMDkgMCAuMTYtLjA2LjE3LS4xNWwuMTMtLjkzYy4yMS0uMDkuNDEtLjIxLjU5LS4zNGwuODcuMzVjLjA4LjAzLjE3IDAgLjIxLS4wOGwuNy0xLjIxYy4wNC0uMDguMDMtLjE3LS4wNC0uMjJsLS43My0uNTh6bS0yLjYuOTFhMS4yNSAxLjI1IDAgMSAxIDAtMi41IDEuMjUgMS4yNSAwIDAgMSAwIDIuNXpNMTkuOTIgMTEuNjhsLS41LS44N2MtLjAzLS4wNi0uMS0uMDgtLjE1LS4wNmwtLjYyLjI1Yy0uMTMtLjEtLjI3LS4xOC0uNDItLjI0bC0uMDktLjY2QS4xNS4xNSAwIDAgMCAxOCAxMGgtMWMtLjA2IDAtLjExLjA0LS4xMi4xMWwtLjA5LjY2Yy0uMTUuMDYtLjI5LjE1LS40Mi4yNGwtLjYyLS4yNWMtLjA2LS4wMi0uMTIgMC0uMTUuMDZsLS41Ljg3Yy0uMDMuMDYtLjAyLjEyLjAzLjE2bC41My40MWMtLjAxLjA4LS4wMi4xNi0uMDIuMjQgMCAuMDguMDEuMTcuMDIuMjRsLS41My40MWMtLjA1LjA0LS4wNi4xMS0uMDMuMTZsLjUuODdjLjAzLjA2LjEuMDguMTUuMDZsLjYyLS4yNWMuMTMuMS4yNy4xOC40Mi4yNGwuMDkuNjZjLjAxLjA3LjA2LjExLjEyLjExaDFjLjA2IDAgLjEyLS4wNC4xMi0uMTFsLjA5LS42NmMuMTUtLjA2LjI5LS4xNS40Mi0uMjRsLjYyLjI1Yy4wNi4wMi4xMiAwIC4xNS0uMDZsLjUtLjg3Yy4wMy0uMDYuMDItLjEyLS4wMy0uMTZsLS41Mi0uNDFjLjAxLS4wOC4wMi0uMTYuMDItLjI0IDAtLjA4LS4wMS0uMTctLjAyLS4yNGwuNTMtLjQxYy4wNS0uMDQuMDYtLjExLjA0LS4xN3ptLTIuNDIgMS42NWMtLjQ2IDAtLjgzLS4zOC0uODMtLjgzIDAtLjQ2LjM4LS44My44My0uODNzLjgzLjM4LjgzLjgzYzAgLjQ2LS4zNy44My0uODMuODN6TTQuNzQgOWg4LjUzYy4yNyAwIC40OS0uMjIuNDktLjQ5di0uMDJhLjQ5LjQ5IDAgMCAwLS40OS0uNDlIMTNjMC0xLjQ4LS44MS0yLjc1LTItMy40NXYuOTVjMCAuMjgtLjIyLjUtLjUuNXMtLjUtLjIyLS41LS41VjQuMTRDOS42OCA0LjA2IDkuMzUgNCA5IDRzLS42OC4wNi0xIC4xNFY1LjVjMCAuMjgtLjIyLjUtLjUuNVM3IDUuNzggNyA1LjV2LS45NUM1LjgxIDUuMjUgNSA2LjUyIDUgOGgtLjI2YS40OS40OSAwIDAgMC0uNDkuNDl2LjAzYzAgLjI2LjIyLjQ4LjQ5LjQ4ek05IDEzYzEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDUuMTRjLjQ1IDEuNzIgMiAzIDMuODYgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45NyAxMy41MnYtLjA0QzIzLjIxIDEyLjM4IDI0IDEwLjc4IDI0IDljMC0zLjMxLTIuNjktNi02LTYtLjI2IDAtLjUyLjAyLS43OC4wNmE1Ljk4IDUuOTggMCAwIDAtMTAuNDQgMEM2LjUyIDMuMDIgNi4yNiAzIDYgMyAyLjY5IDMgMCA1LjY5IDAgOWMwIDEuNzguNzkgMy4zOCAyLjAyIDQuNDh2LjA0QTYuMDA4IDYuMDA4IDAgMCAwIDAgMThjMCAzLjMxIDIuNjkgNiA2IDYgMS4zOSAwIDIuNjctLjQ4IDMuNjktMS4yOC43NC4xOCAxLjUxLjI4IDIuMzEuMjhzMS41Ny0uMSAyLjMxLS4yOGMxLjAyLjggMi4zIDEuMjggMy42OSAxLjI4IDMuMzEgMCA2LTIuNjkgNi02IDAtMS43OC0uNzktMy4zOC0yLjAzLTQuNDh6TTEyIDIxYy00LjQxIDAtOC0zLjU5LTgtOCAwLTMuNzIgMi41Ni02Ljg1IDYtNy43NHYuMDVjMCAzLjM0IDIuNzIgNi4wNiA2LjA2IDYuMDYgMS4yNiAwIDIuNDUtLjM5IDMuNDUtMS4wOS4zMS44Ni40OSAxLjc3LjQ5IDIuNzIgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi45MSAxMS45NkMyMi4zOSA2LjMyIDE3LjY2IDIgMTIgMlMxLjYxIDYuMzIgMS4wOSAxMS45NmwtLjkgOS44NmMtLjEgMS4xNy44MiAyLjE4IDIgMi4xOGgxOS42MmMxLjE4IDAgMi4xLTEuMDEgMS45OS0yLjE4bC0uODktOS44NnpNNC41NCA5LjEzYy44Ny41NSAxLjg5Ljg3IDIuOTYuODcgMS44NiAwIDMuNS0uOTMgNC41LTIuMzVDMTMgOS4wNyAxNC42NCAxMCAxNi41IDEwYzEuMDcgMCAyLjA5LS4zMiAyLjk2LS44Ny4zNC44OS41NCAxLjg2LjU0IDIuODcgMCA0LjQxLTMuNTkgOC04IDhzLTgtMy41OS04LThjMC0xLjAxLjItMS45OC41NC0yLjg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLS45NiAwLTEuODguMTQtMi43NS4zOUE0Ljk4NiA0Ljk4NiAwIDAgMCA1IDBDMi4yNCAwIDAgMi4yNCAwIDVjMCAxLjguOTYgMy4zNyAyLjM5IDQuMjVDMi4xNCAxMC4xMiAyIDExLjA0IDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTBzMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04IDAtLjA1LjAxLS4xLjAxLS4xNSAyLjYtLjk4IDQuNjgtMi45OSA1Ljc0LTUuNTVhOS45NDIgOS45NDIgMCAwIDAgOS45MiAzLjQ2Yy4yMS43MS4zMyAxLjQ2LjMzIDIuMjQgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04IDAtMS4xMi4yMy0yLjE4LjY1LTMuMTVhLjQ5NS40OTUgMCAwIDAgLjg1LS4zNWMwLS4yNS0uMTktLjQ1LS40My0uNDkuMTUtLjI2LjMyLS41MS40OS0uNzUtLjAzLjA4LS4wNi4xNS0uMDYuMjQgMCAuMjguMjIuNS41LjVzLjUtLjIyLjUtLjVTNi4yOCA3IDYgN2MtLjEzIDAtLjI1LjA1LS4zNC4xMy41Mi0uNjggMS4xNS0xLjI4IDEuODYtMS43NkEuNDk1LjQ5NSAwIDAgMCA4IDZhLjQ5NS40OTUgMCAwIDAgLjEtLjk4Yy4xNi0uMDkuMzItLjE3LjQ5LS4yNS4wOS4xNC4yNC4yMy40MS4yMy4yOCAwIC41LS4yMi41LS41IDAtLjAzLS4wMS0uMDYtLjAyLS4wOS4zOS0uMTMuNzktLjIzIDEuMjEtLjMtLjExLjEtLjE5LjIzLS4xOS4zOSAwIC4yOC4yMi41LjUuNXMuNS0uMjIuNS0uNWEuNTEuNTEgMCAwIDAtLjMtLjQ2Yy4yNi0uMDMuNTMtLjA0LjgtLjA0cy41NC4wMS44LjA0Yy0uMTguMDgtLjMuMjUtLjMuNDYgMCAuMjguMjIuNS41LjVzLjUtLjIyLjUtLjVjMC0uMTYtLjA4LS4yOS0uMTktLjM4LjQxLjA3LjgyLjE3IDEuMjEuMy0uMDEuMDItLjAyLjA1LS4wMi4wOCAwIC4yOC4yMi41LjUuNS4xNyAwIC4zMi0uMDkuNDEtLjIzLjE3LjA4LjMzLjE2LjQ5LjI1QS40OTUuNDk1IDAgMCAwIDE2IDZjLjI4IDAgLjUtLjIyLjUtLjUgMC0uMDUtLjAxLS4wOS0uMDMtLjEzLjcxLjQ4IDEuMzQgMS4wOCAxLjg2IDEuNzZhLjQ5NS40OTUgMCAwIDAtLjgzLjM3YzAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41YzAtLjA5LS4wMy0uMTYtLjA3LS4yMy4xOC4yNC4zNC40OS40OS43NS0uMjMuMDMtLjQyLjIzLS40Mi40OGEuNDk1LjQ5NSAwIDAgMCAuODUuMzVjLjQyLjk3LjY1IDIuMDMuNjUgMy4xNSAwIDQuNDEtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxN1wiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTNcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOFwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCI4LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCI4LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTNcIixcImN5XCI6XCI4LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI4LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI4LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04di0uMDNjMi4zMS0uMjIgMy40My0xLjU5IDQuMzQtMy40MS4xNy0uMzUuNTEtLjU2LjktLjU2aDUuNTNjLjM4IDAgLjcyLjIxLjg5LjU1LjkgMS44IDEuOTkgMy4xOSA0LjM0IDMuNDF2LjAzYzAgNC40Mi0zLjU5IDguMDEtOCA4LjAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZWJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMmMwIDQuODQgMy40NCA4Ljg3IDggOS44VjE1SDh2LTNoMlY5LjVDMTAgNy41NyAxMS41NyA2IDEzLjUgNkgxNnYzaC0yYy0uNTUgMC0xIC40NS0xIDF2MmgzdjNoLTN2Ni45NWM1LjA1LS41IDktNC43NiA5LTkuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZlbWFsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgOS41QzE3LjUgNi40NiAxNS4wNCA0IDEyIDRTNi41IDYuNDYgNi41IDkuNWMwIDIuNyAxLjk0IDQuOTMgNC41IDUuNFYxN0g5djJoMnYyaDJ2LTJoMnYtMmgtMnYtMi4xYzIuNTYtLjQ3IDQuNS0yLjcgNC41LTUuNHptLTkgMEM4LjUgNy41NyAxMC4wNyA2IDEyIDZzMy41IDEuNTcgMy41IDMuNVMxMy45MyAxMyAxMiAxM3MtMy41LTEuNTctMy41LTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlyZXBsYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAydjIwaDIwVjJIMnptOS44NiAxNC45NmMuNzYtLjI0IDEuNC0xLjA0IDEuNTMtMS42My4xMy0uNTYtLjEtMS4wNS0uMi0xLjYtLjA4LS40Ni0uMDctLjg1LjA4LTEuMjguNTQgMS4yMSAyLjE1IDEuNjQgMS45OCAzLjE4LS4xOSAxLjctMi4xMSAyLjM4LTMuMzkgMS4zM3pNMjAgMjBoLTJ2LTJoLTIuMDJBNC45OCA0Ljk4IDAgMCAwIDE3IDE1YzAtMS44OS0xLjA5LTIuODUtMS44NS0zLjM3QzEyLjIgOS42MSAxMyA3IDEzIDdjLTYuNzMgMy41Ny02LjAyIDcuNDctNiA4IC4wMy45Ni40OSAyLjA3IDEuMjMgM0g2djJINFY0aDE2djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaXRiaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS44OSAxMy44OWMxLjA0IDAgMS44OS0uODUgMS44OS0xLjg5cy0uODUtMS44OS0xLjg5LTEuODlTMTggMTAuOTYgMTggMTJzLjg1IDEuODkgMS44OSAxLjg5em0tNC4yNC0uMjFjLjkzIDAgMS42OC0uNzUgMS42OC0xLjY4cy0uNzUtMS42OC0xLjY4LTEuNjhjLS45MyAwLTEuNjguNzUtMS42OCAxLjY4cy43NSAxLjY4IDEuNjggMS42OHptMC00LjI2Yy45MyAwIDEuNjgtLjc1IDEuNjgtMS42OCAwLS45My0uNzUtMS42OC0xLjY4LTEuNjgtLjkzIDAtMS42OC43NS0xLjY4IDEuNjggMCAuOTMuNzUgMS42OCAxLjY4IDEuNjh6bTAgOC41MWMuOTMgMCAxLjY4LS43NSAxLjY4LTEuNjggMC0uOTMtLjc1LTEuNjgtMS42OC0xLjY4LS45MyAwLTEuNjguNzUtMS42OCAxLjY4IDAgLjkyLjc1IDEuNjggMS42OCAxLjY4em0tNC4yNC00LjQ2Yy44MSAwIDEuNDctLjY2IDEuNDctMS40N3MtLjY2LTEuNDctMS40Ny0xLjQ3Yy0uODEgMC0xLjQ3LjY2LTEuNDcgMS40N3MuNjUgMS40NyAxLjQ3IDEuNDd6bTAtNC4yNmMuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDdzLS42Ni0xLjQ3LTEuNDctMS40N2MtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0wIDguNTJjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3IDAtLjgxLS42Ni0xLjQ3LTEuNDctMS40Ny0uODEgMC0xLjQ3LjY2LTEuNDcgMS40Ny0uMDEuODEuNjUgMS40NyAxLjQ3IDEuNDd6bTAgNC4yN2MuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDcgMC0uODEtLjY2LTEuNDctMS40Ny0xLjQ3LS44MSAwLTEuNDcuNjYtMS40NyAxLjQ3LS4wMS44MS42NSAxLjQ3IDEuNDcgMS40N3ptMC0xNy4wNmMuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDdTMTIuMjIgMiAxMS40MSAyYy0uODEgMC0xLjQ3LjY2LTEuNDcgMS40N3MuNjUgMS40NyAxLjQ3IDEuNDd6bS00LjI1IDguMzJjLjcgMCAxLjI2LS41NyAxLjI2LTEuMjZzLS41Ny0xLjI2LTEuMjYtMS4yNmExLjI2MSAxLjI2MSAwIDAgMCAwIDIuNTJ6bTAgNC4yNWExLjI2MSAxLjI2MSAwIDAgMCAwLTIuNTIgMS4yNjEgMS4yNjEgMCAwIDAgMCAyLjUyem0wLTguNDlhMS4yNjEgMS4yNjEgMCAwIDAgMC0yLjUyIDEuMjYxIDEuMjYxIDAgMCAwIDAgMi41MnptLTMuODcgNC4wM2ExLjA1IDEuMDUgMCAxIDAgMC0yLjEgMS4wNSAxLjA1IDAgMCAwIDAgMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbG9vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjY3IDE5Yy0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxLTEuMjQgMC0xLjM4LTEtMy4zMy0xLTEuOTUgMC0yLjEgMS0zLjM0IDF2MmMxLjk1IDAgMi4xMS0xIDMuMzQtMSAxLjI0IDAgMS4zOCAxIDMuMzMgMSAxLjk1IDAgMi4xLTEgMy4zNC0xIDEuMjIgMCAxLjQgMSAzLjMzIDEgMS45MyAwIDIuMS0xIDMuMzMtMSAxLjIyIDAgMS40IDEgMy4zMyAxdi0yYy0xLjI0IDAtMS4zOC0xLTMuMzMtMXpNOC42OCAxNy41YzEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQuOTggMy4zMSAxdi0yYy0uNjMgMC0xLS4yOC0xLjQ4LS41NWwtMi4wMi03LjUzIDIuMDkuODUuNzQtMS44Nkw5Ljc4IDIgMiAxMS42MWwxLjU3IDEuMjMgMS4zOS0xLjc4LjkzIDMuNDhjLS4xOC0uMDItLjM1LS4wNS0uNTYtLjA1LTEuOTUgMC0yLjA5IDEtMy4zMyAxdjJjMS45IDAgMi4xNy0xIDMuMzUtMSAxLjE5LjAxIDEuNDIgMS4wMSAzLjMzIDEuMDF6bTUuMzYtNy4zMiAxLjQyIDUuMzFjLTEuMzQuMDktMS40Ny0uOTktMy40Ny0uOTktLjM2IDAtLjY1LjA0LS45MS4xbC0uOTEtMy4zOSAzLjg3LTEuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbGxvd1RoZVNpZ25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTUuNzUgOC45IDMgMjNoMi4xbDEuNzUtOEw5IDE3djZoMnYtNy41NUw4Ljk1IDEzLjRsLjYtM0MxMC44NSAxMiAxMi44IDEzIDE1IDEzdi0yYy0xLjg1IDAtMy40NS0xLTQuMzUtMi40NWwtLjk1LTEuNkM5LjM1IDYuMzUgOC43IDYgOCA2Yy0uMjUgMC0uNS4wNS0uNzUuMTVMMiA4LjNWMTNoMlY5LjY1bDEuNzUtLjc1TTEzIDJ2N2gzLjc1djE0aDEuNVY5SDIyVjJoLTl6bTUuMDEgNlY2LjI1SDE0LjV2LTEuNWgzLjUxVjNsMi40OSAyLjVMMTguMDEgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRnJvbnRIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNzUgOGMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjVWMTVIMThjLTEuNjUgMC0zIDEuMzUtMyAzaC0xYzAtMi4wNCAxLjUzLTMuNzIgMy41LTMuOTdWMy4yNWExLjI1IDEuMjUgMCAwIDAtMi41IDBWMTFoLTFWMS4yNWExLjI1IDEuMjUgMCAwIDAtMi41IDBWMTFoLTFWMi43NWExLjI1IDEuMjUgMCAwIDAtMi41IDBWMTJIN1Y1Ljc1YTEuMjUgMS4yNSAwIDAgMC0yLjUgMHYxMGMwIDQuNTYgMy42OSA4LjI1IDguMjUgOC4yNVMyMSAyMC4zMSAyMSAxNS43NXYtNi41QzIxIDguNTYgMjAuNDQgOCAxOS43NSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHaXJsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNy41Yy45NyAwIDEuNzUtLjc4IDEuNzUtMS43NVMxMi45NyA0IDEyIDRzLTEuNzUuNzgtMS43NSAxLjc1UzExLjAzIDcuNSAxMiA3LjV6bTIgOC41djRoLTR2LTRIOGwyLjM4LTYuMzhhMS43MzMgMS43MzMgMCAwIDEgMy4yNCAwTDE2IDE2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5VjdoLTJ2MmgtMnYyaDJ2Mmgydi0yaDJWOXpNOCAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6TTggMTNjLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6TTEyLjUxIDQuMDVDMTMuNDMgNS4xMSAxNCA2LjQ5IDE0IDhzLS41NyAyLjg5LTEuNDkgMy45NUMxNC40NyAxMS43IDE2IDEwLjA0IDE2IDhzLTEuNTMtMy43LTMuNDktMy45NXpNMTYuNTMgMTMuODNDMTcuNDIgMTQuNjYgMTggMTUuNyAxOCAxN3YzaDJ2LTNjMC0xLjQ1LTEuNTktMi41MS0zLjQ3LTMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyb3VwT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOGMwLTEuNDItLjUtMi43My0xLjMzLTMuNzYuNDItLjE0Ljg2LS4yNCAxLjMzLS4yNCAyLjIxIDAgNCAxLjc5IDQgNHMtMS43OSA0LTQgNGgtLjE4bC0uNzctLjc3Yy42LS45NC45NS0yLjA1Ljk1LTMuMjN6bTcuODMgMTJIMjN2LTNjMC0yLjE4LTMuNTgtMy40Ny02LjM0LTMuODcgMS4xLjc1IDEuOTUgMS43MSAyLjIzIDIuOTRMMjIuODMgMjB6TTcuMjQgNC40MWEzLjk5NiAzLjk5NiAwIDAgMSA1LjM1IDUuMzVMNy4yNCA0LjQxek05LjE3IDEySDljLTIuMjEgMC00LTEuNzktNC00di0uMTdMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxTDE3IDE5LjgzVjIwSDF2LTNjMC0yLjY2IDUuMzMtNCA4LTQgLjM3IDAgLjguMDMgMS4yNS4wOEw5LjE3IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cFJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDl2MmgtNlY5aDZ6TTggNEM1Ljc5IDQgNCA1Ljc5IDQgOHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA5Yy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00em00LjUxLTguOTVDMTMuNDMgNS4xMSAxNCA2LjQ5IDE0IDhzLS41NyAyLjg5LTEuNDkgMy45NUMxNC40NyAxMS43IDE2IDEwLjA0IDE2IDhzLTEuNTMtMy43LTMuNDktMy45NXptNC4wMiA5Ljc4QzE3LjQyIDE0LjY2IDE4IDE1LjcgMTggMTd2M2gydi0zYzAtMS40NS0xLjU5LTIuNTEtMy40Ny0zLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDExYzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zUzE3LjY2IDUgMTYgNWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM3ptLTggMGMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1M5LjY2IDUgOCA1QzYuMzQgNSA1IDYuMzQgNSA4czEuMzQgMyAzIDN6bTAgMmMtMi4zMyAwLTcgMS4xNy03IDMuNVYxOWgxNHYtMi41YzAtMi4zMy00LjY3LTMuNS03LTMuNXptOCAwYy0uMjkgMC0uNjIuMDItLjk3LjA1IDEuMTYuODQgMS45NyAxLjk3IDEuOTcgMy40NVYxOWg2di0yLjVjMC0yLjMzLTQuNjctMy41LTctMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cHMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMjcgMTJoMy40NmExLjUgMS41IDAgMCAwIDEuNDgtMS43NWwtLjMtMS43OWEyLjk1MSAyLjk1MSAwIDAgMC01LjgyLjAxbC0uMyAxLjc5Yy0uMTUuOTEuNTUgMS43NCAxLjQ4IDEuNzR6TTEuNjYgMTEuMTFjLS4xMy4yNi0uMTguNTctLjEuODguMTYuNjkuNzYgMS4wMyAxLjUzIDFoMS45NWMuODMgMCAxLjUxLS41OCAxLjUxLTEuMjkgMC0uMTQtLjAzLS4yNy0uMDctLjQtLjAxLS4wMy0uMDEtLjA1LjAxLS4wOC4wOS0uMTYuMTQtLjM0LjE0LS41MyAwLS4zMS0uMTQtLjYtLjM2LS44Mi0uMDMtLjAzLS4wMy0uMDYtLjAyLS4xLjA3LS4yLjA3LS40My4wMS0uNjVhMS4xMiAxLjEyIDAgMCAwLS45OS0uNzQuMDkuMDkgMCAwIDEtLjA3LS4wM0M1LjAzIDguMTQgNC43MiA4IDQuMzcgOGMtLjMgMC0uNTcuMS0uNzUuMjYtLjAzLjAzLS4wNi4wMy0uMDkuMDJhMS4yNCAxLjI0IDAgMCAwLTEuNyAxLjAzYzAgLjAyLS4wMS4wNC0uMDMuMDYtLjI5LjI2LS40Ni42NS0uNDEgMS4wNS4wMy4yMi4xMi40My4yNS42LjAzLjAyLjAzLjA2LjAyLjA5ek0xNi4yNCAxMy42NWMtMS4xNy0uNTItMi42MS0uOS00LjI0LS45LTEuNjMgMC0zLjA3LjM5LTQuMjQuOUEyLjk4OCAyLjk4OCAwIDAgMCA2IDE2LjM5VjE4aDEydi0xLjYxYzAtMS4xOC0uNjgtMi4yNi0xLjc2LTIuNzR6TTEuMjIgMTQuNThBMi4wMSAyLjAxIDAgMCAwIDAgMTYuNDNWMThoNC41di0xLjYxYzAtLjgzLjIzLTEuNjEuNjMtMi4yOS0uMzctLjA2LS43NC0uMS0xLjEzLS4xLS45OSAwLTEuOTMuMjEtMi43OC41OHpNMjIuNzggMTQuNThBNi45NSA2Ljk1IDAgMCAwIDIwIDE0Yy0uMzkgMC0uNzYuMDQtMS4xMy4xLjQuNjguNjMgMS40Ni42MyAyLjI5VjE4SDI0di0xLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNMjIgMTF2LS41YzAtMS4xLS45LTItMi0yaC0yYy0uNDIgMC0uNjUuNDgtLjM5LjgxbC43LjYzYy0uMTkuMzEtLjMxLjY3LS4zMSAxLjA2IDAgMS4xLjkgMiAyIDJzMi0uOSAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyb3VwczMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yNCAxMy42NWMtMS4xNy0uNTItMi42MS0uOS00LjI0LS45LTEuNjMgMC0zLjA3LjM5LTQuMjQuOUEyLjk4OCAyLjk4OCAwIDAgMCA2IDE2LjM5VjE4aDEydi0xLjYxYzAtMS4xOC0uNjgtMi4yNi0xLjc2LTIuNzR6TTEuMjIgMTQuNThBMi4wMSAyLjAxIDAgMCAwIDAgMTYuNDNWMThoNC41di0xLjYxYzAtLjgzLjIzLTEuNjEuNjMtMi4yOS0uMzctLjA2LS43NC0uMS0xLjEzLS4xLS45OSAwLTEuOTMuMjEtMi43OC41OHpNMjIuNzggMTQuNThBNi45NSA2Ljk1IDAgMCAwIDIwIDE0Yy0uMzkgMC0uNzYuMDQtMS4xMy4xLjQuNjguNjMgMS40Ni42MyAyLjI5VjE4SDI0di0xLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNMTIgMTJjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTMtMyAxLjM0LTMgMyAxLjM0IDMgMyAzek0xLjQ5NyAxMSA0IDguNDk3IDYuNTAzIDExIDQgMTMuNTAzek0yMCA5bC0yLjUgNGg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMi43NWMxLjYzIDAgMy4wNy4zOSA0LjI0LjkgMS4wOC40OCAxLjc2IDEuNTYgMS43NiAyLjczVjE4SDZ2LTEuNjFjMC0xLjE4LjY4LTIuMjYgMS43Ni0yLjczIDEuMTctLjUyIDIuNjEtLjkxIDQuMjQtLjkxek00IDEzYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMS4xMyAxLjFjLS4zNy0uMDYtLjc0LS4xLTEuMTMtLjEtLjk5IDAtMS45My4yMS0yLjc4LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjl6TTIwIDEzYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNCAzLjQzYzAtLjgxLS40OC0xLjUzLTEuMjItMS44NUE2Ljk1IDYuOTUgMCAwIDAgMjAgMTRjLS4zOSAwLS43Ni4wNC0xLjEzLjEuNC42OC42MyAxLjQ2LjYzIDIuMjlWMThIMjR2LTEuNTd6TTEyIDZjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIYW5kc2hha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi40OCAxMC40MWMtLjM5LjM5LTEuMDQuMzktMS40MyAwbC00LjQ3LTQuNDYtNy4wNSA3LjA0LS42Ni0uNjNhMyAzIDAgMCAxIDAtNC4yNGw0LjI0LTQuMjRhMyAzIDAgMCAxIDQuMjQgMEwxNi40OCA5Yy4zOS4zOS4zOSAxLjAyIDAgMS40MXptLjctMi4xMmMuNzguNzguNzggMi4wNSAwIDIuODMtMS4yNyAxLjI3LTIuNjEuMjItMi44MyAwbC0zLjc2LTMuNzYtNS41NyA1LjU3YS45OTYuOTk2IDAgMCAwIDAgMS40MWMuMzkuMzkgMS4wMi4zOSAxLjQyIDBsNC42Mi00LjYyLjcxLjcxLTQuNjIgNC42MmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFjLjM5LjM5IDEuMDIuMzkgMS40MiAwbDQuNjItNC42Mi43MS43MS00LjYyIDQuNjJhLjk5Ni45OTYgMCAxIDAgMS40MSAxLjQxbDQuNjItNC42Mi43MS43MS00LjYyIDQuNjJhLjk5Ni45OTYgMCAxIDAgMS40MSAxLjQxbDguMzItOC4zNGEzIDMgMCAwIDAgMC00LjI0bC00LjI0LTQuMjRhMy4wMDEgMy4wMDEgMCAwIDAtNC4xOC0uMDZsNC40NyA0LjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFsdGhBbmRTYWZldHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41IDEzSDh2LTNoMi41VjcuNWgzVjEwSDE2djNoLTIuNXYyLjVoLTNWMTN6TTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlYXJ0QnJva2VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAzYy0uOTYgMC0xLjkuMjUtMi43My42OUwxMiA5aDNsLTMgMTAgMS05aC0zbDEuNTQtNS4zOUMxMC40NyAzLjYxIDkuMDEgMyA3LjUgMyA0LjQyIDMgMiA1LjQyIDIgOC41YzAgNC4xMyA0LjE2IDcuMTggMTAgMTIuNSA1LjQ3LTQuOTQgMTAtOC4yNiAxMC0xMi41QzIyIDUuNDIgMTkuNTggMyAxNi41IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhpa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNCA1LjI4Yy0xLjIzLS4zNy0yLjIyLTEuMTctMi44LTIuMThsLTEtMS42Yy0uNDEtLjY1LTEuMTEtMS0xLjg0LTEtLjc4IDAtMS41OS41LTEuNzggMS40NFM3IDIzIDcgMjNoMi4xbDEuOC04IDIuMSAydjZoMnYtNy41bC0yLjEtMiAuNi0zYzEgMS4xNSAyLjQxIDIuMDEgNCAyLjM0VjIzSDE5VjloLTEuNXYxLjc4ek03LjQzIDEzLjEzbC0yLjEyLS40MWEuOTk5Ljk5OSAwIDAgMS0uNzktMS4xN2wuNzYtMy45M2EyIDIgMCAwIDEgMi4zNC0xLjU4bDEuMTYuMjMtMS4zNSA2Ljg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaXN0b3J5RWR1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djEuMzhjLS44My0uMzMtMS43Mi0uNS0yLjYxLS41LTEuNzkgMC0zLjU4LjY4LTQuOTUgMi4wNWwzLjMzIDMuMzNoMS4xMXYxLjExYy44Ni44NiAxLjk4IDEuMzEgMy4xMSAxLjM2VjE1SDZ2M2MwIDEuMS45IDIgMiAyaDEwYzEuNjYgMCAzLTEuMzQgMy0zVjRIOXptLTEuMTEgNi40MVY4LjI2SDUuNjFMNC41NyA3LjIyYTUuMDcgNS4wNyAwIDAgMSAxLjgyLS4zNGMxLjM0IDAgMi41OS41MiAzLjU0IDEuNDZsMS40MSAxLjQxLS4yLjJhMi43IDIuNyAwIDAgMS0xLjkyLjhjLS40NyAwLS45My0uMTItMS4zMy0uMzR6TTE5IDE3YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xdi0yaC02di0yLjU5Yy41Ny0uMjMgMS4xLS41NyAxLjU2LTEuMDNsLjItLjJMMTUuNTkgMTRIMTd2LTEuNDFsLTYtNS45N1Y2aDh2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMy43OSA4IDEuOC0zLTEuOC0zaC0zLjU4bC0xLjggMyAxLjggM3pNMTAuMjEgOWwtMS44IDMgMS44IDNoMy41OGwxLjgtMy0xLjgtM3pNMTYuNDUgMTEuNTFoMy41OWwxLjc5LTMtMS43OS0zaC0zLjU5bC0xLjggM3pNMjAuMDQgMTIuNTFoLTMuNTlsLTEuOCAzIDEuOCAzaDMuNTlsMS43OS0zek03LjU1IDExLjUxbDEuOC0zLTEuOC0zSDMuOTZsLTEuNzkgMyAxLjc5IDN6TTcuNTUgMTIuNTFIMy45NmwtMS43OSAzIDEuNzkgM2gzLjU5bDEuOC0zek0xMC4yMSAxNmwtMS44IDMgMS44IDNoMy41OGwxLjgtMy0xLjgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSWNlU2thdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggOC41YzAtLjI4LjIyLS41LjUtLjVoMi41MkwxMSA3SDguNWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41SDExVjNIM3YxNWgzdjJIMnYyaDE2YzIuNzYgMCA1LTIuMjQgNS01aC0yYzAgMS42Ni0xLjM0IDMtMyAzaC0ydi0yaDN2LTIuODhjMC0yLjEtMS41NS0zLjUzLTMuMDMtMy44OGwtMi43LS42N2MtLjg3LS4yMi0xLjU3LS44MS0xLjk1LTEuNTdIOC41Yy0uMjggMC0uNS0uMjItLjUtLjV6TTE0IDIwSDh2LTJoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnRlcmVzdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjAyIDEzYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHpNMTMgMTN2OGg4di04aC04ek03IDJsLTUgOWgxMEw3IDJ6bTEyLjI1LjVjLTEuMDYgMC0xLjgxLjU2LTIuMjUgMS4xNy0uNDQtLjYxLTEuMTktMS4xNy0yLjI1LTEuMTdDMTMuMTkgMi41IDEyIDMuNzggMTIgNS4yNWMwIDIgMi40MiAzLjQyIDUgNS43NSAyLjU4LTIuMzMgNS0zLjc1IDUtNS43NSAwLTEuNDctMS4xOS0yLjc1LTIuNzUtMi43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW9zU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDUtMS40MiAxLjQyLTEuNTktMS41OVYxNmgtMS45OFY0LjgzTDkuNDIgNi40MiA4IDVsNC00IDQgNHptNCA1djExYzAgMS4xLS45IDItMiAySDZhMiAyIDAgMCAxLTItMlYxMGMwLTEuMTEuODktMiAyLTJoM3YySDZ2MTFoMTJWMTBoLTNWOGgzYTIgMiAwIDAgMSAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtheWFraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMjNjLTEuMDMgMC0yLjA2LS4yNS0zLS43NS0xLjg5IDEtNC4xMSAxLTYgMC0xLjg5IDEtNC4xMSAxLTYgMC0uOTUuNS0xLjk3Ljc1LTMgLjc1SDJ2LTJoMWMxLjA0IDAgMi4wOC0uMzUgMy0xIDEuODMgMS4zIDQuMTcgMS4zIDYgMCAxLjgzIDEuMyA0LjE3IDEuMyA2IDAgLjkxLjY1IDEuOTYgMSAzIDFoMXYyaC0xek0xMiA1LjVjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMiAxMnMtMS41Mi43MS0zLjkzIDEuMzdjLS44Mi0uMjMtMS41My0uNzUtMi4wNy0xLjM3LS43My44NC0xLjggMS41LTMgMS41cy0yLjI3LS42Ni0zLTEuNWMtLjczLjg0LTEuOCAxLjUtMyAxLjVzLTIuMjctLjY2LTMtMS41Yy0uNTQuNjEtMS4yNSAxLjEzLTIuMDcgMS4zN0MxLjUyIDE4LjIxIDAgMTcuNSAwIDE3LjVzMi45My0xLjM2IDcuMTMtMi4wOGwxLjM1LTQuMTdjLjMxLS45NSAxLjMyLTEuNDcgMi4yNy0xLjE2LjA5LjAzLjE5LjA3LjI3LjExbDIuNDcgMS4zIDIuODQtMS41IDEuNjUtMy43MS0uNTEtMS4zMkwxOC44IDIgMjIgMy40MyAyMC42NyA2LjRsLTEuMzEuNS0zLjcyIDguMzRjNC44NS42MyA4LjM2IDIuMjYgOC4zNiAyLjI2em0tOC45OC00LjU0LTEuNTIuOC0xLjc1LS45Mi0uNzEgMi4xN2MuMzIgMCAuNjQtLjAxLjk2LS4wMS43MSAwIDEuNC4wMyAyLjA3LjA4bC45NS0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLaW5nQmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNNiA3aDV2M0g2ek0xMyA3aDV2M2gtNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTBWN2MwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnYzYy0xLjEgMC0yIC45LTIgMnY1aDEuMzNMNCAxOWgxbC42Ny0yaDEyLjY3bC42NiAyaDFsLjY3LTJIMjJ2LTVjMC0xLjEtLjktMi0yLTJ6bS05IDBINlY3aDV2M3ptNyAwaC01VjdoNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLaXRlc3VyZmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM2MwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem0xNC4wNi0yaC0yLjEyTDE1LjUgMy40NGwxLjA2IDEuMDYgMy41LTMuNXpNMjIgMjN2LTJoLTFjLTEuMDQgMC0yLjA4LS4zNS0zLTEtMS44MyAxLjMtNC4xNyAxLjMtNiAwLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0uOTEuNjUtMS45NiAxLTMgMUgydjJoMWMxLjAzIDAgMi4wNS0uMjUgMy0uNzUgMS44OSAxIDQuMTEgMSA2IDAgMS44OSAxIDQuMTEgMSA2IDAgLjk1LjUgMS45Ny43NSAzIC43NWgxem0tMS05LjcyYzAgMS40NC0yLjE5IDMuNjItNS4wNCA1LjU4LS4zMS4wOS0uNjMuMTQtLjk2LjE0LTEuMiAwLTIuMjctLjY2LTMtMS41LS43My44NC0xLjggMS41LTMgMS41LS45NCAwLTEuODEtLjQxLTIuNDktLjk5LjQ2LS4zOS45Ni0uNzggMS40OS0xLjE3bC0xLjU1LTIuOTdBNC4wNiA0LjA2IDAgMCAxIDYgMTJWOGMwLTEuMS45LTIgMi0yaDNjMS4zOCAwIDIuNjMtLjU2IDMuNTQtMS40NmwxLjQxIDEuNDFBNy4wMTggNy4wMTggMCAwIDEgMTEgOEg5LjZ2My41aDIuOGwxLjY5IDEuODhjMS45NS0uODQgMy43Ny0xLjM4IDUuMDYtMS4zOC44NCAwIDEuODUuMjUgMS44NSAxLjI4em0tOC44Ljk5LS43LS43Ny0yLjUuMS44MyAyLjAxYy41OS0uMzggMS44MS0xLjA2IDIuMzctMS4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFuZHNsaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNDcgMTMuNzktMi41OC0xLjAzTDYgMTUuMDVsLTQtMS41NHYyLjFsNCAxLjM0ek0xMC41NyAxMS40MiA4IDhIMnYzLjYxbDQgMS4zNHpNNiAxOS4wNWwtNC0xLjMzVjIyaDIwbC00Ljk3LTYuNjJ6TTE3IDZWMWwtNS0xLTMgMnY0bDMgMnpNMTguNSA3IDE2IDl2M2wyLjUgMiA0LjUtMlY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhdGlvbkNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMVY1bC0zLTMtMyAzdjJIM3YxNGgxOFYxMWgtNnptLTggOEg1di0yaDJ2MnptMC00SDV2LTJoMnYyem0wLTRINVY5aDJ2MnptNiA4aC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnptMC00aC0yVjloMnYyem0wLTRoLTJWNWgydjJ6bTYgMTJoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMdWdnYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNmgtMlYzYzAtLjU1LS40NS0xLTEtMWgtNGMtLjU1IDAtMSAuNDUtMSAxdjNIN2MtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMiAwIC41NS40NSAxIDEgMXMxLS40NSAxLTFoNmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTFjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpNOS41IDE4SDhWOWgxLjV2OXptMy4yNSAwaC0xLjVWOWgxLjV2OXptLjc1LTEyaC0zVjMuNWgzVjZ6TTE2IDE4aC0xLjVWOUgxNnY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDExYzEuOTMgMCAzLjUgMS41NyAzLjUgMy41UzExLjQzIDE4IDkuNSAxOCA2IDE2LjQzIDYgMTQuNSA3LjU3IDExIDkuNSAxMXptMC0yQzYuNDYgOSA0IDExLjQ2IDQgMTQuNVM2LjQ2IDIwIDkuNSAyMHM1LjUtMi40NiA1LjUtNS41YzAtMS4xNi0uMzYtMi4yMy0uOTctMy4xMkwxOCA3LjQyVjEwaDJWNGgtNnYyaDIuNThsLTMuOTcgMy45N0MxMS43MyA5LjM2IDEwLjY2IDkgOS41IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDIuNXY3aDN2LTdIMTZWOWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFuMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDdoLTRjLTEuMSAwLTIgLjktMiAydjZoMnY3aDR2LTdoMlY5YzAtMS4xLS45LTItMi0yek0xMiAxLjc1MSAxNC4yNDggNCAxMiA2LjI0OCA5Ljc1IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hbjQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy43NSA3aC0zLjVDOS4wNCA3IDguMTEgOC4wNyA4LjI3IDkuMjZMMTAgMjJoNGwxLjczLTEyLjc0QzE1Ljg5IDguMDcgMTQuOTYgNyAxMy43NSA3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2g0di03aDJWOWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFza3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDZjLTEuMzEgMC0yLjM3IDEuMDEtMi40OCAyLjMtMS44OC0uNS0yLjg0LTEuOC01LjAyLTEuOC0yLjE5IDAtMy4xNCAxLjMtNS4wMiAxLjhDNi44NyA3LjAyIDUuODEgNiA0LjUgNkEyLjUgMi41IDAgMCAwIDIgOC41VjljMCA2IDMuNiA3LjgxIDYuNTIgNy45OEM5LjUzIDE3LjYyIDEwLjcyIDE4IDEyIDE4czIuNDctLjM4IDMuNDgtMS4wMkMxOC40IDE2LjgxIDIyIDE1IDIyIDl2LS41QTIuNSAyLjUgMCAwIDAgMTkuNSA2em0tMTYgM3YtLjVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjNjMCAxLjI4LjM4IDIuNDcgMS4wMSAzLjQ4QzQuOTkgMTQuMjcgMy41IDEyLjY1IDMuNSA5em0xNyAwYzAgMy42NS0xLjQ5IDUuMjctMy4wMSA1Ljk4LjY0LTEuMDEgMS4wMS0yLjIgMS4wMS0zLjQ4di0zYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMVY5em0tOS44MSAxLjQ4Yy0uNDQuMjYtLjk2LjU2LTEuNjkuNzZWMTAuMmMuNDgtLjE3Ljg0LS4zOCAxLjE4LS41OEMxMC43MiA5LjMgMTEuMjMgOSAxMiA5czEuMjcuMyAxLjguNjJjLjM0LjIuNzEuNDIgMS4yLjU5djEuMDRjLS43NS0uMjEtMS4yNi0uNTEtMS43MS0uNzgtLjQ2LS4yNy0uOC0uNDctMS4yOS0uNDdzLS44NC4yLTEuMzEuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pbGl0YXJ5VGVjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwLjQzVjJIN3Y4LjQzYzAgLjM1LjE4LjY4LjQ5Ljg2bDQuMTggMi41MS0uOTkgMi4zNC0zLjQxLjI5IDIuNTkgMi4yNEw5LjA3IDIyIDEyIDIwLjIzIDE0LjkzIDIybC0uNzgtMy4zMyAyLjU5LTIuMjQtMy40MS0uMjktLjk5LTIuMzQgNC4xOC0yLjUxYy4zLS4xOC40OC0uNS40OC0uODZ6bS00IDEuOC0xIC42LTEtLjZWM2gydjkuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vb2RCYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMy41LTljLjgzIDAgMS41LS42NyAxLjUtMS41UzE2LjMzIDggMTUuNSA4IDE0IDguNjcgMTQgOS41cy42NyAxLjUgMS41IDEuNXptLTcgMGMuODMgMCAxLjUtLjY3IDEuNS0xLjVTOS4zMyA4IDguNSA4IDcgOC42NyA3IDkuNSA3LjY3IDExIDguNSAxMXptMy41IDNjLTIuMzMgMC00LjMxIDEuNDYtNS4xMSAzLjVoMTAuMjJjLS44LTIuMDQtMi43OC0zLjUtNS4xMS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSA2LjVjMi4zMyAwIDQuMzEtMS40NiA1LjExLTMuNUg2Ljg5Yy44IDIuMDQgMi43OCAzLjUgNS4xMSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5pZ2h0c1N0YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4xIDEyLjA4Yy0yLjMzLTQuNTEtLjUtOC40OC41My0xMC4wN0M2LjI3IDIuMiAxLjk4IDYuNTkgMS45OCAxMmMwIC4xNC4wMi4yOC4wMi40Mi42Mi0uMjcgMS4yOS0uNDIgMi0uNDIgMS42NiAwIDMuMTguODMgNC4xIDIuMTVBNC4wMSA0LjAxIDAgMCAxIDExIDE4YzAgMS41Mi0uODcgMi44My0yLjEyIDMuNTEuOTguMzIgMi4wMy41IDMuMTEuNSAzLjUgMCA2LjU4LTEuOCA4LjM3LTQuNTItMi4zNi4yMy02Ljk4LS45Ny05LjI2LTUuNDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTZoLS4xOEM2LjQgMTQuODQgNS4zIDE0IDQgMTRjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNoM2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vQWR1bHRDb250ZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNCAxMmMwLTEuODUuNjMtMy41NCAxLjY5LTQuOUw3LjU5IDloMi44M0w3LjEgNS42OUE3LjkyNCA3LjkyNCAwIDAgMSAxMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS44NS0uNjMgMy41NC0xLjY5IDQuOWwtMS45LTEuOWgtMi44M2wzLjMxIDMuMzFBNy44NzQgNy44NzQgMCAwIDEgMTIgMjBjLTQuNDEgMC04LTMuNTktOC04elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4yNSAxNC0xLjUtMiAxLjUtMmgtMS41TDEyIDExbC0uNzUtMWgtMS41bDEuNSAyLTEuNSAyaDEuNWwuNzUtMSAuNzUgMXpNOCAxMGwtLjc1IDEtLjc1LTFINWwxLjUgMkw1IDE0aDEuNWwuNzUtMUw4IDE0aDEuNUw4IDEybDEuNS0yek0xNiAxNGwuNzUtMSAuNzUgMUgxOWwtMS41LTIgMS41LTJoLTEuNWwtLjc1IDEtLjc1LTFoLTEuNWwxLjUgMi0xLjUgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9MdWdnYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNzUgOXYuOTJsMS43NSAxLjc1VjlIMTZ2NC4xN2wzIDNWOGMwLTEuMS0uOS0yLTItMmgtMlYzYzAtLjU1LS40NS0xLTEtMWgtNGMtLjU1IDAtMSAuNDUtMSAxdjNoLS4xN2wzIDNoLjkyek0xMC41IDMuNWgzVjZoLTNWMy41em0xMC42OSAxNy42OUwyLjgxIDIuODEgMS4zOSA0LjIybDMuNjMgMy42M2MwIC4wNS0uMDIuMS0uMDIuMTV2MTFjMCAxLjEuOSAyIDIgMiAwIC41NS40NSAxIDEgMXMxLS40NSAxLTFoNmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTFjLjM0IDAgLjY1LS4wOS45My0uMjRsMS44NSAxLjg1IDEuNDEtMS40MnpNOCAxOHYtNy4xN2wxLjUgMS41VjE4SDh6bTQuNzUgMGgtMS41di0zLjkybDEuNSAxLjVWMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vcmRpY1dhbGtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAyM2gtMS41di05SDE5djl6TTcuNTMgMTRINmwtMiA5aDEuNTNsMi05em01Ljk3LTguNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTkuOCA4LjkgNyAyM2gyLjFsMS44LTggMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNDMTQuOCAxMiAxNi44IDEzIDE5IDEzdi0yYy0xLjkgMC0zLjUtMS00LjMtMi40bC0xLTEuNmEyLjE0NSAyLjE0NSAwIDAgMC0yLjY1LS44NEw2IDguM1YxM2gyVjkuNmwxLjgtLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdGlmaWNhdGlvbkFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDIwaDRjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yem00LTExYzAgMi42MSAxLjY3IDQuODMgNCA1LjY2VjE3aDJ2Mkg0di0yaDJ2LTdjMC0yLjc5IDEuOTEtNS4xNCA0LjUtNS44di0uN2MwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXYuN2MuNzEuMTggMS4zNi40OSAxLjk1LjlBNS45MDIgNS45MDIgMCAwIDAgMTQgOXptMTAtMWgtM1Y1aC0ydjNoLTN2MmgzdjNoMnYtM2gzVjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdGlmaWNhdGlvbnNBY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjU4IDQuMDggNi4xNSAyLjY1QzMuNzUgNC40OCAyLjE3IDcuMyAyLjAzIDEwLjVoMmE4LjQ0NSA4LjQ0NSAwIDAgMSAzLjU1LTYuNDJ6bTEyLjM5IDYuNDJoMmMtLjE1LTMuMi0xLjczLTYuMDItNC4xMi03Ljg1bC0xLjQyIDEuNDNhOC40OTUgOC40OTUgMCAwIDEgMy41NCA2LjQyek0xOCAxMWMwLTMuMDctMS42NC01LjY0LTQuNS02LjMyVjRjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuNjhDNy42MyA1LjM2IDYgNy45MiA2IDExdjVsLTIgMnYxaDE2di0xbC0yLTJ2LTV6bS02IDExYy4xNCAwIC4yNy0uMDEuNC0uMDQuNjUtLjE0IDEuMTgtLjU4IDEuNDQtMS4xOC4xLS4yNC4xNS0uNS4xNS0uNzhoLTRjLjAxIDEuMS45IDIgMi4wMSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zTm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzEuMSAwIDItLjkgMi0yaC00YzAgMS4xLjkgMiAyIDJ6bTYtNnYtNWMwLTMuMDctMS42My01LjY0LTQuNS02LjMyVjRjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuNjhDNy42NCA1LjM2IDYgNy45MiA2IDExdjVsLTIgMnYxaDE2di0xbC0yLTJ6bS0yIDFIOHYtNmMwLTIuNDggMS41MS00LjUgNC00LjVzNCAyLjAyIDQgNC41djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdGlmaWNhdGlvbnNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOC42OSA3Ljg0IDYuMTQgNS4yNyAzLjQ5IDQgNC43NmwyLjggMi44di4wMWMtLjUyLjk5LS44IDIuMTYtLjggMy40MnY1bC0yIDJ2MWgxMy43M2wyIDJMMjEgMTkuNzJsLTEtMS4wM3pNMTIgMjJjMS4xMSAwIDItLjg5IDItMmgtNGMwIDEuMTEuODkgMiAyIDJ6bTYtNy4zMlYxMWMwLTMuMDgtMS42NC01LjY0LTQuNS02LjMyVjRjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuNjhjLS4xNS4wMy0uMjkuMDgtLjQyLjEyLS4xLjAzLS4yLjA3LS4zLjExaC0uMDFjLS4wMSAwLS4wMSAwLS4wMi4wMS0uMjMuMDktLjQ2LjItLjY4LjMxIDAgMC0uMDEgMC0uMDEuMDFMMTggMTQuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdGlmaWNhdGlvbnNQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGEyIDIgMCAwIDAgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjMgNS4zNiA2IDcuOTMgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tMy41LTYuMi0yLjggMy40aDIuOFYxNWgtNXYtMS44bDIuOC0zLjRIOS41VjhoNXYxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdGlmaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzEuMSAwIDItLjkgMi0yaC00YTIgMiAwIDAgMCAyIDJ6bTYtNnYtNWMwLTMuMDctMS42NC01LjY0LTQuNS02LjMyVjRjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuNjhDNy42MyA1LjM2IDYgNy45MiA2IDExdjVsLTIgMnYxaDE2di0xbC0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGRvb3JHcmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIyYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zYy0xLjMgMC0yLjQuODQtMi44MiAySDkuMTRsMS45OS0zLjA2YTYuMzYgNi4zNiAwIDAgMCAxLjc0IDBsMS4wMiAxLjU3Yy40Mi0uNTMuOTYtLjk1IDEuNi0xLjIxbC0uNi0uOTNBNi45OTIgNi45OTIgMCAwIDAgMTkgOEg1YzAgMi44NCAxLjY5IDUuMjcgNC4xMiA2LjM3bC0zLjk1IDYuMDhhMSAxIDAgMCAwIC4yOSAxLjM4IDEgMSAwIDAgMCAxLjM4LS4yOWwxLTEuNTVoNi4zNEMxNC42IDIxLjE2IDE1LjcgMjIgMTcgMjJ6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek05LjQxIDdoMWMuMTUtMS4xNS4yMy0xLjY0LS44OS0yLjk2LS40Mi0uNS0uNjgtLjc3LS40Ni0yLjA0aC0uOTljLS4yMSAxLjExLjAzIDIuMDUuODkgMi45Ni4yMi4yNC43OS42Ny40NSAyLjA0ek0xMS44OSA3aDFjLjE1LTEuMTUuMjMtMS42NC0uODktMi45Ni0uNDItLjUtLjY4LS43OC0uNDYtMi4wNGgtLjk5Yy0uMjEgMS4xMS4wMyAyLjA1Ljg5IDIuOTYuMjMuMjQuOC42Ny40NSAyLjA0ek0xNC40MSA3aDFjLjE1LTEuMTUuMjMtMS42NC0uODktMi45Ni0uNDItLjUtLjY4LS43Ny0uNDYtMi4wNGgtLjk5Yy0uMjEgMS4xMS4wMyAyLjA1Ljg5IDIuOTYuMjIuMjQuNzkuNjcuNDUgMi4wNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFnZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2Nmg1TDcgN2w0IDFWM0g1Yy0xLjEgMC0yIC45LTIgMnptNSA4SDN2NmMwIDEuMS45IDIgMiAyaDZ2LTVsLTQgMSAxLTR6bTkgNC00LTF2NWg2YzEuMSAwIDItLjkgMi0ydi02aC01bDEgNHptMi0xNGgtNnY1bDQtMS0xIDRoNVY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXJhZ2xpZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE3Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptLTMuNDguOTRDOC4wNCAxNy41NSA3IDE2Ljc2IDcgMTRINWMwIDIuNy45MyA0LjQxIDIuMyA1LjUuNS40IDEuMS43IDEuNy45VjI0aDZ2LTMuNmMuNi0uMiAxLjItLjUgMS43LS45IDEuMzctMS4wOSAyLjMtMi44IDIuMy01LjVoLTJjMCAyLjc2LTEuMDQgMy41NS0xLjUyIDMuOTRDMTQuNjggMTguNTQgMTQgMTkgMTIgMTlzLTIuNjgtLjQ2LTMuNDgtMS4wNnpNMTIgMEM1LjkyIDAgMSAxLjkgMSA0LjI1djMuNDljMCAuODEuODggMS4yNiAxLjU2LjgzLjE0LS4wOS4yOC0uMTguNDQtLjI2TDUgMTNoMmwxLjUtNi4yOGEyNy44NTIgMjcuODUyIDAgMCAxIDcgMEwxNyAxM2gybDItNC42OWMuMTYuMDkuMy4xNy40NC4yNi42OC40MyAxLjU2LS4wMiAxLjU2LS44M1Y0LjI1QzIzIDEuOSAxOC4wOCAwIDEyIDB6TTUuODggMTEuMjQgNC4zNyA3LjY5Yy43NS0uMjggMS42LS41MiAyLjUzLS43MWwtMS4wMiA0LjI2em0xMi4yNCAwTDE3LjEgNi45OGMuOTMuMTkgMS43OC40MyAyLjUzLjcxbC0xLjUxIDMuNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhcnR5TW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRoLTMuMTdMMTUgMkg5TDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS04IDNjMS42MyAwIDMuMDYuNzkgMy45OCAySDEyYy0xLjY2IDAtMyAxLjM0LTMgMyAwIC4zNS4wNy42OS4xOCAxSDcuMUE1LjAwMiA1LjAwMiAwIDAgMSAxMiA3em0wIDEwYy0xLjYzIDAtMy4wNi0uNzktMy45OC0ySDEyYzEuNjYgMCAzLTEuMzQgMy0zIDAtLjM1LS4wNy0uNjktLjE4LTFoMi4wOGE1LjAwMiA1LjAwMiAwIDAgMS00LjkgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVvcGxlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2LjY3IDEzLjEzQzE4LjA0IDE0LjA2IDE5IDE1LjMyIDE5IDE3djNoNHYtM2MwLTIuMTgtMy41Ny0zLjQ3LTYuMzMtMy44N3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiNFwiLFwiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE1IDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00Yy0uNDcgMC0uOTEuMS0xLjMzLjI0YTUuOTggNS45OCAwIDAgMSAwIDcuNTJjLjQyLjE0Ljg2LjI0IDEuMzMuMjR6TTkgMTNjLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlb3BsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEzYy0xLjIgMC0zLjA3LjM0LTQuNSAxLTEuNDMtLjY3LTMuMy0xLTQuNS0xQzUuMzMgMTMgMSAxNC4wOCAxIDE2LjI1VjE5aDIydi0yLjc1YzAtMi4xNy00LjMzLTMuMjUtNi41LTMuMjV6bS00IDQuNWgtMTB2LTEuMjVjMC0uNTQgMi41Ni0xLjc1IDUtMS43NXM1IDEuMjEgNSAxLjc1djEuMjV6bTkgMEgxNHYtMS4yNWMwLS40Ni0uMi0uODYtLjUyLTEuMjIuODgtLjMgMS45Ni0uNTMgMy4wMi0uNTMgMi40NCAwIDUgMS4yMSA1IDEuNzV2MS4yNXpNNy41IDEyYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzkuNDMgNSA3LjUgNSA0IDYuNTcgNCA4LjUgNS41NyAxMiA3LjUgMTJ6bTAtNS41YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA1LjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTguNDMgNSAxNi41IDUgMTMgNi41NyAxMyA4LjVzMS41NyAzLjUgMy41IDMuNXptMC01LjVjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZW9wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxNy42NiA1IDE2IDVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDN6bS04IDBjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTOS42NiA1IDggNUM2LjM0IDUgNSA2LjM0IDUgOHMxLjM0IDMgMyAzem0wIDJjLTIuMzMgMC03IDEuMTctNyAzLjVWMTloMTR2LTIuNWMwLTIuMzMtNC42Ny0zLjUtNy0zLjV6bTggMGMtLjI5IDAtLjYyLjAyLS45Ny4wNSAxLjE2Ljg0IDEuOTcgMS45NyAxLjk3IDMuNDVWMTloNnYtMi41YzAtMi4zMy00LjY3LTMuNS03LTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM5IDE0LjU2QzE2LjcxIDEzLjcgMTQuNTMgMTMgMTIgMTNzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDQgMTcuMjJWMjBoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNOS43OCAxMmg0LjQ0YzEuMjEgMCAyLjE0LTEuMDYgMS45OC0yLjI2bC0uMzItMi40NUMxNS41NyA1LjM5IDEzLjkyIDQgMTIgNFM4LjQzIDUuMzkgOC4xMiA3LjI5TDcuOCA5Ljc0Yy0uMTYgMS4yLjc3IDIuMjYgMS45OCAyLjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb24zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzkgMTQuNTZDMTYuNzEgMTMuNyAxNC41MyAxMyAxMiAxM3MtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgNCAxNy4yMlYyMGgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xMCAxMmg0YzEuNjYgMCAzLTEuMzQgMy0zIDAtLjczLS4yNy0xLjQtLjcxLTEuOTIuMTMtLjMzLjIxLS43LjIxLTEuMDhhMyAzIDAgMCAwLTEuODYtMi43N0MxNCAyLjQ4IDEzLjA2IDIgMTIgMnMtMiAuNDgtMi42NCAxLjIzQTMgMyAwIDAgMCA3LjUgNmMwIC4zOC4wOC43NS4yMSAxLjA4QzcuMjcgNy42IDcgOC4yNyA3IDljMCAxLjY2IDEuMzQgMyAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvbjQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTEyIDEyYzIuMjEgMCA0LTEuNzkgNC00VjQuNWMwLS44My0uNjctMS41LTEuNS0xLjUtLjUyIDAtLjk4LjI3LTEuMjUuNjctLjI3LS40LS43My0uNjctMS4yNS0uNjdzLS45OC4yNy0xLjI1LjY3Yy0uMjctLjQtLjczLS42Ny0xLjI1LS42N0M4LjY3IDMgOCAzLjY3IDggNC41VjhjMCAyLjIxIDEuNzkgNCA0IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvbkFkZEFsdDEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA4YzAtMi4yMS0xLjc5LTQtNC00UzUgNS43OSA1IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00em0yIDJ2MmgzdjNoMnYtM2gzdi0yaC0zVjdoLTJ2M2gtM3pNMSAxOHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00cy04IDEuMzQtOCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25BZGRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA4YzAtMi4yMS0xLjc5LTQtNC00UzUgNS43OSA1IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00em0tMiAwYzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnpNMSAxOHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00cy04IDEuMzQtOCA0em0yIDBjLjItLjcxIDMuMy0yIDYtMiAyLjY5IDAgNS43OCAxLjI4IDYgMkgzem0xNy0zdi0zaDN2LTJoLTNWN2gtMnYzaC0zdjJoM3YzaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvbkFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptLTktMlY3SDR2M0gxdjJoM3YzaDJ2LTNoM3YtMkg2em05IDRjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNjUgNS44MmEzLjk5OSAzLjk5OSAwIDEgMSA1LjUzIDUuNTNMOC42NSA1Ljgyek0yMCAxNy4xN2MtLjAyLTEuMS0uNjMtMi4xMS0xLjYxLTIuNjItLjU0LS4yOC0xLjEzLS41NC0xLjc3LS43NkwyMCAxNy4xN3ptMS4xOSA0LjAyTDIuODEgMi44MSAxLjM5IDQuMjJsOC44OSA4Ljg5Yy0xLjgxLjIzLTMuMzkuNzktNC42NyAxLjQ1QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDEzLjE3bDIuNjEgMi42MSAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvbk91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1LjlhMi4xIDIuMSAwIDEgMSAwIDQuMiAyLjEgMi4xIDAgMCAxIDAtNC4ybTAgOWMyLjk3IDAgNi4xIDEuNDYgNi4xIDIuMXYxLjFINS45VjE3YzAtLjY0IDMuMTMtMi4xIDYuMS0yLjFNMTIgNEM5Ljc5IDQgOCA1Ljc5IDggOHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA5Yy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25SZW1vdmVBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOGMwLTIuMjEtMS43OS00LTQtNFM2IDUuNzkgNiA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptMyAydjJoNnYtMmgtNnpNMiAxOHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00cy04IDEuMzQtOCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25SZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA4YzAtMi4yMS0xLjc5LTQtNC00UzYgNS43OSA2IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00em0zIDJ2Mmg2di0yaC02ek0yIDE4djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTRzLTggMS4zNC04IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMCAyYy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25hbEluanVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNmMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0LTEuNzkgNC00IDQtNC0xLjc5LTQtNHptOSAxNmgxYzEuMSAwIDItLjkgMi0ydi00Ljc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjYtLjQzLS4yMi0uOS0uNDMtMS4zOS0uNjJWMjJ6bS00LjY2LTVMMTUgMTEuMzNjLS45My0uMjEtMS45My0uMzMtMy0uMzMtMi41MyAwLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDQgMTUuMjJWMjJoMi4zNGMtLjIyLS40NS0uMzQtLjk2LS4zNC0xLjVDNiAxOC41NyA3LjU3IDE3IDkuNSAxN2gyLjg0ek0xMCAyMmwxLjQxLTNIOS41Yy0uODMgMC0xLjUuNjctMS41IDEuNVM4LjY3IDIyIDkuNSAyMmguNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGlhbm9PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIyIDMgNS44M1YxOWMwIDEuMS45IDIgMiAyaDEzLjE3bDEuNjEgMS42MSAxLjQxLTEuNDJ6TTguMjUgMTlINVY3LjgzbDIgMnYzLjY3YzAgLjU1LjQ1IDEgMSAxaC4yNVYxOXptMS41IDB2LTQuNUgxMGMuNDYgMCAuODItLjMxLjk0LS43M2wzLjMxIDMuMzFWMTloLTQuNXpNMTEgOC4xNyA1LjgzIDNIMTljMS4xIDAgMiAuOSAyIDJ2MTMuMTdsLTItMlY1aC0ydjguNWMwIC4xOS0uMDcuMzYtLjE2LjUxTDEzIDEwLjE3VjVoLTJ2My4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGlhbm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTUgMTEuNWguMjVWMTloLTQuNXYtNC41SDEwYy41NSAwIDEtLjQ1IDEtMVY1aDJ2OC41YzAgLjU1LjQ1IDEgMSAxek01IDVoMnY4LjVjMCAuNTUuNDUgMSAxIDFoLjI1VjE5SDVWNXptMTQgMTRoLTMuMjV2LTQuNUgxNmMuNTUgMCAxLS40NSAxLTFWNWgydjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS40NSAxNi41Mi0zLjAxLTMuMDFjLS4xMS0uMTEtLjI0LS4xMy0uMzEtLjEzcy0uMi4wMi0uMzEuMTNMOC44IDE2LjUzYy0uMzQuMzQtLjg3Ljg5LTIuNjQuODlsMy43MSAzLjdhMyAzIDAgMCAwIDQuMjQgMGwzLjcyLTMuNzFjLS45MSAwLTEuNjctLjE4LTIuMzgtLjg5ek04LjggNy40N2wzLjAyIDMuMDJjLjA4LjA4LjIuMTMuMzEuMTNzLjIzLS4wNS4zMS0uMTNsMi45OS0yLjk5Yy43MS0uNzQgMS41Mi0uOTEgMi40My0uOTFsLTMuNzItMy43MWEzIDMgMCAwIDAtNC4yNCAwbC0zLjcxIDMuN2MxLjc2IDAgMi4zLjU4IDIuNjEuODl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjExIDkuODUtMi4yNS0yLjI2SDE3LjZjLS41NCAwLTEuMDguMjItMS40NS42MWwtMyAzYy0uMjguMjgtLjY1LjQyLTEuMDIuNDJhMS41IDEuNSAwIDAgMS0xLjAyLS40Mkw4LjA5IDguMTdjLS4zOC0uMzgtLjktLjYtMS40NS0uNkg1LjE3bC0yLjI5IDIuM2EzIDMgMCAwIDAgMCA0LjI0bDIuMjkgMi4zaDEuNDhjLjU0IDAgMS4wNi0uMjIgMS40NS0uNmwzLjAyLTMuMDJjLjI4LS4yOC42NS0uNDIgMS4wMi0uNDJzLjc0LjE0IDEuMDIuNDJsMy4wMSAzLjAxYy4zOC4zOC45LjYgMS40NS42aDEuMjZsMi4yNS0yLjI2YTMuMDQyIDMuMDQyIDAgMCAwLS4wMi00LjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbHVzT25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOEg4djRINHYyaDR2NGgydi00aDR2LTJoLTR6bTQuNS0xLjkyVjcuOWwyLjUtLjVWMThoMlY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMTdIN3YtN2gydjd6bTQgMGgtMlY3aDJ2MTB6bTQgMGgtMnYtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByZWNpc2lvbk1hbnVmYWN0dXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS45MyA4LjIxLTMuNiAxLjY4TDE0IDcuN1Y2LjNsMi4zMy0yLjE5IDMuNiAxLjY4Yy4zOC4xOC44Mi4wMSAxLS4zNi4xOC0uMzguMDEtLjgyLS4zNi0xTDE2LjY1IDIuNmEuOTkzLjk5MyAwIDAgMC0xLjEzLjJsLTEuNzQgMS42QS45NzUuOTc1IDAgMCAwIDEzIDRjLS41NSAwLTEgLjQ1LTEgMXYxSDguODJDOC4zNCA0LjY1IDYuOTggMy43MyA1LjQgNC4wN2MtMS4xNi4yNS0yLjE1IDEuMjUtMi4zNiAyLjQzLS4yMiAxLjMyLjQ2IDIuNDcgMS40OCAzLjA4TDcuMDggMThINHYzaDEzdi0zaC0zLjYyTDguNDEgOC43N2MuMTctLjI0LjMxLS40OS40MS0uNzdIMTJ2MWMwIC41NS40NSAxIDEgMSAuMzIgMCAuNi0uMTYuNzgtLjRsMS43NCAxLjZjLjMuMy43NS4zOCAxLjEzLjJsMy45Mi0xLjgzYy4zOC0uMTguNTQtLjYyLjM2LTFhLjc1My43NTMgMCAwIDAtMS0uMzZ6TTYgOGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQc3ljaG9sb2d5QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTQgOS4wNkMxOS41IDUuNzMgMTYuNTcgMyAxMyAzIDkuNDcgMyA2LjU3IDUuNjEgNi4wOCA5bC0xLjkzIDMuNDhjLS40MS42Ni4wNyAxLjUyLjg1IDEuNTJoMXYyYzAgMS4xLjkgMiAyIDJoMXYzaDd2LTQuNjhhNy4wMTYgNy4wMTYgMCAwIDAgMy45NC03LjI2ek0xMi41IDE0Yy0uNDEgMC0uNzQtLjMzLS43NC0uNzRzLjMzLS43My43NC0uNzMuNzMuMzIuNzMuNzMtLjMxLjc0LS43My43NHptMS43Ni00LjMyYy0uNDQuNjUtLjg2Ljg1LTEuMDkgMS4yNy0uMDkuMTctLjEzLjI4LS4xMy44MmgtMS4wNmMwLS4yOS0uMDQtLjc1LjE4LTEuMTYuMjgtLjUxLjgzLS44MSAxLjE0LTEuMjYuMzMtLjQ3LjE1LTEuMzYtLjgtMS4zNi0uNjIgMC0uOTIuNDctMS4wNS44NmwtLjk2LS40Yy4yNy0uNzguOTctMS40NSAyLjAxLTEuNDUuODYgMCAxLjQ1LjM5IDEuNzUuODguMjYuNDMuNDEgMS4yMi4wMSAxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBzeWNob2xvZ3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA4LjU3YTEuNDMgMS40MyAwIDEgMCAwIDIuODYgMS40MyAxLjQzIDAgMCAwIDAtMi44NnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM0M5LjI1IDMgNi4yIDUuOTQgNi4wMiA5LjY0TDQuMSAxMi4yYS41LjUgMCAwIDAgLjQuOEg2djNjMCAxLjEuOSAyIDIgMmgxdjNoN3YtNC42OEE2Ljk5OSA2Ljk5OSAwIDAgMCAxMyAzem0zIDdjMCAuMTMtLjAxLjI2LS4wMi4zOWwuODMuNjZjLjA4LjA2LjEuMTYuMDUuMjVsLS44IDEuMzljLS4wNS4wOS0uMTYuMTItLjI0LjA5bC0uOTktLjRjLS4yMS4xNi0uNDMuMjktLjY3LjM5TDE0IDEzLjgzYy0uMDEuMS0uMS4xNy0uMi4xN2gtMS42Yy0uMSAwLS4xOC0uMDctLjItLjE3bC0uMTUtMS4wNmMtLjI1LS4xLS40Ny0uMjMtLjY4LS4zOWwtLjk5LjRjLS4wOS4wMy0uMiAwLS4yNS0uMDlsLS44LTEuMzlhLjE5LjE5IDAgMCAxIC4wNS0uMjVsLjg0LS42NmMtLjAxLS4xMy0uMDItLjI2LS4wMi0uMzlzLjAyLS4yNy4wNC0uMzlsLS44NS0uNjZjLS4wOC0uMDYtLjEtLjE2LS4wNS0uMjZsLjgtMS4zOGMuMDUtLjA5LjE1LS4xMi4yNC0uMDlsMSAuNGMuMi0uMTUuNDMtLjI5LjY3LS4zOUwxMiA2LjE3Yy4wMi0uMS4xLS4xNy4yLS4xN2gxLjZjLjEgMCAuMTguMDcuMi4xN2wuMTUgMS4wNmMuMjQuMS40Ni4yMy42Ny4zOWwxLS40Yy4wOS0uMDMuMiAwIC4yNC4wOWwuOCAxLjM4YS4yLjIgMCAwIDEtLjA1LjI2bC0uODUuNjZjLjAzLjEyLjA0LjI1LjA0LjM5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQdWJsaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA4LjE3IDYuNDkgMy42NkE5LjkxIDkuOTEgMCAwIDEgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMCAwIDIuMDQtLjYxIDMuOTMtMS42NiA1LjUxbC0xLjQ2LTEuNDZBNy44NDIgNy44NDIgMCAwIDAgMjAgMTJjMC0zLjM1LTIuMDctNi4yMi01LTcuNDFWNWMwIDEuMS0uOSAyLTIgMmgtMnYxLjE3em0xMC4xOSAxMy4wMi0xLjQxIDEuNDEtMi4yNy0yLjI3QTkuODM5IDkuODM5IDAgMCAxIDEyIDIyQzYuNDggMjIgMiAxNy41MiAyIDEyYzAtMi4wNC42MS0zLjkzIDEuNjYtNS41MUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6TTExIDE4Yy0xLjEgMC0yLS45LTItMnYtMWwtNC43OS00Ljc5QzQuMDggMTAuNzkgNCAxMS4zOCA0IDEyYzAgNC4wOCAzLjA1IDcuNDQgNyA3LjkzVjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQdWJsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNy45M2MtMy45NS0uNDktNy0zLjg1LTctNy45MyAwLS42Mi4wOC0xLjIxLjIxLTEuNzlMOSAxNXYxYzAgMS4xLjkgMiAyIDJ2MS45M3ptNi45LTIuNTRjLS4yNi0uODEtMS0xLjM5LTEuOS0xLjM5aC0xdi0zYzAtLjU1LS40NS0xLTEtMUg4di0yaDJjLjU1IDAgMS0uNDUgMS0xVjdoMmMxLjEgMCAyLS45IDItMnYtLjQxYzIuOTMgMS4xOSA1IDQuMDYgNSA3LjQxIDAgMi4wOC0uOCAzLjk3LTIuMSA1LjM5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWFsRXN0YXRlQWdlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDIyaDRWMTFIMXYxMXptMTktNWgtN2wtMi4wOS0uNzMuMzMtLjk0TDEzIDE2aDIuODJjLjY1IDAgMS4xOC0uNTMgMS4xOC0xLjE4IDAtLjQ5LS4zMS0uOTMtLjc3LTEuMTFMOC45NyAxMUg3djkuMDJMMTQgMjJsOC0zYy0uMDEtMS4xLS44OS0yLTItMnpNMTQgMS41bC03IDVWOWgybDguMTQgMy4yNkMxOC4yNiAxMi43MSAxOSAxMy43OSAxOSAxNWgyVjYuNWwtNy01em0tLjUgOC41aC0xVjloMXYxem0wLTJoLTFWN2gxdjF6bTIgMmgtMVY5aDF2MXptMC0yaC0xVjdoMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWNvbW1lbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYTEwIDEwIDAgMSAwIDEwIDEwQTEwIDEwIDAgMCAwIDEyIDJ6bTYgOS44YS45LjkgMCAwIDEtLjEuNWwtMi4xIDQuOWExLjM0IDEuMzQgMCAwIDEtMS4zLjhIOWEyIDIgMCAwIDEtMi0ydi01YTEuMjggMS4yOCAwIDAgMSAuNC0xTDEyIDVsLjY5LjY5YTEuMDggMS4wOCAwIDAgMSAuMy43di4yTDEyLjQxIDEwSDE3YTEgMSAwIDAgMSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlY3ljbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNzcgNy4xNSA3LjIgNC43OGwxLjAzLTEuNzFjLjM5LS42NSAxLjMzLS42NSAxLjcyIDBsMS40OCAyLjQ2LTEuMjMgMi4wNi0xIDEuNjItMy40My0yLjA2em0xNS45NSA1LjgyLTEuNi0yLjY2LTMuNDYgMkwxOC44NyAxNkgyMGEyIDIgMCAwIDAgMi0yYzAtLjM2LS4xLS43MS0uMjgtMS4wM3pNMTYgMjFoMS41YTIgMiAwIDAgMCAxLjc5LTEuMTFMMjAuNzQgMTdIMTZ2LTJsLTQgNCA0IDR2LTJ6bS02LTRINS43bC0uODQgMS40MWMtLjMuNS0uMzIgMS4xMi0uMDYgMS42NS4yOC41Ny44Ny45NCAxLjUyLjk0SDEwdi00em0tMy44OC0yLjY1IDEuNzMgMS4wNEw2LjQ4IDkuOSAxIDExLjI3bDEuNyAxLjAyLS40MS42OWMtLjM1LjU5LS4zOCAxLjMxLS4wNyAxLjkybDEuNjMgMy4yNiAyLjI3LTMuODF6bTEwLjktOS4yMS0xLjMtMi4xN0MxNS4zNSAyLjM3IDE0LjcgMiAxNCAyaC0zLjUzbDMuMTIgNS4yLTEuNzIgMS4wMyA1LjQ5IDEuMzcgMS4zNy01LjQ5LTEuNzEgMS4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVkdWNlQ2FwYWNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTQuNzggMy41OEE2Ljk1IDYuOTUgMCAwIDAgMTggN2MtLjY3IDAtMS4zMS4xLTEuOTIuMjguNTguNTUuOTIgMS4zMi45MiAyLjE1VjEwaDV2LS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTYgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTEuOTIgMS4yOEM3LjMxIDcuMSA2LjY3IDcgNiA3Yy0uOTkgMC0xLjkzLjIxLTIuNzguNThBMi4wMSAyLjAxIDAgMCAwIDIgOS40M1YxMGg1di0uNTdjMC0uODMuMzQtMS42LjkyLTIuMTV6TTEwIDRjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNiA2SDh2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAxNiA5LjQzVjEwem0tMSA2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTYgNmgtOHYtLjU3YzAtLjgxLjQ4LTEuNTMgMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMSA1LjU2IDBBMi4wMSAyLjAxIDAgMCAxIDIxIDIxLjQzVjIyek01IDE2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTYgNkgzdi0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMTEgMjEuNDNWMjJ6bTEuNzUtOXYtMmgtMS41djJIOWwzIDMgMy0zaC0yLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmVNb2RlcmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMi4yNyAyMS43My0zLjU0LTMuNTVMNS43OCA1LjIzIDIuMjcgMS43MiAxIDIuOTkgMy4wMSA1SDN2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDIuMTYtLjUzIDQuMDgtMS43NiA1LjYtMy40MUwyMSAyM2wxLjI3LTEuMjd6TTEzIDkuOTJsNi42NyA2LjY3QzIwLjUxIDE0Ljg3IDIxIDEyLjk2IDIxIDExVjVsLTktNC01LjQ4IDIuNDRMMTEgNy45MmwyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvbGxlclNrYXRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDYuNWMwLS4yOC4yMi0uNS41LS41aDIuNTJMMTIgNUg5LjVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNUgxMlYxSDR2MTVoMTZ2LTIuODhjMC0yLjEtMS41NS0zLjUzLTMuMDMtMy44OGwtMi43LS42N2MtLjg3LS4yMi0xLjU3LS44MS0xLjk1LTEuNTdIOS41Yy0uMjggMC0uNS0uMjItLjUtLjV6TTUgMjNjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0xNCAwYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3ptLTcgMGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhZmV0eURpdmlkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1aDJ2MTRoLTJWNXptLTYgN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTIuNzggMS41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxIDE1LjQzVjE2aDh2LS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTE5IDEyYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMi43OCAxLjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDE1IDE1LjQzVjE2aDh2LS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhbml0aXplciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNi41QzE1LjUgNS42NiAxNyA0IDE3IDRzMS41IDEuNjYgMS41IDIuNWMwIC44My0uNjcgMS41LTEuNSAxLjVzLTEuNS0uNjctMS41LTEuNXptNCA4LjVhMi41IDIuNSAwIDAgMCAyLjUtMi41YzAtMS42Ny0yLjUtNC41LTIuNS00LjVTMTcgMTAuODMgMTcgMTIuNWEyLjUgMi41IDAgMCAwIDIuNSAyLjV6TTEzIDE0aC0ydi0ySDl2Mkg3djJoMnYyaDJ2LTJoMnYtMnptMy0ydjEwSDRWMTJjMC0yLjk3IDIuMTYtNS40MyA1LTUuOTFWNEg3VjJoNmMxLjEzIDAgMi4xNS4zOSAyLjk5IDEuMDFsLTEuNDMgMS40M0MxNC4xIDQuMTcgMTMuNTcgNCAxMyA0aC0ydjIuMDljMi44NC40OCA1IDIuOTQgNSA1LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDExVjhjNC41Ni0uNTggOC0zLjEgOC02SDJjMCAyLjkgMy40NCA1LjQyIDggNnYzYy0zLjY4LjczLTggMy42MS04IDExaDZ2LTJINC4xM2MuOTMtNi44MyA2LjY1LTcuMiA3Ljg3LTcuMnM2Ljk0LjM3IDcuODcgNy4ySDE2djJoNmMwLTcuMzktNC4zMi0xMC4yNy04LTExem0tMiAxMWMtMS4xIDAtMi0uOS0yLTIgMC0uNTUuMjItMS4wNS41OS0xLjQxQzExLjM5IDE3Ljc5IDE2IDE2IDE2IDE2cy0xLjc5IDQuNjEtMi41OSA1LjQxYy0uMzYuMzctLjg2LjU5LTEuNDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjaG9vbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTMuMTh2NEwxMiAyMWw3LTMuODJ2LTRMMTIgMTdsLTctMy44MnpNMTIgMyAxIDlsMTEgNiA5LTQuOTFWMTdoMlY5TDEyIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjaWVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS44IDE4LjQgMTQgMTAuNjdWNi41bDEuMzUtMS42OWMuMjYtLjMzLjAzLS44MS0uMzktLjgxSDkuMDRjLS40MiAwLS42NS40OC0uMzkuODFMMTAgNi41djQuMTdMNC4yIDE4LjRjLS40OS42Ni0uMDIgMS42LjggMS42aDE0Yy44MiAwIDEuMjktLjk0LjgtMS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY29yZWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAxMy41SDE2di0zaDEuNXYzek0yMCA0aC0zVjJoLTJ2Mkg5VjJIN3YySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNOS41IDExLjVjMCAuNTUtLjQ1IDEtMSAxaC0ydjFoM1YxNUg1di0yLjVjMC0uNTUuNDUtMSAxLTFoMnYtMUg1VjloMy41Yy41NSAwIDEgLjQ1IDEgMXYxLjV6bTMuMjUgNi41aC0xLjV2LTEuNWgxLjVWMTh6bTAtMy41aC0xLjVWMTNoMS41djEuNXptMC0zLjVoLTEuNVY5LjVoMS41VjExem0wLTMuNWgtMS41VjZoMS41djEuNXpNMTkgMTRjMCAuNTUtLjQ1IDEtMSAxaC0yLjVjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMUgxOGMuNTUgMCAxIC40NSAxIDF2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2N1YmFEaXZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDEzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTcuODktMi44OSA0LjUzLTEuMjEtLjc4LTIuOS00LjUzIDEuMjFjLS44LjIxLTEuMjggMS4wNC0xLjA2IDEuODQuMjIuOCAxLjA0IDEuMjggMS44NCAxLjA2ek0yMC41IDUuOSAyMyAzbC0xLTEtMyAzLTIgNC05LjQ4IDIuODdjLS44Mi4yLTEuMzkuODktMS41IDEuNjhMNS4yNCAxOCAyLjQgMjEuOCA0IDIzbDMtNCAxLjE0LTMuMTRMMTQgMTRsNS0zLjUgMS41LTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VsZkltcHJvdmVtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTZ2LTJjLTIuMjQgMC00LjE2LS45Ni01LjYtMi42OGwtMS4zNC0xLjZBMS45OCAxLjk4IDAgMCAwIDEyLjUzIDloLTEuMDVjLS41OSAwLTEuMTUuMjYtMS41My43MmwtMS4zNCAxLjZDNy4xNiAxMy4wNCA1LjI0IDE0IDMgMTR2MmMyLjc3IDAgNS4xOS0xLjE3IDctMy4yNVYxNWwtMy44OCAxLjU1Yy0uNjcuMjctMS4xMi45My0xLjEyIDEuNjZDNSAxOS4yIDUuOCAyMCA2Ljc5IDIwSDl2LS41YTIuNSAyLjUgMCAwIDEgMi41LTIuNWgzYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNWgtM2MtLjgzIDAtMS41LjY3LTEuNSAxLjV2LjVoNy4yMWMuOTkgMCAxLjc5LS44IDEuNzktMS43OSAwLS43My0uNDUtMS4zOS0xLjEyLTEuNjZMMTQgMTV2LTIuMjVjMS44MSAyLjA4IDQuMjMgMy4yNSA3IDMuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnRpbWVudERpc3NhdGlzZmllZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTAtMy41Yy43MyAwIDEuMzkuMTkgMS45Ny41My4xMi0uMTQuODYtLjk4IDEuMDEtMS4xNEE1LjM5IDUuMzkgMCAwIDAgMTIgMTVjLTEuMTEgMC0yLjEzLjMzLTIuOTkuODguOTcgMS4wOS4wMS4wMiAxLjAxIDEuMTQuNTktLjMzIDEuMjUtLjUyIDEuOTgtLjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW50aW1lbnROZXV0cmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE1LjVoNnYxSDl2LTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW50aW1lbnRTYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0wLTRjLS43MyAwLTEuMzgtLjE4LTEuOTYtLjUyLS4xMi4xNC0uODYuOTgtMS4wMSAxLjE1YTUuNDkgNS40OSAwIDAgMCA1Ljk1LS4wMWMtLjk3LTEuMDktLjAxLS4wMi0xLjAxLTEuMTUtLjU5LjM1LTEuMjQuNTMtMS45Ny41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VudGltZW50VmVyeURpc3NhdGlzZmllZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTAtNmMtMi4zMyAwLTQuMzIgMS40NS01LjEyIDMuNWgxLjY3Yy42OS0xLjE5IDEuOTctMiAzLjQ1LTJzMi43NS44MSAzLjQ1IDJoMS42N2MtLjgtMi4wNS0yLjc5LTMuNS01LjEyLTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VudGltZW50VmVyeVNhdGlzZmllZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bS01LTZjLjc4IDIuMzQgMi43MiA0IDUgNHM0LjIyLTEuNjYgNS00SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldmVyZUNvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxMC40MSA0LTRMMTQuNTkgNSAxMiA3LjU5VjRoLTJ2My41OUw3LjQxIDUgNiA2LjQxbDQgNFYxMkg4LjQxbC00LTRMMyA5LjQxIDUuNTkgMTJIMnYyaDMuNTlMMyAxNi41OSA0LjQxIDE4bDQtNEgxMHYxLjU5bC00IDRMNy40MSAyMSAxMCAxOC40MVYyMmgydi0zLjU5TDE0LjU5IDIxIDE2IDE5LjU5bC00LTRWMTRoMS41OWw0IDRMMTkgMTYuNTkgMTYuNDEgMTRIMjB2LTJoLTh6TTE5IDJoMnY1aC0yek0xOSA4aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNi4wOGMtLjc2IDAtMS40NC4zLTEuOTYuNzdMOC45MSAxMi43Yy4wNS0uMjMuMDktLjQ2LjA5LS43cy0uMDQtLjQ3LS4wOS0uN2w3LjA1LTQuMTFjLjU0LjUgMS4yNS44MSAyLjA0LjgxIDEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDNjMCAuMjQuMDQuNDcuMDkuN0w4LjA0IDkuODFDNy41IDkuMzEgNi43OSA5IDYgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2MuNzkgMCAxLjUtLjMxIDIuMDQtLjgxbDcuMTIgNC4xNmMtLjA1LjIxLS4wOC40My0uMDguNjUgMCAxLjYxIDEuMzEgMi45MiAyLjkyIDIuOTIgMS42MSAwIDIuOTItMS4zMSAyLjkyLTIuOTJzLTEuMzEtMi45Mi0yLjkyLTIuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA5Yy0xLjEgMC0yLS45LTItMnMyLTQgMi00IDIgMi45IDIgNC0uOSAyLTIgMnptLTMuNS0yYzAtLjczLjQxLTEuNzEuOTItMi42NkE5Ljk2NSA5Ljk2NSAwIDAgMCAxMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJjMC0uNTUtLjA2LTEuMDktLjE0LTEuNjJhMy41IDMuNSAwIDAgMS0uODYuMTJjLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41em0tMS44OC4zOCAxLjA2IDEuMDYtMS4wNiAxLjA2IDEuMDYgMS4wNi0xLjA2IDEuMDZMMTMuNSA5LjVsMi4xMi0yLjEyem0tOC4zIDEuMDYgMS4wNi0xLjA2TDEwLjUgOS41bC0yLjEyIDIuMTItMS4wNi0xLjA2TDguMzggOS41IDcuMzIgOC40NHpNMTUuNDQgMTdjLS42OS0xLjE5LTEuOTctMi0zLjQ0LTJzLTIuNzUuODEtMy40NCAySDYuODhjLjMtLjc2Ljc2LTEuNDMgMS4zNC0xLjk5TDUuMjQgMTMuM2MtLjQ1LjI2LTEuMDEuMjgtMS40OSAwYTEuNTAxIDEuNTAxIDAgMCAxIDEuNS0yLjZjLjQ4LjI4Ljc0Ljc4Ljc0IDEuMjlsMy41OCAyLjA3Yy43My0uMzYgMS41NS0uNTYgMi40My0uNTYgMi4zMyAwIDQuMzIgMS40NSA1LjEyIDMuNWgtMS42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbkxhbmd1YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuNDkgMTMtLjkzLTEuODZjLS4zNy0uNzQtLjA3LTEuNjQuNjctMi4wMWwuMjYtLjEzIDUuNzMgNS40NmMuNS40Ny43OCAxLjEzLjc4IDEuODF2NS4yM2EyLjUgMi41IDAgMCAxLTIuNSAyLjVoLTExYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xSDEwdi0xSDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoNnYtMUgzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDd2LTFINC41Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDcuOTl6bS0uNzEtNS44OGMtLjg0LjQtMS4xNy42Mi0xLjYzIDEuMTlsLTIuNy0yLjg1QS45OTYuOTk2IDAgMSAxIDguOSA0LjA5bDIuODggMy4wM3pNOS42NCA5LjIxYTMuNDYgMy40NiAwIDAgMC0uMiAxLjc5aC0uODZMNi4zMSA4LjYxYS45ODcuOTg3IDAgMCAxIC4wNC0xLjQxLjk5Ni45OTYgMCAwIDEgMS40MS4wNGwxLjg4IDEuOTd6bTEwLjY5IDQuNy44OC0uODNjLjUtLjQ3Ljc5LTEuMTMuNzktMS44MlYzLjM1bC0uMjctLjFjLS43OC0uMjgtMS42NC4xMi0xLjkyLjlsLS43MSAxLjk2LTUuNS01LjhhLjk5Ni45OTYgMCAxIDAtMS40NSAxLjM3bDMuNzkgMy45OS0uNzMuNjktNC44Mi01LjA4YS45OTYuOTk2IDAgMSAwLTEuNDUgMS4zN2wzLjc4IDMuOThMMTUuMzggOWwzLjYxIDMuNDMuNjEuNThjLjI5LjI3LjUzLjU3LjczLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpbmdsZUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyYzAtMS4xLS45LTItMi0yVjdjMC0xLjEtLjktMi0yLTJIOGMtMS4xIDAtMiAuOS0yIDJ2M2MtMS4xIDAtMiAuOS0yIDJ2NWgxLjMzTDYgMTloMWwuNjctMmg4LjY3bC42NiAyaDFsLjY3LTJIMjB2LTV6bS00LTJoLTNWN2gzdjN6TTggN2gzdjNIOFY3em0tMiA1aDEydjNINnYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2thdGVib2FyZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNNy4yNSAyMi41Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NS43NS0uMzQuNzUtLjc1LS4zNC0uNzUtLjc1LS43NXptOC41IDBjLS40MSAwLS43NS4zNC0uNzUuNzVzLjM0Ljc1Ljc1Ljc1Ljc1LS4zNC43NS0uNzUtLjM0LS43NS0uNzUtLjc1em0zLjQ5LTMuNWEuNzIuNzIgMCAwIDAtLjU5LjNjLS41NS43My0xLjQyIDEuMi0yLjQgMS4ySDE2di02bC00LjMyLTIuNjcgMS44LTIuODlBNi41MDcgNi41MDcgMCAwIDAgMTkgMTJ2LTJjLTEuODUgMC0zLjQ0LTEuMTItNC4xMy0yLjcybC0uNTItMS4yMUMxNC4xNiA1LjY0IDEzLjYxIDUgMTIuNyA1SDdMNC41IDlsMS43IDEuMDZMOC4xIDdoMi4zNWwtMi40IDMuODRjLS4zMS41LS4zOSAxLjExLS4yMSAxLjY3bDEuMzQgNC4xNS0zLjEyIDMuNzZjLS43LS4xNi0xLjMtLjU3LTEuNzEtMS4xMmEuNzQ5Ljc0OSAwIDEgMC0xLjIuOWMuODIgMS4xIDIuMTMgMS44IDMuNiAxLjhoOS41YzEuNDcgMCAyLjc4LS43IDMuNi0xLjguMS0uMTQuMTUtLjMuMTUtLjQ1IDAtLjM5LS4zMi0uNzUtLjc2LS43NXpNMTQgMjAuNUg4LjZsMi45LTMuNS0xLTMuMyAzLjUgMi4ydjQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2xlZGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA0LjVjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyem04LjggMTUuNzRhNC4wMDMgNC4wMDMgMCAwIDEtNS4wNCAyLjU3TDEgMTcuMzZsLjQ2LTEuNDMgMy45MyAxLjI4LjQ2LTEuNDMtMy45Mi0xLjI4LjQ2LTEuNDNMNCAxMy42VjkuNWw1LjQ3LTIuMzVjLjM5LS4xNy44NC0uMjEgMS4yOC0uMDcuOTUuMzEgMS40NiAxLjMyIDEuMTYgMi4yN2wtMS4wNSAzLjI0IDIuMTQtLjM0Yy44OS0uMTUgMS43Ni4zMiAyLjE0IDEuMTRsMi4wOCA0LjUxIDEuOTMuNjMtLjQ2IDEuNDMtMy4zMi0xLjA4LS40NyAxLjQyIDMuMzIgMS4wOGMxLjMxLjQzIDIuNzItLjI5IDMuMTUtMS42MS40My0xLjMxLS4yOS0yLjcyLTEuNjEtMy4xNWwuNDYtMS40M2MyLjExLjY5IDMuMjcgMi45NSAyLjU4IDUuMDV6TTYgMTQuMjVsMS4wMS4zM2MtLjIyLS40Mi0uMjgtLjkyLS4xMi0xLjRMNy45MiAxMCA2IDEwLjgydjMuNDN6bTcuOTQgNC4xNi02LjY2LTIuMTYtLjQ2IDEuNDMgNi42NiAyLjE2LjQ2LTEuNDN6bS42OS0xLjM2LTEuMTgtMi41Ni0zLjk3Ljg5IDUuMTUgMS42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU25vd2JvYXJkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM2MwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem03LjQgMTcuMDlhLjc0OC43NDggMCAwIDAtLjY0LjE3Yy0uNjkuNi0xLjY0Ljg4LTIuNi42N0wxNyAyMC42OWwtMS02LjE5LTMuMzItMi42NyAxLjgtMi44OUE2LjUwNyA2LjUwNyAwIDAgMCAyMCAxMnYtMmMtMS44NSAwLTMuNDQtMS4xMi00LjEzLTIuNzJsLS41Mi0xLjIxQzE1LjE2IDUuNjQgMTQuNjEgNSAxMy43IDVIOEw1LjUgOWwxLjcgMS4wNkw5LjEgN2gyLjM1bC0yLjUxIDMuOTljLS4yOC40NS0uMzcgMS0uMjUgMS41Mkw5LjUgMTYgNiAxOC4zNWwtLjQ3LS4xYy0uOTYtLjItMS43MS0uODUtMi4xLTEuNjdhLjc0NC43NDQgMCAwIDAtLjUxLS40MmMtLjQzLS4wOS0uODIuMi0uOS41OC0uMDQuMTQtLjAyLjMxLjA1LjQ2LjU4IDEuMjQgMS43MSAyLjIgMy4xNSAyLjUxbDEyLjYzIDIuNjljMS40NC4zMSAyLjg2LS4xMSAzLjktMS4wMS4xMy0uMTEuMjEtLjI2LjI0LS40MS4wNy0uMzgtLjE2LS44LS41OS0uODl6TTguNzMgMTguOTNsMy4wMi0yLjAzLS40NC0zLjMyIDIuODQgMi4wMi43NSA0LjY0LTYuMTctMS4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU25vd3Nob2VpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDMuNWMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yek02LjMyIDE5LjAzbC0xLjE0LTEuNDdMNCAxOC41bDIuMzggMy4wNGMuNTEuNjUgMS4xNiAxLjE1IDEuODggMS40MS4yOC4xLjUzLjA0LjcyLS4xMS4zLS4yMy40Mi0uNy4xMi0xLjA3YS44NC44NCAwIDAgMC0uMzEtLjIyIDIuOTcgMi45NyAwIDAgMS0xLjE0LS44M2wtLjA4LS4xTDExIDE4LjJsLjg5LTMuMjIgMi4xMSAydjQuNTJoLTJWMjNoMy44N2MuODIgMCAxLjYxLS4yMSAyLjI2LS42MS4yNi0uMTYuMzctLjM5LjM3LS42NCAwLS4zOC0uMy0uNzUtLjc3LS43NS0uMTMgMC0uMjYuMDQtLjM3LjEtLjQuMjMtLjg3LjM3LTEuMzYuNHYtNi4wMmwtMi4xMS0yIC42LTNDMTUuNzkgMTEuOTggMTcuOCAxMyAyMCAxM3YtMmMtMS45IDAtMy41MS0xLjAyLTQuMzEtMi40MmwtMS0xLjU4Yy0uNC0uNi0xLTEtMS43LTEtLjc1IDAtMS40MS4zNC01Ljk5IDIuMjhWMTNoMlY5LjU4bDEuNzktLjdMOS4yIDE3bC0yLjg4IDIuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNvY2lhbERpc3RhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA1YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTQuNzggMy41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAyIDEwLjQzVjExaDh2LS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTE4IDdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0yLjc4IDEuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMTQgMTAuNDNWMTFoOHYtLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNMjIgMTdsLTQtNHYzSDZ2LTNsLTQgNCA0IDR2LTNoMTJ2M2w0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNvdXRoQW1lcmljYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC0xLjk1LjctMy43NCAxLjg3LTUuMTNMOSAxMHYxYzAgMS4xLjkgMiAyIDJ2NS41OWMwIC4yNy4xMS41Mi4yOS43MWwuNzEuN2MtNC40MiAwLTgtMy41OC04LTh6bTkgNy45NFYxOGwzLjc1LTUuNjJjLjE2LS4yNS4yNS0uNTQuMjUtLjgzVjEwLjVjMC0uNTUtLjQ1LTEtMS0xaC0xLjVsLTEuNC0xLjc1Yy0uMzgtLjQ3LS45NS0uNzUtMS41Ni0uNzVIOFY1LjA3QTcuOTcxIDcuOTcxIDAgMCAxIDEyIDRjNC40MSAwIDggMy41OSA4IDggMCA0LjA3LTMuMDYgNy40NC03IDcuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0Jhc2ViYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy44MSA2LjI4QzIuNjcgNy45IDIgOS44NyAyIDEycy42NyA0LjEgMS44MSA1LjcyQzYuMjMgMTYuOTUgOCAxNC42OCA4IDEyUzYuMjMgNy4wNSAzLjgxIDYuMjh6TTIwLjE5IDYuMjhDMTcuNzcgNy4wNSAxNiA5LjMyIDE2IDEyczEuNzcgNC45NSA0LjE5IDUuNzJDMjEuMzMgMTYuMSAyMiAxNC4xMyAyMiAxMnMtLjY3LTQuMS0xLjgxLTUuNzJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEyYzAtMy4yOCAxLjk3LTYuMDkgNC43OS03LjMzQzE3LjAxIDMuMDIgMTQuNjMgMiAxMiAyUzYuOTkgMy4wMiA1LjIxIDQuNjdDOC4wMyA1LjkxIDEwIDguNzIgMTAgMTJzLTEuOTcgNi4wOS00Ljc5IDcuMzNDNi45OSAyMC45OCA5LjM3IDIyIDEyIDIyczUuMDEtMS4wMiA2Ljc5LTIuNjdBOC4wMDIgOC4wMDIgMCAwIDEgMTQgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0Jhc2tldGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4wOSAxMWg0Ljg2YTkuOTUxIDkuOTUxIDAgMCAwLTEuNTQtNC40IDUuOTg3IDUuOTg3IDAgMCAwLTMuMzIgNC40ek02LjkxIDExYTUuOTg3IDUuOTg3IDAgMCAwLTMuMzItNC40QTkuOTUxIDkuOTUxIDAgMCAwIDIuMDUgMTFoNC44NnpNMTUuMDcgMTFhNy45OTQgNy45OTQgMCAwIDEgNC4wNi02QTkuOTY5IDkuOTY5IDAgMCAwIDEzIDIuMDVWMTFoMi4wN3pNOC45MyAxMUgxMVYyLjA1QTkuOTQzIDkuOTQzIDAgMCAwIDQuODcgNWE3Ljk5NCA3Ljk5NCAwIDAgMSA0LjA2IDZ6TTE1LjA3IDEzSDEzdjguOTVBOS45NDMgOS45NDMgMCAwIDAgMTkuMTMgMTlhNy45OTQgNy45OTQgMCAwIDEtNC4wNi02ek0zLjU5IDE3LjRBNi4wMjkgNi4wMjkgMCAwIDAgNi45MSAxM0gyLjA1Yy4xNiAxLjYxLjcxIDMuMTEgMS41NCA0LjR6TTE3LjA5IDEzYTUuOTg3IDUuOTg3IDAgMCAwIDMuMzIgNC40IDkuOTUxIDkuOTUxIDAgMCAwIDEuNTQtNC40aC00Ljg2ek04LjkzIDEzYTcuOTk0IDcuOTk0IDAgMCAxLTQuMDYgNkE5Ljk2OSA5Ljk2OSAwIDAgMCAxMSAyMS45NVYxM0g4LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNDcmlja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMDUgMTIuODEgNi41NiA0LjMyYS45OTYuOTk2IDAgMCAwLTEuNDEgMEwyLjMyIDcuMTVhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDguNDkgOC40OWMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMi44My0yLjgzYS45OTYuOTk2IDAgMCAwIDAtMS40MXpNMTQuMzQxIDE3Ljc1NmwxLjQxNC0xLjQxNCA0LjI0MyA0LjI0My0xLjQxNCAxLjQxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOC41XCIsXCJjeVwiOlwiNS41XCIsXCJyXCI6XCIzLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzRXNwb3J0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjU4IDE2LjA5LTEuMDktNy42NkEzLjk5NiAzLjk5NiAwIDAgMCAxNi41MyA1SDcuNDdDNS40OCA1IDMuNzkgNi40NiAzLjUxIDguNDNsLTEuMDkgNy42NkMyLjIgMTcuNjMgMy4zOSAxOSA0Ljk0IDE5Yy42OCAwIDEuMzItLjI3IDEuOC0uNzVMOSAxNmg2bDIuMjUgMi4yNWMuNDguNDggMS4xMy43NSAxLjguNzUgMS41NiAwIDIuNzUtMS4zNyAyLjUzLTIuOTF6TTExIDExSDl2Mkg4di0ySDZ2LTFoMlY4aDF2MmgydjF6bTQtMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yIDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzRm9vdGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjAyIDE1LjYyYy0uMDggMi40Mi4zMiA0LjM0LjY3IDQuNjlzMi4yOC43NiA0LjY5LjY3bC01LjM2LTUuMzZ6TTEzLjA4IDMuMjhjLTIuMzMuNDItNC43OSAxLjM0LTYuNjIgMy4xOHMtMi43NiA0LjI5LTMuMTggNi42Mmw3LjYzIDcuNjNjMi4zNC0uNDEgNC43OS0xLjM0IDYuNjItMy4xOHMyLjc2LTQuMjkgMy4xOC02LjYybC03LjYzLTcuNjN6TTkuOSAxNS41bC0xLjQtMS40IDUuNi01LjYgMS40IDEuNC01LjYgNS42ek0yMC45OCA4LjM4Yy4wOC0yLjQyLS4zMi00LjM0LS42Ny00LjY5cy0yLjI4LS43Ni00LjY5LS42N2w1LjM2IDUuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0dvbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNmMzLjg3IDAgNy0zLjEzIDctN3MtMy4xMy03LTctNy03IDMuMTMtNyA3IDMuMTMgNyA3IDd6bTAtMTJjMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDUtNS0yLjI0LTUtNSAyLjI0LTUgNS01elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0XCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE5aDJjMS4xIDAgMiAuOSAyIDJ2MWgydi0xYzAtMS4xLjktMiAyLTJoMnYtMkg3djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0d5bW5hc3RpY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNMSA5aDZsNy01IDEuMzEgMS41Mi00LjE3IDIuOThIMTRMMjEuOCA0IDIzIDUuNCAxNC41IDEyIDE0IDIyaC0ybC0uNS0xMEw4IDExSDFWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzSGFuZGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4yNyA2Yy0uNTUuOTUtLjIyIDIuMTguNzMgMi43My45NS41NSAyLjE4LjIyIDIuNzMtLjczLjU1LS45NS4yMi0yLjE4LS43My0yLjczLS45NS0uNTUtMi4xOC0uMjItMi43My43M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuODQgMTAuNDEtMi42LTEuNWMtMi4zOC0xLjM4LTMuMi00LjQ0LTEuODItNi44MmwtMS43My0xQzguMSAzLjgzIDguNiA3LjIxIDEwLjY2IDkuNGwtNS4xNSA4LjkyIDEuNzMgMSAxLjUtMi42IDEuNzMgMS0zIDUuMiAxLjczIDEgNi4yOS0xMC44OWE1LjAwMiA1LjAwMiAwIDAgMSAuMzEgNS40NmwxLjczIDFjMS42LTIuNzUgMS4yOC02LjU4LTEuNjktOS4wOHpNMTIuNzUgMy44Yy43Mi40MSAxLjYzLjE3IDIuMDUtLjU1LjQxLS43Mi4xNy0xLjYzLS41NS0yLjA1YTEuNTAxIDEuNTAxIDAgMCAwLTEuNSAyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0hvY2tleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTd2M2gydi00SDNjLS41NSAwLTEgLjQ1LTEgMXpNOSAxNkg1djRsNC42OS0uMDFjLjM4IDAgLjcyLS4yMS44OS0uNTVsLjg3LTEuOS0xLjU5LTMuNDhMOSAxNnpNMjEuNzEgMTYuMjlBLjk5Ny45OTcgMCAwIDAgMjEgMTZoLTF2NGgydi0zYzAtLjI4LS4xMS0uNTMtLjI5LS43MXpNMTMuNiAxMi44NCAxNy42NSA0SDE0LjNsLTEuNzYgMy45Ny0uNDkgMS4xLS4wNS4xNEw5LjcgNEg2LjM1bDQuMDUgOC44NCAxLjUyIDMuMzIuMDguMTggMS40MiAzLjFjLjE3LjM0LjUxLjU1Ljg5LjU1TDE5IDIwdi00aC00bC0xLjQtMy4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzS2FiYWRkaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjIuMzhcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMTEuODh2LTQuN2wtNS4wNS0yLjE0Yy0uOTctLjQxLTIuMDktLjA2LTIuNjUuODRsLTEgMS42Yy0uNjcgMS4xOC0xLjkxIDIuMDYtMy40MSAyLjMybC4wNi4wNmMuNjkuNjkgMS41MiAxLjA3IDIuNDYgMS4xNy44LS40MiAxLjUyLS45OCAyLjA5LTEuNjRsLjYgMy0xLjE2IDEuMS0uOTQuODl2Ny41aDJ2LTZsMi4xLTIgMS44IDhIMjNsLTIuMTgtMTEtLjYyLTMuMSAxLjguN3YzLjRoMnpNMTAuMjkgOC4wOWMuMjIuMTUuNDcuMjQuNzIuMjkuMTMuMDIuMjUuMDQuMzguMDRzLjI2LS4wMS4zOC0uMDRjLjEzLS4wMi4yNS0uMDYuMzctLjExLjI0LS4xLjQ3LS4yNC42Ni0uNDQuNDktLjQ5LjY3LTEuMTcuNTUtMS44LS4wNy0uMzctLjI1LS43NC0uNTUtMS4wMy0uMTktLjE5LS40Mi0uMzQtLjY2LS40NC0uMTItLjA1LS4yNC0uMDktLjM3LS4xMXMtLjI1LS4wNC0uMzgtLjA0Yy0uMTIgMC0uMjMuMDEtLjM1LjAzLS4xNC4wMi0uMjguMDYtLjQxLjExLS4yMy4xMS0uNDYuMjYtLjY1LjQ1LS4zLjI5LS40OC42Ni0uNTUgMS4wMy0uMTIuNjMuMDYgMS4zMS41NSAxLjguMDkuMS4yLjE4LjMxLjI2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMS4yNCAxMC41Ni0yLTJjLS4xLS4xLS4yLS4xOC0uMzEtLjI2YTEuOTMgMS45MyAwIDAgMC0uNzItLjI4Yy0uMTMtLjAzLS4yNS0uMDQtLjM4LS4wNC0uNTEgMC0xLjAyLjItMS40MS41OWwtMy4zNCAzLjM0Yy0uNDEuNDEtLjYyLjk4LS41OCAxLjU0IDAgLjE4LjA0LjM3LjExLjU1bDEuMDcgMi45NS0zLjYzIDMuNjNMMS40NiAyMmw0LjI0LTQuMjR2LTIuMjJMNyAxNi43NXY1LjEzaDJ2LTZsLTIuMTItMi4xMiAyLjM2LTIuMzYuNzEuNzFjMS4yOSAxLjI2IDIuOTcgMi4wNCA1LjAzIDIuMDRsLS4xNC0yLjA3Yy0xLjUtLjAyLTIuNy0uNjItMy42LTEuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c01hcnRpYWxBcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuOCAyLTguMiA2LjctMS4yMS0xLjA0IDMuNi0yLjA4TDkuNDEgMSA4IDIuNDFsMi43NCAyLjc0TDUgOC40NmwtMS4xOSA0LjI5TDYuMjcgMTcgOCAxNmwtMi4wMy0zLjUyLjM1LTEuM0w5LjUgMTNsLjUgOWgybC41LTEwTDIxIDMuNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI1XCIsXCJjeVwiOlwiNVwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNNbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIwYzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xdi0zSDd2M3pNMTggN2MtLjU1IDAtMSAuNDUtMSAxVjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2NS44YzAgLjEzLjAxLjI2LjA0LjM5bC44IDRjLjA5LjQ3LjUuOC45OC44aDEwLjM2Yy40NSAwIC44OS0uMzYuOTgtLjhsLjgtNGMuMDMtLjEzLjA0LS4yNi4wNC0uMzlWOGMwLS41NS0uNDUtMS0xLTF6bS0zIDNIN1Y3aDh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzTW90b3JzcG9ydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMS4zOWMwLS42NS0uMzktMS4yMy0uOTgtMS40OEw1LjQ0IDcuNTVjLTEuNDggMS42OC0yLjMyIDMuNy0yLjggNS40NWg3Ljc1Yy44OSAwIDEuNjEtLjcyIDEuNjEtMS42MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTYgMTEuMjJjLS40MS00LjQxLTQuNTYtNy40OS04Ljk4LTcuMi0yLjUxLjE2LTQuNDQuOTQtNS45MyAyLjA0bDQuNzQgMi4wMWMxLjMzLjU3IDIuMiAxLjg3IDIuMiAzLjMyIDAgMS45OS0xLjYyIDMuNjEtMy42MSAzLjYxSDIuMjFDMiAxNi4zMSAyIDE3LjIgMiAxNy4ydi44YzAgMS4xLjkgMiAyIDJoMTBjNC42NyAwIDguNDEtNC4wMSA3Ljk2LTguNzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c1J1Z2J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNDkgMy41MWMtLjU2LS41Ni0yLjE1LS45Ny00LjE2LS45Ny0zLjA4IDAtNy4xNS45Ni05Ljk4IDMuNzktNC42OSA0LjctNC4yNSAxMi43NC0yLjg0IDE0LjE2LjU2LjU2IDIuMTUuOTcgNC4xNi45NyAzLjA4IDAgNy4xNS0uOTYgOS45OC0zLjc5IDQuNjktNC43IDQuMjUtMTIuNzQgMi44NC0xNC4xNnpNNy43NiA3Ljc2YzIuNjQtMi42NCA2LjM1LTMuMTIgOC4wMy0zLjE5LTIuMDUuOTQtNC40NiAyLjQ1LTYuNjEgNC42MWEyMy40NjIgMjMuNDYyIDAgMCAwLTQuNjIgNi42M2MuMS0yLjQ4Ljg4LTUuNzQgMy4yLTguMDV6bTguNDggOC40OGMtMi42NCAyLjY0LTYuMzUgMy4xMi04LjAzIDMuMTkgMi4wNS0uOTQgNC40Ni0yLjQ1IDYuNjEtNC42MSAyLjE2LTIuMTYgMy42Ny00LjU4IDQuNjItNi42My0uMSAyLjQ4LS44OCA1Ljc0LTMuMiA4LjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNTb2NjZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDMuMyAxLjM1LS45NWE4LjAxIDguMDEgMCAwIDEgNC4zOCAzLjM0bC0uMzkgMS4zNC0xLjM1LjQ2TDEzIDYuN1Y1LjN6bS0zLjM1LS45NUwxMSA1LjN2MS40TDcuMDEgOS40OWwtMS4zNS0uNDYtLjM5LTEuMzRhOC4xMDMgOC4xMDMgMCAwIDEgNC4zOC0zLjM0ek03LjA4IDE3LjExbC0xLjE0LjFBNy45MzggNy45MzggMCAwIDEgNCAxMmMwLS4xMi4wMS0uMjMuMDItLjM1bDEtLjczIDEuMzguNDggMS40NiA0LjM0LS43OCAxLjM3em03LjQyIDIuNDhjLS43OS4yNi0xLjYzLjQxLTIuNS40MXMtMS43MS0uMTUtMi41LS40MWwtLjY5LTEuNDkuNjQtMS4xaDUuMTFsLjY0IDEuMTEtLjcgMS40OHpNMTQuMjcgMTVIOS43M2wtMS4zNS00LjAyTDEyIDguNDRsMy42MyAyLjU0TDE0LjI3IDE1em0zLjc5IDIuMjEtMS4xNC0uMS0uNzktMS4zNyAxLjQ2LTQuMzQgMS4zOS0uNDcgMSAuNzNjLjAxLjExLjAyLjIyLjAyLjM0IDAgMS45OS0uNzMgMy44MS0xLjk0IDUuMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c1Rlbm5pcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUyIDIuNDlDMTcuMTguMTUgMTIuOS42MiA5Ljk3IDMuNTVjLTEuNiAxLjYtMi41MiAzLjg3LTIuNTQgNS40Ni0uMDIgMS41OC4yNiAzLjg5LTEuMzUgNS41bC00LjI0IDQuMjQgMS40MiAxLjQyIDQuMjQtNC4yNGMxLjYxLTEuNjEgMy45Mi0xLjMzIDUuNS0xLjM1czMuODYtLjk0IDUuNDYtMi41NGMyLjkyLTIuOTMgMy40LTcuMjEgMS4wNi05LjU1em0tOS4yIDkuMTljLTEuNTMtMS41My0xLjA1LTQuNjEgMS4wNi02LjcyczUuMTgtMi41OSA2LjcyLTEuMDZjMS41MyAxLjUzIDEuMDUgNC42MS0xLjA2IDYuNzJzLTUuMTggMi41OS02LjcyIDEuMDZ6TTE4IDE3Yy41MyAwIDEuMDQuMjEgMS40MS41OS43OC43OC43OCAyLjA1IDAgMi44My0uMzcuMzctLjg4LjU4LTEuNDEuNThzLTEuMDQtLjIxLTEuNDEtLjU5Yy0uNzgtLjc4LS43OC0yLjA1IDAtMi44My4zNy0uMzcuODgtLjU4IDEuNDEtLjU4bTAtMmEzLjk5OCAzLjk5OCAwIDAgMC0yLjgzIDYuODNjLjc4Ljc4IDEuODEgMS4xNyAyLjgzIDEuMTdhMy45OTggMy45OTggMCAwIDAgMi44My02LjgzQTMuOTk4IDMuOTk4IDAgMCAwIDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNWb2xsZXliYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA0LjAxQzMuNTggNS44NCAyIDguNzMgMiAxMmMwIDEuNDYuMzIgMi44NS44OSA0LjExTDYgMTQuMzFWNC4wMXpNMTEgMTEuNDJWMi4wNWMtMS4wNi4xMS0yLjA3LjM4LTMgLjc5djEwLjMybDMtMS43NHpNMTIgMTMuMTVsLTguMTEgNC42OGMuNjEuODQgMS4zNCAxLjU5IDIuMTggMi4yTDE1IDE0Ljg5bC0zLTEuNzR6TTEzIDcuOTZ2My40Nmw4LjExIDQuNjhjLjQyLS45My43LTEuOTMuODItMi45OEwxMyA3Ljk2ek04LjA3IDIxLjJjMS4yMS41MSAyLjUzLjggMy45My44IDMuMzQgMCA2LjI5LTEuNjUgOC4xMS00LjE2TDE3IDE2LjA0IDguMDcgMjEuMnpNMjEuOTIgMTAuODFjLS41NS00LjYzLTQuMjYtOC4zLTguOTItOC43NnYzLjZsOC45MiA1LjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yMyA2Yy0xLjY2IDAtMy4yMi42Ni00LjM2IDEuNzNDNi41NCA2LjczIDUuNjEgNiA0LjUgNmEyLjUgMi41IDAgMCAwIDAgNWMuMjEgMCAuNDEtLjAzLjYxLS4wOC0uMDUuMjUtLjA5LjUxLS4xLjc4YTYuMDA2IDYuMDA2IDAgMCAwIDYuNjggNi4yN2MyLjU1LS4yOCA0LjY4LTIuMjYgNS4xOS00Ljc3LjE1LS43MS4xNS0xLjQuMDYtMi4wNi0uMDktLjYuMzgtMS4xMy45OS0xLjEzSDIyVjZIMTEuMjN6TTQuNSA5Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXptNi41IDZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VyZmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDIzYy0xLjAzIDAtMi4wNi0uMjUtMy0uNzUtMS44OSAxLTQuMTEgMS02IDAtMS44OSAxLTQuMTEgMS02IDAtLjk1LjUtMS45Ny43NS0zIC43NUgydi0yaDFjMS4wNCAwIDIuMDgtLjM1IDMtMSAxLjgzIDEuMyA0LjE3IDEuMyA2IDAgMS44MyAxLjMgNC4xNyAxLjMgNiAwIC45MS42NSAxLjk2IDEgMyAxaDF2MmgtMXpNMTcgMS41Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTIuNTcgNi45OEwxMi4xOCAxMCAxNiAxM3YzLjg0Yy41My4zOCAxLjAzLjc4IDEuNDkgMS4xNy0uNjguNTgtMS41NS45OS0yLjQ5Ljk5LTEuMiAwLTIuMjctLjY2LTMtMS41LS43My44NC0xLjggMS41LTMgMS41LS4zMyAwLS42NS0uMDUtLjk2LS4xNEM1LjE5IDE2LjkgMyAxNC43MiAzIDEzLjI4IDMgMTIuMjUgNC4wMSAxMiA0Ljg1IDEyYy45OCAwIDIuMjguMzEgMy43LjgzbC0uNTMtMy4xYy0uMTEtLjY3LjE4LTEuMzguNzgtMS43OWwyLjE1LTEuNDUtMi0uMzctMi44MiAxLjkzTDUgNi40IDguNSA0bDUuNTUgMS4wM2MuNDUuMDkuOTMuMzcgMS4yMi44OWwuODggMS41NUE1LjAwNyA1LjAwNyAwIDAgMCAyMC41IDEwdjJhNy4wMSA3LjAxIDAgMCAxLTYuMDctMy41MnpNMTAuMyAxMS4xbC40NCAyLjY1Yy45Mi40MiAyLjQ4IDEuMjcgMy4yNiAxLjc1VjE0bC0zLjctMi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2l0Y2hBY2NvdW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNiAyYzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptNiAxMkg4di0xLjVjMC0xLjk5IDQtMyA2LTNzNiAxLjAxIDYgM1YxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGh1bWJEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDRoLTJjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDJWNHpNMi4xNyAxMS4xMmMtLjExLjI1LS4xNy41Mi0uMTcuOFYxM2MwIDEuMS45IDIgMiAyaDUuNWwtLjkyIDQuNjVjLS4wNS4yMi0uMDIuNDYuMDguNjYuMjMuNDUuNTIuODYuODggMS4yMkwxMCAyMmw2LjQxLTYuNDFjLjM4LS4zOC41OS0uODkuNTktMS40MlY2LjM0QzE3IDUuMDUgMTUuOTUgNCAxNC42NiA0aC04LjFjLS43MSAwLTEuMzYuMzctMS43Mi45N2wtMi42NyA2LjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVtYlVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjBoMmMuNTUgMCAxLS40NSAxLTF2LTljMC0uNTUtLjQ1LTEtMS0xSDJ2MTF6bTE5LjgzLTcuMTJjLjExLS4yNS4xNy0uNTIuMTctLjhWMTFjMC0xLjEtLjktMi0yLTJoLTUuNWwuOTItNC42NWMuMDUtLjIyLjAyLS40Ni0uMDgtLjY2YTQuOCA0LjggMCAwIDAtLjg4LTEuMjJMMTQgMiA3LjU5IDguNDFDNy4yMSA4Ljc5IDcgOS4zIDcgOS44M3Y3Ljg0QTIuMzQgMi4zNCAwIDAgMCA5LjM0IDIwaDguMTFjLjcgMCAxLjM2LS4zNyAxLjcyLS45N2wyLjY2LTYuMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRodW5kZXJzdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjkyIDcuMDJDMTcuNDUgNC4xOCAxNC45NyAyIDEyIDIgOS44MiAyIDcuODMgMy4xOCA2Ljc4IDUuMDYgNC4wOSA1LjQxIDIgNy43NCAyIDEwLjUgMiAxMy41MyA0LjQ3IDE2IDcuNSAxNmgxMGMyLjQ4IDAgNC41LTIuMDIgNC41LTQuNWE0LjUgNC41IDAgMCAwLTQuMDgtNC40OHpNMTQuOCAxN2wtMi45IDMuMzIgMiAxTDExLjU1IDI0aDIuNjVsMi45LTMuMzItMi0xTDE3LjQ1IDE3ek04LjggMTdsLTIuOSAzLjMyIDIgMUw1LjU1IDI0SDguMmwyLjktMy4zMi0yLTFMMTEuNDUgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvcm5hZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4xMSA4IDIzIDNIMWwyLjg5IDV6TTcuOTUgMTUgMTIgMjJsNC4wNS03ek0xOC45NSAxMEg1LjA1bDEuNzQgM2gxMC40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNnZW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4YzEuOTMgMCAzLjUgMS41NyAzLjUgMy41UzEzLjkzIDE1IDEyIDE1cy0zLjUtMS41Ny0zLjUtMy41UzEwLjA3IDggMTIgOHptNC41My4zOCAzLjk3LTMuOTZWN2gyVjFoLTZ2MmgyLjU4bC0zLjk3IDMuOTdDMTQuMjMgNi4zNiAxMy4xNiA2IDEyIDZzLTIuMjMuMzYtMy4xMS45N2wtLjY1LS42NSAxLjQxLTEuNDEtMS40MS0xLjQyTDYuODIgNC45IDQuOTIgM0g3LjVWMWgtNnY2aDJWNC40MmwxLjkxIDEuOS0xLjQyIDEuNDJMNS40IDkuMTVsMS40MS0xLjQxLjY1LjY1Yy0uNi44OC0uOTYgMS45NS0uOTYgMy4xMWE1LjUgNS41IDAgMCAwIDQuNSA1LjQxVjE5SDl2MmgydjJoMnYtMmgydi0yaC0ydi0yLjA5YTUuNSA1LjUgMCAwIDAgMy41My04LjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmF2ZWxFeHBsb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMyAxNi45Yy40LS43LjctMS41LjctMi40IDAtMi41LTItNC41LTQuNS00LjVTMTEgMTIgMTEgMTQuNXMyIDQuNSA0LjUgNC41Yy45IDAgMS43LS4zIDIuNC0uN2wzLjIgMy4yIDEuNC0xLjQtMy4yLTMuMnptLTMuOC4xYy0xLjQgMC0yLjUtMS4xLTIuNS0yLjVzMS4xLTIuNSAyLjUtMi41IDIuNSAxLjEgMi41IDIuNS0xLjEgMi41LTIuNSAyLjV6TTEyIDIwdjJDNi40OCAyMiAyIDE3LjUyIDIgMTJTNi40OCAyIDEyIDJjNC44NCAwIDguODcgMy40NCA5LjggOGgtMi4wN0E4IDggMCAwIDAgMTUgNC41OVY1YzAgMS4xLS45IDItMiAyaC0ydjJjMCAuNTUtLjQ1IDEtMSAxSDh2MmgydjNIOWwtNC43OS00Ljc5QzQuMDggMTAuNzkgNCAxMS4zOCA0IDEyYzAgNC40MSAzLjU5IDggOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUc3VuYW1pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNjcgMTcuNjNjLTMuOCAyLjgtNi4xMi40LTYuNjcgMC0uNjYuNDktMi45MiAyLjc2LTYuNjcgMEMzLjQzIDE5LjAzIDIuNjUgMTkgMiAxOXYyYzEuMTYgMCAyLjMtLjMyIDMuMzMtLjkzYTYuNTM1IDYuNTM1IDAgMCAwIDYuNjcgMCA2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDBjMS4wMy42MSAyLjE3LjkzIDMuMzMuOTN2LTJjLS42NiAwLTEuNS0uMDItMy4zMy0xLjM3ek0xOS4zMyAxMkgyMnYtMmgtMi42N0MxNy41IDEwIDE2IDguNSAxNiA2LjY3YzAtMS4wMi4zOC0xLjc0IDEuMDktMy4zNC0xLjM3LS4yMS0yLS4zMy0zLjA5LS4zM0M3LjM2IDMgMi4xNSA4LjAzIDIuMDEgMTQuNWwtLjAxIDJjMS4xNiAwIDIuMy0uMzIgMy4zMy0uOTNhNi41MzUgNi41MzUgMCAwIDAgNi42NyAwIDYuNTM1IDYuNTM1IDAgMCAwIDYuNjcgMGMxLjAzLjYxIDIuMTcuOTMgMy4zMy45M3YtMmMtLjY2IDAtMS41LS4wMi0zLjMzLTEuMzctMy44IDIuOC02LjEyLjQtNi42NyAwLS45LjY3LS41NC40MS0uOTEuNjMtLjctLjk0LTEuMDktMi4wNi0xLjA5LTMuMjYgMC0yLjU4IDEuNzctNC43NCA0LjIxLTUuMzMtLjEzLjUxLS4yMSAxLjAyLS4yMSAxLjVDMTQgOS42MSAxNi4zOSAxMiAxOS4zMyAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmFjY2luZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1LjVIOFY0aC41Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxSDZ2MS41SDNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFWMTVjMCAxLjEuOSAyIDIgMmgxdjRsMiAxLjVWMTdoMWMxLjEgMCAyLS45IDItMlY3LjVjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTF6TTkgOUg3LjI1Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NUg5VjEySDcuMjVjLS40MSAwLS43NS4zNC0uNzUuNzVzLjM0Ljc1Ljc1Ljc1SDlWMTVINVY3LjVoNFY5em0xMC41IDEuNVYxMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXYuNWMwIC41LTEuNSAxLjE2LTEuNSAzVjIwYzAgMS4xLjkgMiAyIDJoNGMxLjEgMCAyLS45IDItMnYtNi41YzAtMS44NC0xLjUtMi41LTEuNS0zem0tMyAwVjEwaDF2LjVjMCAxLjYgMS41IDIgMS41IDN2LjVoLTR2LS41YzAtMSAxLjUtMS40IDEuNS0zek0xNSAyMHYtMS41aDRWMjBoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvbGNhbm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC03bC0yIDVINmwtNCA5aDIwek0xMyAxaDJ2NGgtMnpNMTYuMTIxIDUuNDY4IDE4Ljk1IDIuNjRsMS40MTQgMS40MTQtMi44MjkgMi44Mjh6TTcuNjQgNC4wNWwxLjQxNC0xLjQxNCAyLjgyOCAyLjgyOS0xLjQxNCAxLjQxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2FsbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNEg2QzMuNzkgNCAyIDUuNzkgMiA4djhjMCAyLjIxIDEuNzkgNCA0IDRoMTJjMi4yMSAwIDQtMS43OSA0LTRWOGMwLTIuMjEtMS43OS00LTQtNHptLTEuODYgOS43N2MtLjI0LjItLjU3LjI4LS44OC4yTDQuMTUgMTEuMjVDNC40NSAxMC41MiA1LjE2IDEwIDYgMTBoMTJjLjY3IDAgMS4yNi4zNCAxLjYzLjg0bC0zLjQ5IDIuOTN6TTYgNmgxMmMxLjEgMCAyIC45IDIgMnYuNTVjLS41OS0uMzQtMS4yNy0uNTUtMi0uNTVINmMtLjczIDAtMS40MS4yMS0yIC41NVY4YzAtMS4xLjktMiAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhdGVyRHJvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTUuMzMgNC41NS04IDguNDgtOCAxMS44IDAgNC45OCAzLjggOC4yIDggOC4yczgtMy4yMiA4LTguMmMwLTMuMzItMi42Ny03LjI1LTgtMTEuOHpNNy44MyAxNGMuMzcgMCAuNjcuMjYuNzQuNjIuNDEgMi4yMiAyLjI4IDIuOTggMy42NCAyLjg3LjQzLS4wMi43OS4zMi43OS43NSAwIC40LS4zMi43My0uNzIuNzUtMi4xMy4xMy00LjYyLTEuMDktNS4xOS00LjEyYS43NS43NSAwIDAgMSAuNzQtLjg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXZpbmdIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTdjMCAzLjMxLTIuNjkgNi02IDZ2LTEuNWMyLjQ4IDAgNC41LTIuMDIgNC41LTQuNUgyM3pNMSA3YzAtMy4zMSAyLjY5LTYgNi02djEuNUM0LjUyIDIuNSAyLjUgNC41MiAyLjUgN0gxem03LjAxLTIuNjgtNC42IDQuNmMtMy4yMiAzLjIyLTMuMjIgOC40NSAwIDExLjY3czguNDUgMy4yMiAxMS42NyAwbDcuMDctNy4wN2MuNDktLjQ5LjQ5LTEuMjggMC0xLjc3YTEuMjUgMS4yNSAwIDAgMC0xLjc3IDBsLTQuNDIgNC40Mi0uNzEtLjcxIDYuNTQtNi41NGMuNDktLjQ5LjQ5LTEuMjggMC0xLjc3cy0xLjI4LS40OS0xLjc3IDBsLTUuODMgNS44My0uNzEtLjcxIDYuODktNi44OWMuNDktLjQ5LjQ5LTEuMjggMC0xLjc3cy0xLjI4LS40OS0xLjc3IDBsLTYuODkgNi44OS0uNjktLjcgNS40OC01LjQ4Yy40OS0uNDkuNDktMS4yOCAwLTEuNzdzLTEuMjgtLjQ5LTEuNzcgMGwtNy42MiA3LjYyYTQuMDAzIDQuMDAzIDAgMCAxLS4zMyA1LjI4bC0uNzEtLjcxYTMgMyAwIDAgMCAwLTQuMjRsLS4zNS0uMzUgNC4wNy00LjA3Yy40OS0uNDkuNDktMS4yOCAwLTEuNzdhMS4yNyAxLjI3IDAgMCAwLTEuNzguMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdoYXRzYXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDUgNC45MUE5LjgxNiA5LjgxNiAwIDAgMCAxMi4wNCAyYy01LjQ2IDAtOS45MSA0LjQ1LTkuOTEgOS45MSAwIDEuNzUuNDYgMy40NSAxLjMyIDQuOTVMMi4wNSAyMmw1LjI1LTEuMzhjMS40NS43OSAzLjA4IDEuMjEgNC43NCAxLjIxIDUuNDYgMCA5LjkxLTQuNDUgOS45MS05LjkxIDAtMi42NS0xLjAzLTUuMTQtMi45LTcuMDF6bS03LjAxIDE1LjI0Yy0xLjQ4IDAtMi45My0uNC00LjItMS4xNWwtLjMtLjE4LTMuMTIuODIuODMtMy4wNC0uMi0uMzFhOC4yNjQgOC4yNjQgMCAwIDEtMS4yNi00LjM4YzAtNC41NCAzLjctOC4yNCA4LjI0LTguMjQgMi4yIDAgNC4yNy44NiA1LjgyIDIuNDJhOC4xODMgOC4xODMgMCAwIDEgMi40MSA1LjgzYy4wMiA0LjU0LTMuNjggOC4yMy04LjIyIDguMjN6bTQuNTItNi4xNmMtLjI1LS4xMi0xLjQ3LS43Mi0xLjY5LS44MS0uMjMtLjA4LS4zOS0uMTItLjU2LjEyLS4xNy4yNS0uNjQuODEtLjc4Ljk3LS4xNC4xNy0uMjkuMTktLjU0LjA2LS4yNS0uMTItMS4wNS0uMzktMS45OS0xLjIzLS43NC0uNjYtMS4yMy0xLjQ3LTEuMzgtMS43Mi0uMTQtLjI1LS4wMi0uMzguMTEtLjUxLjExLS4xMS4yNS0uMjkuMzctLjQzcy4xNy0uMjUuMjUtLjQxYy4wOC0uMTcuMDQtLjMxLS4wMi0uNDNzLS41Ni0xLjM0LS43Ni0xLjg0Yy0uMi0uNDgtLjQxLS40Mi0uNTYtLjQzaC0uNDhjLS4xNyAwLS40My4wNi0uNjYuMzEtLjIyLjI1LS44Ni44NS0uODYgMi4wNyAwIDEuMjIuODkgMi40IDEuMDEgMi41Ni4xMi4xNyAxLjc1IDIuNjcgNC4yMyAzLjc0LjU5LjI2IDEuMDUuNDEgMS40MS41Mi41OS4xOSAxLjEzLjE2IDEuNTYuMS40OC0uMDcgMS40Ny0uNiAxLjY3LTEuMTguMjEtLjU4LjIxLTEuMDcuMTQtMS4xOHMtLjIyLS4xNi0uNDctLjI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaGF0c2hvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUuNjdzLjc0IDIuNjUuNzQgNC44YzAgMi4wNi0xLjM1IDMuNzMtMy40MSAzLjczLTIuMDcgMC0zLjYzLTEuNjctMy42My0zLjczbC4wMy0uMzZDNS4yMSA3LjUxIDQgMTAuNjIgNCAxNGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04QzIwIDguNjEgMTcuNDEgMy44IDEzLjUuNjd6TTExLjcxIDE5Yy0xLjc4IDAtMy4yMi0xLjQtMy4yMi0zLjE0IDAtMS42MiAxLjA1LTIuNzYgMi44MS0zLjEyIDEuNzctLjM2IDMuNi0xLjIxIDQuNjItMi41OC4zOSAxLjI5LjU5IDIuNjUuNTkgNC4wNCAwIDIuNjUtMi4xNSA0LjgtNC44IDQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV29tYW4yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTQgOC4zMUMxMy42MiA3LjUyIDEyLjg1IDcgMTIgN3MtMS42Mi41Mi0xLjk0IDEuMzFMNyAxNmgzLjV2Nmgzdi02SDE3bC0zLjA2LTcuNjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvbWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTQgOC4zMUMxMy42MiA3LjUyIDEyLjg1IDcgMTIgN3MtMS42Mi41Mi0xLjk0IDEuMzFMNyAxNmgzdjZoNHYtNmgzbC0zLjA2LTcuNjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvcmtzcGFjZVByZW1pdW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjY4IDEzLjY5IDEyIDExLjkzbDIuMzEgMS43Ni0uODgtMi44NUwxNS43NSA5aC0yLjg0TDEyIDYuMTkgMTEuMDkgOUg4LjI1bDIuMzEgMS44NC0uODggMi44NXpNMjAgMTBjMC00LjQyLTMuNTgtOC04LThzLTggMy41OC04IDhjMCAyLjAzLjc2IDMuODcgMiA1LjI4VjIzbDYtMiA2IDJ2LTcuNzJBNy45NiA3Ljk2IDAgMCAwIDIwIDEwem0tOC02YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTYgMi42OS02IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hlY2tCb3hPdXRsaW5lQmxhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGVja0JveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY1YTIgMiAwIDAgMC0yLTJ6bS05IDE0LTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5kZXRlcm1pbmF0ZUNoZWNrQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0yIDEwSDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmFkaW9CdXR0b25DaGVja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTAtNUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhZGlvQnV0dG9uVW5jaGVja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YXJCb3JkZXJQdXJwbGU1MDAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDguODkuOTQgMy4xMWgyLjgybC0yLjI3IDEuNjIuOTMgMy4wMUwxMiAxNC43OWwtMi40MiAxLjg0LjkzLTMuMDFMOC4yNCAxMmgyLjgyTDEyIDguODlNMTIgMmwtMi40MiA4SDJsNi4xNyA0LjQxTDUuODMgMjIgMTIgMTcuMzEgMTguMTggMjJsLTIuMzUtNy41OUwyMiAxMGgtNy41OEwxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFyQm9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgOS4yNC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40bC0zLjc2IDIuMjcgMS00LjI4LTMuMzItMi44OCA0LjM4LS4zOEwxMiA2LjFsMS43MSA0LjA0IDQuMzguMzgtMy4zMiAyLjg4IDEgNC4yOEwxMiAxNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNFY2LjFsMS43MSA0LjA0IDQuMzguMzgtMy4zMiAyLjg4IDEgNC4yOEwxMiAxNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFyT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgOS4yNC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40bC0zLjc2IDIuMjcgMS00LjI4LTMuMzItMi44OCA0LjM4LS4zOEwxMiA2LjFsMS43MSA0LjA0IDQuMzguMzgtMy4zMiAyLjg4IDEgNC4yOEwxMiAxNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFyUHVycGxlNTAwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA4Ljg5Ljk0IDMuMTFoMi44MmwtMi4yNyAxLjYyLjkzIDMuMDFMMTIgMTQuNzlsLTIuNDIgMS44NC45My0zLjAxTDguMjQgMTJoMi44MkwxMiA4Ljg5TTEyIDJsLTIuNDIgOEgybDYuMTcgNC40MUw1LjgzIDIyIDEyIDE3LjMxIDE4LjE4IDIybC0yLjM1LTcuNTlMMjIgMTBoLTcuNThMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNy4yNyAxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDEwYzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01ek03IDE1Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9nZ2xlT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoMTBjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6bTAgOGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY2VVbmxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjI1IDEzYTEuMjUgMS4yNSAwIDEgMS0yLjUgMCAxLjI1IDEuMjUgMCAwIDEgMi41IDB6TTE1IDExLjc1YTEuMjUgMS4yNSAwIDEgMCAwIDIuNSAxLjI1IDEuMjUgMCAwIDAgMC0yLjV6bTcgLjI1YzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMiA2LjQ4IDIgMTIgMnMxMCA0LjQ4IDEwIDEwek0xMC42NiA0LjEyQzEyLjA2IDYuNDQgMTQuNiA4IDE3LjUgOGMuNDYgMCAuOTEtLjA1IDEuMzQtLjEyQzE3LjQ0IDUuNTYgMTQuOSA0IDEyIDRjLS40NiAwLS45MS4wNS0xLjM0LjEyek00LjQyIDkuNDdhOC4wNDYgOC4wNDYgMCAwIDAgMy42Ni00LjQ0IDguMDQ2IDguMDQ2IDAgMCAwLTMuNjYgNC40NHpNMjAgMTJjMC0uNzgtLjEyLTEuNTMtLjMzLTIuMjQtLjcuMTUtMS40Mi4yNC0yLjE3LjI0YTEwIDEwIDAgMCAxLTcuNzYtMy42OUExMC4wMTYgMTAuMDE2IDAgMCAxIDQgMTEuODZjLjAxLjA0IDAgLjA5IDAgLjE0IDAgNC40MSAzLjU5IDggOCA4czgtMy41OSA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnkyMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxN3YzLjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjE3SDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjE3aDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnkzMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNyA1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzNWMTVoMTBWNS4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNXY1LjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjE1SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnk1MCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNyA1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzNWMTNoMTBWNS4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxM3Y3LjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjEzSDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnk2MCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNyA1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzNWMTFoMTBWNS4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMXY5LjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjExSDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnk4MCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNyA1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzNWOWgxMFY1LjMzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDl2MTEuNjdDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWOUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5OTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjhoMTBWNS4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA4djEyLjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjhIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUNoYXJnaW5nMjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIwdi0zSDd2My42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxN2gtNC40TDExIDIwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjE3aDR2LTIuNUg5TDEzIDd2NS41aDJMMTIuNiAxN0gxN1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUNoYXJnaW5nMzAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2OS4xN2gyTDEzIDd2NS41aDJsLTEuMDcgMkgxN1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjB2LTUuNUg3djYuMTdDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWMTQuNWgtMy4wN0wxMSAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUNoYXJnaW5nNTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjQ3IDEzLjUgMTEgMjB2LTUuNUg5bC41My0xSDd2Ny4xN0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxMy41aC0yLjUzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjguMTdoMi41M0wxMyA3djUuNWgybC0uNTMgMUgxN1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUNoYXJnaW5nNjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzNWMTFoMy44N0wxMyA3djRoNFY1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTIuNWgyTDExIDIwdi01LjVIOWwxLjg3LTMuNUg3djkuNjdDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWMTFoLTR2MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5Q2hhcmdpbmc4MCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM1Y5aDQuOTNMMTMgN3YyaDRWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEyLjVoMkwxMSAyMHYtNS41SDlMMTEuOTMgOUg3djExLjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjloLTR2My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5Q2hhcmdpbmc5MCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM1Y4aDUuNDdMMTMgN3YxaDRWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEyLjVoMkwxMSAyMHYtNS41SDlMMTIuNDcgOEg3djEyLjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjhoLTR2NC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhcjFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMiAyMmgyMFYyTDIgMjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEyIDIgMjJoMTBWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyMkJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0yIDIyaDIwVjJMMiAyMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTAgMiAyMmgxMlYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXIzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIgMjJoMjBWMkwyIDIyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA3IDIgMjJoMTVWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJDb25uZWN0ZWROb0ludGVybmV0MUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0yMiA4VjJMMiAyMmgxNlY4aDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwdjhoMnYtOGgtMnptLTggMTJWMTJMMiAyMmgxMHptOCAwaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJDb25uZWN0ZWROb0ludGVybmV0MkJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0yMiA4VjJMMiAyMmgxNlY4aDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDIyVjEwTDIgMjJoMTJ6bTYtMTJ2OGgydi04aC0yem0wIDEyaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJDb25uZWN0ZWROb0ludGVybmV0M0JhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0yMiA4VjJMMiAyMmgxNlY4aDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDIyVjZMMiAyMmgxNnptMi0xMnY4aDJ2LThoLTJ6bTAgMTJoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpMUJhckxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTUuNSAxNC41YzAtMi44IDIuMi01IDUtNSAuMzYgMCAuNzEuMDQgMS4wNS4xMUwyMy42NCA3Yy0uNDUtLjM0LTQuOTMtNC0xMS42NC00QzUuMjggMyAuODEgNi42Ni4zNiA3TDEyIDIxLjVsMy41LTQuMzZWMTQuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNC41YzAtLjIzLjA0LS40Ni4wNy0uNjgtLjkyLS40My0yLjE0LS44Mi0zLjU3LS44Mi0zIDAtNS4xIDEuNy01LjMgMS45bDUuMyA2LjYgMy41LTQuMzZWMTQuNXpNMjMgMTZ2LTEuNWMwLTEuNC0xLjEtMi41LTIuNS0yLjVTMTggMTMuMSAxOCAxNC41VjE2Yy0uNSAwLTEgLjUtMSAxdjRjMCAuNS41IDEgMSAxaDVjLjUgMCAxLS41IDEtMXYtNGMwLS41LS41LTEtMS0xem0tMSAwaC0zdi0xLjVjMC0uOC43LTEuNSAxLjUtMS41czEuNS43IDEuNSAxLjVWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTEyLjAxIDIxLjQ5IDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdsMTEuNjMgMTQuNDkuMDEuMDEuMDEtLjAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjY3IDE0Ljg2IDEyIDIxLjQ5di4wMWwuMDEtLjAxIDUuMzMtNi42M0MxNy4wNiAxNC42NSAxNS4wMyAxMyAxMiAxM3MtNS4wNiAxLjY1LTUuMzMgMS44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaTJCYXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjUgMTQuNWMwLTIuOCAyLjItNSA1LTUgLjM2IDAgLjcxLjA0IDEuMDUuMTFMMjMuNjQgN2MtLjQ1LS4zNC00LjkzLTQtMTEuNjQtNEM1LjI4IDMgLjgxIDYuNjYuMzYgN0wxMiAyMS41bDMuNS00LjM2VjE0LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTQuNWMwLTEuMzQuNTEtMi41MyAxLjM0LTMuNDJDMTUuNjIgMTAuNTEgMTMuOTggMTAgMTIgMTBjLTQuMSAwLTYuOCAyLjItNy4yIDIuNWw3LjIgOSAzLjUtNC4zOFYxNC41ek0yMyAxNnYtMS41YzAtMS40LTEuMS0yLjUtMi41LTIuNVMxOCAxMy4xIDE4IDE0LjVWMTZjLS41IDAtMSAuNS0xIDF2NGMwIC41LjUgMSAxIDFoNWMuNSAwIDEtLjUgMS0xdi00YzAtLjUtLjUtMS0xLTF6bS0xIDBoLTN2LTEuNWMwLS44LjctMS41IDEuNS0xLjVzMS41LjcgMS41IDEuNVYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaTJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjMuNjQgN2MtLjQ1LS4zNC00LjkzLTQtMTEuNjQtNEM1LjI4IDMgLjgxIDYuNjYuMzYgN0wxMiAyMS41IDIzLjY0IDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNzkgMTIuNTIgMTIgMjEuNWw3LjIxLTguOTlDMTguODUgMTIuMjQgMTYuMSAxMCAxMiAxMHMtNi44NSAyLjI0LTcuMjEgMi41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaTNCYXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjUgMTQuNWMwLTIuOCAyLjItNSA1LTUgLjM2IDAgLjcxLjA0IDEuMDUuMTFMMjMuNjQgN2MtLjQ1LS4zNC00LjkzLTQtMTEuNjQtNEM1LjI4IDMgLjgxIDYuNjYuMzYgN0wxMiAyMS41bDMuNS00LjM2VjE0LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE2di0xLjVjMC0xLjQtMS4xLTIuNS0yLjUtMi41UzE4IDEzLjEgMTggMTQuNVYxNmMtLjUgMC0xIC41LTEgMXY0YzAgLjUuNSAxIDEgMWg1Yy41IDAgMS0uNSAxLTF2LTRjMC0uNS0uNS0xLTEtMXptLTEgMGgtM3YtMS41YzAtLjguNy0xLjUgMS41LTEuNXMxLjUuNyAxLjUgMS41VjE2em0tNi41LTEuNWE0LjkyIDQuOTIgMCAwIDEgMy4yNy00LjY4QzE3LjI5IDguOTggMTQuOTQgOCAxMiA4Yy00LjgxIDAtOC4wNCAyLjYyLTguNDcgMi45NUwxMiAyMS41bDMuNS00LjM2VjE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdMMTIgMjEuNSAyMy42NCA3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUzIDEwLjk1IDEyIDIxLjVsOC40Ny0xMC41NUMyMC4wNCAxMC42MiAxNi44MSA4IDEyIDhzLTguMDQgMi42Mi04LjQ3IDIuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlDb25uZWN0ZWROb0ludGVybmV0MCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0yNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMXYtOWg4Ljk5TDI0IDguOTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjU5IDE0LTIuMDkgMi4wOS0uMy0uM0wxNS40MSAxNCAxNCAxNS40MWwxLjc5IDEuNzkuMy4zTDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTIgMTJoOC45OUwyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGw2LjM1IDYuMzZBNy45MzIgNy45MzIgMCAwIDEgMTIgMTN2LTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIxdi04Yy0yLjIxIDAtNC4yLjg5LTUuNjUgMi4zNEwxMiAyMXptOS01LjU5TDE5LjU5IDE0bC0yLjA5IDIuMDlMMTUuNDEgMTQgMTQgMTUuNDFsMi4wOSAyLjA5TDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTguMzEgMTJoMi42N0wyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGw0LjIzIDQuMjRBMTAuOTYgMTAuOTYgMCAwIDEgMTIgMTBjMi4zNSAwIDQuNTIuNzQgNi4zMSAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMtMy4wMyAwLTUuNzggMS4yMy03Ljc3IDMuMjJMMTIgMjF2LTloNi4zMmMtMS44LTEuMjYtMy45Ny0yLTYuMzItMnptOSA1LjQxTDE5LjU5IDE0bC0yLjA5IDIuMDlMMTUuNDEgMTQgMTQgMTUuNDFsMi4wOSAyLjA5TDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjEuMTggMTEuOCAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGwyLjgyIDIuODJDNS4xNyA5LjQ1IDguNDEgOCAxMiA4czYuODMgMS40NSA5LjE4IDMuOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTggMTEuOEMxOC44MyA5LjQ1IDE1LjU5IDggMTIgOHMtNi44MyAxLjQ1LTkuMTggMy44TDEyIDIxdi05aDguOTlsLjE5LS4yek0xOS41OSAxNGwtMi4wOSAyLjA5TDE1LjQxIDE0IDE0IDE1LjQxbDIuMDkgMi4wOUwxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MSAxOS41OSAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhcjFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcuNjUgMTUuMzQgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNi4zNSA2LjM2QzcuOCAxMy44OSA5Ljc5IDEzIDEyIDEzczQuMi44OSA1LjY1IDIuMzR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjY1IDE1LjM0QzE2LjIgMTMuODkgMTQuMjEgMTMgMTIgMTNzLTQuMi44OS01LjY1IDIuMzRMMTIgMjFsNS42NS01LjY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyMkJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xOS43NyAxMy4yMiAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGw0LjIzIDQuMjRDNi4yMiAxMS4yMyA4Ljk3IDEwIDEyIDEwczUuNzggMS4yMyA3Ljc3IDMuMjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljc3IDEzLjIyQzE3Ljc4IDExLjIzIDE1LjAzIDEwIDEyIDEwcy01Ljc4IDEuMjMtNy43NyAzLjIyTDEyIDIxbDcuNzctNy43OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhcjNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjEuMTggMTEuOCAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGwyLjgyIDIuODJDNS4xNyA5LjQ1IDguNDEgOCAxMiA4czYuODMgMS40NSA5LjE4IDMuOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTggMTEuOEMxOC44MyA5LjQ1IDE1LjU5IDggMTIgOHMtNi44MyAxLjQ1LTkuMTggMy44TDEyIDIxbDkuMTgtOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyQ29ubmVjdGVkTm9JbnRlcm5ldDEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgMTQuNzZWOGg1LjkyQzE5Ljk3IDUuNTEgMTYuMTYgNCAxMiA0IDcuMzEgNCAzLjA3IDUuOSAwIDguOThsNi4zNSA2LjM2QTcuOTUgNy45NSAwIDAgMSAxMiAxM2MxLjg5IDAgMy42My42NiA1IDEuNzZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMzUgMTUuMzQgMTIgMjFsNS01LjAxdi0xLjIzQTcuOTYzIDcuOTYzIDAgMCAwIDEyIDEzYy0yLjIxIDAtNC4yLjg5LTUuNjUgMi4zNHpNMTkgMThoMnYyaC0yek0xOSAxMGgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXJDb25uZWN0ZWROb0ludGVybmV0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNyAxMS4yMVY4aDUuOTJDMTkuOTcgNS41MSAxNi4xNiA0IDEyIDQgNy4zMSA0IDMuMDcgNS45IDAgOC45OGw0LjIzIDQuMjRBMTAuOTYgMTAuOTYgMCAwIDEgMTcgMTEuMjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMjMgMTMuMjIgMTIgMjFsNS01LjAxdi00Ljc4YTEwLjk2IDEwLjk2IDAgMCAwLTEyLjc3IDIuMDF6TTE5IDE4aDJ2MmgtMnpNMTkgMTBoMnY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyQ29ubmVjdGVkTm9JbnRlcm5ldDMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgOVY4aDUuOTJDMTkuOTcgNS41MSAxNi4xNiA0IDEyIDQgNy4zMSA0IDMuMDcgNS45IDAgOC45OGwyLjgyIDIuODJBMTIuOTMgMTIuOTMgMCAwIDEgMTIgOGMxLjc3IDAgMy40Ni4zNiA1IDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODIgMTEuOCAxMiAyMWw1LTUuMDFWOWMtMS41NC0uNjQtMy4yMy0xLTUtMS0zLjU5IDAtNi44MyAxLjQ1LTkuMTggMy44ek0xOSAxOGgydjJoLTJ6TTE5IDEwaDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhckNvbm5lY3RlZE5vSW50ZXJuZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE4aDJ2MmgtMnpNMTkgMTBoMnY2aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA4aDUuOTJDMTkuOTcgNS41MSAxNi4xNiA0IDEyIDQgNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMWw1LTUuMDFWOHpcIixcIm9wYWNpdHlcIjpcIi4zXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXJOb3RDb25uZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUyIDE1LjE2Yy40MS0uNzMgMS4xOC0xLjE2IDEuNjMtMS44LjQ4LS42OC4yMS0xLjk0LTEuMTQtMS45NC0uODggMC0xLjMyLjY3LTEuNSAxLjIzbC0xLjM3LS41N0MxNi41MSAxMC45NiAxNy41MiAxMCAxOSAxMGMxLjIzIDAgMi4wOC41NiAyLjUxIDEuMjYuMzcuNi41OCAxLjczLjAxIDIuNTctLjYzLjkzLTEuMjMgMS4yMS0xLjU2IDEuODEtLjEzLjI0LS4xOC40LS4xOCAxLjE4aC0xLjUyYzAtLjQxLS4wNy0xLjA4LjI2LTEuNjZ6bS0uNTcgMy43OWMwLS41OS40Ny0xLjA0IDEuMDUtMS4wNC41OSAwIDEuMDQuNDUgMS4wNCAxLjA0IDAgLjU4LS40NCAxLjA1LTEuMDQgMS4wNS0uNTggMC0xLjA1LS40Ny0xLjA1LTEuMDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTQgMTNjMC0yLjc2IDIuMjQtNSA1LTUgMS42MyAwIDMuMDcuNzkgMy45OCAyTDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxbDQuMDEtNC4wMkMxNC44IDE2LjA3IDE0IDE0LjYzIDE0IDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpQ2FsbGluZzEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTYuNDkgNC41YzEuNzkgMCAzLjQyLjczIDQuNTkgMS45MWwxLjA2LTEuMDZBNy45NCA3Ljk0IDAgMCAwIDE2LjQ5IDNjLTIuMjEgMC00LjIxLjktNS42NiAyLjM0bDEuMDYgMS4wNmE2LjU0NSA2LjU0NSAwIDAgMSA0LjYtMS45elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE2LjQ5IDZjLTEuMzggMC0yLjYzLjU2LTMuNTQgMS40NmwxLjA2IDEuMDZjLjYzLS42MyAxLjUxLTEuMDMgMi40Ny0xLjAzczEuODQuMzkgMi40NyAxLjAzbDEuMDYtMS4wNkE0Ljk0IDQuOTQgMCAwIDAgMTYuNDkgNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgOWMtLjU1IDAtMS4wNS4yMi0xLjQxLjU5TDE2LjQ5IDExbDEuNDEtMS40MWMtLjM2LS4zNy0uODYtLjU5LTEuNDEtLjU5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNy44M2MxLjI5LjU0IDIuNjMuODkgNCAxLjA3di0yLjIzbC0yLjM1LS40N0wxNSAxNy44M3pNNy4zMyA1SDUuMWMuMTggMS4zNy41MyAyLjcgMS4wNyA0TDcuOCA3LjM1IDcuMzMgNXpcIixcIm9wYWNpdHlcIjpcIi4zXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIgMTQuODctMy42Ny0uNzNjLS41LS4xLS44My4yLS45LjI3bC0yLjUyIDIuNWMtMi41LTEuNDMtNC41Ny0zLjUtNi02bDIuNS0yLjUyYy4yMy0uMjQuMzMtLjU3LjI3LS45TDkuMTMgMy44Yy0uMDktLjQ2LS41LS44LS45OC0uOEg0Yy0uNTYgMC0xLjAzLjQ3LTEgMS4wMy4xNyAyLjg5IDEuMDUgNS42IDIuNDMgNy45NyAxLjU4IDIuNzMgMy44NSA0Ljk5IDYuNTcgNi41NyAyLjM3IDEuMzcgNS4wOCAyLjI2IDcuOTcgMi40My41NS4wMyAxLjAzLS40MyAxLjAzLTF2LTQuMTVjMC0uNDgtLjM0LS44OS0uOC0uOTh6TTUuMSA1aDIuMjNsLjQ3IDIuMzVMNi4xNyA5Yy0uNTQtMS4zLS45LTIuNjMtMS4wNy00ek0xOSAxOC45Yy0xLjM3LS4xOC0yLjctLjUzLTQtMS4wN2wxLjY1LTEuNjMgMi4zNS40N3YyLjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpQ2FsbGluZzIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTYuNDkgNC41YzEuNzkgMCAzLjQyLjczIDQuNTkgMS45MWwxLjA2LTEuMDZBNy45NCA3Ljk0IDAgMCAwIDE2LjQ5IDNjLTIuMjEgMC00LjIxLjktNS42NiAyLjM0bDEuMDYgMS4wNmE2LjU0NSA2LjU0NSAwIDAgMSA0LjYtMS45elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi40OSA2Yy0xLjM4IDAtMi42My41Ni0zLjU0IDEuNDZsMS4wNiAxLjA2Yy42My0uNjMgMS41MS0xLjAzIDIuNDctMS4wM3MxLjg0LjM5IDIuNDcgMS4wM2wxLjA2LTEuMDZBNC45NCA0Ljk0IDAgMCAwIDE2LjQ5IDZ6TTE2LjQ5IDljLS41NSAwLTEuMDUuMjItMS40MS41OUwxNi40OSAxMWwxLjQxLTEuNDFjLS4zNi0uMzctLjg2LS41OS0xLjQxLS41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTcuODNjMS4yOS41NCAyLjYzLjg5IDQgMS4wN3YtMi4yM2wtMi4zNS0uNDdMMTUgMTcuODN6TTcuMzMgNUg1LjFjLjE4IDEuMzcuNTMgMi43IDEuMDcgNEw3LjggNy4zNSA3LjMzIDV6XCIsXCJvcGFjaXR5XCI6XCIuM1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4yIDE0Ljg3LTMuNjctLjczYy0uNS0uMS0uODMuMi0uOS4yN2wtMi41MiAyLjVjLTIuNS0xLjQzLTQuNTctMy41LTYtNmwyLjUtMi41MmMuMjMtLjI0LjMzLS41Ny4yNy0uOUw5LjEzIDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhINGMtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjA1IDUuNiAyLjQzIDcuOTcgMS41OCAyLjczIDMuODUgNC45OSA2LjU3IDYuNTcgMi4zNyAxLjM3IDUuMDggMi4yNiA3Ljk3IDIuNDMuNTUuMDMgMS4wMy0uNDMgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4ek01LjEgNWgyLjIzbC40NyAyLjM1TDYuMTcgOWMtLjU0LTEuMy0uOS0yLjYzLTEuMDctNHpNMTkgMTguOWMtMS4zNy0uMTgtMi43LS41My00LTEuMDdsMS42NS0xLjYzIDIuMzUuNDd2Mi4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTEyMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTVINS41di00LjVINFY5aDN2NnptNi41LTEuNWgtM3YtMWgyYy41NSAwIDEtLjQ1IDEtMVYxMGMwLS41NS0uNDUtMS0xLTFIOXYxLjVoM3YxaC0yYy0uNTUgMC0xIC40NS0xIDFWMTVoNC41di0xLjV6bTYgLjV2LTRjMC0uNTUtLjQ1LTEtMS0xSDE1djEuNWgzdjFoLTJ2MWgydjFoLTNWMTVoMy41Yy41NSAwIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTNkUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNTMgMjEuNDhBMTAuNDg3IDEwLjQ4NyAwIDAgMSAxLjU2IDEzSC4wNmMuNTEgNi4xNiA1LjY2IDExIDExLjk1IDExbC42Ni0uMDMtMy44MS0zLjgxLTEuMzMgMS4zMnptLjg5LTYuNTJjLS4xOSAwLS4zNy0uMDMtLjUyLS4wOGExLjA3IDEuMDcgMCAwIDEtLjQtLjI0Yy0uMTEtLjEtLjItLjIyLS4yNi0uMzctLjA2LS4xNC0uMDktLjMtLjA5LS40N2gtMS4zYzAgLjM2LjA3LjY4LjIxLjk1LjE0LjI3LjMzLjUuNTYuNjkuMjQuMTguNTEuMzIuODIuNDEuMy4xLjYyLjE1Ljk2LjE1LjM3IDAgLjcyLS4wNSAxLjAzLS4xNS4zMi0uMS42LS4yNS44My0uNDRzLjQyLS40My41NS0uNzIuMi0uNjEuMi0uOTdjMC0uMTktLjAyLS4zOC0uMDctLjU2YTEuNjcgMS42NyAwIDAgMC0uMjMtLjUxYy0uMS0uMTYtLjI0LS4zLS40LS40My0uMTctLjEzLS4zNy0uMjMtLjYxLS4zMWEyLjA5OCAyLjA5OCAwIDAgMCAuODktLjc1Yy4xLS4xNS4xNy0uMy4yMi0uNDZzLjA3LS4zMi4wNy0uNDhjMC0uMzYtLjA2LS42OC0uMTgtLjk2cy0uMjktLjUxLS41MS0uNjljLS4yLS4xOS0uNDctLjMzLS43Ny0uNDNDOS4xMSA4LjA1IDguNzcgOCA4LjQgOGMtLjM2IDAtLjY5LjA1LTEgLjE2LS4zLjExLS41Ny4yNi0uNzkuNDUtLjIxLjE5LS4zOC40MS0uNTEuNjctLjEyLjI2LS4xOC41NC0uMTguODVoMS4zYzAtLjE3LjAzLS4zMi4wOS0uNDVzLjE0LS4yNS4yNS0uMzQuMjMtLjE3LjM4LS4yMi4zLS4wOC40OC0uMDhjLjQgMCAuNy4xLjg5LjMxLjE5LjIuMjkuNDkuMjkuODYgMCAuMTgtLjAzLjM0LS4wOC40OXMtLjE0LjI3LS4yNS4zN2MtLjExLjEtLjI1LjE4LS40MS4yNC0uMTYuMDYtLjM2LjA5LS41OC4wOWgtLjc3djEuMDNoLjc3Yy4yMiAwIC40Mi4wMi42LjA3cy4zMy4xMy40NS4yM2MuMTIuMTEuMjIuMjQuMjkuNHMuMS4zNS4xLjU3YzAgLjQxLS4xMi43Mi0uMzUuOTMtLjIzLjIzLS41NS4zMy0uOTUuMzN6bTguNTUtNS45MmMtLjMyLS4zMy0uNy0uNTktMS4xNC0uNzctLjQ0LS4xOC0uOTMtLjI3LTEuNDctLjI3SDEydjhoMi4zYy41NSAwIDEuMDYtLjA5IDEuNTEtLjI3cy44NC0uNDMgMS4xNi0uNzZjLjMyLS4zMy41Ny0uNzMuNzQtMS4xOS4xNy0uNDcuMjYtLjk5LjI2LTEuNTd2LS40YzAtLjU4LS4wOS0xLjEtLjI2LTEuNTdzLS40Mi0uODctLjc0LTEuMnptLS4zOSAzLjE2YzAgLjQyLS4wNS43OS0uMTQgMS4xMy0uMS4zMy0uMjQuNjItLjQzLjg1LS4xOS4yMy0uNDMuNDEtLjcxLjUzLS4yOS4xMi0uNjIuMTgtLjk5LjE4aC0uOTFWOS4xMmguOTdjLjcyIDAgMS4yNy4yMyAxLjY0LjY5LjM4LjQ2LjU3IDEuMTIuNTcgMS45OXYuNHpNMTIuMDEgMGwtLjY2LjAzIDMuODEgMy44MSAxLjMzLTEuMzNjMy4yNyAxLjU1IDUuNjEgNC43MiA1Ljk2IDguNDhoMS41QzIzLjQ1IDQuODQgMTguMyAwIDEyLjAxIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBYmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMWgtMS41di0uNWgtMnYzaDJWMTNIMjF2MWMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxek04IDEwdjVINi41di0xLjVoLTJWMTVIM3YtNWMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXptLTEuNS41aC0yVjEyaDJ2LTEuNXptNyAxLjVjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxaC00VjloNGMuNTUgMCAxIC40NSAxIDF2MWMwIC41NS0uNDUgMS0xIDF6TTExIDEwLjV2Ljc1aDJ2LS43NWgtMnptMiAyLjI1aC0ydi43NWgydi0uNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2Nlc3NpYmlsaXR5TmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41IDZjLTIuNjEuNy01LjY3IDEtOC41IDFzLTUuODktLjMtOC41LTFMMyA4YzEuODYuNSA0IC44MyA2IDF2MTNoMnYtNmgydjZoMlY5YzItLjE3IDQuMTQtLjUgNi0xbC0uNS0yek0xMiA2YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY2Vzc2liaWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem05IDdoLTZ2MTNoLTJ2LTZoLTJ2Nkg5VjlIM1Y3aDE4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2Nlc3NpYmxlRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjQuNTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTdoLTJjMCAxLjY1LTEuMzUgMy0zIDNzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM3YtMmMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01em0zLTMuNWgtMS44NmwxLjY3LTMuNjdDMTguNDIgOC41IDE3LjQ0IDcgMTUuOTYgN2gtNS4yYy0uODEgMC0xLjU0LjQ3LTEuODcgMS4yTDguMjIgMTBsMS45Mi41My42NS0xLjUzSDEzbC0xLjgzIDQuMWMtLjYgMS4zMy4zOSAyLjkgMS44NSAyLjlIMTh2NWgydi01LjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2Nlc3NpYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM3YtMmMtMS41NC4wMi0zLjA5LS43NS00LjA3LTEuODNsLTEuMjktMS40M2MtLjE3LS4xOS0uMzgtLjM0LS42MS0uNDUtLjAxIDAtLjAxLS4wMS0uMDItLjAxSDEzYy0uMzUtLjItLjc1LS4zLTEuMTktLjI2QzEwLjc2IDcuMTEgMTAgOC4wNCAxMCA5LjA5VjE1YzAgMS4xLjkgMiAyIDJoNXY1aDJ2LTUuNWMwLTEuMS0uOS0yLTItMmgtM3YtMy40NWMxLjI5IDEuMDcgMy4yNSAxLjk0IDUgMS45NXptLTkgN2MtMS42NiAwLTMtMS4zNC0zLTMgMC0xLjMxLjg0LTIuNDEgMi0yLjgzVjEyLjFhNSA1IDAgMSAwIDUuOSA1LjloLTIuMDdjLS40MSAxLjE2LTEuNTIgMi0yLjgzIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2NvdW50QmFsYW5jZVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNy4yOFY1YzAtMS4xLS45LTItMi0ySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi0yLjI4QTIgMiAwIDAgMCAyMiAxNVY5YTIgMiAwIDAgMC0xLTEuNzJ6TTIwIDl2NmgtN1Y5aDd6TTUgMTlWNWgxNHYyaC02Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNnYySDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2NvdW50QmFsYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDEwaC0ydjdoMnYtN3ptNiAwaC0ydjdoMnYtN3ptOC41IDlIMnYyaDE5di0yem0tMi41LTloLTJ2N2gydi03em0tNy02Ljc0TDE2LjcxIDZINi4yOWw1LjIxLTIuNzRtMC0yLjI2TDIgNnYyaDE5VjZsLTkuNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjb3VudEJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxNkg3di0uMjRDOC40MiAxNy42MiAxMC4xNiAxNyAxMiAxN3MzLjU4LjYyIDUgMS43NlYxOXptMi0xLjE0QzE3LjIgMTYuMDkgMTQuNzMgMTUgMTIgMTVzLTUuMiAxLjA5LTcgMi44NlY1aDE0djEyLjg2ek0xMiAxM2MxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMy45MyA2IDEyIDYgOC41IDcuNTcgOC41IDkuNSAxMC4wNyAxMyAxMiAxM3ptMC01Yy44MyAwIDEuNS42NyAxLjUgMS41UzEyLjgzIDExIDEyIDExcy0xLjUtLjY3LTEuNS0xLjVTMTEuMTcgOCAxMiA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjb3VudENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTcuMzUgMTguNUM4LjY2IDE3LjU2IDEwLjI2IDE3IDEyIDE3czMuMzQuNTYgNC42NSAxLjVjLTEuMzEuOTQtMi45MSAxLjUtNC42NSAxLjVzLTMuMzQtLjU2LTQuNjUtMS41em0xMC43OS0xLjM4YTkuOTQ3IDkuOTQ3IDAgMCAwLTEyLjI4IDBBNy45NTcgNy45NTcgMCAwIDEgNCAxMmMwLTQuNDIgMy41OC04IDgtOHM4IDMuNTggOCA4YzAgMS45NS0uNyAzLjczLTEuODYgNS4xMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVTMTAuMDcgMTMgMTIgMTNzMy41LTEuNTcgMy41LTMuNVMxMy45MyA2IDEyIDZ6bTAgNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzExLjE3IDggMTIgOHMxLjUuNjcgMS41IDEuNVMxMi44MyAxMSAxMiAxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxMHYtMkg0di02aDE4VjZjMC0xLjExLS44OS0yLTItMnptMCA0SDRWNmgxNnYyem00IDl2MmgtM3YzaC0ydi0zaC0zdi0yaDN2LTNoMnYzaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRIb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNS41IDYgNC41djFjLjcgMCAxLjM3LjEgMiAuMjlWOWwtOC02LTggNnYxMmg3LjY4Yy0uMy0uNjItLjUtMS4yOS0uNi0ySDZ2LTlsNi00LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMyA1LjVoLTIuNVYyMWgtMXYtMi41SDE1di0xaDIuNVYxNWgxdjIuNUgyMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkU2hvcHBpbmdDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA5aDJWNmgzVjRoLTNWMWgtMnYzSDh2MmgzdjN6bS00IDljLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOC45LTVoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy44Ni03LjAxTDE5LjQyIDRsLTMuODcgN0g4LjUzTDQuMjcgMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFRhc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA1LjE4IDEwLjU5IDE2LjZsLTQuMjQtNC4yNCAxLjQxLTEuNDEgMi44MyAyLjgzIDEwLTEwTDIyIDUuMTh6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04YzEuNTcgMCAzLjA0LjQ2IDQuMjggMS4yNWwxLjQ1LTEuNDVBMTAuMDIgMTAuMDIgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMGMxLjczIDAgMy4zNi0uNDQgNC43OC0xLjIybC0xLjUtMS41Yy0xIC40Ni0yLjExLjcyLTMuMjguNzJ6bTctNWgtM3YyaDN2M2gydi0zaDN2LTJoLTN2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFRvRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMWMuMTcgMCAuMzMuMDEuNDkuMDJMMTUgM0g5bDUuNjggOS44NEE1Ljk4NiA1Ljk4NiAwIDAgMSAxOSAxMXpNOC4xNSA0LjUyIDIgMTUuNSA1IDIxbDYuMzMtMTAuOTd6TTEzLjIgMTUuNUg5LjlMNi43MyAyMWg3LjgxQTUuOTMgNS45MyAwIDAgMSAxMyAxN2MwLS41Mi4wNy0xLjAyLjItMS41ek0yMCAxNnYtM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZGNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNXYyaC0zdjNoLTJWN2gtM1Y1aDNWMmgydjNoM3ptLTMgMTRINVY1aDZWM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi02aC0ydjZ6bS00LTZ2NGgydi00aC0yem0tNCA0aDJWOWgtMnY4em0tMiAwdi02SDd2NmgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRtaW5QYW5lbFNldHRpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3XCIsXCJjeVwiOlwiMTUuNVwiLFwiclwiOlwiMS4xMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNy41Yy0uNzMgMC0yLjE5LjM2LTIuMjQgMS4wOC41LjcxIDEuMzIgMS4xNyAyLjI0IDEuMTdzMS43NC0uNDYgMi4yNC0xLjE3Yy0uMDUtLjcyLTEuNTEtMS4wOC0yLjI0LTEuMDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExLjA5VjYuMjdMMTAuNSAzIDMgNi4yN3Y0LjkxYzAgNC41NCAzLjIgOC43OSA3LjUgOS44Mi41NS0uMTMgMS4wOC0uMzIgMS42LS41NUE1Ljk3MyA1Ljk3MyAwIDAgMCAxNyAyM2MzLjMxIDAgNi0yLjY5IDYtNiAwLTIuOTctMi4xNi01LjQzLTUtNS45MXpNMTEgMTdjMCAuNTYuMDggMS4xMS4yMyAxLjYyLS4yNC4xMS0uNDguMjItLjczLjMtMy4xNy0xLTUuNS00LjI0LTUuNS03Ljc0di0zLjZsNS41LTIuNCA1LjUgMi40djMuNTFjLTIuODQuNDgtNSAyLjk0LTUgNS45MXptNiA0Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRzQ2xpY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS43MSAxNy45OUE1Ljk5MyA1Ljk5MyAwIDAgMSA2IDEyYzAtMy4zMSAyLjY5LTYgNi02IDMuMjIgMCA1Ljg0IDIuNTMgNS45OSA1LjcxbC0yLjEtLjYzYTMuOTk5IDMuOTk5IDAgMSAwLTQuODEgNC44MWwuNjMgMi4xek0yMiAxMmMwIC4zLS4wMS42LS4wNC45bC0xLjk3LS41OWMuMDEtLjEuMDEtLjIxLjAxLS4zMSAwLTQuNDItMy41OC04LTgtOHMtOCAzLjU4LTggOCAzLjU4IDggOCA4Yy4xIDAgLjIxIDAgLjMxLS4wMWwuNTkgMS45N2MtLjMuMDMtLjYuMDQtLjkuMDQtNS41MiAwLTEwLTQuNDgtMTAtMTBTNi40OCAyIDEyIDJzMTAgNC40OCAxMCAxMHptLTMuNzcgNC4yNkwyMiAxNWwtMTAtMyAzIDEwIDEuMjYtMy43NyA0LjI3IDQuMjcgMS45OC0xLjk4LTQuMjgtNC4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsYXJtQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4zMzcgMS44MSA0LjYwNyAzLjg0NS0xLjI4IDEuNTM1LTQuNjEtMy44NDN6bS0xMC42NzQgMCAxLjI4MiAxLjUzNkwzLjMzNyA3LjE5bC0xLjI4LTEuNTM2ek0xMiA0YTkgOSAwIDEgMCAuMDAxIDE4LjAwMUE5IDkgMCAwIDAgMTIgNHptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6bTEtMTFoLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsYXJtT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wNCA2LjI5QzEwLjY2IDYuMTEgMTEuMzIgNiAxMiA2YzMuODYgMCA3IDMuMTQgNyA3IDAgLjY4LS4xMSAxLjM0LS4yOSAxLjk2bDEuNTYgMS41NmMuNDctMS4wOC43My0yLjI3LjczLTMuNTJBOSA5IDAgMCAwIDguNDcgNC43MmwxLjU3IDEuNTd6bTcuMjk3LTQuNDggNC42MDcgMy44NDUtMS4yOCAxLjUzNS00LjYxLTMuODQzek0zLjAyIDIuMSAxLjYxIDMuNTFsMS4zNyAxLjM3LS45Mi43NyAxLjI4IDEuNTQgMS4wNi0uODguOC44QTguOTY0IDguOTY0IDAgMCAwIDMgMTNhOSA5IDAgMCAwIDkgOWMyLjI1IDAgNC4zMS0uODMgNS44OS0yLjJsMi4xIDIuMSAxLjQxLTEuNDFMMy4wMiAyLjF6TTEyIDIwYy0zLjg2IDAtNy0zLjE0LTctNyAwLTEuNy42MS0zLjI2IDEuNjItNC40N2w5Ljg1IDkuODVBNi45NTYgNi45NTYgMCAwIDEgMTIgMjB6TTcuNDggMy43M2wuNDYtLjM4LTEuMjgtMS41NC0uNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxhcm1PbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNTQgMTQuNTMgOC40MSAxMi40bC0xLjA2IDEuMDYgMy4xOCAzLjE4IDYtNi0xLjA2LTEuMDZ6bTYuNzk3LTEyLjcyIDQuNjA3IDMuODQ1LTEuMjggMS41MzUtNC42MS0zLjg0M3ptLTEwLjY3NCAwIDEuMjgyIDEuNTM2TDMuMzM3IDcuMTlsLTEuMjgtMS41MzZ6TTEyIDRhOSA5IDAgMSAwIC4wMDEgMTguMDAxQTkgOSAwIDAgMCAxMiA0em0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsYXJtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDhIMTF2Nmw0Ljc1IDIuODUuNzUtMS4yMy00LTIuMzd6bTQuODM3LTYuMTkgNC42MDcgMy44NDUtMS4yOCAxLjUzNS00LjYxLTMuODQzem0tMTAuNjc0IDAgMS4yODIgMS41MzZMMy4zMzcgNy4xOWwtMS4yOC0xLjUzNnpNMTIgNGE5IDkgMCAxIDAgLjAwMSAxOC4wMDFBOSA5IDAgMCAwIDEyIDR6bTAgMTZjLTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTcgNyAzLjE0IDcgNy0zLjE0IDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxsSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2N2MwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTUgMTBoMy4xM2MuMjEuNzguNjcgMS40NyAxLjI3IDJINXYtMnptMTQgMmgtNC40Yy42LS41MyAxLjA2LTEuMjIgMS4yNy0ySDE5djJ6bTAtNGgtNXYxYzAgMS4wNy0uOTMgMi0yIDJzLTItLjkzLTItMlY4SDVWNWgxNHYzem0tMiA3aC0zdjFjMCAuNDctLjE5LjktLjQ4IDEuMjUtLjM3LjQ1LS45Mi43NS0xLjUyLjc1cy0xLjE1LS4zLTEuNTItLjc1Yy0uMjktLjM1LS40OC0uNzgtLjQ4LTEuMjV2LTFIM3Y0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTRoLTR6TTUgMTdoMy4xM2MuMDIuMDkuMDYuMTcuMDkuMjUuMjQuNjguNjUgMS4yOCAxLjE4IDEuNzVINXYtMnptMTQgMmgtNC40Yy41NC0uNDcuOTUtMS4wNyAxLjE4LTEuNzUuMDMtLjA4LjA3LS4xNi4wOS0uMjVIMTl2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsbE91dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA0djRsNC00em0xMiAwIDQgNFY0em00IDE2di00bC00IDR6TTQgMjBoNGwtNC00em0xNS04YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3IDMuMTMgNyA3IDcgNy0zLjEzIDctN3ptLTcgNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbmFseXRpY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTJoMnY1SDd6TTE1IDdoMnYxMGgtMnpNMTEgMTRoMnYzaC0yek0xMSAxMGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbmNob3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyAxNSAxLjU1IDEuNTVjLS45NiAxLjY5LTMuMzMgMy4wNC01LjU1IDMuMzdWMTFoM1Y5aC0zVjcuODJDMTQuMTYgNy40IDE1IDYuMyAxNSA1YzAtMS42NS0xLjM1LTMtMy0zUzkgMy4zNSA5IDVjMCAxLjMuODQgMi40IDIgMi44MlY5SDh2MmgzdjguOTJjLTIuMjItLjMzLTQuNTktMS42OC01LjU1LTMuMzdMNyAxNWwtNC0zdjNjMCAzLjg4IDQuOTIgNyA5IDdzOS0zLjEyIDktN3YtM2wtNCAzek0xMiA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy42IDkuNDggMS44NC0zLjE4Yy4xNi0uMzEuMDQtLjY5LS4yNi0uODVhLjYzNy42MzcgMCAwIDAtLjgzLjIybC0xLjg4IDMuMjRhMTEuNDYzIDExLjQ2MyAwIDAgMC04Ljk0IDBMNS42NSA1LjY3YS42NDMuNjQzIDAgMCAwLS44Ny0uMmMtLjI4LjE4LS4zNy41NC0uMjIuODNMNi40IDkuNDhBMTAuNzggMTAuNzggMCAwIDAgMSAxOGgyMmExMC43OCAxMC43OCAwIDAgMC01LjQtOC41MnpNNyAxNS4yNWExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41em0xMCAwYTEuMjUgMS4yNSAwIDEgMSAwLTIuNSAxLjI1IDEuMjUgMCAwIDEgMCAyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbm5vdW5jZW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN0w0IDE3LjE3VjRoMTZ2MTJ6TTExIDVoMnY2aC0yem0wIDhoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgMTItMiAyLTItMiAyLTIgMiAyem0tMi02IDIuMTIgMi4xMiAyLjUtMi41TDEyIDEgNy4zOCA1LjYybDIuNSAyLjVMMTIgNnptLTYgNiAyLjEyLTIuMTItMi41LTIuNUwxIDEybDQuNjIgNC42MiAyLjUtMi41TDYgMTJ6bTEyIDAtMi4xMiAyLjEyIDIuNSAyLjVMMjMgMTJsLTQuNjItNC42Mi0yLjUgMi41TDE4IDEyem0tNiA2LTIuMTItMi4xMi0yLjUgMi41TDEyIDIzbDQuNjItNC42Mi0yLjUtMi41TDEyIDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBwQmxvY2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptLTIuNSA0QTIuNSAyLjUgMCAwIDEgMTggOS41Yy40MiAwIC44LjExIDEuMTUuMjlsLTMuMzYgMy4zNmMtLjE4LS4zNS0uMjktLjczLS4yOS0xLjE1em0yLjUgMi41Yy0uNDIgMC0uOC0uMTEtMS4xNS0uMjlsMy4zNi0zLjM2Yy4xOC4zNS4yOS43My4yOSAxLjE1YTIuNSAyLjUgMCAwIDEtMi41IDIuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMThIN1Y2aDEwdjFoMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2MXpNNyAzaDEwdjFIN1Yzem0xMCAxOEg3di0xaDEwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcHBTaG9ydGN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE4SDdWNmgxMHYxaDJWM2MwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi00aC0ydjF6TTcgM2gxMHYxSDdWM3ptMTAgMThIN3YtMWgxMHYxek0yMC4zOCA5LjYyIDIxIDExbC42Mi0xLjM4TDIzIDlsLTEuMzgtLjYyTDIxIDdsLS42MiAxLjM4TDE5IDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDgtMS4yNSAyLjc1TDEyIDEybDIuNzUgMS4yNUwxNiAxNmwxLjI1LTIuNzVMMjAgMTJsLTIuNzUtMS4yNXpNMjEgMTNsLS42MiAxLjM4TDE5IDE1bDEuMzguNjJMMjEgMTdsLjYyLTEuMzhMMjMgMTVsLTEuMzgtLjYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDEwVjhoLTJ2NEg4bDQgNCA0LTRoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0NpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwczEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyem0xOCAwYzAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04IDMuNTgtOCA4LTggOCAzLjU4IDggOHpNOCAxMmw0LTQgMS40MSAxLjQxTDExLjgzIDExSDE2djJoLTQuMTdsMS41OSAxLjU5TDEyIDE2bC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0NpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTBTMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwek00IDEyYzAtNC40MiAzLjU4LTggOC04czggMy41OCA4IDgtMy41OCA4LTggOC04LTMuNTgtOC04em0xMiAwLTQgNC0xLjQxLTEuNDFMMTIuMTcgMTNIOHYtMmg0LjE3bC0xLjU5LTEuNTlMMTIgOGw0IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0NpcmNsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjBjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4bTAgMmM1LjUyIDAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMHptLTEtMTB2NGgydi00aDNsLTQtNC00IDRoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93T3V0d2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNnYyaDguNTlMNSAxNy41OSA2LjQxIDE5IDE2IDkuNDFWMThoMlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dSaWdodEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMDEgMTFINHYyaDEyLjAxdjNMMjAgMTJsLTMuOTktNHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJ0aWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDV2MTRINVY1aDE0bTAtMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE3SDd2LTJoN3Yyem0zLTRIN3YtMmgxMHYyem0wLTRIN1Y3aDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3BlY3RSYXRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoLTJ2M2gtM3YyaDV2LTV6TTcgOWgzVjdINXY1aDJWOXptMTQtNkgzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzZXNzbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0ek03IDEwaDJ2N0g3em00LTNoMnYxMGgtMnptNCA2aDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lnbm1lbnRJbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy4yMiAwIC40MS4xLjU1LjI1LjEyLjEzLjIuMzEuMi41IDAgLjQxLS4zNC43NS0uNzUuNzVzLS43NS0uMzQtLjc1LS43NWMwLS4xOS4wOC0uMzcuMi0uNS4xNC0uMTUuMzMtLjI1LjU1LS4yNXpNMTkgMTlINVY1aDE0djE0ek0xMiA2Yy0xLjY1IDAtMyAxLjM1LTMgM3MxLjM1IDMgMyAzIDMtMS4zNSAzLTMtMS4zNS0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS02IDYuNDdWMThoMTJ2LTEuNTNjMC0yLjUtMy45Ny0zLjU4LTYtMy41OHMtNiAxLjA3LTYgMy41OHpNOC4zMSAxNmMuNjktLjU2IDIuMzgtMS4xMiAzLjY5LTEuMTJzMy4wMS41NiAzLjY5IDEuMTJIOC4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lnbm1lbnRMYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6bTgtNGgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtLjE0IDAtLjI3LjAxLS40LjA0YTIuMDA4IDIuMDA4IDAgMCAwLTEuNDQgMS4xOWMtLjEuMjMtLjE2LjQ5LS4xNi43N3YxNGMwIC4yNy4wNi41NC4xNi43OHMuMjUuNDUuNDMuNjRjLjI3LjI3LjYyLjQ3IDEuMDEuNTUuMTMuMDIuMjYuMDMuNC4wM2gxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek0xOSAxOUg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3NpZ25tZW50UmV0dXJuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGg0di00aC00VjdsLTUgNSA1IDV6bTctMTFoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLS4xNCAwLS4yNy4wMS0uNC4wNGEyLjAwOCAyLjAwOCAwIDAgMC0xLjQ0IDEuMTljLS4xLjIzLS4xNi40OS0uMTYuNzd2MTRjMCAuMjcuMDYuNTQuMTYuNzhzLjI1LjQ1LjQzLjY0Yy4yNy4yNy42Mi40NyAxLjAxLjU1LjEzLjAyLjI2LjAzLjQuMDNoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaWdubWVudFJldHVybmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmgtM1Y4aC00djRIN2w1IDV6bTItOWgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtLjE0IDAtLjI3LjAxLS40LjA0YTIuMDA4IDIuMDA4IDAgMCAwLTEuNDQgMS4xOWMtLjEuMjMtLjE2LjQ5LS4xNi43N3YxNGMwIC4yNy4wNi41NC4xNi43OHMuMjUuNDUuNDMuNjRjLjI3LjI3LjYyLjQ3IDEuMDEuNTUuMTMuMDIuMjYuMDMuNC4wM2gxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek0xOSAxOUg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3NpZ25tZW50VHVybmVkSW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDktMS40MS0xLjQyTDEwIDE0LjE3bC0yLjU5LTIuNThMNiAxM2w0IDR6bTEtNmgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtLjE0IDAtLjI3LjAxLS40LjA0YTIuMDA4IDIuMDA4IDAgMCAwLTEuNDQgMS4xOWMtLjEuMjMtLjE2LjQ5LS4xNi43N3YxNGMwIC4yNy4wNi41NC4xNi43OHMuMjUuNDUuNDMuNjRjLjI3LjI3LjYyLjQ3IDEuMDEuNTUuMTMuMDIuMjYuMDMuNC4wM2gxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek0xOSAxOUg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3NpZ25tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE1aDd2Mkg3em0wLTRoMTB2Mkg3em0wLTRoMTB2Mkg3em0xMi00aC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0uMTQgMC0uMjcuMDEtLjQuMDRhMi4wMDggMi4wMDggMCAwIDAtMS40NCAxLjE5Yy0uMS4yMy0uMTYuNDktLjE2Ljc3djE0YzAgLjI3LjA2LjU0LjE2Ljc4cy4yNS40NS40My42NGMuMjcuMjcuNjIuNDcgMS4wMS41NS4xMy4wMi4yNi4wMy40LjAzaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03LS4yNWMuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzUtLjc1LS4zNC0uNzUtLjc1LjM0LS43NS43NS0uNzV6TTE5IDE5SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc3VyZWRXb3JrbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTBoMnY3SDV6TTExIDEwaDJ2N2gtMnpNMjIgNiAxMiAxIDIgNnYyaDIwVjZ6TTYuNDcgNiAxMiAzLjI0IDE3LjUzIDZINi40N3pNMiAxOXYyaDEyLjRjLS4yMS0uNjQtLjMyLTEuMzEtLjM2LTJIMnpNMTkgMTIuMjZWMTBoLTJ2My4yNnpNMjAgMTRsLTQgMnYyLjU1YzAgMi41MiAxLjcxIDQuODggNCA1LjQ1IDIuMjktLjU3IDQtMi45MyA0LTUuNDVWMTZsLTQtMnptLS43MiA3LTIuMDMtMi4wMyAxLjA2LTEuMDYuOTcuOTcgMi40MS0yLjM4IDEuMDYgMS4wNkwxOS4yOCAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9yZW5ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNnYzbDQtNC00LTR2M2MtNC40MiAwLTggMy41OC04IDggMCAxLjU3LjQ2IDMuMDMgMS4yNCA0LjI2TDYuNyAxNC44QTUuODcgNS44NyAwIDAgMSA2IDEyYzAtMy4zMSAyLjY5LTYgNi02em02Ljc2IDEuNzRMMTcuMyA5LjJjLjQ0Ljg0LjcgMS43OS43IDIuOCAwIDMuMzEtMi42OSA2LTYgNnYtM2wtNCA0IDQgNHYtM2M0LjQyIDAgOC0zLjU4IDgtOCAwLTEuNTctLjQ2LTMuMDMtMS4yNC00LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFja3VwVGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2djE0SDZ2MmgxNGMxLjEgMCAyLS45IDItMlY2aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOSAxNkg0di01aDV2NXptNyAwaC01di01aDV2NXptMC03SDRWNGgxMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFja3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNEM5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00IDAtMi4wNSAxLjUzLTMuNzYgMy41Ni0zLjk3bDEuMDctLjExLjUtLjk1QTUuNDY5IDUuNDY5IDAgMCAxIDEyIDZjMi42MiAwIDQuODggMS44NiA1LjM5IDQuNDNsLjMgMS41IDEuNTMuMTFBMi45OCAyLjk4IDAgMCAxIDIyIDE1YzAgMS42NS0xLjM1IDMtMyAzek04IDEzaDIuNTV2M2gyLjl2LTNIMTZsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhbGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3LjgzYy44NS0uMyAxLjUzLS45OCAxLjgzLTEuODNIMThsLTMgN2MwIDEuNjYgMS41NyAzIDMuNSAzczMuNS0xLjM0IDMuNS0zbC0zLTdoMlY0aC02LjE3Yy0uNDEtMS4xNy0xLjUyLTItMi44My0ycy0yLjQyLjgzLTIuODMgMkgzdjJoMmwtMyA3YzAgMS42NiAxLjU3IDMgMy41IDNTOSAxNC42NiA5IDEzTDYgNmgzLjE3Yy4zLjg1Ljk4IDEuNTMgMS44MyAxLjgzVjE5SDJ2MmgyMHYtMmgtOVY3Ljgzek0yMC4zNyAxM2gtMy43NGwxLjg3LTQuMzZMMjAuMzcgMTN6bS0xMyAwSDMuNjNMNS41IDguNjQgNy4zNyAxM3pNMTIgNmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0Y2hQcmVkaWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOEg3Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNCAxMi41aC0yVjE5aDJ2MS41em0wLTIuNWgtMmMwLTEuNS0yLjUtMy0yLjUtNSAwLTEuOTMgMS41Ny0zLjUgMy41LTMuNXMzLjUgMS41NyAzLjUgMy41YzAgMi0yLjUgMy41LTIuNSA1em01LTExLjVINkM2IDUuNjcgNi42NyA1IDcuNSA1aDljLjgzIDAgMS41LjY3IDEuNSAxLjV6bS0xLTNIN0M3IDIuNjcgNy42NyAyIDguNSAyaDdjLjgzIDAgMS41LjY3IDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb29rT25saW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNEg3VjNoMTB2MXptMCAxN0g3di0xaDEwdjF6bTAtMjBIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yek03IDZoMTB2MTJIN1Y2em05IDVWOS4xNEMxNiA4LjUxIDE1LjU1IDggMTUgOEg5Yy0uNTUgMC0xIC41MS0xIDEuMTR2MS45NmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMXYxLjc2YzAgLjYzLjQ1IDEuMTQgMSAxLjE0aDZjLjU1IDAgMS0uNTEgMS0xLjE0VjEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xem0tMy41IDMuNWgtMXYtMWgxdjF6bTAtMmgtMXYtMWgxdjF6bTAtMmgtMXYtMWgxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOSA0aDJ2NWwtMS0uNzVMOSA5VjR6bTkgMTZINlY0aDF2OWwzLTIuMjVMMTMgMTNWNGg1djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va21hcmtBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMXY2Ljk3bC01LTIuMTQtNSAyLjE0VjVoNlYzSDdjLTEuMSAwLTIgLjktMiAydjE2bDctMyA3IDNWMTFoLTJ6bTQtNGgtMnYyaC0yVjdoLTJWNWgyVjNoMnYyaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvb2ttYXJrQWRkZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMXY2Ljk3bC01LTIuMTQtNSAyLjE0VjVoNlYzSDdjLTEuMSAwLTIgLjktMiAydjE2bDctMyA3IDNWMTFoLTJ6bS44My0yTDE1IDYuMTdsMS40MS0xLjQxIDEuNDEgMS40MSAzLjU0LTMuNTQgMS40MSAxLjQxTDE3LjgzIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb29rbWFya0JvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTUtNS0yLjE4TDcgMThWNWgxMHYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvb2ttYXJrUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTF2Ni45N2wtNS0yLjE0LTUgMi4xNFY1aDZWM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjExaC0yem00LTRoLTZWNWg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb29rbWFya3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDd2MTIuOTdsLTQuMjEtMS44MS0uNzktLjM0LS43OS4zNEw1IDE5Ljk3VjdoMTBtNC02SDguOTlDNy44OSAxIDcgMS45IDcgM2gxMGMxLjEgMCAyIC45IDIgMnYxM2wyIDFWM2MwLTEuMS0uOS0yLTItMnptLTQgNEg1Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjdjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcm93c2VHYWxsZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAzYTkgOSAwIDEgMCAuMDAxIDE4LjAwMUE5IDkgMCAwIDAgOSAzem0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgN0g4djUuNDFsMy43OSAzLjggMS40Mi0xLjQyLTMuMjEtMy4yek0xNy45OSAzLjUydjIuMTZBNi45OSA2Ljk5IDAgMCAxIDIyIDEyYzAgMi43OS0xLjY0IDUuMi00LjAxIDYuMzJ2Mi4xNkMyMS40OCAxOS4yNCAyNCAxNS45MSAyNCAxMnMtMi41Mi03LjI0LTYuMDEtOC40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJ1Z1JlcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOGgtMi44MWE1Ljk4NSA1Ljk4NSAwIDAgMC0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVzLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTQgNHYzYzAgLjIyLS4wMy40Ny0uMDcuN2wtLjEuNjUtLjM3LjY1Yy0uNzIgMS4yNC0yLjA0IDItMy40NiAycy0yLjc0LS43Ny0zLjQ2LTJsLS4zNy0uNjQtLjEtLjY1QTQuMjcgNC4yNyAwIDAgMSA4IDE1di00YzAtLjIzLjAzLS40OC4wNy0uN2wuMS0uNjUuMzctLjY1Yy4zLS41Mi43Mi0uOTcgMS4yMS0xLjMxbC41Ny0uMzkuNzQtLjE4YTMuNzg3IDMuNzg3IDAgMCAxIDEuODkgMGwuNjguMTYuNjEuNDJjLjUuMzQuOTEuNzggMS4yMSAxLjMxbC4zOC42NS4xLjY1Yy4wNC4yMi4wNy40Ny4wNy42OXYxem0tNiAyaDR2MmgtNHptMC00aDR2MmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJ1aWxkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNDkgMTEuMzhjLjQzLTEuMjIuMTctMi42NC0uODEtMy42MmEzLjQ2OCAzLjQ2OCAwIDAgMC00LjEtLjU5bDIuMzUgMi4zNS0xLjQxIDEuNDEtMi4zNS0yLjM1Yy0uNzEgMS4zMi0uNTIgMi45OS41OSA0LjEuOTguOTggMi40IDEuMjQgMy42Mi44MWwzLjQxIDMuNDFjLjIuMi41MS4yLjcxIDBsMS40LTEuNGMuMi0uMi4yLS41MSAwLS43MWwtMy40MS0zLjQxelwifSxcImNoaWxkXCI6W119XX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdWlsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuNjEgMTguOTktOS4wOC05LjA4Yy45My0yLjM0LjQ1LTUuMS0xLjQ0LTdDOS43OS42MSA2LjIxLjQgMy42NiAyLjI2TDcuNSA2LjExIDYuMDggNy41MiAyLjI1IDMuNjlDLjM5IDYuMjMuNiA5LjgyIDIuOSAxMi4xMWMxLjg2IDEuODYgNC41NyAyLjM1IDYuODkgMS40OGw5LjExIDkuMTFjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDIuMy0yLjNjLjQtLjM4LjQtMS4wMSAwLTEuNDF6bS0zIDEuNi05LjQ2LTkuNDZjLS42MS40NS0xLjI5LjcyLTIgLjgyLTEuMzYuMi0yLjc5LS4yMS0zLjgzLTEuMjVDMy4zNyA5Ljc2IDIuOTMgOC41IDMgNy4yNmwzLjA5IDMuMDkgNC4yNC00LjI0LTMuMDktMy4wOWMxLjI0LS4wNyAyLjQ5LjM3IDMuNDQgMS4zMWE0LjQ2OSA0LjQ2OSAwIDAgMSAxLjI0IDMuOTYgNC4zNSA0LjM1IDAgMCAxLS44OCAxLjk2bDkuNDUgOS40NS0uODguODl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDgtNCA0aDNjMCAzLjMxLTIuNjkgNi02IDZhNS44NyA1Ljg3IDAgMCAxLTIuOC0uN2wtMS40NiAxLjQ2QTcuOTMgNy45MyAwIDAgMCAxMiAyMGM0LjQyIDAgOC0zLjU4IDgtOGgzbC00LTR6TTYgMTJjMC0zLjMxIDIuNjktNiA2LTYgMS4wMSAwIDEuOTcuMjUgMi44LjdsMS40Ni0xLjQ2QTcuOTMgNy45MyAwIDAgMCAxMiA0Yy00LjQyIDAtOCAzLjU4LTggOEgxbDQgNCA0LTRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGVuZGFyTW9udGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC0xVjJoLTJ2Mkg4VjJINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMjBhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDVWMTBoMTR2MTB6bTAtMTJINVY2aDE0djJ6TTkgMTRIN3YtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bS04IDRIN3YtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTQgMGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxlbmRhclRvZGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzaC0xVjFoLTJ2Mkg3VjFINXYySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxOEg0VjEwaDE2djExem0wLTEzSDRWNWgxNnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsZW5kYXJWaWV3RGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3aDE4djJIM3ptMTYtNXYxSDV2LTFoMTRtMi0ySDN2NWgxOHYtNXpNMyA2aDE4djJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGVuZGFyVmlld01vbnRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNOCAxMUg0VjZoNHY1em02IDBoLTRWNmg0djV6bTYgMGgtNFY2aDR2NXpNOCAxOEg0di01aDR2NXptNiAwaC00di01aDR2NXptNiAwaC00di01aDR2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGVuZGFyVmlld1dlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNyAyaDIuNXYxMkgxM1Y2em0tMiAxMkg4LjVWNkgxMXYxMnpNNCA2aDIuNXYxMkg0VjZ6bTE2IDEyaC0yLjVWNkgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYUVuaGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDEwLS45NCAyLjA2TDkgMTNsMi4wNi45NEwxMiAxNmwuOTQtMi4wNkwxNSAxM2wtMi4wNi0uOTR6bTgtNWgtMy4xN0wxNSAzSDlMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNEg0VjdoNC4wNWwuNTktLjY1TDkuODggNWg0LjI0bDEuMjQgMS4zNS41OS42NUgyMHYxMnpNMTIgOGMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTAgOGMtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW5jZWxTY2hlZHVsZVNlbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDljLS40MiAwLS44My4wNC0xLjI0LjExTDEuMDEgMyAxIDEwbDEwLjA2IDEuMzRjLS40Mi40NC0uNzguOTMtMS4wOSAxLjQ2TDEgMTRsLjAxIDcgOC4wNy0zLjQ2QzkuNTkgMjEuMTkgMTIuNzEgMjQgMTYuNSAyNGM0LjE0IDAgNy41LTMuMzYgNy41LTcuNVMyMC42NCA5IDE2LjUgOXpNMyA4LjI1bC4wMS0yLjIyIDcuNTEgMy4yMi03LjUyLTF6bTYuMSA3LjExTDMgMTcuOTd2LTIuMjJsNi4xNy0uODJjLS4wMy4xNC0uMDUuMjgtLjA3LjQzek0xNi41IDIyYy0zLjAzIDAtNS41LTIuNDctNS41LTUuNXMyLjQ3LTUuNSA1LjUtNS41IDUuNSAyLjQ3IDUuNSA1LjUtMi40NyA1LjUtNS41IDUuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguMjcgMTQuMDMtMS43NyAxLjc2LTEuNzctMS43Ni0uNy43IDEuNzYgMS43Ny0xLjc2IDEuNzcuNy43IDEuNzctMS43NiAxLjc3IDEuNzYuNy0uNy0xLjc2LTEuNzcgMS43Ni0xLjc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FyZEdpZnRjYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTFhMi45OTYgMi45OTYgMCAwIDAtNS41LTEuNjVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTIgNy40bDMuMzggNC42TDE3IDEwLjgzIDE0LjkyIDhIMjB2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhcmRNZW1iZXJzaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTFjMCAxLjExLjg5IDIgMiAyaDR2NWw0LTIgNCAydi01aDRjMS4xMSAwIDItLjg5IDItMlY0YzAtMS4xMS0uODktMi0yLTJ6bTAgMTNINHYtMmgxNnYyem0wLTVINFY0aDE2djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXJkVHJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC0zVjRjMC0xLjExLS44OS0yLTItMkg5Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6TTkgNGg2djJIOVY0em0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoM3YyaDJWOGg2djJoMlY4aDN2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYW5nZUhpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDcuNzcgMTguMzkgMThINS42MUwxMiA3Ljc3TTEyIDQgMiAyMGgyMEwxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hlY2tDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptNC41OS0xMi40MkwxMCAxNC4xN2wtMi41OS0yLjU4TDYgMTNsNCA0IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptNC41OS0xMi40MkwxMCAxNC4xN2wtMi41OS0yLjU4TDYgMTNsNCA0IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNocm9tZVJlYWRlck1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDRIM2MtMS4xIDAtMiAuOS0yIDJ2MTNjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek0zIDE5VjZoOHYxM0gzem0xOCAwaC04VjZoOHYxM3ptLTctOS41aDZWMTFoLTZ6bTAgMi41aDZ2MS41aC02em0wIDIuNWg2VjE2aC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2lyY2xlTm90aWZpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTguNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVoLTNjMCAuODMuNjcgMS41IDEuNSAxLjV6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em00LTguNjFjMC0yLjExLTEuMDMtMy45Mi0zLTQuMzl2LS41YzAtLjU3LS40My0xLTEtMXMtMSAuNDMtMSAxVjdjLTEuOTcuNDctMyAyLjI3LTMgNC4zOVYxNEg3djJoMTB2LTJoLTF2LTIuNjF6TTE0IDE0aC00di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOSA0aDJ2NWwtMS0uNzVMOSA5VjR6bTkgMTZINlY0aDF2OWwzLTIuMjVMMTMgMTNWNGg1djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvc2VGdWxsc2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMy40MSAxNi43MSA4LjcgMjAgMTJoLThWNGwzLjI5IDMuMjlMMjAuNTkgMiAyMiAzLjQxek0zLjQxIDIybDUuMjktNS4yOUwxMiAyMHYtOEg0bDMuMjkgMy4yOUwyIDIwLjU5IDMuNDEgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2RlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuMTcgMTItNC41OC00LjU5TDE2IDZsNiA2LTMuNTkgMy41OUwxNyAxNC4xNyAxOS4xNyAxMnpNMS4zOSA0LjIybDQuMTkgNC4xOUwyIDEybDYgNiAxLjQxLTEuNDFMNC44MyAxMiA3IDkuODNsMTIuNzggMTIuNzggMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQgMTYuNiA0LjggMTJsNC42LTQuNkw4IDZsLTYgNiA2IDYgMS40LTEuNHptNS4yIDAgNC42LTQuNi00LjYtNC42TDE2IDZsNiA2LTYgNi0xLjQtMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29tbWVudEJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNFY2aC01djhsMi41LTEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbW1pdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjkgMTFhNSA1IDAgMCAwLTkuOCAwSDJ2Mmg1LjFhNSA1IDAgMCAwIDkuOCAwSDIydi0yaC01LjF6TTEyIDE1Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbW11dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRINUMzLjM0IDQgMiA1LjM0IDIgN3Y4YzAgMS42NiAxLjM0IDMgMyAzbC0xIDF2MWgxbDItMmgydi01SDRWNmg5djJoMlY3YzAtMS42Ni0xLjM0LTMtMy0zek01IDE0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTE1LjU3LTQuMzRjLS4xNC0uNC0uNTItLjY2LS45Ny0uNjZoLTcuMTljLS40NiAwLS44My4yNi0uOTguNjZsLTEuNDIgNC4xMXY1LjUxYzAgLjM4LjMxLjcyLjY5LjcyaC42MmMuMzggMCAuNjgtLjM4LjY4LS43NlYxOGg4djEuMjRjMCAuMzguMzEuNzYuNjkuNzZoLjYxYy4zOCAwIC42OS0uMzQuNjktLjcybC4wMS0xLjM3di00LjE0bC0xLjQzLTQuMTF6bS04LjE2LjM0aDcuMTlsMS4wMyAzaC05LjI1bDEuMDMtM3pNMTIgMTZjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptOCAwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21wYXJlQXJyb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjAxIDE0SDJ2Mmg3LjAxdjNMMTMgMTVsLTMuOTktNHYzem01Ljk4LTF2LTNIMjJWOGgtNy4wMVY1TDExIDlsMy45OSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29tcHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOXYyaDE2VjlINHptMTItNS0xLjQxLTEuNDFMMTMgNC4xN1YxaC0ydjMuMTlMOS4zOSAyLjYxIDggNGw0IDQgNC00ek00IDE0aDE2di0ySDR2MnptNCA1IDEuMzkgMS4zOUwxMSAxOC44MVYyMmgydi0zLjE3bDEuNTkgMS41OUwxNiAxOWwtNC00LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRhY3RQYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMTcgNCAxOCA4LjgzVjIwSDZWNGg3LjE3TTE0IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY4bC02LTZ6bS0yIDEyYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNCAzLjQzYzAtLjgxLS40OC0xLjUzLTEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCA4IDE3LjQzVjE4aDh2LS41N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRhY3RTdXBwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMy41OXYtMy42Yy01LjAxLS4yNi05LTQuNDItOS05LjQ5QzIgNS4yNiA2LjI2IDEgMTEuNSAxUzIxIDUuMjYgMjEgMTAuNWMwIDQuOTUtMy40NCA5LjkzLTguNTcgMTIuNGwtMS40My42OXpNMTEuNSAzQzcuMzYgMyA0IDYuMzYgNCAxMC41UzcuMzYgMTggMTEuNSAxOEgxM3YyLjNjMy42NC0yLjMgNi02LjA4IDYtOS44QzE5IDYuMzYgMTUuNjQgMyAxMS41IDN6bS0xIDExLjVoMnYyaC0yem0yLTEuNWgtMmMwLTMuMjUgMy0zIDMtNSAwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJoLTJjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIDIuNS0zIDIuNzUtMyA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGFjdGxlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4xIDEwLjE4YTQuMzg0IDQuMzg0IDAgMCAxIDAgMy42NmwxLjM3LjYyYy4zNy0uODEuNTUtMS42NS41NC0yLjUtLjAxLS44NC0uMTktMS42NS0uNTQtMi40bC0xLjM3LjYyek0xMy4zMyA3LjMzYy43OCAxLjU3IDEuMTggMy4xNCAxLjE4IDQuNjQgMCAxLjUxLS40IDMuMDktMS4xOCA0LjY5bDEuMzUuNjZjLjg4LTEuODEgMS4zMy0zLjYxIDEuMzMtNS4zNSAwLTEuNzQtLjQ1LTMuNTMtMS4zMy01LjMxbC0xLjM1LjY3ek0xMC4yIDguNzJjLjUzIDEuMDcuOCAyLjIxLjggMy40IDAgMS4xNy0uMjYgMi4yMy0uNzggMy4xNWwxLjMuNzRjLjY1LTEuMTUuOTgtMi40NS45OC0zLjg5IDAtMS40Mi0uMzItMi43OS0uOTYtNC4wN2wtMS4zNC42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvcHlyaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDggMTAuODZjLjA1LS4zMy4xNi0uNjIuMy0uODdzLjM0LS40Ni41OS0uNjJjLjI0LS4xNS41NC0uMjIuOTEtLjIzLjIzLjAxLjQ0LjA1LjYzLjEzLjIuMDkuMzguMjEuNTIuMzZzLjI1LjMzLjM0LjUzLjEzLjQyLjE0LjY0aDEuNzljLS4wMi0uNDctLjExLS45LS4yOC0xLjI5cy0uNC0uNzMtLjctMS4wMS0uNjYtLjUtMS4wOC0uNjYtLjg4LS4yMy0xLjM5LS4yM2MtLjY1IDAtMS4yMi4xMS0xLjcuMzRzLS44OC41My0xLjIuOTItLjU2Ljg0LS43MSAxLjM2UzggMTEuMjkgOCAxMS44N3YuMjdjMCAuNTguMDggMS4xMi4yMyAxLjY0cy4zOS45Ny43MSAxLjM1LjcyLjY5IDEuMi45MWMuNDguMjIgMS4wNS4zNCAxLjcuMzQuNDcgMCAuOTEtLjA4IDEuMzItLjIzcy43Ny0uMzYgMS4wOC0uNjMuNTYtLjU4Ljc0LS45NC4yOS0uNzQuMy0xLjE1aC0xLjc5Yy0uMDEuMjEtLjA2LjQtLjE1LjU4cy0uMjEuMzMtLjM2LjQ2LS4zMi4yMy0uNTIuM2MtLjE5LjA3LS4zOS4wOS0uNi4xLS4zNi0uMDEtLjY2LS4wOC0uODktLjIzLS4yNS0uMTYtLjQ1LS4zNy0uNTktLjYycy0uMjUtLjU1LS4zLS44OC0uMDgtLjY3LS4wOC0xdi0uMjdjMC0uMzUuMDMtLjY4LjA4LTEuMDF6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JlZGl0Q2FyZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuODMgNEgyMGMxLjExIDAgMiAuODkgMiAydjEyYzAgLjM0LS4wOC42Ni0uMjMuOTRMMjAgMTcuMTdWMTJoLTUuMTdsLTQtNEgyMFY2SDguODNsLTItMnptMTMuNjYgMTkuMzFMMTcuMTcgMjBINGMtMS4xMSAwLTItLjg5LTItMmwuMDEtMTJjMC0uMzQuMDgtLjY2LjIzLS45M0wuNjkgMy41MSAyLjEgMi4xbDE5LjggMTkuOC0xLjQxIDEuNDF6TTQgNi44M1Y4aDEuMTdMNCA2Ljgzek0xNS4xNyAxOGwtNi02SDR2NmgxMS4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDR2LTZoMTZ2NnptMC0xMEg0VjZoMTZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxNHYtMUgxMXYuNWgydi0xaC0yLjVjLS41NSAwLTEtLjQ1LTEtMVYxMGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxSDEzdi0uNWgtMnYxaDIuNWMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxaC0zYy0uNTUgMC0xLS40NS0xLTF6bTcuNSAxaDNjLjU1IDAgMS0uNDUgMS0xdi0xLjVjMC0uNTUtLjQ1LTEtMS0xaC0yLjV2LTFoMnYuNUgyMXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFoMi41djFoLTJWMTNIMTZ2MWMwIC41NS40NSAxIDEgMXptLTktNWMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTF2LTFINi41di41aC0ydi0zaDJ2LjVIOHYtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnJlbmN5RXhjaGFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi44OSAxMS4xYy0xLjc4LS41OS0yLjY0LS45Ni0yLjY0LTEuOSAwLTEuMDIgMS4xMS0xLjM5IDEuODEtMS4zOSAxLjMxIDAgMS43OS45OSAxLjkgMS4zNGwxLjU4LS42N2MtLjE1LS40NS0uODItMS45Mi0yLjU0LTIuMjRWNWgtMnYxLjI2Yy0yLjQ4LjU2LTIuNDkgMi44Ni0yLjQ5IDIuOTYgMCAyLjI3IDIuMjUgMi45MSAzLjM1IDMuMzEgMS41OC41NiAyLjI4IDEuMDcgMi4yOCAyLjAzIDAgMS4xMy0xLjA1IDEuNjEtMS45OCAxLjYxLTEuODIgMC0yLjM0LTEuODctMi40LTIuMDlsLTEuNjYuNjdjLjYzIDIuMTkgMi4yOCAyLjc4IDIuOSAyLjk2VjE5aDJ2LTEuMjRjLjQtLjA5IDIuOS0uNTkgMi45LTMuMjIgMC0xLjM5LS42MS0yLjYxLTMuMDEtMy40NHpNMyAyMUgxdi02aDZ2Mkg0LjUyYzEuNjEgMi40MSA0LjM2IDQgNy40OCA0YTkgOSAwIDAgMCA5LTloMmMwIDYuMDgtNC45MiAxMS0xMSAxMS0zLjcyIDAtNy4wMS0xLjg1LTktNC42N1YyMXptLTItOUMxIDUuOTIgNS45MiAxIDEyIDFjMy43MiAwIDcuMDEgMS44NSA5IDQuNjdWM2gydjZoLTZWN2gyLjQ4QzE3Ljg3IDQuNTkgMTUuMTIgMyAxMiAzYTkgOSAwIDAgMC05IDlIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhbmdlcm91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzMgM0g4LjI3TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NkwyMSAxNS43M1Y4LjI3TDE1LjczIDN6TTE5IDE0LjkgMTQuOSAxOUg5LjFMNSAxNC45VjkuMUw5LjEgNWg1LjhMMTkgOS4xdjUuOHptLTQuMTctNy4xNEwxMiAxMC41OSA5LjE3IDcuNzYgNy43NiA5LjE3IDEwLjU5IDEybC0yLjgzIDIuODMgMS40MSAxLjQxTDEyIDEzLjQxbDIuODMgMi44MyAxLjQxLTEuNDFMMTMuNDEgMTJsMi44My0yLjgzLTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhc2hib2FyZEN1c3RvbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMWg4VjNIM3Y4em0yLTZoNHY0SDVWNXpNMTMgM3Y4aDhWM2gtOHptNiA2aC00VjVoNHY0ek0zIDIxaDh2LThIM3Y4em0yLTZoNHY0SDV2LTR6TTE4IDEzaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGFzaGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djJoLTRWNWg0TTkgNXY2SDVWNWg0bTEwIDh2NmgtNHYtNmg0TTkgMTd2Mkg1di0yaDRNMjEgM2gtOHY2aDhWM3pNMTEgM0gzdjEwaDhWM3ptMTAgOGgtOHYxMGg4VjExem0tMTAgNEgzdjZoOHYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhdGFFeHBsb3JhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBoOGMxLjEgMCAyLS45IDItMnYtOGMwLTUuNTItNC40OC0xMC0xMC0xMHptMCAxOGMtMi44OSAwLTUuNDMtMS41NC02LjgzLTMuODRsMi45NS0yLjk1TDExLjQxIDE2IDE2IDExLjQyVjEzaDJWOGgtNXYyaDEuNThsLTMuMjggMy4yOEw4IDEwLjVsLTMuNjkgMy43QzQuMTEgMTMuNSA0IDEyLjc2IDQgMTJjMC00LjQxIDMuNTktOCA4LThzOCAzLjU5IDggOC0zLjU5IDgtOCA4em03LjUuNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YVRocmVzaG9sZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC0xLjczTDE5IDE3LjI3VjE5em0wLTNoLS44NWwtMyAzaC0xLjYybDMtM2gtMi4xMmwtMyAzSDkuOGwzLTNoLTIuMTJsLTMgM0g1Ljg0bDMtM0g2LjcyTDUgMTcuNzJWNWgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAuNjcgMTEgMiAyIDUuMDgtNS4wOS0xLjQxLTEuNDEtMy42NyAzLjY3LTItMi00LjQyIDQuNDJMNy42NiAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhdGVSYW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMWgydjJIN3YtMnptMTQtNXYxNGMwIDEuMS0uOSAyLTIgMkg1YTIgMiAwIDAgMS0yLTJsLjAxLTE0YzAtMS4xLjg4LTIgMS45OS0yaDFWMmgydjJoOFYyaDJ2MmgxYzEuMSAwIDIgLjkgMiAyek01IDhoMTRWNkg1djJ6bTE0IDEyVjEwSDV2MTBoMTR6bS00LTdoMnYtMmgtMnYyem0tNCAwaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbGV0ZUZvcmV2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjEyIDEwLjQ3IDEyIDEyLjU5bC0yLjEzLTIuMTItMS40MSAxLjQxTDEwLjU5IDE0bC0yLjEyIDIuMTIgMS40MSAxLjQxTDEyIDE1LjQxbDIuMTIgMi4xMiAxLjQxLTEuNDFMMTMuNDEgMTRsMi4xMi0yLjEyek0xNS41IDRsLTEtMWgtNWwtMSAxSDV2MmgxNFY0ek02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTggOWg4djEwSDhWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbGV0ZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnpNOCA5aDh2MTBIOFY5em03LjUtNS0xLTFoLTVsLTEgMUg1djJoMTRWNGgtMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVsZXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA5djEwSDhWOWg4bS0xLjUtNmgtNWwtMSAxSDV2MmgxNFY0aC0zLjVsLTEtMXpNMTggN0g2djEyYzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVuc2l0eUxhcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djJIM3pNMyAxOWgxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZW5zaXR5TWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djJIM3pNMyAxOWgxOHYySDN6TTMgMTFoMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVuc2l0eVNtYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyaDE4djJIM3pNMyAyMGgxOHYySDN6TTMgMTRoMTh2Mkgzek0zIDhoMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVzY3JpcHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZoOHYySDh6bTAtNGg4djJIOHptNi0xMEg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTQgMThINlY0aDd2NWg1djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlzYWJsZWRCeURlZmF1bHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoMTR2MTR6TTMgM3YxOGgxOFYzSDN6bTE0IDEyLjU5TDE1LjU5IDE3IDEyIDEzLjQxIDguNDEgMTcgNyAxNS41OSAxMC41OSAxMiA3IDguNDEgOC40MSA3IDEyIDEwLjU5IDE1LjU5IDcgMTcgOC40MSAxMy40MSAxMiAxNyAxNS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpc2FibGVkVmlzaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE1YzEuOTUgMCAzLjc2Ljk4IDQuNzUgMi41LS45OSAxLjUyLTIuOCAyLjUtNC43NSAyLjVzLTMuNzYtLjk4LTQuNzUtMi41Yy45OS0xLjUyIDIuOC0yLjUgNC43NS0yLjV6bTAtMmMtMy4xOCAwLTUuOSAxLjg3LTcgNC41IDEuMSAyLjYzIDMuODIgNC41IDcgNC41czUuOS0xLjg3IDctNC41Yy0xLjEtMi42My0zLjgyLTQuNS03LTQuNXptMCA2Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuMTcgMTYgMTcgMTZzMS41LjY3IDEuNSAxLjVTMTcuODMgMTkgMTcgMTl6bTQuOTktNi42NmMuMDEtLjExLjAxLS4yMy4wMS0uMzQgMC01LjUyLTQuNDgtMTAtMTAtMTBTMiA2LjQ4IDIgMTJjMCA1LjE3IDMuOTMgOS40MyA4Ljk2IDkuOTVhOS4zNDMgOS4zNDMgMCAwIDEtMi4zMi0yLjY4QTguMDEgOC4wMSAwIDAgMSA0IDEyYzAtMS44NS42My0zLjU1IDEuNjktNC45bDUuNjYgNS42NmMuNTYtLjQgMS4xNy0uNzMgMS44Mi0xTDcuMSA1LjY5QTcuOTAyIDcuOTAyIDAgMCAxIDEyIDRjNC4yNCAwIDcuNyAzLjI5IDcuOTggNy40NS43MS4yMiAxLjM5LjUyIDIuMDEuODl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXNwbGF5U2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg0djJoOHYtMmg0YzEuMSAwIDItLjkgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxNEg0VjVoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgOC4yNWg4djEuNUg2ek0xNi41IDkuNzVIMTh2LTEuNWgtMS41VjdIMTV2NGgxLjV6TTEwIDEyLjI1aDh2MS41aC04ek03LjUgMTVIOXYtNEg3LjV2MS4yNUg2djEuNWgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE1djRINXYtNGgxNG0xLTJINGMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTZjLjU1IDAgMS0uNDUgMS0xdi02YzAtLjU1LS40NS0xLTEtMXpNNyAxOC41Yy0uODIgMC0xLjUtLjY3LTEuNS0xLjVzLjY4LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNMTkgNXY0SDVWNWgxNG0xLTJINGMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTZjLjU1IDAgMS0uNDUgMS0xVjRjMC0uNTUtLjQ1LTEtMS0xek03IDguNWMtLjgyIDAtMS41LS42Ny0xLjUtMS41UzYuMTggNS41IDcgNS41czEuNS42OCAxLjUgMS41UzcuODMgOC41IDcgOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9uZUFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNy0xLjQxLTEuNDEtNi4zNCA2LjM0IDEuNDEgMS40MUwxOCA3em00LjI0LTEuNDFMMTEuNjYgMTYuMTcgNy40OCAxMmwtMS40MSAxLjQxTDExLjY2IDE5bDEyLTEyLTEuNDItMS40MXpNLjQxIDEzLjQxIDYgMTlsMS40MS0xLjQxTDEuODMgMTIgLjQxIDEzLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9uZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDQuOTMgMS40IDEuNEw4LjQzIDE5LjA3bC01LjYtNS42IDEuNC0xLjQgNC4yIDQuMkwxOS43NyA0LjkzbTAtMi44M0w4LjQzIDEzLjQ0bC00LjItNC4yTDAgMTMuNDdsOC40MyA4LjQzTDI0IDYuMzMgMTkuNzcgMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNi4yIDQuOCAxMmwtMS40IDEuNEw5IDE5IDIxIDdsLTEuNC0xLjRMOSAxNi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9udXRMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNS4wOEE3IDcgMCAwIDEgMTguOTIgMTFoMy4wM2MtLjQ3LTQuNzItNC4yMy04LjQ4LTguOTUtOC45NXYzLjAzek0xOC45MiAxM0E3IDcgMCAwIDEgMTMgMTguOTJ2My4wM2M0LjcyLS40NyA4LjQ4LTQuMjMgOC45NS04Ljk1aC0zLjAzek0xMSAxOC45MmMtMy4zOS0uNDktNi0zLjQtNi02LjkyczIuNjEtNi40MyA2LTYuOTJWMi4wNWMtNS4wNS41LTkgNC43Ni05IDkuOTUgMCA1LjE5IDMuOTUgOS40NSA5IDkuOTV2LTMuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb251dFNtYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC44MiAxMWg3LjEzYy0uNDctNC43Mi00LjIzLTguNDgtOC45NS04Ljk1djcuMTNjLjg1LjMxIDEuNTEuOTcgMS44MiAxLjgyek0xNSA0LjU4QzE3IDUuNCAxOC42IDcgMTkuNDIgOWgtMy40M2MtLjI4LS4zNy0uNjItLjcxLS45OS0uOTlWNC41OHpNMiAxMmMwIDUuMTkgMy45NSA5LjQ1IDkgOS45NXYtNy4xM0M5Ljg0IDE0LjQgOSAxMy4zIDkgMTJjMC0xLjMuODQtMi40IDItMi44MlYyLjA1Yy01LjA1LjUtOSA0Ljc2LTkgOS45NXptNy03LjQydjMuNDRjLTEuMjMuOTItMiAyLjM5LTIgMy45OCAwIDEuNTkuNzcgMy4wNiAyIDMuOTl2My40NEM2LjA0IDE4LjI0IDQgMTUuMzUgNCAxMmMwLTMuMzUgMi4wNC02LjI0IDUtNy40MnptNCAxMC4yNHY3LjEzYzQuNzItLjQ3IDguNDgtNC4yMyA4Ljk1LTguOTVoLTcuMTNjLS4zMS44NS0uOTcgMS41MS0xLjgyIDEuODJ6bTIgMS4xN2MuMzctLjI4LjcxLS42MS45OS0uOTloMy40M0MxOC42IDE3IDE3IDE4LjYgMTUgMTkuNDJ2LTMuNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEcmFnSW5kaWNhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxOGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6bS0yLThjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDRjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHluYW1pY0Zvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMUg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoOXY3ek00IDloN1Y2SDR2M3ptMTEgMTFINGMtMS4xIDAtMi0uOS0yLTJ2LTNjMC0xLjEuOS0yIDItMmgxMXY3ek00IDE4aDl2LTNINHYzem0xOC05aC0ybDItNWgtN3Y3aDJ2OWw1LTExek00Ljc1IDE3LjI1aDEuNXYtMS41aC0xLjV2MS41em0wLTloMS41di0xLjVoLTEuNXYxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjA1IDguMDVhNy4wMDcgNy4wMDcgMCAwIDAgMCA5LjlDNy40MiAxOS4zMiA5LjIxIDIwIDExIDIwczMuNTgtLjY4IDQuOTUtMi4wNUMxOS40MyAxNC40NyAyMCA0IDIwIDRTOS41MyA0LjU3IDYuMDUgOC4wNXptOC40OSA4LjQ5Yy0uOTUuOTQtMi4yIDEuNDYtMy41NCAxLjQ2LS44OSAwLTEuNzMtLjI1LTIuNDgtLjY4LjkyLTIuODggMi42Mi01LjQxIDQuODgtNy4zMi0yLjYzIDEuMzYtNC44NCAzLjQ2LTYuMzcgNi0xLjQ4LTEuOTYtMS4zNS00Ljc1LjQ0LTYuNTRDOS4yMSA3LjcyIDE0LjA0IDYuNjUgMTcuOCA2LjJjLS40NSAzLjc2LTEuNTIgOC41OS0zLjI2IDEwLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdENhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxMGgxNHYyaDJWNmMwLTEuMS0uOS0yLTItMmgtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYTIgMiAwIDAgMCAyIDJoN3YtMkg1VjEwem0wLTRoMTR2Mkg1VjZ6bTE3Ljg0IDEwLjI4LS43MS43MS0yLjEyLTIuMTIuNzEtLjcxYS45OTYuOTk2IDAgMCAxIDEuNDEgMGwuNzEuNzFjLjM5LjM5LjM5IDEuMDIgMCAxLjQxem0tMy41NC0uNyAyLjEyIDIuMTItNS4zIDUuM0gxNHYtMi4xMmw1LjMtNS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMDYgOS4wMi45Mi45Mi0xLjExIDEuMTEgMS40MSAxLjQxIDIuNTItMi41Mi0zLjc1LTMuNzUtMi41MiAyLjUyIDEuNDEgMS40MSAxLjEyLTEuMXptNi42NS0xLjk4YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0Yy0uMi0uMi0uNDUtLjI5LS43MS0uMjlzLS41MS4xLS43LjI5bC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pNMi44MSAyLjgxIDEuMzkgNC4yMmw3LjMyIDcuMzJMMyAxNy4yNVYyMWgzLjc1bDUuNzEtNS43MSA3LjMyIDcuMzIgMS40MS0xLjQxTDIuODEgMi44MXpNNS45MiAxOUg1di0uOTJsNS4xMy01LjEzLjkyLjkyTDUuOTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFamVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxN2gxNHYySDV6bTctMTJMNS4zMyAxNWgxMy4zNEwxMiA1em0wIDMuNiAyLjkzIDQuNEg5LjA3TDEyIDguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV1cm9TeW1ib2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE4LjVBNi40OCA2LjQ4IDAgMCAxIDkuMjQgMTVIMTV2LTJIOC41OGMtLjA1LS4zMy0uMDgtLjY2LS4wOC0xcy4wMy0uNjcuMDgtMUgxNVY5SDkuMjRBNi40OTEgNi40OTEgMCAwIDEgMTUgNS41YzEuNjEgMCAzLjA5LjU5IDQuMjMgMS41N0wyMSA1LjNBOC45NTUgOC45NTUgMCAwIDAgMTUgM2MtMy45MiAwLTcuMjQgMi41MS04LjQ4IDZIM3YyaDMuMDZhOC4yNjIgOC4yNjIgMCAwIDAgMCAySDN2MmgzLjUyYzEuMjQgMy40OSA0LjU2IDYgOC40OCA2IDIuMzEgMCA0LjQxLS44NyA2LTIuM2wtMS43OC0xLjc3Yy0xLjEzLjk4LTIuNiAxLjU3LTQuMjIgMS41N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV2ZW50UmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTJWNmMwLTEuMS0uOS0yLTItMmgtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDd2LTJINVYxMGgxNHYyaDJ6bS0yLTRINVY2aDE0djJ6bS0zLjM2IDEyYTMuNTA0IDMuNTA0IDAgMCAwIDYuODYtMWMwLTEuOTMtMS41Ny0zLjUtMy41LTMuNS0uOTUgMC0xLjgyLjM4LTIuNDUgMUgxOFYxOGgtNHYtNGgxLjV2MS40M2MuOS0uODggMi4xNC0xLjQzIDMuNS0xLjQzIDIuNzYgMCA1IDIuMjQgNSA1YTUuMDAyIDUuMDAyIDAgMCAxLTkuOSAxaDEuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdmVudFNlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDV2N0g5VjVoNm0wLTJIOWMtMS4xIDAtMiAuOS0yIDJ2OWgxMFY1YzAtMS4xLS45LTItMi0yem03IDdoLTN2M2gzdi0zek01IDEwSDJ2M2gzdi0zem0xNSA1SDR2Nmgydi00aDEydjRoMnYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV2ZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC0xVjJoLTJ2Mkg4VjJINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMjBhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDVWMTBoMTR2MTB6bTAtMTJINVY2aDE0djJ6bS03IDVoNXY1aC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhpdFRvQXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wOSAxNS41OSAxMS41IDE3bDUtNS01LTUtMS40MSAxLjQxTDEyLjY3IDExSDN2Mmg5LjY3bC0yLjU4IDIuNTl6TTE5IDNINWEyIDIgMCAwIDAtMiAydjRoMlY1aDE0djE0SDV2LTRIM3Y0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4cGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMGgxNnYySDR6TTQgMmgxNnYySDR6TTkuNDEgMTMuNTkgOCAxNWw0IDQgNC00LTEuNDEtMS40MUwxMyAxNS4xN1Y4LjgzbDEuNTkgMS41OEwxNiA5bC00LTQtNCA0IDEuNDEgMS40MUwxMSA4LjgzdjYuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBsb3JlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS40OC0uNDEgMi44Ni0xLjEyIDQuMDZsMS40NiAxLjQ2QTkuOTY3IDkuOTY3IDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTIuMDQgMC0zLjkzLjYxLTUuNTEgMS42NmwxLjQ2IDEuNDZBNy44NjkgNy44NjkgMCAwIDEgMTIgNHptMi45MSA4LjA4TDE3LjUgNi41bC01LjU4IDIuNTkgMi45OSAyLjk5ek0yLjEgNC45M2wxLjU2IDEuNTZBOS45MSA5LjkxIDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4wNCAwIDMuOTMtLjYxIDUuNTEtMS42NmwxLjU2IDEuNTYgMS40MS0xLjQxTDMuNTEgMy41MSAyLjEgNC45M3ptMy4wMiAzLjAxIDMuOTggMy45OC0yLjYgNS41OCA1LjU4LTIuNTkgMy45OCAzLjk4Yy0xLjIuNy0yLjU4IDEuMTEtNC4wNiAxLjExLTQuNDEgMC04LTMuNTktOC04IDAtMS40OC40MS0yLjg2IDEuMTItNC4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4cGxvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0tNS41LTIuNSA3LjUxLTMuNDlMMTcuNSA2LjUgOS45OSA5Ljk5IDYuNSAxNy41em01LjUtNi42Yy42MSAwIDEuMS40OSAxLjEgMS4xcy0uNDkgMS4xLTEuMSAxLjEtMS4xLS40OS0xLjEtMS4xLjQ5LTEuMSAxLjEtMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXh0ZW5zaW9uT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMS4zOSA0LjIyIDEuNjIgMS42MmMwIC4wNS0uMDEuMS0uMDEuMTZ2My44YzIuNyAwIDMgMi4xNiAzIDIuN3MtLjI5IDIuNy0zIDIuN1YxOWMwIDEuMS45IDIgMiAyaDMuOGMwLTIuNzEgMi4xNi0zIDIuNy0zczIuNy4yOSAyLjcgM0gxOGMuMDYgMCAuMTEgMCAuMTYtLjAxbDEuNjEgMS42MSAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnpNMTEuNSAxNmMtMS41IDAtMy41Ny44My00LjM3IDNINXYtMi4xM2MyLjE3LS44IDMtMi44NyAzLTQuMzcgMC0uNjktLjE4LTEuNS0uNTgtMi4yNWw2LjMzIDYuMzNBNC44OSA0Ljg5IDAgMCAwIDExLjUgMTZ6TTguODMgNmwtMi0ySDlhMi41IDIuNSAwIDAgMSA1IDBoNGMxLjEgMCAyIC45IDIgMnY0YTIuNSAyLjUgMCAwIDEgMCA1djIuMTdsLTItMlYxM2gyYy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjVoLTJWNmgtNlY0YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNXYySDguODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHRlbnNpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUgNC41Yy4yOCAwIC41LjIyLjUuNXYyaDZ2NmgyYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNWgtMnY2aC0yLjEyYy0uNjgtMS43NS0yLjM5LTMtNC4zOC0zcy0zLjcgMS4yNS00LjM4IDNINHYtMi4xMmMxLjc1LS42OCAzLTIuMzkgMy00LjM4IDAtMS45OS0xLjI0LTMuNy0yLjk5LTQuMzhMNCA3aDZWNWMwLS4yOC4yMi0uNS41LS41bTAtMkEyLjUgMi41IDAgMCAwIDggNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOGguMjljMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtLjNjMC0xLjQ5IDEuMjEtMi43IDIuNy0yLjdzMi43IDEuMjEgMi43IDIuN3YuM0gxN2MxLjEgMCAyLS45IDItMnYtNGEyLjUgMi41IDAgMCAwIDAtNVY3YzAtMS4xLS45LTItMi0yaC00YTIuNSAyLjUgMCAwIDAtMi41LTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2VVbmxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjI1IDEzYTEuMjUgMS4yNSAwIDEgMS0yLjUgMCAxLjI1IDEuMjUgMCAwIDEgMi41IDB6TTE1IDExLjc1YTEuMjUgMS4yNSAwIDEgMCAwIDIuNSAxLjI1IDEuMjUgMCAwIDAgMC0yLjV6bTcgLjI1YzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMiA2LjQ4IDIgMTIgMnMxMCA0LjQ4IDEwIDEwek0xMC42NiA0LjEyQzEyLjA2IDYuNDQgMTQuNiA4IDE3LjUgOGMuNDYgMCAuOTEtLjA1IDEuMzQtLjEyQzE3LjQ0IDUuNTYgMTQuOSA0IDEyIDRjLS40NiAwLS45MS4wNS0xLjM0LjEyek00LjQyIDkuNDdhOC4wNDYgOC4wNDYgMCAwIDAgMy42Ni00LjQ0IDguMDQ2IDguMDQ2IDAgMCAwLTMuNjYgNC40NHpNMjAgMTJjMC0uNzgtLjEyLTEuNTMtLjMzLTIuMjQtLjcuMTUtMS40Mi4yNC0yLjE3LjI0YTEwIDEwIDAgMCAxLTcuNzYtMy42OUExMC4wMTYgMTAuMDE2IDAgMCAxIDQgMTEuODZjLjAxLjA0IDAgLjA5IDAgLjE0IDAgNC40MSAzLjU5IDggOCA4czgtMy41OSA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yNSAxM2ExLjI1IDEuMjUgMCAxIDEtMi41IDAgMS4yNSAxLjI1IDAgMCAxIDIuNSAwek0xNSAxMS43NWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41em03IC4yNWMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTIgNi40OCAyIDEyIDJzMTAgNC40OCAxMCAxMHpNMTAuNjYgNC4xMkMxMi4wNiA2LjQ0IDE0LjYgOCAxNy41IDhjLjQ2IDAgLjkxLS4wNSAxLjM0LS4xMkMxNy40NCA1LjU2IDE0LjkgNCAxMiA0Yy0uNDYgMC0uOTEuMDUtMS4zNC4xMnpNNC40MiA5LjQ3YTguMDQ2IDguMDQ2IDAgMCAwIDMuNjYtNC40NCA4LjA0NiA4LjA0NiAwIDAgMC0zLjY2IDQuNDR6TTIwIDEyYzAtLjc4LS4xMi0xLjUzLS4zMy0yLjI0LS43LjE1LTEuNDIuMjQtMi4xNy4yNGExMCAxMCAwIDAgMS03Ljc2LTMuNjlBMTAuMDE2IDEwLjAxNiAwIDAgMSA0IDExLjg2Yy4wMS4wNCAwIC4wOSAwIC4xNCAwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjdENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg0VjVoMTZ2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjQxIDEwLjQyIDE3Ljk5IDlsLTMuMTcgMy4xNy0xLjQxLTEuNDJMMTIgMTIuMTYgMTQuODIgMTV6TTUgN2g1djJINXpNNSAxMWg1djJINXpNNSAxNWg1djJINXpcIn0sXCJjaGlsZFwiOltdfV19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmF2b3JpdGVCb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgM2MtMS43NCAwLTMuNDEuODEtNC41IDIuMDlDMTAuOTEgMy44MSA5LjI0IDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDMuNzggMy40IDYuODYgOC41NSAxMS41NEwxMiAyMS4zNWwxLjQ1LTEuMzJDMTguNiAxNS4zNiAyMiAxMi4yOCAyMiA4LjUgMjIgNS40MiAxOS41OCAzIDE2LjUgM3ptLTQuNCAxNS41NS0uMS4xLS4xLS4xQzcuMTQgMTQuMjQgNCAxMS4zOSA0IDguNSA0IDYuNSA1LjUgNSA3LjUgNWMxLjU0IDAgMy4wNC45OSAzLjU3IDIuMzZoMS44N0MxMy40NiA1Ljk5IDE0Ljk2IDUgMTYuNSA1YzIgMCAzLjUgMS41IDMuNSAzLjUgMCAyLjg5LTMuMTQgNS43NC03LjkgMTAuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYXZvcml0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMjEuMzUtMS40NS0xLjMyQzUuNCAxNS4zNiAyIDEyLjI4IDIgOC41IDIgNS40MiA0LjQyIDMgNy41IDNjMS43NCAwIDMuNDEuODEgNC41IDIuMDlDMTMuMDkgMy44MSAxNC43NiAzIDE2LjUgMyAxOS41OCAzIDIyIDUuNDIgMjIgOC41YzAgMy43OC0zLjQgNi44Ni04LjU1IDExLjU0TDEyIDIxLjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmF4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWgtMVY0SDh2NWgtLjc4QzYuNjcgOC4zOSA1Ljg5IDggNSA4Yy0xLjY2IDAtMyAxLjM0LTMgM3Y3YzAgMS42NiAxLjM0IDMgMyAzIC44OSAwIDEuNjctLjM5IDIuMjItMUgyMnYtOGMwLTEuNjYtMS4zNC0zLTMtM3pNNiAxOGMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXYtN2MwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2N3ptNC0xMmg2djNoLTZWNnptMTAgMTJIOHYtN2gxMWMuNTUgMCAxIC40NSAxIDF2NnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTJoNHY1SDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGZWVkYmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN2wtLjU5LjU5LS41OC41OFY0aDE2djEyem0tOS00aDJ2MmgtMnptMC02aDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbGVQcmVzZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg4djRoNHYxMnptLTYtM2MtMS4xIDAtMi0uOS0yLTJWOS41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjE1aDJWOS41YTIuNSAyLjUgMCAwIDAtNSAwVjE1YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTR2LTRoLTJ2NGMwIDEuMS0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckFsdE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2Ljk1IDYtMy41NyA0LjU1IDEuNDMgMS40M2MxLjAzLTEuMzEgNC45OC02LjM3IDQuOTgtNi4zN0EuOTk4Ljk5OCAwIDAgMCAxOSA0SDYuODNsMiAyaDguMTJ6TTIuODEgMi44MSAxLjM5IDQuMjIgMTAgMTN2NmMwIC41NS40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXYtMi4xN2w1Ljc4IDUuNzggMS40MS0xLjQxTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0bTAgMjRIMFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDZoMTBsLTUuMDEgNi4zTDcgNnptLTIuNzUtLjM5QzYuMjcgOC4yIDEwIDEzIDEwIDEzdjZjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTZzMy43Mi00LjggNS43NC03LjM5QS45OTguOTk4IDAgMCAwIDE4Ljk1IDRINS4wNGMtLjgzIDAtMS4zLjk1LS43OSAxLjYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmluZEluUGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02ek02IDRoN2w1IDV2OC41OGwtMS44NC0xLjg0YTQuOTkyIDQuOTkyIDAgMCAwLS42NC02LjI4QTQuOTYgNC45NiAwIDAgMCAxMiA4YTUgNSAwIDAgMC0zLjUzIDEuNDYgNC45OCA0Ljk4IDAgMCAwIDAgNy4wNSA0Ljk4MiA0Ljk4MiAwIDAgMCA2LjI4LjYzTDE3LjYgMjBINlY0em04LjExIDExLjFjLS41Ni41Ni0xLjMxLjg4LTIuMTEuODhzLTEuNTUtLjMxLTIuMTEtLjg4Yy0uNTYtLjU2LS44OC0xLjMxLS44OC0yLjExcy4zMS0xLjU1Ljg4LTIuMTFjLjU2LS41NyAxLjMxLS44OCAyLjExLS44OHMxLjU1LjMxIDIuMTEuODhjLjU2LjU2Ljg4IDEuMzEuODggMi4xMXMtLjMxIDEuNTUtLjg4IDIuMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaW5kUmVwbGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNmMxLjM4IDAgMi42My41NiAzLjU0IDEuNDZMMTIgMTBoNlY0bC0yLjA1IDIuMDVBNi45NzYgNi45NzYgMCAwIDAgMTEgNGMtMy41MyAwLTYuNDMgMi42MS02LjkyIDZINi4xQTUgNSAwIDAgMSAxMSA2em01LjY0IDkuMTRBNi44OSA2Ljg5IDAgMCAwIDE3LjkyIDEySDE1LjlhNSA1IDAgMCAxLTQuOSA0Yy0xLjM4IDAtMi42My0uNTYtMy41NC0xLjQ2TDEwIDEySDR2NmwyLjA1LTIuMDVBNi45NzYgNi45NzYgMCAwIDAgMTEgMThjMS41NSAwIDIuOTgtLjUxIDQuMTQtMS4zNkwyMCAyMS40OSAyMS40OSAyMGwtNC44NS00Ljg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmluZ2VycHJpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjgxIDQuNDdjLS4wOCAwLS4xNi0uMDItLjIzLS4wNkMxNS42NiAzLjQyIDE0IDMgMTIuMDEgM2MtMS45OCAwLTMuODYuNDctNS41NyAxLjQxLS4yNC4xMy0uNTQuMDQtLjY4LS4yYS41MDYuNTA2IDAgMCAxIC4yLS42OEM3LjgyIDIuNTIgOS44NiAyIDEyLjAxIDJjMi4xMyAwIDMuOTkuNDcgNi4wMyAxLjUyLjI1LjEzLjM0LjQzLjIxLjY3YS40OS40OSAwIDAgMS0uNDQuMjh6TTMuNSA5LjcyYS40OTkuNDk5IDAgMCAxLS40MS0uNzljLjk5LTEuNCAyLjI1LTIuNSAzLjc1LTMuMjdDOS45OCA0LjA0IDE0IDQuMDMgMTcuMTUgNS42NWMxLjUuNzcgMi43NiAxLjg2IDMuNzUgMy4yNWEuNS41IDAgMCAxLS4xMi43Yy0uMjMuMTYtLjU0LjExLS43LS4xMmE5LjM4OCA5LjM4OCAwIDAgMC0zLjM5LTIuOTRjLTIuODctMS40Ny02LjU0LTEuNDctOS40LjAxLTEuMzYuNy0yLjUgMS43LTMuNCAyLjk2LS4wOC4xNC0uMjMuMjEtLjM5LjIxem02LjI1IDEyLjA3YS40Ny40NyAwIDAgMS0uMzUtLjE1Yy0uODctLjg3LTEuMzQtMS40My0yLjAxLTIuNjQtLjY5LTEuMjMtMS4wNS0yLjczLTEuMDUtNC4zNCAwLTIuOTcgMi41NC01LjM5IDUuNjYtNS4zOXM1LjY2IDIuNDIgNS42NiA1LjM5YzAgLjI4LS4yMi41LS41LjVzLS41LS4yMi0uNS0uNWMwLTIuNDItMi4wOS00LjM5LTQuNjYtNC4zOXMtNC42NiAxLjk3LTQuNjYgNC4zOWMwIDEuNDQuMzIgMi43Ny45MyAzLjg1LjY0IDEuMTUgMS4wOCAxLjY0IDEuODUgMi40Mi4xOS4yLjE5LjUxIDAgLjcxLS4xMS4xLS4yNC4xNS0uMzcuMTV6bTcuMTctMS44NWMtMS4xOSAwLTIuMjQtLjMtMy4xLS44OS0xLjQ5LTEuMDEtMi4zOC0yLjY1LTIuMzgtNC4zOSAwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNWMwIDEuNDEuNzIgMi43NCAxLjk0IDMuNTYuNzEuNDggMS41NC43MSAyLjU0LjcxLjI0IDAgLjY0LS4wMyAxLjA0LS4xLjI3LS4wNS41My4xMy41OC40MS4wNS4yNy0uMTMuNTMtLjQxLjU4LS41Ny4xMS0xLjA3LjEyLTEuMjEuMTJ6TTE0LjkxIDIyYy0uMDQgMC0uMDktLjAxLS4xMy0uMDItMS41OS0uNDQtMi42My0xLjAzLTMuNzItMi4xYTcuMjk3IDcuMjk3IDAgMCAxLTIuMTctNS4yMmMwLTEuNjIgMS4zOC0yLjk0IDMuMDgtMi45NHMzLjA4IDEuMzIgMy4wOCAyLjk0YzAgMS4wNy45MyAxLjk0IDIuMDggMS45NHMyLjA4LS44NyAyLjA4LTEuOTRjMC0zLjc3LTMuMjUtNi44My03LjI1LTYuODMtMi44NCAwLTUuNDQgMS41OC02LjYxIDQuMDMtLjM5LjgxLS41OSAxLjc2LS41OSAyLjggMCAuNzguMDcgMi4wMS42NyAzLjYxLjEuMjYtLjAzLjU1LS4yOS42NC0uMjYuMS0uNTUtLjA0LS42NC0uMjlhMTEuMTQgMTEuMTQgMCAwIDEtLjczLTMuOTZjMC0xLjIuMjMtMi4yOS42OC0zLjI0IDEuMzMtMi43OSA0LjI4LTQuNiA3LjUxLTQuNiA0LjU1IDAgOC4yNSAzLjUxIDguMjUgNy44MyAwIDEuNjItMS4zOCAyLjk0LTMuMDggMi45NHMtMy4wOC0xLjMyLTMuMDgtMi45NGMwLTEuMDctLjkzLTEuOTQtMi4wOC0xLjk0cy0yLjA4Ljg3LTIuMDggMS45NGMwIDEuNzEuNjYgMy4zMSAxLjg3IDQuNTEuOTUuOTQgMS44NiAxLjQ2IDMuMjcgMS44NS4yNy4wNy40Mi4zNS4zNS42MS0uMDUuMjMtLjI2LjM4LS40Ny4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpdFNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNmgxMlY4SDZ2OHptMi02aDh2NEg4di00em0tNCA1SDJ2M2MwIDEuMS45IDIgMiAyaDN2LTJINHYtM3ptMC05aDNWNEg0Yy0xLjEgMC0yIC45LTIgMnYzaDJWNnptMTYtMmgtM3YyaDN2M2gyVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRoLTN2MmgzYzEuMSAwIDItLjkgMi0ydi0zaC0ydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFreSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIm0xNC4wNSAxNy41OC0uMDEuMDEtMi40LTIuNCAxLjA2LTEuMDYgMS4zNSAxLjM1TDE2LjU0IDEzbDEuMDYgMS4wNi0zLjU0IDMuNTQtLjAxLS4wMnpNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6TTcuMzQgNi4yOGwxLjQxIDEuNDEgMS40MS0xLjQxIDEuMDYgMS4wNi0xLjQxIDEuNDEgMS40MSAxLjQxLTEuMDYgMS4wNi0xLjQxLTEuNDEtMS40MSAxLjQxLTEuMDYtMS4wNiAxLjQxLTEuNDEtMS40MS0xLjQxIDEuMDYtMS4wNnpNMTIgMjBjLTIuMiAwLTQuMi0uOS01LjctMi4zTDE3LjcgNi4zQzE5LjEgNy44IDIwIDkuOCAyMCAxMmMwIDQuNC0zLjYgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlnaHRMYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgMTloMTl2MmgtMTl2LTJ6bTE2Ljg0LTMuMTVjLjguMjEgMS42Mi0uMjYgMS44NC0xLjA2LjIxLS44LS4yNi0xLjYyLTEuMDYtMS44NGwtNS4zMS0xLjQyLTIuNzYtOS4wMkwxMC4xMiAydjguMjhMNS4xNSA4Ljk1bC0uOTMtMi4zMi0xLjQ1LS4zOXY1LjE3bDE2LjU3IDQuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlnaHRUYWtlb2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgMTloMTl2MmgtMTl2LTJ6bTE5LjU3LTkuMzZjLS4yMS0uOC0xLjA0LTEuMjgtMS44NC0xLjA2TDE0LjkyIDEwbC02LjktNi40My0xLjkzLjUxIDQuMTQgNy4xNy00Ljk3IDEuMzMtMS45Ny0xLjU0LTEuNDUuMzkgMi41OSA0LjQ5TDIxIDExLjQ5Yy44MS0uMjMgMS4yOC0xLjA1IDEuMDctMS44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsaXBUb0JhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgN0g3djJoMlY3em0wIDRIN3YyaDJ2LTJ6bTAtOGEyIDIgMCAwIDAtMiAyaDJWM3ptNCAxMmgtMnYyaDJ2LTJ6bTYtMTJ2MmgyYzAtMS4xLS45LTItMi0yem0tNiAwaC0ydjJoMlYzek05IDE3di0ySDdhMiAyIDAgMCAwIDIgMnptMTAtNGgydi0yaC0ydjJ6bTAtNGgyVjdoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6TTUgN0gzdjEyYTIgMiAwIDAgMCAyIDJoMTJ2LTJINVY3em0xMC0yaDJWM2gtMnYyem0wIDEyaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsaXBUb0Zyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTIgNHYtMkgzYTIgMiAwIDAgMCAyIDJ6TTMgOWgyVjdIM3Yyem0xMiAxMmgydi0yaC0ydjJ6bTQtMThIOWEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxMkg5VjVoMTB2MTB6bS04IDZoMnYtMmgtMnYyem0tNCAwaDJ2LTJIN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmx1dHRlckRhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4wNyAxMS43Yy4yOS0uMzkuODEtLjU2IDEuMjctLjM3LjE3LjA3LjMyLjE4LjQzLjMzLjIyLjI4LjI1LjU5LjIyLjg1LS4wNS4zMy0uMjUuNjMtLjU0Ljc5IDAgMC00Ljg3IDIuOTUtNS4wNyAyLjY5czMuNjktNC4yOSAzLjY5LTQuMjl6TTIyIDEwYzAgMi41LTEgMy0xLjUgMy0uMjMgMC0uNDQtLjEtLjYyLS4yNi0uNDggMy4zMi0yLjM2IDUuMzEtNS4zMyA1Ljk5LjExLjQ0LjQ4Ljc3Ljk1Ljc3aC41OGMuMjIgMCAuNDEuMTUuNDguMzYuMTcuNTIuNjYgMS4wMiAxLjAyIDEuMzIuMjUuMjEuMjQuNTktLjAzLjc4LS4zNC4yNC0uOS40OS0xLjc5LjUzYS41MDEuNTAxIDAgMCAxLS40NS0uMjJjLS4xMy0uMi0uMzEtLjU2LS4zMS0xLjAxIDAtLjMuMDQtLjU3LjA5LS44LS43OC0uMTYtMS4zOS0uNzgtMS41NS0xLjU2LS40OS4wNi0xIC4xLTEuNTQuMS0uODggMC0xLjctLjA5LTIuNDUtLjI1LS4wMi4wOC0uMDUuMTYtLjA1LjI1IDAgLjU1LjQ1IDEgMSAxaC41OGMuMjIgMCAuNDEuMTUuNDguMzYuMTcuNTIuNjYgMS4wMiAxLjAyIDEuMzIuMjUuMjEuMjQuNTktLjAzLjc4LS4zNC4yNC0uOS40OS0xLjc5LjUzYS41MDEuNTAxIDAgMCAxLS40NS0uMjJjLS4xMy0uMi0uMzEtLjU2LS4zMS0xLjAxIDAtLjMuMDQtLjU3LjA5LS44LS45LS4xOS0xLjU5LTEtMS41OS0xLjk2IDAtLjE4LjAzLS4zNi4wOC0uNTMtMi40Ni0uODYtNC4wMy0yLjc4LTQuNDYtNS43NC0uMTguMTctLjM4LjI3LS42Mi4yN0MzIDEzIDIgMTIuNSAyIDEwYzAtMi4yNyAxLjctNC41IDMtNC41LjQzIDAgLjQ5LjQ5LjUuODVhNy45ODkgNy45ODkgMCAwIDEgNS41NS0zLjI5Yy4yLS45NiAxLjA4LTEuNTYgMS45NS0xLjU2djFzLjMzLS41IDEtLjVjLjY3IDAgMSAuNSAxIC41LS40OSAwLS44NS4zNS0uOTYuNzcgMS44Mi40OCAzLjM5IDEuNTkgNC40NiAzLjA4LjAxLS4zNi4wNy0uODUuNS0uODUgMS4zIDAgMyAyLjIzIDMgNC41ek01IDExYzAgLjgxLjEgMS41My4yNSAyLjIxLjE4LS42OS40Ni0xLjMzLjgzLTEuOTJhMy43NyAzLjc3IDAgMCAxLS4zNC0xLjU0QTMuNzY2IDMuNzY2IDAgMCAxIDkuNSA2Yy45NiAwIDEuODQuMzcgMi41Ljk3LjY2LS42IDEuNTQtLjk3IDIuNS0uOTcgMi4wNyAwIDMuNzUgMS42OCAzLjc1IDMuNzUgMCAuNTUtLjEyIDEuMDctLjM0IDEuNTQuMzcuNTkuNjYgMS4yNC44NCAxLjk0LjE1LS42OC4yNS0xLjQxLjI1LTIuMjMgMC0zLjg2LTMuMTQtNy03LTdzLTcgMy4xNC03IDd6bTEyLjk4IDQuMjljMC0uMS4wMi0uMTkuMDItLjI5IDAtMS4wMS0uMjYtMS45NS0uNy0yLjc4LS42OS43OC0xLjY4IDEuMjgtMi44IDEuMjgtLjI3IDAtLjU0LS4wMy0uNzktLjA5LjE0LS4yMy4yMy0uNDkuMjctLjc3LjAxLS4wNy4wMS0uMTMuMDItLjE5LjE3LjAzLjMzLjA1LjUuMDUgMS41MiAwIDIuNzUtMS4yMyAyLjc1LTIuNzVTMTYuMDIgNyAxNC41IDdjLS42NyAwLTEuMzIuMjUtMS44My43MmwtLjY3LjYtLjY3LS42QzEwLjgyIDcuMjUgMTAuMTcgNyA5LjUgNyA3Ljk4IDcgNi43NSA4LjIzIDYuNzUgOS43NWMwIDEuMzQuOTYgMi40NiAyLjIzIDIuN2wtLjc2LjgzYy0uNi0uMjItMS4xMi0uNTktMS41My0xLjA1QTYuMDEgNi4wMSAwIDAgMCA2IDE1YzAgLjA4LjAxLjE1LjAxLjI0QzcuMTMgMTcuMDYgOS4xNCAxOCAxMiAxOGMyLjg4IDAgNC44OC0uOTEgNS45OC0yLjcxek0xNiA5Ljc1YzAgLjk3LS42NyAxLjc1LTEuNSAxLjc1UzEzIDEwLjcyIDEzIDkuNzUgMTMuNjcgOCAxNC41IDhzMS41Ljc4IDEuNSAxLjc1em0tLjc1LS44N2MwLS4yMS0uMTctLjM4LS4zOC0uMzhzLS4zNy4xNy0uMzcuMzguMTcuMzguMzguMzguMzctLjE4LjM3LS4zOHpNMTEgOS43NWMwIC45Ny0uNjcgMS43NS0xLjUgMS43NVM4IDEwLjcyIDggOS43NSA4LjY3IDggOS41IDhzMS41Ljc4IDEuNSAxLjc1em0tLjc1LS44N2MwLS4yMS0uMTctLjM4LS4zOC0uMzhzLS4zNy4xNy0uMzcuMzguMTcuMzguMzguMzguMzctLjE4LjM3LS4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZyZWVDYW5jZWxsYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yMSAyMEg1VjEwaDE0djQuMzhsMi0yVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGEyIDIgMCAwIDAgMiAyaDguMjFsLTItMnpNNSA2aDE0djJINVY2em0xMS41NCAxNi41TDEzIDE4Ljk2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0IDEuNDEgMS40MS01LjY0IDUuNjZ6TTEwLjQxIDE0IDEyIDE1LjU5IDEwLjU5IDE3IDkgMTUuNDEgNy40MSAxNyA2IDE1LjU5IDcuNTkgMTQgNiAxMi40MSA3LjQxIDExIDkgMTIuNTkgMTAuNTkgMTEgMTIgMTIuNDEgMTAuNDEgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHVHJhbnNsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC05LjEyTDEwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTNjMCAxLjEuOSAyIDIgMmg3bDEgM2g4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6TTcuMTcgMTQuNTljLTIuMjUgMC00LjA5LTEuODMtNC4wOS00LjA5czEuODMtNC4wOSA0LjA5LTQuMDljMS4wNCAwIDEuOTkuMzcgMi43NCAxLjA3bC4wNy4wNi0xLjIzIDEuMTgtLjA2LS4wNWMtLjI5LS4yNy0uNzgtLjU5LTEuNTItLjU5LTEuMzEgMC0yLjM4IDEuMDktMi4zOCAyLjQyczEuMDcgMi40MiAyLjM4IDIuNDJjMS4zNyAwIDEuOTYtLjg3IDIuMTItMS40Nkg3LjA4VjkuOTFoMy45NWwuMDEuMDdjLjA0LjIxLjA1LjQuMDUuNjEgMCAyLjM1LTEuNjEgNC0zLjkyIDR6bTYuMDMtMS43MWMuMzMuNi43NCAxLjE4IDEuMTkgMS43bC0uNTQuNTMtLjY1LTIuMjN6bS43Ny0uNzZoLS45OWwtLjMxLTEuMDRoMy45OXMtLjM0IDEuMzEtMS41NiAyLjc0Yy0uNTItLjYyLS44OS0xLjIzLTEuMTMtMS43ek0yMSAyMGMwIC41NS0uNDUgMS0xIDFoLTdsMi0yLS44MS0yLjc3LjkyLS45MkwxNy43OSAxOGwuNzMtLjczLTIuNzEtMi42OGMuOS0xLjAzIDEuNi0yLjI1IDEuOTItMy41MUgxOXYtMS4wNGgtMy42NFY5aC0xLjA0djEuMDRoLTEuOTZMMTEuMTggNkgyMGMuNTUgMCAxIC40NSAxIDF2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHYXZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyMWgxMnYySDF2LTJ6TTUuMjQgOC4wN2wyLjgzLTIuODMgMTQuMTQgMTQuMTQtMi44MyAyLjgzTDUuMjQgOC4wN3pNMTIuMzIgMWw1LjY2IDUuNjYtMi44MyAyLjgzLTUuNjYtNS42NkwxMi4zMiAxek0zLjgzIDkuNDhsNS42NiA1LjY2LTIuODMgMi44M0wxIDEyLjMxbDIuODMtMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdlbmVyYXRpbmdUb2tlbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMy03LjVoLTJ2NUg4di01SDZWOWg2djEuNXptOC4yNS02Ljc1TDIzIDVsLTIuNzUgMS4yNUwxOSA5bC0xLjI1LTIuNzVMMTUgNWwyLjc1LTEuMjVMMTkgMWwxLjI1IDIuNzV6bTAgMTRMMjMgMTlsLTIuNzUgMS4yNUwxOSAyM2wtMS4yNS0yLjc1TDE1IDE5bDIuNzUtMS4yNUwxOSAxNWwxLjI1IDIuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHZXRBcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDV2NmgxLjE3TDEyIDEzLjE3IDkuODMgMTFIMTFWNWgybTItMkg5djZINWw3IDcgNy03aC00VjN6bTQgMTVINXYyaDE0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2lmQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDE0djE0ek01IDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMkg1em02LjUgMTFoMXYtNGgtMXY0em0yIDBoMXYtMS41SDE2di0xaC0xLjVWMTFoMnYtMWgtM3Y0em0tNC0ydjFoLTF2LTJoMmMwLS41NS0uNDUtMS0xLTFoLTFjLS41NSAwLTEgLjQ1LTEgMXYyYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2lmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDlIMTN2NmgtMS41Vjl6TTkgOUg2Yy0uNiAwLTEgLjUtMSAxdjRjMCAuNS40IDEgMSAxaDNjLjYgMCAxLS41IDEtMXYtMkg4LjV2MS41aC0ydi0zSDEwVjEwYzAtLjUtLjQtMS0xLTF6bTEwIDEuNVY5aC00LjV2NkgxNnYtMmgydi0xLjVoLTJ2LTFoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA3LjEzLjk3IDIuMjkuNDcgMS4xMSAxLjIuMSAyLjQ3LjIxLTEuODggMS42My0uOTEuNzkuMjcgMS4xOC41NiAyLjQxLTIuMTItMS4yOC0xLjAzLS42NC0xLjAzLjYyLTIuMTIgMS4yOC41Ni0yLjQxLjI3LTEuMTgtLjkxLS43OS0xLjg4LTEuNjMgMi40Ny0uMjEgMS4yLS4xLjQ3LTEuMTEuOTctMi4yN00xMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjQtNy4wM0wyMiA5LjI0bC03LjE5LS42MUwxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JhZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgN2gxNnYySDRWN3ptMCA2aDE2di0ySDR2MnptMCA0aDd2LTJINHYyem0wIDRoN3YtMkg0djJ6bTExLjQxLTIuODNMMTQgMTYuNzVsLTEuNDEgMS40MUwxNS40MSAyMSAyMCAxNi40MiAxOC41OCAxNWwtMy4xNyAzLjE3ek00IDN2MmgxNlYzSDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cFdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlbHBDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4yNSAxNi43NGMwIC42OS0uNTMgMS4yNi0xLjI1IDEuMjYtLjcgMC0xLjI2LS41Ni0xLjI2LTEuMjYgMC0uNzEuNTYtMS4yNSAxLjI2LTEuMjUuNzEgMCAxLjI1LjU1IDEuMjUgMS4yNXpNMTEuOTkgNmMtMS43NyAwLTIuOTggMS4xNS0zLjQzIDIuNDlsMS42NC42OWMuMjItLjY3Ljc0LTEuNDggMS44LTEuNDggMS42MiAwIDEuOTQgMS41MiAxLjM3IDIuMzMtLjU0Ljc3LTEuNDcgMS4yOS0xLjk2IDIuMTYtLjM5LjY5LS4zMSAxLjQ5LS4zMSAxLjk4aDEuODJjMC0uOTMuMDctMS4xMi4yMi0xLjQxLjM5LS43MiAxLjExLTEuMDYgMS44Ny0yLjE3LjY4LTEgLjQyLTIuMzYtLjAyLTMuMDgtLjUxLS44NC0xLjUyLTEuNTEtMy0xLjUxek0xOSA1SDV2MTRoMTRWNW0wLTJjMS4xIDAgMiAuOSAyIDJ2MTRjMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJWNWMwLTEuMS45LTIgMi0yaDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVscE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWxwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE3aC0ydi0yaDJ2MnptMi4wNy03Ljc1LS45LjkyQzEzLjQ1IDEyLjkgMTMgMTMuNSAxMyAxNWgtMnYtLjVjMC0xLjEuNDUtMi4xIDEuMTctMi44M2wxLjI0LTEuMjZjLjM3LS4zNi41OS0uODYuNTktMS40MSAwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJIOGMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgLjg4LS4zNiAxLjY4LS45MyAyLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlkZVNvdXJjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmwyLjI3IDIuMjdBOS45MSA5LjkxIDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4wNCAwIDMuOTMtLjYxIDUuNTEtMS42NmwyLjI3IDIuMjcgMS40MS0xLjQxTDIuODEgMi44MXpNMTIgMjBjLTQuNDEgMC04LTMuNTktOC04IDAtMS40OC40MS0yLjg2IDEuMTItNC4wNmwxMC45NCAxMC45NEMxNC44NiAxOS41OSAxMy40OCAyMCAxMiAyMHpNNy45NCA1LjEyIDYuNDkgMy42NkE5LjkxIDkuOTEgMCAwIDEgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMCAwIDIuMDQtLjYxIDMuOTMtMS42NiA1LjUxbC0xLjQ2LTEuNDZBNy44NjkgNy44NjkgMCAwIDAgMjAgMTJjMC00LjQxLTMuNTktOC04LTgtMS40OCAwLTIuODYuNDEtNC4wNiAxLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlnaGxpZ2h0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNWgtMlYzaDJ2MnptLTIgMTB2NmwyLjI5LTIuMjkgMi4zIDIuMjlMMjEgMTkuNTlsLTIuMjktMi4yOUwyMSAxNWgtNnptNC02aDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyem0tOCA4aDJ2LTJoLTJ2MnpNNyA1aDJWM0g3djJ6TTMgMTdoMnYtMkgzdjJ6bTIgNHYtMkgzYzAgMS4xLjkgMiAyIDJ6TTE5IDN2MmgyYzAtMS4xLS45LTItMi0yem0tOCAyaDJWM2gtMnYyek0zIDloMlY3SDN2MnptNCAxMmgydi0ySDd2MnptLTQtOGgydi0ySDN2MnptMC04aDJWM2MtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaWdobGlnaHRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDggMTIgMTAuNTkgOS40MSA4IDggOS40MSAxMC41OSAxMiA4IDE0LjU5IDkuNDEgMTYgMTIgMTMuNDEgMTQuNTkgMTYgMTYgMTQuNTkgMTMuNDEgMTIgMTYgOS40MSAxNC41OSA4ek0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpc3RvcnlUb2dnbGVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS4xIDE5LjM3IDEgMS43NGMtLjk2LjQ0LTIuMDEuNzMtMy4xLjg0di0yLjAyYy43NC0uMDkgMS40NC0uMjggMi4xLS41NnpNNC4wNyAxM0gyLjA1Yy4xMSAxLjEuNCAyLjE0Ljg0IDMuMWwxLjc0LTFjLS4yOC0uNjYtLjQ3LTEuMzYtLjU2LTIuMXpNMTUuMSA0LjYzbDEtMS43NGMtLjk2LS40NC0yLS43My0zLjEtLjg0djIuMDJjLjc0LjA5IDEuNDQuMjggMi4xLjU2ek0xOS45MyAxMWgyLjAyYy0uMTEtMS4xLS40LTIuMTQtLjg0LTMuMWwtMS43NCAxYy4yOC42Ni40NyAxLjM2LjU2IDIuMXpNOC45IDE5LjM3bC0xIDEuNzRjLjk2LjQ0IDIuMDEuNzMgMy4xLjg0di0yLjAyYy0uNzQtLjA5LTEuNDQtLjI4LTIuMS0uNTZ6TTExIDQuMDdWMi4wNWMtMS4xLjExLTIuMTQuNC0zLjEuODRsMSAxLjc0Yy42Ni0uMjggMS4zNi0uNDcgMi4xLS41NnptNy4zNiAzLjEgMS43NC0xLjAxYy0uNjMtLjg3LTEuNC0xLjY0LTIuMjctMi4yN2wtMS4wMSAxLjc0Yy41OS40NSAxLjEuOTYgMS41NCAxLjU0ek00LjYzIDguOWwtMS43NC0xYy0uNDQuOTYtLjczIDItLjg0IDMuMWgyLjAyYy4wOS0uNzQuMjgtMS40NC41Ni0yLjF6bTE1LjMgNC4xYy0uMDkuNzQtLjI4IDEuNDQtLjU2IDIuMWwxLjc0IDFjLjQ0LS45Ni43My0yLjAxLjg0LTMuMWgtMi4wMnptLTMuMSA1LjM2IDEuMDEgMS43NGMuODctLjYzIDEuNjQtMS40IDIuMjctMi4yN2wtMS43NC0xLjAxYy0uNDUuNTktLjk2IDEuMS0xLjU0IDEuNTR6TTcuMTcgNS42NGwtMS0xLjc1Yy0uODguNjQtMS42NCAxLjQtMi4yNyAyLjI4bDEuNzQgMS4wMWE3LjcgNy43IDAgMCAxIDEuNTMtMS41NHpNNS42NCAxNi44M2wtMS43NCAxYy42My44NyAxLjQgMS42NCAyLjI3IDIuMjdsMS4wMS0xLjc0YTcuNyA3LjcgMCAwIDEtMS41NC0xLjUzek0xMyA3aC0ydjUuNDFsNC4yOSA0LjI5IDEuNDEtMS40MS0zLjctMy43Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYTkgOSAwIDAgMC05IDlIMWwzLjg5IDMuODkuMDcuMTRMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQTguOTU0IDguOTU0IDAgMCAwIDEzIDIxYTkgOSAwIDAgMCAwLTE4em0tMSA1djVsNC4yNSAyLjUyLjc3LTEuMjgtMy41Mi0yLjA5Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIbHNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44MyAxNWgxLjY3Yy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUgxN3YtMWgydi41aDEuNXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFIMTl2MWgtMlYxM2gtMS4xN2wyIDJ6TTggMTAuODNWMTVINi41di0yLjVoLTJWMTVIM1Y5aDEuNXYyaDJWOS4zM0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxLTcuNi03LjZIMTB2LTIuMTdsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA5SDh2Nkg2LjV2LTIuNWgtMlYxNUgzVjloMS41djJoMlY5em0xMCA2aDNjLjU1IDAgMS0uNDUgMS0xdi0xLjVjMC0uNTUtLjQ1LTEtMS0xSDE3di0xaDJ2LjVoMS41di0xYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdjEuNWMwIC41NS40NSAxIDEgMUgxOXYxaC0yVjEzaC0xLjV2MWMwIC41NS40NSAxIDEgMXpNMTQgMTV2LTEuNWgtMi41VjlIMTB2Nmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNS42OSA1IDQuNVYxOGgtMnYtNkg5djZIN3YtNy44MWw1LTQuNU0xMiAzIDIgMTJoM3Y4aDZ2LTZoMnY2aDZ2LThoM0wxMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG9yaXpvbnRhbFNwbGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNXYySDV2LTJoMTRtMi0xMEgzdjJoMThWNXptMCA0SDN2MmgxOFY5em0wIDRIM3Y2aDE4di02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG90ZWxDbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDguODkuOTQgMy4xMWgyLjgybC0yLjI3IDEuNjIuOTMgMy4wMUwxMSAxNC43OWwtMi40MiAxLjg0LjkzLTMuMDFMNy4yNCAxMmgyLjgyTDExIDguODl6TTguNTggMTBIMWw2LjE3IDQuNDFMNC44MyAyMiAxMSAxNy4zMSAxNy4xOCAyMmwtMi4zNS03LjU5TDIxIDEwaC03LjU4TDExIDJsLTIuNDIgOHptMTIuNzggMTItMS44Ni02LjAxTDIzLjY4IDEzaC0zLjQ0bC0zLjA4IDIuMiAxLjQ2IDQuNzJMMjEuMzYgMjJ6TTE3IDhsLTEuODItNi0xLjA0IDMuNDUuNzcgMi41NUgxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXJnbGFzc0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA0aDh2My41bC0yLjg0IDIuODQgMS4yNSAxLjI1TDE4IDguMDEgMTcuOTkgOEgxOFYySDZ2MS4xN2wyIDJ6TTIuMSAyLjEuNjkgMy41MWw4LjkgOC45TDYgMTZsLjAxLjAxSDZWMjJoMTJ2LTEuMTdsMi40OSAyLjQ5IDEuNDEtMS40MUwyLjEgMi4xek0xNiAyMEg4di0zLjVsMi44NC0yLjg0TDE2IDE4LjgzVjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91cmdsYXNzRW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMnY2aC4wMUw2IDguMDEgMTAgMTJsLTQgNCAuMDEuMDFINlYyMmgxMnYtNS45OWgtLjAxTDE4IDE2bC00LTQgNC0zLjk5LS4wMS0uMDFIMThWMkg2em0xMCAxNC41VjIwSDh2LTMuNWw0LTQgNCA0em0tNC01LTQtNFY0aDh2My41bC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3VyZ2xhc3NGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDJ2NmguMDFMNiA4LjAxIDEwIDEybC00IDQgLjAxLjAxSDZWMjJoMTJ2LTUuOTloLS4wMUwxOCAxNmwtNC00IDQtMy45OS0uMDEtLjAxSDE4VjJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUh0bWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgOUg1djZIMy41di0yLjVoLTJWMTVIMFY5aDEuNXYyaDJWOXptMTQgMEgxM2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41di00LjVoMVYxNEgxNnYtMy41MWgxVjE1aDEuNXYtNWMwLS41NS0uNDUtMS0xLTF6TTExIDlINnYxLjVoMS43NVYxNWgxLjV2LTQuNUgxMVY5em0xMyA2di0xLjVoLTIuNVY5SDIwdjZoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUh0dHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHYyNHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUgMTFoLTJWOUgxdjZoMS41di0yLjVoMlYxNUg2VjlINC41djJ6bTIuNS0uNWgxLjVWMTVIMTB2LTQuNWgxLjVWOUg3djEuNXptNS41IDBIMTRWMTVoMS41di00LjVIMTdWOWgtNC41djEuNXptOS0xLjVIMTh2NmgxLjV2LTJoMmMuOCAwIDEuNS0uNyAxLjUtMS41di0xYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgMi41aC0ydi0xaDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUh0dHBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6TTkgNmMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzdjJIOVY2em05IDE0SDZWMTBoMTJ2MTB6bS02LTNjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW1wb3J0YW50RGV2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTEuMDEgMTggMTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xdi05YzAtLjU1LS40NS0uOTktMS0uOTl6TTIzIDIwaC01di03aDV2N3pNMjAgMkgyQy44OSAyIDAgMi44OSAwIDR2MTJhMiAyIDAgMCAwIDIgMmg3djJIN3YyaDh2LTJoLTJ2LTJoMnYtMkgyVjRoMTh2NWgyVjRhMiAyIDAgMCAwLTItMnptLTguMDMgN0wxMSA2bC0uOTcgM0g3bDIuNDcgMS43Ni0uOTQgMi45MSAyLjQ3LTEuOCAyLjQ3IDEuOC0uOTQtMi45MUwxNSA5aC0zLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5mbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjJoLTJ6bTAgNGgydjZoLTJ6bTEtOUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnB1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzLjAxSDNjLTEuMSAwLTIgLjktMiAyVjloMlY0Ljk5aDE4djE0LjAzSDNWMTVIMXY0LjAxYzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4di0xNGEyIDIgMCAwIDAtMi0yek0xMSAxNmw0LTQtNC00djNIMXYyaDEwdjN6TTIxIDMuMDFIM2MtMS4xIDAtMiAuOS0yIDJWOWgyVjQuOTloMTh2MTQuMDNIM1YxNUgxdjQuMDFjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOTh2LTE0YTIgMiAwIDAgMC0yLTJ6TTExIDE2bDQtNC00LTR2M0gxdjJoMTB2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc3RhbGxEZXNrdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTdINFY1aDhWM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMnYtM2gtMnYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyAxNCA1LTUtMS40MS0xLjQxTDE4IDEwLjE3VjNoLTJ2Ny4xN2wtMi41OS0yLjU4TDEyIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnN0YWxsTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMThIN1Y2aDdWNEg3VjNoN1YxLjAxTDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNWgtMnYyem0wIDNIN3YtMWgxMHYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxNCA1LTUtMS40MS0xLjQxTDE5IDEwLjE3VjNoLTJ2Ny4xN2wtMi41OS0yLjU4TDEzIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnRlZ3JhdGlvbkluc3RydWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIzLjVcIixcInJcIjpcIi43NVwiLFwiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIuNzVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNNSAxNXY0aDE0VjVINXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTQuMTcgOC44MyAxMiAxMSA5LjgzIDkuNTkgOC40MSA2IDEybDMuNTkgMy41OXpNMTQuNDEgMTUuNTkgMTggMTJsLTMuNTktMy41OUwxMyA5LjgzIDE1LjE3IDEyIDEzIDE0LjE3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0uMTQgMC0uMjcuMDEtLjQuMDRhMi4wMDggMi4wMDggMCAwIDAtMS40NCAxLjE5Yy0uMS4yMy0uMTYuNDktLjE2Ljc3djE0YzAgLjI3LjA2LjU0LjE2Ljc4cy4yNS40NS40My42NGMuMjcuMjcuNjIuNDcgMS4wMS41NS4xMy4wMi4yNi4wMy40LjAzaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03LS4yNWMuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzUtLjc1LS4zNC0uNzUtLjc1LjM0LS43NS43NS0uNzV6TTE5IDE1djRINVY1aDE0djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW52ZXJ0Q29sb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0LjgxVjE5Yy0zLjMxIDAtNi0yLjYzLTYtNS44NyAwLTEuNTYuNjItMy4wMyAxLjc1LTQuMTRMMTIgNC44MU0xMiAyIDYuMzUgNy41NkM0LjkgOC45OSA0IDEwLjk2IDQgMTMuMTMgNCAxNy40OCA3LjU4IDIxIDEyIDIxczgtMy41MiA4LTcuODdjMC0yLjE3LS45LTQuMTQtMi4zNS01LjU3TDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVKYXZhc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTR2LTFoMS41di41aDJ2LTFIMTNjLS41NSAwLTEtLjQ1LTEtMVYxMGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxaC0xLjV2LS41aC0ydjFIMTZjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMWgtM2MtLjU1IDAtMS0uNDUtMS0xek05IDl2NC41SDcuNXYtMUg2djFjMCAuODMuNjcgMS41IDEuNSAxLjVIOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVWOUg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSm9pbkZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEyYzAtLjk3LjIzLTQuMTYgMy4wMy02LjVDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtMi44LTIuMzQtMy4wMy01LjUzLTMuMDMtNi41ek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41IDIuOCAyLjM0IDMuMDMgNS41MyAzLjAzIDYuNSAwIC45Ny0uMjMgNC4xNi0zLjAzIDYuNS43OC4zMSAxLjYzLjUgMi41My41IDMuODYgMCA3LTMuMTQgNy03cy0zLjE0LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSm9pbklubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwicnhcIjpcIjNcIixcInJ5XCI6XCI1Ljc0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDQgMTYuODdjLS4zMy4wOC0uNjguMTMtMS4wNC4xMy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01Yy4zNiAwIC43MS4wNSAxLjA0LjEzLjM5LS41Ni44OC0xLjEyIDEuNDktMS42M0M5Ljc1IDUuMTkgOC45IDUgOCA1Yy0zLjg2IDAtNyAzLjE0LTcgN3MzLjE0IDcgNyA3Yy45IDAgMS43NS0uMTkgMi41My0uNS0uNjEtLjUxLTEuMS0xLjA3LTEuNDktMS42M3pNMTYgNWMtLjkgMC0xLjc1LjE5LTIuNTMuNS42MS41MSAxLjEgMS4wNyAxLjQ5IDEuNjMuMzMtLjA4LjY4LS4xMyAxLjA0LS4xMyAyLjc2IDAgNSAyLjI0IDUgNXMtMi4yNCA1LTUgNWMtLjM2IDAtLjcxLS4wNS0xLjA0LS4xMy0uMzkuNTYtLjg4IDEuMTItMS40OSAxLjYzLjc4LjMxIDEuNjMuNSAyLjUzLjUgMy44NiAwIDctMy4xNCA3LTdzLTMuMTQtNy03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVKb2luTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJ4XCI6XCIzXCIsXCJyeVwiOlwiNS43NFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTJjMC0uOTcuMjMtNC4xNiAzLjAzLTYuNUM5Ljc1IDUuMTkgOC45IDUgOCA1Yy0zLjg2IDAtNyAzLjE0LTcgN3MzLjE0IDcgNyA3Yy45IDAgMS43NS0uMTkgMi41My0uNS0yLjgtMi4zNC0zLjAzLTUuNTMtMy4wMy02LjV6TTE2IDVjLS45IDAtMS43NS4xOS0yLjUzLjUuNjEuNTEgMS4xIDEuMDcgMS40OSAxLjYzLjMzLS4wOC42OC0uMTMgMS4wNC0uMTMgMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDVjLS4zNiAwLS43MS0uMDUtMS4wNC0uMTMtLjM5LjU2LS44OCAxLjEyLTEuNDkgMS42My43OC4zMSAxLjYzLjUgMi41My41IDMuODYgMCA3LTMuMTQgNy03cy0zLjE0LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSm9pblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwicnhcIjpcIjNcIixcInJ5XCI6XCI1Ljc0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTJjMCAuOTctLjIzIDQuMTYtMy4wMyA2LjUuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN2MtLjkgMC0xLjc1LjE5LTIuNTMuNSAyLjggMi4zNCAzLjAzIDUuNTMgMy4wMyA2LjV6TTggMTljLjkgMCAxLjc1LS4xOSAyLjUzLS41LS42MS0uNTEtMS4xLTEuMDctMS40OS0xLjYzLS4zMy4wOC0uNjguMTMtMS4wNC4xMy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01Yy4zNiAwIC43MS4wNSAxLjA0LjEzLjM5LS41Ni44OC0xLjEyIDEuNDktMS42M0M5Ljc1IDUuMTkgOC45IDUgOCA1Yy0zLjg2IDAtNyAzLjE0LTcgN3MzLjE0IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFiZWxJbXBvcnRhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTguOTloMTFjLjY3IDAgMS4yNy0uMzIgMS42My0uODNMMjEgMTJsLTQuMzctNi4xNkMxNi4yNyA1LjMzIDE1LjY3IDUgMTUgNUg0bDUgNy01IDYuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYWJlbE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgNyAzLjU1IDUtMS42MyAyLjI5IDEuNDMgMS40M0wyMiAxMmwtNC4zNy02LjE2QzE3LjI3IDUuMzMgMTYuNjcgNSAxNiA1bC03LjM3LjAxIDIgMS45OUgxNnpNMiA0LjAzbDEuNTggMS41OEMzLjIyIDUuOTYgMyA2LjQ2IDMgN3YxMGMwIDEuMS45IDEuOTkgMiAxLjk5TDE2IDE5Yy4yOCAwIC41NS0uMDcuNzktLjE4TDE4Ljk3IDIxbDEuNDEtMS40MUwzLjQxIDIuNjIgMiA0LjAzek0xNC45NyAxN0g1VjcuMDNMMTQuOTcgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUw1IDUuMDFDMy45IDUuMDEgMyA1LjkgMyA3djEwYzAgMS4xLjkgMS45OSAyIDEuOTlMMTYgMTljLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjIgMTJsLTQuMzctNi4xNnpNMTYgMTdINVY3aDExbDMuNTUgNUwxNiAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhbmd1YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem02LjkzIDZoLTIuOTVhMTUuNjUgMTUuNjUgMCAwIDAtMS4zOC0zLjU2QTguMDMgOC4wMyAwIDAgMSAxOC45MiA4ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMnMuMDYgMS4zNC4xNCAySDQuMjZ6bS44MiAyaDIuOTVjLjMyIDEuMjUuNzggMi40NSAxLjM4IDMuNTZBNy45ODcgNy45ODcgMCAwIDEgNS4wOCAxNnptMi45NS04SDUuMDhhNy45ODcgNy45ODcgMCAwIDEgNC4zMy0zLjU2QTE1LjY1IDE1LjY1IDAgMCAwIDguMDMgOHpNMTIgMTkuOTZjLS44My0xLjItMS40OC0yLjUzLTEuOTEtMy45NmgzLjgyYy0uNDMgMS40My0xLjA4IDIuNzYtMS45MSAzLjk2ek0xNC4zNCAxNEg5LjY2Yy0uMDktLjY2LS4xNi0xLjMyLS4xNi0ycy4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAycy0uMDcgMS4zNC0uMTYgMnptLjI1IDUuNTZjLjYtMS4xMSAxLjA2LTIuMzEgMS4zOC0zLjU2aDIuOTVhOC4wMyA4LjAzIDAgMCAxLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTJzLS4wNi0xLjM0LS4xNC0yaDMuMzhjLjE2LjY0LjI2IDEuMzEuMjYgMnMtLjEgMS4zNi0uMjYgMmgtMy4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhdW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxlYWRlcmJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTFWM0g4djZIMnYxMmgyMFYxMWgtNnptLTYtNmg0djE0aC00VjV6bS02IDZoNHY4SDR2LTh6bTE2IDhoLTR2LTZoNHY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlnaHRidWxiQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE5Yy44MyAwIDEuNS0uNjcgMS41LTEuNWgtM2MwIC44My42NyAxLjUgMS41IDEuNXpNOSAxNWg2djEuNUg5ek0xMiA1Yy0yLjc2IDAtNSAyLjI0LTUgNSAwIDEuNjQuOCAzLjA5IDIuMDMgNGg1Ljk1QTQuOTg1IDQuOTg1IDAgMCAwIDE3IDEwYzAtMi43Ni0yLjI0LTUtNS01em0yLjQzIDcuNUg5LjU3QTMuNDczIDMuNDczIDAgMCAxIDguNSAxMGMwLTEuOTMgMS41Ny0zLjUgMy41LTMuNXMzLjUgMS41NyAzLjUgMy41YzAgLjk1LS4zOSAxLjg0LTEuMDcgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyMWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMUg5djF6bTMtMTlDOC4xNCAyIDUgNS4xNCA1IDljMCAyLjM4IDEuMTkgNC40NyAzIDUuNzRWMTdjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTF2LTIuMjZjMS44MS0xLjI3IDMtMy4zNiAzLTUuNzQgMC0zLjg2LTMuMTQtNy03LTd6bTIuODUgMTEuMS0uODUuNlYxNmgtNHYtMi4zbC0uODUtLjZBNC45OTcgNC45OTcgMCAwIDEgNyA5YzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVjMCAxLjYzLS44IDMuMTYtMi4xNSA0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaW5lU3R5bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE2aDV2LTJIM3Yyem02LjUgMGg1di0yaC01djJ6bTYuNSAwaDV2LTJoLTV2MnpNMyAyMGgydi0ySDN2MnptNCAwaDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyek0zIDEyaDh2LTJIM3Yyem0xMCAwaDh2LTJoLTh2MnpNMyA0djRoMThWNEgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGluZVdlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTdoMTh2LTJIM3Yyem0wIDNoMTh2LTFIM3Yxem0wLTdoMTh2LTNIM3Yzem0wLTl2NGgxOFY0SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119XX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTQgNGgxNHYtMkg3djJ6bTAgNGgxNHYtMkg3djJ6TTcgN3YyaDE0VjdIN3ptLTQgNmgydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0wLThoMlY3SDN2MnptNCA0aDE0di0ySDd2MnptMCA0aDE0di0ySDd2MnpNNyA3djJoMTRWN0g3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9ja0Nsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDIwVjEwaDEydjFjLjcgMCAxLjM3LjEgMiAuMjlWMTBjMC0xLjEtLjktMi0yLTJoLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2djJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmg2LjI2Yy0uNDItLjYtLjc1LTEuMjgtLjk3LTJINnpNOSA2YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDN2Mkg5VjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDE3LjUgMTguMlYxNWgxdjIuNzlsMS44NSAxLjg1LS43LjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9ja09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDhoLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2aDJjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM3YySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bTAgMTJINlYxMGgxMnYxMHptLTYtM2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NrUGVyc29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyMFYxMGgxMnYxYy43IDAgMS4zNy4xIDIgLjI5VjEwYzAtMS4xLS45LTItMi0yaC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoNi4yNmMtLjQyLS42LS43NS0xLjI4LS45Ny0ySDZ6TTkgNmMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzdjJIOVY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTAgMmMuODMgMCAxLjUuNjcgMS41IDEuNVMxOC44MyAxOCAxOCAxOHMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41em0wIDZjLTEuMDMgMC0xLjk0LS41Mi0yLjQ4LTEuMzIuNzMtLjQyIDEuNTctLjY4IDIuNDgtLjY4czEuNzUuMjYgMi40OC42OGMtLjU0LjgtMS40NSAxLjMyLTIuNDggMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2tSZXNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNhOSA5IDAgMCAwLTkgOWMwIC4wNi4wMS4xMi4wMS4xOWwtMS44NC0xLjg0LTEuNDEgMS40MUw1IDE2bDQuMjQtNC4yNC0xLjQxLTEuNDEtMS44MiAxLjgyYzAtLjA2LS4wMS0uMTEtLjAxLS4xNyAwLTMuODYgMy4xNC03IDctN3M3IDMuMTQgNyA3LTMuMTQgNy03IDdjLTEuOSAwLTMuNjItLjc2LTQuODgtMS45OUw2LjcgMTguNDJBOC45ODIgOC45ODIgMCAwIDAgMTMgMjFhOSA5IDAgMCAwIDAtMTh6bTIgOHYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6TTkgNmMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzdjJIOVY2em05IDE0SDZWMTBoMTJ2MTB6bS02LTNjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9naW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3IDkuNiA4LjRsMi42IDIuNkgydjJoMTAuMmwtMi42IDIuNkwxMSAxN2w1LTUtNS01em05IDEyaC04djJoOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yaC04djJoOHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvZ291dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgOC0xLjQxIDEuNDFMMTcuMTcgMTFIOXYyaDguMTdsLTEuNTggMS41OEwxNyAxNmw0LTQtNC00ek01IDVoN1YzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoN3YtMkg1VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb3lhbHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS40MSAxMS41OC05LTlDMTIuMDUgMi4yMiAxMS41NSAyIDExIDJINGMtMS4xIDAtMiAuOS0yIDJ2N2MwIC41NS4yMiAxLjA1LjU5IDEuNDJsOSA5Yy4zNi4zNi44Ni41OCAxLjQxLjU4czEuMDUtLjIyIDEuNDEtLjU5bDctN2MuMzctLjM2LjU5LS44Ni41OS0xLjQxcy0uMjMtMS4wNi0uNTktMS40MnpNMTMgMjAuMDEgNCAxMVY0aDd2LS4wMWw5IDktNyA3LjAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguOSAxMi41NWMwIC41Ny4yMyAxLjA3LjYgMS40NWwzLjUgMy41IDMuNS0zLjVhMi4wNTMgMi4wNTMgMCAwIDAtMi45LTIuOWwtLjYuNi0uNi0uNTljLS4zNy0uMzgtLjg5LS42MS0xLjQ1LS42MS0xLjEzIDAtMi4wNS45Mi0yLjA1IDIuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYW5hZ2VBY2NvdW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOHYtLjY1YzAtLjM0LjE2LS42Ni40MS0uODFDNi4xIDE1LjUzIDguMDMgMTUgMTAgMTVjLjAzIDAgLjA1IDAgLjA4LjAxLjEtLjcuMy0xLjM3LjU5LTEuOTgtLjIyLS4wMi0uNDQtLjAzLS42Ny0uMDMtMi40MiAwLTQuNjguNjctNi42MSAxLjgyLS44OC41Mi0xLjM5IDEuNS0xLjM5IDIuNTNWMjBoOS4yNmMtLjQyLS42LS43NS0xLjI4LS45Ny0ySDR6TTEwIDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpNMjAuNzUgMTZjMC0uMjItLjAzLS40Mi0uMDYtLjYzbDEuMTQtMS4wMS0xLTEuNzMtMS40NS40OWMtLjMyLS4yNy0uNjgtLjQ4LTEuMDgtLjYzTDE4IDExaC0ybC0uMyAxLjQ5Yy0uNC4xNS0uNzYuMzYtMS4wOC42M2wtMS40NS0uNDktMSAxLjczIDEuMTQgMS4wMWMtLjAzLjIxLS4wNi40MS0uMDYuNjNzLjAzLjQyLjA2LjYzbC0xLjE0IDEuMDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE2IDIxaDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMS4wMWMuMDMtLjIxLjA2LS40MS4wNi0uNjN6TTE3IDE4Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hbmFnZUhpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMi42OSAxOC4zNyAxLjE0LTEtMS0xLjczLTEuNDUuNDljLS4zMi0uMjctLjY4LS40OC0xLjA4LS42M0wyMCAxNGgtMmwtLjMgMS40OWMtLjQuMTUtLjc2LjM2LTEuMDguNjNsLTEuNDUtLjQ5LTEgMS43MyAxLjE0IDFjLS4wOC41LS4wOC43NiAwIDEuMjZsLTEuMTQgMSAxIDEuNzMgMS40NS0uNDljLjMyLjI3LjY4LjQ4IDEuMDguNjNMMTggMjRoMmwuMy0xLjQ5Yy40LS4xNS43Ni0uMzYgMS4wOC0uNjNsMS40NS40OSAxLTEuNzMtMS4xNC0xYy4wOC0uNTEuMDgtLjc3IDAtMS4yN3pNMTkgMjFjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyek0xMSA3djUuNDFsMi4zNiAyLjM2IDEuMDQtMS43OS0xLjQtMS4zOVY3aC0yem0xMCA1YTkgOSAwIDAgMC05LTlDOS4xNyAzIDYuNjUgNC4zMiA1IDYuMzZWNEgzdjZoNlY4SDYuMjZBNy4wMSA3LjAxIDAgMCAxIDEyIDVjMy44NiAwIDcgMy4xNCA3IDdoMnptLTEwLjE0IDYuOTFjLTIuOTktLjQ5LTUuMzUtMi45LTUuNzgtNS45MUgzLjA2Yy41IDQuNSA0LjMxIDggOC45NCA4aC4wN2wtMS4yMS0yLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya0FzVW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yMyA3aDIuNmMtLjA2LS40Ny0uMzYtLjk0LS43OS0xLjE3TDEwLjUgMiAyLjggNS44M2MtLjQ4LjI2LS44LjgxLS44IDEuMzRWMTVjMCAxLjEuOSAyIDIgMlY3LjRMMTAuNSA0bDUuNzMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOEg3Yy0xLjEgMC0yIC45LTIgMnY5YzAgMS4xLjkgMiAyIDJoMTNjMS4xIDAgMi0uOSAyLTJ2LTljMC0xLjEtLjktMi0yLTJ6bTAgMTFIN3YtN2w2LjUgMy4zM0wyMCAxMnY3em0tNi41LTUuNjdMNyAxMGgxM2wtNi41IDMuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXJrdW5yZWFkTWFpbGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZIMTB2MmgxMHYxMkg0VjhoMnY0aDJWNGg2VjBINnY2SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1heGltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDNoMTh2MkgzVjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZWRpYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxNiA0LTQtNC00djNoLTUuMDZBOC45NzQgOC45NzQgMCAwIDAgOCAzLjk1IDMuMDA1IDMuMDA1IDAgMCAwIDUgMUMzLjM0IDEgMiAyLjM0IDIgNHMxLjM0IDMgMyAzYy45NSAwIDEuNzgtLjQ1IDIuMzMtMS4xNEM5LjIzIDYuOSAxMC42IDguNzcgMTAuOTIgMTFoLTMuMUM3LjQgOS44NCA2LjMgOSA1IDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNjMS4zIDAgMi40LS44NCAyLjgyLTJoMy4xYy0uMzIgMi4yMy0xLjY5IDQuMS0zLjU4IDUuMTRDNi43OCAxNy40NSA1Ljk1IDE3IDUgMTdjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNhMi45OSAyLjk5IDAgMCAwIDIuOTktMi45NUE4Ljk3NCA4Ljk3NCAwIDAgMCAxMi45MyAxM0gxOHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTloMTJ2Mkg2di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9kZWxUcmFpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTMuNWMwIDItMi41IDMuNS0yLjUgNWgtMmMwLTEuNS0yLjUtMy0yLjUtNSAwLTEuOTMgMS41Ny0zLjUgMy41LTMuNXMzLjUgMS41NyAzLjUgMy41em0tMi41IDZoLTJWMjFoMnYtMS41em02LTYuNWMwIDEuNjgtLjU5IDMuMjEtMS41OCA0LjQybDEuNDIgMS40MmE4Ljk3OCA4Ljk3OCAwIDAgMC0xLTEyLjY4bC0xLjQyIDEuNDJBNi45OTMgNi45OTMgMCAwIDEgMTkgMTN6bS0zLTgtNC00djNhOSA5IDAgMCAwLTkgOWMwIDIuMjMuODIgNC4yNyAyLjE2IDUuODRsMS40Mi0xLjQyQTYuOTM4IDYuOTM4IDAgMCAxIDUgMTNjMC0zLjg2IDMuMTQtNyA3LTd2M2w0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXR3b3JrUGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0LjY3IDMuNDEgNi4wOSAyIDcuNWw4LjUgOC41SDR2MmgxNnYtMmgtNi41bDUuMTUtNS4xNUEyLjUgMi41IDAgMSAwIDE5LjUgNiAyLjUgMi41IDAgMCAwIDE3IDguNWMwIC4zNS4wNy42Ny4yLjk3bC01LjIgNS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV3TGFiZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxMi00LjM3IDYuMTZjLS4zNy41Mi0uOTguODQtMS42My44NGgtM3YtMmgzbDMuNTUtNUwxNSA3SDV2M0gzVjdjMC0xLjEuOS0yIDItMmgxMGMuNjUgMCAxLjI2LjMxIDEuNjMuODRMMjEgMTJ6bS0xMSAzSDd2LTNINXYzSDJ2MmgzdjNoMnYtM2gzdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV4dFBsYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuOTcgMTEuMDNDMTQuODcgOS43OSAxMy4yOCA5IDExLjUgOWMtMi44MiAwLTUuMTggMS45NS01LjgyIDQuNTZsLjk2LjMyQzcuMTUgMTEuNjYgOS4xMyAxMCAxMS41IDEwYzEuNTEgMCAyLjg1LjY4IDMuNzYgMS43NEwxMyAxNGg1VjlsLTIuMDMgMi4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5pZ2h0bGlnaHRSb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMjJjMS4wNSAwIDIuMDUtLjE2IDMtLjQ2LTQuMDYtMS4yNy03LTUuMDYtNy05LjU0czIuOTQtOC4yNyA3LTkuNTRjLS45NS0uMy0xLjk1LS40Ni0zLS40Ni01LjUyIDAtMTAgNC40OC0xMCAxMHM0LjQ4IDEwIDEwIDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9BY2NvdW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjE4IDEwLjk0Yy4yLS40NC4zMi0uOTIuMzItMS40NEMxNS41IDcuNTcgMTMuOTMgNiAxMiA2Yy0uNTIgMC0xIC4xMi0xLjQ0LjMybDQuNjIgNC42MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNCAxMmMwLTEuODUuNjMtMy41NSAxLjY5LTQuOWwyLjg2IDIuODZhMy40NyAzLjQ3IDAgMCAwIDIuOTkgMi45OWwyLjIgMi4yYy0uNTctLjEtMS4xNS0uMTUtMS43NC0uMTUtMi4zMiAwLTQuNDUuOC02LjE0IDIuMTJBNy45NTcgNy45NTcgMCAwIDEgNCAxMnptOCA4Yy0xLjc0IDAtMy4zNC0uNTYtNC42NS0xLjVDOC42NiAxNy41NiAxMC4yNiAxNyAxMiAxN3MzLjM0LjU2IDQuNjUgMS41Yy0xLjMxLjk0LTIuOTEgMS41LTQuNjUgMS41em02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NC0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vaXNlQXdhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNWgtMmExLjAwMyAxLjAwMyAwIDAgMS0xLjk1LjMyYy0uMTUtLjQ0LS40LTEuMDgtLjkzLTEuNjFsLTEuMzYtMS4zNkM5LjI4IDExLjg3IDkgMTEuMTkgOSAxMC41YTIuNSAyLjUgMCAwIDEgNC45NS0uNWgyLjAyYy0uMjUtMi4yNS0yLjE2LTQtNC40Ny00QzkuMDIgNiA3IDguMDIgNyAxMC41YzAgMS4yMi40OSAyLjQxIDEuMzUgMy4yN2wxLjM2IDEuMzZjLjE3LjE3LjMxLjQ0LjQ0LjgyQTMuMDEzIDMuMDEzIDAgMCAwIDEzIDE4YzEuNjUgMCAzLTEuMzUgMy0zelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzLjVcIixcImN5XCI6XCIxMi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy42IDYuNTggMS41OCAxLjI2Yy4zNS0uNTcuNzctMS4xIDEuMjQtMS41N0w0Ljg1IDUuMDJjLS40Ny40Ny0uODggMS0xLjI1IDEuNTZ6TTkuNDYgNC40MmwtLjg3LTEuODFjLS42My4yMy0xLjI0LjUyLTEuOC44N2wuODcgMS44MWMuNTYtLjM2IDEuMTYtLjY1IDEuOC0uODd6TTQuNDkgOS4yNmwtMS45Ni0uNDVjLS4yMS42My0uMzYgMS4yOC0uNDQgMS45NWwxLjk2LjQ1YTcuOSA3LjkgMCAwIDEgLjQ0LTEuOTV6TTIwLjQgNi41OGE5LjQgOS40IDAgMCAwLTEuMjUtMS41NmwtMS41OCAxLjI2Yy40OC40Ny44OS45OSAxLjI0IDEuNTdsMS41OS0xLjI3ek00LjA0IDEyLjc5bC0xLjk2LjQ1Yy4wOC42Ny4yMyAxLjMzLjQ0IDEuOTVsMS45Ny0uNDVjLS4yMi0uNjItLjM4LTEuMjctLjQ1LTEuOTV6TTE3LjIxIDMuNDhjLS41Ny0uMzUtMS4xNy0uNjQtMS44LS44N2wtLjg3IDEuODFjLjY0LjIyIDEuMjQuNTEgMS44Ljg3bC44Ny0xLjgxek0xMyA0LjA3VjIuMDVjLS4zMy0uMDMtLjY2LS4wNS0xLS4wNXMtLjY3LjAyLTEgLjA1djIuMDJjLjMzLS4wNC42Ni0uMDcgMS0uMDdzLjY3LjAzIDEgLjA3ek0xMSAxOS45M3YyLjAyYy4zMy4wMy42Ni4wNSAxIC4wNXMuNjctLjAyIDEtLjA1di0yLjAyYy0uMzMuMDQtLjY2LjA3LTEgLjA3cy0uNjctLjAzLTEtLjA3ek0xOS41MSAxNC43NGwxLjk3LjQ1Yy4yMS0uNjMuMzYtMS4yOC40NC0xLjk1bC0xLjk2LS40NWMtLjA3LjY4LS4yMyAxLjMzLS40NSAxLjk1ek0xOS45NiAxMS4yMWwxLjk2LS40NWE5LjY5IDkuNjkgMCAwIDAtLjQ0LTEuOTVsLTEuOTcuNDVjLjIyLjYyLjM4IDEuMjcuNDUgMS45NXpNMTcuNTggMTcuNzNsMS41OCAxLjI2Yy40Ny0uNDguODgtMSAxLjI1LTEuNTZsLTEuNTgtMS4yNmE5LjQgOS40IDAgMCAxLTEuMjUgMS41NnpNNi43OSAyMC41MmMuNTcuMzUgMS4xNy42NCAxLjguODdsLjg3LTEuODFjLS42NC0uMjItMS4yNC0uNTEtMS44LS44N2wtLjg3IDEuODF6TTE0LjU0IDE5LjU4bC44NyAxLjgxYy42My0uMjMgMS4yNC0uNTIgMS44LS44N2wtLjg3LTEuODFjLS41Ni4zNi0xLjE2LjY1LTEuOC44N3pNMy42IDE3LjQyYTkuNCA5LjQgMCAwIDAgMS4yNSAxLjU2bDEuNTgtMS4yNmE3Ljg3IDcuODcgMCAwIDEtMS4yNC0xLjU3TDMuNiAxNy40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vaXNlQ29udHJvbE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjMS40NCAwIDIuNzkuMzggMy45NSAxLjA1TDE3LjQgMy42QzE1Ljg1IDIuNTkgMTMuOTkgMiAxMiAycy0zLjg1LjU5LTUuNDEgMS41OWwxLjQ1IDEuNDVBOC4wMzQgOC4wMzQgMCAwIDEgMTIgNHpNMjAgMTJjMCAxLjQ0LS4zOCAyLjc5LTEuMDUgMy45NWwxLjQ1IDEuNDVjMS4wMS0xLjU1IDEuNi0zLjQxIDEuNi01LjRzLS41OS0zLjg1LTEuNTktNS40MWwtMS40NSAxLjQ1QTguMDM0IDguMDM0IDAgMCAxIDIwIDEyek0xMiAyMGMtMS40NCAwLTIuNzktLjM4LTMuOTUtMS4wNUw2LjYgMjAuNEM4LjE1IDIxLjQxIDEwLjAxIDIyIDEyIDIyczMuODUtLjU5IDUuNDEtMS41OWwtMS40NS0xLjQ1QTguMDM0IDguMDM0IDAgMCAxIDEyIDIwek00IDEyYzAtMS40NC4zOC0yLjc5IDEuMDUtMy45NUwzLjU5IDYuNTlDMi41OSA4LjE1IDIgMTAuMDEgMiAxMnMuNTkgMy44NSAxLjU5IDUuNDFsMS40NS0xLjQ1QTguMDM0IDguMDM0IDAgMCAxIDQgMTJ6TTExLjUgNkM5LjAyIDYgNyA4LjAyIDcgMTAuNWMwIDEuMjIuNDkgMi40MSAxLjM1IDMuMjdsMS4zNiAxLjM2Yy4xNy4xNy4zMS40NC40NC44MkEzLjAxMyAzLjAxMyAwIDAgMCAxMyAxOGMxLjY1IDAgMy0xLjM1IDMtM2gtMmExLjAwMyAxLjAwMyAwIDAgMS0xLjk1LjMyYy0uMTUtLjQ0LS40LTEuMDgtLjkzLTEuNjFsLTEuMzYtMS4zNkM5LjI4IDExLjg3IDkgMTEuMTkgOSAxMC41YTIuNSAyLjUgMCAwIDEgNC45NS0uNWgyLjAyYy0uMjUtMi4yNS0yLjE2LTQtNC40Ny00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzLjVcIixcImN5XCI6XCIxMi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdEFjY2Vzc2libGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTkgOXYtMmMtMS41NC4wMi0zLjA5LS43NS00LjA3LTEuODNsLTEuMjktMS40M2MtLjI0LS4yNC0uNDQtLjM2LS42My0uNDYtLjM2LS4xOS0uNzItLjMtMS4yLS4yNi0uNDkuMDQtLjkxLjI3LTEuMjMuNjFMMTQgMTEuMDVjMS4yOSAxLjA3IDMuMjUgMS45NCA1IDEuOTV6bS05IDdjLTEuNjYgMC0zLTEuMzQtMy0zIDAtMS4zMS44NC0yLjQxIDItMi44M1YxMi4xYTUgNSAwIDEgMCA1LjkgNS45aC0yLjA3Yy0uNDEgMS4xNi0xLjUyIDItMi44MyAyek0yLjgxIDIuODEgMS4zOSA0LjIyIDEwIDEyLjgzVjE1YzAgMS4xLjkgMiAyIDJoMi4xN2w1LjYxIDUuNjEgMS40MS0xLjQxTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdFN0YXJ0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4cy0zLjU5IDgtOCA4LTgtMy41OS04LTggMy41OS04IDgtOG0wLTJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDZIOXY4aDJWOHptNiA0LTUtNHY4bDUtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGVBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6bTEtOUg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTQgMThINlY0aDd2NWg1djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT2ZmbGluZUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyLjAyYy01LjUxIDAtOS45OCA0LjQ3LTkuOTggOS45OHM0LjQ3IDkuOTggOS45OCA5Ljk4IDkuOTgtNC40NyA5Ljk4LTkuOThTMTcuNTEgMi4wMiAxMiAyLjAyem0wIDE3Ljk2Yy00LjQgMC03Ljk4LTMuNTgtNy45OC03Ljk4UzcuNiA0LjAyIDEyIDQuMDIgMTkuOTggNy42IDE5Ljk4IDEyIDE2LjQgMTkuOTggMTIgMTkuOTh6TTEyLjc1IDVsLTQuNSA4LjVoMy4xNFYxOWw0LjM2LTguNWgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9mZmxpbmVQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bS01LTVoMTB2Mkg3em0zLjMtMy44TDguNCA5LjMgNyAxMC43bDMuMyAzLjNMMTcgNy4zbC0xLjQtMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT25EZXZpY2VUcmFpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE2aDJ2MWgtMnpNMTIgMTFjLTEuMSAwLTIgLjktMiAyIDAgLjc0LjQgMS4zOCAxIDEuNzJ2Ljc4aDJ2LS43OGMuNi0uMzUgMS0uOTggMS0xLjcyIDAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxLjAxIDYgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xOCAyMUg2di0xaDEydjF6bTAtM0g2VjZoMTJ2MTJ6bTAtMTRINlYzaDEydjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjAxIDE1Ljk1Yy42Mi0uODMuOTktMS44NC45OS0yLjk1cy0uMzctMi4xMi0uOTktMi45NWwtMS4wNyAxLjA3Yy4zNS41NC41NiAxLjE5LjU2IDEuODhzLS4yMSAxLjM0LS41NiAxLjg4bDEuMDcgMS4wN3pNOS4wNiAxNC44OGMtLjM1LS41NC0uNTYtMS4xOS0uNTYtMS44OCAwLTEuOTMgMS41Ny0zLjUgMy41LTMuNXYxLjI1bDIuMjUtMi0yLjI1LTJWOGMtMi43NiAwLTUgMi4yNC01IDUgMCAxLjExLjM3IDIuMTIuOTkgMi45NWwxLjA3LTEuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPbmxpbmVQcmVkaWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxMS41YzAgMi0yLjUgMy41LTIuNSA1aC0yYzAtMS41LTIuNS0zLTIuNS01QzguNSA5LjU3IDEwLjA3IDggMTIgOHMzLjUgMS41NyAzLjUgMy41em0tMi41IDZoLTJWMTloMnYtMS41em05LTUuNWMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN2wtMS4wNiAxLjA2QTguNDgxIDguNDgxIDAgMCAxIDIwLjUgMTJjMCAyLjM0LS45NSA0LjQ3LTIuNDkgNi4wMWwxLjA2IDEuMDZBOS45NjkgOS45NjkgMCAwIDAgMjIgMTJ6TTMuNSAxMmMwLTIuMzQuOTUtNC40NyAyLjQ5LTYuMDFMNC45MyA0LjkzQTkuOTY5IDkuOTY5IDAgMCAwIDIgMTJjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS4wNi0xLjA2QTguNDgxIDguNDgxIDAgMCAxIDMuNSAxMnptMTQgMGMwIDEuNTItLjYyIDIuODktMS42MSAzLjg5bDEuMDYgMS4wNkE2Ljk3NiA2Ljk3NiAwIDAgMCAxOSAxMmMwLTEuOTMtLjc4LTMuNjgtMi4wNS00Ljk1bC0xLjA2IDEuMDZjLjk5IDEgMS42MSAyLjM3IDEuNjEgMy44OXpNNy4wNSAxNi45NWwxLjA2LTEuMDZjLTEtMS0xLjYxLTIuMzctMS42MS0zLjg5cy42Mi0yLjg5IDEuNjEtMy44OUw3LjA1IDcuMDVBNi45NzYgNi45NzYgMCAwIDAgNSAxMmMwIDEuOTMuNzggMy42OCAyLjA1IDQuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPcGFjaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAwSDB2MjRoMjRWMHptMCAwSDB2MjRoMjRWMHpNMCAyNGgyNFYwSDB2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjY2IDggMTIgMi4zNSA2LjM0IDhBOC4wMiA4LjAyIDAgMCAwIDQgMTMuNjRjMCAyIC43OCA0LjExIDIuMzQgNS42N2E3Ljk5IDcuOTkgMCAwIDAgMTEuMzIgMGMxLjU2LTEuNTYgMi4zNC0zLjY3IDIuMzQtNS42N1MxOS4yMiA5LjU2IDE3LjY2IDh6TTYgMTRjLjAxLTIgLjYyLTMuMjcgMS43Ni00LjRMMTIgNS4yN2w0LjI0IDQuMzhDMTcuMzggMTAuNzcgMTcuOTkgMTIgMTggMTRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9wZW5JbkJyb3dzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYtMkg1VjhoMTR2MTBoLTR2Mmg0YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptLTcgNi00IDRoM3Y2aDJ2LTZoM2wtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3BlbkluRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExVjNoLThsMy4yOSAzLjI5LTEwIDEwTDMgMTN2OGg4bC0zLjI5LTMuMjkgMTAtMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPcGVuSW5OZXdPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43OSA1LjggMTQgM2g3djdsLTIuNzktMi44LTQuMDkgNC4wOS0xLjQxLTEuNDEgNC4wOC00LjA4ek0xOSAxMnY0LjE3bDIgMlYxMmgtMnptLjc4IDEwLjYxTDE4LjE3IDIxSDVhMiAyIDAgMCAxLTItMlY1LjgzTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnpNMTYuMTcgMTlsLTQuODgtNC44OC0xLjU5IDEuNTktMS40MS0xLjQxIDEuNTktMS41OUw1IDcuODNWMTloMTEuMTd6TTcuODMgNUgxMlYzSDUuODNsMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3BlbkluTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoN1YzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3BlbldpdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDloNFY2aDNsLTUtNS01IDVoM3Yzem0tMSAxSDZWN2wtNSA1IDUgNXYtM2gzdi00em0xNCAyLTUtNXYzaC0zdjRoM3YzbDUtNXptLTkgM2gtNHYzSDdsNSA1IDUtNWgtM3YtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGJvbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4cy0zLjU5IDgtOCA4LTgtMy41OS04LTggMy41OS04IDgtOG0wLTJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEuODggOS41NEw4LjkyIDE2LjVsLTEuNDEtMS40MSA0Ljk2LTQuOTZMMTAuMzQgOGw1LjY1LjAxLjAxIDUuNjUtMi4xMi0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3V0Ym91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4cy0zLjU5IDgtOCA4LTgtMy41OS04LTggMy41OS04IDgtOG0wLTJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEuODggOS41NEw4LjkyIDE2LjVsLTEuNDEtMS40MSA0Ljk2LTQuOTZMMTAuMzQgOGw1LjY1LjAxLjAxIDUuNjUtMi4xMi0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3V0Ym94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOS44M1YxNGgyVjkuODNsMS41OSAxLjU4TDE2IDEwbC00LTQtNCA0IDEuNDEgMS40MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINXYtM2gzLjAyYy45MSAxLjIxIDIuMzUgMiAzLjk4IDJzMy4wNi0uNzkgMy45OC0ySDE5djN6bTAtNWgtNC4xOGMtLjQxIDEuMTYtMS41MSAyLTIuODIgMnMtMi40LS44NC0yLjgyLTJINVY1aDE0djl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPdXRsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4cy0zLjU5IDgtOCA4LTgtMy41OS04LTggMy41OS04IDgtOG0wLTJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDlWOGMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXptNiAwVjhjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMXMxLS40NSAxLTF6bS0yIDVjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjJoNHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dHB1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDE3IDUtNS01LTUtMS40MSAxLjQxTDE4LjE3IDExSDl2Mmg5LjE3bC0yLjU4IDIuNTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5SDVWNWgxNHYyaDJWNWEyIDIgMCAwIDAtMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRhMiAyIDAgMCAwIDItMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFnZXZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjQ5IDE2Yy44OCAwIDEuNy0uMjYgMi4zOS0uN2wyLjQ0IDIuNDQgMS40Mi0xLjQyLTIuNDQtMi40M2MuNDQtLjcuNy0xLjUxLjctMi4zOUMxNiA5LjAxIDEzLjk5IDcgMTEuNSA3UzcgOS4wMSA3IDExLjUgOS4wMSAxNiAxMS40OSAxNnptLjAxLTdhMi41IDIuNSAwIDAgMSAwIDUgMi41IDIuNSAwIDAgMSAwLTV6TTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLjg5LTguOWMtMS43OC0uNTktMi42NC0uOTYtMi42NC0xLjkgMC0xLjAyIDEuMTEtMS4zOSAxLjgxLTEuMzkgMS4zMSAwIDEuNzkuOTkgMS45IDEuMzRsMS41OC0uNjdjLS4xNS0uNDQtLjgyLTEuOTEtMi42Ni0yLjIzVjVoLTEuNzV2MS4yNmMtMi42LjU2LTIuNjIgMi44NS0yLjYyIDIuOTYgMCAyLjI3IDIuMjUgMi45MSAzLjM1IDMuMzEgMS41OC41NiAyLjI4IDEuMDcgMi4yOCAyLjAzIDAgMS4xMy0xLjA1IDEuNjEtMS45OCAxLjYxLTEuODIgMC0yLjM0LTEuODctMi40LTIuMDlsLTEuNjYuNjdjLjYzIDIuMTkgMi4yOCAyLjc4IDMuMDIgMi45NlYxOWgxLjc1di0xLjI0Yy41Mi0uMDkgMy4wMi0uNTkgMy4wMi0zLjIyLjAxLTEuMzktLjYtMi42MS0zLTMuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5Ub29sQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODkgMTEuNzctMy44LTEuNjdjLS4xMy0uMDYtLjI4LS4xLS40NC0uMUgxNFY1LjVhMi41IDIuNSAwIDAgMC01IDB2OC4xNWwtMS44Ny0uNGMtLjE5LS4wMy0xLjAyLS4xNS0xLjczLjU2TDQgMTUuMjJsNS4xMiA1LjE5Yy4zNy4zOC44OC41OSAxLjQxLjU5aDYuNTVjLjk4IDAgMS44MS0uNyAxLjk3LTEuNjdsLjkyLTUuNDRhMiAyIDAgMCAwLTEuMDgtMi4xMnpNMTcuMDggMTloLTYuNTVsLTMuNy0zLjc4IDQuMTcuODlWNS41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djYuMThoMS43NkwxOCAxMy41NiAxNy4wOCAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhblRvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyNGgtNi41NWMtMS4wOCAwLTIuMTQtLjQ1LTIuODktMS4yM2wtNy4zLTcuNjEgMi4wNy0xLjgzYy42Mi0uNTUgMS41My0uNjYgMi4yNi0uMjdMOCAxNC4zNFY0Ljc5YTIuNSAyLjUgMCAwIDEgMy4wMS0yLjQ1QzExLjEgMS4wNCAxMi4xOC4wMSAxMy41LjAxYy44NiAwIDEuNjEuNDMgMi4wNiAxLjA5LjI5LS4xMi42MS0uMTguOTQtLjE4YTIuNSAyLjUgMCAwIDEgMi41IDIuNXYuMjhhMi41IDIuNSAwIDAgMSAzIDIuNDVWMjBjMCAyLjIxLTEuNzkgNC00IDR6TTQuMTQgMTUuMjhsNS44NiA2LjFjLjM4LjM5LjkuNjIgMS40NC42MkgxOGMxLjEgMCAyLS45IDItMlY2LjE1YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNVYxMmgtMlYzLjQyYzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNVYxMmgtMlYyLjUxYzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNVYxMmgtMlY0Ljc5YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjMtLjUuNXYxMi44N2wtNS4zNS0yLjgzLS41MS40NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBheW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDR2LTZoMTZ2NnptMC0xMEg0VjZoMTZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlbmRpbmdBY3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0xLjY1IDcuMzVMMTYuNSAxNy4yVjE0aDF2Mi43OWwxLjg1IDEuODUtLjcuNzF6TTE4IDNoLTMuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDZjLTEuMSAwLTIgLjktMiAydjE1YzAgMS4xLjkgMiAyIDJoNi4xMWE2Ljc0MyA2Ljc0MyAwIDAgMS0xLjQyLTJINlY1aDJ2M2g4VjVoMnY1LjA4Yy43MS4xIDEuMzguMzEgMiAuNlY1YzAtMS4xLS45LTItMi0yem0tNiAyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZW5kaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiN1wiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxN1wiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcmNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgNEM1LjU3IDQgNCA1LjU3IDQgNy41UzUuNTcgMTEgNy41IDExIDExIDkuNDMgMTEgNy41IDkuNDMgNCA3LjUgNHptMCA1QzYuNjcgOSA2IDguMzMgNiA3LjVTNi42NyA2IDcuNSA2IDkgNi42NyA5IDcuNSA4LjMzIDkgNy41IDl6bTkgNGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNSAzLjUtMS41NyAzLjUtMy41LTEuNTctMy41LTMuNS0zLjV6bTAgNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTUuNDEgMjAgNCAxOC41OSAxOC41OSA0IDIwIDUuNDEgNS40MSAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcm1DYW1lcmFNaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjLTEuMSAwLTIgLjktMiAydjRjMCAxLjEuOSAyIDIgMnMyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem04LTFoLTMuMTdsLTEuODYtMkg4Ljk2TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRoLTd2LTEuMDljMi44My0uNDggNS0yLjk0IDUtNS45MWgtMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNEg2YzAgMi45NyAyLjE3IDUuNDMgNSA1LjkxVjE5SDRWN2g0LjIxbC41OS0uNjVMMTAuMDQgNWg0LjI0bDEuMjQgMS4zNS41OS42NUgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcm1Db250YWN0Q2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjg0IDQuMjJjLS4wNS0uMTItLjExLS4yMy0uMTgtLjM0LS4xNC0uMjEtLjMzLS40LS41NC0uNTQtLjExLS4wNy0uMjItLjEzLS4zNC0uMTgtLjI0LS4xLS41LS4xNi0uNzgtLjE2aC0xVjFoLTJ2Mkg4VjFINnYySDVjLS40MiAwLS44LjEzLTEuMTIuMzQtLjIxLjE0LS40LjMzLS41NC41NC0uMDcuMTEtLjEzLjIyLS4xOC4zNC0uMS4yNC0uMTYuNS0uMTYuNzh2MTRhMiAyIDAgMCAwIDIgMmgxNGMuMjggMCAuNTQtLjA2Ljc4LS4xNi4xMi0uMDUuMjMtLjExLjM0LS4xOC4yMS0uMTQuNC0uMzMuNTQtLjU0LjIxLS4zMi4zNC0uNzEuMzQtMS4xMlY1YzAtLjI4LS4wNi0uNTQtLjE2LS43OHpNNSAxOVY1aDE0djE0SDV6bTctNi4xMmMtMi4wMyAwLTYgMS4wOC02IDMuNThWMThoMTJ2LTEuNTNjMC0yLjUxLTMuOTctMy41OS02LTMuNTl6TTguMzEgMTZjLjY5LS41NiAyLjM4LTEuMTIgMy42OS0xLjEyczMuMDEuNTYgMy42OSAxLjEySDguMzF6TTEyIDEyYzEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zLTMgMS4zNS0zIDMgMS4zNSAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtRGF0YVNldHRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljk5IDExLjU3SDIwVjBMMCAyMGgxMS41NnYtMkg0LjgzTDE3Ljk5IDQuODN2Ni43NHptNS43OCA4Ljc1LTEuMDctLjgzYy4wMi0uMTYuMDQtLjMyLjA0LS40OSAwLS4xNy0uMDEtLjMzLS4wNC0uNDlsMS4wNi0uODNhLjI2LjI2IDAgMCAwIC4wNi0uMzJsLTEtMS43M2MtLjA2LS4xMS0uMTktLjE1LS4zMS0uMTFsLTEuMjQuNWMtLjI2LS4yLS41NC0uMzctLjg1LS40OWwtLjE5LTEuMzJjLS4wMS0uMTItLjEyLS4yMS0uMjQtLjIxaC0yYy0uMTIgMC0uMjMuMDktLjI1LjIxbC0uMTkgMS4zMmMtLjMuMTMtLjU5LjI5LS44NS40OWwtMS4yNC0uNWMtLjExLS4wNC0uMjQgMC0uMzEuMTFsLTEgMS43M2MtLjA2LjExLS4wNC4yNC4wNi4zMmwxLjA2LjgzYTMuOTA4IDMuOTA4IDAgMCAwIDAgLjk4bC0xLjA2LjgzYS4yNi4yNiAwIDAgMC0uMDYuMzJsMSAxLjczYy4wNi4xMS4xOS4xNS4zMS4xMWwxLjI0LS41Yy4yNi4yLjU0LjM3Ljg1LjQ5bC4xOSAxLjMyYy4wMi4xMi4xMi4yMS4yNS4yMWgyYy4xMiAwIC4yMy0uMDkuMjUtLjIxbC4xOS0xLjMyYy4zLS4xMy41OS0uMjkuODQtLjQ5bDEuMjUuNWMuMTEuMDQuMjQgMCAuMzEtLjExbDEtMS43M2EuMjYuMjYgMCAwIDAtLjA2LS4zMnptLTQuNzguMThjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVybURldmljZUluZm9ybWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3aDJ2MmgtMnptMCA0aDJ2NmgtMnptNi05Ljk5TDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAyMUg3di0xaDEwdjF6bTAtM0g3VjZoMTB2MTJ6TTcgNFYzaDEwdjFIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcm1JZGVudGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJtMCA5YzIuNyAwIDUuOCAxLjI5IDYgMnYxSDZ2LS45OWMuMi0uNzIgMy4zLTIuMDEgNi0yLjAxbTAtMTFDOS43OSA0IDggNS43OSA4IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgOWMtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcm1NZWRpYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2SDB2NWguMDFMMCAyMGMwIDEuMS45IDIgMiAyaDE4di0ySDJWNnptNSA5aDE0bC0zLjUtNC41LTIuNSAzLjAxTDExLjUgOXpNMjIgNGgtOGwtMi0ySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTJINlY0aDUuMTdsMS40MSAxLjQxLjU5LjU5SDIydjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVybVBob25lTXNnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMS0uMDMtLjIxLS4wNS0uMzEtLjA1LS4yNiAwLS41MS4xLS43MS4yOWwtMi4yIDIuMmExNS4wNzQgMTUuMDc0IDAgMCAxLTYuNTktNi41OGwyLjItMi4yMWMuMjgtLjI3LjM2LS42Ni4yNS0xLjAxQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek01LjAzIDVoMS41Yy4wNy44OC4yMiAxLjc1LjQ2IDIuNTlMNS43OSA4LjhjLS40MS0xLjIxLS42Ny0yLjQ4LS43Ni0zLjh6TTE5IDE4Ljk3Yy0xLjMyLS4wOS0yLjYtLjM1LTMuOC0uNzZsMS4yLTEuMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS41MXpNMTIgM3YxMGwzLTNoNlYzaC05em03IDVoLTVWNWg1djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtU2NhbldpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNDNi45NSAzIDMuMTUgNC44NSAwIDcuMjNMMTIgMjIgMjQgNy4yNUMyMC44NSA0Ljg3IDE3LjA1IDMgMTIgM3pNMi45MiA3LjY1QzUuOCA1Ljg1IDguNzQgNSAxMiA1YzMuMjUgMCA2LjE4Ljg1IDkuMDggMi42N0wxMiAxOC44MyAyLjkyIDcuNjV6TTExIDEwaDJ2NmgtMnptMC00aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiNS41XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTkuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjM0IDE0Ljg2Yy0uODctMS4wMi0xLjYtMS44OS0yLjQ4LTIuOTEtLjQ2LS41NC0xLjA1LTEuMDgtMS43NS0xLjMyLS4xMS0uMDQtLjIyLS4wNy0uMzMtLjA5LS4yNS0uMDQtLjUyLS4wNC0uNzgtLjA0cy0uNTMgMC0uNzkuMDVjLS4xMS4wMi0uMjIuMDUtLjMzLjA5LS43LjI0LTEuMjguNzgtMS43NSAxLjMyLS44NyAxLjAyLTEuNiAxLjg5LTIuNDggMi45MS0xLjMxIDEuMzEtMi45MiAyLjc2LTIuNjIgNC43OS4yOSAxLjAyIDEuMDIgMi4wMyAyLjMzIDIuMzIuNzMuMTUgMy4wNi0uNDQgNS41NC0uNDRoLjE4YzIuNDggMCA0LjgxLjU4IDUuNTQuNDQgMS4zMS0uMjkgMi4wNC0xLjMxIDIuMzMtMi4zMi4zMS0yLjA0LTEuMy0zLjQ5LTIuNjEtNC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOWgxLjV2NkgxM3YtMi41aC0yVjE1SDkuNVY5SDExdjJoMlY5em0tNSAxLjV2MWMwIC44LS43IDEuNS0xLjUgMS41aC0ydjJIM1Y5aDMuNWMuOCAwIDEuNS43IDEuNSAxLjV6bS0xLjUgMGgtMnYxaDJ2LTF6bTE1IDB2MWMwIC44LS43IDEuNS0xLjUgMS41aC0ydjJoLTEuNVY5SDIwYy44IDAgMS41LjcgMS41IDEuNXptLTEuNSAwaC0ydjFoMnYtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpY3R1cmVJblBpY3R1cmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDExaC04djZoOHYtNnptLTIgNGgtNHYtMmg0djJ6bTQtMTJIM2MtMS4xIDAtMiAuODgtMiAxLjk4VjE5YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNC45OEMyMyAzLjg4IDIyLjEgMyAyMSAzem0wIDE2LjAySDNWNC45N2gxOHYxNC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpY3R1cmVJblBpY3R1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdoLTh2Nmg4Vjd6bS0yIDRoLTRWOWg0djJ6bTQtOEgzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDEuOTggMiAxLjk4aDE4YzEuMSAwIDItLjg4IDItMS45OFY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OGgxOHYxNC4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpbkVuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyVjZINHYxMmgxMHYySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxNmMxLjEgMCAyIC45IDIgMnY2aC0yem0tMSAyYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptLTQuMzQtNkg5djUuNjZoMnYtMi4yNGwyLjk1IDIuOTUgMS40MS0xLjQxTDEyLjQxIDEwaDIuMjRWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpbkludm9rZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEydjZjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDEwdjJINHYxMmgxNnYtNmgyem0wLTVjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDMgMS4zNCAzIDMgMyAzLTEuMzQgMy0zek05LjM0IDEyaDIuMjRsLTIuOTUgMi45NSAxLjQxIDEuNDFMMTMgMTMuNDJ2Mi4yNGgyVjEwSDkuMzR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpbmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyLjVWMWg1djVIOS41VjMuNTZMMy41NiA5LjVINlYxMUgxVjZoMS41djIuNDRMOC40NCAyLjVINnptMTUuODkgMTEuMjctMy44LTEuNjdjLS4xMy0uMDYtLjI4LS4xLS40NC0uMUgxN1Y3LjVhMi41IDIuNSAwIDAgMC01IDB2OC4xNWwtMS44Ny0uNGMtLjE5LS4wMy0xLjAyLS4xNS0xLjczLjU2TDcgMTcuMjJsNS4xMiA1LjE5Yy4zNy4zOC44OC41OSAxLjQxLjU5aDYuNTVjLjk4IDAgMS44MS0uNyAxLjk3LTEuNjdsLjkyLTUuNDRhMiAyIDAgMCAwLTEuMDgtMi4xMnpNMjAuMDggMjFoLTYuNTVsLTMuNy0zLjc4IDQuMTcuODlWNy41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djYuMThoMS43NkwyMSAxNS41NiAyMC4wOCAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYWdpYXJpc20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoN3Y1aDV2MTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDMgMTEuMDNhMy40OTUgMy40OTUgMCAwIDAgMCA0Ljk1IDMuNDggMy40OCAwIDAgMCA0LjEzLjU5bDEuODggMS44OCAxLjQxLTEuNDEtMS44OC0xLjg4Yy43MS0xLjMzLjUzLTMuMDEtLjU5LTQuMTNhMy40OTUgMy40OTUgMCAwIDAtNC45NSAwem0zLjUzIDMuNTNjLS41OS41OS0xLjU0LjU5LTIuMTIgMGExLjQ5IDEuNDkgMCAwIDEgMC0yLjEyIDEuNDkgMS40OSAwIDAgMSAyLjEyIDBjLjU5LjU5LjU5IDEuNTMgMCAyLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheUZvcldvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDV2NS41OUg3LjVsNC41IDQuNSA0LjUtNC41SDEzVjVoLTJ6bS01IDljMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNmgtMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUG9seW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtNEw3LjExIDE2LjYzIDQuNSAxMiA5IDRINUwuNSAxMiA1IDIwaDRsNy44OS0xMi42M0wxOS41IDEyIDE1IDIwaDRsNC41LThMMTkgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvd2VyU2V0dGluZ3NOZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNoLTJ2MTBoMlYzem00LjgzIDIuMTctMS40MiAxLjQyQTYuOTIgNi45MiAwIDAgMSAxOSAxMmMwIDMuODctMy4xMyA3LTcgN0E2Ljk5NSA2Ljk5NSAwIDAgMSA3LjU4IDYuNThMNi4xNyA1LjE3QTguOTMyIDguOTMyIDAgMCAwIDMgMTJhOSA5IDAgMCAwIDE4IDBjMC0yLjc0LTEuMjMtNS4xOC0zLjE3LTYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmVnbmFudFdvbWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNyA5YTMuMjg1IDMuMjg1IDAgMCAwLTItM2MwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgM3Y3aDJ2NWgzdi01aDN2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmV2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTZINVY3aDE0djEyem0tNy04LjVjMS44NCAwIDMuNDguOTYgNC4zNCAyLjUtLjg2IDEuNTQtMi41IDIuNS00LjM0IDIuNXMtMy40OC0uOTYtNC4zNC0yLjVjLjg2LTEuNTQgMi41LTIuNSA0LjM0LTIuNU0xMiA5Yy0yLjczIDAtNS4wNiAxLjY2LTYgNCAuOTQgMi4zNCAzLjI3IDQgNiA0czUuMDYtMS42NiA2LTRjLS45NC0yLjM0LTMuMjctNC02LTR6bTAgNS41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4aC0xVjNINnY1SDVjLTEuNjYgMC0zIDEuMzQtMyAzdjZoNHY0aDEydi00aDR2LTZjMC0xLjY2LTEuMzQtMy0zLTN6TTggNWg4djNIOFY1em04IDEydjJIOHYtNGg4djJ6bTItMnYtMkg2djJINHYtNGMwLS41NS40NS0xIDEtMWgxNGMuNTUgMCAxIC40NSAxIDF2NGgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjExLjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaXZhY3lUaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAzLjE5IDcgMy4xMVYxMWMwIDQuNTItMi45OCA4LjY5LTcgOS45My00LjAyLTEuMjQtNy01LjQxLTctOS45M1Y2LjNsNy0zLjExTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00em0tMSA2aDJ2MmgtMlY3em0wIDRoMnY2aC0ydi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJpdmF0ZUNvbm5lY3Rpdml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDUtNS0yLjI0LTUtNSAyLjI0LTUgNS01em0tNi45MyA2Yy40OSAzLjM5IDMuNCA2IDYuOTMgNnM2LjQ0LTIuNjEgNi45My02SDIydi0yaC0zLjA3Yy0uNDktMy4zOS0zLjQtNi02LjkzLTZzLTYuNDQgMi42MS02LjkzIDZIMnYyaDMuMDd6TTE0IDEwLjV2LS44OWMwLTEtLjY4LTEuOTItMS42Ni0yLjA4QTIgMiAwIDAgMCAxMCA5LjV2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMiAzLjI1Yy0uNDEgMC0uNzUtLjM0LS43NS0uNzVzLjM0LS43NS43NS0uNzUuNzUuMzQuNzUuNzUtLjM0Ljc1LS43NS43NXptMS0zLjI1aC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJvZHVjdGlvblF1YW50aXR5TGltaXRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTBoLTJWOGgydjJ6bTAtNGgtMlYxaDJ2NXpNNyAxOGMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnptMTAgMGMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6bS04LjktNWg3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM0wyMSA0Ljk2IDE5LjI1IDRsLTMuNyA3SDguNTNMNC4yNyAySDF2MmgybDMuNiA3LjU5LTEuMzUgMi40NEM0LjUyIDE1LjM3IDUuNDggMTcgNyAxN2gxMnYtMkg3bDEuMS0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHVibGlzaGVkV2l0aENoYW5nZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC42IDE5LjVIMjF2MmgtNnYtNmgydjIuNzNjMS44My0xLjQ3IDMtMy43MSAzLTYuMjMgMC00LjA3LTMuMDYtNy40NC03LTcuOTNWMi4wNWM1LjA1LjUgOSA0Ljc2IDkgOS45NSAwIDIuOTktMS4zMiA1LjY3LTMuNCA3LjV6TTQgMTJjMC0yLjUyIDEuMTctNC43NyAzLTYuMjNWOC41aDJ2LTZIM3YyaDIuNEE5Ljk2NiA5Ljk2NiAwIDAgMCAyIDEyYzAgNS4xOSAzLjk1IDkuNDUgOSA5Ljk1di0yLjAyYy0zLjk0LS40OS03LTMuODYtNy03Ljkzem0xMi4yNC0zLjg5LTUuNjYgNS42Ni0yLjgzLTIuODMtMS40MSAxLjQxIDQuMjQgNC4yNCA3LjA3LTcuMDctMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVlcnlCdWlsZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bS41LTEzSDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVRdWVzdGlvbkFuc3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNHY3SDUuMTdsLS41OS41OS0uNTguNThWNGgxMW0xLTJIM2MtLjU1IDAtMSAuNDUtMSAxdjE0bDQtNGgxMGMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bTUgNGgtMnY5SDZ2MmMwIC41NS40NSAxIDEgMWgxMWw0IDRWN2MwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVRdWVzdGlvbk1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4wNyAxMi44NWMuNzctMS4zOSAyLjI1LTIuMjEgMy4xMS0zLjQ0LjkxLTEuMjkuNC0zLjctMi4xOC0zLjctMS42OSAwLTIuNTIgMS4yOC0yLjg3IDIuMzRMNi41NCA2Ljk2QzcuMjUgNC44MyA5LjE4IDMgMTEuOTkgM2MyLjM1IDAgMy45NiAxLjA3IDQuNzggMi40MS43IDEuMTUgMS4xMSAzLjMuMDMgNC45LTEuMiAxLjc3LTIuMzUgMi4zMS0yLjk3IDMuNDUtLjI1LjQ2LS4zNS43Ni0uMzUgMi4yNGgtMi44OWMtLjAxLS43OC0uMTMtMi4wNS40OC0zLjE1ek0xNCAyMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVRdWlja3JlcGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxNy4xN1Y0aDE2djZoMlY0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoOXYtMkg1LjE3TDQgMTcuMTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjUgMTZoLTIuMmwxLjctNGgtNXY2aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlY2VpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgMy41IDE4IDJsLTEuNSAxLjVMMTUgMmwtMS41IDEuNUwxMiAybC0xLjUgMS41TDkgMiA3LjUgMy41IDYgMiA0LjUgMy41IDMgMnYyMGwxLjUtMS41TDYgMjJsMS41LTEuNUw5IDIybDEuNS0xLjVMMTIgMjJsMS41LTEuNUwxNSAyMmwxLjUtMS41TDE4IDIybDEuNS0xLjVMMjEgMjJWMmwtMS41IDEuNXpNMTkgMTkuMDlINVY0LjkxaDE0djE0LjE4ek02IDE1aDEydjJINnptMC00aDEydjJINnptMC00aDEydjJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlY29yZFZvaWNlT3ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxM2MyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTAgOGMtMi42NyAwLTggMS4zNC04IDR2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHptLTYgNGMuMjItLjcyIDMuMzEtMiA2LTIgMi43IDAgNS44IDEuMjkgNiAySDN6TTE1LjA4IDcuMDVjLjg0IDEuMTguODQgMi43MSAwIDMuODlsMS42OCAxLjY5YzIuMDItMi4wMiAyLjAyLTUuMDcgMC03LjI3bC0xLjY4IDEuNjl6TTIwLjA3IDJsLTEuNjMgMS42M2MyLjc3IDMuMDIgMi43NyA3LjU2IDAgMTAuNzRMMjAuMDcgMTZjMy45LTMuODkgMy45MS05Ljk1IDAtMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWRlZW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLTIuMThjLjExLS4zMS4xOC0uNjUuMTgtMWEyLjk5NiAyLjk5NiAwIDAgMC01LjUtMS42NWwtLjUuNjctLjUtLjY4QzEwLjk2IDIuNTQgMTAuMDUgMiA5IDIgNy4zNCAyIDYgMy4zNCA2IDVjMCAuMzUuMDcuNjkuMTggMUg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS01LTJjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNOSA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTExIDE1SDR2LTJoMTZ2MnptMC01SDRWOGg1LjA4TDcgMTAuODMgOC42MiAxMiAxMSA4Ljc2bDEtMS4zNiAxIDEuMzZMMTUuMzggMTIgMTcgMTAuODMgMTQuOTIgOEgyMHY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVtb3ZlRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuODQgMS45OCAzLjQzIDMuMzlsMTAuMzggMTAuMzgtMS40MSAxLjQxLTQuMjQtNC4yNC0xLjQxIDEuNDEgNS42NiA1LjY2IDIuODMtMi44MyA2LjYgNi42IDEuNDEtMS40MUw0Ljg0IDEuOTh6bTEzLjIxIDEwLjM4TDIzIDcuNCAyMS41NyA2bC00Ljk0IDQuOTQgMS40MiAxLjQyem0tLjcxLTQuOTYtMS40MS0xLjQxLTIuMTIgMi4xMiAxLjQxIDEuNDEgMi4xMi0yLjEyek0xLjA4IDEyLjM1bDUuNjYgNS42NiAxLjQxLTEuNDEtNS42Ni01LjY2LTEuNDEgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZVNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS40MSAxLjEzIDAgMi41NGw0LjM5IDQuMzkgMi4yMSA0LjY2LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmg3LjQ2bDEuMzggMS4zOEExLjk5NyAxLjk5NyAwIDAgMCAxNyAyMmMuNjcgMCAxLjI2LS4zMyAxLjYyLS44NEwyMS40NiAyNGwxLjQxLTEuNDFMMS40MSAxLjEzek03IDE1bDEuMS0yaDIuMzZsMiAySDd6TTIwIDRINy4xMmwyIDJoOS4xOWwtMi43NiA1aC0xLjQ0bDEuOTQgMS45NGMuNTQtLjE0Ljk5LS40OSAxLjI1LS45N2wzLjU4LTYuNDlDMjEuMjUgNC44MiAyMC43NiA0IDIwIDR6TTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE1aDE4di0ySDN2MnptMCA0aDE4di0ySDN2MnptMC04aDE4VjlIM3Yyem0wLTZ2MmgxOFY1SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBhcnRpdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTZIM3Y2em03LjMzLTJ2LTJoMy4zM3YyaC0zLjMzek0xOSAxOWgtMy4zM3YtMkgxOXYyek01IDE3aDMuMzN2Mkg1di0yek02IDEwbDEuNDItMS40Mkw1LjgzIDdIMTdjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAySDN2MmgxNGMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNEg1LjgzbDEuNTktMS41OUw2IDIgMiA2bDQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcG9ydFByb2JsZW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuOTkgMTkuNTMgMTlINC40N0wxMiA1Ljk5TTEyIDIgMSAyMWgyMkwxMiAyem0xIDE0aC0ydjJoMnYtMnptMC02aC0ydjRoMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcXVlc3RQYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMTcgNCAxOCA4LjgzVjIwSDZWNGg3LjE3TTE0IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTEgOWgtNHYxaDNjLjU1IDAgMSAuNDUgMSAxdjNjMCAuNTUtLjQ1IDEtMSAxaC0xdjFoLTJ2LTFIOXYtMmg0di0xaC0zYy0uNTUgMC0xLS40NS0xLTF2LTNjMC0uNTUuNDUtMSAxLTFoMVY4aDJ2MWgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXN0b3JlRnJvbVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS41IDQtMS0xaC01bC0xIDFINXYyaDE0VjR6TTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnptMi01VjloOHYxMEg4di01em0yIDRoNHYtNGgybC00LTQtNCA0aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXN0b3JlUGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3LjE3TDE4IDguODNWMjB6bS05LjU1LTkuNDNMNy4yOCA5LjRWMTNoMy42bC0xLjQ0LTEuNDRhMy4xNSAzLjE1IDAgMCAxIDIuNzktMS43MSAzLjE1IDMuMTUgMCAxIDEgMCA2LjMgMy4xNCAzLjE0IDAgMCAxLTIuNTgtMS4zNUg4LjFhNC41MSA0LjUxIDAgMCAwIDQuMTIgMi43YzIuNDggMCA0LjUtMi4wMiA0LjUtNC41cy0yLjAyLTQuNS00LjUtNC41Yy0xLjU5IDAtMi45Ny44My0zLjc3IDIuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYTkgOSAwIDAgMC05IDlIMWw0IDMuOTlMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQTguOTU0IDguOTU0IDAgMCAwIDEzIDIxYTkgOSAwIDAgMCAwLTE4em0tMSA1djVsNC4yNSAyLjUyLjc3LTEuMjgtMy41Mi0yLjA5Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb2NrZXRMYXVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE1Yy0uODMgMC0xLjU4LjM0LTIuMTIuODhDMi43IDE3LjA2IDIgMjIgMiAyMnM0Ljk0LS43IDYuMTItMS44OEEyLjk5NiAyLjk5NiAwIDAgMCA2IDE1em0uNzEgMy43MWMtLjI4LjI4LTIuMTcuNzYtMi4xNy43NnMuNDctMS44OC43Ni0yLjE3Yy4xNy0uMTkuNDItLjMuNy0uM2ExLjAwMyAxLjAwMyAwIDAgMSAuNzEgMS43MXptMTAuNzEtNS4wNmM2LjM2LTYuMzYgNC4yNC0xMS4zMSA0LjI0LTExLjMxUzE2LjcxLjIyIDEwLjM1IDYuNThsLTIuNDktLjVhMi4wMyAyLjAzIDAgMCAwLTEuODEuNTVMMiAxMC42OWw1IDIuMTRMMTEuMTcgMTdsMi4xNCA1IDQuMDUtNC4wNWMuNDctLjQ3LjY4LTEuMTUuNTUtMS44MWwtLjQ5LTIuNDl6TTcuNDEgMTAuODNsLTEuOTEtLjgyIDEuOTctMS45NyAxLjQ0LjI5Yy0uNTcuODMtMS4wOCAxLjctMS41IDIuNXptNi41OCA3LjY3LS44Mi0xLjkxYy44LS40MiAxLjY3LS45MyAyLjQ5LTEuNWwuMjkgMS40NC0xLjk2IDEuOTd6TTE2IDEyLjI0Yy0xLjMyIDEuMzItMy4zOCAyLjQtNC4wNCAyLjczbC0yLjkzLTIuOTNjLjMyLS42NSAxLjQtMi43MSAyLjczLTQuMDQgNC42OC00LjY4IDguMjMtMy45OSA4LjIzLTMuOTlzLjY5IDMuNTUtMy45OSA4LjIzek0xNSAxMWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb2NrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS02LjAyIDcuMjVjLS4yOS0uOS0uNTctMS45NC0uNzYtM0w2IDE2LjA3djIuOThsMS45OC0uOHpNMTIgMnM1IDIgNSAxMWwyLjExIDEuNDFjLjU2LjM3Ljg5IDEgLjg5IDEuNjZWMjJsLTUtMkg5bC01IDJ2LTUuOTNjMC0uNjcuMzMtMS4yOS44OS0xLjY2TDcgMTNjMC05IDUtMTEgNS0xMXptMCAyLjM2UzkgNi4zOCA5IDEzYzAgMi4yNSAxIDUgMSA1aDRzMS0yLjc1IDEtNWMwLTYuNjItMy04LjY0LTMtOC42NHptNiAxNC42OXYtMi45OGwtMS4yMi0uODFjLS4xOSAxLjA1LS40NyAyLjEtLjc2IDNsMS45OC43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC4xMyAyIDUgNS4xMyA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODctMy4xMy03LTctN3pNNyA5YzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVjMCAyLjg4LTIuODggNy4xOS01IDkuODhDOS45MiAxNi4yMSA3IDExLjg1IDcgOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjlcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm91bmRlZENvcm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5aDJ2MmgtMnYtMnptMC0yaDJ2LTJoLTJ2MnpNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0wLThoMlY3SDN2MnptMC00aDJWM0gzdjJ6bTQgMGgyVjNIN3Yyem04IDE2aDJ2LTJoLTJ2MnptLTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6bS04IDBoMnYtMkg3djJ6bS00IDBoMnYtMkgzdjJ6TTIxIDhjMC0yLjc2LTIuMjQtNS01LTVoLTV2Mmg1YzEuNjUgMCAzIDEuMzUgMyAzdjVoMlY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm93aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDE0LjUgNCAxOWwxLjUgMS41TDkgMTdoMmwtMi41LTIuNXpNMTUgMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTYgMjAuMDFMMTggMjRsLTIuOTktMy4wMVYxOS41bC03LjEtNy4wOWMtLjMxLjA1LS42MS4wNy0uOTEuMDd2LTIuMTZjMS42Ni4wMyAzLjYxLS44NyA0LjY3LTIuMDRsMS40LTEuNTVjLjE5LS4yMS40My0uMzguNjktLjUuMjktLjE0LjYyLS4yMy45Ni0uMjNoLjAzQzE1Ljk5IDYuMDEgMTcgNy4wMiAxNyA4LjI2djUuNzVjMCAuODQtLjM1IDEuNjEtLjkyIDIuMTZsLTMuNTgtMy41OHYtMi4yN2MtLjYzLjUyLTEuNDMgMS4wMi0yLjI5IDEuMzlMMTYuNSAxOEgxOGwzIDMuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTQgMTEgMTMgNy40NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNCAxLjQxIDEuNDFMMTYuNTQgMTF6TTExIDdIMnYyaDlWN3ptMTAgNi40MUwxOS41OSAxMiAxNyAxNC41OSAxNC40MSAxMiAxMyAxMy40MSAxNS41OSAxNiAxMyAxOC41OSAxNC40MSAyMCAxNyAxNy40MSAxOS41OSAyMCAyMSAxOC41OSAxOC40MSAxNiAyMSAxMy40MXpNMTEgMTVIMnYyaDl2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYXRlbGxpdGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNGgyYTkgOSAwIDAgMS05IDl2LTJjMy44NyAwIDctMy4xMyA3LTd6bS03IDN2MmMyLjc2IDAgNS0yLjI0IDUtNWgtMmMwIDEuNjYtMS4zNCAzLTMgM3pNMTguMjYuNTlsMy41NCAzLjU0Yy43OC43OC43OCAyLjA1IDAgMi44M2wtMy4xOCAzLjE4Yy0uNzguNzgtMi4wNS43OC0yLjgzIDBMMTQuNTUgOC45bC0uNzEuNyAxLjI0IDEuMjRjLjc4Ljc4Ljc4IDIuMDUgMCAyLjgzbC0xLjQxIDEuNDFjLS43OC43OC0yLjA1Ljc4LTIuODMgMEw5LjYgMTMuODRsLS43MS43MSAxLjI0IDEuMjRjLjc4Ljc4Ljc4IDIuMDUgMCAyLjgzTDYuOTUgMjEuOGMtLjc4Ljc4LTIuMDUuNzgtMi44MyAwTC41OCAxOC4yNmMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNsMy4xOC0zLjE4Yy43OC0uNzggMi4wNS0uNzggMi44MyAwbDEuMjQgMS4yNC43MS0uNzEtMS4yNC0xLjIzYy0uNzgtLjc4LS43OC0yLjA1IDAtMi44M0w4LjcyIDcuM2MuNzgtLjc4IDIuMDUtLjc4IDIuODMgMGwxLjI0IDEuMjQuNzEtLjcxLTEuMjUtMS4yM2MtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNMMTUuNDMuNTljLjc5LS43OSAyLjA1LS43OSAyLjgzIDB6bS0xNS4yIDE1LjJMMiAxNi44NWwzLjU0IDMuNTQgMS4wNi0xLjA2LTMuNTQtMy41NHptMi4xMi0yLjEyLTEuMDYgMS4wNiAzLjU0IDMuNTQgMS4wNi0xLjA2LTMuNTQtMy41NHptNC45NS00Ljk1LTEuNDEgMS40MSAzLjU0IDMuNTQgMS40MS0xLjQxLTMuNTQtMy41NHptNC42LTQuNi0xLjA2IDEuMDYgMy41NCAzLjU0IDEuMDYtMS4wNi0zLjU0LTMuNTR6TTE2Ljg1IDJsLTEuMDYgMS4wNiAzLjU0IDMuNTQgMS4wNi0xLjA2TDE2Ljg1IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYXZlZFNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjczIDEzLjMxQTYuMzg4IDYuMzg4IDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjQzIDAgMi43NC0uNDggMy44MS0xLjI3TDE5LjU5IDIxIDIxIDE5LjU5bC02LjI3LTYuMjh6TTkuNSAxNEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMjkgOC40NCA5LjUgNmwtLjc5IDIuNDRINi4yNWwyLjAxIDEuNTktLjc3IDIuNDcgMi4wMS0xLjUzIDIuMDEgMS41My0uNzctMi40NyAyLjAxLTEuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYXZpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTBjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxLS40NSAxLTEgMS0xLS40NS0xLTF6TTggOWg1VjdIOHYyem0xNC0xLjV2Ni45N2wtMi44Mi45NEwxNy41IDIxSDEydi0yaC0ydjJINC41UzIgMTIuNTQgMiA5LjUgNC40NiA0IDcuNSA0aDVjLjkxLTEuMjEgMi4zNi0yIDQtMmExLjQ5OCAxLjQ5OCAwIDAgMSAxLjM4IDIuMDhjLS4xNC4zNC0uMjYuNzMtLjMyIDEuMTVsMi4yNyAyLjI3SDIyem0tMiAyaC0xTDE1LjUgNmMwLS42NS4wOS0xLjI5LjI2LTEuOTEtLjk3LjI1LTEuNzYuOTctMi4wOSAxLjkxSDcuNUM1LjU3IDYgNCA3LjU3IDQgOS41YzAgMS44OCAxLjIyIDYuNjUgMi4wMSA5LjVIOHYtMmg2djJoMi4wMWwxLjU1LTUuMTUgMi40NC0uODJWOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NoZWR1bGVTZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0xLjY1IDcuMzVMMTYuNSAxNy4yVjE0aDF2Mi43OWwxLjg1IDEuODUtLjcuNzF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDEyLTYtMS41VjcuMDFsOC44NyAzLjc0Yy45NC0uNDcgMi0uNzUgMy4xMy0uNzUuMSAwIC4xOS4wMS4yOC4wMUwzIDR2MTZsNy0yLjk1VjE3YzAtLjguMTQtMS41Ni4zOS0yLjI4TDUgMTYuOTlWMTMuNWw2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjaGVkdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bS41LTEzSDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZWFyY2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdBNi40NzEgNi40NzEgMCAwIDAgMTYgOS41IDYuNSA2LjUgMCAwIDAgOS41IDNDNi4wOCAzIDMuMjggNS42NCAzLjAzIDloMi4wMkM1LjMgNi43NSA3LjE4IDUgOS41IDUgMTEuOTkgNSAxNCA3LjAxIDE0IDkuNVMxMS45OSAxNCA5LjUgMTRjLS4xNyAwLS4zMy0uMDMtLjUtLjA1djIuMDJjLjE3LjAyLjMzLjAzLjUuMDMgMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQ3IDEwLjgyIDQgMTMuMjlsLTIuNDctMi40Ny0uNzEuNzFMMy4yOSAxNCAuODIgMTYuNDdsLjcxLjcxTDQgMTQuNzFsMi40NyAyLjQ3LjcxLS43MUw0LjcxIDE0bDIuNDctMi40N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZWdtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxOGgxMnYtMkg5djJ6TTMgNnYyaDE4VjZIM3ptNiA3aDEydi0ySDl2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbmRBbmRBcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEgMTItNi0xLjVWNy4wMWw4Ljg3IDMuNzNjLjk0LS40NyAyLS43NSAzLjEzLS43NS4xIDAgLjE5LjAxLjI4LjAxTDMgNHYxNmw3LTIuOTVWMTdjMC0uOC4xNC0xLjU2LjM5LTIuMjhMNSAxNi45OVYxMy41bDYtMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTAgOC0zLTMgLjcxLS43MSAxLjc5IDEuNzlWMTRoMXY0LjA5bDEuNzktMS43OS43MS43LTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnNvcnNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjE0IDEwLjk2Yy0uMDkuMzMtLjE0LjY4LS4xNCAxLjA0IDAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsLTEuNDIgMS40MkE2LjAxOCA2LjAxOCAwIDAgMSA2IDEyYzAtLjkzLjIxLTEuOC41OC0yLjU5TDUuMTEgNy45NEE3Ljg5NyA3Ljg5NyAwIDAgMCA0IDEyYzAgMi4yMS45IDQuMjEgMi4zNSA1LjY1bC0xLjQyIDEuNDJBOS45NjkgOS45NjkgMCAwIDEgMiAxMmMwLTIuMDQuNjEtMy45MyAxLjY2LTUuNTFMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MUw4LjE0IDEwLjk2em05LjI4IDMuNjNjLjM3LS43OS41OC0xLjY2LjU4LTIuNTkgMC0xLjY2LS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MiAxLjQyYTMuOTUxIDMuOTUxIDAgMCAxIDEuMDQgMy44NmwxLjU2IDEuNTV6TTIwIDEyYzAgMS40OC0uNCAyLjg3LTEuMTEgNC4wNmwxLjQ1IDEuNDVBOS45MSA5LjkxIDAgMCAwIDIyIDEyYzAtMi43Ni0xLjEyLTUuMjYtMi45My03LjA3bC0xLjQyIDEuNDJBNy45NCA3Ljk0IDAgMCAxIDIwIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2Vuc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzYgMTYuMjRDNi42NyAxNS4xNiA2IDEzLjY2IDYgMTJzLjY3LTMuMTYgMS43Ni00LjI0bDEuNDIgMS40MkM4LjQ1IDkuOSA4IDEwLjkgOCAxMmMwIDEuMS40NSAyLjEgMS4xNyAyLjgzbC0xLjQxIDEuNDF6bTguNDggMEMxNy4zMyAxNS4xNiAxOCAxMy42NiAxOCAxMnMtLjY3LTMuMTYtMS43Ni00LjI0bC0xLjQyIDEuNDJDMTUuNTUgOS45IDE2IDEwLjkgMTYgMTJjMCAxLjEtLjQ1IDIuMS0xLjE3IDIuODNsMS40MSAxLjQxek0xMiAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTggMmMwIDIuMjEtLjkgNC4yMS0yLjM1IDUuNjVsMS40MiAxLjQyQzIwLjg4IDE3LjI2IDIyIDE0Ljc2IDIyIDEycy0xLjEyLTUuMjYtMi45My03LjA3bC0xLjQyIDEuNDJBNy45NCA3Ljk0IDAgMCAxIDIwIDEyek02LjM1IDYuMzUgNC45MyA0LjkzQzMuMTIgNi43NCAyIDkuMjQgMiAxMnMxLjEyIDUuMjYgMi45MyA3LjA3bDEuNDItMS40MkM0LjkgMTYuMjEgNCAxNC4yMSA0IDEycy45LTQuMjEgMi4zNS01LjY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NBY2Nlc3NpYmlsaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSA0Yy0yLjYxLjctNS42NyAxLTguNSAxcy01Ljg5LS4zLTguNS0xTDMgNmMxLjg2LjUgNCAuODMgNiAxdjEyaDJ2LTZoMnY2aDJWN2MyLS4xNyA0LjE0LS41IDYtMWwtLjUtMnpNMTIgNGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTcgMjRoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0FwcGxpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNi4yMSAxMy45NyAxLjIgMi4wN2MuMDguMTMuMjMuMTguMzcuMTNsMS40OS0uNmMuMzEuMjQuNjQuNDQgMS4wMS41OWwuMjIgMS41OWMuMDMuMTQuMTUuMjUuMy4yNWgyLjRjLjE1IDAgLjI3LS4xMS4zLS4yNmwuMjItMS41OWMuMzYtLjE1LjctLjM1IDEuMDEtLjU5bDEuNDkuNmMuMTQuMDUuMjkgMCAuMzctLjEzbDEuMi0yLjA3Yy4wOC0uMTMuMDQtLjI5LS4wNy0uMzlsLTEuMjctLjk5Yy4wMy0uMTkuMDQtLjM5LjA0LS41OCAwLS4yLS4wMi0uMzktLjA0LS41OWwxLjI3LS45OWMuMTEtLjA5LjE1LS4yNi4wNy0uMzlsLTEuMi0yLjA3YS4zMDYuMzA2IDAgMCAwLS4zNy0uMTNsLTEuNDkuNmMtLjMxLS4yNC0uNjQtLjQ0LTEuMDEtLjU5bC0uMjItMS41OWEuMzEuMzEgMCAwIDAtLjMtLjI1aC0yLjRhLjMxLjMxIDAgMCAwLS4zLjI2bC0uMjIgMS41OWMtLjM2LjE1LS43MS4zNC0xLjAxLjU4bC0xLjQ5LS42Yy0uMTQtLjA1LS4yOSAwLS4zNy4xM2wtMS4yIDIuMDdjLS4wOC4xMy0uMDQuMjkuMDcuMzlsMS4yNy45OWMtLjAzLjItLjA1LjM5LS4wNS41OSAwIC4yLjAyLjM5LjA0LjU5bC0xLjI3Ljk5Yy0uMTEuMS0uMTQuMjYtLjA2LjM5ek0xMiAxMC4yOWMuOTQgMCAxLjcxLjc3IDEuNzEgMS43MXMtLjc3IDEuNzEtMS43MSAxLjcxLTEuNzEtLjc3LTEuNzEtMS43MS43Ny0xLjcxIDEuNzEtMS43MXpNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0JhY2t1cFJlc3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEyYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMiAuOSAyIDIgMiAyLS45IDItMnptLTItOWE5IDkgMCAwIDAtOSA5SDBsNCA0IDQtNEg1YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDdhNi45OTUgNi45OTUgMCAwIDEtMTEuMDYgNS43bC0xLjQyIDEuNDRBOSA5IDAgMSAwIDEyIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0JsdWV0b290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjRoMnYtMmgtMnYyem0tNCAwaDJ2LTJIN3Yyem04IDBoMnYtMmgtMnYyem0yLjcxLTE4LjI5TDEyIDBoLTF2Ny41OUw2LjQxIDMgNSA0LjQxIDEwLjU5IDEwIDUgMTUuNTkgNi40MSAxNyAxMSAxMi40MVYyMGgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgMy44M2wxLjg4IDEuODhMMTMgNy41OVYzLjgzem0xLjg4IDEwLjQ2TDEzIDE2LjE3di0zLjc2bDEuODggMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzQnJpZ2h0bmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyek04IDE2aDIuNWwxLjUgMS41IDEuNS0xLjVIMTZ2LTIuNWwxLjUtMS41LTEuNS0xLjVWOGgtMi41TDEyIDYuNSAxMC41IDhIOHYyLjVMNi41IDEyIDggMTMuNVYxNnptNC03YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0NlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjJoMnYySDd6bTQgMGgydjJoLTJ6bTQgMGgydjJoLTJ6TTE2IC4wMSA4IDBDNi45IDAgNiAuOSA2IDJ2MTZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE2IDE4SDh2LTFoOHYxem0wLTNIOFY1aDh2MTB6bTAtMTJIOFYyaDh2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzRXRoZXJuZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzcgNi43NiA2LjIzIDUuNDguODIgMTJsNS40MSA2LjUyIDEuNTQtMS4yOEwzLjQyIDEybDQuMzUtNS4yNHpNNyAxM2gydi0ySDd2MnptMTAtMmgtMnYyaDJ2LTJ6bS02IDJoMnYtMmgtMnYyem02Ljc3LTcuNTItMS41NCAxLjI4TDIwLjU4IDEybC00LjM1IDUuMjQgMS41NCAxLjI4TDIzLjE4IDEybC01LjQxLTYuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0QW50ZW5uYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNWMtMy44NyAwLTcgMy4xMy03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTEgOS4yOWMuODgtLjM5IDEuNS0xLjI2IDEuNS0yLjI5YTIuNSAyLjUgMCAwIDAtNSAwYzAgMS4wMi42MiAxLjkgMS41IDIuMjl2My4zTDcuNTkgMjEgOSAyMi40MWwzLTMgMyAzTDE2LjQxIDIxIDEzIDE3LjU5di0zLjN6TTEyIDFDNS45MyAxIDEgNS45MyAxIDEyaDJhOSA5IDAgMCAxIDE4IDBoMmMwLTYuMDctNC45My0xMS0xMS0xMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzSW5wdXRDb21wb25lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDF2MTBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4QzYuMTYgMTguNCA3IDE3LjMgNyAxNlY2SDVWMnpNNCAxN2MtLjU1IDAtMS0uNDUtMS0xdi0yaDJ2MmMwIC41NS0uNDUgMS0xIDF6bS0xLTVWOGgydjRIM3pNMTMgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDl2MTBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQyIDItMS41MiAyLTIuODJWNmgtMlYyem0tMSAxNWMtLjU1IDAtMS0uNDUtMS0xdi0yaDJ2MmMwIC41NS0uNDUgMS0xIDF6bS0xLTVWOGgydjRoLTJ6bTEwLTZWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0aC0ydjEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MiAyLTEuNTIgMi0yLjgyVjZoLTJ6bS0xIDExYy0uNTUgMC0xLS40NS0xLTF2LTJoMnYyYzAgLjU1LS40NSAxLTEgMXptLTEtNVY4aDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzSW5wdXRDb21wb3NpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDF2MTBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4QzYuMTYgMTguNCA3IDE3LjMgNyAxNlY2SDVWMnpNNCAxN2MtLjU1IDAtMS0uNDUtMS0xdi0yaDJ2MmMwIC41NS0uNDUgMS0xIDF6bS0xLTVWOGgydjRIM3pNMTMgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDl2MTBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQyIDItMS41MiAyLTIuODJWNmgtMlYyem0tMSAxNWMtLjU1IDAtMS0uNDUtMS0xdi0yaDJ2MmMwIC41NS0uNDUgMS0xIDF6bS0xLTVWOGgydjRoLTJ6bTEwLTZWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0aC0ydjEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MiAyLTEuNTIgMi0yLjgyVjZoLTJ6bS0xIDExYy0uNTUgMC0xLS40NS0xLTF2LTJoMnYyYzAgLjU1LS40NSAxLTEgMXptLTEtNVY4aDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzSW5wdXRIZG1pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA3VjRjMC0xLjEtLjktMi0yLTJIOGMtMS4xIDAtMiAuOS0yIDJ2M0g1djZsMyA2djNoOHYtM2wzLTZWN2gtMXpNOCA0aDh2M2gtMi4wMVY1aC0xdjJIMTFWNWgtMXYySDhWNHptOSA4LjUzLTMgNlYyMGgtNHYtMS40N2wtMy02VjloMTB2My41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzSW5wdXRTdmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTEuNWMwLS44My0uNjctMS41LTEuNS0xLjVTNSAxMC42NyA1IDExLjUgNS42NyAxMyA2LjUgMTMgOCAxMi4zMyA4IDExLjV6bTctNWMwLS44My0uNjctMS41LTEuNS0xLjVoLTNDOS42NyA1IDkgNS42NyA5IDYuNVM5LjY3IDggMTAuNSA4aDNjLjgzIDAgMS41LS42NyAxLjUtMS41ek04LjUgMTVjLS44MyAwLTEuNS42Ny0xLjUgMS41UzcuNjcgMTggOC41IDE4czEuNS0uNjcgMS41LTEuNVM5LjMzIDE1IDguNSAxNXpNMTIgMUM1LjkzIDEgMSA1LjkzIDEgMTJzNC45MyAxMSAxMSAxMSAxMS00LjkzIDExLTExUzE4LjA3IDEgMTIgMXptMCAyMGMtNC45NiAwLTktNC4wNC05LTlzNC4wNC05IDktOSA5IDQuMDQgOSA5LTQuMDQgOS05IDl6bTUuNS0xMWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bS0yIDVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NPdmVyc2NhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDEgNS41IDEwIDhoNGwtMS45OS0yLjV6TTE4IDEwdjRsMi41LTEuOTlMMTggMTB6TTYgMTBsLTIuNSAyLjAxTDYgMTR2LTR6bTggNmgtNGwyLjAxIDIuNUwxNCAxNnptNy0xM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOWgydjJoLTJ6bTQgMGgydjJoLTJ6bTUgNi41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMS0uMDMtLjIxLS4wNS0uMzEtLjA1LS4yNiAwLS41MS4xLS43MS4yOWwtMi4yIDIuMmExNS4wNzQgMTUuMDc0IDAgMCAxLTYuNTktNi41OGwyLjItMi4yMWMuMjgtLjI3LjM2LS42Ni4yNS0xLjAxQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek01LjAzIDVoMS41Yy4wNy44OC4yMiAxLjc1LjQ2IDIuNTlMNS43OSA4LjhjLS40MS0xLjIxLS42Ny0yLjQ4LS43Ni0zLjh6TTE5IDE4Ljk3Yy0xLjMyLS4wOS0yLjYtLjM1LTMuOC0uNzZsMS4yLTEuMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS41MXpNMTkgOWgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc1Bvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem0yLTIyaC0ydjEwaDJWMnptMy41NiAyLjQ0LTEuNDUgMS40NUE1Ljk2OSA1Ljk2OSAwIDAgMSAxOCAxMWMwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNmMwLTIuMTcgMS4xNi00LjA2IDIuODgtNS4xMkw3LjQ0IDQuNDRBNy45NjEgNy45NjEgMCAwIDAgNCAxMWMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi43Mi0xLjM2LTUuMTItMy40NC02LjU2ek0xNSAyNGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc1JlbW90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOUg5Yy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMmgtNFYxMWg0djEwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNy4wNSA2LjA1IDEuNDEgMS40MWE1LjAyMiA1LjAyMiAwIDAgMSA3LjA4IDBsMS40MS0xLjQxQzE1LjY4IDQuNzggMTMuOTMgNCAxMiA0cy0zLjY4Ljc4LTQuOTUgMi4wNXpNMTIgMEM4Ljk2IDAgNi4yMSAxLjIzIDQuMjIgMy4yMmwxLjQxIDEuNDFDNy4yNiAzLjAxIDkuNTEgMiAxMiAyczQuNzQgMS4wMSA2LjM2IDIuNjRsMS40MS0xLjQxQzE3Ljc5IDEuMjMgMTUuMDQgMCAxMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NWb2ljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMmgydjJIN3ptNS05YzEuNjYgMCAzLTEuMzQgMy0zVjRjMC0xLjY2LTEuMzQtMy0zLTNTOSAyLjM0IDkgNHY2YzAgMS42NiAxLjM0IDMgMyAzem0tMS05YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXY2YzAgLjU2LS40NCAxLTEgMS0uNTUgMC0xLS40NS0xLTFWNHptMCAxOGgydjJoLTJ6bTQgMGgydjJoLTJ6bTQtMTJoLTEuN2MwIDMtMi41NCA1LjEtNS4zIDUuMVM2LjcgMTMgNi43IDEwSDVjMCAzLjQxIDIuNzIgNi4yMyA2IDYuNzJWMjBoMnYtMy4yOGMzLjI4LS40OSA2LTMuMzEgNi02LjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjQzIDEyLjk4Yy4wNC0uMzIuMDctLjY0LjA3LS45OCAwLS4zNC0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2YS41LjUgMCAwIDAtLjYxLS4yMmwtMi40OSAxYy0uNTItLjQtMS4wOC0uNzMtMS42OS0uOThsLS4zOC0yLjY1QS40ODguNDg4IDAgMCAwIDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFhLjU2Ni41NjYgMCAwIDAtLjE4LS4wM2MtLjE3IDAtLjM0LjA5LS40My4yNWwtMiAzLjQ2Yy0uMTMuMjItLjA3LjQ5LjEyLjY0bDIuMTEgMS42NWMtLjA0LjMyLS4wNy42NS0uMDcuOTggMCAuMzMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2YS41LjUgMCAwIDAgLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjA2LjAyLjEyLjAzLjE4LjAzLjE3IDAgLjM0LS4wOS40My0uMjVsMi0zLjQ2Yy4xMi0uMjIuMDctLjQ5LS4xMi0uNjRsLTIuMTEtMS42NXptLTEuOTgtMS43MWMuMDQuMzEuMDUuNTIuMDUuNzMgMCAuMjEtLjAyLjQzLS4wNS43M2wtLjE0IDEuMTMuODkuNyAxLjA4Ljg0LS43IDEuMjEtMS4yNy0uNTEtMS4wNC0uNDItLjkuNjhjLS40My4zMi0uODQuNTYtMS4yNS43M2wtMS4wNi40My0uMTYgMS4xMy0uMiAxLjM1aC0xLjRsLS4xOS0xLjM1LS4xNi0xLjEzLTEuMDYtLjQzYy0uNDMtLjE4LS44My0uNDEtMS4yMy0uNzFsLS45MS0uNy0xLjA2LjQzLTEuMjcuNTEtLjctMS4yMSAxLjA4LS44NC44OS0uNy0uMTQtMS4xM2MtLjAzLS4zMS0uMDUtLjU0LS4wNS0uNzRzLjAyLS40My4wNS0uNzNsLjE0LTEuMTMtLjg5LS43LTEuMDgtLjg0LjctMS4yMSAxLjI3LjUxIDEuMDQuNDIuOS0uNjhjLjQzLS4zMi44NC0uNTYgMS4yNS0uNzNsMS4wNi0uNDMuMTYtMS4xMy4yLTEuMzVoMS4zOWwuMTkgMS4zNS4xNiAxLjEzIDEuMDYuNDNjLjQzLjE4LjgzLjQxIDEuMjMuNzFsLjkxLjcgMS4wNi0uNDMgMS4yNy0uNTEuNyAxLjIxLTEuMDcuODUtLjg5LjcuMTQgMS4xM3pNMTIgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOUgxdjExYzAgMS4xMS44OSAyIDIgMmgxNnYtMkgzVjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDVWM2MwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem05IDEzSDdWN2gxNHY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4djdsNS41LTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3BUd28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOUgxdjExYzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0ySDNWOXptMTUtNFYzYzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg1djExYzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0yVjVoLTV6bS02LTJoNHYyaC00VjN6bTkgMTNIN1Y3aDE0djl6bS05LTEgNS41LTRMMTIgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDZWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJIMnYxM2MwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2aC02em0tNi0yaDR2MmgtNFY0em0xMCAxNUg0VjhoMTZ2MTF6TTkgMThsNy41LTVMOSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2hvcHBpbmdCYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA2aC0yYzAtMi4yMS0xLjc5LTQtNC00UzggMy43OSA4IDZINmMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tNi0yYzEuMSAwIDIgLjkgMiAyaC00YzAtMS4xLjktMiAyLTJ6bTYgMTZINlY4aDJ2MmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTFWOGg0djJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xVjhoMnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3BwaW5nQmFza2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5aC00Ljc5bC00LjM4LTYuNTZjLS4xOS0uMjgtLjUxLS40Mi0uODMtLjQycy0uNjQuMTQtLjgzLjQzTDYuNzkgOUgyYy0uNTUgMC0xIC40NS0xIDEgMCAuMDkuMDEuMTguMDQuMjdsMi41NCA5LjI3Yy4yMy44NCAxIDEuNDYgMS45MiAxLjQ2aDEzYy45MiAwIDEuNjktLjYyIDEuOTMtMS40NmwyLjU0LTkuMjdMMjMgMTBjMC0uNTUtLjQ1LTEtMS0xek0xMiA0LjggMTQuOCA5SDkuMkwxMiA0Ljh6TTE4LjUgMTlsLTEyLjk5LjAxTDMuMzEgMTFIMjAuN2wtMi4yIDh6TTEyIDEzYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3BwaW5nQ2FydENoZWNrb3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnptMTAgMGMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6bS04LjktNWg3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM0wyMSA0Ljk2IDE5LjI1IDRsLTMuNyA3SDguNTNMNC4yNyAySDF2MmgybDMuNiA3LjU5LTEuMzUgMi40NEM0LjUyIDE1LjM3IDUuNDggMTcgNyAxN2gxMnYtMkg3bDEuMS0yek0xMiAybDQgNC00IDQtMS40MS0xLjQxTDEyLjE3IDdIOFY1aDQuMTdsLTEuNTktMS41OUwxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2hvcHBpbmdDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41NSAxM2MuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy41OC02LjQ5QS45OTYuOTk2IDAgMCAwIDIwLjAxIDRINS4yMWwtLjk0LTJIMXYyaDJsMy42IDcuNTktMS4zNSAyLjQ0QzQuNTIgMTUuMzcgNS40OCAxNyA3IDE3aDEydi0ySDdsMS4xLTJoNy40NXpNNi4xNiA2aDEyLjE1bC0yLjc2IDVIOC41M0w2LjE2IDZ6TTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU21hcnRCdXR0b24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5djZjMCAxLjEtLjkgMi0yIDJoLTF2LTJoMVY5SDR2Nmg2djJINGMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAyem0tNy41IDEwIDEuMDktMi40MUwxOCAxNS41bC0yLjQxLTEuMDlMMTQuNSAxMmwtMS4wOSAyLjQxTDExIDE1LjVsMi40MSAxLjA5TDE0LjUgMTl6bTIuNS01IC42Mi0xLjM4TDE5IDEybC0xLjM4LS42MkwxNyAxMGwtLjYyIDEuMzhMMTUgMTJsMS4zOC42MkwxNyAxNHptLTIuNSA1IDEuMDktMi40MUwxOCAxNS41bC0yLjQxLTEuMDlMMTQuNSAxMmwtMS4wOSAyLjQxTDExIDE1LjVsMi40MSAxLjA5TDE0LjUgMTl6bTIuNS01IC42Mi0xLjM4TDE5IDEybC0xLjM4LS42MkwxNyAxMGwtLjYyIDEuMzhMMTUgMTJsMS4zOC42MkwxNyAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvdXJjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHptLTItNkg2di0yaDEydjJ6bS00IDRINnYtMmg4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGFjZURhc2hib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01IDE5VjVoNnYxNEg1em0xNCAwaC02di03aDZ2N3ptMC05aC02VjVoNnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BhdGlhbEF1ZGlvT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTNjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yek0xNi4zOSAxNS41NkMxNC43MSAxNC43IDEyLjUzIDE0IDEwIDE0cy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAyIDE4LjIyVjIxaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE2IDE5SDR2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNS43MSAxNi43MyA3LjYzIDE2IDEwIDE2YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE5ek0yMC4zNiAxbC0xLjQxIDEuNDFhNy4wMDcgNy4wMDcgMCAwIDEgMCA5LjlsMS40MSAxLjQxYTguOTggOC45OCAwIDAgMCAwLTEyLjcyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41NCAxMC45YTUuMDAzIDUuMDAzIDAgMCAwIDAtNy4wN2wtMS40MSAxLjQxYTMgMyAwIDAgMSAwIDQuMjRsMS40MSAxLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BhdGlhbEF1ZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTNjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yek0xNi4zOSAxNS41NkMxNC43MSAxNC43IDEyLjUzIDE0IDEwIDE0cy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAyIDE4LjIyVjIxaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE2IDE5SDR2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNS43MSAxNi43MyA3LjYzIDE2IDEwIDE2YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE5ek0xNiAxaC0yYTkgOSAwIDAgMCA5IDlWOGMtMy44NiAwLTctMy4xNC03LTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDFoLTJjMCAyLjc2IDIuMjQgNSA1IDVWNGMtMS42NSAwLTMtMS4zNS0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGF0aWFsVHJhY2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxM2MyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTE2LjM5IDE1LjU2QzE0LjcxIDE0LjcgMTIuNTMgMTQgMTAgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDIgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTYgMTlINHYtLjc4YzAtLjM4LjItLjcyLjUyLS44OEM1LjcxIDE2LjczIDcuNjMgMTYgMTAgMTZjMi4zNyAwIDQuMjkuNzMgNS40OCAxLjM0LjMyLjE2LjUyLjUuNTIuODhWMTl6TTIwLjA1IDIuNDEgMTguNjQgMWMtMy41MSAzLjUxLTMuNTEgOS4yMSAwIDEyLjczbDEuNDEtMS40MWMtMi43My0yLjc0LTIuNzMtNy4xOCAwLTkuOTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjg4IDUuMjQtMS40MS0xLjQxYTUuMDAzIDUuMDAzIDAgMCAwIDAgNy4wN2wxLjQxLTEuNDFhMy4wMTIgMy4wMTIgMCAwIDEgMC00LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BlYWtlck5vdGVzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0djEyaC0xLjM0bDEuOTEgMS45MUEyLjAxIDIuMDEgMCAwIDAgMjIgMTZWNGMwLTEuMS0uOS0yLTItMkg0LjY2bDIgMkgyMHpNNiAxMmgydjJINnptMTItM2gtNi4zNGwyIDJIMTh6bTAtM2gtOHYxLjM0bC42Ni42NkgxOHpNMS40MSAxLjU5IDAgM2wyLjAxIDIuMDFMMiAyMmw0LTRoOWw1LjczIDUuNzMgMS40MS0xLjQxTDEuNDEgMS41OXpNNS4xNyAxNiA0IDE3LjE3VjdsMiAydjJoMmw1IDVINS4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwZWFrZXJOb3RlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN2wtLjU5LjU5LS41OC41OFY0aDE2djEyek02IDEyaDJ2Mkg2em0wLTNoMnYySDZ6bTAtM2gydjJINnptNCA2aDV2MmgtNXptMC0zaDh2MmgtOHptMC0zaDh2MmgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwZWxsY2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjQ1IDE2aDIuMDlMOS40MyAzSDcuNTdMMi40NiAxNmgyLjA5bDEuMTItM2g1LjY0bDEuMTQgM3ptLTYuMDItNUw4LjUgNS40OCAxMC41NyAxMUg2LjQzem0xNS4xNi41OS04LjA5IDguMDlMOS44MyAxNmwtMS40MSAxLjQxIDUuMDkgNS4wOUwyMyAxM2wtMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhclJhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA4Ljg5Ljk0IDMuMTFoMi44MmwtMi4yNyAxLjYyLjkzIDMuMDFMMTIgMTQuNzlsLTIuNDIgMS44NC45My0zLjAxTDguMjQgMTJoMi44MkwxMiA4Ljg5TTEyIDJsLTIuNDIgOEgybDYuMTcgNC40MUw1LjgzIDIyIDEyIDE3LjMxIDE4LjE4IDIybC0yLjM1LTcuNTlMMjIgMTBoLTcuNThMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem03LjQ4IDcuMTYtNS4wMS0uNDMtMi00LjcxYzMuMjEuMTkgNS45MSAyLjI3IDcuMDEgNS4xNHptLTUuMDcgNi4yNkwxMiAxMy45OGwtMi4zOSAxLjQ0LjYzLTIuNzItMi4xMS0xLjgzIDIuNzgtLjI0TDEyIDguMDZsMS4wOSAyLjU2IDIuNzguMjQtMi4xMSAxLjgzLjY0IDIuNzN6bS0yLjg2LTExLjQtMiA0LjcyLTUuMDIuNDNjMS4xLTIuODggMy44LTQuOTcgNy4wMi01LjE1ek00IDEyYzAtLjY0LjA4LTEuMjYuMjMtMS44NmwzLjc5IDMuMjgtMS4xMSA0Ljc1QTcuOTgyIDcuOTgyIDAgMCAxIDQgMTJ6bTMuODQgNi44MkwxMiAxNi4zMWw0LjE2IDIuNUE3LjkyNCA3LjkyNCAwIDAgMSAxMS45OSAyMGMtMS41MiAwLTIuOTQtLjQ0LTQuMTUtMS4xOHptOS4yNS0uNjUtMS4xMS00Ljc1IDMuNzktMy4yOGMuMTQuNTkuMjMgMS4yMi4yMyAxLjg2IDAgMi40OC0xLjE0IDQuNy0yLjkxIDYuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGlja3lOb3RlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDV2OWgtNXY1SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMGw2LTZWNWMwLTEuMS0uOS0yLTItMnptLTcgMTFIN3YtMmg1djJ6bTUtNEg3VjhoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4zNiA5IC42IDNINS4wNGwuNi0zaDEyLjcyTTIwIDRINHYyaDE2VjR6bTAgM0g0bC0xIDV2MmgxdjZoMTB2LTZoNHY2aDJ2LTZoMXYtMmwtMS01ek02IDE4di00aDZ2NEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3ViamVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTdINHYyaDEwdi0yem02LThINHYyaDE2Vjl6TTQgMTVoMTZ2LTJINHYyek00IDV2MmgxNlY1SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdWJ0aXRsZXNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDYuODNsMiAySDIwdjExLjE3bDEuNzYgMS43NmMuMTUtLjI4LjI0LS41OS4yNC0uOTNWNmMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTBoLTUuMTdsMiAySDE4ek0xLjA0IDMuODdsMS4yIDEuMkMyLjA5IDUuMzUgMiA1LjY2IDIgNnYxMmMwIDEuMS45IDIgMiAyaDEzLjE3bDIuOTYgMi45NiAxLjQxLTEuNDFMMi40NSAyLjQ1IDEuMDQgMy44N3pNNCA2LjgzIDcuMTcgMTBINnYyaDJ2LTEuMTdMMTEuMTcgMTRINnYyaDcuMTdsMiAySDRWNi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1cGVydmlzZWRVc2VyQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDEwYzAtMS42NS0xLjM1LTMtMy0zcy0zIDEuMzUtMyAzIDEuMzUgMyAzIDMgMy0xLjM1IDMtM3ptLTMgMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem02LjUgMmMxLjExIDAgMi0uODkgMi0yIDAtMS4xMS0uODktMi0yLTItMS4xMSAwLTIuMDEuODktMiAyIDAgMS4xMS44OSAyIDIgMnpNMTEuOTkgMi4wMWMtNS41MiAwLTEwIDQuNDgtMTAgMTBzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwLTQuNDgtMTAtMTAtMTB6TTUuODQgMTcuMTJjLjY4LS41NCAyLjI3LTEuMTEgMy42Ni0xLjExLjA3IDAgLjE1LjAxLjIzLjAxLjI0LS42NC42Ny0xLjI5IDEuMy0xLjg2QTkuMDUgOS4wNSAwIDAgMCA5LjUgMTRjLTEuMyAwLTMuMzkuNDUtNC43MyAxLjQzLS41LTEuMDQtLjc4LTIuMi0uNzgtMy40MyAwLTQuNDEgMy41OS04IDgtOHM4IDMuNTkgOCA4YzAgMS4yLS4yNyAyLjM0LS43NSAzLjM3LTEtLjU5LTIuMzYtLjg3LTMuMjQtLjg3LTEuNTIgMC00LjUuODEtNC41IDIuN3YyLjc4YTcuOTM1IDcuOTM1IDAgMCAxLTUuNjYtMi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1cGVydmlzb3JBY2NvdW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEyYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzEwLjkzIDUgOSA1IDUuNSA2LjU3IDUuNSA4LjUgNy4wNyAxMiA5IDEyem0wLTVjLjgzIDAgMS41LjY3IDEuNSAxLjVTOS44MyAxMCA5IDEwcy0xLjUtLjY3LTEuNS0xLjVTOC4xNyA3IDkgN3ptLjA1IDEwSDQuNzdjLjk5LS41IDIuNy0xIDQuMjMtMSAuMTEgMCAuMjMuMDEuMzQuMDEuMzQtLjczLjkzLTEuMzMgMS42NC0xLjgxLS43My0uMTMtMS40Mi0uMi0xLjk4LS4yLTIuMzQgMC03IDEuMTctNyAzLjVWMTloN3YtMS41YzAtLjE3LjAyLS4zNC4wNS0uNXptNy40NS0yLjVjLTEuODQgMC01LjUgMS4wMS01LjUgM1YxOWgxMXYtMS41YzAtMS45OS0zLjY2LTMtNS41LTN6bTEuMjEtMS44MmMuNzYtLjQzIDEuMjktMS4yNCAxLjI5LTIuMThhMi41IDIuNSAwIDAgMC01IDBjMCAuOTQuNTMgMS43NSAxLjI5IDIuMTguMzYuMi43Ny4zMiAxLjIxLjMycy44NS0uMTIgMS4yMS0uMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdXBwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNy40NiA3LjEyLTIuNzggMS4xNWE0Ljk4MiA0Ljk4MiAwIDAgMC0yLjk1LTIuOTRsMS4xNS0yLjc4YzIuMS44IDMuNzcgMi40NyA0LjU4IDQuNTd6TTEyIDE1Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pNOS4xMyA0LjU0bDEuMTcgMi43OGE1IDUgMCAwIDAtMi45OCAyLjk3TDQuNTQgOS4xM2E3Ljk4NCA3Ljk4NCAwIDAgMSA0LjU5LTQuNTl6TTQuNTQgMTQuODdsMi43OC0xLjE1YTQuOTY4IDQuOTY4IDAgMCAwIDIuOTcgMi45NmwtMS4xNyAyLjc4YTcuOTk2IDcuOTk2IDAgMCAxLTQuNTgtNC41OXptMTAuMzQgNC41OS0xLjE1LTIuNzhhNC45NzggNC45NzggMCAwIDAgMi45NS0yLjk3bDIuNzggMS4xN2E4LjAwNyA4LjAwNyAwIDAgMS00LjU4IDQuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2FwSG9yaXogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuOTkgMTEgMyAxNWwzLjk5IDR2LTNIMTR2LTJINi45OXYtM3pNMjEgOWwtMy45OS00djNIMTB2Mmg3LjAxdjNMMjEgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3YXBIb3Jpem9udGFsQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMy0xMy41VjloLTR2Mmg0djIuNWwzLjUtMy41em0tNiA0TDUuNSAxNCA5IDE3LjVWMTVoNHYtMkg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dhcFZlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE3LjAxVjEwaC0ydjcuMDFoLTNMMTUgMjFsNC0zLjk5aC0zek05IDMgNSA2Ljk5aDNWMTRoMlY2Ljk5aDNMOSAzem03IDE0LjAxVjEwaC0ydjcuMDFoLTNMMTUgMjFsNC0zLjk5aC0zek05IDMgNSA2Ljk5aDNWMTRoMlY2Ljk5aDNMOSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dhcFZlcnRpY2FsQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpNNi41IDkgMTAgNS41IDEzLjUgOUgxMXY0SDlWOXptMTEgNkwxNCAxOC41IDEwLjUgMTVIMTN2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTMuOWE1IDUgMCAxIDAtMiAwdjQuMjdsLTEuNTktMS41OUw4IDE4bDQgNCA0LTQtMS40MS0xLjQxTDEzIDE4LjE3VjEzLjl6TTE1IDljMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMjIgMTAtNC4xNS4wMWEuOTc1Ljk3NSAwIDAgMC0uNDUuMDhsLS41OS4yNi0xLjgzLTQuMWMtLjU2LTEuMjYtMi4wNC0xLjgzLTMuMy0xLjI3cy0xLjgzIDIuMDQtMS4yNyAzLjNsMy4zIDcuNDUtMS44Ny4zOWMtLjE5LjA1LS45OS4yNy0xLjM2IDEuMjFMOCAxOS4xOWw2Ljc4IDIuNjdjLjQ5LjE5IDEuMDUuMTggMS41My0uMDRsNS45OS0yLjY1Yy44OS0uNCAxLjM3LTEuMzggMS4xMy0yLjMybC0xLjM2LTUuMzRjLS4yMi0uODYtLjk3LTEuNDctMS44NS0xLjUxem0xLjI3IDcuMzRMMTUuNSAyMGwtNC45Mi0xLjk2IDQuMTgtLjg4LTQuMy05LjdjLS4xMS0uMjUgMC0uNTUuMjUtLjY2LjI1LS4xMS41NSAwIC42Ni4yNWwyLjUgNS42NSAxLjYxLS43MSA0LjY1LjAxIDEuMzYgNS4zNHpNMy44IDEyLjE4Yy0uMi0uODYtLjMtMS43Ni0uMy0yLjY4IDAtMi44NC45OS01LjQ1IDIuNjMtNy41TDcuMiAzLjA3YTEwLjQ1NyAxMC40NTcgMCAwIDAtMS44OCA4Ljk5bDEuNjItMS42Mkw4IDExLjUgNC41IDE1IDEgMTEuNWwxLjA2LTEuMDYgMS43NCAxLjc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVMZWZ0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMSAxM2E1IDUgMCAxIDAgMC0ySDUuODNsMS41OS0xLjU5TDYgOGwtNCA0IDQgNCAxLjQxLTEuNDFMNS44MyAxM2g0LjI3em00LjkgMmMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2lwZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC44OSAxMy43Ny0zLjgtMS42N2MtLjEzLS4wNi0uMjgtLjEtLjQ0LS4xSDE0VjcuNWEyLjUgMi41IDAgMCAwLTUgMHY4LjE1bC0xLjg3LS40Yy0uMTktLjAzLTEuMDItLjE1LTEuNzMuNTZMNCAxNy4yMmw1LjEyIDUuMTljLjM3LjM4Ljg4LjU5IDEuNDEuNTloNi41NWMuOTggMCAxLjgxLS43IDEuOTctMS42N2wuOTItNS40NGEyIDIgMCAwIDAtMS4wOC0yLjEyek0xNy4wOCAyMWgtNi41NWwtMy43LTMuNzggNC4xNy44OVY3LjVjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2Ni4xOGgxLjc2TDE4IDE1LjU2IDE3LjA4IDIxek00LjA5IDUuNUg3VjdIMlYyaDEuNXYyLjAyQzUuODIgMi4xMyA4Ljc4IDEgMTIgMWM1LjQ5IDAgOS4yNyAzLjEyIDEwIDZoLTEuNTdjLS43Ni0xLjk4LTMuNjktNC41LTguNDMtNC41LTMuMDMgMC01Ljc5IDEuMTQtNy45MSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVSaWdodEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkgMTFhNSA1IDAgMSAwIDAgMmg0LjI3bC0xLjU5IDEuNTlMMTggMTZsNC00LTQtNC0xLjQxIDEuNDFMMTguMTcgMTFIMTMuOXpNOSA5YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC44OSAxMy43Ny0zLjgtMS42N2MtLjEzLS4wNi0uMjgtLjEtLjQ0LS4xSDE0VjcuNWEyLjUgMi41IDAgMCAwLTUgMHY4LjE1bC0xLjg3LS40Yy0uMTktLjAzLTEuMDItLjE1LTEuNzMuNTZMNCAxNy4yMmw1LjEyIDUuMTljLjM3LjM4Ljg4LjU5IDEuNDEuNTloNi41NWMuOTggMCAxLjgxLS43IDEuOTctMS42N2wuOTItNS40NGEyIDIgMCAwIDAtMS4wOC0yLjEyek0xNy4wOCAyMWgtNi41NWwtMy43LTMuNzggNC4xNy44OVY3LjVjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2Ni4xOGgxLjc2TDE4IDE1LjU2IDE3LjA4IDIxek0xMiAyLjVDNy4yNiAyLjUgNC4zMyA1LjAyIDMuNTcgN0gyYy43My0yLjg4IDQuNTEtNiAxMC02IDMuMjIgMCA2LjE4IDEuMTMgOC41IDMuMDJWMkgyMnY1aC01VjUuNWgyLjkxYy0yLjEyLTEuODYtNC44OC0zLTcuOTEtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlVXBBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA1LjgzIDEuNTkgMS41OUwxNiA2bC00LTQtNCA0IDEuNDEgMS40MUwxMSA1LjgzdjQuMjdhNSA1IDAgMSAwIDIgMFY1Ljgzek0xMiAxOGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2lwZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMjIgMTAtNC4xNS4wMWEuOTc1Ljk3NSAwIDAgMC0uNDUuMDhsLS41OS4yNi0xLjgzLTQuMWMtLjU2LTEuMjYtMi4wNC0xLjgzLTMuMy0xLjI3cy0xLjgzIDIuMDQtMS4yNyAzLjNsMy4zIDcuNDUtMS44Ny4zOWMtLjE5LjA1LS45OS4yNy0xLjM2IDEuMjFMOCAxOS4xOWw2Ljc4IDIuNjdjLjQ5LjE5IDEuMDUuMTggMS41My0uMDRsNS45OS0yLjY1Yy44OS0uNCAxLjM3LTEuMzggMS4xMy0yLjMybC0xLjM2LTUuMzRjLS4yMi0uODYtLjk3LTEuNDctMS44NS0xLjUxem0xLjI3IDcuMzRMMTUuNSAyMGwtNC45Mi0xLjk2IDQuMTgtLjg4LTQuMy05LjdjLS4xMS0uMjUgMC0uNTUuMjUtLjY2LjI1LS4xMS41NSAwIC42Ni4yNWwyLjUgNS42NSAxLjYxLS43MSA0LjY1LjAxIDEuMzYgNS4zNHpNMi4wNiA1LjU2IDEgNC41IDQuNSAxIDggNC41IDYuOTQgNS41NiA1LjMyIDMuOTRhMTAuNDU3IDEwLjQ1NyAwIDAgMCAxLjg4IDguOTlMNi4xMyAxNEExMS45NzQgMTEuOTc0IDAgMCAxIDMuNSA2LjVjMC0uOTIuMS0xLjgyLjMtMi42OEwyLjA2IDUuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2lwZVZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyaDV2NUg0LjVWNC4wOWMtMS44NiAyLjExLTMgNC44OC0zIDcuOTFzMS4xNCA1Ljc5IDMgNy45MVYxN0g2djVIMXYtMS41aDIuMDJDMS4xMyAxOC4xOCAwIDE1LjIyIDAgMTJzMS4xMy02LjE4IDMuMDItOC41SDFWMnptMTkuMjIgOC00LjE1LjAxYS45NzUuOTc1IDAgMCAwLS40NS4wOGwtLjU5LjI2LTEuODMtNC4xYy0uNTYtMS4yNi0yLjA0LTEuODMtMy4zLTEuMjdzLTEuODMgMi4wNC0xLjI3IDMuM2wzLjMgNy40NS0xLjg3LjM5Yy0uMTkuMDUtLjk5LjI3LTEuMzYgMS4yMUw4IDE5LjE5bDYuNzggMi42N2MuNDkuMTkgMS4wNS4xOCAxLjUzLS4wNGw1Ljk5LTIuNjVjLjg5LS40IDEuMzctMS4zOCAxLjEzLTIuMzJsLTEuMzYtNS4zNGMtLjIyLS44Ni0uOTctMS40Ny0xLjg1LTEuNTF6bTEuMjcgNy4zNEwxNS41IDIwbC00LjkyLTEuOTYgNC4xOC0uODgtNC4zLTkuN2MtLjExLS4yNSAwLS41NS4yNS0uNjYuMjUtLjExLjU1IDAgLjY2LjI1bDIuNSA1LjY1IDEuNjEtLjcxIDQuNjUuMDEgMS4zNiA1LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41IDJ2Mi4wMkMxOC4xOCAyLjEzIDE1LjIyIDEgMTIgMVM1LjgyIDIuMTMgMy41IDQuMDJWMkgydjVoNVY1LjVINC4wOWMyLjExLTEuODYgNC44OC0zIDcuOTEtM3M1Ljc5IDEuMTQgNy45MSAzSDE3VjdoNVYyaC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4Ljg5IDEzLjc3LTMuOC0xLjY3Yy0uMTMtLjA2LS4yOC0uMS0uNDQtLjFIMTRWNy42M2MwLTEuMzItLjk2LTIuNS0yLjI3LTIuNjJBMi41MDggMi41MDggMCAwIDAgOSA3LjV2OC4xNWwtMS44Ny0uNGMtLjE5LS4wMy0xLjAyLS4xNS0xLjczLjU2TDQgMTcuMjJsNS4xMiA1LjE5Yy4zNy4zOC44OC41OSAxLjQxLjU5aDYuNTVjLjk4IDAgMS44MS0uNyAxLjk3LTEuNjdsLjkyLTUuNDRhMiAyIDAgMCAwLTEuMDgtMi4xMnpNMTggMTUuNTYgMTcuMDggMjFoLTYuNTVsLTMuNy0zLjc4IDQuMTcuODlWNy41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djYuMThoMS43NkwxOCAxNS41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXRjaEFjY2Vzc1Nob3J0Y3V0QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wNiA4Ljk0IDUgOGwyLjA2LS45NEw4IDVsLjk0IDIuMDZMMTEgOGwtMi4wNi45NEw4IDExbC0uOTQtMi4wNnpNOCAyMWwuOTQtMi4wNkwxMSAxOGwtMi4wNi0uOTRMOCAxNWwtLjk0IDIuMDZMNSAxOGwyLjA2Ljk0TDggMjF6bS0zLjYzLTguNjNMMyAxM2wxLjM3LjYzTDUgMTVsLjYzLTEuMzdMNyAxM2wtMS4zNy0uNjNMNSAxMWwtLjYzIDEuMzd6TTEyIDEyYzAtMy4wOSAxLjM4LTUuOTQgMy40NC04SDEyVjJoN3Y3aC0yVjUuMjhjLTEuOCAxLjc0LTMgNC4yLTMgNi43MiAwIDMuMzIgMi4xIDYuMzYgNSA3LjgyVjIyYy00LjA5LTEuNTktNy01LjY1LTctMTB6bTEyIDJoLTJ2LTJoLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hBY2Nlc3NTaG9ydGN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDYgOC45NCA1IDhsMi4wNi0uOTRMOCA1bC45NCAyLjA2TDExIDhsLTIuMDYuOTRMOCAxMWwtLjk0LTIuMDZ6TTggMjFsLjk0LTIuMDZMMTEgMThsLTIuMDYtLjk0TDggMTVsLS45NCAyLjA2TDUgMThsMi4wNi45NEw4IDIxem0tMy42My04LjYzTDMgMTNsMS4zNy42M0w1IDE1bC42My0xLjM3TDcgMTNsLTEuMzctLjYzTDUgMTFsLS42MyAxLjM3ek0xMiAxMmMwLTMuMDkgMS4zOC01Ljk0IDMuNDQtOEgxMlYyaDd2N2gtMlY1LjI4Yy0xLjggMS43NC0zIDQuMi0zIDYuNzIgMCAzLjMyIDIuMSA2LjM2IDUgNy44MlYyMmMtNC4wOS0xLjU5LTctNS42NS03LTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3luY0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgMTMuNDEgNiAxMmwtNCA0IDQgNCAxLjQxLTEuNDFMNS44MyAxN0gyMXYtMkg1Ljgzek0xNi41OSAxMC41OSAxOCAxMmw0LTQtNC00LTEuNDEgMS40MUwxOC4xNyA3SDN2MmgxNS4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5c3RlbVVwZGF0ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMTYgNC00aC0zVjNoLTJ2OUg4bDQgNHptOS0xM2gtNnYxLjk5aDZ2MTQuMDNIM1Y0Ljk5aDZWM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDEzIDQtNGgtM1YzaC0ydjlIOGw0IDR6bTktMTNoLTZ2MS45OWg2djE0LjAzSDNWNC45OWg2VjNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFiVW5zZWxlY3RlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA5aDJWN0gxdjJ6bTAgNGgydi0ySDF2MnptMC04aDJWM2MtMS4xIDAtMiAuOS0yIDJ6bTggMTZoMnYtMkg5djJ6bS04LTRoMnYtMkgxdjJ6bTIgNHYtMkgxYzAgMS4xLjkgMiAyIDJ6TTIxIDNoLTh2NmgxMFY1YzAtMS4xLS45LTItMi0yem0wIDE0aDJ2LTJoLTJ2MnpNOSA1aDJWM0g5djJ6TTUgMjFoMnYtMkg1djJ6TTUgNWgyVjNINXYyem0xNiAxNmMxLjEgMCAyLS45IDItMmgtMnYyem0wLThoMnYtMmgtMnYyem0tOCA4aDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDEwdjRoOHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxlVmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdIOWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDJ2Mkg5VjloMTB6bS02IDZ2LTJoMnYyaC0yem0yIDJ2MmgtMnYtMmgyem0tNC0ySDl2LTJoMnYyem02LTJoMnYyaC0ydi0yem0tOCA0aDJ2Mkg5di0yem04IDJ2LTJoMnYyaC0yek02IDE3SDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMnYxaC0yVjVINXYxMGgxdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYXNrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNS4xOCAxMC41OSAxNi42bC00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44MyAxMC0xMEwyMiA1LjE4em0tMi4yMSA1LjA0Yy4xMy41Ny4yMSAxLjE3LjIxIDEuNzggMCA0LjQyLTMuNTggOC04IDhzLTgtMy41OC04LTggMy41OC04IDgtOGMxLjU4IDAgMy4wNC40NiA0LjI4IDEuMjVsMS40NC0xLjQ0QTkuOSA5LjkgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtMS4xOS0uMjItMi4zMy0uNi0zLjM5bC0xLjYxIDEuNjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXJtaW5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmEyIDIgMCAwIDAtMi0yem0wIDE0SDRWOGgxNnYxMHptLTItMWgtNnYtMmg2djJ6TTcuNSAxN2wtMS40MS0xLjQxTDguNjcgMTNsLTIuNTktMi41OUw3LjUgOWw0IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dFJvdGF0ZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA0LTMgM2gydjEzaDJWN2gybC0zLTN6bS02LjIgMTEuNXYtNWwyLjItLjlWNy41TDMgMTIuMjV2MS41bDExIDQuNzV2LTIuMWwtMi4yLS45ek00Ljk4IDEzIDEwIDExLjEzdjMuNzRMNC45OCAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRSb3RhdGVWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzUgNWgtMS41TDkuNSAxNmgyLjFsLjktMi4yaDVsLjkgMi4yaDIuMUwxNS43NSA1em0tMi42MiA3TDE1IDYuOTggMTYuODcgMTJoLTMuNzR6TTYgMjBsMy0zSDdWNEg1djEzSDNsMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dFJvdGF0aW9uQW5nbGVkb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMXYtNC4yNGwtMS40MSAxLjQxLTkuMi05LjE5LTEuNDEgMS40MSA5LjE5IDkuMTlMMTAuNzYgMjFIMTV6TTExLjI1IDguNDhsMy41NCAzLjU0LS45MiAyLjE5IDEuNDggMS40OCA0LjQyLTExLjE0LTEuMDYtMS4wNUw3LjU3IDcuOTIgOS4wNiA5LjRsMi4xOS0uOTJ6bTYuNTktMy4wNS0yLjIzIDQuODctMi42NC0yLjY0IDQuODctMi4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRSb3RhdGlvbkFuZ2xldXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2Ljc2IDkgMS40MSAxLjQxLTkuMTkgOS4xOSAxLjQxIDEuNDEgOS4xOS05LjE5TDIxIDEzLjI0VjloLTQuMjR6bS04LjI4IDMuNzUgMy41NC0zLjU0IDIuMTkuOTIgMS40OC0xLjQ4TDQuNTYgNC4yMyAzLjUgNS4yOWw0LjQyIDExLjE0IDEuNDgtMS40OC0uOTItMi4yem0tLjgyLTEuNzJMNS40MyA2LjE2bDQuODcgMi4yMy0yLjY0IDIuNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0Um90YXRpb25Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDIwIDMtM0g3VjRINXYxM0gzbDMgM3ptNi4yLTExLjV2NWwtMi4yLjl2Mi4xbDExLTQuNzV2LTEuNUwxMCA1LjV2Mi4xbDIuMi45em02LjgyIDIuNUwxNCAxMi44N1Y5LjEzTDE5LjAyIDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dFJvdGF0aW9uTm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgMTgtMy0zdjJINXYyaDEzdjJsMy0zek05LjUgMTEuOGg1bC45IDIuMmgyLjFMMTIuNzUgM2gtMS41TDYuNSAxNGgyLjFsLjktMi4yek0xMiA0Ljk4IDEzLjg3IDEwaC0zLjc0TDEyIDQuOTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaGVhdGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggM3YyaC0yVjNIOHYySDZWM0g0djE4aDJ2LTJoMnYyaDh2LTJoMnYyaDJWM2gtMnpNOCAxN0g2di0yaDJ2MnptMC00SDZ2LTJoMnYyem0wLTRINlY3aDJ2MnptNiAxMGgtNFY1aDR2MTR6bTQtMmgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW1iRG93bk9mZkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDNINmMtLjgzIDAtMS41NC41LTEuODQgMS4yMmwtMy4wMiA3LjA1Yy0uMDkuMjMtLjE0LjQ3LS4xNC43M3YyYzAgMS4xLjkgMiAyIDJoNi4zMWwtLjk1IDQuNTctLjAzLjMyYzAgLjQxLjE3Ljc5LjQ0IDEuMDZMOS44MyAyM2w2LjU5LTYuNTljLjM2LS4zNi41OC0uODYuNTgtMS40MVY1YzAtMS4xLS45LTItMi0yem0wIDEyLTQuMzQgNC4zNEwxMiAxNEgzdi0ybDMtN2g5djEwem00LTEyaDR2MTJoLTRWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW1iRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgM0g2Yy0uODMgMC0xLjU0LjUtMS44NCAxLjIybC0zLjAyIDcuMDVjLS4wOS4yMy0uMTQuNDctLjE0LjczdjJjMCAxLjEuOSAyIDIgMmg2LjMxbC0uOTUgNC41Ny0uMDMuMzJjMCAuNDEuMTcuNzkuNDQgMS4wNkw5LjgzIDIzbDYuNTktNi41OWMuMzYtLjM2LjU4LS44Ni41OC0xLjQxVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTItNC4zNCA0LjM0TDEyIDE0SDN2LTJsMy03aDl2MTB6bTQtMTJoNHYxMmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW1iVXBPZmZBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIxaDljLjgzIDAgMS41NC0uNSAxLjg0LTEuMjJsMy4wMi03LjA1Yy4wOS0uMjMuMTQtLjQ3LjE0LS43M3YtMmMwLTEuMS0uOS0yLTItMmgtNi4zMWwuOTUtNC41Ny4wMy0uMzJjMC0uNDEtLjE3LS43OS0uNDQtMS4wNkwxNC4xNyAxIDcuNTggNy41OUM3LjIyIDcuOTUgNyA4LjQ1IDcgOXYxMGMwIDEuMS45IDIgMiAyek05IDlsNC4zNC00LjM0TDEyIDEwaDl2MmwtMyA3SDlWOXpNMSA5aDR2MTJIMVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGh1bWJVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyMWg5Yy44MyAwIDEuNTQtLjUgMS44NC0xLjIybDMuMDItNy4wNWMuMDktLjIzLjE0LS40Ny4xNC0uNzN2LTJjMC0xLjEtLjktMi0yLTJoLTYuMzFsLjk1LTQuNTcuMDMtLjMyYzAtLjQxLS4xNy0uNzktLjQ0LTEuMDZMMTQuMTcgMSA3LjU4IDcuNTlDNy4yMiA3Ljk1IDcgOC40NSA3IDl2MTBjMCAxLjEuOSAyIDIgMnpNOSA5bDQuMzQtNC4zNEwxMiAxMGg5djJsLTMgN0g5Vjl6TTEgOWg0djEySDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaHVtYnNVcERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjMC0uNTUtLjQ1LTEtMS0xSDUuODJsLjY2LTMuMTguMDItLjIzYzAtLjMxLS4xMy0uNTktLjMzLS44TDUuMzggMCAuNDQgNC45NEMuMTcgNS4yMSAwIDUuNTkgMCA2djYuNWMwIC44My42NyAxLjUgMS41IDEuNWg2Ljc1Yy42MiAwIDEuMTUtLjM4IDEuMzgtLjkxbDIuMjYtNS4yOWMuMDctLjE3LjExLS4zNi4xMS0uNTVWNnptLTIgMS4xM0w3LjkyIDEySDJWNi4yMWwxLjkzLTEuOTNMMy4zNiA3SDEwdi4xM3pNMjIuNSAxMGgtNi43NWMtLjYyIDAtMS4xNS4zOC0xLjM4LjkxbC0yLjI2IDUuMjljLS4wNy4xNy0uMTEuMzYtLjExLjU1VjE4YzAgLjU1LjQ1IDEgMSAxaDUuMThsLS42NiAzLjE4LS4wMi4yNGMwIC4zMS4xMy41OS4zMy44bC43OS43OCA0Ljk0LTQuOTRjLjI3LS4yNy40NC0uNjUuNDQtMS4wNnYtNi41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXptLS41IDcuNzktMS45MyAxLjkzLjU3LTIuNzJIMTR2LS4xM0wxNi4wOCAxMkgyMnY1Ljc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZWxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA4YzAgMS4xLS45IDItMiAyYTEuNyAxLjcgMCAwIDEtLjUxLS4wN2wtMy41NiAzLjU1Yy4wNS4xNi4wNy4zNC4wNy41MiAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJjMC0uMTguMDItLjM2LjA3LS41MmwtMi41NS0yLjU1Yy0uMTYuMDUtLjM0LjA3LS41Mi4wN3MtLjM2LS4wMi0uNTItLjA3bC00LjU1IDQuNTZjLjA1LjE2LjA3LjMzLjA3LjUxIDAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMmMuMTggMCAuMzUuMDIuNTEuMDdsNC41Ni00LjU1QzguMDIgOS4zNiA4IDkuMTggOCA5YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAuMTgtLjAyLjM2LS4wNy41MmwyLjU1IDIuNTVjLjE2LS4wNS4zNC0uMDcuNTItLjA3cy4zNi4wMi41Mi4wN2wzLjU1LTMuNTZBMS43IDEuNyAwIDAgMSAxOSA4YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaXBzQW5kVXBkYXRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjBoNGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ6bS0yLTFoOHYtMkg1djJ6bTExLjUtOS41YzAgMy44Mi0yLjY2IDUuODYtMy43NyA2LjVINS4yN2MtMS4xMS0uNjQtMy43Ny0yLjY4LTMuNzctNi41QzEuNSA1LjM2IDQuODYgMiA5IDJzNy41IDMuMzYgNy41IDcuNXptLTIgMEMxNC41IDYuNDcgMTIuMDMgNCA5IDRTMy41IDYuNDcgMy41IDkuNWMwIDIuNDcgMS40OSAzLjg5IDIuMzUgNC41aDYuM2MuODYtLjYxIDIuMzUtMi4wMyAyLjM1LTQuNXptNi44Ny0yLjEzTDIwIDhsMS4zNy42M0wyMiAxMGwuNjMtMS4zN0wyNCA4bC0xLjM3LS42M0wyMiA2bC0uNjMgMS4zN3pNMTkgNmwuOTQtMi4wNkwyMiAzbC0yLjA2LS45NEwxOSAwbC0uOTQgMi4wNkwxNiAzbDIuMDYuOTRMMTkgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5aDE0VjdIM3Yyem0wIDRoMTR2LTJIM3Yyem0wIDRoMTR2LTJIM3Yyem0xNiAwaDJ2LTJoLTJ2MnptMC0xMHYyaDJWN2gtMnptMCA2aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvZGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djEwem0wLTEySDVWNWgxNHYyek03IDExaDV2NUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG9rZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSA3LTktNS05IDV2MTBsOSA1IDktNVY3em0tOS0yLjcxIDUuOTEgMy4yOC0zLjAxIDEuNjdDMTQuMTcgOC40OCAxMy4xNCA4IDEyIDhzLTIuMTcuNDgtMi45IDEuMjRMNi4wOSA3LjU3IDEyIDQuMjl6bS0xIDE0Ljg3LTYtMy4zM1Y5LjI2TDguMTMgMTFjLS4wOS4zMS0uMTMuNjUtLjEzIDEgMCAxLjg2IDEuMjcgMy40MyAzIDMuODd2My4yOXpNMTAgMTJjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptMyA3LjE2di0zLjI4YzEuNzMtLjQ0IDMtMi4wMSAzLTMuODcgMC0uMzUtLjA0LS42OS0uMTMtMS4wMUwxOSA5LjI2djYuNTdsLTYgMy4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpNMyAxMmE1Ljk5IDUuOTkgMCAwIDEgNC01LjY1VjQuMjZDMy41NSA1LjE1IDEgOC4yNyAxIDEyczIuNTUgNi44NSA2IDcuNzR2LTIuMDlBNS45OSA1Ljk5IDAgMCAxIDMgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb3VjaEFwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjE5IDEyLjQ0LTMuMjQtMS42MmMxLjI5LTEgMi4xMi0yLjU2IDIuMTItNC4zMiAwLTMuMDMtMi40Ny01LjUtNS41LTUuNXMtNS41IDIuNDctNS41IDUuNWMwIDIuMTMgMS4yMiAzLjk4IDMgNC44OXYzLjI2Yy0yLjE1LS40Ni0yLjAyLS40NC0yLjI2LS40NC0uNTMgMC0xLjAzLjIxLTEuNDEuNTlMNCAxNi4yMmw1LjA5IDUuMDljLjQzLjQ0IDEuMDMuNjkgMS42NS42OWg2LjNjLjk4IDAgMS44MS0uNyAxLjk3LTEuNjdsLjgtNC43MWMuMjItMS4zLS40My0yLjU4LTEuNjItMy4xOHptLS4zNSAyLjg1LS44IDQuNzFoLTYuM2MtLjA5IDAtLjE3LS4wNC0uMjQtLjFsLTMuNjgtMy42OCA0LjI1Ljg5VjYuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY2aDEuNzZsMy40NiAxLjczYy40LjIuNjIuNjMuNTUgMS4wNnpNOC4wNyA2LjVjMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNWMwIC45NS0uMzggMS44MS0xIDIuNDRWNi41YTIuNSAyLjUgMCAwIDAtNSAwdjIuNDRjLS42Mi0uNjMtMS0xLjQ5LTEtMi40NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDdWMkg1djIwaDJ2LThoMTRsLTItNSAyLTV6bS0zLjg2IDUuNzQuOSAyLjI2SDdWNmgxMS4wNWwtLjkgMi4yNi0uMy43NC4yOS43NHpNMTQgOWMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFja0NoYW5nZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjA3IDQuOTMtMS40MSAxLjQxQTguMDE0IDguMDE0IDAgMCAxIDIwIDEyYzAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04YzAtNC4wOCAzLjA1LTcuNDQgNy03LjkzdjIuMDJDOC4xNiA2LjU3IDYgOS4wMyA2IDEyYzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0xLjY2LS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MSAxLjQxQzE1LjU1IDkuOSAxNiAxMC45IDE2IDEyYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00YzAtMS44NiAxLjI4LTMuNDEgMy0zLjg2djIuMTRjLS42LjM1LTEgLjk4LTEgMS43MiAwIDEuMS45IDIgMiAyczItLjkgMi0yYzAtLjc0LS40LTEuMzgtMS0xLjcyVjJoLTFDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyYW5zY3JpYmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEzYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptNi4zOSA4LjU2QzEzLjcxIDE0LjcgMTEuNTMgMTQgOSAxNHMtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgMSAxOC4yMlYyMWgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xNSAxOUgzdi0uNzhjMC0uMzguMi0uNzIuNTItLjg4QzQuNzEgMTYuNzMgNi42MyAxNiA5IDE2YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE5em0yLjkzLTMgMS42My0xLjYzYy0yLjc3LTMuMDItMi43Ny03LjU2IDAtMTAuNzRMMTcuOTMgMmMtMy45IDMuODktMy45MSA5Ljk1IDAgMTR6bTQuOTktNS4wNWEzLjMxNyAzLjMxNyAwIDAgMSAwLTMuODlsLTEuNjgtMS42OWMtMi4wMiAyLjAyLTIuMDIgNS4wNyAwIDcuMjdsMS42OC0xLjY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhbnNsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi44NyAxNS4wNy0yLjU0LTIuNTEuMDMtLjAzQTE3LjUyIDE3LjUyIDAgMCAwIDE0LjA3IDZIMTdWNGgtN1YySDh2MkgxdjEuOTloMTEuMTdDMTEuNSA3LjkyIDEwLjQ0IDkuNzUgOSAxMS4zNSA4LjA3IDEwLjMyIDcuMyA5LjE5IDYuNjkgOGgtMmMuNzMgMS42MyAxLjczIDMuMTcgMi45OCA0LjU2bC01LjA5IDUuMDJMNCAxOWw1LTUgMy4xMSAzLjExLjc2LTIuMDR6TTE4LjUgMTBoLTJMMTIgMjJoMmwxLjEyLTNoNC43NUwyMSAyMmgybC00LjUtMTJ6bS0yLjYyIDcgMS42Mi00LjMzTDE5LjEyIDE3aC0zLjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJlbmRpbmdEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiAxOCAyLjI5LTIuMjktNC44OC00Ljg4LTQgNEwyIDcuNDEgMy40MSA2bDYgNiA0LTQgNi4zIDYuMjlMMjIgMTJ2NmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyZW5kaW5nRmxhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMTItNC00djNIM3YyaDE1djNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJlbmRpbmdVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgNiAyLjI5IDIuMjktNC44OCA0Ljg4LTQtNEwyIDE2LjU5IDMuNDEgMThsNi02IDQgNCA2LjMtNi4yOUwyMiAxMlY2aC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJvdWJsZXNob290IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMjAuNTktNC42OS00LjY5QTcuOTAyIDcuOTAyIDAgMCAwIDE5IDExYzAtNC40Mi0zLjU4LTgtOC04LTQuMDggMC03LjQ0IDMuMDUtNy45MyA3aDIuMDJDNS41NyA3LjE3IDguMDMgNSAxMSA1YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2Yy0yLjQyIDAtNC41LTEuNDQtNS40NS0zLjVIMy40QzQuNDUgMTYuNjkgNy40NiAxOSAxMSAxOWMxLjg1IDAgMy41NS0uNjMgNC45LTEuNjlMMjAuNTkgMjIgMjIgMjAuNTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNDMgOS42OSA5LjY1IDE1aDEuNjRsMS4yNi0zLjc4Ljk1IDIuMjhoMlYxMmgtMWwtMS4yNS0zaC0xLjU0bC0xLjEyIDMuMzdMOS4zNSA3SDcuN2wtMS4yNSA0SDF2MS41aDYuNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNSAxLjU3LTMuNDNMMTcgMTBsLTMuNDMtMS41N0wxMiA1bC0xLjU3IDMuNDNMNyAxMGwzLjQzIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdXJuZWRJbk5vdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yem0wIDE1LTUtMi4xOEw3IDE4VjVoMTB2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdXJuZWRJbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW5mb2xkTGVzc0RvdWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU4IDEuNDEgMTUuMTYgMGwtMy4xNyAzLjE3TDguODIgMCA3LjQxIDEuNDEgMTEuOTkgNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTggNi40MSAxNS4xNiA1bC0zLjE3IDMuMTdMOC44MiA1IDcuNDEgNi40MSAxMS45OSAxMXpNNy40MiAxNy41OSA4Ljg0IDE5bDMuMTctMy4xN0wxNS4xOCAxOWwxLjQxLTEuNDFMMTIuMDEgMTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDIgMjIuNTkgOC44NCAyNGwzLjE3LTMuMTdMMTUuMTggMjRsMS40MS0xLjQxTDEyLjAxIDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW5mb2xkTW9yZURvdWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDcuODMgMTUuMTcgMTFsMS40MS0xLjQxTDEyIDUgNy40MSA5LjU5IDguODMgMTEgMTIgNy44M3ptMC01TDE1LjE3IDZsMS40MS0xLjQxTDEyIDAgNy40MSA0LjU5IDguODMgNiAxMiAyLjgzem0wIDE4LjM0TDguODMgMThsLTEuNDEgMS40MUwxMiAyNGw0LjU5LTQuNTlMMTUuMTcgMTggMTIgMjEuMTd6bTAtNUw4LjgzIDEzbC0xLjQxIDEuNDFMMTIgMTlsNC41OS00LjU5TDE1LjE3IDEzIDEyIDE2LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW5wdWJsaXNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljk0IDUuMTIgNi40OSAzLjY2QTkuOTEgOS45MSAwIDAgMSAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwIDAgMi4wNC0uNjEgMy45My0xLjY2IDUuNTFsLTEuNDYtMS40NkE3Ljg2OSA3Ljg2OSAwIDAgMCAyMCAxMmMwLTQuNDEtMy41OS04LTgtOC0xLjQ4IDAtMi44Ni40MS00LjA2IDEuMTJ6bTkuNzIgNC40MS0xLjQxLTEuNDEtMi42NSAyLjY1IDEuNDEgMS40MSAyLjY1LTIuNjV6bTIuMTIgMTMuMDgtMi4yNy0yLjI3QTkuOTEgOS45MSAwIDAgMSAxMiAyMkM2LjQ4IDIyIDIgMTcuNTIgMiAxMmMwLTIuMDQuNjEtMy45MyAxLjY2LTUuNTFMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyem0tMy43Mi0zLjczTDEyLjE4IDE1bC0xLjU5IDEuNTktNC4yNC00LjI0IDEuNDEtMS40MSAyLjgzIDIuODMuMTgtLjE4LTUuNjUtNS42NUE3LjkzMiA3LjkzMiAwIDAgMCA0IDEyYzAgNC40MSAzLjU5IDggOCA4IDEuNDggMCAyLjg2LS40MSA0LjA2LTEuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVcGRhdGVEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDEzYTguODY1IDguODY1IDAgMCAxLTEuMzMgMy43OWwtMS40Ny0xLjQ3Yy4zOC0uNzEuNjUtMS40OS43Ny0yLjMyaDIuMDN6TTguNjcgNS44NEE3LjA2IDcuMDYgMCAwIDEgMTIgNWE3LjAxIDcuMDEgMCAwIDEgNS43NCAzSDE1djJoNlY0aC0ydjIuMzZDMTcuMzUgNC4zMiAxNC44MyAzIDEyIDNjLTEuNzYgMC0zLjQuNTEtNC43OCAxLjM5bDEuNDUgMS40NXpNMTEgN3YxLjE3bDIgMlY3aC0yem04Ljc4IDE1LjYxLTMtM0E4Ljk3MyA4Ljk3MyAwIDAgMSAxMiAyMWE5IDkgMCAwIDEtOS05YzAtMS43Ni41MS0zLjQgMS4zOS00Ljc4bC0zLTNMMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6bS00LjQ2LTQuNDZMNS44NCA4LjY3QTcuMDYgNy4wNiAwIDAgMCA1IDEyYzAgMy44NiAzLjE0IDcgNyA3IDEuMiAwIDIuMzQtLjMxIDMuMzItLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXBkYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOHY1bDQuMjUgMi41Mi43Ny0xLjI4LTMuNTItMi4wOVY4SDExem0xMCAyVjNsLTIuNjQgMi42NEE4LjkzNyA4LjkzNyAwIDAgMCAxMiAzYTkgOSAwIDEgMCA5IDloLTJjMCAzLjg2LTMuMTQgNy03IDdzLTctMy4xNC03LTcgMy4xNC03IDctN2MxLjkzIDAgMy42OC43OSA0Ljk1IDIuMDVMMTQgMTBoN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVwZ3JhZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxOHYySDh2LTJoOHpNMTEgNy45OVYxNmgyVjcuOTloM0wxMiA0IDggNy45OWgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVyaWZpZWRVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHptNyAxMGMwIDQuNTItMi45OCA4LjY5LTcgOS45My00LjAyLTEuMjQtNy01LjQxLTctOS45M1Y2LjNsNy0zLjExIDcgMy4xMVYxMXptLTExLjU5LjU5TDYgMTNsNCA0IDgtOC0xLjQxLTEuNDJMMTAgMTQuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWZXJpZmllZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDExLjk5IDIwLjU2IDkuMmwuMzQtMy42OS0zLjYxLS44MkwxNS40IDEuNSAxMiAyLjk2IDguNiAxLjUgNi43MSA0LjY5IDMuMSA1LjVsLjM0IDMuN0wxIDExLjk5bDIuNDQgMi43OS0uMzQgMy43IDMuNjEuODIgMS44OSAzLjIgMy40LTEuNDcgMy40IDEuNDYgMS44OS0zLjE5IDMuNjEtLjgyLS4zNC0zLjY5IDIuNDQtMi44em0tMy45NSAxLjQ4LS41Ni42NS4wOC44NS4xOCAxLjk1LTEuOS40My0uODQuMTktLjQ0Ljc0LS45OSAxLjY4LTEuNzgtLjc3LS44LS4zNC0uNzkuMzQtMS43OC43Ny0uOTktMS42Ny0uNDQtLjc0LS44NC0uMTktMS45LS40My4xOC0xLjk2LjA4LS44NS0uNTYtLjY1TDMuNjcgMTJsMS4yOS0xLjQ4LjU2LS42NS0uMDktLjg2LS4xOC0xLjk0IDEuOS0uNDMuODQtLjE5LjQ0LS43NC45OS0xLjY4IDEuNzguNzcuOC4zNC43OS0uMzQgMS43OC0uNzcuOTkgMS42OC40NC43NC44NC4xOSAxLjkuNDMtLjE4IDEuOTUtLjA4Ljg1LjU2LjY1IDEuMjkgMS40Ny0xLjI4IDEuNDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjA5IDEzLjc1LTIuMzItMi4zMy0xLjQ4IDEuNDkgMy44IDMuODEgNy4zNC03LjM2LTEuNDgtMS40OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsU3BsaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNoOHYySDN6bTAgNGg4djJIM3ptMC04aDh2Mkgzem0wLTRoOHYySDN6bTE2IDJ2MTBoLTRWN2g0bTItMmgtOHYxNGg4VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3QWdlbmRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTNINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi00YzAtMS4xLS45LTItMi0yem0wIDZINXYtNGgxNHY0ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDZINVY1aDE0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3QXJyYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3djEwSDlWN2g2em02LTJoLTN2MTRoM1Y1em0tNCAwSDd2MTRoMTBWNXpNNiA1SDN2MTRoM1Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0Nhcm91c2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA3aDR2MTBIMlY3em01IDEyaDEwVjVIN3YxNHpNOSA3aDZ2MTBIOVY3em05IDBoNHYxMGgtNFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0NvbHVtbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGgxOFY1SDN6bTUuMzMgMTJINVY3aDMuMzN2MTB6bTUuMzQgMGgtMy4zM1Y3aDMuMzN2MTB6TTE5IDE3aC0zLjMzVjdIMTl2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3Q29tZnlBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoNHY0SDd6TTEzIDdoNHY0aC00ek03IDEzaDR2NEg3ek0xMyAxM2g0djRoLTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdDb21wYWN0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgNy41aDR2NGgtNHpNMTIuNSA3LjVoNHY0aC00ek03LjUgMTIuNWg0djRoLTR6TTEyLjUgMTIuNWg0djRoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3Q296eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMjUgNy4yNWg0djRoLTR6TTEyLjc1IDcuMjVoNHY0aC00ek03LjI1IDEyLjc1aDR2NGgtNHpNMTIuNzUgMTIuNzVoNHY0aC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3RGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxOEgydjJoMTl2LTJ6bS0yLTh2NEg0di00aDE1bTEtMkgzYy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxN2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bTEtNEgydjJoMTlWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdIZWFkbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxNWgxNnYtMkg0djJ6bTAgNGgxNnYtMkg0djJ6bTAtOGgxNlY5SDR2MnptMC02djJoMTZWNUg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0luQXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDRjMC0uNTUuNDUtMSAxLTFoMlYxSDRDMi4zNCAxIDEgMi4zNCAxIDR2MmgyVjR6TTMgMjB2LTJIMXYyYzAgMS42NiAxLjM0IDMgMyAzaDJ2LTJINGMtLjU1IDAtMS0uNDUtMS0xek0yMCAxaC0ydjJoMmMuNTUgMCAxIC40NSAxIDF2MmgyVjRjMC0xLjY2LTEuMzQtMy0zLTN6TTIxIDIwYzAgLjU1LS40NSAxLTEgMWgtMnYyaDJjMS42NiAwIDMtMS4zNCAzLTN2LTJoLTJ2MnpNMTkgMTQuODdWOS4xM2MwLS43Mi0uMzgtMS4zOC0xLTEuNzNsLTUtMi44OGMtLjMxLS4xOC0uNjUtLjI3LTEtLjI3cy0uNjkuMDktMSAuMjdMNiA3LjM5Yy0uNjIuMzYtMSAxLjAyLTEgMS43NHY1Ljc0YzAgLjcyLjM4IDEuMzggMSAxLjczbDUgMi44OGMuMzEuMTguNjUuMjcgMSAuMjdzLjY5LS4wOSAxLS4yN2w1LTIuODhjLjYyLS4zNSAxLTEuMDEgMS0xLjczem0tOCAyLjMtNC0yLjN2LTQuNjNsNCAyLjMzdjQuNnptMS02LjMzTDguMDQgOC41MyAxMiA2LjI1bDMuOTYgMi4yOEwxMiAxMC44NHptNSA0LjAzLTQgMi4zdi00LjZsNC0yLjMzdjQuNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3S2FuYmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDJ2MTBIN3pNMTEgN2gydjVoLTJ6TTE1IDdoMnY4aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3TGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGgxOFY1SDN6bTQgMnYySDVWN2gyem0tMiA2di0yaDJ2Mkg1em0wIDJoMnYySDV2LTJ6bTE0IDJIOXYtMmgxMHYyem0wLTRIOXYtMmgxMHYyem0wLTRIOVY3aDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3TW9kdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djE0aDE4VjVIM3ptMTYgNmgtMy4zM1Y3SDE5djR6bS01LjMzIDBoLTMuMzNWN2gzLjMzdjR6TTguMzMgN3Y0SDVWN2gzLjMzek01IDE3di00aDMuMzN2NEg1em01LjMzIDB2LTRoMy4zM3Y0aC0zLjMzem01LjM0IDB2LTRIMTl2NGgtMy4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdRdWlsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGgxOFY1SDN6bTUuMzMgMTJINVY3aDMuMzN2MTB6bTUuMzQgMGgtMy4zM3YtNGgzLjMzdjR6TTE5IDE3aC0zLjMzdi00SDE5djR6bTAtNmgtOC42N1Y3SDE5djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3U2lkZWJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNHYxNmgyMFY0SDJ6bTE4IDQuNjdoLTIuNVY2SDIwdjIuNjd6bS0yLjUgMkgyMHYyLjY3aC0yLjV2LTIuNjd6TTQgNmgxMS41djEySDRWNnptMTMuNSAxMnYtMi42N0gyMFYxOGgtMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld1N0cmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgN3YxMGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ6bTE2IDEwSDV2LTRoMTR2NHpNNSAxMVY3aDE0djRINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdUaW1lbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTVoNnYySDZ6TTEyIDdoNnYyaC02ek05IDExaDZ2Mkg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3V2VlayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek04IDE4SDRWNmg0djEyem02IDBoLTRWNmg0djEyem02IDBoLTRWNmg0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlzaWJpbGl0eU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmE5Ljc3IDkuNzcgMCAwIDEgOC44MiA1LjUgOS42NDcgOS42NDcgMCAwIDEtMi40MSAzLjEybDEuNDEgMS40MWMxLjM5LTEuMjMgMi40OS0yLjc3IDMuMTgtNC41M0MyMS4yNyA3LjExIDE3IDQgMTIgNGMtMS4yNyAwLTIuNDkuMi0zLjY0LjU3bDEuNjUgMS42NUMxMC42NiA2LjA5IDExLjMyIDYgMTIgNnptLTEuMDcgMS4xNEwxMyA5LjIxYy41Ny4yNSAxLjAzLjcxIDEuMjggMS4yOGwyLjA3IDIuMDdjLjA4LS4zNC4xNC0uNy4xNC0xLjA3QzE2LjUgOS4wMSAxNC40OCA3IDEyIDdjLS4zNyAwLS43Mi4wNS0xLjA3LjE0ek0yLjAxIDMuODdsMi42OCAyLjY4QTExLjczOCAxMS43MzggMCAwIDAgMSAxMS41QzIuNzMgMTUuODkgNyAxOSAxMiAxOWMxLjUyIDAgMi45OC0uMjkgNC4zMi0uODJsMy40MiAzLjQyIDEuNDEtMS40MUwzLjQyIDIuNDUgMi4wMSAzLjg3em03LjUgNy41IDIuNjEgMi42MWMtLjA0LjAxLS4wOC4wMi0uMTIuMDJhMi41IDIuNSAwIDAgMS0yLjUtMi41YzAtLjA1LjAxLS4wOC4wMS0uMTN6bS0zLjQtMy40IDEuNzUgMS43NWE0LjYgNC42IDAgMCAwLS4zNiAxLjc4IDQuNTA3IDQuNTA3IDAgMCAwIDYuMjcgNC4xNGwuOTguOThjLS44OC4yNC0xLjguMzgtMi43NS4zOGE5Ljc3IDkuNzcgMCAwIDEtOC44Mi01LjVjLjctMS40MyAxLjcyLTIuNjEgMi45My0zLjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlzaWJpbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmE5Ljc3IDkuNzcgMCAwIDEgOC44MiA1LjVDMTkuMTcgMTQuODcgMTUuNzkgMTcgMTIgMTdzLTcuMTctMi4xMy04LjgyLTUuNUE5Ljc3IDkuNzcgMCAwIDEgMTIgNm0wLTJDNyA0IDIuNzMgNy4xMSAxIDExLjUgMi43MyAxNS44OSA3IDE5IDEyIDE5czkuMjctMy4xMSAxMS03LjVDMjEuMjcgNy4xMSAxNyA0IDEyIDR6bTAgNWEyLjUgMi41IDAgMCAxIDAgNSAyLjUgMi41IDAgMCAxIDAtNW0wLTJjLTIuNDggMC00LjUgMi4wMi00LjUgNC41UzkuNTIgMTYgMTIgMTZzNC41LTIuMDIgNC41LTQuNVMxNC40OCA3IDEyIDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2ljZU92ZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2Ljc2IDUuMzYtMS42OCAxLjY5Yy44IDEuMTMuODMgMi41OC4wOSAzLjc0bDEuNyAxLjdjMS45LTIuMDIgMS44Ny00Ljk4LS4xMS03LjEzek0yMC4wNyAybC0xLjYzIDEuNjNjMi43MiAyLjk3IDIuNzYgNy4zOS4xNCAxMC41NmwxLjY0IDEuNjRjMy43NC0zLjg5IDMuNzEtOS44NC0uMTUtMTMuODN6TTkuNDMgNS4wNGwzLjUzIDMuNTNhMy45NzkgMy45NzkgMCAwIDAtMy41My0zLjUzek00LjQxIDIuODYgMyA0LjI3bDIuNjIgMi42MkM1LjIzIDcuNSA1IDguMjIgNSA5YzAgMi4yMSAxLjc5IDQgNCA0IC43OCAwIDEuNS0uMjMgMi4xMS0uNjJsNC40IDQuNEMxMy43NCAxNS42IDEwLjc4IDE1IDkgMTVjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0uMzctLjExLS43LS4yOS0xLjAyTDE5LjczIDIxbDEuNDEtMS40MUw0LjQxIDIuODZ6TTMgMTljLjIyLS43MiAzLjMxLTIgNi0yIDIuNyAwIDUuOCAxLjI5IDYgMkgzem02LThjLTEuMSAwLTItLjktMi0yIDAtLjIyLjA0LS40Mi4xMS0uNjJsMi41MSAyLjUxYy0uMi4wNy0uNC4xMS0uNjIuMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXRjaExhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0uNS0xM0gxMXY2bDUuMiAzLjIuOC0xLjMtNC41LTIuN1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2ViaG9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE1aDUuODhjLjI3LS4zMS42Ny0uNSAxLjEyLS41LjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNWMtLjQ0IDAtLjg0LS4xOS0xLjEyLS41SDExLjlBNSA1IDAgMSAxIDYgMTEuMXYyLjA3Yy0xLjE2LjQxLTIgMS41My0yIDIuODMgMCAxLjY1IDEuMzUgMyAzIDNzMy0xLjM1IDMtM3YtMXptMi41LTExYzEuNjUgMCAzIDEuMzUgMyAzaDJjMC0yLjc2LTIuMjQtNS01LTVhNS4wMDIgNS4wMDIgMCAwIDAtMy40NSA4LjYybC0yLjM1IDMuOWMtLjY4LjE0LTEuMi43NS0xLjIgMS40OCAwIC44My42NyAxLjUgMS41IDEuNWExLjQ5OCAxLjQ5OCAwIDAgMCAxLjQzLTEuOTVsMy4zOC01LjYzQTMuMDAzIDMuMDAzIDAgMCAxIDkuNSA3YzAtMS42NSAxLjM1LTMgMy0zem00LjUgOWMtLjY0IDAtMS4yMy4yLTEuNzIuNTRsLTMuMDUtNS4wN0MxMS41MyA4LjM1IDExIDcuNzQgMTEgN2MwLS44My42Ny0xLjUgMS41LTEuNVMxNCA2LjE3IDE0IDdjMCAuMTUtLjAyLjI5LS4wNi40M2wyLjE5IDMuNjVjLjI4LS4wNS41Ny0uMDguODctLjA4IDIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1YTUgNSAwIDAgMS00LjMzLTIuNWgyLjY3Yy40OC4zMiAxLjA1LjUgMS42Ni41IDEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lkdGhGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgMThWNmgxdjEySDR6bTMgMFY2aDEwdjEySDd6bTEzIDBoLTFWNmgxdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lkdGhOb3JtYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCAxOFY2aDR2MTJINHptNiAwVjZoNHYxMmgtNHptMTAgMGgtNFY2aDR2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWR0aFdpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCAxOFY2aDJ2MTJINHptNCAwVjZoOHYxMkg4em0xMiAwaC0yVjZoMnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlQcm90ZWN0ZWRTZXR1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjcxIDUuMjkgMTkgM2gtOHY4bDIuMy0yLjNjMS45NyAxLjQ2IDMuMjUgMy43OCAzLjI1IDYuNDIgMCAxLjMxLS4zMiAyLjU0LS44OCAzLjYzIDIuMzMtMS41MiAzLjg4LTQuMTQgMy44OC03LjEzIDAtMi41Mi0xLjExLTQuNzctMi44NC02LjMzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQ2IDguODhjMC0xLjMxLjMyLTIuNTQuODgtMy42M2E4LjQ3OSA4LjQ3OSAwIDAgMC0zLjg4IDcuMTNjMCAyLjUyIDEuMSA0Ljc3IDIuODQgNi4zM0w1IDIxaDh2LThsLTIuMyAyLjNjLTEuOTYtMS40Ni0zLjI0LTMuNzgtMy4yNC02LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV29ya0hpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE5VjhoMTZ2My4yOWMuNzIuMjIgMS40LjU0IDIgLjk3VjhjMC0xLjExLS44OS0yLTItMmgtNFY0YzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoNy42OGMtLjMtLjYyLS41LTEuMjktLjYtMkg0em02LTE1aDR2MmgtNFY0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTEuNjUgNy4zNUwxNy41IDE4LjJWMTVoMXYyLjc5bDEuODUgMS44NS0uNy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvcmtPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDRoNHYyaC0zLjZsMiAySDIwdjcuNmwyIDJWOGMwLTEuMTEtLjg5LTItMi0yaC00VjRjMC0xLjExLS44OS0yLTItMmgtNGMtLjk5IDAtMS44LjctMS45NiAxLjY0TDEwIDUuNlY0ek0zLjQgMS44NCAxLjk5IDMuMjUgNC43NCA2SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNS43NGwyIDIgMS40MS0xLjQxTDMuNCAxLjg0ek00IDE5VjhoMi43NGwxMSAxMUg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV29ya091dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDZWNGgtNHYyaDR6TTQgOHYxMWgxNlY4SDR6bTE2LTJjMS4xMSAwIDIgLjg5IDIgMnYxMWMwIDEuMTEtLjg5IDItMiAySDRjLTEuMTEgMC0yLS44OS0yLTJsLjAxLTExYzAtMS4xMS44OC0yIDEuOTktMmg0VjRjMC0xLjExLjg5LTIgMi0yaDRjMS4xMSAwIDIgLjg5IDIgMnYyaDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC00VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTYgMGgtNFY0aDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVd5c2l3eWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxNkg1VjdoMTR2MTJ6bS0yLTdIN3YtMmgxMHYyem0tNCA0SDd2LTJoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lWW91dHViZVNlYXJjaGVkRm9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4wMSAxNGgtLjhsLS4yNy0uMjdhNi40NTEgNi40NTEgMCAwIDAgMS41Ny00LjIzYzAtMy41OS0yLjkxLTYuNS02LjUtNi41cy02LjUgMy02LjUgNi41SDJsMy44NCA0IDQuMTYtNEg2LjUxYTQuNSA0LjUgMCAwIDEgOSAwIDQuNTA3IDQuNTA3IDAgMCAxLTYuMzIgNC4xMkw3LjcxIDE1LjFhNi40NzQgNi40NzQgMCAwIDAgNy41Mi0uNjdsLjI3LjI3di43OWw1LjAxIDQuOTlMMjIgMTlsLTQuOTktNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVpvb21JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6bS41LTdIOXYySDd2MWgydjJoMXYtMmgyVjloLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVab29tT3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdBNi40NzEgNi40NzEgMCAwIDAgMTYgOS41IDYuNSA2LjUgMCAxIDAgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjAxIDIxLjAxYzAgMS4xLjg5IDEuOTkgMS45OSAxLjk5czEuOTktLjg5IDEuOTktMS45OWgtMy45OHpNMTIgNmMyLjc2IDAgNSAyLjI0IDUgNXY3SDd2LTdjMC0yLjc2IDIuMjQtNSA1LTV6bTAtNC41Yy0uODMgMC0xLjUuNjctMS41IDEuNXYxLjE3QzcuMzYgNC44NSA1IDcuNjUgNSAxMXY2bC0yIDJ2MWgxOHYtMWwtMi0ydi02YzAtMy4zNS0yLjM2LTYuMTUtNS41LTYuODNWM2MwLS44My0uNjctMS41LTEuNS0xLjV6TTEzIDhoLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9EZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyaC0zLjVsLTEtMWgtNWwtMSAxSDF2MmgxNHpNMTYgOWMtLjcgMC0xLjM3LjEtMiAuMjlWNUgydjEyYzAgMS4xLjkgMiAyIDJoNS42OEE2Ljk5OSA2Ljk5OSAwIDAgMCAyMyAxNmMwLTMuODctMy4xMy03LTctN3ptLTcgN2MwIC4zNC4wMy42Ny4wOCAxSDRWN2g4djMuMjZjLTEuODEgMS4yNy0zIDMuMzYtMyA1Ljc0em03IDVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEySDE1djVsMy42IDIuMS44LTEuMi0yLjktMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXJyb3JPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNWgydjJoLTJ2LTJ6bTAtOGgydjZoLTJWN3ptLjk5LTVDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVycm9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90aWZpY2F0aW9uSW1wb3J0YW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wMSAyMS4wMWMwIDEuMS44OSAxLjk5IDEuOTkgMS45OXMxLjk5LS44OSAxLjk5LTEuOTloLTMuOTh6TTEyIDZjMi43NiAwIDUgMi4yNCA1IDV2N0g3di03YzAtMi43NiAyLjI0LTUgNS01em0wLTQuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjV2MS4xN0M3LjM2IDQuODUgNSA3LjY1IDUgMTF2NmwtMiAydjFoMTh2LTFsLTItMnYtNmMwLTMuMzUtMi4zNi02LjE1LTUuNS02LjgzVjNjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xMSA4aDJ2NGgtMnptMCA2aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdhcm5pbmdBbWJlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS45OSAxOS41MyAxOUg0LjQ3TDEyIDUuOTlNMTIgMiAxIDIxaDIyTDEyIDJ6bTEgMTRoLTJ2Mmgydi0yem0wLTZoLTJ2NGgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTBLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgNnYxMEg1di04LjVoMVYxNWgxLjVWOUg1VjVoMTR2NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxMS4yNVY5SDE0djZoMS41di0yLjI1TDE3LjI1IDE1SDE5bC0yLjI1LTNMMTkgOWgtMS43NXpNOS41IDE1SDEyYy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFIOS41Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtNC41aDEuNXYzSDEwdi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMWtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTVIOVY5SDZ2MS41aDEuNXpNMTIgMTIuNzUgMTMuNzUgMTVoMS43NWwtMi4yNS0zIDIuMjUtM2gtMS43NUwxMiAxMS4yNVY5aC0xLjV2NkgxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTFLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTVIMTBWOUg3djEuNWgxLjV6TTEzLjUgMTIuNzUgMTUuMjUgMTVIMTdsLTIuMjUtM0wxNyA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxMnY2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTJrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTMuNUg3LjV2LTFIOWMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xSDZ2MS41aDIuNXYxSDdjLS41NSAwLTEgLjQ1LTEgMVYxNWg0di0xLjV6TTEyLjUgMTIuNzUgMTQuMjUgMTVIMTZsLTIuMjUtM0wxNiA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxMXY2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTJLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMy41SDh2LTFoMmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xSDYuNXYxLjVoM3YxaC0yYy0uNTUgMC0xIC40NS0xIDFWMTVIMTF2LTEuNXpNMTQuNSAxMi43NSAxNi4yNSAxNUgxOGwtMi4yNS0zTDE4IDloLTEuNzVsLTEuNzUgMi4yNVY5SDEzdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lM2tQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNHYtNGMwLS41NS0uNDUtMS0xLTFINS41djEuNWgzdjFoLTJ2MWgydjFoLTNWMTVIOWMuNTUgMCAxLS40NSAxLTF6TTEyLjUgMTIuNzUgMTQuMjUgMTVIMTZsLTIuMjUtM0wxNiA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxMXY2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTNLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNHYtNGMwLS41NS0uNDUtMS0xLTFINi41djEuNWgzdjFoLTJ2MWgydjFoLTNWMTVIMTBjLjU1IDAgMS0uNDUgMS0xek0xNC41IDEyLjc1IDE2LjI1IDE1SDE4bC0yLjI1LTNMMTggOWgtMS43NWwtMS43NSAyLjI1VjlIMTN2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU0a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxNUgxMHYtMS41aDFWMTJoLTFWOUg4LjV2M0g3VjlINS41djQuNWgzek0xMyAxMi43NSAxNC43NSAxNWgxLjc1bC0yLjI1LTMgMi4yNS0zaC0xLjc1TDEzIDExLjI1VjloLTEuNXY2SDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNEsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTZINVY1aDE0djE0em0tOS41LTRIMTF2LTEuNDloMVYxMmgtMVY5SDkuNXYzSDhWOUg2LjV2NC41aDN6bTguNyAwLTItMyAyLTNoLTEuN2wtMiAzIDIgM3ptLTMuNy0zVjlIMTN2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU1RyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTNIMTl2MmgtNVY5aDdjMC0xLjEtLjktMi0yLTJoLTVjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg1YzEuMSAwIDItLjkgMi0ydi00aC00LjV2MnpNMyAxM2g1djJIM3YyaDVjMS4xIDAgMi0uOSAyLTJ2LTJjMC0xLjEtLjktMi0yLTJINVY5aDVWN0gzdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU1a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE0di0xLjVjMC0uNTUtLjQ1LTEtMS0xSDcuNXYtMUgxMFY5SDZ2My41aDIuNXYxSDZWMTVoM2MuNTUgMCAxLS40NSAxLTF6TTEyLjUgMTIuNzUgMTQuMjUgMTVIMTZsLTIuMjUtM0wxNiA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxMXY2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTVLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNHYtMS41YzAtLjU1LS40NS0xLTEtMUg4di0xaDNWOUg2LjV2My41aDN2MWgtM1YxNUgxMGMuNTUgMCAxLS40NSAxLTF6TTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTZrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAxMi43NSAxNC4yNSAxNUgxNmwtMi4yNS0zTDE2IDloLTEuNzVsLTEuNzUgMi4yNVY5SDExdjZoMS41ek03IDE1aDJjLjU1IDAgMS0uNDUgMS0xdi0xLjVjMC0uNTUtLjQ1LTEtMS0xSDcuNXYtMUgxMFY5SDdjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS0yLjVoMVYxNGgtMXYtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNksgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpNNy41IDE1SDEwYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUg4di0xaDNWOUg3LjVjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS0yLjVoMS41VjE0SDh2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTdrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi43NSAxNUg4LjVsMS40Ni00LjcxQzEwLjE1IDkuNjUgOS42NyA5IDkgOUg1LjV2MS41aDIuNjNMNi43NSAxNXpNMTIuNSAxMi43NSAxNC4yNSAxNUgxNmwtMi4yNS0zTDE2IDloLTEuNzVsLTEuNzUgMi4yNVY5SDExdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lN0sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzUgMTVIOS41bDEuNDYtNC43MUMxMS4xNSA5LjY1IDEwLjY3IDkgMTAgOUg2LjV2MS41aDIuNjNMNy43NSAxNXpNMTQuNSAxMi43NSAxNi4yNSAxNUgxOGwtMi4yNS0zTDE4IDloLTEuNzVsLTEuNzUgMi4yNVY5SDEzdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lOGtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNWgyYy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTVoMXYxLjVoLTFWMTB6bTAgMi41aDFWMTRoLTF2LTEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU4SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNUgxMGMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDcuNWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTVoMS41djEuNUg4VjEwem0wIDIuNWgxLjVWMTRIOHYtMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTlrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE0di00YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2MS41YzAgLjU1LjQ1IDEgMSAxaDEuNXYxSDZWMTVoM2MuNTUgMCAxLS40NSAxLTF6bS0xLjUtMi41aC0xVjEwaDF2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTIuNzUgMTQuMjUgMTVIMTZsLTIuMjUtM0wxNiA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxMXY2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTlLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTR2LTRjMC0uNTUtLjQ1LTEtMS0xSDcuNWMtLjU1IDAtMSAuNDUtMSAxdjEuNWMwIC41NS40NSAxIDEgMWgydjFoLTNWMTVIMTBjLjU1IDAgMS0uNDUgMS0xem0tMS41LTIuNUg4VjEwaDEuNXYxLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAxMi43NSAxNi4yNSAxNUgxOGwtMi4yNS0zTDE4IDloLTEuNzVsLTEuNzUgMi4yNVY5SDEzdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkVG9RdWV1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYtM2gzdi0yaC0zVjdoLTJ2M0g4djJoM3pNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNXYyaDh2LTJoNWMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRIM1Y1aDE4djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlycGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyMmgxMmwtNi02elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNHYtMkgzVjVoMTh2MTJoLTR2Mmg0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGJ1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTIuNWMtMi40OSAwLTQuNSAyLjAxLTQuNSA0LjVzMi4wMSA0LjUgNC41IDQuNSA0LjUtMi4wMSA0LjUtNC41LTIuMDEtNC41LTQuNS00LjV6bTAgNS41Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnRUcmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTNoLTh2LTJoOHYyem0wLTZoLTh2Mmg4Vjd6bS04IDEwaDh2LTJoLTh2MnptLTItOHY2YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjljMC0xLjEuOS0yIDItMmg2YzEuMSAwIDIgLjkgMiAyem0tMS41IDYtMi4yNS0zLTEuNzUgMi4yNi0xLjI1LTEuNTFMMy41IDE1aDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdWRpb0ZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02ek02IDIwVjRoN3Y1aDV2MTFINnptMTAtOWgtNHYzLjg4YTIuMjQ3IDIuMjQ3IDAgMCAwLTMuNSAxLjg3YzAgMS4yNCAxLjAxIDIuMjUgMi4yNSAyLjI1UzEzIDE3Ljk5IDEzIDE2Ljc1VjEzaDN2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdlRpbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxN2MwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXptMC0xNHY0aDJWNS4wOGMzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAzLjg3LTMuMTMgNy03IDdzLTctMy4xMy03LTdjMC0xLjY4LjU5LTMuMjIgMS41OC00LjQyTDEyIDEzbDEuNDEtMS40MS02LjgtNi44di4wMkM0LjQyIDYuNDUgMyA5LjA1IDMgMTJjMCA0Ljk3IDQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMThoLTF6bTcgOWMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xek02IDEyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMS0uNDUtMS0xLTEtMSAuNDUtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJhbmRpbmdXYXRlcm1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxOHYxNHptLTEwLTdoOXY2aC05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbFRvQWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkgzVjVoMTh2MTR6TTUgMTVoMTR2M0g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvc2VkQ2FwdGlvbkRpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTBjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MWgtMS41di0uNWgtMnYxTDEzIDEwem0zLjUgMy41IDEuMjEgMS4yMWMuMTgtLjE5LjI5LS40NC4yOS0uNzF2LTFoLTEuNXYuNXpNOC44MyA2SDE5djEwLjE3bDEuOTggMS45OGMwLS4wNS4wMi0uMS4wMi0uMTZWNmMwLTEuMS0uOS0yLTItMkg2LjgzbDIgMnptMTAuOTUgMTYuNjFMMTcuMTcgMjBINWEyIDIgMCAwIDEtMi0yVjZjMC0uMDUuMDItLjEuMDItLjE1TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnpNNy41IDEzLjVoMlYxM2guNjdsLTIuNS0yLjVINy41djN6bTcuNjcgNC41TDExIDEzLjgzVjE0YzAgLjU1LS40NSAxLTEgMUg3Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uMzIuMTYtLjU5LjQtLjc4TDUgNy44M1YxOGgxMC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3NlZENhcHRpb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINVY2aDE0djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE1aDNjLjU1IDAgMS0uNDUgMS0xdi0xSDkuNXYuNWgtMnYtM2gydi41SDExdi0xYzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXpNMTQgMTVoM2MuNTUgMCAxLS40NSAxLTF2LTFoLTEuNXYuNWgtMnYtM2gydi41SDE4di0xYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG9zZWRDYXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINVY2aDE0djEyek03IDE1aDNjLjU1IDAgMS0uNDUgMS0xdi0xSDkuNXYuNWgtMnYtM2gydi41SDExdi0xYzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptNyAwaDNjLjU1IDAgMS0uNDUgMS0xdi0xaC0xLjV2LjVoLTJ2LTNoMnYuNUgxOHYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udHJvbENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41NCA4LjQ2IDIgMTJsMy41NCAzLjU0IDEuNzYtMS43N0w1LjU0IDEybDEuNzYtMS43N3ptNi40NiAxMC0xLjc3LTEuNzYtMS43NyAxLjc2TDEyIDIybDMuNTQtMy41NC0xLjc3LTEuNzZ6bTYuNDYtMTAtMS43NiAxLjc3TDE4LjQ2IDEybC0xLjc2IDEuNzcgMS43NiAxLjc3TDIyIDEyem0tMTAtMi45MiAxLjc3IDEuNzZMMTIgNS41NGwxLjc3IDEuNzYgMS43Ny0xLjc2TDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXF1YWxpemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyMGg0VjRoLTR2MTZ6bS02IDBoNHYtOEg0djh6TTE2IDl2MTFoNFY5aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwbGljaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHptLTQtNGgtNHYtMmg0di0yaC00VjloNFY3SDl2MTBoNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhc3RGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA5Ljg2IDE4LjAzIDEyIDE1IDE0LjE0VjkuODZtLTkgMEw5LjAzIDEyIDYgMTQuMTRWOS44Nk0xMyA2djEybDguNS02TDEzIDZ6TTQgNnYxMmw4LjUtNkw0IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYXN0UmV3aW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5Ljg2djQuMjhMMTQuOTcgMTIgMTggOS44Nm0tOSAwdjQuMjhMNS45NyAxMiA5IDkuODZNMjAgNmwtOC41IDYgOC41IDZWNnptLTkgMC04LjUgNiA4LjUgNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmVhdHVyZWRQbGF5TGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDE4djE0ek01IDEwaDl2Mkg1em0wLTNoOXYySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGZWF0dXJlZFZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkgzVjVoMTh2MTR6TTQgNmg5djdINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpYmVyRHZyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMS44NyAxMi40My0xLTMuNDNoLTEuNWwxLjc1IDZoMS41bDEuNzUtNmgtMS41ek0yMSAxMS41di0xYzAtLjg1LS42NS0xLjUtMS41LTEuNUgxNnY2aDEuNXYtMmgxLjE1bC44NSAySDIxbC0uOS0yLjFjLjUtLjI1LjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6TTYuNSA5SDN2NmgzLjVjLjg1IDAgMS41LS42NSAxLjUtMS41di0zQzggOS42NSA3LjM1IDkgNi41IDl6bTAgNC41aC0ydi0zaDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpYmVyTWFudWFsUmVjb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTYgMi42OS02IDYtNm0wLTJjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmliZXJOZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMjUgMTIuNSA0Ljc1IDlIMy41djZoMS4yNXYtMy41TDcuMyAxNWgxLjJWOUg3LjI1ek05LjUgMTVoNHYtMS4yNUgxMXYtMS4xMWgyLjV2LTEuMjZIMTF2LTEuMTJoMi41VjloLTR6bTkuNzUtNnY0LjVoLTEuMTJWOS45OWgtMS4yNXYzLjUyaC0xLjEzVjlIMTQuNXY1YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xVjloLTEuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWJlclBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMS41VjlIMTF2NnptNy43NS02djMuNUwxNi4yNSA5SDE1djZoMS4yNXYtMy41TDE4LjggMTVIMjBWOWgtMS4yNXpNNy41IDlINHY2aDEuNXYtMmgyYy44NSAwIDEuNS0uNjUgMS41LTEuNXYtMUM5IDkuNjUgOC4zNSA5IDcuNSA5em0wIDIuNWgtMnYtMWgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWJlclNtYXJ0UmVjb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptOC0xMy43NHYyLjA5YTUuOTkgNS45OSAwIDAgMSAwIDExLjN2Mi4wOWMzLjQ1LS44OSA2LTQuMDEgNi03Ljc0IDAtMy43My0yLjU1LTYuODUtNi03Ljc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9yd2FyZDEwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNiAyLjY5LTYgNi02djRsNS01LTUtNXY0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LThoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjkgMTZ2LTQuMjdoLS4wOWwtMS43Ny42M3YuNjlsMS4wMS0uMzFWMTZ6TTE0LjMyIDExLjc4Yy0uMTgtLjA3LS4zNy0uMS0uNTktLjFzLS40MS4wMy0uNTkuMS0uMzMuMTgtLjQ1LjMzLS4yMy4zNC0uMjkuNTctLjEuNS0uMS44MnYuNzRjMCAuMzIuMDQuNi4xMS44MnMuMTcuNDIuMy41Ny4yOC4yNi40Ni4zMy4zNy4xLjU5LjEuNDEtLjAzLjU5LS4xLjMzLS4xOC40NS0uMzMuMjItLjM0LjI5LS41Ny4xLS41LjEtLjgydi0uNzRjMC0uMzItLjA0LS42LS4xMS0uODJzLS4xNy0uNDItLjMtLjU3LS4yOS0uMjYtLjQ2LS4zM3ptLjAxIDIuNTdjMCAuMTktLjAxLjM1LS4wNC40OHMtLjA2LjI0LS4xMS4zMi0uMTEuMTQtLjE5LjE3LS4xNi4wNS0uMjUuMDUtLjE4LS4wMi0uMjUtLjA1LS4xNC0uMDktLjE5LS4xNy0uMDktLjE5LS4xMi0uMzItLjA0LS4yOS0uMDQtLjQ4di0uOTdjMC0uMTkuMDEtLjM1LjA0LS40OHMuMDYtLjIzLjEyLS4zMS4xMS0uMTQuMTktLjE3LjE2LS4wNS4yNS0uMDUuMTguMDIuMjUuMDUuMTQuMDkuMTkuMTcuMDkuMTguMTIuMzEuMDQuMjkuMDQuNDh2Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9yd2FyZDMwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNiAyLjY5LTYgNi02djRsNS01LTUtNXY0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LThoLTJ6bS03LjQ2IDIuMjJjLS4wNi4wNS0uMTIuMDktLjIuMTJzLS4xNy4wNC0uMjcuMDRhLjY5LjY5IDAgMCAxLS40NS0uMTVjLS4wNi0uMDUtLjEtLjEtLjEzLS4xN3MtLjA1LS4xNC0uMDUtLjIyaC0uODVjMCAuMjEuMDQuMzkuMTIuNTVzLjE5LjI4LjMzLjM4LjI5LjE4LjQ2LjIzLjM1LjA3LjUzLjA3Yy4yMSAwIC40MS0uMDMuNi0uMDhzLjM0LS4xNC40OC0uMjQuMjQtLjI0LjMyLS4zOS4xMi0uMzMuMTItLjUzYzAtLjIzLS4wNi0uNDQtLjE4LS42MXMtLjMtLjMtLjU0LS4zOWMuMS0uMDUuMi0uMS4yOC0uMTdzLjE1LS4xNC4yLS4yMi4xLS4xNi4xMy0uMjUuMDQtLjE4LjA0LS4yN2MwLS4yLS4wNC0uMzctLjExLS41M3MtLjE3LS4yOC0uMy0uMzgtLjI4LS4xOC0uNDYtLjIzLS4zNy0uMDgtLjU5LS4wOGMtLjE5IDAtLjM4LjAzLS41NC4wOHMtLjMyLjEzLS40NC4yMy0uMjMuMjItLjMuMzctLjExLjMtLjExLjQ4aC44NWEuNDU1LjQ1NSAwIDAgMSAuMTctLjM1Yy4wNS0uMDQuMTEtLjA3LjE4LS4xcy4xNC0uMDMuMjItLjAzYy4xIDAgLjE4LjAxLjI1LjA0cy4xMy4wNi4xOC4xMS4wOC4xMS4xMS4xNy4wNC4xNC4wNC4yMmMwIC4xOC0uMDUuMzItLjE2LjQzcy0uMjYuMTYtLjQ4LjE2aC0uNDN2LjY2aC40NWMuMTEgMCAuMi4wMS4yOS4wNHMuMTYuMDYuMjIuMTEuMTEuMTIuMTQuMi4wNS4xOC4wNS4yOWMwIC4wOS0uMDEuMTctLjA0LjI0cy0uMDguMTEtLjEzLjE3em0zLjktMy40NGMtLjE4LS4wNy0uMzctLjEtLjU5LS4xcy0uNDEuMDMtLjU5LjEtLjMzLjE4LS40NS4zMy0uMjMuMzQtLjI5LjU3LS4xLjUtLjEuODJ2Ljc0YzAgLjMyLjA0LjYuMTEuODJzLjE3LjQyLjMuNTcuMjguMjYuNDYuMzMuMzcuMS41OS4xLjQxLS4wMy41OS0uMS4zMy0uMTguNDUtLjMzLjIyLS4zNC4yOS0uNTcuMS0uNS4xLS44MnYtLjc0YzAtLjMyLS4wNC0uNi0uMTEtLjgycy0uMTctLjQyLS4zLS41Ny0uMjgtLjI2LS40Ni0uMzN6bS4wMSAyLjU3YzAgLjE5LS4wMS4zNS0uMDQuNDhzLS4wNi4yNC0uMTEuMzItLjExLjE0LS4xOS4xNy0uMTYuMDUtLjI1LjA1LS4xOC0uMDItLjI1LS4wNS0uMTQtLjA5LS4xOS0uMTctLjA5LS4xOS0uMTItLjMyLS4wNC0uMjktLjA0LS40OHYtLjk3YzAtLjE5LjAxLS4zNS4wNC0uNDhzLjA2LS4yMy4xMi0uMzEuMTEtLjE0LjE5LS4xNy4xNi0uMDUuMjUtLjA1LjE4LjAyLjI1LjA1LjE0LjA5LjE5LjE3LjA5LjE4LjEyLjMxLjA0LjI5LjA0LjQ4di45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcndhcmQ1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45NSAxM2MwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNiAyLjY5LTYgNi02djRsNS01LTUtNXY0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LThoLTJ6bS01LjUyIDIuMTVjLS4wNS4wNy0uMTEuMTMtLjE4LjE3cy0uMTcuMDYtLjI3LjA2Yy0uMTcgMC0uMzEtLjA1LS40Mi0uMTVzLS4xNy0uMjQtLjE5LS40MWgtLjg0Yy4wMS4yLjA1LjM3LjEzLjUzcy4xOS4yOC4zMi4zOS4yOS4xOS40Ni4yNC4zNS4wOC41My4wOGMuMjQgMCAuNDYtLjA0LjY0LS4xMnMuMzMtLjE4LjQ1LS4zMS4yMS0uMjguMjctLjQ1LjA5LS4zNS4wOS0uNTRjMC0uMjItLjAzLS40My0uMDktLjZzLS4xNC0uMzMtLjI1LS40NS0uMjUtLjIyLS40MS0uMjgtLjM0LS4xLS41NS0uMWMtLjA3IDAtLjE0LjAxLS4yLjAycy0uMTMuMDItLjE4LjA0LS4xLjAzLS4xNS4wNS0uMDguMDQtLjExLjA1bC4xMS0uOTJoMS43di0uNzFIMTAuOWwtLjI1IDIuMTcuNjcuMTdjLjAzLS4wMy4wNi0uMDYuMS0uMDlzLjA3LS4wNS4xMi0uMDcuMS0uMDQuMTUtLjA1LjEzLS4wMi4yLS4wMmMuMTIgMCAuMjIuMDIuMy4wNXMuMTYuMDkuMjEuMTUuMS4xNC4xMy4yNC4wNC4xOS4wNC4zMS0uMDEuMjItLjAzLjMxLS4wNi4xNy0uMTEuMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHYW1lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNHYyLjY3bC0xIDEtMS0xVjRoMm03IDd2MmgtMi42N2wtMS0xIDEtMUgyME02LjY3IDExbDEgMS0xIDFINHYtMmgyLjY3TTEyIDE2LjMzbDEgMVYyMGgtMnYtMi42N2wxLTFNMTUgMkg5djUuNWwzIDMgMy0zVjJ6bTcgN2gtNS41bC0zIDMgMyAzSDIyVjl6TTcuNSA5SDJ2Nmg1LjVsMy0zLTMtM3ptNC41IDQuNS0zIDNWMjJoNnYtNS41bC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNNy41IDEzaDJ2MkgxMVY5SDkuNXYyLjVoLTJWOUg2djZoMS41ek0xOCAxNHYtNGMwLS41NS0uNDUtMS0xLTFoLTR2Nmg0Yy41NSAwIDEtLjQ1IDEtMXptLTEuNS0uNWgtMnYtM2gydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFyaW5nRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjAzIDMuMkM3LjE1IDIuNDQgOC41MSAyIDEwIDJjMy45MyAwIDcgMy4wNyA3IDcgMCAxLjI2LS4zOCAyLjY1LTEuMDcgMy45LS4wMi4wNC0uMDUuMDgtLjA4LjEzbC0xLjQ4LTEuNDhjLjQtLjg2LjYzLTEuNzUuNjMtMi41NSAwLTIuOC0yLjItNS01LTUtLjkyIDAtMS43Ni4yNi0yLjUuNjdMNi4wMyAzLjJ6bTExLjE4IDExLjE4IDEuNDMgMS40M0MyMC4xMSAxMy45MyAyMSAxMS41NyAyMSA5YzAtMy4wNC0xLjIzLTUuNzktMy4yMi03Ljc4bC0xLjQyIDEuNDJBOC45MzcgOC45MzcgMCAwIDEgMTkgOWMwIDIuMDItLjY3IDMuODgtMS43OSA1LjM4ek0xMCA2LjVjLS4yMSAwLS40LjAzLS41OS4wOGwzLjAxIDMuMDFjLjA1LS4xOS4wOC0uMzguMDgtLjU5QTIuNSAyLjUgMCAwIDAgMTAgNi41em0xMS4xOSAxNC42OUwyLjgxIDIuODEgMS4zOSA0LjIybDIuMTMgMi4xM0MzLjE5IDcuMTYgMyA4LjA1IDMgOWgyYzAtLjM2LjA1LS43MS4xMi0xLjA1bDYuNjEgNi42MWMtLjg4LjY4LTEuNzggMS40MS0yLjI3IDIuOS0uNSAxLjUtMSAyLjAxLTEuNzEgMi4zOC0uMTkuMS0uNDYuMTYtLjc1LjE2LTEuMSAwLTItLjktMi0ySDNhMy45OTkgMy45OTkgMCAwIDAgNS42NCAzLjY1YzEuMzYtLjcxIDIuMTMtMS43MyAyLjczLTMuNTUuMzItLjk4LjktMS40MyAxLjcxLTIuMDUuMDMtLjAyLjA1LS4wNC4wOC0uMDZsNi42MiA2LjYyIDEuNDEtMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIwYy0uMjkgMC0uNTYtLjA2LS43Ni0uMTUtLjcxLS4zNy0xLjIxLS44OC0xLjcxLTIuMzgtLjUxLTEuNTYtMS40Ny0yLjI5LTIuMzktMy0uNzktLjYxLTEuNjEtMS4yNC0yLjMyLTIuNTNDOS4yOSAxMC45OCA5IDkuOTMgOSA5YzAtMi44IDIuMi01IDUtNXM1IDIuMiA1IDVoMmMwLTMuOTMtMy4wNy03LTctN1M3IDUuMDcgNyA5YzAgMS4yNi4zOCAyLjY1IDEuMDcgMy45LjkxIDEuNjUgMS45OCAyLjQ4IDIuODUgMy4xNS44MS42MiAxLjM5IDEuMDcgMS43MSAyLjA1LjYgMS44MiAxLjM3IDIuODQgMi43MyAzLjU1QTMuOTk5IDMuOTk5IDAgMCAwIDIxIDE4aC0yYzAgMS4xLS45IDItMiAyek03LjY0IDIuNjQgNi4yMiAxLjIyQzQuMjMgMy4yMSAzIDUuOTYgMyA5czEuMjMgNS43OSAzLjIyIDcuNzhsMS40MS0xLjQxQzYuMDEgMTMuNzQgNSAxMS40OSA1IDlzMS4wMS00Ljc0IDIuNjQtNi4zNnpNMTEuNSA5YTIuNSAyLjUgMCAwIDAgNSAwIDIuNSAyLjUgMCAwIDAtNSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlnaFF1YWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg1VjZoMTR2MTJ6TTcuNSAxM2gydjJIMTFWOUg5LjV2Mi41aC0yVjlINnY2aDEuNXptNi41IDJoLjc1djEuNWgxLjVWMTVIMTdjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTQuNWgydjNoLTJ2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnRlcnByZXRlck1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41IDE2LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXYtMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjE1YzAgLjgzLS42NyAxLjUtMS41IDEuNXpNMjAgMjBoMXYtMS41NGMxLjY5LS4yNCAzLTEuNyAzLTMuNDZoLTFhMi41IDIuNSAwIDAgMS01IDBoLTFjMCAxLjc2IDEuMzEgMy4yMiAzIDMuNDZWMjB6TTkgMTJjLTIuMjEgMC00LTEuNzktNC00YTMuOTk5IDMuOTk5IDAgMCAxIDUuMzQtMy43N0E1LjkzOCA1LjkzOCAwIDAgMCA5IDhjMCAxLjQzLjUgMi43NCAxLjM0IDMuNzctLjQyLjE1LS44Ny4yMy0xLjM0LjIzem0tMS44OSAxLjEzQTQuOTY1IDQuOTY1IDAgMCAwIDUgMTcuMjJWMjBIMXYtMi43OGMwLTEuMTIuNjEtMi4xNSAxLjYxLTIuNjYgMS4yNC0uNjQgMi43Ni0xLjE5IDQuNS0xLjQzek0xMSA4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDQtMS43OSA0LTQgNC00LTEuNzktNC00em0yIDBjMCAxLjEuOSAyIDIgMnMyLS45IDItMi0uOS0yLTItMi0yIC45LTIgMnptMiA3Yy0yLjM3IDAtNC4yOS43My01LjQ4IDEuMzQtLjMyLjE2LS41Mi41LS41Mi44OFYxOGg3LjE3Yy41Ljg2IDEuMjUgMS41NiAyLjE1IDJIN3YtMi43OGMwLTEuMTIuNjEtMi4xNSAxLjYxLTIuNjZDMTAuMjkgMTMuNyAxMi40NyAxMyAxNSAxM2MuMzkgMCAuNzcuMDIgMS4xNC4wNS0uMzMuNTktLjU1IDEuMjYtLjYyIDEuOTYtLjE3LS4wMS0uMzQtLjAxLS41Mi0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaWJyYXJ5QWRkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDR2MTJIOFY0aDEybTAtMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03LjUzIDEyTDkgMTAuNWwxLjQtMS40MSAyLjA3IDIuMDhMMTcuNiA2IDE5IDcuNDEgMTIuNDcgMTR6TTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlicmFyeUFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDhWNGgxMnYxMnptLTctMmgydi0zaDNWOWgtM1Y2aC0ydjNoLTN2MmgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlicmFyeUJvb2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyek0xMCA5aDh2MmgtOHptMCAzaDR2MmgtNHptMC02aDh2MmgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpYnJhcnlNdXNpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyem0tNy41LTFhMi41IDIuNSAwIDAgMCAyLjUtMi41VjdoM1Y1aC00djUuNTFjLS40Mi0uMzItLjkzLS41MS0xLjUtLjUxYTIuNSAyLjUgMCAwIDAgMCA1ek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRWMUw4IDVsNCA0VjZjMy4zMSAwIDYgMi42OSA2IDYgMCAxLjAxLS4yNSAxLjk3LS43IDIuOGwxLjQ2IDEuNDZBNy45MyA3LjkzIDAgMCAwIDIwIDEyYzAtNC40Mi0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNiAwLTEuMDEuMjUtMS45Ny43LTIuOEw1LjI0IDcuNzRBNy45MyA3LjkzIDAgMCAwIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMeXJpY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDZoN3YySDZ6TTYgMTJoNHYySDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExLjk3VjE2SDZsLTIgMlY0aDExdjIuMDNjLjUyLS42OSAxLjItMS4yNSAyLTEuNlY0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoOWMxLjEgMCAyLS45IDItMnYtMi40MmE1LjE2IDUuMTYgMCAwIDEtMi0xLjYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDloN3YySDZ6TTIwIDYuMThjLS4zMS0uMTEtLjY1LS4xOC0xLS4xOC0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTNWM2gyVjFoLTR2NS4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pY05vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0YzEuNjYgMCAzLTEuMzQgMy0zVjVjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNXY2YzAgMS42NiAxLjM0IDMgMyAzem0tMS05YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXY2YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjV6bTYgNmMwIDIuNzYtMi4yNCA1LTUgNXMtNS0yLjI0LTUtNUg1YzAgMy41MyAyLjYxIDYuNDMgNiA2LjkyVjIxaDJ2LTMuMDhjMy4zOS0uNDkgNi0zLjM5IDYtNi45MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pY09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuOCA0LjljMC0uNjYuNTQtMS4yIDEuMi0xLjJzMS4yLjU0IDEuMiAxLjJsLS4wMSAzLjkxTDE1IDEwLjZWNWMwLTEuNjYtMS4zNC0zLTMtMy0xLjU0IDAtMi43OSAxLjE2LTIuOTYgMi42NWwxLjc2IDEuNzZWNC45ek0xOSAxMWgtMS43YzAgLjU4LS4xIDEuMTMtLjI3IDEuNjRsMS4yNyAxLjI3Yy40NC0uODguNy0xLjg3LjctMi45MXpNNC40MSAyLjg2IDMgNC4yN2w2IDZWMTFjMCAxLjY2IDEuMzQgMyAzIDMgLjIzIDAgLjQ0LS4wMy42NS0uMDhsMS42NiAxLjY2Yy0uNzEuMzMtMS41LjUyLTIuMzEuNTItMi43NiAwLTUuMy0yLjEtNS4zLTUuMUg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIxaDJ2LTMuMjhhNy4xMyA3LjEzIDAgMCAwIDIuNTUtLjlsNC4yIDQuMiAxLjQxLTEuNDFMNC40MSAyLjg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGMxLjY2IDAgMy0xLjM0IDMtM1Y1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2NmMwIDEuNjYgMS4zNCAzIDMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTFjMCAyLjc2LTIuMjQgNS01IDVzLTUtMi4yNC01LTVINWMwIDMuNTMgMi42MSA2LjQzIDYgNi45MlYyMWgydi0zLjA4YzMuMzktLjQ5IDYtMy4zOSA2LTYuOTJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaXNzZWRWaWRlb0NhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwLjVWN2MwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMXYtMy41bDQgNHYtMTFsLTQgNHptLTItMS44M1YxNkg1VjhoMTB2LjY3em0tNy44OSAyLjQ0TDExIDE1bDMuNzctMy43OS0uNzgtLjc5TDExIDEzLjQzbC0zLjExLTMuMWgyLjU1VjkuMjJINnY0LjQ0aDEuMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3ZpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2LjQ3IDUuNzYgMTBIMjB2OEg0VjYuNDdNMjIgNGgtNGwyIDRoLTNsLTItNGgtMmwyIDRoLTNsLTItNEg4bDIgNEg3TDUgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTXVzaWNWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDE4djE0ek04IDE1YzAtMS42NiAxLjM0LTMgMy0zIC4zNSAwIC42OS4wNyAxIC4xOFY2aDV2MmgtM3Y3LjAzQTMuMDAzIDMuMDAzIDAgMCAxIDExIDE4Yy0xLjY2IDAtMy0xLjM0LTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ld1JlbGVhc2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMyAxMi0yLjQ0LTIuNzguMzQtMy42OC0zLjYxLS44Mi0xLjg5LTMuMThMMTIgMyA4LjYgMS41NCA2LjcxIDQuNzJsLTMuNjEuODEuMzQgMy42OEwxIDEybDIuNDQgMi43OC0uMzQgMy42OSAzLjYxLjgyIDEuODkgMy4xOEwxMiAyMWwzLjQgMS40NiAxLjg5LTMuMTggMy42MS0uODItLjM0LTMuNjhMMjMgMTJ6bS00LjUxIDIuMTEuMjYgMi43OS0yLjc0LjYyLTEuNDMgMi40MUwxMiAxOC44MmwtMi41OCAxLjExLTEuNDMtMi40MS0yLjc0LS42Mi4yNi0yLjhMMy42NiAxMmwxLjg1LTIuMTItLjI2LTIuNzggMi43NC0uNjEgMS40My0yLjQxTDEyIDUuMThsMi41OC0xLjExIDEuNDMgMi40MSAyLjc0LjYyLS4yNiAyLjc5TDIwLjM0IDEybC0xLjg1IDIuMTF6TTExIDE1aDJ2MmgtMnptMC04aDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdEludGVyZXN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04IDAtMS44NS42My0zLjU1IDEuNjktNC45TDE2LjkgMTguMzFBNy45MDIgNy45MDIgMCAwIDEgMTIgMjB6bTYuMzEtMy4xTDcuMSA1LjY5QTcuOTAyIDcuOTAyIDAgMCAxIDEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjg1LS42MyAzLjU1LTEuNjkgNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMi4wMWMwIDEuMS45IDEuOTkgMiAxLjk5aDE2YzEuMSAwIDItLjkgMi0ydi04bC02LTZ6TTQgMTguMDFWNmgxMXY1aDV2Ny4wMUg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF1c2VDaXJjbGVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE0SDlWOGgydjh6bTQgMGgtMlY4aDJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhdXNlQ2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmgyVjhIOXY4em0zLTE0QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMS00aDJWOGgtMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF1c2VDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2aDJWOEg5djh6bTMtMTRDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0xLTRoMlY4aC0ydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxOWg0VjVINnYxNHptOC0xNHYxNGg0VjVoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5QXJyb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDguNjQgMTUuMjcgMTIgMTAgMTUuMzZWOC42NE04IDV2MTRsMTEtN0w4IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5Q2lyY2xlRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNC41di05bDYgNC41LTYgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheUNpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE2LjUgNi00LjUtNi00LjV6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0tMi41LTMuNSA3LTQuNS03LTQuNXY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDUgMTMuNjIgMTkgMTIgOCA1di4xN3pNMi44MSAyLjgxIDEuMzkgNC4yMiA4IDEwLjgzVjE5bDQuOTktMy4xOCA2Ljc4IDYuNzggMS40MS0xLjQxTDIuODEgMi44MXpNMTAgMTUuMzZ2LTIuNTNsMS41NSAxLjU1LTEuNTUuOTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5bGlzdEFkZENoZWNrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LTh6bTAtMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMiA4SDd2Mmg3di0yem0wLTNIN3YyaDdWN3ptLTcgOGgzdi0ySDd2MnptMTItMS41OUwxNy41OSAxMmwtMy41NCAzLjU0LTEuNDEtMS40MS0xLjQxIDEuNDEgMi44MyAyLjgzTDE5IDEzLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheWxpc3RBZGRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTBoMTF2Mkgzek0zIDZoMTF2Mkgzek0zIDE0aDd2Mkgzek0yMC41OSAxMS45M2wtNC4yNSA0LjI0LTIuMTItMi4xMi0xLjQxIDEuNDFMMTYuMzQgMTkgMjIgMTMuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5bGlzdEFkZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0yLTEwSDd2Mmg3di0yem0wLTNIN3YyaDdWN3ptLTcgOGgzdi0ySDd2MnptMTItMnYyaC0ydjJoLTJ2LTJoLTJ2LTJoMnYtMmgydjJoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlsaXN0QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBIM3YyaDExdi0yem0wLTRIM3YyaDExVjZ6bTQgOHYtNGgtMnY0aC00djJoNHY0aDJ2LTRoNHYtMmgtNHpNMyAxNmg3di0ySDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlsaXN0UGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTBoMTF2Mkgzek0zIDZoMTF2Mkgzek0zIDE0aDd2Mkgzek0xNiAxM3Y4bDYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlsaXN0UmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBIM3YyaDExdi0yem0wLTRIM3YyaDExVjZ6TTMgMTZoN3YtMkgzdjJ6bTExLjQxIDZMMTcgMTkuNDEgMTkuNTkgMjIgMjEgMjAuNTkgMTguNDEgMTggMjEgMTUuNDEgMTkuNTkgMTQgMTcgMTYuNTkgMTQuNDEgMTQgMTMgMTUuNDEgMTUuNTkgMTggMTMgMjAuNTkgMTQuNDEgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVRdWV1ZU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmgtNXY4LjE4Yy0uMzEtLjExLS42NS0uMTgtMS0uMTgtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zVjhoM1Y2em0tNyAwSDN2MmgxMlY2em0wIDRIM3YyaDEydi0yem0tNCA0SDN2Mmg4di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVldWVQbGF5TmV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNXYyaDh2LTJoMnYtMkgzVjVoMTh2OGgyVjVhMiAyIDAgMCAwLTItMnptLTggN1Y3aC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6bTExIDgtNC41IDQuNUwxOCAyMWwzLTMtMy0zIDEuNS0xLjVMMjQgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVRdWV1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDhWNGgxMnYxMnptLTctMWgydi00aDRWOWgtNFY1aC0ydjRIOXYyaDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNkg4LjNsOC4yNi0zLjM0TDE1Ljg4IDEgMy4yNCA2LjE1QzIuNTEgNi40MyAyIDcuMTcgMiA4djEyYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bTAgMnYzaC0yVjloLTJ2Mkg0VjhoMTZ6TTQgMjB2LTdoMTZ2N0g0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCIxNi40OFwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWNlbnRBY3RvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVoMnYxNGgtMnptLTQgMGgydjE0aC0yem0tMyAwSDJjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTFWNmMwLS41NS0uNDUtMS0xLTF6bS0xIDEySDNWN2gxMHYxMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiOS45NFwiLFwiclwiOlwiMS45NVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS44OSAxNS4zNWMwLTEuMy0yLjU5LTEuOTUtMy44OS0xLjk1cy0zLjg5LjY1LTMuODkgMS45NVYxNmg3Ljc4di0uNjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVGcm9tUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnptLTUtN3YySDh2LTJoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGVhdE9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMUgzYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bS0yIDE4SDYuODNsMS41OCAxLjU4TDcgMjJsLTQtNCA0LTQgMS40MSAxLjQyTDYuODMgMTdIMTd2LTRoMnY2em0tMi05LTEuNDEtMS40MkwxNy4xNyA3SDd2NEg1VjVoMTIuMTdsLTEuNTgtMS41OEwxNyAybDQgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBlYXRPbmVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIM2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0tMiAxOEg2LjgzbDEuNTggMS41OEw3IDIybC00LTQgNC00IDEuNDEgMS40Mkw2LjgzIDE3SDE3di00aDJ2NnptLTktOC41VjloM3Y2aC0xLjV2LTQuNUgxMHptNy0uNS0xLjQxLTEuNDJMMTcuMTcgN0g3djRINVY1aDEyLjE3bC0xLjU4LTEuNThMMTcgMmw0IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwZWF0T25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoMTB2M2w0LTQtNC00djNINXY2aDJWN3ptMTAgMTBIN3YtM2wtNCA0IDQgNHYtM2gxMnYtNmgtMnY0em0tNC0yVjloLTFsLTIgMXYxaDEuNXY0SDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoMTB2M2w0LTQtNC00djNINXY2aDJWN3ptMTAgMTBIN3YtM2wtNCA0IDQgNHYtM2gxMnYtNmgtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwbGF5MTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDVWMWwtNSA1IDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZoLTJjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOC0zLjU4LTgtOC04em0tMS4xIDExaC0uODV2LTMuMjZsLTEuMDEuMzF2LS42OWwxLjc3LS42M2guMDlWMTZ6bTQuMjgtMS43NmMwIC4zMi0uMDMuNi0uMS44MnMtLjE3LjQyLS4yOS41Ny0uMjguMjYtLjQ1LjMzLS4zNy4xLS41OS4xLS40MS0uMDMtLjU5LS4xLS4zMy0uMTgtLjQ2LS4zMy0uMjMtLjM0LS4zLS41Ny0uMTEtLjUtLjExLS44MnYtLjc0YzAtLjMyLjAzLS42LjEtLjgycy4xNy0uNDIuMjktLjU3LjI4LS4yNi40NS0uMzMuMzctLjEuNTktLjEuNDEuMDMuNTkuMS4zMy4xOC40Ni4zMy4yMy4zNC4zLjU3LjExLjUuMTEuODJ2Ljc0em0tLjg1LS44NmMwLS4xOS0uMDEtLjM1LS4wNC0uNDhzLS4wNy0uMjMtLjEyLS4zMS0uMTEtLjE0LS4xOS0uMTctLjE2LS4wNS0uMjUtLjA1LS4xOC4wMi0uMjUuMDUtLjE0LjA5LS4xOS4xNy0uMDkuMTgtLjEyLjMxLS4wNC4yOS0uMDQuNDh2Ljk3YzAgLjE5LjAxLjM1LjA0LjQ4cy4wNy4yNC4xMi4zMi4xMS4xNC4xOS4xNy4xNi4wNS4yNS4wNS4xOC0uMDIuMjUtLjA1LjE0LS4wOS4xOS0uMTcuMDktLjE5LjExLS4zMi4wNC0uMjkuMDQtLjQ4di0uOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBsYXkzMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNVYxTDcgNmw1IDVWN2MzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02SDRjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOC0zLjU4LTgtOC04em0tMi40NCA4LjQ5aC40NWMuMjEgMCAuMzctLjA1LjQ4LS4xNnMuMTYtLjI1LjE2LS40M2EuNTM4LjUzOCAwIDAgMC0uMTUtLjM5Yy0uMDUtLjA1LS4xMS0uMDktLjE4LS4xMXMtLjE2LS4wNC0uMjUtLjA0Yy0uMDggMC0uMTUuMDEtLjIyLjAzcy0uMTMuMDUtLjE4LjEtLjA5LjA5LS4xMi4xNS0uMDUuMTMtLjA1LjJoLS44NWExLjA2IDEuMDYgMCAwIDEgLjQxLS44NWMuMTMtLjEuMjctLjE4LjQ0LS4yM3MuMzUtLjA4LjU0LS4wOGMuMjEgMCAuNDEuMDMuNTkuMDhzLjMzLjEzLjQ2LjIzLjIzLjIzLjMuMzguMTEuMzMuMTEuNTNhLjg0Mi44NDIgMCAwIDEtLjE3LjUyIDEuMSAxLjEgMCAwIDEtLjQ4LjM5Yy4yNC4wOS40Mi4yMS41NC4zOXMuMTguMzguMTguNjFjMCAuMi0uMDQuMzgtLjEyLjUzcy0uMTguMjktLjMyLjM5LS4yOS4xOS0uNDguMjQtLjM4LjA4LS42LjA4Yy0uMTggMC0uMzYtLjAyLS41My0uMDdzLS4zMy0uMTItLjQ2LS4yMy0uMjUtLjIzLS4zMy0uMzgtLjEyLS4zNC0uMTItLjU1aC44NWMwIC4wOC4wMi4xNS4wNS4yMnMuMDcuMTIuMTMuMTcuMTIuMDkuMi4xMS4xNi4wNC4yNS4wNGMuMSAwIC4xOS0uMDEuMjctLjA0cy4xNS0uMDcuMi0uMTIuMS0uMTEuMTMtLjE4LjA0LS4xNS4wNC0uMjRjMC0uMTEtLjAyLS4yMS0uMDUtLjI5cy0uMDgtLjE1LS4xNC0uMi0uMTMtLjA5LS4yMi0uMTEtLjE4LS4wNC0uMjktLjA0aC0uNDd2LS42NXptNS43NC43NWMwIC4zMi0uMDMuNi0uMS44MnMtLjE3LjQyLS4yOS41Ny0uMjguMjYtLjQ1LjMzLS4zNy4xLS41OS4xLS40MS0uMDMtLjU5LS4xLS4zMy0uMTgtLjQ2LS4zMy0uMjMtLjM0LS4zLS41Ny0uMTEtLjUtLjExLS44MnYtLjc0YzAtLjMyLjAzLS42LjEtLjgycy4xNy0uNDIuMjktLjU3LjI4LS4yNi40NS0uMzMuMzctLjEuNTktLjEuNDEuMDMuNTkuMS4zMy4xOC40Ni4zMy4yMy4zNC4zLjU3LjExLjUuMTEuODJ2Ljc0em0tLjg1LS44NmMwLS4xOS0uMDEtLjM1LS4wNC0uNDhzLS4wNy0uMjMtLjEyLS4zMS0uMTEtLjE0LS4xOS0uMTctLjE2LS4wNS0uMjUtLjA1LS4xOC4wMi0uMjUuMDUtLjE0LjA5LS4xOS4xNy0uMDkuMTgtLjEyLjMxLS4wNC4yOS0uMDQuNDh2Ljk3YzAgLjE5LjAxLjM1LjA0LjQ4cy4wNy4yNC4xMi4zMi4xMS4xNC4xOS4xNy4xNi4wNS4yNS4wNS4xOC0uMDIuMjUtLjA1LjE0LS4wOS4xOS0uMTcuMDktLjE5LjExLS4zMmMuMDMtLjEzLjA0LS4yOS4wNC0uNDh2LS45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGxheTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMUw3IDZsNSA1VjdjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNkg0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHptLTEuMzEgOC45LjI1LTIuMTdoMi4zOXYuNzFoLTEuN2wtLjExLjkyYy4wMy0uMDIuMDctLjAzLjExLS4wNXMuMDktLjA0LjE1LS4wNS4xMi0uMDMuMTgtLjA0LjEzLS4wMi4yLS4wMmMuMjEgMCAuMzkuMDMuNTUuMXMuMy4xNi40MS4yOC4yLjI3LjI1LjQ1LjA5LjM4LjA5LjZjMCAuMTktLjAzLjM3LS4wOS41NHMtLjE1LjMyLS4yNy40NS0uMjcuMjQtLjQ1LjMxLS4zOS4xMi0uNjQuMTJjLS4xOCAwLS4zNi0uMDMtLjUzLS4wOHMtLjMyLS4xNC0uNDYtLjI0LS4yNC0uMjQtLjMyLS4zOS0uMTMtLjMzLS4xMy0uNTNoLjg0Yy4wMi4xOC4wOC4zMi4xOS40MXMuMjUuMTUuNDIuMTVhLjQ5LjQ5IDAgMCAwIC40NS0uMjNjLjA0LS4wNy4wOC0uMTUuMTEtLjI1cy4wMy0uMi4wMy0uMzEtLjAxLS4yMS0uMDQtLjMxLS4wNy0uMTctLjEzLS4yNC0uMTMtLjEyLS4yMS0uMTUtLjE5LS4wNS0uMy0uMDVjLS4wOCAwLS4xNS4wMS0uMi4wMnMtLjExLjAzLS4xNS4wNS0uMDguMDUtLjEyLjA3LS4wNy4wNi0uMS4wOWwtLjY3LS4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGxheUNpcmNsZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTYuNWMtMy4zMSAwLTYtMi42OS02LTZoMmMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00YzAtMi4yNC0xLjg1LTQuMDktNC4xNi0zLjk5bDEuNTcgMS41N0wxMiAxMS41bC00LTQgNC00IDEuNDEgMS40MS0xLjYgMS42QzE1LjI4IDYuNCAxOCA5LjE4IDE4IDEyLjVjMCAzLjMxLTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMUw3IDZsNSA1VjdjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNkg0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNWgzYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUg3LjV2LTFoMnYuNUgxMXYtMWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjEuNWMwIC41NS40NSAxIDEgMWgyLjV2MWgtMlYxM0g2djFjMCAuNTUuNDUgMSAxIDF6TTE4IDE0di00YzAtLjU1LS40NS0xLTEtMWgtNHY2aDRjLjU1IDAgMS0uNDUgMS0xem0tMS41LS41aC0ydi0zaDJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNodWZmbGVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIM2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yek01LjQxIDRsNS4xOCA1LjE3LTEuNDEgMS40Mkw0IDUuNDIgNS40MSA0ek0yMCAyMGgtNnYtMmgyLjYxbC0zLjItMy4yIDEuNDItMS40MiAzLjEzIDMuMTMuMDQuMDRWMTRoMnY2em0wLTEwaC0yVjcuNDJMNS40MSAyMCA0IDE4LjU5IDE2LjU4IDZIMTRWNGg2djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaHVmZmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41OSA5LjE3IDUuNDEgNCA0IDUuNDFsNS4xNyA1LjE3IDEuNDItMS40MXpNMTQuNSA0bDIuMDQgMi4wNEw0IDE4LjU5IDUuNDEgMjAgMTcuOTYgNy40NiAyMCA5LjVWNGgtNS41em0uMzMgOS40MS0xLjQxIDEuNDEgMy4xMyAzLjEzTDE0LjUgMjBIMjB2LTUuNWwtMi4wNCAyLjA0LTMuMTMtMy4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNraXBOZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDE4IDguNS02TDYgNnYxMnptMi04LjE0TDExLjAzIDEyIDggMTQuMTRWOS44NnpNMTYgNmgydjEyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2tpcFByZXZpb3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDZoMnYxMkg2em0zLjUgNiA4LjUgNlY2bC04LjUgNnptNi41IDIuMTRMMTIuOTcgMTIgMTYgOS44NnY0LjI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2xvd01vdGlvblZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4wNSA5Ljc5IDEwIDcuNXY5bDMuMDUtMi4yOUwxNiAxMmwtMi45NS0yLjIxem0wIDBMMTAgNy41djlsMy4wNS0yLjI5TDE2IDEybC0yLjk1LTIuMjF6bTAgMEwxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJsLTIuOTUtMi4yMXpNMTEgNC4wN1YyLjA1Yy0yLjAxLjItMy44NCAxLTUuMzIgMi4yMUw3LjEgNS42OUE3Ljk0MSA3Ljk0MSAwIDAgMSAxMSA0LjA3ek01LjY5IDcuMSA0LjI2IDUuNjhBOS45NDkgOS45NDkgMCAwIDAgMi4wNSAxMWgyLjAyYy4xOC0xLjQ2Ljc2LTIuNzkgMS42Mi0zLjl6TTQuMDcgMTNIMi4wNWMuMiAyLjAxIDEgMy44NCAyLjIxIDUuMzJsMS40My0xLjQzQTcuODY4IDcuODY4IDAgMCAxIDQuMDcgMTN6bTEuNjEgNi43NEE5Ljk4MSA5Ljk4MSAwIDAgMCAxMSAyMS45NXYtMi4wMmE3Ljk0MSA3Ljk0MSAwIDAgMS0zLjktMS42MmwtMS40MiAxLjQzek0yMiAxMmMwIDUuMTYtMy45MiA5LjQyLTguOTUgOS45NXYtMi4wMkMxNi45NyAxOS40MSAyMCAxNi4wNSAyMCAxMnMtMy4wMy03LjQxLTYuOTUtNy45M1YyLjA1QzE4LjA4IDIuNTggMjIgNi44NCAyMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNub296ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMWgzLjYzTDkgMTUuMlYxN2g2di0yaC0zLjYzTDE1IDEwLjhWOUg5djJ6bTcuMDU2LTcuNjU0IDEuMjgyLTEuNTM1IDQuNjA3IDMuODUtMS4yOCAxLjU0ek0zLjMzNiA3LjE5bC0xLjI4LTEuNTM2TDYuNjYyIDEuODFsMS4yOCAxLjUzNnpNMTIgNmMzLjg2IDAgNyAzLjE0IDcgN3MtMy4xNCA3LTcgNy03LTMuMTQtNy03IDMuMTQtNyA3LTdtMC0yYTkgOSAwIDEgMCAuMDAxIDE4LjAwMUE5IDkgMCAwIDAgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvcnRCeUFscGhhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC45NCA0LjY2aC00LjcybDIuMzYtMi4zNiAyLjM2IDIuMzZ6bS00LjY5IDE0LjcxaDQuNjZsLTIuMzMgMi4zMy0yLjMzLTIuMzN6TTYuMSA2LjI3IDEuNiAxNy43M2gxLjg0bC45Mi0yLjQ1aDUuMTFsLjkyIDIuNDVoMS44NEw3Ljc0IDYuMjdINi4xem0tMS4xMyA3LjM3IDEuOTQtNS4xOCAxLjk0IDUuMThINC45N3ptMTAuNzYgMi41aDYuMTJ2MS41OWgtOC41M3YtMS4yOWw1LjkyLTguNTZoLTUuODh2LTEuNmg4LjN2MS4yNmwtNS45MyA4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjM4IDguNTctMS4yMyAxLjg1YTggOCAwIDAgMS0uMjIgNy41OEg1LjA3QTggOCAwIDAgMSAxNS41OCA2Ljg1bDEuODUtMS4yM0ExMCAxMCAwIDAgMCAzLjM1IDE5YTIgMiAwIDAgMCAxLjcyIDFoMTMuODVhMiAyIDAgMCAwIDEuNzQtMSAxMCAxMCAwIDAgMC0uMjctMTAuNDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjU5IDE1LjQxYTIgMiAwIDAgMCAyLjgzIDBsNS42Ni04LjQ5LTguNDkgNS42NmEyIDIgMCAwIDAgMCAyLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RvcENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em00LTRIOFY4aDh2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDh2OEg4VjhoOG0yLTJINnYxMmgxMlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3Vic2NyaXB0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2aDE2djJINHptMi00aDEydjJINnptMTQgOEg0Yy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LThjMC0xLjEtLjktMi0yLTJ6bTAgMTBINHYtOGgxNnY4em0tMTAtNy4yN3Y2LjUzTDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VidGl0bGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6TTYgMTBoMnYySDZ6bTAgNGg4djJINnptMTAgMGgydjJoLTJ6bS02LTRoOHYyaC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3Vycm91bmRTb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjI5IDE1LjcxQTUuMjMzIDUuMjMzIDAgMCAxIDYuNzUgMTJjMC0xLjM1LjUyLTIuNjkgMS41My0zLjcyTDcuMDUgNy4wNUM1LjY4IDguNDEgNSAxMC4yMSA1IDEycy42OCAzLjU5IDIuMDYgNC45NGwxLjIzLTEuMjN6TTEyIDE1LjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTMuOTMgOC41IDEyIDguNSA4LjUgMTAuMDcgOC41IDEyczEuNTcgMy41IDMuNSAzLjV6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41LTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXpNMTUuNzIgMTUuNzJsMS4yMyAxLjIzQzE4LjMyIDE1LjU5IDE5IDEzLjc5IDE5IDEycy0uNjgtMy41OS0yLjA2LTQuOTRsLTEuMjMgMS4yM0E1LjIzMyA1LjIzMyAwIDAgMSAxNy4yNSAxMmMwIDEuMzUtLjUyIDIuNjktMS41MyAzLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9DYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMC41VjdjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTF2LTMuNWw0IDR2LTExbC00IDR6TTE1IDE2SDVWOGgxMHY4em0tNi0xaDJ2LTJoMnYtMmgtMlY5SDl2Mkg3djJoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY4bC02LTZ6TTYgMjBWNGg3djVoNXYxMUg2em04LTYgMi0xLjA2djQuMTJMMTQgMTZ2MWMwIC41NS0uNDUgMS0xIDFIOWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb0xhYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxM0gzVjVoMTh2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb0xpYnJhcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6TTEyIDUuNXY5bDYtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9TZXR0aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNmgxOHY1aDJWNmMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDl2LTJIM1Y2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMiA5IDh2OHpNMjIuNzEgMTguNDNjLjAzLS4yOS4wNC0uNTguMDEtLjg2bDEuMDctLjg1Yy4xLS4wOC4xMi0uMjEuMDYtLjMybC0xLjAzLTEuNzljLS4wNi0uMTEtLjE5LS4xNS0uMzEtLjExbC0xLjI4LjVhMy40NCAzLjQ0IDAgMCAwLS43NS0uNDJsLS4yLTEuMzZhLjI0OS4yNDkgMCAwIDAtLjI1LS4yMmgtMi4wN2MtLjEyIDAtLjIzLjA5LS4yNS4yMWwtLjIgMS4zNmMtLjI2LjExLS41MS4yNi0uNzQuNDJsLTEuMjgtLjVjLS4xMi0uMDUtLjI1IDAtLjMxLjExbC0xLjAzIDEuNzljLS4wNi4xMS0uMDQuMjQuMDYuMzJsMS4wNy44NmMtLjAzLjI5LS4wNC41OC0uMDEuODZsLTEuMDcuODVjLS4xLjA4LS4xMi4yMS0uMDYuMzJsMS4wMyAxLjc5Yy4wNi4xMS4xOS4xNS4zMS4xMWwxLjI3LS41Yy4yMy4xNy40OC4zMS43NS40MmwuMiAxLjM2Yy4wMi4xMi4xMi4yMS4yNS4yMWgyLjA3Yy4xMiAwIC4yMy0uMDkuMjUtLjIxbC4yLTEuMzZjLjI2LS4xMS41MS0uMjYuNzQtLjQybDEuMjguNWMuMTIuMDUuMjUgMCAuMzEtLjExbDEuMDMtMS43OWMuMDYtLjExLjA0LS4yNC0uMDYtLjMybC0xLjA2LS44NXpNMTkgMTkuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb2NhbU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS41NiA4LTItMi00LjE1LTQuMTRMMiAzLjI3IDQuNzMgNkg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjIxIDAgLjM5LS4wOC41NS0uMThMMTkuNzMgMjFsMS40MS0xLjQxLTguODYtOC44Nkw5LjU2IDh6TTUgMTZWOGgxLjczbDggOEg1em0xMC04djIuNjFsNiA2VjYuNWwtNCA0VjdjMC0uNTUtLjQ1LTEtMS0xaC01LjYxbDIgMkgxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvY2FtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA4djhINVY4aDEwbTEtMkg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xMWwtNCA0VjdjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVm9sdW1lRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNy45N3Y4LjA1YzEuNDgtLjczIDIuNS0yLjI1IDIuNS00LjAyQTQuNSA0LjUgMCAwIDAgMTYgNy45N3pNNSA5djZoNGw1IDVWNEw5IDlINXptNy0uMTd2Ni4zNEw5LjgzIDEzSDd2LTJoMi44M0wxMiA4LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVm9sdW1lTXV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOC44M3Y2LjM0TDExLjgzIDEzSDl2LTJoMi44M0wxNCA4LjgzTTE2IDRsLTUgNUg3djZoNGw1IDVWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbHVtZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4zNCAyLjkzIDIuOTMgNC4zNCA3LjI5IDguNyA3IDlIM3Y2aDRsNSA1di02LjU5bDQuMTggNC4xOGMtLjY1LjQ5LTEuMzguODgtMi4xOCAxLjExdjIuMDZhOC45NCA4Ljk0IDAgMCAwIDMuNjEtMS43NWwyLjA1IDIuMDUgMS40MS0xLjQxTDQuMzQgMi45M3pNMTAgMTUuMTcgNy44MyAxM0g1di0yaDIuODNsLjg4LS44OEwxMCAxMS40MXYzLjc2ek0xOSAxMmMwIC44Mi0uMTUgMS42MS0uNDEgMi4zNGwxLjUzIDEuNTNjLjU2LTEuMTcuODgtMi40OC44OC0zLjg3IDAtNC4yOC0yLjk5LTcuODYtNy04Ljc3djIuMDZjMi44OS44NiA1IDMuNTQgNSA2Ljcxem0tNy04LTEuODggMS44OEwxMiA3Ljc2em00LjUgOEE0LjUgNC41IDAgMCAwIDE0IDcuOTd2MS43OWwyLjQ4IDIuNDhjLjAxLS4wOC4wMi0uMTYuMDItLjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVm9sdW1lVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOXY2aDRsNSA1VjRMNyA5SDN6bTctLjE3djYuMzRMNy44MyAxM0g1di0yaDIuODNMMTAgOC44M3pNMTYuNSAxMkE0LjUgNC41IDAgMCAwIDE0IDcuOTd2OC4wNWMxLjQ4LS43MyAyLjUtMi4yNSAyLjUtNC4wMnpNMTQgMy4yM3YyLjA2YzIuODkuODYgNSAzLjU0IDUgNi43MXMtMi4xMSA1Ljg1LTUgNi43MXYyLjA2YzQuMDEtLjkxIDctNC40OSA3LTguNzcgMC00LjI4LTIuOTktNy44Ni03LTguNzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXZWJBc3NldE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuODMgNEgyMGEyIDIgMCAwIDEgMiAydjEyYzAgLjM0LS4wOS42Ni0uMjMuOTRMMjAgMTcuMTdWOGgtOS4xN2wtNC00em0xMy42NiAxOS4zMUwxNy4xNyAyMEg0YTIgMiAwIDAgMS0yLTJWNmMwLS4zNC4wOC0uNjYuMjMtLjk0TC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MXpNMTUuMTcgMThsLTEwLTEwSDR2MTBoMTEuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXZWJBc3NldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YTIgMiAwIDAgMC0yLTJ6bTAgMTRINVY4aDE0djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2ViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgOWgxMC41djMuNUg0Vjl6bTAgNS41aDEwLjVWMThINHYtMy41ek0yMCAxOGgtMy41VjlIMjB2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTNQIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0LjAxYy0xLjEgMC0yIC45LTIgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyem0tOC02YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNCAzLjQzYzAtLjgxLS40OC0xLjUzLTEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCA4IDEzLjQzVjE0aDh2LS41N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEljQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNDVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3LS4xLS4wMy0uMjEtLjA1LS4zMS0uMDUtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMSAxMS4zNiAxMS4zNiAwIDAgMS0uNTctMy41N2MwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA0Ljk1aDEuNWMuMDcuODguMjIgMS43NS40NSAyLjU4bC0xLjIgMS4yMWMtLjQtMS4yMS0uNjYtMi40Ny0uNzUtMy43OXpNMTkgMTguOTJjLTEuMzItLjA5LTIuNi0uMzUtMy44LS43NmwxLjItMS4yYy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjUxek0xOCA1Ljk1di0zaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWx0ZXJuYXRlRW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEuOTVjLTUuNTIgMC0xMCA0LjQ4LTEwIDEwczQuNDggMTAgMTAgMTBoNXYtMmgtNWMtNC4zNCAwLTgtMy42Ni04LThzMy42Ni04IDgtOCA4IDMuNjYgOCA4djEuNDNjMCAuNzktLjcxIDEuNTctMS41IDEuNTdzLTEuNS0uNzgtMS41LTEuNTd2LTEuNDNjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDUgMi4yNCA1IDUgNWMxLjM4IDAgMi42NC0uNTYgMy41NC0xLjQ3LjY1Ljg5IDEuNzcgMS40NyAyLjk2IDEuNDcgMS45NyAwIDMuNS0xLjYgMy41LTMuNTd2LTEuNDNjMC01LjUyLTQuNDgtMTAtMTAtMTB6bTAgMTNjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBwUmVnaXN0cmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNGg0djRoLTR6TTQgMTZoNHY0SDR6TTQgMTBoNHY0SDR6TTQgNGg0djRINHpNMTYgNGg0djRoLTR6TTExIDE3Ljg2VjIwaDIuMWw1Ljk4LTUuOTctMi4xMi0yLjEyek0xNCAxMi4wM1YxMGgtNHY0aDIuMDN6TTIwLjg1IDExLjU2bC0xLjQxLTEuNDFjLS4yLS4yLS41MS0uMi0uNzEgMGwtMS4wNiAxLjA2IDIuMTIgMi4xMiAxLjA2LTEuMDZjLjItLjIuMi0uNTEgMC0uNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdXNpbmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN1YzSDJ2MThoMjBWN0gxMnpNNiAxOUg0di0yaDJ2MnptMC00SDR2LTJoMnYyem0wLTRINFY5aDJ2MnptMC00SDRWNWgydjJ6bTQgMTJIOHYtMmgydjJ6bTAtNEg4di0yaDJ2MnptMC00SDhWOWgydjJ6bTAtNEg4VjVoMnYyem0xMCAxMmgtOHYtMmgydi0yaC0ydi0yaDJ2LTJoLTJWOWg4djEwem0tMi04aC0ydjJoMnYtMnptMCA0aC0ydjJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxFbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjU5IDEwLjUyYzEuMDUuNTEgMi4wNCAxLjE1IDIuOTYgMS45MWwtMS4wNyAxLjA3Yy0uNTgtLjQ3LTEuMjEtLjg5LTEuODgtMS4yN3YtMS43MW0tMTMuMiAwdjEuN2MtLjY1LjM3LTEuMjguNzktMS44NyAxLjI3bC0xLjA3LTEuMDdjLjkxLS43NSAxLjktMS4zOCAyLjk0LTEuOU0xMiA3QzcuNDYgNyAzLjM0IDguNzguMjkgMTEuNjdjLS4xOC4xOC0uMjkuNDMtLjI5Ljcxcy4xMS41My4yOS43bDIuNDggMi40OGMuMTguMTguNDMuMjkuNzEuMjkuMjcgMCAuNTItLjEuNy0uMjguNzktLjczIDEuNjgtMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41MS41Ni0uOXYtMy4xQzguODUgOS4yNSAxMC40IDkgMTIgOXMzLjE1LjI1IDQuNTkuNzN2My4xYzAgLjQuMjMuNzQuNTYuOS45OC40OSAxLjg4IDEuMTEgMi42NyAxLjg1LjE4LjE3LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxcy0uMTEtLjUzLS4yOS0uNzFBMTYuOTcxIDE2Ljk3MSAwIDAgMCAxMiA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbE1hZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNXYyaDYuNTlMNCAxOC41OSA1LjQxIDIwIDE3IDguNDFWMTVoMlY1SDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxsTWVyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIwLjQxIDE4LjQxIDE5IDE1IDE1LjU5IDEzLjU5IDE3IDE3IDIwLjQxek03LjUgOEgxMXY1LjU5TDUuNTkgMTkgNyAyMC40MWw2LTZWOGgzLjVMMTIgMy41IDcuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbE1pc3NlZE91dGdvaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMyA4LjQxIDkgOSA3LTdWMTVoMlY3aC04djJoNC41OUwxMiAxNC41OSA0LjQxIDcgMyA4LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbE1pc3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNTkgNyAxMiAxNC41OSA2LjQxIDlIMTFWN0gzdjhoMnYtNC41OWw3IDcgOS05TDE5LjU5IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxsUmVjZWl2ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDUuNDEgMTguNTkgNCA3IDE1LjU5VjlINXYxMGgxMHYtMkg4LjQxTDIwIDUuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxsU3BsaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDQgMi4yOSAyLjI5LTIuODggMi44OCAxLjQyIDEuNDIgMi44OC0yLjg4TDIwIDEwVjRoLTZ6bS00IDBINHY2bDIuMjktMi4yOSA0LjcxIDQuN1YyMGgydi04LjQxbC01LjI5LTUuM0wxMCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41NCA1Yy4wNi44OS4yMSAxLjc2LjQ1IDIuNTlsLTEuMiAxLjJjLS40MS0xLjItLjY3LTIuNDctLjc2LTMuNzloMS41MW05Ljg2IDEyLjAyYy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjQ5Yy0xLjMyLS4wOS0yLjU5LS4zNS0zLjgtLjc1bDEuMi0xLjE5TTcuNSAzSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNDljMC0uNTUtLjQ1LTEtMS0xLTEuMjQgMC0yLjQ1LS4yLTMuNTctLjU3YS44NC44NCAwIDAgMC0uMzEtLjA1Yy0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMTQ5IDE1LjE0OSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMmMuMjgtLjI4LjM2LS42Ny4yNS0xLjAyQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbmNlbFByZXNlbnRhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDE4djE0ek05LjQxIDE1Ljk1IDEyIDEzLjM2bDIuNTkgMi41OUwxNiAxNC41NGwtMi41OS0yLjU5TDE2IDkuMzZsLTEuNDEtMS40MUwxMiAxMC41NCA5LjQxIDcuOTUgOCA5LjM2bDIuNTkgMi41OUw4IDE0LjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2VsbFRvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNy4zIDE0LjcgMS4yLTEuMmMtMS0xLTEuNS0yLjMtMS41LTMuNSAwLTEuMy41LTIuNiAxLjUtMy41TDcuMyA1LjNjLTEuMyAxLjMtMiAzLTIgNC43cy43IDMuNCAyIDQuN3pNMTkuMSAyLjlsLTEuMiAxLjJjMS42IDEuNiAyLjQgMy44IDIuNCA1LjkgMCAyLjEtLjggNC4zLTIuNCA1LjlsMS4yIDEuMmMyLTIgMi45LTQuNSAyLjktNy4xIDAtMi42LTEtNS4xLTIuOS03LjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMSA0LjEgNC45IDIuOUMzIDQuOSAyIDcuNCAyIDEwYzAgMi42IDEgNS4xIDIuOSA3LjFsMS4yLTEuMmMtMS42LTEuNi0yLjQtMy44LTIuNC01LjkgMC0yLjEuOC00LjMgMi40LTUuOXpNMTYuNyAxNC43YzEuMy0xLjMgMi0zIDItNC43LS4xLTEuNy0uNy0zLjQtMi00LjdsLTEuMiAxLjJjMSAxIDEuNSAyLjMgMS41IDMuNSAwIDEuMy0uNSAyLjYtMS41IDMuNWwxLjIgMS4yek0xNC41IDEwYTIuNSAyLjUgMCAwIDAtNSAwYzAgLjc2LjM0IDEuNDIuODcgMS44OEw3IDIyaDJsLjY3LTJoNC42N2wuNjYgMmgybC0zLjM3LTEwLjEyYy41My0uNDYuODctMS4xMi44Ny0xLjg4em0tNC4xNyA4TDEyIDEzbDEuNjcgNWgtMy4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNlbGxXaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyMmgxNlY1Ljk3TDYgMjJ6bTE0LTJoLTJ2LTcuMjJsMi0yVjIwek01LjIyIDcuMjIgMy45MyA1LjkzYzMuOS0zLjkxIDEwLjI0LTMuOTEgMTQuMTUgMGwtMS4yOSAxLjI5Yy0zLjE5LTMuMTktOC4zOC0zLjE5LTExLjU3IDB6bTcuNzEgMy44NUwxMSAxM2wtMS45My0xLjkzYTIuNzQgMi43NCAwIDAgMSAzLjg2IDB6bTEuMjktMS4yOGMtMS43OC0xLjc3LTQuNjYtMS43Ny02LjQzIDBMNi41IDguNWE2LjM3NCA2LjM3NCAwIDAgMSA5IDBsLTEuMjggMS4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYXRCdWJibGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDZsLTIgMlY0aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hhdEJ1YmJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGgxNnYxMkg1LjE3TDQgMTcuMTdWNG0wLTJjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMkg0em0yIDEwaDh2Mkg2di0yem0wLTNoMTJ2Mkg2Vjl6bTAtM2gxMnYySDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsZWFyQWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEzaDE0di0ySDV2MnptLTIgNGgxNHYtMkgzdjJ6TTcgN3YyaDE0VjdIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvUHJlc2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2OGgyVjVoMTh2MTZjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTBjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDQgMS43OSA0IDQgNCA0LTEuNzkgNC00em0tNiAwYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6TTE1LjM5IDE2LjU2QzEzLjcxIDE1LjcgMTEuNTMgMTUgOSAxNXMtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgMSAxOS4yMlYyMmgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xNSAyMEgzYzAtLjcyLS4xLTEuMzQuNTItMS42NkM0LjcxIDE3LjczIDYuNjMgMTcgOSAxN2MyLjM3IDAgNC4yOS43MyA1LjQ4IDEuMzQuNjMuMzIuNTIuOTUuNTIgMS42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk5IDRjMC0xLjEtLjg5LTItMS45OS0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0LS4wMS0xOHpNMjAgNHYxMy4xN0wxOC44MyAxNkg0VjRoMTZ6TTYgMTJoMTJ2Mkg2em0wLTNoMTJ2Mkg2em0wLTNoMTJ2Mkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29tbWVudHNEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjgzIDE2SDIwVjRINi44M2wtMi0ySDIwYzEuMSAwIDIgLjkgMiAydjE1LjE3TDE4LjgzIDE2ek0xOCA2SDguODNsMiAySDE4VjZ6bTAgM2gtNi4xN2wyIDJIMThWOXptMCA1di0yaC0zLjE3bDIgMkgxOHptMy45IDcuOS0xLjQxIDEuNDFMMTUuMTcgMThINGMtMS4xIDAtMi0uOS0yLTJWNC44M0wuNjkgMy41MSAyLjEgMi4xbDE5LjggMTkuOHpNMTMuMTcgMTZsLTItMkg2di0yaDMuMTdsLTEtMUg2VjloLjE3TDQgNi44M1YxNmg5LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGFjdEVtZXJnZW5jeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTRjMS42NSAwIDMtMS4zNSAzLTNzLTEuMzUtMy0zLTMtMyAxLjM1LTMgMyAxLjM1IDMgMyAzem0wLTRjLjU0IDAgMSAuNDYgMSAxcy0uNDYgMS0xIDEtMS0uNDYtMS0xIC40Ni0xIDEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0gyQy45IDMgMCAzLjkgMCA1djE0YzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjQgNWMwLTEuMS0uOS0yLTItMnpNNC41NCAxOWMxLjEtMS4yMiAyLjY5LTIgNC40Ni0yczMuMzYuNzggNC40NiAySDQuNTR6TTIyIDE5aC02LjA4Yy0xLjM4LTIuMzktMy45Ni00LTYuOTItNHMtNS41NCAxLjYxLTYuOTIgNEgyVjVoMjB2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljc4IDExLjE1IDEuNDctLjg1VjEyaDEuNXYtMS43bDEuNDcuODUuNzUtMS4zTDE5LjUgOWwxLjQ3LS44NS0uNzUtMS4zLTEuNDcuODVWNmgtMS41djEuN2wtMS40Ny0uODUtLjc1IDEuM0wxNi41IDlsLTEuNDcuODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250YWN0TWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIMkMuOSAzIDAgMy45IDAgNXYxNGMwIDEuMS45IDIgMiAyaDIwYzEuMSAwIDEuOTktLjkgMS45OS0yTDI0IDVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIMlY1aDIwdjE0ek0yMSA2aC03djVoN1Y2em0tMSAyLTIuNSAxLjc1TDE1IDhWN2wyLjUgMS43NUwyMCA3djF6TTkgMTJjMS42NSAwIDMtMS4zNSAzLTNzLTEuMzUtMy0zLTMtMyAxLjM1LTMgMyAxLjM1IDMgMyAzem0wLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNiA4LjU5YzAtMi41LTMuOTctMy41OC02LTMuNThzLTYgMS4wOC02IDMuNThWMThoMTJ2LTEuNDF6TTUuNDggMTZjLjc0LS41IDIuMjItMSAzLjUyLTFzMi43Ny40OSAzLjUyIDFINS40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRhY3RQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0gyQy45IDMgMCAzLjkgMCA1djE0YzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjQgNWMwLTEuMS0uOS0yLTItMnptMCAxNkgyVjVoMjB2MTR6bS0yLjk5LTEuMDFMMjEgMTZsLTEuNTEtMmgtMS42NGMtLjIyLS42My0uMzUtMS4zLS4zNS0ycy4xMy0xLjM3LjM1LTJoMS42NEwyMSA4bC0xLjk5LTEuOTlBNy40NzQgNy40NzQgMCAwIDAgMTYuMjggMTBjLS4xOC42NC0uMjggMS4zMS0uMjggMnMuMSAxLjM2LjI4IDJhNy41MTIgNy41MTIgMCAwIDAgMi43MyAzLjk5ek05IDEyYzEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zLTMgMS4zNS0zIDMgMS4zNSAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTYgOC41OWMwLTIuNS0zLjk3LTMuNTgtNi0zLjU4cy02IDEuMDgtNiAzLjU4VjE4aDEydi0xLjQxek01LjQ4IDE2Yy43NC0uNSAyLjIyLTEgMy41Mi0xczIuNzcuNDkgMy41MiAxSDUuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250YWN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyek00IDBoMTZ2Mkg0em0wIDIyaDE2djJINHptOC0xMGEyLjUgMi41IDAgMCAwIDAtNSAyLjUgMi41IDAgMCAwIDAgNXptMC0zLjVjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNSA3LjQ5QzE3IDEzLjkgMTMuNjkgMTMgMTIgMTNzLTUgLjktNSAyLjk5VjE3aDEwdi0xLjAxem0tOC4xOS0uNDljLjYxLS41MiAyLjAzLTEgMy4xOS0xIDEuMTcgMCAyLjU5LjQ4IDMuMiAxSDguODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXNrdG9wQWNjZXNzRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNDEgMS42OSAwIDMuMWwxIC45OVYxNmMwIDEuMS44OSAyIDEuOTkgMkgxMHYySDh2Mmg4di0yaC0ydi0yaC45bDYgNiAxLjQxLTEuNDEtMjAuOS0yMC45ek0yLjk5IDE2VjYuMDlMMTIuOSAxNkgyLjk5ek00LjU1IDJsMiAySDIxdjEyaC0yLjQ1bDIgMmguNDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMkg0LjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlhbGVyU2lwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAzaDF2NWgtMXptLTEgMmgtMlY0aDJWM2gtM3YzaDJ2MWgtMnYxaDN6bTMtMnY1aDFWNmgyVjNoLTN6bTIgMmgtMVY0aDF2MXptMCAxMC41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2EuOTg0Ljk4NCAwIDAgMC0xLjAxLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYy4yNy0uMjYuMzUtLjY1LjI0LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTUuMDMgNWgxLjVjLjA3Ljg4LjIyIDEuNzUuNDYgMi41OUw1Ljc5IDguOGMtLjQxLTEuMjEtLjY3LTIuNDgtLjc2LTMuOHpNMTkgMTguOTdjLTEuMzItLjA5LTIuNTktLjM1LTMuOC0uNzVsMS4yLTEuMmMuODUuMjQgMS43MS4zOSAyLjU5LjQ1djEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpYWxwYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE5Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpNNiAxYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTItOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bS02IDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNiAwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMC02Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvY3VtZW50U2Nhbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgM0g0djNIMlYxaDV2MnptMTUgM1YxaC01djJoM3YzaDJ6TTcgMjFINHYtM0gydjVoNXYtMnptMTMtM3YzaC0zdjJoNXYtNWgtMnpNMTcgNkg3djEyaDEwVjZ6bTIgMTJjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAydjEyek0xNSA4SDl2Mmg2Vjh6bTAgM0g5djJoNnYtMnptMCAzSDl2Mmg2di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9tYWluRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNDEgMS42OSAwIDMuMWwyIDJWMjFoMTUuOWwzIDMgMS40MS0xLjQxLTIwLjktMjAuOXpNNiAxOUg0di0yaDJ2MnptMC00SDR2LTJoMnYyem0tMi00VjloMnYySDR6bTYgOEg4di0yaDJ2MnptLTItNHYtMmgydjJIOHptNCA0di0yaDEuOWwyIDJIMTJ6TTggNWgydjJoLS40NUwxMiA5LjQ1VjloOHY4LjQ1bDIgMlY3SDEyVjNINS41NUw4IDUuNDV6bTggNmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb21haW5WZXJpZmljYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi42IDEwLjg4LTEuNDItMS40Mi00LjI0IDQuMjUtMi4xMi0yLjEzTDcuNCAxM2wzLjU0IDMuNTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmEyIDIgMCAwIDAtMi0yem0wIDE0SDVWOGgxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUR1byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMmgtOEM2LjM4IDIgMiA2LjY2IDIgMTIuMjggMiAxNy41IDYuNDkgMjIgMTEuNzIgMjIgMTcuMzkgMjIgMjIgMTcuNjIgMjIgMTJWNGMwLTEuMS0uOS0yLTItMnptLTMgMTMtMy0ydjJIN1Y5aDd2MmwzLTJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNnptLTIgMC04IDUtOC01aDE2em0wIDEySDRWOGw4IDUgOC01djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ydW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDR2N0g1LjE3TDQgMTIuMTdWNGgxMW0xLTJIM2MtLjU1IDAtMSAuNDUtMSAxdjE0bDQtNGgxMGMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bTUgNGgtMnY5SDZ2MmMwIC41NS40NSAxIDEgMWgxMWw0IDRWN2MwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3J3YXJkVG9JbmJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg5di0ySDRWOGw4IDUgOC01djVoMlY2YzAtMS4xLS45LTItMi0yem0tOCA3TDQgNmgxNmwtOCA1em03IDQgNCA0LTQgNHYtM2gtNHYtMmg0di0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91cmdsYXNzQm90dG9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMjItLjAxLTZMMTQgMTJsMy45OS00LjAxTDE4IDJINnY2bDQgNC00IDMuOTlWMjJoMTJ6TTggNy41VjRoOHYzLjVsLTQgNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3VyZ2xhc3NUb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDIgLjAxIDZMMTAgMTJsLTMuOTkgNC4wMUw2IDIyaDEydi02bC00LTQgNC0zLjk5VjJINnptMTAgMTQuNVYyMEg4di0zLjVsNC00IDQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUh1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDYuNWEyLjk5NiAyLjk5NiAwIDAgMC0yLjk5IDMuMjFsLTIuMDMuNjhhNC40NjggNC40NjggMCAwIDAtMy4yMi0yLjMyVjUuOTFBMy4wMTggMy4wMTggMCAwIDAgMTUgM2MwLTEuNjYtMS4zNC0zLTMtM1M5IDEuMzQgOSAzYzAgMS40Ljk2IDIuNTcgMi4yNSAyLjkxdjIuMTZjLTEuNC4yMy0yLjU4IDEuMTEtMy4yMiAyLjMybC0yLjA0LS42OEM2IDkuNjQgNiA5LjU3IDYgOS41YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzIDEuMzQgMyAzIDNjMS4wNiAwIDEuOTgtLjU1IDIuNTItMS4zN2wyLjAzLjY4Yy0uMiAxLjI5LjE3IDIuNjYgMS4wOSAzLjY5bC0xLjQxIDEuNzdDNi44NSAxNy4wOSA2LjQ0IDE3IDYgMTdjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtM2MwLS42OC0uMjItMS4zLS42LTEuOGwxLjQxLTEuNzdjMS4zNi43NiAzLjAyLjc1IDQuMzcgMGwxLjQxIDEuNzdjLS4zNy41LS41OSAxLjEyLS41OSAxLjggMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zYy0uNDQgMC0uODUuMDktMS4yMy4yNmwtMS40MS0xLjc3YTQuNDkgNC40OSAwIDAgMCAxLjA5LTMuNjlsMi4wMy0uNjhjLjUzLjgyIDEuNDYgMS4zNyAyLjUyIDEuMzcgMS42NiAwIDMtMS4zNCAzLTNTMjIuNjYgNi41IDIxIDYuNXptLTE4IDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNNiAyMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem01LTE4YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMS0uNDUgMS0xIDEtMS0uNDUtMS0xem0xIDEyYTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1em02IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMy04LjVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltcG9ydENvbnRhY3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWMtMS4xMS0uMzUtMi4zMy0uNS0zLjUtLjUtMS45NSAwLTQuMDUuNC01LjUgMS41LTEuNDUtMS4xLTMuNTUtMS41LTUuNS0xLjVTMi40NSA0LjkgMSA2djE0LjY1YzAgLjI1LjI1LjUuNS41LjEgMCAuMTUtLjA1LjI1LS4wNUMzLjEgMjAuNDUgNS4wNSAyMCA2LjUgMjBjMS45NSAwIDQuMDUuNCA1LjUgMS41IDEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjY1IDAgMy4zNS4zIDQuNzUgMS4wNS4xLjA1LjE1LjA1LjI1LjA1LjI1IDAgLjUtLjI1LjUtLjVWNmMtLjYtLjQ1LTEuMjUtLjc1LTItMXptMCAxMy41Yy0xLjEtLjM1LTIuMy0uNS0zLjUtLjUtMS43IDAtNC4xNS42NS01LjUgMS41VjhjMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuMiAwIDIuNC4xNSAzLjUuNXYxMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW1wb3J0RXhwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDMgNSA2Ljk5aDNWMTRoMlY2Ljk5aDNMOSAzem03IDE0LjAxVjEwaC0ydjcuMDFoLTNMMTUgMjFsNC0zLjk5aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW52ZXJ0Q29sb3JzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMmw0LjIgNC4yYTcuNzMgNy43MyAwIDAgMC0xLjYgNC43QzQgMTcuNDggNy41OCAyMSAxMiAyMWMxLjc1IDAgMy4zNi0uNTYgNC42Ny0xLjVsMy4xIDMuMSAxLjQyLTEuNDF6TTEyIDE5Yy0zLjMxIDAtNi0yLjYzLTYtNS44NyAwLTEuMTkuMzYtMi4zMiAxLjAyLTMuMjhMMTIgMTQuODNWMTl6TTguMzggNS41NiAxMiAybDUuNjUgNS41NkMxOS4xIDguOTkgMjAgMTAuOTYgMjAgMTMuMTNjMCAxLjE4LS4yNyAyLjI5LS43NCAzLjNMMTIgOS4xN1Y0LjgxTDkuOCA2Ljk3IDguMzggNS41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjcgMTMuNTMtMS43MS0xLjcxYy4wMS4wNi4wMS4xMi4wMS4xOCAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTJjLjA2IDAgLjEyIDAgLjE4LjAxTDUuNDcgOC4zQzQuMDIgOC45IDMgMTAuMzMgMyAxMmMwIDIuMjEgMS43OSA0IDQgNCAxLjY3IDAgMy4xLTEuMDIgMy43LTIuNDd6bTEuNDkgMS40OUE2LjAxMiA2LjAxMiAwIDAgMSA3IDE4Yy0zLjMxIDAtNi0yLjY5LTYtNiAwLTIuMjEgMS4yLTQuMTUgMi45OC01LjE5TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDEtNy41OC03LjU4em00LjA3LTEuNTkgMS4yNC0uOTMgMS44MSAxLjM2TDIxLjE3IDEybC0xLTFoLTYuMzRsLTItMkgyMWwzIDMtNC41IDQuNS0uNjktLjUxLTIuNTUtMi41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEwaC04LjM1QTUuOTkgNS45OSAwIDAgMCA3IDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDZhNS45OSA1Ljk5IDAgMCAwIDUuNjUtNEgxM2wyIDIgMi0yIDIgMiA0LTQuMDRMMjEgMTB6TTcgMTVjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlzdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2g2djJoLTZ6bTAgNGg2djJoLTZ6bTAgNGg2djJoLTZ6TTcgN2gydjJIN3ptMCA0aDJ2Mkg3em0wIDRoMnYySDd6TTIwLjEgM0gzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xOSAxOUg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaXZlSGVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg0bDMgMyAzLTNoNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE2aC00LjgzbC0uNTkuNTlMMTIgMjAuMTdsLTEuNTktMS41OS0uNTgtLjU4SDVWNGgxNHYxNHptLTgtM2gydjJoLTJ6bTEtOGMxLjEgMCAyIC45IDIgMiAwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTRTOCA2Ljc5IDggOWgyYzAtMS4xLjktMiAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhdGlvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGMyLjc2IDAgNSAyLjI0IDUgNSAwIDEuMDYtLjM5IDIuMzItMSAzLjYybDEuNDkgMS40OUMxOC4zNyAxMi4zNiAxOSAxMC41NyAxOSA5YzAtMy44Ny0zLjEzLTctNy03LTEuODQgMC0zLjUuNzEtNC43NSAxLjg2bDEuNDMgMS40M0M5LjU2IDQuNSAxMC43MiA0IDEyIDR6bTAgMi41Yy0uNTkgMC0xLjEzLjIxLTEuNTYuNTZsMy41IDMuNWMuMzUtLjQzLjU2LS45Ny41Ni0xLjU2QTIuNSAyLjUgMCAwIDAgMTIgNi41ek0zLjQxIDIuODYgMiA0LjI3bDMuMTggMy4xOEM1LjA3IDcuOTUgNSA4LjQ3IDUgOWMwIDUuMjUgNyAxMyA3IDEzczEuNjctMS44NSAzLjM4LTQuMzVMMTguNzMgMjFsMS40MS0xLjQxTDMuNDEgMi44NnpNMTIgMTguODhjLTIuMDEtMi41OC00LjgtNi43NC00Ljk4LTkuNTlsNi45MiA2LjkyYy0uNjUuOTgtMS4zMyAxLjg5LTEuOTQgMi42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2F0aW9uT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC4xMyAyIDUgNS4xMyA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODctMy4xMy03LTctN3pNNyA5YzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVjMCAyLjg4LTIuODggNy4xOS01IDkuODhDOS45MiAxNi4yMSA3IDExLjg1IDcgOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjlcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFpbExvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm00IDggOCA1IDgtNXYyaDJWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxMnYtMkg0Vjh6bTE2LTItOCA1LTgtNWgxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTV2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTMgMHYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1haWxPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY4bDggNSA4LTV2MTB6bS04LTdMNCA2aDE2bC04IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXJrQ2hhdFJlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOEg2bC00IDRWNGMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAydjdoLTJWNEg0djEyaDh2MnptMTEtMy42Ni0xLjQxLTEuNDEtNC4yNCA0LjI0LTIuMTItMi4xMi0xLjQxIDEuNDFMMTcuMzQgMjAgMjMgMTQuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXJrQ2hhdFVucmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDYuOThWMTZjMCAxLjEtLjkgMi0yIDJINmwtNCA0VjRjMC0xLjEuOS0yIDItMmgxMC4xYy0uMDYuMzItLjEuNjYtLjEgMXMuMDQuNjguMSAxSDR2MTJoMTZWNy45Yy43NC0uMTUgMS40Mi0uNDggMi0uOTJ6TTE2IDNjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zLTMgMS4zNC0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXJrRW1haWxSZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmg4di0ySDRWOGw4IDUgOC01djVoMlY2YzAtMS4xLS45LTItMi0yem0tOCA3TDQgNmgxNmwtOCA1em01LjM0IDExLTMuNTQtMy41NCAxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNEwyMyAxNi4zNCAxNy4zNCAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hcmtFbWFpbFVucmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDguOThWMThjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJsLjAxLTEyYzAtMS4xLjg5LTIgMS45OS0yaDEwLjFjLS4wNi4zMi0uMS42Ni0uMSAxcy4wNC42OC4xIDFINGw4IDUgMy42Ny0yLjI5Yy40Ny40MyAxLjAyLjc2IDEuNjMuOThMMTIgMTMgNCA4djEwaDE2VjkuOWMuNzQtLjE1IDEuNDItLjQ4IDItLjkyek0xNiA1YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya1VucmVhZENoYXRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNkg0VjRoMTAuMWE1IDUgMCAwIDEgMC0ySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY2Ljk4Yy0uNTguNDQtMS4yNi43Ny0yIC45MlYxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOVwiLFwiY3lcIjpcIjNcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMmg4djJINnpNNiA5aDEydjJINnpNNiA4aDEydi0uMUE1LjAxMyA1LjAxMyAwIDAgMSAxNS4wMyA2SDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lc3NhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGgxNnYxMkg1LjE3TDQgMTcuMTdWNG0wLTJjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMkg0em0yIDEwaDEydjJINnYtMnptMC0zaDEydjJINlY5em0wLTNoMTJ2Mkg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2JpbGVTY3JlZW5TaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0xLjk5Ljg1LTEuOTkgMS45NXYxOEM1LjAxIDIyLjA1IDUuOSAyMyA3IDIzaDEwYzEuMSAwIDItLjk1IDItMi4wNXYtMThDMTkgMS44NSAxOC4xIDEgMTcgMXptMCAxOEg3VjVoMTB2MTR6bS00LjItNS43NnYxLjc1TDE2IDEybC0zLjItMi45OHYxLjdjLTMuMTEuNDMtNC4zNSAyLjU2LTQuOCA0LjcgMS4xMS0xLjUgMi41OC0yLjE4IDQuOC0yLjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9yZVRpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA4djZsNC43IDIuOS44LTEuMi00LTIuNFY4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45MiAxMkE2Ljk1NyA2Ljk1NyAwIDAgMSAxMSAyMGMtMy45IDAtNy0zLjEtNy03czMuMS03IDctN2MuNyAwIDEuMzcuMSAyIC4yOVY0LjIzYy0uNjQtLjE1LTEuMzEtLjIzLTItLjIzLTUgMC05IDQtOSA5czQgOSA5IDlhOC45NjMgOC45NjMgMCAwIDAgOC45NC0xMGgtMi4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNVYyaC0ydjNoLTN2MmgzdjNoMlY3aDNWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuODIgMTNIMTF2LTJINi44MkM2LjQgOS44NCA1LjMgOSA0IDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNjMS4zIDAgMi40LS44NCAyLjgyLTJ6TTQgMTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgMTItNC0zdjJoLTQuMDVjLS41LTUuMDUtNC43Ni05LTkuOTUtOXYyYzQuNDIgMCA4IDMuNTggOCA4cy0zLjU4IDgtOCA4djJjNS4xOSAwIDkuNDUtMy45NSA5Ljk1LTlIMTl2Mmw0LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb1NpbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjI2IDIxLjIxIDMuNzkgMy43NCAyLjM4IDUuMTVsMi43NCAyLjc0LS4xMi4xMlYxOWMwIDEuMS45IDIgMiAyaDEwYy4zNSAwIC42OC0uMS45Ny0uMjZsMS44OCAxLjg4IDEuNDEtMS40MXpNNyAxOVY5Ljc3TDE2LjIzIDE5SDd6bTMuODQtMTRIMTd2OS4xMWwyIDJWNWMwLTEuMS0uOS0yLTItMmgtNi45OUw3Ljk1IDUuMDZsMS40MSAxLjQxTDEwLjg0IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXVzZVByZXNlbnRhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC44NS0yIDEuOTV2MTRjMCAxLjEuOSAyLjA1IDIgMi4wNWgxOGMxLjEgMCAyLS45NSAyLTIuMDV2LTE0QzIzIDMuODUgMjIuMSAzIDIxIDN6bTAgMTZIM1Y1aDE4djE0ek05IDhoMnY4SDl6bTQgMGgydjhoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25BZGREaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNmMxLjEgMCAyIC45IDIgMmEyIDIgMCAwIDEtMS42NyAxLjk3bC0yLjMxLTIuMzFDMTMuMTkgNi43MiAxNC4wMSA2IDE1IDZtMC0yYy0yLjIxIDAtNCAxLjc5LTQgNCAwIC4xOC4wMy4zNS4wNS41MmwzLjQzIDMuNDNjLjE3LjAyLjM0LjA1LjUyLjA1IDIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00em0xLjY5IDEwLjE2TDIyLjUzIDIwSDIzdi0yYzAtMi4xNC0zLjU2LTMuNS02LjMxLTMuODR6bS0zLjY4IDEuOTdMMTQuODggMThIOWMuMDgtLjI0Ljg4LTEuMDEgMi45MS0xLjU3bDEuMS0uM00xLjQxIDEuNzEgMCAzLjEybDQgNFYxMEgxdjJoM3YzaDJ2LTNoMi44OGwyLjUxIDIuNTFDOS4xOSAxNS4xMSA3IDE2LjMgNyAxOHYyaDkuODhsNCA0IDEuNDEtMS40MUwxLjQxIDEuNzF6TTYgMTB2LS44OGwuODguODhINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvblNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpNNCAxOGMuMjItLjcyIDMuMzEtMiA2LTIgMC0uNy4xMy0xLjM3LjM1LTEuOTlDNy42MiAxMy45MSAyIDE1LjI3IDIgMTh2Mmg5LjU0Yy0uNTItLjU4LS45My0xLjI1LTEuMTktMkg0ek0xOS40MyAxOC4wMmMuMzYtLjU5LjU3LTEuMjguNTctMi4wMiAwLTIuMjEtMS43OS00LTQtNHMtNCAxLjc5LTQgNCAxLjc5IDQgNCA0Yy43NCAwIDEuNDMtLjIyIDIuMDItLjU3TDIwLjU5IDIyIDIyIDIwLjU5Yy0xLjUtMS41LS43OS0uOC0yLjU3LTIuNTd6TTE2IDE4Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4zNCAxNC41NC0xLjQzLTEuNDNjLjU2LS43MyAxLjA1LTEuNSAxLjQ3LTIuMzJsLTIuMi0yLjJjLS4yOC0uMjgtLjM2LS42Ny0uMjUtMS4wMi4zNy0xLjEyLjU3LTIuMzIuNTctMy41NyAwLS41NS40NS0xIDEtMUgyMGMuNTUgMCAxIC40NSAxIDEgMCAzLjk4LTEuMzcgNy42NC0zLjY2IDEwLjU0em0tMi44MiAyLjgxQTE2Ljg4NCAxNi44ODQgMCAwIDEgNCAyMWMtLjU1IDAtMS0uNDUtMS0xdi0zLjQ5YzAtLjU1LjQ1LTEgMS0xIDEuMjQgMCAyLjQ1LS4yIDMuNTctLjU3LjEtLjA0LjIxLS4wNS4zMS0uMDUuMjYgMCAuNTEuMS43MS4yOWwyLjIgMi4yYy44MS0uNDIgMS41OC0uOSAyLjMtMS40NkwxLjM5IDQuMjJsMS40Mi0xLjQxTDIxLjE5IDIxLjJsLTEuNDEgMS40MS01LjI2LTUuMjZ6bS02LjkyLS4zM2MtLjg1LjI0LTEuNzIuMzktMi42LjQ1djEuNDljMS4zMi0uMDkgMi41OS0uMzUgMy44LS43NWwtMS4yLTEuMTl6TTE3LjQ2IDVjLS4wNi44OS0uMjEgMS43Ni0uNDUgMi41OWwxLjIgMS4yYy40MS0xLjIuNjctMi40Ny43Ni0zLjc5aC0xLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVFbmFibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNDYgNWMtLjA2Ljg5LS4yMSAxLjc2LS40NSAyLjU5bDEuMiAxLjJjLjQxLTEuMi42Ny0yLjQ3Ljc2LTMuNzloLTEuNTF6TTcuNiAxNy4wMmMtLjg1LjI0LTEuNzIuMzktMi42LjQ1djEuNDljMS4zMi0uMDkgMi41OS0uMzUgMy44LS43NWwtMS4yLTEuMTl6TTE2LjUgM0gyMGMuNTUgMCAxIC40NSAxIDEgMCA5LjM5LTcuNjEgMTctMTcgMTctLjU1IDAtMS0uNDUtMS0xdi0zLjQ5YzAtLjU1LjQ1LTEgMS0xIDEuMjQgMCAyLjQ1LS4yIDMuNTctLjU3LjEtLjA0LjIxLS4wNS4zMS0uMDUuMjYgMCAuNTEuMS43MS4yOWwyLjIgMi4yYzIuODMtMS40NSA1LjE1LTMuNzYgNi41OS02LjU5bC0yLjItMi4yYy0uMjgtLjI4LS4zNi0uNjctLjI1LTEuMDIuMzctMS4xMi41Ny0yLjMyLjU3LTMuNTcgMC0uNTUuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41NCA1Yy4wNi44OS4yMSAxLjc2LjQ1IDIuNTlsLTEuMiAxLjJjLS40MS0xLjItLjY3LTIuNDctLjc2LTMuNzloMS41MW05Ljg2IDEyLjAyYy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjQ5Yy0xLjMyLS4wOS0yLjU5LS4zNS0zLjgtLjc1bDEuMi0xLjE5TTcuNSAzSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNDljMC0uNTUtLjQ1LTEtMS0xLTEuMjQgMC0yLjQ1LS4yLTMuNTctLjU3YS44NC44NCAwIDAgMC0uMzEtLjA1Yy0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMTQ5IDE1LjE0OSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMmMuMjgtLjI4LjM2LS42Ny4yNS0xLjAyQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lbGlua0VyYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA4LjItMS0xLTQgNC00LTQtMSAxIDQgNC00IDQgMSAxIDQtNCA0IDQgMS0xLTQtNCA0LTR6TTE5IDFIOWMtMS4xIDAtMiAuOS0yIDJ2M2gyVjRoMTB2MTZIOXYtMkg3djNjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVsaW5rTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMUg5Yy0xLjEgMC0yIC45LTIgMnYzaDJWNGgxMHYxNkg5di0ySDd2M2MwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bS04LjIgMTBWOS41QzEwLjggOC4xIDkuNCA3IDggN1M1LjIgOC4xIDUuMiA5LjVWMTFjLS42IDAtMS4yLjYtMS4yIDEuMnYzLjVjMCAuNy42IDEuMyAxLjIgMS4zaDUuNWMuNyAwIDEuMy0uNiAxLjMtMS4ydi0zLjVjMC0uNy0uNi0xLjMtMS4yLTEuM3ptLTEuMyAwaC0zVjkuNWMwLS44LjctMS4zIDEuNS0xLjNzMS41LjUgMS41IDEuM1YxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lbGlua1JpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjEgNy43LTEgMWMxLjggMS44IDEuOCA0LjYgMCA2LjVsMSAxYzIuNS0yLjMgMi41LTYuMSAwLTguNXpNMTggOS44bC0xIDFjLjUuNy41IDEuNiAwIDIuM2wxIDFjMS4yLTEuMiAxLjItMyAwLTQuM3pNMTQgMUg0Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTlINFY0aDEwdjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVsaW5rU2V0dXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgM3YzaDJWNGgxMHYxNkg5di0ySDd2M2MwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJIOWMtMS4xIDAtMiAuOS0yIDJ6bTIuNSAxMi41Yy4yOS0uMTIuNTUtLjI5LjgtLjQ4bC0uMDIuMDMgMS4wMS4zOWMuMjMuMDkuNDkgMCAuNjEtLjIybC44NC0xLjQ2Yy4xMi0uMjEuMDctLjQ5LS4xMi0uNjRsLS44NS0uNjgtLjAyLjAzYy4wMi0uMTYuMDUtLjMyLjA1LS40OHMtLjAzLS4zMi0uMDUtLjQ4bC4wMi4wMy44NS0uNjhjLjE5LS4xNS4yNC0uNDMuMTItLjY0bC0uODQtMS40NmEuNDk5LjQ5OSAwIDAgMC0uNjEtLjIybC0xLjAxLjM5LjAyLjAzYy0uMjUtLjE3LS41MS0uMzQtLjgtLjQ2bC0uMTctMS4wOEEuNDg4LjQ4OCAwIDAgMCA4Ljg0IDdINy4xNmMtLjI1IDAtLjQ2LjE4LS40OS40Mkw2LjUgOC41Yy0uMjkuMTItLjU1LjI5LS44LjQ4bC4wMi0uMDMtMS4wMi0uMzljLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0uODQgMS40NmMtLjEyLjIxLS4wNy40OS4xMi42NGwuODUuNjguMDItLjAzYy0uMDIuMTUtLjA1LjMxLS4wNS40N3MuMDMuMzIuMDUuNDhsLS4wMi0uMDMtLjg1LjY4Yy0uMTkuMTUtLjI0LjQzLS4xMi42NGwuODQgMS40NmMuMTIuMjEuMzguMzEuNjEuMjJsMS4wMS0uMzktLjAxLS4wNGMuMjUuMTkuNTEuMzYuOC40OGwuMTcgMS4wN2MuMDMuMjUuMjQuNDMuNDkuNDNoMS42OGMuMjUgMCAuNDYtLjE4LjQ5LS40MmwuMTctMS4wOHpNNiAxMmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUG9ydGFibGVXaWZpT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjQyIDIuMzYgMi4wMSAzLjc4IDQuMSA1Ljg3QzIuNzkgNy41NyAyIDkuNjkgMiAxMmMwIDMuNyAyLjAxIDYuOTIgNC45OSA4LjY1bDEtMS43M0M1LjYxIDE3LjUzIDQgMTQuOTYgNCAxMmMwLTEuNzYuNTctMy4zOCAxLjUzLTQuNjlsMS40MyAxLjQ0QzYuMzYgOS42OCA2IDEwLjggNiAxMmMwIDIuMjIgMS4yMSA0LjE1IDMgNS4xOWwxLTEuNzRjLTEuMTktLjctMi0xLjk3LTItMy40NSAwLS42NS4xNy0xLjI1LjQ0LTEuNzlsMS41OCAxLjU4TDEwIDEyYzAgMS4xLjkgMiAyIDJsLjIxLS4wMiA3LjUyIDcuNTIgMS40MS0xLjQxTDMuNDIgMi4zNnptMTQuMjkgMTEuNDZjLjE4LS41Ny4yOS0xLjE5LjI5LTEuODIgMC0zLjMxLTIuNjktNi02LTYtLjYzIDAtMS4yNS4xMS0xLjgyLjI5bDEuNzIgMS43MmMuMDMgMCAuMDYtLjAxLjEtLjAxIDIuMjEgMCA0IDEuNzkgNCA0IDAgLjA0LS4wMS4wNy0uMDEuMTFsMS43MiAxLjcxek0xMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS4yLS4yOSAyLjMyLS43NyAzLjM1bDEuNDkgMS40OUE5LjgyIDkuODIgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMS43NiAwLTMuNC40OC00Ljg0IDEuMjhsMS40OCAxLjQ4QzkuNjYgNC4yOCAxMC44IDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByZXNlbnRUb0FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjE0YzAgMS4xMS44OSAyIDIgMmgxOGMxLjExIDAgMi0uODkgMi0yVjVjMC0xLjExLS44OS0yLTItMnptMCAxNi4wMkgzVjQuOThoMTh2MTQuMDR6TTEwIDEySDhsNC00IDQgNGgtMnY0aC00di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJpbnREaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNDEgMS42IDAgMy4wMSA1IDhjLTEuNjYgMC0zIDEuMzQtMyAzdjZoNHY0aDEybDIuOTUgMi45NiAxLjQxLTEuNDFMMS40MSAxLjZ6TTYgMTVINHYtNGMwLS41NS40NS0xIDEtMWgybDMgM0g2djJ6bTIgNHYtNGg0bDQgNEg4ek04IDVoOHYzaC01LjM0bDIgMkgxOWMuNTUgMCAxIC40NSAxIDF2NGwtMiAuMDFWMTNoLTIuMzRsNCA0SDIydi02YzAtMS42Ni0xLjM0LTMtMy0zaC0xVjNINnYuMzZsMiAyVjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxMS41MVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXJDb2RlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDIxaC0ydi0yaDJ2MnptLTItN2gtMnY1aDJ2LTV6bTgtMmgtMnY0aDJ2LTR6bS0yLTJoLTJ2Mmgydi0yek03IDEySDV2Mmgydi0yem0tMi0ySDN2Mmgydi0yem03LTVoMlYzaC0ydjJ6bS03LjUtLjV2M2gzdi0zaC0zek05IDlIM1YzaDZ2NnptLTQuNSA3LjV2M2gzdi0zaC0zek05IDIxSDN2LTZoNnY2em03LjUtMTYuNXYzaDN2LTNoLTN6TTIxIDloLTZWM2g2djZ6bS0yIDEwdi0zaC00djJoMnYzaDR2LTJoLTJ6bS0yLTdoLTR2Mmg0di0yem0tNC0ySDd2MmgydjJoMnYtMmgydi0yem0xLTFWN2gtMlY1aC0ydjRoNHpNNi43NSA1LjI1aC0xLjV2MS41aDEuNXYtMS41em0wIDEyaC0xLjV2MS41aDEuNXYtMS41em0xMi0xMmgtMS41djEuNWgxLjV2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVFyQ29kZVNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgNi41djNoLTN2LTNoM00xMSA1SDV2Nmg2VjV6bS0xLjUgOS41djNoLTN2LTNoM00xMSAxM0g1djZoNnYtNnptNi41LTYuNXYzaC0zdi0zaDNNMTkgNWgtNnY2aDZWNXptLTYgOGgxLjV2MS41SDEzVjEzem0xLjUgMS41SDE2VjE2aC0xLjV2LTEuNXpNMTYgMTNoMS41djEuNUgxNlYxM3ptLTMgM2gxLjV2MS41SDEzVjE2em0xLjUgMS41SDE2VjE5aC0xLjV2LTEuNXpNMTYgMTZoMS41djEuNUgxNlYxNnptMS41LTEuNUgxOVYxNmgtMS41di0xLjV6bTAgM0gxOVYxOWgtMS41di0xLjV6TTIyIDdoLTJWNGgtM1YyaDV2NXptMCAxNXYtNWgtMnYzaC0zdjJoNXpNMiAyMmg1di0ySDR2LTNIMnY1ek0yIDJ2NWgyVjRoM1YySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVRckNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDExaDhWM0gzdjh6bTItNmg0djRINVY1ek0zIDIxaDh2LThIM3Y4em0yLTZoNHY0SDV2LTR6TTEzIDN2OGg4VjNoLTh6bTYgNmgtNFY1aDR2NHpNMTkgMTloMnYyaC0yek0xMyAxM2gydjJoLTJ6TTE1IDE1aDJ2MmgtMnpNMTMgMTdoMnYyaC0yek0xNSAxOWgydjJoLTJ6TTE3IDE3aDJ2MmgtMnpNMTcgMTNoMnYyaC0yek0xOSAxNWgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWFkTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoOXYyaC05ek0xMyAxNWg5djJoLTl6TTE2IDExaDZ2MmgtNnpNMTMgMTIgOCA3djRIMnYyaDZ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJpbmdWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzLjcxIDE2LjY3QTE2Ljk3MSAxNi45NzEgMCAwIDAgMTIgMTJDNy40NiAxMiAzLjM0IDEzLjc4LjI5IDE2LjY3Yy0uMTguMTgtLjI5LjQzLS4yOS43MSAwIC4yOC4xMS41My4yOS43MWwyLjQ4IDIuNDhjLjE4LjE4LjQzLjI5LjcxLjI5LjI3IDAgLjUyLS4xMS43LS4yOC43OS0uNzQgMS42OS0xLjM2IDIuNjYtMS44NS4zMy0uMTYuNTYtLjUuNTYtLjl2LTMuMWMxLjQ1LS40OCAzLS43MyA0LjYtLjczIDEuNiAwIDMuMTUuMjUgNC42LjcydjMuMWMwIC4zOS4yMy43NC41Ni45Ljk4LjQ5IDEuODcgMS4xMiAyLjY2IDEuODUuMTguMTguNDMuMjguNy4yOC4yOCAwIC41My0uMTEuNzEtLjI5bDIuNDgtMi40OGMuMTgtLjE4LjI5LS40My4yOS0uNzFhLjk5Ljk5IDAgMCAwLS4yOS0uN3ptLTE4LjMxLjU2Yy0uNjYuMzctMS4yOS44LTEuODcgMS4yN2wtMS4wNy0xLjA3Yy45MS0uNzUgMS45LTEuMzkgMi45NS0xLjl2MS43em0xNS4wNyAxLjI2Yy0uNTktLjQ4LTEuMjEtLjktMS44Ny0xLjI3di0xLjdjMS4wNC41MSAyLjAzIDEuMTUgMi45NCAxLjlsLTEuMDcgMS4wN3ptLjY5LTEyLjIzLTEuNDEtMS40MS0zLjU2IDMuNTUgMS40MSAxLjQxczMuNDUtMy41MiAzLjU2LTMuNTV6TTExIDJoMnY1aC0yek02LjQgOS44MSA3LjgxIDguNCA0LjI2IDQuODQgMi44NCA2LjI2Yy4xMS4wMyAzLjU2IDMuNTUgMy41NiAzLjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUnNzRmVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjE4XCIsXCJjeVwiOlwiMTcuODJcIixcInJcIjpcIjIuMThcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA0LjQ0djIuODNjNy4wMyAwIDEyLjczIDUuNyAxMi43MyAxMi43M2gyLjgzYzAtOC41OS02Ljk3LTE1LjU2LTE1LjU2LTE1LjU2em0wIDUuNjZ2Mi44M2MzLjkgMCA3LjA3IDMuMTcgNy4wNyA3LjA3aDIuODNjMC01LjQ3LTQuNDMtOS45LTkuOS05Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSdHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05LjAzIDMtMS4xMSA3LjA3aDIuNjJsLjctNC41aDIuNThMMTEuOCAxOC40M0g5LjQ3TDkuMDYgMjFoNy4yN2wuNC0yLjU3aC0yLjM1bDItMTIuODZoMi41OGwtLjcxIDQuNWgyLjY1TDIyIDNIOS4wM3pNOCA1SDRsLS4zMSAyaDRMOCA1em0tLjYxIDRoLTRsLS4zMSAyaDRsLjMxLTJ6bS45MiA4aC02TDIgMTloNmwuMzEtMnptLjYyLTRoLTZsLS4zMSAyaDYuMDFsLjMtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjcmVlblNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGMxLjEgMCAxLjk5LS45IDEuOTktMkwyMiA2YTIgMiAwIDAgMC0yLTJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMGEyIDIgMCAwIDAgMiAySDB2MmgyNHYtMmgtNHpNNCAxNlY2aDE2djEwLjAxTDQgMTZ6bTktNi44N2MtMy44OS41NC01LjQ0IDMuMi02IDUuODcgMS4zOS0xLjg3IDMuMjItMi43MiA2LTIuNzJ2Mi4xOWw0LTMuNzRMMTMgN3YyLjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VuZFRpbWVFeHRlbnNpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA2djYuMjZsMiAxVjZjMC0xLjEtLjktMi0yLTJoLTRhMi41IDIuNSAwIDAgMC01IDBINS4wMWMtMS4xIDAtMiAuOS0yIDJ2My44QzUuNyA5LjggNiAxMS45NiA2IDEyLjVzLS4yOSAyLjctMyAyLjdWMTljMCAxLjEuOSAyIDIgMmgzLjhjMC0yLjE2IDEuMzctMi43OCAyLjItMi45NHYtMi4wM2MtMS40My4xNy0zLjE1IDEuMDQtMy44NyAyLjk3SDV2LTIuMTNjMi4xNy0uOCAzLTIuODcgMy00LjM3IDAtMS40OS0uODMtMy41Ni0yLjk5LTQuMzdWNkgxMVY0YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djJoNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTJ2NGw0IDEtNCAxdjRsMTAtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnRpbWVudFNhdGlzZmllZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNmMtMS40OCAwLTIuNzUtLjgxLTMuNDUtMkg2Ljg4YTUuNDk1IDUuNDk1IDAgMCAwIDEwLjI0IDBoLTEuNjdjLS42OSAxLjE5LTEuOTcgMi0zLjQ1IDJ6bS0uMDEtMTRDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGgxNmMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJ6bTAgMnYxMmgxNlY2SDR6bTcgM2gydjZoLTJWOXptMyAwaDRjLjU1IDAgMSAuNDUgMSAxdjJjMCAuNTUtLjQ1IDEtMSAxaC0yLjV2MkgxNFY5em0zLjUgMS41aC0ydjFoMnYtMXptLTExIC43NUg5Yy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFINXYtMS41aDMuNXYtLjc1SDZjLS41NSAwLTEtLjQ1LTEtMVYxMGMwLS41NS40NS0xIDEtMWg0djEuNUg2LjV2Ljc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BlYWtlclBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDcuMDcgOC40MyA4LjVjLjkxLS45MSAyLjE4LTEuNDggMy41Ny0xLjQ4czIuNjYuNTcgMy41NyAxLjQ4TDE3IDcuMDdDMTUuNzIgNS43OSAxMy45NSA1IDEyIDVzLTMuNzIuNzktNSAyLjA3ek0xMiAxQzguOTggMSA2LjI0IDIuMjMgNC4yNSA0LjIxbDEuNDEgMS40MUM3LjI4IDQgOS41MyAzIDEyIDNzNC43MiAxIDYuMzQgMi42MmwxLjQxLTEuNDFBMTAuOTYzIDEwLjk2MyAwIDAgMCAxMiAxem0yLjg2IDkuMDFMOS4xNCAxMEM4LjUxIDEwIDggMTAuNTEgOCAxMS4xNHY5LjcxYzAgLjYzLjUxIDEuMTQgMS4xNCAxLjE0aDUuNzFjLjYzIDAgMS4xNC0uNTEgMS4xNC0xLjE0di05LjcxYy4wMS0uNjMtLjUtMS4xMy0xLjEzLTEuMTN6TTE1IDIwSDl2LThoNnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3Bva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3YzAtMi4yMS0xLjc5LTQtNC00UzggNC43OSA4IDdzMS43OSA0IDQgNCA0LTEuNzkgNC00em0tNCAyYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptLTUgNGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTEwLTZjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RheUN1cnJlbnRMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMDEgNyAxIDE3YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0xLjk5LjktMS45OSAyek0xOSA3djEwSDVWN2gxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXlDdXJyZW50UG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0xLjk5LjktMS45OSAydjE4YzAgMS4xLjg5IDIgMS45OSAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE5SDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXlQcmltYXJ5TGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjAxIDcgMSAxN2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMS45OS45LTEuOTkgMnpNMTkgN3YxMEg1VjdoMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGF5UHJpbWFyeVBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMS45OS45LTEuOTkgMnYxOGMwIDEuMS44OSAyIDEuOTkgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9wU2NyZWVuU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS43OSAxOCAyIDJIMjR2LTJoLTIuMjF6TTEuMTEgMi45OGwxLjU1IDEuNTZjLS40MS4zNy0uNjYuODktLjY2IDEuNDhWMTZjMCAxLjEuOSAyIDIuMDEgMkgwdjJoMTguMTNsMi43MSAyLjcxIDEuNDEtMS40MUwyLjUyIDEuNTcgMS4xMSAyLjk4ek00IDYuMDJoLjEzbDQuOTUgNC45M0M3Ljk0IDEyLjA3IDcuMzEgMTMuNTIgNyAxNWMuOTYtMS4yOSAyLjEzLTIuMDggMy42Ny0yLjQ2bDMuNDYgMy40OEg0di0xMHptMTYgMHYxMC4xOWwxLjMgMS4zYy40Mi0uMzcuNy0uODkuNy0xLjQ5di0xMGEyIDIgMCAwIDAtMi0ySDcuOGwyIDJIMjB6bS03LjA3IDMuMTMgMi43OSAyLjc4IDEuMjgtMS4yTDEzIDd2Mi4xM2wtLjA3LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dhcENhbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA0LTQgNGgzdjdjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yVjhjMC0yLjIxLTEuNzktNC00LTRTNSA1Ljc5IDUgOHY3SDJsNCA0IDQtNEg3VjhjMC0xLjEuOS0yIDItMnMyIC45IDIgMnY3YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRWOGgzbC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0c21zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDZsLTIgMlY0aDE2djEyek03IDloMnYySDd6bTQgMGgydjJoLTJ6bTQgMGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVbnN1YnNjcmliZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTkgMTQuMDRWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEwLjA1Yy4yOCAxLjkyIDIuMSAzLjM1IDQuMTggMi45MyAxLjM0LS4yNyAyLjQzLTEuMzcgMi43LTIuNzEuMjUtMS4yNC0uMTYtMi4zOS0uOTQtMy4xOHptLTItOS4wNEwxMiA4LjUgNSA1aDEzLjk5em0tMy42NCAxMEg1VjdsNyAzLjVMMTkgN3Y2LjA1Yy0uMTYtLjAyLS4zMy0uMDUtLjUtLjA1LTEuMzkgMC0yLjU5LjgyLTMuMTUgMnptNS4xNSAyaC00di0xaDR2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvaWNlbWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSA2QzE1LjQ2IDYgMTMgOC40NiAxMyAxMS41YzAgMS4zMy40NyAyLjU1IDEuMjYgMy41SDkuNzRjLjc5LS45NSAxLjI2LTIuMTcgMS4yNi0zLjVDMTEgOC40NiA4LjU0IDYgNS41IDZTMCA4LjQ2IDAgMTEuNSAyLjQ2IDE3IDUuNSAxN2gxM2MzLjA0IDAgNS41LTIuNDYgNS41LTUuNVMyMS41NCA2IDE4LjUgNnptLTEzIDlDMy41NyAxNSAyIDEzLjQzIDIgMTEuNVMzLjU3IDggNS41IDggOSA5LjU3IDkgMTEuNSA3LjQzIDE1IDUuNSAxNXptMTMgMGMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVTMTYuNTcgOCAxOC41IDggMjIgOS41NyAyMiAxMS41IDIwLjQzIDE1IDE4LjUgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWcG5LZXlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIybDIuNTkgMi41OUE2LjAxMiA2LjAxMiAwIDAgMCAxIDEyYzAgMy4zMSAyLjY5IDYgNiA2IDIuMjIgMCA0LjE1LTEuMjEgNS4xOS0zbDcuNTkgNy42MSAxLjQxLTEuNDFMMi44MSAyLjgxek03IDE2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTEuNjcgMS4wMi0zLjEgMi40Ny0zLjdsMS43MSAxLjcxQzcuMTIgMTAgNy4wNiAxMCA3IDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMmMwLS4wNiAwLS4xMi0uMDEtLjE4bDEuNzQgMS43NEMxMC4yMiAxNC40OCA5LjE0IDE2IDcgMTZ6bTEwLTEuODNWMTNoLTEuMTdMMTcgMTQuMTd6TTEzLjgzIDExSDIxdjJoLTJ2M2wyIDJ2LTNoMlY5SDExLjgzbDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZwbktleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTloLTZ2LTRoLTIuNjhjLTEuMTQgMi40Mi0zLjYgNC02LjMyIDQtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctN2MyLjcyIDAgNS4xNyAxLjU4IDYuMzIgNEgyNHY2aC0ydjR6bS00LTJoMnYtNGgydi0ySDExLjk0bC0uMjMtLjY3QzExLjAxIDguMzQgOS4xMSA3IDcgN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWMyLjExIDAgNC4wMS0xLjM0IDQuNzEtMy4zM2wuMjMtLjY3SDE4djR6TTcgMTVjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzem0wLTRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlDYWxsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNTFjLTEuMjQgMC0yLjQ1LS4yLTMuNTctLjU3YS44NC44NCAwIDAgMC0uMzEtLjA1Yy0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMTQ5IDE1LjE0OSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMmMuMjgtLjI4LjM2LS42Ny4yNS0xLjAyQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWExMyAxMyAwIDAgMCAuNDYgMi41OWwtMS4yIDEuMmMtLjQxLTEuMi0uNjctMi40Ny0uNzYtMy43OXpNMTkgMTguOTdjLTEuMzItLjA5LTIuNTktLjM1LTMuOC0uNzVsMS4xOS0xLjE5Yy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjQ5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA0Ljk1QzIxLjc5IDQuNzggMTkuNjcgMyAxNi41IDNjLTMuMTggMC01LjI5IDEuNzgtNS41IDEuOTVMMTYuNSAxMiAyMiA0Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tOC0yaDJ2LTRoNHYtMmgtNFY3aC0ydjRIN3YyaDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkTGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTFoOHYySDh2LTJ6bTEyLjEgMUgyMmMwLTIuNzYtMi4yNC01LTUtNWgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXpNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNMTkgMTJoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTN2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFtcFN0b3JpZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE5aDEwVjRIN3YxNXpNOSA2aDZ2MTFIOVY2ek0zIDZoMnYxMUgzek0xOSA2aDJ2MTFoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC41NCA1LjIzLTEuMzktMS42OEMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2Yy0uNDcgMC0uODguMjEtMS4xNi41NUwzLjQ2IDUuMjNDMy4xNyA1LjU3IDMgNi4wMiAzIDYuNVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjYuNWMwLS40OC0uMTctLjkzLS40Ni0xLjI3ek02LjI0IDVoMTEuNTJsLjgxLjk3SDUuNDRsLjgtLjk3ek01IDE5VjhoMTR2MTFINXptOC40NS05aC0yLjl2M0g4bDQgNCA0LTRoLTIuNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdHRyaWJ1dGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOC41Yy0uOTEgMC0yLjc1LjQ2LTIuNzUgMS4zOHY0LjYyaDEuNVYxOWgyLjV2LTQuNWgxLjVWOS44OGMwLS45MS0xLjg0LTEuMzgtMi43NS0xLjM4ek0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWNrc3BhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIN2MtLjY5IDAtMS4yMy4zNS0xLjU5Ljg4TDAgMTJsNS40MSA4LjExYy4zNi41My45Ljg5IDEuNTkuODloMTVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg3LjA3TDIuNCAxMmw0LjY2LTdIMjJ2MTR6bS0xMS41OS0yTDE0IDEzLjQxIDE3LjU5IDE3IDE5IDE1LjU5IDE1LjQxIDEyIDE5IDguNDEgMTcuNTkgNyAxNCAxMC41OSAxMC40MSA3IDkgOC40MSAxMi41OSAxMiA5IDE1LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFsbG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3LjVoNXYyaC01em0wIDdoNXYyaC01ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTExIDZINnY1aDVWNnptLTEgNEg3VjdoM3Yzem0xIDNINnY1aDV2LTV6bS0xIDRIN3YtM2gzdjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCaW90ZWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOWMtMS4xIDAtMiAuOS0yIDJoMTRjMC0xLjEtLjktMi0yLTJoLTR2LTJoM2MxLjEgMCAyLS45IDItMmgtOGMtMS42NiAwLTMtMS4zNC0zLTNhMyAzIDAgMCAxIDEuNDctMi41N2MuNDEuNTkgMS4wNiAxIDEuODMgMS4wNi43LjA2IDEuMzYtLjE5IDEuODUtLjYybC41OSAxLjYxLjk0LS4zNC4zNC45NCAxLjg4LS42OC0uMzQtLjk0Ljk0LS4zNC0yLjc0LTcuNTItLjk0LjM0LS4zNC0uOTQtMS44OC42OC4zNC45NC0uOTQuMzUuNTYgMS41NWMtMS4xNy0uMDQtMi4xOS43NS0yLjQ4IDEuODZBNS4wMSA1LjAxIDAgMCAwIDUgMTJjMCAyLjc2IDIuMjQgNSA1IDV2Mkg3em01Ljg2LTE0LjQ4IDEuNzEgNC43LS45NC4zNC0xLjcxLTQuNy45NC0uMzR6TTEwLjUgN2MuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC00LjQyIDMuNTgtOCA4LTggMS44NSAwIDMuNTUuNjMgNC45IDEuNjlMNS42OSAxNi45QTcuOTAyIDcuOTAyIDAgMCAxIDQgMTJ6bTggOGMtMS44NSAwLTMuNTUtLjYzLTQuOS0xLjY5TDE4LjMxIDcuMUE3LjkwMiA3LjkwMiAwIDAgMSAyMCAxMmMwIDQuNDItMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMWgtMWwxLTdINy41Yy0uODggMC0uMzMtLjc1LS4zMS0uNzhDOC40OCAxMC45NCAxMC40MiA3LjU0IDEzLjAxIDNoMWwtMSA3aDMuNTFjLjQgMCAuNjIuMTkuNC42NkMxMi45NyAxNy41NSAxMSAyMSAxMSAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGN1bGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4yNSA3LjcyaDV2MS41aC01ek0xMyAxNS43NWg1djEuNWgtNXpNMTMgMTMuMjVoNXYxLjVoLTV6TTggMThoMS41di0yaDJ2LTEuNWgtMnYtMkg4djJINlYxNmgyek0xNC4wOSAxMC45NWwxLjQxLTEuNDEgMS40MSAxLjQxIDEuMDYtMS4wNi0xLjQxLTEuNDIgMS40MS0xLjQxTDE2LjkxIDYgMTUuNSA3LjQxIDE0LjA5IDZsLTEuMDYgMS4wNiAxLjQxIDEuNDEtMS40MSAxLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hhbmdlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTQuMTctNS4yNC0xLjEtMS4xYy43MS0xLjMzLjUzLTMuMDEtLjU5LTQuMTNBMy40ODIgMy40ODIgMCAwIDAgMTIgOC41Yy0uMDMgMC0uMDYuMDEtLjA5LjAxTDEzIDkuNmwtMS4wNiAxLjA2LTIuODMtMi44M0wxMS45NCA1IDEzIDYuMDZsLS45Ni45NmMxLjI3LjAxIDIuNTMuNDggMy41IDEuNDQgMS43IDEuNzEgMS45MSA0LjM2LjYzIDYuM3ptLTEuMjggMS40MUwxMi4wNiAxOSAxMSAxNy45NGwuOTUtLjk1YTQuOTcgNC45NyAwIDAgMS0zLjQ4LTEuNDYgNS4wMDYgNS4wMDYgMCAwIDEtLjY0LTYuMjlsMS4xIDEuMWMtLjcxIDEuMzMtLjUzIDMuMDEuNTkgNC4xMy43LjcgMS42MyAxLjA0IDIuNTYgMS4wMUwxMSAxNC40bDEuMDYtMS4wNiAyLjgzIDIuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNi40MSAxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyIDE5IDYuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250ZW50Q29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMUg0Yy0xLjEgMC0yIC45LTIgMnYxNGgyVjNoMTJWMXptMyA0SDhjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTFjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNkg4VjdoMTF2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250ZW50Q3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjY0IDcuNjRjLjIzLS41LjM2LTEuMDUuMzYtMS42NCAwLTIuMjEtMS43OS00LTQtNFMyIDMuNzkgMiA2czEuNzkgNCA0IDRjLjU5IDAgMS4xNC0uMTMgMS42NC0uMzZMMTAgMTJsLTIuMzYgMi4zNkM3LjE0IDE0LjEzIDYuNTkgMTQgNiAxNGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00YzAtLjU5LS4xMy0xLjE0LS4zNi0xLjY0TDEyIDE0bDcgN2gzdi0xTDkuNjQgNy42NHpNNiA4Yy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem0wIDEyYy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem02LTcuNWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41LjUuMjIuNS41LS4yMi41LS41LjV6TTE5IDNsLTYgNiAyIDIgNy03VjNoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250ZW50UGFzdGVHbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNWgydjNoMTBWNWgydjZoMlY1YzAtMS4xLS45LTItMi0yaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDV2LTJINVY1em03LTJjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguMDEgMTMtMS40MiAxLjQxIDEuNTggMS41OEgxMnYyaDYuMTdsLTEuNTggMS41OSAxLjQyIDEuNDEgMy45OS00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudFBhc3RlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wxLjYxIDEuNjEgMS40MS0xLjQyek01IDE5VjcuODNMMTYuMTcgMTlINXpNMTcgOFY1aDJ2MTEuMTdsMiAyVjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDUuODNsNSA1SDE3em0tNS01Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250ZW50UGFzdGVTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDVoMnYzaDEwVjVoMnY1aDJWNWMwLTEuMS0uOS0yLTItMmgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1di0ySDVWNXptNy0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjMgMTguOWMuNC0uNy43LTEuNS43LTIuNCAwLTIuNS0yLTQuNS00LjUtNC41UzEyIDE0IDEyIDE2LjVzMiA0LjUgNC41IDQuNWMuOSAwIDEuNy0uMyAyLjQtLjdsMi43IDIuNyAxLjQtMS40LTIuNy0yLjd6bS0zLjguMWMtMS40IDAtMi41LTEuMS0yLjUtMi41czEuMS0yLjUgMi41LTIuNSAyLjUgMS4xIDIuNSAyLjUtMS4xIDIuNS0yLjUgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudFBhc3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAyaC00LjE4QzE0LjQuODQgMTMuMyAwIDEyIDBTOS42Ljg0IDkuMTggMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvcHlBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDljLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOWMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDlWNGg5djEyek0zIDE1di0yaDJ2Mkgzem0wLTUuNWgydjJIM3YtMnpNMTAgMjBoMnYyaC0ydi0yem0tNy0xLjV2LTJoMnYySDN6TTUgMjJjLTEuMSAwLTItLjktMi0yaDJ2MnptMy41IDBoLTJ2LTJoMnYyem01IDB2LTJoMmMwIDEuMS0uOSAyLTIgMnpNNSA2djJIM2MwLTEuMS45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JlYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTUuOTIgMTlINXYtLjkybDkuMDYtOS4wNi45Mi45Mkw1LjkyIDE5ek0yMC43MSA1LjYzbC0yLjM0LTIuMzRjLS4yLS4yLS40NS0uMjktLjcxLS4yOXMtLjUxLjEtLjcuMjlsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzYS45OTYuOTk2IDAgMCAwIDAtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbGV0ZVN3ZWVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNmg0djJoLTR6bTAtOGg3djJoLTd6bTAgNGg2djJoLTZ6TTMgMThjMCAxLjEuOSAyIDIgMmg2YzEuMSAwIDItLjkgMi0yVjhIM3YxMHptMi04aDZ2OEg1di04em01LTZINkw1IDVIMnYyaDEyVjVoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNoMnYtMkgzdjJ6bTQgOGgydi0ySDd2MnptNi0xOGgtMnYyaDJWM3ptNiAwdjJoMmMwLTEuMS0uOS0yLTItMnpNNSAyMXYtMkgzYzAgMS4xLjkgMiAyIDJ6bS0yLTRoMnYtMkgzdjJ6bTggNGgydi0yaC0ydjJ6bTgtOGgydi0yaC0ydjJ6bTAtNGgyVjdoLTJ2MnptLTQtNGgyVjNoLTJ2MnpNNy44MyA1IDcgNC4xN1YzaDJ2Mkg3Ljgzem0xMiAxMi0uODMtLjgzVjE1aDJ2MmgtMS4xN3ptMS4zNiA0LjE5TDIuODEgMi44MSAxLjM5IDQuMjIgNC4xNyA3SDN2MmgyVjcuODNsMiAyVjE3aDcuMTdsMiAySDE1djJoMnYtMS4xN2wyLjc4IDIuNzggMS40MS0xLjQyek05IDE1di0zLjE3TDEyLjE3IDE1SDl6bTYtMi44M1Y5aC0zLjE3bC0yLTJIMTd2Ny4xN2wtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJhZnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OSA4YzAtLjcyLS4zNy0xLjM1LS45NC0xLjdMMTIgMSAyLjk1IDYuM0MyLjM4IDYuNjUgMiA3LjI4IDIgOHYxMGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ybC0uMDEtMTB6bS0yIDB2LjAxTDEyIDEzIDQgOGw4LTQuNjhMMTkuOTkgOHpNNCAxOHYtNy42Nmw4IDUuMDIgNy45OS00Ljk5TDIwIDE4SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEeW5hbWljRmVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggOEg2djdjMCAxLjEuOSAyIDIgMmg5di0ySDhWOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM2gtOGMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4aC04VjdoOHY0ek00IDEySDJ2N2MwIDEuMS45IDIgMiAyaDl2LTJINHYtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbGVDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxSDRjLTEuMSAwLTIgLjktMiAydjE0aDJWM2gxMlYxem0tMSA0SDhjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNiAyMWMwIDEuMS44OSAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlYxMWwtNi02ek04IDIxVjdoNnY1aDV2OUg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyTGlzdE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjgzIDhIMjFWNkg4LjgzbDIgMnptNSA1SDE4di0yaC00LjE3bDIgMnpNMTQgMTYuODNWMThoLTR2LTJoMy4xN2wtMy0zSDZ2LTJoMi4xN2wtMy0zSDNWNmguMTdMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MUwxNCAxNi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckxpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxhZ0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSA5LTEtMkg4djExaDEuNXYtNUgxMmwxIDJoNVY5aC0zem0xLjUgNC41aC0yLjU3bC0xLTJIOS41di0zaDMuNTdsMSAyaDIuNDN2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjM2IDYgLjQgMkgxOHY2aC0zLjM2bC0uNC0ySDdWNmg1LjM2TTE0IDRINXYxN2gydi03aDUuNmwuNCAyaDdWNmgtNS42TDE0IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb250RG93bmxvYWRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjgzIDJIMjBjMS4xIDAgMiAuOSAyIDJ2MTUuMTdsLTItMlY0SDYuODNsLTItMnptNi4wOSA0LS41NyAxLjUyIDEuMzYgMS4zNi4yMy0uNjZoLjFsLjU0IDEuNTIgMy4wNCAzLjA0TDEzLjA3IDZoLTIuMTV6bTkuNTcgMTcuMzFMMTkuMTcgMjJINGMtMS4xIDAtMi0uOS0yLTJWNC44M0wuNjkgMy41MSAyLjEgMi4xbDE5LjggMTkuOC0xLjQxIDEuNDF6TTE3LjE3IDIwbC01LjA3LTUuMDdIOS41OEw4LjQ5IDE4SDYuNDFsMi4zOS02LjM3TDQgNi44M1YyMGgxMy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbnREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4xNyAxNS41aDUuNjRsMS4xNCAzaDIuMDlsLTUuMTEtMTNoLTEuODZsLTUuMTEgMTNoMi4wOWwxLjEyLTN6TTEyIDcuOThsMi4wNyA1LjUySDkuOTNMMTIgNy45OHpNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMThINFY0aDE2djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOC44MyAxNy4xNyAxMiAxNCAxNS4xN1YxNEg2di00aDhWOC44M00xMiA0djRINHY4aDh2NGw4LTgtOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2VzdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41OSA2Ljg5Yy43LS43MSAxLjQtMS4zNSAxLjcxLTEuMjIuNS4yIDAgMS4wMy0uMyAxLjUyLS4yNS40Mi0yLjg2IDMuODktMi44NiA2LjMxIDAgMS4yOC40OCAyLjM0IDEuMzQgMi45OC43NS41NiAxLjc0LjczIDIuNjQuNDYgMS4wNy0uMzEgMS45NS0xLjQgMy4wNi0yLjc3IDEuMjEtMS40OSAyLjgzLTMuNDQgNC4wOC0zLjQ0IDEuNjMgMCAxLjY1IDEuMDEgMS43NiAxLjc5LTMuNzguNjQtNS4zOCAzLjY3LTUuMzggNS4zNyAwIDEuNyAxLjQ0IDMuMDkgMy4yMSAzLjA5IDEuNjMgMCA0LjI5LTEuMzMgNC42OS02LjFIMjF2LTIuNWgtMi40N2MtLjE1LTEuNjUtMS4wOS00LjItNC4wMy00LjItMi4yNSAwLTQuMTggMS45MS00Ljk0IDIuODQtLjU4LjczLTIuMDYgMi40OC0yLjI5IDIuNzItLjI1LjMtLjY4Ljg0LTEuMTEuODQtLjQ1IDAtLjcyLS44My0uMzYtMS45Mi4zNS0xLjA5IDEuNC0yLjg2IDEuODUtMy41Mi43OC0xLjE0IDEuMy0xLjkyIDEuMy0zLjI4QzguOTUgMy42OSA3LjMxIDMgNi40NCAzIDUuMTIgMyAzLjk3IDQgMy43MiA0LjI1Yy0uMzYuMzYtLjY2LjY2LS44OC45M2wxLjc1IDEuNzF6bTkuMjkgMTEuNjZjLS4zMSAwLS43NC0uMjYtLjc0LS43MiAwLS42LjczLTIuMiAyLjg3LTIuNzYtLjMgMi42OS0xLjQzIDMuNDgtMi4xMyAzLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG93VG9SZWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpNNSAxOGMuMi0uNjMgMi41Ny0xLjY4IDQuOTYtMS45NGwyLjA0LTJhOS4zNCA5LjM0IDAgMCAwLTEtLjA2Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDlsLTItMkg1em0xNS42LTUuNS01LjEzIDUuMTctMi4wNy0yLjA4TDEyIDE3bDMuNDcgMy41TDIyIDEzLjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG93VG9Wb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2gtLjY4bC0yIDJoMS45MUwxOSAxN0g1bDEuNzgtMmgyLjA1bC0yLTJINmwtMyAzdjRjMCAxLjEuODkgMiAxLjk5IDJIMTlhMiAyIDAgMCAwIDItMnYtNGwtMy0zem0xIDdINXYtMWgxNHYxem0tNy42Ni00Ljk4Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw2LjM2LTYuMzZhLjk5Ni45OTYgMCAwIDAgMC0xLjQxTDE0LjE2IDIuM2EuOTc1Ljk3NSAwIDAgMC0xLjQtLjAxTDYuMzkgOC42NmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsNC45NSA0Ljk1em0yLjEyLTEwLjYxTDE3IDcuOTVsLTQuOTUgNC45NS0zLjU0LTMuNTQgNC45NS00Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDV2LTNoMy41NmMuNjkgMS4xOSAxLjk3IDIgMy40NSAyczIuNzUtLjgxIDMuNDUtMkgxOXYzem0wLTVoLTQuOTljMCAxLjEtLjkgMi0yIDJzLTItLjktMi0ySDVWNWgxNHY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zaWdodHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA4Yy0xLjQ1IDAtMi4yNiAxLjQ0LTEuOTMgMi41MWwtMy41NSAzLjU2Yy0uMy0uMDktLjc0LS4wOS0xLjA0IDBsLTIuNTUtMi41NUMxMi4yNyAxMC40NSAxMS40NiA5IDEwIDljLTEuNDUgMC0yLjI3IDEuNDQtMS45MyAyLjUybC00LjU2IDQuNTVDMi40NCAxNS43NCAxIDE2LjU1IDEgMThjMCAxLjEuOSAyIDIgMiAxLjQ1IDAgMi4yNi0xLjQ0IDEuOTMtMi41MWw0LjU1LTQuNTZjLjMuMDkuNzQuMDkgMS4wNCAwbDIuNTUgMi41NUMxMi43MyAxNi41NSAxMy41NCAxOCAxNSAxOGMxLjQ1IDAgMi4yNy0xLjQ0IDEuOTMtMi41MmwzLjU2LTMuNTVjMS4wNy4zMyAyLjUxLS40OCAyLjUxLTEuOTMgMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDkgLjk0LTIuMDdMMTggNmwtMi4wNi0uOTNMMTUgM2wtLjkyIDIuMDdMMTIgNmwyLjA4Ljkzek0zLjUgMTEgNCA5bDItLjVMNCA4bC0uNS0yTDMgOGwtMiAuNUwzIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnZlbnRvcnkyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xIDAtMiAuOS0yIDJ2My4wMWMwIC43Mi40MyAxLjM0IDEgMS42OVYyMGMwIDEuMSAxLjEgMiAyIDJoMTRjLjkgMCAyLS45IDItMlY4LjdjLjU3LS4zNSAxLS45NyAxLTEuNjlWNGMwLTEuMS0xLTItMi0yem0tMSAxOEg1VjloMTR2MTF6bTEtMTNINFY0aDE2djN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTJoNnYySDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnZlbnRvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDVoMnYzaDEwVjVoMnY1aDJWNWMwLTEuMS0uOS0yLTItMmgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg2di0ySDVWNXptNy0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExLjUgMTUuNTEgMTdsLTMuMDEtMy0xLjUgMS41IDQuNTEgNC41IDYuOTktN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpbmtPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjM5IDExIDE2IDEyLjYxVjExek0xNyA3aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xIDAgMS4yNy0uNzcgMi4zNy0xLjg3IDIuODRsMS40IDEuNEE0Ljk4NiA0Ljk4NiAwIDAgMCAyMiAxMmMwLTIuNzYtMi4yNC01LTUtNXpNMiA0LjI3bDMuMTEgMy4xMUE0Ljk5MSA0Ljk5MSAwIDAgMCAyIDEyYzAgMi43NiAyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMSAwLTEuNTkgMS4yMS0yLjkgMi43Ni0zLjA3TDguNzMgMTFIOHYyaDIuNzNMMTMgMTUuMjdWMTdoMS43M2w0LjAxIDQuMDEgMS40MS0xLjQxTDMuNDEgMi44NiAyIDQuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA3aC00djJoNGMxLjY1IDAgMyAxLjM1IDMgM3MtMS4zNSAzLTMgM2gtNHYyaDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6bS02IDhIN2MtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtM2g0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0yem0tMy00aDh2Mkg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG93UHJpb3JpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDVoOHYyaC04VjV6bTAgNS41aDh2MmgtOHYtMnptMCA1LjVoOHYyaC04di0yek0yIDExLjVDMiAxNS4wOCA0LjkyIDE4IDguNSAxOEg5djJsMy0zLTMtM3YyaC0uNUM2LjAyIDE2IDQgMTMuOTggNCAxMS41UzYuMDIgNyA4LjUgN0gxMlY1SDguNUM0LjkyIDUgMiA3LjkyIDIgMTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2em0tMiAwLTggNC45OUw0IDZoMTZ6bTAgMTJINFY4bDggNSA4LTV2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXJrdW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNnptLTIgMC04IDUtOC01aDE2em0wIDEySDRWOGw4IDUgOC01djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW92ZVRvSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDloLTIuNTVWNmgtMi45djNIOGw0IDR6bTMtNkg0Ljk5QzMuODggMyAzIDMuOSAzIDV2MTRjMCAxLjEuODggMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1di0zaDMuNTZjLjY5IDEuMTkgMS45NyAyIDMuNDUgMnMyLjc1LS44MSAzLjQ1LTJIMTl2M3ptMC01aC00Ljk5YzAgMS4xLS45IDItMiAycy0yLS45LTItMkg1bC0uMDEtOUgxOXY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV4dFdlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDE4LjUgNC00LTQtNC0xIDEgMyAzLTMgM3pNMjAgN2gtNFY1YzAtLjU1LS4yMi0xLjA1LS41OS0xLjQxQzE1LjA1IDMuMjIgMTQuNTUgMyAxNCAzaC00Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnpNMTAgNWg0djJoLTRWNXptMTAgMTVINFY5aDE2djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3V0bGluZWRGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTEtMkg1djE3aDJ2LTdoNWwxIDJoN1Y2aC02em00IDhoLTRsLTEtMkg3VjZoNWwxIDJoNXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUG9saWN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bTcgMTBjMCAxLjg1LS41MSAzLjY1LTEuMzggNS4yMWwtMS40NS0xLjQ1YTQuOTk0IDQuOTk0IDAgMCAwLS42NC02LjI5IDUuMDAzIDUuMDAzIDAgMCAwLTcuMDcgMCA1LjAwMyA1LjAwMyAwIDAgMCAwIDcuMDcgNS4wMDYgNS4wMDYgMCAwIDAgNi4yOS42NGwxLjcyIDEuNzJjLTEuMTkgMS40Mi0yLjczIDIuNTEtNC40NyAzLjA0LTQuMDItMS4yNS03LTUuNDItNy05Ljk0VjYuM2w3LTMuMTEgNyAzLjExVjExem0tNyA0Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVB1c2hQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA0djVjMCAxLjEyLjM3IDIuMTYgMSAzSDljLjY1LS44NiAxLTEuOSAxLTNWNGg0bTMtMkg3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDF2NWMwIDEuNjYtMS4zNCAzLTMgM3YyaDUuOTd2N2wxIDEgMS0xdi03SDE5di0yYy0xLjY2IDAtMy0xLjM0LTMtM1Y0aDFjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC40IDEwLjZDMTYuNTUgOC45OSAxNC4xNSA4IDExLjUgOGMtNC42NSAwLTguNTggMy4wMy05Ljk2IDcuMjJMMy45IDE2YTguMDAyIDguMDAyIDAgMCAxIDcuNi01LjVjMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZUNpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTF2MmgxMHYtMkg3em01LTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVtb3ZlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTNINXYtMmgxNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwbHlBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOFY1bC03IDcgNyA3di0zbC00LTQgNC00em02IDFWNWwtNyA3IDcgN3YtNC4xYzUgMCA4LjUgMS42IDExIDUuMS0xLTUtNC0xMC0xMS0xMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5VjVsLTcgNyA3IDd2LTQuMWM1IDAgOC41IDEuNiAxMSA1LjEtMS01LTQtMTAtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBvcnRHbWFpbGVycm9ycmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTkgMTQuOSAxNC45IDE5SDkuMUw1IDE0LjlWOS4xTDkuMSA1aDUuOEwxOSA5LjF2NS44elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjdoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBvcnRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMSA1aDUuOEwxOSA5LjF2NS44bC0uMjIuMjIgMS40MiAxLjQxLjgtLjhWOC4yN0wxNS43MyAzSDguMjdsLS44LjggMS40MSAxLjQyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOS4zM1Y3aC0ydi4zM3pNMi40MSAxLjU4IDEgMi45OWwzLjY0IDMuNjRMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2bDEuNjQtMS42NEwyMS4wMSAyM2wxLjQxLTEuNDFMMi40MSAxLjU4ek0xNC45IDE5SDkuMUw1IDE0LjlWOS4xbDEuMDUtMS4wNSA5LjkgOS45TDE0LjkgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjczIDNIOC4yN0wzIDguMjd2Ny40Nkw4LjI3IDIxaDcuNDZMMjEgMTUuNzNWOC4yN0wxNS43MyAzek0xOSAxNC45IDE0LjkgMTlIOS4xTDUgMTQuOVY5LjFMOS4xIDVoNS44TDE5IDkuMXY1Ljh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3aDJ2N2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNhdmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEydjdINXYtN0gzdjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnptLTYgLjY3IDIuNTktMi41OEwxNyAxMS41bC01IDUtNS01IDEuNDEtMS40MUwxMSAxMi42N1YzaDJ2OS42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNhdmVBcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEyLjRWN2wtNC00SDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDcuNGwyLTJINVY1aDExLjE3TDE5IDcuODN2Ni41N2wyLTJ6TTE1IDE1YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3pNNiA2aDl2NEg2VjZ6bTEzLjk5IDEwLjI1IDEuNzcgMS43N0wxNi43NyAyM0gxNXYtMS43N2w0Ljk5LTQuOTh6bTMuMjYuMjYtLjg1Ljg1LTEuNzctMS43Ny44NS0uODVjLjItLjIuNTEtLjIuNzEgMGwxLjA2IDEuMDZjLjIuMi4yLjUyIDAgLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3bC00LTR6bTIgMTZINVY1aDExLjE3TDE5IDcuODNWMTl6bS03LTdjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zek02IDZoOXY0SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZWxlY3RBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNWgyVjNjLTEuMSAwLTIgLjktMiAyem0wIDhoMnYtMkgzdjJ6bTQgOGgydi0ySDd2MnpNMyA5aDJWN0gzdjJ6bTEwLTZoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3ptMiAxOGgydi0yaC0ydjJ6bTgtOGgydi0yaC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyem0wLTEyaDJWN2gtMnYyem0wIDhoMnYtMmgtMnYyem0tNCA0aDJ2LTJoLTJ2MnptMC0xNmgyVjNoLTJ2MnpNNyAxN2gxMFY3SDd2MTB6bTItOGg2djZIOVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNC4wMSA2LjAzIDcuNTEgMy4yMi03LjUyLTEgLjAxLTIuMjJtNy41IDguNzJMNCAxNy45N3YtMi4yMmw3LjUxLTFNMi4wMSAzIDIgMTBsMTUgMi0xNSAyIC4wMSA3TDIzIDEyIDIuMDEgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNoaWVsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6bTYgOS4wOWMwIDQtMi41NSA3LjctNiA4LjgzLTMuNDUtMS4xMy02LTQuODItNi04Ljgzdi00LjdsNi0yLjI1IDYgMi4yNXY0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE4aDZ2LTJIM3Yyek0zIDZ2MmgxOFY2SDN6bTAgN2gxMnYtMkgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcXVhcmVGb290IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNjYgMTcuNjYtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDYtMS45NC0xLjk0LTEuMDYgMS4wNi0uNzEtLjcxIDEuMDYtMS4wNkw5LjcgOS43bC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDYtMS45NC0xLjk0LTEuMDYgMS4wNi0uNzEtLjcxIDEuMDYtMS4wNkw0IDR2MTRjMCAxLjEuOSAyIDIgMmgxNGwtMi4zNC0yLjM0ek03IDE3di01Ljc2TDEyLjc2IDE3SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFja2VkQmFyQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloNHYxMUg0ek00IDRoNHY0SDR6TTEwIDdoNHY0aC00ek0xNiAxMGg0djRoLTR6TTE2IDE1aDR2NWgtNHpNMTAgMTJoNHY4aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIyMFwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNFwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIyMFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMy45NDMgOC42MTkgNC40MDQtNC4zOTIgMS40MTMgMS40MTYtNC40MDUgNC4zOTJ6TTguMzIgOS42OGwuMzEuMzIgMS40Mi0xLjQxLTQuMDItNC4wNGgtLjAxbC0uMzEtLjMyLTEuNDIgMS40MSA0LjAyIDQuMDV6TTE1LjQxIDEzLjk0IDE0IDE1LjM1bDMuOTkgNC4wMS4zNS4zNSAxLjQyLTEuNDEtMy45OS00LjAxek04LjU5IDEzLjk1bC00LjAzIDQuMDEtLjMyLjMzIDEuNDEgMS40MSA0LjAzLTQuMDIuMzMtLjMyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTBWOGgtNFY0aC0ydjRoLTRWNEg4djRINHYyaDR2NEg0djJoNHY0aDJ2LTRoNHY0aDJ2LTRoNHYtMmgtNHYtNGg0em0tNiA0aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRGb3JtYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTd2MmgxNHYtMkg1em00LjUtNC4yaDVsLjkgMi4yaDIuMUwxMi43NSA0aC0xLjVMNi41IDE1aDIuMWwuOS0yLjJ6TTEyIDUuOTggMTMuODcgMTFoLTMuNzRMMTIgNS45OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVuYXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNTQgNS4yMy0xLjM5LTEuNjhDMTguODggMy4yMSAxOC40NyAzIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTYuNTVMMy40NiA1LjIzQzMuMTcgNS41NyAzIDYuMDIgMyA2LjVWMTljMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDgtLjE3LS45My0uNDYtMS4yN3pNNi4yNCA1aDExLjUybC44MyAxSDUuNDJsLjgyLTF6TTUgMTlWOGgxNHYxMUg1em0zLTVoMi41NXYzaDIuOXYtM0gxNmwtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW5kbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVcGNvbWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYgMTAuODEgMTYuMTkgOS40bDMuNTYtMy41NSAxLjQxIDEuNDFjLS4xMS4wMy0zLjU2IDMuNTUtMy41NiAzLjU1ek0xMyAzaC0ydjVoMlYzem0tNi42IDcuODFMNy44MSA5LjQgNC4yNiA1Ljg0IDIuODQgNy4yNmMuMTEuMDMgMy41NiAzLjU1IDMuNTYgMy41NXpNMjAgMTRoLTMuNDJjLS43NyAxLjc2LTIuNTQgMy00LjU4IDNzLTMuODEtMS4yNC00LjU4LTNINHY1aDE2di01bTAtMmMxLjEgMCAyIC45IDIgMnY1YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0ydi01YzAtMS4xLjktMiAyLTJoNWMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXZlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTYuOTljLTEuMzUgMC0yLjIuNDItMi45NS44LS42NS4zMy0xLjE4LjYtMi4wNS42LS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzgtMS41Ny0uOC0yLjk1LS44cy0yLjIuNDItMi45NS44Yy0uNjUuMzMtMS4xNy42LTIuMDUuNnYxLjk1YzEuMzUgMCAyLjItLjQyIDIuOTUtLjguNjUtLjMzIDEuMTctLjYgMi4wNS0uNnMxLjQuMjUgMi4wNS42Yy43NS4zOCAxLjU3LjggMi45NS44czIuMi0uNDIgMi45NS0uOGMuNjUtLjMzIDEuMTgtLjYgMi4wNS0uNi45IDAgMS40LjI1IDIuMDUuNi43NS4zOCAxLjU4LjggMi45NS44di0xLjk1Yy0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNi0uOC0yLjk1LS44em0wLTQuNDVjLTEuMzUgMC0yLjIuNDMtMi45NS44LS42NS4zMi0xLjE4LjYtMi4wNS42LS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzgtMS41Ny0uOC0yLjk1LS44cy0yLjIuNDMtMi45NS44Yy0uNjUuMzItMS4xNy42LTIuMDUuNnYxLjk1YzEuMzUgMCAyLjItLjQzIDIuOTUtLjguNjUtLjM1IDEuMTUtLjYgMi4wNS0uNnMxLjQuMjUgMi4wNS42Yy43NS4zOCAxLjU3LjggMi45NS44czIuMi0uNDMgMi45NS0uOGMuNjUtLjM1IDEuMTUtLjYgMi4wNS0uNnMxLjQuMjUgMi4wNS42Yy43NS4zOCAxLjU4LjggMi45NS44di0xLjk1Yy0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNi0uOC0yLjk1LS44em0yLjk1LTguMDhjLS43NS0uMzgtMS41OC0uOC0yLjk1LS44cy0yLjIuNDItMi45NS44Yy0uNjUuMzItMS4xOC42LTIuMDUuNi0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM3LTEuNTctLjgtMi45NS0uOHMtMi4yLjQyLTIuOTUuOGMtLjY1LjMzLTEuMTcuNi0yLjA1LjZ2MS45M2MxLjM1IDAgMi4yLS40MyAyLjk1LS44LjY1LS4zMyAxLjE3LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQzIDIuOTUtLjhjLjY1LS4zMiAxLjE4LS42IDIuMDUtLjYuOSAwIDEuNC4yNSAyLjA1LjYuNzUuMzggMS41OC44IDIuOTUuOFY1LjA0Yy0uOSAwLTEuNC0uMjUtMi4wNS0uNTh6TTE3IDguMDljLTEuMzUgMC0yLjIuNDMtMi45NS44LS42NS4zNS0xLjE1LjYtMi4wNS42cy0xLjQtLjI1LTIuMDUtLjZjLS43NS0uMzgtMS41Ny0uOC0yLjk1LS44cy0yLjIuNDMtMi45NS44Yy0uNjUuMzUtMS4xNS42LTIuMDUuNnYxLjk1YzEuMzUgMCAyLjItLjQzIDIuOTUtLjguNjUtLjMyIDEuMTgtLjYgMi4wNS0uNnMxLjQuMjUgMi4wNS42Yy43NS4zOCAxLjU3LjggMi45NS44czIuMi0uNDMgMi45NS0uOGMuNjUtLjMyIDEuMTgtLjYgMi4wNS0uNi45IDAgMS40LjI1IDIuMDUuNi43NS4zOCAxLjU4LjggMi45NS44VjkuNDljLS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzgtMS42LS44LTIuOTUtLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXZWJTdG9yaWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNHYxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek0xMyAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoOWMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDRWNGg5djE2ek0yMSA2djEyYy44MyAwIDEuNS0uNjcgMS41LTEuNXYtOWMwLS44My0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXZWVrZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA5VjdjMC0xLjY1LTEuMzUtMy0zLTNINkM0LjM1IDQgMyA1LjM1IDMgN3YyYy0xLjY1IDAtMyAxLjM1LTMgM3Y1YzAgMS42NSAxLjM1IDMgMyAzaDE4YzEuNjUgMCAzLTEuMzUgMy0zdi01YzAtMS42NS0xLjM1LTMtMy0zek01IDdjMC0uNTUuNDUtMSAxLTFoMTJjLjU1IDAgMSAuNDUgMSAxdjIuNzhjLS42MS41NS0xIDEuMzQtMSAyLjIydjJINnYtMmMwLS44OC0uMzktMS42Ny0xLTIuMjJWN3ptMTcgMTBjMCAuNTUtLjQ1IDEtMSAxSDNjLS41NSAwLTEtLjQ1LTEtMXYtNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NGgxNnYtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdoZXJlVG9Wb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxQzcuNTkgMSA0IDQuNTkgNCA5YzAgNS41NyA2Ljk2IDEzLjM0IDcuMjYgMTMuNjdsLjc0LjgyLjc0LS44MkMxMy4wNCAyMi4zNCAyMCAxNC41NyAyMCA5YzAtNC40MS0zLjU5LTgtOC04em0wIDE5LjQ3QzkuODIgMTcuODYgNiAxMi41NCA2IDljMC0zLjMxIDIuNjktNiA2LTZzNiAyLjY5IDYgNmMwIDMuODMtNC4yNSA5LjM2LTYgMTEuNDd6bS0xLjUzLTkuM0w4LjcxIDkuNGwtMS40MiAxLjQyTDEwLjQ3IDE0bDYuMDEtNi4wMS0xLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxeE1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgN2g0djEwSDZWOUg0Vjd6bTExLjgzIDQuNzJMMTguNjYgN2gtMi4zM2wtMS42NiAyLjc3TDEzIDdoLTIuMzNsMi44MyA0LjcyTDEwLjMzIDE3aDIuMzNsMi0zLjM0IDIgMy4zNEgxOWwtMy4xNy01LjI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMzBGcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNXYzaDZ2Mi41SDN2M2g1VjE2SDJ2M2g2YzEuNjYgMCAzLTEuMzQgMy0zdi0xLjlBMi4xIDIuMSAwIDAgMCA4LjkgMTIgMi4xIDIuMSAwIDAgMCAxMSA5LjlWOGMwLTEuNjYtMS4zNC0zLTMtM0gyem0xNyAzdjhoLTRWOGg0bTAtM2gtNGMtMS42NiAwLTMgMS4zNC0zIDN2OGMwIDEuNjYgMS4zNCAzIDMgM2g0YzEuNjYgMCAzLTEuMzQgMy0zVjhjMC0xLjY2LTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzZ01vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgN3YyaDV2Mkg0djJoNHYySDN2Mmg1YzEuMSAwIDItLjkgMi0ydi0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjljMC0xLjEtLjktMi0yLTJIM3ptMTggNHY0YzAgMS4xLS45IDItMiAyaC01Yy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNWMxLjEgMCAyIC45IDIgMmgtN3Y2aDV2LTJoLTIuNXYtMkgyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTRnTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA3SDd2NUg1VjdIM3Y3aDR2M2gydi0zaDJ2LTJIOVY3em04IDR2MmgydjJoLTVWOWg3YzAtMS4xLS45LTItMi0yaC01Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTRnUGx1c01vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDExdjJoMnYyaC00VjloNmMwLTEuMS0uOS0yLTItMmgtNGMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDRjMS4xIDAgMi0uOSAyLTJ2LTRoLTR6bTExIDBoLTJWOWgtMnYyaC0ydjJoMnYyaDJ2LTJoMnYtMnpNNyA3SDV2NUgzVjdIMXY3aDR2M2gydi0zaDF2LTJIN1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNjBGcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDh2OGgtNFY4aDRtMC0zaC00Yy0xLjY2IDAtMyAxLjM0LTMgM3Y4YzAgMS42NiAxLjM0IDMgMyAzaDRjMS42NiAwIDMtMS4zNCAzLTNWOGMwLTEuNjYtMS4zNC0zLTMtM3ptLTkgM1Y1SDVDMy4zNCA1IDIgNi4zNCAyIDh2OGMwIDEuNjYgMS4zNCAzIDMgM2gzYzEuNjYgMCAzLTEuMzQgMy0zdi0zYzAtMS42Ni0xLjM0LTMtMy0zSDVWOGg1em0tMiA1djNINXYtM2gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzQWxhcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDUuNzItNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOSA2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3Vjh6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMTh6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzQWxhcm1zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA1LjctNC42LTMuOS0xLjMgMS41IDQuNiAzLjlMMjIgNS43ek03LjkgMy40IDYuNiAxLjkgMiA1LjdsMS4zIDEuNSA0LjYtMy44ek0xMi41IDhIMTF2Nmw0LjcgMi45LjgtMS4yLTQtMi40Vjh6TTEyIDRjLTUgMC05IDQtOSA5czQgOSA5IDkgOS00IDktOS00LTktOS05em0wIDE2Yy0zLjkgMC03LTMuMS03LTdzMy4xLTcgNy03IDcgMy4xIDcgNy0zLjEgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2Nlc3NUaW1lRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem0zLjMgMTQuNzFMMTEgMTIuNDFWN2gydjQuNTlsMy43MSAzLjcxLTEuNDIgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY2Vzc1RpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptLjUtMTNIMTF2Nmw1LjI1IDMuMTUuNzUtMS4yMy00LjUtMi42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkVW5pdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNyA0VjNoMTB2MUg3em0wIDE0VjZoMTB2MTJIN3ptMCAzdi0xaDEwdjFIN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN0g4djJoOFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQWxhcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODggMy4zOSA2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMTh6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0xLTExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFRvSG9tZVNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMS4wMSA4IDFjLTEuMSAwLTIgLjktMiAydjNoMlY1aDEwdjE0SDh2LTFINnYzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTAgMTVoMlY4SDV2MmgzLjU5TDMgMTUuNTkgNC40MSAxNyAxMCAxMS40MVYxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAxN2MwIDEuNjUtMS4zNSAzLTMgM3MtMy0xLjM1LTMtM2gyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMS0uNDUtMS0xLTFIMnYtMmg5LjVjMS42NSAwIDMgMS4zNSAzIDN6TTE5IDYuNUMxOSA0LjU3IDE3LjQzIDMgMTUuNSAzUzEyIDQuNTcgMTIgNi41aDJjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTMTYuMzMgOCAxNS41IDhIMnYyaDEzLjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjV6bS0uNSA0LjVIMnYyaDE2LjVjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNXYyYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzIwLjQzIDExIDE4LjUgMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJwbGFuZVRpY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTkgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS44MS0yLTEuODEtMnpNMjAgMThINHYtMi41NGMxLjE5LS42OSAyLTEuOTkgMi0zLjQ2IDAtMS40OC0uOC0yLjc3LTEuOTktMy40Nkw0IDZoMTZ2MTJ6TTguODcgMTUuNjZsLTEuNjYtMi44OC45My0uMjUgMS4yNi45OSAyLjM5LS42NC0yLjQtNC4xNiAxLjQtLjM4IDQuMDEgMy43NCAyLjQ0LS42NWEuOTY3Ljk2NyAwIDAgMSAxLjE4LjY4Ljk4OC45ODggMCAwIDEtLjY5IDEuMTlsLTguODYgMi4zNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcnBsYW5lbW9kZUFjdGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTZ2LTJsLTguNS01VjMuNWMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41VjlMMiAxNHYybDguNS0yLjVWMTlMOCAyMC41VjIybDQtMSA0IDF2LTEuNUwxMy41IDE5di01LjVMMjIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJwbGFuZW1vZGVJbmFjdGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSA3LjY3VjMuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVY5bDguNSA1djJsLTQuNDktMS4zMi03LjAxLTcuMDF6bTkuMjggMTQuOTQgMS40MS0xLjQxLTcuNjktNy43LTMuOTQtMy45NC02Ljc1LTYuNzUtMS40MiAxLjQxIDYuMzggNi4zOEwyIDE0djJsOC41LTIuNVYxOUw4IDIwLjVWMjJsNC0xIDQgMXYtMS41TDEzLjUgMTl2LTIuNjdsNi4yOCA2LjI4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW9kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAyMUg3di0xaDEwdjF6bTAtM0g3VjZoMTB2MTJ6bTAtMTRIN1YzaDEwdjF6bS05IDZoOHYxLjVIOFYxMHptMSAzaDZ2MS41SDlWMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5MEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXYxNGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5MUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXYxMmg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5MkJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXYxMGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5M0JhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXY4aDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnk0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djZoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTVCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2NGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5NkJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXYyaDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnlBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6TTEzIDE4aC0ydi0yaDJ2MnptMC00aC0yVjloMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeUNoYXJnaW5nRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6TTExIDIwdi01LjVIOUwxMyA3djUuNWgyTDExIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeUZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjE1LjMzQzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeVNhdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0aC0yVjJoLTR2Mkg4Yy0uNTUgMC0xIC40NS0xIDF2MTZjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTFWNWMwLS41NS0uNDUtMS0xLTF6bS0xIDEwaC0ydjJoLTJ2LTJIOXYtMmgydi0yaDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5U3RkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnlVbmtub3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpNMTMgMThoLTJ2LTJoMnYyem0xLjMtNS4zMXMtLjM4LjQyLS42Ny43MWMtLjQ4LjQ4LS44MyAxLjE1LS44MyAxLjZoLTEuNmMwLS44My40Ni0xLjUyLjkzLTJsLjkzLS45NEExLjQ5OCAxLjQ5OCAwIDAgMCAxMiA5LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41SDljMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2MwIC42Ni0uMjcgMS4yNi0uNyAxLjY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmxvb2R0eXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2aDZ2Mkg5ek0xMyA5aC0ydjJIOXYyaDJ2Mmgydi0yaDJ2LTJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTUuMzMgNC41NS04IDguNDgtOCAxMS44IDAgNC45OCAzLjggOC4yIDggOC4yczgtMy4yMiA4LTguMmMwLTMuMzItMi42Ny03LjI1LTgtMTEuOHptMCAxOGMtMy4zNSAwLTYtMi41Ny02LTYuMiAwLTIuMzQgMS45NS01LjQ0IDYtOS4xNCA0LjA1IDMuNyA2IDYuNzkgNiA5LjE0IDAgMy42My0yLjY1IDYuMi02IDYuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aENvbm5lY3RlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyAxMi0yLTItMiAyIDIgMiAyLTJ6bTEwLjcxLTQuMjlMMTIgMmgtMXY3LjU5TDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDExIDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyA1LjgzbDEuODggMS44OEwxMyA5LjU5VjUuODN6bTEuODggMTAuNDZMMTMgMTguMTd2LTMuNzZsMS44OCAxLjg4ek0xOSAxMGwtMiAyIDIgMiAyLTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmx1ZXRvb3RoRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzIDUuODMgMS44OCAxLjg4LTEuNiAxLjYgMS40MSAxLjQxIDMuMDItMy4wMkwxMiAyaC0xdjUuMDNsMiAydi0zLjJ6TTUuNDEgNCA0IDUuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDExIDE0LjQxVjIyaDFsNC4yOS00LjI5IDIuMyAyLjI5TDIwIDE4LjU5IDUuNDEgNHpNMTMgMTguMTd2LTMuNzZsMS44OCAxLjg4TDEzIDE4LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmx1ZXRvb3RoRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNi41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxN0g0di01aDExdi0ySDQuODFsMS4wNC0zSDE1VjVINS41Yy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwyIDEydjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGgtMnY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzLjg1IDE5LjE1IDFoLS41djMuNzlsLTIuMy0yLjI5LS43LjdMMTguNDQgNmwtMi43OSAyLjc5LjcuNzEgMi4zLTIuM1YxMWguNUwyMiA4LjE0IDE5Ljg1IDYgMjIgMy44NXptLTIuMzUtLjk0Ljk0Ljk0LS45NC45NFYyLjkxem0uOTQgNS4yMy0uOTQuOTRWNy4ybC45NC45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aFNlYXJjaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMjQgMTIuMDEgMi4zMiAyLjMyYy4yOC0uNzIuNDQtMS41MS40NC0yLjMzcy0uMTYtMS41OS0uNDMtMi4zMWwtMi4zMyAyLjMyem01LjI5LTUuMy0xLjI2IDEuMjZjLjYzIDEuMjEuOTggMi41Ny45OCA0LjAycy0uMzYgMi44Mi0uOTggNC4wMmwxLjIgMS4yYTkuOTM2IDkuOTM2IDAgMCAwIDEuNTQtNS4zMWMtLjAxLTEuODktLjU1LTMuNjctMS40OC01LjE5em0tMy44MiAxTDEwIDJIOXY3LjU5TDQuNDEgNSAzIDYuNDEgOC41OSAxMiAzIDE3LjU5IDQuNDEgMTkgOSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTEgNS44M2wxLjg4IDEuODhMMTEgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDExIDE4LjE3di0zLjc2bDEuODggMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNzEgNy43MSAxMiAyaC0xdjcuNTlMNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTEgMTQuNDFWMjJoMWw1LjcxLTUuNzEtNC4zLTQuMjkgNC4zLTQuMjl6TTEzIDUuODNsMS44OCAxLjg4TDEzIDkuNTlWNS44M3ptMS44OCAxMC40NkwxMyAxOC4xN3YtMy43NmwxLjg4IDEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcmlnaHRuZXNzQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEgNy0zLjIgOWgxLjlsLjctMmgzLjJsLjcgMmgxLjlMMTMgN2gtMnptLS4xNSA1LjY1TDEyIDlsMS4xNSAzLjY1aC0yLjN6TTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3NIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6TTEyIDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02em0wIDEwYy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3NMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIgNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTAgMTBjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzc01lZGl1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjlMMjMuMzEgMTIgMjAgOC42OXptLTIgNS43OVYxOGgtMy41MkwxMiAyMC40OCA5LjUyIDE4SDZ2LTMuNTJMMy41MiAxMiA2IDkuNTJWNmgzLjUyTDEyIDMuNTIgMTQuNDggNkgxOHYzLjUyTDIwLjQ4IDEyIDE4IDE0LjQ4ek0xMiA2djEyYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVWNGMwLS41NS0uNDUtMS0xLTFoLTJjLS41NSAwLTEgLjQ1LTEgMXYxaC0xdjRjMCAuNTUuNDUgMSAxIDFoMXY3YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY3YzAtMi4yMS0xLjc5LTQtNC00UzUgNC43OSA1IDd2N0g0Yy0uNTUgMC0xIC40NS0xIDF2NGgxdjFjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTFoMXYtNGMwLS41NS0uNDUtMS0xLTFIN1Y3YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2MTBjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtN2gxYy41NSAwIDEtLjQ1IDEtMVY1aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtZXJhc3dpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3aC0xbC0xLTFoLTRMOSA3SDhjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bTAgOEg4VjloMS44M2wxLTFoMi4zNGwxIDFIMTZ2NnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNTcuNTIgMTMuMDUgNWwxLjQxLTEuNDEtMS41NC0xLjU0QzE3LjcgMi40NiAyMS41MyA2LjI0IDIyIDExaDJDMjMuMzYgMy4zIDE1Ljc5LTEuNjcgOC41Ny41MnpNOS41NCAyMC40MWwxLjU0IDEuNTRDNi4zIDIxLjU0IDIuNDcgMTcuNzYgMiAxM0gwYy42NCA3LjcgOC4yMSAxMi42NyAxNS40MyAxMC40OEwxMC45NSAxOWwtMS40MSAxLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JlZGl0U2NvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDV2LTJINHYtNmgxOFY2YzAtMS4xMS0uODktMi0yLTJ6bTAgNEg0VjZoMTZ2MnptLTUuMDcgMTEuMTctMi44My0yLjgzLTEuNDEgMS40MUwxNC45MyAyMiAyMiAxNC45M2wtMS40MS0xLjQxLTUuNjYgNS42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhcmtNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4zNyA1LjUxQTcuMzUgNy4zNSAwIDAgMCA5LjEgNy41YzAgNC4wOCAzLjMyIDcuNCA3LjQgNy40LjY4IDAgMS4zNS0uMDkgMS45OS0uMjdBNy4wMTQgNy4wMTQgMCAwIDEgMTIgMTljLTMuODYgMC03LTMuMTQtNy03IDAtMi45MyAxLjgxLTUuNDUgNC4zNy02LjQ5ek0xMiAzYTkgOSAwIDEgMCA5IDljMC0uNDYtLjA0LS45Mi0uMS0xLjM2YTUuMzg5IDUuMzg5IDAgMCAxLTQuNCAyLjI2IDUuNDAzIDUuNDAzIDAgMCAxLTMuMTQtOS44Yy0uNDQtLjA2LS45LS4xLTEuMzYtLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhU2F2ZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIuMDV2My4wM2MzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAuOS0uMTggMS43NS0uNDggMi41NGwyLjYgMS41M2MuNTYtMS4yNC44OC0yLjYyLjg4LTQuMDcgMC01LjE4LTMuOTUtOS40NS05LTkuOTV6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctNyAwLTMuNTMgMi42MS02LjQzIDYtNi45MlYyLjA1Yy01LjA2LjUtOSA0Ljc2LTkgOS45NSAwIDUuNTIgNC40NyAxMCA5Ljk5IDEwIDMuMzEgMCA2LjI0LTEuNjEgOC4wNi00LjA5bC0yLjYtMS41M0E2Ljk1IDYuOTUgMCAwIDEgMTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhU2F2ZXJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOHYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zVjhoLTJ6bTItNS45NXYzLjAzYzMuMzkuNDkgNiAzLjM5IDYgNi45MiAwIC45LS4xOCAxLjc1LS40OCAyLjU0bDIuNiAxLjUzYy41Ni0xLjI0Ljg4LTIuNjIuODgtNC4wNyAwLTUuMTgtMy45NS05LjQ1LTktOS45NXpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03IDAtMy41MyAyLjYxLTYuNDMgNi02LjkyVjIuMDVjLTUuMDYuNS05IDQuNzYtOSA5Ljk1IDAgNS41MiA0LjQ3IDEwIDkuOTkgMTAgMy4zMSAwIDYuMjQtMS42MSA4LjA2LTQuMDlsLTIuNi0xLjUzQTYuOTUgNi45NSAwIDAgMSAxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhdGFVc2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMi4wNXYzLjAzYzMuMzkuNDkgNiAzLjM5IDYgNi45MiAwIC45LS4xOCAxLjc1LS40OCAyLjU0bDIuNiAxLjUzYy41Ni0xLjI0Ljg4LTIuNjIuODgtNC4wNyAwLTUuMTgtMy45NS05LjQ1LTktOS45NXpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03IDAtMy41MyAyLjYxLTYuNDMgNi02LjkyVjIuMDVjLTUuMDYuNS05IDQuNzYtOSA5Ljk1IDAgNS41MiA0LjQ3IDEwIDkuOTkgMTAgMy4zMSAwIDYuMjQtMS42MSA4LjA2LTQuMDlsLTIuNi0xLjUzQTYuOTUgNi45NSAwIDAgMSAxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhdGFzZXRMaW5rZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE3aDEuMDljLjI4LTEuNjcgMS4yNC0zLjEgMi42LTRIN3Y0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE5VjVoMTR2N2gxYy4zNCAwIC42Ny4wNCAxIC4wOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMy44MWMtLjM1LS42MS0uNi0xLjI4LS43Mi0ySDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgN2g0djRIN3pNMTMgN2g0djRoLTR6TTE2IDIwaC0yYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMmgydi0yaC0yYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0aDJ2LTJ6TTIwIDE0aC0ydjJoMmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJoLTJ2MmgyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOXYtMmgtNnYyaDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxM2g0djRIN3pNMTMgMTNoNHY0aC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgN2g0djRIN3pNMTMgN2g0djRoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXZlbG9wZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDVoMTB2MmgyVjNjMC0xLjEtLjktMS45OS0yLTEuOTlMNyAxYy0xLjEgMC0yIC45LTIgMnY0aDJWNXptOC40MSAxMS41OUwyMCAxMmwtNC41OS00LjU5TDE0IDguODMgMTcuMTcgMTIgMTQgMTUuMTdsMS40MSAxLjQyek0xMCAxNS4xNyA2LjgzIDEyIDEwIDguODMgOC41OSA3LjQxIDQgMTJsNC41OSA0LjU5TDEwIDE1LjE3ek0xNyAxOUg3di0ySDV2NGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi00aC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXZpY2VUaGVybW9zdGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxM1Y1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2OGMtMS4yMS45MS0yIDIuMzctMiA0IDAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVjMC0xLjYzLS43OS0zLjA5LTItNHptLTQtMlY1YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxaC0xdjFoMXYyaC0xdjFoMXYxaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2aWNlc0ZvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzaC0zYzAtMS40NC0xLjQ3LTIuNC0yLjc5LTEuODRsLTMgMS4yOUMxMC40OCAyLjc2IDEwIDMuNDkgMTAgNC4yOVYxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTUgMTMuNjgtMyAxLjI5VjQuMjlMMTUgM3YxMy42OHpNMjAgMTloLTUuMzNsMS4xMi0uNDhjLjczLS4zMiAxLjIxLTEuMDQgMS4yMS0xLjg0VjVoM3YxNHpNMiAzaDJ2Mkgyek0yIDE5aDJ2Mkgyek0yIDE1aDJ2Mkgyek0yIDExaDJ2Mkgyek0yIDdoMnYySDJ6TTYgM2gydjJINnpNNiAxOWgydjJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURldmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxOFY0SDRjLTEuMSAwLTIgLjktMiAydjExSDB2M2gxNHYtM0g0VjZ6bTE5IDJoLTZjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXptLTEgOWgtNHYtN2g0djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXNjb3VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjc5IDIxIDMgMTEuMjF2MmMwIC41My4yMSAxLjA0LjU5IDEuNDFsNy43OSA3Ljc5Yy43OC43OCAyLjA1Ljc4IDIuODMgMGw2LjIxLTYuMjFjLjc4LS43OC43OC0yLjA1IDAtMi44M0wxMi43OSAyMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMzggMTcuNDFjLjM5LjM5LjkuNTkgMS40MS41OS41MSAwIDEuMDItLjIgMS40MS0uNTlsNi4yMS02LjIxYy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTIuNjIuNThDMTIuMjUuMjEgMTEuNzQgMCAxMS4yMSAwSDVDMy45IDAgMyAuOSAzIDJ2Ni4yMWMwIC41My4yMSAxLjA0LjU5IDEuNDFsNy43OSA3Ljc5ek01IDJoNi4yMUwxOSA5Ljc5IDEyLjc5IDE2IDUgOC4yMVYyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuMjVcIixcImN5XCI6XCI0LjI1XCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdERpc3R1cmJPblRvdGFsU2lsZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTMuMyAwLTYgMi43LTYgNnMyLjcgNiA2IDYgNi0yLjcgNi02LTIuNi02LTYtNnptMyA3SDl2LTJoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHZyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNXYyaDh2LTJoNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNWgxOHYxMnptLTItOUg4djJoMTFWOHptMCA0SDh2MmgxMXYtMnpNNyA4SDV2MmgyVjh6bTAgNEg1djJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA5VjdIOHYxMGg4di0yaC02di0yaDZ2LTJoLTZWOWg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRnZXNlbnNvckhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgN2gydjdIM1Y3em0tMyAzaDJ2N0gwdi03em0yMi0zaDJ2N2gtMlY3em0tMyAzaDJ2N2gtMnYtN3ptLTMtNy45OUw4IDJjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNiAyMEg4di0xaDh2MXptMC0zSDhWN2g4djEwek04IDVWNGg4djFIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkZ2VzZW5zb3JMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgN2gydjdIMlY3em0xOCAzaDJ2N2gtMnYtN3ptLTQtNy45OUw4IDJjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNiAyMEg4di0xaDh2MXptMC0zSDhWN2g4djEwek04IDVWNGg4djFIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsYXNobGlnaHRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjIgOCAxMC44M1YyMmg4di0zLjE3bDMuNzggMy43OCAxLjQxLTEuNDFMMi44MSAyLjgxek0xNCAyMGgtNHYtNy4xN2w0IDRWMjB6TTE2IDR2MUg3LjgzbDIgMkgxNnYuMzlsLTIgMy4wMXYuNzdsMiAyVjExbDItM1YySDZ2MS4xN2wuODMuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFzaGxpZ2h0T24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJINnY2bDIgM3YxMWg4VjExbDItM1Yyem0tMiAydjFIOFY0aDh6bS0yIDYuNFYyMGgtNHYtOS42MWwtMi0zVjdoOHYuMzlsLTIgMy4wMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsb3VyZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1aDE0VjlINXY2em0yLTRoMTB2Mkg3di0yek0xMSAyaDJ2M2gtMnpNMTcuMjg2IDYuMzk5bDEuNzktMS44MDMgMS40MiAxLjQxLTEuNzkgMS44MDJ6TTExIDE5aDJ2M2gtMnpNMTcuMjkgMTcuNzFsMS43OSAxLjggMS40Mi0xLjQyLTEuOC0xLjc5ek0zLjQ5NSA2LjAxbDEuNDA3LTEuNDA4TDYuNjkgNi4zOTEgNS4yODQgNy43OTh6TTMuNDkyIDE4LjA3NmwxLjgwMy0xLjc5IDEuNDA5IDEuNDItMS44MDMgMS43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsdW9yZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1aDE0VjlINXY2em0yLTRoMTB2Mkg3di0yek0xMSAyaDJ2M2gtMnpNMTcuMjg2IDYuMzk5bDEuNzktMS44MDMgMS40MiAxLjQxLTEuNzkgMS44MDJ6TTExIDE5aDJ2M2gtMnpNMTcuMjkgMTcuNzFsMS43OSAxLjggMS40Mi0xLjQyLTEuOC0xLjc5ek0zLjQ5NSA2LjAxbDEuNDA3LTEuNDA4TDYuNjkgNi4zOTEgNS4yODQgNy43OTh6TTMuNDkyIDE4LjA3NmwxLjgwMy0xLjc5IDEuNDA5IDEuNDItMS44MDMgMS43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZtZEJhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC4yIDAtOCAzLjIyLTggOC4yIDAgMy4zMiAyLjY3IDcuMjUgOCAxMS44IDUuMzMtNC41NSA4LTguNDggOC0xMS44QzIwIDUuMjIgMTYuMiAyIDEyIDJ6bTAgMTcuMzNjLTQuMDUtMy43LTYtNi43OS02LTkuMTRDNiA2LjU3IDguNjUgNCAxMiA0czYgMi41NyA2IDYuMmMwIDIuMzQtMS45NSA1LjQ0LTYgOS4xM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNmgydjVoLTJ6TTExIDEzaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZtZEdvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEyYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptNi0xLjhDMTggNi41NyAxNS4zNSA0IDEyIDRzLTYgMi41Ny02IDYuMmMwIDIuMzQgMS45NSA1LjQ0IDYgOS4xNCA0LjA1LTMuNyA2LTYuOCA2LTkuMTR6TTEyIDJjNC4yIDAgOCAzLjIyIDggOC4yIDAgMy4zMi0yLjY3IDcuMjUtOCAxMS44LTUuMzMtNC41NS04LTguNDgtOC0xMS44QzQgNS4yMiA3LjggMiAxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR01vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExdjJoMnYySDlWOWg3YzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg1YzEuMSAwIDItLjkgMi0ydi00aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3BwQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M3YtNC43bDYtMi4yNSA2IDIuMjV2NC43ek05LjkxIDguNSA4LjUgOS45MSAxMC41OSAxMiA4LjUgMTQuMDlsMS40MSAxLjQxTDEyIDEzLjQybDIuMDkgMi4wOCAxLjQxLTEuNDFMMTMuNDIgMTJsMi4wOC0yLjA5LTEuNDEtMS40MUwxMiAxMC41OSA5LjkxIDguNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdwcEdvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6bTYgOS4wOWMwIDQtMi41NSA3LjctNiA4LjgzLTMuNDUtMS4xMy02LTQuODItNi04LjgzVjYuMzFsNi0yLjEyIDYgMi4xMnY0Ljc4em0tOS4xOC0uNUw3LjQgMTJsMy41NCAzLjU0IDUuNjYtNS42Ni0xLjQxLTEuNDEtNC4yNCA0LjI0LTIuMTMtMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdwcE1heWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M3YtNC43bDYtMi4yNSA2IDIuMjV2NC43elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNGgydjJoLTJ6TTExIDdoMnY1aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3BzRml4ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em04Ljk0IDNBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcHNOb3RGaXhlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTQgMTFBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcHNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDExQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2Yy0uOTguMTEtMS45MS4zOC0yLjc3Ljc4bDEuNTMgMS41M2E2Ljk5NSA2Ljk5NSAwIDAgMSA4Ljg3IDguODdsMS41MyAxLjUzYy40LS44Ni42Ny0xLjc5Ljc4LTIuNzdIMjN2LTJoLTIuMDZ6TTMgNC4yN2wyLjA0IDIuMDRBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2YzEuNzctLjIgMy4zOC0uOTEgNC42OS0xLjk4TDE5LjczIDIxbDEuNDEtMS40MUw0LjQxIDIuODYgMyA0LjI3em0xMy4yNyAxMy4yN2E2Ljk5NSA2Ljk5NSAwIDAgMS05LjgxLTkuODFsOS44MSA5LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JhcGhpY0VxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE4aDJWNkg3djEyem00IDRoMlYyaC0ydjIwem0tOC04aDJ2LTRIM3Y0em0xMiA0aDJWNmgtMnYxMnptNC04djRoMnYtNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyaWQzWDMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwVjhoLTRWNGgtMnY0aC00VjRIOHY0SDR2Mmg0djRINHYyaDR2NGgydi00aDR2NGgydi00aDR2LTJoLTR2LTRoNHptLTYgNGgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmlkNFg0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA3VjVoLTNWMmgtMnYzaC00VjJoLTJ2M0g3VjJINXYzSDJ2MmgzdjRIMnYyaDN2NEgydjJoM3YzaDJ2LTNoNHYzaDJ2LTNoNHYzaDJ2LTNoM3YtMmgtM3YtNGgzdi0yaC0zVjdoM3pNNyA3aDR2NEg3Vjd6bTAgMTB2LTRoNHY0SDd6bTEwIDBoLTR2LTRoNHY0em0wLTZoLTRWN2g0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmlkR29sZGVucmF0aW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExVjloLTdWMmgtMnY3aC0yVjJIOXY3SDJ2Mmg3djJIMnYyaDd2N2gydi03aDJ2N2gydi03aDd2LTJoLTd2LTJoN3ptLTkgMmgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVITW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTFIOVY3SDd2MTBoMnYtNGg2djRoMlY3aC0ydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIUGx1c01vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExSDZWN0g0djEwaDJ2LTRoNnY0aDJWN2gtMnY0em0xMCAwaC0yVjloLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZHJBdXRvU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNkg2LjV2NkgxMGMuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41SDh2LTNoMnYzek0zLjUgMThoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV6TTIyIDE4LjV2LTJoLTEuNXYyaC0yVjIwaDJ2MkgyMnYtMmgydi0xLjV6TTE2LjUgMTZIMTN2NmgxLjV2LTJoMS4xbC45IDJIMThsLS45LTIuMWMuNS0uMy45LS44LjktMS40di0xYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgMi41aC0ydi0xaDJ2MXpNMTEuOTcgNS4zbC0xLjAyIDIuODloMi4xTDEyLjAzIDUuM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjY5IDIgNiA0LjY5IDYgOHMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptMi4wNCA5LS42My0xLjc5aC0yLjgzTDkuOTYgMTFIOC43NGwyLjYzLTdoMS4yNWwyLjYzIDdoLTEuMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZHJBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLS45OS0xNEw2Ljg4IDE3aDEuOWwxLTIuODFoNC40NGwuOTkgMi44MWgxLjlMMTIuOTggNmgtMS45N3ptLS42NiA2LjU5IDEuNi00LjU1aC4wOWwxLjYgNC41NWgtMy4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhkck9mZlNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTguNXYtMWMwLS44LS43LTEuNS0xLjUtMS41SDEzdjZoMS41di0yaDEuMWwuOSAySDE4bC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHptLTEuNSAwaC0ydi0xaDJ2MXptLTEzLS41aC0ydi0ySDB2NmgxLjV2LTIuNWgyVjIySDV2LTZIMy41djJ6bTYuNS0ySDYuNXY2SDEwYy44IDAgMS41LS43IDEuNS0xLjV2LTNjMC0uOC0uNy0xLjUtMS41LTEuNXptMCA0LjVIOHYtM2gydjN6bTE0LS41aC0ydjJoLTEuNXYtMmgtMnYtMS41aDJ2LTJIMjJ2MmgyVjIwek0xMC45OCA0LjE1IDkuNDIgMi41OWM1LjEtMi40MiAxMC40MSAyLjg5IDcuOTkgNy45OWwtMS41Ni0xLjU2Yy44MS0yLjk2LTEuOTEtNS42OC00Ljg3LTQuODd6TTYuMzQgMi4zNCA0LjkzIDMuNzZsMS42NiAxLjY2Yy0yLjQyIDUuMSAyLjg5IDEwLjQxIDcuOTkgNy45OWwxLjY2IDEuNjYgMS40MS0xLjQxTDYuMzQgMi4zNHptMS44MSA0LjY0IDQuODcgNC44N2MtMi45Ni44MS01LjY4LTEuOTEtNC44Ny00Ljg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyT25TZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE4LjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxM3Y2aDEuNXYtMmgxLjFsLjkgMkgxOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMnYtMkgwdjZoMS41di0yLjVoMlYyMkg1di02SDMuNXYyem02LjUtMkg2LjV2NkgxMGMuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41SDh2LTNoMnYzem0xNC0uNWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHpNMTIgNGMyLjIxIDAgNCAxLjc5IDQgNHMtMS43OSA0LTQgNC00LTEuNzktNC00IDEuNzktNCA0LTRtMC0yQzguNjkgMiA2IDQuNjkgNiA4czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMjJoOHYtN2gtM3YtNGgtNVY5aDNWMkg4djdoM3YySDZ2NEgzdjdoOHYtN0g4di0yaDh2MmgtM3Y3ek0xMCA3VjRoNHYzaC00ek05IDE3djNINXYtM2g0em0xMCAwdjNoLTR2LTNoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxlbnNCbHVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLThjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptLTMgLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek02IDVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMTUgNS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTQgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTMuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bS0xMSAxMGMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTcgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtMTdjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNS41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptOCAuNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0zIDguNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTE0IDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptLTQtMTJjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wIDguNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem00LTQuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAtNGMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaWdodE1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA5YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM20wLTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01ek0yIDEzaDJjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFIMmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXptMTggMGgyYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xaC0yYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxek0xMSAydjJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xVjJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF6bTAgMTh2MmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTF2LTJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF6TTUuOTkgNC41OGEuOTk2Ljk5NiAwIDAgMC0xLjQxIDAgLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDEuMDYgMS4wNmMuMzkuMzkgMS4wMy4zOSAxLjQxIDBzLjM5LTEuMDMgMC0xLjQxTDUuOTkgNC41OHptMTIuMzcgMTIuMzdhLjk5Ni45OTYgMCAwIDAtMS40MSAwIC45OTYuOTk2IDAgMCAwIDAgMS40MWwxLjA2IDEuMDZjLjM5LjM5IDEuMDMuMzkgMS40MSAwYS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMS4wNi0xLjA2em0xLjA2LTEwLjk2YS45OTYuOTk2IDAgMCAwIDAtMS40MS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS4wNiAxLjA2Yy0uMzkuMzktLjM5IDEuMDMgMCAxLjQxczEuMDMuMzkgMS40MSAwbDEuMDYtMS4wNnpNNy4wNSAxOC4zNmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuMDYgMS4wNmMtLjM5LjM5LS4zOSAxLjAzIDAgMS40MXMxLjAzLjM5IDEuNDEgMGwxLjA2LTEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhdGlvbkRpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxM3YtMmgtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNmMtLjk4LjExLTEuOTEuMzgtMi43Ny43OGwxLjUzIDEuNTNhNi45OTUgNi45OTUgMCAwIDEgOC44NyA4Ljg3bDEuNTMgMS41M2MuNC0uODYuNjctMS43OS43OC0yLjc3SDIzek00LjQxIDIuODYgMyA0LjI3bDIuMDQgMi4wNEE4Ljk5NCA4Ljk5NCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZjMS43Ny0uMiAzLjM4LS45MSA0LjY5LTEuOThMMTkuNzMgMjFsMS40MS0xLjQxTDQuNDEgMi44NnpNMTIgMTlBNi45OTUgNi45OTUgMCAwIDEgNi40NiA3LjczbDkuODEgOS44MUE2Ljk3MiA2Ljk3MiAwIDAgMSAxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2F0aW9uU2VhcmNoaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45NCAxMUE4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMjAuOTQgMTNIMjN2LTJoLTIuMDZ6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUx0ZU1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTRoM3YySDRWOGgydjZ6bTMtNGgydjZoMnYtNmgyVjhIOXYyem0xMiAwVjhoLTV2OGg1di0yaC0zdi0xaDN2LTJoLTN2LTFoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUx0ZVBsdXNNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE0aDN2MkgxVjhoMnY2em0yLTRoMnY2aDJ2LTZoMlY4SDV2MnptNyA2aDV2LTJoLTN2LTFoM3YtMmgtM3YtMWgzVjhoLTV2OHptMTItNWgtMlY5aC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFjcm9PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjY2IDQuOTNjLjI0IDAgLjQ2LjA3LjY0LjJsLjgxLjU2Yy0uMjkuMjQtLjU0LjU0LS43Mi44N2wxLjY2IDEuNjZDMTEuMDMgOC4xNCAxMSA4LjA4IDExIDhjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxLS40NSAxLTEgMWMtLjA4IDAtLjE0LS4wMy0uMjItLjA0bDQuMDYgNC4wNmEzLjEzIDMuMTMgMCAwIDAgMi42My0zLjA5YzAtLjcxLS4yNS0xLjM5LS42Ny0xLjkzLjQzLS41NC42Ny0xLjIyLjY3LTEuOTNhMy4xNDUgMy4xNDUgMCAwIDAtMy41Ny0zLjExQzE0LjQ0IDEuODEgMTMuMzEgMSAxMiAxcy0yLjQ0LjgxLTIuOTEgMS45NmEzLjEzMiAzLjEzMiAwIDAgMC0yLjUyLjc4bDEuNDIgMS40MmMuMi0uMTMuNDItLjIzLjY3LS4yM3ptNi42OCA2LjE0Yy0uMjQgMC0uNDYtLjA3LS42NC0uMmwtLjgxLS41N2MuNTUtLjQ1Ljk0LTEuMDkgMS4wNi0xLjgzbC44OC40MmMuNC4xOS42Ni41OS42NiAxLjAzIDAgLjY0LS41MiAxLjE1LTEuMTUgMS4xNXptLS42NS01Ljk0Yy4yLS4xMy40Mi0uMi42NS0uMi42MyAwIDEuMTQuNTEgMS4xNCAxLjE0IDAgLjQ0LS4yNS44My0uNjYgMS4wM2wtLjg4LjQyYy0uMTItLjc0LS41MS0xLjM4LTEuMDctMS44M2wuODItLjU2ek0xMiAzYy42MiAwIDEuMTIuNDkgMS4xNCAxLjFsLS4xMSAxLjA5QzEyLjcxIDUuMDcgMTIuMzYgNSAxMiA1cy0uNy4wNy0xLjAyLjE5bC0uMTItMS4wOWMuMDItLjYxLjUyLTEuMSAxLjE0LTEuMXpNMTkuOTggMTcuMTVBOC45MDkgOC45MDkgMCAwIDAgMjEgMTNjLTEuNSAwLTIuOTEuMzctNC4xNSAxLjAybDMuMTMgMy4xM3pNMyAxM2E5IDkgMCAwIDAgOSA5IDkgOSAwIDAgMC05LTl6bTIuNDQgMi40NGMxLjkuNzEgMy40MiAyLjIyIDQuMTIgNC4xMmE3LjA0IDcuMDQgMCAwIDEtNC4xMi00LjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIybDQuNDIgNC40MmMtLjE5LjQtLjMuODQtLjMgMS4yOWEzLjE0NyAzLjE0NyAwIDAgMCAzLjU4IDMuMTFBMy4xNSAzLjE1IDAgMCAwIDEyIDE1Yy4wNSAwIC4xMS0uMDEuMTYtLjAxbDEuNjQgMS42NEE4Ljg1MyA4Ljg1MyAwIDAgMCAxMiAyMmMyLjAyIDAgMy44OC0uNjcgNS4zOC0xLjhsMi40IDIuNCAxLjQxLTEuNDFMMi44MSAyLjgxem0xMS42MyAxNi43NWMuMi0uNTQuNDctMS4wNC43OS0xLjVsLjcyLjcyYy0uNDcuMzEtLjk3LjU4LTEuNTEuNzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZWRpYUJsdWV0b290aE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2LjE3VjNoNnY0aC00djEuMTdsLTItMnpNMTkuNDIgMTUgMjIgMTcuNTdsLS44LjgtNi43OC02Ljc4LjgtLjggMi43NSAyLjc1VjloLjZMMjIgMTIuNDMgMTkuNDIgMTV6bS0uMjUtMS40NSAxLjEzLTEuMTMtMS4xMy0xLjEzdjIuMjZ6bTIuMDIgNy42NC0xLjQxIDEuNDEtMy45OC0zLjk4LS41OC41OC0uODUtLjg1LjU4LS41OEwxMSAxMy44M1YxN2MwIDIuMjEtMS43OCA0LTMuOTkgNFMzIDE5LjIxIDMgMTdzMS43OS00IDQuMDEtNGMuNzMgMCAxLjQxLjIxIDIgLjU1di0xLjcyTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOSAxOC4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lZGlhQmx1ZXRvb3RoT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkgMyAuMDEgMTAuNTVjLS42LS4zNC0xLjI4LS41NS0yLS41NWE0LjAwMSA0LjAwMSAwIDEgMCAwIDhDOS4yMyAyMSAxMSAxOS4yMSAxMSAxN1Y3aDRWM0g5em0xMiA5LjQzTDE3LjU3IDloLS42djQuNTVsLTIuNzUtMi43NS0uODUuODVMMTYuNzMgMTVsLTMuMzUgMy4zNS44NS44NSAyLjc1LTIuNzVWMjFoLjZMMjEgMTcuNTcgMTguNDIgMTUgMjEgMTIuNDN6bS0yLjgzLTEuMTMgMS4xMyAxLjEzLTEuMTMgMS4xM1YxMS4zem0xLjEzIDYuMjctMS4xMyAxLjEzdi0yLjI2bDEuMTMgMS4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lZGljYXRpb25MaXF1aWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDNoMTJ2Mkgzek0yIDIxaDE0VjZIMnYxNXptMy05aDIuNVY5LjVoM1YxMkgxM3YzaC0yLjV2Mi41aC0zVjE1SDV2LTN6TTIwIDZjLTEuNjggMC0zIDEuNzYtMyA0IDAgMS43Ny44MyAzLjIyIDIgMy43NlYyMWgydi03LjI0YzEuMTctLjU0IDItMS45OSAyLTMuNzYgMC0yLjI0LTEuMzItNC0zLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZWRpY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41IDE1SDh2LTNoMi41VjkuNWgzVjEySDE2djNoLTIuNXYyLjVoLTNWMTV6TTE5IDh2MTFjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWOGMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAyem0tMiAwSDd2MTFoMTBWOHptMS01SDZ2MmgxMlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9iaWxlRnJpZW5kbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDFIOWMtMS4xIDAtMiAuOS0yIDJ2M2gyVjRoMTB2MTZIOXYtMkg3djNjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yek03LjAxIDEzLjQ3bC0yLjU1LTIuNTUtMS4yNyAxLjI3TDcgMTZsNy4xOS03LjE5LTEuMjctMS4yNy01LjkxIDUuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2JpbGVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2OC42MWwyIDJWM2MwLTEuMS0uOS0yLTItMkg3Yy0uNzEgMC0xLjMzLjM3LTEuNjguOTNMOC4zOSA1SDE3ek0xLjQ5IDMuNzYgNSA3LjI3VjIxYzAgMS4xLjkgMiAyIDJoMTBjMS4wMiAwIDEuODUtLjc3IDEuOTgtMS43NWwxLjcyIDEuNzIgMS40MS0xLjQxTDIuOSAyLjM1IDEuNDkgMy43NnpNNyA5LjI3IDE2LjczIDE5SDdWOS4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vYmlsZWRhdGFPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDYuODIgMS41OSAxLjU5TDE5IDdsLTQtNC00IDQgMS40MSAxLjQxTDE0IDYuODJ2NC4zNWwyIDJ6TTEuMzkgNC4yMiA4IDEwLjgzdjYuMzVsLTEuNTktMS41OUw1IDE3bDQgNCA0LTQtMS40MS0xLjQxTDEwIDE3LjE4di00LjM1bDkuNzggOS43OCAxLjQxLTEuNDJMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9kZU5pZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOGMtLjM0IDAtLjY4LS4wMi0xLjAxLS4wNyAxLjkxLTIuMTYgMy4wMS00Ljk4IDMuMDEtNy45M3MtMS4xLTUuNzctMy4wMS03LjkzQzguODIgNC4wMiA5LjE2IDQgOS41IDRtMC0yYy0xLjgyIDAtMy41My41LTUgMS4zNSAyLjk5IDEuNzMgNSA0Ljk1IDUgOC42NXMtMi4wMSA2LjkyLTUgOC42NWMxLjQ3Ljg1IDMuMTggMS4zNSA1IDEuMzUgNS41MiAwIDEwLTQuNDggMTAtMTBTMTUuMDIgMiA5LjUgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVTdGFuZGJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMy04YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbml0b3JIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2M2gyVjZoMTZ2M2gyVjZjMC0xLjEtLjktMi0yLTJ6TTIwIDE4SDR2LTNIMnYzYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuODkgNy41NWMtLjM0LS42OC0xLjQ1LS42OC0xLjc5IDBMMTAgMTMuNzZsLTEuMTEtMi4yMUEuOTg4Ljk4OCAwIDAgMCA4IDExSDJ2Mmg1LjM4bDEuNzIgMy40NWMuMTguMzQuNTIuNTUuOS41NXMuNzItLjIxLjg5LS41NUwxNCAxMC4yNGwxLjExIDIuMjFjLjE3LjM0LjUxLjU1Ljg5LjU1aDZ2LTJoLTUuMzhsLTEuNzMtMy40NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbml0b3JXZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNMTIgNmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bS0xIDMuNWgtMXYtMWgxdjF6bTEuNSAwaC0xdi0xaDF2MXptMS41IDBoLTF2LTFoMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmVhcmJ5RXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDcuNTcgNC40MiA0LjQyTDEyIDE2LjQxbC00LjQyLTQuNDJMMTIgNy41N3ptMCAxMS42Mi03LjItNy4yIDcuMi03LjIgNiA2VjcuMTZsLTQuNTgtNC41OGMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTguMDEgOGMtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2w4LjAxIDhjLjc4Ljc4IDIuMDUuNzggMi44MyAwTDE4IDE2Ljgydi0zLjYzbC02IDZ6bTggLjgxaDJ2MmgtMnYtMnptMi0xMGgtMnY4aDJ2LThcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5lYXJieU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuNDEgMTMuNDIgMTguODMgMTZsLTEuODEtMS44MUwxOS4yIDEyIDEyIDQuOCA5LjgxIDYuOTkgOCA1LjE3bDIuNTgtMi41OGMuNzgtLjc4IDIuMDUtLjc4IDIuODMgMGw4IDhjLjc5Ljc4Ljc5IDIuMDQgMCAyLjgzem0tLjIyIDcuNzctMS40MSAxLjQxTDE2IDE4LjgzbC0yLjU4IDIuNThjLS43OC43OC0yLjA1Ljc4LTIuODMgMGwtOC04Yy0uNzgtLjc4LS43OC0yLjA1IDAtMi44M0w1LjE3IDggMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM5IDE4LjM4em0tNy00LjE3LTEuMzktMS4zOS0uOC44TDcuNTggMTJsLjgtLjgtMS40LTEuMzlMNC44IDEybDcuMiA3LjIgMi4xOS0yLjE4ek0xNi40MiAxMiAxMiA3LjU4bC0uOC44IDQuNDIgNC40Mi44LS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV0d29ya0NlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjJoMjBWMkwyIDIyem0xOC0yaC0zVjkuODNsMy0zVjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV0d29ya1dpZmkxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHptMy4zMiAxMC44NEMxNC4zNCAxNC4zIDEzLjIgMTQgMTIgMTRjLTEuMiAwLTIuMzQuMy0zLjMyLjg0TDIuOTIgOS4wN0M1LjUxIDcuMDggOC42NyA2IDEyIDZzNi40OSAxLjA4IDkuMDggMy4wN2wtNS43NiA1Ljc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV0d29ya1dpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHptNC43OCA5LjM4QTguODUzIDguODUzIDAgMCAwIDEyIDEyYy0xLjc2IDAtMy40LjUtNC43OCAxLjM4bC00LjMtNC4zQzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3bC00LjMgNC4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtXaWZpM0JhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6TTIuOTIgOS4wN0M1LjUxIDcuMDggOC42NyA2IDEyIDZzNi40OSAxLjA4IDkuMDggMy4wN2wtMi44NSAyLjg2QTEwLjk0NSAxMC45NDUgMCAwIDAgMTIgMTBjLTIuMzEgMC00LjQ2LjcxLTYuMjMgMS45M0wyLjkyIDkuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXR3b3JrV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHptMCA0Yy0yLjg2IDAtNS41Ljk0LTcuNjUgMi41MUwyLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTEuNDMgMS40M0ExMi45OSAxMi45OSAwIDAgMCAxMiA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmZjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg0VjRoMTZ2MTZ6TTE4IDZoLTVjLTEuMSAwLTIgLjktMiAydjIuMjhjLS42LjM1LTEgLjk4LTEgMS43MiAwIDEuMS45IDIgMiAyczItLjkgMi0yYzAtLjc0LS40LTEuMzgtMS0xLjcyVjhoM3Y4SDhWOGgyVjZINnYxMmgxMlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmlnaHRsaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNGMuMzQgMCAuNjguMDIgMS4wMS4wN0MxMy4xIDYuMjMgMTIgOS4wNSAxMiAxMnMxLjEgNS43NyAzLjAxIDcuOTNjLS4zMy4wNS0uNjcuMDctMS4wMS4wNy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04bTAtMkM4LjQ4IDIgNCA2LjQ4IDQgMTJzNC40OCAxMCAxMCAxMGMxLjgyIDAgMy41My0uNSA1LTEuMzUtMi45OS0xLjczLTUtNC45NS01LTguNjVzMi4wMS02LjkyIDUtOC42NUE5Ljk3MyA5Ljk3MyAwIDAgMCAxNCAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek0xOSAxOUg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjA4IDExLjAzLTIuMTItMi4xMkw3IDE0Ljg2VjE3aDIuMXpNMTYuODUgOS4yN2MuMi0uMi4yLS41MSAwLS43MWwtMS40MS0xLjQxYy0uMi0uMi0uNTEtLjItLjcxIDBsLTEuMDYgMS4wNiAyLjEyIDIuMTIgMS4wNi0xLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFzc3dvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTdoMjB2Mkgydi0yem0xLjE1LTQuMDVMNCAxMS40N2wuODUgMS40OCAxLjMtLjc1LS44NS0xLjQ4SDd2LTEuNUg1LjNsLjg1LTEuNDdMNC44NSA3IDQgOC40NyAzLjE1IDdsLTEuMy43NS44NSAxLjQ3SDF2MS41aDEuN2wtLjg1IDEuNDggMS4zLjc1em02LjctLjc1IDEuMy43NS44NS0xLjQ4Ljg1IDEuNDggMS4zLS43NS0uODUtMS40OEgxNXYtMS41aC0xLjdsLjg1LTEuNDctMS4zLS43NUwxMiA4LjQ3IDExLjE1IDdsLTEuMy43NS44NSAxLjQ3SDl2MS41aDEuN2wtLjg1IDEuNDh6TTIzIDkuMjJoLTEuN2wuODUtMS40Ny0xLjMtLjc1TDIwIDguNDcgMTkuMTUgN2wtMS4zLjc1Ljg1IDEuNDdIMTd2MS41aDEuN2wtLjg1IDEuNDggMS4zLjc1Ljg1LTEuNDguODUgMS40OCAxLjMtLjc1LS44NS0xLjQ4SDIzdi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXR0ZXJuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNi02YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNiAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLS4wMiA2Yy0uNzQgMC0xLjM3LjQtMS43MiAxaC0yLjU0YTEuOTggMS45OCAwIDAgMC0zLjQ0IDBIOC40MWwzLjA3LTMuMDdjLjE3LjA0LjM0LjA3LjUyLjA3IDEuMSAwIDItLjkgMi0yIDAtLjE4LS4wMy0uMzUtLjA3LS41MWwzLjU2LTMuNTZjLjE2LjA0LjMzLjA3LjUxLjA3IDEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMmMwIC4xOC4wMy4zNS4wNy41MWwtMy41NiAzLjU2Yy0uMTYtLjA0LS4zMy0uMDctLjUxLS4wNy0xLjEgMC0yIC45LTIgMiAwIC4xOC4wMy4zNS4wNy41MWwtMy41NiAzLjU2QzYuMzUgMTYuMDMgNi4xOCAxNiA2IDE2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMmMuNzQgMCAxLjM3LS40IDEuNzItMWgyLjU3YTEuOTggMS45OCAwIDAgMCAzLjQ0IDBoMi41NWMuMzQuNi45OCAxIDEuNzIgMSAxLjEgMCAyLS45IDItMi0uMDItMS4xLS45Mi0yLTIuMDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBoaXNoaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNi4xOFYyaC0ydjQuMThDMTMuODQgNi42IDEzIDcuNyAxMyA5cy44NCAyLjQgMiAyLjgyVjE1YzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00di0xLjE3bDEuNTkgMS41OUwxMCAxNCA1IDl2NmMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02di0zLjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJzLS44NC0yLjQtMi0yLjgyek0xNiAxMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNDkgMTAuNVYxNWgxLjE1VjloLS44N2wtMS43NiAxLjI3LjU4Ljg5ek0xMS40NyAxMC4wNWMuNSAwIC44MS4zMi44MS43MiAwIC4zNy0uMTQuNjQtLjU0IDEuMDYtLjM2LjM4LTEuMDYgMS4wOC0yLjEzIDIuMTVWMTVoMy44OXYtLjk5aC0yLjM3bC0uMDMtLjA1Yy42OC0uNjggMS4xNS0xLjE0IDEuNC0xLjM5LjYxLS42LjkyLTEuMjIuOTItMS44NiAwLS4yNC0uMDUtMS4wNC0uOTEtMS40OC0uNDctLjIzLTEuMjYtLjM2LTEuOTUtLjAzLS44Mi4zOS0uOTkgMS4xMy0xIDEuMTVsMS4wMS40MmMuMS0uMzMuMzgtLjcyLjktLjcyek0xNi45OSAxMy45NGMtLjgzIDAtLjk5LS43Ni0xLjAyLS44NmwtMS4wMy40MWMuNDUgMS41OSAyLjAxIDEuNTEgMi4wNSAxLjUxIDEuMiAwIDEuNjgtLjcyIDEuNzYtLjg1LjMyLS40OS4zNi0xLjI0LS4wMS0xLjc2LS4xNy0uMjQtLjQtLjQxLS42OC0uNTJ2LS4wN2MuMi0uMS4zNy0uMjYuNTItLjQ4LjI2LS40MS4zMS0xLjA3LS4wMi0xLjU3LS4wOC0uMTEtLjUzLS43NS0xLjYyLS43NS0xLjI2IDAtMS43NC45LTEuODUgMS4yNGwuOTkuNDFjLjExLS4zMi4zNS0uNjQuODUtLjY0LjQ0IDAgLjc1LjI2Ljc1LjY1IDAgLjU4LS41NS43Mi0uODguNzJoLS40NnYxaC41Yy41NiAwIDEuMDQuMjQgMS4wNC43OSAwIC40OS0uNDguNzctLjg5Ljc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheUxlc3NvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyMFY0aDJ2N2wyLjUtMS41TDEyIDExVjRoNXY3LjA4Yy4zMy0uMDUuNjYtLjA4IDEtLjA4cy42Ny4wMyAxIC4wOFY0YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoNy4yNmMtLjQyLS42LS43NS0xLjI4LS45Ny0ySDV6bTEzLTdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0tMS4yNSA3LjV2LTVsNCAyLjUtNCAyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmljZUNoYW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxN2gydi0xaDFjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMUg4di0xaDRWOGgtMlY3SDh2MUg3Yy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWgzdjFINnYyaDJ2MXpNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2YzAtMS4xMS0uODktMi0yLTJ6bTAgMTRINFY2aDE2djEyem0tNi04IDItMiAyIDJtMCA0LjI1LTIgMi0yLTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaWNlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEzVjljMC0uNTUtLjQ1LTEtMS0xSDZWNmg1VjRIOC41VjNoLTJ2MUg1Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg0djJINHYyaDIuNXYxaDJ2LTFIMTBjLjU1IDAgMS0uNDUgMS0xek0xOS41OSAxMi41MmwtNS42NiA1LjY1LTIuODMtMi44My0xLjQxIDEuNDJMMTMuOTMgMjEgMjEgMTMuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQdW5jaENsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNmgtMVYxSDZ2NUg1Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6TTggM2g4djNIOFYzem0xMSAxN0g1VjhoMTR2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDljLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDguNWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVzMS41Ny0zLjUgMy41LTMuNSAzLjUgMS41NyAzLjUgMy41LTEuNTcgMy41LTMuNSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTEuNWgtMXYyLjcxbDEuNjQgMS42NC43MS0uNzEtMS4zNS0xLjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVpeiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDhWNGgxMnYxMnptLTYuNDktNS44NGMuNDEtLjczIDEuMTgtMS4xNiAxLjYzLTEuOC40OC0uNjguMjEtMS45NC0xLjE0LTEuOTQtLjg4IDAtMS4zMi42Ny0xLjUgMS4yM2wtMS4zNy0uNTdDMTEuNTEgNS45NiAxMi41MiA1IDEzLjk5IDVjMS4yMyAwIDIuMDguNTYgMi41MSAxLjI2LjM3LjYuNTggMS43My4wMSAyLjU3LS42My45My0xLjIzIDEuMjEtMS41NiAxLjgxLS4xMy4yNC0uMTguNC0uMTggMS4xOGgtMS41MmMuMDEtLjQxLS4wNi0xLjA4LjI2LTEuNjZ6bS0uNTYgMy43OWMwLS41OS40Ny0xLjA0IDEuMDUtMS4wNC41OSAwIDEuMDQuNDUgMS4wNCAxLjA0IDAgLjU4LS40NCAxLjA1LTEuMDQgMS4wNS0uNTggMC0xLjA1LS40Ny0xLjA1LTEuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44IDcuMiA5IDEwSDdMNS44NyA3LjMzSDRWMTBIMlYyaDVjMS4xMyAwIDIgLjg3IDIgMnYxLjMzYzAgLjgtLjUzIDEuNTQtMS4yIDEuODd6TTcgNEg0djEuMzNoM1Y0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFkYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljc0IDE4LjMzQTkuOTg0IDkuOTg0IDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBhOS45ODQgOS45ODQgMCAwIDAgNy4xMS0yLjk3Yy4wMy0uMDMuMDUtLjA2LjA3LS4wOC4yLS4yLjM5LS40MS41Ni0uNjJ6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDhjMCAxLjg1LS42MyAzLjU0LTEuNjkgNC45bC0xLjQzLTEuNDNjLjY5LS45OCAxLjEtMi4xNyAxLjEtMy40NiAwLTMuMzEtMi42OS02LTYtNnMtNiAyLjY5LTYgNiAyLjY5IDYgNiA2YzEuMyAwIDIuNTEtLjQyIDMuNDktMS4xM2wxLjQyIDEuNDJBNy44MjIgNy44MjIgMCAwIDEgMTIgMjB6bTEuOTItNy40OWMuMTctLjY2LjAyLTEuMzgtLjQ5LTEuOWwtLjAyLS4wMmMtLjc3LS43Ny0yLS43OC0yLjc4LS4wNC0uMDEuMDEtLjAzLjAyLS4wNS4wNC0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbC4wMi4wMmMuNTIuNTEgMS4yNS42NyAxLjkxLjQ5bDEuNTEgMS41MWMtLjYuMzYtMS4yOS41OC0yLjA0LjU4LTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNGMwIC43My0uMjEgMS40MS0uNTYgMmwtMS41LTEuNTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1lbWJlck1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAyMEg3di0xaDEwdjF6bTAtM0g3di0uNDhjMS40Ny0uOTkgMy4yMi0xLjUyIDUtMS41MnMzLjUzLjUzIDUgMS41MlYxOHptMC0yLjc5Yy0xLjUtLjc3LTMuMi0xLjIxLTUtMS4yMXMtMy41LjQ0LTUgMS4yMVY2aDEwdjkuMjF6TTE3IDRIN1YzaDEwdjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEzYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXNldFR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA4VjVjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg0djJoOHYtMmg0YzEuMSAwIDEuOTktLjkgMS45OS0ydi01SDIyYzAtMS4xLS45LTItMi0yaC03LjE3bDEuODMtMS44My0xLjQxLTEuNDFDOS42OSAxMC4zMSAxMC44OCA5LjEyIDkgMTFsNC4yNCA0LjI0IDEuNDEtMS40MUwxMi44MyAxMkgyMHY1SDRWNWgxNnYzaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXN0YXJ0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEzYzAtMS42NS42Ny0zLjE1IDEuNzYtNC4yNEw2LjM0IDcuMzRBOC4wMTQgOC4wMTQgMCAwIDAgNCAxM2MwIDQuMDggMy4wNSA3LjQ0IDcgNy45M3YtMi4wMmMtMi44My0uNDgtNS0yLjk0LTUtNS45MXptMTQgMGMwLTQuNDItMy41OC04LTgtOC0uMDYgMC0uMTIuMDEtLjE4LjAxbDEuMDktMS4wOUwxMS41IDIuNSA4IDZsMy41IDMuNSAxLjQxLTEuNDEtMS4wOC0xLjA4Yy4wNiAwIC4xMi0uMDEuMTctLjAxIDMuMzEgMCA2IDIuNjkgNiA2IDAgMi45Ny0yLjE3IDUuNDMtNSA1LjkxdjIuMDJjMy45NS0uNDkgNy0zLjg1IDctNy45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJldmlld3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN0w0IDE3LjE3VjRoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDE1IDEuNTctMy40M0wxNyAxMGwtMy40My0xLjU3TDEyIDVsLTEuNTcgMy40M0w3IDEwbDMuNDMgMS41N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJzdnAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDloMS41bC0xLjc1IDZoLTEuNUwxMi41IDlIMTRsMSAzLjQzTDE2IDl6TTUuMSAxMi45IDYgMTVINC41bC0uODUtMkgyLjV2MkgxVjloMy41Yy44NSAwIDEuNS42NSAxLjUgMS41djFjMCAuNi0uNCAxLjE1LS45IDEuNHptLS42LTIuNGgtMnYxaDJ2LTF6bTE3IDIuNWgtMnYySDE4VjloMy41Yy44MyAwIDEuNS42NyAxLjUgMS41djFjMCAuODMtLjY3IDEuNS0xLjUgMS41em0wLTIuNWgtMnYxaDJ2LTF6TTExLjUgOXYxLjVoLTN2Ljc1aDJjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg3di0xLjVoM3YtLjc1SDcuNzVjLS40MSAwLS43NS0uMzQtLjc1LS43NXYtMmMwLS41NS40NS0xIDEtMWgzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5Mb2NrTGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1SDNjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptLTIgMTJINVY3aDE0djEwem0tOS0xaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXYtMWEyIDIgMCAxIDAtNCAwdjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxem0uOC02YzAtLjY2LjU0LTEuMiAxLjItMS4yczEuMi41NCAxLjIgMS4ydjFoLTIuNHYtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjcmVlbkxvY2tQb3J0cmFpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTZoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xdi0xYTIgMiAwIDEgMC00IDB2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDF6bS44LTZjMC0uNjYuNTQtMS4yIDEuMi0xLjJzMS4yLjU0IDEuMiAxLjJ2MWgtMi40di0xek0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxOEg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5Mb2NrUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjMgMTMuNzctMi41Ny0yLjU3LTEuNDEgMS40MSAyLjIyIDIuMjItNS42NiA1LjY2TDMuNTYgOS4xN2w1LjY2LTUuNjYgMi4xIDIuMSAxLjQxLTEuNDEtMi40NS0yLjQ1YTEuNDkgMS40OSAwIDAgMC0yLjEyIDBMMS44IDguMTFhMS40OSAxLjQ5IDAgMCAwIDAgMi4xMmwxMi4wMiAxMi4wMmMuNTkuNTkgMS41NC41OSAyLjEyIDBsNi4zNi02LjM2Yy41OS0uNTkuNTktMS41NCAwLTIuMTJ6TTcuNTIgMjEuNDhBMTAuNDg3IDEwLjQ4NyAwIDAgMSAxLjU1IDEzSC4wNUMuNTYgMTkuMTYgNS43MSAyNCAxMiAyNGwuNjYtLjAzLTMuODEtMy44Mi0xLjMzIDEuMzN6TTE1LjA1IDEwaDVjLjU1IDAgMS0uNDUgMS0xVjVjMC0uNTUtLjQ1LTEtMS0xdi0uNWEyLjUgMi41IDAgMCAwLTUgMFY0Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjgtNi41YzAtLjk0Ljc2LTEuNyAxLjctMS43czEuNy43NiAxLjcgMS43VjRoLTMuNHYtLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5Sb3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDggMi41MmMzLjI3IDEuNTUgNS42MSA0LjcyIDUuOTcgOC40OGgxLjVDMjMuNDQgNC44NCAxOC4yOSAwIDEyIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMyem0tNi4yNS0uNzdhMS40OSAxLjQ5IDAgMCAwLTIuMTIgMEwxLjc1IDguMTFhMS40OSAxLjQ5IDAgMCAwIDAgMi4xMmwxMi4wMiAxMi4wMmMuNTkuNTkgMS41NC41OSAyLjEyIDBsNi4zNi02LjM2Yy41OS0uNTkuNTktMS41NCAwLTIuMTJMMTAuMjMgMS43NXptNC42IDE5LjQ0TDIuODEgOS4xN2w2LjM2LTYuMzYgMTIuMDIgMTIuMDItNi4zNiA2LjM2em0tNy4zMS4yOUExMC40ODcgMTAuNDg3IDAgMCAxIDEuNTUgMTNILjA1Qy41NiAxOS4xNiA1LjcxIDI0IDEyIDI0bC42Ni0uMDMtMy44MS0zLjgxLTEuMzMgMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjcmVlblNlYXJjaERlc2t0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMThoMTZjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyek00IDVoMTZ2MTFINFY1ek0xIDE5aDIydjJIMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTcgNy41M2MtMS4zNy0xLjM3LTMuNTgtMS4zNy00Ljk1IDBzLTEuMzcgMy41OCAwIDQuOTVjMS4xOCAxLjE4IDMgMS4zNCA0LjM2LjQ3bDIuMDkgMi4wOSAxLjA2LTEuMDYtMi4wOS0yLjA5Yy44Ny0xLjM2LjcyLTMuMTgtLjQ3LTQuMzZ6bS0xLjA2IDMuODhjLS43OC43OC0yLjA1Ljc4LTIuODMgMC0uNzgtLjc4LS43OC0yLjA1IDAtMi44M3MyLjA1LS43OCAyLjgzIDBjLjc4Ljc5Ljc4IDIuMDUgMCAyLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuc2hvdE1vbml0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg0djJoOHYtMmg0YzEuMSAwIDItLjkgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxNEg0VjVoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA3LjVIOVY2SDV2NGgxLjV6TTE5IDEyaC0xLjV2Mi41SDE1VjE2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5zaG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAyMUg3di0xaDEwdjF6bTAtM0g3VjZoMTB2MTJ6bTAtMTRIN1YzaDEwdjF6TTkuNSA4LjVIMTJWN0g4djRoMS41VjguNXpNMTIgMTdoNHYtNGgtMS41djIuNUgxMlYxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNkU3RvcmFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNHYxNkg2VjguODNMMTAuODMgNEgxOG0wLTJoLThMNCA4djEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOSA3aDJ2NEg5em0zIDBoMnY0aC0yem0zIDBoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VjdXJpdHlVcGRhdGVHb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAyMUg3di0xaDEwdjF6bTAtM0g3VjZoMTB2MTJ6bTAtMTRIN1YzaDEwdjF6bS0xIDYuMDUtMS40MS0xLjQxLTMuNTQgMy41NC0xLjQxLTEuNDEtMS40MSAxLjQxTDExLjA1IDE1IDE2IDEwLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VjdXJpdHlVcGRhdGVXYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNWgydjJoLTJ6TTExIDdoMnY2aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAyMUg3di0xaDEwdjF6bTAtM0g3VjZoMTB2MTJ6bTAtMTRIN1YzaDEwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZWN1cml0eVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyek03IDRWM2gxMHYxSDd6bTkgOC00IDQtNC00IDEuNDEtMS40MUwxMSAxMi4xN1Y4aDJ2NC4xN2wxLjU5LTEuNTlMMTYgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS40MSAxMS40MS04LjgzLTguODNjLS4zNy0uMzctLjg4LS41OC0xLjQxLS41OEg0Yy0xLjEgMC0yIC45LTIgMnY3LjE3YzAgLjUzLjIxIDEuMDQuNTkgMS40MWw4LjgzIDguODNjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDcuMTctNy4xN2MuNzgtLjc4Ljc4LTIuMDQtLjAxLTIuODN6TTEyLjgzIDIwIDQgMTEuMTdWNGg3LjE3TDIwIDEyLjgzIDEyLjgzIDIwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW5kVG9Nb2JpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDggNCA0LTQgNC0xLjQxLTEuNDFMMTguMTcgMTNIMTN2LTJoNS4xN2wtMS41OS0xLjU5TDE4IDh6TTcgMS4wMSAxNyAxYzEuMSAwIDIgLjkgMiAydjRoLTJWNkg3djEyaDEwdi0xaDJ2NGMwIDEuMS0uOSAyLTIgMkg3Yy0xLjEgMC0yLS45LTItMlYzYzAtMS4xLjktMS45OSAyLTEuOTl6TTcgMjFoMTB2LTFIN3Yxek03IDRoMTBWM0g3djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc1N1Z2dlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxM2MuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xbTAtMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTguNS0yIDEuMDktMi40MUwyMiA1LjVsLTIuNDEtMS4wOUwxOC41IDJsLTEuMDkgMi40MUwxNSA1LjVsMi40MSAxLjA5TDE4LjUgOXptMi43OCAzLjcyTDIwLjUgMTFsLS43OCAxLjcyLTEuNzIuNzggMS43Mi43OC43OCAxLjcyLjc4LTEuNzJMMjMgMTMuNWwtMS43Mi0uNzh6TTE2LjI1IDE0YzAtLjEyIDAtLjI1LS4wMS0uMzdsMS45NC0xLjQ3LTIuNS00LjMzLTIuMjQuOTRjLS4yLS4xMy0uNDItLjI2LS42NC0uMzdMMTIuNSA2aC01bC0uMyAyLjQxYy0uMjIuMTEtLjQzLjI0LS42NC4zN2wtMi4yNC0uOTUtMi41IDQuMzMgMS45NCAxLjQ3Yy0uMDEuMTItLjAxLjI1LS4wMS4zN3MwIC4yNS4wMS4zN2wtMS45NCAxLjQ3IDIuNSA0LjMzIDIuMjQtLjk0Yy4yLjEzLjQyLjI2LjY0LjM3bC4zIDIuNGg1bC4zLTIuNDFjLjIyLS4xMS40My0uMjMuNjQtLjM3bDIuMjQuOTQgMi41LTQuMzMtMS45NC0xLjQ3Yy4wMS0uMTEuMDEtLjI0LjAxLS4zNnptLTEuNDIgMy42NC0xLjczLS43M2MtLjU2LjYtMS4zIDEuMDQtMi4xMyAxLjIzTDEwLjczIDIwSDkuMjdsLS4yMy0xLjg2Yy0uODMtLjE5LTEuNTctLjYzLTIuMTMtMS4yM2wtMS43My43My0uNzMtMS4yNyAxLjQ5LTEuMTNjLS4xMi0uMzktLjE4LS44LS4xOC0xLjIzIDAtLjQzLjA2LS44NC4xOC0xLjIzbC0xLjQ5LTEuMTMuNzMtMS4yNyAxLjczLjczYy41Ni0uNiAxLjMtMS4wNCAyLjEzLTEuMjNMOS4yNyA4aDEuNDdsLjIzIDEuODZjLjgzLjE5IDEuNTcuNjMgMi4xMyAxLjIzbDEuNzMtLjczLjczIDEuMjctMS40OSAxLjEzYy4xMi4zOS4xOC44LjE4IDEuMjMgMCAuNDMtLjA2Ljg0LS4xOCAxLjIzbDEuNDkgMS4xMy0uNzMgMS4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzU3lzdGVtRGF5ZHJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTdIOWMtMi4yMSAwLTQtMS43OS00LTRhMy45OCAzLjk4IDAgMCAxIDMuMjItMy45MkE0LjUxNCA0LjUxNCAwIDAgMSAxMiA3YzEuOTUgMCAzLjY2IDEuMjggNC4yNiAzLjA5IDEuNTguMzYgMi43NCAxLjc1IDIuNzQgMy40MSAwIDEuOTMtMS41NyAzLjUtMy41IDMuNXptLTYuNzYtNS45OEM3Ljc0IDExLjE1IDcgMTEuOTkgNyAxM2MwIDEuMS45IDIgMiAyaDYuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNWgtLjg3bC0uMTctLjg2QTIuNDk2IDIuNDk2IDAgMCAwIDEyIDljLS45NiAwLTEuODQuNTctMi4yNiAxLjQ1bC0uMjcuNTdoLS43M3pNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2hhcmVMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMDIgMTkuOTN2Mi4wMmMyLjAxLS4yIDMuODQtMSA1LjMyLTIuMjFsLTEuNDItMS40M2E3Ljk0MSA3Ljk0MSAwIDAgMS0zLjkgMS42MnpNNC4wMyAxMmMwLTQuMDUgMy4wMy03LjQxIDYuOTUtNy45M1YyLjA1QzUuOTUgMi41OCAyLjAzIDYuODQgMi4wMyAxMmMwIDUuMTYgMy45MiA5LjQyIDguOTUgOS45NXYtMi4wMmMtMy45Mi0uNTItNi45NS0zLjg4LTYuOTUtNy45M3pNMTkuOTUgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMybC0xLjQzIDEuNDNjLjg2IDEuMSAxLjQ0IDIuNDMgMS42MiAzLjg5ek0xOC4zNCA0LjI2YTkuOTgxIDkuOTgxIDAgMCAwLTUuMzItMi4yMXYyLjAyYzEuNDYuMTggMi43OS43NiAzLjkgMS42MmwxLjQyLTEuNDN6TTE4LjMzIDE2LjlsMS40MyAxLjQyQTkuOTQ5IDkuOTQ5IDAgMCAwIDIxLjk3IDEzaC0yLjAyYTcuOTQxIDcuOTQxIDAgMCAxLTEuNjIgMy45elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMS4xQzE2IDguNjEgMTQuMSA3IDEyIDdzLTQgMS42MS00IDQuMWMwIDEuNjYgMS4zMyAzLjYzIDQgNS45IDIuNjctMi4yNyA0LTQuMjQgNC01Ljl6bS00IC45YTEuMDcxIDEuMDcxIDAgMCAxIDAtMi4xNEExLjA3MSAxLjA3MSAwIDAgMSAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3J0Y3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSA1LTEuNDEgMS40MUwxNSA3LjgzIDE3LjE3IDEwSDhjLTIuNzYgMC01IDIuMjQtNSA1djRoMnYtNGMwLTEuNjUgMS4zNS0zIDMtM2g5LjE3TDE1IDE0LjE3bC0xLjQxIDEuNDFMMTUgMTdsNi02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyMEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMmgyMFYyTDIgMjJ6bTE4LTJINi44M0wyMCA2LjgzVjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsQ2VsbHVsYXI0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIyaDIwVjJMMiAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyQWx0MUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTRoM3Y2SDV2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhckFsdDJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE0aDN2Nkg1di02em02LTVoM3YxMWgtM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsQ2VsbHVsYXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDRoM3YxNmgtM1Y0ek01IDE0aDN2Nkg1di02em02LTVoM3YxMWgtM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsQ2VsbHVsYXJDb25uZWN0ZWROb0ludGVybmV0MEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4aDJ2LThoLTJ2OHptMCA0aDJ2LTJoLTJ2MnptLTItMnYySDJMMjIgMnY2aC0yVjYuODNMNi44MyAyMEgxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4aDJ2LThoLTJ2OHptMCA0aDJ2LTJoLTJ2MnpNMiAyMmgxNlY4aDRWMkwyIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsQ2VsbHVsYXJOb1NpbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODMgNUgxN3Y5LjExbDIgMlY1YzAtMS4xLS45LTItMi0yaC03TDcuOTQgNS4wNmwxLjQyIDEuNDJMMTAuODMgNXptMTAuNDMgMTYuMjFMMy43OSAzLjc0IDIuMzggNS4xNSA1IDcuNzdWMTlhMiAyIDAgMCAwIDIgMmgxMS4yM2wxLjYyIDEuNjIgMS40MS0xLjQxek03IDE5VjkuNzlMMTYuMjMgMTlIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyTm9kYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxM2gtOXY5SDJMMjIgMnYxMXptLTEgMi40MUwxOS41OSAxNGwtMi4wOSAyLjA5TDE1LjQxIDE0IDE0IDE1LjQxbDIuMDkgMi4wOUwxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyTnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNi44M1YyMEg2LjgzTDIwIDYuODNNMjIgMiAyIDIyaDIwVjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgMS04LjMxIDguMzEgOC4zMSA4LjN6TTQuOTEgNC4zNiAzLjUgNS43N2w2LjM2IDYuMzdMMSAyMWgxNy43M2wyIDIgMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaTBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6TTIuOTIgOS4wN0M1LjUxIDcuMDggOC42NyA2IDEyIDZzNi40OSAxLjA4IDkuMDggMy4wN0wxMiAxOC4xN2wtOS4wOC05LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxXaWZpNEJhckxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk4IDExIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4bDYuMzUgNi4zNkwxMiAyMWwzLjA1LTMuMDVWMTVjMC0uNDUuMDktLjg4LjIzLTEuMjkuNTQtMS41NyAyLjAxLTIuNzEgMy43Ny0yLjcxaDIuOTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxXaWZpNEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDEgMjEuNDkgMjMuNjQgN2MtLjQ1LS4zNC00LjkzLTQtMTEuNjQtNEM1LjI4IDMgLjgxIDYuNjYuMzYgN2wxMS42MyAxNC40OS4wMS4wMS4wMS0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxXaWZpQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMXYtOWg4Ljk5TDI0IDguOTh6TTE5LjU5IDE0bC0yLjA5IDIuMDktLjMtLjNMMTUuNDEgMTQgMTQgMTUuNDFsMS43OSAxLjc5LjMuM0wxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MSAxOS41OSAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbFdpZmlDb25uZWN0ZWROb0ludGVybmV0NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjF2LTloOC45OUwyNCA4Ljk4ek0xOS41OSAxNGwtMi4wOSAyLjA5LS4zLS4zTDE1LjQxIDE0IDE0IDE1LjQxbDEuNzkgMS43OS4zLjNMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDEgMTkuNTkgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxXaWZpT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMy42NCA3Yy0uNDUtLjM0LTQuOTMtNC0xMS42NC00LTEuMzIgMC0yLjU1LjE0LTMuNjkuMzhMMTguNDMgMTMuNSAyMy42NCA3ek0zLjQxIDEuMzEgMiAyLjcybDIuMDUgMi4wNUMxLjkxIDUuNzYuNTkgNi44Mi4zNiA3TDEyIDIxLjVsMy45MS00Ljg3IDMuMzIgMy4zMiAxLjQxLTEuNDFMMy40MSAxLjMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaVN0YXR1c2JhcjRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxXaWZpU3RhdHVzYmFyQ29ubmVjdGVkTm9JbnRlcm5ldDQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMWw1LTUuMDFWOGg1LjkyQzE5Ljk3IDUuNTEgMTYuMTYgNCAxMiA0ek0xOSAxOGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEwaDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbFdpZmlTdGF0dXNiYXJOdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0ek0yLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdMMTIgMTguMTdsLTkuMDgtOS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2ltQ2FyZERvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQgOHYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMnYxNkg2VjguODNMMTAuODMgNEgxOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgMTMtNCA0LTQtNCAxLjQxLTEuNDFMMTEgMTMuMTdWOS4wMkwxMyA5djQuMTdsMS41OS0xLjU5TDE2IDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BsaXRzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDR2NUg2VjRoMTJtMC0ySDZjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDEzdjVINnYtNWgxMm0wLTJINmMtMS4xIDAtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi01YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzU2NvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZIOVY0aDJ2MnptNC0yaC0ydjJoMlY0ek05IDE0aDJ2LTJIOXYyem0xMC00VjhoLTJ2Mmgyem0wIDR2LTJoLTJ2Mmgyem0tNiAwaDJ2LTJoLTJ2MnptNi0xMGgtMnYyaDJWNHptLTYgNFY2aC0ydjJoMnptLTYgMlY4aDJWNkg3VjRINXYxNmgydi04aDJ2LTJIN3ptOCAyaDJ2LTJoLTJ2MnptLTQtMnYyaDJ2LTJoLTJ6TTkgOHYyaDJWOEg5em00IDJoMlY4aC0ydjJ6bTItNHYyaDJWNmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNzaWRDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDUuNDcgMTIgMTIgNy42MiA3LjYyIDMgMTFWOC41Mkw3LjgzIDVsNC4zOCA0LjM4TDIxIDN2Mi40N3pNMjEgMTVoLTQuN2wtNC4xNyAzLjM0TDYgMTIuNDFsLTMgMi4xM1YxN2wyLjgtMiA2LjIgNiA1LTRoNHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0b3JhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjBoMjB2LTRIMnY0em0yLTNoMnYySDR2LTJ6TTIgNHY0aDIwVjRIMnptNCAzSDRWNWgydjJ6bS00IDdoMjB2LTRIMnY0em0yLTNoMnYySDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTMgOEMxNi43MiA0LjE4IDExLjgyIDIuODcgOCA1LjA3Yy0xLjQxLjgyLTIuNDggMi0zLjE2IDMuMzctLjEzLTIuMi4yMi00LjQgMS4wMi02LjQ0SDMuNzRDMi4yIDYuNDkgMi41MiAxMS41OCA1LjA3IDE2YTcuOTYgNy45NiAwIDAgMCA0Ljg2IDMuNzJjMS45OC41MyA0LjE2LjMxIDYuMDctLjc5IDEuNDEtLjgyIDIuNDgtMiAzLjE2LTMuMzcuMTMgMi4yLS4yMSA0LjQtMS4wMSA2LjQ0aDIuMTFjMS41My00LjQ5IDEuMjItOS41OC0xLjMzLTE0ek0xNSAxNy4yQTYuMDEyIDYuMDEyIDAgMCAxIDYuOCAxNWMtLjExLS4yLS4yMS0uNC0uMy0uNi0xLjItMi43Ni0uMTctNi4wNiAyLjUtNy42IDIuODYtMS42NSA2LjU0LS42NyA4LjIgMi4yLjExLjIuMjEuNC4zLjYgMS4yIDIuNzYuMTcgNi4wNi0yLjUgNy42ek0xMiAxMGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJtMC0yYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1bW1hcml6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgM0g1Yy0xLjEgMC0xLjk5LjktMS45OSAyTDMgMTljMCAxLjEuODkgMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWOWwtNi02ek01IDE5VjVoOXY1aDV2OUg1ek05IDhjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXptMCA0YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6bTAgNGMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMSAuNDUtMSAxLTEgMSAuNDUgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3lzdGVtU2VjdXJpdHlVcGRhdGVHb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAyMUg3di0xaDEwdjF6bTAtM0g3VjZoMTB2MTJ6bTAtMTRIN1YzaDEwdjF6bS0xIDYuMDUtMS40MS0xLjQxLTMuNTQgMy41NC0xLjQxLTEuNDEtMS40MSAxLjQxTDExLjA1IDE1IDE2IDEwLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3lzdGVtU2VjdXJpdHlVcGRhdGVXYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNWgydjJoLTJ6TTExIDdoMnY2aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAyMUg3di0xaDEwdjF6bTAtM0g3VjZoMTB2MTJ6bTAtMTRIN1YzaDEwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTeXN0ZW1TZWN1cml0eVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyek03IDRWM2gxMHYxSDd6bTkgOC00IDQtNC00IDEuNDEtMS40MUwxMSAxMi4xN1Y4aDJ2NC4xN2wxLjU5LTEuNTlMMTYgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTQgMThINlY0aDd2NWg1djExem0tOS4xOC02Ljk1TDcuNCAxNC40NiAxMC45NCAxOGw1LjY2LTUuNjYtMS40MS0xLjQxLTQuMjQgNC4yNC0yLjEzLTIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaGVybW9zdGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxM1Y1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2OGMtMS4yMS45MS0yIDIuMzctMiA0IDAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVjMC0xLjYzLS43OS0zLjA5LTItNHptLTQtOGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDFoLTF2MWgxdjJoLTF2MWgxdjJoLTJWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRpbWVyMTBTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA4djhoLTNWOGgzbTAtM2gtM0M4LjM0IDUgNyA2LjM0IDcgOHY4YzAgMS42NiAxLjM0IDMgMyAzaDNjMS42NiAwIDMtMS4zNCAzLTNWOGMwLTEuNjYtMS4zNC0zLTMtM3pNMSA4aDJ2MTFoM1Y1SDF2M3ptMTcuNSAzYy0uODMgMC0xLjUuNjgtMS41IDEuNXYyYzAgLjgyLjY3IDEuNSAxLjUgMS41SDIxdjFoLTR2Mmg0LjVjLjgzIDAgMS41LS42NyAxLjUtMS41di0yYzAtLjgzLS42Ny0xLjUtMS41LTEuNUgxOXYtMWg0di0yaC00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lcjNTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMXYyaC00djFoMi41Yy44MyAwIDEuNS42OCAxLjUgMS41djJjMCAuODMtLjY3IDEuNS0xLjUgMS41SDE1di0yaDR2LTFoLTIuNWMtLjgyIDAtMS41LS42OC0xLjUtMS41di0yYzAtLjgyLjY4LTEuNSAxLjUtMS41SDIxek00IDV2M2g2djIuNUg0djNoNlYxNkg0djNoNmMxLjY2IDAgMy0xLjM0IDMtM3YtMS45YTIuMSAyLjEgMCAwIDAtMi4xLTIuMUEyLjEgMi4xIDAgMCAwIDEzIDkuOVY4YzAtMS42Ni0xLjM0LTMtMy0zSDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdW5nc3RlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTloMnYzaC0yek0yIDExaDN2Mkgyek0xOSAxMWgzdjJoLTN6TTE1Ljg5NCAxNy44MDFsMS40MDctMS40MDcgMi4xMjIgMi4xMjItMS40MDggMS40MDd6TTQuNTg0IDE4LjUwOWwyLjEyMS0yLjEyMiAxLjQwOCAxLjQwNy0yLjEyMiAyLjEyMnpNMTUgOC4wMlYzSDl2NS4wMmMtMS4yMS45Mi0yIDIuMzUtMiAzLjk4IDAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVjMC0xLjYzLS43OS0zLjA2LTItMy45OHpNMTEgNWgydjIuMWMtLjMyLS4wNi0uNjYtLjEtMS0uMXMtLjY4LjA0LTEgLjFWNXptMSAxMGMtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVc2JPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA4aDR2NGgtMXYyYzAgLjM0LS4wOC42Ni0uMjMuOTRMMTYgMTMuMTdWMTJoLTFWOHptLTQgLjE3IDIgMlY2aDJsLTMtNC0zIDRoMnYyLjE3ek0xMyAxNnYyLjI4Yy42LjM0IDEgLjk4IDEgMS43MiAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJjMC0uNzQuNC0xLjM3IDEtMS43MlYxNkg4Yy0xLjExIDAtMi0uODktMi0ydi0yLjI4Yy0uNi0uMzQtMS0uOTgtMS0xLjcyIDAtLjU5LjI2LTEuMTMuNjgtMS40OUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxLTYuNi02LjZIMTN6bS0yLTJ2LS4xN2wtMi41MS0yLjUxYy0uMTQuMTYtLjMxLjI5LS40OS40VjE0aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVc2IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDd2NGgxdjJoLTNWNWgybC0zLTQtMyA0aDJ2OEg4di0yLjA3Yy43LS4zNyAxLjItMS4wOCAxLjItMS45MyAwLTEuMjEtLjk5LTIuMi0yLjItMi4yUzQuOCA3Ljc5IDQuOCA5YzAgLjg1LjUgMS41NiAxLjIgMS45M1YxM2MwIDEuMTEuODkgMiAyIDJoM3YzLjA1Yy0uNzEuMzctMS4yIDEuMS0xLjIgMS45NWEyLjIgMi4yIDAgMCAwIDQuNCAwYzAtLjg1LS40OS0xLjU4LTEuMi0xLjk1VjE1aDNjMS4xMSAwIDItLjg5IDItMnYtMmgxVjdoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYWxscGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGg3VjJINGMtMS4xIDAtMiAuOS0yIDJ2N2gyVjR6bTYgOS00IDVoMTJsLTMtNC0yLjAzIDIuNzFMMTAgMTN6bTctNC41YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxNCA3LjY3IDE0IDguNXMuNjcgMS41IDEuNSAxLjVTMTcgOS4zMyAxNyA4LjV6TTIwIDJoLTd2Mmg3djdoMlY0YzAtMS4xLS45LTItMi0yem0wIDE4aC03djJoN2MxLjEgMCAyLS45IDItMnYtN2gtMnY3ek00IDEzSDJ2N2MwIDEuMS45IDIgMiAyaDd2LTJINHYtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OCAxNEgyMmgtLjAyek01LjM1IDEzYzEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQuOTggMy4zMSAxdi0yYy0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMXYyYzEuOSAwIDIuMTctMSAzLjM1LTF6bTEzLjMyIDJjLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjEgMS0zLjM0IDEtMS4yNCAwLTEuMzgtMS0zLjMzLTEtMS45NSAwLTIuMSAxLTMuMzQgMXYyYzEuOTUgMCAyLjExLTEgMy4zNC0xIDEuMjQgMCAxLjM4IDEgMy4zMyAxIDEuOTUgMCAyLjEtMSAzLjM0LTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NCAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNDIgMSAzLjMzIDF2LTJjLTEuMjQgMC0xLjM4LTEtMy4zMy0xek01LjM1IDljMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNC45OCAzLjMxIDFWOGMtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTFDMy4zOCA3IDMuMjQgOCAyIDh2MmMxLjkgMCAyLjE3LTEgMy4zNS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lkZ2V0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuNjYgNC41MiAyLjgzIDIuODMtMi44MyAyLjgzLTIuODMtMi44MyAyLjgzLTIuODNNOSA1djRINVY1aDRtMTAgMTB2NGgtNHYtNGg0TTkgMTV2NEg1di00aDRtNy42Ni0xMy4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6TTExIDNIM3Y4aDhWM3ptMTAgMTBoLTh2OGg4di04em0tMTAgMEgzdjhoOHYtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmkxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTMgMTcuNDYgMTIgMjFsLTMuNTMtMy41NGMuOS0uOSAyLjE1LTEuNDYgMy41My0xLjQ2czIuNjMuNTYgMy41MyAxLjQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaTJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwYzMuMDMgMCA1Ljc4IDEuMjMgNy43NiAzLjIybC0yLjEyIDIuMTJBNy45NjcgNy45NjcgMCAwIDAgMTIgMTNjLTIuMiAwLTQuMi45LTUuNjQgMi4zNWwtMi4xMi0yLjEyQzYuMjIgMTEuMjMgOC45NyAxMCAxMiAxMHptMCA2Yy0xLjM4IDAtMi42My41Ni0zLjUzIDEuNDZMMTIgMjFsMy41My0zLjU0QTQuOTggNC45OCAwIDAgMCAxMiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlDYWxsaW5nMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgNC41YzEuNzkgMCAzLjQyLjczIDQuNTkgMS45MWwxLjA2LTEuMDZBNy45NCA3Ljk0IDAgMCAwIDE2LjQ5IDNjLTIuMjEgMC00LjIxLjktNS42NiAyLjM0bDEuMDYgMS4wNmE2LjU0NSA2LjU0NSAwIDAgMSA0LjYtMS45elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi40OSA2Yy0xLjM4IDAtMi42My41Ni0zLjU0IDEuNDZsMS4wNiAxLjA2Yy42My0uNjMgMS41MS0xLjAzIDIuNDctMS4wM3MxLjg0LjM5IDIuNDcgMS4wM2wxLjA2LTEuMDZBNC45NCA0Ljk0IDAgMCAwIDE2LjQ5IDZ6TTE2LjQ5IDljLS41NSAwLTEuMDUuMjItMS40MS41OUwxNi40OSAxMWwxLjQxLTEuNDFjLS4zNi0uMzctLjg2LS41OS0xLjQxLS41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMiAxNC44Ny0zLjY3LS43M2MtLjUtLjEtLjgzLjItLjkuMjdsLTIuNTIgMi41Yy0yLjUtMS40My00LjU3LTMuNS02LTZsMi41LTIuNTJjLjIzLS4yNC4zMy0uNTcuMjctLjlMOS4xMyAzLjhjLS4wOS0uNDYtLjUtLjgtLjk4LS44SDRjLS41NiAwLTEuMDMuNDctMSAxLjAzLjE3IDIuODkgMS4wNSA1LjYgMi40MyA3Ljk3IDEuNTggMi43MyAzLjg1IDQuOTkgNi41NyA2LjU3IDIuMzcgMS4zNyA1LjA4IDIuMjYgNy45NyAyLjQzLjU1LjAzIDEuMDMtLjQzIDEuMDMtMXYtNC4xNWMwLS40OC0uMzQtLjg5LS44LS45OHpNNS4xIDVoMi4yM2wuNDcgMi4zNUw2LjE3IDljLS41NC0xLjMtLjktMi42My0xLjA3LTR6TTE5IDE4LjljLTEuMzctLjE4LTIuNy0uNTMtNC0xLjA3bDEuNjUtMS42MyAyLjM1LjQ3djIuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpQ2hhbm5lbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNjLTIuNTEgMC0zLjc3IDUuNjEtNC40IDEwLjU3QzEwLjc5IDEwLjY2IDkuNjEgOCA4IDggNC40MyA4IDMgMjEgMyAyMWgyLjAxYy42MS01LjI3IDItOS44MiAyLjk5LTEwLjg3Ljk4IDEuMDUgMi4zOCA1LjYxIDIuOTkgMTAuODdIMTNjLjUtMi41MyAyLTYgMy02czIuNSAzLjUzIDMgNmgycy0uNS0xOC01LTE4em0wIDEwYy0uOTkgMC0xLjgyLjYyLTIuNSAxLjUuNTctNC43NyAxLjU0LTguNjIgMi41LTkuNDQuOTcuODEgMS45MSA0LjY3IDIuNDkgOS40M0MxNy44MSAxMy42MiAxNi45OCAxMyAxNiAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlGaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmM0LjE0IDAgNy44OCAxLjY4IDEwLjU5IDQuMzlMMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjFsMS40MS0xLjQyTDIuOTMgOS4wOEM1LjQ1IDcuMTYgOC41OSA2IDEyIDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE0YzAtMi4yNC0xLjc2LTQtNC00cy00IDEuNzYtNCA0IDEuNzYgNCA0IDRjLjc1IDAgMS40NC0uMjEgMi4wMy0uNTZMMjEuNTkgMjAgMjMgMTguNTlsLTIuNTYtMi41NmMuMzUtLjU5LjU2LTEuMjguNTYtMi4wM3ptLTQgMmMtMS4xMiAwLTItLjg4LTItMnMuODgtMiAyLTIgMiAuODggMiAyLS44OCAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OCAxMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGw2LjM1IDYuMzZMMTIgMjFsMy4wNS0zLjA1VjE1YzAtLjQ1LjA5LS44OC4yMy0xLjI5LjU0LTEuNTcgMi4wMS0yLjcxIDMuNzctMi43MWgyLjkzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaVBhc3N3b3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjQgOC45OC0yLjEyIDIuMTNDMTkuMzUgOC41NyAxNS44NSA3IDEyIDdzLTcuMzUgMS41Ny05Ljg4IDQuMTFMMCA4Ljk4QzMuMDcgNS45IDcuMzEgNCAxMiA0czguOTMgMS45IDEyIDQuOTh6TTQuMjQgMTMuMjJsMi4xMiAyLjEyQTcuOTY3IDcuOTY3IDAgMCAxIDEyIDEzYzIuMiAwIDQuMi45IDUuNjQgMi4zNWwyLjEyLTIuMTJDMTcuNzggMTEuMjMgMTUuMDMgMTAgMTIgMTBjLTMuMDMgMC01Ljc4IDEuMjMtNy43NiAzLjIyek0yNCAyMHYzYzAgLjU1LS40NSAxLTEgMWgtNGMtLjU1IDAtMS0uNDUtMS0xdi0zYzAtLjU1LjQ1LTEgMS0xdi0xYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2MWMuNTUgMCAxIC40NSAxIDF6bS0yLTJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2MWgydi0xem0tMTAtMmMtMS4zOCAwLTIuNjMuNTYtMy41MyAxLjQ2TDEyIDIxbDMuNTMtMy41NEE0Ljk4IDQuOTggMCAwIDAgMTIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpVGV0aGVyaW5nRXJyb3JSb3VuZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3Yy0zLjMxIDAtNiAyLjY5LTYgNiAwIDEuNjYuNjggMy4xNSAxLjc2IDQuMjRsMS40Mi0xLjQyQTMuOTM0IDMuOTM0IDAgMCAxIDggMTNjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIDEuMTEtLjQ1IDIuMS0xLjE4IDIuODJsMS40MiAxLjQyQTYuMDAzIDYuMDAzIDAgMCAwIDE4IDEzYzAtMy4zMS0yLjY5LTYtNi02em0wLTRDNi40OCAzIDIgNy40OCAyIDEzYzAgMi43NiAxLjEyIDUuMjYgMi45MyA3LjA3bDEuNDItMS40MkE3Ljk0IDcuOTQgMCAwIDEgNCAxM2MwLTQuNDIgMy41OC04IDgtOCAyLjUzIDAgNC43OCAxLjE3IDYuMjQgM2gyLjQyQzE4LjkzIDUuMDEgMTUuNyAzIDEyIDN6bTAgOGMtMS4xIDAtMiAuOS0yIDIgMCAuNTUuMjMgMS4wNS41OSAxLjQxLjM2LjM2Ljg2LjU5IDEuNDEuNTlzMS4wNS0uMjMgMS40MS0uNTljLjM2LS4zNi41OS0uODYuNTktMS40MSAwLTEuMS0uOS0yLTItMnptOC0xaDJ2NmgtMnYtNnptMCA4aDJ2MmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlUZXRoZXJpbmdFcnJvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMy4zMSAwLTYgMi42OS02IDYgMCAxLjY2LjY4IDMuMTUgMS43NiA0LjI0bDEuNDItMS40MkEzLjkzNCAzLjkzNCAwIDAgMSA4IDEzYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjExLS40NSAyLjEtMS4xOCAyLjgybDEuNDIgMS40MkE2LjAwMyA2LjAwMyAwIDAgMCAxOCAxM2MwLTMuMzEtMi42OS02LTYtNnptMC00QzYuNDggMyAyIDcuNDggMiAxM2MwIDIuNzYgMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJBNy45NCA3Ljk0IDAgMCAxIDQgMTNjMC00LjQyIDMuNTgtOCA4LTggMi41MyAwIDQuNzggMS4xNyA2LjI0IDNoMi40MkMxOC45MyA1LjAxIDE1LjcgMyAxMiAzem0wIDhjLTEuMSAwLTIgLjktMiAyIDAgLjU1LjIzIDEuMDUuNTkgMS40MS4zNi4zNi44Ni41OSAxLjQxLjU5czEuMDUtLjIzIDEuNDEtLjU5Yy4zNi0uMzYuNTktLjg2LjU5LTEuNDEgMC0xLjEtLjktMi0yLTJ6bTgtMWgydjZoLTJ2LTZ6bTAgOGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpVGV0aGVyaW5nT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIybDIuNjkgMi42OUE5Ljk1OCA5Ljk1OCAwIDAgMCAyIDEzYzAgMi43NiAxLjEyIDUuMjYgMi45MyA3LjA3bDEuNDItMS40MmE3Ljk1NyA3Ljk1NyAwIDAgMS0uODQtMTAuMzFsMS40MyAxLjQzYTYuMDAzIDYuMDAzIDAgMCAwIC44MiA3LjQ3bDEuNDItMS40MkEzLjkzNCAzLjkzNCAwIDAgMSA4IDEzYzAtLjYzLjE1LTEuMjMuNDEtMS43NmwxLjYxIDEuNjFjMCAuMDUtLjAyLjEtLjAyLjE1IDAgLjU1LjIzIDEuMDUuNTkgMS40MS4zNi4zNi44Ni41OSAxLjQxLjU5LjA1IDAgLjEtLjAxLjE2LS4wMmw3LjYyIDcuNjIgMS40MS0xLjQxTDIuODEgMi44MXpNMTcuNyAxNC44N2MuMTktLjU5LjMtMS4yMi4zLTEuODcgMC0zLjMxLTIuNjktNi02LTYtLjY1IDAtMS4yOC4xLTEuODcuM2wxLjcxIDEuNzFDMTEuODkgOSAxMS45NSA5IDEyIDljMi4yMSAwIDQgMS43OSA0IDQgMCAuMDUgMCAuMTEtLjAxLjE2bDEuNzEgMS43MXpNMTIgNWM0LjQyIDAgOCAzLjU4IDggOCAwIDEuMjItLjI3IDIuMzctLjc3IDMuNGwxLjQ5IDEuNDlBOS45NTMgOS45NTMgMCAwIDAgMjIgMTNjMC01LjUyLTQuNDgtMTAtMTAtMTAtMS43OCAwLTMuNDQuNDYtNC44OSAxLjI4bDEuNDggMS40OEM5LjYzIDUuMjcgMTAuNzggNSAxMiA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaVRldGhlcmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDJjMC0zLjMxLTIuNjktNi02LTZzLTYgMi42OS02IDZjMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTlsMS0xLjc0Yy0xLjE5LS43LTItMS45Ny0yLTMuNDUgMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIDEuNDgtLjgxIDIuNzUtMiAzLjQ1bDEgMS43NGMxLjc5LTEuMDQgMy0yLjk3IDMtNS4xOXpNMTIgM0M2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAzLjcgMi4wMSA2LjkyIDQuOTkgOC42NWwxLTEuNzNDNS42MSAxOC41MyA0IDE1Ljk2IDQgMTNjMC00LjQyIDMuNTgtOCA4LThzOCAzLjU4IDggOGMwIDIuOTYtMS42MSA1LjUzLTQgNi45MmwxIDEuNzNjMi45OS0xLjczIDUtNC45NSA1LTguNjUgMC01LjUyLTQuNDgtMTAtMTAtMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5SDVWNWg5VjNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtOWgtMnY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxM2gydjRoLTJ6TTcgMTBoMnY3SDd6TTExIDdoMnYxMGgtMnpNMTkgNVYzaC0ydjJoLTJ2MmgydjJoMlY3aDJWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZENvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDRjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGw0IDRWNHptLTIgMTMuMTdMMTguODMgMTZINFY0aDE2djEzLjE3ek0xMyA1aC0ydjRIN3YyaDR2NGgydi00aDRWOWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsaWduSG9yaXpvbnRhbENlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDJoMnY1aDh2M2gtOHY0aDV2M2gtNXY1aC0ydi01SDZ2LTNoNXYtNEgzVjdoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsaWduSG9yaXpvbnRhbExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIySDJWMmgydjIwek0yMiA3SDZ2M2gxNlY3em0tNiA3SDZ2M2gxMHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsaWduSG9yaXpvbnRhbFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMmgydjIwaC0yVjJ6TTIgMTBoMTZWN0gydjN6bTYgN2gxMHYtM0g4djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnblZlcnRpY2FsQm90dG9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMjJIMnYtMmgyMHYyek0xMCAySDd2MTZoM1Yyem03IDZoLTN2MTBoM1Y4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxpZ25WZXJ0aWNhbENlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExaC01VjZoLTN2NWgtNFYzSDd2OEgxLjg0djJIN3Y4aDN2LThoNHY1aDN2LTVoNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsaWduVmVydGljYWxUb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAydjJIMlYyaDIwek03IDIyaDNWNkg3djE2em03LTZoM1Y2aC0zdjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJlYUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgNy01LTQtNSA3LTQtM3YxM2gxOFY3aC00em0yIDkuOTUtNy01LjQ1TDggMTdsLTMtMi40VjExbDIuNDQgMS44MyA0Ljk2LTYuOTVMMTYuMyA5SDE5djcuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdHRhY2hGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDZ2MTEuNWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNFY1YTIuNSAyLjUgMCAwIDEgNSAwdjEwLjVjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTFWNkgxMHY5LjVhMi41IDIuNSAwIDAgMCA1IDBWNWMwLTIuMjEtMS43OS00LTQtNFM3IDIuNzkgNyA1djEyLjVjMCAzLjA0IDIuNDYgNS41IDUuNSA1LjVzNS41LTIuNDYgNS41LTUuNVY2aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdHRhY2hNb25leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOCAxMC45Yy0yLjI3LS41OS0zLTEuMi0zLTIuMTUgMC0xLjA5IDEuMDEtMS44NSAyLjctMS44NSAxLjc4IDAgMi40NC44NSAyLjUgMi4xaDIuMjFjLS4wNy0xLjcyLTEuMTItMy4zLTMuMjEtMy44MVYzaC0zdjIuMTZjLTEuOTQuNDItMy41IDEuNjgtMy41IDMuNjEgMCAyLjMxIDEuOTEgMy40NiA0LjcgNC4xMyAyLjUuNiAzIDEuNDggMyAyLjQxIDAgLjY5LS40OSAxLjc5LTIuNyAxLjc5LTIuMDYgMC0yLjg3LS45Mi0yLjk4LTIuMWgtMi4yYy4xMiAyLjE5IDEuNzYgMy40MiAzLjY4IDMuODNWMjFoM3YtMi4xNWMxLjk1LS4zNyAzLjUtMS41IDMuNS0zLjU1IDAtMi44NC0yLjQzLTMuODEtNC43LTQuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9HcmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjA2IDkuOTQgMTIgOWwyLjA2LS45NEwxNSA2bC45NCAyLjA2TDE4IDlsLTIuMDYuOTRMMTUgMTJsLS45NC0yLjA2ek00IDE0bC45NC0yLjA2TDcgMTFsLTIuMDYtLjk0TDQgOGwtLjk0IDIuMDZMMSAxMWwyLjA2Ljk0TDQgMTR6bTQuNS01IDEuMDktMi40MUwxMiA1LjUgOS41OSA0LjQxIDguNSAyIDcuNDEgNC40MSA1IDUuNWwyLjQxIDEuMDlMOC41IDl6bS00IDExLjUgNi02LjAxIDQgNEwyMyA4LjkzbC0xLjQxLTEuNDEtNy4wOSA3Ljk3LTQtNEwzIDE5bDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXJDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOWg0djExSDR6TTE2IDEzaDR2N2gtNHpNMTAgNGg0djE2aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVyQWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2MThoMThWM0gzem04IDE2SDV2LTZoNnY2em0wLThINVY1aDZ2NnptOCA4aC02di02aDZ2NnptMC04aC02VjVoNnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVyQm90dG9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDExSDd2Mmgydi0yem00IDRoLTJ2Mmgydi0yek05IDNIN3YyaDJWM3ptNCA4aC0ydjJoMnYtMnpNNSAzSDN2MmgyVjN6bTggNGgtMnYyaDJWN3ptNCA0aC0ydjJoMnYtMnptLTQtOGgtMnYyaDJWM3ptNCAwaC0ydjJoMlYzem0yIDEwaDJ2LTJoLTJ2MnptMCA0aDJ2LTJoLTJ2MnpNNSA3SDN2MmgyVjd6bTE0LTR2MmgyVjNoLTJ6bTAgNmgyVjdoLTJ2MnpNNSAxMUgzdjJoMnYtMnpNMyAyMWgxOHYtMkgzdjJ6bTItNkgzdjJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlckNsZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDVoMlYzSDd2MnptMCA4aDJ2LTJIN3Yyem0wIDhoMnYtMkg3djJ6bTQtNGgydi0yaC0ydjJ6bTAgNGgydi0yaC0ydjJ6bS04IDBoMnYtMkgzdjJ6bTAtNGgydi0ySDN2MnptMC00aDJ2LTJIM3Yyem0wLTRoMlY3SDN2MnptMC00aDJWM0gzdjJ6bTggOGgydi0yaC0ydjJ6bTggNGgydi0yaC0ydjJ6bTAtNGgydi0yaC0ydjJ6bTAgOGgydi0yaC0ydjJ6bTAtMTJoMlY3aC0ydjJ6bS04IDBoMlY3aC0ydjJ6bTgtNnYyaDJWM2gtMnptLTggMmgyVjNoLTJ2MnptNCAxNmgydi0yaC0ydjJ6bTAtOGgydi0yaC0ydjJ6bTAtOGgyVjNoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlckNvbG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuODEgOC45NC0zLjc1LTMuNzVMNCAxNC4yNVYxOGgzLjc1bDkuMDYtOS4wNnpNNiAxNnYtLjkybDcuMDYtNy4wNi45Mi45Mkw2LjkyIDE2SDZ6TTE5LjcxIDYuMDRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRhMS4wMDEgMS4wMDEgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pNMiAyMGgyMHY0SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDJ2LTJIM3Yyek01IDdIM3YyaDJWN3pNMyAxN2gydi0ySDN2MnptNCA0aDJ2LTJIN3Yyek01IDNIM3YyaDJWM3ptNCAwSDd2MmgyVjN6bTggMGgtMnYyaDJWM3ptLTQgNGgtMnYyaDJWN3ptMC00aC0ydjJoMlYzem02IDE0aDJ2LTJoLTJ2MnptLTggNGgydi0yaC0ydjJ6bS04LThoMTh2LTJIM3Yyek0xOSAzdjJoMlYzaC0yem0wIDZoMlY3aC0ydjJ6bS04IDhoMnYtMmgtMnYyem00IDRoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVySW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMnYtMkgzdjJ6bTQgMGgydi0ySDd2MnpNNSA3SDN2MmgyVjd6TTMgMTdoMnYtMkgzdjJ6TTkgM0g3djJoMlYzek01IDNIM3YyaDJWM3ptMTIgMGgtMnYyaDJWM3ptMiA2aDJWN2gtMnYyem0wLTZ2MmgyVjNoLTJ6bS00IDE4aDJ2LTJoLTJ2MnpNMTMgM2gtMnY4SDN2Mmg4djhoMnYtOGg4di0yaC04VjN6bTYgMThoMnYtMmgtMnYyem0wLTRoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVyTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjFoMnYtMmgtMnYyem0wLTRoMnYtMmgtMnYyem0wLTEyaDJWM2gtMnYyem0wIDRoMlY3aC0ydjJ6bTAgNGgydi0yaC0ydjJ6bS00IDhoMnYtMkg3djJ6TTcgNWgyVjNIN3Yyem0wIDhoMnYtMkg3djJ6bS00IDhoMlYzSDN2MTh6TTE5IDloMlY3aC0ydjJ6bS00IDEyaDJ2LTJoLTJ2MnptNC00aDJ2LTJoLTJ2MnptMC0xNHYyaDJWM2gtMnptMCAxMGgydi0yaC0ydjJ6bTAgOGgydi0yaC0ydjJ6bS00LThoMnYtMmgtMnYyem0wLThoMlYzaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJPdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnYyaDJWN3ptMCA0aC0ydjJoMnYtMnptNCAwaC0ydjJoMnYtMnpNMyAzdjE4aDE4VjNIM3ptMTYgMTZINVY1aDE0djE0em0tNi00aC0ydjJoMnYtMnptLTQtNEg3djJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlclJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIxaDJ2LTJIN3Yyek0zIDVoMlYzSDN2MnptNCAwaDJWM0g3djJ6bTAgOGgydi0ySDd2MnptLTQgOGgydi0ySDN2MnptOCAwaDJ2LTJoLTJ2MnptLTgtOGgydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0wLThoMlY3SDN2MnptOCA4aDJ2LTJoLTJ2MnptNC00aDJ2LTJoLTJ2MnptNC0xMHYxOGgyVjNoLTJ6bS00IDE4aDJ2LTJoLTJ2MnptMC0xNmgyVjNoLTJ2MnptLTQgOGgydi0yaC0ydjJ6bTAtOGgyVjNoLTJ2MnptMCA0aDJWN2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVyU3R5bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDIxaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNNyAyMWgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptOC00aDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnpNMyAzdjE4aDJWNWgxNlYzSDN6bTE2IDZoMlY3aC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJUb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjFoMnYtMkg3djJ6bTAtOGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTgtNGgydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0wLThoMnYtMkgzdjJ6bTAtNGgyVjdIM3Yyem04IDhoMnYtMmgtMnYyem04LThoMlY3aC0ydjJ6bTAgNGgydi0yaC0ydjJ6TTMgM3YyaDE4VjNIM3ptMTYgMTRoMnYtMmgtMnYyem0tNCA0aDJ2LTJoLTJ2MnpNMTEgOWgyVjdoLTJ2MnptOCAxMmgydi0yaC0ydjJ6bS00LThoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVyVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOWgyVjdIM3Yyem0wLTRoMlYzSDN2MnptNCAxNmgydi0ySDd2MnptMC04aDJ2LTJIN3Yyem0tNCAwaDJ2LTJIM3Yyem0wIDhoMnYtMkgzdjJ6bTAtNGgydi0ySDN2MnpNNyA1aDJWM0g3djJ6bTEyIDEyaDJ2LTJoLTJ2MnptLTggNGgyVjNoLTJ2MTh6bTggMGgydi0yaC0ydjJ6bTAtOGgydi0yaC0ydjJ6bTAtMTB2MmgyVjNoLTJ6bTAgNmgyVjdoLTJ2MnptLTQtNGgyVjNoLTJ2MnptMCAxNmgydi0yaC0ydjJ6bTAtOGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdWJibGVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTguMDEtMWMtMS42NSAwLTMgMS4zNS0zIDNzMS4zNSAzIDMgMyAzLTEuMzUgMy0zLTEuMzUtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxek0xNi41IDNDMTMuNDcgMyAxMSA1LjQ3IDExIDguNXMyLjQ3IDUuNSA1LjUgNS41UzIyIDExLjUzIDIyIDguNSAxOS41MyAzIDE2LjUgM3ptMCA5Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNVMxNC41NyA1IDE2LjUgNSAyMCA2LjU3IDIwIDguNSAxOC40MyAxMiAxNi41IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FuZGxlc3RpY2tDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNEg3djJINXYxMmgydjJoMnYtMmgyVjZIOVY0em0wIDEySDdWOGgydjh6TTE5IDhoLTJWNGgtMnY0aC0ydjdoMnY1aDJ2LTVoMlY4em0tMiA1aC0ydi0zaDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrbGlzdFJ0bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdIMnYyaDlWN3ptMCA4SDJ2Mmg5di0yem01LjM0LTRMMTIuOCA3LjQ2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0TDIyIDUuMzQgMTYuMzQgMTF6bTAgOC0zLjU0LTMuNTQgMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjRMMjIgMTMuMzQgMTYuMzQgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGVja2xpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA3aC05djJoOVY3em0wIDhoLTl2Mmg5di0yek01LjU0IDExIDIgNy40NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNCAxLjQxIDEuNDFMNS41NCAxMXptMCA4TDIgMTUuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDUuNTQgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhQXJyYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0djJoM3YxMmgtM3YyaDVWNHpNNCAyMGg1di0ySDZWNmgzVjRINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhdGFPYmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDd2MmMwIC41NS0uNDUgMS0xIDFIMnY0aDFjLjU1IDAgMSAuNDUgMSAxdjJjMCAxLjY1IDEuMzUgMyAzIDNoM3YtMkg3Yy0uNTUgMC0xLS40NS0xLTF2LTJjMC0xLjMtLjg0LTIuNDItMi0yLjgzdi0uMzRDNS4xNiAxMS40MiA2IDEwLjMgNiA5VjdjMC0uNTUuNDUtMSAxLTFoM1Y0SDdDNS4zNSA0IDQgNS4zNSA0IDd6TTIxIDEwYy0uNTUgMC0xLS40NS0xLTFWN2MwLTEuNjUtMS4zNS0zLTMtM2gtM3YyaDNjLjU1IDAgMSAuNDUgMSAxdjJjMCAxLjMuODQgMi40MiAyIDIuODN2LjM0Yy0xLjE2LjQxLTIgMS41Mi0yIDIuODN2MmMwIC41NS0uNDUgMS0xIDFoLTN2MmgzYzEuNjUgMCAzLTEuMzUgMy0zdi0yYzAtLjU1LjQ1LTEgMS0xaDF2LTRoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEcmFnSGFuZGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOUg0djJoMTZWOXpNNCAxNWgxNnYtMkg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEcmF3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODUgMTAuMzkgMS4wNi0xLjA2Yy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTguNSA1LjA5Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtMS4wNiAxLjA2IDQuMjQgNC4yNHptLTQuMjQgMS40Mkw3LjQxIDE5SDZ2LTEuNDFsNy4xOS03LjE5IDEuNDIgMS40MXptLTEuNDItNC4yNUw0IDE2Ljc2VjIxaDQuMjRsOS4xOS05LjE5LTQuMjQtNC4yNXpNMTkgMTcuNWMwIDIuMTktMi41NCAzLjUtNSAzLjUtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWMxLjU0IDAgMy0uNzMgMy0xLjUgMC0uNDctLjQ4LS44Ny0xLjIzLTEuMmwxLjQ4LTEuNDhjMS4wNy42MyAxLjc1IDEuNDcgMS43NSAyLjY4ek00LjU4IDEzLjM1QzMuNjEgMTIuNzkgMyAxMi4wNiAzIDExYzAtMS44IDEuODktMi42MyAzLjU2LTMuMzZDNy41OSA3LjE4IDkgNi41NiA5IDZjMC0uNDEtLjc4LTEtMi0xLTEuMjYgMC0xLjguNjEtMS44My42NC0uMzUuNDEtLjk4LjQ2LTEuNC4xMmEuOTkyLjk5MiAwIDAgMS0uMTUtMS4zOEMzLjczIDQuMjQgNC43NiAzIDcgM3M0IDEuMzIgNCAzYzAgMS44Ny0xLjkzIDIuNzItMy42NCAzLjQ3QzYuNDIgOS44OCA1IDEwLjUgNSAxMWMwIC4zMS40My42IDEuMDcuODZsLTEuNDkgMS40OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkaXROb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMGgxMXYySDN2LTJ6bTAtMmgxMVY2SDN2MnptMCA4aDd2LTJIM3Yyem0xNS4wMS0zLjEzLjcxLS43MWEuOTk2Ljk5NiAwIDAgMSAxLjQxIDBsLjcxLjcxYy4zOS4zOS4zOSAxLjAyIDAgMS40MWwtLjcxLjcxLTIuMTItMi4xMnptLS43MS43MS01LjMgNS4zVjIxaDIuMTJsNS4zLTUuMy0yLjEyLTIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRBbGlnbkNlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNXYyaDEwdi0ySDd6bS00IDZoMTh2LTJIM3Yyem0wLThoMTh2LTJIM3Yyem00LTZ2MmgxMFY3SDd6TTMgM3YyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdEFsaWduSnVzdGlmeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgxOHYtMkgzdjJ6bTAtNGgxOHYtMkgzdjJ6bTAtNGgxOHYtMkgzdjJ6bTAtNGgxOFY3SDN2MnptMC02djJoMThWM0gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0QWxpZ25MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdEFsaWduUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTJIM3Yyem02LTRoMTJ2LTJIOXYyem0tNi00aDE4di0ySDN2MnptNi00aDEyVjdIOXYyek0zIDN2MmgxOFYzSDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRCb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42IDEwLjc5Yy45Ny0uNjcgMS42NS0xLjc3IDEuNjUtMi43OSAwLTIuMjYtMS43NS00LTQtNEg3djE0aDcuMDRjMi4wOSAwIDMuNzEtMS43IDMuNzEtMy43OSAwLTEuNTItLjg2LTIuODItMi4xNS0zLjQyek0xMCA2LjVoM2MuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41aC0zdi0zem0zLjUgOUgxMHYtM2gzLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdENsZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4VjVINi4zOWwzIDNoMS44M2wtLjU1IDEuMjggMi4wOSAyLjFMMTQuMjEgOHpNMy40MSA0Ljg2IDIgNi4yN2w2Ljk3IDYuOTdMNi41IDE5aDNsMS41Ny0zLjY2TDE2LjczIDIxbDEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdENvbG9yRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU2IDguOTQgNy42MiAwIDYuMjEgMS40MWwyLjM4IDIuMzgtNS4xNSA1LjE1YTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsNS41IDUuNWMuMjkuMjkuNjguNDQgMS4wNi40NHMuNzctLjE1IDEuMDYtLjQ0bDUuNS01LjVjLjU5LS41OC41OS0xLjUzIDAtMi4xMnpNNS4yMSAxMCAxMCA1LjIxIDE0Ljc5IDEwSDUuMjF6TTE5IDExLjVzLTIgMi4xNy0yIDMuNWMwIDEuMS45IDIgMiAyczItLjkgMi0yYzAtMS4zMy0yLTMuNS0yLTMuNXpNMiAyMGgyMHY0SDJ2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRDb2xvclJlc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2LjM2YzEuNTMgMiAzLjA4IDQuNDMgMy43MSA2LjI0bDIuMjMgMi4yM2MuMDMtLjI3LjA2LS41NS4wNi0uODMgMC0zLjk4LTYtMTAuOC02LTEwLjhzLTEuMTggMS4zNS0yLjUgMy4xOWwxLjQ0IDEuNDRjLjM0LS41MS43LTEgMS4wNi0xLjQ3ek01LjQxIDUuMTQgNCA2LjU1bDMuMzIgMy4zMkM2LjU1IDExLjMzIDYgMTIuNzkgNiAxNGMwIDMuMzEgMi42OSA2IDYgNiAxLjUyIDAgMi45LS41NyAzLjk1LTEuNWwyLjYzIDIuNjNMMjAgMTkuNzIgNS40MSA1LjE0ek0xMiAxOGMtMi4yMSAwLTQtMS43OS00LTQgMC0uNjkuMzItMS42Mi44MS0yLjY0bDUuNzIgNS43MmMtLjcuNTYtMS41Ny45Mi0yLjUzLjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0Q29sb3JUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMGgyMHY0SDJ2LTR6bTMuNDktM2gyLjQybDEuMjctMy41OGg1LjY1TDE2LjA5IDE3aDIuNDJMMTMuMjUgM2gtMi41TDUuNDkgMTd6bTQuNDItNS42MSAyLjAzLTUuNzloLjEybDIuMDMgNS43OUg5LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0SW5kZW50RGVjcmVhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDEwdi0ySDExdjJ6bS04LTUgNCA0VjhsLTQgNHptMCA5aDE4di0ySDN2MnpNMyAzdjJoMThWM0gzem04IDZoMTBWN0gxMXYyem0wIDRoMTB2LTJIMTF2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdEluZGVudEluY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDE4di0ySDN2MnpNMyA4djhsNC00LTQtNHptOCA5aDEwdi0ySDExdjJ6TTMgM3YyaDE4VjNIM3ptOCA2aDEwVjdIMTF2MnptMCA0aDEwdi0ySDExdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRJdGFsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDR2M2gyLjIxbC0zLjQyIDhINnYzaDh2LTNoLTIuMjFsMy40Mi04SDE4VjRoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRMaW5lU3BhY2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA3aDIuNUw1IDMuNSAxLjUgN0g0djEwSDEuNUw1IDIwLjUgOC41IDE3SDZWN3ptNC0ydjJoMTJWNUgxMHptMCAxNGgxMnYtMkgxMHYyem0wLTZoMTJ2LTJIMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdExpc3RCdWxsZXRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMC41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMC02Yy0uODMgMC0xLjUuNjctMS41IDEuNVMzLjE3IDcuNSA0IDcuNSA1LjUgNi44MyA1LjUgNiA0LjgzIDQuNSA0IDQuNXptMCAxMmMtLjgzIDAtMS41LjY4LTEuNSAxLjVzLjY4IDEuNSAxLjUgMS41IDEuNS0uNjggMS41LTEuNS0uNjctMS41LTEuNS0xLjV6TTcgMTloMTR2LTJIN3Yyem0wLTZoMTR2LTJIN3Yyem0wLTh2MmgxNFY1SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRMaXN0TnVtYmVyZWRSdGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE3aDJ2LjVoLTF2MWgxdi41aC0ydjFoM3YtNGgtM3Yxem0xLTloMVY0aC0ydjFoMXYzem0tMSAzaDEuOEwxOCAxMy4xdi45aDN2LTFoLTEuOGwxLjgtMi4xVjEwaC0zdjF6TTIgNWgxNHYySDJWNXptMCAxMmgxNHYySDJ2LTJ6bTAtNmgxNHYySDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRMaXN0TnVtYmVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTdoMnYuNUgzdjFoMXYuNUgydjFoM3YtNEgydjF6bTEtOWgxVjRIMnYxaDF2M3ptLTEgM2gxLjhMMiAxMy4xdi45aDN2LTFIMy4yTDUgMTAuOVYxMEgydjF6bTUtNnYyaDE0VjVIN3ptMCAxNGgxNHYtMkg3djJ6bTAtNmgxNHYtMkg3djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRQYWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNFYzYzAtLjU1LS40NS0xLTEtMUg1Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTFWNmgxdjRIOXYxMWMwIC41NS40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXYtOWg4VjRoLTN6bS0yIDJINlY0aDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRRdW90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNjIgMThoLTUuMjRsMi00SDEzVjZoOHY3LjI0TDE4LjYyIDE4em0tMi0yaC43NkwxOSAxMi43NlY4aC00djRoMy42MmwtMiA0em0tOCAySDMuMzhsMi00SDNWNmg4djcuMjRMOC42MiAxOHptLTItMmguNzZMOSAxMi43NlY4SDV2NGgzLjYybC0yIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRTaGFwZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDdWMWgtNnYySDdWMUgxdjZoMnYxMEgxdjZoNnYtMmgxMHYyaDZ2LTZoLTJWN2gyek0zIDNoMnYySDNWM3ptMiAxOEgzdi0yaDJ2MnptMTItMkg3di0ySDVWN2gyVjVoMTB2MmgydjEwaC0ydjJ6bTQgMmgtMnYtMmgydjJ6TTE5IDVWM2gydjJoLTJ6bS01LjI3IDloLTMuNDlsLS43MyAySDcuODlsMy40LTloMS40bDMuNDEgOWgtMS42M2wtLjc0LTJ6bS0zLjA0LTEuMjZoMi42MUwxMiA4LjkxbC0xLjMxIDMuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRTaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDR2M2g1djEyaDNWN2g1VjRIOXptLTYgOGgzdjdoM3YtN2gzVjlIM3YzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0U3RyaWtldGhyb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTloNHYtM2gtNHYzek01IDR2M2g1djNoNFY3aDVWNEg1ek0zIDE0aDE4di0ySDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdFRleHRkaXJlY3Rpb25MVG9SIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDR2NGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJtOC0ySDlDNi43OSAyIDUgMy43OSA1IDZzMS43OSA0IDQgNHY1aDJWNGgydjExaDJWNGgyVjJ6bTAgMTJ2M0g1djJoMTJ2M2w0LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0VGV4dGRpcmVjdGlvblJUb0wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDR2NGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJtOC0yaC04QzcuNzkgMiA2IDMuNzkgNiA2czEuNzkgNCA0IDR2NWgyVjRoMnYxMWgyVjRoMlYyek04IDE0bC00IDQgNCA0di0zaDEydi0ySDh2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRVbmRlcmxpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxN2MzLjMxIDAgNi0yLjY5IDYtNlYzaC0yLjV2OGMwIDEuOTMtMS41NyAzLjUtMy41IDMuNVM4LjUgMTIuOTMgOC41IDExVjNINnY4YzAgMy4zMSAyLjY5IDYgNiA2em0tNyAydjJoMTR2LTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZ1bmN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNEg2djJsNi41IDZMNiAxOHYyaDEydi0zaC03bDUtNS01LTVoN1Y0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNi45OWgzTDEyIDMgOCA2Ljk5aDN2MTAuMDJIOEwxMiAyMWw0LTMuOTloLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZXhhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMiAzSDYuOGwtNS4yIDkgNS4yIDloMTAuNGw1LjItOS01LjItOXptLTEuMTUgMTZoLTguMWwtNC4wNC03IDQuMDQtN2g4LjA5bDQuMDQgNy00LjAzIDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaWdobGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDE0IDMgM3Y1aDZ2LTVsMy0zVjlINnY1em0yLTNoOHYyLjE3bC0zIDNWMjBoLTJ2LTMuODNsLTMtM1YxMXptMy05aDJ2M2gtMnpNMy41MDIgNS44NzQgNC45MTYgNC40NmwyLjEyMiAyLjEyLTEuNDE0IDEuNDE1em0xMy40NTguNzA4IDIuMTIzLTIuMTIgMS40MTMgMS40MTYtMi4xMjMgMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvcml6b250YWxEaXN0cmlidXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMkgyVjJoMnYyMHpNMjIgMmgtMnYyMGgyVjJ6bS04LjUgNWgtM3YxMGgzVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3Jpem9udGFsUnVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDExaDE2djJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc2VydENoYXJ0T3V0bGluZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTdIN3YtN2gydjd6bTQgMGgtMlY3aDJ2MTB6bTQgMGgtMnYtNGgydjR6bTIgMkg1VjVoMTR2MTR6bTAtMTZINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zZXJ0Q2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNNyAxMGgydjdIN3ptNC0zaDJ2MTBoLTJ6bTQgNmgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0djEzLjE3TDE4LjgzIDE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGw0IDRWNGMwLTEuMS0uOS0yLTItMnptLTIgMTBINnYyaDEydi0yem0wLTNINnYyaDEyVjl6bTAtM0g2djJoMTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc2VydERyaXZlRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02ek02IDIwVjRoN3Y1aDV2MTFINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc2VydEVtb3RpY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSA2LjVjMi4zMyAwIDQuMzEtMS40NiA1LjExLTMuNUg2Ljg5Yy44IDIuMDQgMi43OCAzLjUgNS4xMSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRJbnZpdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOWgxNHYxMHptMC0xMkg1VjVoMTR2MnptLTIgNWgtNXY1aDV2LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjkgMTJjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFoNFY3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoNHYtMS45SDdjLTEuNzEgMC0zLjEtMS4zOS0zLjEtMy4xek04IDEzaDh2LTJIOHYyem05LTZoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjFzLTEuMzkgMy4xLTMuMSAzLjFoLTRWMTdoNGMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc2VydFBhZ2VCcmVhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDIwSDZ2LTNINHYzYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTNoLTJ2M3pNNiA0aDd2NWg1djJoMlY4bC02LTZINmMtMS4xIDAtMiAuOS0yIDJ2N2gyVjR6TTkgMTNoNnYySDl6TTE3IDEzaDZ2MmgtNnpNMSAxM2g2djJIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc2VydFBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNC44NiA4Ljg2LTMgMy44N0w5IDEzLjE0IDYgMTdoMTJsLTMuODYtNS4xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpbmVBeGlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNy40My0xLjQxLTEuNDEtNC4wMyA0LjUzTDkuNSA0IDIgMTEuNTFsMS41IDEuNSA2LjE0LTYuMTUgNS41OSA1LjE4LTEuNzMgMS45NS00LTRMMiAxNy41IDMuNSAxOWw2LTYuMDEgNCA0IDMuMTktMy41OSAzLjkgMy42MUwyMiAxNS42bC0zLjk4LTMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpbmVhclNjYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSA5LjVjLTEuMDMgMC0xLjkuNjItMi4yOSAxLjVoLTIuOTJjLS4zOS0uODgtMS4yNi0xLjUtMi4yOS0xLjVzLTEuOS42Mi0yLjI5IDEuNUg2Ljc5Yy0uMzktLjg4LTEuMjYtMS41LTIuMjktMS41YTIuNSAyLjUgMCAwIDAgMCA1YzEuMDMgMCAxLjktLjYyIDIuMjktMS41aDIuOTJjLjM5Ljg4IDEuMjYgMS41IDIuMjkgMS41czEuOS0uNjIgMi4yOS0xLjVoMi45MmMuMzkuODggMS4yNiAxLjUgMi4yOSAxLjVhMi41IDIuNSAwIDAgMCAwLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXJnaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2MThoMThWM0gzem0xNiAxNkg1VjVoMTR2MTR6TTExIDdoMnYyaC0yVjd6TTcgN2gydjJIN1Y3em04IDBoMnYyaC0yVjd6bS04IDRoMnYySDd2LTJ6bTQgMGgydjJoLTJ2LTJ6bTQgMGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZXJnZVR5cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIwLjQxIDE4LjQxIDE5IDE1IDE1LjU5IDEzLjU5IDE3IDE3IDIwLjQxek03LjUgOEgxMXY1LjU5TDUuNTkgMTkgNyAyMC40MWw2LTZWOGgzLjVMMTIgMy41IDcuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9kZUNvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE3LjE3IDE4LjgzIDE2SDRWNGgxNnYxMy4xN3pNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNFY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9kZUVkaXRPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1VjIxem0yLTIuOTIgOS4wNi05LjA2LjkyLjkyTDUuOTIgMTlINXYtLjkyek0xOC4zNyAzLjI5YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2RlRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNVYyMXptMi0yLjkyIDkuMDYtOS4wNi45Mi45Mkw1LjkyIDE5SDV2LS45MnpNMTguMzcgMy4yOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzYS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMDYgOS4wMi45Mi45Mkw1LjkyIDE5SDV2LS45Mmw5LjA2LTkuMDZNMTcuNjYgM2MtLjI1IDAtLjUxLjEtLjcuMjlsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzYS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0Yy0uMi0uMi0uNDUtLjI5LS43MS0uMjl6bS0zLjYgMy4xOUwzIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9uZXRpemF0aW9uT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0uMzEtOC44NmMtMS43Ny0uNDUtMi4zNC0uOTQtMi4zNC0xLjY3IDAtLjg0Ljc5LTEuNDMgMi4xLTEuNDMgMS4zOCAwIDEuOS42NiAxLjk0IDEuNjRoMS43MWMtLjA1LTEuMzQtLjg3LTIuNTctMi40OS0yLjk3VjVIMTAuOXYxLjY5Yy0xLjUxLjMyLTIuNzIgMS4zLTIuNzIgMi44MSAwIDEuNzkgMS40OSAyLjY5IDMuNjYgMy4yMSAxLjk1LjQ2IDIuMzQgMS4xNSAyLjM0IDEuODcgMCAuNTMtLjM5IDEuMzktMi4xIDEuMzktMS42IDAtMi4yMy0uNzItMi4zMi0xLjY0SDguMDRjLjEgMS43IDEuMzYgMi42NiAyLjg2IDIuOTdWMTloMi4zNHYtMS42N2MxLjUyLS4yOSAyLjcyLTEuMTYgMi43My0yLjc3LS4wMS0yLjItMS45LTIuOTYtMy42Ni0zLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9uZXlPZmZDc3JlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA2LjljMS43OCAwIDIuNDQuODUgMi41IDIuMWgyLjIxYy0uMDctMS43Mi0xLjEyLTMuMy0zLjIxLTMuODFWM2gtM3YyLjE2Yy0uMzkuMDgtLjc1LjIxLTEuMS4zNmwxLjUxIDEuNTFjLjMyLS4wOC42OS0uMTMgMS4wOS0uMTN6TTUuNDcgMy45MiA0LjA2IDUuMzMgNy41IDguNzdjMCAyLjA4IDEuNTYgMy4yMiAzLjkxIDMuOTFsMy41MSAzLjUxYy0uMzQuNDktMS4wNS45MS0yLjQyLjkxLTIuMDYgMC0yLjg3LS45Mi0yLjk4LTIuMWgtMi4yYy4xMiAyLjE5IDEuNzYgMy40MiAzLjY4IDMuODNWMjFoM3YtMi4xNWMuOTYtLjE4IDEuODMtLjU1IDIuNDYtMS4xMmwyLjIyIDIuMjIgMS40MS0xLjQxTDUuNDcgMy45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbmV5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDYuOWMxLjc4IDAgMi40NC44NSAyLjUgMi4xaDIuMjFjLS4wNy0xLjcyLTEuMTItMy4zLTMuMjEtMy44MVYzaC0zdjIuMTZjLS4zOS4wOC0uNzUuMjEtMS4xLjM2bDEuNTEgMS41MWMuMzItLjA4LjY5LS4xMyAxLjA5LS4xM3pNNS40NyAzLjkyIDQuMDYgNS4zMyA3LjUgOC43N2MwIDIuMDggMS41NiAzLjIyIDMuOTEgMy45MWwzLjUxIDMuNTFjLS4zNC40OS0xLjA1LjkxLTIuNDIuOTEtMi4wNiAwLTIuODctLjkyLTIuOTgtMi4xaC0yLjJjLjEyIDIuMTkgMS43NiAzLjQyIDMuNjggMy44M1YyMWgzdi0yLjE1Yy45Ni0uMTggMS44My0uNTUgMi40Ni0xLjEybDIuMjIgMi4yMiAxLjQxLTEuNDFMNS40NyAzLjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW92ZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDExYzAgMi40NSAxLjc2IDQuNDcgNC4wOCA0LjkxbC0xLjQ5LTEuNDlMNyAxM2w0IDQuMDFMNyAyMWwtMS40MS0xLjQxIDEuNTgtMS41OHYtLjA2QTcuMDA3IDcuMDA3IDAgMCAxIDEgMTFjMC0zLjg3IDMuMTMtNyA3LTdoM3YySDhjLTIuNzYgMC01IDIuMjQtNSA1ek0yMiAxMVY0aC05djdoOXptLTItMmgtNVY2aDV2M3pNMTMgMTNoOXY3aC05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW92ZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxM2MwLTIuNDUgMS43Ni00LjQ3IDQuMDgtNC45MWwtMS40OSAxLjVMNyAxMWw0LTQuMDFMNyAzIDUuNTkgNC40MWwxLjU4IDEuNTh2LjA2QTcuMDA3IDcuMDA3IDAgMCAwIDEgMTNjMCAzLjg3IDMuMTMgNyA3IDdoM3YtMkg4Yy0yLjc2IDAtNS0yLjI0LTUtNXpNMTMgMTN2N2g5di03aC05em03IDVoLTV2LTNoNXYzek0xMyA0aDl2N2gtOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU11bHRpbGluZUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA2LjkyLTEuNDEtMS40MS0yLjg1IDMuMjFDMTUuNjggNi40IDEyLjgzIDUgOS42MSA1IDYuNzIgNSA0LjA3IDYuMTYgMiA4bDEuNDIgMS40MkM1LjEyIDcuOTMgNy4yNyA3IDkuNjEgN2MyLjc0IDAgNS4wOSAxLjI2IDYuNzcgMy4yNGwtMi44OCAzLjI0LTQtNEwyIDE2Ljk5bDEuNSAxLjUgNi02LjAxIDQgNCA0LjA1LTQuNTVjLjc1IDEuMzUgMS4yNSAyLjkgMS40NCA0LjU1SDIxYy0uMjItMi4zLS45NS00LjM5LTIuMDQtNi4xNEwyMiA2LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExLjAxIDMgMTF2MmgxOHpNMyAxNmgxMnYySDN6TTIxIDZIM3YyLjAxTDIxIDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOdW1iZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNSAxMCAuNS0yaC00bDEtNGgtMmwtMSA0aC00bDEtNGgtMkw5IDhINWwtLjUgMmg0bC0xIDRoLTRMMyAxNmg0bC0xIDRoMmwxLTRoNGwtMSA0aDJsMS00aDRsLjUtMmgtNGwxLTRoNHptLTcgNGgtNGwxLTRoNGwtMSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFkZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ6bTE2IDE0SDVWNWgxNHYxNHpNMTEgN2gydjJoLTJWN3pNNyA3aDJ2Mkg3Vjd6bTggMGgydjJoLTJWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlbnRhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNjMgOS43OCAxNi41NiAxOUg3LjQ0TDQuMzcgOS43OCAxMiA0LjQ0bDcuNjMgNS4zNHpNMiA5bDQgMTJoMTJsNC0xMi0xMC03TDIgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpZUNoYXJ0T3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTEgMi4wN2MzLjYxLjQ1IDYuNDggMy4zMyA2LjkzIDYuOTNIMTNWNC4wN3pNNCAxMmMwLTQuMDYgMy4wNy03LjQ0IDctNy45M3YxNS44N2MtMy45My0uNS03LTMuODgtNy03Ljk0em05IDcuOTNWMTNoNi45M0E4LjAwMiA4LjAwMiAwIDAgMSAxMyAxOS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpZUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem03LjkzIDlIMTNWNC4wN2MzLjYxLjQ1IDYuNDggMy4zMiA2LjkzIDYuOTN6TTQgMTJjMC00LjA3IDMuMDYtNy40NCA3LTcuOTN2MTUuODZjLTMuOTQtLjQ5LTctMy44Ni03LTcuOTN6bTkgNy45M1YxM2g2LjkzQTguMDAyIDguMDAyIDAgMCAxIDEzIDE5LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUG9seWxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNnYxLjI2bC02LTN2LTMuMTdMMTEuNyA4SDE2VjJoLTZ2NC45TDcuMyAxMEgzdjZoNWw3IDMuNVYyMmg2di02aC02ek0xMiA0aDJ2MmgtMlY0ek03IDE0SDV2LTJoMnYyem0xMiA2aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvc3RBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxOS4yMkg1VjdoN1Y1SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2Ny4yMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMmgtMnYzaC0zYy4wMS4wMSAwIDIgMCAyaDN2Mi45OWMuMDEuMDEgMiAwIDIgMFY3aDNWNWgtM1Yyek03IDloOHYySDd6TTcgMTJ2Mmg4di0yaC0zek03IDE1aDh2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHVibGlzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0aDE0djJINXptMCAxMGg0djZoNnYtNmg0bC03LTctNyA3em04LTJ2NmgtMnYtNkg5LjgzTDEyIDkuODMgMTQuMTcgMTJIMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVRdWVyeVN0YXRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuODggMTguNDdjLjQ0LS43LjctMS41MS43LTIuMzkgMC0yLjQ5LTIuMDEtNC41LTQuNS00LjVzLTQuNSAyLjAxLTQuNSA0LjUgMi4wMSA0LjUgNC40OSA0LjVjLjg4IDAgMS43LS4yNiAyLjM5LS43TDIxLjU4IDIzIDIzIDIxLjU4bC0zLjEyLTMuMTF6bS0zLjguMTFhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6bS0uMzYtOC41Yy0uNzQuMDItMS40NS4xOC0yLjEuNDVsLS41NS0uODMtMy44IDYuMTgtMy4wMS0zLjUyLTMuNjMgNS44MUwxIDE3bDUtOCAzIDMuNUwxMyA2bDIuNzIgNC4wOHptMi41OS41Yy0uNjQtLjI4LTEuMzMtLjQ1LTIuMDUtLjQ5TDIxLjM4IDIgMjMgMy4xOGwtNC42OSA3LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWN0YW5nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDR2MTZoMjBWNEgyem0xOCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY2F0dGVyUGxvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTQtMmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTUuNiAxNy42Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHptMC02Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjaGVtYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDl2MmgtM1Y5SDguNVY3SDExVjFINHY2aDIuNXYySDR2NmgyLjV2Mkg0djZoN3YtNkg4LjV2LTJIMTF2LTJoM3YyaDdWOWgtN3pNNiAzaDN2Mkg2VjN6bTMgMThINnYtMmgzdjJ6bTAtOEg2di0yaDN2MnptMTAgMGgtM3YtMmgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY29yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINWw0LTQgNCA0IDYtNnY2em0wLTguNS02IDYtNC00LTQgNFY1aDE0djUuNXpNMTMuNSA5VjZIMTJ2NmgxLjV6bTMuNyAzLTItMyAyLTNoLTEuN2wtMiAzIDIgM3pNMTEgMTAuNUg4LjV2LS43NUgxMVY2SDd2MS41aDIuNXYuNzVIN1YxMmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2hhcGVMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMWMyLjc2IDAgNS0yLjI0IDUtNVM4Ljc2IDEgNiAxIDEgMy4yNCAxIDZzMi4yNCA1IDUgNXptMC04YzEuNjUgMCAzIDEuMzUgMyAzUzcuNjUgOSA2IDkgMyA3LjY1IDMgNnMxLjM1LTMgMy0zek0yMSAxNGgtNWMtMS4xIDAtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDVjMS4xIDAgMi0uOSAyLTJ2LTVjMC0xLjEtLjktMi0yLTJ6bTAgN2gtNXYtNWg1djV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcxIDcuN2MuNC4xOS44My4zIDEuMjkuMyAxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzYzAgLjQ2LjExLjg5LjMgMS4yOUw2LjI5IDE2LjNjLS40LS4xOS0uODMtLjMtMS4yOS0uMy0xLjY1IDAtMyAxLjM1LTMgM3MxLjM1IDMgMyAzIDMtMS4zNSAzLTNjMC0uNDYtLjExLS44OS0uMy0xLjI5TDE3LjcxIDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3J0VGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOWgxNnYySDRWOXptMCA0aDEwdjJINHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3dDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy41IDE4LjQ5IDYtNi4wMSA0IDRMMjIgNi45MmwtMS40MS0xLjQxLTcuMDkgNy45Ny00LTRMMiAxNi45OWwxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BhY2VCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDl2NEg2VjlINHY2aDE2VjloLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2MThoMThWM0gzem0xNiAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFja2VkTGluZUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMiAxOS45OSA3LjUtNy41MSA0IDQgNy4wOS03Ljk3TDIyIDkuOTJsLTguNSA5LjU2LTQtNC02IDYuMDEtMS41LTEuNXptMS41LTQuNSA2LTYuMDEgNCA0TDIyIDMuOTJsLTEuNDEtMS40MS03LjA5IDcuOTctNC00TDIgMTMuOTlsMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0cmlrZXRocm91Z2hTIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4yNCA4Ljc1Yy0uMjYtLjQ4LS4zOS0xLjAzLS4zOS0xLjY3IDAtLjYxLjEzLTEuMTYuNC0xLjY3LjI2LS41LjYzLS45MyAxLjExLTEuMjlhNS43MyA1LjczIDAgMCAxIDEuNy0uODNjLjY2LS4xOSAxLjM5LS4yOSAyLjE4LS4yOS44MSAwIDEuNTQuMTEgMi4yMS4zNC42Ni4yMiAxLjIzLjU0IDEuNjkuOTQuNDcuNC44My44OCAxLjA4IDEuNDNzLjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzcy0uNTMuMjEtLjcyLjM2Yy0uMTkuMTYtLjM0LjM0LS40NC41NS0uMS4yMS0uMTUuNDMtLjE1LjY2IDAgLjQ4LjI1Ljg4Ljc0IDEuMjEuMzguMjUuNzcuNDggMS40MS43SDcuMzljLS4wNS0uMDgtLjExLS4xNy0uMTUtLjI1ek0yMSAxMnYtMkgzdjJoOS42MmMuMTguMDcuNC4xNC41NS4yLjM3LjE3LjY2LjM0Ljg3LjUxcy4zNS4zNi40My41N2MuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzVzLS4yNS0uNzYtLjI1LTEuMjFINi40YzAgLjU1LjA4IDEuMTMuMjQgMS41OHMuMzcuODUuNjUgMS4yMWMuMjguMzUuNi42Ni45OC45Mi4zNy4yNi43OC40OCAxLjIyLjY1LjQ0LjE3LjkuMyAxLjM4LjM5LjQ4LjA4Ljk2LjEzIDEuNDQuMTMuOCAwIDEuNTMtLjA5IDIuMTgtLjI4czEuMjEtLjQ1IDEuNjctLjc5Yy40Ni0uMzQuODItLjc3IDEuMDctMS4yN3MuMzgtMS4wNy4zOC0xLjcxYzAtLjYtLjEtMS4xNC0uMzEtMS42MS0uMDUtLjExLS4xMS0uMjMtLjE3LS4zM0gyMVYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YnNjcmlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE4aC0ydjFoM3YxaC00di0yYzAtLjU1LjQ1LTEgMS0xaDJ2LTFoLTN2LTFoM2MuNTUgMCAxIC40NSAxIDF2MWMwIC41NS0uNDUgMS0xIDF6TTUuODggMThoMi42NmwzLjQtNS40MmguMTJsMy40IDUuNDJoMi42NmwtNC42NS03LjI3TDE3LjgxIDRoLTIuNjhsLTMuMDcgNC45OWgtLjEyTDguODUgNEg2LjE5bDQuMzIgNi43M0w1Ljg4IDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VwZXJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA3aC0ydjFoM3YxaC00VjdjMC0uNTUuNDUtMSAxLTFoMlY1aC0zVjRoM2MuNTUgMCAxIC40NSAxIDF2MWMwIC41NS0uNDUgMS0xIDF6TTUuODggMjBoMi42NmwzLjQtNS40MmguMTJsMy40IDUuNDJoMi42NmwtNC42NS03LjI3TDE3LjgxIDZoLTIuNjhsLTMuMDcgNC45OWgtLjEyTDguODUgNkg2LjE5bDQuMzIgNi43M0w1Ljg4IDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFibGVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMnYzSDVWNWgxNXptLTUgMTRoLTV2LTloNXY5ek01IDEwaDN2OUg1di05em0xMiA5di05aDN2OWgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxlUm93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDJ2M0g1VjVoMTR6bTAgNXY0SDV2LTRoMTR6TTUgMTl2LTNoMTR2M0g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dERlY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk5IDE5aDIuNDJsMS4yNy0zLjU4aDUuNjVMMTEuNTkgMTloMi40Mkw4Ljc1IDVoLTIuNUwuOTkgMTl6bTQuNDItNS42MUw3LjQ0IDcuNmguMTJsMi4wMyA1Ljc5SDUuNDF6TTIzIDExdjJoLTh2LTJoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRGaWVsZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgNHYzaDV2MTJoM1Y3aDVWNGgtMTN6bTE5IDVoLTl2M2gzdjdoM3YtN2gzVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0SW5jcmVhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uOTkgMTloMi40MmwxLjI3LTMuNThoNS42NUwxMS41OSAxOWgyLjQyTDguNzUgNWgtMi41TC45OSAxOXptNC40Mi01LjYxTDcuNDQgNy42aC4xMmwyLjAzIDUuNzlINS40MXpNMjAgMTFoM3YyaC0zdjNoLTJ2LTNoLTN2LTJoM1Y4aDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRpdGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDR2M2g1LjV2MTJoM1Y3SDE5VjRINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVR5cGVTcGVjaW1lbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjE5IDEyLjJoMy42M2wuOCAyLjNoMS41NmwtMy4zOC05aC0xLjZsLTMuMzggOWgxLjU2bC44MS0yLjN6bTEuNzctNS4wM2guMDhsMS4zMSAzLjcyaC0yLjY5bDEuMy0zLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVydGljYWxBbGlnbkJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTNoLTNWM2gtMnYxMEg4bDQgNCA0LTR6TTQgMTl2MmgxNnYtMkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVydGljYWxBbGlnbkNlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxOWgzdjRoMnYtNGgzbC00LTQtNCA0em04LTE0aC0zVjFoLTJ2NEg4bDQgNCA0LTR6TTQgMTF2MmgxNnYtMkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVydGljYWxBbGlnblRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMWgzdjEwaDJWMTFoM2wtNC00LTQgNHpNNCAzdjJoMTZWM0g0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVydGljYWxEaXN0cmlidXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMnYySDJWMmgyMHpNNyAxMC41djNoMTB2LTNIN3pNMiAyMHYyaDIwdi0ySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXcmFwVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOWg2di0ySDR2MnpNMjAgNUg0djJoMTZWNXptLTMgNkg0djJoMTMuMjVjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAySDE1di0ybC0zIDMgMyAzdi0yaDJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcHByb3ZhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTZ2NmgxNnYtNmMwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnptMTQgMkg2di0yaDEydjJ6TTEyIDJDOS4yNCAyIDcgNC4yNCA3IDdsNSA3IDUtN2MwLTIuNzYtMi4yNC01LTUtNXptMCA5TDkgN2MwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzbC0zIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdHRhY2hFbWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMgNiA4IDUgOC01djNoMlY0YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMSAxNmMwIDEuMS45IDIgMiAyaDEwdi0ySDNWNnptMTYtMi04IDUtOC01aDE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNHY0YzAgMS4xLS45IDItMiAycy0yLS45LTItMnYtNC41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjE4aDJ2LTQuNWEyLjUgMi41IDAgMCAwLTUgMFYxOGMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00di00aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0YWNobWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxNkg3Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aDEyLjVhMi41IDIuNSAwIDAgMSAwIDVIOWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg5LjVWOS41SDlhMi41IDIuNSAwIDAgMCAwIDVoMTAuNWMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNEg3Yy0zLjA0IDAtNS41IDIuNDYtNS41IDUuNXMyLjQ2IDUuNSA1LjUgNS41aDExLjVWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG91ZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTQuMjktOS44MWE0LjM3MyA0LjM3MyAwIDAgMC04LjE3LTEuMTZBMy40ODMgMy40ODMgMCAwIDAgNSAxMi41QzUgMTQuNDMgNi41NyAxNiA4LjUgMTZoNy41OGMxLjYxIDAgMi45Mi0xLjMxIDIuOTItMi45MiAwLTEuNTQtMS4yLTIuNzktMi43MS0yLjg5ek0xNiAxNEg4LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNVM3LjY3IDExIDguNSAxMWguOWwuNDktMS4wNWEyLjM3NyAyLjM3NyAwIDAgMSA0LjQ0LjYzbC4yOCAxLjQySDE2Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvdWREb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNEM5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00IDAtMi4wNSAxLjUzLTMuNzYgMy41Ni0zLjk3bDEuMDctLjExLjUtLjk1QTUuNDY5IDUuNDY5IDAgMCAxIDEyIDZjMi42MiAwIDQuODggMS44NiA1LjM5IDQuNDNsLjMgMS41IDEuNTMuMTFBMi45OCAyLjk4IDAgMCAxIDIyIDE1YzAgMS42NS0xLjM1IDMtMyAzem0tOS0zLjgyLTIuMDktMi4wOUw2LjUgMTMuNSAxMCAxN2w2LjAxLTYuMDEtMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvdWREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ2OSA1LjQ2OSAwIDAgMSAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExQTIuOTggMi45OCAwIDAgMSAyMiAxNWMwIDEuNjUtMS4zNSAzLTMgM3ptLTUuNTUtOGgtMi45djNIOGw0IDQgNC00aC0yLjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvdWRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDE1YzAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2QTcuNDkgNy40OSAwIDAgMCAxMiA0Yy0xLjMzIDAtMi41Ny4zNi0zLjY1Ljk3bDEuNDkgMS40OUMxMC41MSA2LjE3IDExLjIzIDYgMTIgNmMzLjA0IDAgNS41IDIuNDYgNS41IDUuNXYuNUgxOWEyLjk5NiAyLjk5NiAwIDAgMSAxLjc5IDUuNGwxLjQxIDEuNDFjMS4wOS0uOTIgMS44LTIuMjcgMS44LTMuODF6TTQuNDEgMy44NiAzIDUuMjdsMi43NyAyLjc3aC0uNDJBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxMS43M2wyIDIgMS40MS0xLjQxTDQuNDEgMy44NnpNNiAxOGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGgxLjczbDggOEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvdWRRdWV1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aC43MUM3LjM3IDcuNjkgOS40OCA2IDEyIDZjMy4wNCAwIDUuNSAyLjQ2IDUuNSA1LjV2LjVIMTljMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG91ZFN5bmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS41IDE0Ljk4Yy0uMDIgMC0uMDMgMC0uMDUuMDFBMy40OSAzLjQ5IDAgMCAwIDE4IDEyYy0xLjQgMC0yLjYuODMtMy4xNiAyLjAyQTIuOTg4IDIuOTg4IDAgMCAwIDEyIDE3YzAgMS42NiAxLjM0IDMgMyAzbDYuNS0uMDJhMi41IDIuNSAwIDAgMCAwLTV6bS4wMSAzLjAySDE1Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDEuMjV2LS4yNWMwLS45Ny43OC0xLjc1IDEuNzUtMS43NXMxLjc1Ljc4IDEuNzUgMS43NVYxN2gxLjc2Yy4yOCAwIC41LjIyLjUuNS0uMDEuMjctLjIzLjUtLjUuNXpNMTAgNC4yNnYyLjA5QzcuNjcgNy4xOCA2IDkuMzkgNiAxMmMwIDEuNzcuNzggMy4zNCAyIDQuNDRWMTRoMnY2SDR2LTJoMi43M0E3Ljk0MiA3Ljk0MiAwIDAgMSA0IDEyYzAtMy43MyAyLjU1LTYuODUgNi03Ljc0ek0yMCA2aC0yLjczYTcuOTggNy45OCAwIDAgMSAyLjY2IDVoLTIuMDJjLS4yMy0xLjM2LS45My0yLjU1LTEuOTEtMy40NFYxMGgtMlY0aDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNEM5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00IDAtMi4wNSAxLjUzLTMuNzYgMy41Ni0zLjk3bDEuMDctLjExLjUtLjk1QTUuNDY5IDUuNDY5IDAgMCAxIDEyIDZjMi42MiAwIDQuODggMS44NiA1LjM5IDQuNDNsLjMgMS41IDEuNTMuMTFBMi45OCAyLjk4IDAgMCAxIDIyIDE1YzAgMS42NS0xLjM1IDMtMyAzek04IDEzaDIuNTV2M2gyLjl2LTNIMTZsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExQTIuOTggMi45OCAwIDAgMSAyMiAxNWMwIDEuNjUtMS4zNSAzLTMgM0g2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ2OSA1LjQ2OSAwIDAgMSAxMiA2bTAtMkM5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZBNy40OSA3LjQ5IDAgMCAwIDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcmVhdGVOZXdGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bTAgMTJINFY2aDUuMTdsMiAySDIwdjEwem0tOC00aDJ2Mmgydi0yaDJ2LTJoLTJ2LTJoLTJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpZmZlcmVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyM0g0Yy0xLjEgMC0yLS45LTItMlY3aDJ2MTRoMTR2MnpNMTQuNSA3VjVoLTJ2MmgtMnYyaDJ2MmgyVjloMlY3aC0yem0yIDZoLTZ2Mmg2di0yek0xNSAxSDhjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNiAxN2MwIDEuMS44OSAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY3bC02LTZ6bTQgMTZIOFYzaDYuMTdMMTkgNy44M1YxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvd25sb2FkRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxOGgxNHYySDV2LTJ6bTQuNi0yLjdMNSAxMC43bDItMS45IDIuNiAyLjZMMTcgNGwyIDItOS40IDkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvd25sb2FkRm9yT2ZmbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0yLjU5LTExLjQxTDE2IDEwbC00IDQtNC00IDEuNDEtMS40MUwxMSAxMC4xN1Y2aDJ2NC4xN2wxLjU5LTEuNTh6TTE3IDE3SDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5aC00VjNIOXY2SDVsNyA3IDctN3ptLTggMlY1aDJ2NmgxLjE3TDEyIDEzLjE3IDkuODMgMTFIMTF6bS02IDdoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG93bmxvYWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zMiA0LjI2QTkuOTQ5IDkuOTQ5IDAgMCAwIDEzIDIuMDV2Mi4wMmMxLjQ2LjE4IDIuNzkuNzYgMy45IDEuNjJsMS40Mi0xLjQzek0xOS45MyAxMWgyLjAyYy0uMi0yLjAxLTEtMy44NC0yLjIxLTUuMzJMMTguMzEgNy4xYTcuOTQxIDcuOTQxIDAgMCAxIDEuNjIgMy45em0tMS42MiA1LjkgMS40MyAxLjQzYTkuOTgxIDkuOTgxIDAgMCAwIDIuMjEtNS4zMmgtMi4wMmE3Ljk0NSA3Ljk0NSAwIDAgMS0xLjYyIDMuODl6TTEzIDE5LjkzdjIuMDJjMi4wMS0uMiAzLjg0LTEgNS4zMi0yLjIxbC0xLjQzLTEuNDNjLTEuMS44Ni0yLjQzIDEuNDQtMy44OSAxLjYyem0yLjU5LTkuMzRMMTMgMTMuMTdWN2gtMnY2LjE3bC0yLjU5LTIuNTlMNyAxMmw1IDUgNS01LTEuNDEtMS40MXpNMTEgMTkuOTN2Mi4wMmMtNS4wNS0uNS05LTQuNzYtOS05Ljk1czMuOTUtOS40NSA5LTkuOTV2Mi4wMkM3LjA1IDQuNTYgNCA3LjkyIDQgMTJzMy4wNSA3LjQ0IDcgNy45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyaXZlRmlsZU1vdmVSdGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHptLTYuNTktMi40MUwxMiAxN2wtNC00IDQtNCAxLjQxIDEuNDFMMTEuODMgMTJIMTZ2MmgtNC4xN2wxLjU4IDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEcml2ZUZpbGVNb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wxLjQxIDEuNDEuNTkuNTlIMjB2MTB6bS03Ljg0LTZIOHYyaDQuMTZsLTEuNTkgMS41OUwxMS45OSAxNyAxNiAxMy4wMSAxMS45OSA5bC0xLjQxIDEuNDFMMTIuMTYgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEcml2ZUZpbGVSZW5hbWVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgMTYtNCA0aDEwdi00ek0xMi4wNiA3LjE5IDMgMTYuMjVWMjBoMy43NWw5LjA2LTkuMDYtMy43NS0zLjc1ek01LjkyIDE4SDV2LS45Mmw3LjA2LTcuMDYuOTIuOTJMNS45MiAxOHpNMTguNzEgOC4wNGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGExLjAwMSAxLjAwMSAwIDAgMC0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJpdmVGb2xkZXJVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6TTkuNDEgMTQuNDIgMTEgMTIuODRWMTdoMnYtNC4xNmwxLjU5IDEuNTlMMTYgMTMuMDEgMTIuMDEgOSA4IDEzLjAxbDEuNDEgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbGVEb3dubG9hZERvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4xMyA1LjQxIDE4LjcyIDRsLTkuMTkgOS4xOS00LjI1LTQuMjQtMS40MSAxLjQxIDUuNjYgNS42NnpNNSAxOGgxNHYySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlRG93bmxvYWRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNS4xN1YxNWgydjIuMTdsLTItMnptLTIuNTktMi41OEwxNyAxMWwtMS40MS0xLjQxTDE0IDExLjE3bDEuNDEgMS40MnpNMTMgMTAuMTdWNGgtMnY0LjE3bDIgMnptOC4xOSAxMS4wMi0xLjc4LTEuNzgtMTYuNi0xNi42LTEuNDIgMS40MSA2LjE5IDYuMTlMNyAxMWw1IDUgLjU5LS41OUwxNS4xNyAxOEg2di0zSDR2M2MwIDEuMS45IDIgMiAyaDExLjE3bDIuNjEgMi42MSAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNXYzSDZ2LTNINHYzYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTNoLTJ6bS0xLTQtMS40MS0xLjQxTDEzIDEyLjE3VjRoLTJ2OC4xN0w4LjQxIDkuNTkgNyAxMWw1IDUgNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMkg2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoOGw2IDZ2NmgtMlY5aC01VjRINnYxNmg5djJ6bTQtLjM0di0yLjI0bDIuOTUgMi45NSAxLjQxLTEuNDFMMjAuNDEgMThoMi4yNHYtMkgxN3Y1LjY2aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTV2M0g2di0zSDR2M2MwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi0zaC0yek03IDlsMS40MSAxLjQxTDExIDcuODNWMTZoMlY3LjgzbDIuNTkgMi41OEwxNyA5bC01LTUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9sZGVyQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTloMTd2MkgzYy0xLjEgMC0yLS45LTItMlY2aDJ2MTN6TTIzIDZ2OWMwIDEuMS0uOSAyLTIgMkg3Yy0xLjEgMC0yLS45LTItMmwuMDEtMTFjMC0xLjEuODktMiAxLjk5LTJoNWwyIDJoN2MxLjEgMCAyIC45IDIgMnpNNyAxNWgxNFY2aC03LjgzbC0yLTJIN3YxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGRlckRlbGV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTBWOWgtMnYxSDEydjEuNWgxdjRjMCAuODMuNjcgMS41IDEuNSAxLjVoMmMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTRoMVYxMGgtMi41em0wIDUuNWgtMnYtNGgydjR6TTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bTAgMTJINFY2aDUuMTdsMiAySDIwdjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9sZGVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDcuMTdsNCA0SDIwdjkuMTdsMS43NiAxLjc2Yy4xNS0uMjguMjQtLjU5LjI0LS45M1Y4YzAtMS4xLS45LTItMi0yek0yLjEgMi4xLjY5IDMuNTFsMS41NiAxLjU2Yy0uMTUuMjgtLjI0LjU5LS4yNC45M0wyIDE4YzAgMS4xLjkgMiAyIDJoMTMuMTdsMy4zMSAzLjMxIDEuNDEtMS40MUwyLjEgMi4xek00IDE4VjYuODNMMTUuMTcgMThINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWOGgxNnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGRlclNoYXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY2aDUuMTdsMiAySDIwdjEwem0tNS01YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptLTQgNGg4di0xYzAtMS4zMy0yLjY3LTItNC0ycy00IC42Ny00IDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGRlclppcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tNCAxMGgydi0yaC0ydi0yaDJ2LTJoLTJWOGg0djEwaC00di0yem0wIDBoLTJ2Mkg0VjZoNS4xN2wyIDJIMTR2MmgydjJoLTJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkuMTcgNiAyIDJIMjB2MTBINFY2aDUuMTdNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRPdmVybGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDN2Mkg1VjNoMTR6bS03IDRjLTMuODcgMC03IDMuMTMtNyA3czMuMTMgNyA3IDcgNy0zLjEzIDctNy0zLjEzLTctNy03em0wIDExLjVjLTIuNDkgMC00LjUtMi4wMS00LjUtNC41UzkuNTEgOS41IDEyIDkuNXM0LjUgMi4wMSA0LjUgNC41LTIuMDEgNC41LTQuNSA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmlkVmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM3Y4aDhWM0gzem02IDZINVY1aDR2NHptLTYgNHY4aDh2LThIM3ptNiA2SDV2LTRoNHY0em00LTE2djhoOFYzaC04em02IDZoLTRWNWg0djR6bS02IDR2OGg4di04aC04em02IDZoLTR2LTRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMy0xLjY3IDEuNjdMMTguNjcgMyAxNyA0LjY3IDE1LjMzIDNsLTEuNjYgMS42N0wxMiAzbC0xLjY3IDEuNjdMOC42NyAzIDcgNC42NyA1LjMzIDMgMy42NyA0LjY3IDIgM3YxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjN6TTExIDE5SDR2LTZoN3Y2em05IDBoLTd2LTJoN3Yyem0wLTRoLTd2LTJoN3Yyem0wLTRINFY4aDE2djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXF1ZXN0UXVvdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02ek02IDIwVjRoN3Y0aDV2MTJINnptNS0xaDJ2LTFoMWMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xaC0zdi0xaDR2LTJoLTJWOWgtMnYxaC0xYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWgzdjFIOXYyaDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJ1bGVGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjgzIDE2IDUgMTMuMTdsMS40MS0xLjQxIDEuNDEgMS40MSAzLjU0LTMuNTQgMS40MSAxLjQxTDcuODMgMTZ6bTkuNTgtM0wxOSAxNC41OSAxNy41OSAxNiAxNiAxNC40MSAxNC40MSAxNiAxMyAxNC41OSAxNC41OSAxMyAxMyAxMS40MSAxNC40MSAxMCAxNiAxMS41OSAxNy41OSAxMCAxOSAxMS40MSAxNy40MSAxM3pNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY2aDUuMTdsMiAySDIwdjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU25pcHBldEZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHptLTIuNS01Ljg4djMuMzhoLTN2LTVoMS4zOGwxLjYyIDEuNjJ6TTEzIDl2OGg2di01LjVMMTYuNSA5SDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dFNuaXBwZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4xNyA1IDE5IDkuODNWMTlINVY1aDkuMTdtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOS44M2MwLS41My0uMjEtMS4wNC0uNTktMS40MWwtNC44My00LjgzYy0uMzctLjM4LS44OC0uNTktMS40MS0uNTl6TTcgMTVoMTB2Mkg3di0yem0wLTRoMTB2Mkg3di0yem0wLTRoN3YySDdWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvcGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2Ljc3Yy42OCAwIDEuMjMtLjU2IDEuMjMtMS4yM1Y4YzAtMS4xLS45LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHptLTItNkg2di0yaDEydjJ6bS00IDRINnYtMmg4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVcGxvYWRGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXpNOCAxNS4wMWwxLjQxIDEuNDFMMTEgMTQuODRWMTloMnYtNC4xNmwxLjU5IDEuNTlMMTYgMTUuMDEgMTIuMDEgMTEgOCAxNS4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmg2di02aDRsLTctNy03IDdoNHY2em0zLTEwLjE3TDE0LjE3IDhIMTN2NmgtMlY4SDkuODNMMTIgNS44M3pNNSAxOGgxNHYySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXb3Jrc3BhY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNWMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJtMC0yYy0yLjIgMC00IDEuOC00IDRzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6bTYtOGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJtMC0yQzkuOCAzIDggNC44IDggN3MxLjggNCA0IDQgNC0xLjggNC00LTEuOC00LTQtNHptNiAxMmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJtMC0yYy0yLjIgMC00IDEuOC00IDRzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGZTY2FubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoLTFWNEg2djhINWMtMS42NiAwLTMgMS4zNC0zIDN2NWgyMHYtNWMwLTEuNjYtMS4zNC0zLTMtM3pNOCA2aDh2Nkg4VjZ6bTEyIDEySDR2LTNjMC0uNTUuNDUtMSAxLTFoMTRjLjU1IDAgMSAuNDUgMSAxdjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJvd3Nlck5vdFN1cHBvcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZ2MTAuNWwxLjk1IDEuOTVjLjAzLS4xNS4wNS0uMy4wNS0uNDVWNmMwLTEuMS0uOS0yLTItMkg2LjVsMiAySDE5ek0zLjIyIDMuMzIgMS45NSA0LjU5IDMgNS42NFYxOGMwIDEuMS45IDIgMiAyaDEyLjM2bDIuMDYgMi4wNiAxLjI3LTEuMjdMMy4yMiAzLjMyek0xNSAxOEg1VjcuNjRMMTUuMzYgMThIMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcm93c2VyVXBkYXRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEzdjNjMCAxLjEtLjkgMi0yIDJoLTNsMSAxdjJINnYtMmwxLTFINGMtMS4xIDAtMi0uOS0yLTJWNWMwLTEuMS45LTIgMi0yaDh2Mkg0djExaDE2di0zaDJ6bS03IDItNS01IDEuNDEtMS40MUwxNCAxMS4xN1YzaDJ2OC4xN2wyLjU5LTIuNThMMjAgMTBsLTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhc3RDb25uZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTh2M2gzYzAtMS42Ni0xLjM0LTMtMy0zem0wLTR2MmMyLjc2IDAgNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0wLTR2MmE5IDkgMCAwIDEgOSA5aDJjMC02LjA4LTQuOTMtMTEtMTEtMTF6bTIwLTdIM2MtMS4xIDAtMiAuOS0yIDJ2M2gyVjVoMTh2MTRoLTd2Mmg3YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTUgN3YyaDEydjZoLTN2Mmg1Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXN0Rm9yRWR1Y2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek0xIDE4djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC00djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMC00djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0xMCAxLjA5djJMMTQuNSAxNWwzLjUtMS45MXYtMkwxNC41IDEzIDExIDExLjA5ek0xNC41IDYgOSA5bDUuNSAzTDIwIDlsLTUuNS0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYzaDJWNWgxOHYxNGgtN3YyaDdjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNMSAxOHYzaDNjMC0xLjY2LTEuMzQtMy0zLTN6bTAtNHYyYzIuNzYgMCA1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTAtNHYyYTkgOSAwIDAgMSA5IDloMmMwLTYuMDgtNC45My0xMS0xMS0xMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbXB1dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGMxLjEgMCAxLjk5LS45IDEuOTktMkwyMiA2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJIMHYyaDI0di0yaC00ek00IDZoMTZ2MTBINFY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29ubmVjdGVkVHYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNHYyaDh2LTJoNGMxLjEgMCAxLjk5LS45IDEuOTktMkwyMiA1YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNWgxNnYxMnpNNSAxNHYyaDJjMC0xLjExLS44OS0yLTItMnptMC0zdjEuNDNjMS45NyAwIDMuNTcgMS42IDMuNTcgMy41N0gxMGMwLTIuNzYtMi4yNC01LTUtNXptMC0zdjEuNDVjMy42MSAwIDYuNTUgMi45MyA2LjU1IDYuNTVIMTNjMC00LjQyLTMuNTktOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXNrdG9wTWFjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAySDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoN2wtMiAzdjFoOHYtMWwtMi0zaDdjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxMkgzVjRoMTh2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXNrdG9wV2luZG93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDd2Mkg4djJoOHYtMmgtMnYtMmg3YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIM1Y0aDE4djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2ZWxvcGVyQm9hcmRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjgzIDVIMTh2MTAuMTdMMTkuODMgMTdIMjJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDJWN2gtMlY1YzAtMS4xLS45LTItMi0ySDUuODNsMiAyek0xMiA5LjE3VjdoNHYzaC0zLjE3TDEyIDkuMTd6TTkuODMgN0gxMXYxLjE3TDkuODMgN3ptNCA0SDE2djIuMTdMMTMuODMgMTF6TTE4IDIxYy4wNiAwIC4xMSAwIC4xNi0uMDFsMi4zMiAyLjMyIDEuNDEtMS40MUwyLjEgMi4xLjY5IDMuNTFsMS4zMiAxLjMyQzIgNC44OSAyIDQuOTQgMiA1djE0YzAgMS4xLjkgMiAyIDJoMTR6TTQgMTlWNi44M2wyIDJWMTJoMy4xN2wxIDFINnY0aDV2LTMuMTdsMSAxVjE3aDIuMTdsMiAySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXZlbG9wZXJCb2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOVY3aC0yVjVjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ2LTJoLTJWOWgyem0tNCAxMEg0VjVoMTR2MTR6TTYgMTNoNXY0SDZ2LTR6bTYtNmg0djNoLTRWN3pNNiA3aDV2NUg2Vjd6bTYgNGg0djZoLTR2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXZpY2VIdWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDE2LTQtNFY4LjgyQzE0LjE2IDguNCAxNSA3LjMgMTUgNmMwLTEuNjYtMS4zNC0zLTMtM1M5IDQuMzQgOSA2YzAgMS4zLjg0IDIuNCAyIDIuODJWMTJsLTQgNEgzdjVoNXYtMy4wNWw0LTQuMiA0IDQuMlYyMWg1di01aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2aWNlVW5rbm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMThIN1Y1aDEwdjE0ek0xMiA2LjcyYy0xLjk2IDAtMy41IDEuNTItMy41IDMuNDdoMS43NWMwLS45My44Mi0xLjc1IDEuNzUtMS43NXMxLjc1LjgyIDEuNzUgMS43NWMwIDEuNzUtMi42MyAxLjU3LTIuNjMgNC40NWgxLjc2YzAtMS45NiAyLjYyLTIuMTkgMi42Mi00LjQ1IDAtMS45Ni0xLjU0LTMuNDctMy41LTMuNDd6TTExIDE2aDJ2MmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURldmljZXNPdGhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA2aDE4VjRIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg0di0ySDNWNnptMTAgNkg5djEuNzhjLS42MS41NS0xIDEuMzMtMSAyLjIyIDAgLjg5LjM5IDEuNjcgMSAyLjIyVjIwaDR2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIycy0uMzktMS42Ny0xLTIuMjJWMTJ6bS0yIDUuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTIyIDhoLTZjLS41IDAtMSAuNS0xIDF2MTBjMCAuNS41IDEgMSAxaDZjLjUgMCAxLS41IDEtMVY5YzAtLjUtLjUtMS0xLTF6bS0xIDEwaC00di04aDR2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjNoOHYtMkg4djJ6bTgtMjEuOTlMOCAxYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMTVIOFY1aDh2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFYXJidWRzQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDdoLTFWNmgtMnYxaC0xYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMVY4YzAtLjU1LS40NS0xLTEtMXptLTEgOWgtMlY5aDJ2N3ptLTYtNi42MkMxNCA3LjUxIDEyLjQ5IDYgMTAuNjIgNlM3LjI1IDcuNTEgNy4yNSA5LjM4djUuMjVjMCAxLjA0LS44NCAxLjg4LTEuODggMS44OHMtMS44Ny0uODUtMS44Ny0xLjg5di00LjdjLjE2LjA1LjMzLjA4LjUuMDggMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAydjYuNjJDMiAxNi40OSAzLjUxIDE4IDUuMzggMThzMy4zOC0xLjUxIDMuMzgtMy4zOFY5LjM4YzAtMS4wNC44NC0xLjg4IDEuODgtMS44OHMxLjg4Ljg0IDEuODggMS44OHY0LjdjLS4xOC0uMDUtLjM1LS4wOC0uNTItLjA4LTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yVjkuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFYXJidWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgM2MtMi43NiAwLTUgMi4yNC01IDV2OGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtM1Y5aC44M0M3LjQ0IDkgOC44OSA3LjgyIDkgNi4yMUEzIDMgMCAwIDAgNi4yIDNDNC40NCAyLjg5IDMgNC40MiAzIDYuMTlWMTZjMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNVY4YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDN2N2gtLjgzYy0xLjYxIDAtMy4wNiAxLjE4LTMuMTcgMi43OUEzIDMgMCAwIDAgMTcuOCAyMWMxLjc2LjEyIDMuMi0xLjQyIDMuMi0zLjE4VjhjMC0yLjc2LTIuMjQtNS01LTV6TTUgNmMwLS41NS40NS0xIDEtMXMxIC40NSAxIDEtLjQ1IDEtMSAxSDVWNnptMTQgMTJjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xaDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdhbWVwYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDR2Mi42N2wtMSAxLTEtMVY0aDJtNyA3djJoLTIuNjdsLTEtMSAxLTFIMjBNNi42NyAxMWwxIDEtMSAxSDR2LTJoMi42N00xMiAxNi4zM2wxIDFWMjBoLTJ2LTIuNjdsMS0xTTE1IDJIOXY1LjVsMyAzIDMtM1Yyem03IDdoLTUuNWwtMyAzIDMgM0gyMlY5ek03LjUgOUgydjZoNS41bDMtMy0zLTN6bTQuNSA0LjUtMyAzVjIyaDZ2LTUuNWwtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhZHBob25lc0JhdHRlcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA3aC0xVjZoLTJ2MWgtMWMtLjU1IDAtMSAuNDUtMSAxdjljMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTFWOGMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTJWOWgydjd6TTggNmMtMy4zMSAwLTYgMi42OS02IDZ2NGMwIDEuMS45IDIgMiAyaDJ2LTVIMy41di0xYzAtMi40OCAyLjAyLTQuNSA0LjUtNC41czQuNSAyLjAyIDQuNSA0LjV2MUgxMHY1aDJjMS4xIDAgMi0uOSAyLTJ2LTRjMC0zLjMxLTIuNjktNi02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFkcGhvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM2E5IDkgMCAwIDAtOSA5djdjMCAxLjEuOSAyIDIgMmg0di04SDV2LTFjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgN3YxaC00djhoNGMxLjEgMCAyLS45IDItMnYtN2E5IDkgMCAwIDAtOS05ek03IDE1djRINXYtNGgyem0xMiA0aC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYWRzZXRNaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE0djRoLTJ2LTRoMk03IDE0djRINmMtLjU1IDAtMS0uNDUtMS0xdi0zaDJtNS0xM2E5IDkgMCAwIDAtOSA5djdjMCAxLjY2IDEuMzQgMyAzIDNoM3YtOEg1di0yYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDd2MmgtNHY4aDR2MWgtN3YyaDZjMS42NiAwIDMtMS4zNCAzLTNWMTBhOSA5IDAgMCAwLTktOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYWRzZXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzMuODcgMCA3IDMuMTMgNyA3djFoLTR2LjE3TDE2LjgzIDE0SDE5djIuMTdsMiAyVjExYTkgOSAwIDAgMC05LTljLTIuMDIgMC0zLjg4LjY3LTUuMzggMS44bDEuNDMgMS40M0E2Ljg3OCA2Ljg3OCAwIDAgMSAxMiA0ek0yLjEgMi4xLjY5IDMuNTFsMy4zMyAzLjMzQTguOTggOC45OCAwIDAgMCAzIDExdjdjMCAxLjEuOSAyIDIgMmg0di04SDV2LTFjMC0uOTQuMTktMS44My41Mi0yLjY1TDE1IDE3LjgzVjIwaDIuMTdsMSAxSDEydjJoN2MuMzQgMCAuNjUtLjA5LjkzLS4yNGwuNTUuNTUgMS40MS0xLjQxTDIuMSAyLjF6TTcgMTR2NEg1di00aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNHYzYzAgLjU1LS40NSAxLTEgMWgtMXYtNGgyTTcgMTR2NEg2Yy0uNTUgMC0xLS40NS0xLTF2LTNoMm01LTEzYTkgOSAwIDAgMC05IDl2N2MwIDEuNjYgMS4zNCAzIDMgM2gzdi04SDV2LTJjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgN3YyaC00djhoM2MxLjY2IDAgMy0xLjM0IDMtM3YtN2E5IDkgMCAwIDAtOS05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG9tZU1heCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVINUMyLjc5IDUgMSA2Ljc5IDEgOXY1YzAgMi4yMSAxLjc5IDQgNCA0aDJ2MWgxMHYtMWgyYzIuMjEgMCA0LTEuNzkgNC00VjljMC0yLjIxLTEuNzktNC00LTR6bTIgOWMwIDEuMS0uOSAyLTIgMkg1Yy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvbWVNaW5pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNUM0LjE5IDUgMiA5LjQ4IDIgMTJjMCAzLjg2IDMuMTMgNyA2Ljk5IDdoNi4wMkMxNy43IDE5IDIyIDE2LjkyIDIyIDEyYzAgMCAwLTctMTAtN3ptMCAyYzcuNjQgMCA3Ljk5IDQuNTEgOCA1SDRjMC0uMi4wOS01IDgtNXptMi44NiAxMEg5LjE0Yy0yLjEgMC0zLjkyLTEuMjQtNC43MS0zaDE1LjE1Yy0uOCAxLjc2LTIuNjIgMy00LjcyIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDRIM2MtMS4xIDAtMiAuOS0yIDJ2MTNjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE1SDNWNmgxOHYxM3pNOSA4aDJ2Mkg5Vjh6TTUgOGgydjJINVY4em0zIDhoOHYxSDh2LTF6bTUtOGgydjJoLTJWOHptLTQgNGgydjJIOXYtMnptLTQgMGgydjJINXYtMnptOCAwaDJ2MmgtMnYtMnptNC00aDJ2MmgtMlY4em0wIDRoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgOC41OSAxMiAxMy4xN2w0LjU5LTQuNThMMTggMTBsLTYgNi02LTYgMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjQxIDE2LjU5IDEwLjgzIDEybDQuNTgtNC41OUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41OSAxNi41OSAxMy4xNyAxMiA4LjU5IDcuNDEgMTAgNmw2IDYtNiA2LTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40MSAxNS40MSAxMiAxMC44M2w0LjU5IDQuNThMMTggMTRsLTYtNi02IDYgMS40MSAxLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRCYWNrc3BhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExSDYuODNsMy41OC0zLjU5TDkgNmwtNiA2IDYgNiAxLjQxLTEuNDFMNi44MyAxM0gyMXYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQ2Fwc2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDguNDEgMTYuNTkgMTMgMTggMTEuNTlsLTYtNi02IDZMNy40MSAxMyAxMiA4LjQxek02IDE4aDEydi0ySDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQ29tbWFuZEtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgM0MxNS41NyAzIDE0IDQuNTcgMTQgNi41VjhoLTRWNi41QzEwIDQuNTcgOC40MyAzIDYuNSAzUzMgNC41NyAzIDYuNSA0LjU3IDEwIDYuNSAxMEg4djRINi41QzQuNTcgMTQgMyAxNS41NyAzIDE3LjVTNC41NyAyMSA2LjUgMjFzMy41LTEuNTcgMy41LTMuNVYxNmg0djEuNWMwIDEuOTMgMS41NyAzLjUgMy41IDMuNXMzLjUtMS41NyAzLjUtMy41LTEuNTctMy41LTMuNS0zLjVIMTZ2LTRoMS41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzE5LjQzIDMgMTcuNSAzek0xNiA4VjYuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVMxOC4zMyA4IDE3LjUgOEgxNnpNNi41IDhDNS42NyA4IDUgNy4zMyA1IDYuNVM1LjY3IDUgNi41IDUgOCA1LjY3IDggNi41VjhINi41em0zLjUgNnYtNGg0djRoLTR6bTcuNSA1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVWMTZoMS41Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjV6bS0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyAxNiA2LjUgMTZIOHYxLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRDb250cm9sS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNSAxMiAxLjQxIDEuNDFMMTIgNy44M2w1LjU5IDUuNThMMTkgMTJsLTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkRG91YmxlQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNi40MSAxNi41OSA1IDEyIDkuNTggNy40MSA1IDYgNi40MWw2IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDEzLTEuNDEtMS40MUwxMiAxNi4xN2wtNC41OS00LjU4TDYgMTNsNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmREb3VibGVBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41OSAxOCAxOSAxNi41OSAxNC40MiAxMiAxOSA3LjQxIDE3LjU5IDZsLTYgNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEgMTggMS40MS0xLjQxTDcuODMgMTJsNC41OC00LjU5TDExIDZsLTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkRG91YmxlQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNDEgNiA1IDcuNDEgOS41OCAxMiA1IDE2LjU5IDYuNDEgMThsNi02elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA2LTEuNDEgMS40MUwxNi4xNyAxMmwtNC41OCA0LjU5TDEzIDE4bDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkRG91YmxlQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTcuNTkgNy40MSAxOSAxMiAxNC40MiAxNi41OSAxOSAxOCAxNy41OWwtNi02elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDExIDEuNDEgMS40MUwxMiA3LjgzbDQuNTkgNC41OEwxOCAxMWwtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRIaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxNWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY1aDE2djEwem0tOS05aDJ2MmgtMnptMCAzaDJ2MmgtMnpNOCA2aDJ2Mkg4em0wIDNoMnYySDh6TTUgOWgydjJINXptMC0zaDJ2Mkg1em0zIDZoOHYySDh6bTYtM2gydjJoLTJ6bTAtM2gydjJoLTJ6bTMgM2gydjJoLTJ6bTAtM2gydjJoLTJ6bS01IDE3IDQtNEg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRPcHRpb25LZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA1aDZ2MmgtNnpNOSA1SDN2Mmg0Ljg1bDYuOTIgMTJIMjF2LTJoLTUuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZFJldHVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN3Y0SDUuODNsMy41OC0zLjU5TDggNmwtNiA2IDYgNiAxLjQxLTEuNDFMNS44MyAxM0gyMVY3aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRUYWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjU5IDcuNDEgMTUuMTcgMTFIMXYyaDE0LjE3bC0zLjU5IDMuNTlMMTMgMThsNi02LTYtNi0xLjQxIDEuNDF6TTIwIDZ2MTJoMlY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRWb2ljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTVjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNMMTUgNmMwLTEuNjYtMS4zNC0zLTMtM1M5IDQuMzQgOSA2djZjMCAxLjY2IDEuMzQgMyAzIDN6bS0xLjItOS4xYzAtLjY2LjU0LTEuMiAxLjItMS4yczEuMi41NCAxLjIgMS4ybC0uMDEgNi4yYzAgLjY2LS41MyAxLjItMS4xOSAxLjJzLTEuMi0uNTQtMS4yLTEuMlY1Ljl6bTYuNSA2LjFjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDE1IDYuNyAxMkg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIyaDJ2LTMuMjhjMy4yOC0uNDggNi0zLjMgNi02LjcyaC0xLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN3YxMEg0VjdoMTZtMC0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxN2MwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS05IDNoMnYyaC0yem0wIDNoMnYyaC0yek04IDhoMnYySDh6bTAgM2gydjJIOHptLTMgMGgydjJINXptMC0zaDJ2Mkg1em0zIDZoOHYySDh6bTYtM2gydjJoLTJ6bTAtM2gydjJoLTJ6bTMgM2gydjJoLTJ6bTAtM2gydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYXB0b3BDaHJvbWVib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOFYzSDJ2MTVIMHYyaDI0di0yaC0yem0tOCAwaC00di0xaDR2MXptNi0zSDRWNWgxNnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhcHRvcE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAySDBjMCAxLjEuOSAyIDIgMmgyMGMxLjEgMCAyLS45IDItMmgtNHpNNCA1aDE2djExSDRWNXptOCAxNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFwdG9wV2luZG93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTh2LTFjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAydjFIMHYyaDI0di0yaC00ek00IDVoMTZ2MTBINFY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFwdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAySDB2MmgyNHYtMmgtNHpNNCA2aDE2djEwSDRWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lbW9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOUg5djZoNlY5em0tMiA0aC0ydi0yaDJ2MnptOC0yVjloLTJWN2MwLTEuMS0uOS0yLTItMmgtMlYzaC0ydjJoLTJWM0g5djJIN2MtMS4xIDAtMiAuOS0yIDJ2MkgzdjJoMnYySDN2MmgydjJjMCAxLjEuOSAyIDIgMmgydjJoMnYtMmgydjJoMnYtMmgyYzEuMSAwIDItLjkgMi0ydi0yaDJ2LTJoLTJ2LTJoMnptLTQgNkg3VjdoMTB2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25pdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDNsLTEgMXYyaDEydi0ybC0xLTFoM2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEzSDRWNWgxNnYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA5Yy0uMDQtNC4zOS0zLjYtNy45My04LTcuOTNTNC4wNCA0LjYxIDQgOXY2YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LThWOXptLTIgMGgtNVYzLjE2YzIuODEuNDcgNC45NiAyLjkgNSA1Ljg0em0tNy01Ljg0VjlINmE2LjAwNSA2LjAwNSAwIDAgMSA1LTUuODR6TTE4IDE1YzAgMy4zMS0yLjY5IDYtNiA2cy02LTIuNjktNi02di00aDEydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZUFuZHJvaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFIOEM2LjM0IDEgNSAyLjM0IDUgNHYxNmMwIDEuNjYgMS4zNCAzIDMgM2g4YzEuNjYgMCAzLTEuMzQgMy0zVjRjMC0xLjY2LTEuMzQtMy0zLTN6bTEgMTdIN1Y0aDEwdjE0em0tMyAzaC00di0xaDR2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lSXBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDFoLThBMi41IDIuNSAwIDAgMCA1IDMuNXYxN0EyLjUgMi41IDAgMCAwIDcuNSAyM2g4YTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtMTdBMi41IDIuNSAwIDAgMCAxNS41IDF6bS00IDIxYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNC41LTRIN1Y0aDl2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZWxpbmtPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDZWNEg3LjM5bDIgMnptMiAxM1Y5YzAtLjU1LS40NS0xLTEtMWgtNmMtLjU1IDAtMSAuNDUtMSAxdjMuNjFsMiAyVjEwaDR2N2gtMS42MWwyLjkzIDIuOTNjLjM5LS4xMy42OC0uNDkuNjgtLjkzek0yLjA2IDEuNTEuNjUgMi45MmwxLjgyIDEuODJDMi4xOCA1LjA4IDIgNS41MiAyIDZ2MTFIMHYzaDE3LjczbDIuMzUgMi4zNSAxLjQxLTEuNDFMMi4wNiAxLjUxek00IDE3VjYuMjdMMTQuNzMgMTdINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lbGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2aDE4VjRINGMtMS4xIDAtMiAuOS0yIDJ2MTFIMHYzaDE0di0zSDRWNnptMTkgMmgtNmMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xem0tMSA5aC00di03aDR2N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvaW50T2ZTYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMkg3Yy0xLjEgMC0yIC45LTIgMnYyYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCA0SDdWNGgxMHYyem0zIDE2SDRjLTEuMSAwLTItLjktMi0ydi0xaDIwdjFjMCAxLjEtLjkgMi0yIDJ6bS0xLjQ3LTExLjgxQTIuMDA4IDIuMDA4IDAgMCAwIDE2LjcgOUg3LjNjLS43OSAwLTEuNTEuNDctMS44MyAxLjE5TDIgMThoMjBsLTMuNDctNy44MXpNOS41IDE2aC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTAtMmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMyA0aC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTAtMmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMyA0aC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTAtMmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvd2VySW5wdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgOXYyaDE5VjlIMnptMCA2aDV2LTJIMnYyem03IDBoNXYtMkg5djJ6bTcgMGg1di0yaC01djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3V0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDQuMmMxLjUgMCAzIC42IDQuMiAxLjdsLjgtLjhDMTkuNiAzLjcgMTcuOCAzIDE2IDNzLTMuNi43LTUgMi4xbC44LjhDMTMgNC44IDE0LjUgNC4yIDE2IDQuMnptLTMuMyAyLjUuOC44Yy43LS43IDEuNi0xIDIuNS0xczEuOC4zIDIuNSAxbC44LS44Yy0uOS0uOS0yLjEtMS40LTMuMy0xLjRzLTIuNC41LTMuMyAxLjR6TTE5IDEzaC0yVjloLTJ2NEg1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTRjMC0xLjEtLjktMi0yLTJ6bTAgNkg1di00aDE0djR6TTYgMTZoMnYySDZ6bTMuNSAwaDJ2MmgtMnptMy41IDBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2Nhbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOCAxMC43IDQuMiA1bC0uNyAxLjlMMTcuNiAxMkg1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTUuNWMwLS44LS41LTEuNi0xLjItMS44ek0xOSAxOEg1di00aDE0djR6TTYgMTVoMnYySDZ6bTQgMGg4djJoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZWN1cml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bTAgMTAuOTloN2MtLjUzIDQuMTItMy4yOCA3Ljc5LTcgOC45NFYxMkg1VjYuM2w3LTMuMTF2OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2ltQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0IDh2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDJ2MTZINlY4LjgzTDEwLjgzIDRIMTh6TTcgMTdoMnYySDd6bTggMGgydjJoLTJ6bS04LTZoMnY0SDd6bTQgNGgydjRoLTJ6bTAtNGgydjJoLTJ6bTQgMGgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbWFydERpc3BsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgNy41djlsNy00LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0LjAxSDRWNS45OWgxNnYxMi4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNtYXJ0U2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAxMS4yNUgxNHYxLjVoLTEuNXpNMTUgMTEuMjVoMS41djEuNUgxNXpNMTAgMTEuMjVoMS41djEuNUgxMHpNNy41IDExLjI1SDl2MS41SDcuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNUgzYy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6TTQgMTdIM1Y3aDF2MTB6bTE0IDBINlY3aDEydjEwem0zIDBoLTFWN2gxdjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU21hcnRUb3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA5VjdjMC0xLjEtLjktMi0yLTJoLTNjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNUg2Yy0xLjEgMC0yIC45LTIgMnYyYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzdjRjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtNGMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtM3ptLTIgMTBINlY3aDEydjEyem0tOS02Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTOC4xNyAxMCA5IDEwczEuNS42NyAxLjUgMS41UzkuODMgMTMgOSAxM3ptNy41LTEuNWMwIC44My0uNjcgMS41LTEuNSAxLjVzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNXpNOCAxNWg4djJIOHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNtYXJ0cGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE5SDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwZWFrZXJHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMiAxSDkuOEM4LjgxIDEgOCAxLjgxIDggMi44djE0LjRjMCAuOTkuODEgMS43OSAxLjggMS43OWw4LjQuMDFjLjk5IDAgMS44LS44MSAxLjgtMS44VjIuOGMwLS45OS0uODEtMS44LTEuOC0xLjh6TTE4IDE3bC04LS4wMVYzaDh2MTR6bS00LTljMS4xIDAgMi0uODkgMi0ycy0uOS0yLTItMi0yIC44OS0yIDIgLjkgMiAyIDJ6bTAgOGMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxNS45MyA5IDE0IDlzLTMuNSAxLjU3LTMuNSAzLjVTMTIuMDcgMTYgMTQgMTZ6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNVMxNC44MyAxNCAxNCAxNHMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41ek02IDVINHYxNmEyIDIgMCAwIDAgMiAyaDEwdi0ySDZWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwZWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN2MtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAxLjk5IDIgMS45OUwxNyAyMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek03IDIwVjRoMTB2MTZIN3ptNS0xMWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTJhMiAyIDAgMSAwIDAgNHptMCAyYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNTkgNy40MSAxOC4xNyAxMUg2djJoMTIuMTdsLTMuNTkgMy41OUwxNiAxOGw2LTYtNi02LTEuNDEgMS40MXpNMiA2djEyaDJWNkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFibGV0QW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMEg2QzQuMzQgMCAzIDEuMzQgMyAzdjE4YzAgMS42NiAxLjM0IDMgMyAzaDEyYzEuNjYgMCAzLTEuMzQgMy0zVjNjMC0xLjY2LTEuMzQtMy0zLTN6bS00IDIyaC00di0xaDR2MXptNS4yNS0zSDQuNzVWM2gxNC41djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFibGV0TWFjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41IDBoLTE0QTIuNSAyLjUgMCAwIDAgMiAyLjV2MTlBMi41IDIuNSAwIDAgMCA0LjUgMjRoMTRhMi41IDIuNSAwIDAgMCAyLjUtMi41di0xOUEyLjUgMi41IDAgMCAwIDE4LjUgMHptLTcgMjNjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em03LjUtNEg0VjNoMTV2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDRIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAxLjk5LS45IDEuOTktMkwyMyA2YzAtMS4xLS45LTItMi0yem0tMiAxNEg1VjZoMTR2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb3lzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC43NSAxMC4wOCAxNy40IDYuMDVBMi45NzggMi45NzggMCAwIDAgMTQuNTYgNEg5LjQ0QzguMTUgNCA3IDQuODIgNi42IDYuMDVMNS44MSA4LjQgNC40MSA3bC4yOS0uMjlBLjk5Ni45OTYgMCAxIDAgMy4yOSA1LjNsLTIgMkEuOTk2Ljk5NiAwIDEgMCAyLjcgOC43MWwuMy0uMyAxLjc5IDEuNzlDMy4xOCAxMC43MiAyIDEyLjIyIDIgMTRjMCAxLjQ5LjgzIDIuNzggMi4wNSAzLjQ3QTIuOTkxIDIuOTkxIDAgMCAwIDcgMjBjMS4zIDAgMi40LS44NCAyLjgyLTJoNC4zN2MuNDEgMS4xNiAxLjUxIDIgMi44MiAyIDEuNDkgMCAyLjczLTEuMSAyLjk1LTIuNTNDMjEuMTcgMTYuNzggMjIgMTUuNDkgMjIgMTRjMC0xLjk1LTEuNC0zLjU3LTMuMjUtMy45MnpNMTMgNmgxLjU2YTEgMSAwIDAgMSAuOTUuNjhsMS4xIDMuMzJIMTNWNnptLTQuNTEuNjhBMSAxIDAgMCAxIDkuNDQgNkgxMXY0SDcuNDFsLS4wMi0uMDIgMS4xLTMuM3pNNyAxOGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0xMCAwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTIuNDktMi42OEEzLjAyOCAzLjAyOCAwIDAgMCAxNyAxNGMtMS4zIDAtMi40Ljg0LTIuODIgMkg5LjgyQzkuNCAxNC44NCA4LjMgMTQgNyAxNGMtMS4wMyAwLTEuOTUuNTMtMi40OSAxLjMyQzQuMiAxNC45NyA0IDE0LjUxIDQgMTRjMC0xLjEuOS0yIDItMmgxMmMxLjEgMCAyIC45IDIgMiAwIC41MS0uMi45Ny0uNTEgMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNXYyaDh2LTJoNWMxLjEgMCAxLjk5LS45IDEuOTktMkwyMyA1YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNWgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvZ2FtZUFzc2V0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSA5Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41em0tNi42Ny0xSDIwdjhoLTEuMTdsMS44NyAxLjg3Yy43NS0uMjkgMS4zLTEuMDIgMS4zLTEuODdWOGMwLTEuMS0uOS0yLTItMkg4LjgzbDIgMnptOC45NSAxNC42MUwxNS4xNyAxOEg0Yy0xLjEgMC0yLS45LTItMlY4YzAtLjg1LjU1LTEuNTggMS4zLTEuODdMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyek0xMy4xNyAxNmwtMy0zSDl2Mkg3di0ySDV2LTJoMlY5LjgzTDUuMTcgOEg0djhoOS4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvZ2FtZUFzc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2SDNjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEwSDNWOGgxOHY4ek02IDE1aDJ2LTJoMnYtMkg4VjlINnYySDR2MmgyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCIxMy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOC41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXRjaE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjMi43NiAwIDUgMi4yNCA1IDUgMCAuNjQtLjEzIDEuMjUtLjM1IDEuODJsMS41IDEuNWE2Ljk2MyA2Ljk2MyAwIDAgMC0xLjc5LTguNzlMMTUgMkg5bC0uOTYgMy4yMSAyLjE0IDIuMTRDMTAuNzUgNy4xMyAxMS4zNiA3IDEyIDd6bS0xLjUxLTNoMy4wMmwuMzggMS4yN2MtLjU1LS4xNi0xLjk3LS41MS0zLjc4IDBMMTAuNDkgNHpNMi44MSAyLjgxIDEuMzkgNC4yMmw0LjQ2IDQuNDZhNi45NjMgNi45NjMgMCAwIDAgMS43OSA4Ljc5TDkgMjJoNmwuOTYtMy4yMSAzLjgyIDMuODIgMS40MS0xLjQxTDIuODEgMi44MXpNMTMuNTEgMjBoLTMuMDJsLS4zOC0xLjI3Yy41NS4xNSAxLjk3LjUxIDMuNzggMEwxMy41MSAyMHpNMTIgMTdjLTIuNzYgMC01LTIuMjQtNS01IDAtLjY0LjEzLTEuMjUuMzUtMS44Mmw2LjQ3IDYuNDdjLS41Ny4yMi0xLjE4LjM1LTEuODIuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMzEgMiAuNDEgMi40OEMxMy44NyA0LjE3IDEyLjk2IDQgMTIgNGMtLjk1IDAtMS44Ny4xNy0yLjcxLjQ3TDkuNyAyaDQuNjFtLjQxIDE3LjUyTDE0LjMxIDIySDkuN2wtLjQxLTIuNDdjLjg0LjMgMS43Ni40NyAyLjcxLjQ3Ljk2IDAgMS44Ny0uMTcgMi43Mi0uNDhNMTYgMEg4bC0uOTUgNS43M0M1LjE5IDcuMTkgNCA5LjQ1IDQgMTJzMS4xOSA0LjgxIDMuMDUgNi4yN0w4IDI0aDhsLjk2LTUuNzNDMTguODEgMTYuODEgMjAgMTQuNTQgMjAgMTJzLTEuMTktNC44MS0zLjA0LTYuMjdMMTYgMHptLTQgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXV0b01vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wMyAzLjU2Yy0xLjY3LTEuMzktMy43NC0yLjMtNi4wMy0yLjUxdjIuMDFjMS43My4xOSAzLjMxLjg4IDQuNjEgMS45MmwxLjQyLTEuNDJ6TTExIDMuMDZWMS4wNWMtMi4yOS4yLTQuMzYgMS4xMi02LjAzIDIuNTFsMS40MiAxLjQyQTguOTI4IDguOTI4IDAgMCAxIDExIDMuMDZ6TTQuOTggNi4zOSAzLjU2IDQuOTdDMi4xNyA2LjY0IDEuMjYgOC43MSAxLjA1IDExaDIuMDFjLjE5LTEuNzMuODgtMy4zMSAxLjkyLTQuNjF6TTIwLjk0IDExaDIuMDFjLS4yMS0yLjI5LTEuMTItNC4zNi0yLjUxLTYuMDNsLTEuNDIgMS40MkE4LjkyOCA4LjkyOCAwIDAgMSAyMC45NCAxMXpNNyAxMmwzLjQ0IDEuNTZMMTIgMTdsMS41Ni0zLjQ0TDE3IDEybC0zLjQ0LTEuNTZMMTIgN2wtMS41NiAzLjQ0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMWE4Ljk2IDguOTYgMCAwIDEtNy40Ni00SDd2LTJIMXY2aDJ2LTIuN2MxLjk5IDIuODQgNS4yNyA0LjcgOSA0LjcgNC44NyAwIDktMy4xNyAxMC40NC03LjU2bC0xLjk2LS40NUMxOS4yNSAxOC40OCAxNS45MiAyMSAxMiAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsaW5kc0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMTEuMjVjMCAuOTcuNzggMS43NSAxLjc1IDEuNzVzMS43NS0uNzggMS43NS0xLjc1SDIydi0yaC0yem0tMi04aC0yVjloMnYyem0tNCAwSDZWOWg4djJ6bTAgMnYySDZ2LTJoOHptMiAwaDJ2MmgtMnYtMnptMi02aC0yVjVoMnYyem0tNC0ydjJINlY1aDh6TTYgMTl2LTJoOHYySDZ6bTEwIDB2LTJoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmxpbmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnpNMTYgOWgydjJoLTJWOXptLTIgMkg2VjloOHYyem00LTRoLTJWNWgydjJ6bS00LTJ2Mkg2VjVoOHpNNiAxOXYtNmg4djEuODJBMS43NDYgMS43NDYgMCAwIDAgMTUgMThhMS43NDYgMS43NDYgMCAwIDAgMS0zLjE4VjEzaDJ2Nkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJvYWRjYXN0T25Ib21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmMwLTEuMS0uOS0yLTItMkg0djJoMTZ2Mi41OWMuNzMuMjkgMS40LjY5IDIgMS4xN1Y2ek04IDlIM2MtLjUgMC0xIC41LTEgMXY5YzAgLjUuNSAxIDEgMWg1Yy41IDAgMS0uNSAxLTF2LTljMC0uNS0uNS0xLTEtMXptLTEgOUg0di03aDN2N3pNMTcuNzUgMTYuOTdjLjMtLjIzLjUtLjU3LjUtLjk3YTEuMjUgMS4yNSAwIDAgMC0yLjUgMGMwIC40LjIuNzUuNS45N1YyMmgxLjV2LTUuMDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEzLjVhMi41IDIuNSAwIDAgMSAyLjUgMi41YzAgLjY5LS4yOCAxLjMxLS43MyAxLjc2bDEuMDYgMS4wNkMyMC41NSAxOC4xIDIxIDE3LjEgMjEgMTZjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDRjMCAxLjEuNDUgMi4xIDEuMTcgMi44M2wxLjA2LTEuMDZBMi41IDIuNSAwIDAgMSAxNyAxMy41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA5LjVhNi41IDYuNSAwIDAgMC02LjUgNi41YzAgMS43OS43MyAzLjQyIDEuOSA0LjZsMS4wNi0xLjA2QzEyLjU2IDE4LjYzIDEyIDE3LjM4IDEyIDE2YzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVjMCAxLjM3LS41NiAyLjYyLTEuNDYgMy41MmwxLjA3IDEuMDZBNi41IDYuNSAwIDAgMCAxNyA5LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcm9hZGNhc3RPblBlcnNvbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOXYtOWw2LTQuNSA0LjA4IDMuMDZjLjgxLS4zMiAxLjY5LS41MSAyLjYxLS41NEwxMCAzIDIgOXYxMmg4Ljc2Yy0uNDgtLjYtLjg4LTEuMjctMS4xNy0ySDR6TTE3IDE0Ljc1Yy0uNjkgMC0xLjI1LjU2LTEuMjUgMS4yNSAwIC40LjIuNzUuNS45N1YyMmgxLjV2LTUuMDNjLjMtLjIzLjUtLjU3LjUtLjk3IDAtLjY5LS41Ni0xLjI1LTEuMjUtMS4yNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJjLTIuMjEgMC00IDEuNzktNCA0IDAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsMS4wNi0xLjA2QTIuNSAyLjUgMCAxIDEgMTkuNSAxNmMwIC42OS0uMjggMS4zMS0uNzMgMS43NmwxLjA2IDEuMDZDMjAuNTUgMTguMSAyMSAxNy4xIDIxIDE2YzAtMi4yMS0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA5LjVhNi41IDYuNSAwIDAgMC02LjUgNi41YzAgMS43OS43MyAzLjQyIDEuOSA0LjZsMS4wNi0xLjA2QzEyLjU2IDE4LjYzIDEyIDE3LjM4IDEyIDE2YzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVjMCAxLjM3LS41NiAyLjYyLTEuNDYgMy41MmwxLjA3IDEuMDZBNi41IDYuNSAwIDAgMCAxNyA5LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJ0YWluc0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTEzIDV2MTRoLTJWNWgyek02IDVoM3YxNEg2VjV6bTkgMTRWNWgzdjE0aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3VydGFpbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yem0tMi04LjE0Yy0yLjA1LS41OC0zLjY0LTIuOTMtMy45NC01Ljg2SDE4djUuODZ6TTE1LjgxIDEyYy0yLjA0IDEuMzUtMy41IDMuOTQtMy43NiA3aC0uMDljLS4yNi0zLjA2LTEuNzItNS42NS0zLjc2LTcgMi4wNC0xLjM1IDMuNS0zLjk0IDMuNzYtN2guMDljLjI2IDMuMDYgMS43MiA1LjY1IDMuNzYgN3pNOS45NCA1Yy0uMyAyLjkzLTEuODkgNS4yNy0zLjk0IDUuODZWNWgzLjk0ek02IDEzLjE0YzIuMDUuNTggMy42NCAyLjkzIDMuOTQgNS44Nkg2di01Ljg2ek0xNC4wNiAxOWMuMy0yLjkzIDEuODktNS4yNyAzLjk0LTUuODZWMTloLTMuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbGVjdHJpY0JvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC42OSAyLjIxIDQuMzMgMTEuNDljLS42NC41OC0uMjggMS42NS41OCAxLjczTDEzIDE0bC00Ljg1IDYuNzZjLS4yMi4zMS0uMTkuNzQuMDggMS4wMS4zLjMuNzcuMzEgMS4wOC4wMmwxMC4zNi05LjI4Yy42NC0uNTguMjgtMS42NS0uNTgtMS43M0wxMSAxMGw0Ljg1LTYuNzZjLjIyLS4zMS4xOS0uNzQtLjA4LTEuMDFhLjc3Ljc3IDAgMCAwLTEuMDgtLjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNNZXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExYTkgOSAwIDAgMC0xOCAwYzAgMy45MiAyLjUxIDcuMjQgNiA4LjQ4VjIyaDJ2LTIuMDZhOC4yNjIgOC4yNjIgMCAwIDAgMiAwVjIyaDJ2LTIuNTJjMy40OS0xLjI0IDYtNC41NiA2LTguNDh6bS05IDdjLTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTcgNyAzLjE0IDcgNy0zLjE0IDctNyA3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDdoOHYySDh6TTEyLjc1IDEwbC0zIDNMMTEgMTQuMjUgOS43NSAxNS41bDEuNSAxLjUgMy0zTDEzIDEyLjc1bDEuMjUtMS4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVuZXJneVNhdmluZ3NMZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM2MtNC44IDAtOSAzLjg2LTkgOSAwIDIuMTIuNzQgNC4wNyAxLjk3IDUuNjFMMyAxOS41OSA0LjQxIDIxbDEuOTctMS45N0E5LjAxMiA5LjAxMiAwIDAgMCAxMiAyMWMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjRBOC45NSA4Ljk1IDAgMCAwIDIxIDEyVjNoLTl6bTcgOWMwIDEuODctLjczIDMuNjMtMi4wNSA0Ljk1QTYuOTYgNi45NiAwIDAgMSAxMiAxOWMtMy44NiAwLTctMy4xNC03LTcgMC0xLjkuNzQtMy42OCAyLjEtNC45OUE2Ljk0IDYuOTQgMCAwIDEgMTIgNWg3djd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguNDYgMTIuNjMgNC4wNS40LTIuNDQgMy4zM2MtLjExLjE2LS4xLjM4LjA0LjUyLjE1LjE1LjQuMTYuNTYuMDFsNS4xNi00LjYzYy4zMy0uMy4xNS0uODUtLjMtLjg5bC00LjA1LS40IDIuNDQtMy4zM2MuMTEtLjE2LjEtLjM4LS4wNC0uNTJhLjQwNS40MDUgMCAwIDAtLjU2LS4wMWwtNS4xNiA0LjYzYy0uMzIuMy0uMTQuODUuMy44OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdhc01ldGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMVYyaC0ydjJoLTJWMkg5djJIOEM1Ljc5IDQgNCA1Ljc5IDQgOHYxMGMwIDIuMjEgMS43OSA0IDQgNGg4YzIuMjEgMCA0LTEuNzkgNC00VjhjMC0yLjIxLTEuNzktNC00LTR6bTIgMTRjMCAxLjEtLjkgMi0yIDJIOGMtMS4xIDAtMi0uOS0yLTJWOGMwLTEuMS45LTIgMi0yaDhjMS4xIDAgMiAuOSAyIDJ2MTB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxNS41NEM5LjUgMTYuOSAxMC42MiAxOCAxMiAxOHMyLjUtMS4xIDIuNS0yLjQ2YzAtMS4wOS0uNDUtMS40MS0yLjUtMy43OS0yLjA3IDIuNC0yLjUgMi43MS0yLjUgMy43OXpNOCA4aDh2Mkg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhdFB1bXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE4YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnptLS43NS0yLjA4Yy0uNTUtLjEtMS4wNS0uMzItMS41LS42MmwxLjUtMS41djIuMTJ6bTEuNSAwdi0yLjExbDEuNSAxLjVjLS40NS4zLS45NS41MS0xLjUuNjF6bTIuNTYtMS42Ny0xLjUtMS41aDIuMTFjLS4xLjU1LS4zMSAxLjA1LS42MSAxLjV6bS42MS0zaC0yLjExbDEuNS0xLjVjLjMuNDUuNTEuOTUuNjEgMS41em0tMy4xNy0zLjE3Yy41NS4xIDEuMDUuMzIgMS41LjYybC0xLjUgMS41VjguMDh6TTEyIDExYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS0uNzUtMi45MnYyLjExbC0xLjUtMS41Yy40NS0uMy45NS0uNTEgMS41LS42MXpNOC42OSA5Ljc1bDEuNSAxLjVIOC4wOGMuMS0uNTUuMzEtMS4wNS42MS0xLjV6bTEuNSAzLTEuNSAxLjVjLS4zLS40NC0uNTEtLjk1LS42Mi0xLjVoMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVGYW5PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4Yy0xLjA2IDAtMS42NC4yOS0zLjkxIDEuMTktLjE5LS4xNC0uNC0uMjctLjYyLS4zNy4yNS0xLjAzLjYxLTEuNTMgMS4zMy0yLjA0LjgxLS41NyAxLjItMS4zNCAxLjItMi4yOCAwLTEuMjItLjk1LTIuNS0yLjYtMi41LTMuMDggMC00LjkyIDEuNDctNS4zMiAzLjI2bDIuMzMgMi4zM0MxMC4wNyA2LjY5IDEwIDYuMzggMTAgNmMwLTEuMTggMS40LTIgMy40LTIgLjU3IDAgLjYuNDIuNi41IDAgLjI3LS4wNS40My0uMzUuNjUtMS4yNy45LTEuODMgMS45MS0yLjE2IDMuMzlsLS4wMi4xIDcuMjUgNy4yNWMuMjQuMDYuNS4xMS43OC4xMSAxLjIyIDAgMi41LS45NSAyLjUtMi42QzIyIDkuOTEgMjAuMTEgOCAxOCA4em0xLjUgNmMtLjI3IDAtLjQzLS4wNS0uNjUtLjM1LS45LTEuMjctMS45MS0xLjgzLTMuMzktMi4xNmEzLjEyIDMuMTIgMCAwIDAtLjE1LS42MmMxLjgtLjc1IDIuMTgtLjg3IDIuNjktLjg3IDEuMTggMCAyIDEuNCAyIDMuNCAwIC41Ny0uNDIuNi0uNS42ek0xLjM5IDQuMjJsMy44OSAzLjg5QzUuMDQgOC4wNSA0Ljc4IDggNC41IDggMy4yOCA4IDIgOC45NSAyIDEwLjYgMiAxNC4wOSAzLjg5IDE2IDYgMTZjMS4wNiAwIDEuNjQtLjI5IDMuOTEtMS4xOS4xOS4xNC40LjI3LjYyLjM3LS4yNSAxLjAzLS42MSAxLjUzLTEuMzMgMi4wNC0uODEuNTctMS4yIDEuMzQtMS4yIDIuMjggMCAxLjIyLjk1IDIuNSAyLjYgMi41IDMuMDggMCA0LjkyLTEuNDcgNS4zMi0zLjI2bDMuODYgMy44NiAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptMTEuMTMgMTEuMjRjLjAzIDAgLjA2LS4wMi4wOS0uMDJsLjk3Ljk3Yy4zNS45LjQyIDEuMjEuNDIgMS41OSAwIDEuMTgtMS40IDItMy40IDItLjU3IDAtLjYtLjQyLS42LS41IDAtLjI3LjA1LS40My4zNS0uNjUgMS4yOC0uODkgMS44My0xLjkxIDIuMTctMy4zOXptLTMuOTgtMi45NGMuMDMuMjIuMDguNDIuMTUuNjItMS44Ljc0LTIuMTguODYtMi42OS44Ni0xLjE4IDAtMi0xLjQtMi0zLjQgMC0uNTcuNDItLjYuNS0uNi4yNyAwIC40My4wNS42NS4zNS44OSAxLjI4IDEuOTEgMS44MyAzLjM5IDIuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXN0Q2FtV2lyZWRTdGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFjLS4xNSAwIC4xMS0uMDItNC4yOC40MkM4LjQ3IDEuNzUgNiA0LjQ4IDYgNy43NXMyLjQ3IDYgNS43MiA2LjMzbDEuOS4xOS0uNTYuODVjLS4zNS0uMDgtLjctLjEyLTEuMDYtLjEyLTIuNzYgMC01IDIuMjQtNSA1djJjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF2LTJjMC0xLjY3LS44My0zLjE1LTIuMDktNC4wNmwuOTctMS40NWMuMDQgMCAuMDkuMDEuMTMuMDEgMS4wOSAwIDItLjg5IDItMlYzQzE4IDEuODkgMTcuMDkgMSAxNiAxem0tMSAyMEg5di0xYzAtMS42NSAxLjM1LTMgMy0zczMgMS4zNSAzIDN2MXpNOCA3Ljc1YzAtMi4yNSAxLjY5LTQuMTEgMy45Mi00LjM0TDE2IDNsLjAzIDkuNS00LjExLS40MkE0LjMzNiA0LjMzNiAwIDAgMSA4IDcuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPaWxCYXJyZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEzLjA1QzkgMTQuNjggMTAuMzQgMTYgMTIgMTZzMy0xLjMyIDMtMi45NWMwLTEuMzEtLjUzLTEuNjktMy00LjU1LTIuNDggMi44OC0zIDMuMjUtMyA0LjU1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMVY1aDFjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxdjZINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxdjZINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMXYtNmgxem0tMyA2SDd2LTZjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFWNWgxMHY2Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcm9wYW5lVGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDYuMTRWNGMwLTEuMS0uOS0yLTItMkg5Yy0xLjEgMC0yIC45LTIgMnYyLjE0Yy0xLjcyLjQ1LTMgMi0zIDMuODZ2OGMwIDIuMjEgMS43OSA0IDQgNGg4YzIuMjEgMCA0LTEuNzkgNC00di04YzAtMS44Ni0xLjI4LTMuNDEtMy0zLjg2ek05IDRoNnYyaC0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxSDlWNHpNOCA4aDhjMS4xIDAgMiAuOSAyIDJ2M0g2di0zYzAtMS4xLjktMiAyLTJ6bTggMTJIOGMtMS4xIDAtMi0uOS0yLTJ2LTNoMTJ2M2MwIDEuMS0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByb3BhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA2aC0xVjVjMC0xLjEtLjktMi0yLTJoLTRjLTEuMSAwLTIgLjktMiAydjFIN2MtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNnYzaDJ2LTNoNnYzaDJ2LTNjMy4zMSAwIDYtMi42OSA2LTZzLTIuNjktNi02LTZ6bS03LTFoNHYxaC00VjV6bTcgMTFIN2MtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGgxMGMyLjIxIDAgNCAxLjc5IDQgNHMtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvbGxlclNoYWRlc0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoOC4yNWMwIC45Ny43OCAxLjc1IDEuNzUgMS43NXMxLjc1LS43OCAxLjc1LTEuNzVIMjJ2LTJoLTJ6TTE4IDV2MTBINlY1aDEyek02IDE5di0yaDV2Mkg2em03IDB2LTJoNXYyaC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm9sbGVyU2hhZGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnpNMTggNXY2SDZWNWgxMnpNNiAxOXYtNmg1djEuODJBMS43NDYgMS43NDYgMCAwIDAgMTIgMThhMS43NDYgMS43NDYgMCAwIDAgMS0zLjE4VjEzaDV2Nkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2Vuc29yRG9vciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDR2MTZINlY0aDEybTAtMkg2Yy0xLjEgMC0yIC45LTIgMnYxOGgxNlY0YzAtMS4xLS45LTItMi0yem0tMi41IDguNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41UzE3IDEyLjgzIDE3IDEycy0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW5zb3JPY2N1cGllZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTEyIDEyYy0xLjg0IDAtMy41Ni41LTUuMDMgMS4zNy0uNjEuMzUtLjk3IDEuMDItLjk3IDEuNzJWMTdoMTJ2LTEuOTFjMC0uNy0uMzYtMS4zNi0uOTctMS43MkE5Ljg0NCA5Ljg0NCAwIDAgMCAxMiAxMnptLTMuODYgM2MxLjE4LS42NSAyLjUxLTEgMy44Ni0xczIuNjguMzUgMy44NSAxSDguMTR6TTIxLjIzIDguMTVsMS44NS0uNzdBMTIuMDU2IDEyLjA1NiAwIDAgMCAxNi42Mi45MmwtLjc3IDEuODVjMi40MiAxLjAyIDQuMzYgMi45NiA1LjM4IDUuMzh6TTguMTUgMi43NyA3LjM4LjkyQTEyLjA4OSAxMi4wODkgMCAwIDAgLjkyIDcuMzhsMS44NS43N2MxLjAyLTIuNDIgMi45Ni00LjM2IDUuMzgtNS4zOHpNMi43NyAxNS44NWwtMS44NS43N2MxLjIyIDIuOTEgMy41NSA1LjI1IDYuNDYgNi40NmwuNzctMS44NWExMC4xMTcgMTAuMTE3IDAgMCAxLTUuMzgtNS4zOHpNMTUuODUgMjEuMjNsLjc3IDEuODVjMi45MS0xLjIyIDUuMjUtMy41NSA2LjQ2LTYuNDZsLTEuODUtLjc3YTEwLjExNyAxMC4xMTcgMCAwIDEtNS4zOCA1LjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2Vuc29yV2luZG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMnY3aC00di0xaC00djFINlY0aDEyek02IDIwdi03aDEydjdINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNoaWVsZE1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M3YtNC43bDYtMi4yNSA2IDIuMjV2NC43elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjAxIDE0LjMzYzEuNzUgMi4xNyA1LjEyIDIuMjQgNi45Ni4wNy4yMy0uMjcuMDgtLjY4LS4yNi0uNzRhNC40OTEgNC40OTEgMCAwIDEtMy4xOC0yLjIgNC41MDMgNC41MDMgMCAwIDEtLjMyLTMuODYuNDUzLjQ1MyAwIDAgMC0uNTEtLjZjLTMuMzQuNjItNC44OSA0LjYxLTIuNjkgNy4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvbGFyUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMkg0TDIgMjJoMjBsLTItMTB6bS0xLjY0IDIgLjQgMkgxM3YtMmg1LjM2ek0xMSAxNHYySDUuMjRsLjQtMkgxMXptLTYuMTYgNEgxMXYySDQuNDRsLjQtMnpNMTMgMjB2LTJoNi4xNmwuNCAySDEzek0xMSA4aDJ2M2gtMnpNMTUuNzY0IDcuMjA1bDEuNDE1LTEuNDE0TDE5LjMgNy45MTJsLTEuNDE0IDEuNDE0ek00LjcwNSA3LjkxMyA2LjgyNiA1Ljc5IDguMjQgNy4yMDYgNi4xMiA5LjMyN3pNMyAyaDN2Mkgzek0xOCAyaDN2MmgtM3pNMTIgN2MyLjc2IDAgNS0yLjI0IDUtNWgtMmMwIDEuNjUtMS4zNSAzLTMgM1M5IDMuNjUgOSAySDdjMCAyLjc2IDIuMjQgNSA1IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWZXJ0aWNhbFNoYWRlc0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTEzIDVoMS41djE0SDEzVjV6bS0yIDE0SDkuNVY1SDExdjE0ek02IDVoMS41djE0SDZWNXptMTAuNSAxNFY1SDE4djE0aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWZXJ0aWNhbFNoYWRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTE0IDV2MTRoLTRWNWg0ek02IDVoMnYxNEg2VjV6bTEwIDE0VjVoMnYxNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpbmRQb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgM2g2djJINHpNMSA3aDV2Mkgxek0zIDE5aDV2MkgzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMi4yMSAxOC42MS0yLjI4LTQuMWEyLjA1IDIuMDUgMCAwIDAtMS4yNi0uOTdsLTIuNjktLjY3YTIuOTUgMi45NSAwIDAgMC0uMzctMS4zM2wzLjk2LTYuNTljLjY1LTEuMDguMy0yLjQ4LS43OC0zLjEzYTIuMjg4IDIuMjg4IDAgMCAwLTIuNzMuM2wtMy40MyAzLjIxYy0uNC4zNy0uNjMuOS0uNjMgMS40NXYzLjRjLS40Ny4xNy0uODkuNDUtMS4yMy44MkgzLjI4YTIuMjc5IDIuMjc5IDAgMCAwLS42MyA0LjQ3bDQuNTEgMS4yOWMuMTguMDUuMzcuMDguNTUuMDguMzYgMCAuNzItLjEgMS4wMy0uMjlsMi4yNC0xLjM0Yy4yOS4yNi42My40NyAxLjAyLjYxVjIxYy0xLjEgMC0yIC45LTIgMmg2YzAtMS4xLS45LTItMi0ydi00LjI4bDQuNjEgNC42MWMuNDUuNDUgMS4wMy42NyAxLjYxLjY3LjU4IDAgMS4xNy0uMjIgMS42MS0uNjcuNzItLjcyLjg4LTEuODMuMzgtMi43MnpNNy43MiAxNC44NCAzLjIgMTMuNTVhLjI3OS4yNzkgMCAwIDEtLjItLjI3YzAtLjE1LjEzLS4yOC4yOC0uMjhoNi43M2MwIC4xNS4wMS4zLjAzLjQ0bC0yLjMyIDEuNHpNMTMgMTRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMS0zLjg2VjYuNzhsMy40My0zLjIxYy4wNS0uMDUuMTktLjEyLjM0LS4wNC4xMy4wOC4xOC4yNS4xLjM4bC0zLjc0IDYuMjQtLjEzLS4wMXptNi40MiA5Ljc4Yy0uMDUuMDUtLjI0LjE2LS40IDBsLTQuODUtNC44NWMuMDgtLjA5LjE2LS4xOC4yNC0uMjhsMi43OC42OSAyLjI4IDQuMWMuMDYuMTEuMDQuMjUtLjA1LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTBNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDExLjVoMi41Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFIMTNjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS00LjVIMTV2M2gtMS41Vjd6TTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTguNSAxMS41SDEwdi02SDdWN2gxLjV6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTExTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxMS41SDExdi02SDhWN2gxLjV6TTE0LjUgMTEuNUgxNnYtNmgtM1Y3aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTEyTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxMS41SDEwdi02SDdWN2gxLjV6TTE2LjUgMTBoLTNWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDEyVjdoM3YxaC0yYy0uNTUgMC0xIC40NS0xIDF2Mi41aDQuNVYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTEzTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTEuNUgxMHYtNkg3VjdoMS41ek0xNi41IDEwLjV2LTRjMC0uNTUtLjQ1LTEtMS0xSDEyVjdoM3YxaC0ydjFoMnYxaC0zdjEuNWgzLjVjLjU1IDAgMS0uNDUgMS0xek03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxNE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxMi41djZIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXptMyAzSDE1VjE0aDEuNXYxLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTUgMTEuNWgxLjVWMTBoMVY4LjVoLTF2LTNIMTV2M2gtMS41di0zSDEyVjEwaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxNU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTEuNUgxMHYtNkg3VjdoMS41ek0xNi41IDEwLjVWOWMwLS41NS0uNDUtMS0xLTFoLTJWN2gzVjUuNUgxMlY5aDN2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTE2TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDExLjVoMi41Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMWgtMlY3aDNWNS41SDEzYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtMi41SDE1djEuNWgtMS41Vjl6TTguNSAxMS41SDEwdi02SDdWN2gxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxN01wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTEuNUgxMHYtNkg3VjdoMS41ek0xMy4yNSAxMS41SDE1bDEuNDYtNC43MWMuMTktLjY0LS4yOS0xLjI5LS45Ni0xLjI5SDEyVjdoMi42MmwtMS4zNyA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxOE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTEuNUgxMHYtNkg3VjdoMS41ek0xMyAxMS41aDIuNWMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDEzYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtNUgxNVY4aC0xLjVWNi41em0wIDIuNUgxNXYxLjVoLTEuNVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTlNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTYuNSAxMC41di00YzAtLjU1LS40NS0xLTEtMUgxM2MtLjU1IDAtMSAuNDUtMSAxVjhjMCAuNTUuNDUgMSAxIDFoMnYxaC0zdjEuNWgzLjVjLjU1IDAgMS0uNDUgMS0xek0xNSA4aC0xLjVWNi41SDE1Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUyME1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxMi41djZIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXptMyAzSDE1VjE0aDEuNXYxLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTEuNWgyLjVjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMUgxNGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTQuNUgxNnYzaC0xLjVWN3pNMTEgMTBIOFY5aDJjLjU1IDAgMS0uNDUgMS0xVjYuNWMwLS41NS0uNDUtMS0xLTFINi41VjdoM3YxaC0yYy0uNTUgMC0xIC40NS0xIDF2Mi41SDExVjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMjFNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAxMS41SDE2di02aC0zVjdoMS41ek0xMiAxMEg5VjloMmMuNTUgMCAxLS40NSAxLTFWNi41YzAtLjU1LS40NS0xLTEtMUg3LjVWN2gzdjFoLTJjLS41NSAwLTEgLjQ1LTEgMXYyLjVIMTJWMTB6TTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTE1IDE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NkgxNVYxN3ptMC0zaDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUyMk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxMi41djZIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXptMyAzSDE1VjE0aDEuNXYxLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTBIOFY5aDJjLjU1IDAgMS0uNDUgMS0xVjYuNWMwLS41NS0uNDUtMS0xLTFINi41VjdoM3YxaC0yYy0uNTUgMC0xIC40NS0xIDF2Mi41SDExVjEwek0xNy41IDEwaC0zVjloMmMuNTUgMCAxLS40NSAxLTFWNi41YzAtLjU1LS40NS0xLTEtMUgxM1Y3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNWg0LjVWMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUyM01wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxMi41djZIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXptMyAzSDE1VjE0aDEuNXYxLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTBIOFY5aDJjLjU1IDAgMS0uNDUgMS0xVjYuNWMwLS41NS0uNDUtMS0xLTFINi41VjdoM3YxaC0yYy0uNTUgMC0xIC40NS0xIDF2Mi41SDExVjEwek0xNy41IDEwLjV2LTRjMC0uNTUtLjQ1LTEtMS0xSDEzVjdoM3YxaC0ydjFoMnYxaC0zdjEuNWgzLjVjLjU1IDAgMS0uNDUgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMjRNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTE3IDEyLjVoLTMuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xem0tLjUgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEwSDhWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDYuNVY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNUgxMVYxMHpNMTYgMTEuNWgxLjVWMTBoMVY4LjVoLTF2LTNIMTZ2M2gtMS41di0zSDEzVjEwaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUyTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTBoLTNWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDEwVjdoM3YxaC0yYy0uNTUgMC0xIC40NS0xIDF2Mi41aDQuNVYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTMwRnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA0djJoNXYySDV2Mmg0djJINHYyaDVjMS4xIDAgMi0uOSAyLTJ2LTEuNWMwLS44My0uMTctMS41LTEtMS41LjgzIDAgMS0uNjcgMS0xLjVWNmMwLTEuMS0uOS0yLTItMkg0em0xNCAwYzEuMSAwIDIgLjkgMiAydjZjMCAxLjEtLjkgMi0yIDJoLTNjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgzem0wIDJoLTN2NmgzVjZ6TTUgMjJIM3YtNWgydjV6bTQgMEg3di01aDJ2NXptNCAwaC0ydi01aDJ2NXptOCAwaC02di01aDZ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTNNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTAuNXYtNGMwLS41NS0uNDUtMS0xLTFIMTBWN2gzdjFoLTJ2MWgydjFoLTN2MS41aDMuNWMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU0TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTEuNUgxNFYxMGgxVjguNWgtMXYtM2gtMS41djNIMTF2LTNIOS41VjEwaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU1TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTAuNVY5YzAtLjU1LS40NS0xLTEtMWgtMlY3aDNWNS41SDEwVjloM3YxaC0zdjEuNWgzLjVjLjU1IDAgMS0uNDUgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNjBGcHNTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA2djZoLTNWNmgzem0wLTJoLTNjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmgzYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS03IDJWNEg2Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMnYtMmMwLTEuMS0uOS0yLTItMkg2VjZoNXptLTIgNHYySDZ2LTJoM3pNNSAyMkgzdi01aDJ2NXptNCAwSDd2LTVoMnY1em00IDBoLTJ2LTVoMnY1em04IDBoLTZ2LTVoNnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMS41aDIuNWMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTFoLTJWN2gzVjUuNUgxMWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTIuNUgxM3YxLjVoLTEuNVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lN01wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yNSAxMS41SDEzbDEuNDYtNC43MWMuMTktLjY0LS4yOS0xLjI5LS45Ni0xLjI5SDEwVjdoMi42MmwtMS4zNyA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU4TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDExLjVoMi41Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFIMTFjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS01SDEzVjhoLTEuNVY2LjV6bTAgMi41SDEzdjEuNWgtMS41Vjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU5TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTAuNXYtNGMwLS41NS0uNDUtMS0xLTFIMTFjLS41NSAwLTEgLjQ1LTEgMVY4YzAgLjU1LjQ1IDEgMSAxaDJ2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpNMTMgOGgtMS41VjYuNUgxM1Y4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQVBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNmgtMy4xN0wxNiA0aC02djJoNS4xMmwxLjgzIDJIMjF2MTJINXYtOUgzdjljMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yek04IDE0YzAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTUtMi4yNC01LTUtNS01IDIuMjQtNSA1em01LTNjMS42NSAwIDMgMS4zNSAzIDNzLTEuMzUgMy0zIDMtMy0xLjM1LTMtMyAxLjM1LTMgMy0zek01IDZoM1Y0SDVWMUgzdjNIMHYyaDN2M2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkUGhvdG9BbHRlcm5hdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDIwSDRWNmg5VjRINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtOWgtMnY5em0tNy43OS0zLjE3LTEuOTYtMi4zNkw1LjUgMThoMTFsLTMuNTQtNC43MXpNMjAgNFYxaC0ydjNoLTNjLjAxLjAxIDAgMiAwIDJoM3YyLjk5Yy4wMS4wMSAyIDAgMiAwVjZoM1Y0aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkVG9QaG90b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6bS03LTFoMnYtNGg0VjloLTRWNWgtMnY0SDl2Mmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRqdXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMy04YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFuaW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDJjLTIuNzEgMC01LjA1IDEuNTQtNi4yMiAzLjc4YTcuMDYyIDcuMDYyIDAgMCAwLTMgM0E3LjAxNCA3LjAxNCAwIDAgMCAyIDE1YzAgMy44NyAzLjEzIDcgNyA3IDIuNzEgMCA1LjA1LTEuNTQgNi4yMi0zLjc4YTcuMDYyIDcuMDYyIDAgMCAwIDMtM0E3LjAxNCA3LjAxNCAwIDAgMCAyMiA5YzAtMy44Ny0zLjEzLTctNy03ek05IDIwYTUuMDAyIDUuMDAyIDAgMCAxLTQtOGMwIDMuODcgMy4xMyA3IDcgNy0uODQuNjMtMS44OCAxLTMgMXptMy0zYTUuMDAyIDUuMDAyIDAgMCAxLTQtOGMwIDMuODYgMy4xMyA2Ljk5IDcgNy0uODQuNjMtMS44OCAxLTMgMXptNC43LTMuM2MtLjUzLjE5LTEuMS4zLTEuNy4zLTIuNzYgMC01LTIuMjQtNS01IDAtLjYuMTEtMS4xNy4zLTEuNy41My0uMTkgMS4xLS4zIDEuNy0uMyAyLjc2IDAgNSAyLjI0IDUgNSAwIC42LS4xMSAxLjE3LS4zIDEuN3pNMTkgMTJjMC0zLjg2LTMuMTMtNi45OS03LTdhNS4wMDIgNS4wMDIgMCAwIDEgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaXN0YW50UGhvdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjM2IDYgLjA4LjM5LjMyIDEuNjFIMTh2NmgtMy4zNmwtLjA4LS4zOS0uMzItMS42MUg3VjZoNS4zNk0xNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZoLTUuNkwxNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaXN0YW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNmgtNC44M2wtLjU5LjU5TDEyIDIwLjE3bC0xLjU5LTEuNTktLjU4LS41OEg1VjRoMTR2MTR6bS03LTEgMS44OC00LjEyTDE4IDExbC00LjEyLTEuODhMMTIgNWwtMS44OCA0LjEyTDYgMTFsNC4xMiAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXVkaW90cmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM3YxMC41NWMtLjU5LS4zNC0xLjI3LS41NS0yLS41NS0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRWN2g0VjNoLTZ6bS0yIDE2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9Bd2Vzb21lTW9zYWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djE0YTIgMiAwIDAgMCAyIDJoNlYzSDVhMiAyIDAgMCAwLTIgMnptNiAxNEg1VjVoNHYxNHpNMTkgM2gtNnY4aDhWNWMwLTEuMS0uOS0yLTItMnptMCA2aC00VjVoNHY0ek0xMyAyMWg2YzEuMSAwIDItLjkgMi0ydi02aC04djh6bTItNmg0djRoLTR2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvQXdlc29tZU1vdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINGMtMS4xIDAtMiAuOS0yIDJ2MTBoMlY0aDEwVjJ6bTQgNEg4Yy0xLjEgMC0yIC45LTIgMnYxMGgyVjhoMTBWNnptMiA0aC04Yy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMnYtOGMwLTEuMS0uOS0yLTItMnptMCAxMGgtOHYtOGg4djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvQXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDkgMS4yNS0yLjc1TDIzIDVsLTIuNzUtMS4yNUwxOSAxbC0xLjI1IDIuNzVMMTUgNWwyLjc1IDEuMjV6TTE5IDE1bC0xLjI1IDIuNzVMMTUgMTlsMi43NSAxLjI1TDE5IDIzbDEuMjUtMi43NUwyMyAxOWwtMi43NS0xLjI1ek0xMS41IDkuNSA5IDQgNi41IDkuNSAxIDEybDUuNSAyLjVMOSAyMGwyLjUtNS41TDE3IDEybC01LjUtMi41em0tMS41MSAzLjQ5TDkgMTUuMTdsLS45OS0yLjE4TDUuODMgMTJsMi4xOC0uOTlMOSA4LjgzbC45OSAyLjE4IDIuMTguOTktMi4xOC45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9GaXhIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAgNyAuOTQtMi4wNkwyMyA0bC0yLjA2LS45NEwyMCAxbC0uOTQgMi4wNkwxNyA0bDIuMDYuOTR6TTguNSA3bC45NC0yLjA2TDExLjUgNGwtMi4wNi0uOTRMOC41IDFsLS45NCAyLjA2TDUuNSA0bDIuMDYuOTR6TTIwIDEyLjVsLS45NCAyLjA2LTIuMDYuOTQgMi4wNi45NC45NCAyLjA2Ljk0LTIuMDZMMjMgMTUuNWwtMi4wNi0uOTR6TTE3LjcxIDkuMTJsLTIuODMtMi44M2MtLjItLjE5LS40NS0uMjktLjcxLS4yOS0uMjYgMC0uNTEuMS0uNzEuMjlMMi4yOSAxNy40NmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi44MyAyLjgzYy4yLjIuNDUuMy43MS4zcy41MS0uMS43MS0uMjlsMTEuMTctMTEuMTdjLjM5LS4zOS4zOS0xLjAzIDAtMS40MnptLTMuNTQtLjcgMS40MSAxLjQxTDE0LjQxIDExIDEzIDkuNTlsMS4xNy0xLjE3ek01LjgzIDE5LjU5bC0xLjQxLTEuNDFMMTEuNTkgMTEgMTMgMTIuNDFsLTcuMTcgNy4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9GaXhOb3JtYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMCA3IC45NC0yLjA2TDIzIDRsLTIuMDYtLjk0TDIwIDFsLS45NCAyLjA2TDE3IDRsMi4wNi45NHpNMTcuNzEgOS4xMmwtMi44My0yLjgzYy0uMi0uMTktLjQ1LS4yOS0uNzEtLjI5LS4yNiAwLS41MS4xLS43MS4yOUwyLjI5IDE3LjQ2YS45OTYuOTk2IDAgMCAwIDAgMS40MWwyLjgzIDIuODNjLjIuMi40NS4zLjcxLjNzLjUxLS4xLjcxLS4yOWwxMS4xNy0xMS4xN2MuMzktLjM5LjM5LTEuMDMgMC0xLjQyem0tMy41NC0uNyAxLjQxIDEuNDFMMTQuNDEgMTEgMTMgOS41OWwxLjE3LTEuMTd6TTUuODMgMTkuNTlsLTEuNDEtMS40MUwxMS41OSAxMSAxMyAxMi40MWwtNy4xNyA3LjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXV0b0ZpeE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwIDcgLjk0LTIuMDZMMjMgNGwtMi4wNi0uOTRMMjAgMWwtLjk0IDIuMDZMMTcgNGwyLjA2Ljk0ek0xNC4xNyA4LjQybDEuNDEgMS40MS0xLjQ2IDEuNDYgMS40MSAxLjQxIDIuMTctMi4xN2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuODMtMi44M2EuOTg0Ljk4NCAwIDAgMC0uNy0uMjljLS4yNiAwLS41MS4xLS43MS4yOWwtMi4xNyAyLjE3IDEuNDEgMS40MSAxLjQ3LTEuNDV6TTEuMzkgNC4yMmw3LjA3IDcuMDctNi4xNyA2LjE3YS45OTYuOTk2IDAgMCAwIDAgMS40MWwyLjgzIDIuODNjLjIuMi40NS4zLjcxLjNzLjUxLS4xLjcxLS4yOWw2LjE3LTYuMTcgNy4wNyA3LjA3IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyem05LjkgOS45LTUuNDYgNS40Ni0xLjQxLTEuNDEgNS40Ni01LjQ2IDEuNDEgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9TdG9yaWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuNDcgNS4yYy0uNDctLjI0LS45Ni0uNDQtMS40Ny0uNjF2MTIuMDNjLTEuMTQtLjQxLTIuMzEtLjYyLTMuNS0uNjItMS45IDAtMy43OC41NC01LjUgMS41OFY1LjQ4QzEwLjM4IDQuNTUgOC41MSA0IDYuNSA0Yy0xLjc5IDAtMy40OC40NC00Ljk3IDEuMi0uMzMuMTYtLjUzLjUxLS41My44OHYxMi4wOGMwIC41OC40Ny45OSAxIC45OS4xNiAwIC4zMi0uMDQuNDgtLjEyQzMuNjkgMTguNCA1LjA1IDE4IDYuNSAxOGMyLjA3IDAgMy45OC44MiA1LjUgMiAxLjUyLTEuMTggMy40My0yIDUuNS0yIDEuNDUgMCAyLjgxLjQgNC4wMiAxLjA0LjE2LjA4LjMyLjEyLjQ4LjEyLjUyIDAgMS0uNDEgMS0uOTlWNi4wOGMwLS4zNy0uMi0uNzItLjUzLS44OHpNMTAgMTYuNjJDOC44NiAxNi4yMSA3LjY5IDE2IDYuNSAxNnMtMi4zNi4yMS0zLjUuNjJWNi43MUM0LjExIDYuMjQgNS4yOCA2IDYuNSA2YzEuMiAwIDIuMzkuMjUgMy41LjcydjkuOXpNMTkgLjVsLTUgNVYxNWw1LTQuNVYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9mcHNTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMyA2LjNoLS4wNmwtMS4wMiAyLjg5aDIuMXpNMyAxN2gydjVIM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTVjMy4zMSAwIDYtMi42OSA2LTZzLTIuNjktNi02LTYtNiAyLjY5LTYgNiAyLjY5IDYgNiA2em0tLjYzLTEwaDEuMjVsMi42MyA3aC0xLjIxbC0uNjMtMS43OWgtMi44M0w5Ljk2IDEySDguNzRsMi42My03ek03IDE3aDJ2NUg3ek0xMSAxN2gydjVoLTJ6TTE1IDE3aDZ2NWgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZHRpbWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI3IDQuNDljLS4xMy41OS0uMiAxLjE1LS4yNCAxLjcxbDIuMDUgMi4wNWMtLjI3LTIuMDUuMS00LjIyIDEuMjYtNi4yMy0uMTIgMC0uMjMtLjAxLS4zNS0uMDFhOS45IDkuOSAwIDAgMC01LjUgMS42NWwxLjQ2IDEuNDZjLjQyLS4yNC44Ni0uNDYgMS4zMi0uNjN6bS03Ljg4LS4yNyAyLjI3IDIuMjdBOS45MzQgOS45MzQgMCAwIDAgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAyLjA0IDAgMy45Mi0uNjMgNS41LTEuNjdsMi4yOCAyLjI4IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyem0zLjc0IDMuNzQgMTAuOTIgMTAuOTJDMTQuODQgMTkuNiAxMy40NSAyMCAxMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0xLjQ4LjQyLTIuODUgMS4xMy00LjA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVkdGltZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjcgNC40OWMtMS42MyA3LjU0IDMuNzUgMTIuNDEgNy42NiAxMy44QTcuOTkzIDcuOTkzIDAgMCAxIDEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTMuNDUgMi4yLTYuNCA1LjI3LTcuNTFtMi43Mi0yLjQ4QzYuNCAyLjAxIDIgNi41NCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDMuNzEgMCA2LjkzLTIuMDIgOC42Ni01LjAyLTcuNTEtLjI1LTEyLjA5LTguNDMtOC4zMi0xNC45N2gtLjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmx1ckNpcmN1bGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek03IDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTMgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS0zLTNjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zLTZjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtMS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptMyA2Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC00Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTItMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0zLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdXJMaW5lYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTcuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXpNMyAyMWgxOHYtMkgzdjJ6TTUgOS41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjgzIDYuNSA1IDYuNSAzLjUgNy4xNyAzLjUgOCA0LjE3IDkuNSA1IDkuNXptMCA0Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek05IDE3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTgtLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0zIDN2MmgxOFYzSDN6bTE0IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTAgNGMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEzIDljLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA0Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmx1ck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuOCAxMS40OC4yLjAyYy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41bC4wMi4yYy4wOS42Ny42MSAxLjE5IDEuMjggMS4yOHpNMTQgMy41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptLTQgMGMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMC41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDIwLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03LTdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tMTggMGMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTcgMTFjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgNS4yNyA2IDguNzdsLjI4LjI4TDYgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTFjMC0uMS0uMDMtLjE5LS4wNi0uMjhsMi44MSAyLjgxYy0uNzEuMTEtMS4yNS43My0xLjI1IDEuNDcgMCAuODMuNjcgMS41IDEuNSAxLjUuNzQgMCAxLjM2LS41NCAxLjQ3LTEuMjVsMi44MSAyLjgxQS44NzUuODc1IDAgMCAwIDE0IDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMWMwLS4xLS4wMy0uMTktLjA2LS4yOGwzLjc4IDMuNzhoLjAxbDEuNDEtMS40MUwzLjkxIDMuODYgMi41IDUuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVyT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLThjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptLTMgLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek02IDVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMTUgNS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTQgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTMuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bS0xMSAxMGMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTcgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtMTdjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNS41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptOCAuNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0zIDguNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTE0IDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptLTQtMTJjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wIDguNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem00LTQuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAtNGMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcmlnaHRuZXNzMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDhjLS4zNCAwLS42OC0uMDItMS4wMS0uMDdDMTAuOSAxNy43NyAxMiAxNC45NSAxMiAxMnMtMS4xLTUuNzctMy4wMS03LjkzQzkuMzIgNC4wMiA5LjY2IDQgMTAgNG0wLTJjLTEuODIgMC0zLjUzLjUtNSAxLjM1QzcuOTkgNS4wOCAxMCA4LjMgMTAgMTJzLTIuMDEgNi45Mi01IDguNjVDNi40NyAyMS41IDguMTggMjIgMTAgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTUuNTIgMiAxMCAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjcgNC45MUE4IDggMCAwIDEgMTcgMTJhOCA4IDAgMCAxLTQuMyA3LjA5YzEuNDYtMiAyLjMtNC40NiAyLjMtNy4wOXMtLjg0LTUuMDktMi4zLTcuMDlNOSAyYy0xLjA1IDAtMi4wNS4xNi0zIC40NiA0LjA2IDEuMjcgNyA1LjA2IDcgOS41NHMtMi45NCA4LjI3LTcgOS41NGMuOTUuMyAxLjk1LjQ2IDMgLjQ2IDUuNTIgMCAxMC00LjQ4IDEwLTEwUzE0LjUyIDIgOSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIuMjkgN2MtLjc0IDAtMS40NS4xNy0yLjA4LjQ2IDEuNzIuNzkgMi45MiAyLjUzIDIuOTIgNC41NHMtMS4yIDMuNzUtMi45MiA0LjU0Yy42My4yOSAxLjM0LjQ2IDIuMDguNDYgMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcmlnaHRuZXNzNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjlMMjMuMzEgMTIgMjAgOC42OXptLTIgNS43OVYxOGgtMy41MkwxMiAyMC40OCA5LjUyIDE4SDZ2LTMuNTJMMy41MiAxMiA2IDkuNTJWNmgzLjUyTDEyIDMuNTIgMTQuNDggNkgxOHYzLjUyTDIwLjQ4IDEyIDE4IDE0LjQ4ek0xMiA2LjVjLTMuMDMgMC01LjUgMi40Ny01LjUgNS41czIuNDcgNS41IDUuNSA1LjUgNS41LTIuNDcgNS41LTUuNS0yLjQ3LTUuNS01LjUtNS41em0wIDljLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41czEuNTctMy41IDMuNS0zLjUgMy41IDEuNTcgMy41IDMuNS0xLjU3IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIgNi41djExYzMuMDMgMCA1LjUtMi40NyA1LjUtNS41UzE1LjAzIDYuNSAxMiA2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcmlnaHRuZXNzNyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjlMMjMuMzEgMTIgMjAgOC42OXptLTIgNS43OVYxOGgtMy41MkwxMiAyMC40OCA5LjUyIDE4SDZ2LTMuNTJMMy41MiAxMiA2IDkuNTJWNmgzLjUyTDEyIDMuNTIgMTQuNDggNkgxOHYzLjUyTDIwLjQ4IDEyIDE4IDE0LjQ4ek0xMiA2LjVjLTMuMDMgMC01LjUgMi40Ny01LjUgNS41czIuNDcgNS41IDUuNSA1LjUgNS41LTIuNDcgNS41LTUuNS0yLjQ3LTUuNS01LjUtNS41em0wIDljLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41czEuNTctMy41IDMuNS0zLjUgMy41IDEuNTcgMy41IDMuNS0xLjU3IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyb2tlbkltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1di00LjU4bC45OS45OSA0LTQgNCA0IDQtMy45OUwxOSAxMi40M1YxOXptMC05LjQxLTEuMDEtMS4wMS00IDQuMDEtNC00LTQgNC0uOTktMVY1aDE0djQuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNmMuNTUgMCAxIC40NSAxIDEgMCAxLjEtLjkgMi0yIDItLjE3IDAtLjMzLS4wMi0uNS0uMDUuMzEtLjU1LjUtMS4yMS41LTEuOTUgMC0uNTUuNDUtMSAxLTFNMTguNjcgM2MtLjI2IDAtLjUxLjEtLjcxLjI5TDkgMTIuMjUgMTEuNzUgMTVsOC45Ni04Ljk2YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMS4zNC0xLjM0Yy0uMi0uMi0uNDUtLjI5LS43LS4yOXpNNyAxNGMtMS42NiAwLTMgMS4zNC0zIDMgMCAxLjMxLTEuMTYgMi0yIDIgLjkyIDEuMjIgMi40OSAyIDQgMiAyLjIxIDAgNC0xLjc5IDQtNCAwLTEuNjYtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJ1cnN0TW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgNWgydjE0SDF6bTQgMGgydjE0SDV6bTE3IDBIMTBjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTFWNmMwLS41NS0uNDUtMS0xLTF6bS0xIDEySDExVjdoMTB2MTB6bS0zLjU3LTQuMzgtMiAyLjU3TDE0IDEzLjQ3bC0yIDIuNTJoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtMy4xN0wxNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoNC4wNWwxLjgzLTJoNC4yNGwxLjgzIDJIMjB2MTJ6TTEyIDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDhjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMjB2Mmg1djJsMy0zLTMtM3Yyem05IDBoNXYyaC01ek0xMS45OSA4QzEzLjEgOCAxNCA3LjEgMTQgNnMtLjktMi0yLjAxLTJTMTAgNC45IDEwIDZzLjg5IDIgMS45OSAyek0xNyAwSDdDNS45IDAgNSAuOSA1IDJ2MTRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYyYzAtMS4xLS45LTItMi0yem0wIDE2SDd2LTJoMTB2MnptMC0zLjVjMC0xLjY3LTMuMzMtMi41LTUtMi41cy01IC44My01IDIuNVYyaDEwdjEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmFSZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIwdjJoNXYybDMtMy0zLTN2MnptOSAwaDV2MmgtNXptMy0yMEg3QzUuOSAwIDUgLjkgNSAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMnptMCAxNkg3VjJoMTB2MTR6bS01LTljMS4xIDAgMi0uOSAxLjk5LTIgMC0xLjEtLjktMi0yLTJTMTAgMy45IDEwIDVzLjg5IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtZXJhUm9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNWMwLTEuMS0uOS0yLTItMmgtMVYyYzAtLjU1LS40NS0xLTEtMUg2Yy0uNTUgMC0xIC40NS0xIDF2MUg0Yy0xLjEgMC0yIC45LTIgMnYxNWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJoOFY1aC04em02IDEzaC04djJINFY1aDNWM2gydjJoM3YyaDh2MTF6TTkgMTVoMnYySDl6bTAtN2gydjJIOXptNCA3aDJ2MmgtMnptMC03aDJ2MmgtMnptNCA3aDJ2MmgtMnptMC03aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMjUgMi4yNi0uMDgtLjA0LS4wMS4wMkMxMy40NiAyLjA5IDEyLjc0IDIgMTIgMiA2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtNC43NS0zLjMxLTguNzItNy43NS05Ljc0ek0xOS40MSA5aC03Ljk5bDIuNzEtNC43YzIuNC42NiA0LjM1IDIuNDIgNS4yOCA0Ljd6TTEzLjEgNC4wOCAxMC4yNyA5bC0xLjE1IDJMNi40IDYuM0E3Ljk1OCA3Ljk1OCAwIDAgMSAxMiA0Yy4zNyAwIC43NC4wMyAxLjEuMDh6TTUuNyA3LjA5IDguNTQgMTJsMS4xNSAySDQuMjZDNC4xIDEzLjM2IDQgMTIuNjkgNCAxMmMwLTEuODUuNjQtMy41NSAxLjctNC45MXpNNC41OSAxNWg3Ljk4bC0yLjcxIDQuN0E4LjAzMyA4LjAzMyAwIDAgMSA0LjU5IDE1em02LjMxIDQuOTFMMTQuODkgMTNsMi43MiA0LjdBOCA4IDAgMCAxIDEyIDIwYy0uMzggMC0uNzQtLjA0LTEuMS0uMDl6bTcuNC0zLTQtNi45MWg1LjQzYy4xNy42NC4yNyAxLjMxLjI3IDIgMCAxLjg1LS42NCAzLjU1LTEuNyA0LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTd2LTJIM1Y5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1VjNjMC0xLjEtLjktMi0yLTJoLTRjLTEuMSAwLTIgLjktMiAydjJINXYxMWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVoLTV6bS02LTJoNHYyaC00VjN6bTkgMTNIN1Y3aDE0djl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDZW50ZXJGb2N1c1N0cm9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDUgMi4yNCA1IDUgNSA1LTIuMjQgNS01em0tNSAzYy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3ptLTcgMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2VudGVyRm9jdXNXZWFrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptNyAzYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptNy0xMWgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbGxlY3Rpb25zQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTMgMnY1bC0xLS43NUwxNSA5VjRoMnptMyAxMkg4VjRoNXY5bDMtMi4yNUwxOSAxM1Y0aDF2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2xsZWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHYxMkg4VjRoMTJtMC0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTguNSA5LjY3IDEuNjkgMi4yNiAyLjQ4LTMuMUwxOSAxNUg5ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbG9yTGVucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyQzYuNDkgMjIgMiAxNy41MSAyIDEyUzYuNDkgMiAxMiAyczEwIDQuMDQgMTAgOWMwIDMuMzEtMi42OSA2LTYgNmgtMS43N2MtLjI4IDAtLjUuMjItLjUuNSAwIC4xMi4wNS4yMy4xMy4zMy40MS40Ny42NCAxLjA2LjY0IDEuNjdBMi41IDIuNSAwIDAgMSAxMiAyMnptMC0xOGMtNC40MSAwLTggMy41OS04IDhzMy41OSA4IDggOGMuMjggMCAuNS0uMjIuNS0uNWEuNTQuNTQgMCAwIDAtLjE0LS4zNWMtLjQxLS40Ni0uNjMtMS4wNS0uNjMtMS42NWEyLjUgMi41IDAgMCAxIDIuNS0yLjVIMTZjMi4yMSAwIDQtMS43OSA0LTQgMC0zLjg2LTMuNTktNy04LTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNi41XCIsXCJjeVwiOlwiMTEuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOS41XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNy41XCIsXCJjeVwiOlwiMTEuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2xvcml6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNjYgNS40MS45Mi45Mi0yLjY5IDIuNjktLjkyLS45MiAyLjY5LTIuNjlNMTcuNjcgM2MtLjI2IDAtLjUxLjEtLjcxLjI5bC0zLjEyIDMuMTItMS45My0xLjkxLTEuNDEgMS40MSAxLjQyIDEuNDJMMyAxNi4yNVYyMWg0Ljc1bDguOTItOC45MiAxLjQyIDEuNDIgMS40MS0xLjQxLTEuOTItMS45MiAzLjEyLTMuMTJjLjQtLjQuNC0xLjAzLjAxLTEuNDJsLTIuMzQtMi4zNGMtLjItLjE5LS40NS0uMjktLjctLjI5ek02LjkyIDE5IDUgMTcuMDhsOC4wNi04LjA2IDEuOTIgMS45Mkw2LjkyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29tcGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDV2MmgyVjFoLTJ2MnptMCAxNUg1bDUtNnY2em05LTE1aC01djJoNXYxM2wtNS02djloNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udHJhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmM1LjUyIDAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMHptMS0xNy45M2MzLjk0LjQ5IDcgMy44NSA3IDcuOTNzLTMuMDUgNy40NC03IDcuOTNWNC4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRyb2xQb2ludER1cGxpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOGgtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMmgtM1Y4ek0yIDEyYzAtMi43OSAxLjY0LTUuMiA0LjAxLTYuMzJWMy41MkMyLjUyIDQuNzYgMCA4LjA5IDAgMTJzMi41MiA3LjI0IDYuMDEgOC40OHYtMi4xNkE2Ljk5IDYuOTkgMCAwIDEgMiAxMnptMTMtOWMtNC45NiAwLTkgNC4wNC05IDlzNC4wNCA5IDkgOSA5LTQuMDQgOS05LTQuMDQtOS05LTl6bTAgMTZjLTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTcgNyAzLjE0IDcgNy0zLjE0IDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udHJvbFBvaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMCAxMC00LjQ5IDEwLTEwUzE3LjUxIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wMTY5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN0g1Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCA4SDVWOWgxNHY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JvcDMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNkg1Yy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEg1VjhoMTR2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3A1NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDVWNmgxNHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3A3NSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVINWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDEySDVWN2gxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BEaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wRnJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JvcExhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNUg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTJINVY3aDE0djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JvcE9yaWdpbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS01LjA0LTYuNzEtMi43NSAzLjU0LTEuOTYtMi4zNkw2LjUgMTdoMTFsLTMuNTQtNC43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BQb3J0cmFpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JvcFJvdGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40NyAyMS40OUM0LjIgMTkuOTMgMS44NiAxNi43NiAxLjUgMTNIMGMuNTEgNi4xNiA1LjY2IDExIDExLjk1IDExIC4yMyAwIC40NC0uMDIuNjYtLjAzTDguOCAyMC4xNWwtMS4zMyAxLjM0ek0xMi4wNSAwYy0uMjMgMC0uNDQuMDItLjY2LjA0bDMuODEgMy44MSAxLjMzLTEuMzNDMTkuOCA0LjA3IDIyLjE0IDcuMjQgMjIuNSAxMUgyNGMtLjUxLTYuMTYtNS42Ni0xMS0xMS45NS0xMXpNMTYgMTRoMlY4YTIgMiAwIDAgMC0yLTJoLTZ2Mmg2djZ6bS04IDJWNEg2djJINHYyaDJ2OGEyIDIgMCAwIDAgMiAyaDh2Mmgydi0yaDJ2LTJIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRINmMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDZWNmgxMnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE1aDJWN2MwLTEuMS0uOS0yLTItMkg5djJoOHY4ek03IDE3VjFINXY0SDF2Mmg0djEwYzAgMS4xLjkgMiAyIDJoMTB2NGgydi00aDR2LTJIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnJlbmN5Qml0Y29pbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjA2IDExLjU3Yy41OS0uNjkuOTQtMS41OS45NC0yLjU3IDAtMS44Ni0xLjI3LTMuNDMtMy0zLjg3VjNoLTJ2MmgtMlYzSDl2Mkg2djJoMnYxMEg2djJoM3YyaDJ2LTJoMnYyaDJ2LTJjMi4yMSAwIDQtMS43OSA0LTQgMC0xLjQ1LS43OC0yLjczLTEuOTQtMy40M3pNMTAgN2g0YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMmgtNFY3em01IDEwaC01di00aDVjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3VycmVuY3lGcmFuYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDVWM0g3djEzSDV2MmgydjNoMnYtM2g0di0ySDl2LTNoOHYtMkg5VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeUxpcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDguNzZWM2gydjQuNTFMMTUgNXYyLjM2bC00IDIuNTEuMDEgMi4zNUwxNSA5LjcydjIuMzZsLTQgMi41MVYxOWMyLjc2IDAgNS0yLjI0IDUtNWgyYzAgMy44Ny0zLjEzIDctNyA3SDl2LTUuMTZsLTMgMS44OHYtMi4zNmwzLTEuODh2LTIuMzZMNiAxM3YtMi4zNmwzLTEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVBvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMjFjMS45MyAwIDMuNjItMS4xNyA0LTNsLTEuNzUtLjg4QzE2IDE4LjIxIDE1LjMzIDE5IDE0IDE5SDkuMWMuODMtMSAxLjUtMi4zNCAxLjUtNCAwLS4zNS0uMDMtLjY5LS4wOC0xSDE0di0ySDkuODJDOSAxMC40MiA4IDkuNiA4IDhhMy41IDMuNSAwIDAgMSA2Ljc4LTEuMjJMMTYuNjMgNmMtLjgtMi4wNS0yLjc5LTMuNS01LjEzLTMuNUM4LjQ2IDIuNSA2IDQuOTYgNiA4YzAgMS43OC43OSAyLjkgMS40OSA0SDZ2MmgyLjQ3Yy4wOC4zMS4xMy42NC4xMyAxIDAgMi43LTIuNiA0LTIuNiA0djJoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnJlbmN5UnVibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDNIN3Y5SDV2MmgydjJINXYyaDJ2M2gydi0zaDR2LTJIOXYtMmg0LjVjMy4wNCAwIDUuNS0yLjQ2IDUuNS01LjVTMTYuNTQgMyAxMy41IDN6bTAgOUg5VjVoNC41QzE1LjQzIDUgMTcgNi41NyAxNyA4LjVTMTUuNDMgMTIgMTMuNSAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnJlbmN5UnVwZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy42NiA3Yy0uNTYtMS4xOC0xLjc2LTItMy4xNi0ySDZWM2gxMnYyaC0zLjI2Yy40OC41OC44NCAxLjI2IDEuMDUgMkgxOHYyaC0yLjAyYy0uMjUgMi44LTIuNjEgNS01LjQ4IDVoLS43M2w2LjczIDdoLTIuNzdMNyAxNHYtMmgzLjVjMS43NiAwIDMuMjItMS4zIDMuNDYtM0g2VjdoNy42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnJlbmN5WWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTIgMTFIMTh2MmgtNXYyaDV2MmgtNXY0aC0ydi00SDZ2LTJoNXYtMkg2di0yaDQuMDhMNSAzaDIuMzdMMTIgMTAuMjkgMTYuNjMgM0gxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnJlbmN5WXVhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjI4IDEySDE4djJoLTV2N2gtMnYtN0g2di0yaDQuNzJMNSAzaDIuMzdMMTIgMTAuMjkgMTYuNjMgM0gxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlYmx1ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjEwXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiM1wiLFwiY3lcIjpcIjEwXCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiM1wiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiMjFcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIzXCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM3YyYzMuODYgMCA3IDMuMTQgNyA3cy0zLjE0IDctNyA3djJjNC45NiAwIDktNC4wNCA5LTlzLTQuMDQtOS05LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWhhemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTZ2MmgyMHYtMkgyem0wLTV2MmgyMHYtMkgyem0wLTV2MmgyMFY2SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXRhaWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyAyIDIxaDIwTDEyIDN6bTEgNS45MkwxOC42IDE5SDEzVjguOTJ6bS0yIDBWMTlINS40TDExIDguOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJ0eUxlbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC03LjAyYy0uMjItLjg0LS41Mi0xLjc2LS4xMy0yLjMzLjgxLTEuMTIgMi42NyAxLjc3IDMuODEtLjA5Ljc3LTEuNTctMS41OC0xLjI5LTEuNjQtMi4xMi0uMDUtLjg0IDMuNjguMTcgMy4wNC0xLjY2LS42MS0xLjczLTIuNDIuNDgtMi43Ni0uNTMtLjU4LTEuNzQgNC43LTEuNjggMi44NS00LjAxLTEuNzYtMi4yMi0yLjQ3IDIuODUtNC40MSAyLjMzLTEuMzQtLjM2LTEuMDEtMi44OC0yLjY1LTIuNDQtMS44OC41MSAxLjAzIDIuMiAwIDIuODYtLjk2LjYzLTEuNzItLjkyLTIuNTEtMS4xOS0uMi0uMDctLjY5LS4wNS0uOTEuMTktLjc4Ljg2LjI4IDEuMTYuMjUgMS45MS0uMDIuNzUtMS41OS40OS0xLjUxIDEuNDkuMTIgMS42IDIuMTguNDUgMi40IDEuMjQuNTUgMS45OC0xLjg5IDIuMTUtLjUgMy4yNyAxLjUzLjcxIDEuOTEtMS45NCAyLjgtMS4zNS41OC4zOC4zIDEuNDUuMTYgMi40M0g0VjdoNC4wNWwxLjgzLTJoNC4yNGwxLjgzIDJIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjI4IDE3LjE1YzAgLjQ4LjM5Ljg2Ljg2Ljg2LjQ4IDAgLjg2LS4zOC44Ni0uODZzLS4zOS0uODYtLjg2LS44NmMtLjQ4IDAtLjg2LjM4LS44Ni44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjA2IDkuMDIuOTIuOTJMNS45MiAxOUg1di0uOTJsOS4wNi05LjA2TTE3LjY2IDNjLS4yNSAwLS41MS4xLS43LjI5bC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGMtLjItLjItLjQ1LS4yOS0uNzEtLjI5em0tMy42IDMuMTlMMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV1cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOC41QTYuNDggNi40OCAwIDAgMSA5LjI0IDE1SDE1bDEtMkg4LjU4Yy0uMDUtLjMzLS4wOC0uNjYtLjA4LTFzLjAzLS42Ny4wOC0xSDE1bDEtMkg5LjI0QTYuNDkxIDYuNDkxIDAgMCAxIDE1IDUuNWMxLjYxIDAgMy4wOS41OSA0LjIzIDEuNTdMMjEgNS4zQTguOTU1IDguOTU1IDAgMCAwIDE1IDNjLTMuOTIgMC03LjI0IDIuNTEtOC40OCA2SDNsLTEgMmg0LjA2YTguMjYyIDguMjYyIDAgMCAwIDAgMkgzbC0xIDJoNC41MmMxLjI0IDMuNDkgNC41NiA2IDguNDggNiAyLjMxIDAgNC40MS0uODcgNi0yLjNsLTEuNzgtMS43N2MtMS4xMy45OC0yLjYgMS41Ny00LjIyIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBvc3VyZU5lZzEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTF2Mmg4di0ySDR6bTE1IDdoLTJWNy4zOEwxNCA4LjRWNi43TDE4LjcgNWguM3YxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4cG9zdXJlTmVnMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuMDUgMTYuMjkgMi44Ni0zLjA3Yy4zOC0uMzkuNzItLjc5IDEuMDQtMS4xOC4zMi0uMzkuNTktLjc4LjgyLTEuMTdzLjQxLS43OC41NC0xLjE3LjE5LS43OS4xOS0xLjE4YzAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2cy0uNDQtLjgxLS43OC0xLjExYy0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzFBNS43MiA1LjcyIDAgMCAwIDE2LjQ3IDVjLS42OSAwLTEuMzEuMTEtMS44NS4zMi0uNTQuMjEtMSAuNTEtMS4zNi44OC0uMzcuMzctLjY1LjgtLjg0IDEuMy0uMTguNDctLjI3Ljk3LS4yOCAxLjVoMi4xNGMuMDEtLjMxLjA1LS42LjEzLS44Ny4wOS0uMjkuMjMtLjU0LjQtLjc1LjE4LS4yMS40MS0uMzcuNjgtLjQ5cy42LS4xOC45Ni0uMThjLjMxIDAgLjU4LjA1LjgxLjE1cy40My4yNS41OS40My4yOC40LjM3LjY1Yy4wOC4yNS4xMy41Mi4xMy44MSAwIC4yMi0uMDMuNDMtLjA4LjY1LS4wNi4yMi0uMTUuNDUtLjI5LjctLjE0LjI1LS4zMi41My0uNTYuODMtLjIzLjMtLjUyLjY1LS44OCAxLjAzbC00LjE3IDQuNTVWMThIMjF2LTEuNzFoLTUuOTV6TTIgMTF2Mmg4di0ySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBvc3VyZVBsdXMxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA3SDh2NEg0djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0xMCAxMWgtMlY3LjM4TDE1IDguNFY2LjdMMTkuNyA1aC4zdjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwb3N1cmVQbHVzMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuMDUgMTYuMjkgMi44Ni0zLjA3Yy4zOC0uMzkuNzItLjc5IDEuMDQtMS4xOC4zMi0uMzkuNTktLjc4LjgyLTEuMTdzLjQxLS43OC41NC0xLjE3Yy4xMy0uMzkuMTktLjc5LjE5LTEuMTggMC0uNTMtLjA5LTEuMDItLjI3LTEuNDZzLS40NC0uODEtLjc4LTEuMTFjLS4zNC0uMzEtLjc3LS41NC0xLjI2LS43MUE1LjcyIDUuNzIgMCAwIDAgMTcuNDcgNWMtLjY5IDAtMS4zMS4xMS0xLjg1LjMyLS41NC4yMS0xIC41MS0xLjM2Ljg4LS4zNy4zNy0uNjUuOC0uODQgMS4zLS4xOC40Ny0uMjcuOTctLjI4IDEuNWgyLjE0Yy4wMS0uMzEuMDUtLjYuMTMtLjg3LjA5LS4yOS4yMy0uNTQuNC0uNzUuMTgtLjIxLjQxLS4zNy42OC0uNDlzLjYtLjE4Ljk2LS4xOGMuMzEgMCAuNTguMDUuODEuMTVzLjQzLjI1LjU5LjQzLjI4LjQuMzcuNjVjLjA4LjI1LjEzLjUyLjEzLjgxIDAgLjIyLS4wMy40My0uMDguNjUtLjA2LjIyLS4xNS40NS0uMjkuNy0uMTQuMjUtLjMyLjUzLS41Ni44My0uMjMuMy0uNTIuNjUtLjg4IDEuMDNsLTQuMTcgNC41NVYxOEgyMnYtMS43MWgtNS45NXpNOCA3SDZ2NEgydjJoNHY0aDJ2LTRoNHYtMkg4Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBvc3VyZVplcm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjE0IDEyLjVjMCAxLS4xIDEuODUtLjMgMi41NXMtLjQ4IDEuMjctLjgzIDEuN2MtLjM2LjQ0LS43OS43NS0xLjMuOTVzLTEuMDcuMy0xLjcuM2MtLjYyIDAtMS4xOC0uMS0xLjY5LS4zLS41MS0uMi0uOTUtLjUxLTEuMzEtLjk1cy0uNjUtMS4wMS0uODUtMS43Yy0uMi0uNy0uMy0xLjU1LS4zLTIuNTV2LTIuMDRjMC0xIC4xLTEuODUuMy0yLjU1LjItLjcuNDgtMS4yNi44NC0xLjY5LjM2LS40My44LS43NCAxLjMxLS45M0MxMC44MSA1LjEgMTEuMzggNSAxMiA1Yy42MyAwIDEuMTkuMSAxLjcuMjkuNTEuMTkuOTUuNSAxLjMxLjkzLjM2LjQzLjY0Ljk5Ljg0IDEuNjkuMi43LjMgMS41NC4zIDIuNTV2Mi4wNGgtLjAxem0tMi4xMS0yLjM2YzAtLjY0LS4wNS0xLjE4LS4xMy0xLjYyLS4wOS0uNDQtLjIyLS43OS0uNC0xLjA2LS4xNy0uMjctLjM5LS40Ni0uNjQtLjU4LS4yNS0uMTMtLjU0LS4xOS0uODYtLjE5cy0uNjEuMDYtLjg2LjE4LS40Ny4zMS0uNjQuNTgtLjMxLjYyLS40IDEuMDYtLjEzLjk4LS4xMyAxLjYydjIuNjdjMCAuNjQuMDUgMS4xOC4xNCAxLjYyLjA5LjQ1LjIzLjgxLjQgMS4wOXMuMzkuNDguNjQuNjEuNTQuMTkuODcuMTkuNjItLjA2Ljg3LS4xOS40Ni0uMzMuNjMtLjYxLjMtLjY0LjM5LTEuMDkuMTMtLjk5LjEzLTEuNjJ2LTIuNjZoLS4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4cG9zdXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0xLjQxIDJMNSAxNy41OVY1aDEyLjU5ek02LjQxIDE5IDE5IDYuNDFWMTlINi40MXpNNiA3aDV2MS41SDZ6bTEwIDUuNWgtMS41djJoLTJWMTZoMnYySDE2di0yaDJ2LTEuNWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2VSZXRvdWNoaW5nTmF0dXJhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljg5IDEwLjc1Yy4wNy40MS4xMS44Mi4xMSAxLjI1IDAgNC40MS0zLjU5IDgtOCA4cy04LTMuNTktOC04YzAtLjA1LjAxLS4xIDAtLjE0IDIuNi0uOTggNC42OS0yLjk5IDUuNzQtNS41NSAzLjM4IDQuMTQgNy45NyAzLjczIDguOTkgMy42MWwtLjg5LTEuOTNjLS4xMy4wMS00LjYyLjM4LTcuMTgtMy44NiAxLjAxLS4xNiAxLjcxLS4xNSAyLjU5LS4wMSAyLjUyLTEuMTUgMS45My0uODkgMi43Ni0xLjI2QTkuNjIgOS42MiAwIDAgMCAxMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBjMC0xLjQzLS4zLTIuNzgtLjg0LTQuMDFsLTEuMjcgMi43NnpNOC4wOCA1LjAzYTguMDQ2IDguMDQ2IDAgMCAxLTMuNjYgNC40NCA4LjA0NiA4LjA0NiAwIDAgMSAzLjY2LTQuNDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMyA0LjUtMi40LTEuMUwxOS41IDFsLTEuMSAyLjRMMTYgNC41bDIuNCAxLjFMMTkuNSA4bDEuMS0yLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlUmV0b3VjaGluZ09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTBjLjc1IDAgMS40Ny0uMDkgMi4xNy0uMjQuMjEuNzEuMzMgMS40Ni4zMyAyLjI0IDAgMS4yMi0uMjggMi4zNy0uNzcgMy40bDEuNDkgMS40OUE5Ljk4MSA5Ljk4MSAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0xLjc4IDAtMy40NC40Ny00Ljg5IDEuMjhsNS4zMyA1LjMzYzEuNDkuODggMy4yMSAxLjM5IDUuMDYgMS4zOXptLTYuODQtNS44OGMuNDMtLjA3Ljg4LS4xMiAxLjM0LS4xMiAyLjkgMCA1LjQ0IDEuNTYgNi44NCAzLjg4LS40My4wNy0uODguMTItMS4zNC4xMi0yLjkgMC01LjQ0LTEuNTYtNi44NC0zLjg4ek0xLjg5IDMuNzJsMi4xOSAyLjE5QTkuOTU4IDkuOTU4IDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4yOSAwIDQuNC0uNzggNi4wOS0yLjA4bDIuMTkgMi4xOSAxLjQxLTEuNDFMMy4zMSAyLjMxIDEuODkgMy43MnptMTQuNzcgMTQuNzdBNy45MSA3LjkxIDAgMCAxIDEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLS4wNS4wMS0uMSAwLS4xNGE5Ljk0NiA5Ljk0NiAwIDAgMCAzLjY0LTIuMzlsOS4wMiA5LjAyek02LjIzIDguMDZjLS41My41NS0xLjE0IDEuMDMtMS44MSAxLjQxLjI2LS43Ny42My0xLjQ4IDEuMDktMi4xM2wuNzIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXIxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTEgMTBoMlY1aC00djJoMnY4em03LTE0SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXIyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tNC00aC00di0yaDJhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJoLTR2Mmg0djJoLTJhMiAyIDAgMCAwLTIgMnY0aDZ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXIzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxSDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6TTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xNCA4di0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjdhMiAyIDAgMCAwLTItMmgtNHYyaDR2MmgtMnYyaDJ2MmgtNHYyaDRhMiAyIDAgMCAwIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlcjQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMiAxMGgyVjVoLTJ2NGgtMlY1aC0ydjZoNHY0em02LTE0SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMUg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTQgOHYtMmEyIDIgMCAwIDAtMi0yaC0yVjdoNFY1aC02djZoNHYyaC00djJoNGEyIDIgMCAwIDAgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE4LTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHptLTgtMmgyYTIgMiAwIDAgMCAyLTJ2LTJhMiAyIDAgMCAwLTItMmgtMlY3aDRWNWgtNGEyIDIgMCAwIDAtMiAydjZhMiAyIDAgMCAwIDIgMnptMC00aDJ2MmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlcjcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTIgNC04VjVoLTZ2Mmg0bC00IDhoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlcjggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmEyIDIgMCAwIDAgMi0ydi0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjdhMiAyIDAgMCAwLTItMmgtMmEyIDIgMCAwIDAtMiAydjEuNWMwIC44My42NyAxLjUgMS41IDEuNS0uODMgMC0xLjUuNjctMS41IDEuNVYxM2EyIDIgMCAwIDAgMiAyem0wLThoMnYyaC0yVjd6bTAgNGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI5UGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTExIDdWOGEyIDIgMCAwIDAtMi0yaC0xYTIgMiAwIDAgMC0yIDJ2MWEyIDIgMCAwIDAgMiAyaDF2MUg5djJoM2EyIDIgMCAwIDAgMi0yem0tMy0zVjhoMXYxaC0xem0xMC04SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCA4aC0yVjdoLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2Nkg3VjNoMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlcjkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6TTE1IDVoLTJhMiAyIDAgMCAwLTIgMnYyYTIgMiAwIDAgMCAyIDJoMnYyaC00djJoNGEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMnptMCA0aC0yVjdoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyQkFuZFcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LTctOHY4SDVsNy04VjVoN3YxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckNlbnRlckZvY3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6TTEyIDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyRHJhbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0YTcuNDggNy40OCAwIDAgMC02LjY0IDQuMDRBNS45OTYgNS45OTYgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0aDJjMC0yLjc2LTEuODYtNS4wOC00LjQtNS43OEM4LjYxIDYuODggMTAuMiA2IDEyIDZjMy4wMyAwIDUuNSAyLjQ3IDUuNSA1LjV2LjVIMTljMS42NSAwIDMgMS4zNSAzIDNzLTEuMzUgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJGcmFtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC00bC00LTQtNCA0SDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNkg0VjZoNC41MmwzLjUyLTMuNUwxNS41MiA2SDIwdjE0ek02IDE4aDEyVjhINnYxMHptMi04aDh2Nkg4di02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVySGRyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTQuMjIgNS42MyAxLjI1IDEuNjdMMTQgOS4zMyAxOSAxNmgtOC40NmwtNC4wMS01LjM3TDEgMThoMjJMMTQgNnpNNSAxNmwxLjUyLTIuMDNMOC4wNCAxNkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyTm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE4LTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlclRpbHRTaGlmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNC4wN1YyLjA1Yy0yLjAxLjItMy44NCAxLTUuMzIgMi4yMUw3LjEgNS42OUE3Ljk0MSA3Ljk0MSAwIDAgMSAxMSA0LjA3em03LjMyLjE5QTkuOTQ5IDkuOTQ5IDAgMCAwIDEzIDIuMDV2Mi4wMmMxLjQ2LjE4IDIuNzkuNzYgMy45IDEuNjJsMS40Mi0xLjQzek0xOS45MyAxMWgyLjAyYy0uMi0yLjAxLTEtMy44NC0yLjIxLTUuMzJMMTguMzEgNy4xYTcuOTQxIDcuOTQxIDAgMCAxIDEuNjIgMy45ek01LjY5IDcuMSA0LjI2IDUuNjhBOS45NDkgOS45NDkgMCAwIDAgMi4wNSAxMWgyLjAyYy4xOC0xLjQ2Ljc2LTIuNzkgMS42Mi0zLjl6TTQuMDcgMTNIMi4wNWMuMiAyLjAxIDEgMy44NCAyLjIxIDUuMzJsMS40My0xLjQzQTcuODY4IDcuODY4IDAgMCAxIDQuMDcgMTN6TTE1IDEyYzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzIDEuMzQgMyAzIDMgMy0xLjM0IDMtM3ptMy4zMSA0LjkgMS40MyAxLjQzYTkuOTgxIDkuOTgxIDAgMCAwIDIuMjEtNS4zMmgtMi4wMmE3Ljk0NSA3Ljk0NSAwIDAgMS0xLjYyIDMuODl6TTEzIDE5LjkzdjIuMDJjMi4wMS0uMiAzLjg0LTEgNS4zMi0yLjIxbC0xLjQzLTEuNDNjLTEuMS44Ni0yLjQzIDEuNDQtMy44OSAxLjYyem0tNy4zMi0uMTlBOS45ODEgOS45ODEgMCAwIDAgMTEgMjEuOTV2LTIuMDJhNy45NDEgNy45NDEgMCAwIDEtMy45LTEuNjJsLTEuNDIgMS40M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlclZpbnRhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjcgMTIuNGE2LjA2IDYuMDYgMCAwIDAtLjg2LS40Yy4yOS0uMTEuNTgtLjI0Ljg2LS40YTYuMDEyIDYuMDEyIDAgMCAwIDMtNS4xOWMtLjkxLS41Mi0xLjk1LS44LTMuMDEtLjgtMS4wMiAwLTIuMDUuMjYtMi45OS44LS4yOC4xNi0uNTQuMzUtLjc4LjU0LjA1LS4zMS4wOC0uNjMuMDgtLjk1IDAtMi4yMi0xLjIxLTQuMTUtMy01LjE5QzEwLjIxIDEuODUgOSAzLjc4IDkgNmMwIC4zMi4wMy42NC4wOC45NS0uMjQtLjItLjUtLjM5LS43OC0uNTUtLjk0LS41NC0xLjk3LS44LTIuOTktLjgtMS4wNSAwLTIuMS4yOC0zLjAxLjhhNS45NyA1Ljk3IDAgMCAwIDMgNS4xOWMuMjguMTYuNTcuMjkuODYuNC0uMjkuMTEtLjU4LjI0LS44Ni40YTYuMDEyIDYuMDEyIDAgMCAwLTMgNS4xOWMuOTEuNTIgMS45NS44IDMuMDEuOCAxLjAyIDAgMi4wNS0uMjYgMi45OS0uOC4yOC0uMTYuNTQtLjM1Ljc4LS41NC0uMDUuMzItLjA4LjY0LS4wOC45NiAwIDIuMjIgMS4yMSA0LjE1IDMgNS4xOSAxLjc5LTEuMDQgMy0yLjk3IDMtNS4xOSAwLS4zMi0uMDMtLjY0LS4wOC0uOTUuMjQuMi41LjM4Ljc4LjU0Ljk0LjU0IDEuOTcuOCAyLjk5LjggMS4wNSAwIDIuMS0uMjggMy4wMS0uOGE2LjAxMiA2LjAxMiAwIDAgMC0zLTUuMTl6bS0yLjU0LTMuODhjLjIxLS4xNy4zOC0uMjkuNTQtLjM3LjYxLS4zNSAxLjMtLjU0IDItLjU0LjI3IDAgLjUzLjAzLjc5LjA4LS4zMS45MS0uOTQgMS42OS0xLjc4IDIuMTgtLjE3LjEtLjM2LjE4LS41OC4yN2wtMS4zOC41MmMtLjE3LS40Ni0uNDEtLjg3LS43Mi0xLjI0bDEuMTMtLjl6TTEyIDMuMzdjLjYzLjcyIDEgMS42NiAxIDIuNjMgMCAuMTktLjAyLjQxLS4wNS42M2wtLjIzIDEuNDRDMTIuNDggOC4wMyAxMi4yNCA4IDEyIDhzLS40OC4wMy0uNzEuMDdsLS4yMy0xLjQ0QzExLjAyIDYuNDEgMTEgNi4xOSAxMSA2YzAtLjk4LjM3LTEuOTEgMS0yLjYzek00LjUxIDcuNjhjLjI2LS4wNi41My0uMDguOC0uMDguNjkgMCAxLjM4LjE4IDEuOTkuNTQuMTUuMDkuMzIuMi40OS4zNWwxLjE1Ljk2Yy0uMy4zNi0uNTMuNzYtLjcgMS4ybC0xLjM4LS41MmMtLjIxLS4wOS0uNC0uMTgtLjU2LS4yNy0uODctLjUtMS40OS0xLjI3LTEuNzktMi4xOHptMy4zMyA3Ljc5Yy0uMjEuMTctLjM4LjI5LS41NC4zNy0uNjEuMzUtMS4zLjU0LTIgLjU0LS4yNyAwLS41My0uMDMtLjc5LS4wOC4zMS0uOTEuOTQtMS42OSAxLjc4LTIuMTguMTctLjEuMzYtLjE4LjU4LS4yN2wxLjM4LS41MmMuMTYuNDYuNDEuODguNzIgMS4yNGwtMS4xMy45ek0xMiAyMC42M2MtLjYzLS43Mi0xLTEuNjYtMS0yLjYzIDAtLjIuMDItLjQxLjA2LS42NWwuMjItMS40MmMuMjMuMDQuNDcuMDcuNzIuMDcuMjQgMCAuNDgtLjAzLjcxLS4wN2wuMjMgMS40NGMuMDQuMjIuMDYuNDQuMDYuNjMgMCAuOTgtLjM3IDEuOTEtMSAyLjYzem02LjY5LTQuMjRhMy45MTYgMy45MTYgMCAwIDEtMi40OC0uODhsLTEuMTUtLjk2Yy4zLS4zNi41NC0uNzYuNy0xLjIxbDEuMzguNTJjLjIyLjA4LjQxLjE3LjU3LjI2Ljg1LjQ5IDEuNDcgMS4yNyAxLjc4IDIuMTgtLjI3LjA3LS41NC4wOS0uOC4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuOTYgMTAuMjktMi43NSAzLjU0LTEuOTYtMi4zNkw4LjUgMTVoMTFsLTMuNTQtNC43MXpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE4LTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDExSDF2Mmg2di0yem0yLjE3LTMuMjRMNy4wNSA1LjY0IDUuNjQgNy4wNWwyLjEyIDIuMTIgMS40MS0xLjQxek0xMyAxaC0ydjZoMlYxem01LjM2IDYuMDUtMS40MS0xLjQxLTIuMTIgMi4xMiAxLjQxIDEuNDEgMi4xMi0yLjEyek0xNyAxMXYyaDZ2LTJoLTZ6bS01LTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0yLjgzIDcuMjQgMi4xMiAyLjEyIDEuNDEtMS40MS0yLjEyLTIuMTItMS40MSAxLjQxem0tOS4xOS43MSAxLjQxIDEuNDEgMi4xMi0yLjEyLTEuNDEtMS40MS0yLjEyIDIuMTJ6TTExIDIzaDJ2LTZoLTJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsYXNoQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAydjEyaDN2OWw3LTEySDlsNC05SDN6bTE2IDBoLTJsLTMuMiA5aDEuOWwuNy0yaDMuMmwuNyAyaDEuOUwxOSAyem0tMi4xNSA1LjY1TDE4IDRsMS4xNSAzLjY1aC0yLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFzaE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTBoLTMuNjFsMi4yOCAyLjI4em0wLThIN3YxLjYxbDYuMTMgNi4xM3ptLTEzLjU5Ljg2TDIgNC4yN2w1IDVWMTNoM3Y5bDMuNTgtNi4xNUwxNy43MyAyMGwxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFzaE9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDJ2MTFoM3Y5bDctMTJoLTRsMy04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxpcENhbWVyYUFuZHJvaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzem00IDBjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMFY4SDUuMDlDNi40NyA1LjYxIDkuMDUgNCAxMiA0YzMuNzIgMCA2Ljg1IDIuNTYgNy43NCA2aDIuMDZjLS45My00LjU2LTQuOTYtOC05LjgtOC0zLjI3IDAtNi4xOCAxLjU4LTggNC4wMVY0SDJ2Nmg2ek0xNiAxNHYyaDIuOTFjLTEuMzggMi4zOS0zLjk2IDQtNi45MSA0LTMuNzIgMC02Ljg1LTIuNTYtNy43NC02SDIuMmMuOTMgNC41NiA0Ljk2IDggOS44IDggMy4yNyAwIDYuMTgtMS41OCA4LTQuMDFWMjBoMnYtNmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsaXBDYW1lcmFJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0SDRWN2g0LjA1bC41OS0uNjVMOS44OCA1aDQuMjRsMS4yNCAxLjM1LjU5LjY1SDIwdjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxN2MtMi4yMSAwLTQtMS43OS00LTRoMmwtMi41LTIuNUw1IDEzaDJjMCAyLjc2IDIuMjQgNSA1IDUgLjg2IDAgMS42NS0uMjQgMi4zNi0uNjJsLS43NC0uNzRjLS40OS4yMy0xLjA0LjM2LTEuNjIuMzZ6TTEyIDhjLS44NiAwLTEuNjUuMjQtMi4zNi42MmwuNzQuNzNDMTAuODcgOS4xMyAxMS40MiA5IDEyIDljMi4yMSAwIDQgMS43OSA0IDRoLTJsMi41IDIuNUwxOSAxM2gtMmMwLTIuNzYtMi4yNC01LTUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDIxaDJ2LTJoLTJ2MnptNC0xMmgyVjdoLTJ2MnpNMyA1djE0YzAgMS4xLjkgMiAyIDJoNHYtMkg1VjVoNFYzSDVjLTEuMSAwLTIgLjktMiAyem0xNi0ydjJoMmMwLTEuMS0uOS0yLTItMnptLTggMjBoMlYxaC0ydjIyem04LTZoMnYtMmgtMnYyek0xNSA1aDJWM2gtMnYyem00IDhoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYWRpZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOWgydjJoLTJWOXptLTIgMmgydjJIOXYtMnptNCAwaDJ2MmgtMnYtMnptMi0yaDJ2MmgtMlY5ek03IDloMnYySDdWOXptMTItNkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMThIN3YtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTItN2gtMnYyaDJ2MmgtMnYtMmgtMnYyaC0ydi0yaC0ydjJIOXYtMkg3djJINXYtMmgydi0ySDVWNWgxNHY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpNNiA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTItOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bS00IDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmlkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDR2Ljg5bDIgMlY0aDR2NGgtMi44OWwyIDJIMTR2Ljg5bDIgMlYxMGg0djRoLTIuODlsMiAySDIwdi44OWwyIDJWNGMwLTEuMS0uOS0yLTItMkg1LjExbDIgMkg4em04IDBoNHY0aC00VjR6TTEuNDEgMS4xNCAwIDIuNTVsMiAyVjIwYzAgMS4xLjkgMiAyIDJoMTUuNDVsMi4wMSAyLjAxIDEuNDEtMS40MUwxLjQxIDEuMTR6TTEwIDEyLjU1IDExLjQ1IDE0SDEwdi0xLjQ1em0tNi02TDUuNDUgOEg0VjYuNTV6TTggMjBINHYtNGg0djR6bTAtNkg0di00aDMuNDVsLjU1LjU1VjE0em02IDZoLTR2LTRoMy40NWwuNTUuNTVWMjB6bTIgMHYtMS40NUwxNy40NSAyMEgxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyaWRPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTggMjBINHYtNGg0djR6bTAtNkg0di00aDR2NHptMC02SDRWNGg0djR6bTYgMTJoLTR2LTRoNHY0em0wLTZoLTR2LTRoNHY0em0wLTZoLTRWNGg0djR6bTYgMTJoLTR2LTRoNHY0em0wLTZoLTR2LTRoNHY0em0wLTZoLTRWNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZHJFbmhhbmNlZFNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNiAyLjY5LTYgNi02em0wIDJDOS43OSA0IDggNS43OSA4IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTEgN2gtMlY5SDlWN2gyVjVoMnYyaDJ2MmgtMnYyem0xMSA5aC0ydjJoLTEuNXYtMmgtMnYtMS41aDJ2LTJIMjJ2MmgyVjIwem0tNi0xLjVjMCAuNi0uNCAxLjEtLjkgMS40TDE4IDIyaC0xLjVsLS45LTJoLTEuMXYySDEzdi02aDMuNWMuOCAwIDEuNS43IDEuNSAxLjV2MXptLTEuNSAwdi0xaC0ydjFoMnptLTEzLS41di0ySDV2NkgzLjV2LTIuNWgtMlYyMkgwdi02aDEuNXYyaDJ6bTYuNS0yYy44IDAgMS41LjcgMS41IDEuNXYzYzAgLjgtLjcgMS41LTEuNSAxLjVINi41di02SDEwem0wIDQuNXYtM0g4djNoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhkck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAxNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY0Ljg2TDE3LjE0IDE1aC4zNnptMC00LjVoMnYxaC0ydi0xem0tNC41IDB2LjM2bDEuNSAxLjVWMTAuNWMwLS44LS43LTEuNS0xLjUtMS41aC0xLjg2bDEuNSAxLjVIMTN6TTIuNTEgMi40OSAxLjQ1IDMuNTUgNi45IDloLS40djJoLTJWOUgzdjZoMS41di0yLjVoMlYxNUg4di00LjlsMS41IDEuNVYxNWgzLjRsNy42IDcuNiAxLjA2LTEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZHJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTEuNXYtMWMwLS44LS43LTEuNS0xLjUtMS41SDE2djZoMS41di0yaDEuMWwuOSAySDIxbC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHptLTEuNSAwaC0ydi0xaDJ2MXptLTEzLS41aC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOFY5SDYuNXYyek0xMyA5SDkuNXY2SDEzYy44IDAgMS41LS43IDEuNS0xLjV2LTNjMC0uOC0uNy0xLjUtMS41LTEuNXptMCA0LjVoLTJ2LTNoMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMTMgMTljMS4xNS42NCAyLjQ3IDEgMy44NyAxIDQuNDEgMCA4LTMuNTkgOC04cy0zLjU5LTgtOC04LTggMy41OS04IDhjMCAyLjUyIDEuMTcgNC43NyAzIDYuMjRWMTNoMy41Yy44IDAgMS41LjcgMS41IDEuNXYxYzAgLjYtLjQgMS4xLS45IDEuNEwxMiAxOWgtMS41bC0uOS0ySDguNXYyaC0uMzd6TTEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTBzLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyIDYuNDggMiAxMiAyem01LjUgMTRIMTZ2MS41aC0xLjVWMTZIMTN2LTEuNWgxLjVWMTNIMTZ2MS40OWgxLjVWMTZ6bS03LS41di0xaC0ydjFoMnptMC03LjVWNkgxMnY2aC0xLjVWOS41aC0yVjEySDdWNmgxLjV2Mmgyek0xNiA2Yy44IDAgMS41LjcgMS41IDEuNXYzYzAgLjgtLjcgMS41LTEuNSAxLjVoLTNWNmgzem0wIDQuNXYtM2gtMS41djNIMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZHJTdHJvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02ek01IDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyV2VhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMTItMmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTAgMTBjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNzMgMTIuMDIgMy45OC0zLjk4YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtNC4zNC00LjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMy45OCAzLjk4TDggMi4yOWExLjAwMSAxLjAwMSAwIDAgMC0xLjQxIDBMMi4yNSA2LjYzYS45OTYuOTk2IDAgMCAwIDAgMS40MWwzLjk4IDMuOThMMi4yNSAxNmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsNC4zNCA0LjM0Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwzLjk4LTMuOTggMy45OCAzLjk4Yy4yLjIuNDUuMjkuNzEuMjkuMjYgMCAuNTEtLjEuNzEtLjI5bDQuMzQtNC4zNGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTMuOTktMy45OHpNMTIgOWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tNC43MSAxLjk2TDMuNjYgNy4zNGwzLjYzLTMuNjMgMy42MiAzLjYyLTMuNjIgMy42M3pNMTAgMTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMiAyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTItNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0yLjY2IDkuMzQtMy42My0zLjYyIDMuNjMtMy42MyAzLjYyIDMuNjItMy42MiAzLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGV2YyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSAxMWgtMVY5SDN2NmgxLjV2LTIuNWgxVjE1SDdWOUg1LjV6TTIxIDExdi0xYzAtLjU1LS40NS0xLTEtMWgtMmMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTFoLTEuNXYuNWgtMXYtM2gxdi41SDIxek0xNC4yNSAxMy41IDEzLjUgOUgxMmwxIDZoMi41bDEtNkgxNXpNOCA5djZoMy41di0xLjVoLTJ2LTFoMlYxMWgtMnYtLjVoMlY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlkZUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxMS4xN2wyIDJWNWMwLTEuMS0uOS0yLTItMkg1LjgzbDIgMkgxOXpNMi44MSAyLjgxIDEuMzkgNC4yMiAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wxLjYxIDEuNjEgMS40MS0xLjQxTDIuODEgMi44MXpNNSAxOVY3LjgzbDcuMDcgNy4wNy0uODIgMS4xTDkgMTNsLTMgNGg4LjE3bDIgMkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW1hZ2VBc3BlY3RSYXRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEwaC0ydjJoMnYtMnptMCA0aC0ydjJoMnYtMnptLTgtNEg2djJoMnYtMnptNCAwaC0ydjJoMnYtMnptOC02SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbWFnZU5vdFN1cHBvcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjkgMjEuOS02LjEtNi4xLTIuNjktMi42OUw1IDUgMy41OSAzLjU5IDIuMSAyLjEuNjkgMy41MSAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wyLjMxIDIuMzEgMS40Mi0xLjQxek01IDE5VjcuODNsNi44NCA2Ljg0LS44NCAxLjA1TDkgMTNsLTMgNGg4LjE3bDIgMkg1ek03LjgzIDVsLTItMkgxOWMxLjEgMCAyIC45IDIgMnYxMy4xN2wtMi0yVjVINy44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltYWdlU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM3Y3SDRWNmg1LjAyYy4wNS0uNzEuMjItMS4zOC40OC0ySDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTVsLTItMnptLTEuNSA1aC0xMWwyLjc1LTMuNTMgMS45NiAyLjM2IDIuNzUtMy41NEwxNi41IDE4em0yLjgtOS4xMWMuNDQtLjcuNy0xLjUxLjctMi4zOUMyMCA0LjAxIDE3Ljk5IDIgMTUuNSAyUzExIDQuMDEgMTEgNi41czIuMDEgNC41IDQuNDkgNC41Yy44OCAwIDEuNy0uMjYgMi4zOS0uN0wyMSAxMy40MiAyMi40MiAxMiAxOS4zIDguODl6TTE1LjUgOWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNC44NiA4Ljg2LTMgMy44N0w5IDEzLjE0IDYgMTdoMTJsLTMuODYtNS4xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluY29tcGxldGVDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0yLjc2IDEuMTItNS4yNiAyLjkzLTcuMDdMMTIgMTJWMmM1LjUyIDAgMTAgNC40OCAxMCAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUlzbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTUuNSA3LjVoMnYtMkg5djJoMlY5SDl2Mkg3LjVWOWgtMlY3LjV6TTE5IDE5SDVMMTkgNXYxNHptLTItMnYtMS41aC01VjE3aDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDYtNC4yMiA1LjYzIDEuMjUgMS42N0wxNCA5LjMzIDE5IDE2aC04LjQ2bC00LjAxLTUuMzdMMSAxOGgyMkwxNCA2ek01IDE2bDEuNTItMi4wM0w4LjA0IDE2SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMZWFrQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDNIM3YzYzEuNjYgMCAzLTEuMzQgMy0zem04IDBoLTJhOSA5IDAgMCAxLTkgOXYyYzYuMDggMCAxMS00LjkzIDExLTExem0tNCAwSDhjMCAyLjc2LTIuMjQgNS01IDV2MmMzLjg3IDAgNy0zLjEzIDctN3ptMCAxOGgyYTkgOSAwIDAgMSA5LTl2LTJjLTYuMDcgMC0xMSA0LjkzLTExIDExem04IDBoM3YtM2MtMS42NiAwLTMgMS4zNC0zIDN6bS00IDBoMmMwLTIuNzYgMi4yNC01IDUtNXYtMmMtMy44NyAwLTcgMy4xMy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMZWFrUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAzaC0yYzAgMS4zNS0uMzEgMi42My0uODQgMy43N2wxLjQ5IDEuNDlDMTMuNTEgNi43IDE0IDQuOTEgMTQgM3ptNyA5di0yYy0xLjkxIDAtMy43LjQ5LTUuMjcgMS4zNWwxLjQ5IDEuNDljMS4xNS0uNTMgMi40My0uODQgMy43OC0uODR6bTAgNHYtMmMtLjc5IDAtMS41NC4xMy0yLjI0LjM3bDEuNjggMS42OGMuMTktLjAxLjM3LS4wNS41Ni0uMDV6TTEwIDNIOGMwIC4xOS0uMDQuMzctLjA2LjU2bDEuNjggMS42OGMuMjUtLjcuMzgtMS40Ni4zOC0yLjI0em0tNS41OS0uMTRMMyA0LjI3bDIuODQgMi44NEM1LjAzIDcuNjcgNC4wNiA4IDMgOHYyYzEuNjEgMCAzLjA5LS41NSA0LjI3LTEuNDZMOC43IDkuOTdBOC45OSA4Ljk5IDAgMCAxIDMgMTJ2MmMyLjcyIDAgNS4yLS45OSA3LjExLTIuNjJsMi41MSAyLjUxQzEwLjk5IDE1LjgxIDEwIDE4LjI5IDEwIDIxaDJjMC0yLjE2Ljc2LTQuMTQgMi4wMy01LjdsMS40MyAxLjQzQTYuOTcyIDYuOTcyIDAgMCAwIDE0IDIxaDJjMC0xLjA2LjMzLTIuMDMuODktMi44NEwxOS43MyAyMWwxLjQxLTEuNDFMNC40MSAyLjg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGVucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlua2VkQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA5djExSDRWOGg0LjA1bDEuODMtMkgxNVY0SDlMNy4xNyA2SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWgtMnptLjY3LTEuMDFIMjJBNi4wMDMgNi4wMDMgMCAwIDAgMTYgMnYxLjMzYzIuNTggMCA0LjY2IDIuMDggNC42NyA0LjY2em0tMi42NyAwaDEuMzNBMy4zMjcgMy4zMjcgMCAwIDAgMTYgNC42N1Y2YzEuMTEgMCAxLjk5Ljg5IDIgMS45OXpNNyAxNGMwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01LTIuMjQtNS01LTUtNSAyLjI0LTUgNXptOCAwYzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zIDEuMzUtMyAzLTMgMyAxLjM0IDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvZ29EZXYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNNy42OCAxNC45OEg2VjloMS43MWMxLjI4IDAgMS43MSAxLjAzIDEuNzEgMS43MXYyLjU2YzAgLjY4LS40MiAxLjcxLTEuNzQgMS43MXptNC43LTMuNTJ2MS4wN0gxMS4ydjEuMzloMS45M3YxLjA3aC0yLjI1Yy0uNC4wMS0uNzQtLjMxLS43NS0uNzFWOS43NWMtLjAxLS40LjMxLS43NC43MS0uNzVoMi4yOHYxLjA3SDExLjJ2MS4zOWgxLjE4em00LjUgMi43N2MtLjQ4IDEuMTEtMS4zMy44OS0xLjcxIDBMMTMuNzcgOWgxLjE4bDEuMDcgNC4xMUwxNy4wOSA5aDEuMThsLTEuMzkgNS4yM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43NyAxMC4xMmgtLjYzdjMuNzdoLjYzYy4xNCAwIC4yOC0uMDUuNDItLjE2LjE0LS4xLjIxLS4yNi4yMS0uNDd2LTIuNTJjMC0uMjEtLjA3LS4zNy0uMjEtLjQ3YS43Mi43MiAwIDAgMC0uNDItLjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9va3MzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS00LTR2LTEuNWMwLS44My0uNjctMS41LTEuNS0xLjUuODMgMCAxLjUtLjY3IDEuNS0xLjVWOWEyIDIgMCAwIDAtMi0ySDl2Mmg0djJoLTJ2MmgydjJIOXYyaDRhMiAyIDAgMCAwIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvb2tzNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNLjA0IDBoMjR2MjRoLTI0VjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjA0IDNoLTE0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTE0VjVoMTR2MTR6bS02LTJoMlY3aC0ydjRoLTJWN2gtMnY2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rczUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHptLTQtNHYtMmEyIDIgMCAwIDAtMi0yaC0yVjloNFY3SDl2Nmg0djJIOXYyaDRhMiAyIDAgMCAwIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvb2tzNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTdoMmEyIDIgMCAwIDAgMi0ydi0yYTIgMiAwIDAgMC0yLTJoLTJWOWg0VjdoLTRhMiAyIDAgMCAwLTIgMnY2YTIgMiAwIDAgMCAyIDJ6bTAtNGgydjJoLTJ2LTJ6bTgtMTBINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvb2tzT25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS03LTJoMlY3aC00djJoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvb2tzVHdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS00LTRoLTR2LTJoMmEyIDIgMCAwIDAgMi0yVjlhMiAyIDAgMCAwLTItMkg5djJoNHYyaC0yYTIgMiAwIDAgMC0yIDJ2NGg2di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9va3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwYy0zLjg2IDAtNyAzLjE0LTcgN2gyYzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVoMmMwLTMuODYtMy4xNC03LTctN3ptMC00QzUuOTMgNiAxIDEwLjkzIDEgMTdoMmMwLTQuOTYgNC4wNC05IDktOXM5IDQuMDQgOSA5aDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb3VwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTBoOGMxLjEgMCAyLS45IDItMnYtOGMwLTUuNTEtNC40OS0xMC0xMC0xMHptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaWNFeHRlcm5hbE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDVjMC0xLjY2LTEuMzQtMy0zLTMtLjYyIDAtMS4xOS4xOS0xLjY3LjVsNC4xNSA0LjE1QzkuOCA2LjE4IDEwIDUuNjEgMTAgNXpNMTQgNmMwLTEuMS45LTIgMi0yczIgLjkgMiAydjkuMTdsMiAyVjZjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDR2My4xN2wyIDJWNnpNMi4xIDIuMS42OSAzLjUxIDUuMTcgOEg0bDEgMTBoMWMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00di0xLjE3bDYuNDkgNi40OSAxLjQxLTEuNDFMMi4xIDIuMXpNNy4xOSAxNmgtLjM4bC0uNi02aC45NmwuNTYuNTZMNy4xOSAxNnpNMTIgMThjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yaDFsLjU2LTUuNjFMMTIgMTQuODNWMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaWNFeHRlcm5hbE9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yMiA3Yy40OC0uNTMuNzgtMS4yMy43OC0yIDAtMS42Ni0xLjM0LTMtMy0zUzQgMy4zNCA0IDVjMCAuNzcuMyAxLjQ3Ljc4IDJoNC40NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMmMtMi4yMSAwLTQgMS43OS00IDR2MTJjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yaDFsMS0xMEg0bDEgMTBoMWMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00VjZjMC0xLjEuOS0yIDItMnMyIC45IDIgMnYxNmgyVjZjMC0yLjIxLTEuNzktNC00LTR6TTcuMTkgMTZoLS4zOGwtLjYtNmgxLjU4bC0uNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9ub2Nocm9tZVBob3RvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtMy4yTDE1IDNIOUw3LjIgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRoLTh2LTFjLTIuOCAwLTUtMi4yLTUtNXMyLjItNSA1LTVWN2g4djEyem0tMy02YzAtMi44LTIuMi01LTUtNXYxLjhjMS44IDAgMy4yIDEuNCAzLjIgMy4ycy0xLjQgMy4yLTMuMiAzLjJWMThjMi44IDAgNS0yLjIgNS01em0tOC4yIDBjMCAxLjggMS40IDMuMiAzLjIgMy4yVjkuOGMtMS44IDAtMy4yIDEuNC0zLjIgMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW90aW9uUGhvdG9zQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuODggNy44OCAxLjU0IDEuNTRDNC4xNSAxMC4yMyA0IDExLjEgNCAxMmMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04LTMuNTktOC04LThjLS45IDAtMS43Ny4xNS0yLjU4LjQyTDcuODkgMi44OUM5LjE1IDIuMzIgMTAuNTQgMiAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTEuNDcuMzItMi44Ni44OC00LjEyek03IDUuNUM3IDYuMzMgNi4zMyA3IDUuNSA3UzQgNi4zMyA0IDUuNSA0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41em01LjAzIDMuNDloLS4wN0wxMC44IDEyLjNoMi4zOWwtMS4xNi0zLjMxem0tLjc0LTEuNDloMS40M2wzLjAxIDhoLTEuMzlsLS43Mi0yLjA0aC0zLjIzbC0uNzMgMi4wNEg4LjI4bDMuMDEtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdGlvblBob3Rvc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MkwyLjgxIDIuODF6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZsMTAuOTMgMTAuOTRBNy44NjkgNy44NjkgMCAwIDEgMTIgMjB6TTEyIDRjNC40MSAwIDggMy41OSA4IDggMCAxLjQ4LS40MSAyLjg2LTEuMTIgNC4wNWwxLjQ1IDEuNDVBOS43ODIgOS43ODIgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMi4wNCAwLTMuOTMuNjEtNS41MSAxLjY2bDEuNDUgMS40NUM5LjE0IDQuNDEgMTAuNTIgNCAxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW90aW9uUGhvdG9zT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjg4IDcuODggMS41NCAxLjU0QzQuMTUgMTAuMjMgNCAxMS4xIDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOSAwLTEuNzcuMTUtMi41OC40Mkw3Ljg5IDIuODlDOS4xNSAyLjMyIDEwLjU0IDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHMtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjQ3LjMyLTIuODYuODgtNC4xMnpNNyA1LjVDNyA2LjMzIDYuMzMgNyA1LjUgN1M0IDYuMzMgNCA1LjUgNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdGlvblBob3Rvc1BhdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi44OCA3Ljg4IDEuNTQgMS41NEM0LjE1IDEwLjIzIDQgMTEuMSA0IDEyYzAgNC40MSAzLjU5IDggOCA4czgtMy41OSA4LTgtMy41OS04LTgtOGMtLjkgMC0xLjc3LjE1LTIuNTguNDJMNy44OSAyLjg5QzkuMTUgMi4zMiAxMC41NCAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTBzLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyYzAtMS40Ny4zMi0yLjg2Ljg4LTQuMTJ6TTcgNS41QzcgNi4zMyA2LjMzIDcgNS41IDdTNCA2LjMzIDQgNS41IDQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjV6bTQgOS41SDlWOWgydjZ6bTQgMGgtMlY5aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdGlvblBob3Rvc1BhdXNlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTEuMTkuMjItMi4zMi42LTMuMzhsMS44OC42OEM0LjE3IDEwLjE0IDQgMTEuMDUgNCAxMmMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04LTMuNTktOC04LThjLS45NSAwLTEuODUuMTctMi42OS40OGwtLjY4LTEuODlDOS42OSAyLjIyIDEwLjgyIDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHpNNS41IDRDNC42NyA0IDQgNC42NyA0IDUuNVM0LjY3IDcgNS41IDcgNyA2LjMzIDcgNS41IDYuMzMgNCA1LjUgNHpNMTEgMTZWOEg5djhoMnptNCAwVjhoLTJ2OGgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW92aWVDcmVhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS43NiAxMEgyMHY4SDRWNi40N00yMiA0aC00bDIgNGgtM2wtMi00aC0ybDIgNGgtM2wtMi00SDhsMiA0SDdMNSA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmllRmlsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMCAxMS0uOTQgMi4wNkw3IDE0bDIuMDYuOTRMMTAgMTdsLjk0LTIuMDZMMTMgMTRsLTIuMDYtLjk0em04LjAxLTcgMiA0aC0zbC0yLTRoLTJsMiA0aC0zbC0yLTRoLTJsMiA0aC0zbC0yLTRoLTFjLTEuMSAwLTEuOTkuOS0xLjk5IDJsLS4wMSAxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDEuOTktLjkgMS45OS0yVjRoLTMuOTl6bTIgMTRoLTE2VjYuNDdMNS43NyAxMEgxNmwtLjYzIDEuMzdMMTQgMTJsMS4zNy42M0wxNiAxNGwuNjMtMS4zN0wxOCAxMmwtMS4zNy0uNjNMMTYgMTBoNC4wMXY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA5aC0zLjV2NkgxNXYtMS41aDJjLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMXptLS41IDNIMTV2LTEuNWgxLjVWMTJ6TTExLjUgOUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjV2LTQuNWgxdjNIMTB2LTNoMVYxNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNNSAxOVY1aDE0djE0SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNdXNpY05vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDMgLjAxIDEwLjU1Yy0uNTktLjM0LTEuMjctLjU1LTItLjU1YTQuMDAxIDQuMDAxIDAgMSAwIDAgOGMyLjIyIDAgMy45OS0xLjc5IDMuOTktNFY3aDRWM2gtNnptLTEuOTkgMTZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTXVzaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDdoNFYzaC02djQuNjFsMiAyem0tMiAzLjQ0TDQuNDEgMi44NiAzIDQuMjdsOSA5di4yOGMtLjk0LS41NC0yLjEtLjc1LTMuMzMtLjMyLTEuMzQuNDgtMi4zNyAxLjY3LTIuNjEgMy4wN2E0LjAwNyA0LjAwNyAwIDAgMCA0LjU5IDQuNjVjMS45Ni0uMzEgMy4zNS0yLjExIDMuMzUtNC4xdi0xLjU4TDE5LjczIDIxbDEuNDEtMS40MUwxMiAxMC40NHpNMTAgMTljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmF0dXJlUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjQuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjE3IDkuMTdjMC0zLjg3LTMuMTMtNy03LTdzLTcgMy4xMy03IDdBNi45OCA2Ljk4IDAgMCAwIDE0IDE2LjA2VjIwSDZ2LTNoMXYtNGMwLS41NS0uNDUtMS0xLTFIM2MtLjU1IDAtMSAuNDUtMSAxdjRoMXY1aDE2di0yaC0zdi0zLjg4YTcgNyAwIDAgMCA2LjE3LTYuOTV6bS03IDVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmF0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxNi4xMmgtLjAzYzMuNDktLjQgNi4yLTMuMzYgNi4yLTYuOTUgMC0zLjg3LTMuMTMtNy03LTdzLTcgMy4xMy03IDdBNi45OCA2Ljk4IDAgMCAwIDExIDE2LjA2VjIwSDV2MmgxNHYtMmgtNnYtMy44OHpNNy4xNyA5LjE3YzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDUtMi4yNCA1LTUgNS01LTIuMjQtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmF2aWdhdGVCZWZvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjYxIDcuNDEgMTQuMiA2bC02IDYgNiA2IDEuNDEtMS40MUwxMS4wMyAxMmw0LjU4LTQuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOYXZpZ2F0ZU5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjAyIDYgOC42MSA3LjQxIDEzLjE5IDEybC00LjU4IDQuNTlMMTAuMDIgMThsNi02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbGV0dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMkM2LjQ5IDIyIDIgMTcuNTEgMiAxMlM2LjQ5IDIgMTIgMnMxMCA0LjA0IDEwIDljMCAzLjMxLTIuNjkgNi02IDZoLTEuNzdjLS4yOCAwLS41LjIyLS41LjUgMCAuMTIuMDUuMjMuMTMuMzMuNDEuNDcuNjQgMS4wNi42NCAxLjY3QTIuNSAyLjUgMCAwIDEgMTIgMjJ6bTAtMThjLTQuNDEgMC04IDMuNTktOCA4czMuNTkgOCA4IDhjLjI4IDAgLjUtLjIyLjUtLjVhLjU0LjU0IDAgMCAwLS4xNC0uMzVjLS40MS0uNDYtLjYzLTEuMDUtLjYzLTEuNjVhMi41IDIuNSAwIDAgMSAyLjUtMi41SDE2YzIuMjEgMCA0LTEuNzkgNC00IDAtMy44Ni0zLjU5LTctOC03elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjExLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjkuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTQuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTcuNVwiLFwiY3lcIjpcIjExLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWFGaXNoRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hSG9yaXpvbnRhbFNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuNWMtMy44OSAwLTYuOTUtLjg0LTguNjktMS40M0EuOTkzLjk5MyAwIDAgMCAyIDUuMDJWMTljMCAuNjguNjYgMS4xNyAxLjMxLjk1QzUuMzYgMTkuMjYgOC4xIDE4LjUgMTIgMTguNWMzLjg3IDAgNi42Ni43NiA4LjY5IDEuNDVBLjk5OS45OTkgMCAwIDAgMjIgMTlWNWMwLS42OC0uNjYtMS4xNy0xLjMxLS45NS0yLjAzLjY4LTQuODMgMS40NS04LjY5IDEuNDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYUhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDYuNTR2MTAuOTFjLTIuNi0uNzctNS4yOC0xLjE2LTgtMS4xNnMtNS40LjM5LTggMS4xNlY2LjU0YzIuNi43NyA1LjI4IDEuMTYgOCAxLjE2IDIuNzIuMDEgNS40LS4zOCA4LTEuMTZNMjEuNDMgNGMtLjEgMC0uMi4wMi0uMzEuMDZDMTguMTggNS4xNiAxNS4wOSA1LjcgMTIgNS43cy02LjE4LS41NS05LjEyLTEuNjRBLjk0Ljk0IDAgMCAwIDIuNTcgNGMtLjM0IDAtLjU3LjIzLS41Ny42M3YxNC43NWMwIC4zOS4yMy42Mi41Ny42Mi4xIDAgLjItLjAyLjMxLS4wNiAyLjk0LTEuMSA2LjAzLTEuNjQgOS4xMi0xLjY0czYuMTguNTUgOS4xMiAxLjY0Yy4xMS4wNC4yMS4wNi4zMS4wNi4zMyAwIC41Ny0uMjMuNTctLjYzVjQuNjNjMC0uNC0uMjQtLjYzLS41Ny0uNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYVBob3Rvc3BoZXJlU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTUgOC4xNWMtLjI5LS4xNi0uNjEtLjMxLS45My0uNDZDMTkuNCA0LjMzIDE1Ljk4IDIgMTIgMiA4LjAyIDIgNC42IDQuMzMgMi45OSA3LjY4Yy0uMzMuMTUtLjY0LjMtLjkzLjQ2QzEuNDEgOC41IDEgOS4xNyAxIDkuOTF2NC4xOGMwIC43NC40MSAxLjQxIDEuMDUgMS43Ny4yOS4xNi42MS4zMS45My40NkM0LjYgMTkuNjcgOC4wMiAyMiAxMiAyMmMzLjk4IDAgNy40LTIuMzMgOS4wMS01LjY4LjMzLS4xNS42NC0uMy45My0uNDYuNjUtLjM2IDEuMDYtMS4wMyAxLjA2LTEuNzdWOS45MWMwLS43NC0uNDEtMS40MS0xLjA1LTEuNzZ6TTEyIDRjMi4zNyAwIDQuNDkgMS4wNCA1Ljk1IDIuNjhDMTYuMTcgNi4yNSAxNC4xNSA2IDEyIDZjLTIuMTUgMC00LjE3LjI1LTUuOTUuNjhBNy45NDMgNy45NDMgMCAwIDEgMTIgNHptMCAxNmMtMi4zNyAwLTQuNDktMS4wNC01Ljk1LTIuNjggMS43OC40MyAzLjguNjggNS45NS42OHM0LjE3LS4yNSA1Ljk1LS42OEE3Ljk0MyA3Ljk0MyAwIDAgMSAxMiAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hUGhvdG9zcGhlcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45NSA4LjE1Yy0uMjktLjE2LS42MS0uMzEtLjkzLS40NkMxOS40IDQuMzMgMTUuOTggMiAxMiAyIDguMDIgMiA0LjYgNC4zMyAyLjk5IDcuNjhjLS4zMy4xNS0uNjQuMy0uOTMuNDZDMS40MSA4LjUgMSA5LjE3IDEgOS45MXY0LjE4YzAgLjc0LjQxIDEuNDEgMS4wNSAxLjc3LjI5LjE2LjYxLjMxLjkzLjQ2QzQuNiAxOS42NyA4LjAyIDIyIDEyIDIyYzMuOTggMCA3LjQtMi4zMyA5LjAxLTUuNjguMzMtLjE1LjY0LS4zLjkzLS40Ni42NS0uMzYgMS4wNi0xLjAzIDEuMDYtMS43N1Y5LjkxYzAtLjc0LS40MS0xLjQxLTEuMDUtMS43NnpNMjEgOS45MXY0LjE5Yy0yLjE5IDEuMjEtNS40NyAxLjktOSAxLjktMy41MyAwLTYuODEtLjctOS0xLjkxVjkuOTFDNS4yIDguNjkgOC40NyA4IDEyIDhjMy41MyAwIDYuODEuNyA5IDEuOTF6TTEyIDRjMi4zNyAwIDQuNDkgMS4wNCA1Ljk1IDIuNjhDMTYuMTcgNi4yNSAxNC4xNSA2IDEyIDZjLTIuMTUgMC00LjE3LjI1LTUuOTUuNjhBNy45NDMgNy45NDMgMCAwIDEgMTIgNHptMCAxNmMtMi4zNyAwLTQuNDktMS4wNC01Ljk1LTIuNjggMS43OC40MyAzLjguNjggNS45NS42OHM0LjE3LS4yNSA1Ljk1LS42OEE3Ljk0MyA3Ljk0MyAwIDAgMSAxMiAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hVmVydGljYWxTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41IDEyYzAtMy44OS44NC02Ljk1IDEuNDMtOC42OUEuOTkzLjk5MyAwIDAgMCAxOC45OCAySDVjLS42OCAwLTEuMTYuNjYtLjk1IDEuMzFDNC43NCA1LjM2IDUuNSA4LjEgNS41IDEyYzAgMy44Ny0uNzYgNi42Ni0xLjQ1IDguNjktLjIxLjY1LjI3IDEuMzEuOTUgMS4zMWgxNGMuNjggMCAxLjE3LS42Ni45NS0xLjMxLS42OC0yLjAzLTEuNDUtNC44My0xLjQ1LTguNjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYVZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45NCAyMS4xMmMtMS4xLTIuOTQtMS42NC02LjAzLTEuNjQtOS4xMnMuNTUtNi4xOCAxLjY0LTkuMTJhLjk0Ljk0IDAgMCAwIC4wNi0uMzFjMC0uMzQtLjIzLS41Ny0uNjMtLjU3SDQuNjNjLS40IDAtLjYzLjIzLS42My41NyAwIC4xLjAyLjIuMDYuMzFDNS4xNiA1LjgyIDUuNzEgOC45MSA1LjcxIDEycy0uNTUgNi4xOC0xLjY0IDkuMTJjLS4wNS4xMS0uMDcuMjItLjA3LjMxIDAgLjMzLjIzLjU3LjYzLjU3aDE0Ljc1Yy4zOSAwIC42My0uMjQuNjMtLjU3LS4wMS0uMS0uMDMtLjItLjA3LS4zMXpNNi41NCAyMGMuNzctMi42IDEuMTYtNS4yOCAxLjE2LThzLS4zOS01LjQtMS4xNi04aDEwLjkxYy0uNzcgMi42LTEuMTYgNS4yOC0xLjE2IDhzLjM5IDUuNCAxLjE2IDhINi41NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hV2lkZUFuZ2xlU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGMtMy45NyAwLTYuODUuNjMtOSAxLS41NSAxLjk3LTEgMy45Mi0xIDcgMCAzLjAzLjQ1IDUuMDUgMSA3IDIuMTUuMzcgNC45OCAxIDkgMSAzLjk3IDAgNi44NS0uNjMgOS0xIC41Ny0yLjAyIDEtMy45OSAxLTcgMC0zLjAzLS40NS01LjA1LTEtNy0yLjE1LS4zNy00Ljk4LTEtOS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWFXaWRlQW5nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjMi40NSAwIDQuNzEuMiA3LjI5LjY0LjQ3IDEuNzguNzEgMy41OC43MSA1LjM2cy0uMjQgMy41OC0uNzEgNS4zNmMtMi41OC40NC00Ljg0LjY0LTcuMjkuNjRzLTQuNzEtLjItNy4yOS0uNjRDNC4yNCAxNS41OCA0IDEzLjc4IDQgMTJzLjI0LTMuNTguNzEtNS4zNkM3LjI5IDYuMiA5LjU1IDYgMTIgNm0wLTJjLTIuNzMgMC01LjIyLjI0LTcuOTUuNzJsLS45My4xNi0uMjUuOUMyLjI5IDcuODUgMiA5LjkzIDIgMTJzLjI5IDQuMTUuODcgNi4yMmwuMjUuODkuOTMuMTZjMi43My40OSA1LjIyLjczIDcuOTUuNzNzNS4yMi0uMjQgNy45NS0uNzJsLjkzLS4xNi4yNS0uODljLjU4LTIuMDguODctNC4xNi44Ny02LjIzcy0uMjktNC4xNS0uODctNi4yMmwtLjI1LS44OS0uOTMtLjE2QzE3LjIyIDQuMjQgMTQuNzMgNCAxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDRIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNmgxOHYxMnptLTYuNS03TDExIDE1LjUxIDguNSAxMi41IDUgMTdoMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG90b0FsYnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMThINlY0aDV2N2wyLjUtMS41TDE2IDExVjRoMnYxNnptLTQuMzgtNi41TDE3IDE4SDdsMi4zOC0zLjE3TDExIDE3bDIuNjItMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9DYW1lcmFCYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtMy4xN0wxNSAzSDlMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNEg0VjdoNC4wNWwxLjgzLTJoNC4yNGwxLjgzIDJIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjI1IDE2IDkgMTNsLTMgNGgxMmwtMy43NS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9DYW1lcmFGcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMTdMMTUgM0g5TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY3aDQuMDVsMS44My0yaDQuMjRsMS44MyAySDIwdjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTFcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNzggMTQuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgOCAxNi40M1YxN2g4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9DYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjEyIDQgMS44MyAySDIwdjEySDRWNmg0LjA1bDEuODMtMmg0LjI0TTE1IDJIOUw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDJ6bS0zIDdjMS42NSAwIDMgMS4zNSAzIDNzLTEuMzUgMy0zIDMtMy0xLjM1LTMtMyAxLjM1LTMgMy0zbTAtMmMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG90b0ZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTB2OUg0Ljk4VjVoOVYzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ6bS0yLjk0LTIuMDZMMTcgMTBsLjk0LTIuMDZMMjAgN2wtMi4wNi0uOTRMMTcgNGwtLjk0IDIuMDZMMTQgN3pNMTIgOGwtMS4yNSAyLjc1TDggMTJsMi43NSAxLjI1TDEyIDE2bDEuMjUtMi43NUwxNiAxMmwtMi43NS0xLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9MaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0djEySDhWNGgxMm0wLTJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tOC41IDkuNjcgMS42OSAyLjI2IDIuNDgtMy4xTDE5IDE1SDl6TTIgNnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9TaXplU2VsZWN0QWN0dWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNDMiAzIDEgNCAxIDV2MTRjMCAxLjEuOSAyIDIgMmgxOGMxIDAgMi0xIDItMlY1YzAtMS0xLTItMi0yem0wIDE1LjkyYy0uMDIuMDMtLjA2LjA2LS4wOC4wOEgzVjUuMDhMMy4wOCA1aDE3LjgzYy4wMy4wMi4wNi4wNi4wOC4wOHYxMy44NHptLTEwLTMuNDFMOC41IDEyLjUgNSAxN2gxNGwtNC41LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG90b1NpemVTZWxlY3RMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTVoMnYyaC0ydi0yem0wLTRoMnYyaC0ydi0yem0yIDhoLTJ2MmMxIDAgMi0xIDItMnpNMTMgM2gydjJoLTJWM3ptOCA0aDJ2MmgtMlY3em0wLTR2MmgyYzAtMS0xLTItMi0yek0xIDdoMnYySDFWN3ptMTYtNGgydjJoLTJWM3ptMCAxNmgydjJoLTJ2LTJ6TTMgM0MyIDMgMSA0IDEgNWgyVjN6bTYgMGgydjJIOVYzek01IDNoMnYySDVWM3ptLTQgOHY4YzAgMS4xLjkgMiAyIDJoMTJWMTFIMXptMiA4IDIuNS0zLjIxIDEuNzkgMi4xNSAyLjUtMy4yMkwxMyAxOUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9TaXplU2VsZWN0U21hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE1aC0ydjJoMnYtMnptMC00aC0ydjJoMnYtMnptMCA4aC0ydjJjMSAwIDItMSAyLTJ6TTE1IDNoLTJ2MmgyVjN6bTggNGgtMnYyaDJWN3ptLTItNHYyaDJjMC0xLTEtMi0yLTJ6TTMgMjFoOHYtNkgxdjRjMCAxLjEuOSAyIDIgMnpNMyA3SDF2MmgyVjd6bTEyIDEyaC0ydjJoMnYtMnptNC0xNmgtMnYyaDJWM3ptMCAxNmgtMnYyaDJ2LTJ6TTMgM0MyIDMgMSA0IDEgNWgyVjN6bTAgOEgxdjJoMnYtMnptOC04SDl2MmgyVjN6TTcgM0g1djJoMlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDV2MTRINVY1aDE0bTAtMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00Ljg2IDguODYtMyAzLjg3TDkgMTMuMTQgNiAxN2gxMmwtMy44Ni01LjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGljdHVyZUFzUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6TTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xMiA2VjljMC0uNTUtLjQ1LTEtMS0xaC0ydjVoMmMuNTUgMCAxLS40NSAxLTF6bS0yLTNoMXYzaC0xVjl6bTQgMmgxdi0xaC0xVjloMVY4aC0ydjVoMXptLTggMGgxYy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMUg5djVoMXYtMnptMC0yaDF2MWgtMVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEyYzEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zLTMgMS4zNS0zIDMgMS4zNSAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTYgOC41OGMwLTIuNS0zLjk3LTMuNTgtNi0zLjU4cy02IDEuMDgtNiAzLjU4VjE4aDEydi0xLjQyek04LjQ4IDE2Yy43NC0uNTEgMi4yMy0xIDMuNTItMXMyLjc4LjQ5IDMuNTIgMUg4LjQ4ek0xOSAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmF3T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMTUgMTQuMzIuNTktMi4zNi43NiAzLjA0aDEuNDhsMS41LTZoLTEuNWwtLjc0IDMtLjc0LTNoLTEuNTJsLS43NCAzLS43NC0zSDE0bC43MiAyLjl6TTEuMzkgNC4yMiA2LjE3IDlIM3Y2aDEuNXYtMmgxLjFsLjkgMkg4bC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHYtLjY3bDEuNDMgMS40M0w4Ljc1IDE1aDEuNWwuMzgtMS41aC4wNGw5LjExIDkuMTEgMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJ6TTYuNSAxMS41aC0ydi0xaDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhd09uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDlIM3Y2aDEuNXYtMmgxLjFsLjkgMkg4bC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHYtMUM4IDkuNyA3LjMgOSA2LjUgOXptMCAyLjVoLTJ2LTFoMnYxek0xMC4yNSA5bC0xLjUgNmgxLjVsLjM4LTEuNWgxLjc1bC4zNyAxLjVoMS41bC0xLjUtNmgtMi41em0uNzUgMyAuMjUtMWguNWwuMjUgMWgtMXpNMTkuOTggOWwtLjc0IDMtLjc0LTNoLTEuNTJsLS43NCAzLS43NC0zSDE0bDEuNSA2aDEuNDhsLjc2LTMuMDQuNzYgMy4wNGgxLjQ4bDEuNS02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVjZWlwdExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgMy41IDE4IDJsLTEuNSAxLjVMMTUgMmwtMS41IDEuNUwxMiAybC0xLjUgMS41TDkgMiA3LjUgMy41IDYgMnYxNEgzdjNjMCAxLjY2IDEuMzQgMyAzIDNoMTJjMS42NiAwIDMtMS4zNCAzLTNWMmwtMS41IDEuNXpNMTUgMjBINmMtLjU1IDAtMS0uNDUtMS0xdi0xaDEwdjJ6bTQtMWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXYtM0g4VjVoMTF2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgN2g2djJIOXpNMTYgN2gydjJoLTJ6TTkgMTBoNnYySDl6TTE2IDEwaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZVJlZEV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNi41YTkuNzcgOS43NyAwIDAgMSA4LjgyIDUuNWMtMS42NSAzLjM3LTUuMDIgNS41LTguODIgNS41UzQuODMgMTUuMzcgMy4xOCAxMkE5Ljc3IDkuNzcgMCAwIDEgMTIgNi41bTAtMkM3IDQuNSAyLjczIDcuNjEgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41czkuMjctMy4xMSAxMS03LjVjLTEuNzMtNC4zOS02LTcuNS0xMS03LjV6bTAgNWEyLjUgMi41IDAgMCAxIDAgNSAyLjUgMi41IDAgMCAxIDAtNW0wLTJjLTIuNDggMC00LjUgMi4wMi00LjUgNC41czIuMDIgNC41IDQuNSA0LjUgNC41LTIuMDIgNC41LTQuNS0yLjAyLTQuNS00LjUtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm90YXRlOTBEZWdyZWVzQ2N3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjM0IDYuNDEuODYgMTIuOWw2LjQ5IDYuNDggNi40OS02LjQ4LTYuNS02LjQ5ek0zLjY5IDEyLjlsMy42Ni0zLjY2TDExIDEyLjlsLTMuNjYgMy42Ni0zLjY1LTMuNjZ6bTE1LjY3LTYuMjZBOC45NSA4Ljk1IDAgMCAwIDEzIDRWLjc2TDguNzYgNSAxMyA5LjI0VjZjMS43OSAwIDMuNTguNjggNC45NSAyLjA1YTcuMDA3IDcuMDA3IDAgMCAxIDAgOS45IDYuOTczIDYuOTczIDAgMCAxLTcuNzkgMS40NGwtMS40OSAxLjQ5QzEwLjAyIDIxLjYyIDExLjUxIDIyIDEzIDIyYzIuMyAwIDQuNjEtLjg4IDYuMzYtMi42NGE4Ljk4IDguOTggMCAwIDAgMC0xMi43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdGF0ZTkwRGVncmVlc0N3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxM2E5IDkgMCAwIDAgMTMuNzkgNy42MmwtMS40Ni0xLjQ2Yy0uOTkuNTMtMi4xMy44NC0zLjMzLjg0LTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTdoLjE3TDkuNTkgNy41OSAxMSA5bDQtNC00LTQtMS40MiAxLjQxTDExLjE3IDRIMTFhOSA5IDAgMCAwLTkgOXptOSAwIDYgNiA2LTYtNi02LTYgNnptNiAzLjE3TDEzLjgzIDEzIDE3IDkuODMgMjAuMTcgMTMgMTcgMTYuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3RhdGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjExIDguNTMgNS43IDcuMTFDNC44IDguMjcgNC4yNCA5LjYxIDQuMDcgMTFoMi4wMmMuMTQtLjg3LjQ5LTEuNzIgMS4wMi0yLjQ3ek02LjA5IDEzSDQuMDdjLjE3IDEuMzkuNzIgMi43MyAxLjYyIDMuODlsMS40MS0xLjQyYy0uNTItLjc1LS44Ny0xLjU5LTEuMDEtMi40N3ptMS4wMSA1LjMyYzEuMTYuOSAyLjUxIDEuNDQgMy45IDEuNjFWMTcuOWMtLjg3LS4xNS0xLjcxLS40OS0yLjQ2LTEuMDNMNy4xIDE4LjMyek0xMyA0LjA3VjFMOC40NSA1LjU1IDEzIDEwVjYuMDljMi44NC40OCA1IDIuOTQgNSA1Ljkxcy0yLjE2IDUuNDMtNSA1LjkxdjIuMDJjMy45NS0uNDkgNy0zLjg1IDctNy45M3MtMy4wNS03LjQ0LTctNy45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdGF0ZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41NSA1LjU1IDExIDF2My4wN0M3LjA2IDQuNTYgNCA3LjkyIDQgMTJzMy4wNSA3LjQ0IDcgNy45M3YtMi4wMmMtMi44NC0uNDgtNS0yLjk0LTUtNS45MXMyLjE2LTUuNDMgNS01LjkxVjEwbDQuNTUtNC40NXpNMTkuOTMgMTFhNy45MDYgNy45MDYgMCAwIDAtMS42Mi0zLjg5bC0xLjQyIDEuNDJjLjU0Ljc1Ljg4IDEuNiAxLjAyIDIuNDdoMi4wMnpNMTMgMTcuOXYyLjAyYzEuMzktLjE3IDIuNzQtLjcxIDMuOS0xLjYxbC0xLjQ0LTEuNDRjLS43NS41NC0xLjU5Ljg5LTIuNDYgMS4wM3ptMy44OS0yLjQyIDEuNDIgMS40MWMuOS0xLjE2IDEuNDUtMi41IDEuNjItMy44OWgtMi4wMmMtLjE0Ljg3LS40OCAxLjcyLTEuMDIgMi40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNodXR0ZXJTcGVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMUg5djJoNlYxem00LjAzIDYuMzkgMS40Mi0xLjQyYy0uNDMtLjUxLS45LS45OS0xLjQxLTEuNDFsLTEuNDIgMS40MkE4Ljk2MiA4Ljk2MiAwIDAgMCAxMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTguOTk0IDguOTk0IDAgMCAwIDcuMDMtMTQuNjF6TTEyIDIwYy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptLS4zMi01SDYuMzVhNS45OTIgNS45OTIgMCAwIDAgMy40MSAzLjU2bC0uMTEtLjA2IDIuMDMtMy41em01Ljk3LTRhNi4wMTIgNi4wMTIgMCAwIDAtMy4zNC0zLjU0TDEyLjI2IDExaDUuMzl6bS03LjA0IDcuODNjLjQ1LjExLjkxLjE3IDEuMzkuMTcgMS4zNCAwIDIuNTctLjQ1IDMuNTctMS4xOWwtMi4xMS0zLjktMi44NSA0Ljkyek03LjU1IDguOTlBNS45NjUgNS45NjUgMCAwIDAgNiAxM2MwIC4zNC4wNC42Ny4wOSAxaDQuNzJMNy41NSA4Ljk5em04Ljc5IDguMTRBNS45NCA1Ljk0IDAgMCAwIDE4IDEzYzAtLjM0LS4wNC0uNjctLjA5LTFoLTQuMzRsMi43NyA1LjEzem0tMy4wMS05Ljk4QzEyLjkgNy4wNiAxMi40NiA3IDEyIDdjLTEuNCAwLTIuNjkuNDktMy43MSAxLjI5bDIuMzIgMy41NiAyLjcyLTQuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNsaWRlc2hvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOHY4bDUtNC01LTR6bTktNUg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RyYWlnaHRlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEgzVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY0aDJWOGgydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdHlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi41MyAxOS42NSAxLjM0LjU2di05LjAzbC0yLjQzIDUuODZjLS40MSAxLjAyLjA4IDIuMTkgMS4wOSAyLjYxem0xOS41LTMuN0wxNy4wNyAzLjk4YTIuMDEzIDIuMDEzIDAgMCAwLTEuODEtMS4yM2MtLjI2IDAtLjUzLjA0LS43OS4xNUw3LjEgNS45NWExLjk5OSAxLjk5OSAwIDAgMC0xLjA4IDIuNmw0Ljk2IDExLjk3YTEuOTk4IDEuOTk4IDAgMCAwIDIuNiAxLjA4bDcuMzYtMy4wNWExLjk5NCAxLjk5NCAwIDAgMCAxLjA5LTIuNnptLTkuMiAzLjhMNy44NyA3Ljc5bDcuMzUtMy4wNGguMDFsNC45NSAxMS45NS03LjM1IDMuMDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuODggMTkuNzVjMCAxLjEuOSAyIDIgMmgxLjQ1bC0zLjQ1LTguMzR2Ni4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXRjaENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtMy4xN0wxNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNOS44OCA0aDQuMjRsMS44MyAySDIwdjEySDRWNmg0LjA1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExSDlWOC41TDUuNSAxMiA5IDE1LjVWMTNoNnYyLjVsMy41LTMuNUwxNSA4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxM2g0djJsMy0zLTMtM3YySDhWOWwtMyAzIDMgM3ptMTAtMy41VjZjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgxNGMuNTUgMCAxLS40NSAxLTF2LTMuNWw0IDR2LTEzbC00IDR6TTE2IDE3SDRWN2gxMnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhZ0ZhY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSA2LjVjMi4zMyAwIDQuMzEtMS40NiA1LjExLTMuNUg2Ljg5Yy44IDIuMDQgMi43OCAzLjUgNS4xMSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41MSAzLjA4IDMuMDggMTkuNTFjLjA5LjM0LjI3LjY1LjUxLjkuMjUuMjQuNTYuNDIuOS41MUwyMC45MyA0LjQ5Yy0uMTktLjY5LS43My0xLjIzLTEuNDItMS40MXpNMTEuODggMyAzIDExLjg4djIuODNMMTQuNzEgM2gtMi44M3pNNSAzYy0xLjEgMC0yIC45LTIgMnYybDQtNEg1em0xNCAxOGMuNTUgMCAxLjA1LS4yMiAxLjQxLS41OS4zNy0uMzYuNTktLjg2LjU5LTEuNDF2LTJsLTQgNGgyem0tOS43MSAwaDIuODNMMjEgMTIuMTJWOS4yOUw5LjI5IDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGhlcm1vc3RhdEF1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMlY2YzAtMS42Ni0xLjM0LTMtMy0zUzUgNC4zNCA1IDZ2NmMtMS4yMS45MS0yIDIuMzctMiA0IDAgMS4xMi4zOCAyLjE0IDEgMi45N1YxOWguMDJjLjkxIDEuMjEgMi4zNSAyIDMuOTggMnMzLjA2LS43OSAzLjk4LTJIMTJ2LS4wM2MuNjItLjgzIDEtMS44NSAxLTIuOTcgMC0xLjYzLS43OS0zLjA5LTItNHptLTYgNGMwLS45NC40NS0xLjg0IDEuMi0yLjRMNyAxM1Y2YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXY3bC44LjZjLjc1LjU3IDEuMiAxLjQ2IDEuMiAyLjRINXpNMTguNjIgNGgtMS42MWwtMy4zOCA5aDEuNTZsLjgxLTIuM2gzLjYzbC44IDIuM0gyMmwtMy4zOC05em0tMi4xNSA1LjM5IDEuMzEtMy43MmguMDhsMS4zMSAzLjcyaC0yLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lbGFwc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjI0IDcuNzVBNS45NzQgNS45NzQgMCAwIDAgMTIgNS45OXY2bC00LjI0IDQuMjRjMi4zNCAyLjM0IDYuMTQgMi4zNCA4LjQ5IDBhNS45OSA1Ljk5IDAgMCAwLS4wMS04LjQ4ek0xMiAxLjk5Yy01LjUyIDAtMTAgNC40OC0xMCAxMHM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTAtNC40OC0xMC0xMC0xMHptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lcjEwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0tLjAxIDcuNzJWOS40bDMtMVYxOGgyVjZoLS4yNUwtLjAxIDcuNzJ6bTIzLjc4IDYuNjVjLS4xNC0uMjgtLjM1LS41My0uNjMtLjc0LS4yOC0uMjEtLjYxLS4zOS0xLjAxLS41M3MtLjg1LS4yNy0xLjM1LS4zOGE2LjY0IDYuNjQgMCAwIDEtLjg3LS4yM2MtLjIzLS4wOC0uNDEtLjE2LS41NS0uMjVzLS4yMy0uMTktLjI4LS4zYS45NzguOTc4IDAgMCAxIC4wMS0uOGMuMDYtLjEzLjE1LS4yNS4yNy0uMzQuMTItLjEuMjctLjE4LjQ1LS4yNHMuNC0uMDkuNjQtLjA5Yy4yNSAwIC40Ny4wNC42Ni4xMXMuMzUuMTcuNDguMjkuMjIuMjYuMjkuNDJjLjA2LjE2LjEuMzIuMS40OWgxLjk1QTIuNTE3IDIuNTE3IDAgMCAwIDIzIDkuODFjLS4zLS4yNS0uNjYtLjQ0LTEuMDktLjU5LS40My0uMTUtLjkyLS4yMi0xLjQ2LS4yMi0uNTEgMC0uOTguMDctMS4zOS4yMXMtLjc3LjMzLTEuMDYuNTdjLS4yOS4yNC0uNTEuNTItLjY3Ljg0LS4xNi4zMi0uMjMuNjUtLjIzIDEuMDFzLjA4LjY5LjIzLjk2Yy4xNS4yOC4zNi41Mi42NC43My4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43N3MtLjY2LjI5LTEuMTcuMjljLS4yMiAwLS40My0uMDItLjY0LS4wOC0uMjEtLjA1LS40LS4xMy0uNTYtLjI0YTEuMzMzIDEuMzMzIDAgMCAxLS41OS0xLjExaC0xLjg5YzAgLjM2LjA4LjcxLjI0IDEuMDVzLjM5LjY1LjcuOTNjLjMxLjI3LjY5LjQ5IDEuMTUuNjZzLjk4LjI1IDEuNTguMjVjLjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnptLTkuOTYtNy4zMmMtLjM0LS40LS43NS0uNy0xLjIzLS44OC0uNDctLjE4LTEuMDEtLjI3LTEuNTktLjI3cy0xLjExLjA5LTEuNTkuMjdjLS40OC4xOC0uODkuNDctMS4yMy44OC0uMzQuNDEtLjYuOTMtLjc5IDEuNTktLjE4LjY1LS4yOCAxLjQ1LS4yOCAyLjM5djEuOTJjMCAuOTQuMDkgMS43NC4yOCAyLjM5LjE5LjY2LjQ1IDEuMTkuOCAxLjYuMzQuNDEuNzUuNzEgMS4yMy44OXMxLjAxLjI4IDEuNTkuMjhjLjU5IDAgMS4xMi0uMDkgMS41OS0uMjguNDgtLjE4Ljg4LS40OCAxLjIyLS44OXMuNi0uOTQuNzgtMS42Yy4xOC0uNjUuMjgtMS40NS4yOC0yLjM5di0xLjkyYzAtLjk0LS4wOS0xLjc0LS4yOC0yLjM5LS4xOC0uNjYtLjQ0LTEuMTktLjc4LTEuNTl6bS0uOTIgNi4xN2MwIC42LS4wNCAxLjExLS4xMiAxLjUzcy0uMi43Ni0uMzYgMS4wMmMtLjE2LjI2LS4zNi40NS0uNTkuNTctLjIzLjEyLS41MS4xOC0uODIuMTgtLjMgMC0uNTgtLjA2LS44Mi0uMThzLS40NC0uMzEtLjYtLjU3Yy0uMTYtLjI2LS4yOS0uNi0uMzgtMS4wMnMtLjEzLS45My0uMTMtMS41M3YtMi41YzAtLjYuMDQtMS4xMS4xMy0xLjUycy4yMS0uNzQuMzgtMWMuMTYtLjI1LjM2LS40My42LS41NS4yNC0uMTEuNTEtLjE3LjgxLS4xNy4zMSAwIC41OC4wNi44MS4xNy4yNC4xMS40NC4yOS42LjU1LjE2LjI1LjI5LjU4LjM3Ljk5cy4xMy45Mi4xMyAxLjUydjIuNTFoLS4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRpbWVyMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNjEgMTIuOTdjLS4xNi0uMjQtLjM2LS40Ni0uNjItLjY1YTMuMzggMy4zOCAwIDAgMC0uOTMtLjQ4Yy4zLS4xNC41Ny0uMy44LS41LjIzLS4yLjQyLS40MS41Ny0uNjQuMTUtLjIzLjI3LS40Ni4zNC0uNzEuMDgtLjI0LjExLS40OS4xMS0uNzMgMC0uNTUtLjA5LTEuMDQtLjI4LTEuNDYtLjE4LS40Mi0uNDQtLjc3LS43OC0xLjA2LS4zMy0uMjgtLjczLS41LTEuMi0uNjQtLjQ1LS4xMy0uOTctLjItMS41My0uMi0uNTUgMC0xLjA2LjA4LTEuNTIuMjQtLjQ3LjE3LS44Ny40LTEuMi42OS0uMzMuMjktLjYuNjMtLjc4IDEuMDMtLjIuMzktLjI5LjgzLS4yOSAxLjI5aDEuOThjMC0uMjYuMDUtLjQ5LjE0LS42OS4wOS0uMi4yMi0uMzguMzgtLjUyLjE3LS4xNC4zNi0uMjUuNTgtLjMzcy40Ni0uMTIuNzMtLjEyYy42MSAwIDEuMDYuMTYgMS4zNi40Ny4zLjMxLjQ0Ljc1LjQ0IDEuMzIgMCAuMjctLjA0LjUyLS4xMi43NC0uMDguMjItLjIxLjQxLS4zOC41N3MtLjM4LjI4LS42My4zNy0uNTUuMTMtLjg5LjEzSDYuNzJ2MS41N0g3LjljLjM0IDAgLjY0LjA0LjkxLjExLjI3LjA4LjUuMTkuNjkuMzUuMTkuMTYuMzQuMzYuNDQuNjEuMS4yNC4xNi41NC4xNi44NyAwIC42Mi0uMTggMS4wOS0uNTMgMS40Mi0uMzUuMzMtLjg0LjQ5LTEuNDUuNDktLjI5IDAtLjU2LS4wNC0uOC0uMTMtLjI0LS4wOC0uNDQtLjItLjYxLS4zNnMtLjMtLjM0LS4zOS0uNTZjLS4wOS0uMjItLjE0LS40Ni0uMTQtLjcySDQuMTljMCAuNTUuMTEgMS4wMy4zMiAxLjQ1LjIxLjQyLjUuNzcuODYgMS4wNXMuNzcuNDkgMS4yNC42My45Ni4yMSAxLjQ4LjIxYy41NyAwIDEuMDktLjA4IDEuNTgtLjIzcy45MS0uMzggMS4yNi0uNjhjLjM2LS4zLjY0LS42Ni44NC0xLjEuMi0uNDMuMy0uOTMuMy0xLjQ4IDAtLjI5LS4wNC0uNTgtLjExLS44Ni0uMDgtLjI1LS4xOS0uNTEtLjM1LS43NnptOS4yNiAxLjRjLS4xNC0uMjgtLjM1LS41My0uNjMtLjc0LS4yOC0uMjEtLjYxLS4zOS0xLjAxLS41M3MtLjg1LS4yNy0xLjM1LS4zOGE2LjY0IDYuNjQgMCAwIDEtLjg3LS4yM2MtLjIzLS4wOC0uNDEtLjE2LS41NS0uMjVzLS4yMy0uMTktLjI4LS4zYy0uMDUtLjExLS4wOC0uMjQtLjA4LS4zOXMuMDMtLjI4LjA5LS40MS4xNS0uMjUuMjctLjM0Yy4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExcy4zNS4xNy40OC4yOS4yMi4yNi4yOS40MmMuMDYuMTYuMS4zMi4xLjQ5aDEuOTVhMi41MTcgMi41MTcgMCAwIDAtLjkzLTEuOTdjLS4zLS4yNS0uNjYtLjQ0LTEuMDktLjU5LS40My0uMTUtLjkyLS4yMi0xLjQ2LS4yMi0uNTEgMC0uOTguMDctMS4zOS4yMXMtLjc3LjMzLTEuMDYuNTdjLS4yOS4yNC0uNTEuNTItLjY3Ljg0cy0uMjMuNjUtLjIzIDEuMDEuMDguNjguMjMuOTYuMzcuNTIuNjQuNzNjLjI3LjIxLjYuMzguOTguNTMuMzguMTQuODEuMjYgMS4yNy4zNi4zOS4wOC43MS4xNy45NS4yNnMuNDMuMTkuNTcuMjljLjEzLjEuMjIuMjIuMjcuMzQuMDUuMTIuMDcuMjUuMDcuMzkgMCAuMzItLjEzLjU3LS40Ljc3cy0uNjYuMjktMS4xNy4yOWMtLjIyIDAtLjQzLS4wMi0uNjQtLjA4LS4yMS0uMDUtLjQtLjEzLS41Ni0uMjRhMS4zMzMgMS4zMzMgMCAwIDEtLjU5LTEuMTFoLTEuODljMCAuMzYuMDguNzEuMjQgMS4wNXMuMzkuNjUuNy45M2MuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRpbWVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxaDZ2Mkg5ek0xMiA2YzMuODcgMCA3IDMuMTMgNyA3IDAgLjk0LS4xOSAxLjgzLS41MiAyLjY1bDEuNSAxLjVhOC45NjMgOC45NjMgMCAwIDAtLjk1LTkuNzZsMS40Mi0xLjQyYy0uNDMtLjUxLS45LS45OS0xLjQxLTEuNDFsLTEuNDIgMS40MmE4Ljk2MiA4Ljk2MiAwIDAgMC05Ljc3LS45NmwxLjUgMS41QTcuMDcgNy4wNyAwIDAgMSAxMiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSA4LjE3IDIgMlY4aC0yek0yLjgxIDIuODEgMS4zOSA0LjIybDMuNCAzLjRhOC45OTQgOC45OTQgMCAwIDAgMTIuNTkgMTIuNTlsMi40IDIuNCAxLjQxLTEuNDFMMi44MSAyLjgxek0xMiAyMGMtMy44NyAwLTctMy4xMy03LTcgMC0xLjQ3LjQ1LTIuODMgMS4yMi0zLjk1bDkuNzMgOS43M0E2Ljk0NSA2Ljk0NSAwIDAgMSAxMiAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRpbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMUg5djJoNlYxem0tNCAxM2gyVjhoLTJ2NnptOC4wMy02LjYxIDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJBOC45NjIgOC45NjIgMCAwIDAgMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE4Ljk5NCA4Ljk5NCAwIDAgMCA3LjAzLTE0LjYxek0xMiAyMGMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb25hbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTEgMTcuOTNjLTMuOTQtLjQ5LTctMy44NS03LTcuOTNzMy4wNS03LjQ0IDctNy45M3YxNS44NnptMi0xNS44NmMxLjAzLjEzIDIgLjQ1IDIuODcuOTNIMTN2LS45M3pNMTMgN2g1LjI0Yy4yNS4zMS40OC42NS42OCAxSDEzVjd6bTAgM2g2Ljc0Yy4wOC4zMy4xNS42Ni4xOSAxSDEzdi0xem0wIDkuOTNWMTloMi44N2MtLjg3LjQ4LTEuODQuOC0yLjg3Ljkzek0xOC4yNCAxN0gxM3YtMWg1LjkyYy0uMi4zNS0uNDMuNjktLjY4IDF6bTEuNS0zSDEzdi0xaDYuOTNjLS4wNC4zNC0uMTEuNjctLjE5IDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFuc2Zvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE4di0ySDhWNGgyTDcgMSA0IDRoMnYySDJ2Mmg0djhjMCAxLjEuOSAyIDIgMmg4djJoLTJsMyAzIDMtM2gtMnYtMmg0ek0xMCA4aDZ2NmgyVjhjMC0xLjEtLjktMi0yLTJoLTZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVR1bmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTd2Mmg2di0ySDN6TTMgNXYyaDEwVjVIM3ptMTAgMTZ2LTJoOHYtMmgtOHYtMmgtMnY2aDJ6TTcgOXYySDN2Mmg0djJoMlY5SDd6bTE0IDR2LTJIMTF2MmgxMHptLTYtNGgyVjdoNFY1aC00VjNoLTJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvQ2FtZXJhQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEwLjQ4VjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtNC40OGw0IDMuOTh2LTExbC00IDMuOTh6TTE2IDE4SDRWNmgxMnYxMnptLTQuMzgtNi41TDkgMTVsLTEuNjItMi4xN0w1IDE2aDEwbC0zLjM4LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4em0tMi0uNzlWMThINFY2aDEydjMuNjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxNS40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgNiAxNS40M1YxNmg4di0uNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb1N0YWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDE4VjZoMi45NWwtMi4zMyA4LjczTDE2LjgyIDE4SDR6bTExLjYyLTIuMzktOC41NS0yLjI5TDguMzggOC40bDguNTYgMi4yOS0xLjMyIDQuOTJ6TTIwIDE4aC0yLjk1bDIuMzQtOC43M0w3LjE4IDZIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3Q29tZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDR2MTZoMjBWNEgyem0yIDJoMTZ2NUg0VjZ6bTAgMTJ2LTVoNHY1SDR6bTYgMHYtNWgxMHY1SDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0NvbXBhY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDR2MTZoMjBWNEgyem00LjUgMTRINHYtMi41aDIuNVYxOHptMC00Ljc1SDR2LTIuNWgyLjV2Mi41em0wLTQuNzVINFY2aDIuNXYyLjV6TTExIDE4SDguNXYtMi41SDExVjE4em0wLTQuNzVIOC41di0yLjVIMTF2Mi41em0wLTQuNzVIOC41VjZIMTF2Mi41em00LjUgOS41SDEzdi0yLjVoMi41VjE4em0wLTQuNzVIMTN2LTIuNWgyLjV2Mi41em0wLTQuNzVIMTNWNmgyLjV2Mi41ek0yMCAxOGgtMi41di0yLjVIMjBWMTh6bTAtNC43NWgtMi41di0yLjVIMjB2Mi41em0wLTQuNzVoLTIuNVY2SDIwdjIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZ25ldHRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1djE0SDNWNWgxOG0wLTJIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSA1YzMuMjUgMCA2IDEuODMgNiA0cy0yLjc1IDQtNiA0LTYtMS44My02LTQgMi43NS00IDYtNG0wLTJjLTQuNDIgMC04IDIuNjktOCA2czMuNTggNiA4IDYgOC0yLjY5IDgtNi0zLjU4LTYtOC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVnJwYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMDEgNEMyMC40NSA0IDE3LjQgNS41IDEyIDUuNWMtNS4zMSAwLTguNDktMS40OS05LjAxLTEuNDktLjUzIDAtLjk5LjQ0LS45OSAxLjAxVjE5YzAgLjU3LjQ2IDEgLjk5IDEgLjU3IDAgMy41NS0xLjUgOS4wMS0xLjUgNS40MiAwIDguNDQgMS41IDkuMDEgMS41LjUzIDAgLjk5LS40My45OS0xVjVjMC0uNTctLjQ2LTEtLjk5LTF6TTIwIDE3LjYzYy0yLjAxLS41OS00LjYyLTEuMTMtOC0xLjEzLTMuMzkgMC01Ljk5LjU0LTggMS4xM1Y2LjM4YzIuNTguNzMgNS4zMiAxLjEyIDggMS4xMiAzLjM4IDAgNS45OS0uNTQgOC0xLjEzdjExLjI2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05LjE3IDEwLjk5LTMuNjkgNC40MmMyLS4yNiA0LjE4LS40MSA2LjUyLS40MSAyLjMgMCA0LjUyLjE1IDYuNTEuNEwxNCAxMGwtMi44MyAzLjM5LTItMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2JBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm03IDctMy4yIDloMS45bC43LTJoMy4ybC43IDJoMS45TDkgN0g3em0tLjE1IDUuNjVMOCA5bDEuMTUgMy42NWgtMi4zek0yMiA3bC0xLjIgNi4yOUwxOS4zIDdoLTEuNmwtMS40OSA2LjI5TDE1IDdoLS43NmwtLjAxLjAxQzEyLjc2IDUuMTggMTAuNTMgNCA4IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDhjMi45NiAwIDUuNTUtMS42MSA2LjkzLTQgLjAzLS4wNi4wNS0uMTIuMDgtLjE4LjA1LS4wOC4wOS0uMTcuMTQtLjI1bC4xLjQzSDE3bDEuNS02LjFMMjAgMTZoMS43NWwyLjA1LTlIMjJ6bS04LjYzIDcuNjdDMTIuMzggMTYuNjQgMTAuMzUgMTggOCAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2YzAgLjk2LS4yMyAxLjg2LS42MyAyLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2JDbG91ZHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDZjMi42MSAwIDQuODkgMS44NiA1LjQgNC40M2wuMyAxLjUgMS41Mi4xMWMxLjU2LjExIDIuNzggMS40MSAyLjc4IDIuOTYgMCAxLjY1LTEuMzUgMy0zIDNoLTEzYy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ1NyA1LjQ1NyAwIDAgMSAxMi4wMSA2bTAtMkM5LjEyIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzUgOC4zNi4wMSAxMC45MS4wMSAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjQtNC45NkMxOC42OCA2LjU5IDE1LjY1IDQgMTIuMDEgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdiSW5jYW5kZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zLjU1IDE5LjA5IDEuNDEgMS40MSAxLjc5LTEuOC0xLjQxLTEuNDF6TTExIDIwaDJ2M2gtMnpNMSAxMWgzdjJIMXptMTItNi45NXYzLjk2bDEgLjU4YzEuMjQuNzIgMiAyLjA0IDIgMy40NiAwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNGMwLTEuNDIuNzctMi43NCAyLTMuNDZsMS0uNThWNC4wNWgybTItMkg5djQuODFDNy4yMSA3LjkgNiA5LjgzIDYgMTIuMDVjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNmMwLTIuMjItMS4yMS00LjE1LTMtNS4xOVYyLjA1ek0yMCAxMWgzdjJoLTN6bS0yLjc2IDcuNzEgMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2JJcmlkZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1aDE0VjlINXY2em0yLTRoMTB2Mkg3di0yem00LTEwaDJ2M2gtMnptOS40NiA0LjAxTDE5LjA0IDMuNmwtMS43OSAxLjc5IDEuNDEgMS40MXpNMTEgMjBoMnYzaC0yem02LjI0LTEuMjkgMS43OSAxLjggMS40Mi0xLjQyLTEuOC0xLjc5ek00Ljk2IDMuNTk1bDEuNzg4IDEuNzlMNS4zNCA2Ljc5IDMuNTUzIDUuMDAzek0zLjU1IDE5LjA4bDEuNDEgMS40MiAxLjc5LTEuOC0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYlNoYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJ2Mi41bDUuNSA1LjVIMjJsLTgtOHptMCA4aDNsLTMtM3Yzek04IDRsLTYgNmgydjEwaDhWMTBoMkw4IDR6bTEgMTBIN3YtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYlN1bm55IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02Ljc2IDQuODQtMS44LTEuNzktMS40MSAxLjQxIDEuNzkgMS43OXpNMSAxMC41aDN2Mkgxek0xMSAuNTVoMlYzLjVoLTJ6bTguMDQgMi40OTUgMS40MDggMS40MDctMS43OSAxLjc5LTEuNDA3LTEuNDA4em0tMS44IDE1LjExNSAxLjc5IDEuOCAxLjQxLTEuNDEtMS44LTEuNzl6TTIwIDEwLjVoM3YyaC0zem0tOC01Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptMCAxMGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6bS0xIDRoMnYyLjk1aC0yem0tNy40NS0uOTYgMS40MSAxLjQxIDEuNzktMS44LTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdiVHdpbGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45NTUgOC42NjIgMi4xMi0yLjEyMiAxLjQxNiAxLjQxNC0yLjEyMSAyLjEyMnpNMiAxOGgyMHYySDJ6TTExIDRoMnYzaC0yek0zLjU0MyA3LjkyNSA0Ljk1NyA2LjUxbDIuMTIxIDIuMTItMS40MTQgMS40MTV6TTUgMTZoMTRjMC0zLjg3LTMuMTMtNy03LTdzLTcgMy4xMy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzNjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdDNi40OCA3IDIgOS4yNCAyIDEyYzAgMi4yNCAyLjk0IDQuMTMgNyA0Ljc3VjIwbDQtNC00LTR2Mi43M2MtMy4xNS0uNTYtNS0xLjktNS0yLjczIDAtMS4wNiAzLjA0LTMgOC0zczggMS45NCA4IDNjMCAuNzMtMS40NiAxLjg5LTQgMi41M3YyLjA1YzMuNTMtLjc3IDYtMi41MyA2LTQuNTggMC0yLjc2LTQuNDgtNS0xMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQnVzaW5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDRoMTV2Mkgyek0xNSAxN2gydi0zaDF2LTJsLTEtNUgybC0xIDV2MmgxdjZoOXYtNmg0djN6bS02IDFINHYtNGg1djR6bS01Ljk2LTYgLjYtM2gxMS43MmwuNiAzSDMuMDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE4aC0zdi0zaC0ydjNoLTN2MmgzdjNoMnYtM2gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkTG9jYXRpb25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxdjNoM3YyaC0zdjNoLTJWNmgtM1Y0aDNWMWgyem0tOCAxMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTEtOS45NHYyLjAyQTYuNTMgNi41MyAwIDAgMCAxMiA1Yy0zLjM1IDAtNiAyLjU3LTYgNi4yIDAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0IDQuMDUtMy43IDYtNi43OSA2LTkuMTRWMTFoMnYuMmMwIDMuMzItMi42NyA3LjI1LTggMTEuOC01LjMzLTQuNTUtOC04LjQ4LTgtMTEuOEM0IDYuMjIgNy44IDMgMTIgM2MuMzQgMCAuNjcuMDIgMSAuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDZ2M2gzdjJoLTN2M2gtMnYtM0g4VjloM1Y2aDJ6bTUgNC4yQzE4IDYuNTcgMTUuMzUgNCAxMiA0cy02IDIuNTctNiA2LjJjMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQgNC4wNS0zLjcgNi02LjggNi05LjE0ek0xMiAyYzQuMiAwIDggMy4yMiA4IDguMiAwIDMuMzItMi42NyA3LjI1LTggMTEuOC01LjMzLTQuNTUtOC04LjQ4LTgtMTEuOEM0IDUuMjIgNy44IDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFJvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOHYtM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMnpNMTggNGgydjloLTJ6TTQgNGgydjE2SDR6TTExIDRoMnY0aC0yek0xMSAxMGgydjRoLTJ6TTExIDE2aDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFncmljdWx0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA5aDVjMC0xLjEtLjktMi0yLTJINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTQuMDZWOGMwLTEuMS0uOS0yLTItMmgtNi4yOWwtMS4wNi0xLjA2IDEuNDEtMS40MS0uNzEtLjcxLTMuNTMgMy41My43MS43MSAxLjQxLTEuNDFMMTMgNi43MVY5YzAgMS4xLS45IDItMiAySDguOTZjLS4yMi0uMTYtLjQ1LS4zLS42OS0uNDNsLS40Ljg5LS40Ni0uMjEuNC0uOUM3LjI2IDEwLjEzIDYuNjQgMTAgNiAxMGMtLjUzIDAtMS4wNC4xMS0xLjUyLjI2bC4zNC45MS0uNDcuMTgtLjM1LS45M2E0LjkyIDQuOTIgMCAwIDAtMi40MyAyLjMxbC44OS40LS4yMS40Ni0uOS0uNEMxLjEzIDEzLjc0IDEgMTQuMzYgMSAxNWMwIC41My4xMSAxLjA0LjI2IDEuNTJsLjkxLS4zNC4xOC40Ny0uOTMuMzVhNC45MiA0LjkyIDAgMCAwIDIuMzEgMi40M2wuNC0uODkuNDYuMjEtLjQuOWMuNTUuMjIgMS4xNy4zNSAxLjgxLjM1LjUzIDAgMS4wNC0uMTEgMS41Mi0uMjZsLS4zNC0uOTEuNDctLjE4LjM1LjkzYTQuOTIgNC45MiAwIDAgMCAyLjQzLTIuMzFsLS44OS0uNC4yMS0uNDYuOS40Yy4xLS4yNi4xOC0uNTQuMjQtLjgyaDUuMTZjLS4wMi4xNy0uMDUuMzQtLjA1LjUxIDAgMS45MyAxLjU3IDMuNSAzLjUgMy41czMuNS0xLjU3IDMuNS0zLjVjMC0uOTUtLjM4LTEuODEtMS0yLjQ0ek02IDE4Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3ptNC44Ny00Yy0uMDQtLjE4LS4wOC0uMzUtLjEzLS41MmwtLjkxLjM0LS4xOC0uNDcuOTMtLjM1SDExYzIuMjEgMCA0LTEuNzkgNC00VjhoNXY1LjA1Yy0uMTYtLjAyLS4zMy0uMDUtLjUtLjA1LS45NSAwLTEuODEuMzgtMi40NCAxaC02LjE5em04LjYzIDRjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVN0b3BzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOC43Yy0yLjQ2IDEuNS01LjUgNC4xNy02IDguM2gydjJIOXYtMmgyYy0uNS00LjUtNC4zNy04LTktOFY3YzQuMzkgMCA4LjIyIDIuNTUgMTAgNi4zIDEuMzgtMi45NyAzLjg2LTUuMDMgNS45Ni02LjMxTDE0IDdWNWg3djdoLTJWOC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4zNCAxOEg1LjhsOC4yNS0xMmg1LjU0bC0yLjI1IDEyek0xMyA0IDIgMjBoMTdsMy0xNmgtOXptMS41IDVhMi41IDIuNSAwIDAgMCAwIDUgMi41IDIuNSAwIDAgMCAwLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbHRSb3V0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkuNzggMTEuMTYtMS40MiAxLjQyYTcuMjgyIDcuMjgyIDAgMCAxLTEuNzktMi45NGwxLjk0LS40OWMuMzIuODkuNzcgMS41IDEuMjcgMi4wMXpNMTEgNiA3IDIgMyA2aDMuMDJjLjAyLjgxLjA4IDEuNTQuMTkgMi4xN2wxLjk0LS40OUM4LjA4IDcuMiA4LjAzIDYuNjMgOC4wMiA2SDExem0xMCAwLTQtNC00IDRoMi45OWMtLjEgMy42OC0xLjI4IDQuNzUtMi41NCA1Ljg4LS41LjQ0LTEuMDEuOTItMS40NSAxLjU1LS4zNC0uNDktLjczLS44OC0xLjEzLTEuMjRMOS40NiAxMy42Yy45My44NSAxLjU0IDEuNTQgMS41NCAzLjR2NWgydi01YzAtMi4wMi43MS0yLjY2IDEuNzktMy42MyAxLjM4LTEuMjQgMy4wOC0yLjc4IDMuMi03LjM3SDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXRtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDl2MS41aDIuMjVWMTVoMS41di00LjVIMTRWOUg4ek02IDlIM2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41di0xLjVoMlYxNUg3di01YzAtLjU1LS40NS0xLTEtMXptLS41IDNoLTJ2LTEuNWgyVjEyek0yMSA5aC00LjVjLS41NSAwLTEgLjQ1LTEgMXY1SDE3di00LjVoMVYxNGgxLjV2LTMuNTFoMVYxNUgyMnYtNWMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdHRyYWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjE1IDE0LjQyYy4yMy0uNzcuMzUtMS41OC4zNS0yLjQycy0uMTItMS42NS0uMzUtMi40MmMuNzgtLjYgMS4wMi0xLjcuNTEtMi41OHMtMS41OC0xLjIzLTIuNDktLjg1YTguNTMgOC41MyAwIDAgMC00LjE4LTIuNDJDMTMuODUgMi43NSAxMy4wMSAyIDEyIDJzLTEuODUuNzUtMS45OCAxLjczYTguNTYxIDguNTYxIDAgMCAwLTQuMTkgMi40MmMtLjkxLS4zOC0xLjk4LS4wMy0yLjQ5Ljg1cy0uMjcgMS45OC41MSAyLjU4Yy0uMjMuNzctLjM1IDEuNTgtLjM1IDIuNDJzLjEyIDEuNjUuMzUgMi40MmMtLjc4LjYtMS4wMiAxLjctLjUxIDIuNThzMS41OCAxLjIzIDIuNDkuODVjLjQuNDIuODMuNzkgMS4zIDEuMTJMNS43OCAyMmgxLjg4bC45OC0yLjE5Yy40NC4xOS45LjM0IDEuMzguNDYuMTMuOTguOTcgMS43MyAxLjk4IDEuNzNzMS44NS0uNzUgMS45OC0xLjczYy40Ni0uMTEuOTEtLjI2IDEuMzQtLjQ0TDE2LjMgMjJoMS44OGwtMS4zNC0zYy40OC0uMzQuOTMtLjcyIDEuMzQtMS4xNS45MS4zOCAxLjk5LjAzIDIuNDktLjg1LjUtLjg4LjI2LTEuOTgtLjUyLTIuNTh6bS02LjU5IDQuMzNjLS4zNy0uNDYtLjkzLS43NS0xLjU2LS43NXMtMS4yLjI5LTEuNTcuNzVjLS40LS4wOS0uNzktLjIxLTEuMTYtLjM3bDEuNDMtMy4xOWEzLjUyMiAzLjUyMiAwIDAgMCAyLjU2LjAybDEuNDIgMy4xOGMtLjM2LjE1LS43My4yNy0xLjEyLjM2em0tMy4wOC02LjczYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNS0xLjUtLjY3LTEuNS0xLjV6bTguMjMgMS45OWMtLjYxLjA3LTEuMTguNDEtMS41Mi45OS0uMzIuNTYtLjM0IDEuMi0uMTIgMS43NS0uMjguMjktLjU4LjU1LS45Ljc5bC0xLjUtMy4zNWMuNDktLjU5Ljc4LTEuMzQuNzgtMi4xNiAwLTEuODktMS41NS0zLjQxLTMuNDYtMy40MXMtMy40NiAxLjUzLTMuNDYgMy40MWMwIC44LjI4IDEuNTQuNzUgMi4xM2wtMS41MiAzLjM5Yy0uMzEtLjIzLS42LS40OC0uODctLjc2LjI2LS41Ni4yNC0xLjIyLS4wOS0xLjc5LS4zNC0uNTktLjkzLS45NC0xLjU2LS45OS0uMjItLjY4LS4zMy0xLjQtLjMzLTIuMTUgMC0uNjQuMDktMS4yNi4yNS0xLjg1LjY2LS4wMyAxLjMtLjM4IDEuNjUtMSAuMzctLjYzLjM1LTEuMzguMDEtMS45OC45Mi0uOTggMi4xMS0xLjY5IDMuNDUtMi4wMy4zNC41OS45OSAxIDEuNzMgMXMxLjM5LS40IDEuNzMtMWMxLjM0LjM0IDIuNTMgMS4wNyAzLjQ0IDIuMDUtLjMyLjU5LS4zMyAxLjMzLjAzIDEuOTUuMzUuNi45Ni45NSAxLjYgMSAuMTYuNTkuMjUgMS4yMS4yNSAxLjg2IDAgLjc1LS4xMiAxLjQ3LS4zNCAyLjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFkZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMmg0djEuNWgtNHpNMTQgMTVoNHYxLjVoLTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDdoLTVWNGMwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJ2M0g0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bS05IDBWNGgydjVoLTJWN3ptOSAxM0g0VjloNWMwIDEuMS45IDIgMiAyaDJjMS4xIDAgMi0uOSAyLTJoNXYxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjA4IDE2LjE4Yy0uNjQtLjI4LTEuMzQtLjQzLTIuMDgtLjQzcy0xLjQ0LjE1LTIuMDguNDNjLS41Ni4yNC0uOTIuNzgtLjkyIDEuMzlWMThoNnYtLjQzYzAtLjYxLS4zNi0xLjE1LS45Mi0xLjM5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFrZXJ5RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAxMC45NGMuMTMtLjMyLjEtLjIzLjE1LS4zOS4zLTEuMjEtLjM0LTIuNDctMS41LTIuOTNsLTIuMDEtLjhjLS40Ni0uMTgtLjk1LS4yMS0xLjQxLS4xMi0uMTEtLjMzLS4yOS0uNjMtLjUyLS44OS0uNDgtLjUyLTEuMTUtLjgxLTEuODUtLjgxaC0yLjcxYy0uNzEgMC0xLjM4LjI5LTEuODUuODEtLjI0LjI2LS40Mi41Ni0uNTMuODgtLjQ2LS4wOS0uOTUtLjA2LTEuNDEuMTJsLTIuMDEuOGMtMS4xNi40Ni0xLjggMS43Mi0xLjUgMi45M2wuMTUuMzhDMS4xIDE1LjU1IDEgMTUuNTUgMSAxNi4zOGMwIC45MS40NiAxLjc0IDEuMjQgMi4yMiAxLjQyLjg4IDIuNDkuMTQgNC0uNjFoMTEuNTNjMS41Mi43NiAxLjg2IDEuMDEgMi42MyAxLjAxIDEgMCAyLjYxLS43NyAyLjYxLTIuNjEtLjAxLS44NS0uMTMtLjg4LTIuNTEtNS40NXptLS4zOCA1Ljk5LTEuNjgtLjg0IDEuMDgtMi43IDEuNDEgMi43MWMuMjguNTMtLjI5IDEuMDktLjgxLjgzem0tNS4wMy0uOTQuNjItNi45Yy4wMy0uMzMuMzctLjU0LjY4LS40MmwyLjAxLjhjLjIyLjA5LjM0LjMxLjMxLjU0bC0yLjQgNS45OGgtMS4yMnptLTcuNDEgMC0yLjQtNS45OGMtLjAzLS4yMy4wOS0uNDUuMzEtLjU0bDIuMDEtLjhjLjMxLS4xMi42NS4wOC42OC40MmwuNjIgNi45SDcuNjh6bS00LjYxLjExIDEuNDEtMi43MiAxLjA4IDIuNzEtMS42OC44NGMtLjUyLjI2LTEuMDktLjMtLjgxLS44M3ptNy4wOC04LjU2YS41LjUgMCAwIDEgLjUtLjU0aDIuNzFhLjUuNSAwIDAgMSAuNS41NGwtLjc3IDguNDVoLTIuMTdsLS43Ny04LjQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVlbmhlcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDFINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDE1LjkzYzAgLjY5LjM1IDEuMy44OCAxLjY2TDEyIDIzbDguMTEtNS40MWMuNTMtLjM2Ljg4LS45Ny44OC0xLjY2TDIxIDNjMC0xLjEtLjktMi0yLTJ6bS03IDE5LjYtNy00LjY2VjNoMTR2MTIuOTNsLTcgNC42N3ptLTIuMDEtNy40Mi0yLjU4LTIuNTlMNiAxMmw0IDQgOC04LTEuNDItMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJpa2VTY29vdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTRoLjc0TDguODIgNS41NkEyLjAwOSAyLjAwOSAwIDAgMCA2Ljg3IDRIM3YyaDMuODdsMS40MiA2LjI1aC0uMDFBNi4wMDggNi4wMDggMCAwIDAgNC4wOSAxN0gwdjJoNnYtMWMwLTIuMjEgMS43OS00IDQtNHpNMTkgOGgtLjgybC0xLjM1LTMuNjlBMS45NzYgMS45NzYgMCAwIDAgMTQuOTYgM0gxMXYyaDMuOTZsMS4xIDNIMTAuNGwuNDYgMkgxNWMtLjQzLjU4LS43NSAxLjI1LS45IDJoLTIuNzlsLjQ2IDJoMi4zM2MuNDQgMi4yMyAyLjMxIDMuODggNC42NSAzLjk5IDIuOC4xMyA1LjI1LTIuMTkgNS4yNS01QzI0IDEwLjIgMjEuOCA4IDE5IDh6bTAgOGMtMS42OCAwLTMtMS4zMi0zLTMgMC0uOTMuNDEtMS43MyAxLjA1LTIuMjhsLjk2IDIuNjQgMS44OC0uNjgtLjk3LTIuNjdjLjAzIDAgLjA2LS4wMS4wOS0uMDEgMS42OCAwIDMgMS4zMiAzIDNzLTEuMzMgMy0zLjAxIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE1Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcmVha2Zhc3REaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAzSDZDMy43OSAzIDIgNC43OSAyIDdjMCAxLjQ4LjgxIDIuNzUgMiAzLjQ1VjE5YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTguNTVjMS4xOS0uNjkgMi0xLjk3IDItMy40NSAwLTIuMjEtMS43OS00LTQtNHptMSA1LjcyLTEgLjU4VjE5SDZWOS4zMWwtLjk5LS41OEM0LjM4IDguMzUgNCA3LjcxIDQgN2MwLTEuMS45LTIgMi0yaDEyYzEuMSAwIDIgLjkgMiAyIDAgLjcxLS4zOCAxLjM2LTEgMS43MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNzEgOS4yOUMxMi41MSA5LjEgMTIuMjYgOSAxMiA5cy0uNTEuMS0uNzEuMjlsLTMgM2EuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMyAzYy4yLjIuNDUuMy43MS4zcy41MS0uMS43MS0uMjlsMy0zYS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMy0zLjAxek0xMiAxNC41OCAxMC40MSAxMyAxMiAxMS40MSAxMy41OSAxMyAxMiAxNC41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJydW5jaERpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjEuNWMwIC4yOC4yMi41LjQ5LjVoMTMuMDJjLjI3IDAgLjQ5LS4yMi40OS0uNVYyMEgydjEuNXpNMTUuNSAxNkgxMXYtMkg3djJIMi41Yy0uMjggMC0uNS4yMi0uNS41VjE4aDE0di0xLjVjMC0uMjgtLjIyLS41LS41LS41ek0yMC40NyAxNS40NUE1Ljc5NiA1Ljc5NiAwIDAgMCAyMiAxMS41MVYyaC02djkuNDdjMCAxLjQ4LjU4IDIuOTIgMS42IDRsLjQuNDJWMjJoNHYtMmgtMnYtNC4wM2wuNDctLjUyek0xOCA0aDJ2NGgtMlY0em0xLjAzIDEwLjA3YTMuODkzIDMuODkzIDAgMCAxLTEuMDMtMi42VjEwaDJ2MS41MWMwIC45NS0uMzQgMS44NS0uOTcgMi41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJ1c0FsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCIxNS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiMTUuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTFWOGg3LjI5QzExLjEgNy4zNyAxMSA2LjcgMTEgNkg0LjQzYy44My0uNzEgMi45OC0xLjA5IDYuNjUtLjk4LjEtLjcuMy0xLjM3LjU5LTEuOTlDMi45NyAyLjY3IDIgNS4wMiAyIDd2OS41YzAgLjk1LjM4IDEuODEgMSAyLjQ0VjIxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDh2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMi4wNmMuNjItLjYzIDEtMS40OSAxLTIuNDRWMTNjLTEuOTEgMC0zLjYzLS43Ni00Ljg5LTJINHptMTIgNWMwIDEuMS0uOSAyLTIgMkg2Yy0xLjEgMC0yLS45LTItMnYtM2gxMnYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLjUgOGgtMVY4aDF2MXptMC0yaC0xVjNoMXY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FyQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLjUgNmgtMVYzaDF2NHptMCAxdjFoLTFWOGgxek02IDEzLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTOC4zMyAxNSA3LjUgMTUgNiAxNC4zMyA2IDEzLjV6bTEzLS41N2E2LjcyIDYuNzIgMCAwIDAgMi0uNlYxOWMwIC41NS0uNDUgMS0xIDFoLTFjLS41NSAwLTEtLjQ1LTEtMXYtMUg2djFjMCAuNTUtLjQ1IDEtMSAxSDRjLS41NSAwLTEtLjQ1LTEtMXYtOGwyLjA4LTUuOTlDNS4yOSA0LjQyIDUuODQgNCA2LjUgNGg0Ljc5Yy0uMTkuNjMtLjI5IDEuMzEtLjI5IDJINi44NUw1LjgxIDloNS44NmMuMzYuNzUuODQgMS40MyAxLjQzIDJINXY1aDE0di0zLjA3em0tMS4wOS4wN2E2LjkyIDYuOTIgMCAwIDEtMi41My0uNTFjLS4yMy4yNy0uMzguNjItLjM4IDEuMDEgMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41YzAtLjE4LS4wMy0uMzQtLjA5LS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FyUmVudGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4yNSA5LjZjLS4wMi0uMDItLjAzLS4wNC0uMDUtLjA3LS4zOC0uNTItLjkyLS41My0uOTItLjUzSDcuNzJzLS41NC4wMS0uOTIuNTRjLS4wMi4wMi0uMDMuMDQtLjA1LjA2LS4wNy4xMS0uMTQuMjQtLjE5LjQtLjIyLjY2LS43NCAyLjIyLTEuNTYgNC42OXY2LjVjMCAuNDUuMzUuODEuNzguODFoLjQ0Yy40MyAwIC43OC0uMzYuNzgtLjgxVjIwaDEwdjEuMTljMCAuNDUuMzQuODEuNzguODFoLjQ0Yy40MyAwIC43OC0uMzYuNzgtLjgxdi02LjVjLS44Mi0yLjQ2LTEuMzQtNC4wMy0xLjU2LTQuNjktLjA1LS4xNi0uMTItLjI5LS4xOS0uNHpNOC4zMyAxMWg3LjM0bC4yMy42OS40MyAxLjMxSDcuNjdsLjY2LTJ6TTE3IDE4SDd2LTNoMTB2M3pNMTAuODMgM0EzLjAxIDMuMDEgMCAwIDAgOCAxQzYuMzQgMSA1IDIuMzQgNSA0YzAgMS42NSAxLjM0IDMgMyAzIDEuMyAwIDIuNDEtLjg0IDIuODMtMkgxNnYyaDJWNWgxVjNoLTguMTd6TTggNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FyUmVwYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc4IDE2aC40NGMuNDMgMCAuNzgtLjM2Ljc4LS44MVYxNGgxMHYxLjE5YzAgLjQ1LjM0LjgxLjc4LjgxaC40NGMuNDMgMCAuNzgtLjM2Ljc4LS44MXYtNi41TDE3LjQ0IDRjLS4wNS0uMTYtLjEyLS4yOS0uMTktLjQtLjAyLS4wMi0uMDMtLjA0LS4wNS0uMDctLjM4LS41Mi0uOTItLjUzLS45Mi0uNTNINy43MnMtLjU0LjAxLS45Mi41NGMtLjAyLjAyLS4wMy4wNC0uMDUuMDYtLjA3LjExLS4xNC4yNC0uMTkuNEw1IDguNjl2Ni41YzAgLjQ1LjM1LjgxLjc4Ljgxek04LjMzIDVoNy4zNGwuMjMuNjkuNDMgMS4zMUg3LjY3bC42Ni0yek03IDkuMDFWOWgxMHYzSDdWOS4wMXpNNCAxNy4wMVYxOWg3djNoMnYtM2g3di0xLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FzdGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOXYyaC0yVjNoLTJ2MmgtMlYzaC0ydjJoLTJWM0g5djJIN1YzSDV2OEgzVjlIMXYxMmg5di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g5VjloLTJ6bTAgMTBoLTV2LTFjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDR2MUgzdi02aDRWN2gxMHY2aDR2NnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA5aDJ2M0g5ek0xMyA5aDJ2M2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhdGVnb3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAyLTUuNSA5aDExTDEyIDJ6bTAgMy44NEwxMy45MyA5aC0zLjg3TDEyIDUuODR6TTE3LjUgMTNjLTIuNDkgMC00LjUgMi4wMS00LjUgNC41czIuMDEgNC41IDQuNSA0LjUgNC41LTIuMDEgNC41LTQuNS0yLjAxLTQuNS00LjUtNC41em0wIDdhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6TTMgMjEuNWg4di04SDN2OHptMi02aDR2NEg1di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2VsZWJyYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yIDIyIDE0LTUtOS05LTUgMTR6bTEwLjM1LTUuODJMNS4zIDE4LjdsMi41Mi03LjA1IDQuNTMgNC41M3pNMTQuNTMgMTIuNTNsNS41OS01LjU5YTEuMjUgMS4yNSAwIDAgMSAxLjc3IDBsLjU5LjU5IDEuMDYtMS4wNi0uNTktLjU5YTIuNzU4IDIuNzU4IDAgMCAwLTMuODkgMGwtNS41OSA1LjU5IDEuMDYgMS4wNnpNMTAuMDYgNi44OGwtLjU5LjU5IDEuMDYgMS4wNi41OS0uNTlhMi43NTggMi43NTggMCAwIDAgMC0zLjg5bC0uNTktLjU5LTEuMDYgMS4wNy41OS41OWMuNDguNDguNDggMS4yOCAwIDEuNzZ6TTE3LjA2IDExLjg4bC0xLjU5IDEuNTkgMS4wNiAxLjA2IDEuNTktMS41OWExLjI1IDEuMjUgMCAwIDEgMS43NyAwbDEuNjEgMS42MSAxLjA2LTEuMDYtMS42MS0xLjYxYTIuNzU4IDIuNzU4IDAgMCAwLTMuODkgMHpNMTUuMDYgNS44OGwtMy41OSAzLjU5IDEuMDYgMS4wNiAzLjU5LTMuNTlhMi43NTggMi43NTggMCAwIDAgMC0zLjg5bC0xLjU5LTEuNTktMS4wNiAxLjA2IDEuNTkgMS41OWMuNDguNDkuNDggMS4yOSAwIDEuNzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaHVyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMi4yMlY5bC01LTIuNVY1aDJWM2gtMlYxaC0ydjJIOXYyaDJ2MS41TDYgOXYzLjIyTDIgMTR2OGg5di00YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXY0aDl2LThsLTQtMS43OHpNMjAgMjBoLTV2LTIuMDRjMC0xLjY5LTEuMzUtMy4wNi0zLTMuMDZzLTMgMS4zNy0zIDMuMDZWMjBINHYtNC43OWw0LTEuODF2LTMuMzVMMTIgOGw0IDIuMDR2My4zNWw0IDEuODFWMjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbGVhbmluZ1NlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTFoLTFWM2MwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJ2OEg4Yy0yLjc2IDAtNSAyLjI0LTUgNXY3aDE4di03YzAtMi43Ni0yLjI0LTUtNS01em0tNS04aDJ2OGgtMlYzem04IDE4aC0ydi0zYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNoLTJ2LTNjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2M0g5di0zYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNINXYtNWMwLTEuNjUgMS4zNS0zIDMtM2g4YzEuNjUgMCAzIDEuMzUgMyAzdjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21wYXNzQ2FsaWJyYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEyYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMCA4Yy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3ptMC0xN0M4LjEgMyA0LjU2IDQuNTkgMiA3LjE1bDUgNWE3LjA2IDcuMDYgMCAwIDEgMTAtLjAxbDUtNUMxOS40NCA0LjU5IDE1LjkgMyAxMiAzem00Ljg0IDYuNDdjLTEuNDQtLjkxLTMuMS0xLjQtNC44NC0xLjQtMS43NCAwLTMuNDEuNDktNC44NSAxLjQxTDQuOTQgNy4yNkM2Ljk5IDUuNzkgOS40NCA1IDEyIDVjMi41NiAwIDUgLjc5IDcuMDUgMi4yNmwtMi4yMSAyLjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29ubmVjdGluZ0FpcnBvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNCAxNyAxLjMgNC40aC0xLjFMMTMgMTdoLTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoM2wyLjYtNC40aDEuMUwxNS40IDE1aDIuODVsLjc1LTFoMWwtLjYgMiAuNiAyaC0xbC0uNzUtMUgxNS40ek01Ljc1IDcgNSA2SDRsLjYgMi0uNiAyaDFsLjc1LTFIOC42bC0xLjMgNC40aDEuMUwxMSA5aDNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTNMOC40IDIuNkg3LjNMOC42IDdINS43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyaXNpc0FsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAyLjVjMCAxLjUtMS41IDYtMS41IDZoLTJTOS41IDQgOS41IDIuNWEyLjUgMi41IDAgMCAxIDUgMHpNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem00LjA4LTQuODljLjE4LS43NS4zMy0xLjQ3LjM5LTIuMDZBOS45OTYgOS45OTYgMCAwIDEgMjIgMTJjMCA1LjUyLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyYzAtMy45MiAyLjI1LTcuMzEgNS41My04Ljk1LjA3LjU5LjIxIDEuMzIuMzkgMi4wNkE4LjAyOCA4LjAyOCAwIDAgMCA0IDEyYzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LThjMC0yLjkzLTEuNTgtNS40OS0zLjkyLTYuODl6TTE4IDEyYzAgMy4zMS0yLjY5IDYtNiA2cy02LTIuNjktNi02YzAtMiAuOTgtMy43NyAyLjQ4LTQuODYuMjMuODEuNjUgMi4wNy42NSAyLjA3QzguNDMgOS45MyA4IDEwLjkyIDggMTJjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGMwLTEuMDgtLjQzLTIuMDctMS4xMy0yLjc5IDAgMCAuNDEtMS4yMi42NS0yLjA3QTUuOTk4IDUuOTk4IDAgMCAxIDE4IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVsaXZlcnlEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3YzAtMS4xLS45LTItMi0yaC0zdjJoM3YyLjY1TDEzLjUyIDE0SDEwVjlINmMtMi4yMSAwLTQgMS43OS00IDR2M2gyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNC40OEwxOSAxMC4zNVY3ek00IDE0di0xYzAtMS4xLjktMiAyLTJoMnYzSDR6bTMgM2MtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDZoNXYySDV6TTE5IDEzYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXBhcnR1cmVCb2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI1LjVcIixcImN5XCI6XCIxNi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMi41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFhNi45OCA2Ljk4IDAgMCAwLTUuNzUgMy4wMkM5Ljg0IDQuMDEgOS40MyA0IDkgNGMtNC40MiAwLTggLjUtOCA0djEwYzAgLjg4LjM5IDEuNjcgMSAyLjIyVjIyYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDh2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMS43OGMuNjEtLjU1IDEtMS4zNCAxLTIuMjJ2LTMuMDhjMy4zOS0uNDkgNi0zLjM5IDYtNi45MiAwLTMuODctMy4xMy03LTctN3pNOSA2aC4yOWMtLjA5LjMyLS4xNi42Ni0uMjEuOTlIMy4zNEMzLjg5IDYuNDYgNS4zMSA2IDkgNnpNMyA4Ljk5aDYuMDhjLjE2IDEuMTEuNTcgMi4xMyAxLjE4IDMuMDFIM1Y4Ljk5ek0xNSAxOGMwIC4zNy0uMjEuNjItLjM0LjczbC0uMjkuMjdIMy42M2wtLjI5LS4yN0EuOTY4Ljk2OCAwIDAgMSAzIDE4di00aDkuNDFjLjc4LjQ3IDEuNjUuNzkgMi41OS45MlYxOHptMS01Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptLjUtOUgxNXY1bDMuNjIgMi4xNi43NS0xLjIzLTIuODctMS42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlc2lnblNlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTcgNy4yN2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuODMtMi44M2EuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTQuNDkgNC40OS0zLjg5LTMuODljLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC0xLjkgMS45Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDMuODkgMy44OUwzIDE2Ljc2VjIxaDQuMjRsNC41Mi00LjUyIDMuODkgMy44OWMuOTUuOTUgMi4yMy42IDIuODMgMGwxLjktMS45Yy43OC0uNzguNzgtMi4wNSAwLTIuODNsLTMuODktMy44OSA0LjQ4LTQuNDh6TTUuMDQgNi45NGwxLjg5LTEuOUw4LjIgNi4zMSA3LjAyIDcuNWwxLjQxIDEuNDEgMS4xOS0xLjE5IDEuMiAxLjItMS45IDEuOS0zLjg4LTMuODh6bTExLjIzIDcuNDQtMS4xOSAxLjE5IDEuNDEgMS40MSAxLjE5LTEuMTkgMS4yNyAxLjI3LTEuOSAxLjktMy44OS0zLjg5IDEuOS0xLjkgMS4yMSAxLjIxek02LjQxIDE5SDV2LTEuNDFsOS42MS05LjYxIDEuMyAxLjMuMTEuMTFMNi40MSAxOXptOS42MS0xMi40NCAxLjQxLTEuNDEgMS40MSAxLjQxLTEuNDEgMS40MS0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaWFtb25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1TDIgOWwxMCAxMkwyMiA5bC0zLTZ6TTkuNjIgOGwxLjUtM2gxLjc2bDEuNSAzSDkuNjJ6TTExIDEwdjYuNjhMNS40NCAxMEgxMXptMiAwaDUuNTZMMTMgMTYuNjhWMTB6bTYuMjYtMmgtMi42NWwtMS41LTNoMi42NWwxLjUgM3pNNi4yNCA1aDIuNjVsLTEuNSAzSDQuNzRsMS41LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaW5uZXJEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yIDE5IDIgMmgxNmwyLTJ6TTMgMThoMTYuOTdjLjI5LTMuMjYtMi4yOC02LTUuNDgtNi0yLjM1IDAtNC4zNSAxLjQ4LTUuMTQgMy41NS0uNDEtLjIzLS44Ny0uMzgtMS4zNS0uNDdWOWgxLjc1QzEwLjk5IDkgMTIgNy45OSAxMiA2Ljc1aDl2LTEuNWgtOUMxMiA0LjAxIDEwLjk5IDMgOS43NSAzSDN2MS41aDF2Ljc1SDN2MS41aDF2Ljc1SDNWOWgxdjcuMzljLS40NC40Ni0uNzggMS0xIDEuNjF6bTExLjUtNGMuOTkgMCAxLjkxLjQgMi41OCAxLjE0LjI0LjI2LjQ0LjU1LjU4Ljg2aC02LjMyYy41OC0xLjIxIDEuODEtMiAzLjE2LTJ6TTggNC41aDJ2Ljc1SDhWNC41em0wIDIuMjVoMnYuNzVIOHYtLjc1ek01LjUgNC41aDF2Ljc1aC0xVjQuNXptMCAyLjI1aDF2Ljc1aC0xdi0uNzV6TTUuNSA5aDF2Ni4wNmMtLjM1LjA2LS42OC4xNy0xIC4zVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zQmlrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek01IDEyYy0yLjggMC01IDIuMi01IDVzMi4yIDUgNSA1IDUtMi4yIDUtNS0yLjItNS01LTV6bTAgOC41Yy0xLjkgMC0zLjUtMS42LTMuNS0zLjVzMS42LTMuNSAzLjUtMy41IDMuNSAxLjYgMy41IDMuNS0xLjYgMy41LTMuNSAzLjV6bTUuOC0xMCAyLjQtMi40LjguOGMxLjMgMS4zIDMgMi4xIDUuMSAyLjFWOWMtMS41IDAtMi43LS42LTMuNi0xLjVsLTEuOS0xLjljLS41LS40LTEtLjYtMS42LS42cy0xLjEuMi0xLjQuNkw3LjggOC40Yy0uNC40LS42LjktLjYgMS40IDAgLjYuMiAxLjEuNiAxLjRMMTEgMTR2NWgydi02LjJsLTIuMi0yLjN6TTE5IDEyYy0yLjggMC01IDIuMi01IDVzMi4yIDUgNSA1IDUtMi4yIDUtNS0yLjItNS01LTV6bTAgOC41Yy0xLjkgMC0zLjUtMS42LTMuNS0zLjVzMS42LTMuNSAzLjUtMy41IDMuNSAxLjYgMy41IDMuNS0xLjYgMy41LTMuNSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zQm9hdEZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDEyLjY2LTEuMTIgMy45N2MtLjc4LS40My0xLjA3LS44Ni0yLjY1LTIuNjctMS42IDEuODItMi40MyAzLjA0LTQgMy4wNC0xLjUzIDAtMi4zNC0xLjE1LTQtMy4wNC0xLjYgMS44Mi0xLjg3IDIuMjEtMi42NSAyLjY1bC0xLjEzLTMuOTZMMTIgMTAuMTFsNy43NyAyLjU1ek0xNSAxSDl2M0g2Yy0xLjEgMC0yIC45LTIgMnY0LjYybC0xLjI5LjQyYy0uNjMuMTktLjgxLjg0LS42NiAxLjI4TDMuOTUgMTlINGMxLjYgMCAzLjAyLS44OCA0LTIgLjk4IDEuMTIgMi40IDIgNCAyczMuMDItLjg4IDQtMmMuOTggMS4xMiAyLjQgMiA0IDJoLjA1bDEuOTEtNi42OGMuMTEtLjM3LjA0LTEuMDYtLjY2LTEuMjhsLTEuMy0uNDJWNmMwLTEuMS0uOS0yLTItMmgtM1Yxek02IDkuOTdWNmgxMnYzLjk3TDEyIDggNiA5Ljk3em0xMCA5LjcxYy0xLjIyLjg1LTIuNjEgMS4yOC00IDEuMjhzLTIuNzgtLjQzLTQtMS4yOEM2Ljc4IDIwLjUzIDUuMzkgMjEgNCAyMUgydjJoMmMxLjM4IDAgMi43NC0uMzUgNC0uOTkgMS4yNi42NCAyLjYzLjk3IDQgLjk3czIuNzQtLjMyIDQtLjk3YzEuMjYuNjUgMi42Mi45OSA0IC45OWgydi0yaC0yYy0xLjM5IDAtMi43OC0uNDctNC0xLjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0JvYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDN2MWgtMlYzaDJtLTEgNy4xMSA1LjM4IDEuNzcgMi4zOS43OC0xLjEyIDMuOTdjLS41NC0uMy0uOTQtLjcxLTEuMTQtLjk0TDE2IDEzLjk2bC0xLjUxIDEuNzJjLS4zNC40LTEuMjggMS4zMi0yLjQ5IDEuMzJzLTIuMTUtLjkyLTIuNDktMS4zMkw4IDEzLjk2bC0xLjUxIDEuNzJjLS4yLjIzLS42LjYzLTEuMTQuOTNsLTEuMTMtMy45NiAyLjQtLjc5TDEyIDEwLjExTTE1IDFIOXYzSDZjLTEuMSAwLTIgLjktMiAydjQuNjJsLTEuMjkuNDJhMS4wMDcgMS4wMDcgMCAwIDAtLjY2IDEuMjhMMy45NSAxOUg0YzEuNiAwIDMuMDItLjg4IDQtMiAuOTggMS4xMiAyLjQgMiA0IDJzMy4wMi0uODggNC0yYy45OCAxLjEyIDIuNCAyIDQgMmguMDVsMS44OS02LjY4Yy4wOC0uMjYuMDYtLjU0LS4wNi0uNzhzLS4zNC0uNDItLjYtLjVMMjAgMTAuNjJWNmMwLTEuMS0uOS0yLTItMmgtM1Yxek02IDkuOTdWNmgxMnYzLjk3TDEyIDggNiA5Ljk3em0xMCA5LjcxYy0xLjIyLjg1LTIuNjEgMS4yOC00IDEuMjhzLTIuNzgtLjQzLTQtMS4yOEM2Ljc4IDIwLjUzIDUuMzkgMjEgNCAyMUgydjJoMmMxLjM4IDAgMi43NC0uMzUgNC0uOTkgMS4yNi42NCAyLjYzLjk3IDQgLjk3czIuNzQtLjMyIDQtLjk3YzEuMjYuNjUgMi42Mi45OSA0IC45OWgydi0yaC0yYy0xLjM5IDAtMi43OC0uNDctNC0xLjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0J1c0ZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQgMC04IC41LTggNHY5LjVjMCAuOTUuMzggMS44MSAxIDIuNDRWMjBjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoOHYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0yLjA2Yy42Mi0uNjMgMS0xLjQ5IDEtMi40NFY2YzAtMy41LTMuNTgtNC04LTR6bTAgMmMzLjcxIDAgNS4xMy40NiA1LjY3IDFINi40M2MuNi0uNTIgMi4wNS0xIDUuNTctMXptNiAxMWMwIDEuMS0uOSAyLTIgMkg4Yy0xLjEgMC0yLS45LTItMnYtM2gxMnYzem0wLTVINlY3aDEydjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0J1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC40MiAwLTggLjUtOCA0djEwYzAgLjg4LjM5IDEuNjcgMSAyLjIyVjIwYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDh2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMS43OGMuNjEtLjU1IDEtMS4zNCAxLTIuMjJWNmMwLTMuNS0zLjU4LTQtOC00em01LjY2IDIuOTlINi4zNEM2Ljg5IDQuNDYgOC4zMSA0IDEyIDRzNS4xMS40NiA1LjY2Ljk5em0uMzQgMlYxMEg2VjYuOTloMTJ6bS0uMzQgOS43NC0uMjkuMjdINi42M2wtLjI5LS4yN0EuOTY4Ljk2OCAwIDAgMSA2IDE2di00aDEydjRjMCAuMzctLjIxLjYyLS4zNC43M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zQ2FyRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgNi4wMUMxOC43MiA1LjQyIDE4LjE2IDUgMTcuNSA1aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxMnY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi44NSA3aDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMTdINXYtNWgxNHY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNDYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgN2gxMC4yOWwxLjA4IDMuMTFINS43N0w2Ljg1IDd6TTE5IDE3SDV2LTVoMTR2NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zUmFpbHdheUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQgMC04IC41LTggNHY5LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwdjFoMTJ2LTFsLTEuNS0xYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjZjMC0zLjUtMy41OC00LTgtNHptMCAyYzMuNzEgMCA1LjEzLjQ2IDUuNjcgMUg2LjQzYy42LS41MiAyLjA1LTEgNS41Ny0xem02IDExLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41aC05Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVWMTJoMTJ2My41em0wLTUuNUg2VjdoMTJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1JhaWx3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDFjLTQuNDIgMC04IC41LTggNHYxMC41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMC41di41aDEydi0uNUwxNi41IDE5YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjVjMC0zLjUtMy41OC00LTgtNHptMCAyYzYgMCA2IDEuMiA2IDJINmMwLS44IDAtMiA2LTJ6bTYgNHYzSDZWN2gxMnptLTEuNSAxMGgtOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjEyaDEydjMuNWMwIC44My0uNjcgMS41LTEuNSAxLjV6TTEyIDEyLjVjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1J1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNDkgNS40OGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bS0zLjYgMTMuOSAxLTQuNCAyLjEgMnY2aDJ2LTcuNWwtMi4xLTIgLjYtM2MxLjMgMS41IDMuMyAyLjUgNS41IDIuNXYtMmMtMS45IDAtMy41LTEtNC4zLTIuNGwtMS0xLjZjLS40LS42LTEtMS0xLjctMS0uMyAwLS41LjEtLjguMWwtNS4yIDIuMnY0LjdoMnYtMy40bDEuOC0uNy0xLjYgOC4xLTQuOS0xLS40IDIgNyAxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zU3Vid2F5RmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjB2MWgxMnYtMWwtMS41LTFjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00em0wIDJjMy43MSAwIDUuMTMuNDYgNS42NyAxSDYuNDNjLjYtLjUyIDIuMDUtMSA1LjU3LTF6TTYgN2g1djNINlY3em0xMiA4LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41aC05Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVWMTJoMTJ2My41em0wLTUuNWgtNVY3aDV2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zU3Vid2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMC41di41aDEydi0uNUwxNi41IDE5YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjZjMC0zLjUtMy41OC00LTgtNHptNS42NiAzSDYuNDNjLjYxLS41MiAyLjA2LTEgNS41Ny0xIDMuNzEgMCA1LjEyLjQ2IDUuNjYgMXpNMTEgN3YzSDZWN2g1em0yIDBoNXYzaC01Vjd6bTMuNSAxMGgtOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjEyaDEydjMuNWMwIC44My0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1RyYW5zaXRGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMHYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6bTAgMmMzLjcxIDAgNS4xMy40NiA1LjY3IDFINi40M2MuNi0uNTIgMi4wNS0xIDUuNTctMXpNNiA3aDV2M0g2Vjd6bTEyIDguNWMwIC44My0uNjcgMS41LTEuNSAxLjVoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjV6bTAtNS41aC01VjdoNXYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNUcmFuc2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMC41di41aDEydi0uNUwxNi41IDE5YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjZjMC0zLjUtMy41OC00LTgtNHptNS42NiAzSDYuNDNjLjYxLS41MiAyLjA2LTEgNS41Ny0xIDMuNzEgMCA1LjEyLjQ2IDUuNjYgMXpNMTEgN3YzSDZWN2g1em0yIDBoNXYzaC01Vjd6bTMuNSAxMGgtOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjEyaDEydjMuNWMwIC44My0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1dhbGsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNOS44IDguOSA3IDIzaDIuMWwxLjgtOCAyLjEgMnY2aDJ2LTcuNWwtMi4xLTIgLjYtM0MxNC44IDEyIDE2LjggMTMgMTkgMTN2LTJjLTEuOSAwLTMuNS0xLTQuMy0yLjRsLTEtMS42YTIuMTQ1IDIuMTQ1IDAgMCAwLTIuNjUtLjg0TDYgOC4zVjEzaDJWOS42bDEuOC0uN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuNDMgMTAuNTktOS4wMS05LjAxYy0uNzUtLjc1LTIuMDctLjc2LTIuODMgMGwtOSA5Yy0uNzguNzgtLjc4IDIuMDQgMCAyLjgybDkgOWMuMzkuMzkuOS41OCAxLjQxLjU4LjUxIDAgMS4wMi0uMTkgMS40MS0uNThsOC45OS04Ljk5Yy43OS0uNzYuOC0yLjAyLjAzLTIuODJ6bS0xMC40MiAxMC40LTktOSA5LTkgOSA5LTkgOXpNOCAxMXY0aDJ2LTNoNHYyLjVsMy41LTMuNUwxNCA3LjVWMTBIOWMtLjU1IDAtMSAuNDUtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJ5Q2xlYW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41NiAxMS4zNiAxMyA4LjQ0VjdjMC0uNTUtLjQ1LTEtMS0xcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMWgyYzAtMS44NC0xLjY2LTMuMy0zLjU2LTIuOTUtMS4xOC4yMi0yLjE1IDEuMTctMi4zOCAyLjM1LS4zIDEuNTYuNiAyLjk0IDEuOTQgMy40MnYuNjNsLTYuNTYgMi45MmMtLjg4LjM4LTEuNDQgMS4yNS0xLjQ0IDIuMnYuMDFDMyAxNC45MiA0LjA4IDE2IDUuNDIgMTZIN3Y2aDEwdi02aDEuNThjMS4zNCAwIDIuNDItMS4wOCAyLjQyLTIuNDJ2LS4wMWMwLS45NS0uNTYtMS44Mi0xLjQ0LTIuMjF6TTE1IDIwSDl2LTVoNnY1em0zLjU4LTZIMTd2LTFIN3YxSDUuNDJjLS40NiAwLS41OC0uNjUtLjE3LS44MWw2Ljc1LTMgNi43NSAzYy40Mi4xOS4yOC44MS0uMTcuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0QXR0cmlidXRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjMgN0g2LjM3QzMuOTYgNyAyIDkuMjQgMiAxMnMxLjk2IDUgNC4zNyA1aDExLjI2YzIuNDEgMCA0LjM3LTIuMjQgNC4zNy01cy0xLjk2LTUtNC4zNy01em0wIDhINi4zN0M1LjA5IDE1IDQgMTMuNjMgNCAxMnMxLjA5LTMgMi4zNy0zaDExLjI2QzE4LjkxIDkgMjAgMTAuMzcgMjAgMTJzLTEuMDkgMy0yLjM3IDN6TTcuMjQgMTMuMDZsLTEuODctMS44Ny0uNy43IDIuNTcgMi41NyA0LjIyLTQuMjItLjctLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0TG9jYXRpb25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMWgyLjEybDYuMTYtNi4xNi0yLjEyLTIuMTJMMTEgOC44OFYxMXptOS43MS05TDIwIDEuMjlhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0uNzIuNzIgMi4xMiAyLjEyLjcyLS43MmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6TTE3LjkgOS4wNWMuMDYuMzYuMS43NC4xIDEuMTUgMCAxLjcxLTEuMDggNC42NC02IDkuMTQtNC45Mi00LjQ5LTYtNy40My02LTkuMTRDNiA2LjE3IDkuMDkgNCAxMiA0Yy4zMiAwIC42NS4wMy45Ny4wOGwxLjY1LTEuNjVBOC41NiA4LjU2IDAgMCAwIDEyIDJjLTQuMiAwLTggMy4yMi04IDguMiAwIDMuMzIgMi42NyA3LjI1IDggMTEuOCA1LjMzLTQuNTUgOC04LjQ4IDgtMTEuOCAwLTEuMDEtLjE2LTEuOTQtLjQ1LTIuOEwxNy45IDkuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0TG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4xNyA0LjkxIDE3LjEgMy44NGwtNS41NSA1LjU1djEuMDhoMS4wOGw1LjU0LTUuNTZ6TTE2IDIuNzRsMS4yOS0xLjI5YTEuNDkgMS40OSAwIDAgMSAyLjEyIDBsMS4xNSAxLjE1Yy41OS41OS41OSAxLjU0IDAgMi4xMmwtLjY4LjY4LS4wMi4wMi0uNTguNTgtNiA2SDEwVjguNzRsNi02em0tMi4yOC0uNTUtLjU1LjU1LTEuMjcgMS4yN2MtMy4zLjA1LTUuOSAyLjYtNS45IDYuMiAwIDIuMzQgMS45NSA1LjQ0IDYgOS4xNCA0LjA1LTMuNyA2LTYuNzkgNi05LjE0di0uMWwxLjgtMS44Yy4xMy42LjIgMS4yNC4yIDEuOSAwIDMuMzItMi42NyA3LjI1LTggMTEuOC01LjMzLTQuNTUtOC04LjQ4LTgtMTEuOCAwLTQuOTggMy44LTguMiA4LTguMi41OCAwIDEuMTYuMDYgMS43Mi4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkaXRSb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNGgtMnY3LjlsMi0yek00IDRoMnYxNkg0ek0xMCA0aDJ2NGgtMnpNMTAgMTBoMnY0aC0yek0xMCAxNmgydjRoLTJ6TTIyLjU2IDEyLjU5bC0xLjE1LTEuMTVhMS40OSAxLjQ5IDAgMCAwLTIuMTIgMEwxNCAxNi43M1YyMGgzLjI3bDUuMjktNS4yOWMuNTktLjU5LjU5LTEuNTQgMC0yLjEyem0tNS45OCA1Ljg2aC0xLjAzdi0xLjAzTDE5IDEzLjk3IDIwLjAzIDE1bC0zLjQ1IDMuNDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZ2dBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5Yy0yLTItMy4wMS03LTkuMDMtN0M0Ljk1IDIgMS45NCA2IDIgMTEuNTIgMi4wNiAxNy4wNCA2Ljk2IDE5IDkuOTcgMTljMi4wMSAwIDIuMDEgMyA2LjAyIDNDMTkgMjIgMjIgMTkgMjIgMTUuMDIgMjIgMTIgMjEuMDEgMTEgMTkgOXptLTMuMDEgMTFjLTEuNDkgMC0xLjk2LS41LTIuNjgtMS4yNi0uNjUtLjY5LTEuNjUtMS43NC0zLjM0LTEuNzQtMS42NCAwLTUuOTItLjk5LTUuOTctNS41LS4wMy0yLjUxLjY4LTQuNjIgMS45OS01Ljk1QzcuMDEgNC41MiA4LjM1IDQgOS45NyA0YzMuMzQgMCA0LjUxIDEuODYgNS44NiA0LjAyLjU1Ljg4IDEuMDcgMS43MSAxLjc2IDIuMzkgMS45IDEuODkgMi40MSAyLjQgMi40MSA0LjYxIDAgMi44NS0yLjEyIDQuOTgtNC4wMSA0Ljk4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjMuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM0M4LjUgMyA1IDkuMzMgNSAxNGMwIDMuODcgMy4xMyA3IDcgN3M3LTMuMTMgNy03YzAtNC42Ny0zLjUtMTEtNy0xMXptMCAxNmMtMi43NiAwLTUtMi4yNC01LTUgMC00LjA5IDMuMDctOSA1LTlzNSA0LjkxIDUgOWMwIDIuNzYtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTZjLS41OCAwLTMtLjA4LTMtMyAwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMWMwIDMgMS45OSA1IDUgNSAuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZWN0cmljQmlrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdoLS44MmwtMS43LTQuNjhBMi4wMDggMi4wMDggMCAwIDAgMTQuNiAxSDEydjJoMi42bDEuNDYgNGgtNC44MWwtLjM2LTFIMTJWNEg3djJoMS43NWwxLjgyIDVIOS45Yy0uNDQtMi4yMy0yLjMxLTMuODgtNC42NS0zLjk5QzIuNDUgNi44NyAwIDkuMiAwIDEyYzAgMi44IDIuMiA1IDUgNSAyLjQ2IDAgNC40NS0xLjY5IDQuOS00aDQuMmMuNDQgMi4yMyAyLjMxIDMuODggNC42NSAzLjk5IDIuOC4xMyA1LjI1LTIuMTkgNS4yNS01QzI0IDkuMiAyMS44IDcgMTkgN3pNNy44MiAxM2MtLjQgMS4xNy0xLjQ5IDItMi44MiAyLTEuNjggMC0zLTEuMzItMy0zczEuMzItMyAzLTNjMS4zMyAwIDIuNDIuODMgMi44MiAySDV2MmgyLjgyem02LjI4LTJoLTEuNGwtLjczLTJIMTVjLS40NC41OC0uNzYgMS4yNS0uOSAyem00LjkgNGMtMS42OCAwLTMtMS4zMi0zLTMgMC0uOTMuNDEtMS43MyAxLjA1LTIuMjhsLjk2IDIuNjQgMS44OC0uNjgtLjk3LTIuNjdjLjAyIDAgLjA1LS4wMS4wOC0uMDEgMS42OCAwIDMgMS4zMiAzIDNzLTEuMzIgMy0zIDN6TTExIDIwSDdsNiAzdi0yaDRsLTYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZWN0cmljQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgMi4wMUMxOC43MiAxLjQyIDE4LjE2IDEgMTcuNSAxaC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyA4djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMVY4bC0yLjA4LTUuOTl6TTYuODUgM2gxMC4yOWwxLjA4IDMuMTFINS43N0w2Ljg1IDN6TTE5IDEzSDVWOGgxNHY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIxMC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMGg0di0ybDYgM2gtNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNNb3BlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVjMC0xLjEtLjktMi0yLTJoLTN2MmgzdjIuNjVMMTMuNTIgMTJIMTBWN0g2Yy0yLjIxIDAtNCAxLjc5LTQgNHYzaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g0LjQ4TDE5IDguMzVWNXpNNCAxMnYtMWMwLTEuMS45LTIgMi0yaDJ2M0g0em0zIDNjLS41NSAwLTEtLjQ1LTEtMWgyYzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0aDV2Mkg1ek0xOSAxMWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxek03IDIwaDR2LTJsNiAzaC00djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbGVjdHJpY1JpY2tzaGF3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTEuMThWOS43MmMwLS40Ny0uMTYtLjkyLS40Ni0xLjI4TDE2LjYgMy43MmMtLjM4LS40Ni0uOTQtLjcyLTEuNTQtLjcySDNjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmguMThDMy42IDE2LjE2IDQuNyAxNyA2IDE3czIuNC0uODQgMi44Mi0yaDguMzdhMi45OTYgMi45OTYgMCAwIDAgNS44Mi0xYy0uMDEtMS4zLS44NS0yLjQtMi4wMS0yLjgyek02IDE1Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTEtMy44M0EzLjAxNCAzLjAxNCAwIDAgMCAzLjE3IDEzSDN2LTNoNHYxLjE3ek03IDhIM1Y1aDR2M3ptNyA1SDl2LTNoM1Y4SDlWNWg1djh6bTItNi44OEwxOC40IDlIMTZWNi4xMnpNMTcuMTcgMTNIMTZ2LTJoM3YuMTdjLS44NS4zLTEuNTMuOTgtMS44MyAxLjgzek0yMCAxNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxek03IDIwaDR2LTJsNiAzaC00djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbGVjdHJpY1Njb290ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjgyIDE2SDE1di0xYzAtMi4yMSAxLjc5LTQgNC00aC43NGwtMS45LTguNDRBMi4wMDkgMi4wMDkgMCAwIDAgMTUuODkgMUgxMnYyaDMuODlsMS40IDYuMjVoLS4wMUE2LjAwOCA2LjAwOCAwIDAgMCAxMy4wOSAxNEg3LjgyYTIuOTk2IDIuOTk2IDAgMCAwLTMuNDItMS45NGMtMS4xOC4yMy0yLjEzIDEuMi0yLjM1IDIuMzhBMy4wMDIgMy4wMDIgMCAwIDAgNSAxOGMxLjMgMCAyLjQtLjg0IDIuODItMnpNNSAxNmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxek0xMSAyMEg3bDYgM3YtMmg0bC02LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbGVjdHJpY2FsU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNGMwLS41NS0uNDUtMS0xLTFoLTJ2MmgyYy41NSAwIDEtLjQ1IDEtMXpNMjAgMTdoLTJ2MmgyYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xek0xMiAxNGgtMnY0aDJjMCAxLjEuOSAyIDIgMmgzdi04aC0zYy0xLjEgMC0yIC45LTIgMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxM2MwLTEuMS45LTIgMi0yaDEuNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMC40MyA0IDguNSA0SDVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMy41Yy44MyAwIDEuNS42NyAxLjUgMS41UzkuMzMgOSA4LjUgOUg3Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0aDJ2LTJIN2MtMS4xIDAtMi0uOS0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbWVyZ2VuY3lSZWNvcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek0xNiAxOEg0VjZoMTJ2MTJ6bS00LTYgMyAxLjczLTEgMS43My0zLTEuNzNWMTdIOXYtMy4yN2wtMyAxLjczLTEtMS43M0w4IDEybC0zLTEuNzMgMS0xLjczIDMgMS43M1Y3aDJ2My4yN2wzLTEuNzMgMSAxLjczTDEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1lcmdlbmN5U2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzEuOTMgMCAzLjY4Ljc4IDQuOTUgMi4wNWwtMS40MSAxLjQxYTUuMDIyIDUuMDIyIDAgMCAwLTcuMDggMEw3LjA1IDYuMDVBNi45NzYgNi45NzYgMCAwIDEgMTIgNHptNy43OC0uNzctMS40MSAxLjQxQzE2Ljc0IDMuMDEgMTQuNDkgMiAxMi4wMSAyUzcuMjcgMy4wMSA1LjY0IDQuNjNMNC4yMiAzLjIyQzYuMjIgMS4yMyA4Ljk3IDAgMTIuMDEgMHM1Ljc4IDEuMjMgNy43NyAzLjIzek0xMiAxMWMxLjk0IDAgNCAxLjQ1IDQgNC4xNSAwIC45NC0uNTUgMi45My00IDYuMTctMy40NS0zLjI0LTQtNS4yMy00LTYuMTcgMC0yLjcgMi4wNi00LjE1IDQtNC4xNXptMC0yYy0zLjE1IDAtNiAyLjQxLTYgNi4xNSAwIDIuNDkgMiA1LjQ0IDYgOC44NSA0LTMuNDEgNi02LjM2IDYtOC44NUMxOCAxMS40MSAxNS4xNSA5IDEyIDl6bTEuNSA2YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1lcmdlbmN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMjkgMTMuOSAxOCAxMmwzLjI5LTEuOWMuNDgtLjI4LjY0LS44OS4zNy0xLjM3bC0yLTMuNDZhMS4wMSAxLjAxIDAgMCAwLTEuMzctLjM3TDE1IDYuOFYzYzAtLjU1LS40NS0xLTEtMWgtNGMtLjU1IDAtMSAuNDUtMSAxdjMuOEw1LjcxIDQuOWExLjAxIDEuMDEgMCAwIDAtMS4zNy4zN2wtMiAzLjQ2Yy0uMjguNDgtLjExIDEuMDkuMzcgMS4zN0w2IDEybC0zLjI5IDEuOWMtLjQ4LjI4LS42NC44OS0uMzcgMS4zN2wyIDMuNDZjLjI4LjQ4Ljg5LjY0IDEuMzcuMzdMOSAxNy4yVjIxYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zLjhsMy4yOSAxLjljLjQ4LjI4IDEuMDkuMTEgMS4zNy0uMzdsMi0zLjQ2Yy4yOC0uNDguMTEtMS4wOS0uMzctMS4zN3ptLTIuODYgMi45Ny00LjY4LTIuN2MtLjMzLS4yLS43NS4wNC0uNzUuNDNWMjBoLTJ2LTUuNGMwLS4zOC0uNDItLjYzLS43NS0uNDNsLTQuNjggMi43LTEtMS43MyA0LjY4LTIuN2MuMzMtLjE5LjMzLS42NyAwLS44N2wtNC42OC0yLjcgMS0xLjczIDQuNjggMi43Yy4zMy4xOS43NS0uMDUuNzUtLjQ0VjRoMnY1LjRjMCAuMzguNDIuNjMuNzUuNDNsNC42OC0yLjcgMSAxLjczLTQuNjggMi43Yy0uMzMuMTktLjMzLjY3IDAgLjg3bDQuNjggMi43LTEgMS43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV2U3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuNzcgNy4yMy4wMS0uMDEtMy43Mi0zLjcyTDE1IDQuNTZsMi4xMSAyLjExYy0uOTQuMzYtMS42MSAxLjI2LTEuNjEgMi4zM2EyLjUgMi41IDAgMCAwIDIuNSAyLjVjLjM2IDAgLjY5LS4wOCAxLS4yMXY3LjIxYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjE0YzAtMS4xLS45LTItMi0yaC0xVjVjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ2MTZoMTB2LTcuNWgxLjV2NWEyLjUgMi41IDAgMCAwIDUgMFY5YzAtLjY5LS4yOC0xLjMyLS43My0xLjc3ek0xMiAxMXY4SDZWNWg2djZ6bTYtMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tOC00LTQgNy41aDJWMThsNC03aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIySDJWMTBsNy0zdjJsNS0ydjNoM2wxLThoM2wxIDh2MTJ6TTEyIDkuOTVsLTUgMlYxMGwtMyAxLjMyVjIwaDE2di04aC04VjkuOTV6TTExIDE4aDJ2LTRoLTJ2NHptLTQgMGgydi00SDd2NHptMTAtNGgtMnY0aDJ2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYXN0Zm9vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyMS45OGMwIC41Ni40NSAxLjAxIDEuMDEgMS4wMUgxNWMuNTYgMCAxLjAxLS40NSAxLjAxLTEuMDFWMjFIMXYuOTh6TTguNSA4Ljk5QzQuNzUgOC45OSAxIDExIDEgMTVoMTVjMC00LTMuNzUtNi4wMS03LjUtNi4wMXpNMy42MiAxM2MxLjExLTEuNTUgMy40Ny0yLjAxIDQuODgtMi4wMXMzLjc3LjQ2IDQuODggMi4wMUgzLjYyek0xIDE3aDE1djJIMXpNMTggNVYxaC0ydjRoLTVsLjIzIDJoOS41NmwtMS40IDE0SDE4djJoMS43MmMuODQgMCAxLjUzLS42NSAxLjYzLTEuNDdMMjMgNWgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZlc3RpdmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTFWOWMtNi0yLTExLTctMTEtN1M3IDcgMSA5djJjMCAxLjQ5LjkzIDIuNzUgMi4yNCAzLjI2QzMuMiAxNi43NiAyLjkyIDE5LjY5IDIgMjJoMjBjLS45Mi0yLjMxLTEuMi01LjI0LTEuMjQtNy43NEEzLjQ5NiAzLjQ5NiAwIDAgMCAyMyAxMXpNMTIgNC43MWMxLjMzIDEuMTQgMy40OSAyLjg0IDYuMTEgNC4yOUg1Ljg5QzguNTEgNy41NSAxMC42NyA1Ljg1IDEyIDQuNzF6TTEzIDExaDNjMCAuODMtLjY3IDEuNS0xLjUgMS41UzEzIDExLjgzIDEzIDExem0tMy41IDEuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41aDNjMCAuODMtLjY3IDEuNS0xLjUgMS41ek02IDExYzAgLjgzLS42NyAxLjUtMS41IDEuNVMzIDExLjgzIDMgMTFoM3ptLTEuMzQgOWMuMzktMS44Ni41NC0zLjgyLjU3LTUuNTguNjgtLjE1IDEuMjktLjQ5IDEuNzYtLjk4LjI1LjI1LjU0LjQ1Ljg1LjYyLS4xIDEuODctLjI2IDQtLjUyIDUuOTNINC42NnptNC42OSAwYy4yNC0xLjgzLjM5LTMuNzguNDgtNS41My44NC0uMDggMS42MS0uNDUgMi4xNy0xLjAyLjU2LjU3IDEuMzIuOTQgMi4xNyAxLjAyLjEgMS43NS4yNCAzLjcuNDggNS41M2gtNS4zem03LjMyIDBjLS4yNy0xLjk0LS40My00LjA3LS41Mi01LjkzLjMxLS4xNy42MS0uMzcuODUtLjYyLjQ3LjQ4IDEuMDguODMgMS43Ni45OC4wMyAxLjc2LjE4IDMuNzIuNTcgNS41OGgtMi42NnptMi44My03LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpcmVIeWRyYW50QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTAuNWMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNSAzLjUtMS41NyAzLjUtMy41LTEuNTctMy41LTMuNS0zLjV6bTAgNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDExaC0xVjhoMlY2aC0yLjM1YTUuOTkgNS45OSAwIDAgMC0xMS4zIDBINHYyaDJ2M0g1Yy0xLjEgMC0yIC45LTIgMnYyYzAgMS4xLjkgMiAyIDJoMXYzSDR2MmgxNnYtMmgtMnYtM2gxYzEuMSAwIDItLjkgMi0ydi0yYzAtMS4xLS45LTItMi0yem0tNy03YzEuNDcgMCAyLjc1LjgxIDMuNDQgMkg4LjU2Yy42OS0xLjE5IDEuOTctMiAzLjQ0LTJ6bTcgMTFoLTN2NUg4di01SDV2LTJoM1Y4aDh2NWgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXJlVHJ1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMi45IDEwLjY5LTEuNDQtNC4zMkEyLjAxIDIuMDEgMCAwIDAgMTkuNTYgNUgxOVY0YzAtLjU1LS40NS0xLTEtMWgtMWMtLjU1IDAtMSAuNDUtMSAxdjFoLTJjLTEuMSAwLTIgLjktMiAydjRIMXY1YzAgMS4xLjkgMiAyIDJoMWMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDRjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2gzdi02LjY4YzAtLjIxLS4wMy0uNDItLjEtLjYzek0xNCA3aDUuNTZsMS4zMyA0SDE0Vjd6TTcgMTljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNS0zSDkuMjJjLS41NS0uNjEtMS4zMy0xLTIuMjItMXMtMS42Ny4zOS0yLjIyIDFIM3YtM2g5djN6bTUgM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yLjIyLTNjLS41NS0uNjEtMS4zNC0xLTIuMjItMXMtMS42Ny4zOS0yLjIyIDFIMTR2LTNoN3YzaC0xLjc4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA4LjVoLTF2LTJoMVY1SDF2MS41aDF2MkgxVjEwaDEwVjguNXptLTIuNSAwSDYuNzV2LTJIOC41djJ6bS01LTJoMS43NXYySDMuNXYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsaWdodENsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMmMtMS4xIDAtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDJjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA3aC0yVjZoMnY1em0tNi41IDVIMTh2Mkg5LjQ5Yy0uODggMC0xLjY2LS41OC0xLjkyLTEuNDNMNSA4VjRoMnY0bDIuNSA4ek04IDE5aDEwdjJIOHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTZ2LTJsLTgtNVYzLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41UzEwIDIuNjcgMTAgMy41VjlsLTggNXYybDgtMi41VjE5bC0yIDEuNVYyMmwzLjUtMSAzLjUgMXYtMS41TDEzIDE5di01LjVsOCAyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3Jlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yNCAxOC0zLjg2LTZIMjJMMTUgMmwtMyA0LjI5TDkgMiAyIDEyaDEuODZMMCAxOGg3djRoNHYtNGgydjRoNHYtNGg3ek0xNSA1LjQ5IDE4LjE2IDEwaC0xLjY4bDMuODYgNmgtMy42MmwtMi41Ny00SDE2bC0yLjc4LTMuOTdMMTUgNS40OXpNMy42NiAxNmwzLjg2LTZINS44NEw5IDUuNDkgMTIuMTYgMTBoLTEuNjhsMy44NiA2SDMuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JrTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNDEgMTUuNTkgOCAxN2wtNC00IDQtNCAxLjQxIDEuNDFMNy44MyAxMmMxLjUxLS4zMyAzLjczLjA4IDUuMTcgMS4zNlY2LjgzbC0xLjU5IDEuNTlMMTAgN2w0LTQgNCA0LTEuNDEgMS40MUwxNSA2LjgzVjIxaC0ydi00Yy0uNzMtMi41OC0zLjA3LTMuNDctNS4xNy0zbDEuNTggMS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcmtSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDE1LjU5IDE2IDE3bDQtNC00LTQtMS40MSAxLjQxTDE2LjE3IDEyYy0xLjUxLS4zMy0zLjczLjA4LTUuMTcgMS4zNlY2LjgzbDEuNTkgMS41OUwxNCA3bC00LTQtNCA0IDEuNDEgMS40MUw5IDYuODNWMjFoMnYtNGMuNzMtMi41OCAzLjA3LTMuNDcgNS4xNy0zbC0xLjU4IDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM3YyaC0yVjNoLTJ2MmgtMlYzaC0ydjRsMiAydjFIOVY5bDItMlYzSDl2Mkg3VjNINXYySDNWM0gxdjRsMiAydjZsLTIgMnY0aDl2LTNjMC0xLjEuOS0yIDItMnMyIC45IDIgMnYzaDl2LTRsLTItMlY5bDItMlYzaC0yem0wIDE2aC01di0xYzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0djFIM3YtMS4xN2wyLTJWOC4xN0wzLjgzIDdoNC4zNEw3IDguMTdWMTJoMTBWOC4xN0wxNS44MyA3aDQuMzRMMTkgOC4xN3Y3LjY2bDIgMlYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhhaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptNS00aDJjMCAyLjctLjkzIDQuNDEtMi4zIDUuNS0uNS40LTEuMS43LTEuNy45VjIyaC0ydi02aC0ydjZIOVYxMC4xYy0uMy4xLS41LjItLjYuMy0uNTMuNDEtMS40IDEuMDMtMS40IDMuNkg1YzAtMi4wNi4zNS0zLjc4IDIuMTEtNS4yOUM4LjIxIDcuODEgMTAgNyAxMiA3czIuNjgtLjQ2IDMuNDgtMS4wNkMxNS45NiA1LjU1IDE3IDQuNzYgMTcgMnpNNCAxNmgzdjZINHYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhhbmR5bWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNjcgMTguMTctNS4zLTUuM2gtLjk5bC0yLjU0IDIuNTR2Ljk5bDUuMyA1LjNjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDIuMTItMi4xMmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6bS0yLjgzIDEuNDItNC4yNC00LjI0LjcxLS43MSA0LjI0IDQuMjQtLjcxLjcxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4zNCAxMC4xOSAxLjQxLTEuNDEgMi4xMiAyLjEyYTMgMyAwIDAgMCAwLTQuMjRsLTMuNTQtMy41NC0xLjQxIDEuNDFWMS43MWwtLjctLjcxLTMuNTQgMy41NC43MS43MWgyLjgzbC0xLjQxIDEuNDEgMS4wNiAxLjA2LTIuODkgMi44OS00LjEzLTQuMTNWNS4wNkw0LjgzIDIuMDQgMiA0Ljg3IDUuMDMgNy45aDEuNDFsNC4xMyA0LjEzLS44NS44NUg3LjZsLTUuMyA1LjNhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDIuMTIgMi4xMmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNS4zLTUuM3YtMi4xMmw1LjE1LTUuMTUgMS4wNiAxLjA1em0tNy45OCA1LjE1LTQuMjQgNC4yNC0uNzEtLjcxIDQuMjQtNC4yNC43MS43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhhcmR3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMy0zIDNWM0g5QzYuMjQgMyA0IDUuMjQgNCA4aDV2MTJjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTFWOGwzIDNoMlYzaC0yem0tNSAxNmgtMnYtNmgydjZ6bS0yLThWNkg2Ljc3QzcuMzIgNS4zOSA4LjExIDUgOSA1aDR2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvbWVSZXBhaXJTZXJ2aWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOGgtM1Y2YzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAydjJINGMtMS4xIDAtMiAuOS0yIDJ2MTBoMjBWMTBjMC0xLjEtLjktMi0yLTJ6TTkgNmg2djJIOVY2em0xMSAxMkg0di0zaDJ2MWgydi0xaDh2MWgydi0xaDJ2M3ptLTItNXYtMWgtMnYxSDh2LTFINnYxSDR2LTNoMTZ2M2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdGVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE0YzEuNjYgMCAzLTEuMzQgMy0zUzguNjYgOCA3IDhzLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTEyLTNoLTh2OEgzVjVIMXYxNWgydi0zaDE4djNoMnYtOWMwLTIuMjEtMS43OS00LTQtNHptMiA4aC04VjloNmMxLjEgMCAyIC45IDIgMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSHZhYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMThjMy4zMSAwIDYtMi42OSA2LTZzLTIuNjktNi02LTYtNiAyLjY5LTYgNiAyLjY5IDYgNiA2em0zLjQ0LThjLjI2LjQ1LjQ0Ljk2LjUxIDEuNWgtNy45Yy4wNy0uNTQuMjQtMS4wNS41MS0xLjVoNi44OHptLjUxIDIuNWMtLjA3LjU0LS4yNCAxLjA1LS41MSAxLjVIOC41NmMtLjI2LS40NS0uNDQtLjk2LS41MS0xLjVoNy45ek05LjM4IDE1aDUuMjRjLS43LjYxLTEuNjEgMS0yLjYyIDFzLTEuOTEtLjM5LTIuNjItMXptNS4yNC02SDkuMzhjLjctLjYxIDEuNjEtMSAyLjYyLTFzMS45MS4zOSAyLjYyIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJY2VjcmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM4IDYuMjRDMTcuNzkgMy4yNCAxNS4xNCAxIDEyIDFTNi4yMSAzLjI0IDUuNjIgNi4yNEE0LjAxNCA0LjAxNCAwIDAgMCAzIDEwYzAgMi4yMSAxLjc5IDQgNCA0IC4xMiAwIC4yMy0uMDIuMzQtLjAyTDEyLjA3IDIzbDQuNjEtOS4wM2MuMTEuMDEuMjEuMDMuMzIuMDMgMi4yMSAwIDQtMS43OSA0LTQgMC0xLjcxLTEuMDgtMy4xOS0yLjYyLTMuNzZ6bS02LjMzIDEyLjM5LTIuNzMtNS4yMWE2LjQ2OCA2LjQ2OCAwIDAgMCA1LjQtLjAybC0yLjY3IDUuMjN6TTE3IDEyYy0uNTIgMC0xLjAxLS4yLTEuMzktLjU2bC0uNTYtLjU0LS42Ni40MmE0LjUyIDQuNTIgMCAwIDEtNC43OC0uMDFsLS42Ni0uNDEtLjU2LjU0Yy0uMzguMzUtLjg3LjU2LTEuMzkuNTZhMS45OTkgMS45OTkgMCAwIDEtLjMyLTMuOTdsLjc3LS4xMy4wNi0uNzhDNy43MSA0LjggOS42NiAzIDEyIDNzNC4yOSAxLjggNC40OCA0LjEybC4wNi43OC43Ny4xMmMuOTcuMTYgMS42OS45OSAxLjY5IDEuOTggMCAxLjEtLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZWJhYkRpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljc1IDdoLjc1YTIuNSAyLjUgMCAwIDAgMC01aC0uNzVWMWgtMS41djFoLS43NWEyLjUgMi41IDAgMCAwIDAgNWguNzV2MUgxM3Y1aDMuMjV2MWgtLjc1YTIuNSAyLjUgMCAwIDAgMCA1aC43NXY0aDEuNXYtNGguNzVhMi41IDIuNSAwIDAgMCAwLTVoLS43NXYtMUgyMVY4aC0zLjI1Vjd6TTE1LjUgNWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDNjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41aC0zem0zIDExYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNWgtM2MtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDN6bS41LTZ2MWgtNHYtMWg0ek03Ljc1IDdoLjc1YTIuNSAyLjUgMCAwIDAgMC01aC0uNzVWMWgtMS41djFINS41YTIuNSAyLjUgMCAwIDAgMCA1aC43NXYxSDN2NWgzLjI1djFINS41YTIuNSAyLjUgMCAwIDAgMCA1aC43NXY0aDEuNXYtNGguNzVhMi41IDIuNSAwIDAgMCAwLTVoLS43NXYtMUgxMVY4SDcuNzVWN3pNNS41IDVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgzYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNWgtM3ptMyAxMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTNjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgzem0uNS02djFINXYtMWg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGF5ZXJzQ2xlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDQuNTMgMTcuNzQgOWwtMS44OSAxLjQ3IDEuNDMgMS40MkwyMSA5bC05LTctMi41OSAyLjAyIDEuNDIgMS40MnptOSA5LjU0LTEuNjMtMS4yNy0uNjcuNTIgMS40MyAxLjQzek0zLjQxLjg2IDIgMi4yN2w0LjIyIDQuMjJMMyA5bDkgNyAyLjEtMS42MyAxLjQyIDEuNDItMy41MyAyLjc1LTcuMzctNS43M0wzIDE0LjA3bDkgNyA0Ljk1LTMuODVMMjAuNzMgMjFsMS40MS0xLjQxTDMuNDEuODZ6TTEyIDEzLjQ3IDYuMjYgOWwxLjM5LTEuMDggNS4wMiA1LjAyLS42Ny41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxheWVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuOTkgMTguNTQtNy4zNy01LjczTDMgMTQuMDdsOSA3IDktNy0xLjYzLTEuMjd6TTEyIDE2bDcuMzYtNS43M0wyMSA5bC05LTctOSA3IDEuNjMgMS4yN0wxMiAxNnptMC0xMS40N0wxNy43NCA5IDEyIDEzLjQ3IDYuMjYgOSAxMiA0LjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlxdW9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIwSDN2Mmg2di0ySDd2LTMuMThDOC4xNiAxNi40IDkgMTUuMyA5IDE0VjZIM3Y4em0yLTZoMnYzSDVWOHptMCA1aDJ2MWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXYtMXpNMjAuNjQgOC41NGwtLjk2LS4zMmExIDEgMCAwIDEtLjY4LS45NVYzYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdjQuMjhhMSAxIDAgMCAxLS42OC45NWwtLjk2LjMyYy0uODEuMjgtMS4zNiAxLjA0LTEuMzYgMS45VjIwYzAgMS4xLjkgMiAyIDJoN2MxLjEgMCAyLS45IDItMnYtOS41NmMwLS44Ni0uNTUtMS42Mi0xLjM2LTEuOXpNMTYgNGgxdjFoLTFWNHptNCAxNmgtN3YtMmg3djJ6bTAtNGgtN3YtMmg3djJ6bTAtNGgtN3YtMS41NmwuOTUtLjMyQzE1LjE4IDkuNzIgMTYgOC41NyAxNiA3LjI4VjdoMXYuMjhhMyAzIDAgMCAwIDIuMDUgMi44NWwuOTUuMzFWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEFjdGl2aXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2NGMxLjEgMCAxLjk5LjkgMS45OSAycy0uODkgMi0yIDJ2NGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi00Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMnptLTItMS40NmMtMS4xOS42OS0yIDEuOTktMiAzLjQ2cy44MSAyLjc3IDIgMy40NlYxOEg0di0yLjU0YzEuMTktLjY5IDItMS45OSAyLTMuNDYgMC0xLjQ4LS44LTIuNzctMS45OS0zLjQ2TDQgNmgxNnYyLjU0ek05LjA3IDE2IDEyIDE0LjEyIDE0LjkzIDE2bC0uODktMy4zNiAyLjY5LTIuMi0zLjQ3LS4yMUwxMiA3bC0xLjI3IDMuMjItMy40Ny4yMSAyLjY5IDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsQWlycG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTZ2LTJsLTguNS01VjMuNWMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41VjlMMiAxNHYybDguNS0yLjVWMTlMOCAyMC41VjIybDQtMSA0IDF2LTEuNUwxMy41IDE5di01LjVMMjIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEF0bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTdoMnYtMWgxYy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTFoLTN2LTFoNFY4aC0yVjdoLTJ2MWgtMWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoM3YxSDl2MmgydjF6bTktMTNINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC43NyA5IDEyIDEyLjExIDkuMjMgOWg1LjU0TTIxIDNIM3YybDggOXY1SDZ2MmgxMnYtMmgtNXYtNWw4LTlWM3pNNy40MyA3IDUuNjYgNWgxMi42OWwtMS43OCAySDcuNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbENhZmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDV2OGMwIDEuMS0uOSAyLTIgMkg4Yy0xLjEgMC0yLS45LTItMlY1aDEwbTQtMkg0djEwYzAgMi4yMSAxLjc5IDQgNCA0aDZjMi4yMSAwIDQtMS43OSA0LTR2LTNoMmMxLjExIDAgMi0uODkgMi0yVjVjMC0xLjExLS44OS0yLTItMnptLTIgNVY1aDJ2M2gtMnptMiAxMUgydjJoMTh2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbENhcldhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtMS0xLjUtMi43LTEuNS0yLjdzLTEuNSAxLjctMS41IDIuN2MwIC44My42NyAxLjUgMS41IDEuNXptLTUgMGMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0xLTEuNS0yLjctMS41LTIuN3MtMS41IDEuNy0xLjUgMi43YzAgLjgzLjY3IDEuNSAxLjUgMS41ek03IDVjLjgzIDAgMS41LS42NyAxLjUtMS41QzguNSAyLjUgNyAuOCA3IC44UzUuNSAyLjUgNS41IDMuNUM1LjUgNC4zMyA2LjE3IDUgNyA1em0xMS45MiAzLjAxQzE4LjcyIDcuNDIgMTguMTYgNyAxNy41IDdoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDE0djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDloMTAuMjlsMS4wNCAzSDUuODFsMS4wNC0zek0xOSAxOUg1di00LjY2bC4xMi0uMzRoMTMuNzdsLjExLjM0VjE5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuNVwiLFwiY3lcIjpcIjE2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIxNi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsQ29udmVuaWVuY2VTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN1Y0SDV2M0gydjEzaDh2LTRoNHY0aDhWN2gtM3ptMSAxMWgtNHYtNEg4djRINFY5aDNWNmgxMHYzaDN2OXpNOCA4aDJ2MUg4djNoM3YtMUg5di0xaDJWN0g4em03IDFoLTFWN2gtMXYzaDJ2MmgxVjdoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbERpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC4xIDEzLjM0IDIuODMtMi44M0wzLjkxIDMuNWE0LjAwOCA0LjAwOCAwIDAgMCAwIDUuNjZsNC4xOSA0LjE4em02Ljc4LTEuODFjMS41My43MSAzLjY4LjIxIDUuMjctMS4zOCAxLjkxLTEuOTEgMi4yOC00LjY1LjgxLTYuMTItMS40Ni0xLjQ2LTQuMi0xLjEtNi4xMi44MS0xLjU5IDEuNTktMi4wOSAzLjc0LTEuMzggNS4yN0wzLjcgMTkuODdsMS40MSAxLjQxTDEyIDE0LjQxbDYuODggNi44OCAxLjQxLTEuNDFMMTMuNDEgMTNsMS40Ny0xLjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxEcmluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMyAyIDIuMDEgMTguMjNDNS4xMyAyMS4yMyA1Ljk3IDIyIDcgMjJoMTBjMS4wMyAwIDEuODctLjc3IDEuOTktMS43N0wyMSAySDN6bTE0IDE4LTEwIC4wMUw1Ljg5IDEwSDE4LjFMMTcgMjB6bTEuMzMtMTJINS42N2wtLjQ0LTRoMTMuNTNsLS40MyA0ek0xMiAxOWMxLjY2IDAgMy0xLjM0IDMtMyAwLTItMy01LjQtMy01LjRTOSAxNCA5IDE2YzAgMS42NiAxLjM0IDMgMyAzem0wLTUuMDljLjU5LjkxIDEgMS43MyAxIDIuMDkgMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTFjMC0uMzcuNDEtMS4xOSAxLTIuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEZpcmVEZXBhcnRtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgNi0uNDQuNTVjLS40Mi41Mi0uOTguNzUtMS41NC43NUMxMyA3LjMgMTIgNi41MiAxMiA1LjNWMlM0IDYgNCAxM2MwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi45Ni0xLjYxLTUuNjItNC03em0tNCAxM2MtMS4xIDAtMi0uODctMi0xLjk0IDAtLjUxLjItLjk5LjU4LTEuMzZMMTIgMTQuM2wxLjQzIDEuNGMuMzcuMzcuNTcuODUuNTcgMS4zNiAwIDEuMDctLjkgMS45NC0yIDEuOTR6bTMuOTYtMS41Yy4wNC0uMzYuMjItMS44OS0xLjEzLTMuMjJMMTIgMTEuNWwtMi44MyAyLjc4QzcuODEgMTUuNjIgOCAxNy4xNiA4LjA0IDE3LjVBNS45ODIgNS45ODIgMCAwIDEgNiAxM2MwLTMuMTYgMi4xMy01LjY1IDQuMDMtNy4yNWE0LjAyNCA0LjAyNCAwIDAgMCAzLjk5IDMuNTVjLjc4IDAgMS41NC0uMjMgMi4xOC0uNjZBNi4xNzUgNi4xNzUgMCAwIDEgMTggMTNjMCAxLjc5LS43OSAzLjQtMi4wNCA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEZsb3Jpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNjYgMTMuMDdjLjE1IDAgLjI5LS4wMS40My0uMDNDOS41NiAxNC4xOSAxMC42OSAxNSAxMiAxNXMyLjQ0LS44MSAyLjkxLTEuOTZhMy4xNDUgMy4xNDUgMCAwIDAgMy41Ny0zLjExYzAtLjcxLS4yNS0xLjM5LS42Ny0xLjkzLjQzLS41NC42Ny0xLjIyLjY3LTEuOTNhMy4xNDUgMy4xNDUgMCAwIDAtMy41Ny0zLjExQzE0LjQ0IDEuODEgMTMuMzEgMSAxMiAxcy0yLjQ0LjgxLTIuOTEgMS45NmEzLjE0NSAzLjE0NSAwIDAgMC0zLjU3IDMuMTFjMCAuNzEuMjUgMS4zOS42NyAxLjkzLS40My41NC0uNjggMS4yMi0uNjggMS45MyAwIDEuNzMgMS40MSAzLjE0IDMuMTUgMy4xNHpNMTIgMTNjLS42MiAwLTEuMTItLjQ5LTEuMTQtMS4xbC4xMi0xLjA5Yy4zMi4xMi42Ni4xOSAxLjAyLjE5cy43MS0uMDcgMS4wMy0uMTlsLjExIDEuMDljLS4wMi42MS0uNTIgMS4xLTEuMTQgMS4xem0zLjM0LTEuOTNjLS4yNCAwLS40Ni0uMDctLjY0LS4ybC0uODEtLjU3Yy41NS0uNDUuOTQtMS4wOSAxLjA2LTEuODNsLjg4LjQyYy40LjE5LjY2LjU5LjY2IDEuMDMgMCAuNjQtLjUyIDEuMTUtMS4xNSAxLjE1em0tLjY1LTUuOTRjLjItLjEzLjQyLS4yLjY1LS4yLjYzIDAgMS4xNC41MSAxLjE0IDEuMTQgMCAuNDQtLjI1LjgzLS42NiAxLjAzbC0uODguNDJjLS4xMi0uNzQtLjUxLTEuMzgtMS4wNy0xLjgzbC44Mi0uNTZ6TTEyIDNjLjYyIDAgMS4xMi40OSAxLjE0IDEuMWwtLjExIDEuMDlDMTIuNzEgNS4wNyAxMi4zNiA1IDEyIDVzLS43LjA3LTEuMDIuMTlsLS4xMi0xLjA5Yy4wMi0uNjEuNTItMS4xIDEuMTQtMS4xek04LjY2IDQuOTNjLjI0IDAgLjQ2LjA3LjY0LjJsLjgxLjU2Yy0uNTUuNDUtLjk0IDEuMDktMS4wNiAxLjgzbC0uODgtLjQyYy0uNC0uMi0uNjYtLjU5LS42Ni0xLjAzIDAtLjYzLjUyLTEuMTQgMS4xNS0xLjE0ek04LjE3IDguOWwuODgtLjQyYy4xMi43NC41MSAxLjM4IDEuMDcgMS44M2wtLjgxLjU1Yy0uMi4xMy0uNDIuMi0uNjUuMi0uNjMgMC0xLjE0LS41MS0xLjE0LTEuMTQtLjAxLS40My4yNS0uODIuNjUtMS4wMnpNMTIgMjJhOSA5IDAgMCAwIDktOSA5IDkgMCAwIDAtOSA5em0yLjQ0LTIuNDRjLjcxLTEuOSAyLjIyLTMuNDIgNC4xMi00LjEyYTcuMDQgNy4wNCAwIDAgMS00LjEyIDQuMTJ6TTMgMTNhOSA5IDAgMCAwIDkgOSA5IDkgMCAwIDAtOS05em0yLjQ0IDIuNDRjMS45LjcxIDMuNDIgMi4yMiA0LjEyIDQuMTJhNy4wNCA3LjA0IDAgMCAxLTQuMTItNC4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsR2FzU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuNzcgNy4yMy4wMS0uMDEtMy43Mi0zLjcyTDE1IDQuNTZsMi4xMSAyLjExYy0uOTQuMzYtMS42MSAxLjI2LTEuNjEgMi4zM2EyLjUgMi41IDAgMCAwIDIuNSAyLjVjLjM2IDAgLjY5LS4wOCAxLS4yMXY3LjIxYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjE0YzAtMS4xLS45LTItMi0yaC0xVjVjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ2MTZoMTB2LTcuNWgxLjV2NWEyLjUgMi41IDAgMCAwIDUgMFY5YzAtLjY5LS4yOC0xLjMyLS43My0xLjc3ek0xMiAxMy41VjE5SDZ2LTdoNnYxLjV6bTAtMy41SDZWNWg2djV6bTYgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxHcm9jZXJ5U3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tMS40NS01Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjU4LTYuNDlBLjk5Ni45OTYgMCAwIDAgMjAuMDEgNEg1LjIxbC0uOTQtMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMmg3LjQ1ek02LjE2IDZoMTIuMTVsLTIuNzYgNUg4LjUzTDYuMTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS04LjUtMmgzdi0zLjVIMTd2LTNoLTMuNVY3aC0zdjMuNUg3djNoMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNGMxLjY2IDAgMy0xLjM0IDMtM1M4LjY2IDggNyA4cy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMi0zaC04djhIM1Y1SDF2MTVoMnYtM2gxOHYzaDJ2LTljMC0yLjIxLTEuNzktNC00LTR6bTIgOGgtOFY5aDZjMS4xIDAgMiAuOSAyIDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsTGF1bmRyeVNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDIuMDEgNiAyYy0xLjExIDAtMiAuODktMiAydjE2YzAgMS4xMS44OSAyIDIgMmgxMmMxLjExIDAgMi0uODkgMi0yVjRjMC0xLjExLS44OS0xLjk5LTItMS45OXpNMTggMjBINkw1Ljk5IDRIMTh2MTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOFwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMVwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTljMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTUtNSAyLjI0LTUgNSAyLjI0IDUgNSA1em0yLjM2LTcuMzZjMS4zIDEuMyAxLjMgMy40MiAwIDQuNzItMS4zIDEuMy0zLjQyIDEuMy00LjcyIDBsNC43Mi00LjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxMaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA5YzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptMCA4LjU1QzkuNjQgOS4zNSA2LjQ4IDggMyA4djExYzMuNDggMCA2LjY0IDEuMzUgOSAzLjU1IDIuMzYtMi4xOSA1LjUyLTMuNTUgOS0zLjU1VjhjLTMuNDggMC02LjY0IDEuMzUtOSAzLjU1em03IDUuNThjLTIuNTMuMzQtNC45MyAxLjMtNyAyLjgyYTE1LjIgMTUuMiAwIDAgMC03LTIuODN2LTYuOTVjMi4xLjM4IDQuMDUgMS4zNSA1LjY0IDIuODNMMTIgMTQuMjhsMS4zNi0xLjI3QTExLjE4IDExLjE4IDAgMCAxIDE5IDEwLjE4djYuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbE1hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZoLTJjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNkg1Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS03LTNjMS42NiAwIDMgMS4zNCAzIDNIOWMwLTEuNjYgMS4zNC0zIDMtM3ptNyAxN0g1VjhoMTR2MTJ6bS03LThjLTEuNjYgMC0zLTEuMzQtMy0zSDdjMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNWgtMmMwIDEuNjYtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsTW92aWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA1djE0aC00VjVoNG02LTJoLTJ2MmgtMlYzSDh2Mkg2VjNINHYxOGgydi0yaDJ2Mmg4di0yaDJ2MmgyVjN6bS00IDZWN2gydjJoLTJ6TTYgOVY3aDJ2Mkg2em0xMCA0di0yaDJ2MmgtMnpNNiAxM3YtMmgydjJINnptMTAgNHYtMmgydjJoLTJ6TTYgMTd2LTJoMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbE9mZmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS40MSAxMS41OC05LTlDMTIuMDUgMi4yMiAxMS41NSAyIDExIDJINGMtMS4xIDAtMiAuOS0yIDJ2N2MwIC41NS4yMiAxLjA1LjU5IDEuNDJsOSA5Yy4zNi4zNi44Ni41OCAxLjQxLjU4czEuMDUtLjIyIDEuNDEtLjU5bDctN2MuMzctLjM2LjU5LS44Ni41OS0xLjQxcy0uMjMtMS4wNi0uNTktMS40MnpNMTMgMjAuMDEgNCAxMVY0aDd2LS4wMWw5IDktNyA3LjAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFBhcmtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNINnYxOGg0di02aDNjMy4zMSAwIDYtMi42OSA2LTZzLTIuNjktNi02LTZ6bS4yIDhIMTBWN2gzLjJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxQaGFybWFjeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWgtMi42NGwxLjE0LTMuMTRMMTcuMTUgMWwtMS40NiA0SDN2MmwyIDYtMiA2djJoMTh2LTJsLTItNiAyLTZWNXptLTMuOSA4LjYzTDE4Ljg5IDE5SDUuMTFsMS43OS01LjM3LjIxLS42My0uMjEtLjYzTDUuMTEgN2gxMy43OGwtMS43OSA1LjM3LS4yMS42My4yMS42M3pNMTMgOWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41NCA1Yy4wNi44OS4yMSAxLjc2LjQ1IDIuNTlsLTEuMiAxLjJjLS40MS0xLjItLjY3LTIuNDctLjc2LTMuNzloMS41MW05Ljg2IDEyLjAyYy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjQ5Yy0xLjMyLS4wOS0yLjU5LS4zNS0zLjgtLjc1bDEuMi0xLjE5TTcuNSAzSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNDljMC0uNTUtLjQ1LTEtMS0xLTEuMjQgMC0yLjQ1LS4yLTMuNTctLjU3YS44NC44NCAwIDAgMC0uMzEtLjA1Yy0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMTQ5IDE1LjE0OSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMmMuMjgtLjI4LjM2LS42Ny4yNS0xLjAyQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUGl6emEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC40MyAyIDUuMjMgMy41NCAzLjAxIDZMMTIgMjJsOC45OS0xNkMxOC43OCAzLjU1IDE1LjU3IDIgMTIgMnptMCAxNS45Mkw1LjUxIDYuMzZDNy4zMiA0Ljg1IDkuNjIgNCAxMiA0czQuNjguODUgNi40OSAyLjM2TDEyIDE3Ljkyek05IDUuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVTOC4xNyA4LjUgOSA4LjVzMS41LS42NyAxLjUtMS41UzkuODIgNS41IDkgNS41em0xLjUgNy41YzAgLjgzLjY3IDEuNSAxLjUgMS41LjgyIDAgMS41LS42NyAxLjUtMS41cy0uNjgtMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEwVjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMnY0YzEuMSAwIDEuOTkuOSAxLjk5IDJzLS44OSAyLTIgMnY0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTRjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yem0tMi0xLjQ2Yy0xLjE5LjY5LTIgMS45OS0yIDMuNDZzLjgxIDIuNzcgMiAzLjQ2VjE4SDR2LTIuNTRjMS4xOS0uNjkgMi0xLjk5IDItMy40NiAwLTEuNDgtLjgtMi43Ny0xLjk5LTMuNDZMNCA2aDE2djIuNTR6TTkuMDcgMTYgMTIgMTQuMTIgMTQuOTMgMTZsLS44OS0zLjM2IDIuNjktMi4yLTMuNDctLjIxTDEyIDdsLTEuMjcgMy4yMi0zLjQ3LjIxIDIuNjkgMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxQb2xpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC41IDEyLjU5LjkgMy44OC0zLjQtMi4wNS0zLjQgMi4wNS45LTMuODctMy0yLjU5IDMuOTYtLjM0TDEyIDYuMDJsMS41NCAzLjY0IDMuOTYuMzQtMyAyLjU5ek0xMiAzLjE5bDcgMy4xMVYxMWMwIDQuNTItMi45OCA4LjY5LTcgOS45My00LjAyLTEuMjQtNy01LjQxLTctOS45M1Y2LjNsNy0zLjExTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxQb3N0T2ZmaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNnptLTIgMC04IDUtOC01aDE2em0wIDEySDRWOGw4IDUgOC01djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxQcmludHNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDhoLTFWM0g2djVINWMtMS42NiAwLTMgMS4zNC0zIDN2Nmg0djRoMTJ2LTRoNHYtNmMwLTEuNjYtMS4zNC0zLTMtM3pNOCA1aDh2M0g4VjV6bTggMTRIOHYtNGg4djR6bTItNHYtMkg2djJINHYtNGMwLS41NS40NS0xIDEtMWgxNGMuNTUgMCAxIC40NSAxIDF2NGgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjExLjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsU2VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC0zLjE3TDE1IDJIOUw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmg0LjA1bC41OS0uNjVMOS44OCA0aDQuMjRsMS4yNCAxLjM1LjU5LjY1SDIwdjEyek0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMCA4LjJjLTEuNzcgMC0zLjItMS40My0zLjItMy4yIDAtMS43NyAxLjQzLTMuMiAzLjItMy4yczMuMiAxLjQzIDMuMiAzLjJjMCAxLjc3LTEuNDMgMy4yLTMuMiAzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFNoaXBwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4aC0zVjRIM2MtMS4xIDAtMiAuOS0yIDJ2MTFoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDZjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2gydi01bC0zLTR6bS0uNSAxLjUgMS45NiAyLjVIMTdWOS41aDIuNXpNNiAxOGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yLjIyLTNjLS41NS0uNjEtMS4zMy0xLTIuMjItMXMtMS42Ny4zOS0yLjIyIDFIM1Y2aDEydjlIOC4yMnpNMTggMThjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsVGF4aSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgNi4wMUMxOC43MiA1LjQyIDE4LjE2IDUgMTcuNSA1SDE1VjNIOXYySDYuNWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxMnY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi44NSA3aDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMTdINXYtNC42NmwuMTItLjM0aDEzLjc3bC4xMS4zNFYxN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMdW5jaERpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTljMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtM0gydjN6bTItMWgxNnYxSDR2LTF6TTE4LjY2IDExLjVjLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxdjJjMS45IDAgMi4xNy0xIDMuMzUtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzIgMWwtLjAxLTEuOThjLTEuNjEtLjMzLTEuNjItMS4wMi0zLjMzLTEuMDJ6TTIyIDljLjAyLTQtNC4yOC02LTEwLTZDNi4yOSAzIDIgNSAyIDl2MWgyMFY5ek00LjE4IDhDNS4wMSA1LjgxIDguNjEgNSAxMiA1YzMuMzEgMCA1LjkzLjczIDcuMTkgMS45OS4zLjMxLjUyLjY0LjY1IDEuMDFINC4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNSAzLS4xNi4wM0wxNSA1LjEgOSAzIDMuMzYgNC45Yy0uMjEuMDctLjM2LjI1LS4zNi40OFYyMC41YzAgLjI4LjIyLjUuNS41bC4xNi0uMDNMOSAxOC45bDYgMi4xIDUuNjQtMS45Yy4yMS0uMDcuMzYtLjI1LjM2LS40OFYzLjVjMC0uMjgtLjIyLS41LS41LS41ek0xMCA1LjQ3bDQgMS40djExLjY2bC00LTEuNFY1LjQ3em0tNSAuOTkgMy0xLjAxdjExLjdsLTMgMS4xNlY2LjQ2em0xNCAxMS4wOC0zIDEuMDFWNi44NmwzLTEuMTZ2MTEuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXBzVWdjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOGMtMS4xOCAwLTIuMzQtLjI2LTMuNDMtLjc4LS4yNy0uMTMtLjU2LS4xOS0uODYtLjE5LS4xOSAwLS4zOC4wMy0uNTYuMDhsLTMuMi45NC45NC0zLjJjLjE0LS40Ny4xLS45OC0uMTEtMS40MkE3LjkyNSA3LjkyNSAwIDAgMSA0IDEyYzAtNC40MSAzLjU5LTggOC04bTAtMkM2LjQ4IDIgMiA2LjQ4IDIgMTJjMCAxLjU0LjM2IDIuOTguOTcgNC4yOUwxIDIzbDYuNzEtMS45N2MxLjMxLjYxIDIuNzUuOTcgNC4yOS45NyA1LjUyIDAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMyA4aC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZWRpY2FsSW5mb3JtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aC01VjRjMC0xLjEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjktMiAydjNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0tOS0zaDJ2NWgtMlY0em05IDE2SDRWOWg1YzAgMS4xLjkgMiAyIDJoMmMxLjEgMCAyLS45IDItMmg1djExem0tOS00SDl2Mkg3di0ySDV2LTJoMnYtMmgydjJoMnYyem0yLTEuNVYxM2g2djEuNWgtNnptMCAzVjE2aDR2MS41aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWNhbFNlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtNFY0YzAtMS4xLS45LTItMi0yaC00Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpNMTAgNGg0djJoLTRWNHptMTAgMTZINFY4aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMGgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVudUJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1Yy0xLjExLS4zNS0yLjMzLS41LTMuNS0uNS0xLjk1IDAtNC4wNS40LTUuNSAxLjUtMS40NS0xLjEtMy41NS0xLjUtNS41LTEuNVMyLjQ1IDQuOSAxIDZ2MTQuNjVjMCAuMjUuMjUuNS41LjUuMSAwIC4xNS0uMDUuMjUtLjA1QzMuMSAyMC40NSA1LjA1IDIwIDYuNSAyMGMxLjk1IDAgNC4wNS40IDUuNSAxLjUgMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuNjUgMCAzLjM1LjMgNC43NSAxLjA1LjEuMDUuMTUuMDUuMjUuMDUuMjUgMCAuNS0uMjUuNS0uNVY2Yy0uNi0uNDUtMS4yNS0uNzUtMi0xem0wIDEzLjVjLTEuMS0uMzUtMi4zLS41LTMuNS0uNS0xLjcgMC00LjE1LjY1LTUuNSAxLjVWOGMxLjM1LS44NSAzLjgtMS41IDUuNS0xLjUgMS4yIDAgMi40LjE1IDMuNS41djExLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTAuNWMuODggMCAxLjczLjA5IDIuNS4yNlY5LjI0Yy0uNzktLjE1LTEuNjQtLjI0LTIuNS0uMjQtMS43IDAtMy4yNC4yOS00LjUuODN2MS42NmMxLjEzLS42NCAyLjctLjk5IDQuNS0uOTl6TTEzIDEyLjQ5djEuNjZjMS4xMy0uNjQgMi43LS45OSA0LjUtLjk5Ljg4IDAgMS43My4wOSAyLjUuMjZWMTEuOWMtLjc5LS4xNS0xLjY0LS4yNC0yLjUtLjI0LTEuNyAwLTMuMjQuMy00LjUuODN6TTE3LjUgMTQuMzNjLTEuNyAwLTMuMjQuMjktNC41LjgzdjEuNjZjMS4xMy0uNjQgMi43LS45OSA0LjUtLjk5Ljg4IDAgMS43My4wOSAyLjUuMjZ2LTEuNTJjLS43OS0uMTYtMS42NC0uMjQtMi41LS4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi40MSAyMSA1IDE5LjU5bDQuODMtNC44M2MuNzUtLjc1IDEuMTctMS43NyAxLjE3LTIuODN2LTUuMUw5LjQxIDguNDEgOCA3bDQtNCA0IDQtMS40MSAxLjQxTDEzIDYuODN2NS4xYzAgMS4wNi40MiAyLjA4IDEuMTcgMi44M0wxOSAxOS41OSAxNy41OSAyMSAxMiAxNS40MSA2LjQxIDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWlub3JDcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDkuMDFDMTguNzIgOC40MiAxOC4xNiA4IDE3LjUgOGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTV2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgMTBoMTAuMjlsMS4wNCAzSDUuODFsMS4wNC0zek0xOSAyMEg1di01aDE0djV6TTYgMTcuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVM4LjMzIDE5IDcuNSAxOSA2IDE4LjMzIDYgMTcuNXptOSAwYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNS0xLjUtLjY3LTEuNS0xLjV6TTkuNDEgNSA4IDYuNDFsLTMtM0w2LjQxIDJsMyAzek0xNiA2LjQxIDE0LjU5IDVsMy0zTDE5IDMuNDFsLTMgM3pNMTMgNWgtMlYwaDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pc2NlbGxhbmVvdXNTZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjE3IDEzLjcxIDEuNC0yLjQyYy4wOS0uMTUuMDUtLjM0LS4wOC0uNDVsLTEuNDgtMS4xNmMuMDMtLjIyLjA1LS40NS4wNS0uNjhzLS4wMi0uNDYtLjA1LS42OWwxLjQ4LTEuMTZjLjEzLS4xMS4xNy0uMy4wOC0uNDVsLTEuNC0yLjQyYy0uMDktLjE1LS4yNy0uMjEtLjQzLS4xNWwtMS43NC43Yy0uMzYtLjI4LS43NS0uNTEtMS4xOC0uNjlsLS4yNi0xLjg1YS4zNjQuMzY0IDAgMCAwLS4zNS0uMjloLTIuOGMtLjE3IDAtLjMyLjEzLS4zNS4zTDYuOCA0LjE1Yy0uNDIuMTgtLjgyLjQxLTEuMTguNjlsLTEuNzQtLjdjLS4xNi0uMDYtLjM0IDAtLjQzLjE1bC0xLjQgMi40MmMtLjA5LjE1LS4wNS4zNC4wOC40NWwxLjQ4IDEuMTZjLS4wMy4yMi0uMDUuNDUtLjA1LjY4cy4wMi40Ni4wNS42OWwtMS40OCAxLjE2Yy0uMTMuMTEtLjE3LjMtLjA4LjQ1bDEuNCAyLjQyYy4wOS4xNS4yNy4yMS40My4xNWwxLjc0LS43Yy4zNi4yOC43NS41MSAxLjE4LjY5bC4yNiAxLjg1Yy4wMy4xNi4xOC4yOS4zNS4yOWgyLjhjLjE3IDAgLjMyLS4xMy4zNS0uM2wuMjYtMS44NWMuNDItLjE4LjgyLS40MSAxLjE4LS42OWwxLjc0LjdjLjE2LjA2LjM0IDAgLjQzLS4xNXpNOC44MSAxMWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTIxLjkyIDE4LjY3bC0uOTYtLjc0Yy4wMi0uMTQuMDQtLjI5LjA0LS40NCAwLS4xNS0uMDEtLjMtLjA0LS40NGwuOTUtLjc0Yy4wOC0uMDcuMTEtLjE5LjA1LS4yOWwtLjktMS41NWMtLjA1LS4xLS4xNy0uMTMtLjI4LS4xbC0xLjExLjQ1Yy0uMjMtLjE4LS40OC0uMzMtLjc2LS40NGwtLjE3LTEuMThhLjIxNi4yMTYgMCAwIDAtLjIxLS4yaC0xLjc5Yy0uMTEgMC0uMjEuMDgtLjIyLjE5bC0uMTcgMS4xOGMtLjI3LjEyLS41My4yNi0uNzYuNDRsLTEuMTEtLjQ1YS4yMy4yMyAwIDAgMC0uMjguMWwtLjkgMS41NWMtLjA1LjEtLjA0LjIyLjA1LjI5bC45NS43NGEzLjE0NSAzLjE0NSAwIDAgMCAwIC44OGwtLjk1Ljc0Yy0uMDguMDctLjExLjE5LS4wNS4yOWwuOSAxLjU1Yy4wNS4xLjE3LjEzLjI4LjFsMS4xMS0uNDVjLjIzLjE4LjQ4LjMzLjc2LjQ0bC4xNyAxLjE4Yy4wMi4xMS4xMS4xOS4yMi4xOWgxLjc5Yy4xMSAwIC4yMS0uMDguMjItLjE5bC4xNy0xLjE4Yy4yNy0uMTIuNTMtLjI2Ljc1LS40NGwxLjEyLjQ1Yy4xLjA0LjIyIDAgLjI4LS4xbC45LTEuNTVjLjA2LS4wOS4wMy0uMjEtLjA1LS4yOHptLTQuMjkuMTZhMS4zNSAxLjM1IDAgMSAxIC4wMDEtMi43MDEgMS4zNSAxLjM1IDAgMCAxLS4wMDEgMi43MDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2RlT2ZUcmF2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4zMSAxOC45Yy0uOTYgMS0yLjA2IDIuMDMtMy4zMSAzLjEtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJjNC4xOSAwIDcuOTkgMy4yMSA4IDguMTdsMi4wOS0yLjA5TDIzLjUgOS41IDE5IDE0bC00LjUtNC41IDEuNDEtMS40MUwxOCAxMC4xN0MxNy45OSA2LjU1IDE1LjM0IDQgMTIgNGMtMy4zNSAwLTYgMi41Ny02IDYuMiAwIDIuMzQgMS45NSA1LjQ0IDYgOS4xNC42NC0uNTkgMS4yMy0xLjE2IDEuNzctMS43MWEyLjUgMi41IDAgMCAxLS4yNy0xLjEyIDIuNSAyLjUgMCAwIDEgNSAwIDIuNDkyIDIuNDkyIDAgMCAxLTMuMTkgMi4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbmV5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNmgzYy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDF6bTEtNmgxdjRoLTF2LTR6bS03IDZoM2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTFIOWMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDF6bTEtNmgxdjRoLTF2LTR6TTUgOGgydjhINXpNMiA0djE2aDIwVjRIMnptMTggMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9wZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3YzAtMS4xLS45LTItMi0yaC0zdjJoM3YyLjY1TDEzLjUyIDE0SDEwVjlINmMtMi4yMSAwLTQgMS43OS00IDR2M2gyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNC40OEwxOSAxMC4zNVY3ek00IDE0di0xYzAtMS4xLjktMiAyLTJoMnYzSDR6bTMgM2MtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDZoNXYySDV6TTE5IDEzYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3NxdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA3YzAtMS4xLTItMy0yLTNzLTIgMS45LTIgM2MwIC43NC40IDEuMzggMSAxLjcyVjEzaC0ydi0yYzAtLjk1LS42Ni0xLjc0LTEuNTUtMS45NC4zNC0uNTguNTUtMS4yNS41NS0xLjk3IDAtMS4zMS0uNjUtMi41My0xLjc0LTMuMjVMMTIgMSA3Ljc0IDMuODRBMy44ODcgMy44ODcgMCAwIDAgNiA3LjA5YzAgLjcyLjIxIDEuMzkuNTUgMS45NkM1LjY2IDkuMjYgNSAxMC4wNSA1IDExdjJIM1Y4LjcyYy42LS4zNCAxLS45OCAxLTEuNzIgMC0xLjEtMi0zLTItM1MwIDUuOSAwIDdjMCAuNzQuNCAxLjM4IDEgMS43MlYyMWgxMHYtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NGgxMFY4LjcyYy42LS4zNCAxLS45OCAxLTEuNzJ6TTguODUgNS41IDEyIDMuNGwzLjE1IDIuMWMuNTMuMzYuODUuOTUuODUgMS41OUMxNiA4LjE0IDE1LjE0IDkgMTQuMDkgOUg5LjkxQzguODYgOSA4IDguMTQgOCA3LjA5YzAtLjY0LjMyLTEuMjMuODUtMS41OXpNMjEgMTloLTZ2LTJjMC0xLjY1LTEuMzUtMy0zLTNzLTMgMS4zNS0zIDN2Mkgzdi00aDR2LTRoMTB2NGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3ZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA5LjQyVjEyaDJWNmgtNnYyaDIuNThsLTQuNDYgNC40NmEuOTk2Ljk5NiAwIDAgMS0xLjQxIDBsLTEuMTctMS4xN2EzIDMgMCAwIDAtNC4yNCAwTDIgMTYuNTkgMy40MSAxOGw1LjI5LTUuMjlhLjk5Ni45OTYgMCAwIDEgMS40MSAwbDEuMTcgMS4xN2EzIDMgMCAwIDAgNC4yNCAwTDIwIDkuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNdWx0aXBsZVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyA0IDQgNC00IDRWOWgtNFY3aDRWNHptLTcgM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek02IDdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMSAxMGg0di0ySDd2LTNsLTQgNCA0IDR2LTN6bTcgMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem00IDBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU11c2V1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExVjlMMTIgMiAyIDl2MmgydjlIMnYyaDIwdi0yaC0ydi05aDJ6bS00IDlINlY5aDEydjExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMCAxNCAyIDMgMi0zdjRoMnYtN2gtMmwtMiAzLTItM0g4djdoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU15TG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em04Ljk0IDNBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOYXZpZ2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA3LjI3IDQuMjggMTAuNDMtMy40Ny0xLjUzLS44MS0uMzYtLjgxLjM2LTMuNDcgMS41M0wxMiA3LjI3TTEyIDIgNC41IDIwLjI5bC43MS43MUwxMiAxOGw2Ljc5IDMgLjcxLS43MUwxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmVhck1lRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2LjM0IDIxIDNsLTMuMzQgOS0xLjU2LTEuNTYgMS41LTQuMDUtNC4wNSAxLjVMMTIgNi4zNHptOS4xOSAxNC44NS01LjA3LTUuMDdMMTQuMzEgMjFIMTIuOWwtMi44My03LjA3TDMgMTEuMVY5LjY5bDQuODgtMS44MS01LjA3LTUuMDdMNC4yMiAxLjQgMjIuNiAxOS43OGwtMS40MSAxLjQxem0tNi42Mi02LjYyTDkuNDMgOS40M2wtMi43MSAxLjAxIDQuODkgMS45NSAxLjk1IDQuODkgMS4wMS0yLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmVhck1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4yNyA2LjczLTQuMjQgMTAuMTMtMS4zMi0zLjQyLS4zMi0uODMtLjgyLS4zMi0zLjQzLTEuMzMgMTAuMTMtNC4yM00yMSAzIDMgMTAuNTN2Ljk4bDYuODQgMi42NUwxMi40OCAyMWguOThMMjEgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5pZ2h0bGlmZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgNWgxNGwtNiA5djRoMnYySDV2LTJoMnYtNEwxIDV6bTkuMSA0IDEuNC0ySDQuNDlsMS40IDJoNC4yMXpNMTcgNWg1djNoLTN2OWMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zYTMgMyAwIDAgMSAxIC4xN1Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9DcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDkuMDFDMTguNzIgOC40MiAxOC4xNiA4IDE3LjUgOGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTV2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgMTBoMTAuMjlsMS4wNCAzSDUuODFsMS4wNC0zek0xOSAyMEg1di01aDE0djV6TTYgMTcuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVM4LjMzIDE5IDcuNSAxOSA2IDE4LjMzIDYgMTcuNXptOSAwYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNS0xLjUtLjY3LTEuNS0xLjV6TTEyIDYuMzYgOS4xNyAzLjU0bDEuNDEtMS40MUwxMiAzLjU0IDE1LjU0IDBsMS40MSAxLjQxTDEyIDYuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb01lYWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTRWNmMwLTEuNzYgMi4yNC00IDUtNHYxNi4xN2wtMi0yVjE0aC0zem00LjQ5IDkuMzFMMTAuMDIgMTIuODVjLS4zMy4wOS0uNjYuMTUtMS4wMi4xNXY5SDd2LTljLTIuMjEgMC00LTEuNzktNC00VjUuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek02LjE3IDkgNSA3LjgzVjloMS4xN3pNOSAySDd2Mi4xN2wyIDJWMnptNCA3VjJoLTJ2Ni4xN2wxLjg1IDEuODVjLjA5LS4zMy4xNS0uNjYuMTUtMS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vVHJhbnNmZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTNjLjgzIDAgMS41LjY3IDEuNSAxLjVTOS4zMyAxNiA4LjUgMTYgNyAxNS4zMyA3IDE0LjUgNy42NyAxMyA4LjUgMTN6bTExLjI4IDkuNjEtMS42NC0xLjY0Yy0uMDUuMDEtLjA5LjAzLS4xNC4wM2gtMWMtLjU1IDAtMS0uNDUtMS0xdi0xSDh2MWMwIC41NS0uNDUgMS0xIDFINmMtLjU1IDAtMS0uNDUtMS0xdi0xLjc4Yy0uNjEtLjU1LTEtMS4zNC0xLTIuMjJWNi44M0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTYgOC44M1YxMGgxLjE3TDYgOC44M3pNMTQuMTcgMTdsLTUtNUg2djRjMCAuMzcuMjEuNjIuMzQuNzNsLjI5LjI3aDcuNTR6TTEyIDRjMy42OSAwIDUuMTEuNDYgNS42Ni45OUg3LjgybDIgMkgxOFYxMGgtNS4xN2wyIDJIMTh2My4xN2wxLjgxIDEuODFjLjExLS4zMS4xOS0uNjMuMTktLjk4VjZjMC0zLjUtMy41OC00LTgtNC0yLjUyIDAtNC43Ni4xNi02LjIyLjk1bDEuNTMgMS41M0M4LjE3IDQuMiA5LjYgNCAxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90TGlzdGVkTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDE2YS45OS45OSAwIDAgMS0uNzEtLjI5Ljk1Ljk1IDAgMCAxLS4yOS0uNzFjLS4wMS0uNTUuNDMtLjk5Ljk4LTFoLjAyYy4yOCAwIC41MS4xLjcxLjI5LjE4LjE5LjI4LjQzLjI4LjdzLS4xLjUxLS4yOS43MS0uNDMuMy0uNy4zem0tLjg4LTMuNjZjMC0uNDUuMS0uODQuMjktMS4xNi4xOS0uMzMuNTMtLjcgMS0xLjEyLjI4LS4yNS40OC0uNDcuNjEtLjY2cy4xOS0uNC4xOS0uNjRjMC0uMjktLjExLS41My0uMzItLjc0LS4yMS0uMi0uNS0uMy0uODUtLjMtLjM3IDAtLjc0LjEtLjk2LjMtLjIxLjItLjQuNDUtLjQuOThIOWMwLTEuMDEuNDYtMS43My45Ny0yLjIxQzEwLjUzIDYuMjggMTEuMjUgNiAxMiA2Yy41OSAwIDEuMTEuMTIgMS41Ny4zNXMuNzkuNTUgMS4wNS45Ni4zOC44Ni4zOCAxLjM1LS4xLjktLjMxIDEuMjUtLjQ4LjcxLS44OSAxLjA5Yy0uMzIuMy0uNTMuNTYtLjY1Ljc3cy0uMTguNDktLjE4LjgxVjEzaC0xLjg1di0uNjZoLjAxek0xOCAxMC4yQzE4IDYuNTcgMTUuMzUgNCAxMiA0cy02IDIuNTctNiA2LjJjMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQgNC4wNS0zLjcgNi02LjggNi05LjE0ek0xMiAyYzQuMiAwIDggMy4yMiA4IDguMiAwIDMuMzItMi42NyA3LjI1LTggMTEuOC01LjMzLTQuNTUtOC04LjQ4LTgtMTEuOEM0IDUuMjIgNy44IDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmgyTDEyIDIgNS4wNSAxMkg3bC0zLjkgNmg2LjkydjRoMy45NXYtNEgyMWwtNC02ek02Ljc5IDE2bDMuOS02SDguODhsMy4xMy00LjUgMy4xNSA0LjVoLTEuOWw0IDZINi43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlZGFsQmlrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjE4IDEwLTEuNy00LjY4QTIuMDA4IDIuMDA4IDAgMCAwIDE0LjYgNEgxMnYyaDIuNmwxLjQ2IDRoLTQuODFsLS4zNi0xSDEyVjdIN3YyaDEuNzVsMS44MiA1SDkuOWMtLjQ0LTIuMjMtMi4zMS0zLjg4LTQuNjUtMy45OUMyLjQ1IDkuODcgMCAxMi4yIDAgMTVjMCAyLjggMi4yIDUgNSA1IDIuNDYgMCA0LjQ1LTEuNjkgNC45LTRoNC4yYy40NCAyLjIzIDIuMzEgMy44OCA0LjY1IDMuOTkgMi44LjEzIDUuMjUtMi4xOSA1LjI1LTUgMC0yLjgtMi4yLTUtNS01aC0uODJ6TTcuODIgMTZjLS40IDEuMTctMS40OSAyLTIuODIgMi0xLjY4IDAtMy0xLjMyLTMtM3MxLjMyLTMgMy0zYzEuMzMgMCAyLjQyLjgzIDIuODIgMkg1djJoMi44MnptNi4yOC0yaC0xLjRsLS43My0ySDE1Yy0uNDQuNTgtLjc2IDEuMjUtLjkgMnptNC45IDRjLTEuNjggMC0zLTEuMzItMy0zIDAtLjkzLjQxLTEuNzMgMS4wNS0yLjI4bC45NiAyLjY0IDEuODgtLjY4LS45Ny0yLjY3Yy4wMyAwIC4wNi0uMDEuMDktLjAxIDEuNjggMCAzIDEuMzIgMyAzcy0xLjMzIDMtMy4wMSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uUGluQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTFjMS4zMyAwIDQgLjY3IDQgMnYuMTZjLS45NyAxLjEyLTIuNCAxLjg0LTQgMS44NHMtMy4wMy0uNzItNC0xLjg0VjEzYzAtMS4zMyAyLjY3LTIgNC0yem0wLTFjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem02IC4yQzE4IDYuNTcgMTUuMzUgNCAxMiA0cy02IDIuNTctNiA2LjJjMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQgNC4wNS0zLjcgNi02LjggNi05LjE0ek0xMiAyYzQuMiAwIDggMy4yMiA4IDguMiAwIDMuMzItMi42NyA3LjI1LTggMTEuOC01LjMzLTQuNTUtOC04LjQ4LTgtMTEuOEM0IDUuMjIgNy44IDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvblBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg0bDMgMyAzLTNoNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE2aC00LjgzbC0uNTkuNTlMMTIgMjAuMTdsLTEuNTktMS41OS0uNTgtLjU4SDVWNGgxNHYxNHptLTctN2MxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem02IDguNThjMC0yLjUtMy45Ny0zLjU4LTYtMy41OHMtNiAxLjA4LTYgMy41OFYxN2gxMnYtMS40MnpNOC40OCAxNWMuNzQtLjUxIDIuMjMtMSAzLjUyLTFzMi43OC40OSAzLjUyIDFIOC40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlc3RDb250cm9sUm9kZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxN1wiLFwiY3lcIjpcIjE3XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjg2IDE0Ljk3LS45My0uODRjLjQ4LTMuNDUtMi44Ny02LjA0LTYuMDUtNC44MkE1Ljc5IDUuNzkgMCAwIDAgMTIgOWMtNC4yNiAwLTUuNjUgMy41OC01Ljg5IDQuODVBMi45ODMgMi45ODMgMCAwIDEgNCAxMWMwLTEuNjYgMS4zNC0zIDMtM2gyLjVhMi41IDIuNSAwIDAgMCAwLTVIOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxLjVjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41SDdjLTIuNzYgMC01IDIuMjQtNSA1IDAgMi40NCAxLjc2IDQuNDcgNC4wNyA0LjkxQTUuOTk4IDUuOTk4IDAgMCAwIDEyIDIxaDYuNTNjMy4xMSAwIDQuNy0zLjg5IDIuMzMtNi4wM3pNMTguNTMgMTlIMTJjLTEuMjEgMC0yLjM0LS41NC0zLjExLTEuNDgtLjc4LS45NS0xLjA2LTIuMTYtLjgtMy40MWEzLjk1IDMuOTUgMCAwIDEgMi45OS0zLjAxYy4yMi0uMDUuNDUtLjA2LjY3LS4wNy0uNDcuNzEtLjc1IDEuNTUtLjc1IDIuNDcgMCAxLjI0LjUgMi4zNyAxLjMyIDMuMThsMS40MS0xLjQxYy0uNDUtLjQ1LS43My0xLjA4LS43My0xLjc3IDAtMS40MiAxLjItMi41IDIuNS0yLjVhMi41IDIuNSAwIDAgMSAyLjUgMi41YzAgLjQ2LS4xMy44OC0uMzUgMS4yNWwxLjg3IDEuN2MuMzEuMjguNDguNjcuNDggMS4wOSAwIC44LS42NiAxLjQ2LTEuNDcgMS40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlc3RDb250cm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTV2LTJoLTMuMDdjLS4wNS0uMzktLjEyLS43Ny0uMjItMS4xNGwyLjU4LTEuNDktMS0xLjczTDE2LjkyIDEwYy0uMjgtLjQ4LS42Mi0uOTEtLjk5LTEuMjkuMS0uNTYuMi0xLjY5LS41OC0yLjg5TDE3IDQuMTdsLTEuNDEtMS40MS0xLjcyIDEuNzJjLTEuNjgtLjg5LTMuMS0uMzMtMy43MyAwTDguNDEgMi43NiA3IDQuMTdsMS42NSAxLjY1Yy0uNzggMS4yLS42OCAyLjM0LS41OCAyLjg5LS4zNy4zOS0uNzEuODItLjk5IDEuMjlMNC43MSA4LjYzbC0xIDEuNzMgMi41OCAxLjQ5Yy0uMS4zNy0uMTcuNzUtLjIyIDEuMTRIM3YyaDMuMDdjLjA1LjM5LjEyLjc3LjIyIDEuMTRsLTIuNTggMS40OSAxIDEuNzNMNy4wOCAxOGMxLjA4IDEuODEgMi44OCAzIDQuOTIgM3MzLjg0LTEuMTkgNC45Mi0zbDIuMzcgMS4zNyAxLTEuNzMtMi41OC0xLjQ5Yy4xLS4zNy4xNy0uNzUuMjItMS4xNEgyMXptLTktOWMuODggMCAxLjYyLjU3IDEuODggMS4zNkMxMy4yOSA3LjEzIDEyLjY2IDcgMTIgN3MtMS4yOS4xMy0xLjg4LjM2QzEwLjM4IDYuNTcgMTEuMTIgNiAxMiA2em0wIDEzYy0yLjIxIDAtNC0yLjI0LTQtNXMxLjc5LTUgNC01IDQgMi4yNCA0IDUtMS43OSA1LTQgNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTFoMnY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGluRHJvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjMS45MyAwIDUgMS40IDUgNS4xNSAwIDIuMTYtMS43MiA0LjY3LTUgNy4zMi0zLjI4LTIuNjUtNS01LjE3LTUtNy4zMkM3IDUuNCAxMC4wNyA0IDEyIDRtMC0yQzguNzMgMiA1IDQuNDYgNSA5LjE1YzAgMy4xMiAyLjMzIDYuNDEgNyA5Ljg1IDQuNjctMy40NCA3LTYuNzMgNy05Ljg1QzE5IDQuNDYgMTUuMjcgMiAxMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMmEyIDIgMCAxIDAgMC00ek01IDIwaDE0djJINXYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTJjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem02LTEuOEMxOCA2LjU3IDE1LjM1IDQgMTIgNHMtNiAyLjU3LTYgNi4yYzAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0IDQuMDUtMy43IDYtNi44IDYtOS4xNHpNMTIgMmM0LjIgMCA4IDMuMjIgOCA4LjIgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbHVtYmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjI4IDQuOTMtMi4xMi0yLjEyYy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMEwxMS41IDUuNjRsMi4xMiAyLjEyIDIuMTItMi4xMiAzLjU0IDMuNTRhMy4wMTIgMy4wMTIgMCAwIDAgMC00LjI1ek01LjQ5IDEzLjc3Yy41OS41OSAxLjU0LjU5IDIuMTIgMGwyLjQ3LTIuNDctMi4xMi0yLjEzLTIuNDcgMi40N2MtLjU5LjU5LS41OSAxLjU0IDAgMi4xM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuMDQgNy43Ni0uNzEuNzEtLjcxLjcxTDEwLjQ0IDZjLS41OS0uNi0xLjU0LS42LTIuMTItLjAxYTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsMy4xOCAzLjE4LS43MS43MS02LjM2IDYuMzZjLS43OC43OC0uNzggMi4wNSAwIDIuODMuNzguNzggMi4wNS43OCAyLjgzIDBMMTYuNDUgMTJhLjk5Ni45OTYgMCAxIDAgMS40MS0xLjQxbC0yLjgyLTIuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYWlsd2F5QWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiMTUuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTFWOGg3LjI5QzExLjEgNy4zNyAxMSA2LjcgMTEgNkg0LjQzYy45LS43NyAzLjI4LTEuMDggNi42NS0uOTguMS0uNy4zLTEuMzcuNTktMS45OUMyLjk3IDIuNjcgMiA1LjAyIDIgN3Y5LjVDMiAxOC40MyAzLjU3IDIwIDUuNSAyMEw0IDIxdjFoMTJ2LTFsLTEuNS0xYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjEzYy0xLjkxIDAtMy42My0uNzYtNC44OS0ySDR6bTEyIDUuNWMwIC44My0uNjcgMS41LTEuNSAxLjVoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxM2gxMnYzLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDFjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0uNSA4aC0xVjhoMXYxem0wLTJoLTFWM2gxdjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYW1lbkRpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjY2IDE0Yy0uNjYgMS45Mi0yLjI0IDMuNTQtNC40IDQuMzlsLTEuMjYuNVYyMGgtNHYtMS4xMWwtMS4yNy0uNWMtMi4xNi0uODUtMy43NC0yLjQ3LTQuNC00LjM5aDE1LjMzTTIyIDIgNCAzLjk5VjEySDJjMCAzLjY5IDIuNDcgNi44NiA2IDguMjVWMjJoOHYtMS43NWMzLjUzLTEuMzkgNi00LjU2IDYtOC4yNUgxMC41VjhIMjJWNi41SDEwLjVWNC43OEwyMiAzLjUxVjJ6TTggNi41VjUuMDZsMS0uMTFWNi41SDh6bS0yLjUgMFY1LjM0bDEtLjExVjYuNWgtMXpNOCAxMlY4aDF2NEg4em0tMi41IDBWOGgxdjRoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYW1wTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIxaC0yVjYuODNMOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzVjljMCA0LjI3IDQuMDMgNy4xMyA2IDguMjdsLTEuNDYgMS40NmMtMS45MS0xLjE2LTMuNDQtMi41My00LjU0LTQuMDJWMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYW1wUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMWgyVjYuODNsMS41OSAxLjU5TDE2IDdsLTQtNC00IDQgMS40MSAxLjQxTDExIDYuODNWOWMwIDQuMjctNC4wMyA3LjEzLTYgOC4yN2wxLjQ2IDEuNDZDOC4zNyAxNy41NiA5LjkgMTYuMTkgMTEgMTQuN1YyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhdGVSZXZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdsLS41OS41OS0uNTguNThWNGgxNnYxMnptLTkuNS0ySDE4di0yaC01LjV6bTMuODYtNS44N2MuMi0uMi4yLS41MSAwLS43MWwtMS43Ny0xLjc3Yy0uMi0uMi0uNTEtLjItLjcxIDBMNiAxMS41M1YxNGgyLjQ3bDUuODktNS44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZVJvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0aDJ2OWgtMnpNNCA0aDJ2MTZINHpNMTEgNGgydjRoLTJ6TTExIDEwaDJ2NGgtMnpNMTEgMTZoMnY0aC0yek0yMi41IDE2LjQxIDIxLjA5IDE1IDE5IDE3LjA5IDE2LjkxIDE1bC0xLjQxIDEuNDEgMi4wOSAyLjA5LTIuMDkgMi4wOUwxNi45MSAyMiAxOSAxOS45MSAyMS4wOSAyMmwxLjQxLTEuNDEtMi4wOS0yLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdGF1cmFudE1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguMSAxMy4zNCAyLjgzLTIuODNMMy45MSAzLjVhNC4wMDggNC4wMDggMCAwIDAgMCA1LjY2bDQuMTkgNC4xOHptNi43OC0xLjgxYzEuNTMuNzEgMy42OC4yMSA1LjI3LTEuMzggMS45MS0xLjkxIDIuMjgtNC42NS44MS02LjEyLTEuNDYtMS40Ni00LjItMS4xLTYuMTIuODEtMS41OSAxLjU5LTIuMDkgMy43NC0xLjM4IDUuMjdMMy43IDE5Ljg3bDEuNDEgMS40MUwxMiAxNC40MWw2Ljg4IDYuODggMS40MS0xLjQxTDEzLjQxIDEzbDEuNDctMS40N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlc3RhdXJhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDZ2OGgzdjhoMlYyYy0yLjc2IDAtNSAyLjI0LTUgNHptLTUgM0g5VjJIN3Y3SDVWMkgzdjdjMCAyLjIxIDEuNzkgNCA0IDR2OWgydi05YzIuMjEgMCA0LTEuNzkgNC00VjJoLTJ2N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdW5kYWJvdXRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDggOEE2IDYgMCAwIDEgMTYgM2MzLjMxIDAgNiAyLjY5IDYgNiAwIDIuOTctMi4xNiA1LjQ0LTUgNS45MlYyMWgtMnYtNi4wOWMwLS45OC43MS0xLjggMS42Ny0xLjk3YTMuOTk5IDMuOTk5IDAgMSAwLTQuNjEtNC42MWMtLjE3Ljk2LS45OSAxLjY3LTEuOTcgMS42N0g1LjgzbDEuNTkgMS41OUw2IDEzIDIgOWw0LTQgMS40MSAxLjQxTDUuODMgOGg0LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm91bmRhYm91dFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTIgOEMxMy40NCA1LjE2IDEwLjk3IDMgOCAzIDQuNjkgMyAyIDUuNjkgMiA5YzAgMi45NyAyLjE2IDUuNDQgNSA1LjkyVjIxaDJ2LTYuMDljMC0uOTgtLjcxLTEuOC0xLjY3LTEuOTdhMy45OTkgMy45OTkgMCAxIDEgNC42MS00LjYxYy4xNy45Ni45OSAxLjY3IDEuOTcgMS42N2g0LjI2bC0xLjU5IDEuNTlMMTggMTNsNC00LTQtNC0xLjQxIDEuNDFMMTguMTcgOGgtNC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTUuMThWN2MwLTIuMjEtMS43OS00LTQtNHMtNCAxLjc5LTQgNHYxMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWOC44MkM4LjE2IDguNCA5IDcuMyA5IDZjMC0xLjY2LTEuMzQtMy0zLTNTMyA0LjM0IDMgNmMwIDEuMy44NCAyLjQgMiAyLjgyVjE3YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRWN2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjguMThBMi45OTYgMi45OTYgMCAwIDAgMTggMjFjMS42NiAwIDMtMS4zNCAzLTMgMC0xLjMtLjg0LTIuNC0yLTIuODJ6TTYgN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0xMiAxMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUnVuQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjU0IDguOTdjLS4yMy0uNDctLjc2LS43MS0xLjI2LS41M0w5IDkuNjVWMTJoMXYtMS42NWwxLjU0LS41Ny0uOTYgNC44OS0yLjc4LS41Ny0uMi45OCAzLjc2Ljc3LjUyLTIuNjRMMTMgMTQuNDJWMThoMXYtMy45N2wtMS4zMi0xLjQ0LjQxLTIuMzVDMTMuOTkgMTEuNDYgMTUuMyAxMiAxNiAxMnYtMWMtLjQxIDAtMS42My0uMzMtMi40Ni0yLjAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzLjVcIixcImN5XCI6XCI3XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYWZldHlDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6bTYgOS4wOWMwIDQtMi41NSA3LjctNiA4LjgzLTMuNDUtMS4xMy02LTQuODItNi04Ljgzdi00LjdsNi0yLjI1IDYgMi4yNXY0Ljd6TTEyIDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0xLjY1IDcuMzVMMTEuNSAxMi4yVjloMXYyLjc5bDEuODUgMS44NS0uNy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNhaWxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMy41VjJMMyAxMy41aDh6bS0yLTJINi44M0w5IDguMzh2My4xMnptMTIgMkMyMSA2LjUgMTQuNSAxIDEyLjUgMWMwIDAgMSAzIDEgNi41cy0xIDYtMSA2SDIxem0tNS42Mi04LjI2YzEuNDIgMS41MiAyLjg4IDMuNzIgMy40MSA2LjI2aC0zLjY4Yy4yMS0xLjEuMzktMi40Ni4zOS00IDAtLjc5LS4wNS0xLjU1LS4xMi0yLjI2ek0yMiAxNUgyYTYuMjMzIDYuMjMzIDAgMCAwIDIuMzMgMy43M2MuNjUtLjI3IDEuMjItLjcyIDEuNjctMS4yMy43My44NCAxLjggMS41IDMgMS41czIuMjctLjY2IDMtMS41Yy43My44NCAxLjggMS41IDMgMS41czIuMjYtLjY2IDMtMS41Yy40NS41MSAxLjAyLjk2IDEuNjcgMS4yMyAxLjE3LS44OSAyLjAyLTIuMiAyLjMzLTMuNzN6bTAgOHYtMmgtMWMtMS4wNCAwLTIuMDgtLjM1LTMtMS0xLjgzIDEuMy00LjE3IDEuMy02IDAtMS44MyAxLjMtNC4xNyAxLjMtNiAwLS45MS42NS0xLjk2IDEtMyAxSDJ2MmgxYzEuMDMgMCAyLjA1LS4yNSAzLS43NSAxLjg5IDEgNC4xMSAxIDYgMCAxLjg5IDEgNC4xMSAxIDYgMCAuOTUuNSAxLjk3Ljc1IDMgLjc1aDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYXRlbGxpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNOC41NyA2SDZ2Mi41OGMxLjQyIDAgMi41Ny0xLjE2IDIuNTctMi41OHpNMTIgNmgtMS43MWMwIDIuMzYtMS45MiA0LjI5LTQuMjkgNC4yOVYxMmMzLjMyIDAgNi0yLjY5IDYtNnptMi4xNCA1Ljg2LTMgMy44N0w5IDEzLjE1IDYgMTdoMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5Sb3RhdGlvbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQgNy41OSA1LTVjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBMMjAuMjQgMTFoLTIuODNMMTAuNCA0IDUuNDEgOUg4djJIMlY1aDJ2Mi41OXpNMjAgMTloMnYtNmgtNnYyaDIuNTlsLTQuOTkgNS03LjAxLTdIMy43Nmw4LjQxIDguNDFjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDUtNVYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldE1lYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS4wNSAxNy41Ni0xNy45Ny45NEwzIDE3bDE3Ljk4LS45NC4wNyAxLjV6TTIxIDE5LjQ4SDN2MS41aDE4di0xLjV6TTIzIDEzVjRjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2OWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yem0tMiAwSDNWNGgxOHY5em0tMS03Yy0xLjY4IDAtMy4wNC45OC0zLjIxIDIuMjMtLjY0LS43My0yLjczLTIuNzMtNi41NC0yLjczLTQuNjcgMC02Ljc1IDMtNi43NSAzczIuMDggMyA2Ljc1IDNjMy44MSAwIDUuOS0yIDYuNTQtMi43M0MxNi45NiAxMC4wMiAxOC4zMiAxMSAyMCAxMVY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbnBvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMGg1bDMtMy0zLTNoLTVWMmgtMnYySDR2Nmg3djJINmwtMyAzIDMgM2g1djRoMnYtNGg3di02aC03di0yek02IDZoMTEuMTdsMSAxLTEgMUg2VjZ6bTEyIDEwSDYuODNsLTEtMSAxLTFIMTh2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNub3dtb2JpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxN2MwIC41NS0uNDUgMS0xIDFoLS4xN2wtMi4yLTIuMkMyMC41OCAxNS4zNyAyMiAxNC40IDIyIDEzYzAtMS04LTgtOC04aC0zdjJoMi4yNWwuOC43MkwxMSAxMCAyIDlsLTIgNCA0LjU0IDEuMzYtMy40OSAxLjg4Qy0uNzcgMTcuMjItLjA3IDIwIDIgMjBoNmMyLjIxIDAgNC0xLjc5IDQtNGg0bDIgMmgtM3YyaDZjMS42NiAwIDMtMS4zNCAzLTNoLTJ6TTggMThIMmw1LjI1LTIuODNMMTAgMTZhMiAyIDAgMCAxLTIgMnptOS00aC02LjdsLTcuNDUtMi4yMy4zMS0uNjIgOC40NC44NSAzLjkzLTIuOTRzMy43NyAzLjQ0IDQuMjcgNC4xNGMwIDAtMS4xLjgtMi44Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDdoLTNjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmgzYzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bTAgOGgtM1Y5aDN2NnpNMSAxNWg0di0ySDNjLTEuMSAwLTItLjktMi0yVjljMC0xLjEuOS0yIDItMmg0djJIM3YyaDJjMS4xIDAgMiAuOSAyIDJ2MmMwIDEuMS0uOSAyLTIgMkgxdi0yem0xNiAwaDR2LTJoLTJjLTEuMSAwLTItLjktMi0yVjljMC0xLjEuOS0yIDItMmg0djJoLTR2MmgyYzEuMSAwIDIgLjkgMiAydjJjMCAxLjEtLjkgMi0yIDJoLTR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3VwS2l0Y2hlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNCA3Yy0uMzQuNTUtLjQuOTctLjQgMS4zOEM2IDkuMTUgNyAxMSA3IDEyYzAgLjk1LS40IDEuNS0uNCAxLjVINS4xcy40LS41NS40LTEuNWMwLTEtMS0yLjg1LTEtMy42MiAwLS40MS4wNi0uODMuNC0xLjM4aDEuNXptNSAwYy0uMzQuNTUtLjQuOTctLjQgMS4zOCAwIC43NyAxIDIuNjIgMSAzLjYyIDAgLjk1LS40IDEuNS0uNCAxLjVoMS41cy40LS41NS40LTEuNWMwLTEtMS0yLjg1LTEtMy42MiAwLS40MS4wNi0uODMuNC0xLjM4aC0xLjV6TTguMTUgN2MtLjM0LjU1LS40Ljk3LS40IDEuMzggMCAuNzcgMSAyLjYzIDEgMy42MiAwIC45NS0uNCAxLjUtLjQgMS41aDEuNXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgtMS41ek0xOC42IDJjLTEuNTQgMC0yLjgxIDEuMTYtMi45OCAyLjY1TDE0LjUzIDE1SDQuMDFjLS42IDAtMS4wOS41My0xIDEuMTNDMy41MyAxOS40NiA2LjM5IDIyIDkuNzUgMjJjMy40OCAwIDYuMzQtMi43MyA2LjcxLTYuMjNMMTcuNjEgNC45Yy4wNS0uNTEuNDctLjkuOTktLjkuNTUgMCAxIC40NSAxIDEgMCAuMy0uMSAxLjI1LS4xIDEuMjVsMS45Ny4yNXMuMTMtMS4wNi4xMy0xLjVjMC0xLjY1LTEuMzUtMy0zLTN6TTkuNzUgMjBjLTEuOTQgMC0zLjY3LTEuMjMtNC40My0zaDguNzljLS43MiAxLjc4LTIuNDIgMy00LjM2IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1IDMgN1YzbDQgMnptMTEtMnY0bDQtMi00LTJ6bS03LTF2NGw0LTItNC0yem0yIDE2aC0ydjRjLTUuMDUtLjE1LTktMS40NC05LTN2LTljMC0xLjY2IDQuNDgtMyAxMC0zczEwIDEuMzQgMTAgM3Y5YzAgMS41Ni0zLjk1IDIuODUtOSAzdi00em0tOC03Ljk2YzEuMzguNDkgMy43Ny45NiA3IC45NnM1LjYyLS40NyA3LS45NkMxOSA5Ljg2IDE2LjIyIDkgMTIgOXMtNyAuODYtNyAxLjA0em0xNSAxLjc2Yy0xLjgyLjczLTQuNzMgMS4yLTggMS4ycy02LjE4LS40Ny04LTEuMnY2Ljc4Yy42MS40MSAyLjM2IDEuMDEgNSAxLjI4VjE2aDZ2My44NmMyLjY0LS4yNyA0LjM5LS44NyA1LTEuMjhWMTEuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0b3JlTWFsbERpcmVjdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguMzYgOSAuNiAzSDUuMDRsLjYtM2gxMi43Mk0yMCA0SDR2MmgxNlY0em0wIDNINGwtMSA1djJoMXY2aDEwdi02aDR2Nmgydi02aDF2LTJsLTEtNXpNNiAxOHYtNGg2djRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0cmFpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNi44MyA5LjQxIDguNDEgOCA3bDQtNCA0IDQtMS40MSAxLjQxTDEzIDYuODNWMjFoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdHJlZXR2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41NiAxNC4zM2MtLjM0LjI3LS41Ni43LS41NiAxLjE3VjIxaDdjMS4xIDAgMi0uOSAyLTJ2LTUuOThjLS45NC0uMzMtMS45NS0uNTItMy0uNTItMi4wMyAwLTMuOTMuNy01LjQ0IDEuODN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCI2XCIsXCJyXCI6XCI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgNmMwLTEuMDguMjctMi4xLjc0LTNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAuNTUuMjMgMS4wNS41OSAxLjQxbDkuODItOS44MkE2LjQzNSA2LjQzNSAwIDAgMSAxMS41IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdWJ3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjggMi44QzE2IDIuMDkgMTMuODYgMiAxMiAycy00IC4wOS01LjguOEMzLjUzIDMuODQgMiA2LjA1IDIgOC44NlYyMmgyMFY4Ljg2YzAtMi44MS0xLjUzLTUuMDItNC4yLTYuMDZ6TTkuMTcgMjBsMS41LTEuNWgyLjY2bDEuNSAxLjVIOS4xN3ptLTIuMTYtNlY5aDEwdjVoLTEwem05LjQ5IDJjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXptLTgtMWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek0yMCAyMGgtMy41di0uMzhsLTEuMTUtMS4xNkEyLjk3OSAyLjk3OSAwIDAgMCAxOCAxNS41VjljMC0yLjYzLTMtMy02LTNzLTYgLjM3LTYgM3Y2LjVjMCAxLjU0IDEuMTYgMi43OSAyLjY1IDIuOTZMNy41IDE5LjYyVjIwSDRWOC44NmMwLTIgMS4wMS0zLjQ1IDIuOTMtNC4yQzguNDEgNC4wOCAxMC4zMiA0IDEyIDRzMy41OS4wOCA1LjA3LjY2YzEuOTIuNzUgMi45MyAyLjIgMi45MyA0LjJWMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTeW5hZ29ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0Yy0xLjY2IDAtMyAxLjM0LTMgM3YuMjlMMTIgMyA3IDcuMjlWN2MwLTEuNjYtMS4zNC0zLTMtM1MxIDUuMzQgMSA3djE0aDEwdi01YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXY1aDEwVjdjMC0xLjY2LTEuMzQtMy0zLTN6bTAgMmMuNTUgMCAxIC40NSAxIDF2MWgtMlY3YzAtLjU1LjQ1LTEgMS0xek00IDZjLjU1IDAgMSAuNDUgMSAxdjFIM1Y3YzAtLjU1LjQ1LTEgMS0xek0zIDE5di05aDJ2OUgzem0xNCAwaC0ydi0zYzAtMS42NS0xLjM1LTMtMy0zcy0zIDEuMzUtMyAzdjNIN1Y5LjkybDUtNC4yOSA1IDQuMjlWMTl6bTIgMHYtOWgydjloLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWtlb3V0RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNy43OSAxOC0uNTEtN2g5LjQ2bC0uNTEgN0g3Ljc5ek05LjgzIDVoNC4zM2wyLjggMi43M0wxNi44NyA5SDcuMTJsLS4wOS0xLjI3TDkuODMgNXpNMjIgNy40NmwtMS40MS0xLjQxTDE5IDcuNjNsLjAzLS41NkwxNC45OCAzSDkuMDJMNC45NyA3LjA3bC4wMy41LTEuNTktMS41NkwyIDcuNDRsMy4yMyAzLjExLjcgOS40NWgxMi4xNGwuNy05LjQ0TDIyIDcuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYXhpQWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTN2NUg0di01aDE0Yy0xLjkxIDAtMy42My0uNzYtNC44OS0yaC04LjNsMS4wNC0zaDUuNDRDMTEuMSA3LjM3IDExIDYuNyAxMSA2cy4xLTEuMzcuMjktMkg4djJINS41Yy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwyIDEzdjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtLjA5LS4yN2MtLjYxLjE3LTEuMjUuMjctMS45MS4yN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMWMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS41IDhoLTFWOGgxdjF6bTAtMmgtMVYzaDF2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRlbXBsZUJ1ZGRoaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOS4wMmMwIDEuMDktLjg5IDEuOTgtMS45OCAxLjk4SDE4VjguODZjMS43Mi0uNDQgMy0xLjk5IDMtMy44NFY1bC0yIC4wMkMxOSA2LjExIDE4LjExIDcgMTcuMDIgN2gtLjUyTDEyIDEgNy41IDdoLS41MkM1Ljg5IDcgNSA2LjExIDUgNS4wMkgzYzAgMS44NiAxLjI4IDMuNCAzIDMuODRWMTFINC45OEMzLjg5IDExIDMgMTAuMTEgMyA5LjAySDFjMCAxLjg2IDEuMjggMy40IDMgMy44NFYyMmg3di00YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXY0aDd2LTkuMTRjMS43Mi0uNDQgMy0xLjk5IDMtMy44NFY5bC0yIC4wMnptLTktNC42OUwxNCA3aC00bDItMi42N3pNOCA5aDh2Mkg4Vjl6bTEwIDExaC0zdi0yYzAtMS42NS0xLjM1LTMtMy0zcy0zIDEuMzUtMyAzdjJINnYtN2gxMnY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGVtcGxlSGluZHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMXYyaC0yTDE1IDNWMWgtMnYyaC0yLjAzVjFoLTJ2Mi4xMkw2IDEzSDR2LTJIMnYxMWg5di01aDJ2NWg5VjExaC0yem0tNC42OSAwSDguNjlsLjYtMmg1LjQybC42IDJ6bS0xLjItNEg5Ljg5bC42LTJoMy4wMmwuNiAyek0yMCAyMGgtNXYtNUg5djVINHYtNWgzLjQ5bC42LTJoNy44MmwuNiAySDIwdjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXJyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTQuMjIgNS42MyAxLjI1IDEuNjdMMTQgOS4zMyAxOSAxNmgtOC40NmwtNC4wMS01LjM3TDEgMThoMjJMMTQgNnpNNSAxNmwxLjUyLTIuMDNMOC4wNCAxNkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGhlYXRlckNvbWVkeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTlcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi45OSA5Yy0xLjM4IDAtMi41Ljg0LTIuNSAxLjg4aDVjMC0xLjA0LTEuMTItMS44OC0yLjUtMS44OHpNMSAxNmMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02VjlIMXY3em0yLTVoOHY1YzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00di01elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAydjUuNWgyVjRoOHY1YzAgMi4yMS0xLjc5IDQtNCA0LS45NSAwLTEuODEtLjM1LTIuNS0uOXYyLjM1Yy43Ni4zNSAxLjYxLjU1IDIuNS41NSAzLjMxIDAgNi0yLjY5IDYtNlYySDExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjVcIixcImN5XCI6XCIxMy41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzLjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNy44OGMxLjM4IDAgMi41LS44NCAyLjUtMS44OGgtNWMwIDEuMDQgMS4xMiAxLjg4IDIuNSAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGlyZVJlcGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDhhMS4wMDMgMS4wMDMgMCAwIDEtLjcxLTEuNzFjLjQtLjQgMi40Ni0xLjA0IDIuNDYtMS4wNHMtLjY0IDIuMDYtMS4wNCAyLjQ2Yy0uMTguMTgtLjQzLjI5LS43MS4yOXptMSA1djVjMCAxLjY1LTEuMzUgMy0zIDNzLTMtMS4zNS0zLTN2LTJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2M2MwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoNmMxLjEgMCAyIC45IDIgMnY4LjE3QTMuMDA5IDMuMDA5IDAgMCAxIDE2IDE2djJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi01aC0xdi0xLjQyYy0xLjc3LS43Ny0zLTIuNTMtMy00LjU4IDAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVjMCAyLjA1LTEuMjMgMy44MS0zIDQuNThWMTNoLTF6bTItNmMwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzIDMtMS4zNCAzLTN6TTEwIDcgOCA5VjYuMTdMOS4xNyA1SDQuODNMNiA2LjE3VjlMNCA3djIuMTdsMiAyVjE0bC0yLTJ2Mi4xN2wyIDJWMTlsLTItMnYyaDZ2LTJsLTIgMnYtMi44M2wyLTJWMTJsLTIgMnYtMi44M2wyLTJWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyYWZmaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwaC0zVjguODZjMS43Mi0uNDUgMy0yIDMtMy44NmgtM1Y0YzAtLjU1LS40NS0xLTEtMUg4Yy0uNTUgMC0xIC40NS0xIDF2MUg0YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjEwSDRjMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMTVINGMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYyMGMwIC41NS40NSAxIDEgMWg4Yy41NSAwIDEtLjQ1IDEtMXYtMS4xNGMxLjcyLS40NSAzLTIgMy0zLjg2aC0zdi0xLjE0YzEuNzItLjQ1IDMtMiAzLTMuODZ6bS01IDlIOVY1aDZ2MTR6bS0zLTFjLjgzIDAgMS41LS42NyAxLjUtMS41UzEyLjgzIDE1IDEyIDE1cy0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXptMC00LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6TTEyIDljLjgzIDAgMS41LS42NyAxLjUtMS41UzEyLjgzIDYgMTIgNnMtMS41LjY3LTEuNSAxLjVTMTEuMTcgOSAxMiA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMC41di41aDJsMi0yaDRsMiAyaDJ2LS41TDE2LjUgMTljMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS00LTQtOC00em0wIDJjMy41MSAwIDQuOTYuNDggNS41NyAxSDYuNDNjLjYxLS41MiAyLjA2LTEgNS41Ny0xek02IDdoNXYzSDZWN3ptMTIgOC41YzAgLjgzLS42NyAxLjUtMS41IDEuNWgtOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjEyaDEydjMuNXptMC01LjVoLTVWN2g1djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA1IC43NS0xLjVIMTdWMkg3djEuNWg0Ljc1TDExIDVjLTMuMTMuMDktNiAuNzMtNiAzLjVWMTdjMCAxLjUgMS4xMSAyLjczIDIuNTUgMi45NUw2IDIxLjV2LjVoMmwyLTJoNGwyIDJoMnYtLjVsLTEuNTUtMS41NWgtLjAxLjAxQzE3Ljg5IDE5LjczIDE5IDE4LjUgMTkgMTdWOC41YzAtMi43Ny0yLjg3LTMuNDEtNi0zLjV6bS0xLjk3IDJoMS45NGMyLjc1LjA4IDMuNjIuNTggMy45IDFINy4xM2MuMjgtLjQyIDEuMTUtLjkyIDMuOS0xem0tLjE4IDEwLjk1SDcuNzRBLjk3NC45NzQgMCAwIDEgNyAxN3YtMWgzLjg5Yy0uMjQuMjctLjM5LjYxLS4zOSAxIDAgLjM2LjEzLjY5LjM1Ljk1ek0xNyAxN2MwIC40NS0uMy44NC0uNzQuOTVoLTMuMTFjLjIyLS4yNi4zNS0uNTkuMzUtLjk1IDAtLjM5LS4xNS0uNzMtLjM5LTFIMTd2MXptMC0zSDd2LTRoMTB2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyYW5zZmVyV2l0aGluQVN0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ5IDE1LjV2LTEuNzVMMTQgMTYuMjVsMi40OSAyLjVWMTdIMjJ2LTEuNWgtNS41MXptMy4wMiA0LjI1SDE0djEuNWg1LjUxVjIzTDIyIDIwLjUgMTkuNTEgMTh2MS43NXpNOS41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTUuNzUgOC45IDMgMjNoMi4xbDEuNzUtOEw5IDE3djZoMnYtNy41NUw4Ljk1IDEzLjRsLjYtM0MxMC44NSAxMiAxMi44IDEzIDE1IDEzdi0yYy0xLjg1IDAtMy40NS0xLTQuMzUtMi40NWwtLjk1LTEuNkM5LjM1IDYuMzUgOC43IDYgOCA2Yy0uMjUgMC0uNS4wNS0uNzUuMTVMMiA4LjNWMTNoMlY5LjY1bDEuNzUtLjc1XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFuc2l0RW50ZXJleGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxOEg2VjhoM3Y0Ljc3TDE1Ljk4IDYgMTggOC4wMyAxMS4xNSAxNUgxNnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJpcE9yaWdpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMkMyIDYuNDggNi40OCAyIDEyIDJzMTAgNC40OCAxMCAxMC00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMnptMTAgNmMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNi02IDIuNjktNiA2IDIuNjkgNiA2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdXJuTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYuODMgMTEgMS41OSAxLjU5TDcgMTRsLTQtNCA0LTQgMS40MSAxLjQxTDYuODMgOUgxNWMxLjEgMCAyIC45IDIgMnY5aC0ydi05SDYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdXJuUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4xNyAxMS0xLjU5IDEuNTlMMTcgMTRsNC00LTQtNC0xLjQxIDEuNDFMMTcuMTcgOUg5Yy0xLjEgMC0yIC45LTIgMnY5aDJ2LTloOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVR1cm5TaGFycExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDYuODMgNC40MSA4LjQxIDMgN2w0LTQgNCA0LTEuNDEgMS40MUw4IDYuODNWMTNoOGMxLjEgMCAyIC45IDIgMnY2aC0ydi02SDhjLTEuMSAwLTItLjktMi0yVjYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdXJuU2hhcnBSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDYuODMgMS41OSAxLjU5TDIxIDdsLTQtNC00IDQgMS40MSAxLjQxTDE2IDYuODNWMTNIOGMtMS4xIDAtMiAuOS0yIDJ2Nmgydi02aDhjMS4xIDAgMi0uOSAyLTJWNi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVR1cm5TbGlnaHRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNjYgNlY0SDZ2NS42NmgyVjcuNDFsNSA1VjIwaDJ2LTcuNThjMC0uNTMtLjIxLTEuMDQtLjU5LTEuNDFsLTUtNWgyLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVyblNsaWdodFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMzQgNlY0SDE4djUuNjZoLTJWNy40MWwtNSA1VjIwSDl2LTcuNThjMC0uNTMuMjEtMS4wNC41OS0xLjQxbDUtNWgtMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVR3b1doZWVsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjE3IDExSDRoLjE3bTkuMjQtNkg5djJoMy41OWwyIDJIMTFsLTQgMi0yLTJIMHYyaDRjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNGwyIDJoM2wzLjQ5LTYuMSAxLjAxIDEuMDFjLS45MS43My0xLjUgMS44NC0xLjUgMy4wOSAwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00LTEuNzktNC00LTRjLS4xOCAwLS4zNi4wMy0uNTMuMDVMMTcuNDEgOUgyMFY2bC0zLjcyIDEuODZMMTMuNDEgNXpNMjAgMTdjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyek00IDE3Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVUdXJuTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDl2MTJoLTJWOWMwLTIuMjEtMS43OS00LTQtNFM4IDYuNzkgOCA5djQuMTdsMS41OS0xLjU5TDExIDEzbC00IDQtNC00IDEuNDEtMS40MUw2IDEzLjE3VjljMC0zLjMxIDIuNjktNiA2LTZzNiAyLjY5IDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVUdXJuUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDl2MTJoMlY5YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDR2NC4xN2wtMS41OS0xLjU5TDEzIDEzbDQgNCA0LTQtMS40MS0xLjQxTDE4IDEzLjE3VjljMC0zLjMxLTIuNjktNi02LTZTNiA1LjY5IDYgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbHVudGVlckFjdGl2aXNtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTNjMy4wOS0yLjgxIDYtNS40NCA2LTcuN0MyMiAzLjQ1IDIwLjU1IDIgMTguNyAyYy0xLjA0IDAtMi4wNS40OS0yLjcgMS4yNUMxNS4zNCAyLjQ5IDE0LjM0IDIgMTMuMyAyIDExLjQ1IDIgMTAgMy40NSAxMCA1LjNjMCAyLjI2IDIuOTEgNC44OSA2IDcuN3ptLTIuNy05Yy40NCAwIC44OS4yMSAxLjE4LjU1TDE2IDYuMzRsMS41Mi0xLjc5Yy4yOS0uMzQuNzQtLjU1IDEuMTgtLjU1Ljc0IDAgMS4zLjU2IDEuMyAxLjMgMCAxLjEyLTIuMDQgMy4xNy00IDQuOTktMS45Ni0xLjgyLTQtMy44OC00LTQuOTkgMC0uNzQuNTYtMS4zIDEuMy0xLjN6TTE5IDE2aC0yYzAtMS4yLS43NS0yLjI4LTEuODctMi43TDguOTcgMTFIMXYxMWg2di0xLjQ0bDcgMS45NCA4LTIuNXYtMWMwLTEuNjYtMS4zNC0zLTMtM3pNMyAyMHYtN2gydjdIM3ptMTAuOTcuNDFMNyAxOC40OFYxM2gxLjYxbDUuODIgMi4xN2MuMzQuMTMuNTcuNDYuNTcuODMgMCAwLTEuOTktLjA1LTIuMy0uMTVsLTIuMzgtLjc5LS42MyAxLjkgMi4zOC43OWMuNTEuMTcgMS4wNC4yNiAxLjU4LjI2SDE5Yy4zOSAwIC43NC4yMy45LjU2bC01LjkzIDEuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXJlaG91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4LjM1VjE5aC0ydi04SDZ2OEg0VjguMzVsOC0zLjIgOCAzLjJ6TTIyIDIxVjdMMTIgMyAyIDd2MTRoNnYtOGg4djhoNnptLTExLTJIOXYyaDJ2LTJ6bTItM2gtMnYyaDJ2LTJ6bTIgM2gtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaW5lQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzdjZjMCAyLjk3IDIuMTYgNS40MyA1IDUuOTFWMTlIOHYyaDh2LTJoLTN2LTQuMDljMi44NC0uNDggNS0yLjk0IDUtNS45MVYzSDZ6bTYgMTBjLTEuODYgMC0zLjQxLTEuMjgtMy44Ni0zaDcuNzJjLS40NSAxLjcyLTIgMy0zLjg2IDN6bTQtNUg4VjVoOHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV3JvbmdMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExdi4yYzAgMi4zNC0xLjk1IDUuNDQtNiA5LjE0LTQuMDUtMy43LTYtNi43OS02LTkuMTRDNiA3LjU3IDguNjUgNSAxMiA1Yy4zNCAwIC42OC4wMyAxIC4wOFYzLjA2Yy0uMzMtLjA0LS42Ni0uMDYtMS0uMDYtNC4yIDAtOCAzLjIyLTggOC4yIDAgMy4zMiAyLjY3IDcuMjUgOCAxMS44IDUuMzMtNC41NSA4LTguNDggOC0xMS44VjExaC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTFcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuNTQgMi44OC0xLjQyLTEuNDJMMTkgMy41OWwtMi4xMi0yLjEzLTEuNDIgMS40MkwxNy41OSA1bC0yLjEzIDIuMTIgMS40MiAxLjQyTDE5IDYuNDFsMi4xMiAyLjEzIDEuNDItMS40MkwyMC40MSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lWm9vbUluTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA5VjNIN3YyLjU5TDMuOTEgMi41IDIuNSAzLjkxIDUuNTkgN0gzdjJoNnptMTIgMFY3aC0yLjU5bDMuMDktMy4wOS0xLjQxLTEuNDFMMTcgNS41OVYzaC0ydjZoNnpNMyAxNXYyaDIuNTlMMi41IDIwLjA5bDEuNDEgMS40MUw3IDE4LjQxVjIxaDJ2LTZIM3ptMTIgMHY2aDJ2LTIuNTlsMy4wOSAzLjA5IDEuNDEtMS40MUwxOC40MSAxN0gyMXYtMmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVpvb21PdXRNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDMgMi4zIDIuMy0yLjg5IDIuODcgMS40MiAxLjQyTDE4LjcgNi43IDIxIDlWM2gtNnpNMyA5bDIuMy0yLjMgMi44NyAyLjg5IDEuNDItMS40Mkw2LjcgNS4zIDkgM0gzdjZ6bTYgMTItMi4zLTIuMyAyLjg5LTIuODctMS40Mi0xLjQyTDUuMyAxNy4zIDMgMTV2Nmg2em0xMi02LTIuMyAyLjMtMi44Ny0yLjg5LTEuNDIgMS40MiAyLjg5IDIuODdMMTUgMjFoNnYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEhvbWVXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTRINXY1SDN2LTYuOTdsNS0zLjU3IDUgMy41N3YxLjA4Yy41Ny0uNTkgMS4yNS0xLjA3IDItMS40MlYxMUw4IDZsLTcgNXYxMGg2di01aDJ2NWgyLjY4Yy0uNDMtLjkxLS42OC0xLjkyLS42OC0zdi00ek0xNyA3aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTMuMTFWM0gxMHYxLjk3bDIgMS40M1Y1aDl2Ni42OGMuNzUuMzYgMS40My44NCAyIDEuNDN6TTIzIDE4YzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1IDIuMjQgNSA1IDUgNS0yLjI0IDUtNXptLTUuNSAzdi0yLjVIMTV2LTFoMi41VjE1aDF2Mi41SDIxdjFoLTIuNVYyMWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwcFNldHRpbmdzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNNyAyMGgxMHYxSDd6TTcgM2gxMHYxSDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjgxIDEyLjc0LS44Mi0uNjN2LS4yMmwuOC0uNjNjLjE2LS4xMi4yLS4zNC4xLS41MWwtLjg1LTEuNDhhLjM5NS4zOTUgMCAwIDAtLjM1LS4yYy0uMDUgMC0uMS4wMS0uMTUuMDNsLS45NS4zOGMtLjA4LS4wNS0uMTEtLjA3LS4xOS0uMTFsLS4xNS0xLjAxYS40MDguNDA4IDAgMCAwLS40LS4zNmgtMS43MWMtLjIgMC0uMzcuMTUtLjQuMzRsLS4xNCAxLjAxYy0uMDMuMDItLjA3LjAzLS4xLjA1bC0uMDkuMDYtLjk1LS4zOGEuNDAxLjQwMSAwIDAgMC0uNS4xN2wtLjg1IDEuNDhjLS4xLjE3LS4wNi4zOS4xLjUxbC44LjYzdi4yM2wtLjguNjNhLjM5LjM5IDAgMCAwLS4xLjUxbC44NSAxLjQ4Yy4wNy4xMy4yMS4yLjM1LjIuMDUgMCAuMS0uMDEuMTUtLjAzbC45NS0uMzdjLjA4LjA1LjEyLjA3LjIuMTFsLjE1IDEuMDFjLjAzLjIuMi4zNC40LjM0aDEuNzFjLjIgMCAuMzctLjE1LjQtLjM0bC4xNS0xLjAxYy4wMy0uMDIuMDctLjAzLjEtLjA1bC4wOS0uMDYuOTUuMzhhLjQwMS40MDEgMCAwIDAgLjUtLjE3bC44NS0xLjQ4YS4zOS4zOSAwIDAgMC0uMS0uNTF6TTE4IDEzLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek0xNyAxOEg3VjZoMTB2MWgyVjNjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNGgtMnYxek03IDNoMTB2MUg3VjN6bTEwIDE4SDd2LTFoMTB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwcHNPdXRhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDhoNFY0SDR2NHptNiAxMmg0di00aC00djR6bS02IDBoNHYtNEg0djR6bTAtNmg0di00SDR2NHptNiAwaDR2LTRoLTR2NHptNiA2aDR2LTRoLTR2NHptMy0yMGMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS41IDhoLTFWN2gxdjF6bTAtMmgtMVYyaDF2NHpNMTYgMTRoNHYtMi4wN2MtLjMzLjA1LS42Ni4wNy0xIC4wNy0xLjA3IDAtMi4wOS0uMjQtMy0uNjhWMTR6TTEwIDR2NGgyLjY4Yy0uNDQtLjkxLS42OC0xLjkzLS42OC0zIDAtLjM0LjAyLS42Ny4wNy0xSDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA4aDRWNEg0djR6bTYgMTJoNHYtNGgtNHY0em0tNiAwaDR2LTRINHY0em0wLTZoNHYtNEg0djR6bTYgMGg0di00aC00djR6bTYtMTB2NGg0VjRoLTR6bS02IDRoNFY0aC00djR6bTYgNmg0di00aC00djR6bTAgNmg0di00aC00djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0JhY2tJb3NOZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy43NyAzLjc3IDE2IDIgNiAxMmwxMCAxMCAxLjc3LTEuNzdMOS41NCAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93QmFja0lvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41MSAzLjg3IDE1LjczIDIuMSA1Ljg0IDEybDkuOSA5LjkgMS43Ny0xLjc3TDkuMzggMTJsOC4xMy04LjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dCYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMUg3LjgzbDUuNTktNS41OUwxMiA0bC04IDggOCA4IDEuNDEtMS40MUw3LjgzIDEzSDIwdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dEb3dud2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAgMTItMS40MS0xLjQxTDEzIDE2LjE3VjRoLTJ2MTIuMTdsLTUuNTgtNS41OUw0IDEybDggOCA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0Ryb3BEb3duQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4cy0zLjU5IDgtOCA4LTgtMy41OS04LTggMy41OS04IDgtOG0wLTJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTMtNC00aDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0Ryb3BEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm03IDEwIDUgNSA1LTVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93RHJvcFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm03IDE0IDUtNSA1IDVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93Rm9yd2FyZElvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4yMyAyMC4yMyA4IDIybDEwLTEwTDggMiA2LjIzIDMuNzcgMTQuNDYgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0ZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDQtMS40MSAxLjQxTDE2LjE3IDExSDR2MmgxMi4xN2wtNS41OCA1LjU5TDEyIDIwbDgtOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDB2MjRIMFYwaDI0elwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDctNSA1IDUgNVY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgMTcgNS01LTUtNXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93VXB3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm00IDEyIDEuNDEgMS40MUwxMSA3LjgzVjIwaDJWNy44M2w1LjU4IDUuNTlMMjAgMTJsLTgtOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3Npc3RhbnREaXJlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDFDNS45IDEgMSA1LjkgMSAxMnM0LjkgMTEgMTEgMTEgMTEtNC45IDExLTExUzE4LjEgMSAxMiAxem0wIDIwYy00Ljk5IDAtOS00LjAxLTktOXM0LjAxLTkgOS05IDkgNC4wMSA5IDktNC4wMSA5LTkgOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNzMgMTEuNDIgMTIuNTQgNC4yYy0uMzYtLjI3LS44LS4yNy0xLjE1IDBMNC4yIDExLjQyYy0uMjcuMzYtLjI3LjggMCAxLjE2bDcuMTkgNy4yMmMuMzYuMjcuOC4yNyAxLjE1IDBsNy4xOS03LjIyYy4zNi0uMzYuMzYtLjg5IDAtMS4xNnpNMTMuNSAxNC41bC0xLjQxLTEuNDFMMTMuMTcgMTJIMTB2M0g4di00YzAtLjYuNC0xIDEtMWg0LjE3bC0xLjA5LTEuMDlMMTMuNSA3LjUgMTcgMTFsLTMuNSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1wYWlnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExdjJoNHYtMmgtNHpNMTYgMTcuNjFjLjk2LjcxIDIuMjEgMS42NSAzLjIgMi4zOS40LS41My44LTEuMDcgMS4yLTEuNi0uOTktLjc0LTIuMjQtMS42OC0zLjItMi40LS40LjU0LS44IDEuMDgtMS4yIDEuNjF6TTIwLjQgNS42Yy0uNC0uNTMtLjgtMS4wNy0xLjItMS42LS45OS43NC0yLjI0IDEuNjgtMy4yIDIuNC40LjUzLjggMS4wNyAxLjIgMS42Ljk2LS43MiAyLjIxLTEuNjUgMy4yLTIuNHpNNCA5Yy0xLjEgMC0yIC45LTIgMnYyYzAgMS4xLjkgMiAyIDJoMXY0aDJ2LTRoMWw1IDNWNkw4IDlINHptNS4wMyAxLjcxTDExIDkuNTN2NC45NGwtMS45Ny0xLjE4LS40OC0uMjlINHYtMmg0LjU1bC40OC0uMjl6TTE1LjUgMTJjMC0xLjMzLS41OC0yLjUzLTEuNS0zLjM1djYuNjljLjkyLS44MSAxLjUtMi4wMSAxLjUtMy4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbmNlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMy41OS0xM0wxMiAxMC41OSA4LjQxIDcgNyA4LjQxIDEwLjU5IDEyIDcgMTUuNTkgOC40MSAxNyAxMiAxMy40MSAxNS41OSAxNyAxNyAxNS41OSAxMy40MSAxMiAxNyA4LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTYuMTcgNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxTDkgMTYuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGV2cm9uTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDEgNy40MSAxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMmw0LjU4LTQuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGV2cm9uUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDYgOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3NlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2LjQxIDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTIgMTkgNi40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvdWJsZUFycm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSA1SDExbDUgNy01IDdoNC41bDUtN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDVINGw1IDctNSA3aDQuNWw1LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgNS0xLjQxIDEuNDFMMTguMTcgMTFIMnYyaDE2LjE3bC00LjU5IDQuNTlMMTUgMTlsNy03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4cGFuZENpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4wOCA5LjU5IDEyIDEyLjY3IDguOTIgOS41OSA3LjUgMTFsNC41IDQuNSA0LjUtNC41LTEuNDItMS40MXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBhbmRMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA4LTYgNiAxLjQxIDEuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0bC02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBhbmRNb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTkgOC41OSAxMiAxMy4xNyA3LjQxIDguNTkgNiAxMGw2IDYgNi02LTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpcnN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMHYyNEgwVjBoMjR6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNDEgMTYuNTkgMTMuODIgMTJsNC41OS00LjU5TDE3IDZsLTYgNiA2IDYgMS40MS0xLjQxek02IDZoMnYxMkg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGdWxsc2NyZWVuRXhpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNmgzdjNoMnYtNUg1djJ6bTMtOEg1djJoNVY1SDh2M3ptNiAxMWgydi0zaDN2LTJoLTV2NXptMi0xMVY1aC0ydjVoNVY4aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRnVsbHNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNEg1djVoNXYtMkg3di0zem0tMi00aDJWN2gzVjVINXY1em0xMiA3aC0zdjJoNXYtNWgtMnYzek0xNCA1djJoM3YzaDJWNWgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvbWVXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxMXYxMGg2di01aDJ2NWg2VjExTDggNmwtNyA1em0xMiA4aC0ydi01SDV2NUgzdi02Ljk3bDUtMy41NyA1IDMuNTdWMTl6TTE3IDdoMnYyaC0yek0xNyAxMWgydjJoLTJ6TTE3IDE1aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgM3YxLjk3bDIgMS40M1Y1aDl2MTRoLTR2Mmg2VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYXN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjU5IDcuNDEgMTAuMTggMTJsLTQuNTkgNC41OUw3IDE4bDYtNi02LTYtMS40MSAxLjQxek0xNiA2aDJ2MTJoLTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxlZ2VuZFRvZ2dsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1SDR2LTJoMTZ2MnptMCAySDR2MmgxNnYtMnptLTUtNiA1LTMuNTVWNWwtNSAzLjU1TDEwIDUgNCA4LjY2VjExbDUuOTItMy42MUwxNSAxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hcHNIb21lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgN2gydjJoLTJ6TTE3IDExaDJ2MmgtMnpNMTcgMTVoMnYyaC0yek0xIDExdjEwaDZ2LTVoMnY1aDZWMTFMOCA2bC03IDV6bTEyIDhoLTJ2LTVINXY1SDN2LTdsNS0zLjUgNSAzLjV2N3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgM3YxLjk3bDIgMS40M1Y1aDl2MTRoLTR2Mmg2VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZW51T3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOGgxM3YtMkgzdjJ6bTAtNWgxMHYtMkgzdjJ6bTAtN3YyaDEzVjZIM3ptMTggOS41OUwxNy40MiAxMiAyMSA4LjQxIDE5LjU5IDdsLTUgNSA1IDVMMjEgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZW51IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9yZUhvcml6IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTIgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9yZVZlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9ydGhFYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA1djJoNi41OUw0IDE4LjU5IDUuNDEgMjAgMTcgOC40MVYxNWgyVjVIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vcnRoV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTVoMlY4LjQxTDE4LjU5IDIwIDIwIDE4LjU5IDguNDEgN0gxNVY1SDV2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3J0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUgOSAxLjQxIDEuNDFMMTEgNS44M1YyMmgyVjUuODNsNC41OSA0LjU5TDE5IDlsLTctNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPZmZsaW5lU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNUg0djE2YzAgMS4xLjkgMiAyIDJoMTB2LTJINlY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxaC04Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNmgtOHYtMWg4djF6bTAtM2gtOFY2aDh2OHptMC0xMGgtOFYzaDh2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAxMC4yNWgxLjYzbC0uNjkuNjlMMTQuNSAxMiAxNyA5LjUgMTQuNSA3bC0xLjA2IDEuMDYuNjkuNjlIMTJjLS41NSAwLTEgLjQ1LTEgMVYxMmgxLjV2LTEuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXltZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE0VjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yem0tMiAwSDNWNmgxNHY4em0tNy03Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMTMgMHYxMWMwIDEuMS0uOSAyLTIgMkg0di0yaDE3VjdoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpdm90VGFibGVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWMwLTEuMS0uOS0yLTItMmgtOXY1aDExVjV6TTMgMTljMCAxLjEuOSAyIDIgMmgzVjEwSDN2OXpNMyA1djNoNVYzSDVjLTEuMSAwLTIgLjktMiAyem0xNSAzLjk5TDE0IDEzbDEuNDEgMS40MSAxLjU5LTEuNlYxNWMwIDEuMS0uOSAyLTIgMmgtMi4xN2wxLjU5LTEuNTlMMTMgMTRsLTQgNCA0IDQgMS40MS0xLjQxTDEyLjgzIDE5SDE1YzIuMjEgMCA0LTEuNzkgNC00di0yLjE4bDEuNTkgMS42TDIyIDEzbC00LTQuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWZyZXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42NSA2LjM1QTcuOTU4IDcuOTU4IDAgMCAwIDEyIDRjLTQuNDIgMC03Ljk5IDMuNTgtNy45OSA4czMuNTcgOCA3Ljk5IDhjMy43MyAwIDYuODQtMi41NSA3LjczLTZoLTIuMDhBNS45OSA1Ljk5IDAgMCAxIDEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvdXRoRWFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTJ2Ni41OUw1LjQxIDQgNCA1LjQxIDE1LjU5IDE3SDl2MmgxMFY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU291dGhXZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTl2LTJIOC40MUwyMCA1LjQxIDE4LjU5IDQgNyAxNS41OVY5SDV2MTBoMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3V0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDE1LTEuNDEtMS40MUwxMyAxOC4xN1YyaC0ydjE2LjE3bC00LjU5LTQuNTlMNSAxNWw3IDcgNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3ViZGlyZWN0b3J5QXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSA5IDEuNDIgMS40Mkw4LjgzIDE0SDE4VjRoMnYxMkg4LjgzbDMuNTkgMy41OEwxMSAyMWwtNi02IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YmRpcmVjdG9yeUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHYyNHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxNS02IDYtMS40Mi0xLjQyTDE1LjE3IDE2SDRWNGgydjEwaDkuMTdsLTMuNTktMy41OEwxMyA5bDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXRjaExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgOC42MnY2Ljc2TDUuMTIgMTIgOC41IDguNjJNMTAgNWwtNyA3IDcgN1Y1em00IDB2MTRsNy03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXRjaFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTUuMzhWOC42MkwxOC44OCAxMmwtMy4zOCAzLjM4TTE0IDE5bDctNy03LTd2MTR6bS00IDBWNWwtNyA3IDcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVuZm9sZExlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDB2MjRIMFYwaDI0elwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgMTguNTkgOC44MyAyMCAxMiAxNi44MyAxNS4xNyAyMGwxLjQxLTEuNDFMMTIgMTRsLTQuNTkgNC41OXptOS4xOC0xMy4xOEwxNS4xNyA0IDEyIDcuMTcgOC44MyA0IDcuNDEgNS40MSAxMiAxMGw0LjU5LTQuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVbmZvbGRNb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1LjgzIDE1LjE3IDlsMS40MS0xLjQxTDEyIDMgNy40MSA3LjU5IDguODMgOSAxMiA1Ljgzem0wIDEyLjM0TDguODMgMTVsLTEuNDEgMS40MUwxMiAyMWw0LjU5LTQuNTlMMTUuMTcgMTUgMTIgMTguMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXRlcmZhbGxDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNGgzdjE2aC0zVjR6TTMgMTNoM3Y3SDN2LTd6bTExLTloM3YzaC0zVjR6bS00IDFoM3Y0aC0zVjV6bS0zIDVoM3Y0SDd2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOSAxOSAxLjQxLTEuNDFMNS44MyAxM0gyMnYtMkg1LjgzbDQuNTktNC41OUw5IDVsLTcgNyA3IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2NvdW50VHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExVjNoLTd2M0g5VjNIMnY4aDdWOGgydjEwaDR2M2g3di04aC03djNoLTJWOGgydjNoN3pNNyA5SDRWNWgzdjR6bTEwIDZoM3Y0aC0zdi00em0wLTEwaDN2NGgtM1Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE2YzAgMy44NyAzLjEzIDcgNyA3czctMy4xMyA3LTd2LTRINXY0ek0xNi4xMiA0LjM3bDIuMS0yLjEtLjgyLS44My0yLjMgMi4zMUMxNC4xNiAzLjI4IDEzLjEyIDMgMTIgM3MtMi4xNi4yOC0zLjA5Ljc1TDYuNiAxLjQ0bC0uODIuODMgMi4xIDIuMUM2LjE0IDUuNjQgNSA3LjY4IDUgMTB2MWgxNHYtMWMwLTIuMzItMS4xNC00LjM2LTIuODgtNS42M3pNOSA5Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTYgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRGbGF0QW5nbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDYuNWMuMzEgMCAuNy4xNS45LjU2LjI0LjUuMDIgMS4xLS40NyAxLjM0YS45NzkuOTc5IDAgMCAxLTEuMzItLjQ2Ljk4Ni45ODYgMCAwIDEgLjQ2LTEuMzRjLjE0LS4wNi4yOC0uMS40My0uMW02LjQ3IDIuMTEgNi42OSAyLjQxYy41Mi4xOS45My41NiAxLjE1IDEuMDUuMjIuNDguMjUgMS4wMy4wNiAxLjUzbC0uMDEuMDItOC41OS0zLjExLjctMS45TTEwIDE1LjE5bDQgMS40NFYxN2gtNHYtMS44MU02IDQuNWMtLjQ0IDAtLjg4LjEtMS4zLjNhMi45OSAyLjk5IDAgMCAwLTEuNCA0IDIuOTg4IDIuOTg4IDAgMCAwIDQgMS40IDMuMDEgMy4wMSAwIDAgMCAxLjQxLTRBMy4wMTMgMy4wMTMgMCAwIDAgNiA0LjV6bTUuMjggMS41NUw5LjIgMTEuNzFsMTIuMzYgNC40Ny42OS0xLjg5YTQgNCAwIDAgMC0yLjQxLTUuMTVsLTguNTYtMy4wOXptLTkuMDkgNC4yLS42OSAxLjg5TDggMTQuNDhWMTloOHYtMS42M0wyMC41MiAxOWwuNjktMS44OS0xOS4wMi02Ljg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRGbGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEzYTMgMyAwIDAgMCAyLjEtNS4xNEM2LjUxIDcuMjkgNS43NSA3IDUgN2EzIDMgMCAwIDAtMi4xIDUuMTRjLjU5LjU3IDEuMzUuODYgMi4xLjg2em0tLjcxLTMuN2ExIDEgMCAwIDEgMS40MS0uMDJjLjQuMzkuNCAxLjAxLjAyIDEuNDEtLjIuMi0uNDUuMzEtLjcyLjMxLS4yNiAwLS41MS0uMS0uNy0uMjgtLjQtLjQtLjQtMS4wMi0uMDEtMS40MnpNMTggN0g5djZoMTN2LTJjMC0yLjIxLTEuNzktNC00LTR6bS03IDRWOWg3YzEuMSAwIDIgLjkgMiAyaC05em0tOSA1aDZ2Mmg4di0yaDZ2LTJIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTZWF0SW5kaXZpZHVhbFN1aXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE0YzEuNjYgMCAzLTEuMzQgMy0zUzguNjYgOCA3IDhzLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTEyLTNoLTh2OEgzVjdIMXYxMGgyMnYtNmMwLTIuMjEtMS43OS00LTQtNHptMiA4aC04VjloNmMxLjEgMCAyIC45IDIgMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRMZWdyb29tRXh0cmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTJWM0gydjljMCAyLjc2IDIuMjQgNSA1IDVoNnYtMkg3Yy0xLjY2IDAtMy0xLjM0LTMtM3ptMTguODMgNS4yNGMtLjM4LS43Mi0xLjI5LS45Ny0yLjAzLS42M2wtMS4wOS41LTMuNDEtNi45OEEyLjAxOSAyLjAxOSAwIDAgMCAxNC41MSA5SDExVjNINXY4YzAgMS42NiAxLjM0IDMgMyAzaDdsMy40MSA3IDMuNzItMS43Yy43Ny0uMzYgMS4xLTEuMy43LTIuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJsaW5lU2VhdExlZ3Jvb21Ob3JtYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTJWM0gzdjljMCAyLjc2IDIuMjQgNSA1IDVoNnYtMkg4Yy0xLjY2IDAtMy0xLjM0LTMtM3ptMTUuNSA2SDE5di03YzAtMS4xLS45LTItMi0yaC01VjNINnY4YzAgMS42NSAxLjM1IDMgMyAzaDd2N2g0LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJsaW5lU2VhdExlZ3Jvb21SZWR1Y2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45NyAxOS4yYy4xOC45Ni0uNTUgMS44LTEuNDcgMS44SDE0di0zbDEtNEg5Yy0xLjY1IDAtMy0xLjM1LTMtM1YzaDZ2Nmg1YzEuMSAwIDIgLjkgMiAybC0yIDdoMS40NGMuNzMgMCAxLjM5LjQ5IDEuNTMgMS4yek01IDEyVjNIM3Y5YzAgMi43NiAyLjI0IDUgNSA1aDR2LTJIOGMtMS42NiAwLTMtMS4zNC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJsaW5lU2VhdFJlY2xpbmVFeHRyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4zNSA1LjY0Yy0uOS0uNjQtMS4xMi0xLjg4LS40OS0yLjc5LjYzLS45IDEuODgtMS4xMiAyLjc5LS40OS45LjY0IDEuMTIgMS44OC40OSAyLjc5LS42NC45LTEuODggMS4xMi0yLjc5LjQ5ek0xNiAxOUg4LjkzYy0xLjQ4IDAtMi43NC0xLjA4LTIuOTYtMi41NEw0IDdIMmwxLjk5IDkuNzZBNS4wMSA1LjAxIDAgMCAwIDguOTQgMjFIMTZ2LTJ6bS4yMy00aC00Ljg4bC0xLjAzLTQuMWMxLjU4Ljg5IDMuMjggMS41NCA1LjE1IDEuMjJWOS45OWMtMS42My4zMS0zLjQ0LS4yNy00LjY5LTEuMjVMOS4xNCA3LjQ3Yy0uMjMtLjE4LS40OS0uMy0uNzYtLjM4YTIuMjEgMi4yMSAwIDAgMC0uOTktLjA2aC0uMDJhMi4yNjggMi4yNjggMCAwIDAtMS44NCAyLjYxbDEuMzUgNS45MkEzLjAwOCAzLjAwOCAwIDAgMCA5LjgzIDE4aDYuODVsMy44MiAzIDEuNS0xLjUtNS43Ny00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJsaW5lU2VhdFJlY2xpbmVOb3JtYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNTkgNS40MWMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNzMi4wNS0uNzggMi44MyAwIC43OCAyLjA1IDAgMi44M2MtLjc5Ljc5LTIuMDUuNzktMi44MyAwek02IDE2VjdINHY5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIOWMtMS42NiAwLTMtMS4zNC0zLTN6bTE0IDQuMDdMMTQuOTMgMTVIMTEuNXYtMy42OGMxLjQgMS4xNSAzLjYgMi4xNiA1LjUgMi4xNnYtMi4xNmMtMS42Ni4wMi0zLjYxLS44Ny00LjY3LTIuMDRsLTEuNC0xLjU1Yy0uMTktLjIxLS40My0uMzgtLjY5LS41LS4yOS0uMTQtLjYyLS4yMy0uOTYtLjIzaC0uMDNDOC4wMSA3IDcgOC4wMSA3IDkuMjVWMTVjMCAxLjY2IDEuMzQgMyAzIDNoNS4wN2wzLjUgMy41TDIwIDIwLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmx1ZXRvb3RoQXVkaW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjI0IDEyLjAxIDIuMzIgMi4zMmMuMjgtLjcyLjQ0LTEuNTEuNDQtMi4zM3MtLjE2LTEuNTktLjQzLTIuMzFsLTIuMzMgMi4zMnptNS4yOS01LjMtMS4yNiAxLjI2Yy42MyAxLjIxLjk4IDIuNTcuOTggNC4wMnMtLjM2IDIuODItLjk4IDQuMDJsMS4yIDEuMmE5LjkzNiA5LjkzNiAwIDAgMCAxLjU0LTUuMzFjLS4wMS0xLjg5LS41NS0zLjY3LTEuNDgtNS4xOXptLTMuODIgMUwxMCAySDl2Ny41OUw0LjQxIDUgMyA2LjQxIDguNTkgMTIgMyAxNy41OSA0LjQxIDE5IDkgMTQuNDFWMjJoMWw1LjcxLTUuNzEtNC4zLTQuMjkgNC4zLTQuMjl6TTExIDUuODNsMS44OCAxLjg4TDExIDkuNTlWNS44M3ptMS44OCAxMC40NkwxMSAxOC4xN3YtMy43NmwxLjg4IDEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb25maXJtYXRpb25OdW1iZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMFY2YTIgMiAwIDAgMC0yLTJINGMtMS4xIDAtMS45OS44OS0xLjk5IDJ2NGMxLjEgMCAxLjk5LjkgMS45OSAycy0uODkgMi0yIDJ2NGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi00Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMnptLTItMS40NmMtMS4xOS42OS0yIDEuOTktMiAzLjQ2cy44MSAyLjc3IDIgMy40NlYxOEg0di0yLjU0YzEuMTktLjY5IDItMS45OSAyLTMuNDYgMC0xLjQ4LS44LTIuNzctMS45OS0zLjQ2TDQgNmgxNnYyLjU0ek0xMSAxNWgydjJoLTJ6bTAtNGgydjJoLTJ6bTAtNGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNzEgMTEuMjktOS05YS45OTYuOTk2IDAgMCAwLTEuNDEgMEw4LjIxIDUuMzhsMS40MSAxLjQxTDEyIDQuNDIgMTkuNTggMTJsLTIuMzggMi4zOCAxLjQxIDEuNDEgMy4wOS0zLjA5Yy40LS4zNy40LTEgLjAxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDcuNXYyLjY3bDIuMTcgMi4xN0wxNi41IDExek0xLjM5IDQuMjJsMy45OSAzLjk5LTMuMDkgMy4wOWEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsOSA5Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwzLjA5LTMuMDkgMy45OSAzLjk5IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyem02LjY0IDYuNjNjLS4wMS4wNS0uMDQuMS0uMDQuMTV2NGgydi0yLjE4bDQuMzggNC4zOEwxMiAxOS41OCA0LjQyIDEyIDYuOCA5LjYybDEuMjMgMS4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpc2NGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aDJ2NWgtMnpNMTAgNGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04LTMuNTgtOC04LTh6bTAgMTRjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2em0xMC00aDJ2MmgtMnptLTEwLTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9EaXN0dXJiQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6TTQgMTJjMC00LjQgMy42LTggOC04IDEuOCAwIDMuNS42IDQuOSAxLjdMNS43IDE2LjlDNC42IDE1LjUgNCAxMy44IDQgMTJ6bTggOGMtMS44IDAtMy41LS42LTQuOS0xLjdMMTguMyA3LjFDMTkuNCA4LjUgMjAgMTAuMiAyMCAxMmMwIDQuNC0zLjYgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb0Rpc3R1cmJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDggMCAxLjQxLS4zNyAyLjczLTEuMDEgMy44OGwxLjQ2IDEuNDZBOS45NiA5Ljk2IDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwYTkuOSA5LjkgMCAwIDAtNS4zMyAxLjU1bDEuNDYgMS40NkE3Ljg4MyA3Ljg4MyAwIDAgMSAxMiA0em01IDdoLTIuODhsMiAySDE3ek0yLjQxIDIuMTMgMSAzLjU0bDIuNzggMi43OEE5LjkyIDkuOTIgMCAwIDAgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAyLjExIDAgNC4wNy0uNjYgNS42OC0xLjc4TDIwLjQ2IDIzbDEuNDEtMS40MUwyLjQxIDIuMTN6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNTYuNDUtMyAxLjIzLTQuMjNMOC40NiAxMUg3djJoMy40Nmw1Ljc3IDUuNzdBNy44NDYgNy44NDYgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb0Rpc3R1cmJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bS01LTloMTB2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9EaXN0dXJiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvTm90RGlzdHVyYkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyek00IDEyYzAtNC40IDMuNi04IDgtOCAxLjggMCAzLjUuNiA0LjkgMS43TDUuNyAxNi45QzQuNiAxNS41IDQgMTMuOCA0IDEyem04IDhjLTEuOCAwLTMuNS0uNi00LjktMS43TDE4LjMgNy4xQzE5LjQgOC41IDIwIDEwLjIgMjAgMTJjMCA0LjQtMy42IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9Ob3REaXN0dXJiT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy45NCA1LjEyQzkuMTQgNC40MSAxMC41MiA0IDEyIDRjNC40MSAwIDggMy41OSA4IDggMCAxLjQ4LS40MSAyLjg2LTEuMTIgNC4wNmwxLjQ2IDEuNDZBOS45NjcgOS45NjcgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMi4wNCAwLTMuOTMuNjEtNS41MSAxLjY2bDEuNDUgMS40NnpNMi44MSAyLjgxIDEuMzkgNC4yMmwyLjI3IDIuMjdBOS45MSA5LjkxIDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4wNCAwIDMuOTMtLjYxIDUuNTEtMS42NmwyLjI3IDIuMjcgMS40MS0xLjQxTDIuODEgMi44MXpNMTIgMjBjLTQuNDEgMC04LTMuNTktOC04IDAtMS40OC40MS0yLjg2IDEuMTItNC4wNkw4LjE3IDExSDd2MmgzLjE3bDUuODggNS44OEE3Ljg2OSA3Ljg2OSAwIDAgMSAxMiAyMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuODMgMTEgMiAySDE3di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9Ob3REaXN0dXJiT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDExdjJoMTB2LTJIN3ptNS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvTm90RGlzdHVyYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04IDAtMS44NS42My0zLjU1IDEuNjktNC45TDE2LjkgMTguMzFBNy45MDIgNy45MDIgMCAwIDEgMTIgMjB6bTYuMzEtMy4xTDcuMSA1LjY5QTcuOTAyIDcuOTAyIDAgMCAxIDEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjg1LS42MyAzLjU1LTEuNjkgNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJpdmVFdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDUuMDFDMTguNzIgNC40MiAxOC4xNiA0IDE3LjUgNGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTF2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgNmgxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTE5IDE2SDV2LTQuNjZsLjEyLS4zNGgxMy43N2wuMTEuMzRWMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjEzLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW5oYW5jZWRFbmNyeXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6TTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xIDEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xdjJIOC45VjZ6TTE4IDIwSDZWMTBoMTJ2MTB6bS01LTloLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV2ZW50QXZhaWxhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjloMTR2MTB6TTUgN1Y1aDE0djJINXptNS41NiAxMC40NiA1LjkzLTUuOTMtMS4wNi0xLjA2LTQuODcgNC44Ny0yLjExLTIuMTEtMS4wNiAxLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXZlbnRCdXN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjloMTR2MTB6TTUgN1Y1aDE0djJINXptMy4yMyA5LjQxIDEuMDYgMS4wNiAyLjQ0LTIuNDQgMi40NCAyLjQ0IDEuMDYtMS4wNi0yLjQ0LTIuNDQgMi40NC0yLjQ0LTEuMDYtMS4wNi0yLjQ0IDIuNDQtMi40NC0yLjQ0LTEuMDYgMS4wNiAyLjQ0IDIuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdmVudE5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOWgxNHYxMHpNNSA3VjVoMTR2Mkg1em0yIDRoMTB2Mkg3em0wIDRoN3YySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJTcGVjaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHptLTYuOTItMy45NkwxMi4zOSAxNyAxNSAxNS40NyAxNy42MSAxN2wtLjY5LTIuOTYgMi4zLTEuOTktMy4wMy0uMjZMMTUgOWwtMS4xOSAyLjc5LTMuMDMuMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbWFnZXNlYXJjaFJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDdWM2MwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjFINGMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDh2M2gtMWMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTZjMC0uNTUtLjQ1LTEtMS0xaC0xdi0zYzAtMS4xLS45LTItMi0ySDRWNmgydjFjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xek04IDRoMTB2Mkg4VjR6bTYgMTdoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGl2ZVR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEwdjhsNy00em0xMi00aC03LjU4bDMuMjktMy4yOUwxNiAybC00IDRoLS4wM2wtNC00LS42OS43MUwxMC41NiA2SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjhoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN0w0IDE3LjE3VjRoMTZ2MTJ6bS01LjUtOEwxMSAxMi41MSA4LjUgOS41IDUgMTRoMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDdjLS42OSAwLTEuMjMuMzUtMS41OS44OEwwIDEybDUuNDEgOC4xMWMuMzYuNTMuOTcuODkgMS42Ni44OUgyMmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDcuMDdMMi40IDEybDQuNjYtN0gyMnYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV0d29ya0NoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS45IDVjLS4xNyAwLS4zMi4wOS0uNDEuMjNsLS4wNy4xNS01LjE4IDExLjY1Yy0uMTYuMjktLjI2LjYxLS4yNi45NiAwIDEuMTEuOSAyLjAxIDIuMDEgMi4wMS45NiAwIDEuNzctLjY4IDEuOTYtMS41OWwuMDEtLjAzTDE2LjQgNS41YzAtLjI4LS4yMi0uNS0uNS0uNXpNMSA5bDIgMmMyLjg4LTIuODggNi43OS00LjA4IDEwLjUzLTMuNjJsMS4xOS0yLjY4QzkuODkgMy44NCA0Ljc0IDUuMjcgMSA5em0yMCAyIDItMmExNS4zNjcgMTUuMzY3IDAgMCAwLTUuNTktMy41N2wtLjUzIDIuODJjMS41LjYyIDIuOSAxLjUzIDQuMTIgMi43NXptLTQgNCAyLTJjLS44LS44LTEuNy0xLjQyLTIuNjYtMS44OWwtLjU1IDIuOTJjLjQyLjI3LjgzLjU5IDEuMjEuOTd6TTUgMTNsMiAyYTcuMSA3LjEgMCAwIDEgNC4wMy0ybDEuMjgtMi44OGMtMi42My0uMDgtNS4zLjg3LTcuMzEgMi44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtMb2NrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0uNWEyLjUgMi41IDAgMCAwLTUgMHYuNWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoNWMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0zdi0uNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXYuNXpNMTggNS44M3Y1LjQzYy40Ny0uMTYuOTctLjI2IDEuNS0uMjYuMTcgMCAuMzMuMDMuNS4wNVYxTDEgMjBoMTN2LTJINS44M0wxOCA1LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9FbmNyeXB0aW9uR21haWxlcnJvcnJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC45IDZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFzMy4xIDEuMzkgMy4xIDMuMXYyaC00LjY2bDIgMkgxOHY1LjU2bDIgMlYxMGMwLTEuMS0uOS0yLTItMmgtMVY2YzAtMi43Ni0yLjI0LTUtNS01LTIuMzIgMC00LjI2IDEuNTktNC44MiAzLjc0TDguOSA2LjQ2VjZ6TTQuNDEgNC44MSAzIDYuMjJsMi4wNCAyLjA0QzQuNDIgOC42IDQgOS4yNSA0IDEwdjEwYzAgMS4xLjkgMiAyIDJoMTIuNzhsMSAxIDEuNDEtMS40MUw0LjQxIDQuODF6TTYgMjBWMTBoLjc4bDEwIDEwSDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb0VuY3J5cHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2MmgtNC42NmwyIDJIMTh2NS41NmwyIDJWMTBjMC0xLjEtLjktMi0yLTJoLTFWNmMwLTIuNzYtMi4yNC01LTUtNS0yLjMyIDAtNC4yNiAxLjU5LTQuODIgMy43NEw4LjkgNi40NlY2ek00LjQxIDQuODEgMyA2LjIybDIuMDQgMi4wNEM0LjQyIDguNiA0IDkuMjUgNCAxMHYxMGMwIDEuMS45IDIgMiAyaDEyLjc4bDEgMSAxLjQxLTEuNDFMNC40MSA0Ljgxek02IDIwVjEwaC43OGwxMCAxMEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT25kZW1hbmRWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA3djhsNy00em0xMi00SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNXYyaDh2LTJoNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNWgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbmFsVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lQmx1ZXRvb3RoU3BlYWtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjEtLjAzLS4yMS0uMDUtLjMxLS4wNS0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMDQ1IDE1LjA0NSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMjFhLjk2Ljk2IDAgMCAwIC4yNS0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek01LjAzIDVoMS41Yy4wNy44OC4yMiAxLjc1LjQ1IDIuNThsLTEuMiAxLjIxYy0uNC0xLjIxLS42Ni0yLjQ3LS43NS0zLjc5ek0xOSAxOC45N2MtMS4zMi0uMDktMi42LS4zNS0zLjgtLjc2bDEuMi0xLjJjLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNTF6TTE0LjcxIDkuNSAxNyA3LjIxVjExaC41bDIuODUtMi44NUwxOC4yMSA2bDIuMTUtMi4xNUwxNy41IDFIMTd2My43OUwxNC43MSAyLjVsLS43MS43MUwxNi43OSA2IDE0IDguNzlsLjcxLjcxek0xOCAyLjkxbC45NC45NC0uOTQuOTRWMi45MXptMCA0LjMuOTQuOTQtLjk0Ljk0VjcuMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZUNhbGxiYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS41MWMtMS4yNCAwLTIuNDUtLjItMy41Ny0uNTdhLjg0Ljg0IDAgMCAwLS4zMS0uMDVjLS4yNiAwLS41MS4xLS43MS4yOWwtMi4yIDIuMmExNS4xNDkgMTUuMTQ5IDAgMCAxLTYuNTktNi41OWwyLjItMi4yYy4yOC0uMjguMzYtLjY3LjI1LTEuMDJBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNDljMC0uNTUtLjQ1LTEtMS0xek01LjAzIDVoMS41YTEzIDEzIDAgMCAwIC40NiAyLjU5bC0xLjIgMS4yYy0uNDEtMS4yLS42Ny0yLjQ3LS43Ni0zLjc5ek0xOSAxOC45N2MtMS4zMi0uMDktMi41OS0uMzUtMy44LS43NWwxLjE5LTEuMTljLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNDl6TTE4IDloLTIuNTlsNS4wMi01LjAyLTEuNDEtMS40MUwxNCA3LjU5VjVoLTJ2Nmg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVGb3J3YXJkZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3LS4xLS4wMy0uMjEtLjA1LS4zMS0uMDUtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NSAyLjU4bC0xLjIgMS4yMWMtLjQtMS4yMS0uNjYtMi40Ny0uNzUtMy43OXpNMTkgMTguOTdjLTEuMzItLjA5LTIuNi0uMzUtMy44LS43NmwxLjItMS4yYy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjUxek0xOCAxMWw1LTUtNS01djNoLTR2NGg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVJblRhbGsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEyaDJjMC0yLjc2LTIuMjQtNS01LTV2MmMxLjY2IDAgMyAxLjM0IDMgM3ptNCAwaDJhOSA5IDAgMCAwLTktOXYyYzMuODcgMCA3IDMuMTMgNyA3em0xIDMuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjEtLjAzLS4yMS0uMDUtLjMxLS4wNS0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMDQ1IDE1LjA0NSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMjFhLjk2Ljk2IDAgMCAwIC4yNS0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek01LjAzIDVoMS41Yy4wNy44OC4yMiAxLjc1LjQ1IDIuNThsLTEuMiAxLjIxYy0uNC0xLjIxLS42Ni0yLjQ3LS43NS0zLjc5ek0xOSAxOC45N2MtMS4zMi0uMDktMi42LS4zNS0zLjgtLjc2bDEuMi0xLjJjLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZUxvY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVWNGMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWgtMXY1aDZWNWgtMXptLTEgMGgtMlY0YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4yIDE0Ljg3LTMuNjctLjczYy0uNS0uMS0uODMuMi0uOS4yN2wtMi41MiAyLjVjLTIuNS0xLjQzLTQuNTctMy41LTYtNmwyLjUtMi41MmMuMjMtLjI0LjMzLS41Ny4yNy0uOUw5LjEzIDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhINGMtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjA1IDUuNiAyLjQzIDcuOTcgMS41OCAyLjczIDMuODUgNC45OSA2LjU3IDYuNTcgMi4zNyAxLjM3IDUuMDggMi4yNiA3Ljk3IDIuNDMuNTUuMDMgMS4wMy0uNDMgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4ek01LjEgNWgyLjIzbC40NyAyLjM1TDYuMTcgOWMtLjU0LTEuMy0uOS0yLjYzLTEuMDctNHpNMTkgMTguOWMtMS4zNy0uMTgtMi43LS41My00LTEuMDdsMS42NS0xLjYzIDIuMzUuNDd2Mi4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lTWlzc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMy43MSAxNi42N0MyMC42NiAxMy43OCAxNi41NCAxMiAxMiAxMlMzLjM0IDEzLjc4LjI5IDE2LjY3Yy0uMTguMTgtLjI5LjQzLS4yOS43MSAwIC4yOC4xMS41My4yOS43MWwyLjQ4IDIuNDhjLjE4LjE4LjQzLjI5LjcxLjI5LjI3IDAgLjUyLS4xMS43LS4yOC43OS0uNzQgMS42OS0xLjM2IDIuNjYtMS44NS4zMy0uMTYuNTYtLjUuNTYtLjl2LTMuMWMxLjQ1LS40OCAzLS43MyA0LjYtLjczczMuMTUuMjUgNC42LjcydjMuMWMwIC4zOS4yMy43NC41Ni45Ljk4LjQ5IDEuODcgMS4xMiAyLjY3IDEuODUuMTguMTguNDMuMjguNy4yOC4yOCAwIC41My0uMTEuNzEtLjI5bDIuNDgtMi40OGMuMTgtLjE4LjI5LS40My4yOS0uNzEgMC0uMjgtLjEyLS41Mi0uMy0uN3ptLTE4LjMxLjU2Yy0uNjYuMzctMS4yOS44LTEuODcgMS4yN2wtMS4wNy0xLjA3Yy45MS0uNzUgMS45LTEuMzkgMi45NS0xLjl2MS43em0xNS4wOCAxLjI2Yy0uNi0uNDgtMS4yMi0uOS0xLjg4LTEuMjd2LTEuN2MxLjA1LjUxIDIuMDMgMS4xNSAyLjk1IDEuOWwtMS4wNyAxLjA3ek03IDYuNDNsNC45NCA0Ljk0IDcuMDctNy4wNy0xLjQxLTEuNDItNS42NiA1LjY2TDguNCA1SDExVjNINXY2aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZVBhdXNlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41NCA1Yy4wNi44OC4yMSAxLjc1LjQ0IDIuNThsLTEuMiAxLjIxYy0uNC0xLjIxLS42Ni0yLjQ3LS43NS0zLjc5aDEuNTFtOS44NiAxMi4wMWMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS41Yy0xLjMyLS4wOS0yLjYtLjM1LTMuOC0uNzZsMS4yLTEuMTlNNy41IDNINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMS0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMS0uMDMtLjIxLS4wNS0uMzEtLjA1LS4yNiAwLS41MS4xLS43MS4yOWwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xek0xNSAzaDJ2N2gtMnptNCAwaDJ2N2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvd2VyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzSDh2MS44OGwyIDJ6bTYgNnYzLjg4bDEuOCAxLjguMi0uMlY5YzAtMS4xLS45LTItMi0yVjNoLTJ2NGgtMy44OGwyIDJIMTZ6TTQuMTIgMy44NCAyLjcxIDUuMjUgNiA4LjU0djUuOTZMOS41IDE4djNoNXYtM2wuNDgtLjQ4IDQuNDcgNC40NyAxLjQxLTEuNDFMNC4xMiAzLjg0em04LjM4IDEzLjMzVjE5aC0xdi0xLjgzTDggMTMuNjV2LTMuMTFsNS41NyA1LjU3LTEuMDcgMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA5djQuNjZsLTMuNSAzLjUxVjE5aC0xdi0xLjgzTDggMTMuNjVWOWg4bTAtNmgtMnY0aC00VjNIOHY0aC0uMDFDNi45IDYuOTkgNiA3Ljg5IDYgOC45OHY1LjUyTDkuNSAxOHYzaDV2LTNsMy41LTMuNTFWOWMwLTEuMS0uOS0yLTItMlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJpb3JpdHlIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTlcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgM2g0djEyaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUnVubmluZ1dpdGhFcnJvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMHY4aC0ydi04aDJ6bS0yIDEwdjJoMnYtMmgtMnptLTItMi43MUE3Ljk5IDcuOTkgMCAwIDEgMTIgMjBjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTh2OWw3LjU1LTcuNTVBOS45NjUgOS45NjUgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMGMyLjI1IDAgNC4zMy0uNzQgNi0ydi0yLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2RDYXJkQWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNC4wMiA4IDQgMjBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDZWOC44M0wxMC44MyA0SDE4djE2em0tNy01aDJ2MmgtMnptMC03aDJ2NWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNkQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0IDh2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDZWOC44M0wxMC44MyA0SDE4djE2ek05IDdoMnY0SDl6bTMgMGgydjRoLTJ6bTMgMGgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaW1DYXJkQWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQuMDIgOCA0IDIwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg2VjguODNMMTAuODMgNEgxOHYxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yek0xMSA4aDJ2NWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNtc0ZhaWxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg1LjE3TDQgMTcuMTdWNGgxNnYxMnptLTktNGgydjJoLTJ6bTAtNmgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN0w0IDE3LjE3VjRoMTZ2MTJ6TTcgOWgydjJIN3ptOCAwaDJ2MmgtMnptLTQgMGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdXBwb3J0QWdlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMi4yMkMyMSA2LjczIDE2Ljc0IDMgMTIgM2MtNC42OSAwLTkgMy42NS05IDkuMjgtLjYuMzQtMSAuOTgtMSAxLjcydjJjMCAxLjEuOSAyIDIgMmgxdi02LjFjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgN1YxOWgtOHYyaDhjMS4xIDAgMi0uOSAyLTJ2LTEuMjJjLjU5LS4zMSAxLS45MiAxLTEuNjR2LTIuM2MwLS43LS40MS0xLjMxLTEtMS42MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExLjAzQTYuMDQgNi4wNCAwIDAgMCAxMi4wNSA2Yy0zLjAzIDAtNi4yOSAyLjUxLTYuMDMgNi40NWE4LjA3NSA4LjA3NSAwIDAgMCA0Ljg2LTUuODljMS4zMSAyLjYzIDQgNC40NCA3LjEyIDQuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTeW5jRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDYuMzVWNC4yNmMtLjY2LjE3LTEuMjkuNDMtMS44OC43NWwxLjUgMS41Yy4xMy0uMDUuMjUtLjExLjM4LS4xNnpNMjAgMTJjMC0yLjIxLS45MS00LjItMi4zNi01LjY0TDIwIDRoLTZ2NmwyLjI0LTIuMjRBNi4wMDMgNi4wMDMgMCAwIDEgMTggMTJjMCAuODUtLjE5IDEuNjUtLjUxIDIuMzhsMS41IDEuNUE3LjkyMSA3LjkyMSAwIDAgMCAyMCAxMnpNNC4yNyA0IDIuODYgNS40MWwyLjM2IDIuMzZhNy45MjUgNy45MjUgMCAwIDAgMS4xNCA5Ljg3TDQgMjBoNnYtNmwtMi4yNCAyLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDYgMTJjMC0xIC4yNS0xLjk0LjY4LTIuNzdsOC4wOCA4LjA4Yy0uMjUuMTMtLjUuMjQtLjc2LjM0djIuMDljLjgtLjIxIDEuNTUtLjU0IDIuMjMtLjk2bDIuNTggMi41OCAxLjQxLTEuNDFMNC4yNyA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3luY0xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0LjI2djIuMDlDNy42NyA3LjE4IDYgOS4zOSA2IDEyYzAgMS43Ny43OCAzLjM0IDIgNC40NFYxNGgydjZINHYtMmgyLjczQTcuOTQyIDcuOTQyIDAgMCAxIDQgMTJjMC0zLjczIDIuNTUtNi44NSA2LTcuNzR6TTIwIDRoLTZ2NmgyVjcuNTZjMS4yMiAxLjEgMiAyLjY3IDIgNC40NGgyYzAtMi40LTEuMDYtNC41NC0yLjczLTZIMjBWNHptMCAxM3YtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3luY1Byb2JsZW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTJjMCAyLjIxLjkxIDQuMiAyLjM2IDUuNjRMMyAyMGg2di02bC0yLjI0IDIuMjRBNi4wMDMgNi4wMDMgMCAwIDEgNSAxMmE1Ljk5IDUuOTkgMCAwIDEgNC01LjY1VjQuMjZDNS41NSA1LjE1IDMgOC4yNyAzIDEyem04IDVoMnYtMmgtMnYyek0yMSA0aC02djZsMi4yNC0yLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDE5IDEyYTUuOTkgNS45OSAwIDAgMS00IDUuNjV2Mi4wOWMzLjQ1LS44OSA2LTQuMDEgNi03Ljc0IDAtMi4yMS0uOTEtNC4yLTIuMzYtNS42NEwyMSA0em0tMTAgOWgyVjdoLTJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5bmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS4wMSAwaDI0djI0aC0yNFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0VjFMOCA1bDQgNFY2YzMuMzEgMCA2IDIuNjkgNiA2IDAgMS4wMS0uMjUgMS45Ny0uNyAyLjhsMS40NiAxLjQ2QTcuOTMgNy45MyAwIDAgMCAyMCAxMmMwLTQuNDItMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTYgMC0xLjAxLjI1LTEuOTcuNy0yLjhMNS4yNCA3Ljc0QTcuOTMgNy45MyAwIDAgMCA0IDEyYzAgNC40MiAzLjU4IDggOCA4djNsNC00LTQtNHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3lzdGVtVXBkYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6bS0xLTZoLTNWOGgtMnY1SDhsNCA0IDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhcEFuZFBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTZ2MmMyLjc2IDAgNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0wIDR2M2gzYzAtMS42Ni0xLjM0LTMtMy0zem0wLTh2MmE5IDkgMCAwIDEgOSA5aDJjMC02LjA4LTQuOTItMTEtMTEtMTF6TTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnY3LjM3Yy42OS4xNiAxLjM2LjM3IDIgLjY0VjVoMTB2MTNoLTMuMDNjLjUyIDEuMjUuODQgMi41OS45NSA0SDE3YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lVG9MZWF2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgNS4wMUMxOC43MiA0LjQyIDE4LjE2IDQgMTcuNSA0aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxMXY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi44NSA2aDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMTZINXYtNC42NmwuMTItLjM0aDEzLjc3bC4xMS4zNFYxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxMy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgN3YxMC44OGwxLjg1IDEuODVjLjA5LS4yMy4xNS0uNDcuMTUtLjczVjdjMC0xLjExLS44OS0yLTItMmgtNy41OGwzLjI5LTMuM0wxNiAxbC00IDQtNC00LS43LjdMMTAuNTggNUg4LjEybDIgMkgyMXptLS41NCAxNiAxLjI2LTEuMjctMS4yNiAxLjI2ek0yLjQxIDIuMTNsLS4xNC4xNEwxIDMuNTRsMS41MyAxLjUzQzEuNjUgNS4yOCAxIDYuMDYgMSA3djEyYzAgMS4xLjkgMiAyIDJoMTUuNDZsMS45OSAxLjk5IDEuMjYtMS4yNi4xNS0uMTVMMi40MSAyLjEzek0zIDE5VjdoMS40NmwxMiAxMkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlicmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE1aDJWOUgwdjZ6bTMgMmgyVjdIM3YxMHptMTktOHY2aDJWOWgtMnptLTMgOGgyVjdoLTJ2MTB6TTE2LjUgM2gtOUM2LjY3IDMgNiAzLjY3IDYgNC41djE1YzAgLjgzLjY3IDEuNSAxLjUgMS41aDljLjgzIDAgMS41LS42NyAxLjUtMS41di0xNWMwLS44My0uNjctMS41LTEuNS0xLjV6TTE2IDE5SDhWNWg4djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9DaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN0w0IDE3LjE3VjRoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTRoNmMuNTUgMCAxLS40NSAxLTF2LTEuOTlMMTcgMTNWN2wtMiAxLjk5VjdjMC0uNTUtLjQ1LTEtMS0xSDhjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVm9pY2VDaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg1LjE3TDQgMTcuMTdWNGgxNnYxMnptLTYtNS40IDMgMi40VjdsLTMgMi40VjdIN3Y2aDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWcG5Mb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiAxMmMuMDQuMzMuMDguNjYuMDggMSAwIDIuMDgtLjggMy45Ny0yLjEgNS4zOS0uMjYtLjgxLTEtMS4zOS0xLjktMS4zOWgtMXYtM2MwLS41NS0uNDUtMS0xLTFIN3YtMmgyYy41NSAwIDEtLjQ1IDEtMVY4aDJjMS4xIDAgMi0uOSAyLTJWMy40NmMtLjk1LS4zLTEuOTUtLjQ2LTMtLjQ2QzUuNDggMyAxIDcuNDggMSAxM3M0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBjMC0uMzQtLjAyLS42Ny0uMDUtMWgtMi4wM3pNMTAgMjAuOTNjLTMuOTUtLjQ5LTctMy44NS03LTcuOTMgMC0uNjIuMDgtMS4yMS4yMS0xLjc5TDggMTZ2MWMwIDEuMS45IDIgMiAydjEuOTN6TTIyIDR2LS41YTIuNSAyLjUgMCAwIDAtNSAwVjRjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xVjVjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0zdi0uNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS4wMSAwaDI0djI0aC0yNFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMjJ2LTcuNUg0VjljMC0xLjEuOS0yIDItMmgzYzEuMSAwIDIgLjkgMiAydjUuNUg5LjVWMjJoLTR6TTE4IDIydi02aDNsLTIuNTQtNy42M0EyLjAxIDIuMDEgMCAwIDAgMTYuNTYgN2gtLjEyYTIgMiAwIDAgMC0xLjkgMS4zN0wxMiAxNmgzdjZoM3pNNy41IDZjMS4xMSAwIDItLjg5IDItMnMtLjg5LTItMi0yLTIgLjg5LTIgMiAuODkgMiAyIDJ6bTkgMGMxLjExIDAgMi0uODkgMi0ycy0uODktMi0yLTItMiAuODktMiAyIC44OSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDExIDItMmMtMy43My0zLjczLTguODctNS4xNS0xMy43LTQuMzFsMi41OCAyLjU4YzMuMy0uMDIgNi42MSAxLjIyIDkuMTIgMy43M3ptLTIgMmE5Ljg5NSA5Ljg5NSAwIDAgMC0zLjcyLTIuMzNsMy4wMiAzLjAyLjctLjY5ek05IDE3bDMgMyAzLTNhNC4yMzcgNC4yMzcgMCAwIDAtNiAwek0zLjQxIDEuNjQgMiAzLjA1IDUuMDUgNi4xQzMuNTkgNi44MyAyLjIyIDcuNzkgMSA5bDIgMmMxLjIzLTEuMjMgMi42NS0yLjE2IDQuMTctMi43OGwyLjI0IDIuMjRBOS44MjMgOS44MjMgMCAwIDAgNSAxM2wyIDJhNi45OTkgNi45OTkgMCAwIDEgNC44OS0yLjA2bDcuMDggNy4wOCAxLjQxLTEuNDFMMy40MSAxLjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMSA5IDIgMmM0Ljk3LTQuOTcgMTMuMDMtNC45NyAxOCAwbDItMkMxNi45MyAyLjkzIDcuMDggMi45MyAxIDl6bTggOCAzIDMgMy0zYTQuMjM3IDQuMjM3IDAgMCAwLTYgMHptLTQtNCAyIDJhNy4wNzQgNy4wNzQgMCAwIDEgMTAgMGwyLTJDMTUuMTQgOS4xNCA4Ljg3IDkuMTQgNSAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjVW5pdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTFoLTQuMTdsMy4yNC0zLjI0LTEuNDEtMS40MkwxNSAxMWgtMlY5bDQuNjYtNC42Ni0xLjQyLTEuNDFMMTMgNi4xN1YyaC0ydjQuMTdMNy43NiAyLjkzIDYuMzQgNC4zNCAxMSA5djJIOUw0LjM0IDYuMzQgMi45MyA3Ljc2IDYuMTcgMTFIMnYyaDQuMTdsLTMuMjQgMy4yNCAxLjQxIDEuNDJMOSAxM2gydjJsLTQuNjYgNC42NiAxLjQyIDEuNDFMMTEgMTcuODNWMjJoMnYtNC4xN2wzLjI0IDMuMjQgMS40Mi0xLjQxTDEzIDE1di0yaDJsNC42NiA0LjY2IDEuNDEtMS40MkwxNy44MyAxM0gyMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcnBvcnRTaHV0dGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1SDNhMiAyIDAgMCAwLTIgMnY5aDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g2YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoMnYtNWwtNi02em0tMiAyaDFsMyAzaC00Vjd6TTkgN2g0djNIOVY3ek0zIDdoNHYzSDNWN3ptMyAxMC4yNWExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41em0xMiAwYTEuMjUgMS4yNSAwIDEgMSAwLTIuNSAxLjI1IDEuMjUgMCAwIDEgMCAyLjV6TTIxIDE0aC0uNzhjLS41NS0uNjEtMS4zNC0xLTIuMjItMXMtMS42Ny4zOS0yLjIyIDFIOC4yMmMtLjU1LS42MS0xLjMzLTEtMi4yMi0xcy0xLjY3LjM5LTIuMjIgMUgzdi0yaDE4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGxJbmNsdXNpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjYgNi42MmMtMS40NCAwLTIuOC41Ni0zLjc3IDEuNTNMNy44IDE0LjM5Yy0uNjQuNjQtMS40OS45OS0yLjQuOTktMS44NyAwLTMuMzktMS41MS0zLjM5LTMuMzhTMy41MyA4LjYyIDUuNCA4LjYyYy45MSAwIDEuNzYuMzUgMi40NCAxLjAzbDEuMTMgMSAxLjUxLTEuMzRMOS4yMiA4LjJBNS4zNyA1LjM3IDAgMCAwIDUuNCA2LjYyQzIuNDIgNi42MiAwIDkuMDQgMCAxMnMyLjQyIDUuMzggNS40IDUuMzhjMS40NCAwIDIuOC0uNTYgMy43Ny0xLjUzbDcuMDMtNi4yNGMuNjQtLjY0IDEuNDktLjk5IDIuNC0uOTkgMS44NyAwIDMuMzkgMS41MSAzLjM5IDMuMzhzLTEuNTIgMy4zOC0zLjM5IDMuMzhjLS45IDAtMS43Ni0uMzUtMi40NC0xLjAzbC0xLjE0LTEuMDEtMS41MSAxLjM0IDEuMjcgMS4xMmE1LjM4NiA1LjM4NiAwIDAgMCAzLjgyIDEuNTdjMi45OCAwIDUuNC0yLjQxIDUuNC01LjM4cy0yLjQyLTUuMzctNS40LTUuMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcGFydG1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMVYzSDd2NEgzdjE0aDh2LTRoMnY0aDhWMTFoLTR6TTcgMTlINXYtMmgydjJ6bTAtNEg1di0yaDJ2MnptMC00SDVWOWgydjJ6bTQgNEg5di0yaDJ2MnptMC00SDlWOWgydjJ6bTAtNEg5VjVoMnYyem00IDhoLTJ2LTJoMnYyem0wLTRoLTJWOWgydjJ6bTAtNGgtMlY1aDJ2MnptNCAxMmgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWJ5Q2hhbmdpbmdTdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOHYyaC0zTDguMzEgOC44MiA3IDEyLjc1VjIySDNWMTJsMS41OC00LjYzQTIuMDAzIDIuMDAzIDAgMCAxIDcuMyA2LjE4bDQuMTUgMS44M0wxNCA4ek04IDFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xIDE4aDEydi0ySDl2MnptMTAuNS0zYy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek0xMyAxMmMwLS41NS0uNDUtMS0xLTFIOXYyaDJ2MWMwIDEuMS45IDIgMiAyaDJjMS4xIDAgMi0uOSAyLTJ2LTNoLTJ2MmgtMnYtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhY2twYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA0LjE0VjJoLTN2MmgtNFYySDd2Mi4xNGMtMS43Mi40NS0zIDItMyAzLjg2djEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGMwLTEuODYtMS4yOC0zLjQxLTMtMy44NnpNMTggMjBINlY4YzAtMS4xLjktMiAyLTJoOGMxLjEgMCAyIC45IDIgMnYxMnptLTEuNS04djRoLTJ2LTJoLTd2LTJoOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwdjI0aDI0VjBIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhbGNvbnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMHYySDh2LTJoMnptNiAydi0yaC0ydjJoMnptNSAydjhIM3YtOGgxdi00YzAtNC40MiAzLjU4LTggOC04czggMy41OCA4IDh2NGgxek03IDE2SDV2NGgydi00em00IDBIOXY0aDJ2LTR6bTAtMTEuOTJDOC4xNiA0LjU2IDYgNy4wMyA2IDEwdjRoNVY0LjA4ek0xMyAxNGg1di00YzAtMi45Ny0yLjE2LTUuNDQtNS01LjkyVjE0em0yIDJoLTJ2NGgydi00em00IDBoLTJ2NGgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0aHR1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiN1wiLFwiY3lcIjpcIjdcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTNWNC44M0MyMCAzLjI3IDE4LjczIDIgMTcuMTcgMmMtLjc1IDAtMS40Ny4zLTIgLjgzbC0xLjI1IDEuMjVjLS4xNi0uMDUtLjMzLS4wOC0uNTEtLjA4LS40IDAtLjc3LjEyLTEuMDguMzJsMi43NiAyLjc2Yy4yLS4zMS4zMi0uNjguMzItMS4wOCAwLS4xOC0uMDMtLjM0LS4wNy0uNTFsMS4yNS0xLjI1YS44MjguODI4IDAgMCAxIDEuNDEuNTlWMTNoLTYuODVjLS4zLS4yMS0uNTctLjQ1LS44Mi0uNzJsLTEuNC0xLjU1Yy0uMTktLjIxLS40My0uMzgtLjY5LS41QTIuMjUxIDIuMjUxIDAgMCAwIDUgMTIuMjVWMTNIMnY2YzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFoMTRjLjU1IDAgMS0uNDUgMS0xIDEuMSAwIDItLjkgMi0ydi02aC0yem0wIDZINHYtNGgxNnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVhY2hBY2Nlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDE5LjU3LTEuNDI3IDEuNDI4LTYuNDQyLTYuNDQyIDEuNDMtMS40Mjh6TTEzLjEyIDNjLTIuNTggMC01LjE2Ljk4LTcuMTQgMi45NWwtLjAxLjAxYy0zLjk1IDMuOTUtMy45NSAxMC4zNiAwIDE0LjMxbDE0LjMtMTQuMzFBMTAuMDg2IDEwLjA4NiAwIDAgMCAxMy4xMiAzek02LjE0IDE3LjI3YTguMDYzIDguMDYzIDAgMCAxLS42OC02LjgyYy4xOSAxLjkxLjg5IDMuNzkgMi4wNyA1LjQ0bC0xLjM5IDEuMzh6bTIuODQtMi44NEM3LjYzIDEyLjM4IDcuMTIgOS45MyA3LjYgNy42Yy41OC0uMTIgMS4xNi0uMTggMS43NS0uMTggMS44IDAgMy41NS41NSA1LjA4IDEuNTZsLTUuNDUgNS40NXptMS40Ny04Ljk3YTguMDYzIDguMDYzIDAgMCAxIDYuODIuNjhsLTEuMzkgMS4zOWExMS4yNSAxMS4yNSAwIDAgMC01LjQzLTIuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCZW50byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVINGMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDZoLTZWN2g2djR6TTQgN2g4djEwSDRWN3ptMTAgMTB2LTRoNnY0aC02em0tNC41LTVjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjUuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdW5nYWxvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDE0aC0ydi0yaDJ2MnptNS4xIDIuNTZMMTcgMTQuNzlWMjFIN3YtNi4ybC0xLjEgMS43Ni0xLjctMS4wNkwxMiAzbDcuOCAxMi41LTEuNyAxLjA2ek0xNSAxMS41OWwtMy00LjgtMyA0LjhWMTloMnYtM2gydjNoMnYtNy40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJ1c2luZXNzQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aC00VjVsLTItMmgtNEw4IDV2Mkg0Yy0xLjEgMC0yIC45LTIgMnY1YzAgLjc1LjQgMS4zOCAxIDEuNzNWMTljMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJ2LTMuMjhjLjU5LS4zNSAxLS45OSAxLTEuNzJWOWMwLTEuMS0uOS0yLTItMnpNMTAgNWg0djJoLTRWNXpNNCA5aDE2djVoLTV2LTNIOXYzSDRWOXptOSA2aC0ydi0yaDJ2MnptNiA0SDV2LTNoNHYxaDZ2LTFoNHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FiaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxYzAgMS42Ni0xLjM0IDMtMyAzLS41NSAwLTEgLjQ1LTEgMUg0YzAtMS42NiAxLjM0LTMgMy0zIC41NSAwIDEtLjQ1IDEtMWgyem0yIDJMNiA3LjU4VjZINHYzLjExTDEgMTEuNGwxLjIxIDEuNTlMNCAxMS42MlYyMWgxNnYtOS4zOGwxLjc5IDEuMzZMMjMgMTEuNCAxMiAzem0xLjk0IDRoLTMuODlMMTIgNS41MiAxMy45NCA3em0tNi41IDJoOS4xMkwxOCAxMC4xdi45SDZ2LS45TDcuNDQgOXpNMTggMTN2Mkg2di0yaDEyek02IDE5di0yaDEydjJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhcnBlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjczIDE0LjIzIDcgMS41IDMuMTEgNS4zOWw4LjEzIDExLjY3Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDEuNDEgMS40MWMuNzguNzggMi4wNS43OCAyLjgzIDBsNC4yNC00LjI0Yy43OS0uNzguNzktMi4wNS4wMS0yLjgzek01LjcxIDUuNjIgNyA0LjMzbDguNDkgOC40OS0yLjgxIDIuODFMNS43MSA1LjYyem04LjM2IDE0LjI2LTEuNDEtMS40MSA0LjI0LTQuMjQgMS40MSAxLjQxLTQuMjQgNC4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhc2lubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxNi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIxNi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYWxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTUgMTAgNy41IDIuNSAxNWwxLjQxIDEuNDFMNSAxNS4zM1YyMGgxMHYtNC42N2wxLjA5IDEuMDlMMTcuNSAxNXpNMTMgMThoLTJ2LTNIOXYzSDd2LTQuNjdsMy0zIDMgM1YxOHptOS0xMC41aC0xLjE5bC43NS43NS0uNzEuNzEtMS40Ni0xLjQ2aC0uODl2Ljg5bDEuNDUgMS40NS0uNzEuNzEtLjc0LS43NFYxMWgtMVY5LjgxbC0uNzUuNzUtLjcxLS43MSAxLjQ1LTEuNDV2LS45aC0uODlsLTEuNDUgMS40NS0uNzEtLjcxLjc1LS43NUgxNHYtMWgxLjE5bC0uNzUtLjc1LjcxLS43MSAxLjQ1IDEuNDVoLjg5di0uODdsLTEuNDUtMS40NS43MS0uNzEuNzUuNzVWM2gxdjEuMTlsLjc1LS43NS43MS43MS0xLjQ2IDEuNDZ2Ljg5aC44OWwxLjQ1LTEuNDUuNzEuNzEtLjc0Ljc0SDIydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGFyZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC41IDExLTMgNnYtNGgtMmwzLTZ2NGgyek0xNyAzSDd2MWgxMFYzbTAgMTdIN3YxaDEwdi0xbTAtMTljMS4xIDAgMiAuOSAyIDJ2MThjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWM2MwLTEuMS45LTIgMi0yaDEwek03IDE4aDEwVjZIN3YxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrcm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjYgMTguMiAxMyAxMS43NXYtLjkxYTMuNDk2IDMuNDk2IDAgMCAwLS4xOC02Ljc1QTMuNTEgMy41MSAwIDAgMCA4LjUgNy41aDJjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVjMCAuODQtLjY5IDEuNTItMS41MyAxLjUtLjU0LS4wMS0uOTcuNDUtLjk3Ljk5djEuNzZMMi40IDE4LjJjLS43Ny41OC0uMzYgMS44LjYgMS44aDE4Yy45NiAwIDEuMzctMS4yMi42LTEuOHpNNiAxOGw2LTQuNSA2IDQuNUg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hpbGRDYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCIxMC41XCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOS41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi45NCAxMS4zNGE0LjAwOCA0LjAwOCAwIDAgMC0yLjgxLTMuMTcgOS4xMTQgOS4xMTQgMCAwIDAtMi4xOS0yLjkxQzE2LjM2IDMuODUgMTQuMjggMyAxMiAzcy00LjM2Ljg1LTUuOTQgMi4yNmMtLjkyLjgxLTEuNjcgMS44LTIuMTkgMi45MWEzLjk5NCAzLjk5NCAwIDAgMC0yLjgxIDMuMTdjLS4wNC4yMS0uMDYuNDMtLjA2LjY2IDAgLjIzLjAyLjQ1LjA2LjY2YTQuMDA4IDQuMDA4IDAgMCAwIDIuODEgMy4xNyA4Ljk3NyA4Ljk3NyAwIDAgMCAyLjE3IDIuODlDNy42MiAyMC4xNCA5LjcxIDIxIDEyIDIxczQuMzgtLjg2IDUuOTctMi4yOGMuOS0uOCAxLjY1LTEuNzkgMi4xNy0yLjg5YTMuOTk4IDMuOTk4IDAgMCAwIDIuOC0zLjE3Yy4wNC0uMjEuMDYtLjQzLjA2LS42NiAwLS4yMy0uMDItLjQ1LS4wNi0uNjZ6TTE5IDE0Yy0uMSAwLS4xOS0uMDItLjI5LS4wMy0uMi42Ny0uNDkgMS4yOS0uODYgMS44NkMxNi42IDE3Ljc0IDE0LjQ1IDE5IDEyIDE5cy00LjYtMS4yNi01Ljg1LTMuMTdjLS4zNy0uNTctLjY2LTEuMTktLjg2LTEuODYtLjEuMDEtLjE5LjAzLS4yOS4wMy0xLjEgMC0yLS45LTItMnMuOS0yIDItMmMuMSAwIC4xOS4wMi4yOS4wMy4yLS42Ny40OS0xLjI5Ljg2LTEuODZDNy40IDYuMjYgOS41NSA1IDEyIDVzNC42IDEuMjYgNS44NSAzLjE3Yy4zNy41Ny42NiAxLjE5Ljg2IDEuODYuMS0uMDEuMTktLjAzLjI5LS4wMyAxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJ6bS03IDNjMi4wMSAwIDMuNzQtMS4yMyA0LjUtM2gtOWMuNzYgMS43NyAyLjQ5IDMgNC41IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGlsZEZyaWVuZGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAydjhoOGMwLTQuNDItMy41OC04LTgtOHptMiA2VjQuMzRjMS43LjYgMy4wNSAxLjk1IDMuNjYgMy42NkgxNXptLTguNTYgMy0uOTUtMkgydjJoMi4yMnMxLjg5IDQuMDcgMi4xMiA0LjQyYy0xLjEuNTktMS44NCAxLjc1LTEuODQgMy4wOEM0LjUgMjAuNDMgNi4wNyAyMiA4IDIyYzEuNzYgMCAzLjIyLTEuMyAzLjQ2LTNoMi4wOGMuMjQgMS43IDEuNyAzIDMuNDYgMyAxLjkzIDAgMy41LTEuNTcgMy41LTMuNSAwLTEuMDQtLjQ2LTEuOTctMS4xOC0yLjYxQTcuOTQ4IDcuOTQ4IDAgMCAwIDIxIDExSDYuNDR6TTggMjBjLS44MyAwLTEuNS0uNjctMS41LTEuNVM3LjE3IDE3IDggMTdzMS41LjY3IDEuNSAxLjVTOC44MyAyMCA4IDIwem05IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNi4xNyAxNyAxNyAxN3MxLjUuNjcgMS41IDEuNVMxNy44MyAyMCAxNyAyMHptLjc0LTUuMzQtLjI5LjM3QTMuNTA1IDMuNTA1IDAgMCAwIDEzLjg0IDE3aC0yLjY4Yy0uNS0xLjA0LTEuNS0xLjgtMi42OC0xLjk3bC0uNDQtLjY3Yy0uMS0uMTctLjM0LS42OS0uNjctMS4zNmgxMS4yOWMtLjIxLjU5LS41MiAxLjE1LS45MiAxLjY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29ycG9yYXRlRmFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdWM0gydjE4aDIwVjdIMTJ6bS0yIDEySDR2LTJoNnYyem0wLTRINHYtMmg2djJ6bTAtNEg0VjloNnYyem0wLTRINFY1aDZ2MnptMTAgMTJoLThWOWg4djEwem0tMi04aC00djJoNHYtMnptMCA0aC00djJoNHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvdHRhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDYgNy41OFY2SDR2My4xMUwxIDExLjRsMS4yMSAxLjU5TDQgMTEuNjJWMjFoMTZ2LTkuMzhsMS43OSAxLjM2TDIzIDExLjQgMTIgM3ptNiAxNmgtNXYtNGgtMnY0SDZ2LTguOWw2LTQuNTggNiA0LjU4VjE5ek0xMCAxYzAgMS42Ni0xLjM0IDMtMyAzLS41NSAwLTEgLjQ1LTEgMUg0YzAtMS42NiAxLjM0LTMgMy0zIC41NSAwIDEtLjQ1IDEtMWgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ291bnRlcnRvcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMGgtNFY3YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzaDJjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjNIOGMxLjEgMCAyLS45IDItMlY0SDR2NGMwIDEuMS45IDIgMiAySDJ2MmgydjhoMTZ2LThoMnYtMnpNNiA2aDJ2Mkg2VjZ6bTAgMTJ2LTZoNXY2SDZ6bTEyIDBoLTV2LTZoNXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JpYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDloLTZWNEg4QzUuNzkgNCA0IDUuNzkgNCA4djZjMCAxLjEuOSAyIDIgMmgydjIuOTNjLS42MS0uMzUtMS4xNi0uNzgtMS42NS0xLjI3bC0xLjQyIDEuNDJDNi43NCAyMC44OCA5LjI0IDIyIDEyIDIyYzIuNzYgMCA1LjI2LTEuMTIgNy4wNy0yLjkzbC0xLjQyLTEuNDJjLS40OS40OS0xLjA1LjkyLTEuNjUgMS4yN1YxNmgyYzEuMSAwIDItLjkgMi0ydi0zYzAtMS4xLS45LTItMi0yem0tNCAxMC43NWMtLjY0LjE2LTEuMzEuMjUtMiAuMjVzLTEuMzYtLjA5LTItLjI1VjE2aDR2My43NXpNMTggMTRINlY4YzAtMS4xLjktMiAyLTJoMnY1aDh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZ2MTJoMlY4aDEwdjEwaDJ2LTJoNHYyaDJWNkgyem0xOCAydjJoLTRWOGg0em0tNCA2di0yaDR2MmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvTm90U3RlcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjUxIDE1LjY4LTEuNDEtMS40MSA0LjQ4LTQuNDhMMjMgMTEuMmwtNC40OSA0LjQ4em0tMy41My0zLjUzIDMuMDctMy4wNy00LjI1LTQuMjYtMy4wOCAzLjA3TDkuMyA2LjQ3IDEzLjggMmw3LjA4IDcuMDgtNC40OCA0LjQ4LTEuNDItMS40MXptNi4yIDkuMDUtMS40MSAxLjQxLTUuOTQtNS45NEwxMC41IDIwSDF2LTIuNjNjMC0uODQuNTItMS41NyAxLjMtMS44OC41OC0uMjMgMS4yOC0uNTYgMS45Ny0xLjAybDEuMzggMS4zOGMuMDkuMS4yMi4xNS4zNS4xNXMuMjYtLjA1LjM2LS4xNWMuMi0uMi4yLS41MSAwLS43MWwtMS4yOC0xLjI4Yy4yNy0uMjQuNTMtLjUxLjc3LS44bDEuMjcgMS4yN2EuNDg1LjQ4NSAwIDAgMCAuNyAwYy4yLS4yLjItLjUxIDAtLjcxbC0xLjQtMS40Yy4xOS0uMzQuMzQtLjcyLjQ1LTEuMTJsMS43MSAxLjcyYS40ODUuNDg1IDAgMCAwIC43IDBjLjE5LS4yLjE5LS41LjAxLS43bC03LjktNy45IDEuNDItMS40MUwyMS4xOCAyMS4yem0tOC43Ni01Ljk0LTEuNjctMS42OC0zLjMzIDMuMzJjLS43OC43OC0yLjA1Ljc4LTIuODMtLjAxbC0uMTktLjE3LS40Ny4yNGMtLjI5LjE0LS41OS4yNy0uODkuMzlsLS4wMS42NWg2LjY0bDIuNzUtMi43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvTm90VG91Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIyIDcgOS44M3Y0LjNsLTIuNi0xLjQ4Yy0uMTctLjA5LS4zNC0uMTQtLjU0LS4xNC0uMjYgMC0uNS4wOS0uNy4yNkwyIDEzLjg4bDYuOCA3LjE4Yy41Ny42IDEuMzUuOTQgMi4xOC45NEgxN2MuNjIgMCAxLjE4LS4xOSAxLjY2LS41MmwxLjEyIDEuMTIgMS40MS0xLjQxTDIuODEgMi44MXpNMTcgMjBoLTZjLS4zOSAwLS42NC0uMjMtLjc1LS4zNkw2Ljg3IDE2SDl2LTQuMTdsOC4xNCA4LjE0Yy0uMDUuMDEtLjA5LjAzLS4xNC4wM3ptLTMuMTctOUgxNFYzLjI1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMFYxMWgxVjUuMjVhMS4yNSAxLjI1IDAgMCAxIDIuNSAwdjExLjkybC0yLTJWMTNoLTIuMTdsLTItMnptLS44My0uODNWMi4yNWExLjI1IDEuMjUgMCAwIDAtMi41IDB2NS40MmwyLjUgMi41em0tMy41LTMuNVY0LjI1QzkuNSAzLjU2IDguOTQgMyA4LjI1IDNjLS42NyAwLTEuMi41My0xLjI0IDEuMThMOS41IDYuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC43NSAxNmExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNi43NWMuNjkgMCAxLjI1LS41NiAxLjI1LTEuMjUgMC0uNjctLjUzLTEuMi0xLjE4LTEuMjRMOC44NyAxMGwxLjQ4LTIuNmMuMDktLjE3LjE0LS4zNC4xNC0uNTQgMC0uMjYtLjA5LS41LS4yNi0uN0w5LjEyIDVsLTcuMTggNi44Yy0uNi41Ni0uOTQgMS4zNS0uOTQgMi4xN1YyMGMwIDEuNjYgMS4zNCAzIDMgM2gxMy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoOC43NXpNMTAgMjFINGMtLjU1IDAtMS0uNDUtMS0xdi02YzAtLjM5LjIzLS42NC4zNi0uNzVMNyA5Ljg3VjEyaDN2OXptNS42NS0xNi4xNC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTUgMmgtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2Yy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MXptNCAwLS4wNy0uMDdjLS41Ny0uNjItLjgyLTEuNDEtLjY3LTIuMkwxOSAyaC0xLjg5bC0uMDYuNDNjLS4yIDEuMzYuMjcgMi43MSAxLjMgMy43MmwuMDcuMDZjLjU3LjYyLjgyIDEuNDEuNjcgMi4ybC0uMTEuNTloMS45MWwuMDYtLjQzYy4yMS0xLjM2LS4yNy0yLjcxLTEuMy0zLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxldmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxNXYtNGgxdi0yLjVjMC0xLjEtLjktMi0yLTJIOGMtMS4xIDAtMiAuOS0yIDJWMTRoMXY0aDN6TTguNSA4LjVhMS4yNSAxLjI1IDAgMSAwIDAtMi41IDEuMjUgMS4yNSAwIDAgMCAwIDIuNXpNMTggMTFsLTIuNS00LTIuNSA0aDV6bS01IDIgMi41IDQgMi41LTRoLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFc2NhbGF0b3JXYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem05IDcuNWMwIC44My42NyAxLjUgMS41IDEuNXMxLjUtLjY3IDEuNS0xLjVTMTcuODMgOCAxNyA4cy0xLjUuNjctMS41IDEuNXptMyAyLjVoLTIuODRjLS41OC4wMS0xLjE0LjMyLTEuNDUuODZsLS45MiAxLjMyTDkuNzIgOGEyLjAyIDIuMDIgMCAwIDAtMS43MS0xSDVjLTEuMSAwLTIgLjktMiAydjZoMS41djdoNVYxMS42MUwxMi4wMyAxNmgyLjJsLjc3LTEuMVYyMmg0di01aDF2LTMuNWMwLS44Mi0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFc2NhbGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAzaC0zLjNsLTUgOUg3Yy0uODMgMC0xLjUuNjctMS41IDEuNVM2LjE3IDE4IDcgMThoMy4zbDUtOUgxN2MuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTcuODMgNiAxNyA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFtaWx5UmVzdHJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNCAxOHYtNmgyLjVsLTIuNTQtNy42M0EyLjAxIDIuMDEgMCAwIDAgMTguMDYgN2gtLjEyYTIgMiAwIDAgMC0xLjkgMS4zN2wtLjg2IDIuNThjMS4wOC42IDEuODIgMS43MyAxLjgyIDMuMDV2OGgzem0tNy41LTEwLjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjVTMTEgOS4xNyAxMSAxMHMuNjcgMS41IDEuNSAxLjV6TTUuNSA2YzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyem0yIDE2di03SDlWOWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnY2aDEuNXY3aDR6bTYuNSAwdi00aDF2LTRjMC0uODItLjY4LTEuNS0xLjUtMS41aC0yYy0uODIgMC0xLjUuNjgtMS41IDEuNXY0aDF2NGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMnYtMmgtMlY3bC0zLTMtMiAyLTItMi0yIDItMi0yLTMgM3YzSDN2MmgydjJIM3YyaDJ2NGgxNHYtNGgydi0yaC0ydi0yaDJ6bS01LTUuMTcgMSAxVjEwaC0yVjcuODNsLjQxLS40MS41OS0uNTl6bS00IDAgLjU5LjU5LjQxLjQxVjEwaC0yVjcuODNsLjQxLS40MS41OS0uNTl6TTExIDE0di0yaDJ2MmgtMnptMiAydjJoLTJ2LTJoMnpNNyA3LjgzbDEtMSAuNTkuNTkuNDEuNDFWMTBIN1Y3Ljgzek03IDEyaDJ2Mkg3di0yem0wIDRoMnYySDd2LTJ6bTEwIDJoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlyZUV4dGluZ3Vpc2hlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTloMTB2MWMwIDEuMS0uOSAyLTIgMkg5Yy0xLjEgMC0yLS45LTItMnYtMXptMC0xaDEwdi01SDd2NXpNMTcgM3Y2bC0zLjE1LS42NmMtLjAxIDAtLjAxLjAxLS4wMi4wMiAxLjU1LjYyIDIuNzIgMS45OCAzLjA3IDMuNjRINy4xYy4zNC0xLjY2IDEuNTItMy4wMiAzLjA3LTMuNjQtLjMzLS4yNi0uNi0uNTgtLjgtLjk1TDUgNi41di0xbDQuMzctLjkxQzkuODcgMy42NSAxMC44NiAzIDEyIDNjLjcgMCAxLjM0LjI1IDEuODUuNjZMMTcgM3ptLTQgM2MtLjAzLS41OS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRml0bmVzc0NlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNTcgMTQuODYgMjIgMTMuNDMgMjAuNTcgMTIgMTcgMTUuNTcgOC40MyA3IDEyIDMuNDMgMTAuNTcgMiA5LjE0IDMuNDMgNy43MSAyIDUuNTcgNC4xNCA0LjE0IDIuNzEgMi43MSA0LjE0bDEuNDMgMS40M0wyIDcuNzFsMS40MyAxLjQzTDIgMTAuNTcgMy40MyAxMiA3IDguNDMgMTUuNTcgMTcgMTIgMjAuNTcgMTMuNDMgMjJsMS40My0xLjQzTDE2LjI5IDIybDIuMTQtMi4xNCAxLjQzIDEuNDMgMS40My0xLjQzLTEuNDMtMS40M0wyMiAxNi4yOWwtMS40My0xLjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9vZEJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA1LjUgNiA0LjV2OUg2di05bDYtNC41TTEyIDMgNCA5djEyaDE2VjlsLTgtNnptLS41IDYuNXYzSDExdi0zaC0xdjNoLS41di0zaC0xdjNjMCAuODMuNjcgMS41IDEuNSAxLjV2NGgxdi00Yy44MyAwIDEuNS0uNjcgMS41LTEuNXYtM2gtMXptMS41IDJ2M2gxVjE4aDFWOS41Yy0xLjEgMC0yIC45LTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvdW5kYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMmgzTDEyIDMgMiAxMmgzdjNIM3YyaDJ2M2gydi0zaDR2M2gydi0zaDR2M2gydi0zaDJ2LTJoLTJ2LTN6TTcgMTV2LTQuODFsNC0zLjZWMTVIN3ptNiAwVjYuNTlsNCAzLjZWMTVoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGcmVlQnJlYWtmYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE5aDE2djJINHpNMjAgM0g0djEwYzAgMi4yMSAxLjc5IDQgNCA0aDZjMi4yMSAwIDQtMS43OSA0LTR2LTNoMmEyIDIgMCAwIDAgMi0yVjVjMC0xLjExLS44OS0yLTItMnptLTQgMTBjMCAxLjEtLjkgMi0yIDJIOGMtMS4xIDAtMi0uOS0yLTJWNWgxMHY4em00LTVoLTJWNWgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNkg5VjRIN3YySDZsLTQgNHY5aDIwdi05bC00LTR6TTQgMTJoMTB2NUg0di01em0xNiA1aC00di02LjE3bDItMiAyIDJWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHb2xmQ291cnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5LjVcIixcImN5XCI6XCIxOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNS45MiA5IDJ2MThIN3YtMS43M2MtMS43OS4zNS0zIC45OS0zIDEuNzMgMCAxLjEgMi42OSAyIDYgMnM2LS45IDYtMmMwLS45OS0yLjE2LTEuODEtNS0xLjk3VjguOThsNi0zLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3Jhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMEgydi0yaDUuNzVBOC4wMzIgOC4wMzIgMCAwIDAgMiAxMi4yNmMuNjQtLjE2IDEuMzEtLjI2IDItLjI2IDQuNDIgMCA4IDMuNTggOCA4em0xMC03Ljc0Yy0uNjQtLjE2LTEuMzEtLjI2LTItLjI2LTIuOTMgMC01LjQ4IDEuNTgtNi44OCAzLjkzYTkuODIgOS44MiAwIDAgMSAuODcgNC4wN2g4di0yaC01Ljc1QTguMDYxIDguMDYxIDAgMCAxIDIyIDEyLjI2em0tNi4zNi0xLjI0YTEwLjAzIDEwLjAzIDAgMCAxIDQuMDktNUMxNS40NCA2LjE2IDEyIDkuNjcgMTIgMTR2LjAyYy45NS0xLjI3IDIuMi0yLjMgMy42NC0zem0tNC4yMi0yLjE3QTguNTI3IDguNTI3IDAgMCAwIDYuNyA0QzguMTQgNS44NiA5IDguMTggOSAxMC43MWMwIC4yMS0uMDMuNDEtLjA0LjYxLjQzLjI0LjgzLjUyIDEuMjIuODJhOS45MSA5LjkxIDAgMCAxIDEuMjQtMy4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvbGlkYXlWaWxsYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOCA0LTYgNnYxMGgxMlYxMEw4IDR6bTQgMTRIOXYtM0g3djNINHYtNy4xN2w0LTQgNCA0VjE4em0tMy01SDd2LTJoMnYyem05IDdWOC4zNUwxMy42NSA0aC0yLjgzTDE2IDkuMThWMjBoMnptNCAwVjYuNjlMMTkuMzEgNGgtMi44M0wyMCA3LjUyVjIwaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3RUdWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiN1wiLFwiY3lcIjpcIjZcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMTUgMTJjLS4zMS0uMjItLjU5LS40Ni0uODItLjcybC0xLjQtMS41NWMtLjE5LS4yMS0uNDMtLjM4LS42OS0uNS0uMjktLjE0LS42Mi0uMjMtLjk2LS4yM2gtLjAzQzYuMDEgOSA1IDEwLjAxIDUgMTEuMjVWMTJIMnY4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LThIMTEuMTV6TTcgMjBINXYtNmgydjZ6bTQgMEg5di02aDJ2NnptNCAwaC0ydi02aDJ2NnptNCAwaC0ydi02aDJ2NnpNMTcuNDIgNy4yMWMuNTcuNjIuODIgMS40MS42NyAyLjJsLS4xMS41OWgxLjkxbC4wNi0uNDNjLjIxLTEuMzYtLjI3LTIuNzEtMS4zLTMuNzFsLS4wNy0uMDdjLS41Ny0uNjItLjgyLTEuNDEtLjY3LTIuMkwxOCAzaC0xLjg5bC0uMDYuNDNjLS4yIDEuMzYuMjcgMi43MSAxLjMgMy43MmwuMDcuMDZ6bS00IDBjLjU3LjYyLjgyIDEuNDEuNjcgMi4ybC0uMTEuNTloMS45MWwuMDYtLjQzYy4yMS0xLjM2LS4yNy0yLjcxLTEuMy0zLjcxbC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTQgM2gtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91c2VTaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMmgzTDEyIDMgMiAxMmgzdjhoMnYtMmgxMHYyaDJ2LTh6TTcuMjEgMTBoOS41OGwuMjEuMTlWMTJIN3YtMS44MWwuMjEtLjE5em03LjM2LTJIOS40M0wxMiA1LjY5IDE0LjU3IDh6TTcgMTZ2LTJoMTB2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5LjNWNGgtM3YyLjZMMTIgMyAyIDEyaDN2OGg2di02aDJ2Nmg2di04aDNsLTMtMi43ek0xNyAxOGgtMnYtNkg5djZIN3YtNy44MWw1LTQuNSA1IDQuNVYxOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTBoNGMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3VzZWJvYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNmMtMS45NSAwLTIuMSAxLTMuMzQgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMXYyYzEuOSAwIDIuMTctMSAzLjM1LTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDgtMSAzLjMyLTFzMS4zNyAxIDMuMzIgMWMxLjkxIDAgMi4xNC0xIDMuMzMtMSAxLjE4IDAgMS40NSAxIDMuMzUgMXYtMmMtMS4yNCAwLTEuMzgtMS0zLjMzLTEtMS45MSAwLTIuMTQgMS0zLjMzIDEtMS4yNCAwLTEuMzktMS0zLjM0LTF6bTguMzQtNC42Ni0xLjM3IDEuMzdjLS4xOS4xOC0uNDUuMjktLjcxLjI5SDE3VjkuNjVsMS4zMi45N0wxOS41IDkgMTIgMy41IDQuNSA5bDEuMTggMS42MUw3IDkuNjVWMTNINS43NGMtLjI3IDAtLjUyLS4xMS0uNzEtLjI5bC0xLjM3LTEuMzctMS40MSAxLjQxIDEuMzcgMS4zN2MuNTYuNTYgMS4zMy44OCAyLjEyLjg4aDEyLjUxYy44IDAgMS41Ni0uMzIgMi4xMi0uODhsMS4zNy0xLjM3LTEuNC0xLjQxek0xMyAxM3YtMmgtMnYySDlWOC4xOGwzLTIuMiAzIDIuMlYxM2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUlyb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2Yy0xLjY2IDAtMyAxLjM0LTMgM3Y0YzAgLjU1LS40NSAxLTEgMXYtNGMwLTEuNjYtMS4zNC0zLTMtM2gtNGMtMS42NiAwLTMgMS4zNC0zIDNoMmMwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYxSDZjLTIuMjEgMC00IDEuNzktNCA0djNoMTV2LTJjMS42NiAwIDMtMS4zNCAzLTNWOWMwLS41NS40NS0xIDEtMWgxVjZoLTF6bS02IDEwSDR2LTFjMC0xLjEuOS0yIDItMmg5djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLaXRjaGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDVoMnYzSDh6bTAgN2gydjVIOHptMTAtOS45OUw2IDJhMiAyIDAgMCAwLTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjExLS45LTEuOTktMi0xLjk5ek0xOCAyMEg2di05LjAyaDEyVjIwem0wLTExSDZWNGgxMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVldGluZ1Jvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5VjRoLTRWM0g1djE2SDN2MmgxMlY2aDJ2MTVoNHYtMmgtMnptLTYgMEg3VjVoNnYxNHptLTMtOGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaWNyb3dhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCA2aDEwdjEySDRWNnptMTYgMTJoLTRWNmg0djEyem0tMS05aC0yVjdoMnYyem0tMSA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tNy43NS0xYy0uNzkgMC0xLjM3LS4zOC0xLjc5LS42Ni0uMzMtLjIyLS41Mi0uMzQtLjcxLS4zNC0uMzcgMC0uOC40MS0uOTUuNjFsLTEuNDItMS40MmMuMzUtLjQgMS4yMS0xLjE5IDIuMzctMS4xOS44IDAgMS4zOS4zOSAxLjgxLjY3LjMxLjIxLjUxLjMzLjY5LjMzLjM3IDAgLjgtLjQxLjk1LS42MWwxLjQyIDEuNDJjLS4zNi40LTEuMjEgMS4xOS0yLjM3IDEuMTl6bTAtNWMtLjc5IDAtMS4zNy0uMzgtMS43OS0uNjYtLjMzLS4yMi0uNTItLjM0LS43MS0uMzQtLjM3IDAtLjguNDEtLjk1LjYxTDUuMzcgOS4xOUM1LjczIDguNzkgNi41OSA4IDcuNzUgOGMuOCAwIDEuMzkuMzkgMS44MS42Ny4zMS4yMS41MS4zMy42OS4zMy4zNyAwIC44LS40MS45NS0uNjFsMS40MiAxLjQyYy0uMzYuNC0xLjIxIDEuMTktMi4zNyAxLjE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmlnaHRTaGVsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNS41IDYgNC41djlINnYtOWw2LTQuNU0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bTMgOWgtMy41djMuNUg4VjExSDd2N2gxdi0xLjVoOFYxOGgxdi00YzAtMS4xLS45LTItMi0yem0tNS4yNS41YTEuMjUgMS4yNSAwIDEgMCAwIDIuNSAxLjI1IDEuMjUgMCAwIDAgMC0yLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb0JhY2twYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi45OCA0LjE1Yy4wMSAwIC4wMS0uMDEuMDItLjAxVjJoM3YyaDRWMmgzdjIuMTRjMS43Mi40NSAzIDIgMyAzLjg2djkuMTdsLTItMlY4YzAtMS4xLS45LTItMi0ySDguODNMNi45OCA0LjE1ek0xNC44MyAxMmwxLjY3IDEuNjdWMTJoLTEuNjd6bTQuOTUgMTAuNjEtLjg1LS44NWMtLjI4LjE1LS41OS4yNC0uOTMuMjRINmMtMS4xIDAtMi0uOS0yLTJWOGMwLS4zNi4wNi0uNjkuMTUtMS4wMkwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTE3LjE3IDIwbC02LTZINy41di0yaDEuNjdMNiA4LjgzVjIwaDExLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9DZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNnY4LjE3bDIgMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5TDcgMWMtLjg1IDAtMS41OC41NS0xLjg3IDEuM0w4LjgzIDZIMTd6TTcgM2gxMHYxSDdWM3ptMTQuMTkgMTguMTlMMTkgMTlsLTItMkw3IDcgNSA1IDIuODEgMi44MSAxLjM5IDQuMjIgNSA3LjgzVjIxYzAgMS4xLjkgMiAyIDJoMTBjLjg1IDAgMS41OC0uNTUgMS44Ny0xLjNsLjkxLjkxIDEuNDEtMS40MnpNMTcgMjFIN3YtMWgxMHYxek03IDE4VjkuODNMMTUuMTcgMThIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vRHJpbmtzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMmw4LjIzIDguMjNMMTEgMTR2NUg2djJoMTJ2LS4xN2wxLjc4IDEuNzggMS40MS0xLjQyek0xMyAxOXYtMy4xN0wxNi4xNyAxOUgxM3pNNy44MyA1bC0yLTJIMjF2MmwtNi4yIDYuOTctMS40Mi0xLjQyTDE0Ljc3IDloLTIuOTRsLTItMmg2Ljc0bDEuNzgtMkg3LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9GbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNCA1LjZIMjJMMTkgMTFWN2gtMVYyaDRsLTEuNiAzLjZ6TTE2IDExLjR2MS43N2wyIDJWMTFjMC0uODgtLjcyLTEuNi0xLjYtMS42aC0yLjU0TDEyLjU4IDhoLTEuNzVsMy40IDMuNEgxNnpNMi4xIDIuMS42OSAzLjUxbDUuNjYgNS42Ni0uMjEuMjNIMy42Yy0uODggMC0xLjYuNzItMS42IDEuNnY5LjRjMCAuODguNzIgMS42IDEuNiAxLjZoMTIuOGMuNzUgMCAxLjM4LS41MiAxLjU1LTEuMjJsMi41NCAyLjU0IDEuNDEtMS40MUwyLjEgMi4xem05LjQgMTMuNGMwIC44My0uNjcgMS41LTEuNSAxLjVzLTEuNS0uNjctMS41LTEuNVM5LjE3IDE0IDEwIDE0czEuNS42NyAxLjUgMS41em00LjQ2IDQuNUg0di04LjZoMy4wMmwuNTktLjY1LjE1LS4xNiAxLjUgMS41QTMuNDg2IDMuNDg2IDAgMCAwIDYuNSAxNS41YzAgMS45MyAxLjU3IDMuNSAzLjUgMy41IDEuNjggMCAzLjA3LTEuMTggMy40Mi0yLjc2bDIuNTUgMi41NS0uMDEgMS4yMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vRm9vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjFoMTUuMDF2Ljk4YzAgLjU2LS40NSAxLjAxLTEuMDEgMS4wMUgyLjAxYy0uNTYgMC0xLjAxLS40NS0xLjAxLTEuMDFWMjF6bTE5LjQ5IDIuMzFMMTYgMTguODNWMTlIMXYtMmgxMy4xN2wtMi0ySDFjMC0zLjI0IDIuNDYtNS4xNyA1LjM4LTUuNzlsLTUuNy01LjdMMi4xIDIuMSAxMyAxM2wyIDIgNi45IDYuOS0xLjQxIDEuNDF6TTEwLjE3IDEzbC0yLTJjLTEuNDIuMDYtMy41Mi41Ni00LjU1IDJoNi41NXpNMjMgNWgtNVYxaC0ydjRoLTVsLjIzIDJoOS41NmwtMSA5Ljk3IDEuODMgMS44M0wyMyA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9NZWV0aW5nUm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNXYzLjg4bDIgMlY2aDN2Ny44OGwyIDJWNGgtNVYzSDYuMTJsMiAyek0yLjQxIDIuMTMgMSAzLjU0bDQgNFYxOUgzdjJoMTF2LTQuNDZMMjAuNDYgMjNsMS40MS0xLjQxTDIuNDEgMi4xM3pNMTIgMTlIN1Y5LjU0bDUgNVYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vUGhvdG9ncmFwaHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjkgNi4wNyA3LjQ4IDQuNjYgOSAzaDZsMS44MyAySDIwYzEuMSAwIDIgLjkgMiAydjEyYzAgLjA1LS4wMS4xLS4wMi4xNkwyMCAxNy4xN1Y3aC00LjA1bC0xLjgzLTJIOS44OEw4LjkgNi4wN3ptMTEuNTkgMTcuMjRMMTguMTcgMjFINGMtMS4xIDAtMi0uOS0yLTJWN2MwLS41OS4yNy0xLjEyLjY4LTEuNDlsLTItMkwyLjEgMi4xbDE5LjggMTkuOC0xLjQxIDEuNDF6TTkuMTkgMTIuMDJjLS4xMS4zMS0uMTkuNjMtLjE5Ljk4IDAgMS42NiAxLjM0IDMgMyAzIC4zNSAwIC42Ny0uMDguOTgtLjE5bC0zLjc5LTMuNzl6TTE2LjE3IDE5bC0xLjY4LTEuNjhjLS43My40My0xLjU4LjY4LTIuNDkuNjgtMi43NiAwLTUtMi4yNC01LTUgMC0uOTEuMjUtMS43Ni42OC0yLjQ5TDQuMTcgN0g0djEyaDEyLjE3em0tMS4zNi03LjAyIDIuMDcgMi4wN2MuMDgtLjM0LjEyLS42OS4xMi0xLjA1IDAtMi43Ni0yLjI0LTUtNS01LS4zNiAwLS43MS4wNC0xLjA2LjEybDIuMDcgMi4wN2MuODQuMyAxLjUuOTYgMS44IDEuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb1N0cm9sbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6bTctMTEuMzR2My41MWwyIDJ2LTcuOWMuNTgtLjY4Ljk3LTEuMjcgMS42NS0xLjI3Ljc3IDAgMS4zNS42NiAxLjM1IDEuNDhWN2gydi0uNTJDMjIgNC41NiAyMC41MiAzIDE4LjY1IDNjLTEuNjYgMC0yLjU0IDEuMjctMy4xOCAyLjAzbC0zLjUgNC4xMSAxLjQyIDEuNDJMMTUgOC42NnptNC43OCAxMy45NS0xLjkxLTEuOTFjLS4yOS43Ni0xLjAxIDEuMy0xLjg3IDEuMy0xLjEgMC0yLS45LTItMiAwLS44Ni41NC0xLjU4IDEuMy0xLjg3TDE0LjE3IDE3SDcuNDNjLS44NSAwLTEuMzEtMS0uNzYtMS42NWwyLjY5LTMuMTYtNy45Ny03Ljk3TDIuOCAyLjgxbDcuODYgNy44NiAxLjQyIDEuNDIgOS4xMSA5LjExLTEuNDEgMS40MXpNMTIuMTcgMTVsLTEuMzktMS4zOUw5LjYgMTVoMi41N3pNMTAgNWMuMjkgMCAuNTguMDIuODYuMDVMOS40OSA2LjY3bDEuNDIgMS40MkwxNC4zIDQuMUMxMy4wMyAzLjQgMTEuNTYgMyAxMCAzYy0xLjIzIDAtMi40LjI1LTMuNDcuN0w4LjEgNS4yN0E3LjA5IDcuMDkgMCAwIDEgMTAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU90aGVySG91c2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyAxIDExLjRsMS4yMSAxLjU5TDQgMTEuNjJWMjFoMTZ2LTkuMzhsMS43OSAxLjM2TDIzIDExLjQgMTIgM3ptNiAxNkg2di04LjlsNi00LjU4IDYgNC41OFYxOXptLTktNWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMSAuNDUtMSAxLTEgMSAuNDUgMSAxem0zLTFjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMyAxYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMS0uNDUgMS0xIDEtMS0uNDUtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUG9vbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgOC0zLjI1IDMuMjVjLjMxLjEyLjU2LjI3Ljc3LjM5LjM3LjIzLjU5LjM2IDEuMTUuMzZzLjc4LS4xMyAxLjE1LS4zNmMuNDYtLjI3IDEuMDgtLjY0IDIuMTktLjY0czEuNzMuMzcgMi4xOC42NGMuMzcuMjIuNi4zNiAxLjE1LjM2LjU1IDAgLjc4LS4xMyAxLjE1LS4zNi4xMi0uMDcuMjYtLjE1LjQxLS4yM0wxMC40OCA1QzguOTMgMy40NSA3LjUgMi45OSA1IDN2Mi41YzEuODItLjAxIDIuODkuMzkgNCAxLjVsMSAxem0xMiA4LjVoLS4wMi4wMnptLTE2LjY1LTFjLjU1IDAgLjc4LjE0IDEuMTUuMzYuNDUuMjcgMS4wNy42NCAyLjE4LjY0czEuNzMtLjM3IDIuMTgtLjY0Yy4zNy0uMjMuNTktLjM2IDEuMTUtLjM2LjU1IDAgLjc4LjE0IDEuMTUuMzYuNDUuMjcgMS4wNy42NCAyLjE4LjY0czEuNzMtLjM3IDIuMTgtLjY0Yy4zNy0uMjMuNTktLjM2IDEuMTUtLjM2LjU1IDAgLjc4LjE0IDEuMTUuMzYuNDUuMjcgMS4wNi42MyAyLjE2LjY0di0yYy0uNTUgMC0uNzgtLjE0LTEuMTUtLjM2LS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOC42NGMtLjM3LjIzLS42LjM2LTEuMTUuMzZzLS43OC0uMTQtMS4xNS0uMzZjLS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOC42NGMtLjM3LjIzLS41OS4zNi0xLjE1LjM2LS41NSAwLS43OC0uMTQtMS4xNS0uMzYtLjQ1LS4yNy0xLjA3LS42NC0yLjE4LS42NHMtMS43My4zNy0yLjE4LjY0Yy0uMzcuMjMtLjU5LjM2LTEuMTUuMzZ2MmMxLjExIDAgMS43My0uMzcgMi4yLS42NC4zNy0uMjMuNi0uMzYgMS4xNS0uMzZ6TTE4LjY3IDE4Yy0xLjExIDAtMS43My4zNy0yLjE4LjY0LS4zNy4yMy0uNi4zNi0xLjE1LjM2LS41NSAwLS43OC0uMTQtMS4xNS0uMzYtLjQ1LS4yNy0xLjA3LS42NC0yLjE4LS42NHMtMS43My4zNy0yLjE5LjY0Yy0uMzcuMjMtLjU5LjM2LTEuMTUuMzZzLS43OC0uMTMtMS4xNS0uMzZjLS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOS42NGMtLjM3LjIzLS41OS4zNi0xLjE1LjM2djJjMS4xMSAwIDEuNzMtLjM3IDIuMTktLjY0LjM3LS4yMy42LS4zNiAxLjE1LS4zNi41NSAwIC43OC4xMyAxLjE1LjM2LjQ1LjI3IDEuMDcuNjQgMi4xOC42NHMxLjczLS4zNyAyLjE5LS42NGMuMzctLjIzLjU5LS4zNiAxLjE1LS4zNi41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDcuNjQgMi4xOC42NHMxLjcyLS4zNyAyLjE4LS42NGMuMzctLjIzLjU5LS4zNiAxLjE1LS4zNi41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDcuNjQgMi4xOC42NHYtMmMtLjU2IDAtLjc4LS4xMy0xLjE1LS4zNi0uNDUtLjI3LTEuMDctLjY0LTIuMTgtLjY0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmljZUJvd2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS42NiAxNGMtLjY2IDEuOTItMi4yNCAzLjU0LTQuNCA0LjM5bC0xLjI2LjQ5VjIwaC00di0xLjEybC0xLjI3LS41Yy0yLjE2LS44NS0zLjc0LTIuNDctNC40LTQuMzloMTUuMzNNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJjMCAzLjY5IDIuNDcgNi44NiA2IDguMjVWMjJoOHYtMS43NWMzLjUzLTEuMzkgNi00LjU2IDYtOC4yNSAwLTUuNTItNC40OC0xMC0xMC0xMHptLTIgMTBWNC4yNmMuNjQtLjE2IDEuMzEtLjI2IDItLjI2czEuMzYuMSAyIC4yNlYxMmgtNHptNiAwVjUuMDhjMi4zOSAxLjM5IDQgMy45NiA0IDYuOTJoLTR6TTQgMTJjMC0yLjk1IDEuNjEtNS41MyA0LTYuOTJWMTJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvb2ZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxOGgtMnYtMmgydjJ6bTItNEg5djZoNnYtNnptNC00LjdWNGgtM3YyLjZMMTIgMyAyIDEyaDNsNy02LjMxTDE5IDEyaDNsLTMtMi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm9vbVByZWZlcmVuY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNjkgMTYuMzcgMS4xNC0xLTEtMS43My0xLjQ1LjQ5Yy0uMzItLjI3LS42OC0uNDgtMS4wOC0uNjNMMTkgMTJoLTJsLS4zIDEuNDljLS40LjE1LS43Ni4zNi0xLjA4LjYzbC0xLjQ1LS40OS0xIDEuNzMgMS4xNCAxYy0uMDguNS0uMDguNzYgMCAxLjI2bC0xLjE0IDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE3IDIyaDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMWMuMDgtLjUxLjA4LS43NyAwLTEuMjd6TTE4IDE5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMS0xNXY2aC0yVjZoLTJ2NmgtMlY1SDd2MTRoNXYySDN2LTJoMlYzaDEwdjFoNHptLTcgOWgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb29tU2VydmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTggMTdIMnYyaDIwdi0yek0yMSAxNmMtLjI3LTQuMDctMy4yNS03LjQtNy4xNi04LjIxQTIuMDA2IDIuMDA2IDAgMCAwIDEyIDVhMi4wMDYgMi4wMDYgMCAwIDAtMS44NCAyLjc5QzYuMjUgOC42IDMuMjcgMTEuOTMgMyAxNmgxOHptLTktNi40MmMyLjk1IDAgNS40NyAxLjgzIDYuNSA0LjQxaC0xM0E3LjAwMiA3LjAwMiAwIDAgMSAxMiA5LjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUnZIb29rdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE3di02YzAtMS4xLS45LTItMi0ySDdWN2wtMyAzIDMgM3YtMmg0djNINHYzYzAgMS4xLjkgMiAyIDJoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDh2LTJoLTJ6bS05IDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNy02aC00di0zaDR2M3pNMTcgMnYySDl2Mmg4djJsMy0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNtb2tlRnJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAxM0gyMnYzaC0xLjV6TTE4IDEzaDEuNXYzSDE4em0tMSAwaC0yLjM0TDE3IDE1LjM0em0tMi41LTQuMzVoMS41M2MxLjA1IDAgMS45Ny43NCAxLjk3IDIuMDVWMTJoMS41di0xLjY0YzAtMS44MS0xLjYtMy4xNi0zLjQ3LTMuMTZIMTQuNWMtMS4wMiAwLTEuODUtLjk4LTEuODUtMnMuODMtMS43NSAxLjg1LTEuNzV2LTEuNWEzLjM1IDMuMzUgMCAwIDAgMCA2Ljd6bTQuMzUtMy45MmMuNjItLjYxIDEtMS40NSAxLTIuMzhoLTEuNWMwIDEuMDItLjgzIDEuODUtMS44NSAxLjg1djEuNWMyLjI0IDAgNCAxLjgzIDQgNC4wN1YxMkgyMlY5Ljc2YzAtMi4yMi0xLjI4LTQuMTQtMy4xNS01LjAzek0zLjQxIDQuNTkgMiA2bDcgN0gydjNoMTBsNyA3IDEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNtb2tpbmdSb29tcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTZoMS41djNIMTh6TTIgMTZoMTV2M0gyem0xNC4wMy01LjhIMTQuNWMtMS4wMiAwLTEuODUtLjk4LTEuODUtMnMuODMtMS43NSAxLjg1LTEuNzV2LTEuNWEzLjM1IDMuMzUgMCAwIDAgMCA2LjdoMS41M2MxLjA1IDAgMS45Ny43NCAxLjk3IDIuMDVWMTVoMS41di0xLjY0YzAtMS44MS0xLjYtMy4xNi0zLjQ3LTMuMTZ6TTIwLjUgMTZIMjJ2M2gtMS41em0tMS42NS04LjI3Yy42Mi0uNjEgMS0xLjQ1IDEtMi4zOEMxOS44NSAzLjUgMTguMzUgMiAxNi41IDJ2MS41YzEuMDIgMCAxLjg1LjgzIDEuODUgMS44NVMxNy41MiA3LjIgMTYuNSA3LjJ2MS41YzIuMjQgMCA0IDEuODMgNCA0LjA3VjE1SDIydi0yLjI0YzAtMi4yMi0xLjI4LTQuMTQtMy4xNS01LjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU29hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjI1IDZjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1bTAtMS41QzEzLjAxIDQuNSAxMiA1LjUxIDEyIDYuNzVTMTMuMDEgOSAxNC4yNSA5czIuMjUtMS4wMSAyLjI1LTIuMjUtMS4wMS0yLjI1LTIuMjUtMi4yNXptNS43NSAxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNS0uNS0uMjItLjUtLjUuMjItLjUuNS0uNU0yMCA0Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTMuNS0zYy0uODMgMC0xLjUuNjctMS41IDEuNVMxNS42NyA0IDE2LjUgNCAxOCAzLjMzIDE4IDIuNSAxNy4zMyAxIDE2LjUgMXptNC4yNSAxNWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNi43NWMuNjkgMCAxLjI1LS41NiAxLjI1LTEuMjUgMC0uNjctLjUzLTEuMi0xLjE4LTEuMjRMOC44NyAxMGwxLjQ4LTIuNmMuMDktLjE3LjE0LS4zNC4xNC0uNTQgMC0uMjYtLjA5LS41LS4yNi0uN0w5LjEyIDVsLTcuMTggNi44Yy0uNi41Ni0uOTQgMS4zNS0uOTQgMi4xN1YyMGMwIDEuNjYgMS4zNCAzIDMgM2gxMy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoOC43NXpNMTAgMjFINGMtLjU1IDAtMS0uNDUtMS0xdi02YzAtLjM5LjIzLS42NC4zNi0uNzVMNyA5Ljg3VjEyaDN2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDkgOS42M2MtLjE4LTIuNzktMS4zMS01LjUxLTMuNDMtNy42M2ExMi4xODggMTIuMTg4IDAgMCAwLTMuNTUgNy42M2MxLjI4LjY4IDIuNDYgMS41NiAzLjQ5IDIuNjMgMS4wMy0xLjA2IDIuMjEtMS45NCAzLjQ5LTIuNjN6bS0zLjQ0LTQuNDRjLjYzIDEuMDMgMS4wNyAyLjE4IDEuMyAzLjM4LS40Ny4zLS45MS42My0xLjM0Ljk4LS40Mi0uMzQtLjg3LS42Ny0xLjMzLS45Ny4yNS0xLjIuNzEtMi4zNSAxLjM3LTMuMzl6TTEyIDE1LjQ1YTEyLjExIDEyLjExIDAgMCAwLTMuMDYtMy4yYy0uMTMtLjA5LS4yNy0uMTYtLjQtLjI2LjEzLjA5LjI3LjE3LjM5LjI1QTExLjc3NyAxMS43NzcgMCAwIDAgMiAxMGMwIDUuMzIgMy4zNiA5LjgyIDguMDMgMTEuNDkuNjMuMjMgMS4yOS40IDEuOTcuNTEuNjgtLjEyIDEuMzMtLjI5IDEuOTctLjUxQzE4LjY0IDE5LjgyIDIyIDE1LjMyIDIyIDEwYy00LjE4IDAtNy44NSAyLjE3LTEwIDUuNDV6bTEuMzIgNC4xNWMtLjQ0LjE1LS44OC4yNy0xLjMzLjM3LS40NC0uMDktLjg3LS4yMS0xLjI4LS4zNi0zLjI5LTEuMTgtNS43LTMuOTktNi40NS03LjM1IDEuMS4yNiAyLjE1LjcxIDMuMTIgMS4zM2wtLjAyLjAxYy4xMy4wOS4yNi4xOC4zOS4yNWwuMDcuMDRjLjk5LjcyIDEuODQgMS42MSAyLjUxIDIuNjVMMTIgMTkuMWwxLjY3LTIuNTVhMTAuMTkgMTAuMTkgMCAwIDEgMi41My0yLjY2bC4wNy0uMDVjLjA5LS4wNS4xOC0uMTEuMjctLjE3bC0uMDEtLjAyYy45OC0uNjUgMi4wNy0xLjEzIDMuMjEtMS40LS43NSAzLjM3LTMuMTUgNi4xOC02LjQyIDcuMzV6bS00LjMzLTcuMzJjLS4wMi0uMDEtLjA0LS4wMy0uMDUtLjA0IDAgMCAuMDEgMCAuMDEuMDEuMDEuMDEuMDIuMDIuMDQuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOUg4di02LjYzYzEuMjYtLjM0IDIuMTEtMS4yNyAyLjc3LTEuOTlDMTEuNiA5LjQ3IDEyLjA4IDkgMTMgOWgydjEwek0xMCAyLjAyYy0xLjg5IDAtMy41MSAxLjExLTQuMjcgMi43MUM0LjE1IDUuMjYgMyA2Ljc0IDMgOC41YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjIxaDExdi0yaDJjMS4xIDAgMi0uOSAyLTJ2LTZjMC0xLjEtLjktMi0yLTJoLTEuNTZjLjM1LS41OS41Ni0xLjI3LjU2LTIgMC0yLjIxLTEuNzktNC00LTQtLjM0IDAtLjY2LjA1LS45OC4xM0E0LjcwNyA0LjcwNyAwIDAgMCAxMCAyLjAyek03IDEwLjVjLTEuMSAwLTItLjktMi0yIDAtLjg1LjU1LTEuNiAxLjM3LTEuODhsLjgtLjI3LjM2LS43NkM4IDQuNjIgOC45NCA0LjAyIDEwIDQuMDJjLjc5IDAgMS4zOS4zNSAxLjc0LjY1bC43OC42NVMxMy4xNiA1IDEzLjk5IDVjMS4xIDAgMiAuOSAyIDJoLTNDOS42NyA3IDkuMTUgMTAuNSA3IDEwLjV6TTE3IDE3di02aDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YWlycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDV2MTRINVY1aDE0bTAtMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0xIDNoLTQuNDJ2My4zM0gxMXYzLjMzSDguNDJWMTZINnYyaDQuNDJ2LTMuMzNIMTN2LTMuMzNoMi41OFY4SDE4VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9yZWZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuOSA4Ljg5LTEuMDUtNC4zN2MtLjIyLS45LTEtMS41Mi0xLjkxLTEuNTJINS4wNWMtLjkgMC0xLjY5LjYzLTEuOSAxLjUyTDIuMSA4Ljg5Yy0uMjQgMS4wMi0uMDIgMi4wNi42MiAyLjg4LjA4LjExLjE5LjE5LjI4LjI5VjE5YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTYuOTRjLjA5LS4wOS4yLS4xOC4yOC0uMjguNjQtLjgyLjg3LTEuODcuNjItMi44OXptLTIuOTktMy45IDEuMDUgNC4zN2MuMS40Mi4wMS44NC0uMjUgMS4xNy0uMTQuMTgtLjQ0LjQ3LS45NC40Ny0uNjEgMC0xLjE0LS40OS0xLjIxLTEuMTRMMTYuOTggNWwxLjkzLS4wMXpNMTMgNWgxLjk2bC41NCA0LjUyYy4wNS4zOS0uMDcuNzgtLjMzIDEuMDctLjIyLjI2LS41NC40MS0uOTUuNDEtLjY3IDAtMS4yMi0uNTktMS4yMi0xLjMxVjV6TTguNDkgOS41MiA5LjA0IDVIMTF2NC42OWMwIC43Mi0uNTUgMS4zMS0xLjI5IDEuMzEtLjM0IDAtLjY1LS4xNS0uODktLjQxYTEuNDIgMS40MiAwIDAgMS0uMzMtMS4wN3ptLTQuNDUtLjE2TDUuMDUgNWgxLjk3bC0uNTggNC44NmMtLjA4LjY1LS42IDEuMTQtMS4yMSAxLjE0LS40OSAwLS44LS4yOS0uOTMtLjQ3LS4yNy0uMzItLjM2LS43NS0uMjYtMS4xN3pNNSAxOXYtNi4wM2MuMDguMDEuMTUuMDMuMjMuMDMuODcgMCAxLjY2LS4zNiAyLjI0LS45NS42LjYgMS40Ljk1IDIuMzEuOTUuODcgMCAxLjY1LS4zNiAyLjIzLS45My41OS41NyAxLjM5LjkzIDIuMjkuOTMuODQgMCAxLjY0LS4zNSAyLjI0LS45NS41OC41OSAxLjM3Ljk1IDIuMjQuOTUuMDggMCAuMTUtLjAyLjIzLS4wM1YxOUg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3Ryb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTYgMThjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem05LTkuMzRMOS42IDE1SDE1VjguNjZNMTguNjUgM0MyMC41MiAzIDIyIDQuNTYgMjIgNi40OFY3aC0ydi0uNTJDMjAgNS42NiAxOS40MiA1IDE4LjY1IDVjLS42OCAwLTEuMDcuNTktMS42NSAxLjI3VjE1YzAgMS4xLS45IDItMiAySDcuNDNjLS44NSAwLTEuMzEtMS0uNzYtMS42NWw4LjgtMTAuMzJDMTYuMTEgNC4yNyAxNi45OSAzIDE4LjY1IDN6TTEwIDVjLS42NSAwLTEuMjkuMDktMS45MS4yN2wxLjQgMS40IDEuMzctMS42MUE2LjExIDYuMTEgMCAwIDAgMTAgNW0wLTJjMS41NiAwIDMuMDMuNCA0LjMgMS4xTDkuNiA5LjYxIDQuNzIgNC43MkE4Ljk2MiA4Ljk2MiAwIDAgMSAxMCAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFwYXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMFYxaC04djljMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMjFoLTJ2Mmg2di0yaC0ydi03LjE0YzEuNzItLjQ1IDMtMiAzLTMuODZ6bS0yLTd2M2gtNFYzaDR6bS00IDdWOGg0djJjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yem0tNi0xSDhWOGgyYTIuNSAyLjUgMCAwIDAgMC01SDhWMUg2djJINGEyLjUgMi41IDAgMCAwIDAgNWgydjFINGEyLjUgMi41IDAgMCAwIDAgNWgydjloMnYtOWgyYTIuNSAyLjUgMCAwIDAgMC01ek00IDZjLS4yOCAwLS41LS4yMi0uNS0uNVMzLjcyIDUgNCA1aDZjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41SDR6bTYgNkg0Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoNmMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2aC0yVjRoMnYyem0yIDFoLTJ2MmgyVjd6bTEgMmgyVjdoLTJ2MnptMC01aC0ydjJoMlY0em0tNCAzaC0ydjJoMlY3em00IDNoLTJ2Mmgydi0yem0tMyAwaC0ydjJoMnYtMnptLTMtNmgtMnYyaDJWNHptNyAxMS44MnY0LjE1YzAgLjU2LS40NyAxLjAzLTEuMDMgMS0yLjg5LS4xNy01LjYtMS4wMy03Ljk3LTIuNEExNy45OTkgMTcuOTk5IDAgMCAxIDQuNDMgMTJhMTcuODkgMTcuODkgMCAwIDEtMi40LTcuOTdDMiAzLjQ3IDIuNDcgMyAzLjAzIDNoNC4xNWMuNDggMCAuODkuMzQuOTguOGwuNzQgMy42OGEuOTkuOTkgMCAwIDEtLjI3LjlMNi4xIDEwLjljMS40MyAyLjUgMy41IDQuNTcgNiA2bDIuNTItMi41MmEuOTguOTggMCAwIDEgLjktLjI3bDMuNjcuNzNjLjQ3LjA5LjgxLjUuODEuOTh6TTUuMTggOC45OWwxLjY1LTEuNjVMNi4zNiA1SDQuMTNjLjE3IDEuMzcuNTMgMi43MSAxLjA1IDMuOTl6TTE4IDE2LjY0bC0yLjM0LS40Ny0xLjY1IDEuNjVjMS4yOC41MiAyLjYzLjg3IDMuOTkgMS4wNXYtMi4yM3pNMjAgNHYyaDJWNGgtMnptMCA4aDJ2LTJoLTJ2MnptLTctMmgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVbWJyZWxsYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgNi45MiAxMyA1Ljc3VjMuNGMwLS4yNi4yMi0uNDguNS0uNDhzLjUuMjEuNS40OFY0aDJ2LS42QzE2IDIuMDcgMTQuODggMSAxMy41IDFTMTEgMi4wNyAxMSAzLjR2Mi4zN0w5LjUgNi45MiA2IDYuMDdsNS4wNSAxNS4yNWMuMTUuNDUuNTUuNjguOTUuNjhzLjgtLjIzLjk1LS42OUwxOCA2LjA3bC0zLjUuODV6TTEzLjI4IDguNWwuNzYuNTguOTItLjIzTDEzIDE0LjhWOC4yOWwuMjguMjF6bS0zLjMyLjU5Ljc2LS41OC4yOC0uMjJ2Ni41MUw5LjAzIDguODZsLjkzLjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmFwZUZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2LjVoMWMxLjMzIDAgMi43MS0uMTggNC0uNXYzYy0xLjI5LS4zMi0yLjY3LS41LTQtLjVIMnYtMnpNMTYuMTcgMTlIOHYtM2g1LjE3TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDEtMy42LTMuNnptMi42Ni0zSDIydjNoLS4xN2wtMy0zek0xMSAxNy41YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNS4yMi41LjUuNS41LS4yMi41LS41em0xMS00Ljc0VjE1aC0xLjV2LTIuMjNjMC0yLjI0LTEuNzYtNC4wNy00LTQuMDdWNy4yYzEuMDIgMCAxLjg1LS44MyAxLjg1LTEuODVTMTcuNTIgMy41IDE2LjUgMy41VjJjMS44NSAwIDMuMzUgMS41IDMuMzUgMy4zNSAwIC45My0uMzggMS43Ny0xIDIuMzggMS44Ny44OSAzLjE1IDIuODEgMy4xNSA1LjAzek0xMS4xNSA4LjMyVjguM2MwLTEuODUgMS41LTMuMzUgMy4zNS0zLjM1djEuNWMtMS4wMiAwLTEuODUuNzMtMS44NSAxLjc1cy44MyAyIDEuODUgMmgxLjUzYzEuODcgMCAzLjQ3IDEuMzUgMy40NyAzLjE2VjE1SDE4di0xLjNjMC0xLjMxLS45Mi0yLjA1LTEuOTctMi4wNWgtMS41NWwtMy4zMy0zLjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmFwaW5nUm9vbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2LjVoMWMxLjMzIDAgMi43MS0uMTggNC0uNXYzYy0xLjI5LS4zMi0yLjY3LS41LTQtLjVIMnYtMnptMjAtLjV2M0g4di0zaDE0em0tMTEgMS41YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNS4yMi41LjUuNS41LS4yMi41LS41em0xMS00Ljc0VjE1aC0xLjV2LTIuMjNjMC0yLjI0LTEuNzYtNC4wNy00LTQuMDdWNy4yYzEuMDIgMCAxLjg1LS44MyAxLjg1LTEuODVTMTcuNTIgMy41IDE2LjUgMy41VjJjMS44NSAwIDMuMzUgMS41IDMuMzUgMy4zNSAwIC45My0uMzggMS43Ny0xIDIuMzggMS44Ny44OSAzLjE1IDIuODEgMy4xNSA1LjAzem0tMi41LjZWMTVIMTh2LTEuM2MwLTEuMzEtLjkyLTIuMDUtMS45Ny0yLjA1SDE0LjVhMy4zNSAzLjM1IDAgMCAxIDAtNi43djEuNWMtMS4wMiAwLTEuODUuNzMtMS44NSAxLjc1cy44MyAyIDEuODUgMmgxLjUzYzEuODcgMCAzLjQ3IDEuMzUgMy40NyAzLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMGMtMS4xIDAtMiAuOS0yIDJoLTFWM0wzIDh2MTNoMTh2LTljMC0xLjEtLjktMi0yLTJ6TTUgOS4zN2w5LTMuNDZWMTJIOXY3SDVWOS4zN3pNMTkgMTloLTN2LTNoLTJ2M2gtM3YtNWg4djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNzUgMTZhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDYuNzVjLjY5IDAgMS4yNS0uNTYgMS4yNS0xLjI1IDAtLjY3LS41My0xLjItMS4xOC0xLjI0TDguODcgMTBsMS40OC0yLjZjLjA5LS4xNy4xNC0uMzQuMTQtLjU0IDAtLjI2LS4wOS0uNS0uMjYtLjdMOS4xMiA1bC03LjE4IDYuOGMtLjYuNTYtLjk0IDEuMzUtLjk0IDIuMTdWMjBjMCAxLjY2IDEuMzQgMyAzIDNoMTMuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDcuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDguNzV6TTEwIDIxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNmMwLS4zOS4yMy0uNjQuMzYtLjc1TDcgOS44N1YxMmgzdjl6bTMuNS0xMmMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uODQtMS41LTIuNS0xLjUtMi41UzEyIDYuNjYgMTIgNy41YzAgLjgzLjY3IDEuNSAxLjUgMS41em01LThTMTYgMy44MyAxNiA1LjVhMi41IDIuNSAwIDAgMCA1IDBDMjEgMy44MyAxOC41IDEgMTguNSAxem0wIDUuNWMtLjU1IDAtMS0uNDUtMS0xIDAtLjQuNDMtMS4yMiAxLTIuMDUuNTcuODMgMSAxLjY1IDEgMi4wNSAwIC41NS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXRlckRhbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMiAxMmgzdjhoMTR2LThoM0wxMiAzek03IDE4di03LjgxbDUtNC41IDUgNC41VjE4SDd6bTctNGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgMi00IDItNCAyIDIuOSAyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaGVlbGNoYWlyUGlja3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDRjMC0xLjExLjg5LTIgMi0yczIgLjg5IDIgMi0uODkgMi0yIDItMi0uODktMi0yem01LjUgNi45NVY5YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjZoMnY3aDMuNXYtLjExYy0xLjI0LTEuMjYtMi0yLjk5LTItNC44OSAwLTIuNTggMS40MS00Ljg0IDMuNS02LjA1ek0xNi41IDE3YzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zYzAtMS4xMS42MS0yLjA2IDEuNS0yLjU4di0yLjE2Yy0yLjAyLjY0LTMuNSAyLjUxLTMuNSA0Ljc0IDAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVoLTJ6bTMuMDQtM0gxNVY4aC0ydjhoNS40NmwyLjQ3IDMuNzEgMS42Ni0xLjExLTMuMDUtNC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0aHJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxLS40NSAxLTEgMS0xLS40NS0xLTF6bTQgMWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0zIDBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptLTMtNy41Yy0xLjc2IDAtMy4yMiAxLjMxLTMuNDYgM2g2LjkzYTMuNTIgMy41MiAwIDAgMC0zLjQ3LTNNMTIgNmMyLjc2IDAgNSAyLjI0IDUgNXYxSDd2LTFjMC0yLjc2IDIuMjQtNSA1LTV6TTkgMThjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMyAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTMgMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem01LTE0SDR2MTZoMTZWNG0wLTJjMS4xIDAgMiAuOSAyIDJ2MTZjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMC43OFY4YzAtMS42NS0xLjM1LTMtMy0zaC00Yy0uNzcgMC0xLjQ3LjMtMiAuNzgtLjUzLS40OC0xLjIzLS43OC0yLS43OEg2QzQuMzUgNSAzIDYuMzUgMyA4djIuNzhjLS42MS41NS0xIDEuMzQtMSAyLjIydjZoMnYtMmgxNnYyaDJ2LTZjMC0uODgtLjM5LTEuNjctMS0yLjIyek0xNCA3aDRjLjU1IDAgMSAuNDUgMSAxdjJoLTZWOGMwLS41NS40NS0xIDEtMXpNNSA4YzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjJINVY4em0tMSA3di0yYzAtLjU1LjQ1LTEgMS0xaDE0Yy41NSAwIDEgLjQ1IDEgMXYySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCZWRyb29tQmFieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTQgMTQuMDRjLS4zNC4zNC0uNzEuNjQtMS4xLjkyTDE2IDEzLjVWMTFoMXYtMWgtNS42Mkw5LjY1IDdINmwxIC43Nkw1LjUgOS41bC45NSAxTDggOS41MXYzLjk5bC0uODQgMS40NmMtLjM5LS4yNy0uNzYtLjU4LTEuMS0uOTJMNSAxNS4xYzEuODcgMS44NyA0LjM2IDIuOSA3IDIuOXM1LjEzLTEuMDMgNy0yLjlsLTEuMDYtMS4wNnptLTkuNDkgMS42Ny4wMy0uMDYuODEtMS40MWMxLjc0LjY1IDMuNjYuNjUgNS40IDBsLjgxIDEuNDEuMDMuMDZjLTEuMS41MS0yLjMuNzktMy41NS43OXMtMi40My0uMjctMy41My0uNzl6TTIwIDR2MTZINFY0aDE2bTAtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCZWRyb29tQ2hpbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDR2MTZINFY0aDE2bTAtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0zLjUgOC42N1Y5YzAtMS4xLS45LTItMi0yaC01Yy0xLjEgMC0yIC45LTIgMnYxLjY3Yy0uODguMzUtMS41IDEuMi0xLjUgMi4yVjE3aDEuNXYtMS41aDlWMTdIMTh2LTQuMTNjMC0xLS42Mi0xLjg1LTEuNS0yLjJ6TTE1IDguNXYySDl2LTJoNnptLTcuNSA0LjM3YzAtLjQ4LjM5LS44Ny44Ny0uODdoNy4yN2MuNDggMCAuODcuMzkuODcuODdWMTRoLTl2LTEuMTNINy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVkcm9vbVBhcmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzUgMTEuNDVWOWMwLTEuMS0uOS0yLTItMkgxM2MtLjM3IDAtLjcyLjEyLTEgLjMyLS4yOC0uMi0uNjMtLjMyLTEtLjMySDcuNjVjLTEuMSAwLTIgLjktMiAydjIuNDVjLS40LjQ2LS42NSAxLjA2LS42NSAxLjcyVjE3aDEuNXYtMS41aDExVjE3SDE5di0zLjgzYzAtLjY2LS4yNS0xLjI2LS42NS0xLjcyem0tMS42LS45NWgtNHYtMmg0djJ6bS05LjUtMmg0djJoLTR2LTJ6TTE3LjUgMTRoLTExdi0xYzAtLjU1LjQ1LTEgMS0xaDljLjU1IDAgMSAuNDUgMSAxdjF6TTIwIDR2MTZINFY0aDE2bTAtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbGVuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4xMyAxNS4xMyAxOCAzaC00VjJoLTR2MUg1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMi4yM2wuNjQgNC4xM0M2Ljc0IDE2LjA1IDYgMTcuNDMgNiAxOXYxYzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMnYtMWMwLTEuNTctLjc0LTIuOTUtMS44Ny0zLjg3ek01IDlWNWgxLjMxbC42MiA0SDV6bTEwLjY3LTQtMS4zOCA5SDkuNzJMOC4zMyA1aDcuMzR6TTE2IDIwSDh2LTFjMC0xLjY1IDEuMzUtMyAzLTNoMmMxLjY1IDAgMyAxLjM1IDMgM3YxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYUluZG9vciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTN2LTFjMC0uNTUtLjQ1LTEtMS0xSDljLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0xbDIgMS4wNnYtNC4xMkwxNCAxM3ptLTItNy41IDYgNC41djlINnYtOWw2LTQuNU0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmFPdXRkb29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0xbDIgMS4wNnYtNC4xMkwxOCAxNHYtMXpNMTIgMyA0IDl2MTJoMTZ2LTJINnYtOWw2LTQuNSA2IDQuNXYxaDJWOWwtOC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hhaXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2M2MwIDEuMS45IDIgMiAyaDF2Mkg3Yy0xLjEgMC0yIC45LTIgMnY3aDJ2LTNoMTB2M2gydi03YzAtMS4xLS45LTItMi0yaC0xdi0yaDF6TTcgOFY1aDEwdjNIN3ptMTAgOEg3di0yaDEwdjJ6bS0zLTRoLTR2LTJoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhWNmMwLTEuNjUtMS4zNS0zLTMtM0g3QzUuMzUgMyA0IDQuMzUgNCA2djJjLTEuNjUgMC0zIDEuMzUtMyAzdjVjMCAxLjY1IDEuMzUgMyAzIDN2MWMwIC41NS40NSAxIDEgMXMxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMXMxLS40NSAxLTF2LTFjMS42NSAwIDMtMS4zNSAzLTN2LTVjMC0xLjY1LTEuMzUtMy0zLTN6TTYgNmMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF2Mi43OGMtLjYxLjU1LTEgMS4zNC0xIDIuMjJ2Mkg3di0yYzAtLjg4LS4zOS0xLjY3LTEtMi4yMlY2em0xNSAxMGMwIC41NS0uNDUgMS0xIDFINGMtLjU1IDAtMS0uNDUtMS0xdi01YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXY0aDE0di00YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29mZmVlTWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDZWNGgyVjJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNHYtMmgtNC4wM0E0Ljk2NiA0Ljk2NiAwIDAgMCAxOCAxNnYtNUg4djVjMCAxLjY0LjgxIDMuMDkgMi4wMyA0SDZWNGgydjJjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF6bS04IDEwdi0zaDZ2M2MwIDEuNjUtMS4zNSAzLTMgM3MtMy0xLjM1LTMtM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxM1wiLFwiY3lcIjpcIjlcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvZmZlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAzSDZjLTEuMSAwLTIgLjktMiAydjUuNzFjMCAzLjgzIDIuOTUgNy4xOCA2Ljc4IDcuMjkgMy45Ni4xMiA3LjIyLTMuMDYgNy4yMi03di0xaC41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzIwLjQzIDMgMTguNSAzek0xNiA1djNINlY1aDEwem0wIDV2MWMwIDIuNzYtMi4yNCA1LTUgNXMtNS0yLjI0LTUtNXYtMW0xMi41LTJIMThWNWguNWMuODMgMCAxLjUuNjcgMS41IDEuNVMxOS4zMyA4IDE4LjUgOHpNNCAxOWgxNnYySDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljc1IDZjLTEuMzcgMC0yLjUgMS41Mi0yLjUgMy40IDAgMS40OC43IDIuNzEgMS42NyAzLjE4bC4wOC4wNFYxOWgxLjV2LTYuMzhsLjA4LS4wM2MuOTctLjQ3IDEuNjctMS43IDEuNjctMy4xOCAwLTEuODgtMS4xMi0zLjQxLTIuNS0zLjQxTTEwLjUgNmMtLjI3IDAtLjUuMjItLjUuNVY5aC0uNzVWNi41YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNVY5SDcuNVY2LjVjMC0uMjgtLjIyLS41LS41LS41cy0uNS4yMi0uNS41djMuOGMwIC45My42NCAxLjcxIDEuNSAxLjkzVjE5aDEuNXYtNi43N2MuODYtLjIyIDEuNS0xIDEuNS0xLjkzVjYuNWMwLS4yOC0uMjItLjUtLjUtLjV6TTIwIDRINHYxNmgxNlY0bTAtMmMxLjEgMCAyIC45IDIgMnYxNmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb29yQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlWNWMwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxNEgzdjJoMTh2LTJoLTJ6bS0yIDBIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDExaDJ2Mkg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9vckZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOVY1YzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjE0SDN2MmgxOHYtMmgtMnptLTIgMEg3VjVoMTB2MTR6bS00LThoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9vclNsaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzSDh2LTJoMnYyem02LTJoLTJ2Mmgydi0yem01IDh2Mkgzdi0yaDFWNWMwLTEuMS45LTIgMi0yaDEyYzEuMSAwIDIgLjkgMiAydjE0aDF6TTExIDVINnYxNGg1VjV6bTcgMGgtNXYxNGg1VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb29yYmVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTYuNWgyYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xem00LTEuNXYtMi4zNGMwLTEuNTQtLjgxLTIuODItMi4yNS0zLjE2di0uMjVjMC0uNDEtLjM0LS43NS0uNzUtLjc1cy0uNzUuMzQtLjc1Ljc1di4yNUM5LjgyIDkuODQgOSAxMS4xMiA5IDEyLjY2VjE1SDh2MWg4di0xaC0xem0tMy05LjVMNiAxMHY5aDEydi05bC02LTQuNU0xMiAzbDggNnYxMkg0VjlsOC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjhsLTUtNXptMyAxNkg1VjVoMTB2NGg0djEwek03IDE3aDEwdi0ySDd2MnptNS0xMEg3djJoNVY3em0tNSA2aDEwdi0ySDd2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsYXR3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3LjA4YzAgMS43Ny0uODQgMy4yNS0yIDMuODJWMjFoLTJWMTAuOWMtMS4xNi0uNTctMi0yLjA1LTItMy44MkMxMC4wMSA0LjgzIDExLjM1IDMgMTMgM2MxLjY2IDAgMyAxLjgzIDMgNC4wOHpNMTcgM3YxOGgydi04aDJWN2MwLTEuNzYtMS4yNC00LTQtNHpNOC4yOCAzYy0uNCAwLS43Mi4zMi0uNzIuNzJWN2gtLjg0VjMuNzJDNi43MiAzLjMyIDYuNCAzIDYgM3MtLjcyLjMyLS43Mi43MlY3aC0uODRWMy43MmMwLS40LS4zMi0uNzItLjcyLS43MlMzIDMuMzIgMyAzLjcyVjljMCAxLjEuOSAyIDIgMnYxMGgyVjExYzEuMSAwIDItLjkgMi0yVjMuNzJjMC0uNC0uMzItLjcyLS43Mi0uNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHYXJhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDRWNGgxNnYxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNzggMTguNWguNDRjLjQzIDAgLjc4LS4zNi43OC0uODFWMTYuNWgxMHYxLjE5YzAgLjQ1LjM0LjgxLjc4LjgxaC40NGMuNDMgMCAuNzgtLjM2Ljc4LS44MXYtNi41Yy0uODItMi40Ni0xLjM0LTQuMDMtMS41Ni00LjY5LS4wNS0uMTYtLjEyLS4yOS0uMTktLjQtLjAyLS4wMi0uMDMtLjA0LS4wNS0uMDctLjM4LS41Mi0uOTItLjUzLS45Mi0uNTNINy43MnMtLjU0LjAxLS45Mi41NGMtLjAyLjAyLS4wMy4wNC0uMDUuMDYtLjA3LjExLS4xNC4yNC0uMTkuNC0uMjIuNjYtLjc0IDIuMjItMS41NiA0LjY5djYuNWMwIC40NS4zNS44MS43OC44MXptMi41NS0xMWg3LjM0bC4yMy42OS40MyAxLjMxSDcuNjdsLjY2LTJ6TTcgMTEuNTF2LS4wMWgxMHYzSDd2LTIuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNi4wNlYzaC0ydjMuMDZjLTQuNS41LTggNC4zMS04IDguOTNDMyAxNi4xIDMuOSAxNyA1LjAxIDE3SDhjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGgyLjk5YzEuMTEgMCAyLjAxLS45IDIuMDEtMi4wMSAwLTQuNjItMy41LTguNDMtOC04Ljkzek0xMiAxOWMtMS4xIDAtMi0uOS0yLTJoNGMwIDEuMS0uOSAyLTIgMnptMC00SDVjMC0zLjg2IDMuMTQtNyA3LTdzNyAzLjE0IDcgN2gtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNzUgMTAuMzVWOWMwLTEuNjYtMS4zNC0zLTMtM2gtNS41Yy0xLjY2IDAtMyAxLjM0LTMgM3YxLjM1QzUuNTEgMTAuNzggNSAxMS41OCA1IDEyLjVWMTZjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtMy41YzAtLjkyLS41MS0xLjcyLTEuMjUtMi4xNXpNOS4yNSA3LjVoNS41Yy44MyAwIDEuNS42NyAxLjUgMS41djEuMDNBMi40OCAyLjQ4IDAgMCAwIDE0IDEyLjV2LjVoLTR2LS41YzAtMS4zLS45OS0yLjM1LTIuMjUtMi40N1Y5YzAtLjgzLjY3LTEuNSAxLjUtMS41ek0xNy41IDE2YzAgLjI4LS4yMi41LS41LjVIN2MtLjI4IDAtLjUtLjIyLS41LS41di0zLjVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjJoN3YtMmMwLS41NS40NS0xIDEtMXMxIC40NSAxIDFWMTZ6TTIwIDR2MTZINFY0aDE2bTAtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYW5hZ2VTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOUgyVjdoNXYyem0wIDNIMnYyaDV2LTJ6bTEzLjU5IDctMy44My0zLjgzYy0uOC41Mi0xLjc0LjgzLTIuNzYuODMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1YzAgMS4wMi0uMzEgMS45Ni0uODMgMi43NUwyMiAxNy41OSAyMC41OSAxOXpNMTcgMTFjMC0xLjY1LTEuMzUtMy0zLTNzLTMgMS4zNS0zIDMgMS4zNSAzIDMgMyAzLTEuMzUgMy0zek0yIDE5aDEwdi0ySDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvZGNhc3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMmMwIC43NC0uNCAxLjM4LTEgMS43MlYyMmgtMnYtOC4yOGMtLjYtLjM1LTEtLjk4LTEtMS43MiAwLTEuMS45LTIgMi0yczIgLjkgMiAyem0tMi02Yy0zLjMxIDAtNiAyLjY5LTYgNiAwIDEuNzQuNzUgMy4zMSAxLjk0IDQuNGwxLjQyLTEuNDJBMy45NTcgMy45NTcgMCAwIDEgOCAxMmMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMS4xOS0uNTMgMi4yNS0xLjM2IDIuOThsMS40MiAxLjQyQTUuOTU3IDUuOTU3IDAgMCAwIDE4IDEyYzAtMy4zMS0yLjY5LTYtNi02em0wLTRDNi40OCAyIDIgNi40OCAyIDEyYzAgMi44NSAxLjIgNS40MSAzLjExIDcuMjRsMS40Mi0xLjQyQTcuOTg3IDcuOTg3IDAgMCAxIDQgMTJjMC00LjQxIDMuNTktOCA4LThzOCAzLjU5IDggOGMwIDIuMjktLjk4IDQuMzYtMi41MyA1LjgybDEuNDIgMS40MkMyMC44IDE3LjQxIDIyIDE0Ljg1IDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2hvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE3YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6bTMtMWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem00IDBjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMy00djJINXYtMmMwLTMuNTMgMi42MS02LjQzIDYtNi45MlYzaDJ2Mi4wOGMzLjM5LjQ5IDYgMy4zOSA2IDYuOTJ6bS0yIDBjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDVoMTB6bS05IDdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNCAwYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTQgMGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFibGVCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA3LjVDMjIgNS41NyAxNy41MiA0IDEyIDRTMiA1LjU3IDIgNy41YzAgMS44MSAzLjk1IDMuMzEgOSAzLjQ4VjE1SDkuMzVjLS44MiAwLTEuNTUuNS0xLjg2IDEuMjZMNiAyMGgybDEuMi0zaDUuNmwxLjIgM2gybC0xLjUtMy43NGMtLjMtLjc2LTEuMDQtMS4yNi0xLjg1LTEuMjZIMTN2LTQuMDJjNS4wNS0uMTcgOS0xLjY3IDktMy40OHpNMTIgNmM0LjA1IDAgNi43NC44NiA3LjcyIDEuNUMxOC43NCA4LjE0IDE2LjA1IDkgMTIgOXMtNi43NC0uODYtNy43Mi0xLjVDNS4yNiA2Ljg2IDcuOTUgNiAxMiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFibGVSZXN0YXVyYW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuOTYgOS43My0xLjQzLTVhLjk5Ni45OTYgMCAwIDAtLjk2LS43M0g0LjQzYy0uNDUgMC0uODQuMy0uOTYuNzNsLTEuNDMgNWMtLjE4LjYzLjMgMS4yNy45NiAxLjI3aDIuMkw0IDIwaDJsLjY3LTVoMTAuNjdsLjY2IDVoMmwtMS4yLTlIMjFjLjY2IDAgMS4xNC0uNjQuOTYtMS4yN3pNNi45MyAxM2wuMjctMmg5LjZsLjI3IDJINi45M3ptLTIuNi00IC44Ni0zaDEzLjYzbC44NiAzSDQuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaW5kb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4aC02VjVoNnY2em0tOC02djZINVY1aDZ6bS02IDhoNnY2SDV2LTZ6bTggNnYtNmg2djZoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVZYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMy4zMSAwLTYgMi42OS02IDYgMy4zMSAwIDYtMi42OSA2LTZ6TTYgMTNjMCAzLjMxIDIuNjkgNiA2IDYgMC0zLjMxLTIuNjktNi02LTZ6bTItMS45N2ExLjU2MiAxLjU2MiAwIDAgMCAyLjQ1IDEuMjhsLS4wMS4xMmMwIC44Ni43IDEuNTYgMS41NiAxLjU2czEuNTYtLjcgMS41Ni0xLjU2bC0uMDEtLjEyYy4yNS4xNy41Ni4yOC44OS4yOC44NiAwIDEuNTYtLjcgMS41Ni0xLjU2IDAtLjYyLS4zNy0xLjE2LS44OS0xLjQxLjUyLS4yNC44OS0uNzguODktMS40YTEuNTYyIDEuNTYyIDAgMCAwLTIuNDUtMS4yOGwuMDEtLjEyYzAtLjg2LS43LTEuNTYtMS41Ni0xLjU2cy0xLjU2LjctMS41NiAxLjU2bC4wMS4xMkExLjU2MiAxLjU2MiAwIDAgMCA4IDguMjJjMCAuNjIuMzcgMS4xNi44OSAxLjQxLS41Mi4yNC0uODkuNzgtLjg5IDEuNHptNC0yLjk3Yy44NiAwIDEuNTYuNyAxLjU2IDEuNTZzLS43IDEuNTYtMS41NiAxLjU2LTEuNTYtLjctMS41Ni0xLjU2LjctMS41NiAxLjU2LTEuNTZ6TTIwIDR2MTZINFY0aDE2bTAtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxOFVwUmF0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDE1SDEwVjlIN3YxLjVoMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTVIMTVjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMWgtMi41Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtNWgxLjV2MS41SDEzVjEwem0wIDIuNWgxLjVWMTRIMTN2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTZGdEFwYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNCAzLjQzYzAtLjgxLS40OC0xLjUzLTEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAyIDkuNDNWMTBoOHYtLjU3ek0xOCA2YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNCAzLjQzYzAtLjgxLS40OC0xLjUzLTEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxNCA5LjQzVjEwaDh2LS41N3pNMTkgMTd2LTIuMDFMNSAxNXYybC0zLTMgMy0zdjIuMDFMMTkgMTN2LTJsMyAzLTMgM3ptLTkgMnYtMUg3LjVjLS4yOCAwLS41LjIyLS41LjV2M2MwIC4yOC4yMi41LjUuNWgyYy4yOCAwIC41LS4yMi41LS41VjIwYzAtLjI4LS4yMi0uNS0uNS0uNUg4VjE5aDJ6bS0xIDEuNXYuNUg4di0uNWgxem04LjUtMS41aC0xdjNoLTF2LTNoLTF2LTFoM3Yxem0tNSAwdi41aDF2MWgtMVYyMmgtMXYtNEgxNHYxaC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRNb2RlcmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDExLjA5di00LjdsNi0yLjI1IDYgMi4yNXYzLjY5Yy43MS4xIDEuMzguMzEgMiAuNlY1bC04LTMtOCAzdjYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxLjAzLS4wMS4wNS0uMDIuMDgtLjAyLS43OS0uNzgtMS40LTEuNzYtMS43NS0yLjg0QzcuNzYgMTcuNTMgNiAxNC40MiA2IDExLjA5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTMgNS41aC0yLjVWMjBoLTF2LTIuNUgxNHYtMWgyLjVWMTRoMXYyLjVIMjB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFJlYWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA5LjVDNyA4LjY3IDcuNjcgOCA4LjUgOHMxLjUuNjcgMS41IDEuNVM5LjMzIDExIDguNSAxMSA3IDEwLjMzIDcgOS41em01IDhjMi4zMyAwIDQuMzEtMS40NiA1LjExLTMuNUg2Ljg5Yy44IDIuMDQgMi43OCAzLjUgNS4xMSAzLjV6bTMuNS02LjVjLjgzIDAgMS41LS42NyAxLjUtMS41UzE2LjMzIDggMTUuNSA4IDE0IDguNjcgMTQgOS41cy42NyAxLjUgMS41IDEuNXpNMjIgMWgtMnYyaC0ydjJoMnYyaDJWNWgyVjNoLTJWMXptLTIgMTFjMCA0LjQyLTMuNTggOC04IDhzLTgtMy41OC04LTggMy41OC04IDgtOGMxLjQ2IDAgMi44Mi40IDQgMS4wOFYyLjg0QTkuOTI5IDkuOTI5IDAgMCAwIDExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMmMwLTEuMDUtLjE3LTIuMDUtLjQ3LTNIMTkuNGMuMzguOTMuNiAxLjk0LjYgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFyY2hpdGVjdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMzYgMTguNzggNi42MSAyMWwxLjYyLTEuNTQgMi43Ny03LjZjLS42OC0uMTctMS4yOC0uNTEtMS43Ny0uOThsLTIuODcgNy45ek0xNC43NyAxMC44OGMtLjQ5LjQ3LTEuMS44MS0xLjc3Ljk4bDIuNzcgNy42TDE3LjM5IDIxbC4yNi0yLjIyLTIuODgtNy45ek0xNSA4YzAtMS4zLS44NC0yLjQtMi0yLjgyVjNoLTJ2Mi4xOEM5Ljg0IDUuNiA5IDYuNyA5IDhjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM3ptLTMgMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaXN0V2Fsa2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMi41XCIsXCJjeVwiOlwiNC41XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDE3LjcyLS42NC02LjM3QTEuNDkgMS40OSAwIDAgMCAxNy42NCAxMEgxNmMtMS41LS4wMi0yLjg2LS41NC0zLjc2LTEuNDRsLTItMS45OEExLjk1IDEuOTUgMCAwIDAgOC44MyA2Yy0uNTEgMC0xLjAyLjItMS40MS41OUw0LjA4IDkuOTFjLS41My42OC0uNTEgMS41Ny0uMjEgMi4xM2wxLjQzIDIuOC0zLjE1IDQuMDUgMS41NyAxLjI0TDcuNCAxNS40bC0uMTctMS4zNi43Ny43MVYyMGgydi02LjEybC0yLjEyLTIuMTIgMi4zNi0yLjM2Yy45NC45NCAxLjcyIDEuODIgMy41OSAyLjMyTDEzIDIwaDEuNWwuNDEtMy41aDMuMThsLjE0IDEuMjJjLS40NC4yNi0uNzMuNzQtLjczIDEuMjggMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41YzAtLjU0LS4yOS0xLjAyLS43My0xLjI4ek0xNS4wOSAxNWwuNDEtMy41aDJsLjQxIDMuNWgtMi44MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhY2tIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgN2EyLjUgMi41IDAgMCAwLTMtMi40NVY0YTIuNSAyLjUgMCAwIDAtMy4xNy0yLjQxQTIuNTA5IDIuNTA5IDAgMCAwIDEyLjUgMGMtMS4yMyAwLTIuMjUuODktMi40NiAyLjA2QTIuNSAyLjUgMCAwIDAgNyA0LjV2NS44OWMtLjM0LS4zMS0uNzYtLjU0LTEuMjItLjY2bC0uNzctLjIxYy0uODMtLjIzLTEuNy4wOS0yLjE5LjgzLS4zOC41Ny0uNCAxLjMxLS4xNSAxLjk1bDIuNTYgNi40M0E4LjM1NCA4LjM1NCAwIDAgMCAxMyAyNGM0LjQyIDAgOC0zLjU4IDgtOFY3em0tMiA5YzAgMy4zMS0yLjY5IDYtNiA2LTIuNjEgMC00Ljk1LTEuNTktNS45MS00LjAxbC0yLjYtNi41NC41My4xNGMuNDYuMTIuODMuNDYgMSAuOUw3IDE1aDJWNC41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjEyaDJWMi41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjEyaDJWNGMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY4aDJWN2MwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmxpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExLjVcIixcImN5XCI6XCIzLjVcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMTMgNy4xMmMtLjE3LS4zNS0uNDQtLjY1LS44LS44NWExLjk4IDEuOTggMCAwIDAtMS45My0uMDN2LS4wMUw0IDkuM1YxNGgydi0zLjU0bDEuNS0uODVDNy4xOCAxMC43MSA3IDExLjg1IDcgMTN2NS4zM0w0LjQgMjEuOCA2IDIzbDMtNCAuMjItMy41NEwxMSAxOHY1aDJ2LTYuNWwtMS45Ny0yLjgxYy0uMDQtLjUyLS4xNC0xLjc2LjQ1LTMuNC43NSAxLjE0IDEuODggMS45OCAzLjIgMi40MUwyMC42MyAyM2wuODctLjUtNS40OC05LjVIMTd2LTJjLS40OSAwLTIuODguMTctNC4wOC0yLjIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3LjVjLjk3IDAgMS43NS0uNzggMS43NS0xLjc1UzEyLjk3IDQgMTIgNHMtMS43NS43OC0xLjc1IDEuNzVTMTEuMDMgNy41IDEyIDcuNXpNMTQgMjB2LTVoMXYtNC41YzAtMS4xLS45LTItMi0yaC0yYy0xLjEgMC0yIC45LTIgMlYxNWgxdjVoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZhMiAyIDAgMCAwIDItMmMwLS4zOC0uMS0uNzMtLjI5LTEuMDNMMTIgMGwtMS43MSAyLjk3Yy0uMTkuMy0uMjkuNjUtLjI5IDEuMDMgMCAxLjEuOSAyIDIgMnptNiAzaC01VjdoLTJ2Mkg2Yy0xLjY2IDAtMyAxLjM0LTMgM3Y5YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMXYtOWMwLTEuNjYtMS4zNC0zLTMtM3ptMSAxMUg1di0zYy45LS4wMSAxLjc2LS4zNyAyLjQtMS4wMWwxLjA5LTEuMDcgMS4wNyAxLjA3YzEuMzEgMS4zMSAzLjU5IDEuMyA0Ljg5IDBsMS4wOC0xLjA3IDEuMDcgMS4wN2MuNjQuNjQgMS41IDEgMi40IDEuMDF2M3ptMC00LjVjLS41MS0uMDEtLjk5LS4yLTEuMzUtLjU3bC0yLjEzLTIuMTMtMi4xNCAyLjEzYy0uNzQuNzQtMi4wMy43NC0yLjc3IDBMOC40OCAxMi44bC0yLjE0IDIuMTNjLS4zNS4zNi0uODMuNTYtMS4zNC41N1YxMmMwLS41NS40NS0xIDEtMWgxMmMuNTUgMCAxIC40NSAxIDF2My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2F0Y2hpbmdQb2tlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAxMmEyLjUgMi41IDAgMCAxLTUgMCAyLjUgMi41IDAgMCAxIDUgMHptNy41IDBjMCA1LjUyLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyIDYuNDggMiAxMiAyczEwIDQuNDggMTAgMTB6bS0yIDBoLTRjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDRINGMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xlYW5IYW5kcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2Ljk5IDUgLjYzIDEuMzcgMS4zNy42My0xLjM3LjYzTDE2Ljk5IDlsLS42My0xLjM3TDE0Ljk5IDdsMS4zNy0uNjMuNjMtMS4zN00yMCAxNGMxLjEgMCAyLS45IDItMnMtMi00LTItNC0yIDIuOS0yIDQgLjkgMiAyIDJ6bS05LTcuOVY0aDJjLjU3IDAgMS4xLjE3IDEuNTUuNDVsMS40My0xLjQzQTQuODk5IDQuODk5IDAgMCAwIDEzIDJINy41djJIOXYyLjExYy0xLjc4LjM3LTMuMiAxLjY4LTMuNzUgMy4zOWgyLjE2QzcuOTQgOC42MSA4Ljg5IDggMTAgOGMxLjYyIDAgMi45NCAxLjI5IDIuOTkgMi45bDIuMDEuNzVWMTFhNSA1IDAgMCAwLTQtNC45ek0yMiAxOXYxbC04IDIuNS03LTEuOTRWMjJIMVYxMWg3Ljk3bDYuMTYgMi4zQTIuODkgMi44OSAwIDAgMSAxNyAxNmgyYzEuNjYgMCAzIDEuMzQgMyAzek01IDIwdi03SDN2N2gyem0xNC45LTEuNDNjLS4xNi0uMzMtLjUxLS41Ni0uOS0uNTZoLTUuMzVjLS41NCAwLTEuMDctLjA5LTEuNTgtLjI2bC0yLjM4LS43OS42My0xLjkgMi4zOC43OWMuMzEuMSAyLjMuMTUgMi4zLjE1IDAtLjM3LS4yMy0uNy0uNTctLjgzTDguNjEgMTNIN3Y1LjQ4bDYuOTcgMS45MyA1LjkzLTEuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbzIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA5aC0zYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTF6bS0uNSA0LjVoLTJ2LTNoMnYzek04IDEzdjFjMCAuNTUtLjQ1IDEtMSAxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxSDYuNXYtLjVoLTJ2M2gyVjEzSDh6bTEyLjUgMi41aC0ydjFoM1YxOEgxN3YtMi41YzAtLjU1LjQ1LTEgMS0xaDJ2LTFoLTNWMTJoMy41Yy41NSAwIDEgLjQ1IDEgMXYxLjVjMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29tcG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjg3IDExLjgxQTIuNSAyLjUgMCAwIDEgMTUgOGgxYzEuNTEgMCAyLTEgMi0xcy41NSA2LTMgNmMtLjQ5IDAtLjk0LS4xNC0xLjMyLS4zOC0uMjQuNjQtLjU5IDEuNzYtLjc2IDIuOTYgMS4yNi4yMiAyLjI4Ljg5IDIuNzcgMS43N0E2LjUwNSA2LjUwNSAwIDAgMCAxOC41IDEyaDNjMCA1LjI0LTQuMjYgOS41LTkuNSA5LjVTMi41IDE3LjI0IDIuNSAxMiA2Ljc2IDIuNSAxMiAyLjVWMGw0IDQtNCA0VjUuNWMtMy41OCAwLTYuNSAyLjkyLTYuNSA2LjUgMCAyLjIxIDEuMTEgNC4xNyAyLjgxIDUuMzUuNTEtLjkyIDEuNjMtMS42MiAyLjk4LTEuOC0uMDktLjY5LS4yNi0xLjQyLS40OS0yLjAzLS4zNS4zLS44LjQ4LTEuMy40OC0xLjEgMC0yLS45LTItMnYtLjk5YzAtLjU2LS4xOS0xLjA5LS41LTEuNTEgMCAwIDQuNDUtLjIzIDQuNSAyLjUgMCAuMjktLjA2LjU2LS4xNy44LS40Mi0uMzItLjg2LS42LTEuMzMtLjguNTguNDMgMS4zNyAxLjM3IDIgMi42LjY3LTEuNjIgMS42OC0zLjI3IDMtNC42LS43Ni41Mi0xLjQ3IDEuMTItMi4xMyAxLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29ubmVjdFdpdGhvdXRDb250YWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTRIOWE5IDkgMCAwIDEgOS05djJjLTMuODcgMC03IDMuMTMtNyA3em03LTNWOWMtMi43NiAwLTUgMi4yNC01IDVoMmMwLTEuNjYgMS4zNC0zIDMtM3pNNyA0YzAtMS4xMS0uODktMi0yLTJzLTIgLjg5LTIgMiAuODkgMiAyIDIgMi0uODkgMi0yem00LjQ1LjVoLTJBMi45OSAyLjk5IDAgMCAxIDYuNSA3aC0zQzIuNjcgNyAyIDcuNjcgMiA4LjVWMTFoNlY4Ljc0YTQuOTcgNC45NyAwIDAgMCAzLjQ1LTQuMjR6TTE5IDE3YzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyem0xLjUgMWgtM2EyLjk5IDIuOTkgMCAwIDEtMi45NS0yLjVoLTJBNC45NyA0Ljk3IDAgMCAwIDE2IDE5Ljc0VjIyaDZ2LTIuNWMwLS44My0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb25zdHJ1Y3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMy43ODMgMTUuMTcyIDIuMTIxLTIuMTIxIDUuOTk2IDUuOTk2LTIuMTIxIDIuMTIxek0xNy41IDEwYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41IDAtLjU4LS4xNi0xLjEyLS40MS0xLjZsLTIuNyAyLjctMS40OS0xLjQ5IDIuNy0yLjdjLS40OC0uMjUtMS4wMi0uNDEtMS42LS40MUMxNS41NyAzIDE0IDQuNTcgMTQgNi41YzAgLjQxLjA4LjguMjEgMS4xNmwtMS44NSAxLjg1LTEuNzgtMS43OC43MS0uNzEtMS40MS0xLjQxTDEyIDMuNDlhMyAzIDAgMCAwLTQuMjQgMEw0LjIyIDcuMDNsMS40MSAxLjQxSDIuODFsLS43MS43MSAzLjU0IDMuNTQuNzEtLjcxVjkuMTVsMS40MSAxLjQxLjcxLS43MSAxLjc4IDEuNzgtNy40MSA3LjQxIDIuMTIgMi4xMkwxNi4zNCA5Ljc5Yy4zNi4xMy43NS4yMSAxLjE2LjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29va2llIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMC41XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxMy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjE1XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk1IDEwLjk5Yy0xLjc5LS4wMy0zLjctMS45NS0yLjY4LTQuMjItMi45NyAxLTUuNzgtMS41OS01LjE5LTQuNTZDNy4xMS43NCAyIDYuNDEgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCA1Ljg5IDAgMTAuNTQtNS4wOCA5Ljk1LTExLjAxek0xMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0zLjMxIDIuNzMtOC4xOCA4LjA4LTguMDIuNDIgMi41NCAyLjQ0IDQuNTYgNC45OSA0Ljk0LjA3LjM2LjUyIDIuNTUgMi45MiAzLjYzQzE5LjcgMTYuODYgMTYuMDYgMjAgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb3JvbmF2aXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxMmMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMSAuNDUtMSAxLTEgMSAuNDUgMSAxem00LjI1LTJjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptLTMuNSAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek0yMiAxMS4yNXYxLjVjMCAuNDEtLjM0Ljc1LS43NS43NXMtLjc1LS4zNC0uNzUtLjc1aC0xLjU0YTYuOTc4IDYuOTc4IDAgMCAxLTEuNTIgMy42NWwxLjA5IDEuMDkuMDEtLjAxYy4yOS0uMjkuNzctLjI5IDEuMDYgMCAuMjkuMjkuMjkuNzcgMCAxLjA2bC0xLjA2IDEuMDZjLS4yOS4yOS0uNzcuMjktMS4wNiAwYS43NTIuNzUyIDAgMCAxLS4wMS0xLjA1bC0xLjA5LTEuMDlhNy4wMTUgNy4wMTUgMCAwIDEtMy42NCAxLjUxdjEuNTRoLjAxYy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NWgtMS41Yy0uNDEgMC0uNzUtLjM0LS43NS0uNzVzLjMzLS43NC43NC0uNzV2LTEuNTVhNi45NDggNi45NDggMCAwIDEtMy42My0xLjUxbC0xLjA5IDEuMDkuMDEuMDFjLjI5LjI5LjI5Ljc3IDAgMS4wNi0uMjkuMjktLjc3LjI5LTEuMDYgMEw0LjQgMTguNTRhLjc1NC43NTQgMCAwIDEgMC0xLjA2Yy4yOS0uMjkuNzYtLjI5IDEuMDUtLjAxbDEuMDktMS4wOWE2Ljg5IDYuODkgMCAwIDEtMS41LTMuNjNIMy41YzAgLjQxLS4zNC43NS0uNzUuNzVTMiAxMy4xNiAyIDEyLjc1di0xLjVjMC0uNDEuMzQtLjc1Ljc1LS43NXMuNzUuMzQuNzUuNzVoMS41NGMuMTUtMS4zNy42OS0yLjYxIDEuNS0zLjYzTDUuNDUgNi41M2MtLjI5LjI4LS43Ni4yOC0xLjA1LS4wMWEuNzU0Ljc1NCAwIDAgMSAwLTEuMDZMNS40NiA0LjRjLjI5LS4yOS43Ny0uMjkgMS4wNiAwIC4yOS4yOS4yOS43NyAwIDEuMDZsLS4wMS4wMUw3LjYgNi41NmE2Ljk4MiA2Ljk4MiAwIDAgMSAzLjYzLTEuNTFWMy41YS43NTMuNzUzIDAgMCAxLS43NC0uNzUuNzcuNzcgMCAwIDEgLjc2LS43NWgxLjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1aC0uMDF2MS41NGMxLjM3LjE0IDIuNjIuNjkgMy42NCAxLjUxbDEuMDktMS4wOWEuNzQyLjc0MiAwIDAgMSAuMDEtMS4wNWMuMjktLjI5Ljc3LS4yOSAxLjA2IDBsMS4wNiAxLjA2Yy4yOS4yOS4yOS43NyAwIDEuMDZzLS43Ny4yOS0xLjA2IDBsLS4wMS0uMDEtMS4wOSAxLjA4YTcuMDI1IDcuMDI1IDAgMCAxIDEuNTIgMy42NWgxLjU0YzAtLjQxLjM0LS43NS43NS0uNzVzLjc1LjM0Ljc1Ljc1ek0xNyAxMmMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNSAyLjI0IDUgNSA1IDUtMi4yNCA1LTV6bS01LTFjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMy41IDBjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptLTEuNzUgM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3J1ZWx0eUZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNGMtLjI0LS4yNC0uNDQtLjQ5LS42NS0uNzVDMTcuNTEgMTEuNSAxOSA4LjU2IDE5IDVjMC0xLjk1LS43NC0zLTItMy0xLjU0IDAtMy45NiAyLjA2LTUgNS45N0MxMC45NiA0LjA2IDguNTQgMiA3IDIgNS43NCAyIDUgMy4wNSA1IDVjMCAzLjU2IDEuNDkgNi41IDIuNjUgOC4yNS0uMjEuMjYtLjQxLjUxLS42NS43NS0uMjUuMjUtMiAxLjM5LTIgMy41QzUgMTkuOTggNy4wMiAyMiA5LjUgMjJjMS41IDAgMi41LS41IDIuNS0uNXMxIC41IDIuNS41YzIuNDggMCA0LjUtMi4wMiA0LjUtNC41IDAtMi4xMS0xLjc1LTMuMjUtMi0zLjV6bS0uMTItOS45N2MuMDYuMTcuMTIuNDguMTIuOTcgMCAyLjg0LTEuMTEgNS4yNC0yLjA3IDYuNzgtLjM4LS4yNi0uODMtLjQ4LTEuNC0uNjIuMjQtNC41MiAyLjQ0LTYuODMgMy4zNS03LjEzek03IDVjMC0uNDkuMDYtLjguMTItLjk3LjkxLjMgMy4xMSAyLjYxIDMuMzYgNy4xMy0uNTguMTQtMS4wMy4zNS0xLjQuNjJDOC4xMSAxMC4yNCA3IDcuODQgNyA1em03LjUgMTVjLTEgMC0xLjgtLjMzLTIuMjItLjU2LjQyLS4xOC43Mi0uNzEuNzItLjk0IDAtLjI4LS40NS0uNS0xLS41cy0xIC4yMi0xIC41YzAgLjIzLjMuNzYuNzIuOTQtLjQyLjIzLTEuMjIuNTYtMi4yMi41NkEyLjUgMi41IDAgMCAxIDcgMTcuNWMwLS43LjQzLTEuMjQgMS0xLjczLjQ0LS4zNi42MS0uNTIgMS4zLTEuMzcuNzYtLjk1IDEuMDktMS40IDIuNy0xLjRzMS45NC40NSAyLjcgMS40Yy42OS44NS44NiAxLjAxIDEuMyAxLjM3LjU3LjQ5IDEgMS4wMyAxIDEuNzNhMi41IDIuNSAwIDAgMS0yLjUgMi41em0tLjUtNGMwIC40MS0uMjIuNzUtLjUuNzVzLS41LS4zNC0uNS0uNzUuMjItLjc1LjUtLjc1LjUuMzQuNS43NXptLTMgMGMwIC40MS0uMjIuNzUtLjUuNzVzLS41LS4zNC0uNS0uNzUuMjItLjc1LjUtLjc1LjUuMzQuNS43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN5Y2xvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNy40N1Y1LjM1QzIwLjA1IDQuNzcgMTYuNTYgNCAxMiA0Yy0yLjE1IDAtNC4xMS44Ni01LjU0IDIuMjQuMTMtLjg1LjQtMi40IDEuMDEtNC4yNEg1LjM1QzQuNzcgMy45NSA0IDcuNDQgNCAxMmMwIDIuMTUuODYgNC4xMSAyLjI0IDUuNTQtLjg1LS4xNC0yLjQtLjQtNC4yNC0xLjAxdjIuMTJDMy45NSAxOS4yMyA3LjQ0IDIwIDEyIDIwYzIuMTUgMCA0LjExLS44NiA1LjU0LTIuMjQtLjE0Ljg1LS40IDIuNC0xLjAxIDQuMjRoMi4xMmMuNTgtMS45NSAxLjM1LTUuNDQgMS4zNS0xMCAwLTIuMTUtLjg2LTQuMTEtMi4yNC01LjU0Ljg1LjEzIDIuNC40IDQuMjQgMS4wMXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDkgMTIgMiAyIDloOXYxM2gyVjloOXpNMTIgNC40NCAxNS42NiA3SDguMzRMMTIgNC40NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNC4xNCAxMi0xLjk2LjM3LjgyIDQuMzdWMjJoMmwuMDItNEg3djRoMnYtNkg0Ljl6TTE5LjEgMTZIMTV2Nmgydi00aDEuOThsLjAyIDRoMnYtNS4yNmwuODItNC4zNy0xLjk2LS4zN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpdmVyc2l0eTEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjRcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjIyIDE3LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE5LjQzVjIxaDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjktLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMjBcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi43OCAxNy41OEE2Ljk1IDYuOTUgMCAwIDAgMjAgMTdjLS4zOSAwLS43Ni4wNC0xLjEzLjEuNC42OC42MyAxLjQ2LjYzIDIuMjlWMjFIMjR2LTEuNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0xNi4yNCAxNi42NWMtMS4xNy0uNTItMi42MS0uOS00LjI0LS45LTEuNjMgMC0zLjA3LjM5LTQuMjQuOUEyLjk4OCAyLjk4OCAwIDAgMCA2IDE5LjM5VjIxaDEydi0xLjYxYzAtMS4xOC0uNjgtMi4yNi0xLjc2LTIuNzR6TTguMDcgMTlhLjk2Ljk2IDAgMCAxIC40OS0uNTJjMS4xLS40OSAyLjI2LS43MyAzLjQzLS43MyAxLjE4IDAgMi4zMy4yNSAzLjQzLjczLjIzLjEuNC4yOS40OS41Mkg4LjA3ek05IDEyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzem00IDBjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi40OCAxMC44NkMyLjE3IDEwLjEgMiA5LjM2IDIgOC42IDIgNi4wMiA0LjAyIDQgNi42IDRjMi42OCAwIDMuODIgMS43NCA1LjQgMy41OUMxMy41NyA1Ljc2IDE0LjcgNCAxNy40IDQgMTkuOTggNCAyMiA2LjAyIDIyIDguNmMwIC43Ni0uMTcgMS41LS40OCAyLjI2LjY1LjMxIDEuMTguODIgMS41MyAxLjQ0LjYtMS4yLjk1LTIuNDIuOTUtMy43QzI0IDQuOSAyMS4xIDIgMTcuNCAyYy0yLjA5IDAtNC4wOS45Ny01LjQgMi41MUMxMC42OSAyLjk3IDguNjkgMiA2LjYgMiAyLjkgMiAwIDQuOSAwIDguNmMwIDEuMjguMzUgMi41Ljk2IDMuNy4zNS0uNjIuODgtMS4xMyAxLjUyLTEuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXZlcnNpdHkyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAuMSAxNS45IDEuNDItMS40MkM4Ljc5IDEyLjA1IDcgMTAuNDEgNyA4Ljg1IDcgNy44IDcuOCA3IDguODUgN2MxLjExIDAgMS41NC42NSAyLjY4IDJoLjkzYzEuMTItMS4zMSAxLjUzLTIgMi42OC0yIC44NyAwIDEuNTUuNTQgMS43NyAxLjMyLjM1LS4wNC42OC0uMDYgMS0uMDYuMzYgMCAuNy4wMyAxLjAzLjA4QzE4LjcgNi40MyAxNy4xMyA1IDE1LjE1IDVjLS4xMiAwLS4yMy4wMy0uMzUuMDQuMTItLjMzLjItLjY3LjItMS4wNCAwLTEuNjYtMS4zNC0zLTMtM1M5IDIuMzQgOSA0YzAgLjM3LjA4LjcxLjIgMS4wNC0uMTItLjAxLS4yMy0uMDQtLjM1LS4wNEM2LjY5IDUgNSA2LjY5IDUgOC44NWMwIDIuNDIgMi4wNCA0LjMxIDUuMSA3LjA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi41IDE2LjI0Yy0uMzItLjE4LS42Ni0uMjktMS0uMzUuMDctLjEuMTUtLjE4LjIxLS4yOCAxLjA4LTEuODcuNDYtNC4xOC0xLjQxLTUuMjYtMi4wOS0xLjIxLTQuNzYtLjM5LTguNjUuOWwuNTIgMS45NGMzLjQ3LTEuMTQgNS43OS0xLjg4IDcuMTQtMS4xLjkxLjUzIDEuMiAxLjYxLjY4IDIuNTMtLjU2Ljk2LTEuMzMgMS0zLjA3IDEuMzJsLS40Ny44MWMuNTggMS42Mi45NyAyLjMzLjM5IDMuMzItLjUzLjkxLTEuNjEgMS4yLTIuNTMuNjgtLjA2LS4wMy0uMTEtLjA5LS4xNy0uMTMtLjMuNjctLjY0IDEuMjQtMS4wMyAxLjczLjA3LjA0LjEzLjA5LjIuMTQgMS44NyAxLjA4IDQuMTguNDYgNS4yNi0xLjQxLjA2LS4xLjA5LS4yMS4xNC0uMzIuMjIuMjcuNDguNTEuOC42OSAxLjQzLjgzIDMuMjcuMzQgNC4xLTEuMXMuMzItMy4yOS0xLjExLTQuMTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjMyIDE0LjAxYy0uNzQgMy41OC0xLjI3IDUuOTUtMi42MiA2LjczLS45MS41My0yIC4yNC0yLjUzLS42OC0uNTYtLjk2LS4yLTEuNjYuMzktMy4zMmwtLjQ2LS44MWMtMS43LS4zMS0yLjUtLjMzLTMuMDctMS4zMi0uNTMtLjkxLS4yNC0yIC42OC0yLjUzLjA5LS4wNS4xOS0uMDguMjktLjExLS4zNS0uNTYtLjY0LTEuMTctLjgyLTEuODUtLjE2LjA3LS4zMi4xNC0uNDguMjMtMS44NyAxLjA4LTIuNDkgMy4zOS0xLjQxIDUuMjYuMDYuMS4xNC4xOC4yMS4yOC0uMzQuMDYtLjY4LjE3LTEgLjM1LTEuNDMuODMtMS45MyAyLjY2LTEuMSA0LjFzMi42NiAxLjkzIDQuMSAxLjFjLjMyLS4xOC41OC0uNDIuOC0uNjkuMDUuMTEuMDguMjIuMTQuMzIgMS4wOCAxLjg3IDMuMzkgMi40OSA1LjI2IDEuNDEgMi4wOS0xLjIxIDIuNzEtMy45MyAzLjU1LTcuOTRsLTEuOTMtLjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGl2ZXJzaXR5MyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMzIgMTMuMDFjLjk2LjAyIDEuODUuNSAyLjQ1IDEuMzRBMy45NjEgMy45NjEgMCAwIDAgMTIgMTZjMS4yOSAwIDIuNS0uNjIgMy4yMy0xLjY2LjYtLjg0IDEuNDktMS4zMiAyLjQ1LTEuMzQtLjcyLTEuMjItMy42LTItNS42OC0yLTIuMDcgMC00Ljk2Ljc4LTUuNjggMi4wMXpNNCAxM2MxLjY2IDAgMy0xLjM0IDMtM1M1LjY2IDcgNCA3cy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6TTIwIDEzYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pNMTIgMTBjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTMtMyAxLjM0LTMgMyAxLjM0IDMgMyAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNGgtMy4yN2MtLjc3IDAtMS4zNS40NS0xLjY4LjkyLS4wNC4wNi0xLjM2IDIuMDgtNC4wNSAyLjA4LTEuNDMgMC0zLjAzLS42NC00LjA1LTIuMDgtLjM5LS41NS0xLS45Mi0xLjY4LS45MkgzYy0xLjEgMC0yIC45LTIgMnY0aDd2LTIuMjZjMS4xNS44IDIuNTQgMS4yNiA0IDEuMjZzMi44NS0uNDYgNC0xLjI2VjIwaDd2LTRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb21haW5BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgxNHYtMmgtNHYtMmgydi0yaC0ydi0yaDJ2LTJoLTJWOWg4djZoMlY3SDEyek02IDE5SDR2LTJoMnYyem0wLTRINHYtMmgydjJ6bTAtNEg0VjloMnYyem0wLTRINFY1aDJ2MnptNCAxMkg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0wLTRIOFY5aDJ2MnptMC00SDhWNWgydjJ6bTE0IDEydjJoLTJ2MmgtMnYtMmgtMnYtMmgydi0yaDJ2Mmgyem0tNi04aC0ydjJoMnYtMnptMCA0aC0ydjJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbWFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN1YzSDJ2MThoMjBWN0gxMnpNNiAxOUg0di0yaDJ2MnptMC00SDR2LTJoMnYyem0wLTRINFY5aDJ2MnptMC00SDRWNWgydjJ6bTQgMTJIOHYtMmgydjJ6bTAtNEg4di0yaDJ2MnptMC00SDhWOWgydjJ6bTAtNEg4VjVoMnYyem0xMCAxMmgtOHYtMmgydi0yaC0ydi0yaDJ2LTJoLTJWOWg4djEwem0tMi04aC0ydjJoMnYtMnptMCA0aC0ydjJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvd25oaWxsU2tpaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSA0LjVjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyem0tMi43MiAxNi40Ljc2LjI3YTUuOTMzIDUuOTMzIDAgMCAwIDQuMzQtLjE3TDIyIDIyLjEzYy0xLjA1LjU1LTIuMjQuODctMy41Ljg3LS44NiAwLTEuNjgtLjE0LTIuNDUtLjQxTDIgMTcuNDdsLjUtMS40MSA2LjkgMi41MSAxLjcyLTQuNDQtMy41Ny0zLjczYy0uODktLjk0LS42Ny0yLjQ3LjQ1LTMuMTJsMy40OC0yLjAxYzEuMS0uNjQgMi41Mi0uMSAyLjkxIDEuMTFsLjMzIDEuMDhhNS4wMTcgNS4wMTcgMCAwIDAgMi44MyAzLjE0bC41Mi0xLjYgMS40My40Ni0xLjEyIDMuNDVBNy4wMjkgNy4wMjkgMCAwIDEgMTMgOC41OWwtMi41MyAxLjQ1IDMuMDMgMy40Ni0yLjIyIDUuNzYgMy4wOSAxLjEyIDIuMS02LjQ0Yy40Ni4xOC45NC4zMSAxLjQ0LjQxbC0yLjEzIDYuNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0Tm90aWZpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjU4IDYuMjUgMS43NyAxLjc3TDE0LjM3IDEzSDEyLjZ2LTEuNzdsNC45OC00Ljk4em0zLjI3LS40NC0xLjA2LTEuMDZjLS4yLS4yLS41MS0uMi0uNzEgMGwtLjg1Ljg1TDIwIDcuMzdsLjg1LS44NWMuMi0uMi4yLS41MiAwLS43MXpNMTggMTIuMlYxN2gydjJINHYtMmgydi03YzAtMi43OSAxLjkxLTUuMTQgNC41LTUuOHYtLjdjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2LjdjLjgyLjIxIDEuNTcuNTkgMi4yMSAxLjA5bC0xLjQzIDEuNDNBMy44OSAzLjg5IDAgMCAwIDEyIDZjLTIuMjEgMC00IDEuNzktNCA0djdoOHYtMi44bDItMnpNMTAgMjBoNGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbGRlcmx5V29tYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41IDExYy0xLjU2IDAtMi45Mi0uOS0zLjU4LTIuMjFsLS43OS0xLjY3QzE0LjEyIDcuMSAxMy42MyA2IDEyLjM0IDYgOC43MiA2IDYgMTYuNjkgNiAxOWgyLjVsLTIuMSAyLjhMOCAyM2wzLTRoMnY0aDJ2LTQuMDNMMTMgMTNsLjQ5LTIuNzFBNi4wMiA2LjAyIDAgMCAwIDE3IDEyLjgxdi42OWgxdi0xYzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjIzaDFWMTIuNWMwLS44My0uNjctMS41LTEuNS0xLjV6TTExLjYgMi45MWMtLjA2LjE5LS4xLjM4LS4xLjU5IDAgMS4xLjkgMiAyIDJzMi0uOSAyLTItLjktMi0yLTJjLS4yMSAwLS40LjA0LS41OS4xLS4xNS0uMzUtLjUtLjYtLjkxLS42LS41NSAwLTEgLjQ1LTEgMSAwIC40MS4yNS43Ni42LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxkZXJseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNi41IDdWMjNoLTFWMTIuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjV2MWgtMXYtLjY5YTYuMDIgNi4wMiAwIDAgMS0zLjUxLTIuNTJjLS4zMS44Ny0uNDkgMS43OC0uNDkgMi43MSAwIC4yMy4wMi40Ni4wMy42OUwxNSAxNi41VjIzaC0ydi01bC0xLjc4LTIuNTRMMTEgMTlsLTMgNC0xLjYtMS4yTDkgMTguMzNWMTNjMC0xLjE1LjE4LTIuMjkuNS0zLjM5bC0xLjUuODVWMTRINlY5LjNsNS40LTMuMDd2LjAxYTIgMiAwIDAgMSAxLjk0LjAzYy4zNi4yMS42My41MS44Ljg1bC43OSAxLjY3QTMuOTg3IDMuOTg3IDAgMCAwIDE4LjUgMTFjLjgzIDAgMS41LjY3IDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbW9qaUVtb3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOGMyLjI4IDAgNC4yMi0xLjY2IDUtNEg3Yy43OCAyLjM0IDIuNzIgNCA1IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppRXZlbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNWgtMlYzSDd2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxYzAgMi41NSAxLjkyIDQuNjMgNC4zOSA0Ljk0QTUuMDEgNS4wMSAwIDAgMCAxMSAxNS45VjE5SDd2MmgxMHYtMmgtNHYtMy4xYTUuMDEgNS4wMSAwIDAgMCAzLjYxLTIuOTZDMTkuMDggMTIuNjMgMjEgMTAuNTUgMjEgOFY3YzAtMS4xLS45LTItMi0yek01IDhWN2gydjMuODJDNS44NCAxMC40IDUgOS4zIDUgOHptNyA2Yy0xLjY1IDAtMy0xLjM1LTMtM1Y1aDZ2NmMwIDEuNjUtMS4zNSAzLTMgM3ptNy02YzAgMS4zLS44NCAyLjQtMiAyLjgyVjdoMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1vamlGbGFncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDktMS0ySDdWNS43MmMuNi0uMzQgMS0uOTggMS0xLjcyIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMmMwIC43NC40IDEuMzggMSAxLjcyVjIxaDJ2LTRoNWwxIDJoN1Y5aC02em00IDhoLTRsLTEtMkg3VjloNWwxIDJoNXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1vamlGb29kQmV2ZXJhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE5aDE4djJIMnpNMjAgM0g0djEwYzAgMi4yMSAxLjc5IDQgNCA0aDZjMi4yMSAwIDQtMS43OSA0LTR2LTNoMmMxLjExIDAgMi0uODkgMi0yVjVjMC0xLjExLS44OS0yLTItMnptLTQgMTBjMCAxLjEtLjkgMi0yIDJIOGMtMS4xIDAtMi0uOS0yLTJWNWgzdjEuNEw3LjE5IDcuODVjLS4xMi4wOS0uMTkuMjQtLjE5LjM5djQuMjZjMCAuMjguMjIuNS41LjVoNGMuMjggMCAuNS0uMjIuNS0uNVY4LjI0YzAtLjE1LS4wNy0uMy0uMTktLjM5TDEwIDYuNFY1aDZ2OHpNOS41IDcuMjhsMS41IDEuMlYxMkg4VjguNDhsMS41LTEuMnpNMjAgOGgtMlY1aDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppTmF0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTQgNC44OEExLjMyIDEuMzIgMCAwIDAgMjAuNjggNEgxOS42bC0uMzEtLjk3QzE5LjE1IDIuNDMgMTguNjEgMiAxOCAycy0xLjE1LjQzLTEuMjkgMS4wNEwxNi40IDRoLTEuMDdjLS41NyAwLTEuMDguMzUtMS4yNi44OC0uMTkuNTYuMDQgMS4xNy41NiAxLjQ4bC44Ny41Mi0uNCAxLjI0Yy0uMjMuNTgtLjA0IDEuMjUuNDUgMS42Mi4yMy4xNy41MS4yNi43OC4yNi4zMSAwIC42MS0uMTEuODYtLjMybC44MS0uNy44MS43Yy4yNS4yMS41NS4zMi44Ni4zMi4yNyAwIC41NS0uMDkuNzgtLjI2LjUtLjM3LjY4LTEuMDQuNDUtMS42MmwtLjM5LTEuMjQuODctLjUyYy41MS0uMzEuNzQtLjkyLjU2LTEuNDh6TTE4IDdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNMTMuNDkgMTAuNTFjLS40My0uNDMtLjk0LS43My0xLjQ5LS45M1Y4aC0xdjEuMzhjLS4xMS0uMDEtLjIzLS4wMy0uMzQtLjAzLTEuMDIgMC0yLjA1LjM5LTIuODMgMS4xN2wtLjUuNS0xLjMzLS41YTMuMDEgMy4wMSAwIDAgMC0zLjgzIDEuODJjLS4yNy43NS0uMjMgMS41Ny4xMiAyLjI5LjIzLjQ4LjU4Ljg3IDEgMS4xNi0uMzggMS4zNS0uMDYgMi44NSAxIDMuOTEuNzguNzggMS44IDEuMTcgMi44MyAxLjE3LjM3IDAgLjczLS4wNyAxLjA5LS4xNy4yOS40Mi42OC43NyAxLjE2IDEgLjQxLjIuODQuMyAxLjI4LjMuMzQgMCAuNjgtLjA2IDEuMDEtLjE3YTMuMDA3IDMuMDA3IDAgMCAwIDEuODItMy44NWwtLjQ5LTEuMy41LS41Yy44Ny0uODcgMS4yNC0yLjA0IDEuMTQtMy4xN0gxNnYtMWgtMS41OWMtLjE5LS41NS0uNDktMS4wNi0uOTItMS41em0tNS45MSA4LjMxYy0uMTUuMDQtLjMuMDYtLjQ2LjA2LS41MyAwLTEuMDQtLjIxLTEuNDEtLjU5LS4zOC0uMzgtLjU5LS44OC0uNTktMS40MSAwLS4xNi4wMy0uMzIuMDYtLjQ3LjE0LjAxLjI4LjAzLjQyLjAzLjg1IDAgMS42OC0uMiAyLjQ0LS40OC0uMzIuODktLjU0IDEuODctLjQ2IDIuODZ6bS0yLjkxLTQuNTNjLS4yNS0uMDktLjQ1LS4yNy0uNTctLjUxcy0uMTMtLjUxLS4wNC0uNzZjLjE5LS41Mi43Ni0uNzkgMS4yNi0uNjFsMy4xNiAxLjE5Yy0xLjE1LjYtMi42MyAxLjExLTMuODEuNjl6bTYuMzIgNS42NWMtLjI1LjA5LS41Mi4wOC0uNzYtLjA0YS45ODkuOTg5IDAgMCAxLS41MS0uNTdjLS40Mi0xLjE4LjA5LTIuNjUuNy0zLjhsMS4xOCAzLjEzYy4xOC41Mi0uMDkgMS4xLS42MSAxLjI4em0xLjIxLTUuMzQtLjYxLTEuNjFjMC0uMDEtLjAxLS4wMi0uMDItLjAzbC0uMDYtLjEyYS42NzMuNjczIDAgMCAwLS4wNy0uMTFsLS4wOS0uMDktLjA5LS4wOWMtLjAzLS4wMy0uMDctLjA1LS4xMS0uMDctLjA0LS4wMi0uMDctLjA1LS4xMi0uMDYtLjAxIDAtLjAyLS4wMS0uMDMtLjAybC0xLjYtLjZhMS45NjYgMS45NjYgMCAwIDEgMi42Ny4xM2MuNzMuNzMuNzcgMS44OC4xMyAyLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1vamlPYmplY3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM2MtLjQ2IDAtLjkzLjA0LTEuNC4xNC0yLjc2LjUzLTQuOTYgMi43Ni01LjQ4IDUuNTItLjQ4IDIuNjEuNDggNS4wMSAyLjIyIDYuNTYuNDMuMzguNjYuOTEuNjYgMS40N1YxOWMwIDEuMS45IDIgMiAyaC4yOGExLjk4IDEuOTggMCAwIDAgMy40NCAwSDE0YzEuMSAwIDItLjkgMi0ydi0yLjMxYzAtLjU1LjIyLTEuMDkuNjQtMS40NkE2Ljk1NiA2Ljk1NiAwIDAgMCAxOSAxMGMwLTMuODctMy4xMy03LTctN3ptMiAxNGgtNHYtMWg0djF6bS00IDJ2LTFoNHYxaC00em01LjMxLTUuMjZjLS4wOS4wOC0uMTYuMTgtLjI0LjI2SDguOTJjLS4wOC0uMDktLjE1LS4xOS0uMjQtLjI3LTEuMzItMS4xOC0xLjkxLTIuOTQtMS41OS00LjcuMzYtMS45NCAxLjk2LTMuNTUgMy44OS0zLjkzLjM0LS4wNy42OC0uMSAxLjAyLS4xIDIuNzYgMCA1IDIuMjQgNSA1IDAgMS40My0uNjEgMi43OS0xLjY5IDMuNzR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgMTFoMXYzaC0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05LjY3MiA5LjU4LjcwNy0uNzA2IDIuMTIyIDIuMTIxLS43MDcuNzA3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi4yMDggMTEuNzEyLS43MDctLjcwNyAyLjEyMS0yLjEyMS43MDcuNzA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1vamlQZW9wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS44OSA4LjExQzE1LjUgNy43MiAxNC44MyA3IDEzLjUzIDdoLTIuNTRDOC4yNCA2Ljk5IDYgNC43NSA2IDJINGMwIDMuMTYgMi4xMSA1Ljg0IDUgNi43MVYyMmgydi02aDJ2NmgyVjEwLjA1TDE4Ljk1IDE0bDEuNDEtMS40MS00LjQ3LTQuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbW9qaVN5bWJvbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDJoOHYySDN6TTYgMTFoMlY3aDNWNUgzdjJoM3pNMTIuNDA0IDIwLjE4Mmw3Ljc3OC03Ljc3OCAxLjQxNCAxLjQxNC03Ljc3OCA3Ljc3OHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTkuNVwiLFwiY3lcIjpcIjE5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDExQTIuNSAyLjUgMCAwIDAgMTggOC41VjRoM1YyaC00djQuNTFjLS40Mi0uMzItLjkzLS41MS0xLjUtLjUxYTIuNSAyLjUgMCAwIDAgMCA1ek05Ljc0IDE1Ljk2bC0xLjQxIDEuNDEtLjcxLS43MS4zNS0uMzVhMi40OTkgMi40OTkgMCAwIDAtMS43Ny00LjI3IDIuNDk5IDIuNDk5IDAgMCAwLTEuNzcgNC4yN2wuMzUuMzUtMS4wNiAxLjA2Yy0uOTguOTgtLjk4IDIuNTYgMCAzLjU0LjUuNSAxLjE0Ljc0IDEuNzguNzRzMS4yOC0uMjQgMS43Ny0uNzNsMS4wNi0xLjA2IDEuNDEgMS40MSAxLjQxLTEuNDEtMS40MS0xLjQxIDEuNDEtMS40MS0xLjQxLTEuNDN6TTUuODUgMTQuMmMuMTItLjEyLjI2LS4xNS4zNS0uMTVzLjIzLjAzLjM1LjE1Yy4xOS4yLjE5LjUxIDAgLjcxbC0uMzUuMzUtLjM1LS4zNmEuNTAxLjUwMSAwIDAgMSAwLS43em0wIDUuNjVjLS4xMi4xMi0uMjYuMTUtLjM1LjE1cy0uMjMtLjAzLS4zNS0uMTVhLjUxMy41MTMgMCAwIDEgMC0uNzFsMS4wNi0xLjA2LjcxLjcxLTEuMDcgMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppVHJhbnNwb3J0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41NyAxMC42NmMtLjE0LS40LS41Mi0uNjYtLjk3LS42NmgtNy4xOWMtLjQ2IDAtLjgzLjI2LS45OC42NkwxMCAxNC43N2wuMDEgNS41MWMwIC4zOC4zMS43Mi42OS43MmguNjJjLjM4IDAgLjY4LS4zOC42OC0uNzZWMTloOHYxLjI0YzAgLjM4LjMxLjc2LjY5Ljc2aC42MWMuMzggMCAuNjktLjM0LjY5LS43MmwuMDEtMS4zN3YtNC4xNGwtMS40My00LjExem0tOC4xNi4zNGg3LjE5bDEuMDMgM2gtOS4yNWwxLjAzLTN6TTEyIDE3Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTggMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA5aDFWM0g3djVIMnYxM2gxVjloNVY0aDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTFoMnYySDV6TTEwIDVoMnYyaC0yek01IDE1aDJ2Mkg1ek01IDE5aDJ2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW5naW5lZXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00em0tNiA0Yy4yMi0uNzIgMy4zMS0yIDYtMiAyLjcgMCA1LjggMS4yOSA2IDJIM3pNNC43NCA5SDVjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGguMjZjLjI3IDAgLjQ5LS4yMi40OS0uNDl2LS4wMmEuNDkuNDkgMCAwIDAtLjQ5LS40OUgxM2MwLTEuNDgtLjgxLTIuNzUtMi0zLjQ1di45NWMwIC4yOC0uMjIuNS0uNS41cy0uNS0uMjItLjUtLjVWNC4xNEM5LjY4IDQuMDYgOS4zNSA0IDkgNHMtLjY4LjA2LTEgLjE0VjUuNWMwIC4yOC0uMjIuNS0uNS41UzcgNS43OCA3IDUuNXYtLjk1QzUuODEgNS4yNSA1IDYuNTIgNSA4aC0uMjZhLjQ5LjQ5IDAgMCAwLS40OS40OXYuMDNjMCAuMjYuMjIuNDguNDkuNDh6TTExIDljMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yaDR6TTIxLjk4IDYuMjNsLjkzLS44My0uNzUtMS4zLTEuMTkuMzljLS4xNC0uMTEtLjMtLjItLjQ3LS4yN0wyMC4yNSAzaC0xLjVsLS4yNSAxLjIyYy0uMTcuMDctLjMzLjE2LS40OC4yN2wtMS4xOC0uMzktLjc1IDEuMy45My44M2MtLjAyLjE3LS4wMi4zNSAwIC41MmwtLjkzLjg1Ljc1IDEuMyAxLjItLjM4Yy4xMy4xLjI4LjE4LjQzLjI1bC4yOCAxLjIzaDEuNWwuMjctMS4yMmMuMTYtLjA3LjMtLjE1LjQ0LS4yNWwxLjE5LjM4Ljc1LTEuMy0uOTMtLjg1Yy4wMy0uMTkuMDItLjM2LjAxLS41M3pNMTkuNSA3Ljc1YTEuMjUgMS4yNSAwIDEgMSAwLTIuNSAxLjI1IDEuMjUgMCAwIDEgMCAyLjV6TTE5LjQgMTAuNzlsLS44NS4yOGMtLjEtLjA4LS4yMS0uMTQtLjMzLS4xOWwtLjE4LS44OGgtMS4wN2wtLjE4Ljg3Yy0uMTIuMDUtLjI0LjEyLS4zNC4xOWwtLjg0LS4yOC0uNTQuOTMuNjYuNTljLS4wMS4xMy0uMDEuMjUgMCAuMzdsLS42Ni42MS41NC45My44Ni0uMjdjLjEuMDcuMi4xMy4zMS4xOGwuMTguODhoMS4wN2wuMTktLjg3Yy4xMS0uMDUuMjItLjExLjMyLS4xOGwuODUuMjcuNTQtLjkzLS42Ni0uNjFjLjAxLS4xMy4wMS0uMjUgMC0uMzdsLjY2LS41OS0uNTMtLjkzem0tMS45IDIuNmMtLjQ5IDAtLjg5LS40LS44OS0uODlzLjQtLjg5Ljg5LS44OS44OS40Ljg5Ljg5LS40Ljg5LS44OS44OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2UyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTcgMTMuNTJ2LS4wNEMyMy4yMSAxMi4zOCAyNCAxMC43OCAyNCA5YzAtMy4zMS0yLjY5LTYtNi02LS4yNiAwLS41Mi4wMi0uNzguMDZhNS45OCA1Ljk4IDAgMCAwLTEwLjQ0IDBDNi41MiAzLjAyIDYuMjYgMyA2IDMgMi42OSAzIDAgNS42OSAwIDljMCAxLjc4Ljc5IDMuMzggMi4wMiA0LjQ4di4wNEE2LjAwOCA2LjAwOCAwIDAgMCAwIDE4YzAgMy4zMSAyLjY5IDYgNiA2IDEuMzkgMCAyLjY3LS40OCAzLjY5LTEuMjguNzQuMTggMS41MS4yOCAyLjMxLjI4czEuNTctLjEgMi4zMS0uMjhjMS4wMi44IDIuMyAxLjI4IDMuNjkgMS4yOCAzLjMxIDAgNi0yLjY5IDYtNiAwLTEuNzgtLjc5LTMuMzgtMi4wMy00LjQ4ek0yMiA5YzAgLjU1LS4xMiAxLjA3LS4zMiAxLjU0QTEwIDEwIDAgMCAwIDE3Ljk4IDVIMThjMi4yMSAwIDQgMS43OSA0IDR6bS05Ljk3LTRjMi43My4wMSA1LjEzIDEuMzkgNi41NyAzLjQ4LS43MS41Ny0xLjYuODktMi41My44OUE0LjA1OSA0LjA1OSAwIDAgMSAxMiA1LjMxYzAtLjEuMDItLjIuMDMtLjMxek0xMiAyYzEuMjUgMCAyLjM2LjU5IDMuMSAxLjUtLjk4LS4zMi0yLjAyLS41LTMuMS0uNXMtMi4xMi4xOC0zLjEuNUM5LjY0IDIuNTkgMTAuNzUgMiAxMiAyek02IDVoLjAyYTEwIDEwIDAgMCAwLTMuNyA1LjU0QzIuMTIgMTAuMDcgMiA5LjU1IDIgOWMwLTIuMjEgMS43OS00IDQtNHptMCAxN2MtMi4yMSAwLTQtMS43OS00LTQgMC0uNjkuMTktMS4zMi41LTEuODguOCAyLjQ0IDIuNTIgNC40NyA0Ljc0IDUuNjgtLjM5LjEzLS44LjItMS4yNC4yem0tMi05YzAtMy43MiAyLjU2LTYuODUgNi03Ljc0di4wNWMwIDMuMzQgMi43MiA2LjA2IDYuMDYgNi4wNiAxLjI2IDAgMi40NS0uMzkgMy40NS0xLjA5LjMxLjg2LjQ5IDEuNzcuNDkgMi43MiAwIDQuNDEtMy41OSA4LTggOHMtOC0zLjU5LTgtOHptMTQgOWMtLjQ0IDAtLjg1LS4wNy0xLjI1LS4yIDIuMjMtMS4yMSAzLjk0LTMuMjQgNC43NC01LjY4LjMxLjU2LjUgMS4yLjUgMS44OC4wMSAyLjIxLTEuNzggNC0zLjk5IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuOTEgMTEuOTZDMjIuMzkgNi4zMiAxNy42NiAyIDEyIDJTMS42MSA2LjMyIDEuMDkgMTEuOTZsLS45IDkuODZjLS4xIDEuMTcuODIgMi4xOCAyIDIuMThoMTkuNjJjMS4xOCAwIDIuMS0xLjAxIDEuOTktMi4xOGwtLjg5LTkuODZ6TTEzIDQuMDdjMi4yNi4yOCA0LjIyIDEuNTEgNS40OSAzLjI4LS41OC40LTEuMjYuNjUtMS45OS42NUMxNC41NyA4IDEzIDYuNDMgMTMgNC41di0uNDN6bS0yIDB2LjQzQzExIDYuNDMgOS40MyA4IDcuNSA4Yy0uNzMgMC0xLjQxLS4yNS0xLjk5LS42NSAxLjI3LTEuNzcgMy4yMy0zIDUuNDktMy4yOHpNNC41NCA5LjEzYy44Ny41NSAxLjg5Ljg3IDIuOTYuODcgMS44NiAwIDMuNS0uOTMgNC41LTIuMzVDMTMgOS4wNyAxNC42NCAxMCAxNi41IDEwYzEuMDcgMCAyLjA5LS4zMiAyLjk2LS44Ny4zNC44OS41NCAxLjg2LjU0IDIuODcgMCA0LjQxLTMuNTkgOC04IDhzLTgtMy41OS04LThjMC0xLjAxLjItMS45OC41NC0yLjg3ek0xMiAyMkgyLjE5bC41Ni02LjJDNC4yNSAxOS40NCA3LjgyIDIyIDEyIDIyczcuNzUtMi41NiA5LjI1LTYuMmwuNTYgNi4ySDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy0uOTYgMC0xLjg4LjE0LTIuNzUuMzlBNC45ODYgNC45ODYgMCAwIDAgNSAwQzIuMjQgMCAwIDIuMjQgMCA1YzAgMS44Ljk2IDMuMzcgMi4zOSA0LjI1QzIuMTQgMTAuMTIgMiAxMS4wNCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwczEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDJjMi45IDAgNS40NCAxLjU2IDYuODQgMy44OC0uNDMuMDctLjg4LjEyLTEuMzQuMTItMi45IDAtNS40NC0xLjU2LTYuODQtMy44OC40My0uMDcuODgtLjEyIDEuMzQtLjEyek00LjQyIDkuNDdhOC4wNDYgOC4wNDYgMCAwIDEgMy42Ni00LjQ0IDguMDQ2IDguMDQ2IDAgMCAxLTMuNjYgNC40NHpNMiA1YzAtMS42NSAxLjM1LTMgMy0zIC45NSAwIDEuOC40NiAyLjM1IDEuMTUtMS43OS45NC0zLjI2IDIuNDEtNC4yIDQuMkMyLjQ2IDYuOCAyIDUuOTUgMiA1em0xMCAxNWMtNC40MSAwLTgtMy41OS04LTggMC0uMDUuMDEtLjEuMDEtLjE1IDIuNi0uOTggNC42OC0yLjk5IDUuNzQtNS41NWE5Ljk0MiA5Ljk0MiAwIDAgMCA5LjkyIDMuNDZjLjIxLjcxLjMzIDEuNDYuMzMgMi4yNCAwIDQuNDEtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04IDAtMS4xMi4yMy0yLjE4LjY1LTMuMTVhLjQ5NS40OTUgMCAwIDAgLjg1LS4zNWMwLS4yNS0uMTktLjQ1LS40My0uNDkuMTUtLjI2LjMyLS41MS40OS0uNzUtLjAzLjA4LS4wNi4xNS0uMDYuMjQgMCAuMjguMjIuNS41LjVzLjUtLjIyLjUtLjVTNi4yOCA3IDYgN2MtLjEzIDAtLjI1LjA1LS4zNC4xMy41Mi0uNjggMS4xNS0xLjI4IDEuODYtMS43NkEuNDk1LjQ5NSAwIDAgMCA4IDZhLjQ5NS40OTUgMCAwIDAgLjEtLjk4Yy4xNi0uMDkuMzItLjE3LjQ5LS4yNS4wOS4xNC4yNC4yMy40MS4yMy4yOCAwIC41LS4yMi41LS41IDAtLjAzLS4wMS0uMDYtLjAyLS4wOS4zOS0uMTMuNzktLjIzIDEuMjEtLjMtLjExLjEtLjE5LjIzLS4xOS4zOSAwIC4yOC4yMi41LjUuNXMuNS0uMjIuNS0uNWEuNTEuNTEgMCAwIDAtLjMtLjQ2Yy4yNi0uMDMuNTMtLjA0LjgtLjA0cy41NC4wMS44LjA0Yy0uMTguMDgtLjMuMjUtLjMuNDYgMCAuMjguMjIuNS41LjVzLjUtLjIyLjUtLjVjMC0uMTYtLjA4LS4yOS0uMTktLjM4LjQxLjA3LjgyLjE3IDEuMjEuMy0uMDEuMDItLjAyLjA1LS4wMi4wOCAwIC4yOC4yMi41LjUuNS4xNyAwIC4zMi0uMDkuNDEtLjIzLjE3LjA4LjMzLjE2LjQ5LjI1QS40OTUuNDk1IDAgMCAwIDE2IDZjLjI4IDAgLjUtLjIyLjUtLjUgMC0uMDUtLjAxLS4wOS0uMDMtLjEzLjcxLjQ4IDEuMzQgMS4wOCAxLjg2IDEuNzZhLjQ5NS40OTUgMCAwIDAtLjgzLjM3YzAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41YzAtLjA5LS4wMy0uMTYtLjA3LS4yMy4xOC4yNC4zNC40OS40OS43NS0uMjMuMDMtLjQyLjIzLS40Mi40OGEuNDk1LjQ5NSAwIDAgMCAuODUuMzVjLjQyLjk3LjY1IDIuMDMuNjUgMy4xNSAwIDQuNDEtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxN1wiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTNcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOFwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCI4LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCI4LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTNcIixcImN5XCI6XCI4LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI4LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI4LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZTYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDJjMy42OCAwIDYuNzggMi41MSA3LjcxIDUuOS0uNi0uMTYtMS4zMy0uMzctMi4yNi0yLjI0QTIuOTkyIDIuOTkyIDAgMCAwIDE0Ljc2IDZIOS4yNGMtMS4xNSAwLTIuMTguNjQtMi42OSAxLjY2LS45MyAxLjg2LTEuNTggMi4wNi0yLjI2IDIuMjRDNS4yMiA2LjUxIDguMzIgNCAxMiA0em0wIDE2Yy00LjQxIDAtOC0zLjU5LTgtOHYtLjAzYzIuMzEtLjIyIDMuNDMtMS41OSA0LjM0LTMuNDEuMTctLjM1LjUxLS41Ni45LS41Nmg1LjUzYy4zOCAwIC43Mi4yMS44OS41NS45IDEuOCAxLjk5IDMuMTkgNC4zNCAzLjQxdi4wM2MwIDQuNDItMy41OSA4LjAxLTggOC4wMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyYzAgNC44NCAzLjQ0IDguODcgOCA5LjhWMTVIOHYtM2gyVjkuNUMxMCA3LjU3IDExLjU3IDYgMTMuNSA2SDE2djNoLTJjLS41NSAwLTEgLjQ1LTEgMXYyaDN2M2gtM3Y2Ljk1YzUuMDUtLjUgOS00Ljc2IDktOS45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZlbWFsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgOS41QzE3LjUgNi40NiAxNS4wNCA0IDEyIDRTNi41IDYuNDYgNi41IDkuNWMwIDIuNyAxLjk0IDQuOTMgNC41IDUuNFYxN0g5djJoMnYyaDJ2LTJoMnYtMmgtMnYtMi4xYzIuNTYtLjQ3IDQuNS0yLjcgNC41LTUuNHptLTkgMEM4LjUgNy41NyAxMC4wNyA2IDEyIDZzMy41IDEuNTcgMy41IDMuNVMxMy45MyAxMyAxMiAxM3MtMy41LTEuNTctMy41LTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpcmVwbGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDEyLjQ2Yy0uMTUuNDItLjE1LjgyLS4wOCAxLjI4LjEuNTUuMzMgMS4wNC4yIDEuNi0uMTMuNTktLjc3IDEuMzgtMS41MyAxLjYzIDEuMjggMS4wNSAzLjIuMzcgMy4zOS0xLjMyLjE3LTEuNTQtMS40NC0xLjk4LTEuOTgtMy4xOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAydjIwaDIwVjJIMnptMTAgMTZjLTEuNTggMC0yLjk3LTEuODgtMy0zLjA2IDAtLjA1LS4wMS0uMTMtLjAxLS4yMi0uMTMtMS43MyAxLTMuMiAyLjQ3LTQuMzcuNDcgMS4wMSAxLjI3IDIuMDMgMi41NyAyLjkyLjU4LjQyLjk3Ljg2Ljk3IDEuNzMgMCAxLjY1LTEuMzUgMy0zIDN6bTggMmgtMnYtMmgtMi4wMkE0Ljk4IDQuOTggMCAwIDAgMTcgMTVjMC0xLjg5LTEuMDktMi44NS0xLjg1LTMuMzdDMTIuMiA5LjYxIDEzIDcgMTMgN2MtNi43MyAzLjU3LTYuMDIgNy40Ny02IDggLjAzLjk2LjQ5IDIuMDcgMS4yMyAzSDZ2Mkg0VjRoMTZ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXRiaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS44OSAxMy44OWMxLjA0IDAgMS44OS0uODUgMS44OS0xLjg5cy0uODUtMS44OS0xLjg5LTEuODlTMTggMTAuOTYgMTggMTJzLjg1IDEuODkgMS44OSAxLjg5em0tNC4yNC0uMjFjLjkzIDAgMS42OC0uNzUgMS42OC0xLjY4cy0uNzUtMS42OC0xLjY4LTEuNjhjLS45MyAwLTEuNjguNzUtMS42OCAxLjY4cy43NSAxLjY4IDEuNjggMS42OHptMC00LjI2Yy45MyAwIDEuNjgtLjc1IDEuNjgtMS42OCAwLS45My0uNzUtMS42OC0xLjY4LTEuNjgtLjkzIDAtMS42OC43NS0xLjY4IDEuNjggMCAuOTMuNzUgMS42OCAxLjY4IDEuNjh6bTAgOC41MWMuOTMgMCAxLjY4LS43NSAxLjY4LTEuNjggMC0uOTMtLjc1LTEuNjgtMS42OC0xLjY4LS45MyAwLTEuNjguNzUtMS42OCAxLjY4IDAgLjkyLjc1IDEuNjggMS42OCAxLjY4em0tNC4yNC00LjQ2Yy44MSAwIDEuNDctLjY2IDEuNDctMS40N3MtLjY2LTEuNDctMS40Ny0xLjQ3Yy0uODEgMC0xLjQ3LjY2LTEuNDcgMS40N3MuNjUgMS40NyAxLjQ3IDEuNDd6bTAtNC4yNmMuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDdzLS42Ni0xLjQ3LTEuNDctMS40N2MtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0wIDguNTJjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3IDAtLjgxLS42Ni0xLjQ3LTEuNDctMS40Ny0uODEgMC0xLjQ3LjY2LTEuNDcgMS40Ny0uMDEuODEuNjUgMS40NyAxLjQ3IDEuNDd6bTAgNC4yN2MuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDcgMC0uODEtLjY2LTEuNDctMS40Ny0xLjQ3LS44MSAwLTEuNDcuNjYtMS40NyAxLjQ3LS4wMS44MS42NSAxLjQ3IDEuNDcgMS40N3ptMC0xNy4wNmMuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDdTMTIuMjIgMiAxMS40MSAyYy0uODEgMC0xLjQ3LjY2LTEuNDcgMS40N3MuNjUgMS40NyAxLjQ3IDEuNDd6bS00LjI1IDguMzJjLjcgMCAxLjI2LS41NyAxLjI2LTEuMjZzLS41Ny0xLjI2LTEuMjYtMS4yNmExLjI2MSAxLjI2MSAwIDAgMCAwIDIuNTJ6bTAgNC4yNWExLjI2MSAxLjI2MSAwIDAgMCAwLTIuNTIgMS4yNjEgMS4yNjEgMCAwIDAgMCAyLjUyem0wLTguNDlhMS4yNjEgMS4yNjEgMCAwIDAgMC0yLjUyIDEuMjYxIDEuMjYxIDAgMCAwIDAgMi41MnptLTMuODcgNC4wM2ExLjA1IDEuMDUgMCAxIDAgMC0yLjEgMS4wNSAxLjA1IDAgMCAwIDAgMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC42NyAxOWMtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMSAxLTMuMzQgMS0xLjI0IDAtMS4zOC0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxdjJjMS45NSAwIDIuMTEtMSAzLjM0LTEgMS4yNCAwIDEuMzggMSAzLjMzIDEgMS45NSAwIDIuMS0xIDMuMzQtMSAxLjIyIDAgMS40IDEgMy4zMyAxIDEuOTMgMCAyLjEtMSAzLjMzLTEgMS4yMiAwIDEuNCAxIDMuMzMgMXYtMmMtMS4yNCAwLTEuMzgtMS0zLjMzLTF6TTguNjggMTcuNWMxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzEgMXYtMmMtLjYzIDAtMS0uMjgtMS40OC0uNTVsLTIuMDItNy41MyAyLjA5Ljg1Ljc0LTEuODZMOS43OCAyIDIgMTEuNjFsMS41NyAxLjIzIDEuMzktMS43OC45MyAzLjQ4Yy0uMTgtLjAyLS4zNS0uMDUtLjU2LS4wNS0xLjk1IDAtMi4wOSAxLTMuMzMgMXYyYzEuOSAwIDIuMTctMSAzLjM1LTEgMS4xOS4wMSAxLjQyIDEuMDEgMy4zMyAxLjAxem0xLjc0LTEzLjA5IDUuNzQgMi4wOSAyLjE1IDguMDJjLTEuNTQuMTEtMS44Mi44OS0yLjg1Ljk2bC0xLjQyLTUuMzEtMy44NiAxLjA0LjkxIDMuMzljLTEuMTIuMjUtMS40MS45LTIuNDIuOS0uMTggMC0uMzMtLjAyLS40NS0uMDVMNi41IDkuMDlsMy45Mi00LjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9sbG93VGhlU2lnbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNNS43NSA4LjkgMyAyM2gyLjFsMS43NS04TDkgMTd2Nmgydi03LjU1TDguOTUgMTMuNGwuNi0zQzEwLjg1IDEyIDEyLjggMTMgMTUgMTN2LTJjLTEuODUgMC0zLjQ1LTEtNC4zNS0yLjQ1bC0uOTUtMS42QzkuMzUgNi4zNSA4LjcgNiA4IDZjLS4yNSAwLS41LjA1LS43NS4xNUwyIDguM1YxM2gyVjkuNjVsMS43NS0uNzVNMTMgMnY3aDMuNzV2MTRoMS41VjlIMjJWMmgtOXptNS4wMSA2VjYuMjVIMTQuNXYtMS41aDMuNTFWM2wyLjQ5IDIuNUwxOC4wMSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRnJvbnRIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSA4Yy0uMTcgMC0uMzQuMDItLjUuMDVWNC41YTIuNSAyLjUgMCAwIDAtMy4wNC0yLjQ0QTIuNTAyIDIuNTAyIDAgMCAwIDEyLjUgMGMtMS4wNiAwLTEuOTYuNjYtMi4zMyAxLjU5QTIuNSAyLjUgMCAwIDAgNyA0di41NUEyLjUgMi41IDAgMCAwIDQgN3Y4LjVjMCA0LjY5IDMuODEgOC41IDguNSA4LjVzOC41LTMuODEgOC41LTguNXYtNUEyLjUgMi41IDAgMCAwIDE4LjUgOHptLjUgNy41YTYuNSA2LjUgMCAxIDEtMTMgMFY3YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djVoMlY0YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djdoMlYyLjVjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVWMTFoMlY0LjVjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2OC45MmMtMS43Ny43Ny0zIDIuNTMtMyA0LjU4aDJjMC0xLjY2IDEuMzQtMyAzLTN2LTQuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2lybCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDcuNWMuOTcgMCAxLjc1LS43OCAxLjc1LTEuNzVTMTIuOTcgNCAxMiA0cy0xLjc1Ljc4LTEuNzUgMS43NVMxMS4wMyA3LjUgMTIgNy41em0yIDguNXY0aC00di00SDhsMi4zOC02LjM4YTEuNzMzIDEuNzMzIDAgMCAxIDMuMjQgMEwxNiAxNmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyb3VwQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDlWN2gtMnYyaC0ydjJoMnYyaDJ2LTJoMlY5ek04IDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpNOCAxM2MtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHptNiA1SDJ2LS45OUMyLjIgMTYuMjkgNS4zIDE1IDggMTVzNS44IDEuMjkgNiAydjF6TTEyLjUxIDQuMDVDMTMuNDMgNS4xMSAxNCA2LjQ5IDE0IDhzLS41NyAyLjg5LTEuNDkgMy45NUMxNC40NyAxMS43IDE2IDEwLjA0IDE2IDhzLTEuNTMtMy43LTMuNDktMy45NXpNMTYuNTMgMTMuODNDMTcuNDIgMTQuNjYgMTggMTUuNyAxOCAxN3YzaDJ2LTNjMC0xLjQ1LTEuNTktMi41MS0zLjQ3LTMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDhjMC0xLjQyLS41LTIuNzMtMS4zMy0zLjc2LjQyLS4xNC44Ni0uMjQgMS4zMy0uMjQgMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDRoLS4xOGwtLjc3LS43N2MuNi0uOTQuOTUtMi4wNS45NS0zLjIzem03LjgzIDEySDIzdi0zYzAtMi4xOC0zLjU4LTMuNDctNi4zNC0zLjg3IDEuMS43NSAxLjk1IDEuNzEgMi4yMyAyLjk0TDIyLjgzIDIwek05IDZjLS4wNiAwLS4xMSAwLS4xNi4wMWwtMS42LTEuNmEzLjk5NiAzLjk5NiAwIDAgMSA1LjM1IDUuMzVsLTEuNi0xLjZjLjAxLS4wNS4wMS0uMS4wMS0uMTYgMC0xLjEtLjktMi0yLTJ6bS4xNyA2SDljLTIuMjEgMC00LTEuNzktNC00di0uMTdMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxTDE3IDE5LjgzVjIwSDF2LTNjMC0yLjY2IDUuMzMtNCA4LTQgLjM3IDAgLjguMDMgMS4yNS4wOEw5LjE3IDEyek05IDE1Yy0yLjcgMC01LjggMS4yOS02IDIuMDFWMThoMTJ2LS4xN2wtMi4xMS0yLjExQzExLjc2IDE1LjMxIDEwLjMzIDE1IDkgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cFJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDl2MmgtNlY5aDZ6TTggNEM1Ljc5IDQgNCA1Ljc5IDQgOHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMCAzYy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00em02IDVIMnYtLjk5QzIuMiAxNi4yOSA1LjMgMTUgOCAxNXM1LjggMS4yOSA2IDJ2MXpNMTIuNTEgNC4wNUMxMy40MyA1LjExIDE0IDYuNDkgMTQgOHMtLjU3IDIuODktMS40OSAzLjk1QzE0LjQ3IDExLjcgMTYgMTAuMDQgMTYgOHMtMS41My0zLjctMy40OS0zLjk1em00LjAyIDkuNzhDMTcuNDIgMTQuNjYgMTggMTUuNyAxOCAxN3YzaDJ2LTNjMC0xLjQ1LTEuNTktMi41MS0zLjQ3LTMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMy43NWMtMi4zNCAwLTcgMS4xNy03IDMuNVYxOWgxNHYtMS43NWMwLTIuMzMtNC42Ni0zLjUtNy0zLjV6TTQuMzQgMTdjLjg0LS41OCAyLjg3LTEuMjUgNC42Ni0xLjI1czMuODIuNjcgNC42NiAxLjI1SDQuMzR6TTkgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuOTMgNSA5IDUgNS41IDYuNTcgNS41IDguNSA3LjA3IDEyIDkgMTJ6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjgzIDEwIDkgMTBzLTEuNS0uNjctMS41LTEuNVM4LjE3IDcgOSA3em03LjA0IDYuODFjMS4xNi44NCAxLjk2IDEuOTYgMS45NiAzLjQ0VjE5aDR2LTEuNzVjMC0yLjAyLTMuNS0zLjE3LTUuOTYtMy40NHpNMTUgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTYuOTMgNSAxNSA1Yy0uNTQgMC0xLjA0LjEzLTEuNS4zNS42My44OSAxIDEuOTggMSAzLjE1cy0uMzcgMi4yNi0xIDMuMTVjLjQ2LjIyLjk2LjM1IDEuNS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyb3VwczIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yNyAxMmgzLjQ2YTEuNSAxLjUgMCAwIDAgMS40OC0xLjc1bC0uMy0xLjc5YTIuOTUxIDIuOTUxIDAgMCAwLTUuODIuMDFsLS4zIDEuNzljLS4xNS45MS41NSAxLjc0IDEuNDggMS43NHptLjc5LTMuMjFjLjA4LS40Ni40Ny0uNzkuOTQtLjc5cy44Ni4zMy45NC43OWwuMiAxLjIxaC0yLjI4bC4yLTEuMjF6TTEuNjYgMTEuMTFjLS4xMy4yNi0uMTguNTctLjEuODguMTYuNjkuNzYgMS4wMyAxLjUzIDFoMS45NWMuODMgMCAxLjUxLS41OCAxLjUxLTEuMjkgMC0uMTQtLjAzLS4yNy0uMDctLjQtLjAxLS4wMy0uMDEtLjA1LjAxLS4wOC4wOS0uMTYuMTQtLjM0LjE0LS41MyAwLS4zMS0uMTQtLjYtLjM2LS44Mi0uMDMtLjAzLS4wMy0uMDYtLjAyLS4xLjA3LS4yLjA3LS40My4wMS0uNjVhMS4xMiAxLjEyIDAgMCAwLS45OS0uNzQuMDkuMDkgMCAwIDEtLjA3LS4wM0M1LjAzIDguMTQgNC43MiA4IDQuMzcgOGMtLjMgMC0uNTcuMS0uNzUuMjYtLjAzLjAzLS4wNi4wMy0uMDkuMDJhMS4yNCAxLjI0IDAgMCAwLTEuNyAxLjAzYzAgLjAyLS4wMS4wNC0uMDMuMDYtLjI5LjI2LS40Ni42NS0uNDEgMS4wNS4wMy4yMi4xMi40My4yNS42LjAzLjAyLjAzLjA2LjAyLjA5ek0xNi4yNCAxMy42NWMtMS4xNy0uNTItMi42MS0uOS00LjI0LS45LTEuNjMgMC0zLjA3LjM5LTQuMjQuOUEyLjk4OCAyLjk4OCAwIDAgMCA2IDE2LjM5VjE4aDEydi0xLjYxYzAtMS4xOC0uNjgtMi4yNi0xLjc2LTIuNzR6TTguMDcgMTZhLjk2Ljk2IDAgMCAxIC40OS0uNTJjMS4xLS40OSAyLjI2LS43MyAzLjQzLS43MyAxLjE4IDAgMi4zMy4yNSAzLjQzLjczLjIzLjEuNC4yOS40OS41Mkg4LjA3ek0xLjIyIDE0LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjktLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNTh6TTIyLjc4IDE0LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxNGMtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYxOEgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTIyIDExdi0uNWMwLTEuMS0uOS0yLTItMmgtMmMtLjQyIDAtLjY1LjQ4LS4zOS44MWwuNy42M2MtLjE5LjMxLS4zMS42Ny0uMzEgMS4wNiAwIDEuMS45IDIgMiAyczItLjkgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXBzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjI0IDEzLjY1Yy0xLjE3LS41Mi0yLjYxLS45LTQuMjQtLjktMS42MyAwLTMuMDcuMzktNC4yNC45QTIuOTg4IDIuOTg4IDAgMCAwIDYgMTYuMzlWMThoMTJ2LTEuNjFjMC0xLjE4LS42OC0yLjI2LTEuNzYtMi43NHpNOC4wNyAxNmEuOTYuOTYgMCAwIDEgLjQ5LS41MmMxLjEtLjQ5IDIuMjYtLjczIDMuNDMtLjczIDEuMTggMCAyLjMzLjI1IDMuNDMuNzMuMjMuMS40LjI5LjQ5LjUySDguMDd6TTEuMjIgMTQuNThBMi4wMSAyLjAxIDAgMCAwIDAgMTYuNDNWMThoNC41di0xLjYxYzAtLjgzLjIzLTEuNjEuNjMtMi4yOS0uMzctLjA2LS43NC0uMS0xLjEzLS4xLS45OSAwLTEuOTMuMjEtMi43OC41OHpNMjIuNzggMTQuNThBNi45NSA2Ljk1IDAgMCAwIDIwIDE0Yy0uMzkgMC0uNzYuMDQtMS4xMy4xLjQuNjguNjMgMS40Ni42MyAyLjI5VjE4SDI0di0xLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNMTIgMTJjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTMtMyAxLjM0LTMgMyAxLjM0IDMgMyAzem0wLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNMS40OTcgMTEgNCA4LjQ5NyA2LjUwMyAxMSA0IDEzLjUwM3pNMjAgOWwtMi41IDRoNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyb3VwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTNjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0xLjEzIDEuMWMtLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNThBMi4wMSAyLjAxIDAgMCAwIDAgMTYuNDNWMThoNC41di0xLjYxYzAtLjgzLjIzLTEuNjEuNjMtMi4yOXpNMjAgMTNjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem00IDMuNDNjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1QTYuOTUgNi45NSAwIDAgMCAyMCAxNGMtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYxOEgyNHYtMS41N3ptLTcuNzYtMi43OGMtMS4xNy0uNTItMi42MS0uOS00LjI0LS45LTEuNjMgMC0zLjA3LjM5LTQuMjQuOUEyLjk4OCAyLjk4OCAwIDAgMCA2IDE2LjM5VjE4aDEydi0xLjYxYzAtMS4xOC0uNjgtMi4yNi0xLjc2LTIuNzR6TTguMDcgMTZjLjA5LS4yMy4xMy0uMzkuOTEtLjY5Ljk3LS4zOCAxLjk5LS41NiAzLjAyLS41NnMyLjA1LjE4IDMuMDIuNTZjLjc3LjMuODEuNDYuOTEuNjlIOC4wN3pNMTIgOGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xbTAtMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIYW5kc2hha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4yMiAxOS44NWMtLjE4LjE4LS41LjIxLS43MSAwYS41MDQuNTA0IDAgMCAxIDAtLjcxbDMuMzktMy4zOS0xLjQxLTEuNDEtMy4zOSAzLjM5Yy0uMTkuMi0uNTEuMTktLjcxIDBhLjUwNC41MDQgMCAwIDEgMC0uNzFsMy4zOS0zLjM5LTEuNDEtMS40MS0zLjM5IDMuMzljLS4xOC4xOC0uNS4yMS0uNzEgMGEuNTEzLjUxMyAwIDAgMSAwLS43MWwzLjM5LTMuMzktMS40Mi0xLjQxLTMuMzkgMy4zOWMtLjE4LjE4LS41LjIxLS43MSAwYS41MTMuNTEzIDAgMCAxIDAtLjcxTDkuNTIgOC40bDEuODcgMS44NmMuOTUuOTUgMi41OS45NCAzLjU0IDAgLjk4LS45OC45OC0yLjU2IDAtMy41NGwtMS44Ni0xLjg2LjI4LS4yOGMuNzgtLjc4IDIuMDUtLjc4IDIuODMgMGw0LjI0IDQuMjRjLjc4Ljc4Ljc4IDIuMDUgMCAyLjgzbC04LjIgOC4yem05LjYxLTYuNzhhNC4wMDggNC4wMDggMCAwIDAgMC01LjY2bC00LjI0LTQuMjRhNC4wMDggNC4wMDggMCAwIDAtNS42NiAwbC0uMjguMjgtLjI4LS4yOGE0LjAwOCA0LjAwOCAwIDAgMC01LjY2IDBMMi4xNyA2LjcxYTMuOTkyIDMuOTkyIDAgMCAwLS40IDUuMTlsMS40NS0xLjQ1YTIgMiAwIDAgMSAuMzctMi4zM2wzLjU0LTMuNTRjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBsMy41NiAzLjU2Yy4xOC4xOC4yMS41IDAgLjcxLS4yMS4yMS0uNTMuMTgtLjcxIDBMOS41MiA1LjU3bC01LjggNS43OWMtLjk4Ljk3LS45OCAyLjU2IDAgMy41NC4zOS4zOS44OS42MyAxLjQyLjdhMi40NTggMi40NTggMCAwIDAgMi4xMiAyLjEyIDIuNDU4IDIuNDU4IDAgMCAwIDIuMTIgMi4xMmMuMDcuNTQuMzEgMS4wMy43IDEuNDIuNDcuNDcgMS4xLjczIDEuNzcuNzMuNjcgMCAxLjMtLjI2IDEuNzctLjczbDguMjEtOC4xOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYWx0aEFuZFNhZmV0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUgMTNIOHYtM2gyLjVWNy41aDNWMTBIMTZ2M2gtMi41djIuNWgtM1YxM3pNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptNiA5LjA5YzAgNC0yLjU1IDcuNy02IDguODMtMy40NS0xLjEzLTYtNC44Mi02LTguODN2LTQuN2w2LTIuMjUgNiAyLjI1djQuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYXJ0QnJva2VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAzYy0uOTYgMC0xLjkuMjUtMi43My42OUwxMiA5aDNsLTMgMTAgMS05aC0zbDEuNTQtNS4zOUMxMC40NyAzLjYxIDkuMDEgMyA3LjUgMyA0LjQyIDMgMiA1LjQyIDIgOC41YzAgNC4xMyA0LjE2IDcuMTggMTAgMTIuNSA1LjQ3LTQuOTQgMTAtOC4yNiAxMC0xMi41QzIyIDUuNDIgMTkuNTggMyAxNi41IDN6bS02LjI2IDEzLjczQzYuNDUgMTMuMzQgNCAxMSA0IDguNSA0IDYuNTQgNS41NCA1IDcuNSA1Yy41OSAwIDEuMTkuMTUgMS43My40Mkw3LjM1IDEyaDMuNDJsLS41MyA0Ljczem00Ljg5LTEuMkwxNy42OSA3aC0yLjkxbC42MS0xLjgyYy4zNi0uMTIuNzQtLjE4IDEuMTEtLjE4QzE4LjQ2IDUgMjAgNi41NCAyMCA4LjVjMCAyLjIxLTIuMDIgNC40My00Ljg3IDcuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaWtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgNS4yOGMtMS4yMy0uMzctMi4yMi0xLjE3LTIuOC0yLjE4bC0xLTEuNmMtLjQxLS42NS0xLjExLTEtMS44NC0xLS43OCAwLTEuNTkuNS0xLjc4IDEuNDRTNyAyMyA3IDIzaDIuMWwxLjgtOCAyLjEgMnY2aDJ2LTcuNWwtMi4xLTIgLjYtM2MxIDEuMTUgMi40MSAyLjAxIDQgMi4zNFYyM0gxOVY5aC0xLjV2MS43OHpNNy40MyAxMy4xM2wtMi4xMi0uNDFhLjk5OS45OTkgMCAwIDEtLjc5LTEuMTdsLjc2LTMuOTNhMiAyIDAgMCAxIDIuMzQtMS41OGwxLjE2LjIzLTEuMzUgNi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpc3RvcnlFZHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDR2MS4zOGMtLjgzLS4zMy0xLjcyLS41LTIuNjEtLjUtMS43OSAwLTMuNTguNjgtNC45NSAyLjA1bDMuMzMgMy4zM2gxLjExdjEuMTFjLjg2Ljg2IDEuOTggMS4zMSAzLjExIDEuMzZWMTVINnYzYzAgMS4xLjkgMiAyIDJoMTBjMS42NiAwIDMtMS4zNCAzLTNWNEg5em0tMS4xMSA2LjQxVjguMjZINS42MUw0LjU3IDcuMjJhNS4wNyA1LjA3IDAgMCAxIDEuODItLjM0YzEuMzQgMCAyLjU5LjUyIDMuNTQgMS40NmwxLjQxIDEuNDEtLjIuMmEyLjcgMi43IDAgMCAxLTEuOTIuOGMtLjQ3IDAtLjkzLS4xMi0xLjMzLS4zNHpNMTkgMTdjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTJoLTZ2LTIuNTljLjU3LS4yMyAxLjEtLjU3IDEuNTYtMS4wM2wuMi0uMkwxNS41OSAxNEgxN3YtMS40MWwtNi01Ljk3VjZoOHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS41IDktMi4yNS00aC0zLjMxbC0xLjY5LTNoLTQuNUw4LjA2IDVINC43NUwyLjUgOWwxLjY5IDMtMS42OSAzIDIuMjUgNGgzLjMxbDEuNjkgM2g0LjVsMS42OS0zaDMuMzFsMi4yNS00LTEuNjktMyAxLjY5LTN6bS0yLjI5IDAtMS4xMiAyaC0yLjE0bC0xLjEyLTIgMS4xMi0yaDIuMTRsMS4xMiAyem0tOC4yNyA1LTEuMTItMiAxLjEyLTJoMi4xMmwxLjEyIDItMS4xMiAyaC0yLjEyem0yLjE0LTEwIDEuMTIgMS45OEwxMy4wNiA4aC0yLjEyTDkuOCA1Ljk4IDEwLjkyIDRoMi4xNnpNNS45MiA3aDIuMTRsMS4xMiAyLTEuMTIgMkg1LjkyTDQuNzkgOWwxLjEzLTJ6bS0xLjEzIDggMS4xMi0yaDIuMTRsMS4xMiAyLTEuMTIgMkg1LjkybC0xLjEzLTJ6bTYuMTMgNUw5LjggMTguMDIgMTAuOTQgMTZoMi4xMmwxLjEzIDIuMDJMMTMuMDggMjBoLTIuMTZ6bTcuMTYtM2gtMi4xNGwtMS4xMi0yIDEuMTItMmgyLjE0bDEuMTIgMi0xLjEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJY2VTa2F0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTdjMCAxLjY2LTEuMzQgMy0zIDNoLTJ2LTJoM3YtNGEzLjk2IDMuOTYgMCAwIDAtMi45MS0zLjgybC0yLjYyLS43NEMxMi42MiA5LjE5IDEyIDguMzkgMTIgNy41VjNIM3YxNWgzdjJIMnYyaDE2YzIuNzYgMCA1LTIuMjQgNS01aC0yek01IDE2VjVoNXYxSDguNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjVIMTBsLjEgMUg4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41aDEuODFjLjQ1IDEuMTIgMS40IDIuMDEgMi42IDIuMzZsMi42Mi43M0MxNi40IDEyLjMzIDE3IDEzLjEgMTcgMTR2Mkg1em05IDRIOHYtMmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnRlcmVzdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjAyIDEzYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMTMgMTN2OGg4di04aC04em02IDZoLTR2LTRoNHY0ek03IDJsLTUgOWgxMEw3IDJ6bTAgNC4xMkw4LjYgOUg1LjRMNyA2LjEyek0xOS4yNSAyLjVjLTEuMDYgMC0xLjgxLjU2LTIuMjUgMS4xNy0uNDQtLjYxLTEuMTktMS4xNy0yLjI1LTEuMTdDMTMuMTkgMi41IDEyIDMuNzggMTIgNS4yNWMwIDIgMi40MiAzLjQyIDUgNS43NSAyLjU4LTIuMzMgNS0zLjc1IDUtNS43NSAwLTEuNDctMS4xOS0yLjc1LTIuNzUtMi43NXpNMTcgOC4zNWMtMS40NS0xLjIyLTMtMi40LTMtMy4xIDAtLjQzLjM1LS43NS43NS0uNzUuMzEgMCAuNTIuMTcuNzMuMzdMMTcgNi4zbDEuNTItMS40M2MuMjEtLjIuNDItLjM3LjczLS4zNy40IDAgLjc1LjMyLjc1Ljc1IDAgLjctMS41NSAxLjg4LTMgMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW9zU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA1LTEuNDIgMS40Mi0xLjU5LTEuNTlWMTZoLTEuOThWNC44M0w5LjQyIDYuNDIgOCA1bDQtNCA0IDR6bTQgNXYxMWMwIDEuMS0uOSAyLTIgMkg2YTIgMiAwIDAgMS0yLTJWMTBjMC0xLjExLjg5LTIgMi0yaDN2Mkg2djExaDEyVjEwaC0zVjhoM2EyIDIgMCAwIDEgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2F5YWtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAyM2MtMS4wMyAwLTIuMDYtLjI1LTMtLjc1LTEuODkgMS00LjExIDEtNiAwLTEuODkgMS00LjExIDEtNiAwLS45NS41LTEuOTcuNzUtMyAuNzVIMnYtMmgxYzEuMDQgMCAyLjA4LS4zNSAzLTEgMS44MyAxLjMgNC4xNyAxLjMgNiAwIDEuODMgMS4zIDQuMTcgMS4zIDYgMCAuOTEuNjUgMS45NiAxIDMgMWgxdjJoLTF6TTEyIDUuNWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyIDEycy0xLjUyLjcxLTMuOTMgMS4zN2MtLjgyLS4yMy0xLjUzLS43NS0yLjA3LTEuMzctLjczLjg0LTEuOCAxLjUtMyAxLjVzLTIuMjctLjY2LTMtMS41Yy0uNzMuODQtMS44IDEuNS0zIDEuNXMtMi4yNy0uNjYtMy0xLjVjLS41NC42MS0xLjI1IDEuMTMtMi4wNyAxLjM3QzEuNTIgMTguMjEgMCAxNy41IDAgMTcuNXMyLjkzLTEuMzYgNy4xMy0yLjA4bDEuMzUtNC4xN2MuMzEtLjk1IDEuMzItMS40NyAyLjI3LTEuMTYuMDkuMDMuMTkuMDcuMjcuMTFsMi40NyAxLjMgMi44NC0xLjUgMS42NS0zLjcxLS41MS0xLjMyTDE4LjggMiAyMiAzLjQzIDIwLjY3IDYuNGwtMS4zMS41LTMuNzIgOC4zNGM0Ljg1LjYzIDguMzYgMi4yNiA4LjM2IDIuMjZ6bS04Ljk4LTQuNTQtMS41Mi44LTEuNzUtLjkyLS43MSAyLjE3Yy4zMiAwIC42NC0uMDEuOTYtLjAxLjcxIDAgMS40LjAzIDIuMDcuMDhsLjk1LTIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLaW5nQmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTJjMC0xLjEtLjktMi0yLTJWN2MwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnYzYy0xLjEgMC0yIC45LTIgMnY1aDEuMzNMNCAxOWgxbC42Ny0yaDEyLjY3bC42NiAyaDFsLjY3LTJIMjJ2LTV6bS00LTJoLTVWN2g1djN6TTYgN2g1djNINlY3em0tMiA1aDE2djNINHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtpdGVzdXJmaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTE0LjA2LTJoLTIuMTJMMTUuNSAzLjQ0bDEuMDYgMS4wNiAzLjUtMy41ek0yMiAyM3YtMmgtMWMtMS4wNCAwLTIuMDgtLjM1LTMtMS0xLjgzIDEuMy00LjE3IDEuMy02IDAtMS44MyAxLjMtNC4xNyAxLjMtNiAwLS45MS42NS0xLjk2IDEtMyAxSDJ2MmgxYzEuMDMgMCAyLjA1LS4yNSAzLS43NSAxLjg5IDEgNC4xMSAxIDYgMCAxLjg5IDEgNC4xMSAxIDYgMCAuOTUuNSAxLjk3Ljc1IDMgLjc1aDF6bS0xLTkuNzJjMCAxLjQ0LTIuMTkgMy42Mi01LjA0IDUuNTgtLjMxLjA5LS42My4xNC0uOTYuMTQtMS4yIDAtMi4yNy0uNjYtMy0xLjUtLjczLjg0LTEuOCAxLjUtMyAxLjUtLjk0IDAtMS44MS0uNDEtMi40OS0uOTkuNDYtLjM5Ljk2LS43OCAxLjQ5LTEuMTdsLTEuNTUtMi45N0E0LjA2IDQuMDYgMCAwIDEgNiAxMlY4YzAtMS4xLjktMiAyLTJoM2MxLjM4IDAgMi42My0uNTYgMy41NC0xLjQ2bDEuNDEgMS40MUE3LjAxOCA3LjAxOCAwIDAgMSAxMSA4SDkuNnYzLjVoMi44bDEuNjkgMS44OGMxLjk1LS44NCAzLjc3LTEuMzggNS4wNi0xLjM4Ljg0IDAgMS44NS4yNSAxLjg1IDEuMjh6bS04LjguOTktLjctLjc3LTIuNS4xLjgzIDIuMDFjLjU5LS4zOCAxLjgxLTEuMDYgMi4zNy0xLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFuZHNsaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTIgOCA4SDJ2MTRoMjBsLTYtOC01LTJ6bTEuNTMgMi43N0w2IDE2Ljk1bC0yLS42N3YtMS44OWwyIC42NyAzLjk1LTEuMzIgMi41OCAxLjAzek03IDEwbDEuNTcgMi4wOS0yLjU3Ljg2LTItLjY3VjEwaDN6TTQgMjB2LTEuNjFsMiAuNjcgOS4wMy0zLjAxTDE4IDIwSDR6TTE3IDZWMWwtNS0xLTMgMnY0bDMgMiA1LTJ6bS02LTIuOTMgMS40Mi0uOTUgMi41OC41MnYyLjAxbC0yLjc3IDEuMTFMMTEgNC45M1YzLjA3ek0xOC41IDcgMTYgOXYzbDIuNSAyIDQuNS0yVjhsLTQuNS0xem0yLjUgMy43LTIuMi45OC0uOC0uNjRWOS45NmwxLS44IDIgLjQ0djEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2F0aW9uQ2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTFWNWwtMy0zLTMgM3YySDN2MTRoMThWMTFoLTZ6bS04IDhINXYtMmgydjJ6bTAtNEg1di0yaDJ2MnptMC00SDVWOWgydjJ6bTYgOGgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6bTAtNGgtMlY5aDJ2MnptMC00aC0yVjVoMnYyem02IDEyaC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUx1Z2dhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMThIOFY5aDEuNXY5em0zLjI1IDBoLTEuNVY5aDEuNXY5ek0xNiAxOGgtMS41VjlIMTZ2OXptMS0xMmgtMlYzYzAtLjU1LS40NS0xLTEtMWgtNGMtLjU1IDAtMSAuNDUtMSAxdjNIN2MtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMiAwIC41NS40NSAxIDEgMXMxLS40NSAxLTFoNmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTFjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTYuNS0yLjVoM1Y2aC0zVjMuNXpNMTcgMTlIN1Y4aDEwdjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxMWMxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMS40MyAxOCA5LjUgMTggNiAxNi40MyA2IDE0LjUgNy41NyAxMSA5LjUgMTF6bTAtMkM2LjQ2IDkgNCAxMS40NiA0IDE0LjVTNi40NiAyMCA5LjUgMjBzNS41LTIuNDYgNS41LTUuNWMwLTEuMTYtLjM2LTIuMjMtLjk3LTMuMTJMMTggNy40MlYxMGgyVjRoLTZ2MmgyLjU4bC0zLjk3IDMuOTdDMTEuNzMgOS4zNiAxMC42NiA5IDkuNSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFuMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDdoLTRjLTEuMSAwLTIgLjktMiAydjZoMi41djdoM3YtN0gxNlY5YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFuMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDdoLTRjLTEuMSAwLTIgLjktMiAydjZoMnY3aDR2LTdoMlY5YzAtMS4xLS45LTItMi0yek0xMiAxLjc1MSAxNC4yNDggNCAxMiA2LjI0OCA5Ljc1IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYW40IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNzUgN2gtMy41QzkuMDQgNyA4LjExIDguMDcgOC4yNyA5LjI2TDEwIDIyaDRsMS43My0xMi43NEMxNS44OSA4LjA3IDE0Ljk2IDcgMTMuNzUgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDdoLTRjLTEuMSAwLTIgLjktMiAydjZoMnY3aDR2LTdoMlY5YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFza3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDZjLTEuMzEgMC0yLjM3IDEuMDEtMi40OCAyLjMtMS44OC0uNS0yLjg0LTEuOC01LjAyLTEuOC0yLjE5IDAtMy4xNCAxLjMtNS4wMiAxLjhDNi44NyA3LjAyIDUuODEgNiA0LjUgNkEyLjUgMi41IDAgMCAwIDIgOC41VjljMCA2IDMuNiA3LjgxIDYuNTIgNy45OEM5LjUzIDE3LjYyIDEwLjcyIDE4IDEyIDE4czIuNDctLjM4IDMuNDgtMS4wMkMxOC40IDE2LjgxIDIyIDE1IDIyIDl2LS41QTIuNSAyLjUgMCAwIDAgMTkuNSA2em0tMTYgM3YtLjVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjNjMCAxLjI4LjM4IDIuNDcgMS4wMSAzLjQ4QzQuOTkgMTQuMjcgMy41IDEyLjY1IDMuNSA5ek03IDExLjVWOS44NWMxLjEyLS4yMyAxLjk1LS42OSAyLjY2LTEuMDhDMTAuNDggOC4zMyAxMS4wNyA4IDEyIDhjLjkzIDAgMS41Mi4zMyAyLjM0Ljc4LjcxLjM5IDEuNTQuODQgMi42NiAxLjA4djEuNjVjMCAyLjc2LTIuMjQgNS01IDVzLTUtMi4yNS01LTUuMDF6TTIwLjUgOWMwIDMuNjUtMS40OSA1LjI3LTMuMDEgNS45OC42NC0xLjAxIDEuMDEtMi4yIDEuMDEtMy40OHYtM2MwLS41NS40NS0xIDEtMXMxIC40NSAxIDFWOXptLTkuODEgMS40OGMtLjQ0LjI2LS45Ni41Ni0xLjY5Ljc2VjEwLjJjLjQ4LS4xNy44NC0uMzggMS4xOC0uNThDMTAuNzIgOS4zIDExLjIzIDkgMTIgOXMxLjI3LjMgMS44LjYyYy4zNC4yLjcxLjQyIDEuMi41OXYxLjA0Yy0uNzUtLjIxLTEuMjYtLjUxLTEuNzEtLjc4LS40Ni0uMjctLjgtLjQ3LTEuMjktLjQ3cy0uODQuMi0xLjMxLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWlsaXRhcnlUZWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTAuNDNWMkg3djguNDNjMCAuMzUuMTguNjguNDkuODZsNC4xOCAyLjUxLS45OSAyLjM0LTMuNDEuMjkgMi41OSAyLjI0TDkuMDcgMjIgMTIgMjAuMjMgMTQuOTMgMjJsLS43OC0zLjMzIDIuNTktMi4yNC0zLjQxLS4yOS0uOTktMi4zNCA0LjE4LTIuNTFjLjMtLjE4LjQ4LS41LjQ4LS44NnptLTYgLjY0LTItMS4yVjRoMnY3LjA3em00LTEuMi0yIDEuMlY0aDJ2NS44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vb2RCYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMy41LTljLjgzIDAgMS41LS42NyAxLjUtMS41UzE2LjMzIDggMTUuNSA4IDE0IDguNjcgMTQgOS41cy42NyAxLjUgMS41IDEuNXptLTcgMGMuODMgMCAxLjUtLjY3IDEuNS0xLjVTOS4zMyA4IDguNSA4IDcgOC42NyA3IDkuNSA3LjY3IDExIDguNSAxMXptMy41IDIuNWMtMi4zMyAwLTQuMzEgMS40Ni01LjExIDMuNWgxMC4yMmMtLjgtMi4wNC0yLjc4LTMuNS01LjExLTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMy41LTljLjgzIDAgMS41LS42NyAxLjUtMS41UzE2LjMzIDggMTUuNSA4IDE0IDguNjcgMTQgOS41cy42NyAxLjUgMS41IDEuNXptLTcgMGMuODMgMCAxLjUtLjY3IDEuNS0xLjVTOS4zMyA4IDguNSA4IDcgOC42NyA3IDkuNSA3LjY3IDExIDguNSAxMXptMy41IDYuNWMyLjMzIDAgNC4zMS0xLjQ2IDUuMTEtMy41SDYuODljLjggMi4wNCAyLjc4IDMuNSA1LjExIDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5pZ2h0c1N0YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43OCAxNy41MWMtMi40NyAwLTYuNTctMS4zMy04LjY4LTUuNDMtMi4zMy00LjUxLS41LTguNDguNTMtMTAuMDdDNi4yNyAyLjIgMS45OCA2LjU5IDEuOTggMTJjMCAuMTQuMDIuMjguMDIuNDIuNjEtLjI2IDEuMjgtLjQyIDEuOTgtLjQyIDAtMy4wOSAxLjczLTUuNzcgNC4zLTcuMS0uNSAyLjE5LS41NCA1LjA0IDEuMDQgOC4xIDEuNTcgMy4wNCA0LjE4IDQuOTUgNi44IDUuODZhOCA4IDAgMCAxLTUuNjEgMS4wMWMtLjM3LjctLjk0IDEuMjctMS42NCAxLjY0Ljk4LjMyIDIuMDMuNSAzLjExLjUgMy41IDAgNi41OC0xLjggOC4zNy00LjUyLS4xNy4wMS0uMzcuMDItLjU3LjAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE2aC0uMThDNi40IDE0Ljg0IDUuMyAxNCA0IDE0Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzaDNjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9BZHVsdENvbnRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtMS44NS42My0zLjU0IDEuNjktNC45TDcuNTkgOWgyLjgzTDcuMSA1LjY5QTcuOTI0IDcuOTI0IDAgMCAxIDEyIDRjNC40MSAwIDggMy41OSA4IDggMCAxLjg1LS42MyAzLjU0LTEuNjkgNC45bC0xLjktMS45aC0yLjgzbDMuMzEgMy4zMUE3Ljg3NCA3Ljg3NCAwIDAgMSAxMiAyMGMtNC40MSAwLTgtMy41OS04LTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjI1IDE0LTEuNS0yIDEuNS0yaC0xLjVMMTIgMTFsLS43NS0xaC0xLjVsMS41IDItMS41IDJoMS41bC43NS0xIC43NSAxek04IDEwbC0uNzUgMS0uNzUtMUg1bDEuNSAyTDUgMTRoMS41bC43NS0xTDggMTRoMS41TDggMTJsMS41LTJ6TTE2IDE0bC43NS0xIC43NSAxSDE5bC0xLjUtMiAxLjUtMmgtMS41bC0uNzUgMS0uNzUtMWgtMS41bDEuNSAyLTEuNSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9MdWdnYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgMTMuMTctMS41LTEuNVY5SDE2djQuMTd6bTMuNzggOS40NC0xLjg1LTEuODVjLS4yOC4xNS0uNTkuMjQtLjkzLjI0IDAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xSDljMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTFjLTEuMSAwLTItLjktMi0yVjhjMC0uMDUuMDItLjEuMDItLjE1TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnpNMTYuMTcgMTlsLTMuNDItMy40MlYxOGgtMS41di0zLjkyTDkuNSAxMi4zM1YxOEg4di03LjE3bC0xLTFWMTloOS4xN3pNMTIuNzUgOWgtLjkybC45Mi45MlY5ek0xOSA4djguMTdsLTItMlY4aC02LjE3bC0uOTktLjk5TDkgNi4xN1YzYzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjNoMmMxLjEgMCAyIC45IDIgMnptLTguNS0yaDNWMy41aC0zVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3JkaWNXYWxraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMjNoLTEuNXYtOUgxOXY5ek03LjUzIDE0SDZsLTIgOWgxLjUzbDItOXptNS45Ny04LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek05LjggOC45IDcgMjNoMi4xbDEuOC04IDIuMSAydjZoMnYtNy41bC0yLjEtMiAuNi0zQzE0LjggMTIgMTYuOCAxMyAxOSAxM3YtMmMtMS45IDAtMy41LTEtNC4zLTIuNGwtMS0xLjZhMi4xNDUgMi4xNDUgMCAwIDAtMi42NS0uODRMNiA4LjNWMTNoMlY5LjZsMS44LS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90aWZpY2F0aW9uQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTR2M0g4di03YzAtMi4yMSAxLjc5LTQgNC00IC44NSAwIDEuNjQuMjYgMi4yOC43MmwxLjQzLTEuNDNBNS44NyA1Ljg3IDAgMCAwIDEzLjUgNC4ydi0uN2MwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di43QzcuOTEgNC44NiA2IDcuMjEgNiAxMHY3SDR2MmgxNnYtMmgtMnYtM2gtMnptLTQgOGMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyek0yNCA4aC0zVjVoLTJ2M2gtM3YyaDN2M2gydi0zaDNWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGlmaWNhdGlvbnNBY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzEuMSAwIDItLjkgMi0yaC00YzAgMS4xLjkgMiAyIDJ6bTYtNnYtNWMwLTMuMDctMS42My01LjY0LTQuNS02LjMyVjRjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuNjhDNy42NCA1LjM2IDYgNy45MiA2IDExdjVsLTIgMnYxaDE2di0xbC0yLTJ6bS0yIDFIOHYtNmMwLTIuNDggMS41MS00LjUgNC00LjVzNCAyLjAyIDQgNC41djZ6TTcuNTggNC4wOCA2LjE1IDIuNjVDMy43NSA0LjQ4IDIuMTcgNy4zIDIuMDMgMTAuNWgyYTguNDQ1IDguNDQ1IDAgMCAxIDMuNTUtNi40MnptMTIuMzkgNi40MmgyYy0uMTUtMy4yLTEuNzMtNi4wMi00LjEyLTcuODVsLTEuNDIgMS40M2E4LjQ5NSA4LjQ5NSAwIDAgMSAzLjU0IDYuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RpZmljYXRpb25zTm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjMS4xIDAgMi0uOSAyLTJoLTRjMCAxLjEuOSAyIDIgMnptNi02di01YzAtMy4wNy0xLjYzLTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjY0IDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTIgMUg4di02YzAtMi40OCAxLjUxLTQuNSA0LTQuNXM0IDIuMDIgNCA0LjV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGlmaWNhdGlvbnNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzEuMSAwIDItLjkgMi0yaC00YzAgMS4xLjkgMiAyIDJ6bTAtMTUuNWMyLjQ5IDAgNCAyLjAyIDQgNC41di4xbDIgMlYxMWMwLTMuMDctMS42My01LjY0LTQuNS02LjMyVjRjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuNjhjLS4yNC4wNi0uNDcuMTUtLjY5LjIzbDEuNjQgMS42NGMuMTgtLjAyLjM2LS4wNS41NS0uMDV6TTUuNDEgMy4zNSA0IDQuNzZsMi44MSAyLjgxQzYuMjkgOC41NyA2IDkuNzQgNiAxMXY1bC0yIDJ2MWgxNC4yNGwxLjc0IDEuNzQgMS40MS0xLjQxTDUuNDEgMy4zNXpNMTYgMTdIOHYtNmMwLS42OC4xMi0xLjMyLjM0LTEuOUwxNiAxNi43NlYxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGlmaWNhdGlvbnNQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSA5LjhoMi44bC0yLjggMy40VjE1aDV2LTEuOGgtMi44bDIuOC0zLjRWOGgtNXpNMTggMTZ2LTVjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjQgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tMiAxSDh2LTZjMC0yLjQ4IDEuNTEtNC41IDQtNC41czQgMi4wMiA0IDQuNXY2em0tNCA1YzEuMSAwIDItLjkgMi0yaC00YzAgMS4xLjkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RpZmljYXRpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjQgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tMiAxSDh2LTZjMC0yLjQ4IDEuNTEtNC41IDQtNC41czQgMi4wMiA0IDQuNXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3V0ZG9vckdyaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMjJjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTNjLTEuMyAwLTIuNC44NC0yLjgyIDJIOS4xNGwxLjk5LTMuMDZhNi4zNiA2LjM2IDAgMCAwIDEuNzQgMGwxLjAyIDEuNTdjLjQyLS41My45Ni0uOTUgMS42LTEuMjFsLS42LS45M0E2Ljk5MiA2Ljk5MiAwIDAgMCAxOSA4SDVjMCAyLjg0IDEuNjkgNS4yNyA0LjEyIDYuMzdsLTMuOTUgNi4wOGExIDEgMCAwIDAgLjI5IDEuMzggMSAxIDAgMCAwIDEuMzgtLjI5bDEtMS41NWg2LjM0QzE0LjYgMjEuMTYgMTUuNyAyMiAxNyAyMnptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS05LjU4LThoOS4xNmMtLjc3IDEuNzYtMi41NCAzLTQuNTggM3MtMy44MS0xLjI0LTQuNTgtM3pNOS40MSA3aDFjLjE1LTEuMTUuMjMtMS42NC0uODktMi45Ni0uNDItLjUtLjY4LS43Ny0uNDYtMi4wNGgtLjk5Yy0uMjEgMS4xMS4wMyAyLjA1Ljg5IDIuOTYuMjIuMjQuNzkuNjcuNDUgMi4wNHpNMTEuODkgN2gxYy4xNS0xLjE1LjIzLTEuNjQtLjg5LTIuOTYtLjQyLS41LS42OC0uNzgtLjQ2LTIuMDRoLS45OWMtLjIxIDEuMTEuMDMgMi4wNS44OSAyLjk2LjIzLjI0LjguNjcuNDUgMi4wNHpNMTQuNDEgN2gxYy4xNS0xLjE1LjIzLTEuNjQtLjg5LTIuOTYtLjQyLS41LS42OC0uNzctLjQ2LTIuMDRoLS45OWMtLjIxIDEuMTEuMDMgMi4wNS44OSAyLjk2LjIyLjI0Ljc5LjY3LjQ1IDIuMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYWdlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02IDJoNnY2aC0zbDEtNC00IDFWNXpNNSA1aDZ2M0w3IDdsMSA0SDVWNXptNiAxNEg1di02aDNsLTEgNCA0LTF2M3ptOCAwaC02di0zbDQgMS0xLTRoM3Y2em0tNC4zNy00LjM3TDEyIDEzLjcybC0yLjYzLjkxLjkxLTIuNjMtLjkxLTIuNjMgMi42My45MSAyLjYzLS45MS0uOTEgMi42My45MSAyLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFyYWdsaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTMuNDguOTRDMTQuNjggMTguNTQgMTQgMTkgMTIgMTlzLTIuNjgtLjQ2LTMuNDgtMS4wNkM4LjA0IDE3LjU1IDcgMTYuNzYgNyAxNEg1YzAgMi43LjkzIDQuNDEgMi4zIDUuNS41LjQgMS4xLjcgMS43LjlWMjRoNnYtMy42Yy42LS4yIDEuMi0uNSAxLjctLjkgMS4zNy0xLjA5IDIuMy0yLjggMi4zLTUuNWgtMmMwIDIuNzYtMS4wNCAzLjU1LTEuNTIgMy45NHpNMjMgNC4yNXYzLjQ5YzAgLjgtLjg4IDEuMjYtMS41Ni44My0uMTQtLjA5LS4yOC0uMTgtLjQ0LS4yNkwxOSAxM2gtMmwtMS41LTYuMjhhMjcuODUyIDI3Ljg1MiAwIDAgMC03IDBMNyAxM0g1TDMgOC4zMWMtLjE2LjA4LS4zLjE3LS40NC4yNkMxLjg4IDkgMSA4LjU1IDEgNy43NFY0LjI1QzEgMS45IDUuOTIgMCAxMiAwczExIDEuOSAxMSA0LjI1ek02LjkgNi45OGMtLjkzLjE5LTEuNzguNDMtMi41My43MWwxLjUxIDMuNTVMNi45IDYuOTh6bTEyLjczLjcxYy0uNzUtLjI4LTEuNi0uNTItMi41My0uNzFsMS4wMiA0LjI1IDEuNTEtMy41NHpNMjEgNC4zMUMyMC42NSAzLjYzIDE3LjU3IDIgMTIgMlMzLjM1IDMuNjMgMyA0LjMxdjEuNzdDNS4zNCA1LjA3IDguNTYgNC41IDEyIDQuNXM2LjY2LjU3IDkgMS41OFY0LjMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFydHlNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC0zLjE3TDE1IDJIOUw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmg0LjA1bC41OS0uNjVMOS44OCA0aDQuMjRsMS4yNCAxLjM1LjU5LjY1SDIwdjEyek05IDEyYzAtMS42NiAxLjM0LTMgMy0zaDMuOThjLS45Mi0xLjIxLTIuMzUtMi0zLjk4LTJhNS4wMDIgNS4wMDIgMCAwIDAtNC45IDZoMi4wOGMtLjExLS4zMS0uMTgtLjY1LS4xOC0xem02IDBjMCAxLjY2LTEuMzQgMy0zIDNIOC4wMmMuOTIgMS4yMSAyLjM1IDIgMy45OCAyYTUuMDAyIDUuMDAyIDAgMCAwIDQuOS02aC0yLjA4Yy4xMS4zMS4xOC42NS4xOCAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVvcGxlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNjcgMTMuMTNDMTguMDQgMTQuMDYgMTkgMTUuMzIgMTkgMTd2M2g0di0zYzAtMi4xOC0zLjU3LTMuNDctNi4zMy0zLjg3ek0xNSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNGMtLjQ3IDAtLjkxLjEtMS4zMy4yNGE1Ljk4IDUuOTggMCAwIDEgMCA3LjUyYy40Mi4xNC44Ni4yNCAxLjMzLjI0ek05IDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpNOSAxM2MtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHptNiA1SDN2LS45OUMzLjIgMTYuMjkgNi4zIDE1IDkgMTVzNS44IDEuMjkgNiAydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZW9wbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEzLjc1Yy0yLjM0IDAtNyAxLjE3LTcgMy41VjE5aDE0di0xLjc1YzAtMi4zMy00LjY2LTMuNS03LTMuNXpNNC4zNCAxN2MuODQtLjU4IDIuODctMS4yNSA0LjY2LTEuMjVzMy44Mi42NyA0LjY2IDEuMjVINC4zNHpNOSAxMmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMC45MyA1IDkgNSA1LjUgNi41NyA1LjUgOC41IDcuMDcgMTIgOSAxMnptMC01Yy44MyAwIDEuNS42NyAxLjUgMS41UzkuODMgMTAgOSAxMHMtMS41LS42Ny0xLjUtMS41UzguMTcgNyA5IDd6bTcuMDQgNi44MWMxLjE2Ljg0IDEuOTYgMS45NiAxLjk2IDMuNDRWMTloNHYtMS43NWMwLTIuMDItMy41LTMuMTctNS45Ni0zLjQ0ek0xNSAxMmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxNi45MyA1IDE1IDVjLS41NCAwLTEuMDQuMTMtMS41LjM1LjYzLjg5IDEgMS45OCAxIDMuMTVzLS4zNyAyLjI2LTEgMy4xNWMuNDYuMjIuOTYuMzUgMS41LjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEzLjc1Yy0yLjM0IDAtNyAxLjE3LTcgMy41VjE5aDE0di0xLjc1YzAtMi4zMy00LjY2LTMuNS03LTMuNXpNNC4zNCAxN2MuODQtLjU4IDIuODctMS4yNSA0LjY2LTEuMjVzMy44Mi42NyA0LjY2IDEuMjVINC4zNHpNOSAxMmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMC45MyA1IDkgNSA1LjUgNi41NyA1LjUgOC41IDcuMDcgMTIgOSAxMnptMC01Yy44MyAwIDEuNS42NyAxLjUgMS41UzkuODMgMTAgOSAxMHMtMS41LS42Ny0xLjUtMS41UzguMTcgNyA5IDd6bTcuMDQgNi44MWMxLjE2Ljg0IDEuOTYgMS45NiAxLjk2IDMuNDRWMTloNHYtMS43NWMwLTIuMDItMy41LTMuMTctNS45Ni0zLjQ0ek0xNSAxMmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxNi45MyA1IDE1IDVjLS41NCAwLTEuMDQuMTMtMS41LjM1LjYzLjg5IDEgMS45OCAxIDMuMTVzLS4zNyAyLjI2LTEgMy4xNWMuNDYuMjIuOTYuMzUgMS41LjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM5IDE0LjU2QzE2LjcxIDEzLjcgMTQuNTMgMTMgMTIgMTNzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDQgMTcuMjJWMjBoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTggMThINnYtLjc4YzAtLjM4LjItLjcyLjUyLS44OEM3LjcxIDE1LjczIDkuNjMgMTUgMTIgMTVjMi4zNyAwIDQuMjkuNzMgNS40OCAxLjM0LjMyLjE2LjUyLjUuNTIuODhWMTh6TTkuNzggMTJoNC40NGMxLjIxIDAgMi4xNC0xLjA2IDEuOTgtMi4yNmwtLjMyLTIuNDVDMTUuNTcgNS4zOSAxMy45MiA0IDEyIDRTOC40MyA1LjM5IDguMTIgNy4yOUw3LjggOS43NGMtLjE2IDEuMi43NyAyLjI2IDEuOTggMi4yNnptLjMyLTQuNDFDMTAuMjYgNi42NyAxMS4wNiA2IDEyIDZzMS43NC42NyAxLjkgMS41OWwuMzIgMi40MUg5Ljc4bC4zMi0yLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM5IDE0LjU2QzE2LjcxIDEzLjcgMTQuNTMgMTMgMTIgMTNzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDQgMTcuMjJWMjBoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTggMThINnYtLjc4YzAtLjM4LjItLjcyLjUyLS44OEM3LjcxIDE1LjczIDkuNjMgMTUgMTIgMTVjMi4zNyAwIDQuMjkuNzMgNS40OCAxLjM0LjMyLjE2LjUyLjUuNTIuODhWMTh6TTEwIDEyaDRjMS42NiAwIDMtMS4zNCAzLTMgMC0uNzMtLjI3LTEuNC0uNzEtMS45Mi4xMy0uMzMuMjEtLjcuMjEtMS4wOGEzIDMgMCAwIDAtMS44Ni0yLjc3QzE0IDIuNDggMTMuMDYgMiAxMiAycy0yIC40OC0yLjY0IDEuMjNBMyAzIDAgMCAwIDcuNSA2YzAgLjM4LjA4Ljc1LjIxIDEuMDhDNy4yNyA3LjYgNyA4LjI3IDcgOWMwIDEuNjYgMS4zNCAzIDMgM3ptLS43Ni0zLjYzYy44Ny0xLjA0LjI2LTIgLjI2LTIuMzcgMC0uNDEuMjQtLjc3LjYyLS45Mi4yOS0uMTIuNTUtLjMxLjc1LS41NC4xNy0uMjEuNTUtLjU0IDEuMTMtLjU0cy45Ni4zMyAxLjEzLjUzYy4yLjI0LjQ2LjQyLjc1LjU0YTEgMSAwIDAgMSAuNjIuOTNjMCAuMzctLjYxIDEuMzMuMjYgMi4zNy41OC42OS4wNCAxLjYzLS43NiAxLjYzaC00Yy0uOCAwLTEuMzQtLjk0LS43Ni0xLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM5IDE0LjU2QzE2LjcxIDEzLjcgMTQuNTMgMTMgMTIgMTNzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDQgMTcuMjJWMjBoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTggMThINnYtLjc4YzAtLjM4LjItLjcyLjUyLS44OEM3LjcxIDE1LjczIDkuNjMgMTUgMTIgMTVjMi4zNyAwIDQuMjkuNzMgNS40OCAxLjM0LjMyLjE2LjUyLjUuNTIuODhWMTh6TTEyIDEyYzIuMjEgMCA0LTEuNzkgNC00VjQuNWMwLS44My0uNjctMS41LTEuNS0xLjUtLjUyIDAtLjk4LjI3LTEuMjUuNjctLjI3LS40LS43My0uNjctMS4yNS0uNjdzLS45OC4yNy0xLjI1LjY3Yy0uMjctLjQtLjczLS42Ny0xLjI1LS42N0M4LjY3IDMgOCAzLjY3IDggNC41VjhjMCAyLjIxIDEuNzkgNCA0IDR6bS0yLTYuNWg0VjhjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yVjUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbkFkZEFsdDEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA4YzAtMi4yMS0xLjc5LTQtNC00UzUgNS43OSA1IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00em0tMiAwYzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnpNMSAxOHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00cy04IDEuMzQtOCA0em0yIDBjLjItLjcxIDMuMy0yIDYtMiAyLjY5IDAgNS43OCAxLjI4IDYgMkgzem0xNy0zdi0zaDN2LTJoLTNWN2gtMnYzaC0zdjJoM3YzaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25BZGRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA5VjZoLTJ2M2gtM3YyaDN2M2gydi0zaDNWOWgtM3pNOSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTYuMzkgOC41NkMxMy43MSAxMy43IDExLjUzIDEzIDkgMTNzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTcuMjJWMjBoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTUgMThIM3YtLjc4YzAtLjM4LjItLjcyLjUyLS44OEM0LjcxIDE1LjczIDYuNjMgMTUgOSAxNWMyLjM3IDAgNC4yOS43MyA1LjQ4IDEuMzQuMzIuMTYuNTIuNS41Mi44OFYxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbkFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem0wIDhjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bS02IDRjLjIyLS43MiAzLjMxLTIgNi0yIDIuNyAwIDUuOCAxLjI5IDYgMkg5em0tMy0zdi0zaDN2LTJINlY3SDR2M0gxdjJoM3YzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAgMTcuMTctMy4zNy0zLjM4Yy42NC4yMiAxLjIzLjQ4IDEuNzcuNzYuOTcuNTEgMS41OCAxLjUyIDEuNiAyLjYyem0xLjE5IDQuMDItMS40MSAxLjQxLTIuNjEtMi42SDR2LTIuNzhjMC0xLjEyLjYxLTIuMTUgMS42MS0yLjY2IDEuMjktLjY2IDIuODctMS4yMiA0LjY3LTEuNDVMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM5IDE4LjM4ek0xNS4xNyAxOGwtMy0zSDEyYy0yLjM3IDAtNC4yOS43My01LjQ4IDEuMzQtLjMyLjE2LS41Mi41LS41Mi44OFYxOGg5LjE3ek0xMiA2YzEuMSAwIDIgLjkgMiAyIDAgLjg2LS41NCAxLjU5LTEuMyAxLjg3bDEuNDggMS40OGEzLjk5OSAzLjk5OSAwIDEgMC01LjUzLTUuNTNsMS40OCAxLjQ4QTEuOTkgMS45OSAwIDAgMSAxMiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS45YTIuMSAyLjEgMCAxIDEgMCA0LjIgMi4xIDIuMSAwIDAgMSAwLTQuMm0wIDljMi45NyAwIDYuMSAxLjQ2IDYuMSAyLjF2MS4xSDUuOVYxN2MwLS42NCAzLjEzLTIuMSA2LjEtMi4xTTEyIDRDOS43OSA0IDggNS43OSA4IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgOWMtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvblJlbW92ZUFsdDEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA4YzAtMi4yMS0xLjc5LTQtNC00UzYgNS43OSA2IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00em0tMiAwYzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnpNMiAxOHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00cy04IDEuMzQtOCA0em0yIDBjLjItLjcxIDMuMy0yIDYtMiAyLjY5IDAgNS43NyAxLjI4IDYgMkg0ek0xNyAxMGg2djJoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25SZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA4YzAtMi4yMS0xLjc5LTQtNC00UzYgNS43OSA2IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00em0tMiAwYzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnpNMiAxOHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00cy04IDEuMzQtOCA0em0yIDBjLjItLjcxIDMuMy0yIDYtMiAyLjY5IDAgNS43NyAxLjI4IDYgMkg0ek0xNyAxMGg2djJoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAgMTBjMi43IDAgNS44IDEuMjkgNiAySDZjLjIzLS43MiAzLjMxLTIgNi0ybTAtMTJDOS43OSA0IDggNS43OSA4IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgMTBjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25hbEluanVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptNi4zOSA4LjU2QzE2LjcxIDExLjcgMTQuNTMgMTEgMTIgMTFzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDQgMTUuMjJWMjJoMnYtNi43OGMwLS4zOC4yLS43Mi41Mi0uODhDNy43MSAxMy43MyA5LjYzIDEzIDEyIDEzYy43NiAwIDEuNDcuMDcgMi4xMy4ybC0xLjU1IDMuM0g5Ljc1QzguMjMgMTYuNSA3IDE3LjczIDcgMTkuMjVTOC4yMyAyMiA5Ljc1IDIySDE4YzEuMSAwIDItLjkgMi0ydi00Ljc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTEwLjk0IDIwSDkuNzVjLS40MSAwLS43NS0uMzQtLjc1LS43NXMuMzQtLjc1Ljc1LS43NWgxLjg5bC0uNyAxLjV6TTE4IDIwaC00Ljg1bDIuOTQtNi4yN2MuNTQuMiAxLjAxLjQxIDEuNC42MS4zMS4xNi41MS41LjUxLjg4VjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGlhbm9PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIyIDMgNS44M1YxOWMwIDEuMS45IDIgMiAyaDEzLjE3bDEuNjEgMS42MSAxLjQxLTEuNDJ6TTguMjUgMTlINVY3LjgzbDIgMnYzLjY3YzAgLjU1LjQ1IDEgMSAxaC4yNVYxOXptMS41IDB2LTQuNUgxMGMuNDYgMCAuODItLjMxLjk0LS43M2wzLjMxIDMuMzFWMTloLTQuNXpNMTEgOC4xNyA1LjgzIDNIMTljMS4xIDAgMiAuOSAyIDJ2MTMuMTdsLTItMlY1aC0ydjguNWMwIC4xOS0uMDcuMzYtLjE2LjUxTDEzIDEwLjE3VjVoLTJ2My4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01IDExLjVoLjI1VjE5aC00LjV2LTQuNUgxMGMuNTUgMCAxLS40NSAxLTFWNWgydjguNWMwIC41NS40NSAxIDEgMXpNNSA1aDJ2OC41YzAgLjU1LjQ1IDEgMSAxaC4yNVYxOUg1VjV6bTE0IDE0aC0zLjI1di00LjVIMTZjLjU1IDAgMS0uNDUgMS0xVjVoMnYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjQ1IDE2LjUyLTMuMDEtMy4wMWMtLjExLS4xMS0uMjQtLjEzLS4zMS0uMTNzLS4yLjAyLS4zMS4xM0w4LjggMTYuNTNjLS4zNC4zNC0uODcuODktMi42NC44OWwzLjcxIDMuN2EzIDMgMCAwIDAgNC4yNCAwbDMuNzItMy43MWMtLjkxIDAtMS42Ny0uMTgtMi4zOC0uODl6TTguOCA3LjQ3bDMuMDIgMy4wMmMuMDguMDguMi4xMy4zMS4xM3MuMjMtLjA1LjMxLS4xM2wyLjk5LTIuOTljLjcxLS43NCAxLjUyLS45MSAyLjQzLS45MWwtMy43Mi0zLjcxYTMgMyAwIDAgMC00LjI0IDBsLTMuNzEgMy43YzEuNzYgMCAyLjMuNTggMi42MS44OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuMTEgOS44NS0yLjI1LTIuMjZIMTcuNmMtLjU0IDAtMS4wOC4yMi0xLjQ1LjYxbC0zIDNjLS4yOC4yOC0uNjUuNDItMS4wMi40MmExLjUgMS41IDAgMCAxLTEuMDItLjQyTDguMDkgOC4xN2MtLjM4LS4zOC0uOS0uNi0xLjQ1LS42SDUuMTdsLTIuMjkgMi4zYTMgMyAwIDAgMCAwIDQuMjRsMi4yOSAyLjNoMS40OGMuNTQgMCAxLjA2LS4yMiAxLjQ1LS42bDMuMDItMy4wMmMuMjgtLjI4LjY1LS40MiAxLjAyLS40MnMuNzQuMTQgMS4wMi40MmwzLjAxIDMuMDFjLjM4LjM4LjkuNiAxLjQ1LjZoMS4yNmwyLjI1LTIuMjZhMy4wNDIgMy4wNDIgMCAwIDAtLjAyLTQuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbHVzT25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA4SDh2NEg0djJoNHY0aDJ2LTRoNHYtMmgtNFY4em00LjUtMS45MlY3LjlsMi41LS41VjE4aDJWNWwtNC41IDEuMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTcgMTBoMnY3SDd6bTQtM2gydjEwaC0yem00IDZoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJlY2lzaW9uTWFudWZhY3R1cmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjkzIDguMzUtMy42IDEuNjhMMTQgNy43VjYuM2wyLjMzLTIuMzMgMy42IDEuNjhjLjM4LjE4LjgyLjAxIDEtLjM2LjE4LS4zOC4wMS0uODItLjM2LTFsLTMuOTItMS44M2EuOTkzLjk5MyAwIDAgMC0xLjEzLjJMMTMuNzggNC40QS45NzUuOTc1IDAgMCAwIDEzIDRjLS41NSAwLTEgLjQ1LTEgMXYxSDguODJDOC40IDQuODQgNy4zIDQgNiA0IDQuMzQgNCAzIDUuMzQgMyA3YzAgMS4xLjYgMi4wNSAxLjQ4IDIuNThMNy4wOCAxOEg2Yy0xLjEgMC0yIC45LTIgMnYxaDEzdi0xYzAtMS4xLS45LTItMi0yaC0xLjYyTDguNDEgOC43N2MuMTctLjI0LjMxLS40OS40MS0uNzdIMTJ2MWMwIC41NS40NSAxIDEgMSAuMzIgMCAuNi0uMTYuNzgtLjRsMS43NCAxLjc0Yy4zLjMuNzUuMzggMS4xMy4ybDMuOTItMS44M2MuMzgtLjE4LjU0LS42Mi4zNi0xYS43NTMuNzUzIDAgMCAwLTEtLjM2ek02IDhjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNS4xMSAxMEg5LjE3bC0yLjQ2LThoLjFsNC4zIDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQc3ljaG9sb2d5QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTQgOS4wNkMxOS41IDUuNzMgMTYuNTcgMyAxMyAzIDkuNDcgMyA2LjU3IDUuNjEgNi4wOCA5bC0xLjkzIDMuNDhjLS40MS42Ni4wNyAxLjUyLjg1IDEuNTJoMXYyYzAgMS4xLjkgMiAyIDJoMXYzaDd2LTQuNjhhNy4wMTYgNy4wMTYgMCAwIDAgMy45NC03LjI2em0tNS4wNSA1LjU3LS44OS40MlYxOWgtM3YtM0g4di00SDYuN2wxLjMzLTIuMzNDOC4yMSA3LjA2IDEwLjM1IDUgMTMgNWMyLjc2IDAgNSAyLjI0IDUgNSAwIDIuMDktMS4yOSAzLjg4LTMuMTEgNC42M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAxMi41NGMtLjQxIDAtLjc0LjMxLS43NC43MyAwIC40MS4zMy43NC43NC43NC40MiAwIC43My0uMzMuNzMtLjc0YS43MS43MSAwIDAgMC0uNzMtLjczek0xMi41IDdjLTEuMDMgMC0xLjc0LjY3LTIgMS40NWwuOTYuNGMuMTMtLjM5LjQzLS44NiAxLjA1LS44Ni45NSAwIDEuMTMuODkuOCAxLjM2LS4zMi40NS0uODYuNzUtMS4xNCAxLjI2LS4yMy40LS4xOC44Ny0uMTggMS4xNmgxLjA2YzAtLjU1LjA0LS42NS4xMy0uODIuMjMtLjQyLjY1LS42MiAxLjA5LTEuMjcuNC0uNTkuMjUtMS4zOC0uMDEtMS44LS4zMS0uNDktLjktLjg4LTEuNzYtLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHN5Y2hvbG9neSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjgyIDcuMjItMSAuNGMtLjIxLS4xNi0uNDMtLjI5LS42Ny0uMzlMMTQgNi4xN2MtLjAyLS4xLS4xLS4xNy0uMi0uMTdoLTEuNmMtLjEgMC0uMTguMDctLjE5LjE3bC0uMTUgMS4wNmMtLjI0LjEtLjQ3LjIzLS42Ny4zOWwtMS0uNGMtLjA5LS4wMy0uMiAwLS4yNC4wOWwtLjggMS4zOGEuMi4yIDAgMCAwIC4wNS4yNmwuODUuNjZjLS4wMy4xMi0uMDUuMjYtLjA1LjM5cy4wMS4yNi4wMy4zOWwtLjg0LjY2YS4xOS4xOSAwIDAgMC0uMDUuMjVsLjggMS4zOWMuMDUuMDkuMTUuMTIuMjUuMDlsLjk5LS40Yy4yMS4xNi40My4yOS42OC4zOWwuMTQgMS4wNmMuMDIuMS4xLjE3LjIuMTdoMS42Yy4xIDAgLjE4LS4wNy4yLS4xN2wuMTUtMS4wNmMuMjQtLjEuNDctLjIzLjY3LS4zOWwuOTkuNGMuMDkuMDQuMiAwIC4yNC0uMDlsLjgtMS4zOWMuMDUtLjA5LjAzLS4xOS0uMDUtLjI1bC0uODMtLjY2YTIuNTYxIDIuNTYxIDAgMCAwIDAtLjc4bC44NS0uNjZhLjIuMiAwIDAgMCAuMDUtLjI2bC0uOC0xLjM4Yy0uMDUtLjA5LS4xNi0uMTItLjI1LS4wOXpNMTMgMTEuNDNhMS40MyAxLjQzIDAgMSAxIDAtMi44NiAxLjQzIDEuNDMgMCAwIDEgMCAyLjg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45NCA5LjA2Yy0uNDMtMy4yNy0zLjIzLTUuODYtNi41My02LjA1QzEzLjI3IDMgMTMuMTQgMyAxMyAzIDkuNDcgMyA2LjU3IDUuNjEgNi4wOCA5bC0xLjkzIDMuNDhjLS40MS42Ni4wNyAxLjUyLjg1IDEuNTJoMXYyYzAgMS4xLjkgMiAyIDJoMXYzaDd2LTQuNjhhNy4wMTYgNy4wMTYgMCAwIDAgMy45NC03LjI2em0tNS4wNSA1LjU3LS44OS40MlYxOWgtM3YtM0g4di00SDYuN2wxLjMzLTIuMzNDOC4yMSA3LjA2IDEwLjM1IDUgMTMgNWMyLjc2IDAgNSAyLjI0IDUgNSAwIDIuMDktMS4yOSAzLjg4LTMuMTEgNC42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVB1YmxpY09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDguMTcgNi40OSAzLjY2QTkuOTEgOS45MSAwIDAgMSAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwIDAgMi4wNC0uNjEgMy45My0xLjY2IDUuNTFsLTEuNDYtMS40NkE3Ljg0MiA3Ljg0MiAwIDAgMCAyMCAxMmMwLTMuMzUtMi4wNy02LjIyLTUtNy40MVY1YzAgMS4xLS45IDItMiAyaC0ydjEuMTd6bTEwLjE5IDEzLjAyLTEuNDEgMS40MS0yLjI3LTIuMjdBOS44MzkgOS44MzkgMCAwIDEgMTIgMjJDNi40OCAyMiAyIDE3LjUyIDIgMTJjMC0yLjA0LjYxLTMuOTMgMS42Ni01LjUxTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOSAxOC4zOHpNMTEgMThjLTEuMSAwLTItLjktMi0ydi0xbC00Ljc5LTQuNzlDNC4wOCAxMC43OSA0IDExLjM4IDQgMTJjMCA0LjA4IDMuMDUgNy40NCA3IDcuOTNWMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQdWJsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC0uNjEuMDgtMS4yMS4yMS0xLjc4TDguOTkgMTV2MWMwIDEuMS45IDIgMiAydjEuOTNDNy4wNiAxOS40MyA0IDE2LjA3IDQgMTJ6bTEzLjg5IDUuNGMtLjI2LS44MS0xLTEuNC0xLjktMS40aC0xdi0zYzAtLjU1LS40NS0xLTEtMWgtNnYtMmgyYy41NSAwIDEtLjQ1IDEtMVY3aDJjMS4xIDAgMi0uOSAyLTJ2LS40MUMxNy45MiA1Ljc3IDIwIDguNjUgMjAgMTJjMCAyLjA4LS44MSAzLjk4LTIuMTEgNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVhbEVzdGF0ZUFnZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNi41VjE0aC0yVjcuNUwxNCA0IDkgNy41VjlIN1Y2LjVsNy01IDcgNXptLTUuNS41aC0xdjFoMVY3em0tMiAwaC0xdjFoMVY3em0yIDJoLTF2MWgxVjl6bS0yIDBoLTF2MWgxVjl6bTUuNSA3aC0yYzAtMS4yLS43NS0yLjI4LTEuODctMi43TDguOTcgMTFIMXYxMWg2di0xLjQ0bDcgMS45NCA4LTIuNXYtMWMwLTEuNjYtMS4zNC0zLTMtM3pNMyAyMHYtN2gydjdIM3ptMTAuOTcuNDFMNyAxOC40OFYxM2gxLjYxbDUuODIgMi4xN2MuMzQuMTMuNTcuNDYuNTcuODMgMCAwLTEuOTktLjA1LTIuMy0uMTVsLTIuMzgtLjc5LS42MyAxLjkgMi4zOC43OWMuNTEuMTcgMS4wNC4yNiAxLjU4LjI2SDE5Yy4zOSAwIC43NC4yMy45LjU2bC01LjkzIDEuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWNvbW1lbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTBoLTQuNTlsLjU4LTMuNDF2LS4yYy0uMDEtLjI2LS4xMi0uNTEtLjMtLjdMMTIgNWwtNC42IDVjLS4yNy4yNi0uNDIuNjItLjQgMXY1YzAgMS4xLjkgMiAyIDJoNS41Yy41Ni4wMyAxLjA4LS4yOSAxLjMtLjhsMi4xLTQuOWMuMDgtLjE1LjEyLS4zMy4xLS41VjExYzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlY3ljbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNzcgNy4xNSA3LjIgNC43OGwxLjAzLTEuNzFjLjM5LS42NSAxLjMzLS42NSAxLjcyIDBsMS40OCAyLjQ2LTEuMjMgMi4wNi0xIDEuNjItMy40My0yLjA2em0xNS45NSA1LjgyLTEuNi0yLjY2LTMuNDYgMkwxOC44NyAxNkgyMGEyIDIgMCAwIDAgMi0yYzAtLjM2LS4xLS43MS0uMjgtMS4wM3pNMTYgMjFoMS41YTIgMiAwIDAgMCAxLjc5LTEuMTFMMjAuNzQgMTdIMTZ2LTJsLTQgNCA0IDR2LTJ6bS02LTRINS43bC0uODQgMS40MWMtLjMuNS0uMzIgMS4xMi0uMDYgMS42NS4yOC41Ny44Ny45NCAxLjUyLjk0SDEwdi00em0tMy44OC0yLjY1IDEuNzMgMS4wNEw2LjQ4IDkuOSAxIDExLjI3bDEuNyAxLjAyLS40MS42OWMtLjM1LjU5LS4zOCAxLjMxLS4wNyAxLjkybDEuNjMgMy4yNiAyLjI3LTMuODF6bTEwLjktOS4yMS0xLjMtMi4xN0MxNS4zNSAyLjM3IDE0LjcgMiAxNCAyaC0zLjUzbDMuMTIgNS4yLTEuNzIgMS4wMyA1LjQ5IDEuMzcgMS4zNy01LjQ5LTEuNzEgMS4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlZHVjZUNhcGFjaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem00Ljc4IDMuNThBNi45NSA2Ljk1IDAgMCAwIDE4IDdjLS42NyAwLTEuMzEuMS0xLjkyLjI4LjU4LjU1LjkyIDEuMzIuOTIgMi4xNVYxMGg1di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek02IDZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0xLjkyIDEuMjhDNy4zMSA3LjEgNi42NyA3IDYgN2MtLjk5IDAtMS45My4yMS0yLjc4LjU4QTIuMDEgMi4wMSAwIDAgMCAyIDkuNDNWMTBoNXYtLjU3YzAtLjgzLjM0LTEuNi45Mi0yLjE1ek0xMCA0YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTYgNkg4di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMTYgOS40M1YxMHptLTEgNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem02IDZoLTh2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAyMSAyMS40M1YyMnpNNSAxNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem02IDZIM3YtLjU3YzAtLjgxLjQ4LTEuNTMgMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMSA1LjU2IDBBMi4wMSAyLjAxIDAgMCAxIDExIDIxLjQzVjIyem0xLjc1LTl2LTJoLTEuNXYySDlsMyAzIDMtM2gtMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZU1vZGVyYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA0LjE0IDYgMi4yNXY0LjdjMCAxLjE5LS4yMyAyLjM2LS42NCAzLjQ0bDEuNTEgMS41MWMuNzItMS41MyAxLjEzLTMuMjIgMS4xMy00Ljk1VjVsLTgtMy01LjIyIDEuOTYgMS41NSAxLjU1TDEyIDQuMTR6TTIuODEgMi44MSAxLjM5IDQuMjIgNCA2LjgzdjQuMjZjMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDEuNzItLjQzIDMuMjgtMS4zNiA0LjU1LTIuNjJsMy4yMyAzLjIzIDEuNDEtMS40MUwyLjgxIDIuODF6TTEyIDE5LjkyYy0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M1Y4LjgzbDkuMTQgOS4xNGMtLjkuODgtMS45NyAxLjU3LTMuMTQgMS45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvbGxlclNrYXRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMmEzLjk2IDMuOTYgMCAwIDAtMi45MS0zLjgybC0yLjYyLS43NEMxMy42MiA3LjE5IDEzIDYuMzkgMTMgNS41VjFINHYxNWgxNnYtNHptLTIgMkg2VjNoNXYxSDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjVIMTFsLjEgMUg5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41aDEuODFjLjQ1IDEuMTIgMS40IDIuMDEgMi42IDIuMzZsMi42Mi43M0MxNy40IDEwLjMzIDE4IDExLjEgMTggMTJ2MnpNNSAxN2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0xNC00Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS03LTRjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNhZmV0eURpdmlkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1aDJ2MTRoLTJWNXptLTYgN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTIuNzggMS41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxIDE1LjQzVjE2aDh2LS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTE5IDEyYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMi43OCAxLjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDE1IDE1LjQzVjE2aDh2LS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYW5pdGl6ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0czEuNSAxLjY2IDEuNSAyLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjV6bTQgOC41YTIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLTEuNjctMi41LTQuNS0yLjUtNC41UzE3IDEwLjgzIDE3IDEyLjVhMi41IDIuNSAwIDAgMCAyLjUgMi41ek0xMyAxNGgtMnYtMkg5djJIN3YyaDJ2Mmgydi0yaDJ2LTJ6bTMtMnY4YzAgMS4xLS45IDItMiAySDZjLTEuMSAwLTItLjktMi0ydi04YzAtMi45NyAyLjE2LTUuNDMgNS01LjkxVjRIN1YyaDZjMS4xMyAwIDIuMTUuMzkgMi45OSAxLjAxbC0xLjQzIDEuNDNDMTQuMSA0LjE3IDEzLjU3IDQgMTMgNGgtMnYyLjA5YzIuODQuNDggNSAyLjk0IDUgNS45MXptLTIgMGMwLTIuMjEtMS43OS00LTQtNHMtNCAxLjc5LTQgNHY4aDh2LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDExVjhjNC41Ni0uNTggOC0zLjEgOC02SDJjMCAyLjkgMy40NCA1LjQyIDggNnYzYy0zLjY4LjczLTggMy42MS04IDExaDZ2LTJINC4xM2MuOTMtNi44MyA2LjY1LTcuMiA3Ljg3LTcuMnM2Ljk0LjM3IDcuODcgNy4ySDE2djJoNmMwLTcuMzktNC4zMi0xMC4yNy04LTExem00Ljg3LTdDMTcuNSA1LjE5IDE1IDYuMTIgMTIgNi4xMlM2LjUgNS4xOSA1LjEzIDRoMTMuNzR6TTEyIDIyYy0xLjEgMC0yLS45LTItMiAwLS41NS4yMi0xLjA1LjU5LTEuNDFDMTEuMzkgMTcuNzkgMTYgMTYgMTYgMTZzLTEuNzkgNC42MS0yLjU5IDUuNDFjLS4zNi4zNy0uODYuNTktMS40MS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjaG9vbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyAxIDlsNCAyLjE4djZMMTIgMjFsNy0zLjgydi02bDItMS4wOVYxN2gyVjlMMTIgM3ptNi44MiA2TDEyIDEyLjcyIDUuMTggOSAxMiA1LjI4IDE4LjgyIDl6TTE3IDE1Ljk5bC01IDIuNzMtNS0yLjczdi0zLjcyTDEyIDE1bDUtMi43M3YzLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NpZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDExLjMzIDE4IDE4SDZsNS02LjY3VjZoMm0yLjk2LTJIOC4wNGMtLjQyIDAtLjY1LjQ4LS4zOS44MUw5IDYuNXY0LjE3TDMuMiAxOC40Yy0uNDkuNjYtLjAyIDEuNi44IDEuNmgxNmMuODIgMCAxLjI5LS45NC44LTEuNkwxNSAxMC42N1Y2LjVsMS4zNS0xLjY5Yy4yNi0uMzMuMDMtLjgxLS4zOS0uODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY29yZWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOWgtMi41Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMUgxOGMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xem0tLjUgNC41SDE2di0zaDEuNXYzem0tOCAxLjVINXYtMi41YzAtLjU1LjQ1LTEgMS0xaDJ2LTFINVY5aDMuNWMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMWgtMnYxaDNWMTV6bTMuMjUtNGgtMS41VjkuNWgxLjVWMTF6bTAgMy41aC0xLjVWMTNoMS41djEuNXpNMjIgNnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoM1YyaDJ2Mmg2VjJoMnYyaDNjMS4xIDAgMiAuOSAyIDJ6bS0yIDEyVjZoLTcuMjV2MS41aC0xLjVWNkg0djEyaDcuMjV2LTEuNWgxLjVWMThIMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3ViYURpdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTNjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNy44OS0yLjg5IDQuNTMtMS4yMS0uNzgtMi45LTQuNTMgMS4yMWMtLjguMjEtMS4yOCAxLjA0LTEuMDYgMS44NC4yMi44IDEuMDQgMS4yOCAxLjg0IDEuMDZ6TTIwLjUgNS45IDIzIDNsLTEtMS0zIDMtMiA0LTkuNDggMi44N2MtLjgyLjItMS4zOS44OS0xLjUgMS42OEw1LjI0IDE4IDIuNCAyMS44IDQgMjNsMy00IDEuMTQtMy4xNEwxNCAxNGw1LTMuNSAxLjUtNC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VsZkltcHJvdmVtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTZ2LTJjLTIuMjQgMC00LjE2LS45Ni01LjYtMi42OGwtMS4zNC0xLjZBMS45OCAxLjk4IDAgMCAwIDEyLjUzIDloLTEuMDVjLS41OSAwLTEuMTUuMjYtMS41My43MmwtMS4zNCAxLjZDNy4xNiAxMy4wNCA1LjI0IDE0IDMgMTR2MmMyLjc3IDAgNS4xOS0xLjE3IDctMy4yNVYxNWwtMy44OCAxLjU1Yy0uNjcuMjctMS4xMi45My0xLjEyIDEuNjZDNSAxOS4yIDUuOCAyMCA2Ljc5IDIwSDl2LS41YTIuNSAyLjUgMCAwIDEgMi41LTIuNWgzYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNWgtM2MtLjgzIDAtMS41LjY3LTEuNSAxLjV2LjVoNy4yMWMuOTkgMCAxLjc5LS44IDEuNzktMS43OSAwLS43My0uNDUtMS4zOS0xLjEyLTEuNjZMMTQgMTV2LTIuMjVjMS44MSAyLjA4IDQuMjMgMy4yNSA3IDMuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnREaXNzYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRjLTIuMzMgMC00LjMyIDEuNDUtNS4xMiAzLjVoMS42N2MuNjktMS4xOSAxLjk3LTIgMy40NS0yczIuNzUuODEgMy40NSAyaDEuNjdjLS44LTIuMDUtMi43OS0zLjUtNS4xMi0zLjV6bS0uMDEtMTJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnRpbWVudE5ldXRyYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTRoNnYxLjVIOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnRTYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjLTEuNDggMC0yLjc1LS44MS0zLjQ1LTJINi44OGE1LjQ5NSA1LjQ5NSAwIDAgMCAxMC4yNCAwaC0xLjY3Yy0uNyAxLjE5LTEuOTcgMi0zLjQ1IDJ6bS0uMDEtMTRDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnRpbWVudFZlcnlEaXNzYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEzLjVjLTIuMzMgMC00LjMxIDEuNDYtNS4xMSAzLjVoMTAuMjJjLS44LTIuMDQtMi43OC0zLjUtNS4xMS0zLjV6TTcuODIgMTJsMS4wNi0xLjA2TDkuOTQgMTIgMTEgMTAuOTQgOS45NCA5Ljg4IDExIDguODIgOS45NCA3Ljc2IDguODggOC44MiA3LjgyIDcuNzYgNi43NiA4LjgybDEuMDYgMS4wNi0xLjA2IDEuMDZ6bTQuMTctMTBDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgOS45OSAxMFMyMiAxNy41MyAyMiAxMiAxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptNC4xOC0xMi4yNC0xLjA2IDEuMDYtMS4wNi0xLjA2TDEzIDguODJsMS4wNiAxLjA2TDEzIDEwLjk0IDE0LjA2IDEybDEuMDYtMS4wNkwxNi4xOCAxMmwxLjA2LTEuMDYtMS4wNi0xLjA2IDEuMDYtMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnRpbWVudFZlcnlTYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgOS45OSAxMFMyMiAxNy41MyAyMiAxMiAxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMS0xMC4wNkwxNC4wNiAxMWwxLjA2LTEuMDZMMTYuMTggMTFsMS4wNi0xLjA2LTIuMTItMi4xMkwxMyA5Ljk0em0tNC4xMiAwTDkuOTQgMTEgMTEgOS45NCA4Ljg4IDcuODIgNi43NiA5Ljk0IDcuODIgMTFsMS4wNi0xLjA2ek0xMiAxNy41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V2ZXJlQ29sZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDEwLjQxIDQtNEwxNC41OSA1IDEyIDcuNTlWNGgtMnYzLjU5TDcuNDEgNSA2IDYuNDFsNCA0VjEySDguNDFsLTQtNEwzIDkuNDEgNS41OSAxMkgydjJoMy41OUwzIDE2LjU5IDQuNDEgMThsNC00SDEwdjEuNTlsLTQgNEw3LjQxIDIxIDEwIDE4LjQxVjIyaDJ2LTMuNTlMMTQuNTkgMjEgMTYgMTkuNTlsLTQtNFYxNGgxLjU5bDQgNEwxOSAxNi41OSAxNi40MSAxNEgyMHYtMmgtOHpNMTkgMmgydjVoLTJ6TTE5IDhoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE2LjA4Yy0uNzYgMC0xLjQ0LjMtMS45Ni43N0w4LjkxIDEyLjdjLjA1LS4yMy4wOS0uNDYuMDktLjdzLS4wNC0uNDctLjA5LS43bDcuMDUtNC4xMWMuNTQuNSAxLjI1LjgxIDIuMDQuODEgMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTMtMyAxLjM0LTMgM2MwIC4yNC4wNC40Ny4wOS43TDguMDQgOS44MUM3LjUgOS4zMSA2Ljc5IDkgNiA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzYy43OSAwIDEuNS0uMzEgMi4wNC0uODFsNy4xMiA0LjE2Yy0uMDUuMjEtLjA4LjQzLS4wOC42NSAwIDEuNjEgMS4zMSAyLjkyIDIuOTIgMi45MnMyLjkyLTEuMzEgMi45Mi0yLjkyYzAtMS42MS0xLjMxLTIuOTItMi45Mi0yLjkyek0xOCA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTYgMTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTIgNy4wMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2ljayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMzIgMTAuNTYgOC4zOCA5LjUgNy4zMiA4LjQ0bDEuMDYtMS4wNkwxMC41IDkuNWwtMi4xMiAyLjEyLTEuMDYtMS4wNnpNNC41IDljLjAzIDAgLjA1LjAxLjA4LjAxQTguMDAyIDguMDAyIDAgMCAxIDEyIDRjMi4xOSAwIDQuMTYuODggNS42MSAyLjMuMTUtLjYuNDUtMS4yOS44MS0xLjk2QTkuOTY1IDkuOTY1IDAgMCAwIDExLjk5IDJjLTQuODggMC04Ljk0IDMuNTEtOS44MSA4LjE0QzIuNzQgOS40NCAzLjU5IDkgNC41IDl6TTIxIDEwLjVjLS40MiAwLS44Mi0uMDktMS4xOS0uMjIuMTIuNTUuMTkgMS4xMy4xOSAxLjcyIDAgNC40Mi0zLjU4IDgtOCA4LTMuMzYgMC02LjIzLTIuMDctNy40Mi01LjAxLS4wMyAwLS4wNS4wMS0uMDguMDEtLjUyIDAtMS4wNC0uMTQtMS41LS40LS4zMi0uMTgtLjU5LS40Mi0uODItLjcuODkgNC42MSA0LjkzIDguMSA5LjggOC4xQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyYzAtLjU1LS4wNi0xLjA5LS4xNC0xLjYyYTMuNSAzLjUgMCAwIDEtLjg2LjEyek0yMSAzcy0yIDIuOS0yIDQgLjkgMiAyIDIgMi0uOSAyLTItMi00LTItNHptLTUuMzggNC4zOEwxMy41IDkuNWwyLjEyIDIuMTIgMS4wNi0xLjA2LTEuMDYtMS4wNiAxLjA2LTEuMDYtMS4wNi0xLjA2ek04LjU2IDE3Yy42OS0xLjE5IDEuOTctMiAzLjQ0LTJzMi43NS44MSAzLjQ0IDJoMS42OGMtLjgtMi4wNS0yLjc5LTMuNS01LjEyLTMuNS0uODcgMC0xLjcuMi0yLjQzLjU3TDUuOTkgMTJjMC0uNTItLjI2LTEuMDItLjc0LTEuMjktLjcyLS40MS0xLjYzLS4xNy0yLjA1LjU1LS40MS43Mi0uMTcgMS42My41NSAyLjA1LjQ4LjI4IDEuMDUuMjUgMS40OSAwbDIuOTcgMS43MmMtLjU3LjUzLTEuMDMgMS4yMS0xLjMzIDEuOTdoMS42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25MYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjQ5IDEzLS45My0xLjg2Yy0uMzctLjc0LS4wNy0xLjY0LjY3LTIuMDFsLjI2LS4xMyA1LjczIDUuNDZjLjUuNDcuNzggMS4xMy43OCAxLjgxdjUuMjNhMi41IDIuNSAwIDAgMS0yLjUgMi41aC0xMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMUgxMHYtMUg0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDZ2LTFIM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg3di0xSDQuNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg3Ljk5em0xLjUxLjJWMTVoLTJ2N2g0Yy41NSAwIDEtLjQ1IDEtMXYtNC41M2MwLS4yNy0uMTEtLjU0LS4zMS0uNzNMMTQgMTMuMnptLTIuMjItNi4wOGMtLjg0LjQtMS4xNy42Mi0xLjYzIDEuMTlsLTIuNy0yLjg1QS45OTYuOTk2IDAgMSAxIDguOSA0LjA5bDIuODggMy4wM3pNOS42NCA5LjIxYTMuNDYgMy40NiAwIDAgMC0uMiAxLjc5aC0uODZMNi4zMSA4LjYxYS45ODcuOTg3IDAgMCAxIC4wNC0xLjQxLjk5Ni45OTYgMCAwIDEgMS40MS4wNGwxLjg4IDEuOTd6bTEwLjY5IDQuNy44OC0uODNjLjUtLjQ3Ljc5LTEuMTMuNzktMS44MlYzLjM1bC0uMjctLjFjLS43OC0uMjgtMS42NC4xMi0xLjkyLjlsLS43MSAxLjk2LTUuNS01LjhhLjk5Ni45OTYgMCAxIDAtMS40NSAxLjM3bDMuNzkgMy45OS0uNzMuNjktNC44Mi01LjA4YS45OTYuOTk2IDAgMSAwLTEuNDUgMS4zN2wzLjc4IDMuOThMMTUuMzggOWwxLjkzLTEuODcgMS4zOCAxLjQ1TDIwIDcuMzR2My43YzAgLjI4LS4xMS41NC0uMzEuNzNsLS43LjY2LjYxLjU4Yy4yOS4yNy41My41Ny43My45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2luZ2xlQmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJjMC0xLjEtLjktMi0yLTJWN2MwLTEuMS0uOS0yLTItMkg4Yy0xLjEgMC0yIC45LTIgMnYzYy0xLjEgMC0yIC45LTIgMnY1aDEuMzNMNiAxOWgxbC42Ny0yaDguNjdsLjY2IDJoMWwuNjctMkgyMHYtNXptLTQtMmgtM1Y3aDN2M3pNOCA3aDN2M0g4Vjd6bS0yIDVoMTJ2M0g2di0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2thdGVib2FyZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNNy4yNSAyMi41Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NS43NS0uMzQuNzUtLjc1LS4zNC0uNzUtLjc1LS43NXptOC41IDBjLS40MSAwLS43NS4zNC0uNzUuNzVzLjM0Ljc1Ljc1Ljc1Ljc1LS4zNC43NS0uNzUtLjM0LS43NS0uNzUtLjc1em0zLjQ5LTMuNWEuNzIuNzIgMCAwIDAtLjU5LjNjLS41NS43My0xLjQyIDEuMi0yLjQgMS4ySDE2di02bC00LjMyLTIuNjcgMS44LTIuODlBNi41MDcgNi41MDcgMCAwIDAgMTkgMTJ2LTJjLTEuODUgMC0zLjQ0LTEuMTItNC4xMy0yLjcybC0uNTItMS4yMUMxNC4xNiA1LjY0IDEzLjYxIDUgMTIuNyA1SDdMNC41IDlsMS43IDEuMDZMOC4xIDdoMi4zNWwtMi40IDMuODRjLS4zMS41LS4zOSAxLjExLS4yMSAxLjY3bDEuMzQgNC4xNS0zLjEyIDMuNzZjLS43LS4xNi0xLjMtLjU3LTEuNzEtMS4xMmEuNzQ5Ljc0OSAwIDEgMC0xLjIuOWMuODIgMS4xIDIuMTMgMS44IDMuNiAxLjhoOS41YzEuNDcgMCAyLjc4LS43IDMuNi0xLjguMS0uMTQuMTUtLjMuMTUtLjQ1IDAtLjM5LS4zMi0uNzUtLjc2LS43NXpNMTQgMjAuNUg4LjZsMi45LTMuNS0xLTMuMyAzLjUgMi4ydjQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNsZWRkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNC41YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptOC44IDE1Ljc0YTQuMDAzIDQuMDAzIDAgMCAxLTUuMDQgMi41N0wxIDE3LjM2bC40Ni0xLjQzIDMuOTMgMS4yOC40Ni0xLjQzLTMuOTItMS4yOC40Ni0xLjQzTDQgMTMuNlY5LjVsNS40Ny0yLjM1Yy4zOS0uMTcuODQtLjIxIDEuMjgtLjA3Ljk1LjMxIDEuNDYgMS4zMiAxLjE2IDIuMjdsLTEuMDUgMy4yNCAyLjE0LS4zNGMuODktLjE1IDEuNzYuMzIgMi4xNCAxLjE0bDIuMDggNC41MSAxLjkzLjYzLS40NiAxLjQzLTMuMzItMS4wOC0uNDcgMS40MiAzLjMyIDEuMDhjMS4zMS40MyAyLjcyLS4yOSAzLjE1LTEuNjEuNDMtMS4zMS0uMjktMi43Mi0xLjYxLTMuMTVsLjQ2LTEuNDNjMi4xMS42OSAzLjI3IDIuOTUgMi41OCA1LjA1ek02IDE0LjI1bDEuMDEuMzNjLS4yMi0uNDItLjI4LS45Mi0uMTItMS40TDcuOTIgMTAgNiAxMC44MnYzLjQzem03Ljk0IDQuMTYtNi42Ni0yLjE2LS40NiAxLjQzIDYuNjYgMi4xNi40Ni0xLjQzem0uNjktMS4zNi0xLjE4LTIuNTYtMy45Ny44OSA1LjE1IDEuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbm93Ym9hcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTcuNCAxNy4wOWEuNzQ4Ljc0OCAwIDAgMC0uNjQuMTdjLS42OS42LTEuNjQuODgtMi42LjY3TDE3IDIwLjY5bC0xLTYuMTktMy4zMi0yLjY3IDEuOC0yLjg5QTYuNTA3IDYuNTA3IDAgMCAwIDIwIDEydi0yYy0xLjg1IDAtMy40NC0xLjEyLTQuMTMtMi43MmwtLjUyLTEuMjFDMTUuMTYgNS42NCAxNC42MSA1IDEzLjcgNUg4TDUuNSA5bDEuNyAxLjA2TDkuMSA3aDIuMzVsLTIuNTEgMy45OWMtLjI4LjQ1LS4zNyAxLS4yNSAxLjUyTDkuNSAxNiA2IDE4LjM1bC0uNDctLjFjLS45Ni0uMi0xLjcxLS44NS0yLjEtMS42N2EuNzQ0Ljc0NCAwIDAgMC0uNTEtLjQyYy0uNDMtLjA5LS44Mi4yLS45LjU4LS4wNC4xNC0uMDIuMzEuMDUuNDYuNTggMS4yNCAxLjcxIDIuMiAzLjE1IDIuNTFsMTIuNjMgMi42OWMxLjQ0LjMxIDIuODYtLjExIDMuOS0xLjAxLjEzLS4xMS4yMS0uMjYuMjQtLjQxLjA3LS4zOC0uMTYtLjgtLjU5LS44OXpNOC43MyAxOC45M2wzLjAyLTIuMDMtLjQ0LTMuMzIgMi44NCAyLjAyLjc1IDQuNjQtNi4xNy0xLjMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU25vd3Nob2VpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDMuNWMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yek02LjMyIDE5LjAzbC0xLjE0LTEuNDdMNCAxOC41bDIuMzggMy4wNGMuNTEuNjUgMS4xNiAxLjE1IDEuODggMS40MS4yOC4xLjUzLjA0LjcyLS4xMS4zLS4yMy40Mi0uNy4xMi0xLjA3YS44NC44NCAwIDAgMC0uMzEtLjIyIDIuOTcgMi45NyAwIDAgMS0xLjE0LS44M2wtLjA4LS4xTDExIDE4LjJsLjg5LTMuMjIgMi4xMSAydjQuNTJoLTJWMjNoMy44N2MuODIgMCAxLjYxLS4yMSAyLjI2LS42MS4yNi0uMTYuMzctLjM5LjM3LS42NCAwLS4zOC0uMy0uNzUtLjc3LS43NS0uMTMgMC0uMjYuMDQtLjM3LjEtLjQuMjMtLjg3LjM3LTEuMzYuNHYtNi4wMmwtMi4xMS0yIC42LTNDMTUuNzkgMTEuOTggMTcuOCAxMyAyMCAxM3YtMmMtMS45IDAtMy41MS0xLjAyLTQuMzEtMi40MmwtMS0xLjU4Yy0uNC0uNi0xLTEtMS43LTEtLjc1IDAtMS40MS4zNC01Ljk5IDIuMjhWMTNoMlY5LjU4bDEuNzktLjdMOS4yIDE3bC0yLjg4IDIuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb2NpYWxEaXN0YW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNWMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem00Ljc4IDMuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMiAxMC40M1YxMWg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0xOCA3YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMi43OCAxLjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDE0IDEwLjQzVjExaDh2LS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6bS0yLjc3IDQuNDMtMS40MSAxLjQxTDE4LjE3IDE2SDUuODNsMS41OC0xLjU5TDYgMTNsLTQgNCAzLjk5IDMuOTkgMS40MS0xLjQxTDUuODMgMThoMTIuMzRsLTEuNTggMS41OEwxOCAyMC45OSAyMiAxN2wtMy45OS0zLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU291dGhBbWVyaWNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNCAxMmMwLTEuOTUuNy0zLjc0IDEuODctNS4xM0w5IDEwdjFjMCAxLjEuOSAyIDIgMnY1LjU5YzAgLjI3LjExLjUyLjI5LjcxbC43MS43Yy00LjQyIDAtOC0zLjU4LTgtOHptOSA3Ljk0VjE4bDMuNzUtNS42MmMuMTYtLjI1LjI1LS41NC4yNS0uODNWMTAuNWMwLS41NS0uNDUtMS0xLTFoLTEuNWwtMS40LTEuNzVjLS4zOC0uNDctLjk1LS43NS0xLjU2LS43NUg4VjUuMDdBNy45NzEgNy45NzEgMCAwIDEgMTIgNGM0LjQxIDAgOCAzLjU5IDggOCAwIDQuMDctMy4wNiA3LjQ0LTcgNy45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0Jhc2ViYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNS42MSAxNi43OEM0LjYgMTUuNDUgNCAxMy44IDQgMTJzLjYtMy40NSAxLjYxLTQuNzhhNS45NzUgNS45NzUgMCAwIDEgMCA5LjU2ek0xMiAyMGMtMS44OSAwLTMuNjMtLjY2LTUtMS43NiAxLjgzLTEuNDcgMy0zLjcxIDMtNi4yNFM4LjgzIDcuMjMgNyA1Ljc2QzguMzcgNC42NiAxMC4xMSA0IDEyIDRzMy42My42NiA1IDEuNzZjLTEuODMgMS40Ny0zIDMuNzEtMyA2LjI0czEuMTcgNC43NyAzIDYuMjRBNy45NjMgNy45NjMgMCAwIDEgMTIgMjB6bTYuMzktMy4yMmE1Ljk3NSA1Ljk3NSAwIDAgMSAwLTkuNTZDMTkuNCA4LjU1IDIwIDEwLjIgMjAgMTJzLS42IDMuNDUtMS42MSA0Ljc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzQmFza2V0YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTUuMjMgNy43NUM2LjEgOC42MiA2LjcgOS43NCA2LjkxIDExSDQuMDdhOC4xMiA4LjEyIDAgMCAxIDEuMTYtMy4yNXpNNC4wNyAxM2gyLjg0YTUuOTcyIDUuOTcyIDAgMCAxLTEuNjggMy4yNUE4LjEyIDguMTIgMCAwIDEgNC4wNyAxM3pNMTEgMTkuOTNjLTEuNzMtLjIyLTMuMjktMS00LjQ5LTIuMTRBNy45NTIgNy45NTIgMCAwIDAgOC45MyAxM0gxMXY2Ljkzek0xMSAxMUg4LjkzQTcuOTkgNy45OSAwIDAgMCA2LjUgNi4yIDguMDM1IDguMDM1IDAgMCAxIDExIDQuMDdWMTF6bTguOTMgMGgtMi44NGMuMjEtMS4yNi44MS0yLjM4IDEuNjgtMy4yNS42Ljk3IDEuMDEgMi4wNyAxLjE2IDMuMjV6TTEzIDQuMDdjMS43My4yMiAzLjI5Ljk5IDQuNSAyLjEzYTcuOTkgNy45OSAwIDAgMC0yLjQzIDQuOEgxM1Y0LjA3em0wIDE1Ljg2VjEzaDIuMDdhOC4wMDYgOC4wMDYgMCAwIDAgMi40MiA0Ljc5QTcuOTg4IDcuOTg4IDAgMCAxIDEzIDE5Ljkzem01Ljc3LTMuNjhBNi4wMDQgNi4wMDQgMCAwIDEgMTcuMDkgMTNoMi44NGE4LjEyIDguMTIgMCAwIDEtMS4xNiAzLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzQ3JpY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjA0IDEyLjc5LTguNS04LjVDNi4zNSA0LjEgNi4wOSA0IDUuODMgNHMtLjUxLjEtLjcuMjlMMi4yOSA3LjEzYy0uMzkuMzktLjM5IDEuMDMgMCAxLjQybDguNSA4LjVjLjIuMi40NS4yOS43MS4yOS4yNiAwIC41MS0uMS43MS0uMjlsMi44My0yLjgzYy4zOS0uNC4zOS0xLjA0IDAtMS40M3ptLTMuNTQgMi4xM0w0LjQxIDcuODNsMS40Mi0xLjQyIDcuMDkgNy4wOS0xLjQyIDEuNDJ6TTE0LjM0MSAxNy43NTZsMS40MTQtMS40MTQgNC4yNDMgNC4yNDMtMS40MTQgMS40MTR6TTE4LjUgMkMxNi41NyAyIDE1IDMuNTcgMTUgNS41UzE2LjU3IDkgMTguNSA5IDIyIDcuNDMgMjIgNS41IDIwLjQzIDIgMTguNSAyem0wIDVjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNy42NyA0IDE4LjUgNHMxLjUuNjcgMS41IDEuNVMxOS4zMyA3IDE4LjUgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0VzcG9ydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS41OCAxNi4wOS0xLjA5LTcuNjZBMy45OTYgMy45OTYgMCAwIDAgMTYuNTMgNUg3LjQ3QzUuNDggNSAzLjc5IDYuNDYgMy41MSA4LjQzbC0xLjA5IDcuNjZDMi4yIDE3LjYzIDMuMzkgMTkgNC45NCAxOWMuNjggMCAxLjMyLS4yNyAxLjgtLjc1TDkgMTZoNmwyLjI1IDIuMjVjLjQ4LjQ4IDEuMTMuNzUgMS44Ljc1IDEuNTYgMCAyLjc1LTEuMzcgMi41My0yLjkxem0tMi4xLjcyYS41NC41NCAwIDAgMS0uNDIuMTljLS4xNSAwLS4yOS0uMDYtLjM5LS4xNkwxNS44MyAxNEg4LjE3bC0yLjg0IDIuODRjLS4xLjEtLjI0LjE2LS4zOS4xNmEuNTQuNTQgMCAwIDEtLjQyLS4xOS41Mi41MiAwIDAgMS0uMTMtLjQ0bDEuMDktNy42NkM1LjYzIDcuNzQgNi40OCA3IDcuNDcgN2g5LjA2Yy45OSAwIDEuODQuNzQgMS45OCAxLjcybDEuMDkgNy42NmMuMDMuMi0uMDUuMzQtLjEyLjQzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDhIOHYySDZ2MWgydjJoMXYtMmgydi0xSDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiOVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzRm9vdGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4zMSAzLjY5Yy0uMzItLjMzLTEuOTQtLjY5LTQuMDUtLjY5LTMuMDMgMC03LjA5Ljc1LTkuOCAzLjQ2LTQuNTkgNC41OS0zLjU2IDEzLjA2LTIuNzcgMTMuODUuMzIuMzMgMS45NC42OSA0LjA1LjY5IDMuMDMgMCA3LjA5LS43NSA5LjgtMy40NiA0LjU5LTQuNTkgMy41Ni0xMy4wNiAyLjc3LTEzLjg1ek03Ljc0IDE5Yy0xLjE0IDAtMi4wMi0uMTItMi41My0uMjMtLjE4LS43OS0uMy0yLjIxLS4xNy0zLjgzbDQuMDEgNC4wMWMtLjUyLjA0LS45Ny4wNS0xLjMxLjA1em04LjM5LTIuODdjLTEuMzMgMS4zMy0zLjA2IDIuMDUtNC42NiAyLjQ0bC02LjA0LTYuMDRjLjQyLTEuNjggMS4xNi0zLjM3IDIuNDUtNC42NSAxLjMyLTEuMzIgMy4wNS0yLjA0IDQuNjQtMi40M2w2LjA1IDYuMDVjLS40MiAxLjY3LTEuMTcgMy4zNS0yLjQ0IDQuNjN6bTIuODMtNy4wNC00LjAzLTQuMDNjLjUyLS4wNS45OC0uMDYgMS4zMy0uMDYgMS4xNCAwIDIuMDIuMTIgMi41My4yMy4xOC43OS4zIDIuMjIuMTcgMy44NnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC41IDE0LjEgNS42LTUuNiAxLjQgMS40LTUuNiA1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNHb2xmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjMy44NyAwIDctMy4xMyA3LTdzLTMuMTMtNy03LTctNyAzLjEzLTcgNyAzLjEzIDcgNyA3em0wLTEyYzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1LTUtMi4yNC01LTUgMi4yNC01IDUtNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOWgyYzEuMSAwIDIgLjkgMiAydjFoMnYtMWMwLTEuMS45LTIgMi0yaDJ2LTJIN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzR3ltbmFzdGljcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yek0xIDloNmw3LTUgMS4zMSAxLjUyLTQuMTcgMi45OEgxNEwyMS44IDQgMjMgNS40IDE0LjUgMTIgMTQgMjJoLTJsLS41LTEwTDggMTFIMVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzSGFuZGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4yNyA2Yy0uNTUuOTUtLjIyIDIuMTguNzMgMi43My45NS41NSAyLjE4LjIyIDIuNzMtLjczLjU1LS45NS4yMi0yLjE4LS43My0yLjczLS45NS0uNTUtMi4xOC0uMjItMi43My43M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuODQgMTAuNDEtMi42LTEuNWMtMi4zOC0xLjM4LTMuMi00LjQ0LTEuODItNi44MmwtMS43My0xQzguMSAzLjgzIDguNiA3LjIxIDEwLjY2IDkuNGwtNS4xNSA4LjkyIDEuNzMgMSAxLjUtMi42IDEuNzMgMS0zIDUuMiAxLjczIDEgNi4yOS0xMC44OWE1LjAwMiA1LjAwMiAwIDAgMSAuMzEgNS40NmwxLjczIDFjMS42LTIuNzUgMS4yOC02LjU4LTEuNjktOS4wOHpNMTIuNzUgMy44Yy43Mi40MSAxLjYzLjE3IDIuMDUtLjU1LjQxLS43Mi4xNy0xLjYzLS41NS0yLjA1YTEuNTAxIDEuNTAxIDAgMCAwLTEuNSAyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNIb2NrZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3djNoMnYtNEgzYy0uNTUgMC0xIC40NS0xIDF6TTkgMTZINXY0bDQuNjktLjAxYy4zOCAwIC43Mi0uMjEuODktLjU1bC44Ny0xLjktMS41OS0zLjQ4TDkgMTZ6TTIxLjcxIDE2LjI5QS45OTcuOTk3IDAgMCAwIDIxIDE2aC0xdjRoMnYtM2MwLS4yOC0uMTEtLjUzLS4yOS0uNzF6TTEzLjYgMTIuODQgMTcuNjUgNEgxNC4zbC0xLjc2IDMuOTctLjQ5IDEuMS0uMDUuMTRMOS43IDRINi4zNWw0LjA1IDguODQgMS41MiAzLjMyLjA4LjE4IDEuNDIgMy4xYy4xNy4zNC41MS41NS44OS41NUwxOSAyMHYtNGgtNGwtMS40LTMuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNLYWJhZGRpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMi4zOFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCAxMS44OHYtNC43bC01LjA1LTIuMTRjLS45Ny0uNDEtMi4wOS0uMDYtMi42NS44NGwtMSAxLjZjLS42NyAxLjE4LTEuOTEgMi4wNi0zLjQxIDIuMzJsLjA2LjA2Yy42OS42OSAxLjUyIDEuMDcgMi40NiAxLjE3LjgtLjQyIDEuNTItLjk4IDIuMDktMS42NGwuNiAzLTEuMTYgMS4xLS45NC44OXY3LjVoMnYtNmwyLjEtMiAxLjggOEgyM2wtMi4xOC0xMS0uNjItMy4xIDEuOC43djMuNGgyek0xMC4yOSA4LjA5Yy4yMi4xNS40Ny4yNC43Mi4yOS4xMy4wMi4yNS4wNC4zOC4wNHMuMjYtLjAxLjM4LS4wNGMuMTMtLjAyLjI1LS4wNi4zNy0uMTEuMjQtLjEuNDctLjI0LjY2LS40NC40OS0uNDkuNjctMS4xNy41NS0xLjgtLjA3LS4zNy0uMjUtLjc0LS41NS0xLjAzLS4xOS0uMTktLjQyLS4zNC0uNjYtLjQ0LS4xMi0uMDUtLjI0LS4wOS0uMzctLjExcy0uMjUtLjA0LS4zOC0uMDRjLS4xMiAwLS4yMy4wMS0uMzUuMDMtLjE0LjAyLS4yOC4wNi0uNDEuMTEtLjIzLjExLS40Ni4yNi0uNjUuNDUtLjMuMjktLjQ4LjY2LS41NSAxLjAzLS4xMi42My4wNiAxLjMxLjU1IDEuOC4wOS4xLjIuMTguMzEuMjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExLjI0IDEwLjU2LTItMmMtLjEtLjEtLjItLjE4LS4zMS0uMjZhMS45MyAxLjkzIDAgMCAwLS43Mi0uMjhjLS4xMy0uMDMtLjI1LS4wNC0uMzgtLjA0LS41MSAwLTEuMDIuMi0xLjQxLjU5bC0zLjM0IDMuMzRjLS40MS40MS0uNjIuOTgtLjU4IDEuNTQgMCAuMTguMDQuMzcuMTEuNTVsMS4wNyAyLjk1LTMuNjMgMy42M0wxLjQ2IDIybDQuMjQtNC4yNHYtMi4yMkw3IDE2Ljc1djUuMTNoMnYtNmwtMi4xMi0yLjEyIDIuMzYtMi4zNi43MS43MWMxLjI5IDEuMjYgMi45NyAyLjA0IDUuMDMgMi4wNGwtLjE0LTIuMDdjLTEuNS0uMDItMi43LS42Mi0zLjYtMS41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c01hcnRpYWxBcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuOCAyLTguMiA2LjctMS4yMS0xLjA0IDMuNi0yLjA4TDkuNDEgMSA4IDIuNDFsMi43NCAyLjc0TDUgOC40NmwtMS4xOSA0LjI5TDYuMjcgMTcgOCAxNmwtMi4wMy0zLjUyLjM1LTEuM0w5LjUgMTNsLjUgOWgybC41LTEwTDIxIDMuNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI1XCIsXCJjeVwiOlwiNVwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzTW1hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMGMwIC41NS40NSAxIDEgMWg4Yy41NSAwIDEtLjQ1IDEtMXYtM0g3djN6TTE4IDdjLS41NSAwLTEgLjQ1LTEgMVY1YzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjUuOGMwIC4xMy4wMS4yNi4wNC4zOWwuOCA0Yy4wOS40Ny41LjguOTguOEgxN2MuNTUgMCAxLjA5LS40NCAxLjItLjk4bC43Ny0zLjgzYy4wMi0uMTIuMDMtLjI1LjAzLS4zOFY4YzAtLjU1LS40NS0xLTEtMXptLTEgMy42YzAgLjEzLS42NCAzLjQtLjY0IDMuNEg3LjY0UzcgMTAuNzQgNyAxMC42VjVoOHY1aDJ2LjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggN2g2djNIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c01vdG9yc3BvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTYgMTEuMjJDMjEuNTcgNy4wMSAxNy43NiA0IDEzLjU2IDRjLS4xOSAwLS4zOC4wMS0uNTcuMDJDMiA0Ljc0IDIgMTcuMiAyIDE3LjJ2LjhjMCAxLjEuOSAyIDIgMmgxMGM0LjY3IDAgOC40MS00LjAxIDcuOTYtOC43OHptLTE2LjcuMzRjLjU3LTEuMjkgMS4yOC0yLjM1IDIuMTQtMy4xOWwzLjYyIDEuNTNjLjYuMjUuOTguODMuOTggMS40OCAwIC44OS0uNzIgMS42MS0xLjYxIDEuNjFINC43MmMuMTUtLjQ2LjMyLS45NC41NC0xLjQzem0xMy4xOCA0LjQ4QTYuMDIyIDYuMDIyIDAgMCAxIDE0IDE4SDR2LS44YzAtLjAyLjAxLS45Mi4yNC0yLjJoNi4xNWMxLjk5IDAgMy42MS0xLjYyIDMuNjEtMy42MSAwLTEuNDUtLjg3LTIuNzYtMi4yLTMuMzJMOS4zIDcuMDFjMS4xLS41NyAyLjM3LS45IDMuODItLjk5LjE1LS4wMi4zLS4wMi40NC0uMDIgMy4zMSAwIDYuMTMgMi4zNyA2LjQxIDUuNDEuMTYgMS43Mi0uMzggMy4zNi0xLjUzIDQuNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNSdWdieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjQ5IDMuNTFjLS41Ni0uNTYtMi4xNS0uOTctNC4xNi0uOTctMy4wOCAwLTcuMTUuOTYtOS45OCAzLjc5LTQuNjkgNC43LTQuMjUgMTIuNzQtMi44NCAxNC4xNi41Ni41NiAyLjE1Ljk3IDQuMTYuOTcgMy4wOCAwIDcuMTUtLjk2IDkuOTgtMy43OSA0LjY5LTQuNyA0LjI1LTEyLjc0IDIuODQtMTQuMTZ6TTUuNzEgMTguMjljLjYzLTEuODkgMi4xNi00Ljk5IDQuODctNy43IDIuNjgtMi42OCA1Ljc4LTQuMjMgNy43LTQuODgtLjYzIDEuODktMi4xNiA0Ljk5LTQuODggNy43LTIuNjYgMi42OC01Ljc2IDQuMjMtNy42OSA0Ljg4ek03Ljc2IDcuNzZjMi42NC0yLjY0IDYuMzQtMy4xMiA4LjAzLTMuMTktMi4wNS45NC00LjQ2IDIuNDYtNi42MSA0LjYxYTIzLjIwNiAyMy4yMDYgMCAwIDAtNC42MSA2LjYzYy4wOS0yLjQ4Ljg3LTUuNzQgMy4xOS04LjA1em04LjQ4IDguNDhjLTIuNjQgMi42NC02LjM0IDMuMTItOC4wMyAzLjE5IDIuMDUtLjk0IDQuNDYtMi40NiA2LjYxLTQuNjEgMi4xNi0yLjE2IDMuNjctNC41OCA0LjYyLTYuNjMtLjEgMi40OC0uODggNS43NC0zLjIgOC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c1NvY2NlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMy4zIDEuMzUtLjk1YTguMDEgOC4wMSAwIDAgMSA0LjM4IDMuMzRsLS4zOSAxLjM0LTEuMzUuNDZMMTMgNi43VjUuM3ptLTMuMzUtLjk1TDExIDUuM3YxLjRMNy4wMSA5LjQ5bC0xLjM1LS40Ni0uMzktMS4zNGE4LjEwMyA4LjEwMyAwIDAgMSA0LjM4LTMuMzR6TTcuMDggMTcuMTFsLTEuMTQuMUE3LjkzOCA3LjkzOCAwIDAgMSA0IDEyYzAtLjEyLjAxLS4yMy4wMi0uMzVsMS0uNzMgMS4zOC40OCAxLjQ2IDQuMzQtLjc4IDEuMzd6bTcuNDIgMi40OGMtLjc5LjI2LTEuNjMuNDEtMi41LjQxcy0xLjcxLS4xNS0yLjUtLjQxbC0uNjktMS40OS42NC0xLjFoNS4xMWwuNjQgMS4xMS0uNyAxLjQ4ek0xNC4yNyAxNUg5LjczbC0xLjM1LTQuMDJMMTIgOC40NGwzLjYzIDIuNTRMMTQuMjcgMTV6bTMuNzkgMi4yMS0xLjE0LS4xLS43OS0xLjM3IDEuNDYtNC4zNCAxLjM5LS40NyAxIC43M2MuMDEuMTEuMDIuMjIuMDIuMzQgMCAxLjk5LS43MyAzLjgxLTEuOTQgNS4yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c1Rlbm5pcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUyIDIuNDlDMTcuMTguMTUgMTIuOS42MiA5Ljk3IDMuNTVjLTEuNiAxLjYtMi41MiAzLjg3LTIuNTQgNS40Ni0uMDIgMS41OC4yNiAzLjg5LTEuMzUgNS41bC00LjI0IDQuMjQgMS40MiAxLjQyIDQuMjQtNC4yNGMxLjYxLTEuNjEgMy45Mi0xLjMzIDUuNS0xLjM1czMuODYtLjk0IDUuNDYtMi41NGMyLjkyLTIuOTMgMy40LTcuMjEgMS4wNi05LjU1em0tOS4yIDkuMTljLTEuNTMtMS41My0xLjA1LTQuNjEgMS4wNi02LjcyczUuMTgtMi41OSA2LjcyLTEuMDZjMS41MyAxLjUzIDEuMDUgNC42MS0xLjA2IDYuNzJzLTUuMTggMi41OS02LjcyIDEuMDZ6TTE4IDE3Yy41MyAwIDEuMDQuMjEgMS40MS41OS43OC43OC43OCAyLjA1IDAgMi44My0uMzcuMzctLjg4LjU4LTEuNDEuNThzLTEuMDQtLjIxLTEuNDEtLjU5Yy0uNzgtLjc4LS43OC0yLjA1IDAtMi44My4zNy0uMzcuODgtLjU4IDEuNDEtLjU4bTAtMmEzLjk5OCAzLjk5OCAwIDAgMC0yLjgzIDYuODNjLjc4Ljc4IDEuODEgMS4xNyAyLjgzIDEuMTdhMy45OTggMy45OTggMCAwIDAgMi44My02LjgzQTMuOTk4IDMuOTk4IDAgMCAwIDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzVm9sbGV5YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMi4wN2MzLjA3LjM4IDUuNTcgMi41MiA2LjU0IDUuMzZMMTMgNS42NVY0LjA3ek04IDUuMDhjMS4xOC0uNjkgMy4zMy0xLjA2IDMtMS4wMnY3LjM1bC0zIDEuNzNWNS4wOHpNNC42MyAxNS4xYy0uNC0uOTYtLjYzLTItLjYzLTMuMSAwLTIuMDIuNzYtMy44NiAyLTUuMjd2Ny41OGwtMS4zNy43OXptMS4wMSAxLjczTDEyIDEzLjE1bDMgMS43My02Ljk4IDQuMDNhNy43OTQgNy43OTQgMCAwIDEtMi4zOC0yLjA4ek0xMiAyMGMtLjU0IDAtMS4wNy0uMDYtMS41OC0uMTZsNi41OC0zLjggMS4zNi43OEMxNi45IDE4Ljc1IDE0LjYgMjAgMTIgMjB6bTEtOC41OFY3Ljk2bDcgNC4wNWMwIDEuMS0uMjMgMi4xNC0uNjMgMy4wOUwxMyAxMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjIzIDZjLTEuNjYgMC0zLjIyLjY2LTQuMzYgMS43M0M2LjU0IDYuNzMgNS42MSA2IDQuNSA2YTIuNSAyLjUgMCAwIDAgMCA1Yy4yMSAwIC40MS0uMDMuNjEtLjA4LS4wNS4yNS0uMDkuNTEtLjEuNzhhNi4wMDYgNi4wMDYgMCAwIDAgNi42OCA2LjI3YzIuNTUtLjI4IDQuNjgtMi4yNiA1LjE5LTQuNzcuMTUtLjcxLjE1LTEuNC4wNi0yLjA2LS4wOS0uNi4zOC0xLjEzLjk5LTEuMTNIMjJWNkgxMS4yM3pNNC41IDljLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNS41LjIyLjUuNS0uMjIuNS0uNS41em02LjUgNmMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VyZmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDIzYy0xLjAzIDAtMi4wNi0uMjUtMy0uNzUtMS44OSAxLTQuMTEgMS02IDAtMS44OSAxLTQuMTEgMS02IDAtLjk1LjUtMS45Ny43NS0zIC43NUgydi0yaDFjMS4wNCAwIDIuMDgtLjM1IDMtMSAxLjgzIDEuMyA0LjE3IDEuMyA2IDAgMS44MyAxLjMgNC4xNyAxLjMgNiAwIC45MS42NSAxLjk2IDEgMyAxaDF2MmgtMXpNMTcgMS41Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTIuNTcgNi45OEwxMi4xOCAxMCAxNiAxM3YzLjg0Yy41My4zOCAxLjAzLjc4IDEuNDkgMS4xNy0uNjguNTgtMS41NS45OS0yLjQ5Ljk5LTEuMiAwLTIuMjctLjY2LTMtMS41LS43My44NC0xLjggMS41LTMgMS41LS4zMyAwLS42NS0uMDUtLjk2LS4xNEM1LjE5IDE2LjkgMyAxNC43MiAzIDEzLjI4IDMgMTIuMjUgNC4wMSAxMiA0Ljg1IDEyYy45OCAwIDIuMjguMzEgMy43LjgzbC0uNTMtMy4xYy0uMTEtLjY3LjE4LTEuMzguNzgtMS43OWwyLjE1LTEuNDUtMi0uMzctMi44MiAxLjkzTDUgNi40IDguNSA0bDUuNTUgMS4wM2MuNDUuMDkuOTMuMzcgMS4yMi44OWwuODggMS41NUE1LjAwNyA1LjAwNyAwIDAgMCAyMC41IDEwdjJhNy4wMSA3LjAxIDAgMCAxLTYuMDctMy41MnpNMTAuMyAxMS4xbC40NCAyLjY1Yy45Mi40MiAyLjQ4IDEuMjcgMy4yNiAxLjc1VjE0bC0zLjctMi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpdGNoQWNjb3VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xMCA1YzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTYtNUg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS05LjMxIDE0YTUuOTc3IDUuOTc3IDAgMCAxIDYuNjIgMGgtNi42MnptOS4zMS0uMjdDMTguNTMgMTQuMDYgMTYuNCAxMyAxNCAxM3MtNC41MyAxLjA2LTYgMi43M1Y0aDEydjExLjczelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGh1bWJEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDNINmMtLjgzIDAtMS41NC41LTEuODQgMS4yMmwtMy4wMiA3LjA1Yy0uMDkuMjMtLjE0LjQ3LS4xNC43M3YyYzAgMS4xLjkgMiAyIDJoNi4zMWwtLjk1IDQuNTctLjAzLjMyYzAgLjQxLjE3Ljc5LjQ0IDEuMDZMOS44MyAyM2w2LjU4LTYuNTljLjM3LS4zNi41OS0uODYuNTktMS40MVY1YzAtMS4xLS45LTItMi0yem0wIDEyLTQuMzQgNC4zNEwxMS43NyAxNEgzdi0ybDMtN2g5djEwem00LTEyaDR2MTJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaHVtYlVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDhoLTYuMzFsLjk1LTQuNTcuMDMtLjMyYzAtLjQxLS4xNy0uNzktLjQ0LTEuMDZMMTQuMTcgMSA3LjU5IDcuNTlDNy4yMiA3Ljk1IDcgOC40NSA3IDl2MTBjMCAxLjEuOSAyIDIgMmg5Yy44MyAwIDEuNTQtLjUgMS44NC0xLjIybDMuMDItNy4wNWMuMDktLjIzLjE0LS40Ny4xNC0uNzN2LTJjMC0xLjEtLjktMi0yLTJ6bTAgNC0zIDdIOVY5bDQuMzQtNC4zNEwxMi4yMyAxMEgyMXYyek0xIDloNHYxMkgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGh1bmRlcnN0b3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTIgNy4wMkMxNy40NSA0LjE4IDE0Ljk3IDIgMTIgMiA5LjgyIDIgNy44MyAzLjE4IDYuNzggNS4wNiA0LjA5IDUuNDEgMiA3Ljc0IDIgMTAuNSAyIDEzLjUzIDQuNDcgMTYgNy41IDE2aDEwYzIuNDggMCA0LjUtMi4wMiA0LjUtNC41YTQuNSA0LjUgMCAwIDAtNC4wOC00LjQ4ek0xNy41IDE0aC0xMEM1LjU3IDE0IDQgMTIuNDMgNCAxMC41YTMuNTEgMy41MSAwIDAgMSAzLjA0LTMuNDZsLjk5LS4xMy40OS0uODdBMy45OTggMy45OTggMCAwIDEgMTIgNGMxLjk0IDAgMy42MyAxLjQ0IDMuOTUgMy4zNWwuMjUgMS41MiAxLjU0LjE0YzEuMjcuMTIgMi4yNiAxLjIxIDIuMjYgMi40OWEyLjUgMi41IDAgMCAxLTIuNSAyLjV6TTE0LjggMTdsLTIuOSAzLjMyIDIgMUwxMS41NSAyNGgyLjY1bDIuOS0zLjMyLTItMUwxNy40NSAxN3pNOC44IDE3bC0yLjkgMy4zMiAyIDFMNS41NSAyNEg4LjJsMi45LTMuMzItMi0xTDExLjQ1IDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG9ybmFkbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDNIMWwxMSAxOUwyMyAzem0tMy40NyAyLTEuNzQgM0g2LjIxTDQuNDcgNWgxNS4wNnptLTkuMjcgMTBoMy40OEwxMiAxOC4wMSAxMC4yNiAxNXptNC42NC0ySDkuMWwtMS43NC0zaDkuMjdsLTEuNzMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyYW5zZ2VuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMy45MyAxNSAxMiAxNXMtMy41LTEuNTctMy41LTMuNVMxMC4wNyA4IDEyIDh6bTQuNTMuMzggMy45Ny0zLjk2VjdoMlYxaC02djJoMi41OGwtMy45NyAzLjk3QzE0LjIzIDYuMzYgMTMuMTYgNiAxMiA2cy0yLjIzLjM2LTMuMTEuOTdsLS42NS0uNjUgMS40MS0xLjQxLTEuNDEtMS40Mkw2LjgyIDQuOSA0LjkyIDNINy41VjFoLTZ2NmgyVjQuNDJsMS45MSAxLjktMS40MiAxLjQyTDUuNCA5LjE1bDEuNDEtMS40MS42NS42NWMtLjYuODgtLjk2IDEuOTUtLjk2IDMuMTFhNS41IDUuNSAwIDAgMCA0LjUgNS40MVYxOUg5djJoMnYyaDJ2LTJoMnYtMmgtMnYtMi4wOWE1LjUgNS41IDAgMCAwIDMuNTMtOC41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyYXZlbEV4cGxvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zIDE2LjljLjQtLjcuNy0xLjUuNy0yLjQgMC0yLjUtMi00LjUtNC41LTQuNVMxMSAxMiAxMSAxNC41czIgNC41IDQuNSA0LjVjLjkgMCAxLjctLjMgMi40LS43bDMuMiAzLjIgMS40LTEuNC0zLjItMy4yem0tMy44LjFjLTEuNCAwLTIuNS0xLjEtMi41LTIuNXMxLjEtMi41IDIuNS0yLjUgMi41IDEuMSAyLjUgMi41LTEuMSAyLjUtMi41IDIuNXpNMTIgMjB2MkM2LjQ4IDIyIDIgMTcuNTIgMiAxMlM2LjQ4IDIgMTIgMmM0Ljg0IDAgOC44NyAzLjQ0IDkuOCA4aC0yLjA3QTggOCAwIDAgMCAxNSA0LjU5VjVjMCAxLjEtLjkgMi0yIDJoLTJ2MmMwIC41NS0uNDUgMS0xIDFIOHYyaDJ2M0g5bC00Ljc5LTQuNzlDNC4wOCAxMC43OSA0IDExLjM4IDQgMTJjMCA0LjQxIDMuNTkgOCA4IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUc3VuYW1pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNjcgMTcuNjNjLTMuOCAyLjgtNi4xMi40LTYuNjcgMC0uNjYuNDktMi45MiAyLjc2LTYuNjcgMEMzLjQzIDE5LjAzIDIuNjUgMTkgMiAxOXYyYzEuMTYgMCAyLjMtLjMyIDMuMzMtLjkzYTYuNTM1IDYuNTM1IDAgMCAwIDYuNjcgMCA2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDBjMS4wMy42MSAyLjE3LjkzIDMuMzMuOTN2LTJjLS42NiAwLTEuNS0uMDItMy4zMy0xLjM3ek0xOS4zMyAxMkgyMnYtMmgtMi42N0MxNy41IDEwIDE2IDguNSAxNiA2LjY3YzAtMS4wMi4zOC0xLjc0IDEuMDktMy4zNC0xLjM3LS4yMS0yLS4zMy0zLjA5LS4zM0M3LjM2IDMgMi4xNSA4LjAzIDIuMDEgMTQuNWwtLjAxIDJjMS4xNiAwIDIuMy0uMzIgMy4zMy0uOTNhNi41MzUgNi41MzUgMCAwIDAgNi42NyAwIDYuNTM1IDYuNTM1IDAgMCAwIDYuNjcgMGMxLjAzLjYxIDIuMTcuOTMgMy4zMy45M3YtMmMtLjY2IDAtMS41LS4wMi0zLjMzLTEuMzctMy44IDIuOC02LjEyLjQtNi42NyAwLS45LjY3LS41NC40MS0uOTEuNjMtLjctLjk0LTEuMDktMi4wNi0xLjA5LTMuMjYgMC0yLjU4IDEuNzctNC43NCA0LjIxLTUuMzMtLjEzLjUxLS4yMSAxLjAyLS4yMSAxLjVDMTQgOS42MSAxNi4zOSAxMiAxOS4zMyAxMnptLTE0IDEuMTNjLS42Mi40Ni0uODIuNjMtMS4zLjg3LjI3LTMuNTMgMi4zOC02LjQ4IDUuNDMtNy45NkE3LjQ5IDcuNDkgMCAwIDAgOCAxMC41YzAgMS40Mi40IDIuNzcgMS4xMyAzLjk1LS43Mi4wNy0xLjc5LjE1LTMuOC0xLjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmFjY2luZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1LjVIOFY0aC41Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxSDZ2MS41SDNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFWMTVjMCAxLjEuOSAyIDIgMmgxdjRsMiAxLjVWMTdoMWMxLjEgMCAyLS45IDItMlY3LjVjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTF6TTkgOUg3LjI1Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NUg5VjEySDcuMjVjLS40MSAwLS43NS4zNC0uNzUuNzVzLjM0Ljc1Ljc1Ljc1SDlWMTVINVY3LjVoNFY5em0xMC41IDEuNVYxMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXYuNWMwIC41LTEuNSAxLjE2LTEuNSAzVjIwYzAgMS4xLjkgMiAyIDJoNGMxLjEgMCAyLS45IDItMnYtNi41YzAtMS44NC0xLjUtMi41LTEuNS0zem0tMyAwVjEwaDF2LjVjMCAxLjYgMS41IDIgMS41IDN2LjVoLTR2LS41YzAtMSAxLjUtMS40IDEuNS0zem0yLjUgNVYxN2gtNHYtMS41aDR6TTE1IDIwdi0xLjVoNFYyMGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbGNhbm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC03bC0yIDVINmwtNCA5aDIwTDE4IDh6TTcuMyAxNWgzLjA1bC41LTEuMjYgMS41LTMuNzRoNC4xNGwyLjg2IDEwSDUuMDhsMi4yMi01ek0xMyAxaDJ2NGgtMnpNMTYuMTIxIDUuNDY4IDE4Ljk1IDIuNjRsMS40MTQgMS40MTQtMi44MjkgMi44Mjh6TTcuNjQgNC4wNWwxLjQxNC0xLjQxNCAyLjgyOCAyLjgyOS0xLjQxNCAxLjQxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRINkMzLjc5IDQgMiA1Ljc5IDIgOHY4YzAgMi4yMSAxLjc5IDQgNCA0aDEyYzIuMjEgMCA0LTEuNzkgNC00VjhjMC0yLjIxLTEuNzktNC00LTR6bS0xLjg2IDkuNzdjLS4yNC4yLS41Ny4yOC0uODguMkw0LjE1IDExLjI1QzQuNDUgMTAuNTIgNS4xNiAxMCA2IDEwaDEyYy42NyAwIDEuMjYuMzQgMS42My44NGwtMy40OSAyLjkzek02IDZoMTJjMS4xIDAgMiAuOSAyIDJ2LjU1Yy0uNTktLjM0LTEuMjctLjU1LTItLjU1SDZjLS43MyAwLTEuNDEuMjEtMiAuNTVWOGMwLTEuMS45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0ZXJEcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNS4zMyA0LjU1LTggOC40OC04IDExLjggMCA0Ljk4IDMuOCA4LjIgOCA4LjJzOC0zLjIyIDgtOC4yYzAtMy4zMi0yLjY3LTcuMjUtOC0xMS44em0wIDE4Yy0zLjM1IDAtNi0yLjU3LTYtNi4yIDAtMi4zNCAxLjk1LTUuNDQgNi05LjE0IDQuMDUgMy43IDYgNi43OSA2IDkuMTQgMCAzLjYzLTIuNjUgNi4yLTYgNi4yem0tNC4xNy02Yy4zNyAwIC42Ny4yNi43NC42Mi40MSAyLjIyIDIuMjggMi45OCAzLjY0IDIuODcuNDMtLjAyLjc5LjMyLjc5Ljc1IDAgLjQtLjMyLjczLS43Mi43NS0yLjEzLjEzLTQuNjItMS4wOS01LjE5LTQuMTJhLjc1Ljc1IDAgMCAxIC43NC0uODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXZpbmdIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMyA0Ljk1IDMuNDkgOC40OWMtMy4zMiAzLjMyLTMuMzIgOC43IDAgMTIuMDJzOC43IDMuMzIgMTIuMDIgMGw2LjAxLTYuMDFhMi41MTcgMi41MTcgMCAwIDAtLjM5LTMuODZsLjM5LS4zOWMuOTctLjk3Ljk3LTIuNTYgMC0zLjU0LS4xNi0uMTYtLjM1LS4zLS41NC0uNDFhMi40OTcgMi40OTcgMCAwIDAtMy43Mi0zLjA1IDIuNTE3IDIuNTE3IDAgMCAwLTMuODgtLjQybC0yLjUxIDIuNTFhMi40OTMgMi40OTMgMCAwIDAtMy44NC0uMzl6bTEuNDEgMS40MmMuMi0uMi41MS0uMi43MSAwIC4yLjIuMi41MSAwIC43MWwtMy4xOCAzLjE4YTMgMyAwIDAgMSAwIDQuMjRsMS40MSAxLjQxYTUuMDA0IDUuMDA0IDAgMCAwIDEuMTItNS4zNmw2LjMtNi4zYy4yLS4yLjUxLS4yLjcxIDBzLjIuNTEgMCAuNzFsLTQuNiA0LjYgMS40MSAxLjQxIDYuMDEtNi4wMWMuMi0uMi41MS0uMi43MSAwIC4yLjIuMi41MSAwIC43MWwtNi4wMSA2LjAxIDEuNDEgMS40MSA0Ljk1LTQuOTVjLjItLjIuNTEtLjIuNzEgMCAuMi4yLjIuNTEgMCAuNzFsLTUuNjYgNS42NiAxLjQxIDEuNDEgMy41NC0zLjU0Yy4yLS4yLjUxLS4yLjcxIDAgLjIuMi4yLjUxIDAgLjcxbC02IDYuMDFjLTIuNTQgMi41NC02LjY1IDIuNTQtOS4xOSAwcy0yLjU0LTYuNjUgMC05LjE5bDMuNTMtMy41NHpNMjMgMTdjMCAzLjMxLTIuNjkgNi02IDZ2LTEuNWMyLjQ4IDAgNC41LTIuMDIgNC41LTQuNUgyM3pNMSA3YzAtMy4zMSAyLjY5LTYgNi02djEuNUM0LjUyIDIuNSAyLjUgNC41MiAyLjUgN0gxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2hhdHNhcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wNSA0LjkxQTkuODE2IDkuODE2IDAgMCAwIDEyLjA0IDJjLTUuNDYgMC05LjkxIDQuNDUtOS45MSA5LjkxIDAgMS43NS40NiAzLjQ1IDEuMzIgNC45NUwyLjA1IDIybDUuMjUtMS4zOGMxLjQ1Ljc5IDMuMDggMS4yMSA0Ljc0IDEuMjEgNS40NiAwIDkuOTEtNC40NSA5LjkxLTkuOTEgMC0yLjY1LTEuMDMtNS4xNC0yLjktNy4wMXptLTcuMDEgMTUuMjRjLTEuNDggMC0yLjkzLS40LTQuMi0xLjE1bC0uMy0uMTgtMy4xMi44Mi44My0zLjA0LS4yLS4zMWE4LjI2NCA4LjI2NCAwIDAgMS0xLjI2LTQuMzhjMC00LjU0IDMuNy04LjI0IDguMjQtOC4yNCAyLjIgMCA0LjI3Ljg2IDUuODIgMi40MmE4LjE4MyA4LjE4MyAwIDAgMSAyLjQxIDUuODNjLjAyIDQuNTQtMy42OCA4LjIzLTguMjIgOC4yM3ptNC41Mi02LjE2Yy0uMjUtLjEyLTEuNDctLjcyLTEuNjktLjgxLS4yMy0uMDgtLjM5LS4xMi0uNTYuMTItLjE3LjI1LS42NC44MS0uNzguOTctLjE0LjE3LS4yOS4xOS0uNTQuMDYtLjI1LS4xMi0xLjA1LS4zOS0xLjk5LTEuMjMtLjc0LS42Ni0xLjIzLTEuNDctMS4zOC0xLjcyLS4xNC0uMjUtLjAyLS4zOC4xMS0uNTEuMTEtLjExLjI1LS4yOS4zNy0uNDNzLjE3LS4yNS4yNS0uNDFjLjA4LS4xNy4wNC0uMzEtLjAyLS40M3MtLjU2LTEuMzQtLjc2LTEuODRjLS4yLS40OC0uNDEtLjQyLS41Ni0uNDNoLS40OGMtLjE3IDAtLjQzLjA2LS42Ni4zMS0uMjIuMjUtLjg2Ljg1LS44NiAyLjA3IDAgMS4yMi44OSAyLjQgMS4wMSAyLjU2LjEyLjE3IDEuNzUgMi42NyA0LjIzIDMuNzQuNTkuMjYgMS4wNS40MSAxLjQxLjUyLjU5LjE5IDEuMTMuMTYgMS41Ni4xLjQ4LS4wNyAxLjQ3LS42IDEuNjctMS4xOC4yMS0uNTguMjEtMS4wNy4xNC0xLjE4cy0uMjItLjE2LS40Ny0uMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaGF0c2hvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNTcgMTMuMTZjLTEuMzYuMjgtMi4xNyAxLjE2LTIuMTcgMi40MSAwIDEuMzQgMS4xMSAyLjQyIDIuNDkgMi40MiAyLjA1IDAgMy43MS0xLjY2IDMuNzEtMy43MSAwLTEuMDctLjE1LTIuMTItLjQ2LTMuMTItLjc5IDEuMDctMi4yIDEuNzItMy41NyAyek0xMy41LjY3cy43NCAyLjY1Ljc0IDQuOGMwIDIuMDYtMS4zNSAzLjczLTMuNDEgMy43My0yLjA3IDAtMy42My0xLjY3LTMuNjMtMy43M2wuMDMtLjM2QzUuMjEgNy41MSA0IDEwLjYyIDQgMTRjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOEMyMCA4LjYxIDE3LjQxIDMuOCAxMy41LjY3ek0xMiAyMGMtMy4zMSAwLTYtMi42OS02LTYgMC0xLjUzLjMtMy4wNC44Ni00LjQzYTUuNTgyIDUuNTgyIDAgMCAwIDMuOTcgMS42M2MyLjY2IDAgNC43NS0xLjgzIDUuMjgtNC40M0ExNC43NyAxNC43NyAwIDAgMSAxOCAxNGMwIDMuMzEtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvbWFuMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk0IDguMzFDMTMuNjIgNy41MiAxMi44NSA3IDEyIDdzLTEuNjIuNTItMS45NCAxLjMxTDcgMTZoMy41djZoM3YtNkgxN2wtMy4wNi03LjY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV29tYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45NCA4LjMxQzEzLjYyIDcuNTIgMTIuODUgNyAxMiA3cy0xLjYyLjUyLTEuOTQgMS4zMUw3IDE2aDN2Nmg0di02aDNsLTMuMDYtNy42OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvcmtzcGFjZVByZW1pdW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjY4IDEzLjY5IDEyIDExLjkzbDIuMzEgMS43Ni0uODgtMi44NUwxNS43NSA5aC0yLjg0TDEyIDYuMTkgMTEuMDkgOUg4LjI1bDIuMzEgMS44NC0uODggMi44NXpNMjAgMTBjMC00LjQyLTMuNTgtOC04LThzLTggMy41OC04IDhjMCAyLjAzLjc2IDMuODcgMiA1LjI4VjIzbDYtMiA2IDJ2LTcuNzJBNy45NiA3Ljk2IDAgMCAwIDIwIDEwem0tOC02YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTYgMi42OS02IDYtNnptMCAxNS00IDEuMDJ2LTMuMWMxLjE4LjY4IDIuNTQgMS4wOCA0IDEuMDhzMi44Mi0uNCA0LTEuMDh2My4xTDEyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hlY2tCb3hPdXRsaW5lQmxhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDV2MTRINVY1aDE0bTAtMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGVja0JveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0ek0xNy45OSA5bC0xLjQxLTEuNDItNi41OSA2LjU5LTIuNTgtMi41Ny0xLjQyIDEuNDEgNCAzLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5kZXRlcm1pbmF0ZUNoZWNrQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0ek03IDExaDEwdjJIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhZGlvQnV0dG9uQ2hlY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFkaW9CdXR0b25VbmNoZWNrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhckJvcmRlclB1cnBsZTUwMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgOS4yNC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40bC0zLjc2IDIuMjcgMS00LjI4LTMuMzItMi44OCA0LjM4LS4zOEwxMiA2LjFsMS43MSA0LjA0IDQuMzguMzgtMy4zMiAyLjg4IDEgNC4yOEwxMiAxNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhckJvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgOS4yNC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40bC0zLjc2IDIuMjcgMS00LjI4LTMuMzItMi44OCA0LjM4LS4zOEwxMiA2LjFsMS43MSA0LjA0IDQuMzguMzgtMy4zMiAyLjg4IDEgNC4yOEwxMiAxNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA5LjI0LTcuMTktLjYyTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yNyAxOC4xOCAyMWwtMS42My03LjAzTDIyIDkuMjR6TTEyIDE1LjRWNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA5LjI0LTcuMTktLjYyTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yNyAxOC4xOCAyMWwtMS42My03LjAzTDIyIDkuMjR6TTEyIDE1LjRsLTMuNzYgMi4yNyAxLTQuMjgtMy4zMi0yLjg4IDQuMzgtLjM4TDEyIDYuMWwxLjcxIDQuMDQgNC4zOC4zOC0zLjMyIDIuODggMSA0LjI4TDEyIDE1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFyUHVycGxlNTAwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNy4yNyAxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE3LjI3IDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA2SDdjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDZoMTBjMy4zMSAwIDYtMi42OSA2LTZzLTIuNjktNi02LTZ6bTAgMTBIN2MtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGgxMGMyLjIxIDAgNCAxLjc5IDQgNHMtMS43OSA0LTQgNHpNNyA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvZ2dsZU9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNkg3Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2aDEwYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0wIDEwSDdjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMTBjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDR6bTAtN2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUlkIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTWRDbG9zZSwgTWRIb21lIH0gZnJvbSAncmVhY3QtaWNvbnMvbWQnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VEcmF3ZXJDb250ZXh0IH0gZnJvbSAnLi9EcmF3ZXJDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IERyYXdlckhlYWRlciA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNsb3NlSWNvbjogQ2xvc2VJY29uID0gTWRDbG9zZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHRpdGxlLFxuICB0aXRsZUljb246IFRpdGxlSWNvbiA9IE1kSG9tZSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICBjb25zdCB7IGlkOiBtYWluRGl2SWQsIGlzT3Blbiwgb25DbG9zZSwgdGhlbWU6IHJvb3RUaGVtZSB9ID0gdXNlRHJhd2VyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuaGVhZGVyLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZSwgLi4ucHJvcHMsIGNoaWxkcmVuOiBbXG4gICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJoNVwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaW5uZXIudGl0bGVUZXh0LCBpZDogbWFpbkRpdklkLCBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChUaXRsZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmlubmVyLnRpdGxlSWNvbiB9KSxcbiAgICAgIHRpdGxlXG4gICAgXSB9KSxcbiAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcImJ1dHRvblwiLCB7IG9uQ2xpY2s6IG9uQ2xvc2UsIFwiZGF0YS10ZXN0aWRcIjogXCJjbG9zZS1kcmF3ZXJcIiwgY2xhc3NOYW1lOiB0aGVtZS5pbm5lci5jbG9zZUJ1dHRvbiwgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goQ2xvc2VJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pbm5lci5jbG9zZUljb24gfSksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJzci1vbmx5XCIsIGNoaWxkcmVuOiBcIkNsb3NlIG1lbnVcIiB9KVxuICAgIF0gfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbGxhcHNlZFtpc09wZW4gPyBcIm9uXCIgOiBcIm9mZlwiXSwgaWQ6IGBmbG93Yml0ZS1kcmF3ZXItaGVhZGVyLSR7aWR9YCwgY2hpbGRyZW4gfSlcbiAgXSB9KTtcbn07XG5EcmF3ZXJIZWFkZXIuZGlzcGxheU5hbWUgPSBcIkRyYXdlci5IZWFkZXJcIjtcblxuZXhwb3J0IHsgRHJhd2VySGVhZGVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EcmF3ZXJIZWFkZXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRHJhd2VyQ29udGV4dCB9IGZyb20gJy4vRHJhd2VyQ29udGV4dC5tanMnO1xuXG5jb25zdCBEcmF3ZXJJdGVtcyA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSB9ID0gdXNlRHJhd2VyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuaXRlbXMsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZHJhd2VyLWl0ZW1zXCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuRHJhd2VySXRlbXMuZGlzcGxheU5hbWUgPSBcIkRyYXdlci5JdGVtc1wiO1xuXG5leHBvcnQgeyBEcmF3ZXJJdGVtcyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJhd2VySXRlbXMubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlSWQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IERyYXdlckNvbnRleHQgfSBmcm9tICcuL0RyYXdlckNvbnRleHQubWpzJztcbmltcG9ydCB7IERyYXdlckhlYWRlciB9IGZyb20gJy4vRHJhd2VySGVhZGVyLm1qcyc7XG5pbXBvcnQgeyBEcmF3ZXJJdGVtcyB9IGZyb20gJy4vRHJhd2VySXRlbXMubWpzJztcblxuY29uc3QgRHJhd2VyQ29tcG9uZW50ID0gKHtcbiAgYmFja2Ryb3AgPSB0cnVlLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBlZGdlID0gZmFsc2UsXG4gIHBvc2l0aW9uID0gXCJsZWZ0XCIsXG4gIG9uQ2xvc2UsXG4gIG9wZW46IGlzT3BlbiA9IGZhbHNlLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmRyYXdlciwgY3VzdG9tVGhlbWUpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUVzY2FwZUtleSA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIiAmJiBpc09wZW4gJiYgb25DbG9zZSkge1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVFc2NhcGVLZXkpO1xuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVFc2NhcGVLZXkpO1xuICB9LCBbb25DbG9zZSwgaXNPcGVuXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhEcmF3ZXJDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lLCBvbkNsb3NlLCBpc09wZW4sIGlkIH0sIGNoaWxkcmVuOiBbXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7XG4gICAgICAgIFwiYXJpYS1tb2RhbFwiOiB0cnVlLFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogYGRyYXdlci1kaWFsb2ctJHtpZH1gLFxuICAgICAgICByb2xlOiBcImRpYWxvZ1wiLFxuICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1kcmF3ZXJcIixcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgIHRoZW1lLnJvb3QuYmFzZSxcbiAgICAgICAgICB0aGVtZS5yb290LnBvc2l0aW9uW3Bvc2l0aW9uXVtpc09wZW4gPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICBlZGdlICYmICFpc09wZW4gJiYgdGhlbWUucm9vdC5lZGdlLFxuICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICApLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgIH1cbiAgICApLFxuICAgIGlzT3BlbiAmJiBiYWNrZHJvcCAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgb25DbGljazogKCkgPT4gb25DbG9zZSgpLCBjbGFzc05hbWU6IHRoZW1lLnJvb3QuYmFja2Ryb3AgfSlcbiAgXSB9KTtcbn07XG5EcmF3ZXJDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIkRyYXdlclwiO1xuY29uc3QgRHJhd2VyID0gT2JqZWN0LmFzc2lnbihEcmF3ZXJDb21wb25lbnQsIHtcbiAgSGVhZGVyOiBEcmF3ZXJIZWFkZXIsXG4gIEl0ZW1zOiBEcmF3ZXJJdGVtc1xufSk7XG5cbmV4cG9ydCB7IERyYXdlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJhd2VyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IERyb3Bkb3duQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZURyb3Bkb3duQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlRHJvcGRvd25Db250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgRHJvcGRvd25Db250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgRHJvcGRvd25Db250ZXh0LCB1c2VEcm9wZG93bkNvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyb3Bkb3duQ29udGV4dC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgdXNlRHJvcGRvd25Db250ZXh0IH0gZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQubWpzJztcblxuY29uc3QgRHJvcGRvd25EaXZpZGVyID0gKHsgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZURyb3Bkb3duQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IGN1c3RvbVRoZW1lLmRpdmlkZXIgPz8gcm9vdFRoZW1lLmZsb2F0aW5nLmRpdmlkZXI7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLCBjbGFzc05hbWUpLCAuLi5wcm9wcyB9KTtcbn07XG5cbmV4cG9ydCB7IERyb3Bkb3duRGl2aWRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJvcGRvd25EaXZpZGVyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIEZyYWdtZW50LCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgdXNlRHJvcGRvd25Db250ZXh0IH0gZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQubWpzJztcbmltcG9ydCB7IERyb3Bkb3duRGl2aWRlciB9IGZyb20gJy4vRHJvcGRvd25EaXZpZGVyLm1qcyc7XG5cbmNvbnN0IERyb3Bkb3duSGVhZGVyID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lIH0gPSB1c2VEcm9wZG93bkNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBjdXN0b21UaGVtZS5oZWFkZXIgPz8gcm9vdFRoZW1lLmZsb2F0aW5nLmhlYWRlcjtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKEZyYWdtZW50LCB7IGNoaWxkcmVuOiBbXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goRHJvcGRvd25EaXZpZGVyLCB7fSlcbiAgXSB9KTtcbn07XG5cbmV4cG9ydCB7IERyb3Bkb3duSGVhZGVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkhlYWRlci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3gsIGpzeHMgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VMaXN0SXRlbSwgdXNlTWVyZ2VSZWZzIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBCdXR0b25CYXNlIH0gZnJvbSAnLi4vQnV0dG9uL0J1dHRvbkJhc2UubWpzJztcbmltcG9ydCB7IHVzZURyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IERyb3Bkb3duSXRlbSA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGljb246IEljb24sIG9uQ2xpY2ssIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IHJlZjogbGlzdEl0ZW1SZWYsIGluZGV4IH0gPSB1c2VMaXN0SXRlbSh7IGxhYmVsOiB0eXBlb2YgY2hpbGRyZW4gPT09IFwic3RyaW5nXCIgPyBjaGlsZHJlbiA6IHZvaWQgMCB9KTtcbiAgICBjb25zdCByZWYgPSB1c2VNZXJnZVJlZnMoW2ZvcndhcmRlZFJlZiwgbGlzdEl0ZW1SZWZdKTtcbiAgICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGFjdGl2ZUluZGV4LCBkaXNtaXNzT25DbGljaywgZ2V0SXRlbVByb3BzLCBoYW5kbGVTZWxlY3QgfSA9IHVzZURyb3Bkb3duQ29udGV4dCgpO1xuICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlSW5kZXggPT09IGluZGV4O1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5mbG9hdGluZy5pdGVtLCBjdXN0b21UaGVtZSk7XG4gICAgY29uc3QgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyByb2xlOiBcIm1lbnVpdGVtXCIsIGNsYXNzTmFtZTogdGhlbWUuY29udGFpbmVyLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICBCdXR0b25CYXNlLFxuICAgICAge1xuICAgICAgICByZWYsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi50aGVpclByb3BzLFxuICAgICAgICAuLi5nZXRJdGVtUHJvcHMoe1xuICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIG9uQ2xpY2s/LigpO1xuICAgICAgICAgICAgZGlzbWlzc09uQ2xpY2sgJiYgaGFuZGxlU2VsZWN0KG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRhYkluZGV4OiBpc0FjdGl2ZSA/IDAgOiAtMSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBjbGFzc05hbWU6IHRoZW1lLmljb24gfSksXG4gICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgXVxuICAgICAgfVxuICAgICkgfSk7XG4gIH1cbik7XG5Ecm9wZG93bkl0ZW0uZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duSXRlbVwiO1xuXG5leHBvcnQgeyBEcm9wZG93bkl0ZW0gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyb3Bkb3duSXRlbS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VMaXN0TmF2aWdhdGlvbiwgdXNlVHlwZWFoZWFkLCBGbG9hdGluZ0ZvY3VzTWFuYWdlciwgRmxvYXRpbmdMaXN0IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VFZmZlY3QsIGNsb25lRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEhpT3V0bGluZUNoZXZyb25Eb3duLCBIaU91dGxpbmVDaGV2cm9uVXAsIEhpT3V0bGluZUNoZXZyb25SaWdodCwgSGlPdXRsaW5lQ2hldnJvbkxlZnQgfSBmcm9tICdyZWFjdC1pY29ucy9oaSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VCYXNlRkxvYXRpbmcsIHVzZUZsb2F0aW5nSW50ZXJhY3Rpb25zIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlLWZsb2F0aW5nLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24vQnV0dG9uLm1qcyc7XG5pbXBvcnQgJy4uL0J1dHRvbi9CdXR0b25Hcm91cC5tanMnO1xuaW1wb3J0IHsgRHJvcGRvd25Db250ZXh0IH0gZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQubWpzJztcbmltcG9ydCB7IERyb3Bkb3duRGl2aWRlciB9IGZyb20gJy4vRHJvcGRvd25EaXZpZGVyLm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93bkhlYWRlciB9IGZyb20gJy4vRHJvcGRvd25IZWFkZXIubWpzJztcbmltcG9ydCB7IERyb3Bkb3duSXRlbSB9IGZyb20gJy4vRHJvcGRvd25JdGVtLm1qcyc7XG5cbmNvbnN0IGljb25zID0ge1xuICB0b3A6IEhpT3V0bGluZUNoZXZyb25VcCxcbiAgcmlnaHQ6IEhpT3V0bGluZUNoZXZyb25SaWdodCxcbiAgYm90dG9tOiBIaU91dGxpbmVDaGV2cm9uRG93bixcbiAgbGVmdDogSGlPdXRsaW5lQ2hldnJvbkxlZnRcbn07XG5jb25zdCBUcmlnZ2VyID0gKHtcbiAgcmVmcyxcbiAgY2hpbGRyZW4sXG4gIGlubGluZSxcbiAgdGhlbWUsXG4gIGRpc2FibGVkLFxuICBzZXRCdXR0b25XaWR0aCxcbiAgZ2V0UmVmZXJlbmNlUHJvcHMsXG4gIHJlbmRlclRyaWdnZXIsXG4gIC4uLmJ1dHRvblByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHJlZiA9IHJlZnMucmVmZXJlbmNlO1xuICBjb25zdCBhMTF5UHJvcHMgPSBnZXRSZWZlcmVuY2VQcm9wcygpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgc2V0QnV0dG9uV2lkdGg/LihyZWYuY3VycmVudC5jbGllbnRXaWR0aCk7XG4gICAgfVxuICB9LCBbcmVmLCBzZXRCdXR0b25XaWR0aF0pO1xuICBpZiAocmVuZGVyVHJpZ2dlcikge1xuICAgIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gcmVuZGVyVHJpZ2dlcih0aGVtZSk7XG4gICAgcmV0dXJuIGNsb25lRWxlbWVudCh0cmlnZ2VyRWxlbWVudCwgeyByZWY6IHJlZnMuc2V0UmVmZXJlbmNlLCBkaXNhYmxlZCwgLi4uYTExeVByb3BzLCAuLi50cmlnZ2VyRWxlbWVudC5wcm9wcyB9KTtcbiAgfVxuICByZXR1cm4gaW5saW5lID8gLyogQF9fUFVSRV9fICovIGpzeChcImJ1dHRvblwiLCB7IHR5cGU6IFwiYnV0dG9uXCIsIHJlZjogcmVmcy5zZXRSZWZlcmVuY2UsIGNsYXNzTmFtZTogdGhlbWU/LmlubGluZVdyYXBwZXIsIGRpc2FibGVkLCAuLi5hMTF5UHJvcHMsIGNoaWxkcmVuIH0pIDogLyogQF9fUFVSRV9fICovIGpzeChCdXR0b24sIHsgLi4uYnV0dG9uUHJvcHMsIGRpc2FibGVkLCB0eXBlOiBcImJ1dHRvblwiLCByZWY6IHJlZnMuc2V0UmVmZXJlbmNlLCAuLi5hMTF5UHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbmNvbnN0IERyb3Bkb3duQ29tcG9uZW50ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZGlzbWlzc09uQ2xpY2sgPSB0cnVlLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgZW5hYmxlVHlwZUFoZWFkID0gdHJ1ZSxcbiAgcmVuZGVyVHJpZ2dlcixcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbc2VsZWN0ZWRJbmRleCwgc2V0U2VsZWN0ZWRJbmRleF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2J1dHRvbldpZHRoLCBzZXRCdXR0b25XaWR0aF0gPSB1c2VTdGF0ZSh2b2lkIDApO1xuICBjb25zdCBlbGVtZW50c1JlZiA9IHVzZVJlZihbXSk7XG4gIGNvbnN0IGxhYmVsc1JlZiA9IHVzZVJlZihbXSk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZHJvcGRvd24sIGN1c3RvbVRoZW1lKTtcbiAgY29uc3QgdGhlaXJQcm9wcyA9IHByb3BzO1xuICBjb25zdCBkYXRhVGVzdElkID0gcHJvcHNbXCJkYXRhLXRlc3RpZFwiXSB8fCBcImZsb3diaXRlLWRyb3Bkb3duLXRhcmdldFwiO1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50ID0gcHJvcHMuaW5saW5lID8gXCJib3R0b20tc3RhcnRcIiA6IFwiYm90dG9tXCIsXG4gICAgdHJpZ2dlciA9IFwiY2xpY2tcIixcbiAgICBsYWJlbCxcbiAgICBpbmxpbmUsXG4gICAgYXJyb3dJY29uID0gdHJ1ZSxcbiAgICAuLi5idXR0b25Qcm9wc1xuICB9ID0gdGhlaXJQcm9wcztcbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gdXNlQ2FsbGJhY2soKGluZGV4KSA9PiB7XG4gICAgc2V0U2VsZWN0ZWRJbmRleChpbmRleCk7XG4gICAgc2V0T3BlbihmYWxzZSk7XG4gIH0sIFtdKTtcbiAgY29uc3QgaGFuZGxlVHlwZWFoZWFkTWF0Y2ggPSB1c2VDYWxsYmFjayhcbiAgICAoaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgIHNldEFjdGl2ZUluZGV4KGluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZVNlbGVjdChpbmRleCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb3BlbiwgaGFuZGxlU2VsZWN0XVxuICApO1xuICBjb25zdCB7IGNvbnRleHQsIGZsb2F0aW5nU3R5bGVzLCByZWZzIH0gPSB1c2VCYXNlRkxvYXRpbmcoe1xuICAgIG9wZW4sXG4gICAgc2V0T3BlbixcbiAgICBwbGFjZW1lbnRcbiAgfSk7XG4gIGNvbnN0IGxpc3ROYXYgPSB1c2VMaXN0TmF2aWdhdGlvbihjb250ZXh0LCB7XG4gICAgbGlzdFJlZjogZWxlbWVudHNSZWYsXG4gICAgYWN0aXZlSW5kZXgsXG4gICAgc2VsZWN0ZWRJbmRleCxcbiAgICBvbk5hdmlnYXRlOiBzZXRBY3RpdmVJbmRleFxuICB9KTtcbiAgY29uc3QgdHlwZWFoZWFkID0gdXNlVHlwZWFoZWFkKGNvbnRleHQsIHtcbiAgICBsaXN0UmVmOiBsYWJlbHNSZWYsXG4gICAgYWN0aXZlSW5kZXgsXG4gICAgc2VsZWN0ZWRJbmRleCxcbiAgICBvbk1hdGNoOiBoYW5kbGVUeXBlYWhlYWRNYXRjaCxcbiAgICBlbmFibGVkOiBlbmFibGVUeXBlQWhlYWRcbiAgfSk7XG4gIGNvbnN0IHsgZ2V0UmVmZXJlbmNlUHJvcHMsIGdldEZsb2F0aW5nUHJvcHMsIGdldEl0ZW1Qcm9wcyB9ID0gdXNlRmxvYXRpbmdJbnRlcmFjdGlvbnMoe1xuICAgIGNvbnRleHQsXG4gICAgcm9sZTogXCJtZW51XCIsXG4gICAgdHJpZ2dlcixcbiAgICBpbnRlcmFjdGlvbnM6IFtsaXN0TmF2LCB0eXBlYWhlYWRdXG4gIH0pO1xuICBjb25zdCBJY29uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgW3BdID0gcGxhY2VtZW50LnNwbGl0KFwiLVwiKTtcbiAgICByZXR1cm4gaWNvbnNbcF0gPz8gSGlPdXRsaW5lQ2hldnJvbkRvd247XG4gIH0sIFtwbGFjZW1lbnRdKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKERyb3Bkb3duQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgYWN0aXZlSW5kZXgsIGRpc21pc3NPbkNsaWNrLCBnZXRJdGVtUHJvcHMsIGhhbmRsZVNlbGVjdCB9LCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgVHJpZ2dlcixcbiAgICAgIHtcbiAgICAgICAgLi4uYnV0dG9uUHJvcHMsXG4gICAgICAgIHJlZnMsXG4gICAgICAgIGlubGluZSxcbiAgICAgICAgdGhlbWUsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogZGF0YVRlc3RJZCxcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmZsb2F0aW5nLnRhcmdldCwgYnV0dG9uUHJvcHMuY2xhc3NOYW1lKSxcbiAgICAgICAgc2V0QnV0dG9uV2lkdGgsXG4gICAgICAgIGdldFJlZmVyZW5jZVByb3BzLFxuICAgICAgICByZW5kZXJUcmlnZ2VyLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgIGFycm93SWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgY2xhc3NOYW1lOiB0aGVtZS5hcnJvd0ljb24gfSlcbiAgICAgICAgXVxuICAgICAgfVxuICAgICksXG4gICAgb3BlbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEZsb2F0aW5nRm9jdXNNYW5hZ2VyLCB7IGNvbnRleHQsIG1vZGFsOiBmYWxzZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImRpdlwiLFxuICAgICAge1xuICAgICAgICByZWY6IHJlZnMuc2V0RmxvYXRpbmcsXG4gICAgICAgIHN0eWxlOiB7IC4uLmZsb2F0aW5nU3R5bGVzLCBtaW5XaWR0aDogYnV0dG9uV2lkdGggfSxcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWRyb3Bkb3duXCIsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBvcGVuLFxuICAgICAgICAuLi5nZXRGbG9hdGluZ1Byb3BzKHtcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICB0aGVtZS5mbG9hdGluZy5iYXNlLFxuICAgICAgICAgICAgdGhlbWUuZmxvYXRpbmcuYW5pbWF0aW9uLFxuICAgICAgICAgICAgXCJkdXJhdGlvbi0xMDBcIixcbiAgICAgICAgICAgICFvcGVuICYmIHRoZW1lLmZsb2F0aW5nLmhpZGRlbixcbiAgICAgICAgICAgIHRoZW1lLmZsb2F0aW5nLnN0eWxlLmF1dG8sXG4gICAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgICApXG4gICAgICAgIH0pLFxuICAgICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChGbG9hdGluZ0xpc3QsIHsgZWxlbWVudHNSZWYsIGxhYmVsc1JlZiwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ1bFwiLCB7IGNsYXNzTmFtZTogdGhlbWUuY29udGVudCwgdGFiSW5kZXg6IC0xLCBjaGlsZHJlbiB9KSB9KVxuICAgICAgfVxuICAgICkgfSlcbiAgXSB9KTtcbn07XG5Ecm9wZG93bkNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25cIjtcbkRyb3Bkb3duSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJEcm9wZG93bi5IZWFkZXJcIjtcbkRyb3Bkb3duRGl2aWRlci5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd24uRGl2aWRlclwiO1xuY29uc3QgRHJvcGRvd24gPSBPYmplY3QuYXNzaWduKERyb3Bkb3duQ29tcG9uZW50LCB7XG4gIEl0ZW06IERyb3Bkb3duSXRlbSxcbiAgSGVhZGVyOiBEcm9wZG93bkhlYWRlcixcbiAgRGl2aWRlcjogRHJvcGRvd25EaXZpZGVyXG59KTtcblxuZXhwb3J0IHsgRHJvcGRvd24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyb3Bkb3duLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIEZyYWdtZW50LCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgSGVscGVyVGV4dCB9IGZyb20gJy4uL0hlbHBlclRleHQvSGVscGVyVGV4dC5tanMnO1xuXG5jb25zdCBGaWxlSW5wdXQgPSBmb3J3YXJkUmVmKFxuICAoeyBjbGFzc05hbWUsIGNvbG9yID0gXCJncmF5XCIsIGhlbHBlclRleHQsIHNpemluZyA9IFwibWRcIiwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZmlsZUlucHV0LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKEZyYWdtZW50LCB7IGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmJhc2UsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcImlucHV0XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICB0aGVtZS5maWVsZC5pbnB1dC5iYXNlLFxuICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQuY29sb3JzW2NvbG9yXSxcbiAgICAgICAgICAgIHRoZW1lLmZpZWxkLmlucHV0LnNpemVzW3NpemluZ11cbiAgICAgICAgICApLFxuICAgICAgICAgIC4uLnByb3BzLFxuICAgICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICAgIHJlZlxuICAgICAgICB9XG4gICAgICApIH0pIH0pLFxuICAgICAgaGVscGVyVGV4dCAmJiAvKiBAX19QVVJFX18gKi8ganN4KEhlbHBlclRleHQsIHsgY29sb3IsIGNoaWxkcmVuOiBoZWxwZXJUZXh0IH0pXG4gICAgXSB9KTtcbiAgfVxuKTtcbkZpbGVJbnB1dC5kaXNwbGF5TmFtZSA9IFwiRmlsZUlucHV0XCI7XG5cbmV4cG9ydCB7IEZpbGVJbnB1dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmlsZUlucHV0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUlkIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGbG9hdGluZ0xhYmVsID0gZm9yd2FyZFJlZihcbiAgKHtcbiAgICBsYWJlbCxcbiAgICBoZWxwZXJUZXh0LFxuICAgIGNvbG9yID0gXCJkZWZhdWx0XCIsXG4gICAgc2l6aW5nID0gXCJtZFwiLFxuICAgIHZhcmlhbnQsXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgICBjbGFzc05hbWUsXG4gICAgLi4ucHJvcHNcbiAgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgcmFuZG9tSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZmxvYXRpbmdMYWJlbCwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZShcInJlbGF0aXZlXCIsIHZhcmlhbnQgPT09IFwic3RhbmRhcmRcIiA/IFwiei0wXCIgOiBcIlwiKSwgY2hpbGRyZW46IFtcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcImlucHV0XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICBpZDogcHJvcHMuaWQgPyBwcm9wcy5pZCA6IFwiZmxvYXRpbmdMYWJlbFwiICsgcmFuZG9tSWQsXG4gICAgICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogXCJvdXRsaW5lZF9zdWNjZXNzX2hlbHBcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5pbnB1dFtjb2xvcl1bdmFyaWFudF1bc2l6aW5nXSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIiBcIixcbiAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG9hdGluZy1sYWJlbFwiLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICAgIHJlZlxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcImxhYmVsXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHRtbEZvcjogcHJvcHMuaWQgPyBwcm9wcy5pZCA6IFwiZmxvYXRpbmdMYWJlbFwiICsgcmFuZG9tSWQsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUubGFiZWxbY29sb3JdW3ZhcmlhbnRdW3NpemluZ10sIGNsYXNzTmFtZSksXG4gICAgICAgICAgICBjaGlsZHJlbjogbGFiZWxcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIF0gfSksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwicFwiLCB7IGlkOiBcIm91dGxpbmVkX2hlbHBlcl90ZXh0XCIgKyByYW5kb21JZCwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmhlbHBlclRleHRbY29sb3JdLCBjbGFzc05hbWUpLCBjaGlsZHJlbjogaGVscGVyVGV4dCB9KVxuICAgIF0gfSk7XG4gIH1cbik7XG5GbG9hdGluZ0xhYmVsLmRpc3BsYXlOYW1lID0gXCJGbG9hdGluZ0xhYmVsXCI7XG5cbmV4cG9ydCB7IEZsb2F0aW5nTGFiZWwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZsb2F0aW5nTGFiZWwubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJCcmFuZCA9ICh7XG4gIGFsdCxcbiAgY2xhc3NOYW1lLFxuICBjaGlsZHJlbixcbiAgaHJlZixcbiAgbmFtZSxcbiAgc3JjLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIuYnJhbmQsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjaGlsZHJlbjogaHJlZiA/IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiYVwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1mb290ZXItYnJhbmRcIiwgaHJlZiwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJpbWdcIiwgeyBhbHQsIHNyYywgY2xhc3NOYW1lOiB0aGVtZS5pbWcgfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLWJyYW5kLXNwYW5cIiwgY2xhc3NOYW1lOiB0aGVtZS5zcGFuLCBjaGlsZHJlbjogbmFtZSB9KSxcbiAgICBjaGlsZHJlblxuICBdIH0pIDogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImltZ1wiLFxuICAgIHtcbiAgICAgIGFsdCxcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1mb290ZXItYnJhbmRcIixcbiAgICAgIHNyYyxcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5pbWcsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wc1xuICAgIH1cbiAgKSB9KTtcbn07XG5cbmV4cG9ydCB7IEZvb3RlckJyYW5kIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJCcmFuZC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEZvb3RlckNvcHlyaWdodCA9ICh7XG4gIGJ5LFxuICBjbGFzc05hbWUsXG4gIGhyZWYsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB5ZWFyLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZvb3Rlci5jb3B5cmlnaHQsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3Rlci1jb3B5cmlnaHRcIiwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIFwiXFx4QTkgXCIsXG4gICAgeWVhcixcbiAgICBocmVmID8gLyogQF9fUFVSRV9fICovIGpzeChcImFcIiwgeyBocmVmLCBjbGFzc05hbWU6IHRoZW1lLmhyZWYsIGNoaWxkcmVuOiBieSB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3Rlci1jb3B5cmlnaHQtc3BhblwiLCBjbGFzc05hbWU6IHRoZW1lLnNwYW4sIGNoaWxkcmVuOiBieSB9KVxuICBdIH0pO1xufTtcblxuZXhwb3J0IHsgRm9vdGVyQ29weXJpZ2h0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJDb3B5cmlnaHQubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJEaXZpZGVyID0gKHsgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZvb3Rlci5kaXZpZGVyLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiaHJcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZm9vdGVyLWRpdmlkZXJcIiwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzIH0pO1xufTtcblxuZXhwb3J0IHsgRm9vdGVyRGl2aWRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9vdGVyRGl2aWRlci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEZvb3Rlckljb24gPSAoe1xuICBhcmlhTGFiZWwsXG4gIGNsYXNzTmFtZSxcbiAgaHJlZixcbiAgaWNvbjogSWNvbixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZm9vdGVyLmljb24sIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjaGlsZHJlbjogaHJlZiA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJhXCIsXG4gICAge1xuICAgICAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCxcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1mb290ZXItaWNvblwiLFxuICAgICAgaHJlZixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IGNsYXNzTmFtZTogdGhlbWUuc2l6ZSB9KVxuICAgIH1cbiAgKSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLWljb25cIiwgY2xhc3NOYW1lOiB0aGVtZS5zaXplLCAuLi5wcm9wcyB9KSB9KTtcbn07XG5cbmV4cG9ydCB7IEZvb3Rlckljb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZvb3Rlckljb24ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJMaW5rID0gKHtcbiAgYXM6IENvbXBvbmVudCA9IFwiYVwiLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBocmVmLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIuZ3JvdXBMaW5rLmxpbmssIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJsaVwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChDb21wb25lbnQsIHsgaHJlZiwgY2xhc3NOYW1lOiB0aGVtZS5ocmVmLCAuLi5wcm9wcywgY2hpbGRyZW4gfSkgfSk7XG59O1xuXG5leHBvcnQgeyBGb290ZXJMaW5rIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJMaW5rLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRm9vdGVyTGlua0dyb3VwID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgY29sID0gZmFsc2UsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZvb3Rlci5ncm91cExpbmssIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ1bFwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmb290ZXItZ3JvdXBMaW5rXCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjb2wgJiYgdGhlbWUuY29sLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuXG5leHBvcnQgeyBGb290ZXJMaW5rR3JvdXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZvb3RlckxpbmtHcm91cC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEZvb3RlclRpdGxlID0gKHtcbiAgYXM6IENvbXBvbmVudCA9IFwiaDJcIixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgdGl0bGUsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZm9vdGVyLnRpdGxlLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KENvbXBvbmVudCwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLXRpdGxlXCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IHRpdGxlIH0pO1xufTtcblxuZXhwb3J0IHsgRm9vdGVyVGl0bGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZvb3RlclRpdGxlLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEZvb3RlckJyYW5kIH0gZnJvbSAnLi9Gb290ZXJCcmFuZC5tanMnO1xuaW1wb3J0IHsgRm9vdGVyQ29weXJpZ2h0IH0gZnJvbSAnLi9Gb290ZXJDb3B5cmlnaHQubWpzJztcbmltcG9ydCB7IEZvb3RlckRpdmlkZXIgfSBmcm9tICcuL0Zvb3RlckRpdmlkZXIubWpzJztcbmltcG9ydCB7IEZvb3Rlckljb24gfSBmcm9tICcuL0Zvb3Rlckljb24ubWpzJztcbmltcG9ydCB7IEZvb3RlckxpbmsgfSBmcm9tICcuL0Zvb3RlckxpbmsubWpzJztcbmltcG9ydCB7IEZvb3RlckxpbmtHcm91cCB9IGZyb20gJy4vRm9vdGVyTGlua0dyb3VwLm1qcyc7XG5pbXBvcnQgeyBGb290ZXJUaXRsZSB9IGZyb20gJy4vRm9vdGVyVGl0bGUubWpzJztcblxuY29uc3QgRm9vdGVyQ29tcG9uZW50ID0gKHtcbiAgYmdEYXJrID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbnRhaW5lciA9IGZhbHNlLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJmb290ZXJcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBiZ0RhcmsgJiYgdGhlbWUucm9vdC5iZ0RhcmssIGNvbnRhaW5lciAmJiB0aGVtZS5yb290LmNvbnRhaW5lciwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICk7XG59O1xuRm9vdGVyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJGb290ZXJcIjtcbkZvb3RlckNvcHlyaWdodC5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyLkNvcHlyaWdodFwiO1xuRm9vdGVyTGluay5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyLkxpbmtcIjtcbkZvb3RlckJyYW5kLmRpc3BsYXlOYW1lID0gXCJGb290ZXIuQnJhbmRcIjtcbkZvb3RlckxpbmtHcm91cC5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyLkxpbmtHcm91cFwiO1xuRm9vdGVySWNvbi5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyLkljb25cIjtcbkZvb3RlclRpdGxlLmRpc3BsYXlOYW1lID0gXCJGb290ZXIuVGl0bGVcIjtcbkZvb3RlckRpdmlkZXIuZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5EaXZpZGVyXCI7XG5jb25zdCBGb290ZXIgPSBPYmplY3QuYXNzaWduKEZvb3RlckNvbXBvbmVudCwge1xuICBDb3B5cmlnaHQ6IEZvb3RlckNvcHlyaWdodCxcbiAgTGluazogRm9vdGVyTGluayxcbiAgTGlua0dyb3VwOiBGb290ZXJMaW5rR3JvdXAsXG4gIEJyYW5kOiBGb290ZXJCcmFuZCxcbiAgSWNvbjogRm9vdGVySWNvbixcbiAgVGl0bGU6IEZvb3RlclRpdGxlLFxuICBEaXZpZGVyOiBGb290ZXJEaXZpZGVyXG59KTtcblxuZXhwb3J0IHsgRm9vdGVyLCBGb290ZXJDb21wb25lbnQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZvb3Rlci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRmFRdW90ZVJpZ2h0IH0gZnJvbSAncmVhY3QtaWNvbnMvZmE2JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgSFJJY29uID0gZm9yd2FyZFJlZihcbiAgKHsgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIGljb246IEljb24gPSBGYVF1b3RlUmlnaHQsIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5oci5pY29uLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJoclwiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmhyTGluZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICByb2xlOiBcInNlcGFyYXRvclwiLFxuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1oci1pY29uXCIsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5pY29uLmJhc2UsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24uaWNvbiB9KSB9KVxuICAgIF0gfSk7XG4gIH1cbik7XG5cbmV4cG9ydCB7IEhSSWNvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SFJJY29uLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEhSU3F1YXJlID0gZm9yd2FyZFJlZihcbiAgKHsgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5oci5zcXVhcmUsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiaHJcIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAgIHJvbGU6IFwic2VwYXJhdG9yXCIsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1oci1zcXVhcmVcIixcbiAgICAgICAgcmVmLFxuICAgICAgICAuLi5wcm9wc1xuICAgICAgfVxuICAgICk7XG4gIH1cbik7XG5cbmV4cG9ydCB7IEhSU3F1YXJlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1IUlNxdWFyZS5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBIUlRleHQgPSBmb3J3YXJkUmVmKFxuICAoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgdGV4dCwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmhyLnRleHQsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcImhyXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuaHJMaW5lLCBjbGFzc05hbWUpLFxuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1oci10ZXh0XCIsXG4gICAgICAgICAgcm9sZTogXCJzZXBhcmF0b3JcIixcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgLi4ucHJvcHNcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS50ZXh0LCBjaGlsZHJlbjogdGV4dCB9KVxuICAgIF0gfSk7XG4gIH1cbik7XG5cbmV4cG9ydCB7IEhSVGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SFJUZXh0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEhSVHJpbW1lZCA9IGZvcndhcmRSZWYoXG4gICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuaHIudHJpbW1lZCwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJoclwiLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgcm9sZTogXCJzZXBhcmF0b3JcIixcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWhyLXRyaW1tZWRcIixcbiAgICAgICAgcmVmLFxuICAgICAgICAuLi5wcm9wc1xuICAgICAgfVxuICAgICk7XG4gIH1cbik7XG5cbmV4cG9ydCB7IEhSVHJpbW1lZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SFJUcmltbWVkLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBIUkljb24gfSBmcm9tICcuL0hSSWNvbi5tanMnO1xuaW1wb3J0IHsgSFJTcXVhcmUgfSBmcm9tICcuL0hSU3F1YXJlLm1qcyc7XG5pbXBvcnQgeyBIUlRleHQgfSBmcm9tICcuL0hSVGV4dC5tanMnO1xuaW1wb3J0IHsgSFJUcmltbWVkIH0gZnJvbSAnLi9IUlRyaW1tZWQubWpzJztcblxuY29uc3QgSFJDb21wb25lbnQgPSBmb3J3YXJkUmVmKCh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmhyLnJvb3QsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJoclwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCByb2xlOiBcInNlcGFyYXRvclwiLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtaHJcIiwgcmVmLCAuLi5wcm9wcyB9KTtcbn0pO1xuSFJDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIkhSXCI7XG5IUlRyaW1tZWQuZGlzcGxheU5hbWUgPSBcIkhSLlRyaW1tZWRcIjtcbkhSSWNvbi5kaXNwbGF5TmFtZSA9IFwiSFIuSWNvblwiO1xuSFJUZXh0LmRpc3BsYXlOYW1lID0gXCJIUi5UZXh0XCI7XG5IUlNxdWFyZS5kaXNwbGF5TmFtZSA9IFwiSFIuU3F1YXJlXCI7XG5jb25zdCBIUiA9IE9iamVjdC5hc3NpZ24oSFJDb21wb25lbnQsIHtcbiAgVHJpbW1lZDogSFJUcmltbWVkLFxuICBJY29uOiBIUkljb24sXG4gIFRleHQ6IEhSVGV4dCxcbiAgU3F1YXJlOiBIUlNxdWFyZVxufSk7XG5cbmV4cG9ydCB7IEhSIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1IUi5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IExpc3RJdGVtID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgaWNvbjogSWNvbiwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5saXN0Lml0ZW0sIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwibGlcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUud2l0aEljb25bSWNvbiA/IFwib25cIiA6IFwib2ZmXCJdLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuaWNvbikgfSksXG4gICAgY2hpbGRyZW5cbiAgXSB9KTtcbn07XG5cbmV4cG9ydCB7IExpc3RJdGVtIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1MaXN0SXRlbS5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4vTGlzdEl0ZW0ubWpzJztcblxuY29uc3QgTGlzdENvbXBvbmVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHVuc3R5bGVkLFxuICBuZXN0ZWQsXG4gIG9yZGVyZWQsXG4gIGhvcml6b250YWwsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmxpc3QsIGN1c3RvbVRoZW1lKTtcbiAgY29uc3QgQ29tcG9uZW50ID0gb3JkZXJlZCA/IFwib2xcIiA6IFwidWxcIjtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgQ29tcG9uZW50LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgdGhlbWUucm9vdC5iYXNlLFxuICAgICAgICB0aGVtZS5yb290Lm9yZGVyZWRbb3JkZXJlZCA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICB1bnN0eWxlZCAmJiB0aGVtZS5yb290LnVuc3R5bGVkLFxuICAgICAgICBuZXN0ZWQgJiYgdGhlbWUucm9vdC5uZXN0ZWQsXG4gICAgICAgIGhvcml6b250YWwgJiYgdGhlbWUucm9vdC5ob3Jpem9udGFsLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcbkxpc3RDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIkxpc3RcIjtcbkxpc3RJdGVtLmRpc3BsYXlOYW1lID0gXCJMaXN0Lkl0ZW1cIjtcbmNvbnN0IExpc3QgPSBPYmplY3QuYXNzaWduKExpc3RDb21wb25lbnQsIHsgSXRlbTogTGlzdEl0ZW0gfSk7XG5cbmV4cG9ydCB7IExpc3QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxpc3QubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBMaXN0R3JvdXBJdGVtID0gKHtcbiAgYWN0aXZlOiBpc0FjdGl2ZSxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgaHJlZixcbiAgaWNvbjogSWNvbixcbiAgb25DbGljayxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIGRpc2FibGVkLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmxpc3RHcm91cC5pdGVtLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IGlzTGluayA9IHR5cGVvZiBocmVmICE9PSBcInVuZGVmaW5lZFwiO1xuICBjb25zdCBDb21wb25lbnQgPSBpc0xpbmsgPyBcImFcIiA6IFwiYnV0dG9uXCI7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIENvbXBvbmVudCxcbiAgICB7XG4gICAgICBocmVmLFxuICAgICAgb25DbGljayxcbiAgICAgIHR5cGU6IGlzTGluayA/IHZvaWQgMCA6IFwiYnV0dG9uXCIsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgdGhlbWUubGluay5hY3RpdmVbaXNBY3RpdmUgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgdGhlbWUubGluay5kaXNhYmxlZFtkaXNhYmxlZCA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICB0aGVtZS5saW5rLmJhc2UsXG4gICAgICAgIHRoZW1lLmxpbmsuaHJlZltpc0xpbmsgPyBcIm9uXCIgOiBcIm9mZlwiXVxuICAgICAgKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtbGlzdC1ncm91cC1pdGVtLWljb25cIiwgY2xhc3NOYW1lOiB0aGVtZS5saW5rLmljb24gfSksXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICBdXG4gICAgfVxuICApIH0pO1xufTtcblxuZXhwb3J0IHsgTGlzdEdyb3VwSXRlbSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGlzdEdyb3VwSXRlbS5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBMaXN0R3JvdXBJdGVtIH0gZnJvbSAnLi9MaXN0R3JvdXBJdGVtLm1qcyc7XG5cbmNvbnN0IExpc3RHcm91cENvbXBvbmVudCA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkubGlzdEdyb3VwLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwidWxcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuTGlzdEdyb3VwQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJMaXN0R3JvdXBcIjtcbkxpc3RHcm91cEl0ZW0uZGlzcGxheU5hbWUgPSBcIkxpc3RHcm91cC5JdGVtXCI7XG5jb25zdCBMaXN0R3JvdXAgPSBPYmplY3QuYXNzaWduKExpc3RHcm91cENvbXBvbmVudCwge1xuICBJdGVtOiBMaXN0R3JvdXBJdGVtXG59KTtcblxuZXhwb3J0IHsgTGlzdEdyb3VwIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1MaXN0R3JvdXAubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgTmF2YmFyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZU5hdmJhckNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VOYXZCYXJDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgTmF2YmFyQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IE5hdmJhckNvbnRleHQsIHVzZU5hdmJhckNvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU5hdmJhckNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlTmF2YmFyQ29udGV4dCB9IGZyb20gJy4vTmF2YmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBOYXZiYXJCcmFuZCA9ICh7XG4gIGFzOiBDb21wb25lbnQgPSBcImFcIixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSB9ID0gdXNlTmF2YmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuYnJhbmQsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goQ29tcG9uZW50LCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuXG5leHBvcnQgeyBOYXZiYXJCcmFuZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2YmFyQnJhbmQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlTmF2YmFyQ29udGV4dCB9IGZyb20gJy4vTmF2YmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBOYXZiYXJDb2xsYXBzZSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaXNPcGVuIH0gPSB1c2VOYXZiYXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5jb2xsYXBzZSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1uYXZiYXItY29sbGFwc2VcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCB0aGVtZS5oaWRkZW5bIWlzT3BlbiA/IFwib25cIiA6IFwib2ZmXCJdLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInVsXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5saXN0LCBjaGlsZHJlbiB9KVxuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCB7IE5hdmJhckNvbGxhcHNlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OYXZiYXJDb2xsYXBzZS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VOYXZiYXJDb250ZXh0IH0gZnJvbSAnLi9OYXZiYXJDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IE5hdmJhckxpbmsgPSAoe1xuICBhY3RpdmUsXG4gIGFzOiBDb21wb25lbnQgPSBcImFcIixcbiAgZGlzYWJsZWQsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBvbkNsaWNrLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIHNldElzT3BlbiB9ID0gdXNlTmF2YmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUubGluaywgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBoYW5kbGVDbGljayA9IChldmVudCkgPT4ge1xuICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgb25DbGljaz8uKGV2ZW50KTtcbiAgfTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJsaVwiLCB7IGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIENvbXBvbmVudCxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLmJhc2UsXG4gICAgICAgIGFjdGl2ZSAmJiB0aGVtZS5hY3RpdmUub24sXG4gICAgICAgICFhY3RpdmUgJiYgIWRpc2FibGVkICYmIHRoZW1lLmFjdGl2ZS5vZmYsXG4gICAgICAgIHRoZW1lLmRpc2FibGVkW2Rpc2FibGVkID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKSxcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKSB9KTtcbn07XG5cbmV4cG9ydCB7IE5hdmJhckxpbmsgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU5hdmJhckxpbmsubWpzLm1hcFxuIiwiLy8gVEhJUyBGSUxFIElTIEFVVE8gR0VORVJBVEVEXG5pbXBvcnQgeyBHZW5JY29uIH0gZnJvbSAnLi4vbGliL2luZGV4Lm1qcyc7XG5leHBvcnQgZnVuY3Rpb24gRmE1MDBQeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDMuMyAzNDQuM2MtNi41LTE0LjItNi45LTE4LjMgNy40LTIzLjEgMjUuNi04IDggOS4yIDQzLjIgNDkuMmguM3YtOTMuOWMxLjItNTAuMiA0NC05Mi4yIDk3LjctOTIuMiA1My45IDAgOTcuNyA0My41IDk3LjcgOTYuOCAwIDYzLjQtNjAuOCAxMTMuMi0xMjguNSA5My4zLTEwLjUtNC4yLTIuMS0zMS43IDguNS0yOC42IDUzIDAgODkuNC0xMC4xIDg5LjQtNjQuNCAwLTYxLTc3LjEtODkuNi0xMTYuOS00NC42LTIzLjUgMjYuNC0xNy42IDQyLjEtMTcuNiAxNTcuNiA1MC43IDMxIDExOC4zIDIyIDE2MC40LTIwLjEgMjQuOC0yNC44IDM4LjUtNTggMzguNS05MyAwLTM1LjItMTMuOC02OC4yLTM4LjgtOTMuMy0yNC44LTI0LjgtNTcuOC0zOC41LTkzLjMtMzguNXMtNjguOCAxMy44LTkzLjUgMzguNWMtLjMuMy0xNiAxNi41LTIxLjIgMjMuOWwtLjUuNmMtMy4zIDQuNy02LjMgOS4xLTIwLjEgNi4xLTYuOS0xLjctMTQuMy01LjgtMTQuMy0xMS44VjIwYzAtNSAzLjktMTAuNSAxMC41LTEwLjVoMjQxLjNjOC4zIDAgOC4zIDExLjYgOC4zIDE1LjEgMCAzLjkgMCAxNS4xLTguMyAxNS4xSDEzMC4zdjEzMi45aC4zYzEwNC4yLTEwOS44IDI4Mi44LTM2IDI4Mi44IDEwOC45IDAgMTc4LjEtMjQ0LjggMjIwLjMtMzEwLjEgNjIuOHptNjMuMy0yNjAuOGMtLjUgNC4yIDQuNiAyNC41IDE0LjYgMjAuNkMzMDYgNTYuNiAzODQgMTQ0LjUgMzkwLjYgMTQ0LjVjNC44IDAgMjIuOC0xNS4zIDE0LjMtMjIuOC05My4yLTg5LTIzNC41LTU3LTIzOC4zLTM4LjJ6TTM5MyA0MTQuN0MyODMgNTI0LjYgOTQgNDc1LjUgNjEgMzEwLjVjMC0xMi4yLTMwLjQtNy40LTI4LjkgMy4zIDI0IDE3My40IDI0NiAyNTYuOSAzODEuNiAxMjEuMyA2LjktNy44LTEyLjYtMjguNC0yMC43LTIwLjR6TTIxMy42IDMwNi42YzAgNCA0LjMgNy4zIDUuNSA4LjUgMyAzIDYuMSA0LjQgOC41IDQuNCAzLjggMCAyLjYuMiAyMi4zLTE5LjUgMTkuNiAxOS4zIDE5LjEgMTkuNSAyMi4zIDE5LjUgNS40IDAgMTguNS0xMC40IDEwLjctMTguMkwyNjUuNiAyODRsMTguMi0xOC4yYzYuMy02LjgtMTAuMS0yMS44LTE2LjItMTUuN0wyNDkuNyAyNjhjLTE4LjYtMTguOC0xOC40LTE5LjUtMjEuNS0xOS41LTUgMC0xOCAxMS43LTEyLjQgMTcuM0wyMzQgMjg0Yy0xOC4xIDE3LjktMjAuNCAxOS4yLTIwLjQgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWNjZXNzaWJsZUljb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIzLjkgMjU1LjhMNDExIDQxMy4xYy0zLjMgNDAuNy02My45IDM1LjEtNjAuNi00LjlsMTAtMTIyLjUtNDEuMSAyLjNjMTAuMSAyMC43IDE1LjggNDMuOSAxNS44IDY4LjUgMCA0MS4yLTE2LjEgNzguNy00Mi4zIDEwNi41bC0zOS4zLTM5LjNjNTcuOS02My43IDEzLjEtMTY3LjItNzQtMTY3LjItMjUuOSAwLTQ5LjUgOS45LTY3LjIgMjZMNzMgMjQzLjJjMjItMjAuNyA1MC4xLTM1LjEgODEuNC00MC4ybDc1LjMtODUuNy00Mi42LTI0LjgtNTEuNiA0NmMtMzAgMjYuOC03MC42LTE4LjUtNDAuNS00NS40bDY4LTYwLjdjOS44LTguOCAyNC4xLTEwLjIgMzUuNS0zLjYgMCAwIDEzOS4zIDgwLjkgMTM5LjUgODEuMSAxNi4yIDEwLjEgMjAuNyAzNiA2LjEgNTIuNkwyODUuNyAyMjlsMTA2LjEtNS45YzE4LjUtMS4xIDMzLjYgMTQuNCAzMi4xIDMyLjd6bS02NC45LTE1NGMyOC4xIDAgNTAuOS0yMi44IDUwLjktNTAuOUM0MDkuOSAyMi44IDM4Ny4xIDAgMzU5IDBjLTI4LjEgMC01MC45IDIyLjgtNTAuOSA1MC45IDAgMjguMSAyMi44IDUwLjkgNTAuOSA1MC45ek0xNzkuNiA0NTYuNWMtODAuNiAwLTEyNy40LTkwLjYtODIuNy0xNTYuMWwtMzkuNy0zOS43QzM2LjQgMjg3IDI0IDMyMC4zIDI0IDM1Ni40YzAgMTMwLjcgMTUwLjcgMjAxLjQgMjUxLjQgMTIyLjVsLTM5LjctMzkuN2MtMTYgMTAuOS0zNS4zIDE3LjMtNTYuMSAxNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBY2N1c29mdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjIuMSAyNTJ2LTFsLTUxLjItNjUuOHMtMTIgMS42LTI1IDE1LjFjLTkgOS4zLTI0Mi4xIDIzOS4xLTI0My40IDI0MC45LTcgMTAgMS42IDYuOCAxNS43IDEuNy44IDAgMTE0LjUtMzYuNiAxMTQuNS0zNi42LjUtLjYtLjEtLjEuNi0uNi0uNC01LjEtLjgtMjYuMi0xLTI3LjctLjYtNS4yIDIuMi02LjkgNy04LjlsOTIuNi0zMy44Yy42LS44IDg4LjUtODEuNyA5MC4yLTgzLjN6bTE2MC4xIDEyMC4xYzEzLjMgMTYuMSAyMC43IDEzLjMgMzAuOCA5LjMgMy4yLTEuMiAxMTUuNC00Ny42IDExNy44LTQ4LjkgOC00LjMtMS43LTE2LjctNy4yLTIzLjQtMi4xLTIuNS0yMDUuMS0yNDUuNi0yMDcuMi0yNDguMy05LjctMTIuMi0xNC4zLTEyLjktMzguNC0xMi44LTEwLjIgMC0xMDYuOC41LTExNi41LjYtMTkuMi4xLTMyLjktLjMtMTkuMiAxNi45QzI1MCA3NSA0NzYuNSAzNjUuMiA0ODIuMiAzNzIuMXptMTUyLjcgMS42Yy0yLjMtLjMtMjQuNi00LjctMzgtNy4yIDAgMC0xMTUgNTAuNC0xMTcuNSA1MS42LTE2IDcuMy0yNi45LTMuMi0zNi43LTE0LjZsLTU3LjEtNzRjLTUuNC0uOS02MC40LTkuNi02NS4zLTkuMy0zLjEuMi05LjYuOC0xNC40IDIuOS00LjkgMi4xLTE0NS4yIDUyLjgtMTUwLjIgNTQuNy01LjEgMi0xMS40IDMuNi0xMS4xIDcuNi4yIDIuNSAyIDIuNiA0LjYgMy41IDIuNy44IDMwMC45IDY3LjYgMzA4IDY5LjEgMTUuNiAzLjMgMzguNSAxMC41IDUzLjYgMS43IDIuMS0xLjIgMTIzLjgtNzYuNCAxMjUuOC03Ny44IDUuNC00IDQuMy02LjgtMS43LTguMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWNxdWlzaXRpb25zSW5jb3Jwb3JhdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Ny40NSA0NjguMmMtMS4yLTcuNy0xLjMtNy42LTkuNi03LjYtOTkuOC4yLTExMS44LTIuNC0xMTIuNy0yLjYtMTIuMy0xLjctMjAuNi0xMC41LTIxLTIzLjEtLjEtMS42LS4yLTcxLjYtMS0xMjkuMS0uMS00LjcgMS42LTYuNCA1LjktNy41IDEyLjUtMyAyNC45LTYuMSAzNy4zLTkuNyA0LjMtMS4zIDYuOC0uMiA4LjQgMy41IDQuNSAxMC4zIDguOCAyMC42IDEzLjIgMzAuOSAxLjYgMy43LjEgNC40LTMuNCA0LjQtMTAtLjItMjAtLjEtMzAuNC0uMXYyN2gxMTZjLTEuNC05LjUtMi43LTE4LjEtNC0yNy41LTcgMC0xMy44LjQtMjAuNC0uMS0yMi42LTEuNi0xOC4zLTQuNC04NC0xNTguNi04LjgtMjAuMS0yNy45LTYyLjEtMzYuNS04OS4yLTQuNC0xNCA1LjUtMjUuNCAxOC45LTI2LjYgMTguNi0xLjcgMzcuNS0xLjYgNTYuMi0yIDIwLjYtLjQgNDEuMi0uNCA2MS44LS41IDMuMSAwIDQtMS40IDQuMy00LjMgMS4yLTkuOCAyLjctMTkuNSA0LTI5LjIuOC01LjMgMS42LTEwLjcgMi40LTE2LjFMMjMuNzUgMGMtMy42IDAtNS4zIDEuMS00LjYgNS4zIDIuMiAxMy4yLS44LjggNi40IDQ1LjMgNjMuNCAwIDcxLjguOSAxMDEuOC41IDEyLjMtLjIgMzcgMy41IDM3LjcgMjIuMS40IDExLjQtMS4xIDExLjMtMzIuNiA4Ny40LTUzLjggMTI5LjgtNTAuNyAxMjAuMy02Ny4zIDE2MS0xLjcgNC4xLTMuNiA1LjItNy42IDUuMi04LjUtLjItMTctLjMtMjUuNC4xLTEuOS4xLTUuMiAxLjgtNS41IDMuMi0xLjUgOC4xLTIuMiAxNi4zLTMuMiAyNC45aDExNC4zdi0yNy42Yy02LjkgMC0zMy41LjQtMzUuMy0yLjkgNS4zLTEyLjMgMTAuNC0yNC40IDE1LjctMzYuNyAxNi4zIDQgMzEuOSA3LjggNDcuNiAxMS43IDMuNC45IDQuNiAzIDQuNiA2LjgtLjEgNDIuOS4xIDg1LjkuMiAxMjguOCAwIDEwLjItNS41IDE5LjEtMTQuOSAyMy4xLTYuNSAyLjctMy4zIDMuNC0xMjEuNCAyLjQtNS4zIDAtNy4xIDItNy42IDYuOC0xLjUgMTIuOS0yLjkgMjUuOS01IDM4LjgtLjggNSAxLjMgNS43IDUuMyA1LjcgMTgzLjIuNi0zMC43IDAgMzM3LjEgMC0yLjUtMTUtNC40LTI5LjQtNi42LTQzLjd6bS0xNzQuOS0yMDUuN2MtMTMuMy00LjItMjYuNi04LjItMzkuOS0xMi41YTQ0LjUzIDQ0LjUzIDAgMCAxLTUuOC0yLjljMTcuMi00NC4zIDM0LjItODguMSA1MS4zLTEzMi4xIDcuNSAyLjQgNy45LS44IDkuNCAwIDkuMyAyMi41IDE4LjEgNjAuMSAyNyA4Mi44IDYuNiAxNi43IDEzIDMzLjUgMTkuNyA1MC45YTM1Ljc4IDM1Ljc4IDAgMCAxLTMuOSAyLjFjLTEzLjEgMy45LTI2LjQgNy41LTM5LjQgMTEuN2EyNy42NiAyNy42NiAwIDAgMS0xOC40IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMTY3LjVsNjQuOSA5OC44SDE4My4xbDY0LjktOTguOHpNNDk2IDI1NmMwIDEzNi45LTExMS4xIDI0OC0yNDggMjQ4UzAgMzkyLjkgMCAyNTYgMTExLjEgOCAyNDggOHMyNDggMTExLjEgMjQ4IDI0OHptLTk5LjggODIuN0wyNDggMTE1LjUgOTkuOCAzMzguN2gzMC40bDMzLjYtNTEuN2gxNjguNmwzMy42IDUxLjdoMzAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWR2ZXJzYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgyLjEgMzJIMjguN0M1LjggMzIgMCAzNy45IDAgNjAuOXYzOTAuMkMwIDQ3NC40IDUuOCA0ODAgMjguNyA0ODBoNDUzLjRjMjQuNCAwIDI5LjktNS4yIDI5LjktMjkuN1Y2Mi4yYzAtMjQuNi01LjQtMzAuMi0yOS45LTMwLjJ6TTE3OC40IDIyMC4zYy0yNy41LTIwLjItNzIuMS04LjctODQuMiAyMy40LTQuMyAxMS4xLTkuMyA5LjUtMTcuNSA4LjMtOS43LTEuNS0xNy4yLTMuMi0yMi41LTUuNS0yOC44LTExLjQgOC42LTU1LjMgMjQuOS02NC4zIDQxLjEtMjEuNCA4My40LTIyLjIgMTI1LjMtNC44IDQwLjkgMTYuOCAzNC41IDU5LjIgMzQuNSAxMjguNSAyLjcgMjUuOC00LjMgNTguMyA5LjMgODguOCAxLjkgNC40LjQgNy45LTIuNyAxMC43LTguNCA2LjctMzkuMyAyLjItNDYuNi03LjQtMS45LTIuMi0xLjgtMy42LTMuOS02LjItMy42LTMuOS03LjMtMi4yLTExLjkgMS01Ny40IDM2LjQtMTQwLjMgMjEuNC0xNDctNDMuMy0zLjEtMjkuMyAxMi40LTU3LjEgMzkuNi03MSAzOC4yLTE5LjUgMTEyLjItMTEuOCAxMTQtMzAuOSAxLjEtMTAuMi0xLjktMjAuMS0xMS4zLTI3LjN6bTI4Ni43IDIyMmMwIDE1LjEtMTEuMSA5LjktMTcuOCA5LjlINTIuNGMtNy40IDAtMTguMiA0LjgtMTcuOC0xMC43LjQtMTMuOSAxMC41LTkuMSAxNy4xLTkuMSAxMzIuMy0uNCAyNjQuNS0uNCAzOTYuOCAwIDYuOCAwIDE2LjYtNC40IDE2LjYgOS45em0zLjgtMzQwLjV2MjkxYzAgNS43LS43IDEzLjktOC4xIDEzLjktMTIuNC0uNC0yNy41IDcuMS0zNi4xLTUuNi01LjgtOC43LTcuOC00LTEyLjQtMS4yLTUzLjQgMjkuNy0xMjguMSA3LjEtMTQ0LjQtODUuMi02LjEtMzMuNC0uNy02Ny4xIDE1LjctMTAwIDExLjgtMjMuOSA1Ni45LTc2LjEgMTM2LjEtMzAuNXYtNzFjMC0yNi4yLS4xLTI2LjIgMjYtMjYuMiAzLjEgMCA2LjYuNCA5LjcgMCAxMC4xLS44IDEzLjYgNC40IDEzLjYgMTQuMy0uMS4yLS4xLjMtLjEuNXptLTUxLjUgMjMyLjNjLTE5LjUgNDcuNi03Mi45IDQzLjMtOTAgNS4yLTE1LjEtMzMuMy0xNS41LTY4LjIuNC0xMDEuNSAxNi4zLTM0LjEgNTkuNy0zNS43IDgxLjUtNC44IDIwLjYgMjguOCAxNC45IDg0LjYgOC4xIDEwMS4xem0tMjk0LjggMzUuM2MtNy41LTEuMy0zMy0zLjMtMzMuNy0yNy44LS40LTEzLjkgNy44LTIzIDE5LjgtMjUuOCAyNC40LTUuOSA0OS4zLTkuOSA3My43LTE0LjcgOC45LTIgNy40IDQuNCA3LjggOS41IDEuNCAzMy0yNi4xIDU5LjItNjcuNiA1OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZmZpbGlhdGV0aGVtZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTkuNyAyMzcuNEMxMDguNCAzMDguMyA0My4xIDM0OC4yIDE0IDMyNi42LTE1LjIgMzA0LjkgMi44IDIzMCA1NC4yIDE1OS4xYzUxLjMtNzAuOSAxMTYuNi0xMTAuOCAxNDUuNy04OS4yIDI5LjEgMjEuNiAxMS4xIDk2LjYtNDAuMiAxNjcuNXptMzUxLjItNTcuM0M0MzcuMSAzMDMuNSAzMTkgMzY3LjggMjQ2LjQgMzIzLjdjLTI1LTE1LjItNDEuMy00MS4yLTQ5LTczLjgtMzMuNiA2NC44LTkyLjggMTEzLjgtMTY0LjEgMTMzLjIgNDkuOCA1OS4zIDEyNC4xIDk2LjkgMjA3IDk2LjkgMTUwIDAgMjcxLjYtMTIzLjEgMjcxLjYtMjc0LjkuMS04LjUtLjMtMTYuOC0xLTI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBaXJibmIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDM3My4xMmMtMjUuMjQtMzEuNjctNDAuMDgtNTkuNDMtNDUtODMuMTgtMjIuNTUtODggMTEyLjYxLTg4IDkwLjA2IDAtNS40NSAyNC4yNS0yMC4yOSA1Mi00NSA4My4xOHptMTM4LjE1IDczLjIzYy00Mi4wNiAxOC4zMS04My42Ny0xMC44OC0xMTkuMy01MC40NyAxMDMuOS0xMzAuMDcgNDYuMTEtMjAwLTE4Ljg1LTIwMC01NC45MiAwLTg1LjE2IDQ2LjUxLTczLjI4IDEwMC41IDYuOTMgMjkuMTkgMjUuMjMgNjIuMzkgNTQuNDMgOTkuNS0zMi41MyAzNi4wNS02MC41NSA1Mi42OS04NS4xNSA1NC45Mi01MCA3LjQzLTg5LjExLTQxLjA2LTcxLjMtOTEuMDkgMTUuMS0zOS4xNiAxMTEuNzItMjMxLjE4IDExNS44Ny0yNDEuNTYgMTUuNzUtMzAuMDcgMjUuNTYtNTcuNCA1OS4zOC01Ny40IDMyLjM0IDAgNDMuNCAyNS45NCA2MC4zNyA1OS44NyAzNiA3MC42MiA4OS4zNSAxNzcuNDggMTE0Ljg0IDIzOS4wOSAxMy4xNyAzMy4wNy0xLjM3IDcxLjI5LTM3LjAxIDg2LjY0em00Ny0xMzYuMTJDMjgwLjI3IDM1LjkzIDI3My4xMyAzMiAyMjQgMzJjLTQ1LjUyIDAtNjQuODcgMzEuNjctODQuNjYgNzIuNzlDMzMuMTggMzE3LjEgMjIuODkgMzQ3LjE5IDIyIDM0OS44MS0zLjIyIDQxOS4xNCA0OC43NCA0ODAgMTExLjYzIDQ4MGMyMS43MSAwIDYwLjYxLTYuMDYgMTEyLjM3LTYyLjQgNTguNjggNjMuNzggMTAxLjI2IDYyLjQgMTEyLjM3IDYyLjQgNjIuODkuMDUgMTE0Ljg1LTYwLjg2IDg5LjYxLTEzMC4xOS4wMi0zLjg5LTE2LjgyLTM4LjktMTYuODItMzkuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsZ29saWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI5LjMgMTgyLjZjLTQ5LjMgMC04OS4yIDM5LjktODkuMiA4OS4yIDAgNDkuMyAzOS45IDg5LjIgODkuMiA4OS4yczg5LjItMzkuOSA4OS4yLTg5LjJjMC00OS4zLTQwLTg5LjItODkuMi04OS4yem02Mi43IDU2LjZsLTU4LjkgMzAuNmMtMS44LjktMy44LS40LTMuOC0yLjNWMjAxYzAtMS41IDEuMy0yLjcgMi43LTIuNiAyNi4yIDEgNDguOSAxNS43IDYxLjEgMzcuMS43IDEuMy4yIDMtMS4xIDMuN3pNMzg5LjEgMzJINTguOUMyNi40IDMyIDAgNTguNCAwIDkwLjlWNDIxYzAgMzIuNiAyNi40IDU5IDU4LjkgNTlIMzg5YzMyLjYgMCA1OC45LTI2LjQgNTguOS01OC45VjkwLjlDNDQ4IDU4LjQgNDIxLjYgMzIgMzg5LjEgMzJ6bS0yMDIuNiA4NC43YzAtMTAuOCA4LjctMTkuNSAxOS41LTE5LjVoNDUuM2MxMC44IDAgMTkuNSA4LjcgMTkuNSAxOS41djE1LjRjMCAxLjgtMS43IDMtMy4zIDIuNS0xMi4zLTMuNC0yNS4xLTUuMS0zOC4xLTUuMS0xMy41IDAtMjYuNyAxLjgtMzkuNCA1LjUtMS43LjUtMy40LS44LTMuNC0yLjV2LTE1Ljh6bS04NC40IDM3bDkuMi05LjJjNy42LTcuNiAxOS45LTcuNiAyNy41IDBsNy43IDcuN2MxLjEgMS4xIDEgMy0uMyA0LTYuMiA0LjUtMTIuMSA5LjQtMTcuNiAxNC45LTUuNCA1LjQtMTAuNCAxMS4zLTE0LjggMTcuNC0xIDEuMy0yLjkgMS41LTQgLjNsLTcuNy03LjdjLTcuNi03LjUtNy42LTE5LjggMC0yNy40em0xMjcuMiAyNDQuOGMtNzAgMC0xMjYuNi01Ni43LTEyNi42LTEyNi42czU2LjctMTI2LjYgMTI2LjYtMTI2LjZjNzAgMCAxMjYuNiA1Ni42IDEyNi42IDEyNi42IDAgNjkuOC01Ni43IDEyNi42LTEyNi42IDEyNi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGlwYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc3Ljc0IDMySDcwLjI2QzMxLjQxIDMyIDAgNjMuNDEgMCAxMDIuMjZ2MzA3LjQ4QzAgNDQ4LjU5IDMxLjQxIDQ4MCA3MC4yNiA0ODBoMzA3LjQ4YzM4LjUyIDAgNjkuNzYtMzEuMDggNzAuMjYtNjkuNi00NS45Ni0yNS42Mi0xMTAuNTktNjAuMzQtMTcxLjYtODguNDQtMzIuMDcgNDMuOTctODQuMTQgODEtMTQ4LjYyIDgxLTcwLjU5IDAtOTMuNzMtNDUuMy05Ny4wNC03Ni4zNy0zLjk3LTM5LjAxIDE0Ljg4LTgxLjUgOTkuNTItODEuNSAzNS4zOCAwIDc5LjM1IDEwLjI1IDEyNy4xMyAyNC45NiAxNi41My0zMC4wOSAyNi40NS02MC4zNCAyNi40NS02MC4zNGgtMTc4LjJ2LTE2LjdoOTIuMDh2LTMxLjI0SDg4LjI4di0xOS4wMWgxMDkuNDRWOTIuMzRoNTAuOTJ2NTAuNDJoMTA5LjQ0djE5LjAxSDI0OC42M3YzMS4yNGg4OC43N3MtMTUuMjEgNDYuNjItMzguMzUgOTAuOTJjNDguOTMgMTYuNyAxMDAuMDEgMzYuMDQgMTQ4LjYyIDUyLjc0VjEwMi4yNkM0NDcuODMgNjMuNTcgNDE2LjQzIDMyIDM3Ny43NCAzMnpNNDcuMjggMzIyLjk1Yy45OSAyMC4xNyAxMC4yNSA1My43MyA2OS45MyA1My43MyA1Mi4wNyAwIDkyLjU4LTM5LjY4IDExNy44Ny03Mi45LTQ0LjYzLTE4LjY4LTg0LjQ4LTMxLjQxLTEwOS40NC0zMS40MS02Ny40NSAwLTc5LjM1IDMzLjA2LTc4LjM2IDUwLjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWF6b25QYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMzI1LjNjMi4zLTQuMiA1LjItNC45IDkuNy0yLjUgMTAuNCA1LjYgMjAuNiAxMS40IDMxLjIgMTYuN2E1OTUuODggNTk1Ljg4IDAgMCAwIDEyNy40IDQ2LjMgNjE2LjYxIDYxNi42MSAwIDAgMCA2My4yIDExLjggNjAzLjMzIDYwMy4zMyAwIDAgMCA5NSA1LjJjMTcuNC0uNCAzNC44LTEuOCA1Mi4xLTMuOGE2MDMuNjYgNjAzLjY2IDAgMCAwIDE2My4zLTQyLjhjMi45LTEuMiA1LjktMiA5LjEtMS4yIDYuNyAxLjggOSA5IDQuMSAxMy45YTcwIDcwIDAgMCAxLTkuNiA3LjRjLTMwLjcgMjEuMS02NC4yIDM2LjQtOTkuNiA0Ny45YTQ3My4zMSA0NzMuMzEgMCAwIDEtNzUuMSAxNy42IDQzMSA0MzEgMCAwIDEtNTMuMiA0LjggMjEuMyAyMS4zIDAgMCAwLTIuNS4zSDMwOGEyMS4zIDIxLjMgMCAwIDAtMi41LS4zYy0zLjYtLjItNy4yLS4zLTEwLjctLjRhNDI2LjMgNDI2LjMgMCAwIDEtNTAuNC01LjNBNDQ4LjQgNDQ4LjQgMCAwIDEgMTY0IDQyMGE0NDMuMzMgNDQzLjMzIDAgMCAxLTE0NS42LTg3Yy0xLjgtMS42LTMtMy44LTQuNC01Ljd6TTE3MiA2NS4xbC00LjMuNmE4MC45MiA4MC45MiAwIDAgMC0zOCAxNS4xYy0yLjQgMS43LTQuNiAzLjUtNy4xIDUuNGE0LjI5IDQuMjkgMCAwIDEtLjQtMS40Yy0uNC0yLjctLjgtNS41LTEuMy04LjItLjctNC42LTMtNi42LTcuNi02LjZoLTExLjVjLTYuOSAwLTguMiAxLjMtOC4yIDguMnYyMDkuM2MwIDEgMCAyIC4xIDMgLjIgMyAyIDQuOSA0LjkgNSA3IC4xIDE0LjEuMSAyMS4xIDAgMi45IDAgNC43LTIgNS01IC4xLTEgLjEtMiAuMS0zdi03Mi40YzEuMS45IDEuNyAxLjQgMi4yIDEuOSAxNy45IDE0LjkgMzguNSAxOS44IDYxIDE1LjQgMjAuNC00IDM0LjYtMTYuNSA0My44LTM0LjkgNy0xMy45IDkuOS0yOC43IDEwLjMtNDQuMS41LTE3LjEtMS4yLTMzLjktOC4xLTQ5LjgtOC41LTE5LjYtMjIuNi0zMi41LTQzLjktMzYuOS0zLjItLjctNi41LTEtOS44LTEuNS0yLjgtLjEtNS41LS4xLTguMy0uMXpNMTI0LjYgMTA3YTMuNDggMy40OCAwIDAgMSAxLjctMy4zYzEzLjctOS41IDI4LjgtMTQuNSA0NS42LTEzLjIgMTQuOSAxLjEgMjcuMSA4LjQgMzMuNSAyNS45IDMuOSAxMC43IDQuOSAyMS44IDQuOSAzMyAwIDEwLjQtLjggMjAuNi00IDMwLjYtNi44IDIxLjMtMjIuNCAyOS40LTQyLjYgMjguNS0xNC0uNi0yNi4yLTYtMzcuNC0xMy45YTMuNTcgMy41NyAwIDAgMS0xLjctMy4zYy4xLTE0LjEgMC0yOC4xIDAtNDIuMnMuMS0yOCAwLTQyLjF6bTIwNS43LTQxLjljLTEgLjEtMiAuMy0yLjkuNGExNDggMTQ4IDAgMCAwLTI4LjkgNC4xYy02LjEgMS42LTEyIDMuOC0xNy45IDUuOC0zLjYgMS4yLTUuNCAzLjgtNS4zIDcuNy4xIDMuMy0uMSA2LjYgMCA5LjkuMSA0LjggMi4xIDYuMSA2LjggNC45IDcuOC0yIDE1LjYtNC4yIDIzLjUtNS43IDEyLjMtMi4zIDI0LjctMy4zIDM3LjItMS40IDYuNSAxIDEyLjYgMi45IDE2LjggOC40IDMuNyA0LjggNS4xIDEwLjUgNS4zIDE2LjQuMyA4LjMuMiAxNi42LjMgMjQuOWE3Ljg0IDcuODQgMCAwIDEtLjIgMS40Yy0uNS0uMS0uOSAwLTEuMy0uMWExODAuNTYgMTgwLjU2IDAgMCAwLTMyLTQuOWMtMTEuMy0uNi0yMi41LjEtMzMuMyAzLjktMTIuOSA0LjUtMjMuMyAxMi4zLTI5LjQgMjQuOS00LjcgOS44LTUuNCAyMC4yLTMuOSAzMC43IDIgMTQgOSAyNC44IDIxLjQgMzEuNyAxMS45IDYuNiAyNC44IDcuNCAzNy45IDUuNCAxNS4xLTIuMyAyOC41LTguNyA0MC4zLTE4LjRhNy4zNiA3LjM2IDAgMCAxIDEuNi0xLjFjLjYgMy44IDEuMSA3LjQgMS44IDExIC42IDMuMSAyLjUgNS4xIDUuNCA1LjIgNS40LjEgMTAuOS4xIDE2LjMgMGE0Ljg0IDQuODQgMCAwIDAgNC44LTQuNyAyNi4yIDI2LjIgMCAwIDAgLjEtMi44di0xMDZhODAgODAgMCAwIDAtLjktMTIuOWMtMS45LTEyLjktNy40LTIzLjUtMTktMzAuNC02LjctNC0xNC4xLTYtMjEuOC03LjEtMy42LS41LTcuMi0uOC0xMC44LTEuMy0zLjkuMS03LjkuMS0xMS45LjF6bTM1IDEyNy43YTMuMzMgMy4zMyAwIDAgMS0xLjUgM2MtMTEuMiA4LjEtMjMuNSAxMy41LTM3LjQgMTQuOS01LjcuNi0xMS40LjQtMTYuOC0xLjhhMjAuMDggMjAuMDggMCAwIDEtMTIuNC0xMy4zIDMyLjkgMzIuOSAwIDAgMS0uMS0xOS40YzIuNS04LjMgOC40LTEzIDE2LjQtMTUuNmE2MS4zMyA2MS4zMyAwIDAgMSAyNC44LTIuMmM4LjQuNyAxNi42IDIuMyAyNSAzLjQgMS42LjIgMi4xIDEgMi4xIDIuNi0uMSA0LjggMCA5LjUgMCAxNC4zcy0uMiA5LjQtLjEgMTQuMXptMjU5LjkgMTI5LjRjLTEtNS00LjgtNi45LTkuMS04LjNhODguNDIgODguNDIgMCAwIDAtMjEtMy45IDE0Ny4zMiAxNDcuMzIgMCAwIDAtMzkuMiAxLjljLTE0LjMgMi43LTI3LjkgNy4zLTQwIDE1LjZhMTMuNzUgMTMuNzUgMCAwIDAtMy43IDMuNSA1LjExIDUuMTEgMCAwIDAtLjUgNGMuNCAxLjUgMi4xIDEuOSAzLjYgMS44YTE2LjIgMTYuMiAwIDAgMCAyLjItLjFjNy44LS44IDE1LjUtMS43IDIzLjMtMi41IDExLjQtMS4xIDIyLjktMS44IDM0LjMtLjlhNzEuNjQgNzEuNjQgMCAwIDEgMTQuNCAyLjdjNS4xIDEuNCA3LjQgNS4yIDcuNiAxMC40LjQgOC0xLjQgMTUuNy0zLjUgMjMuMy00LjEgMTUuNC0xMCAzMC4zLTE1LjggNDUuMWExNy42IDE3LjYgMCAwIDAtMSAzYy0uNSAyLjkgMS4yIDQuOCA0LjEgNC4xYTEwLjU2IDEwLjU2IDAgMCAwIDQuOC0yLjUgMTQ1LjkxIDE0NS45MSAwIDAgMCAxMi43LTEzLjRjMTIuOC0xNi40IDIwLjMtMzUuMyAyNC43LTU1LjYuOC0zLjYgMS40LTcuMyAyLjEtMTAuOXYtMTcuM3pNNDkzLjEgMTk5cS0xOS4zNS01My41NS0zOC43LTEwNy4yYy0yLTUuNy00LjItMTEuMy02LjMtMTYuOS0xLjEtMi45LTMuMi00LjgtNi40LTQuOC03LjYtLjEtMTUuMi0uMi0yMi45LS4xLTIuNSAwLTMuNyAyLTMuMiA0LjVhNDMuMSA0My4xIDAgMCAwIDEuOSA2LjFxMjkuNCA3Mi43NSA1OS4xIDE0NS41YzEuNyA0LjEgMi4xIDcuNi4yIDExLjgtMy4zIDcuMy01LjkgMTUtOS4zIDIyLjMtMyA2LjUtOCAxMS40LTE1LjIgMTMuM2E0Mi4xMyA0Mi4xMyAwIDAgMS0xNS40IDEuMWMtMi41LS4yLTUtLjgtNy41LTEtMy40LS4yLTUuMSAxLjMtNS4yIDQuOHEtLjE1IDUgMCA5LjljLjEgNS41IDIgOCA3LjQgOC45YTEwOC4xOCAxMDguMTggMCAwIDAgMTYuOSAyYzE3LjEuNCAzMC43LTYuNSAzOS41LTIxLjRhMTMxLjYzIDEzMS42MyAwIDAgMCA5LjItMTguNHEzNS41NS04OS43IDcwLjYtMTc5LjZhMjYuNjIgMjYuNjIgMCAwIDAgMS42LTUuNWMuNC0yLjgtLjktNC40LTMuNy00LjQtNi42LS4xLTEzLjMgMC0xOS45IDBhNy41NCA3LjU0IDAgMCAwLTcuNyA1LjJjLS41IDEuNC0xLjEgMi43LTEuNiA0LjFsLTM0LjggMTAwYy0yLjUgNy4yLTUuMSAxNC41LTcuNyAyMi4yLS40LTEuMS0uNi0xLjctLjktMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWF6b24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU3LjIgMTYyLjdjLTQ4LjcgMS44LTE2OS41IDE1LjUtMTY5LjUgMTE3LjUgMCAxMDkuNSAxMzguMyAxMTQgMTgzLjUgNDMuMiA2LjUgMTAuMiAzNS40IDM3LjUgNDUuMyA0Ni44bDU2LjgtNTZTMzQxIDI4OC45IDM0MSAyNjEuNFYxMTQuM0MzNDEgODkgMzE2LjUgMzIgMjI4LjcgMzIgMTQwLjcgMzIgOTQgODcgOTQgMTM2LjNsNzMuNSA2LjhjMTYuMy00OS41IDU0LjItNDkuNSA1NC4yLTQ5LjUgNDAuNy0uMSAzNS41IDI5LjggMzUuNSA2OS4xem0wIDg2LjhjMCA4MC04NC4yIDY4LTg0LjIgMTcuMiAwLTQ3LjIgNTAuNS01Ni43IDg0LjItNTcuOHY0MC42em0xMzYgMTYzLjVjLTcuNyAxMC03MCA2Ny0xNzQuNSA2N1MzNC4yIDQwOC41IDkuNyAzNzljLTYuOC03LjcgMS0xMS4zIDUuNS04LjNDODguNSA0MTUuMiAyMDMgNDg4LjUgMzg3LjcgNDAxYzcuNS0zLjcgMTMuMyAyIDUuNSAxMnptMzkuOCAyLjJjLTYuNSAxNS44LTE2IDI2LjgtMjEuMiAzMS01LjUgNC41LTkuNSAyLjctNi41LTMuOHMxOS4zLTQ2LjUgMTIuNy01NWMtNi41LTguMy0zNy00LjMtNDgtMy4yLTEwLjggMS0xMyAyLTE0LS4zLTIuMy01LjcgMjEuNy0xNS41IDM3LjUtMTcuNSAxNS43LTEuOCA0MS0uOCA0NiA1LjcgMy43IDUuMSAwIDI3LjEtNi41IDQzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFtaWxpYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAuMSAzMmMtNjEuOSAwLTEzMS41IDE2LjktMTg0LjIgNTUuNC01LjEgMy4xLTkuMSA5LjItNy4yIDE5LjQgMS4xIDUuMSA1LjEgMjcuNCAxMC4yIDM5LjYgNC4xIDEwLjIgMTQuMiAxMC4yIDIwLjMgNi4xIDMyLjUtMjIuMyA5Ni41LTQ3LjcgMTUyLjMtNDcuNyA1Ny45IDAgNTguOSAyOC40IDU4LjkgNzMuMXYzOC41QzIwMyAyMjcuNyA3OC4yIDI1MSA0Ni43IDI2NC4yIDExLjIgMjgwLjUgMTYuMyAzNTcuNyAxNi4zIDM3NnMxNS4yIDEwNCAxMjQuOSAxMDRjNDcuOCAwIDExMy43LTIwLjcgMTUzLjMtNDIuMXYyNS40YzAgMyAyLjEgOC4yIDYuMSA5LjEgMy4xIDEgNTAuNyAyIDU5LjkgMnM2Mi41LjMgNjYuNS0uN2M0LjEtMSA1LjEtNi4xIDUuMS05LjFWMTY4Yy0uMS04MC4zLTU3LjktMTM2LTE5Mi0xMzZ6bTUwLjIgMzQ4Yy0yMS40IDEzLjItNDguNyAyNC40LTc5LjEgMjQuNC01Mi44IDAtNTguOS0zMy41LTU5LTQ0LjcgMC0xMi4yLTMtNDIuNyAxOC4zLTUyLjkgMjQuMy0xMy4yIDc1LjEtMjkuNCAxMTkuOC0zMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMC41NSwzMDEuOTNhMjQsMjQsMCwxLDEsMjQtMjQsMjQsMjQsMCwwLDEtMjQsMjRtLTI2NS4xLDBhMjQsMjQsMCwxLDEsMjQtMjQsMjQsMjQsMCwwLDEtMjQsMjRtMjczLjctMTQ0LjQ4LDQ3Ljk0LTgzYTEwLDEwLDAsMSwwLTE3LjI3LTEwaDBsLTQ4LjU0LDg0LjA3YTMwMS4yNSwzMDEuMjUsMCwwLDAtMjQ2LjU2LDBMMTE2LjE4LDY0LjQ1YTEwLDEwLDAsMSwwLTE3LjI3LDEwaDBsNDcuOTQsODNDNjQuNTMsMjAyLjIyLDguMjQsMjg1LjU1LDAsMzg0SDU3NmMtOC4yNC05OC40NS02NC41NC0xODEuNzgtMTQ2Ljg1LTIyNi41NVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdlbGxpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ3LjEgMjE1LjRjMTEuNy0zMi42IDQ1LjQtMTI2LjkgNDUuNC0xNTcuMSAwLTI2LjYtMTUuNy00OC45LTQzLjctNDguOS00NC42IDAtODQuNiAxMzEuNy05Ny4xIDE2My4xQzI0MiAxNDQgMTk2LjYgMCAxNTYuNiAwYy0zMS4xIDAtNDUuNyAyMi45LTQ1LjcgNTEuNyAwIDM1LjMgMzQuMiAxMjYuOCA0Ni42IDE2Mi02LjMtMi4zLTEzLjEtNC4zLTIwLTQuMy0yMy40IDAtNDguMyAyOS4xLTQ4LjMgNTIuNiAwIDguOSA0LjkgMjEuNCA4IDI5LjctMzYuOSAxMC01MS4xIDM0LjYtNTEuMSA3MS43QzQ2IDQzNS42IDExNC40IDUxMiAyMTAuNiA1MTJjMTE4IDAgMTkxLjQtODguNiAxOTEuNC0yMDIuOSAwLTQzLjEtNi45LTgyLTU0LjktOTMuN3pNMzExLjcgMTA4YzQtMTIuMyAyMS4xLTY0LjMgMzcuMS02NC4zIDguNiAwIDEwLjkgOC45IDEwLjkgMTYgMCAxOS4xLTM4LjYgMTI0LjYtNDcuMSAxNDhsLTM0LTYgMzMuMS05My43ek0xNDIuMyA0OC4zYzAtMTEuOSAxNC41LTQ1LjcgNDYuMyA0Ny4xbDM0LjYgMTAwLjNjLTE1LjYtMS4zLTI3LjctMy0zNS40IDEuNC0xMC45LTI4LjgtNDUuNS0xMTkuNy00NS41LTE0OC44ek0xNDAgMjQ0YzI5LjMgMCA2Ny4xIDk0LjYgNjcuMSAxMDcuNCAwIDUuMS00LjkgMTEuNC0xMC42IDExLjQtMjAuOSAwLTc2LjktNzYuOS03Ni45LTk3LjcuMS03LjcgMTIuNy0yMS4xIDIwLjQtMjEuMXptMTg0LjMgMTg2LjNjLTI5LjEgMzItNjYuMyA0OC42LTEwOS43IDQ4LjYtNTkuNCAwLTEwNi4zLTMyLjYtMTI4LjktODguMy0xNy4xLTQzLjQgMy44LTY4LjMgMjAuNi02OC4zIDExLjQgMCA1NC4zIDYwLjMgNTQuMyA3My4xIDAgNC45LTcuNyA4LjMtMTEuNyA4LjMtMTYuMSAwLTIyLjQtMTUuNS01MS4xLTUxLjQtMjkuNyAyOS43IDIwLjUgODYuOSA1OC4zIDg2LjkgMjYuMSAwIDQzLjEtMjQuMiAzOC00MiAzLjcgMCA4LjMuMyAxMS43LS42IDEuMSAyNy4xIDkuMSA1OS40IDQxLjcgNjEuNyAwLS45IDItNy4xIDItNy40IDAtMTcuNC0xMC42LTMyLjYtMTAuNi01MC4zIDAtMjguMyAyMS43LTU1LjcgNDMuNy03MS43IDgtNiAxNy43LTkuNyAyNy4xLTEzLjEgOS43LTMuNyAyMC04IDI3LjQtMTUuNC0xLjEtMTEuMi01LjctMjEuMS0xNi45LTIxLjEtMjcuNyAwLTEyMC42IDQtMTIwLjYtMzkuNyAwLTYuNy4xLTEzLjEgMTcuNC0xMy4xIDMyLjMgMCAxMTQuMyA4IDEzOC4zIDI5LjEgMTguMSAxNi4xIDI0LjMgMTEzLjItMzEgMTc0Ljd6bS05OC42LTEyNmM5LjcgMy4xIDE5LjcgNCAyOS43IDYtNy40IDUuNC0xNCAxMi0yMC4zIDE5LjEtMi44LTguNS02LjItMTYuOC05LjQtMjUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5ncnljcmVhdGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjM4LjJsLTMuMiAyOC4yLTM0LjUgMi4zLTIgMTguMSAzNC41LTIuMy0zLjIgMjguMi0zNC40IDIuMi0yLjMgMjAuMSAzNC40LTIuMi0zIDI2LjEtNjQuNyA0LjEgMTIuNy0xMTMuMkw1MjcgMzY1LjJsLTMxLjkgMi0yMy44LTExNy44IDMwLjMtMiAxMy42IDc5LjQgMzEuNy04Mi40IDkzLjEtNi4yek00MjYuOCAzNzEuNWwyOC4zLTEuOEw0NjggMjQ5LjZsLTI4LjQgMS45LTEyLjggMTIwek0xNjIgMzg4LjFsLTE5LjQtMzYtMy41IDM3LjQtMjguMiAxLjcgMi43LTI5LjFjLTExIDE4LTMyIDM0LjMtNTYuOSAzNS44QzIzLjkgMzk5LjktMyAzNzcgLjMgMzM5LjdjMi42LTI5LjMgMjYuNy02Mi44IDY3LjUtNjUuNCAzNy43LTIuNCA0Ny42IDIzLjIgNTEuMyAyOC44bDIuOC0zMC44IDM4LjktMi41YzIwLjEtMS4zIDM4LjcgMy43IDQyLjUgMjMuN2wyLjYtMjYuNiA2NC44LTQuMi0yLjcgMjcuOS0zNi40IDIuNC0xLjcgMTcuOSAzNi40LTIuMy0yLjcgMjcuOS0zNi40IDIuMy0xLjkgMTkuOSAzNi4zLTIuMy0yLjEgMjAuOCA1NS0xMTcuMiAyMy44LTEuNkwzNzAuNCAzNjlsOC45LTg1LjYtMjIuMyAxLjQgMi45LTI3LjkgNzUtNC45LTMgMjgtMjQuMyAxLjYtOS43IDkxLjktNTggMy43LTQuMy0xNS42LTM5LjQgMi41LTggMTYuMy0xMjYuMiA3Ljd6bS00NC4zLTcwLjJsLTI2LjQgMS43Qzg0LjYgMzA3LjIgNzYuOSAzMDMgNjUgMzAzLjhjLTE5IDEuMi0zMy4zIDE3LjUtMzQuNiAzMy4zLTEuNCAxNiA3LjMgMzIuNSAyOC43IDMxLjIgMTIuOC0uOCAyMS4zLTguNiAyOC45LTE4LjlsMjctMS43IDIuNy0yOS44em01Ni4xLTcuN2MxLjItMTIuOS03LjYtMTMuNi0yNi4xLTEyLjRsLTIuNyAyOC41YzE0LjItLjkgMjcuNS0yLjEgMjguOC0xNi4xem0yMS4xIDcwLjhsNS44LTYwYy01IDEzLjUtMTQuNyAyMS4xLTI3LjkgMjYuNmwyMi4xIDMzLjR6bTEzNS40LTQ1bC03LjktMzcuOC0xNS44IDM5LjMgMjMuNy0xLjV6bS0xNzAuMS03NC42bC00LjMtMTcuNS0zOS42IDIuNi04LjEgMTguMi0zMS45IDIuMSA1Ny0xMjEuOSAyMy45LTEuNiAzMC43IDEwMiA5LjktMTA0LjcgMjctMS44IDM3LjggNjMuNiA2LjUtNjYuNiAyOC41LTEuOS00IDQxLjJjNy40LTEzLjUgMjIuOS00NC43IDYzLjYtNDcuNSA0MC41LTIuOCA1Mi40IDI5LjMgNTMuNCAzMC4zbDMuMy0zMiAzOS4zLTIuN2MxMi43LS45IDI3LjguMyAzNi4zIDkuN2wtNC40LTExLjkgMzIuMi0yLjIgMTIuOSA0My4yIDIzLTQ1LjcgMzEtMi4yLTQzLjYgNzguNC00LjggNDQuMy0yOC40IDEuOSA0LjgtNDQuMy0xNS44LTQzYzEgMjIuMy05LjIgNDAuMS0zMiA0OS42bDI1LjIgMzguOC0zNi40IDIuNC0xOS4yLTM2LjgtNCAzOC4zLTI4LjQgMS45IDMuMy0zMS41Yy02LjcgOS4zLTE5LjcgMzUuNC01OS42IDM4LTI2LjIgMS43LTQ1LjYtMTAuMy01NS40LTM5LjJsLTQgNDAuMy0yNSAxLjYtMzcuNi02My4zLTYuMyA2Ni4yLTU2LjggMy43em0yNzYuNi04Mi4xYzEwLjItLjcgMTcuNS0yLjEgMjEuNi00LjMgNC41LTIuNCA3LTYuNCA3LjYtMTIuMS42LTUuMy0uNi04LjgtMy40LTEwLjQtMy42LTIuMS0xMC42LTIuOC0yMi45LTJsLTIuOSAyOC44ek0zMjcuNyAyMTRjNS42IDUuOSAxMi43IDguNSAyMS4zIDcuOSA0LjctLjMgOS4xLTEuOCAxMy4zLTQuMSA1LjUtMyAxMC42LTggMTUuMS0xNC4zbC0zNC4yIDIuMyAyLjQtMjMuOSA2My4xLTQuMyAxLjItMTItMzEuMiAyLjFjLTQuMS0zLjctNy44LTYuNi0xMS4xLTguMS00LTEuNy04LjEtMi44LTEyLjItMi41LTggLjUtMTUuMyAzLjYtMjIgOS4yLTcuNyA2LjQtMTIgMTQuNS0xMi45IDI0LjQtMS4xIDkuNiAxLjQgMTcuMyA3LjIgMjMuM3ptLTIwMS4zIDguMmwyMy44LTEuNi04LjMtMzcuNi0xNS41IDM5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3VsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg1LjcgMjY4LjFoNzYuMmwtMzguMS05MS42LTM4LjEgOTEuNnpNMjIzLjggMzJMMTYgMTA2LjRsMzEuOCAyNzUuNyAxNzYgOTcuOSAxNzYtOTcuOSAzMS44LTI3NS43ek0zNTQgMzczLjhoLTQ4LjZsLTI2LjItNjUuNEgxNjguNmwtMjYuMiA2NS40SDkzLjdMMjIzLjggODEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwU3RvcmVJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTI3IDM4NC41Yy01LjUgOS42LTE3LjggMTIuOC0yNy4zIDcuMy05LjYtNS41LTEyLjgtMTcuOC03LjMtMjcuM2wxNC4zLTI0LjdjMTYuMS00LjkgMjkuMy0xLjEgMzkuNiAxMS40TDEyNyAzODQuNXptMTM4LjktNTMuOUg4NGMtMTEgMC0yMC05LTIwLTIwczktMjAgMjAtMjBoNTFsNjUuNC0xMTMuMi0yMC41LTM1LjRjLTUuNS05LjYtMi4yLTIxLjggNy4zLTI3LjMgOS42LTUuNSAyMS44LTIuMiAyNy4zIDcuM2w4LjkgMTUuNCA4LjktMTUuNGM1LjUtOS42IDE3LjgtMTIuOCAyNy4zLTcuMyA5LjYgNS41IDEyLjggMTcuOCA3LjMgMjcuM2wtODUuOCAxNDguNmg2Mi4xYzIwLjIgMCAzMS41IDIzLjcgMjIuNyA0MHptOTguMSAwaC0yOWwxOS42IDMzLjljNS41IDkuNiAyLjIgMjEuOC03LjMgMjcuMy05LjYgNS41LTIxLjggMi4yLTI3LjMtNy4zLTMyLjktNTYuOS01Ny41LTk5LjctNzQtMTI4LjEtMTYuNy0yOS00LjgtNTggNy4xLTY3LjggMTMuMSAyMi43IDMyLjcgNTYuNyA1OC45IDEwMmg1MmMxMSAwIDIwIDkgMjAgMjAgMCAxMS4xLTkgMjAtMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcFN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS45IDEyMC45bDkuMS0xNS43YzUuNi05LjggMTguMS0xMy4xIDI3LjktNy41IDkuOCA1LjYgMTMuMSAxOC4xIDcuNSAyNy45bC04Ny41IDE1MS41aDYzLjNjMjAuNSAwIDMyIDI0LjEgMjMuMSA0MC44SDExMy44Yy0xMS4zIDAtMjAuNC05LjEtMjAuNC0yMC40IDAtMTEuMyA5LjEtMjAuNCAyMC40LTIwLjRoNTJsNjYuNi0xMTUuNC0yMC44LTM2LjFjLTUuNi05LjgtMi4zLTIyLjIgNy41LTI3LjkgOS44LTUuNiAyMi4yLTIuMyAyNy45IDcuNWw4LjkgMTUuN3ptLTc4LjcgMjE4bC0xOS42IDM0Yy01LjYgOS44LTE4LjEgMTMuMS0yNy45IDcuNS05LjgtNS42LTEzLjEtMTguMS03LjUtMjcuOWwxNC42LTI1LjJjMTYuNC01LjEgMjkuOC0xLjIgNDAuNCAxMS42em0xNjguOS02MS43aDUzLjFjMTEuMyAwIDIwLjQgOS4xIDIwLjQgMjAuNCAwIDExLjMtOS4xIDIwLjQtMjAuNCAyMC40aC0yOS41bDE5LjkgMzQuNWM1LjYgOS44IDIuMyAyMi4yLTcuNSAyNy45LTkuOCA1LjYtMjIuMiAyLjMtMjcuOS03LjUtMzMuNS01OC4xLTU4LjctMTAxLjYtNzUuNC0xMzAuNi0xNy4xLTI5LjUtNC45LTU5LjEgNy4yLTY5LjEgMTMuNCAyMyAzMy40IDU3LjcgNjAuMSAxMDR6TTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTIxNiAyNDhjMCAxMTguNy05Ni4xIDIxNi0yMTYgMjE2LTExOC43IDAtMjE2LTk2LjEtMjE2LTIxNiAwLTExOC43IDk2LjEtMjE2IDIxNi0yMTYgMTE4LjcgMCAyMTYgOTYuMSAyMTYgMjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi4xIDIzOS4xYzIyLjIgMCAyOSAyLjggMzMuNSAxNC42aC44di0yMi45YzAtMTEuMy00LjgtMTUuNC0xNy45LTE1LjQtMTEuMyAwLTE0LjQgMi41LTE1LjEgMTIuOEg0LjhjLjMtMTMuOSAxLjUtMTkuMSA1LjgtMjQuNEMxNy45IDE5NSAyOS41IDE5MiA1Ni43IDE5MmMzMyAwIDQ3LjEgNSA1My45IDE4LjkgMiA0LjMgNCAxNS42IDQgMjMuN3Y3Ni4zSDc2LjNsMS4zLTE5LjFoLTFjLTUuMyAxNS42LTEzLjYgMjAuNC0zNS41IDIwLjQtMzAuMyAwLTQxLjEtMTAuMS00MS4xLTM3LjMgMC0yNS4yIDEyLjMtMzUuOCA0Mi4xLTM1Ljh6bTE3LjEgNDguMWMxMy4xIDAgMTYuOS0zIDE2LjktMTMuNCAwLTkuMS00LjMtMTEuNi0xOS42LTExLjYtMTMuMSAwLTE3LjkgMy0xNy45IDEyLjEtLjEgMTAuNCAzLjcgMTIuOSAyMC42IDEyLjl6bTc3LjgtOTQuOWgzOC4zbC0xLjUgMjAuNmguOGM5LjEtMTcuMSAxNS45LTIwLjkgMzcuNS0yMC45IDE0LjQgMCAyNC43IDMgMzEuNSA5LjEgOS44IDguNiAxMi44IDIwLjQgMTIuOCA0OC4xIDAgMzAtMyA0My4xLTEyLjEgNTIuOS02LjggNy4zLTE2LjQgMTAuMS0zMy4yIDEwLjEtMjAuNCAwLTI5LjItNS41LTMzLjgtMjEuMmgtLjh2NzAuM0gxMzd2LTE2OXptODAuOSA2MC43YzAtMjcuNS0zLjMtMzIuNS0yMC43LTMyLjUtMTYuOSAwLTIwLjcgNS0yMC43IDI4LjcgMCAyOCAzLjUgMzMuNSAyMS4yIDMzLjUgMTYuNCAwIDIwLjItNS42IDIwLjItMjkuN3ptNTcuOS02MC43aDM4LjNsLTEuNSAyMC42aC44YzkuMS0xNy4xIDE1LjktMjAuOSAzNy41LTIwLjkgMTQuNCAwIDI0LjcgMyAzMS41IDkuMSA5LjggOC42IDEyLjggMjAuNCAxMi44IDQ4LjEgMCAzMC0zIDQzLjEtMTIuMSA1Mi45LTYuOCA3LjMtMTYuNCAxMC4xLTMzLjMgMTAuMS0yMC40IDAtMjkuMi01LjUtMzMuOC0yMS4yaC0uOHY3MC4zaC0zOS41di0xNjl6bTgwLjkgNjAuN2MwLTI3LjUtMy4zLTMyLjUtMjAuNy0zMi41LTE2LjkgMC0yMC43IDUtMjAuNyAyOC43IDAgMjggMy41IDMzLjUgMjEuMiAzMy41IDE2LjQgMCAyMC4yLTUuNiAyMC4yLTI5Ljd6bTUzLjgtMy44YzAtMjUuNCAzLjMtMzcuOCAxMi4zLTQ1LjggOC44LTguMSAyMi4yLTExLjMgNDUuMS0xMS4zIDQyLjggMCA1NS43IDEyLjggNTUuNyA1NS43djExLjFoLTc1LjNjLS4zIDItLjMgNC0uMyA0LjggMCAxNi45IDQuNSAyMS45IDIwLjEgMjEuOSAxMy45IDAgMTcuOS0zIDE3LjktMTMuOWgzNy41djIuM2MwIDkuOC0yLjUgMTguOS02LjggMjQuNy03LjMgOS44LTE5LjYgMTMuNi00NC4zIDEzLjYtMjcuNSAwLTQxLjYtMy4zLTUwLjYtMTIuMy04LjUtOC41LTExLjMtMjEuMy0xMS4zLTUwLjh6bTc2LjQtMTEuNmMtLjMtMS44LS4zLTMuMy0uMy0zLjggMC0xMi4zLTMuMy0xNC42LTE5LjYtMTQuNi0xNC40IDAtMTcuMSAzLTE4LjEgMTUuMWwtLjMgMy4zaDM4LjN6bTU1LjYtNDUuM2gzOC4zbC0xLjggMTkuOWguN2M2LjgtMTQuOSAxNC40LTIwLjIgMjkuNy0yMC4yIDEwLjggMCAxOS4xIDMuMyAyMy40IDkuMyA1LjMgNy4zIDYuOCAxNC40IDYuOCAzNCAwIDEuNSAwIDUgLjIgOS4zaC0zNWMuMy0xLjguMy0zLjMuMy00IDAtMTUuNC0yLTE5LjQtMTAuMy0xOS40LTYuMyAwLTEwLjggMy4zLTEzLjEgOS4zLTEgMy0xIDQuMy0xIDEyLjN2NjhoLTM4LjNWMTkyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcGxlUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNi45IDE1OC41Yy03LjUgOC45LTE5LjUgMTUuOS0zMS41IDE0LjktMS41LTEyIDQuNC0yNC44IDExLjMtMzIuNiA3LjUtOS4xIDIwLjYtMTUuNiAzMS4zLTE2LjEgMS4yIDEyLjQtMy43IDI0LjctMTEuMSAzMy44bTEwLjkgMTcuMmMtMTcuNC0xLTMyLjMgOS45LTQwLjUgOS45LTguNCAwLTIxLTkuNC0zNC44LTkuMS0xNy45LjMtMzQuNSAxMC40LTQzLjYgMjYuNS0xOC44IDMyLjMtNC45IDgwIDEzLjMgMTA2LjMgOC45IDEzIDE5LjUgMjcuMyAzMy41IDI2LjggMTMuMy0uNSAxOC41LTguNiAzNC41LTguNiAxNi4xIDAgMjAuOCA4LjYgMzQuOCA4LjQgMTQuNS0uMyAyMy42LTEzIDMyLjUtMjYgMTAuMS0xNC44IDE0LjMtMjkuMSAxNC41LTI5LjktLjMtLjMtMjgtMTAuOS0yOC4zLTQyLjktLjMtMjYuOCAyMS45LTM5LjUgMjIuOS00MC4zLTEyLjUtMTguNi0zMi0yMC42LTM4LjgtMjEuMW0xMDAuNC0zNi4ydjE5NC45aDMwLjN2LTY2LjZoNDEuOWMzOC4zIDAgNjUuMS0yNi4zIDY1LjEtNjQuM3MtMjYuNC02NC02NC4xLTY0aC03My4yem0zMC4zIDI1LjVoMzQuOWMyNi4zIDAgNDEuMyAxNCA0MS4zIDM4LjZzLTE1IDM4LjgtNDEuNCAzOC44aC0zNC44VjE2NXptMTYyLjIgMTcwLjljMTkgMCAzNi42LTkuNiA0NC42LTI0LjloLjZ2MjMuNGgyOHYtOTdjMC0yOC4xLTIyLjUtNDYuMy01Ny4xLTQ2LjMtMzIuMSAwLTU1LjkgMTguNC01Ni44IDQzLjZoMjcuM2MyLjMtMTIgMTMuNC0xOS45IDI4LjYtMTkuOSAxOC41IDAgMjguOSA4LjYgMjguOSAyNC41djEwLjhsLTM3LjggMi4zYy0zNS4xIDIuMS01NC4xIDE2LjUtNTQuMSA0MS41LjEgMjUuMiAxOS43IDQyIDQ3LjggNDJ6bTguMi0yMy4xYy0xNi4xIDAtMjYuNC03LjgtMjYuNC0xOS42IDAtMTIuMyA5LjktMTkuNCAyOC44LTIwLjVsMzMuNi0yLjF2MTFjMCAxOC4yLTE1LjUgMzEuMi0zNiAzMS4yem0xMDIuNSA3NC42YzI5LjUgMCA0My40LTExLjMgNTUuNS00NS40TDY0MCAxOTNoLTMwLjhsLTM1LjYgMTE1LjFoLS42TDUzNy40IDE5M2gtMzEuNkw1NTcgMzM0LjlsLTIuOCA4LjZjLTQuNiAxNC42LTEyLjEgMjAuMy0yNS41IDIwLjMtMi40IDAtNy0uMy04LjktLjV2MjMuNGMxLjguNCA5LjMuNyAxMS42Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOC43IDI2OC43Yy0uMi0zNi43IDE2LjQtNjQuNCA1MC04NC44LTE4LjgtMjYuOS00Ny4yLTQxLjctODQuNy00NC42LTM1LjUtMi44LTc0LjMgMjAuNy04OC41IDIwLjctMTUgMC00OS40LTE5LjctNzYuNC0xOS43QzYzLjMgMTQxLjIgNCAxODQuOCA0IDI3My41cTAgMzkuMyAxNC40IDgxLjJjMTIuOCAzNi43IDU5IDEyNi43IDEwNy4yIDEyNS4yIDI1LjItLjYgNDMtMTcuOSA3NS44LTE3LjkgMzEuOCAwIDQ4LjMgMTcuOSA3Ni40IDE3LjkgNDguNi0uNyA5MC40LTgyLjUgMTAyLjYtMTE5LjMtNjUuMi0zMC43LTYxLjctOTAtNjEuNy05MS45em0tNTYuNi0xNjQuMmMyNy4zLTMyLjQgMjQuOC02MS45IDI0LTcyLjUtMjQuMSAxLjQtNTIgMTYuNC02Ny45IDM0LjktMTcuNSAxOS44LTI3LjggNDQuMy0yNS42IDcxLjkgMjYuMSAyIDQ5LjktMTEuNCA2OS41LTM0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFydHN0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAzNzcuNGw0MyA3NC4zQTUxLjM1IDUxLjM1IDAgMCAwIDkwLjkgNDgwaDI4NS40bC01OS4yLTEwMi42ek01MDEuOCAzNTBMMzM1LjYgNTkuM0E1MS4zOCA1MS4zOCAwIDAgMCAyOTAuMiAzMmgtODguNGwyNTcuMyA0NDcuNiA0MC43LTcwLjVjMS45LTMuMiAyMS0yOS43IDItNTkuMXpNMjc1IDMwNC41bC0xMTUuNS0yMDBMNDQgMzA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFzeW1tZXRyaWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTE3LjUgMzA5LjJjMzguOC00MCA1OC4xLTgwIDU4LjUtMTE2LjEuOC02NS41LTU5LjQtMTE4LjItMTY5LjQtMTM1QzI3Ny45IDM4LjQgMTE4LjEgNzMuNiAwIDE0MC41IDUyIDExNCAxMTAuNiA5Mi4zIDE3MC43IDgyLjNjNzQuNS0yMC41IDE1My0yNS40IDIyMS4zLTE0LjhDNTQ0LjUgOTEuMyA1ODguOCAxOTUgNDkwLjggMjk5LjJjLTEwLjIgMTAuOC0yMiAyMS4xLTM1IDMwLjZMMzA0LjkgMTAzLjQgMTE0LjcgMzg4LjljLTY1LjYtMjkuNC03Ni41LTkwLjItMTkuMS0xNTEuMiAyMC44LTIyLjIgNDguMy00MS45IDc5LjUtNTguMSAyMC0xMi4yIDM5LjctMjIuNiA2Mi0zMC43LTY1LjEgMjAuMy0xMjIuNyA1Mi45LTE2MS42IDkyLjktMjcuNyAyOC42LTQxLjQgNTcuMS00MS43IDgyLjktLjUgMzUuMSAyMy40IDY1LjEgNjguNCA4M2wtMzQuNSA1MS43aDEwMS42bDIyLTM0LjRjMjIuMiAxIDQ1LjMgMCA2OC42LTIuN2wtMjIuOCAzNy4xaDEzNS41TDM0MCA0MDYuM2MxOC42LTUuMyAzNi45LTExLjUgNTQuNS0xOC43bDQ1LjkgNzEuOEg1NDJMNDY4LjYgMzQ5YzE4LjUtMTIuMSAzNS0yNS41IDQ4LjktMzkuOHptLTE4Ny42IDgwLjVsLTI1LTQwLjYtMzIuNyA1My4zYy0yMy40IDMuNS00Ni43IDUuMS02OS4yIDQuNGwxMDEuOS0xNTkuMyA3OC43IDEyM2MtMTcuMiA3LjQtMzUuMyAxMy45LTUzLjcgMTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXRsYXNzaWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Mi4yIDIzNi40Yy03LjctOC4yLTE5LjctNy43LTI0LjggMi44TDEuNiA0OTAuMmMtNSAxMCAyLjQgMjEuNyAxMy40IDIxLjdoMTc1YzUuOC4xIDExLTMuMiAxMy40LTguNCAzNy45LTc3LjggMTUuMS0xOTYuMy01MS4yLTI2Ny4xek0yNDQuNCA4LjFjLTEyMi4zIDE5My40LTguNSAzNDguNiA2NSA0OTUuNSAyLjUgNS4xIDcuNyA4LjQgMTMuNCA4LjRINDk3YzExLjIgMCAxOC40LTExLjggMTMuNC0yMS43IDAgMC0yMzQuNS00NzAuNi0yNDAuNC00ODIuMy01LjMtMTAuNi0xOC44LTEwLjgtMjUuNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdWRpYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAxOTkuOXY1NGwtMzIwIDIwMEwwIDI1NHYtNTRsMzIwIDIwMCAzMjAtMjAwLjF6bS0xOTQuNSA3Mmw0Ny4xLTI5LjRjLTM3LjItNTUuOC0xMDAuNy05Mi42LTE3Mi43LTkyLjYtNzIgMC0xMzUuNSAzNi43LTE3Mi42IDkyLjRoLjNjMi41LTIuMyA1LjEtNC41IDcuNy02LjcgODkuNy03NC40IDIxOS40LTU4LjEgMjkwLjIgMzYuM3ptLTIyMC4xIDE4LjhjMTYuOS0xMS45IDM2LjUtMTguNyA1Ny40LTE4LjcgMzQuNCAwIDY1LjIgMTguNCA4Ni40IDQ3LjZsNDUuNC0yOC40Yy0yMC45LTI5LjktNTUuNi00OS41LTk0LjgtNDkuNS0zOC45IDAtNzMuNCAxOS40LTk0LjQgNDl6TTEwMy42IDE2MS4xYzEzMS44LTEwNC4zIDMxOC4yLTc2LjQgNDE3LjUgNjIuMWwuNyAxIDQ4LjgtMzAuNEM1MTcuMSAxMTIuMSA0MjQuOCA1OC4xIDMxOS45IDU4LjFjLTEwMy41IDAtMTk2LjYgNTMuNS0yNTAuNSAxMzUuNiA5LjktMTAuNSAyMi43LTIzLjUgMzQuMi0zMi42em00NjcgMzIuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXV0b3ByZWZpeGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOC40IDE2bC0xNjEgNDgwaDc3LjVsMjUuNC04MS40aDExOS41TDQwNSA0OTZoNzcuNUwzMTguNCAxNnptLTQwLjMgMzQxLjlsNDEuMi0xMzAuNGgxLjVsNDAuOSAxMzAuNGgtODMuNnpNNjQwIDQwNWwtMTAtMzEuNEw0NjIuMSAzNThsMTkuNCA1Ni41TDY0MCA0MDV6bS00NjIuMS00N0wxMCAzNzMuNyAwIDQwNWwxNTguNSA5LjQgMTkuNC01Ni40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdmlhbmV4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1My4xIDMyaC0zMTJjLTM4LjkgMC03Ni4yIDMxLjItODMuMyA2OS43TDEuMiA0MTAuM0MtNS45IDQ0OC44IDE5LjkgNDgwIDU4LjkgNDgwaDMxMmMzOC45IDAgNzYuMi0zMS4yIDgzLjMtNjkuN2w1Ni43LTMwOC41YzctMzguNi0xOC44LTY5LjgtNTcuOC02OS44em0tNTguMiAzNDcuM2wtMzIgMTMuNS0xMTUuNC0xMTBjLTE0LjcgMTAtMjkuMiAxOS41LTQxLjcgMjcuMWwyMi4xIDY0LjItMTcuOSAxMi43LTQwLjYtNjEtNTIuNC00OC4xIDE1LjctMTUuNCA1OCAzMS4xYzkuMy0xMC41IDIwLjgtMjIuNiAzMi44LTM0LjlMMjAzIDIyOC45bC02OC44LTk5LjggMTguOC0yOC45IDguOS00LjhMMjY1IDIwNy44bDQuOSA0LjVjMTkuNC0xOC44IDMzLjgtMzIuNCAzMy44LTMyLjQgNy43LTYuNSAyMS41LTIuOSAzMC43IDcuOSA5IDEwLjUgMTAuNiAyNC43IDIuNyAzMS4zLTEuOCAxLjMtMTUuNSAxMS40LTM1LjMgMjUuNmw0LjUgNy4zIDk0LjkgMTE5LjQtNi4zIDcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXZpYXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNy4yIDI4My41bC0xOS00MS44SDM2LjFsLTE5IDQxLjhIMGw2Mi4yLTEzMS40IDYyLjIgMTMxLjRoLTE3LjJ6bS00NS05OC4xbC0xOS42IDQyLjVoMzkuMmwtMTkuNi00Mi41em0xMTIuNyAxMDIuNGwtNjIuMi0xMzEuNGgxNy4xbDQ1LjEgOTYgNDUuMS05NmgxN2wtNjIuMSAxMzEuNHptODAuNi00LjNWMTU2LjRIMjcxdjEyNy4xaC0xNS41em0yMDkuMS0xMTUuNnYxMTUuNmgtMTcuM1YxNjcuOWgtNDEuMnYtMTEuNWg5OS42djExLjVoLTQxLjF6TTY0MCAyMTguOGMwIDkuMi0xLjcgMTcuOC01LjEgMjUuOC0zLjQgOC04LjIgMTUuMS0xNC4yIDIxLjEtNiA2LTEzLjEgMTAuOC0yMS4xIDE0LjItOCAzLjQtMTYuNiA1LjEtMjUuOCA1LjFzLTE3LjgtMS43LTI1LjgtNS4xYy04LTMuNC0xNS4xLTguMi0yMS4xLTE0LjItNi02LTEwLjgtMTMtMTQuMi0yMS4xLTMuNC04LTUuMS0xNi42LTUuMS0yNS44czEuNy0xNy44IDUuMS0yNS44YzMuNC04IDguMi0xNS4xIDE0LjItMjEuMSA2LTYgMTMtOC40IDIxLjEtMTEuOSA4LTMuNCAxNi42LTUuMSAyNS44LTUuMXMxNy44IDEuNyAyNS44IDUuMWM4IDMuNCAxNS4xIDUuOCAyMS4xIDExLjkgNiA2IDEwLjcgMTMuMSAxNC4yIDIxLjEgMy40IDggNS4xIDE2LjYgNS4xIDI1Ljh6bS0xNS41IDBjMC03LjMtMS4zLTE0LTMuOS0yMC4zLTIuNi02LjMtNi4yLTExLjctMTAuOC0xNi4zLTQuNi00LjYtMTAtOC4yLTE2LjItMTAuOS02LjItMi43LTEyLjgtNC0xOS44LTRzLTEzLjYgMS4zLTE5LjggNGMtNi4yIDIuNy0xMS42IDYuMy0xNi4yIDEwLjktNC42IDQuNi04LjIgMTAtMTAuOCAxNi4zLTIuNiA2LjMtMy45IDEzLjEtMy45IDIwLjMgMCA3LjMgMS4zIDE0IDMuOSAyMC4zIDIuNiA2LjMgNi4yIDExLjcgMTAuOCAxNi4zIDQuNiA0LjYgMTAgOC4yIDE2LjIgMTAuOSA2LjIgMi43IDEyLjggNCAxOS44IDRzMTMuNi0xLjMgMTkuOC00YzYuMi0yLjcgMTEuNi02LjMgMTYuMi0xMC45IDQuNi00LjYgOC4yLTEwIDEwLjgtMTYuMyAyLjYtNi4zIDMuOS0xMy4xIDMuOS0yMC4zem0tOTQuOCA5Ni43di02LjNsODguOS0xMC0yNDIuOSAxMy40Yy42LTIuMiAxLjEtNC42IDEuNC03LjIuMy0yIC41LTQuMi42LTYuNWw2NC44LTguMS02NC45IDEuOWMwLS40LS4xLS43LS4xLTEuMS0yLjgtMTcuMi0yNS41LTIzLjctMjUuNS0yMy43bC0xLjEtMjYuM2gyMy44bDE5IDQxLjhoMTcuMUwzNDguNiAxNTJsLTYyLjIgMTMxLjRoMTcuMWwxOS00MS44aDIzLjZMMzQ1IDI2OHMtMjIuNyA2LjUtMjUuNSAyMy43Yy0uMS4zLS4xLjctLjEgMS4xbC02NC45LTEuOSA2NC44IDguMWMuMSAyLjMuMyA0LjQuNiA2LjUuMyAyLjYuOCA1IDEuNCA3LjJMNzguNCAyOTkuMmw4OC45IDEwdjYuM2MtNS45LjktMTAuNSA2LTEwLjUgMTIuMiAwIDYuOCA1LjYgMTIuNCAxMi40IDEyLjQgNi44IDAgMTIuNC01LjYgMTIuNC0xMi40IDAtNi4yLTQuNi0xMS4zLTEwLjUtMTIuMnYtNS44bDgwLjMgOXY1LjRjLTUuNyAxLjEtOS45IDYuMi05LjkgMTIuMSAwIDYuOCA1LjYgMTAuMiAxMi40IDEwLjIgNi44IDAgMTIuNC0zLjQgMTIuNC0xMC4yIDAtNi00LjMtMTEtOS45LTEyLjF2LTQuOWwyOC40IDMuMnYyMy43aC01LjlWMzYwaDUuOXYtNi42aDV2Ni42aDUuOXYtMTMuOGgtNS45VjMyM2wzOC4zIDQuM2M4LjEgMTEuNCAxOSAxMy42IDE5IDEzLjZsLS4xIDYuNy01LjEuMi0uMSAxMi4xaDQuMWwuMS01aDUuMmwuMSA1aDQuMWwtLjEtMTIuMS01LjEtLjItLjEtNi43czEwLjktMi4xIDE5LTEzLjZsMzguMy00LjN2MjMuMmgtNS45VjM2MGg1Ljl2LTYuNmg1djYuNmg1Ljl2LTEzLjhoLTUuOXYtMjMuN2wyOC40LTMuMnY0LjljLTUuNyAxLjEtOS45IDYuMi05LjkgMTIuMSAwIDYuOCA1LjYgMTAuMiAxMi40IDEwLjIgNi44IDAgMTIuNC0zLjQgMTIuNC0xMC4yIDAtNi00LjMtMTEtOS45LTEyLjF2LTUuNGw4MC4zLTl2NS44Yy01LjkuOS0xMC41IDYtMTAuNSAxMi4yIDAgNi44IDUuNiAxMi40IDEyLjQgMTIuNCA2LjggMCAxMi40LTUuNiAxMi40LTEyLjQtLjItNi4zLTQuNy0xMS40LTEwLjctMTIuM3ptLTIwMC44LTg3LjZsMTkuNi00Mi41IDE5LjYgNDIuNWgtMTcuOWwtMS43LTQwLjMtMS43IDQwLjNoLTE3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODAuNDEgMjAzLjAxYy0uNzIgMjIuNjUgMTAuNiAzMi42OCAxMC44OCAzOS4wNWE4LjE2NCA4LjE2NCAwIDAgMS00LjEgNi4yN2wtMTIuOCA4Ljk2YTEwLjY2IDEwLjY2IDAgMCAxLTUuNjMgMS45MmMtLjQzLS4wMi04LjE5IDEuODMtMjAuNDgtMjUuNjFhNzguNjA4IDc4LjYwOCAwIDAgMS02Mi42MSAyOS40NWMtMTYuMjguODktNjAuNC05LjI0LTU4LjEzLTU2LjIxLTEuNTktMzguMjggMzQuMDYtNjIuMDYgNzAuOTMtNjAuMDUgNy4xLjAyIDIxLjYuMzcgNDYuOTkgNi4yN3YtMTUuNjJjMi42OS0yNi40Ni0xNC43LTQ2Ljk5LTQ0LjgxLTQzLjkxLTIuNC4wMS0xOS40LS41LTQ1Ljg0IDEwLjExLTcuMzYgMy4zOC04LjMgMi44Mi0xMC43NSAyLjgyLTcuNDEgMC00LjM2LTIxLjQ4LTIuOTQtMjQuMiA1LjIxLTYuNCAzNS44Ni0xOC4zNSA2NS45NC0xOC4xOGE3Ni44NTcgNzYuODU3IDAgMCAxIDU1LjY5IDE3LjI4IDcwLjI4NSA3MC4yODUgMCAwIDEgMTcuNjcgNTIuMzZsLS4wMSA2OS4yOXpNOTMuOTkgMjM1LjRjMzIuNDMtLjQ3IDQ2LjE2LTE5Ljk3IDQ5LjI5LTMwLjQ3IDIuNDYtMTAuMDUgMi4wNS0xNi40MSAyLjA1LTI3LjQtOS42Ny0yLjMyLTIzLjU5LTQuODUtMzkuNTYtNC44Ny0xNS4xNS0xLjE0LTQyLjgyIDUuNjMtNDEuNzQgMzIuMjYtMS4yNCAxNi43OSAxMS4xMiAzMS40IDI5Ljk2IDMwLjQ4em0xNzAuOTIgMjMuMDVjLTcuODYuNzItMTEuNTItNC44Ni0xMi42OC0xMC4zN2wtNDkuOC0xNjQuNjVjLS45Ny0yLjc4LTEuNjEtNS42NS0xLjkyLTguNThhNC42MSA0LjYxIDAgMCAxIDMuODYtNS4yNWMuMjQtLjA0LTIuMTMgMCAyMi4yNSAwIDguNzgtLjg4IDExLjY0IDYuMDMgMTIuNTUgMTAuMzdsMzUuNzIgMTQwLjgzIDMzLjE2LTE0MC44M2MuNTMtMy4yMiAyLjk0LTExLjA3IDEyLjgtMTAuMjRoMTcuMTZjMi4xNy0uMTggMTEuMTEtLjUgMTIuNjggMTAuMzdsMzMuNDIgMTQyLjYzTDQyMC45OCA4MC4xYy40OC0yLjE4IDIuNzItMTEuMzcgMTIuNjgtMTAuMzdoMTkuNzJjLjg1LS4xMyA2LjE1LS44MSA1LjI1IDguNTgtLjQzIDEuODUgMy40MS0xMC42Ni01Mi43NSAxNjkuOS0xLjE1IDUuNTEtNC44MiAxMS4wOS0xMi42OCAxMC4zN2gtMTguNjljLTEwLjk0IDEuMTUtMTIuNTEtOS42Ni0xMi42OC0xMC43NUwzMjguNjcgMTEwLjdsLTMyLjc4IDEzNi45OWMtLjE2IDEuMDktMS43MyAxMS45LTEyLjY4IDEwLjc1aC0xOC4zem0yNzMuNDggNS42M2MtNS44OC4wMS0zMy45Mi0uMy01Ny4zNi0xMi4yOWExMi44MDIgMTIuODAyIDAgMCAxLTcuODEtMTEuOTF2LTEwLjc1YzAtOC40NSA2LjItNi45IDguODMtNS44OSAxMC4wNCA0LjA2IDE2LjQ4IDcuMTQgMjguODEgOS42IDM2LjY1IDcuNTMgNTIuNzctMi4zIDU2LjcyLTQuNDggMTMuMTUtNy44MSAxNC4xOS0yNS42OCA1LjI1LTM0Ljk1LTEwLjQ4LTguNzktMTUuNDgtOS4xMi01My4xMy0yMS00LjY0LTEuMjktNDMuNy0xMy42MS00My43OS01Mi4zNi0uNjEtMjguMjQgMjUuMDUtNTYuMTggNjkuNTItNTUuOTUgMTIuNjctLjAxIDQ2LjQzIDQuMTMgNTUuNTcgMTUuNjIgMS4zNSAyLjA5IDIuMDIgNC41NSAxLjkyIDcuMDR2MTAuMTFjMCA0LjQ0LTEuNjIgNi42Ni00Ljg3IDYuNjYtNy43MS0uODYtMjEuMzktMTEuMTctNDkuMTYtMTAuNzUtNi44OS0uMzYtMzkuODkuOTEtMzguNDEgMjQuOTctLjQzIDE4Ljk2IDI2LjYxIDI2LjA3IDI5LjcgMjYuODkgMzYuNDYgMTAuOTcgNDguNjUgMTIuNzkgNjMuMTIgMjkuNTggMTcuMTQgMjIuMjUgNy45IDQ4LjMgNC4zNSA1NS40NC0xOS4wOCAzNy40OS02OC40MiAzNC40NC02OS4yNiAzNC40MnptNDAuMiAxMDQuODZjLTcwLjAzIDUxLjcyLTE3MS42OSA3OS4yNS0yNTguNDkgNzkuMjVBNDY5LjEyNyA0NjkuMTI3IDAgMCAxIDIuODMgMzI3LjQ2Yy02LjUzLTUuODktLjc3LTEzLjk2IDcuMTctOS40N2E2MzcuMzcgNjM3LjM3IDAgMCAwIDMxNi44OCA4NC4xMiA2MzAuMjIgNjMwLjIyIDAgMCAwIDI0MS41OS00OS41NWMxMS43OC01IDIxLjc3IDcuOCAxMC4xMiAxNi4zOHptMjkuMTktMzMuMjljLTguOTYtMTEuNTItNTkuMjgtNS4zOC04MS44MS0yLjY5LTYuNzkuNzctNy45NC01LjEyLTEuNzktOS40NyA0MC4wNy0yOC4xNyAxMDUuODgtMjAuMSAxMTMuNDQtMTAuNjMgNy41NSA5LjQ3LTIuMDUgNzUuNDEtMzkuNTYgMTA2LjkxLTUuNzYgNC44Ny0xMS4yNyAyLjMtOC43MS00LjEgOC40NC0yMS4yNSAyNy4zOS02OC40OSAxOC40My04MC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFuZGNhbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDhDMTE5LDgsOCwxMTksOCwyNTZTMTE5LDUwNCwyNTYsNTA0LDUwNCwzOTMsNTA0LDI1NiwzOTMsOCwyNTYsOFptNDguMiwzMjYuMWgtMTgxTDIwNy45LDE3OGgxODFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRsZU5ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDguNjEgMjI1LjYyYzI2Ljg3LjE4IDM1LjU3LTcuNDMgMzguOTItMTIuMzcgMTIuNDctMTYuMzItNy4wNi00Ny42LTUyLjg1LTcxLjMzIDE3Ljc2LTMzLjU4IDMwLjExLTYzLjY4IDM2LjM0LTg1LjMgMy4zOC0xMS44MyAxLjA5LTE5IC40NS0yMC4yNS0xLjcyIDEwLjUyLTE1Ljg1IDQ4LjQ2LTQ4LjIgMTAwLjA1LTI1LTExLjIyLTU2LjUyLTIwLjEtOTMuNzctMjMuOC04Ljk0LTE2Ljk0LTM0Ljg4LTYzLjg2LTYwLjQ4LTg4LjkzQzI1Mi4xOCA3LjE0IDIzOC43IDEuMDcgMjI4LjE4LjIyaC0uMDVjLTEzLjgzLTEuNTUtMjIuNjcgNS44NS0yNy40IDExLTE3LjIgMTguNTMtMjQuMzMgNDguODctMjUgODQuMDctNy4yNC0xMi4zNS0xNy4xNy0yNC42My0yOC41LTI1LjkzaC0uMThjLTIwLjY2LTMuNDgtMzguMzkgMjkuMjItMzYgODEuMjktMzguMzYgMS4zOC03MSA1Ljc1LTkzIDExLjIzLTkuOSAyLjQ1LTE2LjIyIDcuMjctMTcuNzYgOS43MiAxLS4zOCAyMi40LTkuMjIgMTExLjU2LTkuMjIgNS4yMiA1MyAyOS43NSAxMDEuODIgMjYgOTMuMTktOS43MyAxNS40LTM4LjI0IDYyLjM2LTQ3LjMxIDk3LjctNS44NyAyMi44OC00LjM3IDM3LjYxLjE1IDQ3LjE0IDUuNTcgMTIuNzUgMTYuNDEgMTYuNzIgMjMuMiAxOC4yNiAyNSA1LjcxIDU1LjM4LTMuNjMgODYuNy0yMS4xNC03LjUzIDEyLjg0LTEzLjkgMjguNTEtOS4wNiAzOS4zNCA3LjMxIDE5LjY1IDQ0LjQ5IDE4LjY2IDg4LjQ0LTkuNDUgMjAuMTggMzIuMTggNDAuMDcgNTcuOTQgNTUuNyA3NC4xMmEzOS43OSAzOS43OSAwIDAgMCA4Ljc1IDcuMDljNS4xNCAzLjIxIDguNTggMy4zNyA4LjU4IDMuMzctOC4yNC02Ljc1LTM0LTM4LTYyLjU0LTkxLjc4IDIyLjIyLTE2IDQ1LjY1LTM4Ljg3IDY3LjQ3LTY5LjI3IDEyMi44MiA0LjYgMTQzLjI5LTI0Ljc2IDE0OC0zMS42NCAxNC42Ny0xOS44OCAzLjQzLTU3LjQ0LTU3LjMyLTkzLjY5em0tNzcuODUgMTA2LjIyYzIzLjgxLTM3LjcxIDMwLjM0LTY3Ljc3IDI5LjQ1LTkyLjMzIDI3Ljg2IDE3LjU3IDQ3LjE4IDM3LjU4IDQ5LjA2IDU4LjgzIDEuMTQgMTIuOTMtOC4xIDI5LjEyLTc4LjUxIDMzLjV6TTIxNi45IDM4Ny42OWM5Ljc2LTYuMjMgMTkuNTMtMTMuMTIgMjkuMi0yMC40OSA2LjY4IDEzLjMzIDEzLjYgMjYuMSAyMC42IDM4LjE5LTQwLjYgMjEuODYtNjguODQgMTIuNzYtNDkuOC0xNy43em0yMTUtMTcxLjM1Yy0xMC4yOS01LjM0LTIxLjE2LTEwLjM0LTMyLjM4LTE1LjA1YTcyMi40NTkgNzIyLjQ1OSAwIDAgMCAyMi43NC0zNi45YzM5LjA2IDI0LjEgNDUuOSA1My4xOCA5LjY0IDUxLjk1ek0yNzkuMTggMzk4Yy01LjUxLTExLjM1LTExLTIzLjUtMTYuNS0zNi40NCA0My4yNSAxLjI3IDYyLjQyLTE4LjczIDYzLjI4LTIwLjQxIDAgLjA3LTI1IDE1LjY0LTYyLjUzIDEyLjI1YTcxOC43OCA3MTguNzggMCAwIDAgODUuMDYtODRxMTMuMDYtMTUuMzEgMjQuOTMtMzEuMTFjLS4zNi0uMjktMS41NC0zLTE2LjUxLTEyLTUxLjcgNjAuMjctMTAyLjM0IDk4LTEzMi43NSAxMTUuOTItMjAuNTktMTEuMTgtNDAuODQtMzEuNzgtNTUuNzEtNjEuNDktMjAtMzkuOTItMzAtODIuMzktMzEuNTctMTE2LjA3IDEyLjMuOTEgMjUuMjcgMi4xNyAzOC44NSAzLjg4LTIyLjI5IDM2LjgtMTQuMzkgNjMtMTMuNDcgNjQuMjMgMC0uMDctLjk1LTI5LjE3IDIwLjE0LTU5LjU3YTY5NS4yMyA2OTUuMjMgMCAwIDAgNDQuNjcgMTUyLjg0Yy45My0uMzggMS44NC44OCAxOC42Ny04LjI1LTI2LjMzLTc0LjQ3LTMzLjc2LTEzOC4xNy0zNC0xNzMuNDMgMjAtMTIuNDIgNDguMTgtMTkuOCA4MS42My0xNy44MSA0NC41NyAyLjY3IDg2LjM2IDE1LjI1IDExNi4zMiAzMC43MXEtMTAuNjkgMTUuNjYtMjMuMzMgMzIuNDdDMzY1LjYzIDE1MiAzMzkuMSAxNDUuODQgMzM3LjUgMTQ2Yy4xMSAwIDI1LjkgMTQuMDcgNDEuNTIgNDcuMjJhNzE3LjYzIDcxNy42MyAwIDAgMC0xMTUuMzQtMzEuNzEgNjQ2LjYwOCA2NDYuNjA4IDAgMCAwLTM5LjM5LTYuMDVjLS4wNy40NS0xLjgxIDEuODUtMi4xNiAyMC4zM0MzMDAgMTkwLjI4IDM1OC43OCAyMTUuNjggMzg5LjM2IDIzM2MuNzQgMjMuNTUtNi45NSA1MS42MS0yNS40MSA3OS41Ny0yNC42IDM3LjMxLTU2LjM5IDY3LjIzLTg0Ljc3IDg1LjQzem0yNy40LTI4N2MtNDQuNTYtMS42Ni03My41OCA3LjQzLTk0LjY5IDIwLjY3IDItNTIuMyAyMS4zMS03Ni4zOCAzOC4yMS03NS4yOEMyNjcgNTIuMTUgMzA1IDEwOC41NSAzMDYuNTggMTExem0tMTMwLjY1IDMuMWMuNDggMTIuMTEgMS41OSAyNC42MiAzLjIxIDM3LjI4LTE0LjU1LS44NS0yOC43NC0xLjI1LTQyLjQtMS4yNi0uMDggMy4yNC0uMTItNTEgMjQuNjctNDkuNTloLjA5YzUuNzYgMS4wOSAxMC42MyA2Ljg4IDE0LjQzIDEzLjU3em0tMjguMDYgMTYyYzIwLjc2IDM5LjcgNDMuMyA2MC41NyA2NS4yNSA3Mi4zMS00Ni43OSAyNC43Ni03Ny41MyAyMC04NC45MiA0LjUxLS4yLS4yMS0xMS4xMy0xNS4zIDE5LjY3LTc2Ljgxem0yMTAuMDYgNzQuOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWhhbmNlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni41IDI5M2MwIDE5LjMtMTQgMjUuNC0zMS4yIDI1LjRoLTQ1LjF2LTUyLjloNDZjMTguNi4xIDMwLjMgNy44IDMwLjMgMjcuNXptLTcuNy04Mi4zYzAtMTcuNy0xMy43LTIxLjktMjguOS0yMS45aC0zOS42djQ0LjhIMTUzYzE1LjEgMCAyNS44LTYuNiAyNS44LTIyLjl6bTEzMi4zIDIzLjJjLTE4LjMgMC0zMC41IDExLjQtMzEuNyAyOS43aDYyLjJjLTEuNy0xOC41LTExLjMtMjkuNy0zMC41LTI5Ljd6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHpNMjcxLjcgMTg1aDc3Ljh2LTE4LjloLTc3LjhWMTg1em0tNDMgMTEwLjNjMC0yNC4xLTExLjQtNDQuOS0zNS01MS42IDE3LjItOC4yIDI2LjItMTcuNyAyNi4yLTM3IDAtMzguMi0yOC41LTQ3LjUtNjEuNC00Ny41SDY4djE5Mmg5My4xYzM0LjktLjIgNjcuNi0xNi45IDY3LjYtNTUuOXpNMzgwIDI4MC41YzAtNDEuMS0yNC4xLTc1LjQtNjcuNi03NS40LTQyLjQgMC03MS4xIDMxLjgtNzEuMSA3My42IDAgNDMuMyAyNy4zIDczIDcxLjEgNzMgMzMuMiAwIDU0LjctMTQuOSA2NS4xLTQ2LjhoLTMzLjdjLTMuNyAxMS45LTE4LjYgMTguMS0zMC4yIDE4LjEtMjIuNCAwLTM0LjEtMTMuMS0zNC4xLTM1LjNoMTAwLjJjLjEtMi4zLjMtNC44LjMtNy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWhhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAyMzcuMmMzMS44LTE1LjIgNDguNC0zOC4yIDQ4LjQtNzQgMC03MC42LTUyLjYtODcuOC0xMTMuMy04Ny44SDB2MzU0LjRoMTcxLjhjNjQuNCAwIDEyNC45LTMwLjkgMTI0LjktMTAyLjkgMC00NC41LTIxLjEtNzcuNC02NC43LTg5Ljd6TTc3LjkgMTM1LjlIMTUxYzI4LjEgMCA1My40IDcuOSA1My40IDQwLjUgMCAzMC4xLTE5LjcgNDIuMi00Ny41IDQyLjJoLTc5di04Mi43em04My4zIDIzMy43SDc3LjlWMjcyaDg0LjljMzQuMyAwIDU2IDE0LjMgNTYgNTAuNiAwIDM1LjgtMjUuOSA0Ny01Ny42IDQ3em0zNTguNS0yNDAuN0gzNzZWOTRoMTQzLjd2MzQuOXpNNTc2IDMwNS4yYzAtNzUuOS00NC40LTEzOS4yLTEyNC45LTEzOS4yLTc4LjIgMC0xMzEuMyA1OC44LTEzMS4zIDEzNS44IDAgNzkuOSA1MC4zIDEzNC43IDEzMS4zIDEzNC43IDYxLjMgMCAxMDEtMjcuNiAxMjAuMS04Ni4zSDUwOWMtNi43IDIxLjktMzQuMyAzMy41LTU1LjcgMzMuNS00MS4zIDAtNjMtMjQuMi02My02NS4zaDE4NS4xYy4zLTQuMi42LTguNy42LTEzLjJ6TTM5MC40IDI3NGMyLjMtMzMuNyAyNC43LTU0LjggNTguNS01NC44IDM1LjQgMCA1My4yIDIwLjggNTYuMiA1NC44SDM5MC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaW1vYmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDMySDMyQzE0LjQgMzIgMCA0Ni40IDAgNjR2Mzg0YzAgMTcuNiAxNC40IDMyIDMyIDMyaDM4NGMxNy42IDAgMzItMTQuNCAzMi0zMlY2NGMwLTE3LjYtMTQuNC0zMi0zMi0zMnptLTY0IDI1Ny40YzAgNDkuNC0xMS40IDgyLjYtMTAzLjggODIuNmgtMTYuOWMtNDQuMSAwLTYyLjQtMTQuOS03MC40LTM4LjhoLS45VjM2OEg5NlYxMzZoNjR2NzQuN2gxLjFjNC42LTMwLjUgMzkuNy0zOC44IDY5LjctMzguOGgxNy4zYzkyLjQgMCAxMDMuOCAzMy4xIDEwMy44IDgyLjV2MzV6bS02NC0yOC45djIyLjljMCAyMS43LTMuNCAzMy44LTM4LjQgMzMuOGgtNDUuM2MtMjguOSAwLTQ0LjEtNi41LTQ0LjEtMzUuN3YtMTljMC0yOS4zIDE1LjItMzUuNyA0NC4xLTM1LjdoNDUuM2MzNS0uMiAzOC40IDEyIDM4LjQgMzMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0YnVja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjIgMzJBMTYgMTYgMCAwIDAgNiA0Ny44YTI2LjM1IDI2LjM1IDAgMCAwIC4yIDIuOGw2Ny45IDQxMi4xYTIxLjc3IDIxLjc3IDAgMCAwIDIxLjMgMTguMmgzMjUuN2ExNiAxNiAwIDAgMCAxNi0xMy40TDUwNSA1MC43YTE2IDE2IDAgMCAwLTEzLjItMTguMyAyNC41OCAyNC41OCAwIDAgMC0yLjgtLjJMMjIuMiAzMnptMjg1LjkgMjk3LjhoLTEwNGwtMjguMS0xNDdoMTU3LjNsLTI1LjIgMTQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaXRjb2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTY3LTExMS4wMzMgMjQ4LTI0OCAyNDhTOCAzOTIuOTY3IDggMjU2IDExOS4wMzMgOCAyNTYgOHMyNDggMTExLjAzMyAyNDggMjQ4em0tMTQxLjY1MS0zNS4zM2M0LjkzNy0zMi45OTktMjAuMTkxLTUwLjczOS01NC41NS02Mi41NzNsMTEuMTQ2LTQ0LjcwMi0yNy4yMTMtNi43ODEtMTAuODUxIDQzLjUyNGMtNy4xNTQtMS43ODMtMTQuNTAyLTMuNDY0LTIxLjgwMy01LjEzbDEwLjkyOS00My44MS0yNy4xOTgtNi43ODEtMTEuMTUzIDQ0LjY4NmMtNS45MjItMS4zNDktMTEuNzM1LTIuNjgyLTE3LjM3Ny00LjA4NGwuMDMxLS4xNC0zNy41My05LjM3LTcuMjM5IDI5LjA2MnMyMC4xOTEgNC42MjcgMTkuNzY1IDQuOTEzYzExLjAyMiAyLjc1MSAxMy4wMTQgMTAuMDQ0IDEyLjY4IDE1LjgyNWwtMTIuNjk2IDUwLjkyNWMuNzYuMTk0IDEuNzQ0LjQ3MyAyLjgyOS45MDctLjkwNy0uMjI1LTEuODc2LS40NzMtMi44NzYtLjcxM2wtMTcuNzk2IDcxLjMzOGMtMS4zNDkgMy4zNDgtNC43NjcgOC4zNy0xMi40NzEgNi40NjQuMjcxLjM5NS0xOS43OC00LjkzNy0xOS43OC00LjkzN2wtMTMuNTEgMzEuMTQ3IDM1LjQxNCA4LjgyN2M2LjU4OCAxLjY1MSAxMy4wNDUgMy4zNzkgMTkuNCA1LjAwNmwtMTEuMjYyIDQ1LjIxMyAyNy4xODIgNi43ODEgMTEuMTUzLTQ0LjczM2ExMDM4LjIwOSAxMDM4LjIwOSAwIDAgMCAyMS42ODcgNS42MjdsLTExLjExNSA0NC41MjMgMjcuMjEzIDYuNzgxIDExLjI2Mi00NS4xMjhjNDYuNDA0IDguNzgxIDgxLjI5OSA1LjIzOSA5NS45ODYtMzYuNzI3IDExLjgzNi0zMy43OS0uNTg5LTUzLjI4MS0yNS4wMDQtNjUuOTkxIDE3Ljc4LTQuMDk4IDMxLjE3NC0xNS43OTIgMzQuNzQ3LTM5Ljk0OXptLTYyLjE3NyA4Ny4xNzljLTguNDEgMzMuNzktNjUuMzA4IDE1LjUyMy04My43NTUgMTAuOTQzbDE0Ljk0NC01OS44OTljMTguNDQ2IDQuNjAzIDc3LjYgMTMuNzE3IDY4LjgxMSA0OC45NTZ6bTguNDE3LTg3LjY2N2MtNy42NzMgMzAuNzM2LTU1LjAzMSAxNS4xMi03MC4zOTMgMTEuMjkybDEzLjU0OC01NC4zMjdjMTUuMzYzIDMuODI4IDY0LjgzNiAxMC45NzMgNTYuODQ1IDQzLjAzNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03OC40IDY3LjJDMTczLjgtMjIgMzI0LjUtMjQgNDIxLjUgNzFjMTQuMyAxNC4xLTYuNCAzNy4xLTIyLjQgMjEuNS04NC44LTgyLjQtMjE1LjgtODAuMy0yOTguOS0zLjItMTYuMyAxNS4xLTM2LjUtOC4zLTIxLjgtMjIuMXptOTguOSA0MTguNmMxOS4zIDUuNyAyOS4zLTIzLjYgNy45LTMwQzczIDQyMS45IDkuNCAzMDYuMSAzNy43IDE5NC44YzUtMTkuNi0yNC45LTI4LjEtMzAuMi03LjEtMzIuMSAxMjcuNCA0MS4xIDI1OS44IDE2OS44IDI5OC4xem0xNDguMS0yYzEyMS45LTQwLjIgMTkyLjktMTY2LjkgMTY0LjQtMjkxLTQuNS0xOS43LTM0LjktMTMuOC0zMCA3LjkgMjQuMiAxMDcuNy0zNy4xIDIxNy45LTE0My4yIDI1My40LTIxLjIgNy0xMC40IDM2IDguOCAyOS43em0tNjIuOS03OWwuMi03MS44YzAtOC4yLTYuNi0xNC44LTE0LjgtMTQuOC04LjIgMC0xNC44IDYuNy0xNC44IDE0LjhsLS4yIDcxLjhjMCA4LjIgNi42IDE0LjggMTQuOCAxNC44czE0LjgtNi42IDE0LjgtMTQuOHptNzEtMjY5YzIuMSA5MC45IDQuNyAxMzEuOS04NS41IDEzMi41LTkyLjUtLjctODYuOS00NC4zLTg1LjUtMTMyLjUgMC0yMS44LTMyLjUtMTkuNi0zMi41IDB2NzEuNmMwIDY5LjMgNjAuNyA5MC45IDExOCA5MC4xIDU3LjMuOCAxMTgtMjAuOCAxMTgtOTAuMXYtNzEuNmMwLTE5LjYtMzIuNS0yMS44LTMyLjUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxhY2tUaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTMxNi41IDMyNS4yTDIyNCA0NDUuOWwtOTIuNS04OC43IDY0LjUtMTg0LTY0LjUtODYuNmgxODQuOUwyNTIgMTczLjJsNjQuNSAxODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsYWNrYmVycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY2IDExNi45YzAgMjMuNC0xNi40IDQ5LjEtNzIuNSA0OS4xSDIzLjRsMjEtODguOGg2Ny44YzQyLjEgMCA1My44IDIzLjMgNTMuOCAzOS43em0xMjYuMi0zOS43aC02Ny44TDIwNS43IDE2Nmg3MC4xYzUzLjggMCA3MC4xLTI1LjcgNzAuMS00OS4xLjEtMTYuNC0xMS42LTM5LjctNTMuNy0zOS43ek04OC44IDIwOC4xSDIxTDAgMjk2LjloNzAuMWM1Ni4xIDAgNzIuNS0yMy40IDcyLjUtNDkuMSAwLTE2LjMtMTEuNy0zOS43LTUzLjgtMzkuN3ptMTgwLjEgMGgtNjcuOGwtMTguNyA4OC44aDcwLjFjNTMuOCAwIDcwLjEtMjMuNCA3MC4xLTQ5LjEgMC0xNi4zLTExLjctMzkuNy01My43LTM5Ljd6bTE4OS4zLTUzLjhoLTY3LjhsLTE4LjcgODguOGg3MC4xYzUzLjggMCA3MC4xLTIzLjQgNzAuMS00OS4xLjEtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43em0tMjggMTM3LjloLTY3LjhMMzQzLjcgMzgxaDcwLjFjNTYuMSAwIDcwLjEtMjMuNCA3MC4xLTQ5LjEgMC0xNi4zLTExLjYtMzkuNy01My43LTM5Ljd6TTI0MC44IDM0NkgxNzNsLTE4LjcgODguOGg3MC4xYzU2LjEgMCA3MC4xLTI1LjcgNzAuMS00OS4xLjEtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbG9nZ2VyQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDYuNiAyMjIuN2MtMS44LTgtNi44LTE1LjQtMTIuNS0xOC41LTEuOC0xLTEzLTIuMi0yNS0yLjctMjAuMS0uOS0yMi4zLTEuMy0yOC43LTUtMTAuMS01LjktMTIuOC0xMi4zLTEyLjktMjkuNS0uMS0zMy0xMy44LTYzLjctNDAuOS05MS4zLTE5LjMtMTkuNy00MC45LTMzLTY1LjUtNDAuNS01LjktMS44LTE5LjEtMi40LTYzLjMtMi45LTY5LjQtLjgtODQuOC42LTEwOC40IDEwQzQ1LjkgNTkuNSAxNC43IDk2LjEgMy4zIDE0Mi45IDEuMiAxNTEuNy43IDE2NS44LjIgMjQ2LjhjLS42IDEwMS41LjEgMTE2LjQgNi40IDEzNi41IDE1LjYgNDkuNiA1OS45IDg2LjMgMTA0LjQgOTQuMyAxNC44IDIuNyAxOTcuMyAzLjMgMjE2IC44IDMyLjUtNC40IDU4LTE3LjUgODEuOS00MS45IDE3LjMtMTcuNyAyOC4xLTM2LjggMzUuMi02Mi4xIDQuOS0xNy42IDQuNS0xNDIuOCAyLjUtMTUxLjd6bS0zMjIuMS02My42YzcuOC03LjkgMTAtOC4yIDU4LjgtOC4yIDQzLjkgMCA0NS40LjEgNTEuOCAzLjQgOS4zIDQuNyAxMy40IDExLjMgMTMuNCAyMS45IDAgOS41LTMuOCAxNi4yLTEyLjMgMjEuNi00LjYgMi45LTcuMyAzLjEtNTAuMyAzLjMtMjYuNS4yLTQ3LjctLjQtNTAuOC0xLjItMTYuNi00LjctMjIuOC0yOC41LTEwLjYtNDAuOHptMTkxLjggMTk5LjhsLTE0LjkgMi40LTc3LjUuOWMtNjguMS44LTg3LjMtLjQtOTAuOS0yLTcuMS0zLjEtMTMuOC0xMS43LTE0LjktMTkuNC0xLjEtNy4zIDIuNi0xNy4zIDguMi0yMi40IDcuMS02LjQgMTAuMi02LjYgOTcuMy02LjcgODkuNi0uMSA4OS4xLS4xIDk3LjYgNy44IDEyLjEgMTEuMyA5LjUgMzEuMi00LjkgMzkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxvZ2dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuNCAxOTZjNC44LTQuOSA2LjItNS4xIDM2LjQtNS4xIDI3LjIgMCAyOC4xLjEgMzIuMSAyLjEgNS44IDIuOSA4LjMgNyA4LjMgMTMuNiAwIDUuOS0yLjQgMTAtNy42IDEzLjQtMi44IDEuOC00LjUgMS45LTMxLjEgMi4xLTE2LjQuMS0yOS41LS4yLTMxLjUtLjgtMTAuMy0yLjktMTQuMS0xNy43LTYuNi0yNS4zem02MS40IDk0LjVjLTUzLjkgMC01NS44LjItNjAuMiA0LjEtMy41IDMuMS01LjcgOS40LTUuMSAxMy45LjcgNC43IDQuOCAxMC4xIDkuMiAxMiAyLjIgMSAxNC4xIDEuNyA1Ni4zIDEuMmw0Ny45LS42IDkuMi0xLjVjOS01LjEgMTAuNS0xNy40IDMuMS0yNC40LTUuMy00LjctNS00LjctNjAuNC00Ljd6bTIyMy40IDEzMC4xYy0zLjUgMjguNC0yMyA1MC40LTUxLjEgNTcuNS03LjIgMS44LTkuNyAxLjktMTcyLjkgMS44LTE1Ny44IDAtMTY1LjktLjEtMTcyLTEuOC04LjQtMi4yLTE1LjYtNS41LTIyLjMtMTAtNS42LTMuOC0xMy45LTExLjgtMTctMTYuNC0zLjgtNS42LTguMi0xNS4zLTEwLTIyQy4xIDQyMyAwIDQyMC4zIDAgMjU2LjMgMCA5My4yIDAgODkuNyAxLjggODIuNiA4LjEgNTcuOSAyNy43IDM5IDUzIDMzLjRjNy4zLTEuNiAzMzIuMS0xLjkgMzQwLS4zIDIxLjIgNC4zIDM3LjkgMTcuMSA0Ny42IDM2LjQgNy43IDE1LjMgNy0xLjUgNy4zIDE4MC42LjIgMTE1LjggMCAxNjQuNS0uNyAxNzAuNXptLTg1LjQtMTg1LjJjLTEuMS01LTQuMi05LjYtNy43LTExLjUtMS4xLS42LTgtMS4zLTE1LjUtMS43LTEyLjQtLjYtMTMuOC0uOC0xNy44LTMuMS02LjItMy42LTcuOS03LjYtOC0xOC4zIDAtMjAuNC04LjUtMzkuNC0yNS4zLTU2LjUtMTItMTIuMi0yNS4zLTIwLjUtNDAuNi0yNS4xLTMuNi0xLjEtMTEuOC0xLjUtMzkuMi0xLjgtNDIuOS0uNS01Mi41LjQtNjcuMSA2LjItMjcgMTAuNy00Ni4zIDMzLjQtNTMuNCA2Mi40LTEuMyA1LjQtMS42IDE0LjItMS45IDY0LjMtLjQgNjIuOCAwIDcyLjEgNCA4NC41IDkuNyAzMC43IDM3LjEgNTMuNCA2NC42IDU4LjQgOS4yIDEuNyAxMjIuMiAyLjEgMTMzLjcuNSAyMC4xLTIuNyAzNS45LTEwLjggNTAuNy0yNS45IDEwLjctMTAuOSAxNy40LTIyLjggMjEuOC0zOC41IDMuMi0xMC45IDIuOS04OC40IDEuNy05My45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbHVldG9vdGhCIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ni40OCAyNjAuMDIzbDkyLjYyNi0xMDMuMzMzTDE0My4xMjUgMHYyMDYuMzNsLTg2LjExMS04Ni4xMTEtMzEuNDA2IDMxLjQwNSAxMDguMDYxIDEwOC4zOTlMMjUuNjA4IDM2OC40MjJsMzEuNDA2IDMxLjQwNSA4Ni4xMTEtODYuMTExTDE0NS44NCA1MTJsMTQ4LjU1Mi0xNDguNjQ0LTk3LjkxMi0xMDMuMzMzem00MC44Ni0xMDIuOTk2bC00OS45NzcgNDkuOTc4LS4zMzgtMTAwLjI5NSA1MC4zMTUgNTAuMzE3ek0xODcuMzYzIDMxMy4wNGw0OS45NzcgNDkuOTc4LTUwLjMxNSA1MC4zMTYuMzM4LTEwMC4yOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsdWV0b290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTIuNiAxNzEuMUwyNDkuNyAyMTRsLS4zLTg2IDQzLjIgNDMuMW0tNDMuMiAyMTkuOGw0My4xLTQzLjEtNDIuOS00Mi45LS4yIDg2ek00MTYgMjU5LjRDNDE2IDQ2NSAzNDQuMSA1MTIgMjMwLjkgNTEyUzMyIDQ2NSAzMiAyNTkuNCAxMTUuNCAwIDIyOC42IDAgNDE2IDUzLjkgNDE2IDI1OS40em0tMTU4LjUgMGw3OS40LTg4LjZMMjExLjggMzYuNXYxNzYuOUwxMzggMTM5LjZsLTI3IDI2LjkgOTIuNyA5My05Mi43IDkzIDI2LjkgMjYuOSA3My44LTczLjggMi4zIDE3MCAxMjcuNC0xMjcuNS04My45LTg4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb3RzdHJhcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzMuNSwyMDEuNGMwLTIyLjEtMTUuNi0zNC4zLTQzLTM0LjNoLTUwLjR2NzEuMmg0Mi41QzMxNS40LDIzOC4yLDMzMy41LDIyNSwzMzMuNSwyMDEuNHogTTUxNywxODguNiBjLTkuNS0zMC45LTEwLjktNjguOC05LjgtOTguMWMxLjEtMzAuNS0yMi43LTU4LjUtNTQuNy01OC41SDEyMy43Yy0zMi4xLDAtNTUuOCwyOC4xLTU0LjcsNTguNWMxLDI5LjMtMC4zLDY3LjItOS44LDk4LjEgYy05LjYsMzEtMjUuNyw1MC42LTUyLjIsNTMuMXYyOC41YzI2LjQsMi41LDQyLjYsMjIuMSw1Mi4yLDUzLjFjOS41LDMwLjksMTAuOSw2OC44LDkuOCw5OC4xYy0xLjEsMzAuNSwyMi43LDU4LjUsNTQuNyw1OC41aDMyOC43IGMzMi4xLDAsNTUuOC0yOC4xLDU0LjctNTguNWMtMS0yOS4zLDAuMy02Ny4yLDkuOC05OC4xYzkuNi0zMSwyNS43LTUwLjYsNTIuMS01My4xdi0yOC41QzU0Mi43LDIzOS4yLDUyNi41LDIxOS42LDUxNywxODguNnogTTMwMC4yLDM3NS4xaC05Ny45VjEzNi44aDk3LjRjNDMuMywwLDcxLjcsMjMuNCw3MS43LDU5LjRjMCwyNS4zLTE5LjEsNDcuOS00My41LDUxLjh2MS4zYzMzLjIsMy42LDU1LjUsMjYuNiw1NS41LDU4LjMgQzM4My40LDM0OS43LDM1Mi4xLDM3NS4xLDMwMC4yLDM3NS4xeiBNMjkwLjIsMjY2LjRoLTUwLjF2NzguNGg1Mi4zYzM0LjIsMCw1Mi4zLTEzLjcsNTIuMy0zOS41IEMzNDQuNywyNzkuNiwzMjYuMSwyNjYuNCwyOTAuMiwyNjYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnRjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMC4yMDQgMjQyLjYzOGMyNy43My0xNC4xOCA0NS4zNzctMzkuMzkgNDEuMjgtODEuMy01LjM1OC01Ny4zNTEtNTIuNDU4LTc2LjU3My0xMTQuODUtODEuOTI5VjBoLTQ4LjUyOHY3Ny4yMDNjLTEyLjYwNSAwLTI1LjUyNS4zMTUtMzguNDQ0LjYzVjBoLTQ4LjUyOHY3OS40MDljLTE3Ljg0Mi41MzktMzguNjIyLjI3Ni05Ny4zNyAwdjUxLjY3OGMzOC4zMTQtLjY3OCA1OC40MTctMy4xNCA2My4wMjMgMjEuNDI3djIxNy40MjljLTIuOTI1IDE5LjQ5Mi0xOC41MjQgMTYuNjg1LTUzLjI1NSAxNi4wNzFMMy43NjUgNDQzLjY4Yzg4LjQ4MSAwIDk3LjM3LjMxNSA5Ny4zNy4zMTVWNTEyaDQ4LjUyOHYtNjcuMDZjMTMuMjM0LjMxNSAyNi4xNTQuMzE1IDM4LjQ0NC4zMTVWNTEyaDQ4LjUyOHYtNjguMDA1YzgxLjI5OS00LjQxMiAxMzUuNjQ3LTI0Ljg5NCAxNDIuODk1LTEwMS40NjcgNS42NzEtNjEuNDQ2LTIzLjMyLTg4Ljg2Mi02OS4zMjYtOTkuODl6TTE1MC42MDggMTM0LjU1M2MyNy40MTUgMCAxMTMuMTI2LTguNTA3IDExMy4xMjYgNDguNTI4IDAgNTQuNTE1LTg1LjcxIDQ4LjIxMi0xMTMuMTI2IDQ4LjIxMnYtOTYuNzR6bTAgMjUxLjc3NlYyNzkuODIxYzMyLjc3MiAwIDEzMy4xMjctOS4xMzggMTMzLjEyNyA1My4yNTUtLjAwMSA2MC4xODYtMTAwLjM1NSA1My4yNTMtMTMzLjEyNyA1My4yNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1ZmZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjcuODQgMzgwLjY3bC0xOTYuNSA5Ny44MmExOC42IDE4LjYgMCAwIDEtMTQuNjcgMEwyMC4xNiAzODAuNjdjLTQtMi00LTUuMjggMC03LjI5TDY3LjIyIDM1MGExOC42NSAxOC42NSAwIDAgMSAxNC42OSAwbDEzNC43NiA2N2ExOC41MSAxOC41MSAwIDAgMCAxNC42NyAwbDEzNC43Ni02N2ExOC42MiAxOC42MiAwIDAgMSAxNC42OCAwbDQ3LjA2IDIzLjQzYzQuMDUgMS45NiA0LjA1IDUuMjQgMCA3LjI0em0wLTEzNi41M2wtNDcuMDYtMjMuNDNhMTguNjIgMTguNjIgMCAwIDAtMTQuNjggMGwtMTM0Ljc2IDY3LjA4YTE4LjY4IDE4LjY4IDAgMCAxLTE0LjY3IDBMODEuOTEgMjIwLjcxYTE4LjY1IDE4LjY1IDAgMCAwLTE0LjY5IDBsLTQ3LjA2IDIzLjQzYy00IDItNCA1LjI5IDAgNy4zMWwxOTYuNTEgOTcuOGExOC42IDE4LjYgMCAwIDAgMTQuNjcgMGwxOTYuNS05Ny44YzQuMDUtMi4wMiA0LjA1LTUuMyAwLTcuMzF6TTIwLjE2IDEzMC40MmwxOTYuNSA5MC4yOWEyMC4wOCAyMC4wOCAwIDAgMCAxNC42NyAwbDE5Ni41MS05MC4yOWM0LTEuODYgNC00Ljg5IDAtNi43NEwyMzEuMzMgMzMuNGExOS44OCAxOS44OCAwIDAgMC0xNC42NyAwbC0xOTYuNSA5MC4yOGMtNC4wNSAxLjg1LTQuMDUgNC44OCAwIDYuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1cm9tb2JlbGV4cGVydGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnYxMjhoMTI4VjMySDB6bTEyMCAxMjBIOFY0MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzMkgxNjB6bTEyMCAxMjBIMTY4VjQwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjMySDMyMHptMTIwIDEyMEgzMjhWNDBoMTEydjExMnpNMCAxOTJ2MTI4aDEyOFYxOTJIMHptMTIwIDEyMEg4VjIwMGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYxOTJIMTYwem0xMjAgMTIwSDE2OFYyMDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMTkySDMyMHptMTIwIDEyMEgzMjhWMjAwaDExMnYxMTJ6TTAgMzUydjEyOGgxMjhWMzUySDB6bTEyMCAxMjBIOFYzNjBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMzUySDE2MHptMTIwIDEyMEgxNjhWMzYwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjM1MkgzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1eU5MYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJDMTMzLjI3IDMyIDcuNzkgMTMyLjMyIDcuNzkgMjU2UzEzMy4yNyA0ODAgMjg4IDQ4MHMyODAuMjEtMTAwLjMyIDI4MC4yMS0yMjRTNDQyLjczIDMyIDI4OCAzMnptLTg1LjM5IDM1Ny4xOUw2NC4xIDM5MC41NWw3Ny4yNS0yOTAuNzRoMTMzLjQ0YzYzLjE1IDAgODQuOTMgMjguNjUgNzggNzIuODRhNjAuMjQgNjAuMjQgMCAwIDEtMS41IDYuODUgNzcuMzkgNzcuMzkgMCAwIDAtMTcuMjEtMS45M2MtNDIuMzUgMC03Ni42OSAzMy44OC03Ni42OSA3NS42NSAwIDM3LjE0IDI3LjE0IDY4IDYyLjkzIDc0LjQ1LTE4LjI0IDM3LjE2LTU2LjE2IDYwLjkyLTExNy43MSA2MS41MnpNMzU4IDIwNy4xMWgzMmwtMjIuMTYgOTAuMzFoLTM1LjQxbC0xMS4xOS0zNS42My03LjgzIDM1LjYzaC0zNy44M2wyNi42My05MC4zMWgzMS4zNGwxNSAzNi43NXptMTQ1Ljg2IDE4Mi4wOEgzMDYuNzlMMzIyLjYzIDMyOGE3OC44IDc4LjggMCAwIDAgMTEuNDcuODNjNDIuMzQgMCA3Ni42OS0zMy44NyA3Ni42OS03NS42NSAwLTMyLjY1LTIxLTYwLjQ2LTUwLjM4LTcxLjA2bDIxLjMzLTgyLjM1aDkyLjVsLTUzLjA1IDIwNS4zNmgxMDMuODd6TTIxMS43IDI2OS4zOUgxODdsLTEzLjggNTYuNDdoMjQuN2MxNi4xNCAwIDMyLjExLTMuMTggMzcuOTQtMjYuNjUgNS41Ni0yMi4zMS03Ljk5LTI5LjgyLTI0LjE0LTI5Ljgyek0yMzMgMTcwaC0yMS4zNEwyMDAgMjE3LjcxaDIxLjM3YzE4IDAgMzUuMzgtMTQuNjQgMzkuMjEtMzAuMTRDMjY1LjIzIDE2OC43MSAyNTEuMDcgMTcwIDIzMyAxNzB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1eXNlbGxhZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDE1MC43bDQyLjkgMTYwLjdoLTg1LjhMMjI0IDE1MC43ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS02NS4zIDMyNS4zbC05NC41LTI5OC43SDE1OS44TDY1LjMgNDA1LjNIMTU2bDExMS43LTkxLjYgMjQuMiA5MS42aDkwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbmFkaWFuTWFwbGVMZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4My44IDM1MS43YzIuNS0yLjUgMTA1LjItOTIuNCAxMDUuMi05Mi40bC0xNy41LTcuNWMtMTAtNC45LTcuNC0xMS41LTUtMTcuNCAyLjQtNy42IDIwLjEtNjcuMyAyMC4xLTY3LjNzLTQ3LjcgMTAtNTcuNyAxMi41Yy03LjUgMi40LTEwLTIuNS0xMi41LTcuNXMtMTUtMzIuNC0xNS0zMi40LTUyLjYgNTkuOS01NS4xIDYyLjNjLTEwIDcuNS0yMC4xIDAtMTcuNi0xMCAwLTEwIDI3LjYtMTI5LjYgMjcuNi0xMjkuNnMtMzAuMSAxNy40LTQwLjEgMjIuNGMtNy41IDUtMTIuNiA1LTE3LjYtNUMyOTMuNSA3Mi4zIDI1NS45IDAgMjU1LjkgMHMtMzcuNSA3Mi4zLTQyLjUgNzkuOGMtNSAxMC0xMCAxMC0xNy42IDUtMTAtNS00MC4xLTIyLjQtNDAuMS0yMi40UzE4My4zIDE4MiAxODMuMyAxOTJjMi41IDEwLTcuNSAxNy41LTE3LjYgMTAtMi41LTIuNS01NS4xLTYyLjMtNTUuMS02Mi4zUzk4LjEgMTY3IDk1LjYgMTcycy01IDkuOS0xMi41IDcuNUM3MyAxNzcgMjUuNCAxNjcgMjUuNCAxNjdzMTcuNiA1OS43IDIwLjEgNjcuM2MyLjQgNiA1IDEyLjUtNSAxNy40TDIzIDI1OS4zczEwMi42IDg5LjkgMTA1LjIgOTIuNGM1LjEgNSAxMCA3LjUgNS4xIDIyLjUtNS4xIDE1LTEwLjEgMzUuMS0xMC4xIDM1LjFzOTUuMi0yMC4xIDEwNS4zLTIyLjZjOC43LS45IDE4LjMgMi41IDE4LjMgMTIuNVMyNDEgNTEyIDI0MSA1MTJoMzBzLTUuOC0xMDIuNy01LjgtMTEyLjggOS41LTEzLjQgMTguNC0xMi41YzEwIDIuNSAxMDUuMiAyMi42IDEwNS4yIDIyLjZzLTUtMjAuMS0xMC0zNS4xIDAtMTcuNSA1LTIyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjQW1hem9uUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNC43IDIwMS44Yy4xLTExLjggMC0yMy41IDAtMzUuM3YtMzUuM2MwLTEuMy40LTIgMS40LTIuNyAxMS41LTggMjQuMS0xMi4xIDM4LjItMTEuMSAxMi41LjkgMjIuNyA3IDI4LjEgMjEuNyAzLjMgOC45IDQuMSAxOC4yIDQuMSAyNy43IDAgOC43LS43IDE3LjMtMy40IDI1LjYtNS43IDE3LjgtMTguNyAyNC43LTM1LjcgMjMuOS0xMS43LS41LTIxLjktNS0zMS40LTExLjctLjktLjgtMS40LTEuNi0xLjMtMi44em0xNTQuOSAxNC42YzQuNiAxLjggOS4zIDIgMTQuMSAxLjUgMTEuNi0xLjIgMjEuOS01LjcgMzEuMy0xMi41LjktLjYgMS4zLTEuMyAxLjMtMi41LS4xLTMuOSAwLTcuOSAwLTExLjggMC00LS4xLTggMC0xMiAwLTEuNC0uNC0yLTEuOC0yLjItNy0uOS0xMy45LTIuMi0yMC45LTIuOS03LS42LTE0LS4zLTIwLjggMS45LTYuNyAyLjItMTEuNyA2LjItMTMuNyAxMy4xLTEuNiA1LjQtMS42IDEwLjguMSAxNi4yIDEuNiA1LjUgNS4yIDkuMiAxMC40IDExLjJ6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHptLTIwNy41IDIzLjljLjQgMS43LjkgMy40IDEuNiA1LjEgMTYuNSA0MC42IDMyLjkgODEuMyA0OS41IDEyMS45IDEuNCAzLjUgMS43IDYuNC4yIDkuOS0yLjggNi4yLTQuOSAxMi42LTcuOCAxOC43LTIuNiA1LjUtNi43IDkuNS0xMi43IDExLjItNC4yIDEuMS04LjUgMS4zLTEyLjkuOS0yLjEtLjItNC4yLS43LTYuMy0uOC0yLjgtLjItNC4yIDEuMS00LjMgNC0uMSAyLjgtLjEgNS42IDAgOC4zLjEgNC42IDEuNiA2LjcgNi4yIDcuNSA0LjcuOCA5LjQgMS42IDE0LjIgMS43IDE0LjMuMyAyNS43LTUuNCAzMy4xLTE3LjkgMi45LTQuOSA1LjYtMTAuMSA3LjctMTUuNCAxOS44LTUwLjEgMzkuNS0xMDAuMyA1OS4yLTE1MC41LjYtMS41IDEuMS0zIDEuMy00LjYuNC0yLjQtLjctMy42LTMuMS0zLjctNS42LS4xLTExLjEgMC0xNi43IDAtMy4xIDAtNS4zIDEuNC02LjQgNC4zLS40IDEuMS0uOSAyLjMtMS4zIDMuNGwtMjkuMSA4My43Yy0yLjEgNi4xLTQuMiAxMi4xLTYuNSAxOC42LS40LS45LS42LTEuNC0uOC0xLjktMTAuOC0yOS45LTIxLjYtNTkuOS0zMi40LTg5LjgtMS43LTQuNy0zLjUtOS41LTUuMy0xNC4yLS45LTIuNS0yLjctNC01LjQtNC02LjQtLjEtMTIuOC0uMi0xOS4yLS4xLTIuMiAwLTMuMyAxLjYtMi44IDMuN3pNMjQyLjQgMjA2YzEuNyAxMS43IDcuNiAyMC44IDE4IDI2LjYgOS45IDUuNSAyMC43IDYuMiAzMS43IDQuNiAxMi43LTEuOSAyMy45LTcuMyAzMy44LTE1LjUuNC0uMy44LS42IDEuNC0xIC41IDMuMi45IDYuMiAxLjUgOS4yLjUgMi42IDIuMSA0LjMgNC41IDQuNCA0LjYuMSA5LjEuMSAxMy43IDAgMi4zLS4xIDMuOC0xLjYgNC0zLjkuMS0uOC4xLTEuNi4xLTIuM3YtODguOGMwLTMuNi0uMi03LjItLjctMTAuOC0xLjYtMTAuOC02LjItMTkuNy0xNS45LTI1LjQtNS42LTMuMy0xMS44LTUtMTguMi01LjktMy0uNC02LS43LTkuMS0xLjFoLTEwYy0uOC4xLTEuNi4zLTIuNS4zLTguMi40LTE2LjMgMS40LTI0LjIgMy41LTUuMSAxLjMtMTAgMy4yLTE1IDQuOS0zIDEtNC41IDMuMi00LjQgNi41LjEgMi44LS4xIDUuNiAwIDguMy4xIDQuMSAxLjggNS4yIDUuNyA0LjEgNi41LTEuNyAxMy4xLTMuNSAxOS43LTQuOCAxMC4zLTEuOSAyMC43LTIuNyAzMS4xLTEuMiA1LjQuOCAxMC41IDIuNCAxNC4xIDcgMy4xIDQgNC4yIDguOCA0LjQgMTMuNy4zIDYuOS4yIDEzLjkuMyAyMC44IDAgLjQtLjEuNy0uMiAxLjItLjQgMC0uOCAwLTEuMS0uMS04LjgtMi4xLTE3LjctMy42LTI2LjgtNC4xLTkuNS0uNS0xOC45LjEtMjcuOSAzLjItMTAuOCAzLjgtMTkuNSAxMC4zLTI0LjYgMjAuOC00LjEgOC4zLTQuNiAxNy0zLjQgMjUuOHpNOTguNyAxMDYuOXYxNzUuM2MwIC44IDAgMS43LjEgMi41LjIgMi41IDEuNyA0LjEgNC4xIDQuMiA1LjkuMSAxMS44LjEgMTcuNyAwIDIuNSAwIDQtMS43IDQuMS00LjEuMS0uOC4xLTEuNy4xLTIuNXYtNjAuN2MuOS43IDEuNCAxLjIgMS45IDEuNiAxNSAxMi41IDMyLjIgMTYuNiA1MS4xIDEyLjkgMTcuMS0zLjQgMjguOS0xMy45IDM2LjctMjkuMiA1LjgtMTEuNiA4LjMtMjQuMSA4LjctMzcgLjUtMTQuMy0xLTI4LjQtNi44LTQxLjctNy4xLTE2LjQtMTguOS0yNy4zLTM2LjctMzAuOS0yLjctLjYtNS41LS44LTguMi0xLjJoLTdjLTEuMi4yLTIuNC4zLTMuNi41LTExLjcgMS40LTIyLjMgNS44LTMxLjggMTIuNy0yIDEuNC0zLjkgMy01LjkgNC41LS4xLS41LS4zLS44LS40LTEuMi0uNC0yLjMtLjctNC42LTEuMS02LjktLjYtMy45LTIuNS01LjUtNi40LTUuNmgtOS43Yy01LjktLjEtNi45IDEtNi45IDYuOHpNNDkzLjYgMzM5Yy0yLjctLjctNS4xIDAtNy42IDEtNDMuOSAxOC40LTg5LjUgMzAuMi0xMzYuOCAzNS44LTE0LjUgMS43LTI5LjEgMi44LTQzLjcgMy4yLTI2LjYuNy01My4yLS44LTc5LjYtNC4zLTE3LjgtMi40LTM1LjUtNS43LTUzLTkuOS0zNy04LjktNzIuNy0yMS43LTEwNi43LTM4LjgtOC44LTQuNC0xNy40LTkuMy0yNi4xLTE0LTMuOC0yLjEtNi4yLTEuNS04LjIgMi4xdjEuN2MxLjIgMS42IDIuMiAzLjQgMy43IDQuOCAzNiAzMi4yIDc2LjYgNTYuNSAxMjIgNzIuOSAyMS45IDcuOSA0NC40IDEzLjcgNjcuMyAxNy41IDE0IDIuMyAyOCAzLjggNDIuMiA0LjUgMyAuMSA2IC4yIDkgLjQuNyAwIDEuNC4yIDIuMS4zaDE3LjdjLjctLjEgMS40LS4zIDIuMS0uMyAxNC45LS40IDI5LjgtMS44IDQ0LjYtNCAyMS40LTMuMiA0Mi40LTguMSA2Mi45LTE0LjcgMjkuNi05LjYgNTcuNy0yMi40IDgzLjQtNDAuMSAyLjgtMS45IDUuNy0zLjggOC02LjIgNC4zLTQuNCAyLjMtMTAuNC0zLjMtMTEuOXptNTAuNC0yNy43Yy0uOC00LjItNC01LjgtNy42LTctNS43LTEuOS0xMS42LTIuOC0xNy42LTMuMy0xMS0uOS0yMi0uNC0zMi44IDEuNi0xMiAyLjItMjMuNCA2LjEtMzMuNSAxMy4xLTEuMi44LTIuNCAxLjgtMy4xIDMtLjYuOS0uNyAyLjMtLjUgMy40LjMgMS4zIDEuNyAxLjYgMyAxLjUuNiAwIDEuMiAwIDEuOC0uMWwxOS41LTIuMWM5LjYtLjkgMTkuMi0xLjUgMjguOC0uOCA0LjEuMyA4LjEgMS4yIDEyIDIuMiA0LjMgMS4xIDYuMiA0LjQgNi40IDguNy4zIDYuNy0xLjIgMTMuMS0yLjkgMTkuNS0zLjUgMTIuOS04LjMgMjUuNC0xMy4zIDM3LjgtLjMuOC0uNyAxLjctLjggMi41LS40IDIuNSAxIDQgMy40IDMuNSAxLjQtLjMgMy0xLjEgNC0yLjEgMy43LTMuNiA3LjUtNy4yIDEwLjYtMTEuMiAxMC43LTEzLjggMTctMjkuNiAyMC43LTQ2LjYuNy0zIDEuMi02LjEgMS43LTkuMS4yLTQuNy4yLTkuNi4yLTE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjQW1leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjUuMSAxNjcuOGMwLTE2LjQtMTQuMS0xOC40LTI3LjQtMTguNGwtMzkuMS0uM3Y2OS4zSDI3NXYtMjUuMWgxOGMxOC40IDAgMTQuNSAxMC4zIDE0LjggMjUuMWgxNi42di0xMy41YzAtOS4yLTEuNS0xNS4xLTExLTE4LjQgNy40LTMgMTEuOC0xMC43IDExLjctMTguN3ptLTI5LjQgMTEuM0gyNzV2LTE1LjNoMjFjNS4xIDAgMTAuNyAxIDEwLjcgNy40IDAgNi42LTUuMyA3LjktMTEgNy45ek0yNzkgMjY4LjZoLTUyLjdsLTIxIDIyLjgtMjAuNS0yMi44aC02Ni41bC0uMSA2OS4zaDY1LjRsMjEuMy0yMyAyMC40IDIzaDMyLjJsLjEtMjMuM2MxOC45IDAgNDkuMyA0LjYgNDkuMy0yMy4zIDAtMTcuMy0xMi4zLTIyLjctMjcuOS0yMi43em0tMTAzLjggNTQuN2gtNDAuNnYtMTMuOGgzNi4zdi0xNC4xaC0zNi4zdi0xMi41aDQxLjdsMTcuOSAyMC4yem02NS44IDguMmwtMjUuMy0yOC4xTDI0MSAyNzZ6bTM3LjgtMzFoLTIxLjJ2LTE3LjZoMjEuNWM1LjYgMCAxMC4yIDIuMyAxMC4yIDguNCAwIDYuNC00LjYgOS4yLTEwLjUgOS4yem0tMzEuNi0xMzYuN3YtMTQuNmgtNTUuNXY2OS4zaDU1LjV2LTE0LjNoLTM4Ljl2LTEzLjhoMzcuOHYtMTQuMWgtMzcuOHYtMTIuNXpNNTc2IDI1NS40aC0uMnptLTE5NC42IDMxLjljMC0xNi40LTE0LjEtMTguNy0yNy4xLTE4LjdoLTM5LjRsLS4xIDY5LjNoMTYuNmwuMS0yNS4zaDE3LjZjMTEgMCAxNC44IDIgMTQuOCAxMy44bC0uMSAxMS41aDE2LjZsLjEtMTMuOGMwLTguOS0xLjgtMTUuMS0xMS0xOC40IDcuNy0zLjEgMTEuOC0xMC44IDExLjktMTguNHptLTI5LjIgMTEuMmgtMjAuN3YtMTUuNmgyMWM1LjEgMCAxMC43IDEgMTAuNyA3LjQgMCA2LjktNS40IDguMi0xMSA4LjJ6bS0xNzIuOC04MHYtNjkuM2gtMjcuNmwtMTkuNyA0Ny0yMS43LTQ3SDgzLjN2NjUuN2wtMjguMS02NS43SDMwLjdMMSAyMTguNWgxNy45bDYuNC0xNS4zaDM0LjVsNi40IDE1LjNIMTAwdi01NC4ybDI0IDU0LjJoMTQuNmwyNC01NC4ydjU0LjJ6TTMxLjIgMTg4LjhsMTEuMi0yNy42IDExLjUgMjcuNnptNDc3LjQgMTU4Ljl2LTQuNWMtMTAuOCA1LjYtMy45IDQuNS0xNTYuNyA0LjUgMC0yNS4yLjEtMjMuOSAwLTI1LjItMS43LS4xLTMuMi0uMS05LjQtLjEgMCAxNy45LS4xIDYuOC0uMSAyNS4zaC0zOS42YzAtMTIuMS4xLTE1LjMuMS0yOS4yLTEwIDYtMjIuOCA2LjQtMzQuMyA2LjIgMCAxNC43LS4xIDguMy0uMSAyM2gtNDguOWMtNS4xLTUuNy0yLjctMy4xLTE1LjQtMTcuNC0zLjIgMy41LTEyLjggMTMuOS0xNi4xIDE3LjRoLTgydi05Mi4zaDgzLjFjNSA1LjYgMi44IDMuMSAxNS41IDE3LjIgMy4yLTMuNSAxMi4yLTEzLjQgMTUuNy0xNy4yaDU4YzkuOCAwIDE4IDEuOSAyNC4zIDUuNnYtNS42YzU0LjMgMCA2NC4zLTEuNCA3NS43IDUuMXYtNS4xaDc4LjJ2NS4yYzExLjQtNi45IDE5LjYtNS4yIDY0LjktNS4ydjVjMTAuMy01LjkgMTYuNi01LjIgNTQuMy01VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4aC00ODBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djEwOS44YzkuNC0yMS45IDE5LjctNDYgMjMuMS01My45aDM5LjdjNC4zIDEwLjEgMS42IDMuNyA5IDIxLjF2LTIxLjFoNDZjMi45IDYuMiAxMS4xIDI0IDEzLjkgMzAgNS44LTEzLjYgMTAuMS0yMy45IDEyLjYtMzBoMTAzYzAtLjEgMTEuNSAwIDExLjYgMCA0My43LjIgNTMuNi0uOCA2NC40IDUuM3YtNS4zSDM2M3Y5LjNjNy42LTYuMSAxNy45LTkuMyAzMC43LTkuM2gyNy42YzAgLjUgMS45LjMgMi4zLjNINDU2YzQuMiA5LjggMi42IDYgOC44IDIwLjZ2LTIwLjZoNDMuM2M0LjkgOC0xLTEuOCAxMS4yIDE4LjR2LTE4LjRoMzkuOXY5MmgtNDEuNmMtNS40LTktMS40LTIuMi0xMy4yLTIxLjl2MjEuOWgtNTIuOGMtNi40LTE0LjgtLjEtLjMtNi42LTE1LjNoLTE5Yy00LjIgMTAtMi4yIDUuMi02LjQgMTUuM2gtMjYuOGMtMTIuMyAwLTIyLjMtMy0yOS43LTguOXY4LjloLTY2LjVjLS4zLTEzLjktLjEtMjQuOC0uMS0yNC44LTEuOC0uMy0zLjQtLjItOS44LS4ydjI1LjFIMTUxLjJ2LTExLjRjLTIuNSA1LjYtMi43IDUuOS01LjEgMTEuNGgtMjkuNWMtNC04LjktMi45LTYuNC01LjEtMTEuNHYxMS40SDU4LjZjLTQuMi0xMC4xLTIuMi01LjMtNi40LTE1LjNIMzNjLTQuMiAxMC0yLjIgNS4yLTYuNCAxNS4zSDBWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MC4xYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di05MC40Yy0xMi43IDguMy0zMi43IDYuMS02Ny41IDYuMXptMzYuMy02NC41SDU3NXYtMTQuNmgtMzIuOWMtMTIuOCAwLTIzLjggNi42LTIzLjggMjAuNyAwIDMzIDQyLjcgMTIuOCA0Mi43IDI3LjQgMCA1LjEtNC4zIDYuNC04LjQgNi40aC0zMmwtLjEgMTQuOGgzMmM4LjQgMCAxNy42LTEuOCAyMi41LTguOXYtMjUuOGMtMTAuNS0xMy44LTM5LjMtMS4zLTM5LjMtMTMuNSAwLTUuOCA0LjYtNi41IDkuMi02LjV6bS01NyAzOS44aC0zMi4ybC0uMSAxNC44aDMyLjJjMTQuOCAwIDI2LjItNS42IDI2LjItMjIgMC0zMy4yLTQyLjktMTEuMi00Mi45LTI2LjMgMC01LjYgNC45LTYuNCA5LjItNi40aDMwLjR2LTE0LjZoLTMzLjJjLTEyLjggMC0yMy41IDYuNi0yMy41IDIwLjcgMCAzMyA0Mi43IDEyLjUgNDIuNyAyNy40LS4xIDUuNC00LjcgNi40LTguOCA2LjR6bS00Mi4yLTQwLjF2LTE0LjNoLTU1LjJsLS4xIDY5LjNoNTUuMmwuMS0xNC4zLTM4LjYtLjN2LTEzLjhINDQ1di0xNC4xaC0zNy44di0xMi41em0tNTYuMy0xMDguMWMtLjMuMi0xLjQgMi4yLTEuNCA3LjYgMCA2IC45IDcuNyAxLjEgNy45LjIuMSAxLjEuNSAzLjQuNWw3LjMtMTYuOWMtMS4xIDAtMi4xLS4xLTMuMS0uMS01LjYgMC03IC43LTcuMyAxem0yMC40LTEwLjVoLS4xem0tMTYuMi0xNS4yYy0yMy41IDAtMzQgMTItMzQgMzUuMyAwIDIyLjIgMTAuMiAzNCAzMyAzNGgxOS4ybDYuNC0xNS4zaDM0LjNsNi42IDE1LjNoMzMuN3YtNTEuOWwzMS4yIDUxLjloMjMuNnYtNjloLTE2Ljl2NDguMWwtMjkuMS00OC4xaC0yNS4zdjY1LjRsLTI3LjktNjUuNGgtMjQuOGwtMjMuNSA1NC41aC03LjRjLTEzLjMgMC0xNi4xLTguMS0xNi4xLTE5LjkgMC0yMy44IDE1LjctMjAgMzMuMS0xOS43di0xNS4yem00Mi4xIDEyLjFsMTEuMiAyNy42aC0yMi44em0tMTAxLjEtMTJ2NjkuM2gxNi45di02OS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0FwcGxlUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMi4yIDIxOC40YzAgMTcuMi0xMC41IDI3LjEtMjkgMjcuMWgtMjQuM3YtNTQuMmgyNC40YzE4LjQgMCAyOC45IDkuOCAyOC45IDI3LjF6bTQ3LjUgNjIuNmMwIDguMyA3LjIgMTMuNyAxOC41IDEzLjcgMTQuNCAwIDI1LjItOS4xIDI1LjItMjEuOXYtNy43bC0yMy41IDEuNWMtMTMuMy45LTIwLjIgNS44LTIwLjIgMTQuNHpNNTc2IDc5djM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNzljMC0yNi41IDIxLjUtNDggNDgtNDhoNDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xMjcuOCAxOTcuMmM4LjQuNyAxNi44LTQuMiAyMi4xLTEwLjQgNS4yLTYuNCA4LjYtMTUgNy43LTIzLjctNy40LjMtMTYuNiA0LjktMjEuOSAxMS4zLTQuOCA1LjUtOC45IDE0LjQtNy45IDIyLjh6bTYwLjYgNzQuNWMtLjItLjItMTkuNi03LjYtMTkuOC0zMC0uMi0xOC43IDE1LjMtMjcuNyAxNi0yOC4yLTguOC0xMy0yMi40LTE0LjQtMjcuMS0xNC43LTEyLjItLjctMjIuNiA2LjktMjguNCA2LjktNS45IDAtMTQuNy02LjYtMjQuMy02LjQtMTIuNS4yLTI0LjIgNy4zLTMwLjUgMTguNi0xMy4xIDIyLjYtMy40IDU2IDkuMyA3NC40IDYuMiA5LjEgMTMuNyAxOS4xIDIzLjUgMTguNyA5LjMtLjQgMTMtNiAyNC4yLTYgMTEuMyAwIDE0LjUgNiAyNC4zIDUuOSAxMC4yLS4yIDE2LjUtOS4xIDIyLjgtMTguMiA2LjktMTAuNCA5LjgtMjAuNCAxMC0yMXptMTM1LjQtNTMuNGMwLTI2LjYtMTguNS00NC44LTQ0LjktNDQuOGgtNTEuMnYxMzYuNGgyMS4ydi00Ni42aDI5LjNjMjYuOCAwIDQ1LjYtMTguNCA0NS42LTQ1em05MCAyMy43YzAtMTkuNy0xNS44LTMyLjQtNDAtMzIuNC0yMi41IDAtMzkuMSAxMi45LTM5LjcgMzAuNWgxOS4xYzEuNi04LjQgOS40LTEzLjkgMjAtMTMuOSAxMyAwIDIwLjIgNiAyMC4yIDE3LjJ2Ny41bC0yNi40IDEuNmMtMjQuNiAxLjUtMzcuOSAxMS42LTM3LjkgMjkuMSAwIDE3LjcgMTMuNyAyOS40IDMzLjQgMjkuNCAxMy4zIDAgMjUuNi02LjcgMzEuMi0xNy40aC40VjMxMGgxOS42di02OHpNNTE2IDIxMC45aC0yMS41bC0yNC45IDgwLjZoLS40bC0yNC45LTgwLjZINDIybDM1LjkgOTkuMy0xLjkgNmMtMy4yIDEwLjItOC41IDE0LjItMTcuOSAxNC4yLTEuNyAwLTQuOS0uMi02LjItLjN2MTYuNGMxLjIuNCA2LjUuNSA4LjEuNSAyMC43IDAgMzAuNC03LjkgMzguOS0zMS44TDUxNiAyMTAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NEaW5lcnNDbHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzOS43IDc5LjljLTk2LjkgMC0xNzUuOCA3OC42LTE3NS44IDE3NS44IDAgOTYuOSA3OC45IDE3NS44IDE3NS44IDE3NS44IDk3LjIgMCAxNzUuOC03OC45IDE3NS44LTE3NS44IDAtOTcuMi03OC42LTE3NS44LTE3NS44LTE3NS44em0tMzkuOSAyNzkuNmMtNDEuNy0xNS45LTcxLjQtNTYuNC03MS40LTEwMy44czI5LjctODcuOSA3MS40LTEwNC4xdjIwNy45em03OS44LjNWMTUxLjZjNDEuNyAxNi4yIDcxLjQgNTYuNyA3MS40IDEwNC4xcy0yOS43IDg3LjktNzEuNCAxMDQuMXpNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMzI5LjcgNDQ4aC05MC4zYy0xMDYuMiAwLTE5My44LTg1LjUtMTkzLjgtMTkwLjJDNDUuNiAxNDMuMiAxMzMuMiA2NCAyMzkuNCA2NGg5MC4zYzEwNSAwIDIwMC43IDc5LjIgMjAwLjcgMTkzLjggMCAxMDQuNy05NS43IDE5MC4yLTIwMC43IDE5MC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0Rpc2NvdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyMC40IDE5Ni4xYzAtNy45LTUuNS0xMi4xLTE1LjYtMTIuMWgtNC45djI0LjloNC43YzEwLjMgMCAxNS44LTQuNCAxNS44LTEyLjh6TTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS00NC4xIDEzOC45YzIyLjYgMCA1Mi45LTQuMSA1Mi45IDI0LjQgMCAxMi42LTYuNiAyMC43LTE4LjcgMjMuMmwyNS44IDM0LjRoLTE5LjZsLTIyLjItMzIuOGgtMi4ydjMyLjhoLTE2em0tNTUuOS4xaDQ1LjN2MTRINDQ0djE4LjJoMjguM1YyMTdINDQ0djIyLjJoMjkuM1YyNTNINDI4em0tNjguNyAwbDIxLjkgNTUuMiAyMi4yLTU1LjJoMTcuNWwtMzUuNSA4NC4yaC04LjZsLTM1LTg0LjJ6bS01NS45LTNjMjQuNyAwIDQ0LjYgMjAgNDQuNiA0NC42IDAgMjQuNy0yMCA0NC42LTQ0LjYgNDQuNi0yNC43IDAtNDQuNi0yMC00NC42LTQ0LjYgMC0yNC43IDIwLTQ0LjYgNDQuNi00NC42em0tNDkuMyA2LjF2MTljLTIwLjEtMjAuMS00Ni44LTQuNy00Ni44IDE5IDAgMjUgMjcuNSAzOC41IDQ2LjggMTkuMnYxOWMtMjkuNyAxNC4zLTYzLjMtNS43LTYzLjMtMzguMiAwLTMxLjIgMzMuMS01MyA2My4zLTM4em0tOTcuMiA2Ni4zYzExLjQgMCAyMi40LTE1LjMtMy4zLTI0LjQtMTUtNS41LTIwLjItMTEuNC0yMC4yLTIyLjcgMC0yMy4yIDMwLjYtMzEuNCA0OS43LTE0LjNsLTguNCAxMC44Yy0xMC40LTExLjYtMjQuOS02LjItMjQuOSAyLjUgMCA0LjQgMi43IDYuOSAxMi4zIDEwLjMgMTguMiA2LjYgMjMuNiAxMi41IDIzLjYgMjUuNiAwIDI5LjUtMzguOCAzNy40LTU2LjYgMTEuM2wxMC4zLTkuOWMzLjcgNy4xIDkuOSAxMC44IDE3LjUgMTAuOHpNNTUuNCAyNTNIMzJ2LTgyaDIzLjRjMjYuMSAwIDQ0LjEgMTcgNDQuMSA0MS4xIDAgMTguNS0xMy4yIDQwLjktNDQuMSA0MC45em02Ny41IDBoLTE2di04MmgxNnpNNTQ0IDQzM2MwIDguMi02LjggMTUtMTUgMTVIMTI4YzE4OS42LTM1LjYgMzgyLjctMTM5LjIgNDE2LTE2MHpNNzQuMSAxOTEuNmMtNS4yLTQuOS0xMS42LTYuNi0yMS45LTYuNkg0OHY1NC4yaDQuMmMxMC4zIDAgMTctMiAyMS45LTYuNCA1LjctNS4yIDguOS0xMi44IDguOS0yMC43cy0zLjItMTUuNS04LjktMjAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NKY2IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMxLjUgMjQ0LjNWMjEyYzQxLjIgMCAzOC41LjIgMzguNS4yIDcuMyAxLjMgMTMuMyA3LjMgMTMuMyAxNiAwIDguOC02IDE0LjUtMTMuMyAxNS44LTEuMi40LTMuMy4zLTM4LjUuM3ptNDIuOCAyMC4yYy0yLjgtLjctMy4zLS41LTQyLjgtLjV2MzVjMzkuNiAwIDQwIC4yIDQyLjgtLjUgNy41LTEuNSAxMy41LTggMTMuNS0xNyAwLTguNy02LTE1LjUtMTMuNS0xN3pNNTc2IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xODIgMTkyLjNoLTU3YzAgNjcuMSAxMC43IDEwOS43LTM1LjggMTA5LjctMTkuNSAwLTM4LjgtNS43LTU3LjItMTQuOHYyOGMzMCA4LjMgNjggOC4zIDY4IDguMyA5Ny45IDAgODItNDcuNyA4Mi0xMzEuMnptMTc4LjUgNC41Yy02My40LTE2LTE2NS0xNC45LTE2NSA1OS4zIDAgNzcuMSAxMDguMiA3My42IDE2NSA1OS4yVjI4N0MzMTIuOSAzMTEuNyAyNTMgMzA5IDI1MyAyNTZzNTkuOC01NS42IDEwNy41LTMxLjJ2LTI4ek01NDQgMjg2LjVjMC0xOC41LTE2LjUtMzAuNS0zOC0zMnYtLjhjMTkuNS0yLjcgMzAuMy0xNS41IDMwLjMtMzAuMiAwLTE5LTE1LjctMzAtMzctMzEgMCAwIDYuMy0uMy0xMjAuMy0uM3YxMjcuNWgxMjIuN2MyNC4zLjEgNDIuMy0xMi45IDQyLjMtMzMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NNYXN0ZXJjYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Mi45IDQxMC4zYzAgNi44LTQuNiAxMS43LTExLjIgMTEuNy02LjggMC0xMS4yLTUuMi0xMS4yLTExLjcgMC02LjUgNC40LTExLjcgMTEuMi0xMS43IDYuNiAwIDExLjIgNS4yIDExLjIgMTEuN3ptLTMxMC44LTExLjdjLTcuMSAwLTExLjIgNS4yLTExLjIgMTEuNyAwIDYuNSA0LjEgMTEuNyAxMS4yIDExLjcgNi41IDAgMTAuOS00LjkgMTAuOS0xMS43LS4xLTYuNS00LjQtMTEuNy0xMC45LTExLjd6bTExNy41LS4zYy01LjQgMC04LjcgMy41LTkuNSA4LjdoMTkuMWMtLjktNS43LTQuNC04LjctOS42LTguN3ptMTA3LjguM2MtNi44IDAtMTAuOSA1LjItMTAuOSAxMS43IDAgNi41IDQuMSAxMS43IDEwLjkgMTEuNyA2LjggMCAxMS4yLTQuOSAxMS4yLTExLjcgMC02LjUtNC40LTExLjctMTEuMi0xMS43em0xMDUuOSAyNi4xYzAgLjMuMy41LjMgMS4xIDAgLjMtLjMuNS0uMyAxLjEtLjMuMy0uMy41LS41LjgtLjMuMy0uNS41LTEuMS41LS4zLjMtLjUuMy0xLjEuMy0uMyAwLS41IDAtMS4xLS4zLS4zIDAtLjUtLjMtLjgtLjUtLjMtLjMtLjUtLjUtLjUtLjgtLjMtLjUtLjMtLjgtLjMtMS4xIDAtLjUgMC0uOC4zLTEuMSAwLS41LjMtLjguNS0xLjEuMy0uMy41LS4zLjgtLjUuNS0uMy44LS4zIDEuMS0uMy41IDAgLjggMCAxLjEuMy41LjMuOC4zIDEuMS41cy4yLjYuNSAxLjF6bS0yLjIgMS40Yy41IDAgLjUtLjMuOC0uMy4zLS4zLjMtLjUuMy0uOCAwLS4zIDAtLjUtLjMtLjgtLjMgMC0uNS0uMy0xLjEtLjNoLTEuNnYzLjVoLjhWNDI2aC4zbDEuMSAxLjRoLjhsLTEuMS0xLjN6TTU3NiA4MXYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgxYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNNjQgMjIwLjZjMCA3Ni41IDYyLjEgMTM4LjUgMTM4LjUgMTM4LjUgMjcuMiAwIDUzLjktOC4yIDc2LjUtMjMuMS03Mi45LTU5LjMtNzIuNC0xNzEuMiAwLTIzMC41LTIyLjYtMTUtNDkuMy0yMy4xLTc2LjUtMjMuMS03Ni40LS4xLTEzOC41IDYyLTEzOC41IDEzOC4yem0yMjQgMTA4LjhjNzAuNS01NSA3MC4yLTE2Mi4yIDAtMjE3LjUtNzAuMiA1NS4zLTcwLjUgMTYyLjYgMCAyMTcuNXptLTE0Mi4zIDc2LjNjMC04LjctNS43LTE0LjQtMTQuNy0xNC43LTQuNiAwLTkuNSAxLjQtMTIuOCA2LjUtMi40LTQuMS02LjUtNi41LTEyLjItNi41LTMuOCAwLTcuNiAxLjQtMTAuNiA1LjRWMzkyaC04LjJ2MzYuN2g4LjJjMC0xOC45LTIuNS0zMC4yIDktMzAuMiAxMC4yIDAgOC4yIDEwLjIgOC4yIDMwLjJoNy45YzAtMTguMy0yLjUtMzAuMiA5LTMwLjIgMTAuMiAwIDguMiAxMCA4LjIgMzAuMmg4LjJ2LTIzem00NC45LTEzLjdoLTcuOXY0LjRjLTIuNy0zLjMtNi41LTUuNC0xMS43LTUuNC0xMC4zIDAtMTguMiA4LjItMTguMiAxOS4zIDAgMTEuMiA3LjkgMTkuMyAxOC4yIDE5LjMgNS4yIDAgOS0xLjkgMTEuNy01LjR2NC42aDcuOVYzOTJ6bTQwLjUgMjUuNmMwLTE1LTIyLjktOC4yLTIyLjktMTUuMiAwLTUuNyAxMS45LTQuOCAxOC41LTEuMWwzLjMtNi41Yy05LjQtNi4xLTMwLjItNi0zMC4yIDguMiAwIDE0LjMgMjIuOSA4LjMgMjIuOSAxNSAwIDYuMy0xMy41IDUuOC0yMC43LjhsLTMuNSA2LjNjMTEuMiA3LjYgMzIuNiA2IDMyLjYtNy41em0zNS40IDkuM2wtMi4yLTYuOGMtMy44IDIuMS0xMi4yIDQuNC0xMi4yLTQuMXYtMTYuNmgxMy4xVjM5MmgtMTMuMXYtMTEuMmgtOC4yVjM5MmgtNy42djcuM2g3LjZWNDE2YzAgMTcuNiAxNy4zIDE0LjQgMjIuNiAxMC45em0xMy4zLTEzLjRoMjcuNWMwLTE2LjItNy40LTIyLjYtMTcuNC0yMi42LTEwLjYgMC0xOC4yIDcuOS0xOC4yIDE5LjMgMCAyMC41IDIyLjYgMjMuOSAzMy44IDE0LjJsLTMuOC02Yy03LjggNi40LTE5LjYgNS44LTIxLjktNC45em01OS4xLTIxLjVjLTQuNi0yLTExLjYtMS44LTE1LjIgNC40VjM5MmgtOC4ydjM2LjdoOC4yVjQwOGMwLTExLjYgOS41LTEwLjEgMTIuOC04LjRsMi40LTcuNnptMTAuNiAxOC4zYzAtMTEuNCAxMS42LTE1LjEgMjAuNy04LjRsMy44LTYuNWMtMTEuNi05LjEtMzIuNy00LjEtMzIuNyAxNSAwIDE5LjggMjIuNCAyMy44IDMyLjcgMTVsLTMuOC02LjVjLTkuMiA2LjUtMjAuNyAyLjYtMjAuNy04LjZ6bTY2LjctMTguM0g0MDh2NC40Yy04LjMtMTEtMjkuOS00LjgtMjkuOSAxMy45IDAgMTkuMiAyMi40IDI0LjcgMjkuOSAxMy45djQuNmg4LjJWMzkyem0zMy43IDBjLTIuNC0xLjItMTEtMi45LTE1LjIgNC40VjM5MmgtNy45djM2LjdoNy45VjQwOGMwLTExIDktMTAuMyAxMi44LTguNGwyLjQtNy42em00MC4zLTE0LjloLTcuOXYxOS4zYy04LjItMTAuOS0yOS45LTUuMS0yOS45IDEzLjkgMCAxOS40IDIyLjUgMjQuNiAyOS45IDEzLjl2NC42aDcuOXYtNTEuN3ptNy42LTc1LjF2NC42aC44VjMwMmgxLjl2LS44aC00LjZ2LjhoMS45em02LjYgMTIzLjhjMC0uNSAwLTEuMS0uMy0xLjYtLjMtLjMtLjUtLjgtLjgtMS4xLS4zLS4zLS44LS41LTEuMS0uOC0uNSAwLTEuMS0uMy0xLjYtLjMtLjMgMC0uOC4zLTEuNC4zLS41LjMtLjguNS0xLjEuOC0uNS4zLS44LjgtLjggMS4xLS4zLjUtLjMgMS4xLS4zIDEuNiAwIC4zIDAgLjguMyAxLjQgMCAuMy4zLjguOCAxLjEuMy4zLjUuNSAxLjEuOC41LjMgMS4xLjMgMS40LjMuNSAwIDEuMSAwIDEuNi0uMy4zLS4zLjgtLjUgMS4xLS44LjMtLjMuNS0uOC44LTEuMS4zLS42LjMtMS4xLjMtMS40em0zLjItMTI0LjdoLTEuNGwtMS42IDMuNS0xLjYtMy41aC0xLjR2NS40aC44di00LjFsMS42IDMuNWgxLjFsMS40LTMuNXY0LjFoMS4xdi01LjR6bTQuNC04MC41YzAtNzYuMi02Mi4xLTEzOC4zLTEzOC41LTEzOC4zLTI3LjIgMC01My45IDguMi03Ni41IDIzLjEgNzIuMSA1OS4zIDczLjIgMTcxLjUgMCAyMzAuNSAyMi42IDE1IDQ5LjUgMjMuMSA3Ni41IDIzLjEgNzYuNC4xIDEzOC41LTYxLjkgMTM4LjUtMTM4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjUGF5cGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4zIDI1OC4yYzAgMTIuMi05LjcgMjEuNS0yMiAyMS41LTkuMiAwLTE2LTUuMi0xNi0xNSAwLTEyLjIgOS41LTIyIDIxLjctMjIgOS4zIDAgMTYuMyA1LjcgMTYuMyAxNS41ek04MC41IDIwOS43aC00LjdjLTEuNSAwLTMgMS0zLjIgMi43bC00LjMgMjYuNyA4LjItLjNjMTEgMCAxOS41LTEuNSAyMS41LTE0LjIgMi4zLTEzLjQtNi4yLTE0LjktMTcuNS0xNC45em0yODQgMEgzNjBjLTEuOCAwLTMgMS0zLjIgMi43bC00LjIgMjYuNyA4LS4zYzEzIDAgMjItMyAyMi0xOC0uMS0xMC42LTkuNi0xMS4xLTE4LjEtMTEuMXpNNTc2IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xMjguMyAyMTUuNGMwLTIxLTE2LjItMjgtMzQuNy0yOGgtNDBjLTIuNSAwLTUgMi01LjIgNC43TDMyIDI5NC4yYy0uMyAyIDEuMiA0IDMuMiA0aDE5YzIuNyAwIDUuMi0yLjkgNS41LTUuN2w0LjUtMjYuNmMxLTcuMiAxMy4yLTQuNyAxOC00LjcgMjguNiAwIDQ2LjEtMTcgNDYuMS00NS44em04NC4yIDguOGgtMTljLTMuOCAwLTQgNS41LTQuMiA4LjItNS44LTguNS0xNC4yLTEwLTIzLjctMTAtMjQuNSAwLTQzLjIgMjEuNS00My4yIDQ1LjIgMCAxOS41IDEyLjIgMzIuMiAzMS43IDMyLjIgOSAwIDIwLjItNC45IDI2LjUtMTEuOS0uNSAxLjUtMSA0LjctMSA2LjIgMCAyLjMgMSA0IDMuMiA0SDIwMGMyLjcgMCA1LTIuOSA1LjUtNS43bDEwLjItNjQuM2MuMy0xLjktMS4yLTMuOS0zLjItMy45em00MC41IDk3LjlsNjMuNy05Mi42Yy41LS41LjUtMSAuNS0xLjcgMC0xLjctMS41LTMuNS0zLjItMy41aC0xOS4yYy0xLjcgMC0zLjUgMS00LjUgMi41bC0yNi41IDM5LTExLTM3LjVjLS44LTIuMi0zLTQtNS41LTRoLTE4LjdjLTEuNyAwLTMuMiAxLjgtMy4yIDMuNSAwIDEuMiAxOS41IDU2LjggMjEuMiA2Mi4xLTIuNyAzLjgtMjAuNSAyOC42LTIwLjUgMzEuNiAwIDEuOCAxLjUgMy4yIDMuMiAzLjJoMTkuMmMxLjgtLjEgMy41LTEuMSA0LjUtMi42em0xNTkuMy0xMDYuN2MwLTIxLTE2LjItMjgtMzQuNy0yOGgtMzkuN2MtMi43IDAtNS4yIDItNS41IDQuN2wtMTYuMiAxMDJjLS4yIDIgMS4zIDQgMy4yIDRoMjAuNWMyIDAgMy41LTEuNSA0LTMuMmw0LjUtMjljMS03LjIgMTMuMi00LjcgMTgtNC43IDI4LjQgMCA0NS45LTE3IDQ1LjktNDUuOHptODQuMiA4LjhoLTE5Yy0zLjggMC00IDUuNS00LjMgOC4yLTUuNS04LjUtMTQtMTAtMjMuNy0xMC0yNC41IDAtNDMuMiAyMS41LTQzLjIgNDUuMiAwIDE5LjUgMTIuMiAzMi4yIDMxLjcgMzIuMiA5LjMgMCAyMC41LTQuOSAyNi41LTExLjktLjMgMS41LTEgNC43LTEgNi4yIDAgMi4zIDEgNCAzLjIgNEg0ODRjMi43IDAgNS0yLjkgNS41LTUuN2wxMC4yLTY0LjNjLjMtMS45LTEuMi0zLjktMy4yLTMuOXptNDcuNS0zMy4zYzAtMi0xLjUtMy41LTMuMi0zLjVoLTE4LjVjLTEuNSAwLTMgMS4yLTMuMiAyLjdsLTE2LjIgMTA0LS4zLjVjMCAxLjggMS41IDMuNSAzLjUgMy41aDE2LjVjMi41IDAgNS0yLjkgNS4yLTUuN0w1NDQgMTkxLjJ2LS4zem0tOTAgNTEuOGMtMTIuMiAwLTIxLjcgOS43LTIxLjcgMjIgMCA5LjcgNyAxNSAxNi4yIDE1IDEyIDAgMjEuNy05LjIgMjEuNy0yMS41LjEtOS44LTYuOS0xNS41LTE2LjItMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NTdHJpcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDkyLjQgMjIwLjhjLTguOSAwLTE4LjcgNi43LTE4LjcgMjIuN2gzNi43YzAtMTYtOS4zLTIyLjctMTgtMjIuN3pNMzc1IDIyMy40Yy04LjIgMC0xMy4zIDIuOS0xNyA3bC4yIDUyLjhjMy41IDMuNyA4LjUgNi43IDE2LjggNi43IDEzLjEgMCAyMS45LTE0LjMgMjEuOS0zMy40IDAtMTguNi05LTMzLjItMjEuOS0zMy4xek01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xMjIuMiAyODEuMWMwIDI1LjYtMjAuMyA0MC4xLTQ5LjkgNDAuMy0xMi4yIDAtMjUuNi0yLjQtMzguOC04LjF2LTMzLjljMTIgNi40IDI3LjEgMTEuMyAzOC45IDExLjMgNy45IDAgMTMuNi0yLjEgMTMuNi04LjcgMC0xNy01NC0xMC42LTU0LTQ5LjkgMC0yNS4yIDE5LjItNDAuMiA0OC00MC4yIDExLjggMCAyMy41IDEuOCAzNS4zIDYuNXYzMy40Yy0xMC44LTUuOC0yNC41LTkuMS0zNS4zLTkuMS03LjUgMC0xMi4xIDIuMi0xMi4xIDcuNyAwIDE2IDU0LjMgOC40IDU0LjMgNTAuN3ptNjguOC01Ni42aC0yN1YyNzVjMCAyMC45IDIyLjUgMTQuNCAyNyAxMi42djI4LjljLTQuNyAyLjYtMTMuMyA0LjctMjQuOSA0LjctMjEuMSAwLTM2LjktMTUuNS0zNi45LTM2LjVsLjItMTEzLjkgMzQuNy03LjR2MzAuOEgxOTF6bTc0IDIuNGMtNC41LTEuNS0xOC43LTMuNi0yNy4xIDcuNHY4NC40aC0zNS41VjE5NC4yaDMwLjdsMi4yIDEwLjVjOC4zLTE1LjMgMjQuOS0xMi4yIDI5LjYtMTAuNWguMXptNDQuMSA5MS44aC0zNS43VjE5NC4yaDM1Ljd6bTAtMTQyLjlsLTM1LjcgNy42di0yOC45bDM1LjctNy42em03NC4xIDE0NS41Yy0xMi40IDAtMjAtNS4zLTI1LjEtOWwtLjEgNDAuMi0zNS41IDcuNVYxOTQuMmgzMS4zbDEuOCA4LjhjNC45LTQuNSAxMy45LTExLjEgMjcuOC0xMS4xIDI0LjkgMCA0OC40IDIyLjUgNDguNCA2My44IDAgNDUuMS0yMy4yIDY1LjUtNDguNiA2NS42em0xNjAuNC01MS41aC02OS41YzEuNiAxNi42IDEzLjggMjEuNSAyNy42IDIxLjUgMTQuMSAwIDI1LjItMyAzNC45LTcuOVYzMTJjLTkuNyA1LjMtMjIuNCA5LjItMzkuNCA5LjItMzQuNiAwLTU4LjgtMjEuNy01OC44LTY0LjUgMC0zNi4yIDIwLjUtNjQuOSA1NC4zLTY0LjkgMzMuNyAwIDUxLjMgMjguNyA1MS4zIDY1LjEgMCAzLjUtLjMgMTAuOS0uNCAxMi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY1Zpc2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcwLjEgMjMxLjNzNy42IDM3LjIgOS4zIDQ1SDQ0NmMzLjMtOC45IDE2LTQzLjUgMTYtNDMuNS0uMi4zIDMuMy05LjEgNS4zLTE0LjlsMi44IDEzLjR6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTUyLjUgMzMxLjJMMjE1LjcgMTc2aC00Mi41bC0zOS4zIDEwNi00LjMtMjEuNS0xNC03MS40Yy0yLjMtOS45LTkuNC0xMi43LTE4LjItMTMuMUgzMi43bC0uNyAzLjFjMTUuOCA0IDI5LjkgOS44IDQyLjIgMTcuMWwzNS44IDEzNWg0Mi41em05NC40LjJMMjcyLjEgMTc2aC00MC4ybC0yNS4xIDE1NS40aDQwLjF6bTEzOS45LTUwLjhjLjItMTcuNy0xMC42LTMxLjItMzMuNy00Mi4zLTE0LjEtNy4xLTIyLjctMTEuOS0yMi43LTE5LjIuMi02LjYgNy4zLTEzLjQgMjMuMS0xMy40IDEzLjEtLjMgMjIuNyAyLjggMjkuOSA1LjlsMy42IDEuNyA1LjUtMzMuNmMtNy45LTMuMS0yMC41LTYuNi0zNi02LjYtMzkuNyAwLTY3LjYgMjEuMi02Ny44IDUxLjQtLjMgMjIuMyAyMCAzNC43IDM1LjIgNDIuMiAxNS41IDcuNiAyMC44IDEyLjYgMjAuOCAxOS4zLS4yIDEwLjQtMTIuNiAxNS4yLTI0LjEgMTUuMi0xNiAwLTI0LjYtMi41LTM3LjctOC4zbC01LjMtMi41LTUuNiAzNC45YzkuNCA0LjMgMjYuOCA4LjEgNDQuOCA4LjMgNDIuMi4xIDY5LjctMjAuOCA3MC01M3pNNTI4IDMzMS40TDQ5NS42IDE3NmgtMzEuMWMtOS42IDAtMTYuOSAyLjgtMjEgMTIuOWwtNTkuNyAxNDIuNUg0MjZzNi45LTE5LjIgOC40LTIzLjNINDg2YzEuMiA1LjUgNC44IDIzLjMgNC44IDIzLjNINTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZW50ZXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyOS4yIDI2OC42Yy0zLjggMzUuMi0zNS40IDYwLjYtNzAuNiA1Ni44LTM1LjItMy44LTYwLjYtMzUuNC01Ni44LTcwLjYgMy44LTM1LjIgMzUuNC02MC42IDcwLjYtNTYuOCAzNS4xIDMuOCA2MC42IDM1LjQgNTYuOCA3MC42em0tODUuOCAyMzUuMUM5Ni43IDQ5Ni04LjIgMzY1LjUgMTAuMSAyMjQuM2MxMS4yLTg2LjYgNjUuOC0xNTYuOSAxMzkuMS0xOTIgMTYxLTc3LjEgMzQ5LjcgMzcuNCAzNTQuNyAyMTYuNiA0LjEgMTQ3LTExOC40IDI2Mi4yLTI2MC41IDI1NC44em0xNzkuOS0xODBjMjcuOS0xMTgtMTYwLjUtMjA1LjktMjM3LjItMjM0LjItNTcuNSA1Ni4zLTY5LjEgMTg4LjYtMzMuOCAzNDQuNCA2OC44IDE1LjggMTY5LjEtMjYuNCAyNzEtMTEwLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNlbnRvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODkuNiA5Ny41bDMxLjYgMzEuNy03Ni4zIDc2LjVWOTcuNXptLTE2Mi40IDMxLjdsNzYuMyA3Ni41Vjk3LjVoLTQ0Ljd6bTQxLjUtNDEuNmg0NC43djEyNy45bDEwLjggMTAuOCAxMC44LTEwLjhWODcuNmg0NC43TDIyNC4yIDMyem0yNi4yIDE2OC4xbC0xMC44LTEwLjhINTUuNXYtNDQuOEwwIDI1NS43bDU1LjUgNTUuNnYtNDQuOGgxMjguNmwxMC44LTEwLjh6bTc5LjMtMjAuN2gxMDcuOXYtNDQuOGwtMzEuNi0zMS43em0xNzMuMyAyMC43TDM5MiAyMDAuMXY0NC44SDI2NC4zbC0xMC44IDEwLjggMTAuOCAxMC44SDM5MnY0NC44bDU1LjUtNTUuNnpNNjUuNCAxNzYuMmwzMi41LTMxLjcgOTAuMyA5MC41aDE1LjN2LTE1LjNsLTkwLjMtOTAuNSAzMS42LTMxLjdINjUuNHptMzE2LjctNzguN2gtNzguNWwzMS42IDMxLjctOTAuMyA5MC41VjIzNWgxNS4zbDkwLjMtOTAuNSAzMS42IDMxLjd6TTIwMy41IDQxMy45VjMwNS44bC03Ni4zIDc2LjUgMzEuNiAzMS43aDQ0Ljd6TTY1LjQgMjM1aDEwOC44bC03Ni4zLTc2LjUtMzIuNSAzMS43em0zMTYuNyAxMDAuMmwtMzEuNiAzMS43LTkwLjMtOTAuNWgtMTUuM3YxNS4zbDkwLjMgOTAuNS0zMS42IDMxLjdoNzguNXptMC01OC44SDI3NC4ybDc2LjMgNzYuNSAzMS42LTMxLjd6bS02MC45IDEwNS44bC03Ni4zLTc2LjV2MTA4LjFoNDQuN3pNOTcuOSAzNTIuOWw3Ni4zLTc2LjVINjUuNHY0NC44em0xODEuOCA3MC45SDIzNVYyOTUuOWwtMTAuOC0xMC44LTEwLjggMTAuOHYxMjcuOWgtNDQuN2w1NS41IDU1LjZ6bS0xNjYuNS00MS42bDkwLjMtOTAuNXYtMTUuM2gtMTUuM2wtOTAuMyA5MC41LTMyLjUtMzEuN3Y3OC43aDc5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNocm9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzEuNSAyMTcuNUw1NS4xIDEwMC4xYzQ3LjYtNTkuMiAxMTktOTEuOCAxOTItOTIuMSA0Mi4zLS4zIDg1LjUgMTAuNSAxMjQuOCAzMy4yIDQzLjQgMjUuMiA3Ni40IDYxLjQgOTcuNCAxMDNMMjY0IDEzMy40Yy01OC4xLTMuNC0xMTMuNCAyOS4zLTEzMi41IDg0LjF6bTMyLjkgMzguNWMwIDQ2LjIgMzcuNCA4My42IDgzLjYgODMuNnM4My42LTM3LjQgODMuNi04My42LTM3LjQtODMuNi04My42LTgzLjYtODMuNiAzNy4zLTgzLjYgODMuNnptMzE0LjktODkuMkwzMzkuNiAxNzRjMzcuOSA0NC4zIDM4LjUgMTA4LjIgNi42IDE1Ny4yTDIzNC4xIDUwMy42YzQ2LjUgMi41IDk0LjQtNy43IDEzNy44LTMyLjkgMTA3LjQtNjIgMTUwLjktMTkyIDEwNy40LTMwMy45ek0xMzMuNyAzMDMuNkw0MC40IDEyMC4xQzE0LjkgMTU5LjEgMCAyMDUuOSAwIDI1NmMwIDEyNCA5MC44IDIyNi43IDIwOS41IDI0NC45bDYzLjctMTI0LjhjLTU3LjYgMTAuOC0xMTMuMi0yMC44LTEzOS41LTcyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNocm9tZWNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ3LjgsNjRINjRjLTIzLjYsMC00Mi43LDE5LjEtNDIuNyw0Mi43djYzLjlINjR2LTYzLjloMzgzLjh2Mjk4LjZIMjk4LjZWNDQ4SDQ0OGMyMy42LDAsNDIuNy0xOS4xLDQyLjctNDIuN1YxMDYuNyBDNDkwLjcsODMuMSw0NzEuNCw2NCw0NDcuOCw2NHogTTIxLjMsMzgzLjZMMjEuMywzODMuNmwwLDYzLjloNjMuOUM4NS4yLDQxMi4yLDU2LjYsMzgzLjYsMjEuMywzODMuNkwyMS4zLDM4My42eiBNMjEuMywyOTguNlYzNDEgYzU4LjksMCwxMDYuNiw0OC4xLDEwNi42LDEwN2g0Mi43QzE3MC43LDM2NS42LDEwMy43LDI5OC43LDIxLjMsMjk4LjZ6IE0yMTMuNCw0NDhoNDIuN2MtMC41LTEyOS41LTEwNS4zLTIzNC4zLTIzNC44LTIzNC42bDAsNDIuNCBDMTI3LjMsMjU1LjYsMjEzLjMsMzQyLDIxMy40LDQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRmbGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcuOTA2LDMxOS45MTNsLTIzMC44LTIuOTI4YTQuNTgsNC41OCwwLDAsMS0zLjYzMi0xLjkyNiw0LjY0OCw0LjY0OCwwLDAsMS0uNDk0LTQuMTQ3LDYuMTQzLDYuMTQzLDAsMCwxLDUuMzYxLTQuMDc2TDQxMS4yODEsMzAzLjljMjcuNjMxLTEuMjYsNTcuNTQ2LTIzLjU3NCw2OC4wMjItNTAuNzg0bDEzLjI4Ni0zNC41NDJhNy45NDQsNy45NDQsMCwwLDAsLjUyNC0yLjkzNiw3LjczNSw3LjczNSwwLDAsMC0uMTY0LTEuNjMxQTE1MS45MSwxNTEuOTEsMCwwLDAsMjAxLjI1NywxOTguNCw2OC4xMiw2OC4xMiwwLDAsMCw5NC4yLDI2OS41OUM0MS45MjQsMjcxLjEwNiwwLDMxMy43MjgsMCwzNjYuMTJhOTYuMDU0LDk2LjA1NCwwLDAsMCwxLjAyOSwxMy45NTgsNC41MDgsNC41MDgsMCwwLDAsNC40NDUsMy44NzFsNDI2LjEuMDUxYy4wNDMsMCwuMDgtLjAxOS4xMjItLjAyYTUuNjA2LDUuNjA2LDAsMCwwLDUuMjcxLTRsMy4yNzMtMTEuMjY1YzMuOS0xMy40LDIuNDQ4LTI1LjgtNC4xLTM0LjlDNDMwLjEyNCwzMjUuNDIzLDQyMC4wOSwzMjAuNDg3LDQwNy45MDYsMzE5LjkxM1pNNTEzLjg1NiwyMjEuMWMtMi4xNDEsMC00LjI3MS4wNjItNi4zOTEuMTY0YTMuNzcxLDMuNzcxLDAsMCwwLTMuMzI0LDIuNjUzbC05LjA3NywzMS4xOTNjLTMuOSwxMy40LTIuNDQ5LDI1Ljc4Niw0LjEsMzQuODksNi4wMiw4LjQsMTYuMDU0LDEzLjMyMywyOC4yMzgsMTMuOWw0OS4yLDIuOTM5YTQuNDkxLDQuNDkxLDAsMCwxLDMuNTEsMS44OTQsNC42NCw0LjY0LDAsMCwxLC41MTQsNC4xNjksNi4xNTMsNi4xNTMsMCwwLDEtNS4zNTEsNC4wNzVsLTUxLjEyNSwyLjkzOWMtMjcuNzU0LDEuMjctNTcuNjY5LDIzLjU3NC02OC4xNDUsNTAuNzg0bC0zLjY5NSw5LjYwNmEyLjcxNiwyLjcxNiwwLDAsMCwyLjQyNywzLjY4Yy4wNDYsMCwuMDg4LjAxNy4xMzYuMDE3aDE3NS45MWE0LjY5LDQuNjksMCwwLDAsNC41MzktMy4zNywxMjQuODA3LDEyNC44MDcsMCwwLDAsNC42ODItMzRDNjQwLDI3Ny4zLDU4My41MjQsMjIxLjEsNTEzLjg1NiwyMjEuMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRzY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguMSAxNTRsLTkuNCA3LjZjLTIyLjUtMTkuMy01MS41LTMzLjYtODMuMy0zMy42QzE1My44IDEyOCA5NiAxODguOCA5NiAyNjAuM2MwIDYuNi40IDEzLjEgMS40IDE5LjQtMi01NiA0MS44LTk3LjQgOTIuNi05Ny40IDI0LjIgMCA0Ni4yIDkuNCA2Mi42IDI0LjdsLTI1LjIgMjAuNGMtOC4zLS45LTE2LjggMS44LTIzLjEgOC4xLTExLjEgMTEtMTEuMSAyOC45IDAgNDAgMTEuMSAxMSAyOC45IDExIDQwIDAgNi4zLTYuMyA5LTE0LjkgOC4xLTIzLjFsNzUuMi04OC44YzYuMy02LjUtMy4zLTE1LjktOS41LTkuNnptLTgzLjggMTExLjVjLTUuNiA1LjUtMTQuNiA1LjUtMjAuMiAwLTUuNi01LjYtNS42LTE0LjYgMC0yMC4yczE0LjYtNS42IDIwLjIgMCA1LjYgMTQuNyAwIDIwLjJ6TTIyNCAzMkMxMDAuNSAzMiAwIDEzMi41IDAgMjU2czEwMC41IDIyNCAyMjQgMjI0IDIyNC0xMDAuNSAyMjQtMjI0UzM0Ny41IDMyIDIyNCAzMnptMCAzODRjLTg4LjIgMC0xNjAtNzEuOC0xNjAtMTYwUzEzNS44IDk2IDIyNCA5NnMxNjAgNzEuOCAxNjAgMTYwLTcxLjggMTYwLTE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3Vkc21pdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMzMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMyLjUgNDE5LjljMCA0Ni40LTM3LjYgODQuMS04NCA4NC4xcy04NC0zNy43LTg0LTg0LjEgMzcuNi04NCA4NC04NCA4NCAzNy42IDg0IDg0em0tODQtMjQzLjljNDYuNCAwIDgwLTM3LjYgODAtODRzLTMzLjYtODQtODAtODQtODggMzcuNi04OCA4NC0yOS42IDc2LTc2IDc2LTg0IDQxLjYtODQgODggMzcuNiA4MCA4NCA4MCA4NC0zMy42IDg0LTgwIDMzLjYtODAgODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkdmVyc2lmeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDguNiAzMDRjOC4yIDY4LjUgNjcuNCAxMTUuNSAxNDYgMTExLjMgNTEuMiA0My4zIDEzNi44IDQ1LjggMTg2LjQtNS42IDY5LjIgMS4xIDExOC41LTQ0LjYgMTMxLjUtOTkuNSAxNC44LTYyLjUtMTguMi0xMzIuNS05Mi4xLTE1NS4xLTMzLTg4LjEtMTMxLjQtMTAxLjUtMTg2LjUtODUtNTcuMyAxNy4zLTg0LjMgNTMuMi05OS4zIDEwOS43LTcuOCAyLjctMjYuNSA4LjktNDUgMjQuMSAxMS43IDAgMTUuMiA4LjkgMTUuMiAxOS41djIwLjRjMCAxMC43LTguNyAxOS41LTE5LjUgMTkuNWgtMjAuMmMtMTAuNyAwLTE5LjUtNi0xOS41LTE2LjdWMjQwSDk4LjhDOTUgMjQwIDg4IDI0NC4zIDg4IDI1MS45djQwLjRjMCA2LjQgNS4zIDExLjggMTEuNyAxMS44aDQ4Ljl6bTIyNy40IDhjLTEwLjcgNDYuMyAyMS43IDcyLjQgNTUuMyA4Ni44QzMyNC4xIDQzMi42IDI1OS43IDM0OCAyOTYgMjg4Yy0zMy4yIDIxLjYtMzMuNyA3MS4yLTI5LjIgOTIuOS0xNy45LTEyLjQtNTMuOC0zMi40LTU3LjQtNzkuOC0zLTM5LjkgMjEuNS03NS43IDU3LTkzLjlDMjk3IDE5MS40IDM2OS45IDE5OC43IDQwMCAyNDhjLTE0LjEtNDgtNTMuOC03MC4xLTEwMS44LTc0LjggMzAuOS0zMC43IDY0LjQtNTAuMyAxMTQuMi00My43IDY5LjggOS4zIDEzMy4yIDgyLjggNjcuNyAxNTAuNSAzNS0xNi4zIDQ4LjctNTQuNCA0Ny41LTc2LjlsMTAuNSAxOS42YzExLjggMjIgMTUuMiA0Ny42IDkuNCA3Mi05LjIgMzktNDAuNiA2OC44LTc5LjcgNzYuNS0zMi4xIDYuMy04My4xLTUuMS05MS44LTU5LjJ6TTEyOCAyMDhIODguMmMtOC45IDAtMTYuMi03LjMtMTYuMi0xNi4ydi0zOS42YzAtOC45IDcuMy0xNi4yIDE2LjItMTYuMkgxMjhjOC45IDAgMTYuMiA3LjMgMTYuMiAxNi4ydjM5LjZjMCA4LjktNy4zIDE2LjItMTYuMiAxNi4yek0xMC4xIDE2OEM0LjUgMTY4IDAgMTYzLjUgMCAxNTcuOXYtMjcuOGMwLTUuNiA0LjUtMTAuMSAxMC4xLTEwLjFoMjcuN2M1LjUgMCAxMC4xIDQuNSAxMC4xIDEwLjF2MjcuOGMwIDUuNi00LjUgMTAuMS0xMC4xIDEwLjFIMTAuMXpNMTY4IDE0Mi43di0yMS40YzAtNS4xIDQuMi05LjMgOS4zLTkuM2gyMS40YzUuMSAwIDkuMyA0LjIgOS4zIDkuM3YyMS40YzAgNS4xLTQuMiA5LjMtOS4zIDkuM2gtMjEuNGMtNS4xIDAtOS4zLTQuMi05LjMtOS4zek01NiAyMzUuNXYyNWMwIDYuMy01LjEgMTEuNS0xMS40IDExLjVIMTkuNEMxMy4xIDI3MiA4IDI2Ni44IDggMjYwLjV2LTI1YzAtNi4zIDUuMS0xMS41IDExLjQtMTEuNWgyNS4xYzYuNCAwIDExLjUgNS4yIDExLjUgMTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZXBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuMjg1IDE1OS43MDRsLTIzNC0xNTZjLTcuOTg3LTQuOTE1LTE2LjUxMS00Ljk2LTI0LjU3MSAwbC0yMzQgMTU2QzMuNzE0IDE2My43MDMgMCAxNzAuODQ3IDAgMTc3Ljk4OXYxNTUuOTk5YzAgNy4xNDMgMy43MTQgMTQuMjg2IDkuNzE1IDE4LjI4NmwyMzQgMTU2LjAyMmM3Ljk4NyA0LjkxNSAxNi41MTEgNC45NiAyNC41NzEgMGwyMzQtMTU2LjAyMmM2LTMuOTk5IDkuNzE1LTExLjE0MyA5LjcxNS0xOC4yODZWMTc3Ljk4OWMtLjAwMS03LjE0Mi0zLjcxNS0xNC4yODYtOS43MTYtMTguMjg1ek0yNzggNjMuMTMxbDE3Mi4yODYgMTE0Ljg1OC03Ni44NTcgNTEuNDI5TDI3OCAxNjUuNzAzVjYzLjEzMXptLTQ0IDB2MTAyLjU3MmwtOTUuNDI5IDYzLjcxNS03Ni44NTctNTEuNDI5TDIzNCA2My4xMzF6TTQ0IDIxOS4xMzJsNTUuMTQzIDM2Ljg1N0w0NCAyOTIuODQ2di03My43MTR6bTE5MCAyMjkuNzE1TDYxLjcxNCAzMzMuOTg5bDc2Ljg1Ny01MS40MjlMMjM0IDM0Ni4yNzV2MTAyLjU3MnptMjItMTQwLjg1OGwtNzcuNzE1LTUyIDc3LjcxNS01MiA3Ny43MTUgNTItNzcuNzE1IDUyem0yMiAxNDAuODU4VjM0Ni4yNzVsOTUuNDI5LTYzLjcxNSA3Ni44NTcgNTEuNDI5TDI3OCA0NDguODQ3em0xOTAtMTU2LjAwMWwtNTUuMTQzLTM2Ljg1N0w0NjggMjE5LjEzMnY3My43MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGllcGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NzIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMi41IDIwMi45YzMwLjcgMCAzMy41IDUzLjEtLjMgNTMuMWgtMTAuOHY0NC4zaC0yNi42di05Ny40aDM3Ljd6TTQ3MiAzNTIuNkM0MjkuOSA0NDQuNSAzNTAuNCA1MDQgMjQ4IDUwNCAxMTEgNTA0IDAgMzkzIDAgMjU2UzExMSA4IDI0OCA4Yzk3LjQgMCAxNzIuOCA1My43IDIxOC4yIDEzOC40bC0xODYgMTA4LjhMNDcyIDM1Mi42em0tMzguNSAxMi41bC02MC4zLTMwLjdjLTI3LjEgNDQuMy03MC40IDcxLjQtMTIyLjQgNzEuNC04Mi41IDAtMTQ5LjItNjYuNy0xNDkuMi0xNDguOSAwLTgyLjUgNjYuNy0xNDkuMiAxNDkuMi0xNDkuMiA0OC40IDAgODguOSAyMy41IDExNi45IDYzLjRsNTkuNS0zNC42Yy00MC43LTYyLjYtMTA0LjctMTAwLTE3OS4yLTEwMC0xMjEuMiAwLTIxOS41IDk4LjMtMjE5LjUgMjE5LjVTMTI2LjggNDc1LjUgMjQ4IDQ3NS41Yzc4LjYgMCAxNDYuNS00Mi4xIDE4NS41LTExMC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb25mbHVlbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuMyA0MTIuMmMtNC41IDcuNi0yLjEgMTcuNSA1LjUgMjIuMmwxMDUuOSA2NS4yYzcuNyA0LjcgMTcuNyAyLjQgMjIuNC01LjMgMC0uMS4xLS4yLjEtLjIgNjcuMS0xMTIuMiA4MC41LTk1LjkgMjgwLjktLjcgOC4xIDMuOSAxNy44LjQgMjEuNy03LjcuMS0uMS4xLS4zLjItLjRsNTAuNC0xMTQuMWMzLjYtOC4xLS4xLTE3LjYtOC4xLTIxLjMtMjIuMi0xMC40LTY2LjItMzEuMi0xMDUuOS01MC4zQzEyNy41IDE3OSA0NC42IDM0NS4zIDIuMyA0MTIuMnptNTA3LjQtMzEyLjFjNC41LTcuNiAyLjEtMTcuNS01LjUtMjIuMkwzOTguNCAxMi44Yy03LjUtNS0xNy42LTMuMS0yMi42IDQuNC0uMi4zLS40LjYtLjYgMS02Ny4zIDExMi42LTgxLjEgOTUuNi0yODAuNi45LTguMS0zLjktMTcuOC0uNC0yMS43IDcuNy0uMS4xLS4xLjMtLjIuNEwyMi4yIDE0MS4zYy0zLjYgOC4xLjEgMTcuNiA4LjEgMjEuMyAyMi4yIDEwLjQgNjYuMyAzMS4yIDEwNiA1MC40IDI0OCAxMjAgMzMwLjgtNDUuNCAzNzMuNC0xMTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29ubmVjdGRldmVsb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTUwLjUgMjQxbC01MC4wODktODYuNzg2YzEuMDcxLTIuMTQyIDEuODc1LTQuNTUzIDEuODc1LTcuMjMyIDAtOC4wMzYtNi42OTYtMTQuNzMzLTE0LjczMi0xNS4wMDFsLTU1LjQ0Ny05NS44OTNjLjUzNi0xLjYwNyAxLjA3MS0zLjIxNCAxLjA3MS00LjgyMSAwLTguNTcxLTYuOTY0LTE1LjI2OC0xNS4yNjgtMTUuMjY4LTQuODIxIDAtOC44MzkgMi4xNDMtMTEuNzg2IDUuNjI1SDI5OS41MThDMjk2LjgzOSAxOC4xNDMgMjkyLjgyMSAxNiAyODggMTZzLTguODM5IDIuMTQzLTExLjUxOCA1LjYyNUgxNzAuNDExQzE2Ny40NjQgMTguMTQzIDE2My40NDcgMTYgMTU4LjYyNSAxNmMtOC4zMDMgMC0xNS4yNjggNi42OTYtMTUuMjY4IDE1LjI2OCAwIDEuNjA3LjUzNiAzLjQ4MiAxLjA3MiA0LjgyMWwtNTUuOTgzIDk3LjIzM2MtNS4zNTYgMi40MS05LjEwNyA3LjUtOS4xMDcgMTMuNjYxIDAgLjUzNS4yNjggMS4wNzEuMjY4IDEuNjA3bC01My4zMDQgOTIuMTQzYy03LjIzMiAxLjMzOS0xMi41OSA3LjUtMTIuNTkgMTUgMCA3LjIzMiA1LjA4OSAxMy4zOTMgMTIuMDU0IDE1bDU1LjE3OSA5NS4zNThjLS41MzYgMS42MDctLjgwNCAyLjk0Ni0uODA0IDQuODIxIDAgNy4yMzIgNS4wODkgMTMuMzkzIDEyLjA1NCAxNC43MzJsNTEuNjk3IDg5LjczMmMtLjUzNiAxLjYwNy0xLjA3MSAzLjQ4Mi0xLjA3MSA1LjM1NyAwIDguNTcxIDYuOTY0IDE1LjI2OCAxNS4yNjggMTUuMjY4IDQuODIxIDAgOC44MzktMi4xNDMgMTEuNTE4LTUuMzU3aDEwNi44NzVDMjc5LjE2MSA0OTMuODU3IDI4My40NDcgNDk2IDI4OCA0OTZzOC44MzktMi4xNDMgMTEuNTE4LTUuMzU3aDEwNy4xNDNjMi42NzggMi45NDYgNi42OTYgNC44MjEgMTAuOTgyIDQuODIxIDguNTcxIDAgMTUuMjY4LTYuOTY0IDE1LjI2OC0xNS4yNjggMC0xLjYwNy0uMjY3LTIuOTQ2LS44MDMtNC4yODVsNTEuNjk3LTkwLjI2OGM2Ljk2NC0xLjMzOSAxMi4wNTQtNy41IDEyLjA1NC0xNC43MzIgMC0xLjYwNy0uMjY4LTMuMjE0LS44MDQtNC44MjFsNTQuOTExLTk1LjM1OGM2Ljk2NC0xLjMzOSAxMi4zMjItNy41IDEyLjMyMi0xNS0uMDAyLTcuMjMyLTUuMDkyLTEzLjM5My0xMS43ODgtMTQuNzMyek0xNTMuNTM1IDQ1MC43MzJsLTQzLjY2LTc1LjgwM2g0My42NnY3NS44MDN6bTAtODMuODM5aC00My42NmMtLjI2OC0xLjA3MS0uODA0LTIuMTQyLTEuMzM5LTMuMjE0bDQ0Ljk5OS00Ny40MXY1MC42MjR6bTAtNjIuNDExbC01MC4zNTcgNTMuMzA0Yy0xLjMzOS0uNTM2LTIuNjc5LTEuMzQtNC4wMTgtMS42MDdMNDMuNDQ3IDI1OS43NWMuNTM1LTEuMzM5LjUzNS0yLjY3OS41MzUtNC4wMThzMC0yLjQxLS4yNjgtMy40ODJsNTEuOTY1LTkwYzIuNjc5LS4yNjggNS4zNTctMS4wNzIgNy43NjgtMi42NzlsNTAuMDg5IDUxLjk2NXY5Mi45NDZ6bTAtMTAyLjMyMmwtNDUuODAzLTQ3LjQxYzEuMzM5LTIuMTQzIDIuMTQzLTQuODIxIDIuMTQzLTcuNzY3IDAtLjI2OC0uMjY4LS44MDQtLjI2OC0xLjA3Mmw0My45MjgtMTUuODA0djcyLjA1M3ptMC04MC42MjVsLTQzLjY2IDE1LjgwNCA0My42Ni03NS41MzZ2NTkuNzMyem0zMjYuNTE5IDM5LjEwOGwuODA0IDEuMzM5TDQ0NS41IDMyOS4xMjVsLTYzLjc1LTY3LjIzMiA5OC4wMzYtMTAxLjUxOC4yNjguMjY4ek0yOTEuNzUgMzU1LjEwN2wxMS41MTggMTEuNzg2SDI4MC41bDExLjI1LTExLjc4NnptLS4yNjgtMTEuMjVsLTgzLjMwMy04NS40NDYgNzkuNTUzLTg0LjM3NSA4My4wMzYgODcuNTg5LTc5LjI4NiA4Mi4yMzJ6bTUuMzU3IDUuODkzbDc5LjI4Ni04Mi4yMzIgNjcuNSA3MS4yNS01Ljg5MiAyOC4xMjVIMzEzLjcxNGwtMTYuODc1LTE3LjE0M3pNNDEwLjQxMSA0NC4zOTNjMS4wNzEuNTM2IDIuMTQyIDEuMDcyIDMuNDgyIDEuMzRsNTcuODU3IDEwMC43MTR2LjUzNmMwIDIuOTQ2LjgwMyA1LjYyNCAyLjE0MyA3Ljc2N0wzNzYuMzkzIDI1NmwtODMuMDM1LTg3LjU4OUw0MTAuNDExIDQ0LjM5M3ptLTkuMTA3LTIuMTQzTDI4Ny43MzIgMTYyLjUxOGwtNTcuMDU0LTYwLjI2OCAxNjYuMzM5LTYwaDQuMjg3em0tMTIzLjQ4MyAwYzIuNjc4IDIuNjc4IDYuMTYgNC4yODUgMTAuMTc5IDQuMjg1czcuNS0xLjYwNyAxMC4xNzktNC4yODVoNzVMMjI0Ljc4NiA5NS44MjEgMTczLjg5MyA0Mi4yNWgxMDMuOTI4em0tMTE2LjI0OSA1LjYyNWwxLjA3MS0yLjE0MmEzMy44MzQgMzMuODM0IDAgMCAwIDIuNjc5LS44MDRsNTEuMTYxIDUzLjg0LTU0LjkxMSAxOS44MjFWNDcuODc1em0wIDc5LjI4Nmw2MC44MDMtMjEuOTY0IDU5LjczMiA2My4yMTQtNzkuNTUzIDg0LjEwNy00MC45ODItNDIuMDUzdi04My4zMDR6bTAgOTIuNjc4TDE5OCAyNTcuNjA3bC0zNi40MjggMzguMzA0di03Ni4wNzJ6bTAgODcuODU4bDQyLjA1My00NC40NjQgODIuNzY4IDg1Ljk4Mi0xNy4xNDMgMTcuNjc4SDE2MS41NzJ2LTU5LjE5NnptNi45NjQgMTYyLjA1M2MtMS42MDctMS42MDctMy40ODItMi42NzgtNS44OTMtMy40ODJsLTEuMDcxLTEuNjA3di04OS43MzJoOTkuOTFsLTkxLjYwNyA5NC44MjFoLTEuMzM5em0xMjkuOTExIDBjLTIuNjc5LTIuNDEtNi40MjgtNC4yODUtMTAuNDQ3LTQuMjg1cy03Ljc2NyAxLjg3NS0xMC40NDcgNC4yODVoLTk2LjQyOWw5MS42MDctOTQuODIxaDM4LjMwNGw5MS42MDcgOTQuODIxSDI5OC40NDd6bTEyMC0xMS43ODZsLTQuMjg2IDcuNWMtMS4zMzkuMjY4LTIuNDEuODAzLTMuNDgyIDEuMzM5bC04OS4xOTYtOTEuODc1aDExNC4zNzZsLTE3LjQxMiA4My4wMzZ6bTEyLjg1Ni0yMi4yMzJsMTIuODU4LTYwLjgwM2gyMS45NjRsLTM0LjgyMiA2MC44MDN6bTM0LjgyMi02OC44MzloLTIwLjM1N2w0LjU1My0yMS4xNiAxNy4xNDMgMTguMjE0Yy0uNTM1LjgwMy0xLjA3MSAxLjg3NC0xLjMzOSAyLjk0NnptNjYuMTYxLTEwNy40MTFsLTU1LjQ0NyA5Ni42OTdjLTEuMzM5LjUzNS0yLjY3OSAxLjA3MS00LjAxOCAxLjg3NGwtMjAuNjI1LTIxLjk2NCAzNC41NTQtMTYzLjkyOCA0NS44MDMgNzkuMjg2Yy0uMjY3IDEuMzM5LS44MDMgMi42NzgtLjgwMyA0LjI4NSAwIDEuMzM5LjI2OCAyLjQxMS41MzYgMy43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29udGFvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1LjQgMzA1YzE0LjQgNjcuMSAyNi40IDEyOSA2OC4yIDE3NUgzNGMtMTguNyAwLTM0LTE1LjItMzQtMzRWNjZjMC0xOC43IDE1LjItMzQgMzQtMzRoNTcuN0M3Ny45IDQ0LjYgNjUuNiA1OS4yIDU0LjggNzUuNmMtNDUuNCA3MC0yNyAxNDYuOC05LjQgMjI5LjR6TTQ3OCAzMmgtOTAuMmMyMS40IDIxLjQgMzkuMiA0OS41IDUyLjcgODQuMWwtMTM3LjEgMjkuM2MtMTQuOS0yOS0zNy44LTUzLjMtODIuNi00My45LTI0LjYgNS4zLTQxIDE5LjMtNDguMyAzNC42LTguOCAxOC43LTEzLjIgMzkuOCA4LjIgMTQwLjMgMjEuMSAxMDAuMiAzMy43IDExNy43IDQ5LjUgMTMxLjIgMTIuOSAxMS4xIDMzLjQgMTcgNTguMyAxMS43IDQ0LjUtOS40IDU1LjctNDAuNyA1Ny40LTczLjJsMTM3LjQtMjkuNmMzLjIgNzEuNS0xOC43IDEyNS4yLTU3LjQgMTYzLjZINDc4YzE4LjcgMCAzNC0xNS4yIDM0LTM0VjY2YzAtMTguOC0xNS4yLTM0LTM0LTM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3R0b25CdXJlYXUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc0LjMxIDMzMC40MWMtMjMuNjYgOTEuODUtOTQuMjMgMTQ0LjU5LTIwMS45IDE0OC4zNVY0MjkuNmMwLTQ4IDI2LjQxLTc0LjM5IDc0LjM5LTc0LjM5IDYyIDAgOTkuMi0zNy4yIDk5LjItOTkuMjEgMC02MS4zNy0zNi41My05OC4yOC05Ny4zOC05OS4wNi0zMy02OS4zMi0xNDYuNS02NC42NS0xNzcuMjQgMEMxMTAuNTIgMTU3LjcyIDc0IDE5NC42MyA3NCAyNTZjMCA2Mi4xMyAzNy4yNyA5OS40MSA5OS40IDk5LjQxIDQ4IDAgNzQuNTUgMjYuMjMgNzQuNTUgNzQuMzlWNDc5Yy0xMzQuNDMtNS0yMTEuMS04NS4wNy0yMTEuMS0yMjMgMC0xNDEuODIgODEuMzUtMjIzLjIgMjIzLjItMjIzLjIgMTE0Ljc3IDAgMTg5Ljg0IDUzLjIgMjE0LjY5IDE0OC44MUg1MDBDNDczLjg4IDcxLjUxIDM4OC4yMiA4IDI1OS44MiA4IDEwNSA4IDEyIDEwMS4xOSAxMiAyNTUuODIgMTIgNDExLjE0IDEwNS4xOSA1MDQuMzQgMjU5LjgyIDUwNGMxMjguMjcgMCAyMTMuODctNjMuODEgMjM5LjY3LTE3My41OXpNMzU3IDE4Mi4zM2M0MS4zNyAzLjQ1IDY0LjIgMjkgNjQuMiA3My42NyAwIDQ4LTI2LjQzIDc0LjQxLTc0LjQgNzQuNDEtMjguNjEgMC00OS4zMy05LjU5LTYxLjU5LTI3LjMzIDgzLjA2LTE2LjU1IDc1LjU5LTk5LjY3IDcxLjc5LTEyMC43NXptLTgxLjY4IDk3LjM2Yy0yLjQ2LTEwLjM0LTE2LjMzLTg3IDU2LjIzLTk3IDIuMjcgMTAuMDkgMTYuNTIgODcuMTEtNTYuMjYgOTd6TTI2MCAxMzJjMjguNjEgMCA0OSA5LjY3IDYxLjQ0IDI3LjYxLTI4LjM2IDUuNDgtNDkuMzYgMjAuNTktNjEuNTkgNDMuNDUtMTIuMjMtMjIuODYtMzMuMjMtMzgtNjEuNi00My40NSAxMi40MS0xNy42OSAzMy4yNy0yNy4zNSA2MS41Ny0yNy4zNXptLTcxLjUyIDUwLjcyYzczLjE3IDEwLjU3IDU4LjkxIDg2LjgxIDU2LjQ5IDk3LTcyLjQxLTkuODQtNTktODYuOTUtNTYuMjUtOTd6TTE3My4yIDMzMC40MWMtNDggMC03NC40LTI2LjQtNzQuNC03NC40MSAwLTQ0LjM2IDIyLjg2LTcwIDY0LjIyLTczLjY3LTYuNzUgMzcuMi0xLjM4IDEwNi41MyA3MS42NSAxMjAuNzUtMTIuMTQgMTcuNjMtMzIuODQgMjcuMy02MS4xNCAyNy4zem01My4yMSAxMi4zOUE4MC44IDgwLjggMCAwIDAgMjYwIDMwOS4yNWM3Ljc3IDE0LjQ5IDE5LjMzIDI1LjU0IDMzLjgyIDMzLjU1YTgwLjI4IDgwLjI4IDAgMCAwLTMzLjU4IDMzLjgzYy04LTE0LjUtMTkuMDctMjYuMjMtMzMuNTYtMzMuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNwYW5lbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTAuMyAyMjAuMmMtNS42LTI0LjgtMjYuOS00MS4yLTUxLTQxLjJoLTM3Yy03LjEgMC0xMi41IDQuNS0xNC4zIDEwLjlMNzMuMSAzMjBsMjQuNy0uMWM2LjggMCAxMi4zLTQuNSAxNC4yLTEwLjdsMjUuOC05NS43aDE5LjhjOC40IDAgMTYuMiA1LjYgMTguMyAxNC44IDIuNSAxMC45LTUuOSAyMi42LTE4LjMgMjIuNmgtMTAuM2MtNyAwLTEyLjUgNC42LTE0LjMgMTAuOGwtNi40IDIzLjhoMzJjMzcuMiAwIDU4LjMtMzYuMiA1MS43LTY1LjN6bS0xNTYuNSAyOGgxOC42YzYuOSAwIDEyLjQtNC40IDE0LjMtMTAuOWw2LjItMjMuNmgtNDBDMzAgMjEzLjcgOSAyMjcuOCAxLjcgMjU0LjgtNyAyODguNiAxOC41IDMyMCA1MiAzMjBoMTIuNGw3LjEtMjYuMWMxLjItNC40LTIuMi04LjMtNi40LTguM0g1My44Yy0yNC43IDAtMjQuOS0zNy40IDAtMzcuNHptMjQ3LjUtMzQuOGgtNzcuOWwtMy41IDEzLjRjLTIuNCA5LjYgNC41IDE4LjUgMTQuMiAxOC41aDU3LjVjNCAwIDIuNCA0LjMgMi4xIDUuM2wtOC42IDMxLjhjLS40IDEuNC0uOSA1LjMtNS41IDUuM2gtMzQuOWMtNS4zIDAtNS4zLTcuOSAwLTcuOWgyMS42YzYuOCAwIDEyLjMtNC42IDE0LjItMTAuOGwzLjUtMTMuMmgtNDguNGMtMzkuMiAwLTQzLjYgNjMuOC0uNyA2My44bDU3LjUuMmMxMS4yIDAgMjAuNi03LjIgMjMuNC0xNy44bDE0LTUxLjhjNC44LTE5LjItOS43LTM2LjgtMjguNS0zNi44ek02MzMuMSAxNzloLTE4LjljLTQuOSAwLTkuMiAzLjItMTAuNCA3LjlMNTY4LjIgMzIwYzIwLjcgMCAzOS44LTEzLjggNDQuOS0zNC41bDI2LjUtOTguMmMxLjItNC4zLTItOC4zLTYuNS04LjN6bS0yMzYuMyAzNC43di4xaC00OC4zbC0yNi4yIDk4Yy0xLjIgNC40IDIuMiA4LjMgNi40IDguM2gxOC45YzQuOCAwIDkuMi0zIDEwLjQtNy44bDE3LjItNjRIMzk1YzEyLjUgMCAyMS40IDExLjggMTguMSAyMy40bC0xMC42IDQwYy0xLjIgNC4zIDEuOSA4LjMgNi40IDguM0g0MjhjNC42IDAgOS4xLTIuOSAxMC4zLTcuOGw4LjgtMzMuMWM5LTMzLjEtMTUuOS02NS40LTUwLjMtNjUuNHptOTguMyA3NC42Yy0zLjYgMC02LTMuNC01LjEtNi43bDgtMzBjLjktMy45IDMuNy02IDcuOC02aDMyLjljMi42IDAgNC42IDIuNCAzLjkgNS4xbC0uNyAyLjZjLS42IDItMS45IDMtMy45IDNoLTIxLjZjLTcgMC0xMi42IDQuNi0xNC4yIDEwLjhsLTMuNSAxM2g1My40YzEwLjUgMCAyMC4zLTYuNiAyMy4yLTE3LjZsMy4yLTEyYzQuOS0xOS4xLTkuMy0zNi44LTI4LjMtMzYuOGgtNDcuM2MtMTcuOSAwLTMzLjggMTItMzguNiAyOS42bC0xMC44IDQwYy01IDE3LjcgOC4zIDM2LjcgMjguMyAzNi43aDY2LjdjNi44IDAgMTIuMy00LjUgMTQuMi0xMC43bDUuNy0yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zQnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE0LjkgMTk0LjR2MTAxLjRoLTI4LjN2MTIwLjVoLTc3LjFWMjk1LjloLTI4LjNWMTk0LjRjMC00LjQgMS42LTguMiA0LjYtMTEuMyAzLjEtMy4xIDYuOS00LjcgMTEuMy00LjdIMjk5YzQuMSAwIDcuOCAxLjYgMTEuMSA0LjcgMy4xIDMuMiA0LjggNi45IDQuOCAxMS4zem0tMTAxLjUtNjMuN2MwLTIzLjMgMTEuNS0zNSAzNC41LTM1czM0LjUgMTEuNyAzNC41IDM1YzAgMjMtMTEuNSAzNC41LTM0LjUgMzQuNXMtMzQuNS0xMS41LTM0LjUtMzQuNXpNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05jRXUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjcgOEMxMDMuNiA4IDAgMTI0LjggMCAyNTZjMCAxMzYuMyAxMTEuNyAyNDggMjQ3LjcgMjQ4QzM3Ny45IDUwNCA0OTYgNDAzLjEgNDk2IDI1NiA0OTYgMTE3IDM4OC40IDggMjQ3LjcgOHptLjYgNDUwLjdjLTExMiAwLTIwMy42LTkyLjUtMjAzLjYtMjAyLjcgMC0yMy4yIDMuNy00NS4yIDEwLjktNjZsNjUuNyAyOS4xaC00Ljd2MjkuNWgyMy4zYzAgNi4yLS40IDMuMi0uNCAxOS41aC0yMi44djI5LjVoMjdjMTEuNCA2NyA2Ny4yIDEwMS4zIDEyNC42IDEwMS4zIDI2LjYgMCA1MC42LTcuOSA2NC44LTE1LjhsLTEwLTQ2LjFjLTguNyA0LjYtMjguMiAxMC44LTQ3LjMgMTAuOC0yOC4yIDAtNTguMS0xMC45LTY3LjMtNTAuMmg5MC4zbDEyOC4zIDU2LjhjLTEuNSAyLjEtNTYuMiAxMDQuMy0xNzguOCAxMDQuM3ptLTE2LjctMTkwLjZsLS41LS40LjkuNGgtLjR6bTc3LjItMTkuNWgzLjd2LTI5LjVoLTcwLjNsLTI4LjYtMTIuNmMyLjUtNS41IDUuNC0xMC41IDguOC0xNC4zIDEyLjktMTUuOCAzMS4xLTIyLjQgNTEuMS0yMi40IDE4LjMgMCAzNS4zIDUuNCA0Ni4xIDEwbDExLjYtNDcuM2MtMTUtNi42LTM3LTEyLjQtNjIuMy0xMi40LTM5IDAtNzIuMiAxNS44LTk1LjkgNDIuMy01LjMgNi4xLTkuOCAxMi45LTEzLjkgMjAuMWwtODEuNi0zNi4xYzY0LjYtOTYuOCAxNTcuNy05My42IDE3MC43LTkzLjYgMTEzIDAgMjAzIDkwLjIgMjAzIDIwMy40IDAgMTguNy0yLjEgMzYuMy02LjMgNTIuOWwtMTM2LjEtNjAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zTmNKcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNyA4QzEwMy42IDggMCAxMjQuOCAwIDI1NmMwIDEzNi40IDExMS44IDI0OCAyNDcuNyAyNDhDMzc3LjkgNTA0IDQ5NiA0MDMuMiA0OTYgMjU2IDQ5NiAxMTcuMiAzODguNSA4IDI0Ny43IDh6bS42IDQ1MC43Yy0xMTIgMC0yMDMuNi05Mi41LTIwMy42LTIwMi43IDAtMjEuMSAzLTQxLjIgOS02MC4zbDEyNyA1Ni41aC0yNy45djM4LjZoNTguMWw1LjcgMTEuOHYxOC43aC02My44VjM2MGg2My44djU2aDYxLjd2LTU2aDY0LjJ2LTM1LjdsODEgMzYuMWMtMS41IDIuMi01Ny4xIDk4LjMtMTc1LjIgOTguM3ptODcuNi0xMzcuM2gtNTcuNnYtMTguN2wyLjktNS42IDU0LjcgMjQuM3ptNi41LTUxLjR2LTE3LjhoLTM4LjZsNjMtMTE2SDMwMWwtNDMuNCA5Ni0yMy0xMC4yLTM5LjYtODUuN2gtNjUuOGwyNy4zIDUxLTgxLjktMzYuNWMyNy44LTQ0LjEgODIuNi05OC4xIDE3My43LTk4LjEgMTEyLjggMCAyMDMgOTAgMjAzIDIwMy40IDAgMjEtMi43IDQwLjYtNy45IDU5bC0xMDEtNDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zTmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODcuNCA4IDQ5NiAxMTUuOSA0OTYgMjU2YzAgMTQ3LjItMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuMSA1MDQgMCAzOTMuMiAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHpNNTUuOCAxODkuMWMtNy40IDIwLjQtMTEuMSA0Mi43LTExLjEgNjYuOSAwIDExMC45IDkyLjEgMjAyLjQgMjAzLjcgMjAyLjQgMTIyLjQgMCAxNzcuMi0xMDEuOCAxNzguNS0xMDQuMWwtOTMuNC00MS42Yy03LjcgMzcuMS00MS4yIDUzLTY4LjIgNTUuNHYzOC4xaC0yOC44VjM2OGMtMjcuNS0uMy01Mi42LTEwLjItNzUuMy0yOS43bDM0LjEtMzQuNWMzMS43IDI5LjQgODYuNCAzMS44IDg2LjQtMi4yIDAtNi4yLTIuMi0xMS4yLTYuNi0xNS4xLTE0LjItNi0xLjgtLjEtMjE5LjMtOTcuNHpNMjQ4LjQgNTIuM2MtMzguNCAwLTExMi40IDguNy0xNzAuNSA5M2w5NC44IDQyLjVjMTAtMzEuMyA0MC40LTQyLjkgNjMuOC00NC4zdi0zOC4xaDI4Ljh2MzguMWMyMi43IDEuMiA0My40IDguOSA2MiAyM0wyOTUgMTk5LjdjLTQyLjctMjkuOS04My41LTgtNzAgMTEuMSA1My40IDI0LjEgNDMuOCAxOS44IDkzIDQxLjZsMTI3LjEgNTYuN2M0LjEtMTcuNCA2LjItMzUuMSA2LjItNTMuMSAwLTU3LTE5LjgtMTA1LTU5LjMtMTQzLjktMzkuMy0zOS45LTg3LjItNTkuOC0xNDMuNi01OS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNOZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptOTQgMTQ0LjN2NDIuNUgxNjIuMVYxOTdoMTgwLjN6bTAgNzkuOHY0Mi41SDE2Mi4xdi00Mi41aDE4MC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNQZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzEwNC43IDggMCAxMjMuMSAwIDI1NmMwIDEzOC41IDExMy42IDI0OCAyNDcuNiAyNDhDMzc3LjUgNTA0IDQ5NiA0MDMuMSA0OTYgMjU2IDQ5NiAxMTguMSAzODkuNCA4IDI0Ny42IDh6bS44IDQ1MC44Yy0xMTIuNSAwLTIwMy43LTkzLTIwMy43LTIwMi44IDAtMTA1LjQgODUuNS0yMDMuMyAyMDMuNy0yMDMuMyAxMTIuNiAwIDIwMi45IDg5LjUgMjAyLjggMjAzLjMgMCAxMjEuNy05OS42IDIwMi44LTIwMi44IDIwMi44ek0zMTYuNyAxODZoLTUzLjJ2MTM3LjJoNTMuMmMyMS40IDAgNzAtNS4xIDcwLTY4LjYgMC02My40LTQ4LjYtNjguNi03MC02OC42em0uOCAxMDguNWgtMTkuOXYtNzkuN2wxOS40LS4xYzMuOCAwIDM1LTIuMSAzNSAzOS45IDAgMjQuNi0xMC41IDM5LjktMzQuNSAzOS45ek0yMDMuNyAxODZoLTY4LjJ2MTM3LjNoMzQuNlYyNzloMjdjNTQuMSAwIDU3LjEtMzcuNSA1Ny4xLTQ2LjUgMC0zMS0xNi44LTQ2LjUtNTAuNS00Ni41em0tNC45IDY3LjNoLTI5LjJ2LTQxLjZoMjguM2MzMC45IDAgMjguOCA0MS42LjkgNDEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zUGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkuMSAwIDI1NmMwIDEzNyAxMTEgMjQ4IDI0OCAyNDhzMjQ4LTExMSAyNDgtMjQ4QzQ5NiAxMTkuMSAzODUgOCAyNDggOHptMCA0NDkuNWMtMTM5LjIgMC0yMzUuOC0xMzgtMTkwLjItMjY3LjlsNzguOCAzNS4xYy0yLjEgMTAuNS0zLjMgMjEuNS0zLjMgMzIuOSAwIDk5IDczLjkgMTI2LjkgMTIwLjQgMTI2LjkgMjIuOSAwIDUzLjUtNi43IDc5LjQtMjkuNUwyOTcgMzExLjFjLTUuNSA2LjMtMTcuNiAxNi43LTM2LjMgMTYuNy0zNy44IDAtNTMuNy0zOS45LTUzLjktNzEuOSAyMzAuNCAxMDIuNiAyMTYuNSA5Ni41IDIxNy45IDk2LjgtMzQuMyA2Mi40LTEwMC42IDEwNC44LTE3Ni43IDEwNC44em0xOTQuMi0xNTBsLTIyNC0xMDBjMTguOC0zNCA1NC45LTMwLjcgNzQuNy0xMWw0MC40LTQxLjZjLTI3LjEtMjMuMy01OC0yNy41LTc4LjEtMjcuNS00Ny40IDAtODAuOSAyMC41LTEwMC43IDUxLjZsLTc0LjktMzMuNGMzNi4xLTU0LjkgOTguMS05MS4yIDE2OC41LTkxLjIgMTExLjEgMCAyMDEuNSA5MC40IDIwMS41IDIwMS41IDAgMTgtMi40IDM1LjQtNi44IDUyLS4zLS4xLS40LS4yLS42LS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNSZW1peCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptMTYxLjcgMjA3LjdsNC45IDIuMnY3MGMtNy4yIDMuNi02My40IDI3LjUtNjcuMyAyOC44LTYuNS0xLjgtMTEzLjctNDYuOC0xMzcuMy01Ni4ybC02NC4yIDI2LjYtNjMuMy0yNy41di02My44bDU5LjMtMjQuOGMtLjctLjctLjQgNS0uNC03MC40bDY3LjMtMjkuN0wzNjEgMTc4LjV2NjEuNmw0OS4xIDIwLjN6bS03MC40IDgxLjV2LTQzLjhoLS40di0xLjhsLTExMy44LTQ2LjVWMjk1bDExMy44IDQ2Ljl2LS40bC40LjR6bTcuNS01Ny42bDM5LjktMTYuNC0zNi44LTE1LjUtMzkgMTYuNCAzNS45IDE1LjV6bTUyLjMgMzguMXYtNDNMMzU1LjIgMjk4djQzLjRsNDQuMy0xOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6TTEzNy43IDIyMWMxMy04My45IDgwLjUtOTUuNyAxMDguOS05NS43IDk5LjggMCAxMjcuNSA4Mi41IDEyNy41IDEzNC4yIDAgNjMuNi00MSAxMzIuOS0xMjguOSAxMzIuOS0zOC45IDAtOTkuMS0yMC0xMDkuNC05N2g2Mi41YzEuNSAzMC4xIDE5LjYgNDUuMiA1NC41IDQ1LjIgMjMuMyAwIDU4LTE4LjIgNTgtODIuOCAwLTgyLjUtNDkuMS04MC42LTU2LjctODAuNi0zMy4xIDAtNTEuNyAxNC42LTU1LjggNDMuOGgxOC4ybC00OS4yIDQ5LjItNDktNDkuMmgxOS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNTYW1wbGluZ1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTEwNyAyMDUuNmMtNC43IDAtOSAyLjgtMTAuNyA3LjJsLTQgOS41LTExLTkyLjhjLTEuNy0xMy45LTIyLTEzLjQtMjMuMS40bC00LjMgNTEuNC01LjItNjguOGMtMS4xLTE0LjMtMjIuMS0xNC4yLTIzLjIgMGwtMy41IDQ0LjktNS45LTk0LjNjLS45LTE0LjUtMjIuMy0xNC40LTIzLjIgMGwtNS4xIDgzLjctNC4zLTY2LjNjLS45LTE0LjQtMjIuMi0xNC40LTIzLjIgMGwtNS4zIDgwLjItNC4xLTU3Yy0xLjEtMTQuMy0yMi0xNC4zLTIzLjItLjJsLTcuNyA4OS44LTEuOC0xMi4yYy0xLjctMTEuNC0xNy4xLTEzLjYtMjItMy4zbC0xMy4yIDI3LjdIODcuNXYyMy4yaDUxLjNjNC40IDAgOC40LTIuNSAxMC40LTYuNGwxMC43IDczLjFjMiAxMy41IDIxLjkgMTMgMjMuMS0uN2wzLjgtNDMuNiA1LjcgNzguM2MxLjEgMTQuNCAyMi4zIDE0LjIgMjMuMi0uMWw0LjYtNzAuNCA0LjggNzMuM2MuOSAxNC40IDIyLjMgMTQuNCAyMy4yLS4xbDQuOS04MC41IDQuNSA3MS44Yy45IDE0LjMgMjIuMSAxNC41IDIzLjIuMmw0LjYtNTguNiA0LjkgNjQuNGMxLjEgMTQuMyAyMiAxNC4yIDIzLjEuMWw2LjgtODMgMi43IDIyLjNjMS40IDExLjggMTcuNyAxNC4xIDIyLjMgMy4xbDE4LTQzLjRoNTAuNVYyNThsLTU4LjQuM3ptLTc4IDUuMmgtMjEuOXYyMS45YzAgNC4xLTMuMyA3LjUtNy41IDcuNS00LjEgMC03LjUtMy4zLTcuNS03LjV2LTIxLjloLTIxLjljLTQuMSAwLTcuNS0zLjMtNy41LTcuNSAwLTQuMSAzLjQtNy41IDcuNS03LjVoMjEuOXYtMjEuOWMwLTQuMSAzLjQtNy41IDcuNS03LjVzNy41IDMuMyA3LjUgNy41djIxLjloMjEuOWM0LjEgMCA3LjUgMy4zIDcuNSA3LjUgMCA0LjEtMy40IDcuNS03LjUgNy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNTYW1wbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptMy42IDUzLjJjMi44LS4zIDExLjUgMSAxMS41IDExLjVsNi42IDEwNy4yIDQuOS01OS4zYzAtNiA0LjctMTAuNiAxMC42LTEwLjYgNS45IDAgMTAuNiA0LjcgMTAuNiAxMC42IDAgMi41LS41LTUuNyA1LjcgODEuNWw1LjgtNjQuMmMuMy0yLjkgMi45LTkuMyAxMC4yLTkuMyAzLjggMCA5LjkgMi4zIDEwLjYgOC45bDExLjUgOTYuNSA1LjMtMTIuOGMxLjgtNC40IDUuMi02LjYgMTAuMi02LjZoNTh2MjEuM2gtNTAuOWwtMTguMiA0NC4zYy0zLjkgOS45LTE5LjUgOS4xLTIwLjgtMy4xbC00LTMxLjktNy41IDkyLjZjLS4zIDMtMyA5LjMtMTAuMiA5LjMtMyAwLTkuOC0yLjEtMTAuNi05LjMgMC0xLjkuNiA1LjgtNi4yLTc3LjlsLTUuMyA3Mi4yYy0xLjEgNC44LTQuOCA5LjMtMTAuNiA5LjMtMi45IDAtOS44LTItMTAuNi05LjMgMC0xLjkuNSA2LjctNS44LTg3LjdsLTUuOCA5NC44YzAgNi4zLTMuNiAxMi40LTEwLjYgMTIuNC01LjIgMC0xMC42LTQuMS0xMC42LTEybC01LjgtODcuN2MtNS44IDkyLjUtNS4zIDg0LTUuMyA4NS45LTEuMSA0LjgtNC44IDkuMy0xMC42IDkuMy0zIDAtOS44LTIuMS0xMC42LTkuMyAwLS43LS40LTEuMS0uNC0yLjZsLTYuMi04OC42TDE4MiAzNDhjLS43IDYuNS02LjcgOS4zLTEwLjYgOS4zLTUuOCAwLTkuNi00LjEtMTAuNi04LjlMMTQ5LjcgMjcyYy0yIDQtMy41IDguNC0xMS4xIDguNEg4Ny4ydi0yMS4zSDEzMmwxMy43LTI3LjljNC40LTkuOSAxOC4yLTcuMiAxOS45IDIuN2wzLjEgMjAuNCA4LjQtOTcuOWMwLTYgNC44LTEwLjYgMTAuNi0xMC42LjUgMCAxMC42LS4yIDEwLjYgMTIuNGw0LjkgNjkuMSA2LjYtOTIuNmMwLTEwLjEgOS41LTEwLjYgMTAuMi0xMC42LjYgMCAxMC42LjcgMTAuNiAxMC42bDUuMyA4MC42IDYuMi05Ny45Yy4xLTEuMS0uNi0xMC4zIDkuOS0xMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNTaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptMTAxIDEzMi40YzcuOCAwIDEzLjcgNi4xIDEzLjcgMTMuN3YxODIuNWMwIDcuNy02LjEgMTMuNy0xMy43IDEzLjdIMjE0LjNjLTcuNyAwLTEzLjctNi0xMy43LTEzLjd2LTU0aC01NGMtNy44IDAtMTMuNy02LTEzLjctMTMuN1YxMzEuMWMwLTguMiA2LjYtMTIuNyAxMi40LTEzLjdoMTM2LjRjNy43IDAgMTMuNyA2IDEzLjcgMTMuN3Y1NGg1NHpNMTU5LjkgMzAwLjNoNDAuN1YxOTguOWMwLTcuNCA1LjgtMTIuNiAxMi0xMy43aDU1Ljh2LTQwLjNIMTU5Ljl2MTU1LjR6bTE3Ni4yLTg4LjFIMjI3LjZ2MTU1LjRoMTA4LjVWMjEyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1plcm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bS0uNCA2MC41Yy04MS45IDAtMTAyLjUgNzcuMy0xMDIuNSAxNDIuOCAwIDY1LjUgMjAuNiAxNDIuOCAxMDIuNSAxNDIuOFMzNTAuNSAzMjEuNSAzNTAuNSAyNTZjMC02NS41LTIwLjYtMTQyLjgtMTAyLjUtMTQyLjh6bTAgNTMuOWMzLjMgMCA2LjQuNSA5LjIgMS4yIDUuOSA1LjEgOC44IDEyLjEgMy4xIDIxLjlsLTU0LjUgMTAwLjJjLTEuNy0xMi43LTEuOS0yNS4xLTEuOS0zNC40IDAtMjguOCAyLTg4LjkgNDQuMS04OC45em00MC44IDQ2LjJjMi45IDE1LjQgMy4zIDMxLjQgMy4zIDQyLjcgMCAyOC45LTIgODguOS00NC4xIDg4LjktMTMuNSAwLTMyLjYtNy43LTIwLjEtMjYuNGw2MC45LTEwNS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ1LjgzIDIxNC44N2wtMzMuMjIgMTcuMjhjLTkuNDMtMTkuNTgtMjUuMjQtMTkuOTMtMjcuNDYtMTkuOTMtMjIuMTMgMC0zMy4yMiAxNC42MS0zMy4yMiA0My44NCAwIDIzLjU3IDkuMjEgNDMuODQgMzMuMjIgNDMuODQgMTQuNDcgMCAyNC42NS03LjA5IDMwLjU3LTIxLjI2bDMwLjU1IDE1LjVjLTYuMTcgMTEuNTEtMjUuNjkgMzguOTgtNjUuMSAzOC45OC0yMi42IDAtNzMuOTYtMTAuMzItNzMuOTYtNzcuMDUgMC01OC42OSA0My03Ny4wNiA3Mi42My03Ny4wNiAzMC43Mi0uMDEgNTIuNyAxMS45NSA2NS45OSAzNS44NnptMTQzLjA1IDBsLTMyLjc4IDE3LjI4Yy05LjUtMTkuNzctMjUuNzItMTkuOTMtMjcuOS0xOS45My0yMi4xNCAwLTMzLjIyIDE0LjYxLTMzLjIyIDQzLjg0IDAgMjMuNTUgOS4yMyA0My44NCAzMy4yMiA0My44NCAxNC40NSAwIDI0LjY1LTcuMDkgMzAuNTQtMjEuMjZsMzEgMTUuNWMtMi4xIDMuNzUtMjEuMzkgMzguOTgtNjUuMDkgMzguOTgtMjIuNjkgMC03My45Ni05Ljg3LTczLjk2LTc3LjA1IDAtNTguNjcgNDIuOTctNzcuMDYgNzIuNjMtNzcuMDYgMzAuNzEtLjAxIDUyLjU4IDExLjk1IDY1LjU2IDM1Ljg2ek0yNDcuNTYgOC4wNUMxMDQuNzQgOC4wNSAwIDEyMy4xMSAwIDI1Ni4wNWMwIDEzOC40OSAxMTMuNiAyNDggMjQ3LjU2IDI0OCAxMjkuOTMgMCAyNDguNDQtMTAwLjg3IDI0OC40NC0yNDggMC0xMzcuODctMTA2LjYyLTI0OC0yNDguNDQtMjQ4em0uODcgNDUwLjgxYy0xMTIuNTQgMC0yMDMuNy05My4wNC0yMDMuNy0yMDIuODEgMC0xMDUuNDIgODUuNDMtMjAzLjI3IDIwMy43Mi0yMDMuMjcgMTEyLjUzIDAgMjAyLjgyIDg5LjQ2IDIwMi44MiAyMDMuMjYtLjAxIDEyMS42OS05OS42OCAyMDIuODItMjAyLjg0IDIwMi44MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JpdGljYWxSb2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS44MiAwYy4yNi4xNSAyMTYuNTcgMTI0LjUxIDIxNy4xMiAxMjQuNzIgMyAxLjE4IDMuNyAzLjQ2IDMuNyA2LjU2cS0uMTEgMTI1LjE3IDAgMjUwLjM2YTUuODggNS44OCAwIDAgMS0zLjM4IDUuNzhjLTIxLjM3IDEyLTIwNy44NiAxMTguMjktMjE4LjkzIDEyNC41OGgtM0MxNDIgNDY2LjM0IDMuMDggMzg2LjU2IDIuOTMgMzg2LjQ4YTMuMjkgMy4yOSAwIDAgMS0xLjg4LTMuMjRjMC0uODcgMC0yMjUuOTQtLjA1LTI1My4xYTUgNSAwIDAgMSAyLjkzLTQuOTNDMjcuMTkgMTEyLjExIDIxMy4yIDYgMjI0LjA3IDB6TTIxNS40IDIwLjQybC0uMjItLjE2UTExOC4wNiA3NS41NSAyMSAxMzAuODdjMCAuMTIuMDguMjMuMTMuMzVsMzAuODYgMTEuNjRjLTcuNzEgNi04LjMyIDYtMTAuNjUgNS4xMy0uMSAwLTI0LjE3LTkuMjgtMjYuOC0xMHYyMzAuNDNjLjg4LTEuNDEgNjQuMDctMTEwLjkxIDY0LjEzLTExMSAxLjYyLTIuODIgMy0xLjkyIDkuMTItMS41MiAxLjQuMDkgMS40OC4yMi43OCAxLjQyLTQxLjE5IDcxLjMzLTM2LjQgNjMtNjcuNDggMTE2Ljk0LS44MSAxLjQtLjYxIDEuMTMgMS4yNSAxLjEzaDE4Ni41YzEuNDQgMCAxLjY5LS4yMyAxLjctMS42NHYtOC44OGMwLTEuMzQgMi4zNi0uODEtMTguMzctMS03LjQ2LS4wNy0xNC4xNC0zLjIyLTIxLjM4LTEyLjctNy4zOC05LjY2LTE0LjYyLTE5LjQzLTIxLjg1LTI5LjIxLTIuMjgtMy4wOC0zLjQ1LTIuMzgtMTYuNzYtMi4zOC0xLjc1IDAtMS43OCAwLTEuNzYgMS44Mi4yOSAyNi4yMS4xNSAyNS4yNyAxIDMyLjY2LjUyIDQuMzcgMi4xNiA0LjIgOS42OSA0LjgxIDMuMTQuMjYgMy44OCA0LjA4LjUyIDQuOTItMS41Ny4zOS0zMS42LjUxLTMzLjY3LS4xYTIuNDIgMi40MiAwIDAgMSAuMy00LjczYzMuMjktLjc2IDYuMTYuODEgNi42Ni00LjQ0IDEuMy0xMy42NiAxLjE3LTkgMS4xLTc5LjQyIDAtMTAuODItLjM1LTEyLjU4LTUuMzYtMTMuNTUtMS4yMi0uMjQtMy41NC0uMTYtNC42OS0uNTUtMi44OC0xLTItNC44NCAxLjc3LTQuODUgMzMuNjcgMCA0Ni4wOC0xLjA3IDU2LjA2IDQuODYgNy43NCA0LjYxIDEyIDExLjQ4IDEyLjUxIDIwLjQuODggMTQuNTktNi41MSAyMi4zNS0xNSAzMi41OWExLjQ2IDEuNDYgMCAwIDAgMCAyLjIyYzIuNiAzLjI1IDUgNi42MyA3LjcxIDkuODMgMjcuNTYgMzMuMjMgMjQuMTEgMzAuNTQgNDEuMjggMzMuMDYuODkuMTMgMS0uNDIgMS0xLjE1di0xMWMwLTEgLjMyLTEuNDMgMS40MS0xLjI2YTcyLjM3IDcyLjM3IDAgMCAwIDIzLjU4LS4zYzEuMDgtLjE1IDEuNS4yIDEuNDggMS4zMyAwIC4xMS44OCAyNi42OS44NyAyNi44LS4wNSAxLjUyLjY3IDEuNjIgMS44OSAxLjYyaDE4Ni43MVEzODYuNTEgMzA0LjYgMzQ2IDIzNC4zM2MyLjI2LS42Ni0uNCAwIDYuNjktMS4zOSAyLS4zOSAyLjA1LS40MSAzLjExIDEuNDQgNy4zMSAxMi42NCA3Ny4zMSAxMzQgNzcuMzcgMTM0LjA2VjEzOGMtMS43Mi41LTEwMy4zIDM4LjcyLTEwNS43NiAzOS42OC0xLjA4LjQyLTEuNTUuMi0xLjkxLS44OC0uNjMtMS45LTEuMzQtMy43Ni0yLjA5LTUuNjItLjMyLS43OS0uMDktMS4xMy42NS0xLjM5LjEgMCA5NS41My0zNS44NSAxMDMtMzguNzctNjUuNDItMzcuNTctMTMwLjU2LTc1LTE5Ni0xMTIuNmw4Ni44MiAxNTAuMzktLjI4LjMzYy05LjU3LS45LTEwLjQ2LTEuNi0xMS44LTMuOTQtMS0xLjY5LTczLjUtMTI3LjcxLTgyLTE0Mi4xNi05LjEgMTQuNjctODMuNTYgMTQ2LjIxLTg1LjM3IDE0Ni4zMi0yLjkzLjE3LTUuODguMDgtOS4yNS4wOHE0My4yNS03NC43NCA4Ni4xOC0xNDl6bTUxLjkzIDEyOS45MmEzNy42OCAzNy42OCAwIDAgMCA1LjU0LS44NWMxLjY5LS4zIDIuNTMuMiAyLjYgMS45MiAwIC4xMS4wNyAxOS4wNi0uODYgMjAuNDVzLTEuODggMS4yMi0yLjYtLjE5Yy01LTkuNjkgNi4yMi05LjY2LTM5LjEyLTEyLS43IDAtMSAuMjMtMSAuOTMgMCAuMTMgMy43MiAxMjIgMy43MyAxMjIuMTEgMCAuODkuNTIgMS4yIDEuMjEgMS41MWE4My45MiA4My45MiAwIDAgMSA4LjcgNC4wNWM3LjMxIDQuMzMgMTEuMzggMTAuODQgMTIuNDEgMTkuMzEgMS40NCAxMS44LTIuNzcgMzUuNzctMzIuMjEgMzcuMTQtMi43NS4xMy0yOC4yNiAxLjA4LTM0LjE0LTIzLjI1LTQuNjYtMTkuMjYgOC4yNi0zMi43IDE5Ljg5LTM2LjRhMi40NSAyLjQ1IDAgMCAwIDItMi42NmMuMS01LjYzIDMtMTA3LjEgMy43MS0xMjEuMzUuMDUtMS4wOC0uNjItMS4xNi0xLjM1LTEuMTUtMzIuMzUuNTItMzYuNzUtLjM0LTQwLjIyIDguNTItMi40MiA2LjE4LTQuMTQgMS4zMi0zLjk1LjIzcTEuNTktOSAzLjMxLTE4Yy40LTIuMTEgMS40My0yLjYxIDMuNDMtMS44NiA1LjU5IDIuMTEgNi43MiAxLjcgMzcuMjUgMS45MiAxLjczIDAgMS43OC0uMDggMS44Mi0xLjg1LjY4LTI3LjQ5LjU4LTIyLjU5IDEtMjkuNTVhMi42OSAyLjY5IDAgMCAwLTEuNjMtMi44Yy01LjYtMi45MS04Ljc1LTcuNTUtOC45LTEzLjg3LS4zNS0xNC44MSAxNy43Mi0yMS42NyAyNy4zOC0xMS41MSA2Ljg0IDcuMTkgNS44IDE4LjkxLTIuNDUgMjQuMTVhNC4zNSA0LjM1IDAgMCAwLTIuMjIgNC4zNGMwIC41OS0uMTEtNC4zMSAxIDMwLjA1IDAgLjkuNDMgMS4xMiAxLjI0IDEuMTEuMSAwIDIzLS4wOSAzNC40Ny0uMzd6TTY4LjI3IDE0MS43YzE5Ljg0LTQuNTEgMzIuNjgtLjU2IDUyLjQ5IDEuNjkgMi43Ni4zMSAzLjc0IDEuMjIgMy42MiA0LS4yMSA1LTEuMTYgMjIuMzMtMS4yNCAyMy4xNWEyLjY1IDIuNjUgMCAwIDEtMS42MyAyLjM0Yy00LjA2IDEuNy0zLjYxLTQuNDUtNC03LjI5LTMuMTMtMjIuNDMtNzMuODctMzIuNy03NC42MyAyNS40LS4zMSAyMy45MiAxNyA1My42MyA1NC4wOCA1MC44OCAyNy4yNC0yIDE5LTIwLjE5IDI0Ljg0LTIwLjQ3YTIuNzIgMi43MiAwIDAgMSAzIDMuMzZjLTEuODMgMTAuODUtMy40MiAxOC45NS0zLjQ1IDE5LjE1LTEuNTQgOS4xNy04Ni43IDIyLjA5LTkzLjM1LTQyLjA2LTIuNzEtMjUuODUgMTAuNDQtNTMuMzcgNDAuMjctNjAuMTV6bTgwIDg3LjY3aC0xOS40OWEyLjU3IDIuNTcgMCAwIDEtMi42Ni0xLjc5YzIuMzgtMy43NSA1Ljg5LjkyIDUuODYtNi4xNC0uMDgtMjUuNzUuMjEtMzggLjIzLTQwLjEgMC0zLjQyLS41My00LjY1LTMuMzItNC45NC03LS43Mi0zLjExLTMuMzctMS4xMS0zLjM4IDExLjg0LS4xIDIyLjYyLS4xOCAzMC4wNS43MiA4Ljc3IDEuMDcgMTYuNzEgMTIuNjMgNy45MyAyMi42Mi0yIDIuMjUtNCA0LjQyLTYuMTQgNi43My45NSAxLjE1IDYuOSA4LjgyIDE3LjI4IDE5LjY4IDIuNjYgMi43OCA2LjE1IDMuNTEgOS44OCAzLjEzYTIuMjEgMi4yMSAwIDAgMCAyLjIzLTIuMTJjLjMtMy40Mi4yNiA0LjczLjQ1LTQwLjU4IDAtNS42NS0uMzQtNi41OC0zLjIzLTYuODMtMy45NS0uMzUtNC0yLjI2LS42OS0zLjM3bDE5LjA5LS4wOWMuMzIgMCA0LjQ5LjUzIDEgMy4zOCAwIC4wNS0uMTYgMC0uMjQgMC0zLjYxLjI2LTMuOTQgMS00IDQuNjItLjI3IDQzLjkzLjA3IDQwLjIzLjQxIDQyLjgyLjExLjg0LjI3IDIuMjMgNS4xIDIuMTQgMi40OSAwIDMuODYgMy4zNyAwIDMuNC0xMC4zNy4wOC0yMC43NCAwLTMxLjExLjA3LTEwLjY3IDAtMTMuNDctNi4yLTI0LjIxLTIwLjgyLTEuNi0yLjE4LTguMzEtMi4zNi04LjItLjM3Ljg4IDE2LjQ3IDAgMTcuNzggNCAxNy42NyA0Ljc1LS4xIDQuNzMgMy41Ny44MyAzLjU1em0yNzUtMTAuMTVjLTEuMjEgNy4xMy4xNyAxMC4zOC01LjMgMTAuMzQtNjEuNTUtLjQyLTQ3LjgyLS4yMi01MC43Mi0uMzFhMTguNCAxOC40IDAgMCAxLTMuNjMtLjczYy0yLjUzLS42IDEuNDgtMS4yMy0uMzgtNS42LTEuNDMtMy4zNy0yLjc4LTYuNzgtNC4xMS0xMC4xOWExLjk0IDEuOTQgMCAwIDAtMi0xLjQ0IDEzOCAxMzggMCAwIDAtMTQuNTguMDcgMi4yMyAyLjIzIDAgMCAwLTEuNjIgMS4wNmMtMS41OCAzLjYyLTMuMDcgNy4yOS00LjUxIDExLTEuMjcgMy4yMyA3Ljg2IDEuMzIgMTIuMTkgMi4xNiAzIC41NyA0LjUzIDMuNzIuNjYgMy43M0gzMjIuOWMtMi45MiAwLTMuMDktMy4xNS0uNzQtMy4yMWE2LjMgNi4zIDAgMCAwIDUuOTItMy40N2MxLjUtMyAyLjgtNiA0LjExLTkuMDkgMTguMTgtNDIuMTQgMTcuMDYtNDAuMTcgMTguNDItNDEuNjFhMS44MyAxLjgzIDAgMCAxIDMgMGMyLjkzIDMuMzQgMTguNCA0NC43MSAyMy42MiA1MS45MiAyIDIuNyA1Ljc0IDIgNi4zNiAyIDMuNjEuMTMgNC0xLjExIDQuMTMtNC4yOS4wOS0xLjg3LjA4IDEuMTcuMDctNDEuMjQgMC00LjQ2LTIuMzYtMy43NC01LjU1LTQuMjctLjI2IDAtMi41Ni0uNjMtLjA4LTMuMDYuMjEtLjItLjg5LS4yNCAyMS43LS4xNSAyLjMyIDAgNS4zMiAyLjc1LTEuMjEgMy40NWEyLjU2IDIuNTYgMCAwIDAtMi42NiAyLjgzYy0uMDcgMS42My0uMTkgMzguODkuMjkgNDEuMjFhMy4wNiAzLjA2IDAgMCAwIDMuMjMgMi40M2MxMy4yNS40MyAxNC45Mi40NCAxNi0zLjQxIDEuNjctNS43OCA0LjEzLTIuNTIgMy43My0uMTl6bS0xMDQuNzIgNjQuMzdjLTQuMjQgMC00LjQyLTMuMzktLjYxLTMuNDEgMzUuOTEtLjE2IDI4LjExLjM4IDM3LjE5LS42NSAxLjY4LS4xOSAyLjM4LjI0IDIuMjUgMS44OS0uMjYgMy4zOS0uNjQgNi43OC0xIDEwLjE2LS4yNSAyLjE2LTMuMiAyLjYxLTMuNC0uMTUtLjM4LTUuMzEtMi4xNS00LjQ1LTE1LjYzLTUuMDgtMS41OC0uMDctMS42NCAwLTEuNjQgMS41MlYzMDRjMCAxLjY1IDAgMS42IDEuNjIgMS40NyAzLjEyLS4yNSAxMC4zMS4zNCAxNS42OS0xLjUyLjQ3LS4xNiAzLjMtMS43OSAzLjA3IDEuNzYgMCAuMjEtLjc2IDEwLjM1LTEuMTggMTEuMzktLjUzIDEuMjktMS44OCAxLjUxLTIuNTguMzItMS4xNy0yIDAtNS4wOC0zLjcxLTUuMy0xNS40Mi0uOS0xMi45MS0yLjU1LTEyLjkxIDYgMCAxMi4yNS0uNzYgMTYuMTEgMy44OSAxNi4yNCAxNi42NC40OCAxNC40IDAgMTYuNDMtNS43MS44NC0yLjM3IDMuNS0xLjc3IDMuMTguNTgtLjQ0IDMuMjEtLjg1IDYuNDMtMS4yMyA5LjY0IDAgLjM2LS4xNiAyLjQtNC42NiAyLjM5LTM3LjE2LS4wOC0zNC41NC0uMTktMzUuMjEtLjMxLTIuNzItLjUxLTIuMi0zIC4yMi0zLjQ1IDEuMS0uMTkgNCAuNTQgNC4xNi0yLjU2IDIuNDQtNTYuMjItLjA3LTUxLjM0LTMuOTEtNTEuMzN6bS0uNDEtMTA5LjUyYzIuNDYuNjEgMy4xMyAxLjc2IDIuOTUgNC42NS0uMzMgNS4zLS4zNCA5LS41NSA5LjY5LS42NiAyLjIzLTMuMTUgMi4xMi0zLjM0LS4yNy0uMzgtNC44MS0zLjA1LTcuODItNy41Ny05LjE1LTI2LjI4LTcuNzMtMzIuODEgMTUuNDYtMjcuMTcgMzAuMjIgNS44OCAxNS40MSAyMiAxNS45MiAyOC44NiAxMy43OCA1LjkyLTEuODUgNS44OC02LjUgNi45MS03LjU4IDEuMjMtMS4zIDIuMjUtMS44NCAzLjEyIDEuMSAwIC4xLjU3IDExLjg5LTYgMTIuNzUtMS42LjIxLTE5LjM4IDMuNjktMzIuNjgtMy4zOS0yMS0xMS4xOS0xNi43NC0zNS40Ny02Ljg4LTQ1LjMzIDE0LTE0LjA2IDM5LjkxLTcuMDYgNDIuMzItNi40N3pNMjg5LjggMjgwLjE0YzMuMjggMCAzLjY2IDMgLjE2IDMuNDMtMi42MS4zMi01LS40Mi01IDUuNDYgMCAyLS4xOSAyOS4wNS40IDQxLjQ1LjExIDIuMjkgMS4xNSAzLjUyIDMuNDQgMy42NSAyMiAxLjIxIDE0Ljk1LTEuNjUgMTguNzktNi4zNCAxLjgzLTIuMjQgMi43Ni44NCAyLjc2IDEuMDguMzUgMTMuNjItNCAxMi4zOS01LjE5IDEyLjRsLTM4LjE2LS4xOWMtMS45My0uMjMtMi4wNi0zLS40Mi0zLjM4IDItLjQ4IDQuOTQuNCA1LjEzLTIuOCAxLTE1Ljg3LjU3LTQ0LjY1LjM0LTQ3LjgxLS4yNy0zLjc3LTIuOC0zLjI3LTUuNjgtMy43MS0yLjQ3LS4zOC0yLTMuMjIuMzQtMy4yMiAxLjQ1LS4wMiAxNy45Ny0uMDMgMjMuMDktLjAyem0tMzEuNjMtNTcuNzljLjA3IDQuMDggMi44NiAzLjQ2IDYgMy41OCAyLjYxLjEgMi41MyAzLjQxLS4wNyAzLjQzLTYuNDggMC0xMy43IDAtMjEuNjEtLjA2LTMuODQgMC0zLjM4LTMuMzUgMC0zLjM3IDQuNDkgMCAzLjI0IDEuNjEgMy40MS00NS41NCAwLTUuMDgtMy4yNy0zLjU0LTQuNzItNC4yMy0yLjU4LTEuMjMtMS4zNi0zLjA5LjQxLTMuMTUgMS4yOSAwIDIwLjE5LS40MSAyMS4xNy4yMXMxLjg3IDEuNjUtLjQyIDIuODZjLTEgLjUyLTMuODYtLjI4LTQuMTUgMi40NyAwIC4yMS0uODIgMS42My0uMDcgNDMuOHptLTM2LjkxIDI3NC4yN2EyLjkzIDIuOTMgMCAwIDAgMy4yNiAwYzE3LTkuNzkgMTgyLTEwMy41NyAxOTcuNDItMTEyLjUxLS4xNC0uNDMgMTEuMjYtLjE4LTE4MS41Mi0uMjctMS4yMiAwLTEuNTcuMzctMS41MyAxLjU2IDAgLjEgMS4yNSA0NC41MSAxLjIyIDUwLjM4YTI4LjMzIDI4LjMzIDAgMCAxLTEuMzYgNy43MWMtLjU1IDEuODMuMzgtLjUtMTMuNSAzMi4yMy0uNzMgMS43Mi0xIDIuMjEtMi0uMDgtNC4xOS0xMC4zNC04LjI4LTIwLjcyLTEyLjU3LTMxYTIzLjYgMjMuNiAwIDAgMS0yLTEwLjc5Yy4xNi0yLjQ2LjgtMTYuMTIgMS41MS00OCAwLTEuOTUgMC0yLTItMmgtMTgzYzIuNTggMS42MyAxNzguMzIgMTAyLjU3IDE5NiAxMTIuNzZ6bS05MC45LTE4OC43NWMwIDIuNC4zNiAyLjc5IDIuNzYgMyAxMS41NCAxLjE3IDIxIDMuNzQgMjUuNjQtNy4zMiA2LTE0LjQ2IDIuNjYtMzQuNDEtMTIuNDgtMzguODQtMi0uNTktMTYtMi43Ni0xNS45NCAxLjUxLjA1IDguMDQuMDEgMTEuNjEuMDIgNDEuNjV6bTEwNS43NS0xNS4wNWMwIDIuMTMgMS4wNyAzOC42OCAxLjA5IDM5LjEzLjM0IDkuOTQtMjUuNTggNS43Ny0yNS4yMy0yLjU5LjA4LTIgMS4zNy0zNy40MiAxLjEtMzkuNDMtMTQuMSA3LjQ0LTE0LjQyIDQwLjIxIDYuNDQgNDguOGExNy45IDE3LjkgMCAwIDAgMjIuMzktNy4wN2M0LjkxLTcuNzYgNi44NC0yOS40Ny01LjQzLTM5YTIuNTMgMi41MyAwIDAgMS0uMzYuMTJ6bS0xMi4yOC0xOThjLTkuODMgMC05LjczIDE0Ljc1LS4wNyAxNC44N3MxMC4xLTE0Ljg4LjA3LTE0Ljkxem0tODAuMTUgMTAzLjgzYzAgMS44LjQxIDIuNCAyLjE3IDIuNTggMTMuNjIgMS4zOSAxMi41MS0xMSAxMi4xNi0xMy4zNi0xLjY5LTExLjIyLTE0LjM4LTEwLjItMTQuMzUtNy44MS4wNSA0LjUtLjAzIDEzLjY4LjAyIDE4LjU5em0yMTIuMzIgNi40bC02LjEtMTUuODRjLTIuMTYgNS40OC00LjE2IDEwLjU3LTYuMjMgMTUuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNzczNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMmwzNC45IDM5NS44TDE5MiA0ODBsMTU3LjEtNTIuMkwzODQgMzJIMHptMzEzLjEgODBsLTQuOCA0Ny4zTDE5MyAyMDguNmwtLjMuMWgxMTEuNWwtMTIuOCAxNDYuNi05OC4yIDI4LjctOTguOC0yOS4yLTYuNC03My45aDQ4LjlsMy4yIDM4LjMgNTIuNiAxMy4zIDU0LjctMTUuNCAzLjctNjEuNi0xNjYuMy0uNXYtLjFsLS4yLjEtMy42LTQ2LjNMMTkzLjEgMTYybDYuNS0yLjdINzYuN0w3MC45IDExMmgyNDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3NzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMzJsLTY0IDM2OC0yMjMuMyA4MEwwIDQwMGwxOS42LTk0LjhoODJsLTggNDAuNkwyMTAgMzkwLjJsMTM0LjEtNDQuNCAxOC44LTk3LjFIMjkuNWwxNi04MmgzMzMuN2wxMC41LTUyLjdINTYuM2wxNi4zLTgySDQ4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3V0dGxlZmlzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQgMzA1LjVjLTE3LjUgMzEuNi01Ny40IDU0LjUtOTYgNTQuNS01Ni42IDAtMTA0LTQ3LjQtMTA0LTEwNHM0Ny40LTEwNCAxMDQtMTA0YzM4LjYgMCA3OC41IDIyLjkgOTYgNTQuNSAxMy43LTUwLjkgNDEuNy05My4zIDg3LTExNy44QzM4NS43IDM5LjEgMzIwLjUgOCAyNDggOCAxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDhjNzIuNSAwIDEzNy43LTMxLjEgMTgzLTgwLjctNDUuMy0yNC41LTczLjMtNjYuOS04Ny0xMTcuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhREFuZERCZXlvbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEzLjggMjQxLjVjMTMuOCAwIDIxLTEwLjEgMjQuOC0xNy45LTEtMS4xLTUtNC4yLTcuNC02LjYtMi40IDQuMy04LjIgMTAuNy0xMy45IDEwLjctMTAuMiAwLTE1LjQtMTQuNy0zLjItMjYuNi0uNS0uMi00LjMtMS44LTggMi40IDAtMyAxLTUuMSAyLjEtNi42LTMuNSAxLjMtOS44IDUuNi0xMS40IDcuOS4yLTUuOCAxLjYtNy41LjYtOWwtLjItLjJzLTguNSA1LjYtOS4zIDE0LjdjMCAwIDEuMS0xLjYgMi4xLTEuOS42LS4zIDEuMyAwIC42IDEuOS0uMi42LTUuOCAxNS43IDUuMSAyNi0uNi0xLjYtMS45LTcuNiAyLjQtMS45LS4zLjEgNS44IDcuMSAxNS43IDcuMXptNTIuNC0yMS4xYzAtNC00LjktNC40LTUuNi00LjUgMiAzLjkuOSA3LjUuMiA5IDIuNS0uNCA1LjQtMS42IDUuNC00LjV6bTEwLjMgNS4yYzAtNi40LTYuMi0xMS40LTEzLjUtMTAuNyA4IDEuMyA1LjYgMTMuOC01IDExLjQgMy43LTIuNiAzLjItOS45LTEuMy0xMi41IDEuNCA0LjItMyA4LjItNy40IDQuNi0yLjQtMS45LTgtNi42LTEwLjYtOC42LTIuNC0yLjEtNS41LTEtNi42LTEuOC0xLjMtMS4xLS41LTMuOC0yLjItNS0xLjYtLjgtMy0uMy00LjgtMS0xLjYtLjYtMi43LTEuOS0yLjYtMy41LTIuNSA0LjQgMy40IDYuMyA0LjUgOC41IDEgMS45LS44IDQuOCA0IDguNSAxNC44IDExLjYgOS4xIDggMTAuNCAxOC4xLjYgNC4zIDQuMiA2LjcgNi40IDcuNC0yLjEtMS45LTIuOS02LjQgMC05LjMgMCAxMy45IDE5LjIgMTMuMyAyMy4xIDYuNC0yLjQgMS4xLTctLjItOS0xLjkgNy43IDEgMTQuMi00LjEgMTQuNi0xMC42em0tMzkuNC0xOC40YzIgLjggMS42LjcgNi40IDQuNSAxMC4yLTI0LjUgMjEuNy0xNS43IDIyLTE1LjUgMi4yLTEuOSA5LjgtMy44IDEzLjgtMi43LTIuNC0yLjctNy41LTYuMi0xMy4zLTYuMi00LjcgMC03LjQgMi4yLTggMS4zLS44LTEuNCAzLjItMy40IDMuMi0zLjQtNS40LjItOS42IDYuNy0xMS4yIDUuOS0xLjEtLjUgMS40LTMuNyAxLjQtMy43LTUuMSAyLjktOS4zIDkuMS0xMC4yIDEzIDQuNi01LjggMTMuOC05LjggMTkuNy05LTEwLjUuNS0xOS41IDkuNy0yMy44IDE1Ljh6bTI0Mi41IDUxLjljLTIwLjcgMC00MCAxLjMtNTAuMyAyLjFsNy40IDguMnY3Ny4ybC03LjQgOC4yYzEwLjQuOCAzMC45IDIuMSA1MS42IDIuMSA0Mi4xIDAgNTkuMS0yMC43IDU5LjEtNDguOSAwLTI5LjMtMjMuMi00OC45LTYwLjQtNDguOXptLTE1LjEgNzUuNnYtNTMuM2MzMC4xLTMuMyA0Ni44IDMuOCA0Ni44IDI2LjMgMCAyNS42LTIxLjQgMzAuMi00Ni44IDI3ek0zMDEuNiAxODFjLTEtMy40LS4yLTYuOSAxLjEtOS40IDEgMyAyLjYgNi40IDcuNSA5LS41LTIuNC0uMi01LjYuNS04LTEuNC01LjQgMi4xLTkuOSA2LjQtOS45IDYuOSAwIDguNSA4LjggNC43IDE0LjQgMi4xIDMuMiA1LjUgNS42IDcuNyA3LjggMy4yLTMuNyA1LjUtOS41IDUuNS0xMy44IDAtOC4yLTUuNS0xNS45LTE2LjctMTYuNS0yMC0uOS0yMC4yIDE2LjYtMjAgMTguOS41IDUuMiAzLjQgNy44IDMuMyA3LjV6bS0uNCA2Yy0uNSAxLjgtNyAzLjctMTAuMiA2LjkgNC44LTEgNy0uMiA3LjggMS44LjUgMS40LS4yIDMuNC0uNSA1LjYgMS42LTEuOCA3LTUuNSAxMS02LjItMS0uMy0zLjQtLjgtNC4zLS44IDIuOS0zLjQgOS4zLTQuNSAxMi44LTMuNy0yLjItLjItNi43IDEuMS04LjUgMi42IDEuNi4zIDMgLjYgNC4zIDEuMS0yLjEuOC00LjggMy40LTUuOCA2LjEgNy01IDEzLjEgNS4yIDcgOC4yLjguMiAyLjcgMCAzLjUtLjUtLjMgMS4xLTEuOSAzLTMgMy40IDIuOSAwIDctMS45IDguMi00LjYgMCAwLTEuOC42LTIuNi0uMnMuMy00LjMuMy00LjNjLTIuMyAyLjktMy40LTEuMy0xLjMtNC4yLTEtLjMtMy41LS42LTQuNi0uNSAzLjItMS4xIDEwLjQtMS44IDExLjItLjMuNiAxLjEtMSAzLjQtMSAzLjQgNC0uNSA4LjMgMS4xIDYuNyA1LjEgMi45LTEuNCA1LjUtNS45IDQuOC0xMC40LS4zIDEtMS42IDIuNC0yLjkgMi43LjItMS40LTEtMi4yLTEuOS0yLjYgMS43LTkuNi0xNC42LTE0LjItMTQuMS0yMy45LTEgMS4zLTEuOCA1LS44IDcuMSAyLjcgMy4yIDguNyA2LjcgMTAuMSAxMi4yLTIuNi02LjQtMTUuMS0xMS40LTE0LjYtMjAuMi0xLjYgMS42LTIuNiA3LjgtMS4zIDExIDIuNCAxLjQgNC41IDMuOCA0LjggNi4xLTIuMi01LjEtMTEuNC02LjEtMTMuOS0xMi4yLS42IDIuMi0uMyA1IDEgNi43IDAgMC0yLjItLjgtNy0uNiAxLjcuNiA1LjEgMy41IDQuOCA1LjJ6bTI1LjkgNy40Yy0yLjcgMC0zLjUtMi4xLTQuMi00LjMgMy4zIDEuMyA0LjIgNC4zIDQuMiA0LjN6bTM4LjkgMy43bC0xLS42Yy0xLjEtMS0yLjktMS40LTQuNy0xLjQtMi45IDAtNS44IDEuMy03LjUgMy40LS44LjgtMS40IDEuOC0yLjEgMi42djE1LjdjMy41IDIuNiA3LjEtMi45IDMtNy4yIDEuNS4zIDQuNiAyLjcgNS4xIDMuMiAwIDAgMi42LS41IDUtLjUgMi4xIDAgMy45LjMgNS42IDEuMVYxOTZjLTEuMS41LTIuMiAxLTIuNyAxLjR6TTc5LjkgMzA1LjljMTcuMi00LjYgMTYuMi0xOCAxNi4yLTE5LjkgMC0yMC42LTI0LjEtMjUtMzctMjVIM2w4LjMgOC42djI5LjVIMGwxMS40IDE0LjZWMzQ2TDMgMzU0LjZjNjEuNyAwIDczLjggMS41IDg2LjQtNS45IDYuNy00IDkuOS05LjggOS45LTE3LjYgMC01LjEgMi42LTE4LjgtMTkuNC0yNS4yem0tNDEuMy0yNy41YzIwIDAgMjkuNi0uOCAyOS42IDkuMXYzYzAgMTIuMS0xOSA4LjgtMjkuNiA4Ljh6bTAgNTkuMlYzMTVjMTIuMiAwIDMyLjctMi4zIDMyLjcgOC44djQuNWguMmMwIDExLjItMTIuNSA5LjMtMzIuOSA5LjN6bTEwMS4yLTE5LjNsMjMuMS4ydi0uMmwxNC4xLTIxLjJoLTM3LjJ2LTE0LjloNTIuNGwtMTQuMS0yMXYtLjJsLTczLjUuMiA3LjQgOC4ydjc3LjFsLTcuNCA4LjJoODEuMmwxNC4xLTIxLjItNjAuMS4yem0yMTQuNy02MC4xYy03My45IDAtNzcuNSA5OS4zLS4zIDk5LjMgNzcuOSAwIDc0LjEtOTkuMy4zLTk5LjN6bS0uMyA3Ny41Yy0zNy40IDAtMzYuOS01NS4zLjItNTUuMyAzNi44LjEgMzguOCA1NS4zLS4yIDU1LjN6bS05MS4zLTguM2w0NC4xLTY2LjJoLTQxLjdsNi4xIDcuMi0yMC41IDM3LjJoLS4zbC0yMS0zNy4yIDYuNC03LjJoLTQ0LjlsNDQuMSA2NS44LjIgMTkuNC03LjcgOC4yaDQyLjZsLTcuMi04LjJ6bS0yOC40LTE1MS4zYzEuNiAxLjMgMi45IDIuNCAyLjkgNi42djM4LjhjMCA0LjItLjggNS4zLTIuNyA2LjQtLjEuMS03LjUgNC41LTcuOSA0LjZoMzUuMWMxMCAwIDE3LjQtMS41IDI2LTguNi0uNi01IC4yLTkuNS44LTEyIDAtLjItMS44IDEuNC0yLjcgMy41IDAtNS43IDEuNi0xNS40IDkuNi0yMC41LS4xIDAtMy43LS44LTkgMS4xIDItMy4xIDEwLTcuOSAxMC40LTcuOS04LjItMjYtMzgtMjIuOS0zMi4yLTIyLjktMzAuOSAwLTMyLjYuMy0zOS45LTQgLjEuOC41IDguMiA5LjYgMTQuOXptMjEuNSA1LjVjNC42IDAgMjMuMS0zLjMgMjMuMSAxNy4zIDAgMjAuNy0xOC40IDE3LjMtMjMuMSAxNy4zem0yMjguOSA3OS42bDcgOC4zVjMxMmgtLjNjLTUuNC0xNC40LTQyLjMtNDEuNS00NS4yLTUwLjloLTMxLjZsNy40IDguNXY3Ni45bC03LjIgOC4zaDM5bC03LjQtOC4ydi00Ny40aC4zYzMuNyAxMC42IDQ0LjUgNDIuOSA0OC41IDU1LjZoMjEuM3YtODUuMmw3LjQtOC4zem0tMTA2LjctOTYuMWMtMzIuMiAwLTMyLjguMi0zOS45LTQgLjEuNy41IDguMyA5LjYgMTQuOSAzLjEgMiAyLjkgNC4zIDIuOSA5LjUgMS44LTEuMSAzLjgtMi4yIDYuMS0zLTEuMSAxLjEtMi43IDIuNy0zLjUgNC41IDEtMS4xIDcuNS01LjEgMTQuNi0zLjUtMS42LjMtNCAxLjEtNi4xIDIuOS4xIDAgMi4xLTEuMSA3LjUtLjN2LTQuM2M0LjcgMCAyMy4xLTMuNCAyMy4xIDE3LjMgMCAyMC41LTE4LjUgMTcuMy0xOS43IDE3LjMgNS43IDQuNCA1LjggMTIgMi4yIDE2LjNoLjNjMzMuNCAwIDM2LjctMjcuMyAzNi43LTM0IDAtMy44LTEuMS0zMi0zMy44LTMzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURBbmREIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgyLjUgOTguOWMtLjYtMTcuMiAyLTMzLjggMTIuNy00OC4yLjMgNy40IDEuMiAxNC41IDQuMiAyMS42IDUuOS0yNy41IDE5LjctNDkuMyA0Mi4zLTY1LjUtMS45IDUuOS0zLjUgMTEuOC0zIDE3LjcgOC43LTcuNCAxOC44LTE3LjggNDQuNC0yMi43IDE0LjctMi44IDI5LjctMiA0Mi4xIDEgMzguNSA5LjMgNjEgMzQuMyA2OS43IDcyLjMgNS4zIDIzLjEuNyA0NS04LjMgNjYuNC01LjIgMTIuNC0xMiAyNC40LTIwLjcgMzUuMS0yLTEuOS0zLjktMy44LTUuOC01LjYtNDIuOC00MC44LTI2LjgtMjUuMi0zNy40LTM3LjQtMS4xLTEuMi0xLTIuMi0uMS0zLjYgOC4zLTEzLjUgMTEuOC0yOC4yIDEwLTQ0LTEuMS05LjgtNC4zLTE4LjktMTEuMy0yNi4yLTE0LjUtMTUuMy0zOS4yLTE1LTUzLjUuNi0xMS40IDEyLjUtMTQuMSAyNy40LTEwLjkgNDMuNi4yIDEuMy40IDIuNyAwIDMuOS0zLjQgMTMuNy00LjYgMjcuNi0yLjUgNDEuNi4xLjUuMSAxLjEuMSAxLjYgMCAuMy0uMS41LS4yIDEuMS0yMS44LTExLTM2LTI4LjMtNDMuMi01Mi4yLTguMyAxNy44LTExLjEgMzUuNS02LjYgNTQuMS0xNS42LTE1LjItMjEuMy0zNC4zLTIyLTU1LjJ6bTQ2OS42IDEyMy4yYy0xMS42LTExLjYtMjUtMjAuNC00MC4xLTI2LjYtMTIuOC01LjItMjYtNy45LTM5LjktNy4xLTEwIC42LTE5LjYgMy4xLTI5IDYuNC0yLjUuOS01LjEgMS42LTcuNyAyLjItNC45IDEuMi03LjMtMy4xLTQuNy02LjggMy4yLTQuNiAzLjQtNC4yIDE1LTEyIC42LS40IDEuMi0uOCAyLjItMS41aC0yLjVjLS42IDAtMS4yLjItMS45LjMtMTkuMyAzLjMtMzAuNyAxNS41LTQ4LjkgMjkuNi0xMC40IDguMS0xMy44IDMuOC0xMi0uNSAxLjQtMy41IDMuMy02LjcgNS4xLTEwIDEtMS44IDIuMy0zLjQgMy41LTUuMS0uMi0uMi0uNS0uMy0uNy0uNS0yNyAxOC4zLTQ2LjcgNDIuNC01Ny43IDczLjMuMy4zLjcuNiAxIC45LjMtLjYuNS0xLjIuOS0xLjcgMTAuNC0xMi4xIDIyLjgtMjEuOCAzNi42LTI5LjggMTguMi0xMC42IDM3LjUtMTguMyA1OC43LTIwLjIgNC4zLS40IDguNy0uMSAxMy4xLS4xLTEuOC43LTMuNS45LTUuMyAxLjEtMTguNSAyLjQtMzUuNSA5LTUxLjUgMTguNS0zMC4yIDE3LjktNTQuNSA0Mi4yLTc1LjEgNzAuNC0uMy40LS40LjktLjcgMS4zIDE0LjUgNS4zIDI0IDE3LjMgMzYuMSAyNS42LjItLjEuMy0uMi40LS40bDEuMi0yLjdjMTIuMi0yNi45IDI3LTUyLjMgNDYuNy03NC41IDE2LjctMTguOCAzOC0yNS4zIDYyLjUtMjAgNS45IDEuMyAxMS40IDQuNCAxNy4yIDYuOCAyLjMtMS40IDUuMS0zLjIgOC00LjcgOC40LTQuMyAxNy40LTcgMjYuNy05IDE0LjctMy4xIDI5LjUtNC45IDQ0LjUtMS4zdi0uNWMtLjUtLjQtMS4yLS44LTEuNy0xLjR6TTMxNi43IDM5Ny42Yy0zOS40LTMzLTIyLjgtMTkuNS00Mi43LTM1LjYtLjguOSAwLS4yLTEuOSAzLTExLjIgMTkuMS0yNS41IDM1LjMtNDQgNDcuNi0xMC4zIDYuOC0yMS41IDExLjgtMzQuMSAxMS44LTIxLjYgMC0zOC4yLTkuNS00OS40LTI3LjgtMTItMTkuNS0xMy4zLTQwLjctOC4yLTYyLjYgNy44LTMzLjggMzAuMS01NS4yIDM4LjYtNjQuMy0xOC43LTYuMi0zMyAxLjctNDYuNCAxMy45LjgtMTMuOSA0LjMtMjYuMiAxMS44LTM3LjMtMjQuMyAxMC42LTQ1LjkgMjUtNjQuOCA0My45LS4zLTUuOCA1LjQtNDMuNyA1LjYtNDQuNy4zLTIuNy0uNi01LjMtMy03LjQtMjQuMiAyNC43LTQ0LjUgNTEuOC01Ni4xIDg0LjYgNy40LTUuOSAxNC45LTExLjQgMjMuNi0xNi4yLTguMyAyMi4zLTE5LjYgNTIuOC03LjggMTAxLjEgNC42IDE5IDExLjkgMzYuOCAyNC4xIDUyLjMgMi45IDMuNyA2LjMgNi45IDkuNSAxMC4zLjItLjIuNC0uMy42LS41LTEuNC03LTIuMi0xNC4xLTEuNS0yMS45IDIuMiAzLjIgMy45IDYgNS45IDguNiAxMi42IDE2IDI4LjcgMjcuNCA0Ny4yIDM1LjYgMjUgMTEuMyA1MS4xIDEzLjMgNzcuOSA4LjYgNTQuOS05LjcgOTAuNy00OC42IDExNi05OC44IDEtMS44LjYtMi45LS45LTQuMnptMTcyLTQ2LjRjLTkuNS0zLjEtMjIuMi00LjItMjguNy0yLjkgOS45IDQgMTQuMSA2LjYgMTguOCAxMiAxMi42IDE0LjQgMTAuNCAzNC43LTUuNCA0NS42LTExLjcgOC4xLTI0LjkgMTAuNS0zOC45IDkuMS0xLjItLjEtMi4zLS40LTMtLjYgMi44LTMuNyA2LTcgOC4xLTEwLjggOS40LTE2LjggNS40LTQyLjEtOC43LTU2LjEtMi4xLTIuMS00LjYtMy45LTctNS45LS4zIDEuMy0uMSAyLjEuMSAyLjggNC4yIDE2LjYtOC4xIDMyLjQtMjQuOCAzMS44LTcuNi0uMy0xMy45LTMuOC0xOS42LTguNS0xOS41LTE2LjEtMzkuMS0zMi4xLTU4LjUtNDguMy01LjktNC45LTEyLjUtOC4xLTIwLjEtOC43LTQuNi0uNC05LjMtLjYtMTMuOS0uOS01LjktLjQtOC44LTIuOC0xMC40LTguNC0uOS0zLjQtMS41LTYuOC0yLjItMTAuMi0xLjUtOC4xLTYuMi0xMy0xNC4zLTE0LjItNC40LS43LTguOS0xLTEzLjMtMS41LTEzLTEuNC0xOS44LTcuNC0yMi42LTIwLjMtNSAxMS0xLjYgMjIuNCA3LjMgMjkuOSA0LjUgMy44IDkuMyA3LjMgMTMuOCAxMS4yIDQuNiAzLjggNy40IDguNyA3LjkgMTQuOC40IDQuNy44IDkuNSAxLjggMTQuMSAyLjIgMTAuNiA4LjkgMTguNCAxNyAyNS4xIDE2LjUgMTMuNyAzMyAyNy4zIDQ5LjUgNDEuMSAxNy45IDE1IDEzLjkgMzIuOCAxMyA1Ni0uOSAyMi45IDEyLjIgNDIuOSAzMy41IDUxLjIgMSAuNCAyIC42IDMuNiAxLjEtMTUuNy0xOC4yLTEwLjEtNDQuMS43LTUyLjMuMyAyLjIuNCA0LjMuOSA2LjQgOS40IDQ0LjEgNDUuNCA2NC4yIDg1IDU2LjkgMTYtMi45IDMwLjYtOC45IDQyLjktMTkuOCAyLTEuOCAzLjctNC4xIDUuOS02LjUtMTkuMyA0LjYtMzUuOC4xLTUwLjktMTAuNi43LS4zIDEuMy0uMyAxLjktLjMgMjEuMyAxLjggNDAuNi0zLjQgNTctMTcuNCAxOS41LTE2LjYgMjYuNi00Mi45IDE3LjQtNjYtOC4zLTIwLjEtMjMuNi0zMi4zLTQzLjgtMzguOXpNOTkuNCAxNzkuM2MtNS4zLTkuMi0xMy4yLTE1LjYtMjIuMS0yMS4zIDEzLjctLjUgMjYuNi4yIDM5LjYgMy43LTctMTIuMi04LjUtMjQuNy01LTM4LjcgNS4zIDExLjkgMTMuNyAyMC4xIDIzLjYgMjYuOCAxOS43IDEzLjIgMzUuNyAxOS42IDQ2LjcgMzAuMiAzLjQgMy4zIDYuMyA3LjEgOS42IDEwLjktLjgtMi4xLTEuNC00LjEtMi4yLTYtNS0xMC42LTEzLTE4LjYtMjIuNi0yNS0xLjgtMS4yLTIuOC0yLjUtMy40LTQuNS0zLjMtMTIuNS0zLTI1LjEtLjctMzcuNiAxLTUuNSAyLjgtMTAuOSA0LjUtMTYuMy44LTIuNCAyLjMtNC42IDQtNi42LjYgNi45IDAgMjUuNSAxOS42IDQ2IDEwLjggMTEuMyAyMi40IDIxLjkgMzMuOSAzMi43IDkgOC41IDE4LjMgMTYuNyAyNS41IDI2LjggMS4xIDEuNiAyLjIgMy4zIDMuOCA0LjctNS0xMy0xNC4yLTI0LjEtMjQuMi0zMy44LTkuNi05LjMtMTkuNC0xOC40LTI5LjItMjcuNC0zLjMtMy00LjYtNi43LTUuMS0xMC45LTEuMi0xMC40IDAtMjAuNiA0LjMtMzAuMi41LTEgMS4xLTIgMS45LTMuMy41IDQuMi42IDcuOSAxLjQgMTEuNiA0LjggMjMuMSAyMC40IDM2LjMgNDkuMyA2My41IDEwIDkuNCAxOS4zIDE5LjIgMjUuNiAzMS42IDQuOCA5LjMgNy4zIDE5IDUuNyAyOS42LS4xLjYuNSAxLjcgMS4xIDIgNi4yIDIuNiAxMCA2LjkgOS43IDE0LjMgNy43LTIuNiAxMi41LTggMTYuNC0xNC41IDQuMiAyMC4yLTkuMSA1MC4zLTI3LjIgNTguNy40LTQuNSA1LTIzLjQtMTYuNS0yNy43LTYuOC0xLjMtMTIuOC0xLjMtMjIuOS0yLjEgNC43LTkgMTAuNC0yMC42LjUtMjIuNC0yNC45LTQuNi01Mi44IDEuOS01Ny44IDQuNiA4LjIuNCAxNi4zIDEgMjMuNSAzLjMtMiA2LjUtNCAxMi43LTUuOCAxOC45LTEuOSA2LjUgMi4xIDE0LjYgOS4zIDkuNiAxLjItLjkgMi4zLTEuOSAzLjMtMi43LTMuMSAxNy45LTIuOSAxNS45LTIuOCAxOC4zLjMgMTAuMiA5LjUgNy44IDE1LjcgNy4zLTIuNSAxMS44LTI5LjUgMjcuMy00NS40IDI1LjggNy00LjcgMTIuNy0xMC4zIDE1LjktMTcuOS02LjUuOC0xMi45IDEuNi0xOS4yIDIuNGwtLjMtLjljNC43LTMuNCA4LTcuOCAxMC4yLTEzLjEgOC43LTIxLjEtMy42LTM4LTI1LTM5LjktOS4xLS44LTE3LjguOC0yNS45IDUuNSA2LjItMTUuNiAxNy4yLTI2LjYgMzIuNi0zNC41LTE1LjItNC4zLTguOS0yLjctMjQuNi02LjMgMTQuNi05LjMgMzAuMi0xMy4yIDQ2LjUtMTQuNi01LjItMy4yLTQ4LjEtMy42LTcwLjIgMjAuOSA3LjkgMS40IDE1LjUgMi44IDIzLjIgNC4yLTIzLjggNy00NCAxOS43LTYyLjQgMzUuNiAxLjEtNC44IDIuNy05LjUgMy4zLTE0LjMuNi00LjUuOC05LjIuMS0xMy42LTEuNS05LjQtOC45LTE1LjEtMTkuNy0xNi4zLTcuOS0uOS0xNS42LjEtMjMuMyAxLjMtLjkuMS0xLjcuMy0yLjkgMCAxNS44LTE0LjggMzYtMjEuNyA1My4xLTMzLjUgNi00LjUgNi44LTguMiAzLTE0Ljl6bTEyOC40IDI2LjhjMy4zIDE2IDEyLjYgMjUuNSAyMy44IDI0LjMtNC42LTExLjMtMTIuMS0xOS41LTIzLjgtMjQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGFpbHltb3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4LjkzLDI2N2E0OC40LDQ4LjQsMCwwLDAtMjQuMzYtNi4yMXEtMTkuODMsMC0zMy40NCwxMy4yN3QtMTMuNjEsMzMuNDJxMCwyMS4xNiwxMy4yOCwzNC42dDMzLjQzLDEzLjQ0cTIwLjUsMCwzNC4xMS0xMy43OFQzMjIsMzA3LjQ3QTQ3LjEzLDQ3LjEzLDAsMCwwLDMxNS45LDI4NCw0NC4xMyw0NC4xMywwLDAsMCwyOTguOTMsMjY3Wk0wLDMyVjQ4MEg0NDhWMzJaTTM3NC43MSw0MDUuMjZoLTUzLjFWMzgxLjM3aC0uNjdxLTE1Ljc5LDI2LjItNTUuNzgsMjYuMi0yNy41NiwwLTQ4Ljg5LTEzLjFhODguMjksODguMjksMCwwLDEtMzIuOTQtMzUuNzdxLTExLjYtMjIuNjgtMTEuNTktNTAuODksMC0yNy41NiwxMS43Ni01MC4yMmE4OS45LDg5LjksMCwwLDEsMzIuOTMtMzUuNzhxMjEuMTgtMTMuMDksNDcuNzItMTMuMWE4MC44Nyw4MC44NywwLDAsMSwyOS43NCw1LjIxcTEzLjI4LDUuMjEsMjUsMTdWMTUzbDU1Ljc5LTEyLjA5WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEYXNoY3ViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjYuNiAxMDRIMTEwLjRjLTUxLjEgMC05MS4yIDQzLjMtOTEuMiA5My41VjQyN2MwIDUwLjUgNDAuMSA4NSA5MS4yIDg1aDIyNy4yYzUxLjEgMCA5MS4yLTM0LjUgOTEuMi04NVYwTDMyNi42IDEwNHpNMTUzLjkgNDE2LjVjLTE3LjcgMC0zMi40LTE1LjEtMzIuNC0zMi44VjI0MC44YzAtMTcuNyAxNC43LTMyLjUgMzIuNC0zMi41aDE0MC43YzE3LjcgMCAzMiAxNC44IDMyIDMyLjV2MTIzLjVsNTEuMSA1Mi4zSDE1My45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZWV6ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUxLjQ2LDI0NC43MUg1NzZWMTcySDQ1MS40NlptMC0xNzMuODl2NzIuNjdINTc2VjcwLjgyWm0wLDI3NS4wNkg1NzZWMjczLjJINDUxLjQ2Wk0wLDQ0Ny4wOUgxMjQuNTRWMzc0LjQySDBabTE1MC40NywwSDI3NVYzNzQuNDJIMTUwLjQ3Wm0xNTAuNTIsMEg0MjUuNTNWMzc0LjQySDMwMVptMTUwLjQ3LDBINTc2VjM3NC40Mkg0NTEuNDZaTTMwMSwzNDUuODhINDI1LjUzVjI3My4ySDMwMVptLTE1MC41MiwwSDI3NVYyNzMuMkgxNTAuNDdabTAtMTAxLjE3SDI3NVYxNzJIMTUwLjQ3WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZWxpY2lvdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ2LjUgNjhjLS40LTEuNS0uOS0zLTEuNC00LjUtLjktMi41LTItNC44LTMuMy03LjEtMS40LTIuNC0zLTQuOC00LjctNi45LTIuMS0yLjUtNC40LTQuOC02LjktNi44LTEuMS0uOS0yLjItMS43LTMuMy0yLjUtMS4zLS45LTIuNi0xLjctNC0yLjQtMS44LTEtMy42LTEuOC01LjUtMi41LTEuNy0uNy0zLjUtMS4zLTUuNC0xLjctMy44LTEtNy45LTEuNS0xMi0xLjVINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCA0LjEuNSA4LjIgMS41IDEyIDIgNy43IDUuOCAxNC42IDExIDIwLjMgMSAxLjEgMi4xIDIuMiAzLjMgMy4zIDUuNyA1LjIgMTIuNiA5IDIwLjMgMTEgMy44IDEgNy45IDEuNSAxMiAxLjVoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYy0uMS00LjEtLjYtOC4yLTEuNi0xMnpNNDE2IDQzMmMwIDguOC03LjIgMTYtMTYgMTZIMjI0VjI1NkgzMlY4MGMwLTguOCA3LjItMTYgMTYtMTZoMTc2djE5MmgxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlcGxveWRvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODIuMiAxMzZoNTEuN3YyMzkuNmgtNTEuN3YtMjAuN2MtMTkuOCAyNC44LTUyLjggMjQuMS03My44IDE0LjctMjYuMi0xMS43LTQ0LjMtMzguMS00NC4zLTcxLjggMC0yOS44IDE0LjgtNTcuOSA0My4zLTcwLjggMjAuMi05LjEgNTIuNy0xMC42IDc0LjggMTIuOVYxMzZ6bS02NC43IDE2MS44YzAgMTguMiAxMy42IDMzLjUgMzMuMiAzMy41IDE5LjggMCAzMy4yLTE2LjQgMzMuMi0zMi45IDAtMTcuMS0xMy43LTMzLjItMzMuMi0zMy4yLTE5LjYgMC0zMy4yIDE2LjQtMzMuMiAzMi42ek0xODguNSAxMzZoNTEuN3YyMzkuNmgtNTEuN3YtMjAuN2MtMTkuOCAyNC44LTUyLjggMjQuMS03My44IDE0LjctMjYuMi0xMS43LTQ0LjMtMzguMS00NC4zLTcxLjggMC0yOS44IDE0LjgtNTcuOSA0My4zLTcwLjggMjAuMi05LjEgNTIuNy0xMC42IDc0LjggMTIuOVYxMzZ6bS02NC43IDE2MS44YzAgMTguMiAxMy42IDMzLjUgMzMuMiAzMy41IDE5LjggMCAzMy4yLTE2LjQgMzMuMi0zMi45IDAtMTcuMS0xMy43LTMzLjItMzMuMi0zMy4yLTE5LjcgMC0zMy4yIDE2LjQtMzMuMiAzMi42ek00NDggOTZjMTcuNSAwIDMyIDE0LjQgMzIgMzJ2MjU2YzAgMTcuNS0xNC40IDMyLTMyIDMySDY0Yy0xNy41IDAtMzItMTQuNC0zMi0zMlYxMjhjMC0xNy41IDE0LjQtMzIgMzItMzJoMzg0bTAtMzJINjRDMjguOCA2NCAwIDkyLjggMCAxMjh2MjU2YzAgMzUuMiAyOC44IDY0IDY0IDY0aDM4NGMzNS4yIDAgNjQtMjguOCA2NC02NFYxMjhjMC0zNS4yLTI4LjgtNjQtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlc2twcm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA1LjkgNTEybDMxLjEtMzguNGMxMi4zLS4yIDI1LjYtMS40IDM2LjUtNi42IDM4LjktMTguNiAzOC40LTYxLjkgMzguMy02My44LS4xLTUtLjgtNC40LTI4LjktMzcuNEgzNjJjLS4yIDUwLjEtNy4zIDY4LjUtMTAuMiA3NS43LTkuNCAyMy43LTQzLjkgNjIuOC05NS4yIDY5LjQtOC43IDEuMS0zMi44IDEuMi01MC43IDEuMXptMjAwLjQtMTY3LjdjMzguNiAwIDU4LjUtMTMuNiA3My43LTMwLjlsLTE3NS41LS4zLTE3LjQgMzEuMyAxMTkuMi0uMXptLTQzLjYtMjIzLjl2MTY4LjNoLTczLjVsLTMyLjcgNTUuNUgyNTBjLTUyLjMgMC01OC4xLTU2LjUtNTguMy01OC45LTEuMi0xMy4yLTIxLjMtMTEuNi0yMC4xIDEuOCAxLjQgMTUuOCA4LjggNDAgMjYuNCA1Ny4xaC05MWMtMjUuNSAwLTExMC44LTI2LjgtMTA3LTExNFYxNi45QzAgLjkgOS43LjMgMTUgLjFoODJjLjIgMCAuMy4xLjUuMSA0LjMtLjQgNTAuMS0yLjEgNTAuMSA0My43IDAgMTMuMyAyMC4yIDEzLjQgMjAuMiAwIDAtMTguMi01LjUtMzIuOC0xNS44LTQzLjdoODQuMmMxMDguNy0uNCAxMjYuNSA3OS40IDEyNi41IDEyMC4yem0tMTMyLjUgNTZsNjQgMjkuM2MxMy4zLTQ1LjUtNDIuMi03MS43LTY0LTI5LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURldiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAuMTIgMjA4LjI5Yy0zLjg4LTIuOS03Ljc3LTQuMzUtMTEuNjUtNC4zNUg5MS4wM3YxMDQuNDdoMTcuNDVjMy44OCAwIDcuNzctMS40NSAxMS42NS00LjM1IDMuODgtMi45IDUuODItNy4yNSA1LjgyLTEzLjA2di02OS42NWMtLjAxLTUuOC0xLjk2LTEwLjE2LTUuODMtMTMuMDZ6TTQwNC4xIDMySDQzLjlDMTkuNyAzMiAuMDYgNTEuNTkgMCA3NS44djM2MC40Qy4wNiA0NjAuNDEgMTkuNyA0ODAgNDMuOSA0ODBoMzYwLjJjMjQuMjEgMCA0My44NC0xOS41OSA0My45LTQzLjhWNzUuOGMtLjA2LTI0LjIxLTE5LjctNDMuOC00My45LTQzLjh6TTE1NC4yIDI5MS4xOWMwIDE4LjgxLTExLjYxIDQ3LjMxLTQ4LjM2IDQ3LjI1aC00Ni40VjE3Mi45OGg0Ny4zOGMzNS40NCAwIDQ3LjM2IDI4LjQ2IDQ3LjM3IDQ3LjI4bC4wMSA3MC45M3ptMTAwLjY4LTg4LjY2SDIwMS42djM4LjQyaDMyLjU3djI5LjU3SDIwMS42djM4LjQxaDUzLjI5djI5LjU3aC02Mi4xOGMtMTEuMTYuMjktMjAuNDQtOC41My0yMC43Mi0xOS42OVYxOTMuN2MtLjI3LTExLjE1IDguNTYtMjAuNDEgMTkuNzEtMjAuNjloNjMuMTlsLS4wMSAyOS41MnptMTAzLjY0IDExNS4yOWMtMTMuMiAzMC43NS0zNi44NSAyNC42My00Ny40NCAwbC0zOC41My0xNDQuOGgzMi41N2wyOS43MSAxMTMuNzIgMjkuNTctMTEzLjcyaDMyLjU4bC0zOC40NiAxNDQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGV2aWFudGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTMuMmwtOTguMiAxNzkuMSA3LjQgOS41SDMyMHYxMjcuN0gxNTkuMWwtMTMuNSA5LjItNDMuNyA4NGMtLjMgMC04LjYgOC42LTkuMiA5LjJIMHYtOTMuMmw5My4yLTE3OS40LTcuNC05LjJIMFYxMDIuNWgxNTZsMTMuNS05LjIgNDMuNy04NGMuMyAwIDguNi04LjYgOS4yLTkuMkgzMjB2OTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGhsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzOCAzMDEuMmg1OC43TDMxOSAyNzFoLTU4LjdMMjM4IDMwMS4yek0wIDI4Mi45djYuNGg4MS44bDQuNy02LjRIMHpNMTcyLjkgMjcxYy04LjcgMC02LTMuNi00LjYtNS41IDIuOC0zLjggNy42LTEwLjQgMTAuNC0xNC4xIDIuOC0zLjcgMi44LTUuOS0yLjgtNS45aC01MWwtNDEuMSA1NS44aDEwMC4xYzMzLjEgMCA1MS41LTIyLjUgNTcuMi0zMC4zaC02OC4yem0zMTcuNS02LjlsMzkuMy01My40aC02Mi4ybC0zOS4zIDUzLjRoNjIuMnpNOTUuMyAyNzFIMHY2LjRoOTAuNmw0LjctNi40em0xMTEtMjYuNmMtMi44IDMuOC03LjUgMTAuNC0xMC4zIDE0LjItMS40IDItNC4xIDUuNSA0LjYgNS41aDQ1LjZzNy4zLTEwIDEzLjUtMTguNGM4LjQtMTEuNC43LTM1LTI5LjItMzVIMTEyLjZsLTIwLjQgMjcuOGgxMTEuNGM1LjYgMCA1LjUgMi4yIDIuNyA1Ljl6TTAgMzAxLjJoNzMuMWw0LjctNi40SDB2Ni40em0zMjMgMGg1OC43TDQwNCAyNzFoLTU4LjdjLS4xIDAtMjIuMyAzMC4yLTIyLjMgMzAuMnptMjIyIC4xaDk1di02LjRoLTkwLjNsLTQuNyA2LjR6bTIyLjMtMzAuM2wtNC43IDYuNEg2NDBWMjcxaC03Mi43em0tMTMuNSAxOC4zSDY0MHYtNi40aC04MS41bC00LjcgNi40em0tMTY0LjItNzguNmwtMjIuNSAzMC42aC0yNi4ybDIyLjUtMzAuNmgtNTguN2wtMzkuMyA1My40SDQwOWwzOS4zLTUzLjRoLTU4Ljd6bTMzLjUgNjAuM3MtNC4zIDUuOS02LjQgOC43Yy03LjQgMTAtLjkgMjEuNiAyMy4yIDIxLjZoOTQuM2wyMi4zLTMwLjNINDIzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpYXNwb3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1MS42NCAzNTQuNTVjLTEuNCAwLTg4IDExOS45LTg4LjcgMTE5LjlTNzYuMzQgNDE0IDc2IDQxMy4yNXM4Ni42LTEyNS43IDg2LjYtMTI3LjRjMC0yLjItMTI5LjYtNDQtMTM3LjYtNDcuMS0xLjMtLjUgMzEuNC0xMDEuOCAzMS43LTEwMi4xLjYtLjcgMTQ0LjQgNDcgMTQ1LjUgNDcgLjQgMCAuOS0uNiAxLTEuMy40LTIgMS0xNDguNiAxLjctMTQ5LjYuOC0xLjIgMTA0LjUtLjcgMTA1LjEtLjMgMS41IDEgMy41IDE1Ni4xIDYuMSAxNTYuMSAxLjQgMCAxMzguNy00NyAxMzkuMy00Ni4zLjguOSAzMS45IDEwMi4yIDMxLjUgMTAyLjYtLjkuOS0xNDAuMiA0Ny4xLTE0MC42IDQ4LjgtLjMgMS40IDgyLjggMTIyLjEgODIuNSAxMjIuOXMtODUuNSA2My41LTg2LjMgNjMuNWMtMS0uMi04OS0xMjUuNS05MC45LTEyNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgxLjcgMTcyLjNIMHYxNzQuNGgxMzIuN1Y5NmgtNTF2NzYuM3ptMCAxMzMuNEg1MC45di05Mi4zaDMwLjh2OTIuM3ptMjk3LjItMTMzLjR2MTc0LjRoODEuOHYyOC41aC04MS44VjQxNkg1MTJWMTcyLjNIMzc4Ljl6bTgxLjggMTMzLjRoLTMwLjh2LTkyLjNoMzAuOHY5Mi4zem0tMjM1LjYgNDFoODIuMXYyOC41aC04Mi4xVjQxNmgxMzMuM1YxNzIuM0gyMjUuMXYxNzQuNHptNTEuMi0xMzMuM2gzMC44djkyLjNoLTMwLjh2LTkyLjN6TTE1My4zIDk2aDUxLjN2NTFoLTUxLjNWOTZ6bTAgNzYuM2g1MS4zdjE3NC40aC01MS4zVjE3Mi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWdpdGFsT2NlYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODcgNDgxLjhoNzMuN3YtNzMuNkg4N3pNMjUuNCAzNDYuNnY2MS42SDg3di02MS42em00NjYuMi0xNjkuN2MtMjMtNzQuMi04Mi40LTEzMy4zLTE1Ni42LTE1Ni42QzE2NC45LTMyLjggOCA5My43IDggMjU1LjloOTUuOGMwLTEwMS44IDEwMS0xODAuNSAyMDguMS0xNDEuNyAzOS43IDE0LjMgNzEuNSA0Ni4xIDg1LjggODUuNyAzOS4xIDEwNy0zOS43IDIwNy44LTE0MS40IDIwOHYuM2gtLjNWNTA0YzE2Mi42IDAgMjg4LjgtMTU2LjggMjM1LjYtMzI3LjF6bS0yMzUuMyAyMzF2LTk1LjNoLTk1LjZ2OTUuNkgyNTZ2LS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaXNjb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyNC41MzEsNjkuODM2YTEuNSwxLjUsMCwwLDAtLjc2NC0uN0E0ODUuMDY1LDQ4NS4wNjUsMCwwLDAsNDA0LjA4MSwzMi4wM2ExLjgxNiwxLjgxNiwwLDAsMC0xLjkyMy45MSwzMzcuNDYxLDMzNy40NjEsMCwwLDAtMTQuOSwzMC42LDQ0Ny44NDgsNDQ3Ljg0OCwwLDAsMC0xMzQuNDI2LDAsMzA5LjU0MSwzMDkuNTQxLDAsMCwwLTE1LjEzNS0zMC42LDEuODksMS44OSwwLDAsMC0xLjkyNC0uOTFBNDgzLjY4OSw0ODMuNjg5LDAsMCwwLDExNi4wODUsNjkuMTM3YTEuNzEyLDEuNzEyLDAsMCwwLS43ODguNjc2QzM5LjA2OCwxODMuNjUxLDE4LjE4NiwyOTQuNjksMjguNDMsNDA0LjM1NGEyLjAxNiwyLjAxNiwwLDAsMCwuNzY1LDEuMzc1QTQ4Ny42NjYsNDg3LjY2NiwwLDAsMCwxNzYuMDIsNDc5LjkxOGExLjksMS45LDAsMCwwLDIuMDYzLS42NzZBMzQ4LjIsMzQ4LjIsMCwwLDAsMjA4LjEyLDQzMC40YTEuODYsMS44NiwwLDAsMC0xLjAxOS0yLjU4OCwzMjEuMTczLDMyMS4xNzMsMCwwLDEtNDUuODY4LTIxLjg1MywxLjg4NSwxLjg4NSwwLDAsMS0uMTg1LTMuMTI2YzMuMDgyLTIuMzA5LDYuMTY2LTQuNzExLDkuMTA5LTcuMTM3YTEuODE5LDEuODE5LDAsMCwxLDEuOS0uMjU2Yzk2LjIyOSw0My45MTcsMjAwLjQxLDQzLjkxNywyOTUuNSwwYTEuODEyLDEuODEyLDAsMCwxLDEuOTI0LjIzM2MyLjk0NCwyLjQyNiw2LjAyNyw0Ljg1MSw5LjEzMiw3LjE2YTEuODg0LDEuODg0LDAsMCwxLS4xNjIsMy4xMjYsMzAxLjQwNywzMDEuNDA3LDAsMCwxLTQ1Ljg5LDIxLjgzLDEuODc1LDEuODc1LDAsMCwwLTEsMi42MTEsMzkxLjA1NSwzOTEuMDU1LDAsMCwwLDMwLjAxNCw0OC44MTUsMS44NjQsMS44NjQsMCwwLDAsMi4wNjMuN0E0ODYuMDQ4LDQ4Ni4wNDgsMCwwLDAsNjEwLjcsNDA1LjcyOWExLjg4MiwxLjg4MiwwLDAsMCwuNzY1LTEuMzUyQzYyMy43MjksMjc3LjU5NCw1OTAuOTMzLDE2Ny40NjUsNTI0LjUzMSw2OS44MzZaTTIyMi40OTEsMzM3LjU4Yy0yOC45NzIsMC01Mi44NDQtMjYuNTg3LTUyLjg0NC01OS4yMzlTMTkzLjA1NiwyMTkuMSwyMjIuNDkxLDIxOS4xYzI5LjY2NSwwLDUzLjMwNiwyNi44Miw1Mi44NDMsNTkuMjM5QzI3NS4zMzQsMzEwLjk5MywyNTEuOTI0LDMzNy41OCwyMjIuNDkxLDMzNy41OFptMTk1LjM4LDBjLTI4Ljk3MSwwLTUyLjg0My0yNi41ODctNTIuODQzLTU5LjIzOVMzODguNDM3LDIxOS4xLDQxNy44NzEsMjE5LjFjMjkuNjY3LDAsNTMuMzA3LDI2LjgyLDUyLjg0NCw1OS4yMzlDNDcwLjcxNSwzMTAuOTkzLDQ0Ny41MzgsMzM3LjU4LDQxNy44NzEsMzM3LjU4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaXNjb3Vyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI1LjkgMzJDMTAzLjMgMzIgMCAxMzAuNSAwIDI1Mi4xIDAgMjU2IC4xIDQ4MCAuMSA0ODBsMjI1LjgtLjJjMTIyLjcgMCAyMjIuMS0xMDIuMyAyMjIuMS0yMjMuOUM0NDggMTM0LjMgMzQ4LjYgMzIgMjI1LjkgMzJ6TTIyNCAzODRjLTE5LjQgMC0zNy45LTQuMy01NC40LTEyLjFMODguNSAzOTJsMjIuOS03NWMtOS44LTE4LjEtMTUuNC0zOC45LTE1LjQtNjEgMC03MC43IDU3LjMtMTI4IDEyOC0xMjhzMTI4IDU3LjMgMTI4IDEyOC01Ny4zIDEyOC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2NodWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk3LjkgMTYwSDI1NlYxOS42TDM5Ny45IDE2MHpNMzA0IDE5MnYxMzBjMCA2Ni44LTM2LjUgMTAwLjEtMTEzLjMgMTAwLjFIOTZWODQuOGg5NC43YzEyIDAgMjMuMS44IDMzLjEgMi41di04NEMyMTIuOSAxLjEgMjAxLjQgMCAxODkuMiAwSDB2NTEyaDE4OS4yQzMyOS43IDUxMiA0MDAgNDQ3LjQgNDAwIDMxOC4xVjE5MmgtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvY2tlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDkuOSAyMzYuM2gtNjYuMXYtNTkuNGg2Ni4xdjU5LjR6bTAtMjA0LjNoLTY2LjF2NjAuN2g2Ni4xVjMyem03OC4yIDE0NC44SDM2MnY1OS40aDY2LjF2LTU5LjR6bS0xNTYuMy03Mi4xaC02Ni4xdjYwLjFoNjYuMXYtNjAuMXptNzguMSAwaC02Ni4xdjYwLjFoNjYuMXYtNjAuMXptMjc2LjggMTAwYy0xNC40LTkuNy00Ny42LTEzLjItNzMuMS04LjQtMy4zLTI0LTE2LjctNDQuOS00MS4xLTYzLjdsLTE0LTkuMy05LjMgMTRjLTE4LjQgMjcuOC0yMy40IDczLjYtMy43IDEwMy44LTguNyA0LjctMjUuOCAxMS4xLTQ4LjQgMTAuN0gyLjRjLTguNyA1MC44IDUuOCAxMTYuOCA0NCAxNjIuMSAzNy4xIDQzLjkgOTIuNyA2Ni4yIDE2NS40IDY2LjIgMTU3LjQgMCAyNzMuOS03Mi41IDMyOC40LTIwNC4yIDIxLjQuNCA2Ny42LjEgOTEuMy00NS4yIDEuNS0yLjUgNi42LTEzLjIgOC41LTE3LjFsLTEzLjMtOC45em0tNTExLjEtMjcuOWgtNjZ2NTkuNGg2Ni4xdi01OS40em03OC4xIDBoLTY2LjF2NTkuNGg2Ni4xdi01OS40em03OC4xIDBoLTY2LjF2NTkuNGg2Ni4xdi01OS40em0tNzguMS03Mi4xaC02Ni4xdjYwLjFoNjYuMXYtNjAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJhZnQyRGlnaXRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMzk4LjFsLTE0NC04Mi4ydjY0LjdoLTkxLjNjMzAuOC0zNSA4MS44LTk1LjkgMTExLjgtMTQ5LjMgMzUuMi02Mi42IDE2LjEtMTIzLjQtMTIuOC0xNTMuMy00LjQtNC42LTYyLjItNjIuOS0xNjYtNDEuMi01OS4xIDEyLjQtODkuNCA0My40LTEwNC4zIDY3LjMtMTMuMSAyMC45LTE3IDM5LjgtMTguMiA0Ny43LTUuNSAzMyAxOS40IDY3LjEgNTYuNyA2Ny4xIDMxLjcgMCA1Ny4zLTI1LjcgNTcuMy01Ny40IDAtMjcuMS0xOS43LTUyLjEtNDgtNTYuOCAxLjgtNy4zIDE3LjctMjEuMSAyNi4zLTI0LjcgNDEuMS0xNy4zIDc4IDUuMiA4My4zIDMzLjUgOC4zIDQ0LjMtMzcuMSA5MC40LTY5LjcgMTI3LjZDODQuNSAzMjguMSAxOC4zIDM5Ni44IDAgNDE1LjlsMzM2LS4xVjQ4MHpNMzY5LjkgMzcxbDQ3LjEgMjcuMi00Ny4xIDI3LjJ6TTEzNC4yIDE2MS40YzAgMTIuNC0xMCAyMi40LTIyLjQgMjIuNHMtMjIuNC0xMC0yMi40LTIyLjQgMTAtMjIuNCAyMi40LTIyLjQgMjIuNCAxMC4xIDIyLjQgMjIuNHpNODIuNSAzODAuNWMyNS42LTI3LjQgOTcuNy0xMDQuNyAxNTAuOC0xNjkuOSAzNS4xLTQzLjEgNDAuMy04Mi40IDI4LjQtMTEyLjctNy40LTE4LjgtMTcuNS0zMC4yLTI0LjMtMzUuNyA0NS4zIDIuMSA2OCAyMy40IDgyLjIgMzguMyAwIDAgNDIuNCA0OC4yIDUuOCAxMTMuMy0zNyA2NS45LTExMC45IDE0Ny41LTEyOC41IDE2Ni43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmliYmJsZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MC4yIDIyOC4yYzguOS00Mi40IDM3LjQtNzcuNyA3NS43LTk1LjcgMy42IDQuOSAyOCAzOC44IDUwLjcgNzktNjQgMTctMTIwLjMgMTYuOC0xMjYuNCAxNi43ek0zMTQuNiAxNTRjLTMzLjYtMjkuOC03OS4zLTQxLjEtMTIyLjYtMzAuNiAzLjggNS4xIDI4LjYgMzguOSA1MSA4MCA0OC42LTE4LjMgNjkuMS00NS45IDcxLjYtNDkuNHpNMTQwLjEgMzY0YzQwLjUgMzEuNiA5My4zIDM2LjcgMTM3LjMgMTgtMi0xMi0xMC01My44LTI5LjItMTAzLjYtNTUuMSAxOC44LTkzLjggNTYuNC0xMDguMSA4NS42em05OC44LTEwOC4yYy0zLjQtNy44LTcuMi0xNS41LTExLjEtMjMuMkMxNTkuNiAyNTMgOTMuNCAyNTIuMiA4Ny40IDI1MmMwIDEuNC0uMSAyLjgtLjEgNC4yIDAgMzUuMSAxMy4zIDY3LjEgMzUuMSA5MS40IDIyLjItMzcuOSA2Ny4xLTc3LjkgMTE2LjUtOTEuOHptMzQuOSAxNi4zYzE3LjkgNDkuMSAyNS4xIDg5LjEgMjYuNSA5Ny40IDMwLjctMjAuNyA1Mi41LTUzLjYgNTguNi05MS42LTQuNi0xLjUtNDIuMy0xMi43LTg1LjEtNS44em0tMjAuMy00OC40YzQuOCA5LjggOC4zIDE3LjggMTIgMjYuOCA0NS41LTUuNyA5MC43IDMuNCA5NS4yIDQuNC0uMy0zMi4zLTExLjgtNjEuOS0zMC45LTg1LjEtMi45IDMuOS0yNS44IDMzLjItNzYuMyA1My45ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS02NCAxNzZjMC04OC4yLTcxLjgtMTYwLTE2MC0xNjBTNjQgMTY3LjggNjQgMjU2czcxLjggMTYwIDE2MCAxNjAgMTYwLTcxLjggMTYwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJpYmJibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjI1MiA4IDggMTE5LjI1MiA4IDI1NnMxMTEuMjUyIDI0OCAyNDggMjQ4IDI0OC0xMTEuMjUyIDI0OC0yNDhTMzkyLjc0OCA4IDI1NiA4em0xNjMuOTcgMTE0LjM2NmMyOS41MDMgMzYuMDQ2IDQ3LjM2OSA4MS45NTcgNDcuODM1IDEzMS45NTUtNi45ODQtMS40NzctNzcuMDE4LTE1LjY4Mi0xNDcuNTAyLTYuODE4LTUuNzUyLTE0LjA0MS0xMS4xODEtMjYuMzkzLTE4LjYxNy00MS42MTQgNzguMzIxLTMxLjk3NyAxMTMuODE4LTc3LjQ4MiAxMTguMjg0LTgzLjUyM3pNMzk2LjQyMSA5Ny44N2MtMy44MSA1LjQyNy0zNS42OTcgNDguMjg2LTExMS4wMjEgNzYuNTE5LTM0LjcxMi02My43NzYtNzMuMTg1LTExNi4xNjgtNzkuMDQtMTI0LjAwOCA2Ny4xNzYtMTYuMTkzIDEzNy45NjYgMS4yNyAxOTAuMDYxIDQ3LjQ4OXptLTIzMC40OC0zMy4yNWM1LjU4NSA3LjY1OSA0My40MzggNjAuMTE2IDc4LjUzNyAxMjIuNTA5LTk5LjA4NyAyNi4zMTMtMTg2LjM2IDI1LjkzNC0xOTUuODM0IDI1LjgwOUM2Mi4zOCAxNDcuMjA1IDEwNi42NzggOTIuNTczIDE2NS45NDEgNjQuNjJ6TTQ0LjE3IDI1Ni4zMjNjMC0yLjE2Ni4wNDMtNC4zMjIuMTA4LTYuNDczIDkuMjY4LjE5IDExMS45MiAxLjUxMyAyMTcuNzA2LTMwLjE0NiA2LjA2NCAxMS44NjggMTEuODU3IDIzLjkxNSAxNy4xNzQgMzUuOTQ5LTc2LjU5OSAyMS41NzUtMTQ2LjE5NCA4My41MjctMTgwLjUzMSAxNDIuMzA2QzY0Ljc5NCAzNjAuNDA1IDQ0LjE3IDMxMC43MyA0NC4xNyAyNTYuMzIzem04MS44MDcgMTY3LjExM2MyMi4xMjctNDUuMjMzIDgyLjE3OC0xMDMuNjIyIDE2Ny41NzktMTMyLjc1NiAyOS43NCA3Ny4yODMgNDIuMDM5IDE0Mi4wNTMgNDUuMTg5IDE2MC42MzgtNjguMTEyIDI5LjAxMy0xNTAuMDE1IDIxLjA1My0yMTIuNzY4LTI3Ljg4MnptMjQ4LjM4IDguNDg5Yy0yLjE3MS0xMi44ODYtMTMuNDQ2LTc0Ljg5Ny00MS4xNTItMTUxLjAzMyA2Ni4zOC0xMC42MjYgMTI0LjcgNi43NjggMTMxLjk0NyA5LjA1NS05LjQ0MiA1OC45NDEtNDMuMjczIDEwOS44NDQtOTAuNzk1IDE0MS45Nzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyb3Bib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUyOCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY0LjQgMTE2LjNsLTEzMiA4NC4zIDEzMiA4NC4zLTEzMiA4NC4zTDAgMjg0LjFsMTMyLjMtODQuM0wwIDExNi4zIDEzMi4zIDMybDEzMi4xIDg0LjN6TTEzMS42IDM5NS43bDEzMi04NC4zIDEzMiA4NC4zLTEzMiA4NC4zLTEzMi04NC4zem0xMzIuOC0xMTEuNmwxMzItODQuMy0xMzItODMuNkwzOTUuNyAzMiA1MjggMTE2LjNsLTEzMi4zIDg0LjNMNTI4IDI4NC44bC0xMzIuMyA4NC4zLTEzMS4zLTg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcnVwYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE5LjUgMTE0LjdjLTIyLjItMTQtNDMuNS0xOS41LTY0LjctMzMuNS0xMy04LjgtMzEuMy0zMC00Ni41LTQ4LjMtMi43IDI5LjMtMTEuNSA0MS4yLTIyIDQ5LjUtMjEuMyAxNy0zNC44IDIyLjItNTMuNSAzMi4zQzExNyAxMjMgMzIgMTgxLjUgMzIgMjkwLjUgMzIgMzk5LjcgMTIzLjggNDgwIDIyNS44IDQ4MCAzMjcuNSA0ODAgNDE2IDQwNiA0MTYgMjk0YzAtMTEyLjMtODMtMTcxLTk2LjUtMTc5LjN6bTIuNSAzMjUuNmMtMjAuMSAyMC4xLTkwLjEgMjguNy0xMTYuNyA0LjItNC44LTQuOC4zLTEyIDYuNS0xMiAwIDAgMTcgMTMuMyA1MS41IDEzLjMgMjcgMCA0Ni03LjcgNTQuNS0xNCA2LjEtNC42IDguNCA0LjMgNC4yIDguNXptLTU0LjUtNTIuNmM4LjctMy42IDI5LTMuOCAzNi44IDEuMyA0LjEgMi44IDE2LjEgMTguOCA2LjIgMjMuNy04LjQgNC4yLTEuMi0xNS43LTI2LjUtMTUuNy0xNC43IDAtMTkuNSA1LjItMjYuNyAxMS03IDYtOS44IDgtMTIuMiA0LjctNi04LjIgMTUuOS0yMi4zIDIyLjQtMjV6TTM2MCA0MDVjLTE1LjItMS00NS41LTQ4LjgtNjUtNDkuNS0zMC45LS45LTEwNC4xIDgwLjctMTYxLjMgNDItMzguOC0yNi42LTE0LjYtMTA0LjggNTEuOC0xMDUuMiA0OS41LS41IDgzLjggNDkgMTA4LjUgNDguNSAyMS4zLS4zIDYxLjgtNDEuOCA4MS44LTQxLjggNDguNyAwIDIzLjMgMTA5LjMtMTUuOCAxMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUR5YWxvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjExOS4yaDY0Vjk2aDEwNy4yQzI4NC42IDk2IDM1MiAxNzYuMiAzNTIgMjU1LjkgMzUyIDMzMiAyOTMuNCA0MTYgMTcxLjIgNDE2SDB2NjRoMTcxLjJDMzMxLjkgNDgwIDQxNiAzNjcuMyA0MTYgMjU1LjljMC01OC43LTIyLjEtMTEzLjQtNjIuMy0xNTQuM0MzMDguOSA1NiAyNDUuNyAzMiAxNzEuMiAzMkgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJseWJpcmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy4yIDQ3LjVjMS4yLTEzIDIxLjMtMTQgMzYuNi04LjcuOS4zIDI2LjIgOS43IDE5IDE1LjItMjcuOS03LjQtNTYuNCAxOC4yLTU1LjYtNi41em0tMjAxIDYuOWMzMC43LTguMSA2MiAyMCA2MS4xLTcuMS0xLjMtMTQuMi0yMy40LTE1LjMtNDAuMi05LjYtMSAuMy0yOC43IDEwLjUtMjAuOSAxNi43ek0zMTkuNCAxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptLTE1OS43IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptMzE4LjUgMTYzLjJjLTkuOSAyNC00MC43IDExLTYzLjktMS4yLTEzLjUgNjkuMS01OC4xIDExMS40LTEyNi4zIDEyNC4yLjMuOS0yLS4xIDI0IDEgMzMuNiAxLjQgNjMuOC0zLjEgOTcuNC04LTE5LjgtMTMuOC0xMS40LTM3LjEtOS44LTM4LjEgMS40LS45IDE0LjcgMS43IDIxLjYgMTEuNSA4LjYtMTIuNSAyOC40LTE0LjggMzAuMi0xMy42IDEuNiAxLjEgNi42IDIwLjktNi45IDM0LjYgNC43LS45IDguMi0xLjYgOS44LTIuMSAyLjYtLjggMTcuNyAxMS4zIDMuMSAxMy4zLTE0LjMgMi4zLTIyLjYgNS4xLTQ3LjEgMTAuOC00NS45IDEwLjctODUuOSAxMS44LTExNy43IDEyLjhsMSAxMS42YzMuOCAxOC4xLTIzLjQgMjQuMy0yNy42IDYuMi44IDE3LjktMjcuMSAyMS44LTI4LjQtMWwtLjUgNS4zYy0uNyAxOC40LTI4LjQgMTcuOS0yOC4zLS42LTcuNSAxMy41LTI4LjEgNi44LTI2LjQtOC41bDEuMi0xMi40Yy0zNi43LjktNTkuNyAzLjEtNjEuOCAzLjEtMjAuOSAwLTIwLjktMzEuNiAwLTMxLjYgMi40IDAgMjcuNyAxLjMgNjMuMiAyLjgtNjEuMS0xNS41LTEwMy43LTU1LTExNC45LTExOC4yLTI1IDEyLjgtNTcuNSAyNi44LTY4LjIuOC0xMC41LTI1LjQgMjEuNS00Mi42IDY2LjgtNzMuNC43LTYuNiAxLjYtMTMuMyAyLjctMTkuOC0xNC40LTE5LjYtMTEuNi0zNi4zLTE2LjEtNjAuNC0xNi44IDIuNC0yMy4yLTkuMS0yMy42LTIzLjEuMy03LjMgMi4xLTE0LjkgMi40LTE1LjQgMS4xLTEuOCAxMC4xLTIgMTIuNy0yLjYgNi0zMS43IDUwLjYtMzMuMiA5MC45LTM0LjUgMTkuNy0yMS44IDQ1LjItNDEuNSA4MC45LTQ4LjNDMjAzLjMgMjkgMjE1LjIgOC41IDIxNi4yIDhjMS43LS44IDIxLjIgNC4zIDI2LjMgMjMuMiA1LjItOC44IDE4LjMtMTEuNCAxOS42LTEwLjcgMS4xLjYgNi40IDE1LTQuOSAyNS45IDQwLjMgMy41IDcyLjIgMjQuNyA5NiA1MC43IDM2LjEgMS41IDcxLjggNS45IDc3LjEgMzQgMi43LjYgMTEuNi44IDEyLjcgMi42LjMuNSAyLjEgOC4xIDIuNCAxNS40LS41IDEzLjktNi44IDI1LjQtMjMuNiAyMy4xLTMuMiAxNy4zLTIuNyAzMi45LTguNyA0Ny43IDIuNCAxMS43IDQgMjMuOCA0LjggMzYuNCAzNyAyNS40IDcwLjMgNDIuNSA2MC4zIDY2Ljl6TTIwNy40IDE1OS45Yy45LTQ0LTM3LjktNDIuMi03OC42LTQwLjMtMjEuNyAxLTM4LjkgMS45LTQ1LjUgMTMuOS0xMS40IDIwLjkgNS45IDkyLjkgMjMuMiAxMDEuMiA5LjggNC43IDczLjQgNy45IDg2LjMtNy4xIDguMi05LjQgMTUtNDkuNCAxNC42LTY3Ljd6bTUyIDU4LjNjLTQuMy0xMi40LTYtMzAuMS0xNS4zLTMyLjctMi0uNS05LS41LTExIDAtMTAgMi44LTEwLjggMjIuMS0xNyAzNy4yIDE1LjQgMCAxOS4zIDkuNyAyMy43IDkuNyA0LjMgMCA2LjMtMTEuMyAxOS42LTE0LjJ6bTEzNS43LTg0LjdjLTYuNi0xMi4xLTI0LjgtMTIuOS00Ni41LTEzLjktNDAuMi0xLjktNzguMi0zLjgtNzcuMyA0MC4zLS41IDE4LjMgNSA1OC4zIDEzLjIgNjcuOCAxMyAxNC45IDc2LjYgMTEuOCA4Ni4zIDcuMSAxNS44LTcuNiAzNi41LTc4LjkgMjQuMy0xMDEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWJheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDYgMTg5LjVsLTU0LjggMTA5LjktNTQuOS0xMDkuOWgtMzcuNWwxMC45IDIwLjZjLTExLjUtMTktMzUuOS0yNi02My4zLTI2LTMxLjggMC02Ny45IDguNy03MS41IDQzLjFoMzMuN2MxLjQtMTMuOCAxNS43LTIxLjggMzUtMjEuOCAyNiAwIDQxIDkuNiA0MSAzM3YzLjRjLTEyLjcgMC0yOCAuMS00MS43LjQtNDIuNC45LTY5LjYgMTAtNzYuNyAzNC40IDEtNS4yIDEuNS0xMC42IDEuNS0xNi4yIDAtNTIuMS0zOS43LTc2LjItNzUuNC03Ni4yLTIxLjMgMC00MyA1LjUtNTguNyAyNC4ydi04MC42aC0zMi4xdjE2OS41YzAgMTAuMy0uNiAyMi45LTEuMSAzMy4xaDMxLjVjLjctNi4zIDEuMS0xMi45IDEuMS0xOS41IDEzLjYgMTYuNiAzNS40IDI0LjkgNTguNyAyNC45IDM2LjkgMCA2NC45LTIxLjkgNzMuMy01NC4yLS41IDIuOC0uNyA1LjgtLjcgOSAwIDI0LjEgMjEuMSA0NSA2MC42IDQ1IDI2LjYgMCA0NS44LTUuNyA2MS45LTI1LjUgMCA2LjYuMyAxMy4zIDEuMSAyMC4yaDI5LjhjLS43LTguMi0xLTE3LjUtMS0yNi44di02NS42YzAtOS4zLTEuNy0xNy4yLTQuOC0yMy44bDYxLjUgMTE2LjEtMjguNSA1NC4xaDM1LjlMNjQwIDE4OS41ek0yNDMuNyAzMTMuOGMtMjkuNiAwLTUwLjItMjEuNS01MC4yLTUzLjggMC0zMi40IDIwLjYtNTMuOCA1MC4yLTUzLjggMjkuOCAwIDUwLjIgMjEuNCA1MC4yIDUzLjggMCAzMi4zLTIwLjQgNTMuOC01MC4yIDUzLjh6bTIwMC45LTQ3LjNjMCAzMC0xNy45IDQ4LjQtNTEuNiA0OC40LTI1LjEgMC0zNS0xMy40LTM1LTI1LjggMC0xOS4xIDE4LjEtMjQuNCA0Ny4yLTI1LjMgMTMuMS0uNSAyNy42LS42IDM5LjQtLjZ6bS00MTEuOSAxLjZoMTI4Ljh2LTguNWMwLTUxLjctMzMuMS03NS40LTc4LjQtNzUuNC01Ni44IDAtODMgMzAuOC04MyA3Ny42IDAgNDIuNSAyNS4zIDc0IDgyLjUgNzQgMzEuNCAwIDY4LTExLjcgNzQuNC00Ni4xaC0zMy4xYy0xMiAzNS44LTg3LjcgMzYuNy05MS4yLTIxLjZ6bTk1LTIxLjRIMzMuM2M2LjktNTYuNiA5Mi4xLTU0LjcgOTQuNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFZGdlTGVnYWN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1LjcxLDIyOC4xNmwuMzUtLjQ4YzAsLjE2LDAsLjMyLS4wNy40OFptNDYwLjU4LDE1LjUxYzAtNDQtNy43Ni04NC40Ni0yOC44MS0xMjIuNEM0MTYuNSw0Ny44OCwzNDMuOTEsOCwyNTguODksOCwxMTksNy43Miw0MC42MiwxMTMuMjEsMjYuMDYsMjI3LjY4YzQyLjQyLTYxLjMxLDExNy4wNy0xMjEuMzgsMjIwLjM3LTEyNSwwLDAsMTA5LjY3LDAsOTkuNDIsMTA1SDE3MGM2LjM3LTM3LjM5LDE4LjU1LTU5LDM0LjM0LTc4LjkzLTc1LjA1LDM0LjktMTIxLjg1LDk2LjEtMTIwLjc1LDE4OC4zMi44Myw3MS40NSw1MC4xMywxNDQuODQsMTIwLjc1LDE3Miw4My4zNSwzMS44NCwxOTIuNzcsNy4yLDI0MC4xMy0yMS4zM1YzNjMuMzFDMzYzLjYsNDE5LjgsMTczLjYsNDI0LjIzLDE3Mi4yMSwyOTUuNzRINDg2LjI5VjI0My42N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEuOTIsMTM0LjQ4QzQ0MC44Nyw1NC4xOCwzNTIuMjYsOCwyNTUuOTEsOCwxMzcuMDUsOCwzNy41MSw5MS42OCwxMy40NywyMDMuNjZjMjYtNDYuNDksODYuMjItNzkuMTQsMTQ5LjQ2LTc5LjE0LDc5LjI3LDAsMTIxLjA5LDQ4LjkzLDEyMi4yNSw1MC4xOCwyMiwyMy44LDMzLDUwLjM5LDMzLDgzLjEsMCwxMC40LTUuMzEsMjUuODItMTUuMTEsMzguNTctMS41NywyLTYuMzksNC44NC02LjM5LDExLDAsNS4wNiwzLjI5LDkuOTIsOS4xNCwxNCwyNy44NiwxOS4zNyw4MC4zNywxNi44MSw4MC41MSwxNi44MUExMTUuMzksMTE1LjM5LDAsMCwwLDQ0NC45NCwzMjJhMTE4LjkyLDExOC45MiwwLDAsMCw1OC45NS0xMDIuNDRDNTA0LjM5LDE3Ni4xMyw0ODguMzksMTQ3LjI2LDQ4MS45MiwxMzQuNDhaTTIxMi43Nyw0NzUuNjdhMTU0Ljg4LDE1NC44OCwwLDAsMS00Ni42NC00NWMtMzIuOTQtNDcuNDItMzQuMjQtOTUuNi0yMC4xLTEzNkExNTUuNSwxNTUuNSwwLDAsMSwyMDMsMjE1Ljc1YzU5LTQ1LjIsOTQuODQtNS42NSw5OS4wNi0xYTgwLDgwLDAsMCwwLTQuODktMTAuMTRjLTkuMjQtMTUuOTMtMjQtMzYuNDEtNTYuNTYtNTMuNTEtMzMuNzItMTcuNjktNzAuNTktMTguNTktNzcuNjQtMTguNTktMzguNzEsMC03Ny45LDEzLTEwNy41MywzNS42OUMzNS42OCwxODMuMywxMi43NywyMDguNzIsOC42LDI0M2MtMS4wOCwxMi4zMS0yLjc1LDYyLjgsMjMsMTE4LjI3YTI0OCwyNDgsMCwwLDAsMjQ4LjMsMTQxLjYxQzI0MS43OCw0OTYuMjYsMjE0LjA1LDQ3Ni4yNCwyMTIuNzcsNDc1LjY3Wm0yNTAuNzItOTguMzNhNy43Niw3Ljc2LDAsMCwwLTcuOTItLjIzLDE4MS42NiwxODEuNjYsMCwwLDEtMjAuNDEsOS4xMiwxOTcuNTQsMTk3LjU0LDAsMCwxLTY5LjU1LDEyLjUyYy05MS42NywwLTE3MS41Mi02My4wNi0xNzEuNTItMTQ0QTYxLjEyLDYxLjEyLDAsMCwxLDIwMC42MSwyMjgsMTY4LjcyLDE2OC43MiwwLDAsMCwxNjEuODUsMjc4Yy0xNC45MiwyOS4zNy0zMyw4OC4xMywxMy4zMywxNTEuNjYsNi41MSw4LjkxLDIzLDMwLDU2LDQ3LjY3LDIzLjU3LDEyLjY1LDQ5LDE5LjYxLDcxLjcsMTkuNjEsMzUuMTQsMCwxMTUuNDMtMzMuNDQsMTYzLTEwOC44N0E3Ljc1LDcuNzUsMCwwLDAsNDYzLjQ5LDM3Ny4zNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxlbWVudG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNS42IDMySDIyLjRDMTAgMzIgMCA0MiAwIDU0LjR2NDAzLjJDMCA0NzAgMTAgNDgwIDIyLjQgNDgwaDQwMy4yYzEyLjQgMCAyMi40LTEwIDIyLjQtMjIuNFY1NC40QzQ0OCA0MiA0MzggMzIgNDI1LjYgMzJNMTY0LjMgMzU1LjVoLTM5Ljh2LTE5OWgzOS44djE5OXptMTU5LjMgMEgyMDQuMXYtMzkuOGgxMTkuNXYzOS44em0wLTc5LjZIMjA0LjF2LTM5LjhoMTE5LjV2MzkuOHptMC03OS43SDIwNC4xdi0zOS44aDExOS41djM5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVsbG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTQzLjg0IDI4NS4yQzM3NS4zMSAzNTguNTEgMzE1Ljc5IDQwNC44IDI0OCA0MDQuOHMtMTI3LjMxLTQ2LjI5LTE0My44NC0xMTEuNmMtMS42NS03LjQ0IDIuNDgtMTUuNzEgOS45Mi0xNy4zNiA3LjQ0LTEuNjUgMTUuNzEgMi40OCAxNy4zNiA5LjkyIDE0LjA1IDUyLjkxIDYyIDkwLjExIDExNi41NiA5MC4xMXMxMDIuNTEtMzcuMiAxMTYuNTYtOTAuMTFjMS42NS03LjQ0IDkuOTItMTIuNCAxNy4zNi05LjkyIDcuNDQgMS42NSAxMi40IDkuOTIgOS45MiAxNy4zNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW1iZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM5LjkgMjU0LjZjLTEuMS0xMC43LTEwLjctNi44LTEwLjctNi44cy0xNS42IDEyLjEtMjkuMyAxMC43Yy0xMy43LTEuMy05LjQtMzItOS40LTMyczMtMjguMS01LjEtMzAuNGMtOC4xLTIuNC0xOCA3LjMtMTggNy4zcy0xMi40IDEzLjctMTguMyAzMS4ybC0xLjYuNXMxLjktMzAuNi0uMy0zNy42Yy0xLjYtMy41LTE2LjQtMy4yLTE4LjggM3MtMTQuMiA0OS4yLTE1IDY3LjJjMCAwLTIzLjEgMTkuNi00My4zIDIyLjhzLTI1LTkuNC0yNS05LjQgNTQuOC0xNS4zIDUyLjktNTkuMS00NC4yLTI3LjYtNDktMjRjLTQuNiAzLjUtMjkuNCAxOC40LTM2LjYgNTkuNy0uMiAxLjQtLjcgNy41LS43IDcuNXMtMjEuMiAxNC4yLTMzIDE4YzAgMCAzMy01NS42LTcuMy04MC45LTExLjQtNi44LTIxLjMtLjUtMjcuMiA1LjMgMTMuNi0xNy4zIDQ2LjQtNjQuMiAzNi45LTEwNS4yLTUuOC0yNC40LTE4LTI3LjEtMjkuMi0yMy4xLTE3IDYuNy0yMy41IDE2LjctMjMuNSAxNi43cy0yMiAzMi0yNy4xIDc5LjUtMTIuNiAxMDUuMS0xMi42IDEwNS4xLTEwLjUgMTAuMi0yMC4yIDEwLjctNS40LTI4LjctNS40LTI4LjcgNy41LTQ0LjYgNy01Mi4xLTEuMS0xMS42LTkuOS0xNC4yYy04LjktMi43LTE4LjUgOC42LTE4LjUgOC42cy0yNS41IDM4LjctMjcuNyA0NC42bC0xLjMgMi40LTEuMy0xLjZzMTgtNTIuNy44LTUzLjUtMjguNSAxOC44LTI4LjUgMTguOC0xOS42IDMyLjgtMjAuNCAzNi41bC0xLjMtMS42czguMS0zOC4yIDYuNC00Ny42Yy0xLjYtOS40LTEwLjUtNy41LTEwLjUtNy41cy0xMS4zLTEuMy0xNC4yIDUuOS0xMy43IDU1LjMtMTUgNzAuN2MwIDAtMjguMiAyMC4yLTQ2LjggMjAuNC0xOC41LjMtMTYuNy0xMS44LTE2LjctMTEuOHM2OC0yMy4zIDQ5LjQtNjkuMmMtOC4zLTExLjgtMTgtMTUuNS0zMS43LTE1LjMtMTMuNy4zLTMwLjMgOC42LTQxLjMgMzMuMy01LjMgMTEuOC02LjggMjMtNy44IDMxLjUgMCAwLTEyLjMgMi40LTE4LjgtMi45cy0xMCAwLTEwIDAtMTEuMiAxNC0uMSAxOC4zIDI4LjEgNi4xIDI4LjEgNi4xYzEuNiA3LjUgNi4yIDE5LjUgMTkuNiAyOS43IDIwLjIgMTUuMyA1OC44LTEuMyA1OC44LTEuM2wxNS45LTguOHMuNSAxNC42IDEyLjEgMTYuNyAxNi40IDEgMzYuNS00Ny45YzExLjgtMjUgMTIuNi0yMy42IDEyLjYtMjMuNmwxLjMtLjNzLTkuMSA0Ni44LTUuNiA1OS43QzE4Ny43IDMxOS40IDIwMyAzMTggMjAzIDMxOHM4LjMgMi40IDE1LTIxLjIgMTkuNi00OS45IDE5LjYtNDkuOWgxLjZzLTUuNiA0OC4xIDMgNjMuNyAzMC45IDUuMyAzMC45IDUuMyAxNS42LTcuOCAxOC0xMC4yYzAgMCAxOC41IDE1LjggNDQuNiAxMi45IDU4LjMtMTEuNSA3OS4xLTI1LjkgNzkuMS0yNS45czEwIDI0LjQgNDEuMSAyNi43YzM1LjUgMi43IDU0LjgtMTguNiA1NC44LTE4LjZzLS4zIDEzLjUgMTIuMSAxOC42IDIwLjctMjIuOCAyMC43LTIyLjhsMjAuNy01Ny4yaDEuOXMxLjEgMzcuMyAyMS41IDQzLjIgNDctMTMuNyA0Ny0xMy43IDYuNC0zLjUgNS4zLTE0LjN6bS01NzggNS4zYy44LTMyIDIxLjgtNDUuOSAyOS0zOSA3LjMgNyA0LjYgMjItOS4xIDMxLjQtMTMuNyA5LjUtMTkuOSA3LjYtMTkuOSA3LjZ6bTI3Mi44LTEyMy44czE5LjEtNDkuNyAyMy42LTI1LjUtNDAgOTYuMi00MCA5Ni4yYy41LTE2LjIgMTYuNC03MC43IDE2LjQtNzAuN3ptMjIuOCAxMzguNGMtMTIuNiAzMy00My4zIDE5LjYtNDMuMyAxOS42cy0zLjUtMTEuOCA2LjQtNDQuOSAzMy4zLTIwLjIgMzMuMy0yMC4yIDE2LjIgMTIuNCAzLjYgNDUuNXptODQuNi0xNC42cy0zLTEwLjUgOC4xLTMwLjZjMTEtMjAuMiAxOS42LTkuMSAxOS42LTkuMXM5LjQgMTAuMi0xLjMgMjUuNS0yNi40IDE0LjItMjYuNCAxNC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbXBpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg3LjYgNTQuMmMtMTAuOC0yLjItMjIuMS0zLjMtMzMuNS0zLjZWMzIuNGM3OC4xIDIuMiAxNDYuMSA0NCAxODQuNiAxMDYuNmwtMTUuOCA5LjFjLTYuMS05LjctMTIuNy0xOC44LTIwLjItMjcuMWwtMTggMTUuNWMtMjYtMjkuNi02MS40LTUwLjctMTAxLjktNTguNGw0LjgtMjMuOXpNNTMuNCAzMjIuNGwyMy03LjdjLTYuNC0xOC4zLTEwLTM4LjItMTAtNTguN3MzLjMtNDAuNCA5LjctNTguN2wtMjIuNy03LjdjMy42LTEwLjggOC4zLTIxLjMgMTMuNi0zMWwtMTUuOC05LjFDMzQgMTgxIDI0LjEgMjE3LjUgMjQuMSAyNTZzMTAgNzUgMjcuMSAxMDYuNmwxNS44LTkuMWMtNS4zLTEwLTkuNy0yMC4zLTEzLjYtMzEuMXpNMjEzLjEgNDM0Yy00MC40LTgtNzUuOC0yOS4xLTEwMS45LTU4LjdsLTE4IDE1LjhjLTcuNS04LjYtMTQuNC0xNy43LTIwLjItMjcuNGwtMTYgOS40YzM4LjUgNjIuMyAxMDYuOCAxMDQuMyAxODQuOSAxMDYuNnYtMTguM2MtMTEuMy0uMy0yMi43LTEuNy0zMy41LTMuNmw0LjctMjMuOHpNOTMuMyAxMjAuOWwxOCAxNS41YzI2LTI5LjYgNjEuNC01MC43IDEwMS45LTU4LjRsLTQuNy0yMy44YzEwLjgtMi4yIDIyLjEtMy4zIDMzLjUtMy42VjMyLjRDMTYzLjkgMzQuNiA5NS45IDc2LjQgNTcuNCAxMzlsMTUuOCA5LjFjNi05LjcgMTIuNi0xOC45IDIwLjEtMjcuMnptMzA5LjQgMjcwLjJsLTE4LTE1LjhjLTI2IDI5LjYtNjEuNCA1MC43LTEwMS45IDU4LjdsNC43IDIzLjhjLTEwLjggMS45LTIyLjEgMy4zLTMzLjUgMy42djE4LjNjNzguMS0yLjIgMTQ2LjQtNDQuMyAxODQuOS0xMDYuNmwtMTYuMS05LjRjLTUuNyA5LjctMTIuNiAxOC44LTIwLjEgMjcuNHpNNDk2IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTMCAzOTMgMCAyNTYgMTExIDggMjQ4IDhzMjQ4IDExMSAyNDggMjQ4em0tMTIuMiAwYzAtMTMwLjEtMTA1LjctMjM1LjgtMjM1LjgtMjM1LjhTMTIuMiAxMjUuOSAxMi4yIDI1NiAxMTcuOSA0OTEuOCAyNDggNDkxLjggNDgzLjggMzg2LjEgNDgzLjggMjU2em0tMzktMTA2LjZsLTE1LjggOS4xYzUuMyA5LjcgMTAgMjAuMiAxMy42IDMxbC0yMi43IDcuN2M2LjQgMTguMyA5LjcgMzguMiA5LjcgNTguN3MtMy42IDQwLjQtMTAgNTguN2wyMyA3LjdjLTMuOSAxMC44LTguMyAyMS0xMy42IDMxbDE1LjggOS4xQzQ2MiAzMzEgNDcxLjkgMjk0LjUgNDcxLjkgMjU2cy05LjktNzUtMjcuMS0xMDYuNnptLTE4MyAxNzcuN2MxNi4zLTMuMyAzMC40LTExLjYgNDAuNy0yMy41bDUxLjIgNDQuOGMxMS45LTEzLjYgMjEuMy0yOS4zIDI3LjEtNDYuOGwtNjQuMi0yMi4xYzIuNS03LjUgMy45LTE1LjIgMy45LTIzLjVzLTEuNC0xNi4xLTMuOS0yMy41bDY0LjUtMjIuMWMtNi4xLTE3LjQtMTUuNS0zMy4yLTI3LjQtNDYuOGwtNTEuMiA0NC44Yy0xMC4yLTExLjktMjQuNC0yMC41LTQwLjctMjMuOGwxMy4zLTY2LjRjLTguNi0xLjktMTcuNy0yLjgtMjcuMS0yLjgtOS40IDAtMTguNS44LTI3LjEgMi44bDEzLjMgNjYuNGMtMTYuMyAzLjMtMzAuNCAxMS45LTQwLjcgMjMuOGwtNTEuMi00NC44Yy0xMS45IDEzLjYtMjEuMyAyOS4zLTI3LjQgNDYuOGw2NC41IDIyLjFjLTIuNSA3LjUtMy45IDE1LjItMy45IDIzLjVzMS40IDE2LjEgMy45IDIzLjVsLTY0LjIgMjIuMWM1LjggMTcuNCAxNS4yIDMzLjIgMjcuMSA0Ni44bDUxLjItNDQuOGMxMC4yIDExLjkgMjQuNCAyMC4yIDQwLjcgMjMuNWwtMTMuMyA2Ni43YzguNiAxLjcgMTcuNyAyLjggMjcuMSAyLjggOS40IDAgMTguNS0xLjEgMjcuMS0yLjhsLTEzLjMtNjYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52aXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJjNDc3LjYgMCAzNjYuNiAzMTcuMyAzNjcuMSAzNjYuM0w0NDggNDgwaC0yNmwtNzAuNC03MS4yYy0zOSA0LjItMTI0LjQgMzQuNS0yMTQuNC0zN0M0NyAzMDAuMyA1MiAyMTQuNyAwIDMyem03OS43IDQ2Yy00OS43LTIzLjUtNS4yIDkuMi01LjIgOS4yIDQ1LjIgMzEuMiA2NiA3My43IDkwLjIgMTE5LjkgMzEuNSA2MC4yIDc5IDEzOS43IDE0NC4yIDE2Ny43IDY1IDI4IDM0LjIgMTIuNSA2LTguNS0yOC4yLTIxLjItNjguMi04Ny05MS0xMzAuMi0zMS43LTYwLTYxLTExOC42LTE0NC4yLTE1OC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFcmxhbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODcuMiA1My41SDB2NDA1aDEwMC40Yy00OS43LTUyLjYtNzguOC0xMjUuMy03OC43LTIxMi4xLS4xLTc2LjcgMjQtMTQyLjcgNjUuNS0xOTIuOXptMjM4LjIgOS43Yy00NS45LjEtODUuMSAzMy41LTg5LjIgODMuMmgxNjkuOWMtMS4xLTQ5LjctMzQuNS04My4xLTgwLjctODMuMnptMjMwLjctOS42aC4zbC0uMS0uMXptLjMgMGMzMS40IDQyLjcgNDguNyA5Ny41IDQ2LjIgMTYyLjcuNSA2IC41IDExLjcgMCAyNC4xSDIzMC4yYy0uMiAxMDkuNyAzOC45IDE5NC45IDEzOC42IDE5NS4zIDY4LjUtLjMgMTE4LTUxIDE1MS45LTEwNi4xbDk2LjQgNDguMmMtMTcuNCAzMC45LTM2LjUgNTcuOC01Ny45IDgwLjhINjQwdi00MDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0aGVyZXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMS45IDI2MC44TDE2MCAzNTMuNiA4IDI2MC44IDE2MCAwbDE1MS45IDI2MC44ek0xNjAgMzgzLjRMOCAyOTAuNiAxNjAgNTEybDE1Mi0yMjEuNC0xNTIgOTIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXRzeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzQ4Yy0xLjc1IDEwLjc1LTEzLjc1IDExMC0xNS41IDEzMi0xMTcuODc5LTQuMjk5LTIxOS44OTUtNC43NDMtMzY4LjUgMHYtMjUuNWM0NS40NTctOC45NDggNjAuNjI3LTguMDE5IDYxLTM1LjI1IDEuNzkzLTcyLjMyMiAzLjUyNC0yNDQuMTQzIDAtMzIyLTEuMDI5LTI4LjQ2LTEyLjEzLTI2Ljc2NS02MS0zNnYtMjUuNWM3My44ODYgMi4zNTggMjU1LjkzMyA4LjU1MSAzNjIuOTk5LTMuNzUtMy41IDM4LjI1LTcuNzUgMTI2LjUtNy43NSAxMjYuNUgzMzJDMzIwLjk0NyAxMTUuNjY1IDMxMy4yNDEgNjggMjc3LjI1IDY4aC0xMzdjLTEwLjI1IDAtMTAuNzUgMy41LTEwLjc1IDkuNzVWMjQxLjVjNTggLjUgODguNS0yLjUgODguNS0yLjUgMjkuNzctLjk1MSAyNy41Ni04LjUwMiA0MC43NS02NS4yNTFoMjUuNzVjLTQuNDA3IDEwMS4zNTEtMy45MSA2MS44MjktMS43NSAxNjAuMjVIMjU3Yy05LjE1NS00MC4wODYtOS4wNjUtNjEuMDQ1LTM5LjUwMS02MS41IDAgMC0yMS41LTItODgtMnYxMzljMCAyNiAxNC4yNSAzOC4yNSA0NC4yNSAzOC4yNUgyNjNjNjMuNjM2IDAgNjYuNTY0LTI0Ljk5NiA5OC43NTEtOTkuNzVIMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdmVybm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAuODIgMTMyLjIxYzEuNiAyMi4zMS0xNy41NSAyMS41OS0yMS42MSAyMS41OS02OC45MyAwLTczLjY0LTEtODMuNTggMy4zNC0uNTYuMjItLjc0IDAtLjM3LS4zN0wxMjMuNzkgNDYuNDVjLjM4LS4zNy42LS4yMi4zOC4zNy00LjM1IDkuOTktMy4zNSAxNS4wOS0zLjM1IDg1LjM5em03OSAzMDhjLTE0LjY4LTM3LjA4IDEzLTc2LjkzIDUyLjUyLTc2LjYyIDE3LjQ5IDAgMjIuNiAyMy4yMSA3Ljk1IDMxLjQyLTYuMTkgMy4zLTI0Ljk1IDEuNzQtMjUuMTQgMTkuMi0uMDUgMTcuMDkgMTkuNjcgMjUgMzEuMiAyNC44OUE0NS42NCA0NS42NCAwIDAgMCAzMTIgMzkzLjQ1di0uMDhjMC0xMS42My03Ljc5LTQ3LjIyLTQ3LjU0LTU1LjM0LTcuNzItMS41NC02NS02LjM1LTY4LjM1LTUwLjUyLTMuNzQgMTYuOTMtMTcuNCA2My40OS00My4xMSA2OS4wOS04Ljc0IDEuOTQtNjkuNjggNy42NC0xMTIuOTItMzYuNzcgMCAwLTE4LjU3LTE1LjIzLTI4LjIzLTU3Ljk1LTMuMzgtMTUuNzUtOS4yOC0zOS43LTExLjE0LTYyIDAtMTggMTEuMTQtMzAuNDUgMjUuMDctMzIuMiA4MSAwIDkwIDIuMzIgMTAxLTcuOCA5LjgyLTkuMjQgNy44LTE1LjUgNy44LTEwMi43OCAxLTguMyA3Ljc5LTMwLjgxIDUzLjQxLTI0LjE0IDYgLjg2IDMxLjkxIDQuMTggMzcuNDggMzAuNjRsNjQuMjYgMTEuMTVjMjAuNDMgMy43MSA3MC45NCA3IDgwLjYgNTcuOTQgMjIuNjYgMTIxLjA5IDguOTEgMjM4LjQ2IDcuOCAyMzguNDZDMzYyLjE1IDQ4NS41MyAyNjcuMDYgNDgwIDI2Ny4wNiA0ODBjLTE4Ljk1LS4yMy01NC4yNS05LjQtNjcuMjctMzkuODN6bTgwLjk0LTIwNC44NGMtMSAxLjkyLTIuMiA2IC44NSA3IDE0LjA5IDQuOTMgMzkuNzUgNi44NCA0NS44OCA1LjUzIDMuMTEtLjI1IDMuMDUtNC40MyAyLjQ4LTYuNjUtMy41My0yMS44NS00MC44My0yNi41LTQ5LjI0LTUuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4cGVkaXRlZHNzbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNDMuNEMxMzAuNiA0My40IDM1LjQgMTM4LjYgMzUuNCAyNTZTMTMwLjYgNDY4LjYgMjQ4IDQ2OC42IDQ2MC42IDM3My40IDQ2MC42IDI1NiAzNjUuNCA0My40IDI0OCA0My40em0tOTcuNCAxMzIuOWMwLTUzLjcgNDMuNy05Ny40IDk3LjQtOTcuNHM5Ny40IDQzLjcgOTcuNCA5Ny40djI2LjZjMCA1LTMuOSA4LjktOC45IDguOWgtMTcuN2MtNSAwLTguOS0zLjktOC45LTguOXYtMjYuNmMwLTgyLjEtMTI0LTgyLjEtMTI0IDB2MjYuNmMwIDUtMy45IDguOS04LjkgOC45aC0xNy43Yy01IDAtOC45LTMuOS04LjktOC45di0yNi42ek0zODkuNyAzODBjMCA5LjctOCAxNy43LTE3LjcgMTcuN0gxMjRjLTkuNyAwLTE3LjctOC0xNy43LTE3LjdWMjM4LjNjMC05LjcgOC0xNy43IDE3LjctMTcuN2gyNDhjOS43IDAgMTcuNyA4IDE3LjcgMTcuN1YzODB6bS0yNDgtMTM3LjN2MTMyLjljMCAyLjUtMS45IDQuNC00LjQgNC40aC04LjljLTIuNSAwLTQuNC0xLjktNC40LTQuNFYyNDIuN2MwLTIuNSAxLjktNC40IDQuNC00LjRoOC45YzIuNSAwIDQuNCAxLjkgNC40IDQuNHptMTQxLjcgNDguN2MwIDEzLTcuMiAyNC40LTE3LjcgMzAuNHYzMS42YzAgNS0zLjkgOC45LTguOSA4LjloLTE3LjdjLTUgMC04LjktMy45LTguOS04Ljl2LTMxLjZjLTEwLjUtNi4xLTE3LjctMTcuNC0xNy43LTMwLjQgMC0xOS43IDE1LjgtMzUuNCAzNS40LTM1LjRzMzUuNSAxNS44IDM1LjUgMzUuNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NzguM0MxMjEgNDg2LjMgMTcuNyAzODMgMTcuNyAyNTZTMTIxIDI1LjcgMjQ4IDI1LjcgNDc4LjMgMTI5IDQ3OC4zIDI1NiAzNzUgNDg2LjMgMjQ4IDQ4Ni4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9va0YgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc5LjE0IDI4OGwxNC4yMi05Mi42NmgtODguOTF2LTYwLjEzYzAtMjUuMzUgMTIuNDItNTAuMDYgNTIuMjQtNTAuMDZoNDAuNDJWNi4yNlMyNjAuNDMgMCAyMjUuMzYgMGMtNzMuMjIgMC0xMjEuMDggNDQuMzgtMTIxLjA4IDEyNC43MnY3MC42MkgyMi44OVYyODhoODEuMzl2MjI0aDEwMC4xN1YyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2Vib29rTWVzc2VuZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni41NSA4QzExNi41MiA4IDggMTEwLjM0IDggMjQ4LjU3YzAgNzIuMyAyOS43MSAxMzQuNzggNzguMDcgMTc3Ljk0IDguMzUgNy41MSA2LjYzIDExLjg2IDguMDUgNTguMjNBMTkuOTIgMTkuOTIgMCAwIDAgMTIyIDUwMi4zMWM1Mi45MS0yMy4zIDUzLjU5LTI1LjE0IDYyLjU2LTIyLjdDMzM3Ljg1IDUyMS44IDUwNCA0MjMuNyA1MDQgMjQ4LjU3IDUwNCAxMTAuMzQgMzk2LjU5IDggMjU2LjU1IDh6bTE0OS4yNCAxODUuMTNsLTczIDExNS41N2EzNy4zNyAzNy4zNyAwIDAgMS01My45MSA5LjkzbC01OC4wOC00My40N2ExNSAxNSAwIDAgMC0xOCAwbC03OC4zNyA1OS40NGMtMTAuNDYgNy45My0yNC4xNi00LjYtMTcuMTEtMTUuNjdsNzMtMTE1LjU3YTM3LjM2IDM3LjM2IDAgMCAxIDUzLjkxLTkuOTNsNTguMDYgNDMuNDZhMTUgMTUgMCAwIDAgMTggMGw3OC40MS01OS4zOGMxMC40NC03Ljk4IDI0LjE0IDQuNTQgMTcuMDkgMTUuNjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2Vib29rU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEE0OCA0OCAwIDAgMCAwIDgwdjM1MmE0OCA0OCAwIDAgMCA0OCA0OGgxMzcuMjVWMzI3LjY5aC02M1YyNTZoNjN2LTU0LjY0YzAtNjIuMTUgMzctOTYuNDggOTMuNjctOTYuNDggMjcuMTQgMCA1NS41MiA0Ljg0IDU1LjUyIDQuODR2NjFoLTMxLjI3Yy0zMC44MSAwLTQwLjQyIDE5LjEyLTQwLjQyIDM4LjczVjI1Nmg2OC43OGwtMTEgNzEuNjloLTU3Ljc4VjQ4MEg0MDBhNDggNDggMCAwIDAgNDgtNDhWODBhNDggNDggMCAwIDAtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2Vib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZDNTA0IDExOSAzOTMgOCAyNTYgOFM4IDExOSA4IDI1NmMwIDEyMy43OCA5MC42OSAyMjYuMzggMjA5LjI1IDI0NVYzMjcuNjloLTYzVjI1Nmg2M3YtNTQuNjRjMC02Mi4xNSAzNy05Ni40OCA5My42Ny05Ni40OCAyNy4xNCAwIDU1LjUyIDQuODQgNTUuNTIgNC44NHY2MWgtMzEuMjhjLTMwLjggMC00MC40MSAxOS4xMi00MC40MSAzOC43M1YyNTZoNjguNzhsLTExIDcxLjY5aC01Ny43OFY1MDFDNDEzLjMxIDQ4Mi4zOCA1MDQgMzc5Ljc4IDUwNCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhbnRhc3lGbGlnaHRHYW1lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzIuODZMMzIuODYgMjU2IDI1NiA0NzkuMTQgNDc5LjE0IDI1NiAyNTYgMzIuODZ6TTg4LjM0IDI1NS44M2MxLjk2LTIgMTEuOTItMTIuMyA5Ni40OS05Ny40OCA0MS40NS00MS43NSA4Ni4xOS00My43NyAxMTkuNzctMTguNjkgMjQuNjMgMTguNCA2Mi4wNiA1OC45IDYyLjE1IDU5IC42OC43NCAxLjA3IDIuODYuNTggMy4zOC0xMS4yNyAxMS44NC0yMi42OCAyMy41NC0zMy41IDM0LjY5LTM0LjIxLTMyLjMxLTQwLjUyLTM4LjI0LTQ4LjUxLTQzLjk1LTE3Ljc3LTEyLjY5LTQxLjQtMTAuMTMtNTYuOTggNS4xLTIuMTcgMi4xMy0xLjc5IDMuNDMuMTIgNS4zNSAyLjk0IDIuOTUgMjguMSAyOC4zMyAzNS4wOSAzNS43OC0xMS45NSAxMS42LTIzLjY2IDIyLjk3LTM1LjY5IDM0LjY2LTEyLjAyLTEyLjU0LTI0LjQ4LTI1LjUzLTM2LjU0LTM4LjExLTIxLjM5IDIxLjA5LTQxLjY5IDQxLjExLTYxLjg1IDYwLjk5YTQyNTY5LjAxIDQyNTY5LjAxIDAgMCAxLTQxLjEzLTQwLjcyem0yMzQuODIgMTAxLjZjLTM1LjQ5IDM1LjQzLTc4LjA5IDM4LjE0LTEwNi45OSAyMC40Ny0yMi4wOC0xMy41LTM5LjM4LTMyLjA4LTcyLjkzLTY2Ljg0IDEyLjA1LTEyLjM3IDIzLjc5LTI0LjQyIDM1LjM3LTM2LjMxIDMzLjAyIDMxLjkxIDM3LjA2IDM2LjAxIDQ0LjY4IDQyLjA5IDE4LjQ4IDE0Ljc0IDQyLjUyIDEzLjY3IDU5LjMyLTEuOCAzLjY4LTMuMzkgMy42OS0zLjY0LjE0LTcuMjQtMTAuNTktMTAuNzMtMjEuMTktMjEuNDQtMzEuNzctMzIuMTgtMS4zMi0xLjM0LTMuMDMtMi40OC0uOC00LjY5IDEwLjc5LTEwLjcxIDIxLjQ4LTIxLjUyIDMyLjIxLTMyLjI5LjI2LS4yNi42NS0uMzggMS45MS0xLjA3IDEyLjM3IDEyLjg3IDI0LjkyIDI1LjkyIDM3LjI1IDM4Ljc1IDIxLjAxLTIwLjczIDQxLjI0LTQwLjY4IDYxLjI1LTYwLjQyIDEzLjY4IDEzLjQgMjcuMTMgMjYuNTggNDAuODYgNDAuMDMtMjAuMTcgMjAuODYtODEuNjggODIuNzEtMTAwLjUgMTAxLjV6TTI1NiAwTDAgMjU2bDI1NiAyNTYgMjU2LTI1NkwyNTYgMHpNMTYgMjU2TDI1NiAxNmwyNDAgMjQwLTI0MCAyNDBMMTYgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGZWRleCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01ODYgMjg0LjVsNTMuMy01OS45aC02Mi40bC0yMS43IDI0LjgtMjIuNS0yNC44SDQxNHYtMTZoNTYuMXYtNDguMUgzMTguOVYyMzZoLS41Yy05LjYtMTEtMjEuNS0xNC44LTM1LjQtMTQuOC0yOC40IDAtNDkuOCAxOS40LTU3LjMgNDQuOS0xOC01OS40LTk3LjQtNTcuNi0xMjEuOS0xNHYtMjQuMkg0OXYtMjYuMmg2MHYtNDEuMUgwVjM0NWg0OXYtNzcuNWg0OC45Yy0xLjUgNS43LTIuMyAxMS44LTIuMyAxOC4yIDAgNzMuMSAxMDIuNiA5MS40IDEzMC4yIDIzLjdoLTQyYy0xNC43IDIwLjktNDUuOCA4LjktNDUuOC0xNC42aDg1LjVjMy43IDMwLjUgMjcuNCA1Ni45IDYwLjEgNTYuOSAxNC4xIDAgMjctNi45IDM0LjktMTguNmguNVYzNDVoMjEyLjJsMjIuMS0yNSAyMi4zIDI1SDY0MGwtNTQtNjAuNXptLTQ0Ni43LTE2LjZjNi4xLTI2LjMgNDEuNy0yNS42IDQ2LjUgMGgtNDYuNXptMTUzLjQgNDguOWMtMzQuNiAwLTM0LTYyLjggMC02Mi44IDMyLjYgMCAzNC41IDYyLjggMCA2Mi44em0xNjcuOCAxOS4xaC05NC40VjE2OS40aDk1djMwLjJINDA1djMzLjloNTUuNXYyOC4xaC01Ni4xdjQ0LjdoNTYuMXYyOS42em0tNDUuOS0zOS44di0yNC40aDU2LjF2LTQ0bDUwLjcgNTctNTAuNyA1N3YtNDUuNmgtNTYuMXptMTM4LjYgMTAuM2wtMjYuMSAyOS41SDQ4OWw0NS42LTUxLjItNDUuNi01MS4yaDM5LjdsMjYuNiAyOS4zIDI1LjYtMjkuM2gzOC41bC00NS40IDUxIDQ2IDUxLjRoLTQwLjVsLTI2LjMtMjkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVkb3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNSAzMkMxMDEuMyAzMS43LjggMTMxLjcuNCAyNTUuNEwwIDQyNS43YTUzLjYgNTMuNiAwIDAgMCA1My42IDUzLjlsMTcwLjIuNGMxMjMuNy4zIDIyNC4zLTk5LjcgMjI0LjYtMjIzLjRTMzQ4LjcgMzIuMyAyMjUgMzJ6bTE2OS44IDE1Ny4yTDMzMyAxMjYuNmMyLjMtNC43IDMuOC05LjIgMy44LTE0LjN2LTEuNmw1NS4yIDU2LjFhMTAxIDEwMSAwIDAgMSAyLjggMjIuNHpNMzMxIDk0LjNhMTA2LjA2IDEwNi4wNiAwIDAgMSA1OC41IDYzLjhsLTU0LjMtNTQuNmEyNi40OCAyNi40OCAwIDAgMC00LjItOS4yek0xMTguMSAyNDcuMmE0OS42NiA0OS42NiAwIDAgMC03LjcgMTEuNGwtOC41LTguNWE4NS43OCA4NS43OCAwIDAgMSAxNi4yLTIuOXpNOTcgMjUxLjRsMTEuOCAxMS45LS45IDhhMzQuNzQgMzQuNzQgMCAwIDAgMi40IDEyLjVsLTI3LTI3LjJhODAuNiA4MC42IDAgMCAxIDEzLjctNS4yem0tMTguMiA3LjRsMzguMiAzOC40YTUzLjE3IDUzLjE3IDAgMCAwLTE0LjEgNC43TDY3LjYgMjY2YTEwNyAxMDcgMCAwIDEgMTEuMi03LjJ6bS0xNS4yIDkuOGwzNS4zIDM1LjVhNjcuMjUgNjcuMjUgMCAwIDAtMTAuNSA4LjVMNTMuNSAyNzhhNjQuMzMgNjQuMzMgMCAwIDEgMTAuMS05LjR6bS0xMy4zIDEyLjNsMzQuOSAzNWE1Ni44NCA1Ni44NCAwIDAgMC03LjcgMTEuNGwtMzUuOC0zNS45YzIuOC0zLjggNS43LTcuMiA4LjYtMTAuNXptLTExIDE0LjNsMzYuNCAzNi42YTQ4LjI5IDQ4LjI5IDAgMCAwLTMuNiAxNS4ybC0zOS41LTM5LjhhOTkuODEgOTkuODEgMCAwIDEgNi43LTEyem0tOC44IDE2LjNsNDEuMyA0MS44YTYzLjQ3IDYzLjQ3IDAgMCAwIDYuNyAyNi4yTDI1LjggMzI2YzEuNC00LjkgMi45LTkuNiA0LjctMTQuNXptLTcuOSA0M2w2MS45IDYyLjJhMzEuMjQgMzEuMjQgMCAwIDAtMy42IDE0LjN2MS4xbC01NS40LTU1LjdhODguMjcgODguMjcgMCAwIDEtMi45LTIxLjl6bTUuMyAzMC43bDU0LjMgNTQuNmEyOC40NCAyOC40NCAwIDAgMCA0LjIgOS4yIDEwNi4zMiAxMDYuMzIgMCAwIDEtNTguNS02My44em0tNS4zLTM3YTgwLjY5IDgwLjY5IDAgMCAxIDIuMS0xN2w3Mi4yIDcyLjVhMzcuNTkgMzcuNTkgMCAwIDAtOS45IDguN3ptMjUzLjMtNTEuOGwtNDIuNi0uMS0uMSA1NmMtLjIgNjkuMy02NC40IDExNS44LTEyNS43IDEwMi45LTUuNyAwLTE5LjktOC43LTE5LjktMjQuMmEyNC44OSAyNC44OSAwIDAgMSAyNC41LTI0LjZjNi4zIDAgNi4zIDEuNiAxNS43IDEuNmE1NS45MSA1NS45MSAwIDAgMCA1Ni4xLTU1LjlsLjEtNDdjMC00LjUtNC41LTktOC45LTlsLTMzLjYtLjFjLTMyLjYtLjEtMzIuNS00OS40LjEtNDkuM2w0Mi42LjEuMS01NmExMDUuMTggMTA1LjE4IDAgMCAxIDEwNS42LTEwNSA4Ni4zNSA4Ni4zNSAwIDAgMSAyMC4yIDIuM2MxMS4yIDEuOCAxOS45IDExLjkgMTkuOSAyNCAwIDE1LjUtMTQuOSAyNy44LTMwLjMgMjMuOS0yNy40LTUuOS02NS45IDE0LjQtNjYgNTQuOWwtLjEgNDdhOC45NCA4Ljk0IDAgMCAwIDguOSA5bDMzLjYuMWMzMi41LjIgMzIuNCA0OS41LS4yIDQ5LjR6bTIzLjUtLjNhMzUuNTggMzUuNTggMCAwIDAgNy42LTExLjRsOC41IDguNWExMDIgMTAyIDAgMCAxLTE2LjEgMi45em0yMS00LjJMMzA4LjYgMjgwbC45LTguMWEzNC43NCAzNC43NCAwIDAgMC0yLjQtMTIuNWwyNyAyNy4yYTc0Ljg5IDc0Ljg5IDAgMCAxLTEzLjcgNS4zem0xOC03LjRsLTM4LTM4LjRjNC45LTEuMSA5LjYtMi40IDEzLjctNC43bDM2LjIgMzUuOWMtMy44IDIuNS03LjkgNS0xMS45IDcuMnptMTUuNS05LjhsLTM1LjMtMzUuNWE2MS4wNiA2MS4wNiAwIDAgMCAxMC41LTguNWwzNC45IDM1YTEyNC41NiAxMjQuNTYgMCAwIDEtMTAuMSA5em0xMy4yLTEyLjNsLTM0LjktMzVhNjMuMTggNjMuMTggMCAwIDAgNy43LTExLjRsMzUuOCAzNS45YTEzMC4yOCAxMzAuMjggMCAwIDEtOC42IDEwLjV6bTExLTE0LjNsLTM2LjQtMzYuNmE0OC4yOSA0OC4yOSAwIDAgMCAzLjYtMTUuMmwzOS41IDM5LjhhODcuNzIgODcuNzIgMCAwIDEtNi43IDEyem0xMy41LTMwLjlhMTQwLjYzIDE0MC42MyAwIDAgMS00LjcgMTQuM0wzNDUuNiAxOTBhNTguMTkgNTguMTkgMCAwIDAtNy4xLTI2LjJ6bTEtNS42bC03MS45LTcyLjFhMzIgMzIgMCAwIDAgOS45LTkuMmw2NC4zIDY0LjdhOTAuOTMgOTAuOTMgMCAwIDEtMi4zIDE2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpZ21hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDk1Ljc5MjRDMTQgNDIuODg3NyA1Ni44ODc4IDAgMTA5Ljc5MyAwSDI3NC4xNjFDMzI3LjA2NiAwIDM2OS45NTQgNDIuODg3NyAzNjkuOTU0IDk1Ljc5MjRDMzY5Ljk1NCAxMjkuMjkyIDM1Mi43NTggMTU4Ljc3NiAzMjYuNzExIDE3NS44OTdDMzUyLjc1OCAxOTMuMDE5IDM2OS45NTQgMjIyLjUwMiAzNjkuOTU0IDI1Ni4wMDJDMzY5Ljk1NCAzMDguOTA3IDMyNy4wNjYgMzUxLjc5NSAyNzQuMTYxIDM1MS43OTVIMjcyLjA4MUMyNDcuMjc5IDM1MS43OTUgMjI0LjY3OCAzNDIuMzY5IDIwNy42NjYgMzI2LjkwNFY0MTUuMTY3QzIwNy42NjYgNDY4Ljc3NyAxNjMuNjU3IDUxMiAxMTAuMzA5IDUxMkM1Ny41MzYxIDUxMiAxNCA0NjkuMjQzIDE0IDQxNi4yMDdDMTQgMzgyLjcwOSAzMS4xOTQ1IDM1My4yMjcgNTcuMjM5MiAzMzYuMTA1QzMxLjE5NDUgMzE4Ljk4MyAxNCAyODkuNSAxNCAyNTYuMDAyQzE0IDIyMi41MDIgMzEuMTk2IDE5My4wMTkgNTcuMjQyNSAxNzUuODk3QzMxLjE5NiAxNTguNzc2IDE0IDEyOS4yOTIgMTQgOTUuNzkyNFpNMTc2LjI4OCAxOTEuNTg3SDEwOS43OTNDNzQuMjE3MiAxOTEuNTg3IDQ1LjM3NzggMjIwLjQyNyA0NS4zNzc4IDI1Ni4wMDJDNDUuMzc3OCAyOTEuNDQgNzMuOTk0OCAzMjAuMTk0IDEwOS4zODEgMzIwLjQxNkMxMDkuNTE4IDMyMC40MTUgMTA5LjY1NSAzMjAuNDE1IDEwOS43OTMgMzIwLjQxNUgxNzYuMjg4VjE5MS41ODdaTTIwNy42NjYgMjU2LjAwMkMyMDcuNjY2IDI5MS41NzcgMjM2LjUwNSAzMjAuNDE3IDI3Mi4wODEgMzIwLjQxN0gyNzQuMTYxQzMwOS43MzcgMzIwLjQxNyAzMzguNTc2IDI5MS41NzcgMzM4LjU3NiAyNTYuMDAyQzMzOC41NzYgMjIwLjQyNyAzMDkuNzM3IDE5MS41ODcgMjc0LjE2MSAxOTEuNTg3SDI3Mi4wODFDMjM2LjUwNSAxOTEuNTg3IDIwNy42NjYgMjIwLjQyNyAyMDcuNjY2IDI1Ni4wMDJaTTEwOS43OTMgMzUxLjc5NUMxMDkuNjU1IDM1MS43OTUgMTA5LjUxOCAzNTEuNzk0IDEwOS4zODEgMzUxLjc5NEM3My45OTQ4IDM1Mi4wMTUgNDUuMzc3OCAzODAuNzY5IDQ1LjM3NzggNDE2LjIwN0M0NS4zNzc4IDQ1MS42NTIgNzQuNjAyNSA0ODAuNjIyIDExMC4zMDkgNDgwLjYyMkMxNDYuNTkxIDQ4MC42MjIgMTc2LjI4OCA0NTEuMTg2IDE3Ni4yODggNDE1LjE2N1YzNTEuNzk1SDEwOS43OTNaTTEwOS43OTMgMzEuMzc3OEM3NC4yMTcyIDMxLjM3NzggNDUuMzc3OCA2MC4yMTczIDQ1LjM3NzggOTUuNzkyNEM0NS4zNzc4IDEzMS4zNjggNzQuMjE3MiAxNjAuMjA3IDEwOS43OTMgMTYwLjIwN0gxNzYuMjg4VjMxLjM3NzhIMTA5Ljc5M1pNMjA3LjY2NiAxNjAuMjA3SDI3NC4xNjFDMzA5LjczNyAxNjAuMjA3IDMzOC41NzYgMTMxLjM2OCAzMzguNTc2IDk1Ljc5MjRDMzM4LjU3NiA2MC4yMTczIDMwOS43MzcgMzEuMzc3OCAyNzQuMTYxIDMxLjM3NzhIMjA3LjY2NlYxNjAuMjA3WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlZm94QnJvd3NlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODkuMzcsMTUyLjg2Wm0tNTguNzQtMjkuMzdDMTMwLjc5LDEyMy41LDEzMC43MSwxMjMuNSwxMzAuNjMsMTIzLjQ5Wm0zNTEuNDIsNDUuMzVjLTEwLjYxLTI1LjUtMzIuMDgtNTMtNDguOTQtNjEuNzMsMTMuNzIsMjYuODksMjEuNjcsNTMuODgsMjQuNyw3NCwwLDAsMCwuMTQuMDUuNDEtMjcuNTgtNjguNzUtNzQuMzUtOTYuNDctMTEyLjU1LTE1Ni44My0xLjkzLTMuMDUtMy44Ni02LjExLTUuNzQtOS4zMy0xLTEuNjUtMS44Ni0zLjM0LTIuNjktNS4wNUE0NC44OCw0NC44OCwwLDAsMSwzMzMuMjQuNjlhLjYzLjYzLDAsMCwwLS41NS0uNjYuOS45LDAsMCwwLS40NiwwbC0uMTIuMDctLjE4LjEuMS0uMTRjLTU0LjIzLDMxLjc3LTc2LjcyLDg3LjM4LTgyLjUsMTIyLjc4YTEzMCwxMzAsMCwwLDAtNDguMzMsMTIuMzMsNi4yNSw2LjI1LDAsMCwwLTMuMDksNy43NSw2LjEzLDYuMTMsMCwwLDAsNy43OSwzLjc5bC41Mi0uMjFhMTE3Ljg0LDExNy44NCwwLDAsMSw0Mi4xMS0xMWwxLjQyLS4xYzItLjEyLDQtLjIsNi0uMjJBMTIyLjYxLDEyMi42MSwwLDAsMSwyOTEsMTQwYy42Ny4yLDEuMzIuNDIsMiwuNjMsMS44OS41NywzLjc2LDEuMiw1LjYyLDEuODcsMS4zNi41LDIuNzEsMSw0LjA1LDEuNTgsMS4wOS40NCwyLjE4Ljg4LDMuMjUsMS4zNXEyLjUyLDEuMTMsNSwyLjM1Yy43NS4zNywxLjUuNzQsMi4yNSwxLjEzcTIuNCwxLjI2LDQuNzQsMi42MywxLjUxLjg3LDMsMS44YTEyNC44OSwxMjQuODksMCwwLDEsNDIuNjYsNDQuMTNjLTEzLTkuMTUtMzYuMzUtMTguMTktNTguODItMTQuMjgsODcuNzQsNDMuODYsNjQuMTgsMTk0LjktNTcuMzksMTg5LjJhMTA4LjQzLDEwOC40MywwLDAsMS0zMS43NC02LjEyYy0yLjQyLS45MS00LjgtMS44OS03LjE2LTIuOTMtMS4zOC0uNjMtMi43Ni0xLjI3LTQuMTItMkMxNzQuNSwzNDYsMTQ5LjksMzE2LjkyLDE0Ni44MywyODEuNTljMCwwLDExLjI1LTQxLjk1LDgwLjYyLTQxLjk1LDcuNSwwLDI4LjkzLTIwLjkyLDI5LjMzLTI3LS4wOS0yLTQyLjU0LTE4Ljg3LTU5LjA5LTM1LjE4LTguODUtOC43MS0xMy4wNS0xMi45MS0xNi43Ny0xNi4wNmE2OS41OCw2OS41OCwwLDAsMC02LjMxLTQuNzdBMTEzLjA1LDExMy4wNSwwLDAsMSwxNzMuOTIsOTdjLTI1LjA2LDExLjQxLTQ0LjU1LDI5LjQ1LTU4LjcxLDQ1LjM3aC0uMTJjLTkuNjctMTIuMjUtOS01Mi42NS04LjQzLTYxLjA4LS4xMi0uNTMtNy4yMiwzLjY4LTguMTUsNC4zMWExNzguNTQsMTc4LjU0LDAsMCwwLTIzLjg0LDIwLjQzQTIxNCwyMTQsMCwwLDAsNTEuOSwxMzMuMzZsMCwwYS4wOC4wOCwwLDAsMSwwLDAsMjA1Ljg0LDIwNS44NCwwLDAsMC0zMi43Myw3My45Yy0uMDYuMjctMi4zMywxMC4yMS00LDIyLjQ4cS0uNDIsMi44Ny0uNzgsNS43NGMtLjU3LDMuNjktMSw3LjcxLTEuNDQsMTQsMCwuMjQsMCwuNDgtLjA1LjcyLS4xOCwyLjcxLS4zNCw1LjQxLS40OSw4LjEyLDAsLjQxLDAsLjgyLDAsMS4yNCwwLDEzNC43LDEwOS4yMSwyNDMuODksMjQzLjkyLDI0My44OSwxMjAuNjQsMCwyMjAuODItODcuNTgsMjQwLjQzLTIwMi42Mi40MS0zLjEyLjc0LTYuMjYsMS4xMS05LjQxLDQuODUtNDEuODMtLjU0LTg1Ljc5LTE1LjgyLTEyMi41NVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyZWZveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDMuNTIsMjQxLjQ4Yy0uMTItMS41Ni0uMjQtMy4xMi0uMjQtNC42OHYtLjEybC0uMzYtNC42OHYtLjEyYTI0NS44NiwyNDUuODYsMCwwLDAtNy4zMi00MS4xNWMwLS4xMiwwLS4xMi0uMTItLjI0bC0xLjA4LTRjLS4xMi0uMjQtLjEyLS40OC0uMjQtLjYtLjM2LTEuMi0uNzItMi41Mi0xLjA4LTMuNzItLjEyLS4yNC0uMTItLjYtLjI0LS44NC0uMzYtMS4yLS43Mi0yLjQtMS4wOC0zLjQ4LS4xMi0uMzYtLjI0LS42LS4zNi0xLS4zNi0xLjItLjcyLTIuMjgtMS4yLTMuNDhsLS4zNi0xLjA4Yy0uMzYtMS4wOC0uODQtMi4yOC0xLjItMy4zNmE4LjI3LDguMjcsMCwwLDAtLjM2LTFjLS40OC0xLjA4LS44NC0yLjI4LTEuMzItMy4zNi0uMTItLjI0LS4yNC0uNi0uMzYtLjg0LS40OC0xLjItMS0yLjI4LTEuNDQtMy40OCwwLS4xMi0uMTItLjI0LS4xMi0uMzYtMS41Ni0zLjg0LTMuMjQtNy42OC01LTExLjRsLS4zNi0uNzJjLS40OC0xLS44NC0xLjgtMS4zMi0yLjY0LS4yNC0uNDgtLjQ4LTEuMDgtLjcyLTEuNTYtLjM2LS44NC0uODQtMS41Ni0xLjItMi40LS4zNi0uNi0uNi0xLjItMS0xLjhzLS44NC0xLjQ0LTEuMi0yLjI4Yy0uMzYtLjYtLjcyLTEuMzItMS4wOC0xLjkycy0uODQtMS40NC0xLjItMi4xNmExOC4wNywxOC4wNywwLDAsMC0xLjItMmMtLjM2LS43Mi0uODQtMS4zMi0xLjItMnMtLjg0LTEuMzItMS4yLTItLjg0LTEuMzItMS4yLTEuOTItLjg0LTEuNDQtMS4zMi0yLjE2YTE1LjYzLDE1LjYzLDAsMCwwLTEuMi0xLjhMNDYzLjIsMTE5YTE1LjYzLDE1LjYzLDAsMCwwLTEuMi0xLjhjLS40OC0uNzItMS4wOC0xLjU2LTEuNTYtMi4yOC0uMzYtLjQ4LS43Mi0xLjA4LTEuMDgtMS41NmwtMS44LTIuNTJjLS4zNi0uNDgtLjYtLjg0LTEtMS4zMi0xLTEuMzItMS44LTIuNTItMi43Ni0zLjcyYTI0OC43NiwyNDguNzYsMCwwLDAtMjMuNTEtMjYuNjRBMTg2LjgyLDE4Ni44MiwwLDAsMCw0MTIsNjIuNDZjLTQtMy40OC04LjE2LTYuNzItMTIuNDgtOS44NGExNjIuNDksMTYyLjQ5LDAsMCwwLTI0LjYtMTUuMTJjLTIuNC0xLjMyLTQuOC0yLjUyLTcuMi0zLjcyYTI1NCwyNTQsMCwwLDAtNTUuNDMtMTkuNTZjLTEuOTItLjM2LTMuODQtLjg0LTUuNjQtMS4yaC0uMTJjLTEtLjEyLTEuOC0uMzYtMi43Ni0uNDhhMjM2LjM1LDIzNi4zNSwwLDAsMC0zOC00SDI1NS4xNGEyMzQuNjIsMjM0LjYyLDAsMCwwLTQ1LjQ4LDVjLTMzLjU5LDcuMDgtNjMuMjMsMjEuMjQtODIuOTEsMzktMS4wOCwxLTEuOTIsMS42OC0yLjQsMi4xNmwtLjQ4LjQ4SDEyNGwtLjEyLjEyLjEyLS4xMmEuMTIuMTIsMCwwLDAsLjEyLS4xMmwtLjEyLjEyYS40Mi40MiwwLDAsMSwuMjQtLjEyYzE0LjY0LTguNzYsMzQuOTItMTYsNDkuNDQtMTkuNTZsNS44OC0xLjQ0Yy4zNi0uMTIuODQtLjEyLDEuMi0uMjQsMS42OC0uMzYsMy4zNi0uNzIsNS4xNi0xLjA4LjI0LDAsLjYtLjEyLjg0LS4xMkMyNTAuOTQsMjAuOTQsMzE5LjM0LDQwLjE0LDM2Nyw4NS42MWExNzEuNDksMTcxLjQ5LDAsMCwxLDI2Ljg4LDMyLjc2YzMwLjM2LDQ5LjIsMjcuNDgsMTExLjExLDMuODQsMTQ3LjU5LTM0LjQ0LDUzLTExMS4zNSw3MS4yNy0xNTksMjQuODRhODQuMTksODQuMTksMCwwLDEtMjUuNTYtNTksNzQuMDUsNzQuMDUsMCwwLDEsNi4yNC0zMWMxLjY4LTMuODQsMTMuMDgtMjUuNjcsMTguMjQtMjQuNTktMTMuMDgtMi43Ni0zNy41NSwyLjY0LTU0LjcxLDI4LjE5LTE1LjM2LDIyLjkyLTE0LjUyLDU4LjItNSw4My4yOGExMzIuODUsMTMyLjg1LDAsMCwxLTEyLjEyLTM5LjI0Yy0xMi4yNC04Mi41NSw0My4zMS0xNTMsOTQuMzEtMTcwLjUxLTI3LjQ4LTI0LTk2LjQ3LTIyLjMxLTE0Ny43MSwxNS4zNi0yOS44OCwyMi01MS4yMyw1My4xNi02Mi41MSw5MC4zNiwxLjY4LTIwLjg4LDkuNi01Mi4wOCwyNS44LTgzLjg4LTE3LjE2LDguODgtMzksMzctNDkuOCw2Mi44OC0xNS42LDM3LjQzLTIxLDgyLjE5LTE2LjA4LDEyNC43OS4zNiwzLjI0LjcyLDYuMzYsMS4wOCw5LjYsMTkuOTIsMTE3LjExLDEyMiwyMDYuMzgsMjQ0Ljc4LDIwNi4zOEMzOTIuNzcsNTAzLjQyLDUwNCwzOTIuMTksNTA0LDI1NSw1MDMuODgsMjUwLjQ4LDUwMy43NiwyNDUuOTIsNTAzLjUyLDI0MS40OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyc3RPcmRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0wIDQ4OC4yMUMxMTUuMzQgNDk2LjIxIDcuNzkgMzg4LjY2IDcuNzkgMjU2UzExNS4zNCAxNS43OSAyNDggMTUuNzkgNDg4LjIxIDEyMy4zNCA0ODguMjEgMjU2IDM4MC42NiA0OTYuMjEgMjQ4IDQ5Ni4yMXptMC00NTkuOTJDMTI2LjY2IDM2LjI5IDI4LjI5IDEzNC42NiAyOC4yOSAyNTZTMTI2LjY2IDQ3NS43MSAyNDggNDc1LjcxIDQ2Ny43MSAzNzcuMzQgNDY3LjcxIDI1NiAzNjkuMzQgMzYuMjkgMjQ4IDM2LjI5em0wIDQzMS4yMmMtMTE2LjgxIDAtMjExLjUxLTk0LjY5LTIxMS41MS0yMTEuNTFTMTMxLjE5IDQ0LjQ5IDI0OCA0NC40OSA0NTkuNTEgMTM5LjE5IDQ1OS41MSAyNTYgMzY0LjgxIDQ2Ny41MSAyNDggNDY3LjUxem0xODYuMjMtMTYyLjk4YTE5MS42MTMgMTkxLjYxMyAwIDAgMS0yMC4xMyA0OC42OWwtNzQuMTMtMzUuODggNjEuNDggNTQuODJhMTkzLjUxNSAxOTMuNTE1IDAgMCAxLTM3LjIgMzcuMjlsLTU0LjgtNjEuNTcgMzUuODggNzQuMjdhMTkwLjk0NCAxOTAuOTQ0IDAgMCAxLTQ4LjYzIDIwLjIzbC0yNy4yOS03OC40NyA0Ljc5IDgyLjkzYy04LjYxIDEuMTgtMTcuNCAxLjgtMjYuMzMgMS44cy0xNy43Mi0uNjItMjYuMzMtMS44bDQuNzYtODIuNDYtMjcuMTUgNzguMDNhMTkxLjM2NSAxOTEuMzY1IDAgMCAxLTQ4LjY1LTIwLjJsMzUuOTMtNzQuMzQtNTQuODcgNjEuNjRhMTkzLjg1IDE5My44NSAwIDAgMS0zNy4yMi0zNy4yOGw2MS41OS01NC45LTc0LjI2IDM1LjkzYTE5MS42MzggMTkxLjYzOCAwIDAgMS0yMC4xNC00OC42OWw3Ny44NC0yNy4xMS04Mi4yMyA0Ljc2Yy0xLjE2LTguNTctMS43OC0xNy4zMi0xLjc4LTI2LjIxIDAtOSAuNjMtMTcuODQgMS44Mi0yNi41MWw4Mi4zOCA0Ljc3LTc3Ljk0LTI3LjE2YTE5MS43MjYgMTkxLjcyNiAwIDAgMSAyMC4yMy00OC42N2w3NC4yMiAzNS45Mi02MS41Mi01NC44NmExOTMuODUgMTkzLjg1IDAgMCAxIDM3LjI4LTM3LjIybDU0Ljc2IDYxLjUzLTM1LjgzLTc0LjE3YTE5MS40OSAxOTEuNDkgMCAwIDEgNDguNjUtMjAuMTNsMjYuODcgNzcuMjUtNC43MS04MS42MWM4LjYxLTEuMTggMTcuMzktMS44IDI2LjMyLTEuOHMxNy43MS42MiAyNi4zMiAxLjhsLTQuNzQgODIuMTYgMjcuMDUtNzcuNzZjMTcuMjcgNC41IDMzLjYgMTEuMzUgNDguNjMgMjAuMTdsLTM1LjgyIDc0LjEyIDU0LjcyLTYxLjQ3YTE5My4xMyAxOTMuMTMgMCAwIDEgMzcuMjQgMzcuMjNsLTYxLjQ1IDU0Ljc3IDc0LjEyLTM1Ljg2YTE5MS41MTUgMTkxLjUxNSAwIDAgMSAyMC4yIDQ4LjY1bC03Ny44MSAyNy4xIDgyLjI0LTQuNzVjMS4xOSA4LjY2IDEuODIgMTcuNSAxLjgyIDI2LjQ5IDAgOC44OC0uNjEgMTcuNjMtMS43OCAyNi4xOWwtODIuMTItNC43NSA3Ny43MiAyNy4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyc3RPcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi45IDIyOS4yYy4xLS4xLjItLjMuMy0uNCAwIC4xIDAgLjMtLjEuNGgtLjJ6TTIyNCA5Ni42Yy03LjEgMC0xNC42LjYtMjEuNCAxLjdsMy43IDY3LjQtMjItNjRjLTE0LjMgMy43LTI3LjcgOS40LTQwIDE2LjZsMjkuNCA2MS40LTQ1LjEtNTAuOWMtMTEuNCA4LjktMjEuNyAxOS4xLTMwLjYgMzAuOWw1MC42IDQ1LjQtNjEuMS0yOS43Yy03LjEgMTIuMy0xMi45IDI1LjctMTYuNiA0MGw2NC4zIDIyLjYtNjgtNGMtLjkgNy4xLTEuNCAxNC42LTEuNCAyMnMuNiAxNC42IDEuNCAyMS43bDY3LjctNC02NCAyMi42YzMuNyAxNC4zIDkuNCAyNy43IDE2LjYgNDAuM2w2MS4xLTI5LjdMOTcuNyAzNTJjOC45IDExLjcgMTkuMSAyMi4zIDMwLjkgMzAuOWw0NC45LTUwLjktMjkuNSA2MS40YzEyLjMgNy40IDI1LjcgMTMuMSA0MCAxNi45bDIyLjMtNjQuNi00IDY4YzcuMSAxLjEgMTQuNiAxLjcgMjEuNyAxLjcgNy40IDAgMTQuNi0uNiAyMS43LTEuN2wtNC02OC42IDIyLjYgNjUuMWMxNC4zLTQgMjcuNy05LjQgNDAtMTYuOUwyNzQuOSAzMzJsNDQuOSA1MC45YzExLjctOC45IDIyLTE5LjEgMzAuNi0zMC45bC01MC42LTQ1LjEgNjEuMSAyOS40YzcuMS0xMi4zIDEyLjktMjUuNyAxNi42LTQwLjNsLTY0LTIyLjMgNjcuNCA0YzEuMS03LjEgMS40LTE0LjMgMS40LTIxLjdzLS4zLTE0LjktMS40LTIybC02Ny43IDQgNjQtMjIuM2MtMy43LTE0LjMtOS4xLTI4LTE2LjYtNDAuM2wtNjAuOSAyOS43IDUwLjYtNDUuNGMtOC45LTExLjctMTkuMS0yMi0zMC42LTMwLjlsLTQ1LjEgNTAuOSAyOS40LTYxLjFjLTEyLjMtNy40LTI1LjctMTMuMS00MC0xNi45TDI0MS43IDE2Nmw0LTY3LjdjLTcuMS0xLjItMTQuMy0xLjctMjEuNy0xLjd6TTQ0My40IDEyOHYyNTZMMjI0IDUxMiA0LjYgMzg0VjEyOEwyMjQgMGwyMTkuNCAxMjh6bS0xNy4xIDEwLjNMMjI0IDIwLjkgMjEuNyAxMzguM3YyMzUuMUwyMjQgNDkxLjFsMjAyLjMtMTE3LjdWMTM4LjN6TTIyNCAzNy4xbDE4Ny43IDEwOS40djIxOC45TDIyNCA0NzQuOSAzNi4zIDM2NS40VjE0Ni42TDIyNCAzNy4xem0wIDUwLjljLTkyLjMgMC0xNjYuOSA3NS4xLTE2Ni45IDE2OCAwIDkyLjYgNzQuNiAxNjcuNyAxNjYuOSAxNjcuNyA5MiAwIDE2Ni45LTc1LjEgMTY2LjktMTY3LjcgMC05Mi45LTc0LjktMTY4LTE2Ni45LTE2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyc3RkcmFmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTkyaC02NHYxMjhIMTkydjEyOEgwdi0yNS42aDE2Ni40di0xMjhoMTI4di0xMjhIMzg0VjE5MnptLTI1LjYgMzguNHYxMjhoLTEyOHYxMjhINjRWNTEyaDE5MlYzODRoMTI4VjIzMC40aC0yNS42em0yNS42IDE5MmgtODkuNlY1MTJIMzIwdi02NGg2NHYtMjUuNnpNMCAwdjM4NGgxMjhWMjU2aDEyOFYxMjhoMTI4VjBIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxpY2tyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE0NC41IDMxOWMtMzUuMSAwLTYzLjUtMjguNC02My41LTYzLjVzMjguNC02My41IDYzLjUtNjMuNSA2My41IDI4LjQgNjMuNSA2My41LTI4LjQgNjMuNS02My41IDYzLjV6bTE1OSAwYy0zNS4xIDAtNjMuNS0yOC40LTYzLjUtNjMuNXMyOC40LTYzLjUgNjMuNS02My41IDYzLjUgMjguNCA2My41IDYzLjUtMjguNCA2My41LTYzLjUgNjMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxpcGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0zNTguNCAxNzkuMmgtODkuNnY4OS42aC04OS42djg5LjZIODkuNlYxMjEuNmgyNjguOHY4OS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTk3LjggNDI3LjhjMTIuOSAxMS43IDMzLjcgMzMuMyAzMy4yIDUwLjcgMCAuOC0uMSAxLjYtLjEgMi41LTEuOCAxOS44LTE4LjggMzEuMS0zOS4xIDMxLTI1LS4xLTM5LjktMTYuOC0zOC43LTM1LjggMS0xNi4yIDIwLjUtMzYuNyAzMi40LTQ3LjYgMi4zLTIuMSAyLjctMi43IDUuNi0zLjYgMy40IDAgMy45LjMgNi43IDIuOHpNMzMxLjkgNjcuM2MtMTYuMy0yNS43LTM4LjYtNDAuNi02My4zLTUyLjFDMjQzLjEgNC41IDIxNC0uMiAxOTIgMGMtNDQuMSAwLTcxLjIgMTMuMi04MS4xIDE3LjNDNTcuMyA0NS4yIDI2LjUgODcuMiAyOCAxNTguNmM3LjEgODIuMiA5NyAxNzYgMTU1LjggMjMzLjggMS43IDEuNiA0LjUgNC41IDYuMiA1LjFsMy4zLjFjMi4xLS43IDEuOC0uNSAzLjUtMi4xIDUyLjMtNDkuMiAxNDAuNy0xNDUuOCAxNTUuOS0yMTUuNyA3LTM5LjIgMy4xLTcyLjUtMjAuOC0xMTIuNXpNMTg2LjggMzUxLjljLTI4LTUxLjEtNjUuMi0xMzAuNy02OS4zLTE4OS0zLjQtNDcuNSAxMS40LTEzMS4yIDY5LjMtMTM2Ljd2MzI1Ljd6TTMyOC43IDE4MGMtMTYuNCA1Ni44LTc3LjMgMTI4LTExOC45IDE3MC4zQzIzNy42IDI5OC40IDI3NSAyMTcgMjc3IDE1OC40YzEuNi00NS45LTkuOC0xMDUuOC00OC0xMzEuNCA4OC44IDE4LjMgMTE1LjUgOTguMSA5OS43IDE1M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9udEF3ZXNvbWVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QTQ4IDQ4IDAgMCAwIDAgODBWNDMyYTQ4IDQ4IDAgMCAwIDQ4IDQ4SDQwMGE0OCA0OCAwIDAgMCA0OC00OFY4MEE0OCA0OCAwIDAgMCA0MDAgMzJabTE2IDQwMGExNiAxNiAwIDAgMS0xNiAxNkg0OGExNiAxNiAwIDAgMS0xNi0xNlY4MEExNiAxNiAwIDAgMSA0OCA2NEg0MDBhMTYgMTYgMCAwIDEgMTYgMTZaTTIwMS42IDE1MmMtMjUuNCAwLTM3LjQgMTAuNC01Ny42IDE0LjRWMTYwYTE2IDE2IDAgMCAwLTMyIDBWMzUyYTE2IDE2IDAgMCAwIDMyIDBWMTk4LjRjMjAuMi00IDMyLjItMTQuNCA1Ny42LTE0LjQgMzEuNCAwIDQzLjIgMTYgNzQuNiAxNiAxMC4yIDAgMTcuOC0xLjQgMjcuOC00LjZ2OTZjLTEwIDMuMi0xNy42IDQuNi0yNy44IDQuNi0zMS40IDAtNDMuNC0xNi03NC42LTE2YTg1LjkgODUuOSAwIDAgMC0yNS42IDR2MzJhODAgODAgMCAwIDEgMjUuNi00YzMxLjQgMCA0My4yIDE2IDc0LjYgMTYgMTguNiAwIDI4LjItNC44IDU5LjgtMTZWMTUyYy0zMS42IDExLjItNDEuMiAxNi01OS44IDE2QzI0NC44IDE2OCAyMzIuOCAxNTIgMjAxLjYgMTUyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250QXdlc29tZUZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDQ4VjM4NGMtNjMgMjMtODIgMzItMTE5IDMyLTYzIDAtODctMzItMTUwLTMyLTIwIDAtMzYgNC01MSA4VjMyOGMxNS00IDMxLTggNTEtOCA2MyAwIDg3IDMyIDE1MCAzMiAyMCAwIDM1LTMgNTUtOVYxMzVjLTIwIDYtMzUgOS01NSA5LTYzIDAtODctMzItMTUwLTMyLTUxIDAtNzUgMjEtMTE1IDI5VjQ0OGEzMS42IDMxLjYgMCAwIDEtMzIgMzJBMzEuNiAzMS42IDAgMCAxIDAgNDQ4VjY0QTMxLjYgMzEuNiAwIDAgMSAzMiAzMiAzMS42IDMxLjYgMCAwIDEgNjQgNjRWNzdjNDAtOCA2NC0yOSAxMTUtMjkgNjMgMCA4NyAzMiAxNTAgMzJDMzY2IDgwIDM4NSA3MSA0NDggNDhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRBd2Vzb21lTG9nb0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM5OTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMDkuNyAxNTYuNWMtNTcuOCAwLTEwMiA0My45LTEwMiA5OS4xIDAgNTYgNDQuNiA5OS4xIDEwMiA5OS4xIDU3LjQgMCAxMDItNDMuMSAxMDItOTkuMUMxMzExLjcgMjAwLjQgMTI2Ny41IDE1Ni41IDEyMDkuNyAxNTYuNVptMCAxNTIuN2MtMzUuMSAwLTUxLjgtMjcuNC01MS44LTUzLjIgMC0yNS44IDE2LjctNTMuMiA1MS44LTUzLjIgMzUuMSAwIDUxLjggMjcuOCA1MS44IDUzLjJDMTI2MS4xIDI4MS44IDEyNDQuOCAzMDkuMiAxMjA5LjcgMzA5LjJabTk2Mi4xLTEzNi4xYy00LjQtMTAuOS0xMi4zLTE2LjUtMjMuNS0xNi41cy0xOS4xIDUuNi0yMy41IDE2LjVsLTU5LjQgMTQ1LjhjLTcuMiAxNy43IDIuOCAyNy40IDQuNCAyOWEyNC42IDI0LjYgMCAwIDAgMTcuNSA2LjhjMTAuOCAwIDE4LjctNiAyMy4xLTE4LjFsNC0xMC4xaDY3LjdsNCAxMC4xYzQuOCAxMi4xIDEyLjMgMTguMSAyMy4xIDE4LjFhMjQuNiAyNC42IDAgMCAwIDE3LjUtNi44YzEwLTEwLjEgNi44LTIyLjYgNC40LTI5Wm0tNDMgMTEzLjYgMTkuMS01NiAxOS4xIDU2Wm0tNTc0LjUtMTMwLjFjLTE0LjMgMC0yNC43IDEwLjktMjQuNyAyNS40djc2LjVsLTY4LjUtODUuOGMtNC40LTUuNi0xMS42LTE2LjEtMjUuNS0xNi4xLTE5LjEgMC0yNC4zIDE3LjctMjQuMyAyNS40VjMyOS43YzAgMTQuMSAxMC40IDI1LjQgMjQuNyAyNS40IDE0LjMgMCAyNC43LTEwLjkgMjQuNy0yNS40VjI1Mi44bDY4LjkgODYuMmM0LjggNS42IDExLjYgMTYuMSAyNS41IDE2LjEgMTkuMSAwIDIzLjktMTcuMyAyMy45LTI1LjRWMTgxLjlDMTU3OSAxNjcuNCAxNTY4LjYgMTU2LjUgMTU1NC4zIDE1Ni41Wm0tNTU0LjEgMS42SDkxNi41Yy0xOS45IDAtMjUuMSAxNy4zLTI1LjEgMjUuNFYzMjguMWMwIDE5LjcgMTYuNyAyNS40IDI0LjcgMjUuNCA4IDAgMjQuNy01LjIgMjQuNy0yNS40VjI4NWg0NC42YzEyLjggMCAyMi43LTkuMyAyMi43LTIyLjYgMC0xNy43LTE1LjUtMjIuMS0yMi43LTIyLjFIOTQwLjhWMjAzLjZoNTkuNGMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42QzEwMjIuOSAxNjMgMTAwNy4zIDE1OC4xIDEwMDAuMiAxNTguMVptODE1LjEgMEgxNjkxLjdjLTcuMiAwLTIyLjcgNC40LTIyLjcgMjIuMiAwIDEzLjMgMTAgMjIuNiAyMi43IDIyLjZoMzdWMzI3LjdjMCAxNC4xIDEwLjQgMjUuNCAyNC43IDI1LjQgMTQuMyAwIDI0LjctMTAuOSAyNC43LTI1LjRWMjAyLjhoMzdjMTIuNyAwIDIyLjctOS4zIDIyLjctMjIuNkMxODM3LjkgMTYzIDE4MjIuNCAxNTguMSAxODE1LjIgMTU4LjFabTE3ODkuNS0xLjZjLTkuNiAwLTE3LjUgNi0yNS4xIDE4LjFsLTQ2LjYgNzYuMUwzNDg2LjQgMTc0LjZxLTEwLjgtMTguMS0yNS4xLTE4LjFjLTE5LjUgMC0yNC43IDE4LjEtMjQuNyAyNS44VjMyOS43YzAgMTQuMSAxMC40IDI1LjQgMjQuNyAyNS40czI0LjctMTAuOSAyNC43LTI1LjRWMjYyLjhMMzUxMC43IDMwMi43YzYuNCAxMC4xIDEzLjkgMTUuMyAyMi4zIDE1LjMgOC44IDAgMTUuOS01LjIgMjIuMy0xNS4zbDI0LjctMzkuOXY2Ni45YzAgMTQuMSAxMC4zIDI1LjQgMjQuNyAyNS40IDE0LjMgMCAyNC43LTEwLjkgMjQuNy0yNS40VjE4Mi4zQzM2MjkuNCAxNzQuMiAzNjI0LjYgMTU2LjUgMzYwNC43IDE1Ni41Wm0yNDguNiAxNDkuOGgtNjUuN1YyNzIuOWgzOS40YzExLjkgMCAyMS4xLTguOSAyMS4xLTIwLjkgMC0xMi4xLTkuMi0yMC45LTIxLjEtMjAuOWgtMzkuNFYyMDQuOGg2Mi4xYzEyLjggMCAyMi43LTkuMyAyMi43LTIyLjYgMC0xNy43LTE1LjYtMjIuMi0yMi43LTIyLjJoLTg2LjRjLTE5LjkgMC0yNS4xIDE3LjMtMjUuMSAyNS40VjMyNi41YzAgOC4xIDUuMiAyNS40IDI1LjEgMjUuNGg5MGMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42QzM4NzYgMzExLjIgMzg2MC41IDMwNi4zIDM4NTMuMyAzMDYuM1pNMzIzNSAxNTYuNWMtNTcuOCAwLTEwMiA0My45LTEwMiA5OS4xIDAgNTYgNDQuNiA5OS4xIDEwMiA5OS4xIDU3LjQgMCAxMDItNDMuMSAxMDItOTkuMUMzMzM3IDIwMC40IDMyOTIuOCAxNTYuNSAzMjM1IDE1Ni41Wm0wIDE1Mi43Yy0zNS4xIDAtNTEuOC0yNy40LTUxLjgtNTMuMiAwLTI1LjggMTYuNy01My4yIDUxLjgtNTMuMiAzNS4xIDAgNTEuOCAyNy44IDUxLjggNTMuMkMzMjg2LjggMjgxLjggMzI3MC4xIDMwOS4yIDMyMzUgMzA5LjJaTTI1NTAuMiAxNTYuNWMtMTEuMiAwLTE5LjEgNS42LTIzLjEgMTYuNWwtMzQuMyA5NC43LTMxLjUtOTIuMmMtNC40LTEyLjUtMTIuMy0xOC45LTI0LjMtMTguOS0xMS45IDAtMTkuOSA2LjQtMjQuMyAxOC45bC0zMS41IDkyLjItMzQuMy05NS41cS01LjQtMTUuNy0yMi43LTE1LjdjLTYuOCAwLTEyLjMgMi40LTE3LjUgNy4zLTUuMiA1LjItMTAuOCAxNC41LTQuOCAyOC42bDU1LjggMTQ1LjhjNCAxMS4zIDExLjYgMTYuOSAyMy4xIDE2LjlxMTYuNyAwIDIyLjctMTYuOWwzMy41LTkxLjggMzMuNSA5MS44cTYgMTYuOSAyMi43IDE2LjljMTEuMiAwIDE5LjEtNS42IDIzLjEtMTYuOWw1NS44LTE0NS44YzMuNi05LjMgNC40LTE5LjMtNC44LTI4LjZBMjMgMjMgMCAwIDAgMjU1MC4yIDE1Ni41Wm00NDQuMiA4MS0yMS45LTkuM2MtMTEuOS00LjgtMTYuMy04LjUtMTYuMy0xNS43cTAtMTIuMSAxNi43LTEyLjFjMTIuNyAwIDE5LjUgNy43IDI0LjMgMTAuOSA3LjIgNS4yIDE4LjMgNi44IDI3LjktMiAxMC44LTEwLjUgNi44LTIzLjggMS4yLTMwLjYtMTIuMy0xNC45LTMwLjMtMjIuMi01My44LTIyLjItMTkuMSAwLTM1LjEgNS4yLTQ3LjQgMTUuNy0xMi4zIDEwLjUtMTguNyAyNC4yLTE4LjcgNDEuMSAwIDI0LjIgMTUuOSA0My41IDQ3LjggNTcuNmwxOS41IDguOWMxNS45IDYuOCAxOS4xIDkuNyAxOS4xIDE3LjcgMCA5LjMtNi40IDE0LjEtMTkuNSAxNC4xLTE5LjEgMC0zNC43LTE0LjktMzYuMy0xNi4xLTEwLjgtNy4zLTIxLjUtMi0yNi4zIDIuOC02LjggNi40LTEyLjcgMjAuOSAzLjIgMzYuMiA2LjggNi40IDE1LjUgMTEuNyAyNi43IDE1LjNhOTQuNiA5NC42IDAgMCAwIDMyLjcgNS42YzE5LjkgMCAzNi43LTUuMiA0OS44LTE2LjEgMTMuMS0xMC45IDE5LjUtMjUuNCAxOS41LTQzLjVxMC0yMC41LTEyLTMzLjhDMzAyMi43IDI1My4yIDMwMTAuNyAyNDQuMyAyOTk0LjQgMjM3LjVabS0yMDYuNCA2OC45aC02NS43VjI3Mi45aDM5LjRjMTIgMCAyMS4xLTguOSAyMS4xLTIwLjkgMC0xMi4xLTkuMi0yMC45LTIxLjEtMjAuOWgtMzkuNFYyMDQuOGg2Mi4xYzEyLjggMCAyMi43LTkuMyAyMi43LTIyLjYgMC0xNy43LTE1LjUtMjIuMi0yMi43LTIyLjJoLTg2LjRjLTE5LjkgMC0yNS4xIDE3LjMtMjUuMSAyNS40VjMyNi41YzAgOC4xIDUuMiAyNS40IDI1LjEgMjUuNGg5MGMxMi43IDAgMjIuNy05LjMgMjIuNy0yMi42QzI4MTAuOCAzMTEuMiAyNzk1LjIgMzA2LjMgMjc4OCAzMDYuM1pNMTc4LjMgNDkuMWMtNTAuNSAwLTc0LjQgMjAuNy0xMTQuNiAyOC43VjY1QTMxLjggMzEuOCAwIDEgMCAwIDY1VjQ0N2EzMS44IDMxLjggMCAwIDAgNjMuNyAwVjE0MS40YzQwLjItOCA2NC4xLTI4LjcgMTE0LjYtMjguNyA2Mi41IDAgODYgMzEuOCAxNDguNCAzMS44IDIwLjMgMCAzNS40LTIuOCA1NS4zLTkuMnYxOTFjLTE5LjkgNi40LTM1IDkuMi01NS4zIDkuMi02Mi41IDAtODYuNC0zMS44LTE0OC40LTMxLjgtMjAuMyAwLTM2LjIgMy42LTUwLjkgOFYzNzUuNGExNTkuMSAxNTkuMSAwIDAgMSA1MC45LThjNjIuNSAwIDg2IDMxLjggMTQ4LjQgMzEuOCAzNyAwIDU2LjEtOS42IDExOS0zMS44VjQ5LjFDMzgyLjggNzEuNCAzNjMuNyA4MC45IDMyNi43IDgwLjkgMjY0LjIgODAuOSAyNDAuNCA0OS4xIDE3OC4zIDQ5LjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEE0OCA0OCAwIDAgMCAwIDgwVjQzMmE0OCA0OCAwIDAgMCA0OCA0OEg0MDBhNDggNDggMCAwIDAgNDgtNDhWODBBNDggNDggMCAwIDAgNDAwIDMyWk0zMzYgMzEyYy0zMS42IDExLjItNDEuMiAxNi01OS44IDE2LTMxLjQgMC00My4yLTE2LTc0LjYtMTZhODAgODAgMCAwIDAtMjUuNiA0VjI4NGE4NS45IDg1LjkgMCAwIDEgMjUuNi00YzMxLjIgMCA0My4yIDE2IDc0LjYgMTYgMTAuMiAwIDE3LjgtMS40IDI3LjgtNC42di05NmMtMTAgMy4yLTE3LjYgNC42LTI3LjggNC42LTMxLjQgMC00My4yLTE2LTc0LjYtMTYtMjUuNCAwLTM3LjQgMTAuNC01Ny42IDE0LjRWMzUyYTE2IDE2IDAgMCAxLTMyIDBWMTYwYTE2IDE2IDAgMCAxIDMyIDB2Ni40YzIwLjItNCAzMi4yLTE0LjQgNTcuNi0xNC40IDMxLjIgMCA0My4yIDE2IDc0LjYgMTYgMTguNiAwIDI4LjItNC44IDU5LjgtMTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRpY29uc0ZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNC40IDIyNGg5Mi40bC0xNS4yIDUxLjJoLTc2LjRWNDMzYzAgOC0yLjggOS4yIDQuNCAxMGw1OS42IDUuNlY0ODNIMHYtMzUuMmwyOS4yLTIuOGM3LjItLjggOS4yLTMuMiA5LjItMTAuOFYyNzguNGMwLTMuMi00LTMuMi04LTMuMkgwVjIyNGgzOC40di0yOC44YzAtNjggMzYuNC05NiAxMDYtOTYgNDYuOCAwIDg4LjggMTEuMiA4OC44IDcyLjRsLTY5LjYgOC40Yy40LTI1LjYtNi0zMS42LTIyLjQtMzEuNi0yNS4yIDAtMjYgMTMuNi0yNiAzNy42djMyYzAgMy4yLTQuOCA2LS44IDZ6TTM4NCA0ODNIMjQzLjJ2LTM0LjRsMjgtMy42YzcuMi0uOCAxMC40LTIuNCAxMC40LTEwVjI4N2MwLTUuNi00LTkuMi05LjItMTAuOGwtMzMuMi04LjggOS4yLTQwLjRoMTEwdjIwOGMwIDgtMy42IDguOCA0IDEwbDIxLjYgMy42VjQ4M3ptLTMwLTM0Ny4ybDEyLjQgNDUuNi0xMCAxMC00Mi44LTIyLjgtNDIuOCAyMi44LTEwLTEwIDEyLjQtNDUuNi0zMC0zNi40IDQuOC0xMGgzOEwzMDcuMiA1MUgzMjBsMjEuMiAzOC40aDM4bDQuOCAxMy4yLTMwIDMzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRpY29ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJ6bTE4NyAxNDAuOWMtMTguNCAwLTE5IDkuOS0xOSAyNy40djIzLjNjMCAyLjQtMy41IDQuNC0uNiA0LjRoNjcuNGwtMTEuMSAzNy4zSDE2OHYxMTIuOWMwIDUuOC0yIDYuNyAzLjIgNy4zbDQzLjUgNC4xdjI1LjFIODRWMzg5bDIxLjMtMmM1LjItLjYgNi43LTIuMyA2LjctNy45VjI2Ny43YzAtMi4zLTIuOS0yLjMtNS44LTIuM0g4NFYyMjhoMjh2LTIxYzAtNDkuNiAyNi41LTcwIDc3LjMtNzAgMzQuMSAwIDY0LjcgOC4yIDY0LjcgNTIuOGwtNTAuNyA2LjFjLjMtMTguNy00LjQtMjMtMTYuMy0yM3ptNzQuMyAyNDEuOHYtMjUuMWwyMC40LTIuNmM1LjItLjYgNy42LTEuNyA3LjYtNy4zVjI3MS44YzAtNC4xLTIuOS02LjctNi43LTcuOWwtMjQuMi02LjQgNi43LTI5LjVoODAuMnYxNTEuN2MwIDUuOC0yLjYgNi40IDIuOSA3LjNsMTUuNyAyLjZ2MjUuMXptODAuOC0yNTUuNWw5IDMzLjItNy4zIDcuMy0zMS4yLTE2LjYtMzEuMiAxNi42LTcuMy03LjMgOS0zMy4yLTIxLjgtMjQuMiAzLjUtOS42aDI3LjdsMTUuNS0yOGg5LjNsMTUuNSAyOGgyNy43bDMuNSA5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnRBd2Vzb21lQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAyMzcuNGgtMjIuMmMtMi4xIDAtMy43IDEuNi0zLjcgMy43djUxLjdjMCAyLjEgMS42IDMuNyAzLjcgMy43SDIwOGMyLjEgMCAzLjctMS42IDMuNy0zLjd2LTUxLjdjMC0yLjEtMS42LTMuNy0zLjctMy43em0xMTguMiAwSDMwNGMtMi4xIDAtMy43IDEuNi0zLjcgMy43djUxLjdjMCAyLjEgMS42IDMuNyAzLjcgMy43aDIyLjJjMi4xIDAgMy43LTEuNiAzLjctMy43di01MS43Yy0uMS0yLjEtMS43LTMuNy0zLjctMy43em0xMzItMTI1LjFjLTIuMy0zLjItNC42LTYuNC03LjEtOS41LTkuOC0xMi41LTIwLjgtMjQtMzIuOC0zNC40LTQuNS0zLjktOS4xLTcuNi0xMy45LTExLjItMS42LTEuMi0zLjItMi4zLTQuOC0zLjVDMzcyIDM0LjEgMzQwLjMgMjAgMzA2IDEzYy0xNi4yLTMuMy0zMi45LTUtNTAtNXMtMzMuOSAxLjctNTAgNWMtMzQuMyA3LjEtNjYgMjEuMi05My4zIDQwLjgtMS42IDEuMS0zLjIgMi4zLTQuOCAzLjUtNC44IDMuNi05LjQgNy4zLTEzLjkgMTEuMi0zIDIuNi01LjkgNS4zLTguOCA4cy01LjcgNS41LTguNCA4LjRjLTUuNSA1LjctMTAuNyAxMS44LTE1LjYgMTgtMi40IDMuMS00LjggNi4zLTcuMSA5LjVDMjUuMiAxNTMgOC4zIDIwMi41IDguMyAyNTZjMCAyIC4xIDQgLjEgNiAuMS43LjEgMS4zLjEgMiAuMSAxLjMuMSAyLjcuMiA0IDAgLjguMSAxLjUuMSAyLjMgMCAxLjMuMSAyLjUuMiAzLjcuMS44LjEgMS42LjIgMi40LjEgMS4xLjIgMi4zLjMgMy41IDAgLjguMSAxLjYuMiAyLjQuMSAxLjIuMyAyLjQuNCAzLjYuMS44LjIgMS41LjMgMi4zLjEgMS4zLjMgMi42LjUgMy45LjEuNi4yIDEuMy4zIDEuOWwuOSA1LjdjLjEuNi4yIDEuMS4zIDEuNy4zIDEuMy41IDIuNy44IDQgLjIuOC4zIDEuNi41IDIuNC4yIDEgLjUgMi4xLjcgMy4yLjIuOS40IDEuNy42IDIuNi4yIDEgLjQgMiAuNyAzIC4yLjkuNSAxLjguNyAyLjcuMyAxIC41IDEuOS44IDIuOS4zLjkuNSAxLjguOCAyLjcuMi45LjUgMS45LjggMi44cy41IDEuOC44IDIuN2MuMyAxIC42IDEuOS45IDIuOC42IDEuNiAxLjEgMy4zIDEuNyA0LjkuNCAxIC43IDEuOSAxIDIuOC4zIDEgLjcgMiAxLjEgMyAuMy44LjYgMS41LjkgMi4zbDEuMiAzYy4zLjcuNiAxLjUuOSAyLjIuNCAxIC45IDIgMS4zIDNsLjkgMi4xYy41IDEgLjkgMiAxLjQgMyAuMy43LjYgMS4zLjkgMiAuNSAxIDEgMi4xIDEuNSAzLjEuMi42LjUgMS4xLjggMS43LjYgMS4xIDEuMSAyLjIgMS43IDMuMy4xLjIuMi4zLjMuNSAyLjIgNC4xIDQuNCA4LjIgNi44IDEyLjIuMi40LjUuOC43IDEuMi43IDEuMSAxLjMgMi4yIDIgMy4zLjMuNS42LjkuOSAxLjQuNiAxLjEgMS4zIDIuMSAyIDMuMi4zLjUuNi45LjkgMS40LjcgMS4xIDEuNCAyLjEgMi4xIDMuMi4yLjQuNS44LjggMS4yLjcgMS4xIDEuNSAyLjIgMi4zIDMuMy4yLjIuMy41LjUuNyAzNy41IDUxLjcgOTQuNCA4OC41IDE2MCA5OS40LjkuMSAxLjcuMyAyLjYuNCAxIC4yIDIuMS40IDMuMS41czEuOS4zIDIuOC40YzEgLjIgMiAuMyAzIC40LjkuMSAxLjkuMiAyLjkuM3MxLjkuMiAyLjkuMyAyLjEuMiAzLjEuM2MuOS4xIDEuOC4xIDIuNy4yIDEuMS4xIDIuMy4xIDMuNC4yLjggMCAxLjcuMSAyLjUuMSAxLjMgMCAyLjYuMSAzLjkuMS43LjEgMS40LjEgMi4xLjEgMiAuMSA0IC4xIDYgLjFzNC0uMSA2LS4xYy43IDAgMS40LS4xIDIuMS0uMSAxLjMgMCAyLjYgMCAzLjktLjEuOCAwIDEuNy0uMSAyLjUtLjEgMS4xLS4xIDIuMy0uMSAzLjQtLjIuOSAwIDEuOC0uMSAyLjctLjIgMS0uMSAyLjEtLjIgMy4xLS4zczEuOS0uMiAyLjktLjNjLjktLjEgMS45LS4yIDIuOS0uM3MyLS4zIDMtLjQgMS45LS4zIDIuOC0uNGMxLS4yIDIuMS0uMyAzLjEtLjUuOS0uMSAxLjctLjMgMi42LS40IDY1LjYtMTEgMTIyLjUtNDcuNyAxNjAuMS0xMDIuNC4yLS4yLjMtLjUuNS0uNy44LTEuMSAxLjUtMi4yIDIuMy0zLjMuMi0uNC41LS44LjgtMS4yLjctMS4xIDEuNC0yLjEgMi4xLTMuMi4zLS41LjYtLjkuOS0xLjQuNi0xLjEgMS4zLTIuMSAyLTMuMi4zLS41LjYtLjkuOS0xLjQuNy0xLjEgMS4zLTIuMiAyLTMuMy4yLS40LjUtLjguNy0xLjIgMi40LTQgNC42LTguMSA2LjgtMTIuMi4xLS4yLjItLjMuMy0uNS42LTEuMSAxLjEtMi4yIDEuNy0zLjMuMi0uNi41LTEuMS44LTEuNy41LTEgMS0yLjEgMS41LTMuMS4zLS43LjYtMS4zLjktMiAuNS0xIDEtMiAxLjQtM2wuOS0yLjFjLjUtMSAuOS0yIDEuMy0zIC4zLS43LjYtMS41LjktMi4ybDEuMi0zYy4zLS44LjYtMS41LjktMi4zLjQtMSAuNy0yIDEuMS0zcy43LTEuOSAxLTIuOGMuNi0xLjYgMS4yLTMuMyAxLjctNC45LjMtMSAuNi0xLjkuOS0yLjhzLjUtMS44LjgtMi43Yy4yLS45LjUtMS45LjgtMi44cy42LTEuOC44LTIuN2MuMy0xIC41LTEuOS44LTIuOS4yLS45LjUtMS44LjctMi43LjItMSAuNS0yIC43LTMgLjItLjkuNC0xLjcuNi0yLjYuMi0xIC41LTIuMS43LTMuMi4yLS44LjMtMS42LjUtMi40LjMtMS4zLjYtMi43LjgtNCAuMS0uNi4yLTEuMS4zLTEuN2wuOS01LjdjLjEtLjYuMi0xLjMuMy0xLjkuMS0xLjMuMy0yLjYuNS0zLjkuMS0uOC4yLTEuNS4zLTIuMy4xLTEuMi4zLTIuNC40LTMuNiAwLS44LjEtMS42LjItMi40LjEtMS4xLjItMi4zLjMtMy41LjEtLjguMS0xLjYuMi0yLjQuMSAxLjcuMS41LjItLjcgMC0uOC4xLTEuNS4xLTIuMy4xLTEuMy4yLTIuNy4yLTQgLjEtLjcuMS0xLjMuMS0yIC4xLTIgLjEtNCAuMS02IDAtNTMuNS0xNi45LTEwMy00NS44LTE0My43ek00NDggMzcxLjVjLTkuNCAxNS41LTIwLjYgMjkuOS0zMy42IDQyLjktMjAuNiAyMC42LTQ0LjUgMzYuNy03MS4yIDQ4LTEzLjkgNS44LTI4LjIgMTAuMy00Mi45IDEzLjJ2LTc1LjhjMC01OC42LTg4LjYtNTguNi04OC42IDB2NzUuOGMtMTQuNy0yLjktMjktNy4zLTQyLjktMTMuMi0yNi43LTExLjMtNTAuNi0yNy40LTcxLjItNDgtMTMtMTMtMjQuMi0yNy40LTMzLjYtNDIuOXYtNzEuM2MwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMWMyLjEgMCAzLjcgMS42IDMuNyAzLjdWMzI2aDI5LjZWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4xYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN0gyMDhjMi4xIDAgMy43IDEuNiAzLjcgMy43djI1LjloMjkuNVYxODJjMC00LjggNi41LTMuNyA5LjUtMy43Vjg4LjFjLTQuNC0yLTcuNC02LjctNy40LTExLjUgMC0xNi44IDI1LjQtMTYuOCAyNS40IDAgMCA0LjgtMyA5LjQtNy40IDExLjVWOTJjNi4zLTEuNCAxMi43LTIuMyAxOS4yLTIuMyA5LjQgMCAxOC40IDMuNSAyNi4zIDMuNSA3LjIgMCAxNS4yLTMuNSAxOS40LTMuNSAyLjEgMCAzLjcgMS42IDMuNyAzLjd2NDguNGMwIDUuNi0xOC43IDYuNS0yMi40IDYuNS04LjYgMC0xNi42LTMuNS0yNS40LTMuNS03IDAtMTQuMSAxLjItMjAuOCAyLjh2MzAuN2MzIDAgOS41LTEuMSA5LjUgMy43djI1LjloMjkuNVYxODJjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjJjMi4xIDAgMy43IDEuNiAzLjcgMy43djI1LjloMjkuNVYxODJjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjFjMi4xIDAgMy43IDEuNiAzLjcgMy43djE0NGgyOS41di0yNS44YzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4yYzIuMSAwIDMuNyAxLjYgMy43IDMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9ydEF3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg5LjIgMjg3LjloLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZWMTQ2LjJjMC0yLjYtMi00LjYtNC42LTQuNmgtMjcuNGMtMi42IDAtNC42IDItNC42IDQuNnYzMmgtMzYuNnYtMzJjMC0yLjYtMi00LjYtNC42LTQuNmgtMjcuNGMtMi42IDAtNC42IDItNC42IDQuNnYzMmgtMzYuNnYtMzJjMC02LTgtNC42LTExLjctNC42di0zOGM4LjMtMiAxNy4xLTMuNCAyNS43LTMuNCAxMC45IDAgMjAuOSA0LjMgMzEuNCA0LjMgNC42IDAgMjcuNy0xLjEgMjcuNy04di02MGMwLTIuNi0yLTQuNi00LjYtNC42LTUuMSAwLTE1LjEgNC4zLTI0IDQuMy05LjcgMC0yMC45LTQuMy0zMi42LTQuMy04IDAtMTYgMS4xLTIzLjcgMi45di00LjljNS40LTIuNiA5LjEtOC4zIDkuMS0xNC4zIDAtMjAuNy0zMS40LTIwLjgtMzEuNCAwIDAgNiAzLjcgMTEuNyA5LjEgMTQuM3YxMTEuN2MtMy43IDAtMTEuNy0xLjQtMTEuNyA0LjZ2MzJoLTM2LjZ2LTMyYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJIMTI4di0zMmMwLTIuNi0yLTQuNi00LjYtNC42SDk2Yy0yLjYgMC00LjYgMi00LjYgNC42djE3OC4zSDU0Ljh2LTMyYzAtMi42LTItNC42LTQuNi00LjZIMjIuOGMtMi42IDAtNC42IDItNC42IDQuNlY1MTJoMTgyLjl2LTk2YzAtNzIuNiAxMDkuNy03Mi42IDEwOS43IDB2OTZoMTgyLjlWMjkyLjVjLjEtMi42LTEuOS00LjYtNC41LTQuNnptLTI4OC4xLTQuNWMwIDIuNi0yIDQuNi00LjYgNC42aC0yNy40Yy0yLjYgMC00LjYtMi00LjYtNC42di02NGMwLTIuNiAyLTQuNiA0LjYtNC42aDI3LjRjMi42IDAgNC42IDIgNC42IDQuNnY2NHptMTQ2LjQgMGMwIDIuNi0yIDQuNi00LjYgNC42aC0yNy40Yy0yLjYgMC00LjYtMi00LjYtNC42di02NGMwLTIuNiAyLTQuNiA0LjYtNC42aDI3LjRjMi42IDAgNC42IDIgNC42IDQuNnY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9ydW1iZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS44IDMwOS43QzIgMjkyLjcgMCAyNzUuNSAwIDI1OC4zIDAgMTM1IDk5LjggMzUgMjIzLjEgMzVjMTYuNiAwIDMzLjMgMiA0OS4zIDUuNUMxNDkgODcuNSA1MS45IDE4NiA1LjggMzA5Ljd6bTM5Mi45LTE4OS4yQzM4NSAxMDMgMzY5IDg3LjggMzUwLjkgNzUuMmMtMTQ5LjYgNDQuMy0yNjYuMyAxNjIuMS0zMDkuNyAzMTIgMTIuNSAxOC4xIDI4IDM1LjYgNDUuMiA0OSA0My4xLTE1MS4zIDE2MS4yLTI3MS43IDMxMi4zLTMxNS43em0xNS44IDI1Mi43YzE1LjItMjUuMSAyNS40LTUzLjcgMjkuNS04Mi44LTc5LjQgNDIuOS0xNDUgMTEwLjYtMTg3LjYgMTkwLjMgMzAtNC40IDU4LjktMTUuMyA4NC42LTMxLjMgMzUgMTMuMSA3MC45IDI0LjMgMTA3IDMzLjYtOS4zLTM2LjUtMjAuNC03NC41LTMzLjUtMTA5Ljh6bTI5LjctMTQ1LjVjLTIuNi0xOS41LTcuOS0zOC43LTE1LjgtNTYuOEMyOTAuNSAyMTYuNyAxODIgMzI3LjUgMTM3LjEgNDY2YzE4LjEgNy42IDM3IDEyLjUgNTYuNiAxNS4yQzI0MCAzNjcuMSAzMzAuNSAyNzQuNCA0NDQuMiAyMjcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm91cnNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzY4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjMuMSAzSDQ5LjlDMTIuNCAzIDAgMzEuMyAwIDQ5LjF2NDMzLjhjMCAyMC4zIDEyLjEgMjcuNyAxOC4yIDMwLjEgNi4yIDIuNSAyMi44IDQuNiAzMi45LTcuMUMxODAgMzU2LjUgMTgyLjIgMzU0IDE4Mi4yIDM1NGMzLjEtMy40IDMuNC0zLjEgNi44LTMuMWg4My40YzM1LjEgMCA0MC42LTI1LjIgNDQuMy0zOS43bDQ4LjYtMjQzQzM3My44IDI1LjggMzYzLjEgMyAzMjMuMSAzem0tMTYuMyA3My44bC0xMS40IDU5LjdjLTEuMiA2LjUtOS41IDEzLjItMTYuOSAxMy4ySDE3Mi4xYy0xMiAwLTIwLjYgOC4zLTIwLjYgMjAuM3YxM2MwIDEyIDguNiAyMC42IDIwLjYgMjAuNmg5MC40YzguMyAwIDE2LjYgOS4yIDE0LjggMTguMi0xLjggOC45LTEwLjUgNTMuOC0xMS40IDU4LjgtLjkgNC45LTYuOCAxMy41LTE2LjkgMTMuNWgtNzMuNWMtMTMuNSAwLTE3LjIgMS44LTI2LjUgMTIuNiAwIDAtOC45IDExLjQtODkuNSAxMDguMy0uOS45LTEuOC42LTEuOC0uM1Y3NS45YzAtNy43IDYuOC0xNi42IDE2LjYtMTYuNmgyMTljOC4yIDAgMTUuNiA3LjcgMTMuNSAxNy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcmVlQ29kZUNhbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTcuMjIsOTYuMjFjMTAuMzYtMTAuNjUsMTYtMTcuMTIsMTYtMjEuOSwwLTIuNzYtMS45Mi01LjUxLTMuODMtNy40MkExNC44MSwxNC44MSwwLDAsMCwxMDEsNjQuMDVjLTguNDgsMC0yMC45Miw4Ljc5LTM1Ljg0LDI1LjY5QzIzLjY4LDEzNywyLjUxLDE4Mi44MSwzLjM3LDI1MC4zNHMxNy40NywxMTcsNTQuMDYsMTYxLjg3Qzc2LjIyLDQzNS44Niw5MC42Miw0NDgsMTAwLjksNDQ4YTEzLjU1LDEzLjU1LDAsMCwwLDguMzctMy44NGMxLjkxLTIuNzYsMy44MS01LjYzLDMuODEtOC4zOCwwLTUuNjMtMy44Ni0xMi4yLTEzLjItMjAuNTUtNDQuNDUtNDIuMzMtNjcuMzItOTctNjcuNDgtMTY1QzMyLjI1LDE4OC44LDU0LDEzNy44Myw5Ny4yMiw5Ni4yMVpNMjM5LjQ3LDQyMC4wN2MuNTguMzcuOTEuNTUuOTEuNTVabTkzLjc5LjU1LjE3LS4xM0MzMzMuMjQsNDIwLjYyLDMzMy4xNyw0MjAuNjcsMzMzLjI2LDQyMC42MlptMy4xMy0xNTguMThjLTE2LjI0LTQuMTUsNTAuNDEtODIuODktNjguMDUtMTc3LjE3LDAsMCwxNS41NCw0OS4zOC02Mi44MywxNTkuNTctNzQuMjcsMTA0LjM1LDIzLjQ2LDE2OC43MywzNCwxNzUuMjMtNi43My00LjM1LTQ3LjQtMzUuNyw5LjU1LTEyOC42NCwxMS0xOC4zLDI1LjUzLTM0Ljg3LDQzLjUtNzIuMTYsMCwwLDE1LjkxLDIyLjQ1LDcuNiw3MS4xM0MyODcuNywzNjQsMzU0LDM0Mi45MSwzNTUsMzQzLjk0YzIyLjc1LDI2Ljc4LTE3LjcyLDczLjUxLTIxLjU4LDc2LjU1LDUuNDktMy42NSwxMTcuNzEtNzgsMzMtMTg4LjFDMzYwLjQzLDIzOC40LDM1Mi42MiwyNjYuNTksMzM2LjM5LDI2Mi40NFpNNTEwLjg4LDg5LjY5QzQ5Niw3Mi43OSw0ODMuNTIsNjQsNDc1LDY0YTE0LjgxLDE0LjgxLDAsMCwwLTguMzksMi44NGMtMS45MSwxLjkxLTMuODMsNC42Ni0zLjgzLDcuNDIsMCw0Ljc4LDUuNiwxMS4yNiwxNiwyMS45LDQzLjIzLDQxLjYxLDY1LDkyLjU5LDY0LjgyLDE1NC4wNi0uMTYsNjgtMjMsMTIyLjYzLTY3LjQ4LDE2NS05LjM0LDguMzUtMTMuMTgsMTQuOTItMTMuMiwyMC41NSwwLDIuNzUsMS45LDUuNjIsMy44MSw4LjM4QTEzLjYxLDEzLjYxLDAsMCwwLDQ3NS4xLDQ0OGMxMC4yOCwwLDI0LjY4LTEyLjEzLDQzLjQ3LTM1Ljc5LDM2LjU5LTQ0Ljg1LDUzLjE0LTk0LjM4LDU0LjA2LTE2MS44N1M1NTIuMzIsMTM3LDUxMC44OCw4OS42OVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJlZWJzZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDMuNyA5Ni4yYzExLjEtMTEuMSAxMTUuNS03NyAxMzkuMi01My4yIDIzLjcgMjMuNy00Mi4xIDEyOC4xLTUzLjIgMTM5LjItMTEuMSAxMS4xLTM5LjQuOS02My4xLTIyLjktMjMuOC0yMy43LTM0LjEtNTItMjIuOS02My4xek0xMDkuOSA2OC4xQzczLjYgNDcuNSAyMiAyNC42IDUuNiA0MS4xYy0xNi42IDE2LjYgNy4xIDY5LjQgMjcuOSAxMDUuNyAxOC41LTMyLjIgNDQuOC01OS4zIDc2LjQtNzguN3pNNDA2LjcgMTc0YzMuMyAxMS4zIDIuNyAyMC43LTIuNyAyNi4xLTIwLjMgMjAuMy04Ny41LTI3LTEwOS4zLTcwLjEtMTgtMzIuMy0xMS4xLTUzLjQgMTQuOS00OC43IDUuNy0zLjYgMTIuMy03LjYgMTkuNi0xMS42LTI5LjgtMTUuNS02My42LTI0LjMtOTkuNS0yNC4zLTExOS4xIDAtMjE1LjYgOTYuNS0yMTUuNiAyMTUuNiAwIDExOSA5Ni41IDIxNS42IDIxNS42IDIxNS42UzQ0NS4zIDM4MC4xIDQ0NS4zIDI2MWMwLTM4LjQtMTAuMS03NC41LTI3LjctMTA1LjgtMy45IDctNy42IDEzLjMtMTAuOSAxOC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGdWxjcnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk1Ljc1IDE2NC4xNGwtMzUuMzggNDMuNTVMMjUgMTY0LjE0bDM1LjM4LTQzLjU1ek0xNDQuMjMgMGwtMjAuNTQgMTk4LjE4TDcyLjcyIDI1Nmw1MSA1Ny44MkwxNDQuMjMgNTEyVjMwMC44OUwxMDMuMTUgMjU2bDQxLjA4LTQ0Ljg5em03OS42NyAxNjQuMTRsMzUuMzggNDMuNTUgMzUuMzgtNDMuNTUtMzUuMzgtNDMuNTV6bS00OC40OCA0N0wyMTYuNSAyNTZsLTQxLjA4IDQ0Ljg5VjUxMkwxOTYgMzEzLjgyIDI0NyAyNTZsLTUxLTU3LjgyTDE3NS40MiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYWxhY3RpY1JlcHVibGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA1MDRDMTExLjI1IDUwNCAwIDM5Mi43NSAwIDI1NlMxMTEuMjUgOCAyNDggOHMyNDggMTExLjI1IDI0OCAyNDgtMTExLjI1IDI0OC0yNDggMjQ4em0wLTQ3OS40N0MxMjAuMzcgMjQuNTMgMTYuNTMgMTI4LjM3IDE2LjUzIDI1NlMxMjAuMzcgNDg3LjQ3IDI0OCA0ODcuNDcgNDc5LjQ3IDM4My42MyA0NzkuNDcgMjU2IDM3NS42MyAyNC41MyAyNDggMjQuNTN6bTI3LjYyIDIxLjgxdjI0LjYyYTE4NS45MzMgMTg1LjkzMyAwIDAgMSA4My41NyAzNC41NGwxNy4zOS0xNy4zNmMtMjguNzUtMjIuMDYtNjMuMy0zNi44OS0xMDAuOTYtNDEuOHptLTU1LjM3LjA3Yy0zNy42NCA0Ljk0LTcyLjE2IDE5LjgtMTAwLjg4IDQxLjg1bDE3LjI4IDE3LjM2aC4wOGMyNC4wNy0xNy44NCA1Mi41NS0zMC4wNiA4My41Mi0zNC42N1Y0Ni40MXptMTIuMjUgNTAuMTd2ODIuODdjLTEwLjA0IDIuMDMtMTkuNDIgNS45NC0yNy42NyAxMS40MmwtNTguNjItNTguNTktMjEuOTMgMjEuOTMgNTguNjcgNTguNjdjLTUuNDcgOC4yMy05LjQ1IDE3LjU5LTExLjQ3IDI3LjYyaC04Mi45djMxaDgyLjljMi4wMiAxMC4wMiA2LjAxIDE5LjMxIDExLjQ3IDI3LjU0bC01OC42NyA1OC42OSAyMS45MyAyMS45MyA1OC42Mi01OC42MmE3Ny44NzMgNzcuODczIDAgMCAwIDI3LjY3IDExLjQ3djgyLjloMzF2LTgyLjljMTAuMDUtMi4wMyAxOS4zNy02LjA2IDI3LjYyLTExLjU1bDU4LjY3IDU4LjY5IDIxLjkzLTIxLjkzLTU4LjY3LTU4LjY5YzUuNDYtOC4yMyA5LjQ3LTE3LjUyIDExLjUtMjcuNTRoODIuODd2LTMxaC04Mi44N2MtMi4wMi0xMC4wMi02LjAzLTE5LjM4LTExLjUtMjcuNjJsNTguNjctNTguNjctMjEuOTMtMjEuOTMtNTguNjcgNTguNjdjLTguMjUtNS40OS0xNy41Ny05LjQ3LTI3LjYyLTExLjVWOTYuNThoLTMxem0xODMuMjQgMzAuNzJsLTE3LjM2IDE3LjM2YTE4Ni4zMzcgMTg2LjMzNyAwIDAgMSAzNC42NyA4My42N2gyNC42MmMtNC45NS0zNy42OS0xOS44My03Mi4yOS00MS45My0xMDEuMDN6bS0zMzUuNTUuMTNjLTIyLjA2IDI4LjcyLTM2LjkxIDYzLjI2LTQxLjg1IDEwMC45MWgyNC42NWM0LjYtMzAuOTYgMTYuNzYtNTkuNDUgMzQuNTktODMuNTJsLTE3LjM5LTE3LjM5ek0zOC4zNCAyODMuNjdjNC45MiAzNy42NCAxOS43NSA3Mi4xOCA0MS44IDEwMC45bDE3LjM2LTE3LjM5Yy0xNy44MS0yNC4wNy0yOS45Mi01Mi41Ny0zNC41MS04My41MkgzOC4zNHptMzk0LjcgMGMtNC42MSAzMC45OS0xNi44IDU5LjUtMzQuNjcgODMuNmwxNy4zNiAxNy4zNmMyMi4wOC0yOC43NCAzNi45OC02My4yOSA0MS45My0xMDAuOTZoLTI0LjYyek0xMzYuNjYgNDA2LjM4bC0xNy4zNiAxNy4zNmMyOC43MyAyMi4wOSA2My4zIDM2Ljk4IDEwMC45NiA0MS45M3YtMjQuNjRjLTMwLjk5LTQuNjMtNTkuNTMtMTYuNzktODMuNi0zNC42NXptMjIyLjUzLjA1Yy0yNC4wOSAxNy44NC01Mi41OCAzMC4wOC04My41NyAzNC42N3YyNC41N2MzNy42Ny00LjkyIDcyLjIxLTE5Ljc5IDEwMC45Ni00MS44NWwtMTcuMzEtMTcuMzloLS4wOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FsYWN0aWNTZW5hdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ5Ljg2IDMzLjQ4djI2LjA3QzIzNi4yOCA4MC4xNyAyMjYgMTY4LjE0IDIyNS4zOSAyNzQuOWMxMS43NC0xNS42MiAxOS4xMy0zMy4zMyAxOS4xMy00OC4yNHYtMTYuODhjLS4wMy01LjMyLjc1LTEwLjUzIDIuMTktMTUuNjUuNjUtMi4xNCAxLjM5LTQuMDggMi42Mi01LjgyIDEuMjMtMS43NSAzLjQzLTMuNzkgNi42OC0zLjc5IDMuMjQgMCA1LjQ1IDIuMDUgNi42OCAzLjc5IDEuMjMgMS43NSAxLjk3IDMuNjggMi42MiA1LjgyIDEuNDQgNS4xMiAyLjIyIDEwLjMzIDIuMTkgMTUuNjV2MTYuODhjMCAxNC45MSA3LjM5IDMyLjYyIDE5LjEzIDQ4LjI0LS42My0xMDYuNzYtMTAuOTEtMTk0LjczLTI0LjQ5LTIxNS4zNVYzMy40OGgtMTIuMjh6bS0yNi4zNCAxNDcuNzdjLTkuNTIgMi4xNS0xOC43IDUuMTktMjcuNDYgOS4wOCA4LjkgMTYuMTIgOS43NiAzMi42NCAxLjcxIDM3LjI5LTggNC42Mi0yMS44NS00LjIzLTMxLjM2LTE5LjgyLTExLjU4IDguNzktMjEuODggMTkuMzItMzAuNTYgMzEuMDkgMTQuNzMgOS42MiAyMi44OSAyMi45MiAxOC4zMiAzMC42Ni00LjU0IDcuNy0yMC4wMyA3LjE0LTM1LjQ3LS45Ni01Ljc4IDEzLjI1LTkuNzUgMjcuNTEtMTEuNjUgNDIuNDIgOS42OC4xOCAxOC42NyAyLjM4IDI2LjE4IDYuMDQgMTcuNzgtLjMgMzIuNzctMS45NiA0MC40OS00LjIyIDUuNTUtMjYuMzUgMjMuMDItNDguMjMgNDYuMzItNTkuNTEuNzMtMjUuNTUgMS44OC00OS42NyAzLjQ4LTcyLjA3em02NC45NiAwYzEuNTkgMjIuNCAyLjc1IDQ2LjUyIDMuNDcgNzIuMDcgMjMuMjkgMTEuMjggNDAuNzcgMzMuMTYgNDYuMzIgNTkuNTEgNy43MiAyLjI2IDIyLjcxIDMuOTIgNDAuNDkgNC4yMiA3LjUxLTMuNjYgMTYuNS01Ljg1IDI2LjE4LTYuMDQtMS45LTE0LjkxLTUuODYtMjkuMTctMTEuNjUtNDIuNDItMTUuNDQgOC4xLTMwLjkzIDguNjYtMzUuNDcuOTYtNC41Ny03Ljc0IDMuNi0yMS4wNSAxOC4zMi0zMC42Ni04LjY4LTExLjc3LTE4Ljk4LTIyLjMtMzAuNTYtMzEuMDktOS41MSAxNS41OS0yMy4zNiAyNC40NC0zMS4zNiAxOS44Mi04LjA1LTQuNjUtNy4xOS0yMS4xNiAxLjcxLTM3LjI5YTE0Ny40OSAxNDcuNDkgMCAwIDAtMjcuNDUtOS4wOHptLTMyLjQ4IDguNmMtMy4yMyAwLTUuODYgOC44MS02LjA5IDE5LjkzaC0uMDV2MTYuODhjMCA0MS40Mi00OS4wMSA5NS4wNC05My40OSA5NS4wNC01MiAwLTEyMi43NS0xLjQ1LTE1Ni4zNyAyOS4xN3YyLjUxYzkuNDIgMTcuMTIgMjAuNTggMzMuMTcgMzMuMTggNDcuOTdDNDUuNyAzODAuMjYgODQuNzcgMzYwLjQgMTQxLjIgMzYwYzQ1LjY4IDEuMDIgNzkuMDMgMjAuMzMgOTAuNzYgNDAuODcuMDEuMDEtLjAxLjA0IDAgLjA1IDcuNjcgMi4xNCAxNS44NSAzLjIzIDI0LjA0IDMuMjEgOC4xOS4wMiAxNi4zNy0xLjA3IDI0LjA0LTMuMjEuMDEtLjAxLS4wMS0uMDQgMC0uMDUgMTEuNzQtMjAuNTQgNDUuMDgtMzkuODUgOTAuNzYtNDAuODcgNTYuNDMuMzkgOTUuNDkgMjAuMjYgMTA4LjAyIDQxLjM1IDEyLjYtMTQuOCAyMy43Ni0zMC44NiAzMy4xOC00Ny45N3YtMi41MWMtMzMuNjEtMzAuNjItMTA0LjM3LTI5LjE3LTE1Ni4zNy0yOS4xNy00NC40OCAwLTkzLjQ5LTUzLjYyLTkzLjQ5LTk1LjA0di0xNi44OGgtLjA1Yy0uMjMtMTEuMTItMi44Ni0xOS45My02LjA5LTE5Ljkzem0wIDk2LjU5YzIyLjQyIDAgNDAuNiAxOC4xOCA0MC42IDQwLjZzLTE4LjE4IDQwLjY1LTQwLjYgNDAuNjUtNDAuNi0xOC4yMy00MC42LTQwLjY1YzAtMjIuNDIgMTguMTgtNDAuNiA0MC42LTQwLjZ6bTAgNy42NGMtMTguMTkgMC0zMi45NiAxNC43Ny0zMi45NiAzMi45NlMyMzcuODEgMzYwIDI1NiAzNjBzMzIuOTYtMTQuNzcgMzIuOTYtMzIuOTYtMTQuNzctMzIuOTYtMzIuOTYtMzIuOTZ6bTAgNi4xNGMxNC44MSAwIDI2LjgyIDEyLjAxIDI2LjgyIDI2Ljgycy0xMi4wMSAyNi44Mi0yNi44MiAyNi44Mi0yNi44Mi0xMi4wMS0yNi44Mi0yNi44MiAxMi4wMS0yNi44MiAyNi44Mi0yNi44MnptLTExNC44IDY2LjY3Yy0xMC4xOS4wNy0yMS42LjM2LTMwLjUgMS42Ni40MyA0LjQyIDEuNTEgMTguNjMgNy4xMSAyOS43NiA5LjExLTIuNTYgMTguMzYtMy45IDI3LjYyLTMuOSA0MS4yOC45NCA3MS40OCAzNC4zNSA3OC4yNiA3NC40N2wuMTEgNC43YzEwLjQgMS45MSAyMS4xOSAyLjk0IDMyLjIxIDIuOTQgMTEuMDMgMCAyMS44MS0xLjAyIDMyLjIxLTIuOTRsLjExLTQuN2M2Ljc4LTQwLjEyIDM2Ljk4LTczLjUzIDc4LjI2LTc0LjQ3IDkuMjYgMCAxOC41MSAxLjM0IDI3LjYyIDMuOSA1LjYtMTEuMTMgNi42OC0yNS4zNCA3LjExLTI5Ljc2LTguOS0xLjMtMjAuMzItMS41OC0zMC41LTEuNjYtMTguNzYuNDItMzUuMTkgNC4xNy00OC42MSA5LjY3LTEyLjU0IDE2LjAzLTI5LjE2IDMwLjAzLTQ5LjU4IDMzLjA3LS4wOS4wMi0uMTcuMDQtLjI3LjA1LS4wNS4wMS0uMTEuMDQtLjE2LjA1LTUuMjQgMS4wNy0xMC42MyAxLjYtMTYuMTkgMS42LTUuNTUgMC0xMC45NS0uNTMtMTYuMTktMS42LS4wNS0uMDEtLjExLS4wNC0uMTYtLjA1LS4xLS4wMi0uMTctLjA0LS4yNy0uMDUtMjAuNDItMy4wMy0zNy4wMy0xNy4wNC00OS41OC0zMy4wNy0xMy40Mi01LjQ5LTI5Ljg2LTkuMjUtNDguNjEtOS42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2V0UG9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy42IDY0aC0zNjdDMTguNSA2NCAwIDgyLjUgMCAxMDQuNnYxMzUuMkMwIDM2NC41IDk5LjcgNDY0IDIyNC4yIDQ2NGMxMjQgMCAyMjMuOC05OS41IDIyMy44LTIyNC4yVjEwNC42YzAtMjIuNC0xNy43LTQwLjYtNDAuNC00MC42em0tMTYyIDI2OC41Yy0xMi40IDExLjgtMzEuNCAxMS4xLTQyLjQgMEM4OS41IDIyMy42IDg4LjMgMjI3LjQgODguMyAyMDkuM2MwLTE2LjkgMTMuOC0zMC43IDMwLjctMzAuNyAxNyAwIDE2LjEgMy44IDEwNS4yIDg5LjMgOTAuNi04Ni45IDg4LjYtODkuMyAxMDUuNS04OS4zIDE2LjkgMCAzMC43IDEzLjggMzAuNyAzMC43IDAgMTcuOC0yLjkgMTUuNy0xMTQuOCAxMjMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2dDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU3IDhDMTIwIDggOSAxMTkgOSAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTQgOCAyNTcgOHptLTQ5LjUgMzc0LjhMODEuOCAyNTcuMWwxMjUuNy0xMjUuNyAzNS4yIDM1LjQtMjQuMiAyNC4yLTExLjEtMTEuMS03Ny4yIDc3LjIgNzcuMiA3Ny4yIDI2LjYtMjYuNi01My4xLTUyLjkgMjQuNC0yNC40IDc3LjIgNzcuMi03NSA3NS4yem05OS0yLjJsLTM1LjItMzUuMiAyNC4xLTI0LjQgMTEuMSAxMS4xIDc3LjItNzcuMi03Ny4yLTc3LjItMjYuNSAyNi41IDUzLjEgNTIuOS0yNC40IDI0LjQtNzcuMi03Ny4yIDc1LTc1TDQzMi4yIDI1NSAzMDYuNSAzODAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc5LjIgMjMwLjRsMTAyLjQgMTAyLjQtMTAyLjQgMTAyLjRMMCAyNTYgMTc5LjIgNzYuOGw0NC44IDQ0LjgtMjUuNiAyNS42LTE5LjItMTkuMi0xMjggMTI4IDEyOCAxMjggNTEuNS01MS41LTc3LjEtNzYuNSAyNS42LTI1LjZ6TTMzMi44IDc2LjhMMjMwLjQgMTc5LjJsMTAyLjQgMTAyLjQgMjUuNi0yNS42LTc3LjEtNzYuNSA1MS41LTUxLjUgMTI4IDEyOC0xMjggMTI4LTE5LjItMTkuMi0yNS42IDI1LjYgNDQuOCA0NC44TDUxMiAyNTYgMzMyLjggNzYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS41NSAyMzYuMDVMMjQ0IDQwLjQ1YTI4Ljg3IDI4Ljg3IDAgMCAwLTQwLjgxIDBsLTQwLjY2IDQwLjYzIDUxLjUyIDUxLjUyYzI3LjA2LTkuMTQgNTIuNjggMTYuNzcgNDMuMzkgNDMuNjhsNDkuNjYgNDkuNjZjMzQuMjMtMTEuOCA2MS4xOCAzMSAzNS40NyA1Ni42OS0yNi40OSAyNi40OS03MC4yMS0yLjg3LTU2LTM3LjM0TDI0MC4yMiAxOTl2MTIxLjg1YzI1LjMgMTIuNTQgMjIuMjYgNDEuODUgOS4wOCA1NWEzNC4zNCAzNC4zNCAwIDAgMS00OC41NSAwYy0xNy41Ny0xNy42LTExLjA3LTQ2LjkxIDExLjI1LTU2di0xMjNjLTIwLjgtOC41MS0yNC42LTMwLjc0LTE4LjY0LTQ1TDE0Mi41NyAxMDEgOC40NSAyMzUuMTRhMjguODYgMjguODYgMCAwIDAgMCA0MC44MWwxOTUuNjEgMTk1LjZhMjguODYgMjguODYgMCAwIDAgNDAuOCAwbDE5NC42OS0xOTQuNjlhMjguODYgMjguODYgMCAwIDAgMC00MC44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMC41OSAzMzQuMjRjNDguNTcgMy4zMSA1OC45NSAyLjExIDU4Ljk1IDExLjk0IDAgMjAtNjUuNTUgMjAuMDYtNjUuNTUgMS41Mi4wMS01LjA5IDMuMjktOS40IDYuNi0xMy40NnptMjcuOTUtMTE2LjY0Yy0zMi4yOSAwLTMzLjc1IDQ0LjQ3LS43NSA0NC40NyAzMi41MSAwIDMxLjcxLTQ0LjQ3Ljc1LTQ0LjQ3ek00NDggODB2MzUyYTQ4IDQ4IDAgMCAxLTQ4IDQ4SDQ4YTQ4IDQ4IDAgMCAxLTQ4LTQ4VjgwYTQ4IDQ4IDAgMCAxIDQ4LTQ4aDM1MmE0OCA0OCAwIDAgMSA0OCA0OHptLTIyNyA2OS4zMWMwIDE0LjQ5IDguMzggMjIuODggMjIuODYgMjIuODggMTQuNzQgMCAyMy4xMy04LjM5IDIzLjEzLTIyLjg4UzI1OC42MiAxMjcgMjQzLjg4IDEyN2MtMTQuNDggMC0yMi44OCA3Ljg0LTIyLjg4IDIyLjMxek0xOTkuMTggMTk1aC00OS41NWMtMjUtNi41NS04MS41Ni00Ljg1LTgxLjU2IDQ2Ljc1IDAgMTguOCA5LjQgMzIgMjEuODUgMzguMTFDNzQuMjMgMjk0LjIzIDY2LjggMzAxIDY2LjggMzEwLjZjMCA2Ljg3IDIuNzkgMTMuMjIgMTEuMTggMTYuNzYtOC45IDguNC0xNCAxNC40OC0xNCAyNS45MkM2NCAzNzMuMzUgODEuNTMgMzg1IDEyNy41MiAzODVjNDQuMjIgMCA2OS44Ny0xNi41MSA2OS44Ny00NS43MyAwLTM2LjY3LTI4LjIzLTM1LjMyLTk0Ljc3LTM5LjM4bDguMzgtMTMuNDNjMTcgNC43NCA3NC4xOSA2LjIzIDc0LjE5LTQyLjQzIDAtMTEuNjktNC44My0xOS44Mi05LjQtMjUuNjdsMjMuMzgtMS43OHptODQuMzQgMTA5Ljg0bC0xMy0xLjc4Yy0zLjgyLS41MS00LjA3LTEtNC4wNy01LjA5VjE5Mi41MmgtNTIuNmwtMi43OSAyMC41N2MxNS43NSA1LjU1IDE3IDQuODYgMTcgMTAuMTdWMjk4YzAgNS42Mi0uMzEgNC41OC0xNyA2Ljg3djIwLjA2aDcyLjQyek0zODQgMzE1bC02Ljg3LTIyLjM3Yy00MC45MyAxNS4zNy0zNy44NS0xMi40MS0zNy44NS0xNi43M3YtNjAuNzJoMzcuODV2LTI1LjQxaC0zNS44MmMtMi44NyAwLTIgMi41Mi0yLTM4LjYzaC0yNC4xOGMtMi43OSAyNy43LTExLjY4IDM4Ljg4LTM0IDQxLjQydjIyLjYyYzIwLjQ3IDAgMTkuODItLjg1IDE5LjgyIDIuNTR2NjYuNTdjMCAyOC43MiAxMS40MyA0MC45MSA0MS42NyA0MC45MSAxNC40NSAwIDMwLjQ1LTQuODMgNDEuMzgtMTAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNi4yOSAxNTguMzlIMTM3Qzk3IDE0Ny45IDYuNTEgMTUwLjYzIDYuNTEgMjMzLjE4YzAgMzAuMDkgMTUgNTEuMjMgMzUgNjEtMjUuMSAyMy0zNyAzMy44NS0zNyA0OS4yMSAwIDExIDQuNDcgMjEuMTQgMTcuODkgMjYuODFDOC4xMyAzODMuNjEgMCAzOTMuMzUgMCA0MTEuNjVjMCAzMi4xMSAyOC4wNSA1MC44MiAxMDEuNjMgNTAuODIgNzAuNzUgMCAxMTEuNzktMjYuNDIgMTExLjc5LTczLjE4IDAtNTguNjYtNDUuMTYtNTYuNS0xNTEuNjMtNjNsMTMuNDMtMjEuNTVjMjcuMjcgNy41OCAxMTguNyAxMCAxMTguNy02Ny44OSAwLTE4LjctNy43My0zMS43MS0xNS00MS4wN2wzNy40MS0yLjg0em0tNjMuNDIgMjQxLjljMCAzMi4wNi0xMDQuODkgMzIuMS0xMDQuODkgMi40MyAwLTguMTQgNS4yNy0xNSAxMC41Ny0yMS41NCA3Ny43MSA1LjMgOTQuMzIgMy4zNyA5NC4zMiAxOS4xMXptLTUwLjgxLTEzNC41OGMtNTIuOCAwLTUwLjQ2LTcxLjE2IDEuMi03MS4xNiA0OS41NCAwIDUwLjgyIDcxLjE2LTEuMiA3MS4xNnptMTMzLjMgMTAwLjUxdi0zMi4xYzI2Ljc1LTMuNjYgMjcuMjQtMiAyNy4yNC0xMVYyMDMuNjFjMC04LjUtMi4wNS03LjM4LTI3LjI0LTE2LjI2bDQuNDctMzIuOTJIMzI0djE2OC43MWMwIDYuNTEuNCA3LjMyIDYuNTEgOC4xNGwyMC43MyAyLjg0djMyLjF6bTUyLjQ1LTI0NC4zMWMtMjMuMTcgMC0zNi41OS0xMy40My0zNi41OS0zNi42MXMxMy40Mi0zNS43NyAzNi41OS0zNS43N2MyMy41OCAwIDM3IDEyLjYyIDM3IDM1Ljc3cy0xMy40MiAzNi42MS0zNyAzNi42MXpNNTEyIDM1MC40NmMtMTcuNDkgOC41My00My4xIDE2LjI2LTY2LjI4IDE2LjI2LTQ4LjM4IDAtNjYuNjctMTkuNS02Ni42Ny02NS40NlYxOTQuNzVjMC01LjQyIDEuMDUtNC4wNi0zMS43MS00LjA2VjE1NC41YzM1Ljc4LTQuMDcgNTAtMjIgNTQuNDctNjYuMjdoMzguNjNjMCA2NS44My0xLjM0IDYxLjgxIDMuMjYgNjEuODFINTAxdjQwLjY1aC02MC41NnY5Ny4xNWMwIDYuOTItNC45MiA1MS40MSA2MC41NyAyNi44NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0aHViQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xIDMyOC43YzAgMjAuOS0xMC45IDU1LjEtMzYuNyA1NS4xcy0zNi43LTM0LjItMzYuNy01NS4xIDEwLjktNTUuMSAzNi43LTU1LjEgMzYuNyAzNC4yIDM2LjcgNTUuMXpNNDgwIDI3OC4yYzAgMzEuOS0zLjIgNjUuNy0xNy41IDk1LTM3LjkgNzYuNi0xNDIuMSA3NC44LTIxNi43IDc0LjgtNzUuOCAwLTE4Ni4yIDIuNy0yMjUuNi03NC44LTE0LjYtMjktMjAuMi02My4xLTIwLjItOTUgMC00MS45IDEzLjktODEuNSA0MS41LTExMy42LTUuMi0xNS44LTcuNy0zMi40LTcuNy00OC44IDAtMjEuNSA0LjktMzIuMyAxNC42LTUxLjggNDUuMyAwIDc0LjMgOSAxMDguOCAzNiAyOS02LjkgNTguOC0xMCA4OC43LTEwIDI3IDAgNTQuMiAyLjkgODAuNCA5LjIgMzQtMjYuNyA2My0zNS4yIDEwNy44LTM1LjIgOS44IDE5LjUgMTQuNiAzMC4zIDE0LjYgNTEuOCAwIDE2LjQtMi42IDMyLjctNy43IDQ4LjIgMjcuNSAzMi40IDM5IDcyLjMgMzkgMTE0LjJ6bS02NC4zIDUwLjVjMC00My45LTI2LjctODIuNi03My41LTgyLjYtMTguOSAwLTM3IDMuNC01NiA2LTE0LjkgMi4zLTI5LjggMy4yLTQ1LjEgMy4yLTE1LjIgMC0zMC4xLS45LTQ1LjEtMy4yLTE4LjctMi42LTM3LTYtNTYtNi00Ni44IDAtNzMuNSAzOC43LTczLjUgODIuNiAwIDg3LjggODAuNCAxMDEuMyAxNTAuNCAxMDEuM2g0OC4yYzcwLjMgMCAxNTAuNi0xMy40IDE1MC42LTEwMS4zem0tODIuNi01NS4xYy0yNS44IDAtMzYuNyAzNC4yLTM2LjcgNTUuMXMxMC45IDU1LjEgMzYuNyA1NS4xIDM2LjctMzQuMiAzNi43LTU1LjEtMTAuOS01NS4xLTM2LjctNTUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0aHViU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI3Ny4zIDQxNS43Yy04LjQgMS41LTExLjUtMy43LTExLjUtOCAwLTUuNC4yLTMzIC4yLTU1LjMgMC0xNS42LTUuMi0yNS41LTExLjMtMzAuNyAzNy00LjEgNzYtOS4yIDc2LTczLjEgMC0xOC4yLTYuNS0yNy4zLTE3LjEtMzkgMS43LTQuMyA3LjQtMjItMS43LTQ1LTEzLjktNC4zLTQ1LjcgMTcuOS00NS43IDE3LjktMTMuMi0zLjctMjcuNS01LjYtNDEuNi01LjYtMTQuMSAwLTI4LjQgMS45LTQxLjYgNS42IDAgMC0zMS44LTIyLjItNDUuNy0xNy45LTkuMSAyMi45LTMuNSA0MC42LTEuNyA0NS0xMC42IDExLjctMTUuNiAyMC44LTE1LjYgMzkgMCA2My42IDM3LjMgNjkgNzQuMyA3My4xLTQuOCA0LjMtOS4xIDExLjctMTAuNiAyMi4zLTkuNSA0LjMtMzMuOCAxMS43LTQ4LjMtMTMuOS05LjEtMTUuOC0yNS41LTE3LjEtMjUuNS0xNy4xLTE2LjItLjItMS4xIDEwLjItMS4xIDEwLjIgMTAuOCA1IDE4LjQgMjQuMiAxOC40IDI0LjIgOS43IDI5LjcgNTYuMSAxOS43IDU2LjEgMTkuNyAwIDEzLjkuMiAzNi41LjIgNDAuNiAwIDQuMy0zIDkuNS0xMS41IDgtNjYtMjIuMS0xMTIuMi04NC45LTExMi4yLTE1OC4zIDAtOTEuOCA3MC4yLTE2MS41IDE2Mi0xNjEuNVMzODggMTY1LjYgMzg4IDI1Ny40Yy4xIDczLjQtNDQuNyAxMzYuMy0xMTAuNyAxNTguM3ptLTk4LjEtNjEuMWMtMS45LjQtMy43LS40LTMuOS0xLjctLjItMS41IDEuMS0yLjggMy0zLjIgMS45LS4yIDMuNy42IDMuOSAxLjkuMyAxLjMtMSAyLjYtMyAzem0tOS41LS45YzAgMS4zLTEuNSAyLjQtMy41IDIuNC0yLjIuMi0zLjctLjktMy43LTIuNCAwLTEuMyAxLjUtMi40IDMuNS0yLjQgMS45LS4yIDMuNy45IDMuNyAyLjR6bS0xMy43LTEuMWMtLjQgMS4zLTIuNCAxLjktNC4xIDEuMy0xLjktLjQtMy4yLTEuOS0yLjgtMy4yLjQtMS4zIDIuNC0xLjkgNC4xLTEuNSAyIC42IDMuMyAyLjEgMi44IDMuNHptLTEyLjMtNS40Yy0uOSAxLjEtMi44LjktNC4zLS42LTEuNS0xLjMtMS45LTMuMi0uOS00LjEuOS0xLjEgMi44LS45IDQuMy42IDEuMyAxLjMgMS44IDMuMy45IDQuMXptLTkuMS05LjFjLS45LjYtMi42IDAtMy43LTEuNXMtMS4xLTMuMiAwLTMuOWMxLjEtLjkgMi44LS4yIDMuNyAxLjMgMS4xIDEuNSAxLjEgMy4zIDAgNC4xem0tNi41LTkuN2MtLjkuOS0yLjQuNC0zLjUtLjYtMS4xLTEuMy0xLjMtMi44LS40LTMuNS45LS45IDIuNC0uNCAzLjUuNiAxLjEgMS4zIDEuMyAyLjguNCAzLjV6bS02LjctNy40Yy0uNC45LTEuNyAxLjEtMi44LjQtMS4zLS42LTEuOS0xLjctMS41LTIuNi40LS42IDEuNS0uOSAyLjgtLjQgMS4zLjcgMS45IDEuOCAxLjUgMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaXRodWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY1LjkgMzk3LjRjMCAyLTIuMyAzLjYtNS4yIDMuNi0zLjMuMy01LjYtMS4zLTUuNi0zLjYgMC0yIDIuMy0zLjYgNS4yLTMuNiAzLS4zIDUuNiAxLjMgNS42IDMuNnptLTMxLjEtNC41Yy0uNyAyIDEuMyA0LjMgNC4zIDQuOSAyLjYgMSA1LjYgMCA2LjItMnMtMS4zLTQuMy00LjMtNS4yYy0yLjYtLjctNS41LjMtNi4yIDIuM3ptNDQuMi0xLjdjLTIuOS43LTQuOSAyLjYtNC42IDQuOS4zIDIgMi45IDMuMyA1LjkgMi42IDIuOS0uNyA0LjktMi42IDQuNi00LjYtLjMtMS45LTMtMy4yLTUuOS0yLjl6TTI0NC44IDhDMTA2LjEgOCAwIDExMy4zIDAgMjUyYzAgMTEwLjkgNjkuOCAyMDUuOCAxNjkuNSAyMzkuMiAxMi44IDIuMyAxNy4zLTUuNiAxNy4zLTEyLjEgMC02LjItLjMtNDAuNC0uMy02MS40IDAgMC03MCAxNS04NC43LTI5LjggMCAwLTExLjQtMjkuMS0yNy44LTM2LjYgMCAwLTIyLjktMTUuNyAxLjYtMTUuNCAwIDAgMjQuOSAyIDM4LjYgMjUuOCAyMS45IDM4LjYgNTguNiAyNy41IDcyLjkgMjAuOSAyLjMtMTYgOC44LTI3LjEgMTYtMzMuNy01NS45LTYuMi0xMTIuMy0xNC4zLTExMi4zLTExMC41IDAtMjcuNSA3LjYtNDEuMyAyMy42LTU4LjktMi42LTYuNS0xMS4xLTMzLjMgMi42LTY3LjkgMjAuOS02LjUgNjkgMjcgNjkgMjcgMjAtNS42IDQxLjUtOC41IDYyLjgtOC41czQyLjggMi45IDYyLjggOC41YzAgMCA0OC4xLTMzLjYgNjktMjcgMTMuNyAzNC43IDUuMiA2MS40IDIuNiA2Ny45IDE2IDE3LjcgMjUuOCAzMS41IDI1LjggNTguOSAwIDk2LjUtNTguOSAxMDQuMi0xMTQuOCAxMTAuNSA5LjIgNy45IDE3IDIyLjkgMTcgNDYuNCAwIDMzLjctLjMgNzUuNC0uMyA4My42IDAgNi41IDQuNiAxNC40IDE3LjMgMTIuMUM0MjguMiA0NTcuOCA0OTYgMzYyLjkgNDk2IDI1MiA0OTYgMTEzLjMgMzgzLjUgOCAyNDQuOCA4ek05Ny4yIDM1Mi45Yy0xLjMgMS0xIDMuMy43IDUuMiAxLjYgMS42IDMuOSAyLjMgNS4yIDEgMS4zLTEgMS0zLjMtLjctNS4yLTEuNi0xLjYtMy45LTIuMy01LjItMXptLTEwLjgtOC4xYy0uNyAxLjMuMyAyLjkgMi4zIDMuOSAxLjYgMSAzLjYuNyA0LjMtLjcuNy0xLjMtLjMtMi45LTIuMy0zLjktMi0uNi0zLjYtLjMtNC4zLjd6bTMyLjQgMzUuNmMtMS42IDEuMy0xIDQuMyAxLjMgNi4yIDIuMyAyLjMgNS4yIDIuNiA2LjUgMSAxLjMtMS4zLjctNC4zLTEuMy02LjItMi4yLTIuMy01LjItMi42LTYuNS0xem0tMTEuNC0xNC43Yy0xLjYgMS0xLjYgMy42IDAgNS45IDEuNiAyLjMgNC4zIDMuMyA1LjYgMi4zIDEuNi0xLjMgMS42LTMuOSAwLTYuMi0xLjQtMi4zLTQtMy4zLTUuNi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaXRrcmFrZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY1LjcgMTE4LjFjLTIuMy02LjEtOS4zLTkuMi0xNS4zLTYuNi01LjcgMi40LTguNSA4LjktNi4zIDE0LjYgMTAuOSAyOSAxNi45IDYwLjUgMTYuOSA5My4zIDAgMTM0LjYtMTAwLjMgMjQ1LjctMjMwLjIgMjYyLjdWMzU4LjRjNy45LTEuNSAxNS41LTMuNiAyMy02LjJ2MTA0YzEwNi43LTI1LjkgMTg1LjktMTIyLjEgMTg1LjktMjM2LjggMC05MS44LTUwLjgtMTcxLjgtMTI1LjgtMjEzLjMtNS43LTMuMi0xMy0uOS0xNS45IDUtMi43IDUuNS0uNiAxMi4yIDQuNyAxNS4xIDY3LjkgMzcuNiAxMTMuOSAxMTAgMTEzLjkgMTkzLjIgMCA5My4zLTU3LjkgMTczLjEtMTM5LjggMjA1LjR2LTkyLjJjMTQuMi00LjUgMjQuOS0xNy43IDI0LjktMzMuNSAwLTEzLjEtNi44LTI0LjQtMTcuMy0zMC41IDguMy03OS41IDQ0LjUtNTguNiA0NC41LTgzLjlWMTcwYzAtMzgtODcuOS0xNjEuOC0xMjktMTY0LjctMi41LS4yLTUtLjItNy42IDBDMjUxLjEgOC4zIDE2My4yIDEzMiAxNjMuMiAxNzB2MTQuOGMwIDI1LjMgMzYuMyA0LjMgNDQuNSA4My45LTEwLjYgNi4xLTE3LjMgMTcuNC0xNy4zIDMwLjUgMCAxNS44IDEwLjYgMjkgMjQuOCAzMy41djkyLjJjLTgxLjktMzIuMi0xMzkuOC0xMTItMTM5LjgtMjA1LjQgMC04My4xIDQ2LTE1NS41IDExMy45LTE5My4yIDUuNC0zIDcuNC05LjYgNC43LTE1LjEtMi45LTUuOS0xMC4xLTguMi0xNS45LTUtNzUgNDEuNS0xMjUuOCAxMjEuNS0xMjUuOCAyMTMuMyAwIDExNC43IDc5LjIgMjEwLjggMTg1LjkgMjM2Ljh2LTEwNGM3LjYgMi41IDE1LjEgNC42IDIzIDYuMnYxMjMuN0MxMzEuNCA0NjUuMiAzMSAzNTQuMSAzMSAyMTkuNWMwLTMyLjggNi02NC4zIDE2LjktOTMuMyAyLjItNS44LS42LTEyLjItNi4zLTE0LjYtNi0yLjYtMTMgLjQtMTUuMyA2LjZDMTQuNSAxNDkuNyA4IDE4My44IDggMjE5LjVjMCAxNTUuMSAxMjIuNiAyODEuNiAyNzYuMyAyODcuOFYzNjEuNGM2LjguNCAxNSAuNSAyMy40IDB2MTQ1LjhDNDYxLjQgNTAxLjEgNTg0IDM3NC42IDU4NCAyMTkuNWMwLTM1LjctNi41LTY5LjgtMTguMy0xMDEuNHpNMzY1LjkgMjc1LjVjMTMgMCAyMy43IDEwLjUgMjMuNyAyMy43IDAgMTMuMS0xMC42IDIzLjctMjMuNyAyMy43LTEzIDAtMjMuNy0xMC41LTIzLjctMjMuNyAwLTEzLjEgMTAuNi0yMy43IDIzLjctMjMuN3ptLTEzOS44IDQ3LjNjLTEzLjIgMC0yMy43LTEwLjctMjMuNy0yMy43czEwLjUtMjMuNyAyMy43LTIzLjdjMTMuMSAwIDIzLjcgMTAuNiAyMy43IDIzLjcgMCAxMy0xMC41IDIzLjctMjMuNyAyMy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaXRsYWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA1LjIgMjQuOWMtMy4xLTguOS0xNS43LTguOS0xOC45IDBMMjkuOCAxOTkuN2gxMzJjLS4xIDAtNTYuNi0xNzQuOC01Ni42LTE3NC44ek0uOSAyODcuN2MtMi42IDggLjMgMTYuOSA3LjEgMjJsMjQ3LjkgMTg0LTIyNi4yLTI5NHptMTYwLjgtODhsOTQuMyAyOTQgOTQuMy0yOTR6bTM0OS40IDg4bC0yOC44LTg4LTIyNi4zIDI5NCAyNDcuOS0xODRjNi45LTUuMSA5LjctMTQgNy4yLTIyek00MjUuNyAyNC45Yy0zLjEtOC45LTE1LjctOC45LTE4LjkgMGwtNTYuNiAxNzQuOGgxMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ni40IDMyMi41SDE2VjBoNTAuNHYzMjIuNXpNMTY2LjkgNzYuMWgtNTAuNFY1MTJoNTAuNFY3Ni4xem0xMDAuNiAwaC01MC40VjUxMmg1MC40Vjc2LjF6TTM2OCA3NmgtNTAuNHYyNDdIMzY4Vjc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGlkZUcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3LjEgMjExLjJjLTMuNS0xLjQtMTEuNi0zLjgtMTUuNC0zLjgtMzcuMSAwLTYyLjIgMTYuOC05My41IDM0LjVsLS45LS45YzctNDcuMyAyMy41LTkxLjkgMjMuNS0xNDAuNEMzMjAuOCAyOS4xIDI4Mi42IDAgMjEyLjQgMCA5Ny4zIDAgMzkgMTEzLjcgMzkgMTk4LjQgMzkgMjg2LjMgOTAuMyAzMzUgMTc3LjYgMzM1YzEyIDAgMTEtMSAxMSAzLjgtMTYuOSAxMjguOS05MC44IDEzMy4xLTkwLjggOTQuNiAwLTM5LjIgNDUtNTguNiA0NS41LTYxLS4zLTEyLjItNDctMjcuNi01OC45LTI3LjYtMzMuOS4xLTUyLjQgNTEuMi01Mi40IDc5LjNDMzIgNDc2IDY0LjggNTEyIDExNy41IDUxMmM3Ny40IDAgMTM0LTc3LjggMTUxLjQtMTQ1LjQgMTUuMS02MC41IDExLjItNjMuMyAxOS43LTY3LjYgMzIuMi0xNi4yIDU3LjUtMjcgOTMuOC0yNyAxNy44IDAgMzAuNSAzLjcgNTguOSA4LjQgMi45IDAgNi43LTIuOSA2LjctNS44IDAtOC0zMy40LTYwLjUtNDAuOS02My40em0tMTc1LjMtODQuNGMtOS4zIDQ0LjctMTguNiA4OS42LTI3LjggMTM0LjMtMi4zIDEwLjItMTMuMyA3LjgtMjIgNy44LTM4LjMgMC00OS00MS44LTQ5LTczLjEgMC00NyAxOC0xMDkuMyA2MS44LTEzMy40IDctNC4xIDE0LjgtNi43IDIyLjYtNi43IDE4LjYgMCAyMCAxMy4zIDIwIDI4LjctLjEgMTQuMy0yLjcgMjguNS01LjYgNDIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUyLjggMTQ4LjZjMCA4LjgtMS42IDE3LjctMy40IDI2LjQtNS44IDI3LjgtMTEuNiA1NS44LTE3LjMgODMuNi0xLjQgNi4zLTguMyA0LjktMTMuNyA0LjktMjMuOCAwLTMwLjUtMjYtMzAuNS00NS41IDAtMjkuMyAxMS4yLTY4LjEgMzguNS04My4xIDQuMy0yLjUgOS4yLTQuMiAxNC4xLTQuMiAxMS40IDAgMTIuMyA4LjMgMTIuMyAxNy45ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS02NCAxODdjMC01LjEtMjAuOC0zNy43LTI1LjUtMzkuNS0yLjItLjktNy4yLTIuMy05LjYtMi4zLTIzLjEgMC0zOC43IDEwLjUtNTguMiAyMS41bC0uNS0uNWM0LjMtMjkuNCAxNC42LTU3LjIgMTQuNi04Ny40IDAtNDQuNi0yMy44LTYyLjctNjcuNS02Mi43LTcxLjcgMC0xMDggNzAuOC0xMDggMTIzLjUgMCA1NC43IDMyIDg1IDg2LjMgODUgNy41IDAgNi45LS42IDYuOSAyLjMtMTAuNSA4MC4zLTU2LjUgODIuOS01Ni41IDU4LjkgMC0yNC40IDI4LTM2LjUgMjguMy0zOC0uMi03LjYtMjkuMy0xNy4yLTM2LjctMTcuMi0yMS4xIDAtMzIuNyAzMy0zMi43IDUwLjYgMCAzMi4zIDIwLjQgNTQuNyA1My4zIDU0LjcgNDguMiAwIDgzLjQtNDkuNyA5NC4zLTkxLjcgOS40LTM3LjcgNy0zOS40IDEyLjMtNDIuMSAyMC0xMC4xIDM1LjgtMTYuOCA1OC40LTE2LjggMTEuMSAwIDE5IDIuMyAzNi43IDUuMiAxLjguMSA0LjEtMS43IDQuMS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvZm9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDAwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjQgMzE5LjhoLTEzLjJ2MzQuN2MtMjQuNSAyMy4xLTU2LjMgMzUuOC04OS45IDM1LjgtNzMuMiAwLTEzMi40LTYwLjItMTMyLjQtMTM0LjQgMC03NC4xIDU5LjItMTM0LjQgMTMyLjQtMTM0LjQgMzUuMyAwIDY4LjYgMTQgOTMuNiAzOS40bDYyLjMtNjMuM0MzMzUgNTUuMyAyNzkuNyAzMiAyMjAuNyAzMiA5OCAzMiAwIDEzMi42IDAgMjU2YzAgMTIyLjUgOTcgMjI0IDIyMC43IDIyNCA2My4yIDAgMTI0LjUtMjYuMiAxNzEtODIuNS0yLTI3LjYtMTMuNC03Ny43LTY3LjctNzcuN3ptLTEyLjEtMTEyLjVIMjA1LjZ2ODlIMzI0YzMzLjUgMCA2MC41IDE1LjEgNzYgNDEuOHYtMzAuNmMwLTY1LjItNDAuNC0xMDAuMi04OC4xLTEwMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29kcmVhZHNHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjYgNDAzLjNoMi44YzEyLjcgMCAyNS41IDAgMzguMi4xIDEuNiAwIDMuMS0uNCAzLjYgMi4xIDcuMSAzNC45IDMwIDU0LjYgNjIuOSA2My45IDI2LjkgNy42IDU0LjEgNy44IDgxLjMgMS44IDMzLjgtNy40IDU2LTI4LjMgNjgtNjAuNCA4LTIxLjUgMTAuNy00My44IDExLTY2LjUuMS01LjguMy00Ny0uMi01Mi44bC0uOS0uM2MtLjggMS41LTEuNyAyLjktMi41IDQuNC0yMi4xIDQzLjEtNjEuMyA2Ny40LTEwNS40IDY5LjEtMTAzIDQtMTY5LjQtNTctMTcyLTE3Ni4yLS41LTIzLjcgMS44LTQ2LjkgOC4zLTY5LjdDNTguMyA0Ny43IDExMi4zLjYgMTkxLjYgMGM2MS4zLS40IDEwMS41IDM4LjcgMTE2LjIgNzAuMy41IDEuMSAxLjMgMi4zIDIuNCAxLjlWMTAuNmg0NC4zYzAgMjgwLjMuMSAzMzIuMi4xIDMzMi4yLS4xIDc4LjUtMjYuNyAxNDMuNy0xMDMgMTYyLjItNjkuNSAxNi45LTE1OSA0LjgtMTk2LTU3LjItOC0xMy41LTExLjgtMjguMy0xMy00NC41ek0xODguOSAzNi41Yy01Mi41LS41LTEwOC41IDQwLjctMTE1IDEzMy44LTQuMSA1OSAxNC44IDEyMi4yIDcxLjUgMTQ4LjYgMjcuNiAxMi45IDc0LjMgMTUgMTA4LjMtOC43IDQ3LjYtMzMuMiA2Mi43LTk3IDU0LjgtMTU0LTkuNy03MS4xLTQ3LjgtMTIwLTExOS42LTExOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29kcmVhZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk5LjkgMTkxLjJjNS4xIDM3LjMtNC43IDc5LTM1LjkgMTAwLjctMjIuMyAxNS41LTUyLjggMTQuMS03MC44IDUuNy0zNy4xLTE3LjMtNDkuNS01OC42LTQ2LjgtOTcuMiA0LjMtNjAuOSA0MC45LTg3LjkgNzUuMy04Ny41IDQ2LjktLjIgNzEuOCAzMS44IDc4LjIgNzguM3pNNDQ4IDg4djMzNmMwIDMwLjktMjUuMSA1Ni01NiA1Nkg1NmMtMzAuOSAwLTU2LTI1LjEtNTYtNTZWODhjMC0zMC45IDI1LjEtNTYgNTYtNTZoMzM2YzMwLjkgMCA1NiAyNS4xIDU2IDU2ek0zMzAgMzEzLjJzLS4xLTM0LS4xLTIxNy4zaC0yOXY0MC4zYy0uOC4zLTEuMi0uNS0xLjYtMS4yLTkuNi0yMC43LTM1LjktNDYuMy03Ni00Ni01MS45LjQtODcuMiAzMS4yLTEwMC42IDc3LjgtNC4zIDE0LjktNS44IDMwLjEtNS41IDQ1LjYgMS43IDc3LjkgNDUuMSAxMTcuOCAxMTIuNCAxMTUuMiAyOC45LTEuMSA1NC41LTE3IDY5LTQ1LjIuNS0xIDEuMS0xLjkgMS43LTIuOS4yLjEuNC4xLjYuMi4zIDMuOC4yIDMwLjcuMSAzNC41LS4yIDE0LjgtMiAyOS41LTcuMiA0My41LTcuOCAyMS0yMi4zIDM0LjctNDQuNSAzOS41LTE3LjggMy45LTM1LjYgMy44LTUzLjItMS4yLTIxLjUtNi4xLTM2LjUtMTktNDEuMS00MS44LS4zLTEuNi0xLjMtMS4zLTIuMy0xLjNoLTI2LjhjLjggMTAuNiAzLjIgMjAuMyA4LjUgMjkuMiAyNC4yIDQwLjUgODIuNyA0OC41IDEyOC4yIDM3LjQgNDkuOS0xMi4zIDY3LjMtNTQuOSA2Ny40LTEwNi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVEcml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzkgMzE0LjlMMTc1LjQgMzJoMTYxLjJsMTYzLjYgMjgyLjlIMzM5em0tMTM3LjUgMjMuNkwxMjAuOSA0ODBoMzEwLjVMNTEyIDMzOC41SDIwMS41ek0xNTQuMSA2Ny40TDAgMzM4LjUgODAuNiA0ODAgMjM3IDIwOC44IDE1NC4xIDY3LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuNzIsMjE1djQxLjI1aDU3LjFhNDkuNjYsNDkuNjYsMCwwLDEtMjEuMTQsMzIuNmMtOS41NCw2LjU1LTIxLjcyLDEwLjI4LTM2LDEwLjI4LTI3LjYsMC01MC45My0xOC45MS01OS4zLTQ0LjIyYTY1LjYxLDY1LjYxLDAsMCwxLDAtNDFsMCwwYzguMzctMjUuNDYsMzEuNy00NC4zNyw1OS4zLTQ0LjM3YTU2LjQzLDU2LjQzLDAsMCwxLDQwLjUxLDE2LjA4TDE3Ni40NywxNTVhMTAxLjI0LDEwMS4yNCwwLDAsMC03MC43NS0yNy44NCwxMDUuNTUsMTA1LjU1LDAsMCwwLTk0LjM4LDU5LjExLDEwNy42NCwxMDcuNjQsMCwwLDAsMCw5Ni4xOHYuMTVhMTA1LjQxLDEwNS40MSwwLDAsMCw5NC4zOCw1OWMyOC40NywwLDUyLjU1LTkuNTMsNzAtMjUuOTEsMjAtMTguNjEsMzEuNDEtNDYuMTUsMzEuNDEtNzguOTFBMTMzLjc2LDEzMy43NiwwLDAsMCwyMDUuMzgsMjE1Wm0zODkuNDEtNGMtMTAuMTMtOS4zOC0yMy45My0xNC4xNC00MS4zOS0xNC4xNC0yMi40NiwwLTM5LjM0LDguMzQtNTAuNSwyNC44NmwyMC44NSwxMy4yNnExMS40NS0xNywzMS4yNi0xN2EzNC4wNSwzNC4wNSwwLDAsMSwyMi43NSw4Ljc5QTI4LjE0LDI4LjE0LDAsMCwxLDQ4Ny43OSwyNDh2NS41MWMtOS4xLTUuMDctMjAuNTUtNy43NS0zNC42NC03Ljc1LTE2LjQ0LDAtMjkuNjUsMy44OC0zOS40OSwxMS43N3MtMTQuODIsMTguMzEtMTQuODIsMzEuNTZhMzkuNzQsMzkuNzQsMCwwLDAsMTMuOTQsMzEuMjdjOS4yNSw4LjM0LDIxLDEyLjUxLDM0Ljc5LDEyLjUxLDE2LjI5LDAsMjkuMjEtNy4zLDM5LTIxLjg5aDF2MTcuNzJoMjIuNjFWMjUwQzUxMC4yNSwyMzMuNDUsNTA1LjI2LDIyMC4zNCw0OTUuMTMsMjExWk00NzUuOSwzMDAuM2EzNy4zMiwzNy4zMiwwLDAsMS0yNi41NywxMS4xNkEyOC42MSwyOC42MSwwLDAsMSw0MzEsMzA1LjIxYTE5LjQxLDE5LjQxLDAsMCwxLTcuNzctMTUuNjNjMC03LDMuMjItMTIuODEsOS41NC0xNy40MnMxNC41My03LDI0LjA3LTdDNDcwLDI2NSw0ODAuMywyNjgsNDg3LjY0LDI3My45NCw0ODcuNjQsMjg0LjA3LDQ4My42OCwyOTIuODUsNDc1LjksMzAwLjNabS05My42NS0xNDJBNTUuNzEsNTUuNzEsMCwwLDAsMzQxLjc0LDE0MkgyNzkuMDdWMzI4Ljc0SDMwMi43VjI1My4xaDM5YzE2LDAsMjkuNS01LjM2LDQwLjUxLTE1LjkzLjg4LS44OSwxLjc2LTEuNzksMi42NS0yLjY4QTU0LjQ1LDU0LjQ1LDAsMCwwLDM4Mi4yNSwxNTguMjZabS0xNi41OCw2Mi4yM2EzMC42NSwzMC42NSwwLDAsMS0yMy4zNCw5LjY4SDMwMi43VjE2NWgzOS42M2EzMiwzMiwwLDAsMSwyMi42LDkuMjNBMzMuMTgsMzMuMTgsMCwwLDEsMzY1LjY3LDIyMC40OVpNNjE0LjMxLDIwMSw1NzcuNzcsMjkyLjdoLS40NUw1MzkuOSwyMDFINTE0LjIxTDU2NiwzMjAuNTVsLTI5LjM1LDY0LjMySDU2MUw2NDAsMjAxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNS4zIDIzNC4zTDEwNC42IDEzbDI4MC44IDE2MS4yLTYwLjEgNjAuMXpNNDcgMEMzNCA2LjggMjUuMyAxOS4yIDI1LjMgMzUuM3Y0NDEuM2MwIDE2LjEgOC43IDI4LjUgMjEuNyAzNS4zbDI1Ni42LTI1Nkw0NyAwem00MjUuMiAyMjUuNmwtNTguOS0zNC4xLTY1LjcgNjQuNSA2NS43IDY0LjUgNjAuMS0zNC4xYzE4LTE0LjMgMTgtNDYuNS0xLjItNjAuOHpNMTA0LjYgNDk5bDI4MC44LTE2MS4yLTYwLjEtNjAuMUwxMDQuNiA0OTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsdXNHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Ni4wNjEgMjI4LjQ5NmMxLjgzNCA5LjY5MiAzLjE0MyAxOS4zODQgMy4xNDMgMzEuOTU2QzM4OS4yMDQgMzcwLjIwNSAzMTUuNTk5IDQ0OCAyMDQuOCA0NDhjLTEwNi4wODQgMC0xOTItODUuOTE1LTE5Mi0xOTJzODUuOTE2LTE5MiAxOTItMTkyYzUxLjg2NCAwIDk1LjA4MyAxOC44NTkgMTI4LjYxMSA1MC4yOTJsLTUyLjEyNiA1MC4wM2MtMTQuMTQ1LTEzLjYyMS0zOS4wMjgtMjkuNTk5LTc2LjQ4NS0yOS41OTktNjUuNDg0IDAtMTE4LjkyIDU0LjIyMS0xMTguOTIgMTIxLjI3NyAwIDY3LjA1NiA1My40MzYgMTIxLjI3NyAxMTguOTIgMTIxLjI3NyA3NS45NjEgMCAxMDQuNTEzLTU0Ljc0NSAxMDguOTY1LTgyLjc3M0gyMDQuOHYtNjYuMDA5aDE4MS4yNjF6bTE4NS40MDYgNi40MzdWMTc5LjJoLTU2LjAwMXY1NS43MzNoLTU1LjczM3Y1Ni4wMDFoNTUuNzMzdjU1LjczM2g1Ni4wMDF2LTU1LjczM0g2MjcuMnYtNTYuMDAxaC01NS43MzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsdXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTY0IDM1NmMtNTUuMyAwLTEwMC00NC43LTEwMC0xMDBzNDQuNy0xMDAgMTAwLTEwMGMyNyAwIDQ5LjUgOS44IDY3IDI2LjJsLTI3LjEgMjYuMWMtNy40LTcuMS0yMC4zLTE1LjQtMzkuOC0xNS40LTM0LjEgMC02MS45IDI4LjItNjEuOSA2My4yIDAgMzQuOSAyNy44IDYzLjIgNjEuOSA2My4yIDM5LjYgMCA1NC40LTI4LjUgNTYuOC00My4xSDE2NHYtMzQuNGg5NC40YzEgNSAxLjYgMTAuMSAxLjYgMTYuNiAwIDU3LjEtMzguMyA5Ny42LTk2IDk3LjZ6bTIyMC04MS44aC0yOXYyOWgtMjkuMnYtMjloLTI5VjI0NWgyOXYtMjlIMzU1djI5aDI5djI5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDhDMTE5LjEsOCw4LDExOS4xLDgsMjU2UzExOS4xLDUwNCwyNTYsNTA0LDUwNCwzOTIuOSw1MDQsMjU2LDM5Mi45LDgsMjU2LDhaTTE4NS4zLDM4MGExMjQsMTI0LDAsMCwxLDAtMjQ4YzMxLjMsMCw2MC4xLDExLDgzLDMyLjNsLTMzLjYsMzIuNmMtMTMuMi0xMi45LTMxLjMtMTkuMS00OS40LTE5LjEtNDIuOSwwLTc3LjIsMzUuNS03Ny4yLDc4LjFTMTQyLjMsMzM0LDE4NS4zLDMzNGMzMi42LDAsNjQuOS0xOS4xLDcwLjEtNTMuM0gxODUuM1YyMzguMUgzMDIuMmExMDkuMiwxMDkuMiwwLDAsMSwxLjksMjAuN2MwLDcwLjgtNDcuNSwxMjEuMi0xMTguOCwxMjEuMlpNNDE1LjUsMjczLjh2MzUuNUgzODBWMjczLjhIMzQ0LjVWMjM4LjNIMzgwVjIwMi44aDM1LjV2MzUuNWgzNS4ydjM1LjVaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTYuOCAxMjYuOGMzNy42IDYwLjYgNjQuMiAxMTMuMSA4NC4zIDE2Mi41LTguMyAzMy44LTE4LjggNjYuNS0zMS4zIDk4LjMtMTMuMi01Mi4zLTI2LjUtMTAxLjMtNTYtMTQ4LjUgNi41LTM2LjQgMi4zLTczLjYgMy0xMTIuM3pNMTA5LjMgMjAwSDE2LjFjLTYuNSAwLTEwLjUgNy41LTYuNSAxMi43QzUxLjggMjY3IDgxLjMgMzMwLjUgMTAxLjMgNDAwaDEwMy41Yy0xNi4yLTY5LjctMzguNy0xMzMuNy04Mi41LTE5My41LTMtNC04LTYuNS0xMy02LjV6bTQ3LjgtODhjNjguNSAxMDggMTMwIDIzNC41IDEzOC4yIDM2OEg0MDljLTEyLTEzOC02OC40LTI2NS0xNDMuMi0zNjhIMTU3LjF6bTI1MS44LTY4LjVjLTEuOC02LjgtOC4yLTExLjUtMTUuMi0xMS41aC04OC4zYy01LjMgMC05IDUtNy44IDEwLjMgMTMuMiA0Ni41IDIyLjMgOTUuNSAyNi41IDE0NiA0OC4yIDg2LjIgNzkuNyAxNzguMyA5MC42IDI3MC44IDE1LjgtNjAuNSAyNS4zLTEzMy41IDI1LjMtMjAzIDAtNzMuNi0xMi4xLTE0NS4xLTMxLjEtMjEyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggMjYxLjhDNDg4IDQwMy4zIDM5MS4xIDUwNCAyNDggNTA0IDExMC44IDUwNCAwIDM5My4yIDAgMjU2UzExMC44IDggMjQ4IDhjNjYuOCAwIDEyMyAyNC41IDE2Ni4zIDY0LjlsLTY3LjUgNjQuOUMyNTguNSA1Mi42IDk0LjMgMTE2LjYgOTQuMyAyNTZjMCA4Ni41IDY5LjEgMTU2LjYgMTUzLjcgMTU2LjYgOTguMiAwIDEzNS03MC40IDE0MC44LTEwNi45SDI0OHYtODUuM2gyMzYuMWMyLjMgMTIuNyAzLjkgMjQuOSAzLjkgNDEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JhdGlwYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjEgOCAwIDExOS4xIDAgMjU2czExMS4xIDI0OCAyNDggMjQ4IDI0OC0xMTEuMSAyNDgtMjQ4UzM4NC45IDggMjQ4IDh6bTExNC42IDIyNi40bC0xMTMgMTUyLjctMTEyLjctMTUyLjdjLTguNy0xMS45LTE5LjEtNTAuNCAxMy42LTcyIDI4LjEtMTguMSA1NC42LTQuMiA2OC41IDExLjkgMTUuOSAxNy45IDQ2LjYgMTYuOSA2MS43IDAgMTMuOS0xNi4xIDQwLjQtMzAgNjguMS0xMS45IDMyLjkgMjEuNiAyMi42IDYwIDEzLjggNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYXYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAxLjEgMjEyYzQuNCA0LjQgNC40IDExLjkgMCAxNi4zbC05LjcgOS43Yy00LjQgNC43LTExLjkgNC43LTE2LjYgMGwtMTAuNS0xMC41Yy00LjQtNC43LTQuNC0xMS45IDAtMTYuNmw5LjctOS43YzQuNC00LjQgMTEuOS00LjQgMTYuNiAwbDEwLjUgMTAuOHptLTMwLjItMTkuN2MzLTMgMy03LjggMC0xMC41LTIuOC0zLTcuNS0zLTEwLjUgMC0yLjggMi44LTIuOCA3LjUgMCAxMC41IDMuMSAyLjggNy44IDIuOCAxMC41IDB6bS0yNiA1LjNjLTMgMi44LTMgNy41IDAgMTAuMiAyLjggMyA3LjUgMyAxMC41IDAgMi44LTIuOCAyLjgtNy41IDAtMTAuMi0zLTMtNy43LTMtMTAuNSAwem03Mi41LTEzLjNjLTE5LjktMTQuNC0zMy44LTQzLjItMTEuOS02OC4xIDIxLjYtMjQuOSA0MC43LTE3LjIgNTkuOC44IDExLjkgMTEuMyAyOS4zIDI0LjkgMTcuMiA0OC4yLTEyLjUgMjMuNS00NS4xIDMzLjItNjUuMSAxOS4xem00Ny43LTQ0LjVjLTguOS0xMC0yMy4zIDYuOS0xNS41IDE2LjEgNy40IDkgMzIuMSAyLjQgMTUuNS0xNi4xek01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS02Ni4yIDQyLjZjMi41LTE2LjEtMjAuMi0xNi42LTI1LjItMjUuNy0xMy42LTI0LjEtMjcuNy0zNi44LTU0LjUtMzAuNCAxMS42LTggMjMuNS02LjEgMjMuNS02LjEuMy02LjQgMC0xMy05LjQtMjQuOSAzLjktMTIuNS4zLTIyLjQuMy0yMi40IDE1LjUtOC42IDI2LjgtMjQuNCAyOS4xLTQzLjIgMy42LTMxLTE4LjgtNTkuMi00OS44LTYyLjgtMjIuMS0yLjUtNDMuNyA3LjctNTQuMyAyNS43LTIzLjIgNDAuMSAxLjQgNzAuOSAyMi40IDgxLjQtMTQuNC0xLjQtMzQuMy0xMS45LTQwLjEtMzQuMy02LjYtMjUuNyAyLjgtNDkuOCA4LjktNjEuNCAwIDAtNC40LTUuOC04LTguOSAwIDAtMTMuOCAwLTI0LjYgNS4zIDExLjktMTUuMiAyNS4yLTE0LjQgMjUuMi0xNC40IDAtNi40LS42LTE0LjktMy42LTIxLjYtNS40LTExLTIzLjgtMTIuOS0zMS43IDIuOC4xLS4yLjMtLjQuNC0uNS01IDExLjktMS4xIDU1LjkgMTYuOSA4Ny4yLTIuNSAxLjQtOS4xIDYuMS0xMyAxMC0yMS42IDkuNy01Ni4yIDYwLjMtNTYuMiA2MC4zLTI4LjIgMTAuOC03Ny4yIDUwLjktNzAuNiA3OS43LjMgMyAxLjQgNS41IDMgNy41LTIuOCAyLjItNS41IDUtOC4zIDguMy0xMS45IDEzLjgtNS4zIDM1LjIgMTcuNyAyNC40IDE1LjgtNy4yIDI5LjYtMjAuMiAzNi4zLTMwLjQgMCAwLTUuNS01LTE2LjMtNC40IDI3LjctNi42IDM0LjMtOS40IDQ2LjItOS4xIDggMy45IDgtMzQuMyA4LTM0LjMgMC0xNC43LTIuMi0zMS0xMS4xLTQxLjUgMTIuNSAxMi4yIDI5LjEgMzIuNyAyOCA2MC42LS44IDE4LjMtMTUuMiAyMy0xNS4yIDIzLTkuMSAxNi42LTQzLjIgNjUuOS0zMC40IDEwNiAwIDAtOS43LTE0LjktMTAuMi0yMi4xLTE3LjQgMTkuNC00Ni41IDUyLjMtMjQuNiA2NC41IDI2LjYgMTQuNyAxMDguOC04OC42IDEyNi4yLTE0Mi4zIDM0LjYtMjAuOCA1NS40LTQ3LjMgNjMuOS02NSAyMiA0My41IDk1LjMgOTQuNSAxMDEuMSA1OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpcGZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyLjUgMzAxLjRjMC03My44IDEwNS4xLTEyMi41IDEwNS4xLTIwMyAwLTQ3LjEtMzQtODgtMzkuMS05MC40LjQgMy4zLjYgNi43LjYgMTBDMTc5LjEgMTEwLjEgMzIgMTcxLjkgMzIgMjg2LjZjMCA0OS44IDMyLjIgNzkuMiA2Ni41IDEwOC4zIDY1LjEgNDYuNyA3OC4xIDcxLjQgNzguMSA4Ni42IDAgMTAuMS00LjggMTctNC44IDIyLjMgMTMuMS0xNi43IDE3LjQtMzEuOSAxNy41LTQ2LjQgMC0yOS42LTIxLjctNTYuMy00NC4yLTg2LjUtMTYtMjIuMy0zMi42LTQyLjYtMzIuNi02OS41em0yMDUuMy0zOWMtMTIuMS02Ni44LTc4LTEyNC40LTk0LjctMTMwLjlsNCA3LjJjMi40IDUuMSAzLjQgMTAuOSAzLjQgMTcuMSAwIDQ0LjctNTQuMiAxMTEuMi01Ni42IDExNi43LTIuMiA1LjEtMy4yIDEwLjUtMy4yIDE1LjggMCAyMC4xIDE1LjIgNDIuMSAxNy45IDQyLjEgMi40IDAgNTYuNi01NS40IDU4LjEtODcuNyA2LjQgMTEuNyA5LjEgMjIuNiA5LjEgMzMuNCAwIDQxLjItNDEuOCA5Ni45LTQxLjggOTYuOSAwIDExLjYgMzEuOSA1My4yIDM1LjUgNTMuMiAxIDAgMi4yLTEuNCAzLjItMi40IDM3LjktMzkuMyA2Ny4zLTg1IDY3LjMtMTM2LjggMC04LS43LTE2LjItMi4yLTI0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdydW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjMgMTg5LjNjLTEuMSAxMCA1LjIgMTkuMSA1LjIgMTkuMS43LTcuNSAyLjItMTIuOCA0LTE2LjYuNCAxMC4zIDMuMiAyMy41IDEyLjggMzQuMSA2LjkgNy42IDM1LjYgMjMuMyA1NC45IDYuMSAxIDIuNCAyLjEgNS4zIDMgOC41IDIuOSAxMC4zLTIuNyAyNS4zLTIuNyAyNS4zczE1LjEtMTcuMSAxMy45LTMyLjVjMTAuOC0uNSAyMS40LTguNCAyMS4xLTE5LjUgMCAwLTE4LjkgMTAuNC0zNS41LTguOC05LjctMTEuMi00MC45LTQyLTgzLjEtMzEuOCA0LjMgMSA4LjkgMi40IDEzLjUgNC4xaC0uMWMtNC4yIDItNi41IDcuMS03IDEyem0yOC4zLTEuOGMxOS41IDExIDM3LjQgMjUuNyA0NC45IDM3LTUuNyAzLjMtMjEuNyAxMC40LTM4LTEuNy0xMC4zLTcuNi05LjgtMjYuMi02LjktMzUuM3ptMTQyLjEgNDUuOGMtMS4yIDE1LjUgMTMuOSAzMi41IDEzLjkgMzIuNXMtNS42LTE1LTIuNy0yNS4zYy45LTMuMiAyLTYgMy04LjUgMTkuMyAxNy4zIDQ4IDEuNSA1NC44LTYuMSA5LjYtMTAuNiAxMi4zLTIzLjggMTIuOC0zNC4xIDEuOCAzLjggMy40IDkuMSA0IDE2LjYgMCAwIDYuNC05LjEgNS4yLTE5LjEtLjYtNS0yLjktMTAtNy0xMS44aC0uMWM0LjYtMS44IDkuMi0zLjIgMTMuNS00LjEtNDIuMy0xMC4yLTczLjQgMjAuNi04My4xIDMxLjgtMTYuNyAxOS4yLTM1LjUgOC44LTM1LjUgOC44LS4yIDEwLjkgMTAuNCAxOC45IDIxLjIgMTkuM3ptNjIuNy00NS44YzMgOS4xIDMuNCAyNy43LTcgMzUuNC0xNi4zIDEyLjEtMzIuMiA1LTM3LjkgMS42IDcuNS0xMS40IDI1LjQtMjYgNDQuOS0zN3pNMTYwIDQxOC41aC0yOS40Yy01LjUgMC04LjIgMS42LTkuNSAyLjktMS45IDItMi4yIDQuNy0uOSA4LjEgMy41IDkuMSAxMS40IDE2LjUgMTMuNyAxOC42IDMuMSAyLjcgNy41IDQuMyAxMS44IDQuMyA0LjQgMCA4LjMtMS43IDExLTQuNiA3LjUtOC4yIDExLjktMTcuMSAxMy0xOS44LjYtMS41IDEuMy00LjUtLjktNi44LTEuOC0xLjgtNC43LTIuNy04LjgtMi43em0xODkuMi0xMDEuMmMtMi40IDE3LjktMTMgMzMuOC0yNC42IDQzLjctMy4xLTIyLjctMy43LTU1LjUtMy43LTYyLjQgMC0xNC43IDkuNS0yNC41IDEyLjItMjYuMSAyLjUtMS41IDUuNC0zIDguMy00LjYgMTgtOS42IDQwLjQtMjEuNiA0MC40LTQzLjcgMC0xNi4yLTkuMy0yMy4yLTE1LjQtMjcuOC0uOC0uNi0xLjUtMS4xLTIuMi0xLjctMi4xLTEuNy0zLjctMy00LjMtNC40LTQuNC05LjgtMy42LTM0LjItMS43LTM3LjYuNi0uNiAxNi43LTIwLjkgMTEuOC0zOS4yLTItNy40LTYuOS0xMy4zLTE0LjEtMTctNS4zLTIuNy0xMS45LTQuMi0xOS41LTQuNS0uMS0yLS41LTMuOS0uOS01LjktLjYtMi42LTEuMS01LjMtLjktOC4xLjQtNC43LjgtOSAyLjItMTEuMyA4LjQtMTMuMyAyOC44LTE3LjYgMjktMTcuNmwxMi4zLTIuNC04LjEtOS41Yy0uMS0uMi0xNy4zLTE3LjUtNDYuMy0xNy41LTcuOSAwLTE2IDEuMy0yNC4xIDMuOS0yNC4yIDcuOC00Mi45IDMwLjUtNDkuNCAzOS4zLTMuMS0xLTYuMy0xLjktOS42LTIuNy00LjItMTUuOCA5LTM4LjUgOS0zOC41cy0xMy42LTMtMzMuNyAxNS4yYy0yLjYtNi41LTguMS0yMC41LTEuOC0zNy4yQzE4NC42IDEwLjEgMTc3LjIgMjYgMTc1IDQwLjRjLTcuNi01LjQtNi43LTIzLjEtNy4yLTI3LjYtNy41LjktMjkuMiAyMS45LTI4LjIgNDguMy0yIC41LTMuOSAxLjEtNS45IDEuNy02LjUtOC44LTI1LjEtMzEuNS00OS40LTM5LjMtNy45LTIuMi0xNi0zLjUtMjMuOS0zLjUtMjkgMC00Ni4xIDE3LjMtNDYuMyAxNy41TDYgNDYuOWwxMi4zIDIuNGMuMiAwIDIwLjYgNC4zIDI5IDE3LjYgMS40IDIuMiAxLjggNi42IDIuMiAxMS4zLjIgMi44LS40IDUuNS0uOSA4LjEtLjQgMS45LS44IDMuOS0uOSA1LjktNy43LjMtMTQuMiAxLjgtMTkuNSA0LjUtNy4yIDMuNy0xMi4xIDkuNi0xNC4xIDE3LTUgMTguMiAxMS4yIDM4LjUgMTEuOCAzOS4yIDEuOSAzLjQgMi43IDI3LjgtMS43IDM3LjYtLjYgMS40LTIuMiAyLjctNC4zIDQuNC0uNy41LTEuNCAxLjEtMi4yIDEuNy02LjEgNC42LTE1LjQgMTEuNy0xNS40IDI3LjggMCAyMi4xIDIyLjQgMzQuMSA0MC40IDQzLjcgMyAxLjYgNS44IDMuMSA4LjMgNC42IDIuNyAxLjYgMTIuMiAxMS40IDEyLjIgMjYuMSAwIDYuOS0uNiAzOS43LTMuNyA2Mi40LTExLjYtOS45LTIyLjItMjUuOS0yNC42LTQzLjggMCAwLTI5LjIgMjIuNi0yMC42IDcwLjggNS4yIDI5LjUgMjMuMiA0Ni4xIDQ3IDU0LjcgOC44IDE5LjEgMjkuNCA0NS43IDY3LjMgNDkuNkMxNDMgNTA0LjMgMTYzIDUxMiAxOTIuMiA1MTJoLjJjMjkuMSAwIDQ5LjEtNy43IDYzLjYtMTkuNSAzNy45LTMuOSA1OC41LTMwLjUgNjcuMy00OS42IDIzLjgtOC43IDQxLjctMjUuMiA0Ny01NC43IDguMi00OC40LTIxLjEtNzAuOS0yMS4xLTcwLjl6TTMwNS43IDM3LjdjNS42LTEuOCAxMS42LTIuNyAxNy43LTIuNyAxMSAwIDE5LjkgMyAyNC43IDUtMy4xIDEuNC02LjQgMy4yLTkuNyA1LjMtMi40LS40LTUuNi0uOC05LjItLjgtMTAuNSAwLTIwLjUgMy4xLTI4LjcgOC45LTEyLjMgOC43LTE4IDE2LjktMjAuNyAyMi40LTIuMi0xLjMtNC41LTIuNS03LjEtMy43LTEuNi0uOC0zLjEtMS41LTQuNy0yLjIgNi4xLTkuMSAxOS45LTI2LjUgMzcuNy0zMi4yem0yMSAxOC4yYy0uOCAxLTEuNiAyLjEtMi4zIDMuMi0zLjMgNS4yLTMuOSAxMS42LTQuNCAxNy44LS41IDYuNC0xLjEgMTIuNS00LjQgMTctNC4yLjgtOC4xIDEuNy0xMS41IDIuNy0yLjMtMy4xLTUuNi03LTEwLjUtMTEuMiAxLjQtNC44IDUuNS0xNi4xIDEzLjUtMjIuNSA1LjYtNC4zIDEyLjItNi43IDE5LjYtN3pNNDUuNiA0NS4zYy0zLjMtMi4yLTYuNi00LTkuNy01LjMgNC44LTIgMTMuNy01IDI0LjctNSA2LjEgMCAxMiAuOSAxNy43IDIuNyAxNy44IDUuOCAzMS42IDIzLjIgMzcuNyAzMi4xLTEuNi43LTMuMiAxLjQtNC44IDIuMi0yLjUgMS4yLTQuOSAyLjUtNy4xIDMuNy0yLjYtNS40LTguMy0xMy43LTIwLjctMjIuNC04LjMtNS44LTE4LjItOC45LTI4LjgtOC45LTMuNC4xLTYuNi41LTkgLjl6bTQ0LjcgNDAuMWMtNC45IDQuMi04LjMgOC0xMC41IDExLjItMy40LS45LTcuMy0xLjktMTEuNS0yLjdDNjUgODkuNSA2NC41IDgzLjQgNjQgNzdjLS41LTYuMi0xLjEtMTIuNi00LjQtMTcuOC0uNy0xLjEtMS41LTIuMi0yLjMtMy4yIDcuNC4zIDE0IDIuNiAxOS41IDcgOCA2LjMgMTIuMSAxNy42IDEzLjUgMjIuNHpNNTguMSAyNTkuOWMtMi43LTEuNi01LjYtMy4xLTguNC00LjYtMTQuOS04LTMwLjItMTYuMy0zMC4yLTMwLjUgMC0xMS4xIDQuMy0xNC42IDguOS0xOC4ybC41LS40Yy43LS42IDEuNC0xLjIgMi4yLTEuOC0uOSA3LjItMS45IDEzLjMtMi43IDE0LjkgMCAwIDEyLjEtMTUgMTUuNy00NC4zIDEuNC0xMS41LTEuMS0zNC4zLTUuMS00MyAuMiA0LjkgMCA5LjgtLjMgMTQuNC0uNC0uOC0uOC0xLjYtMS4zLTIuMi0zLjItNC0xMS44LTE3LjUtOS40LTI2LjYuOS0zLjUgMy4xLTYgNi43LTcuOCAzLjgtMS45IDguOC0yLjkgMTUuMS0yLjkgMTIuMyAwIDI1LjkgMy43IDMyLjkgNiAyNS4xIDggNTUuNCAzMC45IDY0LjEgMzcuNy4yLjIuNC4zLjQuM2w1LjYgMy45LTMuNS01LjhjLS4yLS4zLTE5LjEtMzEuNC01My4yLTQ2LjUgMi0yLjkgNy40LTguMSAyMS42LTE1LjEgMjEuNC0xMC41IDQ2LjUtMTUuOCA3NC4zLTE1LjggMjcuOSAwIDUyLjkgNS4zIDc0LjMgMTUuOCAxNC4yIDYuOSAxOS42IDEyLjIgMjEuNiAxNS4xLTM0IDE1LjEtNTIuOSA0Ni4yLTUzLjEgNDYuNWwtMy41IDUuOCA1LjYtMy45cy4yLS4xLjQtLjNjOC43LTYuOCAzOS0yOS44IDY0LjEtMzcuNyA3LTIuMiAyMC42LTYgMzIuOS02IDYuMyAwIDExLjMgMSAxNS4xIDIuOSAzLjUgMS44IDUuNyA0LjQgNi43IDcuOCAyLjUgOS4xLTYuMSAyMi42LTkuNCAyNi42LS41LjYtLjkgMS4zLTEuMyAyLjItLjMtNC42LS41LTkuNS0uMy0xNC40LTQgOC44LTYuNSAzMS41LTUuMSA0MyAzLjYgMjkuMyAxNS43IDQ0LjMgMTUuNyA0NC4zLS44LTEuNi0xLjgtNy43LTIuNy0xNC45LjcuNiAxLjUgMS4yIDIuMiAxLjhsLjUuNGM0LjYgMy43IDguOSA3LjEgOC45IDE4LjIgMCAxNC4yLTE1LjQgMjIuNS0zMC4yIDMwLjUtMi45IDEuNS01LjcgMy4xLTguNCA0LjYtOC43IDUtMTggMTYuNy0xOS4xIDM0LjItLjkgMTQuNi45IDQ5LjkgMy40IDc1LjktMTIuNCA0LjgtMjYuNyA2LjQtMzkuNyA2LjgtMi00LjEtMy45LTguNS01LjUtMTMuMS0uNy0yLTE5LjYtNTEuMS0yNi40LTYyLjIgNS41IDM5IDE3LjUgNzMuNyAyMy41IDg5LjYtMy41LS41LTcuMy0uNy0xMS43LS43aC0xMTdjLTQuNCAwLTguMy4zLTExLjcuNyA2LTE1LjkgMTguMS01MC42IDIzLjUtODkuNi02LjggMTEuMi0yNS43IDYwLjMtMjYuNCA2Mi4yLTEuNiA0LjYtMy41IDktNS41IDEzLjEtMTMtLjQtMjcuMi0yLTM5LjctNi44IDIuNS0yNiA0LjMtNjEuMiAzLjQtNzUuOS0uOS0xNy40LTEwLjMtMjkuMi0xOS0zNC4yek0zNC44IDQwNC42Yy0xMi4xLTIwLTguNy01NC4xLTMuNy01OS4xIDEwLjkgMzQuNCA0Ny4yIDQ0LjMgNzQuNCA0NS40LTIuNyA0LjItNS4yIDcuNi03IDEwbC0xLjQgMS40Yy03LjIgNy44LTguNiAxOC41LTQuMSAzMS44LTIyLjctLjEtNDYuMy05LjgtNTguMi0yOS41em00NS43IDQzLjVjNiAxLjEgMTIuMiAxLjkgMTguNiAyLjQgMy41IDggNy40IDE1LjkgMTIuMyAyMy4xLTE0LjQtNS45LTI0LjQtMTYtMzAuOS0yNS41ek0xOTIgNDk4LjJjLTYwLjYtLjEtNzguMy00NS44LTg0LjktNjQuNy0zLjctMTAuNS0zLjQtMTguMi45LTIzLjEgMi45LTMuMyA5LjUtNy4yIDI0LjYtNy4yaDExOC44YzE1LjEgMCAyMS44IDMuOSAyNC42IDcuMiA0LjIgNC44IDQuNSAxMi42LjkgMjMuMS02LjYgMTguOC0yNC4zIDY0LjYtODQuOSA2NC43em04MC42LTI0LjZjNC45LTcuMiA4LjgtMTUuMSAxMi4zLTIzLjEgNi40LS41IDEyLjYtMS4zIDE4LjYtMi40LTYuNSA5LjUtMTYuNSAxOS42LTMwLjkgMjUuNXptNzYuNi02OWMtMTIgMTkuNy0zNS42IDI5LjMtNTguMSAyOS43IDQuNS0xMy4zIDMuMS0yNC4xLTQuMS0zMS44LS40LS41LS45LTEtMS40LTEuNS0xLjgtMi40LTQuMy01LjgtNy0xMCAyNy4yLTEuMiA2My41LTExIDc0LjQtNDUuNCA1IDUgOC40IDM5LjEtMy44IDU5ek0xOTEuOSAxODcuN2guMmMxMi43LS4xIDI3LjItMTcuOCAyNy4yLTE3LjgtOS45IDYtMTguOCA4LjEtMjcuMyA4LjMtOC41LS4yLTE3LjQtMi4zLTI3LjMtOC4zIDAgMCAxNC41IDE3LjYgMjcuMiAxNy44em02MS43IDIzMC43aC0yOS40Yy00LjIgMC03LjIuOS04LjkgMi43LTIuMiAyLjMtMS41IDUuMi0uOSA2LjcgMSAyLjYgNS41IDExLjMgMTMgMTkuMyAyLjcgMi45IDYuNiA0LjUgMTEgNC41czguNy0xLjYgMTEuOC00LjJjMi4zLTIgMTAuMi05LjIgMTMuNy0xOC4xIDEuMy0zLjMgMS02LS45LTcuOS0xLjMtMS4zLTQtMi45LTkuNC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWlsZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My40MjcsNjRINC41NzFjMCwxMDMuMjYsMjIuMTkyLDE4MC4wNiw0My40MTgsMjIyLjM1OEMxMTIuMDQ2LDQxNC4xMzUsMjI0LDQ0OCwyMjUuMjU2LDQ0OGEzMTIuODI0LDMxMi44MjQsMCwwLDAsMTQwLjU1LTEwMy40NzdjMjUuOTA3LTMzLjkyMyw1My4xLTg3LjE5LDY1LjkxNi0xNDUuNzYxSDE3MS44MzNjNC4xNCwzNi40MjksMjIuMTc3LDY3Ljk0Niw0NS4xLDg2Ljk0NGg4OC41ODljLTE3LjAxMiwyOC4yMTMtNDguMTg2LDU0LjQtODAuNDU2LDY5LjQ4Mi0zMS4yMzItMTMuMjU5LTY5LjA5LTQ2LjU0NC05Ni41NDgtOTguMzYyLTI2LjcyNi01My44MzMtMjcuMDkyLTEwNS44ODMtMjcuMDkyLTEwNS44ODNINDM3LjU3M0E2MjUuOTEsNjI1LjkxLDAsMCwwLDQ0My40MjcsNjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1bHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA5LjggMzkxLjFsLTE0LjEgMjQuNi00LjYgODAuMmMwIDguOS0yOC4zIDE2LjEtNjMuMSAxNi4xcy02My4xLTcuMi02My4xLTE2LjFsLTUuOC03OS40LTE0LjktMjUuNGM0MS4yIDE3LjMgMTI2IDE2LjcgMTY1LjYgMHptLTE5Ni0yNTMuM2wxMy42IDEyNS41YzUuOS0yMCAyMC44LTQ3IDQwLTU1LjIgNi4zLTIuNyAxMi43LTIuNyAxOC43LjkgNS4yIDMgOS42IDkuMyAxMC4xIDExLjggMS4yIDYuNS0yIDkuMS00LjUgOS4xLTMgMC01LjMtNC42LTYuOC03LjMtNC4xLTcuMy0xMC4zLTcuNi0xNi45LTIuOC02LjkgNS0xMi45IDEzLjQtMTcuMSAyMC43LTUuMSA4LjgtOS40IDE4LjUtMTIgMjguMi0xLjUgNS42LTIuOSAxNC42LS42IDE5LjkgMSAyLjIgMi41IDMuNiA0LjkgMy42IDUgMCAxMi4zLTYuNiAxNS44LTEwLjEgNC41LTQuNSAxMC4zLTExLjUgMTIuNS0xNmw1LjItMTUuNWMyLjYtNi44IDkuOS01LjYgOS45IDAgMCAxMC4yLTMuNyAxMy42LTEwIDM0LjctNS44IDE5LjUtNy42IDI1LjgtNy42IDI1LjgtLjcgMi44LTMuNCA3LjUtNi4zIDcuNS0xLjIgMC0yLjEtLjQtMi42LTEuMi0xLTEuNC0uOS01LjMtLjgtNi4zLjItMy4yIDYuMy0yMi4yIDcuMy0yNS4yLTIgMi4yLTQuMSA0LjQtNi40IDYuNi01LjQgNS4xLTE0LjEgMTEuOC0yMS41IDExLjgtMy40IDAtNS42LS45LTcuNy0yLjRsNy42IDc5LjZjMiA1IDM5LjIgMTcuMSA4OC4yIDE3LjEgNDkuMSAwIDg2LjMtMTIuMiA4OC4yLTE3LjFsMTAuOS05NC42Yy01LjcgNS4yLTEyLjMgMTEuNi0xOS42IDE0LjgtNS40IDIuMy0xNy40IDMuOC0xNy40LTUuNyAwLTUuMiA5LjEtMTQuOCAxNC40LTIxLjUgMS40LTEuNyA0LjctNS45IDQuNy04LjEgMC0yLjktNi0yLjItMTEuNyAyLjUtMy4yIDIuNy02LjIgNi4zLTguNyA5LjctNC4zIDYtNi42IDExLjItOC41IDE1LjUtNi4yIDE0LjItNC4xIDguNi05LjEgMjItNSAxMy4zLTQuMiAxMS44LTUuMiAxNC0uOSAxLjktMi4yIDMuNS00IDQuNS0xLjkgMS00LjUuOS02LjEtLjMtLjktLjYtMS4zLTEuOS0xLjMtMy43IDAtLjkuMS0xLjguMy0yLjcgMS41LTYuMSA3LjgtMTguMSAxNS0zNC4zIDEuNi0zLjcgMS0yLjYuOC0yLjMtNi4yIDYtMTAuOSA4LjktMTQuNCAxMC41LTUuOCAyLjYtMTMgMi42LTE0LjUtNC4xLS4xLS40LS4xLS44LS4yLTEuMi0xMS44IDkuMi0yNC4zIDExLjctMjAtOC4xLTQuNiA4LjItMTIuNiAxNC45LTIyLjQgMTQuOS00LjEgMC03LjEtMS40LTguNi01LjEtMi4zLTUuNSAxLjMtMTQuOSA0LjYtMjMuOCAxLjctNC41IDQtOS45IDcuMS0xNi4yIDEuNi0zLjQgNC4yLTUuNCA3LjYtNC41LjYuMiAxLjEuNCAxLjYuNyAyLjYgMS44IDEuNiA0LjUuMyA3LjItMy44IDcuNS03LjEgMTMtOS4zIDIwLjgtLjkgMy4zLTIgOSAxLjUgOSAyLjQgMCA0LjctLjggNi45LTIuNCA0LjYtMy40IDguMy04LjUgMTEuMS0xMy41IDItMy42IDQuNC04LjMgNS42LTEyLjMuNS0xLjcgMS4xLTMuMyAxLjgtNC44IDEuMS0yLjUgMi42LTUuMSA1LjItNS4xIDEuMyAwIDIuNC41IDMuMiAxLjUgMS43IDIuMiAxLjMgNC41LjQgNi45LTIgNS42LTQuNyAxMC42LTYuOSAxNi43LTEuMyAzLjUtMi43IDgtMi43IDExLjcgMCAzLjQgMy43IDIuNiA2LjggMS4yIDIuNC0xLjEgNC44LTIuOCA2LjgtNC41IDEuMi00LjkuOS0zLjggMjYuNC02OC4yIDEuMy0zLjMgMy43LTQuNyA2LjEtNC43IDEuMiAwIDIuMi40IDMuMiAxLjEgMS43IDEuMyAxLjcgNC4xIDEgNi4yLS43IDEuOS0uNiAxLjMtNC41IDEwLjUtNS4yIDEyLjEtOC42IDIwLjgtMTMuMiAzMS45LTEuOSA0LjYtNy43IDE4LjktOC43IDIyLjMtLjYgMi4yLTEuMyA1LjggMSA1LjggNS40IDAgMTkuMy0xMy4xIDIzLjEtMTcgLjItLjMuNS0uNC45LS42LjYtMS45IDEuMi0zLjcgMS43LTUuNSAxLjQtMy44IDIuNy04LjIgNS4zLTExLjMuOC0xIDEuNy0xLjYgMi43LTEuNiAyLjggMCA0LjIgMS4yIDQuMiA0IDAgMS4xLS43IDUuMS0xLjEgNi4yIDEuNC0xLjUgMi45LTMgNC41LTQuNSAxNS0xMy45IDI1LjctNi44IDI1LjcuMiAwIDcuNC04LjkgMTcuNy0xMy44IDIzLjQtMS42IDEuOS00LjkgNS40LTUgNi40IDAgMS4zLjkgMS44IDIuMiAxLjggMiAwIDYuNC0zLjUgOC00LjcgNS0zLjkgMTEuOC05LjkgMTYuNi0xNC4xbDE0LjgtMTM2LjhjLTMwLjUgMTcuMS0xOTcuNiAxNy4yLTIyOC4zLjJ6bTIyOS43LTguNWMwIDIxLTIzMS4yIDIxLTIzMS4yIDAgMC04LjggNTEuOC0xNS45IDExNS42LTE1LjkgOSAwIDE3LjguMSAyNi4zLjRsMTIuNi00OC43TDIyOC4xLjZjMS40LTEuNCA1LjgtLjIgOS45IDMuNXM2LjYgNy45IDUuMyA5LjNsLS4xLjFMMTg1LjkgNzRsLTEwIDQwLjdjMzkuOSAyLjYgNjcuNiA4LjEgNjcuNiAxNC42em0tNjkuNCA0LjZjMC0uOC0uOS0xLjUtMi41LTIuMWwtLjIuOGMwIDEuMy01IDIuNC0xMS4xIDIuNHMtMTEuMS0xLjEtMTEuMS0yLjRjMC0uMSAwLS4yLjEtLjNsLjItLjdjLTEuOC42LTMgMS40LTMgMi4zIDAgMi4xIDYuMiAzLjcgMTMuNyAzLjcgNy43LjEgMTMuOS0xLjYgMTMuOS0zLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhY2tlck5ld3NTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjEuMiAyMjkuMkgyMWMuMS0uMS4yLS4zLjMtLjQgMCAuMSAwIC4zLS4xLjR6bTIxOCA1My45VjM4NGgtMzEuNFYyODEuM0wxMjggMTI4aDM3LjNjNTIuNSA5OC4zIDQ5LjIgMTAxLjIgNTkuMyAxMjUuNiAxMi4zLTI3IDUuOC0yNC40IDYwLjYtMTI1LjZIMzIwbC04MC44IDE1NS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYWNrZXJOZXdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0yMS4yIDE5Ny4ySDIxYy4xLS4xLjItLjMuMy0uNCAwIC4xIDAgLjMtLjEuNHptMjE4IDUzLjlWMzg0aC0zMS40VjI4MS4zTDEyOCAxMjhoMzcuM2M1Mi41IDk4LjMgNDkuMiAxMDEuMiA1OS4zIDEyNS42IDEyLjMtMjcgNS44LTI0LjQgNjAuNi0xMjUuNkgzMjBsLTgwLjggMTU1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhY2tlcnJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc3LjUgMTI4QzQ2MyAxMDMuMDUgMjg1LjEzIDAgMjU2LjE2IDBTNDkuMjUgMTAyLjc5IDM0Ljg0IDEyOHMtMTQuNDkgMjMwLjggMCAyNTYgMTkyLjM4IDEyOCAyMjEuMzIgMTI4UzQ2MyA0MDkuMDggNDc3LjQ5IDM4NHMxNC41MS0yMzEgLjAxLTI1NnpNMzE2LjEzIDQxNC4yMmMtNCAwLTQwLjkxLTM1Ljc3LTM4LTM4LjY5Ljg3LS44NyA2LjI2LTEuNDggMTcuNTUtMS44MyAwLTI2LjIzLjU5LTY4LjU5Ljk0LTg2LjMyIDAtMi0uNDQtMy40My0uNDQtNS44NWgtNzkuOTNjMCA3LjEtLjQ2IDM2LjIgMS4zNyA3Mi44OC4yMyA0LjU0LTEuNTggNi01Ljc0IDUuOTQtMTAuMTMgMC0yMC4yNy0uMTEtMzAuNDEtLjA4LTQuMSAwLTUuODctMS41My01Ljc0LTYuMTEuOTItMzMuNDQgMy04NC0uMTUtMjEyLjY3di0zLjE3Yy05LjY3LS4zNS0xNi4zOC0xLTE3LjI2LTEuODQtMi45Mi0yLjkyIDM0LjU0LTM4LjY5IDM4LjQ5LTM4LjY5czQxLjE3IDM1Ljc4IDM4LjI3IDM4LjY5Yy0uODcuODctNy45IDEuNDktMTYuNzcgMS44NHYzLjE2Yy0yLjQyIDI1Ljc1LTIgNzkuNTktMi42MyAxMDUuMzloODAuMjZjMC00LjU1LjM5LTM0Ljc0LTEuMi04My42NC0uMS0zLjM5Ljk1LTUuMTcgNC4yMS01LjIgMTEuMDctLjA4IDIyLjE1LS4xMyAzMy4yMy0uMDYgMy40NiAwIDQuNTcgMS43MiA0LjUgNS4zOEMzMzMgMzU0LjY0IDMzNiAzNDEuMjkgMzM2IDM3My42OWM4Ljg3LjM1IDE2LjgyIDEgMTcuNjkgMS44NCAyLjg4IDIuOTEtMzMuNjIgMzguNjktMzcuNTggMzguNjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUxLjYgMTU3LjZjMC0xLjktLjktMi44LTIuOC0yLjhoLTQwLjljLTEuNiAwLTIuNyAxLjQtMi43IDIuOHYyMDEuOGMwIDEuNCAxLjEgMi44IDIuNyAyLjhoNDAuOWMxLjkgMCAyLjgtLjkgMi44LTIuOHpNMTU2LjUgMTY4Yy0xNi4xLTExLjgtMzYuMy0xNy45LTYwLjMtMTgtMTguMS0uMS0zNC42IDMuNy00OS44IDExLjRWODAuMmMwLTEuOC0uOS0yLjctMi44LTIuN0gyLjdjLTEuOCAwLTIuNy45LTIuNyAyLjd2Mjc5LjJjMCAxLjkuOSAyLjggMi43IDIuOGg0MWMxLjkgMCAyLjgtLjkgMi44LTIuOFYyMjMuM2MwLS44LTIuOC0yNyA0NS44LTI3IDQ4LjUgMCA0NS44IDI2LjEgNDUuOCAyN3YxMjIuNmMwIDkgNy4zIDE2LjMgMTYuNCAxNi4zaDI3LjNjMS44IDAgMi43LS45IDIuNy0yLjhWMjIzLjNjMC0yMy40LTkuMy00MS44LTI4LTU1LjN6bTQ3OC40IDExMC4xYy02LjgtMTUuNy0xOC40LTI3LTM0LjktMzQuMWwtNTcuNi0yNS4zYy04LjYtMy42LTkuMi0xMS4yLTIuNi0xNi4xIDcuNC01LjUgNDQuMy0xMy45IDg0IDYuOCAxLjcgMSA0LS4zIDQtMi40di00NC43YzAtMS4zLS42LTIuMS0xLjktMi42LTE3LjctNi42LTM2LjEtOS45LTU1LjEtOS45LTI2LjUgMC00NS4zIDUuOC01OC41IDE1LjQtLjUuNC0yOC40IDIwLTIyLjcgNTMuNyAzLjQgMTkuNiAxNS44IDM0LjIgMzcuMiA0My42bDUzLjYgMjMuNWMxMS42IDUuMSAxNS4yIDEzLjMgMTIuMiAyMS4yLTMuNyA5LjEtMTMuMiAxMy42LTM2LjUgMTMuNi0yNC4zIDAtNDQuNy04LjktNTguNC0xOS4xLTIuMS0xLjQtNC40LjItNC40IDIuM3YzNC40YzAgMTAuNCA0LjkgMTcuMyAxNC42IDIwLjcgMTUuNiA1LjUgMzEuNiA4LjIgNDguMiA4LjIgMTIuNyAwIDI1LjgtMS4yIDM2LjMtNC4zLjctLjMgMzYtOC45IDQ1LjYtNDUuOCAzLjUtMTMuNSAyLjQtMjYuNS0zLjEtMzkuMXpNMzc2LjIgMTQ5LjhjLTMxLjcgMC0xMDQuMiAyMC4xLTEwNC4yIDEwMy41djE4My41YzAgLjguNiAyLjcgMi43IDIuN2g0MC45YzEuOSAwIDIuOC0uOSAyLjgtMi43VjM0OGMxNi41IDEyLjcgMzUuOCAxOS4xIDU3LjcgMTkuMSA2MC41IDAgMTA4LjctNDguNSAxMDguNy0xMDguNy4xLTYwLjMtNDguMi0xMDguNi0xMDguNi0xMDguNnptMCAxNzAuOWMtMTcuMiAwLTMxLjktNi4xLTQ0LTE4LjItMTIuMi0xMi4yLTE4LjItMjYuOC0xOC4yLTQ0IDAtMzQuNSAyNy42LTYyLjIgNjIuMi02Mi4yIDM0LjUgMCA2Mi4yIDI3LjYgNjIuMiA2Mi4yLjEgMzQuMy0yNy4zIDYyLjItNjIuMiA2Mi4yek0yMjguMyA3Mi41Yy0xNS45IDAtMjguOCAxMi45LTI4LjkgMjguOSAwIDE1LjYgMTIuNyAyOC45IDI4LjkgMjguOXMyOC45LTEzLjEgMjguOS0yOC45YzAtMTYuMi0xMy0yOC45LTI4LjktMjguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlyZUFIZWxwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQzLjEgMEg3MS45QzY3LjkgMzcuMyAzNy40IDY3LjggMCA3MS43djM3MS41YzM3LjQgNC45IDY2IDMyLjQgNzEuOSA2OC44aDM3Mi4yYzMtMzYuNCAzMi41LTY1LjggNjcuOS02OS44VjcxLjdjLTM2LjQtNS45LTY1LTM1LjMtNjguOS03MS43em0tMzcgNDA0LjljLTM2LjMgMC0xOC44LTItNTUuMS0yLTM1LjggMC0yMSAyLTU2LjEgMi01LjkgMC00LjktOC4yIDAtOS44IDIyLjgtNy42IDIyLjktMTAuMiAyNC42LTEyLjggMTAuNC0xNS42IDUuOS04MyA1LjktMTEzIDAtNS4zLTYuNC0xMi44LTEzLjgtMTIuOEgyMDAuNGMtNy40IDAtMTMuOCA3LjUtMTMuOCAxMi44IDAgMzAtNC41IDk3LjQgNS45IDExMyAxLjcgMi41IDEuOCA1LjIgMjQuNiAxMi44IDQuOSAxLjYgNiA5LjggMCA5LjgtMzUuMSAwLTIwLjMtMi01Ni4xLTItMzYuMyAwLTE4LjggMi01NS4xIDItNy45IDAtNS44LTEwLjggMC0xMC44IDEwLjItMy40IDEzLjUtMy41IDIxLjctMTMuOCA3LjctMTIuOSA3LjktNDQuNCA3LjktMTI3LjhWMTUxLjNjMC0yMi4yLTEyLjItMjguMy0yOC42LTMyLjQtOC44LTIuMi00LTExLjggMS0xMS44IDM2LjUgMCAyMC42IDIgNTcuMSAyIDMyLjcgMCAxNi41LTIgNDkuMi0yIDMuMyAwIDguNSA4LjMgMSAxMC44LTQuOSAxLjYtMjcuNiAzLjctMjcuNiAzOS4zIDAgNDUuNi0uMiA1NS44IDEgNjguOCAwIDEuMyAyLjMgMTIuOCAxMi44IDEyLjhoMTA5LjJjMTAuNSAwIDEyLjgtMTEuNSAxMi44LTEyLjggMS4yLTEzIDEtMjMuMiAxLTY4LjggMC0zNS42LTIyLjctMzcuNy0yNy42LTM5LjMtNy41LTIuNS0yLjMtMTAuOCAxLTEwLjggMzIuNyAwIDE2LjUgMiA0OS4yIDIgMzYuNSAwIDIwLjYtMiA1Ny4xLTIgNC45IDAgOS45IDkuNiAxIDExLjgtMTYuNCA0LjEtMjguNiAxMC4zLTI4LjYgMzIuNHYxMDEuMmMwIDgzLjQuMSAxMTQuOSA3LjkgMTI3LjggOC4yIDEwLjIgMTEuNCAxMC40IDIxLjcgMTMuOCA1LjggMCA3LjggMTAuOCAwIDEwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjM1MywyNTQuODc4LDEzMS41MzgsMzMuMWEyLjIwOCwyLjIwOCwwLDAsMC0zLjgyOS4wMDlMLjMsMjU0Ljg4N0EyLjIzNCwyLjIzNCwwLDAsMCwuMywyNTcuMTIyTDEyOS4xMTYsNDc4LjlhMi4yMDgsMi4yMDgsMCwwLDAsMy44My0uMDA5TDI2MC4zNTgsMjU3LjExM0EyLjIzOSwyLjIzOSwwLDAsMCwyNjAuMzUzLDI1NC44NzhabTM5LjA3OC0yNS43MTNhMi4xOSwyLjE5LDAsMCwwLDEuOSwxLjExMWg2Ni41MDlhMi4yMjYsMi4yMjYsMCwwLDAsMS45LTMuMzQxTDI1OS4xMTUsMzMuMTExYTIuMTg3LDIuMTg3LDAsMCwwLTEuOS0xLjExMUgxOTAuNzA3YTIuMjI2LDIuMjI2LDAsMCwwLTEuOSwzLjM0MVpNNTExLjcsMjU0Ljg4NiwzODQuOSwzMy4xMTJBMi4yLDIuMiwwLDAsMCwzODIuOTksMzJoLTY2LjZhMi4yMjYsMi4yMjYsMCwwLDAtMS45MDYsMy4zNEw0NDAuNjUyLDI1NiwzMTQuNDgxLDQ3Ni42NmEyLjIyNiwyLjIyNiwwLDAsMCwxLjkwNiwzLjM0aDY2LjZhMi4yLDIuMiwwLDAsMCwxLjkwNi0xLjExMkw1MTEuNywyNTcuMTE0QTIuMjQzLDIuMjQzLDAsMCwwLDUxMS43LDI1NC44ODZaTTM2Ni4wMTYsMjg0LjkxN0gyOTkuNTA4YTIuMTg3LDIuMTg3LDAsMCwwLTEuOSwxLjExMWwtMTA4LjgsMTkwLjYzMWEyLjIyNiwyLjIyNiwwLDAsMCwxLjksMy4zNDFoNjYuNTA5YTIuMTg3LDIuMTg3LDAsMCwwLDEuOS0xLjExMWwxMDguOC0xOTAuNjMxQTIuMjI2LDIuMjI2LDAsMCwwLDM2Ni4wMTYsMjg0LjkxN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9vbGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0LjUgMzUybDM4LjMuOGMtMTMuMi00LjYtMjYtMTAuMi0zOC4zLTE2Ljh6bTU3LjctNS4zdjUuM2wtMTkuNC44YzM2LjUgMTIuNSA2OS45IDE0LjIgOTQuNyA3LjItMTkuOS4yLTQ1LjgtMi42LTc1LjMtMTMuM3ptNDA4LjktMTE1LjJjMTUuOSAwIDI4LjktMTIuOSAyOC45LTI4LjlzLTEyLjktMjQuNS0yOC45LTI0LjVjLTE1LjkgMC0yOC45IDguNi0yOC45IDI0LjVzMTIuOSAyOC45IDI4LjkgMjguOXptLTI5IDEyMC41SDY0MFYyNDEuNWgtNTcuOXptLTczLjcgMGg1Ny45VjE1Ni43TDUwOC40IDE4NHptLTMxLTExOS40Yy0xOC4yLTE4LjItNTAuNC0xNy4xLTUwLjQtMTcuMXMtMzIuMy0xLjEtNTAuNCAxNy4xYy0xOC4yIDE4LjItMTYuOCAzMy45LTE2LjggNTIuNnMtMS40IDM0LjMgMTYuOCA1Mi41IDUwLjQgMTcuMSA1MC40IDE3LjEgMzIuMyAxLjEgNTAuNC0xNy4xYzE4LjItMTguMiAxNi44LTMzLjggMTYuOC01Mi41LS4xLTE4LjggMS4zLTM0LjUtMTYuOC01Mi42em0tMzkuOCA3MS45YzAgMy42LTEuOCAxMi41LTEwLjcgMTIuNXMtMTAuNy04LjktMTAuNy0xMi41di00MC40YzAtOC43IDcuMy0xMC45IDEwLjctMTAuOXMxMC43IDIuMSAxMC43IDEwLjl6bS0xMDYuMi03MS45Yy0xOC4yLTE4LjItNTAuNC0xNy4xLTUwLjQtMTcuMXMtMzIuMi0xLjEtNTAuNCAxNy4xYy0xLjkgMS45LTMuNyAzLjktNS4zIDYtMzguMi0yOS42LTcyLjUtNDYuNS0xMDIuMS02MS4xdi0yMC43bC0yMi41IDEwLjZjLTU0LjQtMjIuMS04OS0xOC4yLTk3LjMuMSAwIDAtMjQuOSAzMi44IDYxLjggMTEwLjhWMzUyaDU3Ljl2LTI4LjZjLTYuNS00LjItMTMtOC43LTE5LjQtMTMuNi0xNC44LTExLjItMjcuNC0yMS42LTM4LjQtMzEuNHYtMzFjMTMuMSAxNC43IDMwLjUgMzEuNCA1My40IDUwLjNsNC41IDMuNnYtMjkuOGMwLTYuOSAxLjctMTguMiAxMC44LTE4LjJzMTAuNiA2LjkgMTAuNiAxNVYzMTdjMTggMTIuMiAzNy4zIDIyLjEgNTcuNyAyOS42di05My45YzAtMTguNy0xMy40LTM3LjQtNDAuNi0zNy40LTE1LjgtLjEtMzAuNSA4LjItMzguNSAyMS45di01NC4zYzQxLjkgMjAuOSA4My45IDQ2LjUgOTkuOSA1OC4zLTEwLjIgMTQuNi05LjMgMjguMS05LjMgNDMuNyAwIDE4LjctMS40IDM0LjMgMTYuOCA1Mi41czUwLjQgMTcuMSA1MC40IDE3LjEgMzIuMyAxLjEgNTAuNC0xNy4xYzE4LjItMTguMiAxNi43LTMzLjggMTYuNy01Mi41IDAtMTguNSAxLjUtMzQuMi0xNi43LTUyLjN6TTY1LjIgMTg0djYzLjNjLTQ4LjctNTQuNS0zOC45LTc2LTM1LjItNzkuMSAxMy41LTExLjQgMzcuNS04IDY0LjQgMi4xem0yMjYuNSAxMjAuNWMwIDMuNi0xLjggMTIuNS0xMC43IDEyLjVzLTEwLjctOC45LTEwLjctMTIuNXYtNDAuNGMwLTguNyA3LjMtMTAuOSAxMC43LTEwLjlzMTAuNyAyLjEgMTAuNyAxMC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3JuYmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ni4zOCAzNzAuM2EzNy44IDM3LjggMCAxIDEtMzIuMDctMzIuNDJjLTc4LjI4LTExMS4zNSA1Mi0xOTAuNTMgNTItMTkwLjUzLTUuODYgNDMtOC4yNCA5MS4xNi04LjI0IDkxLjE2LTY3LjMxIDQxLjQ5LjkzIDY0LjA2IDM5LjgxIDcyLjg3YTE0MC4zOCAxNDAuMzggMCAwIDAgMTMxLjY2IDkxLjk0YzEuOTIgMCAzLjc3LS4yMSA1LjY3LS4yOGwuMTEgMTguODZjLTk5LjIyIDEuMzktMTU4LjctMjkuMTQtMTg4Ljk0LTUxLjZ6bTEwOC0zMjcuN0EzNy41NyAzNy41NyAwIDAgMCAxODEgMjEuNDVhMzcuOTUgMzcuOTUgMCAxIDAtMzEuMTcgNTQuMjJjLTIyLjU1IDI5LjkxLTUzLjgzIDg5LjU3LTUyLjQyIDE5MGwyMS44NC0uMTVjMC0uOS0uMTQtMS43Ny0uMTQtMi42OEExNDAuNDIgMTQwLjQyIDAgMCAxIDIwNyAxMzIuNzFjOC0zNy43MSAzMC43LTExNC4zIDczLjgtNDQuMjkgMCAwIDQ4LjE0IDIuMzggOTEuMTggOC4yNCAwIDAtNzcuODQtMTI4LTE4Ny41OS01NC4wNnptMzA0LjE5IDEzNC4xN2EzNy45NCAzNy45NCAwIDEgMC01My44NC0yOC43QzQwMyAxMjYuMTMgMzQ0Ljg5IDk5IDI1MS4yOCAxMDAuMzNsLjE0IDIyLjVjMi43LS4xNSA1LjM5LS40MSA4LjE0LS40MWExNDAuMzcgMTQwLjM3IDAgMCAxIDEzMC40OSA4OC43NmMzOS4xIDkgMTA1LjA2IDMxLjU4IDM4LjQ2IDcyLjU0IDAgMC0yLjM0IDQ4LjEzLTguMjEgOTEuMTYgMCAwIDEzMy40NS04MS4xNiA0OS0xOTQuNjFhMzcuNDUgMzcuNDUgMCAwIDAgMTkuMzEtMy41ek0zNzQuMDYgNDM2LjI0YzIxLjQzLTMyLjQ2IDQ2LjQyLTg5LjY5IDQ1LjE0LTE3OS42NmwtMTkuNTIuMTRjLjA4IDIuMDYuMyA0LjA3LjMgNi4xNWExNDAuMzQgMTQwLjM0IDAgMCAxLTkxLjM5IDEzMS40NWMtOC44NSAzOC45NS0zMS40NCAxMDYuNjYtNzIuNzcgMzkuNDkgMCAwLTQ4LjEyLTIuMzQtOTEuMTktOC4yMiAwIDAgNzkuOTIgMTMxLjM0IDE5MS45IDUxYTM3LjUgMzcuNSAwIDAgMCAzLjY0IDE0IDM3LjkzIDM3LjkzIDAgMSAwIDMzLjg5LTU0LjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3RqYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE0LjkgMTYxLjVDMzQwLjIgMjkgMTIxLjEgMCAxMjEuMSAwUzIyMi4yIDExMC40IDkzIDE5Ny43QzExLjMgMjUyLjgtMjEgMzI0LjQgMTQgNDAyLjZjMjYuOCA1OS45IDgzLjUgODQuMyAxNDQuNiA5My40LTI5LjItNTUuMS02LjYtMTIyLjQtNC4xLTEyOS42IDU3LjEgODYuNCAxNjUgMCAxMTAuOC05My45IDcxIDE1LjQgODEuNiAxMzguNiAyNy4xIDIxNS41IDgwLjUtMjUuMyAxMzQuMS04OC45IDE0OC44LTE0NS42IDE1LjUtNTkuMyAzLjctMTI3LjktMjYuMy0xODAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91enogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjkgMzMwLjdIMTcxLjNWNDgwSDE3VjMyaDEwOS41djEwNC41bDMwNS4xIDg1LjZWNDgwSDI3NS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIdG1sNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMybDM0LjkgMzk1LjhMMTkxLjUgNDgwbDE1Ny42LTUyLjJMMzg0IDMySDB6bTMwOC4yIDEyNy45SDEyNC40bDQuMSA0OS40aDE3NS42bC0xMy42IDE0OC40LTk3LjkgMjd2LjNoLTEuMWwtOTguNy0yNy4zLTYtNzUuOGg0Ny43TDEzOCAzMjBsNTMuNSAxNC41IDUzLjctMTQuNSA2LTYyLjJIODQuM0w3MS41IDExMi4yaDI0MS4xbC00LjQgNDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHVic3BvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNCAyMTEuNmMtMjUuMSAyMy43LTQwLjggNTcuMy00MC44IDk0LjYgMCAyOS4zIDkuNyA1Ni4zIDI2IDc4TDIwMy4xIDQzNGMtNC40LTEuNi05LjEtMi41LTE0LTIuNS0xMC44IDAtMjAuOSA0LjItMjguNSAxMS44LTcuNiA3LjYtMTEuOCAxNy44LTExLjggMjguNnM0LjIgMjAuOSAxMS44IDI4LjVjNy42IDcuNiAxNy44IDExLjYgMjguNSAxMS42IDEwLjggMCAyMC45LTMuOSAyOC42LTExLjYgNy42LTcuNiAxMS44LTE3LjggMTEuOC0yOC41IDAtNC4yLS42LTguMi0xLjktMTIuMWw1MC01MC4yYzIyIDE2LjkgNDkuNCAyNi45IDc5LjMgMjYuOSA3MS45IDAgMTMwLTU4LjMgMTMwLTEzMC4yIDAtNjUuMi00Ny43LTExOS4yLTExMC4yLTEyOC43VjExNmMxNy41LTcuNCAyOC4yLTIzLjggMjguMi00Mi45IDAtMjYuMS0yMC45LTQ3LjktNDctNDcuOVMzMTEuMiA0NyAzMTEuMiA3My4xYzAgMTkuMSAxMC43IDM1LjUgMjguMiA0Mi45djYxLjJjLTE1LjIgMi4xLTI5LjYgNi43LTQyLjcgMTMuNi0yNy42LTIwLjktMTE3LjUtODUuNy0xNjguOS0xMjQuOCAxLjItNC40IDItOSAyLTEzLjhDMTI5LjggMjMuNCAxMDYuMyAwIDc3LjQgMCA0OC42IDAgMjUuMiAyMy40IDI1LjIgNTIuMmMwIDI4LjkgMjMuNCA1Mi4zIDUyLjIgNTIuMyA5LjggMCAxOC45LTIuOSAyNi44LTcuNmwxNjMuMiAxMTQuN3ptODkuNSAxNjMuNmMtMzguMSAwLTY5LTMwLjktNjktNjlzMzAuOS02OSA2OS02OSA2OSAzMC45IDY5IDY5LTMwLjkgNjktNjkgNjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlkZWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNS42MSwxNjUuNDhhNDkuMDcsNDkuMDcsMCwxLDAsNDkuMDYsNDkuMDZBNDkuMDgsNDkuMDgsMCwwLDAsMTI1LjYxLDE2NS40OFpNODYuMTUsNDI1Ljg0aDc4Ljk0VjI4NS4zMkg4Ni4xNVptMTUxLjQ2LTIxMS42YzAtMjAtMTAtMjIuNTMtMTguNzQtMjIuNTNIMjA0LjgyVjIzNy41aDE0LjA1QzIyOC42MiwyMzcuNSwyMzcuNjEsMjM0LjY5LDIzNy42MSwyMTQuMjRabTIwMS42OSw0NlYxNjguOTNoMjIuNzVWMjM3LjVoMzMuNjlDNDg2LjUsMTEzLjA4LDM4OC42MSw4Ni4xOSwyOTkuNjcsODYuMTlIMjA0Ljg0VjE2OWgxNGMyNS42LDAsNDEuNSwxNy4zNSw0MS41LDQ1LjI2LDAsMjguODEtMTUuNTIsNDYtNDEuNSw0NmgtMTRWNDI1Ljg4aDk0LjgzYzE0NC42MSwwLDE5NC45NC02Ny4xNiwxOTYuNzItMTY1LjY0Wm0tMTA5Ljc1LDBIMjczLjNWMTY5aDU0LjQzdjIyLjczSDI5NnYxMC41OGgzMFYyMjVIMjk2VjIzNy41aDMzLjUxWm03NC42NiwwLTUuMTYtMTcuNjdIMzY5LjMxbC01LjE4LDE3LjY3SDM0MC40N0wzNjgsMTY4LjkyaDMyLjM1bDI3LjUzLDkxLjM0Wk0yOTkuNjUsMzJIMzJWNDgwSDI5OS42NWMxNjEuODUsMCwyNTEtNzkuNzMsMjUxLTIyNC41MkM1NTAuNjIsMTcyLDUxOCwzMiwyOTkuNjUsMzJabTAsNDI2LjkySDUzLjA3VjUzLjA3SDI5OS42NWMxNDIuMSwwLDIyOS45LDY0LjYxLDIyOS45LDIwMi40MUM1MjkuNTUsMzg5LjU3LDQ0OC41NSw0NTguOTIsMjk5LjY1LDQ1OC45MlptODMuODYtMjY0Ljg1TDM3NiwyMTkuODhIMzkyLjRsLTcuNTItMjUuODFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUltZGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjEuMyAyMjkuMkgyMWMuMS0uMS4yLS4zLjMtLjR6TTk3IDMxOS44SDY0VjE5MmgzM3ptMTEzLjIgMGgtMjguN3YtODYuNGwtMTEuNiA4Ni40aC0yMC42bC0xMi4yLTg0LjV2ODQuNWgtMjlWMTkyaDQyLjhjMy4zIDE5LjggNiAzOS45IDguNyA1OS45bDcuNi01OS45aDQzem0xMS40IDBWMTkyaDI0LjZjMTcuNiAwIDQ0LjctMS42IDQ5IDIwLjkgMS43IDcuNiAxLjQgMTYuMyAxLjQgMjQuNCAwIDg4LjUgMTEuMSA4Mi42LTc1IDgyLjV6bTE2MC45LTI5LjJjMCAxNS43LTIuNCAzMC45LTIyLjIgMzAuOS05IDAtMTUuMi0zLTIwLjktOS44bC0xLjkgOC4xaC0yOS44VjE5MmgzMS43djQxLjdjNi02LjUgMTItOS4yIDIwLjktOS4yIDIxLjQgMCAyMi4yIDEyLjggMjIuMiAzMC4xek0yNjUgMjI5LjljMC05LjcgMS42LTE2LTEwLjMtMTZ2ODMuN2MxMi4yLjMgMTAuMy04LjcgMTAuMy0xOC40em04NS41IDI2LjFjMC01LjQgMS4xLTEyLjctNi4yLTEyLjctNiAwLTQuOSA4LjktNC45IDEyLjcgMCAuNi0xLjEgMzkuNiAxLjEgNDQuNy44IDEuNiAyLjIgMi40IDMuOCAyLjQgNy44IDAgNi4yLTkgNi4yLTE0LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlubm9zb2Z0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMi41NTksMTU5LjcxYTI3LjM3OSwyNy4zNzksMCwwLDAtMTMuODY2LTIzLjMzNywyNi40MiwyNi40MiwwLDAsMC0yNi4yMTEuMTMzTDczLjk0MywzMTQuNjQ3VjE3Ni4yNjFhMTEuOTU1LDExLjk1NSwwLDAsMSw2LjA0Ny0xMC4zNEwyMTguMDY2LDg2LjIwOGExMi4xNTMsMTIuMTUzLDAsMCwxLDExLjkyMi4wMjVsMzIuNjU2LDE4Ljg1M0wxMTIuNTgxLDE5MS43MjN2NTZMMzU5LjY0MiwxMDUuMDg2LDI0MS4xMjksMzYuNjc5Yy0xMC45OTItNi4xMjktMjIuMy02LjI1NS0zMy44LS4yN2wtMTY0LjYsOTUuMDI2Yy0xMC42MzQsNi4xMi0xNi43NzEsMTYuMzktMTcuMjksMjkuMTI0bDAsMTkxLjVjLjE3LDEwLjEzNSw1LjA4LDE4LjY3MiwxMy40NzQsMjMuNDI4YTI3LjAzNywyNy4wMzcsMCwwLDAsMjYuNzM2LS4wNDVMMzc0LjA1NywxOTcuMzc2VjMzNS42NTdhMTEuOTc2LDExLjk3NiwwLDAsMS01LjkyLDEwLjM2OEwyMzAuMDI1LDQyNS43N2ExMi4xNzUsMTIuMTc1LDAsMCwxLTExLjkzNy4wNjJsLTMyLjcyMy0xOC45LDE1MC4wNTEtODYuNjI3di01Nkw4OC4zNjcsNDA2LjkzMmwxMTguNzk0LDY4LjU4M2EzMy44OCwzMy44OCwwLDAsMCwzNC4yNS0uMzI3bDE2NC41MjctOTQuOTk1YzEwLjc0Ni02LjYzMSwxNi42NDktMTcuMTE4LDE2LjYyNC0yOS41MjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluc3RhZ3JhbVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQsMjAyLjY2QTUzLjM0LDUzLjM0LDAsMSwwLDI3Ny4zNiwyNTYsNTMuMzgsNTMuMzgsMCwwLDAsMjI0LDIwMi42NlptMTI0LjcxLTQxYTU0LDU0LDAsMCwwLTMwLjQxLTMwLjQxYy0yMS04LjI5LTcxLTYuNDMtOTQuMy02LjQzcy03My4yNS0xLjkzLTk0LjMxLDYuNDNhNTQsNTQsMCwwLDAtMzAuNDEsMzAuNDFjLTguMjgsMjEtNi40Myw3MS4wNS02LjQzLDk0LjMzUzkxLDMyOS4yNiw5OS4zMiwzNTAuMzNhNTQsNTQsMCwwLDAsMzAuNDEsMzAuNDFjMjEsOC4yOSw3MSw2LjQzLDk0LjMxLDYuNDNzNzMuMjQsMS45Myw5NC4zLTYuNDNhNTQsNTQsMCwwLDAsMzAuNDEtMzAuNDFjOC4zNS0yMSw2LjQzLTcxLjA1LDYuNDMtOTQuMzNTMzU3LjEsMTgyLjc0LDM0OC43NSwxNjEuNjdaTTIyNCwzMzhhODIsODIsMCwxLDEsODItODJBODEuOSw4MS45LDAsMCwxLDIyNCwzMzhabTg1LjM4LTE0OC4zYTE5LjE0LDE5LjE0LDAsMSwxLDE5LjEzLTE5LjE0QTE5LjEsMTkuMSwwLDAsMSwzMDkuNDIsMTg5Ljc0Wk00MDAsMzJINDhBNDgsNDgsMCwwLDAsMCw4MFY0MzJhNDgsNDgsMCwwLDAsNDgsNDhINDAwYTQ4LDQ4LDAsMCwwLDQ4LTQ4VjgwQTQ4LDQ4LDAsMCwwLDQwMCwzMlpNMzgyLjg4LDMyMmMtMS4yOSwyNS42My03LjE0LDQ4LjM0LTI1Ljg1LDY3cy00MS40LDI0LjYzLTY3LDI1Ljg1Yy0yNi40MSwxLjQ5LTEwNS41OSwxLjQ5LTEzMiwwLTI1LjYzLTEuMjktNDguMjYtNy4xNS02Ny0yNS44NXMtMjQuNjMtNDEuNDItMjUuODUtNjdjLTEuNDktMjYuNDItMS40OS0xMDUuNjEsMC0xMzIsMS4yOS0yNS42Myw3LjA3LTQ4LjM0LDI1Ljg1LTY3czQxLjQ3LTI0LjU2LDY3LTI1Ljc4YzI2LjQxLTEuNDksMTA1LjU5LTEuNDksMTMyLDAsMjUuNjMsMS4yOSw0OC4zMyw3LjE1LDY3LDI1Ljg1czI0LjYzLDQxLjQyLDI1Ljg1LDY3LjA1QzM4NC4zNywyMTYuNDQsMzg0LjM3LDI5NS41NiwzODIuODgsMzIyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnN0YWdyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjEgMTQxYy02My42IDAtMTE0LjkgNTEuMy0xMTQuOSAxMTQuOXM1MS4zIDExNC45IDExNC45IDExNC45UzMzOSAzMTkuNSAzMzkgMjU1LjkgMjg3LjcgMTQxIDIyNC4xIDE0MXptMCAxODkuNmMtNDEuMSAwLTc0LjctMzMuNS03NC43LTc0LjdzMzMuNS03NC43IDc0LjctNzQuNyA3NC43IDMzLjUgNzQuNyA3NC43LTMzLjYgNzQuNy03NC43IDc0Ljd6bTE0Ni40LTE5NC4zYzAgMTQuOS0xMiAyNi44LTI2LjggMjYuOC0xNC45IDAtMjYuOC0xMi0yNi44LTI2LjhzMTItMjYuOCAyNi44LTI2LjggMjYuOCAxMiAyNi44IDI2Ljh6bTc2LjEgMjcuMmMtMS43LTM1LjktOS45LTY3LjctMzYuMi05My45LTI2LjItMjYuMi01OC0zNC40LTkzLjktMzYuMi0zNy0yLjEtMTQ3LjktMi4xLTE4NC45IDAtMzUuOCAxLjctNjcuNiA5LjktOTMuOSAzNi4xcy0zNC40IDU4LTM2LjIgOTMuOWMtMi4xIDM3LTIuMSAxNDcuOSAwIDE4NC45IDEuNyAzNS45IDkuOSA2Ny43IDM2LjIgOTMuOXM1OCAzNC40IDkzLjkgMzYuMmMzNyAyLjEgMTQ3LjkgMi4xIDE4NC45IDAgMzUuOS0xLjcgNjcuNy05LjkgOTMuOS0zNi4yIDI2LjItMjYuMiAzNC40LTU4IDM2LjItOTMuOSAyLjEtMzcgMi4xLTE0Ny44IDAtMTg0Ljh6TTM5OC44IDM4OGMtNy44IDE5LjYtMjIuOSAzNC43LTQyLjYgNDIuNi0yOS41IDExLjctOTkuNSA5LTEzMi4xIDlzLTEwMi43IDIuNi0xMzIuMS05Yy0xOS42LTcuOC0zNC43LTIyLjktNDIuNi00Mi42LTExLjctMjkuNS05LTk5LjUtOS0xMzIuMXMtMi42LTEwMi43IDktMTMyLjFjNy44LTE5LjYgMjIuOS0zNC43IDQyLjYtNDIuNiAyOS41LTExLjcgOTkuNS05IDEzMi4xLTlzMTAyLjctMi42IDEzMi4xIDljMTkuNiA3LjggMzQuNyAyMi45IDQyLjYgNDIuNiAxMS43IDI5LjUgOSA5OS41IDkgMTMyLjFzMi43IDEwMi43LTkgMTMyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluc3RhbG9kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1My4zODQsNDgwSDM4Ny4xMTNMNTAyLjU1NCwyNzUuNzY1LDIwNC4yMjksMzMzLjIxMVpNNTA0LjcyNiwyNDAuMDc4LDM4Ny4xMTMsMzJIMTU1LjY2OUwzNjAuMjMsMjY3LjlaTTEyNC4zODYsNDguODA5LDcuMjc0LDI1NiwxMjMuMjM2LDQ2MS4xNTQsMjI1LjYyNywxNjUuNTYxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnRlcmNvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTIgMzJINTZDMjUuMSAzMiAwIDU3LjEgMCA4OHYzMzZjMCAzMC45IDI1LjEgNTYgNTYgNTZoMzM2YzMwLjkgMCA1Ni0yNS4xIDU2LTU2Vjg4YzAtMzAuOS0yNS4xLTU2LTU2LTU2em0tMTA4LjMgODIuMWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxOTkuNWMwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxMTQuMXptLTc0LjYtNy41YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjIxNi41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjEwNi42em0tNzQuNyA3LjVjMC0xOS44IDI5LjktMTkuOCAyOS45IDB2MTk5LjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTE0LjF6TTU5LjcgMTQ0YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjEzNC4zYzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjE0NHptMzIzLjQgMjI3LjhjLTcyLjggNjMtMjQxLjcgNjUuNC0zMTguMSAwLTE1LTEyLjggNC40LTM1LjUgMTkuNC0yMi43IDY1LjkgNTUuMyAyMTYuMSA1My45IDI3OS4zIDAgMTQuOS0xMi45IDM0LjMgOS44IDE5LjQgMjIuN3ptNS4yLTkzLjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTQ0YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjEzNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnRlcm5ldEV4cGxvcmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4My4wNDkgMTU5LjcwNmMxMC44NTUtMjQuNTc1IDIxLjQyNC02MC40MzggMjEuNDI0LTg3Ljg3MSAwLTcyLjcyMi03OS42NDEtOTguMzcxLTIwOS42NzMtMzguNTc3LTEwNy42MzItNy4xODEtMjExLjIyMSA3My42Ny0yMzcuMDk4IDE4Ni40NTcgMzAuODUyLTM0Ljg2MiA3OC4yNzEtODIuMjk4IDEyMS45NzctMTAxLjE1OEMxMjUuNDA0IDE2Ni44NSA3OS4xMjggMjI4LjAwMiA0My45OTIgMjkxLjcyNSAyMy4yNDYgMzI5LjY1MSAwIDM5MC45NCAwIDQzNi43NDdjMCA5OC41NzUgOTIuODU0IDg2LjUgMTgwLjI1MSA0Mi4wMDYgMzEuNDIzIDE1LjQzIDY2LjU1OSAxNS41NzMgMTAxLjY5NSAxNS41NzMgOTcuMTI0IDAgMTg0LjI0OS01NC4yOTQgMjE2LjgxNC0xNDYuMDIySDM3Ny45MjdjLTUyLjUwOSA4OC41OTMtMTk2LjgxOSA1Mi45OTYtMTk2LjgxOS00Ny40MzZINTA5LjljNi40MDctNDMuNTgxLTEuNjU1LTk1LjcxNS0yNi44NTEtMTQxLjE2MnpNNjQuNTU5IDM0Ni44NzdjMTcuNzExIDUxLjE1IDUzLjcwMyA5NS44NzEgMTAwLjI2NiAxMjMuMzA0LTg4Ljc0MSA0OC45NC0xNzMuMjY3IDI5LjA5Ni0xMDAuMjY2LTEyMy4zMDR6bTExNS45NzctMTA4Ljg3M2MyLTU1LjE1MSA1MC4yNzYtOTQuODcxIDEwMy45OC05NC44NzEgNTMuNDE4IDAgMTAxLjk4MSAzOS43MiAxMDMuOTgxIDk0Ljg3MUgxODAuNTM2em0xODQuNTM2LTE4Ny42YzIxLjQyNS0xMC4yODcgNDguNTYzLTIyLjAwMyA3Mi41NTgtMjIuMDAzIDMxLjQyMiAwIDU0LjI3NCAyMS43MTcgNTQuMjc0IDUzLjcyMiAwIDIwLjAwMy03LjQyNyA0OS4wMDctMTQuNTY5IDY3Ljg2Ny0yNi4yOC00Mi4yOTItNjUuOTg2LTgxLjU4NC0xMTIuMjYzLTk5LjU4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW52aXNpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3LjQgMzJINDAuNkMxOC4yIDMyIDAgNTAuMiAwIDcyLjZ2MzY2LjhDMCA0NjEuOCAxOC4yIDQ4MCA0MC42IDQ4MGgzNjYuOGMyMi40IDAgNDAuNi0xOC4yIDQwLjYtNDAuNlY3Mi42YzAtMjIuNC0xOC4yLTQwLjYtNDAuNi00MC42ek0xNzYuMSAxNDUuNmMuNCAyMy40LTIyLjQgMjcuMy0yNi42IDI3LjQtMTQuOSAwLTI3LjEtMTItMjcuMS0yNyAuMS0zNS4yIDUzLjEtMzUuNSA1My43LS40ek0zMzIuOCAzNzdjLTY1LjYgMC0zNC4xLTc0LTI1LTEwNi42IDE0LjEtNDYuNC00NS4yLTU5LTU5LjkuN2wtMjUuOCAxMDMuM0gxNzdsOC4xLTMyLjVjLTMxLjUgNTEuOC05NC42IDQ0LjQtOTQuNi00LjMuMS0xNC4zLjktMTQgMjMtMTA0LjFIODEuN2w5LjctMzUuNmg3Ni40Yy0zMy42IDEzMy43LTMyLjYgMTI2LjktMzIuOSAxMzguMiAwIDIwLjkgNDAuOSAxMy41IDU3LjQtMjMuMmwxOS44LTc5LjRoLTMyLjNsOS43LTM1LjZoNjguOGwtOC45IDQwLjVjNDAuNS03NS41IDEyNy45LTQ3LjggMTAxLjggMzgtMTQuMiA1MS4xLTE0LjYgNTAuNy0xNC45IDU4LjggMCAxNS41IDE3LjUgMjIuNiAzMS44LTE2LjlMMzg2IDMyNWMtMTAuNSAzNi43LTI5LjQgNTItNTMuMiA1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW94aG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTYgMTYwaC02Ny4zQzUxMS4yIDcwLjcgNDIyLjkgOCAzMjAgOCAxODMgOCA3MiAxMTkgNzIgMjU2YzAgMTYuNCAxLjYgMzIuNSA0LjcgNDhIMjRjLTEzLjMgMC0yNCAxMC44LTI0IDI0IDAgMTMuMyAxMC43IDI0IDI0IDI0aDY3LjNjMzcuNSA4OS4zIDEyNS44IDE1MiAyMjguNyAxNTIgMTM3IDAgMjQ4LTExMSAyNDgtMjQ4IDAtMTYuNC0xLjYtMzIuNS00LjctNDhINjE2YzEzLjMgMCAyNC0xMC44IDI0LTI0IDAtMTMuMy0xMC43LTI0LTI0LTI0em0tOTYgOTZjMCAxMTAuNS04OS41IDIwMC0yMDAgMjAwLTc1LjcgMC0xNDEuNi00Mi0xNzUuNS0xMDRINDI0YzEzLjMgMCAyNC0xMC44IDI0LTI0IDAtMTMuMy0xMC43LTI0LTI0LTI0SDEyNS44Yy0zLjgtMTUuNC01LjgtMzEuNC01LjgtNDggMC0xMTAuNSA4OS41LTIwMCAyMDAtMjAwIDc1LjcgMCAxNDEuNiA0MiAxNzUuNSAxMDRIMjE2Yy0xMy4zIDAtMjQgMTAuOC0yNCAyNCAwIDEzLjMgMTAuNyAyNCAyNCAyNGgyOTguMmMzLjggMTUuNCA1LjggMzEuNCA1LjggNDh6bS0zMDQtMjRoMjA4YzEzLjMgMCAyNCAxMC43IDI0IDI0IDAgMTMuMi0xMC43IDI0LTI0IDI0SDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjQgMC0xMy4yIDEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUl0Y2hJbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MS45MiAzNC43N0M1MC4yIDQ3LjY3IDcuNCA5Ni44NCA3IDEwOS43M3YyMS4zNGMwIDI3LjA2IDI1LjI5IDUwLjg0IDQ4LjI1IDUwLjg0IDI3LjU3IDAgNTAuNTQtMjIuODUgNTAuNTQtNTAgMCAyNy4xMiAyMi4xOCA1MCA0OS43NiA1MHM0OS0yMi44NSA0OS01MGMwIDI3LjEyIDIzLjU5IDUwIDUxLjE2IDUwaC41YzI3LjU3IDAgNTEuMTYtMjIuODUgNTEuMTYtNTAgMCAyNy4xMiAyMS40NyA1MCA0OSA1MHM0OS43Ni0yMi44NSA0OS43Ni01MGMwIDI3LjEyIDIzIDUwIDUwLjU0IDUwIDIzIDAgNDguMjUtMjMuNzggNDguMjUtNTAuODR2LTIxLjM0Yy0uNC0xMi45LTQzLjItNjIuMDctNjQuOTItNzVDMzcyLjU2IDMyLjQgMzI1Ljc2IDMyIDI1NiAzMlM5MS4xNCAzMy4xIDcxLjkyIDM0Ljc3em0xMzIuMzIgMTM0LjM5Yy0yMiAzOC40LTc3LjkgMzguNzEtOTkuODUuMjUtMTMuMTcgMjMuMTQtNDMuMTcgMzIuMDctNTYgMjcuNjYtMy44NyA0MC4xNS0xMy42NyAyMzcuMTMgMTcuNzMgMjY5LjE1IDgwIDE4LjY3IDMwMi4wOCAxOC4xMiAzNzkuNzYgMCAzMS42NS0zMi4yNyAyMS4zMi0yMzIgMTcuNzUtMjY5LjE1LTEyLjkyIDQuNDQtNDIuODgtNC42LTU2LTI3LjY2LTIyIDM4LjUyLTc3Ljg1IDM4LjEtOTkuODUtLjI0LTcuMSAxMi40OS0yMy4wNSAyOC45NC01MS43NiAyOC45NGE1Ny41NCA1Ny41NCAwIDAgMS01MS43NS0yOC45NHptLTQxLjU4IDUzLjc3YzE2LjQ3IDAgMzEuMDkgMCA0OS4yMiAxOS43OGE0MzYuOTEgNDM2LjkxIDAgMCAxIDg4LjE4IDBDMzE4LjIyIDIyMyAzMzIuODUgMjIzIDM0OS4zMSAyMjNjNTIuMzMgMCA2NS4yMiA3Ny41MyA4My44NyAxNDQuNDUgMTcuMjYgNjIuMTUtNS41MiA2My42Ny0zMy45NSA2My43My00Mi4xNS0xLjU3LTY1LjQ5LTMyLjE4LTY1LjQ5LTYyLjc5LTM5LjI1IDYuNDMtMTAxLjkzIDguNzktMTU1LjU1IDAgMCAzMC42MS0yMy4zNCA2MS4yMi02NS40OSA2Mi43OS0yOC40Mi0uMDYtNTEuMi0xLjU4LTMzLjk0LTYzLjczIDE4LjY3LTY3IDMxLjU2LTE0NC40NSA4My44OC0xNDQuNDV6TTI1NiAyNzAuNzlzLTQ0LjM4IDQwLjc3LTUyLjM1IDU1LjIxbDI5LTEuMTd2MjUuMzJjMCAxLjU1IDIxLjM0LjE2IDIzLjMzLjE2IDExLjY1LjU0IDIzLjMxIDEgMjMuMzEtLjE2di0yNS4yOGwyOSAxLjE3Yy04LTE0LjQ4LTUyLjM1LTU1LjI0LTUyLjM1LTU1LjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdHVuZXNOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4MS45IDM4OC4yYy02LjQgMjcuNC0yNy4yIDQyLjgtNTUuMSA0OC0yNC41IDQuNS00NC45IDUuNi02NC41LTEwLjItMjMuOS0yMC4xLTI0LjItNTMuNC0yLjctNzQuNCAxNy0xNi4yIDQwLjktMTkuNSA3Ni44LTI1LjggNi0xLjEgMTEuMi0yLjUgMTUuNi03LjQgNi40LTcuMiA0LjQtNC4xIDQuNC0xNjMuMiAwLTExLjItNS41LTE0LjMtMTctMTIuMy04LjIgMS40LTE4NS43IDM0LjYtMTg1LjcgMzQuNi0xMC4yIDIuMi0xMy40IDUuMi0xMy40IDE2LjcgMCAyMzQuNyAxLjEgMjIzLjktMi41IDIzOS41LTQuMiAxOC4yLTE1LjQgMzEuOS0zMC4yIDM5LjUtMTYuOCA5LjMtNDcuMiAxMy40LTYzLjQgMTAuNC00My4yLTguMS01OC40LTU4LTI5LjEtODYuNiAxNy0xNi4yIDQwLjktMTkuNSA3Ni44LTI1LjggNi0xLjEgMTEuMi0yLjUgMTUuNi03LjQgMTAuMS0xMS41IDEuOC0yNTYuNiA1LjItMjcwLjIuOC01LjIgMy05LjYgNy4xLTEyLjkgNC4yLTMuNSAxMS44LTUuNSAxMy40LTUuNSAyMDQtMzguMiAyMjguOS00My4xIDIzMi40LTQzLjEgMTEuNS0uOCAxOC4xIDYgMTguMSAxNy42LjIgMzQ0LjUgMS4xIDMyNi0xLjggMzM4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUl0dW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjMuNiA4MC4zQzEyOSA4MC4zIDUyLjUgMTU3IDUyLjUgMjUxLjVTMTI5IDQyMi44IDIyMy42IDQyMi44czE3MS4yLTc2LjcgMTcxLjItMTcxLjJjMC05NC42LTc2LjctMTcxLjMtMTcxLjItMTcxLjN6bTc5LjQgMjQwYy0zLjIgMTMuNi0xMy41IDIxLjItMjcuMyAyMy44LTEyLjEgMi4yLTIyLjIgMi44LTMxLjktNS0xMS44LTEwLTEyLTI2LjQtMS40LTM2LjggOC40LTggMjAuMy05LjYgMzgtMTIuOCAzLS41IDUuNi0xLjIgNy43LTMuNyAzLjItMy42IDIuMi0yIDIuMi04MC44IDAtNS42LTIuNy03LjEtOC40LTYuMS00IC43LTkxLjkgMTcuMS05MS45IDE3LjEtNSAxLjEtNi43IDIuNi02LjcgOC4zIDAgMTE2LjEuNSAxMTAuOC0xLjIgMTE4LjUtMi4xIDktNy42IDE1LjgtMTQuOSAxOS42LTguMyA0LjYtMjMuNCA2LjYtMzEuNCA1LjItMjEuNC00LTI4LjktMjguNy0xNC40LTQyLjkgOC40LTggMjAuMy05LjYgMzgtMTIuOCAzLS41IDUuNi0xLjIgNy43LTMuNyA1LTUuNy45LTEyNyAyLjYtMTMzLjcuNC0yLjYgMS41LTQuOCAzLjUtNi40IDIuMS0xLjcgNS44LTIuNyA2LjctMi43IDEwMS0xOSAxMTMuMy0yMS40IDExNS4xLTIxLjQgNS43LS40IDkgMyA5IDguNy0uMSAxNzAuNi40IDE2MS40LTEgMTY3LjZ6TTM0NS4yIDMySDEwMi44QzQ1LjkgMzIgMCA3Ny45IDAgMTM0Ljh2MjQyLjRDMCA0MzQuMSA0NS45IDQ4MCAxMDIuOCA0ODBoMjQyLjRjNTcgMCAxMDIuOC00NS45IDEwMi44LTEwMi44VjEzNC44QzQ0OCA3Ny45IDQwMi4xIDMyIDM0NS4yIDMyek0yMjMuNiA0NDRjLTEwNi4zIDAtMTkyLjUtODYuMi0xOTIuNS0xOTIuNVMxMTcuMyA1OSAyMjMuNiA1OXMxOTIuNSA4Ni4yIDE5Mi41IDE5Mi41UzMyOS45IDQ0NCAyMjMuNiA0NDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUphdmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc3Ljc0IDMxMi45YzkuOC02LjcgMjMuNC0xMi41IDIzLjQtMTIuNXMtMzguNyA3LTc3LjIgMTAuMmMtNDcuMSAzLjktOTcuNyA0LjctMTIzLjEgMS4zLTYwLjEtOCAzMy0zMC4xIDMzLTMwLjFzLTM2LjEtMi40LTgwLjYgMTljLTUyLjUgMjUuNCAxMzAgMzcgMjI0LjUgMTIuMXptLTg1LjQtMzIuMWMtMTktNDIuNy04My4xLTgwLjIgMC0xNDUuOEMyOTYgNTMuMiAyNDIuODQgMCAyNDIuODQgMGMyMS41IDg0LjUtNzUuNiAxMTAuMS0xMTAuNyAxNjIuNi0yMy45IDM1LjkgMTEuNyA3NC40IDYwLjIgMTE4LjJ6bTExNC42LTE3Ni4yYy4xIDAtMTc1LjIgNDMuOC05MS41IDE0MC4yIDI0LjcgMjguNC02LjUgNTQtNi41IDU0czYyLjctMzIuNCAzMy45LTcyLjljLTI2LjktMzcuOC00Ny41LTU2LjYgNjQuMS0xMjEuM3ptLTYuMSAyNzAuNWExMi4xOSAxMi4xOSAwIDAgMS0yIDIuNmMxMjguMy0zMy43IDgxLjEtMTE4LjkgMTkuOC05Ny4zYTE3LjMzIDE3LjMzIDAgMCAwLTguMiA2LjMgNzAuNDUgNzAuNDUgMCAwIDEgMTEtM2MzMS02LjUgNzUuNSA0MS41LTIwLjYgOTEuNHpNMzQ4IDQzNy40czE0LjUgMTEuOS0xNS45IDIxLjJjLTU3LjkgMTcuNS0yNDAuOCAyMi44LTI5MS42LjctMTguMy03LjkgMTYtMTkgMjYuOC0yMS4zIDExLjItMi40IDE3LjctMiAxNy43LTItMjAuMy0xNC4zLTEzMS4zIDI4LjEtNTYuNCA0MC4yQzIzMi44NCA1MDkuNCA0MDEgNDYxLjMgMzQ4IDQzNy40ek0xMjQuNDQgMzk2Yy03OC43IDIyIDQ3LjkgNjcuNCAxNDguMSAyNC41YTE4NS44OSAxODUuODkgMCAwIDEtMjguMi0xMy44Yy00NC43IDguNS02NS40IDkuMS0xMDYgNC41LTMzLjUtMy44LTEzLjktMTUuMi0xMy45LTE1LjJ6bTE3OS44IDk3LjJjLTc4LjcgMTQuOC0xNzUuOCAxMy4xLTIzMy4zIDMuNiAwLS4xIDExLjggOS43IDcyLjQgMTMuNiA5Mi4yIDUuOSAyMzMuOC0zLjMgMjM3LjEtNDYuOSAwIDAtNi40IDE2LjUtNzYuMiAyOS43ek0yNjAuNjQgMzUzYy01OS4yIDExLjQtOTMuNSAxMS4xLTEzNi44IDYuNi0zMy41LTMuNS0xMS42LTE5LjctMTEuNi0xOS43LTg2LjggMjguOCA0OC4yIDYxLjQgMTY5LjUgMjUuOWE2MC4zNyA2MC4zNyAwIDAgMS0yMS4xLTEyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplZGlPcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTguNSAzNzMuNmM5NS45LTEyMi4xIDE3LjItMjMzLjEgMTcuMi0yMzMuMSA0NS40IDg1LjgtNDEuNCAxNzAuNS00MS40IDE3MC41IDEwNS0xNzEuNS02MC41LTI3MS41LTYwLjUtMjcxLjUgOTYuOSA3Mi43LTEwLjEgMTkwLjctMTAuMSAxOTAuNyA4NS44IDE1OC40LTY4LjYgMjMwLjEtNjguNiAyMzAuMXMtLjQtMTYuOS0yLjItODUuN2M0LjMgNC41IDM0LjUgMzYuMiAzNC41IDM2LjJsLTI0LjItNDcuNCA2Mi42LTkuMS02Mi42LTkuMSAyMC4yLTU1LjUtMzEuNCA0NS45Yy0yLjItODcuNy03LjgtMzA1LjEtNy45LTMwNi45di0yLjQgMS0xIDIuNGMwIDEtNS42IDIxOS03LjkgMzA2LjlsLTMxLjQtNDUuOSAyMC4yIDU1LjUtNjIuNiA5LjEgNjIuNiA5LjEtMjQuMiA0Ny40IDM0LjUtMzYuMmMtMS44IDY4LjgtMi4yIDg1LjctMi4yIDg1LjdzLTE1NC40LTcxLjctNjguNi0yMzAuMWMwIDAtMTA3LTExOC4xLTEwLjEtMTkwLjcgMCAwLTE2NS41IDk5LjktNjAuNSAyNzEuNSAwIDAtODYuOC04NC44LTQxLjQtMTcwLjUgMCAwLTc4LjcgMTExIDE3LjIgMjMzLjEgMCAwLTI2LjItMTYuMS00OS40LTc3LjcgMCAwIDE2LjkgMTgzLjMgMjIyIDE4NS43aDQuMWMyMDUtMi40IDIyMi0xODUuNyAyMjItMTg1LjctMjMuNiA2MS41LTQ5LjkgNzcuNy00OS45IDc3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplbmtpbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg3LjEgNDI1Yy0xLjQtMTEuMi0xOS0yMy4xLTI4LjItMzEuOS01LjEtNS0yOS0yMy4xLTMwLjQtMjkuOS0xLjQtNi42IDkuNy0yMS41IDEzLjMtMjguOSA1LjEtMTAuNyA4LjgtMjMuNyAxMS4zLTMyLjYgMTguOC02Ni4xIDIwLjctMTU2LjktNi4yLTIxMS4yLTEwLjItMjAuNi0zOC42LTQ5LTU2LjQtNjIuNS00Mi0zMS43LTExOS42LTM1LjMtMTcwLjEtMTYuNi0xNC4xIDUuMi0yNy44IDkuOC00MC4xIDE3LjEtMzMuMSAxOS40LTY4LjMgMzIuNS03OC4xIDcxLjYtMjQuMiAxMC44LTMxLjUgNDEuOC0zMC4zIDc3LjguMiA3IDQuMSAxNS44IDIuNyAyMi40LS43IDMuMy01LjIgNy42LTYuMSA5LjgtMTEuNiAyNy43LTIuMyA2NCAxMS4xIDgzLjcgOC4xIDExLjkgMjEuNSAyMi40IDM5LjIgMjUuMi43IDEwLjYgMy4zIDE5LjcgOC4yIDMwLjQgMy4xIDYuOCAxNC43IDE5IDEwLjQgMjcuNy0yLjIgNC40LTIxIDEzLjgtMjcuMyAxNy42Qzg5IDQwNy4yIDczLjcgNDE1IDU0LjIgNDI5Yy0xMi42IDktMzIuMyAxMC4yLTI5LjIgMzEuMSAyLjEgMTQuMSAxMC4xIDMxLjYgMTQuNyA0NS44LjcgMiAxLjQgNC4xIDIuMSA2aDQyMmM0LjktMTUuMyA5LjctMzAuOSAxNC42LTQ3LjIgMy40LTExLjQgMTAuMi0yNy44IDguNy0zOS43ek0yMDUuOSAzMy43YzEuOC0uNSAzLjQuNyA0LjkgMi40LS4yIDUuMi01LjQgNS4xLTguOSA2LjgtNS40IDYuNy0xMy40IDkuOC0yMCAxNy4yLTYuOCA3LjUtMTQuNCAyNy43LTIzLjQgMzAtNC41IDEuMS05LjctLjgtMTMuNi0uNS0xMC40LjctMTcuNyA2LTI4LjMgNy41IDEzLjYtMjkuOSA1Ni4xLTU0IDg5LjMtNjMuNHptLTEwNC44IDkzLjZjMTMuNS0xNC45IDMyLjEtMjQuMSA1NC44LTI1LjkgMTEuNyAyOS43LTguNCA2NS0uOSA5Ny42IDIuMyA5LjkgMTAuMiAyNS40LTIuNCAyNS43LjMtMjguMy0zNC44LTQ2LjMtNjEuMy0yOS42LTEuOC0yMS41LTQuOS01MS43IDkuOC02Ny44em0zNi43IDIwMC4yYy0xLTQuMS0yLjctMTIuOS0yLjMtMTUuMSAxLjYtOC43IDE3LjEtMTIuNSAxMS0yNC43LTExLjMtLjEtMTMuOCAxMC4yLTI0LjEgMTEuMy0yNi43IDIuNi00NS42LTM1LjQtNDQuNC01OC40IDEtMTkuNSAxNy42LTM4LjIgNDAuMS0zNS44IDE2IDEuOCAyMS40IDE5LjIgMjQuNSAzNC43IDkuMi41IDIyLjUtLjQgMjYuOS03LjYtLjYtMTcuNS04LjgtMzEuNi04LjItNDcuNyAxLTMwLjMgMTcuNS01Ny42IDQuOC04Ny40IDEzLjYtMzAuOSA1My41LTU1LjMgODMuMS03MCAzNi42LTE4LjMgOTQuOS0zLjcgMTI5LjMgMTUuOCAxOS43IDExLjEgMzQuNCAzMi43IDQ4LjMgNTAuNy0xOS41LTUuOC0zNi4xIDQuMi0zMy4xIDIwLjMgMTYuMy0xNC45IDQ0LjItLjIgNTIuNSAxNi40IDcuOSAxNS44IDcuOCAzOS4zIDkgNjIuOCAyLjkgNTctMTAuNCAxMTUuOS0zOS4xIDE1Ny4xLTcuNyAxMS0xNC4xIDIzLTI0LjkgMzAuNi0yNiAxOC4yLTY1LjQgMzQuNy05OS4yIDIzLjQtNDQuNy0xNS02NS00NC44LTg5LjUtNzguOC43IDE4LjcgMTMuOCAzNC4xIDI2LjggNDguNCAxMS4zIDEyLjUgMjUgMjYuNiAzOS43IDMyLjQtMTIuMy0yLjktMzEuMS0zLjgtMzYuMiA3LjItMjguNi0xLjktNTUuMS00LjgtNjguNy0yNC4yLTEwLjYtMTUuNC0yMS40LTQxLjQtMjYuMy02MS40em0yMjIgMTI0LjFjNC4xLTMgMTEuMS0yLjkgMTcuNC0zLjYtNS40LTIuNy0xMy0zLjctMTkuMy0yLjItLjEtNC4yLTItNi44LTMuMi0xMC4yIDEwLjYtMy44IDM1LjUtMjguNSA0OS42LTIwLjMgNi43IDMuOSA5LjUgMjYuMiAxMC4xIDM3IC40IDktLjggMTgtNC41IDIyLjgtMTguOC0uNi0zNS44LTIuOC01MC43LTcgLjktNi4xLTEtMTIuMS42LTE2LjV6bS0xNy4yLTIwYy0xNi44LjgtMjYtMS4yLTM4LjMtMTAuOC4yLS44IDEuNC0uNSAxLjUtMS40IDE4IDggNDAuOC0zLjMgNTktNC45LTcuOSA1LjEtMTQuNiAxMS42LTIyLjIgMTcuMXptLTEyLjEgMzMuMmMtMS42LTkuNC0zLjUtMTItMi44LTIwLjIgMjUtMTYuNiAyOS43IDI4LjYgMi44IDIwLjJ6TTIyNiA0MzguNmMtMTEuNi0uNy00OC4xLTE0LTM4LjUtMjMuNyA5LjQgNi41IDI3LjUgNC45IDQxLjMgNy4zLjggNC40LTIuOCAxMC4yLTIuOCAxNi40ek01Ny43IDQ5Ny4xYy00LjMtMTIuNy05LjItMjUuMS0xNC44LTM2LjkgMzAuOC0yMy44IDY1LjMtNDguOSAxMDIuMi02My41IDIuOC0xLjEgMjMuMiAyNS40IDI2LjIgMjcuNiAxNi41IDExLjcgMzcgMjEgNTYuMiAzMC4yIDEuMiA4LjggMy45IDIwLjIgOC43IDM1LjUuNyAyLjMgMS40IDQuNyAyLjIgNy4ySDU3Ljd6bTI0MC42IDUuN2gtLjhjLjMtLjIuNS0uNC44LS41di41em03LjUtNS43YzIuMS0xLjQgNC4zLTIuOCA2LjQtNC4zIDEuMSAxLjQgMi4yIDIuOCAzLjIgNC4zaC05LjZ6bTE1LjEtMjQuN2MtMTAuOCA3LjMtMjAuNiAxOC4zLTMzLjMgMjUuMi02IDMuMy0yNyAxMS43LTMzLjQgMTAuMi0zLjYtLjgtMy45LTUuMy01LjQtOS41LTMuMS05LTEwLjEtMjMuNC0xMC44LTM3LS44LTE3LjItMi41LTQ2IDE2LTQyLjQgMTQuOSAyLjkgMzIuMyA5LjcgNDMuOSAxNi4xIDcuMSAzLjkgMTEuMSA4LjYgMjEuOSA5LjUtLjEgMS40LS4xIDIuOC0uMiA0LjMtNS45IDMuOS0xNS4zIDMuOC0yMS44IDcuMSA5LjUuNCAxNyAyLjcgMjMuNSA1LjktLjEgMy40LS4zIDctLjQgMTAuNnptNTMuNCAyNC43aC0xNGMtLjEtMy4yLTIuOC01LjgtNi4xLTUuOHMtNS45IDIuNi02LjEgNS44aC0xNy40Yy0yLjgtNC40LTUuNy04LjYtOC45LTEyLjUgMi4xLTIuMiA0LTQuNyA2LTYuOSA5IDMuNyAxNC44LTQuOSAyMS43LTQuMiA3LjkuOCAxNC4yIDExLjcgMjUuNCAxMWwtLjYgMTIuNnptOC43IDBjLjItNCAuNC03LjguNi0xMS41IDE1LjYtNy4zIDI5IDEuMyAzNS43IDExLjVIMzgzem04My40LTM3Yy0yLjMgMTEuMi01LjggMjQtOS45IDM3LjEtLjItLjEtLjQtLjEtLjYtLjFINDI4Yy42LTEuMSAxLjItMi4yIDEuOS0zLjMtMi42LTYuMS05LTguNy0xMC45LTE1LjUgMTIuMS0yMi43IDYuNS05My40LTI0LjItNzguNSA0LjMtNi4zIDE1LjYtMTEuNSAyMC44LTE5LjMgMTMgMTAuNCAyMC44IDIwLjMgMzMuMiAzMS40IDYuOCA2IDIwIDEzLjMgMjEuNCAyMy4xLjggNS41LTIuNiAxOC45LTMuOCAyNS4xek0yMjIuMiAxMzAuNWM1LjQtMTQuOSAyNy4yLTM0LjcgNDUtMzIgNy43IDEuMiAxOCA4LjIgMTIuMiAxNy43LTMwLjItNy00NS4yIDEyLjYtNTQuNCAzMy4xLTguMS0yLTQuOS0xMy4xLTIuOC0xOC44em0xODQuMSA2My4xYzguMi0zLjYgMjIuNC0uNyAyOS42LTUuMy00LjItMTEuNS0xMC4zLTIxLjQtOS4zLTM3LjcuNSAwIDEgMCAxLjQuMSA2LjggMTQuMiAxMi43IDI5LjIgMjEuNCA0MS43LTUuNyAxMy41LTQzLjYgMjUuNC00My4xIDEuMnptMjAuNC00M3ptLTExNy4yIDQ1LjdjLTYuOC0xMC45LTE5LTMyLjUtMTQuNS00NS4zIDYuNSAxMS45IDguNiAyNC40IDE3LjggMzMuMyA0LjEgNCAxMi4yIDkgOC4yIDIwLjItLjkgMi43LTcuOCA4LjYtMTEuNyA5LjctMTQuNCA0LjMtNDcuOS45LTM2LjYtMTcuMSAxMS45LjcgMjcuOSA3LjggMzYuOC0uOHptMjcuMyA3MGMzLjggNi42IDEuNCAxOC43IDEyLjEgMjAuNiAyMC4yIDMuNCA0My42LTEyLjMgNTguMS0xNy44IDktMTUuMi0uOC0yMC43LTguOS0zMC41LTE2LjYtMjAtMzguOC00NC44LTM4LTc0LjcgNi43LTQuOSA3LjMgNy40IDguMiA5LjcgOC43IDIwLjMgMzAuNCA0Ni4yIDQ2LjMgNjMuNSAzLjkgNC4zIDEwLjMgOC40IDExIDExLjIgMi4xIDguMi01LjQgMTgtNC41IDIzLjUtMjEuNyAxMy45LTQ1LjggMjkuMS04MS40IDI1LjYtNy40LTYuNy0xMC4zLTIxLjQtMi45LTMxLjF6bS0yMDEuMy05LjJjLTYuOC0zLjktOC40LTIxLTE2LjQtMjEuNC0xMS40LS43LTkuMyAyMi4yLTkuMyAzNS41LTcuOC03LjEtOS4yLTI5LjEtMy41LTQwLjMtNi42LTMuMi05LjUgMy42LTEzLjEgNS45IDQuNy0zNC4xIDQ5LjgtMTUuOCA0Mi4zIDIwLjN6bTI5OS42IDI4LjhjLTEwLjEgMTkuMi0yNC40IDQwLjQtNTQgNDEtLjYtNi4yLTEuMS0xNS42IDAtMTkuNCAyMi43LTIuMiAzNi42LTEzLjcgNTQtMjEuNnptLTE0MS45IDEyLjRjMTguOSA5LjkgNTMuNiAxMSA3OS4zIDEwLjIgMS40IDUuNiAxLjMgMTIuNiAxLjQgMTkuNC0zMyAxLjgtNzItNi40LTgwLjctMjkuNnptOTIuMiA0Ni43Yy0xLjcgNC4zLTUuMyA5LjMtOS44IDExLjEtMTIuMSA0LjktNDUuNiA4LjctNjIuNC0uMy0xMC43LTUuNy0xNy41LTE4LjUtMjMuNC0yNi0yLjgtMy42LTE2LjktMTIuOS0uMi0xMi45IDEzLjEgMzIuNyA1OCAyOSA5NS44IDI4LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUppcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDkwIDI0MS43QzQxNy4xIDE2OSAzMjAuNiA3MS44IDI0OC41IDAgODMgMTY0LjkgNiAyNDEuNyA2IDI0MS43Yy03LjkgNy45LTcuOSAyMC43IDAgMjguN0MxMzguOCA0MDIuNyA2Ny44IDMzMS45IDI0OC41IDUxMmMzNzkuNC0zNzggMTUuNy0xNi43IDI0MS41LTI0MS43IDgtNy45IDgtMjAuNyAwLTI4LjZ6bS0yNDEuNSA5MGwtNzYtNzUuNyA3Ni03NS43IDc2IDc1LjctNzYgNzUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSm9nZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc4LjEgNDVDMzM3LjYgMTkuOSAyOTIuNiA4IDI0OC4yIDggMTY1IDggODMuOCA0OS45IDM2LjkgMTI1LjljLTcxLjkgMTE2LjYtMzUuNiAyNjkuMyA4MSAzNDEuMnMyNjkuMyAzNS42IDM0MS4yLTgwLjljNzEuOS0xMTYuNiAzNS42LTI2OS40LTgxLTM0MS4yem01MS44IDMyMy4yYy00MC40IDY1LjUtMTEwLjQgMTAxLjUtMTgyIDEwMS41LTYuOCAwLTEzLjYtLjQtMjAuNC0xLTktMTMuNi0xOS45LTMzLjMtMjMuNy00Mi40LTUuNy0xMy43LTI3LjItNDUuNiAzMS4yLTY3LjEgNTEuNy0xOS4xIDE3Ni43LTE2LjUgMjA4LjgtMTcuNi00IDktOC42IDE3LjktMTMuOSAyNi42em0tMjAwLjgtODYuM2MtNTUuNS0xLjQtODEuNy0yMC44LTU4LjUtNDguMnM1MS4xLTQwLjcgNjguOS01MS4yYzE3LjktMTAuNSAyNy4zLTMzLjctMjMuNi0yOS43Qzg3LjMgMTYxLjUgNDguNiAyNTIuMSAzNy42IDI5M2MtOC44LTQ5LjctLjEtMTAyLjcgMjguNS0xNDkuMUMxMjggNDMuNCAyNTkuNiAxMi4yIDM2MC4xIDc0LjFjNzQuOCA0Ni4xIDExMS4yIDEzMC45IDk5LjMgMjEyLjctMjQuOS0uNS0xNzkuMy0zLjYtMjMwLjMtNC45em0xODMuOC01NC44Yy0yMi43LTYtNTcgMTEuMy04Ni43IDI3LjItMjkuNyAxNS44LTMxLjEgOC4yLTMxLjEgOC4yczQwLjItMjguMSA1MC43LTM0LjUgMzEuOS0xNCAxMy40LTI0LjZjLTMuMi0xLjgtNi43LTIuNy0xMC40LTIuNy0xNy44IDAtNDEuNSAxOC43LTY3LjUgMzUuNi0zMS41IDIwLjUtNjUuMyAzMS4zLTY1LjMgMzEuM2wxNjkuNS0xLjYgNDYuNS0yMy40czMuNi05LjUtMTkuMS0xNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKb29tbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjYgOTIuMUMuNiA1OC44IDI3LjQgMzIgNjAuNCAzMmMzMCAwIDU0LjUgMjEuOSA1OS4yIDUwLjIgMzIuNi03LjYgNjcuMS42IDk2LjUgMzBsLTQ0LjMgNDQuM2MtMjAuNS0yMC41LTQyLjYtMTYuMy01NS40LTMuNS0xNC4zIDE0LjMtMTQuMyAzNy45IDAgNTIuMmw5OS41IDk5LjUtNDQgNDQuM2MtODcuNy04Ny4yLTQ5LjctNDkuNy05OS44LTk5LjctMjYuOC0yNi41LTM1LTY0LjgtMjQuOC05OC45QzIwLjQgMTQ0LjYuNiAxMjAuNy42IDkyLjF6bTEyOS41IDExNi40bDQ0LjMgNDQuM2MxMC0xMCA4OS43LTg5LjcgOTkuNy05OS44IDE0LjMtMTQuMyAzNy42LTE0LjMgNTEuOSAwIDEyLjggMTIuOCAxNyAzNS0zLjUgNTUuNGw0NCA0NC4zYzMxLjItMzEuMiAzOC41LTY3LjYgMjguOS0xMDEuMiAyOS4yLTQuMSA1MS45LTI5LjIgNTEuOS01OS41IDAtMzMuMi0yNi44LTYwLjEtNTkuOC02MC4xLTMwLjMgMC01NS40IDIyLjUtNTkuNSA1MS42LTMzLjgtOS45LTcxLjctMS41LTk4LjMgMjUuMS0xOC4zIDE5LjEtNzEuMSA3MS41LTk5LjYgOTkuOXptMjY2LjMgMTUyLjJjOC4yLTMyLjctLjktNjguNS0yNi4zLTkzLjktMTEuOC0xMi4yIDUgNC43LTk5LjUtOTkuN2wtNDQuMyA0NC4zIDk5LjcgOTkuN2MxNC4zIDE0LjMgMTQuMyAzNy42IDAgNTEuOS0xMi44IDEyLjgtMzUgMTctNTUuNC0zLjVsLTQ0IDQ0LjNjMjcuNiAzMC4yIDY4IDM4LjggMTAyLjcgMjggNS41IDI3LjQgMjkuNyA0OC4xIDU4LjkgNDguMSAzMyAwIDU5LjgtMjYuOCA1OS44LTYwLjEgMC0zMC4yLTIyLjUtNTUtNTEuNi01OS4xem0tODQuMy01My4xbC00NC00NC4zYy04NyA4Ni40LTUwLjQgNTAuNC05OS43IDk5LjgtMTQuMyAxNC4zLTM3LjYgMTQuMy01MS45IDAtMTMuMS0xMy40LTE2LjktMzUuMyAzLjItNTUuNGwtNDQtNDQuM2MtMzAuMiAzMC4yLTM4IDY1LjItMjkuNSA5OC4zLTI2LjcgNi00Ni4yIDI5LjktNDYuMiA1OC4yQzAgNDUzLjIgMjYuOCA0ODAgNTkuOCA0ODBjMjguNiAwIDUyLjUtMTkuOCA1OC42LTQ2LjcgMzIuNyA4LjIgNjguNS0uNiA5NC4yLTI2IDMyLjEtMzIgMTIuMi0xMi40IDk5LjUtOTkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjQzLjggMzgxLjRjMCA0My42LTI1LjYgNjMuNS02Mi45IDYzLjUtMzMuNyAwLTUzLjItMTcuNC02My4yLTM4LjVsMzQuMy0yMC43YzYuNiAxMS43IDEyLjYgMjEuNiAyNy4xIDIxLjYgMTMuOCAwIDIyLjYtNS40IDIyLjYtMjYuNVYyMzcuN2g0Mi4xdjE0My43em05OS42IDYzLjVjLTM5LjEgMC02NC40LTE4LjYtNzYuNy00M2wzNC4zLTE5LjhjOSAxNC43IDIwLjggMjUuNiA0MS41IDI1LjYgMTcuNCAwIDI4LjYtOC43IDI4LjYtMjAuOCAwLTE0LjQtMTEuNC0xOS41LTMwLjctMjhsLTEwLjUtNC41Yy0zMC40LTEyLjktNTAuNS0yOS4yLTUwLjUtNjMuNSAwLTMxLjYgMjQuMS01NS42IDYxLjYtNTUuNiAyNi44IDAgNDYgOS4zIDU5LjggMzMuN0wzNjggMjkwYy03LjItMTIuOS0xNS0xOC0yNy4xLTE4LTEyLjMgMC0yMC4xIDcuOC0yMC4xIDE4IDAgMTIuNiA3LjggMTcuNyAyNS45IDI1LjZsMTAuNSA0LjVjMzUuOCAxNS4zIDU1LjkgMzEgNTUuOSA2Ni4yIDAgMzcuOC0yOS44IDU4LjYtNjkuNyA1OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMjQzLjggMzQ5LjRjMCA0My42LTI1LjYgNjMuNS02Mi45IDYzLjUtMzMuNyAwLTUzLjItMTcuNC02My4yLTM4LjVsMzQuMy0yMC43YzYuNiAxMS43IDEyLjYgMjEuNiAyNy4xIDIxLjYgMTMuOCAwIDIyLjYtNS40IDIyLjYtMjYuNVYyMzcuN2g0Mi4xdjE0My43em05OS42IDYzLjVjLTM5LjEgMC02NC40LTE4LjYtNzYuNy00M2wzNC4zLTE5LjhjOSAxNC43IDIwLjggMjUuNiA0MS41IDI1LjYgMTcuNCAwIDI4LjYtOC43IDI4LjYtMjAuOCAwLTE0LjQtMTEuNC0xOS41LTMwLjctMjhsLTEwLjUtNC41Yy0zMC40LTEyLjktNTAuNS0yOS4yLTUwLjUtNjMuNSAwLTMxLjYgMjQuMS01NS42IDYxLjYtNTUuNiAyNi44IDAgNDYgOS4zIDU5LjggMzMuN0wzNjggMjkwYy03LjItMTIuOS0xNS0xOC0yNy4xLTE4LTEyLjMgMC0yMC4xIDcuOC0yMC4xIDE4IDAgMTIuNiA3LjggMTcuNyAyNS45IDI1LjZsMTAuNSA0LjVjMzUuOCAxNS4zIDU1LjkgMzEgNTUuOSA2Ni4yIDAgMzcuOC0yOS44IDU4LjYtNjkuNyA1OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKc2ZpZGRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTAuNjM0IDIzNy40NjJjLTQuNzI3LTIuNjIxLTUuNjY0LTUuNzQ4LTYuMzgxLTEwLjc3Ni0yLjM1Mi0xNi40ODgtMy41MzktMzMuNjE5LTkuMDk3LTQ5LjA5NS0zNS44OTUtOTkuOTU3LTE1My45OS0xNDMuMzg2LTI0Ni44NDktOTEuNjQ2LTI3LjM3IDE1LjI1LTQ4Ljk3MSAzNi4zNjktNjUuNDkzIDYzLjkwMy0zLjE4NC0xLjUwOC01LjQ1OC0yLjcxLTcuODI0LTMuNjg2LTMwLjEwMi0xMi40MjEtNTkuMDQ5LTEwLjEyMS04NS4zMzEgOS4xNjctMjUuNTMxIDE4LjczNy0zNi40MjIgNDQuNTQ4LTMyLjY3NiA3Ni40MDguMzU1IDMuMDI1LTEuOTY3IDcuNjIxLTQuNTE0IDkuNTQ1LTM5LjcxMiAyOS45OTItNTYuMDMxIDc4LjA2NS00MS45MDIgMTI0LjYxNSAxMy44MzEgNDUuNTY5IDU3LjUxNCA3OS43OTYgMTA1LjYwOCA4MS40MzMgMzAuMjkxIDEuMDMxIDYwLjYzNy41NDYgOTAuOTU5LjUzOSA4NC4wNDEtLjAyMSAxNjguMDkuNTMxIDI1Mi4xMi0uNDggNTIuNjY0LS42MzQgOTYuMTA4LTM2Ljg3MyAxMDguMjEyLTg3LjI5MyAxMS41NC00OC4wNzQtMTEuMTQ0LTk3LjMtNTYuODMyLTEyMi42MzR6bTIxLjEwNyAxNTYuODhjLTE4LjIzIDIyLjQzMi00Mi4zNDMgMzUuMjUzLTcxLjI4IDM1LjY1LTU2Ljg3NC43ODEtMTEzLjc2Ny4yMy0xNzAuNjUyLjIzIDAgLjctMTYzLjAyOC4xNTktMTYzLjcyOC4xNTQtNDMuODYxLS4zMzItNzYuNzM5LTE5Ljc2Ni05NS4xNzUtNTkuOTk1LTE4LjkwMi00MS4yNDUtNC4wMDQtOTAuODQ4IDM0LjE4Ni0xMTYuMTA2IDkuMTgyLTYuMDczIDEyLjUwNS0xMS41NjYgMTAuMDk2LTIzLjEzNi01LjQ5LTI2LjM2MSA0LjQ1My00Ny45NTYgMjYuNDItNjIuOTgxIDIyLjk4Ny0xNS43MjMgNDcuNDIyLTE2LjE0NiA3Mi4wMzQtMy4wODMgMTAuMjY5IDUuNDUgMTQuNjA3IDExLjU2NCAyMi4xOTgtMi41MjcgMTQuMjIyLTI2LjM5OSAzNC41NTctNDYuNzI3IDYwLjY3MS02MS4yOTQgOTcuNDYtNTQuMzY2IDIyOC4zNyA3LjU2OCAyMzAuMjQgMTMyLjY5Ny4xMjIgOC4xNSAyLjQxMiAxMi40MjggOS44NDggMTUuODk0IDU3LjU2IDI2LjgyOSA3NC40NTYgOTYuMTIyIDM1LjE0MiAxNDQuNDk3em0tODcuNzg5LTgwLjQ5OWMtNS44NDggMzEuMTU3LTM0LjYyMiA1NS4wOTYtNjYuNjY2IDU1LjA5NS0xNi45NTMtLjAwMS0zMi4wNTgtNi41NDUtNDQuMDc5LTE3LjcwNS0yNy42OTctMjUuNzEzLTcxLjE0MS03NC45OC05NS45MzctOTMuMzg3LTIwLjA1Ni0xNC44ODgtNDEuOTktMTIuMzMzLTYwLjI3MiAzLjc4Mi00OS45OTYgNDQuMDcxIDE1Ljg1OSAxMjEuNzc1IDY3LjA2MyA3Ny4xODggNC41NDgtMy45NiA3Ljg0LTkuNTQzIDEyLjc0NC0xMi44NDQgOC4xODQtNS41MDkgMjAuNzY2LS44ODQgMTMuMTY4IDEwLjYyMi0xNy4zNTggMjYuMjg0LTQ5LjMzIDM4LjE5Ny03OC44NjMgMjkuMzAxLTI4Ljg5Ny04LjcwNC00OC44NC0zNS45NjgtNDguNjI2LTcwLjE3OSAxLjIyNS0yMi40ODUgMTIuMzY0LTQzLjA2IDM1LjQxNC01NS45NjUgMjIuNTc1LTEyLjYzOCA0Ni4zNjktMTMuMTQ2IDY2Ljk5MSAyLjQ3NEMyOTUuNjggMjgwLjcgMzIwLjQ2NyAzMjMuOTcgMzUyLjE4NSAzNDMuNDdjMjQuNTU4IDE1LjA5OSA1NC4yNTQgNy4zNjMgNjguODIzLTE3LjUwNiAyOC44My00OS4yMDktMzQuNTkyLTEwNS4wMTYtNzguODY4LTYzLjQ2LTMuOTg5IDMuNzQ0LTYuOTE3IDguOTMyLTExLjQxIDExLjcyLTEwLjk3NSA2LjgxMS0xNy4zMzMtNC4xMTMtMTIuODA5LTEwLjM1MyAyMC43MDMtMjguNTU0IDUwLjQ2NC00MC40NCA4My4yNzEtMjguMjE0IDMxLjQyOSAxMS43MTQgNDkuMTA4IDQ0LjM2NiA0Mi43NiA3OC4xODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUthZ2dsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQuMiA1MDEuNUwxNTguNCAzMjAuMyAyOTguMiAxODVjMi42LTIuNyAxLjctMTAuNS01LjMtMTAuNWgtNjkuMmMtMy41IDAtNyAxLjgtMTAuNSA1LjNMODAuOSAzMTMuNVY3LjVxMC03LjUtNy41LTcuNUgyMS41UTE0IDAgMTQgNy41djQ5N3EwIDcuNSA3LjUgNy41aDUxLjlxNy41IDAgNy41LTcuNXYtMTA5bDMwLjgtMjkuMyAxMTAuNSAxNDAuNmMzIDMuNSA2LjUgNS4zIDEwLjUgNS4zaDY2LjlxNS4yNSAwIDYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5YmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODYuMTcgNDE5YTE4IDE4IDAgMSAwIDE4IDE4IDE4IDE4IDAgMCAwLTE4LTE4em0xMTEuOTItMTQ3LjZjLTkuNS0xNC42Mi0zOS4zNy01Mi40NS04Ny4yNi03My43MXEtOS4xLTQuMDYtMTguMzgtNy4yN2E3OC40MyA3OC40MyAwIDAgMC00Ny44OC0xMDQuMTNjLTEyLjQxLTQuMS0yMy4zMy02LTMyLjQxLTUuNzctLjYtMi0xLjg5LTExIDkuNC0zNUwxOTguNjYgMzJsLTUuNDggNy41NmMtOC42OSAxMi4wNi0xNi45MiAyMy41NS0yNC4zNCAzNC44OWE1MSA1MSAwIDAgMC04LjI5LTEuMjVjLTQxLjUzLTIuNDUtMzktMi4zMy00MS4wNi0yLjMzLTUwLjYxIDAtNTAuNzUgNTIuMTItNTAuNzUgNDUuODhsLTIuMzYgMzYuNjhjLTEuNjEgMjcgMTkuNzUgNTAuMjEgNDcuNjMgNTEuODVsOC45My41NGEyMTQgMjE0IDAgMCAwLTQ2LjI5IDM1LjU0QzE0IDMwNC42NiAxNCAzNzQgMTQgNDI5Ljc3djMzLjY0bDIzLjMyLTI5LjhhMTQ4LjYgMTQ4LjYgMCAwIDAgMTQuNTYgMzcuNTZjNS43OCAxMC4xMyAxNC44NyA5LjQ1IDE5LjY0IDcuMzMgNC4yMS0xLjg3IDEwLTYuOTIgMy43NS0yMC4xMWExNzguMjkgMTc4LjI5IDAgMCAxLTE1Ljc2LTUzLjEzbDQ2LjgyLTU5LjgzLTI0LjY2IDc0LjExYzU4LjIzLTQyLjQgMTU3LjM4LTYxLjc2IDIzNi4yNS0zOC41OSAzNC4yIDEwLjA1IDY3LjQ1LjY5IDg0Ljc0LTIzLjg0LjcyLTEgMS4yLTIuMTYgMS44NS0zLjIyYTE1Ni4wOSAxNTYuMDkgMCAwIDEgMi44IDI4LjQzYzAgMjMuMy0zLjY5IDUyLjkzLTE0Ljg4IDgxLjY0LTIuNTIgNi40NiAxLjc2IDE0LjUgOC42IDE1Ljc0IDcuNDIgMS41NyAxNS4zMy0zLjEgMTguMzctMTEuMTVDNDI5IDQ0MyA0MzQgNDE0IDQzNCAzODIuMzJjMC0zOC41OC0xMy03Ny40Ni0zNS45MS0xMTAuOTJ6TTE0Mi4zNyAxMjguNThsLTE1LjctLjkzLTEuMzkgMjEuNzkgMTMuMTMuNzhhOTMgOTMgMCAwIDAgLjMyIDE5LjU3bC0yMi4zOC0xLjM0YTEyLjI4IDEyLjI4IDAgMCAxLTExLjc2LTEyLjc5TDEwNyAxMTljMS0xMi4xNyAxMy44Ny0xMS4yNyAxMy4yNi0xMS4zMmwyOS4xMSAxLjczYTE0NC4zNSAxNDQuMzUgMCAwIDAtNyAxOS4xN3ptMTQ4LjQyIDE3Mi4xOGExMC41MSAxMC41MSAwIDAgMS0xNC4zNS0xLjM5bC05LjY4LTExLjQ5LTM0LjQyIDI3YTguMDkgOC4wOSAwIDAgMS0xMS4xMy0xLjA4bC0xNS43OC0xOC42NGE3LjM4IDcuMzggMCAwIDEgMS4zNC0xMC4zNGwzNC41Ny0yNy4xOC0xNC4xNC0xNi43NC0xNy4wOSAxMy40NWE3Ljc1IDcuNzUgMCAwIDEtMTAuNTktMXMtMy43Mi00LjQyLTMuOC00LjUzYTcuMzggNy4zOCAwIDAgMSAxLjM3LTEwLjM0TDIxNCAyMjUuMTlzLTE4LjUxLTIyLTE4LjYtMjIuMTRhOS41NiA5LjU2IDAgMCAxIDEuNzQtMTMuNDIgMTAuMzggMTAuMzggMCAwIDEgMTQuMyAxLjM3bDgxLjA5IDk2LjMyYTkuNTggOS41OCAwIDAgMS0xLjc0IDEzLjQ0ek0xODcuNDQgNDE5YTE4IDE4IDAgMSAwIDE4IDE4IDE4IDE4IDAgMCAwLTE4LTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLZXljZG4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMuOCA0MDkuM2w2MC41LTU5YzMyLjEgNDIuOCA3MS4xIDY2IDEyNi42IDY3LjQgMzAuNS43IDYwLjMtNyA4Ni40LTIyLjQgNS4xIDUuMyAxOC41IDE5LjUgMjAuOSAyMi0zMi4yIDIwLjctNjkuNiAzMS4xLTEwOC4xIDMwLjItNDMuMy0xLjEtODQuNi0xNi43LTExNy43LTQ0LjQuMy0uNi0zOC4yIDM3LjUtMzguNiAzNy45IDkuNSAyOS44LTEzLjEgNjIuNC00Ni4zIDYyLjRDMjAuNyA1MDMuMyAwIDQ4MS43IDAgNDU0LjljMC0zNC4zIDMzLjEtNTYuNiA2My44LTQ1LjZ6bTM1NC45LTI1Mi40YzE5LjEgMzEuMyAyOS42IDY3LjQgMjguNyAxMDQtMS4xIDQ0LjgtMTkgODcuNS00OC42IDEyMSAuMy4zIDIzLjggMjUuMiAyNC4xIDI1LjUgOS42LTEuMyAxOS4yIDIgMjUuOSA5LjEgMTEuMyAxMiAxMC45IDMwLjktMS4xIDQyLjQtMTIgMTEuMy0zMC45IDEwLjktNDIuNC0xLjEtNi43LTctOS40LTE2LjgtNy42LTI2LjMtMjQuOS0yNi42LTQ0LjQtNDcuMi00NC40LTQ3LjIgNDIuNy0zNC4xIDYzLjMtNzkuNiA2NC40LTEyNC4yLjctMjguOS03LjItNTcuMi0yMS4xLTgyLjJsMjIuMS0yMXpNMTA0IDUzLjFjNi43IDcgOS40IDE2LjggNy42IDI2LjNsNDUuOSA0OC4xYy00LjcgMy44LTEzLjMgMTAuNC0yMi44IDIxLjMtMjUuNCAyOC41LTM5LjYgNjQuOC00MC43IDEwMi45LS43IDI4LjkgNi4xIDU3LjIgMjAgODIuNGwtMjIgMjEuNUM3Mi43IDMyNCA2My4xIDI4Ny45IDY0LjIgMjUwLjljMS00NC42IDE4LjMtODcuNiA0Ny41LTEyMS4xbC0yNS4zLTI2LjRjLTkuNiAxLjMtMTkuMi0yLTI1LjktOS4xLTExLjMtMTItMTAuOS0zMC45IDEuMS00Mi40QzczLjUgNDAuNyA5Mi4yIDQxIDEwNCA1My4xek00NjQuOSA4YzI2IDAgNDcuMSAyMi40IDQ3LjEgNDguM1M0OTAuOSAxMDQgNDY0LjkgMTA0Yy02LjMuMS0xNC0xLjEtMTUuOS0xLjhsLTYyLjkgNTkuN2MtMzIuNy00My42LTc2LjctNjUuOS0xMjYuOS02Ny4yLTMwLjUtLjctNjAuMyA2LjgtODYuMiAyMi40bC0yMS4xLTIyQzE4NC4xIDc0LjMgMjIxLjUgNjQgMjYwIDY0LjljNDMuMyAxLjEgODQuNiAxNi43IDExNy43IDQ0LjZsNDEuMS0zOC42Yy0xLjUtNC43LTIuMi05LjYtMi4yLTE0LjVDNDE2LjUgMjkuNyA0MzguOSA4IDQ2NC45IDh6TTI1Ni43IDExMy40YzUuNSAwIDEwLjkuNCAxNi40IDEuMSA3OC4xIDkuOCAxMzMuNCA4MS4xIDEyMy44IDE1OS4xLTkuOCA3OC4xLTgxLjEgMTMzLjQtMTU5LjEgMTIzLjgtNzguMS05LjgtMTMzLjQtODEuMS0xMjMuOC0xNTkuMiA5LjMtNzIuNCA3MC4xLTEyNC42IDE0Mi43LTEyNC44em0tNTkgMTE5LjRjLjYgMjIuNyAxMi4yIDQxLjggMzIuNCA1Mi4ybC0xMSA1MS43aDczLjdsLTExLTUxLjdjMjAuMS0xMC45IDMyLjEtMjkgMzIuNC01Mi4yLS40LTMyLjgtMjUuOC01Ny41LTU4LjMtNTguMy0zMi4xLjgtNTcuMyAyNC44LTU4LjIgNTguM3pNMjU2IDE2MFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaWNrc3RhcnRlcksgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ3LjMgMTE0LjRjMC01Ni4yLTMyLjUtODIuNC03My40LTgyLjRDMjYuMiAzMiAwIDY4LjIgMCAxMTMuNHYyODNjMCA0Ny4zIDI1LjMgODMuNCA3NC45IDgzLjQgMzkuOCAwIDcyLjQtMjUuNiA3Mi40LTgzLjR2LTc2LjVsMTEyLjEgMTM4LjNjMjIuNyAyNy4yIDcyLjEgMzAuNyAxMDMuMiAwIDI3LTI3LjYgMjcuMy02Ny40IDcuNC05Mi4ybC05MC44LTExNC44IDc0LjktMTA3LjRjMTcuNC0yNC43IDE3LjUtNjMuMS0xMC40LTg5LjgtMzAuMy0yOS04Mi40LTMxLjYtMTEzLjYgMTIuOEwxNDcuMyAxODV2LTcwLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpY2tzdGFydGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA0ODBINDhjLTI2LjQgMC00OC0yMS42LTQ4LTQ4VjgwYzAtMjYuNCAyMS42LTQ4IDQ4LTQ4aDM1MmMyNi40IDAgNDggMjEuNiA0OCA0OHYzNTJjMCAyNi40LTIxLjYgNDgtNDggNDh6TTE5OS42IDE3OC41YzAtMzAuNy0xNy42LTQ1LjEtMzkuNy00NS4xLTI1LjggMC00MCAxOS44LTQwIDQ0LjV2MTU0LjhjMCAyNS44IDEzLjcgNDUuNiA0MC41IDQ1LjYgMjEuNSAwIDM5LjItMTQgMzkuMi00NS42di00MS44bDYwLjYgNzUuN2MxMi4zIDE0LjkgMzkgMTYuOCA1NS44IDAgMTQuNi0xNS4xIDE0LjgtMzYuOCA0LTUwLjRsLTQ5LjEtNjIuOCA0MC41LTU4LjdjOS40LTEzLjUgOS41LTM0LjUtNS42LTQ5LjEtMTYuNC0xNS45LTQ0LjYtMTcuMy02MS40IDdsLTQ0LjggNjQuN3YtMzguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS29ydnVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Ni41IDM0aC0zMjdDMjYuOCAzNCAwIDYwLjggMCA5My41djMyNy4xQzAgNDUzLjIgMjYuOCA0ODAgNTkuNSA0ODBoMzI3LjFjMzMgMCA1OS41LTI2LjggNTkuNS01OS41di0zMjdDNDQ2IDYwLjggNDE5LjIgMzQgMzg2LjUgMzR6TTg3LjEgMTIwLjhoOTZ2MTE2bDYxLjgtMTE2aDExMC45bC04MS4yIDEzMkg4Ny4xdi0xMzJ6bTE2MS44IDI3Mi4xbC02NS43LTExMy42djExMy42aC05NlYyNjIuMWgxOTEuNWw4OC42IDEzMC44SDI0OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC40LDExNS44M2E1LjcyLDUuNzIsMCwwLDAtLjI4LS42OCw4LjUyLDguNTIsMCwwLDAtLjUzLTEuMjUsNiw2LDAsMCwwLS41NC0uNzEsOS4zNiw5LjM2LDAsMCwwLS43Mi0uOTRjLS4yMy0uMjItLjUyLS40LS43Ny0uNmE4Ljg0LDguODQsMCwwLDAtLjktLjY4TDQwNC40LDU1LjU1YTgsOCwwLDAsMC04LDBMMzAwLjEyLDExMWgwYTguMDcsOC4wNywwLDAsMC0uODguNjksNy42OCw3LjY4LDAsMCwwLS43OC42LDguMjMsOC4yMywwLDAsMC0uNzIuOTNjLS4xNy4yNC0uMzkuNDUtLjU0LjcxYTkuNyw5LjcsMCwwLDAtLjUyLDEuMjVjLS4wOC4yMy0uMjEuNDQtLjI4LjY4YTguMDgsOC4wOCwwLDAsMC0uMjgsMi4wOFYyMjMuMThsLTgwLjIyLDQ2LjE5VjYzLjQ0YTcuOCw3LjgsMCwwLDAtLjI4LTIuMDljLS4wNi0uMjQtLjItLjQ1LS4yOC0uNjhhOC4zNSw4LjM1LDAsMCwwLS41Mi0xLjI0Yy0uMTQtLjI2LS4zNy0uNDctLjU0LS43MmE5LjM2LDkuMzYsMCwwLDAtLjcyLS45NCw5LjQ2LDkuNDYsMCwwLDAtLjc4LS42LDkuOCw5LjgsMCwwLDAtLjg4LS42OGgwTDExNS42MSwxLjA3YTgsOCwwLDAsMC04LDBMMTEuMzQsNTYuNDloMGE2LjUyLDYuNTIsMCwwLDAtLjg4LjY5LDcuODEsNy44MSwwLDAsMC0uNzkuNiw4LjE1LDguMTUsMCwwLDAtLjcxLjkzYy0uMTguMjUtLjQuNDYtLjU1LjcyYTcuODgsNy44OCwwLDAsMC0uNTEsMS4yNCw2LjQ2LDYuNDYsMCwwLDAtLjI5LjY3LDguMTgsOC4xOCwwLDAsMC0uMjgsMi4xdjMyOS43YTgsOCwwLDAsMCw0LDYuOTVsMTkyLjUsMTEwLjg0YTguODMsOC44MywwLDAsMCwxLjMzLjU0Yy4yMS4wOC40MS4yLjYzLjI2YTcuOTIsNy45MiwwLDAsMCw0LjEsMGMuMi0uMDUuMzctLjE2LjU1LS4yMmE4LjYsOC42LDAsMCwwLDEuNC0uNThMNDA0LjQsNDAwLjA5YTgsOCwwLDAsMCw0LTYuOTVWMjg3Ljg4bDkyLjI0LTUzLjExYTgsOCwwLDAsMCw0LTdWMTE3LjkyQTguNjMsOC42MywwLDAsMCw1MDQuNCwxMTUuODNaTTExMS42LDE3LjI4aDBsODAuMTksNDYuMTUtODAuMiw0Ni4xOEwzMS40MSw2My40NFptODguMjUsNjBWMjc4LjZsLTQ2LjUzLDI2Ljc5LTMzLjY5LDE5LjRWMTIzLjVsNDYuNTMtMjYuNzlabTAsNDEyLjc4TDIzLjM3LDM4OC41Vjc3LjMyTDU3LjA2LDk2LjdsNDYuNTIsMjYuOFYzMzguNjhhNi45NCw2Ljk0LDAsMCwwLC4xMi45LDgsOCwwLDAsMCwuMTYsMS4xOGgwYTUuOTIsNS45MiwwLDAsMCwuMzguOSw2LjM4LDYuMzgsMCwwLDAsLjQyLDF2MGE4LjU0LDguNTQsMCwwLDAsLjYuNzgsNy42Miw3LjYyLDAsMCwwLC42Ni44NGwwLDBjLjIzLjIyLjUyLjM4Ljc3LjU4YTguOTMsOC45MywwLDAsMCwuODYuNjZsMCwwLDAsMCw5Mi4xOSw1Mi4xOFptOC0xMDYuMTctODAuMDYtNDUuMzIsODQuMDktNDguNDEsOTIuMjYtNTMuMTEsODAuMTMsNDYuMTMtNTguOCwzMy41NlptMTg0LjUyLDQuNTdMMjE1Ljg4LDQ5MC4xMVYzOTcuOEwzNDYuNiwzMjMuMmw0NS43Ny0yNi4xNVptMC0xMTkuMTNMMzU4LjY4LDI1MGwtNDYuNTMtMjYuNzlWMTMxLjc5bDMzLjY5LDE5LjRMMzkyLjM3LDE3OFptOC0xMDUuMjgtODAuMi00Ni4xNyw4MC4yLTQ2LjE2LDgwLjE4LDQ2LjE1Wm04LDEwNS4yOFYxNzhMNDU1LDE1MS4xOWwzMy42OC0xOS40djkxLjM5aDBaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhc3RmbVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tOTIuMiAzMTIuOWMtNjMuNCAwLTg1LjQtMjguNi05Ny4xLTY0LjEtMTYuMy01MS0yMS41LTg0LjMtNjMtODQuMy0yMi40IDAtNDUuMSAxNi4xLTQ1LjEgNjEuMiAwIDM1LjIgMTggNTcuMiA0My4zIDU3LjIgMjguNiAwIDQ3LjYtMjEuMyA0Ny42LTIxLjNsMTEuNyAzMS45cy0xOS44IDE5LjQtNjEuMiAxOS40Yy01MS4zIDAtNzkuOS0zMC4xLTc5LjktODUuOCAwLTU3LjkgMjguNi05MiA4Mi41LTkyIDczLjUgMCA4MC44IDQxLjQgMTAwLjggMTAxLjkgOC44IDI2LjggMjQuMiA0Ni4yIDYxLjIgNDYuMiAyNC45IDAgMzguMS01LjUgMzguMS0xOS4xIDAtMTkuOS0yMS44LTIyLTQ5LjktMjguNi0zMC40LTcuMy00Mi41LTIzLjEtNDIuNS00OCAwLTQwIDMyLjMtNTIuNCA2NS4yLTUyLjQgMzcuNCAwIDYwLjEgMTMuNiA2MyA0Ni42bC0zNi43IDQuNGMtMS41LTE1LjgtMTEtMjIuNC0yOC42LTIyLjQtMTYuMSAwLTI2IDcuMy0yNiAxOS44IDAgMTEgNC44IDE3LjYgMjAuOSAyMS4zIDMyLjcgNy4xIDcxLjggMTIgNzEuOCA1Ny41LjEgMzYuNy0zMC43IDUwLjYtNzYuMSA1MC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXN0Zm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI1LjggMzY3LjFsLTE4LjgtNTFzLTMwLjUgMzQtNzYuMiAzNGMtNDAuNSAwLTY5LjItMzUuMi02OS4yLTkxLjUgMC03Mi4xIDM2LjQtOTcuOSA3Mi4xLTk3LjkgNjYuNSAwIDc0LjggNTMuMyAxMDAuOSAxMzQuOSAxOC44IDU2LjkgNTQgMTAyLjYgMTU1LjQgMTAyLjYgNzIuNyAwIDEyMi0yMi4zIDEyMi04MC45IDAtNzIuOS02Mi43LTgwLjYtMTE1LTkyLjEtMjUuOC01LjktMzMuNC0xNi40LTMzLjQtMzQgMC0xOS45IDE1LjgtMzEuNyA0MS42LTMxLjcgMjguMiAwIDQzLjQgMTAuNiA0NS43IDM1LjhsNTguNi03Yy00LjctNTIuOC00MS4xLTc0LjUtMTAwLjktNzQuNS01Mi44IDAtMTA0LjQgMTkuOS0xMDQuNCA4My45IDAgMzkuOSAxOS40IDY1LjEgNjggNzYuOCA0NC45IDEwLjYgNzkuOCAxMy44IDc5LjggNDUuNyAwIDIxLjctMjEuMSAzMC41LTYxIDMwLjUtNTkuMiAwLTgzLjktMzEuMS05Ny45LTczLjktMzItOTYuOC00My42LTE2My0xNjEuMy0xNjNDNDUuNyAxMTMuOCAwIDE2OC4zIDAgMjYxYzAgODkuMSA0NS43IDEzNy4yIDEyNy45IDEzNy4yIDY2LjIgMCA5Ny45LTMxLjEgOTcuOS0zMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZWFucHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Ni41MzkgMTExLjQ4NWwxNS4wOTYgMjQ4Ljk1NS0xMC45NzktLjI3NWMtMzYuMjMyLS44MjQtNzEuNjQgOC43ODMtMTAyLjY1NyAyNy45OTctMzEuMDE2LTE5LjIxNC02Ni40MjQtMjcuOTk3LTEwMi42NTctMjcuOTk3LTQ1LjU2NCAwLTgyLjA3IDEwLjcwNS0xMjMuNTE2IDI3LjcyM0w5My4xMTcgMTI5LjZjMjguNTQ2LTExLjgwMyA2MS40ODQtMTguMTE1IDkyLjIyNi0xOC4xMTUgNDEuMTczIDAgNzMuODM2IDEzLjE3NSAxMDIuNjU3IDQyLjU0NCAyNy43MjMtMjguMjcxIDU5LjAxMy00MS43MjEgOTguNTM5LTQyLjU0NHpNNTY5LjA3IDQ0OGMtMjUuNTI2IDAtNDcuNDg1LTUuMjE1LTcwLjU0Mi0xNS42NDUtMzQuMzEtMTUuNjQ1LTY5Ljk5My0yNC45NzgtMTA3Ljg3MS0yNC45NzgtMzguOTc3IDAtNzQuOTM0IDEyLjkwMS0xMDIuNjU3IDQwLjYyMy0yNy43MjMtMjcuNzIzLTYzLjY4LTQwLjYyMy0xMDIuNjU3LTQwLjYyMy0zNy44NzggMC03My41NjEgOS4zMzMtMTA3Ljg3MSAyNC45NzhDNTUuMjM5IDQ0Mi4yMzYgMzIuNzMxIDQ0OCA4LjMwMyA0NDhINi45M0w0OS40NzUgOTguODU5Qzg4LjcyNiA3Ni42MjYgMTM2LjQ4NiA2NCAxODEuNzc1IDY0IDIxOC44MyA2NCAyNTYuOTg0IDcxLjY4NSAyODggOTMuMDk1IDMxOS4wMTYgNzEuNjg1IDM1Ny4xNyA2NCAzOTQuMjI1IDY0YzQ1LjI4OSAwIDkzLjA0OSAxMi42MjYgMTMyLjMgMzQuODU5TDU2OS4wNyA0NDh6bS00My4zNjgtNDQuNzQxbC0zNC4wMzYtMjgwLjI0NmMtMzAuNzQyLTEzLjk5OS02Ny4yNDgtMjEuNDEtMTAxLjAwOS0yMS40MS0zOC40MjggMC03NC4zODUgMTIuMDc3LTEwMi42NTcgMzguNzAyLTI4LjI3Mi0yNi42MjUtNjQuMjI4LTM4LjcwMi0xMDIuNjU3LTM4LjcwMi0zMy43NjEgMC03MC4yNjcgNy40MTEtMTAxLjAwOSAyMS40MUw1MC4yOTggNDAzLjI1OWM0Ny4yMTEtMTkuNDg3IDgyLjg5NC0zMy40ODYgMTM1LjA0NS0zMy40ODYgMzcuNjA0IDAgNzAuODE3IDkuNjA2IDEwMi42NTcgMjkuNjQ0IDMxLjg0LTIwLjAzOCA2NS4wNTItMjkuNjQ0IDEwMi42NTctMjkuNjQ0IDUyLjE1MSAwIDg3LjgzNCAxMy45OTkgMTM1LjA0NSAzMy40ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEyLjcgMjE5YzAtMjAuNSAzLjItMzIuNiAzLjItNTQuNiAwLTM0LjItMTIuNi00NS4yLTQwLjUtNDUuMmgtMjAuNXYyNC4yaDYuM2MxNC4yIDAgMTcuMyA0LjcgMTcuMyAyMi4xIDAgMTYuMy0xLjYgMzIuNi0xLjYgNTEuNSAwIDI0LjIgNy45IDMzLjYgMjMuNiAzNy4zdjEuNmMtMTUuOCAzLjctMjMuNiAxMy4xLTIzLjYgMzcuMyAwIDE4LjkgMS42IDM0LjIgMS42IDUxLjUgMCAxNy45LTMuNyAyMi42LTE3LjMgMjIuNnYuNWgtNi4zVjM5M2gyMC41YzI3LjggMCA0MC41LTExIDQwLjUtNDUuMiAwLTIyLjYtMy4yLTM0LjItMy4yLTU0LjYgMC0xMSA2LjgtMjIuNiAyNy4zLTIzLjZ2LTI3LjNjLTIwLjUtLjctMjcuMy0xMi4zLTI3LjMtMjMuM3ptLTEwNS42IDMyYy0xNS44LTYuMy0zMC41LTEwLTMwLjUtMjAuNSAwLTcuOSA2LjMtMTIuNiAxNy45LTEyLjZzMjIuMSA0LjcgMzMuNiAxMy4xbDIxLTI3LjhjLTEzLjEtMTAtMzEtMjAuNS01NS4yLTIwLjUtMzUuNyAwLTU5LjkgMjAuNS01OS45IDQ5LjQgMCAyNS43IDIyLjYgMzguOSA0MS41IDQ2LjIgMTYuMyA2LjMgMzIuMSAxMS42IDMyLjEgMjIuMSAwIDcuOS02LjMgMTMuMS0yMC41IDEzLjEtMTMuMSAwLTI2LjMtNS4zLTQwLjUtMTYuM2wtMjEgMzAuNWMxNS44IDEzLjEgMzkuOSAyMi4xIDU5LjkgMjIuMSA0MiAwIDY0LjYtMjIuMSA2NC42LTUxcy0yMi41LTQxLTQzLTQ3Ljh6bS0zNTguOSA1OS40Yy0zLjcgMC04LjQtMy4yLTguNC0xMy4xVjExOS4xSDY1LjJjLTI4LjQgMC00MSAxMS00MSA0NS4yIDAgMjIuNiAzLjIgMzUuMiAzLjIgNTQuNiAwIDExLTYuOCAyMi42LTI3LjMgMjMuNnYyNy4zYzIwLjUuNSAyNy4zIDEyLjEgMjcuMyAyMy4xIDAgMTkuNC0zLjIgMzEtMy4yIDUzLjYgMCAzNC4yIDEyLjYgNDUuMiA0MC41IDQ1LjJoMjAuNXYtMjQuMmgtNi4zYy0xMy4xIDAtMTcuMy01LjMtMTcuMy0yMi42czEuNi0zMi4xIDEuNi01MS41YzAtMjQuMi03LjktMzMuNi0yMy42LTM3LjN2LTEuNmMxNS44LTMuNyAyMy42LTEzLjEgMjMuNi0zNy4zIDAtMTguOS0xLjYtMzQuMi0xLjYtNTEuNXMzLjctMjIuMSAxNy4zLTIyLjFIOTN2MTUwLjhjMCAzMi4xIDExIDUzLjEgNDMuMSA1My4xIDEwIDAgMTcuOS0xLjYgMjMuNi0zLjdsLTUuMy0zNC4yYy0zLjEuOC00LjYuOC02LjIuOHpNMzc5LjkgMjUxYy0xNi4zLTYuMy0zMS0xMC0zMS0yMC41IDAtNy45IDYuMy0xMi42IDE3LjktMTIuNiAxMS42IDAgMjIuMSA0LjcgMzMuNiAxMy4xbDIxLTI3LjhjLTEzLjEtMTAtMzEtMjAuNS01NS4yLTIwLjUtMzUuNyAwLTU5LjkgMjAuNS01OS45IDQ5LjQgMCAyNS43IDIyLjYgMzguOSA0MS41IDQ2LjIgMTYuMyA2LjMgMzIuMSAxMS42IDMyLjEgMjIuMSAwIDcuOS02LjMgMTMuMS0yMC41IDEzLjEtMTMuMSAwLTI2LjMtNS4zLTQwLjUtMTYuM2wtMjAuNSAzMC41YzE1LjggMTMuMSAzOS45IDIyLjEgNTkuOSAyMi4xIDQyIDAgNjQuNi0yMi4xIDY0LjYtNTEgLjEtMjguOS0yMi41LTQxLTQzLTQ3Ljh6bS0xNTUtNjguOGMtMzguNCAwLTc1LjEgMzIuMS03NC4xIDgyLjUgMCA1MiAzNC4yIDgyLjUgNzkuMyA4Mi41IDE4LjkgMCAzOS45LTYuOCA1Ni4yLTE3LjlsLTE1LjgtMjcuOGMtMTEuNiA2LjgtMjIuNiAxMC0zNC4yIDEwLTIxIDAtMzcuMy0xMC00MS41LTM0LjJIMjkwYy41LTMuNyAxLjYtMTEgMS42LTE5LjQuNi00Mi42LTIyLjYtNzUuNy02Ni43LTc1Ljd6bS0zMCA2Ni4yYzMuMi0yMSAxNS44LTMxIDMwLjUtMzEgMTguOSAwIDI2LjMgMTMuMSAyNi4zIDMxaC01Ni44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Mi4xIDIwNC4ydjcxLjFjMCAxLjgtMS40IDMuMi0zLjIgMy4yaC0xMS40Yy0xLjEgMC0yLjEtLjYtMi42LTEuM2wtMzIuNi00NHY0Mi4yYzAgMS44LTEuNCAzLjItMy4yIDMuMmgtMTEuNGMtMS44IDAtMy4yLTEuNC0zLjItMy4ydi03MS4xYzAtMS44IDEuNC0zLjIgMy4yLTMuMkgyMTljMSAwIDIuMS41IDIuNiAxLjRsMzIuNiA0NHYtNDIuMmMwLTEuOCAxLjQtMy4yIDMuMi0zLjJoMTEuNGMxLjgtLjEgMy4zIDEuNCAzLjMgMy4xem0tODItMy4yaC0xMS40Yy0xLjggMC0zLjIgMS40LTMuMiAzLjJ2NzEuMWMwIDEuOCAxLjQgMy4yIDMuMiAzLjJoMTEuNGMxLjggMCAzLjItMS40IDMuMi0zLjJ2LTcxLjFjMC0xLjctMS40LTMuMi0zLjItMy4yem0tMjcuNSA1OS42aC0zMS4xdi01Ni40YzAtMS44LTEuNC0zLjItMy4yLTMuMmgtMTEuNGMtMS44IDAtMy4yIDEuNC0zLjIgMy4ydjcxLjFjMCAuOS4zIDEuNi45IDIuMi42LjUgMS4zLjkgMi4yLjloNDUuN2MxLjggMCAzLjItMS40IDMuMi0zLjJ2LTExLjRjMC0xLjctMS40LTMuMi0zLjEtMy4yek0zMzIuMSAyMDFoLTQ1LjdjLTEuNyAwLTMuMiAxLjQtMy4yIDMuMnY3MS4xYzAgMS43IDEuNCAzLjIgMy4yIDMuMmg0NS43YzEuOCAwIDMuMi0xLjQgMy4yLTMuMnYtMTEuNGMwLTEuOC0xLjQtMy4yLTMuMi0zLjJIMzAxdi0xMmgzMS4xYzEuOCAwIDMuMi0xLjQgMy4yLTMuMlYyMzRjMC0xLjgtMS40LTMuMi0zLjItMy4ySDMwMXYtMTJoMzEuMWMxLjggMCAzLjItMS40IDMuMi0zLjJ2LTExLjRjLS4xLTEuNy0xLjUtMy4yLTMuMi0zLjJ6TTQ0OCAxMTMuN1YzOTljLS4xIDQ0LjgtMzYuOCA4MS4xLTgxLjcgODFIODFjLTQ0LjgtLjEtODEuMS0zNi45LTgxLTgxLjdWMTEzYy4xLTQ0LjggMzYuOS04MS4xIDgxLjctODFIMzY3YzQ0LjguMSA4MS4xIDM2LjggODEgODEuN3ptLTYxLjYgMTIyLjZjMC03My03My4yLTEzMi40LTE2My4xLTEzMi40LTg5LjkgMC0xNjMuMSA1OS40LTE2My4xIDEzMi40IDAgNjUuNCA1OCAxMjAuMiAxMzYuNCAxMzAuNiAxOS4xIDQuMSAxNi45IDExLjEgMTIuNiAzNi44LS43IDQuMS0zLjMgMTYuMSAxNC4xIDguOCAxNy40LTcuMyA5My45LTU1LjMgMTI4LjItOTQuNyAyMy42LTI2IDM0LjktNTIuMyAzNC45LTgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmtlZGluSW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAwLjI4IDQ0OEg3LjRWMTQ4LjloOTIuODh6TTUzLjc5IDEwOC4xQzI0LjA5IDEwOC4xIDAgODMuNSAwIDUzLjhhNTMuNzkgNTMuNzkgMCAwIDEgMTA3LjU4IDBjMCAyOS43LTI0LjEgNTQuMy01My43OSA1NC4zek00NDcuOSA0NDhoLTkyLjY4VjMwMi40YzAtMzQuNy0uNy03OS4yLTQ4LjI5LTc5LjItNDguMjkgMC01NS42OSAzNy43LTU1LjY5IDc2LjdWNDQ4aC05Mi43OFYxNDguOWg4OS4wOHY0MC44aDEuM2MxMi40LTIzLjUgNDIuNjktNDguMyA4Ny44OC00OC4zIDk0IDAgMTExLjI4IDYxLjkgMTExLjI4IDE0Mi4zVjQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlua2VkaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDMySDMxLjlDMTQuMyAzMiAwIDQ2LjUgMCA2NC4zdjM4My40QzAgNDY1LjUgMTQuMyA0ODAgMzEuOSA0ODBINDE2YzE3LjYgMCAzMi0xNC41IDMyLTMyLjNWNjQuM2MwLTE3LjgtMTQuNC0zMi4zLTMyLTMyLjN6TTEzNS40IDQxNkg2OVYyMDIuMmg2Ni41VjQxNnptLTMzLjItMjQzYy0yMS4zIDAtMzguNS0xNy4zLTM4LjUtMzguNVM4MC45IDk2IDEwMi4yIDk2YzIxLjIgMCAzOC41IDE3LjMgMzguNSAzOC41IDAgMjEuMy0xNy4yIDM4LjUtMzguNSAzOC41em0yODIuMSAyNDNoLTY2LjRWMzEyYzAtMjQuOC0uNS01Ni43LTM0LjUtNTYuNy0zNC42IDAtMzkuOSAyNy0zOS45IDU0LjlWNDE2aC02Ni40VjIwMi4yaDYzLjd2MjkuMmguOWM4LjktMTYuOCAzMC42LTM0LjUgNjIuOS0zNC41IDY3LjIgMCA3OS43IDQ0LjMgNzkuNyAxMDEuOVY0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbm9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzcuNCAyMjYuM2MtLjMtLjktLjktMS40LTEuNC0ybC03MC0zOC42Yy0uOS0uNi0yLS42LTMuMSAwbC01OC45IDM2Yy0uOS42LTEuNCAxLjctMS40IDIuNmwtLjkgMzEuNC0yNC0xNmMtLjktLjYtMi4zLS42LTMuMSAwTDI0MCAyNjAuOWwtMS40LTM1LjFjMC0uOS0uNi0yLTEuNC0yLjNsLTM2LTI0LjMgMzMuNy0xNy40YzEuMS0uNiAxLjctMS43IDEuNy0yLjlsLTUuNy0xMzIuM2MwLS45LS45LTItMS43LTIuNkwxMzguNi4zYy0uOS0uMy0xLjctLjMtMi4zLS4zTDEyLjYgMzguNmMtMS40LjYtMi4zIDItMiAzLjdMMzggMTc1LjRjLjkgMy40IDM0IDI3LjQgMzguNiAzMC45bC0yNi45IDEyLjljLTEuNC45LTIgMi4zLTEuNyAzLjRsMjAuNiAxMDAuM2MuNiAyLjkgMjMuNyAyMy4xIDI3LjEgMjYuM2wtMTcuNCAxMC42Yy0uOS42LTEuNyAyLTEuNCAzLjEgMS40IDcuMSAxNS40IDc3LjcgMTYuOSA3OS4xbDY1LjEgNjkuMWMuNi42IDEuNC42IDIuMy45LjYgMCAxLjEtLjMgMS43LS42bDgzLjctNjYuOWMuOS0uNiAxLjEtMS40IDEuMS0yLjNsLTItNDYgMjggMjMuN2MxLjEuOSAyLjkuOSA0IDBsNjYuOS01My40Yy45LS42IDEuMS0xLjQgMS4xLTIuM2wyLjMtMzMuNCAyMC4zIDE0YzEuMS45IDIuNi45IDMuNyAwbDU0LjYtNDMuN2MuNi0uMyAxLjEtMS4xIDEuMS0yIC45LTYuNSAxMC4zLTcwLjggOS43LTcyLjh6bS0yMDQuOCA0LjhsNCA5Mi42LTkwLjYgNjEuMi0xNC05Ni42IDEwMC42LTU3LjJ6bS03LjctMTgwbDUuNCAxMjYtMTA2LjYgNTUuNEwxMDQgOTcuN2wxMjAuOS00Ni42ek00NCAxNzMuMUwxOCA0OGw3OS43IDQ5LjQgMTkuNCAxMzIuOUw0NCAxNzMuMXptMzAuNiAxNDcuOEw1NS43IDIzMGw3MCA1OC4zIDEzLjcgOTMuNC02NC44LTYwLjh6bTI0LjMgMTE3LjdsLTEzLjctNjcuMSA2MS43IDYwLjkgOS43IDY3LjQtNTcuNy02MS4yem02NC41IDY0LjVsLTEwLjYtNzAuOSA4NS43LTYxLjQgMy4xIDcwLTc4LjIgNjIuM3ptODItMTE1LjFjMC0zLjQuOS0yMi45LTItMjUuMWwtMjQuMy0yMCAyMi4zLTE0LjljMi4zLTEuNyAxLjEtNS43IDEuMS04bDI5LjQgMjIuNi42IDY4LjMtMjcuMS0yMi45em05NC4zLTI1LjRsLTYwLjkgNDguNi0uNi02OC42IDY1LjctNDYuOS00LjIgNjYuOXptMjcuNy0yNS43bC0xOS4xLTEzLjQgMi0zNGMuMy0uOS0uMy0yLTEuMS0yLjZMMzA4IDI1OS43bC42LTMwIDY0LjYgNDAuNi01LjggNjYuNnptNTQuNi0zOS44bC00OC4zIDM4LjMgNS43LTY1LjEgNTEuMS0zNi42LTguNSA2My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW51eCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjAuOCAxMjMuM2MxIC41IDEuOCAxLjcgMyAxLjcgMS4xIDAgMi44LS40IDIuOS0xLjUuMi0xLjQtMS45LTIuMy0zLjItMi45LTEuNy0uNy0zLjktMS01LjUtLjEtLjQuMi0uOC43LS42IDEuMS4zIDEuMyAyLjMgMS4xIDMuNCAxLjd6bS0yMS45IDEuN2MxLjIgMCAyLTEuMiAzLTEuNyAxLjEtLjYgMy4xLS40IDMuNS0xLjYuMi0uNC0uMi0uOS0uNi0xLjEtMS42LS45LTMuOC0uNi01LjUuMS0xLjMuNi0zLjQgMS41LTMuMiAyLjkuMSAxIDEuOCAxLjUgMi44IDEuNHpNNDIwIDQwMy44Yy0zLjYtNC01LjMtMTEuNi03LjItMTkuNy0xLjgtOC4xLTMuOS0xNi44LTEwLjUtMjIuNC0xLjMtMS4xLTIuNi0yLjEtNC0yLjktMS4zLS44LTIuNy0xLjUtNC4xLTIgOS4yLTI3LjMgNS42LTU0LjUtMy43LTc5LjEtMTEuNC0zMC4xLTMxLjMtNTYuNC00Ni41LTc0LjQtMTcuMS0yMS41LTMzLjctNDEuOS0zMy40LTcyQzMxMS4xIDg1LjQgMzE1LjcuMSAyMzQuOCAwIDEzMi40LS4yIDE1OCAxMDMuNCAxNTYuOSAxMzUuMmMtMS43IDIzLjQtNi40IDQxLjgtMjIuNSA2NC43LTE4LjkgMjIuNS00NS41IDU4LjgtNTguMSA5Ni43LTYgMTcuOS04LjggMzYuMS02LjIgNTMuMy02LjUgNS44LTExLjQgMTQuNy0xNi42IDIwLjItNC4yIDQuMy0xMC4zIDUuOS0xNyA4LjNzLTE0IDYtMTguNSAxNC41Yy0yLjEgMy45LTIuOCA4LjEtMi44IDEyLjQgMCAzLjkuNiA3LjkgMS4yIDExLjggMS4yIDguMSAyLjUgMTUuNy44IDIwLjgtNS4yIDE0LjQtNS45IDI0LjQtMi4yIDMxLjcgMy44IDcuMyAxMS40IDEwLjUgMjAuMSAxMi4zIDE3LjMgMy42IDQwLjggMi43IDU5LjMgMTIuNSAxOS44IDEwLjQgMzkuOSAxNC4xIDU1LjkgMTAuNCAxMS42LTIuNiAyMS4xLTkuNiAyNS45LTIwLjIgMTIuNS0uMSAyNi4zLTUuNCA0OC4zLTYuNiAxNC45LTEuMiAzMy42IDUuMyA1NS4xIDQuMS42IDIuMyAxLjQgNC42IDIuNSA2Ljd2LjFjOC4zIDE2LjcgMjMuOCAyNC4zIDQwLjMgMjMgMTYuNi0xLjMgMzQuMS0xMSA0OC4zLTI3LjkgMTMuNi0xNi40IDM2LTIzLjIgNTAuOS0zMi4yIDcuNC00LjUgMTMuNC0xMC4xIDEzLjktMTguMy40LTguMi00LjQtMTcuMy0xNS41LTI5Ljd6TTIyMy43IDg3LjNjOS44LTIyLjIgMzQuMi0yMS44IDQ0LS40IDYuNSAxNC4yIDMuNiAzMC45LTQuMyA0MC40LTEuNi0uOC01LjktMi42LTEyLjYtNC45IDEuMS0xLjIgMy4xLTIuNyAzLjktNC42IDQuOC0xMS44LS4yLTI3LTkuMS0yNy4zLTcuMy0uNS0xMy45IDEwLjgtMTEuOCAyMy00LjEtMi05LjQtMy41LTEzLTQuNC0xLTYuOS0uMy0xNC42IDIuOS0yMS44ek0xODMgNzUuOGMxMC4xIDAgMjAuOCAxNC4yIDE5LjEgMzMuNS0zLjUgMS03LjEgMi41LTEwLjIgNC42IDEuMi04LjktMy4zLTIwLjEtOS42LTE5LjYtOC40LjctOS44IDIxLjItMS44IDI4LjEgMSAuOCAxLjktLjItNS45IDUuNS0xNS42LTE0LjYtMTAuNS01Mi4xIDguNC01Mi4xem0tMTMuNiA2MC43YzYuMi00LjYgMTMuNi0xMCAxNC4xLTEwLjUgNC43LTQuNCAxMy41LTE0LjIgMjcuOS0xNC4yIDcuMSAwIDE1LjYgMi4zIDI1LjkgOC45IDYuMyA0LjEgMTEuMyA0LjQgMjIuNiA5LjMgOC40IDMuNSAxMy43IDkuNyAxMC41IDE4LjItMi42IDcuMS0xMSAxNC40LTIyLjcgMTguMS0xMS4xIDMuNi0xOS44IDE2LTM4LjIgMTQuOS0zLjktLjItNy0xLTkuNi0yLjEtOC0zLjUtMTIuMi0xMC40LTIwLTE1LTguNi00LjgtMTMuMi0xMC40LTE0LjctMTUuMy0xLjQtNC45IDAtOSA0LjItMTIuM3ptMy4zIDMzNGMtMi43IDM1LjEtNDMuOSAzNC40LTc1LjMgMTgtMjkuOS0xNS44LTY4LjYtNi41LTc2LjUtMjEuOS0yLjQtNC43LTIuNC0xMi43IDIuNi0yNi40di0uMmMyLjQtNy42LjYtMTYtLjYtMjMuOS0xLjItNy44LTEuOC0xNSAuOS0yMCAzLjUtNi43IDguNS05LjEgMTQuOC0xMS4zIDEwLjMtMy43IDExLjgtMy40IDE5LjYtOS45IDUuNS01LjcgOS41LTEyLjkgMTQuMy0xOCA1LjEtNS41IDEwLTguMSAxNy43LTYuOSA4LjEgMS4yIDE1LjEgNi44IDIxLjkgMTZsMTkuNiAzNS42YzkuNSAxOS45IDQzLjEgNDguNCA0MSA2OC45em0tMS40LTI1LjljLTQuMS02LjYtOS42LTEzLjYtMTQuNC0xOS42IDcuMSAwIDE0LjItMi4yIDE2LjctOC45IDIuMy02LjIgMC0xNC45LTcuNC0yNC45LTEzLjUtMTguMi0zOC4zLTMyLjUtMzguMy0zMi41LTEzLjUtOC40LTIxLjEtMTguNy0yNC42LTI5LjlzLTMtMjMuMy0uMy0zNS4yYzUuMi0yMi45IDE4LjYtNDUuMiAyNy4yLTU5LjIgMi4zLTEuNy44IDMuMi04LjcgMjAuOC04LjUgMTYuMS0yNC40IDUzLjMtMi42IDgyLjQuNi0yMC43IDUuNS00MS44IDEzLjgtNjEuNSAxMi0yNy40IDM3LjMtNzQuOSAzOS4zLTExMi43IDEuMS44IDQuNiAzLjIgNi4yIDQuMSA0LjYgMi43IDguMSA2LjcgMTIuNiAxMC4zIDEyLjQgMTAgMjguNSA5LjIgNDIuNCAxLjIgNi4yLTMuNSAxMS4yLTcuNSAxNS45LTkgOS45LTMuMSAxNy44LTguNiAyMi4zLTE1IDcuNyAzMC40IDI1LjcgNzQuMyAzNy4yIDk1LjcgNi4xIDExLjQgMTguMyAzNS41IDIzLjYgNjQuNiAzLjMtLjEgNyAuNCAxMC45IDEuNCAxMy44LTM1LjctMTEuNy03NC4yLTIzLjMtODQuOS00LjctNC42LTQuOS02LjYtMi42LTYuNSAxMi42IDExLjIgMjkuMiAzMy43IDM1LjIgNTkgMi44IDExLjYgMy4zIDIzLjcuNCAzNS43IDE2LjQgNi44IDM1LjkgMTcuOSAzMC43IDM0LjgtMi4yLS4xLTMuMiAwLTQuMiAwIDMuMi0xMC4xLTMuOS0xNy42LTIyLjgtMjYuMS0xOS42LTguNi0zNi04LjYtMzguMyAxMi41LTEyLjEgNC4yLTE4LjMgMTQuNy0yMS40IDI3LjMtMi44IDExLjItMy42IDI0LjctNC40IDM5LjktLjUgNy43LTMuNiAxOC02LjggMjktMzIuMSAyMi45LTc2LjcgMzIuOS0xMTQuMyA3LjJ6bTI1Ny40LTExLjVjLS45IDE2LjgtNDEuMiAxOS45LTYzLjIgNDYuNS0xMy4yIDE1LjctMjkuNCAyNC40LTQzLjYgMjUuNXMtMjYuNS00LjgtMzMuNy0xOS4zYy00LjctMTEuMS0yLjQtMjMuMSAxLjEtMzYuMyAzLjctMTQuMiA5LjItMjguOCA5LjktNDAuNi44LTE1LjIgMS43LTI4LjUgNC4yLTM4LjcgMi42LTEwLjMgNi42LTE3LjIgMTMuNy0yMS4xLjMtLjIuNy0uMyAxLS41LjggMTMuMiA3LjMgMjYuNiAxOC44IDI5LjUgMTIuNiAzLjMgMzAuNy03LjUgMzguNC0xNi4zIDktLjMgMTUuNy0uOSAyMi42IDUuMSA5LjkgOC41IDcuMSAzMC4zIDE3LjEgNDEuNiAxMC42IDExLjYgMTQgMTkuNSAxMy43IDI0LjZ6TTE3My4zIDE0OC43YzIgMS45IDQuNyA0LjUgOCA3LjEgNi42IDUuMiAxNS44IDEwLjYgMjcuMyAxMC42IDExLjYgMCAyMi41LTUuOSAzMS44LTEwLjggNC45LTIuNiAxMC45LTcgMTQuOC0xMC40czUuOS02LjMgMy4xLTYuNi0yLjYgMi42LTYgNS4xYy00LjQgMy4yLTkuNyA3LjQtMTMuOSA5LjgtNy40IDQuMi0xOS41IDEwLjItMjkuOSAxMC4ycy0xOC43LTQuOC0yNC45LTkuN2MtMy4xLTIuNS01LjctNS03LjctNi45LTEuNS0xLjQtMS45LTQuNi00LjMtNC45LTEuNC0uMS0xLjggMy43IDEuNyA2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUx5ZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MS4xaDc3Ljh2MjA4LjdjMCAzMy4xIDE1IDUyLjggMjcuMiA2MS0xMi43IDExLjEtNTEuMiAyMC45LTgwLjItMi44QzcuOCAzMzQgMCAzMTAuNyAwIDI4OVY4MS4xem00ODUuOSAxNzMuNXYtMjJoMjMuOHYtNzYuOGgtMjYuMWMtMTAuMS00Ni4zLTUxLjItODAuNy0xMDAuMy04MC43LTU2LjYgMC0xMDIuNyA0Ni0xMDIuNyAxMDIuN1YzNTdjMTYgMi4zIDM1LjQtLjMgNTEuNy0xNCAxNy4xLTE0IDI0LjgtMzcuMiAyNC44LTU5di02LjdoMzguOHYtNzYuOGgtMzguOHYtMjMuM2MwLTM0LjYgNTIuMi0zNC42IDUyLjIgMHY3Ny4xYzAgNTYuNiA0NiAxMDIuNyAxMDIuNyAxMDIuN3YtNzYuNWMtMTQuNSAwLTI2LjEtMTEuNy0yNi4xLTI1Ljl6bS0yOTQuMy05OXYxMTNjMCAxNS40LTIzLjggMTUuNC0yMy44IDB2LTExM0g5MXYxMzIuN2MwIDIzLjggOCA1NCA0NSA2My45IDM3IDkuOCA1OC4yLTEwLjYgNTguMi0xMC42LTIuMSAxMy40LTE0LjUgMjMuMy0zNC45IDI1LjMtMTUuNSAxLjYtMzUuMi0zLjYtNDUtNy44djcwLjNjMjUuMSA3LjUgNTEuNSA5LjggNzcuNiA0LjcgNDcuMS05LjEgNzYuOC00OC40IDc2LjgtMTAwLjhWMTU1LjFoLTc3LjF2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ2VudG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ1LjcgMTI3LjlWMzg0bC02My40IDM2LjVWMTY0LjdMMjIzLjggNzMuMSA2NS4yIDE2NC43bC40IDI1NS45TDIuMyAzODRWMTI4LjFMMjI0LjIgMGwyMjEuNSAxMjcuOXpNMjU1LjYgNDIwLjVMMjI0IDQzOC45bC0zMS44LTE4LjJ2LTI1NmwtNjMuMyAzNi42LjEgMjU1LjkgOTQuOSA1NC45IDk1LjEtNTQuOXYtMjU2bC02My40LTM2LjZ2MjU1Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1haWxjaGltcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzAuNjEgMjQzLjUyYTM2LjE1IDM2LjE1IDAgMCAxIDkuMyAwYzEuNjYtMy44MyAxLjk1LTEwLjQzLjQ1LTE3LjYxLTIuMjMtMTAuNjctNS4yNS0xNy4xNC0xMS40OC0xNi4xM3MtNi40NyA4Ljc0LTQuMjQgMTkuNDJjMS4yNiA2IDMuNDkgMTEuMTQgNiAxNC4zMnpNMjc3LjA1IDI1MmM0LjQ3IDIgNy4yIDMuMjYgOC4yOCAyLjEzIDEuODktMS45NC0zLjQ4LTkuMzktMTIuMTItMTMuMDlhMzEuNDQgMzEuNDQgMCAwIDAtMzAuNjEgMy42OGMtMyAyLjE4LTUuODEgNS4yMi01LjQxIDcuMDYuODUgMy43NCAxMC0yLjcxIDIyLjYtMy40OCA3LS40NCAxMi44IDEuNzUgMTcuMjYgMy43MXptLTkgNS4xM2MtOS4wNyAxLjQyLTE1IDYuNTMtMTMuNDcgMTAuMS45LjM0IDEuMTcuODEgNS4yMS0uODFhMzcgMzcgMCAwIDEgMTguNzItMS45NWMyLjkyLjM0IDQuMzEuNTIgNC45NC0uNDkgMS40Ni0yLjIyLTUuNzEtOC0xNS4zOS02Ljg1em01NC4xNyAxNy4xYzMuMzgtNi44Ny0xMC45LTEzLjkzLTE0LjMtN3MxMC45MiAxMy44OCAxNC4zMiA2Ljk3em0xNS42Ni0yMC40N2MtNy42Ni0uMTMtNy45NSAxNS44LS4yNiAxNS45M3M3Ljk4LTE1LjgxLjI4LTE1Ljk2em0tMjE4Ljc5IDc4LjljLTEuMzIuMzEtNiAxLjQ1LTguNDctMi4zNS01LjItOCAxMS4xMS0yMC4zOCAzLTM1Ljc3LTkuMS0xNy40Ny0yNy44Mi0xMy41NC0zNS4wNS01LjU0LTguNzEgOS42LTguNzIgMjMuNTQtNSAyNC4wOCA0LjI3LjU3IDQuMDgtNi40NyA3LjM4LTExLjYzYTEyLjgzIDEyLjgzIDAgMCAxIDE3Ljg1LTMuNzJjMTEuNTkgNy41OSAxLjM3IDE3Ljc2IDIuMjggMjguNjIgMS4zOSAxNi42OCAxOC40MiAxNi4zNyAyMS41OCA5YTIuMDggMi4wOCAwIDAgMC0uMi0yLjMzYy4wMy44OS42OC0xLjMtMy4zNS0uMzl6bTI5OS43Mi0xNy4wN2MtMy4zNS0xMS43My0yLjU3LTkuMjItNi43OC0yMC41MiAyLjQ1LTMuNjcgMTUuMjktMjQtMy4wNy00My4yNS0xMC40LTEwLjkyLTMzLjktMTYuNTQtNDEuMS0xOC41NC0xLjUtMTEuMzkgNC42NS01OC43LTIxLjUyLTgzIDIwLjc5LTIxLjU1IDMzLjc2LTQ1LjI5IDMzLjczLTY1LjY1LS4wNi0zOS4xNi00OC4xNS01MS0xMDcuNDItMjYuNDdsLTEyLjU1IDUuMzNjLS4wNi0uMDUtMjIuNzEtMjIuMjctMjMuMDUtMjIuNTdDMTY5LjUtMTgtNDEuNzcgMjE2LjgxIDI1Ljc4IDI3My44NWwxNC43NiAxMi41MWE3Mi40OSA3Mi40OSAwIDAgMC00LjEgMzMuNWMzLjM2IDMzLjQgMzYgNjAuNDIgNjcuNTMgNjAuMzggNTcuNzMgMTMzLjA2IDI2Ny45IDEzMy4yOCAzMjIuMjkgMyAxLjc0LTQuNDcgOS4xMS0yNC42MSA5LjExLTQyLjM4cy0xMC4wOS0yNS4yNy0xNi41My0yNS4yN3ptLTMxNiA0OC4xNmMtMjIuODItLjYxLTQ3LjQ2LTIxLjE1LTQ5LjkxLTQ1LjUxLTYuMTctNjEuMzEgNzQuMjYtNzUuMjcgODQtMTIuMzMgNC41NCAyOS42NC00LjY3IDU4LjQ5LTM0LjEyIDU3Ljgxek04NC4zIDI0OS41NUM2OS4xNCAyNTIuNSA1NS43OCAyNjEuMDkgNDcuNiAyNzNjLTQuODgtNC4wNy0xNC0xMi0xNS41OS0xNS0xMy4wMS0yNC44NSAxNC4yNC03MyAzMy4zLTEwMC4yMUMxMTIuNDIgOTAuNTYgMTg2LjE5IDM5LjY4IDIyMC4zNiA0OC45MWM1LjU1IDEuNTcgMjMuOTQgMjIuODkgMjMuOTQgMjIuODlzLTM0LjE1IDE4Ljk0LTY1LjggNDUuMzVjLTQyLjY2IDMyLjg1LTc0Ljg5IDgwLjU5LTk0LjIgMTMyLjR6TTMyMy4xOCAzNTAuN3MtMzUuNzQgNS4zLTY5LjUxLTcuMDdjNi4yMS0yMC4xNiAyNyA2LjEgOTYuNC0xMy44MSAxNS4yOS00LjM4IDM1LjM3LTEzIDUxLTI1LjM1YTEwMi44NSAxMDIuODUgMCAwIDEgNy4xMiAyNC4yOGMzLjY2LS42NiAxNC4yNS0uNTIgMTEuNDQgMTguMS0zLjI5IDE5Ljg3LTExLjczIDM2LTI1LjkzIDUwLjg0QTEwNi44NiAxMDYuODYgMCAwIDEgMzYyLjU1IDQyMWExMzIuNDUgMTMyLjQ1IDAgMCAxLTIwLjM0IDguNThjLTUzLjUxIDE3LjQ4LTEwOC4zLTEuNzQtMTI2LTQzYTY2LjMzIDY2LjMzIDAgMCAxLTMuNTUtOS43NGMtNy41My0yNy4yLTEuMTQtNTkuODMgMTguODQtODAuMzcgMS4yMy0xLjMxIDIuNDgtMi44NSAyLjQ4LTQuNzlhOC40NSA4LjQ1IDAgMCAwLTEuOTItNC41NGMtNy0xMC4xMy0zMS4xOS0yNy40LTI2LjMzLTYwLjgzIDMuNS0yNCAyNC40OS00MC45MSA0NC4wNy0zOS45MWw1IC4yOWM4LjQ4LjUgMTUuODkgMS41OSAyMi44OCAxLjg4IDExLjY5LjUgMjIuMi0xLjE5IDM0LjY0LTExLjU2IDQuMi0zLjUgNy41Ny02LjU0IDEzLjI2LTcuNTFhMTcuNDUgMTcuNDUgMCAwIDEgMTMuNiAyLjI0YzEwIDYuNjQgMTEuNCAyMi43MyAxMS45MiAzNC40OS4yOSA2LjcyIDEuMSAyMyAxLjM4IDI3LjYzLjYzIDEwLjY3IDMuNDMgMTIuMTcgOS4xMSAxNCAzLjE5IDEuMDUgNi4xNSAxLjgzIDEwLjUxIDMuMDYgMTMuMjEgMy43MSAyMSA3LjQ4IDI2IDEyLjMxYTE2LjM4IDE2LjM4IDAgMCAxIDQuNzQgOS4yOWMxLjU2IDExLjM3LTguODIgMjUuNC0zNi4zMSAzOC4xNi00Ni43MSAyMS42OC05My42OCAxNC40NS0xMDAuNDggMTMuNjgtMjAuMTUtMi43MS0zMS42MyAyMy4zMi0xOS41NSA0MS4xNSAyMi42NCAzMy40MSAxMjIuNCAyMCAxNTEuMzctMjEuMzUuNjktMSAuMTItMS41OS0uNzMtMS00MS43NyAyOC41OC05Ny4wNiAzOC4yMS0xMjguNDYgMjYtNC43Ny0xLjg1LTE0LjczLTYuNDQtMTUuOTQtMTYuNjcgNDMuNiAxMy40OSA3MSAuNzQgNzEgLjc0czIuMDMtMi43OS0uNTYtMi41M3ptLTY4LjQ3LTUuN3ptLTgzLjQtMTg3LjVjMTYuNzQtMTkuMzUgMzcuMzYtMzYuMTggNTUuODMtNDUuNjNhLjczLjczIDAgMCAxIDEgMWMtMS40NiAyLjY2LTQuMjkgOC4zNC01LjE5IDEyLjY1YS43NS43NSAwIDAgMCAxLjE2Ljc5YzExLjQ5LTcuODMgMzEuNDgtMTYuMjIgNDktMTcuM2EuNzcuNzcgMCAwIDEgLjUyIDEuMzggNDEuODYgNDEuODYgMCAwIDAtNy43MSA3Ljc0Ljc1Ljc1IDAgMCAwIC41OSAxLjE5YzEyLjMxLjA5IDI5LjY2IDQuNCA0MSAxMC43NC43Ni40My4yMiAxLjkxLS42NCAxLjcyLTY5LjU1LTE1Ljk0LTEyMy4wOCAxOC41My0xMzQuNSAyNi44M2EuNzYuNzYgMCAwIDEtMS0xLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYW5kYWxvcmlhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIuMjcgNTExLjg5Yy0xLTMuMjYtMS42OS0xNS44My0xLjM5LTI0LjU4LjU1LTE1Ljg5IDEtMjQuNzIgMS40LTI4Ljc2LjY0LTYuMiAyLjg3LTIwLjcyIDMuMjgtMjEuMzguNi0xIC40LTI3Ljg3LS4yNC0zMy4xMy0uMzEtMi41OC0uNjMtMTEuOS0uNjktMjAuNzMtLjEzLTE2LjQ3LS41My0yMC4xMi0yLjczLTI0Ljc2LTEuMS0yLjMyLTEuMjMtMy44NC0xLTExLjQzYTkyLjM4IDkyLjM4IDAgMCAwLS4zNC0xMi43MWMtMi0xMy0zLjQ2LTI3LjctMy4yNS0zMy45cy40My03LjE1IDIuMDYtOS42N2MzLjA1LTQuNzEgNi41MS0xNCA4LjYyLTIzLjI3IDIuMjYtOS44NiAzLjg4LTE3LjE4IDQuNTktMjAuNzRhMTA5LjU0IDEwOS41NCAwIDAgMSA0LjQyLTE1LjA1YzIuMjctNi4yNSAyLjQ5LTE1LjM5LjM3LTE1LjM5LS4zIDAtMS4zOCAxLjIyLTIuNDEgMi43MXMtNC43NiA0LjgtOC4yOSA3LjM2Yy04LjM3IDYuMDgtMTEuNyA5LjM5LTEyLjY2IDEyLjU4cy0xIDcuMjMtLjE2IDcuNzZjLjM0LjIxIDEuMjkgMi40IDIuMTEgNC44OGEyOC44MyAyOC44MyAwIDAgMSAuNzIgMTUuMzZjLS4zOSAxLjc3LTEgNS40Ny0xLjQ2IDguMjNzLTEgNi40Ni0xLjI1IDguMjJhOS44NSA5Ljg1IDAgMCAxLTEuNTUgNC4yNmMtMSAxLTEuMTQuOTEtMi4wNS0uNTNhMTQuODcgMTQuODcgMCAwIDEtMS40NC00Ljc1Yy0uMjUtMS43NC0xLjYzLTcuMTEtMy4wOC0xMS45My0zLjI4LTEwLjktMy41Mi0xNi4xNS0xLTIxYTE0LjI0IDE0LjI0IDAgMCAwIDEuNjctNC42MWMwLTIuMzktMi4yLTUuMzItNy40MS05Ljg5LTctNi4xOC04LjYzLTcuOTItMTAuMjMtMTEuMy0xLjcxLTMuNi0zLjA2LTQuMDYtNC41NC0xLjU0LTEuNzggMy0yLjYgOS4xMS0zIDIybC0uMzQgMTIuMTkgMiAyLjI1YzMuMjEgMy43IDEyLjA3IDE2LjQ1IDEzLjc4IDE5LjgzIDMuNDEgNi43NCA0LjM0IDExLjY5IDQuNDEgMjMuNTZzLjk1IDIyLjc1IDIgMjQuNzFjLjM2LjY2LjUxIDEuMzUuMzQgMS41MnMuNDEgMi4wOSAxLjI5IDQuMjdhMzguMTQgMzguMTQgMCAwIDEgMi4wNiA5IDkxIDkxIDAgMCAwIDEuNzEgMTAuMzdjMi4yMyA5LjU2IDIuNzcgMTQuMDggMi4zOSAyMC4xNC0uMiAzLjI3LS41MyAxMS4wNy0uNzMgMTcuMzItMS4zMSA0MS43Ni0xLjg1IDU4LTIgNjEuMjEtLjEyIDItLjM5IDExLjUxLS42IDIxLjA3LS4zNiAxNi4zLTEuMyAyNy4zNy0yLjQyIDI4LjY1LS42NC43My04LjA3LTQuOTEtMTIuNTItOS40OS0zLjc1LTMuODctNC00Ljc5LTIuODMtOS45NS43LTMgMi4yNi0xOC4yOSAzLjMzLTMyLjYyLjM2LTQuNzguODEtMTAuNSAxLTEyLjcxLjgzLTkuMzcgMS42Ni0yMC4zNSAyLjYxLTM0Ljc4LjU2LTguNDYgMS4zMy0xNi40NCAxLjcyLTE3Ljczcy44OS05Ljg5IDEuMTMtMTkuMTFsLjQzLTE2Ljc3LTIuMjYtNC4zYy0xLjcyLTMuMjgtNC44Ny02Ljk0LTEzLjIyLTE1LjM0LTYtNi4wNy0xMS44NC0xMi4zLTEyLjkxLTEzLjg1bC0xLjk1LTIuODEuNzUtMTAuOWMxLjA5LTE1LjcxIDEuMS00OC41NyAwLTU5LjA2bC0uODktOC43LTMuMjgtNC41MmMtNS44Ni04LjA4LTUuOC03Ljc1LTYuMjItMzMuMjctLjEtNi4wNy0uMzgtMTEuNS0uNjMtMTIuMDYtLjgzLTEuODctMy4wNS0yLjY2LTguNTQtMy4wNS04Ljg2LS42Mi0xMS0xLjktMjMuODUtMTQuNTUtNi4xNS02LTEyLjM0LTEyLTEzLjc1LTEzLjE5LTIuODEtMi40Mi0yLjc5LTItLjU2LTkuNjNsMS4zNS00LjY1LTEuNjktM2EzMi4yMiAzMi4yMiAwIDAgMC0yLjU5LTQuMDdjLTEuMzMtMS41MS01LjUtMTAuODktNi0xMy40OWE0LjI0IDQuMjQgMCAwIDEgLjg3LTMuOWMyLjIzLTIuODYgMy40LTUuNjggNC40NS0xMC43MyAyLjMzLTExLjE5IDcuNzQtMjYuMDkgMTAuNi0yOS4yMiAzLjE4LTMuNDcgNy43LTEgOS40MSA1IDEuMzQgNC43OSAxLjM3IDkuNzkuMSAxOC41NWExMDEuMiAxMDEuMiAwIDAgMC0xIDExLjExYzAgNCAuMTkgNC42OSAyLjI1IDcuMzkgMy4zMyA0LjM3IDcuNzMgNy40MSAxNS4yIDEwLjUyYTE4LjY3IDE4LjY3IDAgMCAxIDQuNzIgMi44NWMxMS4xNyAxMC43MiAxOC42MiAxNi4xOCAyMi45NSAxNi44NSA1LjE4LjggOCA0LjU0IDEwIDEzLjM5IDEuMzEgNS42NSA0IDExLjE0IDUuNDYgMTEuMTRhOS4zOCA5LjM4IDAgMCAwIDMuMzMtMS4zOWMyLTEuMjIgMi4yNS0xLjczIDIuMjUtNC4xOGExMzIuODggMTMyLjg4IDAgMCAwLTItMTcuODRjLS4zNy0xLjY2LS43OC00LjA2LS45My01LjM1cy0uNjEtMy44NS0xLTUuNjljLTIuNTUtMTEuMTYtMy42NS0xNS40Ni00LjEtMTYtMS41NS0yLTQuMDgtMTAuMi00LjkzLTE1LjkyLTEuNjQtMTEuMTEtNC0xNC4yMy0xMi45MS0xNy4zOUE0My4xNSA0My4xNSAwIDAgMSAxNjUuMjQgNzhjLTEuMTUtMS00LTMuMjItNi4zNS01LjA2cy00LjQxLTMuNTMtNC42LTMuNzZhMjIuNyAyMi43IDAgMCAwLTIuNjktMmMtNi4yNC00LjIyLTguODQtNy0xMS4yNi0xMmwtMi40NC01LS4yMi0xMy0uMjItMTMgNi45MS02LjU1YzMuOTUtMy43NSA4LjQ4LTcuMzUgMTAuNTktOC40MyAzLjMxLTEuNjkgNC40NS0xLjg5IDExLjM3LTIgOC41My0uMTkgMTAuMTIgMCAxMS42NiAxLjU2czEuMzYgNi40LS4yOSA4LjVhNi42NiA2LjY2IDAgMCAwLTEuMzQgMi4zMmMwIC41OC0yLjYxIDQuOTEtNS40MiA5YTMwLjM5IDMwLjM5IDAgMCAwLTIuMzcgNi44MmMyMC40NCAxMy4zOSAyMS41NSAzLjc3IDE0LjA3IDI5TDE5NCA2Ni45MmMzLjExLTguNjYgNi40Ny0xNy4yNiA4LjYxLTI2LjIyLjI5LTcuNjMtMTItNC4xOS0xNS40LTguNjgtMi4zMy01LjkzIDMuMTMtMTQuMTggNi4wNi0xOS4yIDEuNi0yLjM0IDYuNjItNC43IDguODItNC4xNS44OC4yMiA0LjE2LS4zNSA3LjM3LTEuMjhhNDUuMyA0NS4zIDAgMCAxIDcuNTUtMS42OCAyOS41NyAyOS41NyAwIDAgMCA2LTEuMjljMy42NS0xLjExIDQuNS0xLjE3IDYuMzUtLjRhMjkuNTQgMjkuNTQgMCAwIDAgNS44MiAxLjM2IDE4LjE4IDE4LjE4IDAgMCAxIDYgMS45MSAyMi42NyAyMi42NyAwIDAgMCA1IDIuMTdjMi41MS42OCAzIC41NyA3LjA1LTEuNjdsNC4zNS0yLjRMMjY4LjMyIDVjMTAuNDQtLjQgMTAuODEtLjQ3IDE1LjI2LTIuNjhMMjg4LjE2IDBsMi40NiAxLjQzYzEuNzYgMSAzLjE0IDIuNzMgNC44NSA2IDIuMzYgNC41MSAyLjM4IDQuNTggMS4zNyA3LjM3LS44OCAyLjQ0LS44OSAzLjMtLjEgNi4zOWEzNS43NiAzNS43NiAwIDAgMCAyLjEgNS45MSAxMy41NSAxMy41NSAwIDAgMSAxLjMxIDRjLjMxIDQuMzMgMCA1LjMtMi40MSA2LjkyLTIuMTcgMS40Ny03IDcuOTEtNyA5LjM0YTE0Ljc3IDE0Ljc3IDAgMCAxLTEuMDcgM2MtNSAxMS41MS02Ljc2IDEzLjU2LTE0LjI2IDE3LTkuMiA0LjItMTIuMyA1LjE5LTE2LjIxIDUuMTktMy4xIDAtNCAuMjUtNC41NCAxLjI2YTE4LjMzIDE4LjMzIDAgMCAxLTQuMDkgMy43MSAxMy42MiAxMy42MiAwIDAgMC00LjM4IDQuNzggNS44OSA1Ljg5IDAgMCAxLTIuNDkgMi45MSA2Ljg4IDYuODggMCAwIDAtMi40NSAxLjcxIDY3LjYyIDY3LjYyIDAgMCAxLTcgNS4zOGMtMy4zMyAyLjM0LTYuODcgNS03Ljg3IDZBNy4yNyA3LjI3IDAgMCAxIDIyNCAxMDBhNS43NiA1Ljc2IDAgMCAwLTIuMTMgMS42NWMtMS4zMSAxLjM5LTEuNDkgMi4xMS0xLjE0IDQuNmEzNi40NSAzNi40NSAwIDAgMCAxLjQyIDUuODhjMS4zMiAzLjggMS4zMSA3Ljg2IDAgMTAuNTdzLS44OSA2LjY1IDEuMzUgOS41OWMyIDIuNjMgMi4xNiA0LjU2LjcxIDguODRhMzMuNDUgMzMuNDUgMCAwIDAtMS4wNiA4LjkxYzAgNC44OC4yMiA2LjI4IDEuNDYgOC4zOHMxLjgyIDIuNDggMy4yNCAyLjMyYzItLjIzIDIuMy0xLjA1IDQuNzEtMTIuMTIgMi4xOC0xMCAzLjcxLTExLjkyIDEzLjc2LTE3LjA4IDIuOTQtMS41MSA3LjQ2LTQgMTAtNS40NHM2Ljc5LTMuNjkgOS4zNy00LjkxYTQwLjA5IDQwLjA5IDAgMCAwIDE1LjIyLTExLjY3YzcuMTEtOC43OSAxMC0xNi4yMiAxMi44NS0zMy4zYTE4LjM3IDE4LjM3IDAgMCAxIDIuODYtNy43MyAyMC4zOSAyMC4zOSAwIDAgMCAyLjg5LTcuMzFjMS01LjMgMi44NS05LjA4IDUuNTgtMTEuNTEgNC43LTQuMTggNi0xLjA5IDQuNTkgMTAuODctLjQ2IDMuODYtMS4xIDEwLjMzLTEuNDQgMTQuMzhsLS42MSA3LjM2IDQuNDUgNC4wOSA0LjQ1IDQuMDkuMTEgOC40MmMuMDYgNC42My40NyA5LjUzLjkyIDEwLjg5bC44MiAyLjQ3LTYuNDMgNi4yOGMtOC41NCA4LjMzLTEyLjg4IDEzLjkzLTE2Ljc2IDIxLjYxLTEuNzcgMy40OS0zLjc0IDcuMTEtNC4zOCA4LTIuMTggMy4xMS02LjQ2IDEzLTguNzYgMjAuMjZsLTIuMjkgNy4yMi03IDYuNDljLTMuODMgMy41Ny04IDcuMjUtOS4xNyA4LjE3LTMuMDUgMi4zMi00LjI2IDUuMTUtNC4yNiAxMGExNC42MiAxNC42MiAwIDAgMCAxLjU5IDcuMjYgNDIgNDIgMCAwIDEgMi4wOSA0LjgzIDkuMjggOS4yOCAwIDAgMCAxLjU3IDIuODljMS40IDEuNTkgMS45MiAxNi4xMi44MyAyMy4yMi0uNjggNC40OC0zLjYzIDEyLTQuNyAxMi0xLjc5IDAtNC4wNiA5LjI3LTUuMDcgMjAuNzQtLjE4IDItLjYyIDUuOTQtMSA4LjdzLTEgMTAtMS4zNSAxNi4wNWMtLjc3IDEyLjIyLS4xOSAxOC43NyAyIDIzLjE1IDMuNDEgNi42OS41MiAxMi42OS0xMSAyMi44NGwtNCAzLjQ5LjA3IDUuMTlhNDAuODEgNDAuODEgMCAwIDAgMS4xNCA4Ljg3YzQuNjEgMTYgNC43MyAxNi45MiA0LjM4IDM3LjEzLS40NiAyNi40LS4yNiA0MC4yNy42MyA0NC4xNWE2MS4zMSA2MS4zMSAwIDAgMSAxLjA4IDdjLjE3IDIgLjY2IDUuMzMgMS4wOCA3LjM2LjQ3IDIuMjYuNzggMTEgLjc5IDIyLjc0djE5LjA2bC0xLjgxIDIuNjNjLTIuNzEgMy45MS0xNS4xMSAxMy41NC0xNS40OSAxMi4yOXptMjkuNTMtNDUuMTFjLS4xOC0uMy0uMzMtNi44Ny0uMzMtMTQuNTkgMC0xNC4wNi0uODktMjcuNTQtMi4yNi0zNC40NS0uNC0yLS44MS05LjctLjktMTcuMDYtLjE1LTExLjkzLTEuNC0yNC4zNy0yLjY0LTI2LjM4LS42Ni0xLjA3LTMtMTcuNjYtMy0yMS4zIDAtNC4yMyAxLTYgNS4yOC05LjEzczQuODYtMy4xNCA1LjQ4LS43MmMuMjggMS4xIDEuNDUgNS42MiAyLjYgMTAgMy45MyAxNS4xMiA0LjE0IDE2LjI3IDQuMDUgMjEuNzQtLjEgNS43OC0uMTMgNi4xMy0xLjc0IDE3LjczLTEgNy4wNy0xLjE3IDEyLjM5LTEgMjguNDMuMTcgMTkuNC0uNjQgMzUuNzMtMiA0MS4yNy0uNzEgMi43OC0yLjggNS40OC0zLjQzIDQuNDN6bS03MS0zNy41OGExMDEgMTAxIDAgMCAxLTEuNzMtMTAuNzkgMTAwLjUgMTAwLjUgMCAwIDAtMS43My0xMC43OSAzNy41MyAzNy41MyAwIDAgMS0xLTYuNDljLS4zMS0zLjE5LS45MS03LjQ2LTEuMzMtOS40OC0xLTQuNzktMy4zNS0xOS4zNS0zLjQyLTIxLjA3IDAtLjc0LS4zNC00LjA1LS43LTcuMzYtLjY3LTYuMjEtLjg0LTI3LjY3LS4yMi0yOC4yOSAxLTEgNi42MyAyLjc2IDExLjMzIDcuNDNsNS4yOCA1LjI1LS40NSA2LjQ3Yy0uMjUgMy41Ni0uNiAxMC4yMy0uNzggMTQuODNzLS40OSA5Ljg3LS42NyAxMS43MS0uNjEgOS4zNi0uOTQgMTYuNzJjLS43OSAxNy40MS0xLjk0IDMxLjI5LTIuNjUgMzJhLjYyLjYyIDAgMCAxLTEtLjE0em0tODcuMTgtMjY2LjU5YzIxLjA3IDEyLjc5IDE3Ljg0IDE0LjE1IDI4LjQ5IDE3LjY2IDEzIDQuMjkgMTguODcgNy4xMyAyMy4xNSAxNi44N0MxMTEuNiAyMzMuMjggODYuMjUgMjU1IDc4LjU1IDI2OGMtMzEgNTItNiAxMDEuNTkgNjIuNzUgODcuMjEtMTQuMTggMjkuMjMtNzggMjguNjMtOTguNjgtNC45LTI0LjY4LTM5Ljk1LTIyLjA5LTExOC4zIDYxLTE4Ny42NnptMjEwLjc5IDE3OWM1Ni42NiA2Ljg4IDgyLjMyLTM3Ljc0IDQ2LjU0LTg5LjIzIDAgMC0yNi44Ny0yOS4zNC02NC4yOC02OCAzLTE1LjQ1IDkuNDktMzIuMTIgMzAuNTctNTMuODIgODkuMiA2My41MSA5MiAxNDEuNjEgOTIuNDYgMTQ5LjM2IDQuMyA3MC42NC03OC43IDkxLjE4LTEwNS4yOSA2MS43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFya2Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkzLjggNTkuMUg0Ni4yQzIwLjcgNTkuMSAwIDc5LjggMCAxMDUuMnYzMDEuNWMwIDI1LjUgMjAuNyA0Ni4yIDQ2LjIgNDYuMmg1NDcuN2MyNS41IDAgNDYuMi0yMC43IDQ2LjEtNDYuMVYxMDUuMmMwLTI1LjQtMjAuNy00Ni4xLTQ2LjItNDYuMXpNMzM4LjUgMzYwLjZIMjc3di0xMjBsLTYxLjUgNzYuOS02MS41LTc2Ljl2MTIwSDkyLjNWMTUxLjRoNjEuNWw2MS41IDc2LjkgNjEuNS03Ni45aDYxLjV2MjA5LjJ6bTEzNS4zIDMuMUwzODEuNSAyNTZINDQzVjE1MS40aDYxLjVWMjU2SDU2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFzdG9kb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzIDE3OS4xMWMwLTk3LjItNjMuNzEtMTI1LjctNjMuNzEtMTI1LjctNjIuNTItMjguNy0yMjguNTYtMjguNC0yOTAuNDggMCAwIDAtNjMuNzIgMjguNS02My43MiAxMjUuNyAwIDExNS43LTYuNiAyNTkuNCAxMDUuNjMgMjg5LjEgNDAuNTEgMTAuNyA3NS4zMiAxMyAxMDMuMzMgMTEuNCA1MC44MS0yLjggNzkuMzItMTguMSA3OS4zMi0xOC4xbC0xLjctMzYuOXMtMzYuMzEgMTEuNC03Ny4xMiAxMC4xYy00MC40MS0xLjQtODMtNC40LTg5LjYzLTU0YTEwMi41NCAxMDIuNTQgMCAwIDEtLjktMTMuOWM4NS42MyAyMC45IDE1OC42NSA5LjEgMTc4Ljc1IDYuNyA1Ni4xMi02LjcgMTA1LTQxLjMgMTExLjIzLTcyLjkgOS44LTQ5LjggOS0xMjEuNSA5LTEyMS41em0tNzUuMTIgMTI1LjJoLTQ2LjYzdi0xMTQuMmMwLTQ5LjctNjQtNTEuNi02NCA2Ljl2NjIuNWgtNDYuMzNWMTk3YzAtNTguNS02NC01Ni42LTY0LTYuOXYxMTQuMkg5MC4xOWMwLTEyMi4xLTUuMi0xNDcuOSAxOC40MS0xNzUgMjUuOS0yOC45IDc5LjgyLTMwLjggMTAzLjgzIDYuMWwxMS42IDE5LjUgMTEuNi0xOS41YzI0LjExLTM3LjEgNzguMTItMzQuOCAxMDMuODMtNi4xIDIzLjcxIDI3LjMgMTguNCA1MyAxOC40IDE3NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWF4Y2RuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MS4xIDQ0Mi43aC05Ny40TDQxNS42IDIwMGMyLjMtMTAuMi45LTE5LjUtNC40LTI1LjctNS02LjEtMTMuNy05LjYtMjQuMi05LjZoLTQ5LjNsLTU5LjUgMjc4aC05Ny40bDU5LjUtMjc4aC04My40bC01OS41IDI3OEgwbDU5LjUtMjc4LTQ0LjYtOTUuNEgzODdjMzkuNCAwIDc1LjMgMTYuMyA5OC4zIDQ0LjkgMjMuMyAyOC42IDMxLjggNjcuNCAyMy42IDEwNS45bC00Ny44IDIyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMzcgMTYwLjQxTDcgMzUyaDQzLjkxbDUuNTktNzkuODNMODQuNDMgMzUyaDQ0LjcxbDI1LjU0LTc3LjQzIDQuNzkgNzcuNDNIMjA1bC0xMi43OS0xOTEuNTlIMTQ2LjdMMTA2IDI3Ny43NCA2My42NyAxNjAuNDF6bTI4MSAwaC00Ny45VjM1Mmg0Ny45czk1IC44IDk0LjItOTUuNzljLS43OC05NC4yMS05NC4xOC05NS43OC05NC4xOC05NS43OHptLTEuMiAxNDYuNDZWMjA0Ljc4czQ2IDQuMjcgNDYuOCA1MC41Ny00Ni43OCA1MS41NC00Ni43OCA1MS41NHptMjM4LjI5LTc0LjI0YTU2LjE2IDU2LjE2IDAgMCAwIDgtMzguMzFjLTUuMzQtMzUuNzYtNTUuMDgtMzQuMzItNTUuMDgtMzQuMzJoLTUxLjl2MTkxLjU4SDQ4MnM4NyA0Ljc5IDg3LTYzLjg1YzAtNDMuMTQtMzMuNTItNTUuMDgtMzMuNTItNTUuMDh6bS01MS45LTMxLjk0czEzLjU3LTEuNTkgMTYgOS41OWMxLjQzIDYuNjYtNCAxMi00IDEyaC0xMnYtMjEuNTd6bS0uMSAxMDkuNDZsLjEtMjQuOTJWMjY3aC4wOHM0MS41OC00LjczIDQxLjE5IDIyLjQzYy0uMzMgMjUuNjUtNDEuMzUgMjAuNzQtNDEuMzUgMjAuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZGFwcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE4LjMgMjM4LjRjMy41LTEyLjUgNi45LTMzLjYgMTMuMi0zMy42IDguMyAxLjggOS42IDIzLjQgMTguNiAzNi42IDQuNi0yMy41IDUuMy04NS4xIDE0LjEtODYuNyA5LS43IDE5LjcgNjYuNSAyMiA3Ny41IDkuOSA0LjEgNDguOSA2LjYgNDguOSA2LjYgMS45IDcuMy0yNCA3LjYtNDAgNy44LTQuNiAxNC44LTUuNCAyNy43LTExLjQgMjgtNC43LjItOC4yLTI4LjgtMTcuNS00OS42bC05LjQgNjUuNWMtNC40IDEzLTE1LjUtMjIuNS0yMS45LTM5LjMtMy4zLS4xLTYyLjQtMS42LTQ3LjYtNy44bDMxLTV6TTIyOCA0NDhjMjEuMiAwIDIxLjItMzIgMC0zMkg5MmMtMjEuMiAwLTIxLjIgMzIgMCAzMmgxMzZ6bS0yNCA2NGMyMS4yIDAgMjEuMi0zMiAwLTMyaC04OGMtMjEuMiAwLTIxLjIgMzIgMCAzMmg4OHptMzQuMi0xNDEuNWMzLjItMTguOSA1LjItMzYuNCAxMS45LTQ4LjggNy45LTE0LjcgMTYuMS0yOC4xIDI0LTQxIDI0LjYtNDAuNCA0NS45LTc1LjIgNDUuOS0xMjUuNUMzMjAgNjkuNiAyNDguMiAwIDE2MCAwUzAgNjkuNiAwIDE1NS4yYzAgNTAuMiAyMS4zIDg1LjEgNDUuOSAxMjUuNSA3LjkgMTIuOSAxNiAyNi4zIDI0IDQxIDYuNyAxMi41IDguNyAyOS44IDExLjkgNDguOSAzLjUgMjEgMzYuMSAxNS43IDMyLjYtNS4xLTMuNi0yMS43LTUuNi00MC43LTE1LjMtNTguNkM2Ni41IDI0Ni41IDMzIDIxMS4zIDMzIDE1NS4yIDMzIDg3LjMgOTAgMzIgMTYwIDMyczEyNyA1NS4zIDEyNyAxMjMuMmMwIDU2LjEtMzMuNSA5MS4zLTY2LjEgMTUxLjYtOS43IDE4LTExLjcgMzcuNC0xNS4zIDU4LjYtMy40IDIwLjYgMjkgMjYuNCAzMi42IDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkaXVtTSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MS41IDE0Mi4zYy42LTUuOS0xLjctMTEuOC02LjEtMTUuOEwyMC4zIDcyLjFWNjRoMTQwLjJsMTA4LjQgMjM3LjdMMzY0LjIgNjRoMTMzLjd2OC4xbC0zOC42IDM3Yy0zLjMgMi41LTUgNi43LTQuMyAxMC44djI3MmMtLjcgNC4xIDEgOC4zIDQuMyAxMC44bDM3LjcgMzd2OC4xSDMwNy4zdi04LjFsMzkuMS0zNy45YzMuOC0zLjggMy44LTUgMy44LTEwLjhWMTcxLjJMMjQxLjUgNDQ3LjFoLTE0LjdMMTAwLjQgMTcxLjJ2MTg0LjljLTEuMSA3LjggMS41IDE1LjYgNyAyMS4ybDUwLjggNjEuNnY4LjFoLTE0NHYtOEw2NSAzNzcuM2M1LjQtNS42IDcuOS0xMy41IDYuNS0yMS4yVjE0Mi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWRpdW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTM3Mi4yIDEwNi4xbC0yNCAyM2MtMi4xIDEuNi0zLjEgNC4yLTIuNyA2Ljd2MTY5LjNjLS40IDIuNi42IDUuMiAyLjcgNi43bDIzLjUgMjN2NS4xaC0xMThWMzY3bDI0LjMtMjMuNmMyLjQtMi40IDIuNC0zLjEgMi40LTYuN1YxOTkuOGwtNjcuNiAxNzEuNmgtOS4xTDEyNSAxOTkuOHYxMTVjLS43IDQuOCAxIDkuNyA0LjQgMTMuMmwzMS42IDM4LjN2NS4xSDcxLjJ2LTUuMWwzMS42LTM4LjNjMy40LTMuNSA0LjktOC40IDQuMS0xMy4ydi0xMzNjLjQtMy43LTEtNy4zLTMuOC05LjhMNzUgMTM4LjFWMTMzaDg3LjNsNjcuNCAxNDhMMjg5IDEzMy4xaDgzLjJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU0NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEzLjcgMjU2YzAgMTIxLjggODMuOSAyMjIuOCAxOTMuNSAyNDEuMS0xOC43IDQuNS0zOC4yIDYuOS01OC4yIDYuOUMxMTEuNCA1MDQgMCAzOTMgMCAyNTZTMTExLjQgOCAyNDguOSA4YzIwLjEgMCAzOS42IDIuNCA1OC4yIDYuOUMxOTcuNSAzMy4yIDExMy43IDEzNC4yIDExMy43IDI1Nm0yOTcuNCAxMDAuM2MtNzcuNyA1NS40LTE3OS42IDQ3LjUtMjQwLjQtMTQuNiA1LjUgMTQuMSAxMi43IDI3LjcgMjEuNyA0MC41IDYxLjYgODguMiAxODIuNCAxMDkuMyAyNjkuNyA0NyA4Ny4zLTYyLjMgMTA4LjEtMTg0LjMgNDYuNS0yNzIuNi05LTEyLjktMTkuMy0yNC4zLTMwLjUtMzQuMiAzNy40IDc4LjggMTAuNyAxNzguNS02NyAyMzMuOW0tMjE4LjgtMjQ0Yy0xLjQgMS0yLjcgMi4xLTQgMy4xIDY0LjMtMTcuOCAxMzUuOSA0IDE3OC45IDYwLjUgMzUuNyA0NyA0Mi45IDEwNi42IDI0LjQgMTU4IDU2LjctNTYuMiA2Ny42LTE0Mi4xIDIyLjMtMjAxLjgtNTAtNjUuNS0xNDkuMS03NC40LTIyMS42LTE5LjhNMjk2IDIyNGMtNC40IDAtOC0zLjYtOC04di00MGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2NDBjMCA0LjQtMy42IDgtOCA4aC00MGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGg0MGM0LjQgMCA4IDMuNiA4IDh2NDBjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtNDBjMC00LjQgMy42LTggOC04aDQwYzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04aC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVldHVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk5IDQxNC4zYzEuMSA1LjctMi4zIDExLjEtOCAxMi4zLTUuNCAxLjEtMTAuOS0yLjMtMTItOC0xLjEtNS40IDIuMy0xMS4xIDcuNy0xMi4zIDUuNC0xLjIgMTEuMSAyLjMgMTIuMyA4em0xNDMuMSA3MS40Yy02LjMgNC42LTggMTMuNC0zLjcgMjAgNC42IDYuNiAxMy40IDguMyAyMCAzLjcgNi4zLTQuNiA4LTEzLjQgMy40LTIwLTQuMi02LjUtMTMuMS04LjMtMTkuNy0zLjd6bS04Ni00NjIuM2M2LjMtMS40IDEwLjMtNy43IDguOS0xNC0xLjEtNi42LTcuNC0xMC42LTEzLjctOS4xLTYuMyAxLjQtMTAuMyA3LjctOS4xIDE0IDEuNCA2LjYgNy42IDEwLjYgMTMuOSA5LjF6TTM0LjQgMjI2LjNjLTEwLTYuOS0yMy43LTQuMy0zMC42IDYtNi45IDEwLTQuMyAyNCA1LjcgMzAuOSAxMCA3LjEgMjMuNyA0LjYgMzAuNi01LjcgNi45LTEwLjQgNC4zLTI0LjEtNS43LTMxLjJ6bTI3Mi0xNzAuOWMxMC42LTYuMyAxMy43LTIwIDcuNy0zMC4zLTYuMy0xMC42LTE5LjctMTQtMzAtNy43cy0xMy43IDIwLTcuNCAzMC42YzYgMTAuMyAxOS40IDEzLjcgMjkuNyA3LjR6bS0xOTEuMSA1OGM3LjctNS40IDkuNC0xNiA0LjMtMjMuN3MtMTUuNy05LjQtMjMuMS00LjNjLTcuNyA1LjQtOS40IDE2LTQuMyAyMy43IDUuMSA3LjggMTUuNiA5LjUgMjMuMSA0LjN6bTM3Mi4zIDE1NmMtNy40IDEuNy0xMi4zIDkuMS0xMC42IDE2LjkgMS40IDcuNCA4LjkgMTIuMyAxNi4zIDEwLjYgNy40LTEuNCAxMi4zLTguOSAxMC42LTE2LjYtMS41LTcuNC04LjktMTIuMy0xNi4zLTEwLjl6bTM5LjctNTYuOGMtMS4xLTUuNy02LjYtOS4xLTEyLTgtNS43IDEuMS05LjEgNi45LTggMTIuNiAxLjEgNS40IDYuNiA5LjEgMTIuMyA4IDUuNC0xLjUgOS4xLTYuOSA3LjctMTIuNnpNNDQ3IDEzOC45Yy04LjYgNi0xMC42IDE3LjctNC45IDI2LjMgNS43IDguNiAxNy40IDEwLjYgMjYgNC45IDguMy02IDEwLjMtMTcuNyA0LjYtMjYuMy01LjctOC43LTE3LjQtMTAuOS0yNS43LTQuOXptLTYuMyAxMzkuNGMyNi4zIDQzLjEgMTUuMSAxMDAtMjYuMyAxMjkuMS0xNy40IDEyLjMtMzcuMSAxNy43LTU2LjkgMTcuMS0xMiA0Ny4xLTY5LjQgNjQuNi0xMDUuMSAzMi42LTEuMS45LTIuNiAxLjctMy43IDIuOS0zOS4xIDI3LjEtOTIuMyAxNy40LTExOS40LTIyLjMtOS43LTE0LjMtMTQuNi0zMC42LTE1LjEtNDYuOS02NS40LTEwLjktOTAtOTQtNDEuMS0xMzkuNy0yOC4zLTQ2LjkuNi0xMDcuNCA1My40LTExNC45QzE1MS42IDcwIDIzNC4xIDM4LjYgMjkwLjEgODJjNjcuNC0yMi4zIDEzNi4zIDI5LjQgMTMwLjkgMTAxLjEgNDEuMSAxMi42IDUyLjggNjYuOSAxOS43IDk1LjJ6bS03MCA3NC4zYy0zLjEtMjAuNi00MC45LTQuNi00My4xLTI3LjEtMy4xLTMyIDQzLjctMTAxLjEgNDAtMTI4LTMuNC0yNC0xOS40LTI5LjEtMzMuNC0yOS40LTEzLjQtLjMtMTYuOSAyLTIxLjQgNC42LTIuOSAxLjctNi42IDQuOS0xMS43LS4zLTYuMy02LTExLjEtMTEuNy0xOS40LTEyLjktMTIuMy0yLTE3LjcgMi0yNi42IDkuNy0zLjQgMi45LTEyIDEyLjktMjAgOS4xLTMuNC0xLjctMTUuNC03LjctMjQtMTEuNC0xNi4zLTcuMS00MCA0LjYtNDguNiAyMC0xMi45IDIyLjktMzggMTEzLjEtNDEuNyAxMjUuMS04LjYgMjYuNiAxMC45IDQ4LjYgMzYuOSA0Ny4xIDExLjEtLjYgMTguMy00LjYgMjUuNC0xNy40IDQtNy40IDQxLjctMTA3LjcgNDQuNi0xMTIuNiAyLTMuNCA4LjktOCAxNC42LTUuMSA1LjcgMy4xIDYuOSA5LjQgNiAxNS4xLTEuMSA5LjctMjggNzAuOS0yOC45IDc3LjctMy40IDIyLjkgMjYuOSAyNi42IDM4LjYgNCAzLjctNy4xIDQ1LjctOTIuNiA0OS40LTk4LjMgNC4zLTYuMyA3LjQtOC4zIDExLjctOCAzLjEgMCA4LjMuOSA3LjEgMTAuOS0xLjQgOS40LTM1LjEgNzIuMy0zOC45IDg3LjctNC42IDIwLjYgNi42IDQxLjQgMjQuOSA1MC42IDExLjQgNS43IDYyLjUgMTUuNyA1OC41LTExLjF6bTUuNyA5Mi4zYy0xMC4zIDcuNC0xMi45IDIyLTUuNyAzMi42IDcuMSAxMC42IDIxLjQgMTMuMSAzMiA2IDEwLjYtNy40IDEzLjEtMjIgNi0zMi42LTcuNC0xMC42LTIxLjctMTMuNS0zMi4zLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZ2Fwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNC41IDIwOS42djY2LjJsMzMuNSAzMy41IDMzLjMtMzMuM3YtNjYuNGwtMzMuNC0zMy40ek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDUuMSA0MTQuNEwzNjcgNDQxLjZsLTI2LTE5LjJ2LTY1LjVsLTMzLjQtMzMuNC0zMy40IDMzLjR2NjUuNUwyNDggNDQxLjZsLTI2LjEtMTkuMnYtNjUuNWwtMzMuNC0zMy40LTMzLjUgMzMuNHY2NS41bC0yNi4xIDE5LjItMjYuMS0xOS4ydi04N2w1OS41LTU5LjVWMTg4bDU5LjUtNTkuNVY1Mi45bDI2LjEtMTkuMkwyNzQgNTIuOXY3NS42bDU5LjUgNTkuNXY4Ny42bDU5LjcgNTkuN3Y4Ny4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZW5kZWxleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQuNiAzMjUuMmMtMTIuMy0xMi40LTI5LjctMTkuMi00OC40LTE3LjItNDMuMy0xLTQ5LjctMzQuOS0zNy41LTk4LjggMjIuOC01Ny41LTE0LjktMTMxLjUtODcuNC0xMzAuOC03Ny40LjctODEuNyA4Mi0xMzAuOSA4Mi00OC4xIDAtNTQtODEuMy0xMzAuOS04Mi03Mi45LS44LTExMC4xIDczLjMtODcuNCAxMzAuOCAxMi4yIDYzLjkgNS44IDk3LjgtMzcuNSA5OC44LTIxLjItMi4zLTM3IDYuNS01MyAyMi41LTE5LjkgMTkuNy0xOS4zIDk0LjggNDIuNiAxMDIuNiA0Ny4xIDUuOSA4MS42LTQyLjkgNjEuMi04Ny44LTQ3LjMtMTAzLjcgMTg1LjktMTA2LjEgMTQ2LjUtOC4yLS4xLjEtLjIuMi0uMy40LTI2LjggNDIuOCA2LjggOTcuNCA1OC44IDk1LjIgNTIuMSAyLjEgODUuNC01Mi42IDU4LjgtOTUuMi0uMS0uMi0uMi0uMy0uMy0uNC0zOS40LTk3LjkgMTkzLjgtOTUuNSAxNDYuNSA4LjItNC42IDEwLTYuNyAyMS4zLTUuNyAzMyA0LjkgNTMuNCA2OC43IDc0LjEgMTA0LjkgMzUuMiAxNy44LTE0LjggMjMuMS02NS42IDAtODguM3ptLTMwMy45LTE5LjFoLS42Yy00My40IDAtNjIuOC0zNy41LTYyLjgtNjIuOCAwLTM0LjcgMjguMi02Mi44IDYyLjgtNjIuOGguNmMzNC43IDAgNjIuOCAyOC4xIDYyLjggNjIuOCAwIDI1LTE5LjIgNjIuOC02Mi44IDYyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvYmxvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTkuMzYsMzYyLjIzYzI5LjQ5LTM0LjY5LDQ3LjEtNzguMzQsNDcuMS0xMjUuNzlDNDQ2LjQ2LDEyMy40OSwzNDYuODYsMzIsMjI0LDMyUzEuNTQsMTIzLjQ5LDEuNTQsMjM2LjQ0LDEwMS4xNCw0NDAuODcsMjI0LDQ0MC44N2EyMzkuMjgsMjM5LjI4LDAsMCwwLDc5LjQ0LTEzLjQ0LDcuMTgsNy4xOCwwLDAsMSw4LjEyLDIuNTZjMTguNTgsMjUuMDksNDcuNjEsNDIuNzQsNzkuODksNDkuOTJhNC40Miw0LjQyLDAsMCwwLDUuMjItMy40Myw0LjM3LDQuMzcsMCwwLDAtLjg1LTMuNjIsODcsODcsMCwwLDEsMy42OS0xMTAuNjlaTTMyOS41MiwyMTIuNGwtNTcuMyw0My40OUwyOTMsMzI0Ljc1YTYuNSw2LjUsMCwwLDEtOS45NCw3LjIyTDIyNCwyOTAuOTIsMTY0Ljk0LDMzMmE2LjUxLDYuNTEsMCwwLDEtOS45NS03LjIybDIwLjc5LTY4Ljg2LTU3LjMtNDMuNDlhNi41LDYuNSwwLDAsMSwzLjgtMTEuNjhsNzEuODgtMS41MSwyMy42Ni02Ny45MmE2LjUsNi41LDAsMCwxLDEyLjI4LDBsMjMuNjYsNjcuOTIsNzEuODgsMS41MWE2LjUsNi41LDAsMCwxLDMuODgsMTEuNjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3Jvc29mdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyaDIxNC42djIxNC42SDBWMzJ6bTIzMy40IDBINDQ4djIxNC42SDIzMy40VjMyek0wIDI2NS40aDIxNC42VjQ4MEgwVjI2NS40em0yMzMuNCAwSDQ0OFY0ODBIMjMzLjRWMjY1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1peCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0djM0OC45YzAgNTYuMiA4OCA1OC4xIDg4IDBWMTc0LjNjNy45LTUyLjkgODgtNTAuNCA4OCA2LjV2MTc1LjNjMCA1Ny45IDk2IDU4IDk2IDBWMjQwYzUuMy01NC43IDg4LTUyLjUgODggNC4zdjIzLjhjMCA1OS45IDg4IDU2LjYgODggMFY2NEgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXhjbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjQuNDMgMjE5LjcyOUM0MTYuMTI0IDEzNC43MjcgMzQ0LjEzNSA2OCAyNTYuOTE5IDY4Yy03Mi4yNjYgMC0xMzYuMjI0IDQ2LjUxNi0xNTkuMjA1IDExNC4wNzQtNTQuNTQ1IDguMDI5LTk2LjYzIDU0LjgyMi05Ni42MyAxMTEuNTgyIDAgNjIuMjk4IDUwLjY2OCAxMTIuOTY2IDExMy4yNDMgMTEyLjk2NmgyODkuNjE0YzUyLjMyOSAwIDk0Ljk2OS00Mi4zNjIgOTQuOTY5LTk0LjY5MyAwLTQ1LjEzMS0zMi4xMTgtODMuMDYzLTc0LjQ4LTkyLjJ6bS0yMC40ODkgMTQ0LjUzSDExNC4zMjdjLTM5LjA0IDAtNzAuODgxLTMxLjU2NC03MC44ODEtNzAuNjA0czMxLjg0MS03MC42MDQgNzAuODgxLTcwLjYwNGMxOC44MjcgMCAzNi41NDggNy40NzUgNDkuODM4IDIwLjc2NiAxOS45NjMgMTkuOTYzIDUwLjEzMy0xMC4yMjcgMzAuMTgtMzAuMTgtMTQuNjc1LTE0LjM5OC0zMi42NzItMjQuMzY1LTUyLjA1My0yOS4zNDkgMTkuOTM1LTQ0LjMgNjQuNzktNzMuOTI2IDExNC42MjgtNzMuOTI2IDY5LjQ5NiAwIDEyNS45NzkgNTYuNDgzIDEyNS45NzkgMTI1LjcwMiAwIDEzLjU2OC0yLjIxNSAyNi44NTctNi4zNjkgMzkuNTk0LTguOTQzIDI3LjUxNyAzMi4xMzMgMzguOTM5IDQwLjE0NyAxMy4yOSAyLjc2OS04LjMwNiA0Ljk4NC0xNi44ODkgNi4zNjktMjUuNDcyIDE5LjM4MSA3LjQ3NiAzMy41MDIgMjYuMzAzIDMzLjUwMiA0OC40NTMgMCAyOC43OTUtMjMuNTM1IDUyLjMzLTUyLjYwNyA1Mi4zM3ptMjM1LjA2OS01Mi4zM2MwIDQ0LjAyNC0xMi43MzcgODYuMzg2LTM3LjEwMiAxMjIuNjU3LTQuMTUzIDYuMDkyLTEwLjc5OCA5LjQxNC0xNy43MiA5LjQxNC0xNi4zMTcgMC0yNy4xMjctMTguODI2LTE3LjQ0My0zMi45NDkgMTkuMzgxLTI5LjM0OSAyOS45MDMtNjMuNjgyIDI5LjkwMy05OS4xMjJzLTEwLjUyMS02OS43NzMtMjkuOTAzLTk4Ljg0NWMtMTUuNjU1LTIyLjgzMSAxOS4zNjEtNDcuMjQgMzUuMTYzLTIzLjUzNCAyNC4zNjYgMzUuOTkzIDM3LjEwMiA3OC4zNTYgMzcuMTAyIDEyMi4zNzl6bS03MC44OCAwYzAgMzEuNTY1LTkuMTM3IDYyLjAyMS0yNi44NTcgODguMzI1LTQuMTUzIDYuMDkxLTEwLjc5OCA5LjEzNi0xNy43MiA5LjEzNi0xNy4yMDEgMC0yNy4wMjItMTguOTc5LTE3LjQ0My0zMi45NDggMTMuMDEzLTE5LjEwNCAxOS42NTgtNDEuMjU1IDE5LjY1OC02NC41MTMgMC0yMi45ODEtNi42NDUtNDUuNDA4LTE5LjY1OC02NC41MTItMTUuNzYxLTIyLjk4NiAxOS4wMDgtNDcuMDk1IDM1LjE2My0yMy41MzUgMTcuNzE5IDI2LjAyNiAyNi44NTcgNTYuNDgzIDI2Ljg1NyA4OC4wNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1peGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNC41Nyw3Ni4wN2E0NS43MSw0NS43MSwwLDAsMC02Ny41MS02LjQxYy0xNy41OCwxNi4xOC0xOSw0My41Mi00Ljc1LDYyLjc3bDkxLjc4LDEyM0w0MS43NiwzNzkuNThjLTE0LjIzLDE5LjI1LTEzLjExLDQ2LjU5LDQuNzQsNjIuNzdBNDUuNzEsNDUuNzEsMCwwLDAsMTE0LDQzNS45NEwyNDIuODksMjYyLjdhMTIuMTQsMTIuMTQsMCwwLDAsMC0xNC4yM1pNNDcwLjI0LDM3OS41OCwzNzcuOTEsMjU1LjQ1bDkxLjc4LTEyM2MxNC4yMi0xOS4yNSwxMi44My00Ni41OS00Ljc1LTYyLjc3YTQ1LjcxLDQ1LjcxLDAsMCwwLTY3LjUxLDYuNDFsLTEyOCwxNzIuMTJhMTIuMTQsMTIuMTQsMCwwLDAsMCwxNC4yM0wzOTgsNDM1Ljk0YTQ1LjcxLDQ1LjcxLDAsMCwwLDY3LjUxLDYuNDFDNDgzLjM1LDQyNi4xNyw0ODQuNDcsMzk4LjgzLDQ3MC4yNCwzNzkuNThaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1penVuaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOS4xIDAgMjU2YzAgMTM3IDExMSAyNDggMjQ4IDI0OHMyNDgtMTExIDI0OC0yNDhDNDk2IDExOS4xIDM4NSA4IDI0OCA4em0tODAgMzUxLjljLTMxLjQgMTAuNi01OC44IDI3LjMtODAgNDguMlYxMzZjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MHYyMjMuOXptMTIwLTkuOWMtMTIuOS0yLTI2LjItMy4xLTM5LjgtMy4xLTEzLjggMC0yNy4yIDEuMS00MC4yIDMuMVYxMzZjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MHYyMTR6bTEyMCA1Ny43Yy0yMS4yLTIwLjgtNDguNi0zNy40LTgwLTQ4VjEzNmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjI3MS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2R4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1NiAyNDEuOGwzNi43IDIzLjdWNDgwbC0xMzMtODMuOEwzNTYgMjQxLjh6TTQ0MCA3NUgyMjYuM2wtMjMgMzcuOCAxNTMuNSA5Ni41TDQ0MCA3NXptLTg5IDE0Mi44TDU1LjIgMzJ2MjE0LjVsNDYgMjlMMzUxIDIxNy44ek05NyAyOTQuMkw4IDQzN2gyMTMuN2wxMjUtMjAwLjVMOTcgMjk0LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMzg0aDEwOC40QzQxNyA0NTUuOSAzMzguMSA1MDQgMjQ4IDUwNFM3OSA0NTUuOSAzNS42IDM4NEgxNDRWMjU2LjJMMjQ4IDM2MWwxMDQtMTA1djEyOHpNODggMzM2VjEyOGwxNTkuNCAxNTkuNEw0MDggMTI4djIwOGg3NC44YzguNS0yNS4xIDEzLjItNTIgMTMuMi04MEM0OTYgMTE5IDM4NSA4IDI0OCA4UzAgMTE5IDAgMjU2YzAgMjggNC42IDU0LjkgMTMuMiA4MEg4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmFwc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTguMyAzNzMuNmMtMTQuMiAxMy42LTMxLjMgMjQuMS01MC40IDMwLjUtMTktNi40LTM2LjItMTYuOS01MC4zLTMwLjVoMTAwLjd6bTQ0LTE5OS42YzIwLTE2LjkgNDMuNi0yOS4yIDY5LjYtMzYuMlYyOTljMCAyMTkuNC0zMjggMjE3LjYtMzI4IC4zVjEzNy43YzI1LjkgNi45IDQ5LjYgMTkuNiA2OS41IDM2LjQgNTYuOC00MCAxMzIuNS0zOS45IDE4OC45LS4xem0tMjA4LjgtNTguNWM2NC40LTYwIDE2NC4zLTYwLjEgMjI4LjktLjItNy4xIDMuNS0xMy45IDcuMy0yMC42IDExLjUtNTguNy0zMC41LTEyOS4yLTMwLjQtMTg3LjkuMS02LjMtNC0xMy45LTguMi0yMC40LTExLjR6TTQzLjggOTMuMnY2OS4zYy01OC40IDM2LjUtNTguNCAxMjEuMS4xIDE1OC4zIDI2LjQgMjQ1LjEgMzgxLjcgMjQwLjMgNDA3LjYgMS41bC4zLTEuN2M1OC43LTM2LjMgNTguOS0xMjEuNy4yLTE1OC4yVjkzLjJjLTE3LjMuNS0zNCAzLTUwLjEgNy40LTgyLTkxLjUtMjI1LjUtOTEuNS0zMDcuNS4xLTE2LjMtNC40LTMzLjEtNy01MC42LTcuNXpNMjU5LjIgMzUyczM2LS4zIDYxLjMtMS41YzEwLjItLjUgMjEuMS00IDI1LjUtNi41IDI2LjMtMTUuMSAyNS40LTM5LjIgMjYuMi00Ny40LTc5LjUtLjYtOTkuOS0zLjktMTEzIDU1LjR6bS0xMzUuNS01NS4zYy44IDguMi0uMSAzMi4zIDI2LjIgNDcuNCA0LjQgMi41IDE1LjIgNiAyNS41IDYuNSAyNS4zIDEuMSA2MS4zIDEuNSA2MS4zIDEuNS0xMy4yLTU5LjQtMzMuNy01Ni4xLTExMy01NS40em0xNjkuMSAxMjMuNGMtMy4yLTUuMy02LjktNy4zLTYuOS03LjMtMjQuOCA3LjMtNTIuMiA2LjktNzUuOSAwIDAgMC0yLjkgMS41LTYuNCA2LjYtMi44IDQuMS0zLjcgOS42LTMuNyA5LjYgMjkuMSAxNy42IDY3LjEgMTcuNiA5Ni4yIDAtLjEtLjEtLjMtNC0zLjMtOC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZW9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNS40NCA1MTJoLTk1LjExTDIxMi4xMiAzNTcuNDZ2OTEuMUwxMjUuNjkgNTEySDI4VjI5LjgyTDY4LjQ3IDBoMTA4LjA1bDEyMy43NCAxNzYuMTNWNjMuNDVMMzg2LjY5IDBoOTcuNjl2NDYxLjV6TTM4Ljc3IDM1LjI3VjQ5Nmw3Mi01Mi44OFYxOTRsMjE1LjUgMzA3LjY0aDg0Ljc5bDUyLjM1LTM4LjE3aC03OC4yN0w2OSAxM3ptODIuNTQgNDY2LjYxbDgwLTU4Ljc4di0xMDFsLTc5Ljc2LTExNC40djIyMC45NEw0OSA1MDEuODloNzIuMzR6TTgwLjYzIDEwLjc3bDMxMC42IDQ0Mi41N2g4Mi4zN1YxMC43N2gtNzkuNzV2MzE3LjU2TDE3MC45MSAxMC43N3pNMzExIDE5MS42NWw3MiAxMDIuODFWMTUuOTNsLTcyIDUzdjEyMi43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmltYmxyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni42IDI5OS4yOWMxNS41NyAwIDI3LjE1IDExLjQ2IDI3LjE1IDI3cy0xMS42MiAyNy0yNy4xNSAyN2MtMTUuNyAwLTI3LjE1LTExLjU3LTI3LjE1LTI3czExLjU1LTI3IDI3LjE1LTI3ek0xMTMgMzI2LjI1YzAtMTUuNjEgMTEuNjgtMjcgMjcuMTUtMjdzMjcuMTUgMTEuNDYgMjcuMTUgMjctMTEuNDcgMjctMjcuMTUgMjdjLTE1LjQ0IDAtMjcuMTUtMTEuMzEtMjcuMTUtMjdNMTkxLjc2IDE1OUMxNTcgMTU5IDg5LjQ1IDE3OC43NyA1OS4yNSAyMjdMMTQgMHYzMzUuNDhDMTQgNDMzLjEzIDkzLjYxIDUxMiAxOTEuNzYgNTEyczE3Ny43Ni03OC45NSAxNzcuNzYtMTc2LjUyUzI5MC4xMyAxNTkgMTkxLjc2IDE1OXptMCAzMDguMTJjLTczLjI3IDAtMTMyLjUxLTU4LjktMTMyLjUxLTEzMS41OXM1OS4yNC0xMzEuNTkgMTMyLjUxLTEzMS41OSAxMzIuNTEgNTguODYgMTMyLjUxIDEzMS41NFMyNjUgNDY3LjA3IDE5MS43NiA0NjcuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vZGVKcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgNTA4Yy02LjcgMC0xMy41LTEuOC0xOS40LTUuMmwtNjEuNy0zNi41Yy05LjItNS4yLTQuNy03LTEuNy04IDEyLjMtNC4zIDE0LjgtNS4yIDI3LjktMTIuNyAxLjQtLjggMy4yLS41IDQuNi40bDQ3LjQgMjguMWMxLjcgMSA0LjEgMSA1LjcgMGwxODQuNy0xMDYuNmMxLjctMSAyLjgtMyAyLjgtNVYxNDkuM2MwLTIuMS0xLjEtNC0yLjktNS4xTDIyNi44IDM3LjdjLTEuNy0xLTQtMS01LjcgMEwzNi42IDE0NC4zYy0xLjggMS0yLjkgMy0yLjkgNS4xdjIxMy4xYzAgMiAxLjEgNCAyLjkgNC45bDUwLjYgMjkuMmMyNy41IDEzLjcgNDQuMy0yLjQgNDQuMy0xOC43VjE2Ny41YzAtMyAyLjQtNS4zIDUuNC01LjNoMjMuNGMyLjkgMCA1LjQgMi4zIDUuNCA1LjNWMzc4YzAgMzYuNi0yMCA1Ny42LTU0LjcgNTcuNi0xMC43IDAtMTkuMSAwLTQyLjUtMTEuNmwtNDguNC0yNy45QzguMSAzODkuMi43IDM3Ni4zLjcgMzYyLjRWMTQ5LjNjMC0xMy44IDcuNC0yNi44IDE5LjQtMzMuN0wyMDQuNiA5YzExLjctNi42IDI3LjItNi42IDM4LjggMGwxODQuNyAxMDYuN2MxMiA2LjkgMTkuNCAxOS44IDE5LjQgMzMuN3YyMTMuMWMwIDEzLjgtNy40IDI2LjctMTkuNCAzMy43TDI0My40IDUwMi44Yy01LjkgMy40LTEyLjYgNS4yLTE5LjQgNS4yem0xNDkuMS0yMTAuMWMwLTM5LjktMjctNTAuNS04My43LTU4LTU3LjQtNy42LTYzLjItMTEuNS02My4yLTI0LjkgMC0xMS4xIDQuOS0yNS45IDQ3LjQtMjUuOSAzNy45IDAgNTEuOSA4LjIgNTcuNyAzMy44LjUgMi40IDIuNyA0LjIgNS4yIDQuMmgyNGMxLjUgMCAyLjktLjYgMy45LTEuN3MxLjUtMi42IDEuNC00LjFjLTMuNy00NC4xLTMzLTY0LjYtOTIuMi02NC42LTUyLjcgMC04NC4xIDIyLjItODQuMSA1OS41IDAgNDAuNCAzMS4zIDUxLjYgODEuOCA1Ni42IDYwLjUgNS45IDY1LjIgMTQuOCA2NS4yIDI2LjcgMCAyMC42LTE2LjYgMjkuNC01NS41IDI5LjQtNDguOSAwLTU5LjYtMTIuMy02My4yLTM2LjYtLjQtMi42LTIuNi00LjUtNS4zLTQuNWgtMjMuOWMtMyAwLTUuMyAyLjQtNS4zIDUuMyAwIDMxLjEgMTYuOSA2OC4yIDk3LjggNjguMiA1OC40LS4xIDkyLTIzLjIgOTItNjMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTm9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTYuMyA0NTJjLTIuMSAwLTQuMi0uNi02LjEtMS42TDI5MSA0MzljLTIuOS0xLjYtMS41LTIuMi0uNS0yLjUgMy44LTEuMyA0LjYtMS42IDguNy00IC40LS4yIDEtLjEgMS40LjFsMTQuOCA4LjhjLjUuMyAxLjMuMyAxLjggMEwzNzUgNDA4Yy41LS4zLjktLjkuOS0xLjZ2LTY2LjdjMC0uNy0uMy0xLjMtLjktMS42bC01Ny44LTMzLjNjLS41LS4zLTEuMi0uMy0xLjggMGwtNTcuOCAzMy4zYy0uNi4zLS45IDEtLjkgMS42djY2LjdjMCAuNi40IDEuMi45IDEuNWwxNS44IDkuMWM4LjYgNC4zIDEzLjktLjggMTMuOS01Ljh2LTY1LjljMC0uOS43LTEuNyAxLjctMS43aDcuM2MuOSAwIDEuNy43IDEuNyAxLjd2NjUuOWMwIDExLjUtNi4yIDE4LTE3LjEgMTgtMy4zIDAtNiAwLTEzLjMtMy42bC0xNS4yLTguN2MtMy43LTIuMi02LjEtNi4yLTYuMS0xMC41di02Ni43YzAtNC4zIDIuMy04LjQgNi4xLTEwLjVsNTcuOC0zMy40YzMuNy0yLjEgOC41LTIuMSAxMi4xIDBsNTcuOCAzMy40YzMuNyAyLjIgNi4xIDYuMiA2LjEgMTAuNXY2Ni43YzAgNC4zLTIuMyA4LjQtNi4xIDEwLjVsLTU3LjggMzMuNGMtMS43IDEuMS0zLjggMS43LTYgMS43em00Ni43LTY1LjhjMC0xMi41LTguNC0xNS44LTI2LjItMTguMi0xOC0yLjQtMTkuOC0zLjYtMTkuOC03LjggMC0zLjUgMS41LTguMSAxNC44LTguMSAxMS45IDAgMTYuMyAyLjYgMTguMSAxMC42LjIuOC44IDEuMyAxLjYgMS4zaDcuNWMuNSAwIC45LS4yIDEuMi0uNS4zLS40LjUtLjguNC0xLjMtMS4yLTEzLjgtMTAuMy0yMC4yLTI4LjgtMjAuMi0xNi41IDAtMjYuMyA3LTI2LjMgMTguNiAwIDEyLjcgOS44IDE2LjEgMjUuNiAxNy43IDE4LjkgMS45IDIwLjQgNC42IDIwLjQgOC4zIDAgNi41LTUuMiA5LjItMTcuNCA5LjItMTUuMyAwLTE4LjctMy44LTE5LjgtMTEuNC0uMS0uOC0uOC0xLjQtMS43LTEuNGgtNy41Yy0uOSAwLTEuNy43LTEuNyAxLjcgMCA5LjcgNS4zIDIxLjMgMzAuNiAyMS4zIDE4LjUgMCAyOS03LjIgMjktMTkuOHptNTQuNS01MC4xYzAgNi4xLTUgMTEuMS0xMS4xIDExLjFzLTExLjEtNS0xMS4xLTExLjFjMC02LjMgNS4yLTExLjEgMTEuMS0xMS4xIDYtLjEgMTEuMSA0LjggMTEuMSAxMS4xem0tMS44IDBjMC01LjItNC4yLTkuMy05LjQtOS4zLTUuMSAwLTkuMyA0LjEtOS4zIDkuMyAwIDUuMiA0LjIgOS40IDkuMyA5LjQgNS4yLS4xIDkuNC00LjMgOS40LTkuNHptLTQuNSA2LjJoLTIuNmMtLjEtLjYtLjUtMy44LS41LTMuOS0uMi0uNy0uNC0xLjEtMS4zLTEuMWgtMi4ydjVoLTIuNHYtMTIuNWg0LjNjMS41IDAgNC40IDAgNC40IDMuMyAwIDIuMy0xLjUgMi44LTIuNCAzLjEgMS43LjEgMS44IDEuMiAyLjEgMi44LjEgMSAuMyAyLjcuNiAzLjN6bS0yLjgtOC44YzAtMS43LTEuMi0xLjctMS44LTEuN2gtMnYzLjVoMS45YzEuNiAwIDEuOS0xLjEgMS45LTEuOHpNMTM3LjMgMTkxYzAtMi43LTEuNC01LjEtMy43LTYuNGwtNjEuMy0zNS4zYy0xLS42LTIuMi0uOS0zLjQtMWgtLjZjLTEuMiAwLTIuMy40LTMuNCAxTDMuNyAxODQuNkMxLjQgMTg1LjkgMCAxODguNCAwIDE5MWwuMSA5NWMwIDEuMy43IDIuNSAxLjggMy4yIDEuMS43IDIuNS43IDMuNyAwTDQyIDI2OC4zYzIuMy0xLjQgMy43LTMuOCAzLjctNi40di00NC40YzAtMi42IDEuNC01LjEgMy43LTYuNGwxNS41LTguOWMxLjItLjcgMi40LTEgMy43LTEgMS4zIDAgMi42LjMgMy43IDFsMTUuNSA4LjljMi4zIDEuMyAzLjcgMy44IDMuNyA2LjR2NDQuNGMwIDIuNiAxLjQgNS4xIDMuNyA2LjRsMzYuNCAyMC45YzEuMS43IDIuNi43IDMuNyAwIDEuMS0uNiAxLjgtMS45IDEuOC0zLjJsLjItOTV6TTQ3Mi41IDg3LjN2MTc2LjRjMCAyLjYtMS40IDUuMS0zLjcgNi40bC02MS4zIDM1LjRjLTIuMyAxLjMtNS4xIDEuMy03LjQgMGwtNjEuMy0zNS40Yy0yLjMtMS4zLTMuNy0zLjgtMy43LTYuNHYtNzAuOGMwLTIuNiAxLjQtNS4xIDMuNy02LjRsNjEuMy0zNS40YzIuMy0xLjMgNS4xLTEuMyA3LjQgMGwxNS4zIDguOGMxLjcgMSAzLjktLjMgMy45LTIuMnYtOTRjMC0yLjggMy00LjYgNS41LTMuMmwzNi41IDIwLjRjMi4zIDEuMiAzLjggMy43IDMuOCA2LjR6bS00NiAxMjguOWMwLS43LS40LTEuMy0uOS0xLjZsLTIxLTEyLjJjLS42LS4zLTEuMy0uMy0xLjkgMGwtMjEgMTIuMmMtLjYuMy0uOS45LS45IDEuNnYyNC4zYzAgLjcuNCAxLjMuOSAxLjZsMjEgMTIuMWMuNi4zIDEuMy4zIDEuOCAwbDIxLTEyLjFjLjYtLjMuOS0uOS45LTEuNnYtMjQuM3ptMjA5LjgtLjdjMi4zLTEuMyAzLjctMy44IDMuNy02LjRWMTkyYzAtMi42LTEuNC01LjEtMy43LTYuNGwtNjAuOS0zNS40Yy0yLjMtMS4zLTUuMS0xLjMtNy40IDBsLTYxLjMgMzUuNGMtMi4zIDEuMy0zLjcgMy44LTMuNyA2LjR2NzAuOGMwIDIuNyAxLjQgNS4xIDMuNyA2LjRsNjAuOSAzNC43YzIuMiAxLjMgNSAxLjMgNy4zIDBsMzYuOC0yMC41YzIuNS0xLjQgMi41LTUgMC02LjRMNTUwIDI0MS42Yy0xLjItLjctMS45LTEuOS0xLjktMy4ydi0yMi4yYzAtMS4zLjctMi41IDEuOS0zLjJsMTkuMi0xMS4xYzEuMS0uNyAyLjYtLjcgMy43IDBsMTkuMiAxMS4xYzEuMS43IDEuOSAxLjkgMS45IDMuMnYxNy40YzAgMi44IDMuMSA0LjYgNS42IDMuMmwzNi43LTIxLjN6TTU1OSAyMTljLS40LjMtLjcuNy0uNyAxLjJ2MTMuNmMwIC41LjMgMSAuNyAxLjJsMTEuOCA2LjhjLjQuMyAxIC4zIDEuNCAwTDU4NCAyMzVjLjQtLjMuNy0uNy43LTEuMnYtMTMuNmMwLS41LS4zLTEtLjctMS4ybC0xMS44LTYuOGMtLjQtLjMtMS0uMy0xLjQgMEw1NTkgMjE5em0tMjU0LjIgNDMuNXYtNzAuNGMwLTIuNi0xLjYtNS4xLTMuOS02LjRsLTYxLjEtMzUuMmMtMi4xLTEuMi01LTEuNC03LjQgMGwtNjEuMSAzNS4yYy0yLjMgMS4zLTMuOSAzLjctMy45IDYuNHY3MC40YzAgMi44IDEuOSA1LjIgNCA2LjRsNjEuMiAzNS4yYzIuNCAxLjQgNS4yIDEuMyA3LjQgMGw2MS0zNS4yYzEuOC0xIDMuMS0yLjcgMy42LTQuNy4xLS41LjItMS4xLjItMS43em0tNzQuMy0xMjQuOWwtLjguNWgxLjFsLS4zLS41em03Ni4yIDEzMC4ybC0uNC0uN3YuOWwuNC0uMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTnBtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAyODhoLTMydi02NGgzMnY2NHptMjg4LTEyOHYxOTJIMjg4djMySDE2MHYtMzJIMFYxNjBoNTc2em0tNDE2IDMySDMydjEyOGg2NHYtOTZoMzJ2OTZoMzJWMTkyem0xNjAgMEgxOTJ2MTYwaDY0di0zMmg2NFYxOTJ6bTIyNCAwSDM1MnYxMjhoNjR2LTk2aDMydjk2aDMydi05NmgzMnY5NmgzMlYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5zOCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQuMzI0LDI2OS4xNzJoMjYuMDY3VjI0Mi45OTRIMTA0LjMyNFptNTIuNDY2LTI2LjE3OC0uMDU1LTI2LjE3OHYtLjk0MWEzOS4zMjUsMzkuMzI1LDAsMCwwLTc4LjY0NC45NDF2LjE2NmgyNi40di0uMTY2YTEyLjk4LDEyLjk4LDAsMCwxLDI1Ljk1NiwwdjI2LjE3OFptNTIuMzU2LDI1Ljg0NmE5MS4xLDkxLjEsMCwwLDEtOTEuMSw5MS4xaC0uNjA5YTkxLjEsOTEuMSwwLDAsMS05MS4xLTkxLjFIMHYuMTY2QTExNy4zMywxMTcuMzMsMCwwLDAsMTE3LjQ0LDM4Ni4yOGguNzc1QTExNy4zMzEsMTE3LjMzMSwwLDAsMCwyMzUuNDksMjY4Ljg0VjI0Mi44MjhIMjA5LjE0NlptLTE1Ny4yMzMsMGE2NS4zNjIsNjUuMzYyLDAsMCwwLDEzMC43MjMsMEgxNTYuMjkyYTM5LjAyMywzOS4wMjMsMCwwLDEtNzguMDM1LDBWMjQyLjg4M0g1MS45Njh2LTI2LjYyQTY1LjQyLDY1LjQyLDAsMCwxLDE4Mi44LDIxNy40OHYyNS4yOTNoMjYuMzQ0VjIxNy40OGE5MS43NjEsOTEuNzYxLDAsMCwwLTE4My41MjIsMHYyNS40SDUxLjkxM1ptNDE4LjQtNzEuMTczYzEzLjY3LDAsMjQuNTczLDYuNjQyLDMwLjA1MiwxOC4yNjRsLjcxOSwxLjU0OSwyMy4yNDUtMTEuNTExLS42MDktMS40MzljLTguMDI1LTE5LjI2LTI4LjUtMzEuMjctNTMuNDA3LTMxLjI3LTIzLjEzNCwwLTQzLjYxMSwxMS40LTUwLjk3MiwyOC40NDctLjEyMywyNi44NzYtLjE1OCwyMy45LDAsMjQuODUsNC43LDExLjAxMywxNC41NTUsMTkuMzcsMjguNjY4LDI0LjI0MWExMDIuMDMzLDEwMi4wMzMsMCwwLDAsMTkuODEzLDMuOTg0YzUuNDc5LjcyLDEwLjYyNiwxLjM4NCwxNS44MjksMy4xLDYuMzY0LDIuMSwxMC40Niw1LjI1NywxMi44NCw5Ljg1MXY5Ljg1MWMtMy43MDgsNy41MjctMTMuNzgxLDEyLjM0Mi0yNS43OTEsMTIuMzQyLTE0LjMzNCwwLTI1Ljk1Ni02LjkxOC0zMS45MzMtMTkuMDM5bC0uNzItMS40OTRMNDE1LjAyNiwyODAuOWwuNTUzLDEuNDM5YzcuOTE1LDE5LjQyNiwyOS42MDksMzIuMDQ0LDU1LjI4OSwzMi4wNDQsMjMuNjMyLDAsNDQuNjA4LTExLjQsNTIuMy0yOC40NDdsLjE2Ni0yNS45LS4xNjYtLjY2NGMtNC44Ny0xMS4wMTQtMTUuMjE5LTE5LjY0Ny0yOC45NDQtMjQuMjQxLTcuNjkzLTIuNzEyLTE0LjMzNS0zLjYtMjAuNy00LjQyN2E4My43NzcsODMuNzc3LDAsMCwxLTE0LjgzMi0yLjg3OGMtNi4zMS0xLjkzNy0xMC40LTUuMDkyLTEyLjYxOS05LjYzdi04LjQxMkM0NDkuNDUsMjAyLjQyNyw0NTguOTY5LDE5Ny42NjcsNDcwLjMxNSwxOTcuNjY3Wk0yODcuNTY4LDMxMS4zNDRoMjYuMDY3di02OC40SDI4Ny41NjhabTM1Mi4yNjYtNTMuM2MtMi45MzMtNi4yNTQtOC4zLTEyLjAxLTE1LjQ0MS0xNi43MTRBMzcuOTksMzcuOTksMCwwLDAsNjM3LjQsMjI2bC4xNjYtMjUuMzQ3LS4xNjYtLjY2NEM2MzAuMDM4LDE4NCw2MTAuNjY3LDE3My4yNiw1ODkuMjUsMTczLjI2UzU0OC40NjEsMTg0LDU0MS4xLDE5OS45OTJsLS4xNjYsMjUuMzQ3LjE2Ni42NjRhMzkuNjQzLDM5LjY0MywwLDAsMCwxMy4wMDYsMTUuMzMxYy03LjIsNC43LTEyLjUwOCwxMC40Ni0xNS40NDEsMTYuNzE0bC0uMTY2LDI4Ljg4OS4xNjYuNzJjNy41ODIsMTUuOTk0LDI3Ljg5MywyNi43MzEsNTAuNTg1LDI2LjczMXM0My4wNTctMTAuNzM3LDUwLjU4NC0yNi43MzFsLjE2Ni0yOC44OVptLTczLjIyLTUwLjgwNmMzLjYtNi4zMSwxMi41NjMtMTAuNTE2LDIyLjU4LTEwLjUxNnMxOS4wMzgsNC4yMDYsMjIuNjM2LDEwLjUxNnYxMy43MjVjLTMuNTQyLDYuMi0xMi41NjMsMTAuMzQ5LTIyLjYzNiwxMC4zNDlzLTE5LjA5NC00LjE1LTIyLjU4LTEwLjM0OVptNDcuMzE5LDcyLjE2OWMtMy43NjQsNi42NDEtMTMuMzM4LDEwLjktMjQuNjgzLDEwLjktMTEuMTI1LDAtMjAuOTc2LTQuMzcyLTI0LjY4NC0xMC45VjI2My4yNWMzLjcwOC02LjMwOSwxMy41LTEwLjUxNSwyNC42ODQtMTAuNTE1LDExLjM0NSwwLDIwLjkxOSw0LjE1LDI0LjY4MywxMC41MTVaTTM3Ni40LDI2NS45NjJsLTU5LjgyNy04OS43MTNoLTI5djQwLjYyM2gyNi41MXYuMzg3bDYyLjUzOSw5NC4wODVINDAyLjNWMTc2LjI0OUgzNzYuNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTnV0cml0aW9uaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODggOC4xUzIyMS40LS4xIDIwOSAxMTIuNWMwIDAgMTkuMS03NC45IDEwMy00MC42IDAgMC0xNy43IDc0LTg4IDU2IDAgMCAxNC42LTU0LjYgNjYuMS01Ni42IDAgMC0zOS45LTEwLjMtODIuMSA0OC44IDAgMC0xOS44LTk0LjUtOTMuNi05OS43IDAgMCA3NS4yIDE5LjQgNzcuNiAxMDcuNSAwIC4xLTEwNi40IDctMTA0LTExOS44em0zMTIgMzE1LjZjMCA0OC41LTkuNyA5NS4zLTMyIDEzMi4zLTQyLjIgMzAuOS0xMDUgNDgtMTY4IDQ4LTYyLjkgMC0xMjUuOC0xNy4xLTE2OC00OEM5LjcgNDE5IDAgMzcyLjIgMCAzMjMuNyAwIDI3NS4zIDE3LjcgMjI5IDQwIDE5MmM0Mi4yLTMwLjkgOTcuMS00OC42IDE2MC00OC42IDYzIDAgMTE3LjggMTcuNiAxNjAgNDguNiAyMi4zIDM3IDQwIDgzLjMgNDAgMTMxLjd6TTEyMCA0MjhjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4ek0xOTIgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHpNMjY0IDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6TTMzNiA0MjhjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0yNC0zOS42Yy00LjgtMjIuMy03LjQtMzYuOS0xNi01Ni0zOC44LTE5LjktOTAuNS0zMi0xNDQtMzJTOTQuOCAxODAuMSA1NiAyMDBjLTguOCAxOS41LTExLjIgMzMuOS0xNiA1NiA0Mi4yLTcuOSA5OC43LTE0LjggMTYwLTE0LjhzMTE3LjggNi45IDE2MCAxNC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPY3RvcHVzRGVwbG95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NS42LDM0OS4yYy00NS44OTEtMzkuMDktMzYuNjctNzcuODc3LTE2LjA5NS0xMjguMTFDNDc1LjE2LDEzNC4wNCw0MTUuOTY3LDM0LjE0LDMyOS45Myw4LjMsMjM3LjA0LTE5LjYsMTM0LjI1MiwyNC4zNDEsOTkuNjc3LDExNy4xNDdhMTgwLjg2MiwxODAuODYyLDAsMCwwLTEwLjk4OCw3My41NDRjMS43MzMsMjkuNTQzLDE0LjcxNyw1Mi45NywyNC4wOSw4MC4zLDE3LjIsNTAuMTYxLTI4LjEsOTIuNzQzLTY2LjY2MiwxMTcuNTgyLTQ2LjgwNiwzMC4yLTM2LjMxOSwzOS44NTctOC40MjgsNDEuODU4LDIzLjM3OCwxLjY4LDQ0LjQ3OC00LjU0OCw2NS4yNjUtMTUuMDQ1LDkuMi00LjY0Nyw0MC42ODctMTguOTMxLDQ1LjEzLTI4LjU4OEMxMzUuOSw0MTMuMzg4LDExMS4xMjIsNDU5LjUsMTI2LjYyMSw0ODguOWMxOS4xLDM2LjIyOSw2Ny4xMTItMzEuNzcsNzYuNzA5LTQ1LjgxMiw4LjU5MS0xMi41NzIsNDIuOTYzLTgxLjI3OSw2My42MjctNDYuOTI2LDE4Ljg2NSwzMS4zNjEsOC42LDc2LjM5MSwzNS43MzgsMTA0LjYyMiwzMi44NTQsMzQuMiw1MS4xNTUtMTguMzEyLDUxLjQxMi00NC4yMjEuMTYzLTE2LjQxMS02LjEtOTUuODUyLDI5LjktNTkuOTQ0QzQwNS40MjgsNDE4LDQzNi45MTIsNDY3LjgsNDcyLjU2OCw0NjMuNjQyYzM4LjczNi00LjUxNi0yMi4xMjMtNjcuOTY3LTI4LjI2Mi03OC42OTUsNS4zOTMsNC4yNzksNTMuNjY1LDM0LjEyOCw1My44MTgsOS41MkM0OTguMjM0LDM3NS42NzgsNDY4LjAzOSwzNTkuOCw0NTUuNiwzNDkuMlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2Rub2tsYXNzbmlraVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODQuMiAxNzcuMWMwLTIyLjEgMTcuOS00MCAzOS44LTQwczM5LjggMTcuOSAzOS44IDQwYzAgMjItMTcuOSAzOS44LTM5LjggMzkuOHMtMzkuOC0xNy45LTM5LjgtMzkuOHpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tMzA1LjEgOTcuMWMwIDQ0LjYgMzYuNCA4MC45IDgxLjEgODAuOXM4MS4xLTM2LjIgODEuMS04MC45YzAtNDQuOC0zNi40LTgxLjEtODEuMS04MS4xcy04MS4xIDM2LjItODEuMSA4MS4xem0xNzQuNSA5MC43Yy00LjYtOS4xLTE3LjMtMTYuOC0zNC4xLTMuNiAwIDAtMjIuNyAxOC01OS4zIDE4cy01OS4zLTE4LTU5LjMtMThjLTE2LjgtMTMuMi0yOS41LTUuNS0zNC4xIDMuNi03LjkgMTYuMSAxLjEgMjMuNyAyMS40IDM3IDE3LjMgMTEuMSA0MS4yIDE1LjIgNTYuNiAxNi44bC0xMi45IDEyLjljLTE4LjIgMTgtMzUuNSAzNS41LTQ3LjcgNDcuNy0xNy42IDE3LjYgMTAuNyA0NS44IDI4LjQgMjguNmw0Ny43LTQ3LjljMTguMiAxOC4yIDM1LjcgMzUuNyA0Ny43IDQ3LjkgMTcuNiAxNy4yIDQ2LTEwLjcgMjguNi0yOC42bC00Ny43LTQ3LjctMTMtMTIuOWMxNS41LTEuNiAzOS4xLTUuOSA1Ni4yLTE2LjggMjAuNC0xMy4zIDI5LjMtMjEgMjEuNS0zN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2Rub2tsYXNzbmlraSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzUuMSAzMzRjLTI3LjQgMTcuNC02NS4xIDI0LjMtOTAgMjYuOWwyMC45IDIwLjYgNzYuMyA3Ni4zYzI3LjkgMjguNi0xNy41IDczLjMtNDUuNyA0NS43LTE5LjEtMTkuNC00Ny4xLTQ3LjQtNzYuMy03Ni42TDg0IDUwMy40Yy0yOC4yIDI3LjUtNzMuNi0xNy42LTQ1LjQtNDUuNyAxOS40LTE5LjQgNDcuMS00Ny40IDc2LjMtNzYuM2wyMC42LTIwLjZjLTI0LjYtMi42LTYyLjktOS4xLTkwLjYtMjYuOS0zMi42LTIxLTQ2LjktMzMuMy0zNC4zLTU5IDcuNC0xNC42IDI3LjctMjYuOSA1NC42LTUuNyAwIDAgMzYuMyAyOC45IDk0LjkgMjguOXM5NC45LTI4LjkgOTQuOS0yOC45YzI2LjktMjEuMSA0Ny4xLTguOSA1NC42IDUuNyAxMi40IDI1LjctMS45IDM4LTM0LjUgNTkuMXpNMzAuMyAxMjkuN0MzMC4zIDU4IDg4LjYgMCAxNjAgMHMxMjkuNyA1OCAxMjkuNyAxMjkuN2MwIDcxLjQtNTguMyAxMjkuNC0xMjkuNyAxMjkuNHMtMTI5LjctNTgtMTI5LjctMTI5LjR6bTY2IDBjMCAzNS4xIDI4LjYgNjMuNyA2My43IDYzLjdzNjMuNy0yOC42IDYzLjctNjMuN2MwLTM1LjQtMjguNi02NC02My43LTY0cy02My43IDI4LjYtNjMuNyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2xkUmVwdWJsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM1Ljc2IDEwLjIzYzcuNS0uMzEgMTUtLjI4IDIyLjUtLjA5IDMuNjEuMTQgNy4yLjQgMTAuNzkuNzMgNC45Mi4yNyA5Ljc5IDEuMDMgMTQuNjcgMS42MiAyLjkzLjQzIDUuODMuOTggOC43NSAxLjQ2IDcuOSAxLjMzIDE1LjY3IDMuMjggMjMuMzkgNS40IDEyLjI0IDMuNDcgMjQuMTkgNy45MiAzNS43NiAxMy4yMSAyNi41NiAxMi4yNCA1MC45NCAyOS4yMSA3MS42MyA0OS44OCAyMC4wMyAyMC4wOSAzNi43MiA0My41NSA0OC44OSA2OS4xOSAxLjEzIDIuNTkgMi40NCA1LjEgMy40NyA3Ljc0IDIuODEgNi40MyA1LjM5IDEyLjk3IDcuNTggMTkuNjMgNC4xNCAxMi4zMyA3LjM0IDI0Ljk5IDkuNDIgMzcuODMuNTcgMy4xNCAxLjA0IDYuMyAxLjQgOS40Ny41NSAzLjgzLjk0IDcuNjkgMS4xOCAxMS41Ni44MyA4LjM0Ljg0IDE2LjczLjc3IDI1LjEtLjA3IDQuOTctLjI2IDkuOTQtLjc1IDE0Ljg5LS4yNCAzLjM4LS41MSA2Ljc2LS45OCAxMC4xMi0uMzkgMi43Mi0uNjMgNS40Ni0xLjExIDguMTctLjkgNS4xNS0xLjcgMTAuMzEtMi44NyAxNS40MS00LjEgMTguNS0xMC4zIDM2LjU1LTE4LjUxIDUzLjYzLTE1Ljc3IDMyLjgzLTM4LjgzIDYyLjE3LTY3LjEyIDg1LjEyYTI0Ni41MDMgMjQ2LjUwMyAwIDAgMS01Ni45MSAzNC44NmMtNi4yMSAyLjY4LTEyLjQ2IDUuMjUtMTguODcgNy40MS0zLjUxIDEuMTYtNy4wMSAyLjM4LTEwLjU3IDMuMzktNi42MiAxLjg4LTEzLjI5IDMuNjQtMjAuMDQgNS00LjY2LjkxLTkuMzQgMS43My0xNC4wMyAyLjQ4LTUuMjUuNjYtMTAuNSAxLjQ0LTE1Ljc5IDEuNzQtNi42OS42Ni0xMy40MS44NC0yMC4xMi44MS02LjgyLjAzLTEzLjY1LS4xMi0yMC40NS0uNzktMy4yOS0uMjMtNi41Ny0uNS05LjgzLS45NS0yLjcyLS4zOS01LjQ2LS42My04LjE3LTEuMTEtNC4xMi0uNzItOC4yNS0xLjM3LTEyLjM1LTIuMjItNC4yNS0uOTQtOC40OS0xLjg5LTEyLjY5LTMuMDItOC42My0yLjE3LTE3LjA4LTUuMDEtMjUuNDEtOC4xMy0xMC40OS00LjEyLTIwLjc5LTguNzUtMzAuNjQtMTQuMjUtMi4xNC0xLjE1LTQuMjgtMi4yOS02LjM1LTMuNTctMTEuMjItNi41OC0yMS44Ni0xNC4xLTMxLjkyLTIyLjM0LTM0LjY4LTI4LjQxLTYxLjQxLTY2LjQzLTc2LjM1LTEwOC43LTMuMDktOC43NC01LjcxLTE3LjY1LTcuOC0yNi42OC0xLjQ4LTYuMTYtMi41Mi0xMi40Mi0zLjU4LTE4LjY2LS40LTIuMzUtLjYxLTQuNzMtLjk1LTcuMDktLjYtMy45Ni0uNzUtNy45Ni0xLjE3LTExLjk0LS44LTkuNDctLjcxLTE4Ljk5LS41MS0yOC40OS4xNC0zLjUxLjM0LTcuMDEuNy0xMC41MS4zMS0zLjE3LjQ2LTYuMzcuOTItOS41Mi40MS0yLjgxLjY1LTUuNjUgMS4xNi04LjQ0LjctMy45NCAxLjMtNy45IDIuMTItMTEuODIgMy40My0xNi41MiA4LjQ3LTMyLjczIDE1LjI2LTQ4LjE4IDEuMTUtMi45MiAyLjU5LTUuNzIgMy44Ni04LjU5IDguMDUtMTYuNzEgMTcuOS0zMi41NiAyOS40OS00Ny4wNiAyMC0yNS4zOCA0NS4xLTQ2LjY4IDczLjI3LTYyLjQ3IDcuNS00LjE1IDE1LjE2LTguMDUgMjMuMDctMTEuMzcgMTUuODItNi44OCAzMi40MS0xMS45NSA0OS4zMS0xNS4zOCAzLjUxLS42NyA3LjA0LTEuMjQgMTAuNTYtMS44NSAyLjYyLS40NyA1LjI4LS43IDcuOTEtMS4wOCAzLjUzLS41MyA3LjEtLjY4IDEwLjY1LTEuMDQgMi40Ni0uMjQgNC45MS0uMzYgNy4zNi0uNTFtOC42NCAyNC40MWMtOS4yMy4xLTE4LjQzLjk5LTI3LjU3IDIuMjMtNy4zIDEuMDgtMTQuNTMgMi42LTIxLjcxIDQuMy0xMy45MSAzLjUtMjcuNDggOC4zNC00MC40NiAxNC40Mi0xMC40NiA0Ljk5LTIwLjU5IDEwLjctMzAuMTggMTcuMjItNC4xOCAyLjkyLTguNCA1LjgtMTIuMzQgOS4wMy01LjA4IDMuOTctOS45OCA4LjE3LTE0LjY4IDEyLjU5LTIuNTEgMi4yNC00LjgxIDQuNy03LjIyIDcuMDYtMjguMjIgMjguNzktNDguNDQgNjUuMzktNTcuNSAxMDQuNjktMi4wNCA4LjQ0LTMuNTQgMTcuMDItNC40NCAyNS42NS0xLjEgOC44OS0xLjQ0IDE3Ljg1LTEuNDEgMjYuOC4xMSA3LjE0LjM4IDE0LjI4IDEuMjIgMjEuMzcuNjIgNy4xMiAxLjg3IDE0LjE2IDMuMiAyMS4xOCAxLjA3IDQuNjUgMi4wMyA5LjMyIDMuMzMgMTMuOTEgNi4yOSAyMy4zOCAxNi41IDQ1LjcgMzAuMDcgNjUuNzUgOC42NCAxMi45OCAxOC43OCAyNC45MyAyOS45OCAzNS43NyAxNi4yOCAxNS44MiAzNS4wNSAyOS4wNCA1NS4zNCAzOS4yMiA3LjI4IDMuNTIgMTQuNjYgNi44NyAyMi4yNyA5LjYzIDUuMDQgMS43NiAxMC4wNiAzLjU3IDE1LjIyIDQuOTggMTEuMjYgMy4yMyAyMi43NyA1LjYgMzQuMzkgNy4wNiAyLjkxLjI5IDUuODEuNjEgOC43Mi45IDEzLjgyIDEuMDggMjcuNzQgMSA0MS41NC0uNDMgNC40NS0uNiA4LjkyLS45OSAxMy4zNS0xLjc4IDMuNjMtLjY3IDcuMjgtMS4yNSAxMC44Ny0yLjEgNC4xMy0uOTggOC4yOC0xLjkxIDEyLjM2LTMuMDcgMjYuNS03LjM0IDUxLjU4LTE5LjcxIDczLjU4LTM2LjIgMTUuNzgtMTEuODIgMjkuOTYtMjUuNzYgNDIuMTItNDEuMjggMy4yNi00LjAyIDYuMTctOC4zMSA5LjEzLTEyLjU1IDMuMzktNS4wNiA2LjU4LTEwLjI1IDkuNi0xNS41NCAyLjQtNC40NCA0Ljc0LTguOTEgNi45NS0xMy40NSA1LjY5LTEyLjA1IDEwLjI4LTI0LjYyIDEzLjc1LTM3LjQ5IDIuNTktMTAuMDEgNC43NS0yMC4xNiA1LjktMzAuNDUgMS43Ny0xMy40NyAxLjk0LTI3LjEgMS4yOS00MC42NS0uMjktMy44OS0uNjctNy43Ny0xLTExLjY2LTIuMjMtMTkuMDgtNi43OS0zNy45MS0xMy44Mi01NS44LTUuOTUtMTUuMTMtMTMuNTMtMjkuNjMtMjIuNjEtNDMuMTMtMTIuNjktMTguOC0yOC4yNC0zNS42OC00NS45Ny00OS44My0yNS4wNS0yMC01NC40Ny0zNC41NS04NS42NS00Mi4wOC03Ljc4LTEuOTMtMTUuNjktMy4zNC0yMy42My00LjQ1LTMuOTEtLjU5LTcuODUtLjgyLTExLjc3LTEuMjQtNy4zOS0uNTctMTQuODEtLjcyLTIyLjIyLS41OHpNMTM5LjI2IDgzLjUzYzEzLjMtOC44OSAyOC4wOC0xNS4zOCA0My4zLTIwLjE4LTMuMTcgMS43Ny02LjQ0IDMuMzgtOS41MyA1LjI5LTExLjIxIDYuNjgtMjEuNTIgMTQuOS0zMC4zOCAyNC40OS02LjggNy40My0xMi43NiAxNS43My0xNy4wMSAyNC44OS0zLjI5IDYuODYtNS42NCAxNC4xOS02Ljg2IDIxLjcxLS45MyA0Ljg1LTEuMyA5LjgxLTEuMTcgMTQuNzUuMTMgMTMuNjYgNC40NCAyNy4wOCAxMS4yOSAzOC44MiA1LjkyIDEwLjIyIDEzLjYzIDE5LjMzIDIyLjM2IDI3LjI2IDQuODUgNC4zNiAxMC4yNCA4LjA5IDE0Ljk1IDEyLjYgMi4yNiAyLjE5IDQuNDkgNC40MiA2LjQzIDYuOTEgMi42MiAzLjMxIDQuODkgNi45OSA1Ljk5IDExLjEuOSAzLjAyLjY2IDYuMi42OSA5LjMxLjAyIDQuMS0uMDQgOC4yLjAzIDEyLjMuMTQgMy41NC0uMDIgNy4wOS4xMSAxMC42My4wOCAyLjM4LjAyIDQuNzYuMDUgNy4xNC4xNiA1Ljc3LjA2IDExLjUzLjE1IDE3LjMuMTEgMi45MS4wMiA1LjgyLjEzIDguNzQuMDMgMS42My4xMyAzLjI4LS4wMyA0LjkxLS45MS4xMi0xLjgyLjE4LTIuNzMuMTYtMTAuOTkgMC0yMS44OC0yLjYzLTMxLjk1LTYuOTMtNi0yLjctMTEuODEtNS44OS0xNy4wOS05LjgzLTUuNzUtNC4xOS0xMS4wOS04Ljk2LTE1Ljc5LTE0LjMxLTYuNTMtNy4yNC0xMS45OC0xNS4zOS0xNi42Mi0yMy45NS0xLjA3LTIuMDMtMi4yNC00LjAyLTMuMTgtNi4xMi0xLjE2LTIuNjQtMi42Mi01LjE0LTMuNjctNy44Mi00LjA1LTkuNjgtNi41Ny0xOS45NC04LjA4LTMwLjMxLS40OS00LjQ0LTEuMDktOC44OC0xLjItMTMuMzUtLjctMTUuNzMuODQtMzEuNTUgNC42Ny00Ni44MiAyLjEyLTguMTUgNC43Ny0xNi4xOCA4LjMxLTIzLjgzIDYuMzItMTQuMiAxNS4zNC0yNy4xOCAyNi4zLTM4LjE5IDYuMjgtNi4yIDEzLjEzLTExLjg0IDIwLjUzLTE2LjY3em0xNzUuMzctMjAuMTJjMi43NC43NCA1LjQxIDEuNzQgOC4wOSAyLjY4IDYuMzYgMi4zMyAxMi42OCA0Ljg0IDE4LjcxIDcuOTYgMTMuMTEgNi40NCAyNS4zMSAxNC44MSAzNS44MiAyNC45NyAxMC4yIDkuOTUgMTguNzQgMjEuNiAyNS4xNCAzNC4zNCAxLjI4IDIuNzUgMi42NCA1LjQ2IDMuODEgOC4yNiA2LjMxIDE1LjEgMTAgMzEuMjYgMTEuMjMgNDcuNTcuNDEgNC41NC40NCA5LjA5LjQ1IDEzLjY0LjA3IDExLjY0LTEuNDkgMjMuMjUtNC4zIDM0LjUzLTEuOTcgNy4yNy00LjM1IDE0LjQ5LTcuODYgMjEuMTgtMy4xOCA2LjY0LTYuNjggMTMuMTYtMTAuODQgMTkuMjQtNi45NCAxMC40Ny0xNS42IDE5Ljg3LTI1LjgyIDI3LjIyLTEwLjQ4IDcuNjQtMjIuNjQgMTMuMDItMzUuNCAxNS4zOC0zLjUxLjY5LTcuMDggMS4wOC0xMC42NiAxLjIxLTEuODUuMDYtMy43Mi4xNi01LjU2LS4xLS4yOC0yLjE1IDAtNC4zMS0uMDEtNi40Ni0uMDMtMy43My4xNC03LjQ1LjEtMTEuMTcuMTktNy4wMi4wMi0xNC4wNS4yMS0yMS4wNy4wMy0yLjM4LS4wMy00Ljc2LjAzLTcuMTQuMTctNS4wNy0uMDQtMTAuMTQuMTQtMTUuMjEuMS0yLjk5LS4yNC02LjA0LjUxLTguOTYuNjYtMi41IDEuNzgtNC44NiAzLjA5LTcuMDggNC40Ni03LjMxIDExLjA2LTEyLjk2IDE3LjY4LTE4LjI2IDUuMzgtNC4xOCAxMC40Ny04Ljc3IDE1LjAyLTEzLjg0IDcuNjgtOC4zNyAxNC4xNy0xNy44OCAxOC43OC0yOC4yNyAyLjUtNS45MyA0LjUyLTEyLjEgNS41NS0xOC40Ni44Ni00LjM3IDEuMDYtOC44MyAxLjAxLTEzLjI3LS4wMi03Ljg1LTEuNC0xNS42NS0zLjY0LTIzLjE3LTEuNzUtNS43My00LjI3LTExLjE4LTcuMDktMTYuNDUtMy44Ny02LjkzLTguNjUtMTMuMzEtMTMuOTYtMTkuMi05Ljk0LTEwLjg1LTIxLjc1LTE5Ljk0LTM0LjYtMjcuMS0xLjg1LTEuMDItMy44NC0xLjgyLTUuNjMtMi45N3ptLTEwMC44IDU4LjQ1Yy45OC0xLjE4IDEuOTktMi4zMyAzLjEyLTMuMzgtLjYxLjkzLTEuMjcgMS44MS0xLjk1IDIuNjgtMy4xIDMuODgtNS41NCA4LjMxLTcuMDMgMTMuMDYtLjg3IDMuMjctMS42OCA2LjYtMS43MyAxMC0uMDcgMi41Mi0uMDggNS4wNy4zMiA3LjU3IDEuMTMgNy42MyA0LjMzIDE0Ljg1IDguNzcgMjEuMTIgMiAyLjcgNC4yNSA1LjI3IDYuOTIgNy4zMyAxLjYyIDEuMjcgMy41MyAyLjA5IDUuMzQgMy4wNSAzLjExIDEuNjggNi4zMiAzLjIzIDkuMDcgNS40OCAyLjY3IDIuMDkgNC41NSA1LjMzIDQuNCA4Ljc5LS4wMSA3My42NyAwIDE0Ny4zNC0uMDEgMjIxLjAyIDAgMS4zNS0uMDggMi43LjA0IDQuMDQuMTMgMS40OC44MiAyLjgzIDEuNDcgNC4xNS44NiAxLjY2IDEuNzggMy4zNCAzLjE4IDQuNjIuODUuNzcgMS45NyAxLjQgMy4xNSAxLjI0IDEuNS0uMiAyLjY2LTEuMzUgMy40NS0yLjU3Ljk2LTEuNTEgMS42OC0zLjE2IDIuMjgtNC44NS43Ni0yLjEzLjQ0LTQuNDIuNTQtNi42My4xNC00LjAzLS4wMi04LjA2LjE0LTEyLjA5LjAzLTUuODkuMDMtMTEuNzcuMDYtMTcuNjYuMTQtMy42Mi4wMy03LjI0LjExLTEwLjg2LjE1LTQuMDMtLjAyLTguMDYuMTQtMTIuMDkuMDMtNS45OS4wMy0xMS45OC4wNy0xNy45Ny4xNC0zLjYyLjAyLTcuMjQuMTEtMTAuODYuMTQtMy45My0uMDItNy44Ni4xNC0xMS43OC4wMy01Ljk5LjAzLTExLjk4LjA2LTE3Ljk3LjE2LTMuOTQtLjAxLTcuODguMTktMTEuODIuMjkgMS40NC4xMyAyLjkyLjIyIDQuMzguMTkgMy42MS40MiA3LjIzLjc2IDEwLjg0LjMyIDMuNDQuNDQgNi44OS44NiAxMC4zMi4zNyAzLjEuNTEgNi4yMi45NSA5LjMxLjU3IDQuMDkuODcgOC4yMSAxLjU0IDEyLjI5IDEuNDYgOS4wNCAyLjgzIDE4LjExIDUuMDkgMjYuOTkgMS4xMyA0LjgyIDIuNCA5LjYxIDQgMTQuMyAyLjU0IDcuOSA1LjcyIDE1LjY3IDEwLjMxIDIyLjYyIDEuNzMgMi42NCAzLjg3IDQuOTggNi4xIDcuMjEuMjcuMjUuNTUuNTEuODguNzEuNi4yNSAxLjMxLS4wNyAxLjctLjU3LjcxLS44OCAxLjE3LTEuOTQgMS43LTIuOTMgNC4wNS03LjggOC4xOC0xNS41NiAxMi4zNC0yMy4zMS43LTEuMzEgMS40NC0yLjYyIDIuNTYtMy42MSAxLjc1LTEuNTcgMy44NC0yLjY5IDUuOTgtMy42MyAyLjg4LTEuMjIgNS45LTIuMTkgOS4wMy0yLjQyIDYuNTgtLjYyIDEzLjExLjc1IDE5LjU2IDEuODUgMy42OS41OCA3LjQgMS4xNyAxMS4xMyAxLjQxIDMuNzQuMSA3LjQ4LjA1IDExLjIxLS4yOCA4LjU1LS45MiAxNi45OS0yLjk2IDI0Ljk0LTYuMjUgNS4zLTIuMjQgMTAuNDYtNC44MyAxNS4zMS03LjkzIDExLjQ2LTcuMjEgMjEuNDYtMTYuNTcgMzAuMDQtMjcuMDEgMS4xNy0xLjQyIDIuMjUtMi45IDMuNDYtNC4yOC0xLjIgMy4yNC0yLjY3IDYuMzctNC4xNiA5LjQ4LTEuMjUgMi45LTIuODQgNS42MS00LjI3IDguNDItNS4xNiA5LjYzLTExLjAyIDE4LjkxLTE3Ljc1IDI3LjUyLTQuMDMgNS4yMS04LjUzIDEwLjA1LTEzLjMzIDE0LjU3LTYuNjQgNi4wNS0xNC4wNyAxMS4zNy0yMi40MyAxNC43Ni04LjIxIDMuMzctMTcuMzEgNC42My0yNi4wOSAzLjI5LTMuNTYtLjU4LTcuMDEtMS42OS0xMC40MS0yLjg4LTIuNzktLjk3LTUuMzktMi4zOC04LjAzLTMuNjktMy40My0xLjcxLTYuNjQtMy44MS05LjcxLTYuMDggMi43MSAzLjA2IDUuNjkgNS44NiA4LjcgOC42MSA0LjI3IDMuNzYgOC43NCA3LjMxIDEzLjYzIDEwLjIzIDMuOTggMi40NSA4LjI5IDQuNCAxMi44NCA1LjUxIDEuNDYuMzcgMi45Ni40NiA0LjQ1LjYtMS4yNSAxLjEtMi42MyAyLjA0LTMuOTkgMi45OC05LjYxIDYuNTQtMjAuMDEgMTEuODYtMzAuNjkgMTYuNDMtMjAuODYgOC43LTQzLjE3IDEzLjk3LTY1Ljc0IDE1LjM0LTQuNjYuMjQtOS4zMi4zNi0xMy45OC4zNi00Ljk4LS4xMS05Ljk3LS4xMy0xNC45Mi0uNjUtMTEuMi0uNzYtMjIuMjktMi43My0zMy4xNy01LjQzLTEwLjM1LTIuNzEtMjAuNTUtNi4xMi0zMC4zLTEwLjU1LTguNzEtMy44Ni0xNy4xMi04LjQyLTI0Ljk5LTEzLjc5LTEuODMtMS4zMS0zLjc0LTIuNTMtNS4zNy00LjA4IDYuNi0xLjE5IDEzLjAzLTMuMzkgMTguOTktNi40OCA1Ljc0LTIuODYgMTAuOTktNi42NiAxNS42My0xMS4wNyAyLjI0LTIuMTkgNC4yOS00LjU5IDYuMTktNy4wOS0zLjQzIDIuMTMtNi45MyA0LjE1LTEwLjYyIDUuNzgtNC40MSAyLjE2LTkuMDcgMy43Ny0xMy44MSA1LjAyLTUuNzMgMS41Mi0xMS43NCAxLjczLTE3LjYxIDEuMTQtOC4xMy0uOTUtMTUuODYtNC4yNy0yMi41MS04Ljk4LTQuMzItMi45NC04LjIyLTYuNDMtMTEuOTYtMTAuMDYtOS45My0xMC4xNi0xOC4yLTIxLjgxLTI1LjY2LTMzLjg2LTMuOTQtNi4yNy03LjUzLTEyLjc1LTExLjEyLTE5LjIyLTEuMDUtMi4wNC0yLjE1LTQuMDUtMy4xOC02LjEgMi44NSAyLjkyIDUuNTcgNS45NyA4LjQzIDguODggOC45OSA4Ljk3IDE4LjU2IDE3LjQ0IDI5LjE2IDI0LjQ4IDcuNTUgNC45IDE1LjY3IDkuMjMgMjQuNTYgMTEuMDMgMy4xMS43MyA2LjMyLjQ3IDkuNDcuODEgMi43Ny4yOCA1LjU2LjIgOC4zNC4zIDUuMDUuMDYgMTAuMTEuMDQgMTUuMTYtLjE2IDMuNjUtLjE2IDcuMjctLjY2IDEwLjg5LTEuMDkgMi4wNy0uMjUgNC4xMS0uNzEgNi4xNC0xLjIgMy44OC0uOTUgOC4xMS0uOTYgMTEuODMuNjEgNC43NiAxLjg1IDguNDQgNS42NCAxMS4zOCA5LjcxIDIuMTYgMy4wMiA0LjA2IDYuMjIgNS42NiA5LjU4IDEuMTYgMi40MyAyLjQ2IDQuNzkgMy41NSA3LjI2IDEgMi4yNCAyLjE1IDQuNDIgMy40MiA2LjUyLjY3IDEuMDIgMS40IDIuMTUgMi42MiAyLjU1IDEuMDYtLjc1IDEuNzEtMS45MSAyLjI4LTMuMDMgMi4xLTQuMTYgMy40Mi04LjY1IDQuODktMTMuMDUgMi4wMi02LjU5IDMuNzgtMTMuMjcgNS4xOS0yMC4wMiAyLjIxLTkuMjUgMy4yNS0xOC43MiA0LjU0LTI4LjEzLjU2LTMuOTguODMtNy45OSAxLjMxLTExLjk3Ljg3LTEwLjY0IDEuOS0yMS4yNyAyLjI0LTMxLjk0LjA4LTEuODYuMjQtMy43MS4yNS01LjU3LjAxLTQuMzUuMjUtOC42OS4yMi0xMy4wMy0uMDEtMi4zOC0uMDEtNC43NiAwLTcuMTMuMDUtNS4wNy0uMi0xMC4xNC0uMjItMTUuMjEtLjItNi42MS0uNzEtMTMuMi0xLjI5LTE5Ljc4LS43My01Ljg4LTEuNTUtMTEuNzgtMy4xMi0xNy41MS0yLjA1LTcuNzUtNS41OS0xNS4wMy05LjgtMjEuODItMy4xNi01LjA3LTYuNzktOS44OC0xMS4wOS0xNC4wMy0zLjg4LTMuODYtOC41OC03LjA4LTEzLjk0LTguNDUtMS41LS40MS0zLjA2LS40NS00LjU5LS42NC4wNy0yLjk5LjctNS45MyAxLjI2LTguODUgMS41OS03LjcxIDMuOC0xNS4zIDYuNzYtMjIuNiAxLjUyLTQuMDMgMy40MS03LjkgNS4zOS0xMS43MiAzLjQ1LTYuNTYgNy42Mi0xMi43OSAxMi40Ni0xOC40NnptMzEuMjcgMS43Yy4zNS0uMDYuNzEtLjEyIDEuMDctLjE5LjE5IDEuNzkuMDkgMy41OC4xIDUuMzd2MzguMTNjLS4wMSAxLjc0LjEzIDMuNDktLjE1IDUuMjItLjM2LS4wMy0uNzEtLjA1LTEuMDYtLjA1LS45NS0zLjc1LTEuNzItNy41NS0yLjYyLTExLjMxLS4zOC0xLjUzLS41OC0zLjA5LTEuMDctNC41OS0xLjctLjI0LTMuNDMtLjE3LTUuMTUtLjItNS4wNi0uMDEtMTAuMTMgMC0xNS4xOS0uMDEtMS42Ni0uMDEtMy4zMi4wOS00Ljk4LS4wMy0uMDMtLjM5LS4yNi0uOTEuMTYtMS4xOCAxLjI4LS42NSAyLjcyLS44OCA0LjA2LTEuMzUgMy40My0xLjE0IDYuODgtMi4xNiAxMC4zMS0zLjMxIDEuMzktLjQ4IDIuOS0uNzIgNC4xNi0xLjU0LjA0LS41Ni4wMi0xLjEzLS4wNS0xLjY4LTEuMjMtLjU1LTIuNTMtLjg3LTMuODEtMS4yOC0zLjEzLTEuMDMtNi4yOS0xLjk2LTkuNDEtMy4wMi0xLjc5LS42Mi0zLjY3LTEtNS40MS0xLjc5LS4wMy0uMzctLjA3LS43My0uMTEtMS4wOSA1LjA5LS4xOSAxMC4yLjA2IDE1LjMtLjEyIDMuMzYtLjEzIDYuNzMuMDggMTAuMDktLjA3LjEyLS4zOS4yNi0uNzcuMzctMS4xNiAxLjA4LTQuOTQgMi4zMy05LjgzIDMuMzktMTQuNzV6bTUuOTctLjJjLjM2LjA1LjcyLjEyIDEuMDguMi45OCAzLjg1IDEuNzMgNy43NiAyLjcxIDExLjYxLjM2IDEuNDIuNTYgMi44OCAxLjAzIDQuMjcgMi41My4xOCA1LjA3LS4wMSA3LjYxLjA1IDUuMTYuMTIgMTAuMzMuMTIgMTUuNDkuMDcuNzYtLjAxIDEuNTIuMDMgMi4yOC4wOC0uMDQuMzYtLjA3LjcyLS4xIDEuMDgtMS44Mi44My0zLjc4IDEuMjUtNS42NyAxLjg5LTMuNzMgMS4yMy03LjQ4IDIuMzktMTEuMjIgMy41Ny0uNTcuMTctMS4xMi40Mi0xLjY3LjY0LS4xNS41NS0uMTggMS4xMi0uMTIgMS42OS44Ny40OCAxLjgyLjgxIDIuNzcgMS4wOSA0Ljg4IDEuNTIgOS43MyAzLjE0IDE0LjYzIDQuNi4zOC4xMy43OC4yNyAxLjEzLjQ5LjQuMjcuMjMuNzkuMTUgMS4xOC0xLjY2LjEzLTMuMzEuMDMtNC45Ny4wNC01LjE3LjAxLTEwLjMzLS4wMS0xNS41LjAxLTEuNjEuMDMtMy4yMi0uMDItNC44Mi4yMS0uNTIgMS42Ny0uNzIgMy40Mi0xLjE3IDUuMTEtLjk0IDMuNTctMS41MiA3LjI0LTIuNTQgMTAuNzgtLjM2LjAxLS43MS4wMi0xLjA2LjA2LS4yOS0xLjczLS4xNS0zLjQ4LS4xNS01LjIydi0zOC4xM2MuMDItMS43OC0uMDgtMy41OC4xMS01LjM3ek02NS4wNSAxNjguMzNjMS4xMi0yLjE1IDIuMDgtNC40IDMuMzctNi40Ni0xLjgyIDcuNTYtMi45MSAxNS4yNy0zLjYyIDIzLS44IDcuNzEtLjg1IDE1LjQ5LS41NCAyMy4yMyAxLjA1IDE5Ljk0IDUuNTQgMzkuODMgMTQuMjMgNTcuODggMi45OSA1Ljk5IDYuMzUgMTEuODMgMTAuNSAxNy4xMSA2LjEyIDcuNDcgMTIuNTMgMTQuNzYgMTkuODQgMjEuMDkgNC44IDQuMSA5Ljk5IDcuNzggMTUuNTQgMTAuOCAzLjI3IDEuNjUgNi41MSAzLjM5IDkuOTQgNC42OCA1LjAxIDIuMDMgMTAuMTkgMy42MSAxNS40MiA0Ljk0IDMuODMuOTYgNy43OCAxLjQxIDExLjUyIDIuNzEgNSAxLjU3IDkuNDcgNC42MSAxMy4wMyA4LjQzIDQuOTMgNS4yMyA4LjA5IDExLjg3IDEwLjIgMTguNjcuOTkgMi45IDEuNTkgNS45MSAyLjE3IDguOTIuMTUuNzUuMjIgMS41Mi4xNiAyLjI5LTYuNSAyLjc4LTEzLjI2IDUuMDYtMjAuMjYgNi4xOC00LjExLjc4LTguMjkuOTktMTIuNDYgMS4wOC0xMC4yNS4yNC0yMC40Ny0xLjc2LTMwLjEyLTUuMTItMy43NC0xLjQyLTcuNDktMi44NS0xMS4wMy00LjcyLTguMDYtMy44NC0xNS42NC04LjctMjIuNDYtMTQuNDYtMi45Mi0yLjU1LTUuODMtNS4xMy04LjQtOC4wMy05LjE2LTkuODMtMTYuMy0yMS40MS0yMS43OS0zMy42NS0yLjM5LTUuNTUtNC42MS0xMS4xOC02LjM3LTE2Ljk2LTEuMTctMy45NC0yLjM2LTcuODktMy4yNi0xMS45MS0uNzUtMi45NC0xLjIyLTUuOTUtMS44Ny04LjkyLS40Ni0yLjE0LS42OS00LjMyLTEuMDMtNi40OC0uODUtNS40My0xLjI4LTEwLjkzLTEuMzMtMTYuNDMuMTEtNi4xOC4yNS0xMi4zNyAxLjA3LTE4LjUuNC0yLjg2LjY3LTUuNzQgMS4xNS04LjYuOTgtNS43IDIuMTQtMTEuMzcgMy43MS0xNi45MyAzLjA5LTExLjY1IDcuNDgtMjIuOTUgMTIuNjktMzMuODR6bTM2My43My02LjQ0YzEuMSAxLjY2IDEuOTEgMy40OCAyLjc4IDUuMjYgMi4xIDQuNDUgNC4yNCA4LjkgNi4wMiAxMy40OSA3LjYxIDE4Ljc2IDEyLjMgMzguNzkgMTMuMDQgNTkuMDUuMDIgMS43Ni4wNyAzLjUyLjExIDUuMjkuMTMgOS41Ny0xLjI3IDE5LjA5LTMuMTggMjguNDUtLjczIDMuNTktMS41NCA3LjE3LTIuNTggMTAuNjktNC4wNCAxNC43Mi0xMCAyOS0xOC40MSA0MS43OC04LjIxIDEyLjU3LTE5LjAxIDIzLjU1LTMxLjg0IDMxLjQxLTUuNzMgMy41OS0xMS43OSA2LjY0LTE4LjA1IDkuMTktNS43OCAyLjE5LTExLjcxIDQuMDMtMTcuOCA1LjExLTYuNCAxLjA1LTEyLjkxIDEuNTItMTkuNCAxLjIzLTcuOTItLjQ4LTE1Ljc4LTIuMDctMjMuMjEtNC44NS0xLjk0LS44LTMuOTQtMS40Ni01Ljg0LTIuMzMtLjIxLTEuNTEuMjUtMi45OS41My00LjQ2IDEuMTYtNS43NCAzLjAzLTExLjM2IDUuNy0xNi41OCAyLjM3LTQuNTEgNS41Mi04LjY1IDkuNDYtMTEuOSAyLjQzLTIuMDUgNS4yNC0zLjYxIDguMTYtNC44MyAzLjU4LTEuNSA3LjQ3LTEuOTcgMTEuMjQtMi44MyA3LjIzLTEuNzEgMTQuMzctMy45MyAyMS4xNS03IDEwLjM1LTQuNjUgMTkuNzEtMTEuMzggMjcuNjUtMTkuNDYgMS41OS0xLjYxIDMuMjMtMy4xOCA0Ljc0LTQuODcgMy4zNy0zLjc2IDYuNzEtNy41NyA5Ljg1LTExLjUzIDcuNDgtMTAuMDcgMTIuODItMjEuNTkgMTYuNzEtMzMuNDggMS41OC01LjMgMy4yMS0xMC42IDQuMjEtMTYuMDUuNjMtMi44NyAxLjA0LTUuNzggMS41Mi04LjY4Ljg3LTYuMDkgMS41OS0xMi4yMiAxLjY4LTE4LjM4LjEyLTYuNjUuMTQtMTMuMzItLjUzLTE5Ljk0LS43My03Ljk5LTEuODctMTUuOTYtMy43MS0yMy43OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3BlbmNhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIzLjMgNDQwLjdjMCAyNS4zLTIwLjMgNDUuNi00NS42IDQ1LjZzLTQ1LjgtMjAuMy00NS44LTQ1LjYgMjAuNi00NS44IDQ1LjgtNDUuOGMyNS40IDAgNDUuNiAyMC41IDQ1LjYgNDUuOHptLTI1My45LTQ1LjhjLTI1LjMgMC00NS42IDIwLjYtNDUuNiA0NS44czIwLjMgNDUuNiA0NS42IDQ1LjYgNDUuOC0yMC4zIDQ1LjgtNDUuNi0yMC41LTQ1LjgtNDUuOC00NS44em0yOTEuNy0yNzBDMTU4LjkgMTI0LjkgODEuOSAxMTIuMSAwIDI1LjdjMzQuNCA1MS43IDUzLjMgMTQ4LjkgMzczLjEgMTQ0LjIgMzMzLjMtNSAxMzAgODYuMSA3MC44IDE4OC45IDE4Ni43LTE2Ni43IDMxOS40LTIzMy45IDE3LjItMjMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZW5pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzEuNSA0MzJsLTY4IDMyQzg4LjUgNDUzLjcgMCAzOTIuNSAwIDMxOC4yYzAtNzEuNSA4Mi41LTEzMSAxOTEuNy0xNDQuM3Y0M2MtNzEuNSAxMi41LTEyNCA1My0xMjQgMTAxLjMgMCA1MSA1OC41IDkzLjMgMTM1LjcgMTAzdi0zNDBsNjgtMzMuMnYzODR6TTQ0OCAyOTFsLTEzMS4zLTI4LjUgMzYuOC0yMC43Yy0xOS41LTExLjUtNDMuNS0yMC03MC0yNC44di00M2M0Ni4yIDUuNSA4Ny43IDE5LjUgMTIwLjMgMzkuM2wzNS0xOS44TDQ0OCAyOTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy45IDMyLjdjLTE3MC4yIDAtMjUyLjYgMjIzLjgtMTQ3LjUgMzU1LjEgMzYuNSA0NS40IDg4LjYgNzUuNiAxNDcuNSA3NS42IDM2LjMgMCA3MC4zLTExLjEgOTkuNC0zMC40LTQzLjggMzkuMi0xMDEuOSA2My0xNjUuMyA2My0zLjkgMC04IDAtMTEuOS0uM0MxMDQuNiA0ODkuNiAwIDM4MS4xIDAgMjQ4IDAgMTExIDExMSAwIDI0OCAwaC44YzYzLjEuMyAxMjAuNyAyNC4xIDE2NC40IDYzLjEtMjktMTkuNC02My4xLTMwLjQtOTkuMy0zMC40em0xMDEuOCAzOTcuN2MtNDAuOSAyNC43LTkwLjcgMjMuNi0xMzItNS44IDU2LjItMjAuNSA5Ny43LTkxLjYgOTcuNy0xNzYuNiAwLTg0LjctNDEuMi0xNTUuOC05Ny40LTE3Ni42IDQxLjgtMjkuMiA5MS4yLTMwLjMgMTMyLjktNSAxMDUuOSA5OC43IDEwNS41IDI2NS43LTEuMiAzNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wdGluTW9uc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzIuNiA0MjEuNGM1LjYtOS41IDQuNy0xNS4yLTUuNC0xMS42LTMtNC45LTctOS41LTExLjEtMTMuOCAyLjktOS43LS43LTE0LjItMTAuOC05LjItNC42LTMuMi0xMC4zLTYuNS0xNS45LTkuMiAwLTE1LjEtMTEuNi0xMS42LTE3LjYtNS43LTEwLjQtMS41LTE4LjctLjMtMjYuOCA1LjcuMy02LjUuMy0xMyAuMy0xOS43IDEyLjYgMCA0MC4yLTExIDQ1LjktMzYuMiAxLjQtNi44IDEuNi0xMy44LS4zLTIxLjktMy0xMy41LTE0LjMtMjEuMy0yNS4xLTI1LjctLjgtNS45LTcuNi0xNC4zLTE0LjktMTUuOXMtMTIuNCA0LjktMTQuMSAxMC4zYy04LjUgMC0xOS4yIDIuOC0yMS4xIDguNC01LjQtLjUtMTEuMS0xLjQtMTYuOC0xLjkgMi43LTEuOSA1LjQtMy41IDguNC00LjYgNS40LTkuMiAxNC42LTExLjQgMjUuNy0xMS42VjI1NmMxOS41LS41IDQzLTUuOSA1My44LTE4LjEgMTIuNy0xMy44IDE0LjYtMzcuMyAxMi40LTU1LjEtMi40LTE3LjMtOS43LTM3LjYtMjQuNi00OC4xLTguNC01LjktMjEuNi0uOC0yMi43IDkuNS0yLjIgMTkuNiAxLjIgMzAtMzguNiAyNS4xLTEwLjMtMjMuOC0yNC42LTQ0LjYtNDIuNy02MEMzNDEgNDkuNiAyNDIuOSA1NS41IDE2Ni40IDcxLjdjMTkuNyA0LjYgNDEuMSA4LjYgNTkuNyAxNi41LTI2LjIgMi40LTUyLjcgMTEuMy03Ni4yIDIzLjItMzIuOCAxNy00NCAyOS45LTU2LjcgNDIuNCAxNC45LTIuMiAyOC45LTUuMSA0My44LTMuOC05LjcgNS40LTE4LjQgMTIuMi0yNi41IDIwLTI1LjguOS0yMy44LTUuMy0yNi4yLTI1LjktMS4xLTEwLjUtMTQuMy0xNS40LTIyLjctOS43LTI4LjEgMTkuOS0zMy41IDc5LjktMTIuMiAxMDMuNSAxMC44IDEyLjIgMzUuMSAxNy4zIDU0LjkgMTcuOC0uMyAxLjEtLjMgMS45LS4zIDIuNyAxMC44LjUgMTkuNSAyLjcgMjQuNiAxMS42IDMgMS4xIDUuNyAyLjcgOC4xIDQuNi01LjQuNS0xMS4xIDEuNC0xNi41IDEuOS0zLjMtNi42LTEzLjctOC4xLTIxLjEtOC4xLTEuNi01LjctNi41LTEyLjItMTQuMS0xMC4zLTYuOCAxLjktMTQuMSAxMC0xNC45IDE1LjktMjIuNSA5LjUtMzAuMSAyNi44LTI1LjEgNDcuNiA1LjMgMjQuOCAzMyAzNi4yIDQ1LjkgMzYuMnYxOS43Yy02LjYtNS0xNC4zLTcuNS0yNi44LTUuNy01LjUtNS41LTE3LjMtMTAuMS0xNy4zIDUuNy01LjkgMi43LTExLjQgNS45LTE1LjkgOS4yLTkuOC00LjktMTMuNi0xLjctMTEuMSA5LjItNC4xIDQuMy03LjggOC42LTExLjEgMTMuOC0xMC4yLTMuNy0xMSAyLjItNS40IDExLjYtMS4xIDMuNS0xLjYgNy0xLjkgMTAuOC0uNSAzMS42IDQ0LjYgNjQgNzMuNSA2NS4xIDE3LjMuNSAzNC42LTguNCA0My0yMy41IDExMy4yIDQuOSAyMjYuNyA0LjEgMzQwLjIgMCA4LjEgMTUuMSAyNS40IDI0LjMgNDIuNyAyMy41IDI5LjItMS4xIDc0LjMtMzMuNSA3My41LTY1LjEuMi0zLjctLjctNy4yLTEuNy0xMC43em0tNzMuOC0yNTRjMS4xLTMgMi40LTguNCAyLjQtMTQuNiAwLTUuOSA2LjgtOC4xIDE0LjEtLjggMTEuMSAxMS42IDE0LjkgNDAuNSAxMy44IDUxLjEtNC4xLTEzLjYtMTMtMjktMzAuMy0zNS43em0tNC42IDYuN2MxOS41IDYuMiAyOC42IDI3LjYgMjkuNyA0OC45LTEuMSAyLjctMyA1LjQtNC45IDcuNi01LjcgNS45LTE1LjQgMTAtMjYuMiAxMi4yIDQuMy0yMS4zLjMtNDcuMy0xMi43LTYzIDQuOS0uOCAxMC45LTIuNCAxNC4xLTUuN3ptLTI0LjEgNi44YzEzLjggMTEuOSAyMCAzOS4yIDE0LjEgNjMuNS00LjEuNS04LjEuOC0xMS42LjgtMS45LTIxLjktNi44LTQ0LTE0LjMtNjQuNiAzLjcuMyA4LjEuMyAxMS44LjN6TTQ3LjUgMjAzYy0xLjEtMTAuNSAyLjQtMzkuNSAxMy44LTUxLjEgNy03LjMgMTQuMS01LjEgMTQuMS44IDAgNi4yIDEuNCAxMS42IDIuNCAxNC42LTE3LjMgNi44LTI2LjIgMjIuMi0zMC4zIDM1Ljd6bTkuNyAyNy42Yy0xLjktMi4yLTMuNS00LjktNC45LTcuNiAxLjQtMjEuMyAxMC4zLTQyLjcgMjkuNy00OC45IDMuMiAzLjIgOS4yIDQuOSAxNC4xIDUuNy0xMyAxNS43LTE3IDQxLjYtMTIuNyA2My0xMC44LTIuMi0yMC41LTYtMjYuMi0xMi4yem00Ny45IDE0LjZjLTQuMSAwLTguMS0uMy0xMi43LS44LTQuNi0xOC42LTEuOS0zOC45IDUuNC01M3YuM2wxMi4yLTUuMWM0LjktMS45IDkuNy0zLjggMTQuOS00LjktMTAuNyAxOS43LTE3LjQgNDEuMy0xOS44IDYzLjV6bTE4NC0xNjIuN2M0MS45IDAgNzYuMiAzNCA3Ni4yIDc1LjkgMCA0Mi4yLTM0LjMgNzYuMi03Ni4yIDc2LjJzLTc2LjItMzQtNzYuMi03Ni4yYzAtNDEuOCAzNC4zLTc1LjkgNzYuMi03NS45em0xMTUuNiAxNzQuM2MtLjMgMTcuOC03IDQ4LjktMjMgNTctMTMuMiA2LjYtNi41LTcuNS0xNi41LTU4LjEgMTMuMy4zIDI2LjYuMyAzOS41IDEuMXptLTU0LTEuNmMuOCA0LjkgMy44IDQwLjMtMS42IDQxLjktMTEuNiAzLjUtNDAgNC4zLTUxLjEtMS4xLTQuMS0zLTQuNi0zNS45LTQuMy00MS4xdi4zYzE4LjktLjMgMzguMS0uMyA1NyAwek0yNzguMyAzMDljLTEzIDMuNS00MS42IDQuMS01NC42LTEuNi02LjUtMi43LTMuOC00Mi40LTEuOS01MS42IDE5LjItLjUgMzguNC0uNSA1Ny44LS44di4zYzEuMSA4LjMgMy4zIDUxLjItMS4zIDUzLjd6bS0xMDYuNS01MS4xYzEyLjItLjggMjQuNi0xLjQgMzYuOC0xLjYtMi40IDE1LjQtMyA0My41LTQuOSA1Mi4yLTEuMSA2LjgtNC4zIDYuOC05LjcgNC4zLTIxLjktOS44LTI3LjYtMzUuMi0yMi4yLTU0Ljl6bS0zNS40IDMxLjNjNy44LTEuMSAxNS43LTEuOSAyMy41LTIuNyAxLjYgNi4yIDMuOCAxMS45IDcgMTcuNiAxMCAxNyA0NCAzNS43IDQ1LjEgNyA2LjIgMTQuOSA0MC44IDEyLjIgNTQuOSAxMC44IDE1LjctMS40IDIzLjgtMS40IDI2LjgtMTQuMyAxMi40IDQuMyAzMC44IDQuMSA0NCAzIDExLjMtLjggMjAuOC0uNSAyNC42LTguOSAxLjEgNS4xIDEuOSAxMS42IDQuNiAxNi44IDEwLjggMjEuMyAzNy4zIDEuNCA0Ni44LTMxLjYgOC42LjggMTcuNiAxLjkgMjYuNSAyLjctLjQgMS4zLTMuOCA3LjMgNy4zIDExLjYtNDcuNiA0Ny05NS43IDg3LjgtMTYzLjIgMTA3LTYzLjItMjAuOC0xMTIuMS01OS41LTE1NS45LTEwNi41IDkuNi0zLjQgMTAuNC04LjggOC0xMi41em0tMjEuNiAxNzIuNWMtMy44IDE3LjgtMjEuOSAyOS43LTM5LjcgMjguOS0xOS4yLS44LTQ2LjUtMTctNTkuMi0zNi41LTIuNy0zMS4xIDQzLjgtNjEuMyA2Ni4yLTU0LjYgMTQuOSA0LjMgMjcuOCAzMC44IDMzLjUgNTQgMCAzLS4zIDUuNy0uOCA4LjJ6bS04LjctNjZjLS41LTEzLjUtLjUtMjctLjMtNDAuNWguM2MyLjctMS42IDUuNy0zLjggNy44LTYuNSA2LjUtMS42IDEzLTUuMSAxNS4xLTkuMiAzLjMtNy4xLTctNy41LTUuNC0xMi40IDIuNy0xLjEgNS43LTIuMiA3LjgtMy41IDI5LjIgMjkuMiA1OC42IDU2LjUgOTcuMyA3Ny0zNi44IDExLjMtNzIuNCAyNy42LTEwNS45IDQ3LTEuMi0xOC42LTcuNy0zNS45LTE2LjctNTEuOXptMzM3LjYgNjQuNmMtMTAzIDMuNS0yMDYuMiA0LjEtMzA5LjQgMCAwIC4zIDAgLjMtLjMuM3YtLjNoLjNjMzUuMS0yMS42IDcyLjItMzkuMiAxMTIuNC01MC44IDExLjYgNS4xIDIzIDkuNSAzNC45IDEzLjIgMi4yLjggMi4yLjggNC4zIDAgMTQuMy00LjEgMjguNC05LjIgNDIuMi0xNS40IDQxLjUgMTEuNyA3OC44IDMxLjcgMTE1LjYgNTN6bTEwLjUtMTIuNGMtMzUuOS0xOS41LTczLTM1LjktMTExLjktNDcuNiAzOC4xLTIwIDcxLjktNDcuMyAxMDMuNS03Ni43IDIuMiAxLjQgNC42IDIuNCA3LjYgMy4yIDAgLjguMyAxLjkuNSAyLjQtNC42IDIuNy03LjggNi4yLTUuOSAxMC4zIDIuMiAzLjggOC42IDcuNiAxNS4xIDguOSAyLjQgMi43IDUuMSA1LjEgOC4xIDYuOCAwIDEzLjgtLjMgMjcuNi0uOCA0MS4zbC4zLS4zYy05LjMgMTUuOS0xNS41IDM3LTE2LjUgNTEuN3ptMTA1LjkgNi4yYy0xMi43IDE5LjUtNDAgMzUuNy01OS4yIDM2LjUtMTkuMy45LTQwLjUtMTMuMi00MC41LTM3IDUuNy0yMy4yIDE4LjktNDkuNyAzMy41LTU0IDIyLjctNi45IDY5LjIgMjMuNCA2Ni4yIDU0LjV6TTM3Mi45IDc1LjJjLTMuOC03Mi4xLTEwMC44LTc5LjctMTI2LTIzLjUgNDQuNi0yNC4zIDkwLjMtMTUuNyAxMjYgMjMuNXpNNzQuOCA0MDcuMWMtMTUuNyAxLjYtNDkuNSAyNS40LTQ5LjUgNDMuMiAwIDExLjYgMTUuNyAxOS41IDMyLjIgMTQuOSAxMi4yLTMuMiAzMS4xLTE3LjYgMzUuOS0yNy4zIDYtMTEuNi0zLjctMzIuNy0xOC42LTMwLjh6bTIxNS45LTE3Ni4yYzI4LjYgMCA1MS45LTIxLjYgNTEuOS00OC40IDAtMzYuMS00MC41LTU4LjEtNzIuMi00NC4zIDkuNSAzIDE2LjUgMTEuNiAxNi41IDIxLjYgMCAyMy4zLTMzLjMgMzItNDYuNSAxMS4zLTcuMyAzNC4xIDE5LjQgNTkuOCA1MC4zIDU5Ljh6TTY4IDQ3NC4xYy41IDYuNSAxMi4yIDEyLjcgMjEuNiA5LjUgNi44LTIuNyAxNC42LTEwLjUgMTcuMy0xNi4yIDMtNy0xLjEtMjAtOS43LTE4LjQtOC45IDEuNi0yOS43IDE2LjctMjkuMiAyNS4xem00MzMuMi02N2MtMTQuOS0xLjktMjQuNiAxOS4yLTE4LjkgMzAuOCA0LjkgOS43IDI0LjEgMjQuMSAzNi4yIDI3LjMgMTYuNSA0LjYgMzIuMi0zLjIgMzIuMi0xNC45IDAtMTcuOC0zMy44LTQxLjYtNDkuNS00My4yek00NzguOCA0NDljLTguNC0xLjYtMTIuNCAxMS4zLTkuNSAxOC40IDIuNCA1LjcgMTAuMyAxMy41IDE3LjMgMTYuMiA5LjIgMy4yIDIxLjEtMyAyMS4zLTkuNS45LTguNC0yMC4yLTIzLjUtMjkuMS0yNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcmNpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTQuNzUgMTg4LjE5aC00NS45MlYzNDJoNDcuNDdjNjcuNjIgMCA4My4xMi01MS4zNCA4My4xMi03Ni45MSAwLTQxLjY0LTI2LjU0LTc2LjktODQuNjctNzYuOXpNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptLTgwLjc5IDM2MC43NmgtMjkuODR2LTIwNy41aDI5Ljg0em0tMTQuOTItMjMxLjE0YTE5LjU3IDE5LjU3IDAgMSAxIDE5LjU3LTE5LjU3IDE5LjY0IDE5LjY0IDAgMCAxLTE5LjU3IDE5LjU3ek0zMDAgMzY5aC04MVYxNjEuMjZoODAuNmM3Ni43MyAwIDExMC40NCA1NC44MyAxMTAuNDQgMTAzLjg1QzQxMCAzMTguMzkgMzY4LjM4IDM2OSAzMDAgMzY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPc2kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNjYuNDRDMTAuMyAxMzAuNjQgMTA1LjQgMzQgMjIxLjggMTguMzRjMTM4LjgtMTguNiAyNTUuNiA3NS44IDI3OCAyMDEuMSAyMS4zIDExOC44LTQ0IDIzMC0xNTEuNiAyNzQtOS4zIDMuOC0xNC40IDEuNy0xOC03LjdxLTI2LjctNjkuNDUtNTMuNC0xMzljLTMuMS04LjEtMS0xMy4yIDctMTYuOCAyNC4yLTExIDM5LjMtMjkuNCA0My4zLTU1LjhhNzEuNDcgNzEuNDcgMCAwIDAtNjQuNS04Mi4yYy0zOS0zLjQtNzEuOCAyMy43LTc3LjUgNTkuNy01LjIgMzMgMTEuMSA2My43IDQxLjkgNzcuNyA5LjYgNC40IDExLjUgOC42IDcuOCAxOC40cS0yNi44NSA2OS45LTUzLjcgMTM5LjljLTIuNiA2LjktOC4zIDkuMy0xNS41IDYuNS01Mi42LTIwLjMtMTAxLjQtNjEtMTMwLjgtMTE5LTI0LjktNDkuMi0yNS4yLTg3LjctMjYuOC0xMDguN3ptMjAuOS0xLjljLjQgNi42LjYgMTQuMyAxLjMgMjIuMSA2LjMgNzEuOSA0OS42IDE0My41IDEzMSAxODMuMSAzLjIgMS41IDQuNC44IDUuNi0yLjNxMjIuMzUtNTguNjUgNDUtMTE3LjNjMS4zLTMuMy42LTQuOC0yLjQtNi43LTMxLjYtMTkuOS00Ny4zLTQ4LjUtNDUuNi04NiAxLTIxLjYgOS4zLTQwLjUgMjMuOC01Ni4zIDMwLTMyLjcgNzctMzkuOCAxMTUuNS0xNy42YTkxLjY0IDkxLjY0IDAgMCAxIDQ1LjIgOTAuNGMtMy42IDMwLjYtMTkuMyA1My45LTQ1LjcgNjkuOC0yLjcgMS42LTMuNSAyLjktMi4zIDZxMjIuOCA1OC44IDQ1LjIgMTE3LjdjMS4yIDMuMSAyLjQgMy44IDUuNiAyLjMgMzUuNS0xNi42IDY1LjItNDAuMyA4OC4xLTcyIDM0LjgtNDguMiA0OS4xLTEwMS45IDQyLjMtMTYxLTEzLjctMTE3LjUtMTE5LjQtMjE0LjgtMjU1LjUtMTk4LTEwNi4xIDEzLTE5NS4zIDEwMi41LTE5Ny4xIDIyNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWdlNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNTA0QzExMSA1MDQgMCAzOTMgMCAyNTZTMTExIDggMjQ4IDhjMjAuOSAwIDQxLjMgMi42IDYwLjcgNy41TDQyLjMgMzkySDI0OHYxMTJ6bTAtMTQzLjZWMTQ2LjhMOTguNiAzNjAuNEgyNDh6bTk2IDMxLjZ2OTIuN2M0NS43LTE5LjIgODQuNS01MS43IDExMS40LTkyLjdIMzQ0em01Ny40LTEzOC4ybC0yMS4yIDguNCAyMS4yIDguM3YtMTYuN3ptLTIwLjMgNTQuNWMtNi43IDAtOCA2LjMtOCAxMi45djcuN2gxNi4ydi0xMGMwLTUuOS0yLjMtMTAuNi04LjItMTAuNnpNNDk2IDI1NmMwIDM3LjMtOC4yIDcyLjctMjMgMTA0LjRIMzQ0VjI3LjNDNDMzLjMgNjQuOCA0OTYgMTUzLjEgNDk2IDI1NnpNMzYwLjQgMTQzLjZoNjguMlY5NmgtMTMuOXYzMi42aC0xMy45Vjk5aC0xMy45djI5LjZoLTEyLjdWOTZoLTEzLjl2NDcuNnptNjguMSAxODUuM0g0MDJ2LTExYzAtMTUuNC01LjYtMjUuMi0yMC45LTI1LjItMTUuNCAwLTIwLjcgMTAuNi0yMC43IDI1Ljl2MjUuM2g2OC4ydi0xNXptMC0xMDNsLTY4LjIgMjkuN1YyNjhsNjguMiAyOS41di0xNi42bC0xNC40LTUuN3YtMjYuNWwxNC40LTUuOXYtMTYuOXptLTQuOC02OC41aC0zNS42VjE4NEg0MDJ2LTEyLjJoMTFjOC42IDE1LjggMS4zIDM1LjMtMTguNiAzNS4zLTIyLjUgMC0yOC4zLTI1LjMtMTUuNS0zNy43bC0xMS42LTEwLjZjLTE2LjIgMTcuNS0xMi4yIDYzLjkgMjcuMSA2My45IDM0IDAgNDQuNy0zNS45IDI5LjMtNjUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFnZWxpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMTIuN2MtNTUuMSAxMzYuNy0xODcuMSA1NC0xODcuMSA1NC00MC41IDgxLjgtMTA3LjQgMTM0LjQtMTg0LjYgMTM0LjctMTYuMSAwLTE2LjYtMjQuNCAwLTI0LjQgNjQuNC0uMyAxMjAuNS00Mi43IDE1Ny4yLTExMC4xLTQxLjEgMTUuOS0xMTguNiAyNy45LTE2MS42LTgyLjIgMTA5LTQ0LjkgMTU5LjEgMTEuMiAxNzguMyA0NS41IDkuOS0yNC40IDE3LTUwLjkgMjEuNi03OS43IDAgMC0xMzkuNyAyMS45LTE0OS41LTk4LjEgMTE5LjEtNDcuOSAxNTIuNiA3Ni43IDE1Mi42IDc2LjcgMS42LTE2LjcgMy4zLTUyLjYgMy4zLTUzLjQgMCAwLTEwNi4zLTczLjctMzguMS0xNjUuMiAxMjQuNiA0MyA2MS40IDE2Mi40IDYxLjQgMTYyLjQuNSAxLjYuNSAyMy44IDAgMzMuNCAwIDAgNDUuMi04OSAxMzYuNC01Ny41LTQuMiAxMzQtMTQxLjkgMTA2LjQtMTQxLjkgMTA2LjQtNC40IDI3LjQtMTEuMiA1My40LTIwIDc3LjUgMCAwIDgzLTkxLjggMTcyLTIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWxmZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0LjkgMTkzLjljMC00Ny40LTU1LjItNDQuMi05NS40LTI5LjgtMS4zIDM5LjQtMi41IDgwLjctMyAxMTkuOC43IDIuOCAyLjYgNi4yIDE1LjEgNi4yIDM2LjggMCA4My40LTQyLjggODMuMy05Ni4yem0tMTk0LjUgNzIuMmMuMiAwIDYuNS0yLjcgMTEuMi0yLjcgMjYuNiAwIDIwLjcgNDQuMS0xNC40IDQ0LjEtMjEuNSAwLTM3LjEtMTguMS0zNy4xLTQzIDAtNDIgNDIuOS05NS42IDEwMC43LTEyNi41IDEtMTIuNCAzLTIyIDEwLjUtMjguMiAxMS4yLTkgMjYuNi0zLjUgMjkuNSAxMS4xIDcyLjItMjIuMiAxMzUuMiAxIDEzNS4yIDcyIDAgNzcuOS03OS4zIDE1Mi42LTE0MC4xIDEzOC4yLS4xIDM5LjQuOSA3NC40IDIuNyAxMDB2LjJjLjIgMy40LjYgMTIuNS01LjMgMTkuMS05LjYgMTAuNi0zMy40IDEwLTM2LjQtMjIuMy00LjEtNDQuNC4yLTIwNi4xIDEuNC0yNDIuNS0yMS41IDE1LTU4LjUgNTAuMy01OC41IDc1LjkuMiAyLjUuNCA0IC42IDQuNnpNOCAxODEuMXMtLjEgMzcuNCAzOC40IDM3LjRoMzBsMjIuNCAyMTcuMnMwIDQ0LjMgNDQuNyA0NC4zaDI4OC45czQ0LjctLjQgNDQuNy00NC4zbDIyLjQtMjE3LjJoMzBzMzguNCAxLjIgMzguNC0zNy40YzAgMCAuMS0zNy40LTM4LjQtMzcuNGgtMzAuMWMtNy4zLTI1LjYtMzAuMi03NC4zLTExOS40LTc0LjNoLTI4VjUwLjNzLTIuNy0xOC40LTIxLjEtMTguNGgtODUuOHMtMjEuMSAwLTIxLjEgMTguNHYxOS4xaC0yOC4xcy0xMDUgNC4yLTEyMC41IDc0LjNoLTI5UzggMTQyLjUgOCAxODEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF0cmVvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMTk0LjhjMCAxMDEuMy04Mi40IDE4My44LTE4My44IDE4My44LTEwMS43IDAtMTg0LjQtODIuNC0xODQuNC0xODMuOCAwLTEwMS42IDgyLjctMTg0LjMgMTg0LjQtMTg0LjNDNDI5LjYgMTAuNSA1MTIgOTMuMiA1MTIgMTk0Ljh6TTAgNTAxLjVoOTB2LTQ5MUgwdjQ5MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF5cGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMS40IDI5NS45Yy0zLjUgMTkuMi0xNy40IDEwOC43LTIxLjUgMTM0LS4zIDEuOC0xIDIuNS0zIDIuNUgxMi4zYy03LjYgMC0xMy4xLTYuNi0xMi4xLTEzLjlMNTguOCA0Ni42YzEuNS05LjYgMTAuMS0xNi45IDIwLTE2LjkgMTUyLjMgMCAxNjUuMS0zLjcgMjA0IDExLjQgNjAuMSAyMy4zIDY1LjYgNzkuNSA0NCAxNDAuMy0yMS41IDYyLjYtNzIuNSA4OS41LTE0MC4xIDkwLjMtNDMuNC43LTY5LjUtNy03NS4zIDI0LjJ6TTM1Ny4xIDE1MmMtMS44LTEuMy0yLjUtMS44LTMgMS4zLTIgMTEuNC01LjEgMjIuNS04LjggMzMuNi0zOS45IDExMy44LTE1MC41IDEwMy45LTIwNC41IDEwMy45LTYuMSAwLTEwLjEgMy4zLTEwLjkgOS40LTIyLjYgMTQwLjQtMjcuMSAxNjkuNy0yNy4xIDE2OS43LTEgNy4xIDMuNSAxMi45IDEwLjYgMTIuOWg2My41YzguNiAwIDE1LjctNi4zIDE3LjQtMTQuOS43LTUuNC0xLjEgNi4xIDE0LjQtOTEuMyA0LjYtMjIgMTQuMy0xOS43IDI5LjMtMTkuNyA3MSAwIDEyNi40LTI4LjggMTQyLjktMTEyLjMgNi41LTM0LjggNC42LTcxLjQtMjMuOC05Mi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5ueUFyY2FkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjEuOTEgMTY0LjI3Yy00LjQ5IDE5LjQ1LTEuNCA2LjA2LTE1LjEgNjUuMjlsMzkuNzMtMTAuNjFjLTIyLjM0LTQ5LjYxLTE3LjI5LTM4LjQxLTI0LjYzLTU0LjY4em0tMjA2LjA5IDUxLjExYy0yMC4xOSA1LjQtMTEuMzEgMy4wMy0zOS42MyAxMC41OGw0LjQ2IDQ2LjE5YzI4LjE3LTcuNTkgMjAuNjItNS41NyAzNC44Mi05LjM0IDQyLjMtOS43OSAzMi44NS01Ni40Mi4zNS00Ny40M3ptMzI2LjE2LTI2LjE5bC00NS40Ny05OS4yYy01LjY5LTEyLjM3LTE5LjQ2LTE4Ljg0LTMyLjYyLTE1LjMzLTcwLjI3IDE4Ljc1LTM4LjcyIDEwLjMyLTEzNS41OSAzNi4yM2EyNy42MTggMjcuNjE4IDAgMCAwLTE4Ljg5IDE3LjQxQzE0NC4yNiAxMTMuMjcgMCAxNTMuNzUgMCAyMjYuNjdjMCAzMy41IDMwLjY3IDY3LjExIDgwLjkgOTUuMzdsMS43NCAxNy44OGEyNy44OTEgMjcuODkxIDAgMCAwLTE3Ljc3IDI4LjY3bDQuMyA0NC40OGMxLjM5IDE0LjMxIDEzLjQzIDI1LjIxIDI3LjggMjUuMiA1LjE4LS4wMS0zLjAxIDEuNzggMTIyLjUzLTMxLjc2IDEyLjU3LTMuMzcgMjEuMTItMTUuMDIgMjAuNTgtMjguMDIgMjE2LjU5IDQ1LjUgNDAxLjk5LTUuOTggMzk5Ljg5LTg0LjgzLjAxLTI4LjE1LTIyLjE5LTY2LjU2LTk3Ljk5LTEwNC40N3pNMjU1LjE0IDI5OC4zbC0yMS45MSA1Ljg4LTQ4LjQ0IDEyLjkxIDIuNDYgMjMuNTUgMjAuNTMtNS41MSA0LjUxIDQ0LjUxLTExNS4zMSAzMC43OC00LjMtNDQuNTIgMjAuMDItNS4zNS0xMS4xMS0xMTQuNjQtMjAuMTIgNS4zOS00LjM1LTQ0LjVjMTc4LjE1LTQ3LjU0IDE3MC4xOC00Ni40MiAxODYuMjItNDYuNjUgNTYuNjYtMS4xMyA2NC4xNSA3MS44NCA0Mi41NSAxMDQuNDNhODYuNyA4Ni43IDAgMCAxLTUwLjc1IDMzLjcyem0xOTkuMTggMTYuNjJsLTMuODktMzkuNDkgMTQuOS0zLjk4LTYuNjEtMTQuNjgtNTcuNzYgMTUuNDItNC4xIDE3LjU0IDE5LjItNS4xMiA0LjA1IDM5LjU0LTExMi44NSAzMC4wNy00LjQ2LTQ0LjQzIDIwLjk5LTUuNTkgMzMuMDgtMTI2LjQ3LTE3LjE1IDQuNTYtNC4yLTQ0LjQ4YzkzLjM2LTI0Ljk5IDY1LjAxLTE3LjQxIDEzNS41OS0zNi4yNGw2Ni42NyAxNDUuNDcgMjAuNzktNS41NiA0LjMgNDQuNDgtMTA4LjU1IDI4Ljk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJieXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNS4zMTQsMjg0LjU3OEgyNDYuNlYzODMuM2g1OC43MTFxMjQuNDIzLDAsMzguMTkzLTEzLjc3dDEzLjc3LTM2LjExcTAtMjEuODI2LTE0LjAzMi0zNS4zMzVUMzA1LjMxNCwyODQuNTc4Wk0xNDkuNDM1LDEyOC43SDkwLjcyNHY5OC43MjNoNTguNzExcTI0LjQyLDAsMzguMTktMTMuNzczdDEzLjc3LTM2LjEwN3EwLTIxLjgyNi0xNC4wMjktMzUuMzM4VDE0OS40MzUsMTI4LjdaTTM2Ni42NDcsMzJIODEuMzUzQTgxLjQ0NSw4MS40NDUsMCwwLDAsMCwxMTMuMzUyVjM5OC42NDdBODEuNDQ1LDgxLjQ0NSwwLDAsMCw4MS4zNTMsNDgwSDM2Ni42NDdBODEuNDQ1LDgxLjQ0NSwwLDAsMCw0NDgsMzk4LjY0N1YxMTMuMzUyQTgxLjQ0NSw4MS40NDUsMCwwLDAsMzY2LjY0NywzMlptNjMuNjM1LDM2Ni42NDdhNjMuNzA2LDYzLjcwNiwwLDAsMS02My42MzUsNjMuNjM1SDgxLjM1M2E2My43MDYsNjMuNzA2LDAsMCwxLTYzLjYzNS02My42MzVWMTEzLjM1MkE2My43MDYsNjMuNzA2LDAsMCwxLDgxLjM1Myw0OS43MThIMzY2LjY0N2E2My43MDYsNjMuNzA2LDAsMCwxLDYzLjYzNSw2My42MzRaTTMwNS4zMTQsMTI4LjdIMjQ2LjZ2OTguNzIzaDU4LjcxMXEyNC40MjMsMCwzOC4xOTMtMTMuNzczdDEzLjc3LTM2LjEwN3EwLTIxLjgyNi0xNC4wMzItMzUuMzM4VDMwNS4zMTQsMTI4LjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcmlzY29wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzAgNjMuNkMzMzEuNCAyMi42IDI4MC41IDAgMjI2LjYgMCAxMTEuOSAwIDE4LjUgOTYuMiAxOC41IDIxNC40YzAgNzUuMSA1Ny44IDE1OS44IDgyLjcgMTkyLjdDMTM3LjggNDU1LjUgMTkyLjYgNTEyIDIyNi42IDUxMmM0MS42IDAgMTEyLjktOTQuMiAxMjAuOS0xMDUgMjQuNi0zMy4xIDgyLTExOC4zIDgyLTE5Mi42IDAtNTYuNS0yMS4xLTExMC4xLTU5LjUtMTUwLjh6TTIyNi42IDQ5My45Yy00Mi41IDAtMTkwLTE2Ny4zLTE5MC0yNzkuNCAwLTEwNy40IDgzLjktMTk2LjMgMTkwLTE5Ni4zIDEwMC44IDAgMTg0LjcgODkgMTg0LjcgMTk2LjMuMSAxMTIuMS0xNDcuNCAyNzkuNC0xODQuNyAyNzkuNHpNMzM4IDIwNi44YzAgNTkuMS01MS4xIDEwOS43LTExMC44IDEwOS43LTEwMC42IDAtMTUwLjctMTA4LjItOTIuOS0xODEuOHYuNGMwIDI0LjUgMjAuMSA0NC40IDQ0LjggNDQuNCAyNC43IDAgNDQuOC0xOS45IDQ0LjgtNDQuNCAwLTE4LjItMTEuMS0zMy44LTI2LjktNDAuNyA3Ni42LTE5LjIgMTQxIDM5LjMgMTQxIDExMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaGFicmljYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjMgMjYyLjFsLS4xLTEzczIxLjctMTkuOCAyMS4xLTIxLjJsLTkuNS0yMGMtLjYtMS40LTI5LjUtLjUtMjkuNS0uNWwtOS40LTkuM3MuMi0yOC41LTEuMi0yOS4xbC0yMC4xLTkuMmMtMS40LS42LTIwLjcgMjEtMjAuNyAyMWwtMTMuMS0uMnMtMjAuNS0yMS40LTIxLjktMjAuOGwtMjAgOC4zYy0xLjQuNS4yIDI4LjkuMiAyOC45bC05LjEgOS4xcy0yOS4yLS45LTI5LjcuNGwtOC4xIDE5LjhjLS42IDEuNCAyMSAyMSAyMSAyMWwuMSAxMi45cy0yMS43IDE5LjgtMjEuMSAyMS4ybDkuNSAyMGMuNiAxLjQgMjkuNS41IDI5LjUuNWw5LjQgOS4zcy0uMiAzMS44IDEuMiAzMi4zbDIwLjEgOC4zYzEuNC42IDIwLjctMjMuNSAyMC43LTIzLjVsMTMuMS4yczIwLjUgMjMuOCAyMS44IDIzLjNsMjAtNy41YzEuNC0uNi0uMi0zMi4xLS4yLTMyLjFsOS4xLTkuMXMyOS4yLjkgMjkuNy0uNWw4LjEtMTkuOGMuNy0xLjEtMjAuOS0yMC43LTIwLjktMjAuN3ptLTQ0LjktOC43Yy43IDE3LjEtMTIuOCAzMS42LTMwLjEgMzIuNC0xNy4zLjgtMzIuMS0xMi41LTMyLjgtMjkuNi0uNy0xNy4xIDEyLjgtMzEuNiAzMC4xLTMyLjMgMTcuMy0uOCAzMi4xIDEyLjUgMzIuOCAyOS41em0yMDEuMi0zNy45bC05Ny05Ny0uMS4xYy03NS4xLTczLjMtMTk1LjQtNzIuOC0yNjkuOCAxLjYtNTAuOSA1MS0yNy44IDI3LjktOTUuNyA5NS4zLTIyLjMgMjIuMy0yMi4zIDU4LjcgMCA4MSA2OS45IDY5LjQgNDYuNCA0NiA5Ny40IDk3bC4xLS4xYzc1LjEgNzMuMyAxOTUuNCA3Mi45IDI2OS44LTEuNiA1MS01MC45IDI3LjktMjcuOSA5NS4zLTk1LjMgMjIuMy0yMi4zIDIyLjMtNTguNyAwLTgxek0xNDAuNCAzNjMuOGMtNTkuNi01OS41LTU5LjYtMTU2IDAtMjE1LjUgNTkuNS01OS42IDE1Ni01OS41IDIxNS42IDAgNTkuNSA1OS41IDU5LjYgMTU2IDAgMjE1LjYtNTkuNiA1OS41LTE1NiA1OS40LTIxNS42LS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9lbml4RnJhbWV3b3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMi45IDM0NC4zYzMuOC0uMSAyMi44LTEuNCAyNS42LTIuMi0yLjQtMi42LTQzLjYtMS02OC00OS42LTQuMy04LjYtNy41LTE3LjYtNi40LTI3LjYgMi45LTI1LjUgMzIuOS0zMCA1Mi0xOC41IDM2IDIxLjYgNjMuMyA5MS4zIDExMy43IDk3LjUgMzcgNC41IDg0LjYtMTcgMTA4LjItNDUuNC0uNi0uMS0uOC0uMi0xLS4xLS40LjEtLjguMi0xLjEuMy0zMy4zIDEyLjEtOTQuMyA5LjctMTM0LjctMTQuOC0zNy42LTIyLjgtNTMuMS01OC43LTUxLjgtNzQuNiAxLjgtMjEuMyAyMi45LTIzLjIgMzUuOS0xOS42IDE0LjQgMy45IDI0LjQgMTcuNiAzOC45IDI3LjQgMTUuNiAxMC40IDMyLjkgMTMuNyA1MS4zIDEwLjMgMTQuOS0yLjcgMzQuNC0xMi4zIDM2LjUtMTQuNS0xLjEtLjEtMS44LS4xLTIuNS0uMi02LjItLjYtMTIuNC0uOC0xOC41LTEuN0MyNzkuOCAxOTQuNSAyNjIuMSA0Ny40IDEzOC41IDM3LjkgOTQuMiAzNC41IDM5LjEgNDYgMi4yIDcyLjljLS44LjYtMS41IDEuMi0yLjIgMS44LjEuMi4xLjMuMi41LjggMCAxLjYtLjEgMi40LS4yIDYuMy0xIDEyLjUtLjggMTguNy4zIDIzLjggNC4zIDQ3LjcgMjMuMSA1NS45IDc2LjUgNS4zIDM0LjMtLjcgNTAuOCA4IDg2LjEgMTkgNzcuMSA5MSAxMDcuNiAxMjcuNyAxMDYuNHpNNzUuMyA2NC45Yy0uOS0xLS45LTEuMi0xLjMtMiAxMi4xLTIuNiAyNC4yLTQuMSAzNi42LTQuOC0xLjEgMTQuNy0yMi4yIDIxLjMtMzUuMyA2Ljh6bTE5Ni45IDM1MC41Yy00Mi44IDEuMi05Mi0yNi43LTEyMy41LTYxLjQtNC42LTUtMTYuOC0yMC4yLTE4LjYtMjMuNGwuNC0uNGM2LjYgNC4xIDI1LjcgMTguNiA1NC44IDI3IDI0LjIgNyA0OC4xIDYuMyA3MS42LTMuMyAyMi43LTkuMyA0MS0uNSA0My4xIDIuOS0xOC41IDMuOC0yMC4xIDQuNC0yNCA3LjktNS4xIDQuNC00LjYgMTEuNyA3IDE3LjIgMjYuMiAxMi40IDYzLTIuOCA5Ny4yIDI1LjQgMi40IDIgOC4xIDcuOCAxMC4xIDEwLjctLjEuMi0uMy4zLS40LjUtNC44LTEuNS0xNi40LTcuNS00MC4yLTkuMy0yNC43LTItNDYuMyA1LjMtNzcuNSA2LjJ6bTE3NC44LTI1MmMxNi40LTUuMiA0MS4zLTEzLjQgNjYuNS0zLjMgMTYuMSA2LjUgMjYuMiAxOC43IDMyLjEgMzQuNiAzLjUgOS40IDUuMSAxOS43IDUuMSAyOC43LS4yIDAtLjQgMC0uNi4xLS4yLS40LS40LS45LS41LTEuMy01LTIyLTI5LjktNDMuOC02Ny42LTI5LjktNTAuMiAxOC42LTEzMC40IDkuNy0xNzYuOS00OC0uNy0uOS0yLjQtMS43LTEuMy0zLjIuMS0uMiAyLjEuNiAzIDEuMyAxOC4xIDEzLjQgMzguMyAyMS45IDYwLjMgMjYuMiAzMC41IDYuMSA1NC42IDIuOSA3OS45LTUuMnptMTAyLjcgMTE3LjVjLTMyLjQuMi0zMy44IDUwLjEtMTAzLjYgNjQuNC0xOC4yIDMuNy0zOC43IDQuNi00NC45IDQuMnYtLjRjMi44LTEuNSAxNC43LTIuNiAyOS43LTE2LjYgNy45LTcuMyAxNS4zLTE1LjEgMjIuOC0yMi45IDE5LjUtMjAuMiA0MS40LTQyLjIgODEuOS0zOSAyMy4xIDEuOCAyOS4zIDguMiAzNi4xIDEyLjcuMy4yLjQuNS43LjktLjUgMC0uNy4xLS45IDAtNy0yLjctMTQuMy0zLjMtMjEuOC0zLjN6bS0xMi4zLTI0LjFjLS4xLjItLjEuNC0uMi42LTI4LjktNC40LTQ4LTcuOS02OC41IDQtMTcgOS45LTMxLjQgMjAuNS02MiAyNC40LTI3LjEgMy40LTQ1LjEgMi40LTY2LjEtOC0uMy0uMi0uNi0uNC0xLS42IDAtLjIuMS0uMy4xLS41IDI0LjkgMy44IDM2LjQgNS4xIDU1LjUtNS44IDIyLjMtMTIuOSA0MC4xLTI2LjYgNzEuMy0zMSAyOS42LTQuMSA1MS4zIDIuNSA3MC45IDE2Ljl6TTI2OC42IDk3LjNjLS42LS42LTEuMS0xLjItMi4xLTIuMyA3LjYgMCAyOS43LTEuMiA1My40IDguNCAxOS43IDggMzIuMiAyMSA1MC4yIDMyLjkgMTEuMSA3LjMgMjMuNCA5LjMgMzYuNCA4LjEgNC4zLS40IDguNS0xLjIgMTIuOC0xLjcuNC0uMS45IDAgMS41LjMtLjYuNC0xLjIuOS0xLjggMS4yLTguMSA0LTE2LjcgNi4zLTI1LjYgNy4xLTI2LjEgMi42LTUwLjMtMy43LTczLjQtMTUuNC0xOS4zLTkuOS0zNi40LTIyLjktNTEuNC0zOC42ek02NDAgMzM1LjdjLTMuNSAzLjEtMjIuNyAxMS42LTQyLjcgNS4zLTEyLjMtMy45LTE5LjUtMTQuOS0zMS42LTI0LjEtMTAtNy42LTIwLjktNy45LTI4LjEtOC40LjYtLjguOS0xLjIgMS4yLTEuNCAxNC44LTkuMiAzMC41LTEyLjIgNDcuMy02LjUgMTIuNSA0LjIgMTkuMiAxMy41IDMwLjQgMjQuMiAxMC44IDEwLjQgMjEgOS45IDIzLjEgMTAuNS4xLS4xLjIgMCAuNC40em0tMjEyLjUgMTM3YzIuMiAxLjIgMS42IDEuNSAxLjUgMi0xOC41LTEuNC0zMy45LTcuNi00Ni44LTIyLjItMjEuOC0yNC43LTQxLjctMjcuOS00OC42LTI5LjcuNS0uMi44LS40IDEuMS0uNCAxMy4xLjEgMjYuMS43IDM4LjkgMy45IDI1LjMgNi40IDM1IDI1LjQgNDEuNiAzNS4zIDMuMiA0LjggNy4zIDguMyAxMi4zIDExLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob2VuaXhTcXVhZHJvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2My4zOEMxNDIuNDkgMjcuMjUgMjAxLjU1IDcuMzEgMjYwLjUxIDguODFjMjkuNTgtLjM4IDU5LjExIDUuMzcgODYuOTEgMTUuMzMtMjQuMTMtNC42My00OS02LjM0LTczLjM4LTIuNDVDMjMxLjE3IDI3IDE5MSA0OC44NCAxNjIuMjEgODAuODdjNS42Ny0xIDEwLjc4LTMuNjcgMTYtNS44NiAxOC4xNC03Ljg3IDM3LjQ5LTEzLjI2IDU3LjIzLTE0LjgzIDE5Ljc0LTIuMTMgMzkuNjQtLjQzIDU5LjI4IDEuOTItMTQuNDIgMi43OS0yOS4xMiA0LjU3LTQzIDkuNTktMzQuNDMgMTEuMDctNjUuMjcgMzMuMTYtODYuMyA2Mi42My0xMy44IDE5LjcxLTIzLjYzIDQyLjg2LTI0LjY3IDY3LjEzLS4zNSAxNi40OSA1LjIyIDM0LjgxIDE5LjgzIDQ0YTUzLjI3IDUzLjI3IDAgMCAwIDM3LjUyIDYuNzRjMTUuNDUtMi40NiAzMC4wNy04LjY0IDQzLjYtMTYuMzMgMTEuNTItNi44MiAyMi42Ny0xNC41NSAzMi0yNC4yNSAzLjc5LTMuMjIgMi41My04LjQ1IDIuNjItMTIuNzktMi4xMi0uMzQtNC4zOC0xLjExLTYuMy4zYTIwMyAyMDMgMCAwIDEtMzUuODIgMTUuMzdjLTIwIDYuMTctNDIuMTYgOC40Ni02Mi4xLjc4IDEyLjc5IDEuNzMgMjYuMDYuMzEgMzcuNzQtNS40NCAyMC4yMy05LjcyIDM2LjgxLTI1LjIgNTQuNDQtMzguNzdhNTI2LjU3IDUyNi41NyAwIDAgMSA4OC45LTU1LjMxYzI1LjcxLTEyIDUyLjk0LTIyLjc4IDgxLjU3LTI0LjEyLTE1LjYzIDEzLjcyLTMyLjE1IDI2LjUyLTQ2Ljc4IDQxLjM4LTE0LjUxIDE0LTI3LjQ2IDI5LjUtNDAuMTEgNDUuMTgtMy41MiA0LjYtOC45NSA2Ljk0LTEzLjU4IDEwLjE2YTE1MC43IDE1MC43IDAgMCAwLTUxLjg5IDYwLjFjLTkuMzMgMTkuNjgtMTQuNSA0MS44NS0xMS43NyA2My42NSAxLjk0IDEzLjY5IDguNzEgMjcuNTkgMjAuOSAzNC45MSAxMi45IDggMjkuMDUgOC4wNyA0My40OCA1LjEgMzIuOC03LjQ1IDYxLjQzLTI4Ljg5IDgxLTU1Ljg0IDIwLjQ0LTI3LjUyIDMwLjUyLTYyLjIgMjkuMTYtOTYuMzUtLjUyLTcuNS0xLjU3LTE1LTEuNjYtMjIuNDkgOCAxOS40OCAxNC44MiAzOS43MSAxNi42NSA2MC44MyAyIDE0LjI4Ljc1IDI4Ljc2LTEuNjIgNDIuOS0xLjkxIDExLTUuNjcgMjEuNTEtNy43OCAzMi40M2ExNjUgMTY1IDAgMCAwIDM5LjM0LTgxLjA3IDE4My42NCAxODMuNjQgMCAwIDAtMTQuMjEtMTA0LjY0YzIwLjc4IDMyIDMyLjM0IDY5LjU4IDM1LjcxIDEwNy40OC40OSAxMi43My40OSAyNS41MSAwIDM4LjIzQTI0My4yMSAyNDMuMjEgMCAwIDEgNDgyIDM3MS4zNGMtMjYuMTIgNDcuMzQtNjggODUuNjMtMTE3LjE5IDEwOC03OC4yOSAzNi4yMy0xNzQuNjggMzEuMzItMjQ4LTE0LjY4QTI0OC4zNCAyNDguMzQgMCAwIDEgMjUuMzYgMzY2IDIzOC4zNCAyMzguMzQgMCAwIDEgMCAyNzMuMDh2LTMxLjM0QzMuOTMgMTcyIDQwLjg3IDEwNS44MiA5NiA2My4zOG0yMjIgODAuMzNhNzkuMTMgNzkuMTMgMCAwIDAgMTYtNC40OGM1LTEuNzcgOS4yNC01Ljk0IDEwLjMyLTExLjIyLTguOTYgNC45OS0xNy45OCA5LjkyLTI2LjMyIDE1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBocCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMTA0LjVjMTcxLjQgMCAzMDMuMiA3Mi4yIDMwMy4yIDE1MS41UzQ5MS4zIDQwNy41IDMyMCA0MDcuNWMtMTcxLjQgMC0zMDMuMi03Mi4yLTMwMy4yLTE1MS41UzE0OC43IDEwNC41IDMyMCAxMDQuNW0wLTE2LjhDMTQzLjMgODcuNyAwIDE2MyAwIDI1NnMxNDMuMyAxNjguMyAzMjAgMTY4LjNTNjQwIDM0OSA2NDAgMjU2IDQ5Ni43IDg3LjcgMzIwIDg3Ljd6TTIxOC4yIDI0Mi41Yy03LjkgNDAuNS0zNS44IDM2LjMtNzAuMSAzNi4zbDEzLjctNzAuNmMzOCAwIDYzLjgtNC4xIDU2LjQgMzQuM3pNOTcuNCAzNTAuM2gzNi43bDguNy00NC44YzQxLjEgMCA2Ni42IDMgOTAuMi0xOS4xIDI2LjEtMjQgMzIuOS02Ni43IDE0LjMtODguMS05LjctMTEuMi0yNS4zLTE2LjctNDYuNS0xNi43aC03MC43TDk3LjQgMzUwLjN6bTE4NS43LTIxMy42aDM2LjVsLTguNyA0NC44YzMxLjUgMCA2MC43LTIuMyA3NC44IDEwLjcgMTQuOCAxMy42IDcuNyAzMS04LjMgMTEzLjFoLTM3YzE1LjQtNzkuNCAxOC4zLTg2IDEyLjctOTItNS40LTUuOC0xNy43LTQuNi00Ny40LTQuNmwtMTguOCA5Ni42aC0zNi41bDMyLjctMTY4LjZ6TTUwNSAyNDIuNWMtOCA0MS4xLTM2LjcgMzYuMy03MC4xIDM2LjNsMTMuNy03MC42YzM4LjIgMCA2My44LTQuMSA1Ni40IDM0LjN6TTM4NC4yIDM1MC4zSDQyMWw4LjctNDQuOGM0My4yIDAgNjcuMSAyLjUgOTAuMi0xOS4xIDI2LjEtMjQgMzIuOS02Ni43IDE0LjMtODguMS05LjctMTEuMi0yNS4zLTE2LjctNDYuNS0xNi43SDQxN2wtMzIuOCAxNjguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGllZFBpcGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0NCAyNDZjLTMuMi0yLTYuMy0yLjktMTAuMS0yLjktNi42IDAtMTIuNiAzLjItMTkuMyAzLjdsMS43IDQuOXptMTM1LjkgMTk3LjljLTE5IDAtNjQuMSA5LjUtNzkuOSAxOS44bDYuOSA0NS4xYzM1LjcgNi4xIDcwLjEgMy42IDEwNi05LjgtNC44LTEwLTIzLjUtNTUuMS0zMy01NS4xek0zNDAuOCAxNzdjNi42IDIuOCAxMS41IDkuMiAyMi43IDIyLjEgMi0xLjQgNy41LTUuMiA3LjUtOC42IDAtNC45LTExLjgtMTMuMi0xMy4yLTIzIDExLjItNS43IDI1LjItNiAzNy42LTguOSA2OC4xLTE2LjQgMTE2LjMtNTIuOSAxNDYuOC0xMTYuN0M1NDguMyAyOS4zIDU1NCAxNi4xIDU1NC42IDJsLTIgMi42Yy0yOC40IDUwLTMzIDYzLjItODEuMyAxMDAtMzEuOSAyNC40LTY5LjIgNDAuMi0xMDYuNiA1NC42bC02LjMtLjN2LTIxLjhjLTE5LjYgMS42LTE5LjctMTQuNi0zMS42LTIzLTE4LjcgMjAuNi0zMS42IDQwLjgtNTguOSA1MS4xLTEyLjcgNC44LTE5LjYgMTAtMjUuOSAyMS44IDM0LjktMTYuNCA5MS4yLTEzLjUgOTguOC0xMHpNNTU1LjUgMGwtLjYgMS4xLS4zLjkuNi0uNnptLTU5LjIgMzgyLjFjLTMzLjktNTYuOS03NS4zLTExOC40LTE1MC0xMTUuNWwtLjMtNmMtMS4xLTEzLjUgMzIuOCAzLjIgMzUuMS0zMWwtMTQuNCA3LjJjLTE5LjgtNDUuNy04LjYtNTQuMy02NS41LTU0LjMtMTQuNyAwLTI2LjcgMS43LTQxLjQgNC42IDIuOSAxOC42IDIuMiAzNi43LTEwLjkgNTAuM2wxOS41IDUuNWMtMS43IDMuMi0yLjkgNi4zLTIuOSA5LjggMCAyMSA0Mi44IDIuOSA0Mi44IDMzLjYgMCAxOC40LTM2LjggNjAuMS01NC45IDYwLjEtOCAwLTUzLjctNTAtNTMuNC02MC4xbC4zLTQuNiA1Mi4zLTExLjVjMTMtMi42IDEyLjMtMjIuNy0yLjktMjIuNy0zLjcgMC00My4xIDkuMi00OS40IDEwLjYtMi01LjItNy41LTE0LjEtMTMuOC0xNC4xLTMuMiAwLTYuMyAzLjItOS41IDQtOS4yIDIuNi0zMSAyLjktMjEuNSAyMC4xTDE1LjkgMjk4LjVjLTUuNSAxLjEtOC45IDYuMy04LjkgMTEuOCAwIDYgNS41IDEwLjkgMTEuNSAxMC45IDggMCAxMzEuMy0yOC40IDE0Ny40LTMyLjIgMi42IDMuMiA0LjYgNi4zIDcuOCA4LjYgMjAuMSAxNC40IDU5LjggODUuOSA3Ni40IDg1LjkgMjQuMSAwIDU4LTIyLjQgNzEuMy00MS45IDMuMi00LjMgNi45LTcuNSAxMi40LTYuOS42IDEzLjgtMzEuNiAzNC4yLTMzIDQzLjctMS40IDEwLjItMSAzNS4yLS4zIDQxLjEgMjYuNyA4LjEgNTItMy42IDc3LjktMi45IDQuMy0yMSAxMC42LTQxLjkgOS44LTYzLjVsLS4zLTkuNWMtMS40LTM0LjItMTAuOS0zOC41LTM0LjgtNTguNi0xLjEtMS4xLTIuNi0yLjYtMy43LTQgMi4yLTEuNCAxLjEtMSA0LjYtMS43IDg4LjUgMCA1Ni4zIDE4My42IDExMS41IDIyOS45IDMzLjEtMTUgNzIuNS0yNy45IDEwMy41LTQ3LjItMjktMjUuNi01Mi42LTQ1LjctNzIuNy03OS45em0tMTk2LjIgNDYuMXYyNy4ybDExLjgtMy40LTIuOS0yMy44em0tNjguNy0xNTAuNGwyNC4xIDYxLjIgMjEtMTMuOC0zMS4zLTUwLjl6bTg0LjQgMTU0LjlsMiAxMi40YzktMS41IDU4LjQtNi42IDU4LjQtMTQuMSAwLTEuNC0uNi0zLjItLjktNC42LTI2LjggMC0zNi45IDMuOC01OS41IDYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGllZFBpcGVySGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyNC45Yy04MC44IDUzLjYtODkuNCA5Mi41LTk2LjQgMTA0LjQtNi43IDEyLjItMTEuNyA2MC4zLTIzLjMgODMuNi0xMS43IDIzLjYtNTQuMiA0Mi4yLTY2LjEgNTAtMTEuNyA3LjgtMjguMyAzOC4xLTQxLjkgNjQuMi0xMDguMS00LjQtMTY3LjQgMzguOC0yNTkuMiA5My42IDI5LjQtOS43IDQzLjMtMTYuNyA0My4zLTE2LjcgOTQuMi0zNiAxMzkuMy02OC4zIDI4MS4xLTQ5LjIgMS4xIDAgMS45LjYgMi44LjggMy45IDIuMiA1LjMgNi45IDMuMSAxMC44bC01My45IDk1LjhjLTIuNSA0LjctNy44IDcuMi0xMy4xIDYuMS0xMjYuOC0yMy44LTIyNi45IDE3LjMtMzE4LjkgMTguNkMyNC4xIDQ4OCAwIDQ1My40IDAgNDUxLjhjMC0xLjEuNi0xLjcgMS43LTEuNyAwIDAgMzguMyAwIDEwMy4xLTE1LjNDMTc4LjQgMjk0LjUgMjQ0IDI0NS40IDMxNS40IDI0NS40YzAgMCA3MS43IDAgOTAuNiA2MS45IDIyLjgtMzkuNyAyOC4zLTQ5LjIgMjguMy00OS4yIDUuMy05LjQgMzUtNzcuMiA4Ni40LTE0MS40IDUxLjUtNjQgOTAuNC03OS45IDExOS4zLTkxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlclBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNS4zIDE3NC42YzAgMjEuMS0xNC4yIDM4LjEtMzEuNyAzOC4xLTcuMSAwLTEyLjgtMS4yLTE3LjItMy43di02OGM0LjQtMi43IDEwLjEtNC4yIDE3LjItNC4yIDE3LjUgMCAzMS43IDE2LjkgMzEuNyAzNy44em01Mi42IDY3Yy03LjEgMC0xMi44IDEuNS0xNy4yIDQuMnY2OGM0LjQgMi41IDEwLjEgMy43IDE3LjIgMy43IDE3LjQgMCAzMS43LTE2LjkgMzEuNy0zNy44IDAtMjEuMS0xNC4zLTM4LjEtMzEuNy0zOC4xek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE4NSAyNTUuMWM0MSAwIDc0LjItMzUuNiA3NC4yLTc5LjYgMC00NC0zMy4yLTc5LjYtNzQuMi03OS42LTEyIDAtMjQuMSAzLjItMzQuNiA4LjhoLTQ1LjdWMzExbDUxLjgtMTAuMXYtNTAuNmM4LjYgMy4xIDE4LjEgNC44IDI4LjUgNC44em0xNTguNCAyNS4zYzAtNDQtMzMuMi03OS42LTczLjktNzkuNi0zLjIgMC02LjQuMi05LjYuNy0zLjcgMTIuNS0xMC4xIDIzLjgtMTkuMiAzMy40LTEzLjggMTUtMzIuMiAyMy44LTUxLjggMjQuOFY0MTZsNTEuOC0xMC4xdi01MC42YzguNiAzLjIgMTguMiA0LjcgMjguNyA0LjcgNDAuOCAwIDc0LTM1LjYgNzQtNzkuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGllZFBpcGVyU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDQxOUwwIDQ3OS4ybC44LTMyOEMuOCA4NS4zIDU0IDMyIDEyMCAzMmgzMjcuMmMtOTMgMjguOS0xODkuOSA5NC4yLTI1My45IDE2OC42QzEyMi43IDI4MiA4Mi42IDMzOCAzMiA0MTlNNDQ4IDMyUzMwNS4yIDk4LjggMjYxLjYgMTk5LjFjLTIzLjIgNTMuNi0yOC45IDExOC4xLTcxIDE1OC42LTI4LjkgMjcuOC02OS44IDM4LjItMTA1LjMgNTYuMy0yMy4yIDEyLTY2LjQgNDAuNS04NC45IDY2aDMyOC40YzY2IDAgMTE5LjMtNTMuMyAxMTkuMy0xMTkuMi0uMSAwLS4xLTMyOC44LS4xLTMyOC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWVkUGlwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU1LjkzLDIzLjJDNDI5LjIzLDMwLDM4Ny43OSw1MS42OSwzNDEuMzUsOTAuNjZBMjA2LDIwNiwwLDAsMCwyNDAsNjRDMTI1LjEzLDY0LDMyLDE1Ny4xMiwzMiwyNzJzOTMuMTMsMjA4LDIwOCwyMDgsMjA4LTkzLjEzLDIwOC0yMDhhMjA3LjI1LDIwNy4yNSwwLDAsMC01OC43NS0xNDQuODEsMTU1LjM1LDE1NS4zNSwwLDAsMC0xNywyNy40QTE3Ni4xNiwxNzYuMTYsMCwwLDEsNDE3LjEsMjcyYzAsOTcuNjYtNzkuNDQsMTc3LjExLTE3Ny4wOSwxNzcuMTFhMTc1LjgxLDE3NS44MSwwLDAsMS04Ny42My0yMy40YzgyLjk0LTEwNy4zMywxNTAuNzktMzcuNzcsMTg0LjMxLTIyNi42NSw1Ljc5LTMyLjYyLDI4LTk0LjI2LDEyNi4yMy0xNjAuMThDNDcxLDMzLjQ1LDQ2NS4zNSwyMC44LDQ1NS45MywyMy4yWk0xMjUsNDA2LjRBMTc2LjY2LDE3Ni42NiwwLDAsMSw2Mi45LDI3MkM2Mi45LDE3NC4zNCwxNDIuMzUsOTQuOSwyNDAsOTQuOWExNzQsMTc0LDAsMCwxLDc2LjYzLDE3Ljc1QzI1MC42NCwxNzQuNzYsMTg5Ljc3LDI2NS41MiwxMjUsNDA2LjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbnRlcmVzdFAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA0IDYuNUMxMDEuNCA2LjUgMCA3NC45IDAgMTg1LjYgMCAyNTYgMzkuNiAyOTYgNjMuNiAyOTZjOS45IDAgMTUuNi0yNy42IDE1LjYtMzUuNCAwLTkuMy0yMy43LTI5LjEtMjMuNy02Ny44IDAtODAuNCA2MS4yLTEzNy40IDE0MC40LTEzNy40IDY4LjEgMCAxMTguNSAzOC43IDExOC41IDEwOS44IDAgNTMuMS0yMS4zIDE1Mi43LTkwLjMgMTUyLjctMjQuOSAwLTQ2LjItMTgtNDYuMi00My44IDAtMzcuOCAyNi40LTc0LjQgMjYuNC0xMTMuNCAwLTY2LjItOTMuOS01NC4yLTkzLjkgMjUuOCAwIDE2LjggMi4xIDM1LjQgOS42IDUwLjctMTMuOCA1OS40LTQyIDE0Ny45LTQyIDIwOS4xIDAgMTguOSAyLjcgMzcuNSA0LjUgNTYuNCAzLjQgMy44IDEuNyAzLjQgNi45IDEuNSA1MC40LTY5IDQ4LjYtODIuNSA3MS40LTE3Mi44IDEyLjMgMjMuNCA0NC4xIDM2IDY5LjMgMzYgMTA2LjIgMCAxNTMuOS0xMDMuNSAxNTMuOS0xOTYuOEMzODQgNzEuMyAyOTguMiA2LjUgMjA0IDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGludGVyZXN0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhIMTU0LjRjOS44LTE2LjQgMjIuNC00MCAyNy40LTU5LjMgMy0xMS41IDE1LjMtNTguNCAxNS4zLTU4LjQgOCAxNS4zIDMxLjQgMjguMiA1Ni4zIDI4LjIgNzQuMSAwIDEyNy40LTY4LjEgMTI3LjQtMTUyLjcgMC04MS4xLTY2LjItMTQxLjgtMTUxLjQtMTQxLjgtMTA2IDAtMTYyLjIgNzEuMS0xNjIuMiAxNDguNiAwIDM2IDE5LjIgODAuOCA0OS44IDk1LjEgNC43IDIuMiA3LjEgMS4yIDguMi0zLjMuOC0zLjQgNS0yMC4xIDYuOC0yNy44LjYtMi41LjMtNC42LTEuNy03LTEwLjEtMTIuMy0xOC4zLTM0LjktMTguMy01NiAwLTU0LjIgNDEtMTA2LjYgMTEwLjktMTA2LjYgNjAuMyAwIDEwMi42IDQxLjEgMTAyLjYgOTkuOSAwIDY2LjQtMzMuNSAxMTIuNC03Ny4yIDExMi40LTI0LjEgMC00Mi4xLTE5LjktMzYuNC00NC40IDYuOS0yOS4yIDIwLjMtNjAuNyAyMC4zLTgxLjggMC01My03NS41LTQ1LjctNzUuNSAyNSAwIDIxLjcgNy4zIDM2LjUgNy4zIDM2LjUtMzEuNCAxMzIuOC0zNi4xIDEzNC41LTI5LjYgMTkyLjZsMi4yLjhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGludGVyZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4LTI1LjYgMC01MC4yLTMuOS03My40LTExLjEgMTAuMS0xNi41IDI1LjItNDMuNSAzMC44LTY1IDMtMTEuNiAxNS40LTU5IDE1LjQtNTkgOC4xIDE1LjQgMzEuNyAyOC41IDU2LjggMjguNSA3NC44IDAgMTI4LjctNjguOCAxMjguNy0xNTQuMyAwLTgxLjktNjYuOS0xNDMuMi0xNTIuOS0xNDMuMi0xMDcgMC0xNjMuOSA3MS44LTE2My45IDE1MC4xIDAgMzYuNCAxOS40IDgxLjcgNTAuMyA5Ni4xIDQuNyAyLjIgNy4yIDEuMiA4LjMtMy4zLjgtMy40IDUtMjAuMyA2LjktMjguMS42LTIuNS4zLTQuNy0xLjctNy4xLTEwLjEtMTIuNS0xOC4zLTM1LjMtMTguMy01Ni42IDAtNTQuNyA0MS40LTEwNy42IDExMi0xMDcuNiA2MC45IDAgMTAzLjYgNDEuNSAxMDMuNiAxMDAuOSAwIDY3LjEtMzMuOSAxMTMuNi03OCAxMTMuNi0yNC4zIDAtNDIuNi0yMC4xLTM2LjctNDQuOCA3LTI5LjUgMjAuNS02MS4zIDIwLjUtODIuNiAwLTE5LTEwLjItMzQuOS0zMS40LTM0LjktMjQuOSAwLTQ0LjkgMjUuNy00NC45IDYwLjIgMCAyMiA3LjQgMzYuOCA3LjQgMzYuOHMtMjQuNSAxMDMuOC0yOSAxMjMuMmMtNSAyMS40LTMgNTEuNi0uOSA3MS4yQzY1LjQgNDUwLjkgMCAzNjEuMSAwIDI1NiAwIDExOSAxMTEgOCAyNDggOHMyNDggMTExIDI0OCAyNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYXlzdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3MC45IDM3Mi4zYy0xMS4zIDE0LjItMzguOCAyNC4zLTM4LjggMjQuM0wzMjcgNDcwLjJ2LTU0LjNsMTUwLjktNTMuOGMxNy4xLTYuMSAxOS44LTE0LjggNS44LTE5LjQtMTMuOS00LjYtMzkuMS0zLjMtNTYuMiAyLjlMMzI3IDM4MS4xdi01Ni40YzIzLjItNy44IDQ3LjEtMTMuNiA3NS43LTE2LjggNDAuOS00LjUgOTAuOS42IDEzMC4yIDE1LjUgNDQuMiAxNCA0OS4yIDM0LjcgMzggNDguOXptLTIyNC40LTkyLjV2LTEzOWMwLTE2LjMtMy0zMS4zLTE4LjMtMzUuNi0xMS43LTMuOC0xOSA3LjEtMTkgMjMuNHYzNDcuOWwtOTMuOC0yOS44VjMyYzM5LjkgNy40IDk4IDI0LjkgMTI5LjIgMzUuNEM0MjQuMSA5NC43IDQ1MSAxMjguNyA0NTEgMjA1LjJjMCA3NC41LTQ2IDEwMi44LTEwNC41IDc0LjZ6TTQzLjIgNDEwLjJjLTQ1LjQtMTIuOC01My0zOS41LTMyLjMtNTQuOCAxOS4xLTE0LjIgNTEuNy0yNC45IDUxLjctMjQuOWwxMzQuNS00Ny44djU0LjVsLTk2LjggMzQuNmMtMTcuMSA2LjEtMTkuNyAxNC44LTUuOCAxOS40IDEzLjkgNC42IDM5LjEgMy4zIDU2LjItMi45bDQ2LjQtMTYuOXY0OC44Yy01MS42IDkuMy0xMDEuNCA3LjMtMTUzLjktMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByb2R1Y3RIdW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi4zIDIxOC44YzAgMjAuNS0xNi43IDM3LjItMzcuMiAzNy4yaC03MC4zdi03NC40aDcwLjNjMjAuNSAwIDM3LjIgMTYuNyAzNy4yIDM3LjJ6TTUwNCAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OHptLTEyOC4xLTM3LjJjMC00Ny45LTM4LjktODYuOC04Ni44LTg2LjhIMTY5LjJ2MjQ4aDQ5LjZ2LTc0LjRoNzAuM2M0Ny45IDAgODYuOC0zOC45IDg2LjgtODYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHVzaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MzIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNyAxMTEuOWwtOTguNS05IDE0LTMzLjRjMTAuNC0yMy41LTEwLjgtNDAuNC0yOC43LTM3TDIyLjUgNzYuOWMtMTUuMSAyLjctMjYgMTguMy0yMS40IDM2LjZsMTA1LjEgMzQ4LjNjNi41IDIxLjMgMzYuNyAyNC4yIDQ3LjcgN2wzNS4zLTgwLjggMjM1LjItMjMxLjNjMTYuNC0xNi44IDQuMy00Mi45LTE3LjQtNDQuOHpNMjk3LjYgNTMuNmM1LjEtLjcgNy41IDIuNSA1LjIgNy40TDI4NiAxMDAuOSAxMDguNiA4NC42bDE4OS0zMXpNMjIuNyAxMDcuOWMtMy4xLTUuMSAxLTEwIDYuMS05LjFsMjQ4LjcgMjIuNy05Ni45IDIzMC43TDIyLjcgMTA3Ljl6TTEzNiA0NTYuNGMtMi42IDQtNy45IDMuMS05LjQtMS4yTDQzLjUgMTc5LjdsMTI3LjcgMTk3LjZjLTcgMTUtMzUuMiA3OS4xLTM1LjIgNzkuMXptMjcyLjgtMzE0LjVMMjEwLjEgMzM3LjNsODkuNy0yMTMuNyAxMDYuNCA5LjdjNCAxLjEgNS43IDUuMyAyLjYgOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQeXRob24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM5LjggMjAwLjVjLTcuNy0zMC45LTIyLjMtNTQuMi01My40LTU0LjJoLTQwLjF2NDcuNGMwIDM2LjgtMzEuMiA2Ny44LTY2LjggNjcuOEgxNzIuN2MtMjkuMiAwLTUzLjQgMjUtNTMuNCA1NC4zdjEwMS44YzAgMjkgMjUuMiA0NiA1My40IDU0LjMgMzMuOCA5LjkgNjYuMyAxMS43IDEwNi44IDAgMjYuOS03LjggNTMuNC0yMy41IDUzLjQtNTQuM3YtNDAuN0gyMjYuMnYtMTMuNmgxNjAuMmMzMS4xIDAgNDIuNi0yMS43IDUzLjQtNTQuMiAxMS4yLTMzLjUgMTAuNy02NS43IDAtMTA4LjZ6TTI4Ni4yIDQwNGMxMS4xIDAgMjAuMSA5LjEgMjAuMSAyMC4zIDAgMTEuMy05IDIwLjQtMjAuMSAyMC40LTExIDAtMjAuMS05LjItMjAuMS0yMC40LjEtMTEuMyA5LjEtMjAuMyAyMC4xLTIwLjN6TTE2Ny44IDI0OC4xaDEwNi44YzI5LjcgMCA1My40LTI0LjUgNTMuNC01NC4zVjkxLjljMC0yOS0yNC40LTUwLjctNTMuNC01NS42LTM1LjgtNS45LTc0LjctNS42LTEwNi44LjEtNDUuMiA4LTUzLjQgMjQuNy01My40IDU1LjZ2NDAuN2gxMDYuOXYxMy42aC0xNDdjLTMxLjEgMC01OC4zIDE4LjctNjYuOCA1NC4yLTkuOCA0MC43LTEwLjIgNjYuMSAwIDEwOC42IDcuNiAzMS42IDI1LjcgNTQuMiA1Ni44IDU0LjJIMTAxdi00OC44YzAtMzUuMyAzMC41LTY2LjQgNjYuOC02Ni40em0tNi43LTE0Mi42Yy0xMS4xIDAtMjAuMS05LjEtMjAuMS0yMC4zLjEtMTEuMyA5LTIwLjQgMjAuMS0yMC40IDExIDAgMjAuMSA5LjIgMjAuMSAyMC40cy05IDIwLjMtMjAuMSAyMC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRcSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzMuNzU0IDQyMC40NDVjLTExLjUyNiAxLjM5My00NC44Ni01Mi43NDEtNDQuODYtNTIuNzQxIDAgMzEuMzQ1LTE2LjEzNiA3Mi4yNDctNTEuMDUxIDEwMS43ODYgMTYuODQyIDUuMTkyIDU0Ljg0MyAxOS4xNjcgNDUuODAzIDM0LjQyMS03LjMxNiAxMi4zNDMtMTI1LjUxIDcuODgxLTE1OS42MzIgNC4wMzctMzQuMTIyIDMuODQ0LTE1Mi4zMTYgOC4zMDYtMTU5LjYzMi00LjAzNy05LjA0NS0xNS4yNSAyOC45MTgtMjkuMjE0IDQ1Ljc4My0zNC40MTUtMzQuOTItMjkuNTM5LTUxLjA1OS03MC40NDUtNTEuMDU5LTEwMS43OTIgMCAwLTMzLjMzNCA1NC4xMzQtNDQuODU5IDUyLjc0MS01LjM3LS42NS0xMi40MjQtMjkuNjQ0IDkuMzQ3LTk5LjcwNCAxMC4yNjEtMzMuMDI0IDIxLjk5NS02MC40NzggNDAuMTQ0LTEwNS43NzlDNjAuNjgzIDk4LjA2MyAxMDguOTgyLjAwNiAyMjQgMGMxMTMuNzM3LjAwNiAxNjMuMTU2IDk2LjEzMyAxNjAuMjY0IDIxNC45NjMgMTguMTE4IDQ1LjIyMyAyOS45MTIgNzIuODUgNDAuMTQ0IDEwNS43NzggMjEuNzY4IDcwLjA2IDE0LjcxNiA5OS4wNTMgOS4zNDYgOTkuNzA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdWluc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEzLjYgNDc0LjZoLTFhMTU4LjEgMTU4LjEgMCAwIDEgMC0zMTYuMmM5NC45IDAgMTY4LjIgODMuMSAxNTcgMTc2LjYgNCA1LjEgOC4yIDkuNiAxMS4yIDE1LjMgMTMuNC0zMC4zIDIwLjMtNjIuNCAyMC4zLTk3LjdDNTAxLjEgMTE3LjUgMzkxLjYgOCAyNTYuNSA4UzEyIDExNy41IDEyIDI1Mi42czEwOS41IDI0NC42IDI0NC41IDI0NC42YTIzNy4zNiAyMzcuMzYgMCAwIDAgNzAuNC0xMC4xYy01LjItMy41LTguOS04LjEtMTMuMy0xMi41em0tLjEtLjFsLjQuMXptNzguNC0xNjguOWE5OS4yIDk5LjIgMCAxIDAgOTkuMiA5OS4yIDk5LjE4IDk5LjE4IDAgMCAwLTk5LjItOTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVvcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjUgMzg2LjdoLTI5LjNjLTEuNSAxMy41LTEwLjUgMzAuOC0zMyAzMC44LTIwLjUgMC0zNS4zLTE0LjItNDkuNS0zNS44IDQ0LjItMzQuMiA3NC43LTg3LjUgNzQuNy0xNTNDNDAzLjUgMTExLjIgMzA2LjggMzIgMjA1IDMyIDEwNS4zIDMyIDcuMyAxMTEuNyA3LjMgMjI4LjdjMCAxMzQuMSAxMzEuMyAyMjEuNiAyNDkgMTg5QzI3NiA0NTEuMyAzMDIgNDgwIDM1MS41IDQ4MGM4MS44IDAgOTAuOC03NS4zIDg5LTkzLjN6TTI5NyAzMjkuMkMyNzcuNSAzMDAgMjUzLjMgMjc3IDIwNS41IDI3N2MtMzAuNSAwLTU0LjMgMTAtNjkgMjIuOGwxMi4yIDI0LjNjNi4yLTMgMTMtNCAxOS44LTQgMzUuNSAwIDUzLjcgMzAuOCA2OS4yIDYxLjMtMTAgMy0yMC43IDQuMi0zMi43IDQuMi03NSAwLTEwNy41LTUzLTEwNy41LTE1Ni43Qzk3LjUgMTI0LjUgMTMwIDcxIDIwNSA3MWM3Ni4yIDAgMTA4LjcgNTMuNSAxMDguNyAxNTcuNy4xIDQxLjgtNS40IDc1LjYtMTYuNyAxMDAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUlByb2plY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU4MSA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTgxIDIyNi42QzU4MSAxMTkuMSA0NTAuOSAzMiAyOTAuNSAzMlMwIDExOS4xIDAgMjI2LjZDMCAzMjIuNCAxMDMuMyA0MDIgMjM5LjQgNDE4LjFWNDgwaDk5LjF2LTYxLjVjMjQuMy0yLjcgNDcuNi03LjQgNjkuNC0xMy45TDQ0OCA0ODBoMTEybC02Ny40LTExMy43YzU0LjUtMzUuNCA4OC40LTg0LjkgODguNC0xMzkuN3ptLTQ2Ni44IDE0LjVjMC03My41IDk4LjktMTMzIDIyMC44LTEzM3MyMTEuOSA0MC43IDIxMS45IDEzM2MwIDUwLjEtMjYuNSA4NS03MC4zIDEwNi40LTIuNC0xLjYtNC43LTIuOS02LjQtMy43LTEwLjItNS4yLTI3LjgtMTAuNS0yNy44LTEwLjVzODYuNi02LjQgODYuNi05Mi43LTkwLjYtODcuOS05MC42LTg3LjloLTE5OVYzNjFjLTc0LjEtMjEuNS0xMjUuMi02Ny4xLTEyNS4yLTExOS45em0yMjUuMSAzOC4zdi01NS42YzU3LjggMCA4Ny44LTYuOCA4Ny44IDI3LjMgMCAzNi41LTM4LjIgMjguMy04Ny44IDI4LjN6bS0uOSA3Mi41SDM2NWMxMC44IDAgMTguOSAxMS43IDI0IDE5LjItMTYuMSAxLjktMzMgMi44LTUwLjYgMi45di0yMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYXNwYmVycnlQaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDA3IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIgMjMyLjVsLTMuNy02LjVjLjEtNDYuNC0yMS40LTY1LjMtNDYuNS03OS43IDcuNi0yIDE1LjQtMy42IDE3LjYtMTMuMiAxMy4xLTMuMyAxNS44LTkuNCAxNy4xLTE1LjggMy40LTIuMyAxNC44LTguNyAxMy42LTE5LjcgNi40LTQuNCAxMC0xMC4xIDguMS0xOC4xIDYuOS03LjUgOC43LTEzLjcgNS44LTE5LjQgOC4zLTEwLjMgNC42LTE1LjYgMS4xLTIwLjkgNi4yLTExLjIuNy0yMy4yLTE2LjYtMjEuMi02LjktMTAuMS0yMS45LTcuOC0yNC4yLTcuOC0yLjYtMy4yLTYtNi0xNi41LTQuNy02LjgtNi4xLTE0LjQtNS0yMi4zLTIuMS05LjMtNy4zLTE1LjUtMS40LTIyLjYuOEMyNzEuNi42IDI2OSA1LjUgMjYzLjUgNy42Yy0xMi4zLTIuNi0xNi4xIDMtMjIgOC45bC02LjktLjFjLTE4LjYgMTAuOC0yNy44IDMyLjgtMzEuMSA0NC4xLTMuMy0xMS4zLTEyLjUtMzMuMy0zMS4xLTQ0LjFsLTYuOS4xYy01LjktNS45LTkuNy0xMS41LTIyLTguOS01LjYtMi04LjEtNy0xOS40LTMuNC00LjYtMS40LTguOS00LjQtMTMuOS00LjMtMi42LjEtNS41IDEtOC43IDMuNS03LjktMy0xNS41LTQtMjIuMyAyLjEtMTAuNS0xLjMtMTQgMS40LTE2LjUgNC43LTIuMyAwLTE3LjMtMi4zLTI0LjIgNy44QzIxLjIgMTYgMTUuOCAyOCAyMiAzOS4yYy0zLjUgNS40LTcuMiAxMC43IDEuMSAyMC45LTIuOSA1LjctMS4xIDExLjkgNS44IDE5LjQtMS44IDggMS44IDEzLjcgOC4xIDE4LjEtMS4yIDExIDEwLjIgMTcuNCAxMy42IDE5LjcgMS4zIDYuNCA0IDEyLjQgMTcuMSAxNS44IDIuMiA5LjUgMTAgMTEuMiAxNy42IDEzLjItMjUuMSAxNC40LTQ2LjYgMzMuMy00Ni41IDc5LjdsLTMuNyA2LjVjLTI4LjggMTcuMi01NC43IDcyLjctMTQuMiAxMTcuNyAyLjYgMTQuMSA3LjEgMjQuMiAxMSAzNS40IDUuOSA0NS4yIDQ0LjUgNjYuMyA1NC42IDY4LjggMTQuOSAxMS4yIDMwLjggMjEuOCA1Mi4yIDI5LjJDMTU5IDUwNC4yIDE4MSA1MTIgMjAzIDUxMmgxYzIyLjEgMCA0NC03LjggNjQuMi0yOC40IDIxLjUtNy40IDM3LjMtMTggNTIuMi0yOS4yIDEwLjItMi41IDQ4LjctMjMuNiA1NC42LTY4LjggMy45LTExLjIgOC40LTIxLjMgMTEtMzUuNCA0MC42LTQ1LjEgMTQuNy0xMDAuNS0xNC0xMTcuN3ptLTIyLjItOGMtMS41IDE4LjctOTguOS02NS4xLTgyLjEtNjcuOSA0NS43LTcuNSA4My42IDE5LjIgODIuMSA2Ny45em0tNDMgOTMuMWMtMjQuNSAxNS44LTU5LjggNS42LTc4LjgtMjIuOHMtMTQuNi02NC4yIDkuOS04MGMyNC41LTE1LjggNTkuOC01LjYgNzguOCAyMi44czE0LjYgNjQuMi05LjkgODB6TTIzOC45IDI5LjNjLjggNC4yIDEuOCA2LjggMi45IDcuNiA1LjQtNS44IDkuOC0xMS43IDE2LjgtMTcuMyAwIDMuMy0xLjcgNi44IDIuNSA5LjQgMy43LTUgOC44LTkuNSAxNS41LTEzLjMtMy4yIDUuNi0uNiA3LjMgMS4yIDkuNiA1LjEtNC40IDEwLTguOCAxOS40LTEyLjMtMi42IDMuMS02LjIgNi4yLTIuNCA5LjggNS4zLTMuMyAxMC42LTYuNiAyMy4xLTguOS0yLjggMy4xLTguNyA2LjMtNS4xIDkuNCA2LjYtMi41IDE0LTQuNCAyMi4xLTUuNC0zLjkgMy4yLTcuMSA2LjMtMy45IDguOCA3LjEtMi4yIDE2LjktNS4xIDI2LjQtMi42bC02IDYuMWMtLjcuOCAxNC4xLjYgMjMuOS44LTMuNiA1LTcuMiA5LjctOS4zIDE4LjIgMSAxIDUuOC40IDEwLjQgMC00LjcgOS45LTEyLjggMTIuMy0xNC43IDE2LjYgMi45IDIuMiA2LjggMS42IDExLjIuMS0zLjQgNi45LTEwLjQgMTEuNy0xNiAxNy4zIDEuNCAxIDMuOSAxLjYgOS43LjktNS4yIDUuNS0xMS40IDEwLjUtMTguOCAxNSAxLjMgMS41IDUuOCAxLjUgMTAgMS42LTYuNyA2LjUtMTUuMyA5LjktMjMuNCAxNC4yIDQgMi43IDYuOSAyLjEgMTAgMi4xLTUuNyA0LjctMTUuNCA3LjEtMjQuNCAxMCAxLjcgMi43IDMuNCAzLjQgNy4xIDQuMS05LjUgNS4zLTIzLjIgMi45LTI3IDUuNi45IDIuNyAzLjYgNC40IDYuNyA1LjgtMTUuNC45LTU3LjMtLjYtNjUuNC0zMi4zIDE1LjctMTcuMyA0NC40LTM3LjUgOTMuNy02Mi42LTM4LjQgMTIuOC03MyAzMC0xMDIgNTMuNS0zNC4zLTE1LjktMTAuOC01NS45IDUuOC03MS44em0tMzQuNCAxMTQuNmMyNC4yLS4zIDU0LjEgMTcuOCA1NCAzNC43LS4xIDE1LTIxIDI3LjEtNTMuOCAyNi45LTMyLjEtLjQtNTMuNy0xNS4yLTUzLjYtMjkuOCAwLTExLjkgMjYuMi0zMi41IDUzLjQtMzEuOHptLTEyMy0xMi44YzMuNy0uNyA1LjQtMS41IDcuMS00LjEtOS0yLjgtMTguNy01LjMtMjQuNC0xMCAzLjEgMCA2IC43IDEwLTIuMS04LjEtNC4zLTE2LjctNy43LTIzLjQtMTQuMiA0LjItLjEgOC43IDAgMTAtMS42LTcuNC00LjUtMTMuNi05LjUtMTguOC0xNSA1LjguNyA4LjMuMSA5LjctLjktNS42LTUuNi0xMi43LTEwLjQtMTYtMTcuMyA0LjMgMS41IDguMyAyIDExLjItLjEtMS45LTQuMi0xMC02LjctMTQuNy0xNi42IDQuNi40IDkuNCAxIDEwLjQgMC0yLjEtOC41LTUuOC0xMy4zLTkuMy0xOC4yIDkuOC0uMSAyNC42IDAgMjMuOS0uOGwtNi02LjFjOS41LTIuNSAxOS4zLjQgMjYuNCAyLjYgMy4yLTIuNS0uMS01LjYtMy45LTguOCA4LjEgMS4xIDE1LjQgMi45IDIyLjEgNS40IDMuNS0zLjEtMi4zLTYuMy01LjEtOS40IDEyLjUgMi4zIDE3LjggNS42IDIzLjEgOC45IDMuOC0zLjYuMi02LjctMi40LTkuOCA5LjQgMy40IDE0LjMgNy45IDE5LjQgMTIuMyAxLjctMi4zIDQuNC00IDEuMi05LjYgNi43IDMuOCAxMS44IDguMyAxNS41IDEzLjMgNC4xLTIuNiAyLjUtNi4yIDIuNS05LjQgNyA1LjYgMTEuNCAxMS41IDE2LjggMTcuMyAxLjEtLjggMi0zLjQgMi45LTcuNiAxNi42IDE1LjkgNDAuMSA1NS45IDYgNzEuOC0yOS0yMy41LTYzLjYtNDAuNy0xMDItNTMuNSA0OS4zIDI1IDc4IDQ1LjMgOTMuNyA2Mi42LTggMzEuOC01MCAzMy4yLTY1LjQgMzIuMyAzLjEtMS40IDUuOC0zLjIgNi43LTUuOC00LTIuOC0xNy42LS40LTI3LjItNS42em02MC4xIDI0LjFjMTYuOCAyLjgtODAuNiA4Ni41LTgyLjEgNjcuOS0xLjUtNDguNyAzNi41LTc1LjUgODIuMS02Ny45ek0zOC4yIDM0MmMtMjMuNy0xOC44LTMxLjMtNzMuNyAxMi42LTk4LjMgMjYuNS03IDkgMTA3LjgtMTIuNiA5OC4zem05MSA5OC4yYy0xMy4zIDcuOS00NS44IDQuNy02OC44LTI3LjktMTUuNS0yNy40LTEzLjUtNTUuMi0yLjYtNjMuNCAxNi4zLTkuOCA0MS41IDMuNCA2MC45IDI1LjYgMTYuOSAyMCAyNC42IDU1LjMgMTAuNSA2NS43em0tMjYuNC0xMTkuN2MtMjQuNS0xNS44LTI4LjktNTEuNi05LjktODBzNTQuMy0zOC42IDc4LjgtMjIuOCAyOC45IDUxLjYgOS45IDgwYy0xOS4xIDI4LjQtNTQuNCAzOC42LTc4LjggMjIuOHpNMjA1IDQ5NmMtMjkuNCAxLjItNTguMi0yMy43LTU3LjgtMzIuMy0uNC0xMi43IDM1LjgtMjIuNiA1OS4zLTIyIDIzLjctMSA1NS42IDcuNSA1NS43IDE4LjkuNSAxMS0yOC44IDM1LjktNTcuMiAzNS40em01OC45LTEyNC45Yy4yIDI5LjctMjYuMiA1My44LTU4LjggNTQtMzIuNi4yLTU5LjItMjMuOC01OS40LTUzLjR2LS42Yy0uMi0yOS43IDI2LjItNTMuOCA1OC44LTU0IDMyLjYtLjIgNTkuMiAyMy44IDU5LjQgNTMuNHYuNnptODIuMiA0Mi43Yy0yNS4zIDM0LjYtNTkuNiAzNS45LTcyLjMgMjYuMy0xMy4zLTEyLjQtMy4yLTUwLjkgMTUuMS03MiAyMC45LTIzLjMgNDMuMy0zOC41IDU4LjktMjYuNiAxMC41IDEwLjMgMTYuNyA0OS4xLTEuNyA3Mi4zem0yMi45LTczLjJjLTIxLjUgOS40LTM5LTEwNS4zLTEyLjYtOTguMyA0My45IDI0LjcgMzYuMyA3OS42IDEyLjYgOTguM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmF2ZWxyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTguMjUyLDIzNC4yMjNjLTEuMjA4LTEwLjM0LTEuNy0yMC44MjYtMy43NDYtMzFhMzEwLjMwNiwzMTAuMzA2LDAsMCwwLTkuNjIyLTM2LjYsMTg0LjA2OCwxODQuMDY4LDAsMCwwLTMwLjg3NC01Ny41LDI1MS4xNTQsMjUxLjE1NCwwLDAsMC0xOC44MTgtMjEuNjg5LDIzNy4zNjIsMjM3LjM2MiwwLDAsMC00Ny4xMTMtMzYuMTE2QTI0MC44LDI0MC44LDAsMCwwLDMzMS4zNTYsMjYuNjVjLTExLjAxOC0zLjEtMjIuMjcyLTUuNDMxLTMzLjUxNS03LjYxNS02Ljc4LTEuMzE0LTEzLjc0OS0xLjY2Ny0yMC42MjctMi40ODItLjMxNi0uMDM2LS42LS4zNTgtLjktLjU1M3EtMTYuMTQzLjAwOS0zMi4yODguMDA2Yy0yLjQxLjM4OS00LjgwOC45MjUtNy4yMzYsMS4xNWExNzkuMzMxLDE3OS4zMzEsMCwwLDAtMzQuMjU2LDcuMSwyMjEuNSwyMjEuNSwwLDAsMC0zOS43NjgsMTYuMzU1LDI4MS4zODUsMjgxLjM4NSwwLDAsMC0zOC4wOCwyNC4xNThjLTYuMTY3LDQuNjEtMTIuMjY4LDkuMzYtMTcuOTc0LDE0LjUxOEM5Ni41MzksODguNDk0LDg2LjM0LDk3LjcyLDc2Ljc4NSwxMDcuNTU1YTI0My44NzgsMjQzLjg3OCwwLDAsMC0zMy42NDgsNDMuOTUsMjA2LjQ4OCwyMDYuNDg4LDAsMCwwLTIwLjQ5NCw0NC42LDE5OC4yLDE5OC4yLDAsMCwwLTcuNjkxLDM0Ljc1OUEyMDEuMTMsMjAxLjEzLDAsMCwwLDEzLjQsMjY2LjM4NWEyOTkuNzE2LDI5OS43MTYsMCwwLDAsNC40MjUsNDAuMjQsMjI2Ljg2NSwyMjYuODY1LDAsMCwwLDE2LjczLDUzLjMsMjEwLjU0MywyMTAuNTQzLDAsMCwwLDI0LDM5LjUyOCwyMTMuNTg5LDIxMy41ODksMCwwLDAsMjYuMzU4LDI4LjQxNkEyNTEuMzEzLDI1MS4zMTMsMCwwLDAsMTI2LjcsNDU4LjQ1NWEyODcuODMxLDI4Ny44MzEsMCwwLDAsNTUuOSwyNS4yNzcsMjY5LjUsMjY5LjUsMCwwLDAsNDAuNjQxLDkuODM1YzYuMDcxLDEuMDEsMTIuMjc1LDEuMjUzLDE4LjQxMiwxLjg3M2E0LjE0OSw0LjE0OSwwLDAsMSwxLjE5LjU2aDMyLjI4OWMyLjUwNy0uMzg5LDUtLjkzNyw3LjUyNy0xLjE0MywxNi4zMzYtMS4zMzIsMzIuMTA3LTUuMzM1LDQ3LjQ4OS0xMC43MTdBMjE5Ljk5MiwyMTkuOTkyLDAsMCwwLDM3OS4xLDQ2MC4zMjJjOS43NDktNi40NDcsMTkuMzk1LTEzLjA3NywyOC43MzctMjAuMSw1Ljc4NS00LjM0OCwxMC45ODgtOS41LDE2LjMtMTQuNDU3LDMuOTY0LTMuNyw3Ljc2NC03LjU3OCwxMS41MS0xMS41YTIzMi4xNjIsMjMyLjE2MiwwLDAsMCwzMS40MjctNDEuNjM5YzkuNTQyLTE2LjA0NSwxNy4zNTUtMzIuOTA1LDIyLjMtNTAuOTI2LDIuODU5LTEwLjQxMyw0Ljk0Ny0yMS4wNDUsNy4wMTctMzEuNjUyLDEuMDMyLTUuMjc5LDEuMjUxLTEwLjcyMywxLjg3LTE2LjA4Ny4wMzYtLjMxNy4zNTgtLjYuNTUyLS45VjIzNi4wMDVBOS43NTcsOS43NTcsMCwwLDEsNDk4LjI1MiwyMzQuMjIzWm0tMTYxLjExNy0xLjE1cy0xNi41NzItMi45OC0yOC40Ny0yLjk4Yy0yNy4yLDAtMzMuNTcsMTQuOS0zMy41NywzNy4wNFYzNjAuOEgyMDEuNTgyVjE3MC4wNjJIMjc1LjF2MzEuOTMxYzguOTI0LTI2LjgyMiwyNi43NzEtMzYuMTg5LDYyLjA0LTM2LjE4OVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVhY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE4LjIgMTc3LjJjLTUuNC0xLjgtMTAuOC0zLjUtMTYuMi01LjEuOS0zLjcgMS43LTcuNCAyLjUtMTEuMSAxMi4zLTU5LjYgNC4yLTEwNy41LTIzLjEtMTIzLjMtMjYuMy0xNS4xLTY5LjIuNi0xMTIuNiAzOC40LTQuMyAzLjctOC41IDcuNi0xMi41IDExLjUtMi43LTIuNi01LjUtNS4yLTguMy03LjctNDUuNS00MC40LTkxLjEtNTcuNC0xMTguNC00MS41LTI2LjIgMTUuMi0zNCA2MC4zLTIzIDExNi43IDEuMSA1LjYgMi4zIDExLjEgMy43IDE2LjctNi40IDEuOC0xMi43IDMuOC0xOC42IDUuOUMzOC4zIDE5Ni4yIDAgMjI1LjQgMCAyNTUuNmMwIDMxLjIgNDAuOCA2Mi41IDk2LjMgODEuNSA0LjUgMS41IDkgMyAxMy42IDQuMy0xLjUgNi0yLjggMTEuOS00IDE4LTEwLjUgNTUuNS0yLjMgOTkuNSAyMy45IDExNC42IDI3IDE1LjYgNzIuNC0uNCAxMTYuNi0zOS4xIDMuNS0zLjEgNy02LjMgMTAuNS05LjcgNC40IDQuMyA5IDguNCAxMy42IDEyLjQgNDIuOCAzNi44IDg1LjEgNTEuNyAxMTEuMiAzNi42IDI3LTE1LjYgMzUuOC02Mi45IDI0LjQtMTIwLjUtLjktNC40LTEuOS04LjktMy0xMy41IDMuMi0uOSA2LjMtMS45IDkuNC0yLjkgNTcuNy0xOS4xIDk5LjUtNTAgOTkuNS04MS43IDAtMzAuMy0zOS40LTU5LjctOTMuOC03OC40ek0yODIuOSA5Mi4zYzM3LjItMzIuNCA3MS45LTQ1LjEgODcuNy0zNiAxNi45IDkuNyAyMy40IDQ4LjkgMTIuOCAxMDAuNC0uNyAzLjQtMS40IDYuNy0yLjMgMTAtMjIuMi01LTQ0LjctOC42LTY3LjMtMTAuNi0xMy0xOC42LTI3LjItMzYuNC00Mi42LTUzLjEgMy45LTMuNyA3LjctNy4yIDExLjctMTAuN3pNMTY3LjIgMzA3LjVjNS4xIDguNyAxMC4zIDE3LjQgMTUuOCAyNS45LTE1LjYtMS43LTMxLjEtNC4yLTQ2LjQtNy41IDQuNC0xNC40IDkuOS0yOS4zIDE2LjMtNDQuNSA0LjYgOC44IDkuMyAxNy41IDE0LjMgMjYuMXptLTMwLjMtMTIwLjNjMTQuNC0zLjIgMjkuNy01LjggNDUuNi03LjgtNS4zIDguMy0xMC41IDE2LjgtMTUuNCAyNS40LTQuOSA4LjUtOS43IDE3LjItMTQuMiAyNi02LjMtMTQuOS0xMS42LTI5LjUtMTYtNDMuNnptMjcuNCA2OC45YzYuNi0xMy44IDEzLjgtMjcuMyAyMS40LTQwLjZzMTUuOC0yNi4yIDI0LjQtMzguOWMxNS0xLjEgMzAuMy0xLjcgNDUuOS0xLjdzMzEgLjYgNDUuOSAxLjdjOC41IDEyLjYgMTYuNiAyNS41IDI0LjMgMzguN3MxNC45IDI2LjcgMjEuNyA0MC40Yy02LjcgMTMuOC0xMy45IDI3LjQtMjEuNiA0MC44LTcuNiAxMy4zLTE1LjcgMjYuMi0yNC4yIDM5LTE0LjkgMS4xLTMwLjQgMS42LTQ2LjEgMS42cy0zMC45LS41LTQ1LjYtMS40Yy04LjctMTIuNy0xNi45LTI1LjctMjQuNi0zOXMtMTQuOC0yNi44LTIxLjUtNDAuNnptMTgwLjYgNTEuMmM1LjEtOC44IDkuOS0xNy43IDE0LjYtMjYuNyA2LjQgMTQuNSAxMiAyOS4yIDE2LjkgNDQuMy0xNS41IDMuNS0zMS4yIDYuMi00NyA4IDUuNC04LjQgMTAuNS0xNyAxNS41LTI1LjZ6bTE0LjQtNzYuNWMtNC43LTguOC05LjUtMTcuNi0xNC41LTI2LjItNC45LTguNS0xMC0xNi45LTE1LjMtMjUuMiAxNi4xIDIgMzEuNSA0LjcgNDUuOSA4LTQuNiAxNC44LTEwIDI5LjItMTYuMSA0My40ek0yNTYuMiAxMTguM2MxMC41IDExLjQgMjAuNCAyMy40IDI5LjYgMzUuOC0xOS44LS45LTM5LjctLjktNTkuNSAwIDkuOC0xMi45IDE5LjktMjQuOSAyOS45LTM1Ljh6TTE0MC4yIDU3YzE2LjgtOS44IDU0LjEgNC4yIDkzLjQgMzkgMi41IDIuMiA1IDQuNiA3LjYgNy0xNS41IDE2LjctMjkuOCAzNC41LTQyLjkgNTMuMS0yMi42IDItNDUgNS41LTY3LjIgMTAuNC0xLjMtNS4xLTIuNC0xMC4zLTMuNS0xNS41LTkuNC00OC40LTMuMi04NC45IDEyLjYtOTR6bS0yNC41IDI2My42Yy00LjItMS4yLTguMy0yLjUtMTIuNC0zLjktMjEuMy02LjctNDUuNS0xNy4zLTYzLTMxLjItMTAuMS03LTE2LjktMTcuOC0xOC44LTI5LjkgMC0xOC4zIDMxLjYtNDEuNyA3Ny4yLTU3LjYgNS43LTIgMTEuNS0zLjggMTcuMy01LjUgNi44IDIxLjcgMTUgNDMgMjQuNSA2My42LTkuNiAyMC45LTE3LjkgNDIuNS0yNC44IDY0LjV6bTExNi42IDk4Yy0xNi41IDE1LjEtMzUuNiAyNy4xLTU2LjQgMzUuMy0xMS4xIDUuMy0yMy45IDUuOC0zNS4zIDEuMy0xNS45LTkuMi0yMi41LTQ0LjUtMTMuNS05MiAxLjEtNS42IDIuMy0xMS4yIDMuNy0xNi43IDIyLjQgNC44IDQ1IDguMSA2Ny45IDkuOCAxMy4yIDE4LjcgMjcuNyAzNi42IDQzLjIgNTMuNC0zLjIgMy4xLTYuNCA2LjEtOS42IDguOXptMjQuNS0yNC4zYy0xMC4yLTExLTIwLjQtMjMuMi0zMC4zLTM2LjMgOS42LjQgMTkuNS42IDI5LjUuNiAxMC4zIDAgMjAuNC0uMiAzMC40LS43LTkuMiAxMi43LTE5LjEgMjQuOC0yOS42IDM2LjR6bTEzMC43IDMwYy0uOSAxMi4yLTYuOSAyMy42LTE2LjUgMzEuMy0xNS45IDkuMi00OS44LTIuOC04Ni40LTM0LjItNC4yLTMuNi04LjQtNy41LTEyLjctMTEuNSAxNS4zLTE2LjkgMjkuNC0zNC44IDQyLjItNTMuNiAyMi45LTEuOSA0NS43LTUuNCA2OC4yLTEwLjUgMSA0LjEgMS45IDguMiAyLjcgMTIuMiA0LjkgMjEuNiA1LjcgNDQuMSAyLjUgNjYuM3ptMTguMi0xMDcuNWMtMi44LjktNS42IDEuOC04LjUgMi42LTctMjEuOC0xNS42LTQzLjEtMjUuNS02My44IDkuNi0yMC40IDE3LjctNDEuNCAyNC41LTYyLjkgNS4yIDEuNSAxMC4yIDMuMSAxNSA0LjcgNDYuNiAxNiA3OS4zIDM5LjggNzkuMyA1OCAwIDE5LjYtMzQuOSA0NC45LTg0LjggNjEuNHptLTE0OS43LTE1YzI1LjMgMCA0NS44LTIwLjUgNDUuOC00NS44cy0yMC41LTQ1LjgtNDUuOC00NS44Yy0yNS4zIDAtNDUuOCAyMC41LTQ1LjggNDUuOHMyMC41IDQ1LjggNDUuOCA0NS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWFjdGV1cm9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTAuNiAyMTEuNzRsNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjEtLjEtMi4zLTYuOC0yLjMgNi44LTcuMi4xIDUuNyA0LjN6bTYzLjcgMGw1LjgtNC4xIDUuOCA0LjEtMi4xLTYuOCA1LjctNC4zLTcuMi0uMS0yLjMtNi44LTIuMyA2LjgtNy4yLjEgNS43IDQuM3ptLTkxLjMgNTAuNWgtMy40Yy00LjggMC0zLjggNC0zLjggMTIuMSAwIDQuNy0yLjMgNi4xLTUuOCA2LjFzLTUuOC0xLjQtNS44LTYuMXYtMzYuNmMwLTQuNyAyLjMtNi4xIDUuOC02LjFzNS44IDEuNCA1LjggNi4xYzAgNy4yLS43IDEwLjUgMy44IDEwLjVoMy40YzQuNy0uMSAzLjgtMy45IDMuOC0xMi4zIDAtOS45LTYuNy0xNC4xLTE2LjgtMTQuMWgtLjJjLTEwLjEgMC0xNi44IDQuMi0xNi44IDE0LjFWMjc2YzAgMTAuNCA2LjcgMTQuMSAxNi44IDE0LjFoLjJjMTAuMSAwIDE2LjgtMy44IDE2LjgtMTQuMSAwLTkuODYgMS4xLTEzLjc2LTMuOC0xMy43NnptLTgwLjcgMTcuNGgtMTQuN3YtMTkuM0gxMzljMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0xMS40di0xOC4zSDE0MmMyLjUgMCAzLjgtMS4zIDMuOC0zLjh2LTIuMWMwLTIuNS0xLjMtMy44LTMuOC0zLjhoLTIxLjdjLTIuNC0uMS0zLjcgMS4zLTMuNyAzLjh2NTkuMWMwIDIuNSAxLjMgMy44IDMuOCAzLjhoMjEuOWMyLjUgMCAzLjgtMS4zIDMuOC0zLjh2LTIuMWMwLTIuNS0xLjMtMy44LTMuOC0zLjh6bS00Mi0xOC41YzQuNi0yIDcuMy02IDcuMy0xMi40di0xMS45YzAtMTAuMS02LjctMTQuMS0xNi44LTE0LjFINzcuNGMtMi41IDAtMy44IDEuMy0zLjggMy44djU5LjFjMCAyLjUgMS4zIDMuOCAzLjggMy44aDMuNGMyLjUgMCAzLjgtMS4zIDMuOC0zLjh2LTIyLjloNS42bDcuNCAyMy41YTQuMSA0LjEgMCAwIDAgNC4zIDMuMmgzLjNjMi44IDAgNC0xLjggMy4yLTQuNHptLTMuOC0xNGMwIDQuOC0yLjUgNi4xLTYuMSA2LjFoLTUuOHYtMjAuOWg1LjhjMy42IDAgNi4xIDEuMyA2LjEgNi4xek0xNzYgMjI2YTMuODIgMy44MiAwIDAgMC00LjItMy40aC02LjlhMy42OCAzLjY4IDAgMCAwLTQgMy40bC0xMSA1OS4yYy0uNSAyLjcuOSA0LjEgMy40IDQuMWgzYTMuNzQgMy43NCAwIDAgMCA0LjEtMy41bDEuOC0xMS4zaDEyLjJsMS44IDExLjNhMy43NCAzLjc0IDAgMCAwIDQuMSAzLjVoMy41YzIuNiAwIDMuOS0xLjQgMy40LTQuMXptLTEyLjMgMzkuM2w0LjctMjkuNyA0LjcgMjkuN3ptODkuMyAyMC4ydi01My4yaDcuNWMyLjUgMCAzLjgtMS4zIDMuOC0zLjh2LTIuMWMwLTIuNS0xLjMtMy44LTMuOC0zLjhoLTI1LjhjLTIuNSAwLTMuOCAxLjMtMy44IDMuOHYyLjFjMCAyLjUgMS4zIDMuOCAzLjggMy44aDcuM3Y1My4yYzAgMi41IDEuMyAzLjggMy44IDMuOGgzLjRjMi41LjA0IDMuOC0xLjMgMy44LTMuNzZ6bTI0OC0uOGgtMTkuNFYyNThoMTYuMWExLjg5IDEuODkgMCAwIDAgMi0ydi0uOGExLjg5IDEuODkgMCAwIDAtMi0yaC0xNi4xdi0yNS44aDE5LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS43NyAxLjc3IDAgMCAwLTItMS45aC0yMi4yYTEuNjIgMS42MiAwIDAgMC0yIDEuOHY2M2ExLjgxIDEuODEgMCAwIDAgMiAxLjlINTAxYTEuODEgMS44MSAwIDAgMCAyLTEuOXYtLjhhMS44NCAxLjg0IDAgMCAwLTItMS45NnptLTkzLjEtNjIuOWgtLjhjLTEwLjEgMC0xNS4zIDQuNy0xNS4zIDE0LjFWMjc2YzAgOS4zIDUuMiAxNC4xIDE1LjMgMTQuMWguOGMxMC4xIDAgMTUuMy00LjggMTUuMy0xNC4xdi00MC4xYzAtOS4zNi01LjItMTQuMDYtMTUuMy0xNC4wNnptMTAuMiA1Mi40Yy0uMSA4LTMgMTEuMS0xMC41IDExLjFzLTEwLjUtMy4xLTEwLjUtMTEuMXYtMzYuNmMwLTcuOSAzLTExLjEgMTAuNS0xMS4xczEwLjUgMy4yIDEwLjUgMTEuMXptLTQ2LjUtMTQuNWM2LjEtMS42IDkuMi02LjEgOS4yLTEzLjN2LTkuN2MwLTkuNC01LjItMTQuMS0xNS4zLTE0LjFoLTEzLjdhMS44MSAxLjgxIDAgMCAwLTIgMS45djYzYTEuODEgMS44MSAwIDAgMCAyIDEuOWgxLjJhMS43NCAxLjc0IDAgMCAwIDEuOS0xLjl2LTI2LjloMTEuNmwxMC40IDI3LjJhMi4zMiAyLjMyIDAgMCAwIDIuMyAxLjVoMS41YzEuNCAwIDItMSAxLjUtMi4zem0tNi40LTMuOUgzNTV2LTI4LjVoMTAuMmM3LjUgMCAxMC41IDMuMSAxMC41IDExLjF2Ni40YzAgNy44NC0zIDExLjA0LTEwLjUgMTEuMDR6bTg1LjktMzMuMWgtMTMuN2ExLjYyIDEuNjIgMCAwIDAtMiAxLjh2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45aDEuMmExLjc0IDEuNzQgMCAwIDAgMS45LTEuOXYtMjYuMWgxMC42YzEwLjEgMCAxNS4zLTQuOCAxNS4zLTE0LjF2LTEwLjVjMC05LjQtNS4yLTE0LjEtMTUuMy0xNC4xem0xMC4yIDIyLjhjMCA3LjktMyAxMS4xLTEwLjUgMTEuMWgtMTAuMnYtMjkuMmgxMC4yYzcuNS0uMSAxMC41IDMuMSAxMC41IDExek0yNTkuNSAzMDhsLTIuMy02LjgtMi4zIDYuOC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuM3ptMjI3LjYtMTM2LjFhMzY0LjQyIDM2NC40MiAwIDAgMC0zNS42LTExLjNjMTkuNi03OCAxMS42LTEzNC43LTIyLjMtMTUzLjlDMzk0LjctMTIuNjYgMzQzLjMgMTEgMjkxIDYxLjk0cTUuMSA0Ljk1IDEwLjIgMTAuMmM4Mi41LTgwIDExOS42LTUzLjUgMTIwLjktNTIuOCAyMi40IDEyLjcgMzYgNTUuOCAxNS41IDEzNy44YTU4Ny44MyA1ODcuODMgMCAwIDAtODQuNi0xM0MyODEuMSA0My42NCAyMTIuNCAyIDE3MC44IDIgMTQwIDIgMTI3IDIzIDEyMy4yIDI5Ljc0Yy0xOC4xIDMyLTEzLjMgODQuMi4xIDEzMy44LTcwLjUgMjAuMy0xMjAuNyA1NC4xLTEyMC4zIDk1IC41IDU5LjYgMTAzLjIgODcuOCAxMjIuMSA5Mi44LTIwLjUgODEuOS0xMC4xIDEzNS42IDIyLjMgMTUzLjkgMjggMTUuOCA3NS4xIDYgMTM4LjItNTUuMnEtNS4xLTQuOTUtMTAuMi0xMC4yYy04Mi41IDgwLTExOS43IDUzLjUtMTIwLjkgNTIuOC0yMi4zLTEyLjYtMzYtNTUuNi0xNS41LTEzNy45IDEyLjQgMi45IDQxLjggOS41IDg0LjYgMTMgNzEuOSAxMDAuNCAxNDAuNiAxNDIgMTgyLjEgMTQyIDMwLjggMCA0My44LTIxIDQ3LjYtMjcuNyAxOC0zMS45IDEzLjMtODQuMS0uMS0xMzMuOCAxNTIuMy00My44IDE1Ni4yLTEzMC4yIDMzLjktMTc2LjN6TTEzNS45IDM2Ljg0YzIuOS01LjEgMTEuOS0yMC4zIDM0LjktMjAuMyAzNi44IDAgOTguOCAzOS42IDE2My4zIDEyNi4yYTcxNCA3MTQgMCAwIDAtOTMuOS45IDU0Ny43NiA1NDcuNzYgMCAwIDEgNDIuMi01Mi40UTI3Ny4zIDg2IDI3Mi4yIDgxYTU5OC4yNSA1OTguMjUgMCAwIDAtNTAuNyA2NC4yIDU2OS42OSA1NjkuNjkgMCAwIDAtODQuNCAxNC42Yy0uMi0xLjQtMjQuMy04Mi4yLTEuMi0xMjN6bTMwNC44IDQzOC4zYy0yLjkgNS4xLTExLjggMjAuMy0zNC45IDIwLjMtMzYuNyAwLTk4LjctMzkuNC0xNjMuMy0xMjYuMmE2OTUuMzggNjk1LjM4IDAgMCAwIDkzLjktLjkgNTQ3Ljc2IDU0Ny43NiAwIDAgMS00Mi4yIDUyLjRxNS4xIDUuMjUgMTAuMiAxMC4yYTU4OC40NyA1ODguNDcgMCAwIDAgNTAuNy02NC4yYzQ3LjMtNC43IDgwLjMtMTMuNSA4NC40LTE0LjYgMjIuNyA4NC40IDQuNSAxMTcgMS4yIDEyM3ptOS4xLTEzOC42Yy0zLjYtMTEuOS03LjctMjQuMS0xMi40LTM2LjRhMTIuNjcgMTIuNjcgMCAwIDEtMTAuNy01LjdsLS4xLjFhMTkuNjEgMTkuNjEgMCAwIDEtNS40IDMuNmM1LjcgMTQuMyAxMC42IDI4LjQgMTQuNyA0Mi4yYTUzNS4zIDUzNS4zIDAgMCAxLTcyIDEzYzMuNS01LjMgMTcuMi0yNi4yIDMyLjItNTQuMmEyNC42IDI0LjYgMCAwIDEtNi0zLjJjLTEuMSAxLjItMy42IDQuMi0xMC45IDQuMi02LjIgMTEuMi0xNy40IDMwLjktMzMuOSA1NS4yYTcxMS45MSA3MTEuOTEgMCAwIDEtMTEyLjQgMWMtNy45LTExLjItMjEuNS0zMS4xLTM2LjgtNTcuOGEyMSAyMSAwIDAgMS0zLTEuNWMtMS45IDEuNi0zLjkgMy4yLTEyLjYgMy4yIDYuMyAxMS4yIDE3LjUgMzAuNyAzMy44IDU0LjZhNTQ4LjgxIDU0OC44MSAwIDAgMS03Mi4yLTExLjdxNS44NS0yMSAxNC4xLTQyLjljLTMuMiAwLTUuNC4yLTguNC0xYTE3LjU4IDE3LjU4IDAgMCAxLTYuOSAxYy00LjkgMTMuNC05LjEgMjYuNS0xMi43IDM5LjRDLTMxLjcgMjk3LTEyLjEgMjE2IDEyNi43IDE3NS42NGMzLjYgMTEuOSA3LjcgMjQuMSAxMi40IDM2LjQgMTAuNCAwIDEyLjkgMy40IDE0LjQgNS4zYTEyIDEyIDAgMCAxIDIuMy0yLjJjLTUuOC0xNC43LTEwLjktMjkuMi0xNS4yLTQzLjMgNy0xLjggMzIuNC04LjQgNzItMTMtMTUuOSAyNC4zLTI2LjcgNDMuOS0zMi44IDU1LjNhMTQuMjIgMTQuMjIgMCAwIDEgNi40IDggMjMuNDIgMjMuNDIgMCAwIDEgMTAuMi04LjRjNi41LTExLjcgMTcuOS0zMS45IDM0LjgtNTYuOWE3MTEuNzIgNzExLjcyIDAgMCAxIDExMi40LTFjMzEuNSA0NC42IDI4LjkgNDguMSA0Mi41IDY0LjVhMjEuNDIgMjEuNDIgMCAwIDEgMTAuNC03LjRjLTYuNC0xMS40LTE3LjYtMzEtMzQuMy01NS41IDQwLjQgNC4xIDY1IDEwIDcyLjIgMTEuNy00IDE0LjQtOC45IDI5LjItMTQuNiA0NC4yYTIwLjc0IDIwLjc0IDAgMCAxIDYuOCA0LjNsLjEuMWExMi43MiAxMi43MiAwIDAgMSA4LjktNS42YzQuOS0xMy40IDkuMi0yNi42IDEyLjgtMzkuNWEzNTkuNzEgMzU5LjcxIDAgMCAxIDM0LjUgMTFjMTA2LjEgMzkuOSA3NCA4Ny45IDcyLjYgOTAuNC0xOS44IDM1LjEtODAuMSA1NS4yLTEwNS43IDYyLjV6bS0xMTQuNC0xMTRoLTEuMmExLjc0IDEuNzQgMCAwIDAtMS45IDEuOXY0OS44YzAgNy45LTIuNiAxMS4xLTEwLjEgMTEuMXMtMTAuMS0zLjEtMTAuMS0xMS4xdi00OS44YTEuNjkgMS42OSAwIDAgMC0xLjktMS45SDMwOWExLjgxIDEuODEgMCAwIDAtMiAxLjl2NTEuNWMwIDkuNiA1IDE0LjEgMTUuMSAxNC4xaC40YzEwLjEgMCAxNS4xLTQuNiAxNS4xLTE0LjF2LTUxLjVhMiAyIDAgMCAwLTIuMi0xLjl6TTMyMS43IDMwOGwtMi4zLTYuOC0yLjMgNi44LTcuMS4xIDUuNyA0LjMtMi4xIDYuOCA1LjgtNC4xIDUuOCA0LjEtMi4xLTYuOCA1LjctNC4zem0tMzEuMSA3LjRsLTIuMy02LjgtMi4zIDYuOC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuM3ptNS4xLTMwLjhoLTE5LjR2LTI2LjdoMTYuMWExLjg5IDEuODkgMCAwIDAgMi0ydi0uOGExLjg5IDEuODkgMCAwIDAtMi0yaC0xNi4xdi0yNS44aDE5LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS43NyAxLjc3IDAgMCAwLTItMS45aC0yMi4yYTEuODEgMS44MSAwIDAgMC0yIDEuOXY2M2ExLjgxIDEuODEgMCAwIDAgMiAxLjloMjIuNWExLjc3IDEuNzcgMCAwIDAgMi0xLjl2LS44YTEuODMgMS44MyAwIDAgMC0yLTIuMDZ6bS03LjQtOTkuNEwyODYgMTkybC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjEtLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlYWRtZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjguMyA0Ni41SDM4OC41Yy00OC4xIDAtODkuOSAzMy4zLTEwMC40IDgwLjMtMTAuNi00Ny01Mi4zLTgwLjMtMTAwLjQtODAuM0g0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MjQ1LjhjMCAyNi41IDIxLjUgNDggNDggNDhoODkuN2MxMDIuMiAwIDEzMi43IDI0LjQgMTQ3LjMgNzUgLjcgMi44IDUuMiAyLjggNiAwIDE0LjctNTAuNiA0NS4yLTc1IDE0Ny4zLTc1SDUyOGMyNi41IDAgNDgtMjEuNSA0OC00OFY5NC42YzAtMjYuNC0yMS4zLTQ3LjktNDcuNy00OC4xek0yNDIgMzExLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDc4LjJjLTEuOSAwLTMuNS0xLjUtMy41LTMuNVYyODljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDc4LjJjLTEuOSAwLTMuNS0xLjUtMy41LTMuNXYtMjIuOWMwLTEuOSAxLjUtMy41IDMuNS0zLjVoMTYwLjRjMS45IDAgMy41IDEuNSAzLjUgMy41VjI1MXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0yNTkuMyAxMjEuN2MwIDEuOS0xLjUgMy41LTMuNSAzLjVIMzM3LjVjLTEuOSAwLTMuNS0xLjUtMy41LTMuNXYtMjIuOWMwLTEuOSAxLjUtMy41IDMuNS0zLjVoMTYwLjRjMS45IDAgMy41IDEuNSAzLjUgMy41djIyLjl6bTAtNjAuOWMwIDEuOS0xLjUgMy41LTMuNSAzLjVIMzM3LjVjLTEuOSAwLTMuNS0xLjUtMy41LTMuNVYyMjhjMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjhjMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNVYxOTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni41IDUwNEMxMTcuMiA1MDQgOSAzODcuOCAxMy4yIDI0OS45IDE2IDE3MC43IDU2LjQgOTcuNyAxMjkuNyA0OS41Yy4zIDAgMS45LS42IDEuMS44LTUuOCA1LjUtMTExLjMgMTI5LjgtMTQuMSAyMjYuNCA0OS44IDQ5LjUgOTAgMi41IDkwIDIuNSAzOC41LTUwLjEtLjYtMTI1LjktLjYtMTI1LjktMTAtMjQuOS00NS43LTQwLjEtNDUuNy00MC4xbDI4LjgtMzEuOGMyNC40IDEwLjUgNDMuMiAzOC43IDQzLjIgMzguNy44LTI5LjYtMjEuOS02MS40LTIxLjktNjEuNEwyNTUuMSA4bDQ0LjMgNTAuMWMtMjAuNSAyOC44LTIxLjkgNjIuNi0yMS45IDYyLjYgMTMuOC0yMyA0My41LTM5LjMgNDMuNS0zOS4zbDI4LjUgMzEuOGMtMjcuNCA4LjktNDUuNCAzOS45LTQ1LjQgMzkuOS0xNS44IDI4LjUtMjcuMSA4OS40LjYgMTI3LjMgMzIuNCA0NC42IDg3LjctMi44IDg3LjctMi44IDEwMi43LTkxLjktMTAuNS0yMjUtMTAuNS0yMjUtNi4xLTUuNS44LTIuOC44LTIuOCA1MC4xIDM2LjUgMTE0LjYgODQuNCAxMTYuMiAyMDQuOEM1MDAuOSA0MDAuMiAzOTkgNTA0IDI1Ni41IDUwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkUml2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUzLjIgMzJIOTQuOEM0Mi40IDMyIDAgNzQuNCAwIDEyNi44djI1OC40QzAgNDM3LjYgNDIuNCA0ODAgOTQuOCA0ODBoMjU4LjRjNTIuNCAwIDk0LjgtNDIuNCA5NC44LTk0LjhWMTI2LjhjMC01Mi40LTQyLjQtOTQuOC05NC44LTk0Ljh6TTE0NC45IDIwMC45djU2LjNjMCAyNy0yMS45IDQ4LjktNDguOSA0OC45VjE1MS45YzAtMTMuMiAxMC43LTIzLjkgMjMuOS0yMy45aDE1NC4yYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOWgtNTYuM2MtMTIuMy0uNi0yNC42IDExLjYtMjQgMjR6bTE3Ni4zIDcyaC01Ni4zYy0xMi4zLS42LTI0LjYgMTEuNi0yNCAyNHY1Ni4zYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOVYyNDcuOWMwLTEzLjIgMTAuNy0yMy45IDIzLjktMjMuOWgxNTQuMmMwIDI3LTIxLjkgNDguOS00OC45IDQ4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZGRpdEFsaWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC4zIDIwMy41Yy0xNSAwLTI4LjIgNi4yLTM3LjkgMTUuOS0zNS43LTI0LjctODMuOC00MC42LTEzNy4xLTQyLjNMMjkzIDUyLjNsODguMiAxOS44YzAgMjEuNiAxNy42IDM5LjIgMzkuMiAzOS4yIDIyIDAgMzkuNy0xOC4xIDM5LjctMzkuN3MtMTcuNi0zOS43LTM5LjctMzkuN2MtMTUuNCAwLTI4LjcgOS4zLTM1LjMgMjJsLTk3LjQtMjEuNmMtNC45LTEuMy05LjcgMi4yLTExIDcuMUwyNDYuMyAxNzdjLTUyLjkgMi4yLTEwMC41IDE4LjEtMTM2LjMgNDIuOC05LjctMTAuMS0yMy40LTE2LjMtMzguNC0xNi4zLTU1LjYgMC03My44IDc0LjYtMjIuOSAxMDAuMS0xLjggNy45LTIuNiAxNi4zLTIuNiAyNC43IDAgODMuOCA5NC40IDE1MS43IDIxMC4zIDE1MS43IDExNi40IDAgMjEwLjgtNjcuOSAyMTAuOC0xNTEuNyAwLTguNC0uOS0xNy4yLTMuMS0yNS4xIDQ5LjktMjUuNiAzMS41LTk5LjctMjMuOC05OS43ek0xMjkuNCAzMDguOWMwLTIyIDE3LjYtMzkuNyAzOS43LTM5LjcgMjEuNiAwIDM5LjIgMTcuNiAzOS4yIDM5LjcgMCAyMS42LTE3LjYgMzkuMi0zOS4yIDM5LjItMjIgLjEtMzkuNy0xNy42LTM5LjctMzkuMnptMjE0LjMgOTMuNWMtMzYuNCAzNi40LTEzOS4xIDM2LjQtMTc1LjUgMC00LTMuNS00LTkuNyAwLTEzLjcgMy41LTMuNSA5LjctMy41IDEzLjIgMCAyNy44IDI4LjUgMTIwIDI5IDE0OSAwIDMuNS0zLjUgOS43LTMuNSAxMy4yIDAgNC4xIDQgNC4xIDEwLjIuMSAxMy43em0tLjgtNTQuMmMtMjEuNiAwLTM5LjItMTcuNi0zOS4yLTM5LjIgMC0yMiAxNy42LTM5LjcgMzkuMi0zOS43IDIyIDAgMzkuNyAxNy42IDM5LjcgMzkuNy0uMSAyMS41LTE3LjcgMzkuMi0zOS43IDM5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZGRpdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODMuMiAzNDUuNWMyLjcgMi43IDIuNyA2LjggMCA5LjItMjQuNSAyNC41LTkzLjggMjQuNi0xMTguNCAwLTIuNy0yLjQtMi43LTYuNSAwLTkuMiAyLjQtMi40IDYuNS0yLjQgOC45IDAgMTguNyAxOS4yIDgxIDE5LjYgMTAwLjUgMCAyLjQtMi4zIDYuNi0yLjMgOSAwem0tOTEuMy01My44YzAtMTQuOS0xMS45LTI2LjgtMjYuNS0yNi44LTE0LjkgMC0yNi44IDExLjktMjYuOCAyNi44IDAgMTQuNiAxMS45IDI2LjUgMjYuOCAyNi41IDE0LjYgMCAyNi41LTExLjkgMjYuNS0yNi41em05MC43LTI2LjhjLTE0LjYgMC0yNi41IDExLjktMjYuNSAyNi44IDAgMTQuNiAxMS45IDI2LjUgMjYuNSAyNi41IDE0LjkgMCAyNi44LTExLjkgMjYuOC0yNi41IDAtMTQuOS0xMS45LTI2LjgtMjYuOC0yNi44ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS05OS43IDE0MC42Yy0xMC4xIDAtMTkgNC4yLTI1LjYgMTAuNy0yNC4xLTE2LjctNTYuNS0yNy40LTkyLjUtMjguNmwxOC43LTg0LjIgNTkuNSAxMy40YzAgMTQuNiAxMS45IDI2LjUgMjYuNSAyNi41IDE0LjkgMCAyNi44LTEyLjIgMjYuOC0yNi44IDAtMTQuNi0xMS45LTI2LjgtMjYuOC0yNi44LTEwLjQgMC0xOS4zIDYuMi0yMy44IDE0LjlsLTY1LjctMTQuNmMtMy4zLS45LTYuNSAxLjUtNy40IDQuOGwtMjAuNSA5Mi44Yy0zNS43IDEuNS02Ny44IDEyLjItOTEuOSAyOC45LTYuNS02LjgtMTUuOC0xMS0yNS45LTExLTM3LjUgMC00OS44IDUwLjQtMTUuNSA2Ny41LTEuMiA1LjQtMS44IDExLTEuOCAxNi43IDAgNTYuNSA2My43IDEwMi4zIDE0MS45IDEwMi4zIDc4LjUgMCAxNDIuMi00NS44IDE0Mi4yLTEwMi4zIDAtNS43LS42LTExLjYtMi4xLTE3IDMzLjYtMTcuMiAyMS4yLTY3LjItMTYuMS02Ny4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAxLjUgMzA1LjVjLTEzLjggMC0yNC45LTExLjEtMjQuOS0yNC42IDAtMTMuOCAxMS4xLTI0LjkgMjQuOS0yNC45IDEzLjYgMCAyNC42IDExLjEgMjQuNiAyNC45IDAgMTMuNi0xMS4xIDI0LjYtMjQuNiAyNC42ek01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xMzIuMy00MS4yYy05LjQgMC0xNy43IDMuOS0yMy44IDEwLTIyLjQtMTUuNS01Mi42LTI1LjUtODYuMS0yNi42bDE3LjQtNzguMyA1NS40IDEyLjVjMCAxMy42IDExLjEgMjQuNiAyNC42IDI0LjYgMTMuOCAwIDI0LjktMTEuMyAyNC45LTI0LjlzLTExLjEtMjQuOS0yNC45LTI0LjljLTkuNyAwLTE4IDUuOC0yMi4xIDEzLjhsLTYxLjItMTMuNmMtMy0uOC02LjEgMS40LTYuOSA0LjRsLTE5LjEgODYuNGMtMzMuMiAxLjQtNjMuMSAxMS4zLTg1LjUgMjYuOC02LjEtNi40LTE0LjctMTAuMi0yNC4xLTEwLjItMzQuOSAwLTQ2LjMgNDYuOS0xNC40IDYyLjgtMS4xIDUtMS43IDEwLjItMS43IDE1LjUgMCA1Mi42IDU5LjIgOTUuMiAxMzIgOTUuMiA3My4xIDAgMTMyLjMtNDIuNiAxMzIuMy05NS4yIDAtNS4zLS42LTEwLjgtMS45LTE1LjggMzEuMy0xNiAxOS44LTYyLjUtMTQuOS02Mi41ek0zMDIuOCAzMzFjLTE4LjIgMTguMi03Ni4xIDE3LjktOTMuNiAwLTIuMi0yLjItNi4xLTIuMi04LjMgMC0yLjUgMi41LTIuNSA2LjQgMCA4LjYgMjIuOCAyMi44IDg3LjMgMjIuOCAxMTAuMiAwIDIuNS0yLjIgMi41LTYuMSAwLTguNi0yLjItMi4yLTYuMS0yLjItOC4zIDB6bTcuNy03NWMtMTMuNiAwLTI0LjYgMTEuMS0yNC42IDI0LjkgMCAxMy42IDExLjEgMjQuNiAyNC42IDI0LjYgMTMuOCAwIDI0LjktMTEuMSAyNC45LTI0LjYgMC0xMy44LTExLTI0LjktMjQuOS0yNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQxLjUyIDI4NS41NmMzMy42NSAwIDgyLjM0LTYuOTQgODIuMzQtNDcgLjIyLTYuNzQuODYtMS44Mi0yMC44OC05Ni4yNC00LjYyLTE5LjE1LTguNjgtMjcuODQtNDIuMzEtNDQuNjUtMjYuMDktMTMuMzQtODIuOTItMzUuMzctOTkuNzMtMzUuMzctMTUuNjYgMC0yMC4yIDIwLjE3LTM4Ljg3IDIwLjE3LTE4IDAtMzEuMzEtMTUuMDYtNDguMTItMTUuMDYtMTYuMTQgMC0yNi42NiAxMS0zNC43OCAzMy42Mi0yNy41IDc3LjU1LTI2LjI4IDc0LjI3LTI2LjEyIDc4LjI3IDAgMjQuOCA5Ny42NCAxMDYuMTEgMjI4LjQ3IDEwNi4xMU00MjkgMjU0Ljg0YzQuNjUgMjIgNC42NSAyNC4zNSA0LjY1IDI3LjI1IDAgMzcuNjYtNDIuMzMgNTguNTYtOTggNTguNTYtMTI1Ljc0LjA4LTIzNS45MS03My42NS0yMzUuOTEtMTIyLjMzYTQ5LjU1IDQ5LjU1IDAgMCAxIDQuMDYtMTkuNzJDNTguNTYgMjAwLjg2IDAgMjA4LjkzIDAgMjYwLjYzYzAgODQuNjcgMjAwLjYzIDE4OSAzNTkuNDkgMTg5IDEyMS43OSAwIDE1Mi41MS01NS4wOCAxNTIuNTEtOTguNTggMC0zNC4yMS0yOS41OS03My4wNS04Mi45My05Ni4yNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZW5yZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE0IDE2OS4xYzAgMTEwLjQtNjEgMjA1LjQtMTQ3LjYgMjQ3LjRDMzAgMzczLjIgOCAzMTcuNyA4IDI1Ni42IDggMTMzLjkgOTcuMSAzMi4yIDIxNCAxMi41djE1Ni42ek0yNTUgNTA0Yy00Mi45IDAtODMuMy0xMS0xMTguNS0zMC40QzE5My43IDQzNy41IDIzOS45IDM4Mi45IDI1NSAzMTljMTUuNSA2My45IDYxLjcgMTE4LjUgMTE4LjggMTU0LjdDMzM4LjcgNDkzIDI5OC4zIDUwNCAyNTUgNTA0em0xOTAuNi04Ny41QzM1OSAzNzQuNSAyOTggMjc5LjYgMjk4IDE2OS4xVjEyLjVjMTE2LjkgMTkuNyAyMDYgMTIxLjQgMjA2IDI0NC4xIDAgNjEuMS0yMiAxMTYuNi01OC40IDE1OS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ4MEgxMjhDNTcuNiA0ODAgMCA0MjIuNCAwIDM1MlYxNjBDMCA4OS42IDU3LjYgMzIgMTI4IDMyaDE5MmM3MC40IDAgMTI4IDU3LjYgMTI4IDEyOHYxOTJjMCA3MC40LTU3LjYgMTI4LTEyOCAxMjh6TTE5My40IDI3My4yYy02LjEtMi0xMS42LTMuMS0xNi40LTMuMS03LjIgMC0xMy41IDEuOS0xOC45IDUuNi01LjQgMy43LTkuNiA5LTEyLjggMTUuOGgtMS4xbC00LjItMTguM2gtMjh2MTM4LjloMzYuMXYtODkuN2MxLjUtNS40IDQuNC05LjggOC43LTEzLjIgNC4zLTMuNCA5LjgtNS4xIDE2LjItNS4xIDQuNiAwIDkuOCAxIDE1LjYgMy4xbDQuOC0zNHptMTE1LjIgMTAzLjRjLTMuMiAyLjQtNy43IDQuOC0xMy43IDcuMS02IDIuMy0xMi44IDMuNS0yMC40IDMuNS0xMi4yIDAtMjEuMS0zLTI2LjUtOC45LTUuNS01LjktOC41LTE0LjctOS0yNi40aDgzLjNjLjktNC44IDEuNi05LjQgMi4xLTEzLjkuNS00LjQuNy04LjYuNy0xMi41IDAtMTAuNy0xLjYtMTkuNy00LjctMjYuOS0zLjItNy4yLTcuMy0xMy0xMi41LTE3LjItNS4yLTQuMy0xMS4xLTcuMy0xNy44LTkuMi02LjctMS44LTEzLjUtMi44LTIwLjYtMi44LTIxLjEgMC0zNy41IDYuMS00OS4yIDE4LjNzLTE3LjUgMzAuNS0xNy41IDU1YzAgMjIuOCA1LjIgNDAuNyAxNS42IDUzLjcgMTAuNCAxMy4xIDI2LjggMTkuNiA0OS4yIDE5LjYgMTAuNyAwIDIwLjktMS41IDMwLjQtNC42IDkuNS0zLjEgMTcuMS02LjggMjIuNi0xMS4ybC0xMi0yMy42em0tMjEuOC03MC4zYzMuOCA1LjQgNS4zIDEzLjEgNC42IDIzLjFoLTUxLjdjLjktOS40IDMuNy0xNyA4LjItMjIuNiA0LjUtNS42IDExLjUtOC41IDIxLTguNSA4LjItLjEgMTQuMSAyLjYgMTcuOSA4em03OS45IDIuNWM0LjEgMy45IDkuNCA1LjggMTYuMSA1LjggNyAwIDEyLjYtMS45IDE2LjctNS44czYuMS05LjEgNi4xLTE1LjYtMi0xMS42LTYuMS0xNS40Yy00LjEtMy44LTkuNi01LjctMTYuNy01LjctNi43IDAtMTIgMS45LTE2LjEgNS43LTQuMSAzLjgtNi4xIDguOS02LjEgMTUuNHMyIDExLjcgNi4xIDE1LjZ6bTAgMTAwLjVjNC4xIDMuOSA5LjQgNS44IDE2LjEgNS44IDcgMCAxMi42LTEuOSAxNi43LTUuOHM2LjEtOS4xIDYuMS0xNS42LTItMTEuNi02LjEtMTUuNGMtNC4xLTMuOC05LjYtNS43LTE2LjctNS43LTYuNyAwLTEyIDEuOS0xNi4xIDUuNy00LjEgMy44LTYuMSA4LjktNi4xIDE1LjQgMCA2LjYgMiAxMS43IDYuMSAxNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXNlYXJjaGdhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTI2Mi4yIDMzNC40Yy02LjYgMy0zMy4yIDYtNTAtMTQuMi05LjItMTAuNi0yNS4zLTMzLjMtNDIuMi02My42LTguOSAwLTE0LjcgMC0yMS40LS42djQ2LjRjMCAyMy41IDYgMjEuMiAyNS44IDIzLjl2OC4xYy02LjktLjMtMjMuMS0uOC0zNS42LS44LTEzLjEgMC0yNi4xLjYtMzMuNi44di04LjFjMTUuNS0yLjkgMjItMS4zIDIyLTIzLjlWMjI1YzAtMjIuNi02LjQtMjEtMjItMjMuOVYxOTNjMjUuOCAxIDUzLjEtLjYgNzAuOS0uNiAzMS43IDAgNTUuOSAxNC40IDU1LjkgNDUuNiAwIDIxLjEtMTYuNyA0Mi4yLTM5LjIgNDcuNSAxMy42IDI0LjIgMzAgNDUuNiA0Mi4yIDU4LjkgNy4yIDcuOCAxNy4yIDE0LjcgMjcuMiAxNC43djcuM3ptMjIuOS0xMzVjLTIzLjMgMC0zMi4yLTE1LjctMzIuMi0zMi4yVjE2N2MwLTEyLjIgOC44LTMwLjQgMzQtMzAuNHMzMC40IDE3LjkgMzAuNCAxNy45bC0xMC43IDcuMnMtNS41LTEyLjUtMTkuNy0xMi41Yy03LjkgMC0xOS43IDcuMy0xOS43IDE5Ljd2MjYuOGMwIDEzLjQgNi42IDIzLjMgMTcuOSAyMy4zIDE0LjEgMCAyMS41LTEwLjkgMjEuNS0yNi44aC0xNy45di0xMC43aDMwLjRjMCAyMC41IDQuNyA0OS45LTM0IDQ5Ljl6bS0xMTYuNSA0NC43Yy05LjQgMC0xMy42LS4zLTIwLS44di02OS43YzYuNC0uNiAxNS0uNiAyMi41LS42IDIzLjMgMCAzNy4yIDEyLjIgMzcuMiAzNC41IDAgMjEuOS0xNSAzNi42LTM5LjcgMzYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVzb2x2aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MS4yIDI3OC4yYzQ2LTEzLjMgNDkuNi0yMy41IDQ0LTQzLjRMMzE0IDE5NS41Yy02LjEtMjAuOS0xOC40LTI4LjEtNzEuMS0xMi44TDU0LjcgMjM2LjhsMjguNiA5OC42IDE5Ny45LTU3LjJ6TTI0OC41IDhDMTMxLjQgOCAzMy4yIDg4LjcgNy4yIDE5Ny41bDIyMS45LTYzLjljMzQuOC0xMC4yIDU0LjItMTEuNyA3OS4zLTguMiAzNi4zIDYuMSA1Mi43IDI1IDYxLjQgNTUuMmwxMC43IDM3LjhjOC4yIDI4LjEgMSA1MC42LTIzLjUgNzMuNi0xOS40IDE3LjQtMzEuMiAyNC41LTYxLjQgMzMuMkwyMDMgMzUxLjhsMjIwLjQgMjcuMSA5LjcgMzQuMi00OC4xIDEzLjMtMjg2LjgtMzcuMyAyMyA4MC4yYzM2LjggMjIgODAuMyAzNC43IDEyNi4zIDM0LjcgMTM3IDAgMjQ4LjUtMTExLjQgMjQ4LjUtMjQ4LjNDNDk3IDExOS40IDM4NS41IDggMjQ4LjUgOHpNMzguMyAzODguNkwwIDI1Ni44YzAgNDguNSAxNC4zIDkzLjQgMzguMyAxMzEuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmV2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OS42NyAyNzQuODlhNjUuNTcgNjUuNTcgMCAxIDEtNjUuNTYtNjUuNTYgNjUuNjQgNjUuNjQgMCAwIDEgNjUuNTYgNjUuNTZ6bTEzOS41NS01LjA1aC0uMTNhMjA0LjY5IDIwNC42OSAwIDAgMC03NC4zMi0xNTNsLTQ1LjM4IDI2LjJhMTU3LjA3IDE1Ny4wNyAwIDAgMSA3MS44MSAxMzEuODRDMzgxLjIgMzYxLjUgMzEwLjczIDQzMiAyMjQuMTEgNDMyUzY3IDM2MS41IDY3IDI3NC44OGMwLTgxLjg4IDYzLTE0OS4yNyAxNDMtMTU2LjQzdjM5LjEybDEwOC43Ny02Mi43OUwyMTAgMzJ2MzguMzJjLTEwNi43IDcuMjUtMTkxIDk2LTE5MSAyMDQuNTcgMCAxMTEuNTkgODkuMTIgMjAyLjI5IDIwMC4wNiAyMDV2LjExaDIxMC4xNlYyNjkuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvY2tldGNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg0LjA0NiwyMjQuOGEzNC4xMTQsMzQuMTE0LDAsMSwwLDM0LjMxNywzNC4xMTNBMzQuMjE3LDM0LjIxNywwLDAsMCwyODQuMDQ2LDIyNC44Wm0tMTEwLjQ1LDBhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNywzNC4yMTcsMCwwLDAsMTczLjYsMjI0LjhabTIyMC45MjMsMGEzNC4xMTQsMzQuMTE0LDAsMSwwLDM0LjMxNywzNC4xMTNBMzQuMjE1LDM0LjIxNSwwLDAsMCwzOTQuNTE5LDIyNC44Wm0xNTMuODA3LTU1LjMxOWMtMTUuNTM1LTI0LjE3Mi0zNy4zMS00NS41Ny02NC42ODEtNjMuNjE4LTUyLjg4Ni0zNC44MTctMTIyLjM3NC01NC0xOTUuNjY2LTU0YTQwNS45NzUsNDA1Ljk3NSwwLDAsMC03Mi4wMzIsNi4zNTcsMjM4LjUyNCwyMzguNTI0LDAsMCwwLTQ5LjUxLTM2LjU4OEM5OS42ODQtMTEuNyw0MC44NTkuNzExLDExLjEzNSwxMS40MjFBMTQuMjkxLDE0LjI5MSwwLDAsMCw1LjU4LDM0Ljc4MkMyNi41NDIsNTYuNDU4LDYxLjIyMiw5OS4zLDUyLjcsMTM4LjI1MmMtMzMuMTQyLDMzLjktNTEuMTEyLDc0Ljc3Ni01MS4xMTIsMTE3LjMzNywwLDQzLjM3MiwxNy45Nyw4NC4yNDgsNTEuMTEyLDExOC4xNDgsOC41MjYsMzguOTU2LTI2LjE1NCw4MS44MTYtNDcuMTE2LDEwMy40OTFhMTQuMjg0LDE0LjI4NCwwLDAsMCw1LjU1NSwyMy4zNGMyOS43MjQsMTAuNzA5LDg4LjU0OSwyMy4xNDcsMTU1LjMyNC0xMC4yYTIzOC42NzksMjM4LjY3OSwwLDAsMCw0OS41MS0zNi41ODlBNDA1Ljk3Miw0MDUuOTcyLDAsMCwwLDI4OCw0NjAuMTRjNzMuMzEzLDAsMTQyLjgtMTkuMTU5LDE5NS42NjctNTMuOTc1LDI3LjM3MS0xOC4wNDksNDkuMTQ1LTM5LjQyNiw2NC42NzktNjMuNjE5LDE3LjMwOS0yNi45MjMsMjYuMDctNTUuOTE2LDI2LjA3LTg2LjEyNUM1NzQuMzk0LDIyNS40LDU2NS42MzQsMTk2LjQzLDU0OC4zMjYsMTY5LjQ4NVpNMjg0Ljk4Nyw0MDkuOWEzNDUuNjUsMzQ1LjY1LDAsMCwxLTg5LjQ0Ni0xMS41bC0yMC4xMjksMTkuMzkzYTE4NC4zNjYsMTg0LjM2NiwwLDAsMS0zNy4xMzgsMjcuNTg1LDE0NS43NjcsMTQ1Ljc2NywwLDAsMS01Mi41MjIsMTQuODdjLjk4My0xLjc3MSwxLjg4MS0zLjU2MywyLjg0Mi01LjM1NnEzMC4yNTgtNTUuNjgsMTYuMzI1LTEwMC4wNzhjLTMyLjk5Mi0yNS45NjItNTIuNzc4LTU5LjItNTIuNzc4LTk1LjQsMC04My4xLDEwNC4yNTQtMTUwLjQ2OSwyMzIuODQ2LTE1MC40NjlzMjMyLjg2Nyw2Ny4zNzMsMjMyLjg2NywxNTAuNDY5QzUxNy44NTQsMzQyLjUyNSw0MTMuNiw0MDkuOSwyODQuOTg3LDQwOS45WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2Nrcm1zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE1Ny40IDQxOS41aC05MGwtMTEyLTEzMS4zYy0xNy45LTIwLjQtMy45LTU2LjEgMjYuNi01Ni4xaDc1LjNsLTg0LjYtOTkuMy04NC4zIDk4LjloLTkwTDE5My41IDY3LjJjMTQuNC0xOC40IDQxLjMtMTcuMyA1NC41IDBsMTU3LjcgMTg1LjFjMTkgMjIuOCAyIDU3LjItMjcuNiA1Ni4xLS42IDAtNzQuMi4yLTc0LjIuMmwxMDEuNSAxMTguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDguNTIsMjQ5Ljc1LDQ4Ni43LDIzNi4yNGMtLjE3LTItLjM0LTMuOTMtLjU1LTUuODhsMTguNzItMTcuNWE3LjM1LDcuMzUsMCwwLDAtMi40NC0xMi4yNWwtMjQtOWMtLjU0LTEuODgtMS4wOC0zLjc4LTEuNjctNS42NGwxNS0yMC44M2E3LjM1LDcuMzUsMCwwLDAtNC43OS0xMS41NGwtMjUuNDItNC4xNWMtLjktMS43My0xLjc5LTMuNDUtMi43My01LjE1bDEwLjY4LTIzLjQyYTcuMzUsNy4zNSwwLDAsMC02Ljk1LTEwLjM5bC0yNS44Mi45MXEtMS43OS0yLjIyLTMuNjEtNC40TDQzOSw4MS44NEE3LjM2LDcuMzYsMCwwLDAsNDMwLjE2LDczTDQwNSw3OC45M3EtMi4xNy0xLjgzLTQuNC0zLjYxbC45MS0yNS44MmE3LjM1LDcuMzUsMCwwLDAtMTAuMzktN0wzNjcuNyw1My4yM2MtMS43LS45NC0zLjQzLTEuODQtNS4xNS0yLjczTDM1OC40LDI1LjA4YTcuMzUsNy4zNSwwLDAsMC0xMS41NC00Ljc5TDMyNiwzNS4yNmMtMS44Ni0uNTktMy43NS0xLjEzLTUuNjQtMS42N2wtOS0yNGE3LjM1LDcuMzUsMCwwLDAtMTIuMjUtMi40NGwtMTcuNSwxOC43MmMtMS45NS0uMjEtMy45MS0uMzgtNS44OC0uNTVMMjYyLjI1LDMuNDhhNy4zNSw3LjM1LDAsMCwwLTEyLjUsMEwyMzYuMjQsMjUuM2MtMiwuMTctMy45My4zNC01Ljg4LjU1TDIxMi44Niw3LjEzYTcuMzUsNy4zNSwwLDAsMC0xMi4yNSwyLjQ0bC05LDI0Yy0xLjg5LjU1LTMuNzksMS4wOC01LjY2LDEuNjhsLTIwLjgyLTE1YTcuMzUsNy4zNSwwLDAsMC0xMS41NCw0Ljc5bC00LjE1LDI1LjQxYy0xLjczLjktMy40NSwxLjc5LTUuMTYsMi43M0wxMjAuODgsNDIuNTVhNy4zNSw3LjM1LDAsMCwwLTEwLjM5LDdsLjkyLDI1LjgxYy0xLjQ5LDEuMTktMywyLjM5LTQuNDIsMy42MUw4MS44NCw3M0E3LjM2LDcuMzYsMCwwLDAsNzMsODEuODRMNzguOTMsMTA3Yy0xLjIzLDEuNDUtMi40MywyLjkzLTMuNjIsNC40MWwtMjUuODEtLjkxYTcuNDIsNy40MiwwLDAsMC02LjM3LDMuMjYsNy4zNSw3LjM1LDAsMCwwLS41Nyw3LjEzbDEwLjY2LDIzLjQxYy0uOTQsMS43LTEuODMsMy40My0yLjczLDUuMTZMMjUuMDgsMTUzLjZhNy4zNSw3LjM1LDAsMCwwLTQuNzksMTEuNTRsMTUsMjAuODJjLS41OSwxLjg3LTEuMTMsMy43Ny0xLjY4LDUuNjZsLTI0LDlhNy4zNSw3LjM1LDAsMCwwLTIuNDQsMTIuMjVsMTguNzIsMTcuNWMtLjIxLDEuOTUtLjM4LDMuOTEtLjU1LDUuODhMMy40OCwyNDkuNzVhNy4zNSw3LjM1LDAsMCwwLDAsMTIuNUwyNS4zLDI3NS43NmMuMTcsMiwuMzQsMy45Mi41NSw1Ljg3TDcuMTMsMjk5LjEzYTcuMzUsNy4zNSwwLDAsMCwyLjQ0LDEyLjI1bDI0LDljLjU1LDEuODksMS4wOCwzLjc4LDEuNjgsNS42NWwtMTUsMjAuODNhNy4zNSw3LjM1LDAsMCwwLDQuNzksMTEuNTRsMjUuNDIsNC4xNWMuOSwxLjcyLDEuNzksMy40NSwyLjczLDUuMTRMNDIuNTYsMzkxLjEyYTcuMzUsNy4zNSwwLDAsMCwuNTcsNy4xMyw3LjEzLDcuMTMsMCwwLDAsNi4zNywzLjI2bDI1LjgzLS45MXExLjc3LDIuMjIsMy42LDQuNEw3Myw0MzAuMTZBNy4zNiw3LjM2LDAsMCwwLDgxLjg0LDQzOUwxMDcsNDMzLjA3cTIuMTgsMS44Myw0LjQxLDMuNjFsLS45MiwyNS44MmE3LjM1LDcuMzUsMCwwLDAsMTAuMzksNi45NWwyMy40My0xMC42OGMxLjY5Ljk0LDMuNDIsMS44Myw1LjE0LDIuNzNsNC4xNSwyNS40MmE3LjM0LDcuMzQsMCwwLDAsMTEuNTQsNC43OGwyMC44My0xNWMxLjg2LjYsMy43NiwxLjEzLDUuNjUsMS42OGw5LDI0YTcuMzYsNy4zNiwwLDAsMCwxMi4yNSwyLjQ0bDE3LjUtMTguNzJjMS45NS4yMSwzLjkyLjM4LDUuODguNTVsMTMuNTEsMjEuODJhNy4zNSw3LjM1LDAsMCwwLDEyLjUsMGwxMy41MS0yMS44MmMyLS4xNywzLjkzLS4zNCw1Ljg4LS41NmwxNy41LDE4LjczYTcuMzYsNy4zNiwwLDAsMCwxMi4yNS0yLjQ0bDktMjRjMS44OS0uNTUsMy43OC0xLjA4LDUuNjUtMS42OGwyMC44MiwxNWE3LjM0LDcuMzQsMCwwLDAsMTEuNTQtNC43OGw0LjE1LTI1LjQyYzEuNzItLjksMy40NS0xLjc5LDUuMTUtMi43M2wyMy40MiwxMC42OGE3LjM1LDcuMzUsMCwwLDAsMTAuMzktNi45NWwtLjkxLTI1LjgycTIuMjItMS43OSw0LjQtMy42MUw0MzAuMTYsNDM5YTcuMzYsNy4zNiwwLDAsMCw4Ljg0LTguODRMNDMzLjA3LDQwNXExLjgzLTIuMTcsMy42MS00LjRsMjUuODIuOTFhNy4yMyw3LjIzLDAsMCwwLDYuMzctMy4yNiw3LjM1LDcuMzUsMCwwLDAsLjU4LTcuMTNMNDU4Ljc3LDM2Ny43Yy45NC0xLjcsMS44My0zLjQzLDIuNzMtNS4xNWwyNS40Mi00LjE1YTcuMzUsNy4zNSwwLDAsMCw0Ljc5LTExLjU0bC0xNS0yMC44M2MuNTktMS44NywxLjEzLTMuNzYsMS42Ny01LjY1bDI0LTlhNy4zNSw3LjM1LDAsMCwwLDIuNDQtMTIuMjVsLTE4LjcyLTE3LjVjLjIxLTEuOTUuMzgtMy45MS41NS01Ljg3bDIxLjgyLTEzLjUxYTcuMzUsNy4zNSwwLDAsMCwwLTEyLjVabS0xNTEsMTI5LjA4QTEzLjkxLDEzLjkxLDAsMCwwLDM0MSwzODkuNTFsLTcuNjQsMzUuNjdBMTg3LjUxLDE4Ny41MSwwLDAsMSwxNzcsNDI0LjQ0bC03LjY0LTM1LjY2YTEzLjg3LDEzLjg3LDAsMCwwLTE2LjQ2LTEwLjY4bC0zMS41MSw2Ljc2YTE4Ny4zOCwxODcuMzgsMCwwLDEtMTYuMjYtMTkuMjFIMjU4LjNjMS43MiwwLDIuODktLjI5LDIuODktMS45MVYzMDkuNTVjMC0xLjU3LTEuMTctMS45MS0yLjg5LTEuOTFIMjEzLjQ3bC4wNS0zNC4zNUgyNjJjNC40MSwwLDIzLjY2LDEuMjgsMjkuNzksMjUuODcsMS45MSw3LjU1LDYuMTcsMzIuMTQsOS4wNiw0MCwyLjg5LDguODIsMTQuNiwyNi40NiwyNy4xLDI2LjQ2SDQwN2ExODcuMywxODcuMywwLDAsMS0xNy4zNCwyMC4wOVptMjUuNzcsMzQuNDlBMTUuMjQsMTUuMjQsMCwxLDEsMzY4LDM5OC4wOGguNDRBMTUuMjMsMTUuMjMsMCwwLDEsMzgzLjI0LDQxMy4zMlptLTIyNS42Mi0uNjhhMTUuMjQsMTUuMjQsMCwxLDEtMTUuMjUtMTUuMjVoLjQ1QTE1LjI1LDE1LjI1LDAsMCwxLDE1Ny42Miw0MTIuNjRaTTY5LjU3LDIzNC4xNWwzMi44My0xNC42YTEzLjg4LDEzLjg4LDAsMCwwLDcuMDYtMTguMzNMMTAyLjY5LDE4NmgyNi41NlYzMDUuNzNINzUuNjVBMTg3LjY1LDE4Ny42NSwwLDAsMSw2OS41NywyMzQuMTVaTTU4LjMxLDE5OC4wOWExNS4yNCwxNS4yNCwwLDAsMSwxNS4yMy0xNS4yNUg3NGExNS4yNCwxNS4yNCwwLDEsMS0xNS42NywxNS4yNFptMTU1LjE2LDI0LjQ5LjA1LTM1LjMyaDYzLjI2YzMuMjgsMCwyMy4wNywzLjc3LDIzLjA3LDE4LjYyLDAsMTIuMjktMTUuMTksMTYuNy0yNy42OCwxNi43Wk0zOTksMzA2LjcxYy05LjgsMS4xMy0yMC42My00LjEyLTIyLTEwLjA5LTUuNzgtMzIuNDktMTUuMzktMzkuNC0zMC41Ny01MS40LDE4Ljg2LTExLjk1LDM4LjQ2LTI5LjY0LDM4LjQ2LTUzLjI2LDAtMjUuNTItMTcuNDktNDEuNTktMjkuNC00OS40OC0xNi43Ni0xMS0zNS4yOC0xMy4yMy00MC4yNy0xMy4yM0gxMTYuMzJBMTg3LjQ5LDE4Ny40OSwwLDAsMSwyMjEuMjEsNzAuMDZsMjMuNDcsMjQuNmExMy44MiwxMy44MiwwLDAsMCwxOS42LjQ0bDI2LjI2LTI1YTE4Ny41MSwxODcuNTEsMCwwLDEsMTI4LjM3LDkxLjQzbC0xOCw0MC41N0ExNCwxNCwwLDAsMCw0MDgsMjIwLjQzbDM0LjU5LDE1LjMzYTE4Ny4xMiwxODcuMTIsMCwwLDEsLjQsMzIuNTRINDIzLjcxYy0xLjkxLDAtMi42OSwxLjI3LTIuNjksMy4xM3Y4LjgyQzQyMSwzMDEsNDA5LjMxLDMwNS41OCwzOTksMzA2LjcxWk0yNDAsNjAuMjFBMTUuMjQsMTUuMjQsMCwwLDEsMjU1LjIxLDQ1aC40NUExNS4yNCwxNS4yNCwwLDEsMSwyNDAsNjAuMjFaTTQzNi44NCwyMTRhMTUuMjQsMTUuMjQsMCwxLDEsMC0zMC40OGguNDRhMTUuMjQsMTUuMjQsMCwwLDEtLjQ0LDMwLjQ4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWZhcmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc0LjY5LDI3NC42OWwtMzcuMzgtMzcuMzhMMTY2LDM0NlpNMjU2LDhDMTE5LDgsOCwxMTksOCwyNTZTMTE5LDUwNCwyNTYsNTA0LDUwNCwzOTMsNTA0LDI1NiwzOTMsOCwyNTYsOFpNNDExLjg1LDE4Mi43OWwxNC43OC02LjEzQTgsOCwwLDAsMSw0MzcuMDgsMTgxaDBhOCw4LDAsMCwxLTQuMzMsMTAuNDZMNDE4LDE5Ny41N2E4LDgsMCwwLDEtMTAuNDUtNC4zM2gwQTgsOCwwLDAsMSw0MTEuODUsMTgyLjc5Wk0zMTQuNDMsOTRsNi4xMi0xNC43OEE4LDgsMCwwLDEsMzMxLDc0LjkyaDBhOCw4LDAsMCwxLDQuMzMsMTAuNDVsLTYuMTMsMTQuNzhhOCw4LDAsMCwxLTEwLjQ1LDQuMzNoMEE4LDgsMCwwLDEsMzE0LjQzLDk0Wk0yNTYsNjBoMGE4LDgsMCwwLDEsOCw4Vjg0YTgsOCwwLDAsMS04LDhoMGE4LDgsMCwwLDEtOC04VjY4QTgsOCwwLDAsMSwyNTYsNjBaTTE4MSw3NC45MmE4LDgsMCwwLDEsMTAuNDYsNC4zM0wxOTcuNTcsOTRhOCw4LDAsMSwxLTE0Ljc4LDYuMTJsLTYuMTMtMTQuNzhBOCw4LDAsMCwxLDE4MSw3NC45MlptLTYzLjU4LDQyLjQ5aDBhOCw4LDAsMCwxLDExLjMxLDBMMTQwLDEyOC43MkE4LDgsMCwwLDEsMTQwLDE0MGgwYTgsOCwwLDAsMS0xMS4zMSwwbC0xMS4zMS0xMS4zMUE4LDgsMCwwLDEsMTE3LjQxLDExNy40MVpNNjAsMjU2aDBhOCw4LDAsMCwxLDgtOEg4NGE4LDgsMCwwLDEsOCw4aDBhOCw4LDAsMCwxLTgsOEg2OEE4LDgsMCwwLDEsNjAsMjU2Wm00MC4xNSw3My4yMS0xNC43OCw2LjEzQTgsOCwwLDAsMSw3NC45MiwzMzFoMGE4LDgsMCwwLDEsNC4zMy0xMC40Nkw5NCwzMTQuNDNhOCw4LDAsMCwxLDEwLjQ1LDQuMzNoMEE4LDgsMCwwLDEsMTAwLjE1LDMyOS4yMVptNC4zMy0xMzZoMEE4LDgsMCwwLDEsOTQsMTk3LjU3bC0xNC43OC02LjEyQTgsOCwwLDAsMSw3NC45MiwxODFoMGE4LDgsMCwwLDEsMTAuNDUtNC4zM2wxNC43OCw2LjEzQTgsOCwwLDAsMSwxMDQuNDgsMTkzLjI0Wk0xOTcuNTcsNDE4bC02LjEyLDE0Ljc4YTgsOCwwLDAsMS0xNC43OS02LjEybDYuMTMtMTQuNzhBOCw4LDAsMSwxLDE5Ny41Nyw0MThaTTI2NCw0NDRhOCw4LDAsMCwxLTgsOGgwYTgsOCwwLDAsMS04LThWNDI4YTgsOCwwLDAsMSw4LThoMGE4LDgsMCwwLDEsOCw4Wm02Ny02LjkyaDBhOCw4LDAsMCwxLTEwLjQ2LTQuMzNMMzE0LjQzLDQxOGE4LDgsMCwwLDEsNC4zMy0xMC40NWgwYTgsOCwwLDAsMSwxMC40NSw0LjMzbDYuMTMsMTQuNzhBOCw4LDAsMCwxLDMzMSw0MzcuMDhabTYzLjU4LTQyLjQ5aDBhOCw4LDAsMCwxLTExLjMxLDBMMzcyLDM4My4yOEE4LDgsMCwwLDEsMzcyLDM3MmgwYTgsOCwwLDAsMSwxMS4zMSwwbDExLjMxLDExLjMxQTgsOCwwLDAsMSwzOTQuNTksMzk0LjU5Wk0yODYuMjUsMjg2LjI1LDExMC4zNCw0MDEuNjYsMjI1Ljc1LDIyNS43NSw0MDEuNjYsMTEwLjM0Wk00MzcuMDgsMzMxaDBhOCw4LDAsMCwxLTEwLjQ1LDQuMzNsLTE0Ljc4LTYuMTNhOCw4LDAsMCwxLTQuMzMtMTAuNDVoMEE4LDgsMCwwLDEsNDE4LDMxNC40M2wxNC43OCw2LjEyQTgsOCwwLDAsMSw0MzcuMDgsMzMxWk00NDQsMjY0SDQyOGE4LDgsMCwwLDEtOC04aDBhOCw4LDAsMCwxLDgtOGgxNmE4LDgsMCwwLDEsOCw4aDBBOCw4LDAsMCwxLDQ0NCwyNjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhbGVzZm9yY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4Ljg5IDI0NS42NGgtMjYuMzVjLjY5LTUuMTYgMy4zMi0xNC4xMiAxMy42NC0xNC4xMiA2Ljc1IDAgMTEuOTcgMy44MiAxMi43MSAxNC4xMnptMTM2LjY2LTEzLjg4Yy0uNDcgMC0xNC4xMS0xLjc3LTE0LjExIDIwczEzLjYzIDIwIDE0LjExIDIwYzEzIDAgMTQuMTEtMTMuNTQgMTQuMTEtMjAgMC0yMS43Ni0xMy42Ni0yMC0xNC4xMS0yMHptLTI0My4yMiAyMy43NmE4LjYzIDguNjMgMCAwIDAtMy4yOSA3LjI5YzAgNC43OCAyLjA4IDYuMDUgMy4yOSA3LjA1IDQuNyAzLjcgMTUuMDcgMi4xMiAyMC45My45NXYtMTYuOTRjLTUuMzItMS4wNy0xNi43My0xLjk2LTIwLjkzIDEuNjV6TTY0MCAyMzJjMCA4Ny41OC04MCAxNTQuMzktMTY1LjM2IDEzNi40My0xOC4zNyAzMy03MC43MyA3MC43NS0xMzIuMiA0MS42My00MS4xNiA5Ni4wNS0xNzcuODkgOTIuMTgtMjEzLjgxLTUuMTdDOC45MSA0MjguNzgtNTAuMTkgMjY2LjUyIDUzLjM2IDIwNS42MSAxOC42MSAxMjYuMTggNzYgMzIgMTY3LjY3IDMyYTEyNC4yNCAxMjQuMjQgMCAwIDEgOTguNTYgNDguN2MyMC43LTIxLjQgNDkuNC0zNC44MSA4MS4xNS0zNC44MSA0Mi4zNCAwIDc5IDIzLjUyIDk4LjggNTguNTdDNTM5IDYzLjc4IDY0MCAxMzIuNjkgNjQwIDIzMnptLTUxOS41NSAzMS44YzAtMTEuNzYtMTEuNjktMTUuMTctMTcuODctMTcuMTctNS4yNy0yLjExLTEzLjQxLTMuNTEtMTMuNDEtOC45NCAwLTkuNDYgMTctNi42NiAyNS4xNy0yLjEyIDAgMCAxLjE3LjcxIDEuNjQtLjQ3LjI0LS43IDIuMzYtNi41OCAyLjU5LTcuMjlhMS4xMyAxLjEzIDAgMCAwLS43LTEuNDFjLTEyLjMzLTcuNjMtNDAuNy04LjUxLTQwLjcgMTIuNyAwIDEyLjQ2IDExLjQ5IDE1LjQ0IDE3Ljg4IDE3LjE3IDQuNzIgMS41OCAxMy4xNyAzIDEzLjE3IDguNyAwIDQtMy41MyA3LjA2LTkuMTcgNy4wNmEzMS43NiAzMS43NiAwIDAgMS0xOS02LjM1Yy0uNDctLjIzLTEuNDItLjcxLTEuNjUuNzFsLTIuNCA3LjQ3Yy0uNDcuOTQuMjMgMS4xOC4yMyAxLjQxIDEuNzUgMS40IDEwLjMgNi41OSAyMi44MiA2LjU5IDEzLjE3IDAgMjEuNC03LjA2IDIxLjQtMTguMTF6bTMyLTQyLjU4Yy0xMC4xMyAwLTE4LjY2IDMuMTctMjEuNCA1LjE4YTEgMSAwIDAgMC0uMjQgMS40MWwyLjU5IDcuMDZhMSAxIDAgMCAwIDEuMTguN2MuNjUgMCA2LjgtNCAxNi45My00IDQgMCA3LjA2LjcxIDkuMTggMi4zNiAzLjYgMi44IDMuMDYgOC4yOSAzLjA2IDEwLjU4LTQuNzktLjMtMTkuMTEtMy40NC0yOS40MSAzLjc2YTE2LjkyIDE2LjkyIDAgMCAwLTcuMzQgMTQuNTRjMCA1LjkgMS41MSAxMC40IDYuNTkgMTQuMzUgMTIuMjQgOC4xNiAzNi4yOCAyIDM4LjEgMS40MSAxLjU4LS4zMiAzLjUzLS42NiAzLjUzLTEuODh2LTMzLjg4Yy4wNC00LjYxLjMyLTIxLjY0LTIyLjc4LTIxLjY0ek0xOTkgMjAwLjI0YTEuMTEgMS4xMSAwIDAgMC0xLjE4LTEuMThIMTg4YTEuMTEgMS4xMSAwIDAgMC0xLjE3IDEuMTh2NzlhMS4xMSAxLjExIDAgMCAwIDEuMTcgMS4xOGg5Ljg4YTEuMTEgMS4xMSAwIDAgMCAxLjE4LTEuMTh6bTU1Ljc1IDI4LjkzYy0yLjEtMi4zMS02Ljc5LTcuNTMtMTcuNjUtNy41My0zLjUxIDAtMTQuMTYuMjMtMjAuNyA4Ljk0LTYuMzUgNy42My02LjU4IDE4LjExLTYuNTggMjEuNDEgMCAzLjEyLjE1IDE0LjI2IDcuMDYgMjEuMTcgMi42NCAyLjkxIDkuMDYgOC4yMyAyMi44MSA4LjIzIDEwLjgyIDAgMTYuNDctMi4zNSAxOC41OC0zLjc2LjQ3LS4yNC43MS0uNzEuMjQtMS44OGwtMi4zNS02LjgzYTEuMjYgMS4yNiAwIDAgMC0xLjQxLS43Yy0yLjU5Ljk0LTYuMzUgMi44Mi0xNS4yOSAyLjgyLTE3LjQyIDAtMTYuODUtMTQuNzQtMTYuOTQtMTYuN2gzNy4xN2ExLjIzIDEuMjMgMCAwIDAgMS4xNy0uOTRjLS4yOSAwIDIuMDctMTQuNy02LjA5LTI0LjIzem0zNi42OSA1Mi42OWMxMy4xNyAwIDIxLjQxLTcuMDYgMjEuNDEtMTguMTEgMC0xMS43Ni0xMS43LTE1LjE3LTE3Ljg4LTE3LjE3LTQuMTQtMS42Ni0xMy40MS0zLjM4LTEzLjQxLTguOTQgMC0zLjc2IDMuMjktNi4zNSA4LjQ3LTYuMzVhMzguMTEgMzguMTEgMCAwIDEgMTYuNyA0LjIzczEuMTguNzEgMS42NS0uNDdjLjIzLS43IDIuMzUtNi41OCAyLjU4LTcuMjlhMS4xMyAxLjEzIDAgMCAwLS43LTEuNDFjLTcuOTEtNC45LTE2Ljc0LTQuOTQtMjAuMjMtNC45NC0xMiAwLTIwLjQ2IDcuMjktMjAuNDYgMTcuNjQgMCAxMi40NiAxMS40OCAxNS40NCAxNy44NyAxNy4xNyA2LjExIDIgMTMuMTcgMy4yNiAxMy4xNyA4LjcgMCA0LTMuNTIgNy4wNi05LjE3IDcuMDZhMzEuOCAzMS44IDAgMCAxLTE5LTYuMzUgMSAxIDAgMCAwLTEuNjUuNzFsLTIuMzUgNy41MmMtLjQ3Ljk0LjIzIDEuMTguMjMgMS40MSAxLjcyIDEuNCAxMC4zMyA2LjU5IDIyLjc5IDYuNTl6TTM1Ny4wOSAyMjRjMC0uNzEtLjI0LTEuMTgtMS4xOC0xLjE4aC0xMS43NmMwLS4xNC45NC04Ljk0IDQuNDctMTIuNDcgNC4xNi00LjE1IDExLjc2LTEuNjQgMTItMS42NCAxLjE3LjQ3IDEuNDEgMCAxLjY0LS40N2wyLjgzLTcuNzdjLjctLjk0IDAtMS4xNy0uMjQtMS40MS01LjA5LTItMTcuMzUtMi44Ny0yNC40NiA0LjI0LTUuNDggNS40OC03IDEzLjkyLTggMTkuNTJoLTguNDdhMS4yOCAxLjI4IDAgMCAwLTEuMTcgMS4xOGwtMS40MiA3Ljc2YzAgLjcuMjQgMS4xNyAxLjE4IDEuMTdoOC4yM2MtOC41MSA0Ny45LTguNzUgNTAuMjEtMTAuMzUgNTUuNTItMS4wOCAzLjYyLTMuMjkgNi45LTUuODggNy43Ni0uMDkgMC0zLjg4IDEuNjgtOS42NC0uMjQgMCAwLS45NC0uNDctMS40MS43MS0uMjQuNzEtMi41OSA2LjgyLTIuODMgNy41M3MwIDEuNDEuNDcgMS40MWM1LjExIDIgMTMgMS43NyAxNy44OCAwIDYuMjgtMi4yOCA5LjcyLTcuODkgMTEuNTMtMTIuOTQgMi43NS03LjcxIDIuODEtOS43OSAxMS43Ni01OS43NGgxMi4yM2ExLjI5IDEuMjkgMCAwIDAgMS4xOC0xLjE4em01My4zOSAxNmMtLjU2LTEuNjgtNS4xLTE4LjExLTI1LjE3LTE4LjExLTE1LjI1IDAtMjMgMTAtMjUuMTYgMTguMTEtMSAzLTMuMTggMTQgMCAyMy41Mi4wOS4zIDQuNDEgMTguMTIgMjUuMTYgMTguMTIgMTQuOTUgMCAyMi45LTkuNjEgMjUuMTctMTguMTIgMy4yMS05LjYxIDEuMDEtMjAuNTIgMC0yMy41MnptNDUuNC0xNi43Yy01LTEuNjUtMTYuNjItMS45LTIyLjExIDUuNDF2LTQuNDdhMS4xMSAxLjExIDAgMCAwLTEuMTgtMS4xN2gtOS40YTEuMTEgMS4xMSAwIDAgMC0xLjE4IDEuMTd2NTUuMjhhMS4xMiAxLjEyIDAgMCAwIDEuMTggMS4xOGg5LjY0YTEuMTIgMS4xMiAwIDAgMCAxLjE4LTEuMTh2LTI3Ljc3YzAtMi45MS4wNS0xMS4zNyA0LjQ2LTE1LjA1IDQuOS00LjkgMTItMy4zNiAxMy40MS0zLjA2YTEuNTcgMS41NyAwIDAgMCAxLjQxLS45NCA3NCA3NCAwIDAgMCAzLjA2LTggMS4xNiAxLjE2IDAgMCAwLS40Ny0xLjQxem00Ni44MSA1NC4xbC0yLjEyLTcuMjljLS40Ny0xLjE4LTEuNDEtLjcxLTEuNDEtLjcxLTQuMjMgMS44Mi0xMC4xNSAxLjg5LTExLjI5IDEuODktNC42NCAwLTE3LjE3LTEuMTMtMTcuMTctMTkuNzYgMC02LjIzIDEuODUtMTkuNzYgMTYuNDctMTkuNzZhMzQuODUgMzQuODUgMCAwIDEgMTEuNTIgMS42NXMuOTQuNDcgMS4xOC0uNzFjLjk0LTIuNTkgMS42NC00LjQ3IDIuNTktNy41My4yMy0uOTQtLjQ3LTEuMTctLjcxLTEuMTctMTEuNTktMy44Ny0yMi4zNC0yLjUzLTI3Ljc2IDAtMS41OS43NC0xNi4yMyA2LjQ5LTE2LjIzIDI3LjUyIDAgMi45LS41OCAzMC4xMSAyOC45NCAzMC4xMWE0NC40NSA0NC40NSAwIDAgMCAxNS41Mi0yLjgzIDEuMyAxLjMgMCAwIDAgLjQ3LTEuNDJ6bTUzLjg3LTM5LjUyYy0uOC0zLTUuMzctMTYuMjMtMjIuMzUtMTYuMjMtMTYgMC0yMy41MiAxMC4xMS0yNS42NCAxOC41OWEzOC41OCAzOC41OCAwIDAgMC0xLjY1IDExLjc2YzAgMjUuODcgMTguODQgMjkuNCAyOS44OCAyOS40IDEwLjgyIDAgMTYuNDYtMi4zNSAxOC41OC0zLjc2LjQ3LS4yNC43MS0uNzEuMjQtMS44OGwtMi4zNi02LjgzYTEuMjYgMS4yNiAwIDAgMC0xLjQxLS43Yy0yLjU5Ljk0LTYuMzUgMi44Mi0xNS4yOSAyLjgyLTE3LjQyIDAtMTYuODUtMTQuNzQtMTYuOTMtMTYuN2gzNy4xNmExLjI1IDEuMjUgMCAwIDAgMS4xOC0uOTRjLS4yNC0uMDEuOTQtNy4wNy0xLjQxLTE1LjU0em0tMjMuMjktNi4zNWMtMTAuMzMgMC0xMyA5LTEzLjY0IDE0LjEySDU0NmMtLjg4LTExLjkyLTcuNjItMTQuMTMtMTIuNzMtMTQuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAxLjg0IDM3OC45MmMtLjMuNi0uNiAxLjA4IDAgMHptMjQ5LjEzLTg3YTEzMS4xNiAxMzEuMTYgMCAwIDAtNTggMTMuNWMtNS45LTExLjktMTItMjIuMy0xMy0zMC4xLTEuMi05LjEtMi41LTE0LjUtMS4xLTI1LjNzNy43LTI2LjEgNy42LTI3LjItMS40LTYuNi0xNC4zLTYuNy0yNCAyLjUtMjUuMjkgNS45YTEyMi44MyAxMjIuODMgMCAwIDAtNS4zIDE5LjFjLTIuMyAxMS43LTI1Ljc5IDUzLjUtMzkuMDkgNzUuMy00LjQtOC41LTguMS0xNi04LjktMjItMS4yLTkuMS0yLjUtMTQuNS0xLjEtMjUuM3M3LjctMjYuMSA3LjYtMjcuMi0xLjQtNi42LTE0LjI5LTYuNy0yNCAyLjUtMjUuMyA1LjktMi43IDExLjQtNS4zIDE5LjEtMzMuODkgNzcuMy00Mi4wOCA5NS40Yy00LjIgOS4yLTcuOCAxNi42LTEwLjQgMjEuNi0uNC44LS43IDEuMy0uOSAxLjcuMy0uNS41LTEgLjUtLjgtMi4yIDQuMy0zLjUgNi43LTMuNSA2Ljd2LjFjLTEuNyAzLjItMy42IDYuMS00LjUgNi4xLS42IDAtMS45LTguNC4zLTE5LjkgNC43LTI0LjIgMTUuOC02MS44IDE1LjctNjMuMS0uMS0uNyAyLjEtNy4yLTcuMy0xMC43LTkuMS0zLjMtMTIuNCAyLjItMTMuMiAyLjJzLTEuNCAyLTEuNCAyIDEwLjEtNDIuNC0xOS4zOS00Mi40Yy0xOC40IDAtNDQgMjAuMi01Ni41OCAzOC41LTcuOSA0LjMtMjUgMTMuNi00MyAyMy41LTYuOSAzLjgtMTQgNy43LTIwLjcgMTEuNC0uNS0uNS0uOS0xLTEuNC0xLjUtMzUuNzktMzguMi0xMDEuODctNjUuMi05OS4wNy0xMTYuNSAxLTE4LjcgNy41LTY3LjggMTI3LjA3LTEyNy40IDk4LTQ4LjggMTc2LjM1LTM1LjQgMTg5Ljg0LTUuNiAxOS40IDQyLjUtNDEuODkgMTIxLjYtMTQzLjY2IDEzMy0zOC43OSA0LjMtNTkuMTgtMTAuNy02NC4yOC0xNi4zLTUuMy01LjktNi4xLTYuMi04LjEtNS4xLTMuMyAxLjgtMS4yIDcgMCAxMC4xIDMgNy45IDE1LjUgMjEuOSAzNi43OSAyOC45IDE4LjcgNi4xIDY0LjE4IDkuNSAxMTkuMTctMTEuOCA2MS43OC0yMy44IDEwOS44Ny05MC4xIDk1Ljc3LTE0NS42QzM4Ni41MiAxOC4zMiAyOTMtLjE4IDIwNC41NyAzMS4yMmMtNTIuNjkgMTguNy0xMDkuNjcgNDguMS0xNTAuNjYgODYuNC00OC42OSA0NS42LTU2LjQ4IDg1LjMtNTMuMjggMTAxLjkgMTEuMzkgNTguOSA5Mi41NyA5Ny4zIDEyNS4wNiAxMjUuNy0xLjYuOS0zLjEgMS43LTQuNSAyLjUtMTYuMjkgOC4xLTc4LjE4IDQwLjUtOTMuNjcgNzQuNy0xNy41IDM4LjggMi45IDY2LjYgMTYuMjkgNzAuNCA0MS43OSAxMS42IDg0LjU4LTkuMyAxMDcuNTctNDMuNnMyMC4yLTc5LjEgOS42LTk5LjVjLS4xLS4zLS4zLS41LS40LS44IDQuMi0yLjUgOC41LTUgMTIuOC03LjUgOC4yOS00LjkgMTYuMzktOS40IDIzLjQ5LTEzLjMtNCAxMC44LTYuOSAyMy44LTguNCA0Mi42LTEuOCAyMiA3LjMgNTAuNSAxOS4xIDYxLjcgNS4yIDQuOSAxMS40OSA1IDE1LjM5IDUgMTMuOCAwIDIwLTExLjQgMjYuODktMjUgOC41LTE2LjYgMTYtMzUuOSAxNi0zNS45cy05LjQgNTIuMiAxNi4zIDUyLjJjOS4zOSAwIDE4Ljc5LTEyLjEgMjMtMTguM3YuMXMuMi0uNC43LTEuMmMxLTEuNSAxLjUtMi40IDEuNS0yLjR2LS4zYzMuOC02LjUgMTIuMS0yMS40IDI0LjU5LTQ2IDE2LjItMzEuOCAzMS42OS03MS41IDMxLjY5LTcxLjVhMjAxLjI0IDIwMS4yNCAwIDAgMCA2LjIgMjUuOGMyLjggOS41IDguNyAxOS45IDEzLjQgMzAtMy44IDUuMi02LjEgOC4yLTYuMSA4LjJhLjMxLjMxIDAgMCAwIC4xLjJjLTMgNC02LjQgOC4zLTkuOSAxMi41LTEyLjc5IDE1LjItMjggMzIuNi0zMCAzNy42LTIuNCA1LjktMS44IDEwLjMgMi44IDEzLjcgMy40IDIuNiA5LjQgMyAxNS42OSAyLjUgMTEuNS0uOCAxOS42LTMuNiAyMy41LTUuNGE4Mi4yIDgyLjIgMCAwIDAgMjAuMTktMTAuNmMxMi41LTkuMiAyMC4xLTIyLjQgMTkuNC0zOS44LS40LTkuNi0zLjUtMTkuMi03LjMtMjguMiAxLjEtMS42IDIuMy0zLjMgMy40LTVDNDM0LjggMzAxLjcyIDQ1MC4xIDI3MCA0NTAuMSAyNzBhMjAxLjI0IDIwMS4yNCAwIDAgMCA2LjIgMjUuOGMyLjQgOC4xIDcuMDkgMTcgMTEuMzkgMjUuNy0xOC41OSAxNS4xLTMwLjA5IDMyLjYtMzQuMDkgNDQuMS03LjQgMjEuMy0xLjYgMzAuOSA5LjMgMzMuMSA0LjkgMSAxMS45LTEuMyAxNy4xLTMuNWE3OS40NiA3OS40NiAwIDAgMCAyMS41OS0xMS4xYzEyLjUtOS4yIDI0LjU5LTIyLjEgMjMuNzktMzkuNi0uMy03LjktMi41LTE1LjgtNS40LTIzLjQgMTUuNy02LjYgMzYuMDktMTAuMiA2Mi4wOS03LjIgNTUuNjggNi41IDY2LjU4IDQxLjMgNjQuNDggNTUuOHMtMTMuOCAyMi42LTE3LjcgMjUtNS4xIDMuMy00LjggNS4xYy41IDIuNiAyLjMgMi41IDUuNiAxLjkgNC42LS44IDI5LjE5LTExLjggMzAuMjktMzguNyAxLjYtMzQtMzEuMDktNzEuNC04OS03MS4xem0tNDI5LjE4IDE0NC43Yy0xOC4zOSAyMC4xLTQ0LjE5IDI3LjctNTUuMjggMjEuM0M1NC42MSA0NTEgNTkuMzEgNDIxLjQyIDgyIDQwMGMxMy44LTEzIDMxLjU5LTI1IDQzLjM5LTMyLjQgMi43LTEuNiA2LjYtNCAxMS40LTYuOS44LS41IDEuMi0uNyAxLjItLjcuOS0uNiAxLjktMS4xIDIuOS0xLjcgOC4yOSAzMC40LjMgNTcuMi0xOS4xIDc4LjN6bTEzNC4zNi05MS40Yy02LjQgMTUuNy0xOS44OSA1NS43LTI4LjA5IDUzLjYtNy0xLjgtMTEuMy0zMi4zLTEuNC02Mi4zIDUtMTUuMSAxNS42LTMzLjEgMjEuOS00MC4xIDEwLjA5LTExLjMgMjEuMTktMTQuOSAyMy43OS0xMC40IDMuNSA1LjktMTIuMiA0OS40LTE2LjIgNTkuMnptMTExIDUzYy0yLjcgMS40LTUuMiAyLjMtNi40IDEuNi0uOS0uNSAxLjEtMi40IDEuMS0yLjRzMTMuOS0xNC45IDE5LjQtMjEuN2MzLjItNCA2LjktOC43IDEwLjg5LTEzLjkgMCAuNS4xIDEgLjEgMS42LS4xMyAxNy45LTE3LjMyIDMwLTI1LjEyIDM0Ljh6bTg1LjU4LTE5LjVjLTItMS40LTEuNy02LjEgNS0yMC43IDIuNi01LjcgOC41OS0xNS4zIDE5LTI0LjVhMzYuMTggMzYuMTggMCAwIDEgMS45IDEwLjhjLS4xIDIyLjUtMTYuMiAzMC45LTI1Ljg5IDM0LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaGxpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTAuNSAxNTcuN2wtNTQuMi00Ni4xIDczLjQtMzkgNzguMyA0NC4yLTk3LjUgNDAuOXpNMTkyIDEyMi4xbDQ1LjctMjguMiAzNC43IDM0LjYtNTUuNCAyOS0yNS0zNS40em0tNjUuMSA2LjZsMzEuOS0yMi4xTDE3NiAxMzVsLTM2LjcgMjIuNS0xMi40LTI4Ljh6bS0yMy4zIDg4LjJsLTguOC0zNC44IDI5LjYtMTguMyAxMy4xIDM1LjMtMzMuOSAxNy44em0tMjEuMi04My43bDIzLjktMTguMSA4LjkgMjQtMjYuNyAxOC4zLTYuMS0yNC4yek01OSAyMDYuNWwtMy42LTI4LjQgMjIuMy0xNS41IDYuMSAyOC43TDU5IDIwNi41em0tMzAuNiAxNi42bDIwLjgtMTIuOCAzLjMgMzMuNC0yMi45IDEyLTEuMi0zMi42ek0xLjQgMjY4bDE5LjItMTAuMi40IDM4LjItMjEgOC44TDEuNCAyNjh6bTU5LjEgNTkuM2wtMjguMyA4LjMtMS42LTQ2LjggMjUuMS0xMC43IDQuOCA0OS4yek05OSAyNjMuMmwtMzEuMSAxMy01LjItNDAuOEw5MC4xIDIyMWw4LjkgNDIuMnpNMTIzLjIgMzc3bC00MS42IDUuOS04LjEtNjMuNSAzNS4yLTEwLjggMTQuNSA2OC40em0yOC41LTEzOS45bDIxLjIgNTcuMS00Ni4yIDEzLjYtMTMuNy01NC4xIDM4LjctMTYuNnptODUuNyAyMzAuNWwtNzAuOS0zLjMtMjQuMy05NS44IDU1LjItOC42IDQwIDEwNy43em0tODQuOS0yNzkuN2w0Mi4yLTIyLjQgMjggNDUuOS01MC44IDIxLjMtMTkuNC00NC44em00MSA5NC45bDYxLjMtMTguNyA1Mi44IDg2LjYtNzkuOCAxMS4zLTM0LjMtNzkuMnptNTEuNC04NS42bDY3LjMtMjguOCA2NS41IDY1LjQtODguNiAyNi4yLTQ0LjItNjIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyaWJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjMgMjUyLjdjLTE2LjEtMTktMjQuNy00NS45LTI0LjgtNzkuOSAwLTEwMC40IDc1LjItMTUzLjEgMTY3LjItMTUzLjEgOTguNi0xLjYgMTU2LjggNDkgMTg0LjMgNzAuNmwtNTAuNSA3Mi4xLTM3LjMtMjQuNiAyNi45LTM4LjZjLTM2LjUtMjQtNzkuNC0zNi41LTEyMy0zNS44LTUwLjctLjgtMTExLjcgMjcuMi0xMTEuNyA3Ni4yIDAgMTguNyAxMS4yIDIwLjcgMjguNiAxNS42IDIzLjMtNS4zIDQxLjkuNiA1NS44IDE0IDI2LjQgMjQuMyAyMy4yIDY3LjYtLjcgOTEuOS0yOS4yIDI5LjUtODUuMiAyNy4zLTExNC44LTguNHptMzE3LjcgNS45Yy0xNS41LTE4LjgtMzguOS0yOS40LTYzLjItMjguNi0zOC4xLTItNzEuMSAyOC03MC41IDY3LjItLjcgMTYuOCA2IDMzIDE4LjQgNDQuMyAxNC4xIDEzLjkgMzMgMTkuNyA1Ni4zIDE0LjQgMTcuNC01LjEgMjguNi0zLjEgMjguNiAxNS42IDAgNC4zLS41IDguNS0xLjQgMTIuNy0xNi43IDQwLjktNTkuNSA2NC40LTEyMS40IDY0LjQtNTEuOS4yLTEwMi40LTE2LjQtMTQ0LjEtNDcuM2wzMy43LTM5LjQtMzUuNi0yNy40TDAgNDA2LjNsMTUuNCAxMy44YzUyLjUgNDYuOCAxMjAuNCA3Mi41IDE5MC43IDcyLjIgNTEuNCAwIDk0LjQtMTAuNSAxMzMuNi00NC4xIDU3LjEtNTEuNCA1NC4yLTE0OS4yIDIwLjMtMTg5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaGVuZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMC42IDEzMC4zbC02Ny4yIDI4LjJWNDMuMkw5OC43IDIzMy41bDU0LjctMjQuMnYxMzAuM2w2Ny4yLTIwOS4zem0tODMuMi05Ni43bC0xLjMgNC43LTE1LjIgNTIuOUM4MC42IDEwNi43IDUyIDE0NS44IDUyIDE5MS41YzAgNTIuMyAzNC4zIDk1LjkgODMuNCAxMDUuNXY1My42QzU3LjUgMzQwLjEgMCAyNzIuNCAwIDE5MS42YzAtODAuNSA1OS44LTE0Ny4yIDEzNy40LTE1OHptMzExLjQgNDQ3LjJjLTExLjIgMTEuMi0yMy4xIDEyLjMtMjguNiAxMC41LTUuNC0xLjgtMjcuMS0xOS45LTYwLjQtNDQuNC0zMy4zLTI0LjYtMzMuNi0zNS43LTQzLTU2LjctOS40LTIwLjktMzAuNC00Mi42LTU3LjUtNTIuNGwtOS43LTE0LjdjLTI0LjcgMTYuOS01MyAyNi45LTgxLjMgMjguN2wyLjEtNi42IDE1LjktNDkuNWM0Ni41LTExLjkgODAuOS01NCA4MC45LTEwNC4yIDAtNTQuNS0zOC40LTEwMi4xLTk2LTEwNy4xVjMyLjNDMjU0LjQgMzcuNCAzMjAgMTA2LjggMzIwIDE5MS42YzAgMzMuNi0xMS4yIDY0LjctMjkgOTAuNGwxNC42IDkuNmM5LjggMjcuMSAzMS41IDQ4IDUyLjQgNTcuNHMzMi4yIDkuNyA1Ni44IDQzYzI0LjYgMzMuMiA0Mi43IDU0LjkgNDQuNSA2MC4zcy43IDE3LjMtMTAuNSAyOC41em0tOS45LTE3LjljMC00LjQtMy42LTgtOC04cy04IDMuNi04IDggMy42IDggOCA4IDgtMy42IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VsbGNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUzLjQgMzJIOTQuN0M0Mi42IDMyIDAgNzQuNiAwIDEyNi42djI1OC43QzAgNDM3LjQgNDIuNiA0ODAgOTQuNyA0ODBoMjU4LjdjNTIuMSAwIDk0LjctNDIuNiA5NC43LTk0LjZWMTI2LjZjMC01Mi00Mi42LTk0LjYtOTQuNy05NC42em0tNTAgMzE2LjRjLTI3LjkgNDguMi04OS45IDY0LjktMTM4LjIgMzcuMi0yMi45IDM5LjgtNTQuOSA4LjYtNDIuMy0xMy4ybDE1LjctMjcuMmM1LjktMTAuMyAxOS4yLTEzLjkgMjkuNS03LjkgMTguNiAxMC44LS4xLS4xIDE4LjUgMTAuNyAyNy42IDE1LjkgNjMuNCA2LjMgNzkuNC0yMS4zIDE1LjktMjcuNiA2LjMtNjMuNC0yMS4zLTc5LjQtMTcuOC0xMC4yLS42LS40LTE4LjYtMTAuNi0yNC42LTE0LjItMy40LTUxLjkgMjEuNi0zNy41IDE4LjYgMTAuOC0uMS0uMSAxOC41IDEwLjcgNDguNCAyOCA2NS4xIDkwLjMgMzcuMiAxMzguNXptMjEuOC0yMDguOGMtMTcgMjkuNS0xNi4zIDI4LjgtMTkgMzEuNS02LjUgNi41LTE2LjMgOC43LTI2LjUgMy42LTE4LjYtMTAuOC4xLjEtMTguNS0xMC43LTI3LjYtMTUuOS02My40LTYuMy03OS40IDIxLjNzLTYuMyA2My40IDIxLjMgNzkuNGMwIDAgMTguNSAxMC42IDE4LjYgMTAuNiAyNC42IDE0LjIgMy40IDUxLjktMjEuNiAzNy41LTE4LjYtMTAuOC4xLjEtMTguNS0xMC43LTQ4LjItMjcuOC02NC45LTkwLjEtMzcuMS0xMzguNCAyNy45LTQ4LjIgODkuOS02NC45IDEzOC4yLTM3LjJsNC44LTguNGMxNC4zLTI0LjkgNTItMy4zIDM3LjcgMjEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VsbHN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUzOS43MSAyMzcuMzA4YzMuMDY0LTEyLjI1NyA0LjI5LTI0LjgyMSA0LjI5LTM3LjM4NEM1NDQgMTA3LjM4MiA0NjguNjE4IDMyIDM3Ni4wNzYgMzJjLTc3LjIyIDAtMTQ0LjYzNCA1My4wMTItMTYzLjAyIDEyNy43ODEtMTUuMzIyLTEzLjE3Ni0zNC45MzQtMjAuNTMtNTUuMTU3LTIwLjUzLTQ2LjI3MSAwLTgzLjk2MiAzNy42OS04My45NjIgODMuOTYxIDAgNy4zNTQuOTIgMTUuMDE1IDMuMDY1IDIyLjM2OS00Mi45IDIwLjIyNS03MC43ODUgNjMuNzM4LTcwLjc4NSAxMTEuMjM0QzYuMjE2IDQyNC44NDMgNjEuNjggNDgwIDEyOS40MDEgNDgwaDM4MS4xOThjNjcuNzIgMCAxMjMuMTg0LTU1LjE1NyAxMjMuMTg0LTEyMy4xODQuMDAxLTU2LjM4NC0zOC45MTYtMTA2LjAyNS05NC4wNzMtMTE5LjUwOHpNMTk5Ljg4IDQwMS41NTRjMCA4LjI3NC03LjA0OCAxNS4zMjEtMTUuMzIxIDE1LjMyMUgxNTMuNjFjLTguMjc0IDAtMTUuMzIxLTcuMDQ4LTE1LjMyMS0xNS4zMjFWMjkwLjYyNmMwLTguMjczIDcuMDQ4LTE1LjMyMSAxNS4zMjEtMTUuMzIxaDMwLjk0OWM4LjI3NCAwIDE1LjMyMSA3LjA0OCAxNS4zMjEgMTUuMzIxdjExMC45Mjh6bTg5LjQ3NyAwYzAgOC4yNzQtNy4wNDggMTUuMzIxLTE1LjMyMiAxNS4zMjFoLTMwLjk0OWMtOC4yNzQgMC0xNS4zMjEtNy4wNDgtMTUuMzIxLTE1LjMyMVYyNzAuMDk2YzAtOC4yNzQgNy4wNDgtMTUuMzIxIDE1LjMyMS0xNS4zMjFoMzAuOTQ5YzguMjc0IDAgMTUuMzIyIDcuMDQ4IDE1LjMyMiAxNS4zMjF2MTMxLjQ1OHptODkuNDc3IDBjMCA4LjI3NC03LjA0NyAxNS4zMjEtMTUuMzIxIDE1LjMyMWgtMzAuOTQ5Yy04LjI3NCAwLTE1LjMyMi03LjA0OC0xNS4zMjItMTUuMzIxVjIzOC44NGMwLTguMjc0IDcuMDQ4LTE1LjMyMSAxNS4zMjItMTUuMzIxaDMwLjk0OWM4LjI3NCAwIDE1LjMyMSA3LjA0OCAxNS4zMjEgMTUuMzIxdjE2Mi43MTR6bTg3LjAyNyAwYzAgOC4yNzQtNy4wNDggMTUuMzIxLTE1LjMyMiAxNS4zMjFoLTI4LjQ5N2MtOC4yNzQgMC0xNS4zMjEtNy4wNDgtMTUuMzIxLTE1LjMyMVYxNzYuOTQxYzAtOC41NzkgNy4wNDctMTUuNjI4IDE1LjMyMS0xNS42MjhoMjguNDk3YzguMjc0IDAgMTUuMzIyIDcuMDQ4IDE1LjMyMiAxNS42Mjh2MjI0LjYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VydmljZXN0YWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg4IDIxNmM4MS43IDEwLjIgMjczLjcgMTAyLjMgMzA0IDIzMkgwYzk5LjUtOC4xIDE4NC41LTEzNyA4OC0yMzJ6bTMyLTE1MmMzMi4zIDM1LjYgNDcuNyA4My45IDQ2LjQgMTMzLjZDMjQ5LjMgMjMxLjMgMzczLjcgMzIxLjMgNDAwIDQ0OGg5NkM0NTUuMyAyMzEuOSAyMjIuOCA3OS41IDEyMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpcnRzaW5idWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMCA0MTAuM2wzMC42IDEzLjQgNC40LTkuOS0zMC42LTEzLjR6bTM5LjQgMTcuNWwzMC42IDEzLjQgNC40LTkuOS0zMC42LTEzLjR6bTE3Mi4xLTE0bDQuNCA5LjkgMzAuNi0xMy40LTQuNC05Ljl6TTE3OS4xIDQ0NWwzMC4zIDEzLjcgNC40LTkuOS0zMC4zLTEzLjR6TTYwLjQgMzkyLjhMOTEgNDA2LjJsNC40LTkuNi0zMC42LTEzLjd6bTIxMS40IDM4LjVsNC40IDkuOSAzMC42LTEzLjQtNC40LTkuOXptLTM5LjMgMTcuNWw0LjQgOS45IDMwLjYtMTMuNy00LjQtOS42em0xMTguNC01Mi4ybDQuNCA5LjYgMzAuNi0xMy40LTQuNC05Ljl6TTE3MCA0Ni42aC0zMy41djEwLjVIMTcwem0tNDcuMiAwSDg5LjJ2MTAuNWgzMy41em0tNDcuMyAwSDQyLjN2MTAuNWgzMy4zem0xNDEuNSAwaC0zMy4ydjEwLjVIMjE3em05NC41IDBIMjc4djEwLjVoMzMuNXptNDcuMyAwaC0zMy41djEwLjVoMzMuNXptLTk0LjYgMEgyMzF2MTAuNWgzMy4yem0xNDEuNSAwaC0zMy4zdjEwLjVoMzMuM3pNNTIuOCAzNTEuMUg0MnYzMy41aDEwLjh6bTcwLTIxNS45SDg5LjJ2MTAuNWgzMy41em0tNzAgMTAuNmgyMi44di0xMC41SDQydjMzLjVoMTAuOHptMTY4LjkgMjI4LjZjNTAuNSAwIDkxLjMtNDAuOCA5MS4zLTkxLjMgMC01MC4yLTQwLjgtOTEuMy05MS4zLTkxLjMtNTAuMiAwLTkxLjMgNDEuMS05MS4zIDkxLjMgMCA1MC41IDQxLjEgOTEuMyA5MS4zIDkxLjN6bS00OC4yLTExMS4xYzAtMjUuNCAyOS41LTMxLjggNDkuNi0zMS44IDE2LjkgMCAyOS4yIDUuOCA0NC4zIDEybC04LjggMTYuOWgtLjljLTYuNC05LjktMjQuOC0xMy4xLTM1LjYtMTMuMS05IDAtMjkuOCAxLjgtMjkuOCAxNC45IDAgMjEuNiA3OC41LTEwLjIgNzguNSAzNy45IDAgMjUuNC0zMS41IDMxLjItNTEgMzEuMi0xOC4xIDAtMzIuNC0yLjktNDcuMi0xMi4ybDktMTguNGguOWM2LjEgMTIuMiAyMy42IDE0LjkgMzUuOSAxNC45IDguNyAwIDMyLjctMS4yIDMyLjctMTQuMyAwLTI2LjEtNzcuNiA2LjMtNzcuNi0zOHpNNTIuOCAxNzguNEg0MlYyMTJoMTAuOHptMzQyLjQgMjA2LjJINDA2di0zMy41aC0xMC44ek01Mi44IDMwNy45SDQydjMzLjVoMTAuOHpNMCAzLjd2NDA2bDIyMS43IDk4LjZMNDQ4IDQwOS43VjMuN3ptNDE4LjggMzg3LjFMMjIyIDQ3Ni41IDI5LjIgMzkwLjhWMTIwLjdoMzg5Ljd2MjcwLjF6bTAtMjk5LjNIMjkuMlYzMi45aDM4OS43djU4LjZ6bS0zNjYgMTMwLjFINDJ2MzMuNWgxMC44em0wIDQzLjJINDJ2MzMuNWgxMC44ek0xNzAgMTM1LjJoLTMzLjV2MTAuNUgxNzB6bTIyNS4yIDE2My4xSDQwNnYtMzMuNWgtMTAuOHptMC00My4ySDQwNnYtMzMuNWgtMTAuOHpNMjE3IDEzNS4yaC0zMy4ydjEwLjVIMjE3ek0zOTUuMiAyMTJINDA2di0zMy41aC0xMC44em0wIDEyOS41SDQwNlYzMDhoLTEwLjh6bS0xMzEtMjA2LjNIMjMxdjEwLjVoMzMuMnptNDcuMyAwSDI3OHYxMC41aDMzLjV6bTgzLjcgMzMuNkg0MDZ2LTMzLjVoLTMzLjV2MTAuNWgyMi44em0tMzYuNC0zMy42aC0zMy41djEwLjVoMzMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcGlmeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODguMzIsMTA0LjFhNC42Niw0LjY2LDAsMCwwLTQuNC00Yy0yLDAtMzcuMjMtLjgtMzcuMjMtLjhzLTIxLjYxLTIwLjgyLTI5LjYyLTI4LjgzVjUwMy4yTDQ0Mi43Niw0NzJTMzg4LjcyLDEwNi41LDM4OC4zMiwxMDQuMVpNMjg4LjY1LDcwLjQ3YTExNi42NywxMTYuNjcsMCwwLDAtNy4yMS0xNy42MUMyNzEsMzIuODUsMjU1LjQyLDIyLDIzNywyMmExNSwxNSwwLDAsMC00LC40Yy0uNC0uOC0xLjItMS4yLTEuNi0yQzIyMy40LDExLjYzLDIxMyw3LjYzLDIwMC41OCw4Yy0yNCwuOC00OCwxOC02Ny4yNSw0OC44My0xMy42MSwyMS42Mi0yNCw0OC44NC0yNi44Miw3MC4wNi0yNy42Miw4LjQtNDYuODMsMTQuNDEtNDcuMjMsMTQuODEtMTQsNC40LTE0LjQxLDQuOC0xNiwxOC0xLjIsMTAtMzgsMjkxLjgyLTM4LDI5MS44MkwzMDcuODYsNTA0VjY1LjY3YTQxLjY2LDQxLjY2LDAsMCwwLTQuNC40UzI5Ny44Niw2Ny42NywyODguNjUsNzAuNDdaTTIzMy40MSw4Ny42OWMtMTYsNC44LTMzLjYzLDEwLjQtNTAuODQsMTUuNjEsNC44LTE4LjgyLDE0LjQxLTM3LjYzLDI1LjYyLTUwLDQuNC00LjQsMTAuNDEtOS42MSwxNy4yMS0xMi44MUMyMzIuMjEsNTQuODYsMjMzLjgxLDc0LjQ4LDIzMy40MSw4Ny42OVpNMjAwLjU4LDI0LjQ0QTI3LjQ5LDI3LjQ5LDAsMCwxLDIxNSwyOGMtNi40LDMuMi0xMi44MSw4LjQxLTE4LjgxLDE0LjQxLTE1LjIxLDE2LjQyLTI2LjgyLDQyLTMxLjYyLDY2LjQ1LTE0LjQyLDQuNDEtMjguODMsOC44MS00MiwxMi44MUMxMzEuMzMsODMuMjgsMTYzLjc1LDI1LjI0LDIwMC41OCwyNC40NFpNMTU0LjE1LDI0NC42MWMxLjYsMjUuNjEsNjkuMjUsMzEuMjIsNzMuMjUsOTEuNjYsMi44LDQ3LjY0LTI1LjIyLDgwLjA2LTY1LjY1LDgyLjQ3LTQ4LjgzLDMuMi03NS42NS0yNS42Mi03NS42NS0yNS42MmwxMC40LTQ0czI2LjgyLDIwLjQyLDQ4LjQ0LDE4LjgyYzE0LS44LDE5LjIyLTEyLjQxLDE4LjgxLTIwLjQyLTItMzMuNjItNTcuMjQtMzEuNjItNjAuODQtODYuODYtMy4yLTQ2LjQ0LDI3LjIyLTkzLjI3LDk0LjQ3LTk3LjY4LDI2LTEuNiwzOS4yMyw0LjgxLDM5LjIzLDQuODFMMjIxLjQsMjI1LjM5cy0xNy4yMS04LTM3LjYzLTYuNEMxNTQuMTUsMjIxLDE1My43NSwyMzkuOCwxNTQuMTUsMjQ0LjYxWk0yNDkuNDIsODIuODhjMC0xMi0xLjYtMjkuMjItNy4yMS00My42MywxOC40MiwzLjYsMjcuMjIsMjQsMzEuMjMsMzYuNDNRMjYyLjYzLDc4LjY4LDI0OS40Miw4Mi44OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcHdhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAzLjUgNDU1LjQxQTI0Ni4xNyAyNDYuMTcgMCAwIDEgMjU2IDUwNEMxMTguODEgNTA0IDggMzkzIDggMjU2IDggMTE4LjgxIDExOSA4IDI1NiA4YTI0Ny4zOSAyNDcuMzkgMCAwIDEgMTY1LjcgNjMuNSAzLjU3IDMuNTcgMCAwIDEtMi44NiA2LjE4QTQxOC42MiA0MTguNjIgMCAwIDAgMzYyLjEzIDc0Yy0xMjkuMzYgMC0yMjIuNCA1My40Ny0yMjIuNCAxNTUuMzUgMCAxMDkgOTIuMTMgMTQ1Ljg4IDE3Ni44MyAxNzguNzMgMzMuNjQgMTMgNjUuNCAyNS4zNiA4NyA0MS41OWEzLjU4IDMuNTggMCAwIDEgMCA1Ljcyek01MDMgMjMzLjA5YTMuNjQgMy42NCAwIDAgMC0xLjI3LTIuNDRjLTUxLjc2LTQzLTkzLjYyLTYwLjQ4LTE0NC40OC02MC40OC04NC4xMyAwLTgwLjI1IDUyLjE3LTgwLjI1IDUzLjYzIDAgNDIuNiA1Mi4wNiA2MiAxMTIuMzQgODQuNDkgMzEuMDcgMTEuNTkgNjMuMTkgMjMuNTcgOTIuNjggMzkuOTNhMy41NyAzLjU3IDAgMCAwIDUtMS44MkEyNDkgMjQ5IDAgMCAwIDUwMyAyMzMuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpbXBseWJ1aWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MS4yIDY0aC0xMDZjLTE0LjUgMC0yNi42IDExLjgtMjYuNiAyNi4zdjM5LjZIMTYzLjNWOTAuM2MwLTE0LjUtMTItMjYuMy0yNi42LTI2LjNoLTEwNkMxNi4xIDY0IDQuMyA3NS44IDQuMyA5MC4zdjMzMS40YzAgMTQuNSAxMS44IDI2LjMgMjYuNiAyNi4zaDQ1MC40YzE0LjggMCAyNi42LTExLjggMjYuNi0yNi4zVjkwLjNjLS4yLTE0LjUtMTItMjYuMy0yNi43LTI2LjN6TTE0OS44IDM1NS44Yy0zNi42IDAtNjYuNC0yOS43LTY2LjQtNjYuNCAwLTM2LjkgMjkuNy02Ni42IDY2LjQtNjYuNiAzNi45IDAgNjYuNiAyOS43IDY2LjYgNjYuNiAwIDM2LjctMjkuNyA2Ni40LTY2LjYgNjYuNHptMjEyLjQgMGMtMzYuOSAwLTY2LjYtMjkuNy02Ni42LTY2LjYgMC0zNi42IDI5LjctNjYuNCA2Ni42LTY2LjQgMzYuNiAwIDY2LjQgMjkuNyA2Ni40IDY2LjQgMCAzNi45LTI5LjggNjYuNi02Ni40IDY2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpc3RyaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDQ0OUwzMDEuMiAzMDAuMmMyMC0yNy45IDMxLjktNjIuMiAzMS45LTk5LjIgMC05My4xLTc0LjctMTY4LjktMTY2LjUtMTY4LjlDNzQuNyAzMiAwIDEwNy44IDAgMjAwLjlzNzQuNyAxNjguOSAxNjYuNSAxNjguOWMzOS44IDAgNzYuMy0xNC4yIDEwNS0zNy45bDE0NiAxNDguMSAzMC41LTMxek0xNjYuNSAzMzAuOGMtNzAuNiAwLTEyOC4xLTU4LjMtMTI4LjEtMTI5LjlTOTUuOSA3MSAxNjYuNSA3MXMxMjguMSA1OC4zIDEyOC4xIDEyOS45LTU3LjQgMTI5LjktMTI4LjEgMTI5Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMmw2OS43MSAxMTguNzUtNTguODYtMTEuNTIgNjkuODQgOTEuMDNhMTQ2Ljc0MSAxNDYuNzQxIDAgMCAwIDAgNTEuNDVsLTY5Ljg0IDkxLjAzIDU4Ljg2LTExLjUyTDAgNDgwbDExOC43NS02OS43MS0xMS41MiA1OC44NiA5MS4wMy02OS44NGMxNy4wMiAzLjA0IDM0LjQ3IDMuMDQgNTEuNDggMGw5MS4wMyA2OS44NC0xMS41Mi01OC44Nkw0NDggNDgwbC02OS43MS0xMTguNzggNTguODYgMTEuNTItNjkuODQtOTEuMDNjMy4wMy0xNy4wMSAzLjA0LTM0LjQ0IDAtNTEuNDVsNjkuODQtOTEuMDMtNTguODYgMTEuNTJMNDQ4IDMybC0xMTguNzUgNjkuNzEgMTEuNTItNTguOS05MS4wNiA2OS44N2MtOC41LTEuNTItMTcuMS0yLjI5LTI1LjcxLTIuMjlzLTE3LjIxLjc4LTI1LjcxIDIuMjlsLTkxLjA2LTY5Ljg3IDExLjUyIDU4LjlMMCAzMnptMjI0IDk5Ljc4YzMxLjggMCA2My42IDEyLjEyIDg3Ljg1IDM2LjM3IDQ4LjUgNDguNSA0OC40OSAxMjcuMjEgMCAxNzUuN3MtMTI3LjIgNDguNDYtMTc1LjctLjAzYy00OC41LTQ4LjUtNDguNDktMTI3LjIxIDAtMTc1LjcgMjQuMjQtMjQuMjUgNTYuMDUtMzYuMzQgODcuODUtMzYuMzR6bTAgMzYuNjZjLTIyLjQyIDAtNDQuODMgOC41Mi02MS45MiAyNS42MS0zNC4xOCAzNC4xOC0zNC4xOSA4OS42OCAwIDEyMy44N3M4OS42NSAzNC4xOCAxMjMuODQgMGMzNC4xOC0zNC4xOCAzNC4xOS04OS42OCAwLTEyMy44Ny0xNy4wOS0xNy4wOS0zOS41LTI1LjYxLTYxLjkyLTI1LjYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa2V0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcuNSAxNjIuMkw5IDE4Ny4xaDkwLjVsNi45LTEzMC43LTc4LjkgMTA1Ljh6TTM5Ni4zIDQ1LjdMMjY3LjcgMzJsMTM1LjcgMTQ3LjItNy4xLTEzMy41ek0xMTIuMiAyMTguM2wtMTEuMi0yMkg5LjlMMjM0LjggNDU4em0yLTMxLjJoMjg0bC04MS41LTg4LjVMMjU2LjMgMzN6bTI5Ny4zIDkuMUwyNzcuNiA0NThsMjI0LjgtMjYxLjdoLTkwLjl6TTQxNS40IDY5TDQwNiA1Ni40bC45IDE3LjMgNi4xIDExMy40aDkwLjN6TTExMy41IDkzLjVsLTQuNiA4NS42TDI0NC43IDMyIDExNi4xIDQ1Ljd6bTI4Ny43IDEwMi43aC0yOTBsNDIuNCA4Mi45TDI1Ni4zIDQ4MGwxNDQuOS0yODMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t5YXRsYXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDMyOS4zYzAgNjUuOS01Mi41IDExNC40LTExNy41IDExNC40LTE2NS45IDAtMTk2LjYtMjQ5LjctMzU5LjctMjQ5LjctMTQ2LjkgMC0xNDcuMSAyMTIuMiA1LjYgMjEyLjIgNDIuNSAwIDkwLjktMTcuOCAxMjUuMy00Mi41IDUuNi00LjEgMTYuOS0xNi4zIDIyLjgtMTYuM3MxMC45IDUgMTAuOSAxMC45YzAgNy44LTEzLjEgMTkuMS0xOC43IDI0LjEtNDAuOSAzNS42LTEwMC4zIDYxLjItMTU0LjcgNjEuMi04My40LjEtMTU0LTU5LTE1NC0xNDQuOXM2Ny41LTE0OS4xIDE1Mi44LTE0OS4xYzE4NS4zIDAgMjIyLjUgMjQ1LjkgMzYxLjkgMjQ1LjkgOTkuOSAwIDk0LjgtMTM5LjcgMy40LTEzOS43LTE3LjUgMC0zNSAxMS42LTQ2LjkgMTEuNi04LjQgMC0xNS45LTcuMi0xNS45LTE1LjYgMC0xMS42IDUuMy0yMy43IDUuMy0zNi4zIDAtNjYuNi01MC45LTExNC43LTExNi45LTExNC43LTUzLjEgMC04MCAzNi45LTg4LjggMzYuOS02LjIgMC0xMS4yLTUtMTEuMi0xMS4yIDAtNS42IDQuMS0xMC4zIDcuOC0xNC40IDI1LjMtMjguOCA2NC43LTQzLjcgMTAyLjgtNDMuNyA3OS40IDAgMTM5LjEgNTguNCAxMzkuMSAxMzcuOCAwIDYuOS0uMyAxMy43LTEuMiAyMC42IDExLjktMy4xIDI0LjEtNC43IDM1LjktNC43IDYwLjcgMCAxMTEuOSA0NS4zIDExMS45IDEwNy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa3lwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjQuNyAyOTkuOGMyLjktMTQgNC43LTI4LjkgNC43LTQzLjggMC0xMTMuNS05MS45LTIwNS4zLTIwNS4zLTIwNS4zLTE0LjkgMC0yOS43IDEuNy00My44IDQuN0MxNjEuMyA0MC43IDEzNy43IDMyIDExMiAzMiA1MC4yIDMyIDAgODIuMiAwIDE0NGMwIDI1LjcgOC43IDQ5LjMgMjMuMyA2OC4yLTIuOSAxNC00LjcgMjguOS00LjcgNDMuOCAwIDExMy41IDkxLjkgMjA1LjMgMjA1LjMgMjA1LjMgMTQuOSAwIDI5LjctMS43IDQzLjgtNC43IDE5IDE0LjYgNDIuNiAyMy4zIDY4LjIgMjMuMyA2MS44IDAgMTEyLTUwLjIgMTEyLTExMiAuMS0yNS42LTguNi00OS4yLTIzLjItNjguMXptLTE5NC42IDkxLjVjLTY1LjYgMC0xMjAuNS0yOS4yLTEyMC41LTY1IDAtMTYgOS0zMC42IDI5LjUtMzAuNiAzMS4yIDAgMzQuMSA0NC45IDg4LjEgNDQuOSAyNS43IDAgNDIuMy0xMS40IDQyLjMtMjYuMyAwLTE4LjctMTYtMjEuNi00Mi0yOC02Mi41LTE1LjQtMTE3LjgtMjItMTE3LjgtODcuMiAwLTU5LjIgNTguNi04MS4xIDEwOS4xLTgxLjEgNTUuMSAwIDExMC44IDIxLjkgMTEwLjggNTUuNCAwIDE2LjktMTEuNCAzMS44LTMwLjMgMzEuOC0yOC4zIDAtMjkuMi0zMy41LTc1LTMzLjUtMjUuNyAwLTQyIDctNDIgMjIuNSAwIDE5LjggMjAuOCAyMS44IDY5LjEgMzMgNDEuNCA5LjMgOTAuNyAyNi44IDkwLjcgNzcuNiAwIDU5LjEtNTcuMSA4Ni41LTExMiA4Ni41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGFja0hhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ2LjIgMjcwLjRjLTYuMi0xOS0yNi45LTI5LjEtNDYtMjIuOWwtNDUuNCAxNS4xLTMwLjMtOTAgNDUuNC0xNS4xYzE5LjEtNi4yIDI5LjEtMjYuOCAyMy00NS45LTYuMi0xOS0yNi45LTI5LjEtNDYtMjIuOWwtNDUuNCAxNS4xLTE1LjctNDdjLTYuMi0xOS0yNi45LTI5LjEtNDYtMjIuOS0xOS4xIDYuMi0yOS4xIDI2LjgtMjMgNDUuOWwxNS43IDQ3LTkzLjQgMzEuMi0xNS43LTQ3Yy02LjItMTktMjYuOS0yOS4xLTQ2LTIyLjktMTkuMSA2LjItMjkuMSAyNi44LTIzIDQ1LjlsMTUuNyA0Ny00NS4zIDE1Yy0xOS4xIDYuMi0yOS4xIDI2LjgtMjMgNDUuOSA1IDE0LjUgMTkuMSAyNCAzMy42IDI0LjYgNi44IDEgMTItMS42IDU3LjctMTYuOGwzMC4zIDkwTDc4IDM1NC44Yy0xOSA2LjItMjkuMSAyNi45LTIzIDQ1LjkgNSAxNC41IDE5LjEgMjQgMzMuNiAyNC42IDYuOCAxIDEyLTEuNiA1Ny43LTE2LjhsMTUuNyA0N2M1LjkgMTYuOSAyNC43IDI5IDQ2IDIyLjkgMTkuMS02LjIgMjkuMS0yNi44IDIzLTQ1LjlsLTE1LjctNDcgOTMuNi0zMS4zIDE1LjcgNDdjNS45IDE2LjkgMjQuNyAyOSA0NiAyMi45IDE5LjEtNi4yIDI5LjEtMjYuOCAyMy00NS45bC0xNS43LTQ3IDQ1LjQtMTUuMWMxOS02IDI5LjEtMjYuNyAyMi45LTQ1Ljd6bS0yNTQuMSA0Ny4ybC0zMC4zLTkwLjIgOTMuNS0zMS4zIDMwLjMgOTAuMi05My41IDMxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk0LjEyIDMxNS4xYzAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNlMwIDM0MSAwIDMxNS4xYzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNmg0Ny4wNnY0Ny4wNnptMjMuNzIgMGMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ2MTE3Ljg0YzAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNnMtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZWMzE1LjF6bTQ3LjA2LTE4OC45OGMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2UzEzOSAzMiAxNjQuOSAzMnM0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnY0Ny4wNkgxNjQuOXptMCAyMy43MmMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2SDQ3LjA2QzIxLjE2IDI0My45NiAwIDIyMi44IDAgMTk2LjlzMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZIMTY0Ljl6bTE4OC45OCA0Ny4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDYgMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2cy0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNmgtNDcuMDZWMTk2Ljl6bS0yMy43MiAwYzAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNi0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZWNzkuMDZjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2IDI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNlYxOTYuOXpNMjgzLjEgMzg1Ljg4YzI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNiAwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDYtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2di00Ny4wNmg0Ny4wNnptMC0yMy43MmMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2IDAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNmgxMTcuODRjMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2IDAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNkgyODMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xpZGVzaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODcuNyAxNTMuN2MtMzQgMC02MS43IDI1LjctNjEuNyA1Ny43IDAgMzEuNyAyNy43IDU3LjcgNjEuNyA1Ny43czYxLjctMjYgNjEuNy01Ny43YzAtMzItMjcuNy01Ny43LTYxLjctNTcuN3ptMTQzLjQgMGMtMzQgMC02MS43IDI1LjctNjEuNyA1Ny43IDAgMzEuNyAyNy43IDU3LjcgNjEuNyA1Ny43IDM0LjMgMCA2MS43LTI2IDYxLjctNTcuNy4xLTMyLTI3LjQtNTcuNy02MS43LTU3Ljd6bTE1Ni42IDkwbC02IDQuM1Y0OS43YzAtMjcuNC0yMC42LTQ5LjctNDYtNDkuN0g3Ni42Yy0yNS40IDAtNDYgMjIuMy00NiA0OS43VjI0OGMtMi0xLjQtNC4zLTIuOS02LjMtNC4zLTE1LjEtMTAuNi0yNS4xIDQtMTYgMTcuNyAxOC4zIDIyLjYgNTMuMSA1MC4zIDEwNi4zIDcyQzU4LjMgNTI1LjEgMjUyIDU1NS43IDI0OC45IDQ1Ny41YzAtLjcuMy01Ni42LjMtOTYuNiA1LjEgMS4xIDkuNCAyLjMgMTMuNyAzLjEgMCAzOS43LjMgOTIuOC4zIDkzLjUtMy4xIDk4LjMgMTkwLjYgNjcuNyAxMzQuMy0xMjQgNTMuMS0yMS43IDg4LTQ5LjQgMTA2LjMtNzIgOS4xLTEzLjgtLjktMjguMy0xNi4xLTE3Ljh6bS0zMC41IDE5LjJjLTY4LjkgMzcuNC0xMjguMyAzMS4xLTE2MC42IDI5LjctMjMuNy0uOS0zMi42IDkuMS0zMy43IDI0LjktMTAuMy03LjctMTguNi0xNS41LTIwLjMtMTcuMS01LjEtNS40LTEzLjctOC0yNy4xLTcuNy0zMS43IDEuMS04OS43IDcuNC0xNTcuNC0yOFY3Mi4zYzAtMzQuOSA4LjktNDUuNyA0MC42LTQ1LjdoMzE3LjdjMzAuMyAwIDQwLjkgMTIuOSA0MC45IDQ1Ljd2MTkwLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNuYXBjaGF0R2hvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjg0NiAzOTIuNjczYy01LjIxMSAxMi4xNTctMjcuMjM5IDIxLjA4OS02Ny4zNiAyNy4zMTgtMi4wNjQgMi43ODYtMy43NzUgMTQuNjg2LTYuNTA3IDIzLjk1Ni0xLjYyNSA1LjU2Ni01LjYyMyA4Ljg2OS0xMi4xMjggOC44NjlsLS4yOTctLjAwNWMtOS4zOTUgMC0xOS4yMDMtNC4zMjMtMzguODUyLTQuMzIzLTI2LjUyMSAwLTM1LjY2MiA2LjA0My01Ni4yNTQgMjAuNTg4LTIxLjgzMiAxNS40MzgtNDIuNzcxIDI4Ljc2NC03NC4wMjcgMjcuMzk5LTMxLjY0NiAyLjMzNC01OC4wMjUtMTYuOTA4LTcyLjg3MS0yNy40MDQtMjAuNzE0LTE0LjY0My0yOS44MjgtMjAuNTgyLTU2LjI0MS0yMC41ODItMTguODY0IDAtMzAuNzM2IDQuNzItMzguODUyIDQuNzItOC4wNzMgMC0xMS4yMTMtNC45MjItMTIuNDIyLTkuMDQtMi43MDMtOS4xODktNC40MDQtMjEuMjYzLTYuNTIzLTI0LjEzLTIwLjY3OS0zLjIwOS02Ny4zMS0xMS4zNDQtNjguNDk4LTMyLjE1YTEwLjYyNyAxMC42MjcgMCAwIDEgOC44NzctMTEuMDY5YzY5LjU4My0xMS40NTUgMTAwLjkyNC04Mi45MDEgMTAyLjIyNy04NS45MzQuMDc0LS4xNzYuMTU1LS4zNDQuMjM3LS41MTUgMy43MTMtNy41MzcgNC41NDQtMTMuODQ5IDIuNDYzLTE4Ljc1My01LjA1LTExLjg5Ni0yNi44NzItMTYuMTY0LTM2LjA1My0xOS43OTYtMjMuNzE1LTkuMzY2LTI3LjAxNS0yMC4xMjgtMjUuNjEyLTI3LjUwNCAyLjQzNy0xMi44MzYgMjEuNzI1LTIwLjczNSAzMy4wMDItMTUuNDUzIDguOTE5IDQuMTgxIDE2Ljg0MyA2LjI5NyAyMy41NDcgNi4yOTcgNS4wMjIgMCA4LjIxMi0xLjIwNCA5Ljk2LTIuMTcxLTIuMDQzLTM1LjkzNi03LjEwMS04Ny4yOSA1LjY4Ny0xMTUuOTY5QzE1OC4xMjIgMjEuMzA0IDIyOS43MDUgMTUuNDIgMjUwLjgyNiAxNS40MmMuOTQ0IDAgOS4xNDEtLjA4OSAxMC4xMS0uMDg5IDUyLjE0OCAwIDEwMi4yNTQgMjYuNzggMTI2LjcyMyA4MS42NDMgMTIuNzc3IDI4LjY1IDcuNzQ5IDc5Ljc5MiA1LjY5NSAxMTYuMDA5IDEuNTgyLjg3MiA0LjM1NyAxLjk0MiA4LjU5OSAyLjEzOSA2LjM5Ny0uMjg2IDEzLjgxNS0yLjM4OSAyMi4wNjktNi4yNTcgNi4wODUtMi44NDYgMTQuNDA2LTIuNDYxIDIwLjQ4LjA1OGwuMDI5LjAxYzkuNDc2IDMuMzg1IDE1LjQzOSAxMC4yMTUgMTUuNTg5IDE3Ljg3LjE4NCA5Ljc0Ny04LjUyMiAxOC4xNjUtMjUuODc4IDI1LjAxOC0yLjExOC44MzUtNC42OTQgMS42NTUtNy40MzQgMi41MjUtOS43OTcgMy4xMDYtMjQuNiA3LjgwNS0yOC42MTYgMTcuMjcxLTIuMDc5IDQuOTA0LTEuMjU2IDExLjIxMSAyLjQ2IDE4Ljc0OC4wODcuMTY4LjE2Ni4zNDIuMjM5LjUxNSAxLjMwMSAzLjAzIDMyLjYxNSA3NC40NiAxMDIuMjMgODUuOTM0IDYuNDI3IDEuMDU4IDExLjE2MyA3Ljg3NyA3LjcyNSAxNS44NTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNuYXBjaGF0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS02LjUgMzE0LjljLTMuNSA4LjEtMTguMSAxNC00NC44IDE4LjItMS40IDEuOS0yLjUgOS44LTQuMyAxNS45LTEuMSAzLjctMy43IDUuOS04LjEgNS45aC0uMmMtNi4yIDAtMTIuOC0yLjktMjUuOC0yLjktMTcuNiAwLTIzLjcgNC0zNy40IDEzLjctMTQuNSAxMC4zLTI4LjQgMTkuMS00OS4yIDE4LjItMjEgMS42LTM4LjYtMTEuMi00OC41LTE4LjItMTMuOC05LjctMTkuOC0xMy43LTM3LjQtMTMuNy0xMi41IDAtMjAuNCAzLjEtMjUuOCAzLjEtNS40IDAtNy41LTMuMy04LjMtNi0xLjgtNi4xLTIuOS0xNC4xLTQuMy0xNi0xMy44LTIuMS00NC44LTcuNS00NS41LTIxLjQtLjItMy42IDIuMy02LjggNS45LTcuNCA0Ni4zLTcuNiA2Ny4xLTU1LjEgNjgtNTcuMSAwLS4xLjEtLjIuMi0uMyAyLjUtNSAzLTkuMiAxLjYtMTIuNS0zLjQtNy45LTE3LjktMTAuNy0yNC0xMy4yLTE1LjgtNi4yLTE4LTEzLjQtMTctMTguMyAxLjYtOC41IDE0LjQtMTMuOCAyMS45LTEwLjMgNS45IDIuOCAxMS4yIDQuMiAxNS43IDQuMiAzLjMgMCA1LjUtLjggNi42LTEuNC0xLjQtMjMuOS00LjctNTggMy44LTc3LjFDMTU5LjEgMTAwIDIwNi43IDk2IDIyMC43IDk2Yy42IDAgNi4xLS4xIDYuNy0uMSAzNC43IDAgNjggMTcuOCA4NC4zIDU0LjMgOC41IDE5LjEgNS4yIDUzLjEgMy44IDc3LjEgMS4xLjYgMi45IDEuMyA1LjcgMS40IDQuMy0uMiA5LjItMS42IDE0LjctNC4yIDQtMS45IDkuNi0xLjYgMTMuNiAwIDYuMyAyLjMgMTAuMyA2LjggMTAuNCAxMS45LjEgNi41LTUuNyAxMi4xLTE3LjIgMTYuNi0xLjQuNi0zLjEgMS4xLTQuOSAxLjctNi41IDIuMS0xNi40IDUuMi0xOSAxMS41LTEuNCAzLjMtLjggNy41IDEuNiAxMi41LjEuMS4xLjIuMi4zLjkgMiAyMS43IDQ5LjUgNjggNTcuMSA0IDEgNy4xIDUuNSA0LjkgMTAuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25hcGNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTY5LjUgMzM4LjljLTMuNSA4LjEtMTguMSAxNC00NC44IDE4LjItMS40IDEuOS0yLjUgOS44LTQuMyAxNS45LTEuMSAzLjctMy43IDUuOS04LjEgNS45aC0uMmMtNi4yIDAtMTIuOC0yLjktMjUuOC0yLjktMTcuNiAwLTIzLjcgNC0zNy40IDEzLjctMTQuNSAxMC4zLTI4LjQgMTkuMS00OS4yIDE4LjItMjEgMS42LTM4LjYtMTEuMi00OC41LTE4LjItMTMuOC05LjctMTkuOC0xMy43LTM3LjQtMTMuNy0xMi41IDAtMjAuNCAzLjEtMjUuOCAzLjEtNS40IDAtNy41LTMuMy04LjMtNi0xLjgtNi4xLTIuOS0xNC4xLTQuMy0xNi0xMy44LTIuMS00NC44LTcuNS00NS41LTIxLjQtLjItMy42IDIuMy02LjggNS45LTcuNCA0Ni4zLTcuNiA2Ny4xLTU1LjEgNjgtNTcuMSAwLS4xLjEtLjIuMi0uMyAyLjUtNSAzLTkuMiAxLjYtMTIuNS0zLjQtNy45LTE3LjktMTAuNy0yNC0xMy4yLTE1LjgtNi4yLTE4LTEzLjQtMTctMTguMyAxLjYtOC41IDE0LjQtMTMuOCAyMS45LTEwLjMgNS45IDIuOCAxMS4yIDQuMiAxNS43IDQuMiAzLjMgMCA1LjUtLjggNi42LTEuNC0xLjQtMjMuOS00LjctNTggMy44LTc3LjFDMTgzLjEgMTAwIDIzMC43IDk2IDI0NC43IDk2Yy42IDAgNi4xLS4xIDYuNy0uMSAzNC43IDAgNjggMTcuOCA4NC4zIDU0LjMgOC41IDE5LjEgNS4yIDUzLjEgMy44IDc3LjEgMS4xLjYgMi45IDEuMyA1LjcgMS40IDQuMy0uMiA5LjItMS42IDE0LjctNC4yIDQtMS45IDkuNi0xLjYgMTMuNiAwIDYuMyAyLjMgMTAuMyA2LjggMTAuNCAxMS45LjEgNi41LTUuNyAxMi4xLTE3LjIgMTYuNi0xLjQuNi0zLjEgMS4xLTQuOSAxLjctNi41IDIuMS0xNi40IDUuMi0xOSAxMS41LTEuNCAzLjMtLjggNy41IDEuNiAxMi41LjEuMS4xLjIuMi4zLjkgMiAyMS43IDQ5LjUgNjggNTcuMSA0IDEgNy4xIDUuNSA0LjkgMTAuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU291bmRjbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyNTYuM2w1LjggNjUtNS44IDY4LjNjLS4zIDIuNS0yLjIgNC40LTQuNCA0LjRzLTQuMi0xLjktNC4yLTQuNGwtNS42LTY4LjMgNS42LTY1YzAtMi4yIDEuOS00LjIgNC4yLTQuMiAyLjIgMCA0LjEgMiA0LjQgNC4yem0yMS40LTQ1LjZjLTIuOCAwLTQuNyAyLjItNSA1bC01IDEwNS42IDUgNjguM2MuMyAyLjggMi4yIDUgNSA1IDIuNSAwIDQuNy0yLjIgNC43LTVsNS44LTY4LjMtNS44LTEwNS42YzAtMi44LTIuMi01LTQuNy01em0yNS41LTI0LjFjLTMuMSAwLTUuMyAyLjItNS42IDUuM2wtNC40IDEzMCA0LjQgNjcuOGMuMyAzLjEgMi41IDUuMyA1LjYgNS4zIDIuOCAwIDUuMy0yLjIgNS4zLTUuM2w1LjMtNjcuOC01LjMtMTMwYzAtMy4xLTIuNS01LjMtNS4zLTUuM3pNNy4yIDI4My4yYy0xLjQgMC0yLjIgMS4xLTIuNSAyLjVMMCAzMjEuM2w0LjcgMzVjLjMgMS40IDEuMSAyLjUgMi41IDIuNXMyLjItMS4xIDIuNS0yLjVsNS42LTM1LTUuNi0zNS42Yy0uMy0xLjQtMS4xLTIuNS0yLjUtMi41em0yMy42LTIxLjljLTEuNCAwLTIuNSAxLjEtMi41IDIuNWwtNi40IDU3LjUgNi40IDU2LjFjMCAxLjcgMS4xIDIuOCAyLjUgMi44czIuNS0xLjEgMi44LTIuNWw3LjItNTYuNC03LjItNTcuNWMtLjMtMS40LTEuNC0yLjUtMi44LTIuNXptMjUuMy0xMS40Yy0xLjcgMC0zLjEgMS40LTMuMyAzLjNMNDcgMzIxLjNsNS44IDY1LjhjLjMgMS43IDEuNyAzLjEgMy4zIDMuMSAxLjcgMCAzLjEtMS40IDMuMS0zLjFsNi45LTY1LjgtNi45LTY4LjFjMC0xLjktMS40LTMuMy0zLjEtMy4zem0yNS4zLTIuMmMtMS45IDAtMy42IDEuNC0zLjYgMy42bC01LjggNzAgNS44IDY3LjhjMCAyLjIgMS43IDMuNiAzLjYgMy42czMuNi0xLjQgMy45LTMuNmw2LjQtNjcuOC02LjQtNzBjLS4zLTIuMi0yLTMuNi0zLjktMy42em0yNDEuNC0xMTAuOWMtMS4xLS44LTIuOC0xLjQtNC4yLTEuNC0yLjIgMC00LjIuOC01LjYgMS45LTEuOSAxLjctMy4xIDQuMi0zLjMgNi43di44bC0zLjMgMTc2LjcgMS43IDMyLjUgMS43IDMxLjdjLjMgNC43IDQuMiA4LjYgOC45IDguNnM4LjYtMy45IDguNi04LjZsMy45LTY0LjItMy45LTE3Ny41Yy0uNC0zLTItNS44LTQuNS03LjJ6bS0yNi43IDE1LjNjLTEuNC0uOC0yLjgtMS40LTQuNC0xLjRzLTMuMS42LTQuNCAxLjRjLTIuMiAxLjQtMy42IDMuOS0zLjYgNi43bC0uMyAxLjctMi44IDE2MC44czAgLjMgMy4xIDY1LjZ2LjNjMCAxLjcuNiAzLjMgMS43IDQuNyAxLjcgMS45IDMuOSAzLjEgNi40IDMuMSAyLjIgMCA0LjItMS4xIDUuNi0yLjUgMS43LTEuNCAyLjUtMy4zIDIuNS01LjZsLjMtNi43IDMuMS01OC42LTMuMy0xNjIuOGMtLjMtMi44LTEuNy01LjMtMy45LTYuN3ptLTExMS40IDIyLjVjLTMuMSAwLTUuOCAyLjgtNS44IDYuMWwtNC40IDE0MC42IDQuNCA2Ny4yYy4zIDMuMyAyLjggNS44IDUuOCA1LjggMy4zIDAgNS44LTIuNSA2LjEtNS44bDUtNjcuMi01LTE0MC42Yy0uMi0zLjMtMi43LTYuMS02LjEtNi4xem0zNzYuNyA2Mi44Yy0xMC44IDAtMjEuMSAyLjItMzAuNiA2LjEtNi40LTcwLjgtNjUuOC0xMjYuNC0xMzguMy0xMjYuNC0xNy44IDAtMzUgMy4zLTUwLjMgOS40LTYuMSAyLjItNy44IDQuNC03LjggOS4ydjI0OS43YzAgNSAzLjkgOC42IDguNiA5LjJoMjE4LjNjNDMuMyAwIDc4LjYtMzUgNzguNi03OC4zLjEtNDMuNi0zNS4yLTc4LjktNzguNS03OC45em0tMjk2LjctNjAuM2MtNC4yIDAtNy41IDMuMy03LjggNy44bC0zLjMgMTM2LjcgMy4zIDY1LjZjLjMgNC4yIDMuNiA3LjUgNy44IDcuNSA0LjIgMCA3LjUtMy4zIDcuNS03LjVsMy45LTY1LjYtMy45LTEzNi43Yy0uMy00LjUtMy4zLTcuOC03LjUtNy44em0tNTMuNi03LjhjLTMuMyAwLTYuNCAzLjEtNi40IDYuN2wtMy45IDE0NS4zIDMuOSA2Ni45Yy4zIDMuNiAzLjEgNi40IDYuNCA2LjQgMy42IDAgNi40LTIuOCA2LjctNi40bDQuNC02Ni45LTQuNC0xNDUuM2MtLjMtMy42LTMuMS02LjctNi43LTYuN3ptMjYuNyAzLjRjLTMuOSAwLTYuOSAzLjEtNi45IDYuOUwyMjcgMzIxLjNsMy45IDY2LjRjLjMgMy45IDMuMSA2LjkgNi45IDYuOXM2LjktMy4xIDYuOS02LjlsNC4yLTY2LjQtNC4yLTE0MS43YzAtMy45LTMtNi45LTYuOS02Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvdXJjZXRyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI3LjIgMjAzYzAtMTEyLjEtOTAuOS0yMDMtMjAzLTIwM0MxMTIuMS0uMiAyMS4yIDkwLjYgMjEgMjAyLjZBMjAyLjg2IDIwMi44NiAwIDAgMCAxNjEuNSAzOTZ2MTAxLjdhMTQuMyAxNC4zIDAgMCAwIDE0LjMgMTQuM2g5Ni40YTE0LjMgMTQuMyAwIDAgMCAxNC4zLTE0LjNWMzk2LjFBMjAzLjE4IDIwMy4xOCAwIDAgMCA0MjcuMiAyMDN6bS0yNzEuNiAwYzAtOTAuOCAxMzcuMy05MC44IDEzNy4zIDAtLjEgODkuOS0xMzcuMyA5MS0xMzcuMyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGVha2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDM5MS43OEMtMTUuNDEgMzAzLjU5LTggMTY3LjQyIDgwLjY0IDg3LjY0czIyNC44LTczIDMwNC4yMSAxNS4yNCA3MiAyMjQuMzYtMTYuNjQgMzA0LjE0Yy0xOC43NCAxNi44NyA2NCA0My4wOSA0MiA1Mi4yNi04Mi4wNiAzNC4yMS0yNTMuOTEgMzUtMzQ2LjIzLTY3LjV6bTIxMy4zMS0yMTEuNmwzOC41LTQwLjg2Yy05LjYxLTguODktMzItMjYuODMtNzYuMTctMjcuNi01Mi4zMy0uOTEtOTUuODYgMjguMy05Ni43NyA4MC0uMiAxMS4zMy4yOSAzNi43MiAyOS40MiA1NC44MyAzNC40NiAyMS40MiA4Ni41MiAyMS41MSA4NiA1Mi4yNi0uMzcgMjEuMjgtMjYuNDIgMjUuODEtMzguNTkgMjUuNi0zLS4wNS0zMC4yMy0uNDYtNDcuNjEtMjQuNjJsLTQwIDQyLjYxYzI4LjE2IDI3IDU5IDMyLjYyIDgzLjQ5IDMzLjA1IDEwLjIzLjE4IDk2LjQyLjMzIDk3Ljg0LTgxIC4yOC0xNS44MS0yLjA3LTM5LjcyLTI4Ljg2LTU2LjU5LTM0LjM2LTIxLjY0LTg1LTE5LjQ1LTg0LjQzLTQ5Ljc1LjQxLTIzLjI1IDMxLTI1LjM3IDM3LjUzLTI1LjI2LjQzIDAgMjYuNjIuMjYgMzkuNjIgMTcuMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwZWFrZXJEZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMy44NiAyOTZIMTAwYTEwMCAxMDAgMCAwIDEgMC0yMDBoMTMyLjg0YTQwIDQwIDAgMCAxIDAgODBIOThjLTI2LjQ3IDAtMjYuNDUgNDAgMCA0MGgxMTMuODJhMTAwIDEwMCAwIDAgMSAwIDIwMEg0MGE0MCA0MCAwIDAgMSAwLTgwaDE3My44NmMyNi40OCAwIDI2LjQ2LTQwIDAtNDB6TTI5OCA0MTZhMTIwLjIxIDEyMC4yMSAwIDAgMCA1MS4xMS04MGg2NC41NWExOS44MyAxOS44MyAwIDAgMCAxOS42Ni0yMFYxOTZhMTkuODMgMTkuODMgMCAwIDAtMTkuNjYtMjBIMjk2LjQyYTYwLjc3IDYwLjc3IDAgMCAwIDAtODBoMTM2LjkzYzQzLjQ0IDAgNzguNjUgMzUuODIgNzguNjUgODB2MTYwYzAgNDQuMTgtMzUuMjEgODAtNzguNjUgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwb3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjEgOCAwIDExOS4xIDAgMjU2czExMS4xIDI0OCAyNDggMjQ4IDI0OC0xMTEuMSAyNDgtMjQ4UzM4NC45IDggMjQ4IDh6bTEwMC43IDM2NC45Yy00LjIgMC02LjgtMS4zLTEwLjctMy42LTYyLjQtMzcuNi0xMzUtMzkuMi0yMDYuNy0yNC41LTMuOSAxLTkgMi42LTExLjkgMi42LTkuNyAwLTE1LjgtNy43LTE1LjgtMTUuOCAwLTEwLjMgNi4xLTE1LjIgMTMuNi0xNi44IDgxLjktMTguMSAxNjUuNi0xNi41IDIzNyAyNi4yIDYuMSAzLjkgOS43IDcuNCA5LjcgMTYuNXMtNy4xIDE1LjQtMTUuMiAxNS40em0yNi45LTY1LjZjLTUuMiAwLTguNy0yLjMtMTIuMy00LjItNjIuNS0zNy0xNTUuNy01MS45LTIzOC42LTI5LjQtNC44IDEuMy03LjQgMi42LTExLjkgMi42LTEwLjcgMC0xOS40LTguNy0xOS40LTE5LjRzNS4yLTE3LjggMTUuNS0yMC43YzI3LjgtNy44IDU2LjItMTMuNiA5Ny44LTEzLjYgNjQuOSAwIDEyNy42IDE2LjEgMTc3IDQ1LjUgOC4xIDQuOCAxMS4zIDExIDExLjMgMTkuNy0uMSAxMC44LTguNSAxOS41LTE5LjQgMTkuNXptMzEtNzYuMmMtNS4yIDAtOC40LTEuMy0xMi45LTMuOS03MS4yLTQyLjUtMTk4LjUtNTIuNy0yODAuOS0yOS43LTMuNiAxLTguMSAyLjYtMTIuOSAyLjYtMTMuMiAwLTIzLjMtMTAuMy0yMy4zLTIzLjYgMC0xMy42IDguNC0yMS4zIDE3LjQtMjMuOSAzNS4yLTEwLjMgNzQuNi0xNS4yIDExNy41LTE1LjIgNzMgMCAxNDkuNSAxNS4yIDIwNS40IDQ3LjggNy44IDQuNSAxMi45IDEwLjcgMTIuOSAyMi42IDAgMTMuNi0xMSAyMy4zLTIzLjIgMjMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlc3BhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg2LjEyIDM0My4zNGMtOS42NSA5LjY1LTkuNjUgMjUuMjkgMCAzNC45NCA5LjY1IDkuNjUgMjUuMjkgOS42NSAzNC45NCAwTDM3OC4yNCAyMjEuMWMxOS4yOS0xOS4yOSA1MC41Ny0xOS4yOSA2OS44NiAwczE5LjI5IDUwLjU3IDAgNjkuODZMMjkzLjk1IDQ0NS4xYzE5LjI3IDE5LjI5IDUwLjUzIDE5LjMxIDY5LjgyLjA0bC4wNC0uMDQgMTE5LjI1LTExOS4yNGMzOC41OS0zOC41OSAzOC41OS0xMDEuMTQgMC0xMzkuNzItMzguNTktMzguNTktMTAxLjE1LTM4LjU5LTEzOS43MiAwbC0xNTcuMjIgMTU3LjJ6bTI0NC41My0xMDQuOGMtOS42NS05LjY1LTI1LjI5LTkuNjUtMzQuOTMgMGwtMTU3LjIgMTU3LjE4Yy0xOS4yNyAxOS4yOS01MC41MyAxOS4zMS02OS44Mi4wNWwtLjA1LS4wNWMtOS42NC05LjY0LTI1LjI3LTkuNjUtMzQuOTItLjAxbC0uMDEuMDFjLTkuNjUgOS42NC05LjY2IDI1LjI4LS4wMiAzNC45M2wuMDIuMDJjMzguNTggMzguNTcgMTAxLjE0IDM4LjU3IDEzOS43MiAwbDE1Ny4yLTE1Ny4yYzkuNjUtOS42NSA5LjY1LTI1LjI5LjAxLTM0Ljkzem0tMjYxLjk5IDg3LjMzbDE1Ny4xOC0xNTcuMThjOS42NC05LjY1IDkuNjQtMjUuMjkgMC0zNC45NC05LjY0LTkuNjQtMjUuMjctOS42NC0zNC45MSAwTDEzMy43MiAyOTAuOTNjLTE5LjI4IDE5LjI5LTUwLjU2IDE5LjMtNjkuODUuMDFsLS4wMS0uMDFjLTE5LjI5LTE5LjI4LTE5LjMxLTUwLjU0LS4wMy02OS44NGwuMDMtLjAzTDIxOC4wMyA2Ni44OWMtMTkuMjgtMTkuMjktNTAuNTUtMTkuMy02OS44NS0uMDJsLS4wMi4wMkwyOC45MyAxODYuMTRjLTM4LjU4IDM4LjU5LTM4LjU4IDEwMS4xNCAwIDEzOS43MiAzOC42IDM4LjU5IDEwMS4xMyAzOC41OSAxMzkuNzMuMDF6bS04Ny4zMy01Mi40YzkuNjQgOS42NCAyNS4yNyA5LjY0IDM0LjkxIDBsMTU3LjIxLTE1Ny4xOWMxOS4yOC0xOS4yOSA1MC41NS0xOS4zIDY5Ljg0LS4wMmwuMDIuMDJjOS42NSA5LjY1IDI1LjI5IDkuNjUgMzQuOTMgMCA5LjY1LTkuNjUgOS42NS0yNS4yOSAwLTM0LjkzLTM4LjU5LTM4LjU5LTEwMS4xMy0zOC41OS0xMzkuNzIgMEw4MS4zMyAyMzguNTRjLTkuNjUgOS42NC05LjY1IDI1LjI4LS4wMSAzNC45M2guMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrRXhjaGFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNyAzMzIuM2g0MTIuN3YyMmMwIDM3LjctMjkuMyA2OC02NS4zIDY4aC0xOUwyNTkuMyA1MTJ2LTg5LjdIODNjLTM2IDAtNjUuMy0zMC4zLTY1LjMtNjh2LTIyem0wLTIzLjZoNDEyLjd2LTg1SDE3Ljd2ODV6bTAtMTA5LjRoNDEyLjd2LTg1SDE3Ljd2ODV6TTM2NSAwSDgzQzQ3IDAgMTcuNyAzMC4zIDE3LjcgNjcuN1Y5MGg0MTIuN1Y2Ny43QzQzMC4zIDMwLjMgNDAxIDAgMzY1IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrT3ZlcmZsb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkwLjcgMzExTDk1IDI2OS43IDg2LjggMzA5bDE5NS43IDQxem01MS04N0wxODguMiA5NS43bC0yNS41IDMwLjggMTUzLjUgMTI4LjN6bS0zMS4yIDM5LjdMMTI5LjIgMTc5bC0xNi43IDM2LjVMMjkzLjcgMzAwek0yNjIgMzJsLTMyIDI0IDExOS4zIDE2MC4zIDMyLTI0em0yMC41IDMyOGgtMjAwdjM5LjdoMjAwem0zOS43IDgwSDQyLjdWMzIwaC00MHYxNjBoMzU5LjVWMzIwaC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhY2twYXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0NC42IDIzMi40YzAgOC41LTQuMjYgMjAuNDktMjEuMzQgMjAuNDloLTE5LjYxdi00MS40N2gxOS42MWMxNy4xMyAwIDIxLjM0IDEyLjM2IDIxLjM0IDIwLjk4ek00NDggMzJ2NDQ4SDBWMzJ6TTE1MS4zIDI4Ny44NGMwLTIxLjI0LTEyLjEyLTM0LjU0LTQ2LjcyLTQ0Ljg1LTIwLjU3LTcuNDEtMjYtMTAuOTEtMjYtMTguNjNzNy0xNC42MSAyMC40MS0xNC42MWMxNC4wOSAwIDIwLjc5IDguNDUgMjAuNzkgMTguMzVoMzAuN2wuMTktLjU3Yy41LTE5LjU3LTE1LjA2LTQxLjY1LTUxLjEyLTQxLjY1LTIzLjM3IDAtNTIuNTUgMTAuNzUtNTIuNTUgMzguMjkgMCAxOS40IDkuMjUgMzEuMjkgNTAuNzQgNDQuMzcgMTcuMjYgNi4xNSAyMS45MSAxMC40IDIxLjkxIDE5LjQ4IDAgMTUuMi0xOS4xMyAxNC4yMy0xOS40NyAxNC4yMy0yMC40IDAtMjUuNjUtOS4xLTI1LjY1LTIxLjloLTMwLjhsLS4xOC41NmMtLjY4IDMxLjMyIDI4LjM4IDQ1LjIyIDU2LjYzIDQ1LjIyIDI5Ljk4IDAgNTEuMTItMTMuNTUgNTEuMTItMzguMjl6bTEyNS4zOC01NS42M2MwLTI1LjMtMTguNDMtNDUuNDYtNTMuNDItNDUuNDZoLTUxLjc4djEzOC4xOGgzMi4xN3YtNDcuMzZoMTkuNjFjMzAuMjUgMCA1My40Mi0xNS45NSA1My40Mi00NS4zNnpNMjk3Ljk0IDMyNUwzNDcgMTg2Ljc4aC0zMS4wOUwyNjggMzI1em0xMDYuNTItMTM4LjIyaC0zMS4wOUwzMjUuNDYgMzI1aDI5Ljk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGF5bGlua2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Mi43IDI5Mi41bDIuNyAyLjctMTcwLTE2Ny4zYy0zLjUtMy41LTkuNy0zLjctMTMuOC0uNUwxNDQuMyAxNzFjLTQuMiAzLjItNC42IDguNy0xLjEgMTIuMmw2OC4xIDY0LjNjMy42IDMuNSA5LjkgMy43IDE0IC41bC4xLS4xYzQuMS0zLjIgMTAuNC0zIDE0IC41bDg0IDgxLjNjMy42IDMuNSAzLjIgOS0uOSAxMi4ybC05My4yIDc0Yy00LjIgMy4zLTEwLjUgMy4xLTE0LjItLjRMNjMuMiAyNjhjLTMuNS0zLjUtOS43LTMuNy0xMy45LS41TDMuNSAzMDIuNGMtNC4yIDMuMi00LjcgOC43LTEuMiAxMi4yTDIxMSA1MTAuN3M3LjQgNi44IDE3LjMtLjhsMTk4LTE2My45YzQtMy4yIDQuNC04LjcuNy0xMi4yem01NC41LTgzLjRMMjI2LjcgMi41Yy0xLjUtMS4yLTgtNS41LTE2LjMgMS4xTDMuNiAxNjUuN2MtNC4yIDMuMi00LjggOC43LTEuMiAxMi4ybDQyLjMgNDEuNyAxNzEuNyAxNjUuMWMzLjcgMy41IDEwLjEgMy43IDE0LjMuNGw1MC4yLTM4LjgtLjMtLjMgNy43LTZjNC4yLTMuMiA0LjYtOC43LjktMTIuMmwtNTcuMS01NC40Yy0zLjYtMy41LTEwLTMuNy0xNC4yLS41bC0uMS4xYy00LjIgMy4yLTEwLjUgMy4xLTE0LjItLjRMMTA5IDE4MC44Yy0zLjYtMy41LTMuMS04LjkgMS4xLTEyLjJsOTIuMi03MS41YzQuMS0zLjIgMTAuMy0zIDEzLjkuNWwxNjAuNCAxNTljMy43IDMuNSAxMCAzLjcgMTQuMS41bDQ1LjgtMzUuOGM0LjEtMy4yIDQuNC04LjcuNy0xMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVhbVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODUuMiAzNTYuNWM3LjctMTguNS0xLTM5LjctMTkuNi00Ny40bC0yOS41LTEyLjJjMTEuNC00LjMgMjQuMy00LjUgMzYuNC41IDEyLjIgNS4xIDIxLjYgMTQuNiAyNi43IDI2LjcgNSAxMi4yIDUgMjUuNi0uMSAzNy43LTEwLjUgMjUuMS0zOS40IDM3LTY0LjYgMjYuNS0xMS42LTQuOC0yMC40LTEzLjYtMjUuNC0yNC4ybDI4LjUgMTEuOGMxOC42IDcuOCAzOS45LS45IDQ3LjYtMTkuNHpNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MTYwLjdsMTE2LjYgNDguMWMxMi04LjIgMjYuMi0xMi4xIDQwLjctMTEuM2w1NS40LTgwLjJ2LTEuMWMwLTQ4LjIgMzkuMy04Ny41IDg3LjYtODcuNXM4Ny42IDM5LjMgODcuNiA4Ny41YzAgNDkuMi00MC45IDg4LjctODkuNiA4Ny41bC03OSA1Ni4zYzEuNiAzOC41LTI5LjEgNjguOC02NS43IDY4LjgtMzEuOCAwLTU4LjUtMjIuNy02NC41LTUyLjdMMCAzMTkuMlY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tOTkuNyAyMjIuNWMtMzIuMiAwLTU4LjQtMjYuMS01OC40LTU4LjNzMjYuMi01OC4zIDU4LjQtNTguMyA1OC40IDI2LjIgNTguNCA1OC4zLTI2LjIgNTguMy01OC40IDU4LjN6bS4xLTE0LjZjMjQuMiAwIDQzLjktMTkuNiA0My45LTQzLjggMC0yNC4yLTE5LjYtNDMuOC00My45LTQzLjgtMjQuMiAwLTQzLjkgMTkuNi00My45IDQzLjggMCAyNC4yIDE5LjcgNDMuOCA0My45IDQzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0ZWFtU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5NS41IDE3Ny41YzAgMzMuOC0yNy41IDYxLTYxIDYxLTMzLjggMC02MS0yNy4zLTYxLTYxczI3LjMtNjEgNjEtNjFjMzMuNSAwIDYxIDI3LjIgNjEgNjF6bTUyLjUuMmMwIDYzLTUxIDExMy44LTExMy43IDExMy44TDIyNSAzNzEuM2MtNCA0My00MC41IDc2LjgtODQuNSA3Ni44LTQwLjUgMC03NC43LTI4LjgtODMtNjdMMCAzNThWMjUwLjdMOTcuMiAyOTBjMTUuMS05LjIgMzIuMi0xMy4zIDUyLTExLjVsNzEtMTAxLjdjLjUtNjIuMyA1MS41LTExMi44IDExNC0xMTIuOEMzOTcgNjQgNDQ4IDExNSA0NDggMTc3Ljd6TTIwMyAzNjNjMC0zNC43LTI3LjgtNjIuNS02Mi41LTYyLjUtNC41IDAtOSAuNS0xMy41IDEuNWwyNiAxMC41YzI1LjUgMTAuMiAzOCAzOSAyNy43IDY0LjUtMTAuMiAyNS41LTM5LjIgMzgtNjQuNyAyNy41LTEwLjItNC0yMC41LTguMy0zMC43LTEyLjIgMTAuNSAxOS43IDMxLjIgMzMuMiA1NS4yIDMzLjIgMzQuNyAwIDYyLjUtMjcuOCA2Mi41LTYyLjV6bTIwNy41LTE4NS4zYzAtNDItMzQuMy03Ni4yLTc2LjItNzYuMi00Mi4zIDAtNzYuNSAzNC4yLTc2LjUgNzYuMiAwIDQyLjIgMzQuMyA3Ni4yIDc2LjUgNzYuMiA0MS45LjEgNzYuMi0zMy45IDc2LjItNzYuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDI1NmMwIDEzNy0xMTEuMiAyNDgtMjQ4LjQgMjQ4LTExMy44IDAtMjA5LjYtNzYuMy0yMzktMTgwLjRsOTUuMiAzOS4zYzYuNCAzMi4xIDM0LjkgNTYuNCA2OC45IDU2LjQgMzkuMiAwIDcxLjktMzIuNCA3MC4yLTczLjVsODQuNS02MC4yYzUyLjEgMS4zIDk1LjgtNDAuOSA5NS44LTkzLjUgMC01MS42LTQyLTkzLjUtOTMuNy05My41cy05My43IDQyLTkzLjcgOTMuNXYxLjJMMTc2LjYgMjc5Yy0xNS41LS45LTMwLjcgMy40LTQzLjUgMTIuMUwwIDIzNi4xQzEwLjIgMTA4LjQgMTE3LjEgOCAyNDcuNiA4IDM4NC44IDggNDk2IDExOSA0OTYgMjU2ek0xNTUuNyAzODQuM2wtMzAuNS0xMi42YTUyLjc5IDUyLjc5IDAgMCAwIDI3LjIgMjUuOGMyNi45IDExLjIgNTcuOC0xLjYgNjktMjguNCA1LjQtMTMgNS41LTI3LjMuMS00MC4zLTUuNC0xMy0xNS41LTIzLjItMjguNS0yOC42LTEyLjktNS40LTI2LjctNS4yLTM4LjktLjZsMzEuNSAxM2MxOS44IDguMiAyOS4yIDMwLjkgMjAuOSA1MC43LTguMyAxOS45LTMxIDI5LjItNTAuOCAyMXptMTczLjgtMTI5LjljLTM0LjQgMC02Mi40LTI4LTYyLjQtNjIuM3MyOC02Mi4zIDYyLjQtNjIuMyA2Mi40IDI4IDYyLjQgNjIuMy0yNy45IDYyLjMtNjIuNCA2Mi4zem0uMS0xNS42YzI1LjkgMCA0Ni45LTIxIDQ2LjktNDYuOCAwLTI1LjktMjEtNDYuOC00Ni45LTQ2LjhzLTQ2LjkgMjEtNDYuOSA0Ni44Yy4xIDI1LjggMjEuMSA0Ni44IDQ2LjkgNDYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RpY2tlck11bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYxLjcgMTk5LjZjLTEuMy4zLjMgMCAwIDB6bS02LjItNzcuNGMtNy43LTIyLjMtNS4xLTcuMi0xMy40LTM2LjktMS42LTYuNS0zLjYtMTQuNS02LjItMjAtNC40LTguNy00LjYtNy41LTQuNi05LjUgMC01LjMgMzAuNy00NS4zIDE5LTQ2LjktNS43LS42LTEyLjIgMTEuNi0yMC42IDE3LTguNiA0LjItOCA1LTEwLjMgNS0yLjYgMC01LjctMy02LjItNS0yLTUuNyAxLjktMjUuOS0zLjYtMjUuOS0zLjYgMC0xMi4zIDI0LjgtMTcgMjUuOC01LjIgMS4zLTI3LjktMTEuNC03NS4xIDE4LTI1LjMgMTMuMi04Ni45IDY1LjItODcgNjUuMy02LjcgNC43LTIwIDQuNy0zNS41IDE2LTQ0LjQgMzAuMS0xMDkuNiA5LjQtMTEwLjcgOS0xMTAuNi0yNi44LTEyOC0xNS4yLTE1OSAxMS41LTIwLjggMTcuOS0yMy43IDM2LjUtMjQuMiAzOC45LTQuMiAyMC40IDUuMiA0OC4zIDYuNyA2NC4zIDEuOCAxOS4zLTIuNyAxNy43IDcuNyA5OC4zLjUgMSA0LjEgMCA1LjEgMS41IDAgOC40LTMuOCAxMi4xLTQuMSAxMy0xLjUgNC41LTEuNSAxMC41IDAgMTYgMi4zIDguMiA4LjIgMzcuMiA4LjIgNDYuOSAwIDQxLjguNCA0NCAyLjYgNDkuNCAzLjkgMTAgMTIuNSA5LjEgMTcgMTIgMy4xIDMuNS0uNSA4LjUgMSAxMi41LjUgMiAzLjYgNCA2LjIgNSA5LjIgMy42IDI3IC4zIDI5LjktMi41IDEuNi0xLjUuNS00LjUgMy4xLTUgNS4xIDAgMTAuOC0uNSAxNC40LTIuNSA1LjEtMi41IDQuMS02IDEuNS0xMC41LS40LS44LTctMTMuMy05LjgtMTYtMi4xLTItNS4xLTMtNy4yLTQuNS01LjgtNC45LTEwLjMtMTkuNC0xMC4zLTE5LjUtNC42LTE5LjQtMTAuMy00Ni4zLTQuMS02Ni44IDQuNi0xNy4yIDM5LjUtODcuNyAzOS42LTg3LjggNC4xLTYuNSAxNy0xMS41IDI3LjMtNyA2IDEuOSAxOS4zIDIyIDY1LjQgMzAuOSA0Ny45IDguNyA5Ny40LTIgMTEyLjItMiAyLjggMi0xLjkgMTMtLjUgMzguOSAwIDI2LjQtLjQgMTMuNy00LjEgMjkuOS0yLjIgOS43IDMuNCAyMy4yLTEuNSA0Ni45LTEuNCA5LjgtOS45IDMyLjctOC4yIDQzLjQuNSAxIDEgMiAxLjUgMy41LjUgNC41IDEuNSA4LjUgNC42IDEwIDcuMyAzLjYgMTItMy41IDkuOCAxMS41LS43IDMuMS0yLjYgMTIgMS41IDE1IDQuNCAzLjcgMzAuNiAzLjQgMzYuNS41IDIuNi0xLjUgMS42LTQuNSA2LjQtNy40IDEuOS0uOSAxMS4zLS40IDExLjMtNi41LjMtMS44LTkuMi0xOS45LTkuMy0yMC0yLjYtMy41LTkuMi00LjUtMTEuMy04LTYuOS0xMC4xLTEuNy01Mi42LjUtNTkuNCAzLTExIDUuNi0yMi40IDguNy0zMi40IDExLTQyLjUgMTAuMy01MC42IDE2LjUtNjguMy44LTEuOCA2LjQtMjMuMSAxMC4zLTI5LjkgOS4zLTE3IDIxLjctMzIuNCAzMy41LTQ3LjQgMTgtMjIuOSAzNC00Ni45IDUyLTY5LjggNi4xLTcgOC4yLTEzLjcgMTgtOCAxMC44IDUuNyAyMS42IDcgMzEuOSAxNyAxNC42IDEyLjggMTAuMiAxOC4yIDExLjggMjIuOSAxLjUgNSA3LjcgMTAuNSAxNC45IDkuNSAxMC40LTIgMTMtMi41IDEzLjQtMi41IDIuNi0uNSA1LjctNSA3LjItOCAzLjEtNS41IDcuMi05IDcuMi0xNi41IDAtNy43LS40LTIuOC0yMC42LTUyLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmF2YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTguNCAwTDcgMjkyaDg5LjJsNjIuMi0xMTYuMUwyMjAuMSAyOTJoODguNXptMTUwLjIgMjkybC00My45IDg4LjItNDQuNi04OC4yaC02Ny42bDExMi4yIDIyMCAxMTEuNS0yMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmlwZVMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU1LjMgMTU0LjZjMC0yMi4zIDE4LjYtMzAuOSA0OC40LTMwLjkgNDMuNCAwIDk4LjUgMTMuMyAxNDEuOSAzNi43VjI2LjFDMjk4LjMgNy4yIDI1MS4xIDAgMjAzLjggMCA4OC4xIDAgMTEgNjAuNCAxMSAxNjEuNGMwIDE1Ny45IDIxNi44IDEzMi4zIDIxNi44IDIwMC40IDAgMjYuNC0yMi45IDM0LjktNTQuNyAzNC45LTQ3LjIgMC0xMDguMi0xOS41LTE1Ni4xLTQ1LjV2MTI4LjVhMzk2LjA5IDM5Ni4wOSAwIDAgMCAxNTYgMzIuNGMxMTguNiAwIDIwMC4zLTUxIDIwMC4zLTE1My42IDAtMTcwLjItMjE4LTEzOS43LTIxOC0yMDMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyaXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NSAxNDQuN2wtNDMuMyA5LjItLjIgMTQyLjRjMCAyNi4zIDE5LjggNDMuMyA0Ni4xIDQzLjMgMTQuNiAwIDI1LjMtMi43IDMxLjItNS45di0zMy44Yy01LjcgMi4zLTMzLjcgMTAuNS0zMy43LTE1LjdWMjIxaDMzLjd2LTM3LjhoLTMzLjd6bTg5LjEgNTEuNmwtMi43LTEzLjFIMjEzdjE1My4yaDQ0LjNWMjMzLjNjMTAuNS0xMy44IDI4LjItMTEuMSAzMy45LTkuM3YtNDAuOGMtNi0yLjEtMjYuNy02LTM3LjEgMTMuMXptOTIuMy03Mi4zbC00NC42IDkuNXYzNi4ybDQ0LjYtOS41ek00NC45IDIyOC4zYzAtNi45IDUuOC05LjYgMTUuMS05LjcgMTMuNSAwIDMwLjcgNC4xIDQ0LjIgMTEuNHYtNDEuOGMtMTQuNy01LjgtMjkuNC04LjEtNDQuMS04LjEtMzYgMC02MCAxOC44LTYwIDUwLjIgMCA0OS4yIDY3LjUgNDEuMiA2Ny41IDYyLjQgMCA4LjItNy4xIDEwLjktMTcgMTAuOS0xNC43IDAtMzMuNy02LjEtNDguNi0xNC4ydjQwYzE2LjUgNy4xIDMzLjIgMTAuMSA0OC41IDEwLjEgMzYuOSAwIDYyLjMtMTUuOCA2Mi4zLTQ3LjggMC01Mi45LTY3LjktNDMuNC02Ny45LTYzLjR6TTY0MCAyNjEuNmMwLTQ1LjUtMjItODEuNC02NC4yLTgxLjRzLTY3LjkgMzUuOS02Ny45IDgxLjFjMCA1My41IDMwLjMgNzguMiA3My41IDc4LjIgMjEuMiAwIDM3LjEtNC44IDQ5LjItMTEuNXYtMzMuNGMtMTIuMSA2LjEtMjYgOS44LTQzLjYgOS44LTE3LjMgMC0zMi41LTYuMS0zNC41LTI2LjloODYuOWMuMi0yLjMuNi0xMS42LjYtMTUuOXptLTg3LjktMTYuOGMwLTIwIDEyLjMtMjguNCAyMy40LTI4LjQgMTAuOSAwIDIyLjUgOC40IDIyLjUgMjguNHptLTExMi45LTY0LjZjLTE3LjQgMC0yOC42IDguMi0zNC44IDEzLjlsLTIuMy0xMUgzNjN2MjA0LjhsNDQuNC05LjQuMS01MC4yYzYuNCA0LjcgMTUuOSAxMS4yIDMxLjQgMTEuMiAzMS44IDAgNjAuOC0yMy4yIDYwLjgtNzkuNi4xLTUxLjYtMjkuMy03OS43LTYwLjUtNzkuN3ptLTEwLjYgMTIyLjVjLTEwLjQgMC0xNi42LTMuOC0yMC45LTguNGwtLjMtNjZjNC42LTUuMSAxMS04LjggMjEuMi04LjggMTYuMiAwIDI3LjQgMTguMiAyNy40IDQxLjQuMSAyMy45LTEwLjkgNDEuOC0yNy40IDQxLjh6bS0xMjYuNyAzMy43aDQ0LjZWMTgzLjJoLTQ0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0dWRpb3ZpbmFyaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAuMyAxODcuN2w0LjIgMjh2MjhsLTI1LjEgNDQuMS0zOS44IDc4LjQtNTYuMSA2Ny41LTc5LjEgMzcuOC0xNy43IDI0LjUtNy43IDEyLTkuNiA0czE3LjMtNjMuNiAxOS40LTYzLjZjMi4xIDAgMjAuMy43IDIwLjMuN2w2Ni43LTM4LjYtOTIuNSAyNi4xLTU1LjkgMzYuOC0yMi44IDI4LTYuNiAxLjQgMjAuOC03My42IDYuOS01LjUgMjAuNyAxMi45IDg4LjMtNDUuMiA1Ni44LTUxLjUgMTQuOC02OC40LTEyNS40IDIzLjMgMTUuMi0xOC4yLTE3My40LTUzLjMgODEuOS0xMC41LTE2Ni0xMjIuOUwxMzMuNSAxMDggMzIuMiAwbDI1Mi45IDEyNi42LTMxLjUtMzhMMzc4IDE2MyAyMzQuNyA2NGwxOC43IDM4LjQtNDkuNi0xOC4xTDE1OC4zIDBsMTk0LjYgMTIyTDMxMCA2Ni4ybDEwOCA5Ni40IDEyLTguOS0yMS0xNi40IDQuMi0zNy44TDQ1MSA4OS4xbDI5LjIgMjQuNyAxMS41IDQuMi03IDYuMiA4LjUgMTItMTMuMSA3LjQtMTAuMyAyMC4yIDEwLjUgMjMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1bWJsZXVwb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCAxNzcuNWMtOS44IDAtMTcuOCA4LTE3LjggMTcuOHYxMDYuOWMwIDQwLjktMzMuOSA3My45LTc0LjkgNzMuOS00MS40IDAtNzQuOS0zMy41LTc0LjktNzQuOXYtNDYuNWg1Ny4zdjQ1LjhjMCAxMCA4IDE3LjggMTcuOCAxNy44czE3LjgtNy45IDE3LjgtMTcuOFYyMDAuMWMwLTQwIDM0LjItNzIuMSA3NC43LTcyLjEgNDAuNyAwIDc0LjcgMzIuMyA3NC43IDcyLjZ2MjMuN2wtMzQuMSAxMC4xLTIyLjktMTAuN3YtMjAuNmMuMS05LjYtNy45LTE3LjYtMTcuNy0xNy42em0xNjcuNiAxMjMuNmMwIDQxLjQtMzMuNSA3NC45LTc0LjkgNzQuOS00MS4yIDAtNzQuOS0zMy4yLTc0LjktNzQuMlYyNjNsMjIuOSAxMC43IDM0LjEtMTAuMXY0Ny4xYzAgOS44IDggMTcuNiAxNy44IDE3LjZzMTcuOC03LjkgMTcuOC0xNy42di00OGg1Ny4zYy0uMSA0NS45LS4xIDQ2LjQtLjEgNDYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1bWJsZXVwb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjkgMjY2djY5LjdjMCA2Mi4xLTUwLjMgMTEyLjQtMTEyLjQgMTEyLjQtNjEuOCAwLTExMi40LTQ5LjgtMTEyLjQtMTExLjN2LTcwLjJsMzQuMyAxNiA1MS4xLTE1LjJWMzM4YzAgMTQuNyAxMiAyNi41IDI2LjcgMjYuNVM0MTcgMzUyLjcgNDE3IDMzOHYtNzJoODUuOXptLTIyNC43LTU4LjJsMzQuMyAxNiA1MS4xLTE1LjJWMTczYzAtNjAuNS01MS4xLTEwOS0xMTIuMS0xMDktNjAuOCAwLTExMi4xIDQ4LjItMTEyLjEgMTA4LjJ2MTYyLjRjMCAxNC45LTEyIDI2LjctMjYuNyAyNi43Uzg2IDM0OS41IDg2IDMzNC42VjI2NkgwdjY5LjdDMCAzOTcuNyA1MC4zIDQ0OCAxMTIuNCA0NDhjNjEuNiAwIDExMi40LTQ5LjUgMTEyLjQtMTEwLjhWMTc2LjljMC0xNC43IDEyLTI2LjcgMjYuNy0yNi43czI2LjcgMTIgMjYuNyAyNi43djMwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cGVycG93ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMmMtODMuMyAxMS0xNjYuOCAyMi0yNTAgMzMtOTIgMTIuNS0xNjMuMyA4Ni43LTE2OSAxODAtMy4zIDU1LjUgMTggMTA5LjUgNTcuOCAxNDguMkwwIDQ4MGM4My4zLTExIDE2Ni41LTIyIDI0OS44LTMzIDkxLjgtMTIuNSAxNjMuMy04Ni44IDE2OC43LTE3OS44IDMuNS01NS41LTE4LTEwOS41LTU3LjctMTQ4LjJMNDQ4IDMyem0tNzkuNyAyMzIuM2MtNC4yIDc5LjUtNzQgMTM5LjItMTUyLjggMTM0LjUtNzkuNS00LjctMTQwLjctNzEtMTM2LjMtMTUxIDQuNS03OS4yIDc0LjMtMTM5LjMgMTUzLTEzNC41IDc5LjMgNC43IDE0MC41IDcxIDEzNi4xIDE1MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VwcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyNjIuNWMwIDY0LjEtMTA5IDExNi4xLTI0My41IDExNi4xLTI0LjggMC00OC42LTEuOC03MS4xLTUgNy43LjQgMTUuNS42IDIzLjQuNiAxMzQuNSAwIDI0My41LTU2LjkgMjQzLjUtMTI3LjEgMC0yOS40LTE5LjEtNTYuNC01MS4yLTc4IDYwIDIxLjEgOTguOSA1NS4xIDk4LjkgOTMuNHpNNDcuNyAyMjcuOWMtLjEtNzAuMiAxMDguOC0xMjcuMyAyNDMuMy0xMjcuNiA3LjkgMCAxNS42LjIgMjMuMy41LTIyLjUtMy4yLTQ2LjMtNC45LTcxLTQuOUMxMDguOCA5Ni4zLS4xIDE0OC41IDAgMjEyLjZjLjEgMzguMyAzOS4xIDcyLjMgOTkuMyA5My4zLTMyLjMtMjEuNS01MS41LTQ4LjYtNTEuNi03OHptNjAuMiAzOS45czEwLjUgMTMuMiAyOS4zIDEzLjJjMTcuOSAwIDI4LjQtMTEuNSAyOC40LTI1LjEgMC0yOC00MC4yLTI1LjEtNDAuMi0zOS43IDAtNS40IDUuMy05LjEgMTIuNS05LjEgNS43IDAgMTEuMyAyLjYgMTEuMyA2LjZ2My45aDE0LjJ2LTcuOWMwLTEyLjEtMTUuNC0xNi44LTI1LjQtMTYuOC0xNi41IDAtMjguNSAxMC4yLTI4LjUgMjQuMSAwIDI2LjYgNDAuMiAyNS40IDQwLjIgMzkuOSAwIDYuNi01LjggMTAuMS0xMi4zIDEwLjEtMTEuOSAwLTIwLjctMTAuMS0yMC43LTEwLjFsLTguOCAxMC45em0xMjAuOC03My42djU0LjRjMCAxMS4zLTcuMSAxNy44LTE3LjggMTcuOC0xMC43IDAtMTcuOC02LjUtMTcuOC0xNy43di01NC41aC0xNS44djU1YzAgMTguOSAxMy40IDMxLjkgMzMuNyAzMS45IDIwLjEgMCAzMy40LTEzIDMzLjQtMzEuOXYtNTVoLTE1Ljd6bTM0LjQgODUuNGgxNS44di0yOS41aDE1LjVjMTYgMCAyNy4yLTExLjUgMjcuMi0yOC4xcy0xMS4yLTI3LjgtMjcuMi0yNy44aC0zOS4xdjEzLjRoNy44djcyem0xNS44LTQzdi0yOS4xaDEyLjljOC43IDAgMTMuNyA1LjcgMTMuNyAxNC40IDAgOC45LTUuMSAxNC43LTE0IDE0LjdoLTEyLjZ6bTU3IDQzaDE1Ljh2LTI5LjVoMTUuNWMxNiAwIDI3LjItMTEuNSAyNy4yLTI4LjFzLTExLjItMjcuOC0yNy4yLTI3LjhoLTM5LjF2MTMuNGg3Ljh2NzJ6bTE1LjctNDN2LTI5LjFoMTIuOWM4LjcgMCAxMy43IDUuNyAxMy43IDE0LjQgMCA4LjktNSAxNC43LTE0IDE0LjdoLTEyLjZ6bTU3LjEgMzQuOGMwIDUuOCAyLjQgOC4yIDguMiA4LjJoMzcuNmM1LjggMCA4LjItMi40IDguMi04LjJ2LTEzaC0xNC4zdjUuMmMwIDEuNy0xIDIuNi0yLjYgMi42aC0xOC42Yy0xLjcgMC0yLjYtMS0yLjYtMi42di02MS4yYzAtNS43LTIuNC04LjItOC4yLTguMkg0MDF2MTMuNGg1LjJjMS43IDAgMi42IDEgMi42IDIuNnY2MS4yem02My40IDBjMCA1LjggMi40IDguMiA4LjIgOC4ySDUxOWM1LjcgMCA4LjItMi40IDguMi04LjJ2LTEzaC0xNC4zdjUuMmMwIDEuNy0xIDIuNi0yLjYgMi42aC0xOS43Yy0xLjcgMC0yLjYtMS0yLjYtMi42di0yMC4zaDI3Ljd2LTEzLjRINDg4di0yMi40aDE5LjJjMS43IDAgMi42IDEgMi42IDIuNnY1LjJINTI0di0xM2MwLTUuNy0yLjUtOC4yLTguMi04LjJoLTUxLjZ2MTMuNGg3Ljh2NjMuOXptNTguOS03NnY1LjloMS42di01LjloMi43di0xLjJoLTd2MS4yaDIuN3ptNS43LTEuMnY3LjFoMS41di01LjdsMi4zIDUuN2gxLjNsMi4zLTUuN3Y1LjdoMS41di03LjFoLTIuM2wtMi4xIDUuMS0yLjEtNS4xaC0yLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcxLjA4IDEwMi42NnMtLjMgMTguMy0uMyAyMC4zYy05LjEtMy03NC40LTI0LjEtMTM1LjctMjYuMy01MS45LTEuOC0xMjIuOC00LjMtMjIzIDU3LjMtMTkuNCAxMi40LTczLjkgNDYuMS05OS42IDEwOS43QzcgMjc3LS4xMiAzMDcgNyAzMzUuMDZhMTExIDExMSAwIDAgMCAxNi41IDM1LjdjMTcuNCAyNSA0Ni42IDQxLjYgNzguMSA0NC40IDQ0LjQgMy45IDc4LjEtMTYgOTAtNTMuMyA4LjItMjUuOCAwLTYzLjYtMzEuNS04Mi45LTI1LjYtMTUuNy01My4zLTEyLjEtNjkuMi0xLjYtMTMuOSA5LjItMjEuOCAyMy41LTIxLjYgMzkuMi4zIDI3LjggMjQuMyA0Mi42IDQxLjUgNDIuNmE0OSA0OSAwIDAgMCAxNS44LTIuN2M2LjUtMS44IDEzLjMtNi41IDEzLjMtMTQuOSAwLTEyLjEtMTEuNi0xNC44LTE2LjgtMTMuOS0yLjkuNS00LjUgMi0xMS44IDIuNC0yLS4yLTEyLTMuMS0xMi0xNFYzMTZjLjItMTIuMyAxMy4yLTE4IDI1LjUtMTYuOSAzMi4zIDIuOCA0Ny43IDQwLjcgMjguNSA2NS43LTE4LjMgMjMuNy03Ni42IDIzLjItOTkuNy0yMC40LTI2LTQ5LjIgMTIuNy0xMTEuMiA4Ny05OC40IDMzLjIgNS43IDgzLjYgMzUuNSAxMDIuNCAxMDQuM2g0NS45Yy01LjctMTcuNi04LjktNjguMyA0Mi43LTY4LjMgNTYuNyAwIDYzLjkgMzkuOSA3OS44IDY4LjNINDYwYy0xMi44LTE4LjMtMjEuNy0zOC43LTE4LjktNTUuOCA1LjYtMzMuOCAzOS43LTE4LjQgODIuNC0xNy40IDY2LjUuNCAxMDIuMS0yNyAxMDMuMS0yOCAzLjctMy4xIDYuNS0xNS44IDctMTcuNyAxLjMtNS4xLTMuMi0yLjQtMy4yLTIuNC04LjcgNS4yLTMwLjUgMTUuMi01MC45IDE1LjYtMjUuMy41LTc2LjItMjUuNC04MS42LTI4LjItLjMtLjQuMSAxLjItMTEtMjUuNSA4OC40IDU4LjMgMTE4LjMgNDAuNSAxNDUuMiAyMS43LjgtLjYgNC4zLTIuOSAzLjYtNS43LTEzLjgtNDguMS0yMi40LTYyLjctMzQuNS02OS42LTM3LTIxLjYtMTI1LTM0LjctMTI5LjItMzUuMy4xLS4xLS45LS4zLS45Ljd6bTYwLjQgNzIuOGEzNy41NCAzNy41NCAwIDAgMSAzOC45LTM2LjNjMzMuNCAxLjIgNDguOCA0Mi4zIDI0LjQgNjUuMi0yNC4yIDIyLjctNjQuNCA0LjYtNjMuMy0yOC45em0zOC42LTI1LjNhMjYuMjcgMjYuMjcgMCAxIDAgMjUuNCAyNy4yIDI2LjE5IDI2LjE5IDAgMCAwLTI1LjQtMjcuMnptNC4zIDI4LjhjLTE1LjQgMC0xNS40LTE1LjYgMC0xNS42czE1LjQgMTUuNjQgMCAxNS42NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDE1Ni4wOWMwLTQuNTEtLjA4LTktLjItMTMuNTJhMTk2LjMxIDE5Ni4zMSAwIDAgMC0yLjU4LTI5LjQyIDk5LjYyIDk5LjYyIDAgMCAwLTkuMjItMjhBOTQuMDggOTQuMDggMCAwIDAgMzk0Ljg0IDQ0YTk5LjE3IDk5LjE3IDAgMCAwLTI4LTkuMjIgMTk1IDE5NSAwIDAgMC0yOS40My0yLjU5Yy00LjUxLS4xMi05LS4xNy0xMy41Mi0uMkgxMjQuMTRjLTQuNTEgMC05IC4wOC0xMy41Mi4yLTIuNDUuMDctNC45MS4xNS03LjM3LjI3YTE3MS42OCAxNzEuNjggMCAwIDAtMjIuMDYgMi4zMiAxMDMuMDYgMTAzLjA2IDAgMCAwLTIxLjIxIDYuMXEtMy40NiAxLjQ1LTYuODEgMy4xMmE5NC42NiA5NC42NiAwIDAgMC0xOC4zOSAxMi4zMmMtMS44OCAxLjYxLTMuNjkgMy4yOC01LjQzIDVBOTMuODYgOTMuODYgMCAwIDAgMTIgODUuMTdhOTkuNDUgOTkuNDUgMCAwIDAtOS4yMiAyOCAxOTYuMzEgMTk2LjMxIDAgMCAwLTIuNTQgMjkuNGMtLjEzIDQuNTEtLjE4IDktLjIxIDEzLjUydjE5OS44M2MwIDQuNTEuMDggOSAuMjEgMTMuNTFhMTk2LjA4IDE5Ni4wOCAwIDAgMCAyLjU4IDI5LjQyIDk5LjMgOTkuMyAwIDAgMCA5LjIyIDI4QTk0LjMxIDk0LjMxIDAgMCAwIDUzLjE3IDQ2OGE5OS40NyA5OS40NyAwIDAgMCAyOCA5LjIxIDE5NSAxOTUgMCAwIDAgMjkuNDMgMi41OWM0LjUuMTIgOSAuMTcgMTMuNTIuMkgzMjMuOTFjNC41MSAwIDktLjA4IDEzLjUyLS4yYTE5Ni41OSAxOTYuNTkgMCAwIDAgMjkuNDQtMi41OSA5OS41NyA5OS41NyAwIDAgMCAyOC05LjIxQTk0LjIyIDk0LjIyIDAgMCAwIDQzNiA0MjYuODRhOTkuMyA5OS4zIDAgMCAwIDkuMjItMjggMTk0Ljc5IDE5NC43OSAwIDAgMCAyLjU5LTI5LjQyYy4xMi00LjUuMTctOSAuMi0xMy41MVYxNzIuMTRjLS4wMS01LjM1LS4wMS0xMC43LS4wMS0xNi4wNXptLTY5Ljg4IDI0MWMtMjAtMzguOTMtNTcuMjMtMjkuMjctNzYuMzEtMTkuNDctMS43MiAxLTMuNDggMi01LjI1IDNsLS40Mi4yNWMtMzkuNSAyMS05Mi41MyAyMi41NC0xNDUuODUtLjM4QTIzNC42NCAyMzQuNjQgMCAwIDEgNDUgMjkwLjEyYTIzMC42MyAyMzAuNjMgMCAwIDAgMzkuMTcgMjMuMzdjNTYuMzYgMjYuNCAxMTMgMjQuNDkgMTUzIDAtNTctNDMuODUtMTA0LjYtMTAxLTE0MS4wOS0xNDcuMjJhMTk3LjA5IDE5Ny4wOSAwIDAgMS0xOC43OC0yNS45YzQzLjcgNDAgMTEyLjcgOTAuMjIgMTM3LjQ4IDEwNC4xMi01Mi41Ny01NS40OS05OC44OS0xMjMuOTQtOTYuNzItMTIxLjc0IDgyLjc5IDgzLjQyIDE1OS4xOCAxMzAuNTkgMTU5LjE4IDEzMC41OSAyLjg4IDEuNTggNSAyLjg1IDYuNzMgNGExMjcuNDQgMTI3LjQ0IDAgMCAwIDQuMTYtMTIuNDdjMTMuMjItNDguMzMtMS42Ni0xMDMuNTgtMzUuMzEtMTQ5LjJDMzI5LjYxIDE0MS43NSAzNzUgMjI5LjM0IDM1Ni40IDMwMy40MmMtLjQ0IDEuNzMtLjk1IDMuNC0xLjQ0IDUuMDkgMzguNTIgNDcuNCAyOC4wNCA5OC4xNyAyMy4xMyA4OC41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ltZm9ueSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xMzMuNzQgMTQzLjU0Yy0xMS40Ny40MS0xOS40LTYuNDUtMTkuNzctMTYuODctLjI3LTkuMTggNi42OC0xMy40NCA2LjUzLTE4Ljg1LS4yMy02LjU1LTEwLjE2LTYuODItMTIuODctNi42Ny0zOS43OCAxLjI5LTQ4LjU5IDU3LTU4Ljg5IDExMy44NSAyMS40MyAzLjE1IDM2LjY1LS43MiA0NS4xNC02LjIyIDEyLTcuNzUtMy4zNC0xNS43Mi0xLjQyLTI0LjU2IDQtMTguMTYgMzIuNTUtMTkgMzIgNS4zLS4zNiAxNy44Ni0yNS45MiA0MS44MS03Ny42IDM1LjctMTAuNzYgNTkuNTItMTguMzUgMTE1LTU4LjIgMTYxLjcyLTI5IDM0LjQ2LTU4LjQgMzkuODItNzEuNTggNDAuMjYtMjQuNjUuODUtNDEtMTIuMzEtNDEuNTgtMjkuODQtLjU2LTE3IDE0LjQ1LTI2LjI2IDI0LjMxLTI2LjU5IDIxLjg5LS43NSAzMC4xMiAyNS42NyAxNC44OCAzNC0xMi4wOSA5LjcxLjExIDEyLjYxIDIuMDUgMTIuNTUgMTAuNDItLjM2IDE3LjM0LTUuNTEgMjIuMTgtOSAyNC0yMCAzMy4yNC01NC44NiA0NS4zNS0xMTguMzUgOC4xOS00OS42NiAxNy03OCAxOC4yMy04Mi0xNi45My0xMi43NS0yNy4wOC0yOC41NS00OS44NS0zNC43Mi0xNS42MS00LjIzLTI1LjEyLS42My0zMS44MSA3LjgzLTcuOTIgMTAtNS4yOSAyMyAyLjM3IDMwLjdsMTIuNjMgMTRjMTUuNTEgMTcuOTMgMjQgMzEuODcgMjAuOCA1MC42Mi01LjA2IDI5LjkzLTQwLjcyIDUyLjktODIuODggMzkuOTQtMzYtMTEuMTEtNDIuNy0zNi41Ni0zOC4zOC01MC42MiA3LjUxLTI0LjE1IDQyLjM2LTExLjcyIDM0LjYyIDEzLjYtMi43OSA4LjYtNC45MiA4LjY4LTYuMjggMTMuMDctNC41NiAxNC43NyA0MS44NSAyOC40IDUxLTEuMzkgNC40Ny0xNC41Mi01LjMtMjEuNzEtMjIuMjUtMzkuODUtMjguNDctMzEuNzUtMTYtNjUuNDkgMi45NS03OS42N0MyMDQuMjMgMTQwLjEzIDI1MS45NCAxOTcgMjYyIDIwNS4yOWMzNy4xNy0xMDkgMTAwLjUzLTEwNS40NiAxMDIuNDMtMTA1LjUzIDI1LjE2LS44MSA0NC4xOSAxMC41OSA0NC44MyAyOC42NS4yNSA3LjY5LTQuMTcgMjIuNTktMTkuNTIgMjMuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlYW1zcGVhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQuMiAzNDYuNzljMi40LTEyLjMtMTItMzAtMzIuNC00OC43LTIwLjktMTkuMi00OC4yLTM5LjEtNjMuNC00Ni42LTIxLjctMTItNDEuNy0xLjgtNDYuMyAyMi43LTUgMjYuMiAwIDUxLjQgMTQuNSA3My45IDEwLjIgMTUuNSAyNS40IDIyLjcgNDMuNCAyNCAxMS42LjYgNTIuNSAyLjIgNjEuNy0xIDExLjktNC4zIDIwLjEtMTEuOCAyMi41LTI0LjN6bTIwNSAyMC44YTUuMjIgNS4yMiAwIDAgMC04LjMgMi40Yy04IDI1LjQtNDQuNyAxMTIuNS0xNzIuMSAxMjEuNS0xNDkuNyAxMC41IDgwLjMgNDMuNiAxNDUuNC02LjQgMjIuNy0xNy40IDQ3LjYtMzUgNDYuNi04NS40LS40LTEwLjEtNC45LTI2LjY5LTExLjYtMzIuMXptNjItMTIyLjRjLS4zLTE4LjktOC42LTMzLjQtMjYtNDIuMi0yLjktMS4zLTUtMi43LTUuOS02LjRBMjIyLjY0IDIyMi42NCAwIDAgMCA0MzguOSAxMDNjLTEuMS0xLjUtMy41LTMuMi0yLjItNSA4LjUtMTEuNS0uMy0xOC03LTI0LjRRMzIxLjQtMzEuMTEgMTc3LjQgMTMuMDljLTQwLjEgMTIuMy03My45IDM1LjYtMTAyIDY3LjQtNCA0LjMtNi43IDkuMS0zIDE0LjUgMyA0IDEuMyA2LjItMSA5LjNDNTEuNiAxMzIgMzguMiAxNjIuNTkgMzIuMSAxOTZjLS43IDQuMy0yLjkgNi02LjQgNy44LTE0LjIgNy0yMi41IDE4LjUtMjQuOSAzNEwwIDI2NC4yOXYyMC45YzAgMzAuOCAyMSA1MC40IDUxLjggNDkgNy43LS4zIDExLjctNC4zIDEyLTExLjUgMi03Ny41LTIuNC05NS40IDMuNy0xMjUuOEM5Mi4xIDcyLjM5IDIzNC4zIDUgMzQ1LjMgNjUuMzkgNDExLjQgMTAyIDQ0NS43IDE1OSA0NDcuNiAyMzQuNzljLjggMjguMiAwIDU2LjUgMCA4NC42IDAgNyAyLjIgMTIuNSA5LjQgMTQuMiAyNC4xIDUgNDkuMi0xMiA1My4yLTM2LjcgMi45LTE3LjEgMS0zNC41IDEtNTEuN3ptLTE1OS42IDEzMS41YzM2LjUgMi44IDU5LjMtMjguNSA1OC40LTYwLjUtMi4xLTQ1LjItNjYuMi0xNi41LTg3LjgtOC03My4yIDI4LjEtNDUgNTQuOS0yMi4yIDYwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbGVncmFtUGxhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ2LjcgOTguNmwtNjcuNiAzMTguOGMtNS4xIDIyLjUtMTguNCAyOC4xLTM3LjMgMTcuNWwtMTAzLTc1LjktNDkuNyA0Ny44Yy01LjUgNS41LTEwLjEgMTAuMS0yMC43IDEwLjFsNy40LTEwNC45IDE5MC45LTE3Mi41YzguMy03LjQtMS44LTExLjUtMTIuOS00LjFMMTE3LjggMjg0IDE2LjIgMjUyLjJjLTIyLjEtNi45LTIyLjUtMjIuMSA0LjYtMzIuN0w0MTguMiA2Ni40YzE4LjQtNi45IDM0LjUgNC4xIDI4LjUgMzIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVsZWdyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTIxLjggMTY5LjlsLTQwLjcgMTkxLjhjLTMgMTMuNi0xMS4xIDE2LjktMjIuNCAxMC41bC02Mi00NS43LTI5LjkgMjguOGMtMy4zIDMuMy02LjEgNi4xLTEyLjUgNi4xbDQuNC02My4xIDExNC45LTEwMy44YzUtNC40LTEuMS02LjktNy43LTIuNWwtMTQyIDg5LjQtNjEuMi0xOS4xYy0xMy4zLTQuMi0xMy42LTEzLjMgMi44LTE5LjdsMjM5LjEtOTIuMmMxMS4xLTQgMjAuOCAyLjcgMTcuMiAxOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW5jZW50V2VpYm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzIuMyA0OTUuOGMxLjQgMTkuOS0yNy42IDIyLjItMjkuNyAyLjlDMzEgMzY4LjggNzMuNyAyNTkuMiAxNDQgMTg1LjVjLTE1LjYtMzQgOS4yLTc3LjEgNTAuNi03Ny4xIDMwLjMgMCA1NS4xIDI0LjYgNTUuMSA1NS4xIDAgNDQtNDkuNSA3MC44LTg2LjkgNDUuMS02NS43IDcxLjMtMTAxLjQgMTY5LjgtOTAuNSAyODcuMnpNMTkyIC4xQzY2LjEuMS0xMi4zIDEzNC4zIDQzLjcgMjQyLjQgNTIuNCAyNTkuOCA3OSAyNDYuOSA3MCAyMjkgMjMuNyAxMzYuNCA5MSAyOS44IDE5MiAyOS44Yzc1LjQgMCAxMzYuOSA2MS40IDEzNi45IDEzNi45IDAgOTAuOC04Ni45IDE1My45LTE2Ny43IDEzMy4xLTE5LjEtNC4xLTI1LjYgMjQuNC02LjYgMjkuMSAxMTAuNyAyMy4yIDIwNC02MCAyMDQtMTYyLjNDMzU4LjYgNzQuNyAyODQgLjEgMTkyIC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVSZWRZZXRpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC4yMyAyNDEuN2wyMC43IDcuMWMtOS42LTIzLjktMjMuOS0zNy0zMS43LTQ0LjhsNy4xLTE4LjJjLjIgMCAxMi4zLTI3LjgtMi41LTMwLjctLjYtMTEuMy02LjYtMjctMTguNC0yNy03LjYtMTAuNi0xNy43LTEyLjMtMzAuNy01LjlhMTIyLjIgMTIyLjIgMCAwIDAtMjUuMyAxNi41Yy01LjMtNi40LTMgLjQtMy0yOS44LTM3LjEtMjQuMy00NS40LTExLjctNzQuOCAzbC41LjVhMjM5LjM2IDIzOS4zNiAwIDAgMC02OC40LTEzLjNjLTUuNS04LjctMTguNi0xOS4xLTI1LjEtMjUuMWwyNC44IDcuMWMtNS41LTUuNS0yNi44LTEyLjktMzQuMi0xNS4yIDE4LjItNC4xIDI5LjgtMjAuOCA0Mi41LTMzLTM0LjktMTAuMS02Ny45LTUuOS05Ny45IDExLjhsMTItNDQuMkwxODIgMGMtMzEuNiAyNC4yLTMzIDQxLjktMzMuNyA0NS41LS45LTIuNC02LjMtMTkuNi0xNS4yLTI3YTM1LjEyIDM1LjEyIDAgMCAwLS41IDI1LjNjMyA4LjQgNS45IDE0LjggOC40IDE4LjktMTYtMy4zLTI4LjMtNC45LTQ5LjIgMGgtMy43bDMzIDE0LjNhMTk0LjI2IDE5NC4yNiAwIDAgMC00Ni43IDY3LjRsLTEuNyA4LjQgMS43IDEuNyA3LjYtNC43Yy0zLjMgMTEuNi01LjMgMTkuNC02LjYgMjUuOGEyMDAuMTggMjAwLjE4IDAgMCAwLTI3LjggNDAuM2MtMTUgMS0zMS44IDEwLjgtNDAuMyAxNC4zbDMgMy40IDI4LjggMWMtLjUgMS0uNyAyLjItMS4yIDMuMi03LjMgNi40LTM5LjggMzcuNy0zMyA4MC43bDIwLjItMjIuNGMuNSAxLjcuNyAzLjQgMS4yIDUuMiAwIDI1LjUuNCA4OS42IDY0LjkgMTUwLjUgNDMuNiA0MCA5NiA2MC4yIDE1Ny41IDYwLjIgMTIxLjcgMCAyMjMtODcuMyAyMjMtMjExLjUgNi44LTkuNy0xLjIgMyAxNi43LTI1LjFsMTMgMTQuMyAyLjUtLjVBMTgxLjg0IDE4MS44NCAwIDAgMCA0OTUgMjU1YTQ0Ljc0IDQ0Ljc0IDAgMCAwLTYuOC0xMy4zek0zOTggMTExLjJsLS41IDIxLjljNS41IDE4LjEgMTYuOSAxNy4yIDIyLjQgMTcuMmwtMy40LTQuNyAyMi40LTUuNGEyNDIuNDQgMjQyLjQ0IDAgMCAxLTI3IDBjMTIuOC0yLjEgMzMuMy0yOSA0My0xMS4zIDMuNCA3LjYgNi40IDE3LjIgOS4zIDI3LjhsMS43LTUuOWE1Ni4zOCA1Ni4zOCAwIDAgMS0xLjctMTUuMmM1LjQuNSA4LjggMy40IDkuMyAxMC4xLjUgNi40IDEuNyAxNC44IDMuNCAyNS4zbDQuNy0xMS4zYzQuNiAwIDQuNS0zLjYtMi41IDIwLjctMjAuOS04LjctMzUuMS04LjQtNDYuNS04LjRsMTguMi0xNmMtMjUuMyA4LjItMzMgMTAuOC01NC44IDIwLjktMS4xLTUuNC01LTEzLjUtMTYtMTkuOS0zLjIgMy44LTIuOC45LS43IDE0LjhoLTIuNWE2Mi4zMiA2Mi4zMiAwIDAgMC04LjQtMjMuMWw0LjItMy40YzguNC03LjEgMTEuOC0xNC4zIDEwLjYtMjEuOS0uNS02LjQtNS40LTEzLjUtMTMuNS0yMC43IDUuNi0zLjQgMTUuMi0uNCAyOC4zIDguNXptLTM5LjYtMTAuMWMyLjcgMS45IDExLjQgNS40IDE4LjkgMTcuMiA0LjIgOC40IDQgOS44IDMuNCAxMS4xLS41IDIuNC0uNSA0LjMtMyA3LjEtMS43IDIuNS01LjQgNC43LTExLjggNy42LTcuNi0xMy0xNi41LTIzLjYtMjcuOC0zMS4yek05MSAxNDMuMWwxLjItMS43YzEuMi0yLjkgNC4yLTcuNiA5LjMtMTUuMmwyLjUtMy40LTEzIDEyLjMgNS40LTQuNy0xMC4xIDkuMy00LjIgMS4yYzEyLjMtMjQuMSAyMy4xLTQxLjMgMzIuNS01MC4yIDkuMy05LjMgMTYtMTYgMjAuMi0xOS40bC02LjQgMS4yYy0xMS4zLTQuMi0xOS40LTcuMS0yNC44LTguNCAyLjUtLjUgMy43LS41IDMuMi0uNSAxMC4zIDAgMTcuNS41IDIwLjkgMS4yYTUyLjM1IDUyLjM1IDAgMCAwIDE2IDIuNWwuNS0xLjctOC40LTM1LjggMTMuNSAyOWE0Mi44OSA0Mi44OSAwIDAgMCA1LjktMTQuM2MxLjctNi40IDUuNC0xMyAxMC4xLTE5LjRzNy42LTEwLjYgOS4zLTExLjNhMjM0LjY4IDIzNC42OCAwIDAgMC02LjQgMjUuM2wtMS43IDcuMS0uNSA0LjcgMi41IDIuNUMxOTAuNCAzOS45IDIxNCAzNCAyMzkuOCAzNC41bDIxLjEuNWMtMTEuOCAxMy41LTI3LjggMjEuOS00OC41IDI0LjhhMjAxLjI2IDIwMS4yNiAwIDAgMS0yMy40IDIuOWwtLjItLjUtMi41LTEuMmEyMC43NSAyMC43NSAwIDAgMC0xNCAyYy0yLjUtLjItNC45LS41LTcuMS0uN2wtMi41IDEuNy41IDEuMmMyIC4yIDMuOS41IDYuMi43bC0yIDMuNCAzLjQtLjUtMTAuNiAxMS4zYy00LjIgMy01LjQgNi40LTQuMiA5LjNsNS40LTMuNGgxLjJhMzkuNCAzOS40IDAgMCAxIDI1LjMtMTUuMnYtM2M2LjQuNSAxMyAxIDE5LjQgMS4yIDYuNCAwIDguNC41IDUuNCAxLjJhMTg5LjYgMTg5LjYgMCAwIDEgMjAuNyAxMy41YzEzLjUgMTAuMSAyMy42IDIxLjkgMzAgMzUuNCA4LjggMTguMiAxMy41IDM3LjEgMTMuNSA1Ni42YTE0MS4xMyAxNDEuMTMgMCAwIDEtMyAyOC4zIDIwOS45MSAyMDkuOTEgMCAwIDEtMTYgNDZsMi41LjVjMTguMi0xOS43IDQxLjktMTYgNDkuMi0xNmwtNi40IDUuOSAyMi40IDE3LjctMS43IDMwLjdjLTUuNC0xMi4zLTE2LjUtMjEuMS0zMy0yNy44IDE2LjUgMTQuOCAyMy42IDIxLjEgMjEuOSAyMC4yLTQuOC0yLjgtMy41LTEuOS0xMC44LTMuNyA0LjEgNC4xIDE3LjUgMTguOCAxOC4yIDIwLjdsLjIuMi0uMi4yYzAgMS44IDEuNi0xLjItMTQgMjIuOS03NS4yLTE1LjMtMTA2LjI3LTQyLjctMTQxLjItNjMuMmwxMS44IDEuMmMtMTEuOC0xOC41LTE1LjYtMTcuNy0zOC40LTI2LjFMMTQ5IDIyNWMtOC44LTMtMTguMi0zLTI4LjMuNWw3LjYtMTAuNi0xLjItMS43Yy0xNC45IDQuMy0xOS44IDkuMi0yMi42IDExLjMtMS4xLTUuNS0yLjgtMTIuNC0xMi4zLTI4LjhsLTEuMiAyNy0xMy4yLTVjMS41LTI1LjIgNS40LTUwLjUgMTMuMi03NC42em0yNzYuNSAzMzBjLTQ5LjkgMjUtNTYuMSAyMi40LTU5IDIzLjktMjkuOC0xMS44LTUwLjktMzEuNy02My41LTU4LjhsMzAgMTYuNWMtOS44LTkuMy0xOC4zLTE2LjUtMzguNC00NC4zbDExLjggMjMuMS0xNy43LTcuNmMxNC4yIDIxLjEgMjMuNSA1MS43IDY2LjYgNzMuNS0xMjAuOCAyNC4yLTE5OS03Mi4xLTIwMC45LTc0LjNhMjYyLjU3IDI2Mi41NyAwIDAgMCAzNS40IDI0LjhjMy40IDEuNyA3LjEgMi41IDEwLjEgMS4ybC0xNi0yMC43YzkuMiA0LjIgOS41IDQuNSA2OS4xIDI5LTQyLjUtMjAuNy03My44LTQwLjgtOTMuMi02MC4yLS41IDYuNC0xLjIgMTAuMS0xLjIgMTAuMWE4MC4yNSA4MC4yNSAwIDAgMSAyMC43IDI2LjZjLTM5LTE4LjktNTcuNi00Ny42LTcxLjMtODIuNiA0OS45IDU1LjEgMTE4LjkgMzcuNSAxMjAuNSAzNy4xIDM0LjggMTYuNCA2OS45IDIzLjYgMTEzLjkgMTAuNiAzLjMgMCAyMC4zIDE3IDI1LjMgMzkuMWw0LjItMy0yLjUtMjMuNmM5IDkgMjQuOSAyMi42IDM0LjQgMTMtMTUuNi01LjMtMjMuNS05LjUtMjkuNS0zMS43IDQuNiA0LjIgNy42IDkgMjcuOCAxNWwxLjItMS4yLTEwLjUtMTQuMmMxMS43LTQuOC0zLjUgMSAzMi0xMC44IDQuMyAzNC4zIDkgNDkuMi43IDg5LjV6bTExNS4zLTIxNC40bC0yLjUuNSAzIDkuM2MtMy41IDUuOS0yMy43IDQ0LjMtNzEuNiA3OS43LTM5LjUgMjkuOC03Ni42IDM5LjEtODAuOSA0MC4zbC03LjYtNy4xLTEuMiAzIDE0LjMgMTYtNy4xLTQuNyAzLjQgNC4yaC0xLjJsLTIxLjktMTMuNSA5LjMgMjYuNi0xOS0yNy45LTEuMiAyLjUgNy42IDI5Yy02LjEtOC4yLTIxLTMyLjYtNTYuOC0zOS42bDMyLjUgMjEuMmEyMTQuODIgMjE0LjgyIDAgMCAxLTkzLjItNi40Yy00LjItMS4yLTguOS0yLjUtMTMuNS00LjJsMS4yLTMtNDQuOC0yMi40IDI2LjEgMjIuNGMtNTcuNyA5LjEtMTEzLTI1LjQtMTI2LjQtODMuNGwtMi41LTE2LjQtMjIuMjcgMjIuM2MxOS41LTU3LjUgMjUuNi01Ny45IDUxLjQtNzAuMS05LjEtNS4zLTEuNi0zLjMtMzguNC05LjMgMTUuOC01LjggMzMtMTUuNCA3MyA1LjJhMTguNSAxOC41IDAgMCAxIDMuNy0xLjdjLjYtMy4yLjQtLjggMS0xMS44IDMuOSAxMCAzLjYgOC43IDMgOS4zbDEuNy41YzEyLjctNi41IDguOS00LjUgMTctOC45bC01LjQgMTMuNSAyMi4zLTUuOC04LjQgOC40IDIuNSAyLjVjNC41LTEuOCAzMC4zIDMuNCA0MC44IDE2bC0yMy42LTIuNWMzOS40IDIzIDUxLjUgNTQgNTUuOCA2OS42bDEuNy0xLjJjLTIuOC0yMi4zLTEyLjQtMzMuOS0xNi00MC4xIDQuMiA1IDM5LjIgMzQuNiAxMTAuNCA0Ni0xMS4zLS41LTIzLjEgNS40LTM0LjkgMTguOWw0Ni43LTIwLjItOS4zIDIxLjljNy42LTEwLjEgMTQuOC0yMy42IDIxLjItMzkuNnYtLjVsMS4yLTMtMS4yIDE2YzEzLjUtNDEuOCAyNS4zLTc4LjUgMzUuNC0xMDkuN2wxMy41LTI3Ljh2LTJsLTUuNC00LjJoMTAuMWw1LjkgNC4yIDIuNS0xLjItMy40LTE2IDEyLjMgMTguOSA0MS44LTIwLjItMTQuOCAxMyAuNSAyLjkgMTcuNy0uNWExODQgMTg0IDAgMCAxIDMzIDQuMmwtMjMuNiAyLjUtMS4yIDMgMjYuNiAyMy4xYTI1NC4yMSAyNTQuMjEgMCAwIDEgMjcgMzJjLTExLjItMy4zLTEwLjMtMy40LTIxLjItMy40bDEyLjMgMzIuNXptLTYuMS03MS4zbC0zLjkgMTMtMTQuMy0xMS44em0tMjU0LjggNy4xYzEuNyAxMC42IDQuNyAxNy43IDguOCAyMS45LTkuMyA2LjYtMjcuNSAxMy45LTQ2LjUgMTZsLjUgMS4yYTUwLjIyIDUwLjIyIDAgMCAwIDI0LjgtMi41bC03LjEgMTNjNC4yLTEuNyAxMC4xLTcuMSAxNy43LTE0LjggMTEuOS01LjUgMTIuNy01LjEgMjAuMi0xNi0xMi43LTYuNC0xNS43LTEzLjctMTguNC0xOC44em0zLjctMTAyLjNjLTYuNC0zLjQtMTAuNiAzLTEyLjMgMTguOXMyLjUgMjkuNSAxMS44IDM5LjYgMTguMiAxMC42IDI2LjEgMyAzLjQtMjMuNi0xMS4zLTQ3LjdhMzkuNTcgMzkuNTcgMCAwIDAtMTQuMjctMTMuOHptLTQuNyA0Ni4zYzUuNCAyLjIgMTAuNSAxLjkgMTIuMy0xMC42di00LjdsLTEuMi41Yy00LjMtMy4xLTIuNS00LjUtMS43LTYuMmwuNS0uNWMtLjktMS4yLTUtOC4xLTEyLjUgNC43LS41LTEzLjUuNS0yMS45IDMtMjQuOCAxLjItMi41IDQuNy0xLjIgMTEuMyA0LjIgNi40IDUuNCAxMS4zIDE2IDE1LjIgMzIuNSA2LjUgMjgtMTkuOCAyNi4yLTI2LjkgNC45em0tNDUtNS41YzEuNi4zIDkuMy0xLjEgOS4zLTE0LjhoLS41Yy01LjQtMS4xLTIuMi01LjUtLjctNS45LTEuNy0zLTMuNC00LjItNS40LTQuNy04LjEgMC0xMS42IDEyLjctOC4xIDIxLjJhNy41MSA3LjUxIDAgMCAwIDUuNDMgNC4yek0yMTYgODIuOWwtMi41LjUuNSAzYTQ4Ljk0IDQ4Ljk0IDAgMCAxIDI2LjEgNS45Yy0yLjUtNS41LTEwLTE0LjMtMjguMy0xNC4zbC41IDIuNXptLTcxLjggNDkuNGMyMS43IDE2LjggMTYuNSAyMS40IDQ2LjUgMjMuNmwtMi45LTQuN2E0Mi42NyA0Mi42NyAwIDAgMCAxNC44LTI4LjNjMS43LTE2LTEuMi0yOS41LTguOC00MS4zbDEzLTcuNmEyLjI2IDIuMjYgMCAwIDAtLjUtMS43IDE0LjIxIDE0LjIxIDAgMCAwLTEzLjUgMS43Yy0xMi43IDYuNy0yOCAyMC45LTI5IDIyLjQtMS43IDEuNy0zLjQgNS45LTUuNCAxMy41YTk5LjYxIDk5LjYxIDAgMCAwLTIuOSAyMy42Yy00LjctOC0xMC41LTYuNC0xOS45LTUuOWw3LjEgNy42Yy0xNi41IDAtMjMuMyAxNS40LTIzLjYgMTYgNi44IDAgNC42LTcuNiAzMC0xMi4zLTQuMy02LjMtMy4zLTUtNC45LTYuNnptMTguNy0xOC43YzEuMi03LjYgMy40LTEzIDYuNC0xNy4yIDUuNC02LjQgMTAuNi0xMC4xIDE2LTExLjggNC4yLTEuNyA3LjEgMS4yIDEwLjEgOS4zYTcyLjE0IDcyLjE0IDAgMCAxIDMgMjUuM2MtLjUgOS4zLTMuNCAxNy4yLTguNCAyMy4xLTIuOSAzLjQtNS40IDUuOS02LjQgNy42YTM5LjIxIDM5LjIxIDAgMCAxLTExLjMtLjVsLTcuMS0zLjQtNS40LTYuNGMuOC0xMCAxLjMtMTguOCAzLjEtMjZ6bTQyIDU2LjFjLTM0LjggMTQuNC0zNC43IDE0LTM2LjEgMTQuMy0yMC44IDQuNy0xOS0yNC40LTE4LjktMjQuOGw1LjktMS4yLS41LTIuNWMtMjAuMi0yLjYtMzEgNC4yLTMyLjUgNC45LjUuNSAzIDMuNCA1LjkgOS4zIDQuMi02LjQgOC44LTEwLjEgMTUuMi0xMC42YTgzLjQ3IDgzLjQ3IDAgMCAwIDEuNyAzMy43Yy4xLjUgMi42IDE3LjQgMjcuNSAyNC4xIDExLjMgMyAyNyAxLjIgNDguOS01LjRsLTkuMi41Yy00LjItMTQuOC02LjQtMjQuOC01LjktMjkuNSAxMS4zLTguOCAyMS45LTExLjMgMzAuNy03LjZoMi41bC0xMS44LTcuNi03LjEuNWMtNS45IDEuMi0xMi4zIDQuMi0xOS40IDguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlbWVjbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDIuOSA4LjQzYzkuOS01LjczIDI2LTUuODIgMzUuOTUtLjIxTDQzMCAxMTUuODVjMTAgNS42IDE4IDE5LjQ0IDE4IDMwLjg2VjM2NGMwIDExLjQ0LTguMDYgMjUuMjktMTggMzFMMjM4LjgxIDUwMy43NGMtOS45MyA1LjY2LTI2IDUuNTctMzUuODUtLjIxTDE3Ljg2IDM5NS4xMkM4IDM4OS4zNCAwIDM3NS4zOCAwIDM2NFYxNDYuNzFjMC0xMS40NCA4LTI1LjM2IDE3LjkxLTMxLjA4em0tNzcuNCAxOTkuODNjLTE1Ljk0IDAtMzEuODkuMTQtNDcuODMuMTR2MTAxLjQ1SDk2LjhWMjgwaDI4LjdjNDkuNzEgMCA0OS41Ni03MS43NCAwLTcxLjc0em0xNDAuMTQgMTAwLjI5bC0zMC43My0zNC42NGMzNy03LjUxIDM0LjgtNjUuMjMtMTAuODctNjUuNTEtMTYuMDkgMC0zMi4xNy0uMTQtNDguMjYtLjE0djEwMS41OWgxOS4xM3YtMzMuOTFoMTguNDFsMjkuNTYgMzMuOTFoMjIuNzZ6bS00MS41OS04Mi4zMmMyMy4zNCAwIDIzLjI2IDMyLjQ2IDAgMzIuNDZoLTI5LjEzdi0zMi40NnptLTk1LjU2LTEuNmMyMS4xOCAwIDIxLjExIDM4Ljg1IDAgMzguODVIOTYuMTh2LTM4Ljg0em0xOTIuNjUtMTguMjVjLTY4LjQ2IDAtNzEgMTA1LjggMCAxMDUuOCA2OS40OC0uMDEgNjkuNDEtMTA1LjggMC0xMDUuOHptMCAxNy4zOWM0NC4xMiAwIDQ0LjggNzAuODYgMCA3MC44NnMtNDQuNDMtNzAuODYgMC03MC44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlbWVpc2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA4OC4yODZjMC0xMCA2LjI4Ni0yMS43MTQgMTcuNzE1LTIxLjcxNCAxMS4xNDIgMCAxNy43MTQgMTEuNzE0IDE3LjcxNCAyMS43MTQgMCAxMC4yODUtNi41NzIgMjEuNzE0LTE3LjcxNCAyMS43MTRDMjE0LjI4NiAxMTAgMjA4IDk4LjU3MSAyMDggODguMjg2em0zMDQgMTYwYzAgMzYuMDAxLTExLjQyOSAxMDIuMjg2LTM2LjI4NiAxMjkuNzE0LTIyLjg1OCAyNC44NTgtODcuNDI4IDYxLjE0My0xMjAuODU3IDcwLjU3MmwtMS4xNDMuMjg2djMyLjU3MWMwIDE2LjI4Ni0xMi41NzIgMzAuNTcxLTI5LjE0MyAzMC41NzEtMTAgMC0xOS40MjktNS43MTQtMjQuNTcyLTE0LjI4Ni01LjQyNyA4LjU3Mi0xNC44NTYgMTQuMjg2LTI0Ljg1NiAxNC4yODYtMTAgMC0xOS40MjktNS43MTQtMjQuODU4LTE0LjI4Ni01LjE0MiA4LjU3Mi0xNC41NzEgMTQuMjg2LTI0LjU3IDE0LjI4Ni0xMC4yODYgMC0xOS40MjktNS43MTQtMjQuODU4LTE0LjI4Ni01LjE0MyA4LjU3Mi0xNC41NzEgMTQuMjg2LTI0LjU3MSAxNC4yODYtMTguODU3IDAtMjkuNDI5LTE1LjcxNC0yOS40MjktMzIuODU3LTE2LjI4NiAxMi4yODUtMzUuNzE1IDE5LjQyOC01Ni41NzEgMTkuNDI4LTIyIDAtNDMuNDI5LTguMjg1LTYwLjI4Ni0yMi44NTcgMTAuMjg1LS4yODYgMjAuNTcxLTIuMjg2IDMwLjI4NS01LjcxNC0yMC44NTctNS43MTQtMzkuNDI4LTE4Ljg1Ny01Mi0zNi4yODYgMjEuMzcgNC42NDUgNDYuMjA5IDEuNjczIDY3LjE0My0xMS4xNDMtMjItMjItNTYuNTcxLTU4Ljg1Ny02OC41NzItODcuNDI4QzEuMTQzIDMyMS43MTQgMCAzMDMuNzE0IDAgMjg5LjQyOWMwLTQ5LjcxNCAyMC4yODYtMTYwIDg2LjI4Ni0xNjAgMTAuNTcxIDAgMTguODU3IDQuODU4IDIzLjE0MyAxNC44NTdhMTU4Ljc5MiAxNTguNzkyIDAgMCAxIDEyLTE1LjQyOGMyLTIuNTcyIDUuNzE0LTUuNDI5IDcuMTQzLTguMjg2IDcuOTk5LTEyLjU3MSAxMS43MTQtMjEuMTQyIDIxLjcxNC0zNEMxODIuNTcxIDQ1LjQyOCAyMzIgMTcuMTQzIDI4NS4xNDMgMTcuMTQzYzYgMCAxMiAuMjg1IDE3LjcxNCAxLjE0M0MzMTMuNzE0IDYuNTcxIDMyOC44NTcgMCAzNDQuNTcyIDBjMTQuNTcxIDAgMjkuNzE0IDYgNDAgMTYuMjg2Ljg1Ny44NTggMS40MjggMi4yODYgMS40MjggMy40MjggMCAzLjcxNC0xMC4yODUgMTMuNDI5LTEyLjg1NyAxNi4yODYgNC4yODYgMS40MjkgMTUuNzE0IDYuODU4IDE1LjcxNCAxMiAwIDIuODU3LTIuODU3IDUuMTQzLTQuNTcxIDcuMTQzIDMxLjQyOSAyNy43MTQgNDkuNDI5IDY3LjE0MyA1Ni4yODYgMTA4IDQuMjg2LTUuMTQzIDEwLjI4NS04LjU3MiAxNy4xNDMtOC41NzIgMTAuNTcxIDAgMjAuODU3IDcuMTQ0IDI4LjU3MSAxNC4wMDFDNTA3LjE0MyAxODcuMTQzIDUxMiAyMjEuNzE0IDUxMiAyNDguMjg2ek0xODggODkuNDI4YzAgMTguMjg2IDEyLjU3MSAzNy4xNDMgMzIuMjg2IDM3LjE0MyAxOS43MTQgMCAzMi4yODUtMTguODU3IDMyLjI4NS0zNy4xNDMgMC0xOC0xMi41NzEtMzYuODU3LTMyLjI4NS0zNi44NTctMTkuNzE1IDAtMzIuMjg2IDE4Ljg1OC0zMi4yODYgMzYuODU3ek0yMzcuNzE0IDE5NGMwLTE5LjcxNCAzLjcxNC0zOS4xNDMgOC41NzEtNTguMjg2LTUyLjAzOSA3OS41MzQtMTMuNTMxIDE4NC41NzEgNjguODU4IDE4NC41NzEgMjEuNDI4IDAgNDIuNTcxLTcuNzE0IDYwLTIwIDItNy40MjkgMy43MTQtMTQuODU3IDMuNzE0LTIyLjU3MiAwLTE0LjI4Ni02LjI4Ni0yMS40MjgtMjAuNTcyLTIxLjQyOC00LjU3MSAwLTkuMTQzLjg1Ny0xMy40MjkgMS43MTQtNjMuMzQzIDEyLjY2OC0xMDcuMTQyIDMuNjY5LTEwNy4xNDItNjMuOTk5em0tNDEuMTQyIDI1NC44NThjMC0xMS4xNDMtOC44NTgtMjAuODU3LTIwLjI4Ni0yMC44NTctMTEuNDI5IDAtMjAgOS43MTUtMjAgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4LjU3MSAyMS4xNDIgMjAgMjEuMTQyIDExLjQyOCAwIDIwLjI4Ni05LjcxNSAyMC4yODYtMjEuMTQydi0zMi41NzF6bTQ5LjE0MyAwYzAtMTEuMTQzLTguNTcyLTIwLjg1Ny0yMC0yMC44NTctMTEuNDI5IDAtMjAuMjg2IDkuNzE1LTIwLjI4NiAyMC44NTd2MzIuNTcxYzAgMTEuMTQzIDguODU3IDIxLjE0MiAyMC4yODYgMjEuMTQyIDExLjQyOCAwIDIwLTEwIDIwLTIxLjE0MnYtMzIuNTcxem00OS43MTMgMGMwLTExLjE0My04Ljg1Ny0yMC44NTctMjAuMjg1LTIwLjg1Ny0xMS40MjkgMC0yMC4yODYgOS43MTUtMjAuMjg2IDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC44NTcgMjEuMTQyIDIwLjI4NiAyMS4xNDIgMTEuNDI4IDAgMjAuMjg1LTkuNzE1IDIwLjI4NS0yMS4xNDJ2LTMyLjU3MXptNDkuNzE1IDBjMC0xMS4xNDMtOC44NTctMjAuODU3LTIwLjI4Ni0yMC44NTctMTEuNDI4IDAtMjAuMjg2IDkuNzE1LTIwLjI4NiAyMC44NTd2MzIuNTcxYzAgMTEuMTQzIDguODU4IDIxLjE0MiAyMC4yODYgMjEuMTQyIDExLjQyOSAwIDIwLjI4Ni0xMCAyMC4yODYtMjEuMTQydi0zMi41NzF6TTQyMS43MTQgMjg2Yy0zMC44NTcgNTkuMTQyLTkwLjI4NSAxMDIuNTcyLTE1OC41NzEgMTAyLjU3Mi05Ni41NzEgMC0xNjAuNTcxLTg0LjU3Mi0xNjAuNTcxLTE3Ni41NzIgMC0xNi44NTcgMi0zMy40MjkgNi00OS43MTQtMjAgMzMuNzE1LTI5LjcxNCA3Mi41NzItMjkuNzE0IDExMS40MjkgMCA2MC4yODYgMjQuODU3IDEyMS43MTUgNzEuNDI5IDE2MC44NTcgNS4xNDMtOS43MTQgMTQuODU3LTE2LjI4NiAyNi0xNi4yODYgMTAgMCAxOS40MjggNS43MTQgMjQuNTcxIDE0LjI4NiA1LjQyOS04LjU3MSAxNC41NzEtMTQuMjg2IDI0Ljg1OC0xNC4yODYgMTAgMCAxOS40MjggNS43MTQgMjQuNTcxIDE0LjI4NiA1LjQyOS04LjU3MSAxNC44NTctMTQuMjg2IDI0Ljg1OC0xNC4yODYgMTAgMCAxOS40MjggNS43MTQgMjQuODU3IDE0LjI4NiA1LjE0My04LjU3MSAxNC41NzEtMTQuMjg2IDI0LjU3Mi0xNC4yODYgMTAuODU3IDAgMjAuODU3IDYuNTcyIDI1LjcxNCAxNiA0My40MjctMzYuMjg2IDY4LjU2OS05MiA3MS40MjYtMTQ4LjI4NnptMTAuNTcyLTk5LjcxNGMwLTUzLjcxNC0zNC41NzEtMTA1LjcxNC05Mi41NzItMTA1LjcxNC0zMC4yODUgMC01OC41NzEgMTUuMTQzLTc4Ljg1NyAzNi44NTdDMjQwLjg2MiAxODMuODEyIDIzMy40MSAyNTQgMzAyLjI4NiAyNTRjMjguODA1IDAgOTcuMzU3LTI4LjUzOCA4NC4yODYgMzYuODU3IDI4Ljg1Ny0yNiA0NS43MTQtNjUuNzE0IDQ1LjcxNC0xMDQuNTcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGlua1BlYWtzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NS40IDQwOS40bDg3LjEtMTUwLjItMzItLjMtNTUuMSA5NUwyNTkuMiAwIDIzIDQwNy40bDMyIC4zTDI1OS4yIDU1LjZ6bS0zNTUuMy00NC4xaDMyLjFsMTE3LjQtMjAyLjVMNDYzIDUxMS45bDMyLjUuMS0yMzUuOC00MDQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlrdG9rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCwyMDkuOTFhMjEwLjA2LDIxMC4wNiwwLDAsMS0xMjIuNzctMzkuMjVWMzQ5LjM4QTE2Mi41NSwxNjIuNTUsMCwxLDEsMTg1LDE4OC4zMVYyNzguMmE3NC42Miw3NC42MiwwLDEsMCw1Mi4yMyw3MS4xOFYwbDg4LDBhMTIxLjE4LDEyMS4xOCwwLDAsMCwxLjg2LDIyLjE3aDBBMTIyLjE4LDEyMi4xOCwwLDAsMCwzODEsMTAyLjM5YTEyMS40MywxMjEuNDMsMCwwLDAsNjcsMjAuMTRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYWRlRmVkZXJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOC44Yy0xMzcgMC0yNDggMTExLTI0OCAyNDhzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OC0xMTEtMjQ4LTI0OC0yNDh6bTAgNDgyLjhjLTEyOS43IDAtMjM0LjgtMTA1LjEtMjM0LjgtMjM0LjhTMTE4LjMgMjIgMjQ4IDIyczIzNC44IDEwNS4xIDIzNC44IDIzNC44UzM3Ny43IDQ5MS42IDI0OCA0OTEuNnptMTU1LjEtMzI4LjV2LTQ2LjhIMjA5LjNWMTk4SDU0LjJsMzYuNyA0NmgxMTcuN3YxOTYuOGg0OC44VjI0NWg4My4zdi00N2gtODMuM3YtMzQuOGgxNDUuN3ptLTczLjMgNDUuMXYyMy45aC04Mi45djE5Ny40aC0yNi44VjIzMi4xSDk2LjNsLTIwLjEtMjMuOWgxNDMuOXYtODAuNmgxNzEuOFYxNTJoLTE0NXY1Ni4yem0tMTYxLjMtNjlsLTEyLjQtMjAuNyAyLjEgMjMuOC0yMy41IDUuNCAyMy4zIDUuNC0yLjEgMjQgMTIuMy0yMC41IDIyLjIgOS41LTE1LjctMTguMSAxNS44LTE4LjF6bS0yOS42LTE5LjdsOS4zLTExLjUtMTIuNyA1LjktOC0xMi40IDEuNyAxMy45LTE0LjMgMy44IDEzLjcgMi43LS44IDE0LjcgNi44LTEyLjIgMTMuOCA1LjN6bTE2NS40IDE0NS4ybC0xMy4xIDUuNi03LjMtMTIuMiAxLjMgMTQuMi0xMy45IDMuMiAxMy45IDMuMi0xLjIgMTQuMiA3LjMtMTIuMiAxMy4xIDUuNS05LjQtMTAuN3ptMTA2LjktNzcuMmwtMjAuOSA5LjEtMTItMTkuNiAyLjIgMjIuNy0yMi4zIDUuNCAyMi4yIDQuOS0xLjggMjIuOSAxMS41LTE5LjYgMjEuMiA4LjgtMTUuMS0xN3pNMjQ4IDI5LjljLTEyNS4zIDAtMjI2LjkgMTAxLjYtMjI2LjkgMjI2LjlTMTIyLjcgNDgzLjcgMjQ4IDQ4My43czIyNi45LTEwMS42IDIyNi45LTIyNi45UzM3My4zIDI5LjkgMjQ4IDI5Ljl6TTM0Mi42IDE5NnY1MWgtODMuM3YxOTUuN2gtNTIuN1YyNDUuOUg4OS45bC00MC00OS45aDE1Ny40di04MS42aDE5Ny44djUwLjdIMjU5LjRWMTk2ek0yNDggNDMuMmM2MC4zIDAgMTE0LjggMjUgMTUzLjYgNjUuMkgyMDIuNVYxOTBINDUuMUM3My4xIDEwNC44IDE1My40IDQzLjIgMjQ4IDQzLjJ6bTAgNDI3LjFjLTExNy45IDAtMjEzLjYtOTUuNi0yMTMuNi0yMTMuNSAwLTIxLjIgMy4xLTQxLjggOC45LTYxLjFMODcuMSAyNTJoMTE0Ljd2MTk2LjhoNjQuNlYyNTNoODMuM3YtNjIuN2gtODMuMnYtMTkuMmgxNDUuNnYtNTAuOGMzMC44IDM3IDQ5LjMgODQuNiA0OS4zIDEzNi41LjEgMTE3LjktOTUuNSAyMTMuNS0yMTMuNCAyMTMuNXpNMTc4LjggMjc1bC0xMS0yMS40IDEuNyAyNC41LTIzLjcgMy45IDIzLjggNS45LTMuNyAyMy44IDEzLTIwLjkgMjEuNSAxMC44LTE1LjgtMTguOCAxNi45LTE3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyZWxsbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTIuMyAzMkg1Ni4xQzI1LjEgMzIgMCA1Ny4xIDAgODhjLS4xIDAgMC00IDAgMzM2IDAgMzAuOSAyNS4xIDU2IDU2IDU2aDMzNi4yYzMwLjgtLjIgNTUuNy0yNS4yIDU1LjctNTZWODhjLjEtMzAuOC0yNC44LTU1LjgtNTUuNi01NnpNMTk3IDM3MS4zYy0uMiAxNC43LTEyLjEgMjYuNi0yNi45IDI2LjZIODcuNGMtMTQuOC4xLTI2LjktMTEuOC0yNy0yNi42VjExNy4xYzAtMTQuOCAxMi0yNi45IDI2LjktMjYuOWg4Mi45YzE0LjggMCAyNi45IDEyIDI2LjkgMjYuOXYyNTQuMnptMTkzLjEtMTEyYzAgMTQuOC0xMiAyNi45LTI2LjkgMjYuOWgtODFjLTE0LjggMC0yNi45LTEyLTI2LjktMjYuOVYxMTcuMmMwLTE0LjggMTItMjYuOSAyNi44LTI2LjloODEuMWMxNC44IDAgMjYuOSAxMiAyNi45IDI2Ljl2MTQyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyaXBhZHZpc29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOC45MSwxNzguODIsNTc2LDEyNy41OEg0NzEuNjZhMzI2LjExLDMyNi4xMSwwLDAsMC0zNjcsMEgwbDQ3LjA5LDUxLjI0QTE0My45MTEsMTQzLjkxMSwwLDAsMCwyNDEuODYsMzkwLjczTDI4OCw0NDAuOTNsNDYuMTEtNTAuMTdBMTQzLjk0LDE0My45NCwwLDAsMCw1NzUuODgsMjg1LjE4aC0uMDNBMTQzLjU2LDE0My41NiwwLDAsMCw1MjguOTEsMTc4LjgyWk0xNDQuMDYsMzgyLjU3YTk3LjM5LDk3LjM5LDAsMSwxLDk3LjM5LTk3LjM5QTk3LjM5LDk3LjM5LDAsMCwxLDE0NC4wNiwzODIuNTdaTTI4OCwyODIuMzdjMC02NC4wOS00Ni42Mi0xMTkuMDgtMTA4LjA5LTE0Mi41OWEyODEsMjgxLDAsMCwxLDIxNi4xNywwQzMzNC42MSwxNjMuMywyODgsMjE4LjI5LDI4OCwyODIuMzdabTE0My44OCwxMDAuMmgtLjAxYTk3LjQwNSw5Ny40MDUsMCwxLDEsLjAxLDBaTTE0NC4wNiwyMzQuMTJoLS4wMWE1MS4wNiw1MS4wNiwwLDEsMCw1MS4wNiw1MS4wNnYtLjExQTUxLDUxLDAsMCwwLDE0NC4wNiwyMzQuMTJabTI4Ny44MiwwYTUxLjA2LDUxLjA2LDAsMSwwLDUxLjA2LDUxLjA2QTUxLjA2LDUxLjA2LDAsMCwwLDQzMS44OCwyMzQuMTJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR1bWJsclNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tODIuMyAzNjQuMmMtOC41IDkuMS0zMS4yIDE5LjgtNjAuOSAxOS44LTc1LjUgMC05MS45LTU1LjUtOTEuOS04Ny45di05MGgtMjkuN2MtMy40IDAtNi4yLTIuOC02LjItNi4ydi00Mi41YzAtNC41IDIuOC04LjUgNy4xLTEwIDM4LjgtMTMuNyA1MC45LTQ3LjUgNTIuNy03My4yLjUtNi45IDQuMS0xMC4yIDEwLTEwLjJoNDQuM2MzLjQgMCA2LjIgMi44IDYuMiA2LjJ2NzJoNTEuOWMzLjQgMCA2LjIgMi44IDYuMiA2LjJ2NTEuMWMwIDMuNC0yLjggNi4yLTYuMiA2LjJoLTUyLjFWMzIxYzAgMjEuNCAxNC44IDMzLjUgNDIuNSAyMi40IDMtMS4yIDUuNi0yIDgtMS40IDIuMi41IDMuNiAyLjEgNC42IDQuOWwxMy44IDQwLjJjMSAzLjIgMiA2LjctLjMgOS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdW1ibHIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA5LjggNDgwLjNjLTEzLjYgMTQuNS01MCAzMS43LTk3LjQgMzEuNy0xMjAuOCAwLTE0Ny04OC44LTE0Ny0xNDAuNnYtMTQ0SDE3LjljLTUuNSAwLTEwLTQuNS0xMC0xMHYtNjhjMC03LjIgNC41LTEzLjYgMTEuMy0xNiA2Mi0yMS44IDgxLjUtNzYgODQuMy0xMTcuMS44LTExIDYuNS0xNi4zIDE2LjEtMTYuM2g3MC45YzUuNSAwIDEwIDQuNSAxMCAxMHYxMTUuMmg4M2M1LjUgMCAxMCA0LjQgMTAgOS45djgxLjdjMCA1LjUtNC41IDEwLTEwIDEwaC04My40VjM2MGMwIDM0LjIgMjMuNyA1My42IDY4IDM1LjggNC44LTEuOSA5LTMuMiAxMi43LTIuMiAzLjUuOSA1LjggMy40IDcuNCA3LjlsMjIgNjQuM2MxLjggNSAzLjMgMTAuNi0uNCAxNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUd2l0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkxLjE3LDEwMy40N0gzNTIuNTR2MTA5LjdoMzguNjNaTTI4NSwxMDNIMjQ2LjM3VjIxMi43NUgyODVaTTEyMC44MywwLDI0LjMxLDkxLjQyVjQyMC41OEgxNDAuMTRWNTEybDk2LjUzLTkxLjQyaDc3LjI1TDQ4Ny42OSwyNTZWMFpNNDQ5LjA3LDIzNy43NWwtNzcuMjIsNzMuMTJIMjk0LjYxbC02Ny42LDY0di02NEgxNDAuMTRWMzYuNThINDQ5LjA3WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUd2l0dGVyU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS00OC45IDE1OC44Yy4yIDIuOC4yIDUuNy4yIDguNSAwIDg2LjctNjYgMTg2LjYtMTg2LjYgMTg2LjYtMzcuMiAwLTcxLjctMTAuOC0xMDAuNy0yOS40IDUuMy42IDEwLjQuOCAxNS44LjggMzAuNyAwIDU4LjktMTAuNCA4MS40LTI4LTI4LjgtLjYtNTMtMTkuNS02MS4zLTQ1LjUgMTAuMSAxLjUgMTkuMiAxLjUgMjkuNi0xLjItMzAtNi4xLTUyLjUtMzIuNS01Mi41LTY0LjR2LS44YzguNyA0LjkgMTguOSA3LjkgMjkuNiA4LjNhNjUuNDQ3IDY1LjQ0NyAwIDAgMS0yOS4yLTU0LjZjMC0xMi4yIDMuMi0yMy40IDguOS0zMy4xIDMyLjMgMzkuOCA4MC44IDY1LjggMTM1LjIgNjguNi05LjMtNDQuNSAyNC04MC42IDY0LTgwLjYgMTguOSAwIDM1LjkgNy45IDQ3LjkgMjAuNyAxNC44LTIuOCAyOS04LjMgNDEuNi0xNS44LTQuOSAxNS4yLTE1LjIgMjgtMjguOCAzNi4xIDEzLjItMS40IDI2LTUuMSAzNy44LTEwLjItOC45IDEzLjEtMjAuMSAyNC43LTMyLjkgMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR3aXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU5LjM3IDE1MS43MTZjLjMyNSA0LjU0OC4zMjUgOS4wOTcuMzI1IDEzLjY0NSAwIDEzOC43Mi0xMDUuNTgzIDI5OC41NTgtMjk4LjU1OCAyOTguNTU4LTU5LjQ1MiAwLTExNC42OC0xNy4yMTktMTYxLjEzNy00Ny4xMDYgOC40NDcuOTc0IDE2LjU2OCAxLjI5OSAyNS4zNCAxLjI5OSA0OS4wNTUgMCA5NC4yMTMtMTYuNTY4IDEzMC4yNzQtNDQuODMyLTQ2LjEzMi0uOTc1LTg0Ljc5Mi0zMS4xODgtOTguMTEyLTcyLjc3MiA2LjQ5OC45NzQgMTIuOTk1IDEuNjI0IDE5LjgxOCAxLjYyNCA5LjQyMSAwIDE4Ljg0My0xLjMgMjcuNjE0LTMuNTczLTQ4LjA4MS05Ljc0Ny04NC4xNDMtNTEuOTgtODQuMTQzLTEwMi45ODV2LTEuMjk5YzEzLjk2OSA3Ljc5NyAzMC4yMTQgMTIuNjcgNDcuNDMxIDEzLjMxOS0yOC4yNjQtMTguODQzLTQ2Ljc4MS01MS4wMDUtNDYuNzgxLTg3LjM5MSAwLTE5LjQ5MiA1LjE5Ny0zNy4zNiAxNC4yOTQtNTIuOTU0IDUxLjY1NSA2My42NzUgMTI5LjMgMTA1LjI1OCAyMTYuMzY1IDEwOS44MDctMS42MjQtNy43OTctMi41OTktMTUuOTE4LTIuNTk5LTI0LjA0IDAtNTcuODI4IDQ2Ljc4Mi0xMDQuOTM0IDEwNC45MzQtMTA0LjkzNCAzMC4yMTMgMCA1Ny41MDIgMTIuNjcgNzYuNjcgMzMuMTM3IDIzLjcxNS00LjU0OCA0Ni40NTYtMTMuMzIgNjYuNTk5LTI1LjM0LTcuNzk4IDI0LjM2Ni0yNC4zNjYgNDQuODMzLTQ2LjEzMiA1Ny44MjcgMjEuMTE3LTIuMjczIDQxLjU4NC04LjEyMiA2MC40MjYtMTYuMjQzLTE0LjI5MiAyMC43OTEtMzIuMTYxIDM5LjMwOC01Mi42MjggNTQuMjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUeXBvMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzguNyA3OC40YzAtMjQuNyA1LjQtMzIuNCAxMy45LTM5LjQtNjkuNSA4LjUtMTQ5LjMgMzQtMTc2LjMgNjYuNC01LjQgNy43LTkuMyAyMC44LTkuMyAzNy4xQzcgMjQ2IDExMy44IDQ4MCAxOTEuMSA0ODBjMzYuMyAwIDk3LjMtNTkuNSAxNDYuNy0xMzktNyAyLjMtMTEuNiAyLjMtMTguNSAyLjMtNTcuMiAwLTE0MC42LTE5OC41LTE0MC42LTI2NC45ek0zMDEuNSAzMmMtMzAuMSAwLTQxLjcgNS40LTQxLjcgMzYuMyAwIDY2LjQgNTMuOCAxOTguNSAxMDEuNyAxOTguNSAyNi4zIDAgNzguOC05OS43IDc4LjgtMTgyLjMgMC00MC45LTY3LTUyLjUtMTM4LjgtNTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVWJlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTQuMSAzMkgzMy45QzE1LjIgMzIgMCA0Ny4yIDAgNjUuOVY0NDZjMCAxOC44IDE1LjIgMzQgMzMuOSAzNEg0MTRjMTguNyAwIDMzLjktMTUuMiAzMy45LTMzLjlWNjUuOUM0NDggNDcuMiA0MzIuOCAzMiA0MTQuMSAzMnpNMjM3LjYgMzkxLjFDMTYzIDM5OC42IDk2LjQgMzQ0LjIgODguOSAyNjkuNmg5NC40VjI5MGMwIDMuNyAzIDYuOCA2LjggNi44SDI1OGMzLjcgMCA2LjgtMyA2LjgtNi44di02Ny45YzAtMy43LTMtNi44LTYuOC02LjhoLTY3LjljLTMuNyAwLTYuOCAzLTYuOCA2Ljh2MjAuNEg4OC45YzctNjkuNCA2NS40LTEyMi4yIDEzNS4xLTEyMi4yIDY5LjcgMCAxMjguMSA1Mi44IDEzNS4xIDEyMi4yIDcuNSA3NC41LTQ2LjkgMTQxLjEtMTIxLjUgMTQ4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVidW50dSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em01Mi43IDkzYzguOC0xNS4yIDI4LjMtMjAuNSA0My41LTExLjcgMTUuMyA4LjggMjAuNSAyOC4zIDExLjcgNDMuNi04LjggMTUuMi0yOC4zIDIwLjUtNDMuNSAxMS43LTE1LjMtOC45LTIwLjUtMjguNC0xMS43LTQzLjZ6TTg3LjQgMjg3LjljLTE3LjYgMC0zMS45LTE0LjMtMzEuOS0zMS45IDAtMTcuNiAxNC4zLTMxLjkgMzEuOS0zMS45IDE3LjYgMCAzMS45IDE0LjMgMzEuOSAzMS45IDAgMTcuNi0xNC4zIDMxLjktMzEuOSAzMS45em0yOC4xIDMuMWMyMi4zLTE3LjkgMjIuNC01MS45IDAtNjkuOSA4LjYtMzIuOCAyOS4xLTYwLjcgNTYuNS03OS4xbDIzLjcgMzkuNmMtNTEuNSAzNi4zLTUxLjUgMTEyLjUgMCAxNDguOEwxNzIgMzcwYy0yNy40LTE4LjMtNDcuOC00Ni4zLTU2LjUtNzl6bTIyOC43IDEzMS43Yy0xNS4zIDguOC0zNC43IDMuNi00My41LTExLjctOC44LTE1LjMtMy42LTM0LjggMTEuNy00My42IDE1LjItOC44IDM0LjctMy42IDQzLjUgMTEuNyA4LjggMTUuMyAzLjYgMzQuOC0xMS43IDQzLjZ6bS4zLTY5LjVjLTI2LjctMTAuMy01Ni4xIDYuNi02MC41IDM1LTUuMiAxLjQtNDguOSAxNC4zLTk2LjctOS40bDIyLjUtNDAuM2M1NyAyNi41IDEyMy40LTExLjcgMTI4LjktNzQuNGw0Ni4xLjdjLTIuMyAzNC41LTE3LjMgNjUuNS00MC4zIDg4LjR6bS01LjktMTA1LjNjLTUuNC02Mi03MS4zLTEwMS4yLTEyOC45LTc0LjRsLTIyLjUtNDAuM2M0Ny45LTIzLjcgOTEuNS0xMC44IDk2LjctOS40IDQuNCAyOC4zIDMzLjggNDUuMyA2MC41IDM1IDIzLjEgMjIuOSAzOCA1My45IDQwLjIgODguNWwtNDYgLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVpa2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My45IDEyOHYyNTZMMjE4IDUxMiAwIDM4NFYxNjkuN2w4Ny42IDQ1LjF2MTE3bDEzMy41IDc1LjUgMTM1LjgtNzUuNXYtMTUxbC0xMDEuMS01Ny42IDg3LjYtNTMuMUw0NDMuOSAxMjh6TTMwOC42IDQ5LjFMMjIzLjggMGwtODguNiA1NC44IDg2IDQ3LjMgODcuNC01M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW1icmFjbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuMzUgOEMxMTguMzYgNy44MyA3LjE0IDExOC43MiA3IDI1NS42OGMtLjA3IDEzNyAxMTEgMjQ4LjIgMjQ4IDI0OC4yNyAxMzYuODUgMCAyNDcuODItMTEwLjcgMjQ4LTI0Ny42N1MzOTIuMzQgOC4xNyAyNTUuMzUgOHptMTQ1IDI2NnEtMS4xNCA0MC42OC0xNCA2NXQtNDMuNTEgMzVxLTMwLjYxIDEwLjctODUuNDUgMTAuNDdoLTQuNnEtNTQuNzguMjItODUuNDQtMTAuNDd0LTQzLjUyLTM1cS0xMi44NS0yNC4zNi0xNC02NWEyMjQuODEgMjI0LjgxIDAgMCAxIDAtMzAuNzEgNDE4LjM3IDQxOC4zNyAwIDAgMSAzLjYtNDMuODhjMS44OC0xMy4zOSAzLjU3LTIyLjU4IDUuNC0zMiAxLTQuODggMS4yOC02LjQyIDEuODItOC40NWE1LjA5IDUuMDkgMCAwIDEgNC45LTMuODloLjY5bDMyIDVhNS4wNyA1LjA3IDAgMCAxIDQuMTYgNSA1IDUgMCAwIDEgMCAuNzdsLTEuNyA4Ljc4cS0yLjQxIDEzLjI1LTQuODQgMzMuNjhhMzgwLjYyIDM4MC42MiAwIDAgMC0yLjY0IDQyLjE1cS0uMjggNDAuNDMgOC4xMyA1OS44M2E0My44NyA0My44NyAwIDAgMCAzMS4zMSAyNS4xOEEyNDMgMjQzIDAgMCAwIDI1MCAzNDAuNmgxMC4yNWEyNDIuNjQgMjQyLjY0IDAgMCAwIDU3LjI3LTUuMTYgNDMuODYgNDMuODYgMCAwIDAgMzEuMTUtMjUuMjNxOC41My0xOS40MiA4LjEzLTU5Ljc4YTM4OCAzODggMCAwIDAtMi42LTQyLjE1cS0yLjQ4LTIwLjM4LTQuODktMzMuNjhsLTEuNjktOC43OGE1IDUgMCAwIDEgMC0uNzcgNSA1IDAgMCAxIDQuMi01bDMyLTVoLjgyYTUgNSAwIDAgMSA0LjkgMy44OWMuNTUgMi4wNS44MSAzLjU3IDEuODMgOC40NSAxLjgyIDkuNjIgMy41MiAxOC43OCA1LjM5IDMyYTQxNS43MSA0MTUuNzEgMCAwIDEgMy42MSA0My44OCAyMjguMDYgMjI4LjA2IDAgMCAxLS4wNCAzMC43M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5jaGFydGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MS43MywyMzIuODEzQTUuMzgxLDUuMzgxLDAsMCwwLDE3Ni43LDIyOS41LDQ4LjA4MSw0OC4wODEsMCwwLDEsMTkxLjYsMjA0LjI0NGMxLjI0My0uODI4LDEuNjU3LTIuNDg0LDEuNjU3LTQuMTQxYTQuMjIsNC4yMiwwLDAsMC0yLjA3MS0zLjMxMkw3NC40MjksMTI4LjQ3MywxNDguOTU4LDg1YTkuOTQxLDkuOTQxLDAsMCwwLDQuOTY4LTguMjgxLDkuMTA4LDkuMTA4LDAsMCwwLTQuOTY4LTguMjgxTDEyNi42LDU1LjZhOS43NDgsOS43NDgsMCwwLDAtOS41MjMsMGwtMTAwLjIsNTcuOTY2YTkuOTQzLDkuOTQzLDAsMCwwLTQuOTY5LDguMjgxVjIzNi45NTRhOS4xMDksOS4xMDksMCwwLDAsNC45NjksOC4yODFMMzkuMjM1LDI1OC4wN2E4LjgyOSw4LjgyOSwwLDAsMCw0Ljk2OCwxLjI0Miw5LjQsOS40LDAsMCwwLDYuNjI1LTIuNDg0LDEwLjgsMTAuOCwwLDAsMCwyLjktNy4wMzlWMTY0LjVMMTY5LjY2LDIzMi40QTQuNSw0LjUsMCwwLDAsMTcxLjczLDIzMi44MTNaTTMyMy4yNzIsMzc3LjczYTEyLjQ3OCwxMi40NzgsMCwwLDAtNC45NjksMS4yNDJsLTc0LjUyOCw0My4wNjJWMjg3Ljg4MmMwLTIuOS0yLjktNS44LTYuMjExLTQuNTU1YTUzLjAzNiw1My4wMzYsMCwwLDEtMjguOTg0LjQxNCw0Ljg2LDQuODYsMCwwLDAtNi4yMSw0LjU1NVY0MjEuNjE5bC03NC41MjktNDMuMDYxYTguODMsOC44MywwLDAsMC00Ljk2OS0xLjI0Miw5LjYzMSw5LjYzMSwwLDAsMC05LjUyMyw5LjUyM3YyNi4wODVhOS4xMDcsOS4xMDcsMCwwLDAsNC45NjksOC4yODFsMTAwLjIsNTcuNTUzQTguODI5LDguODI5LDAsMCwwLDIyMy40ODYsNDgwYTExLjAyNywxMS4wMjcsMCwwLDAsNC45NjktMS4yNDJsMTAwLjItNTcuNTUzYTkuOTQxLDkuOTQxLDAsMCwwLDQuOTY4LTguMjgxVjM4Ni44MzlDMzMyLjgsMzgyLjI4NSwzMjguMjQsMzc3LjczLDMyMy4yNzIsMzc3LjczWk0yODYuMDA3LDc4YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDI4Ni4wMDcsNzhabTYzLjYyNy0xMC4wODZhMjMsMjMsMCwxLDAsMjMsMjNBMjMsMjMsMCwwLDAsMzQ5LjYzNCw2Ny45MTRaTTQxMi44MTYsMTUxLjZhMjMsMjMsMCwxLDAtMjMtMjNBMjMsMjMsMCwwLDAsNDEyLjgxNiwxNTEuNlptLTYzLjE4Mi05LjJhMjMsMjMsMCwxLDAsMjMsMjNBMjMsMjMsMCwwLDAsMzQ5LjYzNCwxNDIuNFptLTYzLjYyNyw4My4yNDRhMjMsMjMsMCwxLDAtMjMtMjNBMjMsMjMsMCwwLDAsMjg2LjAwNywyMjUuNjQ4Wm0tNjIuMDc0LDM2LjM1OGEyMywyMywwLDEsMC0yMy0yM0EyMywyMywwLDAsMCwyMjMuOTMzLDI2Mi4wMDZabTE4OC44ODMtODIuMzU4YTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMTc5LjY0OFptMCw3Mi4yNzJhMjMsMjMsMCwxLDAsMjMsMjNBMjMsMjMsMCwwLDAsNDEyLjgxNiwyNTEuOTJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXJlZ2lzdHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA0ODBjMzkuNSAwIDc2LjItMTEuOCAxMDYuOC0zMi4ySDg1LjNDMTE1LjggNDY4LjIgMTUyLjUgNDgwIDE5MiA0ODB6bS04OS4xLTE5My4xdi0xMi40SDB2MTIuNGMwIDIuNSAwIDUgLjEgNy40aDEwMy4xYy0uMi0yLjQtLjMtNC45LS4zLTcuNHptMjAuNSA1N0g4LjVjMi42IDguNSA1LjggMTYuOCA5LjYgMjQuOGgxMzguM2MtMTIuOS01LjctMjQuMS0xNC4yLTMzLTI0Ljh6bS0xNy43LTM0LjdIMS4zYy45IDcuNiAyLjIgMTUgMy45IDIyLjNoMTA5LjdjLTQtNi45LTcuMi0xNC40LTkuMi0yMi4zem0tMi44LTY5LjNIMHYxNy4zaDEwMi45em0wLTE3My4ySDB2NC45aDEwMi45em0wLTM0LjdIMHYyLjVoMTAyLjl6bTAgNjkuM0gwdjcuNGgxMDIuOXptMCAxMDRIMHYxNC44aDEwMi45em0wLTY5LjNIMHY5LjloMTAyLjl6bTAgMzQuNkgwVjE4M2gxMDIuOXptMTY2LjIgMTYwLjloMTA5LjdjMS44LTcuMyAzLjEtMTQuNyAzLjktMjIuM0gyNzguM2MtMi4xIDcuOS01LjIgMTUuNC05LjIgMjIuM3ptMTItMTg1LjdIMzg0VjEzNkgyODEuMXptMCAzNy4ySDM4NHYtMTIuNEgyODEuMXptMC03NC4zSDM4NHYtNy40SDI4MS4xem0wLTc2Ljd2Mi41SDM4NFYzMnptLTIwMyA0MTAuOWgyMjcuN2MxMS44LTguNyAyMi43LTE4LjYgMzIuMi0yOS43SDQ0LjljOS42IDExIDIxLjQgMjEgMzMuMiAyOS43em0yMDMtMzcxLjNIMzg0di00LjlIMjgxLjF6bTAgMTQ4LjVIMzg0di0xNC44SDI4MS4xek0zOC44IDQwNS43aDMwNS4zYzYuNy04LjUgMTIuNi0xNy42IDE3LjgtMjcuMkgyM2M1LjIgOS42IDkuMiAxOC43IDE1LjggMjcuMnptMTg4LjgtMzcuMUgzNjdjMy43LTggNS44LTE2LjIgOC41LTI0LjhoLTExNWMtOC44IDEwLjctMjAuMSAxOS4yLTMyLjkgMjQuOHptNTMuNS04MS43YzAgMi41LS4xIDUtLjQgNy40aDEwMy4xYy4xLTIuNS4yLTQuOS4yLTcuNHYtMTIuNEgyODEuMXptMC0yOS43SDM4NHYtMTcuM0gyODEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5pdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk4LjExLDIwNi40LDQ0NS4zMSwxNC43MiwyNDguMiw2Ni4wOCwyMTksMTE2LjE0bC01OS4yLS40M0wxNS41NCwyNTYsMTU5LjgyLDM5Ni4zMmw1OS4xNy0uNDMsMjkuMjQsNTAsMTk3LjA4LDUxLjM2LDUyLjgtMTkxLjYyLTMwLTQ5LjYzWk0yMjMuNzcsMTI0LjIsMzc0LjU1LDg2LjUxLDI4OCwyMzIuMzNIMTE0Ljg3Wm0wLDI2My42M0wxMTQuODcsMjc5LjcxSDI4OGw4Ni41NSwxNDUuODFabTE5MywxNEwzMzAuMTcsMjU2bDg2LjU4LTE0NS44NEw0NTguNTYsMjU2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbnNwbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDgsMjMwLjE3VjQ4MEgwVjIzMC4xN0gxNDEuMTNWMzU1LjA5SDMwNi44N1YyMzAuMTdaTTMwNi44NywzMkgxNDEuMTNWMTU2LjkxSDMwNi44N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW50YXBwZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDEuMyA0OS45Yy03OS44IDE2MC4xLTg0LjYgMTUyLjUtODcuOSAxNzMuMmwtNS4yIDMyLjhjLTEuOSAxMi02LjYgMjMuNS0xMy43IDMzLjRMMTQ1LjYgNDk3LjFjLTcuNiAxMC42LTIwLjQgMTYuMi0zMy40IDE0LjYtNDAuMy01LTc3LjgtMzIuMi05NS4zLTY4LjUtNS43LTExLjgtNC41LTI1LjggMy4xLTM2LjRsMTQ4LjktMjA3LjljNy4xLTkuOSAxNi40LTE4IDI3LjItMjMuN2wyOS4zLTE1LjVjMTguNS05LjggOS43LTExLjkgMTM1LjYtMTM4LjkgMS00LjggMS03LjMgMy42LTggMy0uNyA2LjYtMSA2LjMtNC42bC0uNC00LjZjLS4yLTEuOSAxLjMtMy42IDMuMi0zLjYgNC41LS4xIDEzLjIgMS4yIDI1LjYgMTAgMTIuMyA4LjkgMTYuNCAxNi44IDE3LjcgMjEuMS42IDEuOC0uNiAzLjctMi40IDQuMmwtNC41IDEuMWMtMy40LjktMi41IDQuNC0yLjMgNy40LjEgMi44LTIuMyAzLjYtNi41IDYuMXpNMjMwLjEgMzYuNGMzLjQuOSAyLjUgNC40IDIuMyA3LjQtLjIgMi43IDIuMSAzLjUgNi40IDYgNy45IDE1LjkgMTUuMyAzMC41IDIyLjIgNDQgLjcgMS4zIDIuMyAxLjUgMy4zLjUgMTEuMi0xMiAyNC42LTI2LjIgNDAuNS00Mi42IDEuMy0xLjQgMS40LTMuNS4xLTQuOS04LTguMi0xNi41LTE2LjktMjUuNi0yNi4xLTEtNC43LTEtNy4zLTMuNi04LTMtLjgtNi42LTEtNi4zLTQuNi4zLTMuMyAxLjQtOC4xLTIuOC04LjItNC41LS4xLTEzLjIgMS4xLTI1LjYgMTAtMTIuMyA4LjktMTYuNCAxNi44LTE3LjcgMjEuMS0xLjQgNC4yIDMuNiA0LjYgNi44IDUuNHpNNjIwIDQwNi43TDQ3MS4yIDE5OC44Yy0xMy4yLTE4LjUtMjYuNi0yMy40LTU2LjQtMzkuMS0xMS4yLTUuOS0xNC4yLTEwLjktMzAuNS0yOC45LTEtMS4xLTIuOS0uOS0zLjYuNS00Ni4zIDg4LjgtNDcuMSA4Mi44LTQ5IDk0LjgtMS43IDEwLjctMS4zIDIwIC4zIDI5LjggMS45IDEyIDYuNiAyMy41IDEzLjcgMzMuNGwxNDguOSAyMDcuOWM3LjYgMTAuNiAyMC4yIDE2LjIgMzMuMSAxNC43IDQwLjMtNC45IDc4LTMyIDk1LjctNjguNiA1LjQtMTEuOSA0LjMtMjUuOS0zLjQtMzYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMy4yIDMwM2MtNS4yIDMuNi0zMi42IDEzLjEtMzIuNi0xOVYxODBIMzcuOXYxMDIuNmMwIDc0LjkgODAuMiA1MS4xIDk3LjkgMzlWMTgwaC0zMi42ek00IDc0LjgydjIyMC45YzAgMTAzLjcgNzQuOSAxMzUuMiAxODcuNyAxODQuMSAxMTIuNC00OC45IDE4Ny43LTgwLjIgMTg3LjctMTg0LjFWNzQuODJjLTExNi4zLTYxLjYtMjgxLjgtNDkuNi0zNzUuNCAwem0zNTguMSAyMjAuOWMwIDg2LjYtNTMuMiAxMTMuNi0xNzAuNCAxNjUuMy0xMTcuNS01MS44LTE3MC41LTc4LjctMTcwLjUtMTY1LjN2LTEyNi40YzEwMi4zLTkzLjggMjMxLjYtMTAwIDM0MC45LTg5Ljh6bS0yMDkuNi0xMDcuNHYyMTIuOGgzMi43di02OC43YzI0LjQgNy4zIDcxLjctMi42IDcxLjctNzguNSAwLTk3LjQtODAuNy04MC45Mi0xMDQuNC02NS42em0zMi43IDExNy4zdi0xMDAuM2M4LjQtNC4yIDM4LjQtMTIuNyAzOC40IDQ5LjMgMCA2Ny45LTM2LjQgNTEuOC0zOC40IDUxem03OS4xLTg2LjRjLjEgNDcuMyA1MS42IDQyLjUgNTIuMiA3MC40LjYgMjMuNS0zMC40IDIzLTUwLjggNC45djMwLjFjMzYuMiAyMS41IDgxLjkgOC4xIDgzLjItMzMuNSAxLjctNTEuNS01NC4xLTQ2LjYtNTMuNC03My4yLjYtMjAuMyAzMC42LTIwLjUgNDguNS0yLjJ2LTI4LjRjLTI4LjUtMjItNzkuOS05LjItNzkuNyAzMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQxLjUgMjU2YzAgMy4xLTEuNyA2LjEtNC41IDcuNUw1NDcuOSAzMTdjLTEuNC44LTIuOCAxLjQtNC41IDEuNC0xLjQgMC0zLjEtLjMtNC41LTEuMS0yLjgtMS43LTQuNS00LjUtNC41LTcuOHYtMzUuNkgyOTUuN2MyNS4zIDM5LjYgNDAuNSAxMDYuOSA2OS42IDEwNi45SDM5MlYzNTRjMC01IDMuOS04LjkgOC45LTguOUg0OTBjNSAwIDguOSAzLjkgOC45IDguOXY4OS4xYzAgNS0zLjkgOC45LTguOSA4LjloLTg5LjFjLTUgMC04LjktMy45LTguOS04Ljl2LTI2LjdoLTI2LjdjLTc1LjQgMC04MS4xLTE0Mi41LTEyNC43LTE0Mi41SDE0MC4zYy04LjEgMzAuNi0zNS45IDUzLjUtNjkgNTMuNUMzMiAzMjcuMyAwIDI5NS4zIDAgMjU2czMyLTcxLjMgNzEuMy03MS4zYzMzLjEgMCA2MSAyMi44IDY5IDUzLjUgMzkuMSAwIDQzLjkgOS41IDc0LjYtNjAuNEMyNTUgODguNyAyNzMgOTUuNyAzMjMuOCA5NS43YzcuNS0yMC45IDI3LTM1LjYgNTAuNC0zNS42IDI5LjUgMCA1My41IDIzLjkgNTMuNSA1My41cy0yMy45IDUzLjUtNTMuNSA1My41Yy0yMy40IDAtNDIuOS0xNC44LTUwLjQtMzUuNkgyOTRjLTI5LjEgMC00NC4zIDY3LjQtNjkuNiAxMDYuOWgzMTAuMXYtMzUuNmMwLTMuMyAxLjctNi4xIDQuNS03LjggMi44LTEuNyA2LjQtMS40IDguOS4zbDg5LjEgNTMuNWMyLjggMS4xIDQuNSA0LjEgNC41IDcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjAuMyAyNDEuN2MyNS44LTQxLjMgMTUuMi00OC44LTExLjctNDguOGgtMjdjLS4xIDAtMS41LTEuNC0xMC45IDgtMTEuMiA1LjYtMzcuOSA2LjMtMzcuOSA4LjcgMCA0LjUgNzAuMy0zLjEgODguMSAwIDkuNSAxLjUtMS41IDIwLjQtNC40IDMyLS41IDQuNSAyLjQgMi4zIDMuOC4xem0tMTEyLjEgMjIuNmM2NC0yMS4zIDk3LjMtMjMuOSAxMDItMjYuMiA0LjQtMi45LTQuNC02LjYtMjYuMi01LjgtNTEuNyAyLjItMTM3LjYgMzcuMS0xNzIuNiA1My45bC0zMC43LTkzLjNoMTk2LjZjLTIuNy0yOC4yLTE1Mi45LTIyLjYtMzM3LjktMjIuNkwyNyA0MTUuOGMxOTYuNC05Ny4zIDI1OC45LTEzMC4zIDMyMS4yLTE1MS41ek05NC43IDk2YzI1My4zIDUzLjcgMzMwIDY1LjcgMzMyLjEgODUuMiAzNi40IDAgNDUuOSAwIDUyLjQgNi42IDIxLjEgMTkuNy0xNC42IDY3LjctMTQuNiA2Ny43LTQuNCAyLjktNDA2LjQgMTYwLjItNDA2LjQgMTYwLjJoNDIzLjFMNTQ5IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc3N1bm5haCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTYuOCAyODUuMWw1LjcgMTQuNGgtOC4yYy0xLjMtMy4yLTMuMS03LjctMy44LTkuNS0yLjUtNi4zLTEuMS04LjQgMC0xMCAxLjktMi43IDMuMi00LjQgMy42LTUuMiAwIDIuMi44IDUuNyAyLjcgMTAuM3ptMjk3LjMgMTguOGMtMi4xIDEzLjgtNS43IDI3LjEtMTAuNSAzOS43bDQzIDIzLjQtNDQuOC0xOC44Yy01LjMgMTMuMi0xMiAyNS42LTE5LjkgMzcuMmwzNC4yIDMwLjItMzYuOC0yNi40Yy04LjQgMTEuOC0xOCAyMi42LTI4LjcgMzIuM2wyNC45IDM0LjctMjguMS0zMS44Yy0xMSA5LjYtMjMuMSAxOC0zNi4xIDI1LjFsMTUuNyAzNy4yLTE5LjMtMzUuM2MtMTMuMSA2LjgtMjcgMTIuMS00MS42IDE1LjlsNi43IDM4LjQtMTAuNS0zNy40Yy0xNC4zIDMuNC0yOS4yIDUuMy00NC41IDUuNEwyNTYgNTEybC0xLjktMzguNGMtMTUuMy0uMS0zMC4yLTItNDQuNS01LjNMMTk5IDUwNS42bDYuNy0zOC4yYy0xNC42LTMuNy0yOC42LTkuMS00MS43LTE1LjhsLTE5LjIgMzUuMSAxNS42LTM3Yy0xMy03LTI1LjItMTUuNC0zNi4yLTI1LjFsLTI3LjkgMzEuNiAyNC43LTM0LjRjLTEwLjctOS43LTIwLjQtMjAuNS0yOC44LTMyLjNsLTM2LjUgMjYuMiAzMy45LTI5LjljLTcuOS0xMS42LTE0LjYtMjQuMS0yMC0zNy4zbC00NC40IDE4LjdMNjcuOCAzNDRjLTQuOC0xMi43LTguNC0yNi4xLTEwLjUtMzkuOWwtNTEgOSA1MC4zLTE0LjJjLTEuMS04LjUtMS43LTE3LjEtMS43LTI1LjkgMC00LjcuMi05LjQuNS0xNC4xTDAgMjU2bDU2LTIuOGMxLjMtMTMuMSAzLjgtMjUuOCA3LjUtMzguMUw2LjQgMTk5bDU4LjkgMTAuNGM0LTEyIDkuMS0yMy41IDE1LjItMzQuNGwtNTUuMS0zMCA1OC4zIDI0LjZDOTAgMTU5IDk3LjIgMTQ5LjIgMTA1LjMgMTQwTDU1LjggOTYuNGw1My45IDM4LjdjOC4xLTguNiAxNy0xNi41IDI2LjYtMjMuNmwtNDAtNTUuNiA0NS42IDUxLjZjOS41LTYuNiAxOS43LTEyLjMgMzAuMy0xNy4ybC0yNy4zLTY0LjkgMzMuOCA2Mi4xYzEwLjUtNC40IDIxLjQtNy45IDMyLjctMTAuNEwxOTkgNi40bDE5LjUgNjkuMmMxMS0yLjEgMjIuMy0zLjIgMzMuOC0zLjRMMjU2IDBsMy42IDcyLjJjMTEuNS4yIDIyLjggMS40IDMzLjggMy41TDMxMyA2LjRsLTEyLjQgNzAuN2MxMS4zIDIuNiAyMi4yIDYuMSAzMi42IDEwLjVsMzMuOS02Mi4yLTI3LjQgNjUuMWMxMC42IDQuOSAyMC43IDEwLjcgMzAuMiAxNy4ybDQ1LjgtNTEuOC00MC4xIDU1LjljOS41IDcuMSAxOC40IDE1IDI2LjUgMjMuNmw1NC4yLTM4LjktNDkuNyA0My45YzggOS4xIDE1LjIgMTguOSAyMS41IDI5LjRsNTguNy0yNC43LTU1LjUgMzAuMmM2LjEgMTAuOSAxMS4xIDIyLjMgMTUuMSAzNC4zbDU5LjMtMTAuNC01Ny41IDE2LjJjMy43IDEyLjIgNi4yIDI0LjkgNy41IDM3LjlMNTEyIDI1NmwtNTYgMi44Yy4zIDQuNi41IDkuMy41IDE0LjEgMCA4LjctLjYgMTcuMy0xLjYgMjUuOGw1MC43IDE0LjMtNTEuNS05LjF6bS0yMS44LTMxYzAtOTcuNS03OS0xNzYuNS0xNzYuNS0xNzYuNXMtMTc2LjUgNzktMTc2LjUgMTc2LjUgNzkgMTc2LjUgMTc2LjUgMTc2LjUgMTc2LjUtNzkgMTc2LjUtMTc2LjV6bS0yNCAwYzAgODQuMy02OC4zIDE1Mi42LTE1Mi42IDE1Mi42cy0xNTIuNi02OC4zLTE1Mi42LTE1Mi42IDY4LjMtMTUyLjYgMTUyLjYtMTUyLjYgMTUyLjYgNjguMyAxNTIuNiAxNTIuNnpNMTk1IDI0MWMwIDIuMSAxLjMgMy44IDMuNiA1LjEgMy4zIDEuOSA2LjIgNC42IDguMiA4LjIgMi44LTUuNyA0LjMtOS41IDQuMy0xMS4yIDAtMi4yLTEuMS00LjQtMy4yLTctMi4xLTIuNS0zLjItNS4yLTMuMy03LjctNi41IDYuOC05LjYgMTAuOS05LjYgMTIuNnptLTQwLjctMTljMCAyLjEgMS4zIDMuOCAzLjYgNS4xIDMuNSAxLjkgNi4yIDQuNiA4LjIgOC4yIDIuOC01LjcgNC4zLTkuNSA0LjMtMTEuMiAwLTIuMi0xLjEtNC40LTMuMi03LTIuMS0yLjUtMy4yLTUuMi0zLjMtNy43LTYuNSA2LjgtOS42IDEwLjktOS42IDEyLjZ6bS0xOSAwYzAgMi4xIDEuMyAzLjggMy42IDUuMSAzLjMgMS45IDYuMiA0LjYgOC4yIDguMiAyLjgtNS43IDQuMy05LjUgNC4zLTExLjIgMC0yLjItMS4xLTQuNC0zLjItNy0yLjEtMi41LTMuMi01LjItMy4zLTcuNy02LjQgNi44LTkuNiAxMC45LTkuNiAxMi42em0yMDQuOSA4Ny45Yy04LjQtMy04LjctNi44LTguNy0xNS42VjE4MmMtOC4yIDEyLjUtMTQuMiAxOC42LTE4IDE4LjYgNi4zIDE0LjQgOS41IDIzLjkgOS41IDI4LjN2NjQuM2MwIDIuMi0yLjIgNi41LTQuNyA2LjVoLTE4Yy0yLjgtNy41LTEwLjItMjYuOS0xNS4zLTQwLjMtMiAyLjUtNy4yIDkuMi0xMC43IDEzLjcgMi40IDEuNiA0LjEgMy42IDUuMiA2LjMgMi42IDYuNyA2LjQgMTYuNSA3LjkgMjAuMmgtOS4yYy0zLjktMTAuNC05LjYtMjUuNC0xMS44LTMxLjEtMiAyLjUtNy4yIDkuMi0xMC43IDEzLjcgMi40IDEuNiA0LjEgMy42IDUuMiA2LjMuOCAyIDIuOCA3LjMgNC4zIDEwLjlIMjU2Yy0xLjUtNC4xLTUuNi0xNC42LTguNC0yMi0yIDIuNS03LjIgOS4yLTEwLjcgMTMuNyAyLjUgMS42IDQuMyAzLjYgNS4yIDYuMy4yLjYuNSAxLjQuNiAxLjdIMjI1Yy00LjYtMTMuOS0xMS40LTI3LjctMTEuNC0zNC4xIDAtMi4yLjMtNS4xIDEuMS04LjItOC44IDEwLjgtMTQgMTUuOS0xNCAyNSAwIDcuNSAxMC40IDI4LjMgMTAuNCAzMy4zIDAgMS43LS41IDMuMy0xLjQgNC45LTkuNi0xMi43LTE1LjUtMjAuNy0xOC44LTIwLjdoLTEybC0xMS4yLTI4Yy0zLjgtOS42LTUuNy0xNi01LjctMTguOCAwLTMuOC41LTcuNyAxLjctMTIuMi0xIDEuMy0zLjcgNC43LTUuNSA3LjEtLjgtMi4xLTMuMS03LjctNC42LTExLjUtMi4xIDIuNS03LjUgOS4xLTExLjIgMTMuNi45IDIuMyAzLjMgOC4xIDQuOSAxMi4yLTIuNSAzLjMtOS4xIDExLjgtMTMuNiAxNy43LTQgNS4zLTUuOCAxMy4zLTIuNyAyMS44IDIuNSA2LjcgMiA3LjktMS43IDE0LjFIMTkxYzUuNSAwIDE0LjMgMTQgMTUuNSAyMiAxMy4yLTE2IDE1LjQtMTkuNiAxNi44LTIxLjZoMTA3YzMuOSAwIDcuMi0xLjkgOS45LTUuOHptMjAuMS0yNi42VjE4MS43Yy05IDEyLjUtMTUuOSAxOC42LTIwLjcgMTguNiA3LjEgMTQuNCAxMC43IDIzLjkgMTAuNyAyOC4zdjY2LjNjMCAxNy41IDguNiAyMC40IDI0IDIwLjQgOC4xIDAgMTIuNS0uOCAxMy43LTIuNy00LjMtMS42LTcuNi0yLjUtOS45LTMuMy04LjEtMy4yLTE3LjgtNy40LTE3LjgtMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZhYWRpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQuNSAxNDAuN2MxLjUtMTcuNiA0LjktNTIuNyA0OS44LTUyLjdoOTguNmMyMC43IDAgMzIuMS03LjggMzIuMS0yMS42VjU0LjFjMC0xMi4yIDkuMy0yMi4xIDIxLjUtMjIuMVM0NDggNDEuOSA0NDggNTQuMXYzNi41YzAgNDIuOS0yMS41IDYyLTY2LjggNjJIMjgwLjdjLTMwLjEgMC0zMyAxNC43LTMzIDI3LjEgMCAxLjMtLjEgMi41LS4yIDMuNy0uNyAxMi4zLTEwLjkgMjIuMi0yMy40IDIyLjJzLTIyLjctOS44LTIzLjQtMjIuMmMtLjEtMS4yLS4yLTIuNC0uMi0zLjcgMC0xMi4zLTMtMjcuMS0zMy0yNy4xSDY2LjhjLTQ1LjMgMC02Ni44LTE5LjEtNjYuOC02MlY1NC4xQzAgNDEuOSA5LjQgMzIgMjEuNiAzMnMyMS41IDkuOSAyMS41IDIyLjF2MTIuM0M0My4xIDgwLjIgNTQuNSA4OCA3NS4yIDg4aDk4LjZjNDQuOCAwIDQ4LjMgMzUuMSA0OS44IDUyLjdoLjl6TTIyNCA0NTZjMTEuNSAwIDIxLjQtNyAyNS43LTE2LjMgMS4xLTEuOCA5Ny4xLTE2OS42IDk4LjItMTcxLjQgMTEuOS0xOS42LTMuMi00NC4zLTI3LjItNDQuMy0xMy45IDAtMjMuMyA2LjQtMjkuOCAyMC4zTDIyNCAzNjJsLTY2LjktMTE3LjdjLTYuNC0xMy45LTE1LjktMjAuMy0yOS44LTIwLjMtMjQgMC0zOS4xIDI0LjYtMjcuMiA0NC4zIDEuMSAxLjkgOTcuMSAxNjkuNiA5OC4yIDE3MS40IDQuMyA5LjMgMTQuMiAxNi4zIDI1LjcgMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhY29pbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJoLTY0bC04MC43IDE5MmgtOTQuNUw2NCAzMkgwbDQ4IDExMkgwdjQ4aDY4LjVsMTMuOCAzMkgwdjQ4aDEwMi44TDE5MiA0ODBsODkuMi0yMDhIMzg0di00OGgtODIuM2wxMy44LTMySDM4NHYtNDhoLTQ4bDQ4LTExMnpNMTkyIDMzNmwtMjctNjRoNTRsLTI3IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFkZW9TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjgwLjcgMzgxLjJjLTQyLjQgNDYuMi0xMjAgNDYuNi0xNjIuNCAwLTY4LTczLjYtMTkuOC0xOTYuMSA4MS4yLTE5Ni4xIDEzLjMgMCAyNi42IDIuMSAzOS4xIDYuNy00LjMgOC40LTcuMyAxNy42LTguNCAyNy4xLTkuNy00LjEtMjAuMi02LTMwLjctNi00OC44IDAtODQuNiA0MS43LTg0LjYgODguOSAwIDQzIDI4LjUgNzguNyA2OS41IDg1LjkgNjEuNS0yNCA3Mi45LTExNy42IDcyLjktMTc1IDAtNy4zIDAtMTQuOC0uNi0yMi4xLTExLjItMzIuOS0yNi42LTY0LjYtNDQuMi05NC41IDI3LjEgMTguMyA0MS45IDYyLjUgNDQuMiA5NC4xdi40YzcuNyAyMi41IDExLjggNDYuMiAxMS44IDcwIDAgNTQuMS0yMS45IDk5LTY4LjMgMTI4LjJsLTIuNC4yYzUwIDEgODYuMi0zOC42IDg2LjItODcuMiAwLTEyLjItMi4xLTI0LjMtNi45LTM1LjcgOS41LTEuOSAxOC41LTUuNiAyNi40LTEwLjUgMTUuMyAzNi42IDEyLjYgODcuMy0yMi44IDEyNS42ek0zMDkgMjMzLjdjLTEzLjMgMC0yNS4xLTcuMS0zNC40LTE2LjEgMjEuOS0xMiA0OS42LTMwLjcgNjIuMy01MyAxLjUtMyA0LjEtOC42IDQuNS0xMi0xMi41IDI3LjktNDQuMiA0OS44LTczLjkgNTYuNy00LjctNy4zLTcuNS0xNS41LTcuNS0yNC4zIDAtMTAuMyA1LjItMjQuMSAxMi45LTMxLjYgMjEuNi0yMC41IDUzLTguNSA3Mi40LTUwIDMyLjUgNDYuMiAxMy4xIDEzMC4zLTM2LjMgMTMwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzYuMiAxNTAuNXYuN0MyNTguMyA5OC42IDIzMy42IDQ3LjggMjA1LjQgMGM0My4zIDI5LjIgNjcgMTAwIDcwLjggMTUwLjV6bTMyLjcgMTIxLjdjNy42IDE4LjIgMTEgMzcuNSAxMSA1NyAwIDc3LjctNTcuOCAxNDEtMTM3LjggMTM5LjRsMy44LS4zYzc0LjItNDYuNyAxMDkuMy0xMTguNiAxMDkuMy0yMDUuMSAwLTM4LjEtNi41LTc1LjktMTguOS0xMTIgMSAxMS43IDEgMjMuNyAxIDM1LjQgMCA5MS44LTE4LjEgMjQxLjYtMTE2LjYgMjgwQzk1IDQ1NS4yIDQ5LjQgMzk4IDQ5LjQgMzI5LjJjMC03NS42IDU3LjQtMTQyLjMgMTM1LjQtMTQyLjMgMTYuOCAwIDMzLjcgMy4xIDQ5LjEgOS42IDEuNy0xNS4xIDYuNS0yOS45IDEzLjQtNDMuMy0xOS45LTcuMi00MS4yLTEwLjctNjIuNS0xMC43LTE2MS41IDAtMjM4LjcgMTk1LjktMTI5LjkgMzEzLjcgNjcuOSA3NC42IDE5MiA3My45IDI1OS44IDAgNTYuNi02MS4zIDYwLjktMTQyLjQgMzYuNC0yMDEtMTIuNyA4LTI3LjEgMTMuOS00Mi4yIDE3ek00MTguMSAxMS43Yy0zMSA2Ni41LTgxLjMgNDcuMi0xMTUuOCA4MC4xLTEyLjQgMTItMjAuNiAzNC0yMC42IDUwLjUgMCAxNC4xIDQuNSAyNy4xIDEyIDM4LjggNDcuNC0xMSA5OC4zLTQ2IDExOC4yLTkwLjctLjcgNS41LTQuOCAxNC40LTcuMiAxOS4yLTIwLjMgMzUuNy02NC42IDY1LjYtOTkuNyA4NC45IDE0LjggMTQuNCAzMy43IDI1LjggNTUgMjUuOCA3OSAwIDExMC4xLTEzNC42IDU4LjEtMjA4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NCA0OS45QzQzMS4zIDM4LjIgMzc5LjkuOSAyNjUuMy40YzAgMC0xMzUuMS04LjEtMjAwLjkgNTIuM0MyNy44IDg5LjMgMTQuOSAxNDMgMTMuNSAyMDkuNWMtMS40IDY2LjUtMy4xIDE5MS4xIDExNyAyMjQuOWguMWwtLjEgNTEuNnMtLjggMjAuOSAxMyAyNS4xYzE2LjYgNS4yIDI2LjQtMTAuNyA0Mi4zLTI3LjggOC43LTkuNCAyMC43LTIzLjIgMjkuOC0zMy43IDgyLjIgNi45IDE0NS4zLTguOSAxNTIuNS0xMS4yIDE2LjYtNS40IDExMC41LTE3LjQgMTI1LjctMTQyIDE1LjgtMTI4LjYtNy42LTIwOS44LTQ5LjgtMjQ2LjV6TTQ1Ny45IDI4N2MtMTIuOSAxMDQtODkgMTEwLjYtMTAzIDExNS4xLTYgMS45LTYxLjUgMTUuNy0xMzEuMiAxMS4yIDAgMC01MiA2Mi43LTY4LjIgNzktNS4zIDUuMy0xMS4xIDQuOC0xMS01LjcgMC02LjkuNC04NS43LjQtODUuNy0uMSAwLS4xIDAgMCAwLTEwMS44LTI4LjItOTUuOC0xMzQuMy05NC43LTE4OS44IDEuMS01NS41IDExLjYtMTAxIDQyLjYtMTMxLjYgNTUuNy01MC41IDE3MC40LTQzIDE3MC40LTQzIDk2LjkuNCAxNDMuMyAyOS42IDE1NC4xIDM5LjQgMzUuNyAzMC42IDUzLjkgMTAzLjggNDAuNiAyMTEuMXptLTEzOS04MC44Yy40IDguNi0xMi41IDkuMi0xMi45LjYtMS4xLTIyLTExLjQtMzIuNy0zMi42LTMzLjktOC42LS41LTcuOC0xMy40LjctMTIuOSAyNy45IDEuNSA0My40IDE3LjUgNDQuOCA0Ni4yem0yMC4zIDExLjNjMS00Mi40LTI1LjUtNzUuNi03NS44LTc5LjMtOC41LS42LTcuNi0xMy41LjktMTIuOSA1OCA0LjIgODguOSA0NC4xIDg3LjggOTIuNS0uMSA4LjYtMTMuMSA4LjItMTIuOS0uM3ptNDcgMTMuNGMuMSA4LjYtMTIuOSA4LjctMTIuOS4xLS42LTgxLjUtNTQuOS0xMjUuOS0xMjAuOC0xMjYuNC04LjUtLjEtOC41LTEyLjkgMC0xMi45IDczLjcuNSAxMzMgNTEuNCAxMzMuNyAxMzkuMnpNMzc0LjkgMzI5di4yYy0xMC44IDE5LTMxIDQwLTUxLjggMzMuM2wtLjItLjNjLTIxLjEtNS45LTcwLjgtMzEuNS0xMDIuMi01Ni41LTE2LjItMTIuOC0zMS0yNy45LTQyLjQtNDIuNC0xMC4zLTEyLjktMjAuNy0yOC4yLTMwLjgtNDYuNi0yMS4zLTM4LjUtMjYtNTUuNy0yNi01NS43LTYuNy0yMC44IDE0LjItNDEgMzMuMy01MS44aC4yYzkuMi00LjggMTgtMy4yIDIzLjkgMy45IDAgMCAxMi40IDE0LjggMTcuNyAyMi4xIDUgNi44IDExLjcgMTcuNyAxNS4yIDIzLjggNi4xIDEwLjkgMi4zIDIyLTMuNyAyNi42bC0xMiA5LjZjLTYuMSA0LjktNS4zIDE0LTUuMyAxNHMxNy44IDY3LjMgODQuMyA4NC4zYzAgMCA5LjEuOCAxNC01LjNsOS42LTEyYzQuNi02IDE1LjctOS44IDI2LjYtMy43IDE0LjcgOC4zIDMzLjQgMjEuMiA0NS44IDMyLjkgNyA1LjcgOC42IDE0LjQgMy44IDIzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbWVvU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xNi4yIDE0OS42Yy0xLjQgMzEuMS0yMy4yIDczLjgtNjUuMyAxMjcuOS00My41IDU2LjUtODAuMyA4NC44LTExMC40IDg0LjgtMTguNyAwLTM0LjQtMTcuMi00Ny4zLTUxLjYtMjUuMi05Mi4zLTM1LjktMTQ2LjQtNTYuNy0xNDYuNC0yLjQgMC0xMC44IDUtMjUuMSAxNS4xTDY0IDE5MmMzNi45LTMyLjQgNzIuMS02OC40IDk0LjEtNzAuNCAyNC45LTIuNCA0MC4yIDE0LjYgNDYgNTEuMSAyMC41IDEyOS42IDI5LjYgMTQ5LjIgNjYuOCA5MC41IDEzLjQtMjEuMiAyMC42LTM3LjIgMjEuNS00OC4zIDMuNC0zMi44LTI1LjYtMzAuNi00NS4yLTIyLjIgMTUuNy01MS41IDQ1LjgtNzYuNSA5MC4xLTc1LjEgMzIuOSAxIDQ4LjQgMjIuNCA0Ni41IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaW1lb1YgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ3LjggMTUzLjZjLTIgNDMuNi0zMi40IDEwMy4zLTkxLjQgMTc5LjEtNjAuOSA3OS4yLTExMi40IDExOC44LTE1NC42IDExOC44LTI2LjEgMC00OC4yLTI0LjEtNjYuMy03Mi4zQzEwMC4zIDI1MCA4NS4zIDE3NC4zIDU2LjIgMTc0LjNjLTMuNCAwLTE1LjEgNy4xLTM1LjIgMjEuMUwwIDE2OC4yYzUxLjYtNDUuMyAxMDAuOS05NS43IDEzMS44LTk4LjUgMzQuOS0zLjQgNTYuMyAyMC41IDY0LjQgNzEuNSAyOC43IDE4MS41IDQxLjQgMjA4LjkgOTMuNiAxMjYuNyAxOC43LTI5LjYgMjguOC01Mi4xIDMwLjItNjcuNiA0LjgtNDUuOS0zNS44LTQyLjgtNjMuMy0zMSAyMi03Mi4xIDY0LjEtMTA3LjEgMTI2LjItMTA1LjEgNDUuOCAxLjIgNjcuNSAzMS4xIDY0LjkgODkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmltZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAzLjIgMzJINDQuOEMyMC4xIDMyIDAgNTIuMSAwIDc2Ljh2MzU4LjRDMCA0NTkuOSAyMC4xIDQ4MCA0NC44IDQ4MGgzNTguNGMyNC43IDAgNDQuOC0yMC4xIDQ0LjgtNDQuOFY3Ni44YzAtMjQuNy0yMC4xLTQ0LjgtNDQuOC00NC44ek0zNzcgMTgwLjhjLTEuNCAzMS41LTIzLjQgNzQuNy02NiAxMjkuNC00NCA1Ny4yLTgxLjMgODUuOC0xMTEuNyA4NS44LTE4LjkgMC0zNC44LTE3LjQtNDcuOS01Mi4zLTI1LjUtOTMuMy0zNi40LTE0OC01Ny40LTE0OC0yLjQgMC0xMC45IDUuMS0yNS40IDE1LjJsLTE1LjItMTkuNmMzNy4zLTMyLjggNzIuOS02OS4yIDk1LjItNzEuMiAyNS4yLTIuNCA0MC43IDE0LjggNDYuNSA1MS43IDIwLjcgMTMxLjIgMjkuOSAxNTEgNjcuNiA5MS42IDEzLjUtMjEuNCAyMC44LTM3LjcgMjEuOC00OC45IDMuNS0zMy4yLTI1LjktMzAuOS00NS44LTIyLjQgMTUuOS01Mi4xIDQ2LjMtNzcuNCA5MS4yLTc2IDMzLjMuOSA0OSAyMi41IDQ3LjEgNjQuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMjU0Ljd2NTIuMWMtMTguNCA0LjItMzYuOSA2LjEtNTIuMSA2LjEtMzYuOSA3Ny40LTEwMyAxNDMuOC0xMjUuMSAxNTYuMi0xNCA3LjktMjcuMSA4LjQtNDIuNy0uOEMxMzcgNDUyIDM0LjIgMzY3LjcgMCAxMDIuN2g3NC41QzkzLjIgMjYxLjggMTM5IDM0My40IDE4OS4zIDQwNC41YzI3LjktMjcuOSA1NC44LTY1LjEgNzUuNi0xMDYuOS00OS44LTI1LjMtODAuMS04MC45LTgwLjEtMTQ1LjYgMC02NS42IDM3LjctMTE1LjEgMTAyLjItMTE1LjEgMTE0LjkgMCAxMDYuMiAxMjcuOSA4MS42IDE4MS41IDAgMC00Ni40IDkuMi02My41LTIwLjUgMy40LTExLjMgOC4yLTMwLjggOC4yLTQ4LjUgMC0zMS4zLTExLjMtNDYuNi0yOC40LTQ2LjYtMTguMiAwLTMwLjggMTcuMS0zMC44IDUwIC4xIDc5LjIgNTkuNCAxMTguNyAxMjkuOSAxMDEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ1IDExNy43YzMuNy0xMi41IDAtMjEuNy0xNy44LTIxLjdoLTU4LjljLTE1IDAtMjEuOSA3LjktMjUuNiAxNi43IDAgMC0zMCA3My4xLTcyLjQgMTIwLjUtMTMuNyAxMy43LTIwIDE4LjEtMjcuNSAxOC4xLTMuNyAwLTkuNC00LjQtOS40LTE2LjlWMTE3LjdjMC0xNS00LjItMjEuNy0xNi42LTIxLjdoLTkyLjZjLTkuNCAwLTE1IDctMTUgMTMuNSAwIDE0LjIgMjEuMiAxNy41IDIzLjQgNTcuNXY4Ni44YzAgMTktMy40IDIyLjUtMTAuOSAyMi41LTIwIDAtNjguNi03My40LTk3LjQtMTU3LjQtNS44LTE2LjMtMTEuNS0yMi45LTI2LjYtMjIuOUgzOC44Yy0xNi44IDAtMjAuMiA3LjktMjAuMiAxNi43IDAgMTUuNiAyMCA5My4xIDkzLjEgMTk1LjVDMTYwLjQgMzc4LjEgMjI5IDQxNiAyOTEuNCA0MTZjMzcuNSAwIDQyLjEtOC40IDQyLjEtMjIuOSAwLTY2LjgtMy40LTczLjEgMTUuNC03My4xIDguNyAwIDIzLjcgNC40IDU4LjcgMzguMSA0MCA0MCA0Ni42IDU3LjkgNjkgNTcuOWg1OC45YzE2LjggMCAyNS4zLTguNCAyMC40LTI1LTExLjItMzQuOS04Ni45LTEwNi43LTkwLjMtMTExLjUtOC43LTExLjItNi4yLTE2LjIgMC0yNi4yLjEtLjEgNzItMTAxLjMgNzkuNC0xMzUuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm52IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNC45IDM1MmMtMzQuMSAwLTQ2LjQtMzAuNC00Ni40LTMwLjRMMi42IDIxMC4xUy03LjggMTkyIDEzIDE5MmgzMi44YzEwLjQgMCAxMy4yIDguNyAxOC44IDE4LjFsMzYuNyA3NC41czUuMiAxMy4xIDIxLjEgMTMuMSAyMS4xLTEzLjEgMjEuMS0xMy4xbDM2LjctNzQuNWM1LjYtOS41IDguNC0xOC4xIDE4LjgtMTguMWgzMi44YzIwLjggMCAxMC40IDE4LjEgMTAuNCAxOC4xbC01NS44IDExMS41UzE3NC4yIDM1MiAxNDAgMzUyaC0zNS4xem0zOTUgMGMtMzQuMSAwLTQ2LjQtMzAuNC00Ni40LTMwLjRsLTU1LjktMTExLjVTMzg3LjIgMTkyIDQwOCAxOTJoMzIuOGMxMC40IDAgMTMuMiA4LjcgMTguOCAxOC4xbDM2LjcgNzQuNXM1LjIgMTMuMSAyMS4xIDEzLjEgMjEuMS0xMy4xIDIxLjEtMTMuMWwzNi44LTc0LjVjNS42LTkuNSA4LjQtMTguMSAxOC44LTE4LjFINjI3YzIwLjggMCAxMC40IDE4LjEgMTAuNCAxOC4xbC01NS45IDExMS41UzU2OS4zIDM1MiA1MzUuMSAzNTJoLTM1LjJ6TTMzNy42IDE5MmMzNC4xIDAgNDYuNCAzMC40IDQ2LjQgMzAuNGw1NS45IDExMS41czEwLjQgMTguMS0xMC40IDE4LjFoLTMyLjhjLTEwLjQgMC0xMy4yLTguNy0xOC44LTE4LjFsLTM2LjctNzQuNXMtNS4yLTEzLjEtMjEuMS0xMy4xYy0xNS45IDAtMjEuMSAxMy4xLTIxLjEgMTMuMWwtMzYuNyA3NC41Yy01LjYgOS40LTguNCAxOC4xLTE4LjggMTguMWgtMzIuOWMtMjAuOCAwLTEwLjQtMTguMS0xMC40LTE4LjFsNTUuOS0xMTEuNXMxMi4yLTMwLjQgNDYuNC0zMC40aDM1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZ1ZWpzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Ni45IDY0LjNIMjgwbC01NiA4OC42LTQ4LTg4LjZIMEwyMjQgNDQ4IDQ0OCA2NC4zaC05MS4xem0tMzAxLjIgMzJoNTMuOEwyMjQgMjk0LjUgMzM4LjQgOTYuM2g1My44TDIyNCAzODQuNSA1NS43IDk2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhdGNobWFuTW9uaXRvcmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYsMTZDMTIzLjQ1MiwxNiwxNiwxMjMuNDUyLDE2LDI1NlMxMjMuNDUyLDQ5NiwyNTYsNDk2LDQ5NiwzODguNTQ4LDQ5NiwyNTYsMzg4LjU0OCwxNiwyNTYsMTZaTTEyMS42OSw0MjkuMTIyQzcwLjA1NiwzODguOTcyLDM2Ljc0MSwzMjYuMzIyLDM2Ljc0MSwyNTZhMjE4LjUxOSwyMTguNTE5LDAsMCwxLDkuNTg3LTY0LjEyMmwxMDIuOS0xNy44OTUtLjEyMSwxMC45NjctMTMuOTQzLDIuMDEzcy0uMTQ0LDEyLjUtLjE0NCwxOS41NDlhMTIuNzc4LDEyLjc3OCwwLDAsMCw0Ljg4NywxMC4zNDlsOS40NjgsNy40Wm0xMDUuNjkyLTI4My4yNyw4LjQ4LTcuNjE4czYuOTM0LTUuMzgtLjE0My05LjM0NGMtNy4xODgtNC4wMjQtMzkuNTMtMzQuNS0zOS41My0zNC41LTUuMzQ4LTUuNDc3LTguMjU3LTcuMzQ3LTE1LjQ2LDAsMCwwLTMyLjM0MiwzMC40NzQtMzkuNTI5LDM0LjUtNy4wNzgsMy45NjQtLjE0NCw5LjM0NC0uMTQ0LDkuMzQ0bDguNDgxLDcuNjE4LS4wNDgsNC4zNjlMNzUuOTgyLDEzMS4wNDVjMzkuNjQ0LTU2LjkzOCwxMDUuNTMyLTk0LjMsMTgwLjAxOC05NC4zQTIxOC43NTQsMjE4Ljc1NCwwLDAsMSw0MjAuOTM0LDExMS43N2wtMTkzLjUxMiwzNy43Wm0zNC4wNjMsMzI5LjI2OS0zMy45LTI1MC44NTcsOS40NjctNy40YTEyLjc3OCwxMi43NzgsMCwwLDAsNC44ODgtMTAuMzQ5YzAtNy4wNDQtLjE0NC0xOS41NDktLjE0NC0xOS41NDlsLTEzLjk0My0yLjAxMy0uMTE2LTEwLjQ3NCwyNDEuNzExLDMxLjM5MUEyMTguODcyLDIxOC44NzIsMCwwLDEsNDc1LjI1OSwyNTZDNDc1LjI1OSwzNzUuMDc0LDM3OS44MzEsNDcyLjIxMiwyNjEuNDQ1LDQ3NS4xMjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjE3IDIwMS42N0M1MTYuNjkgMjg3LjUzIDQ3MS4yMyAzNjkuNTkgMzg5IDQwOS44YzEzIDM0LjEtMTIuNCA3MC4yLTQ4LjMyIDcwLjJhNTEuNjggNTEuNjggMCAwIDEtNTEuNTctNDljLTYuNDQuMTktNjQuMiAwLTc2LjMzLS42NEE1MS42OSA1MS42OSAwIDAgMSAxNTkgNDc5LjkyYy0zMy44Ni0xLjM2LTU3Ljk1LTM0Ljg0LTQ3LTY3LjkyLTM3LjIxLTEzLjExLTcyLjU0LTM0Ljg3LTk5LjYyLTcwLjgtMTMtMTcuMjgtLjQ4LTQxLjggMjAuODQtNDEuOCA0Ni4zMSAwIDMyLjIyLTU0LjE3IDQzLjE1LTExMC4yNkM5NC44IDk1LjIgMTkzLjEyIDMyIDI4OC4wOSAzMmMxMDIuNDggMCAxOTcuMTUgNzAuNjcgMjE0LjA4IDE2OS42N3pNMzczLjUxIDM4OC4yOGM0Mi0xOS4xOCA4MS4zMy01Ni43MSA5Ni4yOS0xMDIuMTQgNDAuNDgtMTIzLjA5LTY0LjE1LTIyOC0xODEuNzEtMjI4LTgzLjQ1IDAtMTcwLjMyIDU1LjQyLTE4Ni4wNyAxMzYtOS41MyA0OC45MSA1IDEzMS4zNS02OC43NSAxMzEuMzVDNTguMjEgMzU4LjYgOTEuNiAzNzguMTEgMTI3IDM4OS41NGMyNC42Ni0yMS44IDYzLjg3LTE1LjQ3IDc5LjgzIDE0LjM0IDE0LjIyIDEgNzkuMTkgMS4xOCA4Ny45LjgyYTUxLjY5IDUxLjY5IDAgMCAxIDc4Ljc4LTE2LjQyek0yMDUuMTIgMTg3LjEzYzAtMzQuNzQgNTAuODQtMzQuNzUgNTAuODQgMHMtNTAuODQgMzQuNzQtNTAuODQgMHptMTE2LjU3IDBjMC0zNC43NCA1MC44Ni0zNC43NSA1MC44NiAwcy01MC44NiAzNC43NS01MC44NiAwem0tMTIyLjYxIDcwLjY5Yy0zLjQ0LTE2Ljk0IDIyLjE4LTIyLjE4IDI1LjYyLTUuMjFsLjA2LjI4YzQuMTQgMjEuNDIgMjkuODUgNDQgNjQuMTIgNDMuMDcgMzUuNjgtLjk0IDU5LjI1LTIyLjIxIDY0LjExLTQyLjc3IDQuNDYtMTYuMDUgMjguNi0xMC4zNiAyNS40NyA2LTUuMjMgMjIuMTgtMzEuMjEgNjItOTEuNDYgNjIuOS00Mi41NSAwLTgwLjg4LTI3Ljg0LTg3LjktNjQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlZWJseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjUuMDkgNjUuODNjLTM5Ljg4IDAtNzMuMjggMjUuNzMtODMuNjYgNjQuMzMtMTguMTYtNTguMDYtNjUuNS02NC4zMy04NC45NS02NC4zMy0xOS43OCAwLTY2LjggNi4yOC04NS4yOCA2NC4zMy0xMC4zOC0zOC42LTQzLjQ1LTY0LjMzLTgzLjY2LTY0LjMzQzM4LjU5IDY1LjgzIDAgOTkuNzIgMCAxNDMuMDNjMCAyOC45NiA0LjE4IDMzLjI3IDc3LjE3IDIzMy40OCAyMi4zNyA2MC41NyA2Ny43NyA2OS4zNSA5Mi43NCA2OS4zNSAzOS4yMyAwIDcwLjA0LTE5LjQ2IDg1LjkzLTUzLjk4IDE1Ljg5IDM0LjgzIDQ2LjY5IDU0LjI5IDg1LjkzIDU0LjI5IDI0Ljk3IDAgNzAuMzYtOS4xIDkyLjc0LTY5LjY3IDc2LjU1LTIwOC42NSA3Ny41LTIwNS41OCA3Ny41LTIyNy4yLjYzLTQ4LjMyLTM2LjAxLTgzLjQ3LTg2LjkyLTgzLjQ3em0yNi4zNCAxMTQuODFsLTY1LjU3IDE3Ni40NGMtNy45MiAyMS40OS0yMS4yMiAzNy4yMi00Ni4yNCAzNy4yMi0yMy40NCAwLTM3LjM4LTEyLjQxLTQ0LjAzLTMzLjlsLTM5LjI4LTExNy40MmgtLjk1TDIxNi4wOCAzNjAuNGMtNi45NiAyMS41LTIwLjkgMzMuNi00NC4wMiAzMy42LTI1LjAyIDAtMzguMzMtMTUuNzQtNDYuMjQtMzcuMjJMNjAuODggMTgxLjU1Yy01LjM4LTE0LjgzLTcuOTItMjMuOTEtNy45Mi0zNC41IDAtMTYuMzQgMTUuODQtMjkuMzYgMzguMzMtMjkuMzYgMTguNjkgMCAzMS45OSAxMS44IDM2LjExIDI5LjA1bDQ0LjAzIDEzOS44MmguOTVsNDQuNjYtMTM2Ljc5YzYuMDItMTkuNjcgMTYuNDctMzIuMDggMzguOTYtMzIuMDhzMzIuOTQgMTIuMTEgMzguOTYgMzIuMDhsNDQuNjYgMTM2Ljc5aC45NWw0NC4wMy0xMzkuODJjNC4xMi0xNy4yNSAxNy40Mi0yOS4wNSAzNi4xMS0yOS4wNSAyMi4xNyAwIDM4LjMzIDEzLjMyIDM4LjMzIDM1LjcxLS4zMiA3Ljg3LTQuMTIgMTYuMDQtNy42MSAyNy4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VpYm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3IDE3Ny42YzcuNi0yNC0xMy40LTQ2LjgtMzcuNC00MS43LTIyIDQuOC0yOC44LTI4LjEtNy4xLTMyLjggNTAuMS0xMC45IDkyLjMgMzcuMSA3Ni41IDg0LjgtNi44IDIxLjItMzguOCAxMC44LTMyLTEwLjN6TTIxNC44IDQ0Ni43QzEwOC41IDQ0Ni43IDAgMzk1LjMgMCAzMTAuNGMwLTQ0LjMgMjgtOTUuNCA3Ni4zLTE0My43QzE3NiA2NyAyNzkuNSA2NS44IDI0OS45IDE2MWMtNCAxMy4xIDEyLjMgNS43IDEyLjMgNiA3OS41LTMzLjYgMTQwLjUtMTYuOCAxMTQgNTEuNC0zLjcgOS40IDEuMSAxMC45IDguMyAxMy4xIDEzNS43IDQyLjMgMzQuOCAyMTUuMi0xNjkuNyAyMTUuMnptMTQzLjctMTQ2LjNjLTUuNC01NS43LTc4LjUtOTQtMTYzLjQtODUuNy04NC44IDguNi0xNDguOCA2MC4zLTE0My40IDExNnM3OC41IDk0IDE2My40IDg1LjdjODQuOC04LjYgMTQ4LjgtNjAuMyAxNDMuNC0xMTZ6TTM0Ny45IDM1LjFjLTI1LjkgNS42LTE2LjggNDMuNyA4LjMgMzguMyA3Mi4zLTE1LjIgMTM0LjggNTIuOCAxMTEuNyAxMjQtNy40IDI0LjIgMjkuMSAzNyAzNy40IDEyIDMxLjktOTkuOC01NS4xLTE5NS45LTE1Ny40LTE3NC4zem0tNzguNSAzMTFjLTE3LjEgMzguOC02Ni44IDYwLTEwOS4xIDQ2LjMtNDAuOC0xMy4xLTU4LTUzLjQtNDAuMy04OS43IDE3LjctMzUuNCA2My4xLTU1LjQgMTAzLjQtNDUuMSA0MiAxMC44IDYzLjEgNTAuMiA0NiA4OC41em0tODYuMy0zMGMtMTIuOS01LjQtMzAgLjMtMzggMTIuOS04LjMgMTIuOS00LjMgMjggOC42IDM0IDEzLjEgNiAzMC44LjMgMzkuMS0xMi45IDgtMTMuMSAzLjctMjguMy05LjctMzR6bTMyLjYtMTMuNGMtNS4xLTEuNy0xMS40LjYtMTQuMyA1LjQtMi45IDUuMS0xLjQgMTAuNiAzLjcgMTIuOSA1LjEgMiAxMS43LS4zIDE0LjYtNS40IDIuOC01LjIgMS4xLTEwLjktNC0xMi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWl4aW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg1LjIgMTY3LjZjNi40IDAgMTIuNi4zIDE4LjggMS4xQzM4Ny40IDkwLjMgMzAzLjMgMzIgMjA3LjcgMzIgMTAwLjUgMzIgMTMgMTA0LjggMTMgMTk3LjRjMCA1My40IDI5LjMgOTcuNSA3Ny45IDEzMS42bC0xOS4zIDU4LjYgNjgtMzQuMWMyNC40IDQuOCA0My44IDkuNyA2OC4yIDkuNyA2LjIgMCAxMi4xLS4zIDE4LjMtLjgtNC0xMi45LTYuMi0yNi42LTYuMi00MC44LS4xLTg0LjkgNzIuOS0xNTQgMTY1LjMtMTU0em0tMTA0LjUtNTIuOWMxNC41IDAgMjQuMiA5LjcgMjQuMiAyNC40IDAgMTQuNS05LjcgMjQuMi0yNC4yIDI0LjItMTQuOCAwLTI5LjMtOS43LTI5LjMtMjQuMi4xLTE0LjcgMTQuNi0yNC40IDI5LjMtMjQuNHptLTEzNi40IDQ4LjZjLTE0LjUgMC0yOS4zLTkuNy0yOS4zLTI0LjIgMC0xNC44IDE0LjgtMjQuNCAyOS4zLTI0LjQgMTQuOCAwIDI0LjQgOS43IDI0LjQgMjQuNCAwIDE0LjYtOS42IDI0LjItMjQuNCAyNC4yek01NjMgMzE5LjRjMC03Ny45LTc3LjktMTQxLjMtMTY1LjQtMTQxLjMtOTIuNyAwLTE2NS40IDYzLjQtMTY1LjQgMTQxLjNTMzA1IDQ2MC43IDM5Ny42IDQ2MC43YzE5LjMgMCAzOC45LTUuMSA1OC42LTkuOWw1My40IDI5LjMtMTQuOC00OC42QzUzNCA0MDIuMSA1NjMgMzYzLjIgNTYzIDMxOS40em0tMjE5LjEtMjQuNWMtOS43IDAtMTkuMy05LjctMTkuMy0xOS42IDAtOS43IDkuNy0xOS4zIDE5LjMtMTkuMyAxNC44IDAgMjQuNCA5LjcgMjQuNCAxOS4zIDAgMTAtOS43IDE5LjYtMjQuNCAxOS42em0xMDcuMSAwYy05LjcgMC0xOS4zLTkuNy0xOS4zLTE5LjYgMC05LjcgOS43LTE5LjMgMTkuMy0xOS4zIDE0LjUgMCAyNC40IDkuNyAyNC40IDE5LjMuMSAxMC05LjkgMTkuNi0yNC40IDE5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoYXRzYXBwU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMjIuOGMtNzIuNyAwLTEzMS44IDU5LjEtMTMxLjkgMTMxLjggMCAyNC45IDcgNDkuMiAyMC4yIDcwLjFsMy4xIDUtMTMuMyA0OC42IDQ5LjktMTMuMSA0LjggMi45YzIwLjIgMTIgNDMuNCAxOC40IDY3LjEgMTguNGguMWM3Mi42IDAgMTMzLjMtNTkuMSAxMzMuMy0xMzEuOCAwLTM1LjItMTUuMi02OC4zLTQwLjEtOTMuMi0yNS0yNS01OC0zOC43LTkzLjItMzguN3ptNzcuNSAxODguNGMtMy4zIDkuMy0xOS4xIDE3LjctMjYuNyAxOC44LTEyLjYgMS45LTIyLjQuOS00Ny41LTkuOS0zOS43LTE3LjItNjUuNy01Ny4yLTY3LjctNTkuOC0yLTIuNi0xNi4yLTIxLjUtMTYuMi00MXMxMC4yLTI5LjEgMTMuOS0zMy4xYzMuNi00IDcuOS01IDEwLjYtNSAyLjYgMCA1LjMgMCA3LjYuMSAyLjQuMSA1LjctLjkgOC45IDYuOCAzLjMgNy45IDExLjIgMjcuNCAxMi4yIDI5LjRzMS43IDQuMy4zIDYuOWMtNy42IDE1LjItMTUuNyAxNC42LTExLjYgMjEuNiAxNS4zIDI2LjMgMzAuNiAzNS40IDUzLjkgNDcuMSA0IDIgNi4zIDEuNyA4LjYtMSAyLjMtMi42IDkuOS0xMS42IDEyLjUtMTUuNSAyLjYtNCA1LjMtMy4zIDguOS0yIDMuNiAxLjMgMjMuMSAxMC45IDI3LjEgMTIuOXM2LjYgMyA3LjYgNC42Yy45IDEuOS45IDkuOS0yLjQgMTkuMXpNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjIzLjkgNDEzLjJjLTI2LjYgMC01Mi43LTYuNy03NS44LTE5LjNMNjQgNDE2bDIyLjUtODIuMmMtMTMuOS0yNC0yMS4yLTUxLjMtMjEuMi03OS4zQzY1LjQgMTY3LjEgMTM2LjUgOTYgMjIzLjkgOTZjNDIuNCAwIDgyLjIgMTYuNSAxMTIuMiA0Ni41IDI5LjkgMzAgNDcuOSA2OS44IDQ3LjkgMTEyLjIgMCA4Ny40LTcyLjcgMTU4LjUtMTYwLjEgMTU4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoYXRzYXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4MC45IDk3LjFDMzM5IDU1LjEgMjgzLjIgMzIgMjIzLjkgMzJjLTEyMi40IDAtMjIyIDk5LjYtMjIyIDIyMiAwIDM5LjEgMTAuMiA3Ny4zIDI5LjYgMTExTDAgNDgwbDExNy43LTMwLjljMzIuNCAxNy43IDY4LjkgMjcgMTA2LjEgMjdoLjFjMTIyLjMgMCAyMjQuMS05OS42IDIyNC4xLTIyMiAwLTU5LjMtMjUuMi0xMTUtNjcuMS0xNTd6bS0xNTcgMzQxLjZjLTMzLjIgMC02NS43LTguOS05NC0yNS43bC02LjctNC02OS44IDE4LjNMNzIgMzU5LjJsLTQuNC03Yy0xOC41LTI5LjQtMjguMi02My4zLTI4LjItOTguMiAwLTEwMS43IDgyLjgtMTg0LjUgMTg0LjYtMTg0LjUgNDkuMyAwIDk1LjYgMTkuMiAxMzAuNCA1NC4xIDM0LjggMzQuOSA1Ni4yIDgxLjIgNTYuMSAxMzAuNSAwIDEwMS44LTg0LjkgMTg0LjYtMTg2LjYgMTg0LjZ6bTEwMS4yLTEzOC4yYy01LjUtMi44LTMyLjgtMTYuMi0zNy45LTE4LTUuMS0xLjktOC44LTIuOC0xMi41IDIuOC0zLjcgNS42LTE0LjMgMTgtMTcuNiAyMS44LTMuMiAzLjctNi41IDQuMi0xMiAxLjQtMzIuNi0xNi4zLTU0LTI5LjEtNzUuNS02Ni01LjctOS44IDUuNy05LjEgMTYuMy0zMC4zIDEuOC0zLjcuOS02LjktLjUtOS43LTEuNC0yLjgtMTIuNS0zMC4xLTE3LjEtNDEuMi00LjUtMTAuOC05LjEtOS4zLTEyLjUtOS41LTMuMi0uMi02LjktLjItMTAuNi0uMi0zLjcgMC05LjcgMS40LTE0LjggNi45LTUuMSA1LjYtMTkuNCAxOS0xOS40IDQ2LjMgMCAyNy4zIDE5LjkgNTMuNyAyMi42IDU3LjQgMi44IDMuNyAzOS4xIDU5LjcgOTQuOCA4My44IDM1LjIgMTUuMiA0OSAxNi41IDY2LjYgMTMuOSAxMC43LTEuNiAzMi44LTEzLjQgMzcuNC0yNi40IDQuNi0xMyA0LjYtMjQuMSAzLjItMjYuNC0xLjMtMi41LTUtMy45LTEwLjUtNi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaG1jcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMTYxdi0yMS4zbC0yOC41LTguOC0yLjItMTAuNCAyMC4xLTIwLjdMNDI3IDgwLjRsLTI5IDcuNS03LjItNy41IDcuNS0yOC4yLTE5LjEtMTEuNi0yMS4zIDIxLTEwLjctMy4yLTctMjYuNGgtMjIuNmwtNi4yIDI2LjQtMTIuMSAzLjItMTkuNy0yMS0xOS40IDExIDguMSAyNy43LTguMSA4LjQtMjguNS03LjUtMTEgMTkuMSAyMC43IDIxLTIuOSAxMC40LTI4LjUgNy44LS4zIDIxLjcgMjguOCA3LjUgMi40IDEyLjEtMjAuMSAxOS45IDEwLjQgMTguNSAyOS42LTcuNSA3LjIgOC42LTguMSAyNi45IDE5LjkgMTEuNiAxOS40LTIwLjQgMTEuNiAyLjkgNi43IDI4LjUgMjIuNi4zIDYuNy0yOC44IDExLjYtMy41IDIwLjcgMjEuNiAyMC40LTEyLjEtOC44LTI4IDcuOC04LjEgMjguOCA4LjggMTAuMy0yMC4xLTIwLjktMTguOCAyLjItMTIuMSAyOS4xLTd6bS0xMTkuMiA0NS4yYy0zMS4zIDAtNTYuOC0yNS40LTU2LjgtNTYuOHMyNS40LTU2LjggNTYuOC01Ni44IDU2LjggMjUuNCA1Ni44IDU2LjhjMCAzMS41LTI1LjQgNTYuOC01Ni44IDU2Ljh6bTcyLjMgMTYuNGw0Ni45IDE0LjVWMjc3bC01NS4xIDEzLjQtNC4xIDIyLjcgMzguOSAzNS4zLTE5LjIgMzcuOS01NC0xNi43LTE0LjYgMTUuMiAxNi43IDUyLjUtMzguMyAyMi43LTM4LjktNDAuNS0yMS43IDYuNi0xMi42IDU0LTQyLjQtLjUtMTIuNi01My42LTIxLjctNS42LTM2LjQgMzguNC0zNy40LTIxLjcgMTUuMi01MC41LTEzLjctMTYuMS01NS41IDE0LjEtMTkuNy0zNC44IDM3LjktMzcuNC00LjgtMjIuOC01NC0xNC4xLjUtNDAuOUw1NCAyMTkuOWw1LjctMTkuNy0zOC45LTM5LjRMNDEuNSAxMjVsNTMuNiAxNC4xIDE1LjItMTUuNy0xNS4yLTUyIDM2LjQtMjAuNyAzNi44IDM5LjRMMTkxIDg0bDExLjYtNTJIMjQ1bDExLjYgNDUuOUwyMzQgNzJsLTYuMy0xLjctMy4zIDUuNy0xMSAxOS4xLTMuMyA1LjYgNC42IDQuNiAxNy4yIDE3LjQtLjMgMS0yMy44IDYuNS02LjIgMS43LS4xIDYuNC0uMiAxMi45QzE1My44IDE2MS42IDExOCAyMDQgMTE4IDI1NC43YzAgNTguMyA0Ny4zIDEwNS43IDEwNS43IDEwNS43IDUwLjUgMCA5Mi43LTM1LjQgMTAzLjItODIuOGwxMy4yLjIgNi45LjEgMS42LTYuNyA1LjYtMjQgMS45LS42IDE3LjEgMTcuOCA0LjcgNC45IDUuOC0zLjQgMjAuNC0xMi4xIDUuOC0zLjUtMi02LjUtNi44LTIxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpa2lwZWRpYVcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDUxLjJsLS4zIDEyLjJjLTI4LjEuOC00NSAxNS44LTU1LjggNDAuMy0yNSA1Ny44LTEwMy4zIDI0MC0xNTUuMyAzNTguNkg0MTVsLTgxLjktMTkzLjFjLTMyLjUgNjMuNi02OC4zIDEzMC05OS4yIDE5My4xLS4zLjMtMTUgMC0xNS0uM0MxNzIgMzUyLjMgMTIyLjggMjQzLjQgNzUuOCAxMzMuNCA2NC40IDEwNi43IDI2LjQgNjMuNC4yIDYzLjdjMC0zLjEtLjMtMTAtLjMtMTQuMmgxNjEuOXYxMy45Yy0xOS4yIDEuMS01Mi44IDEzLjMtNDMuMyAzNC4yIDIxLjkgNDkuNyAxMDMuNiAyNDAuMyAxMjUuNiAyODguNiAxNS0yOS43IDU3LjgtMTA5LjIgNzUuMy0xNDIuOC0xMy45LTI4LjMtNTguNi0xMzMuOS03Mi44LTE2MC05LjctMTcuOC0zNi4xLTE5LjQtNTUuOC0xOS43VjQ5LjhsMTQyLjUuM3YxMy4xYy0xOS40LjYtMzguMSA3LjgtMjkuNCAyNi4xIDE4LjkgNDAgMzAuNiA2OC4xIDQ4LjEgMTA0LjcgNS42LTEwLjggMzQuNy02OS40IDQ4LjEtMTAwLjggOC45LTIwLjYtMy45LTI4LjYtMzguNi0yOS40LjMtMy42IDAtMTAuMy4zLTEzLjYgNDQuNC0uMyAxMTEuMS0uMyAxMjMuMS0uNnYxMy42Yy0yMi41LjgtNDUuOCAxMi44LTU4LjEgMzEuN2wtNTkuMiAxMjIuOGM2LjQgMTYuMSA2My4zIDE0Mi44IDY5LjIgMTU2LjdMNTU5LjIgOTEuOGMtOC42LTIzLjEtMzYuNC0yOC4xLTQ3LjItMjguM1Y0OS42bDEyNy44IDEuMS4yLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmRvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5My43bDE4My42LTI1LjN2MTc3LjRIMFY5My43em0wIDMyNC42bDE4My42IDI1LjNWMjY4LjRIMHYxNDkuOXptMjAzLjggMjhMNDQ4IDQ4MFYyNjguNEgyMDMuOHYxNzcuOXptMC0zODAuNnYxODAuMUg0NDhWMzJMMjAzLjggNjUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2l4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5My4zOCAxMzEuNjljMCAxMy4wMyAyLjA4IDMyLjY5LTI4LjY4IDQzLjgzLTkuNTIgMy40NS0xNS45NSA5LjY2LTE1Ljk1IDkuNjYgMC0zMSA0LjcyLTQyLjIyIDE3LjQtNDguODYgOS43NS01LjExIDI3LjIzLTQuNjMgMjcuMjMtNC42M3ptLTExNS44IDM1LjU0bC0zNC4yNCAxMzIuNjYtMjguNDgtMTA4LjU3Yy03LjY5LTMxLjk5LTIwLjgxLTQ4LjUzLTQ4LjQzLTQ4LjUzLTI3LjM3IDAtNDAuNjYgMTYuMTgtNDguNDMgNDguNTNMODkuNTIgMjk5Ljg5IDU1LjI4IDE2Ny4yM0M0OS43MyAxNDAuNTEgMjMuODYgMTI4Ljk2IDAgMTMxLjk2bDY1LjU3IDI0Ny45M3MyMS42MyAxLjU2IDMyLjQ2LTMuOTZjMTQuMjItNy4yNSAyMC45OC0xMi44NCAyOS41OS00Ni41NyA3LjY3LTMwLjA3IDI5LjExLTExOC40MSAzMS4xMi0xMjQuNyA0Ljc2LTE0Ljk0IDExLjA5LTEzLjgxIDE1LjQgMCAxLjk3IDYuMyAyMy40NSA5NC42MyAzMS4xMiAxMjQuNyA4LjYgMzMuNzMgMTUuMzcgMzkuMzIgMjkuNTkgNDYuNTcgMTAuODIgNS41MiAzMi40NiAzLjk2IDMyLjQ2IDMuOTZsNjUuNTctMjQ3LjkzYy0yNC40Mi0zLjA3LTQ5LjgyIDguOTMtNTUuMyAzNS4yN3ptMTE1Ljc4IDUuMjFzLTQuMSA2LjM0LTEzLjQ2IDExLjU3Yy02LjAxIDMuMzYtMTEuNzggNS42NC0xNy45NyA4LjYxLTE1LjE0IDcuMjYtMTMuMTggMTMuOTUtMTMuMTggMzUuMnYxNTIuMDdzMTYuNTUgMi4wOSAyNy4zNy0zLjQzYzEzLjkzLTcuMSAxNy4xMy0xMy45NSAxNy4yNi00NC43OFYxODEuNDFsLS4wMi4wMXYtOC45OHptMTYzLjQ0IDg0LjA4TDY0MCAxMzIuNzhzLTM1LjExLTUuOTgtNTIuNSA5Ljg1Yy0xMy4zIDEyLjEtMjQuNDEgMjkuNTUtNTQuMTggNzIuNDctLjQ3LjczLTYuMjUgMTAuNTQtMTMuMDcgMC0yOS4yOS00Mi4yMy00MC44LTYwLjI5LTU0LjE4LTcyLjQ3LTE3LjM5LTE1LjgzLTUyLjUtOS44NS01Mi41LTkuODVsODMuMiAxMjMuNzQtODIuOTcgMTIzLjM2czM2LjU3IDQuNjIgNTMuOTUtMTEuMjFjMTEuNDktMTAuNDYgMTcuNTgtMjAuMzcgNTIuNTEtNzAuNzIgNi44MS0xMC41MiAxMi41Ny0uNzcgMTMuMDcgMCAyOS40IDQyLjM4IDM5LjIzIDU4LjA2IDUzLjE0IDcwLjcyIDE3LjM5IDE1LjgzIDUzLjMyIDExLjIxIDUzLjMyIDExLjIxTDU1Ni44IDI1Ni41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2l6YXJkc09mVGhlQ29hc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE5LjE5IDM0NS42OWMtMS45IDEuMzgtMTEuMDcgOC40NC0uMjYgMjMuNTcgNC42NCA2LjQyIDE0LjExIDEyLjc5IDIxLjczIDYuNTUgNi41LTQuODggNy4zNS0xMi45Mi4yNi0yMy4wNC01LjQ3LTcuNzYtMTQuMjgtMTIuODgtMjEuNzMtNy4wOHptMzM2Ljc1IDc1Ljk0Yy0uMzQgMS43LS41NSAxLjY3Ljc5IDAgMi4wOS00LjE5IDQuMTktMTAuMjEgNC45OC0xOS45IDMuMTQtMzguNDktNDAuMzMtNzEuNDktMTAxLjM0LTc4LjAzLTU0LjczLTYuMDItMTI0LjM4IDkuMTctMTg4LjggNjAuNDlsLS4yNiAxLjU3YzIuNjIgNC45OCA0Ljk4IDEwLjc0IDMuNCAyMS4yMWwuNzkuMjZjNjMuODktNTguNCAxMzEuMTktNzcuMjUgMTg0LjM1LTczLjg1IDU4LjQgMy42NyAxMDAuMDMgMzQuMDQgMTAwLjAzIDY4LjA4LS4wMSA5Ljk2LTIuNjMgMTUuNzItMy45NCAyMC4xN3pNMzkyLjI4IDI0MC40MmMuNzkgNy4wNyA0LjE5IDEwLjIxIDkuMTcgMTAuNDcgNS41LjI2IDkuNDMtMi42MiAxMC40Ny02LjU1Ljc5LTMuNCAyLjA5LTI5Ljg1IDIuMDktMjkuODVzLTExLjI2IDYuNTUtMTQuOTMgMTAuNDdjLTMuNjYgMy42OC03LjMzIDguMzktNi44IDE1LjQ2em0tNTAuMDItMTUxLjFDMTM3Ljc1IDg5LjMyIDEzLjEgMjI2LjguNzkgMjQxLjJjLTEuMDUuNTItMS4zMS43OS43OSAxLjMxIDYwLjQ5IDE2LjUgMTU1LjgxIDgxLjE4IDE5Ni4xMyAyMDIuMTZsMS4wNS4yNmM1NS4yNS02OS45MiAxNDAuODgtMTI4LjA1IDIzNi45OS0xMjguMDUgODAuOTIgMCAxMzAuMTUgNDIuMTYgMTMwLjE1IDgwLjM5IDAgMTguMzMtNi41NSAzMy41Mi0yMi4yNiA0Ni4zNSAwIC45Ni0uMi43OS43OS43OSAxNC42Ni0xMC43NCAyNy41LTI4LjggMjcuNS00OC4xOCAwLTIyLjc4LTEyLjA1LTM4LjIzLTEyLjA1LTM4LjIzIDcuMDcgNy4wNyAxMC43NCAxNi4yNCAxMC43NCAxNi4yNCA1Ljc2LTQwLjg1IDI2Ljk3LTYyLjMyIDI2Ljk3LTYyLjMyLTIuMzYtOS42OS02LjgxLTE3LjgxLTYuODEtMTcuODEgNy41OSA4LjEyIDE0LjQgMjcuNSAxNC40IDQxLjM3IDAgMTAuNDctMy40IDIyLjc4LTEyLjU3IDMxLjk1bC4yNi41MmM4LjEyLTQuOTggMTYuNS0xNi43NiAxNi41LTM3Ljk3IDAtMTUuNzEtNC43MS0yNS45Mi00LjcxLTI1LjkyIDUuNzYtNS4yNCAxMS4yNi05LjE3IDE1Ljk3LTExLjc4Ljc5IDMuNCAyLjA5IDkuNjkgMi4zNiAxNC45MyAwIDEuMDUuNzkgMS44MyAxLjA1IDAgLjc5LTUuNzYtLjI2LTE2LjI0LS4yNi0xNi41IDYuMDItMy4xNCA5LjY5LTQuNDUgOS42OS00LjQ1QzYxNy43NCAxNzYgNDg5LjQzIDg5LjMyIDM0Mi4yNiA4OS4zMnptLTk5LjI0IDI4OS42MmMtMTEuMDYgOC45OS0yNC4yIDQuMDgtMzAuNjQtNC4xOS03LjQ1LTkuNTgtNi43Ni0yNC4wOSA0LjE5LTMyLjQ3IDE0Ljg1LTExLjM1IDI3LjA4LS40OSAzMS4xNiA1LjUuMjguMzkgMTIuMTMgMTYuNTctNC43MSAzMS4xNnptMi4wOS0xMzYuNDNsOS40My0xNy44MSAxMS43OCA3MC45Ni0xMi41NyA2LjAyLTI0LjYyLTI4LjggMTQuMTQtMjYuNzEgMy42NyA0LjQ1LTEuODMtOC4xMXptMTguNTkgMTE3LjU4bC0uMjYtLjI2YzIuMDUtNC4xLTIuNS02LjYxLTE3LjU0LTMxLjY5LTEuMzEtMi4zNi0zLjE0LTIuODgtNC40NS0yLjYybC0uMjYtLjUyYzcuODYtNS43NiAxNS40NS0xMC4yMSAyNS40LTE1LjcxbC41Mi4yNmMxLjMxIDEuODMgMi4wOSAyLjg4IDMuNCA0LjcxbC0uMjYuNTJjLTEuMDUtLjI2LTIuMzYtLjc5LTUuMjQuMjYtMi4wOS43OS03Ljg2IDMuNjctMTIuMzEgNy41OXYxLjMxYzEuNTcgMi4zNiAzLjkzIDYuNTUgNS43NiA5LjY5aC4yNmMxMC4wNS02LjI4IDcuNTYtNC41NSAxMS41Mi03Ljg2aC4yNmMuNTIgMS44My41MiAxLjgzIDEuODMgNS41bC0uMjYuMjZjLTMuMDYuNjEtNC42NS4zNC0xMS41MiA1LjV2LjI2YzkuNDYgMTcuMDIgMTEuMDEgMTYuNzUgMTIuNTcgMTUuOTdsLjI2LjI2Yy0yLjM0IDEuNTktNi4yNyA0LjIxLTkuNjggNi41N3ptNTUuMjYtMzIuNDdjLTMuMTQgMS41Ny02LjAyIDIuODgtOS45NSA0Ljk4bC0uMjYtLjI2YzEuMjktMi41OSAxLjE2LTIuNzEtMTEuNzgtMzIuNDdsLS4yNi0uMjZjLS4xNSAwLTguOSAzLjY1LTkuOTUgNy4zM2gtLjUybC0xLjA1LTUuNzYuMjYtLjUyYzcuMjktNC41NiAyNS41My0xMS42NCAyNy43Ni0xMi41N2wuNTIuMjYgMy4xNCA0Ljk4LS4yNi41MmMtMy41My0xLjc2LTcuMzUuNzYtMTIuMzEgMi42MnYuMjZjMTIuMzEgMzIuMDEgMTIuNjcgMzAuNjQgMTQuNjYgMzAuNjR2LjI1em00NC43Ny0xNi41Yy00LjE5IDEuMDUtNS4yNCAxLjMxLTkuNjkgMi44OGwtLjI2LS4yNi41Mi00LjQ1Yy0xLjA1LTMuNC0zLjE0LTExLjUyLTMuNjctMTMuNjJsLS4yNi0uMjZjLTMuNC43OS04LjkgMi42Mi0xMi44MyAzLjkzbC0uMjYuMjZjLjc5IDIuNjIgMy4xNCA5Ljk1IDQuMTkgMTMuODguNzkgMi4zNiAxLjgzIDIuODggMi44OCAzLjE0di41MmMtMy42NyAxLjA1LTcuMDcgMi42Mi0xMC4yMSAzLjkzbC0uMjYtLjI2YzEuMDUtMS4zMSAxLjA1LTIuODguMjYtNC45OC0xLjA1LTMuMTQtOC4xMi0yMy44My05LjE3LTI3LjIzLS41Mi0xLjgzLTEuNTctMy4xNC0yLjYyLTMuMTR2LS41MmMzLjE0LTEuMDUgNi4wMi0yLjA5IDEwLjc0LTMuNGwuMjYuMjYtLjI2IDQuNzFjMS4zMSAzLjkzIDIuMzYgNy41OSAzLjE0IDkuNjloLjI2YzMuOTMtMS4zMSA5LjQzLTIuODggMTIuODMtMy45M2wuMjYtLjI2LTIuNjItOS40M2MtLjUyLTEuODMtMS4wNS0zLjQtMi42Mi0zLjkzdi0uMjZjNC40NS0xLjA1IDcuMzMtMS44MyAxMC43NC0yLjM2bC4yNi4yNmMtMS4wNSAxLjMxLTEuMDUgMi44OC0uNTIgNC40NSAxLjU3IDYuMjggNC43MSAyMC40MyA2LjI4IDI2LjQ1LjU0IDIuNjIgMS44NSAzLjQxIDIuNjMgMy45M3ptMzIuMjEtNi44MWwtLjI2LjI2Yy00LjcxLjUyLTE0LjE0IDIuMzYtMjIuNTIgNC4xOWwtLjI2LS4yNi43OS00LjE5Yy0xLjU3LTcuODYtMy40LTE4LjU5LTQuOTgtMjYuMTktLjI2LTEuODMtLjc5LTIuODgtMi42Mi0zLjY3bC43OS0uNTJjOS4xNy0xLjU3IDIwLjE2LTIuMzYgMjQuODgtMi42MmwuMjYuMjZjLjUyIDIuMzYuNzkgMy4xNCAxLjU3IDUuNWwtLjI2LjI2Yy0xLjE0LTEuMTQtMy4zNC0zLjItMTYuMjQtLjc5bC0uMjYuMjZjLjI2IDEuNTcgMS4wNSA2LjU1IDEuNTcgOS45NWwuMjYuMjZjOS41Mi0xLjY4IDQuNzYtLjA2IDEwLjc0LTIuMzZoLjI2YzAgMS41Ny0uMjYgMS44My0uMjYgNS4yNGgtLjI2Yy00LjgxLTEuMDMtMi4xNS0uOS0xMC4yMSAwbC0uMjYuMjZjLjI2IDIuMDkgMS41NyA5LjQzIDIuMDkgMTIuNTdsLjI2LjI2YzEuMTUuMzggMTQuMjEtLjY1IDE2LjI0LTQuNzFoLjI2Yy0uNTMgMi4zOC0xLjA1IDQuMjEtMS41OCA2LjA0em0xMC43NC00NC41MWMtNC40NSAyLjM2LTguMTIgMi44OC0xMSAyLjg4LS4yNS4wMi0xMS40MSAxLjA5LTE3LjU0LTkuOTUtNi43NC0xMC43OS0uOTgtMjUuMiA1LjUtMzEuNjkgOC44LTguMTIgMjMuMzUtMTAuMSAyOC41NC0xNy4wMiA4LjAzLTEwLjMzLTEzLjA0LTIyLjMxLTI5LjU5LTUuNzZsLTIuNjItMi44OCA1LjI0LTE2LjI0YzI1LjU5LTEuNTcgNDUuMi0zLjA0IDUwLjAyIDE2LjI0Ljc5IDMuMTQgMCA5LjQzLS4yNiAxMi4wNSAwIDIuNjItMS44MyAxOC44NS0yLjA5IDIzLjA0LS41MiA0LjE5LS43OSAxOC4zMy0uNzkgMjAuNjkuMjYgMi4zNi41MiA0LjE5IDEuNTcgNS41IDEuNTcgMS44MyA1Ljc2IDEuODMgNS43NiAxLjgzbC0uNzkgNC43MWMtMTEuODItMS4wNy0xMC4yOC0uNTktMjAuNDMtMS4wNS0zLjIyLTUuMTUtMi4yMy0zLjI4LTQuMTktNy44NiAwIC4wMS00LjE5IDMuOTQtNy4zMyA1LjUxem0zNy4xOCAyMS4yMWMtNi4zNS0xMC41OC0xOS44Mi03LjE2LTIxLjczIDUuNS0yLjYzIDE3LjA4IDE0LjMgMTkuNzkgMjAuNjkgMTAuMjFsLjI2LjI2Yy0uNTIgMS44My0xLjgzIDYuMDItMS44MyA2LjI4bC0uNTIuNTJjLTEwLjMgNi44Ny0yOC41LTIuNS0yNS42Ni0xOC41OSAxLjk0LTEwLjg3IDE0LjQ0LTE4LjkzIDI4LjgtOS45NWwuMjYuNTJjMCAxLjA2LS4yNyAzLjQxLS4yNyA1LjI1em01Ljc3LTg3Ljczdi02LjU1Yy42OSAwIDE5LjY1IDMuMjggMjcuNzYgNy4zM2wtMS41NyAxNy41NHMxMC4yMS05LjQzIDE1LjQ1LTEwLjc0YzUuMjQtMS41NyAxNC45MyA3LjMzIDE0LjkzIDcuMzNsLTExLjI2IDExLjI2Yy0xMi4wNy02LjM1LTE5LjU5LS4wOC0yMC42OS43OS01LjI5IDM4LjcyLTguNiA0Mi4xNyA0LjQ1IDQ2LjA5bC0uNTIgNC43MWMtMTcuNTUtNC4yOS0xOC41My00LjUtMzYuOTItNy4zM2wuNzktNC43MWM3LjI1IDAgNy40OC01LjMyIDcuNTktNi44MSAwIDAgNC45OC01My4xNiA0Ljk4LTU1LjI1LS4wMi0yLjg3LTQuOTktMy42Ni00Ljk5LTMuNjZ6bTEwLjk5IDExNC40NGMtOC4xMi0yLjA5LTE0LjE0LTExLTEwLjc0LTIwLjY5IDMuMTQtOS40MyAxMi4zMS0xMi4zMSAxOC44NS0xMC4yMSA5LjE3IDIuNjIgMTIuODMgMTEuNzggMTAuNzQgMTkuMzgtMi42MSA4LjktOS40MiAxMy44Ny0xOC44NSAxMS41MnptNDIuMTYgOS42OWMtMi4zNi0uNTItNy4wNy0yLjM2LTguNjQtMi44OHYtLjI2bDEuNTctMS44M2MuNTktOC4yNC41OS03LjI3LjI2LTcuNTktNC44Mi0xLjgxLTYuNjYtMi4zNi03LjA3LTIuMzYtMS4zMSAxLjgzLTIuODggNC40NS0zLjY3IDUuNWwtLjc5IDMuNHYuMjZjLTEuMzEtLjI2LTMuOTMtMS4zMS02LjAyLTEuNTd2LS4yNmwyLjYyLTEuODNjMy40LTQuNzEgOS45NS0xNC4xNCAxMy44OC0yMC4xNnYtMi4wOWwuNTItLjI2YzIuMDkuNzkgNS41IDIuMDkgNy41OSAyLjg4LjQ4LjQ4LjE4LTEuODctMS4wNSAyNS4xNC0uMjQgMS44MS4wMiAyLjYuOCAzLjkxem0tNC43MS04OS44MmMxMS4yNS0xOC4yNyAzMC43Ni0xNi4xOSAzNC4wNC0zLjRMNTM5LjcgMTk4YzIuMzQtNi4yNS0yLjgyLTkuOS00LjQ1LTExLjI2bDEuODMtMy42N2MxMi4yMiAxMC4zNyAxNi4zOCAxMy45NyAyMi41MiAyMC40My0yNS45MSA3My4wNy0zMC43NiA4MC44MS0yNC42MiA4NC4zMmwtMS44MyA0LjQ1Yy02LjM3LTMuMzUtOC45LTQuNDItMTcuODEtOC42NGwyLjA5LTYuODFjLS4yNi0uMjYtMy45MyAzLjkzLTkuNjkgMy42Ny0xOS4wNi0xLjMtMjIuODktMzEuNzUtOS42Ny01Mi45em0yOS4zMyA3OS4zNGMwLTUuNzEtNi4zNC03Ljg5LTcuODYtNS4yNC0xLjMxIDIuMDkgMS4wNSA0Ljk4IDIuODggOC4zOCAxLjU3IDIuNjIgMi42MiA2LjI4IDEuMDUgOS40My0yLjY0IDYuMzQtMTIuNCA1LjMxLTE1LjQ1LS43OSAwLS43LS4yNy4wOSAxLjgzLTQuNzFsLjc5LS4yNmMtLjU3IDUuNjYgNi4wNiA5LjYxIDguMzggNC45OCAxLjA1LTIuMDktLjUyLTUuNS0yLjA5LTguMzgtMS41Ny0yLjYyLTMuNjctNi4yOC0xLjgzLTkuNjkgMi43Mi01LjA2IDExLjI1LTQuNDcgMTQuNjYgMi4zNnYuNTJsLTIuMzYgMy40em0yMS4yMSAxMy4zNmMtMS45Ni0zLjI3LS45MS0yLjE0LTQuNDUtNC43MWgtLjI2Yy0yLjM2IDQuMTktNS43NiAxMC40Ny04LjY0IDE2LjI0LTEuMzEgMi4zNi0xLjA1IDMuNC0uNzkgMy45M2wtLjI2LjI2LTUuNzYtNC40NS4yNi0uMjYgMi4wOS0xLjMxYzMuMTQtNS43NiA2LjU1LTEyLjA1IDkuMTctMTcuMDJ2LS4yNmMtMi42NC0xLjk4LTEuMjItMS41MS02LjAyLTEuODN2LS4yNmwzLjE0LTMuNGguMjZjMy42NyAyLjM2IDkuOTUgNi44MSAxMi4zMSA4LjlsLjI2LjI2LTEuMzEgMy45MXptMjcuMjMtNDQuMjZsLTIuODgtMi44OGMuNzktMi4zNiAxLjgzLTQuOTggMi4wOS03LjU5Ljc1LTkuNzQtMTEuNTItMTEuODQtMTEuNTItNC45OCAwIDQuOTggNy44NiAxOS4zOCA3Ljg2IDI3Ljc2IDAgMTAuMjEtNS43NiAxNS43MS0xMy44OCAxNi41LTguMzguNzktMjAuMTYtMTAuNDctMjAuMTYtMTAuNDdsNC45OC0xNC40IDIuODggMi4wOWMtMi45NyAxNy44IDE3LjY4IDIwLjM3IDEzLjM1IDUuMjQtMS4wNi00LjAyLTE4Ljc1LTM0LjIgMi4wOS0zOC4yMyAxMy42Mi0yLjM2IDIzLjA0IDE2LjUgMjMuMDQgMTYuNWwtNy44NSAxMC40NnptMzUuNjItMTAuMjFjLTExLTMwLjM4LTYwLjQ5LTEyNy41My0xOTEuOTUtMTI5LjYyLTUzLjQyLTEuMDUtOTQuMjcgMTUuNDUtMTMyLjc2IDM3Ljk3bDg1LjYzLTkuMTctOTEuMzkgMjAuNjkgMjUuMTQgMTkuNjQtMy45My0xNi41YzcuNS0xLjcxIDM5LjE1LTguNDUgNjYuNzctOC45bC0yMi4yNiA4MC4zOWMxMy42MS0uNyAxOC45Ny04Ljk4IDE5LjY0LTIyLjc4bDQuOTgtMS4wNS4yNiAyNi43MWMtMjIuNDYgMy4yMS0zNy4zIDYuNjktNDkuNDkgOS45NWwxMy4wOS00My4yMS02MS41NC0zNi42NiAyLjM2IDguMTIgMTAuMjEgNC45OGM2LjI4IDE4LjU5IDE5LjM4IDU2LjU2IDIwLjQzIDU4LjY2IDEuOTUgNC4yOCAzLjE2IDUuNzggMTIuMDUgNC40NWwxLjA1IDQuOThjLTE2LjA4IDQuODYtMjMuNjYgNy42MS0zOS4wMiAxNC40bC0yLjM2LTQuNzFjNC40LTIuOTQgOC43My0zLjk0IDUuNS0xMi44My0yMy43LTYyLjUtMjEuNDgtNTguMTQtMjIuNzgtNTkuNDRsMi4zNi00LjQ1IDMzLjUyIDY3LjNjLTMuODQtMTEuODcgMS42OCAxLjY5LTMyLjk5LTc4LjgybC00MS45IDg4LjUxIDQuNzEtMTMuODgtMzUuODgtNDIuMTYgMjcuNzYgOTMuNDgtMTEuNzggOC4zOEM5NSAyMjguNTggMTAxLjA1IDIzMS44NyA5My4yMyAyMzEuNTJjLTUuNS0uMjYtMTMuNjIgNS41LTEzLjYyIDUuNUw3NC42MyAyMzFjMzAuNTYtMjMuNTMgMzEuNjItMjQuMzMgNTguNC00Mi42OGw0LjE5IDcuMDdzLTUuNzYgNC4xOS03Ljg2IDcuMDdjLTUuOSA5LjI4IDEuNjcgMTMuMjggNjEuOCA3NS42OGwtMTguODUtNTguOTIgMzkuOC0xMC4yMSAyNS42NiAzMC42NCA0LjQ1LTEyLjMxLTQuOTgtMjQuNjIgMTMuMDktMy40LjUyIDMuMTQgMy42Ny0xMC40Ny05NC4yNyAyOS4zMyAxMS4yNi00Ljk4LTEzLjYyLTQyLjQyIDE3LjI4LTkuMTcgMzAuMTEgMzYuMTQgMjguNTQtMTMuMDljLTEuNDEtNy40Ny0yLjQ3LTE0LjUtNC43MS0xOS42NGwxNy4yOCAxMy44OCA0LjcxLTIuMDktNTkuMTgtNDIuNjggMjMuMDggMTEuNWMxOC45OC02LjA3IDI1LjIzLTcuNDcgMzIuMjEtOS42OWwyLjYyIDExYy0xMi41NSAxMi41NSAxLjQzIDE2LjgyIDYuNTUgMTkuMzhsLTEzLjYyLTYxLjAxIDEyLjA1IDI4LjI4YzQuMTktMS4zMSA3LjMzLTIuMDkgNy4zMy0yLjA5bDIuNjIgOC42NHMtMy4xNCAxLjA1LTYuMjggMi4wOWw4LjkgMjAuOTUgMzMuNzgtNjUuNzMtMjAuNjkgNjEuMDFjNDIuNDItMjQuMDkgODEuNDQtMzYuNjYgMTMxLjk4LTM1Ljg4IDY3LjA0IDEuMDUgMTY3LjMzIDQwLjg1IDE5OS44IDEzOS44My43OCAyLjEtLjAxIDIuNjMtLjc5LjI3ek0yMDMuNDggMTUyLjQzczEuODMtLjUyIDQuMTktMS4zMWw5LjQzIDcuNTljLS40IDAtMy40NC0uMjUtMTEuMjYgMi4zNmwtMi4zNi04LjY0em0xNDMuNzYgMzguNWMtMS41Ny0uNi0yNi40Ni00LjgxLTMzLjI2IDIwLjY5bDIxLjczIDE3LjAyIDExLjUzLTM3Ljcxek0zMTguNDMgNjcuMDdjLTU4LjQgMC0xMDYuMDUgMTIuMDUtMTE0Ljk2IDE0LjR2Ljc5YzguMzggMi4wOSAxNC40IDQuMTkgMjEuMjEgMTEuNzhsMS41Ny4yNmM2LjU1LTEuODMgNDguOTctMTMuODggMTEwLjI0LTEzLjg4IDE4MC4xNiAwIDMwMS42NyAxMTYuNzkgMzAxLjY3IDIyMy4zN3Y5Ljk1YzAgMS4zMS43OSAyLjYyIDEuMDUuNTIuNTItMi4wOS43OS04LjY0Ljc5LTE5LjY0LjI2LTgzLjc5LTk2LjYzLTIyNy41NS0zMjEuNTctMjI3LjU1em0yMTEuMDYgMTY5LjY4YzEuMzEtNS43NiAwLTEyLjMxLTcuMzMtMTMuMDktOS42Mi0xLjEzLTE2LjE0IDIzLjc5LTE3LjAyIDMzLjUyLS43OSA1LjUtMS4zMSAxNC45MyA2LjAyIDE0LjkzIDQuNjgtLjAxIDkuNzItLjkxIDE4LjMzLTM1LjM2em0tNjEuNTMgNDIuOTVjLTIuNjItLjc5LTkuNDMtLjc5LTEyLjU3IDEwLjQ3LTEuODMgNi44MS41MiAxMy4zNSA2LjAyIDE0LjY2IDMuNjcgMS4wNSA4LjkuNTIgMTEuNzgtMTAuNzQgMi42Mi05Ljk0LTEuODMtMTMuNjEtNS4yMy0xNC4zOXpNNDkxIDMwMC42NWMxLjgzLjUyIDMuMTQgMS4wNSA1Ljc2IDEuODMgMC0xLjgzLjUyLTguMzguNzktMTIuMDUtMS4wNSAxLjMxLTUuNSA4LjEyLTYuNTUgOS45NXYuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvZHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc4LjQxNCAzMzkuNzA2SDE0MS4xTDExMi4xNjYgMjIzLjQ3NWgtLjQ3OEw4My4yMjggMzM5LjcwNkg0NS4yTDAgMTY4Ljk0NkgzNy41NDhMNjQuNTc0IDI4NS4xNzdoLjQ3OEw5NC43MDcgMTY4Ljk0NmgzNS4xNTdsMjkuMTc4IDExNy42NjdoLjQ3OUwxODcuNSAxNjguOTQ2aDM2LjgzMXpNMjcxLjQgMjEyLjcxM2MzOC45ODQgMCA2NC4xIDI1LjgyOCA2NC4xIDY1LjI5MSAwIDM5LjIyMi0yNS4xMTEgNjUuMDUtNjQuMSA2NS4wNS0zOC43NDMgMC02My44NTUtMjUuODI4LTYzLjg1NS02NS4wNUMyMDcuNTQ3IDIzOC41NDEgMjMyLjY1OSAyMTIuNzEzIDI3MS40IDIxMi43MTN6bTAgMTA0Ljc1M2MyMy4yIDAgMzAuMTMzLTE5Ljg1MiAzMC4xMzMtMzkuNDYyIDAtMTkuODUyLTYuOTM0LTM5LjctMzAuMTMzLTM5LjctMjcuNyAwLTI5Ljg5NCAxOS44NS0yOS44OTQgMzkuN0MyNDEuNTA4IDI5Ny42MTQgMjQ4LjQ0MyAzMTcuNDY2IDI3MS40IDMxNy40NjZ6TTQzNS4wODQgMzIzLjkyMmgtLjQ3OGMtNy44OTMgMTMuMzkyLTIxLjc2NSAxOS4xMzItMzcuNTQ4IDE5LjEzMi0zNy4zMSAwLTU1LjQ4NS0zMi4wNDUtNTUuNDg1LTY2LjI0NiAwLTMzLjI0MyAxOC40MTUtNjQuMDk1IDU0Ljc2Ny02NC4wOTUgMTQuNTg5IDAgMjguOTM4IDYuMjE4IDM2LjgzMSAxOC40MTZoLjI0VjE2OC45NDZoMzMuOTZ2MTcwLjc2SDQzNS4wODR6TTQwNS40MjggMjM4LjNjLTIyLjI0IDAtMjkuODk0IDE5LjEzNC0yOS44OTQgMzkuNDYzIDAgMTkuMzcxIDguODQ4IDM5LjcgMjkuODk0IDM5LjcgMjIuNDgyIDAgMjkuMTc4LTE5LjYxMyAyOS4xNzgtMzkuOTRDNDM0LjYwNiAyNTcuNDM2IDQyNy40MzIgMjM4LjMgNDA1LjQyOCAyMzguM3pNNTkyLjk2IDMzOS43MDZINTYwLjY3M1YzMjIuNDg3aC0uNzE4Yy04LjYwOSAxMy44Ny0yMy40MzYgMjAuNTY3LTM3Ljc4NiAyMC41NjctMzYuMTEzIDAtNDUuMi0yMC4zMjgtNDUuMi01MC45NDFWMjE2LjA2MWgzMy45NTlWMjg1LjljMCAyMC4zMjkgNS45NzkgMzAuMzcyIDIxLjc2NSAzMC4zNzIgMTguNDE1IDAgMjYuMzA2LTEwLjI4MyAyNi4zMDYtMzUuMzkzVjIxNi4wNjFINTkyLjk2ek02MDIuNDUzIDMwMi44NzZINjQwdjM2LjgzSDYwMi40NTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvbGZQYWNrQmF0dGFsaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2Ny43MyA0NzEuNTNsMTAuNTYgMTUuODQgNS4yOC0xMi4zMiA1LjI4IDdWNTEyYzIxLjA2LTcuOTIgMjEuMTEtNjYuODYgMjUuNTEtOTcuMjEgNC42Mi0zMS44OS0uODgtOTIuODEgODEuMzctMTQ5LjExLTguODgtMjMuNjEtMTItNDkuNDMtMi42NC04MC4wNUM0MjEgMTg5IDQ0NyAxOTYuMjEgNDU2LjQzIDIzOS43M2wtMzAuMzUgOC4zNmMxMS4xNSAyMyAxNyA0Ni43NiAxMy4yIDcyLjE0TDQxMiAzMTMuMThsLTYuMTYgMzMuNDMtMTguNDctNy04LjggMzMuMzktMTkuMzUtNyAyNi4zOSAyMS4xMSA4LjgtMjguMTVMNDE5IDM2NC4ybDctMzUuNjMgMjYuMzkgMTQuNTJjLjI1LTIwIDctNTguMDYtOC44LTg0LjQ1bDI2LjM5IDUuMjhjNC0yMi4wNy0yLjM4LTM5LjIxLTcuOTItNTYuNzRsMjIuNDMgOS42OGMtLjQ0LTI1LjA3LTI5Ljk0LTU2Ljc5LTYxLjU4LTU4LjUtMjAuMjItMS4wOS01Ni43NC0yNS4xNy01NC4xLTUxLjkgMi0xOS44NyAxNy40NS00Mi42MiA0My4xMS00OS43LTQ0IDM2LjUxLTkuNjggNjcuMyA1LjI4IDczLjQ2IDQuNC0xMS40NCAxNy41NC02OS4wOCAwLTEzMC4yLTQwLjM5IDIyLjg3LTg5LjY1IDY1LjEtOTMuMiAxNDcuNzlsLTU4IDM4LjcxLTMuNTIgOTMuMjVMMzY5Ljc4IDIyMGw3IDctMTcuNTkgMy41Mi00NCAzOC43MS0xNS44NC01LjI4LTI4LjEgNDkuMjUtMy41MiAxMTkuNjQgMjEuMTEgMTUuODQtMzIuNTUgMTUuODQtMzIuNTUtMTUuODQgMjEuMTEtMTUuODQtMy41Mi0xMTkuNjQtMjguMTUtNDkuMjYtMTUuODQgNS4yOC00NC0zOC43MS0xNy41OC0zLjUxIDctNyAxMDcuMzMgNTkuODItMy41Mi05My4yNS01OC4wNi0zOC43MUMxODUgNjUuMSAxMzUuNzcgMjIuODcgOTUuMyAwYy0xNy41NCA2MS4xMi00LjQgMTE4Ljc2IDAgMTMwLjIgMTUtNi4xNiA0OS4yNi0zNi45NSA1LjI4LTczLjQ2IDI1LjY2IDcuMDggNDEuMTUgMjkuODMgNDMuMTEgNDkuNyAyLjYzIDI2Ljc0LTMzLjg4IDUwLjgxLTU0LjEgNTEuOS0zMS42NSAxLjcyLTYxLjE1IDMzLjQ0LTYxLjU5IDU4LjUxbDIyLjQzLTkuNjhjLTUuNTQgMTcuNTMtMTEuOTEgMzQuNjctNy45MiA1Ni43NGwyNi4zOS01LjI4Yy0xNS43NiAyNi4zOS05LjA1IDY0LjQzLTguOCA4NC40NWwyNi4zOS0xNC41MiA3IDM1LjYzIDI0LjYzLTUuMjggOC44IDI4LjE1TDE1My4zNSAzNjYgMTM0IDM3M2wtOC44LTMzLjQzLTE4LjQ3IDctNi4xNi0zMy40My0yNy4yNyA3Yy0zLjgyLTI1LjM4IDItNDkuMSAxMy4yLTcyLjE0bC0zMC4zNS04LjM2YzkuNC00My41MiAzNS40Ny01MC43NyA2My4zNC01NC4xIDkuMzYgMzAuNjIgNi4yNCA1Ni40NS0yLjY0IDgwLjA1IDgyLjI1IDU2LjMgNzYuNzUgMTE3LjIzIDgxLjM3IDE0OS4xMSA0LjQgMzAuMzUgNC40NSA4OS4yOSAyNS41MSA5Ny4yMXYtMjkuODNsNS4yOC03IDUuMjggMTIuMzIgMTAuNTYtMTUuODQgMTEuNDQgMjEuMTEgMTEuNDMtMjEuMXptNzkuMTctOTVMMzMxLjA2IDM2NmM3LjQ3LTQuMzYgMTMuNzYtOC40MiAxOS4zNS0xMi4zMi0uNiA3LjIyLS4yNyAxMy44NC0zLjUxIDIyLjg0em0yOC4xNS00OS4yNmMtLjQgMTAuOTQtLjkgMjEuNjYtMS43NiAzMS42Ny03Ljg1LTEuODYtMTUuNTctMy44LTIxLjExLTcgOC4yNC03Ljk0IDE1LjU1LTE2LjMyIDIyLjg3LTI0LjY4em0yNC42MyA1LjI4YzAtMTMuNDMtMi4wNS0yNC4yMS01LjI4LTMzLjQzYTIzNSAyMzUgMCAwIDEtMTguNDcgMjcuMjd6bTMuNTItODAuOTRjMTkuNDQgMTIuODEgMjcuOCAzMy42NiAyOS45MSA1Ni4zLTEyLjMyLTQuNTMtMjQuNjMtOS4zMS0zNi45NS0xMC41NiA1LjA2LTEyIDYuNjUtMjguMTQgNy00NS43NHptLTEuNzYtNDUuNzRjLjgxIDE0LjMgMS44NCAyOC44MiAxLjc2IDQyLjIzIDE5LjIyLTguMTEgMjkuNzgtOS43MiA0NC0xNC4wOC0xMC42MS0xOC45Ni0yNy4yLTI1LjUzLTQ1Ljc2LTI4LjE2ek0xNjUuNjggMzc2LjUyTDE4MS41MiAzNjZjLTcuNDctNC4zNi0xMy43Ni04LjQyLTE5LjM1LTEyLjMyLjYgNy4yNi4yNyAxMy44OCAzLjUxIDIyLjg4em0tMjguMTUtNDkuMjZjLjQgMTAuOTQuOSAyMS42NiAxLjc2IDMxLjY3IDcuODUtMS44NiAxNS41Ny0zLjggMjEuMTEtNy04LjI0LTcuOTMtMTUuNTUtMTYuMzEtMjIuODctMjQuNjd6bS0yNC42NCA1LjI4YzAtMTMuNDMgMi0yNC4yMSA1LjI4LTMzLjQzYTIzNSAyMzUgMCAwIDAgMTguNDcgMjcuMjd6bS0zLjUyLTgwLjk0Yy0xOS40NCAxMi44MS0yNy44IDMzLjY2LTI5LjkxIDU2LjMgMTIuMzItNC41MyAyNC42My05LjMxIDM3LTEwLjU2LTUtMTItNi42NS0yOC4xNC03LTQ1Ljc0em0xLjc2LTQ1Ljc0Yy0uODEgMTQuMy0xLjg0IDI4LjgyLTEuNzYgNDIuMjMtMTkuMjItOC4xMS0yOS43OC05LjcyLTQ0LTE0LjA4IDEwLjYzLTE4Ljk1IDI3LjIzLTI1LjUyIDQ1Ljc2LTI4LjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb3JkcHJlc3NTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjMgOCA4IDExOS4yIDggMjU2YzAgMTM2LjcgMTExLjMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4zIDI0OC0yNDhDNTA0IDExOS4yIDM5Mi43IDggMjU2IDh6TTMzIDI1NmMwLTMyLjMgNi45LTYzIDE5LjMtOTAuN2wxMDYuNCAyOTEuNEM4NC4zIDQyMC41IDMzIDM0NC4yIDMzIDI1NnptMjIzIDIyM2MtMjEuOSAwLTQzLTMuMi02My05LjFsNjYuOS0xOTQuNCA2OC41IDE4Ny44Yy41IDEuMSAxIDIuMSAxLjYgMy4xLTIzLjEgOC4xLTQ4IDEyLjYtNzQgMTIuNnptMzAuNy0zMjcuNWMxMy40LS43IDI1LjUtMi4xIDI1LjUtMi4xIDEyLTEuNCAxMC42LTE5LjEtMS40LTE4LjQgMCAwLTM2LjEgMi44LTU5LjQgMi44LTIxLjkgMC01OC43LTIuOC01OC43LTIuOC0xMi0uNy0xMy40IDE3LjctMS40IDE4LjQgMCAwIDExLjQgMS40IDIzLjQgMi4xbDM0LjcgOTUuMkwyMDAuNiAzOTNsLTgxLjItMjQxLjVjMTMuNC0uNyAyNS41LTIuMSAyNS41LTIuMSAxMi0xLjQgMTAuNi0xOS4xLTEuNC0xOC40IDAgMC0zNi4xIDIuOC01OS40IDIuOC00LjIgMC05LjEtLjEtMTQuNC0uM0MxMDkuNiA3MyAxNzguMSAzMyAyNTYgMzNjNTggMCAxMTAuOSAyMi4yIDE1MC42IDU4LjUtMS0uMS0xLjktLjItMi45LS4yLTIxLjkgMC0zNy40IDE5LjEtMzcuNCAzOS42IDAgMTguNCAxMC42IDMzLjkgMjEuOSA1Mi4zIDguNSAxNC44IDE4LjQgMzMuOSAxOC40IDYxLjUgMCAxOS4xLTcuMyA0MS4yLTE3IDcyLjFsLTIyLjIgNzQuMy04MC43LTIzOS42em04MS40IDI5Ny4ybDY4LjEtMTk2LjljMTIuNy0zMS44IDE3LTU3LjIgMTctNzkuOSAwLTguMi0uNS0xNS44LTEuNS0yMi45IDE3LjQgMzEuOCAyNy4zIDY4LjIgMjcuMyAxMDcgMCA4Mi4zLTQ0LjYgMTU0LjEtMTEwLjkgMTkyLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvcmRwcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MS43IDE2OS40bDEwMS41IDI3OEM5Mi4yIDQxMyA0My4zIDM0MC4yIDQzLjMgMjU2YzAtMzAuOSA2LjYtNjAuMSAxOC40LTg2LjZ6bTMzNy45IDc1LjljMC0yNi4zLTkuNC00NC41LTE3LjUtNTguNy0xMC44LTE3LjUtMjAuOS0zMi40LTIwLjktNDkuOSAwLTE5LjYgMTQuOC0zNy44IDM1LjctMzcuOC45IDAgMS44LjEgMi44LjItMzcuOS0zNC43LTg4LjMtNTUuOS0xNDMuNy01NS45LTc0LjMgMC0xMzkuNyAzOC4xLTE3Ny44IDk1LjkgNSAuMiA5LjcuMyAxMy43LjMgMjIuMiAwIDU2LjctMi43IDU2LjctMi43IDExLjUtLjcgMTIuOCAxNi4yIDEuNCAxNy41IDAgMC0xMS41IDEuMy0yNC4zIDJsNzcuNSAyMzAuNEwyNDkuOCAyNDdsLTMzLjEtOTAuOGMtMTEuNS0uNy0yMi4zLTItMjIuMy0yLTExLjUtLjctMTAuMS0xOC4yIDEuMy0xNy41IDAgMCAzNS4xIDIuNyA1NiAyLjcgMjIuMiAwIDU2LjctMi43IDU2LjctMi43IDExLjUtLjcgMTIuOCAxNi4yIDEuNCAxNy41IDAgMC0xMS41IDEuMy0yNC4zIDJsNzYuOSAyMjguNyAyMS4yLTcwLjljOS0yOS40IDE2LTUwLjUgMTYtNjguN3ptLTEzOS45IDI5LjNsLTYzLjggMTg1LjVjMTkuMSA1LjYgMzkuMiA4LjcgNjAuMSA4LjcgMjQuOCAwIDQ4LjUtNC4zIDcwLjYtMTIuMS0uNi0uOS0xLjEtMS45LTEuNS0yLjlsLTY1LjQtMTc5LjJ6bTE4My0xMjAuN2MuOSA2LjggMS40IDE0IDEuNCAyMS45IDAgMjEuNi00IDQ1LjgtMTYuMiA3Ni4ybC02NSAxODcuOUM0MjYuMiA0MDMgNDY4LjcgMzM0LjUgNDY4LjcgMjU2YzAtMzctOS40LTcxLjgtMjYtMTAyLjF6TTUwNCAyNTZjMCAxMzYuOC0xMTEuMyAyNDgtMjQ4IDI0OEMxMTkuMiA1MDQgOCAzOTIuNyA4IDI1NiA4IDExOS4yIDExOS4yIDggMjU2IDhjMTM2LjcgMCAyNDggMTExLjIgMjQ4IDI0OHptLTExLjQgMGMwLTEzMC41LTEwNi4yLTIzNi42LTIzNi42LTIzNi42QzEyNS41IDE5LjQgMTkuNCAxMjUuNSAxOS40IDI1NlMxMjUuNiA0OTIuNiAyNTYgNDkyLjZjMTMwLjUgMCAyMzYuNi0xMDYuMSAyMzYuNi0yMzYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3BiZWdpbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjIuNzk5IDMyMi4zNzRDNTE5LjAxIDM4Ni42ODIgNDY2Ljk2MSA0ODAgMzcwLjk0NCA0ODBjLTM5LjYwMiAwLTc4LjgyNC0xNy42ODctMTAwLjE0Mi01MC4wNC02Ljg4Ny4zNTYtMjIuNzAyLjM1Ni0yOS41OSAwQzIxOS44NDggNDYyLjM4MSAxODAuNTg4IDQ4MCAxNDEuMDY5IDQ4MGMtOTUuNDkgMC0xNDguMzQ4LTkyLjk5Ni05MS44NTUtMTU3LjYyNkMtMjkuOTI1IDE5MC41MjMgODAuNDc5IDMyIDI1Ni4wMDYgMzJjMTc1LjYzMiAwIDI4NS44NyAxNTguNjI2IDIwNi43OTMgMjkwLjM3NHptLTMzOS42NDctODIuOTcyaDQxLjUyOXYtNTguMDc1aC00MS41Mjl2NTguMDc1em0yMTcuMTggODYuMDcydi0yMy44MzljLTYwLjUwNiAyMC45MTUtMTMyLjM1NSA5LjE5OC0xODcuNTg5LTMzLjk3MWwuMjQ2IDI0Ljg5N2M1MS4xMDEgNDYuMzY3IDEzMS43NDYgNTcuODc1IDE4Ny4zNDMgMzIuOTEzem0tMTUwLjc1My04Ni4wNzJoMTY2LjA1OHYtNTguMDc1SDE4OS41Nzl2NTguMDc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcGV4cGxvcmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZjMCAxNDEuMi0xMTQuNyAyNTYtMjU2IDI1NkMxMTQuOCA1MTIgMCAzOTcuMyAwIDI1NlMxMTQuNyAwIDI1NiAwczI1NiAxMTQuNyAyNTYgMjU2em0tMzIgMGMwLTEyMy4yLTEwMC4zLTIyNC0yMjQtMjI0QzEzMi41IDMyIDMyIDEzMi41IDMyIDI1NnMxMDAuNSAyMjQgMjI0IDIyNCAyMjQtMTAwLjUgMjI0LTIyNHpNMTYwLjkgMTI0LjZsODYuOSAzNy4xLTM3LjEgODYuOS04Ni45LTM3LjEgMzcuMS04Ni45em0xMTAgMTY5LjFsNDYuNiA5NGgtMTQuNmwtNTAtMTAwLTQ4LjkgMTAwaC0xNGw1MS4xLTEwNi45LTIyLjMtOS40IDYtMTQgNjguNiAyOS4xLTYgMTQuMy0xNi41LTcuMXptLTExLjgtMTE2LjNsNjguNiAyOS40LTI5LjQgNjguM0wyMzAgMjQ2bDI5LjEtNjguNnptODAuMyA0Mi45bDU0LjYgMjMuMS0yMy40IDU0LjMtNTQuMy0yMy4xIDIzLjEtNTQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3Bmb3JtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNzUuMnYzNjEuN2MwIDI0LjMtMTkgNDMuMi00My4yIDQzLjJINDMuMkMxOS4zIDQ4MCAwIDQ2MS40IDAgNDM2LjhWNzUuMkMwIDUxLjEgMTguOCAzMiA0My4yIDMyaDM2MS43YzI0IDAgNDMuMSAxOC44IDQzLjEgNDMuMnptLTM3LjMgMzYxLjZWNzUuMmMwLTMtMi42LTUuOC01LjgtNS44aC05LjNMMjg1LjMgMTQ0IDIyNCA5NC4xIDE2Mi44IDE0NCA1Mi41IDY5LjNoLTkuM2MtMy4yIDAtNS44IDIuOC01LjggNS44djM2MS43YzAgMyAyLjYgNS44IDUuOCA1LjhoMzYxLjdjMy4yLjEgNS44LTIuNyA1LjgtNS44ek0xNTAuMiAxODZ2MzdINzYuN3YtMzdoNzMuNXptMCA3NC40djM3LjNINzYuN3YtMzcuM2g3My41em0xMS4xLTE0Ny4zbDU0LTQzLjdIOTYuOGw2NC41IDQzLjd6bTIxMCA3Mi45djM3aC0xOTZ2LTM3aDE5NnptMCA3NC40djM3LjNoLTE5NnYtMzcuM2gxOTZ6bS04NC42LTE0Ny4zbDY0LjUtNDMuN0gyMzIuOGw1My45IDQzLjd6TTM3MS4zIDMzNXYzNy4zaC05OS40VjMzNWg5OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcHJlc3NyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE3MS4zMyAxNTguNmMtMTUuMTggMzQuNTEtMzAuMzcgNjkuMDItNDUuNjMgMTAzLjUtMi40NCA1LjUxLTYuODkgOC4yNC0xMi45NyA4LjI0LTIzLjAyLS4wMS00Ni4wMy4wNi02OS4wNS0uMDUtNS4xMi0uMDMtOC4yNSAxLjg5LTEwLjM0IDYuNzItMTAuMTkgMjMuNTYtMjAuNjMgNDctMzAuOTUgNzAuNS0xLjU0IDMuNTEtNC4wNiA1LjI5LTcuOTIgNS4yOS00NS45NC0uMDEtOTEuODctLjAyLTEzNy44MSAwLTMuMTMgMC01LjYzLTEuMTUtNy43Mi0zLjQ1LTExLjIxLTEyLjMzLTIyLjQ2LTI0LjYzLTMzLjY4LTM2Ljk0LTIuNjktMi45NS0yLjc5LTYuMTgtMS4yMS05LjczIDguNjYtMTkuNTQgMTcuMjctMzkuMSAyNS44OS01OC42NiAxMi45My0yOS4zNSAyNS44OS01OC42OSAzOC43NS04OC4wOCAxLjctMy44OCA0LjI4LTUuNjggOC41NC01LjY1IDE0LjI0LjEgMjguNDguMDIgNDIuNzIuMDUgNi4yNC4wMSA5LjIgNC44NCA2LjY2IDEwLjU5LTEzLjYgMzAuNzctMjcuMTcgNjEuNTUtNDAuNzQgOTIuMzMtNS43MiAxMi45OS0xMS40MiAyNS45OS0xNy4wOSAzOS0zLjkxIDguOTUgNy4wOCAxMS45NyAxMC45NSA1LjYuMjMtLjM3LTEuNDIgNC4xOCAzMC4wMS02Ny42OSAxLjM2LTMuMSAzLjQxLTQuNCA2Ljc3LTQuMzkgMTUuMjEuMDggMzAuNDMuMDIgNDUuNjQuMDQgNS41Ni4wMSA3LjkxIDMuNjQgNS42NiA4Ljc1LTguMzMgMTguOTYtMTYuNzEgMzcuOS0yNC45OCA1Ni44OS00Ljk4IDExLjQzIDguMDggMTIuNDkgMTEuMjggNS4zMy4wNC0uMDggMjcuODktNjMuMzMgMzIuMTktNzMuMTYgMi4wMi00LjYxIDUuNDQtNi41MSAxMC4zNS02LjUgMjYuNDMuMDUgNTIuODYgMCA3OS4yOS4wNSAxMi40NC4wMiAxMy45My0xMy42NSAzLjktMTMuNjQtMjUuMjYuMDMtNTAuNTIuMDItNzUuNzguMDItNi4yNyAwLTcuODQtMi40Ny01LjI3LTguMjcgNS43OC0xMy4wNiAxMS41OS0yNi4xMSAxNy4zLTM5LjIxIDEuNzMtMy45NiA0LjUyLTUuNzkgOC44NC01Ljc4IDIzLjA5LjA2IDI1Ljk4LjAyIDEzMC43OC4wMyA2LjA4LS4wMSA4LjAzIDIuNzkgNS42MiA4LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDMxOC4yYzQ0LjMgNTQuMyA2NC43IDk4LjggNTQuNCAxMTguNy03LjkgMTUuMS01Ni43IDQ0LjYtOTIuNiA1NS45LTI5LjYgOS4zLTY4LjQgMTMuMy0xMDAuNCAxMC4yLTM4LjItMy43LTc2LjktMTcuNC0xMTAuMS0zOUM5My4zIDQ0NS44IDg3IDQzOC4zIDg3IDQyMy40YzAtMjkuOSAzMi45LTgyLjMgODkuMi0xNDIuMSAzMi0zMy45IDc2LjUtNzMuNyA4MS40LTcyLjYgOS40IDIuMSA4NC4zIDc1LjEgMTEyLjMgMTA5LjV6TTE4OC42IDE0My44Yy0yOS43LTI2LjktNTguMS01My45LTg2LjQtNjMuNC0xNS4yLTUuMS0xNi4zLTQuOC0yOC43IDguMS0yOS4yIDMwLjQtNTMuNSA3OS43LTYwLjMgMTIyLjQtNS40IDM0LjItNi4xIDQzLjgtNC4yIDYwLjUgNS42IDUwLjUgMTcuMyA4NS40IDQwLjUgMTIwLjkgOS41IDE0LjYgMTIuMSAxNy4zIDkuMyA5LjktNC4yLTExLS4zLTM3LjUgOS41LTY0IDE0LjMtMzkgNTMuOS0xMTIuOSAxMjAuMy0xOTQuNHptMzExLjYgNjMuNUM0ODMuMyAxMjcuMyA0MzIuNyA3NyA0MjUuNiA3N2MtNy4zIDAtMjQuMiA2LjUtMzYgMTMuOS0yMy4zIDE0LjUtNDEgMzEuNC02NC4zIDUyLjhDMzY3LjcgMTk3IDQyNy41IDI4My4xIDQ0OC4yIDM0NmM2LjggMjAuNyA5LjcgNDEuMSA3LjQgNTIuMy0xLjcgOC41LTEuNyA4LjUgMS40IDQuNiA2LjEtNy43IDE5LjktMzEuMyAyNS40LTQzLjUgNy40LTE2LjIgMTUtNDAuMiAxOC42LTU4LjcgNC4zLTIyLjUgMy45LTcwLjgtLjgtOTMuNHpNMTQxLjMgNDNDMTg5IDQwLjUgMjUxIDc3LjUgMjU1LjYgNzguNGMuNy4xIDEwLjQtNC4yIDIxLjYtOS43IDYzLjktMzEuMSA5NC0yNS44IDEwNy40LTI1LjItNjMuOS0zOS4zLTE1Mi43LTUwLTIzMy45LTExLjctMjMuNCAxMS4xLTI0IDExLjktOS40IDExLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVhpbmdTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTQwLjQgMzIwLjJIOTMuOGMtNS41IDAtOC43LTUuMy02LTEwLjNsNDkuMy04Ni43Yy4xIDAgLjEtLjEgMC0uMmwtMzEuNC01NGMtMy01LjYuMi0xMC4xIDYtMTAuMWg0Ni42YzUuMiAwIDkuNSAyLjkgMTIuOSA4LjdsMzEuOSA1NS4zYy0xLjMgMi4zLTE4IDMxLjctNTAuMSA4OC4yLTMuNSA2LjItNy43IDkuMS0xMi42IDkuMXptMjE5LjctMjE0LjFMMjU3LjMgMjg2Ljh2LjJsNjUuNSAxMTljMi44IDUuMS4xIDEwLjEtNiAxMC4xaC00Ni42Yy01LjUgMC05LjctMi45LTEyLjktOC43bC02Ni0xMjAuM2MyLjMtNC4xIDM2LjgtNjQuOSAxMDMuNC0xODIuMyAzLjMtNS44IDcuNC04LjcgMTIuNS04LjdoNDYuOWM1LjctLjEgOC44IDQuNyA2IDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Mi43IDIxMGMtMS44IDMuMy0yNS4yIDQ0LjQtNzAuMSAxMjMuNS00LjkgOC4zLTEwLjggMTIuNS0xNy43IDEyLjVIOS44Yy03LjcgMC0xMi4xLTcuNS04LjUtMTQuNGw2OS0xMjEuM2MuMiAwIC4yLS4xIDAtLjNsLTQzLjktNzUuNmMtNC4zLTcuOC4zLTE0LjEgOC41LTE0LjFIMTAwYzcuMyAwIDEzLjMgNC4xIDE4IDEyLjJsNDQuNyA3Ny41ek0zODIuNiA0Ni4xbC0xNDQgMjUzdi4zTDMzMC4yIDQ2NmMzLjkgNy4xLjIgMTQuMS04LjUgMTQuMWgtNjUuMmMtNy42IDAtMTMuNi00LTE4LTEyLjJsLTkyLjQtMTY4LjVjMy4zLTUuOCA1MS41LTkwLjggMTQ0LjgtMjU1LjIgNC42LTguMSAxMC40LTEyLjIgMTcuNS0xMi4yaDY1LjdjOCAwIDEyLjMgNi43IDguNSAxNC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZQ29tYmluYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzJ2NDQ4SDBWMzJoNDQ4ek0yMzYgMjg3LjVMMzEzLjUgMTQyaC0zMi43TDIzNSAyMzNjLTQuNyA5LjMtOSAxOC4zLTEyLjggMjYuOEwyMTAgMjMzbC00NS4yLTkxaC0zNWw3Ni43IDE0My44djk0LjVIMjM2di05Mi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYWhvbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjMuNjksMTQxLjA2LDE2NywyODQuMjMsMTExLDE0MS4wNkgxNC45M0wxMjAuNzYsMzkwLjE5LDgyLjE5LDQ4MGg5NC4xN0wzMTcuMjcsMTQxLjA2Wm0xMDUuNCwxMzUuNzlhNTguMjIsNTguMjIsMCwxLDAsNTguMjIsNTguMjJBNTguMjIsNTguMjIsMCwwLDAsMzI5LjA5LDI3Ni44NVpNMzk0LjY1LDMybC05MywyMjMuNDdINDA2LjQ0TDQ5OS4wNywzMlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFtbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMS43OCAxNTIuMTdBMjMuMDYgMjMuMDYgMCAwIDAgNDAwLjkgMTEyYy0uODMuNDMtMS43MS45LTIuNjMgMS40LTE1LjI1IDguNC0xMTguMzMgODAuNjItMTA2LjY5IDg4Ljc3czgyLjA0LTIzLjYxIDEzMC4yLTUwem0wIDIxNy4xN2MtNDguMTYtMjYuMzgtMTE4LjY0LTU4LjEtMTMwLjItNTBzOTEuNDIgODAuMzUgMTA2LjY5IDg4Ljc0Yy45Mi41MSAxLjggMSAyLjYzIDEuNDFhMjMuMDcgMjMuMDcgMCAwIDAgMjAuODgtNDAuMTV6TTQ2NC4yMSAyMzdjLS45NSAwLTEuOTUtLjA2LTMtLjA2LTE3LjQgMC0xNDIuNTIgMTMuNzYtMTM2LjI0IDI2LjUxczgzLjMgMTguNzQgMTM4LjIxIDE4Ljc2YTIzIDIzIDAgMCAwIDEtNDUuMjF6TTMxIDk2LjY1YTI0Ljg4IDI0Ljg4IDAgMCAxIDQ2LjE0LTE4LjRsODEgMjA1LjA2aDEuMjFsNzctMjAzLjUzYTIzLjUyIDIzLjUyIDAgMCAxIDQ0LjQ1IDE1LjI3TDE3MS4yIDM2OC40NEMxNTIuNjUgNDE1LjY2IDEzNC4wOCA0NDggNzcuOTEgNDQ4YTEzOS42NyAxMzkuNjcgMCAwIDEtMjMuODEtMS45NSAyMS4zMSAyMS4zMSAwIDAgMSA2LjktNDEuNzdjLjY2LjA2IDEwLjkxLjY2IDEzLjg2LjY2IDMwLjQ3IDAgNDMuNzQtMTguOTQgNTguMDctNTkuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbmRleEludGVybmF0aW9uYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI5LjUgNTEyVjM0NS45TDE4LjUgNDhoNTUuOGw4MS44IDIyOS43TDI1MC4yIDBoNTEuM0wxODAuOCAzNDcuOFY1MTJoLTUxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbmRleCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuMSAzMTUuOEw2NS43IDUxMkgybDk2LTIwOS44Yy00NS4xLTIyLjktNzUuMi02NC40LTc1LjItMTQxLjFDMjIuNyA1My43IDkwLjggMCAxNzEuNyAwSDI1NHY1MTJoLTU1LjFWMzE1LjhoLTQ1Ljh6bTQ1LjgtMjY5LjNoLTI5LjRjLTQ0LjQgMC04Ny40IDI5LjQtODcuNCAxMTQuNiAwIDgyLjMgMzkuNCAxMDguOCA4Ny40IDEwOC44aDI5LjRWNDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTMuOSAzNDUuMmMtMzkgOS4zLTQ4LjQgMzIuMS0xMDQgNDcuNCAwIDAtMi43IDQtMTAuNCA1LjgtMTMuNCAzLjMtNjMuOSA2LTY4LjUgNi4xLTEyLjQuMS0xOS45LTMuMi0yMi04LjItNi40LTE1LjMgOS4yLTIyIDkuMi0yMi04LjEtNS05LTkuOS05LjgtOC4xLTIuNCA1LjgtMy42IDIwLjEtMTAuMSAyNi41LTguOCA4LjktMjUuNSA1LjktMzUuMy44LTEwLjgtNS43LjgtMTkuMi44LTE5LjJzLTUuOCAzLjQtMTAuNS0zLjZjLTYtOS4zLTE3LjEtMzcuMyAxMS41LTYyLTEuMy0xMC4xLTQuNi01My43IDQwLjYtODUuNiAwIDAtMjAuNi0yMi44LTEyLjktNDMuMyA1LTEzLjQgNy0xMy4zIDguNi0xMy45IDUuNy0yLjIgMTEuMy00LjYgMTUuNC05LjEgMjAuNi0yMi4yIDQ2LjgtMTggNDYuOC0xOHMxMi40LTM3LjggMjMuOS0zMC40YzMuNSAyLjMgMTYuMyAzMC42IDE2LjMgMzAuNnMxMy42LTcuOSAxNS4xLTVjOC4yIDE2IDkuMiA0Ni41IDUuNiA2NS4xLTYuMSAzMC42LTIxLjQgNDcuMS0yNy42IDU3LjUtMS40IDIuNCAxNi41IDEwIDI3LjggNDEuMyAxMC40IDI4LjYgMS4xIDUyLjcgMi44IDU1LjMuOCAxLjQgMTMuNy44IDM2LjQtMTMuMiAxMi44LTcuOSAyOC4xLTE2LjkgNDUuNC0xNyAxNi43LS41IDE3LjYgMTkuMiA0LjkgMjIuMnpNNDk2IDI1NmMwIDEzNi45LTExMS4xIDI0OC0yNDggMjQ4UzAgMzkyLjkgMCAyNTYgMTExLjEgOCAyNDggOHMyNDggMTExLjEgMjQ4IDI0OHptLTc5LjMgNzUuMmMtMS43LTEzLjYtMTMuMi0yMy0yOC0yMi44LTIyIC4zLTQwLjUgMTEuNy01Mi44IDE5LjItNC44IDMtOC45IDUuMi0xMi40IDYuOCAzLjEtNDQuNS0yMi41LTczLjEtMjguNy03OS40IDcuOC0xMS4zIDE4LjQtMjcuOCAyMy40LTUzLjIgNC4zLTIxLjcgMy01NS41LTYuOS03NC41LTEuNi0zLjEtNy40LTExLjItMjEtNy40LTkuNy0yMC0xMy0yMi4xLTE1LjYtMjMuOC0xLjEtLjctMjMuNi0xNi40LTQxLjQgMjgtMTIuMi45LTMxLjMgNS4zLTQ3LjUgMjIuOC0yIDIuMi01LjkgMy44LTEwLjEgNS40aC4xYy04LjQgMy0xMi4zIDkuOS0xNi45IDIyLjMtNi41IDE3LjQuMiAzNC42IDYuOCA0NS43LTE3LjggMTUuOS0zNyAzOS44LTM1LjcgODIuNS0zNCAzNi0xMS44IDczLTUuNiA3OS42LTEuNiAxMS4xIDMuNyAxOS40IDEyIDIzLjggMTIuNiA2LjcgMzAuMyA5LjYgNDMuOSAyLjggNC45IDUuMiAxMy44IDEwLjEgMzAgMTAuMSA2LjggMCA1OC0yLjkgNzIuNi02LjUgNi44LTEuNiAxMS41LTQuNSAxNC42LTcuMSA5LjgtMy4xIDM2LjgtMTIuMyA2Mi4yLTI4LjcgMTgtMTEuNyAyNC4yLTE0LjIgMzcuNi0xNy40IDEyLjktMy4yIDIxLTE1LjEgMTkuNC0yOC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZZWxwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjkgMjQwLjMybDk5LjYyIDQ4LjYxYzE5LjIgOS40IDE2LjIgMzcuNTEtNC41IDQyLjcxTDMwLjUgMzU4LjQ1YTIyLjc5IDIyLjc5IDAgMCAxLTI4LjIxLTE5LjYgMTk3LjE2IDE5Ny4xNiAwIDAgMSA5LTg1LjMyIDIyLjggMjIuOCAwIDAgMSAzMS42MS0xMy4yMXptNDQgMjM5LjI1YTE5OS40NSAxOTkuNDUgMCAwIDAgNzkuNDIgMzIuMTFBMjIuNzggMjIuNzggMCAwIDAgMTkyLjk0IDQ5MGwzLjktMTEwLjgyYy43LTIxLjMtMjUuNS0zMS45MS0zOS44MS0xNi4xbC03NC4yMSA4Mi40YTIyLjgyIDIyLjgyIDAgMCAwIDQuMDkgMzQuMDl6bTE0NS4zNC0xMDkuOTJsNTguODEgOTRhMjIuOTMgMjIuOTMgMCAwIDAgMzQgNS41IDE5OC4zNiAxOTguMzYgMCAwIDAgNTIuNzEtNjcuNjFBMjMgMjMgMCAwIDAgMzY0LjE3IDM3MGwtMTA1LjQyLTM0LjI2Yy0yMC4zMS02LjUtMzcuODEgMTUuOC0yNi41MSAzMy45MXptMTQ4LjMzLTEzMi4yM2ExOTcuNDQgMTk3LjQ0IDAgMCAwLTUwLjQxLTY5LjMxIDIyLjg1IDIyLjg1IDAgMCAwLTM0IDQuNGwtNjIgOTEuOTJjLTExLjkgMTcuNyA0LjcgNDAuNjEgMjUuMiAzNC43MUwzNjYgMjY4LjYzYTIzIDIzIDAgMCAwIDE0LjYxLTMxLjIxek02Mi4xMSAzMC4xOGEyMi44NiAyMi44NiAwIDAgMC05LjkgMzJsMTA0LjEyIDE4MC40NGMxMS43IDIwLjIgNDIuNjEgMTEuOSA0Mi42MS0xMS40VjIyLjg4YTIyLjY3IDIyLjY3IDAgMCAwLTI0LjUtMjIuOCAzMjAuMzcgMzIwLjM3IDAgMCAwLTExMi4zMyAzMC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZb2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS4zIDc2aDE4NmwtNyAxOC45aC0xNzljLTM5LjcgMC03MS45IDMxLjYtNzEuOSA3MC4zdjIwNS40YzAgMzUuNCAyNC45IDcwLjMgODQgNzAuM1Y0NjBIOTEuM0M0MS4yIDQ2MCAwIDQxOS44IDAgMzcwLjVWMTY1LjJDMCAxMTUuOSA0MC43IDc2IDkxLjMgNzZ6bTIyOS4xLTU2aDY2LjVDMjQzLjEgMzk4LjEgMjQxLjIgNDE4LjkgMjAyLjIgNDU5LjNjLTIwLjggMjEuNi00OS4zIDMxLjctNzguMyAzMi43di01MS4xYzQ5LjItNy43IDY0LjYtNDkuOSA2NC42LTc1LjMgMC0yMC4xLjYtMTIuNi04Mi4xLTIyMy4yaDYxLjRMMjE4LjIgMjk5IDMyMC40IDIwek00NDggMTYxLjVWNDYwSDIzNGM2LjYtOS42IDEwLjctMTYuMyAxMi4xLTE5LjRoMTgyLjVWMTYxLjVjMC0zMi41LTE3LjEtNTEuOS00OC4yLTYyLjlsNi43LTE3LjZjNDEuNyAxMy42IDYwLjkgNDMuMSA2MC45IDgwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlvdXR1YmVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg2LjggMjAyLjFsOTUuMiA1NC4xLTk1LjIgNTQuMVYyMDIuMXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDIgMTc2LjNzMC01OS42LTcuNi04OC4yYy00LjItMTUuOC0xNi41LTI4LjItMzIuMi0zMi40QzMzNy45IDEyOCAyMjQgMTI4IDIyNCAxMjhzLTExMy45IDAtMTQyLjIgNy43Yy0xNS43IDQuMi0yOCAxNi42LTMyLjIgMzIuNC03LjYgMjguNS03LjYgODguMi03LjYgODguMnMwIDU5LjYgNy42IDg4LjJjNC4yIDE1LjggMTYuNSAyNy43IDMyLjIgMzEuOUMxMTAuMSAzODQgMjI0IDM4NCAyMjQgMzg0czExMy45IDAgMTQyLjItNy43YzE1LjctNC4yIDI4LTE2LjEgMzIuMi0zMS45IDcuNi0yOC41IDcuNi04OC4xIDcuNi04OC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZb3V0dWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0OS42NTUgMTI0LjA4M2MtNi4yODEtMjMuNjUtMjQuNzg3LTQyLjI3Ni00OC4yODQtNDguNTk3QzQ1OC43ODEgNjQgMjg4IDY0IDI4OCA2NFMxMTcuMjIgNjQgNzQuNjI5IDc1LjQ4NmMtMjMuNDk3IDYuMzIyLTQyLjAwMyAyNC45NDctNDguMjg0IDQ4LjU5Ny0xMS40MTIgNDIuODY3LTExLjQxMiAxMzIuMzA1LTExLjQxMiAxMzIuMzA1czAgODkuNDM4IDExLjQxMiAxMzIuMzA1YzYuMjgxIDIzLjY1IDI0Ljc4NyA0MS41IDQ4LjI4NCA0Ny44MjFDMTE3LjIyIDQ0OCAyODggNDQ4IDI4OCA0NDhzMTcwLjc4IDAgMjEzLjM3MS0xMS40ODZjMjMuNDk3LTYuMzIxIDQyLjAwMy0yNC4xNzEgNDguMjg0LTQ3LjgyMSAxMS40MTItNDIuODY3IDExLjQxMi0xMzIuMzA1IDExLjQxMi0xMzIuMzA1czAtODkuNDM4LTExLjQxMi0xMzIuMzA1em0tMzE3LjUxIDIxMy41MDhWMTc1LjE4NWwxNDIuNzM5IDgxLjIwNS0xNDIuNzM5IDgxLjIwMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWmhpaHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcwLjU0IDE0OC4xM3YyMTcuNTRsMjMuNDMuMDEgNy43MSAyNi4zNyA0Mi4wMS0yNi4zN2g0OS41M1YxNDguMTNIMTcwLjU0em05Ny43NSAxOTMuOTNoLTI3Ljk0bC0yNy45IDE3LjUxLTUuMDgtMTcuNDctMTEuOS0uMDRWMTcxLjc1aDcyLjgydjE3MC4zMXptLTExOC40Ni05NC4zOUg5Ny41YzEuNzQtMjcuMSAyLjItNTEuNTkgMi4yLTczLjQ2aDUxLjE2czEuOTctMjIuNTYtOC41OC0yMi4zMWgtODguNWMzLjQ5LTEzLjEyIDcuODctMjYuNjYgMTMuMTItNDAuNjcgMCAwLTI0LjA3IDAtMzIuMjcgMjEuNTctMy4zOSA4LjktMTMuMjEgNDMuMTQtMzAuNyA3OC4xMiA1Ljg5LS42NCAyNS4zNy0xLjE4IDM2Ljg0LTIyLjIxIDIuMTEtNS44OSAyLjUxLTYuNjYgNS4xNC0xNC41M2gyOC44N2MwIDEwLjUtMS4yIDY2Ljg4LTEuNjggNzMuNDRIMjAuODNjLTExLjc0IDAtMTUuNTYgMjMuNjItMTUuNTYgMjMuNjJoNjUuNThDNjYuNDUgMzIxLjEgNDIuODMgMzYzLjEyIDAgMzk2LjM0YzIwLjQ5IDUuODUgNDAuOTEtLjkzIDUxLTkuOSAwIDAgMjIuOTgtMjAuOSAzNS41OS02OS4yNWw1My45NiA2NC45NHM3LjkxLTI2Ljg5LTEuMjQtMzkuOTljLTcuNTgtOC45Mi0yOC4wNi0zMy4wNi0zNi43OS00MS44MUw4Ny45IDMxMS45NWM0LjM2LTEzLjk4IDYuOTktMjcuNTUgNy44Ny00MC42N2g2MS42NXMtLjA5LTIzLjYyLTcuNTktMjMuNjJ2LjAxem00MTIuMDItMS42YzIwLjgzLTI1LjY0IDQ0Ljk4LTU4LjU3IDQ0Ljk4LTU4LjU3cy0xOC42NS0xNC44LTI3LjM4LTQuMDZjLTYgOC4xNS0zNi44MyA0OC4yLTM2LjgzIDQ4LjJsMTkuMjMgMTQuNDN6bS0xNTAuMDktNTkuMDljLTkuMDEtOC4yNS0yNS45MSAyLjEzLTI1LjkxIDIuMTNzMzkuNTIgNTUuMDQgNDEuMTIgNTcuNDVsMTkuNDYtMTMuNzNzLTI1LjY3LTM3LjYxLTM0LjY2LTQ1Ljg2aC0uMDF6TTY0MCAyNTguMzVjLTE5Ljc4IDAtMTMwLjkxLjkzLTEzMS4wNi45M3YtMTAxYzQuODEgMCAxMi40Mi0uNCAyMi44NS0xLjIgNDAuODgtMi40MSA3MC4xMy00IDg3Ljc3LTQuODEgMCAwIDEyLjIyLTI3LjE5LS41OS0zMy40NC0zLjA3LTEuMTgtMjMuMTcgNC41OC0yMy4xNyA0LjU4cy0xNjUuMjIgMTYuNDktMjMyLjM2IDE4LjA1YzEuNiA4LjgyIDcuNjIgMTcuMDggMTUuNzggMTkuNTUgMTMuMzEgMy40OCAyMi42OSAxLjcgNDkuMTUuODkgMjQuODMtMS42IDQzLjY4LTIuNDMgNTYuNTEtMi40M3Y5OS44MUgzNTEuNDFzMi44MiAyMi4zMSAyNS41MSAyMi44NWgxMDcuOTR2NzAuOTJjMCAxMy45Ny0xMS4xOSAyMS45OS0yNC40OCAyMS4xMi0xNC4wOC4xMS0yNi4wOC0xLjE1LTQxLjY5LTEuODEgMS45OSAzLjk3IDYuMzMgMTQuMzkgMTkuMzEgMjEuODQgOS44OCA0LjgxIDE2LjE3IDYuNTcgMjYuMDIgNi41NyAyOS41NiAwIDQ1LjY3LTE3LjI4IDQ0Ljg5LTQ1LjMxdi03My4zMmgxMjIuMzZjOS42OCAwIDguNy0yMy43OCA4LjctMjMuNzhsLjAzLS4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU3LjUyIDI3MmgzNi45NkwxNzYgMjE4Ljc4IDE1Ny41MiAyNzJ6TTM1MiAyNTZjLTEzLjIzIDAtMjQgMTAuNzctMjQgMjRzMTAuNzcgMjQgMjQgMjQgMjQtMTAuNzcgMjQtMjQtMTAuNzctMjQtMjQtMjR6TTQ2NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYyODhjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMjUwLjU4IDM1MmgtMTYuOTRjLTYuODEgMC0xMi44OC00LjMyLTE1LjEyLTEwLjc1TDIxMS4xNSAzMjBoLTcwLjI5bC03LjM4IDIxLjI1QTE2IDE2IDAgMCAxIDExOC4zNiAzNTJoLTE2Ljk0Yy0xMS4wMSAwLTE4LjczLTEwLjg1LTE1LjEyLTIxLjI1TDE0MCAxNzYuMTJBMjMuOTk1IDIzLjk5NSAwIDAgMSAxNjIuNjcgMTYwaDI2LjY2QTIzLjk5IDIzLjk5IDAgMCAxIDIxMiAxNzYuMTNsNTMuNjkgMTU0LjYyYzMuNjEgMTAuNC00LjExIDIxLjI1LTE1LjExIDIxLjI1ek00MjQgMzM2YzAgOC44NC03LjE2IDE2LTE2IDE2aC0xNmMtNC44NSAwLTkuMDQtMi4yNy0xMS45OC01LjY4LTguNjIgMy42Ni0xOC4wOSA1LjY4LTI4LjAyIDUuNjgtMzkuNyAwLTcyLTMyLjMtNzItNzJzMzIuMy03MiA3Mi03MmM4LjQ2IDAgMTYuNDYgMS43MyAyNCA0LjQyVjE3NmMwLTguODQgNy4xNi0xNiAxNi0xNmgxNmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkZHJlc3NCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNiAxNjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwVjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMzIwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00OGgyMGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjB2LTY0aDIwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMHYtNjRoMjB6bS0yMjgtMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjQtNjQtMjguNy02NC02NCAyOC43LTY0IDY0LTY0em0xMTIgMjM2LjhjMCAxMC42LTEwIDE5LjItMjIuNCAxOS4ySDExOC40QzEwNiAzODQgOTYgMzc1LjQgOTYgMzY0Ljh2LTE5LjJjMC0zMS44IDMwLjEtNTcuNiA2Ny4yLTU3LjZoNWMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg1YzM3LjEgMCA2Ny4yIDI1LjggNjcuMiA1Ny42djE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkZHJlc3NDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0zNTIgOTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjQtNjQtMjguNy02NC02NCAyOC43LTY0IDY0LTY0em0xMTIgMjM2LjhjMCAxMC42LTEwIDE5LjItMjIuNCAxOS4ySDg2LjRDNzQgMzg0IDY0IDM3NS40IDY0IDM2NC44di0xOS4yYzAtMzEuOCAzMC4xLTU3LjYgNjcuMi01Ny42aDVjMTIuMyA1LjEgMjUuNyA4IDM5LjggOHMyNy42LTIuOSAzOS44LThoNWMzNy4xIDAgNjcuMiAyNS44IDY3LjIgNTcuNnYxOS4yek01MTIgMzEyYzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtNjRjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnptMC02NGMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZGp1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNTZjMCAxMzYuOTY2IDExMS4wMzMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMzQgMjQ4LTI0OFMzOTIuOTY2IDggMjU2IDggOCAxMTkuMDMzIDggMjU2em0yNDggMTg0VjcyYzEwMS43MDUgMCAxODQgODIuMzExIDE4NCAxODQgMCAxMDEuNzA1LTgyLjMxMSAxODQtMTg0IDE4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWlyRnJlc2hlbmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxNjBIOTZDNDMgMTYwIDAgMjAzIDAgMjU2VjQ4MEMwIDQ5Ny42MjUgMTQuMzc1IDUxMiAzMiA1MTJIMjg4QzMwNS42MjUgNTEyIDMyMCA0OTcuNjI1IDMyMCA0ODBWMjU2QzMyMCAyMDMgMjc3IDE2MCAyMjQgMTYwWk0xNjAgNDE2QzExNS44NzUgNDE2IDgwIDM4MC4xMjUgODAgMzM2UzExNS44NzUgMjU2IDE2MCAyNTZTMjQwIDI5MS44NzUgMjQwIDMzNlMyMDQuMTI1IDQxNiAxNjAgNDE2Wk0yMjQgMzJDMjI0IDE0LjM3NSAyMDkuNjI1IDAgMTkyIDBIMTI4QzExMC4zNzUgMCA5NiAxNC4zNzUgOTYgMzJWMTI4SDIyNFYzMlpNMzgxLjc4MSA1MS41NzhDMzgzIDUwLjk2OSAzODQgNDkuMzU5IDM4NCA0OEMzODQgNDYuNjI1IDM4MyA0NS4wMzEgMzgxLjc4MSA0NC40MjJMMzUyIDMyTDMzOS41NjIgMi4yMTlDMzM4Ljk2OSAxIDMzNy4zNzUgMCAzMzYgMFMzMzMuMDMxIDEgMzMyLjQwNiAyLjIxOUwzMjAgMzJMMjkwLjIxOSA0NC40MjJDMjg5IDQ1LjAzMSAyODggNDYuNjI1IDI4OCA0OEMyODggNDkuMzU5IDI4OSA1MC45NjkgMjkwLjIxOSA1MS41NzhMMzIwIDY0TDMzMi40MDYgOTMuNzgxQzMzMy4wMzEgOTUgMzM0LjYyNSA5NiAzMzYgOTZTMzM4Ljk2OSA5NSAzMzkuNTYyIDkzLjc4MUwzNTIgNjRMMzgxLjc4MSA1MS41NzhaTTQ0OCA2NEw0NjAuNDA2IDkzLjc4MUM0NjEuMDMxIDk1IDQ2Mi42MjUgOTYgNDY0IDk2UzQ2Ni45NjkgOTUgNDY3LjU2MiA5My43ODFMNDgwIDY0TDUwOS43ODEgNTEuNTc4QzUxMSA1MC45NjkgNTEyIDQ5LjM1OSA1MTIgNDhDNTEyIDQ2LjYyNSA1MTEgNDUuMDMxIDUwOS43ODEgNDQuNDIyTDQ4MCAzMkw0NjcuNTYyIDIuMjE5QzQ2Ni45NjkgMSA0NjUuMzc1IDAgNDY0IDBTNDYxLjAzMSAxIDQ2MC40MDYgMi4yMTlMNDQ4IDMyTDQxOC4yMTkgNDQuNDIyQzQxNyA0NS4wMzEgNDE2IDQ2LjYyNSA0MTYgNDhDNDE2IDQ5LjM1OSA0MTcgNTAuOTY5IDQxOC4yMTkgNTEuNTc4TDQ0OCA2NFpNNDgwIDIyNEw0NjcuNTYyIDE5NC4yMTlDNDY2Ljk2OSAxOTMgNDY1LjM3NSAxOTIgNDY0IDE5MlM0NjEuMDMxIDE5MyA0NjAuNDA2IDE5NC4yMTlMNDQ4IDIyNEw0MTguMjE5IDIzNi40MjJDNDE3IDIzNy4wMzEgNDE2IDIzOC42MjUgNDE2IDI0MEM0MTYgMjQxLjM1OSA0MTcgMjQyLjk2OSA0MTguMjE5IDI0My41NzhMNDQ4IDI1Nkw0NjAuNDA2IDI4NS43ODFDNDYxLjAzMSAyODcgNDYyLjYyNSAyODggNDY0IDI4OFM0NjYuOTY5IDI4NyA0NjcuNTYyIDI4NS43ODFMNDgwIDI1Nkw1MDkuNzgxIDI0My41NzhDNTExIDI0Mi45NjkgNTEyIDI0MS4zNTkgNTEyIDI0MEM1MTIgMjM4LjYyNSA1MTEgMjM3LjAzMSA1MDkuNzgxIDIzNi40MjJMNDgwIDIyNFpNNDQ1Ljc4MSAxNDcuNTc4QzQ0NyAxNDYuOTY5IDQ0OCAxNDUuMzU5IDQ0OCAxNDRDNDQ4IDE0Mi42MjUgNDQ3IDE0MS4wMzEgNDQ1Ljc4MSAxNDAuNDIyTDQxNiAxMjhMNDAzLjU2MiA5OC4yMTlDNDAyLjk2OSA5NyA0MDEuMzc1IDk2IDQwMCA5NlMzOTcuMDMxIDk3IDM5Ni40MDYgOTguMjE5TDM4NCAxMjhMMzU0LjIxOSAxNDAuNDIyQzM1MyAxNDEuMDMxIDM1MiAxNDIuNjI1IDM1MiAxNDRDMzUyIDE0NS4zNTkgMzUzIDE0Ni45NjkgMzU0LjIxOSAxNDcuNTc4TDM4NCAxNjBMMzk2LjQwNiAxODkuNzgxQzM5Ny4wMzEgMTkxIDM5OC42MjUgMTkyIDQwMCAxOTJTNDAyLjk2OSAxOTEgNDAzLjU2MiAxODkuNzgxTDQxNiAxNjBMNDQ1Ljc4MSAxNDcuNTc4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGlnbkNlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgMTYwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMjU2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTEwOC4xIDk2aDIzMS44MUExMi4wOSAxMi4wOSAwIDAgMCAzNTIgODMuOVY0NC4wOUExMi4wOSAxMi4wOSAwIDAgMCAzMzkuOTEgMzJIMTA4LjFBMTIuMDkgMTIuMDkgMCAwIDAgOTYgNDQuMDlWODMuOUExMi4xIDEyLjEgMCAwIDAgMTA4LjEgOTZ6bTIzMS44MSAyNTZBMTIuMDkgMTIuMDkgMCAwIDAgMzUyIDMzOS45di0zOS44MUExMi4wOSAxMi4wOSAwIDAgMCAzMzkuOTEgMjg4SDEwOC4xQTEyLjA5IDEyLjA5IDAgMCAwIDk2IDMwMC4wOXYzOS44MWExMi4xIDEyLjEgMCAwIDAgMTIuMSAxMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGlnbkp1c3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDQxNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjgzIDM1MmgyNjIuMzRBMTIuODIgMTIuODIgMCAwIDAgMjg4IDMzOS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjc1LjE3IDI4OEgxMi44M0ExMi44MiAxMi44MiAwIDAgMCAwIDMwMC44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAxMi44MyAzNTJ6bTAtMjU2aDI2Mi4zNEExMi44MiAxMi44MiAwIDAgMCAyODggODMuMTdWNDQuODNBMTIuODIgMTIuODIgMCAwIDAgMjc1LjE3IDMySDEyLjgzQTEyLjgyIDEyLjgyIDAgMCAwIDAgNDQuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMTIuODMgOTZ6TTQzMiAxNjBIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMCAyNTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyMjRoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptNDE2IDE5MkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0zLjE3LTM4NEgxNzIuODNBMTIuODIgMTIuODIgMCAwIDAgMTYwIDQ0LjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDE3Mi44MyA5NmgyNjIuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDgzLjE3VjQ0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAzMnptMCAyNTZIMTcyLjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE2MCAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMTcyLjgzIDM1MmgyNjIuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDMzOS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxsZXJnaWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAxMTJjLTE3LjYgMC0zMiAxNC40LTMyIDMydjcyYzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOFY2NGMwLTE3LjYtMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnYxNTJjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjMyYzAtMTcuNi0xNC40LTMyLTMyLTMycy0zMiAxNC40LTMyIDMydjE4NGMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LThWNjRjMC0xNy42LTE0LjQtMzItMzItMzJTOTYgNDYuNCA5NiA2NHYyNDFsLTIzLjYtMzIuNWMtMTMtMTcuOS0zOC0yMS44LTU1LjktOC44cy0yMS44IDM4LTguOCA1NS45bDEyNS42IDE3Mi43YzkgMTIuNCAyMy41IDE5LjggMzguOCAxOS44aDE5Ny42YzIyLjMgMCA0MS42LTE1LjMgNDYuNy0zN2wyNi41LTExMi43YzMuMi0xMy43IDQuOS0yOC4zIDUuMS00Mi4zVjE0NGMwLTE3LjYtMTQuNC0zMi0zMi0zMnpNMTc2IDQxNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTY0IDEyOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTY0IDMyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTMyIDY0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTMyLTEyOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWJ1bGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDM1MmgtMTZWMjQzLjljMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOUw0OTQgMTEwLjFjLTktOS0yMS4yLTE0LjEtMzMuOS0xNC4xSDQxNlY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh2MzIwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDE2YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoMTI4YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTE2MCA0NjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0xNDQtMjQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHY0OHptMTc2IDI0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTgwLTIwOEg0MTZWMTQ0aDQ0LjFsOTkuOSA5OS45VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1lcmljYW5TaWduTGFuZ3VhZ2VJbnRlcnByZXRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkwLjU0NyAxODkuMDM5Yy0yMC4yOTUtMTAuMTQ5LTQ0LjE0Ny0xMS4xOTktNjQuNzM5LTMuODkgNDIuNjA2IDAgNzEuMjA4IDIwLjQ3NSA4NS41NzggNTAuNTc2IDguNTc2IDE3Ljg5OS01LjE0OCAzOC4wNzEtMjMuNjE3IDM4LjA3MSAxOC40MjkgMCAzMi4yMTEgMjAuMTM2IDIzLjYxNyAzOC4wNzEtMTQuNzI1IDMwLjg0Ni00Ni4xMjMgNTAuODU0LTgwLjI5OCA1MC44NTQtLjU1NyAwLTk0LjQ3MS04LjYxNS05NC40NzEtOC42MTVsLTY2LjQwNiAzMy4zNDdjLTkuMzg0IDQuNjkzLTE5LjgxNS4zNzktMjMuODk1LTcuNzgxTDEuODYgMjkwLjc0N2MtNC4xNjctOC42MTUtMS4xMTEtMTguODk3IDYuOTQ2LTIzLjYyMWw1OC4wNzItMzMuMDY5TDEwOCAxNTkuODYxYzYuMzktNTcuMjQ1IDM0LjczMS0xMDkuNzY3IDc5Ljc0My0xNDYuNzI2IDExLjM5MS05LjQ0OCAyOC4zNDEtNy43ODEgMzcuNTEgMy42MTMgOS40NDYgMTEuMzk0IDcuNzggMjguMDY3LTMuNjEyIDM3LjUxNi0xMi41MDMgMTAuNTU5LTIzLjYxOCAyMi41MDktMzIuNTA5IDM1LjU3IDIxLjY3Mi0xNC43MjkgNDYuNjc5LTI0LjczMiA3NC4xODYtMjguMDY3IDE0LjcyNS0xLjk0NSAyOC4wNjMgOC4zMzYgMjkuNzMgMjMuMDY1IDEuOTQ1IDE0LjcyOC04LjMzNiAyOC4wNjctMjMuMDYyIDI5LjczNC0xNi4xMTYgMS45NDUtMzEuMTIgNy41MDMtNDQuMTc4IDE1LjI4NCAyNi4xMTQtNS43MTMgNTguNzEyLTMuMTM4IDg4LjA3OSAxMS4xMTUgMTMuMzM2IDYuNjY5IDE4Ljg5MyAyMi41MDkgMTIuMjI0IDM1Ljg0OC02LjM4OSAxMy4wNi0yMi41MDQgMTguNjE3LTM1LjU2NCAxMi4yMjZ6bS0yNy4yMjkgNjkuNDcyYy02LjExMi0xMi41MDUtMTguMzM4LTIwLjI4Ni0zMi4yMzEtMjAuMjg2YTM1LjQ2IDM1LjQ2IDAgMCAwLTM1LjU2NSAzNS41N2MwIDIxLjQyOCAxNy44MDggMzUuNTcgMzUuNTY1IDM1LjU3IDEzLjg5MyAwIDI2LjExOS03Ljc4MSAzMi4yMzEtMjAuMjg2IDQuNDQ2LTkuNDQ5IDEzLjYxNC0xNS4wMDYgMjMuMzM5LTE1LjI4NC05LjcyNS0uMjc3LTE4Ljg5My01LjgzNS0yMy4zMzktMTUuMjg0em0zNzQuODIxLTM3LjIzN2M0LjE2OCA4LjYxNSAxLjExMSAxOC44OTctNi45NDYgMjMuNjIxbC01OC4wNzEgMzMuMDY5TDUzMiAzNTIuMTZjLTYuMzkgNTcuMjQ1LTM0LjczMSAxMDkuNzY3LTc5Ljc0MyAxNDYuNzI2LTEwLjkzMiA5LjExMi0yNy43OTkgOC4xNDQtMzcuNTEtMy42MTMtOS40NDYtMTEuMzk0LTcuNzgtMjguMDY3IDMuNjEzLTM3LjUxNiAxMi41MDMtMTAuNTU5IDIzLjYxNy0yMi41MDkgMzIuNTA4LTM1LjU3LTIxLjY3MiAxNC43MjktNDYuNjc5IDI0LjczMi03NC4xODYgMjguMDY3LTEwLjAyMSAyLjUwNi0yNy41NTItNS42NDMtMjkuNzMtMjMuMDY1LTEuOTQ1LTE0LjcyOCA4LjMzNi0yOC4wNjcgMjMuMDYyLTI5LjczNCAxNi4xMTYtMS45NDYgMzEuMTItNy41MDMgNDQuMTc4LTE1LjI4NC0yNi4xMTQgNS43MTMtNTguNzEyIDMuMTM4LTg4LjA3OS0xMS4xMTUtMTMuMzM2LTYuNjY5LTE4Ljg5My0yMi41MDktMTIuMjI0LTM1Ljg0OCA2LjM4OS0xMy4wNjEgMjIuNTA1LTE4LjYxOSAzNS41NjUtMTIuMjI3IDIwLjI5NSAxMC4xNDkgNDQuMTQ3IDExLjE5OSA2NC43MzkgMy44OS00Mi42MDYgMC03MS4yMDgtMjAuNDc1LTg1LjU3OC01MC41NzYtOC41NzYtMTcuODk5IDUuMTQ4LTM4LjA3MSAyMy42MTctMzguMDcxLTE4LjQyOSAwLTMyLjIxMS0yMC4xMzYtMjMuNjE3LTM4LjA3MSAxNC4wMzMtMjkuMzk2IDQ0LjAzOS01MC44ODcgODEuOTY2LTUwLjg1NGw5Mi44MDMgOC42MTUgNjYuNDA2LTMzLjM0N2M5LjQwOC00LjcwNCAxOS44MjgtLjM1NCAyMy44OTQgNy43ODFsNDQuNDU1IDg4LjkyNnptLTIyOS4yMjctMTguNjE4Yy0xMy44OTMgMC0yNi4xMTkgNy43ODEtMzIuMjMxIDIwLjI4Ni00LjQ0NiA5LjQ0OS0xMy42MTQgMTUuMDA2LTIzLjMzOSAxNS4yODQgOS43MjUuMjc4IDE4Ljg5MyA1LjgzNiAyMy4zMzkgMTUuMjg0IDYuMTEyIDEyLjUwNSAxOC4zMzggMjAuMjg2IDMyLjIzMSAyMC4yODZhMzUuNDYgMzUuNDYgMCAwIDAgMzUuNTY1LTM1LjU3YzAtMjEuNDI5LTE3LjgwOC0zNS41Ny0zNS41NjUtMzUuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuY2hvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi45NzEgMzUyaDMyLjM5NEM2Ny4xNzIgNDU0LjczNSAxODEuOTQ0IDUxMiAyODggNTEyYzEwNi4yMjkgMCAyMjAuODUzLTU3LjM4IDI0Mi42MzUtMTYwaDMyLjM5NGMxMC42OTEgMCAxNi4wNDUtMTIuOTI2IDguNDg1LTIwLjQ4NWwtNjcuMDI5LTY3LjAyOWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwbC02Ny4wMjkgNjcuMDI5Yy03LjU2IDcuNTYtMi4yMDYgMjAuNDg1IDguNDg1IDIwLjQ4NWgzNS4xNDZjLTIwLjI5IDU0LjMxNy04NC45NjMgODYuNTg4LTE0NC4xMTcgOTQuMDE1VjI1Nmg1MmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC01MnYtNS40N2MzNy4yODEtMTMuMTc4IDYzLjk5NS00OC43MjUgNjQtOTAuNTE4QzM4NC4wMDUgNDMuNzcyIDM0MS42MDUuNzM4IDI4OS4zNy4wMSAyMzUuNzIzLS43MzkgMTkyIDQyLjUyNSAxOTIgOTZjMCA0MS43OTggMjYuNzE2IDc3LjM1IDY0IDkwLjUzVjE5MmgtNTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1MnYxOTAuMDE1Yy01OC45MzYtNy4zOTktMTIzLjgyLTM5LjY3OS0xNDQuMTE3LTk0LjAxNWgzNS4xNDZjMTAuNjkxIDAgMTYuMDQ1LTEyLjkyNiA4LjQ4NS0yMC40ODVsLTY3LjAyOS02Ny4wMjljLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw0LjQ4NSAzMzEuNTE1Qy0zLjA3NCAzMzkuMDc0IDIuMjggMzUyIDEyLjk3MSAzNTJ6TTI4OCA2NGMxNy42NDUgMCAzMiAxNC4zNTUgMzIgMzJzLTE0LjM1NSAzMi0zMiAzMi0zMi0xNC4zNTUtMzItMzIgMTQuMzU1LTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvdWJsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQzIDI1Ni4zTDcgMTIwLjNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDIyLjYtMjIuNmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw5Ni40IDk2LjQgOTYuNC05Ni40YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwTDMxMyA4Ni4zYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC0xMzYgMTM2Yy05LjQgOS41LTI0LjYgOS41LTM0IC4xem0zNCAxOTJsMTM2LTEzNmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMjIuNi0yMi42Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxNjAgMzUyLjFsLTk2LjQtOTYuNGMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAyNzguM2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMTM2IDEzNmM5LjQgOS41IDI0LjYgOS41IDM0IC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvdWJsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjcgMjM5bDEzNi0xMzZjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjIuNiAyMi42YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDMxOS45IDI1Nmw5Ni40IDk2LjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMzkzLjcgNDA5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMTM2LTEzNmMtOS41LTkuNC05LjUtMjQuNi0uMS0zNHptLTE5MiAzNGwxMzYgMTM2YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDIyLjYtMjIuNmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwxMjcuOSAyNTZsOTYuNC05Ni40YzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDIwMS43IDEwM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTEzNiAxMzZjLTkuNSA5LjQtOS41IDI0LjYtLjEgMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlRG91YmxlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjMgMjczbC0xMzYgMTM2Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjIuNi0yMi42Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw5Ni40LTk2LjQtOTYuNC05Ni40Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUw1NC4zIDEwM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxMzYgMTM2YzkuNSA5LjQgOS41IDI0LjYuMSAzNHptMTkyLTM0bC0xMzYtMTM2Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtMjIuNiAyMi42Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw5Ni40IDk2LjQtOTYuNCA5Ni40Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwyMi42IDIyLjZjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMTM2LTEzNmM5LjQtOS4yIDkuNC0yNC40IDAtMzMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVEb3VibGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcgMjU1LjdsMTM2IDEzNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMjIuNiAyMi42Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxNjAgMzUxLjlsLTk2LjQgOTYuNGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyA0MjUuN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMTM2LTEzNmM5LjQtOS41IDI0LjYtOS41IDM0LS4xem0tMzQtMTkyTDcgMTk5LjdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDIyLjYgMjIuNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw5Ni40LTk2LjQgOTYuNCA5Ni40YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDIyLjYtMjIuNmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMTM2LTEzNmMtOS4yLTkuNC0yNC40LTkuNC0zMy44IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDMgMzUyLjNMNyAyMTYuM2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMjIuNi0yMi42YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDk2LjQgOTYuNCA5Ni40LTk2LjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjIuNiAyMi42YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC0xMzYgMTM2Yy05LjIgOS40LTI0LjQgOS40LTMzLjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxLjcgMjM5bDEzNi0xMzZjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjIuNiAyMi42YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDEyNy45IDI1Nmw5Ni40IDk2LjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjAxLjcgNDA5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMTM2LTEzNmMtOS41LTkuNC05LjUtMjQuNi0uMS0zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQuMyAyNzNsLTEzNiAxMzZjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC0yMi42LTIyLjZjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDk2LjQtOTYuNC05Ni40LTk2LjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDU0LjMgMTAzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDEzNiAxMzZjOS41IDkuNCA5LjUgMjQuNi4xIDM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NyAxNTkuN2wxMzYgMTM2YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC0yMi42IDIyLjZjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDE2MCAyNTUuOWwtOTYuNCA5Ni40Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEw3IDMyOS43Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWwxMzYtMTM2YzkuNC05LjUgMjQuNi05LjUgMzQtLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyNDBjMC05LjMgNC4xLTE3LjUgMTAuNS0yMy40bC0zMS05LjNjLTguNS0yLjUtMTMuMy0xMS41LTEwLjctMTkuOSAyLjUtOC41IDExLjQtMTMuMiAxOS45LTEwLjdsODAgMjRjOC41IDIuNSAxMy4zIDExLjUgMTAuNyAxOS45LTIuMSA2LjktOC40IDExLjQtMTUuMyAxMS40LS41IDAtMS4xLS4yLTEuNy0uMi43IDIuNyAxLjcgNS4zIDEuNyA4LjIgMCAxNy43LTE0LjMgMzItMzIgMzJTMTM2IDI1Ny43IDEzNiAyNDB6bTE2OCAxNTQuMmMtMjcuOC0zMy40LTg0LjItMzMuNC0xMTIuMSAwLTEzLjUgMTYuMy0zOC4yLTQuMi0yNC42LTIwLjUgMjAtMjQgNDkuNC0zNy44IDgwLjYtMzcuOHM2MC42IDEzLjggODAuNiAzNy44YzEzLjggMTYuNS0xMS4xIDM2LjYtMjQuNSAyMC41em03Ni42LTE4Ni45bC0zMSA5LjNjNi4zIDUuOCAxMC41IDE0LjEgMTAuNSAyMy40IDAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtMi45LjktNS42IDEuNy04LjItLjYuMS0xLjEuMi0xLjcuMi02LjkgMC0xMy4yLTQuNS0xNS4zLTExLjQtMi41LTguNSAyLjMtMTcuNCAxMC43LTE5LjlsODAtMjRjOC40LTIuNSAxNy40IDIuMyAxOS45IDEwLjcgMi41IDguNS0yLjMgMTcuNC0xMC44IDE5Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFua2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDI1NmgtNDQuNjJDMjcyLjQ2IDIyMi4wMSAyODggMTgxLjY1IDI4OCAxNDQgMjg4IDU1LjYzIDIzMC42OSAwIDE2MCAwUzMyIDU1LjYzIDMyIDE0NGMwIDM3LjY1IDE1LjU0IDc4LjAxIDM2LjYyIDExMkgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHYzMmMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDk2djE1MmMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDMyYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjRWMzM2aDk2YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTMyYzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTE2MCA4MGMyOS42MSAwIDQ4IDI0LjUyIDQ4IDY0IDAgMzQuNjYtMjcuMTQgNzguMTQtNDggMTAwLjg3LTIwLjg2LTIyLjcyLTQ4LTY2LjIxLTQ4LTEwMC44NyAwLTM5LjQ4IDE4LjM5LTY0IDQ4LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTAuODUgMTI5YzI1Ljk3IDQuNjcgNDcuMjcgMTguNjcgNjMuOTIgNDIgMTQuNjUgMjAuNjcgMjQuNjQgNDYuNjcgMjkuOTYgNzggNC42NyAyOC42NyA0LjMyIDU3LjMzLTEgODYtNy45OSA0Ny4zMy0yMy45NyA4Ny00Ny45NCAxMTktMjguNjQgMzguNjctNjQuNTkgNTgtMTA3Ljg3IDU4LTEwLjY2IDAtMjIuMy0zLjMzLTM0Ljk2LTEwLTguNjYtNS4zMy0xOC4zMS04LTI4Ljk3LThzLTIwLjMgMi42Ny0yOC45NyA4Yy0xMi42NiA2LjY3LTI0LjMgMTAtMzQuOTYgMTAtNDMuMjggMC03OS4yMy0xOS4zMy0xMDcuODctNTgtMjMuOTctMzItMzkuOTUtNzEuNjctNDcuOTQtMTE5LTUuMzItMjguNjctNS42Ny01Ny4zMy0xLTg2IDUuMzItMzEuMzMgMTUuMzEtNTcuMzMgMjkuOTYtNzggMTYuNjUtMjMuMzMgMzcuOTUtMzcuMzMgNjMuOTItNDIgMTUuOTgtMi42NyAzNy45NS0uMzMgNjUuOTIgNyAyMy45NyA2LjY3IDQ0LjI4IDE0LjY3IDYwLjkzIDI0IDE2LjY1LTkuMzMgMzYuOTYtMTcuMzMgNjAuOTMtMjQgMjcuOTgtNy4zMyA0OS45Ni05LjY3IDY1Ljk0LTd6bS01NC45NC00MWMtOS4zMiA4LjY3LTIxLjY1IDE1LTM2Ljk2IDE5LTEwLjY2IDMuMzMtMjIuMyA1LTM0Ljk2IDVsLTE0Ljk4LTFjLTEuMzMtOS4zMy0xLjMzLTIwIDAtMzIgMi42Ny0yNCAxMC4zMi00Mi4zMyAyMi45Ny01NSA5LjMyLTguNjcgMjEuNjUtMTUgMzYuOTYtMTkgMTAuNjYtMy4zMyAyMi4zLTUgMzQuOTYtNWwxNC45OCAxIDEgMTVjMCAxMi42Ny0xLjY3IDI0LjMzLTQuOTkgMzUtMy45OSAxNS4zMy0xMC4zMSAyNy42Ny0xOC45OCAzN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MEgzMnYyODh6bTE2MC0yMTJjMC02LjYgNS40LTEyIDEyLTEyaDEwNGM2LjYgMCAxMiA1LjQgMTIgMTJ2OGMwIDYuNi01LjQgMTItMTIgMTJIMjA0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTh6TTQ4MCAzMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0djQ4YzAgOC44IDcuMiAxNiAxNiAxNmg0ODBjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcmNod2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MCA0NDhoLTE2Vjk2SDMydjM1MkgxNi4wMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZIMTc2YzguODQgMCAxNi03LjE2IDE2LTE2VjMyMGMwLTUzLjAyIDQyLjk4LTk2IDk2LTk2czk2IDQyLjk4IDk2IDk2bC4wMiAxNjB2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZINTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptMC00NDhIMTZDNy4xNiAwIDAgNy4xNiAwIDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDU0NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dBbHRDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OHpNMjEyIDE0MHYxMTZoLTcwLjljLTEwLjcgMC0xNi4xIDEzLTguNSAyMC41bDExNC45IDExNC4zYzQuNyA0LjcgMTIuMiA0LjcgMTYuOSAwbDExNC45LTExNC4zYzcuNi03LjYgMi4yLTIwLjUtOC41LTIwLjVIMzAwVjE0MGMwLTYuNi01LjQtMTItMTItMTJoLTY0Yy02LjYgMC0xMiA1LjQtMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTA0QzExOSA1MDQgOCAzOTMgOCAyNTZTMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OHptMTE2LTI5MkgyNTZ2LTcwLjljMC0xMC43LTEzLTE2LjEtMjAuNS04LjVMMTIxLjIgMjQ3LjVjLTQuNyA0LjctNC43IDEyLjIgMCAxNi45bDExNC4zIDExNC45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWMzAwaDExNmM2LjYgMCAxMi01LjQgMTItMTJ2LTY0YzAtNi42LTUuNC0xMi0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dBbHRDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOGMxMzcgMCAyNDggMTExIDI0OCAyNDhTMzkzIDUwNCAyNTYgNTA0IDggMzkzIDggMjU2IDExOSA4IDI1NiA4ek0xNDAgMzAwaDExNnY3MC45YzAgMTAuNyAxMyAxNi4xIDIwLjUgOC41bDExNC4zLTExNC45YzQuNy00LjcgNC43LTEyLjIgMC0xNi45bC0xMTQuMy0xMTVjLTcuNi03LjYtMjAuNS0yLjItMjAuNSA4LjVWMjEySDE0MGMtNi42IDAtMTIgNS40LTEyIDEydjY0YzAgNi42IDUuNCAxMiAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dBbHRDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI1NkM4IDExOSAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDgtMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2em0yOTIgMTE2VjI1Nmg3MC45YzEwLjcgMCAxNi4xLTEzIDguNS0yMC41TDI2NC41IDEyMS4yYy00LjctNC43LTEyLjItNC43LTE2LjkgMGwtMTE1IDExNC4zYy03LjYgNy42LTIuMiAyMC41IDguNSAyMC41SDIxMnYxMTZjMCA2LjYgNS40IDEyIDEyIDEyaDY0YzYuNiAwIDEyLTUuNCAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OHptLTE0My42LTI4LjlMMjg4IDMwMi42VjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtMTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE4Mi42bC03Mi40LTc1LjVjLTkuMy05LjctMjQuOC05LjktMzQuMy0uNGwtMTAuOSAxMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlMMjM5IDQwNC4zYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDEzMi43LTEzMi43YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC0xMC45LTExYy05LjUtOS41LTI1LTkuMy0zNC4zLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93Q2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTA0QzExOSA1MDQgOCAzOTMgOCAyNTZTMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OHptMjguOS0xNDMuNkwyMDkuNCAyODhIMzkyYzEzLjMgMCAyNC0xMC43IDI0LTI0di0xNmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyMDkuNGw3NS41LTcyLjRjOS43LTkuMyA5LjktMjQuOC40LTM0LjNsLTExLTEwLjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDEwNy43IDIzOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMTMyLjcgMTMyLjdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMTEtMTAuOWM5LjUtOS41IDkuMy0yNS0uNC0zNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0NpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4YzEzNyAwIDI0OCAxMTEgMjQ4IDI0OFMzOTMgNTA0IDI1NiA1MDQgOCAzOTMgOCAyNTYgMTE5IDggMjU2IDh6bS0yOC45IDE0My42bDc1LjUgNzIuNEgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDE4Mi42bC03NS41IDcyLjRjLTkuNyA5LjMtOS45IDI0LjgtLjQgMzQuM2wxMSAxMC45YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDQwNC4zIDI3M2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzEuNiAxMDYuM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTExIDEwLjljLTkuNSA5LjYtOS4zIDI1LjEuNCAzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0NpcmNsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjU2QzggMTE5IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTZ6bTE0My42IDI4LjlsNzIuNC03NS41VjM5MmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyMDkuNGw3Mi40IDc1LjVjOS4zIDkuNyAyNC44IDkuOSAzNC4zLjRsMTAuOS0xMWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzMgMTA3LjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDEwNi4zIDI0MC40Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwxMC45IDExYzkuNiA5LjUgMjUuMSA5LjMgMzQuNC0uNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxMy4xIDIyMi41bDIyLjIgMjIuMmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwyNDEgNDczYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxMi43IDI3OC42Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWwyMi4yLTIyLjJjOS41LTkuNSAyNS05LjMgMzQuMy40TDE4NCAzNDMuNFY1NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyODcuNGwxMTQuOC0xMjAuNWM5LjMtOS44IDI0LjgtMTAgMzQuMy0uNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ny41IDQ0NS4xbC0yMi4yIDIyLjJjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDcgMjczYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUwyMDEuNCA0NC43YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjIgMjIuMmM5LjUgOS41IDkuMyAyNS0uNCAzNC4zTDEzNi42IDIxNkg0MjRjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMTM2LjZsMTIwLjUgMTE0LjhjOS44IDkuMyAxMCAyNC44LjQgMzQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTAuNSA2Ni45bDIyLjItMjIuMmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMEw0NDEgMjM5YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDI0Ni42IDQ2Ny4zYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjIuMi0yMi4yYy05LjUtOS41LTkuMy0yNSAuNC0zNC4zTDMxMS40IDI5NkgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR2LTMyYzAtMTMuMyAxMC43LTI0IDI0LTI0aDI4Ny40TDE5MC45IDEwMS4yYy05LjgtOS4zLTEwLTI0LjgtLjQtMzQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNC45IDI4OS41bC0yMi4yLTIyLjJjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDIwNyAzOWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxOTQuMyAxOTQuM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOUw0MTMgMjg5LjRjLTkuNSA5LjUtMjUgOS4zLTM0LjMtLjRMMjY0IDE2OC42VjQ1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNGgtMzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE2OC42TDY5LjIgMjg5LjFjLTkuMyA5LjgtMjQuOCAxMC0zNC4zLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c0FsdEggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc3Ljk0MSAxNjkuOTQxVjIxNkgxMzQuMDU5di00Ni4wNTljMC0yMS4zODItMjUuODUxLTMyLjA5LTQwLjk3MS0xNi45NzFMNy4wMjkgMjM5LjAyOWMtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY4IDAgMzMuOTQxbDg2LjA1OSA4Ni4wNTljMTUuMTE5IDE1LjExOSA0MC45NzEgNC40MTEgNDAuOTcxLTE2Ljk3MVYyOTZoMjQzLjg4MnY0Ni4wNTljMCAyMS4zODIgMjUuODUxIDMyLjA5IDQwLjk3MSAxNi45NzFsODYuMDU5LTg2LjA1OWM5LjM3My05LjM3MyA5LjM3My0yNC41NjggMC0zMy45NDFsLTg2LjA1OS04Ni4wNTljLTE1LjExOS0xNS4xMi00MC45NzEtNC40MTItNDAuOTcxIDE2Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NBbHRWIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNC4wNTkgMzc3Ljk0MUgxNjhWMTM0LjA1OWg0Ni4wNTljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFMMTQ0Ljk3MSA3LjAyOWMtOS4zNzMtOS4zNzMtMjQuNTY4LTkuMzczLTMzLjk0MSAwTDI0Ljk3MSA5My4wODhjLTE1LjExOSAxNS4xMTktNC40MTEgNDAuOTcxIDE2Ljk3MSA0MC45NzFIODh2MjQzLjg4Mkg0MS45NDFjLTIxLjM4MiAwLTMyLjA5IDI1Ljg1MS0xNi45NzEgNDAuOTcxbDg2LjA1OSA4Ni4wNTljOS4zNzMgOS4zNzMgMjQuNTY4IDkuMzczIDMzLjk0MSAwbDg2LjA1OS04Ni4wNTljMTUuMTItMTUuMTE5IDQuNDEyLTQwLjk3MS0xNi45Ny00MC45NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIuMjAxIDQyNS43NzVsLTc5LjE5NiA3OS4xOTZjLTkuMzczIDkuMzczLTI0LjU2OCA5LjM3My0zMy45NDEgMGwtNzkuMTk2LTc5LjE5NmMtMTUuMTE5LTE1LjExOS00LjQxMS00MC45NzEgMTYuOTcxLTQwLjk3aDUxLjE2MkwyMjggMjg0SDEyNy4xOTZ2NTEuMTYyYzAgMjEuMzgyLTI1Ljg1MSAzMi4wOS00MC45NzEgMTYuOTcxTDcuMDI5IDI3Mi45MzdjLTkuMzczLTkuMzczLTkuMzczLTI0LjU2OSAwLTMzLjk0MUw4Ni4yMjUgMTU5LjhjMTUuMTE5LTE1LjExOSA0MC45NzEtNC40MTEgNDAuOTcxIDE2Ljk3MVYyMjhIMjI4VjEyNy4xOTZoLTUxLjIzYy0yMS4zODIgMC0zMi4wOS0yNS44NTEtMTYuOTcxLTQwLjk3MWw3OS4xOTYtNzkuMTk2YzkuMzczLTkuMzczIDI0LjU2OC05LjM3MyAzMy45NDEgMGw3OS4xOTYgNzkuMTk2YzE1LjExOSAxNS4xMTkgNC40MTEgNDAuOTcxLTE2Ljk3MSA0MC45NzFoLTUxLjE2MlYyMjhoMTAwLjgwNHYtNTEuMTYyYzAtMjEuMzgyIDI1Ljg1MS0zMi4wOSA0MC45Ny0xNi45NzFsNzkuMTk2IDc5LjE5NmM5LjM3MyA5LjM3MyA5LjM3MyAyNC41NjkgMCAzMy45NDFMNDI1Ljc3MyAzNTIuMmMtMTUuMTE5IDE1LjExOS00MC45NzEgNC40MTEtNDAuOTctMTYuOTcxVjI4NEgyODR2MTAwLjgwNGg1MS4yM2MyMS4zODIgMCAzMi4wOSAyNS44NTEgMTYuOTcxIDQwLjk3MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXNzaXN0aXZlTGlzdGVuaW5nU3lzdGVtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgMjYwYzAgMTUuNDY0LTEyLjUzNiAyOC0yOCAyOHMtMjgtMTIuNTM2LTI4LTI4YzAtNDQuMTEyIDM1Ljg4OC04MCA4MC04MHM4MCAzNS44ODggODAgODBjMCAxNS40NjQtMTIuNTM2IDI4LTI4IDI4cy0yOC0xMi41MzYtMjgtMjhjMC0xMy4yMzQtMTAuNzY3LTI0LTI0LTI0cy0yNCAxMC43NjYtMjQgMjR6bTI0LTE3NmMtOTcuMDQ3IDAtMTc2IDc4Ljk1My0xNzYgMTc2IDAgMTUuNDY0IDEyLjUzNiAyOCAyOCAyOHMyOC0xMi41MzYgMjgtMjhjMC02Ni4xNjggNTMuODMyLTEyMCAxMjAtMTIwczEyMCA1My44MzIgMTIwIDEyMGMwIDc1LjE2NC03MS4wMDkgNzAuMzExLTcxLjk5NyAxNDMuNjIyTDI4OCA0MDRjMCAyOC42NzMtMjMuMzI3IDUyLTUyIDUyLTE1LjQ2NCAwLTI4IDEyLjUzNi0yOCAyOHMxMi41MzYgMjggMjggMjhjNTkuNDc1IDAgMTA3Ljg3Ni00OC4zMjggMTA4LTEwNy43NzQuNTk1LTM0LjQyOCA3Mi00OC4yNCA3Mi0xNDQuMjI2IDAtOTcuMDQ3LTc4Ljk1My0xNzYtMTc2LTE3NnptLTgwIDIzNmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyek0zMiA0NDhjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptNDgwLTE4Ny45OTNjMC0xLjUxOC0uMDEyLTMuMDI1LS4wNDUtNC41MzFDNTEwLjA3NiAxNDAuNTI1IDQzNi4xNTcgMzguNDcgMzI3Ljk5NCAxLjUxMWMtMTQuNjMzLTQuOTk4LTMwLjU0OSAyLjgwOS0zNS41NSAxNy40NDItNSAxNC42MzMgMi44MSAzMC41NDkgMTcuNDQyIDM1LjU1IDg1LjkwNiAyOS4zNTQgMTQ0LjYxIDExMC41MTMgMTQ2LjA3NyAyMDEuOTUzbC4wMDMuMTg4Yy4wMjYgMS4xMTguMDMzIDIuMjM2LjAzMyAzLjM2MyAwIDE1LjQ2NCAxMi41MzYgMjggMjggMjhzMjguMDAxLTEyLjUzNiAyOC4wMDEtMjh6TTE1Mi45NzEgNDM5LjAyOWwtODAtODBMMzkuMDMgMzkyLjk3bDgwIDgwIDMzLjk0MS0zMy45NDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFzdGVyaXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3OC4yMSAzMzQuMDkzTDMzNiAyNTZsMTQyLjIxLTc4LjA5M2MxMS43OTUtNi40NzcgMTUuOTYxLTIxLjM4NCA5LjIzMi0zMy4wMzdsLTE5LjQ4LTMzLjc0MWMtNi43MjgtMTEuNjUzLTIxLjcyLTE1LjQ5OS0zMy4yMjctOC41MjNMMjk2IDE4Ni43MThsMy40NzUtMTYyLjIwNEMyOTkuNzYzIDExLjA2MSAyODguOTM3IDAgMjc1LjQ4IDBoLTM4Ljk2Yy0xMy40NTYgMC0yNC4yODMgMTEuMDYxLTIzLjk5NCAyNC41MTRMMjE2IDE4Ni43MTggNzcuMjY1IDEwMi42MDdjLTExLjUwNi02Ljk3Ni0yNi40OTktMy4xMy0zMy4yMjcgOC41MjNsLTE5LjQ4IDMzLjc0MWMtNi43MjggMTEuNjUzLTIuNTYyIDI2LjU2IDkuMjMzIDMzLjAzN0wxNzYgMjU2IDMzLjc5IDMzNC4wOTNjLTExLjc5NSA2LjQ3Ny0xNS45NjEgMjEuMzg0LTkuMjMyIDMzLjAzN2wxOS40OCAzMy43NDFjNi43MjggMTEuNjUzIDIxLjcyMSAxNS40OTkgMzMuMjI3IDguNTIzTDIxNiAzMjUuMjgybC0zLjQ3NSAxNjIuMjA0QzIxMi4yMzcgNTAwLjkzOSAyMjMuMDY0IDUxMiAyMzYuNTIgNTEyaDM4Ljk2MWMxMy40NTYgMCAyNC4yODMtMTEuMDYxIDIzLjk5NS0yNC41MTRMMjk2IDMyNS4yODJsMTM4LjczNSA4NC4xMTFjMTEuNTA2IDYuOTc2IDI2LjQ5OSAzLjEzIDMzLjIyNy04LjUyM2wxOS40OC0zMy43NDFjNi43MjgtMTEuNjUzIDIuNTYzLTI2LjU1OS05LjIzMi0zMy4wMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOC45NDEgOCA4IDExOC45MTkgOCAyNTZjMCAxMzcuMDU5IDExMC45MTkgMjQ4IDI0OCAyNDggNDguMTU0IDAgOTUuMzQyLTE0LjE0IDEzNS40MDgtNDAuMjIzIDEyLjAwNS03LjgxNSAxNC42MjUtMjQuMjg4IDUuNTUyLTM1LjM3MmwtMTAuMTc3LTEyLjQzM2MtNy42NzEtOS4zNzEtMjEuMTc5LTExLjY2Ny0zMS4zNzMtNS4xMjlDMzI1LjkyIDQyOS43NTcgMjkxLjMxNCA0NDAgMjU2IDQ0MGMtMTAxLjQ1OCAwLTE4NC04Mi41NDItMTg0LTE4NFMxNTQuNTQyIDcyIDI1NiA3MmMxMDAuMTM5IDAgMTg0IDU3LjYxOSAxODQgMTYwIDAgMzguNzg2LTIxLjA5MyA3OS43NDItNTguMTcgODMuNjkzLTE3LjM0OS0uNDU0LTE2LjkxLTEyLjg1Ny0xMy40NzYtMzAuMDI0bDIzLjQzMy0xMjEuMTFDMzk0LjY1MyAxNDkuNzUgMzgzLjMwOCAxMzYgMzY4LjIyNSAxMzZoLTQ0Ljk4MWExMy41MTggMTMuNTE4IDAgMCAwLTEzLjQzMiAxMS45OTNsLS4wMS4wOTJjLTE0LjY5Ny0xNy45MDEtNDAuNDQ4LTIxLjc3NS01OS45NzEtMjEuNzc1LTc0LjU4IDAtMTM3LjgzMSA2Mi4yMzQtMTM3LjgzMSAxNTEuNDYgMCA2NS4zMDMgMzYuNzg1IDEwNS44NyA5NiAxMDUuODcgMjYuOTg0IDAgNTcuMzY5LTE1LjYzNyA3NC45OTEtMzguMzMzIDkuNTIyIDM0LjEwNCA0MC42MTMgMzQuMTAzIDcwLjcxIDM0LjEwM0M0NjIuNjA5IDM3OS40MSA1MDQgMzA3Ljc5OCA1MDQgMjMyIDUwNCA5NS42NTMgMzk0LjAyMyA4IDI1NiA4em0tMjEuNjggMzA0LjQzYy0yMi4yNDkgMC0zNi4wNy0xNS42MjMtMzYuMDctNDAuNzcxIDAtNDQuOTkzIDMwLjc3OS03Mi43MjkgNTguNjMtNzIuNzI5IDIyLjI5MiAwIDM1LjYwMSAxNS4yNDEgMzUuNjAxIDQwLjc3IDAgNDUuMDYxLTMzLjg3NSA3Mi43My01OC4xNjEgNzIuNzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0bGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOC4zOCAyMDhoLTM5LjA5Yy0xLjQ5IDI3LjAzLTYuNTQgNTEuMzUtMTQuMjEgNzAuNDEgMjcuNzEtMTMuMjQgNDguMDItMzkuMTkgNTMuMy03MC40MXptMC0zMmMtNS4yOS0zMS4yMi0yNS41OS01Ny4xNy01My4zLTcwLjQxIDcuNjggMTkuMDYgMTIuNzIgNDMuMzggMTQuMjEgNzAuNDFoMzkuMDl6TTIyNCA5Ny4zMWMtNy42OSA3LjQ1LTIwLjc3IDM0LjQyLTIzLjQzIDc4LjY5aDQ2Ljg3Yy0yLjY3LTQ0LjI2LTE1Ljc1LTcxLjI0LTIzLjQ0LTc4LjY5em0tNDEuMDggOC4yOGMtMjcuNzEgMTMuMjQtNDguMDIgMzkuMTktNTMuMyA3MC40MWgzOS4wOWMxLjQ5LTI3LjAzIDYuNTMtNTEuMzUgMTQuMjEtNzAuNDF6bTAgMTcyLjgyYy03LjY4LTE5LjA2LTEyLjcyLTQzLjM4LTE0LjIxLTcwLjQxaC0zOS4wOWM1LjI4IDMxLjIyIDI1LjU5IDU3LjE3IDUzLjMgNzAuNDF6TTI0Ny40MyAyMDhoLTQ2Ljg3YzIuNjYgNDQuMjYgMTUuNzQgNzEuMjQgMjMuNDMgNzguNjkgNy43LTcuNDUgMjAuNzgtMzQuNDMgMjMuNDQtNzguNjl6TTQ0OCAzNTguNFYyNS42YzAtMTYtOS42LTI1LjYtMjUuNi0yNS42SDk2QzQxLjYgMCAwIDQxLjYgMCA5NnYzMjBjMCA1NC40IDQxLjYgOTYgOTYgOTZoMzI2LjRjMTIuOCAwIDI1LjYtOS42IDI1LjYtMjUuNnYtMTZjMC02LjQtMy4yLTEyLjgtOS42LTE5LjItMy4yLTE2LTMuMi02MC44IDAtNzMuNiA2LjQtMy4yIDkuNi05LjYgOS42LTE5LjJ6TTIyNCA2NGM3MC42OSAwIDEyOCA1Ny4zMSAxMjggMTI4cy01Ny4zMSAxMjgtMTI4IDEyOFM5NiAyNjIuNjkgOTYgMTkyIDE1My4zMSA2NCAyMjQgNjR6bTE2MCAzODRIOTZjLTE5LjIgMC0zMi0xMi44LTMyLTMyczE2LTMyIDMyLTMyaDI4OHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjMuOTk5MDgsMjI0YTMyLDMyLDAsMSwwLDMyLjAwNzgyLDMyQTMyLjA2NDMxLDMyLjA2NDMxLDAsMCwwLDIyMy45OTkwOCwyMjRabTIxNC4xNzItOTZjLTEwLjg3Ny0xOS41LTQwLjUwOTc5LTUwLjc1LTExNi4yNzU0NC00MS44NzVDMzAwLjM5MTY4LDM0Ljg3NSwyNjcuNjMzODYsMCwyMjMuOTk5MDgsMHMtNzYuMzkwNjYsMzQuODc1LTk3Ljg5NjUzLDg2LjEyNUM1MC4zMzY5LDc3LjM3NSwyMC43MDYsMTA4LjUsOS44MjkwNywxMjgtNi41NDk4NCwxNTcuMzc1LTUuMTc0ODQsMjAxLjEyNSwzNC45NTgsMjU2LTUuMTc0ODQsMzEwLjg3NS02LjU0OTg0LDM1NC42MjUsOS44MjkwNywzODRjMjkuMTMwODcsNTIuMzc1LDEwMS42NDY1Miw0My42MjUsMTE2LjI3MzQ4LDQxLjg3NUMxNDcuNjA4NDIsNDc3LjEyNSwxODAuMzY0MjksNTEyLDIyMy45OTkwOCw1MTJzNzYuMzkyNi0zNC44NzUsOTcuODk2NTItODYuMTI1YzE0LjYyODkxLDEuNzUsODcuMTQ0NTYsMTAuNSwxMTYuMjc1NDQtNDEuODc1QzQ1NC41NSwzNTQuNjI1LDQ1My4xNzUsMzEwLjg3NSw0MTMuMDQwMTcsMjU2LDQ1My4xNzUsMjAxLjEyNSw0NTQuNTUsMTU3LjM3NSw0MzguMTcxLDEyOFpNNjMuMzM4ODYsMzUyYy00LTcuMjUtLjEyNS0yNC43NSwxNS4wMDM5MS00OC4yNSw2Ljg3Njk1LDYuNSwxNC4xMjg5MSwxMi44NzUsMjEuODgwODcsMTkuMTI1LDEuNjI1LDEzLjc1LDQsMjcuMTI1LDYuNzUsNDAuMTI1QzgyLjM0NDcyLDM2My44NzUsNjcuMDkwODEsMzU4LjYyNSw2My4zMzg4NiwzNTJabTM2Ljg4NDc4LTE2Mi44NzVjLTcuNzUyLDYuMjUtMTUuMDAzOTIsMTIuNjI1LTIxLjg4MDg3LDE5LjEyNS0xNS4xMjg5MS0yMy41LTE5LjAwMzkyLTQxLTE1LjAwMzkxLTQ4LjI1LDMuMzc3LTYuMTI1LDE2LjM3ODkxLTExLjUsMzcuODg0NzgtMTEuNSwxLjc1LDAsMy44NzUuMzc1LDUuNzUuMzc1QzEwNC4wOTg2NCwxNjIuMjUsMTAxLjg0ODY0LDE3NS42MjUsMTAwLjIyMzY0LDE4OS4xMjVaTTIyMy45OTkwOCw2NGM5LjUwMTk1LDAsMjIuMjU1ODYsMTMuNSwzMy44ODI4MiwzNy4yNS0xMS4yNTIsMy43NS0yMi41MDM5MSw4LTMzLjg4MjgyLDEyLjg3NS0xMS4zNzctNC44NzUtMjIuNjI4OTItOS4xMjUtMzMuODgyODMtMTIuODc1QzIwMS43NDUxNiw3Ny41LDIxNC40OTcxMiw2NCwyMjMuOTk5MDgsNjRabTAsMzg0Yy05LjUwMiwwLTIyLjI1MzkyLTEzLjUtMzMuODgyODMtMzcuMjUsMTEuMjUzOTEtMy43NSwyMi41MDU4Ny04LDMzLjg4MjgzLTEyLjg3NUMyMzUuMzc4LDQwMi43NSwyNDYuNjI5OTQsNDA3LDI1Ny44ODE5LDQxMC43NSwyNDYuMjU0OTQsNDM0LjUsMjMzLjUwMSw0NDgsMjIzLjk5OTA4LDQ0OFptMC0xMTJhODAsODAsMCwxLDEsODAtODBBODAuMDAwMjMsODAuMDAwMjMsMCwwLDEsMjIzLjk5OTA4LDMzNlpNMzg0LjY1OTMsMzUyYy0zLjYyNSw2LjYyNS0xOS4wMDM5MiwxMS44NzUtNDMuNjM0NzksMTEsMi43NTItMTMsNS4xMjctMjYuMzc1LDYuNzUyLTQwLjEyNSw3Ljc1MTk1LTYuMjUsMTUuMDAzOTEtMTIuNjI1LDIxLjg3ODkxLTE5LjEyNUMzODQuNzg0MywzMjcuMjUsMzg4LjY1OTMsMzQ0Ljc1LDM4NC42NTkzLDM1MlpNMzY5LjY1NTM4LDIwOC4yNWMtNi44NzUtNi41LTE0LjEyNy0xMi44NzUtMjEuODc4OTEtMTkuMTI1LTEuNjI1LTEzLjUtMy44NzUtMjYuODc1LTYuNzUyLTQwLjI1LDEuODc1LDAsNC4wMDItLjM3NSw1Ljc1Mi0uMzc1LDIxLjUwMzkxLDAsMzQuNTA3ODIsNS4zNzUsMzcuODgyODMsMTEuNUMzODguNjU5MywxNjcuMjUsMzg0Ljc4NDMsMTg0Ljc1LDM2OS42NTUzOCwyMDguMjVaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF1ZGlvRGVzY3JpcHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYyLjkyNSAyMzguNzA5bDguODIyIDMwLjY1NWgtMjUuNjA2bDkuMDQxLTMwLjY1MmMxLjI3Ny00LjQyMSAyLjY1MS05Ljk5NCAzLjg3Mi0xNS4yNDUgMS4yMiA1LjI1MSAyLjU5NCAxMC44MjMgMy44NzEgMTUuMjQyem0xNjYuNDc0LTMyLjA5OWgtMTQuNTIzdjk4Ljc4MWgxNC41MjNjMjkuNzc2IDAgNDYuMTc1LTE3LjY3OCA0Ni4xNzUtNDkuNzc2IDAtMzIuMjM5LTE3LjQ5LTQ5LjAwNS00Ni4xNzUtNDkuMDA1ek01MTIgMTEydjI4OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4ek0yNDUuNDU5IDMzNi4xMzlsLTU3LjA5Ny0xNjhBMTIuMDAxIDEyLjAwMSAwIDAgMCAxNzcgMTYwaC0zNS44OTRhMTIuMDAxIDEyLjAwMSAwIDAgMC0xMS4zNjIgOC4xMzlsLTU3LjA5NyAxNjhDNzAuMDAzIDM0My45MjIgNzUuNzg5IDM1MiA4NC4wMDkgMzUyaDI5LjEzM2ExMiAxMiAwIDAgMCAxMS41MzUtOC42OTNsOC41NzQtMjkuOTA2aDUxLjM2N2w4Ljc5MyAyOS45NzdBMTIgMTIgMCAwIDAgMjA0LjkyNiAzNTJoMjkuMTcyYzguMjIgMCAxNC4wMDYtOC4wNzggMTEuMzYxLTE1Ljg2MXptMTg0LjcwMS04MC41MjVjMC01OC45NzctMzcuOTE5LTk1LjYxNC05OC45Ni05NS42MTRoLTU3LjM2NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxNjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMkgzMzEuMmM2MS4wNDEgMCA5OC45Ni0zNi45MzMgOTguOTYtOTYuMzg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05Ny4xMiAzNjIuNjNjLTguNjktOC42OS00LjE2LTYuMjQtMjUuMTItMTEuODUtOS41MS0yLjU1LTE3Ljg3LTcuNDUtMjUuNDMtMTMuMzJMMS4yIDQ0OC43Yy00LjM5IDEwLjc3IDMuODEgMjIuNDcgMTUuNDMgMjIuMDNsNTIuNjktMi4wMUwxMDUuNTYgNTA3YzggOC40NCAyMi4wNCA1LjgxIDI2LjQzLTQuOTZsNTIuMDUtMTI3LjYyYy0xMC44NCA2LjA0LTIyLjg3IDkuNTgtMzUuMzEgOS41OC0xOS41IDAtMzcuODItNy41OS01MS42MS0yMS4zN3pNMzgyLjggNDQ4LjdsLTQ1LjM3LTExMS4yNGMtNy41NiA1Ljg4LTE1LjkyIDEwLjc3LTI1LjQzIDEzLjMyLTIxLjA3IDUuNjQtMTYuNDUgMy4xOC0yNS4xMiAxMS44NS0xMy43OSAxMy43OC0zMi4xMiAyMS4zNy01MS42MiAyMS4zNy0xMi40NCAwLTI0LjQ3LTMuNTUtMzUuMzEtOS41OEwyNTIgNTAyLjA0YzQuMzkgMTAuNzcgMTguNDQgMTMuNCAyNi40MyA0Ljk2bDM2LjI1LTM4LjI4IDUyLjY5IDIuMDFjMTEuNjIuNDQgMTkuODItMTEuMjcgMTUuNDMtMjIuMDN6TTI2MyAzNDBjMTUuMjgtMTUuNTUgMTcuMDMtMTQuMjEgMzguNzktMjAuMTQgMTMuODktMy43OSAyNC43NS0xNC44NCAyOC40Ny0yOC45OCA3LjQ4LTI4LjQgNS41NC0yNC45NyAyNS45NS00NS43NSAxMC4xNy0xMC4zNSAxNC4xNC0yNS40NCAxMC40Mi0zOS41OC03LjQ3LTI4LjM4LTcuNDgtMjQuNDIgMC01Mi44MyAzLjcyLTE0LjE0LS4yNS0yOS4yMy0xMC40Mi0zOS41OC0yMC40MS0yMC43OC0xOC40Ny0xNy4zNi0yNS45NS00NS43NS0zLjcyLTE0LjE0LTE0LjU4LTI1LjE5LTI4LjQ3LTI4Ljk4LTI3Ljg4LTcuNjEtMjQuNTItNS42Mi00NC45NS0yNi40MS0xMC4xNy0xMC4zNS0yNS0xNC40LTM4Ljg5LTEwLjYxLTI3Ljg3IDcuNi0yMy45OCA3LjYxLTUxLjkgMC0xMy44OS0zLjc5LTI4LjcyLjI1LTM4Ljg5IDEwLjYxLTIwLjQxIDIwLjc4LTE3LjA1IDE4LjgtNDQuOTQgMjYuNDEtMTMuODkgMy43OS0yNC43NSAxNC44NC0yOC40NyAyOC45OC03LjQ3IDI4LjM5LTUuNTQgMjQuOTctMjUuOTUgNDUuNzUtMTAuMTcgMTAuMzUtMTQuMTUgMjUuNDQtMTAuNDIgMzkuNTggNy40NyAyOC4zNiA3LjQ4IDI0LjQgMCA1Mi44Mi0zLjcyIDE0LjE0LjI1IDI5LjIzIDEwLjQyIDM5LjU5IDIwLjQxIDIwLjc4IDE4LjQ3IDE3LjM1IDI1Ljk1IDQ1Ljc1IDMuNzIgMTQuMTQgMTQuNTggMjUuMTkgMjguNDcgMjguOThDMTA0LjYgMzI1Ljk2IDEwNi4yNyAzMjUgMTIxIDM0MGMxMy4yMyAxMy40NyAzMy44NCAxNS44OCA0OS43NCA1LjgyYTM5LjY3NiAzOS42NzYgMCAwIDEgNDIuNTMgMGMxNS44OSAxMC4wNiAzNi41IDcuNjUgNDkuNzMtNS44MnpNOTcuNjYgMTc1Ljk2YzAtNTMuMDMgNDIuMjQtOTYuMDIgOTQuMzQtOTYuMDJzOTQuMzQgNDIuOTkgOTQuMzQgOTYuMDItNDIuMjQgOTYuMDItOTQuMzQgOTYuMDItOTQuMzQtNDIuOTktOTQuMzQtOTYuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhYnlDYXJyaWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQuOCAxN2MtMTEuMy0xNy44LTM3LjItMjIuOC01NC05LjRDMzUuMyA1MS45IDAgMTE4IDAgMTkyaDI1NkwxNDQuOCAxN3pNNDk2IDk2aC00OGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2NjRIMGMwIDUwLjYgMjMgOTYuNCA2MC4zIDEzMC43QzI1LjcgMzYzLjYgMCAzOTQuNyAwIDQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtOC45LTEuOC0xNy4yLTQuNC0yNS4yIDIxLjYgNS45IDQ0LjYgOS4yIDY4LjQgOS4yczQ2LjktMy4zIDY4LjQtOS4yYy0yLjcgOC00LjQgMTYuMy00LjQgMjUuMiAwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMzcuMy0yNS43LTY4LjQtNjAuMy03Ny4zQzQyNSAzMjAuNCA0NDggMjc0LjYgNDQ4IDIyNHYtNjRoNDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTgwIDQ2NGMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6bTMyMC0zMmMwIDE3LjYtMTQuNCAzMi0zMiAzMnMtMzItMTQuNC0zMi0zMiAxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhYnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDE2MGM0NC4yIDAgODAtMzUuOCA4MC04MFMyMzYuMiAwIDE5MiAwcy04MCAzNS44LTgwIDgwIDM1LjggODAgODAgODB6bS01My40IDI0OC44bDI1LjYtMzItNjEuNS01MS4yTDU2LjggMzgzYy0xMS40IDE0LjItMTEuNyAzNC40LS44IDQ5bDQ4IDY0YzcuOSAxMC41IDE5LjkgMTYgMzIgMTYgOC4zIDAgMTYuOC0yLjYgMjQtOCAxNy43LTEzLjIgMjEuMi0zOC4zIDgtNTZsLTI5LjQtMzkuMnptMTQyLjctODMuMmwtNjEuNSA1MS4yIDI1LjYgMzJMMjE2IDQ0OGMtMTMuMiAxNy43LTkuNyA0Mi44IDggNTYgNy4yIDUuNCAxNS42IDggMjQgOCAxMi4yIDAgMjQuMi01LjUgMzItMTZsNDgtNjRjMTAuOS0xNC42IDEwLjYtMzQuOC0uOC00OWwtNDUuOS01Ny40ek0zNzYuNyAxNDVjLTEyLjctMTguMS0zNy42LTIyLjQtNTUuNy05LjhsLTQwLjYgMjguNWMtNTIuNyAzNy0xMjQuMiAzNy0xNzYuOCAwTDYzIDEzNS4zQzQ0LjkgMTIyLjYgMjAgMTI3IDcuMyAxNDUtNS40IDE2My4xLTEgMTg4IDE3IDIwMC43bDQwLjYgMjguNWMxNyAxMS45IDM1LjQgMjAuOSA1NC40IDI3LjlWMjg4aDE2MHYtMzAuOGMxOS03IDM3LjQtMTYgNTQuNC0yNy45bDQwLjYtMjguNWMxOC4xLTEyLjggMjIuNC0zNy43IDkuNy01NS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrc3BhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc2IDY0SDIwNS4yNkE2My45NyA2My45NyAwIDAgMCAxNjAgODIuNzVMOS4zNyAyMzMuMzdjLTEyLjUgMTIuNS0xMi41IDMyLjc2IDAgNDUuMjVMMTYwIDQyOS4yNWMxMiAxMiAyOC4yOCAxOC43NSA0NS4yNSAxOC43NUg1NzZjMzUuMzUgMCA2NC0yOC42NSA2NC02NFYxMjhjMC0zNS4zNS0yOC42NS02NC02NC02NHptLTg0LjY5IDI1NC4wNmM2LjI1IDYuMjUgNi4yNSAxNi4zOCAwIDIyLjYzbC0yMi42MiAyMi42MmMtNi4yNSA2LjI1LTE2LjM4IDYuMjUtMjIuNjMgMEwzODQgMzAxLjI1bC02Mi4wNiA2Mi4wNmMtNi4yNSA2LjI1LTE2LjM4IDYuMjUtMjIuNjMgMGwtMjIuNjItMjIuNjJjLTYuMjUtNi4yNS02LjI1LTE2LjM4IDAtMjIuNjNMMzM4Ljc1IDI1NmwtNjIuMDYtNjIuMDZjLTYuMjUtNi4yNS02LjI1LTE2LjM4IDAtMjIuNjNsMjIuNjItMjIuNjJjNi4yNS02LjI1IDE2LjM4LTYuMjUgMjIuNjMgMEwzODQgMjEwLjc1bDYyLjA2LTYyLjA2YzYuMjUtNi4yNSAxNi4zOC02LjI1IDIyLjYzIDBsMjIuNjIgMjIuNjJjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M0w0MjkuMjUgMjU2bDYyLjA2IDYyLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDI4MC42bDE5MiAxNjBjMjAuNiAxNy4yIDUyLjUgMi44IDUyLjUtMjQuNlY5NmMwLTI3LjQtMzEuOS00MS44LTUyLjUtMjQuNmwtMTkyIDE2MGMtMTUuMyAxMi44LTE1LjMgMzYuNCAwIDQ5LjJ6bTI1NiAwbDE5MiAxNjBjMjAuNiAxNy4yIDUyLjUgMi44IDUyLjUtMjQuNlY5NmMwLTI3LjQtMzEuOS00MS44LTUyLjUtMjQuNmwtMTkyIDE2MGMtMTUuMyAxMi44LTE1LjMgMzYuNCAwIDQ5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxOC45MiAzMzYuMzljMzQuODktMzQuODkgNDQuMi01OS43IDU0LjA1LTg2IDEwLjYxLTI4LjI5IDIxLjU5LTU3LjU0IDYxLjM3LTk3LjM0czY5LjA1LTUwLjc3IDk3LjM1LTYxLjM4YzIzLjg4LTkgNDYuNjQtMTcuNjggNzYuNzktNDUuMzdMNDcwLjgxIDguOTFhMzEgMzEgMCAwIDAtNDAuMTgtMi44M2MtMTMuNjQgMTAuMS0yNS4xNSAxNC4zOS00MSAyMC4zQzI0NyA3OS41MiAyMDkuMjYgMTkxLjI5IDIwMC42NSAyMTQuMWMtMjkuNzUgNzguODMtODkuNTUgOTQuNjgtOTguNzIgOTguMDktMjQuODYgOS4yNi01NC43MyAyMC4zOC05MS4wNyA1MC4zNkMtMyAzNzQtMy42MyAzOTUgOS4wNyA0MDcuNjFsMzUuNzYgMzUuNTFDODAgNDEwLjUyIDEwNyA0MDAuMTUgMTMzIDM5MC4zOWMyNi4yNy05Ljg0IDUxLjA2LTE5LjEyIDg1LjkyLTU0em0zNDgtMjMybC0zNS43NS0zNS41MWMtMzUuMTkgMzIuNjMtNjIuMTggNDMtODguMjUgNTIuNzktMjYuMjYgOS44NS01MS4wNiAxOS4xNi04NS45NSA1NHMtNDQuMTkgNTkuNjktNTQgODZDMjkyLjMzIDI5MCAyODEuMzQgMzE5LjIyIDI0MS41NSAzNTlzLTY5IDUwLjczLTk3LjMgNjEuMzJjLTIzLjg2IDktNDYuNjEgMTcuNjYtNzYuNzIgNDUuMzNsMzcuNjggMzcuNDNhMzEgMzEgMCAwIDAgNDAuMTggMi44MmMxMy42LTEwLjA2IDI1LjA5LTE0LjM0IDQwLjk0LTIwLjI0IDE0Mi4yLTUzIDE4MC0xNjQuMSAxODguOTQtMTg3LjY5QzQwNSAyMTkuMTggNDY0LjggMjAzLjMgNDc0IDE5OS44NmMyNC44Ny05LjI3IDU0Ljc0LTIwLjQgOTEuMTEtNTAuNDEgMTMuODktMTEuNCAxNC41Mi0zMi40NSAxLjgyLTQ1LjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWN0ZXJpYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIuMzUsMjI2LjRBMTcuNzEsMTcuNzEsMCwwLDAsMjgxLjQ2LDIwM2wtNC05LjA4YTEyMS4yOSwxMjEuMjksMCwwLDEsMTIuMzYtMy4wOEE4My4zNCw4My4zNCwwLDAsMCwzMjMuNTcsMTc3bDEwLDlhMTcuNzYsMTcuNzYsMCwxLDAsMjMuOTItMjYuMjdsLTkuNzItOC43NmE4My4xMiw4My4xMiwwLDAsMCwxMS42NS00OC4xOGwxMS44NS0zLjUxYTE3LjczLDE3LjczLDAsMSwwLTEwLjE1LTM0bC0xMS4zNCwzLjM2YTg0LDg0LDAsMCwwLTM2LjM4LTM1LjU3bDIuODQtMTAuODVhMTcuOCwxNy44LDAsMCwwLTM0LjQ3LTguOTNsLTIuODIsMTAuNzhhODMuMjUsODMuMjUsMCwwLDAtMTYuNzQsMS4xQzI1MC44MywyNywyNDAsMzAuMjIsMjI5LjEsMzMuMzlsLTMuMzgtOS40NmExNy44LDE3LjgsMCwwLDAtMzMuNTYsMTEuODlsMy40OSw5LjhhMjg2Ljc0LDI4Ni43NCwwLDAsMC00My45NCwyMy41N2wtNi4zMi04LjQzYTE3LjksMTcuOSwwLDAsMC0yNC45NC0zLjZBMTcuNjksMTcuNjksMCwwLDAsMTE2Ljg0LDgybDYuNDUsOC42MWEyODYuNTksMjg2LjU5LDAsMCwwLTM0Ljk1LDM1LjMzbC04LjgyLTYuNDJhMTcuODQsMTcuODQsMCwwLDAtMjQuODksMy44NiwxNy42NiwxNy42NiwwLDAsMCwzLjg4LDI0Ljc3bDguODgsNi40N2EyODYuNiwyODYuNiwwLDAsMC0yMyw0My45MWwtMTAuNDgtMy41OWExNy43MywxNy43MywwLDEsMC0xMS41OSwzMy41MkwzMi42NywyMzJjLTIuNzksMTAtNS43OSwxOS44NC03LjUyLDMwLjIyYTgzLjE2LDgzLjE2LDAsMCwwLS44MiwxOWwtMTEuNTgsMy40M2ExNy43MywxNy43MywwLDEsMCwxMC4xMywzNGwxMS4yNy0zLjMzYTgzLjUxLDgzLjUxLDAsMCwwLDM2LjM5LDM1LjQzbC0yLjg4LDExLjA2YTE3LjgxLDE3LjgxLDAsMCwwLDM0LjQ4LDguOTJsMi44Ny0xMWMxLDAsMi4wNy4yNiwzLjEuMjZhODMuMzksODMuMzksMCwwLDAsNDUuNjUtMTMuODhsOC41OSw4LjhhMTcuNzcsMTcuNzcsMCwwLDAsMjUuNTYtMjQuN2wtOS4xNC05LjM3YTgzLjQxLDgzLjQxLDAsMCwwLDEyLjA4LTMxLjA1LDExOS4wOCwxMTkuMDgsMCwwLDEsMy44Ny0xNS41M2w5LDQuMjJhMTcuNzQsMTcuNzQsMCwxLDAsMTUuMTUtMzIuMDlsLTguOC00LjExYy42Ny0xLDEuMi0yLjA4LDEuOS0zLjA1YTExOS44OSwxMTkuODksMCwwLDEsNy44Ny05LjQxLDEyMS43MywxMjEuNzMsMCwwLDEsMTEuNjUtMTEuNCwxMTkuNDksMTE5LjQ5LDAsMCwxLDkuOTQtNy44MmMxLjEyLS43NywyLjMyLTEuNDIsMy40Ny0yLjE1bDMuOTIsOC44NWExNy44NiwxNy44NiwwLDAsMCwxNi4zMiwxMC41OEExOC4xNCwxOC4xNCwwLDAsMCwyNzIuMzUsMjI2LjRaTTEyOCwyNTZhMzIsMzIsMCwxLDEsMzItMzJBMzIsMzIsMCwwLDEsMTI4LDI1NlptODAtOTZhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMjA4LDE2MFptNDMxLjI2LDQ1LjNhMTcuNzksMTcuNzksMCwwLDAtMTcuMDYtMTIuNjksMTcuNTUsMTcuNTUsMCwwLDAtNS4wOC43NGwtMTEuMjcsMy4zM2E4My42MSw4My42MSwwLDAsMC0zNi4zOS0zNS40M2wyLjg4LTExLjA2YTE3LjgxLDE3LjgxLDAsMCwwLTM0LjQ4LTguOTFsLTIuODcsMTFjLTEsMC0yLjA3LS4yNi0zLjEtLjI2YTgzLjMyLDgzLjMyLDAsMCwwLTQ1LjY1LDEzLjg5bC04LjU5LTguODFhMTcuNzcsMTcuNzcsMCwwLDAtMjUuNTYsMjQuN2w5LjE0LDkuMzdhODMuMjgsODMuMjgsMCwwLDAtMTIuMDgsMzEuMDYsMTE5LjM0LDExOS4zNCwwLDAsMS0zLjg3LDE1LjUybC05LTQuMjJhMTcuNzQsMTcuNzQsMCwxLDAtMTUuMTUsMzIuMDlsOC44LDQuMTFjLS42NywxLTEuMiwyLjA4LTEuODksMy4wNWExMTcuNzEsMTE3LjcxLDAsMCwxLTcuOTQsOS40NywxMTksMTE5LDAsMCwxLTExLjU3LDExLjMzLDEyMS41OSwxMjEuNTksMCwwLDEtMTAsNy44M2MtMS4xMi43Ny0yLjMyLDEuNDItMy40NywyLjE1bC0zLjkyLTguODVhMTcuODYsMTcuODYsMCwwLDAtMTYuMzItMTAuNTgsMTguMTQsMTguMTQsMCwwLDAtNy4xOCwxLjVBMTcuNzEsMTcuNzEsMCwwLDAsMzU4LjU0LDMwOWw0LDkuMDhhMTE4LjcxLDExOC43MSwwLDAsMS0xMi4zNiwzLjA4LDgzLjM0LDgzLjM0LDAsMCwwLTMzLjc3LDEzLjlsLTEwLTlhMTcuNzcsMTcuNzcsMCwxLDAtMjMuOTIsMjYuMjhsOS43Miw4Ljc1YTgzLjEyLDgzLjEyLDAsMCwwLTExLjY1LDQ4LjE4bC0xMS44NiwzLjUxYTE3LjczLDE3LjczLDAsMSwwLDEwLjE2LDM0bDExLjM0LTMuMzZBODQsODQsMCwwLDAsMzI2LjYxLDQ3OWwtMi44NCwxMC44NWExNy44LDE3LjgsMCwwLDAsMzQuNDcsOC45M0wzNjEuMDYsNDg4YTgzLjMsODMuMywwLDAsMCwxNi43NC0xLjFjMTEuMzctMS44OSwyMi4yNC01LjA3LDMzLjEtOC4yNGwzLjM4LDkuNDZhMTcuOCwxNy44LDAsMCwwLDMzLjU2LTExLjg5bC0zLjQ5LTkuNzlhMjg3LjY2LDI4Ny42NiwwLDAsMCw0My45NC0yMy41OGw2LjMyLDguNDNhMTcuODgsMTcuODgsMCwwLDAsMjQuOTMsMy42QTE3LjY3LDE3LjY3LDAsMCwwLDUyMy4xNiw0MzBsLTYuNDUtOC42MWEyODcuMzcsMjg3LjM3LDAsMCwwLDM0Ljk1LTM1LjM0bDguODIsNi40MmExNy43NiwxNy43NiwwLDEsMCwyMS0yOC42M2wtOC44OC02LjQ2YTI4Ny4xNywyODcuMTcsMCwwLDAsMjMtNDMuOTJsMTAuNDgsMy41OWExNy43MywxNy43MywwLDEsMCwxMS41OS0zMy41Mkw2MDcuMzMsMjgwYzIuNzktMTAsNS43OS0xOS44NCw3LjUyLTMwLjIxYTgzLjI3LDgzLjI3LDAsMCwwLC44Mi0xOS4wNWwxMS41OC0zLjQzQTE3LjcsMTcuNywwLDAsMCw2MzkuMjYsMjA1LjNaTTQxNiw0MTZhMzIsMzIsMCwxLDEsMzItMzJBMzIsMzIsMCwwLDEsNDE2LDQxNlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjdGVyaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMSwxMDIuOTNBMjMuNzYsMjMuNzYsMCwwLDAsNDgxLjQ3LDg3bC0xNS4xMiw0LjQ4YTExMS44NSwxMTEuODUsMCwwLDAtNDguNS00Ny40MmwzLjc5LTE0LjQ3YTIzLjc0LDIzLjc0LDAsMCwwLTQ2LTExLjkxbC0zLjc2LDE0LjM3YTExMS45NCwxMTEuOTQsMCwwLDAtMjIuMzMsMS40NywzODYuNzQsMzg2Ljc0LDAsMCwwLTQ0LjMzLDEwLjQxbC00LjMtMTJhMjMuNzQsMjMuNzQsMCwwLDAtNDQuNzUsMTUuODVsNC4zLDEyLjA1YTM4My40LDM4My40LDAsMCwwLTU4LjY5LDMxLjgzbC04LTEwLjYzYTIzLjg1LDIzLjg1LDAsMCwwLTMzLjI0LTQuOCwyMy41NywyMy41NywwLDAsMC00LjgzLDMzLjA5bDgsMTAuNjNhMzg2LjE0LDM4Ni4xNCwwLDAsMC00Ni43LDQ3LjQ0bC0xMS04YTIzLjY4LDIzLjY4LDAsMSwwLTI4LDM4LjE3bDExLjA5LDguMDZhMzgzLjQ1LDM4My40NSwwLDAsMC0zMC45Miw1OC43NWwtMTIuOTMtNC40M2EyMy42NSwyMy42NSwwLDEsMC0xNS40Nyw0NC42OWwxMyw0LjQ4YTM4NS44MSwzODUuODEsMCwwLDAtOS4zLDQwLjUzQTExMS41OCwxMTEuNTgsMCwwLDAsMzIuNDQsMzc1TDE3LDM3OS41NmEyMy42NCwyMy42NCwwLDAsMCwxMy41MSw0NS4zMWwxNS00LjQ0YTExMS40OSwxMTEuNDksMCwwLDAsNDguNTMsNDcuMjRsLTMuODUsMTQuNzVhMjMuNjYsMjMuNjYsMCwwLDAsMTcsMjguODMsMjQuNywyNC43LDAsMCwwLDYsLjc1LDIzLjczLDIzLjczLDAsMCwwLDIzLTE3LjdMMTQwLDQ3OS42N2MxLjM3LjA1LDIuNzcuMzUsNC4xMy4zNUExMTEuMjIsMTExLjIyLDAsMCwwLDIwNSw0NjEuNWwxMS40NSwxMS43NGEyMy43LDIzLjcsMCwwLDAsMzQuMDgtMzIuOTNsLTEyLjE5LTEyLjVhMTExLDExMSwwLDAsMCwxNi4xMS00MS40LDE1OC42OSwxNTguNjksMCwwLDEsNS4xNi0yMC43MWwxMiw1LjY0YTIzLjY2LDIzLjY2LDAsMSwwLDIwLjE5LTQyLjc5bC0xMS43Mi01LjQ5Yy44OS0xLjMyLDEuNTktMi43NywyLjUyLTQuMDZhMTU3Ljg2LDE1Ny44NiwwLDAsMSwxMC40Ni0xMi40OSwxNTkuNSwxNTkuNSwwLDAsMSwxNS41OS0xNS4yOCwxNjIuMTgsMTYyLjE4LDAsMCwxLDEzLjIzLTEwLjRjMS41LTEsMy4xLTEuODksNC42My0yLjg3bDUuMjMsMTEuOGEyMy43NCwyMy43NCwwLDAsMCw0My40OC0xOS4wOGwtNS4zNi0xMi4xMWExNTguODcsMTU4Ljg3LDAsMCwxLDE2LjQ5LTQuMSwxMTEsMTExLDAsMCwwLDQ1LTE4LjU0bDEzLjMzLDEyYTIzLjY5LDIzLjY5LDAsMSwwLDMxLjg4LTM1bC0xMi45NC0xMS42N0ExMTAuODMsMTEwLjgzLDAsMCwwLDQ3OS4yMSwxMzdMNDk1LDEzMi4zMkEyMy42MSwyMy42MSwwLDAsMCw1MTEsMTAyLjkzWk0xNjAsMzY4YTQ4LDQ4LDAsMSwxLDQ4LTQ4QTQ4LDQ4LDAsMCwxLDE2MCwzNjhabTgwLTEzNmEyNCwyNCwwLDEsMSwyNC0yNEEyNCwyNCwwLDAsMSwyNDAsMjMyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWhhaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYuMjUgMjAyLjUybC0xMTAtMTUuNDQgNDEuODItMTA0LjM0YzYuNjctMTYuNjQtMTEuNi0zMi4xOC0yNi41OS0yMi42M0wzMDcuNDQgMTIwIDI3My4zNSAxMi44MkMyNzAuNjQgNC4yNyAyNjMuMzIgMCAyNTYgMGMtNy4zMiAwLTE0LjY0IDQuMjctMTcuMzUgMTIuODJsLTM0LjA5IDEwNy4xOS05NC4wNC01OS44OWMtMTQuOTktOS41NS0zMy4yNSA1Ljk5LTI2LjU5IDIyLjYzbDQxLjgyIDEwNC4zNC0xMTAgMTUuNDNjLTE3LjU0IDIuNDYtMjEuNjggMjYuMjctNi4wMyAzNC42N2w5OC4xNiA1Mi42Ni03NC40OCA4My41NGMtMTAuOTIgMTIuMjUtMS43MiAzMC45MyAxMy4yOSAzMC45MyAxLjMxIDAgMi42Ny0uMTQgNC4wNy0uNDVsMTA4LjU3LTIzLjY1LTQuMTEgMTEyLjU1Yy0uNDMgMTEuNjUgOC44NyAxOS4yMiAxOC40MSAxOS4yMiA1LjE1IDAgMTAuMzktMi4yMSAxNC4yLTcuMThsNjguMTgtODguOSA2OC4xOCA4OC45YzMuODEgNC45NyA5LjA0IDcuMTggMTQuMiA3LjE4IDkuNTQgMCAxOC44NC03LjU3IDE4LjQxLTE5LjIybC00LjExLTExMi41NSAxMDguNTcgMjMuNjVjMTcuMzYgMy43NiAyOS4yMS0xNy4yIDE3LjM1LTMwLjQ5bC03NC40OC04My41NCA5OC4xNi01Mi42NmMxNS42NC04LjM5IDExLjUtMzIuMi02LjA0LTM0LjY2ek0zMzguNTEgMzExLjY4bC01MS44OS0xMS4zIDEuOTcgNTMuNzlMMjU2IDMxMS42OGwtMzIuNTkgNDIuNDkgMS45Ni01My43OS01MS44OSAxMS4zIDM1LjYtMzkuOTMtNDYuOTItMjUuMTcgNTIuNTctNy4zOC0xOS45OS00OS44NyA0NC45NSAyOC42MkwyNTYgMTY2LjcybDE2LjI5IDUxLjIzIDQ0Ljk1LTI4LjYyLTE5Ljk5IDQ5Ljg3IDUyLjU3IDcuMzgtNDYuOTIgMjUuMTcgMzUuNjEgMzkuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbGFuY2VTY2FsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDQ0OEgzNTJWMTUzLjI1YzIwLjQyLTguOTQgMzYuMS0yNi4yMiA0My4zOC00Ny40N2wxMzItNDQuMjZjOC4zOC0yLjgxIDEyLjg5LTExLjg4IDEwLjA4LTIwLjI2bC0xMC4xNy0zMC4zNEM1MjQuNDggMi41NCA1MTUuNDEtMS45NyA1MDcuMDMuODRMMzg5LjExIDQwLjM3QzM3NS4zIDE2LjM2IDM0OS42OSAwIDMyMCAwYy00NC4xOCAwLTgwIDM1LjgyLTgwIDgwIDAgMy40My41OSA2LjcxIDEuMDEgMTAuMDNsLTEyOC4zOSA0My4wNWMtOC4zOCAyLjgxLTEyLjg5IDExLjg4LTEwLjA4IDIwLjI2bDEwLjE3IDMwLjM0YzIuODEgOC4zOCAxMS44OCAxMi44OSAyMC4yNiAxMC4wOGwxNDIuMDUtNDcuNjNjNC4wNyAyLjc3IDguNDMgNS4xMiAxMi45OSA3LjEyVjQ5NmMwIDguODQgNy4xNiAxNiAxNiAxNmgyMjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYy0uMDEtOC44NC03LjE3LTE2LTE2LjAxLTE2em0xMTEuOTgtMTQ0YzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MS0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwLTg3LjEyIDE3NC4yNi04NS4wNCAxNjUuODQtODUuMDQgMTgxLjUxSDM4NGMwIDQ0LjE4IDU3LjMxIDgwIDEyOCA4MHMxMjgtMzUuODIgMTI4LTgwaC0uMDJ6TTQ0MCAyODhsNzItMTQ0IDcyIDE0NEg0NDB6bS0yNjkuMDctMzcuNTFjLTE3LjY1LTM1LjI5LTY4LjE5LTM1LjM2LTg1Ljg3IDBDLTIuMDYgNDI0Ljc1LjAyIDQxNi4zMy4wMiA0MzJIMGMwIDQ0LjE4IDU3LjMxIDgwIDEyOCA4MHMxMjgtMzUuODIgMTI4LTgwaC0uMDJjMC0xNi4xOCAxLjM0LTguNzMtODUuMDUtMTgxLjUxek01NiA0MTZsNzItMTQ0IDcyIDE0NEg1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFsYW5jZVNjYWxlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNDY0djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDIyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNTMuMjVjNC41Ni0yIDguOTItNC4zNSAxMi45OS03LjEybDE0Mi4wNSA0Ny42M2M4LjM4IDIuODEgMTcuNDUtMS43MSAyMC4yNi0xMC4wOGwxMC4xNy0zMC4zNGMyLjgxLTguMzgtMS43MS0xNy40NS0xMC4wOC0yMC4yNmwtMTI4LjQtNDMuMDVjLjQyLTMuMzIgMS4wMS02LjYgMS4wMS0xMC4wMyAwLTQ0LjE4LTM1LjgyLTgwLTgwLTgwLTI5LjY5IDAtNTUuMyAxNi4zNi02OS4xMSA0MC4zN0wxMzIuOTYuODNjLTguMzgtMi44MS0xNy40NSAxLjcxLTIwLjI2IDEwLjA4bC0xMC4xNyAzMC4zNGMtMi44MSA4LjM4IDEuNzEgMTcuNDUgMTAuMDggMjAuMjZsMTMyIDQ0LjI2YzcuMjggMjEuMjUgMjIuOTYgMzguNTQgNDMuMzggNDcuNDdWNDQ4SDExMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ6TTAgMzA0YzAgNDQuMTggNTcuMzEgODAgMTI4IDgwczEyOC0zNS44MiAxMjgtODBoLS4wMmMwLTE1LjY3IDIuMDgtNy4yNS04NS4wNS0xODEuNTEtMTcuNjgtMzUuMzYtNjguMjItMzUuMjktODUuODcgMEMtMS4zMiAyOTUuMjcuMDIgMjg3LjgyLjAyIDMwNEgwem01Ni0xNmw3Mi0xNDQgNzIgMTQ0SDU2em0zMjguMDIgMTQ0SDM4NGMwIDQ0LjE4IDU3LjMxIDgwIDEyOCA4MHMxMjgtMzUuODIgMTI4LTgwaC0uMDJjMC0xNS42NyAyLjA4LTcuMjUtODUuMDUtMTgxLjUxLTE3LjY4LTM1LjM2LTY4LjIyLTM1LjI5LTg1Ljg3IDAtODYuMzggMTcyLjc4LTg1LjA0IDE2NS4zMy04NS4wNCAxODEuNTF6TTQ0MCA0MTZsNzItMTQ0IDcyIDE0NEg0NDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbGFuY2VTY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzM2aC0uMDJjMC0xNi4xOCAxLjM0LTguNzMtODUuMDUtMTgxLjUxLTE3LjY1LTM1LjI5LTY4LjE5LTM1LjM2LTg1Ljg3IDBDLTIuMDYgMzI4Ljc1LjAyIDMyMC4zMy4wMiAzMzZIMGMwIDQ0LjE4IDU3LjMxIDgwIDEyOCA4MHMxMjgtMzUuODIgMTI4LTgwek0xMjggMTc2bDcyIDE0NEg1Nmw3Mi0xNDR6bTUxMS45OCAxNjBjMC0xNi4xOCAxLjM0LTguNzMtODUuMDUtMTgxLjUxLTE3LjY1LTM1LjI5LTY4LjE5LTM1LjM2LTg1Ljg3IDAtODcuMTIgMTc0LjI2LTg1LjA0IDE2NS44NC04NS4wNCAxODEuNTFIMzg0YzAgNDQuMTggNTcuMzEgODAgMTI4IDgwczEyOC0zNS44MiAxMjgtODBoLS4wMnpNNDQwIDMyMGw3Mi0xNDQgNzIgMTQ0SDQ0MHptODggMTI4SDM1MlYxNTMuMjVjMjMuNTEtMTAuMjkgNDEuMTYtMzEuNDggNDYuMzktNTcuMjVINTI4YzguODQgMCAxNi03LjE2IDE2LTE2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2SDM4My42NEMzNjkuMDQgMTIuNjggMzQ2LjA5IDAgMzIwIDBzLTQ5LjA0IDEyLjY4LTYzLjY0IDMySDExMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTI5LjYxYzUuMjMgMjUuNzYgMjIuODcgNDYuOTYgNDYuMzkgNTcuMjVWNDQ4SDExMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzQgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzNCAyNDggMjQ4IDI0OCAyNDgtMTExLjAzNCAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMTMwLjEwOCAxMTcuODkyYzY1LjQ0OCA2NS40NDggNzAgMTY1LjQ4MSAyMC42NzcgMjM1LjYzN0wxNTAuNDcgMTA1LjIxNmM3MC4yMDQtNDkuMzU2IDE3MC4yMjYtNDQuNzM1IDIzNS42MzggMjAuNjc2ek0xMjUuODkyIDM4Ni4xMDhjLTY1LjQ0OC02NS40NDgtNzAtMTY1LjQ4MS0yMC42NzctMjM1LjYzN0wzNjEuNTMgNDA2Ljc4NGMtNzAuMjAzIDQ5LjM1Ni0xNzAuMjI2IDQ0LjczNi0yMzUuNjM4LTIwLjY3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFuZEFpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2MHYxOTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTZWOTZINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0em01NzYtNjRoLTk2djMyMGg5NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTE5MiA0MTZoMjU2Vjk2SDE5MnYzMjB6bTE3Ni0yMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0wIDk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptLTk2LTk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptMCA5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0NDhWNjRoMTh2Mzg0SDB6bTI2Ljg1Ny0uMjczVjY0SDM2djM4My43MjdoLTkuMTQzem0yNy4xNDMgMFY2NGg4Ljg1N3YzODMuNzI3SDU0em00NC44NTcgMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMzYgMFY2NGgxNy43MTR2MzgzLjcyN2gtMTcuNzE0em00NC44NTcgMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMTggMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMTggMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMzUuNzE1IDBWNjRoMTh2MzgzLjcyN2gtMTh6bTQ0Ljg1NyAwVjY0aDE4djM4My43MjdoLTE4em0zNS45OTkgMFY2NGgxOC4wMDF2MzgzLjcyN2gtMTguMDAxem0zNi4wMDEgMFY2NGgxOC4wMDF2MzgzLjcyN2gtMTguMDAxem0yNi44NTcgMFY2NGgxOHYzODMuNzI3aC0xOHptNDUuMTQzIDBWNjRoMjYuODU3djM4My43MjdoLTI2Ljg1N3ptMzUuNzE0IDBWNjRoOS4xNDN2MzgzLjcyN0g0NzZ6bTE4IC4yNzNWNjRoMTh2Mzg0aC0xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMzJoNDE2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZWNzZjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNkM3LjE2MyA2MCAwIDY3LjE2MyAwIDc2djQwYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZ6bTAgMTYwaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di00MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2SDE2Yy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djQwYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZ6bTAgMTYwaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di00MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2SDE2Yy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djQwYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhc2ViYWxsQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjguNSAzNjMuOWwyOC44LTEzLjljMTEuMSAyMi45IDI2IDQzLjIgNDQuMSA2MC45IDM0LTQyLjUgNTQuNS05Ni4zIDU0LjUtMTU0LjkgMC01OC41LTIwLjQtMTEyLjItNTQuMi0xNTQuNi0xNy44IDE3LjMtMzIuNiAzNy4xLTQzLjYgNTkuNWwtMjguNy0xNC4xYzEyLjgtMjYgMzAtNDkgNTAuOC02OUMzNzUuNiAzNC43IDMxNSA4IDI0OCA4IDE4MS4xIDggMTIwLjUgMzQuNiA3NS45IDc3LjdjMjAuNyAxOS45IDM3LjkgNDIuOSA1MC43IDY4LjhsLTI4LjcgMTQuMWMtMTEtMjIuMy0yNS43LTQyLjEtNDMuNS01OS40QzIwLjQgMTQzLjcgMCAxOTcuNCAwIDI1NmMwIDU4LjYgMjAuNCAxMTIuMyA1NC40IDE1NC43IDE4LjItMTcuNyAzMy4yLTM4IDQ0LjMtNjFsMjguOCAxMy45Yy0xMi45IDI2LjctMzAuMyA1MC4zLTUxLjUgNzAuNyA0NC41IDQzLjEgMTA1LjEgNjkuNyAxNzIgNjkuNyA2Ni44IDAgMTI3LjMtMjYuNSAxNzEuOS02OS41LTIxLjEtMjAuNC0zOC41LTQzLjktNTEuNC03MC42em0tMjI4LjMtMzJsLTMwLjUtOS44YzE0LjktNDYuNCAxMi43LTkzLjgtLjYtMTM0bDMwLjQtMTBjMTUgNDUuNiAxOCA5OS45LjcgMTUzLjh6bTIxNi4zLTE1My40bDMwLjQgMTBjLTEzLjIgNDAuMS0xNS41IDg3LjUtLjYgMTM0bC0zMC41IDkuOGMtMTcuMy01NC0xNC4zLTEwOC4zLjctMTUzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhc2tldGJhbGxCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMi4zIDEwLjNjLTQzLjggNi4zLTg2LjIgMjQuMS0xMjIuMiA1My44bDc3LjQgNzcuNGMyNy44LTM1LjggNDMuMy04MS4yIDQ0LjgtMTMxLjJ6TTI0OCAyMjJMNDA1LjkgNjQuMWMtNDIuNC0zNS05My42LTUzLjUtMTQ1LjUtNTYuMS0xLjIgNjMuOS0yMS41IDEyMi4zLTU4LjcgMTY3LjdMMjQ4IDIyMnpNNTYuMSA5OC4xYy0yOS43IDM2LTQ3LjUgNzguNC01My44IDEyMi4yIDUwLTEuNSA5NS41LTE3IDEzMS4yLTQ0LjhMNTYuMSA5OC4xem0yNzIuMiAyMDQuMmM0NS4zLTM3LjEgMTAzLjctNTcuNCAxNjcuNy01OC43LTIuNi01MS45LTIxLjEtMTAzLjEtNTYuMS0xNDUuNUwyODIgMjU2bDQ2LjMgNDYuM3pNMjQ4IDI5MEw5MC4xIDQ0Ny45YzQyLjQgMzQuOSA5My42IDUzLjUgMTQ1LjUgNTYuMSAxLjMtNjQgMjEuNi0xMjIuNCA1OC43LTE2Ny43TDI0OCAyOTB6bTE5MS45IDEyMy45YzI5LjctMzYgNDcuNS03OC40IDUzLjgtMTIyLjItNTAuMSAxLjYtOTUuNSAxNy4xLTEzMS4yIDQ0LjhsNzcuNCA3Ny40ek0xNjcuNyAyMDkuN0MxMjIuMyAyNDYuOSA2My45IDI2Ny4zIDAgMjY4LjRjMi42IDUxLjkgMjEuMSAxMDMuMSA1Ni4xIDE0NS41TDIxNCAyNTZsLTQ2LjMtNDYuM3ptMTE2IDI5MmM0My44LTYuMyA4Ni4yLTI0LjEgMTIyLjItNTMuOGwtNzcuNC03Ny40Yy0yNy43IDM1LjctNDMuMiA4MS4yLTQ0LjggMTMxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIsMzg0YTk1LjQsOTUuNCwwLDAsMCwzMiw3MS4wOVY0OTZhMTYsMTYsMCwwLDAsMTYsMTZoMzJhMTYsMTYsMCwwLDAsMTYtMTZWNDgwSDM4NHYxNmExNiwxNiwwLDAsMCwxNiwxNmgzMmExNiwxNiwwLDAsMCwxNi0xNlY0NTUuMDlBOTUuNCw5NS40LDAsMCwwLDQ4MCwzODRWMzM2SDMyWk00OTYsMjU2SDgwVjY5LjI1YTIxLjI2LDIxLjI2LDAsMCwxLDM2LjI4LTE1bDE5LjI3LDE5LjI2Yy0xMy4xMywyOS44OC03LjYxLDU5LjExLDguNjIsNzkuNzNsLS4xNy4xN0ExNiwxNiwwLDAsMCwxNDQsMTc2bDExLjMxLDExLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBMMjgzLjMxLDgxLjk0YTE2LDE2LDAsMCwwLDAtMjIuNjNMMjcyLDQ4YTE2LDE2LDAsMCwwLTIyLjYyLDBsLS4xNy4xN2MtMjAuNjItMTYuMjMtNDkuODMtMjEuNzUtNzkuNzMtOC42MkwxNTAuMjIsMjAuMjhBNjkuMjUsNjkuMjUsMCwwLDAsMzIsNjkuMjVWMjU2SDE2QTE2LDE2LDAsMCwwLDAsMjcydjE2YTE2LDE2LDAsMCwwLDE2LDE2SDQ5NmExNiwxNiwwLDAsMCwxNi0xNlYyNzJBMTYsMTYsMCwwLDAsNDk2LDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeUVtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS00OCA5Nkg5NnYxMjhoNDE2VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeUhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDE2MHY2NGgzMnY2NGgtMzJ2NjRINjRWMTYwaDQ4MG0xNi02NEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYyMjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg1MTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtMTZoOGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTg0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtOHYtMTZjMC0yNi41MS0yMS40OS00OC00OC00OHptLTI0MCA5Nkg5NnYxMjhoMjI0VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeVF1YXJ0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDE2MHY2NGgzMnY2NGgtMzJ2NjRINjRWMTYwaDQ4MG0xNi02NEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYyMjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg1MTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtMTZoOGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTg0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtOHYtMTZjMC0yNi41MS0yMS40OS00OC00OC00OHptLTMzNiA5Nkg5NnYxMjhoMTI4VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeVRocmVlUXVhcnRlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDE2MHY2NGgzMnY2NGgtMzJ2NjRINjRWMTYwaDQ4MG0xNi02NEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYyMjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg1MTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtMTZoOGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTg0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtOHYtMTZjMC0yNi41MS0yMS40OS00OC00OC00OHptLTE0NCA5Nkg5NnYxMjhoMzIwVjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAyNTZjNDQuMTEgMCA4MC0zNS44OSA4MC04MHMtMzUuODktODAtODAtODAtODAgMzUuODktODAgODAgMzUuODkgODAgODAgODB6bTM1Mi0xMjhIMzA0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDRINjRWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzUyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di00OGg1MTJ2NDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjQwYzAtNjEuODYtNTAuMTQtMTEyLTExMi0xMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDk2aC00OFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2NDAwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di00Mi4xMWw4MC42MDYtMzUuOTc3QzQyOS4zOTYgMzY1LjA2MyA0NDggMzM2LjM4OCA0NDggMzA0Ljg2VjE3NmMwLTQ0LjExMi0zNS44ODgtODAtODAtODB6bTE2IDIwOC44NmExNi4wMTggMTYuMDE4IDAgMCAxLTkuNDc5IDE0LjYxMUwzMjAgMzQzLjgwNVYxNjBoNDhjOC44MjIgMCAxNiA3LjE3OCAxNiAxNnYxMjguODZ6TTIwOCAzODRjLTguODM2IDAtMTYtNy4xNjQtMTYtMTZWMTQ0YzAtOC44MzYgNy4xNjQtMTYgMTYtMTZzMTYgNy4xNjQgMTYgMTZ2MjI0YzAgOC44MzYtNy4xNjQgMTYtMTYgMTZ6bS05NiAwYy04LjgzNiAwLTE2LTcuMTY0LTE2LTE2VjE0NGMwLTguODM2IDcuMTY0LTE2IDE2LTE2czE2IDcuMTY0IDE2IDE2djIyNGMwIDguODM2LTcuMTY0IDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWxsU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjgyIDQ1OC4xbC05MC42Mi03MC4wNWMuMTktMS4zOC44LTIuNjYuOC00LjA2LjA1LTcuNTUtMi42MS0xNS4yNy04LjYxLTIxLjcxLTE5LjMyLTIwLjc2LTU1LjQ3LTUxLjk5LTU1LjQ3LTE1NC4yOSAwLTc3LjctNTQuNDgtMTM5LjktMTI3Ljk0LTE1NS4xNlYzMmMwLTE3LjY3LTE0LjMyLTMyLTMxLjk4LTMycy0zMS45OCAxNC4zMy0zMS45OCAzMnYyMC44NGMtNDAuMzMgOC4zOC03NC42NiAzMS4wNy05Ny41OSA2Mi41N0w0NS40NyAzLjM3QzM4LjQ5LTIuMDUgMjguNDMtLjggMjMuMDEgNi4xOEwzLjM3IDMxLjQ1Qy0yLjA1IDM4LjQyLS44IDQ4LjQ3IDYuMTggNTMuOWw1ODguMzUgNDU0LjczYzYuOTggNS40MyAxNy4wMyA0LjE3IDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdjNS40Mi02Ljk3IDQuMTctMTcuMDItMi44MS0yMi40NXpNMTU3LjIzIDI1MS41NGMtOC42MSA2Ny45Ni0zNi40MSA5My4zMy01Mi42MiAxMTAuNzUtNiA2LjQ1LTguNjYgMTQuMTYtOC42MSAyMS43MS4xMSAxNi40IDEyLjk4IDMyIDMyLjEgMzJoMjQxLjkyTDE1Ny4yMyAyNTEuNTR6TTMyMCA1MTJjMzUuMzIgMCA2My45Ny0yOC42NSA2My45Ny02NEgyNTYuMDNjMCAzNS4zNSAyOC42NSA2NCA2My45NyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgNTEyYzM1LjMyIDAgNjMuOTctMjguNjUgNjMuOTctNjRIMTYwLjAzYzAgMzUuMzUgMjguNjUgNjQgNjMuOTcgNjR6bTIxNS4zOS0xNDkuNzFjLTE5LjMyLTIwLjc2LTU1LjQ3LTUxLjk5LTU1LjQ3LTE1NC4yOSAwLTc3LjctNTQuNDgtMTM5LjktMTI3Ljk0LTE1NS4xNlYzMmMwLTE3LjY3LTE0LjMyLTMyLTMxLjk4LTMycy0zMS45OCAxNC4zMy0zMS45OCAzMnYyMC44NEMxMTguNTYgNjguMSA2NC4wOCAxMzAuMyA2NC4wOCAyMDhjMCAxMDIuMy0zNi4xNSAxMzMuNTMtNTUuNDcgMTU0LjI5LTYgNi40NS04LjY2IDE0LjE2LTguNjEgMjEuNzEuMTEgMTYuNCAxMi45OCAzMiAzMi4xIDMyaDM4My44YzE5LjEyIDAgMzItMTUuNiAzMi4xLTMyIC4wNS03LjU1LTIuNjEtMTUuMjctOC42MS0yMS43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmV6aWVyQ3VydmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDMyaC05NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMjA4IDg4aC04NC43NUMxMTMuNzUgNjQuNTYgOTAuODQgNDggNjQgNDggMjguNjYgNDggMCA3Ni42NSAwIDExMnMyOC42NiA2NCA2NCA2NGMyNi44NCAwIDQ5Ljc1LTE2LjU2IDU5LjI1LTQwaDc5LjczYy01NS4zNyAzMi41Mi05NS44NiA4Ny4zMi0xMDkuNTQgMTUyaDQ5LjRjMTEuMy00MS42MSAzNi43Ny03Ny4yMSA3MS4wNC0xMDEuNTYtMy43LTguMDgtNS44OC0xNi45OS01Ljg4LTI2LjQ0Vjg4em0tNDggMjMySDY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNNTc2IDQ4Yy0yNi44NCAwLTQ5Ljc1IDE2LjU2LTU5LjI1IDQwSDQzMnY3MmMwIDkuNDUtMi4xOSAxOC4zNi01Ljg4IDI2LjQ0IDM0LjI3IDI0LjM1IDU5Ljc0IDU5Ljk1IDcxLjA0IDEwMS41Nmg0OS40Yy0xMy42OC02NC42OC01NC4xNy0xMTkuNDgtMTA5LjU0LTE1Mmg3OS43M2M5LjUgMjMuNDQgMzIuNDEgNDAgNTkuMjUgNDAgMzUuMzQgMCA2NC0yOC42NSA2NC02NHMtMjguNjYtNjQtNjQtNjR6bTAgMjcyaC05NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzNTguNFYyNS42YzAtMTYtOS42LTI1LjYtMjUuNi0yNS42SDk2QzQxLjYgMCAwIDQxLjYgMCA5NnYzMjBjMCA1NC40IDQxLjYgOTYgOTYgOTZoMzI2LjRjMTIuOCAwIDI1LjYtOS42IDI1LjYtMjUuNnYtMTZjMC02LjQtMy4yLTEyLjgtOS42LTE5LjItMy4yLTE2LTMuMi02MC44IDAtNzMuNiA2LjQtMy4yIDkuNi05LjYgOS42LTE5LjJ6TTE0NCAxNDRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoNDhWODBjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NDhoNDhjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MzJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTQ4djExMmMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2VjE5MmgtNDhjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMnptMjM2LjggMzA0SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmljeWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIuNTA5IDE5Mi4wMDFjLTE2LjM3My0uMDY0LTMyLjAzIDIuOTU1LTQ2LjQzNiA4LjQ5NWwtNzcuNjgtMTI1LjE1M0EyNCAyNCAwIDAgMCAzNjguMDAxIDY0aC02NGMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnYxNmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDUwLjY0OWwxNC44OTYgMjRIMjU2LjAwMnYtMTZjMC04LjgzNy03LjE2My0xNi0xNi0xNmgtODcuNDU5Yy0xMy40NDEgMC0yNC43NzcgMTAuOTk5LTI0LjUzNiAyNC40MzcuMjMyIDEzLjA0NCAxMC44NzYgMjMuNTYzIDIzLjk5NSAyMy41NjNoNDguNzI2bC0yOS40MTcgNDcuNTJjLTEzLjQzMy00LjgzLTI3LjkwNC03LjQ4My00Mi45OTItNy41MkM1OC4wOTQgMTkxLjgzLjQxMiAyNDkuMDEyLjAwMiAzMTkuMjM2LS40MTMgMzkwLjI3OSA1Ny4wNTUgNDQ4IDEyOC4wMDIgNDQ4YzU5LjY0MiAwIDEwOS43NTgtNDAuNzkzIDEyMy45NjctOTZoNTIuMDMzYTI0IDI0IDAgMCAwIDIwLjQwNi0xMS4zNjdMNDEwLjM3IDIwMS43N2wxNC45MzggMjQuMDY3Yy0yNS40NTUgMjMuNDQ4LTQxLjM4NSA1Ny4wODEtNDEuMzA3IDk0LjQzNy4xNDUgNjguODMzIDU3Ljg5OSAxMjcuMDUxIDEyNi43MjkgMTI3LjcxOSA3MC42MDYuNjg1IDEyOC4xODEtNTUuODAzIDEyOS4yNTUtMTI1Ljk5NiAxLjA4Ni03MC45NDEtNTYuNTI2LTEyOS43Mi0xMjcuNDc2LTEyOS45OTZ6TTE4Ni43NSAyNjUuNzcyYzkuNzI3IDEwLjUyOSAxNi42NzMgMjMuNjYxIDE5LjY0MiAzOC4yMjhoLTQzLjMwNmwyMy42NjQtMzguMjI4ek0xMjguMDAyIDQwMGMtNDQuMTEyIDAtODAtMzUuODg4LTgwLTgwczM1Ljg4OC04MCA4MC04MGM1Ljg2OSAwIDExLjU4Ni42NTMgMTcuMDk5IDEuODU5bC00NS41MDUgNzMuNTA5Qzg5LjcxNSAzMzEuMzI3IDEwMS4yMTMgMzUyIDEyMC4wMDIgMzUyaDgxLjNjLTEyLjM3IDI4LjIyNS00MC41NjIgNDgtNzMuMyA0OHptMTYyLjYzLTk2aC0zNS42MjRjLTMuOTYtMzEuNzU2LTE5LjU1Ni01OS44OTQtNDIuMzgzLTgwLjAyNkwyMzcuMzcxIDE4NGgxMjcuNTQ3bC03NC4yODYgMTIwem0yMTcuMDU3IDk1Ljg4NmMtNDEuMDM2LTIuMTY1LTc0LjA0OS0zNS42OTItNzUuNjI3LTc2Ljc1NS0uODEyLTIxLjEyMSA2LjYzMy00MC41MTggMTkuMzM1LTU1LjI2M2w0NC40MzMgNzEuNTg2YzQuNjYgNy41MDggMTQuNTI0IDkuODE2IDIyLjAzMiA1LjE1NmwxMy41OTQtOC40MzdjNy41MDgtNC42NiA5LjgxNy0xNC41MjQgNS4xNTYtMjIuMDMybC00NC40NjgtNzEuNjQzYTc5LjkwMSA3OS45MDEgMCAwIDEgMTkuODU4LTIuNDk3YzQ0LjExMiAwIDgwIDM1Ljg4OCA4MCA4MC0uMDAxIDQ1LjU0LTM4LjI1MiA4Mi4zMTYtODQuMzEzIDc5Ljg4NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA5NmE0OCA0OCAwIDEgMC00OC00OCA0OCA0OCAwIDAgMCA0OCA0OHptLTQgMTIxYTMxLjkgMzEuOSAwIDAgMCAyMCA3aDY0YTMyIDMyIDAgMCAwIDAtNjRoLTUyLjc4TDM1NiAxMDNhMzEuOTQgMzEuOTQgMCAwIDAtNDAuODEuNjhsLTExMiA5NmEzMiAzMiAwIDAgMCAzLjA4IDUwLjkyTDI4OCAzMDUuMTJWNDE2YTMyIDMyIDAgMCAwIDY0IDBWMjg4YTMyIDMyIDAgMCAwLTE0LjI1LTI2LjYybC00MS4zNi0yNy41NyA1OC4yNS00OS45MnptMTE2IDM5YTEyOCAxMjggMCAxIDAgMTI4IDEyOCAxMjggMTI4IDAgMCAwLTEyOC0xMjh6bTAgMTkyYTY0IDY0IDAgMSAxIDY0LTY0IDY0IDY0IDAgMCAxLTY0IDY0ek0xMjggMjU2YTEyOCAxMjggMCAxIDAgMTI4IDEyOCAxMjggMTI4IDAgMCAwLTEyOC0xMjh6bTAgMTkyYTY0IDY0IDAgMSAxIDY0LTY0IDY0IDY0IDAgMCAxLTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaW5vY3VsYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiA0OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtNjRjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aDk2VjQ4ek02My45MSAxNTkuOTlDNjEuNCAyNTMuODQgMy40NiAyNzQuMjIgMCA0MDR2NDRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI4OGgzMlYxMjhIOTUuODRjLTE3LjYzIDAtMzEuNDUgMTQuMzctMzEuOTMgMzEuOTl6bTM4NC4xOCAwYy0uNDgtMTcuNjItMTQuMy0zMS45OS0zMS45My0zMS45OUgzMjB2MTYwaDMydjE2MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTQ0Yy0zLjQ2LTEyOS43OC02MS40LTE1MC4xNi02My45MS0yNDQuMDF6TTE3NiAzMmgtNjRjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aDk2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2em00OCAyNTZoNjRWMTI4aC02NHYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpb2hhemFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODcuOSAxMTJjMTguNiAwIDM2LjIgMy44IDUyLjggOS42IDEzLjMtMTAuMyAyMy42LTI0LjMgMjkuNS00MC43LTI1LjItMTAuOS01My0xNy04Mi4yLTE3LTI5LjEgMC01Ni45IDYtODIuMSAxNi45IDUuOSAxNi40IDE2LjIgMzAuNCAyOS41IDQwLjcgMTYuNS01LjcgMzQtOS41IDUyLjUtOS41ek0xNjMuNiA0MzguN2MxMi0xMS44IDIwLjQtMjYuNCAyNC41LTQyLjQtMzIuOS0yNi40LTU0LjgtNjUuMy01OC45LTEwOS42LTguNS0yLjgtMTcuMi00LjYtMjYuNC00LjYtNy42IDAtMTUuMiAxLTIyLjUgMy4xIDQuMSA2Mi44IDM1LjggMTE4IDgzLjMgMTUzLjV6bTIyNC4yLTQyLjZjNC4xIDE2IDEyLjUgMzAuNyAyNC41IDQyLjUgNDcuNC0zNS41IDc5LjEtOTAuNyA4My0xNTMuNS03LjItMi0xNC43LTMtMjIuMi0zLTkuMiAwLTE4IDEuOS0yNi42IDQuNy00LjEgNDQuMi0yNiA4Mi45LTU4LjcgMTA5LjN6bTExMy41LTIwNWMtMTcuNi0xMC40LTM2LjMtMTYuNi01NS4zLTE5LjkgNi0xNy43IDEwLTM2LjQgMTAtNTYuMiAwLTQxLTE0LjUtODAuOC00MS0xMTIuMi0yLjUtMy02LjYtMy43LTEwLTEuOC0zLjMgMS45LTQuOCA2LTMuNiA5LjcgNC41IDEzLjggNi42IDI2LjMgNi42IDM4LjUgMCA2Ny44LTUzLjggMTIyLjktMTIwIDEyMi45UzE2OCAxMTcgMTY4IDQ5LjJjMC0xMi4xIDIuMi0yNC43IDYuNi0zOC41IDEuMi0zLjctLjMtNy44LTMuNi05LjctMy40LTEuOS03LjUtMS4yLTEwIDEuOEMxMzQuNiAzNC4yIDEyMCA3NCAxMjAgMTE1YzAgMTkuOCAzLjkgMzguNSAxMCA1Ni4yLTE4LjkgMy4zLTM3LjcgOS41LTU1LjMgMTkuOS0zNC42IDIwLjUtNjEgNTMuMy03NC4zIDkyLjQtMS4zIDMuNy4yIDcuNyAzLjUgOS44IDMuMyAyIDcuNSAxLjMgMTAtMS42IDkuNC0xMC44IDE5LTE5LjEgMjkuMi0yNS4xIDU3LjMtMzMuOSAxMzAuOC0xMy43IDE2My45IDQ1IDMzLjEgNTguNyAxMy40IDEzNC00My45IDE2Ny45LTEwLjIgNi4xLTIyIDEwLjQtMzUuOCAxMy40LTMuNy44LTYuNCA0LjItNi40IDguMS4xIDQgMi43IDcuMyA2LjUgOCAzOS43IDcuOCA4MC42LjggMTE1LjItMTkuNyAxOC0xMC42IDMyLjktMjQuNSA0NS4zLTQwLjEgMTIuNCAxNS42IDI3LjMgMjkuNSA0NS4zIDQwLjEgMzQuNiAyMC41IDc1LjUgMjcuNSAxMTUuMiAxOS43IDMuOC0uNyA2LjQtNCA2LjUtOCAwLTMuOS0yLjYtNy4zLTYuNC04LjEtMTMuOS0yLjktMjUuNi03LjMtMzUuOC0xMy40LTU3LjMtMzMuOS03Ny0xMDkuMi00My45LTE2Ny45czEwNi42LTc4LjkgMTYzLjktNDVjMTAuMiA2LjEgMTkuOCAxNC4zIDI5LjIgMjUuMSAyLjUgMi45IDYuNyAzLjYgMTAgMS42czQuOC02LjEgMy41LTkuOGMtMTMuMS0zOS4xLTM5LjUtNzItNzQuMS05Mi40em0tMjEzLjQgMTI5Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlydGhkYXlDYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzODRjLTI4LjAyIDAtMzEuMjYtMzItNzQuNS0zMi00My40MyAwLTQ2LjgyNSAzMi03NC43NSAzMi0yNy42OTUgMC0zMS40NTQtMzItNzQuNzUtMzItNDIuODQyIDAtNDcuMjE4IDMyLTc0LjUgMzItMjguMTQ4IDAtMzEuMjAyLTMyLTc0Ljc1LTMyLTQzLjU0NyAwLTQ2LjY1MyAzMi03NC43NSAzMnYtODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMTZWMTEyaDY0djE0NGg2NFYxMTJoNjR2MTQ0aDY0VjExMmg2NHYxNDRoMTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2ODB6bTAgMTI4SDB2LTk2YzQzLjM1NiAwIDQ2Ljc2Ny0zMiA3NC43NS0zMiAyNy45NTEgMCAzMS4yNTMgMzIgNzQuNzUgMzIgNDIuODQzIDAgNDcuMjE3LTMyIDc0LjUtMzIgMjguMTQ4IDAgMzEuMjAxIDMyIDc0Ljc1IDMyIDQzLjM1NyAwIDQ2Ljc2Ny0zMiA3NC43NS0zMiAyNy40ODggMCAzMS4yNTIgMzIgNzQuNSAzMnY5NnpNOTYgOTZjLTE3Ljc1IDAtMzItMTQuMjUtMzItMzIgMC0zMSAzMi0yMyAzMi02NCAxMiAwIDMyIDI5LjUgMzIgNTZzLTE0LjI1IDQwLTMyIDQwem0xMjggMGMtMTcuNzUgMC0zMi0xNC4yNS0zMi0zMiAwLTMxIDMyLTIzIDMyLTY0IDEyIDAgMzIgMjkuNSAzMiA1NnMtMTQuMjUgNDAtMzIgNDB6bTEyOCAwYy0xNy43NSAwLTMyLTE0LjI1LTMyLTMyIDAtMzEgMzItMjMgMzItNjQgMTIgMCAzMiAyOS41IDMyIDU2cy0xNC4yNSA0MC0zMiA0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxlbmRlclBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5MiA2NGgxNjYuNTRMNTc2IDBIMTkydjM1MmgyODhsMTcuNDYtNjRIMzkyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTE0LjE4bDE3LjQ2LTY0SDM5MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDE0MC4zNmwxNy40Ni02NEgzOTJjLTQuNDIgMC04LTMuNTgtOC04VjcyYzAtNC40MiAzLjU4LTggOC04ek0xNTguOCAzMzUuMDFsLTI1Ljc4LTYzLjI2Yy0yLjc4LTYuODEtOS44LTEwLjk5LTE3LjI0LTEwLjI2bC00NS4wMyA0LjQyYy0xNy4yOC00Ni45NC0xNy42NS05OS43OCAwLTE0Ny43Mmw0NS4wMyA0LjQyYzcuNDMuNzMgMTQuNDYtMy40NiAxNy4yNC0xMC4yNmwyNS43OC02My4yNmMzLjAyLTcuMzkuMi0xNS44NS02LjY4LTIwLjA3bC0zOS4yOC0yNC4xQzk4LjUxLTMuODcgODAuMDktLjUgNjguOTUgMTEuOTdjLTkyLjU3IDEwMy42LTkyIDI1OS41NSAyLjEgMzYyLjQ5IDkuODcgMTAuOCAyOS4xMiAxMi40OCA0MS42NSA0LjhsMzkuNDEtMjQuMThjNi44OS00LjIyIDkuNy0xMi42NyA2LjY5LTIwLjA3ek00ODAgMzg0SDE5MmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM1MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tMTQ0IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbGVuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzODRIMTYwYy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzIwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6bS0xMjggOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTQwLTQxNmgxNjYuNTRMNTEyIDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2MTYwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMTAzLjI3bDguNzMgOTZoMjU2bDE3LjQ2LTY0SDMyOGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExNC4xOGwxNy40Ni02NEgzMjhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxNDAuMzZsMTcuNDYtNjRIMzI4Yy00LjQyIDAtOC0zLjU4LTgtOFY3MmMwLTQuNDIgMy41OC04IDgtOHpNNjQgMTkyVjY0aDY5LjgybDExLjY0IDEyOEg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjE1IDUxMC44MzdhOCA4IDAgMCAxLTEwLjk4OS0yLjY4N2wtMTI1LjMzLTIwNi40MjdhMzEuOTIzIDMxLjkyMyAwIDAgMCAxMi45NTgtOS40ODVsMTI2LjA0OCAyMDcuNjA4YTggOCAwIDAgMS0yLjY4NyAxMC45OTF6TTE0Mi44MDMgMzE0LjMzOGwtMzIuNTQgODkuNDg1IDM2LjEyIDg4LjI4NWM2LjY5MyAxNi4zNiAyNS4zNzcgMjQuMTkyIDQxLjczMyAxNy41MDEgMTYuMzU3LTYuNjkyIDI0LjE5My0yNS4zNzYgMTcuNTAxLTQxLjczNGwtNjIuODE0LTE1My41Mzd6TTk2IDg4YzI0LjMwMSAwIDQ0LTE5LjY5OSA0NC00NFMxMjAuMzAxIDAgOTYgMCA1MiAxOS42OTkgNTIgNDRzMTkuNjk5IDQ0IDQ0IDQ0em0xNTQuODM3IDE2OS4xMjhsLTEyMC0xNTJjLTQuNzMzLTUuOTk1LTExLjc1LTkuMTA4LTE4LjgzNy05LjExMlY5Nkg4MHYuMDI2Yy03LjE0Ni4wMDMtMTQuMjE3IDMuMTYxLTE4Ljk0NCA5LjI0TDAgMTgzLjc2NnY5NS42OTRjMCAxMy40NTUgMTEuMDExIDI0Ljc5MSAyNC40NjQgMjQuNTM2QzM3LjUwNSAzMDMuNzQ4IDQ4IDI5My4xIDQ4IDI4MHYtNzkuNzY2bDE2LTIwLjU3MXYxNDAuNjk4TDkuOTI3IDQ2OS4wNTVjLTYuMDQgMTYuNjA5IDIuNTI4IDM0Ljk2OSAxOS4xMzggNDEuMDA5IDE2LjYwMiA2LjAzOSAzNC45NjgtMi41MjQgNDEuMDA5LTE5LjEzOEwxMzYgMzA5LjYzOFYyMDIuNDQxbC0zMS40MDYtMzkuODE2YTQgNCAwIDEgMSA2LjI2OS00Ljk3MWwxMDIuMyAxMjkuMjE3YzkuMTQ1IDExLjU4NCAyNC4zNjggMTEuMzM5IDMzLjcwOCAzLjk2NSAxMC40MS04LjIxNiAxMi4xNTktMjMuMzM0IDMuOTY2LTMzLjcwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzIuMiAyMjYuOGMtMTQuNi0yLjktMjguMiA4LjktMjguMiAyMy44VjMwMWMwIDEwLjIgNy4xIDE4LjQgMTYuNyAyMiAxOC4yIDYuOCAzMS4zIDI0LjQgMzEuMyA0NSAwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI0OGMwIDg5LjUgODIuMSAxNjAuMiAxNzUgMTQwLjcgNTQuNC0xMS40IDk4LjMtNTUuNCAxMDkuNy0xMDkuNyAxNy40LTgyLjktMzctMTU3LjItMTEyLjUtMTcyLjJ6TTIwOSAwYy05LjItLjUtMTcgNi44LTE3IDE2djMxLjZjMCA4LjUgNi42IDE1LjUgMTUgMTUuOSAxMjkuNCA3IDIzMy40IDExMiAyNDAuOSAyNDEuNS41IDguNCA3LjUgMTUgMTUuOSAxNWgzMi4xYzkuMiAwIDE2LjUtNy44IDE2LTE3QzUwMy40IDEzOS44IDM3Mi4yIDguNiAyMDkgMHptLjMgOTZjLTkuMy0uNy0xNy4zIDYuNy0xNy4zIDE2LjF2MzIuMWMwIDguNCA2LjUgMTUuMyAxNC44IDE1LjkgNzYuOCA2LjMgMTM4IDY4LjIgMTQ0LjkgMTQ1LjIuOCA4LjMgNy42IDE0LjcgMTUuOSAxNC43aDMyLjJjOS4zIDAgMTYuOC04IDE2LjEtMTcuMy04LjQtMTEwLjEtOTYuNS0xOTguMi0yMDYuNi0yMDYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9sZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzMuNDkgMjM4YTEyMiAxMjIgMCAwIDAgMjctNjUuMjFDMzY3Ljg3IDk2LjQ5IDMwOCAzMiAyMzMuNDIgMzJIMzRhMTYgMTYgMCAwIDAtMTYgMTZ2NDhhMTYgMTYgMCAwIDAgMTYgMTZoMzEuODd2Mjg4SDM0YTE2IDE2IDAgMCAwLTE2IDE2djQ4YTE2IDE2IDAgMCAwIDE2IDE2aDIwOS4zMmM3MC44IDAgMTM0LjE0LTUxLjc1IDE0MS0xMjIuNCA0Ljc0LTQ4LjQ1LTE2LjM5LTkyLjA2LTUwLjgzLTExOS42ek0xNDUuNjYgMTEyaDg3Ljc2YTQ4IDQ4IDAgMCAxIDAgOTZoLTg3Ljc2em04Ny43NiAyODhoLTg3Ljc2VjI4OGg4Ny43NmE1NiA1NiAwIDAgMSAwIDExMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTYgMTYwSDE4MC42bDQyLjYtMTI5LjhDMjI3LjIgMTUgMjE1LjcgMCAyMDAgMEg1NkM0NCAwIDMzLjggOC45IDMyLjIgMjAuOGwtMzIgMjQwQy0xLjcgMjc1LjIgOS41IDI4OCAyNCAyODhoMTE4LjdMOTYuNiA0ODIuNWMtMy42IDE1LjIgOCAyOS41IDIzLjMgMjkuNSA4LjQgMCAxNi40LTQuNCAyMC44LTEybDE3Ni0zMDRjOS4zLTE1LjktMi4yLTM2LTIwLjctMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjUgODguNWwtNTIgNTJMNDE1IDE2N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMTcuNCAxNy40YzExLjggMjYuMSAxOC40IDU1LjEgMTguNCA4NS42IDAgMTE0LjktOTMuMSAyMDgtMjA4IDIwOFMwIDQxOC45IDAgMzA0IDkzLjEgOTYgMjA4IDk2YzMwLjUgMCA1OS41IDYuNiA4NS42IDE4LjRMMzExIDk3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDI2LjUgMjYuNSA1Mi01MiAxNy4xIDE3ek01MDAgNjBoLTI0Yy02LjYgMC0xMiA1LjQtMTIgMTJzNS40IDEyIDEyIDEyaDI0YzYuNiAwIDEyLTUuNCAxMi0xMnMtNS40LTEyLTEyLTEyek00NDAgMGMtNi42IDAtMTIgNS40LTEyIDEydjI0YzAgNi42IDUuNCAxMiAxMiAxMnMxMi01LjQgMTItMTJWMTJjMC02LjYtNS40LTEyLTEyLTEyem0zMy45IDU1bDE3LTE3YzQuNy00LjcgNC43LTEyLjMgMC0xNy00LjctNC43LTEyLjMtNC43LTE3IDBsLTE3IDE3Yy00LjcgNC43LTQuNyAxMi4zIDAgMTcgNC44IDQuNyAxMi40IDQuNyAxNyAwem0tNjcuOCAwYzQuNyA0LjcgMTIuMyA0LjcgMTcgMCA0LjctNC43IDQuNy0xMi4zIDAtMTdsLTE3LTE3Yy00LjctNC43LTEyLjMtNC43LTE3IDAtNC43IDQuNy00LjcgMTIuMyAwIDE3bDE3IDE3em02Ny44IDM0Yy00LjctNC43LTEyLjMtNC43LTE3IDAtNC43IDQuNy00LjcgMTIuMyAwIDE3bDE3IDE3YzQuNyA0LjcgMTIuMyA0LjcgMTcgMCA0LjctNC43IDQuNy0xMi4zIDAtMTdsLTE3LTE3ek0xMTIgMjcyYzAtMzUuMyAyOC43LTY0IDY0LTY0IDguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2Yy01Mi45IDAtOTYgNDMuMS05NiA5NiAwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5OC44OCAyNDQuNTZjMjUuMi0xMi42IDQxLjEyLTM4LjM2IDQxLjEyLTY2LjUzdi03LjY0QzY0MCAxMjkuMyA2MDYuNyA5NiA1NjUuNjEgOTZjLTMyLjAyIDAtNjAuNDQgMjAuNDktNzAuNTcgNTAuODYtNy42OCAyMy4wMy0xMS42IDQ1LjE0LTM4LjExIDQ1LjE0SDE4My4wNmMtMjcuMzggMC0zMS41OC0yNS41NC0zOC4xMS00NS4xNEMxMzQuODMgMTE2LjQ5IDEwNi40IDk2IDc0LjM5IDk2IDMzLjMgOTYgMCAxMjkuMyAwIDE3MC4zOXY3LjY0YzAgMjguMTcgMTUuOTIgNTMuOTMgNDEuMTIgNjYuNTMgOS40MyA0LjcxIDkuNDMgMTguMTcgMCAyMi44OEMxNS45MiAyODAuMDQgMCAzMDUuOCAwIDMzMy45N3Y3LjY0QzAgMzgyLjcgMzMuMyA0MTYgNzQuMzggNDE2YzMyLjAyIDAgNjAuNDQtMjAuNDkgNzAuNTctNTAuODYgNy42OC0yMy4wMyAxMS42LTQ1LjE0IDM4LjExLTQ1LjE0aDI3My44N2MyNy4zOCAwIDMxLjU4IDI1LjU0IDM4LjExIDQ1LjE0QzUwNS4xNyAzOTUuNTEgNTMzLjYgNDE2IDU2NS42MSA0MTZjNDEuMDggMCA3NC4zOC0zMy4zIDc0LjM4LTc0LjM5di03LjY0YzAtMjguMTgtMTUuOTItNTMuOTMtNDEuMTItNjYuNTMtOS40Mi00LjcxLTkuNDItMTguMTcuMDEtMjIuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAyLjUgNTEyYzIzLjE4IDAgNDQuNDMtMTIuNTggNTYtMzIuNjZDMzc0LjY5IDQ1MS4yNiAzODQgNDE4Ljc1IDM4NCAzODRjMC0zNi4xMi0xMC4wOC02OS44MS0yNy40NC05OC42Mkw0MDAgMjQxLjk0bDkuMzggOS4zOGM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDExLjMtMTEuMzJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtNTIuNjktNTIuNjljLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTExLjMxIDExLjMxYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDkuMzggOS4zOC0zOS40MSAzOS40MWMtMTEuNTYtMTEuMzctMjQuNTMtMjEuMzMtMzguNjUtMjkuNTFWNjMuNzRsMTUuOTctLjAyYzguODItLjAxIDE1Ljk3LTcuMTYgMTUuOTgtMTUuOThsLjA0LTMxLjcyQzMyMCA3LjE3IDMxMi44Mi0uMDEgMzAzLjk3IDBMODAuMDMuMjZjLTguODIuMDEtMTUuOTcgNy4xNi0xNS45OCAxNS45OGwtLjA0IDMxLjczYy0uMDEgOC44NSA3LjE3IDE2LjAyIDE2LjAyIDE2LjAxTDk2IDYzLjk2djE1My45M0MzOC42NyAyNTEuMSAwIDMxMi45NyAwIDM4NGMwIDM0Ljc1IDkuMzEgNjcuMjcgMjUuNSA5NS4zNEMzNy4wOCA0OTkuNDIgNTguMzMgNTEyIDgxLjUgNTEyaDIyMXpNMTIwLjA2IDI1OS40M0wxNDQgMjQ1LjU2VjYzLjkxbDk2LS4xMXYxODEuNzZsMjMuOTQgMTMuODdjMjQuODEgMTQuMzcgNDQuMTIgMzUuNzMgNTYuNTYgNjAuNTdoLTI1N2MxMi40NS0yNC44NCAzMS43NS00Ni4yIDU2LjU2LTYwLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rRGVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIgMTM2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6bTE3NiAyMjIuNFYyNS42YzAtMTYtOS42LTI1LjYtMjUuNi0yNS42SDk2QzQxLjYgMCAwIDQxLjYgMCA5NnYzMjBjMCA1NC40IDQxLjYgOTYgOTYgOTZoMzI2LjRjMTIuOCAwIDI1LjYtOS42IDI1LjYtMjUuNnYtMTZjMC02LjQtMy4yLTEyLjgtOS42LTE5LjItMy4yLTE2LTMuMi02MC44IDAtNzMuNiA2LjQtMy4yIDkuNi05LjYgOS42LTE5LjJ6TTI0MCA1NmM0NC4yIDAgODAgMjguNyA4MCA2NCAwIDIwLjktMTIuNyAzOS4yLTMyIDUwLjlWMTg0YzAgOC44LTcuMiAxNi0xNiAxNmgtNjRjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTMuMWMtMTkuMy0xMS43LTMyLTMwLTMyLTUwLjkgMC0zNS4zIDM1LjgtNjQgODAtNjR6TTEyNC44IDIyMy4zbDYuMy0xNC43YzEuNy00LjEgNi40LTUuOSAxMC41LTQuMmw5OC4zIDQyLjEgOTguNC00Mi4xYzQuMS0xLjcgOC44LjEgMTAuNSA0LjJsNi4zIDE0LjdjMS43IDQuMS0uMSA4LjgtNC4yIDEwLjVMMjgwLjYgMjY0bDcwLjMgMzAuMWM0LjEgMS43IDUuOSA2LjQgNC4yIDEwLjVsLTYuMyAxNC43Yy0xLjcgNC4xLTYuNCA1LjktMTAuNSA0LjJMMjQwIDI4MS40bC05OC4zIDQyLjJjLTQuMSAxLjctOC44LS4xLTEwLjUtNC4ybC02LjMtMTQuN2MtMS43LTQuMS4xLTguOCA0LjItMTAuNWw3MC40LTMwLjEtNzAuNS0zMC4zYy00LjEtMS43LTUuOS02LjQtNC4yLTEwLjV6bTI1NiAyMjQuN0g5NmMtMTkuMiAwLTMyLTEyLjgtMzItMzJzMTYtMzIgMzItMzJoMjg0Ljh6TTIwOCAxMzZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTYtMTYgNy4yLTE2IDE2IDcuMiAxNiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM1OC40VjI1LjZjMC0xNi05LjYtMjUuNi0yNS42LTI1LjZIOTZDNDEuNiAwIDAgNDEuNiAwIDk2djMyMGMwIDU0LjQgNDEuNiA5NiA5NiA5NmgzMjYuNGMxMi44IDAgMjUuNi05LjYgMjUuNi0yNS42di0xNnEwLTkuNi05LjYtMTkuMmMtMy4yLTE2LTMuMi02MC44IDAtNzMuNnE5LjYtNC44IDkuNi0xOS4yek0xNDQgMTY4YTggOCAwIDAgMSA4LThoNTZ2LTU2YTggOCAwIDAgMSA4LThoNDhhOCA4IDAgMCAxIDggOHY1Nmg1NmE4IDggMCAwIDEgOCA4djQ4YTggOCAwIDAgMS04IDhoLTU2djU2YTggOCAwIDAgMS04IDhoLTQ4YTggOCAwIDAgMS04LTh2LTU2aC01NmE4IDggMCAwIDEtOC04em0yMzYuOCAyODBIOTZjLTE5LjIgMC0zMi0xMi44LTMyLTMyczE2LTMyIDMyLTMyaDI4NC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDIuMjIgMzIuMDVjLTU0LjggMy4xMS0xNjMuNzIgMTQuNDMtMjMwLjk2IDU1LjU5LTQuNjQgMi44NC03LjI3IDcuODktNy4yNyAxMy4xN3YzNjMuODdjMCAxMS41NSAxMi42MyAxOC44NSAyMy4yOCAxMy40OSA2OS4xOC0zNC44MiAxNjkuMjMtNDQuMzIgMjE4LjctNDYuOTIgMTYuODktLjg5IDMwLjAyLTE0LjQzIDMwLjAyLTMwLjY2VjYyLjc1Yy4wMS0xNy43MS0xNS4zNS0zMS43NC0zMy43Ny0zMC43ek0yNjQuNzMgODcuNjRDMTk3LjUgNDYuNDggODguNTggMzUuMTcgMzMuNzggMzIuMDUgMTUuMzYgMzEuMDEgMCA0NS4wNCAwIDYyLjc1VjQwMC42YzAgMTYuMjQgMTMuMTMgMjkuNzggMzAuMDIgMzAuNjYgNDkuNDkgMi42IDE0OS41OSAxMi4xMSAyMTguNzcgNDYuOTUgMTAuNjIgNS4zNSAyMy4yMS0xLjk0IDIzLjIxLTEzLjQ2VjEwMC42M2MwLTUuMjktMi42Mi0xMC4xNC03LjI3LTEyLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rUmVhZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA5NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2cy05NiA0Mi45OC05NiA5NiA0Mi45OCA5NiA5NiA5NiA5Ni00Mi45OCA5Ni05NnpNMjMzLjU5IDI0MS4xYy01OS4zMy0zNi4zMi0xNTUuNDMtNDYuMy0yMDMuNzktNDkuMDVDMTMuNTUgMTkxLjEzIDAgMjAzLjUxIDAgMjE5LjE0djIyMi44YzAgMTQuMzMgMTEuNTkgMjYuMjggMjYuNDkgMjcuMDUgNDMuNjYgMi4yOSAxMzEuOTkgMTAuNjggMTkzLjA0IDQxLjQzIDkuMzcgNC43MiAyMC40OC0xLjcxIDIwLjQ4LTExLjg3VjI1Mi41NmMtLjAxLTQuNjctMi4zMi04Ljk1LTYuNDItMTEuNDZ6bTI0OC42MS00OS4wNWMtNDguMzUgMi43NC0xNDQuNDYgMTIuNzMtMjAzLjc4IDQ5LjA1LTQuMSAyLjUxLTYuNDEgNi45Ni02LjQxIDExLjYzdjI0NS43OWMwIDEwLjE5IDExLjE0IDE2LjYzIDIwLjU0IDExLjkgNjEuMDQtMzAuNzIgMTQ5LjMyLTM5LjExIDE5Mi45Ny00MS40IDE0LjktLjc4IDI2LjQ5LTEyLjczIDI2LjQ5LTI3LjA2VjIxOS4xNGMtLjAxLTE1LjYzLTEzLjU2LTI4LjAxLTI5LjgxLTI3LjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzNjBWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIOTZDNDMgMCAwIDQzIDAgOTZ2MzIwYzAgNTMgNDMgOTYgOTYgOTZoMzI4YzEzLjMgMCAyNC0xMC43IDI0LTI0di0xNmMwLTcuNS0zLjUtMTQuMy04LjktMTguNy00LjItMTUuNC00LjItNTkuMyAwLTc0LjcgNS40LTQuMyA4LjktMTEuMSA4LjktMTguNnpNMTI4IDEzNGMwLTMuMyAyLjctNiA2LTZoMjEyYzMuMyAwIDYgMi43IDYgNnYyMGMwIDMuMy0yLjcgNi02IDZIMTM0Yy0zLjMgMC02LTIuNy02LTZ2LTIwem0wIDY0YzAtMy4zIDIuNy02IDYtNmgyMTJjMy4zIDAgNiAyLjcgNiA2djIwYzAgMy4zLTIuNyA2LTYgNkgxMzRjLTMuMyAwLTYtMi43LTYtNnYtMjB6bTI1My40IDI1MEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzIgMC0xNy42IDE0LjQtMzIgMzItMzJoMjg1LjRjLTEuOSAxNy4xLTEuOSA0Ni45IDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNTEyVjQ4QzAgMjEuNDkgMjEuNDkgMCA0OCAwaDI4OGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djQ2NEwxOTIgNDAwIDAgNTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JkZXJBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDMySDMyQTMyIDMyIDAgMCAwIDAgNjR2Mzg0YTMyIDMyIDAgMCAwIDMyIDMyaDM4NGEzMiAzMiAwIDAgMCAzMi0zMlY2NGEzMiAzMiAwIDAgMC0zMi0zMnptLTMyIDY0djEyOEgyNTZWOTZ6bS0xOTIgMHYxMjhINjRWOTZ6TTY0IDQxNlYyODhoMTI4djEyOHptMTkyIDBWMjg4aDEyOHYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvcmRlck5vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwIDIyNGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTI4OCAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC05NmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0yNDAgMzIwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMTkyaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS05NiAyODhoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYtMzg0aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2ek00OCAyMjRIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDE5MkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtOTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTE5MkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtOTZIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvcmRlclN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCA0MTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMTkyIDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYtMTkyaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMCA5NmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTI4OGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDMyQTMyIDMyIDAgMCAwIDAgNjR2NDAwYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2Vjk2aDM2OGExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm93bGluZ0JhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNMTIwIDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTY0LTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyem00OCAxNDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNS43IDI1NmMtMTYuOSAwLTMyLjgtOS00MS40LTIzLjRMMzIwIDEyNmwtNjQuMiAxMDYuNmMtOC43IDE0LjUtMjQuNiAyMy41LTQxLjUgMjMuNS00LjUgMC05LS42LTEzLjMtMS45TDY0IDIxNXYxNzhjMCAxNC43IDEwIDI3LjUgMjQuMiAzMWwyMTYuMiA1NC4xYzEwLjIgMi41IDIwLjkgMi41IDMxIDBMNTUxLjggNDI0YzE0LjItMy42IDI0LjItMTYuNCAyNC4yLTMxVjIxNWwtMTM3IDM5LjFjLTQuMyAxLjMtOC44IDEuOS0xMy4zIDEuOXptMjEyLjYtMTEyLjJMNTg2LjggNDFjLTMuMS02LjItOS44LTkuOC0xNi43LTguOUwzMjAgNjRsOTEuNyAxNTIuMWMzLjggNi4zIDExLjQgOS4zIDE4LjUgNy4zbDE5Ny45LTU2LjVjOS45LTIuOSAxNC43LTEzLjkgMTAuMi0yMy4xek01My4yIDQxTDEuNyAxNDMuOGMtNC42IDkuMi4zIDIwLjIgMTAuMSAyM2wxOTcuOSA1Ni41YzcuMSAyIDE0LjctMSAxOC41LTcuM0wzMjAgNjQgNjkuOCAzMi4xYy02LjktLjgtMTMuNSAyLjctMTYuNiA4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJveFRpc3N1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODMuODgsMjg3LjgybDY0LTE5MkgzMzguNDdhNzAuMiw3MC4yLDAsMCwxLTY2LjU5LTQ4LDcwLjIxLDcwLjIxLDAsMCwwLTY2LjYtNDhINjMuODhsNjQsMjg4Wm0tMzg0LDE5MmEzMiwzMiwwLDAsMCwzMiwzMmg0NDhhMzIsMzIsMCwwLDAsMzItMzJ2LTY0SC0uMTJabTQ4MC0yNTZINDM4Ljk0bC0yMS4zMyw2NGgxNC4yN2ExNiwxNiwwLDAsMSwwLDMyaC0zNTJhMTYsMTYsMCwxLDEsMC0zMkg5NS4wOWwtMTQuMjItNjRoLTQ5YTMyLDMyLDAsMCwwLTMyLDMydjEyOGg1MTJ2LTEyOEEzMiwzMiwwLDAsMCw0NzkuODgsMjIzLjgyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA5LjUgMTg0LjZMNDU4LjkgMzIuOEM0NTIuNCAxMy4yIDQzNC4xIDAgNDEzLjQgMEgyNzJ2MTkyaDIzOC43Yy0uNC0yLjUtLjQtNS0xLjItNy40ek0yNDAgMEg5OC42Yy0yMC43IDAtMzkgMTMuMi00NS41IDMyLjhMMi41IDE4NC42Yy0uOCAyLjQtLjggNC45LTEuMiA3LjRIMjQwVjB6TTAgMjI0djI0MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJveGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MCAyODhoLTgwdjk2bC0zMi0yMS4zLTMyIDIxLjN2LTk2aC04MGMtOC44IDAtMTYgNy4yLTE2IDE2djE5MmMwIDguOCA3LjIgMTYgMTYgMTZoMjI0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2em0tMzg0LTY0aDIyNGM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC04MHY5NmwtMzItMjEuM0wyNTYgOTZWMGgtODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxOTJjMCA4LjggNy4yIDE2IDE2IDE2em02NCA2NGgtODB2OTZsLTMyLTIxLjNMOTYgMzg0di05NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE5MmMwIDguOCA3LjIgMTYgMTYgMTZoMjI0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmFpbGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAyNTZjMCAzNS4zNDYtMjguNjU0IDY0LTY0IDY0UzAgMjkxLjM0NiAwIDI1NnMyOC42NTQtNjQgNjQtNjQgNjQgMjguNjU0IDY0IDY0ek02NCAzODRjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMC0zNTJDMjguNjU0IDMyIDAgNjAuNjU0IDAgOTZzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6bTE2MCAxOTJjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMCAxNjBjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMC0zNTJjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHMyOC42NTQgNjQgNjQgNjQgNjQtMjguNjU0IDY0LTY0LTI4LjY1NC02NC02NC02NHptMjI0IDE5MmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wIDE2MGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wLTM1MmMtMzUuMzQ2IDAtNjQgMjguNjU0LTY0IDY0czI4LjY1NCA2NCA2NCA2NCA2NC0yOC42NTQgNjQtNjQtMjguNjU0LTY0LTY0LTY0em0xNjAgMTkyYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAgMTYwYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzIwYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAwYy0yOS45IDAtNTQuNyAyMC41LTYxLjggNDguMi0uOCAwLTEuNC0uMi0yLjItLjItMzUuMyAwLTY0IDI4LjctNjQgNjQgMCA0LjguNiA5LjUgMS43IDE0QzUyLjUgMTM4IDMyIDE2Ni42IDMyIDIwMGMwIDEyLjYgMy4yIDI0LjMgOC4zIDM0LjlDMTYuMyAyNDguNyAwIDI3NC4zIDAgMzA0YzAgMzMuMyAyMC40IDYxLjkgNDkuNCA3My45LS45IDQuNi0xLjQgOS4zLTEuNCAxNC4xIDAgMzkuOCAzMi4yIDcyIDcyIDcyIDQuMSAwIDguMS0uNSAxMi0xLjIgOS42IDI4LjUgMzYuMiA0OS4yIDY4IDQ5LjIgMzkuOCAwIDcyLTMyLjIgNzItNzJWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjR6bTM2OCAzMDRjMC0yOS43LTE2LjMtNTUuMy00MC4zLTY5LjEgNS4yLTEwLjYgOC4zLTIyLjMgOC4zLTM0LjkgMC0zMy40LTIwLjUtNjItNDkuNy03NCAxLTQuNSAxLjctOS4yIDEuNy0xNCAwLTM1LjMtMjguNy02NC02NC02NC0uOCAwLTEuNS4yLTIuMi4yQzQyMi43IDIwLjUgMzk3LjkgMCAzNjggMGMtMzUuMyAwLTY0IDI4LjYtNjQgNjR2Mzc2YzAgMzkuOCAzMi4yIDcyIDcyIDcyIDMxLjggMCA1OC40LTIwLjcgNjgtNDkuMiAzLjkuNyA3LjkgMS4yIDEyIDEuMiAzOS44IDAgNzItMzIuMiA3Mi03MiAwLTQuOC0uNS05LjUtMS40LTE0LjEgMjktMTIgNDkuNC00MC42IDQ5LjQtNzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJlYWRTbGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMEMxMDggMCAwIDkzLjQgMCAxNjkuMTQgMCAxOTkuNDQgMjQuMjQgMjI0IDY0IDIyNHYyNTZjMCAxNy42NyAxNi4xMiAzMiAzNiAzMmgzNzZjMTkuODggMCAzNi0xNC4zMyAzNi0zMlYyMjRjMzkuNzYgMCA2NC0yNC41NiA2NC01NC44NkM1NzYgOTMuNCA0NjggMCAyODggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZWZjYXNlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMTI4aC04MFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djQ4SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYyODhjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE3NmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDk2aDEyOHYzMkgxOTJWOTZ6bTE2MCAyNDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmllZmNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMzNmMwIDguODQtNy4xNiAxNi0xNiAxNmgtOTZjLTguODQgMC0xNi03LjE2LTE2LTE2di00OEgwdjE0NGMwIDI1LjYgMjIuNCA0OCA0OCA0OGg0MTZjMjUuNiAwIDQ4LTIyLjQgNDgtNDhWMjg4SDMyMHY0OHptMTQ0LTIwOGgtODBWODBjMC0yNS42LTIyLjQtNDgtNDgtNDhIMTc2Yy0yNS42IDAtNDggMjIuNC00OCA0OHY0OEg0OGMtMjUuNiAwLTQ4IDIyLjQtNDggNDh2ODBoNTEydi04MGMwLTI1LjYtMjIuNC00OC00OC00OHptLTE0NCAwSDE5MlY5NmgxMjh2MzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyb2FkY2FzdFRvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MC45NCAxOTJoMzMuNzNjMTEuMDEgMCAxOC42MS0xMC44MyAxNC44Ni0yMS4xOC00LjkzLTEzLjU4LTcuNTUtMjcuOTgtNy41NS00Mi44MnMyLjYyLTI5LjI0IDcuNTUtNDIuODJDMjAzLjI5IDc0LjgzIDE5NS42OCA2NCAxODQuNjcgNjRoLTMzLjczYy03LjAxIDAtMTMuNDYgNC40OS0xNS40MSAxMS4yM0MxMzAuNjQgOTIuMjEgMTI4IDEwOS44OCAxMjggMTI4YzAgMTguMTIgMi42NCAzNS43OSA3LjU0IDUyLjc2IDEuOTQgNi43NCA4LjM5IDExLjI0IDE1LjQgMTEuMjR6TTg5LjkyIDIzLjM0Qzk1LjU2IDEyLjcyIDg3Ljk3IDAgNzUuOTYgMEg0MC42M2MtNi4yNyAwLTEyLjE0IDMuNTktMTQuNzQgOS4zMUM5LjQgNDUuNTQgMCA4NS42NSAwIDEyOGMwIDI0Ljc1IDMuMTIgNjguMzMgMjYuNjkgMTE4Ljg2IDIuNjIgNS42MyA4LjQyIDkuMTQgMTQuNjEgOS4xNGgzNC44NGMxMi4wMiAwIDE5LjYxLTEyLjc0IDEzLjk1LTIzLjM3LTQ5Ljc4LTkzLjMyLTE2LjcxLTE3OC4xNS0uMTctMjA5LjI5ek02MTQuMDYgOS4yOUM2MTEuNDYgMy41OCA2MDUuNiAwIDU5OS4zMyAwaC0zNS40MmMtMTEuOTggMC0xOS42NiAxMi42Ni0xNC4wMiAyMy4yNSAxOC4yNyAzNC4yOSA0OC40MiAxMTkuNDIuMjggMjA5LjIzLTUuNzIgMTAuNjggMS44IDIzLjUyIDEzLjkxIDIzLjUyaDM1LjIzYzYuMjcgMCAxMi4xMy0zLjU4IDE0LjczLTkuMjlDNjMwLjU3IDIxMC40OCA2NDAgMTcwLjM2IDY0MCAxMjhzLTkuNDItODIuNDgtMjUuOTQtMTE4Ljcxek00ODkuMDYgNjRoLTMzLjczYy0xMS4wMSAwLTE4LjYxIDEwLjgzLTE0Ljg2IDIxLjE4IDQuOTMgMTMuNTggNy41NSAyNy45OCA3LjU1IDQyLjgycy0yLjYyIDI5LjI0LTcuNTUgNDIuODJjLTMuNzYgMTAuMzUgMy44NSAyMS4xOCAxNC44NiAyMS4xOGgzMy43M2M3LjAyIDAgMTMuNDYtNC40OSAxNS40MS0xMS4yNCA0LjktMTYuOTcgNy41My0zNC42NCA3LjUzLTUyLjc2IDAtMTguMTItMi42NC0zNS43OS03LjU0LTUyLjc2LTEuOTQtNi43NS04LjM5LTExLjI0LTE1LjQtMTEuMjR6bS0xMTYuMyAxMDAuMTJjNy4wNS0xMC4yOSAxMS4yLTIyLjcxIDExLjItMzYuMTIgMC0zNS4zNS0yOC42My02NC02My45Ni02NC0zNS4zMiAwLTYzLjk2IDI4LjY1LTYzLjk2IDY0IDAgMTMuNDEgNC4xNSAyNS44MyAxMS4yIDM2LjEybC0xMzAuNSAzMTMuNDFjLTMuNCA4LjE1LjQ2IDE3LjUyIDguNjEgMjAuOTJsMjkuNTEgMTIuMzFjOC4xNSAzLjQgMTcuNTItLjQ2IDIwLjkxLTguNjFMMjQ0Ljk2IDM4NGgxNTAuMDdsNDkuMiAxMTguMTVjMy40IDguMTYgMTIuNzYgMTIuMDEgMjAuOTEgOC42MWwyOS41MS0xMi4zMWM4LjE1LTMuNCAxMi0xMi43NyA4LjYxLTIwLjkybC0xMzAuNS0zMTMuNDF6TTI3MS42MiAzMjBMMzIwIDIwMy44MSAzNjguMzggMzIwaC05Ni43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LjQ3IDIxNi43N2w4Ni43MyAxMDkuMThzLTE2LjYgMTAyLjM2LTc2LjU3IDE1MC4xMkMyMDYuNjYgNTIzLjg1IDAgNTEwLjE5IDAgNTEwLjE5czMuOC0yMy4xNCAxMS01NS40M2w5NC42Mi0xMTIuMTdjMy45Ny00LjctLjg3LTExLjYyLTYuNjUtOS41bC02MC40IDIyLjA5YzE0LjQ0LTQxLjY2IDMyLjcyLTgwLjA0IDU0LjYtOTcuNDcgNTkuOTctNDcuNzYgMTYzLjMtNDAuOTQgMTYzLjMtNDAuOTR6TTYzNi41MyAzMS4wM2wtMTkuODYtMjVjLTUuNDktNi45LTE1LjUyLTguMDUtMjIuNDEtMi41NmwtMjMyLjQ4IDE3Ny44LTM0LjE0LTQyLjk3Yy01LjA5LTYuNDEtMTUuMTQtNS4yMS0xOC41OSAyLjIxbC0yNS4zMyA1NC41NSA4Ni43MyAxMDkuMTggNTguOC0xMi40NWM4LTEuNjkgMTEuNDItMTEuMiA2LjM0LTE3LjZsLTM0LjA5LTQyLjkyIDIzMi40OC0xNzcuOGM2Ljg5LTUuNDggOC4wNC0xNS41MyAyLjU1LTIyLjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMEgzMkMxNC4zMyAwIDAgMTQuMzMgMCAzMnYyMjRoMzg0VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTAgMzIwYzAgMzUuMzUgMjguNjYgNjQgNjQgNjRoNjR2NjRjMCAzNS4zNSAyOC42NiA2NCA2NCA2NHM2NC0yOC42NSA2NC02NHYtNjRoNjRjMzUuMzQgMCA2NC0yOC42NSA2NC02NHYtMzJIMHYzMnptMTkyIDEwNGMxMy4yNSAwIDI0IDEwLjc0IDI0IDI0IDAgMTMuMjUtMTAuNzUgMjQtMjQgMjRzLTI0LTEwLjc1LTI0LTI0YzAtMTMuMjYgMTAuNzUtMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1ZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuOTg4IDI4OC45Yy0uNDc4IDE3LjQzLTE1LjIxNyAzMS4xLTMyLjY1MyAzMS4xSDQyNHYxNmMwIDIxLjg2NC00Ljg4MiA0Mi41ODQtMTMuNiA2MS4xNDVsNjAuMjI4IDYwLjIyOGMxMi40OTYgMTIuNDk3IDEyLjQ5NiAzMi43NTggMCA0NS4yNTUtMTIuNDk4IDEyLjQ5Ny0zMi43NTkgMTIuNDk2LTQ1LjI1NiAwbC01NC43MzYtNTQuNzM2QzM0NS44ODYgNDY3Ljk2NSAzMTQuMzUxIDQ4MCAyODAgNDgwVjIzNmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNDRjLTM0LjM1MSAwLTY1Ljg4Ni0xMi4wMzUtOTAuNjM2LTMyLjEwOGwtNTQuNzM2IDU0LjczNmMtMTIuNDk4IDEyLjQ5Ny0zMi43NTkgMTIuNDk2LTQ1LjI1NiAwLTEyLjQ5Ni0xMi40OTctMTIuNDk2LTMyLjc1OCAwLTQ1LjI1NWw2MC4yMjgtNjAuMjI4QzkyLjg4MiAzNzguNTg0IDg4IDM1Ny44NjQgODggMzM2di0xNkgzMi42NjZDMTUuMjMgMzIwIC40OTEgMzA2LjMzLjAxMyAyODguOS0uNDg0IDI3MC44MTYgMTQuMDI4IDI1NiAzMiAyNTZoNTZ2LTU4Ljc0NWwtNDYuNjI4LTQ2LjYyOGMtMTIuNDk2LTEyLjQ5Ny0xMi40OTYtMzIuNzU4IDAtNDUuMjU1IDEyLjQ5OC0xMi40OTcgMzIuNzU4LTEyLjQ5NyA0NS4yNTYgMEwxNDEuMjU1IDE2MGgyMjkuNDg5bDU0LjYyNy01NC42MjdjMTIuNDk4LTEyLjQ5NyAzMi43NTgtMTIuNDk3IDQ1LjI1NiAwIDEyLjQ5NiAxMi40OTcgMTIuNDk2IDMyLjc1OCAwIDQ1LjI1NUw0MjQgMTk3LjI1NVYyNTZoNTZjMTcuOTcyIDAgMzIuNDg0IDE0LjgxNiAzMS45ODggMzIuOXpNMjU3IDBjLTYxLjg1NiAwLTExMiA1MC4xNDQtMTEyIDExMmgyMjRDMzY5IDUwLjE0NCAzMTguODU2IDAgMjU3IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNiA0ODBoLTIwVjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEg1NkM0Mi43NDUgMCAzMiAxMC43NDUgMzIgMjR2NDU2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjIwaDQ0OHYtMjBjMC02LjYyNy01LjM3My0xMi0xMi0xMnpNMTI4IDc2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMlY3NnptMCA5NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwem01MiAxNDhoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptNzYgMTYwaC02NHYtODRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjg0em02NC0xNzJjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MHptMC05NmMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwem0wLTk2YzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEyVjc2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVsbGhvcm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc2IDI0MGMwLTIzLjYzLTEyLjk1LTQ0LjA0LTMyLTU1LjEyVjMyLjAxQzU0NCAyMy4yNiA1MzcuMDIgMCA1MTIgMGMtNy4xMiAwLTE0LjE5IDIuMzgtMTkuOTggNy4wMmwtODUuMDMgNjguMDNDMzY0LjI4IDEwOS4xOSAzMTAuNjYgMTI4IDI1NiAxMjhINjRjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2OTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMy43Yy0xLjM5IDEwLjQ4LTIuMTggMjEuMTQtMi4xOCAzMiAwIDM5Ljc3IDkuMjYgNzcuMzUgMjUuNTYgMTEwLjk0IDUuMTkgMTAuNjkgMTYuNTIgMTcuMDYgMjguNCAxNy4wNmg3NC4yOGMyNi4wNSAwIDQxLjY5LTI5Ljg0IDI1LjktNTAuNTYtMTYuNC0yMS41Mi0yNi4xNS00OC4zNi0yNi4xNS03Ny40NCAwLTExLjExIDEuNjItMjEuNzkgNC40MS0zMkgyNTZjNTQuNjYgMCAxMDguMjggMTguODEgMTUwLjk4IDUyLjk1bDg1LjAzIDY4LjAzYTMyLjAyMyAzMi4wMjMgMCAwIDAgMTkuOTggNy4wMmMyNC45MiAwIDMyLTIyLjc4IDMyLTMyVjI5NS4xM0M1NjMuMDUgMjg0LjA0IDU3NiAyNjMuNjMgNTc2IDI0MHptLTk2IDE0MS40MmwtMzMuMDUtMjYuNDRDMzkyLjk1IDMxMS43OCAzMjUuMTIgMjg4IDI1NiAyODh2LTk2YzY5LjEyIDAgMTM2Ljk1LTIzLjc4IDE5MC45NS02Ni45OEw0ODAgOTguNTh2MjgyLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWxsc2V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0wIDQzMmMtMTAxLjY5IDAtMTg0LTgyLjI5LTE4NC0xODQgMC0xMDEuNjkgODIuMjktMTg0IDE4NC0xODQgMTAxLjY5IDAgMTg0IDgyLjI5IDE4NCAxODQgMCAxMDEuNjktODIuMjkgMTg0LTE4NCAxODR6bTAtMzEyYy03MC42OSAwLTEyOCA1Ny4zMS0xMjggMTI4czU3LjMxIDEyOCAxMjggMTI4IDEyOC01Ny4zMSAxMjgtMTI4LTU3LjMxLTEyOC0xMjgtMTI4em0wIDE5MmMtMzUuMjkgMC02NC0yOC43MS02NC02NHMyOC43MS02NCA2NC02NCA2NCAyOC43MSA2NCA2NC0yOC43MSA2NC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMEM3OS43IDEwMS4zIDAgMjIwLjkgMCAzMDAuNSAwIDQyNSA3OSA1MTIgMTkyIDUxMnMxOTItODcgMTkyLTIxMS41YzAtNzkuOS04MC4yLTE5OS42LTE5Mi0zMDAuNXptMCA0NDhjLTU2LjUgMC05Ni0zOS05Ni05NC44IDAtMTMuNSA0LjYtNjEuNSA5Ni0xNjEuMiA5MS40IDk5LjcgOTYgMTQ3LjcgOTYgMTYxLjIgMCA1NS44LTM5LjUgOTQuOC05NiA5NC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDEyOGgtOFY4MGMwLTQ0LjgtOTkuMi04MC0yMjQtODBTMzIgMzUuMiAzMiA4MHY0OGgtOGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDh2MTYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmg2LjRjMTYgMCAyNS42LTEyLjggMjUuNi0yNS42VjI1Nmg4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTE2MCA3MmMwLTQuNDIgMy41OC04IDgtOGgxNzZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhIMTY4Yy00LjQyIDAtOC0zLjU4LTgtOFY3MnptLTQ4IDMyOGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTI4LTExMkgxMjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJ2LTk2YzAtMTcuNjcgMTQuMzMtMzIgMzItMzJoMTEydjE2MHptMzIgMFYxMjhoMTEyYzE3LjY3IDAgMzIgMTQuMzMgMzIgMzJ2OTZjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgyNzJ6bTEyOCAxMTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggMTI4aC04VjgwYzAtNDQuOC05OS4yLTgwLTIyNC04MFMzMiAzNS4yIDMyIDgwdjQ4aC04Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0djgwYzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoOHYxNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDE5MnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDYuNGMxNiAwIDI1LjYtMTIuOCAyNS42LTI1LjZWMjU2aDhjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtODBjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpNMTEyIDQwMGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTYtMTEyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyVjEyOGMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyaDI1NmMxNy42NyAwIDMyIDE0LjMzIDMyIDMydjEyOGMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDEyOHptMjcyIDExMmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVzaW5lc3NUaW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyMjRjLTc5LjU5IDAtMTQ0IDY0LjQxLTE0NCAxNDRzNjQuNDEgMTQ0IDE0NCAxNDQgMTQ0LTY0LjQxIDE0NC0xNDQtNjQuNDEtMTQ0LTE0NC0xNDR6bTY0IDE1MC4yOWMwIDUuMzQtNC4zNyA5LjcxLTkuNzEgOS43MWgtNjAuNTdjLTUuMzQgMC05LjcxLTQuMzctOS43MS05Ljcxdi03Ni41N2MwLTUuMzQgNC4zNy05LjcxIDkuNzEtOS43MWgxMi41N2M1LjM0IDAgOS43MSA0LjM3IDkuNzEgOS43MVYzNTJoMzguMjljNS4zNCAwIDkuNzEgNC4zNyA5LjcxIDkuNzF2MTIuNTh6TTQ5NiAxOTJjNS40IDAgMTAuNzIuMzMgMTYgLjgxVjE0NGMwLTI1LjYtMjIuNC00OC00OC00OGgtODBWNDhjMC0yNS42LTIyLjQtNDgtNDgtNDhIMTc2Yy0yNS42IDAtNDggMjIuNC00OCA0OHY0OEg0OGMtMjUuNiAwLTQ4IDIyLjQtNDggNDh2ODBoMzk1LjEyYzI4LjYtMjAuMDkgNjMuMzUtMzIgMTAwLjg4LTMyek0zMjAgOTZIMTkyVjY0aDEyOHYzMnptNi44MiAyMjRIMjA4Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNDhIMHYxNDRjMCAyNS42IDIyLjQgNDggNDggNDhoMjkxLjQzQzMyNy4xIDQyMy45NiAzMjAgMzk2LjgyIDMyMCAzNjhjMC0xNi42NiAyLjQ4LTMyLjcyIDYuODItNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGN1bGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBINDhDMjIuNCAwIDAgMjIuNCAwIDQ4djQxNmMwIDI1LjYgMjIuNCA0OCA0OCA0OGgzNTJjMjUuNiAwIDQ4LTIyLjQgNDgtNDhWNDhjMC0yNS42LTIyLjQtNDgtNDgtNDh6TTEyOCA0MzUuMmMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhINzYuOGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0wLTEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhINzYuOGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0xMjggMTI4YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0wLTEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMTI4IDEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOFYyNjguOGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MTY2LjR6bTAtMjU2YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOEg3Ni44Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjhWNzYuOEM2NCA3MC40IDcwLjQgNjQgNzYuOCA2NGgyOTQuNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MTAyLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTMyMC0xOTZjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwem0wIDEyOGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6TTE5MiAyNjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwem0wIDEyOGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6TTY0IDI2OGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkg3NmMtNi42IDAtMTItNS40LTEyLTEydi00MHptMCAxMjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJINzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6TTQwMCA2NGgtNDhWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDE2MFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2NDhoNDQ4di00OGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwSDEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0zNmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY1MmgxMjhWMTJjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjUyaDQ4YzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzZjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnpNMTIgMTkyaDQyNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI2MGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjIwNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyem0zMzMuMjk2IDk1Ljk0N2wtMjguMTY5LTI4LjM5OGMtNC42NjctNC43MDUtMTIuMjY1LTQuNzM2LTE2Ljk3LS4wNjhMMTk0LjEyIDM2NC42NjVsLTQ1Ljk4LTQ2LjM1MmMtNC42NjctNC43MDUtMTIuMjY2LTQuNzM2LTE2Ljk3MS0uMDY4bC0yOC4zOTcgMjguMTdjLTQuNzA1IDQuNjY3LTQuNzM2IDEyLjI2NS0uMDY4IDE2Ljk3bDgyLjYwMSA4My4yNjljNC42NjcgNC43MDUgMTIuMjY1IDQuNzM2IDE2Ljk3LjA2OGwxNDIuOTUzLTE0MS44MDVjNC43MDUtNC42NjcgNC43MzYtMTIuMjY1LjA2OC0xNi45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJEYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE5MkgwdjI3MnptNjQtMTkyYzAtOC44IDcuMi0xNiAxNi0xNmg5NmM4LjggMCAxNiA3LjIgMTYgMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZ2LTk2ek00MDAgNjRoLTQ4VjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNjBWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjQ4aDQ0OHYtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE2MEgxMmMtNi42IDAtMTItNS40LTEyLTEydi0zNmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM2YzAgNi42LTUuNCAxMi0xMiAxMnpNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem0zMDQgMTkyYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEySDEzMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgxODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwSDEyYy02LjYgMC0xMi01LjQtMTItMTJ2LTM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoMTI4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MzZjMCA2LjYtNS40IDEyLTEyIDEyek0xMiAxOTJoNDI0YzYuNiAwIDEyIDUuNCAxMiAxMnYyNjBjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjIwNGMwLTYuNiA1LjQtMTIgMTItMTJ6bTMxNiAxNDBjMC02LjYtNS40LTEyLTEyLTEyaC02MHYtNjBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjYwaC02MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg2MHY2MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi02MGg2MGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhclRpbWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNiAxNjBIMTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzZjMC0yNi41IDIxLjUtNDggNDgtNDhoNDhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1MmgxMjhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1Mmg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHYzNmMwIDYuNi01LjQgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42IDAgMTIgNS40IDEyIDEydjI2MGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjA0YzAtNi42IDUuNC0xMiAxMi0xMnptMjU3LjMgMTYwbDQ4LjEtNDguMWM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTI4LjMtMjguM2MtNC43LTQuNy0xMi4zLTQuNy0xNyAwTDIyNCAzMDYuN2wtNDguMS00OC4xYy00LjctNC43LTEyLjMtNC43LTE3IDBsLTI4LjMgMjguM2MtNC43IDQuNy00LjcgMTIuMyAwIDE3bDQ4LjEgNDguMS00OC4xIDQ4LjFjLTQuNyA0LjctNC43IDEyLjMgMCAxN2wyOC4zIDI4LjNjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDQ4LjEtNDguMSA0OC4xIDQ4LjFjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDI4LjMtMjguM2M0LjctNC43IDQuNy0xMi4zIDAtMTdMMjY5LjMgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhcldlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE5MkgwdjI3MnptNjQtMTkyYzAtOC44IDcuMi0xNiAxNi0xNmgyODhjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2di02NHpNNDAwIDY0aC00OFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMTYwVjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnY0OGg0NDh2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOTJoNDI0YzYuNiAwIDEyIDUuNCAxMiAxMnYyNjBjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjIwNGMwLTYuNiA1LjQtMTIgMTItMTJ6bTQzNi00NHYtMzZjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQ4VjEyYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY1MkgxNjBWMTJjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjUySDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MjRjNi42IDAgMTItNS40IDEyLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1lcmFSZXRybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAzMkMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6bTAgMzJoMTA2YzMuMyAwIDYgMi43IDYgNnYyMGMwIDMuMy0yLjcgNi02IDZIMzhjLTMuMyAwLTYtMi43LTYtNlY4MGMwLTguOCA3LjItMTYgMTYtMTZ6bTQyNiA5NkgzOGMtMy4zIDAtNi0yLjctNi02di0zNmMwLTMuMyAyLjctNiA2LTZoMTM4bDMwLjItNDUuM2MxLjEtMS43IDMtMi43IDUtMi43SDQ2NGM4LjggMCAxNiA3LjIgMTYgMTZ2NzRjMCAzLjMtMi43IDYtNiA2ek0yNTYgNDI0Yy02Ni4yIDAtMTIwLTUzLjgtMTIwLTEyMHM1My44LTEyMCAxMjAtMTIwIDEyMCA1My44IDEyMCAxMjAtNTMuOCAxMjAtMTIwIDEyMHptMC0yMDhjLTQ4LjUgMC04OCAzOS41LTg4IDg4czM5LjUgODggODggODggODgtMzkuNSA4OC04OC0zOS41LTg4LTg4LTg4em0tNDggMTA0Yy04LjggMC0xNi03LjItMTYtMTYgMC0zNS4zIDI4LjctNjQgNjQtNjQgOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTE3LjYgMC0zMiAxNC40LTMyIDMyIDAgOC44LTcuMiAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAxNDR2Mjg4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhoODhsMTIuMy0zMi45YzctMTguNyAyNC45LTMxLjEgNDQuOS0zMS4xaDEyNS41YzIwIDAgMzcuOSAxMi40IDQ0LjkgMzEuMUwzNzYgOTZoODhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTM3NiAyODhjMC02Ni4yLTUzLjgtMTIwLTEyMC0xMjBzLTEyMCA1My44LTEyMCAxMjAgNTMuOCAxMjAgMTIwIDEyMCAxMjAtNTMuOCAxMjAtMTIwem0tMzIgMGMwIDQ4LjUtMzkuNSA4OC04OCA4OHMtODgtMzkuNS04OC04OCAzOS41LTg4IDg4LTg4IDg4IDM5LjUgODggODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbXBncm91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQ0OGgtMjQuNjhMMzU5LjU0IDExNy43NWw1My40MS03My41NWM1LjE5LTcuMTUgMy42MS0xNy4xNi0zLjU0LTIyLjM1bC0yNS45LTE4Ljc5Yy03LjE1LTUuMTktMTcuMTUtMy42MS0yMi4zNSAzLjU1TDMyMCA2My4zIDI3OC44MyA2LjZjLTUuMTktNy4xNS0xNS4yLTguNzQtMjIuMzUtMy41NWwtMjUuODggMTguOGMtNy4xNSA1LjE5LTguNzQgMTUuMi0zLjU0IDIyLjM1bDUzLjQxIDczLjU1TDQwLjY4IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNMzIwIDI4OGwxMTYuMzYgMTYwSDIwMy42NEwzMjAgMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW5keUNhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk3LjUgOTJDNDY5LjYgMzMuMSA0MTEuOCAwIDM1Mi40IDBjLTI3LjkgMC01Ni4yIDcuMy04MS44IDIyLjZMMjQzLjEgMzljLTE1LjIgOS4xLTIwLjEgMjguNy0xMSA0My45bDMyLjggNTQuOWM2IDEwIDE2LjYgMTUuNiAyNy41IDE1LjYgNS42IDAgMTEuMi0xLjUgMTYuNC00LjVsMjcuNS0xNi40YzUuMS0zLjEgMTAuOC00LjUgMTYuNC00LjUgMTAuOSAwIDIxLjUgNS42IDI3LjUgMTUuNiA5LjEgMTUuMSA0LjEgMzQuOC0xMSA0My45TDE1LjYgMzk3LjZjLTE1LjIgOS4xLTIwLjEgMjguNy0xMSA0My45bDMyLjggNTQuOWM2IDEwIDE2LjYgMTUuNiAyNy41IDE1LjYgNS42IDAgMTEuMi0xLjUgMTYuNC00LjVMNDI4LjYgMzAxYzcxLjctNDIuOSAxMDQuNi0xMzMuNSA2OC45LTIwOXptLTE3Ny43IDEzbC0yLjUgMS41TDI5Ni44IDQ1YzkuNy00LjcgMTkuOC04LjEgMzAuMy0xMC4ybDIwLjYgNjEuOGMtOS44LjgtMTkuNCAzLjMtMjcuOSA4LjR6TTE0NS45IDQzMS44bC02MC41LTM4LjUgMzAuOC0xOC4zIDYwLjUgMzguNS0zMC44IDE4LjN6bTEwNy41LTYzLjlsLTYwLjUtMzguNSAzMC44LTE4LjMgNjAuNSAzOC41LTMwLjggMTguM3pNMzY0LjMgMzAybC02MC41LTM4LjUgMzAuOC0xOC4zIDYwLjUgMzguNS0zMC44IDE4LjN6bTIwLjQtMTk3LjNsNDYtNDZjOC40IDYuNSAxNiAxNC4xIDIyLjYgMjIuNkw0MDcuNiAxMjdjLTUuNy05LjMtMTMuNy0xNi45LTIyLjktMjIuM3ptODIuMSAxMDcuOGwtNTkuNS0xOS44YzMuMi01LjMgNS44LTEwLjkgNy40LTE3LjEgMS4xLTQuNSAxLjctOS4xIDEuOC0xMy42bDYwLjQgMjAuMWMtMi4xIDEwLjQtNS41IDIwLjYtMTAuMSAzMC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW5uYWJpcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDMuNDcgMzYwLjI1Yy0xLjU2LS44Mi0zMi4zOS0xNi44OS03Ni43OC0yNS44MSA2NC4yNS03NS4xMiA4NC4wNS0xNjEuNjcgODQuOTMtMTY1LjY0IDEuMTgtNS4zMy0uNDQtMTAuOS00LjMtMTQuNzctMy4wMy0zLjA0LTcuMTItNC43LTExLjMyLTQuNy0xLjE0IDAtMi4yOS4xMi0zLjQ0LjM4LTMuODguODUtODYuNTQgMTkuNTktMTYwLjU4IDc5Ljc2LjAxLTEuNDYuMDEtMi45My4wMS00LjQgMC0xMTguNzktNTkuOTgtMjEzLjcyLTYyLjUzLTIxNy43QTE1Ljk3MyAxNS45NzMgMCAwIDAgMjU2IDBjLTUuNDUgMC0xMC41MyAyLjc4LTEzLjQ3IDcuMzctMi41NSAzLjk4LTYyLjUzIDk4LjkxLTYyLjUzIDIxNy43IDAgMS40Ny4wMSAyLjk0LjAxIDQuNC03NC4wMy02MC4xNi0xNTYuNjktNzguOS0xNjAuNTgtNzkuNzYtMS4xNC0uMjUtMi4yOS0uMzgtMy40NC0uMzgtNC4yIDAtOC4yOSAxLjY2LTExLjMyIDQuN0ExNS45ODYgMTUuOTg2IDAgMCAwIC4zOCAxNjguOGMuODggMy45NyAyMC42OCA5MC41MiA4NC45MyAxNjUuNjQtNDQuMzkgOC45Mi03NS4yMSAyNC45OS03Ni43OCAyNS44MWExNi4wMDMgMTYuMDAzIDAgMCAwLS4wMiAyOC4yOWMyLjQ1IDEuMjkgNjAuNzYgMzEuNzIgMTMzLjQ5IDMxLjcyIDYuMTQgMCAxMS45Ni0uMSAxNy41LS4zMS0xMS4zNyAyMi4yMy0xNi41MiAzOC4zMS0xNi44MSAzOS4yMi0xLjggNS42OC0uMjkgMTEuODkgMy45MSAxNi4xMWExNi4wMTkgMTYuMDE5IDAgMCAwIDE2LjEgMy45OWMxLjgzLS41NyAzNy43Mi0xMS45OSA3Ny4zLTM5LjI5VjUwNGMwIDQuNDIgMy41OCA4IDggOGgxNmM0LjQyIDAgOC0zLjU4IDgtOHYtNjQuMDFjMzkuNTggMjcuMyA3NS40NyAzOC43MSA3Ny4zIDM5LjI5YTE2LjAxOSAxNi4wMTkgMCAwIDAgMTYuMS0zLjk5YzQuMi00LjIyIDUuNzEtMTAuNDMgMy45MS0xNi4xMS0uMjktLjkxLTUuNDUtMTYuOTktMTYuODEtMzkuMjIgNS41NC4yMSAxMS4zNy4zMSAxNy41LjMxIDcyLjcyIDAgMTMxLjA0LTMwLjQzIDEzMy40OS0zMS43MiA1LjI0LTIuNzggOC41Mi04LjIyIDguNTEtMTQuMTUtLjAxLTUuOTQtMy4yOS0xMS4zOS04LjUzLTE0LjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXBzdWxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTUuMyAzMDAuMUw0MjQuMiAxMTIuOEM0MDEuOSA4MSAzNjYuNCA2NCAzMzAuNCA2NGMtMjIuNiAwLTQ1LjUgNi43LTY1LjUgMjAuNy0xOS43IDEzLjgtMzMuNyAzMi44LTQxLjUgNTMuOEMyMjAuNSA3OS4yIDE3MiAzMiAxMTIgMzIgNTAuMSAzMiAwIDgyLjEgMCAxNDR2MjI0YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJWMjE4LjljMy4zIDguNiA3LjMgMTcuMSAxMi44IDI1TDM2OCA0MzEuMmMyMi4yIDMxLjggNTcuNyA0OC44IDkzLjggNDguOCAyMi43IDAgNDUuNS02LjcgNjUuNS0yMC43IDUxLjctMzYuMiA2NC4yLTEwNy41IDI4LTE1OS4yek0xNjAgMjU2SDY0VjE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djExMnptMTk0LjggNDQuOWwtNjUuNi05My43Yy03LjctMTEtMTAuNy0yNC40LTguMy0zNy42IDIuMy0xMy4yIDkuNy0yNC44IDIwLjctMzIuNSA4LjUtNiAxOC41LTkuMSAyOC44LTkuMSAxNi41IDAgMzEuOSA4IDQxLjMgMjEuNWw2NS42IDkzLjctODIuNSA1Ny43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM4LjY2IDIxMi4zM2wtMTEuMjQtMjguMS0xOS45My00OS44M0MzOTAuMzggOTEuNjMgMzQ5LjU3IDY0IDMwMy41IDY0aC0xMjdjLTQ2LjA2IDAtODYuODggMjcuNjMtMTAzLjk5IDcwLjRsLTE5LjkzIDQ5LjgzLTExLjI0IDI4LjFDMTcuMjIgMjIxLjUgMCAyNDQuNjYgMCAyNzJ2NDhjMCAxNi4xMiA2LjE2IDMwLjY3IDE2IDQxLjkzVjQxNmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDI1NnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTU0LjA3YzkuODQtMTEuMjUgMTYtMjUuOCAxNi00MS45M3YtNDhjMC0yNy4zNC0xNy4yMi01MC41LTQxLjM0LTU5LjY3em0tMzA2LjczLTU0LjE2YzcuMjktMTguMjIgMjQuOTQtMzAuMTcgNDQuNTctMzAuMTdoMTI3YzE5LjYzIDAgMzcuMjggMTEuOTUgNDQuNTcgMzAuMTdMMzY4IDIwOEgxMTJsMTkuOTMtNDkuODN6TTgwIDMxOS44Yy0xOS4yIDAtMzItMTIuNzYtMzItMzEuOVM2MC44IDI1NiA4MCAyNTZzNDggMjguNzEgNDggNDcuODUtMjguOCAxNS45NS00OCAxNS45NXptMzIwIDBjLTE5LjIgMC00OCAzLjE5LTQ4LTE1Ljk1UzM4MC44IDI1NiA0MDAgMjU2czMyIDEyLjc2IDMyIDMxLjktMTIuOCAzMS45LTMyIDMxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhckJhdHRlcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDEyOGgtMzJWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OEgxOTJWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIODBjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjI1NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjE2MGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xOTIgMjY0YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTEyYzQuNDIgMCA4IDMuNTggOCA4djE2em0yNTYgMGMwIDQuNDItMy41OCA4LTggOGgtNDB2NDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtNDBoLTQwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoNDB2LTQwYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djQwaDQwYzQuNDIgMCA4IDMuNTggOCA4djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJDcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDMuMjUgMjIwLjgxbC0xMi40MiA0Ni4zN2MtMy4wMSAxMS4yNS0zLjYzIDIyLjg5LTIuNDEgMzQuMzlsLTM1LjIgMjguOThjLTYuNTcgNS40MS0xNi4zMS0uNDMtMTQuNjItOC43N2wxNS40NC03Ni42OGMxLjA2LTUuMjYtMi42Ni0xMC4yOC04LTEwLjc5bC03Ny44Ni03LjU1Yy04LjQ3LS44Mi0xMS4yMy0xMS44My00LjE0LTE2LjU0bDY1LjE1LTQzLjNjNC40Ni0yLjk3IDUuMzgtOS4xNSAxLjk4LTEzLjI5TDIxLjQ2IDkzLjIyYy01LjQxLTYuNTcuNDMtMTYuMyA4Ljc4LTE0LjYybDc2LjY4IDE1LjQ0YzUuMjYgMS4wNiAxMC4yOC0yLjY2IDEwLjgtOGw3LjU1LTc3Ljg2Yy44Mi04LjQ4IDExLjgzLTExLjIzIDE2LjU1LTQuMTRsNDMuMyA2NS4xNGMyLjk3IDQuNDYgOS4xNSA1LjM4IDEzLjI5IDEuOThsNjAuNC00OS43MWM2LjU3LTUuNDEgMTYuMy40MyAxNC42MiA4Ljc3TDI2Mi4xIDg2LjM4Yy0yLjcxIDMuMDUtNS40MyA2LjA5LTcuOTEgOS40bC0zMi4xNSA0Mi45Ny0xMC43MSAxNC4zMmMtMzIuNzMgOC43Ni01OS4xOCAzNC41My02OC4wOCA2Ny43NHptNDk0LjU3IDEzMi41MWwtMTIuNDIgNDYuMzZjLTMuMTMgMTEuNjgtOS4zOCAyMS42MS0xNy41NSAyOS4zNmE2Ni44NzYgNjYuODc2IDAgMCAxLTguNzYgN2wtMTMuOTkgNTIuMjNjLTEuMTQgNC4yNy0zLjEgOC4xLTUuNjUgMTEuMzgtNy42NyA5Ljg0LTIwLjc0IDE0LjY4LTMzLjU0IDExLjI1TDUxNSA1MDIuNjJjLTE3LjA3LTQuNTctMjcuMi0yMi4xMi0yMi42My0zOS4xOWw4LjI4LTMwLjkxLTI0Ny4yOC02Ni4yNi04LjI4IDMwLjkxYy00LjU3IDE3LjA3LTIyLjEyIDI3LjItMzkuMTkgMjIuNjNsLTMwLjkxLTguMjhjLTEyLjgtMy40My0yMS43LTE0LjE2LTIzLjQyLTI2LjUxLS41Ny00LjEyLS4zNS04LjQyLjc5LTEyLjY4bDEzLjk5LTUyLjIzYTY2LjYyIDY2LjYyIDAgMCAxLTQuMDktMTAuNDVjLTMuMi0xMC43OS0zLjY1LTIyLjUyLS41Mi0zNC4ybDEyLjQyLTQ2LjM3YzUuMzEtMTkuOCAxOS4zNi0zNC44MyAzNi44OS00Mi4yMWE2NC4zMzYgNjQuMzM2IDAgMCAxIDE4LjQ5LTQuNzJsMTguMTMtMjQuMjMgMzIuMTUtNDIuOTdjMy40NS00LjYxIDcuMTktOC45IDExLjItMTIuODQgOC03Ljg5IDE3LjAzLTE0LjQ0IDI2Ljc0LTE5LjUxIDQuODYtMi41NCA5Ljg5LTQuNzEgMTUuMDUtNi40OSAxMC4zMy0zLjU4IDIxLjE5LTUuNjMgMzIuMjQtNi4wNCAxMS4wNS0uNDEgMjIuMzEuODIgMzMuNDMgMy44bDEyMi42OCAzMi44N2MxMS4xMiAyLjk4IDIxLjQ4IDcuNTQgMzAuODUgMTMuNDNhMTExLjExIDExMS4xMSAwIDAgMSAzNC42OSAzNC41YzguODIgMTMuODggMTQuNjQgMjkuODQgMTYuNjggNDYuOTlsNi4zNiA1My4yOSAzLjU5IDMwLjA1YTY0LjQ5IDY0LjQ5IDAgMCAxIDIyLjc0IDI5LjkzYzQuMzkgMTEuODggNS4yOSAyNS4xOSAxLjc1IDM4LjM5ek0yNTUuNTggMjM0LjM0Yy0xOC41NS00Ljk3LTM0LjIxIDQuMDQtMzkuMTcgMjIuNTMtNC45NiAxOC40OSA0LjExIDM0LjEyIDIyLjY1IDM5LjA5IDE4LjU1IDQuOTcgNDUuNTQgMTUuNTEgNTAuNDktMi45OCA0Ljk2LTE4LjQ5LTE1LjQzLTUzLjY3LTMzLjk3LTU4LjY0em0yOTAuNjEgMjguMTdsLTYuMzYtNTMuMjljLS41OC00Ljg3LTEuODktOS41My0zLjgyLTEzLjg2LTUuOC0xMi45OS0xNy4yLTIzLjAxLTMxLjQyLTI2LjgybC0xMjIuNjgtMzIuODdhNDguMDA4IDQ4LjAwOCAwIDAgMC01MC44NiAxNy42MWwtMzIuMTUgNDIuOTcgMTcyIDQ2LjA4IDc1LjI5IDIwLjE4em0xOC40OSA1NC42NWMtMTguNTUtNC45Ny01My44IDE1LjMxLTU4Ljc1IDMzLjc5LTQuOTUgMTguNDkgMjMuNjkgMjIuODYgNDIuMjQgMjcuODMgMTguNTUgNC45NyAzNC4yMS00LjA0IDM5LjE3LTIyLjUzIDQuOTUtMTguNDgtNC4xMS0zNC4xMi0yMi42Ni0zOS4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyU2lkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMTkyaC0xNkw0MTkuMjIgNTYuMDJBNjQuMDI1IDY0LjAyNSAwIDAgMCAzNjkuMjQgMzJIMTU1LjMzYy0yNi4xNyAwLTQ5LjcgMTUuOTMtNTkuNDIgNDAuMjNMNDggMTk0LjI2QzIwLjQ0IDIwMS40IDAgMjI2LjIxIDAgMjU2djExMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2czk2LTQyLjk4IDk2LTk2aDEyOGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2czk2LTQyLjk4IDk2LTk2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2di04MGMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2ek0xNjAgNDMyYy0yNi40NyAwLTQ4LTIxLjUzLTQ4LTQ4czIxLjUzLTQ4IDQ4LTQ4IDQ4IDIxLjUzIDQ4IDQ4LTIxLjUzIDQ4LTQ4IDQ4em03Mi0yNDBIMTE2LjkzbDM4LjQtOTZIMjMydjk2em00OCAwVjk2aDg5LjI0bDc2LjggOTZIMjgwem0yMDAgMjQwYy0yNi40NyAwLTQ4LTIxLjUzLTQ4LTQ4czIxLjUzLTQ4IDQ4LTQ4IDQ4IDIxLjUzIDQ4IDQ4LTIxLjUzIDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk5Ljk5IDE3NmgtNTkuODdsLTE2LjY0LTQxLjZDNDA2LjM4IDkxLjYzIDM2NS41NyA2NCAzMTkuNSA2NGgtMTI3Yy00Ni4wNiAwLTg2Ljg4IDI3LjYzLTEwMy45OSA3MC40TDcxLjg3IDE3NkgxMi4wMUM0LjIgMTc2LTEuNTMgMTgzLjM0LjM3IDE5MC45MWw2IDI0QzcuNyAyMjAuMjUgMTIuNSAyMjQgMTguMDEgMjI0aDIwLjA3QzI0LjY1IDIzNS43MyAxNiAyNTIuNzggMTYgMjcydjQ4YzAgMTYuMTIgNi4xNiAzMC42NyAxNiA0MS45M1Y0MTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgyNTZ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi01NC4wN2M5Ljg0LTExLjI1IDE2LTI1LjggMTYtNDEuOTN2LTQ4YzAtMTkuMjItOC42NS0zNi4yNy0yMi4wNy00OEg0OTRjNS41MSAwIDEwLjMxLTMuNzUgMTEuNjQtOS4wOWw2LTI0YzEuODktNy41Ny0zLjg0LTE0LjkxLTExLjY1LTE0Ljkxem0tMzUyLjA2LTE3LjgzYzcuMjktMTguMjIgMjQuOTQtMzAuMTcgNDQuNTctMzAuMTdoMTI3YzE5LjYzIDAgMzcuMjggMTEuOTUgNDQuNTcgMzAuMTdMMzg0IDIwOEgxMjhsMTkuOTMtNDkuODN6TTk2IDMxOS44Yy0xOS4yIDAtMzItMTIuNzYtMzItMzEuOVM3Ni44IDI1NiA5NiAyNTZzNDggMjguNzEgNDggNDcuODUtMjguOCAxNS45NS00OCAxNS45NXptMzIwIDBjLTE5LjIgMC00OCAzLjE5LTQ4LTE1Ljk1UzM5Ni44IDI1NiA0MTYgMjU2czMyIDEyLjc2IDMyIDMxLjktMTIuOCAzMS45LTMyIDMxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmF2YW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2LDIwOGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCw0MTYsMjA4Wk02MjQsMzIwSDU3NlYxNjBBMTYwLDE2MCwwLDAsMCw0MTYsMEg2NEE2NCw2NCwwLDAsMCwwLDY0VjMyMGE2NCw2NCwwLDAsMCw2NCw2NEg5NmE5Niw5NiwwLDAsMCwxOTIsMEg2MjRhMTYsMTYsMCwwLDAsMTYtMTZWMzM2QTE2LDE2LDAsMCwwLDYyNCwzMjBaTTE5Miw0MzJhNDgsNDgsMCwxLDEsNDgtNDhBNDguMDUsNDguMDUsMCwwLDEsMTkyLDQzMlptNjQtMjQwYTMyLDMyLDAsMCwxLTMyLDMySDk2YTMyLDMyLDAsMCwxLTMyLTMyVjEyOEEzMiwzMiwwLDAsMSw5Niw5NkgyMjRhMzIsMzIsMCwwLDEsMzIsMzJaTTQ0OCwzMjBIMzIwVjEyOGEzMiwzMiwwLDAsMSwzMi0zMmg2NGEzMiwzMiwwLDAsMSwzMiwzMlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxLjMgMTkyaDI1Ny4zYzE3LjggMCAyNi43IDIxLjUgMTQuMSAzNC4xTDE3NC4xIDM1NC44Yy03LjggNy44LTIwLjUgNy44LTI4LjMgMEwxNy4yIDIyNi4xQzQuNiAyMTMuNSAxMy41IDE5MiAzMS4zIDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxOTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAxMjcuMzM4djI1Ny4zMjRjMCAxNy44MTgtMjEuNTQzIDI2Ljc0MS0zNC4xNDIgMTQuMTQyTDI5LjE5NiAyNzAuMTQyYy03LjgxLTcuODEtNy44MS0yMC40NzQgMC0yOC4yODRsMTI4LjY2Mi0xMjguNjYyYzEyLjU5OS0xMi42IDM0LjE0Mi0zLjY3NiAzNC4xNDIgMTQuMTQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxOTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzg0LjY2MlYxMjcuMzM4YzAtMTcuODE4IDIxLjU0My0yNi43NDEgMzQuMTQyLTE0LjE0MmwxMjguNjYyIDEyOC42NjJjNy44MSA3LjgxIDcuODEgMjAuNDc0IDAgMjguMjg0TDM0LjE0MiAzOTguODA0QzIxLjU0MyA0MTEuNDA0IDAgNDAyLjQ4IDAgMzg0LjY2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRTcXVhcmVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHpNOTIuNSAyMjAuNWwxMjMgMTIzYzQuNyA0LjcgMTIuMyA0LjcgMTcgMGwxMjMtMTIzYzcuNi03LjYgMi4yLTIwLjUtOC41LTIwLjVIMTAxYy0xMC43IDAtMTYuMSAxMi45LTguNSAyMC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFNxdWFyZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQ4MEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4ek0yNTkuNTE1IDEyNC40ODVsLTEyMy4wMyAxMjMuMDNjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwxMjMuMDI5IDEyMy4wMjljNy41NiA3LjU2IDIwLjQ4NSAyLjIwNiAyMC40ODUtOC40ODVWMTMyLjk3MWMuMDAxLTEwLjY5MS0xMi45MjUtMTYuMDQ1LTIwLjQ4NC04LjQ4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRTcXVhcmVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAzMmgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4em0xNDAuNDg1IDM1NS41MTVsMTIzLjAyOS0xMjMuMDI5YzQuNjg2LTQuNjg2IDQuNjg2LTEyLjI4NCAwLTE2Ljk3MWwtMTIzLjAyOS0xMjMuMDNjLTcuNTYtNy41Ni0yMC40ODUtMi4yMDYtMjAuNDg1IDguNDg1djI0Ni4wNTljMCAxMC42OTEgMTIuOTI2IDE2LjA0NSAyMC40ODUgOC40ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0U3F1YXJlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0MzJWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OHptMzU1LjUxNS0xNDAuNDg1bC0xMjMuMDMtMTIzLjAzYy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMOTIuNDg1IDI5MS41MTVjLTcuNTYgNy41Ni0yLjIwNiAyMC40ODUgOC40ODUgMjAuNDg1aDI0Ni4wNTljMTAuNjkxIDAgMTYuMDQ1LTEyLjkyNiA4LjQ4Ni0yMC40ODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4LjY2MiAzNTJIMzEuMzM4Yy0xNy44MTggMC0yNi43NDEtMjEuNTQzLTE0LjE0Mi0zNC4xNDJsMTI4LjY2Mi0xMjguNjYyYzcuODEtNy44MSAyMC40NzQtNy44MSAyOC4yODQgMGwxMjguNjYyIDEyOC42NjJjMTIuNiAxMi41OTkgMy42NzYgMzQuMTQyLTE0LjE0MiAzNC4xNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnJvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTguMiAxNTYuNmMtNTIuNy0yNS43LTExNC41LTEwLjUtMTUwLjIgMzIuOGw1NS4yIDU1LjJjNi4zIDYuMyA2LjMgMTYuNCAwIDIyLjYtMy4xIDMuMS03LjIgNC43LTExLjMgNC43cy04LjItMS42LTExLjMtNC43TDEzMC40IDIxNyAyLjMgNDc5LjdjLTIuOSA2LTMuMSAxMy4zIDAgMTkuNyA1LjQgMTEuMSAxOC45IDE1LjcgMzAgMTAuM2wxMzMuNi02NS4yLTQ5LjItNDkuMmMtNi4zLTYuMi02LjMtMTYuNCAwLTIyLjYgNi4zLTYuMiAxNi40LTYuMiAyMi42IDBsNTcgNTcgMTAyLTQ5LjhjMjQtMTEuNyA0NC41LTMxLjMgNTcuMS01Ny4xIDMwLjEtNjEuNyA0LjUtMTM2LjEtNTcuMi0xNjYuMnptOTIuMS0zNC45QzQwOS44IDgxIDM5OS43IDMyLjkgMzYwIDBjLTUwLjMgNDEuNy01Mi41IDEwNy41LTcuOSAxNTEuOWw4IDhjNDQuNCA0NC42IDExMC4zIDQyLjQgMTUxLjktNy45LTMyLjktMzkuNy04MS00OS44LTEyMS43LTMwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0LjcxNyAzMjBIMjExLjU3Mmw2LjU0NSAzMmgyNjguNDE4YzE1LjQwMSAwIDI2LjgxNiAxNC4zMDEgMjMuNDAzIDI5LjMxOWwtNS41MTcgMjQuMjc2QzUyMy4xMTIgNDE0LjY2OCA1MzYgNDMzLjgyOCA1MzYgNDU2YzAgMzEuMjAyLTI1LjUxOSA1Ni40NDQtNTYuODI0IDU1Ljk5NC0yOS44MjMtLjQyOS01NC4zNS0yNC42MzEtNTUuMTU1LTU0LjQ0Ny0uNDQtMTYuMjg3IDYuMDg1LTMxLjA0OSAxNi44MDMtNDEuNTQ4SDIzMS4xNzZDMjQxLjU1MyA0MjYuMTY1IDI0OCA0NDAuMzI2IDI0OCA0NTZjMCAzMS44MTMtMjYuNTI4IDU3LjQzMS01OC42NyA1NS45MzgtMjguNTQtMS4zMjUtNTEuNzUxLTI0LjM4NS01My4yNTEtNTIuOTE3LTEuMTU4LTIyLjAzNCAxMC40MzYtNDEuNDU1IDI4LjA1MS01MS41ODZMOTMuODgzIDY0SDI0QzEwLjc0NSA2NCAwIDUzLjI1NSAwIDQwVjI0QzAgMTAuNzQ1IDEwLjc0NSAwIDI0IDBoMTAyLjUyOWMxMS40MDEgMCAyMS4yMjggOC4wMjEgMjMuNTEzIDE5LjE5TDE1OS4yMDggNjRINTUxLjk5YzE1LjQwMSAwIDI2LjgxNiAxNC4zMDEgMjMuNDAzIDI5LjMxOWwtNDcuMjczIDIwOEM1MjUuNjM3IDMxMi4yNDYgNTE1LjkyMyAzMjAgNTA0LjcxNyAzMjB6TTQwMy4wMjkgMTkySDM2MHYtNjBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NjBoLTQzLjAyOWMtMTAuNjkxIDAtMTYuMDQ1IDEyLjkyNi04LjQ4NSAyMC40ODVsNjcuMDI5IDY3LjAyOWM0LjY4NiA0LjY4NiAxMi4yODQgNC42ODYgMTYuOTcxIDBsNjcuMDI5LTY3LjAyOWM3LjU1OS03LjU1OSAyLjIwNS0yMC40ODUtOC40ODYtMjAuNDg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJ0UGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQuNzE3IDMyMEgyMTEuNTcybDYuNTQ1IDMyaDI2OC40MThjMTUuNDAxIDAgMjYuODE2IDE0LjMwMSAyMy40MDMgMjkuMzE5bC01LjUxNyAyNC4yNzZDNTIzLjExMiA0MTQuNjY4IDUzNiA0MzMuODI4IDUzNiA0NTZjMCAzMS4yMDItMjUuNTE5IDU2LjQ0NC01Ni44MjQgNTUuOTk0LTI5LjgyMy0uNDI5LTU0LjM1LTI0LjYzMS01NS4xNTUtNTQuNDQ3LS40NC0xNi4yODcgNi4wODUtMzEuMDQ5IDE2LjgwMy00MS41NDhIMjMxLjE3NkMyNDEuNTUzIDQyNi4xNjUgMjQ4IDQ0MC4zMjYgMjQ4IDQ1NmMwIDMxLjgxMy0yNi41MjggNTcuNDMxLTU4LjY3IDU1LjkzOC0yOC41NC0xLjMyNS01MS43NTEtMjQuMzg1LTUzLjI1MS01Mi45MTctMS4xNTgtMjIuMDM0IDEwLjQzNi00MS40NTUgMjguMDUxLTUxLjU4Nkw5My44ODMgNjRIMjRDMTAuNzQ1IDY0IDAgNTMuMjU1IDAgNDBWMjRDMCAxMC43NDUgMTAuNzQ1IDAgMjQgMGgxMDIuNTI5YzExLjQwMSAwIDIxLjIyOCA4LjAyMSAyMy41MTMgMTkuMTlMMTU5LjIwOCA2NEg1NTEuOTljMTUuNDAxIDAgMjYuODE2IDE0LjMwMSAyMy40MDMgMjkuMzE5bC00Ny4yNzMgMjA4QzUyNS42MzcgMzEyLjI0NiA1MTUuOTIzIDMyMCA1MDQuNzE3IDMyMHpNNDA4IDE2OGgtNDh2LTQwYzAtOC44MzctNy4xNjMtMTYtMTYtMTZoLTE2Yy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djQwaC00OGMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnYxNmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDQ4djQwYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoMTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBoNDhjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtMTZjMC04LjgzNy03LjE2My0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FzaFJlZ2lzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMS4xIDM3OC44bC0yNi43LTE2MGMtMi42LTE1LjQtMTUuOS0yNi43LTMxLjYtMjYuN0gyMDh2LTY0aDk2YzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZINDhjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoOTZ2NjRINTkuMWMtMTUuNiAwLTI5IDExLjMtMzEuNiAyNi43TC44IDM3OC43Yy0uNiAzLjUtLjkgNy0uOSAxMC41VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTkwLjdjLjEtMy41LS4yLTctLjgtMTAuNXpNMjgwIDI0OGMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZ6bS0zMiA2NGgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZ6bS0zMi04MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZ6TTgwIDgwVjQ4aDE5MnYzMkg4MHptNDAgMjAwaC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNnptMTYgNjR2LTE2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2em0yMTYgMTEyYzAgNC40LTMuNiA4LTggOEgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE3NmM0LjQgMCA4IDMuNiA4IDh2MTZ6bTI0LTExMmMwIDguOC03LjIgMTYtMTYgMTZoLTE2Yy04LjggMC0xNi03LjItMTYtMTZ2LTE2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZ6bTQ4LTgwYzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2F0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC41OSAxOTJjLTIwLjE4IDAtMTA2LjgyIDEuOTgtMTYyLjU5IDg1Ljk1VjE5MmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2LTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzJjMTcuNjQgMCAzMiAxNC4zNiAzMiAzMnYyNTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMTc2YzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC0zMmwxMjgtOTZ2MTQ0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjI4OS44NmMtMTAuMjkgMi42Ny0yMC44OSA0LjU0LTMyIDQuNTQtNjEuODEgMC0xMTMuNTItNDQuMDUtMTI1LjQxLTEwMi40ek00NDggOTZoLTY0bC02NC02NHYxMzQuNGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2czk2LTQyLjk4IDk2LTk2VjMybC02NCA2NHptLTcyIDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnptODAgMGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNlcnRpZmljYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1OC42MjIgMjU1LjkybDQ1Ljk4NS00NS4wMDVjMTMuNzA4LTEyLjk3NyA3LjMxNi0zNi4wMzktMTAuNjY0LTQwLjMzOWwtNjIuNjUtMTUuOTkgMTcuNjYxLTYyLjAxNWM0Ljk5MS0xNy44MzgtMTEuODI5LTM0LjY2My0yOS42NjEtMjkuNjcxbC02MS45OTQgMTcuNjY3LTE1Ljk4NC02Mi42NzFDMzM3LjA4NS4xOTcgMzEzLjc2NS02LjI3NiAzMDAuOTkgNy4yMjhMMjU2IDUzLjU3IDIxMS4wMTEgNy4yMjljLTEyLjYzLTEzLjM1MS0zNi4wNDctNy4yMzQtNDAuMzI1IDEwLjY2OGwtMTUuOTg0IDYyLjY3MS02MS45OTUtMTcuNjY3Qzc0Ljg3IDU3LjkwNyA1OC4wNTYgNzQuNzM4IDYzLjA0NiA5Mi41NzJsMTcuNjYxIDYyLjAxNS02Mi42NSAxNS45OUMuMDY5IDE3NC44NzgtNi4zMSAxOTcuOTQ0IDcuMzkyIDIxMC45MTVsNDUuOTg1IDQ1LjAwNS00NS45ODUgNDUuMDA0Yy0xMy43MDggMTIuOTc3LTcuMzE2IDM2LjAzOSAxMC42NjQgNDAuMzM5bDYyLjY1IDE1Ljk5LTE3LjY2MSA2Mi4wMTVjLTQuOTkxIDE3LjgzOCAxMS44MjkgMzQuNjYzIDI5LjY2MSAyOS42NzFsNjEuOTk0LTE3LjY2NyAxNS45ODQgNjIuNjcxYzQuNDM5IDE4LjU3NSAyNy42OTYgMjQuMDE4IDQwLjMyNSAxMC42NjhMMjU2IDQ1OC42MWw0NC45ODkgNDYuMDAxYzEyLjUgMTMuNDg4IDM1Ljk4NyA3LjQ4NiA0MC4zMjUtMTAuNjY4bDE1Ljk4NC02Mi42NzEgNjEuOTk0IDE3LjY2N2MxNy44MzYgNC45OTQgMzQuNjUxLTExLjgzNyAyOS42NjEtMjkuNjcxbC0xNy42NjEtNjIuMDE1IDYyLjY1LTE1Ljk5YzE3Ljk4Ny00LjMwMiAyNC4zNjYtMjcuMzY3IDEwLjY2NC00MC4zMzlsLTQ1Ljk4NC00NS4wMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAxMjhjMC0yOS41IDE2LjItNTUgNDAtNjguOVYyNTZoNDhWNDhoNDh2MjA4aDQ4VjU5LjFjMjMuOCAxMy45IDQwIDM5LjQgNDAgNjguOXYxMjhoNDhWMTI4QzM4NCA1Ny4zIDMyNi43IDAgMjU2IDBoLTY0QzEyMS4zIDAgNjQgNTcuMyA2NCAxMjh2MTI4aDQ4em0zMzQuMyAyMTMuOWwtMTAuNy0zMmMtNC40LTEzLjEtMTYuNi0yMS45LTMwLjQtMjEuOUg0Mi43Yy0xMy44IDAtMjYgOC44LTMwLjQgMjEuOWwtMTAuNyAzMkMtNS4yIDM2Mi42IDEwLjIgMzg0IDMyIDM4NHYxMTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzODRoMjU2djExMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjM4NGMyMS44IDAgMzcuMi0yMS40IDMwLjMtNDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhbGtib2FyZFRlYWNoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDM1MmMtMi4zOSAwLTQuNzguMzUtNy4wNiAxLjA5QzE4Ny45OCAzNTcuMyAxNzQuMzUgMzYwIDE2MCAzNjBjLTE0LjM1IDAtMjcuOTgtMi43LTQwLjk1LTYuOTEtMi4yOC0uNzQtNC42Ni0xLjA5LTcuMDUtMS4wOUM0OS45NCAzNTItLjMzIDQwMi40OCAwIDQ2NC42Mi4xNCA0OTAuODggMjEuNzMgNTEyIDQ4IDUxMmgyMjRjMjYuMjcgMCA0Ny44Ni0yMS4xMiA0OC00Ny4zOC4zMy02Mi4xNC00OS45NC0xMTIuNjItMTEyLTExMi42MnptLTQ4LTMyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZzLTQyLjk4LTk2LTk2LTk2LTk2IDQyLjk4LTk2IDk2IDQyLjk4IDk2IDk2IDk2ek01OTIgMEgyMDhjLTI2LjQ3IDAtNDggMjIuMjUtNDggNDkuNTlWOTZjMjMuNDIgMCA0NS4xIDYuNzggNjQgMTcuOFY2NGgzNTJ2Mjg4aC02NHYtNjRIMzg0djY0aC03Ni4yNGMxOS4xIDE2LjY5IDMzLjEyIDM4LjczIDM5LjY5IDY0SDU5MmMyNi40NyAwIDQ4LTIyLjI1IDQ4LTQ5LjU5VjQ5LjU5QzY0MCAyMi4yNSA2MTguNDcgMCA1OTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhbGtib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGg0NDh2MzUyaDY0VjQwYzAtMjIuMDYtMTcuOTQtNDAtNDAtNDBINzJDNDkuOTQgMCAzMiAxNy45NCAzMiA0MHYzNzZoNjRWNjR6bTUyOCAzODRINDgwdi02NEgyODh2NjRIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDYwOGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJnaW5nU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0yMDgtMzIwVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2cy0xNiA3LjE2LTE2IDE2djQ4aC0zMlY4MGMwLTguODQtNy4xNi0xNi0xNi0xNnMtMTYgNy4xNi0xNiAxNnY0OGgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgMzUuNzYgMjMuNjIgNjUuNjkgNTYgNzUuOTN2MTE4LjQ5YzAgMTMuOTUtOS41IDI2LjkyLTIzLjI2IDI5LjE5QzQzMS4yMiA0MDIuNSA0MTYgMzg4Ljk5IDQxNiAzNzJ2LTI4YzAtNDguNi0zOS40LTg4LTg4LTg4aC04VjY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRIOTZDNjAuNjUgMCAzMiAyOC42NSAzMiA2NHYzNTJoMjg4VjMwNGg4YzIyLjA5IDAgNDAgMTcuOTEgNDAgNDB2MjQuNjFjMCAzOS42NyAyOC45MiA3NS4xNiA2OC40MSA3OS4wMUM0ODEuNzEgNDUyLjA1IDUyMCA0MTYuNDEgNTIwIDM3MlYyNTEuOTNjMzIuMzgtMTAuMjQgNTYtNDAuMTcgNTYtNzUuOTN2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNnptLTI4My45MSA0Ny43NmwtOTMuNyAxMzljLTIuMiAzLjMzLTYuMjEgNS4yNC0xMC4zOSA1LjI0LTcuNjcgMC0xMy40Ny02LjI4LTExLjY3LTEyLjkyTDE2Ny4zNSAyMjRIMTA4Yy03LjI1IDAtMTIuODUtNS41OS0xMS44OS0xMS44OWwxNi0xMDdDMTEyLjkgOTkuOSAxMTcuOTggOTYgMTI0IDk2aDY4YzcuODggMCAxMy42MiA2LjU0IDExLjYgMTMuMjFMMTkyIDE2MGg1Ny43YzkuMjQgMCAxNS4wMSA4Ljc4IDEwLjM5IDE1Ljc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydEFyZWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwIDM4NGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDEyYy02LjYgMC0xMi01LjQtMTItMTJWNzZjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnYzMDhoNDM2ek0zNzIuNyAxNTkuNUwyODggMjE2bC04NS4zLTExMy43Yy01LjEtNi44LTE1LjUtNi4zLTE5LjkgMUw5NiAyNDh2MTA0aDM4NGwtODkuOS0xODcuOGMtMy4yLTYuNS0xMS40LTguNy0xNy40LTQuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMyLjggMzIwaDM4LjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjE3Mi44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMzguNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djEzNC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptOTYgMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFY3Ni44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMzguNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djIzMC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptLTI4OCAwaDM4LjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44di03MC40YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMzguNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djcwLjRjMCA2LjQgNi40IDEyLjggMTIuOCAxMi44em05NiAwaDM4LjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjEwOC44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMzguNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djE5OC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHpNNDk2IDM4NEg2NFY4MGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDY0IDAgNzEuMTYgMCA4MHYzMzZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydExpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDM4NEg2NFY4MGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDY0IDAgNzEuMTYgMCA4MHYzMzZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00NjQgOTZIMzQ1Ljk0Yy0yMS4zOCAwLTMyLjA5IDI1Ljg1LTE2Ljk3IDQwLjk3bDMyLjQgMzIuNEwyODggMjQyLjc1bC03My4zNy03My4zN2MtMTIuNS0xMi41LTMyLjc2LTEyLjUtNDUuMjUgMGwtNjguNjkgNjguNjljLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjIgMjIuNjJjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMEwxOTIgMjM3LjI1bDczLjM3IDczLjM3YzEyLjUgMTIuNSAzMi43NiAxMi41IDQ1LjI1IDBsOTYtOTYgMzIuNCAzMi40YzE1LjEyIDE1LjEyIDQwLjk3IDQuNDEgNDAuOTctMTYuOTdWMTEyYy4wMS04Ljg0LTcuMTUtMTYtMTUuOTktMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0UGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyNy43OSAyODhIMjkwLjVsMTU4LjAzIDE1OC4wM2M2LjA0IDYuMDQgMTUuOTggNi41MyAyMi4xOS42OCAzOC43LTM2LjQ2IDY1LjMyLTg1LjYxIDczLjEzLTE0MC44NiAxLjM0LTkuNDYtNi41MS0xNy44NS0xNi4wNi0xNy44NXptLTE1LjgzLTY0LjhDNTAzLjcyIDEwMy43NCA0MDguMjYgOC4yOCAyODguOC4wNCAyNzkuNjgtLjU5IDI3MiA3LjEgMjcyIDE2LjI0VjI0MGgyMjMuNzdjOS4xNCAwIDE2LjgyLTcuNjggMTYuMTktMTYuOHpNMjI0IDI4OFY1MC43MWMwLTkuNTUtOC4zOS0xNy40LTE3Ljg0LTE2LjA2Qzg2Ljk5IDUxLjQ5LTQuMSAxNTUuNi4xNCAyODAuMzcgNC41IDQwOC41MSAxMTQuODMgNTEzLjU5IDI0My4wMyA1MTEuOThjNTAuNC0uNjMgOTYuOTctMTYuODcgMTM1LjI2LTQ0LjAzIDcuOS01LjYgOC40Mi0xNy4yMyAxLjU3LTI0LjA4TDIyNCAyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTY3LTExMS4wMzMgMjQ4LTI0OCAyNDhTOCAzOTIuOTY3IDggMjU2IDExOS4wMzMgOCAyNTYgOHMyNDggMTExLjAzMyAyNDggMjQ4ek0yMjcuMzE0IDM4Ny4zMTRsMTg0LTE4NGM2LjI0OC02LjI0OCA2LjI0OC0xNi4zNzkgMC0yMi42MjdsLTIyLjYyNy0yMi42MjdjLTYuMjQ4LTYuMjQ5LTE2LjM3OS02LjI0OS0yMi42MjggMEwyMTYgMzA4LjExOGwtNzAuMDU5LTcwLjA1OWMtNi4yNDgtNi4yNDgtMTYuMzc5LTYuMjQ4LTIyLjYyOCAwbC0yMi42MjcgMjIuNjI3Yy02LjI0OCA2LjI0OC02LjI0OCAxNi4zNzkgMCAyMi42MjdsMTA0IDEwNGM2LjI0OSA2LjI0OSAxNi4zNzkgNi4yNDkgMjIuNjI4LjAwMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlY2tEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1IDE3NC44bC0zOS42LTM5LjZjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDE5MiAzNzQuNyA4MC42IDI2My4yYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMwMi45Yy05LjQgOS40LTkuNCAyNC42IDAgMzRMMTc1IDUwNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyOTYtMjk2LjJjOS40LTkuNSA5LjQtMjQuNy4xLTM0em0tMzI0LjMgMTA2YzYuMiA2LjMgMTYuNCA2LjMgMjIuNiAwbDIwOC0yMDguMmM2LjItNi4zIDYuMi0xNi40IDAtMjIuNkwzNjYuMSA0LjdjLTYuMi02LjMtMTYuNC02LjMtMjIuNiAwTDE5MiAxNTYuMmwtNTUuNC01NS41Yy02LjItNi4zLTE2LjQtNi4zLTIyLjYgMEw2OC43IDE0NmMtNi4yIDYuMy02LjIgMTYuNCAwIDIyLjZsMTEyIDExMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVja1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgNDgwSDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjgwYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMzUyYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDh6bS0yMDQuNjg2LTk4LjA1OWwxODQtMTg0YzYuMjQ4LTYuMjQ4IDYuMjQ4LTE2LjM3OSAwLTIyLjYyN2wtMjIuNjI3LTIyLjYyN2MtNi4yNDgtNi4yNDgtMTYuMzc5LTYuMjQ5LTIyLjYyOCAwTDE4NCAzMDIuNzQ1bC03MC4wNTktNzAuMDU5Yy02LjI0OC02LjI0OC0xNi4zNzktNi4yNDgtMjIuNjI4IDBsLTIyLjYyNyAyMi42MjdjLTYuMjQ4IDYuMjQ4LTYuMjQ4IDE2LjM3OSAwIDIyLjYyN2wxMDQgMTA0YzYuMjQ5IDYuMjUgMTYuMzc5IDYuMjUgMjIuNjI4LjAwMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTczLjg5OCA0MzkuNDA0bC0xNjYuNC0xNjYuNGMtOS45OTctOS45OTctOS45OTctMjYuMjA2IDAtMzYuMjA0bDM2LjIwMy0zNi4yMDRjOS45OTctOS45OTggMjYuMjA3LTkuOTk4IDM2LjIwNCAwTDE5MiAzMTIuNjkgNDMyLjA5NSA3Mi41OTZjOS45OTctOS45OTcgMjYuMjA3LTkuOTk3IDM2LjIwNCAwbDM2LjIwMyAzNi4yMDRjOS45OTcgOS45OTcgOS45OTcgMjYuMjA2IDAgMzYuMjA0bC0yOTQuNCAyOTQuNDAxYy05Ljk5OCA5Ljk5Ny0yNi4yMDcgOS45OTctMzYuMjA0LS4wMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI4OHYxNjBhMzIgMzIgMCAwIDAgMzIgMzJoNDQ4YTMyIDMyIDAgMCAwIDMyLTMyVjI4OHpNMjk5LjgzIDMyYTMyIDMyIDAgMCAwLTIxLjEzIDdMMCAyNTZoNTEyYzAtMTE5Ljg5LTk0LTIxNy44LTIxMi4xNy0yMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzQmlzaG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjg3Ljg4YzAgNTEuNjQgMjIuMTQgNzMuODMgNTYgODQuNlY0MTZoMTkydi00My41MmMzMy44Ni0xMC43NyA1Ni0zMyA1Ni04NC42IDAtMzAuNjEtMTAuNzMtNjcuMS0yNi42OS0xMDIuNTZMMTg1IDI4NS42NWE4IDggMCAwIDEtMTEuMzEgMGwtMTEuMzEtMTEuMzFhOCA4IDAgMCAxIDAtMTEuMzFMMjcwLjI3IDE1NS4xYy0yMC44LTM3LjkxLTQ2LjQ3LTcyLjEtNzAuODctOTIuNTlDMjEzLjQgNTkuMDkgMjI0IDQ3LjA1IDIyNCAzMmEzMiAzMiAwIDAgMC0zMi0zMmgtNjRhMzIgMzIgMCAwIDAtMzIgMzJjMCAxNSAxMC42IDI3LjA5IDI0LjYgMzAuNTFDNjcuODEgMTA2LjggOCAyMTQuNSA4IDI4Ny44OHpNMzA0IDQ0OEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyODhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0JvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS45LjJoLTY0djY0aDY0ek0wIDY0LjE3djY0aDY0di02NHpNMTI4IC4ySDY0djY0aDY0em02NCAyNTUuOXY2NGg2NHYtNjR6TTAgMTkyLjEydjY0aDY0di02NHpNMzgzLjg1LjJoLTY0djY0aDY0em0xMjggMGgtNjR2NjRoNjR6TTEyOCAyNTYuMUg2NHY2NGg2NHpNNTExLjggNDQ4di02NGgtNjR2NjR6bTAtMTI4di02NGgtNjR2NjR6TTM4My44NSA1MTJoNjR2LTY0aC02NHptMTI4LTMxOS44OHYtNjRoLTY0djY0ek0xMjggNTEyaDY0di02NGgtNjR6TTAgNTEyaDY0di02NEgwem0yNTUuOSAwaDY0di02NGgtNjR6TTAgMzIwLjA3djY0aDY0di02NHptMzE5Ljg4LTE5MS45MnYtNjRoLTY0djY0em0tNjQgMTI4aDY0di02NGgtNjR6bS02NCAxMjh2NjRoNjR2LTY0em0xMjgtNjRoNjR2LTY0aC02NHptMC0xMjcuOTVoNjR2LTY0aC02NHptMCAxOTEuOTN2NjRoNjR2LTY0ek02NCAzODQuMDV2NjRoNjR2LTY0em0xMjgtMjU1Ljl2LTY0aC02NHY2NHptMTkxLjkyIDI1NS45aDY0di02NGgtNjR6bS0xMjgtMTkxLjkzdi02NGgtNjR2NjR6bTEyOC0xMjcuOTV2NjRoNjR2LTY0em0tMTI4IDI1NS45djY0aDY0di02NHptLTY0LTEyNy45NUgxMjh2NjRoNjR6bTE5MS45MiA2NGg2NHYtNjRoLTY0ek0xMjggMTI4LjE1SDY0djY0aDY0em0wIDE5MS45MnY2NGg2NHYtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzS2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgNDQ4SDQ4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTE2LTI4OEgyNTZ2LTQ4aDQwYTggOCAwIDAgMCA4LThWNTZhOCA4IDAgMCAwLTgtOGgtNDBWOGE4IDggMCAwIDAtOC04aC00OGE4IDggMCAwIDAtOCA4djQwaC00MGE4IDggMCAwIDAtOCA4djQ4YTggOCAwIDAgMCA4IDhoNDB2NDhIMzJhMzIgMzIgMCAwIDAtMzAuNTIgNDEuNTRMNzQuNTYgNDE2aDI5OC44OGw3My4wOC0yMTQuNDZBMzIgMzIgMCAwIDAgNDE2IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NLbmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMjcyLjQ3bDQwLjYzIDE4LjA2YTMyIDMyIDAgMCAwIDI0Ljg4LjQ3bDEyLjc4LTUuMTJhMzIgMzIgMCAwIDAgMTguNzYtMjAuNWw5LjIyLTMwLjY1YTI0IDI0IDAgMCAxIDEyLjU1LTE1LjY1TDE1OS45NCAyMDh2NTAuMzNhNDggNDggMCAwIDEtMjYuNTMgNDIuOTRsLTU3LjIyIDI4LjY1QTgwIDgwIDAgMCAwIDMyIDQwMS40OFY0MTZoMzE5Ljg2VjIyNGMwLTEwNi04NS45Mi0xOTItMTkxLjkyLTE5MkgxMkExMiAxMiAwIDAgMCAwIDQ0YTE2LjkgMTYuOSAwIDAgMCAxLjc5IDcuNThMMTYgODBsLTkgOWEyNCAyNCAwIDAgMC03IDE3djEzNy4yMWEzMiAzMiAwIDAgMCAxOSAyOS4yNnpNNTIgMTI4YTIwIDIwIDAgMSAxLTIwIDIwIDIwIDIwIDAgMCAxIDIwLTIwem0zMTYgMzIwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUGF3biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuMSAyMjRIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTZ2NS40OWMwIDQ0LTQuMTQgODYuNi0yNCAxMjIuNTFoMTc2Yy0xOS44OS0zNS45MS0yNC03OC41MS0yNC0xMjIuNTFWMjg4aDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMjUuMWMyOS4zOS0xOC4zOCA0OS4xLTUwLjc4IDQ5LjEtODhhMTA0IDEwNCAwIDAgMC0yMDggMGMwIDM3LjIyIDE5LjcxIDY5LjYyIDQ5LjEgODh6TTMwNCA0NDhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjg4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NRdWVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMTEyYTU2IDU2IDAgMSAwLTU2LTU2IDU2IDU2IDAgMCAwIDU2IDU2em0xNzYgMzM2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTcyLjg3LTI2My44NGwtMjguNTEtMTUuOTJjLTcuNDQtNS0xNi45MS0yLjQ2LTIyLjI5IDQuNjhhNDcuNTkgNDcuNTkgMCAwIDEtNDcuMjMgMTguMjNDMzgzLjcgMTg2Ljg2IDM2OCAxNjQuOTMgMzY4IDE0MS40YTEzLjQgMTMuNCAwIDAgMC0xMy40LTEzLjRoLTM4Ljc3Yy02IDAtMTEuNjEgNC0xMi44NiA5LjkxYTQ4IDQ4IDAgMCAxLTkzLjk0IDBjLTEuMjUtNS45Mi02LjgyLTkuOTEtMTIuODYtOS45MUgxNTcuNGExMy40IDEzLjQgMCAwIDAtMTMuNCAxMy40YzAgMjUuNjktMTkgNDguNzUtNDQuNjcgNTAuNDlhNDcuNSA0Ny41IDAgMCAxLTQxLjU0LTE5LjE1Yy01LjI4LTcuMDktMTQuNzMtOS40NS0yMi4wOS00LjU0bC0yOC41NyAxNmExNiAxNiAwIDAgMC01LjQ0IDIwLjQ3TDEwNC4yNCA0MTZoMzAzLjUybDEwMi41NS0yMTEuMzdhMTYgMTYgMCAwIDAtNS40NC0yMC40N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NSb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCAzMmgtNTZhMTYgMTYgMCAwIDAtMTYgMTZ2NDhoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2aC04MGExNiAxNiAwIDAgMC0xNiAxNnY0OEg4OC4xVjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDE2QTE2IDE2IDAgMCAwIDAgNDh2MTc2bDY0IDMyYzAgNDguMzMtMS41NCA5NS0xMy4yMSAxNjBoMjgyLjQyQzMyMS41NCAzNTEgMzIwIDMwMy43MiAzMjAgMjU2bDY0LTMyVjQ4YTE2IDE2IDAgMCAwLTE2LTE2ek0yMjQgMzIwaC02NHYtNjRhMzIgMzIgMCAwIDEgNjQgMHptMTQ0IDEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzNTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03NCAyMDhINjRhMTYgMTYgMCAwIDAtMTYgMTZ2MTZhMTYgMTYgMCAwIDAgMTYgMTZoMTUuOTRBNTM1Ljc4IDUzNS43OCAwIDAgMSA2NCAzODRoMTI4YTUzNS43OCA1MzUuNzggMCAwIDEtMTUuOTQtMTI4SDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMTZhMTYgMTYgMCAwIDAtMTYtMTZoLTEwbDMzLjg5LTkwLjM4YTE2IDE2IDAgMCAwLTE1LTIxLjYySDE0NFY2NGgyNGE4IDggMCAwIDAgOC04VjQwYTggOCAwIDAgMC04LThoLTI0VjhhOCA4IDAgMCAwLTgtOGgtMTZhOCA4IDAgMCAwLTggOHYyNEg4OGE4IDggMCAwIDAtOCA4djE2YTggOCAwIDAgMCA4IDhoMjR2MzJINTUuMDlhMTYgMTYgMCAwIDAtMTUgMjEuNjJ6bTE3My4xNiAyNTEuNThMMjI0IDQ0OHYtMTZhMTYgMTYgMCAwIDAtMTYtMTZINDhhMTYgMTYgMCAwIDAtMTYgMTZ2MTZMOC44NSA0NTkuNThBMTYgMTYgMCAwIDAgMCA0NzMuODlWNDk2YTE2IDE2IDAgMCAwIDE2IDE2aDIyNGExNiAxNiAwIDAgMCAxNi0xNnYtMjIuMTFhMTYgMTYgMCAwIDAtOC44NC0xNC4zMXptOTIuNzctMTU3Ljc4bC0zLjI5IDgyLjJoMTI2LjcybC0zLjI5LTgyLjIxIDI0LjYtMjAuNzlBMzIgMzIgMCAwIDAgNDk2IDI1Ni41NFYxOThhNiA2IDAgMCAwLTYtNmgtMjYuMzhhNiA2IDAgMCAwLTYgNnYyNmgtMjQuNzF2LTI2YTYgNiAwIDAgMC02LTZIMzczLjFhNiA2IDAgMCAwLTYgNnYyNmgtMjQuNzF2LTI2YTYgNiAwIDAgMC02LTZIMzEwYTYgNiAwIDAgMC02IDZ2NTguNmEzMiAzMiAwIDAgMCAxMS4zNiAyNC40ek0zODQgMzA0YTE2IDE2IDAgMCAxIDMyIDB2MzJoLTMyem0xMTkuMTYgMTU1LjU4TDQ4MCA0NDh2LTE2YTE2IDE2IDAgMCAwLTE2LTE2SDMzNmExNiAxNiAwIDAgMC0xNiAxNnYxNmwtMjMuMTUgMTEuNThhMTYgMTYgMCAwIDAtOC44NSAxNC4zMVY0OTZhMTYgMTYgMCAwIDAgMTYgMTZoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0yMi4xMWExNiAxNiAwIDAgMC04Ljg0LTE0LjMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGV2cm9uQ2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6TTI3MyAzNjkuOWwxMzUuNS0xMzUuNWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMTctMTdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDI1NiAyODUuMSAxNTQuNCAxODMuNWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTE3IDE3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOUwyMzkgMzY5LjljOS40IDkuNCAyNC42IDkuNCAzNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGV2cm9uQ2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTA0QzExOSA1MDQgOCAzOTMgOCAyNTZTMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OHpNMTQyLjEgMjczbDEzNS41IDEzNS41YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDE3LTE3YzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDIyNi45IDI1NmwxMDEuNi0xMDEuNmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMTctMTdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDE0Mi4xIDIzOWMtOS40IDkuNC05LjQgMjQuNiAwIDM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGV2cm9uQ2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhjMTM3IDAgMjQ4IDExMSAyNDggMjQ4UzM5MyA1MDQgMjU2IDUwNCA4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHptMTEzLjkgMjMxTDIzNC40IDEwMy41Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtMTcgMTdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45TDI4NS4xIDI1NiAxODMuNSAzNTcuNmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMTcgMTdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMzY5LjkgMjczYzkuNC05LjQgOS40LTI0LjYgMC0zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjU2QzggMTE5IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTZ6bTIzMS0xMTMuOUwxMDMuNSAyNzcuNmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMTcgMTdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMjU2IDIyNi45bDEwMS42IDEwMS42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDE3LTE3YzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDI3MyAxNDIuMWMtOS40LTkuNC0yNC42LTkuNC0zNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGV2cm9uRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDcuMDI5IDM4MS40NzZMMTIuNjg2IDE4Ny4xMzJjLTkuMzczLTkuMzczLTkuMzczLTI0LjU2OSAwLTMzLjk0MWwyMi42NjctMjIuNjY3YzkuMzU3LTkuMzU3IDI0LjUyMi05LjM3NSAzMy45MDEtLjA0TDIyNCAyODQuNTA1bDE1NC43NDUtMTU0LjAyMWM5LjM3OS05LjMzNSAyNC41NDQtOS4zMTcgMzMuOTAxLjA0bDIyLjY2NyAyMi42NjdjOS4zNzMgOS4zNzMgOS4zNzMgMjQuNTY5IDAgMzMuOTQxTDI0MC45NzEgMzgxLjQ3NmMtOS4zNzMgOS4zNzItMjQuNTY5IDkuMzcyLTMzLjk0MiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGV2cm9uTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNC41MiAyMzkuMDNMMjI4Ljg3IDQ0LjY5YzkuMzctOS4zNyAyNC41Ny05LjM3IDMzLjk0IDBsMjIuNjcgMjIuNjdjOS4zNiA5LjM2IDkuMzcgMjQuNTIuMDQgMzMuOUwxMzEuNDkgMjU2bDE1NC4wMiAxNTQuNzVjOS4zNCA5LjM4IDkuMzIgMjQuNTQtLjA0IDMzLjlsLTIyLjY3IDIyLjY3Yy05LjM3IDkuMzctMjQuNTcgOS4zNy0zMy45NCAwTDM0LjUyIDI3Mi45N2MtOS4zNy05LjM3LTkuMzctMjQuNTcgMC0zMy45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4NS40NzYgMjcyLjk3MUw5MS4xMzIgNDY3LjMxNGMtOS4zNzMgOS4zNzMtMjQuNTY5IDkuMzczLTMzLjk0MSAwbC0yMi42NjctMjIuNjY3Yy05LjM1Ny05LjM1Ny05LjM3NS0yNC41MjItLjA0LTMzLjkwMUwxODguNTA1IDI1NiAzNC40ODQgMTAxLjI1NWMtOS4zMzUtOS4zNzktOS4zMTctMjQuNTQ0LjA0LTMzLjkwMWwyMi42NjctMjIuNjY3YzkuMzczLTkuMzczIDI0LjU2OS05LjM3MyAzMy45NDEgMEwyODUuNDc1IDIzOS4wM2M5LjM3MyA5LjM3MiA5LjM3MyAyNC41NjguMDAxIDMzLjk0MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MC45NzEgMTMwLjUyNGwxOTQuMzQzIDE5NC4zNDNjOS4zNzMgOS4zNzMgOS4zNzMgMjQuNTY5IDAgMzMuOTQxbC0yMi42NjcgMjIuNjY3Yy05LjM1NyA5LjM1Ny0yNC41MjIgOS4zNzUtMzMuOTAxLjA0TDIyNCAyMjcuNDk1IDY5LjI1NSAzODEuNTE2Yy05LjM3OSA5LjMzNS0yNC41NDQgOS4zMTctMzMuOTAxLS4wNGwtMjIuNjY3LTIyLjY2N2MtOS4zNzMtOS4zNzMtOS4zNzMtMjQuNTY5IDAtMzMuOTQxTDIwNy4wMyAxMzAuNTI1YzkuMzcyLTkuMzczIDI0LjU2OC05LjM3MyAzMy45NDEtLjAwMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hpbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwIDcyYzAtMzkuNzY1IDMyLjIzNS03MiA3Mi03MnM3MiAzMi4yMzUgNzIgNzJjMCAzOS43NjQtMzIuMjM1IDcyLTcyIDcycy03Mi0zMi4yMzYtNzItNzJ6bTI1NC42MjcgMS4zNzNjLTEyLjQ5Ni0xMi40OTctMzIuNzU4LTEyLjQ5Ny00NS4yNTQgMEwyNDIuNzQ1IDE2MEgxNDEuMjU0TDU0LjYyNyA3My4zNzNjLTEyLjQ5Ni0xMi40OTctMzIuNzU4LTEyLjQ5Ny00NS4yNTQgMC0xMi40OTcgMTIuNDk3LTEyLjQ5NyAzMi43NTggMCA0NS4yNTVMMTA0IDIxMy4yNTRWNDgwYzAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmgxNmMxNy42NzMgMCAzMi0xNC4zMjcgMzItMzJWMzY4aDE2djExMmMwIDE3LjY3MyAxNC4zMjcgMzIgMzIgMzJoMTZjMTcuNjczIDAgMzItMTQuMzI3IDMyLTMyVjIxMy4yNTRsOTQuNjI3LTk0LjYyN2MxMi40OTctMTIuNDk3IDEyLjQ5Ny0zMi43NTcgMC00NS4yNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNodXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQuNDYgMjQ2LjY4TDM1MiAxNzkuMlYxMjhoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTQ4VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OHY1MS4ybC0xMTIuNDYgNjcuNDhBMzEuOTk3IDMxLjk5NyAwIDAgMCAxNjAgMjc0LjEyVjUxMmg5NnYtOTZjMC0zNS4zNSAyOC42NS02NCA2NC02NHM2NCAyOC42NSA2NCA2NHY5Nmg5NlYyNzQuMTJjMC0xMS4yNC01LjktMjEuNjYtMTUuNTQtMjcuNDR6TTAgMzk1Ljk2VjQ5NmMwIDguODQgNy4xNiAxNiAxNiAxNmgxMTJWMzIwTDE5LjM5IDM2Ni41NEEzMi4wMjQgMzIuMDI0IDAgMCAwIDAgMzk1Ljk2em02MjAuNjEtMjkuNDJMNTEyIDMyMHYxOTJoMTEyYzguODQgMCAxNi03LjE2IDE2LTE2VjM5NS45NmMwLTEyLjgtNy42My0yNC4zNy0xOS4zOS0yOS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlTm90Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDM5LjA1NnYxNi42NTljMCAxMC44MDQgNy4yODEgMjAuMTU5IDE3LjY4NiAyMy4wNjZDMzgzLjIwNCAxMDAuNDM0IDQ0MCAxNzEuNTE4IDQ0MCAyNTZjMCAxMDEuNjg5LTgyLjI5NSAxODQtMTg0IDE4NC0xMDEuNjg5IDAtMTg0LTgyLjI5NS0xODQtMTg0IDAtODQuNDcgNTYuNzg2LTE1NS41NjQgMTM0LjMxMi0xNzcuMjE5QzIxNi43MTkgNzUuODc0IDIyNCA2Ni41MTcgMjI0IDU1LjcxMlYzOS4wNjRjMC0xNS43MDktMTQuODM0LTI3LjE1My0zMC4wNDYtMjMuMjM0Qzg2LjYwMyA0My40ODIgNy4zOTQgMTQxLjIwNiA4LjAwMyAyNTcuMzMyYy43MiAxMzcuMDUyIDExMS40NzcgMjQ2Ljk1NiAyNDguNTMxIDI0Ni42NjdDMzkzLjI1NSA1MDMuNzExIDUwNCAzOTIuNzg4IDUwNCAyNTZjMC0xMTUuNjMzLTc5LjE0LTIxMi43NzktMTg2LjIxMS0yNDAuMjM2QzMwMi42NzggMTEuODg5IDI4OCAyMy40NTYgMjg4IDM5LjA1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE2IDE5Mkg0ODBWMjRjMC0xMy4yNi0xMC43NC0yNC0yNC0yNEgzMTJjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2NzJoLTY0VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2ODBoLTY0VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDgwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY4MEgyNGMtMTMuMjYgMC0yNCAxMC43NC0yNCAyNHYzNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYyMTZjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpNMTI4IDQwNGMwIDYuNjMtNS4zNyAxMi0xMiAxMkg3NmMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEySDc2Yy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJINzZjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMTI4IDE5MmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMTYwIDk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJWNzZjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTE2MCAyODhjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaW5pY01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDExNUw2OS40NyAzMDcuNzFjLTEuNjIgMS40Ni0zLjY5IDIuMTQtNS40NyAzLjM1VjQ5NmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWMzExLjFjLTEuNy0xLjE2LTMuNzItMS44Mi01LjI2LTMuMnptOTYgMjYxYTggOCAwIDAgMS04IDhoLTU2djU2YTggOCAwIDAgMS04IDhoLTQ4YTggOCAwIDAgMS04LTh2LTU2aC01NmE4IDggMCAwIDEtOC04di00OGE4IDggMCAwIDEgOC04aDU2di01NmE4IDggMCAwIDEgOC04aDQ4YTggOCAwIDAgMSA4IDh2NTZoNTZhOCA4IDAgMCAxIDggOHptMTg2LjY5LTEzOS43MmwtMjU1Ljk0LTIyNmEzOS44NSAzOS44NSAwIDAgMC01My40NSAwbC0yNTYgMjI2YTE2IDE2IDAgMCAwLTEuMjEgMjIuNkwyNS41IDI4Mi43YTE2IDE2IDAgMCAwIDIyLjYgMS4yMUwyNzcuNDIgODEuNjNhMTYgMTYgMCAwIDEgMjEuMTcgMEw1MjcuOTEgMjgzLjlhMTYgMTYgMCAwIDAgMjIuNi0xLjIxbDIxLjQtMjMuODJhMTYgMTYgMCAwIDAtMS4yMi0yMi41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xpcGJvYXJkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDY0aC04MGMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDQwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptMTIxLjIgMjMxLjhsLTE0MyAxNDEuOGMtNC43IDQuNy0xMi4zIDQuNi0xNy0uMWwtODIuNi04My4zYy00LjctNC43LTQuNi0xMi4zLjEtMTdMOTkuMSAyODVjNC43LTQuNyAxMi4zLTQuNiAxNyAuMWw0NiA0Ni40IDEwNi0xMDUuMmM0LjctNC43IDEyLjMtNC42IDE3IC4xbDI4LjIgMjguNGM0LjcgNC44IDQuNiAxMi4zLS4xIDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmRMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiA2NGgtODBjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTk2IDQyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6bTAtOTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjQgMjQgMTAuNyAyNCAyNC0xMC43IDI0LTI0IDI0em0wLTk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0IDI0IDEwLjcgMjQgMjQtMTAuNyAyNC0yNCAyNHptOTYtMTkyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptMTI4IDM2OGMwIDQuNC0zLjYgOC04IDhIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTk2YzAgNC40LTMuNiA4LTggOEgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtOTZjMCA0LjQtMy42IDgtOCA4SDE2OGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xpcGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMTJ2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTEyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoODBjMC0zNS4yOSAyOC43MS02NCA2NC02NHM2NCAyOC43MSA2NCA2NGg4MGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4ek0xOTIgNDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNG05NiAxMTR2LTIwYTYgNiAwIDAgMC02LTZIMTAyYTYgNiAwIDAgMC02IDZ2MjBhNiA2IDAgMCAwIDYgNmgxODBhNiA2IDAgMCAwIDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDhDMTE5LDgsOCwxMTksOCwyNTZTMTE5LDUwNCwyNTYsNTA0LDUwNCwzOTMsNTA0LDI1NiwzOTMsOCwyNTYsOFptOTIuNDksMzEzaDBsLTIwLDI1YTE2LDE2LDAsMCwxLTIyLjQ5LDIuNWgwbC02Ny00OS43MmE0MCw0MCwwLDAsMS0xNS0zMS4yM1YxMTJhMTYsMTYsMCwwLDEsMTYtMTZoMzJhMTYsMTYsMCwwLDEsMTYsMTZWMjU2bDU4LDQyLjVBMTYsMTYsMCwwLDEsMzQ4LjQ5LDMyMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OEgxNzZjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWNDhjMC0yNi41MSAyMS40OS00OCA0OC00OGgyODhNMTc2IDQxNmMtNDQuMTEyIDAtODAtMzUuODg4LTgwLTgwVjEyOEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyODhjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDhIMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG9zZWRDYXB0aW9uaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYyODhjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMjE4LjEgMjg3LjdjMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjUgMjcuN2MxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjYgNTYuOC0xNzIuOCAzMi4xLTE3Mi44LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN2wtMTcuNSAzMC41Yy0xLjkgMy4xLTYuMiA0LTkuMSAxLjctNDAuOC0zMi05NC42LTE0LjktOTQuNiAzMS4yLjEgNDggNTEuMSA3MC41IDkyLjMgMzIuNnptMTkwLjQgMGMyLjgtMi41IDcuMS0yLjEgOS4yLjlsMTkuNSAyNy43YzEuNyAyLjQgMS41IDUuNi0uNSA3LjctNTMuNSA1Ni45LTE3Mi43IDMyLjEtMTcyLjctNjcuOSAwLTk3LjMgMTIxLjctMTE5LjUgMTcyLjUtNzAuMSAyLjEgMiAyLjUgMy4yIDEgNS43TDQyMCAyMjIuMmMtMS45IDMuMS02LjIgNC05LjEgMS43LTQwLjgtMzItOTQuNi0xNC45LTk0LjYgMzEuMiAwIDQ4IDUxIDcwLjUgOTIuMiAzMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZERvd25sb2FkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUzNy42IDIyNi42YzQuMS0xMC43IDYuNC0yMi40IDYuNC0zNC42IDAtNTMtNDMtOTYtOTYtOTYtMTkuNyAwLTM4LjEgNi01My4zIDE2LjJDMzY3IDY0LjIgMzE1LjMgMzIgMjU2IDMyYy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MCAwIDIuNy4xIDUuNC4yIDguMUM0MC4yIDIxOS44IDAgMjczLjIgMCAzMzZjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRoMzY4YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4IDAtNjEuOS00NC0xMTMuNi0xMDIuNC0xMjUuNHptLTEzMi45IDg4LjdMMjk5LjMgNDIwLjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwTDE3MS4zIDMxNS4zYy0xMC4xLTEwLjEtMi45LTI3LjMgMTEuMy0yNy4zSDI0OFYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYxMTJoNjUuNGMxNC4yIDAgMjEuNCAxNy4yIDExLjMgMjcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRNZWF0YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAzNTJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDggNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4em00MTYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OCA0OC0yMS41IDQ4LTQ4LTIxLjUtNDgtNDgtNDh6bS0xMTkgMTEuMWM0LjYtMTQuNSAxLjYtMzAuOC05LjgtNDIuMy0xMS41LTExLjUtMjcuOC0xNC40LTQyLjMtOS45LTctMTMuNS0yMC43LTIzLTM2LjktMjNzLTI5LjkgOS41LTM2LjkgMjNjLTE0LjUtNC42LTMwLjgtMS42LTQyLjMgOS45LTExLjUgMTEuNS0xNC40IDI3LjgtOS45IDQyLjMtMTMuNSA3LTIzIDIwLjctMjMgMzYuOXM5LjUgMjkuOSAyMyAzNi45Yy00LjYgMTQuNS0xLjYgMzAuOCA5LjkgNDIuMyA4LjIgOC4yIDE4LjkgMTIuMyAyOS43IDEyLjMgNC4zIDAgOC41LTEuMSAxMi42LTIuNSA3IDEzLjUgMjAuNyAyMyAzNi45IDIzczI5LjktOS41IDM2LjktMjNjNC4xIDEuMyA4LjMgMi41IDEyLjYgMi41IDEwLjggMCAyMS41LTQuMSAyOS43LTEyLjMgMTEuNS0xMS41IDE0LjQtMjcuOCA5LjgtNDIuMyAxMy41LTcgMjMtMjAuNyAyMy0zNi45cy05LjUtMjkuOS0yMy0zNi45ek01MTIgMjI0YzAtNTMtNDMtOTYtOTYtOTYtLjYgMC0xLjEuMi0xLjYuMiAxLjEtNS4yIDEuNi0xMC42IDEuNi0xNi4yIDAtNDQuMi0zNS44LTgwLTgwLTgwLTI0LjYgMC00Ni4zIDExLjMtNjEgMjguOEMyNTYuNCAyNC44IDIxOS4zIDAgMTc2IDAgMTE0LjEgMCA2NCA1MC4xIDY0IDExMmMwIDcuMy44IDE0LjMgMi4xIDIxLjJDMjcuOCAxNDUuOCAwIDE4MS41IDAgMjI0YzAgNTMgNDMgOTYgOTYgOTZoNDMuNGMzLjYtOCA4LjQtMTUuNCAxNC44LTIxLjggMTMuNS0xMy41IDMxLjUtMjEuMSA1MC44LTIxLjMgMTMuNS0xMy4yIDMxLjctMjAuOSA1MS0yMC45czM3LjUgNy43IDUxIDIwLjljMTkuMy4yIDM3LjMgNy44IDUwLjggMjEuMyA2LjQgNi40IDExLjMgMTMuOCAxNC44IDIxLjhINDE2YzUzIDAgOTYtNDMgOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkTW9vblJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUwLjUgMjI1LjVjLTYuOS0zNy4yLTM5LjMtNjUuNS03OC41LTY1LjUtMTIuMyAwLTIzLjkgMy0zNC4zIDgtMTcuNC0yNC4xLTQ1LjYtNDAtNzcuNy00MC01MyAwLTk2IDQzLTk2IDk2IDAgLjUuMiAxLjEuMiAxLjZDMjcuNiAyMzIuOSAwIDI2NS4yIDAgMzA0YzAgNDQuMiAzNS44IDgwIDgwIDgwaDI1NmM0NC4yIDAgODAtMzUuOCA4MC04MCAwLTM5LjItMjguMi03MS43LTY1LjUtNzguNXptMjE3LjQtMS43Yy03MC40IDEzLjMtMTM1LTQwLjMtMTM1LTExMC44IDAtNDAuNiAyMS45LTc4IDU3LjUtOTguMSA1LjUtMy4xIDQuMS0xMS40LTIuMS0xMi41QzQ3OS42LjggNDcwLjcgMCA0NjEuOCAwYy03Ny45IDAtMTQxLjEgNjEuMi0xNDQuNCAxMzcuOSAyNi43IDExLjkgNDguMiAzMy44IDU4LjkgNjEuNyAzNy4xIDE0LjMgNjQgNDcuNCA3MC4yIDg2LjggNS4xLjUgMTAgMS41IDE1LjIgMS41IDQ0LjcgMCA4NS42LTIwLjIgMTEyLjYtNTMuMyA0LjItNC44LS4yLTEyLTYuNC0xMC44ek0zNjQuNSA0MTguMWMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDIuOCAzNTIuN2M1LjctOS42IDkuMi0yMC43IDkuMi0zMi43IDAtMzUuMy0yOC43LTY0LTY0LTY0LTE3LjIgMC0zMi44IDYuOS00NC4zIDE3LjktMTYuMy0yOS42LTQ3LjUtNDkuOS04My43LTQ5LjktNTMgMC05NiA0My05NiA5NiAwIDIgLjUgMy44LjYgNS43QzI3LjEgMzM4LjggMCAzNzQuMSAwIDQxNmMwIDUzIDQzIDk2IDk2IDk2aDI0MGM0NC4yIDAgODAtMzUuOCA4MC04MCAwLTQxLjktMzIuMy03NS44LTczLjItNzkuM3ptMjIyLjUtNTQuM2MtOTMuMSAxNy43LTE3OC41LTUzLjctMTc4LjUtMTQ3LjcgMC01NC4yIDI5LTEwNCA3Ni4xLTEzMC44IDcuMy00LjEgNS40LTE1LjEtMi44LTE2LjdDNDQ4LjQgMS4xIDQzNi43IDAgNDI1IDAgMzE5LjEgMCAyMzMuMSA4NS45IDIzMy4xIDE5MmMwIDguNS43IDE2LjggMS44IDI1IDUuOSA0LjMgMTEuNiA4LjkgMTYuNyAxNC4yIDExLjQtNC43IDIzLjctNy4yIDM2LjQtNy4yIDUyLjkgMCA5NiA0My4xIDk2IDk2IDAgMy42LS4yIDcuMi0uNiAxMC43IDIzLjYgMTAuOCA0Mi40IDI5LjUgNTMuNSA1Mi42IDU0LjQtMy40IDEwMy43LTI5LjMgMTM3LjEtNzAuNCA1LjMtNi41LS41LTE2LjEtOC43LTE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkUmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMTI4Yy0uNiAwLTEuMS4yLTEuNi4yIDEuMS01LjIgMS42LTEwLjYgMS42LTE2LjIgMC00NC4yLTM1LjgtODAtODAtODAtMjQuNiAwLTQ2LjMgMTEuMy02MSAyOC44QzI1Ni40IDI0LjggMjE5LjMgMCAxNzYgMCAxMTQuMSAwIDY0IDUwLjEgNjQgMTEyYzAgNy4zLjggMTQuMyAyLjEgMjEuMkMyNy44IDE0NS44IDAgMTgxLjUgMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmgzMjBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZ6TTg4IDM3NC4yYy0xMi44IDQ0LjQtNDAgNTYuNC00MCA4Ny43IDAgMjcuNyAyMS41IDUwLjEgNDggNTAuMXM0OC0yMi40IDQ4LTUwLjFjMC0zMS40LTI3LjItNDMuMS00MC04Ny43LTIuMi04LjEtMTMuNS04LjUtMTYgMHptMTYwIDBjLTEyLjggNDQuNC00MCA1Ni40LTQwIDg3LjcgMCAyNy43IDIxLjUgNTAuMSA0OCA1MC4xczQ4LTIyLjQgNDgtNTAuMWMwLTMxLjQtMjcuMi00My4xLTQwLTg3LjctMi4yLTguMS0xMy41LTguNS0xNiAwem0xNjAgMGMtMTIuOCA0NC40LTQwIDU2LjQtNDAgODcuNyAwIDI3LjcgMjEuNSA1MC4xIDQ4IDUwLjFzNDgtMjIuNCA0OC01MC4xYzAtMzEuNC0yNy4yLTQzLjEtNDAtODcuNy0yLjItOC4xLTEzLjUtOC41LTE2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU2hvd2Vyc0hlYXZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4My45IDM3MC4xYy03LjYtNC40LTE3LjQtMS44LTIxLjggNmwtNjQgMTEyYy00LjQgNy43LTEuNyAxNy41IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWw2NC0xMTJjNC40LTcuNiAxLjctMTcuNC02LTIxLjh6bTk2IDBjLTcuNi00LjQtMTcuNC0xLjgtMjEuOCA2bC02NCAxMTJjLTQuNCA3LjctMS43IDE3LjUgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDY0LTExMmM0LjQtNy42IDEuNy0xNy40LTYtMjEuOHptLTE5MiAwYy03LjYtNC40LTE3LjQtMS44LTIxLjggNmwtNjQgMTEyYy00LjQgNy43LTEuNyAxNy41IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWw2NC0xMTJjNC40LTcuNiAxLjctMTcuNC02LTIxLjh6bTM4NCAwYy03LjYtNC40LTE3LjQtMS44LTIxLjggNmwtNjQgMTEyYy00LjQgNy43LTEuNyAxNy41IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWw2NC0xMTJjNC40LTcuNiAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC40LTE3LjQtMS44LTIxLjggNmwtNjQgMTEyYy00LjQgNy43LTEuNyAxNy41IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWw2NC0xMTJjNC40LTcuNiAxLjctMTcuNC02LTIxLjh6TTQxNiAxMjhjLS42IDAtMS4xLjItMS42LjIgMS4xLTUuMiAxLjYtMTAuNiAxLjYtMTYuMiAwLTQ0LjItMzUuOC04MC04MC04MC0yNC42IDAtNDYuMyAxMS4zLTYxIDI4LjhDMjU2LjQgMjQuOCAyMTkuMyAwIDE3NiAwIDExNC4yIDAgNjQgNTAuMSA2NCAxMTJjMCA3LjMuOCAxNC4zIDIuMSAyMS4yQzI3LjggMTQ1LjggMCAxODEuNSAwIDIyNGMwIDUzIDQzIDk2IDk2IDk2aDMyMGM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRTdW5SYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC41IDIyNS41Yy02LjktMzcuMi0zOS4zLTY1LjUtNzguNS02NS41LTEyLjMgMC0yMy45IDMtMzQuMyA4LTE3LjQtMjQuMS00NS42LTQwLTc3LjctNDAtNTMgMC05NiA0My05NiA5NiAwIC41LjIgMS4xLjIgMS42QzE4Ny42IDIzMyAxNjAgMjY1LjIgMTYwIDMwNGMwIDQ0LjIgMzUuOCA4MCA4MCA4MGgyNTZjNDQuMiAwIDgwLTM1LjggODAtODAgMC0zOS4yLTI4LjItNzEuNy02NS41LTc4LjV6bS0zODYuNCAzNC40Yy0zNy40LTM3LjQtMzcuNC05OC4zIDAtMTM1LjggMzQuNi0zNC42IDg5LjEtMzYuOCAxMjYuNy03LjQgMjAtMTIuOSA0My42LTIwLjcgNjkuMi0yMC43LjcgMCAxLjMuMiAyIC4ybDguOS0yNi43YzMuNC0xMC4yLTYuMy0xOS44LTE2LjUtMTYuNGwtNzUuMyAyNS4xLTM1LjUtNzFjLTQuOC05LjYtMTguNS05LjYtMjMuMyAwbC0zNS41IDcxLTc1LjMtMjUuMWMtMTAuMi0zLjQtMTkuOCA2LjMtMTYuNCAxNi41bDI1LjEgNzUuMy03MSAzNS41Yy05LjYgNC44LTkuNiAxOC41IDAgMjMuM2w3MSAzNS41LTI1LjEgNzUuM2MtMy40IDEwLjIgNi4zIDE5LjggMTYuNSAxNi41bDU5LjItMTkuN2MtLjItMi40LS43LTQuNy0uNy03LjIgMC0xMi41IDIuMy0yNC41IDYuMi0zNS45LTMuNi0yLjctNy4xLTUuMi0xMC4yLTguM3ptNjkuOC01OGM0LjMtMjQuNSAxNS44LTQ2LjQgMzEuOS02NC05LjgtNi4yLTIxLjQtOS45LTMzLjgtOS45LTM1LjMgMC02NCAyOC43LTY0IDY0IDAgMTguNyA4LjIgMzUuNCAyMS4xIDQ3LjEgMTEuMy0xNS45IDI2LjYtMjguOSA0NC44LTM3LjJ6bTMzMC42IDIxNi4yYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRTdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjIgMzI1LjdjLjItMS45LjgtMy43LjgtNS42IDAtMzUuMy0yOC43LTY0LTY0LTY0LTEyLjYgMC0yNC4yIDMuOC0zNC4xIDEwLTE3LjYtMzguOC01Ni41LTY2LTEwMS45LTY2LTYxLjggMC0xMTIgNTAuMS0xMTIgMTEyIDAgMyAuNyA1LjguOSA4LjctNDkuNiAzLjctODguOSA0NC43LTg4LjkgOTUuMyAwIDUzIDQzIDk2IDk2IDk2aDI3MmM1MyAwIDk2LTQzIDk2LTk2IDAtNDIuMS0yNy4yLTc3LjQtNjQuOC05MC40em0tNDMwLjQtMjIuNmMtNDMuNy00My43LTQzLjctMTE0LjcgMC0xNTguMyA0My43LTQzLjcgMTE0LjctNDMuNyAxNTguNCAwIDkuNyA5LjcgMTYuOSAyMC45IDIyLjMgMzIuNyA5LjgtMy43IDIwLjEtNiAzMC43LTcuNUwzODYgODEuMWM0LTExLjktNy4zLTIzLjEtMTkuMi0xOS4yTDI3OSA5MS4yIDIzNy41IDguNEMyMzItMi44IDIxNi0yLjggMjEwLjQgOC40TDE2OSA5MS4yIDgxLjEgNjEuOUM2OS4zIDU4IDU4IDY5LjMgNjEuOSA4MS4xbDI5LjMgODcuOC04Mi44IDQxLjVjLTExLjIgNS42LTExLjIgMjEuNSAwIDI3LjFsODIuOCA0MS40LTI5LjMgODcuOGMtNCAxMS45IDcuMyAyMy4xIDE5LjIgMTkuMmw3Ni4xLTI1LjNjNi4xLTEyLjQgMTQtMjMuNyAyMy42LTMzLjUtMTMuMS01LjQtMjUuNC0xMy40LTM2LTI0em0tNC44LTc5LjJjMCA0MC44IDI5LjMgNzQuOCA2Ny45IDgyLjMgOC00LjcgMTYuMy04LjggMjUuMi0xMS43IDUuNC00NC4zIDMxLTgyLjUgNjcuNC0xMDVDMjg3LjMgMTYwLjQgMjU4IDE0MCAyMjQgMTQwYy00Ni4zIDAtODQgMzcuNi04NCA4My45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFVwbG9hZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzcuNiAyMjYuNmM0LjEtMTAuNyA2LjQtMjIuNCA2LjQtMzQuNiAwLTUzLTQzLTk2LTk2LTk2LTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCAyLjcuMSA1LjQuMiA4LjFDNDAuMiAyMTkuOCAwIDI3My4yIDAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0aDM2OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjR6TTM5My40IDI4OEgzMjh2MTEyYzAgOC44LTcuMiAxNi0xNiAxNmgtNDhjLTguOCAwLTE2LTcuMi0xNi0xNlYyODhoLTY1LjRjLTE0LjMgMC0yMS40LTE3LjItMTEuMy0yNy4zbDEwNS40LTEwNS40YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDEwNS40IDEwNS40YzEwLjEgMTAuMSAyLjkgMjcuMy0xMS4zIDI3LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUzNy42IDIyNi42YzQuMS0xMC43IDYuNC0yMi40IDYuNC0zNC42IDAtNTMtNDMtOTYtOTYtOTYtMTkuNyAwLTM4LjEgNi01My4zIDE2LjJDMzY3IDY0LjIgMzE1LjMgMzIgMjU2IDMyYy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MCAwIDIuNy4xIDUuNC4yIDguMUM0MC4yIDIxOS44IDAgMjczLjIgMCAzMzZjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRoMzY4YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4IDAtNjEuOS00NC0xMTMuNi0xMDIuNC0xMjUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29ja3RhaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDQ2NGgtNTZWMzM4Ljc4bDE2OC43NC0xNjguNzNjMTUuNTItMTUuNTIgNC41My00Mi4wNS0xNy40Mi00Mi4wNUgyNC42OGMtMjEuOTUgMC0zMi45NCAyNi41My0xNy40MiA0Mi4wNUwxNzYgMzM4Ljc4VjQ2NGgtNTZjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjQwYzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDB6TTQzMiAwYy02Mi42MSAwLTExNS4zNSA0MC4yLTEzNS4xOCA5Nmg1Mi41NGMxNi42NS0yOC41NSA0Ny4yNy00OCA4Mi42NC00OCA1Mi45MyAwIDk2IDQzLjA2IDk2IDk2cy00My4wNyA5Ni05NiA5NmMtMTQuMDQgMC0yNy4yOS0zLjItMzkuMzItOC42NGwtMzUuMjYgMzUuMjZDMzc5LjIzIDI3OS45MiA0MDQuNTkgMjg4IDQzMiAyODhjNzkuNTMgMCAxNDQtNjQuNDcgMTQ0LTE0NFM1MTEuNTMgMCA0MzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZUJyYW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTQ0YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgMzYuNCAyNC4zIDY3LjEgNTcuNSA3Ni44LS42IDE2LjEtNC4yIDI4LjUtMTEgMzYuOS0xNS40IDE5LjItNDkuMyAyMi40LTg1LjIgMjUuNy0yOC4yIDIuNi01Ny40IDUuNC04MS4zIDE2Ljl2LTE0NGMzMi41LTEwLjIgNTYtNDAuNSA1Ni03Ni4zIDAtNDQuMi0zNS44LTgwLTgwLTgwUzAgMzUuOCAwIDgwYzAgMzUuOCAyMy41IDY2LjEgNTYgNzYuM3YxOTkuM0MyMy41IDM2NS45IDAgMzk2LjIgMCA0MzJjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTM0LTIxLjItNjMuMS01MS4yLTc0LjYgMy4xLTUuMiA3LjgtOS44IDE0LjktMTMuNCAxNi4yLTguMiA0MC40LTEwLjQgNjYuMS0xMi44IDQyLjItMy45IDkwLTguNCAxMTguMi00My40IDE0LTE3LjQgMjEuMS0zOS44IDIxLjYtNjcuOSAzMS42LTEwLjggNTQuNC00MC43IDU0LjQtNzUuOXpNODAgNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTYtMTYtNy4yLTE2LTE2IDcuMi0xNiAxNi0xNnptMCAzODRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMjI0LTMyMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNi0xNi03LjItMTYtMTYgNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OC45IDUxMS41bC02MS0xNy43Yy02LjQtMS44LTEwLTguNS04LjItMTQuOUwzNDYuMiA4LjdjMS44LTYuNCA4LjUtMTAgMTQuOS04LjJsNjEgMTcuN2M2LjQgMS44IDEwIDguNSA4LjIgMTQuOUwyOTMuOCA1MDMuM2MtMS45IDYuNC04LjUgMTAuMS0xNC45IDguMnptLTExNC0xMTIuMmw0My41LTQ2LjRjNC42LTQuOSA0LjMtMTIuNy0uOC0xNy4yTDExNyAyNTZsOTAuNi03OS43YzUuMS00LjUgNS41LTEyLjMuOC0xNy4ybC00My41LTQ2LjRjLTQuNS00LjgtMTIuMS01LjEtMTctLjVMMy44IDI0Ny4yYy01LjEgNC43LTUuMSAxMi44IDAgMTcuNWwxNDQuMSAxMzUuMWM0LjkgNC42IDEyLjUgNC40IDE3LS41em0zMjcuMi42bDE0NC4xLTEzNS4xYzUuMS00LjcgNS4xLTEyLjggMC0xNy41TDQ5Mi4xIDExMi4xYy00LjgtNC41LTEyLjQtNC4zLTE3IC41TDQzMS42IDE1OWMtNC42IDQuOS00LjMgMTIuNy44IDE3LjJMNTIzIDI1NmwtOTAuNiA3OS43Yy01LjEgNC41LTUuNSAxMi4zLS44IDE3LjJsNDMuNSA0Ni40YzQuNSA0LjkgMTIuMSA1LjEgMTcgLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZmZlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzg0aDE5MmM1MyAwIDk2LTQzIDk2LTk2aDMyYzcwLjYgMCAxMjgtNTcuNCAxMjgtMTI4UzU4Mi42IDMyIDUxMiAzMkgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djIzMmMwIDUzIDQzIDk2IDk2IDk2ek01MTIgOTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRoLTMyVjk2aDMyem00Ny43IDM4NEg0OC4zYy00Ny42IDAtNjEtNjQtMzYtNjRoNTgzLjNjMjUgMCAxMS44IDY0LTM1LjkgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODcuNCAzMTUuN2wtNDIuNi0yNC42YzQuMy0yMy4yIDQuMy00NyAwLTcwLjJsNDIuNi0yNC42YzQuOS0yLjggNy4xLTguNiA1LjUtMTQtMTEuMS0zNS42LTMwLTY3LjgtNTQuNy05NC42LTMuOC00LjEtMTAtNS4xLTE0LjgtMi4zTDM4MC44IDExMGMtMTcuOS0xNS40LTM4LjUtMjcuMy02MC44LTM1LjFWMjUuOGMwLTUuNi0zLjktMTAuNS05LjQtMTEuNy0zNi43LTguMi03NC4zLTcuOC0xMDkuMiAwLTUuNSAxLjItOS40IDYuMS05LjQgMTEuN1Y3NWMtMjIuMiA3LjktNDIuOCAxOS44LTYwLjggMzUuMUw4OC43IDg1LjVjLTQuOS0yLjgtMTEtMS45LTE0LjggMi4zLTI0LjcgMjYuNy00My42IDU4LjktNTQuNyA5NC42LTEuNyA1LjQuNiAxMS4yIDUuNSAxNEw2Ny4zIDIyMWMtNC4zIDIzLjItNC4zIDQ3IDAgNzAuMmwtNDIuNiAyNC42Yy00LjkgMi44LTcuMSA4LjYtNS41IDE0IDExLjEgMzUuNiAzMCA2Ny44IDU0LjcgOTQuNiAzLjggNC4xIDEwIDUuMSAxNC44IDIuM2w0Mi42LTI0LjZjMTcuOSAxNS40IDM4LjUgMjcuMyA2MC44IDM1LjF2NDkuMmMwIDUuNiAzLjkgMTAuNSA5LjQgMTEuNyAzNi43IDguMiA3NC4zIDcuOCAxMDkuMiAwIDUuNS0xLjIgOS40LTYuMSA5LjQtMTEuN3YtNDkuMmMyMi4yLTcuOSA0Mi44LTE5LjggNjAuOC0zNS4xbDQyLjYgMjQuNmM0LjkgMi44IDExIDEuOSAxNC44LTIuMyAyNC43LTI2LjcgNDMuNi01OC45IDU0LjctOTQuNiAxLjUtNS41LS43LTExLjMtNS42LTE0LjF6TTI1NiAzMzZjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMi4xIDE5MWwtOC4yIDE0LjNjLTMgNS4zLTkuNCA3LjUtMTUuMSA1LjQtMTEuOC00LjQtMjIuNi0xMC43LTMyLjEtMTguNi00LjYtMy44LTUuOC0xMC41LTIuOC0xNS43bDguMi0xNC4zYy02LjktOC0xMi4zLTE3LjMtMTUuOS0yNy40aC0xNi41Yy02IDAtMTEuMi00LjMtMTIuMi0xMC4zLTItMTItMi4xLTI0LjYgMC0zNy4xIDEtNiA2LjItMTAuNCAxMi4yLTEwLjRoMTYuNWMzLjYtMTAuMSA5LTE5LjQgMTUuOS0yNy40bC04LjItMTQuM2MtMy01LjItMS45LTExLjkgMi44LTE1LjcgOS41LTcuOSAyMC40LTE0LjIgMzIuMS0xOC42IDUuNy0yLjEgMTIuMS4xIDE1LjEgNS40bDguMiAxNC4zYzEwLjUtMS45IDIxLjItMS45IDMxLjcgMEw1NTIgNi4zYzMtNS4zIDkuNC03LjUgMTUuMS01LjQgMTEuOCA0LjQgMjIuNiAxMC43IDMyLjEgMTguNiA0LjYgMy44IDUuOCAxMC41IDIuOCAxNS43bC04LjIgMTQuM2M2LjkgOCAxMi4zIDE3LjMgMTUuOSAyNy40aDE2LjVjNiAwIDExLjIgNC4zIDEyLjIgMTAuMyAyIDEyIDIuMSAyNC42IDAgMzcuMS0xIDYtNi4yIDEwLjQtMTIuMiAxMC40aC0xNi41Yy0zLjYgMTAuMS05IDE5LjQtMTUuOSAyNy40bDguMiAxNC4zYzMgNS4yIDEuOSAxMS45LTIuOCAxNS43LTkuNSA3LjktMjAuNCAxNC4yLTMyLjEgMTguNi01LjcgMi4xLTEyLjEtLjEtMTUuMS01LjRsLTguMi0xNC4zYy0xMC40IDEuOS0yMS4yIDEuOS0zMS43IDB6bS0xMC41LTU4LjhjMzguNSAyOS42IDgyLjQtMTQuMyA1Mi44LTUyLjgtMzguNS0yOS43LTgyLjQgMTQuMy01Mi44IDUyLjh6TTM4Ni4zIDI4Ni4xbDMzLjcgMTYuOGMxMC4xIDUuOCAxNC41IDE4LjEgMTAuNSAyOS4xLTguOSAyNC4yLTI2LjQgNDYuNC00Mi42IDY1LjgtNy40IDguOS0yMC4yIDExLjEtMzAuMyA1LjNsLTI5LjEtMTYuOGMtMTYgMTMuNy0zNC42IDI0LjYtNTQuOSAzMS43djMzLjZjMCAxMS42LTguMyAyMS42LTE5LjcgMjMuNi0yNC42IDQuMi01MC40IDQuNC03NS45IDAtMTEuNS0yLTIwLTExLjktMjAtMjMuNlY0MThjLTIwLjMtNy4yLTM4LjktMTgtNTQuOS0zMS43TDc0IDQwM2MtMTAgNS44LTIyLjkgMy42LTMwLjMtNS4zLTE2LjItMTkuNC0zMy4zLTQxLjYtNDIuMi02NS43LTQtMTAuOS40LTIzLjIgMTAuNS0yOS4xbDMzLjMtMTYuOGMtMy45LTIwLjktMy45LTQyLjQgMC02My40TDEyIDIwNS44Yy0xMC4xLTUuOC0xNC42LTE4LjEtMTAuNS0yOSA4LjktMjQuMiAyNi00Ni40IDQyLjItNjUuOCA3LjQtOC45IDIwLjItMTEuMSAzMC4zLTUuM2wyOS4xIDE2LjhjMTYtMTMuNyAzNC42LTI0LjYgNTQuOS0zMS43VjU3LjFjMC0xMS41IDguMi0yMS41IDE5LjYtMjMuNSAyNC42LTQuMiA1MC41LTQuNCA3Ni0uMSAxMS41IDIgMjAgMTEuOSAyMCAyMy42djMzLjZjMjAuMyA3LjIgMzguOSAxOCA1NC45IDMxLjdsMjkuMS0xNi44YzEwLTUuOCAyMi45LTMuNiAzMC4zIDUuMyAxNi4yIDE5LjQgMzMuMiA0MS42IDQyLjEgNjUuOCA0IDEwLjkuMSAyMy4yLTEwIDI5LjFsLTMzLjcgMTYuOGMzLjkgMjEgMy45IDQyLjUgMCA2My41em0tMTE3LjYgMjEuMWM1OS4yLTc3LTI4LjctMTY0LjktMTA1LjctMTA1LjctNTkuMiA3NyAyOC43IDE2NC45IDEwNS43IDEwNS43em0yNDMuNCAxODIuN2wtOC4yIDE0LjNjLTMgNS4zLTkuNCA3LjUtMTUuMSA1LjQtMTEuOC00LjQtMjIuNi0xMC43LTMyLjEtMTguNi00LjYtMy44LTUuOC0xMC41LTIuOC0xNS43bDguMi0xNC4zYy02LjktOC0xMi4zLTE3LjMtMTUuOS0yNy40aC0xNi41Yy02IDAtMTEuMi00LjMtMTIuMi0xMC4zLTItMTItMi4xLTI0LjYgMC0zNy4xIDEtNiA2LjItMTAuNCAxMi4yLTEwLjRoMTYuNWMzLjYtMTAuMSA5LTE5LjQgMTUuOS0yNy40bC04LjItMTQuM2MtMy01LjItMS45LTExLjkgMi44LTE1LjcgOS41LTcuOSAyMC40LTE0LjIgMzIuMS0xOC42IDUuNy0yLjEgMTIuMS4xIDE1LjEgNS40bDguMiAxNC4zYzEwLjUtMS45IDIxLjItMS45IDMxLjcgMGw4LjItMTQuM2MzLTUuMyA5LjQtNy41IDE1LjEtNS40IDExLjggNC40IDIyLjYgMTAuNyAzMi4xIDE4LjYgNC42IDMuOCA1LjggMTAuNSAyLjggMTUuN2wtOC4yIDE0LjNjNi45IDggMTIuMyAxNy4zIDE1LjkgMjcuNGgxNi41YzYgMCAxMS4yIDQuMyAxMi4yIDEwLjMgMiAxMiAyLjEgMjQuNiAwIDM3LjEtMSA2LTYuMiAxMC40LTEyLjIgMTAuNGgtMTYuNWMtMy42IDEwLjEtOSAxOS40LTE1LjkgMjcuNGw4LjIgMTQuM2MzIDUuMiAxLjkgMTEuOS0yLjggMTUuNy05LjUgNy45LTIwLjQgMTQuMi0zMi4xIDE4LjYtNS43IDIuMS0xMi4xLS4xLTE1LjEtNS40bC04LjItMTQuM2MtMTAuNCAxLjktMjEuMiAxLjktMzEuNyAwek01MDEuNiA0MzFjMzguNSAyOS42IDgyLjQtMTQuMyA1Mi44LTUyLjgtMzguNS0yOS42LTgyLjQgMTQuMy01Mi44IDUyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvaW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDA1LjNWNDQ4YzAgMzUuMyA4NiA2NCAxOTIgNjRzMTkyLTI4LjcgMTkyLTY0di00Mi43QzM0Mi43IDQzNC40IDI2Ny4yIDQ0OCAxOTIgNDQ4UzQxLjMgNDM0LjQgMCA0MDUuM3pNMzIwIDEyOGMxMDYgMCAxOTItMjguNyAxOTItNjRTNDI2IDAgMzIwIDAgMTI4IDI4LjcgMTI4IDY0czg2IDY0IDE5MiA2NHpNMCAzMDAuNFYzNTJjMCAzNS4zIDg2IDY0IDE5MiA2NHMxOTItMjguNyAxOTItNjR2LTUxLjZjLTQxLjMgMzQtMTE2LjkgNTEuNi0xOTIgNTEuNlM0MS4zIDMzNC40IDAgMzAwLjR6bTQxNiAxMWM1Ny4zLTExLjEgOTYtMzEuNyA5Ni01NS40di00Mi43Yy0yMy4yIDE2LjQtNTcuMyAyNy42LTk2IDM0LjV2NjMuNnpNMTkyIDE2MEM4NiAxNjAgMCAxOTUuOCAwIDI0MHM4NiA4MCAxOTIgODAgMTkyLTM1LjggMTkyLTgwLTg2LTgwLTE5Mi04MHptMjE5LjMgNTYuM2M2MC0xMC44IDEwMC43LTMyIDEwMC43LTU2LjN2LTQyLjdjLTM1LjUgMjUuMS05Ni41IDM4LjYtMTYwLjcgNDEuOCAyOS41IDE0LjMgNTEuMiAzMy41IDYwIDU3LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbHVtbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0yMjQgNDE2SDY0VjE2MGgxNjB2MjU2em0yMjQgMEgyODhWMTYwaDE2MHYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDBINjRDMjguNyAwIDAgMjguNyAwIDY0djI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg5NnY4NGMwIDkuOCAxMS4yIDE1LjUgMTkuMSA5LjdMMzA0IDQxNmgxNDRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnREb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC42MiAzMiAwIDEyNS4xMiAwIDI0MGMwIDQ5LjU2IDIxLjQxIDk1LjAxIDU3LjAyIDEzMC43NEM0NC40NiA0MjEuMDUgMi43IDQ2NS45NyAyLjIgNDY2LjVBNy45OTUgNy45OTUgMCAwIDAgOCA0ODBjNjYuMjYgMCAxMTUuOTktMzEuNzUgMTQwLjYtNTEuMzhDMTgxLjI5IDQ0MC45MyAyMTcuNTkgNDQ4IDI1NiA0NDhjMTQxLjM4IDAgMjU2LTkzLjEyIDI1Ni0yMDhTMzk3LjM4IDMyIDI1NiAzMnptMjQgMzAyLjQ0VjM1MmMwIDguODQtNy4xNiAxNi0xNiAxNmgtMTZjLTguODQgMC0xNi03LjE2LTE2LTE2di0xNy43M2MtMTEuNDItMS4zNS0yMi4yOC01LjE5LTMxLjc4LTExLjQ2LTYuMjItNC4xMS02LjgyLTEzLjExLTEuNTUtMTguMzhsMTcuNTItMTcuNTJjMy43NC0zLjc0IDkuMzEtNC4yNCAxNC4xMS0yLjAzIDMuMTggMS40NiA2LjY2IDIuMjIgMTAuMjYgMi4yMmgzMi43OGM0LjY2IDAgOC40NC0zLjc4IDguNDQtOC40MiAwLTMuNzUtMi41Mi03LjA4LTYuMTItOC4xMWwtNTAuMDctMTQuM2MtMjIuMjUtNi4zNS00MC4wMS0yNC43MS00Mi45MS00Ny42Ny00LjA1LTMyLjA3IDE5LjAzLTU5LjQzIDQ5LjMyLTYzLjA1VjEyOGMwLTguODQgNy4xNi0xNiAxNi0xNmgxNmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNy43M2MxMS40MiAxLjM1IDIyLjI4IDUuMTkgMzEuNzggMTEuNDYgNi4yMiA0LjExIDYuODIgMTMuMTEgMS41NSAxOC4zOGwtMTcuNTIgMTcuNTJjLTMuNzQgMy43NC05LjMxIDQuMjQtMTQuMTEgMi4wM2EyNC41MTYgMjQuNTE2IDAgMCAwLTEwLjI2LTIuMjJoLTMyLjc4Yy00LjY2IDAtOC40NCAzLjc4LTguNDQgOC40MiAwIDMuNzUgMi41MiA3LjA4IDYuMTIgOC4xMWw1MC4wNyAxNC4zYzIyLjI1IDYuMzYgNDAuMDEgMjQuNzEgNDIuOTEgNDcuNjcgNC4wNSAzMi4wNi0xOS4wMyA1OS40Mi00OS4zMiA2My4wNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0OS42IDIxLjQgOTUgNTcgMTMwLjdDNDQuNSA0MjEuMSAyLjcgNDY2IDIuMiA0NjYuNWMtMi4yIDIuMy0yLjggNS43LTEuNSA4LjdTNC44IDQ4MCA4IDQ4MGM2Ni4zIDAgMTE2LTMxLjggMTQwLjYtNTEuNCAzMi43IDEyLjMgNjkgMTkuNCAxMDcuNCAxOS40IDE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJ6TTEyOCAyNzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC42MiAzMiAwIDEyNS4xMiAwIDI0MGMwIDQ5LjU2IDIxLjQxIDk1IDU3IDEzMC43NEM0NC40NiA0MjEuMDUgMi43IDQ2NiAyLjIgNDY2LjVBOCA4IDAgMCAwIDggNDgwYzY2LjI2IDAgMTE2LTMxLjc1IDE0MC42LTUxLjM4QTMwNC42NiAzMDQuNjYgMCAwIDAgMjU2IDQ0OGMxNDEuMzkgMCAyNTYtOTMuMTIgMjU2LTIwOFMzOTcuMzkgMzIgMjU2IDMyem05NiAyMzJhOCA4IDAgMCAxLTggOGgtNTZ2NTZhOCA4IDAgMCAxLTggOGgtNDhhOCA4IDAgMCAxLTgtOHYtNTZoLTU2YTggOCAwIDAgMS04LTh2LTQ4YTggOCAwIDAgMSA4LThoNTZ2LTU2YTggOCAwIDAgMSA4LThoNDhhOCA4IDAgMCAxIDggOHY1Nmg1NmE4IDggMCAwIDEgOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjQwYzAgNDkuNiAyMS40IDk1IDU3IDEzMC43LTEyLjYgNTAuMy01NC4zIDk1LjItNTQuOCA5NS44LTIuMiAyLjMtMi44IDUuNy0xLjUgOC43IDEuMyAyLjkgNC4xIDQuOCA3LjMgNC44IDY2LjMgMCAxMTYtMzEuOCAxNDAuNi01MS40IDMyLjcgMTIuMyA2OSAxOS40IDEwNy40IDE5LjQgMjcuNCAwIDUzLjctMy42IDc4LjQtMTBMNzIuOSAxODYuNGMtNS42IDE3LjEtOC45IDM1LTguOSA1My42em01NjkuOCAyMTguMWwtMTE0LjQtODguNEM1NTQuNiAzMzQuMSA1NzYgMjg5LjIgNTc2IDI0MGMwLTExNC45LTExNC42LTIwOC0yNTYtMjA4LTY1LjEgMC0xMjQuMiAyMC4xLTE2OS40IDUyLjdMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRsNTg4LjQgNDU0LjdjNyA1LjQgMTcgNC4yIDIyLjUtMi44bDE5LjYtMjUuM2M1LjQtNi44IDQuMS0xNi45LTIuOS0yMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNiAzMiAwIDEyNS4xIDAgMjQwYzAgNDkuNiAyMS40IDk1IDU3IDEzMC43QzQ0LjUgNDIxLjEgMi43IDQ2NiAyLjIgNDY2LjVjLTIuMiAyLjMtMi44IDUuNy0xLjUgOC43UzQuOCA0ODAgOCA0ODBjNjYuMyAwIDExNi0zMS44IDE0MC42LTUxLjQgMzIuNyAxMi4zIDY5IDE5LjQgMTA3LjQgMTkuNCAxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50c0RvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMTkyYzAtODguMzctOTMuMTItMTYwLTIwOC0xNjBTMCAxMDMuNjMgMCAxOTJjMCAzNC4yNyAxNC4xMyA2NS45NSAzNy45NyA5MS45OEMyNC42MSAzMTQuMjIgMi41MiAzMzguMTYgMi4yIDMzOC41QTcuOTk1IDcuOTk1IDAgMCAwIDggMzUyYzM2LjU4IDAgNjYuOTMtMTIuMjUgODguNzMtMjQuOThDMTI4LjkzIDM0Mi43NiAxNjcuMDIgMzUyIDIwOCAzNTJjMTE0Ljg4IDAgMjA4LTcxLjYzIDIwOC0xNjB6bS0yMjQgOTZ2LTE2LjI5Yy0xMS4yOS0uNTgtMjIuMjctNC41Mi0zMS4zNy0xMS4zNS0zLjktMi45My00LjEtOC43Ny0uNTctMTIuMTRsMTEuNzUtMTEuMjFjMi43Ny0yLjY0IDYuODktMi43NiAxMC4xMy0uNzMgMy44NyAyLjQyIDguMjYgMy43MiAxMi44MiAzLjcyaDI4LjExYzYuNSAwIDExLjgtNS45MiAxMS44LTEzLjE5IDAtNS45NS0zLjYxLTExLjE5LTguNzctMTIuNzNsLTQ1LTEzLjVjLTE4LjU5LTUuNTgtMzEuNTgtMjMuNDItMzEuNTgtNDMuMzkgMC0yNC41MiAxOS4wNS00NC40NCA0Mi42Ny00NS4wN1Y5NmMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxNi4yOWMxMS4yOS41OCAyMi4yNyA0LjUxIDMxLjM3IDExLjM1IDMuOSAyLjkzIDQuMSA4Ljc3LjU3IDEyLjE0bC0xMS43NSAxMS4yMWMtMi43NyAyLjY0LTYuODkgMi43Ni0xMC4xMy43My0zLjg3LTIuNDMtOC4yNi0zLjcyLTEyLjgyLTMuNzJoLTI4LjExYy02LjUgMC0xMS44IDUuOTItMTEuOCAxMy4xOSAwIDUuOTUgMy42MSAxMS4xOSA4Ljc3IDEyLjczbDQ1IDEzLjVjMTguNTkgNS41OCAzMS41OCAyMy40MiAzMS41OCA0My4zOSAwIDI0LjUzLTE5LjA1IDQ0LjQ0LTQyLjY3IDQ1LjA3VjI4OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04em0zNDYuMDEgMTIzLjk5QzU2MS44NyAzODUuOTYgNTc2IDM1NC4yNyA1NzYgMzIwYzAtNjYuOTQtNTMuNDktMTI0LjItMTI5LjMzLTE0OC4wNy44NiA2LjYgMS4zMyAxMy4yOSAxLjMzIDIwLjA3IDAgMTA1Ljg3LTEwNy42NiAxOTItMjQwIDE5Mi0xMC43OCAwLTIxLjMyLS43Ny0zMS43My0xLjg4QzIwNy44IDQzOS42MyAyODEuNzcgNDgwIDM2OCA0ODBjNDAuOTggMCA3OS4wNy05LjI0IDExMS4yNy0yNC45OEM1MDEuMDcgNDY3Ljc1IDUzMS40MiA0ODAgNTY4IDQ4MGMzLjIgMCA2LjA5LTEuOTEgNy4zNC00Ljg0IDEuMjctMi45NC42Ni02LjM0LTEuNTUtOC42Ny0uMzEtLjMzLTIyLjQyLTI0LjI0LTM1Ljc4LTU0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAxOTJjMC04OC40LTkzLjEtMTYwLTIwOC0xNjBTMCAxMDMuNiAwIDE5MmMwIDM0LjMgMTQuMSA2NS45IDM4IDkyLTEzLjQgMzAuMi0zNS41IDU0LjItMzUuOCA1NC41LTIuMiAyLjMtMi44IDUuNy0xLjUgOC43UzQuOCAzNTIgOCAzNTJjMzYuNiAwIDY2LjktMTIuMyA4OC43LTI1IDMyLjIgMTUuNyA3MC4zIDI1IDExMS4zIDI1IDExNC45IDAgMjA4LTcxLjYgMjA4LTE2MHptMTIyIDIyMGMyMy45LTI2IDM4LTU3LjcgMzgtOTIgMC02Ni45LTUzLjUtMTI0LjItMTI5LjMtMTQ4LjEuOSA2LjYgMS4zIDEzLjMgMS4zIDIwLjEgMCAxMDUuOS0xMDcuNyAxOTItMjQwIDE5Mi0xMC44IDAtMjEuMy0uOC0zMS43LTEuOUMyMDcuOCA0MzkuNiAyODEuOCA0ODAgMzY4IDQ4MGM0MSAwIDc5LjEtOS4yIDExMS4zLTI1IDIxLjggMTIuNyA1Mi4xIDI1IDg4LjcgMjUgMy4yIDAgNi4xLTEuOSA3LjMtNC44IDEuMy0yLjkuNy02LjMtMS41LTguNy0uMy0uMy0yMi40LTI0LjItMzUuOC01NC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wYWN0RGlzYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek04OCAyNTZINTZjMC0xMDUuOSA4Ni4xLTE5MiAxOTItMTkydjMyYy04OC4yIDAtMTYwIDcxLjgtMTYwIDE2MHptMTYwIDk2Yy01MyAwLTk2LTQzLTk2LTk2czQzLTk2IDk2LTk2IDk2IDQzIDk2IDk2LTQzIDk2LTk2IDk2em0wLTEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI1LjM4IDIzMy4zN2MtMTIuNSAxMi41LTEyLjUgMzIuNzYgMCA0NS4yNSAxMi40OSAxMi41IDMyLjc2IDEyLjUgNDUuMjUgMCAxMi41LTEyLjUgMTIuNS0zMi43NiAwLTQ1LjI1LTEyLjUtMTIuNDktMzIuNzYtMTIuNDktNDUuMjUgMHpNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTI2LjE0IDE0OC4wNUwzMDguMTcgMzAwLjRhMzEuOTM4IDMxLjkzOCAwIDAgMS0xNS43NyAxNS43N2wtMTQ0LjM0IDY1Ljk3Yy0xNi42NSA3LjYxLTMzLjgxLTkuNTUtMjYuMi0yNi4ybDY1Ljk4LTE0NC4zNWEzMS45MzggMzEuOTM4IDAgMCAxIDE1Ljc3LTE1Ljc3bDE0NC4zNC02NS45N2MxNi42NS03LjYgMzMuOCA5LjU1IDI2LjE5IDI2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXByZXNzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNjg2IDQyNy4zMTRMMTA0IDMyOGwtMzIuOTIyLTMxLjAyOUM1NS45NTggMjgxLjg1MSA2Ni42NjYgMjU2IDg4LjA0OCAyNTZoMTEyQzIxMy4zMDMgMjU2IDIyNCAyNjYuNzQ1IDIyNCAyODB2MTEyYzAgMjEuMzgyLTI1LjgwMyAzMi4wOS00MC45MjIgMTYuOTcxTDE1MiAzNzZsLTk5LjMxNCA5OS4zMTRjLTYuMjQ4IDYuMjQ4LTE2LjM3OSA2LjI0OC0yMi42MjcgMEw0LjY4NiA0NDkuOTQxYy02LjI0OC02LjI0OC02LjI0OC0xNi4zNzkgMC0yMi42Mjd6TTQ0My4zMTQgODQuNjg2TDM0NCAxODRsMzIuOTIyIDMxLjAyOWMxNS4xMiAxNS4xMiA0LjQxMiA0MC45NzEtMTYuOTcgNDAuOTcxaC0xMTJDMjM0LjY5NyAyNTYgMjI0IDI0NS4yNTUgMjI0IDIzMlYxMjBjMC0yMS4zODIgMjUuODAzLTMyLjA5IDQwLjkyMi0xNi45NzFMMjk2IDEzNmw5OS4zMTQtOTkuMzE0YzYuMjQ4LTYuMjQ4IDE2LjM3OS02LjI0OCAyMi42MjcgMGwyNS4zNzMgMjUuMzczYzYuMjQ4IDYuMjQ4IDYuMjQ4IDE2LjM3OSAwIDIyLjYyN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcHJlc3NBcnJvd3NBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAwIDI4OEg4OGMtMjEuNCAwLTMyLjEgMjUuOC0xNyA0MWwzMi45IDMxLTk5LjIgOTkuM2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZsMjUuNCAyNS40YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwTDE1MiA0MDhsMzEuMSAzM2MxNS4xIDE1LjEgNDAuOSA0LjQgNDAuOS0xN1YzMTJjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTExMi02NGgxMTJjMjEuNCAwIDMyLjEtMjUuOSAxNy00MWwtMzMtMzEgOTkuMy05OS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42TDQ4MS45IDQuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMzYwIDEwNGwtMzEuMS0zM0MzMTMuOCA1NS45IDI4OCA2Ni42IDI4OCA4OHYxMTJjMCAxMy4zIDEwLjcgMjQgMjQgMjR6bTk2IDEzNmwzMy0zMS4xYzE1LjEtMTUuMSA0LjQtNDAuOS0xNy00MC45SDMxMmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTEyYzAgMjEuNCAyNS45IDMyLjEgNDEgMTdsMzEtMzIuOSA5OS4zIDk5LjNjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsMjUuNC0yNS40YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42TDQwOCAzNjB6TTE4MyA3MS4xTDE1MiAxMDQgNTIuNyA0LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDQuNyAzMC4xYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNkwxMDQgMTUybC0zMyAzMS4xQzU1LjkgMTk4LjIgNjYuNiAyMjQgODggMjI0aDExMmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY4OGMwLTIxLjMtMjUuOS0zMi00MS0xNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTkySDMxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNDRjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY4NGg4NGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyem0tMjc2LTI0VjQ0YzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY4NEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgxMjRjMTMuMyAwIDI0LTEwLjcgMjQtMjR6bTAgMzAwVjM0NGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg4NHY4NGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem0xOTIgMHYtODRoODRjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJIMzEyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxMjRjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29uY2llcmdlQmVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTMwLjU0VjExMmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlY4MGMwLTguODQtNy4xNi0xNi0xNi0xNmgtOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2djE4LjU0QzExNS40OSAxNDYuMTEgMzIgMjM5LjE4IDMyIDM1Mmg0NDhjMC0xMTIuODItODMuNDktMjA1Ljg5LTE5Mi0yMjEuNDZ6TTQ5NiAzODRIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvb2tpZUJpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjUyIDI1NS44MmMtNjkuOTctLjg1LTEyNi40Ny01Ny42OS0xMjYuNDctMTI3Ljg2LTcwLjE3IDAtMTI3LTU2LjQ5LTEyNy44Ni0xMjYuNDUtMjcuMjYtNC4xNC01NS4xMy4zLTc5LjcyIDEyLjgybC02OS4xMyAzNS4yMmExMzIuMjIxIDEzMi4yMjEgMCAwIDAtNTcuNzkgNTcuODFsLTM1LjEgNjguODhhMTMyLjY0NSAxMzIuNjQ1IDAgMCAwLTEyLjgyIDgwLjk1bDEyLjA4IDc2LjI3YTEzMi41MjEgMTMyLjUyMSAwIDAgMCAzNy4xNiA3Mi45Nmw1NC43NyA1NC43NmExMzIuMDM2IDEzMi4wMzYgMCAwIDAgNzIuNzEgMzcuMDZsNzYuNzEgMTIuMTVjMjcuNTEgNC4zNiA1NS43LS4xMSA4MC41My0xMi43Nmw2OS4xMy0zNS4yMWExMzIuMjczIDEzMi4yNzMgMCAwIDAgNTcuNzktNTcuODFsMzUuMS02OC44OGMxMi41Ni0yNC42NCAxNy4wMS01Mi41OCAxMi45MS03OS45MXpNMTc2IDM2OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMzItMTYwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xNjAgMTI4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb29raWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjM3IDI1NC43OWwtMTIuMDgtNzYuMjZhMTMyLjQ5MyAxMzIuNDkzIDAgMCAwLTM3LjE2LTcyLjk1bC01NC43Ni01NC43NWMtMTkuNzMtMTkuNzItNDUuMTgtMzIuNy03Mi43MS0zNy4wNWwtNzYuNy0xMi4xNWMtMjcuNTEtNC4zNi01NS42OS4xMS04MC41MiAxMi43NkwxMDcuMzIgNDkuNmExMzIuMjUgMTMyLjI1IDAgMCAwLTU3Ljc5IDU3LjhsLTM1LjEgNjguODhhMTMyLjYwMiAxMzIuNjAyIDAgMCAwLTEyLjgyIDgwLjk0bDEyLjA4IDc2LjI3YTEzMi40OTMgMTMyLjQ5MyAwIDAgMCAzNy4xNiA3Mi45NWw1NC43NiA1NC43NWExMzIuMDg3IDEzMi4wODcgMCAwIDAgNzIuNzEgMzcuMDVsNzYuNyAxMi4xNGMyNy41MSA0LjM2IDU1LjY5LS4xMSA4MC41Mi0xMi43NWw2OS4xMi0zNS4yMWExMzIuMzAyIDEzMi4zMDIgMCAwIDAgNTcuNzktNTcuOGwzNS4xLTY4Ljg3YzEyLjcxLTI0Ljk2IDE3LjItNTMuMyAxMi44Mi04MC45NnpNMTc2IDM2OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMzItMTYwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xNjAgMTI4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0NDh2NDBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDI0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMTIwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGg3MnYyOTZjMCAzMC44NzkgMjUuMTIxIDU2IDU2IDU2aDE2OHptMC0zNDRWMEgxNTJjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYzNjhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDI3MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTI4SDM0NGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTEyMC45NzEtMzEuMDI5TDM3NS4wMjkgNy4wMjlBMjQgMjQgMCAwIDAgMzU4LjA1OSAwSDM1MnY5Nmg5NnYtNi4wNTlhMjQgMjQgMCAwIDAtNy4wMjktMTYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvcHlyaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTExNy4xMzQgMzQ2Ljc1M2MtMS41OTIgMS44NjctMzkuNzc2IDQ1LjczMS0xMDkuODUxIDQ1LjczMS04NC42OTIgMC0xNDQuNDg0LTYzLjI2LTE0NC40ODQtMTQ1LjU2NyAwLTgxLjMwMyA2Mi4wMDQtMTQzLjQwMSAxNDMuNzYyLTE0My40MDEgNjYuOTU3IDAgMTAxLjk2NSAzNy4zMTUgMTAzLjQyMiAzOC45MDRhMTIgMTIgMCAwIDEgMS4yMzggMTQuNjIzbC0yMi4zOCAzNC42NTVjLTQuMDQ5IDYuMjY3LTEyLjc3NCA3LjM1MS0xOC4yMzQgMi4yOTUtLjIzMy0uMjE0LTI2LjUyOS0yMy44OC02MS44OC0yMy44OC00Ni4xMTYgMC03My45MTYgMzMuNTc1LTczLjkxNiA3Ni4wODIgMCAzOS42MDIgMjUuNTE0IDc5LjY5MiA3NC4yNzcgNzkuNjkyIDM4LjY5NyAwIDY1LjI4LTI4LjMzOCA2NS41NDQtMjguNjI1IDUuMTMyLTUuNTY1IDE0LjA1OS01LjAzMyAxOC41MDggMS4wNTNsMjQuNTQ3IDMzLjU3MmExMi4wMDEgMTIuMDAxIDAgMCAxLS41NTMgMTQuODY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3VjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjI0djY0aDMyMHYtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoMzJjMC01My00My05Ni05Ni05NkgxNjBjLTUzIDAtOTYgNDMtOTYgOTZoMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjR6bTQxNi0zMmgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2SDEyOHYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0IDAgMjMuNiAxMyA0NCAzMiA1NS4xVjQzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgzODR2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYzMTEuMWMxOS0xMS4xIDMyLTMxLjUgMzItNTUuMSAwLTM1LjMtMjguNy02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlZGl0Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjU2SDB2MTc2em0xOTItNjhjMC02LjYgNS40LTEyIDEyLTEyaDEzNmM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDIwNGMtNi42IDAtMTItNS40LTEyLTEydi00MHptLTEyOCAwYzAtNi42IDUuNC0xMiAxMi0xMmg3MmM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDc2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek01NzYgODB2NDhIMFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3BBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDM1MmgtNDBWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgxOTJ2OTZoMTYwdjMyOGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQ4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTQwaDQwYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTQ4YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTE2MCAyNGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0SDg4Qzc0Ljc1IDAgNjQgMTAuNzQgNjQgMjR2NDBIMjRDMTAuNzUgNjQgMCA3NC43NCAwIDg4djQ4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDB2MjU2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMjI0di05NkgxNjBWMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDM1MmgtNDBWMTA5LjI1bDU5LjMxLTU5LjMxYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNMNDg0LjY5IDQuNjljLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBMNDAyLjc1IDY0SDE5MnY5NmgxMTQuNzVMMTYwIDMwNi43NVYyNGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0SDg4Qzc0Ljc1IDAgNjQgMTAuNzQgNjQgMjR2NDBIMjRDMTAuNzUgNjQgMCA3NC43NCAwIDg4djQ4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDB2MjY0YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoMjMydi05NkgyMDUuMjVMMzUyIDIwNS4yNVY0ODhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0OGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00MGg0MGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9zcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMTI4aC05NlYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2djIyNGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMjU2aDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3NzaGFpcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwIDIyNGgtMzAuMzY0QzQ1NS43MjQgMTMwLjMyNSAzODEuNjc1IDU2LjI3NiAyODggNDIuMzY0VjEyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjMwLjM2NEMxMzAuMzI1IDU2LjI3NiA1Ni4yNzYgMTMwLjMyNSA0Mi4zNjQgMjI0SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMzAuMzY0QzU2LjI3NiAzODEuNjc1IDEzMC4zMjUgNDU1LjcyNCAyMjQgNDY5LjYzNlY1MDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0zMC4zNjRDMzgxLjY3NSA0NTUuNzI0IDQ1NS43MjQgMzgxLjY3NSA0NjkuNjM2IDI4OEg1MDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMnpNMjg4IDQwNC42MzRWMzY0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwLjYzNEMxNjUuODI2IDM5Mi4yMzIgMTE5Ljc4MyAzNDYuMjQzIDEwNy4zNjYgMjg4SDE0OGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MC42MzRDMTE5Ljc2OCAxNjUuODI2IDE2NS43NTcgMTE5Ljc4MyAyMjQgMTA3LjM2NlYxNDhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MC42MzRDMzQ2LjE3NCAxMTkuNzY4IDM5Mi4yMTcgMTY1Ljc1NyA0MDQuNjM0IDIyNEgzNjRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MC42MzRDMzkyLjIzMiAzNDYuMTc0IDM0Ni4yNDMgMzkyLjIxNyAyODggNDA0LjYzNHpNMjg4IDI1NmMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJzLTMyLTE0LjMyNy0zMi0zMmMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAzMmgtMTYuMzZDNTEzLjA0IDEyLjY4IDQ5MC4wOSAwIDQ2NCAwYy00NC4xOCAwLTgwIDM1LjgyLTgwIDgwdjIwLjk4TDEyLjA5IDM5My41N0EzMC4yMTYgMzAuMjE2IDAgMCAwIDAgNDE3Ljc0YzAgMjIuNDYgMjMuNjQgMzcuMDcgNDMuNzMgMjcuMDNMMTY1LjI3IDM4NGg5Ni40OWw0NC40MSAxMjAuMWMyLjI3IDYuMjMgOS4xNSA5LjQ0IDE1LjM4IDcuMTdsMjIuNTUtOC4yMWM2LjIzLTIuMjcgOS40NC05LjE1IDcuMTctMTUuMzhMMzEyLjk0IDM4NEgzNTJjMS45MSAwIDMuNzYtLjIzIDUuNjYtLjI5bDQ0LjUxIDEyMC4zOGMyLjI3IDYuMjMgOS4xNSA5LjQ0IDE1LjM4IDcuMTdsMjIuNTUtOC4yMWM2LjIzLTIuMjcgOS40NC05LjE1IDcuMTctMTUuMzhsLTQxLjI0LTExMS41M0M0ODUuNzQgMzUyLjggNTQ0IDI3OS4yNiA1NDQgMTkydi04MGw5Ni0xNmMwLTM1LjM1LTQyLjk4LTY0LTk2LTY0em0tODAgNzJjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggNDQ4SDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0MTZjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTY0LTMyMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDggMCA3LjEgMS42IDEzLjcgNC40IDE5LjhMNDc2IDIzOS4yYy0xNS40IDkuMi0zNS4zIDQtNDQuMi0xMS42TDM1MC4zIDg1QzM2MSA3Ni4yIDM2OCA2MyAzNjggNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDhjMCAxNSA3IDI4LjIgMTcuNyAzN2wtODEuNSAxNDIuNmMtOC45IDE1LjYtMjguOSAyMC44LTQ0LjIgMTEuNmwtNzIuMy00My40YzIuNy02IDQuNC0xMi43IDQuNC0xOS44IDAtMjYuNS0yMS41LTQ4LTQ4LTQ4UzAgMTQ5LjUgMCAxNzZzMjEuNSA0OCA0OCA0OGMyLjYgMCA1LjItLjQgNy43LS44TDEyOCA0MTZoMzg0bDcyLjMtMTkyLjhjMi41LjQgNS4xLjggNy43LjggMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNydXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDcuMzEgMTg1LjcxbC0xODEtMTgxYTE2IDE2IDAgMCAwLTIyLjYyIDBMMjgxIDI3LjMxYTE2IDE2IDAgMCAwIDAgMjIuNjNsMTgxIDE4MWExNiAxNiAwIDAgMCAyMi42MyAwbDIyLjYyLTIyLjYzYTE2IDE2IDAgMCAwIC4wNi0yMi42em0tMTc5LjU0IDY2LjQxbC02Ny44OS02Ny44OSA1NS4xLTU1LjEtNDUuMjUtNDUuMjUtMTA5LjY3IDEwOS42N2E5Ni4wOCA5Ni4wOCAwIDAgMC0yNS42NyA0Ni4yOUwxMDYuNjUgMzYwLjFsLTEwMiAxMDJhMTYgMTYgMCAwIDAgMCAyMi42M2wyMi42MiAyMi42MmExNiAxNiAwIDAgMCAyMi42MyAwbDEwMi0xMDIgMTIwLjI1LTI3Ljc1YTk1Ljg4IDk1Ljg4IDAgMCAwIDQ2LjI5LTI1LjY1bDEwOS42OC0xMDkuNjhMMzgyLjg3IDE5N3ptLTU0LjU3IDU0LjU3YTMyIDMyIDAgMCAxLTE1LjQ1IDguNTRsLTc5LjMgMTguMzIgMTguMy03OS4zYTMyLjIyIDMyLjIyIDAgMCAxIDguNTYtMTUuNDVsOS4zMS05LjMxIDY3Ljg5IDY3Ljg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDdWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzOS4xIDYuM2wtMjA4IDc4Yy0xOC43IDctMzEuMSAyNS0zMS4xIDQ1djIyNS4xYzAgMTguMiAxMC4zIDM0LjggMjYuNSA0Mi45bDIwOCAxMDRjMTMuNSA2LjggMjkuNCA2LjggNDIuOSAwbDIwOC0xMDRjMTYuMy04LjEgMjYuNS0yNC44IDI2LjUtNDIuOVYxMjkuM2MwLTIwLTEyLjQtMzcuOS0zMS4xLTQ0LjlsLTIwOC03OEMyNjIgMi4yIDI1MCAyLjIgMjM5LjEgNi4zek0yNTYgNjguNGwxOTIgNzJ2MS4xbC0xOTIgNzgtMTkyLTc4di0xLjFsMTkyLTcyem0zMiAzNTZWMjc1LjVsMTYwLTY1djEzMy45bC0xNjAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1YmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC42IDI1MC4yTDM5MiAyMTRWMTA1LjVjMC0xNS05LjMtMjguNC0yMy40LTMzLjdsLTEwMC0zNy41Yy04LjEtMy4xLTE3LjEtMy4xLTI1LjMgMGwtMTAwIDM3LjVjLTE0LjEgNS4zLTIzLjQgMTguNy0yMy40IDMzLjdWMjE0bC05Ni42IDM2LjJDOS4zIDI1NS41IDAgMjY4LjkgMCAyODMuOVYzOTRjMCAxMy42IDcuNyAyNi4xIDE5LjkgMzIuMmwxMDAgNTBjMTAuMSA1LjEgMjIuMSA1LjEgMzIuMiAwbDEwMy45LTUyIDEwMy45IDUyYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDAtNTBjMTIuMi02LjEgMTkuOS0xOC42IDE5LjktMzIuMlYyODMuOWMwLTE1LTkuMy0yOC40LTIzLjQtMzMuN3pNMzU4IDIxNC44bC04NSAzMS45di02OC4ybDg1LTM3djczLjN6TTE1NCAxMDQuMWwxMDItMzguMiAxMDIgMzguMnYuNmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42em04NCAyOTEuMWwtODUgNDIuNXYtNzkuMWw4NS0zOC44djc1LjR6bTAtMTEybC0xMDIgNDEuNC0xMDItNDEuNHYtLjZsMTAyLTM4LjIgMTAyIDM4LjJ2LjZ6bTI0MCAxMTJsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc4LjA2IDI1Nkw0NDQuNDggODkuNTdjNC42OS00LjY5IDQuNjktMTIuMjkgMC0xNi45Ny0zMi44LTMyLjgtODUuOTktMzIuOC0xMTguNzkgMEwyMTAuMTggMTg4LjEybC0yNC44Ni0yNC44NmM0LjMxLTEwLjkyIDYuNjgtMjIuODEgNi42OC0zNS4yNiAwLTUzLjAyLTQyLjk4LTk2LTk2LTk2UzAgNzQuOTggMCAxMjhzNDIuOTggOTYgOTYgOTZjNC41NCAwIDguOTktLjMyIDEzLjM2LS45M0wxNDIuMjkgMjU2bC0zMi45MyAzMi45M2MtNC4zNy0uNjEtOC44My0uOTMtMTMuMzYtLjkzLTUzLjAyIDAtOTYgNDIuOTgtOTYgOTZzNDIuOTggOTYgOTYgOTYgOTYtNDIuOTggOTYtOTZjMC0xMi40NS0yLjM3LTI0LjM0LTYuNjgtMzUuMjZsMjQuODYtMjQuODZMMzI1LjY5IDQzOS40YzMyLjggMzIuOCA4NS45OSAzMi44IDExOC43OSAwIDQuNjktNC42OCA0LjY5LTEyLjI4IDAtMTYuOTdMMjc4LjA2IDI1NnpNOTYgMTYwYy0xNy42NCAwLTMyLTE0LjM2LTMyLTMyczE0LjM2LTMyIDMyLTMyIDMyIDE0LjM2IDMyIDMyLTE0LjM2IDMyLTMyIDMyem0wIDI1NmMtMTcuNjQgMC0zMi0xNC4zNi0zMi0zMnMxNC4zNi0zMiAzMi0zMiAzMiAxNC4zNiAzMiAzMi0xNC4zNiAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGF0YWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDczLjE0M3Y0NS43MTRDNDQ4IDE1OS4xNDMgMzQ3LjY2NyAxOTIgMjI0IDE5MlMwIDE1OS4xNDMgMCAxMTguODU3VjczLjE0M0MwIDMyLjg1NyAxMDAuMzMzIDAgMjI0IDBzMjI0IDMyLjg1NyAyMjQgNzMuMTQzek00NDggMTc2djEwMi44NTdDNDQ4IDMxOS4xNDMgMzQ3LjY2NyAzNTIgMjI0IDM1MlMwIDMxOS4xNDMgMCAyNzguODU3VjE3NmM0OC4xMjUgMzMuMTQzIDEzNi4yMDggNDguNTcyIDIyNCA0OC41NzJTMzk5Ljg3NCAyMDkuMTQzIDQ0OCAxNzZ6bTAgMTYwdjEwMi44NTdDNDQ4IDQ3OS4xNDMgMzQ3LjY2NyA1MTIgMjI0IDUxMlMwIDQ3OS4xNDMgMCA0MzguODU3VjMzNmM0OC4xMjUgMzMuMTQzIDEzNi4yMDggNDguNTcyIDIyNCA0OC41NzJTMzk5Ljg3NCAzNjkuMTQzIDQ0OCAzMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlYWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDI2MGMwIDE1LjQ2NC0xMi41MzYgMjgtMjggMjhzLTI4LTEyLjUzNi0yOC0yOGMwLTQ0LjExMiAzNS44ODgtODAgODAtODBzODAgMzUuODg4IDgwIDgwYzAgMTUuNDY0LTEyLjUzNiAyOC0yOCAyOHMtMjgtMTIuNTM2LTI4LTI4YzAtMTMuMjM0LTEwLjc2Ny0yNC0yNC0yNHMtMjQgMTAuNzY2LTI0IDI0em0yNC0xNzZjLTk3LjA0NyAwLTE3NiA3OC45NTMtMTc2IDE3NiAwIDE1LjQ2NCAxMi41MzYgMjggMjggMjhzMjgtMTIuNTM2IDI4LTI4YzAtNjYuMTY4IDUzLjgzMi0xMjAgMTIwLTEyMHMxMjAgNTMuODMyIDEyMCAxMjBjMCA3NS4xNjQtNzEuMDA5IDcwLjMxMS03MS45OTcgMTQzLjYyMkwyODggNDA0YzAgMjguNjczLTIzLjMyNyA1Mi01MiA1Mi0xNS40NjQgMC0yOCAxMi41MzYtMjggMjhzMTIuNTM2IDI4IDI4IDI4YzU5LjQ3NSAwIDEwNy44NzYtNDguMzI4IDEwOC0xMDcuNzc0LjU5NS0zNC40MjggNzItNDguMjQgNzItMTQ0LjIyNiAwLTk3LjA0Ny03OC45NTMtMTc2LTE3Ni0xNzZ6bTI2OC40ODUtNTIuMjAxTDQ4MC4yIDMuNTE1Yy00LjY4Ny00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMMzc2LjIgOTAuNTQ0Yy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFsMjguMjg1IDI4LjI4NWM0LjY4NiA0LjY4NiAxMi4yODQgNC42ODYgMTYuOTcgMGw4Ny4wMy04Ny4wMjljNC42ODctNC42ODggNC42ODctMTIuMjg2IDAtMTYuOTcyek0xNjguOTcgMzE0Ljc0NWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3IDBMMy41MTUgNDYzLjIzYy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFMMzEuOCA1MDguNDg1YzQuNjg3IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NzEgMEwxOTcuMjU2IDM2MGM0LjY4Ni00LjY4NiA0LjY4Ni0xMi4yODQgMC0xNi45NzFsLTI4LjI4Ni0yOC4yODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlbW9jcmF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzNy4zIDI1Ni45bC0xOS42LTI5LjRjLTI4LjItNDIuMy03NS4zLTY3LjUtMTI2LjEtNjcuNUgyNTZsLTgxLjItODEuMmMyMC4xLTIwLjEgMjIuNi01MS4xIDcuNS03My45LTMuNC01LjItMTAuOC01LjktMTUuMi0xLjVsLTQxLjggNDEuOEw4Mi40IDIuNGMtMy42LTMuNi05LjYtMy0xMi40IDEuMi0xMi4zIDE4LjYtMTAuMyA0NCA2LjEgNjAuNCAzLjMgMy4zIDcuMyA1LjMgMTEuMyA3LjUtMi4yIDEuNy00LjcgMy4xLTYuNCA1LjRMNi40IDE3Ni4yYy03LjMgOS43LTguNCAyMi43LTMgMzMuNWwxNC4zIDI4LjZjNS40IDEwLjggMTYuNSAxNy43IDI4LjYgMTcuN2gzMWM4LjUgMCAxNi42LTMuNCAyMi42LTkuNEwxMzggMjEybDU0IDEwOGgzNTJ2LTc3LjhjMTYuMiAxMi4yIDE4LjMgMTcuNiA0MC4xIDUwLjMgNC45IDcuNCAxNC44IDkuMyAyMi4yIDQuNGwyNi42LTE3LjdjNy4zLTUgOS4zLTE0LjkgNC40LTIyLjN6bS0zNDEuMS0xMy42bC0xNi41IDE2LjEgMy45IDIyLjdjLjcgNC4xLTMuNiA3LjItNy4yIDUuM0wyNTYgMjc2LjdsLTIwLjQgMTAuN2MtMy42IDEuOS03LjktMS4yLTcuMi01LjNsMy45LTIyLjctMTYuNS0xNi4xYy0zLTIuOS0xLjMtNy45IDIuOC04LjVsMjIuOC0zLjMgMTAuMi0yMC43YzEuOC0zLjcgNy4xLTMuNyA5IDBsMTAuMiAyMC43IDIyLjggMy4zYzQgLjYgNS42IDUuNiAyLjYgOC41em0xMTIgMGwtMTYuNSAxNi4xIDMuOSAyMi43Yy43IDQuMS0zLjYgNy4yLTcuMiA1LjNMMzY4IDI3Ni43bC0yMC40IDEwLjdjLTMuNiAxLjktNy45LTEuMi03LjItNS4zbDMuOS0yMi43LTE2LjUtMTYuMWMtMy0yLjktMS4zLTcuOSAyLjgtOC41bDIyLjgtMy4zIDEwLjItMjAuN2MxLjgtMy43IDcuMS0zLjcgOSAwbDEwLjIgMjAuNyAyMi44IDMuM2M0IC42IDUuNiA1LjYgMi42IDguNXptMTEyIDBsLTE2LjUgMTYuMSAzLjkgMjIuN2MuNyA0LjEtMy42IDcuMi03LjIgNS4zTDQ4MCAyNzYuN2wtMjAuNCAxMC43Yy0zLjYgMS45LTcuOS0xLjItNy4yLTUuM2wzLjktMjIuNy0xNi41LTE2LjFjLTMtMi45LTEuMy03LjkgMi44LTguNWwyMi44LTMuMyAxMC4yLTIwLjdjMS44LTMuNyA3LjEtMy43IDkgMGwxMC4yIDIwLjcgMjIuOCAzLjNjNCAuNiA1LjYgNS42IDIuNiA4LjV6TTE5MiA0OTZjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnYtODBoMTYwdjgwYzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMzUySDE5MnYxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlc2t0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxOTJsLTE2IDQ4aC03MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGgyNzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRoLTcybC0xNi00OGgxOTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xNiAzNTJINjRWNjRoNDQ4djI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGhhcm1hY2hha3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NSAyMjUuMDZsLTE3LjIyIDEuMDhjLTUuMjctMzkuNDktMjAuNzktNzUuNjQtNDMuODYtMTA1Ljg0bDEyLjk1LTExLjQzYzYuOTItNi4xMSA3LjI1LTE2Ljc5LjczLTIzLjMxTDQyNi40NCA2NC40Yy02LjUzLTYuNTMtMTcuMjEtNi4xOS0yMy4zMS43M0wzOTEuNyA3OC4wN2MtMzAuMi0yMy4wNi02Ni4zNS0zOC41OC0xMDUuODMtNDMuODZMMjg2Ljk0IDE3Yy41OC05LjIxLTYuNzQtMTctMTUuOTctMTdoLTI5Ljk0Yy05LjIzIDAtMTYuNTQgNy43OS0xNS45NyAxN2wxLjA4IDE3LjIyYy0zOS40OSA1LjI3LTc1LjY0IDIwLjc5LTEwNS44MyA0My44NmwtMTEuNDMtMTIuOTVjLTYuMTEtNi45Mi0xNi43OS03LjI1LTIzLjMxLS43M0w2NC40IDg1LjU2Yy02LjUzIDYuNTMtNi4xOSAxNy4yMS43MyAyMy4zMWwxMi45NSAxMS40M2MtMjMuMDYgMzAuMi0zOC41OCA2Ni4zNS00My44NiAxMDUuODRMMTcgMjI1LjA2Yy05LjIxLS41OC0xNyA2Ljc0LTE3IDE1Ljk3djI5Ljk0YzAgOS4yMyA3Ljc5IDE2LjU0IDE3IDE1Ljk3bDE3LjIyLTEuMDhjNS4yNyAzOS40OSAyMC43OSA3NS42NCA0My44NiAxMDUuODNsLTEyLjk1IDExLjQzYy02LjkyIDYuMTEtNy4yNSAxNi43OS0uNzMgMjMuMzFsMjEuMTcgMjEuMTdjNi41MyA2LjUzIDE3LjIxIDYuMTkgMjMuMzEtLjczbDExLjQzLTEyLjk1YzMwLjIgMjMuMDYgNjYuMzUgMzguNTggMTA1Ljg0IDQzLjg2TDIyNS4wNiA0OTVjLS41OCA5LjIxIDYuNzQgMTcgMTUuOTcgMTdoMjkuOTRjOS4yMyAwIDE2LjU0LTcuNzkgMTUuOTctMTdsLTEuMDgtMTcuMjJjMzkuNDktNS4yNyA3NS42NC0yMC43OSAxMDUuODQtNDMuODZsMTEuNDMgMTIuOTVjNi4xMSA2LjkyIDE2Ljc5IDcuMjUgMjMuMzEuNzNsMjEuMTctMjEuMTdjNi41My02LjUzIDYuMTktMTcuMjEtLjczLTIzLjMxbC0xMi45NS0xMS40M2MyMy4wNi0zMC4yIDM4LjU4LTY2LjM1IDQzLjg2LTEwNS44M2wxNy4yMiAxLjA4YzkuMjEuNTggMTctNi43NCAxNy0xNS45N3YtMjkuOTRjLS4wMS05LjIzLTcuOC0xNi41NC0xNy4wMS0xNS45N3pNMjgxLjg0IDk4LjYxYzI0LjgxIDQuMDcgNDcuNjMgMTMuNjYgNjcuMjMgMjcuNzhsLTQyLjYyIDQ4LjI5Yy04LjczLTUuNDQtMTguMzItOS41NC0yOC42Mi0xMS45NWw0LjAxLTY0LjEyem0tNTEuNjggMGw0LjAxIDY0LjEyYy0xMC4yOSAyLjQxLTE5Ljg5IDYuNTItMjguNjIgMTEuOTVsLTQyLjYyLTQ4LjI5YzE5LjYtMTQuMTIgNDIuNDItMjMuNzEgNjcuMjMtMjcuNzh6bS0xMDMuNzcgNjQuMzNsNDguMyA0Mi42MWMtNS40NCA4LjczLTkuNTQgMTguMzMtMTEuOTYgMjguNjJsLTY0LjEyLTQuMDFjNC4wNy0yNC44MSAxMy42Ni00Ny42MiAyNy43OC02Ny4yMnptLTI3Ljc4IDExOC45bDY0LjEyLTQuMDFjMi40MSAxMC4yOSA2LjUyIDE5Ljg5IDExLjk1IDI4LjYybC00OC4yOSA0Mi42MmMtMTQuMTItMTkuNi0yMy43MS00Mi40Mi0yNy43OC02Ny4yM3ptMTMxLjU1IDEzMS41NWMtMjQuODEtNC4wNy00Ny42My0xMy42Ni02Ny4yMy0yNy43OGw0Mi42MS00OC4zYzguNzMgNS40NCAxOC4zMyA5LjU0IDI4LjYyIDExLjk2bC00IDY0LjEyek0yNTYgMjg4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0yNS44NCAxMjUuMzlsLTQuMDEtNjQuMTJjMTAuMjktMi40MSAxOS44OS02LjUyIDI4LjYyLTExLjk2bDQyLjYxIDQ4LjNjLTE5LjYgMTQuMTItNDIuNDEgMjMuNzEtNjcuMjIgMjcuNzh6bTEwMy43Ny02NC4zM2wtNDguMjktNDIuNjJjNS40NC04LjczIDkuNTQtMTguMzIgMTEuOTUtMjguNjJsNjQuMTIgNC4wMWMtNC4wNyAyNC44Mi0xMy42NiA0Ny42NC0yNy43OCA2Ny4yM3ptLTM2LjM0LTExNC44OWMtMi40MS0xMC4yOS02LjUyLTE5Ljg5LTExLjk2LTI4LjYybDQ4LjMtNDIuNjFjMTQuMTIgMTkuNiAyMy43MSA0Mi40MiAyNy43OCA2Ny4yM2wtNjQuMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhZ25vc2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyNTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTYtMTYgNy4yLTE2IDE2IDcuMiAxNiAxNiAxNnptLTE3Ni04MGM0OC41IDAgODgtMzkuNSA4OC04OFMzNjguNSAwIDMyMCAwcy04OCAzOS41LTg4IDg4IDM5LjUgODggODggODh6TTU5LjggMzY0YzEwLjIgMTUuMyAyOS4zIDE3LjggNDIuOSA5LjggMTYuMi05LjYgNTYuMi0zMS43IDEwNS4zLTQ4LjZWNDE2aDIyNHYtOTAuN2M0OS4xIDE2LjggODkuMSAzOSAxMDUuMyA0OC42IDEzLjYgOCAzMi43IDUuMyA0Mi45LTkuOGwxNy44LTI2LjdjOC44LTEzLjIgNy42LTM0LjYtMTAtNDUuMS0xMS45LTcuMS0yOS43LTE3LTUxLjEtMjcuNC0yOC4xIDQ2LjEtOTkuNCAxNy44LTg3LjctMzUuMUM0MDkuMyAyMTcuMiAzNjUuMSAyMDggMzIwIDIwOGMtNTcgMC0xMTIuOSAxNC41LTE2MCAzMi4yLS4yIDQwLjItNDcuNiA2My4zLTc5LjIgMzYtMTEuMiA2LTIxLjMgMTEuNi0yOC43IDE2LTE3LjYgMTAuNS0xOC44IDMxLjgtMTAgNDUuMUw1OS44IDM2NHpNMzY4IDM0NGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bS05Ni05NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bS0xNjAgOGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNi0xNiA3LjItMTYgMTYgNy4yIDE2IDE2IDE2em01MTIgMTkySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUQyMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDYuNzUgMjE1LjA2TDEuMiAzNzAuOTVjLTMuMDggNSAuMSAxMS41IDUuOTMgMTIuMTRsMjA4LjI2IDIyLjA3LTEwOC42NC0xOTAuMXpNNy40MSAzMTUuNDNMODIuNyAxOTMuMDggNi4wNiAxNDcuMWMtMi42Ny0xLjYtNi4wNi4zMi02LjA2IDMuNDN2MTYyLjgxYzAgNC4wMyA1LjI5IDUuNTMgNy40MSAyLjA5ek0xOC4yNSA0MjMuNmwxOTQuNCA4Ny42NmM1LjMgMi40NSAxMS4zNS0xLjQzIDExLjM1LTcuMjZ2LTY1LjY3bC0yMDMuNTUtMjIuM2MtNC40NS0uNS02LjIzIDUuNTktMi4yIDcuNTd6bTgxLjIyLTI1Ny43OEwxNzkuNCAyMi44OGM0LjM0LTcuMDYtMy41OS0xNS4yNS0xMC43OC0xMS4xNEwxNy44MSAxMTAuMzVjLTIuNDcgMS42Mi0yLjM5IDUuMjYuMTMgNi43OGw4MS41MyA0OC42OXpNMjQwIDE3NmgxMDkuMjFMMjUzLjYzIDcuNjJDMjUwLjUgMi41NCAyNDUuMjUgMCAyNDAgMHMtMTAuNSAyLjU0LTEzLjYzIDcuNjJMMTMwLjc5IDE3NkgyNDB6bTIzMy45NC0yOC45bC03Ni42NCA0NS45OSA3NS4yOSAxMjIuMzVjMi4xMSAzLjQ0IDcuNDEgMS45NCA3LjQxLTIuMVYxNTAuNTNjMC0zLjExLTMuMzktNS4wMy02LjA2LTMuNDN6bS05My40MSAxOC43Mmw4MS41My00OC43YzIuNTMtMS41MiAyLjYtNS4xNi4xMy02Ljc4bC0xNTAuODEtOTguNmMtNy4xOS00LjExLTE1LjEyIDQuMDgtMTAuNzggMTEuMTRsNzkuOTMgMTQyLjk0em03OS4wMiAyNTAuMjFMMjU2IDQzOC4zMnY2NS42N2MwIDUuODQgNi4wNSA5LjcxIDExLjM1IDcuMjZsMTk0LjQtODcuNjZjNC4wMy0xLjk3IDIuMjUtOC4wNi0yLjItNy41NnptLTg2LjMtMjAwLjk3bC0xMDguNjMgMTkwLjEgMjA4LjI2LTIyLjA3YzUuODMtLjY1IDkuMDEtNy4xNCA1LjkzLTEyLjE0TDM3My4yNSAyMTUuMDZ6TTI0MCAyMDhIMTM5LjU3TDI0MCAzODMuNzUgMzQwLjQzIDIwOEgyNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VENiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjIuMTkgMTA5Ljk1TDI1Ni4yMSA5LjA3Yy0xOS45MS0xMi4xLTQ0LjUyLTEyLjEtNjQuNDMgMEwyNS44MSAxMDkuOTVjLTUuMzIgMy4yMy01LjI5IDExLjI3LjA2IDE0LjQ2TDIyNCAyNDIuNTVsMTk4LjE0LTExOC4xNGM1LjM1LTMuMTkgNS4zOC0xMS4yMi4wNS0xNC40NnptMTMuODQgNDQuNjNMMjQwIDI3MS40NnYyMjMuODJjMCAxMi44OCAxMy4zOSAyMC45MSAyNC4wNSAxNC40M2wxNTIuMTYtOTIuNDhjMTkuNjgtMTEuOTYgMzEuNzktMzMuOTQgMzEuNzktNTcuN3YtMTk3LjdjMC02LjQxLTYuNjQtMTAuNDMtMTEuOTctNy4yNXpNMCAxNjEuODN2MTk3LjdjMCAyMy43NyAxMi4xMSA0NS43NCAzMS43OSA1Ny43bDE1Mi4xNiA5Mi40N2MxMC42NyA2LjQ4IDI0LjA1LTEuNTQgMjQuMDUtMTQuNDNWMjcxLjQ2TDExLjk3IDE1NC41OEM2LjY0IDE1MS40IDAgMTU1LjQyIDAgMTYxLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJINjRDMjguNjUgMzIgMCA2MC42NSAwIDk2djMyMGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDMyMGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0Vjk2YzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6TTEyOCAzODRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTAtMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem05NiA5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptOTYgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTAtMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRm91ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJINjRDMjguNjUgMzIgMCA2MC42NSAwIDk2djMyMGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDMyMGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0Vjk2YzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6TTEyOCAzODRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTAtMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xOTIgMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZU9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJINjRDMjguNjUgMzIgMCA2MC42NSAwIDk2djMyMGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDMyMGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0Vjk2YzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6TTIyNCAyODhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VTaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xOTIgMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlVGhyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem05NiA5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptOTYgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VUd28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xOTIgMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5MiAxOTJINDczLjI2YzEyLjY5IDI5LjU5IDcuMTIgNjUuMi0xNyA4OS4zMkwzMjAgNDE3LjU4VjQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDIyNGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjI0MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek00ODAgMzc2Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHptLTQ2LjM3LTE4Ni43TDI1OC43IDE0LjM3Yy0xOS4xNi0xOS4xNi01MC4yMy0xOS4xNi02OS4zOSAwTDE0LjM3IDE4OS4zYy0xOS4xNiAxOS4xNi0xOS4xNiA1MC4yMyAwIDY5LjM5TDE4OS4zIDQzMy42M2MxOS4xNiAxOS4xNiA1MC4yMyAxOS4xNiA2OS4zOSAwTDQzMy42MyAyNTguN2MxOS4xNi0xOS4xNyAxOS4xNi01MC4yNCAwLTY5LjR6TTk2IDI0OGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bTEyOCAxMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0wLTEyOGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bTAtMTI4Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHptMTI4IDEyOGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpZ2l0YWxUYWNob2dyYXBoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwOCA5NkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYyNTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxMjhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMzA0IDM1MmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LThjMC00LjQyIDMuNTgtOCA4LThoMjI0YzQuNDIgMCA4IDMuNTggOCA4djh6TTcyIDI4OHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhIODBjLTQuNDIgMC04LTMuNTgtOC04em02NCAwdi0xNmMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04em02NCAwdi0xNmMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04em02NCAwdi0xNmMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04em00MC02NGMwIDguODQtNy4xNiAxNi0xNiAxNkg4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTQ4YzAtOC44NCA3LjE2LTE2IDE2LTE2aDIwOGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY0OHptMjcyIDEyOGMwIDQuNDItMy41OCA4LTggOEgzNDRjLTQuNDIgMC04LTMuNTgtOC04di04YzAtNC40MiAzLjU4LTggOC04aDIyNGM0LjQyIDAgOCAzLjU4IDggOHY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaXJlY3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi42MSAyMzMuMzJMMjc4LjY4IDkuMzljLTEyLjUyLTEyLjUyLTMyLjgzLTEyLjUyLTQ1LjM2IDBMOS4zOSAyMzMuMzJjLTEyLjUyIDEyLjUzLTEyLjUyIDMyLjgzIDAgNDUuMzZsMjIzLjkzIDIyMy45M2MxMi41MiAxMi41MyAzMi44MyAxMi41MyA0NS4zNiAwbDIyMy45My0yMjMuOTNjMTIuNTItMTIuNTMgMTIuNTItMzIuODMgMC00NS4zNnptLTEwMC45OCAxMi41NmwtODQuMjEgNzcuNzNjLTUuMTIgNC43My0xMy40MyAxLjEtMTMuNDMtNS44OFYyNjRoLTk2djY0YzAgNC40Mi0zLjU4IDgtOCA4aC0zMmMtNC40MiAwLTgtMy41OC04LTh2LTgwYzAtMTcuNjcgMTQuMzMtMzIgMzItMzJoMTEydi01My43M2MwLTYuOTcgOC4zLTEwLjYxIDEzLjQzLTUuODhsODQuMjEgNzcuNzNjMy40MyAzLjE3IDMuNDMgOC41OSAwIDExLjc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaXNlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Mi4yOSAxOTUuOWwtNjcuMDYtMjNjLTE5LjI4LTYuNi0zMy41NC0yMC45Mi0zOC4xNC0zOC4zMWwtMTYtNjAuNDVjLTExLjU4LTQzLjc3LTc2LjU3LTU3LjEzLTExMC0yMi42MkwxOTUgOTkuMjRjLTEzLjI2IDEzLjcxLTMzLjU0IDIwLjkzLTU0LjIgMTkuMzFsLTcxLjktNS42MmMtNTItNC4wNy04Ni45MyA0NC44OS01OSA4Mi44NGwzOC41NCA1Mi40MmMxMS4wOCAxNS4wNyAxMi44MiAzMy44NiA0LjY0IDUwLjI0bC0yOC40MyA1N0M0IDM5Ni42NyA0Ny40NiA0NDAuMjkgOTguMTEgNDI5LjIzbDcwLTE1LjI4YzIwLjExLTQuMzkgNDEuNDUgMCA1Ny4wNyAxMS43M2w1NC4zMiA0MC44M2MzOS4zMiAyOS41NiAxMDEgNy41NyAxMDQuNDUtMzcuMjJsNC43LTYxLjg2YzEuMzUtMTcuOCAxMi44LTMzLjg3IDMwLjYzLTQzbDYyLTMxLjc0YzQ0Ljg0LTIyLjk2IDM5LjU1LTgwLjE3LTguOTktOTYuNzl6TTE2MCAyNTZhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTEyOCA5NmEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnptMTYtMTI4YTE2IDE2IDAgMSAxIDE2LTE2IDE2IDE2IDAgMCAxLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaXZpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDM1MmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHMyOC42NSA2NCA2NCA2NCA2NC0yOC42NSA2NC02NC0yOC42NS02NC02NC02NHptMC0xOTJjMzUuMzUgMCA2NC0yOC42NSA2NC02NHMtMjguNjUtNjQtNjQtNjQtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bTE5MiA0OEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaXp6eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tOTYgMjA2LjZsLTI4LjcgMjguN2MtMTQuOCAxNC44LTM3LjgtNy41LTIyLjYtMjIuNmwyOC43LTI4LjctMjguNy0yOC43Yy0xNS0xNSA3LjctMzcuNiAyMi42LTIyLjZsMjguNyAyOC43IDI4LjctMjguN2MxNS0xNSAzNy42IDcuNyAyMi42IDIyLjZMMTc0LjYgMTkybDI4LjcgMjguN2MxNS4yIDE1LjItNy45IDM3LjQtMjIuNiAyMi42TDE1MiAyMTQuNnpNMjQ4IDQxNmMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NCA2NCAyOC43IDY0IDY0LTI4LjcgNjQtNjQgNjR6bTE0Ny4zLTE5NS4zYzE1LjIgMTUuMi03LjkgMzcuNC0yMi42IDIyLjZMMzQ0IDIxNC42bC0yOC43IDI4LjdjLTE0LjggMTQuOC0zNy44LTcuNS0yMi42LTIyLjZsMjguNy0yOC43LTI4LjctMjguN2MtMTUtMTUgNy43LTM3LjYgMjIuNi0yMi42bDI4LjcgMjguNyAyOC43LTI4LjdjMTUtMTUgMzcuNiA3LjcgMjIuNiAyMi42TDM2Ni42IDE5MmwyOC43IDI4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURuYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMSA0OTQuMWMtMS4xIDkuNSA2LjMgMTcuOCAxNS45IDE3LjhsMzIuMy4xYzguMSAwIDE0LjktNS45IDE2LTEzLjkuNy00LjkgMS44LTExLjEgMy40LTE4LjFIMzgwYzEuNiA2LjkgMi45IDEzLjIgMy41IDE4LjEgMS4xIDggNy45IDE0IDE2IDEzLjlsMzIuMy0uMWM5LjYgMCAxNy4xLTguMyAxNS45LTE3LjgtNC42LTM3LjktMjUuNi0xMjktMTE4LjktMjA3LjctMTcuNiAxMi40LTM3LjEgMjQuMi01OC41IDM1LjQgNi4yIDQuNiAxMS40IDkuNCAxNyAxNC4ySDE1OS43YzIxLjMtMTguMSA0Ny0zNS42IDc4LjctNTEuNEM0MTAuNSAxOTkuMSA0NDIuMSA2NS44IDQ0Ny45IDE3LjkgNDQ5IDguNCA0NDEuNi4xIDQzMiAuMUwzOTkuNiAwYy04LjEgMC0xNC45IDUuOS0xNiAxMy45LS43IDQuOS0xLjggMTEuMS0zLjQgMTguMUg2Ny44Yy0xLjYtNy0yLjctMTMuMS0zLjQtMTguMS0xLjEtOC03LjktMTQtMTYtMTMuOUwxNi4xLjFDNi41LjEtMSA4LjQuMSAxNy45IDUuMyA2MC44IDMxLjQgMTcxLjggMTYwIDI1NiAzMS41IDM0MC4yIDUuMyA0NTEuMi4xIDQ5NC4xek0yMjQgMjE5LjZjLTI1LjEtMTMuNy00Ni40LTI4LjQtNjQuMy00My42aDEyOC41Yy0xNy44IDE1LjItMzkuMSAzMC02NC4yIDQzLjZ6TTM1NS4xIDk2Yy01LjggMTAuNC0xMi44IDIxLjEtMjEgMzJIMTE0Yy04LjMtMTAuOS0xNS4zLTIxLjYtMjEtMzJoMjYyLjF6TTkyLjkgNDE2YzUuOC0xMC40IDEyLjgtMjEuMSAyMS0zMmgyMTkuNGM4LjMgMTAuOSAxNS40IDIxLjYgMjEuMiAzMkg5Mi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4LjA2LDIyNCw0NDgsMjc3LjU1VjQ5NmExNiwxNiwwLDAsMS0xNiwxNkgzNjhhMTYsMTYsMCwwLDEtMTYtMTZWMzg0SDE5MlY0OTZhMTYsMTYsMCwwLDEtMTYsMTZIMTEyYTE2LDE2LDAsMCwxLTE2LTE2VjI4Mi4wOUM1OC44NCwyNjguODQsMzIsMjMzLjY2LDMyLDE5MmEzMiwzMiwwLDAsMSw2NCwwLDMyLjA2LDMyLjA2LDAsMCwwLDMyLDMyWk01NDQsMTEydjMyYTY0LDY0LDAsMCwxLTY0LDY0SDQ0OHYzNS41OEwzMjAsMTk3Ljg3VjQ4YzAtMTQuMjUsMTcuMjItMjEuMzksMjcuMzEtMTEuMzFMMzc0LjU5LDY0aDUzLjYzYzEwLjkxLDAsMjMuNzUsNy45MiwyOC42MiwxNy42OUw0NjQsOTZoNjRBMTYsMTYsMCwwLDEsNTQ0LDExMlptLTExMiwwYTE2LDE2LDAsMSwwLTE2LDE2QTE2LDE2LDAsMCwwLDQzMiwxMTJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvbGxhclNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA5LjIgMjMzLjRsLTEwOC0zMS42Qzg4LjcgMTk4LjIgODAgMTg2LjUgODAgMTczLjVjMC0xNi4zIDEzLjItMjkuNSAyOS41LTI5LjVoNjYuM2MxMi4yIDAgMjQuMiAzLjcgMzQuMiAxMC41IDYuMSA0LjEgMTQuMyAzLjEgMTkuNS0ybDM0LjgtMzRjNy4xLTYuOSA2LjEtMTguNC0xLjgtMjQuNUMyMzggNzQuOCAyMDcuNCA2NC4xIDE3NiA2NFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhoLTIuNUM0NS44IDY0LTUuNCAxMTguNy41IDE4My42YzQuMiA0Ni4xIDM5LjQgODMuNiA4My44IDk2LjZsMTAyLjUgMzBjMTIuNSAzLjcgMjEuMiAxNS4zIDIxLjIgMjguMyAwIDE2LjMtMTMuMiAyOS41LTI5LjUgMjkuNWgtNjYuM0MxMDAgMzY4IDg4IDM2NC4zIDc4IDM1Ny41Yy02LjEtNC4xLTE0LjMtMy4xLTE5LjUgMmwtMzQuOCAzNGMtNy4xIDYuOS02LjEgMTguNCAxLjggMjQuNSAyNC41IDE5LjIgNTUuMSAyOS45IDg2LjUgMzB2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtNDguMmM0Ni42LS45IDkwLjMtMjguNiAxMDUuNy03Mi43IDIxLjUtNjEuNi0xNC42LTEyNC44LTcyLjUtMTQxLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvbGx5RmxhdGJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMzIwaDM4NGM4LjggMCAxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2SDQ0OHYxMjhsLTQ4LTMyLTQ4IDMyVjMySDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djI1NmMwIDguOCA3LjIgMTYgMTYgMTZ6bTQxNiA2NEgxMjhWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDE2QzcuMiAwIDAgNy4yIDAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djM2OGMwIDguOCA3LjIgMTYgMTYgMTZoODIuOWMtMS44IDUtMi45IDEwLjQtMi45IDE2IDAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC01LjYtMS4yLTExLTIuOS0xNkg0NTFjLTEuOCA1LTIuOSAxMC40LTIuOSAxNiAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEuMi0xMS0yLjktMTZINjI0YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2xseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTQuMiAyNzcuN2MxOCA1IDM0LjcgMTMuNCA0OS41IDI0LjdsMTYxLjUtNTMuOGM4LjQtMi44IDEyLjktMTEuOSAxMC4xLTIwLjJMNDU0LjkgNDcuMmMtMi44LTguNC0xMS45LTEyLjktMjAuMi0xMC4xbC02MS4xIDIwLjQgMzMuMSA5OS40TDM0NiAxNzdsLTMzLjEtOTkuNC02MS42IDIwLjVjLTguNCAyLjgtMTIuOSAxMS45LTEwLjEgMjAuMmw1MyAxNTkuNHptMjgxIDQ4LjdMNTY1IDI5NmMtMi44LTguNC0xMS45LTEyLjktMjAuMi0xMC4xbC0yMTMuNSA3MS4yYy0xNy4yLTIyLTQzLjYtMzYuNC03My41LTM3TDE1OC40IDIxLjlDMTU0IDguOCAxNDEuOCAwIDEyOCAwSDE2QzcuMiAwIDAgNy4yIDAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDg4LjlsOTIuMiAyNzYuN2MtMjYuMSAyMC40LTQxLjcgNTMuNi0zNiA5MC41IDYuMSAzOS40IDM3LjkgNzIuMyA3Ny4zIDc5LjIgNjAuMiAxMC43IDExMi4zLTM0LjggMTEzLjQtOTIuNmwyMTMuMy03MS4yYzguMy0yLjggMTIuOS0xMS44IDEwLjEtMjAuMnpNMjU2IDQ2NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvbmF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDE2YzExNC45IDAgMjA4LTkzLjEgMjA4LTIwOFMzNzAuOSAwIDI1NiAwIDQ4IDkzLjEgNDggMjA4czkzLjEgMjA4IDIwOCAyMDh6TTIzMy44IDk3LjRWODAuNmMwLTkuMiA3LjQtMTYuNiAxNi42LTE2LjZoMTEuMWM5LjIgMCAxNi42IDcuNCAxNi42IDE2LjZ2MTdjMTUuNS44IDMwLjUgNi4xIDQzIDE1LjQgNS42IDQuMSA2LjIgMTIuMyAxLjIgMTcuMUwzMDYgMTQ1LjZjLTMuOCAzLjctOS41IDMuOC0xNCAxLTUuNC0zLjQtMTEuNC01LjEtMTcuOC01LjFoLTM4LjljLTkgMC0xNi4zIDguMi0xNi4zIDE4LjMgMCA4LjIgNSAxNS41IDEyLjEgMTcuNmw2Mi4zIDE4LjdjMjUuNyA3LjcgNDMuNyAzMi40IDQzLjcgNjAuMSAwIDM0LTI2LjQgNjEuNS01OS4xIDYyLjR2MTYuOGMwIDkuMi03LjQgMTYuNi0xNi42IDE2LjZoLTExLjFjLTkuMiAwLTE2LjYtNy40LTE2LjYtMTYuNnYtMTdjLTE1LjUtLjgtMzAuNS02LjEtNDMtMTUuNC01LjYtNC4xLTYuMi0xMi4zLTEuMi0xNy4xbDE2LjMtMTUuNWMzLjgtMy43IDkuNS0zLjggMTQtMSA1LjQgMy40IDExLjQgNS4xIDE3LjggNS4xaDM4LjljOSAwIDE2LjMtOC4yIDE2LjMtMTguMyAwLTguMi01LTE1LjUtMTIuMS0xNy42bC02Mi4zLTE4LjdjLTI1LjctNy43LTQzLjctMzIuNC00My43LTYwLjEuMS0zNCAyNi40LTYxLjUgNTkuMS02Mi40ek00ODAgMzUyaC0zMi41Yy0xOS42IDI2LTQ0LjYgNDcuNy03MyA2NGg2My44YzUuMyAwIDkuNiAzLjYgOS42IDh2MTZjMCA0LjQtNC4zIDgtOS42IDhINzMuNmMtNS4zIDAtOS42LTMuNi05LjYtOHYtMTZjMC00LjQgNC4zLTggOS42LThoNjMuOGMtMjguNC0xNi4zLTUzLjMtMzgtNzMtNjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMnYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvb3JDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQ0OEg1MTJWNTAuOEM1MTIgMjIuNzggNDkwLjQ3IDAgNDY0IDBIMTc1Ljk5Yy0yNi40NyAwLTQ4IDIyLjc4LTQ4IDUwLjhWNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00MTUuOTkgMjg4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyYy4wMSAxNy42Ny0xNC4zMiAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9vck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQ0OGgtODBWMTEzLjQ1QzU0NCA4Ni4xOSA1MjIuNDcgNjQgNDk2IDY0SDM4NHY2NGg5NnYzODRoMTQ0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNMzEyLjI0IDEuMDFsLTE5MiA0OS43NEMxMDUuOTkgNTQuNDQgOTYgNjcuNyA5NiA4Mi45MlY0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMzNlYzMy4xOGMwLTIxLjU4LTE5LjU2LTM3LjQxLTM5Ljc2LTMyLjE3ek0yNjQgMjg4Yy0xMy4yNSAwLTI0LTE0LjMzLTI0LTMyczEwLjc1LTMyIDI0LTMyIDI0IDE0LjMzIDI0IDMyLTEwLjc1IDMyLTI0IDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3RDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em04MCAyNDhjMCA0NC4xMTItMzUuODg4IDgwLTgwIDgwcy04MC0zNS44ODgtODAtODAgMzUuODg4LTgwIDgwLTgwIDgwIDM1Ljg4OCA4MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTY3LjJ2LTI4LjFjLTI4LjItMzYuMy00Ny4xLTc5LjMtNTQuMS0xMjUuMi0yLjEtMTMuNS0xOS0xOC44LTI3LjgtOC4zLTIxLjEgMjQuOS0zNy43IDU0LjEtNDguOSA4Ni41IDM0LjIgMzguMyA4MCA2NC42IDEzMC44IDc1LjF6TTQwMCA2NGMtNDQuMiAwLTgwIDM1LjktODAgODAuMXY1OS40QzIxNS42IDE5Ny4zIDEyNyAxMzMgODcgNDEuOGMtNS41LTEyLjUtMjMuMi0xMy4yLTI5LS45QzQxLjQgNzYgMzIgMTE1LjIgMzIgMTU2LjZjMCA3MC44IDM0LjEgMTM2LjkgODUuMSAxODUuOSAxMy4yIDEyLjcgMjYuMSAyMy4yIDM4LjkgMzIuOGwtMTQzLjkgMzZDMS40IDQxNC0zLjQgNDI2LjQgMi42IDQzNS43IDIwIDQ2Mi42IDYzIDUwOC4yIDE1NS44IDUxMmM4IC4zIDE2LTIuNiAyMi4xLTcuOWw2NS4yLTU2LjFIMzIwYzg4LjQgMCAxNjAtNzEuNSAxNjAtMTU5LjlWMTI4bDMyLTY0SDQwMHptMCA5Ni4xYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNiAwaDgwYzEzLjMgMCAyNCAxMC43IDI0IDI0djE2OGg4Ny43YzE3LjggMCAyNi43IDIxLjUgMTQuMSAzNC4xTDI2OS43IDM3OC4zYy03LjUgNy41LTE5LjggNy41LTI3LjMgMEw5MC4xIDIyNi4xYy0xMi42LTEyLjYtMy43LTM0LjEgMTQuMS0zNC4xSDE5MlYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHptMjk2IDM3NnYxMTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjM3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxNDYuN2w0OSA0OWMyMC4xIDIwLjEgNTIuNSAyMC4xIDcyLjYgMGw0OS00OUg0ODhjMTMuMyAwIDI0IDEwLjcgMjQgMjR6bS0xMjQgODhjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHptNjQgMGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjAgOSAyMCAyMCAyMCAyMC05IDIwLTIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmFmdGluZ0NvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU3LjAxIDM0NC40MmMtMjUuMDUgMjAuMzMtNTIuNjMgMzcuMTgtODIuNTQgNDkuMDVsNTQuMzggOTQuMTkgNTMuOTUgMjMuMDRjOS44MSA0LjE5IDIwLjg5LTIuMjEgMjIuMTctMTIuOGw3LjAyLTU4LjI1LTU0Ljk4LTk1LjIzem00Mi40OS05NC41NmM0Ljg2LTcuNjcgMS44OS0xNy45OS02LjA1LTIyLjM5bC0yOC4wNy0xNS41N2MtNy40OC00LjE1LTE2LjYxLTEuNDYtMjEuMjYgNS43MkM0MDMuMDEgMjgxLjE1IDMzMi4yNSAzMjAgMjU2IDMyMGMtMjMuOTMgMC00Ny4yMy00LjI1LTY5LjQxLTExLjUzbDY3LjM2LTExNi42OGMuNy4wMiAxLjM0LjIxIDIuMDQuMjFzMS4zNS0uMTkgMi4wNC0uMjFsNTEuMDkgODguNWMzMS4yMy04Ljk2IDU5LjU2LTI1Ljc1IDgyLjYxLTQ4LjkybC01MS43OS04OS43MUMzNDcuMzkgMTI4LjAzIDM1MiAxMTIuNjMgMzUyIDk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZzLTk2IDQyLjk4LTk2IDk2YzAgMTYuNjMgNC42MSAzMi4wMyAxMi4wNSA0NS42NmwtNjguMyAxMTguMzFjLTEyLjU1LTExLjYxLTIzLjk2LTI0LjU5LTMzLjY4LTM5LTQuNzktNy4xLTEzLjk3LTkuNjItMjEuMzgtNS4zM2wtMjcuNzUgMTYuMDdjLTcuODUgNC41NC0xMC42MyAxNC45LTUuNjQgMjIuNDcgMTUuNTcgMjMuNjQgMzQuNjkgNDQuMjEgNTUuOTggNjIuMDJMMCA0MzkuNjZsNy4wMiA1OC4yNWMxLjI4IDEwLjU5IDEyLjM2IDE2Ljk5IDIyLjE3IDEyLjhsNTMuOTUtMjMuMDQgNzAuOC0xMjIuNjNDMTg2LjEzIDM3Ny4yOCAyMjAuNjIgMzg0IDI1NiAzODRjOTkuMDUgMCAxOTAuODgtNTEuMDEgMjQzLjUtMTM0LjE0ek0yNTYgNjRjMTcuNjcgMCAzMiAxNC4zMyAzMiAzMnMtMTQuMzMgMzItMzIgMzItMzItMTQuMzMtMzItMzIgMTQuMzMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyYWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zMiAyNTUuNzhMMTkyIDIyMy45NmwtOTEuMjggNjguNjljLTEwLjA4IDEwLjA4LTIuOTQgMjcuMzEgMTEuMzEgMjcuMzFoMjIyLjdjLTkuNDQtMjYuNC0xNC43My01NC40Ny0xNC43My04My4zOHYtNDIuMjdsLTExOS43My04Ny42Yy0yMy44Mi0xNS44OC01NS4yOS0xNC4wMS03Ny4wNiA0LjU5TDUuODEgMjI3LjY0Yy0xMi4zOCAxMC4zMy0zLjQ1IDMwLjQyIDEyLjUxIDI4LjE0em01NTYuODcgMzQuMWwtMTAwLjY2LTUwLjMxQTQ3Ljk5MiA0Ny45OTIgMCAwIDEgNDQ4IDE5Ni42NXYtMzYuNjloNjRsMjguMDkgMjIuNjNjNiA2IDE0LjE0IDkuMzcgMjIuNjMgOS4zN2gzMC45N2EzMiAzMiAwIDAgMCAyOC42Mi0xNy42OWwxNC4zMS0yOC42MmEzMi4wMDUgMzIuMDA1IDAgMCAwLTMuMDItMzMuNTFsLTc0LjUzLTk5LjM4QzU1My4wMiA0LjcgNTQzLjU0IDAgNTMzLjQ3IDBIMjk2LjAyYy03LjEzIDAtMTAuNyA4LjU3LTUuNjYgMTMuNjFMMzUyIDYzLjk2IDI5Mi40MiA4OC44Yy01LjkgMi45NS01LjkgMTEuMzYgMCAxNC4zMUwzNTIgMTI3Ljk2djEwOC42MmMwIDcyLjA4IDM2LjAzIDEzOS4zOSA5NiAxNzkuMzgtMTk1LjU5IDYuODEtMzQ0LjU2IDQxLjAxLTQzNC4xIDYwLjkxQzUuNzggNDc4LjY3IDAgNDg1Ljg4IDAgNDk0LjIgMCA1MDQgNy45NSA1MTIgMTcuNzYgNTEyaDQ5OS4wOGM2My4yOS4wMSAxMTkuNjEtNDcuNTYgMTIyLjk5LTExMC43NiAyLjUyLTQ3LjI4LTIyLjczLTkwLjQtNjQuNjQtMTExLjM2ek00ODkuMTggNjYuMjVsNDUuNjUgMTEuNDFjLTIuNzUgMTAuOTEtMTIuNDcgMTguODktMjQuMTMgMTguMjYtMTIuOTYtLjcxLTI1Ljg1LTEyLjUzLTIxLjUyLTI5LjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmF3UG9seWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzUyYy0uMzUgMC0uNjcuMS0xLjAyLjFsLTM5LjItNjUuMzJjNS4wNy05LjE3IDguMjItMTkuNTYgOC4yMi0zMC43OHMtMy4xNC0yMS42MS04LjIyLTMwLjc4bDM5LjItNjUuMzJjLjM1LjAxLjY3LjEgMS4wMi4xIDM1LjM1IDAgNjQtMjguNjUgNjQtNjRzLTI4LjY1LTY0LTY0LTY0Yy0yMy42MyAwLTQ0LjA0IDEyLjk1LTU1LjEyIDMySDExOS4xMkMxMDguMDQgNDQuOTUgODcuNjMgMzIgNjQgMzIgMjguNjUgMzIgMCA2MC42NSAwIDk2YzAgMjMuNjMgMTIuOTUgNDQuMDQgMzIgNTUuMTJ2MjA5Ljc1QzEyLjk1IDM3MS45NiAwIDM5Mi4zNyAwIDQxNmMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0IDIzLjYzIDAgNDQuMDQtMTIuOTUgNTUuMTItMzJoMjA5Ljc1YzExLjA5IDE5LjA1IDMxLjQ5IDMyIDU1LjEyIDMyIDM1LjM1IDAgNjQtMjguNjUgNjQtNjQgLjAxLTM1LjM1LTI4LjY0LTY0LTYzLjk5LTY0em0tMjg4IDguODhWMTUxLjEyQTYzLjgyNSA2My44MjUgMCAwIDAgMTE5LjEyIDEyOGgyMDguMzZsLTM4LjQ2IDY0LjFjLS4zNS0uMDEtLjY3LS4xLTEuMDItLjEtMzUuMzUgMC02NCAyOC42NS02NCA2NHMyOC42NSA2NCA2NCA2NGMuMzUgMCAuNjctLjEgMS4wMi0uMWwzOC40NiA2NC4xSDExOS4xMkE2My43NDggNjMuNzQ4IDAgMCAwIDk2IDM2MC44OHpNMjcyIDI1NmMwLTguODIgNy4xOC0xNiAxNi0xNnMxNiA3LjE4IDE2IDE2LTcuMTggMTYtMTYgMTYtMTYtNy4xOC0xNi0xNnpNNDAwIDk2YzAgOC44Mi03LjE4IDE2LTE2IDE2cy0xNi03LjE4LTE2LTE2IDcuMTgtMTYgMTYtMTYgMTYgNy4xOCAxNiAxNnpNNjQgODBjOC44MiAwIDE2IDcuMTggMTYgMTZzLTcuMTggMTYtMTYgMTYtMTYtNy4xOC0xNi0xNiA3LjE4LTE2IDE2LTE2ek00OCA0MTZjMC04LjgyIDcuMTgtMTYgMTYtMTZzMTYgNy4xOCAxNiAxNi03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTZ6bTMzNiAxNmMtOC44MiAwLTE2LTcuMTgtMTYtMTZzNy4xOC0xNiAxNi0xNiAxNiA3LjE4IDE2IDE2LTcuMTggMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW1TdGVlbHBhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJDMTI4Ljk0IDMyIDAgODkuMzEgMCAxNjB2MTkyYzAgNzAuNjkgMTI4Ljk0IDEyOCAyODggMTI4czI4OC01Ny4zMSAyODgtMTI4VjE2MGMwLTcwLjY5LTEyOC45NC0xMjgtMjg4LTEyOHptLTgyLjk5IDE1OC4zNmMtNC40NSAxNi42MS0xNC41NCAzMC41Ny0yOC4zMSA0MC40OEMxMDAuMjMgMjE3LjQ2IDQ4IDE5MC43OCA0OCAxNjBjMC0zMC4xNiA1MC4xMS01Ni4zOSAxMjQuMDQtNzAuMDNsMjUuNiA0NC4zNGM5Ljg2IDE3LjA5IDEyLjQ4IDM2Ljk5IDcuMzcgNTYuMDV6TTI4OCAyNDBjLTIxLjA4IDAtNDEuNDEtMS02MC44OS0yLjcgOC4wNi0yNi4xMyAzMi4xNS00NS4zIDYwLjg5LTQ1LjNzNTIuODMgMTkuMTcgNjAuODkgNDUuM0MzMjkuNDEgMjM5IDMwOS4wOCAyNDAgMjg4IDI0MHptNjQtMTQ0YzAgMzUuMjktMjguNzEgNjQtNjQgNjRzLTY0LTI4LjcxLTY0LTY0VjgyLjk2YzIwLjQtMS44OCA0MS44LTIuOTYgNjQtMi45NnM0My42IDEuMDggNjQgMi45NlY5NnptNDYuOTMgMTM0LjljLTEzLjgxLTkuOTEtMjMuOTQtMjMuOS0yOC40LTQwLjU0LTUuMTEtMTkuMDYtMi40OS0zOC45NiA3LjM4LTU2LjA0bDI1LjY1LTQ0LjQyQzQ3Ny43MiAxMDMuNSA1MjggMTI5Ljc5IDUyOCAxNjBjMCAzMC44My01Mi40IDU3LjU0LTEyOS4wNyA3MC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMS4zNCAxMjIuMDVsNzMuNTMtNDcuNDJhMTYgMTYgMCAwIDAgNC40NC0yMi4xOWwtOC44Ny0xMy4zMWExNiAxNiAwIDAgMC0yMi4xOS00LjQ0bC0xMTAuMDYgNzFDMzE4LjQzIDk2LjkxIDI3MS4yMiA5NiAyNTYgOTYgMjE5LjU1IDk2IDAgMTAwLjU1IDAgMjA4LjE1djE2MC4yM2MwIDMwLjI3IDI3LjUgNTcuNjggNzIgNzcuODZ2LTEwMS45YTI0IDI0IDAgMSAxIDQ4IDB2MTE4LjkzYzMzLjA1IDkuMTEgNzEuMDcgMTUuMDYgMTEyIDE2LjczVjM3Ni4zOWEyNCAyNCAwIDEgMSA0OCAwVjQ4MGM0MC45My0xLjY3IDc4Ljk1LTcuNjIgMTEyLTE2LjczVjM0NC4zNGEyNCAyNCAwIDEgMSA0OCAwdjEwMS45YzQ0LjUtMjAuMTggNzItNDcuNTkgNzItNzcuODZWMjA4LjE1YzAtNDMuMzItMzUuNzYtNjkuNzYtODAuNjYtODYuMXpNMjU2IDI3Mi4yNGMtMTE0Ljg4IDAtMjA4LTI4LjY5LTIwOC02NC4wOXM5My4xMi02NC4wOCAyMDgtNjQuMDhjMTcuMTUgMCAzMy43My43MSA0OS42OCAxLjkxbC03Mi44MSA0N2ExNiAxNiAwIDAgMC00LjQzIDIyLjE5bDguODcgMTMuMzFhMTYgMTYgMCAwIDAgMjIuMTkgNC40NGwxMTguNjQtNzYuNTJDNDMwLjA5IDE2OCA0NjQgMTg2Ljg0IDQ2NCAyMDguMTVjMCAzNS40LTkzLjEzIDY0LjA5LTIwOCA2NC4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1bXN0aWNrQml0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjIuOCA0OS41N2ExNjkuNDQgMTY5LjQ0IDAgMCAwLTIzOS41IDBDMTg3LjgyIDg1IDE2MC4xMyAxMjggMTYwLjEzIDE5MnY4NS44M2wtNDAuNjIgNDAuNTljLTkuNyA5LjY5LTI0IDExLjA3LTM2Ljc4IDZhNjAuMzMgNjAuMzMgMCAwIDAtNjUgOTguNzJDMzMgNDM4LjM5IDU0LjI0IDQ0Mi43IDczLjg1IDQzOC4yMWMtNC41IDE5LjYtLjE4IDQwLjgzIDE1LjEgNTYuMWE2MC4zNSA2MC4zNSAwIDAgMCA5OC44LTY1Yy01LjA5LTEyLjczLTMuNzItMjcgNi0zNi43NUwyMzQuMzYgMzUyaDg1Ljg5YTE4Ny44NyAxODcuODcgMCAwIDAgNjEuODktMTBjLTM5LjY0LTQzLjg5LTM5LjgzLTExMC4yMyAxLjA1LTE1MS4wNyAzNC4zOC0zNC4zNiA4Ni43Ni0zOS40NiAxMjguNzQtMTYuOCAxLjMtNDQuOTYtMTQuODEtOTAuMjgtNDkuMTMtMTI0LjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEdW1iYmVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQgOTZINTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0djEwNEg4Yy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDI0djEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTUyOCAxMjhoLTI0VjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI3MmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyODhoMjRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6TTQ1NiAzMmgtNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE2OEgyNTZWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0MDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjg4aDEyOHYxNjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUR1bXBzdGVyRmlyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTguNyAxMDQuMWwuMi0uMi0xNC40LTcySDMwNHYxMjhoNjAuOGMxNi4yLTE5LjMgMzQuMi0zOC4yIDUzLjktNTUuOHpNMjcyIDMySDE3MS41bC0yNS42IDEyOEgyNzJWMzJ6bTE4OS4zIDcyLjFjMTguMiAxNi4zIDM1LjUgMzMuNyA1MS4xIDUxLjUgNS43LTUuNiAxMS40LTExLjEgMTcuMy0xNi4zbDIxLjMtMTkgMjEuMyAxOWMxLjEuOSAyLjEgMi4xIDMuMSAzLjEtLjEtLjguMi0xLjUgMC0yLjNsLTI0LTk2QzU0OS43IDM3IDU0My4zIDMyIDUzNiAzMmgtOTguOWwxMi4zIDYxLjUgMTEuOSAxMC42ek0xNiAxNjBoOTcuM2wyNS42LTEyOEg0MGMtNy4zIDAtMTMuNyA1LTE1LjUgMTIuMWwtMjQgOTZDLTIgMTUwLjIgNS42IDE2MCAxNiAxNjB6bTMyNC42IDMySDMybDQgMzJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMjhsMjAgMTYwdjE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTE2aDIwOC44Yy0zMC4yLTMzLjctNDguOC03Ny45LTQ4LjgtMTI2LjQgMC0zNS45IDE5LjktODIuOSA1Mi42LTEyOS42em0yMTAuNS0yOC44Yy0xNC45IDEzLjMtMjguMyAyNy4yLTQwLjIgNDEuMi0xOS41LTI1LjgtNDMuNi01Mi03MS03Ni40LTcwLjIgNjIuNy0xMjAgMTQ0LjMtMTIwIDE5My42IDAgODcuNSA3MS42IDE1OC40IDE2MCAxNTguNHMxNjAtNzAuOSAxNjAtMTU4LjRjLjEtMzYuNi0zNy0xMTIuMi04OC44LTE1OC40em0tMTguNiAyMjkuNGMtMTQuNyAxMC43LTMyLjkgMTctNTIuNSAxNy00OSAwLTg4LjktMzMuNS04OC45LTg4IDAtMjcuMSAxNi41LTUxIDQ5LjQtOTEuOSA0LjcgNS42IDY3LjEgODguMSA2Ny4xIDg4LjFsMzkuOC00N2MyLjggNC44IDUuNCA5LjUgNy43IDE0IDE4LjYgMzYuNyAxMC44IDgzLjYtMjIuNiAxMDcuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVtcHN0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYwIDE2MGMxMC40IDAgMTgtOS44IDE1LjUtMTkuOWwtMjQtOTZDNTQ5LjcgMzcgNTQzLjMgMzIgNTM2IDMyaC05OC45bDI1LjYgMTI4SDU2MHpNMjcyIDMySDE3MS41bC0yNS42IDEyOEgyNzJWMzJ6bTEzMi41IDBIMzA0djEyOGgxMjYuMUw0MDQuNSAzMnpNMTYgMTYwaDk3LjNsMjUuNi0xMjhINDBjLTcuMyAwLTEzLjcgNS0xNS41IDEyLjFsLTI0IDk2Qy0yIDE1MC4yIDUuNiAxNjAgMTYgMTYwem01NDQgNjRoLTIwbDQtMzJIMzJsNCAzMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgyOGwyMCAxNjB2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMzIwdjE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTE2bDIwLTE2MGgyOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVuZ2VvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjguNzMgMTk1LjMybC04Mi44MS01MS43NmMtOC4wNC01LjAyLTE4Ljk5LTIuMTctMjIuOTMgNi40NUEyNTQuMTkgMjU0LjE5IDAgMCAwIC41NCAyMzkuMjhDLS4wNSAyNDguMzcgNy41OSAyNTYgMTYuNjkgMjU2aDk3LjEzYzcuOTYgMCAxNC4wOC02LjI1IDE1LjAxLTE0LjE2IDEuMDktOS4zMyAzLjI0LTE4LjMzIDYuMjQtMjYuOTQgMi41Ni03LjM0LjI1LTE1LjQ2LTYuMzQtMTkuNTh6TTMxOS4wMyA4QzI5OC44NiAyLjgyIDI3Ny43NyAwIDI1NiAwcy00Mi44NiAyLjgyLTYzLjAzIDhjLTkuMTcgMi4zNS0xMy45MSAxMi42LTEwLjM5IDIxLjM5bDM3LjQ3IDEwNC4wM0ExNi4wMDMgMTYuMDAzIDAgMCAwIDIzNS4xIDE0NGg0MS44YzYuNzUgMCAxMi43Ny00LjIzIDE1LjA1LTEwLjU4bDM3LjQ3LTEwNC4wM2MzLjUyLTguNzktMS4yMi0xOS4wMy0xMC4zOS0yMS4zOXpNMTEyIDI4OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em0wIDEyOEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em03Ny4zMS0yODMuNjdsLTM2LjMyLTkwLjhjLTMuNTMtOC44My0xNC4xMy0xMi45OS0yMi40Mi04LjMxYTI1Ny4zMDggMjU3LjMwOCAwIDAgMC03MS42MSA1OS44OWMtNi4wNiA3LjMyLTMuODUgMTguNDggNC4yMiAyMy41Mmw4Mi45MyA1MS44M2M2LjUxIDQuMDcgMTQuNjYgMi42MiAyMC4xMS0yLjc5IDUuMTgtNS4xNSAxMC43OS05Ljg1IDE2Ljc5LTE0LjA1IDYuMjgtNC40MSA5LjE1LTEyLjE3IDYuMy0xOS4yOXpNMzk4LjE4IDI1Nmg5Ny4xM2M5LjEgMCAxNi43NC03LjYzIDE2LjE1LTE2LjcyYTI1NC4xMzUgMjU0LjEzNSAwIDAgMC0yMi40NS04OS4yN2MtMy45NC04LjYyLTE0Ljg5LTExLjQ3LTIyLjkzLTYuNDVsLTgyLjgxIDUxLjc2Yy02LjU5IDQuMTItOC45IDEyLjI0LTYuMzQgMTkuNTggMy4wMSA4LjYxIDUuMTUgMTcuNjIgNi4yNCAyNi45NC45MyA3LjkxIDcuMDUgMTQuMTYgMTUuMDEgMTQuMTZ6bTU0Ljg1LTE2Mi44OWEyNTcuMzA4IDI1Ny4zMDggMCAwIDAtNzEuNjEtNTkuODljLTguMjgtNC42OC0xOC44OC0uNTItMjIuNDIgOC4zMWwtMzYuMzIgOTAuOGMtMi44NSA3LjEyLjAyIDE0Ljg4IDYuMyAxOS4yOCA2IDQuMiAxMS42MSA4LjkgMTYuNzkgMTQuMDUgNS40NCA1LjQxIDEzLjYgNi44NiAyMC4xMSAyLjc5bDgyLjkzLTUxLjgzYzguMDctNS4wMyAxMC4yOS0xNi4xOSA0LjIyLTIzLjUxek00OTYgMjg4aC05NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em0wIDEyOGgtOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnpNMjQwIDE3Ny42MlY0NzJjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LThWMTc3LjYyYy01LjIzLS44OS0xMC41Mi0xLjYyLTE2LTEuNjJzLTEwLjc3LjczLTE2IDEuNjJ6bS02NCA0MS41MVY0NzJjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LThWMTg5LjM2Yy0xMi43OCA3LjQ1LTIzLjg0IDE3LjQ3LTMyIDI5Ljc3em0xMjgtMjkuNzdWNDcyYzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04VjIxOS4xM2MtOC4xNi0xMi4zLTE5LjIyLTIyLjMyLTMyLTI5Ljc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMi42IDgzLjJsOTAuMiA5MC4yYzMuOCAzLjggMy44IDEwIDAgMTMuOEwyNzQuNCA0MDUuNmwtOTIuOCAxMC4zYy0xMi40IDEuNC0yMi45LTkuMS0yMS41LTIxLjVsMTAuMy05Mi44TDM4OC44IDgzLjJjMy44LTMuOCAxMC0zLjggMTMuOCAwem0xNjItMjIuOWwtNDguOC00OC44Yy0xNS4yLTE1LjItMzkuOS0xNS4yLTU1LjIgMGwtMzUuNCAzNS40Yy0zLjggMy44LTMuOCAxMCAwIDEzLjhsOTAuMiA5MC4yYzMuOCAzLjggMTAgMy44IDEzLjggMGwzNS40LTM1LjRjMTUuMi0xNS4zIDE1LjItNDAgMC01NS4yek0zODQgMzQ2LjJWNDQ4SDY0VjEyOGgyMjkuOGMzLjIgMCA2LjItMS4zIDguNS0zLjVsNDAtNDBjNy42LTcuNiAyLjItMjAuNS04LjUtMjAuNUg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNi4yYzAtMTAuNy0xMi45LTE2LTIwLjUtOC41bC00MCA0MGMtMi4yIDIuMy0zLjUgNS4zLTMuNSA4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVnZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMEM4NiAwIDAgMjE0IDAgMzIwczg2IDE5MiAxOTIgMTkyIDE5Mi04NiAxOTItMTkyUzI5OCAwIDE5MiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFamVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzg0djY0YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMkgzMmMtMTcuNjczIDAtMzItMTQuMzI3LTMyLTMydi02NGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJoMzg0YzE3LjY3MyAwIDMyIDE0LjMyNyAzMiAzMnpNNDguMDUzIDMyMGgzNTEuODg2YzQxLjY1MSAwIDYzLjU4MS00OS42NzQgMzUuMzgzLTgwLjQzNUwyNTkuMzgzIDQ3LjU1OGMtMTkuMDE0LTIwLjc0My01MS43NTEtMjAuNzQ0LTcwLjc2NyAwTDEyLjY3IDIzOS41NjVDLTE1LjQ3NSAyNzAuMjY4IDYuMzI0IDMyMCA0OC4wNTMgMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxpcHNpc0ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI4IDI1NmMwIDM5LjgtMzIuMiA3Mi03MiA3MnMtNzItMzIuMi03Mi03MiAzMi4yLTcyIDcyLTcyIDcyIDMyLjIgNzIgNzJ6bTEwNC03MmMtMzkuOCAwLTcyIDMyLjItNzIgNzJzMzIuMiA3MiA3MiA3MiA3Mi0zMi4yIDcyLTcyLTMyLjItNzItNzItNzJ6bS0zNTIgMGMtMzkuOCAwLTcyIDMyLjItNzIgNzJzMzIuMiA3MiA3MiA3MiA3Mi0zMi4yIDcyLTcyLTMyLjItNzItNzItNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVsbGlwc2lzViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxODRjMzkuOCAwIDcyIDMyLjIgNzIgNzJzLTMyLjIgNzItNzIgNzItNzItMzIuMi03Mi03MiAzMi4yLTcyIDcyLTcyek0yNCA4MGMwIDM5LjggMzIuMiA3MiA3MiA3MnM3Mi0zMi4yIDcyLTcyUzEzNS44IDggOTYgOCAyNCA0MC4yIDI0IDgwem0wIDM1MmMwIDM5LjggMzIuMiA3MiA3MiA3MnM3Mi0zMi4yIDcyLTcyLTMyLjItNzItNzItNzItNzIgMzIuMi03MiA3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVPcGVuVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMjE2aDE2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTc2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNnptLTE2IDgwYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTc2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNnptOTYgMTIxLjEzYy0xNi40MiAwLTMyLjg0LTUuMDYtNDYuODYtMTUuMTlMMCAyNTAuODZWNDY0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjUwLjg2TDMwMi44NiA0MDEuOTRjLTE0LjAyIDEwLjEyLTMwLjQ0IDE1LjE5LTQ2Ljg2IDE1LjE5em0yMzcuNjEtMjU0LjE4Yy04Ljg1LTYuOTQtMTcuMjQtMTMuNDctMjkuNjEtMjIuODFWOTZjMC0yNi41MS0yMS40OS00OC00OC00OGgtNzcuNTVjLTMuMDQtMi4yLTUuODctNC4yNi05LjA0LTYuNTZDMzEyLjYgMjkuMTcgMjc5LjItLjM1IDI1NiAwYy0yMy4yLS4zNS01Ni41OSAyOS4xNy03My40MSA0MS40NC0zLjE3IDIuMy02IDQuMzYtOS4wNCA2LjU2SDk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djQ0LjE0Yy0xMi4zNyA5LjMzLTIwLjc2IDE1Ljg3LTI5LjYxIDIyLjgxQTQ3Ljk5NSA0Ny45OTUgMCAwIDAgMCAyMDAuNzJ2MTAuNjVsOTYgNjkuMzVWOTZoMzIwdjE4NC43Mmw5Ni02OS4zNXYtMTAuNjVjMC0xNC43NC02Ljc4LTI4LjY3LTE4LjM5LTM3Ljc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDQ2NGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjIwMC43MjRhNDggNDggMCAwIDEgMTguMzg3LTM3Ljc3NmMyNC45MTMtMTkuNTI5IDQ1LjUwMS0zNS4zNjUgMTY0LjItMTIxLjUxMUMxOTkuNDEyIDI5LjE3IDIzMi43OTctLjM0NyAyNTYgLjAwM2MyMy4xOTgtLjM1NCA1Ni41OTYgMjkuMTcyIDczLjQxMyA0MS40MzMgMTE4LjY4NyA4Ni4xMzcgMTM5LjMwMyAxMDEuOTk1IDE2NC4yIDEyMS41MTJBNDggNDggMCAwIDEgNTEyIDIwMC43MjRWNDY0em0tNjUuNjY2LTE5Ni42MDVjLTIuNTYzLTMuNzI4LTcuNy00LjU5NS0xMS4zMzktMS45MDctMjIuODQ1IDE2Ljg3My01NS40NjIgNDAuNzA1LTEwNS41ODIgNzcuMDc5LTE2LjgyNSAxMi4yNjYtNTAuMjEgNDEuNzgxLTczLjQxMyA0MS40My0yMy4yMTEuMzQ0LTU2LjU1OS0yOS4xNDMtNzMuNDEzLTQxLjQzLTUwLjExNC0zNi4zNy04Mi43MzQtNjAuMjA0LTEwNS41ODItNzcuMDc5LTMuNjM5LTIuNjg4LTguNzc2LTEuODIxLTExLjMzOSAxLjkwN2wtOS4wNzIgMTMuMTk2YTcuOTk4IDcuOTk4IDAgMCAwIDEuODM5IDEwLjk2N2MyMi44ODcgMTYuODk5IDU1LjQ1NCA0MC42OSAxMDUuMzAzIDc2Ljg2OCAyMC4yNzQgMTQuNzgxIDU2LjUyNCA0Ny44MTMgOTIuMjY0IDQ3LjU3MyAzNS43MjQuMjQyIDcxLjk2MS0zMi43NzEgOTIuMjYzLTQ3LjU3MyA0OS44NS0zNi4xNzkgODIuNDE4LTU5Ljk3IDEwNS4zMDMtNzYuODY4YTcuOTk4IDcuOTk4IDAgMCAwIDEuODM5LTEwLjk2N2wtOS4wNzEtMTMuMTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6TTE3OC4xMTcgMjYyLjEwNEM4Ny40MjkgMTk2LjI4NyA4OC4zNTMgMTk2LjEyMSA2NCAxNzcuMTY3VjE1MmMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMjcyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYyNS4xNjdjLTI0LjM3MSAxOC45NjktMjMuNDM0IDE5LjEyNC0xMTQuMTE3IDg0LjkzOC0xMC41IDcuNjU1LTMxLjM5MiAyNi4xMi00NS44ODMgMjUuODk0LTE0LjUwMy4yMTgtMzUuMzY3LTE4LjIyNy00NS44ODMtMjUuODk1ek0zODQgMjE3Ljc3NVYzNjBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDg4Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMjE3Ljc3NWMxMy45NTggMTAuNzk0IDMzLjMyOSAyNS4yMzYgOTUuMzAzIDcwLjIxNCAxNC4xNjIgMTAuMzQxIDM3Ljk3NSAzMi4xNDUgNjQuNjk0IDMyLjAxIDI2Ljg4Ny4xMzQgNTEuMDM3LTIyLjA0MSA2NC43Mi0zMi4wMjUgNjEuOTU4LTQ0Ljk2NSA4MS4zMjUtNTkuNDA2IDk1LjI4My03MC4xOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4zIDE5MC44YzMuOS0zLjEgOS43LS4yIDkuNyA0LjdWNDAwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTUuNmMwLTUgNS43LTcuOCA5LjctNC43IDIyLjQgMTcuNCA1Mi4xIDM5LjUgMTU0LjEgMTEzLjYgMjEuMSAxNS40IDU2LjcgNDcuOCA5Mi4yIDQ3LjYgMzUuNy4zIDcyLTMyLjggOTIuMy00Ny42IDEwMi03NC4xIDEzMS42LTk2LjMgMTU0LTExMy43ek0yNTYgMzIwYzIzLjIuNCA1Ni42LTI5LjIgNzMuNC00MS40IDEzMi43LTk2LjMgMTQyLjgtMTA0LjcgMTczLjQtMTI4LjcgNS44LTQuNSA5LjItMTEuNSA5LjItMTguOXYtMTljMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MTljMCA3LjQgMy40IDE0LjMgOS4yIDE4LjkgMzAuNiAyMy45IDQwLjcgMzIuNCAxNzMuNCAxMjguNyAxNi44IDEyLjIgNTAuMiA0MS44IDczLjQgNDEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXF1YWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMDRIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzODRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMC0xOTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzODRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXJhc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ny45NDEgMjczLjk0MWMxOC43NDUtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMC02Ny44ODJsLTE2MC0xNjBjLTE4Ljc0NS0xOC43NDUtNDkuMTM2LTE4Ljc0Ni02Ny44ODMgMGwtMjU2IDI1NmMtMTguNzQ1IDE4Ljc0NS0xOC43NDUgNDkuMTM3IDAgNjcuODgybDk2IDk2QTQ4LjAwNCA0OC4wMDQgMCAwIDAgMTQ0IDQ4MGgzNTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkgzNTUuODgzbDE0Mi4wNTgtMTQyLjA1OXptLTMwMi42MjctNjIuNjI3bDEzNy4zNzMgMTM3LjM3M0wyNjUuMzczIDQxNkgxNTAuNjI4bC04MC04MCAxMjQuNjg2LTEyNC42ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0aGVybmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAxOTJoLTQ4di00OGMwLTguOC03LjItMTYtMTYtMTZoLTQ4VjgwYzAtOC44LTcuMi0xNi0xNi0xNkgxNDRjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEg4MGMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MjI0YzAgOC44IDcuMiAxNiAxNiAxNmg4MFYzMjBoMzJ2MTI4aDY0VjMyMGgzMnYxMjhoNjRWMzIwaDMydjEyOGg2NFYzMjBoMzJ2MTI4aDgwYzguOCAwIDE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdXJvU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTAuNzA2IDQxMy43NjVjLTEuMzE0LTYuNjMtNy44MzUtMTAuODcyLTE0LjQyNC05LjM2OS0xMC42OTIgMi40MzktMjcuNDIyIDUuNDEzLTQ1LjQyNiA1LjQxMy01Ni43NjMgMC0xMDEuOTI5LTM0Ljc5LTEyMS40NjEtODUuNDQ5aDExMy42ODlhMTIgMTIgMCAwIDAgMTEuNzA4LTkuMzY5bDYuMzczLTI4LjM2YzEuNjg2LTcuNTAyLTQuMDE5LTE0LjYzMS0xMS43MDgtMTQuNjMxSDExNS4yMmMtMS4yMS0xNC4zMjgtMS40MTQtMjguMjg3LjEzNy00Mi4yNDVIMjYxLjk1YTEyIDEyIDAgMCAwIDExLjcyMy05LjQzNGw2LjUxMi0yOS43NTVjMS42MzgtNy40ODQtNC4wNjEtMTQuNTY2LTExLjcyMy0xNC41NjZIMTMwLjE4NGMyMC42MzMtNDQuOTkxIDYyLjY5LTc1LjAzIDExNy42MTktNzUuMDMgMTQuNDg2IDAgMjguNTY0IDIuMjUgMzcuODUxIDQuMTQ1IDYuMjE2IDEuMjY4IDEyLjM0Ny0yLjQ5OCAxNC4wMDItOC42MjNsMTEuOTkxLTQ0LjM2OGMxLjgyMi02Ljc0MS0yLjQ2NS0xMy42MTYtOS4zMjYtMTQuOTE3QzI5MC4yMTcgMzQuOTEyIDI3MC43MSAzMiAyNDkuNjM1IDMyIDE1Mi40NTEgMzIgNzQuMDMgOTIuMjUyIDQ1LjA3NSAxNzZIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjkuNzU1YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjEuNTY5Yy0xLjAwOSAxMy42MDctMS4xODEgMjkuMjg3LS4xODEgNDIuMjQ1SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4LjM2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMzAuMTE0QzY3LjEzOSA0MTQuNjkyIDE0NS4yNjQgNDgwIDI0OS42MzUgNDgwYzI2LjMwMSAwIDQ4LjU2Mi00LjU0NCA2MS4xMDEtNy43ODggNi4xNjctMS41OTUgMTAuMDI3LTcuNzA4IDguNzg4LTEzLjk1N2wtOC44MTgtNDQuNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4Y2hhbmdlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTY4di0xNmMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMzYwVjgwYzAtMjEuMzY3IDI1Ljg5OS0zMi4wNDIgNDAuOTcxLTE2Ljk3MWw4MCA4MGM5LjM3MiA5LjM3MyA5LjM3MiAyNC41NjkgMCAzMy45NDFsLTgwIDgwQzQwOS45NTYgMjcxLjk4MiAzODQgMjYxLjQ1NiAzODQgMjQwdi00OEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0em00ODggMTUySDEyOHYtNDhjMC0yMS4zMTQtMjUuODYyLTMyLjA4LTQwLjk3MS0xNi45NzFsLTgwIDgwYy05LjM3MiA5LjM3My05LjM3MiAyNC41NjkgMCAzMy45NDFsODAgODBDMTAyLjA1NyA0NjMuOTk3IDEyOCA0NTMuNDM3IDEyOCA0MzJ2LTQ4aDM2MGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTE2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXhjbGFtYXRpb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NmMwIDEzNi45OTctMTExLjA0MyAyNDgtMjQ4IDI0OFM4IDM5Mi45OTcgOCAyNTZDOCAxMTkuMDgzIDExOS4wNDMgOCAyNTYgOHMyNDggMTExLjA4MyAyNDggMjQ4em0tMjQ4IDUwYy0yNS40MDUgMC00NiAyMC41OTUtNDYgNDZzMjAuNTk1IDQ2IDQ2IDQ2IDQ2LTIwLjU5NSA0Ni00Ni0yMC41OTUtNDYtNDYtNDZ6bS00My42NzMtMTY1LjM0Nmw3LjQxOCAxMzZjLjM0NyA2LjM2NCA1LjYwOSAxMS4zNDYgMTEuOTgyIDExLjM0Nmg0OC41NDZjNi4zNzMgMCAxMS42MzUtNC45ODIgMTEuOTgyLTExLjM0Nmw3LjQxOC0xMzZjLjM3NS02Ljg3NC01LjA5OC0xMi42NTQtMTEuOTgyLTEyLjY1NGgtNjMuMzgzYy02Ljg4NCAwLTEyLjM1NiA1Ljc4LTExLjk4MSAxMi42NTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4Y2xhbWF0aW9uVHJpYW5nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY5LjUxNyA0NDAuMDEzQzU4Ny45NzUgNDcyLjAwNyA1NjQuODA2IDUxMiA1MjcuOTQgNTEySDQ4LjA1NGMtMzYuOTM3IDAtNTkuOTk5LTQwLjA1NS00MS41NzctNzEuOTg3TDI0Ni40MjMgMjMuOTg1YzE4LjQ2Ny0zMi4wMDkgNjQuNzItMzEuOTUxIDgzLjE1NCAwbDIzOS45NCA0MTYuMDI4ek0yODggMzU0Yy0yNS40MDUgMC00NiAyMC41OTUtNDYgNDZzMjAuNTk1IDQ2IDQ2IDQ2IDQ2LTIwLjU5NSA0Ni00Ni0yMC41OTUtNDYtNDYtNDZ6bS00My42NzMtMTY1LjM0Nmw3LjQxOCAxMzZjLjM0NyA2LjM2NCA1LjYwOSAxMS4zNDYgMTEuOTgyIDExLjM0Nmg0OC41NDZjNi4zNzMgMCAxMS42MzUtNC45ODIgMTEuOTgyLTExLjM0Nmw3LjQxOC0xMzZjLjM3NS02Ljg3NC01LjA5OC0xMi42NTQtMTEuOTgyLTEyLjY1NGgtNjMuMzgzYy02Ljg4NCAwLTEyLjM1NiA1Ljc4LTExLjk4MSAxMi42NTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxOTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA0MzJjMCA0NC4xMTItMzUuODg4IDgwLTgwIDgwcy04MC0zNS44ODgtODAtODAgMzUuODg4LTgwIDgwLTgwIDgwIDM1Ljg4OCA4MCA4MHpNMjUuMjYgMjUuMTk5bDEzLjYgMjcyQzM5LjQ5OSAzMDkuOTcyIDUwLjA0MSAzMjAgNjIuODMgMzIwaDY2LjM0YzEyLjc4OSAwIDIzLjMzMS0xMC4wMjggMjMuOTctMjIuODAxbDEzLjYtMjcyQzE2Ny40MjUgMTEuNDkgMTU2LjQ5NiAwIDE0Mi43NyAwSDQ5LjIzQzM1LjUwNCAwIDI0LjU3NSAxMS40OSAyNS4yNiAyNS4xOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4cGFuZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuNjg2IDMxNS4zMTRMMTIwIDQwOGwzMi45MjIgMzEuMDI5YzE1LjEyIDE1LjEyIDQuNDEyIDQwLjk3MS0xNi45NyA0MC45NzFoLTExMkMxMC42OTcgNDgwIDAgNDY5LjI1NSAwIDQ1NlYzNDRjMC0yMS4zODIgMjUuODAzLTMyLjA5IDQwLjkyMi0xNi45NzFMNzIgMzYwbDkyLjY4Ni05Mi42ODZjNi4yNDgtNi4yNDggMTYuMzc5LTYuMjQ4IDIyLjYyNyAwbDI1LjM3MyAyNS4zNzNjNi4yNDkgNi4yNDggNi4yNDkgMTYuMzc4IDAgMjIuNjI3em0yMi42MjgtMTE4LjYyOEwzMjggMTA0bC0zMi45MjItMzEuMDI5QzI3OS45NTggNTcuODUxIDI5MC42NjYgMzIgMzEyLjA0OCAzMmgxMTJDNDM3LjMwMyAzMiA0NDggNDIuNzQ1IDQ0OCA1NnYxMTJjMCAyMS4zODItMjUuODAzIDMyLjA5LTQwLjkyMiAxNi45NzFMMzc2IDE1MmwtOTIuNjg2IDkyLjY4NmMtNi4yNDggNi4yNDgtMTYuMzc5IDYuMjQ4LTIyLjYyNyAwbC0yNS4zNzMtMjUuMzczYy02LjI0OS02LjI0OC02LjI0OS0xNi4zNzggMC0yMi42Mjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4cGFuZEFycm93c0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzQ0djExMmEyMy45NCAyMy45NCAwIDAgMS0yNCAyNEgzMTJjLTIxLjM5IDAtMzIuMDktMjUuOS0xNy00MWwzNi4yLTM2LjJMMjI0IDI5NS42IDExNi43NyA0MDIuOSAxNTMgNDM5YzE1LjA5IDE1LjEgNC4zOSA0MS0xNyA0MUgyNGEyMy45NCAyMy45NCAwIDAgMS0yNC0yNFYzNDRjMC0yMS40IDI1Ljg5LTMyLjEgNDEtMTdsMzYuMTkgMzYuMkwxODQuNDYgMjU2IDc3LjE4IDE0OC43IDQxIDE4NWMtMTUuMSAxNS4xLTQxIDQuNC00MS0xN1Y1NmEyMy45NCAyMy45NCAwIDAgMSAyNC0yNGgxMTJjMjEuMzkgMCAzMi4wOSAyNS45IDE3IDQxbC0zNi4yIDM2LjJMMjI0IDIxNi40bDEwNy4yMy0xMDcuM0wyOTUgNzNjLTE1LjA5LTE1LjEtNC4zOS00MSAxNy00MWgxMTJhMjMuOTQgMjMuOTQgMCAwIDEgMjQgMjR2MTEyYzAgMjEuNC0yNS44OSAzMi4xLTQxIDE3bC0zNi4xOS0zNi4yTDI2My41NCAyNTZsMTA3LjI4IDEwNy4zTDQwNyAzMjcuMWMxNS4xLTE1LjIgNDEtNC41IDQxIDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4cGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE4MFY1NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxMjRjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkg2NHY4NGMwIDYuNi01LjQgMTItMTIgMTJIMTJjLTYuNiAwLTEyLTUuNC0xMi0xMnpNMjg4IDQ0djQwYzAgNi42IDUuNCAxMiAxMiAxMmg4NHY4NGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyVjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDMwMGMtNi42IDAtMTIgNS40LTEyIDEyem0xNDggMjc2aC00MGMtNi42IDAtMTIgNS40LTEyIDEydjg0aC04NGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgxMjRjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzMyYzAtNi42LTUuNC0xMi0xMi0xMnpNMTYwIDQ2OHYtNDBjMC02LjYtNS40LTEyLTEyLTEySDY0di04NGMwLTYuNi01LjQtMTItMTItMTJIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnYxMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTI0YzYuNiAwIDEyLTUuNCAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXh0ZXJuYWxMaW5rQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiwzMjBINDAwYTE2LDE2LDAsMCwwLTE2LDE2VjQ0OEg2NFYxMjhIMjA4YTE2LDE2LDAsMCwwLDE2LTE2VjgwYTE2LDE2LDAsMCwwLTE2LTE2SDQ4QTQ4LDQ4LDAsMCwwLDAsMTEyVjQ2NGE0OCw0OCwwLDAsMCw0OCw0OEg0MDBhNDgsNDgsMCwwLDAsNDgtNDhWMzM2QTE2LDE2LDAsMCwwLDQzMiwzMjBaTTQ4OCwwaC0xMjhjLTIxLjM3LDAtMzIuMDUsMjUuOTEtMTcsNDFsMzUuNzMsMzUuNzNMMTM1LDMyMC4zN2EyNCwyNCwwLDAsMCwwLDM0TDE1Ny42NywzNzdhMjQsMjQsMCwwLDAsMzQsMEw0MzUuMjgsMTMzLjMyLDQ3MSwxNjljMTUsMTUsNDEsNC41LDQxLTE3VjI0QTI0LDI0LDAsMCwwLDQ4OCwwWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHRlcm5hbExpbmtTcXVhcmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDgwdjM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjgwYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMzUyYzI2LjUxIDAgNDggMjEuNDkgNDggNDh6bS04OCAxNkgyNDguMDI5Yy0yMS4zMTMgMC0zMi4wOCAyNS44NjEtMTYuOTcxIDQwLjk3MWwzMS45ODQgMzEuOTg3TDY3LjUxNSAzNjQuNDg1Yy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFsMzEuMDI5IDMxLjAyOWM0LjY4NyA0LjY4NiAxMi4yODUgNC42ODYgMTYuOTcxIDBsMTk1LjUyNi0xOTUuNTI2IDMxLjk4OCAzMS45OTFDMzU4LjA1OCAyNjMuOTc3IDM4NCAyNTMuNDI1IDM4NCAyMzEuOTc5VjEyMGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV5ZURyb3BwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAuNzUgMzMzLjI1Yy0xMiAxMi0xOC43NSAyOC4yOC0xOC43NSA0NS4yNlY0MjRMMCA0ODBsMzIgMzIgNTYtMzJoNDUuNDljMTYuOTcgMCAzMy4yNS02Ljc0IDQ1LjI1LTE4Ljc0bDEyNi42NC0xMjYuNjItMTI4LTEyOEw1MC43NSAzMzMuMjV6TTQ4My44OCAyOC4xMmMtMzcuNDctMzcuNS05OC4yOC0zNy41LTEzNS43NSAwbC03Ny4wOSA3Ny4wOS0xMy4xLTEzLjFjLTkuNDQtOS40NC0yNC42NS05LjMxLTMzLjk0IDBsLTQwLjk3IDQwLjk3Yy05LjM3IDkuMzctOS4zNyAyNC41NyAwIDMzLjk0bDE2MS45NCAxNjEuOTRjOS40NCA5LjQ0IDI0LjY1IDkuMzEgMzMuOTQgMEw0MTkuODggMjg4YzkuMzctOS4zNyA5LjM3LTI0LjU3IDAtMzMuOTRsLTEzLjEtMTMuMSA3Ny4wOS03Ny4wOWMzNy41MS0zNy40OCAzNy41MS05OC4yNi4wMS0xMzUuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV5ZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0MDBjLTc1Ljg1IDAtMTM3LjI1LTU4LjcxLTE0Mi45LTEzMy4xMUw3Mi4yIDE4NS44MmMtMTMuNzkgMTcuMy0yNi40OCAzNS41OS0zNi43MiA1NS41OWEzMi4zNSAzMi4zNSAwIDAgMCAwIDI5LjE5Qzg5LjcxIDM3Ni40MSAxOTcuMDcgNDQ4IDMyMCA0NDhjMjYuOTEgMCA1Mi44Ny00IDc3Ljg5LTEwLjQ2TDM0NiAzOTcuMzlhMTQ0LjEzIDE0NC4xMyAwIDAgMS0yNiAyLjYxem0zMTMuODIgNTguMWwtMTEwLjU1LTg1LjQ0YTMzMS4yNSAzMzEuMjUgMCAwIDAgODEuMjUtMTAyLjA3IDMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTlDNTUwLjI5IDEzNS41OSA0NDIuOTMgNjQgMzIwIDY0YTMwOC4xNSAzMDguMTUgMCAwIDAtMTQ3LjMyIDM3LjdMNDUuNDYgMy4zN0ExNiAxNiAwIDAgMCAyMyA2LjE4TDMuMzcgMzEuNDVBMTYgMTYgMCAwIDAgNi4xOCA1My45bDU4OC4zNiA0NTQuNzNhMTYgMTYgMCAwIDAgMjIuNDYtMi44MWwxOS42NC0yNS4yN2ExNiAxNiAwIDAgMC0yLjgyLTIyLjQ1em0tMTgzLjcyLTE0MmwtMzkuMy0zMC4zOEE5NC43NSA5NC43NSAwIDAgMCA0MTYgMjU2YTk0Ljc2IDk0Ljc2IDAgMCAwLTEyMS4zMS05Mi4yMUE0Ny42NSA0Ny42NSAwIDAgMSAzMDQgMTkyYTQ2LjY0IDQ2LjY0IDAgMCAxLTEuNTQgMTBsLTczLjYxLTU2Ljg5QTE0Mi4zMSAxNDIuMzEgMCAwIDEgMzIwIDExMmExNDMuOTIgMTQzLjkyIDAgMCAxIDE0NCAxNDRjMCAyMS42My01LjI5IDQxLjc5LTEzLjkgNjAuMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzIuNTIgMjQxLjRDNTE4LjI5IDEzNS41OSA0MTAuOTMgNjQgMjg4IDY0UzU3LjY4IDEzNS42NCAzLjQ4IDI0MS40MWEzMi4zNSAzMi4zNSAwIDAgMCAwIDI5LjE5QzU3LjcxIDM3Ni40MSAxNjUuMDcgNDQ4IDI4OCA0NDhzMjMwLjMyLTcxLjY0IDI4NC41Mi0xNzcuNDFhMzIuMzUgMzIuMzUgMCAwIDAgMC0yOS4xOXpNMjg4IDQwMGExNDQgMTQ0IDAgMSAxIDE0NC0xNDQgMTQzLjkzIDE0My45MyAwIDAgMS0xNDQgMTQ0em0wLTI0MGE5NS4zMSA5NS4zMSAwIDAgMC0yNS4zMSAzLjc5IDQ3Ljg1IDQ3Ljg1IDAgMCAxLTY2LjkgNjYuOUE5NS43OCA5NS43OCAwIDEgMCAyODggMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyLjU3IDEyOGMtMjguMDkgMC01NC4wOSA0LjUyLTc3LjA2IDEyLjg2bDEyLjQxLTEyMy4xMUMyODkgNy4zMSAyNzkuODEtMS4xOCAyNjkuMzMuMTMgMTg5LjYzIDEwLjEzIDEyOCA3Ny42NCAxMjggMTU5LjQzYzAgMjguMDkgNC41MiA1NC4wOSAxMi44NiA3Ny4wNkwxNy43NSAyMjQuMDhDNy4zMSAyMjMtMS4xOCAyMzIuMTkuMTMgMjQyLjY3YzEwIDc5LjcgNzcuNTEgMTQxLjMzIDE1OS4zIDE0MS4zMyAyOC4wOSAwIDU0LjA5LTQuNTIgNzcuMDYtMTIuODZsLTEyLjQxIDEyMy4xMWMtMS4wNSAxMC40MyA4LjExIDE4LjkzIDE4LjU5IDE3LjYyIDc5LjctMTAgMTQxLjMzLTc3LjUxIDE0MS4zMy0xNTkuMyAwLTI4LjA5LTQuNTItNTQuMDktMTIuODYtNzcuMDZsMTIzLjExIDEyLjQxYzEwLjQ0IDEuMDUgMTguOTMtOC4xMSAxNy42Mi0xOC41OS0xMC03OS43LTc3LjUxLTE0MS4zMy0xNTkuMy0xNDEuMzN6TTI1NiAyODhhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhc3RCYWNrd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQzNlY3NmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjE1MS45TDIzNS41IDcxLjRDMjU2LjEgNTQuMyAyODggNjguNiAyODggOTZ2MTMxLjlMNDU5LjUgNzEuNEM0ODAuMSA1NC4zIDUxMiA2OC42IDUxMiA5NnYzMjBjMCAyNy40LTMxLjkgNDEuNy01Mi41IDI0LjZMMjg4IDI4NS4zVjQxNmMwIDI3LjQtMzEuOSA0MS43LTUyLjUgMjQuNkw2NCAyODUuM1Y0MzZjMCA2LjYtNS40IDEyLTEyIDEySDEyYy02LjYgMC0xMi01LjQtMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhc3RGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA3NnYzNjBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEyVjI4NC4xTDI3Ni41IDQ0MC42Yy0yMC42IDE3LjItNTIuNSAyLjgtNTIuNS0yNC42VjI4NC4xTDUyLjUgNDQwLjZDMzEuOSA0NTcuOCAwIDQ0My40IDAgNDE2Vjk2YzAtMjcuNCAzMS45LTQxLjcgNTIuNS0yNC42TDIyNCAyMjYuOFY5NmMwLTI3LjQgMzEuOS00MS43IDUyLjUtMjQuNkw0NDggMjI2LjhWNzZjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmF1Y2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiwyNTZIMzEzLjM5Yy0xNS43MS0xMy40NC0zNS40Ni0yMy4wNy01Ny4zOS0yOFYxODAuNDRsLTMyLTMuMzgtMzIsMy4zOFYyMjhjLTIxLjkzLDUtNDEuNjgsMTQuNi01Ny4zOSwyOEgxNkExNiwxNiwwLDAsMCwwLDI3MnY5NmExNiwxNiwwLDAsMCwxNiwxNmg5Mi43OUMxMjkuMzgsNDIxLjczLDE3Myw0NDgsMjI0LDQ0OHM5NC42Mi0yNi4yNywxMTUuMjEtNjRIMzUyYTMyLDMyLDAsMCwxLDMyLDMyLDMyLDMyLDAsMCwwLDMyLDMyaDY0YTMyLDMyLDAsMCwwLDMyLTMyQTE2MCwxNjAsMCwwLDAsMzUyLDI1NlpNODEuNTksMTU5LjkxbDE0Mi40MS0xNSwxNDIuNDEsMTVjOS40MiwxLDE3LjU5LTYuODEsMTcuNTktMTYuOFYxMTIuODljMC0xMC04LjE3LTE3LjgtMTcuNTktMTYuODFMMjU2LDEwNy43NFY4MGExNiwxNiwwLDAsMC0xNi0xNkgyMDhhMTYsMTYsMCwwLDAtMTYsMTZ2MjcuNzRMODEuNTksOTYuMDhDNzIuMTcsOTUuMDksNjQsMTAyLjksNjQsMTEyLjg5djMwLjIyQzY0LDE1My4xLDcyLjE3LDE2MC45MSw4MS41OSwxNTkuOTFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZheCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMTYwVjc3LjI1YTMyIDMyIDAgMCAwLTkuMzgtMjIuNjNMNDI1LjM3IDkuMzdBMzIgMzIgMCAwIDAgNDAyLjc1IDBIMTYwYTMyIDMyIDAgMCAwLTMyIDMydjQ0OGEzMiAzMiAwIDAgMCAzMiAzMmgzMjBhMzIgMzIgMCAwIDAgMzItMzJWMTkyYTMyIDMyIDAgMCAwLTMyLTMyek0yODggNDMyYTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTEyOCAxMjhhMTYgMTYgMCAwIDEtMTYgMTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgzMmExNiAxNiAwIDAgMSAxNiAxNnptMC0xMjhhMTYgMTYgMCAwIDEtMTYgMTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgzMmExNiAxNiAwIDAgMSAxNiAxNnptMC0xMTJIMTkyVjY0aDE2MHY0OGExNiAxNiAwIDAgMCAxNiAxNmg0OHpNNjQgMTI4SDMyYTMyIDMyIDAgMCAwLTMyIDMydjMyMGEzMiAzMiAwIDAgMCAzMiAzMmgzMmEzMiAzMiAwIDAgMCAzMi0zMlYxNjBhMzIgMzIgMCAwIDAtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlYXRoZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDBDNDYwLjIyIDMuNTYgOTYuNDQgMzguMiA3MS4wMSAyODcuNjFjLTMuMDkgMjYuNjYtNC44NCA1My40NC01Ljk5IDgwLjI0bDE3OC44Ny0xNzguNjljNi4yNS02LjI1IDE2LjQtNi4yNSAyMi42NSAwczYuMjUgMTYuMzggMCAyMi42M0w3LjA0IDQ3MS4wM2MtOS4zOCA5LjM3LTkuMzggMjQuNTcgMCAzMy45NCA5LjM4IDkuMzcgMjQuNTkgOS4zNyAzMy45OCAwbDU3LjEzLTU3LjA3YzQyLjA5LS4xNCA4NC4xNS0yLjUzIDEyNS45Ni03LjM2IDUzLjQ4LTUuNDQgOTcuMDItMjYuNDcgMTMyLjU4LTU2LjU0SDI1NS43NGwxNDYuNzktNDguODhjMTEuMjUtMTQuODkgMjEuMzctMzAuNzEgMzAuNDUtNDcuMTJoLTgxLjE0bDEwNi41NC01My4yMUM1MDAuMjkgMTMyLjg2IDUxMC4xOSAyNi4yNiA1MTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVhdGhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjcuMTQgNDQuODRjLTYyLjU1LTYyLjQ4LTE2MS42Ny02NC43OC0yNTIuMjggMjUuNzMtNzguNjEgNzguNTItNjAuOTggNjAuOTItODUuNzUgODUuNjYtNjAuNDYgNjAuMzktNzAuMzkgMTUwLjgzLTYzLjY0IDIxMS4xN2wxNzguNDQtMTc4LjI1YzYuMjYtNi4yNSAxNi40LTYuMjUgMjIuNjUgMHM2LjI1IDE2LjM4IDAgMjIuNjNMNy4wNCA0NzEuMDNjLTkuMzggOS4zNy05LjM4IDI0LjU3IDAgMzMuOTQgOS4zOCA5LjM3IDI0LjYgOS4zNyAzMy45OCAwbDY2LjEtNjYuMDNDMTU5LjQyIDQ1NC42NSAyNzkgNDU3LjExIDM1My45NSAzODRoLTk4LjE5bDE0Ny41Ny00OS4xNGM0OS45OS00OS45MyAzNi4zOC0zNi4xOCA0Ni4zMS00Ni44NmgtOTcuNzhsMTMxLjU0LTQzLjhjNDUuNDQtNzQuNDYgMzQuMzEtMTQ4Ljg0LTE2LjI2LTE5OS4zNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVtYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzM1LjM0NiAwIDY0IDI4LjY1NCA2NCA2NHMtMjguNjU0IDY0LTY0IDY0Yy0zNS4zNDYgMC02NC0yOC42NTQtNjQtNjRTOTIuNjU0IDAgMTI4IDBtMTE5LjI4MyAzNTQuMTc5bC00OC0xOTJBMjQgMjQgMCAwIDAgMTc2IDE0NGgtMTEuMzZjLTIyLjcxMSAxMC40NDMtNDkuNTkgMTAuODk0LTczLjI4IDBIODBhMjQgMjQgMCAwIDAtMjMuMjgzIDE4LjE3OWwtNDggMTkyQzQuOTM1IDM2OS4zMDUgMTYuMzgzIDM4NCAzMiAzODRoNTZ2MTA0YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMzg0aDU2YzE1LjU5MSAwIDI3LjA3MS0xNC42NzEgMjMuMjgzLTI5LjgyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlnaHRlckpldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMjI0bC0xMjgtMTYtNDgtMTZoLTI0TDIyNy4xNTggNDRoMzkuNTA5QzI3OC4zMzMgNDQgMjg4IDQxLjM3NSAyODggMzhzLTkuNjY3LTYtMjEuMzMzLTZIMTUydjEyaDE2djE2NGgtNDhsLTY2LjY2Ny04MEgxOC42NjdMOCAxMzguNjY3VjIwOGg4djE2aDQ4djIuNjY2bC02NCA4djQyLjY2N2w2NCA4VjI4OEgxNnYxNkg4djY5LjMzM0wxOC42NjcgMzg0aDM0LjY2N0wxMjAgMzA0aDQ4djE2NGgtMTZ2MTJoMTE0LjY2N2MxMS42NjcgMCAyMS4zMzMtMi42MjUgMjEuMzMzLTZzLTkuNjY3LTYtMjEuMzMzLTZoLTM5LjUwOUwzNDQgMzIwaDI0bDQ4LTE2IDEyOC0xNmM5Ni0yMS4zMzMgOTYtMjYuNTgzIDk2LTMyIDAtNS40MTcgMC0xMC42NjctOTYtMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02NCAyMzZjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEydjh6bTAtNjRjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEydjh6bTAtNzJ2OGMwIDYuNi01LjQgMTItMTIgMTJIMTA4Yy02LjYgMC0xMi01LjQtMTItMTJ2LThjMC02LjYgNS40LTEyIDEyLTEyaDE2OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bTk2LTExNC4xdjYuMUgyNTZWMGg2LjFjNi40IDAgMTIuNSAyLjUgMTcgN2w5Ny45IDk4YzQuNSA0LjUgNyAxMC42IDcgMTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45ek0xMjguNCAzMzZjLTE3LjkgMC0zMi40IDEyLjEtMzIuNCAyNyAwIDE1IDE0LjYgMjcgMzIuNSAyN3MzMi40LTEyLjEgMzIuNC0yNy0xNC42LTI3LTMyLjUtMjd6TTIyNCAxMzZWMGgtNjMuNnYzMmgtMzJWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNOTUuOSAzMmgzMnYzMmgtMzJ6bTMyLjMgMzg0Yy0zMy4yIDAtNTgtMzAuNC01MS40LTYyLjlMOTYuNCAyNTZ2LTMyaDMydi0zMmgtMzJ2LTMyaDMydi0zMmgtMzJWOTZoMzJWNjRoMzJ2MzJoLTMydjMyaDMydjMyaC0zMnYzMmgzMnYzMmgtMzJ2MzJoMjIuMWM1LjcgMCAxMC43IDQuMSAxMS44IDkuN2wxNy4zIDg3LjdjNi40IDMyLjQtMTguNCA2Mi42LTUxLjQgNjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUF1ZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptLTY0IDI2OGMwIDEwLjctMTIuOSAxNi0yMC41IDguNUwxMDQgMzc2SDc2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmgyOGwzNS41LTM2LjVjNy42LTcuNiAyMC41LTIuMiAyMC41IDguNXYxMzZ6bTMzLjItNDcuNmM5LjEtOS4zIDkuMS0yNC4xIDAtMzMuNC0yMi4xLTIyLjggMTIuMi01Ni4yIDM0LjQtMzMuNSAyNy4yIDI3LjkgMjcuMiA3Mi40IDAgMTAwLjQtMjEuOCAyMi4zLTU2LjktMTAuNC0zNC40LTMzLjV6bTg2LTExNy4xYzU0LjQgNTUuOSA1NC40IDE0NC44IDAgMjAwLjgtMjEuOCAyMi40LTU3LTEwLjMtMzQuNC0zMy41IDM2LjItMzcuMiAzNi4zLTk2LjUgMC0xMzMuOC0yMi4xLTIyLjggMTIuMy01Ni4zIDM0LjQtMzMuNXpNMzg0IDEyMS45djYuMUgyNTZWMGg2LjFjNi40IDAgMTIuNSAyLjUgMTcgN2w5Ny45IDk4YzQuNSA0LjUgNyAxMC42IDcgMTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDEyMS45NDFWMTI4SDI1NlYwaDYuMDU5YzYuMzY1IDAgMTIuNDcgMi41MjkgMTYuOTcxIDcuMDI5bDk3Ljk0MSA5Ny45NDFBMjQuMDA1IDI0LjAwNSAwIDAgMSAzODQgMTIxLjk0MXpNMjQ4IDE2MGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djQ2NGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxNjBIMjQ4ek0xMjMuMjA2IDQwMC41MDVhNS40IDUuNCAwIDAgMS03LjYzMy4yNDZsLTY0Ljg2Ni02MC44MTJhNS40IDUuNCAwIDAgMSAwLTcuODc5bDY0Ljg2Ni02MC44MTJhNS40IDUuNCAwIDAgMSA3LjYzMy4yNDZsMTkuNTc5IDIwLjg4NWE1LjQgNS40IDAgMCAxLS4zNzIgNy43NDdMMTAxLjY1IDMzNmw0MC43NjMgMzUuODc0YTUuNCA1LjQgMCAwIDEgLjM3MiA3Ljc0N2wtMTkuNTc5IDIwLjg4NHptNTEuMjk1IDUwLjQ3OWwtMjcuNDUzLTcuOTdhNS40MDIgNS40MDIgMCAwIDEtMy42ODEtNi42OTJsNjEuNDQtMjExLjYyNmE1LjQwMiA1LjQwMiAwIDAgMSA2LjY5Mi0zLjY4MWwyNy40NTIgNy45N2E1LjQgNS40IDAgMCAxIDMuNjggNi42OTJsLTYxLjQ0IDIxMS42MjZhNS4zOTcgNS4zOTcgMCAwIDEtNi42OSAzLjY4MXptMTYwLjc5Mi0xMTEuMDQ1bC02NC44NjYgNjAuODEyYTUuNCA1LjQgMCAwIDEtNy42MzMtLjI0NmwtMTkuNTgtMjAuODg1YTUuNCA1LjQgMCAwIDEgLjM3Mi03Ljc0N0wyODQuMzUgMzM2bC00MC43NjMtMzUuODc0YTUuNCA1LjQgMCAwIDEtLjM3Mi03Ljc0N2wxOS41OC0yMC44ODVhNS40IDUuNCAwIDAgMSA3LjYzMy0uMjQ2bDY0Ljg2NiA2MC44MTJhNS40IDUuNCAwIDAgMS0uMDAxIDcuODc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ29udHJhY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0ek02NCA3MmMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LThWNzJ6bTAgNjRjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di0xNnptMTkyLjgxIDI0OEgzMDRjOC44NCAwIDE2IDcuMTYgMTYgMTZzLTcuMTYgMTYtMTYgMTZoLTQ3LjE5Yy0xNi40NSAwLTMxLjI3LTkuMTQtMzguNjQtMjMuODYtMi45NS01LjkyLTguMDktNi41Mi0xMC4xNy02LjUycy03LjIyLjU5LTEwLjAyIDYuMTlsLTcuNjcgMTUuMzRhMTUuOTg2IDE1Ljk4NiAwIDAgMS0xNC4zMSA4Ljg0Yy0uMzggMC0uNzUtLjAyLTEuMTQtLjA1LTYuNDUtLjQ1LTEyLTQuNzUtMTQuMDMtMTAuODlMMTQ0IDM1NC41OWwtMTAuNjEgMzEuODhjLTUuODkgMTcuNjYtMjIuMzggMjkuNTMtNDEgMjkuNTNIODBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTZoMTIuMzljNC44MyAwIDkuMTEtMy4wOCAxMC42NC03LjY2bDE4LjE5LTU0LjY0YzMuMy05LjgxIDEyLjQ0LTE2LjQxIDIyLjc4LTE2LjQxczE5LjQ4IDYuNTkgMjIuNzcgMTYuNDFsMTMuODggNDEuNjRjMTkuNzctMTYuMTkgNTQuMDUtOS43IDY2IDE0LjE2IDIuMDIgNC4wNiA1Ljk2IDYuNSAxMC4xNiA2LjV6TTM3NyAxMDVMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNzdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bS05NiAxNDRjMCA0LjQyLTMuNTggOC04IDhoLThjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDhjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLThjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDh2LTMyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoOGM0LjQyIDAgOCAzLjU4IDggOHYxNnptNDQuMjcgMTA0SDE2MGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDEyLjI3YzUuOTUgMCAxMC40MS0zLjUgMTAuNDEtNi42MiAwLTEuMy0uNzUtMi42Ni0yLjEyLTMuODRsLTIxLjg5LTE4Ljc3Yy04LjQ3LTcuMjItMTMuMzMtMTcuNDgtMTMuMzMtMjguMTQgMC0yMS4zIDE5LjAyLTM4LjYyIDQyLjQxLTM4LjYySDIwMGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOGgtMTIuMjdjLTUuOTUgMC0xMC40MSAzLjUtMTAuNDEgNi42MiAwIDEuMy43NSAyLjY2IDIuMTIgMy44NGwyMS44OSAxOC43N2M4LjQ3IDcuMjIgMTMuMzMgMTcuNDggMTMuMzMgMjguMTQuMDEgMjEuMjktMTkgMzguNjItNDIuMzkgMzguNjJ6TTI1NiAyNjR2MjAuOGMwIDIwLjI3IDUuNyA0MC4xNyAxNiA1Ni44OCAxMC4zLTE2LjcgMTYtMzYuNjEgMTYtNTYuODhWMjY0YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djIwLjhjMCAzNS40OC0xMi44OCA2OC44OS0zNi4yOCA5NC4wOS0zLjAyIDMuMjUtNy4yNyA1LjExLTExLjcyIDUuMTFzLTguNy0xLjg2LTExLjcyLTUuMTFjLTIzLjQtMjUuMi0zNi4yOC01OC42MS0zNi4yOC05NC4wOVYyNjRjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh6bTEyMS0xNTlMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNzYuNDUgMjExLjM2bC05Ni40MiA5NS43Yy02LjY1IDYuNjEtMTcuMzkgNi42MS0yNC4wNCAwbC05Ni40Mi05NS43QzczLjQyIDMzNy4yOSA4MC41NCAzMjAgOTQuODIgMzIwSDE2MHYtODBjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2ODBoNjUuMThjMTQuMjggMCAyMS40IDE3LjI5IDExLjI3IDI3LjM2ek0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVFeGNlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTYwLjEgMTA2LjVMMjI0IDMzNmw2MC4xIDkzLjVjNS4xIDgtLjYgMTguNS0xMC4xIDE4LjVoLTM0LjljLTQuNCAwLTguNS0yLjQtMTAuNi02LjNDMjA4LjkgNDA1LjUgMTkyIDM3MyAxOTIgMzczYy02LjQgMTQuOC0xMCAyMC0zNi42IDY4LjgtMi4xIDMuOS02LjEgNi4zLTEwLjUgNi4zSDExMGMtOS41IDAtMTUuMi0xMC41LTEwLjEtMTguNWw2MC4zLTkzLjUtNjAuMy05My41Yy01LjItOCAuNi0xOC41IDEwLjEtMTguNWgzNC44YzQuNCAwIDguNSAyLjQgMTAuNiA2LjMgMjYuMSA0OC44IDIwIDMzLjYgMzYuNiA2OC41IDAgMCA2LjEtMTEuNyAzNi42LTY4LjUgMi4xLTMuOSA2LjItNi4zIDEwLjYtNi4zSDI3NGM5LjUtLjEgMTUuMiAxMC40IDEwLjEgMTguNHpNMzg0IDEyMS45djYuMUgyNTZWMGg2LjFjNi40IDAgMTIuNSAyLjUgMTcgN2w5Ny45IDk4YzQuNSA0LjUgNyAxMC42IDcgMTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUV4cG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTIxLjljMC02LjMtMi41LTEyLjQtNy0xNi45TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh6TTU3MSAzMDhsLTk1LjctOTYuNGMtMTAuMS0xMC4xLTI3LjQtMy0yNy40IDExLjNWMjg4aC02NHY2NGg2NHY2NS4yYzAgMTQuMyAxNy4zIDIxLjQgMjcuNCAxMS4zTDU3MSAzMzJjNi42LTYuNiA2LjYtMTcuNCAwLTI0em0tMzc5IDI4di0zMmMwLTguOCA3LjItMTYgMTYtMTZoMTc2VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzUySDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDEyMS45NDFWMTI4SDI1NlYwaDYuMDU5YTI0IDI0IDAgMCAxIDE2Ljk3IDcuMDI5bDk3Ljk0MSA5Ny45NDFhMjQuMDAyIDI0LjAwMiAwIDAgMSA3LjAzIDE2Ljk3MXpNMjQ4IDE2MGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djQ2NGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxNjBIMjQ4em0tMTM1LjQ1NSAxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4cy0yMS40OSA0OC00OCA0OC00OC0yMS40OS00OC00OCAyMS40OTEtNDggNDgtNDh6bTIwOCAyNDBoLTI1NmwuNDg1LTQ4LjQ4NUwxMDQuNTQ1IDMyOGM0LjY4Ni00LjY4NiAxMS43OTktNC4yMDEgMTYuNDg1LjQ4NUwxNjAuNTQ1IDM2OCAyNjQuMDYgMjY0LjQ4NWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBMMzIwLjU0NSAzMDR2MTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlSW1wb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDI4OGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgxMTJ2LTY0em00ODktMTgzTDQwNy4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMzg0djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgxNTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI2NGgxMjh2LTY1LjJjMC0xNC4zIDE3LjMtMjEuNCAyNy40LTExLjNMMzc5IDMwOGM2LjYgNi43IDYuNiAxNy40IDAgMjRsLTk1LjcgOTYuNGMtMTAuMSAxMC4xLTI3LjQgMy0yNy40LTExLjNWMzUySDEyOHYxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgzNzZjLTEzLjIgMC0yNC0xMC44LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlSW52b2ljZURvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNNjQgNzJjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04Vjcyem0wIDgwdi0xNmMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh6bTE0NCAyNjMuODhWNDQwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTI0LjI5Yy0xMS4yOS0uNTgtMjIuMjctNC41Mi0zMS4zNy0xMS4zNS0zLjktMi45My00LjEtOC43Ny0uNTctMTIuMTRsMTEuNzUtMTEuMjFjMi43Ny0yLjY0IDYuODktMi43NiAxMC4xMy0uNzMgMy44NyAyLjQyIDguMjYgMy43MiAxMi44MiAzLjcyaDI4LjExYzYuNSAwIDExLjgtNS45MiAxMS44LTEzLjE5IDAtNS45NS0zLjYxLTExLjE5LTguNzctMTIuNzNsLTQ1LTEzLjVjLTE4LjU5LTUuNTgtMzEuNTgtMjMuNDItMzEuNTgtNDMuMzkgMC0yNC41MiAxOS4wNS00NC40NCA0Mi42Ny00NS4wN1YyMzJjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MjQuMjljMTEuMjkuNTggMjIuMjcgNC41MSAzMS4zNyAxMS4zNSAzLjkgMi45MyA0LjEgOC43Ny41NyAxMi4xNGwtMTEuNzUgMTEuMjFjLTIuNzcgMi42NC02Ljg5IDIuNzYtMTAuMTMuNzMtMy44Ny0yLjQzLTguMjYtMy43Mi0xMi44Mi0zLjcyaC0yOC4xMWMtNi41IDAtMTEuOCA1LjkyLTExLjggMTMuMTkgMCA1Ljk1IDMuNjEgMTEuMTkgOC43NyAxMi43M2w0NSAxMy41YzE4LjU5IDUuNTggMzEuNTggMjMuNDIgMzEuNTggNDMuMzkgMCAyNC41My0xOS4wNSA0NC40NC00Mi42NyA0NS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUludm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDI1Nkg5NnY2NGgxOTJ2LTY0em04OS0xNTFMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXptLTE1MyAzMVYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0ek02NCA3MmMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LThWNzJ6bTAgNjRjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di0xNnptMjU2IDMwNGMwIDQuNDItMy41OCA4LTggOGgtODBjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNnptMC0yMDB2OTZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di05NmMwLTguODQgNy4xNi0xNiAxNi0xNmgyMjRjOC44NCAwIDE2IDcuMTYgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVNZWRpY2FsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxMzZWMEg4OEM3NC43IDAgNjQgMTAuNyA2NCAyNHYyMzJIOGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOGgxNDAuOWMzIDAgNS44IDEuNyA3LjIgNC40bDE5LjkgMzkuOCA1Ni44LTExMy43YzIuOS01LjkgMTEuNC01LjkgMTQuMyAwbDM0LjcgNjkuNUgzNTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZoLTg5LjlMMjQwIDI3NS44bC01Ni44IDExMy43Yy0yLjkgNS45LTExLjQgNS45LTE0LjMgMEwxMzQuMSAzMjBINjR2MTY4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMzEyYy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptMTUzLTMxTDM0My4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMzIwdjEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3NyAxMDVMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXptLTE1MyAzMVYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02NCAxNjB2NDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4MS45IDI1Ni4xYy01LTE2LTQuOS00Ni45LTItNDYuOSA4LjQgMCA3LjYgMzYuOSAyIDQ2Ljl6bS0xLjcgNDcuMmMtNy43IDIwLjItMTcuMyA0My4zLTI4LjQgNjIuNyAxOC4zLTcgMzktMTcuMiA2Mi45LTIxLjktMTIuNy05LjYtMjQuOS0yMy40LTM0LjUtNDAuOHpNODYuMSA0MjguMWMwIC44IDEzLjItNS40IDM0LjktNDAuMi02LjcgNi4zLTI5LjEgMjQuNS0zNC45IDQwLjJ6TTI0OCAxNjBoMTM2djMyOGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMjRDMCAxMC43IDEwLjcgMCAyNCAwaDIwMHYxMzZjMCAxMy4yIDEwLjggMjQgMjQgMjR6bS04IDE3MS44Yy0yMC0xMi4yLTMzLjMtMjktNDIuNy01My44IDQuNS0xOC41IDExLjYtNDYuNiA2LjItNjQuMi00LjctMjkuNC00Mi40LTI2LjUtNDcuOC02LjgtNSAxOC4zLS40IDQ0LjEgOC4xIDc3LTExLjYgMjcuNi0yOC43IDY0LjYtNDAuOCA4NS44LS4xIDAtLjEuMS0uMi4xLTI3LjEgMTMuOS03My42IDQ0LjUtNTQuNSA2OCA1LjYgNi45IDE2IDEwIDIxLjUgMTAgMTcuOSAwIDM1LjctMTggNjEuMS02MS44IDI1LjgtOC41IDU0LjEtMTkuMSA3OS0yMy4yIDIxLjcgMTEuOCA0Ny4xIDE5LjUgNjQgMTkuNSAyOS4yIDAgMzEuMi0zMiAxOS43LTQzLjQtMTMuOS0xMy42LTU0LjMtOS43LTczLjYtNy4yek0zNzcgMTA1TDI3OSA3Yy00LjUtNC41LTEwLjYtNy0xNy03aC02djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS03NC4xIDI1NS4zYzQuMS0yLjctMi41LTExLjktNDIuOC05IDM3LjEgMTUuOCA0Mi44IDkgNDIuOCA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUG93ZXJwb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTMuNyAyNzEuMmM4LjggMCAxNS41IDIuNyAyMC4zIDguMSA5LjYgMTAuOSA5LjggMzIuNy0uMiA0NC4xLTQuOSA1LjYtMTEuOSA4LjUtMjEuMSA4LjVoLTI2Ljl2LTYwLjdoMjcuOXpNMzc3IDEwNUwyNzkgN2MtNC41LTQuNS0xMC42LTctMTctN2gtNnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTUzIDE2NS4yYzAgOTAuMy04OC44IDc3LjYtMTExLjEgNzcuNlY0MzZjMCA2LjYtNS40IDEyLTEyIDEyaC0zMC44Yy02LjYgMC0xMi01LjQtMTItMTJWMjM2LjJjMC02LjYgNS40LTEyIDEyLTEyaDgxYzQ0LjUgMCA3Mi45IDMyLjggNzIuOSA3N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVByZXNjcmlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTY4LjUzIDE3OS40OGwxMS4zMSAxMS4zMWM2LjI1IDYuMjUgNi4yNSAxNi4zOCAwIDIyLjYzbC0yOS45IDI5LjlMMzA0IDQwOS4zOGM2LjI1IDYuMjUgNi4yNSAxNi4zOCAwIDIyLjYzbC0xMS4zMSAxMS4zMWMtNi4yNSA2LjI1LTE2LjM4IDYuMjUtMjIuNjMgMEwyNDAgNDEzLjI1bC0zMC4wNiAzMC4wNmMtNi4yNSA2LjI1LTE2LjM4IDYuMjUtMjIuNjMgMEwxNzYgNDMyYy02LjI1LTYuMjUtNi4yNS0xNi4zOCAwLTIyLjYzbDMwLjA2LTMwLjA2TDE0Ni43NCAzMjBIMTI4djQ4YzAgOC44NC03LjE2IDE2LTE2IDE2SDk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNlYyMDhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjMzUuMzUgMCA2NCAyOC42NSA2NCA2NCAwIDI0LjIyLTEzLjYyIDQ1LjA1LTMzLjQ2IDU1LjkyTDI0MCAzNDUuMzhsMjkuOS0yOS45YzYuMjUtNi4yNSAxNi4zOC02LjI1IDIyLjYzIDB6TTE3NiAyNzJoLTQ4di0zMmg0OGM4LjgyIDAgMTYgNy4xOCAxNiAxNnMtNy4xOCAxNi0xNiAxNnptMjA4LTE1MC4xdjYuMUgyNTZWMGg2LjFjNi40IDAgMTIuNSAyLjUgMTcgN2w5Ny45IDk4YzQuNSA0LjUgNyAxMC42IDcgMTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVNpZ25hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTguMTcgNDI0LjE0Yy0yLjk1LTUuOTItOC4wOS02LjUyLTEwLjE3LTYuNTJzLTcuMjIuNTktMTAuMDIgNi4xOWwtNy42NyAxNS4zNGMtNi4zNyAxMi43OC0yNS4wMyAxMS4zNy0yOS40OC0yLjA5TDE0NCAzODYuNTlsLTEwLjYxIDMxLjg4Yy01Ljg5IDE3LjY2LTIyLjM4IDI5LjUzLTQxIDI5LjUzSDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2aDEyLjM5YzQuODMgMCA5LjExLTMuMDggMTAuNjQtNy42NmwxOC4xOS01NC42NGMzLjMtOS44MSAxMi40NC0xNi40MSAyMi43OC0xNi40MXMxOS40OCA2LjU5IDIyLjc3IDE2LjQxbDEzLjg4IDQxLjY0YzE5Ljc1LTE2LjE5IDU0LjA2LTkuNyA2NiAxNC4xNiAxLjg5IDMuNzggNS40OSA1Ljk1IDkuMzYgNi4yNnYtODIuMTJsMTI4LTEyNy4wOVYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNFYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0di00MGwtMTI4LS4xMWMtMTYuMTItLjMxLTMwLjU4LTkuMjgtMzcuODMtMjMuNzV6TTM4NCAxMjEuOWMwLTYuMy0yLjUtMTIuNC03LTE2LjlMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xem0tOTYgMjI1LjA2VjQxNmg2OC45OWwxNjEuNjgtMTYyLjc4LTY3Ljg4LTY3Ljg4TDI4OCAzNDYuOTZ6bTI4MC41NC0xNzkuNjNsLTMxLjg3LTMxLjg3Yy05Ljk0LTkuOTQtMjYuMDctOS45NC0zNi4wMSAwbC0yNy4yNSAyNy4yNSA2Ny44OCA2Ny44OCAyNy4yNS0yNy4yNWM5Ljk1LTkuOTQgOS45NS0yNi4wNyAwLTM2LjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjUuMTggMjE2LjAxSDIyNHY4MGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di04MEg5NC44MmMtMTQuMjggMC0yMS40MS0xNy4yOS0xMS4yNy0yNy4zNmw5Ni40Mi05NS43YzYuNjUtNi42MSAxNy4zOS02LjYxIDI0LjA0IDBsOTYuNDIgOTUuN2MxMC4xNSAxMC4wNyAzLjAzIDI3LjM2LTExLjI1IDI3LjM2ek0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTIxLjk0MVYxMjhIMjU2VjBoNi4wNTljNi4zNjUgMCAxMi40NyAyLjUyOSAxNi45NzEgNy4wMjlsOTcuOTQxIDk3Ljk0MUEyNC4wMDUgMjQuMDA1IDAgMCAxIDM4NCAxMjEuOTQxek0yMjQgMTM2VjBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHY0NjRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTk2IDE0NC4wMTZ2MTExLjk2M2MwIDIxLjQ0NS0yNS45NDMgMzEuOTk4LTQwLjk3MSAxNi45NzFMMjI0IDM1My45NDFWMzkyYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEg4OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjI4MGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTEyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYzOC4wNTlsNTUuMDI5LTU1LjAxM2MxNS4wMTEtMTUuMDEgNDAuOTcxLTQuNDkxIDQwLjk3MSAxNi45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVdvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em01Ny4xIDEyMEgzMDVjNy43IDAgMTMuNCA3LjEgMTEuNyAxNC43bC0zOCAxNjhjLTEuMiA1LjUtNi4xIDkuMy0xMS43IDkuM2gtMzhjLTUuNSAwLTEwLjMtMy44LTExLjYtOS4xLTI1LjgtMTAzLjUtMjAuOC04MS4yLTI1LjYtMTEwLjVoLS41Yy0xLjEgMTQuMy0yLjQgMTcuNC0yNS42IDExMC41LTEuMyA1LjMtNi4xIDkuMS0xMS42IDkuMUgxMTdjLTUuNiAwLTEwLjUtMy45LTExLjctOS40bC0zNy44LTE2OGMtMS43LTcuNSA0LTE0LjYgMTEuNy0xNC42aDI0LjVjNS43IDAgMTAuNyA0IDExLjggOS43IDE1LjYgNzggMjAuMSAxMDkuNSAyMSAxMjIuMiAxLjYtMTAuMiA3LjMtMzIuNyAyOS40LTEyMi43IDEuMy01LjQgNi4xLTkuMSAxMS43LTkuMWgyOS4xYzUuNiAwIDEwLjQgMy44IDExLjcgOS4yIDI0IDEwMC40IDI4LjggMTI0IDI5LjYgMTI5LjQtLjItMTEuMi0yLjYtMTcuOCAyMS42LTEyOS4yIDEtNS42IDUuOS05LjUgMTEuNS05LjV6TTM4NCAxMjEuOXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0xNjAtMTQuMXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGxEcmlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAzMjBzLTY0IDkyLjY1LTY0IDEyOGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0czY0LTI4LjY1IDY0LTY0LTY0LTEyOC02NC0xMjh6bS05LjM3LTEwMi45NEwyOTQuOTQgOS4zN0MyODguNjkgMy4xMiAyODAuNSAwIDI3Mi4zMSAwcy0xNi4zOCAzLjEyLTIyLjYyIDkuMzdsLTgxLjU4IDgxLjU4TDgxLjkzIDQuNzZjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYyIDBMMzYuNjkgMjcuMzhjLTYuMjQgNi4yNS02LjI0IDE2LjM4IDAgMjIuNjJsODYuMTkgODYuMTgtOTQuNzYgOTQuNzZjLTM3LjQ5IDM3LjQ4LTM3LjQ5IDk4LjI2IDAgMTM1Ljc1bDExNy4xOSAxMTcuMTljMTguNzQgMTguNzQgNDMuMzEgMjguMTIgNjcuODcgMjguMTIgMjQuNTcgMCA0OS4xMy05LjM3IDY3Ljg3LTI4LjEybDIyMS41Ny0yMjEuNTdjMTIuNS0xMi41IDEyLjUtMzIuNzUuMDEtNDUuMjV6bS0xMTYuMjIgNzAuOTdINjUuOTNjMS4zNi0zLjg0IDMuNTctNy45OCA3LjQzLTExLjgzbDEzLjE1LTEzLjE1IDgxLjYxLTgxLjYxIDU4LjYgNTguNmMxMi40OSAxMi40OSAzMi43NSAxMi40OSA0NS4yNCAwczEyLjQ5LTMyLjc1IDAtNDUuMjRsLTU4LjYtNTguNiA1OC45NS01OC45NSAxNjIuNDQgMTYyLjQ0LTQ4LjM0IDQ4LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi42MyAyMTcuMDZMMjk0Ljk0IDkuMzdDMjg4LjY5IDMuMTIgMjgwLjUgMCAyNzIuMzEgMHMtMTYuMzggMy4xMi0yMi42MiA5LjM3bC04MS41OCA4MS41OEw4MS45MyA0Ljc3Yy02LjI0LTYuMjUtMTYuMzgtNi4yNS0yMi42MiAwTDM2LjY5IDI3LjM4Yy02LjI0IDYuMjUtNi4yNCAxNi4zOCAwIDIyLjYzbDg2LjE5IDg2LjE4LTk0Ljc2IDk0Ljc2Yy0zNy40OSAzNy40OS0zNy40OSA5OC4yNiAwIDEzNS43NWwxMTcuMTkgMTE3LjE5YzE4Ljc1IDE4Ljc0IDQzLjMxIDI4LjEyIDY3Ljg3IDI4LjEyIDI0LjU3IDAgNDkuMTMtOS4zNyA2Ny44OC0yOC4xMmwyMjEuNTctMjIxLjU3YzEyLjQ5LTEyLjUgMTIuNDktMzIuNzYgMC00NS4yNnptLTExNi4yMiA3MC45N0g2NS45M2MxLjM2LTMuODQgMy41Ny03Ljk4IDcuNDMtMTEuODNsMTMuMTUtMTMuMTUgODEuNjEtODEuNjEgNTguNjEgNTguNmMxMi40OSAxMi40OSAzMi43NSAxMi40OSA0NS4yNCAwIDEyLjQ5LTEyLjQ5IDEyLjQ5LTMyLjc1IDAtNDUuMjRsLTU4LjYxLTU4LjYgNTguOTUtNTguOTUgMTYyLjQ1IDE2Mi40NC00OC4zNSA0OC4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggNjRoLTh2MjBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEyVjY0SDk2djIwYzAgNi42LTUuNCAxMi0xMiAxMkg0NGMtNi42IDAtMTItNS40LTEyLTEyVjY0aC04QzEwLjcgNjQgMCA3NC43IDAgODh2MzM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDh2LTIwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjBoMzIwdi0yMGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjIwaDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWODhjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTk2IDM3MmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMjcyIDIwOGMwIDYuNi01LjQgMTItMTIgMTJIMTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTk2YzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjk2em0wLTE2OGMwIDYuNi01LjQgMTItMTIgMTJIMTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTk2YzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjk2em0xMTIgMTUyYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg3Ljk3NiAwSDI0LjAyOEMyLjcxIDAtOC4wNDcgMjUuODY2IDcuMDU4IDQwLjk3MUwxOTIgMjI1Ljk0MVY0MzJjMCA3LjgzMSAzLjgyMSAxNS4xNyAxMC4yMzcgMTkuNjYybDgwIDU1Ljk4QzI5OC4wMiA1MTguNjkgMzIwIDUwNy40OTMgMzIwIDQ4Ny45OFYyMjUuOTQxbDE4NC45NDctMTg0Ljk3QzUyMC4wMjEgMjUuODk2IDUwOS4zMzggMCA0ODcuOTc2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbmdlcnByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni4xMiAyNDUuOTZjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjQgMS4xNCA3Mi4yNS04LjE0IDE0MS45LTI3LjcgMjExLjU1LTIuNzMgOS43MiAyLjE1IDMwLjQ5IDIzLjEyIDMwLjQ5IDEwLjQ4IDAgMjAuMTEtNi45MiAyMy4wOS0xNy41MiAxMy41My00Ny45MSAzMS4wNC0xMjUuNDEgMjkuNDgtMjI0LjUyLjAxLTEzLjI1LTEwLjczLTI0LTIzLjk5LTI0em0tLjg2LTgxLjczQzE5NCAxNjQuMTYgMTUxLjI1IDIxMS4zIDE1Mi4xIDI2NS4zMmMuNzUgNDcuOTQtMy43NSA5NS45MS0xMy4zNyAxNDIuNTUtMi42OSAxMi45OCA1LjY3IDI1LjY5IDE4LjY0IDI4LjM2IDEzLjA1IDIuNjcgMjUuNjctNS42NiAyOC4zNi0xOC42NCAxMC4zNC01MC4wOSAxNS4xNy0xMDEuNTggMTQuMzctMTUzLjAyLS40MS0yNS45NSAxOS45Mi01Mi40OSA1NC40NS01Mi4zNCAzMS4zMS40NyA1Ny4xNSAyNS4zNCA1Ny42MiA1NS40Ny43NyA0OC4wNS0yLjgxIDk2LjMzLTEwLjYxIDE0My41NS0yLjE3IDEzLjA2IDYuNjkgMjUuNDIgMTkuNzYgMjcuNTggMTkuOTcgMy4zMyAyNi44MS0xNS4xIDI3LjU4LTE5Ljc3IDguMjgtNTAuMDMgMTIuMDYtMTAxLjIxIDExLjI3LTE1Mi4xMS0uODgtNTUuOC00Ny45NC0xMDEuODgtMTA0LjkxLTEwMi43MnptLTExMC42OS0xOS43OGMtMTAuMy04LjM0LTI1LjM3LTYuOC0zMy43NiAzLjQ4LTI1LjYyIDMxLjUtMzkuMzkgNzEuMjgtMzguNzUgMTEyIC41OSAzNy41OC0yLjQ3IDc1LjI3LTkuMTEgMTEyLjA1LTIuMzQgMTMuMDUgNi4zMSAyNS41MyAxOS4zNiAyNy44OSAyMC4xMSAzLjUgMjcuMDctMTQuODEgMjcuODktMTkuMzYgNy4xOS0zOS44NCAxMC41LTgwLjY2IDkuODYtMTIxLjMzLS40Ny0yOS44OCA5LjItNTcuODggMjgtODAuOTcgOC4zNS0xMC4yOCA2Ljc5LTI1LjM5LTMuNDktMzMuNzZ6bTEwOS40Ny02Mi4zM2MtMTUuNDEtLjQxLTMwLjg3IDEuNDQtNDUuNzggNC45Ny0xMi44OSAzLjA2LTIwLjg3IDE1Ljk4LTE3LjgzIDI4Ljg5IDMuMDYgMTIuODkgMTYgMjAuODMgMjguODkgMTcuODMgMTEuMDUtMi42MSAyMi40Ny0zLjc3IDM0LTMuNjkgNzUuNDMgMS4xMyAxMzcuNzMgNjEuNSAxMzguODggMTM0LjU4LjU5IDM3Ljg4LTEuMjggNzYuMTEtNS41OCAxMTMuNjMtMS41IDEzLjE3IDcuOTUgMjUuMDggMjEuMTEgMjYuNTggMTYuNzIgMS45NSAyNS41MS0xMS44OCAyNi41OC0yMS4xMWE5MjkuMDYgOTI5LjA2IDAgMCAwIDUuODktMTE5Ljg1Yy0xLjU2LTk4Ljc1LTg1LjA3LTE4MC4zMy0xODYuMTYtMTgxLjgzem0yNTIuMDcgMTIxLjQ1Yy0yLjg2LTEyLjkyLTE1LjUxLTIxLjItMjguNjEtMTguMjctMTIuOTQgMi44Ni0yMS4xMiAxNS42Ni0xOC4yNiAyOC42MSA0LjcxIDIxLjQxIDQuOTEgMzcuNDEgNC43IDYxLjYtLjExIDEzLjI3IDEwLjU1IDI0LjA5IDIzLjggMjQuMmguMmMxMy4xNyAwIDIzLjg5LTEwLjYxIDI0LTIzLjguMTgtMjIuMTguNC00NC4xMS01LjgzLTcyLjM0em0tNDAuMTItOTAuNzJDNDE3LjI5IDQzLjQ2IDMzNy42IDEuMjkgMjUyLjgxLjAyIDE4My4wMi0uODIgMTE4LjQ3IDI0LjkxIDcwLjQ2IDcyLjk0IDI0LjA5IDExOS4zNy0uOSAxODEuMDQuMTQgMjQ2LjY1bC0uMTIgMjEuNDdjLS4zOSAxMy4yNSAxMC4wMyAyNC4zMSAyMy4yOCAyNC42OS4yMy4wMi40OC4wMi43Mi4wMiAxMi45MiAwIDIzLjU5LTEwLjMgMjMuOTctMjMuM2wuMTYtMjMuNjRjLS44My01Mi41IDE5LjE2LTEwMS44NiA1Ni4yOC0xMzkgMzguNzYtMzguOCA5MS4zNC01OS42NyAxNDcuNjgtNTguODYgNjkuNDUgMS4wMyAxMzQuNzMgMzUuNTYgMTc0LjYyIDkyLjM5IDcuNjEgMTAuODYgMjIuNTYgMTMuNDUgMzMuNDIgNS44NiAxMC44NC03LjYyIDEzLjQ2LTIyLjU5IDUuODQtMzMuNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzLjU2IDUxLjJjLTIwLjggMTkuMy0zOS41OCAzOS41OS01Ni4yMiA1OS45N0MyNDAuMDggNzMuNjIgMjA2LjI4IDM1LjUzIDE2OCAwIDY5Ljc0IDkxLjE3IDAgMjA5Ljk2IDAgMjgxLjYgMCA0MDguODUgMTAwLjI5IDUxMiAyMjQgNTEyczIyNC0xMDMuMTUgMjI0LTIzMC40YzAtNTMuMjctNTEuOTgtMTYzLjE0LTEyNC40NC0yMzAuNHptLTE5LjQ3IDM0MC42NUMyODIuNDMgNDA3LjAxIDI1NS43MiA0MTYgMjI2Ljg2IDQxNiAxNTQuNzEgNDE2IDk2IDM2OC4yNiA5NiAyOTAuNzVjMC0zOC42MSAyNC4zMS03Mi42MyA3Mi43OS0xMzAuNzUgNi45MyA3Ljk4IDk4LjgzIDEyNS4zNCA5OC44MyAxMjUuMzRsNTguNjMtNjYuODhjNC4xNCA2Ljg1IDcuOTEgMTMuNTUgMTEuMjcgMTkuOTcgMjcuMzUgNTIuMTkgMTUuODEgMTE4Ljk3LTMzLjQzIDE1My40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyZUV4dGluZ3Vpc2hlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzQuMDI3IDI2LjMyOWwtMTY4IDI4QzI1NC42OTMgNTYuMjE4IDI1NiA2Ny44IDI1NiA3MmgtNTguMzMyQzIwOC4zNTMgMzYuMTA4IDE4MS40NDYgMCAxNDQgMGMtMzkuNDM1IDAtNjYuMzY4IDM5LjY3Ni01Mi4yMjggNzYuMjAzLTUyLjAzOSAxMy4wNTEtNzUuMzgxIDU0LjIxMy05MC4wNDkgOTAuODg0LTQuOTIzIDEyLjMwNyAxLjA2MyAyNi4yNzQgMTMuMzcgMzEuMTk3IDEyLjMxNyA0LjkyNiAyNi4yNzktMS4wNzUgMzEuMTk2LTEzLjM3Qzc1LjA1OCAxMTIuOTkgMTA2Ljk2NCAxMjAgMTY4IDEyMHYyNy4wNzZjLTQxLjU0MyAxMC44NjItNzIgNDkuMjM1LTcyIDk0LjEyOVY0ODhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE0NGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjQwYzAtNDQuNzMxLTMwLjU5Ni04Mi4zMTItNzItOTIuOTdWMTIwaDQwYzAgMi45NzQtMS43MDMgMTUuNzE2IDEwLjAyNyAxNy42NzFsMTY4IDI4QzQ0MS4zNDIgMTY2Ljg5IDQ0OCAxNjEuMjUgNDQ4IDE1My44MzRWMzguMTY2YzAtNy40MTYtNi42NTgtMTMuMDU2LTEzLjk3My0xMS44Mzd6TTE0NCA3MmMtOC44MjIgMC0xNi03LjE3OC0xNi0xNnM3LjE3OC0xNiAxNi0xNiAxNiA3LjE3OCAxNiAxNi03LjE3OCAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgMjMuODZjMC0yMy44LTMwLjY1LTMyLjc3LTQ0LjE1LTEzLjA0QzQ4IDE5MS44NSAyMjQgMjAwIDIyNCAyODhjMCAzNS42My0yOS4xMSA2NC40Ni02NC44NSA2My45OS0zNS4xNy0uNDUtNjMuMTUtMjkuNzctNjMuMTUtNjQuOTR2LTg1LjUxYzAtMjEuNy0yNi40Ny0zMi4yMy00MS40My0xNi41QzI3LjggMjEzLjE2IDAgMjYxLjMzIDAgMzIwYzAgMTA1Ljg3IDg2LjEzIDE5MiAxOTIgMTkyczE5Mi04Ni4xMyAxOTItMTkyYzAtMTcwLjI5LTE2OC0xOTMtMTY4LTI5Ni4xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyc3RBaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDhWMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHptMTI4IDQwMGgzMjBWMzJIMTI4djQ0OHptNjQtMjQ4YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh2NDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OHpNNTI4IDMyaC00OHY0NDhoNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI3LjEgOTZjLTg5Ljk3IDAtMTY4LjU0IDU0Ljc3LTIxMi4yNyAxMDEuNjNMMjcuNSAxMzEuNThjLTEyLjEzLTkuMTgtMzAuMjQuNi0yNy4xNCAxNC42NkwyNC41NCAyNTYgLjM1IDM2NS43N2MtMy4xIDE0LjA2IDE1LjAxIDIzLjgzIDI3LjE0IDE0LjY2bDg3LjMzLTY2LjA1QzE1OC41NSAzNjEuMjMgMjM3LjEzIDQxNiAzMjcuMSA0MTYgNDY0LjU2IDQxNiA1NzYgMjg4IDU3NiAyNTZTNDY0LjU2IDk2IDMyNy4xIDk2em04Ny40MyAxODRjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNCAxMy4yNiAwIDI0IDEwLjc0IDI0IDI0IDAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpc3RSYWlzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1Ljk4IDE2MFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0Ni45M2M1LjAyLTEuNzggMTAuMzQtMi45MyAxNS45Ny0yLjkzaDQ4LjAzem0xMjggOTUuOTljLS4wMS0zNS4zNC0yOC42Ni02My45OS02My45OS02My45OUgyMDcuODVjLTguNzggMC0xNS45IDcuMDctMTUuOSAxNS44NXYuNTZjMCAyNi4yNyAyMS4zIDQ3LjU5IDQ3LjU3IDQ3LjU5aDM1LjI2YzkuNjggMCAxMy4yIDMuNTggMTMuMiA4djE2LjJjMCA0LjI5LTMuNTkgNy43OC03Ljg4IDgtNDQuNTIgMi4yOC02NC4xNiAyNC43MS05Ni4wNSA3Mi41NWwtNi4zMSA5LjQ3YTcuOTk0IDcuOTk0IDAgMCAxLTExLjA5IDIuMjJsLTEzLjMxLTguODhhNy45OTQgNy45OTQgMCAwIDEtMi4yMi0xMS4wOWw2LjMxLTkuNDdjMTUuNzMtMjMuNiAzMC4yLTQzLjI2IDQ3LjMxLTU4LjA4LTE3LjI3LTUuNTEtMzEuNC0xOC4xMi0zOC44Ny0zNC40NS02LjU5IDMuNDEtMTMuOTYgNS41Mi0yMS44NyA1LjUyaC0zMmMtMTIuMzQgMC0yMy40OS00LjgxLTMyLTEyLjQ4QzcxLjQ4IDI1MS4xOSA2MC4zMyAyNTYgNDggMjU2SDE2Yy01LjY0IDAtMTAuOTctMS4xNS0xNi0yLjk1djc3LjkzYzAgMzMuOTUgMTMuNDggNjYuNSAzNy40OSA5MC41MUw2My45OSA0NDh2NjRoMjU1Ljk4di02My45NmwzNS45MS0zNS45MkE5Ni4wMzUgOTYuMDM1IDAgMCAwIDM4NCAzNDQuMjFsLS4wMi04OC4yMnptLTMyLjAxLTkwLjA5VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTEyaDMyYzExLjI4IDAgMjEuOTQgMi4zMSAzMiA1Ljl6TTE2IDIyNGgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlY4MGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDY0IDAgNzEuMTYgMCA4MHYxMjhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6bTk1Ljk5IDBoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNjBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsYWdDaGVja2VyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQzLjIgMTg5LjlWMjU4YzI2LjEgNS45IDQ5LjMgMTUuNiA3My42IDIyLjN2LTY4LjJjLTI2LTUuOC00OS40LTE1LjUtNzMuNi0yMi4yem0yMjMuMy0xMjNjLTM0LjMgMTUuOS03Ni41IDMxLjktMTE3IDMxLjlDMjk2IDk4LjggMjUxLjcgNjQgMTg0LjMgNjRjLTI1IDAtNDcuMyA0LjQtNjggMTIgMi44LTcuMyA0LjEtMTUuMiAzLjYtMjMuNkMxMTguMSAyNCA5NC44IDEuMiA2Ni4zIDAgMzQuMy0xLjMgOCAyNC4zIDggNTZjMCAxOSA5LjUgMzUuOCAyNCA0NS45VjQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtOTQuNGMyOC4zLTEyLjEgNjMuNi0yMi4xIDExNC40LTIyLjEgNTMuNiAwIDk3LjggMzQuOCAxNjUuMiAzNC44IDQ4LjIgMCA4Ni43LTE2LjMgMTIyLjUtNDAuOSA4LjctNiAxMy44LTE1LjggMTMuOC0yNi40Vjk1LjljLjEtMjMuMy0yNC4yLTM4LjgtNDUuNC0yOXpNMTY5LjYgMzI1LjVjLTI1LjggMi43LTUwIDguMi03My42IDE2LjZ2LTcwLjVjMjYuMi05LjMgNDcuNS0xNSA3My42LTE3LjR6TTQ2NCAxOTFjLTIzLjYgOS44LTQ2LjMgMTkuNS03My42IDIzLjlWMjg2YzI0LjgtMy40IDUxLjQtMTEuOCA3My42LTI2djcwLjVjLTI1LjEgMTYuMS00OC41IDI0LjctNzMuNiAyNy4xVjI4NmMtMjcgMy43LTQ3LjkgMS41LTczLjYtNS42djY3LjRjLTIzLjktNy40LTQ3LjMtMTYuNy03My42LTIxLjNWMjU4Yy0xOS43LTQuNC00MC44LTYuOC03My42LTMuOHYtNzBjLTIyLjQgMy4xLTQ0LjYgMTAuMi03My42IDIwLjl2LTcwLjVjMzMuMi0xMi4yIDUwLjEtMTkuOCA3My42LTIydjcxLjZjMjctMy43IDQ4LjQtMS4zIDczLjYgNS43di02Ny40YzIzLjcgNy40IDQ3LjIgMTYuNyA3My42IDIxLjN2NjguNGMyMy43IDUuMyA0Ny42IDYuOSA3My42IDIuN1YxNDNjMjctNC44IDUyLjMtMTMuNiA3My42LTIyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsYWdVc2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEMxNC4zIDAgMCAxNC4zIDAgMzJ2NDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzJDNjQgMTQuMyA0OS43IDAgMzIgMHptMjY3LjkgMzAzLjZjLTU3LjItMTUuMS0xMTEuNy0yOC44LTIwMy45IDExLjFWMzg0YzE4NS43LTkyLjIgMjIxLjcgNTMuMyAzOTcuNS0yMy4xIDExLjQtNSAxOC41LTE2LjUgMTguNS0yOC44di0zNmMtNDMuNiAxNy4zLTgwLjIgMjQuMS0xMTIuMSAyNC4xLTM3LjQtLjEtNjguOS04LjQtMTAwLTE2LjZ6bTAtOTZjLTU3LjItMTUuMS0xMTEuNy0yOC44LTIwMy45IDExLjF2NjEuNWM5NC44LTM3LjYgMTU0LjYtMjIuNyAyMTIuMS03LjYgNTcuMiAxNS4xIDExMS43IDI4LjggMjAzLjktMTEuMVYyMDBjLTQzLjYgMTcuMy04MC4yIDI0LjEtMTEyLjEgMjQuMS0zNy40IDAtNjguOS04LjMtMTAwLTE2LjV6bTkuNS0xMjUuOWM1MS44IDE1LjYgOTcuNCAyOSAyMDIuNi0yMC4xVjMwLjhjMC0yNS4xLTI2LjgtMzguMS00OS40LTI2LjZDMjkxLjMgOTEuNSAzMDUuNC02Mi4yIDk2IDMyLjR2MTUxLjljOTQuOC0zNy41IDE1NC42LTIyLjcgMjEyLjEtNy42IDU3LjIgMTUgMTExLjcgMjguNyAyMDMuOS0xMS4xVjk2LjdjLTUzLjYgMjMuNS05My4zIDMxLjQtMTI2LjEgMzEuNHMtNTktNy44LTg1LjctMTUuOWMtNC0xLjItOC4xLTIuNC0xMi4xLTMuNVY3NS41YzcuMiAyIDE0LjMgNC4xIDIxLjMgNi4yek0xNjAgMTI4LjFjLTguOCAwLTE2LTcuMS0xNi0xNiAwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4xIDE2IDE2LTcuMiAxNi0xNiAxNnptMC01NS44Yy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNmMwIDguOC03LjIgMTYtMTYgMTZ6bTY0IDQ3LjljLTguOCAwLTE2LTcuMS0xNi0xNiAwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4xIDE2IDE2YzAgOC44LTcuMiAxNi0xNiAxNnptMC01NS45Yy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNmMwIDguOC03LjIgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ5LjU2NSA5OC43ODNDMjk1Ljk3OCA5OC43ODMgMjUxLjcyMSA2NCAxODQuMzQ4IDY0Yy0yNC45NTUgMC00Ny4zMDkgNC4zODQtNjguMDQ1IDEyLjAxM2E1NS45NDcgNTUuOTQ3IDAgMCAwIDMuNTg2LTIzLjU2MkMxMTguMTE3IDI0LjAxNSA5NC44MDYgMS4yMDYgNjYuMzM4LjA0OCAzNC4zNDUtMS4yNTQgOCAyNC4yOTYgOCA1NmMwIDE5LjAyNiA5LjQ5NyAzNS44MjUgMjQgNDUuOTQ1VjQ4OGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di05NC40YzI4LjMxMS0xMi4wNjQgNjMuNTgyLTIyLjEyMiAxMTQuNDM1LTIyLjEyMiA1My41ODggMCA5Ny44NDQgMzQuNzgzIDE2NS4yMTcgMzQuNzgzIDQ4LjE2OSAwIDg2LjY2Ny0xNi4yOTQgMTIyLjUwNS00MC44NThDNTA2Ljg0IDM1OS40NTIgNTEyIDM0OS41NzEgNTEyIDMzOS4wNDV2LTI0My4xYzAtMjMuMzkzLTI0LjI2OS0zOC44Ny00NS40ODUtMjkuMDE2LTM0LjMzOCAxNS45NDgtNzYuNDU0IDMxLjg1NC0xMTYuOTUgMzEuODU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzcuMiA0MDMuNUwzMjAgMjE1VjY0aDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4djE1MUwxMC44IDQwMy41Qy0xOC41IDQ1MC42IDE1LjMgNTEyIDcwLjkgNTEyaDMwNi4yYzU1LjcgMCA4OS40LTYxLjUgNjAuMS0xMDguNXpNMTM3LjkgMzIwbDQ4LjItNzcuNmMzLjctNS4yIDUuOC0xMS42IDUuOC0xOC40VjY0aDY0djE2MGMwIDYuOSAyLjIgMTMuMiA1LjggMTguNGw0OC4yIDc3LjZoLTE3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmx1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQgMjAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptLTE5MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNODAgMjI0YzAtMzkuOCAzMi4yLTcyIDcyLTcyczcyIDMyLjIgNzIgNzItMzIuMiA3Mi03MiA3Mi03Mi0zMi4yLTcyLTcyem0yMzIgMTc2SDE4NGMtMjEuMiAwLTIxLjItMzIgMC0zMmgxMjhjMjEuMiAwIDIxLjIgMzIgMCAzMnptMzItMTA0Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcyIDcyIDMyLjIgNzIgNzItMzIuMiA3Mi03MiA3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDEyOEgyNzJsLTY0LTY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTc2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS05NiAxNjhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIMTYwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTkyYzguODQgMCAxNiA3LjE2IDE2IDE2djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3Mi42OTQgMjkyLjA5M0w1MDAuMjcgNDE2LjI0OEE2My45OTcgNjMuOTk3IDAgMCAxIDQ0NC45ODkgNDQ4SDQ1LjAyNWMtMTguNTIzIDAtMzAuMDY0LTIwLjA5My0yMC43MzEtMzYuMDkzbDcyLjQyNC0xMjQuMTU1QTY0IDY0IDAgMCAxIDE1MiAyNTZoMzk5Ljk2NGMxOC41MjMgMCAzMC4wNjQgMjAuMDkzIDIwLjczIDM2LjA5M3pNMTUyIDIyNGgzMjh2LTQ4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhIMjcybC02NC02NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI3OC4wNDZsNjkuMDc3LTExOC40MThDODYuMjE0IDI0Mi4yNSAxMTcuOTg5IDIyNCAxNTIgMjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCwxMjhIMjcyTDIwOCw2NEg0OEE0OCw0OCwwLDAsMCwwLDExMlY0MDBhNDgsNDgsMCwwLDAsNDgsNDhINDY0YTQ4LDQ4LDAsMCwwLDQ4LTQ4VjE3NkE0OCw0OCwwLDAsMCw0NjQsMTI4Wk0zNTkuNSwyOTZhMTYsMTYsMCwwLDEtMTYsMTZoLTY0djY0YTE2LDE2LDAsMCwxLTE2LDE2aC0xNmExNiwxNiwwLDAsMS0xNi0xNlYzMTJoLTY0YTE2LDE2LDAsMCwxLTE2LTE2VjI4MGExNiwxNiwwLDAsMSwxNi0xNmg2NFYyMDBhMTYsMTYsMCwwLDEsMTYtMTZoMTZhMTYsMTYsMCwwLDEsMTYsMTZ2NjRoNjRhMTYsMTYsMCwwLDEsMTYsMTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMTI4SDI3MmwtNjQtNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNzZjMC0yNi41MS0yMS40OS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgNDE2aC0yMy40MUwyNzcuODggNTMuNjlBMzIgMzIgMCAwIDAgMjQ3LjU4IDMyaC00Ny4xNmEzMiAzMiAwIDAgMC0zMC4zIDIxLjY5TDM5LjQxIDQxNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC0xOS41OGwyMy4zLTY0aDE1Mi41NmwyMy4zIDY0SDMwNGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0xNzYuODUgMjcyTDIyNCAxNDIuNTEgMjcxLjE1IDI3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9vdGJhbGxCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MS41IDYwLjNjLTQuOC0xOC4yLTE5LjEtMzIuNS0zNy4zLTM3LjRDNDIwLjMgMTYuNSAzODMgOC45IDMzOS40IDhMNDk2IDE2NC44Yy0uOC00My41LTguMi04MC42LTE0LjUtMTA0LjV6bS00NjcgMzkxLjRjNC44IDE4LjIgMTkuMSAzMi41IDM3LjMgMzcuNCAyMy45IDYuNCA2MS4yIDE0IDEwNC44IDE0LjlMMCAzNDcuMmMuOCA0My41IDguMiA4MC42IDE0LjUgMTA0LjV6TTQuMiAyODMuNEwyMjAuNCA1MDBjMTMyLjUtMTkuNCAyNDguOC0xMTguNyAyNzEuNS0yNzEuNEwyNzUuNiAxMkMxNDMuMSAzMS40IDI2LjggMTMwLjcgNC4yIDI4My40em0zMTcuMy0xMjMuNmMzLjEtMy4xIDguMi0zLjEgMTEuMyAwbDExLjMgMTEuM2MzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0yOC4zIDI4LjMgMjguMyAyOC4zYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtMjguMy0yOC4zLTIyLjYgMjIuNyAyOC4zIDI4LjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwTDI0OCAyNzguNmwtMjIuNiAyMi42IDI4LjMgMjguM2MzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBsLTI4LjMtMjguMy0yOC4zIDI4LjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBsLTExLjMtMTEuM2MtMy4xLTMuMS0zLjEtOC4yIDAtMTEuM2wyOC4zLTI4LjMtMjguMy0yOC4yYy0zLjEtMy4xLTMuMS04LjIgMC0xMS4zbDExLjMtMTEuM2MzLjEtMy4xIDguMi0zLjEgMTEuMyAwbDI4LjMgMjguMyAyMi42LTIyLjYtMjguMy0yOC4zYy0zLjEtMy4xLTMuMS04LjIgMC0xMS4zbDExLjMtMTEuM2MzLjEtMy4xIDguMi0zLjEgMTEuMyAwbDI4LjMgMjguMyAyMi42LTIyLjYtMjguMy0yOC4zYy0zLjEtMy4xLTMuMS04LjIgMC0xMS4zbDExLjMtMTEuM2MzLjEtMy4xIDguMi0zLjEgMTEuMyAwbDI4LjMgMjguMyAyOC4zLTI4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwLjUgMjMxLjRsLTE5Mi0xNjBDMjg3LjkgNTQuMyAyNTYgNjguNiAyNTYgOTZ2MzIwYzAgMjcuNCAzMS45IDQxLjggNTIuNSAyNC42bDE5Mi0xNjBjMTUuMy0xMi44IDE1LjMtMzYuNCAwLTQ5LjJ6bS0yNTYgMGwtMTkyLTE2MEMzMS45IDU0LjMgMCA2OC42IDAgOTZ2MzIwYzAgMjcuNCAzMS45IDQxLjggNTIuNSAyNC42bDE5Mi0xNjBjMTUuMy0xMi44IDE1LjMtMzYuNCAwLTQ5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ2LjUzIDk3LjQzQzQzOS42NyA2MC4yMyA0MDcuMTkgMzIgMzY4IDMyYy0zOS4yMyAwLTcxLjcyIDI4LjI5LTc4LjU0IDY1LjU0QzEyNi43NSAxMTIuOTYtLjUgMjUwLjEyIDAgNDE2Ljk4LjExIDQ1MS45IDI5LjA4IDQ4MCA2NCA0ODBoMzA0YzguODQgMCAxNi03LjE2IDE2LTE2IDAtMTcuNjctMTQuMzMtMzItMzItMzJoLTc5LjQ5bDM1LjgtNDguMzNjMjQuMTQtMzYuMjMgMTAuMzUtODguMjgtMzMuNzEtMTA2LjYtMjMuODktOS45My01MS41NS00LjY1LTcyLjI0IDEwLjg4bC0zMi43NiAyNC41OWMtNy4wNiA1LjMxLTE3LjA5IDMuOTEtMjIuNDEtMy4xOS01LjMtNy4wOC0zLjg4LTE3LjExIDMuMTktMjIuNDFsMzQuNzgtMjYuMDljMzYuODQtMjcuNjYgODguMjgtMjcuNjIgMTI1LjEzIDAgMTAuODcgOC4xNSA0NS44NyAzOS4wNiA0MC44IDkzLjIxTDQ2OS42MiA0ODBINTYwYzguODQgMCAxNi03LjE2IDE2LTE2IDAtMTcuNjctMTQuMzMtMzItMzItMzJoLTUzLjYzbC05OC41Mi0xMDQuNjggMTU0LjQ0LTg2LjY1QTU4LjE2IDU4LjE2IDAgMCAwIDU3NiAxODkuOTRjMC0yMS40LTExLjcyLTQwLjk1LTMwLjQ4LTUxLjIzLTQwLjU2LTIyLjIyLTk4Ljk5LTQxLjI4LTk4Ljk5LTQxLjI4ek0zNjggMTM2Yy0xMy4yNiAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzQtMjQgMjQtMjQgMTMuMjUgMCAyNCAxMC43NCAyNCAyNCAwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcm93bk9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNMTM2IDIwOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptMTg3LjMgMTgzLjNjLTMxLjItOS42LTU5LjQtMTUuMy03NS4zLTE1LjNzLTQ0LjEgNS43LTc1LjMgMTUuM2MtMTEuNSAzLjUtMjIuNS02LjMtMjAuNS0xOC4xIDctNDAgNjAuMS02MS4yIDk1LjgtNjEuMnM4OC44IDIxLjMgOTUuOCA2MS4yYzIgMTEuOS05LjEgMjEuNi0yMC41IDE4LjF6TTMyOCAyNDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0tMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0xNzAuMiAyMTguMkMzMTUuOCAzNjcuNCAyODIuOSAzNTIgMjQ4IDM1MnMtNjcuOCAxNS40LTkwLjIgNDIuMmMtMTMuNSAxNi4zLTM4LjEtNC4yLTI0LjYtMjAuNUMxNjEuNyAzMzkuNiAyMDMuNiAzMjAgMjQ4IDMyMHM4Ni4zIDE5LjYgMTE0LjcgNTMuOGMxMy42IDE2LjItMTEgMzYuNy0yNC41IDIwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZ1bm5lbERvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzMuNDYgMTY1Ljk0bDEwMS4yLTExMS44N0M1NTQuNjEgMzQuMTIgNTQwLjQ4IDAgNTEyLjI2IDBIMzEuNzRDMy41MiAwLTEwLjYxIDM0LjEyIDkuMzQgNTQuMDdMMTkyIDI1NnYxNTUuOTJjMCAxMi41OSA1LjkzIDI0LjQ0IDE2IDMybDc5Ljk5IDYwYzIwLjg2IDE1LjY0IDQ4LjQ3IDYuOTcgNTkuMjItMTMuNTdDMzEwLjggNDU1LjM4IDI4OCA0MDYuMzUgMjg4IDM1MmMwLTg5Ljc5IDYyLjA1LTE2NS4xNyAxNDUuNDYtMTg2LjA2ek00ODAgMTkyYy04OC4zNyAwLTE2MCA3MS42My0xNjAgMTYwczcxLjYzIDE2MCAxNjAgMTYwIDE2MC03MS42MyAxNjAtMTYwLTcxLjYzLTE2MC0xNjAtMTYwem0xNiAyMzkuODhWNDQ4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTE2LjI5Yy0xMS4yOS0uNTgtMjIuMjctNC41Mi0zMS4zNy0xMS4zNS0zLjktMi45My00LjEtOC43Ny0uNTctMTIuMTRsMTEuNzUtMTEuMjFjMi43Ny0yLjY0IDYuODktMi43NiAxMC4xMy0uNzMgMy44NyAyLjQyIDguMjYgMy43MiAxMi44MiAzLjcyaDI4LjExYzYuNSAwIDExLjgtNS45MiAxMS44LTEzLjE5IDAtNS45NS0zLjYxLTExLjE5LTguNzctMTIuNzNsLTQ1LTEzLjVjLTE4LjU5LTUuNTgtMzEuNTgtMjMuNDItMzEuNTgtNDMuMzkgMC0yNC41MiAxOS4wNS00NC40NCA0Mi42Ny00NS4wN1YyNTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTYuMjljMTEuMjkuNTggMjIuMjcgNC41MSAzMS4zNyAxMS4zNSAzLjkgMi45MyA0LjEgOC43Ny41NyAxMi4xNGwtMTEuNzUgMTEuMjFjLTIuNzcgMi42NC02Ljg5IDIuNzYtMTAuMTMuNzMtMy44Ny0yLjQzLTguMjYtMy43Mi0xMi44Mi0zLjcyaC0yOC4xMWMtNi41IDAtMTEuOCA1LjkyLTExLjggMTMuMTkgMCA1Ljk1IDMuNjEgMTEuMTkgOC43NyAxMi43M2w0NSAxMy41YzE4LjU5IDUuNTggMzEuNTggMjMuNDIgMzEuNTggNDMuMzkgMCAyNC41My0xOS4wNCA0NC40NC00Mi42NyA0NS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnV0Ym9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTY3LTExMS4wMzMgMjQ4LTI0OCAyNDhTOCAzOTIuOTY3IDggMjU2IDExOS4wMzMgOCAyNTYgOHMyNDggMTExLjAzMyAyNDggMjQ4em0tNDggMGwtLjAwMy0uMjgyLTI2LjA2NCAyMi43NDEtNjIuNjc5LTU4LjUgMTYuNDU0LTg0LjM1NSAzNC4zMDMgMy4wNzJjLTI0Ljg4OS0zNC4yMTYtNjAuMDA0LTYwLjA4OS0xMDAuNzA5LTczLjE0MWwxMy42NTEgMzEuOTM5TDI1NiAxMzlsLTc0Ljk1My00MS41MjUgMTMuNjUxLTMxLjkzOWMtNDAuNjMxIDEzLjAyOC03NS43OCAzOC44Ny0xMDAuNzA5IDczLjE0MWwzNC41NjUtMy4wNzMgMTYuMTkyIDg0LjM1NS02Mi42NzggNTguNS0yNi4wNjQtMjIuNzQxLS4wMDMuMjgyYzAgNDMuMDE1IDEzLjQ5NyA4My45NTIgMzguNDcyIDExNy45OTFsNy43MDQtMzMuODk3IDg1LjEzOCAxMC40NDcgMzYuMzAxIDc3LjgyNi0yOS45MDIgMTcuNzg2YzQwLjIwMiAxMy4xMjIgODQuMjkgMTMuMTQ4IDEyNC41NzIgMGwtMjkuOTAyLTE3Ljc4NiAzNi4zMDEtNzcuODI2IDg1LjEzOC0xMC40NDcgNy43MDQgMzMuODk3QzQ0Mi41MDMgMzM5Ljk1MiA0NTYgMjk5LjAxNSA0NTYgMjU2em0tMjQ4LjEwMiA2OS41NzFsLTI5Ljg5NC05MS4zMTJMMjU2IDE3Ny43MzJsNzcuOTk2IDU2LjUyNy0yOS42MjIgOTEuMzEyaC05Ni40NzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhbWVwYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwLjA3IDk2SDE2MGExNjAgMTYwIDAgMSAwIDExNC4yNCAyNzJoOTEuNTJBMTYwIDE2MCAwIDEgMCA0ODAuMDcgOTZ6TTI0OCAyNjhhMTIgMTIgMCAwIDEtMTIgMTJoLTUydjUyYTEyIDEyIDAgMCAxLTEyIDEyaC0yNGExMiAxMiAwIDAgMS0xMi0xMnYtNTJIODRhMTIgMTIgMCAwIDEtMTItMTJ2LTI0YTEyIDEyIDAgMCAxIDEyLTEyaDUydi01MmExMiAxMiAwIDAgMSAxMi0xMmgyNGExMiAxMiAwIDAgMSAxMiAxMnY1Mmg1MmExMiAxMiAwIDAgMSAxMiAxMnptMjE2IDc2YTQwIDQwIDAgMSAxIDQwLTQwIDQwIDQwIDAgMCAxLTQwIDQwem02NC05NmE0MCA0MCAwIDEgMSA0MC00MCA0MCA0MCAwIDAgMS00MCA0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FzUHVtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNDQ4SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyMGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptMTU3LjItMzQwLjdsLTgxLTgxYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGwtMTEuMyAxMS4zYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNkw0MTYgOTcuOVYxNjBjMCAyOC4xIDIwLjkgNTEuMyA0OCA1NS4yVjM3NmMwIDEzLjItMTAuOCAyNC0yNCAyNHMtMjQtMTAuOC0yNC0yNHYtMzJjMC00OC42LTM5LjQtODgtODgtODhoLThWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIOTZDNjAuNyAwIDMyIDI4LjcgMzIgNjR2MzUyaDI4OFYzMDRoOGMyMi4xIDAgNDAgMTcuOSA0MCA0MHYyNy44YzAgMzcuNyAyNyA3MiA2NC41IDc1LjkgNDMgNC4zIDc5LjUtMjkuNSA3OS41LTcxLjdWMTUyLjZjMC0xNy02LjgtMzMuMy0xOC44LTQ1LjN6TTI1NiAxOTJIOTZWNjRoMTYwdjEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2F2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0Ljk3MSAxOTkuMzYybC0yMi42MjctMjIuNjI3Yy05LjM3My05LjM3My0yNC41NjktOS4zNzMtMzMuOTQxIDBsLTUuNjU3IDUuNjU3TDMyOS42MDggNjkuMjU1bDUuNjU3LTUuNjU3YzkuMzczLTkuMzczIDkuMzczLTI0LjU2OSAwLTMzLjk0MUwzMTIuNjM4IDcuMDI5Yy05LjM3My05LjM3My0yNC41NjktOS4zNzMtMzMuOTQxIDBMMTU0LjI0NiAxMzEuNDhjLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWwyMi42MjcgMjIuNjI3YzkuMzczIDkuMzczIDI0LjU2OSA5LjM3MyAzMy45NDEgMGw1LjY1Ny01LjY1NyAzOS41OTggMzkuNTk4LTgxLjA0IDgxLjA0LTUuNjU3LTUuNjU3Yy0xMi40OTctMTIuNDk3LTMyLjc1OC0xMi40OTctNDUuMjU1IDBMOS4zNzMgNDEyLjExOGMtMTIuNDk3IDEyLjQ5Ny0xMi40OTcgMzIuNzU4IDAgNDUuMjU1bDQ1LjI1NSA0NS4yNTVjMTIuNDk3IDEyLjQ5NyAzMi43NTggMTIuNDk3IDQ1LjI1NSAwbDExNC43NDUtMTE0Ljc0NWMxMi40OTctMTIuNDk3IDEyLjQ5Ny0zMi43NTggMC00NS4yNTVsLTUuNjU3LTUuNjU3IDgxLjA0LTgxLjA0IDM5LjU5OCAzOS41OTgtNS42NTcgNS42NTdjLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWwyMi42MjcgMjIuNjI3YzkuMzczIDkuMzczIDI0LjU2OSA5LjM3MyAzMy45NDEgMGwxMjQuNDUxLTEyNC40NTFjOS4zNzItOS4zNzIgOS4zNzItMjQuNTY4IDAtMzMuOTQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHZW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg1LjUgMEw1NzYgMTYwSDQ3NC45TDQwNS43IDBoNzkuOHptLTEyOCAwbDY5LjIgMTYwSDE0OS4zTDIxOC41IDBoMTM5em0tMjY3IDBoNzkuOGwtNjkuMiAxNjBIMEw5MC41IDB6TTAgMTkyaDEwMC43bDEyMyAyNTEuN2MxLjUgMy4xLTIuNyA1LjktNSAzLjNMMCAxOTJ6bTE0OC4yIDBoMjc5LjZsLTEzNyAzMTguMmMtMSAyLjQtNC41IDIuNC01LjUgMEwxNDguMiAxOTJ6bTIwNC4xIDI1MS43bDEyMy0yNTEuN0g1NzZMMzU3LjMgNDQ2LjljLTIuMyAyLjctNi41LS4xLTUtMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHZW5kZXJsZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxNzZjNDQuMSAwIDgwIDM1LjkgODAgODBzLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MCAzNS45LTgwIDgwLTgwbTAtNjRDNjQuNSAxMTIgMCAxNzYuNSAwIDI1NnM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDQtNjQuNS0xNDQtMTQ0LTE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2hvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg2LjEuMDlDODEuMDEgMy4yNCAwIDk0LjkyIDAgMjAwLjA1djI2My45MmMwIDE0LjI2IDE3LjIzIDIxLjM5IDI3LjMxIDExLjMxbDI0LjkyLTE4LjUzYzYuNjYtNC45NSAxNi0zLjk5IDIxLjUxIDIuMjFsNDIuOTUgNDguMzVjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGw0MC43Mi00NS44NWM2LjM3LTcuMTcgMTcuNTYtNy4xNyAyMy45MiAwbDQwLjcyIDQ1Ljg1YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsNDIuOTUtNDguMzVjNS41MS02LjIgMTQuODUtNy4xNyAyMS41MS0yLjIxbDI0LjkyIDE4LjUzYzEwLjA4IDEwLjA4IDI3LjMxIDIuOTQgMjcuMzEtMTEuMzFWMTkyQzM4NCA4NCAyOTQuODMtMy4xNyAxODYuMS4wOXpNMTI4IDIyNGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTI4IDBjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2MFYzMjBIMzJ2MTI4em0yNTYgMzJoMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMyMEgyODh2MTYwem0xOTItMzIwaC00Mi4xYzYuMi0xMi4xIDEwLjEtMjUuNSAxMC4xLTQwIDAtNDguNS0zOS41LTg4LTg4LTg4LTQxLjYgMC02OC41IDIxLjMtMTAzIDY4LjMtMzQuNS00Ny02MS40LTY4LjMtMTAzLTY4LjMtNDguNSAwLTg4IDM5LjUtODggODggMCAxNC41IDMuOCAyNy45IDEwLjEgNDBIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgwYzAgOC44IDcuMiAxNiAxNiAxNmg0ODBjOC44IDAgMTYtNy4yIDE2LTE2di04MGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTMyNi4xIDBjLTIyLjEgMC00MC0xNy45LTQwLTQwczE3LjktNDAgNDAtNDBjMTkuOSAwIDM0LjYgMy4zIDg2LjEgODBoLTg2LjF6bTIwNi4xIDBoLTg2LjFjNTEuNC03Ni41IDY1LjctODAgODYuMS04MCAyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2lmdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjYgMTk0LjFjMS45LTMwLjggMTcuMy02MS4yIDQ0LTc5LjhDMjc5LjQgMTAzLjUgMjY4LjcgOTYgMjU2IDk2aC0yOS40bDMwLjctMjJjNy4yLTUuMSA4LjktMTUuMSAzLjctMjIuM2wtOS4zLTEzYy01LjEtNy4yLTE1LjEtOC45LTIyLjMtMy43bC0zMiAyMi45IDExLjUtMzAuNmMzLjEtOC4zLTEuMS0xNy41LTkuNC0yMC42bC0xNS01LjZjLTguMy0zLjEtMTcuNSAxLjEtMjAuNiA5LjRsLTE5LjkgNTMtMTkuOS01My4xQzEyMSAyLjEgMTExLjgtMi4xIDEwMy41IDFsLTE1IDUuNkM4MC4yIDkuNyA3NiAxOSA3OS4yIDI3LjJsMTEuNSAzMC42TDU4LjYgMzVjLTcuMi01LjEtMTcuMi0zLjUtMjIuMyAzLjdsLTkuMyAxM2MtNS4xIDcuMi0zLjUgMTcuMiAzLjcgMjIuM2wzMC43IDIySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTY4LjljLTUuNS05LjUtOC45LTIwLjMtOC45LTMyVjI1NmMwLTI5LjkgMjAuOC01NSA0OC42LTYxLjl6TTIyNCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTYwVjM4NEgyMjR2OTZ6bTIyNCAzMmgxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2SDQ0OHYxMjh6bTE2MC0yODhoLTIwLjRjMi42LTcuNiA0LjQtMTUuNSA0LjQtMjMuOCAwLTM1LjUtMjctNzIuMi03Mi4xLTcyLjItNDguMSAwLTc1LjkgNDcuNy04Ny45IDc1LjMtMTIuMS0yNy42LTM5LjktNzUuMy04Ny45LTc1LjMtNDUuMSAwLTcyLjEgMzYuNy03Mi4xIDcyLjIgMCA4LjMgMS43IDE2LjIgNC40IDIzLjhIMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmgxOTJWMjI0aDE1LjNsLjctLjIuNy4ySDQ0OHYxMjhoMTkydi05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTI3MiAwYy0yLjctMS40LTUuMS0zLTcuMi00LjgtNy4zLTYuNC04LjgtMTMuOC04LjgtMTkgMC05LjcgNi40LTI0LjIgMjQuMS0yNC4yIDE4LjcgMCAzNS42IDI3LjQgNDQuNSA0OEgzMzZ6bTE5OS4yLTQuOGMtMi4xIDEuOC00LjUgMy40LTcuMiA0LjhoLTUyLjZjOC44LTIwLjMgMjUuOC00OCA0NC41LTQ4IDE3LjcgMCAyNC4xIDE0LjUgMjQuMSAyNC4yIDAgNS4yLTEuNSAxMi42LTguOCAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NDaGVlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM5LjQgNDMzLjZjLTguNC0yMC40LTMxLjgtMzAuMS01Mi4yLTIxLjZsLTIyLjEgOS4yLTM4LjctMTAxLjljNDcuOS0zNSA2NC44LTEwMC4zIDM0LjUtMTUyLjhMNDc0LjMgMTZjLTgtMTMuOS0yNS4xLTE5LjctNDAtMTMuNkwzMjAgNDkuOCAyMDUuNyAyLjRjLTE0LjktNi4yLTMyLS4zLTQwIDEzLjZMNzkuMSAxNjYuNUM0OC45IDIxOSA2NS43IDI4NC4zIDExMy42IDMxOS4yTDc0LjkgNDIxLjFsLTIyLjEtOS4yYy0yMC40LTguNS00My43IDEuMi01Mi4yIDIxLjYtMS43IDQuMS4yIDguOCA0LjMgMTAuNWwxNjIuMyA2Ny40YzQuMSAxLjcgOC43LS4yIDEwLjQtNC4zIDguNC0yMC40LTEuMi00My44LTIxLjYtNTIuM2wtMjIuMS05LjJMMTczLjMgMzQyYzQuNC41IDguOCAxLjMgMTMuMSAxLjMgNTEuNyAwIDk5LjQtMzMuMSAxMTMuNC04NS4zbDIwLjItNzUuNCAyMC4yIDc1LjRjMTQgNTIuMiA2MS43IDg1LjMgMTEzLjQgODUuMyA0LjMgMCA4LjctLjggMTMuMS0xLjNMNTA2IDQ0NS42bC0yMi4xIDkuMmMtMjAuNCA4LjUtMzAuMSAzMS45LTIxLjYgNTIuMyAxLjcgNC4xIDYuNCA2IDEwLjQgNC4zTDYzNS4xIDQ0NGM0LTEuNyA2LTYuMyA0LjMtMTAuNHpNMjc1LjkgMTYyLjFsLTExMi4xLTQ2LjUgMzYuNS02My40IDk0LjUgMzkuMi0xOC45IDcwLjd6bTg4LjIgMGwtMTguOS03MC43IDk0LjUtMzkuMiAzNi41IDYzLjQtMTEyLjEgNDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NNYXJ0aW5pQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4wNSA1Ny42QzUyMy4zIDM2LjM0IDUwOC4yNSAwIDQ3OC4yIDBIMzMuOEMzLjc1IDAtMTEuMyAzNi4zNCA5Ljk1IDU3LjZMMjI0IDI3MS42NFY0NjRoLTU2Yy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwIDAgNC40MiAzLjU4IDggOCA4aDI0MGM0LjQyIDAgOC0zLjU4IDgtOCAwLTIyLjA5LTE3LjkxLTQwLTQwLTQwaC01NlYyNzEuNjRMNTAyLjA1IDU3LjZ6TTQ0My43NyA0OGwtNDggNDhIMTE2LjI0bC00OC00OGgzNzUuNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzTWFydGluaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuMDUgNTcuNkM1MjMuMyAzNi4zNCA1MDguMjUgMCA0NzguMiAwSDMzLjhDMy43NSAwLTExLjMgMzYuMzQgOS45NSA1Ny42TDIyNCAyNzEuNjRWNDY0aC01NmMtMjIuMDkgMC00MCAxNy45MS00MCA0MCAwIDQuNDIgMy41OCA4IDggOGgyNDBjNC40MiAwIDgtMy41OCA4LTggMC0yMi4wOS0xNy45MS00MC00MC00MGgtNTZWMjcxLjY0TDUwMi4wNSA1Ny42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGFzc1doaXNrZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDMySDMyQzEyLjUgMzItMi40IDQ5LjIuMyA2OC41bDU2IDM1Ni41YzQuNSAzMS41IDMxLjUgNTQuOSA2My40IDU0LjloMjczYzMxLjggMCA1OC45LTIzLjQgNjMuNC01NC45bDU1LjYtMzU2LjVDNTE0LjQgNDkuMiA0OTkuNSAzMiA0ODAgMzJ6bS0zNy40IDY0bC0zMCAxOTJoLTMxM0w2OS40IDk2aDM3My4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGFzc2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NC4xIDI4MC4zN0w1MjguNzUgOTguNjZjLTUuOTEtMjMuNy0yMS41OS00NC4wNS00My01NS44MS0yMS40NC0xMS43My00Ni45Ny0xNC4xMS03MC4xOS02LjMzbC0xNS4yNSA1LjA4Yy04LjM5IDIuNzktMTIuOTIgMTEuODYtMTAuMTIgMjAuMjRsNS4wNiAxNS4xOGMyLjc5IDguMzggMTEuODUgMTIuOTEgMjAuMjMgMTAuMTJsMTMuMTgtNC4zOWMxMC44Ny0zLjYyIDIzLTMuNTcgMzMuMTYgMS43MyAxMC4yOSA1LjM3IDE3LjU3IDE0LjU2IDIwLjM3IDI1LjgybDM4LjQ2IDE1My44MmMtMjIuMTktNi44MS00OS43OS0xMi40Ni04MS4yLTEyLjQ2LTM0Ljc3IDAtNzMuOTggNy4wMi0xMTQuODUgMjYuNzRoLTczLjE4Yy00MC44Ny0xOS43NC04MC4wOC0yNi43NS0xMTQuODYtMjYuNzUtMzEuNDIgMC01OS4wMiA1LjY1LTgxLjIxIDEyLjQ2bDM4LjQ2LTE1My44M2MyLjc5LTExLjI1IDEwLjA5LTIwLjQ1IDIwLjM4LTI1LjgxIDEwLjE2LTUuMyAyMi4yOC01LjM1IDMzLjE1LTEuNzNsMTMuMTcgNC4zOWM4LjM4IDIuNzkgMTcuNDQtMS43NCAyMC4yMy0xMC4xMmw1LjA2LTE1LjE4YzIuOC04LjM4LTEuNzMtMTcuNDUtMTAuMTItMjAuMjRsLTE1LjI1LTUuMDhjLTIzLjIyLTcuNzgtNDguNzUtNS40MS03MC4xOSA2LjMzLTIxLjQxIDExLjc3LTM3LjA5IDMyLjExLTQzIDU1LjhMMS45IDI4MC4zN0E2NC4yMTggNjQuMjE4IDAgMCAwIDAgMjk1Ljg2djcwLjI1QzAgNDI5LjAxIDUxLjU4IDQ4MCAxMTUuMiA0ODBoMzcuMTJjNjAuMjggMCAxMTAuMzctNDUuOTQgMTE0Ljg4LTEwNS4zN2wyLjkzLTM4LjYzaDM1Ljc1bDIuOTMgMzguNjNDMzEzLjMxIDQzNC4wNiAzNjMuNCA0ODAgNDIzLjY4IDQ4MGgzNy4xMmM2My42MiAwIDExNS4yLTUwLjk5IDExNS4yLTExMy44OHYtNzAuMjVjMC01LjIzLS42NC0xMC40My0xLjktMTUuNXptLTM3MC43MiA4OS40MmMtMS45NyAyNS45MS0yNC40IDQ2LjIxLTUxLjA2IDQ2LjIxSDExNS4yQzg2Ljk3IDQxNiA2NCAzOTMuNjIgNjQgMzY2LjExdi0zNy41NGMxOC4xMi02LjQ5IDQzLjQyLTEyLjkyIDcyLjU4LTEyLjkyIDIzLjg2IDAgNDcuMjYgNC4zMyA2OS45MyAxMi45MmwtMy4xMyA0MS4yMnpNNTEyIDM2Ni4xMmMwIDI3LjUxLTIyLjk3IDQ5Ljg4LTUxLjIgNDkuODhoLTM3LjEyYy0yNi42NyAwLTQ5LjEtMjAuMy01MS4wNi00Ni4yMWwtMy4xMy00MS4yMmMyMi42Ny04LjU5IDQ2LjA4LTEyLjkyIDY5Ljk1LTEyLjkyIDI5LjEyIDAgNTQuNDMgNi40NCA3Mi41NSAxMi45M3YzNy41NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xvYmVBZnJpY2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTYwIDIxNS41djYuOTNjMCA1Ljg3LTMuMzIgMTEuMjQtOC41NyAxMy44NmwtMTUuMzkgNy43YTE1LjQ4NSAxNS40ODUgMCAwIDEtMTUuNTMtLjk3bC0xOC4yMS0xMi4xNGExNS41MiAxNS41MiAwIDAgMC0xMy41LTEuODFsLTIuNjUuODhjLTkuNyAzLjIzLTEzLjY2IDE0Ljc5LTcuOTkgMjMuM2wxMy4yNCAxOS44NmMyLjg3IDQuMzEgNy43MSA2LjkgMTIuODkgNi45aDguMjFjOC41NiAwIDE1LjUgNi45NCAxNS41IDE1LjV2MTEuMzRjMCAzLjM1LTEuMDkgNi42Mi0zLjEgOS4zbC0xOC43NCAyNC45OGMtMS40MiAxLjktMi4zOSA0LjEtMi44MyA2LjQzbC00LjMgMjIuODNjLS42MiAzLjI5LTIuMjkgNi4yOS00Ljc2IDguNTZhMTU5LjYwOCAxNTkuNjA4IDAgMCAwLTI1IDI5LjE2bC0xMy4wMyAxOS41NWEyNy43NTYgMjcuNzU2IDAgMCAxLTIzLjA5IDEyLjM2Yy0xMC41MSAwLTIwLjEyLTUuOTQtMjQuODItMTUuMzRhNzguOTAyIDc4LjkwMiAwIDAgMS04LjMzLTM1LjI5VjM2Ny41YzAtOC41Ni02Ljk0LTE1LjUtMTUuNS0xNS41aC0yNS44OGMtMTQuNDkgMC0yOC4zOC01Ljc2LTM4LjYzLTE2YTU0LjY1OSA1NC42NTkgMCAwIDEtMTYtMzguNjN2LTE0LjA2YzAtMTcuMTkgOC4xLTMzLjM4IDIxLjg1LTQzLjdsMjcuNTgtMjAuNjlhNTQuNjYzIDU0LjY2MyAwIDAgMSAzMi43OC0xMC45M2guODljOC40OCAwIDE2Ljg1IDEuOTcgMjQuNDMgNS43N2wxNC43MiA3LjM2YzMuNjggMS44NCA3LjkzIDIuMTQgMTEuODMuODRsNDcuMzEtMTUuNzdjNi4zMy0yLjExIDEwLjYtOC4wMyAxMC42LTE0LjcgMC04LjU2LTYuOTQtMTUuNS0xNS41LTE1LjVoLTEwLjA5Yy00LjExIDAtOC4wNS0xLjYzLTEwLjk2LTQuNTRsLTYuOTItNi45MmExNS40OTMgMTUuNDkzIDAgMCAwLTEwLjk2LTQuNTRIMTk5LjVjLTguNTYgMC0xNS41LTYuOTQtMTUuNS0xNS41di00LjRjMC03LjExIDQuODQtMTMuMzEgMTEuNzQtMTUuMDRsMTQuNDUtMy42MWMzLjc0LS45NCA3LTMuMjMgOS4xNC02LjQ0bDguMDgtMTIuMTFjMi44Ny00LjMxIDcuNzEtNi45IDEyLjg5LTYuOWgyNC4yMWM4LjU2IDAgMTUuNS02Ljk0IDE1LjUtMTUuNXYtMjEuN0MzNTkuMjMgNzEuNjMgNDIyLjg2IDEzMS4wMiA0NDEuOTMgMjA4SDQyMy41Yy04LjU2IDAtMTUuNSA2Ljk0LTE1LjUgMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xvYmVBbWVyaWNhcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em04Mi4yOSAzNTcuNmMtMy45IDMuODgtNy45OSA3Ljk1LTExLjMxIDExLjI4LTIuOTkgMy01LjEgNi43LTYuMTcgMTAuNzEtMS41MSA1LjY2LTIuNzMgMTEuMzgtNC43NyAxNi44N2wtMTcuMzkgNDYuODVjLTEzLjc2IDMtMjggNC42OS00Mi42NSA0LjY5di0yNy4zOGMxLjY5LTEyLjYyLTcuNjQtMzYuMjYtMjIuNjMtNTEuMjUtNi02LTkuMzctMTQuMTQtOS4zNy0yMi42M3YtMzIuMDFjMC0xMS42NC02LjI3LTIyLjM0LTE2LjQ2LTI3Ljk3LTE0LjM3LTcuOTUtMzQuODEtMTkuMDYtNDguODEtMjYuMTEtMTEuNDgtNS43OC0yMi4xLTEzLjE0LTMxLjY1LTIxLjc1bC0uOC0uNzJhMTE0Ljc5MiAxMTQuNzkyIDAgMCAxLTE4LjA2LTIwLjc0Yy05LjM4LTEzLjc3LTI0LjY2LTM2LjQyLTM0LjU5LTUxLjE0IDIwLjQ3LTQ1LjUgNTcuMzYtODIuMDQgMTAzLjItMTAxLjg5bDI0LjAxIDEyLjAxQzIwMy40OCA4OS43NCAyMTYgODIuMDEgMjE2IDcwLjExdi0xMS4zYzcuOTktMS4yOSAxNi4xMi0yLjExIDI0LjM5LTIuNDJsMjguMyAyOC4zYzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNMMjY0IDExMmwtMTAuMzQgMTAuMzRjLTMuMTIgMy4xMi0zLjEyIDguMTkgMCAxMS4zMWw0LjY5IDQuNjljMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC04IDhhOC4wMDggOC4wMDggMCAwIDEtNS42NiAyLjM0aC04Ljk5Yy0yLjA4IDAtNC4wOC44MS01LjU4IDIuMjdsLTkuOTIgOS42NWE4LjAwOCA4LjAwOCAwIDAgMC0xLjU4IDkuMzFsMTUuNTkgMzEuMTljMi42NiA1LjMyLTEuMjEgMTEuNTgtNy4xNSAxMS41OGgtNS42NGMtMS45MyAwLTMuNzktLjctNS4yNC0xLjk2bC05LjI4LTguMDZhMTYuMDE3IDE2LjAxNyAwIDAgMC0xNS41NS0zLjFsLTMxLjE3IDEwLjM5YTExLjk1IDExLjk1IDAgMCAwLTguMTcgMTEuMzRjMCA0LjUzIDIuNTYgOC42NiA2LjYxIDEwLjY5bDExLjA4IDUuNTRjOS40MSA0LjcxIDE5Ljc5IDcuMTYgMzAuMzEgNy4xNnMyMi41OSAyNy4yOSAzMiAzMmg2Ni43NWM4LjQ5IDAgMTYuNjIgMy4zNyAyMi42MyA5LjM3bDEzLjY5IDEzLjY5YTMwLjUwMyAzMC41MDMgMCAwIDEgOC45MyAyMS41NyA0Ni41MzYgNDYuNTM2IDAgMCAxLTEzLjcyIDMyLjk4ek00MTcgMjc0LjI1Yy01Ljc5LTEuNDUtMTAuODQtNS0xNC4xNS05Ljk3bC0xNy45OC0yNi45N2EyMy45NyAyMy45NyAwIDAgMSAwLTI2LjYybDE5LjU5LTI5LjM4YzIuMzItMy40NyA1LjUtNi4yOSA5LjI0LTguMTVsMTIuOTgtNi40OUM0NDAuMiAxOTMuNTkgNDQ4IDIyMy44NyA0NDggMjU2YzAgOC42Ny0uNzQgMTcuMTYtMS44MiAyNS41NEw0MTcgMjc0LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbG9iZUFzaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptLTExLjM0IDI0MC4yM2MtMi44OSA0LjgyLTguMSA3Ljc3LTEzLjcyIDcuNzdoLS4zMWMtNC4yNCAwLTguMzEgMS42OS0xMS4zMSA0LjY5bC01LjY2IDUuNjZjLTMuMTIgMy4xMi0zLjEyIDguMTkgMCAxMS4zMWw1LjY2IDUuNjZjMyAzIDQuNjkgNy4wNyA0LjY5IDExLjMxVjMwNGMwIDguODQtNy4xNiAxNi0xNiAxNmgtNi4xMWMtNi4wNiAwLTExLjYtMy40Mi0xNC4zMS04Ljg1bC0yMi42Mi00NS4yM2MtMi40NC00Ljg4LTguOTUtNS45NC0xMi44MS0yLjA4bC0xOS40NyAxOS40NmMtMyAzLTcuMDcgNC42OS0xMS4zMSA0LjY5SDUwLjgxQzQ5LjEyIDI3Ny41NSA0OCAyNjYuOTIgNDggMjU2YzAtMTEwLjI4IDg5LjcyLTIwMCAyMDAtMjAwIDIxLjUxIDAgNDIuMiAzLjUxIDYxLjYzIDkuODJsLTUwLjE2IDM4LjUzYy01LjExIDMuNDEtNC42MyAxMS4wNi44NiAxMy44MWwxMC44MyA1LjQxYzUuNDIgMi43MSA4Ljg0IDguMjUgOC44NCAxNC4zMVYyMTZjMCA0LjQyLTMuNTggOC04IDhoLTMuMDZjLTMuMDMgMC01LjgtMS43MS03LjE1LTQuNDItMS41Ni0zLjEyLTUuOTYtMy4yOS03Ljc2LS4zbC0xNy4zNyAyOC45NXpNNDA4IDM1OC40M2MwIDQuMjQtMS42OSA4LjMxLTQuNjkgMTEuMzFsLTkuNTcgOS41N2MtMyAzLTcuMDcgNC42OS0xMS4zMSA0LjY5aC0xNS4xNmMtNC4yNCAwLTguMzEtMS42OS0xMS4zMS00LjY5bC0xMy4wMS0xMy4wMWEyNi43NjcgMjYuNzY3IDAgMCAwLTI1LjQyLTcuMDRsLTIxLjI3IDUuMzJjLTEuMjcuMzItMi41Ny40OC0zLjg4LjQ4aC0xMC4zNGMtNC4yNCAwLTguMzEtMS42OS0xMS4zMS00LjY5bC0xMS45MS0xMS45MWE4LjAwOCA4LjAwOCAwIDAgMS0yLjM0LTUuNjZ2LTEwLjJjMC0zLjI3IDEuOTktNi4yMSA1LjAzLTcuNDNsMzkuMzQtMTUuNzRjMS45OC0uNzkgMy44Ni0xLjgyIDUuNTktMy4wNWwyMy43MS0xNi44OWE3Ljk3OCA3Ljk3OCAwIDAgMSA0LjY0LTEuNDhoMTIuMDljMy4yMyAwIDYuMTUgMS45NCA3LjM5IDQuOTNsNS4zNSAxMi44NWE0IDQgMCAwIDAgMy42OSAyLjQ2aDMuOGMxLjc4IDAgMy4zNS0xLjE4IDMuODQtMi44OGw0LjItMTQuNDdjLjUtMS43MSAyLjA2LTIuODggMy44NC0yLjg4aDYuMDZjMi4yMSAwIDQgMS43OSA0IDR2MTIuOTNjMCAyLjEyLjg0IDQuMTYgMi4zNCA1LjY2bDExLjkxIDExLjkxYzMgMyA0LjY5IDcuMDcgNC42OSAxMS4zMXYyNC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbG9iZUV1cm9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0yMDAgMjQ4YzAgMjIuNS0zLjkgNDQuMi0xMC44IDY0LjRoLTIwLjNjLTQuMyAwLTguNC0xLjctMTEuNC00LjhsLTMyLTMyLjZjLTQuNS00LjYtNC41LTEyLjEuMS0xNi43bDEyLjUtMTIuNXYtOC43YzAtMy0xLjItNS45LTMuMy04bC05LjQtOS40Yy0yLjEtMi4xLTUtMy4zLTgtMy4zaC0xNmMtNi4yIDAtMTEuMy01LjEtMTEuMy0xMS4zIDAtMyAxLjItNS45IDMuMy04bDkuNC05LjRjMi4xLTIuMSA1LTMuMyA4LTMuM2gzMmM2LjIgMCAxMS4zLTUuMSAxMS4zLTExLjN2LTkuNGMwLTYuMi01LjEtMTEuMy0xMS4zLTExLjNoLTM2LjdjLTguOCAwLTE2IDcuMi0xNiAxNnY0LjVjMCA2LjktNC40IDEzLTEwLjkgMTUuMmwtMzEuNiAxMC41Yy0zLjMgMS4xLTUuNSA0LjEtNS41IDcuNnYyLjJjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04cy0zLjYtOC04LThIMjQ3Yy0zIDAtNS44IDEuNy03LjIgNC40bC05LjQgMTguN2MtMi43IDUuNC04LjIgOC44LTE0LjMgOC44SDE5NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5OWMwLTQuMiAxLjctOC4zIDQuNy0xMS4zbDIwLjEtMjAuMWM0LjYtNC42IDcuMi0xMC45IDcuMi0xNy41IDAtMy40IDIuMi02LjUgNS41LTcuNmw0MC0xMy4zYzEuNy0uNiAzLjItMS41IDQuNC0yLjdsMjYuOC0yNi44YzIuMS0yLjEgMy4zLTUgMy4zLTggMC02LjItNS4xLTExLjMtMTEuMy0xMS4zSDI1OGwtMTYgMTZ2OGMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LTh2LTIwYzAtMi41IDEuMi00LjkgMy4yLTYuNGwyOC45LTIxLjdjMS45LS4xIDMuOC0uMyA1LjctLjNDMzU4LjMgNTYgNDQ4IDE0NS43IDQ0OCAyNTZ6TTEzMC4xIDE0OS4xYzAtMyAxLjItNS45IDMuMy04bDI1LjQtMjUuNGMyLjEtMi4xIDUtMy4zIDgtMy4zIDYuMiAwIDExLjMgNS4xIDExLjMgMTEuM3YxNmMwIDMtMS4yIDUuOS0zLjMgOGwtOS40IDkuNGMtMi4xIDIuMS01IDMuMy04IDMuM2gtMTZjLTYuMiAwLTExLjMtNS4xLTExLjMtMTEuM3ptMTI4IDMwNi40di03LjFjMC04LjgtNy4yLTE2LTE2LTE2aC0yMC4yYy0xMC44IDAtMjYuNy01LjMtMzUuNC0xMS44bC0yMi4yLTE2LjdjLTExLjUtOC42LTE4LjItMjIuMS0xOC4yLTM2LjR2LTIzLjljMC0xNiA4LjQtMzAuOCAyMi4xLTM5bDQyLjktMjUuN2M3LjEtNC4yIDE1LjItNi41IDIzLjQtNi41aDMxLjJjMTAuOSAwIDIxLjQgMy45IDI5LjYgMTAuOWw0My4yIDM3LjFoMTguM2M4LjUgMCAxNi42IDMuNCAyMi42IDkuNGwxNy4zIDE3LjNjMy40IDMuNCA4LjEgNS4zIDEyLjkgNS4zSDQyM2MtMzIuNCA1OC45LTkzLjggOTkuNS0xNjQuOSAxMDMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xvYmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2LjUgMTYwQzMyMiA3MC43IDI4Ny44IDggMjQ4IDhzLTc0IDYyLjctODguNSAxNTJoMTc3ek0xNTIgMjU2YzAgMjIuMiAxLjIgNDMuNSAzLjMgNjRoMTg1LjNjMi4xLTIwLjUgMy4zLTQxLjggMy4zLTY0cy0xLjItNDMuNS0zLjMtNjRIMTU1LjNjLTIuMSAyMC41LTMuMyA0MS44LTMuMyA2NHptMzI0LjctOTZjLTI4LjYtNjcuOS04Ni41LTEyMC40LTE1OC0xNDEuNiAyNC40IDMzLjggNDEuMiA4NC43IDUwIDE0MS42aDEwOHpNMTc3LjIgMTguNEMxMDUuOCAzOS42IDQ3LjggOTIuMSAxOS4zIDE2MGgxMDhjOC43LTU2LjkgMjUuNS0xMDcuOCA0OS45LTE0MS42ek00ODcuNCAxOTJIMzcyLjdjMi4xIDIxIDMuMyA0Mi41IDMuMyA2NHMtMS4yIDQzLTMuMyA2NGgxMTQuNmM1LjUtMjAuNSA4LjYtNDEuOCA4LjYtNjRzLTMuMS00My41LTguNS02NHpNMTIwIDI1NmMwLTIxLjUgMS4yLTQzIDMuMy02NEg4LjZDMy4yIDIxMi41IDAgMjMzLjggMCAyNTZzMy4yIDQzLjUgOC42IDY0aDExNC42Yy0yLTIxLTMuMi00Mi41LTMuMi02NHptMzkuNSA5NmMxNC41IDg5LjMgNDguNyAxNTIgODguNSAxNTJzNzQtNjIuNyA4OC41LTE1MmgtMTc3em0xNTkuMyAxNDEuNmM3MS40LTIxLjIgMTI5LjQtNzMuNyAxNTgtMTQxLjZoLTEwOGMtOC44IDU2LjktMjUuNiAxMDcuOC01MCAxNDEuNnpNMTkuMyAzNTJjMjguNiA2Ny45IDg2LjUgMTIwLjQgMTU4IDE0MS42LTI0LjQtMzMuOC00MS4yLTg0LjctNTAtMTQxLjZoLTEwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29sZkJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNDE2aDIyNGMwIDE3LjctMTQuMyAzMi0zMiAzMmgtMTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMjBjMC0xNy43LTE0LjMtMzItMzItMzJoLTE2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnptMzIwLTIwOGMwIDc0LjItMzkgMTM5LjItOTcuNSAxNzZoLTIyMUMzOSAzNDcuMiAwIDI4Mi4yIDAgMjA4IDAgOTMuMSA5My4xIDAgMjA4IDBzMjA4IDkzLjEgMjA4IDIwOHptLTE4MC4xIDQzLjljMTguMyAwIDMzLjEtMTQuOCAzMy4xLTMzLjEgMC0xNC40LTkuMy0yNi4zLTIyLjEtMzAuOSA5LjYgMjYuOC0xNS42IDUxLjMtNDEuOSA0MS45IDQuNiAxMi44IDE2LjUgMjIuMSAzMC45IDIyLjF6bTQ5LjEgNDYuOWMwLTE0LjQtOS4zLTI2LjMtMjIuMS0zMC45IDkuNiAyNi44LTE1LjYgNTEuMy00MS45IDQxLjkgNC42IDEyLjggMTYuNSAyMi4xIDMwLjkgMjIuMSAxOC4zIDAgMzMuMS0xNC45IDMzLjEtMzMuMXptNjQtNjRjMC0xNC40LTkuMy0yNi4zLTIyLjEtMzAuOSA5LjYgMjYuOC0xNS42IDUxLjMtNDEuOSA0MS45IDQuNiAxMi44IDE2LjUgMjIuMSAzMC45IDIyLjEgMTguMyAwIDMzLjEtMTQuOSAzMy4xLTMzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvcHVyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDM1MmgtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNmgtMTZ2LTgwYzAtOC44LTcuMi0xNi0xNi0xNmgtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2MTZoLTY0VjE2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djE2aC02NFYxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYxNmgtNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2Uzk2IDcuMiA5NiAxNnYxMTJIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY4MEg0OGMtOC44IDAtMTYgNy4yLTE2IDE2djExMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djEyOGMwIDguOCA3LjIgMTYgMTYgMTZoODBWMzUyaDMyVjIyNGgzMnYtOTZoMzJ2OTZoLTMydjEyOGgtMzJ2MTYwaDgwdi04MGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2djgwaDgwVjM1MmgtMzJWMjI0aC0zMnYtOTZoMzJ2OTZoMzJ2MTI4aDMydjE2MGg4MGM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNnpNMjMyIDE3NmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djQ4aC00OHptNTYgMTc2aC02NHYtNjRjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JhZHVhdGlvbkNhcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjIuMzQgMTUzLjJMMzQzLjQgNjcuNWMtMTUuMi00LjY3LTMxLjYtNC42Ny00Ni43OSAwTDE3LjY2IDE1My4yYy0yMy41NCA3LjIzLTIzLjU0IDM4LjM2IDAgNDUuNTlsNDguNjMgMTQuOTRjLTEwLjY3IDEzLjE5LTE3LjIzIDI5LjI4LTE3Ljg4IDQ2LjlDMzguNzggMjY2LjE1IDMyIDI3Ni4xMSAzMiAyODhjMCAxMC43OCA1LjY4IDE5Ljg1IDEzLjg2IDI1LjY1TDIwLjMzIDQyOC41M0MxOC4xMSA0MzguNTIgMjUuNzEgNDQ4IDM1Ljk0IDQ0OGg1Ni4xMWMxMC4yNCAwIDE3Ljg0LTkuNDggMTUuNjItMTkuNDdMODIuMTQgMzEzLjY1QzkwLjMyIDMwNy44NSA5NiAyOTguNzggOTYgMjg4YzAtMTEuNTctNi40Ny0yMS4yNS0xNS42Ni0yNi44Ny43Ni0xNS4wMiA4LjQ0LTI4LjMgMjAuNjktMzYuNzJMMjk2LjYgMjg0LjVjOS4wNiAyLjc4IDI2LjQ0IDYuMjUgNDYuNzkgMGwyNzguOTUtODUuN2MyMy41NS03LjI0IDIzLjU1LTM4LjM2IDAtNDUuNnpNMzUyLjc5IDMxNS4wOWMtMjguNTMgOC43Ni01Mi44NCAzLjkyLTY1LjU5IDBsLTE0NS4wMi00NC41NUwxMjggMzg0YzAgMzUuMzUgODUuOTYgNjQgMTkyIDY0czE5Mi0yOC42NSAxOTItNjRsLTE0LjE4LTExMy40Ny0xNDUuMDMgNDQuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyZWF0ZXJUaGFuRXF1YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTUuMjIgMTA3LjY5bDE3NS41NiA2OC4wOS0xNzUuNDQgNjguMDVjLTE4LjM5IDYuMDMtMjcuODggMjQuMzktMjEuMiA0MWwxMi4wOSAzMC4wOGM2LjY4IDE2LjYxIDI2Ljk5IDI1LjE5IDQ1LjM4IDE5LjE1TDM5My4wMiAyMTQuMmMxMy43Ny00LjUyIDIyLjk4LTE2LjYxIDIyLjk4LTMwLjE3di0xNS45NmMwLTEzLjU2LTkuMjEtMjUuNjUtMjIuOTgtMzAuMTdMOTEuMyAxNy45MmMtMTguMjktNi0zOC41MSAyLjUzLTQ1LjE1IDE5LjA2TDM0LjEyIDY2LjljLTYuNjQgMTYuNTMgMi44MSAzNC43OSAyMS4xIDQwLjc5ek00MjQgNDAwSDI0Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0djQ4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDAwYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTQ4YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyZWF0ZXJUaGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2NS41MiAyMDkuODVMNTkuMjIgNjcuMDFjLTE2LjA2LTcuNDktMzUuMTUtLjU0LTQyLjY0IDE1LjUyTDMuMDEgMTExLjYxYy03LjQ5IDE2LjA2LS41NCAzNS4xNSAxNS41MiA0Mi42NEwyMzYuOTYgMjU2LjEgMTguNDkgMzU3Ljk5QzIuNDcgMzY1LjQ2LTQuNDYgMzg0LjUgMy4wMSA0MDAuNTJsMTMuNTIgMjlDMjQgNDQ1LjU0IDQzLjA0IDQ1Mi40NyA1OS4wNiA0NDVsMzA2LjQ3LTE0Mi45MWEzMi4wMDMgMzIuMDAzIDAgMCAwIDE4LjQ4LTI5di0zNC4yM2MtLjAxLTEyLjQ1LTcuMjEtMjMuNzYtMTguNDktMjkuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW1hY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNMTQ0IDQwMGgtOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ2LThoNDB2NDB6bTAtNTZoLTQwdi04YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDh2NDB6bS04LTEzNmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptNzIgMTkyaC00OHYtNDBoNDh2NDB6bTAtNTZoLTQ4di00MGg0OHY0MHptNjQgNTZoLTQ4di00MGg0OHY0MHptMC01NmgtNDh2LTQwaDQ4djQwem02NCA1NmgtNDh2LTQwaDQ4djQwem0wLTU2aC00OHYtNDBoNDh2NDB6bS04LTEwNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTY0IDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMmgtOHYtNDBoNDB2OHptMC0yNGgtNDB2LTQwaDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em02My43IDEyOC43YzcuNi0xMS40IDI0LjctMTEuNyAzMi43IDAgMTIuNCAxOC40IDE1LjEgMzYuOSAxNS43IDU1LjMtLjUgMTguNC0zLjMgMzYuOS0xNS43IDU1LjMtNy42IDExLjQtMjQuNyAxMS43LTMyLjcgMC0xMi40LTE4LjQtMTUuMS0zNi45LTE1LjctNTUuMy41LTE4LjQgMy4zLTM2LjkgMTUuNy01NS4zem0tMTYwIDBjNy42LTExLjQgMjQuNy0xMS43IDMyLjcgMCAxMi40IDE4LjQgMTUuMSAzNi45IDE1LjcgNTUuMy0uNSAxOC40LTMuMyAzNi45LTE1LjcgNTUuMy03LjYgMTEuNC0yNC43IDExLjctMzIuNyAwLTEyLjQtMTguNC0xNS4xLTM2LjktMTUuNy01NS4zLjUtMTguNCAzLjMtMzYuOSAxNS43LTU1LjN6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNyAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluQmVhbVN3ZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NiAxMjhjMjYuNSAwIDQ4LTIxIDQ4LTQ3IDAtMjAtMjguNS02MC40LTQxLjYtNzcuOC0zLjItNC4zLTkuNi00LjMtMTIuOCAwQzQzNi41IDIwLjYgNDA4IDYxIDQwOCA4MWMwIDI2IDIxLjUgNDcgNDggNDd6bTAgMzJjLTQ0LjEgMC04MC0zNS40LTgwLTc5IDAtNC40LjMtMTQuMiA4LjEtMzIuMkMzNDUgMjMuMSAyOTguMyA4IDI0OCA4IDExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhjMC0zNS4xLTcuNC02OC40LTIwLjUtOTguNi02LjMgMS41LTEyLjcgMi42LTE5LjUgMi42em0tMTI4LThjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTItMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjQtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em0tMTYwIDBjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTItMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em04MCAyODBjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMiAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNDRjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTEuOS0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4xIDcuMy0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bS0xNjAgMGMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptODAgMjgwYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOSA5LjQtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNC0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbkhlYXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek05MC40IDE4My42YzYuNy0xNy42IDI2LjctMjYuNyA0NC45LTIxLjlsNy4xIDEuOSAyLTcuMWM1LTE4LjEgMjIuOC0zMC45IDQxLjUtMjcuOSAyMS40IDMuNCAzNC40IDI0LjIgMjguOCA0NC41TDE5NS4zIDI0M2MtMS4yIDQuNS01LjkgNy4yLTEwLjUgNmwtNzAuMi0xOC4yYy0yMC40LTUuNC0zMS45LTI3LTI0LjItNDcuMnpNMjQ4IDQzMmMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjggOS4yLTIxLjUgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy42IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6bTEzMy40LTIwMS4zbC03MC4yIDE4LjJjLTQuNSAxLjItOS4yLTEuNS0xMC41LTZMMjgxLjMgMTczYy01LjYtMjAuMyA3LjQtNDEuMSAyOC44LTQ0LjUgMTguNi0zIDM2LjQgOS44IDQxLjUgMjcuOWwyIDcuMSA3LjEtMS45YzE4LjItNC43IDM4LjIgNC4zIDQ0LjkgMjEuOSA3LjcgMjAuMy0zLjggNDEuOS0yNC4yIDQ3LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5TcXVpbnRUZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDkuNiAxMTEuOWMyMi42LTMuMiA3My41LTEyIDg4LjMtMjYuOCAxOS4yLTE5LjIgMTguOS01MC42LS43LTcwLjJTNDQ2LTUgNDI2LjkgMTQuMmMtMTQuOCAxNC44LTIzLjUgNjUuNy0yNi44IDg4LjMtLjggNS41IDMuOSAxMC4yIDkuNSA5LjR6TTEwMi40IDQwMC4xYy0yMi42IDMuMi03My41IDEyLTg4LjMgMjYuOC0xOS4xIDE5LjEtMTguOCA1MC42LjggNzAuMnM1MSAxOS45IDcwLjIuN2MxNC44LTE0LjggMjMuNS02NS43IDI2LjgtODguMy44LTUuNS0zLjktMTAuMi05LjUtOS40em0zMTEuNy0yNTYuNWMtMzMgMy45LTQ4LjYtMjUuMS00NS43LTQ1LjcgMy40LTI0IDcuNC00Mi4xIDExLjUtNTYuNUMyODUuMS0xMy40IDE2MS44LS41IDgwLjYgODAuNi0uNSAxNjEuNy0xMy40IDI4NSA0MS40IDM3OS45YzE0LjQtNC4xIDMyLjQtOCA1Ni41LTExLjUgMzMuMi0zLjkgNDguNiAyNS4yIDQ1LjcgNDUuNy0zLjQgMjQtNy40IDQyLjEtMTEuNSA1Ni41IDk0LjggNTQuOCAyMTguMSA0MS45IDI5OS4zLTM5LjJzOTQtMjA0LjQgMzkuMi0yOTkuM2MtMTQuNCA0LjEtMzIuNSA4LTU2LjUgMTEuNXpNMjU1LjcgMTA2YzMuMy0xMy4yIDIyLjQtMTEuNSAyMy42IDEuOGw0LjggNTIuMyA1Mi4zIDQuOGMxMy40IDEuMiAxNC45IDIwLjMgMS44IDIzLjZsLTkwLjUgMjIuNmMtOC45IDIuMi0xNi43LTUuOS0xNC41LTE0LjVsMjIuNS05MC42em0tOTAuOSAyMzAuM0wxNjAgMjg0bC01Mi4zLTQuOGMtMTMuNC0xLjItMTQuOS0yMC4zLTEuOC0yMy42bDkwLjUtMjIuNmM4LjgtMi4yIDE2LjcgNS44IDE0LjUgMTQuNUwxODguMyAzMzhjLTMuMSAxMy4yLTIyLjIgMTEuNy0yMy41LTEuN3ptMjE1LjcgNDQuMmMtMjkuMyAyOS4zLTc1LjcgNTAuNC0xMTYuNyA1MC40LTE4LjkgMC0zNi42LTQuNS01MS0xNC43LTkuOC02LjktOC43LTIxLjggMi0yNy4yIDI4LjMtMTQuNiA2My45LTQyLjQgOTcuOC03Ni4zczYxLjctNjkuNiA3Ni4zLTk3LjhjNS40LTEwLjUgMjAuMi0xMS45IDI3LjMtMiAzMi4zIDQ1LjMgNy4xIDEyNC43LTM1LjcgMTY3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5TcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMzMuOCAxODkuN2w4MC00OGMxMS42LTYuOSAyNCA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zYzguNyAxMC40LTMuOSAyNC44LTE1LjQgMThsLTgwLTQ4Yy03LjctNC43LTcuNy0xNS45IDAtMjAuNnptLTE2My0zMGMtOC42LTEwLjMgMy44LTI0LjkgMTUuNC0xOGw4MCA0OGM3LjggNC43IDcuOCAxNS45IDAgMjAuNmwtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjN6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS45IDkuNC0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMiAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluU3RhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNOTQuNiAxNjguOWwzNC45LTUgMTUuNS0zMS42YzIuOS01LjggMTEtNS44IDEzLjkgMGwxNS41IDMxLjYgMzQuOSA1YzYuMiAxIDguOSA4LjYgNC4zIDEzLjJsLTI1LjQgMjQuNiA2IDM0LjljMSA2LjItNS4zIDExLTExIDcuOUwxNTIgMjMzLjNsLTMxLjMgMTYuM2MtNS43IDMuMS0xMi0xLjctMTEtNy45bDYtMzQuOS0yNS40LTI0LjZjLTQuNi00LjctMS45LTEyLjMgNC4zLTEzLjN6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zem0xNTcuNy0yNDkuOWwtMjUuNCAyNC42IDYgMzQuOWMxIDYuMi01LjMgMTEtMTEgNy45TDM0NCAyMzMuM2wtMzEuMyAxNi4zYy01LjcgMy4xLTEyLTEuNy0xMS03LjlsNi0zNC45LTI1LjQtMjQuNmMtNC41LTQuNi0xLjktMTIuMiA0LjMtMTMuMmwzNC45LTUgMTUuNS0zMS42YzIuOS01LjggMTEtNS44IDEzLjkgMGwxNS41IDMxLjYgMzQuOSA1YzYuMy45IDkgOC41IDQuNCAxMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluVGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAyLjQgMjU2LjFjLTIyLjYgMy4yLTczLjUgMTItODguMyAyNi44LTE5LjEgMTkuMS0xOC44IDUwLjYuOCA3MC4yczUxIDE5LjkgNzAuMi43YzE0LjgtMTQuOCAyMy41LTY1LjcgMjYuOC04OC4zLjgtNS41LTMuOS0xMC4yLTkuNS05LjR6bTUyMy40IDI2LjhjLTE0LjgtMTQuOC02NS43LTIzLjUtODguMy0yNi44LTUuNS0uOC0xMC4zIDMuOS05LjUgOS41IDMuMiAyMi42IDEyIDczLjUgMjYuOCA4OC4zIDE5LjIgMTkuMiA1MC42IDE4LjkgNzAuMi0uN3MyMC01MS4yLjgtNzAuM3ptLTEyOS40LTEyLjhjLTMuOC0yNi42IDE5LjEtNDkuNSA0NS43LTQ1LjcgOC45IDEuMyAxNi44IDIuNyAyNC4zIDQuMUM1NTIuNyAxMDQuNSA0NDcuNyA4IDMyMCA4Uzg3LjMgMTA0LjUgNzMuNiAyMjguNWM3LjUtMS40IDE1LjQtMi44IDI0LjMtNC4xIDMzLjItMy45IDQ4LjYgMjUuMyA0NS43IDQ1LjctMTEuOCA4Mi4zLTI5LjkgMTAwLjQtMzUuOCAxMDYuNC0uOS45LTIgMS42LTMgMi41IDQyLjcgNzQuNiAxMjMgMTI1IDIxNS4yIDEyNXMxNzIuNS01MC40IDIxNS4yLTEyNS4xYy0xLS45LTIuMS0xLjUtMy0yLjUtNS45LTUuOS0yNC0yNC0zNS44LTEwNi4zek00MDAgMTUyYzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDEyLTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptLTE2MCAwYzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDEyLTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptODAgMjgwYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuNyA5LjItMjEuNiAyMC43LTE3LjlDMjI3LjEgMzMwLjUgMjcyIDMzNiAzMjAgMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNC0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpblRvbmd1ZVNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTMuMSAzNzQuNmMtMTQuNC02LjUtMzEuMSAyLjItMzQuNiAxNy42bC0xLjggNy44Yy0yLjEgOS4yLTE1LjIgOS4yLTE3LjMgMGwtMS44LTcuOGMtMy41LTE1LjQtMjAuMi0yNC4xLTM0LjYtMTcuNi0uOS40LjMtLjItMTguOSA5LjR2NjNjMCAzNS4yIDI4IDY0LjUgNjMuMSA2NC45IDM1LjcuNSA2NC45LTI4LjQgNjQuOS02NHYtNjRjLTE5LjUtOS42LTE4LjItOC45LTE5LTkuM3pNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZjMCAxMDYuMyA2NyAxOTYuNyAxNjEgMjMyLTUuNi0xMi4yLTktMjUuNy05LTQwdi00NS41Yy0yNC43LTE2LjItNDMuNS0zOC4xLTQ3LjgtNjMuOC0yLTExLjggOS4yLTIxLjUgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS00LjMgMjUuNy0yMy4xIDQ3LjYtNDcuOCA2My44VjQ0OGMwIDE0LjMtMy40IDI3LjgtOSA0MCA5NC0zNS4zIDE2MS0xMjUuNyAxNjEtMjMyQzQ5NiAxMTkgMzg1IDggMjQ4IDh6bS0zMy44IDIxMC4zbC04MCA0OGMtMTEuNSA2LjgtMjQtNy42LTE1LjQtMThsMzMuNi00MC4zLTMzLjYtNDAuM2MtOC42LTEwLjMgMy44LTI0LjkgMTUuNC0xOGw4MCA0OGM3LjcgNC43IDcuNyAxNS45IDAgMjAuNnptMTYzIDMwYzguNyAxMC40LTMuOSAyNC44LTE1LjQgMThsLTgwLTQ4Yy03LjgtNC43LTcuOC0xNS45IDAtMjAuNmw4MC00OGMxMS43LTYuOSAyMy45IDcuNyAxNS40IDE4TDM0My42IDIwOGwzMy42IDQwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5Ub25ndWVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NCAxODRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0ek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NmMwIDEwNi4zIDY3IDE5Ni43IDE2MSAyMzItNS42LTEyLjItOS0yNS43LTktNDB2LTQ1LjVjLTI0LjctMTYuMi00My41LTM4LjEtNDcuOC02My44LTItMTEuOCA5LjMtMjEuNSAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNS0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTQuMyAyNS43LTIzLjEgNDcuNi00Ny44IDYzLjhWNDQ4YzAgMTQuMy0zLjQgMjcuOC05IDQwIDk0LTM1LjMgMTYxLTEyNS43IDE2MS0yMzJDNDk2IDExOSAzODUgOCAyNDggOHptLTU2IDIyNWwtOS41LTguNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDExMiAyMzNjLTguNSA3LjQtMjEuNi4zLTE5LjgtMTAuOCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVMyMDggMTk3IDIxMiAyMjIuMmMxLjYgMTEuMS0xMS42IDE4LjItMjAgMTAuOHptMTUyIDM5Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0IDY0IDI4LjcgNjQgNjQtMjguNyA2NC02NCA2NHptLTUwLjkgMTAyLjZjLTE0LjQtNi41LTMxLjEgMi4yLTM0LjYgMTcuNmwtMS44IDcuOGMtMi4xIDkuMi0xNS4yIDkuMi0xNy4zIDBsLTEuOC03LjhjLTMuNS0xNS40LTIwLjItMjQuMS0zNC42LTE3LjYtLjkuNC4zLS4yLTE4LjkgOS40djYzYzAgMzUuMiAyOCA2NC41IDYzLjEgNjQuOSAzNS43LjUgNjQuOS0yOC40IDY0LjktNjR2LTY0Yy0xOS41LTkuNi0xOC4yLTguOS0xOS05LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5Ub25ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZjMCAxMDYuMyA2NyAxOTYuNyAxNjEgMjMyLTUuNi0xMi4yLTktMjUuNy05LTQwdi00NS41Yy0yNC43LTE2LjItNDMuNS0zOC4xLTQ3LjgtNjMuOC0yLTExLjggOS4zLTIxLjUgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy42IDIyLjYgNi4xIDIwLjcgMTcuOS00LjMgMjUuNy0yMy4xIDQ3LjYtNDcuOCA2My44VjQ0OGMwIDE0LjMtMy40IDI3LjgtOSA0MCA5NC0zNS4zIDE2MS0xMjUuNyAxNjEtMjMyQzQ5NiAxMTkgMzg1IDggMjQ4IDh6bS04MCAyMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xNjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bS0zNC45IDEzNC42Yy0xNC40LTYuNS0zMS4xIDIuMi0zNC42IDE3LjZsLTEuOCA3LjhjLTIuMSA5LjItMTUuMiA5LjItMTcuMyAwbC0xLjgtNy44Yy0zLjUtMTUuNC0yMC4yLTI0LjEtMzQuNi0xNy42LS45LjQuMy0uMi0xOC45IDkuNHY2M2MwIDM1LjIgMjggNjQuNSA2My4xIDY0LjkgMzUuNy41IDY0LjktMjguNCA2NC45LTY0di02NGMtMTkuNS05LjYtMTguMi04LjktMTktOS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmMwIDEzNyAxMTEgMjQ4IDI0OCAyNDhzMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4IDAgMTE5IDAgMjU2em0yMDAtNDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyem0xNjggMjVsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwyODggMjMzYy04LjMgNy40LTIxLjYuNC0xOS44LTEwLjggNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMzg0IDE5NyAzODggMjIyLjJjMS42IDExLTExLjUgMTguMi0yMCAxMC44em0tMjQzLjEgODcuOEMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS4zLTMuNyAyMi42IDYgMjAuNyAxNy45LTkuMiA1NS04My4yIDkzLjMtMTQzLjggOTMuM3MtMTM0LjUtMzguMy0xNDMuOC05My4zYy0yLTExLjkgOS4zLTIxLjYgMjAuNy0xNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTgwIDE2OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS0xNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bTgwIDI1NmMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjggOS4zLTIxLjYgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjMtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDI4OEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTE2MCAwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTE2MCAwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTk2IDk2SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMTYwIDBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMTYwIDBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpcExpbmVzVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNDk2VjE2YzAtOC44LTcuMi0xNi0xNi0xNkg0OGMtOC44IDAtMTYgNy4yLTE2IDE2djQ4MGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2em0xMjggMFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDgwYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBMaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjg4SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4MGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptMC0xMjhIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDgwYzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJIMzJDMTQuMzMgMzIgMCA0Ni4zMyAwIDY0djY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wIDE2MEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAgMTYwSDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMjg4IDMyaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMCAxNjBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMCAxNjBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3VpdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi42MyAzOUw0NzMgOS4zN2EzMiAzMiAwIDAgMC00NS4yNiAwTDM4MS40NiA1NS43YTM1LjE0IDM1LjE0IDAgMCAwLTguNTMgMTMuNzlMMzYwLjc3IDEwNmwtNzYuMjYgNzYuMjZjLTEyLjE2LTguNzYtMjUuNS0xNS43NC00MC4xLTE5LjE0LTMzLjQ1LTcuNzgtNjctLjg4LTg5Ljg4IDIyYTgyLjQ1IDgyLjQ1IDAgMCAwLTIwLjI0IDMzLjQ3Yy02IDE4LjU2LTIzLjIxIDMyLjY5LTQyLjE1IDM0LjQ2LTIzLjcgMi4yNy00NS43MyAxMS40NS02Mi42MSAyOC40NEMtMTYuMTEgMzI3LTcuOSA0MDkgNDcuNTggNDY0LjQ1UzE4NSA1MjggMjMwLjU2IDQ4Mi41MmMxNy0xNi44OCAyNi4xNi0zOC45IDI4LjQ1LTYyLjcxIDEuNzYtMTguODUgMTUuODktMzYuMTMgMzQuNDMtNDIuMTRhODIuNiA4Mi42IDAgMCAwIDMzLjQ4LTIwLjI1YzIyLjg3LTIyLjg4IDI5Ljc0LTU2LjM2IDIyLTg5Ljc1LTMuMzktMTQuNjQtMTAuMzctMjgtMTkuMTYtNDAuMkw0MDYgMTUxLjIzbDM2LjQ4LTEyLjE2YTM1LjE0IDM1LjE0IDAgMCAwIDEzLjc5LTguNTNsNDYuMzMtNDYuMzJhMzIgMzIgMCAwIDAgLjAzLTQ1LjIyek0yMDggMzUyYTQ4IDQ4IDAgMSAxIDQ4LTQ4IDQ4IDQ4IDAgMCAxLTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA4MHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4em0tMTEyIDQ4aC0zMmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY4MEgxNjB2LTgwYzAtOC44MzctNy4xNjMtMTYtMTYtMTZoLTMyYy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djIyNGMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDMyYzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTgwaDEyOHY4MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDMyYzguODM3IDAgMTYtNy4xNjMgMTYtMTZWMTQ0YzAtOC44MzctNy4xNjMtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbWJ1cmdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2SDQ4YTQ4IDQ4IDAgMCAwIDAgOTZoNDE2YTQ4IDQ4IDAgMCAwIDAtOTZ6bTE2IDEyOEgzMmExNiAxNiAwIDAgMC0xNiAxNnYxNmE2NCA2NCAwIDAgMCA2NCA2NGgzNTJhNjQgNjQgMCAwIDAgNjQtNjR2LTE2YTE2IDE2IDAgMCAwLTE2LTE2ek01OC42NCAyMjRoMzk0LjcyYzM0LjU3IDAgNTQuNjItNDMuOSAzNC44Mi03NS44OEM0NDggODMuMiAzNTkuNTUgMzIuMSAyNTYgMzJjLTEwMy41NC4xLTE5MiA1MS4yLTIzMi4xOCAxMTYuMTFDNCAxODAuMDkgMjQuMDcgMjI0IDU4LjY0IDIyNHpNMzg0IDExMmExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnpNMjU2IDgwYTE2IDE2IDAgMSAxLTE2IDE2IDE2IDE2IDAgMCAxIDE2LTE2em0tMTI4IDMyYTE2IDE2IDAgMSAxLTE2IDE2IDE2IDE2IDAgMCAxIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW1tZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcxLjMxIDE5My45NGwtMjIuNjMtMjIuNjNjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTExLjMxIDExLjMxLTI4LjktMjguOWM1LjYzLTIxLjMxLjM2LTQ0LjktMTYuMzUtNjEuNjFsLTQ1LjI1LTQ1LjI1Yy02Mi40OC02Mi40OC0xNjMuNzktNjIuNDgtMjI2LjI4IDBsOTAuNTEgNDUuMjV2MTguNzVjMCAxNi45NyA2Ljc0IDMzLjI1IDE4Ljc1IDQ1LjI1bDQ5LjE0IDQ5LjE0YzE2LjcxIDE2LjcxIDQwLjMgMjEuOTggNjEuNjEgMTYuMzVsMjguOSAyOC45LTExLjMxIDExLjMxYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsOTAuNTEtOTAuNTFjNi4yMy02LjI0IDYuMjMtMTYuMzctLjAyLTIyLjYyem0tMjg2LjcyLTE1LjJjLTMuNy0zLjctNi44NC03Ljc5LTkuODUtMTEuOTVMMTkuNjQgNDA0Ljk2Yy0yNS41NyAyMy44OC0yNi4yNiA2NC4xOS0xLjUzIDg4LjkzczY1LjA1IDI0LjA1IDg4LjkzLTEuNTNsMjM4LjEzLTI1NS4wN2MtMy45Ni0yLjkxLTcuOS01Ljg3LTExLjQ0LTkuNDFsLTQ5LjE0LTQ5LjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW1zYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDkuMzQgMzA3LjI1QzUwNC4yOCAyOTUuNTYgNDkyLjc1IDI4OCA0ODAgMjg4aC02NFY4MGMwLTIyLTE4LTQwLTQwLTQwcy00MCAxOC00MCA0MHYxMzRjMCA1LjUyLTQuNDggMTAtMTAgMTBoLTIwYy01LjUyIDAtMTAtNC40OC0xMC0xMFY0MGMwLTIyLTE4LTQwLTQwLTQwcy00MCAxOC00MCA0MHYxNzRjMCA1LjUyLTQuNDggMTAtMTAgMTBoLTIwYy01LjUyIDAtMTAtNC40OC0xMC0xMFY4MGMwLTIyLTE4LTQwLTQwLTQwUzk2IDU4IDk2IDgwdjIwOEgzMmMtMTIuNzUgMC0yNC4yOCA3LjU2LTI5LjM0IDE5LjI1YTMxLjk2NiAzMS45NjYgMCAwIDAgNS45NCAzNC41OGwxMDIuNjkgMTEwLjAzQzE0Ni45NyA0OTAuMDggMTk5LjY5IDUxMiAyNTYgNTEyczEwOS4wMy0yMS45MiAxNDQuNzItNjAuMTRMNTAzLjQgMzQxLjgzYTMxLjk2NiAzMS45NjYgMCAwIDAgNS45NC0zNC41OHpNMjU2IDQxNmMtNTMuMDIgMC05Ni02NC05Ni02NHM0Mi45OC02NCA5Ni02NCA5NiA2NCA5NiA2NC00Mi45OCA2NC05NiA2NHptMC05NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMiAzMi0xNC4zMyAzMi0zMi0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzUuMyAyNTAuNWM3IDcuNCAxOC40IDcuNCAyNS41IDBsMTA4LjktMTE0LjJjMzEuNi0zMy4yIDI5LjgtODguMi01LjYtMTE4LjgtMzAuOC0yNi43LTc2LjctMjEuOS0xMDQuOSA3LjdMMjg4IDM2LjlsLTExLjEtMTEuNkMyNDguNy00LjQgMjAyLjgtOS4yIDE3MiAxNy41Yy0zNS4zIDMwLjYtMzcuMiA4NS42LTUuNiAxMTguOGwxMDguOSAxMTQuMnptMjkwIDc3LjZjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYgMEw0MzAuMyA0MDJjLTExLjMgOS4xLTI1LjQgMTQtNDAgMTRIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDc4LjNjMTUuOSAwIDMwLjctMTAuOSAzMy4zLTI2LjYgMy4zLTIwLTEyLjEtMzcuNC0zMS42LTM3LjRIMTkyYy0yNyAwLTUzLjEgOS4zLTc0LjEgMjYuM0w3MS40IDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNmgzNTYuOGMxNC41IDAgMjguNi00LjkgNDAtMTRMNTY0IDM3N2MxNS4yLTEyLjEgMTYuNC0zNS4zIDEuMy00OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU5Ljg4LDE3NS44Mmg2NHY2NGExNiwxNiwwLDAsMCwxNiwxNmg2NGExNiwxNiwwLDAsMCwxNi0xNnYtNjRoNjRhMTYsMTYsMCwwLDAsMTYtMTZ2LTY0YTE2LDE2LDAsMCwwLTE2LTE2aC02NHYtNjRhMTYsMTYsMCwwLDAtMTYtMTZoLTY0YTE2LDE2LDAsMCwwLTE2LDE2djY0aC02NGExNiwxNiwwLDAsMC0xNiwxNnY2NEExNiwxNiwwLDAsMCwxNTkuODgsMTc1LjgyWk01NjguMDcsMzM2LjEzYTM5LjkxLDM5LjkxLDAsMCwwLTU1LjkzLTguNDdMMzkyLjQ3LDQxNS44NEgyNzEuODZhMTYsMTYsMCwwLDEsMC0zMkgzNTAuMWMxNiwwLDMwLjc1LTEwLjg3LDMzLjM3LTI2LjYxYTMyLjA2LDMyLjA2LDAsMCwwLTMxLjYyLTM3LjM4aC0xNjBhMTE3LjcsMTE3LjcsMCwwLDAtNzQuMTIsMjYuMjVsLTQ2LjUsMzcuNzRIMTUuODdhMTYuMTEsMTYuMTEsMCwwLDAtMTYsMTZ2OTZhMTYuMTEsMTYuMTEsMCwwLDAsMTYsMTZoMzQ3YTEwNC44LDEwNC44LDAsMCwwLDYxLjctMjAuMjdMNTU5LjYsMzkyQTQwLDQwLDAsMCwwLDU2OC4wNywzMzYuMTNaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRIb2xkaW5nVXNkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MS4wNiwxNDQuM2w1NC4yNywxNC4zYTguNTksOC41OSwwLDAsMSw2LjYzLDguMWMwLDQuNi00LjA5LDguNC05LjEyLDguNGgtMzUuNmEzMCwzMCwwLDAsMS0xMS4xOS0yLjJjLTUuMjQtMi4yLTExLjI4LTEuNy0xNS4zLDJsLTE5LDE3LjVhMTEuNjgsMTEuNjgsMCwwLDAtMi4yNSwyLjY2LDExLjQyLDExLjQyLDAsMCwwLDMuODgsMTUuNzQsODMuNzcsODMuNzcsMCwwLDAsMzQuNTEsMTEuNVYyNDBjMCw4LjgsNy44MywxNiwxNy4zNywxNmgxNy4zN2M5LjU1LDAsMTcuMzgtNy4yLDE3LjM4LTE2VjIyMi40YzMyLjkzLTMuNiw1Ny44NC0zMSw1My41LTYzLTMuMTUtMjMtMjIuNDYtNDEuMy00Ni41Ni00Ny43TDI4Mi42OCw5Ny40YTguNTksOC41OSwwLDAsMS02LjYzLTguMWMwLTQuNiw0LjA5LTguNCw5LjEyLTguNGgzNS42QTMwLDMwLDAsMCwxLDMzMiw4My4xYzUuMjMsMi4yLDExLjI4LDEuNywxNS4zLTJsMTktMTcuNUExMS4zMSwxMS4zMSwwLDAsMCwzNjguNDcsNjFhMTEuNDMsMTEuNDMsMCwwLDAtMy44NC0xNS43OCw4My44Miw4My44MiwwLDAsMC0zNC41Mi0xMS41VjE2YzAtOC44LTcuODItMTYtMTcuMzctMTZIMjk1LjM3QzI4NS44MiwwLDI3OCw3LjIsMjc4LDE2VjMzLjZjLTMyLjg5LDMuNi01Ny44NSwzMS01My41MSw2M0MyMjcuNjMsMTE5LjYsMjQ3LDEzNy45LDI3MS4wNiwxNDQuM1pNNTY1LjI3LDMyOC4xYy0xMS44LTEwLjctMzAuMi0xMC00Mi42LDBMNDMwLjI3LDQwMmE2My42NCw2My42NCwwLDAsMS00MCwxNEgyNzJhMTYsMTYsMCwwLDEsMC0zMmg3OC4yOWMxNS45LDAsMzAuNzEtMTAuOSwzMy4yNS0yNi42YTMxLjIsMzEuMiwwLDAsMCwuNDYtNS40NkEzMiwzMiwwLDAsMCwzNTIsMzIwSDE5MmExMTcuNjYsMTE3LjY2LDAsMCwwLTc0LjEsMjYuMjlMNzEuNCwzODRIMTZBMTYsMTYsMCwwLDAsMCw0MDB2OTZhMTYsMTYsMCwwLDAsMTYsMTZIMzcyLjc3YTY0LDY0LDAsMCwwLDQwLTE0TDU2NCwzNzdhMzIsMzIsMCwwLDAsMS4yOC00OC45WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ1dhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAyNTZjNTMgMCA5Ni00Mi4xIDk2LTk0IDAtNDAtNTcuMS0xMjAuNy04My4yLTE1NS42LTYuNC04LjUtMTkuMi04LjUtMjUuNiAwQzI0OS4xIDQxLjMgMTkyIDEyMiAxOTIgMTYyYzAgNTEuOSA0MyA5NCA5NiA5NHptMjc3LjMgNzIuMWMtMTEuOC0xMC43LTMwLjItMTAtNDIuNiAwTDQzMC4zIDQwMmMtMTEuMyA5LjEtMjUuNCAxNC00MCAxNEgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNzguM2MxNS45IDAgMzAuNy0xMC45IDMzLjMtMjYuNiAzLjMtMjAtMTIuMS0zNy40LTMxLjYtMzcuNEgxOTJjLTI3IDAtNTMuMSA5LjMtNzQuMSAyNi4zTDcxLjQgMzg0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDM1Ni44YzE0LjUgMCAyOC42LTQuOSA0MC0xNEw1NjQgMzc3YzE1LjItMTIuMSAxNi40LTM1LjMgMS4zLTQ4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRIb2xkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2NS4zIDMyOC4xYy0xMS44LTEwLjctMzAuMi0xMC00Mi42IDBMNDMwLjMgNDAyYy0xMS4zIDkuMS0yNS40IDE0LTQwIDE0SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg3OC4zYzE1LjkgMCAzMC43LTEwLjkgMzMuMy0yNi42IDMuMy0yMC0xMi4xLTM3LjQtMzEuNi0zNy40SDE5MmMtMjcgMC01My4xIDkuMy03NC4xIDI2LjNMNzEuNCAzODRIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzU2LjhjMTQuNSAwIDI4LjYtNC45IDQwLTE0TDU2NCAzNzdjMTUuMi0xMi4xIDE2LjQtMzUuMyAxLjMtNDguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZExpemFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgNDgwaDE5MlYzNjMuNzc4YTk1Ljk5OCA5NS45OTggMCAwIDAtMTQuODMzLTUxLjI2M0wzOTguMTI3IDU0LjM2OEE0OCA0OCAwIDAgMCAzNTcuNTQ0IDMySDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djE2YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NmgyMjkuOTgxYzEyLjg0NCAwIDIxLjU1NiAxMy4wNjcgMTYuNjE1IDI0LjkyM2wtMjEuNDEgNTEuMzg1QTMyIDMyIDAgMCAxIDI1MS42NDggMjI0SDEyOGMtMzUuMzQ2IDAtNjQgMjguNjU0LTY0IDY0djhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE0Ny40MDZhNDcuOTk1IDQ3Ljk5NSAwIDAgMSAyNS42OTIgNy40NTVsMTExLjc0OCA3MC44MTFBMjQuMDAxIDI0LjAwMSAwIDAgMSAzODQgNDE4LjUzOVY0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRNaWRkbGVGaW5nZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc5LjkzIDMxNy4xMmEzNy4zMyAzNy4zMyAwIDAgMC0yOC4yOC0zNi4xOUw0MTYgMjcydi00OS41OWMwLTExLjQ0LTkuNjktMjEuMjktMjMuMTUtMjMuNTRsLTM4LjQtNi40QzMzNi42MyAxODkuNSAzMjAgMjAwLjg2IDMyMCAyMTZ2MzJhOCA4IDAgMCAxLTE2IDBWNTBjMC0yNi4yOC0yMC4yNS00OS4yLTQ2LjUyLTUwQTQ4IDQ4IDAgMCAwIDIwOCA0OHYyMDBhOCA4IDAgMCAxLTE2IDB2LTMyYzAtMTUuMTUtMTYuNjMtMjYuNTEtMzQuNDUtMjMuNTRsLTMwLjY4IDUuMTJjLTE4IDMtMzAuODcgMTYuMTItMzAuODcgMzEuMzhWMzc2YTggOCAwIDAgMS0xNiAwdi03NmwtMjcuMzYgMTVBMzcuMzQgMzcuMzQgMCAwIDAgMzIgMzQ4LjR2NzMuNDdhMzcuMzEgMzcuMzEgMCAwIDAgMTAuOTMgMjYuMzlsMzAuOTMgMzAuOTNBMTEyIDExMiAwIDAgMCAxNTMuMDUgNTEyaDIxNUExMTIgMTEyIDAgMCAwIDQ4MCA0MDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDguNzgxIDEyOC4wMDdDMzg2LjM1NiAxMjcuNTc4IDM2OCAxNDYuMzYgMzY4IDE2OC43OVYyNTZoLThWNzkuNzljMC0yMi40My0xOC4zNTYtNDEuMjEyLTQwLjc4MS00MC43ODNDMjk3LjQ4OCAzOS40MjMgMjgwIDU3LjE2OSAyODAgNzl2MTc3aC04VjQwLjc5QzI3MiAxOC4zNiAyNTMuNjQ0LS40MjIgMjMxLjIxOS4wMDcgMjA5LjQ4OC40MjMgMTkyIDE4LjE2OSAxOTIgNDB2MjE2aC04VjgwLjc5YzAtMjIuNDMtMTguMzU2LTQxLjIxMi00MC43ODEtNDAuNzgzQzEyMS40ODggNDAuNDIzIDEwNCA1OC4xNjkgMTA0IDgwdjIzNS45OTJsLTMxLjY0OC00My41MTljLTEyLjk5My0xNy44NjYtMzguMDA5LTIxLjgxNy01NS44NzctOC44MjMtMTcuODY1IDEyLjk5NC0yMS44MTUgMzguMDEtOC44MjIgNTUuODc3bDEyNS42MDEgMTcyLjcwNUE0OCA0OCAwIDAgMCAxNzIuMDczIDUxMmgxOTcuNTljMjIuMjc0IDAgNDEuNjIyLTE1LjMyNCA0Ni43MjQtMzcuMDA2bDI2LjUwOC0xMTIuNjZhMTkyLjAxMSAxOTIuMDExIDAgMCAwIDUuMTA0LTQzLjk3NVYxNjhjLjAwMS0yMS44MzEtMTcuNDg3LTM5LjU3Ny0zOS4yMTgtMzkuOTkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUGVhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA4IDIxNmMtMjIuMDkyIDAtNDAgMTcuOTA5LTQwIDQwaC04di0zMmMwLTIyLjA5MS0xNy45MDgtNDAtNDAtNDBzLTQwIDE3LjkwOS00MCA0MHYzMmgtOFY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4cy00OCAyMS40OS00OCA0OHYyMDhoLTEzLjU3Mkw5Mi42ODggNzguNDQ5QzgyLjk5NCA1My43NzQgNTUuMTM0IDQxLjYzIDMwLjQ2MSA1MS4zMjQgNS43ODcgNjEuMDE3LTYuMzU2IDg4Ljg3NyAzLjMzNyAxMTMuNTUxbDc0Ljc2NSAxOTAuMzQyLTMxLjA5IDI0Ljg3MmMtMTUuMzgxIDEyLjMwNi0xOS41MTUgMzMuOTc4LTkuNzQxIDUxLjA4MWw2NCAxMTJBMzkuOTk4IDM5Ljk5OCAwIDAgMCAxMzYgNTEyaDI0MGMxOC41NjIgMCAzNC42ODYtMTIuNzcgMzguOTM3LTMwLjgzOGwzMi0xMzZBMzkuOTcgMzkuOTcgMCAwIDAgNDQ4IDMzNnYtODBjMC0yMi4wOTEtMTcuOTA4LTQwLTQwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkxLjgyNiA0NjcuMlYzMTcuOTY2Yy04LjI0OCA1Ljg0MS0xNi41NTggMTAuNTctMjQuOTE4IDE0LjE1M0MzNS4wOTggMzQ1Ljc1Mi0uMDE0IDMyMi4yMjIgMCAyODhjLjAwOC0xOC42MTYgMTAuODk3LTMyLjIwMyAyOS4wOTItNDAgMjguMjg2LTEyLjEyMiA2NC4zMjktNzguNjQ4IDc3LjMyMy0xMDcuNTM0IDcuOTU2LTE3Ljg1NyAyNS40NzktMjguNDUzIDQzLjg0NS0yOC40NjRsLjAwMS0uMDAyaDE3MS41MjZjMTEuODEyIDAgMjEuODk3IDguNTk2IDIzLjcwMyAyMC4yNjkgNy4yNSA0Ni44MzcgMzguNDgzIDYxLjc2IDM4LjMxNSAxMjMuNzMxLS4wMDcgMi43MjQuMTk1IDEzLjI1NC4xOTUgMTYgMCA1MC42NTQtMjIuMTIyIDgxLjU3NC03MS4yNjMgNzIuNi05LjI5NyAxOC41OTctMzkuNDg2IDMwLjczOC02Mi4zMTUgMTYuNDUtMjEuMTc3IDI0LjY0NS01My44OTYgMjIuNjM5LTcwLjk0NCA2LjI5OVY0NjcuMmMwIDI0LjE1LTIwLjIwMSA0NC44LTQzLjgyNiA0NC44LTIzLjI4MyAwLTQzLjgyNi0yMS4zNS00My44MjYtNDQuOHpNMTEyIDcyVjI0YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxOTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djQ4YzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgxMzZjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHptMjEyLTI0YzAtMTEuMDQ2LTguOTU0LTIwLTIwLTIwcy0yMCA4Ljk1NC0yMCAyMCA4Ljk1NCAyMCAyMCAyMCAyMC04Ljk1NCAyMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NC44IDE1NS44MjZoMTQ5LjIzNGMtNS44NDEtOC4yNDgtMTAuNTctMTYuNTU4LTE0LjE1My0yNC45MThDMTY2LjI0OCA5OS4wOTggMTg5Ljc3OCA2My45ODYgMjI0IDY0YzE4LjYxNi4wMDggMzIuMjAzIDEwLjg5NyA0MCAyOS4wOTIgMTIuMTIyIDI4LjI4NiA3OC42NDggNjQuMzI5IDEwNy41MzQgNzcuMzIzIDE3Ljg1NyA3Ljk1NiAyOC40NTMgMjUuNDc5IDI4LjQ2NCA0My44NDVsLjAwMi4wMDF2MTcxLjUyNmMwIDExLjgxMi04LjU5NiAyMS44OTctMjAuMjY5IDIzLjcwMy00Ni44MzcgNy4yNS02MS43NiAzOC40ODMtMTIzLjczMSAzOC4zMTUtMi43MjQtLjAwNy0xMy4yNTQuMTk1LTE2IC4xOTUtNTAuNjU0IDAtODEuNTc0LTIyLjEyMi03Mi42LTcxLjI2My0xOC41OTctOS4yOTctMzAuNzM4LTM5LjQ4Ni0xNi40NS02Mi4zMTUtMjQuNjQ1LTIxLjE3Ny0yMi42MzktNTMuODk2LTYuMjk5LTcwLjk0NEg0NC44Yy0yNC4xNSAwLTQ0LjgtMjAuMjAxLTQ0LjgtNDMuODI2IDAtMjMuMjgzIDIxLjM1LTQzLjgyNiA0NC44LTQzLjgyNnpNNDQwIDE3Nmg0OGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MTkyYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNGgtNDhjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYyMDBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0em0yNCAyMTJjMTEuMDQ2IDAgMjAtOC45NTQgMjAtMjBzLTguOTU0LTIwLTIwLTIwLTIwIDguOTU0LTIwIDIwIDguOTU0IDIwIDIwIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMTk5LjY1MmMwIDIzLjYyNS0yMC42NSA0My44MjYtNDQuOCA0My44MjZoLTk5Ljg1MWMxNi4zNCAxNy4wNDggMTguMzQ2IDQ5Ljc2Ni02LjI5OSA3MC45NDQgMTQuMjg4IDIyLjgyOSAyLjE0NyA1My4wMTctMTYuNDUgNjIuMzE1QzM1My41NzQgNDI1Ljg3OCAzMjIuNjU0IDQ0OCAyNzIgNDQ4Yy0yLjc0NiAwLTEzLjI3Ni0uMjAzLTE2LS4xOTUtNjEuOTcxLjE2OC03Ni44OTQtMzEuMDY1LTEyMy43MzEtMzguMzE1QzEyMC41OTYgNDA3LjY4MyAxMTIgMzk3LjU5OSAxMTIgMzg1Ljc4NlYyMTQuMjYxbC4wMDItLjAwMWMuMDExLTE4LjM2NiAxMC42MDctMzUuODg5IDI4LjQ2NC00My44NDUgMjguODg2LTEyLjk5NCA5NS40MTMtNDkuMDM4IDEwNy41MzQtNzcuMzIzIDcuNzk3LTE4LjE5NCAyMS4zODQtMjkuMDg0IDQwLTI5LjA5MiAzNC4yMjItLjAxNCA1Ny43NTIgMzUuMDk4IDQ0LjExOSA2Ni45MDgtMy41ODMgOC4zNTktOC4zMTIgMTYuNjctMTQuMTUzIDI0LjkxOEg0NjcuMmMyMy40NSAwIDQ0LjggMjAuNTQzIDQ0LjggNDMuODI2ek05NiAyMDB2MTkyYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjIwMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoNDhjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0ek02OCAzNjhjMC0xMS4wNDYtOC45NTQtMjAtMjAtMjBzLTIwIDguOTU0LTIwIDIwIDguOTU0IDIwIDIwIDIwIDIwLTguOTU0IDIwLTIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzUuNjUyIDBjMjMuNjI1IDAgNDMuODI2IDIwLjY1IDQzLjgyNiA0NC44djk5Ljg1MWMxNy4wNDgtMTYuMzQgNDkuNzY2LTE4LjM0NiA3MC45NDQgNi4yOTkgMjIuODI5LTE0LjI4OCA1My4wMTctMi4xNDcgNjIuMzE1IDE2LjQ1QzM2MS44NzggMTU4LjQyNiAzODQgMTg5LjM0NiAzODQgMjQwYzAgMi43NDYtLjIwMyAxMy4yNzYtLjE5NSAxNiAuMTY4IDYxLjk3MS0zMS4wNjUgNzYuODk0LTM4LjMxNSAxMjMuNzMxQzM0My42ODMgMzkxLjQwNCAzMzMuNTk5IDQwMCAzMjEuNzg2IDQwMEgxNTAuMjYxbC0uMDAxLS4wMDJjLTE4LjM2Ni0uMDExLTM1Ljg4OS0xMC42MDctNDMuODQ1LTI4LjQ2NEM5My40MjEgMzQyLjY0OCA1Ny4zNzcgMjc2LjEyMiAyOS4wOTIgMjY0IDEwLjg5NyAyNTYuMjAzLjAwOCAyNDIuNjE2IDAgMjI0Yy0uMDE0LTM0LjIyMiAzNS4wOTgtNTcuNzUyIDY2LjkwOC00NC4xMTkgOC4zNTkgMy41ODMgMTYuNjcgOC4zMTIgMjQuOTE4IDE0LjE1M1Y0NC44YzAtMjMuNDUgMjAuNTQzLTQ0LjggNDMuODI2LTQ0Ljh6TTEzNiA0MTZoMTkyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0OGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTM2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LTQ4YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHptMTY4IDI4Yy0xMS4wNDYgMC0yMCA4Ljk1NC0yMCAyMHM4Ljk1NCAyMCAyMCAyMCAyMC04Ljk1NCAyMC0yMC04Ljk1NC0yMC0yMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDI0MHY5NmMwIDMuMDg0LS4zNTYgNi4xNTktMS4wNjMgOS4xNjJsLTMyIDEzNkM0MTAuNjg2IDQ5OS4yMyAzOTQuNTYyIDUxMiAzNzYgNTEySDE2OGE0MC4wMDQgNDAuMDA0IDAgMCAxLTMyLjM1LTE2LjQ3M2wtMTI3Ljk5Ny0xNzZjLTEyLjk5My0xNy44NjYtOS4wNDMtNDIuODgzIDguODIyLTU1Ljg3NiAxNy44NjctMTIuOTk0IDQyLjg4NC05LjA0MyA1NS44NzcgOC44MjNMMTA0IDMxNS45OTJWNDBjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHYyMDBoOHYtNDBjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHY0MGg4di0yNGMwLTIyLjA5MSAxNy45MDgtNDAgNDAtNDBzNDAgMTcuOTA5IDQwIDQwdjI0aDhjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHptLTI1NiA4MGgtOHY5Nmg4di05NnptODggMGgtOHY5Nmg4di05NnptODggMGgtOHY5Nmg4di05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFJvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0LjggODBjLTI2LjktLjQtNDguOCAyMS4yLTQ4LjggNDhoLThWOTYuOGMwLTI2LjMtMjAuOS00OC4zLTQ3LjItNDguOC0yNi45LS40LTQ4LjggMjEuMi00OC44IDQ4djMyaC04VjgwLjhjMC0yNi4zLTIwLjktNDguMy00Ny4yLTQ4LjgtMjYuOS0uNC00OC44IDIxLjItNDguOCA0OHY0OGgtOFY5Ni44YzAtMjYuMy0yMC45LTQ4LjMtNDcuMi00OC44LTI2LjktLjQtNDguOCAyMS4yLTQ4LjggNDh2MTM2bC04LTcuMXYtNDguMWMwLTI2LjMtMjAuOS00OC4zLTQ3LjItNDguOEMyMS45IDEyNy42IDAgMTQ5LjIgMCAxNzZ2NjYuNGMwIDI3LjQgMTEuNyA1My41IDMyLjIgNzEuOGwxMTEuNyA5OS4zYzEwLjIgOS4xIDE2LjEgMjIuMiAxNi4xIDM1Ljl2Ni43YzAgMTMuMyAxMC43IDI0IDI0IDI0aDI0MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMi45YzAtMTIuOCAyLjYtMjUuNSA3LjUtMzcuM2w0OS0xMTYuM2M1LTExLjggNy41LTI0LjUgNy41LTM3LjNWMTI4LjhjMC0yNi4zLTIwLjktNDguNC00Ny4yLTQ4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgNDQwYzAtMjIuMDkyIDE3LjkwOS00MCA0MC00MHYtOGgtMzJjLTIyLjA5MSAwLTQwLTE3LjkwOC00MC00MHMxNy45MDktNDAgNDAtNDBoMzJ2LThINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDhoMjA4di0xMy41NzJsLTE3Ny41NTEtNjkuNzRjLTI0LjY3NC05LjY5NC0zNi44MTgtMzcuNTU1LTI3LjEyNS02Mi4yMjggOS42OTMtMjQuNjc0IDM3LjU1NC0zNi44MTcgNjIuMjI4LTI3LjEyNGwxOTAuMzQyIDc0Ljc2NSAyNC44NzItMzEuMDljMTIuMzA2LTE1LjM4MSAzMy45NzgtMTkuNTE1IDUxLjA4MS05Ljc0MWwxMTIgNjRBNDAuMDAyIDQwLjAwMiAwIDAgMSA1MTIgMTY4djI0MGMwIDE4LjU2Mi0xMi43NyAzNC42ODYtMzAuODM4IDM4LjkzN2wtMTM2IDMyQTM5Ljk4MiAzOS45ODIgMCAwIDEgMzM2IDQ4MGgtODBjLTIyLjA5MSAwLTQwLTE3LjkwOC00MC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFNwYXJrbGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNi42NiwxNzAuNjRsLjA5LDAsNDkuNTUtMjAuNjVhNy4zMiw3LjMyLDAsMCwwLDMuNjgtNmgwYTcuMjksNy4yOSwwLDAsMC0zLjY4LTZsLTQ5LjU3LTIwLjY3LS4wNywwTDg2LDY3LjY4YTYuNjYsNi42NiwwLDAsMC0xMS45MiwwbC0yMC43LDQ5LjYzLS4wNSwwTDMuNywxMzhBNy4yOSw3LjI5LDAsMCwwLDAsMTQ0SDBhNy4zMiw3LjMyLDAsMCwwLDMuNjgsNkw1My4yNywxNzAuNmwuMDcsMEw3NCwyMjAuMjZhNi42NSw2LjY1LDAsMCwwLDExLjkyLDBsMjAuNjktNDkuNjJaTTQ3MS4zOCw0NjcuNDFsLTEtLjQyLTEtLjVhMzguNjcsMzguNjcsMCwwLDEsMC02OS4xNGwxLS40OSwxLS40MywzNy40OS0xNS42MywxNS42My0zNy40OC40MS0xLC40Ny0uOTVjMy44NS03Ljc0LDEwLjU4LTEzLjYzLDE4LjM1LTE3LjM0LDAtMS4zMy4yNS0yLjY5LjI3LTRWMTQ0YTMyLDMyLDAsMCwwLTY0LDB2NzJhOCw4LDAsMCwxLTgsOEg0NTZhOCw4LDAsMCwxLTgtOFY2NGEzMiwzMiwwLDAsMC02NCwwVjIxNmE4LDgsMCwwLDEtOCw4SDM2MGE4LDgsMCwwLDEtOC04VjMyYTMyLDMyLDAsMCwwLTY0LDBWMjE2YTgsOCwwLDAsMS04LDhIMjY0YTgsOCwwLDAsMS04LThWNjRhMzIsMzIsMCwwLDAtNjQsMHYyNDFsLTIzLjU5LTMyLjQ5YTQwLDQwLDAsMCwwLTY0LjcxLDQ3LjA5TDIyOS4zLDQ5Mi4yMUE0OC4wNyw0OC4wNywwLDAsMCwyNjguMDksNTEySDQ2NS43YzE5LjI0LDAsMzUuNjUtMTEuNzMsNDMuMjQtMjguNzlsLS4wNy0uMTdaTTM0OS43OSwzMzkuNTIsMzIwLDM1MS45M2wtMTIuNDIsMjkuNzhhNCw0LDAsMCwxLTcuMTUsMEwyODgsMzUxLjkzbC0yOS43OS0xMi40MWE0LDQsMCwwLDEsMC03LjE2TDI4OCwzMTkuOTRsMTIuNDItMjkuNzhhNCw0LDAsMCwxLDcuMTUsMEwzMjAsMzE5Ljk0bDI5Ljc5LDEyLjQyYTQsNCwwLDAsMSwwLDcuMTZaTTY0MCw0MzEuOTFhNy4yOCw3LjI4LDAsMCwwLTMuNjgtNmwtNDkuNTctMjAuNjctLjA3LDBMNTY2LDM1NS42M2E2LjY2LDYuNjYsMCwwLDAtMTEuOTIsMGwtMjAuNyw0OS42My0uMDUsMEw0ODMuNyw0MjZhNy4yOCw3LjI4LDAsMCwwLTMuNjgsNmgwYTcuMjksNy4yOSwwLDAsMCwzLjY4LDUuOTVsNDkuNTcsMjAuNjcuMDcsMEw1NTQsNTA4LjIxYTYuNjUsNi42NSwwLDAsMCwxMS45MiwwbDIwLjY5LTQ5LjYyaDBsLjA5LDAsNDkuNTUtMjAuNjZhNy4yOSw3LjI5LDAsMCwwLDMuNjgtNS45NWgwWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kU3BvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjkwMDUsMTQ1LjI3MDI3LDQ0Mi42MDQsNDMyLjA5MzkxQTEwMy45OTUwNywxMDMuOTk1MDcsMCwwLDEsMzQxLjQzNzQ1LDUxMkgyMTQuMDc0YTEzNS45Njk2OCwxMzUuOTY5NjgsMCwwLDEtOTMuMTg0ODktMzYuOTUyOTFMMTIuNTkwNzIsMzczLjEyNzIzYTM5Ljk5MiwzOS45OTIsMCwwLDEsNTQuODEyMi01OC4yNDk4OGw2MC41OTM0Miw1Ny4wMjUyOHYwYTI4My4yNDg0OSwyODMuMjQ4NDksMCwwLDAtMTEuNjcwMy04MC40NjczNEw3My42MzcyNiwxNDcuMzYwMTFhNDAuMDA1NzUsNDAuMDA1NzUsMCwxLDEsNzYuNzE4MzMtMjIuNzE4N2wzNy4xNTQ1OCwxMjUuMzk0NzdhOC4zMzExMyw4LjMzMTEzLDAsMCwwLDE2LjA1NjU2LTQuNDQxNEwxNTMuMjYxODMsNDkuOTU0MDZBMzkuOTk2MzgsMzkuOTk2MzgsMCwxLDEsMjMwLjczMDE1LDMwLjAxNjZsNTYuMDk0OTEsMjE4LjE1ODI1YTEwLjQyMDQ3LDEwLjQyMDQ3LDAsMCwwLDIwLjMwMDE4LS41MDFMMzQ0LjgwNzY2LDYzLjk2OTY2YTQwLjA1Miw0MC4wNTIsMCwwLDEsNTEuMzAyNDUtMzAuMDg5M2MxOS44NjA3Myw2LjI5OTgsMzAuODYyNjIsMjcuNjczNzgsMjYuNjc1NjQsNDguMDg0ODdsLTMzLjgzODY5LDE2NC45NjZhNy41NTE3Miw3LjU1MTcyLDAsMCwwLDE0Ljc0NDA2LDMuMjY2NmwyOS4zOTczLTEyMy40NTg3NGEzOS45OTQxNCwzOS45OTQxNCwwLDEsMSw3Ny44MTIwOCwxOC41MzEyMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNIZWxwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAxOTJIMzM2djU2YzAgMzkuNy0zMi4zIDcyLTcyIDcycy03Mi0zMi4zLTcyLTcyVjEyNi40bC02NC45IDM5QzEwNy44IDE3Ni45IDk2IDE5Ny44IDk2IDIyMC4ydjQ3LjNsLTgwIDQ2LjJDLjcgMzIyLjUtNC42IDM0Mi4xIDQuMyAzNTcuNGw4MCAxMzguNmM4LjggMTUuMyAyOC40IDIwLjUgNDMuNyAxMS43TDIzMS40IDQ0OEgzNjhjMzUuMyAwIDY0LTI4LjcgNjQtNjRoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTY0aDhjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTQ4YzAtMTMuMy0xMC43LTI0LTI0LTI0em0xNDcuNy0zNy40TDU1NS43IDE2QzU0Ni45LjcgNTI3LjMtNC41IDUxMiA0LjNMNDA4LjYgNjRIMzA2LjRjLTEyIDAtMjMuNyAzLjQtMzMuOSA5LjdMMjM5IDk0LjZjLTkuNCA1LjgtMTUgMTYuMS0xNSAyNy4xVjI0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwdi04OGgxODRjMzAuOSAwIDU2IDI1LjEgNTYgNTZ2MjguNWw4MC00Ni4yYzE1LjMtOC45IDIwLjUtMjguNCAxMS43LTQzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzV2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYsMjI0YTQ4LDQ4LDAsMSwwLTQ4LTQ4QTQ4LDQ4LDAsMCwwLDQ5NiwyMjRaTTMxMS40NywxNzguNDVBNTYuNzcsNTYuNzcsMCwwLDEsMzI4LDE3NmE1Niw1NiwwLDAsMSwxOSwzLjQ5bDE1LjM1LTQ4LjYxQTI0LDI0LDAsMCwwLDM0Miw5OS43NGMtMTEuNTMtMS4zNS0yMi4yMSw2LjQ0LTI1LjcxLDE3LjUxbC0yMC45LDY2LjE3Wk05My42NSwzODYuMzNjLjgtLjE5LDEuNTQtLjU0LDIuMzUtLjcxVjM1OS45M2ExNTYsMTU2LDAsMCwxLDEwNy4wNi0xNDhsNzMuNy0yMi43NkwzMTAuOTIsODEuMDVhMjQsMjQsMCwwLDAtMjAuMzMtMzEuMTFjLTExLjUzLTEuMzQtMjIuMjIsNi40NS0yNS43MiwxNy41MkwyMzEuNDIsMTczLjg4YTgsOCwwLDAsMS0xNS4yNi00LjgzTDI1OS41MywzMS4yNkEyNCwyNCwwLDAsMCwyMzkuMi4xNUMyMjcuNjctMS4xOSwyMTcsNi42LDIxMy40OSwxNy42NkwxNjUuNTYsMTY5LjM3YTgsOCwwLDEsMS0xNS4yNi00LjgybDM4LjU2LTEyMmEyNCwyNCwwLDAsMC0yMC4zMy0zMS4xMUMxNTcsMTAsMTQ2LjMyLDE3LjgzLDE0Mi44MiwyOC45bC02MCwxODkuODVMODAuNzYsMTY4LjdBMjQsMjQsMCwwLDAsNTYuOSwxNDQuNTVjLTEzLjIzLS4wNS0yNC43MiwxMC41NC0yNC45LDIzLjg2VjI4MS4xNEExMjMuNjksMTIzLjY5LDAsMCwwLDkzLjY1LDM4Ni4zM1pNNTE5LjEsMzM2SDM2MGE4LDgsMCwwLDEsMC0xNkg0ODhhMjQsMjQsMCwwLDAsMjMuNTQtMjguNzZDNTA5LjM1LDI3OS44NCw0OTguNzEsMjcyLDQ4Ny4xLDI3MkgyODhsNDcuMDktMTcuMDZhMjQsMjQsMCwwLDAtMTQuMTgtNDUuODhMMjEzLjE5LDI0Mi4zMUExMjMuODgsMTIzLjg4LDAsMCwwLDEyOCwzNjB2MjUuNjVhNzkuNzgsNzkuNzgsMCwwLDEsNTgsMTA4LjYzQTExOC45LDExOC45LDAsMCwwLDI0OCw1MTJINDU2YTI0LDI0LDAsMCwwLDIzLjU0LTI4Ljc2QzQ3Ny4zNSw0NzEuODQsNDY2LjcxLDQ2NCw0NTUuMSw0NjRIMzYwYTgsOCwwLDAsMSwwLTE2SDQ4OGEyNCwyNCwwLDAsMCwyMy41NC0yOC43NkM1MDkuMzUsNDA3Ljg0LDQ5OC43MSw0MDAsNDg3LjEsNDAwSDM2MGE4LDgsMCwwLDEsMC0xNkg1MjBhMjQsMjQsMCwwLDAsMjMuNTQtMjguNzZDNTQxLjM1LDM0My44NCw1MzAuNzEsMzM2LDUxOS4xLDMzNlpNNDE2LDY0YTMyLDMyLDAsMSwwLTMyLTMyQTMyLDMyLDAsMCwwLDQxNiw2NFpNMTEyLDQxNmE0OCw0OCwwLDEsMCw0OCw0OEE0OCw0OCwwLDAsMCwxMTIsNDE2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDQuOCAyMzAuNGMtMTAuNi0xNC4xLTMwLjctMTctNDQuOC02LjQtMTQuMSAxMC42LTE3IDMwLjctNi40IDQ0LjhsMzguMSA1MC44YzQuOCA2LjQgNC4xIDE1LjMtMS41IDIwLjlsLTEyLjggMTIuOGMtNi43IDYuNy0xNy42IDYuMi0yMy42LTEuMUw2NCAyNDQuNFY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDc4LjMgMCA5NnYyMTguNGMwIDEwLjkgMy43IDIxLjUgMTAuNSAzMGwxMDQuMSAxMzQuM2M1IDYuNSA4LjQgMTMuOSAxMC40IDIxLjcgMS44IDYuOSA4LjEgMTEuNiAxNS4zIDExLjZIMjcyYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMC0yNy43LTktNTQuNi0yNS42LTc2LjhsLTU3LjYtNzYuOHpNNjA4IDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYxNDguNGwtODkuOCAxMDcuOGMtNiA3LjItMTcgNy43LTIzLjYgMS4xbC0xMi44LTEyLjhjLTUuNi01LjYtNi4zLTE0LjUtMS41LTIwLjlsMzguMS01MC44YzEwLjYtMTQuMSA3LjctMzQuMi02LjQtNDQuOC0xNC4xLTEwLjYtMzQuMi03LjctNDQuOCA2LjRsLTU3LjYgNzYuOEMzNjEgMzI5LjQgMzUyIDM1Ni4zIDM1MiAzODR2MTEyYzAgOC44IDcuMiAxNiAxNiAxNmgxMzEuN2M3LjEgMCAxMy41LTQuNyAxNS4zLTExLjYgMi03LjggNS40LTE1LjIgMTAuNC0yMS43bDEwNC4xLTEzNC4zYzYuOC04LjUgMTAuNS0xOS4xIDEwLjUtMzBWOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzaGFrZUFsdFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1OC41OSwxOTUuNiw1MDQuMiwzMTMuOGE2My40LDYzLjQsMCwwLDEsMjIuMjEsMzcuOTFINjI0YTE2LjA1LDE2LjA1LDAsMCwwLDE2LTE2VjE0My45MUExNiwxNiwwLDAsMCw2MjQsMTI4SDUxMkw0NTcuNDEsNzMuNDFBMzIsMzIsMCwwLDAsNDM0LjgsNjRIMzQ4LjkxYTMyLDMyLDAsMCwwLTIxLjYxLDguNDFsLTg4LjEyLDgwLjY4LTI1LjY5LTE5Ljg1TDI4OS4wOSw2NEgyMDUuM2EzMiwzMiwwLDAsMC0yMi42LDkuNDFsLTIwLjM0LDIwLjNMNDUuNDcsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzgsMzEuNDZBMTYsMTYsMCwwLDAsNi4xOSw1My45MUw1OTQuNTQsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODJsMTkuNjQtMjUuMjdhMTYsMTYsMCwwLDAtMi44MS0yMi40NUwzMDMuNCwyMDIuNzJsMzIuNjktMjkuOTIsMjctMjQuN2ExNiwxNiwwLDAsMSwyMS42MSwyMy42MVpNMTYsMTI4QTE2LjA1LDE2LjA1LDAsMCwwLDAsMTQ0VjMzNS45MWExNiwxNiwwLDAsMCwxNiwxNkgxNDYuM2w5MC41LDgxLjg5YTY0LDY0LDAsMCwwLDkwLTkuM2wuMi0uMiwxNy45MSwxNS41YTM3LjE2LDM3LjE2LDAsMCwwLDUyLjI5LTUuMzlsOC44LTEwLjgyTDIzLjU2LDEyOFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNoYWtlU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCwxMjguMjFWMzg0SDY0YTMyLDMyLDAsMCwwLDMyLTMyVjE4NEwyMy44MywxMjguMjFaTTQ4LDMyMC4xYTE2LDE2LDAsMSwxLTE2LDE2QTE2LDE2LDAsMCwxLDQ4LDMyMC4xWm04MCwzMS44MWgxOC4zbDkwLjUsODEuODlhNjQsNjQsMCwwLDAsOTAtOS4zbC4yLS4yLDE3LjkxLDE1LjVhMzcuMTYsMzcuMTYsMCwwLDAsNTIuMjktNS4zOWw4LjgtMTAuODJMMTI4LDIwOC43MlptNDE2LTIyMy43VjM1Mi4xYTMyLDMyLDAsMCwwLDMyLDMyaDY0VjEyOC4yMVpNNTkyLDM1Mi4xYTE2LDE2LDAsMSwxLDE2LTE2QTE2LDE2LDAsMCwxLDU5MiwzNTIuMVpNMzAzLjMzLDIwMi42N2w1OS41OC01NC41N2ExNiwxNiwwLDAsMSwyMS41OSwyMy42MUwzNTguNDEsMTk1LjYsNTA0LDMxMy44YTczLjA4LDczLjA4LDAsMCwxLDcuOTEsNy43VjEyOEw0NTcuMyw3My40MUEzMS43NiwzMS43NiwwLDAsMCw0MzQuNyw2NEgzNDguOGEzMS45MywzMS45MywwLDAsMC0yMS42LDguNDFsLTg4LjA3LDgwLjY0LTI1LjY0LTE5LjgxTDI4OS4wOSw2NEgyMDUuM2EzMiwzMiwwLDAsMC0yMi42LDkuNDFMMTYyLjM2LDkzLjcyLDQ1LjQ3LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM4LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTksNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY1LTI1LjI3YTE2LDE2LDAsMCwwLTIuODItMjIuNDVaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzaGFrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzQuNyA2NGgtODUuOWMtOCAwLTE1LjcgMy0yMS42IDguNGwtOTguMyA5MGMtLjEuMS0uMi4zLS4zLjQtMTYuNiAxNS42LTE2LjMgNDAuNS0yLjEgNTYgMTIuNyAxMy45IDM5LjQgMTcuNiA1Ni4xIDIuNy4xLS4xLjMtLjEuNC0uMmw3OS45LTczLjJjNi41LTUuOSAxNi43LTUuNSAyMi42IDEgNiA2LjUgNS41IDE2LjYtMSAyMi42bC0yNi4xIDIzLjlMNTA0IDMxMy44YzIuOSAyLjQgNS41IDUgNy45IDcuN1YxMjhsLTU0LjYtNTQuNmMtNS45LTYtMTQuMS05LjQtMjIuNi05LjR6TTU0NCAxMjguMnYyMjMuOWMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NFYxMjguMmgtOTZ6bTQ4IDIyMy45Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6TTAgMzg0aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOC4ySDBWMzg0em00OC02My45YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2LTE2LTcuMi0xNi0xNmMwLTguOSA3LjItMTYgMTYtMTZ6bTQzNS45IDE4LjZMMzM0LjYgMjE3LjVsLTMwIDI3LjVjLTI5LjcgMjcuMS03NS4yIDI0LjUtMTAxLjctNC40LTI2LjktMjkuNC0yNC44LTc0LjkgNC40LTEwMS43TDI4OS4xIDY0aC04My44Yy04LjUgMC0xNi42IDMuNC0yMi42IDkuNEwxMjggMTI4djIyMy45aDE4LjNsOTAuNSA4MS45YzI3LjQgMjIuMyA2Ny43IDE4LjEgOTAtOS4zbC4yLS4yIDE3LjkgMTUuNWMxNS45IDEzIDM5LjQgMTAuNSA1Mi4zLTUuNGwzMS40LTM4LjYgNS40IDQuNGMxMy43IDExLjEgMzMuOSA5LjEgNDUtNC43bDkuNS0xMS43YzExLjItMTMuOCA5LjEtMzMuOS00LjYtNDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFudWtpYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyIDE2MGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bS02NCAwYy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4YzAtNC40Mi0zLjU4LTgtOC04aC0xNnptMjI0IDBjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em02NCAwYy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4YzAtNC40Mi0zLjU4LTgtOC04aC0xNnptODggOGMwLTQuNDItMy41OC04LTgtOGgtMTZjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjh6bS00NDAtOGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTUyMCAwaC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTEyYzAgMTcuNjctMTQuMzMgMzItMzIgMzJIMzUyVjEyOGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE5Mkg5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlYxNzZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2aDE5MnY2NEgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMzUydi02NGgxOTJjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NlYxNzZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS0xNi0zMmMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzYwOCA0OCA2MDggNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzU5NC43NSAxMjggNjA4IDEyOHptLTU3NiAwYzEzLjI1IDAgMjQtMTEuOTQgMjQtMjYuNjdTMzIgNDggMzIgNDggOCA4Ni42MSA4IDEwMS4zMyAxOC43NSAxMjggMzIgMTI4em0yODgtNDhjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1MzMjAgMCAzMjAgMHMtMjQgMzguNjEtMjQgNTMuMzNTMzA2Ljc1IDgwIDMyMCA4MHptLTIwOCA0OGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzExMiA0OCAxMTIgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzk4Ljc1IDEyOCAxMTIgMTI4em02NCAwYzEzLjI1IDAgMjQtMTEuOTQgMjQtMjYuNjdTMTc2IDQ4IDE3NiA0OHMtMjQgMzguNjEtMjQgNTMuMzNTMTYyLjc1IDEyOCAxNzYgMTI4em02NCAwYzEzLjI1IDAgMjQtMTEuOTQgMjQtMjYuNjdTMjQwIDQ4IDI0MCA0OHMtMjQgMzguNjEtMjQgNTMuMzNTMjI2Ljc1IDEyOCAyNDAgMTI4em0xNjAgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzQwMCA0OCA0MDAgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzM4Ni43NSAxMjggNDAwIDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzQ2NCA0OCA0NjQgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzQ1MC43NSAxMjggNDY0IDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzUyOCA0OCA1MjggNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzUxNC43NSAxMjggNTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFyZEhhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMjg4YzAtODAuMjUtNDkuMjgtMTQ4LjkyLTExOS4xOS0xNzcuNjJMMzIwIDE5MlY4MGExNiAxNiAwIDAgMC0xNi0xNmgtOTZhMTYgMTYgMCAwIDAtMTYgMTZ2MTEybC00MC44MS04MS42MkM4MS4yOCAxMzkuMDggMzIgMjA3Ljc1IDMyIDI4OHY2NGg0NDh6bTE2IDk2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQ4MGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhc2h0YWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjY2NyAxODIuMTA5bDcuMTQzLTQwYzEuMzEzLTcuMzU1LTQuMzQyLTE0LjEwOS0xMS44MTMtMTQuMTA5aC03NC44MWwxNC42MjMtODEuODkxQzM3Ny4xMjMgMzguNzU0IDM3MS40NjggMzIgMzYzLjk5NyAzMmgtNDAuNjMyYTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MUwyOTYuMTc1IDEyOEgxOTcuNTRsMTQuNjIzLTgxLjg5MUMyMTMuNDc3IDM4Ljc1NCAyMDcuODIyIDMyIDIwMC4zNSAzMmgtNDAuNjMyYTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MUwxMzIuNTI4IDEyOEg1My40MzJhMTIgMTIgMCAwIDAtMTEuODEzIDkuODkxbC03LjE0MyA0MEMzMy4xNjMgMTg1LjI0NiAzOC44MTggMTkyIDQ2LjI4OSAxOTJoNzQuODFMOTguMjQyIDMyMEgxOS4xNDZhMTIgMTIgMCAwIDAtMTEuODEzIDkuODkxbC03LjE0MyA0MEMtMS4xMjMgMzc3LjI0NiA0LjUzMiAzODQgMTIuMDAzIDM4NGg3NC44MUw3Mi4xOSA0NjUuODkxQzcwLjg3NyA0NzMuMjQ2IDc2LjUzMiA0ODAgODQuMDAzIDQ4MGg0MC42MzJhMTIgMTIgMCAwIDAgMTEuODEzLTkuODkxTDE1MS44MjYgMzg0aDk4LjYzNGwtMTQuNjIzIDgxLjg5MUMyMzQuNTIzIDQ3My4yNDYgMjQwLjE3OCA0ODAgMjQ3LjY1IDQ4MGg0MC42MzJhMTIgMTIgMCAwIDAgMTEuODEzLTkuODkxTDMxNS40NzIgMzg0aDc5LjA5NmExMiAxMiAwIDAgMCAxMS44MTMtOS44OTFsNy4xNDMtNDBjMS4zMTMtNy4zNTUtNC4zNDItMTQuMTA5LTExLjgxMy0xNC4xMDloLTc0LjgxbDIyLjg1Ny0xMjhoNzkuMDk2YTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MXpNMjYxLjg4OSAzMjBoLTk4LjYzNGwyMi44NTctMTI4aDk4LjYzNGwtMjIuODU3IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGF0Q293Ym95U2lkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjAuOCAyOTEuMDZjLTI4LjYzLTIyLjk0LTYyLTM1LjA2LTk2LjQtMzUuMDZDODcgMjU2IDIxLjQ3IDMxOC43MiAxLjQzIDQxMi4wNmMtMy41NSAxNi42LS40MyAzMy44MyA4LjU3IDQ3LjNDMTguNzUgNDcyLjQ3IDMxLjgzIDQ4MCA0NS44OCA0ODBINTkyYy0xMDMuMjEgMC0xNTUtMzcuMDctMjMzLjE5LTEwNC40NnptMjM0LjY1LTE4LjI5TDQ2OC40IDExNi4yQTY0IDY0IDAgMCAwIDM5MiA2NC40MUwyMDAuODUgMTA1YTY0IDY0IDAgMCAwLTUwLjM1IDU1Ljc5TDE0My42MSAyMjZjNi45LS44MyAxMy43LTIgMjAuNzktMiA0MS43OSAwIDgyIDE0LjU1IDExNy4yOSA0Mi44Mmw5OCA4NC40OEM0NTAuNzYgNDEyLjU0IDQ5NC45IDQ0OCA1OTIgNDQ4YTQ4IDQ4IDAgMCAwIDQ4LTQ4YzAtMjUuMzktMjkuNi0xMTkuMzMtMTQ0LjU1LTEyNy4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGF0Q293Ym95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5MCAyOTYuOUM0ODAuNTEgMjM5LjUxIDQ1MC41MSA2NCAzOTIuMyA2NGMtMTQgMC0yNi40OSA1LjkzLTM3IDE0YTU4LjIxIDU4LjIxIDAgMCAxLTcwLjU4IDBjLTEwLjUxLTgtMjMtMTQtMzctMTQtNTguMiAwLTg4LjIgMTc1LjQ3LTk3LjcxIDIzMi44OEMxODguODEgMzA5LjQ3IDI0My43MyAzMjAgMzIwIDMyMHMxMzEuMjMtMTAuNTEgMTcwLTIzLjF6bTE0Mi45LTM3LjE4YTE2IDE2IDAgMCAwLTE5Ljc1IDEuNWMtMSAuOS0xMDEuMjcgOTAuNzgtMjkzLjE2IDkwLjc4LTE5MC44MiAwLTI5Mi4yMi04OS45NC0yOTMuMjQtOTAuODRBMTYgMTYgMCAwIDAgMSAyNzguNTNDMS43MyAyODAuNTUgNzguMzIgNDgwIDMyMCA0ODBzMzE4LjI3LTE5OS40NSAzMTktMjAxLjQ3YTE2IDE2IDAgMCAwLTYuMDktMTguODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdFdpemFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0tMzA0LTY0bC02NC0zMiA2NC0zMiAzMi02NCAzMiA2NCA2NCAzMi02NCAzMi0xNiAzMmgyMDhsLTg2LjQxLTIwMS42M2E2My45NTUgNjMuOTU1IDAgMCAxLTEuODktNDUuNDVMNDE2IDAgMjI4LjQyIDEwNy4xOWExMjcuOTg5IDEyNy45ODkgMCAwIDAtNTMuNDYgNTkuMTVMNjQgNDE2aDE0NGwtMTYtMzJ6bTY0LTIyNGwxNi0zMiAxNiAzMiAzMiAxNi0zMiAxNi0xNiAzMi0xNi0zMi0zMi0xNiAzMi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiAzMDR2OTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OHYtOTZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0ODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptLTQ4LTgwYTc5LjU1NyA3OS41NTcgMCAwIDEgMzAuNzc3IDYuMTY1TDQ2Mi4yNSA4NS4zNzRBNDguMDAzIDQ4LjAwMyAwIDAgMCA0MjIuMzExIDY0SDE1My42ODlhNDggNDggMCAwIDAtMzkuOTM4IDIxLjM3NEwxNy4yMjMgMjMwLjE2NUE3OS41NTcgNzkuNTU3IDAgMCAxIDQ4IDIyNGg0ODB6bS00OCA5NmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0tOTYgMGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkU2lkZUNvdWdoU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU0LjExLDMxOS4yMWMxOS41Ni0zLjgxLDMxLjYyLTI1LDIzLjExLTQ0LjIxLTIxLTQ3LjEyLTQ4LjUtMTUxLjc1LTczLjEyLTE4Ni43NUEyMDguMTMsMjA4LjEzLDAsMCwwLDIzNC4xLDBIMTkyQTE5MC42NCwxOTAuNjQsMCwwLDAsODQuMTgsMzMuM0w0NS40NiwzLjM4QTE2LDE2LDAsMCwwLDIzLDYuMTlMMy4zNywzMS40NkExNiwxNiwwLDAsMCw2LjE4LDUzLjkxTDU5NC41Myw1MDguNjNBMTYsMTYsMCwwLDAsNjE3LDUwNS44MmwxOS42NC0yNS4yN2ExNiwxNiwwLDAsMC0yLjgxLTIyLjQ1Wk0zMTMuMzksMjEwLjQ1LDI2My42MSwxNzJjNS44OC03LjE0LDE0LjQzLTEyLDI0LjM2LTEyYTMyLjA2LDMyLjA2LDAsMCwxLDMyLDMyQzMyMCwxOTksMzE3LjI0LDIwNS4xNywzMTMuMzksMjEwLjQ1Wk02MTYsMzA0YTI0LDI0LDAsMSwwLTI0LTI0QTI0LDI0LDAsMCwwLDYxNiwzMDRabS02NCw2NGEyNCwyNCwwLDEsMC0yNC0yNEEyNCwyNCwwLDAsMCw1NTIsMzY4Wk0yODgsMzg0YTMyLDMyLDAsMCwxLDMyLTMyaDE5LjU0TDIwLjczLDEwNS41OUExOTAuODYsMTkwLjg2LDAsMCwwLDAsMTkyYzAsNTYuNzUsMjQuNzUsMTA3LjYyLDY0LDE0Mi44OFY1MTJIMjg4VjQ4MGg2NGE2NCw2NCwwLDAsMCw2NC02NEgzMjBBMzIsMzIsMCwwLDEsMjg4LDM4NFptMzI4LTI0YTI0LDI0LDAsMSwwLDI0LDI0QTI0LDI0LDAsMCwwLDYxNiwzNjBaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlQ291Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE2LDMwNGEyNCwyNCwwLDEsMC0yNC0yNEEyNCwyNCwwLDAsMCw2MTYsMzA0Wk01NTIsNDE2YTI0LDI0LDAsMSwwLDI0LDI0QTI0LDI0LDAsMCwwLDU1Miw0MTZabS02NC01NmEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw0ODgsMzYwWk02MTYsNDY0YTI0LDI0LDAsMSwwLDI0LDI0QTI0LDI0LDAsMCwwLDYxNiw0NjRabTAtMTA0YTI0LDI0LDAsMSwwLDI0LDI0QTI0LDI0LDAsMCwwLDYxNiwzNjBabS02NC00MGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw1NTIsMzIwWm0tNzQuNzgtNDVjLTIxLTQ3LjEyLTQ4LjUtMTUxLjc1LTczLjEyLTE4Ni43NUEyMDguMTMsMjA4LjEzLDAsMCwwLDIzNC4xLDBIMTkyQzg2LDAsMCw4NiwwLDE5MmMwLDU2Ljc1LDI0Ljc1LDEwNy42Miw2NCwxNDIuODhWNTEySDI4OFY0ODBoNjRhNjQsNjQsMCwwLDAsNjQtNjRIMzIwYTMyLDMyLDAsMCwxLDAtNjRoOTZWMzIwaDMyQTMyLDMyLDAsMCwwLDQ3Ny4yMiwyNzVaTTI4OCwyMjRhMzIsMzIsMCwxLDEsMzItMzJBMzIuMDcsMzIuMDcsMCwwLDEsMjg4LDIyNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZFNpZGVNYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS4xNSwxODQuNDJDLTIuMTcsMjQ0LjIxLDIzLDI5OC4wNiw2NCwzMzQuODhWNTEySDIyNFYzMTYuNTFMMy42NywxNTYuMjVBMTgyLjI4LDE4Mi4yOCwwLDAsMCwuMTUsMTg0LjQyWk01MDkuMjIsMjc1Yy0yMS00Ny4xMi00OC41LTE1MS43NS03My4xMi0xODYuNzVBMjA4LjExLDIwOC4xMSwwLDAsMCwyNjYuMTEsMEgyMDBDMTE3LDAsNDIuNDgsNTAuNTcsMTMuMjUsMTIzLjY1TDIzOS4yMSwyODhINTExLjc2QTMxLjM1LDMxLjM1LDAsMCwwLDUwOS4yMiwyNzVaTTMyMCwyMjRhMzIsMzIsMCwxLDEsMzItMzJBMzIuMDcsMzIuMDcsMCwwLDEsMzIwLDIyNFptMTYsMTQ0SDQ5NmwxNi00OEgyNTZWNTEySDQwMS44OGE2NCw2NCwwLDAsMCw2MC43MS00My43Nkw0NjQsNDY0SDMzNmExNiwxNiwwLDAsMSwwLTMySDQ3NC42N2wxMC42Ny0zMkgzMzZhMTYsMTYsMCwwLDEsMC0zMlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZFNpZGVWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIsMjQwYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDI3MiwyNDBabS02NC02NGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwyMDgsMTc2Wm0zMDEuMiw5OWMtMjAuOTMtNDcuMTItNDguNDMtMTUxLjczLTczLjA3LTE4Ni43NUEyMDcuOSwyMDcuOSwwLDAsMCwyNjYuMDksMEgxOTJDODYsMCwwLDg2LDAsMTkyQTE5MS4yMywxOTEuMjMsMCwwLDAsNjQsMzM0LjgxVjUxMkgzMjBWNDQ4aDY0YTY0LDY0LDAsMCwwLDY0LTY0VjMyMEg0ODBBMzIsMzIsMCwwLDAsNTA5LjIsMjc1Wk0zNjgsMjQwSDM1NS44OGMtMjguNTEsMC00Mi43OSwzNC40Ny0yMi42Myw1NC42M2w4LjU4LDguNTdhMTYsMTYsMCwxLDEtMjIuNjMsMjIuNjNsLTguNTctOC41OEMyOTAuNDcsMjk3LjA5LDI1NiwzMTEuMzcsMjU2LDMzOS44OFYzNTJhMTYsMTYsMCwwLDEtMzIsMFYzMzkuODhjMC0yOC41MS0zNC40Ny00Mi43OS01NC42My0yMi42M2wtOC41Nyw4LjU4YTE2LDE2LDAsMCwxLTIyLjYzLTIyLjYzbDguNTgtOC41N2MyMC4xNi0yMC4xNiw1Ljg4LTU0LjYzLTIyLjYzLTU0LjYzSDExMmExNiwxNiwwLDAsMSwwLTMyaDEyLjEyYzI4LjUxLDAsNDIuNzktMzQuNDcsMjIuNjMtNTQuNjNsLTguNTgtOC41N2ExNiwxNiwwLDAsMSwyMi42My0yMi42M2w4LjU3LDguNThjMjAuMTYsMjAuMTYsNTQuNjMsNS44OCw1NC42My0yMi42M1Y5NmExNiwxNiwwLDAsMSwzMiwwdjEyLjEyYzAsMjguNTEsMzQuNDcsNDIuNzksNTQuNjMsMjIuNjNsOC41Ny04LjU4YTE2LDE2LDAsMCwxLDIyLjYzLDIyLjYzbC04LjU4LDguNTdDMzEzLjA5LDE3My41MywzMjcuMzcsMjA4LDM1NS44OCwyMDhIMzY4YTE2LDE2LDAsMCwxLDAsMzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2djMyMGgzMmExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNkgzMjBhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyVjI4OEgxNjB2MTI4aDMyYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2SDMyYTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgzMlY5NkgzMmExNiAxNiAwIDAgMS0xNi0xNlY0OGExNiAxNiAwIDAgMSAxNi0xNmgxNjBhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZoLTMydjEyOGgxOTJWOTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2VjQ4YTE2IDE2IDAgMCAxIDE2LTE2aDE2MGExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZHBob25lc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjg4aC0xNmMtMzUuMzUgMC02NCAyOC43LTY0IDY0LjEydjYzLjc2YzAgMzUuNDEgMjguNjUgNjQuMTIgNjQgNjQuMTJoMTZjMTcuNjcgMCAzMi0xNC4zNiAzMi0zMi4wNlYzMjAuMDZjMC0xNy43MS0xNC4zMy0zMi4wNi0zMi0zMi4wNnptMjA4IDBoLTE2Yy0xNy42NyAwLTMyIDE0LjM1LTMyIDMyLjA2djEyNy44OGMwIDE3LjcgMTQuMzMgMzIuMDYgMzIgMzIuMDZoMTZjMzUuMzUgMCA2NC0yOC43MSA2NC02NC4xMnYtNjMuNzZjMC0zNS40MS0yOC42NS02NC4xMi02NC02NC4xMnpNMjU2IDMyQzExMi45MSAzMiA0LjU3IDE1MS4xMyAwIDI4OHYxMTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjg4YzAtMTE0LjY3IDkzLjMzLTIwNy44IDIwOC0yMDcuODIgMTE0LjY3LjAyIDIwOCA5My4xNSAyMDggMjA3LjgydjExMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyODhDNTA3LjQzIDE1MS4xMyAzOTkuMDkgMzIgMjU2IDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkcGhvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNTIgMzIgMCAxNDYuNDk2IDAgMjg4djQ4YTMyIDMyIDAgMCAwIDE3LjY4OSAyOC42MjJsMTQuMzgzIDcuMTkxQzM0LjA4MyA0MzEuOTAzIDgzLjQyMSA0ODAgMTQ0IDQ4MGgyNGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtMjRjLTMxLjM0MiAwLTU5LjY3MSAxMi44NzktODAgMzMuNjI3VjI4OGMwLTEwNS44NjkgODYuMTMxLTE5MiAxOTItMTkyczE5MiA4Ni4xMzEgMTkyIDE5MnYxLjYyN0M0MjcuNjcxIDI2OC44NzkgMzk5LjM0MiAyNTYgMzY4IDI1NmgtMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNzZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDI0YzYwLjU3OSAwIDEwOS45MTctNDguMDk4IDExMS45MjgtMTA4LjE4N2wxNC4zODItNy4xOTFBMzIgMzIgMCAwIDAgNTEyIDMzNnYtNDhjMC0xNDEuNDc5LTExNC40OTYtMjU2LTI1Ni0yNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDIwOGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC0xNmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHY0OGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDE2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMjA4em0xNzYgMTQ0YzM1LjM1IDAgNjQtMjguNjUgNjQtNjR2LTQ4YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRoLTE2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjExMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE2ek0yNTYgMEMxMTMuMTggMCA0LjU4IDExOC44MyAwIDI1NnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xMTQuNjkgOTMuMzEtMjA4IDIwOC0yMDhzMjA4IDkzLjMxIDIwOCAyMDhoLS4xMmMuMDggMi40My4xMiAxNjUuNzIuMTIgMTY1LjcyIDAgMjMuMzUtMTguOTMgNDIuMjgtNDIuMjggNDIuMjhIMzIwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTMyYy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4aDE4MS43MmM0OS44NiAwIDkwLjI4LTQwLjQyIDkwLjI4LTkwLjI4VjI1NkM1MDcuNDIgMTE4LjgzIDM5OC44MiAwIDI1NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFydEJyb2tlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzMuNyA3My44bC0yLjQtMi41Yy00Ni00Ny0xMTgtNTEuNy0xNjkuNi0xNC44TDMzNiAxNTkuOWwtOTYgNjQgNDggMTI4LTE0NC0xNDQgOTYtNjQtMjguNi04Ni41QzE1OS43IDE5LjYgODcgMjQgNDAuNyA3MS40bC0yLjQgMi40Qy0xMC40IDEyMy42LTEyLjUgMjAyLjkgMzEgMjU2bDIxMi4xIDIxOC42YzcuMSA3LjMgMTguNiA3LjMgMjUuNyAwTDQ4MSAyNTUuOWM0My41LTUzIDQxLjQtMTMyLjMtNy4zLTE4Mi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjIuMyA2Mi42QzQwNy41IDE1LjkgMzI2IDI0LjMgMjc1LjcgNzYuMkwyNTYgOTYuNWwtMTkuNy0yMC4zQzE4Ni4xIDI0LjMgMTA0LjUgMTUuOSA0OS43IDYyLjZjLTYyLjggNTMuNi02Ni4xIDE0OS44LTkuOSAyMDcuOWwxOTMuNSAxOTkuOGMxMi41IDEyLjkgMzIuOCAxMi45IDQ1LjMgMGwxOTMuNS0xOTkuOGM1Ni4zLTU4LjEgNTMtMTU0LjMtOS44LTIwNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFydGJlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwLjIgMjQzLjhsLTQ5LjcgOTkuNGMtNiAxMi4xLTIzLjQgMTEuNy0yOC45LS42bC01Ni45LTEyNi4zLTMwIDcxLjdINjAuNmwxODIuNSAxODYuNWM3LjEgNy4zIDE4LjYgNy4zIDI1LjcgMEw0NTEuNCAyODhIMzQyLjNsLTIyLjEtNDQuMnpNNDczLjcgNzMuOWwtMi40LTIuNWMtNTEuNS01Mi42LTEzNS44LTUyLjYtMTg3LjQgMEwyNTYgMTAwbC0yNy45LTI4LjVjLTUxLjUtNTIuNy0xMzUuOS01Mi43LTE4Ny40IDBsLTIuNCAyLjRDLTEwLjQgMTIzLjctMTIuNSAyMDMgMzEgMjU2aDEwMi40bDM1LjktODYuMmM1LjQtMTIuOSAyMy42LTEzLjIgMjkuNC0uNGw1OC4yIDEyOS4zIDQ5LTk3LjljNS45LTExLjggMjIuNy0xMS44IDI4LjYgMGwyNy42IDU1LjJINDgxYzQzLjUtNTMgNDEuNC0xMzIuMy03LjMtMTgyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlbGljb3B0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDM4NGgyNzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMiAwLTEyMy43MS0xMDAuMjktMjI0LTIyNC0yMjRWNjRoMTc2YzguODQgMCAxNi03LjE2IDE2LTE2VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE0NGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTc2djY0SDExMkw2OC44IDcwLjRDNjUuNzggNjYuMzcgNjEuMDMgNjQgNTYgNjRIMTYuMDFDNS42IDY0LTIuMDQgNzMuNzguNDkgODMuODhMMzIgMTkybDE2MCA2NCA4Ni40IDExNS4yQTMxLjk5MiAzMS45OTIgMCAwIDAgMzA0IDM4NHptMTEyLTE4OC40OUM0NzguNTUgMjA4LjMgNTI4LjAzIDI1Ny40NCA1NDAuNzkgMzIwSDQxNlYxOTUuNTF6bTIxOS4zNyAyNjMuM2wtMjIuMTUtMjIuMmMtNi4yNS02LjI2LTE2LjI0LTYuMS0yMi42NC4wMS03LjA5IDYuNzctMTMuODQgMTEuMjUtMjQuNjQgMTEuMjVIMjQwYy04Ljg0IDAtMTYgNy4xOC0xNiAxNi4wM3YzMi4wNmMwIDguODUgNy4xNiAxNi4wMyAxNiAxNi4wM2gzMjUuOTRjMTQuODggMCAzNS4zLS40NyA2OC40NS0yOS41MiA3LjAyLTYuMTQgNy41Ny0xNy4wNS45OC0yMy42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlnaGxpZ2h0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU0NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0NzkuOThMOTkuOTIgNTEybDM1LjQ1LTM1LjQ1LTY3LjA0LTY3LjA0TDAgNDc5Ljk4em0xMjQuNjEtMjQwLjAxYTM2LjU5MiAzNi41OTIgMCAwIDAtMTAuNzkgMzguMWwxMy4wNSA0Mi44My01MC45MyA1MC45NCA5Ni4yMyA5Ni4yMyA1MC44Ni01MC44NiA0Mi43NCAxMy4wOGMxMy43MyA0LjIgMjguNjUtLjAxIDM4LjE1LTEwLjc4bDM1LjU1LTQxLjY0LTE3My4zNC0xNzMuMzQtNDEuNTIgMzUuNDR6bTQwMy4zMS0xNjAuN2wtNjMuMi02My4yYy0yMC40OS0yMC40OS01My4zOC0yMS41Mi03NS4xMi0yLjM1TDE5MC41NSAxODMuNjhsMTY5Ljc3IDE2OS43OEw1MzAuMjcgMTU0LjRjMTkuMTgtMjEuNzQgMTguMTUtNTQuNjMtMi4zNS03NS4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwLjk1IDQ3Mi4yM2MtNC4yOCAxNy4xNiA2LjE0IDM0LjUzIDIzLjI4IDM4LjgxIDIuNjEuNjYgNS4yMi45NSA3LjguOTUgMTQuMzMgMCAyNy4zNy05LjcgMzEuMDItMjQuMjNsMjUuMjQtMTAwLjk3LTUyLjc4LTUyLjc4LTM0LjU2IDEzOC4yMnptMTQuODktMTk2LjEyTDEzNyAxMTdjMi4xOS04LjQyLTMuMTQtMTYuOTUtMTEuOTItMTkuMDYtNDMuODgtMTAuNTItODguMzUgMTUuMDctOTkuMzIgNTcuMTdMLjQ5IDI1My4yNGMtMi4xOSA4LjQyIDMuMTQgMTYuOTUgMTEuOTIgMTkuMDZsNjMuNTYgMTUuMjVjOC43OSAyLjEgMTcuNjgtMy4wMiAxOS44Ny0xMS40NHpNMzY4IDE2MGgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2aC0zNC43NWwtNDYuNzgtNDYuNzhDMjQzLjM4IDEzNC4xMSAyMjguNjEgMTI4IDIxMi45MSAxMjhjLTI3LjAyIDAtNTAuNDcgMTguMy01Ny4wMyA0NC41MmwtMjYuOTIgMTA3LjcyYTMyLjAxMiAzMi4wMTIgMCAwIDAgOC40MiAzMC4zOUwyMjQgMzk3LjI1VjQ4MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyczMyLTE0LjMzIDMyLTMydi04Mi43NWMwLTE3LjA5LTYuNjYtMzMuMTYtMTguNzUtNDUuMjVsLTQ2LjgyLTQ2LjgyYy4xNS0uNS40OS0uODkuNjItMS40MWwxOS44OS03OS41NyAyMi40MyAyMi40M2M2IDYgMTQuMTQgOS4zOCAyMi42MiA5LjM4aDQ4djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNzZjLjAxLTguODQtNy4xNS0xNi0xNS45OS0xNnpNMjQwIDk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhTMjY2LjUxIDAgMjQwIDBzLTQ4IDIxLjQ5LTQ4IDQ4IDIxLjQ5IDQ4IDQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXBwbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01ODEuMTIgOTYuMmMtMjcuNjctLjE1LTUyLjUgMTcuNTgtNzYuNiAyNi42MkM0ODkuOTggODguMjcgNDU1LjgzIDY0IDQxNiA2NGMtMTEuMjggMC0yMS45NSAyLjMtMzIgNS44OFY1NmMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0aC0xNmMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OC45OEMyODYuMDEgNzkuNTggMjQxLjI0IDY0IDE5MiA2NCA4NS45NiA2NCAwIDEzNS42NCAwIDIyNHYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTcwLjc5QzEyOC4zNSA0MDcuNTcgMTY2LjcyIDQxNiAyMDggNDE2czc5LjY1LTguNDMgMTEyLTIyLjc5VjQ2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg2NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyODhoMTI4djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05Mi4wMmMwLTM0LjA5LTI0Ljc5LTY3LjU5LTU4Ljg4LTY3Ljc4ek00NDggMTc2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU1LjUzMWMuMjUzIDEzNi42NC0xMTEuMTggMjQ4LjM3Mi0yNDcuODIgMjQ4LjQ2OC01OS4wMTUuMDQyLTExMy4yMjMtMjAuNTMtMTU1LjgyMi01NC45MTEtMTEuMDc3LTguOTQtMTEuOTA1LTI1LjU0MS0xLjgzOS0zNS42MDdsMTEuMjY3LTExLjI2N2M4LjYwOS04LjYwOSAyMi4zNTMtOS41NTEgMzEuODkxLTEuOTg0QzE3My4wNjIgNDI1LjEzNSAyMTIuNzgxIDQ0MCAyNTYgNDQwYzEwMS43MDUgMCAxODQtODIuMzExIDE4NC0xODQgMC0xMDEuNzA1LTgyLjMxMS0xODQtMTg0LTE4NC00OC44MTQgMC05My4xNDkgMTguOTY5LTEyNi4wNjggNDkuOTMybDUwLjc1NCA1MC43NTRjMTAuMDggMTAuMDggMi45NDEgMjcuMzE0LTExLjMxMyAyNy4zMTRIMjRjLTguODM3IDAtMTYtNy4xNjMtMTYtMTZWMzguNjI3YzAtMTQuMjU0IDE3LjIzNC0yMS4zOTMgMjcuMzE0LTExLjMxNGw0OS4zNzIgNDkuMzcyQzEyOS4yMDkgMzQuMTM2IDE4OS41NTIgOCAyNTYgOGMxMzYuODEgMCAyNDcuNzQ3IDExMC43OCAyNDggMjQ3LjUzMXptLTE4MC45MTIgNzguNzg0bDkuODIzLTEyLjYzYzguMTM4LTEwLjQ2MyA2LjI1My0yNS41NDItNC4yMS0zMy42NzlMMjg4IDI1Ni4zNDlWMTUyYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtMTZjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxMzUuNjUxbDY1LjQwOSA1MC44NzRjMTAuNDYzIDguMTM3IDI1LjU0MSA2LjI1MyAzMy42NzktNC4yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9ja2V5UHVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2MGMwLTUzIDExNC42LTk2IDI1Ni05NnMyNTYgNDMgMjU2IDk2LTExNC42IDk2LTI1NiA5NlMwIDIxMyAwIDE2MHptMCA4Mi4yVjM1MmMwIDUzIDExNC42IDk2IDI1NiA5NnMyNTYtNDMgMjU2LTk2VjI0Mi4yYy0xMTMuNCA4Mi4zLTM5OC41IDgyLjQtNTEyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvbGx5QmVycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDE5MmMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OC00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTExMi00OGMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4LTIxLjUtNDgtNDgtNDgtNDggMjEuNS00OCA0OHptLTMyLTQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzI1MC41IDAgMjI0IDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptLTE2LjIgMTM5LjFjLjEtMTIuNC0xMy4xLTIwLjEtMjMuOC0xMy43LTM0LjMgMjAuMy03MS40IDMyLjctMTA4LjcgMzYuMi05LjcuOS0xNS42IDExLjMtMTEuNiAyMC4yIDYuMiAxMy45IDExLjEgMjguNiAxNC43IDQzLjggMy42IDE1LjItNS4zIDMwLjYtMjAuMiAzNS4xLTE0LjkgNC41LTMwLjEgNy42LTQ1LjMgOS4xLTkuNyAxLTE1LjcgMTEuMy0xMS43IDIwLjIgMTUgMzIuOCAyMi45IDY5LjUgMjMgMTA3LjcuMSAxNC40IDE1LjIgMjMuMSAyNy42IDE2IDMzLjItMTkgNjguOS0zMC41IDEwNC44LTMzLjkgOS43LS45IDE1LjYtMTEuMyAxMS42LTIwLjItNi4yLTEzLjktMTEuMS0yOC42LTE0LjctNDMuOC0zLjYtMTUuMiA1LjMtMzAuNiAyMC4yLTM1LjEgMTQuOS00LjUgMzAuMS03LjYgNDUuMy05LjEgOS43LTEgMTUuNy0xMS4zIDExLjctMjAuMi0xNS41LTM0LjItMjMuMy03Mi41LTIyLjktMTEyLjN6TTQzNSAzNjUuNmMtMTUuMi0xLjYtMzAuMy00LjctNDUuMy05LjEtMTQuOS00LjUtMjMuOC0xOS45LTIwLjItMzUuMSAzLjYtMTUuMiA4LjUtMjkuOCAxNC43LTQzLjggNC04LjktMS45LTE5LjMtMTEuNi0yMC4yLTM3LjMtMy41LTc0LjQtMTUuOS0xMDguNy0zNi4yLTEwLjctNi4zLTIzLjkgMS40LTIzLjggMTMuNyAwIDEuNi0uMiAzLjItLjIgNC45LjIgMzMuMyA3IDY1LjcgMTkuOSA5NCA1LjcgMTIuNCA1LjIgMjYuNi0uNiAzOC45IDQuOSAxLjIgOS45IDIuMiAxNC44IDMuNyAxNC45IDQuNSAyMy44IDE5LjkgMjAuMiAzNS4xLTMuNiAxNS4yLTguNSAyOS44LTE0LjcgNDMuOC00IDguOSAxLjkgMTkuMyAxMS42IDIwLjIgMzUuOSAzLjQgNzEuNiAxNC45IDEwNC44IDMzLjkgMTIuNSA3LjEgMjcuNi0xLjYgMjcuNi0xNiAuMi0zOC4yIDgtNzUgMjMtMTA3LjcgNC4zLTguNy0xLjgtMTkuMS0xMS41LTIwLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgwLjM3IDE0OC4yNkw5NiAzMDAuMTFWNDY0YTE2IDE2IDAgMCAwIDE2IDE2bDExMi4wNi0uMjlhMTYgMTYgMCAwIDAgMTUuOTItMTZWMzY4YTE2IDE2IDAgMCAxIDE2LTE2aDY0YTE2IDE2IDAgMCAxIDE2IDE2djk1LjY0YTE2IDE2IDAgMCAwIDE2IDE2LjA1TDQ2NCA0ODBhMTYgMTYgMCAwIDAgMTYtMTZWMzAwTDI5NS42NyAxNDguMjZhMTIuMTkgMTIuMTkgMCAwIDAtMTUuMyAwek01NzEuNiAyNTEuNDdMNDg4IDE4Mi41NlY0NC4wNWExMiAxMiAwIDAgMC0xMi0xMmgtNTZhMTIgMTIgMCAwIDAtMTIgMTJ2NzIuNjFMMzE4LjQ3IDQzYTQ4IDQ4IDAgMCAwLTYxIDBMNC4zNCAyNTEuNDdhMTIgMTIgMCAwIDAtMS42IDE2LjlsMjUuNSAzMUExMiAxMiAwIDAgMCA0NS4xNSAzMDFsMjM1LjIyLTE5My43NGExMi4xOSAxMi4xOSAwIDAgMSAxNS4zIDBMNTMwLjkgMzAxYTEyIDEyIDAgMCAwIDE2LjktMS42bDI1LjUtMzFhMTIgMTIgMCAwIDAtMS43LTE2LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3JzZUhlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA5LjggMzMyLjVsLTY5LjktMTY0LjNjLTE0LjktNDEuMi01MC40LTcxLTkzLTc5LjIgMTgtMTAuNiA0Ni4zLTM1LjkgMzQuMi04Mi4zLTEuMy01LTcuMS03LjktMTItNi4xTDE2Ni45IDc2LjNDMzUuOSAxMjMuNCAwIDIzOC45IDAgMzk4LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDIzNi4yYzIzLjggMCAzOS4zLTI1IDI4LjYtNDYuM0wyNTYgMzg0di0uN2MtNDUuNi0zLjUtODQuNi0zMC43LTEwNC4zLTY5LjYtMS42LTMuMS0uOS02LjkgMS42LTkuM2wxMi4xLTEyLjFjMy45LTMuOSAxMC42LTIuNyAxMi45IDIuNCAxNC44IDMzLjcgNDguMiA1Ny40IDg3LjQgNTcuNCAxNy4yIDAgMzMtNS4xIDQ2LjgtMTMuMmw0NiA2My45YzYgOC40IDE1LjcgMTMuMyAyNiAxMy4zaDUwLjNjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRsNDUuMy0zOS44YzguOS05LjEgMTEuNy0yMi42IDcuMS0zNC40ek0zMjggMjI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0IDI0IDEwLjcgMjQgMjQtMTAuNyAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9yc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjkyIDc2LjZjLS4wMS04LjEzLTMuMDItMTUuODctOC41OC0yMS44LTMuNzgtNC4wMy04LjU4LTkuMTItMTMuNjktMTQuNSAxMS4wNi02Ljg0IDE5LjUtMTcuNDkgMjIuMTgtMzAuNjZDNTc2Ljg1IDQuNjggNTcyLjk2IDAgNTY3LjkgMEg0NDcuOTJjLTcwLjY5IDAtMTI4IDU3LjMxLTEyOCAxMjhIMTYwYy0yOC44NCAwLTU0LjQgMTIuOTgtNzIgMzMuMTFWMTYwYy00OC41MyAwLTg4IDM5LjQ3LTg4IDg4djU2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di01NmMwLTEzLjIyIDYuODctMjQuMzkgMTYuNzgtMzEuNjgtLjIxIDIuNTgtLjc4IDUuMDUtLjc4IDcuNjggMCAyNy42NCAxMS44NCA1Mi4zNiAzMC41NCA2OS44OGwtMjUuNzIgNjguNmE2My45NDUgNjMuOTQ1IDAgMCAwLTIuMTYgMzcuOTlsMjQuODUgOTkuNDFBMTUuOTgyIDE1Ljk4MiAwIDAgMCAxMDcuMDIgNTEyaDY1Ljk2YzEwLjQxIDAgMTguMDUtOS43OCAxNS41Mi0xOS44OGwtMjYuMzEtMTA1LjI2IDIzLjg0LTYzLjU5TDMyMCAzNDUuNlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzE4LjIyYzE5Ljc0LTIwLjE5IDMyLTQ3Ljc1IDMyLTc4LjIyIDAtLjIyLS4wNy0uNDItLjA4LS42NFYxMzYuODlsMTYgNy4xMSAxOC45IDM3LjdjNy40NSAxNC44NyAyNS4wNSAyMS41NSA0MC40OSAxNS4zN2wzMi41NS0xMy4wMmEzMS45OTcgMzEuOTk3IDAgMCAwIDIwLjEyLTI5Ljc0bC0uMDYtNzcuNzF6bS02NCAxOS40Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9zcGl0YWxBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDk2SDQxNlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzNjhjMCA4LjggNy4yIDE2IDE2IDE2aDU0NGM4LjggMCAxNi03LjIgMTYtMTZWMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0xNjAgNDM2YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC0xMjhjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwem0xNjAgMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC0xMjhjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwem0xNi0xNzBjMCAzLjMtMi43IDYtNiA2aC0yNnYyNmMwIDMuMy0yLjcgNi02IDZoLTIwYy0zLjMgMC02LTIuNy02LTZ2LTI2aC0yNmMtMy4zIDAtNi0yLjctNi02di0yMGMwLTMuMyAyLjctNiA2LTZoMjZWODZjMC0zLjMgMi43LTYgNi02aDIwYzMuMyAwIDYgMi43IDYgNnYyNmgyNmMzLjMgMCA2IDIuNyA2IDZ2MjB6bTE0NCAyOThjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwem0wLTEyOGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvc3BpdGFsU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NnMxMTQuNiAyNTYgMjU2IDI1NiAyNTYtMTE0LjYgMjU2LTI1NlMzOTcuNCAwIDI1NiAwem0xMTIgMzc2YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOHYtODhoLTk2djg4YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOFYxMzZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY4OGg5NnYtODhjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHYyNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvc3BpdGFsVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMzIwYTk2IDk2IDAgMSAwLTk2LTk2IDk2IDk2IDAgMCAwIDk2IDk2em00OCAzMmEyMi44OCAyMi44OCAwIDAgMC03LjA2IDEuMDkgMTI0Ljc2IDEyNC43NiAwIDAgMS04MS44OSAwQTIyLjgyIDIyLjgyIDAgMCAwIDQzMiAzNTJhMTEyIDExMiAwIDAgMC0xMTIgMTEyLjYyYy4xNCAyNi4yNiAyMS43MyA0Ny4zOCA0OCA0Ny4zOGgyMjRjMjYuMjcgMCA0Ny44Ni0yMS4xMiA0OC00Ny4zOEExMTIgMTEyIDAgMCAwIDUyOCAzNTJ6bS0xOTguMDkgMTAuNDVBMTQ1LjE5IDE0NS4xOSAwIDAgMSAzNTIgMzQ0LjYyVjEyOGEzMiAzMiAwIDAgMC0zMi0zMmgtMzJWMzJhMzIgMzIgMCAwIDAtMzItMzJIOTZhMzIgMzIgMCAwIDAtMzIgMzJ2NjRIMzJhMzIgMzIgMCAwIDAtMzIgMzJ2MzY4YTE2IDE2IDAgMCAwIDE2IDE2aDI4OC4zMUE3OC42MiA3OC42MiAwIDAgMSAyODggNDY0Ljc5YTE0My4wNiAxNDMuMDYgMCAwIDEgNDEuOTEtMTAyLjM0ek0xNDQgNDA0YTEyIDEyIDAgMCAxLTEyIDEySDkyYTEyIDEyIDAgMCAxLTEyLTEydi00MGExMiAxMiAwIDAgMSAxMi0xMmg0MGExMiAxMiAwIDAgMSAxMiAxMnptMC0xMjhhMTIgMTIgMCAwIDEtMTIgMTJIOTJhMTIgMTIgMCAwIDEtMTItMTJ2LTQwYTEyIDEyIDAgMCAxIDEyLTEyaDQwYTEyIDEyIDAgMCAxIDEyIDEyem00OC0xMjJhNiA2IDAgMCAxLTYgNmgtMjBhNiA2IDAgMCAxLTYtNnYtMjZoLTI2YTYgNiAwIDAgMS02LTZ2LTIwYTYgNiAwIDAgMSA2LTZoMjZWNzBhNiA2IDAgMCAxIDYtNmgyMGE2IDYgMCAwIDEgNiA2djI2aDI2YTYgNiAwIDAgMSA2IDZ2MjBhNiA2IDAgMCAxLTYgNmgtMjZ6bTgwIDI1MGExMiAxMiAwIDAgMS0xMiAxMmgtNDBhMTIgMTIgMCAwIDEtMTItMTJ2LTQwYTEyIDEyIDAgMCAxIDEyLTEyaDQwYTEyIDEyIDAgMCAxIDEyIDEyem0wLTEyOGExMiAxMiAwIDAgMS0xMiAxMmgtNDBhMTIgMTIgMCAwIDEtMTItMTJ2LTQwYTEyIDEyIDAgMCAxIDEyLTEyaDQwYTEyIDEyIDAgMCAxIDEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3NwaXRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDkydjIwSDB2LTIwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMjBWMTIwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGg4OFYyNGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTEyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY3Mmg4OGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MzYwaDIwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ6TTMwOCAxOTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMnptLTE2OCA2NGg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyem0xMDQgMTI4aC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY4NGg2NHYtODRjMC02LjYyNy01LjM3My0xMi0xMi0xMnptNjQtOTZoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMnptLTExNiAxMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwek0xODIgOTZoMjZ2MjZhNiA2IDAgMCAwIDYgNmgyMGE2IDYgMCAwIDAgNi02Vjk2aDI2YTYgNiAwIDAgMCA2LTZWNzBhNiA2IDAgMCAwLTYtNmgtMjZWMzhhNiA2IDAgMCAwLTYtNmgtMjBhNiA2IDAgMCAwLTYgNnYyNmgtMjZhNiA2IDAgMCAwLTYgNnYyMGE2IDYgMCAwIDAgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3RUdWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE0LjIxIDE3Ny42NWMxLjAyIDguMjEgNy43NSAxNC4zNSAxNS43NSAxNC4zNWgxNi4xMmM5LjUxIDAgMTcuMDgtOC41NyAxNi0xOC4zNS00LjM0LTM5LjExLTIyLjQtNzQuNTMtNTAuMTMtOTcuMTYtMTcuMzctMTQuMTctMjguODItMzYuNzUtMzEuOTgtNjIuMTVDMzc4Ljk2IDYuMTQgMzcyLjIyIDAgMzY0LjIzIDBoLTE2LjEyYy05LjUxIDAtMTcuMDkgOC41Ny0xNiAxOC4zNSA0LjM0IDM5LjExIDIyLjQgNzQuNTMgNTAuMTMgOTcuMTYgMTcuMzYgMTQuMTcgMjguODIgMzYuNzUgMzEuOTcgNjIuMTR6bS0xMDggMGMxLjAyIDguMjEgNy43NSAxNC4zNSAxNS43NSAxNC4zNWgxNi4xMmM5LjUxIDAgMTcuMDgtOC41NyAxNi0xOC4zNS00LjM0LTM5LjExLTIyLjQtNzQuNTMtNTAuMTMtOTcuMTYtMTcuMzctMTQuMTctMjguODItMzYuNzUtMzEuOTgtNjIuMTVDMjcwLjk2IDYuMTQgMjY0LjIyIDAgMjU2LjIzIDBoLTE2LjEyYy05LjUxIDAtMTcuMDkgOC41Ny0xNiAxOC4zNSA0LjM0IDM5LjExIDIyLjQgNzQuNTMgNTAuMTMgOTcuMTYgMTcuMzYgMTQuMTcgMjguODIgMzYuNzUgMzEuOTcgNjIuMTR6TTQ4MCAyNTZIMjU2bC0xMTAuOTMtODMuMmE2My45OSA2My45OSAwIDAgMC0zOC40LTEyLjhINjRjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MjI0YzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzg0YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWMjg4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTEyOCA0NDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOFYzMjhjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTEyem05NiAwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LThWMzI4YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djExMnptOTYgMGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04VjMyOGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxMTJ6bTk2IDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOFYzMjhjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTEyek02NCAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFM5OS4zNSAwIDY0IDAgMCAyOC42NSAwIDY0czI4LjY1IDY0IDY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3Rkb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4LjU2IDIzLjQ0YTgwIDgwIDAgMCAwLTExMy4xMiAwbC0zNTIgMzUyYTgwIDgwIDAgMSAwIDExMy4xMiAxMTMuMTJsMzUyLTM1MmE4MCA4MCAwIDAgMCAwLTExMy4xMnptLTQ5LjkzIDk1LjE5Yy0xOS42IDE5LjU5LTM3LjUyIDIyLjY3LTUxLjkzIDI1LjE0QzM3My43NiAxNDYgMzY0LjQgMTQ3LjYgMzUyIDE2MHMtMTQgMjEuNzYtMTYuMjMgMzQuNzFjLTIuNDggMTQuNC01LjU1IDMyLjMzLTI1LjE1IDUxLjkycy0zNy41MiAyMi42Ny01MS45MiAyNS4xNUMyNDUuNzUgMjc0IDIzNi40IDI3NS42IDIyNCAyODhzLTE0IDIxLjc1LTE2LjIzIDM0LjdjLTIuNDcgMTQuNC01LjU0IDMyLjMzLTI1LjE0IDUxLjkycy0zNy41MyAyMi42OC01MS45MyAyNS4xNUMxMTcuNzYgNDAyIDEwOC40IDQwMy42IDk2IDQxNmExNiAxNiAwIDAgMS0yMi42My0yMi42M2MxOS42LTE5LjU5IDM3LjUyLTIyLjY3IDUxLjkyLTI1LjE0IDEzLTIuMjIgMjIuMy0zLjgyIDM0LjcxLTE2LjIzczE0LTIxLjc1IDE2LjIyLTM0LjdjMi40OC0xNC40IDUuNTUtMzIuMzMgMjUuMTUtNTEuOTJzMzcuNTItMjIuNjcgNTEuOTItMjUuMTRjMTMtMi4yMiAyMi4zLTMuODMgMzQuNy0xNi4yM3MxNC0yMS43NiAxNi4yNC0zNC43MWMyLjQ3LTE0LjQgNS41NC0zMi4zMyAyNS4xNC01MS45MnMzNy41Mi0yMi42OCA1MS45Mi0yNS4xNUMzOTQuMjQgMTEwIDQwMy41OSAxMDguNDEgNDE2IDk2YTE2IDE2IDAgMCAxIDIyLjYzIDIyLjYzek0zMS40NCAzMjIuMThMMzIyLjE4IDMxLjQ0bC0xMS41NC0xMS41NWMtMjUtMjUtNjMuODUtMjYuNjYtODYuNzktMy43MkwxNi4xNyAyMjMuODVjLTIyLjk0IDIyLjk0LTIxLjI3IDYxLjc5IDMuNzIgODYuNzh6bTQ0OS4xMi0xMzIuMzZMMTg5LjgyIDQ4MC41NmwxMS41NCAxMS41NWMyNSAyNSA2My44NSAyNi42NiA4Ni43OSAzLjcybDIwNy42OC0yMDcuNjhjMjIuOTQtMjIuOTQgMjEuMjctNjEuNzktMy43Mi04Ni43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYwIDY0YzguODQgMCAxNi03LjE2IDE2LTE2VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2QzcuMTYgMCAwIDcuMTYgMCAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNS45OHYzODRIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDI0MHYtODBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY4MGgyNDBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNlY2NGgxNnptLTMwNCA0NC44YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40em0wIDk2YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40em0tMTI4LTk2YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40ek0xNzkuMiAyNTZoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjh6TTE5MiAzODRjMC01My4wMiA0Mi45OC05NiA5Ni05NnM5NiA0Mi45OCA5NiA5NkgxOTJ6bTI1Ni0xNDAuOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMC05NmMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91cmdsYXNzRW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2MCA2NGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0IDAgOTAuOTY1IDUxLjAxNiAxNjcuNzM0IDEyMC44NDIgMTkyQzc1LjAxNiAyODAuMjY2IDI0IDM1Ny4wMzUgMjQgNDQ4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTE2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNCAwLTkwLjk2NS01MS4wMTYtMTY3LjczNC0xMjAuODQyLTE5MkMzMDguOTg0IDIzMS43MzQgMzYwIDE1NC45NjUgMzYwIDY0ek0xOTIgMjA4Yy01Ny43ODcgMC0xMDQtNjYuNTE4LTEwNC0xNDRoMjA4YzAgNzcuOTQ1LTQ2LjUxIDE0NC0xMDQgMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VyZ2xhc3NIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2MCAwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0IDAgOTAuOTY1IDUxLjAxNiAxNjcuNzM0IDEyMC44NDIgMTkyQzc1LjAxNiAyODAuMjY2IDI0IDM1Ny4wMzUgMjQgNDQ4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTE2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNCAwLTkwLjk2NS01MS4wMTYtMTY3LjczNC0xMjAuODQyLTE5MkMzMDguOTg0IDIzMS43MzQgMzYwIDE1NC45NjUgMzYwIDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6bS03NS4wNzggMzg0SDk5LjA4YzE3LjA1OS00Ni43OTcgNTIuMDk2LTgwIDkyLjkyLTgwIDQwLjgyMSAwIDc1Ljg2MiAzMy4xOTYgOTIuOTIyIDgwem0uMDE5LTI1Nkg5OS4wNzhDOTEuOTg4IDEwOC41NDggODggODYuNzQ4IDg4IDY0aDIwOGMwIDIyLjgwNS0zLjk4NyA0NC41ODctMTEuMDU5IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VyZ2xhc3NTdGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCAwIDkwLjk2NSA1MS4wMTYgMTY3LjczNCAxMjAuODQyIDE5MkM3NS4wMTYgMjgwLjI2NiAyNCAzNTcuMDM1IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQgMC05MC45NjUtNTEuMDE2LTE2Ny43MzQtMTIwLjg0Mi0xOTJDMzA4Ljk4NCAyMzEuNzM0IDM2MCAxNTQuOTY1IDM2MCA2NGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0em0tNjQgNDQ4SDg4YzAtNzcuNDU4IDQ2LjIwNC0xNDQgMTA0LTE0NCA1Ny43ODYgMCAxMDQgNjYuNTE3IDEwNCAxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCAwIDkwLjk2NSA1MS4wMTYgMTY3LjczNCAxMjAuODQyIDE5MkM3NS4wMTYgMjgwLjI2NiAyNCAzNTcuMDM1IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQgMC05MC45NjUtNTEuMDE2LTE2Ny43MzQtMTIwLjg0Mi0xOTJDMzA4Ljk4NCAyMzEuNzM0IDM2MCAxNTQuOTY1IDM2MCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VEYW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDExNC45Nkw2OS40NyAzMDcuNzFjLTEuNjIgMS40Ni0zLjY5IDIuMTQtNS40NyAzLjM1VjQ5NmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNDkuMjNMMTkyIDQzOS4xOWwxMDQuMTEtNjQtNjAuMTYtMTE5LjIyTDM4NCAzOTIuNzVsLTEwNC4xMSA2NEwzMTkuODEgNTEySDQ5NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYzMTEuMWMtMS43LTEuMTYtMy43Mi0xLjgyLTUuMjYtMy4yTDI4OCAxMTQuOTZ6bTI4Mi42OSAxMjEuMzJMNTEyIDE4NC40NVY0OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtNjRjLTguODQgMC0xNiA3LjE2LTE2IDE2djUxLjY5TDMxNC43NSAxMC4zMUMzMDcuMTIgMy40NSAyOTcuNTYuMDEgMjg4IDBzLTE5LjEgMy40MS0yNi43IDEwLjI3TDUuMzEgMjM2LjI4Yy02LjU3IDUuOTEtNy4xMiAxNi4wMi0xLjIxIDIyLjZsMjEuNCAyMy44MmM1LjkgNi41NyAxNi4wMiA3LjEyIDIyLjYgMS4yMUwyNzcuNDIgODEuNjNjNi4wNS01LjMzIDE1LjEyLTUuMzMgMjEuMTcgMEw1MjcuOTEgMjgzLjljNi41NyA1LjkgMTYuNjkgNS4zNiAyMi42LTEuMjFsMjEuNC0yMy44MmM1LjktNi41NyA1LjM2LTE2LjY5LTEuMjItMjIuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzAuNjksMjM2LjI3LDUxMiwxODQuNDRWNDhhMTYsMTYsMCwwLDAtMTYtMTZINDMyYTE2LDE2LDAsMCwwLTE2LDE2Vjk5LjY3TDMxNC43OCwxMC4zQzMwOC41LDQuNjEsMjk2LjUzLDAsMjg4LDBzLTIwLjQ2LDQuNjEtMjYuNzQsMTAuM2wtMjU2LDIyNkExOC4yNywxOC4yNywwLDAsMCwwLDI0OC4yYTE4LjY0LDE4LjY0LDAsMCwwLDQuMDksMTAuNzFMMjUuNSwyODIuN2EyMS4xNCwyMS4xNCwwLDAsMCwxMiw1LjMsMjEuNjcsMjEuNjcsMCwwLDAsMTAuNjktNC4xMWwxNS45LTE0VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkg0ODBhMzIsMzIsMCwwLDAsMzItMzJWMjY5Ljg4bDE1LjkxLDE0QTIxLjk0LDIxLjk0LDAsMCwwLDUzOC42MywyODhhMjAuODksMjAuODksMCwwLDAsMTEuODctNS4zMWwyMS40MS0yMy44MUEyMS42NCwyMS42NCwwLDAsMCw1NzYsMjQ4LjE5LDIxLDIxLDAsMCwwLDU3MC42OSwyMzYuMjdaTTI4OCwxNzZhNjQsNjQsMCwxLDEtNjQsNjRBNjQsNjQsMCwwLDEsMjg4LDE3NlpNNDAwLDQ0OEgxNzZhMTYsMTYsMCwwLDEtMTYtMTYsOTYsOTYsMCwwLDEsOTYtOTZoNjRhOTYsOTYsMCwwLDEsOTYsOTZBMTYsMTYsMCwwLDEsNDAwLDQ0OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHJ5dm5pYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggMjQwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNDEuODZjMTMuNDEtMjguNjMgMTMuNzQtNjMuMzMtNC4xMy05NC4wNUMzMDMuMzQgNDkuODQgMjY3LjEgMzIgMjI5Ljk2IDMyaC03OC44MmMtMjQuMzIgMC00Ny44NiA4LjUzLTY2LjU0IDI0LjA5TDcyLjgzIDY1LjljLTEwLjE4IDguNDktMTEuNTYgMjMuNjItMy4wNyAzMy44bDIwLjQ5IDI0LjU5YzguNDkgMTAuMTkgMjMuNjIgMTEuNTYgMzMuODEgMy4wN2wxMS43My05Ljc4YzQuMzItMy42IDkuNzctNS41NyAxNS4zOS01LjU3aDgzLjYyYzExLjY5IDAgMjEuMiA5LjUyIDIxLjIgMjEuMiAwIDUuOTEtMi40OCAxMS41OC02LjgxIDE1LjU4TDIxOS43IDE3NkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTM0LjM3bC0zNC42NyAzMkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDEuODZjLTEzLjQxIDI4LjYzLTEzLjc0IDYzLjMzIDQuMTMgOTQuMDVDODAuNjYgNDYyLjE1IDExNi45IDQ4MCAxNTQuMDQgNDgwaDc4LjgyYzI0LjMyIDAgNDcuODYtOC41MyA2Ni41NC0yNC4wOWwxMS43Ny05LjgxYzEwLjE4LTguNDkgMTEuNTYtMjMuNjIgMy4wNy0zMy44bC0yMC40OS0yNC41OWMtOC40OS0xMC4xOS0yMy42Mi0xMS41Ni0zMy44MS0zLjA3bC0xMS43NSA5LjhhMjMuOTkyIDIzLjk5MiAwIDAgMS0xNS4zNiA1LjU2SDE0OS4yYy0xMS42OSAwLTIxLjItOS41Mi0yMS4yLTIxLjIgMC01LjkxIDIuNDgtMTEuNTggNi44MS0xNS41OEwxNjQuMyAzMzZIMzY4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNkgyMzMuNjNsMzQuNjctMzJIMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJQ3Vyc29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1Mi4wNDhWMTIuMDY1QzI1NiA1LjQ5NiAyNTAuNzI2LjE0OCAyNDQuMTU4LjA2NiAyMTEuNjIxLS4zNDQgMTY2LjQ2OS4wMTEgMTI4IDM3Ljk1OSA5MC4yNjYuNzM2IDQ2Ljk3OS0uMTE0IDExLjkxMy4xMTQgNS4zMTguMTU3IDAgNS41MTkgMCAxMi4xMTR2MzkuNjQ1YzAgNi42ODcgNS40NTggMTIuMDc4IDEyLjE0NSAxMS45OThDMzguMTExIDYzLjQ0NyA5NiA2Ny4yNDMgOTYgMTEyLjE4MlYyMjRINjBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgzNnYxMTJjMCA0NC45MzItNTYuMDc1IDQ4LjAzMS04My45NSA0Ny45NTlDNS40MDQgNDQ3Ljk0MiAwIDQ1My4zMDYgMCA0NTkuOTUydjM5Ljk4M2MwIDYuNTY5IDUuMjc0IDExLjkxNyAxMS44NDIgMTEuOTk5IDMyLjUzNy40MDkgNzcuNjg5LjA1NCAxMTYuMTU4LTM3Ljg5NCAzNy43MzQgMzcuMjIzIDgxLjAyMSAzOC4wNzMgMTE2LjA4NyAzNy44NDUgNi41OTUtLjA0MyAxMS45MTMtNS40MDUgMTEuOTEzLTEyVjQ2MC4yNGMwLTYuNjg3LTUuNDU4LTEyLjA3OC0xMi4xNDUtMTEuOTk4QzIxNy44ODkgNDQ4LjU1MyAxNjAgNDQ0LjkzOSAxNjAgNDAwVjI4OGgzNmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0zNlYxMTIuMTgyYzAtNDQuOTMyIDU2LjA3NS00OC4yMTMgODMuOTUtNDguMTQyIDYuNjQ2LjAxOCAxMi4wNS01LjM0NiAxMi4wNS0xMS45OTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUljZUNyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCAxNjBoLS45NGExNDQgMTQ0IDAgMSAwLTI4Ni4xMiAwSDgwYTQ4IDQ4IDAgMCAwIDAgOTZoMjg4YTQ4IDQ4IDAgMCAwIDAtOTZ6TTE5NS4zOCA0OTMuNjlhMzEuNTIgMzEuNTIgMCAwIDAgNTcuMjQgMEwzNTIgMjg4SDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJY2ljbGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMS40IDM3LjlDNTE1LjEgMTguMiA1MDAgMCA0ODAgMEgzMkMxMC42IDAtNC44IDIwLjcgMS40IDQxLjJsODcuMSAyNzMuNGMyLjUgNy4yIDEyLjcgNy4yIDE1LjEgMEwxNDAgMTkwLjVsNDQuMiAxODcuM2MxLjkgOC4zIDEzLjcgOC4zIDE1LjYgMGw0Ni41LTE5Ni45IDM0LjEgMTMzLjRjMi4zIDcuNiAxMyA3LjYgMTUuMyAwbDQ1LjgtMTcyLjUgNjYuNyAzNjMuOGMxLjcgOC42IDE0IDguNiAxNS43IDBsODcuNS00NjcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE2LjY1IDIxOS4zNWExNS42OCAxNS42OCAwIDAgMCAyMi42NSAwbDk2Ljc1LTk5LjgzYzI4LjE1LTI5IDI2LjUtNzcuMS00LjkxLTEwMy44OEMyMDMuNzUtNy43IDE2My0zLjUgMTM3Ljg2IDIyLjQ0TDEyOCAzMi41OGwtOS44NS0xMC4xNEM5My4wNS0zLjUgNTIuMjUtNy43IDI0Ljg2IDE1LjY0Yy0zMS40MSAyNi43OC0zMyA3NC44NS01IDEwMy44OHptMTQzLjkyIDEwMC40OWgtNDhsLTcuMDgtMTQuMjRhMjcuMzkgMjcuMzkgMCAwIDAtMjUuNjYtMTcuNzhoLTcxLjcxYTI3LjM5IDI3LjM5IDAgMCAwLTI1LjY2IDE3Ljc4bC03IDE0LjI0aC00OEEyNy40NSAyNy40NSAwIDAgMCAwIDM0Ny4zdjEzNy4yNUEyNy40NCAyNy40NCAwIDAgMCAyNy40MyA1MTJoMjMzLjE0QTI3LjQ1IDI3LjQ1IDAgMCAwIDI4OCA0ODQuNTVWMzQ3LjNhMjcuNDUgMjcuNDUgMCAwIDAtMjcuNDMtMjcuNDZ6TTE0NCA0NjhhNTIgNTIgMCAxIDEgNTItNTIgNTIgNTIgMCAwIDEtNTIgNTJ6bTM1NS40LTExNS45aC02MC41OGwyMi4zNi01MC43NWMyLjEtNi42NS0zLjkzLTEzLjIxLTEyLjE4LTEzLjIxaC03NS41OWMtNi4zIDAtMTEuNjYgMy45LTEyLjUgOS4xbC0xNi44IDEwNi45M2MtMSA2LjMgNC44OCAxMS44OSAxMi41IDExLjg5aDYyLjMxbC0yNC4yIDgzYy0xLjg5IDYuNjUgNC4yIDEyLjkgMTIuMjMgMTIuOWExMy4yNiAxMy4yNiAwIDAgMCAxMC45Mi01LjI1bDkyLjQtMTM4LjkxYzQuODgtNi45MS0xLjE2LTE1LjctMTAuODctMTUuN3pNNDc4LjA4LjMzTDMyOS41MSAyMy4xN0MzMTQuODcgMjUuNDIgMzA0IDM4LjkyIDMwNCA1NC44M1YxNjEuNmE4My4yNSA4My4yNSAwIDAgMC0xNi0xLjdjLTM1LjM1IDAtNjQgMjEuNDgtNjQgNDhzMjguNjUgNDggNjQgNDhjMzUuMiAwIDYzLjczLTIxLjMyIDY0LTQ3LjY2Vjk5LjY2bDExMi0xNy4yMnY0Ny4xOGE4My4yNSA4My4yNSAwIDAgMC0xNi0xLjdjLTM1LjM1IDAtNjQgMjEuNDgtNjQgNDhzMjguNjUgNDggNjQgNDhjMzUuMiAwIDYzLjczLTIxLjMyIDY0LTQ3LjY2VjMyYzAtMTkuNDgtMTYtMzQuNDItMzMuOTItMzEuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlkQmFkZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE0NCAzMmg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmgtOTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTQ4IDEyOGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NC02NC0yOC43LTY0LTY0IDI4LjctNjQgNjQtNjR6bTExMiAyMzYuOGMwIDEwLjYtMTAgMTkuMi0yMi40IDE5LjJIMTAyLjRDOTAgNDE2IDgwIDQwNy40IDgwIDM5Ni44di0xOS4yYzAtMzEuOCAzMC4xLTU3LjYgNjcuMi01Ny42aDVjMTIuMyA1LjEgMjUuNyA4IDM5LjggOHMyNy42LTIuOSAzOS44LThoNWMzNy4xIDAgNjcuMiAyNS44IDY3LjIgNTcuNnYxOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZENhcmRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDY0SDM4NHY5NkgxOTJWNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI4OCAyMjRjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjQtNjQtMjguNy02NC02NCAyOC43LTY0IDY0LTY0em05My4zIDIyNEgxOTQuN2MtMTAuNCAwLTE4LjgtMTAtMTUuNi0xOS44IDguMy0yNS42IDMyLjQtNDQuMiA2MC45LTQ0LjJoOC4yYzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDguMmMyOC40IDAgNTIuNSAxOC41IDYwLjkgNDQuMiAzLjIgOS44LTUuMiAxOS44LTE1LjYgMTkuOHpNMzUyIDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyaC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoMTI4VjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MTZoNTc2VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0wIDQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTI4SDB2MzA0em0zNTItMjMyYzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZ6bTAgNjRjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNnptMCA2NGMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2ek0xNzYgMTkyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHpNNjcuMSAzOTYuMkM3NS41IDM3MC41IDk5LjYgMzUyIDEyOCAzNTJoOC4yYzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDguMmMyOC40IDAgNTIuNSAxOC41IDYwLjkgNDQuMiAzLjIgOS45LTUuMiAxOS44LTE1LjYgMTkuOEg4Mi43Yy0xMC40IDAtMTguOC0xMC0xNS42LTE5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlnbG9vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAzMy45Yy0xMC41LTEuMi0yMS4yLTEuOS0zMi0xLjktOTkuOCAwLTE4Ny44IDUwLjgtMjM5LjQgMTI4SDMyMFYzMy45ek05NiAxOTJIMzAuM0MxMS4xIDIzMC42IDAgMjc0IDAgMzIwaDk2VjE5MnpNMzUyIDM5LjRWMTYwaDE3NS40QzQ4Ny4yIDk5LjkgNDI0LjggNTUuOSAzNTIgMzkuNHpNNDgwIDMyMGg5NmMwLTQ2LTExLjEtODkuNC0zMC4zLTEyOEg0ODB2MTI4em0tNjQgNjR2OTZoMTI4YzE3LjcgMCAzMi0xNC4zIDMyLTMydi05Nkg0MTEuNWMyLjYgMTAuMyA0LjUgMjAuOSA0LjUgMzJ6bTMyLTE5MkgxMjh2MTI4aDQ5LjhjMjIuMi0zOC4xIDYzLTY0IDExMC4yLTY0czg4IDI1LjkgMTEwLjIgNjRINDQ4VjE5MnpNMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTI4di05NmMwLTExLjEgMS45LTIxLjcgNC41LTMySDB2OTZ6bTI4OC0xNjBjLTUzIDAtOTYgNDMtOTYgOTZ2OTZoMTkydi05NmMwLTUzLTQzLTk2LTk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djI4OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4ek0xMTIgMTIwYy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2IDU2LTI1LjA3MiA1Ni01Ni0yNS4wNzItNTYtNTYtNTZ6TTY0IDM4NGgzODRWMjcybC04Ny41MTUtODcuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMMjA4IDMyMGwtNTUuNTE1LTU1LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDY0IDMzNnY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW1hZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCA0MTZ2MTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxNzZjMC0yNi41MSAyMS40OS00OCA0OC00OGgxNnYyMDhjMCA0NC4xMTIgMzUuODg4IDgwIDgwIDgwaDMzNnptOTYtODBWODBjMC0yNi41MS0yMS40OS00OC00OC00OEgxNDRjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjU2YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzg0YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh6TTI1NiAxMjhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDggMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDh6bS05NiAxNDRsNTUuNTE1LTU1LjUxNWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBMMjcyIDI1NmwxMzUuNTE1LTEzNS41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDUxMiAyMDh2MTEySDE2MHYtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2Ny45MzggMjQzLjkwOEw0NjIuMjUgODUuMzc0QTQ4LjAwMyA0OC4wMDMgMCAwIDAgNDIyLjMxMSA2NEgxNTMuNjg5YTQ4IDQ4IDAgMCAwLTM5LjkzOCAyMS4zNzRMOC4wNjIgMjQzLjkwOEE0Ny45OTQgNDcuOTk0IDAgMCAwIDAgMjcwLjUzM1Y0MDBjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0ODBjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyNzAuNTMzYTQ3Ljk5NCA0Ny45OTQgMCAwIDAtOC4wNjItMjYuNjI1ek0xNjIuMjUyIDEyOGgyNTEuNDk3bDg1LjMzMyAxMjhIMzc2bC0zMiA2NEgyMzJsLTMyLTY0SDc2LjkxOGw4NS4zMzQtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcuMzEgMzYzLjNsOTYtOTZhMTYgMTYgMCAwIDAgMC0yMi42MmwtOTYtOTZDMTcuMjcgMTM4LjY2IDAgMTQ1Ljc4IDAgMTYwdjE5MmMwIDE0LjMxIDE3LjMzIDIxLjMgMjcuMzEgMTEuM3pNNDMyIDQxNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0zLjE3LTEyOEgyMDQuODNBMTIuODIgMTIuODIgMCAwIDAgMTkyIDMwMC44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAyMDQuODMgMzUyaDIzMC4zNEExMi44MiAxMi44MiAwIDAgMCA0NDggMzM5LjE3di0zOC4zNEExMi44MiAxMi44MiAwIDAgMCA0MzUuMTcgMjg4em0wLTEyOEgyMDQuODNBMTIuODIgMTIuODIgMCAwIDAgMTkyIDE3Mi44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAyMDQuODMgMjI0aDIzMC4zNEExMi44MiAxMi44MiAwIDAgMCA0NDggMjExLjE3di0zOC4zNEExMi44MiAxMi44MiAwIDAgMCA0MzUuMTcgMTYwek00MzIgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZHVzdHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3NS4xMTUgMTYzLjc4MUwzMzYgMjUyLjMwOXYtNjguMjhjMC0xOC45MTYtMjAuOTMxLTMwLjM5OS0zNi44ODUtMjAuMjQ4TDE2MCAyNTIuMzA5VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnY0MDBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDQ2NGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTg0LjAyOWMwLTE4LjkxNy0yMC45MzEtMzAuMzk5LTM2Ljg4NS0yMC4yNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZmluaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS4xIDk2QzQwNSA5NiAzNTMuMyAxMzcuMyAzMjAgMTc0LjYgMjg2LjcgMTM3LjMgMjM1IDk2IDE2OC45IDk2IDc1LjggOTYgMCAxNjcuOCAwIDI1NnM3NS44IDE2MCAxNjguOSAxNjBjNjYuMSAwIDExNy44LTQxLjMgMTUxLjEtNzguNiAzMy4zIDM3LjMgODUgNzguNiAxNTEuMSA3OC42IDkzLjEgMCAxNjguOS03MS44IDE2OC45LTE2MFM1NjQuMiA5NiA0NzEuMSA5NnpNMTY4LjkgMzIwYy00MC4yIDAtNzIuOS0yOC43LTcyLjktNjRzMzIuNy02NCA3Mi45LTY0YzM4LjIgMCA3My40IDM2LjEgOTQgNjQtMjAuNCAyNy42LTU1LjkgNjQtOTQgNjR6bTMwMi4yIDBjLTM4LjIgMC03My40LTM2LjEtOTQtNjQgMjAuNC0yNy42IDU1LjktNjQgOTQtNjQgNDAuMiAwIDcyLjkgMjguNyA3Mi45IDY0cy0zMi43IDY0LTcyLjkgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZm9DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjA0MyA4IDggMTE5LjA4MyA4IDI1NmMwIDEzNi45OTcgMTExLjA0MyAyNDggMjQ4IDI0OHMyNDgtMTExLjAwMyAyNDgtMjQ4QzUwNCAxMTkuMDgzIDM5Mi45NTcgOCAyNTYgOHptMCAxMTBjMjMuMTk2IDAgNDIgMTguODA0IDQyIDQycy0xOC44MDQgNDItNDIgNDItNDItMTguODA0LTQyLTQyIDE4LjgwNC00MiA0Mi00MnptNTYgMjU0YzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTg4Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDEydi02NGgtMTJjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTI0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNjRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYxMDBoMTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5mbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0MjQuMjI5aDIwVjI3OS43NzFIMjBjLTExLjA0NiAwLTIwLTguOTU0LTIwLTIwVjIxMmMwLTExLjA0NiA4Ljk1NC0yMCAyMC0yMGgxMTJjMTEuMDQ2IDAgMjAgOC45NTQgMjAgMjB2MjEyLjIyOWgyMGMxMS4wNDYgMCAyMCA4Ljk1NCAyMCAyMFY0OTJjMCAxMS4wNDYtOC45NTQgMjAtMjAgMjBIMjBjLTExLjA0NiAwLTIwLTguOTU0LTIwLTIwdi00Ny43NzFjMC0xMS4wNDYgOC45NTQtMjAgMjAtMjB6TTk2IDBDNTYuMjM1IDAgMjQgMzIuMjM1IDI0IDcyczMyLjIzNSA3MiA3MiA3MiA3Mi0zMi4yMzUgNzItNzJTMTM1Ljc2NCAwIDk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUl0YWxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDh2MzJhMTYgMTYgMCAwIDEtMTYgMTZoLTYyLjc2bC04MCAzMjBIMjA4YTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2SDE2YTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmg2Mi43Nmw4MC0zMjBIMTEyYTE2IDE2IDAgMCAxLTE2LTE2VjQ4YTE2IDE2IDAgMCAxIDE2LTE2aDE5MmExNiAxNiAwIDAgMSAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmVkaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzUuOTUzMDgsMzUyYy00Mi42NDA2OSw5NC4xNzE4OC0xMzcuNjQwODYsMTYwLTI0Ny45ODQ4LDE2MHEtNi4zOTg0NCwwLTEyLjg0Mzc3LS4yOTY4OEMxNzEuMTU1NTgsNTA2LjkzNzUsODEuMjY0ODEsNDQyLjIzNDM4LDQwLjAxNDc0LDM1Mkg3OS45MzY2OEwyMS4zMjcyLDI5My40MDYyNWEyNjQuODI1MjIsMjY0LjgyNTIyLDAsMCwxLTUuMTA5MzgtMzkuNDIxODcsMjczLjY2NTMsMjczLjY2NTMsMCwwLDEsLjUtMjkuOTg0MzhINjMuOTM2NjVMMjIuNTQ2LDE4Mi42MjVBMjY5Ljc5NzgyLDI2OS43OTc4MiwwLDAsMSwxMzAuNTE0ODksMjAuNTQ2ODhhMTYuMDYzOTMsMTYuMDYzOTMsMCwwLDEsOS4yODEyNy0zLDE2LjM2MzMyLDE2LjM2MzMyLDAsMCwxLDEzLjUsNy4yNSwxNi4wMjczOSwxNi4wMjczOSwwLDAsMSwxLjYyNSwxNS4wOTM3NCwxMzguMzg3LDEzOC4zODcsMCwwLDAtOS44NDM3Niw1MS4yNjU2M2MwLDQ1LjEwOTM3LDIxLjA0NjkxLDg2LjU3ODEzLDU3LjcxODg0LDExMy43MzQzN2ExNi4yOTk4OSwxNi4yOTk4OSwwLDAsMSwxLjIwMzEzLDI1LjM5MDYzYy0yNi41NDY5MiwyMy45ODQzNy00MS4xNzE5NCw1Ni41LTQxLjE3MTk0LDkxLjU3ODEzLDAsNjAuMDMxMjQsNDIuOTUzMTksMTEwLjI4MTI0LDk5Ljg5MDc5LDEyMS45MjE4N2wyLjUtNjUuMjY1NjNMMjM4LjA2MiwzOTdhOC4zMzkxMSw4LjMzOTExLDAsMCwxLTEwLS43NSw4LjAyNSw4LjAyNSwwLDAsMS0xLjM5MDYzLTkuOTM3NWwyMC4xMjUtMzMuNzY1NjItNDIuMDYyNTctOC43MzQzOGE3Ljk4OTgsNy45ODk4LDAsMCwxLDAtMTUuNjU2MjVsNDIuMDYyNTctOC43MTg3NS0yMC4xMDk0MS0zMy43MzQzOGE3Ljk5MTIyLDcuOTkxMjIsMCwwLDEsMTEuMzU5MzktMTAuNzE4NzRMMjY4LjQzNywyOTUuNjQwNjIsMjc5Ljk1MjY1LDcuNjcxODhhNy45NzEzOCw3Ljk3MTM4LDAsMCwxLDgtNy42NzE4OGguMDQ2ODdhOC4wMjA2NCw4LjAyMDY0LDAsMCwxLDcuOTUzMTQsNy43MDMxMkwzMDcuNDgzOTQsMjk1LjYyNWwzMC4zOTA2OC0yMC42NzE4OGE4LjA4MzI3LDguMDgzMjcsMCwwLDEsMTAsLjgxMjUsNy45OTg2Niw3Ljk5ODY2LDAsMCwxLDEuMzkwNjIsOS45MDYyNkwzMjkuMTI0NjEsMzE5LjQzNzVsNDIuMDc4MTksOC43MzQzOGE3Ljk5MzczLDcuOTkzNzMsMCwwLDEsMCwxNS42NTYyNGwtNDIuMDc4MTksOC43MTg3NiwyMC4xMDk0LDMzLjczNDM3YTcuOTc3OTEsNy45Nzc5MSwwLDAsMS0xLjMyODEyLDkuOTIxODdBOC4yNTczOSw4LjI1NzM5LDAsMCwxLDMzNy44NzQ2MiwzOTdMMzEwLjcwMjcsMzc4LjUzMTI1bDIuNSw2NS4zNDM3NWM0OC40ODQ0Ni05LjQwNjI1LDg3LjU3ODI4LTQ4LjE1NjI1LDk3LjMxMjY3LTk2LjVBMTIzLjUyNjUyLDEyMy41MjY1MiwwLDAsMCwzNzEuOTUyOCwyMzAuMjk2ODhhMTYuMzA2MzQsMTYuMzA2MzQsMCwwLDEsMS4yMDMxMy0yNS40MjE4OGMzNi42NTYzMS0yNy4xNzE4OCw1Ny42ODc2LTY4LjYwOTM4LDU3LjY4NzYtMTEzLjczNDM4YTEzOC4wMTY4OSwxMzguMDE2ODksMCwwLDAtOS44NTkzOS01MS4zMTI1LDE1Ljk4MTMyLDE1Ljk4MTMyLDAsMCwxLDEuNjA5MzctMTUuMDkzNzQsMTYuMzY5MTQsMTYuMzY5MTQsMCwwLDEsMTMuNS03LjIzNDM4LDE2LjAyNDUzLDE2LjAyNDUzLDAsMCwxLDkuMjUsMi45ODQzOEEyNzEuMjY5NDcsMjcxLjI2OTQ3LDAsMCwxLDU1My4yNSwxODIuNzY1NjJMNTExLjk5OTkyLDIyNGg0Ni45NTMyQzU1OS4zMTI1LDIyOS43NjU2Miw1NjAsMjM1LjQ1MzEyLDU2MCwyNDEuMjY1NjJhMjcwLjA5MiwyNzAuMDkyLDAsMCwxLTUuMTI1LDUxLjg1OTM4TDQ5NS45ODQyNywzNTJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NC4zNCAxODEuMWMyMi4zOCAxNS42OCAzNS42NiA0MS4xNiAzNS42NiA2OC41OVYyODBjMCA0LjQyIDMuNTggOCA4IDhoNDhjNC40MiAwIDgtMy41OCA4LTh2LTMwLjMxYzAtNDMuMjQtMjEuMDEtODMuNDEtNTYuMzQtMTA4LjA2QzQ2My44NSAxMjUuMDIgNDQ4IDk5LjM0IDQ0OCA3MC4zMVY4YzAtNC40Mi0zLjU4LTgtOC04aC00OGMtNC40MiAwLTggMy41OC04IDh2NjYuNGMwIDQzLjY5IDI0LjU2IDgxLjYzIDYwLjM0IDEwNi43ek0xOTQuOTcgMzU4Ljk4QzEyNi4wMyAzNzAuMDcgNTkuNjkgMzk0LjY5IDAgNDMyYzgzLjY1IDUyLjI4IDE4MC4zIDgwIDI3OC45NCA4MGg4OC41N0wyNTQuNzkgMzgwLjQ5Yy0xNC43NC0xNy4yLTM3LjQ1LTI1LjExLTU5LjgyLTIxLjUxek01NTMuMjggODcuMDljLTUuNjctMy44LTkuMjgtOS45Ni05LjI4LTE2Ljc4VjhjMC00LjQyLTMuNTgtOC04LThoLTQ4Yy00LjQyIDAtOCAzLjU4LTggOHY2Mi4zMWMwIDIyLjAyIDEwLjE3IDQzLjQxIDI4LjY0IDU1LjM5QzU1MC43OSAxNTMuMDQgNTc2IDE5OS41NCA1NzYgMjQ5LjY5VjI4MGMwIDQuNDIgMy41OCA4IDggOGg0OGM0LjQyIDAgOC0zLjU4IDgtOHYtMzAuMzFjMC02NS40NC0zMi40MS0xMjYuMTktODYuNzItMTYyLjZ6TTM2MC44OSAzNTIuMDVjLTM0LjQuMDYtODYuODEuMTUtODguMjEuMTdsMTE3LjggMTM3LjQzQTYzLjk4NyA2My45ODcgMCAwIDAgNDM5LjA3IDUxMmg4OC40NUw0MDkuNTcgMzc0LjRhNjMuOTU1IDYzLjk1NSAwIDAgMC00OC42OC0yMi4zNXpNNjE2IDM1Mkg0MzJsMTE3Ljk5IDEzNy42NUE2My45ODcgNjMuOTg3IDAgMCAwIDU5OC41OCA1MTJINjE2YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjRWMzc2YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvdXJuYWxXaGlsbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM4LjQwNjI1LDM3Ny41OTM3NWMtMy4yMDMxMywxMi44MTI1LTMuMjAzMTMsNTcuNjA5MzcsMCw3My42MDkzN1E0NDcuOTkyMiw0NjAuNzg5MDcsNDQ4LDQ3MC40MDYyNXYxNmMwLDE2LTEyLjc5Njg4LDI1LjU5Mzc1LTI1LjU5Mzc1LDI1LjU5Mzc1SDk2Yy01NC40MDYyNSwwLTk2LTQxLjU5Mzc1LTk2LTk2Vjk2QzAsNDEuNTkzNzUsNDEuNTkzNzUsMCw5NiwwSDQyMi40MDYyNUM0MzguNDA2MjUsMCw0NDgsOS41OTM3NSw0NDgsMjUuNTkzNzV2MzMyLjgxMjVRNDQ4LDM3Mi43OTY4OCw0MzguNDA2MjUsMzc3LjU5Mzc1Wk0zODAuNzk2ODgsMzg0SDk2Yy0xNiwwLTMyLDEyLjc5Njg4LTMyLDMyczEyLjc5Njg4LDMyLDMyLDMySDM4MC43OTY4OFpNMTI4LjAxNTYyLDE3Ni4wMTU2MmMwLC41MTU2My4xNDA2My45ODQzOC4xNDA2MywxLjVsMzcuMTA5MzcsMzIuNDY4NzZBNy45OTk1NCw3Ljk5OTU0LDAsMCwxLDE2MCwyMjRoLS4wMTU2MmE5LjE3Njc4LDkuMTc2NzgsMCwwLDEtNS4yNS0xLjk4NDM4TDEzMS4xNDA2MiwyMDEuMzc1QzE0Mi42ODc1LDI1MC45NTMxMiwxODYuOTA2MjUsMjg4LDI0MCwyODhzOTcuMzEyNS0zNy4wNDY4OCwxMDguODc1LTg2LjYyNWwtMjMuNTkzNzUsMjAuNjQwNjJhOC4wMjUxNiw4LjAyNTE2LDAsMCwxLTUuMjY1NjMsMS45Njg3NkgzMjBhOS4xNDY0MSw5LjE0NjQxLDAsMCwxLTYuMDE1NjItMi43MTg3NkE5LjI2NTA4LDkuMjY1MDgsMCwwLDEsMzEyLDIxNmE5LjA5Nyw5LjA5NywwLDAsMSwyLjczNDM4LTYuMDE1NjJsMzcuMTA5MzctMzIuNDY4NzZjLjAxNTYzLS41MzEyNC4xNTYyNS0xLC4xNTYyNS0xLjUxNTYyLDAtMTEuMDQ2ODgtMi4wOTM3NS0yMS41MTU2Mi01LjA2MjUxLTMxLjU5Mzc1bC0yMS4yNjU2MiwyMS4yNWE4LjAwNDY3LDguMDA0NjcsMCwwLDEtMTEuMzI4MTItMTEuMzEyNWwyNi40MjE4Ny0yNi40MDYyNWExMTEuODE1MTcsMTExLjgxNTE3LDAsMCwwLTQ2LjM1OTM3LTQ5LjI2NTYyLDYzLjAyMzM2LDYzLjAyMzM2LDAsMCwxLTE0LjA2MjUsODIuNjQwNjJBNTUuODM4NDYsNTUuODM4NDYsMCwwLDEsMjUxLjYyNSwyNTQuNzM0MzhsLTEuNDIxODgtMzQuMjgxMjYsMTIuNjcxODgsOC42MjVhMy45NjcsMy45NjcsMCwwLDAsMi4yNS42ODc1LDMuOTgwNTksMy45ODA1OSwwLDAsMCwzLjQzNzQ5LTYuMDMxMjRsLTguNTMxMjQtMTQuMzEyNSwxNy45MDYyNS0zLjcxODc2YTQuMDA2NDcsNC4wMDY0NywwLDAsMCwwLTcuODQzNzRsLTE3LjkwNjI1LTMuNzE4NzYsOC41MzEyNC0xNC4zMTI1YTMuOTgwNTksMy45ODA1OSwwLDAsMC0zLjQzNzQ5LTYuMDMxMjQsNC43MjYsNC43MjYsMCwwLDAtMi4yNS42NzE4N0wyNDguNjg3NSwxODQuMTI1LDI0NCw3MS44MjgxMmE0LjAwMzg2LDQuMDAzODYsMCwwLDAtOCwwbC00LjYyNSwxMTAuODEyNS0xMi04LjE1NjI0YTQuMDAzLDQuMDAzLDAsMCwwLTUuNjg3NTEsNS4zNTkzN2w4LjUzMTI2LDE0LjMxMjVMMjA0LjMxMjUsMTk3Ljg3NWEzLjk5Njg2LDMuOTk2ODYsMCwwLDAsMCw3LjgyODEybDE3LjkwNjI1LDMuNzM0MzgtOC41MzEyNiwxNC4yOTY4OGE0LjcyNDY5LDQuNzI0NjksMCwwLDAtLjU2MjQ5LDIuMDQ2ODcsNC41OTU0Nyw0LjU5NTQ3LDAsMCwwLDEuMjUsMi45MDYyNSw0LjAxMDU5LDQuMDEwNTksMCwwLDAsMi43NSwxLjA5Mzc1LDQuMDkwMTYsNC4wOTAxNiwwLDAsMCwyLjI1LS42ODc1bDEwLjM1OTM3LTcuMDQ2ODdMMjI4LjM3NSwyNTQuNzY1NjJhNTUuODY0MTQsNTUuODY0MTQsMCwwLDEtMjguNzE4NzUtOTMuNDUzMTIsNjMuMDExMTksNjMuMDExMTksMCwwLDEtMTQuMDQ2ODgtODIuNjU2MjUsMTExLjkzMTU4LDExMS45MzE1OCwwLDAsMC00Ni4zNzUsNDkuMjY1NjNsMjYuNDIxODcsMjYuNDIxODdhNy45OTkxNyw3Ljk5OTE3LDAsMCwxLTExLjMxMjUsMTEuMzEyNWwtMjEuMjY1NjMtMjEuMjY1NjNDMTMwLjA5Mzc1LDE1NC40ODQzOCwxMjgsMTY0Ljk1MzEyLDEyOC4wMTU2MiwxNzYuMDE1NjJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUthYWJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1NC4xMiA4My41MUwzMTguMzYgNC45M2E5NS45NjIgOTUuOTYyIDAgMCAwLTYwLjcxIDBMMjEuODggODMuNTFBMzIuMDA2IDMyLjAwNiAwIDAgMCAwIDExMy44N3Y0OS4wMWwyNjUuMDItNzkuNTFjMTUuMDMtNC41IDMwLjkyLTQuNSA0NS45OCAwbDI2NSA3OS41MXYtNDkuMDFjMC0xMy43Ny04LjgxLTI2LTIxLjg4LTMwLjM2em0tMjc5LjkgMzAuNTJMMCAxOTYuM3YyMjguMzhjMCAxNSAxMC40MiAyNy45OCAyNS4wNiAzMS4yNGwyNDIuMTIgNTMuOGE5NS45MzcgOTUuOTM3IDAgMCAwIDQxLjY1IDBsMjQyLjEyLTUzLjhjMTQuNjQtMy4yNSAyNS4wNi0xNi4yNCAyNS4wNi0zMS4yNFYxOTYuMjlsLTI3NC4yLTgyLjI2Yy05LjA0LTIuNzItMTguNTktMi43Mi0yNy41OSAwek0xMjggMjMwLjExYzAgMy42MS0yLjQxIDYuNzctNS44OSA3LjcybC04MCAyMS44MkMzNy4wMiAyNjEuMDMgMzIgMjU3LjIgMzIgMjUxLjkzdi0xNi41OGMwLTMuNjEgMi40MS02Ljc3IDUuODktNy43Mmw4MC0yMS44MmM1LjA5LTEuMzkgMTAuMTEgMi40NCAxMC4xMSA3LjcydjE2LjU4em0xNDQtMzkuMjhjMCAzLjYxLTIuNDEgNi43Ny01Ljg5IDcuNzJsLTk2IDI2LjE4Yy01LjA5IDEuMzktMTAuMTEtMi40NC0xMC4xMS03Ljcydi0xNi41OGMwLTMuNjEgMi40MS02Ljc3IDUuODktNy43Mmw5Ni0yNi4xOGM1LjA5LTEuMzkgMTAuMTEgMi40NCAxMC4xMSA3LjcydjE2LjU4em0xNzYgMjIuN2MwLTUuMjggNS4wMi05LjExIDEwLjExLTcuNzJsODAgMjEuODJjMy40OC45NSA1Ljg5IDQuMTEgNS44OSA3LjcydjE2LjU4YzAgNS4yOC01LjAyIDkuMTEtMTAuMTEgNy43MmwtODAtMjEuODJhNy45OTcgNy45OTcgMCAwIDEtNS44OS03Ljcydi0xNi41OHptLTE0NC0zOS4yN2MwLTUuMjggNS4wMi05LjExIDEwLjExLTcuNzJsOTYgMjYuMThjMy40OC45NSA1Ljg5IDQuMTEgNS44OSA3LjcydjE2LjU4YzAgNS4yOC01LjAyIDkuMTEtMTAuMTEgNy43MmwtOTYtMjYuMThhNy45OTcgNy45OTcgMCAwIDEtNS44OS03Ljcydi0xNi41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAxNzYuMDAxQzUxMiAyNzMuMjAzIDQzMy4yMDIgMzUyIDMzNiAzNTJjLTExLjIyIDAtMjIuMTktMS4wNjItMzIuODI3LTMuMDY5bC0yNC4wMTIgMjcuMDE0QTIzLjk5OSAyMy45OTkgMCAwIDEgMjYxLjIyMyAzODRIMjI0djQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNGgtNDB2NDBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDI0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LTc4LjA1OWMwLTYuMzY1IDIuNTI5LTEyLjQ3IDcuMDI5LTE2Ljk3MWwxNjEuODAyLTE2MS44MDJDMTYzLjEwOCAyMTMuODE0IDE2MCAxOTUuMjcxIDE2MCAxNzYgMTYwIDc4Ljc5OCAyMzguNzk3LjAwMSAzMzUuOTk5IDAgNDMzLjQ4OC0uMDAxIDUxMiA3OC41MTEgNTEyIDE3Ni4wMDF6TTMzNiAxMjhjMCAyNi41MSAyMS40OSA0OCA0OCA0OHM0OC0yMS40OSA0OC00OC0yMS40OS00OC00OC00OC00OCAyMS40OS00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5Ym9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0ODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTI4IDE4MHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTMzNiA5NnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDk2di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDc2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMjg4IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjMyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2hhbmRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNS44MSA2NmMtNi4zNy0zLjUtMTQuMzctMi4zMy0xOS4zNiAzLjAyYTE1Ljk3NCAxNS45NzQgMCAwIDAtMS45MSAxOS41MmMxNi40OSAyNi4xNiAyNS4yIDU2LjM5IDI1LjIgODcuNDEtLjE5IDUzLjI1LTI2Ljc3IDEwMi42OS03MS4yNyAxMzIuNDFsLTc2LjYzIDUzLjM1di0yMC4xbDQ0LjA1LTM2LjA5YzMuOTItNC4yIDUtMTAuMDkgMi44MS0xNS4yOEwzMTAuODUgMjczYzMzLjg0LTE5LjI2IDU2Ljk0LTU1LjI1IDU2Ljk0LTk2Ljk5IDAtNDAuNzktMjIuMDItNzYuMTMtNTQuNTktOTUuNzFsNS4yMi0xMS40NGMyLjM0LTUuNTMuOTMtMTEuODMtMy41Ny0xNi4wNEwyNTUuODYgMGwtNTguOTkgNTIuODFjLTQuNSA0LjIxLTUuOSAxMC41MS0zLjU3IDE2LjA0bDUuMjIgMTEuNDRjLTMyLjU3IDE5LjU4LTU0LjU5IDU0LjkzLTU0LjU5IDk1LjcyIDAgNDEuNzUgMjMuMDkgNzcuNzMgNTYuOTQgOTYuOTlsLTcuODUgMTcuMjRjLTIuMTkgNS4xOC0xLjEgMTEuMDcgMi44MSAxNS4yOGw0NC4wNSAzNi4wOXYxOS45bC03Ni41OS01My4zM0MxMTkuMDIgMjc4LjYyIDkyLjQ0IDIyOS4xOSA5Mi4yNiAxNzZjMC0zMS4wOCA4LjcxLTYxLjMxIDI1LjItODcuNDcgMy44Ny02LjE2IDIuNC0xMy43Ny0yLjU5LTE5LjA4LTUtNS4zNC0xMy42OC02LjItMjAuMDItMi43QzE2LjMyIDEwOS42LTIyLjMgMjA1LjMgMTMuMzYgMjk1Ljk5YzcuMDcgMTcuOTkgMTcuODkgMzQuMzggMzAuNDYgNDkuMDZsNTUuOTcgNjUuMzZjNC44NyA1LjY5IDEzLjA0IDcuMjQgMTkuNjUgMy43Mmw3OS4zNS00Mi4yM0wyMjggMzkyLjIzbC00Ny4wOCAzMi43OGMtMS42Ny0uMzctMy4yMy0xLjAxLTUuMDEtMS4wMS0xMy4yNSAwLTIzLjk5IDEwLjc0LTIzLjk5IDI0IDAgMTMuMjUgMTAuNzQgMjQgMjMuOTkgMjQgMTIuMSAwIDIxLjY5LTkuMTEgMjMuMzMtMjAuNzZsNDAuNjMtMjguMjh2MjkuOTVjLTkuMzkgNS41Ny0xNS45OSAxNS4zOC0xNS45OSAyNy4xIDAgMTcuNjcgMTQuMzIgMzIgMzEuOTggMzJzMzEuOTgtMTQuMzMgMzEuOTgtMzJjMC0xMS43MS02LjYxLTIxLjUyLTE1Ljk5LTI3LjF2LTMwLjE1bDQwLjkxIDI4LjQ4QzMxNC40MSA0NjIuODkgMzI0IDQ3MiAzMzYuMDkgNDcyYzEzLjI1IDAgMjMuOTktMTAuNzUgMjMuOTktMjQgMC0xMy4yNi0xMC43NC0yNC0yMy45OS0yNC0xLjc4IDAtMy4zNC42NC01LjAxIDEuMDFMMjg0IDM5Mi4yM2wyOS4yMS0yMC4zNCA3OS4zNSA0Mi4yM2M2LjYxIDMuNTIgMTQuNzggMS45NyAxOS42NS0zLjcxbDUyLjUxLTYxLjMxYzE4Ljg3LTIyLjAyIDM0LTQ3LjUgNDEuMjUtNzUuNTkgMjEuNjItODMuNjYtMTYuNDUtMTY3LjI3LTkwLjE2LTIwNy41MXptLTk1Ljk5IDExMGMwIDIyLjMtMTEuNDkgNDEuOTItMjguODMgNTMuMzhsLTUuNjUtMTIuNDFjLTguNzUtMjQuNTItOC43NS01MS4wNCAwLTc1LjU2bDcuODMtMTcuMThjMTYuMDcgMTEuNjUgMjYuNjUgMzAuNDUgMjYuNjUgNTEuNzd6bS0xMjcuOTMgMGMwLTIxLjMyIDEwLjU4LTQwLjEyIDI2LjY2LTUxLjc2bDcuODMgMTcuMThjOC43NSAyNC41MiA4Ljc1IDUxLjAzIDAgNzUuNTZsLTUuNjUgMTIuNDFjLTE3LjM0LTExLjQ2LTI4Ljg0LTMxLjA5LTI4Ljg0LTUzLjM5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXNzQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tMzkgMjE5LjlsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuNiA0LTE0LjktNC41IDMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy41IDguNS0xMC45IDEyLTE1LjEgNC41ek0zMDQgMzk2YzAgMTkuMi0yOC43IDQxLjUtNzEuNSA0NC04LjUuOC0xMi4xLTExLjgtMy42LTE1LjRsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTYtMi41LTYuMS0xMi4yIDAtMTQuOGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtOC42LTMuNi00LjgtMTYuNSAzLjYtMTUuNCA0Mi44IDIuNSA3MS41IDI0LjggNzEuNSA0NCAwIDEzLTEzLjQgMjcuMy0zNS4yIDM2QzI5MC42IDM2OC43IDMwNCAzODMgMzA0IDM5NnptNjUtMTY4LjFsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjMtMTUuNiA0LTE0LjktNC41IDMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy41IDguNS0xMC45IDEyLTE1LjEgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXNzV2lua0hlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMS4xIDQwMi41Yy04LTIwLjgtMzEuNS0zMS41LTUzLjEtMjUuOWwtOC40IDIuMi0yLjMtOC40Yy01LjktMjEuNC0yNy0zNi41LTQ5LTMzLTI1LjIgNC00MC42IDI4LjYtMzQgNTIuNmwyMi45IDgyLjZjMS41IDUuMyA3IDguNSAxMi40IDcuMWw4My0yMS41YzI0LjEtNi4zIDM3LjctMzEuOCAyOC41LTU1Ljd6bS0xNzcuNi00Yy01LjYtMjAuMy0yLjMtNDIgOS01OS43IDI5LjctNDYuMyA5OC43LTQ1LjUgMTI3LjggNC4zIDYuNC4xIDEyLjYgMS40IDE4LjYgMi45IDEwLjktMjcuOSAxNy4xLTU4LjIgMTcuMS05MEM0OTYgMTE5IDM4NSA4IDI0OCA4UzAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OGMzNS40IDAgNjguOS03LjUgOTkuNC0yMC45LS4zLS43LTIzLjktODQuNi0yMy45LTg0LjZ6TTE2OCAyNDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMjAgMTU2YzAgMTkuMi0yOC43IDQxLjUtNzEuNSA0NC04LjUuOC0xMi4xLTExLjgtMy42LTE1LjRsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTYtMi41LTUuNy0xMi4zIDAtMTQuOGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtOC44LTMuNy00LjYtMTYuNiAzLjYtMTUuNCA0Mi44IDIuNSA3MS41IDI0LjggNzEuNSA0NCAwIDEzLTEzLjQgMjcuMy0zNS4yIDM2QzI3NC42IDM2OC43IDI4OCAzODMgMjg4IDM5NnptMTYtMTc5Yy04LjMgNy40LTIxLjYuNC0xOS44LTEwLjggNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTNDAwIDE4MSA0MDQgMjA2LjJjMS43IDExLjEtMTEuMyAxOC4zLTE5LjggMTAuOGwtOS41LTguNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDMwNCAyMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptLTgwIDIzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEzNiAxNTZjMCAxOS4yLTI4LjcgNDEuNS03MS41IDQ0LTguNS44LTEyLjEtMTEuOC0zLjYtMTUuNGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtNi0yLjUtNi4xLTEyLjIgMC0xNC44bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy04LjYtMy42LTQuOC0xNi41IDMuNi0xNS40IDQyLjggMi41IDcxLjUgMjQuOCA3MS41IDQ0IDAgMTMtMTMuNCAyNy4zLTM1LjIgMzZDMjkwLjYgMzY4LjcgMzA0IDM4MyAzMDQgMzk2em0yNC0xNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXdpQmlyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzUuODEgMjE3Ljk4QzU3Mi42NCAxNTcuNDEgNTE4LjI4IDExMiA0NTcuNjMgMTEyaC05LjM3Yy01Mi44MiAwLTEwNC4yNS0xNi4yNS0xNDcuNzQtNDYuMjQtNDEuOTktMjguOTYtOTYuMDQtNDEuNjItMTUzLjIxLTI4LjdDMTI5LjMgNDEuMTItLjA4IDc4LjI0IDAgMjI0Yy4wNCA3MC45NSAzOC42OCAxMzIuOCA5NS45OSAxNjYuMDFWNDY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di01NC4yNmMxNS4zNiAzLjk2IDMxLjQgNi4yNiA0OCA2LjI2IDUuNDQgMCAxMC42OC0uNzMgMTYtMS4xOFY0NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTU5LjQzYzE0LjI0LTUuMDYgMjcuODgtMTEuMzkgNDAuMzQtMTkuNTFDMzQyLjA3IDM1NS4yNSAzOTMuODYgMzM2IDQ0OC40NiAzMzZjMjUuNDggMCAxNi4wMS0uMzEgMjMuMDUtLjc4bDc0LjQxIDEzNi40NGMyLjg2IDUuMjMgOC4zIDguMzQgMTQuMDUgOC4zNCAxLjMxIDAgMi42NC0uMTYgMy45NS0uNSA3LjA5LTEuOCAxMi4wNS04LjE5IDEyLjA1LTE1LjUgMCAwIC4xNC0yNDAuMjQtLjE2LTI0Ni4wMnpNNDYzLjk3IDI0OGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bTgwIDE1My4yNWwtMzkuODYtNzMuMDhjMTUuMTItNS44MyAyOC43My0xNC42IDM5Ljg2LTI1Ljk4djk5LjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYW5kbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDEuNjIgOTIuMTFMMjY3LjI0IDIuMDRhMzEuOTU4IDMxLjk1OCAwIDAgMC0yMi40NyAwTDEwLjM4IDkyLjExQTE2LjAwMSAxNi4wMDEgMCAwIDAgMCAxMDcuMDlWMTQ0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzYuOTFjMC02LjY3LTQuMTQtMTIuNjQtMTAuMzgtMTQuOTh6TTY0IDE5MnYxNjBINDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aDQ0OHYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2VjE5MmgtNjR2MTYwaC05NlYxOTJoLTY0djE2MGgtOTZWMTkySDY0em00MzIgMjU2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuMSAyMzYuMmMtMy41LTEyLjEtNy44LTMzLjItNy44LTMzLjJoLS41cy00LjMgMjEuMS03LjggMzMuMmwtMTEuMSAzNy41SDE2M3pNNjE2IDk2SDMzNnYzMjBoMjgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHptLTI0IDEyMGMwIDYuNi01LjQgMTItMTIgMTJoLTExLjRjLTYuOSAyMy42LTIxLjcgNDcuNC00Mi43IDY5LjkgOC40IDYuNCAxNy4xIDEyLjUgMjYuMSAxOCA1LjUgMy40IDcuMyAxMC41IDQuMSAxNi4ybC03LjkgMTMuOWMtMy40IDUuOS0xMC45IDcuOC0xNi43IDQuMy0xMi42LTcuOC0yNC41LTE2LjEtMzUuNC0yNC45LTEwLjkgOC43LTIyLjcgMTcuMS0zNS40IDI0LjktNS44IDMuNS0xMy4zIDEuNi0xNi43LTQuM2wtNy45LTEzLjljLTMuMi01LjYtMS40LTEyLjggNC4yLTE2LjIgOS4zLTUuNyAxOC0xMS43IDI2LjEtMTgtNy45LTguNC0xNC45LTE3LTIxLTI1LjctNC01LjctMi4yLTEzLjYgMy43LTE3LjFsNi41LTMuOSA3LjMtNC4zYzUuNC0zLjIgMTIuNC0xLjcgMTYgMy40IDUgNyAxMC44IDE0IDE3LjQgMjAuOSAxMy41LTE0LjIgMjMuOC0yOC45IDMwLTQzLjJINDEyYy02LjYgMC0xMi01LjQtMTItMTJ2LTE2YzAtNi42IDUuNC0xMiAxMi0xMmg2NHYtMTZjMC02LjYgNS40LTEyIDEyLTEyaDE2YzYuNiAwIDEyIDUuNCAxMiAxMnYxNmg2NGM2LjYgMCAxMiA1LjQgMTIgMTJ6TTAgMTIwdjI3MmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgyODBWOTZIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0em01OC45IDIxNi4xTDExNi40IDE2N2MxLjctNC45IDYuMi04LjEgMTEuNC04LjFoMzIuNWM1LjEgMCA5LjcgMy4zIDExLjQgOC4xbDU3LjUgMTY5LjFjMi42IDcuOC0zLjEgMTUuOS0xMS40IDE1LjloLTIyLjlhMTIgMTIgMCAwIDEtMTEuNS04LjZsLTkuNC0zMS45aC02MC4ybC05LjEgMzEuOGMtMS41IDUuMS02LjIgOC43LTExLjUgOC43SDcwLjNjLTguMiAwLTE0LTguMS0xMS40LTE1Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcENvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjAzIDI2MS42NWM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDExLjMxLTExLjMxYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNMMjUzLjI1IDE5MmwzNS43MS0zNS43MmM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0xMS4zMS0xMS4zMWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtNTguMzQgNTguMzRjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsNTguMzUgNTguMzR6bTk2LjAxLTExLjNsMTEuMzEgMTEuMzFjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGw1OC4zNC01OC4zNGM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC01OC4zNC01OC4zNGMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMTEuMzEgMTEuMzFjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMMzg2Ljc1IDE5MmwtMzUuNzEgMzUuNzJjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjN6TTYyNCA0MTZIMzgxLjU0Yy0uNzQgMTkuODEtMTQuNzEgMzItMzIuNzQgMzJIMjg4Yy0xOC42OSAwLTMzLjAyLTE3LjQ3LTMyLjc3LTMySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCAzNS4yIDI4LjggNjQgNjQgNjRoNTEyYzM1LjIgMCA2NC0yOC44IDY0LTY0di0xNmMwLTguOC03LjItMTYtMTYtMTZ6TTU3NiA0OGMwLTI2LjQtMjEuNi00OC00OC00OEgxMTJDODUuNiAwIDY0IDIxLjYgNjQgNDh2MzM2aDUxMlY0OHptLTY0IDI3MkgxMjhWNjRoMzg0djI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFwdG9wSG91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyLDI4OEgyMDhhMTYsMTYsMCwwLDEtMTYtMTZWMjA4YTE2LDE2LDAsMCwxLDE2LTE2aDY0YTE2LDE2LDAsMCwxLDE2LDE2djM3LjEyQzI5OS4xMSwyMzIuMjQsMzE1LDIyNCwzMzIuOCwyMjRINDY5Ljc0bDYuNjUtNy41M0ExNi41MSwxNi41MSwwLDAsMCw0ODAsMjA3YTE2LjMxLDE2LjMxLDAsMCwwLTQuNzUtMTAuNjFMNDE2LDE0NFY0OGExNiwxNiwwLDAsMC0xNi0xNkgzNjhhMTYsMTYsMCwwLDAtMTYsMTZWODcuM0wyNjMuNSw4LjkyQzI1OCw0LDI0Ny40NSwwLDI0MC4wNSwwcy0xNy45Myw0LTIzLjQ3LDguOTJMNC43OCwxOTYuNDJBMTYuMTUsMTYuMTUsMCwwLDAsMCwyMDdhMTYuNCwxNi40LDAsMCwwLDMuNTUsOS4zOUwyMi4zNCwyMzcuN0ExNi4yMiwxNi4yMiwwLDAsMCwzMywyNDIuNDgsMTYuNTEsMTYuNTEsMCwwLDAsNDIuMzQsMjM5TDY0LDIxOS44OFYzODRhMzIsMzIsMCwwLDAsMzIsMzJIMjcyWk02MjkuMzMsNDQ4SDU5MlYyODhjMC0xNy42Ny0xMi44OS0zMi0yOC44LTMySDMzMi44Yy0xNS45MSwwLTI4LjgsMTQuMzMtMjguOCwzMlY0NDhIMjY2LjY3QTEwLjY3LDEwLjY3LDAsMCwwLDI1Niw0NTguNjd2MTAuNjZBNDIuODIsNDIuODIsMCwwLDAsMjk4LjYsNTEySDU5Ny40QTQyLjgyLDQyLjgyLDAsMCwwLDY0MCw0NjkuMzNWNDU4LjY3QTEwLjY3LDEwLjY3LDAsMCwwLDYyOS4zMyw0NDhaTTU0NCw0NDhIMzUyVjMwNEg1NDRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyIDIyNGg1NnY1NmE4IDggMCAwIDAgOCA4aDQ4YTggOCAwIDAgMCA4LTh2LTU2aDU2YTggOCAwIDAgMCA4LTh2LTQ4YTggOCAwIDAgMC04LThoLTU2di01NmE4IDggMCAwIDAtOC04aC00OGE4IDggMCAwIDAtOCA4djU2aC01NmE4IDggMCAwIDAtOCA4djQ4YTggOCAwIDAgMCA4IDh6TTU3NiA0OGE0OC4xNCA0OC4xNCAwIDAgMC00OC00OEgxMTJhNDguMTQgNDguMTQgMCAwIDAtNDggNDh2MzM2aDUxMnptLTY0IDI3MkgxMjhWNjRoMzg0em0xMTIgOTZIMzgxLjU0Yy0uNzQgMTkuODEtMTQuNzEgMzItMzIuNzQgMzJIMjg4Yy0xOC42OSAwLTMzLTE3LjQ3LTMyLjc3LTMySDE2YTE2IDE2IDAgMCAwLTE2IDE2djE2YTY0LjE5IDY0LjE5IDAgMCAwIDY0IDY0aDUxMmE2NC4xOSA2NC4xOSAwIDAgMCA2NC02NHYtMTZhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgNDE2SDM4MS41NGMtLjc0IDE5LjgxLTE0LjcxIDMyLTMyLjc0IDMySDI4OGMtMTguNjkgMC0zMy4wMi0xNy40Ny0zMi43Ny0zMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgMzUuMiAyOC44IDY0IDY0IDY0aDUxMmMzNS4yIDAgNjQtMjguOCA2NC02NHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2ek01NzYgNDhjMC0yNi40LTIxLjYtNDgtNDgtNDhIMTEyQzg1LjYgMCA2NCAyMS42IDY0IDQ4djMzNmg1MTJWNDh6bS02NCAyNzJIMTI4VjY0aDM4NHYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhdWdoQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0yNCAxOTkuNGMzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjggNC4xLTE1LjEtNC41em0tMTYwIDBjMy4zLTQyLjEgMzIuMi03MS40IDU2LTcxLjRzNTIuNyAyOS4zIDU2IDcxLjRjLjcgOC42LTEwLjggMTEuOS0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4zIDcuNC0xNS44IDQtMTUuMS00LjV6TTM5OC45IDMwNkMzOTAgMzc3IDMyOS40IDQzMiAyNTYgNDMyaC0xNmMtNzMuNCAwLTEzNC01NS0xNDIuOS0xMjYtMS4yLTkuNSA2LjMtMTggMTUuOS0xOGgyNzBjOS42IDAgMTcuMSA4LjQgMTUuOSAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGF1Z2hTcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMzMuOCAxNjEuN2w4MC00OGMxMS42LTYuOSAyNCA3LjcgMTUuNCAxOEwzNDMuNiAxODBsMzMuNiA0MC4zYzguNyAxMC40LTMuOSAyNC44LTE1LjQgMThsLTgwLTQ4Yy03LjctNC43LTcuNy0xNS45IDAtMjAuNnptLTE2My0zMGMtOC42LTEwLjMgMy44LTI0LjkgMTUuNC0xOGw4MCA0OGM3LjggNC43IDcuOCAxNS45IDAgMjAuNmwtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjN6TTM5OC45IDMwNkMzOTAgMzc3IDMyOS40IDQzMiAyNTYgNDMyaC0xNmMtNzMuNCAwLTEzNC01NS0xNDIuOS0xMjYtMS4yLTkuNSA2LjMtMTggMTUuOS0xOGgyNzBjOS42IDAgMTcuMSA4LjQgMTUuOSAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGF1Z2hXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTIwLjEgMTk4LjFjNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFzNTUuOSAxNi45IDU5LjkgNDIuMWMxLjcgMTEuMS0xMS40IDE4LjMtMTkuOCAxMC44bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMjg4IDIxN2MtOC40IDcuNC0yMS42LjMtMTkuOS0xMC45ek0xNjggMTYwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMjMwLjkgMTQ2QzM5MCAzNzcgMzI5LjQgNDMyIDI1NiA0MzJoLTE2Yy03My40IDAtMTM0LTU1LTE0Mi45LTEyNi0xLjItOS41IDYuMy0xOCAxNS45LTE4aDI3MGM5LjYgMCAxNy4xIDguNCAxNS45IDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXVnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0tMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem04OCAyNzJoLTE2Yy03My40IDAtMTM0LTU1LTE0Mi45LTEyNi0xLjItOS41IDYuMy0xOCAxNS45LTE4aDI3MGM5LjYgMCAxNy4xIDguNCAxNS45IDE4LTguOSA3MS02OS41IDEyNi0xNDIuOSAxMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxheWVyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNDEgMTQ4LjAybDIzMi45NCAxMDUuNjdjNi44IDMuMDkgMTQuNDkgMy4wOSAyMS4yOSAwbDIzMi45NC0xMDUuNjdjMTYuNTUtNy41MSAxNi41NS0zMi41MiAwLTQwLjAzTDI2Ni42NSAyLjMxYTI1LjYwNyAyNS42MDcgMCAwIDAtMjEuMjkgMEwxMi40MSAxMDcuOThjLTE2LjU1IDcuNTEtMTYuNTUgMzIuNTMgMCA0MC4wNHptNDg3LjE4IDg4LjI4bC01OC4wOS0yNi4zMy0xNjEuNjQgNzMuMjdjLTcuNTYgMy40My0xNS41OSA1LjE3LTIzLjg2IDUuMTdzLTE2LjI5LTEuNzQtMjMuODYtNS4xN0w3MC41MSAyMDkuOTdsLTU4LjEgMjYuMzNjLTE2LjU1IDcuNS0xNi41NSAzMi41IDAgNDBsMjMyLjk0IDEwNS41OWM2LjggMy4wOCAxNC40OSAzLjA4IDIxLjI5IDBMNDk5LjU5IDI3Ni4zYzE2LjU1LTcuNSAxNi41NS0zMi41IDAtNDB6bTAgMTI3LjhsLTU3Ljg3LTI2LjIzLTE2MS44NiA3My4zN2MtNy41NiAzLjQzLTE1LjU5IDUuMTctMjMuODYgNS4xN3MtMTYuMjktMS43NC0yMy44Ni01LjE3TDcwLjI5IDMzNy44NyAxMi40MSAzNjQuMWMtMTYuNTUgNy41LTE2LjU1IDMyLjUgMCA0MGwyMzIuOTQgMTA1LjU5YzYuOCAzLjA4IDE0LjQ5IDMuMDggMjEuMjkgMEw0OTkuNTkgNDA0LjFjMTYuNTUtNy41IDE2LjU1LTMyLjUgMC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVhZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDYuMiA5LjdjLTUuNi0xMi41LTIxLjYtMTMtMjguMy0xLjJDNDg2LjkgNjIuNCA0MzEuNCA5NiAzNjggOTZoLTgwQzE4MiA5NiA5NiAxODIgOTYgMjg4YzAgNyAuOCAxMy43IDEuNSAyMC41QzE2MS4zIDI2Mi44IDI1My40IDIyNCAzODQgMjI0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2QzEzMi42IDI1NiAyNiA0MTAuMSAyLjQgNDY4Yy02LjYgMTYuMyAxLjIgMzQuOSAxNy41IDQxLjYgMTYuNCA2LjggMzUtMS4xIDQxLjgtMTcuMyAxLjUtMy42IDIwLjktNDcuOSA3MS45LTkwLjYgMzIuNCA0My45IDk0IDg1LjggMTc0LjkgNzcuMkM0NjUuNSA0NjcuNSA1NzYgMzI2LjcgNTc2IDE1NC4zYzAtNTAuMi0xMC44LTEwMi4yLTI5LjgtMTQ0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OS4wMzggMjIuOTYzQzQ2NS45NDQtLjEzIDQzNC42NDgtNS45MyA0MTMuOTQ3IDYuMTI5Yy01OC45MDYgMzQuMzEyLTE4MS4yNS01My4wNzctMzIxLjA3MyA4Ni43NDZTNDAuNDQxIDM1NS4wNDEgNi4xMjkgNDEzLjk0NWMtMTIuMDU5IDIwLjcwMi02LjI2IDUxLjk5OSAxNi44MzMgNzUuMDkzIDIzLjA5NSAyMy4wOTUgNTQuMzkyIDI4Ljg5MSA3NS4wOTUgMTYuODMyIDU4LjkwMS0zNC4zMSAxODEuMjQ2IDUzLjA3OSAzMjEuMDY4LTg2Ljc0M1M0NzEuNTYgMTU2Ljk2IDUwNS44NzEgOTguMDU2YzEyLjA1OS0yMC43MDIgNi4yNjEtNTEuOTk5LTE2LjgzMy03NS4wOTN6TTI0My44ODEgOTUuNTIyYy01OC4xODkgMTQuNTQ3LTEzMy44MDggOTAuMTU1LTE0OC4zNTggMTQ4LjM1OC0xLjgxNyA3LjI3LTguMzQyIDEyLjEyNC0xNS41MTEgMTIuMTI0LTEuMjg0IDAtMi41OS0uMTU2LTMuODkzLS40ODEtOC41NzItMi4xNDQtMTMuNzg0LTEwLjgzLTExLjY0Mi0xOS40MDNDODEuOTAxIDE2Ni40MjcgMTY2LjMxNiA4MS45MyAyMzYuMTE5IDY0LjQ3OGM4LjU3NS0yLjE0MyAxNy4yNjEgMy4wNjkgMTkuNDAzIDExLjY0MnMtMy4wNjkgMTcuMjU5LTExLjY0MSAxOS40MDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlc3NUaGFuRXF1YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQuOTggMjE0LjJsMzAxLjQxIDExOS44N2MxOC4zOSA2LjAzIDM4LjcxLTIuNTQgNDUuMzgtMTkuMTVsMTIuMDktMzAuMDhjNi42OC0xNi42MS0yLjgyLTM0Ljk3LTIxLjIxLTQxbC0xNzUuNDQtNjguMDUgMTc1LjU2LTY4LjA5YzE4LjI5LTYgMjcuNzQtMjQuMjcgMjEuMS00MC43OWwtMTIuMDMtMjkuOTJjLTYuNjQtMTYuNTMtMjYuODYtMjUuMDYtNDUuMTUtMTkuMDZMNTQuOTggMTM3Ljg5QzQxLjIxIDE0Mi40MSAzMiAxNTQuNSAzMiAxNjguMDd2MTUuOTZjMCAxMy41NiA5LjIxIDI1LjY1IDIyLjk4IDMwLjE3ek00MjQgNDAwSDI0Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0djQ4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDAwYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTQ4YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlc3NUaGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2NS40NiAzNTcuNzRMMTQ3LjA0IDI1NS44OWwyMTguNDctMTAxLjg4YzE2LjAyLTcuNDcgMjIuOTUtMjYuNTEgMTUuNDgtNDIuNTNsLTEzLjUyLTI5QzM2MCA2Ni40NiAzNDAuOTYgNTkuNTMgMzI0Ljk0IDY3TDE4LjQ4IDIwOS45MWEzMi4wMTQgMzIuMDE0IDAgMCAwLTE4LjQ4IDI5djM0LjI0YzAgMTIuNDQgNy4yMSAyMy43NSAxOC40OCAyOWwzMDYuMzEgMTQyLjgzYzE2LjA2IDcuNDkgMzUuMTUuNTQgNDIuNjQtMTUuNTJsMTMuNTYtMjkuMDhjNy40OS0xNi4wNi41NC0zNS4xNS0xNS41My00Mi42NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGV2ZWxEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy41NTMgMzkyLjMzMUwyMDkuNTg3IDUwNC4zMzRjLTkuNDg1IDEwLjIxNC0yNS42NzYgMTAuMjI5LTM1LjE3NCAwTDcwLjQzOCAzOTIuMzMxQzU2LjIzMiAzNzcuMDMxIDY3LjA2MiAzNTIgODguMDI1IDM1MkgxNTJWODBINjguMDI0YTExLjk5NiAxMS45OTYgMCAwIDEtOC40ODUtMy41MTVsLTU2LTU2Qy00LjAyMSAxMi45MjYgMS4zMzMgMCAxMi4wMjQgMEgyMDhjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djMyOGg2My45NjZjMjAuODc4IDAgMzEuODUxIDI0Ljk2OSAxNy41ODcgNDAuMzMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXZlbFVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy41NTMgMTE5LjY2OUwyMDkuNTg3IDcuNjY2Yy05LjQ4NS0xMC4yMTQtMjUuNjc2LTEwLjIyOS0zNS4xNzQgMEw3MC40MzggMTE5LjY2OUM1Ni4yMzIgMTM0Ljk2OSA2Ny4wNjIgMTYwIDg4LjAyNSAxNjBIMTUydjI3Mkg2OC4wMjRhMTEuOTk2IDExLjk5NiAwIDAgMC04LjQ4NSAzLjUxNWwtNTYgNTZDLTQuMDIxIDQ5OS4wNzQgMS4zMzMgNTEyIDEyLjAyNCA1MTJIMjA4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxNjBoNjMuOTY2YzIwLjg3OCAwIDMxLjg1MS0yNC45NjkgMTcuNTg3LTQwLjMzMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlmZVJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0xNzMuNjk2IDExOS41NTlsLTYzLjM5OSA2My4zOTljLTEwLjk4Ny0xOC41NTktMjYuNjctMzQuMjUyLTQ1LjI1NS00NS4yNTVsNjMuMzk5LTYzLjM5OWEyMTguMzk2IDIxOC4zOTYgMCAwIDEgNDUuMjU1IDQ1LjI1NXpNMjU2IDM1MmMtNTMuMDE5IDAtOTYtNDIuOTgxLTk2LTk2czQyLjk4MS05NiA5Ni05NiA5NiA0Mi45ODEgOTYgOTYtNDIuOTgxIDk2LTk2IDk2ek0xMjcuNTU5IDgyLjMwNGw2My4zOTkgNjMuMzk5Yy0xOC41NTkgMTAuOTg3LTM0LjI1MiAyNi42Ny00NS4yNTUgNDUuMjU1bC02My4zOTktNjMuMzk5YTIxOC4zNzIgMjE4LjM3MiAwIDAgMSA0NS4yNTUtNDUuMjU1ek04Mi4zMDQgMzg0LjQ0MWw2My4zOTktNjMuMzk5YzEwLjk4NyAxOC41NTkgMjYuNjcgMzQuMjUyIDQ1LjI1NSA0NS4yNTVsLTYzLjM5OSA2My4zOTlhMjE4LjM5NiAyMTguMzk2IDAgMCAxLTQ1LjI1NS00NS4yNTV6bTMwMi4xMzcgNDUuMjU1bC02My4zOTktNjMuMzk5YzE4LjU1OS0xMC45ODcgMzQuMjUyLTI2LjY3IDQ1LjI1NS00NS4yNTVsNjMuMzk5IDYzLjM5OWEyMTguNDAzIDIxOC40MDMgMCAwIDEtNDUuMjU1IDQ1LjI1NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzNTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2LjA2IDQ1NC4zNWMuMDEgNi4yOSAxLjg3IDEyLjQ1IDUuMzYgMTcuNjlsMTcuMDkgMjUuNjlhMzEuOTkgMzEuOTkgMCAwIDAgMjYuNjQgMTQuMjhoNjEuNzFhMzEuOTkgMzEuOTkgMCAwIDAgMjYuNjQtMTQuMjhsMTcuMDktMjUuNjlhMzEuOTg5IDMxLjk4OSAwIDAgMCA1LjM2LTE3LjY5bC4wNC0zOC4zNUg5Ni4wMWwuMDUgMzguMzV6TTAgMTc2YzAgNDQuMzcgMTYuNDUgODQuODUgNDMuNTYgMTE1Ljc4IDE2LjUyIDE4Ljg1IDQyLjM2IDU4LjIzIDUyLjIxIDkxLjQ1LjA0LjI2LjA3LjUyLjExLjc4aDE2MC4yNGMuMDQtLjI2LjA3LS41MS4xMS0uNzggOS44NS0zMy4yMiAzNS42OS03Mi42IDUyLjIxLTkxLjQ1QzMzNS41NSAyNjAuODUgMzUyIDIyMC4zNyAzNTIgMTc2IDM1MiA3OC42MSAyNzIuOTEtLjMgMTc1LjQ1IDAgNzMuNDQuMzEgMCA4Mi45NyAwIDE3NnptMTc2LTgwYy00NC4xMSAwLTgwIDM1Ljg5LTgwIDgwIDAgOC44NC03LjE2IDE2LTE2IDE2cy0xNi03LjE2LTE2LTE2YzAtNjEuNzYgNTAuMjQtMTEyIDExMi0xMTIgOC44NCAwIDE2IDcuMTYgMTYgMTZzLTcuMTYgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI2LjYxMiAxODUuMzkxYzU5Ljc0NyA1OS44MDkgNTguOTI3IDE1NS42OTguMzYgMjE0LjU5LS4xMS4xMi0uMjQuMjUtLjM2LjM3bC02Ny4yIDY3LjJjLTU5LjI3IDU5LjI3LTE1NS42OTkgNTkuMjYyLTIxNC45NiAwLTU5LjI3LTU5LjI2LTU5LjI3LTE1NS43IDAtMjE0Ljk2bDM3LjEwNi0zNy4xMDZjOS44NC05Ljg0IDI2Ljc4Ni0zLjMgMjcuMjk0IDEwLjYwNi42NDggMTcuNzIyIDMuODI2IDM1LjUyNyA5LjY5IDUyLjcyMSAxLjk4NiA1LjgyMi41NjcgMTIuMjYyLTMuNzgzIDE2LjYxMmwtMTMuMDg3IDEzLjA4N2MtMjguMDI2IDI4LjAyNi0yOC45MDUgNzMuNjYtMS4xNTUgMTAxLjk2IDI4LjAyNCAyOC41NzkgNzQuMDg2IDI4Ljc0OSAxMDIuMzI1LjUxbDY3LjItNjcuMTljMjguMTkxLTI4LjE5MSAyOC4wNzMtNzMuNzU3IDAtMTAxLjgzLTMuNzAxLTMuNjk0LTcuNDI5LTYuNTY0LTEwLjM0MS04LjU2OWExNi4wMzcgMTYuMDM3IDAgMCAxLTYuOTQ3LTEyLjYwNmMtLjM5Ni0xMC41NjcgMy4zNDgtMjEuNDU2IDExLjY5OC0yOS44MDZsMjEuMDU0LTIxLjA1NWM1LjUyMS01LjUyMSAxNC4xODItNi4xOTkgMjAuNTg0LTEuNzMxYTE1Mi40ODIgMTUyLjQ4MiAwIDAgMSAyMC41MjIgMTcuMTk3ek00NjcuNTQ3IDQ0LjQ0OWMtNTkuMjYxLTU5LjI2Mi0xNTUuNjktNTkuMjctMjE0Ljk2IDBsLTY3LjIgNjcuMmMtLjEyLjEyLS4yNS4yNS0uMzYuMzctNTguNTY2IDU4Ljg5Mi01OS4zODcgMTU0Ljc4MS4zNiAyMTQuNTlhMTUyLjQ1NCAxNTIuNDU0IDAgMCAwIDIwLjUyMSAxNy4xOTZjNi40MDIgNC40NjggMTUuMDY0IDMuNzg5IDIwLjU4NC0xLjczMWwyMS4wNTQtMjEuMDU1YzguMzUtOC4zNSAxMi4wOTQtMTkuMjM5IDExLjY5OC0yOS44MDZhMTYuMDM3IDE2LjAzNyAwIDAgMC02Ljk0Ny0xMi42MDZjLTIuOTEyLTIuMDA1LTYuNjQtNC44NzUtMTAuMzQxLTguNTY5LTI4LjA3My0yOC4wNzMtMjguMTkxLTczLjYzOSAwLTEwMS44M2w2Ny4yLTY3LjE5YzI4LjIzOS0yOC4yMzkgNzQuMy0yOC4wNjkgMTAyLjMyNS41MSAyNy43NSAyOC4zIDI2Ljg3MiA3My45MzQtMS4xNTUgMTAxLjk2bC0xMy4wODcgMTMuMDg3Yy00LjM1IDQuMzUtNS43NjkgMTAuNzktMy43ODMgMTYuNjEyIDUuODY0IDE3LjE5NCA5LjA0MiAzNC45OTkgOS42OSA1Mi43MjEuNTA5IDEzLjkwNiAxNy40NTQgMjAuNDQ2IDI3LjI5NCAxMC42MDZsMzcuMTA2LTM3LjEwNmM1OS4yNzEtNTkuMjU5IDU5LjI3MS0xNTUuNjk5LjAwMS0yMTQuOTU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXJhU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzEuOTk0IDI1NmgtNDguMDE5QzMxNy42NCAyNTYgMzEyIDI2MC45MTIgMzEyIDI2Ny4yNDYgMzEyIDM2OCAyMzAuMTc5IDQxNiAxNDQgNDE2VjI1Ni43ODFsMTM0LjYwMy0yOS45MTJBMTIgMTIgMCAwIDAgMjg4IDIxNS4xNTV2LTQwLjk3NmMwLTcuNjc3LTcuMTA5LTEzLjM4LTE0LjYwMy0xMS43MTRMMTQ0IDE5MS4yMTlWMTYwLjc4bDEzNC42MDMtMjkuOTEyQTEyIDEyIDAgMCAwIDI4OCAxMTkuMTU0Vjc4LjE3OWMwLTcuNjc3LTcuMTA5LTEzLjM4LTE0LjYwMy0xMS43MTRMMTQ0IDk1LjIxOVY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDc2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjY4Ljk5N0w5LjM5NyAxMjUuMTMxQTEyIDEyIDAgMCAwIDAgMTM2Ljg0NXY0MC45NzZjMCA3LjY3NyA3LjEwOSAxMy4zOCAxNC42MDMgMTEuNzE0TDY0IDE3OC41NTh2MzAuNDM5TDkuMzk3IDIyMS4xMzFBMTIgMTIgMCAwIDAgMCAyMzIuODQ1djQwLjk3NmMwIDcuNjc3IDcuMTA5IDEzLjM4IDE0LjYwMyAxMS43MTRMNjQgMjc0LjU1OFY0NjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg3OS41ODNjMTM0LjA5MSAwIDIyMy4yNTUtNzcuODM0IDIyOC40MDgtMjExLjU5Mi4yNjEtNi43ODItNS4yMTEtMTIuNDA4LTExLjk5Ny0xMi40MDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpc3RBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDQ4MEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4ek0xMjggMTIwYy0yMi4wOTEgMC00MCAxNy45MDktNDAgNDBzMTcuOTA5IDQwIDQwIDQwIDQwLTE3LjkwOSA0MC00MC0xNy45MDktNDAtNDAtNDB6bTAgOTZjLTIyLjA5MSAwLTQwIDE3LjkwOS00MCA0MHMxNy45MDkgNDAgNDAgNDAgNDAtMTcuOTA5IDQwLTQwLTE3LjkwOS00MC00MC00MHptMCA5NmMtMjIuMDkxIDAtNDAgMTcuOTA5LTQwIDQwczE3LjkwOSA0MCA0MCA0MCA0MC0xNy45MDkgNDAtNDAtMTcuOTA5LTQwLTQwLTQwem0yODgtMTM2di0zMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDIwNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYzMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIwMGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2di0zMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDIwNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYzMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIwMGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2di0zMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDIwNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYzMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIwMGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0T2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEuNzcgNDAxbDE3LjUtMjAuMTVhMTkuOTIgMTkuOTIgMCAwIDAgNS4wNy0xNC4xOXYtMy4zMUM4NC4zNCAzNTYgODAuNSAzNTIgNzMgMzUySDE2YTggOCAwIDAgMC04IDh2MTZhOCA4IDAgMCAwIDggOGgyMi44M2ExNTcuNDEgMTU3LjQxIDAgMCAwLTExIDEyLjMxbC01LjYxIDdjLTQgNS4wNy01LjI1IDEwLjEzLTIuOCAxNC44OGwxLjA1IDEuOTNjMyA1Ljc2IDYuMjkgNy44OCAxMi4yNSA3Ljg4aDQuNzNjMTAuMzMgMCAxNS45NCAyLjQ0IDE1Ljk0IDkuMDkgMCA0LjcyLTQuMiA4LjIyLTE0LjM2IDguMjJhNDEuNTQgNDEuNTQgMCAwIDEtMTUuNDctMy4xMmMtNi40OS0zLjg4LTExLjc0LTMuNS0xNS42IDMuMTJsLTUuNTkgOS4zMWMtMy43MiA2LjEzLTMuMTkgMTEuNzIgMi42MyAxNS45NCA3LjcxIDQuNjkgMjAuMzggOS40NCAzNyA5LjQ0IDM0LjE2IDAgNDguNS0yMi43NSA0OC41LTQ0LjEyLS4wMy0xNC4zOC05LjEyLTI5Ljc2LTI4LjczLTM0Ljg4ek00OTYgMjI0SDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTE2MEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2VjgwYTE2IDE2IDAgMCAwLTE2LTE2em0wIDMyMEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMTYgMTYwaDY0YTggOCAwIDAgMCA4LTh2LTE2YTggOCAwIDAgMC04LThINjRWNDBhOCA4IDAgMCAwLTgtOEgzMmE4IDggMCAwIDAtNy4xNCA0LjQybC04IDE2QTggOCAwIDAgMCAyNCA2NGg4djY0SDE2YTggOCAwIDAgMC04IDh2MTZhOCA4IDAgMCAwIDggOHptLTMuOTEgMTYwSDgwYTggOCAwIDAgMCA4LTh2LTE2YTggOCAwIDAgMC04LThINDEuMzJjMy4yOS0xMC4yOSA0OC4zNC0xOC42OCA0OC4zNC01Ni40NCAwLTI5LjA2LTI1LTM5LjU2LTQ0LjQ3LTM5LjU2LTIxLjM2IDAtMzMuOCAxMC00MC40NiAxOC43NS00LjM3IDUuNTktMyAxMC44NCAyLjggMTUuMzdsOC41OCA2Ljg4YzUuNjEgNC41NiAxMSAyLjQ3IDE2LjEyLTIuNDRhMTMuNDQgMTMuNDQgMCAwIDEgOS40Ni0zLjg0YzMuMzMgMCA5LjI4IDEuNTYgOS4yOCA4Ljc1QzUxIDI0OC4xOSAwIDI1Ny4zMSAwIDMwNC41OXY0QzAgMzE2IDUuMDggMzIwIDEyLjA5IDMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdFVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQ4YTQ4IDQ4IDAgMSAwIDQ4IDQ4IDQ4IDQ4IDAgMCAwLTQ4LTQ4em0wIDE2MGE0OCA0OCAwIDEgMCA0OCA0OCA0OCA0OCAwIDAgMC00OC00OHptMCAxNjBhNDggNDggMCAxIDAgNDggNDggNDggNDggMCAwIDAtNDgtNDh6bTQ0OCAxNkgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0zMjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAxNjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMzY4SDE2YTE2IDE2IDAgMCAwLTE2IDE2djY0YTE2IDE2IDAgMCAwIDE2IDE2aDY0YTE2IDE2IDAgMCAwIDE2LTE2di02NGExNiAxNiAwIDAgMC0xNi0xNnptMC0zMjBIMTZBMTYgMTYgMCAwIDAgMCA2NHY2NGExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNlY2NGExNiAxNiAwIDAgMC0xNi0xNnptMCAxNjBIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2NjRhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTY0YTE2IDE2IDAgMCAwLTE2LTE2em00MTYgMTc2SDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTMyMEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2VjgwYTE2IDE2IDAgMCAwLTE2LTE2em0wIDE2MEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25BcnJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDQuNTIgMy41MkwyOC43NCAxOTUuNDJjLTQ3Ljk3IDIyLjM5LTMxLjk4IDkyLjc1IDE5LjE5IDkyLjc1aDE3NS45MXYxNzUuOTFjMCA1MS4xNyA3MC4zNiA2Ny4xNyA5Mi43NSAxOS4xOWwxOTEuOS00MTUuNzhjMTUuOTktMzguMzktMjUuNTktNzkuOTctNjMuOTctNjMuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy41IDBDMzM5LjUuMyAyNzIgNjkuNSAyNzIgMTUzLjVWMjI0SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxOTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI3MmMwLTI2LjUtMjEuNS00OC00OC00OGgtNDh2LTcxLjFjMC0zOS42IDMxLjctNzIuNSA3MS4zLTcyLjkgNDAtLjQgNzIuNyAzMi4xIDcyLjcgNzJ2ODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTgwQzU3NiA2OCA1MDcuNS0uMyA0MjMuNSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAyMjRoLTI0di03MkMzNzYgNjguMiAzMDcuOCAwIDIyNCAwUzcyIDY4LjIgNzIgMTUydjcySDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxOTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI3MmMwLTI2LjUtMjEuNS00OC00OC00OHptLTEwNCAwSDE1MnYtNzJjMC0zOS43IDMyLjMtNzIgNzItNzJzNzIgMzIuMyA3MiA3MnY3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9uZ0Fycm93QWx0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjggMzQ1Ljk0MVY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC01NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYzMDEuOTQxSDQxLjk0MWMtMjEuMzgyIDAtMzIuMDkgMjUuODUxLTE2Ljk3MSA0MC45NzFsODYuMDU5IDg2LjA1OWM5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsODYuMDU5LTg2LjA1OWMxNS4xMTktMTUuMTE5IDQuNDExLTQwLjk3MS0xNi45NzEtNDAuOTcxSDE2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9uZ0Fycm93QWx0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzQuMDU5IDI5Nkg0MzZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNTZjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMzQuMDU5di00Ni4wNTljMC0yMS4zODItMjUuODUxLTMyLjA5LTQwLjk3MS0xNi45NzFMNy4wMjkgMjM5LjAyOWMtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY5IDAgMzMuOTQxbDg2LjA1OSA4Ni4wNTljMTUuMTE5IDE1LjExOSA0MC45NzEgNC40MTEgNDAuOTcxLTE2Ljk3MVYyOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvbmdBcnJvd0FsdFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy45NDEgMjE2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjU2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMzAxLjk0MXY0Ni4wNTljMCAyMS4zODIgMjUuODUxIDMyLjA5IDQwLjk3MSAxNi45NzFsODYuMDU5LTg2LjA1OWM5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFsLTg2LjA1OS04Ni4wNTljLTE1LjExOS0xNS4xMTktNDAuOTcxLTQuNDExLTQwLjk3MSAxNi45NzFWMjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb25nQXJyb3dBbHRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OCAxNjYuMDU5VjQ2OGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDU2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWMTY2LjA1OWg0Ni4wNTljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFsLTg2LjA1OS04Ni4wNTljLTkuMzczLTkuMzczLTI0LjU2OS05LjM3My0zMy45NDEgMGwtODYuMDU5IDg2LjA1OWMtMTUuMTE5IDE1LjExOS00LjQxMSA0MC45NzEgMTYuOTcxIDQwLjk3MUg4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG93VmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2OS4zNDQgMjMxLjYzMUM1MTIuOTYgMTM1Ljk0OSA0MDcuODEgNzIgMjg4IDcyYy0yOC40NjggMC01Ni4xMDIgMy42MTktODIuNDUxIDEwLjQwOUwxNTIuNzc4IDEwLjI0Yy03LjYwMS0xMC44NTgtMjIuNTY0LTEzLjUtMzMuNDIzLTUuOWwtMTMuMTE0IDkuMTc4Yy0xMC44NiA3LjYwMS0xMy41MDIgMjIuNTY2LTUuOSAzMy40MjZsNDMuMTMxIDU4LjM5NUM4OS40NDkgMTMxLjczIDQwLjIyOCAxNzQuNjgzIDYuNjgyIDIzMS41ODFjLS4wMS4wMTctLjAyMy4wMzMtLjAzNC4wNS04Ljc2NSAxNC44NzUtOC45NjQgMzMuNTI4IDAgNDguNzM5IDM4LjUgNjUuMzMyIDk5Ljc0MiAxMTUuODYyIDE3Mi44NTkgMTQxLjM0OUw1NS4zMTYgMjQ0LjMwMkEyNzIuMTk0IDI3Mi4xOTQgMCAwIDEgODMuNjEgMjA4LjM5bDExOS40IDE3MC41OGguMDFsNDAuNjMgNTguMDRhMzMwLjA1NSAzMzAuMDU1IDAgMCAwIDc4Ljk0IDEuMTdsLTE4OS45OC0yNzEuNGEyNzcuNjI4IDI3Ny42MjggMCAwIDEgMzguNzc3LTIxLjU2M2wyNTEuODM2IDM1Ni41NDRjNy42MDEgMTAuODU4IDIyLjU2NCAxMy40OTkgMzMuNDIzIDUuOWwxMy4xMTQtOS4xNzhjMTAuODYtNy42MDEgMTMuNTAyLTIyLjU2NyA1LjktMzMuNDI2bC00My4xMi01OC4zNzctLjAwNy0uMDA5YzU3LjE2MS0yNy45NzggMTA0LjgzNS03Mi4wNCAxMzYuODEtMTI2LjMwMWE0Ny45MzggNDcuOTM4IDAgMCAwIC4wMDEtNDguNzM5ek0zOTAuMDI2IDM0NS45NGwtMTkuMDY2LTI3LjIzYzI0LjY4Mi0zMi41NjcgMjcuNzExLTc2LjM1MyA4LjgtMTExLjY4di4wM2MwIDIzLjY1LTE5LjE3IDQyLjgyLTQyLjgyIDQyLjgyLTIzLjgyOCAwLTQyLjgyLTE5LjM0OS00Mi44Mi00Mi44MiAwLTIzLjY1IDE5LjE3LTQyLjgyIDQyLjgyLTQyLjgyaC4wM2MtMjQuNzUtMTMuMjQ5LTUzLjUyMi0xNS42NDMtNzkuNTEtNy42OGwtMTkuMDY4LTI3LjIzN0MyNTMuNzU4IDEyMy4zMDYgMjcwLjQ4OCAxMjAgMjg4IDEyMGM3NS4xNjIgMCAxMzYgNjAuODI2IDEzNiAxMzYgMCAzNC41MDQtMTIuODMzIDY1Ljk3NS0zMy45NzQgODkuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUx1Z2dhZ2VDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAzMjBoMzJWOTZoLTMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjE2MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyem0zNTItMzJWMTI4YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTMydjIyNGgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyem00OCA5NkgxMjhWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiAwIDAgNy4xNiAwIDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djM2OGMwIDguODQgNy4xNiAxNiAxNiAxNmg4Mi45NGMtMS43OSA1LjAzLTIuOTQgMTAuMzYtMi45NCAxNiAwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4czQ4LTIxLjQ5IDQ4LTQ4YzAtNS42NC0xLjE1LTEwLjk3LTIuOTQtMTZoMTk3Ljg4Yy0xLjc5IDUuMDMtMi45NCAxMC4zNi0yLjk0IDE2IDAgMjYuNTEgMjEuNDkgNDggNDggNDhzNDgtMjEuNDkgNDgtNDhjMC01LjY0LTEuMTUtMTAuOTctMi45NC0xNkg2MjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00ODAgOTZWNDhjMC0yNi41MS0yMS40OS00OC00OC00OGgtOTZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjcyaDE5MlY5NnptLTQ4IDBoLTk2VjQ4aDk2djQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMdW5nc1ZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NCwxNTAuNjhWMTZBMTYsMTYsMCwwLDAsMzI4LDBIMzEyYTE2LDE2LDAsMCwwLTE2LDE2VjE1MC42OGE0Ni40NSw0Ni40NSwwLDAsMSw0OCwwWk0xOTUuNTQsNDQ0LjQ2YTQ4LjA2LDQ4LjA2LDAsMCwxLDAtNjcuODhsOC41OC04LjU4SDE5MmE0OCw0OCwwLDAsMSwwLTk2aDEyLjEybC04LjU4LTguNTdhNDgsNDgsMCwwLDEsNjAuNDYtNzRWMTYxLjc1QzI1NiwxMjUuMzgsMjI0LjYyLDk2LDE4Niw5NmMtNDQsMC01OCwyOC41LTgwLjEyLDYzLjEzYTgxOS41Miw4MTkuNTIsMCwwLDAtMTAyLDIzMUExMTMuMTYsMTEzLjE2LDAsMCwwLDAsNDE5Ljc1QzAsNDgxLDYyLjUsNTI1LjI2LDEyNS4yNSw1MDguMzhsNTkuNS0xNS44N2E5OC41MSw5OC41MSwwLDAsMCw1Mi41LTM0Ljc1LDQ2LjQ5LDQ2LjQ5LDAsMCwxLTQxLjcxLTEzLjNabTIyNi4yOS0yMi42M2ExNiwxNiwwLDAsMCwwLTIyLjYybC04LjU4LTguNThDMzkzLjA5LDM3MC40Nyw0MDcuMzcsMzM2LDQzNS44OCwzMzZINDQ4YTE2LDE2LDAsMCwwLDAtMzJINDM1Ljg4Yy0yOC41MSwwLTQyLjc5LTM0LjQ3LTIyLjYzLTU0LjYybDguNTgtOC41OGExNiwxNiwwLDAsMC0yMi42My0yMi42M2wtOC41Nyw4LjU4QzM3MC40NywyNDYuOTEsMzM2LDIzMi42MywzMzYsMjA0LjEyVjE5MmExNiwxNiwwLDAsMC0zMiwwdjEyLjEyYzAsMjguNTEtMzQuNDcsNDIuNzktNTQuNjMsMjIuNjNsLTguNTctOC41OGExNiwxNiwwLDAsMC0yMi42MywyMi42M2w4LjU4LDguNThjMjAuMTYsMjAuMTUsNS44OCw1NC42Mi0yMi42Myw1NC42MkgxOTJhMTYsMTYsMCwwLDAsMCwzMmgxMi4xMmMyOC41MSwwLDQyLjc5LDM0LjQ3LDIyLjYzLDU0LjYzbC04LjU4LDguNThhMTYsMTYsMCwxLDAsMjIuNjMsMjIuNjJsOC41Ny04LjU3QzI2OS41MywzOTMuMSwzMDQsNDA3LjM4LDMwNCw0MzUuODhWNDQ4YTE2LDE2LDAsMCwwLDMyLDBWNDM1Ljg4YzAtMjguNSwzNC40Ny00Mi43OCw1NC42My0yMi42Mmw4LjU3LDguNTdhMTYsMTYsMCwwLDAsMjIuNjMsMFpNMjg4LDMwNGExNiwxNiwwLDEsMSwxNi0xNkExNiwxNiwwLDAsMSwyODgsMzA0Wm02NCw2NGExNiwxNiwwLDEsMSwxNi0xNkExNiwxNiwwLDAsMSwzNTIsMzY4Wm0yODQuMTIsMjIuMTNhODE5LjUyLDgxOS41MiwwLDAsMC0xMDItMjMxQzUxMiwxMjQuNSw0OTgsOTYsNDU0LDk2Yy0zOC42MiwwLTcwLDI5LjM4LTcwLDY1Ljc1djI3LjcyYTQ4LDQ4LDAsMCwxLDYwLjQ2LDc0TDQzNS44OCwyNzJINDQ4YTQ4LDQ4LDAsMCwxLDAsOTZINDM1Ljg4bDguNTgsOC41OGE0Ny43LDQ3LjcsMCwwLDEtNDEuNzEsODEuMTgsOTguNTEsOTguNTEsMCwwLDAsNTIuNSwzNC43NWw1OS41LDE1Ljg3QzU3Ny41LDUyNS4yNiw2NDAsNDgxLDY0MCw0MTkuNzVBMTEzLjE2LDExMy4xNiwwLDAsMCw2MzYuMTIsMzkwLjEzWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMdW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzYuMTEgMzkwLjE1QzYxNC40NCAzMDguODUgNTgwLjA3IDIzMSA1MzQuMSAxNTkuMTMgNTExLjk4IDEyNC41NiA0OTguMDMgOTYgNDU0LjA1IDk2IDQxNS4zNiA5NiAzODQgMTI1LjQyIDM4NCAxNjEuNzF2NjAuMTFsLTMyLjg4LTIxLjkyYTE1Ljk5NiAxNS45OTYgMCAwIDEtNy4xMi0xMy4zMVYxNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE3MC41OWMwIDUuMzUtMi42NyAxMC4zNC03LjEyIDEzLjMxTDI1NiAyMjEuODJ2LTYwLjExQzI1NiAxMjUuNDIgMjI0LjY0IDk2IDE4NS45NSA5NmMtNDMuOTggMC01Ny45MyAyOC41Ni04MC4wNSA2My4xM0M1OS45MyAyMzEgMjUuNTYgMzA4Ljg1IDMuODkgMzkwLjE1IDEuMyAzOTkuODQgMCA0MDkuNzkgMCA0MTkuNzhjMCA2MS4yMyA2Mi40OCAxMDUuNDQgMTI1LjI0IDg4LjYybDU5LjUtMTUuOTVjNDIuMTgtMTEuMyA3MS4yNi00Ny40NyA3MS4yNi04OC42MnYtODcuNDlsLTg1Ljg0IDU3LjIzYTcuOTkyIDcuOTkyIDAgMCAxLTExLjA5LTIuMjJsLTguODgtMTMuMzFhNy45OTIgNy45OTIgMCAwIDEgMi4yMi0xMS4wOUwzMjAgMjM1LjIzbDE2Ny41OSAxMTEuNzJhNy45OTQgNy45OTQgMCAwIDEgMi4yMiAxMS4wOWwtOC44OCAxMy4zMWE3Ljk5NCA3Ljk5NCAwIDAgMS0xMS4wOSAyLjIyTDM4NCAzMTYuMzR2ODcuNDljMCA0MS4xNSAyOS4wOCA3Ny4zMSA3MS4yNiA4OC42Mmw1OS41IDE1Ljk1QzU3Ny41MiA1MjUuMjIgNjQwIDQ4MS4wMSA2NDAgNDE5Ljc4YzAtOS45OS0xLjMtMTkuOTQtMy44OS0yOS42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDk2bDE2LTMyIDMyLTE2LTMyLTE2LTE2LTMyLTE2IDMyLTMyIDE2IDMyIDE2IDE2IDMyek04MCAxNjBsMjYuNjYtNTMuMzNMMTYwIDgwbC01My4zNC0yNi42N0w4MCAwIDUzLjM0IDUzLjMzIDAgODBsNTMuMzQgMjYuNjdMODAgMTYwem0zNTIgMTI4bC0yNi42NiA1My4zM0wzNTIgMzY4bDUzLjM0IDI2LjY3TDQzMiA0NDhsMjYuNjYtNTMuMzNMNTEyIDM2OGwtNTMuMzQtMjYuNjdMNDMyIDI4OHptNzAuNjItMTkzLjc3TDQxNy43NyA5LjM4QzQxMS41MyAzLjEyIDQwMy4zNCAwIDM5NS4xNSAwYy04LjE5IDAtMTYuMzggMy4xMi0yMi42MyA5LjM4TDkuMzggMzcyLjUyYy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1bDg0Ljg1IDg0Ljg1YzYuMjUgNi4yNSAxNC40NCA5LjM3IDIyLjYyIDkuMzcgOC4xOSAwIDE2LjM4LTMuMTIgMjIuNjMtOS4zN2wzNjMuMTQtMzYzLjE1YzEyLjUtMTIuNDggMTIuNS0zMi43NSAwLTQ1LjI0ek0zNTkuNDUgMjAzLjQ2bC01MC45MS01MC45MSA4Ni42LTg2LjYgNTAuOTEgNTAuOTEtODYuNiA4Ni42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY0LjA3IDE0OC4xSDEyYTEyIDEyIDAgMCAxLTEyLTEydi04MGEzNiAzNiAwIDAgMSAzNi0zNmgxMDRhMzYgMzYgMCAwIDEgMzYgMzZ2ODBhMTEuODkgMTEuODkgMCAwIDEtMTEuOTMgMTJ6bTM0Ny45My0xMlY1NmEzNiAzNiAwIDAgMC0zNi0zNkgzNzJhMzYgMzYgMCAwIDAtMzYgMzZ2ODBhMTIgMTIgMCAwIDAgMTIgMTJoMTUyYTExLjg5IDExLjg5IDAgMCAwIDEyLTExLjl6bS0xNjQgNDRhMTIgMTIgMCAwIDAtMTIgMTJ2NTJjMCAxMjguMS0xNjAgMTI3LjktMTYwIDB2LTUyYTEyIDEyIDAgMCAwLTEyLTEySDEyLjFhMTIgMTIgMCAwIDAtMTIgMTIuMWMuMSAyMS40LjYgNDAuMyAwIDUzLjMgMCAxNTAuNiAxMzYuMTcgMjQ2LjYgMjU2Ljc1IDI0Ni42czI1NS05NiAyNTUtMjQ2LjdjLS42LTEyLjgtLjItMzMgMC01My4yYTEyIDEyIDAgMCAwLTEyLTEyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1haWxCdWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA0NDhjLTI1LjYgMC01MS4yLTIyLjQtNjQtMzItNjQtNDQuOC04My4yLTYwLjgtOTYtNzAuNFY0ODBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgyNTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzNDUuNmMtMTIuOCA5LjYtMzIgMjUuNi05NiA3MC40LTEyLjggOS42LTM4LjQgMzItNjQgMzJ6bTEyOC0xOTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTZjMjUuNiAxOS4yIDIyLjQgMTkuMiAxMTUuMiA4Ni40IDkuNiA2LjQgMjguOCAyNS42IDQ0LjggMjUuNnMzNS4yLTE5LjIgNDQuOC0yMi40YzkyLjgtNjcuMiA4OS42LTY3LjIgMTE1LjItODYuNFYyODhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMjU2LTk2SDIyNGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmg5NmMzMy4yMSAwIDYwLjU5IDI1LjQyIDYzLjcxIDU3LjgybC4yOS0uMjJWNDE2aDE5MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjE5MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0tMzIgMTI4aC02NHYtNjRoNjR2NjR6bS0zNTItOTZjMC0zNS4yOSAyOC43MS02NCA2NC02NGgyMjRWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkg5NkM3OC4zMyAwIDY0IDE0LjMzIDY0IDMydjE5Mmg5NnYtMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDE5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMGMzNS4zNDYgMCA2NCAyOC42NTQgNjQgNjRzLTI4LjY1NCA2NC02NCA2NC02NC0yOC42NTQtNjQtNjRTNjAuNjU0IDAgOTYgMG00OCAxNDRoLTExLjM2Yy0yMi43MTEgMTAuNDQzLTQ5LjU5IDEwLjg5NC03My4yOCAwSDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djEzNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTZ2MTM2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg2NGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMzUyaDE2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxOTJjMC0yNi41MS0yMS40OS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwTWFya2VkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAwYy02OS41OSAwLTEyNiA1Ni40MS0xMjYgMTI2IDAgNTYuMjYgODIuMzUgMTU4LjggMTEzLjkgMTk2LjAyIDYuMzkgNy41NCAxNy44MiA3LjU0IDI0LjIgMEMzMzEuNjUgMjg0LjggNDE0IDE4Mi4yNiA0MTQgMTI2IDQxNCA1Ni40MSAzNTcuNTkgMCAyODggMHptMCAxNjhjLTIzLjIgMC00Mi0xOC44LTQyLTQyczE4LjgtNDIgNDItNDIgNDIgMTguOCA0MiA0Mi0xOC44IDQyLTQyIDQyek0yMC4xMiAyMTUuOTVBMzIuMDA2IDMyLjAwNiAwIDAgMCAwIDI0NS42NnYyNTAuMzJjMCAxMS4zMiAxMS40MyAxOS4wNiAyMS45NCAxNC44NkwxNjAgNDQ4VjIxNC45MmMtOC44NC0xNS45OC0xNi4wNy0zMS41NC0yMS4yNS00Ni40MkwyMC4xMiAyMTUuOTV6TTI4OCAzNTkuNjdjLTE0LjA3IDAtMjcuMzgtNi4xOC0zNi41MS0xNi45Ni0xOS42Ni0yMy4yLTQwLjU3LTQ5LjYyLTU5LjQ5LTc2LjcydjE4MmwxOTIgNjRWMjY2Yy0xOC45MiAyNy4wOS0zOS44MiA1My41Mi01OS40OSA3Ni43Mi05LjEzIDEwLjc3LTIyLjQ0IDE2Ljk1LTM2LjUxIDE2Ljk1em0yNjYuMDYtMTk4LjUxTDQxNiAyMjR2Mjg4bDEzOS44OC01NS45NUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiA0MjYuMzRWMTc2LjAyYzAtMTEuMzItMTEuNDMtMTkuMDYtMjEuOTQtMTQuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcE1hcmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMtNjkuNTkgMC0xMjYgNTYuNDEtMTI2IDEyNiAwIDU2LjI2IDgyLjM1IDE1OC44IDExMy45IDE5Ni4wMiA2LjM5IDcuNTQgMTcuODIgNy41NCAyNC4yIDBDMzMxLjY1IDI4NC44IDQxNCAxODIuMjYgNDE0IDEyNiA0MTQgNTYuNDEgMzU3LjU5IDAgMjg4IDB6TTIwLjEyIDIxNS45NUEzMi4wMDYgMzIuMDA2IDAgMCAwIDAgMjQ1LjY2djI1MC4zMmMwIDExLjMyIDExLjQzIDE5LjA2IDIxLjk0IDE0Ljg2TDE2MCA0NDhWMjE0LjkyYy04Ljg0LTE1Ljk4LTE2LjA3LTMxLjU0LTIxLjI1LTQ2LjQyTDIwLjEyIDIxNS45NXpNMjg4IDM1OS42N2MtMTQuMDcgMC0yNy4zOC02LjE4LTM2LjUxLTE2Ljk2LTE5LjY2LTIzLjItNDAuNTctNDkuNjItNTkuNDktNzYuNzJ2MTgybDE5MiA2NFYyNjZjLTE4LjkyIDI3LjA5LTM5LjgyIDUzLjUyLTU5LjQ5IDc2LjcyLTkuMTMgMTAuNzctMjIuNDQgMTYuOTUtMzYuNTEgMTYuOTV6bTI2Ni4wNi0xOTguNTFMNDE2IDIyNHYyODhsMTM5Ljg4LTU1Ljk1QTMxLjk5NiAzMS45OTYgMCAwIDAgNTc2IDQyNi4zNFYxNzYuMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwTWFya2VyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Mi4yNjggNTAxLjY3QzI2Ljk3IDI5MS4wMzEgMCAyNjkuNDEzIDAgMTkyIDAgODUuOTYxIDg1Ljk2MSAwIDE5MiAwczE5MiA4NS45NjEgMTkyIDE5MmMwIDc3LjQxMy0yNi45NyA5OS4wMzEtMTcyLjI2OCAzMDkuNjctOS41MzUgMTMuNzc0LTI5LjkzIDEzLjc3My0zOS40NjQgMHpNMTkyIDI3MmM0NC4xODMgMCA4MC0zNS44MTcgODAtODBzLTM1LjgxNy04MC04MC04MC04MCAzNS44MTctODAgODAgMzUuODE3IDgwIDgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBNYXJrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcyLjI2OCA1MDEuNjdDMjYuOTcgMjkxLjAzMSAwIDI2OS40MTMgMCAxOTIgMCA4NS45NjEgODUuOTYxIDAgMTkyIDBzMTkyIDg1Ljk2MSAxOTIgMTkyYzAgNzcuNDEzLTI2Ljk3IDk5LjAzMS0xNzIuMjY4IDMwOS42Ny05LjUzNSAxMy43NzQtMjkuOTMgMTMuNzczLTM5LjQ2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDMxNi45NHYxNTYuNjlsMjIuMDIgMzMuMDJjNC43NSA3LjEyIDE1LjIyIDcuMTIgMTkuOTcgMEwxNzYgNDczLjYzVjMxNi45NGMtMTAuMzkgMS45Mi0yMS4wNiAzLjA2LTMyIDMuMDZzLTIxLjYxLTEuMTQtMzItMy4wNnpNMTQ0IDBDNjQuNDcgMCAwIDY0LjQ3IDAgMTQ0czY0LjQ3IDE0NCAxNDQgMTQ0IDE0NC02NC40NyAxNDQtMTQ0UzIyMy41MyAwIDE0NCAwem0wIDc2Yy0zNy41IDAtNjggMzAuNS02OCA2OCAwIDYuNjItNS4zOCAxMi0xMiAxMnMtMTItNS4zOC0xMi0xMmMwLTUwLjczIDQxLjI4LTkyIDkyLTkyIDYuNjIgMCAxMiA1LjM4IDEyIDEycy01LjM4IDEyLTEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBTaWducyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDcuMzEgODQuNjlMNDY0IDQxLjM3Yy02LTYtMTQuMTQtOS4zNy0yMi42My05LjM3SDI4OFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2SDU2Yy0xMy4yNSAwLTI0IDEwLjc1LTI0IDI0djgwYzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoMzg1LjM3YzguNDkgMCAxNi42Mi0zLjM3IDIyLjYzLTkuMzdsNDMuMzEtNDMuMzFjNi4yNS02LjI2IDYuMjUtMTYuMzggMC0yMi42M3pNMjI0IDQ5NmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYzODRoLTY0djExMnptMjMyLTI3MkgyODh2LTMyaC02NHYzMkg3MC42M2MtOC40OSAwLTE2LjYyIDMuMzctMjIuNjMgOS4zN0w0LjY5IDI3Ni42OWMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M0w0OCAzNDIuNjNjNiA2IDE0LjE0IDkuMzcgMjIuNjMgOS4zN0g0NTZjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtODBjMC0xMy4yNS0xMC43NS0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTE3LjY2djM0Ni4zMmMwIDExLjMyIDExLjQzIDE5LjA2IDIxLjk0IDE0Ljg2TDE2MCA0MTZWMzJMMjAuMTIgODcuOTVBMzIuMDA2IDMyLjAwNiAwIDAgMCAwIDExNy42NnpNMTkyIDQxNmwxOTIgNjRWOTZMMTkyIDMydjM4NHpNNTU0LjA2IDMzLjE2TDQxNiA5NnYzODRsMTM5Ljg4LTU1Ljk1QTMxLjk5NiAzMS45OTYgMCAwIDAgNTc2IDM5NC4zNFY0OC4wMmMwLTExLjMyLTExLjQzLTE5LjA2LTIxLjk0LTE0Ljg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTMuOTUgMjkwLjAzQTMyNy4wMzggMzI3LjAzOCAwIDAgMCAuMTcgNDg1LjExbC0uMDMuMjNjLTEuNyAxNS4yOCAxMS4yMSAyOC4yIDI2LjQ5IDI2LjUxYTMyNy4wMiAzMjcuMDIgMCAwIDAgMTk1LjM0LTkzLjhsNzUuNC03NS40LTEyOC4wMi0xMjguMDItNzUuNCA3NS40ek00ODUuNDkgMjYuNTFjLTM1LjM1LTM1LjM1LTkyLjY3LTM1LjM1LTEyOC4wMiAwbC0yMS43NiAyMS43Ni0zNi41Ni0zNi41NWMtMTUuNjItMTUuNjItNDAuOTUtMTUuNjItNTYuNTYgMEwxMzguNDcgMTE1Ljg0Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYyIDIyLjYyYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsODcuMTUtODcuMTUgMTkuNTkgMTkuNTlMMTkxLjk4IDE5MiAzMjAgMzIwLjAybDE2NS40OS0xNjUuNDljMzUuMzUtMzUuMzUgMzUuMzUtOTIuNjYgMC0xMjguMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnNEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQwIDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktNDguNyA0OC43QzE5OC41IDcyLjEgMTcyLjIgNjQgMTQ0IDY0IDY0LjUgNjQgMCAxMjguNSAwIDIwOHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDRjMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w0OC43LTQ4LjcgMTYuOSAxNi45YzIuNCAyLjQgNS41IDMuNSA4LjQgMy41IDYuMiAwIDEyLjEtNC44IDEyLjEtMTJWMTJjMC02LjYtNS40LTEyLTEyLTEyek0xNDQgMjg4Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHptMzU2LTEyOC4xaC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTQ4LjcgNDguN2MtMTguMi0xMS40LTM5LTE4LjktNjEuNS0yMS4zLTIuMSAyMS44LTguMiA0My4zLTE4LjQgNjMuMyAxLjEgMCAyLjItLjEgMy4yLS4xIDQ0LjEgMCA4MCAzNS45IDgwIDgwcy0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODBjMC0xLjEgMC0yLjIuMS0zLjItMjAgMTAuMi00MS41IDE2LjQtNjMuMyAxOC40QzE2OC40IDQ1NS42IDIyOS42IDUxMiAzMDQgNTEyYzc5LjUgMCAxNDQtNjQuNSAxNDQtMTQ0IDAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsNDguNy00OC43IDE2LjkgMTYuOWMyLjQgMi40IDUuNCAzLjUgOC40IDMuNSA2LjIgMCAxMi4xLTQuOCAxMi4xLTEydi03OWMwLTYuNy01LjQtMTIuMS0xMi0xMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzU3Ryb2tlSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYuMiAyNDcuNWwtNTUuOS01NS45Yy03LjYtNy42LTIwLjUtMi4yLTIwLjUgOC41VjIyNEgzNzZ2LTIwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnYyMGgtMjcuNmMtNS44LTI1LjYtMTguNy00OS45LTM4LjYtNjkuOEMxODkuNiA5OCA5OC40IDk4IDQyLjIgMTU0LjJjLTU2LjIgNTYuMi01Ni4yIDE0Ny40IDAgMjAzLjYgNTYuMiA1Ni4yIDE0Ny40IDU2LjIgMjAzLjYgMCAxOS45LTE5LjkgMzIuOC00NC4yIDM4LjYtNjkuOEgzMTJ2MjBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMjBoMjMuOXYyMy45YzAgMTAuNyAxMi45IDE2IDIwLjUgOC41bDU1LjktNTUuOWM0LjYtNC43IDQuNi0xMi4zLS4xLTE3em0tMjc1LjYgNjUuMWMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwLTMxLjItMzEuMi0zMS4yLTgxLjkgMC0xMTMuMSAzMS4yLTMxLjIgODEuOS0zMS4yIDExMy4xIDAgMzEuMiAzMS4xIDMxLjIgODEuOSAwIDExMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzU3Ryb2tlViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDUuOCAyMzQuMmMtMTkuOS0xOS45LTQ0LjItMzIuOC02OS44LTM4LjZ2LTI1LjRoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwVjgxLjRoMjMuOWMxMC43IDAgMTYtMTIuOSA4LjUtMjAuNUwxNTIuNSA1LjFjLTQuNy00LjctMTIuMy00LjctMTcgMEw3OS42IDYxYy03LjYgNy42LTIuMiAyMC41IDguNSAyMC41SDExMnYyNC43SDkyYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDIwdjI1LjRjLTI1LjYgNS44LTQ5LjkgMTguNy02OS44IDM4LjYtNTYuMiA1Ni4yLTU2LjIgMTQ3LjQgMCAyMDMuNiA1Ni4yIDU2LjIgMTQ3LjQgNTYuMiAyMDMuNiAwIDU2LjMtNTYuMiA1Ni4zLTE0Ny40IDAtMjAzLjZ6bS00NS4yIDE1OC40Yy0zMS4yIDMxLjItODEuOSAzMS4yLTExMy4xIDAtMzEuMi0zMS4yLTMxLjItODEuOSAwLTExMy4xIDMxLjItMzEuMiA4MS45LTMxLjIgMTEzLjEgMCAzMS4yIDMxLjEgMzEuMiA4MS45IDAgMTEzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnNTdHJva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDY0aC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTE3LjUgMTcuNS0xNC4xLTE0LjFjLTQuNy00LjctMTIuMy00LjctMTcgMEwyMjQuNSAxMzNjLTQuNyA0LjctNC43IDEyLjMgMCAxN2wxNC4xIDE0LjEtMTggMThjLTIyLjItMTQtNDguNS0yMi4xLTc2LjctMjIuMUM2NC41IDE2MCAwIDIyNC41IDAgMzA0czY0LjUgMTQ0IDE0NCAxNDQgMTQ0LTY0LjUgMTQ0LTE0NGMwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDE4LTE4IDE0LjEgMTQuMWM0LjcgNC43IDEyLjMgNC43IDE3IDBsMjguMy0yOC4zYzQuNy00LjcgNC43LTEyLjMgMC0xN0wzMjkuMiAxNjRsMTcuNS0xNy41IDE2LjkgMTYuOWM3LjYgNy42IDIwLjUgMi4yIDIwLjUtOC41Vjc2Yy0uMS02LjYtNS41LTEyLTEyLjEtMTJ6TTE0NCAzODRjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3MiA2NGgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS04MC43IDgwLjdjLTIyLjItMTQtNDguNS0yMi4xLTc2LjctMjIuMUM2NC41IDE2MCAwIDIyNC41IDAgMzA0czY0LjUgMTQ0IDE0NCAxNDQgMTQ0LTY0LjUgMTQ0LTE0NGMwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDgwLjctODAuNyAxNi45IDE2LjljNy42IDcuNiAyMC41IDIuMiAyMC41LTguNVY3NmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCAzODRjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC42NyA2NGMtNDQyLjYgMC0zNTcuNTcgMzg0LTE1OC40NiAzODQgMzkuOSAwIDc3LjQ3LTIwLjY5IDEwMS40Mi01NS44NmwyNS43My0zNy43OWMxNS42Ni0yMi45OSA0Ni45Ny0yMi45OSA2Mi42MyAwbDI1LjczIDM3Ljc5QzQwMS42NiA0MjcuMzEgNDM5LjIzIDQ0OCA0NzkuMTMgNDQ4YzE4OS44NiAwIDI5MC42My0zODQtMTU4LjQ2LTM4NHpNMTg0IDMwOC4zNmMtNDEuMDYgMC02Ny43Ni0yNS42Ni04MC4wOC00MS4wNS01LjIzLTYuNTMtNS4yMy0xNi4wOSAwLTIyLjYzIDEyLjMyLTE1LjQgMzkuMDEtNDEuMDUgODAuMDgtNDEuMDVzNjcuNzYgMjUuNjYgODAuMDggNDEuMDVjNS4yMyA2LjUzIDUuMjMgMTYuMDkgMCAyMi42My0xMi4zMiAxNS40LTM5LjAyIDQxLjA1LTgwLjA4IDQxLjA1em0yNzIgMGMtNDEuMDYgMC02Ny43Ni0yNS42Ni04MC4wOC00MS4wNS01LjIzLTYuNTMtNS4yMy0xNi4wOSAwLTIyLjYzIDEyLjMyLTE1LjQgMzkuMDEtNDEuMDUgODAuMDgtNDEuMDVzNjcuNzYgMjUuNjYgODAuMDggNDEuMDVjNS4yMyA2LjUzIDUuMjMgMTYuMDkgMCAyMi42My0xMi4zMiAxNS40LTM5LjAyIDQxLjA1LTgwLjA4IDQxLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjMuNzUgMTMwLjc1TDE1NC42MiAxNS41NEEzMS45OTcgMzEuOTk3IDAgMCAwIDEyNy4xOCAwSDE2LjAzQzMuMDggMC00LjUgMTQuNTcgMi45MiAyNS4xOGwxMTEuMjcgMTU4Ljk2YzI5LjcyLTI3Ljc3IDY3LjUyLTQ2LjgzIDEwOS41Ni01My4zOXpNNDk1Ljk3IDBIMzg0LjgyYy0xMS4yNCAwLTIxLjY2IDUuOS0yNy40NCAxNS41NGwtNjkuMTMgMTE1LjIxYzQyLjA0IDYuNTYgNzkuODQgMjUuNjIgMTA5LjU2IDUzLjM4TDUwOS4wOCAyNS4xOEM1MTYuNSAxNC41NyA1MDguOTIgMCA0OTUuOTcgMHpNMjU2IDE2MGMtOTcuMiAwLTE3NiA3OC44LTE3NiAxNzZzNzguOCAxNzYgMTc2IDE3NiAxNzYtNzguOCAxNzYtMTc2LTc4LjgtMTc2LTE3Ni0xNzZ6bTkyLjUyIDE1Ny4yNmwtMzcuOTMgMzYuOTYgOC45NyA1Mi4yMmMxLjYgOS4zNi04LjI2IDE2LjUxLTE2LjY1IDEyLjA5TDI1NiAzOTMuODhsLTQ2LjkgMjQuNjVjLTguNCA0LjQ1LTE4LjI1LTIuNzQtMTYuNjUtMTIuMDlsOC45Ny01Mi4yMi0zNy45My0zNi45NmMtNi44Mi02LjY0LTMuMDUtMTguMjMgNi4zNS0xOS41OWw1Mi40My03LjY0IDIzLjQzLTQ3LjUyYzIuMTEtNC4yOCA2LjE5LTYuMzkgMTAuMjgtNi4zOSA0LjExIDAgOC4yMiAyLjE0IDEwLjMzIDYuMzlsMjMuNDMgNDcuNTIgNTIuNDMgNy42NGM5LjQgMS4zNiAxMy4xNyAxMi45NSA2LjM1IDE5LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWRraXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNDgwaDMyMFYxMjhoLTMyVjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhIMTc2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djQ4SDk2djM1MnptOTYtMzg0aDEyOHYzMkgxOTJWOTZ6bTMyMCA4MHYyNTZjMCAyNi41MS0yMS40OSA0OC00OCA0OGgtMTZWMTI4aDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh6TTY0IDQ4MEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxNzZjMC0yNi41MSAyMS40OS00OCA0OC00OGgxNnYzNTJ6bTI4OC0yMDh2MzJjMCA4LjgzNy03LjE2MyAxNi0xNiAxNmgtNDh2NDhjMCA4LjgzNy03LjE2MyAxNi0xNiAxNmgtMzJjLTguODM3IDAtMTYtNy4xNjMtMTYtMTZ2LTQ4aC00OGMtOC44MzcgMC0xNi03LjE2My0xNi0xNnYtMzJjMC04LjgzNyA3LjE2My0xNiAxNi0xNmg0OHYtNDhjMC04LjgzNyA3LjE2My0xNiAxNi0xNmgzMmM4LjgzNyAwIDE2IDcuMTYzIDE2IDE2djQ4aDQ4YzguODM3IDAgMTYgNy4xNjMgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1laEJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS04MCAyMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xNjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1laFJvbGxpbmdFeWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTg4IDIyNGMwLTI0LjMgMTMuNy00NS4yIDMzLjYtNTYtLjcgMi42LTEuNiA1LjItMS42IDggMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTIuOC0uOS01LjQtMS42LTggMTkuOSAxMC44IDMzLjYgMzEuNyAzMy42IDU2IDAgMzUuMy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0em0yMjQgMTc2SDE4NGMtMjEuMiAwLTIxLjItMzIgMC0zMmgxMjhjMjEuMiAwIDIxLjIgMzIgMCAzMnptMzItMTEyYy0zNS4zIDAtNjQtMjguNy02NC02NCAwLTI0LjMgMTMuNy00NS4yIDMzLjYtNTYtLjcgMi42LTEuNiA1LjItMS42IDggMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTIuOC0uOS01LjQtMS42LTggMTkuOSAxMC44IDMzLjYgMzEuNyAzMy42IDU2IDAgMzUuMy0yOC43IDY0LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptLTgwIDE2OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bTE3NiAxOTJIMTUyYy0yMS4yIDAtMjEuMi0zMiAwLTMyaDE5MmMyMS4yIDAgMjEuMiAzMiAwIDMyem0tMTYtMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVtb3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAxMzAuOTRWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzQuOTRjMTguNiA2LjYxIDMyIDI0LjE5IDMyIDQ1LjA2cy0xMy40IDM4LjQ1LTMyIDQ1LjA2VjMyMGg2NDB2LTk4Ljk0Yy0xOC42LTYuNjEtMzItMjQuMTktMzItNDUuMDZzMTMuNC0zOC40NSAzMi00NS4wNnpNMjI0IDI1NmgtNjRWMTI4aDY0djEyOHptMTI4IDBoLTY0VjEyOGg2NHYxMjh6bTEyOCAwaC02NFYxMjhoNjR2MTI4ek0wIDQ0OGg2NHYtMjYuNjdjMC04Ljg0IDcuMTYtMTYgMTYtMTZzMTYgNy4xNiAxNiAxNlY0NDhoMTI4di0yNi42N2MwLTguODQgNy4xNi0xNiAxNi0xNnMxNiA3LjE2IDE2IDE2VjQ0OGgxMjh2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDEyOHYtMjYuNjdjMC04Ljg0IDcuMTYtMTYgMTYtMTZzMTYgNy4xNiAxNiAxNlY0NDhoNjR2LTk2SDB2OTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lbm9yYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDEyOGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NGg2NFYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTk2IDBoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDRoNjRWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2em0xOTIgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NGg2NFYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTk2IDBoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDRoNjRWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2em04MC0zMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzYwOCAwIDYwOCAwcy0zMiA0Ni4zMy0zMiA2NCAxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlM1MTIgMCA1MTIgMHMtMzIgNDYuMzMtMzIgNjQgMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTNDE2IDAgNDE2IDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzMyMCAwIDMyMCAwcy0zMiA0Ni4zMy0zMiA2NCAxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlMyMjQgMCAyMjQgMHMtMzIgNDYuMzMtMzIgNjQgMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTMTI4IDAgMTI4IDAgOTYgNDYuMzMgOTYgNjRzMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTMzIgMCAzMiAwIDAgNDYuMzMgMCA2NHMxNC4zMyAzMiAzMiAzMnptNTQ0IDE5MmMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDM1MlYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNzZIOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDRjMCA1My4wMiA0Mi45OCA5NiA5NiA5NmgxOTJ2NjRIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2SDM1MnYtNjRoMTkyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZXJjdXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAyMDhjMC00NC4yLTE5LjktODMuNy01MS4yLTExMC4xIDIuNS0xLjggNC45LTMuOCA3LjItNS44IDI0LjctMjEuMiAzOS44LTQ4LjggNDMuMi03OC44LjktNy4xLTQuNy0xMy4zLTExLjktMTMuM2gtNDAuNUMyMjkgMCAyMjQuMSA0LjEgMjIzIDkuOGMtMi40IDEyLjUtOS42IDI0LjMtMjAuNyAzMy44QzE4NyA1Ni44IDE2Ni4zIDY0IDE0NCA2NHMtNDMtNy4yLTU4LjQtMjAuNEM3NC41IDM0LjEgNjcuNCAyMi4zIDY0LjkgOS44IDYzLjggNC4xIDU4LjkgMCA1My4yIDBIMTIuN0M1LjUgMC0uMSA2LjIuOCAxMy4zIDQuMiA0My40IDE5LjIgNzEgNDQgOTIuMmMyLjMgMiA0LjcgMy45IDcuMiA1LjhDMTkuOSAxMjQuMyAwIDE2My44IDAgMjA4YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFY0MDBINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0yMjQgMGMwLTQ0LjEgMzUuOS04MCA4MC04MHM4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWV0ZW9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMS4zMjgsMjAuODAyN2MtMTEuNjA3NTksMzguNzAyNjQtMzQuMzA3MjQsMTExLjcwMTczLTYxLjMwMzExLDE4Ny43MDA3Nyw2Ljk5ODkzLDIuMDkzNzIsMTMuNDA0Miw0LDE4LjYwNjUzLDUuNTkzNjhhMTYuMDYxNTgsMTYuMDYxNTgsMCwwLDEsOS40OTg1NCwyMi45MDZjLTIyLjEwNiw0Mi4yOTYzNS04Mi42OTA0NywxNTIuNzk1LTE0Mi40NzgxOSwyMTQuNDAzNTYtLjk5OTg0LDEuMDkzNzMtMS45OTk2OSwyLjUtMi45OTk1NCwzLjQ5OTk1QTE5NC44MzA0NiwxOTQuODMwNDYsMCwxLDEsNTcuMDg1LDE3OS40MTAwOWMuOTk5ODUtMSwyLjQwNTg4LTIsMy40OTk0Ny0zLDYxLjU5OTk0LTU5LjkwNTQ5LDE3MS45NzM2Ny0xMjAuNDA0NzMsMjE0LjM3MzQzLTE0Mi40OTgyYTE2LjA1OCwxNi4wNTgsMCwwLDEsMjIuOTAyNzQsOS40OTk4OGMxLjU5MzUxLDUuMDkzNjgsMy40OTk0NywxMS41OTM2LDUuNTkyOSwxOC41OTM1MUMzNzkuMzQ4MTgsMzUuMDA1NjUsNDUyLjQzMDc0LDEyLjMwMjgxLDQ5MS4xMjc5NC43MDkyMUExNi4xODMyNSwxNi4xODMyNSwwLDAsMSw1MTEuMzI4LDIwLjgwMjdaTTMxOS45NTEsMzIwLjAwMjA3QTEyNy45ODA0MSwxMjcuOTgwNDEsMCwxLDAsMTkxLjk3MDYxLDQ0OC4wMDA0NiwxMjcuOTc1NzMsMTI3Ljk3NTczLDAsMCwwLDMxOS45NTEsMzIwLjAwMjA3Wm0tMTI3Ljk4MDQxLTMxLjk5OTZhMzEuOTk1MSwzMS45OTUxLDAsMSwxLTMxLjk5NTEtMzEuOTk5NkEzMS45NTksMzEuOTU5LDAsMCwxLDE5MS45NzA2MSwyODguMDAyNDdabTMxLjk5NTEsNzkuOTk5YTE1Ljk5NzU1LDE1Ljk5NzU1LDAsMSwxLTE1Ljk5NzU1LTE1Ljk5OThBMTYuMDQ5NzUsMTYuMDQ5NzUsMCwwLDEsMjIzLjk2NTcxLDM2OC4wMDE0N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9jaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiA0OHY0MTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEgxNDRjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWNDhjMC0yNi41MSAyMS40OS00OCA0OC00OGgyMjRjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptOTYgNTh2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MlY4OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnptMCA5NnYxMmE2IDYgMCAwIDEtNiA2aC0xOHY2YTYgNiAwIDAgMS02IDZoLTQydi00OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnptMCA5NnYxMmE2IDYgMCAwIDEtNiA2aC0xOHY2YTYgNiAwIDAgMS02IDZoLTQydi00OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnptMCA5NnYxMmE2IDYgMCAwIDEtNiA2aC0xOHY2YTYgNiAwIDAgMS02IDZoLTQydi00OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnpNMzAgMzc2aDQydjQ4SDMwYTYgNiAwIDAgMS02LTZ2LTZINmE2IDYgMCAwIDEtNi02di0xMmE2IDYgMCAwIDEgNi02aDE4di02YTYgNiAwIDAgMSA2LTZ6bTAtOTZoNDJ2NDhIMzBhNiA2IDAgMCAxLTYtNnYtNkg2YTYgNiAwIDAgMS02LTZ2LTEyYTYgNiAwIDAgMSA2LTZoMTh2LTZhNiA2IDAgMCAxIDYtNnptMC05Nmg0MnY0OEgzMGE2IDYgMCAwIDEtNi02di02SDZhNiA2IDAgMCAxLTYtNnYtMTJhNiA2IDAgMCAxIDYtNmgxOHYtNmE2IDYgMCAwIDEgNi02em0wLTk2aDQydjQ4SDMwYTYgNiAwIDAgMS02LTZ2LTZINmE2IDYgMCAwIDEtNi02di0xMmE2IDYgMCAwIDEgNi02aDE4di02YTYgNiAwIDAgMSA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmVBbHRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuODIgNDU4LjFMNDc2LjI2IDMzNi4zM0M0ODguNzQgMzEyLjIxIDQ5NiAyODQuOTggNDk2IDI1NnYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGMwIDE3LjkyLTMuOTYgMzQuOC0xMC43MiA1MC4ybC0yNi41NS0yMC41MmMzLjEtOS40IDUuMjgtMTkuMjIgNS4yOC0yOS42N2gtNDMuNjdsLTQxLjQtMzJINDE2di0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEg0MTZ2LTMyaC04NS4zM2MtNS44OSAwLTEwLjY3LTMuNTgtMTAuNjctOHYtMTZjMC00LjQyIDQuNzgtOCAxMC42Ny04SDQxNmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2cy05NiA0Mi45OC05NiA5NnY0NS4zNkw0NS40NyAzLjM3QzM4LjQ5LTIuMDUgMjguNDMtLjggMjMuMDEgNi4xOEwzLjM3IDMxLjQ1Qy0yLjA1IDM4LjQyLS44IDQ4LjQ3IDYuMTggNTMuOWw1ODguMzYgNDU0LjczYzYuOTggNS40MyAxNy4wMyA0LjE3IDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdjNS40MS02Ljk3IDQuMTYtMTcuMDItMi44Mi0yMi40NXpNNDAwIDQ2NGgtNTZ2LTMzLjc4YzExLjcxLTEuNjIgMjMuMS00LjI4IDMzLjk2LTguMDhsLTUwLjQtMzguOTZjLTYuNzEuNC0xMy40MS44Ny0yMC4zNS4yLTU1Ljg1LTUuNDUtOTguNzQtNDguNjMtMTExLjE4LTEwMS44NUwxNDQgMjQxLjMxdjYuODVjMCA4OS42NCA2My45NyAxNjkuNTUgMTUyIDE4MS42OVY0NjRoLTU2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzNTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAxOTJoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGMwIDc0LjgtNjQuNDkgMTM0LjgyLTE0MC43OSAxMjcuMzhDOTYuNzEgMzc2Ljg5IDQ4IDMxNy4xMSA0OCAyNTAuM1YyMDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djQwLjE2YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0SDk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC01NnYtMzMuNzdDMjg1LjcxIDQxOC40NyAzNTIgMzQ0LjkgMzUyIDI1NnYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTE3NiAzNTJjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEgyNzJ2LTMyaC04NS4zM2MtNS44OSAwLTEwLjY3LTMuNTgtMTAuNjctOHYtMTZjMC00LjQyIDQuNzgtOCAxMC42Ny04SDI3MnYtMzJoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThIMjcyYzAtNTMuMDItNDIuOTgtOTYtOTYtOTZTODAgNDIuOTggODAgOTZ2MTYwYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuODIgNDU4LjFsLTE1Ny44LTEyMS45NkM0ODguNjEgMzEyLjEzIDQ5NiAyODUuMDEgNDk2IDI1NnYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGMwIDE3LjkyLTMuOTYgMzQuOC0xMC43MiA1MC4ybC0yNi41NS0yMC41MmMzLjEtOS40IDUuMjgtMTkuMjIgNS4yOC0yOS42N1Y5NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2cy05NiA0Mi45OC05NiA5NnY0NS4zNkw0NS40NyAzLjM3QzM4LjQ5LTIuMDUgMjguNDMtLjggMjMuMDEgNi4xOEwzLjM3IDMxLjQ1Qy0yLjA1IDM4LjQyLS44IDQ4LjQ3IDYuMTggNTMuOWw1ODguMzYgNDU0LjczYzYuOTggNS40MyAxNy4wMyA0LjE3IDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdjNS40MS02Ljk3IDQuMTYtMTcuMDItMi44Mi0yMi40NXpNNDAwIDQ2NGgtNTZ2LTMzLjc3YzExLjY2LTEuNiAyMi44NS00LjU0IDMzLjY3LTguMzFsLTUwLjExLTM4LjczYy02LjcxLjQtMTMuNDEuODctMjAuMzUuMi01NS44NS01LjQ1LTk4Ljc0LTQ4LjYzLTExMS4xOC0xMDEuODVMMTQ0IDI0MS4zMXY2Ljg1YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0aC01NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9waG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzUyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMzUyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWOTZjMC01My4wMi00Mi45OC05Ni05Ni05NlM4MCA0Mi45OCA4MCA5NnYxNjBjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnptMTYwLTE2MGgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4YzAgNzQuOC02NC40OSAxMzQuODItMTQwLjc5IDEyNy4zOEM5Ni43MSAzNzYuODkgNDggMzE3LjExIDQ4IDI1MC4zVjIwOGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDAuMTZjMCA4OS42NCA2My45NyAxNjkuNTUgMTUyIDE4MS42OVY0NjRIOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTU2di0zMy43N0MyODUuNzEgNDE4LjQ3IDM1MiAzNDQuOSAzNTIgMjU2di00OGMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9zY29wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMzIwaDEydjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmgxMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTY0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYyMjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnptMzA0IDEyOGgtMS4yOUM0OTMuMjQgNDEzLjk5IDUxMiAzNjkuMiA1MTIgMzIwYzAtMTA1Ljg4LTg2LjEyLTE5Mi0xOTItMTkydjY0YzcwLjU4IDAgMTI4IDU3LjQyIDEyOCAxMjhzLTU3LjQyIDEyOC0xMjggMTI4SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4IDAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tMzYwLTMyaDIwOGM0LjQyIDAgOC0zLjU4IDgtOHYtMTZjMC00LjQyLTMuNTgtOC04LThIMTA0Yy00LjQyIDAtOCAzLjU4LTggOHYxNmMwIDQuNDIgMy41OCA4IDggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWludXNDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHpNMTI0IDI5NmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoMjY0YzYuNiAwIDEyIDUuNCAxMiAxMnY1NmMwIDYuNi01LjQgMTItMTIgMTJIMTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaW51c1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek05MiAyOTZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDI2NGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTZjMCA2LjYtNS40IDEyLTEyIDEySDkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMjA4SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzg0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pdHRlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggNDE2SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyMGM4LjggMCAxNi03LjIgMTYtMTZ2LTY0YzAtOC44LTcuMi0xNi0xNi0xNnptNTctMjA5LjFjLTI3LjItMjIuNi02Ny41LTE5LTkwLjEgOC4ybC0yMC45IDI1LTI5LjYtMTI4LjRjLTE4LTc3LjUtOTUuNC0xMjUuOS0xNzIuOC0xMDhDMzQuMiAyMS42LTE0LjIgOTguOSAzLjcgMTc2LjRMNTEuNiAzODRoMzA5bDcyLjUtODdjMjIuNy0yNy4yIDE5LTY3LjUtOC4xLTkwLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vYmlsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDIyNGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTYwIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTExMi0xMDhjMCA2LjYtNS40IDEyLTEyIDEySDYwYy02LjYgMC0xMi01LjQtMTItMTJWNjBjMC02LjYgNS40LTEyIDEyLTEyaDIwMGM2LjYgMCAxMiA1LjQgMTIgMTJ2MzEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2JpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyMjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2MCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25leUJpbGxBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDI4OGgtMTZ2LTg4YzAtNC40Mi0zLjU4LTgtOC04aC0xMy41OGMtNC43NCAwLTkuMzcgMS40LTEzLjMxIDQuMDNsLTE1LjMzIDEwLjIyYTcuOTk0IDcuOTk0IDAgMCAwLTIuMjIgMTEuMDlsOC44OCAxMy4zMWE3Ljk5NCA3Ljk5NCAwIDAgMCAxMS4wOSAyLjIybC40Ny0uMzFWMjg4aC0xNmMtNC40MiAwLTggMy41OC04IDh2MTZjMCA0LjQyIDMuNTggOCA4IDhoNjRjNC40MiAwIDgtMy41OCA4LTh2LTE2YzAtNC40Mi0zLjU4LTgtOC04ek02MDggNjRIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djMyMGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDU3NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTQ4IDQwMHYtNjRjMzUuMzUgMCA2NCAyOC42NSA2NCA2NEg0OHptMC0yMjR2LTY0aDY0YzAgMzUuMzUtMjguNjUgNjQtNjQgNjR6bTI3MiAxOTJjLTUzLjAyIDAtOTYtNTAuMTUtOTYtMTEyIDAtNjEuODYgNDIuOTgtMTEyIDk2LTExMnM5NiA1MC4xNCA5NiAxMTJjMCA2MS44Ny00MyAxMTItOTYgMTEyem0yNzIgMzJoLTY0YzAtMzUuMzUgMjguNjUtNjQgNjQtNjR2NjR6bTAtMjI0Yy0zNS4zNSAwLTY0LTI4LjY1LTY0LTY0aDY0djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25leUJpbGxXYXZlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyMS4xNiA1NC40NkM1ODIuMzcgMzguMTkgNTQzLjU1IDMyIDUwNC43NSAzMmMtMTIzLjE3LS4wMS0yNDYuMzMgNjIuMzQtMzY5LjUgNjIuMzQtMzAuODkgMC02MS43Ni0zLjkyLTkyLjY1LTEzLjcyLTMuNDctMS4xLTYuOTUtMS42Mi0xMC4zNS0xLjYyQzE1LjA0IDc5IDAgOTIuMzIgMCAxMTAuODF2MzE3LjI2YzAgMTIuNjMgNy4yMyAyNC42IDE4Ljg0IDI5LjQ2QzU3LjYzIDQ3My44MSA5Ni40NSA0ODAgMTM1LjI1IDQ4MGMxMjMuMTcgMCAyNDYuMzQtNjIuMzUgMzY5LjUxLTYyLjM1IDMwLjg5IDAgNjEuNzYgMy45MiA5Mi42NSAxMy43MiAzLjQ3IDEuMSA2Ljk1IDEuNjIgMTAuMzUgMS42MiAxNy4yMSAwIDMyLjI1LTEzLjMyIDMyLjI1LTMxLjgxVjgzLjkzYy0uMDEtMTIuNjQtNy4yNC0yNC42LTE4Ljg1LTI5LjQ3ek0zMjAgMzUyYy00NC4xOSAwLTgwLTQyLjk5LTgwLTk2IDAtNTMuMDIgMzUuODItOTYgODAtOTZzODAgNDIuOTggODAgOTZjMCA1My4wMy0zNS44MyA5Ni04MCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsV2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjEuMTYgNTQuNDZDNTgyLjM3IDM4LjE5IDU0My41NSAzMiA1MDQuNzUgMzJjLTEyMy4xNy0uMDEtMjQ2LjMzIDYyLjM0LTM2OS41IDYyLjM0LTMwLjg5IDAtNjEuNzYtMy45Mi05Mi42NS0xMy43Mi0zLjQ3LTEuMS02Ljk1LTEuNjItMTAuMzUtMS42MkMxNS4wNCA3OSAwIDkyLjMyIDAgMTEwLjgxdjMxNy4yNmMwIDEyLjYzIDcuMjMgMjQuNiAxOC44NCAyOS40NkM1Ny42MyA0NzMuODEgOTYuNDUgNDgwIDEzNS4yNSA0ODBjMTIzLjE3IDAgMjQ2LjM0LTYyLjM1IDM2OS41MS02Mi4zNSAzMC44OSAwIDYxLjc2IDMuOTIgOTIuNjUgMTMuNzIgMy40NyAxLjEgNi45NSAxLjYyIDEwLjM1IDEuNjIgMTcuMjEgMCAzMi4yNS0xMy4zMiAzMi4yNS0zMS44MVY4My45M2MtLjAxLTEyLjY0LTcuMjQtMjQuNi0xOC44NS0yOS40N3pNNDggMTMyLjIyYzIwLjEyIDUuMDQgNDEuMTIgNy41NyA2Mi43MiA4LjkzQzEwNC44NCAxNzAuNTQgNzkgMTkyLjY5IDQ4IDE5Mi42OXYtNjAuNDd6bTAgMjg1di00Ny43OGMzNC4zNyAwIDYyLjE4IDI3LjI3IDYzLjcxIDYxLjQtMjIuNTMtMS44MS00My41OS02LjMxLTYzLjcxLTEzLjYyek0zMjAgMzUyYy00NC4xOSAwLTgwLTQyLjk5LTgwLTk2IDAtNTMuMDIgMzUuODItOTYgODAtOTZzODAgNDIuOTggODAgOTZjMCA1My4wMy0zNS44MyA5Ni04MCA5NnptMjcyIDI3Ljc4Yy0xNy41Mi00LjM5LTM1LjcxLTYuODUtNTQuMzItOC40NCA1Ljg3LTI2LjA4IDI3LjUtNDUuODggNTQuMzItNDkuMjh2NTcuNzJ6bTAtMjM2LjExYy0zMC44OS0zLjkxLTU0Ljg2LTI5LjctNTUuODEtNjEuNTUgMTkuNTQgMi4xNyAzOC4wOSA2LjIzIDU1LjgxIDEyLjY2djQ4Ljg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25leUJpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA4IDY0SDMyQzE0LjMzIDY0IDAgNzguMzMgMCA5NnYzMjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek00OCA0MDB2LTY0YzM1LjM1IDAgNjQgMjguNjUgNjQgNjRINDh6bTAtMjI0di02NGg2NGMwIDM1LjM1LTI4LjY1IDY0LTY0IDY0em0yNzIgMTc2Yy00NC4xOSAwLTgwLTQyLjk5LTgwLTk2IDAtNTMuMDIgMzUuODItOTYgODAtOTZzODAgNDIuOTggODAgOTZjMCA1My4wMy0zNS44MyA5Ni04MCA5NnptMjcyIDQ4aC02NGMwLTM1LjM1IDI4LjY1LTY0IDY0LTY0djY0em0wLTIyNGMtMzUuMzUgMC02NC0yOC42NS02NC02NGg2NHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlDaGVja0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMzJIMzJDMTQuMzMgMzIgMCA0Ni4zMyAwIDY0djM4NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDU3NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTE3NiAzMjcuODhWMzQ0YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTE2LjI5Yy0xMS4yOS0uNTgtMjIuMjctNC41Mi0zMS4zNy0xMS4zNS0zLjktMi45My00LjEtOC43Ny0uNTctMTIuMTRsMTEuNzUtMTEuMjFjMi43Ny0yLjY0IDYuODktMi43NiAxMC4xMy0uNzMgMy44NyAyLjQyIDguMjYgMy43MiAxMi44MiAzLjcyaDI4LjExYzYuNSAwIDExLjgtNS45MiAxMS44LTEzLjE5IDAtNS45NS0zLjYxLTExLjE5LTguNzctMTIuNzNsLTQ1LTEzLjVjLTE4LjU5LTUuNTgtMzEuNTgtMjMuNDItMzEuNTgtNDMuMzkgMC0yNC41MiAxOS4wNS00NC40NCA0Mi42Ny00NS4wN1YxNTJjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTYuMjljMTEuMjkuNTggMjIuMjcgNC41MSAzMS4zNyAxMS4zNSAzLjkgMi45MyA0LjEgOC43Ny41NyAxMi4xNGwtMTEuNzUgMTEuMjFjLTIuNzcgMi42NC02Ljg5IDIuNzYtMTAuMTMuNzMtMy44Ny0yLjQzLTguMjYtMy43Mi0xMi44Mi0zLjcyaC0yOC4xMWMtNi41IDAtMTEuOCA1LjkyLTExLjggMTMuMTkgMCA1Ljk1IDMuNjEgMTEuMTkgOC43NyAxMi43M2w0NSAxMy41YzE4LjU5IDUuNTggMzEuNTggMjMuNDIgMzEuNTggNDMuMzkgMCAyNC41My0xOS4wNSA0NC40NC00Mi42NyA0NS4wN3pNNDE2IDMxMmMwIDQuNDItMy41OCA4LTggOEgyOTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxMTJjNC40MiAwIDggMy41OCA4IDh2MTZ6bTE2MCAwYzAgNC40Mi0zLjU4IDgtOCA4aC04MGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2em0wLTk2YzAgNC40Mi0zLjU4IDgtOCA4SDI5NmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDI3MmM0LjQyIDAgOCAzLjU4IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ0OGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDU3NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjEyOEgwdjMyMHptNDQ4LTIwOGMwLTguODQgNy4xNi0xNiAxNi0xNmg5NmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMmMwIDguODQtNy4xNiAxNi0xNiAxNmgtOTZjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMnptMCAxMjBjMC00LjQyIDMuNTgtOCA4LThoMTEyYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDQ1NmMtNC40MiAwLTgtMy41OC04LTh2LTE2ek02NCAyNjRjMC00LjQyIDMuNTgtOCA4LThoMzA0YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6bTAgOTZjMC00LjQyIDMuNTgtOCA4LThoMTc2YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6TTYyNCAzMkgxNkM3LjE2IDMyIDAgMzkuMTYgMCA0OHY0OGg2NDBWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbnVtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDM1MmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS03OC44Ni0zNDcuMjZhMzEuOTcgMzEuOTcgMCAwIDAtOS4yMS0xOS40NEwyMDMuMzEgNC42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtNzYuNiA3Ni42MWEzMS45NyAzMS45NyAwIDAgMC05LjIxIDE5LjQ0TDY0IDQxNmgyNTZsLTMwLjg2LTMxNS4yNnpNMjQwIDMwNy4yYzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtNzAuNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGg3MC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4My4yMTEgNTEyYzc4Ljk2MiAwIDE1MS4wNzktMzUuOTI1IDE5OC44NTctOTQuNzkyIDcuMDY4LTguNzA4LS42MzktMjEuNDMtMTEuNTYyLTE5LjM1LTEyNC4yMDMgMjMuNjU0LTIzOC4yNjItNzEuNTc2LTIzOC4yNjItMTk2Ljk1NCAwLTcyLjIyMiAzOC42NjItMTM4LjYzNSAxMDEuNDk4LTE3NC4zOTQgOS42ODYtNS41MTIgNy4yNS0yMC4xOTctMy43NTYtMjIuMjNBMjU4LjE1NiAyNTguMTU2IDAgMCAwIDI4My4yMTEgMGMtMTQxLjMwOSAwLTI1NiAxMTQuNTExLTI1NiAyNTYgMCAxNDEuMzA5IDExNC41MTEgMjU2IDI1NiAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vcnRhclBlc3RsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDEuNTQgNjAuOTFjMTcuMjItMTcuMjIgMTIuNTEtNDYuMjUtOS4yNy01Ny4xNGEzNS42OTYgMzUuNjk2IDAgMCAwLTM3LjM3IDMuMzdMMjUxLjA5IDE2MGgxNTEuMzdsOTkuMDgtOTkuMDl6TTQ5NiAxOTJIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzAgODAuOTggNTAuMiAxNTAuMTEgMTIxLjEzIDE3OC4zMi0xMi43NiAxNi44Ny0yMS43MiAzNi44LTI0Ljk1IDU4LjY5LTEuNDYgOS45MiA2LjA0IDE4Ljk4IDE2LjA3IDE4Ljk4aDIyMy41YzEwLjAzIDAgMTcuNTMtOS4wNiAxNi4wNy0xOC45OC0zLjIyLTIxLjg5LTEyLjE4LTQxLjgyLTI0Ljk1LTU4LjY5QzQyOS44IDQwNi4xMSA0ODAgMzM2Ljk4IDQ4MCAyNTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3NxdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0ODBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjE2MEgwdjMyMHptNTc5LjE2LTE5MmMxNy44Ni0xNy4zOSAyOC44NC0zNy4zNCAyOC44NC01OC45MSAwLTUyLjg2LTQxLjc5LTkzLjc5LTg3LjkyLTEyMi45LTQxLjk0LTI2LjQ3LTgwLjYzLTU3Ljc3LTExMS45Ni05Ni4yMkw0MDAgMGwtOC4xMiA5Ljk3Yy0zMS4zMyAzOC40NS03MC4wMSA2OS43Ni0xMTEuOTYgOTYuMjJDMjMzLjc5IDEzNS4zIDE5MiAxNzYuMjMgMTkyIDIyOS4wOWMwIDIxLjU3IDEwLjk4IDQxLjUyIDI4Ljg0IDU4LjkxaDM1OC4zMnpNNjA4IDMyMEgxOTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJ2LTY0YzAtMTcuNjcgMTQuMzMtMzIgMzItMzJzMzIgMTQuMzMgMzIgMzJ2NjRoNjR2LTcyYzAtNDggNDgtNzIgNDgtNzJzNDggMjQgNDggNzJ2NzJoNjR2LTY0YzAtMTcuNjcgMTQuMzMtMzIgMzItMzJzMzIgMTQuMzMgMzIgMzJ2NjRoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzNTJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNNjQgMFMwIDMyIDAgOTZ2MzJoMTI4Vjk2YzAtNjQtNjQtOTYtNjQtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vdG9yY3ljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyLjkgMTkyYy0xNC45LS4xLTI5LjEgMi4zLTQyLjQgNi45TDQzNy42IDE0NEg1MjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWODhjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTQ1LjNjLTYuOCAwLTEzLjMgMi45LTE3LjggNy45bC0zNy41IDQxLjctMjIuOC0zOEMzOTIuMiA2OC40IDM4NC40IDY0IDM3NiA2NGgtODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoNjYuNGwxOS4yIDMySDIyNy45Yy0xNy43LTIzLjEtNDQuOS00MC05OS45LTQwSDcyLjVDNTkgMTA0IDQ3LjcgMTE1IDQ4IDEyOC41Yy4yIDEzIDEwLjkgMjMuNSAyNCAyMy41aDU2YzI0LjUgMCAzOC43IDEwLjkgNDcuOCAyNC44bC0xMS4zIDIwLjVjLTEzLTMuOS0yNi45LTUuNy00MS4zLTUuMkM1NS45IDE5NC41IDEuNiAyNDkuNiAwIDMxN2MtMS42IDcyLjEgNTYuMyAxMzEgMTI4IDEzMSA1OS42IDAgMTA5LjctNDAuOCAxMjQtOTZoODQuMmMxMy43IDAgMjQuNi0xMS40IDI0LTI1LjEtMi4xLTQ3LjEgMTcuNS05My43IDU2LjItMTI1bDEyLjUgMjAuOGMtMjcuNiAyMy43LTQ1LjEgNTguOS00NC44IDk4LjIuNSA2OS42IDU3LjIgMTI2LjUgMTI2LjggMTI3LjEgNzEuNi43IDEyOS44LTU3LjUgMTI5LjItMTI5LjEtLjctNjkuNi01Ny42LTEyNi40LTEyNy4yLTEyNi45ek0xMjggNDAwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwYzQuMiAwIDguNC4zIDEyLjUgMUw5OSAzMTYuNGMtOC44IDE2IDIuOCAzNS42IDIxIDM1LjZoODEuM2MtMTIuNCAyOC4yLTQwLjYgNDgtNzMuMyA0OHptNDYzLjktNzUuNmMtMi4yIDQwLjYtMzUgNzMuNC03NS41IDc1LjUtNDYuMSAyLjUtODQuNC0zNC4zLTg0LjQtNzkuOSAwLTIxLjQgOC40LTQwLjggMjIuMS01NS4xbDQ5LjQgODIuNGM0LjUgNy42IDE0LjQgMTAgMjIgNS41bDEzLjctOC4yYzcuNi00LjUgMTAtMTQuNCA1LjUtMjJsLTQ4LjYtODAuOWM1LjItMS4xIDEwLjUtMS42IDE1LjktMS42IDQ1LjYtLjEgODIuMyAzOC4yIDc5LjkgODQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91bnRhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM0LjkyIDQ2Mi43bC0yODgtNDQ4QzM0MS4wMyA1LjU0IDMzMC44OSAwIDMyMCAwcy0yMS4wMyA1LjU0LTI2LjkyIDE0LjdsLTI4OCA0NDhhMzIuMDAxIDMyLjAwMSAwIDAgMC0xLjE3IDMyLjY0QTMyLjAwNCAzMi4wMDQgMCAwIDAgMzIgNTEyaDU3NmMxMS43MSAwIDIyLjQ4LTYuMzkgMjguMDktMTYuNjdhMzEuOTgzIDMxLjk4MyAwIDAgMC0xLjE3LTMyLjYzek0zMjAgOTEuMThMNDA1LjM5IDIyNEgzMjBsLTY0IDY0LTM4LjA2LTM4LjA2TDMyMCA5MS4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91c2VQb2ludGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMi4xODkgMzI5LjEyNkgxOTYuMTA1bDU1LjgzMSAxMzUuOTkzYzMuODg5IDkuNDI4LS41NTUgMTkuOTk5LTkuNDQ0IDIzLjk5OWwtNDkuMTY1IDIxLjQyN2MtOS4xNjUgNC0xOS40NDMtLjU3MS0yMy4zMzItOS43MTRsLTUzLjA1My0xMjkuMTM2LTg2LjY2NCA4OS4xMzhDMTguNzI5IDQ3Mi43MSAwIDQ2My41NTQgMCA0NDcuOTc3VjE4LjI5OUMwIDEuODk5IDE5LjkyMS02LjA5NiAzMC4yNzcgNS40NDNsMjg0LjQxMiAyOTIuNTQyYzExLjQ3MiAxMS4xNzkgMy4wMDcgMzEuMTQxLTEyLjUgMzEuMTQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDM1MmExNjAgMTYwIDAgMCAwIDE2MCAxNjBoNjRhMTYwIDE2MCAwIDAgMCAxNjAtMTYwVjIyNEgwek0xNzYgMGgtMTZBMTYwIDE2MCAwIDAgMCAwIDE2MHYzMmgxNzZ6bTQ4IDBoLTE2djE5MmgxNzZ2LTMyQTE2MCAxNjAgMCAwIDAgMjI0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU11Z0hvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjcuMSAxNDYuNWMxLjMgNy43IDggMTMuNSAxNiAxMy41aDE2LjVjOS44IDAgMTcuNi04LjUgMTYuMy0xOC0zLjgtMjguMi0xNi40LTU0LjItMzYuNi03NC43LTE0LjQtMTQuNy0yMy42LTMzLjMtMjYuNC01My41QzExMS44IDUuOSAxMDUgMCA5Ni44IDBIODAuNEM3MC42IDAgNjMgOC41IDY0LjEgMThjMy45IDMxLjkgMTggNjEuMyA0MC42IDg0LjQgMTIgMTIuMiAxOS43IDI3LjUgMjIuNCA0NC4xem0xMTIgMGMxLjMgNy43IDggMTMuNSAxNiAxMy41aDE2LjVjOS44IDAgMTcuNi04LjUgMTYuMy0xOC0zLjgtMjguMi0xNi40LTU0LjItMzYuNi03NC43LTE0LjQtMTQuNy0yMy42LTMzLjMtMjYuNC01My41QzIyMy44IDUuOSAyMTcgMCAyMDguOCAwaC0xNi40Yy05LjggMC0xNy41IDguNS0xNi4zIDE4IDMuOSAzMS45IDE4IDYxLjMgNDAuNiA4NC40IDEyIDEyLjIgMTkuNyAyNy41IDIyLjQgNDQuMXpNNDAwIDE5MkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTkyYzAgNTMgNDMgOTYgOTYgOTZoMTkyYzUzIDAgOTYtNDMgOTYtOTZoMTZjNjEuOCAwIDExMi01MC4yIDExMi0xMTJzLTUwLjItMTEyLTExMi0xMTJ6bTAgMTYwaC0xNnYtOTZoMTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MC4zOCAxLjUxTDE1MC40MSA5NkEzMiAzMiAwIDAgMCAxMjggMTI2LjUxdjI2MS40MUExMzkgMTM5IDAgMCAwIDk2IDM4NGMtNTMgMC05NiAyOC42Ni05NiA2NHM0MyA2NCA5NiA2NCA5Ni0yOC42NiA5Ni02NFYyMTQuMzJsMjU2LTc1djE4NC42MWExMzguNCAxMzguNCAwIDAgMC0zMi0zLjkzYy01MyAwLTk2IDI4LjY2LTk2IDY0czQzIDY0IDk2IDY0IDk2LTI4LjY1IDk2LTY0VjMyYTMyIDMyIDAgMCAwLTQxLjYyLTMwLjQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZXR3b3JrV2lyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDI2NHYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMzQ0di00MGg3MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMjI0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDcydjQwSDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxMDR2NDBINjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTYwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTU2di00MGgzMDR2NDBoLTU2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE2MGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01NnYtNDBoMTA0YzguODQgMCAxNi03LjE2IDE2LTE2ek0yNTYgMTI4VjY0aDEyOHY2NEgyNTZ6bS02NCAzMjBIOTZ2LTY0aDk2djY0em0zNTIgMGgtOTZ2LTY0aDk2djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZXV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE3NmMwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NFMwIDk2LjUgMCAxNzZjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQ2OGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyVjMxNi40YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0xNDQgODBjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZXdzcGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTUyIDY0SDg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2OEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djI3MmMwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZoNDcyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODhjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek01NiA0MDBhOCA4IDAgMCAxLTgtOFYxNDRoMTZ2MjQ4YTggOCAwIDAgMS04IDh6bTIzNi0xNkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTIwOCAwSDM0OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptLTIwOC05NkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTIwOCAwSDM0OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptMC05NkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMzYwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTm90RXF1YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC0yMy44OGw1MS44Ny02Ni44MWM1LjM3LTcuMDIgNC4wNC0xNy4wNi0yLjk3LTIyLjQzTDQxNS42MSAzLjNjLTcuMDItNS4zOC0xNy4wNi00LjA0LTIyLjQ0IDIuOTdMMzExLjA5IDExMkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDIwNC41NmwtNzQuNTMgOTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NS40OWwtNTEuODcgNjYuODFjLTUuMzcgNy4wMS00LjA0IDE3LjA1IDIuOTcgMjIuNDNMNjQgNTA4LjdjNy4wMiA1LjM4IDE3LjA2IDQuMDQgMjIuNDMtMi45N0wxNjguNTIgNDAwSDQxNmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDI0My4wNWw3NC41My05Nkg0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vdGVzTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xOTIgNDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em05NiAzMDRjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4em0wLTE5MmMwIDQuNC0zLjYgOC04IDhIMTA0Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNzZjNC40IDAgOCAzLjYgOCA4djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPYmplY3RHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMTI4Vjk2aDIwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjBINjRWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMkM1LjM3MyAzMiAwIDM3LjM3MyAwIDQ0djQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjB2MzIwSDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMjBoMzg0djIwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjBWMTI4ek05NiAyNzZWMTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTY4YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTM2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMTA4Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0zMjAgOTZjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgyMzZjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTUyaDcyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtNzJoODRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYxMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9iamVjdFVuZ3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzIwdjI2YTYgNiAwIDAgMS02IDZINmE2IDYgMCAwIDEtNi02di01MmE2IDYgMCAwIDEgNi02aDI2Vjk2SDZhNiA2IDAgMCAxLTYtNlYzOGE2IDYgMCAwIDEgNi02aDUyYTYgNiAwIDAgMSA2IDZ2MjZoMjg4VjM4YTYgNiAwIDAgMSA2LTZoNTJhNiA2IDAgMCAxIDYgNnY1MmE2IDYgMCAwIDEtNiA2aC0yNnYxOTJoMjZhNiA2IDAgMCAxIDYgNnY1MmE2IDYgMCAwIDEtNiA2aC01MmE2IDYgMCAwIDEtNi02di0yNkg2NHptNDgwLTY0di0zMmgyNmE2IDYgMCAwIDAgNi02di01MmE2IDYgMCAwIDAtNi02aC01MmE2IDYgMCAwIDAtNiA2djI2SDQwOHY3Mmg4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY2NGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTY0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LThIMTkydjcyaC0yNmE2IDYgMCAwIDAtNiA2djUyYTYgNiAwIDAgMCA2IDZoNTJhNiA2IDAgMCAwIDYtNnYtMjZoMjg4djI2YTYgNiAwIDAgMCA2IDZoNTJhNiA2IDAgMCAwIDYtNnYtNTJhNiA2IDAgMCAwLTYtNmgtMjZWMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPaWxDYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI5LjggMTYwLjMxTDQxNiAyMjRsLTUwLjQ5LTI1LjI0YTY0LjA3IDY0LjA3IDAgMCAwLTI4LjYyLTYuNzZIMjgwdi00OGg1NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTc2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmg1NnY0OGgtNTZMMzcuNzIgMTY2Ljg2YTMxLjkgMzEuOSAwIDAgMC01Ljc5LS41M0MxNC42NyAxNjYuMzMgMCAxODAuMzYgMCAxOTguMzR2OTQuOTVjMCAxNS40NiAxMS4wNiAyOC43MiAyNi4yOCAzMS40OEw5NiAzMzcuNDZWMzg0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMjc0LjYzYzguNTUgMCAxNi43NS0zLjQyIDIyLjc2LTkuNTFsMjEyLjI2LTIxNC43NWMxLjUtMS41IDIuMzQtMy41NCAyLjM0LTUuNjZWMTY4Yy4wMS01LjMxLTUuMDgtOS4xNS0xMC4xOS03LjY5ek05NiAyODguNjdsLTQ4LTguNzN2LTYyLjQzbDQ4IDguNzN2NjIuNDN6bTQ1My4zMyA4NC42NmMwIDIzLjU2IDE5LjEgNDIuNjcgNDIuNjcgNDIuNjdzNDIuNjctMTkuMSA0Mi42Ny00Mi42N1M1OTIgMjg4IDU5MiAyODhzLTQyLjY3IDYxLjc3LTQyLjY3IDg1LjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAuNiA2MC45NGExMC40MyAxMC40MyAwIDAgMCAxNC43NiAwbDIxLjU3LTIxLjU2YTEwLjQzIDEwLjQzIDAgMCAwIDAtMTQuNzZMMzc1LjM1IDMuMDZjLTQuMDgtNC4wNy0xMC42OC00LjA3LTE0Ljc2IDBsLTIxLjU3IDIxLjU2YTEwLjQzIDEwLjQzIDAgMCAwIDAgMTQuNzZsMjEuNTggMjEuNTZ6TTQxMi4xMSAxOTJjLTI2LjY5IDAtNTEuNzcgMTAuMzktNzAuNjQgMjkuMjVsLTI0LjI1IDI0LjI1Yy02Ljc4IDYuNzctMTUuNzggMTAuNS0yNS4zOCAxMC41SDI0NWMxMC41NC0yMi4xIDE0LjE3LTQ4LjExIDcuNzMtNzUuMjMtMTAuMS00Mi41NS00Ni4zNi03Ni4xMS04OS41Mi04My4xOS0zNi4xNS01LjkzLTcwLjkgNS4wNC05Ni4wMSAyOC43OC03LjM2IDYuOTYtNi45NyAxOC44NSAxLjEyIDI0LjkzbDI2LjE1IDE5LjYzYzUuNzIgNC4zIDEzLjY2IDQuMzIgMTkuMi0uMjEgOC40NS02LjkgMTkuMDItMTAuNzEgMzAuMjctMTAuNzEgMjYuNDcgMCA0OC4wMSAyMS41MyA0OC4wMSA0OHMtMjEuNTQgNDgtNDguMDEgNDhoLTMxLjljLTExLjk2IDAtMTkuNzQgMTIuNTgtMTQuMzkgMjMuMjhsMTYuMDkgMzIuMTdjMi41MyA1LjA2IDcuNiA4LjEgMTMuMTcgOC41NWgzMy4wM2MzNS4zIDAgNjQuMDEgMjguNyA2NC4wMSA2NHMtMjguNzEgNjQtNjQuMDEgNjRjLTk2LjAyIDAtMTIyLjM1LTU0LjAyLTE0NS4xNS05Mi4wMy00LjUzLTcuNTUtMTQuNzctMy41OC0xNC43OSA1LjIyQy0uMDkgNDE2IDQxLjEzIDUxMiAxNTkuOTQgNTEyYzcwLjU5IDAgMTI4LjAyLTU3LjQyIDEyOC4wMi0xMjggMC0yMy40Mi02Ljc4LTQ1LjEtMTcuODEtNjRoMjEuNjljMjYuNjkgMCA1MS43Ny0xMC4zOSA3MC42NC0yOS4yNWwyNC4yNS0yNC4yNWM2Ljc4LTYuNzcgMTUuNzgtMTAuNSAyNS4zOC0xMC41IDE5Ljc4IDAgMzUuODggMTYuMDkgMzUuODggMzUuODhWMzkyYzAgMTMuMjMtMTguNzcgMjQtMzIuMDEgMjQtMzkuNCAwLTY2LjY3LTI0LjI0LTgxLjgyLTQyLjg5LTQuNzctNS44Ny0xNC4yLTIuNTQtMTQuMiA1LjAyVjQxNnMwIDY0IDk2LjAyIDY0YzQ4LjU0IDAgOTYuMDItMzkuNDcgOTYuMDItODhWMjkxLjg4YzAtNTUuMDgtNDQuOC05OS44OC05OS44OS05OS44OHptNDIuMTgtMTI0LjczYy04NS41NSA2NS4xMi0xNjkuMDUgMi43NS0xNzIuNTguMDUtNi4wMi00LjYyLTE0LjQ0LTQuMzgtMjAuMTQuNTUtNS43NCA0LjkyLTcuMjcgMTMuMTctMy42NiAxOS44IDEuNjEgMi45NSA0MC4zNyA3Mi4zNCAxMTguOCA3Mi4zNCA3OS45MiAwIDk4Ljc4LTMxLjM2IDEwMS43NS0zNy42NiAxLjAyLTIuMTIgMS41My00LjQ3IDEuNTMtNi44M1Y4MGMwLTEzLjIyLTE1LjE0LTIwLjY5LTI1LjctMTIuNzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU90dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwOCAzMmgtMzJsLTEzLjI1LTEzLjI1QTYzLjk3IDYzLjk3IDAgMCAwIDUxNy40OSAwSDQ5N2MtMTEuMTQgMC0yMi4wOCAyLjkxLTMxLjc1IDguNDNMMzEyIDk2aC01NkMxNDkuOTYgOTYgNjQgMTgxLjk2IDY0IDI4OHYxLjYxYzAgMzIuNzUtMTYgNjIuMTQtMzkuNTYgODQuODktMTguMTkgMTcuNTgtMjguMSA0My42OC0yMy4xOSA3MS44IDYuNzYgMzguOCA0Mi45IDY1LjcgODIuMjggNjUuN0gxOTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnMtMTQuMzMtMzItMzItMzJIODBjLTguODMgMC0xNi03LjE3LTE2LTE2czcuMTctMTYgMTYtMTZoMjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC02NGwxNDkuNDktODAuNUw0NDggNDE2aDgwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC0yOC4yMmwtNTUuMTEtMTEwLjIxTDUyMS4xNCAxOTJINTQ0YzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptLTk2IDE2YzguODQgMCAxNiA3LjE2IDE2IDE2cy03LjE2IDE2LTE2IDE2LTE2LTcuMTYtMTYtMTYgNy4xNi0xNiAxNi0xNnptMzIgOTZoLTM0Ljk2TDQwNy4yIDE5OC44NGwtMTMuNzctMjcuNTVMNTEyIDExMmg3Ny4wNWMtNi42MiAxOC41OC0yNC4yMiAzMi00NS4wNSAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3V0ZGVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAuNjkgMzYzLjI5YzEwIDEwIDI3LjMxIDIuOTMgMjcuMzEtMTEuMzFWMTYwYzAtMTQuMzItMTcuMzMtMjEuMzEtMjcuMzEtMTEuMzFsLTk2IDk2YTE2IDE2IDAgMCAwIDAgMjIuNjJ6TTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDM1MmgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDMzOS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDI4OHptMC0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAxNzIuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDIyNGgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDIxMS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDE2MHpNNDMyIDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNjRINjRhNjQgNjQgMCAwIDAtNjQgNjR2MjU2YTY0IDY0IDAgMCAwIDY0IDY0aDM4NGE2NCA2NCAwIDAgMCA2NC02NFYxMjhhNjQgNjQgMCAwIDAtNjQtNjR6TTE2MCAzNjhIODBhMTYgMTYgMCAwIDEtMTYtMTZ2LTE2YTE2IDE2IDAgMCAxIDE2LTE2aDgwem0xMjgtMTZhMTYgMTYgMCAwIDEtMTYgMTZoLTgwdi00OGg4MGExNiAxNiAwIDAgMSAxNiAxNnptMTYwLTEyOGEzMiAzMiAwIDAgMS0zMiAzMkg5NmEzMiAzMiAwIDAgMS0zMi0zMnYtNjRhMzIgMzIgMCAwIDEgMzItMzJoMzIwYTMyIDMyIDAgMCAxIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWludEJydXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Ny4wMiAzMDkuMzRjLTQwLjEyIDIuNTgtNzYuNTMgMTcuODYtOTcuMTkgNzIuMy0yLjM1IDYuMjEtOCA5Ljk4LTE0LjU5IDkuOTgtMTEuMTEgMC00NS40Ni0yNy42Ny01NS4yNS0zNC4zNUMwIDQzOS42MiAzNy45MyA1MTIgMTI4IDUxMmM3NS44NiAwIDEyOC00My43NyAxMjgtMTIwLjE5IDAtMy4xMS0uNjUtNi4wOC0uOTctOS4xM2wtODguMDEtNzMuMzR6TTQ1Ny44OSAwYy0xNS4xNiAwLTI5LjM3IDYuNzEtNDAuMjEgMTYuNDVDMjEzLjI3IDE5OS4wNSAxOTIgMjAzLjM0IDE5MiAyNTcuMDljMCAxMy43IDMuMjUgMjYuNzYgOC43MyAzOC43bDYzLjgyIDUzLjE4YzcuMjEgMS44IDE0LjY0IDMuMDMgMjIuMzkgMy4wMyA2Mi4xMSAwIDk4LjExLTQ1LjQ3IDIxMS4xNi0yNTYuNDYgNy4zOC0xNC4zNSAxMy45LTI5Ljg1IDEzLjktNDUuOTlDNTEyIDIwLjY0IDQ4NiAwIDQ1Ny44OSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWludFJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMTI4VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzNTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnptMzItNjR2MTI4YzAgMTcuNjctMTQuMzMgMzItMzIgMzJIMjU2Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ2LTMyaDE2MGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2di02NGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWxldHRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNC4zIDVDMTA0LjkgMjQuNCAyNC44IDEwNC4zIDUuMiAyMDMuNGMtMzcgMTg3IDEzMS43IDMyNi40IDI1OC44IDMwNi43IDQxLjItNi40IDYxLjQtNTQuNiA0Mi41LTkxLjctMjMuMS00NS40IDkuOS05OC40IDYwLjktOTguNGg3OS43YzM1LjggMCA2NC44LTI5LjYgNjQuOS02NS4zQzUxMS41IDk3LjEgMzY4LjEtMjYuOSAyMDQuMyA1ek05NiAzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0zMi0xMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMjgtNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMjggNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDI1NmgzNTJjOC44IDAgMTYtNy4yIDE2LTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNkgzODR2MTI4bC02NC0zMi02NCAzMlYwSDE0NGMtOC44IDAtMTYgNy4yLTE2IDE2djIyNGMwIDguOCA3LjIgMTYgMTYgMTZ6bTQ4MCAxMjhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NjRIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjA4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2aC00OHYtNjRoNDh6bS0zMzYgNjRIMTI4di02NGgxNjB2NjR6bTIyNCAwSDM1MnYtNjRoMTYwdjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXBlclBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3NiAzLjJMMTIuNSAyNzAuNmMtMTguMSAxMC40LTE1LjggMzUuNiAyLjIgNDMuMkwxMjEgMzU4LjRsMjg3LjMtMjUzLjJjNS41LTQuOSAxMy4zIDIuNiA4LjYgOC4zTDE3NiA0MDd2ODAuNWMwIDIzLjYgMjguNSAzMi45IDQyLjUgMTUuOEwyODIgNDI2bDEyNC42IDUyLjJjMTQuMiA2IDMwLjQtMi45IDMzLTE4LjJsNzItNDMyQzUxNSA3LjggNDkzLjMtNi44IDQ3NiAzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhcGVyY2xpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00My4yNDYgNDY2LjE0MmMtNTguNDMtNjAuMjg5LTU3LjM0MS0xNTcuNTExIDEuMzg2LTIxNy41ODFMMjU0LjM5MiAzNGM0NC4zMTYtNDUuMzMyIDExNi4zNTEtNDUuMzM2IDE2MC42NzEgMCA0My44OSA0NC44OTQgNDMuOTQzIDExNy4zMjkgMCAxNjIuMjc2TDIzMi4yMTQgMzgzLjEyOGMtMjkuODU1IDMwLjUzNy03OC42MzMgMzAuMTExLTEwNy45ODItLjk5OC0yOC4yNzUtMjkuOTctMjcuMzY4LTc3LjQ3MyAxLjQ1Mi0xMDYuOTUzbDE0My43NDMtMTQ2LjgzNWM2LjE4Mi02LjMxNCAxNi4zMTItNi40MjIgMjIuNjI2LS4yNDFsMjIuODYxIDIyLjM3OWM2LjMxNSA2LjE4MiA2LjQyMiAxNi4zMTIuMjQxIDIyLjYyNkwxNzEuNDI3IDMxOS45MjdjLTQuOTMyIDUuMDQ1LTUuMjM2IDEzLjQyOC0uNjQ4IDE4LjI5MiA0LjM3MiA0LjYzNCAxMS4yNDUgNC43MTEgMTUuNjg4LjE2NWwxODIuODQ5LTE4Ni44NTFjMTkuNjEzLTIwLjA2MiAxOS42MTMtNTIuNzI1LS4wMTEtNzIuNzk4LTE5LjE4OS0xOS42MjctNDkuOTU3LTE5LjYzNy02OS4xNTQgMEw5MC4zOSAyOTMuMjk1Yy0zNC43NjMgMzUuNTYtMzUuMjk5IDkzLjEyLTEuMTkxIDEyOC4zMTMgMzQuMDEgMzUuMDkzIDg4Ljk4NSAzNS4xMzcgMTIzLjA1OC4yODZsMTcyLjA2LTE3NS45OTljNi4xNzctNi4zMTkgMTYuMzA3LTYuNDMzIDIyLjYyNi0uMjU2bDIyLjg3NyAyMi4zNjRjNi4zMTkgNi4xNzcgNi40MzQgMTYuMzA3LjI1NiAyMi42MjZsLTE3Mi4wNiAxNzUuOTk4Yy01OS41NzYgNjAuOTM4LTE1NS45NDMgNjAuMjE2LTIxNC43Ny0uNDg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJhY2h1dGVCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTExLjkgMTc1Yy05LjEtNzUuNi03OC40LTEzMi40LTE1OC4zLTE1OC43QzM5MCA1NS43IDQxNiAxMTYuOSA0MTYgMTkyaDI4LjFMMzI3LjUgMzIxLjVjLTIuNS0uNi00LjgtMS41LTcuNS0xLjVoLTQ4VjE5MmgxMTJDMzg0IDc2LjggMzE1LjEgMCAyNTYgMFMxMjggNzYuOCAxMjggMTkyaDExMnYxMjhoLTQ4Yy0yLjcgMC01IC45LTcuNSAxLjVMNjcuOSAxOTJIOTZjMC03NS4xIDI2LTEzNi4zIDYyLjQtMTc1LjdDNzguNSA0Mi43IDkuMiA5OS41LjEgMTc1Yy0xLjEgOS4xIDYuOCAxNyAxNiAxN2g4LjdsMTM2LjcgMTUxLjljLS43IDIuNi0xLjYgNS4yLTEuNiA4LjF2MTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0yLjktLjktNS40LTEuNi04LjFMNDg3LjEgMTkyaDguN2M5LjMgMCAxNy4yLTcuOCAxNi4xLTE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJhZ3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDQ4djMyYTE2IDE2IDAgMCAxLTE2IDE2aC00OHYzNjhhMTYgMTYgMCAwIDEtMTYgMTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2Vjk2aC0zMnYzNjhhMTYgMTYgMCAwIDEtMTYgMTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2VjM1MmgtMzJhMTYwIDE2MCAwIDAgMSAwLTMyMGgyNDBhMTYgMTYgMCAwIDEgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhcmtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjQwIDMyMGgtNDh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2aC0zMmMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZoOTZjNTIuOSAwIDk2IDQzLjEgOTYgOTZzLTQzLjEgOTYtOTYgOTZ6bTAtMTI4aC00OHY2NGg0OGMxNy42IDAgMzItMTQuNCAzMi0zMnMtMTQuNC0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFzc3BvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI5LjYyIDE3NmgzOS4wOWMxLjQ5LTI3LjAzIDYuNTQtNTEuMzUgMTQuMjEtNzAuNDEtMjcuNzEgMTMuMjQtNDguMDIgMzkuMTktNTMuMyA3MC40MXptMCAzMmM1LjI5IDMxLjIyIDI1LjU5IDU3LjE3IDUzLjMgNzAuNDEtNy42OC0xOS4wNi0xMi43Mi00My4zOC0xNC4yMS03MC40MWgtMzkuMDl6TTIyNCAyODYuNjljNy42OS03LjQ1IDIwLjc3LTM0LjQyIDIzLjQzLTc4LjY5aC00Ni44N2MyLjY3IDQ0LjI2IDE1Ljc1IDcxLjI0IDIzLjQ0IDc4LjY5ek0yMDAuNTcgMTc2aDQ2Ljg3Yy0yLjY2LTQ0LjI2LTE1Ljc0LTcxLjI0LTIzLjQzLTc4LjY5LTcuNyA3LjQ1LTIwLjc4IDM0LjQzLTIzLjQ0IDc4LjY5em02NC41MSAxMDIuNDFjMjcuNzEtMTMuMjQgNDguMDItMzkuMTkgNTMuMy03MC40MWgtMzkuMDljLTEuNDkgMjcuMDMtNi41MyA1MS4zNS0xNC4yMSA3MC40MXpNNDE2IDBINjRDMjguNjUgMCAwIDI4LjY1IDAgNjR2Mzg0YzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzUyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptLTgwIDQxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMjI0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2em0tMTEyLTk2Yy03MC42OSAwLTEyOC01Ny4zMS0xMjgtMTI4UzE1My4zMSA2NCAyMjQgNjRzMTI4IDU3LjMxIDEyOCAxMjgtNTcuMzEgMTI4LTEyOCAxMjh6bTQxLjA4LTIxNC40MWM3LjY4IDE5LjA2IDEyLjcyIDQzLjM4IDE0LjIxIDcwLjQxaDM5LjA5Yy01LjI4LTMxLjIyLTI1LjU5LTU3LjE3LTUzLjMtNzAuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhc3RhZmFyaWFuaXNtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNC41NCAzNDcuNjdjLTMyLjctMTIuNTItNTcuMzYgNC4yNS03NS4zNyAxNi40NS0xNy4wNiAxMS41My0yMy4yNSAxNC40Mi0zMS40MSAxMS4zNi04LjEyLTMuMDktMTAuODMtOS4zOC0xNS44OS0yOS4zOC0zLjMzLTEzLjE1LTcuNDQtMjkuMzItMTcuOTUtNDIuNjUgMi4yNC0yLjkxIDQuNDMtNS43OSA2LjM4LTguNTdDNTAwLjQ3IDMwNC40NSA1MTMuNzEgMzEyIDUzMiAzMTJjMzMuOTUgMCA1MC44Ny0yNS43OCA2Mi4wNi00Mi44MyAxMC41OS0xNi4xNCAxNS0yMS4xNyAyMS45NC0yMS4xNyAxMy4yNSAwIDI0LTEwLjc1IDI0LTI0cy0xMC43NS0yNC0yNC0yNGMtMzMuOTUgMC01MC44NyAyNS43OC02Mi4wNiA0Mi44My0xMC42IDE2LjE0LTE1IDIxLjE3LTIxLjk0IDIxLjE3LTE3LjMxIDAtMzcuNDgtNjEuNDMtOTcuMjYtMTAxLjkxbDE3LjI1LTM0LjVDNDg1LjQzIDEyNS41IDUxMiA5Ny45OCA1MTIgNjRjMC0zNS4zNS0yOC42NS02NC02NC02NHMtNjQgMjguNjUtNjQgNjRjMCAxMy4wMiAzLjk0IDI1LjEgMTAuNjIgMzUuMjFsLTE4LjE1IDM2LjNjLTE2Ljk4LTQuNi0zNS42LTcuNTEtNTYuNDYtNy41MXMtMzkuNDkgMi45MS01Ni40NiA3LjUxbC0xOC4xNS0zNi4zQzI1Mi4wNiA4OS4xIDI1NiA3Ny4wMiAyNTYgNjRjMC0zNS4zNS0yOC42NS02NC02NC02NHMtNjQgMjguNjUtNjQgNjRjMCAzMy45OCAyNi41NiA2MS41IDYwLjAyIDYzLjZsMTcuMjUgMzQuNUMxNDUuNjggMjAyLjQ0IDEyNS4xNSAyNjQgMTA4IDI2NGMtNi45NCAwLTExLjM0LTUuMDMtMjEuOTQtMjEuMTdDNzQuODggMjI1Ljc4IDU3Ljk2IDIwMCAyNCAyMDBjLTEzLjI1IDAtMjQgMTAuNzUtMjQgMjRzMTAuNzUgMjQgMjQgMjRjNi45NCAwIDExLjM0IDUuMDMgMjEuOTQgMjEuMTdDNTcuMTMgMjg2LjIyIDc0LjA1IDMxMiAxMDggMzEyYzE4LjI5IDAgMzEuNTMtNy41NSA0MS43LTE3LjExIDEuOTUgMi43OSA0LjE0IDUuNjYgNi4zOCA4LjU3LTEwLjUxIDEzLjMzLTE0LjYyIDI5LjUtMTcuOTUgNDIuNjUtNS4wNiAyMC03Ljc3IDI2LjI4LTE1Ljg5IDI5LjM4LTguMTEgMy4wNi0xNC4zMy4xNy0zMS40MS0xMS4zNi0xOC4wMy0xMi4yLTQyLjcyLTI4LjkyLTc1LjM3LTE2LjQ1LTEyLjM5IDQuNzItMTguNTkgMTguNTgtMTMuODcgMzAuOTcgNC43MiAxMi40MSAxOC42MSAxOC42MSAzMC45NyAxMy44OCA4LjE2LTMuMDkgMTQuMzQtLjE5IDMxLjM5IDExLjM2IDEzLjU1IDkuMTYgMzAuODMgMjAuODYgNTIuNDIgMjAuODQgNy4xNyAwIDE0LjgzLTEuMjggMjIuOTctNC4zOSAzMi42Ni0xMi40NCAzOS45OC00MS4zMyA0NS4zMy02Mi40NCAyLjIxLTguNzIgMy45OS0xNC40OSA1Ljk1LTE4Ljg3IDE2LjYyIDEzLjYxIDM2Ljk1IDI1Ljg4IDYxLjY0IDM0LjE3LTkuOTYgMzctMzIuMTggOTAuOC02MC4yNiA5MC44LTEzLjI1IDAtMjQgMTAuNzUtMjQgMjRzMTAuNzUgMjQgMjQgMjRjNjYuNzQgMCA5Ny4wNS04OC42MyAxMDcuNDItMTI5LjE0IDYuNjkuNiAxMy40MiAxLjE0IDIwLjU4IDEuMTRzMTMuODktLjU0IDIwLjU4LTEuMTRDMzUwLjk1IDQyMy4zNyAzODEuMjYgNTEyIDQ0OCA1MTJjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHMtMTAuNzUtMjQtMjQtMjRjLTI3Ljk0IDAtNTAuMjEtNTMuODEtNjAuMjItOTAuODEgMjQuNjktOC4yOSA0NS0yMC41NiA2MS42Mi0zNC4xNiAxLjk2IDQuMzggMy43NCAxMC4xNSA1Ljk1IDE4Ljg3IDUuMzQgMjEuMTEgMTIuNjcgNTAgNDUuMzMgNjIuNDQgOC4xNCAzLjExIDE1LjggNC4zOSAyMi45NyA0LjM5IDIxLjU5IDAgMzguODctMTEuNjkgNTIuNDItMjAuODQgMTcuMDUtMTEuNTUgMjMuMjgtMTQuNDUgMzEuMzktMTEuMzYgMTIuMzkgNC43NSAyNi4yNy0xLjQ3IDMwLjk3LTEzLjg4IDQuNzEtMTIuNC0xLjQ5LTI2LjI2LTEzLjg5LTMwLjk4ek00NDggNDhjOC44MiAwIDE2IDcuMTggMTYgMTZzLTcuMTggMTYtMTYgMTYtMTYtNy4xOC0xNi0xNiA3LjE4LTE2IDE2LTE2em0tMjU2IDBjOC44MiAwIDE2IDcuMTggMTYgMTZzLTcuMTggMTYtMTYgMTYtMTYtNy4xOC0xNi0xNiA3LjE4LTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXN0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMTg0YzAtMzAuODc5IDI1LjEyMi01NiA1Ni01NmgxMzZWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04MC42MUMyMDQuMzA2IDEyLjg5IDE4My42MzcgMCAxNjAgMHMtNDQuMzA2IDEyLjg5LTU1LjM5IDMySDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djMzNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTA0VjE4NHptMzItMTQ0YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHMtMTAuNzQ1IDI0LTI0IDI0LTI0LTEwLjc0NS0yNC0yNCAxMC43NDUtMjQgMjQtMjR6bTE4NCAyNDhoMTA0djIwMGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTg0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMTg0YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxMzZ2MTA0YzAgMTMuMiAxMC44IDI0IDI0IDI0em0xMDQtMzguMDU5VjI1NmgtOTZ2LTk2aDYuMDU5YTI0IDI0IDAgMCAxIDE2Ljk3IDcuMDI5bDY1Ljk0MSA2NS45NDFhMjQuMDAyIDI0LjAwMiAwIDAgMSA3LjAzIDE2Ljk3MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF1c2VDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptLTE2IDMyOGMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYwem0xMTIgMGMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNDc5SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY3OWMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDh6bTMwNC00OFY3OWMwLTI2LjUtMjEuNS00OC00OC00OGgtOTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAyMjRjLTc5LjQxIDAtMTkyIDEyMi43Ni0xOTIgMjAwLjI1IDAgMzQuOSAyNi44MSA1NS43NSA3MS43NCA1NS43NSA0OC44NCAwIDgxLjA5LTI1LjA4IDEyMC4yNi0yNS4wOCAzOS41MSAwIDcxLjg1IDI1LjA4IDEyMC4yNiAyNS4wOCA0NC45MyAwIDcxLjc0LTIwLjg1IDcxLjc0LTU1Ljc1QzQ0OCAzNDYuNzYgMzM1LjQxIDIyNCAyNTYgMjI0em0tMTQ3LjI4LTEyLjYxYy0xMC40LTM0LjY1LTQyLjQ0LTU3LjA5LTcxLjU2LTUwLjEzLTI5LjEyIDYuOTYtNDQuMjkgNDAuNjktMzMuODkgNzUuMzQgMTAuNCAzNC42NSA0Mi40NCA1Ny4wOSA3MS41NiA1MC4xMyAyOS4xMi02Ljk2IDQ0LjI5LTQwLjY5IDMzLjg5LTc1LjM0em04NC43Mi0yMC43OGMzMC45NC04LjE0IDQ2LjQyLTQ5Ljk0IDM0LjU4LTkzLjM2cy00Ni41Mi03Mi4wMS03Ny40Ni02My44Ny00Ni40MiA0OS45NC0zNC41OCA5My4zNmMxMS44NCA0My40MiA0Ni41MyA3Mi4wMiA3Ny40NiA2My44N3ptMjgxLjM5LTI5LjM0Yy0yOS4xMi02Ljk2LTYxLjE1IDE1LjQ4LTcxLjU2IDUwLjEzLTEwLjQgMzQuNjUgNC43NyA2OC4zOCAzMy44OSA3NS4zNCAyOS4xMiA2Ljk2IDYxLjE1LTE1LjQ4IDcxLjU2LTUwLjEzIDEwLjQtMzQuNjUtNC43Ny02OC4zOC0zMy44OS03NS4zNHptLTE1Ni4yNyAyOS4zNGMzMC45NCA4LjE0IDY1LjYyLTIwLjQ1IDc3LjQ2LTYzLjg3IDExLjg0LTQzLjQyLTMuNjQtODUuMjEtMzQuNTgtOTMuMzZzLTY1LjYyIDIwLjQ1LTc3LjQ2IDYzLjg3Yy0xMS44NCA0My40MiAzLjY0IDg1LjIyIDM0LjU4IDkzLjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0xODQgMjQ4YzAgMzEuOTMtOC4yIDYxLjk3LTIyLjU3IDg4LjE3TDI4MCAyNDAuNjNWNzQuOTdjODYuMjMgMTUuMjEgMTUyIDkwLjUgMTUyIDE4MS4wM3pNMjE2IDQzNy4wM2MtMzMuODYtNS45Ny02NC40OS0yMS4yLTg5LjI5LTQzLjAyTDIxNiAzMjIuNTd2MTE0LjQ2em02NC0xMTQuNDZMMzY5LjI5IDM5NGMtMjQuOCAyMS44Mi01NS40MyAzNy4wNS04OS4yOSA0My4wMlYzMjIuNTd6bS02NC0yNDcuNnYxNjUuNjZMODYuNTcgMzQ0LjE3QzcyLjIgMzE3Ljk3IDY0IDI4Ny45MyA2NCAyNTZjMC05MC41MyA2NS43Ny0xNjUuODIgMTUyLTE4MS4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ny45NCA3NC4xN2wtNjAuMTEtNjAuMTFjLTE4Ljc1LTE4Ljc1LTQ5LjE2LTE4Ljc1LTY3LjkxIDBsLTU2LjU1IDU2LjU1IDEyOC4wMiAxMjguMDIgNTYuNTUtNTYuNTVjMTguNzUtMTguNzUgMTguNzUtNDkuMTUgMC02Ny45MXptLTI0Ni44LTIwLjUzYy0xNS42Mi0xNS42Mi00MC45NC0xNS42Mi01Ni41NiAwTDc1LjggMTcyLjQzYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYybDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMTAxLjgyLTEwMS44MiAyMi42MyAyMi42Mkw5My45NSAyOTAuMDNBMzI3LjAzOCAzMjcuMDM4IDAgMCAwIC4xNyA0ODUuMTFsLS4wMy4yM2MtMS43IDE1LjI4IDExLjIxIDI4LjIgMjYuNDkgMjYuNTFhMzI3LjAyIDMyNy4wMiAwIDAgMCAxOTUuMzQtOTMuOGwxOTYuNzktMTk2Ljc5LTgyLjc3LTgyLjc3LTg0Ljg1LTg0Ljg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5GYW5jeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03OS4xOCAyODIuOTRhMzIuMDA1IDMyLjAwNSAwIDAgMC0yMC4yNCAyMC4yNEwwIDQ4MGw0LjY5IDQuNjkgOTIuODktOTIuODljLS42Ni0yLjU2LTEuNTctNS4wMy0xLjU3LTcuOCAwLTE3LjY3IDE0LjMzLTMyIDMyLTMyczMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyYy0yLjc3IDAtNS4yNC0uOTEtNy44LTEuNTdsLTkyLjg5IDkyLjg5TDMyIDUxMmwxNzYuODItNTguOTRhMzEuOTgzIDMxLjk4MyAwIDAgMCAyMC4yNC0yMC4yNGwzMy4wNy04NC4wNy05OC44OC05OC44OC04NC4wNyAzMy4wN3pNMzY5LjI1IDI4LjMyTDE4Ni4xNCAyMjcuODFsOTcuODUgOTcuODUgMTk5LjQ5LTE4My4xMUM1NjguNCA2Ny40OCA0NDMuNzMtNTUuOTQgMzY5LjI1IDI4LjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5OaWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM2LjYgMTM4Ljc5YTY0LjAwMyA2NC4wMDMgMCAwIDAtNDMuMzEgNDEuMzVMMCA0NjBsMTQuNjkgMTQuNjlMMTY0LjggMzI0LjU4Yy0yLjk5LTYuMjYtNC44LTEzLjE4LTQuOC0yMC41OCAwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4Yy03LjQgMC0xNC4zMi0xLjgxLTIwLjU4LTQuOEwzNy4zMSA0OTcuMzEgNTIgNTEybDI3OS44Ni05My4yOWE2NC4wMDMgNjQuMDAzIDAgMCAwIDQxLjM1LTQzLjMxTDQxNiAyMjQgMjg4IDk2bC0xNTEuNCA0Mi43OXptMzYxLjM0LTY0LjYybC02MC4xMS02MC4xMWMtMTguNzUtMTguNzUtNDkuMTYtMTguNzUtNjcuOTEgMGwtNTYuNTUgNTYuNTUgMTI4LjAyIDEyOC4wMiA1Ni41NS01Ni41NWMxOC43NS0xOC43NSAxOC43NS00OS4xNSAwLTY3LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQ4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OHpNMjM4LjEgMTc3LjlMMTAyLjQgMzEzLjZsLTYuMyA1Ny4xYy0uOCA3LjYgNS42IDE0LjEgMTMuMyAxMy4zbDU3LjEtNi4zTDMwMi4yIDI0MmMyLjMtMi4zIDIuMy02LjEgMC04LjVMMjQ2LjcgMTc4Yy0yLjUtMi40LTYuMy0yLjQtOC42LS4xek0zNDUgMTY1LjFMMzE0LjkgMTM1Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtMjMuMSAyMy4xYy0yLjMgMi4zLTIuMyA2LjEgMCA4LjVsNTUuNSA1NS41YzIuMyAyLjMgNi4xIDIuMyA4LjUgMEwzNDUgMTk5YzkuMy05LjMgOS4zLTI0LjUgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkwLjc0IDkzLjI0bDEyOC4wMiAxMjguMDItMjc3Ljk5IDI3Ny45OS0xMTQuMTQgMTIuNkMxMS4zNSA1MTMuNTQtMS41NiA1MDAuNjIuMTQgNDg1LjM0bDEyLjctMTE0LjIyIDI3Ny45LTI3Ny44OHptMjA3LjItMTkuMDZsLTYwLjExLTYwLjExYy0xOC43NS0xOC43NS00OS4xNi0xOC43NS02Ny45MSAwbC01Ni41NSA1Ni41NSAxMjguMDIgMTI4LjAyIDU2LjU1LTU2LjU1YzE4Ljc1LTE4Ljc2IDE4Ljc1LTQ5LjE2IDAtNjcuOTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbmNpbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOSAxNDIuMWwtNDYuMSA0Ni4xYy00LjcgNC43LTEyLjMgNC43LTE3IDBsLTExMS0xMTFjLTQuNy00LjctNC43LTEyLjMgMC0xN2w0Ni4xLTQ2LjFjMTguNy0xOC43IDQ5LjEtMTguNyA2Ny45IDBsNjAuMSA2MC4xYzE4LjggMTguNyAxOC44IDQ5LjEgMCA2Ny45ek0yODQuMiA5OS44TDIxLjYgMzYyLjQuNCA0ODMuOWMtMi45IDE2LjQgMTEuNCAzMC42IDI3LjggMjcuOGwxMjEuNS0yMS4zIDI2Mi42LTI2Mi42YzQuNy00LjcgNC43LTEyLjMgMC0xN2wtMTExLTExMWMtNC44LTQuNy0xMi40LTQuNy0xNy4xIDB6TTEyNC4xIDMzOS45Yy01LjUtNS41LTUuNS0xNC4zIDAtMTkuOGwxNTQtMTU0YzUuNS01LjUgMTQuMy01LjUgMTkuOCAwczUuNSAxNC4zIDAgMTkuOGwtMTU0IDE1NGMtNS41IDUuNS0xNC4zIDUuNS0xOS44IDB6TTg4IDQyNGg0OHYzNi4zbC02NC41IDExLjMtMzEuMS0zMS4xTDUxLjcgMzc2SDg4djQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5jaWxSdWxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDkuNDYgMjQ0LjA0bDEzNC41OC0xMzQuNTYtNDQuMTItNDQuMTItNjEuNjggNjEuNjhhNy45MTkgNy45MTkgMCAwIDEtMTEuMjEgMGwtMTEuMjEtMTEuMjFjLTMuMS0zLjEtMy4xLTguMTIgMC0xMS4yMWw2MS42OC02MS42OC0zMy42NC0zMy42NUMxMzEuNDctMy4xIDExMS4zOS0zLjEgOTkgOS4yOUw5LjI5IDk5Yy0xMi4zOCAxMi4zOS0xMi4zOSAzMi40NyAwIDQ0Ljg2bDEwMC4xNyAxMDAuMTh6bTM4OC40Ny0xMTYuOGMxOC43Ni0xOC43NiAxOC43NS00OS4xNyAwLTY3LjkzbC00NS4yNS00NS4yNWMtMTguNzYtMTguNzYtNDkuMTgtMTguNzYtNjcuOTUgMGwtNDYuMDIgNDYuMDEgMTEzLjIgMTEzLjIgNDYuMDItNDYuMDN6TTMxNi4wOCA4Mi43MWwtMjk3IDI5Ni45NkwuMzIgNDg3LjExYy0yLjUzIDE0LjQ5IDEwLjA5IDI3LjExIDI0LjU5IDI0LjU2bDEwNy40NS0xOC44NEw0MjkuMjggMTk1LjkgMzE2LjA4IDgyLjcxem0xODYuNjMgMjg1LjQzbC0zMy42NC0zMy42NC02MS42OCA2MS42OGMtMy4xIDMuMS04LjEyIDMuMS0xMS4yMSAwbC0xMS4yMS0xMS4yMWMtMy4wOS0zLjEtMy4wOS04LjEyIDAtMTEuMjFsNjEuNjgtNjEuNjgtNDQuMTQtNDQuMTRMMjY3LjkzIDQwMi41bDEwMC4yMSAxMDAuMmMxMi4zOSAxMi4zOSAzMi40NyAxMi4zOSA0NC44NiAwbDg5LjcxLTg5LjdjMTIuMzktMTIuMzkgMTIuMzktMzIuNDcgMC00NC44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVvcGxlQXJyb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2LDEyOEE2NCw2NCwwLDEsMCwzMiw2NCw2NCw2NCwwLDAsMCw5NiwxMjhabTAsMTc2LjA4YTQ0LjExLDQ0LjExLDAsMCwxLDEzLjY0LTMyTDE4MS43NywyMDRjMS42NS0xLjU1LDMuNzctMi4zMSw1LjYxLTMuNTdBNjMuOTEsNjMuOTEsMCwwLDAsMTI4LDE2MEg2NEE2NCw2NCwwLDAsMCwwLDIyNHY5NmEzMiwzMiwwLDAsMCwzMiwzMlY0ODBhMzIsMzIsMCwwLDAsMzIsMzJoNjRhMzIsMzIsMCwwLDAsMzItMzJWMzgzLjYxbC01MC4zNi00Ny41M0E0NC4wOCw0NC4wOCwwLDAsMSw5NiwzMDQuMDhaTTQ4MCwxMjhhNjQsNjQsMCwxLDAtNjQtNjRBNjQsNjQsMCwwLDAsNDgwLDEyOFptMzIsMzJINDQ4YTYzLjkxLDYzLjkxLDAsMCwwLTU5LjM4LDQwLjQyYzEuODQsMS4yNyw0LDIsNS42MiwzLjU5bDcyLjEyLDY4LjA2YTQ0LjM3LDQ0LjM3LDAsMCwxLDAsNjRMNDE2LDM4My42MlY0ODBhMzIsMzIsMCwwLDAsMzIsMzJoNjRhMzIsMzIsMCwwLDAsMzItMzJWMzUyYTMyLDMyLDAsMCwwLDMyLTMyVjIyNEE2NCw2NCwwLDAsMCw1MTIsMTYwWk00NDQuNCwyOTUuMzRsLTcyLjEyLTY4LjA2QTEyLDEyLDAsMCwwLDM1MiwyMzZ2MzZIMjI0VjIzNmExMiwxMiwwLDAsMC0yMC4yOC04LjczTDEzMS42LDI5NS4zNGExMi40LDEyLjQsMCwwLDAsMCwxNy40N2w3Mi4xMiw2OC4wN0ExMiwxMiwwLDAsMCwyMjQsMzcyLjE0VjMzNkgzNTJ2MzYuMTRhMTIsMTIsMCwwLDAsMjAuMjgsOC43NGw3Mi4xMi02OC4wN0ExMi40LDEyLjQsMCwwLDAsNDQ0LjQsMjk1LjM0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVDYXJyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTMTU0LjUgMCAxMjggMCA4MCAyMS41IDgwIDQ4czIxLjUgNDggNDggNDh6bTM4NCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzUzOC41IDAgNTEyIDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptMTI1LjcgMzcyLjFsLTQ0LTExMC00MS4xIDQ2LjQtMiAxOC4yIDI3LjcgNjkuMmM1IDEyLjUgMTcgMjAuMSAyOS43IDIwLjEgNCAwIDgtLjcgMTEuOS0yLjMgMTYuNC02LjYgMjQuNC0yNS4yIDE3LjgtNDEuNnptLTM0LjItMjA5LjhMNTg1IDE3OC4xYy00LjYtMjAtMTguNi0zNi44LTM3LjUtNDQuOS0xOC41LTgtMzktNi43LTU2LjEgMy4zLTIyLjcgMTMuNC0zOS43IDM0LjUtNDguMSA1OS40TDQzMiAyMjkuOCA0MTYgMjQwdi05NmMwLTguOC03LjItMTYtMTYtMTZIMjQwYy04LjggMC0xNiA3LjItMTYgMTZ2OTZsLTE2LjEtMTAuMi0xMS4zLTMzLjljLTguMy0yNS0yNS40LTQ2LTQ4LjEtNTkuNC0xNy4yLTEwLTM3LjYtMTEuMy01Ni4xLTMuMy0xOC45IDguMS0zMi45IDI0LjktMzcuNSA0NC45bC0xOC40IDgwLjJjLTQuNiAyMCAuNyA0MS4yIDE0LjQgNTYuN2w2Ny4yIDc1LjkgMTAuMSA5Mi42QzEzMCA0OTkuOCAxNDMuOCA1MTIgMTYwIDUxMmMxLjIgMCAyLjMtLjEgMy41LS4yIDE3LjYtMS45IDMwLjItMTcuNyAyOC4zLTM1LjNsLTEwLjEtOTIuOGMtMS41LTEzLTYuOS0yNS4xLTE1LjYtMzVsLTQzLjMtNDkgMTcuNi03MC4zIDYuOCAyMC40YzQuMSAxMi41IDExLjkgMjMuNCAyNC41IDMyLjZsNTEuMSAzMi41YzQuNiAyLjkgMTIuMSA0LjYgMTcuMiA1aDE2MGM1LjEtLjQgMTIuNi0yLjEgMTcuMi01bDUxLjEtMzIuNWMxMi42LTkuMiAyMC40LTIwIDI0LjUtMzIuNmw2LjgtMjAuNCAxNy42IDcwLjMtNDMuMyA0OWMtOC43IDkuOS0xNC4xIDIyLTE1LjYgMzVsLTEwLjEgOTIuOGMtMS45IDE3LjYgMTAuOCAzMy40IDI4LjMgMzUuMyAxLjIuMSAyLjMuMiAzLjUuMiAxNi4xIDAgMzAtMTIuMSAzMS44LTI4LjVsMTAuMS05Mi42IDY3LjItNzUuOWMxMy42LTE1LjUgMTktMzYuNyAxNC40LTU2Ljd6TTQ2LjMgMzU4LjFsLTQ0IDExMGMtNi42IDE2LjQgMS40IDM1IDE3LjggNDEuNiAxNi44IDYuNiAzNS4xLTEuNyA0MS42LTE3LjhsMjcuNy02OS4yLTItMTguMi00MS4xLTQ2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcHBlckhvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzAuNjcgMjYzLjEyVjE3My40bC01Mi43NS0yNC4yMkMyMTkuNDQgMjE4Ljc2IDE5Ny41OCA0MDAgNTYgNDAwYTU2IDU2IDAgMCAwIDAgMTEyYzIxMi42NCAwIDM3MC42NS0xMjIuODcgNDE5LjE4LTIxMC4zNGwtMzcuMDUtMzguNTR6bTEzMS4wOS0xMjguMzdDNDkzLjkyIDc0LjkxIDQ3Ny4xOCAyNi40OCA0NTguNjIgM2E4IDggMCAwIDAtMTEuOTMtLjU5bC0yMi45IDIzYTguMDYgOC4wNiAwIDAgMC0uODkgMTAuMjNjNi44NiAxMC4zNiAxNy4wNSAzNS4xLTEuNCA3Mi4zMkExNDIuODUgMTQyLjg1IDAgMCAwIDM2NC4zNCA5NmMtMjggMC01NCA4LjU0LTc2LjM0IDIyLjU5bDc0LjY3IDM0LjI5djc4LjI0aDg5LjA5TDUwNi40NCAyODhjMy4yNi0xMi42MiA1LjU2LTI1LjYzIDUuNTYtMzkuMzFhMTU0IDE1NCAwIDAgMC01MC4yNC0xMTMuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcmNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDIyNGM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlMxNzMuOSAwIDExMiAwIDAgNTAuMSAwIDExMnM1MC4xIDExMiAxMTIgMTEyem0wLTE2MGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OC00OC0yMS41LTQ4LTQ4IDIxLjUtNDggNDgtNDh6bTIyNCAyMjRjLTYxLjkgMC0xMTIgNTAuMS0xMTIgMTEyczUwLjEgMTEyIDExMiAxMTIgMTEyLTUwLjEgMTEyLTExMi01MC4xLTExMi0xMTItMTEyem0wIDE2MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6TTM5Mi4zLjJsMzEuNi0uMWMxOS40LS4xIDMwLjkgMjEuOCAxOS43IDM3LjhMNzcuNCA1MDEuNmEyMy45NSAyMy45NSAwIDAgMS0xOS42IDEwLjJsLTMzLjQuMWMtMTkuNSAwLTMwLjktMjEuOS0xOS43LTM3LjhsMzY4LTQ2My43QzM3Ny4yIDQgMzg0LjUuMiAzOTIuMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJjZW50YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwOS4yNSAxNzMuMjVjMjQuOTktMjQuOTkgMjQuOTktNjUuNTIgMC05MC41MS0yNC45OS0yNC45OS02NS41Mi0yNC45OS05MC41MSAwLTI0Ljk5IDI0Ljk5LTI0Ljk5IDY1LjUyIDAgOTAuNTEgMjUgMjUgNjUuNTIgMjUgOTAuNTEgMHptMjU2IDE2NS40OWMtMjQuOTktMjQuOTktNjUuNTItMjQuOTktOTAuNTEgMC0yNC45OSAyNC45OS0yNC45OSA2NS41MiAwIDkwLjUxIDI0Ljk5IDI0Ljk5IDY1LjUyIDI0Ljk5IDkwLjUxIDAgMjUtMjQuOTkgMjUtNjUuNTEgMC05MC41MXptLTEuOTQtMjMxLjQzbC0yMi42Mi0yMi42MmMtMTIuNS0xMi41LTMyLjc2LTEyLjUtNDUuMjUgMEwyMC42OSAzNTkuNDRjLTEyLjUgMTIuNS0xMi41IDMyLjc2IDAgNDUuMjVsMjIuNjIgMjIuNjJjMTIuNSAxMi41IDMyLjc2IDEyLjUgNDUuMjUgMGwyNzQuNzUtMjc0Ljc1YzEyLjUtMTIuNDkgMTIuNS0zMi43NSAwLTQ1LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Cb290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwaC02NHYxNzZ6bTMyLTI3MmgtNTAuOWwtNDUuMi00NS4zQzExNS44IDE2Ni42IDk5LjcgMTYwIDgyLjcgMTYwSDY0Yy0xNy4xIDAtMzMuMiA2LjctNDUuMyAxOC44QzYuNyAxOTAuOSAwIDIwNyAwIDIyNC4xTC4yIDMyMCAwIDQ4MGMwIDE3LjcgMTQuMyAzMiAzMS45IDMyIDE3LjYgMCAzMi0xNC4zIDMyLTMybC4xLTEwMC43Yy45LjUgMS42IDEuMyAyLjUgMS43bDI5LjEgNDN2NTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnYtNTYuNWMwLTkuOS0yLjMtMTkuOC02LjctMjguNmwtNDEuMi02MS4zVjI1M2wyMC45IDIwLjljOS4xIDkuMSAyMS4xIDE0LjEgMzMuOSAxNC4xSDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMnpNNjQgMTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzkwLjUgMzIgNjQgMzIgMTYgNTMuNSAxNiA4MHMyMS41IDQ4IDQ4IDQ4em0yMjQtOTZsMzEuNSAyMjMuMS0zMC45IDE1NC42Yy00LjMgMjEuNiAxMyAzOC4zIDMxLjQgMzguMyAxNS4yIDAgMjgtOS4xIDMyLjMtMzAuNC45IDE2LjkgMTQuNiAzMC40IDMxLjcgMzAuNCAxNy43IDAgMzItMTQuMyAzMi0zMiAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjBIMjg4djMyem0tOTYgMHYxNjBoNjRWMGgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek01NDQgMGgtMzJ2NDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob25lQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ny4zOSAzNjEuOGwtMTEyLTQ4YTI0IDI0IDAgMCAwLTI4IDYuOWwtNDkuNiA2MC42QTM3MC42NiAzNzAuNjYgMCAwIDEgMTMwLjYgMjA0LjExbDYwLjYtNDkuNmEyMy45NCAyMy45NCAwIDAgMCA2LjktMjhsLTQ4LTExMkEyNC4xNiAyNC4xNiAwIDAgMCAxMjIuNi42MWwtMTA0IDI0QTI0IDI0IDAgMCAwIDAgNDhjMCAyNTYuNSAyMDcuOSA0NjQgNDY0IDQ2NGEyNCAyNCAwIDAgMCAyMy40LTE4LjZsMjQtMTA0YTI0LjI5IDI0LjI5IDAgMCAwLTE0LjAxLTI3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob25lU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY4LjIgMzgxLjRsLTQ5LjYtNjAuNmMtNi44LTguMy0xOC4yLTExLjEtMjgtNi45bC0xMTIgNDhjLTEwLjcgNC42LTE2LjUgMTYuMS0xMy45IDI3LjVsMjQgMTA0YzIuNSAxMC44IDEyLjEgMTguNiAyMy40IDE4LjYgMTAwLjcgMCAxOTMuNy0zMi40IDI2OS43LTg2LjlsLTgwLTYxLjhjLTEwLjkgNi41LTIyLjEgMTIuNy0zMy42IDE4LjF6bTM2NS42IDc2LjdMNDc1LjEgMzM1LjVDNTM3LjkgMjU2LjQgNTc2IDE1Ni45IDU3NiA0OGMwLTExLjItNy43LTIwLjktMTguNi0yMy40bC0xMDQtMjRjLTExLjMtMi42LTIyLjkgMy4zLTI3LjUgMTMuOWwtNDggMTEyYy00LjIgOS44LTEuNCAyMS4zIDYuOSAyOGw2MC42IDQ5LjZjLTEyLjIgMjYuMS0yNy45IDUwLjMtNDYgNzIuOEw0NS41IDMuNEMzOC41LTIgMjguNS0uOCAyMyA2LjJMMy40IDMxLjRjLTUuNCA3LTQuMiAxNyAyLjggMjIuNGw1ODguNCA0NTQuN2M3IDUuNCAxNyA0LjIgMjIuNS0yLjhsMTkuNi0yNS4zYzUuNC02LjggNC4xLTE2LjktMi45LTIyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob25lU3F1YXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEE0OCA0OCAwIDAgMCAwIDgwdjM1MmE0OCA0OCAwIDAgMCA0OCA0OGgzNTJhNDggNDggMCAwIDAgNDgtNDhWODBhNDggNDggMCAwIDAtNDgtNDh6bS0xNi4zOSAzMDcuMzdsLTE1IDY1QTE1IDE1IDAgMCAxIDM1NCA0MTZDMTk0IDQxNiA2NCAyODYuMjkgNjQgMTI2YTE1LjcgMTUuNyAwIDAgMSAxMS42My0xNC42MWw2NS0xNUExOC4yMyAxOC4yMyAwIDAgMSAxNDQgOTZhMTYuMjcgMTYuMjcgMCAwIDEgMTMuNzkgOS4wOWwzMCA3MEExNy45IDE3LjkgMCAwIDEgMTg5IDE4MWExNyAxNyAwIDAgMS01LjUgMTEuNjFsLTM3Ljg5IDMxYTIzMS45MSAyMzEuOTEgMCAwIDAgMTEwLjc4IDExMC43OGwzMS0zNy44OUExNyAxNyAwIDAgMSAyOTkgMjkxYTE3Ljg1IDE3Ljg1IDAgMCAxIDUuOTEgMS4yMWw3MCAzMEExNi4yNSAxNi4yNSAwIDAgMSAzODQgMzM2YTE3LjQxIDE3LjQxIDAgMCAxLS4zOSAzLjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6TTk0IDQxNmMtNy4wMzMgMC0xMy4wNTctNC44NzMtMTQuNjE2LTExLjYyN2wtMTQuOTk4LTY1YTE1IDE1IDAgMCAxIDguNzA3LTE3LjE2bDY5Ljk5OC0yOS45OTlhMTUgMTUgMCAwIDEgMTcuNTE4IDQuMjg5bDMwLjk5NyAzNy44ODVjNDguOTQ0LTIyLjk2MyA4OC4yOTctNjIuODU4IDExMC43ODEtMTEwLjc4bC0zNy44ODYtMzAuOTk3YTE1LjAwMSAxNS4wMDEgMCAwIDEtNC4yODktMTcuNTE4bDMwLTY5Ljk5OGExNSAxNSAwIDAgMSAxNy4xNi04LjcwN2w2NSAxNC45OThBMTQuOTk3IDE0Ljk5NyAwIDAgMSAzODQgMTI2YzAgMTYwLjI5Mi0xMjkuOTQ1IDI5MC0yOTAgMjkwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVZvbHVtZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05Ny4zMzMgNTA2Ljk2NmMtMTI5Ljg3NC0xMjkuODc0LTEyOS42ODEtMzQwLjI1MiAwLTQ2OS45MzMgNS42OTgtNS42OTggMTQuNTI3LTYuNjMyIDIxLjI2My0yLjQyMmw2NC44MTcgNDAuNTEzYTE3LjE4NyAxNy4xODcgMCAwIDEgNi44NDkgMjAuOTU4bC0zMi40MDggODEuMDIxYTE3LjE4OCAxNy4xODggMCAwIDEtMTcuNjY5IDEwLjcxOWwtNTUuODEtNS41OGMtMjEuMDUxIDU4LjI2MS0yMC42MTIgMTIyLjQ3MSAwIDE3OS41MTVsNTUuODExLTUuNTgxYTE3LjE4OCAxNy4xODggMCAwIDEgMTcuNjY5IDEwLjcxOWwzMi40MDggODEuMDIyYTE3LjE4OCAxNy4xODggMCAwIDEtNi44NDkgMjAuOTU4bC02NC44MTcgNDAuNTEzYTE3LjE5IDE3LjE5IDAgMCAxLTIxLjI2NC0yLjQyMnpNMjQ3LjEyNiA5NS40NzNjMTEuODMyIDIwLjA0NyAxMS44MzIgNDUuMDA4IDAgNjUuMDU1LTMuOTUgNi42OTMtMTMuMTA4IDcuOTU5LTE4LjcxOCAyLjU4MWwtNS45NzUtNS43MjZjLTMuOTExLTMuNzQ4LTQuNzkzLTkuNjIyLTIuMjYxLTE0LjQxYTMyLjA2MyAzMi4wNjMgMCAwIDAgMC0yOS45NDVjLTIuNTMzLTQuNzg4LTEuNjUtMTAuNjYyIDIuMjYxLTE0LjQxbDUuOTc1LTUuNzI2YzUuNjEtNS4zNzggMTQuNzY4LTQuMTEyIDE4LjcxOCAyLjU4MXptOTEuNzg3LTkxLjE4N2M2MC4xNCA3MS42MDQgNjAuMDkyIDE3NS44ODIgMCAyNDcuNDI4LTQuNDc0IDUuMzI3LTEyLjUzIDUuNzQ2LTE3LjU1Mi45MzNsLTUuNzk4LTUuNTU3Yy00LjU2LTQuMzcxLTQuOTc3LTExLjUyOS0uOTMtMTYuMzc5IDQ5LjY4Ny01OS41MzggNDkuNjQ2LTE0NS45MzMgMC0yMDUuNDIyLTQuMDQ3LTQuODUtMy42MzEtMTIuMDA4LjkzLTE2LjM3OWw1Ljc5OC01LjU1N2M1LjAyMi00LjgxMyAxMy4wNzgtNC4zOTQgMTcuNTUyLjkzM3ptLTQ1Ljk3MiA0NC45NDFjMzYuMDUgNDYuMzIyIDM2LjEwOCAxMTEuMTQ5IDAgMTU3LjU0Ni00LjM5IDUuNjQxLTEyLjY5NyA2LjI1MS0xNy44NTYgMS4zMDRsLTUuODE4LTUuNTc5Yy00LjQtNC4yMTktNC45OTgtMTEuMDk1LTEuMjg1LTE1LjkzMSAyNi41MzYtMzQuNTY0IDI2LjUzNC04Mi41NzIgMC0xMTcuMTM0LTMuNzEzLTQuODM2LTMuMTE1LTExLjcxMSAxLjI4NS0xNS45MzFsNS44MTgtNS41NzljNS4xNTktNC45NDcgMTMuNDY2LTQuMzM3IDE3Ljg1NiAxLjMwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDkzLjQgMjQuNmwtMTA0LTI0Yy0xMS4zLTIuNi0yMi45IDMuMy0yNy41IDEzLjlsLTQ4IDExMmMtNC4yIDkuOC0xLjQgMjEuMyA2LjkgMjhsNjAuNiA0OS42Yy0zNiA3Ni43LTk4LjkgMTQwLjUtMTc3LjIgMTc3LjJsLTQ5LjYtNjAuNmMtNi44LTguMy0xOC4yLTExLjEtMjgtNi45bC0xMTIgNDhDMy45IDM2Ni41LTIgMzc4LjEuNiAzODkuNGwyNCAxMDRDMjcuMSA1MDQuMiAzNi43IDUxMiA0OCA1MTJjMjU2LjEgMCA0NjQtMjA3LjUgNDY0LTQ2NCAwLTExLjItNy43LTIwLjktMTguNi0yMy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG90b1ZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwOCAwSDE2MGEzMiAzMiAwIDAgMC0zMiAzMnY5NmgxNjBWNjRoMTkydjMyMGgxMjhhMzIgMzIgMCAwIDAgMzItMzJWMzJhMzIgMzIgMCAwIDAtMzItMzJ6TTIzMiAxMDNhOSA5IDAgMCAxLTkgOWgtMzBhOSA5IDAgMCAxLTktOVY3M2E5IDkgMCAwIDEgOS05aDMwYTkgOSAwIDAgMSA5IDl6bTM1MiAyMDhhOSA5IDAgMCAxLTkgOWgtMzBhOSA5IDAgMCAxLTktOXYtMzBhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0wLTEwNGE5IDkgMCAwIDEtOSA5aC0zMGE5IDkgMCAwIDEtOS05di0zMGE5IDkgMCAwIDEgOS05aDMwYTkgOSAwIDAgMSA5IDl6bTAtMTA0YTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTlWNzNhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0tMTY4IDU3SDMyYTMyIDMyIDAgMCAwLTMyIDMydjI4OGEzMiAzMiAwIDAgMCAzMiAzMmgzODRhMzIgMzIgMCAwIDAgMzItMzJWMTkyYTMyIDMyIDAgMCAwLTMyLTMyek05NiAyMjRhMzIgMzIgMCAxIDEtMzIgMzIgMzIgMzIgMCAwIDEgMzItMzJ6bTI4OCAyMjRINjR2LTMybDY0LTY0IDMyIDMyIDEyOC0xMjggOTYgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZ2d5QmFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjAgMjI0aC0yOS41Yy04LjgtMjAtMjEuNi0zNy43LTM3LjQtNTIuNUw1MTIgOTZoLTMyYy0yOS40IDAtNTUuNCAxMy41LTczIDM0LjMtNy42LTEuMS0xNS4xLTIuMy0yMy0yLjNIMjU2Yy03Ny40IDAtMTQxLjkgNTUtMTU2LjggMTI4SDU2Yy0xNC44IDAtMjYuNS0xMy41LTIzLjUtMjguOEMzNC43IDIxNS44IDQ1LjQgMjA4IDU3IDIwOGgxYzMuMyAwIDYtMi43IDYtNnYtMjBjMC0zLjMtMi43LTYtNi02LTI4LjUgMC01My45IDIwLjQtNTcuNSA0OC42Qy0zLjkgMjU4LjggMjIuNyAyODggNTYgMjg4aDQwYzAgNTIuMiAyNS40IDk4LjEgNjQgMTI3LjNWNDk2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZ2LTQ4aDEyOHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2di04MC43YzExLjgtOC45IDIyLjMtMTkuNCAzMS4zLTMxLjNINTYwYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2em0tMTI4IDY0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6TTI1NiA5NmgxMjhjNS40IDAgMTAuNy40IDE1LjkuOCAwLS4zLjEtLjUuMS0uOCAwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDIuMS41IDQuMS42IDYuMiAxNS4yLTMuOSAzMS02LjIgNDcuNC02LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAzMkM1MC4xIDMyIDAgODIuMSAwIDE0NHYyMjRjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJzMTEyLTUwLjEgMTEyLTExMlYxNDRjMC02MS45LTUwLjEtMTEyLTExMi0xMTJ6bTQ4IDIyNEg2NFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHYxMTJ6bTEzOS43LTI5LjdjLTMuNS0zLjUtOS40LTMuMS0xMi4zLjgtNDUuMyA2Mi41LTQwLjQgMTUwLjEgMTUuOSAyMDYuNCA1Ni4zIDU2LjMgMTQzLjkgNjEuMiAyMDYuNCAxNS45IDQtMi45IDQuMy04LjguOC0xMi4zTDI5OS43IDIyNi4zem0yMjkuOC0xOWMtNTYuMy01Ni4zLTE0My45LTYxLjItMjA2LjQtMTUuOS00IDIuOS00LjMgOC44LS44IDEyLjNsMjEwLjggMjEwLjhjMy41IDMuNSA5LjQgMy4xIDEyLjMtLjggNDUuMy02Mi42IDQwLjUtMTUwLjEtMTUuOS0yMDYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGl6emFTbGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTguODcuMTVjLTE2LjE2LTEuNTItMzEuMiA4LjQyLTM1LjMzIDI0LjEybC0xNC44MSA1Ni4yN2MxODcuNjIgNS40OSAzMTQuNTQgMTMwLjYxIDMyMi40OCAzMTdsNTYuOTQtMTUuNzhjMTUuNzItNC4zNiAyNS40OS0xOS42OCAyMy42Mi0zNS45QzQ5MC44OSAxNjUuMDggMzQwLjc4IDE3LjMyIDE1OC44Ny4xNXptLTU4LjQ3IDExMkwuNTUgNDkxLjY0YTE2LjIxIDE2LjIxIDAgMCAwIDIwIDE5Ljc1bDM3OS0xMDUuMWMtNC4yNy0xNzQuODktMTIzLjA4LTI5Mi4xNC0yOTkuMTUtMjk0LjF6TTEyOCA0MTZhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTQ4LTE1MmEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnptMTA0IDEwNGEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhY2VPZldvcnNoaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIwLjYxIDM2Ni41NUw1MTIgMzIwdjE5MmgxMTJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzk1Ljk2YTMyIDMyIDAgMCAwLTE5LjM5LTI5LjQxek0wIDM5NS45NlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTEyVjMyMEwxOS4zOSAzNjYuNTVBMzIgMzIgMCAwIDAgMCAzOTUuOTZ6bTQ2NC40Ni0xNDkuMjhMNDE2IDIxNy42VjEwMi42M2MwLTguNDktMy4zNy0xNi42Mi05LjM4LTIyLjYzTDMzMS4zMSA0LjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MiAwTDIzMy4zOCA4MGMtNiA2LTkuMzggMTQuMTQtOS4zOCAyMi42M1YyMTcuNmwtNDguNDYgMjkuMDhBMzEuOTk3IDMxLjk5NyAwIDAgMCAxNjAgMjc0LjEyVjUxMmg5NnYtOTZjMC0zNS4zNSAyOC42Ni02NCA2NC02NHM2NCAyOC42NSA2NCA2NHY5Nmg5NlYyNzQuMTJjMC0xMS4yNC01LjktMjEuNjYtMTUuNTQtMjcuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lQXJyaXZhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00NC44MSAyMDUuNjZsODguNzQgODBhNjIuNjA3IDYyLjYwNyAwIDAgMCAyNS40NyAxMy45M2wyODcuNiA3OC4zNWMyNi40OCA3LjIxIDU0LjU2IDguNzIgODEgMS4zNiAyOS42Ny04LjI3IDQzLjQ0LTIxLjIxIDQ3LjI1LTM1LjcxIDMuODMtMTQuNS0xLjczLTMyLjcxLTIzLjM3LTU0Ljk2LTE5LjI4LTE5LjgyLTQ0LjM1LTMyLjc5LTcwLjgzLTQwbC05Ny41MS0yNi41NkwyODIuOCAzMC4yMmMtMS41MS01LjgxLTUuOTUtMTAuMzUtMTEuNjYtMTEuOTFMMjA2LjA1LjU4Yy0xMC41Ni0yLjg4LTIwLjkgNS4zMi0yMC43MSAxNi40NGw0Ny45MiAxNjQuMjEtMTAyLjItMjcuODQtMjcuNTktNjcuODhjLTEuOTMtNC44OS02LjAxLTguNTctMTEuMDItOS45M0w1Mi43MiA2NC43NWMtMTAuMzQtMi44Mi0yMC41MyA1LTIwLjcyIDE1Ljg4bC4yMyAxMDEuNzhjLjE5IDguOTEgNi4wMyAxNy4zNCAxMi41OCAyMy4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVEZXBhcnR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNODAuNTUgMzQxLjI3YzYuMjggNi44NCAxNS4xIDEwLjcyIDI0LjMzIDEwLjcxbDEzMC41NC0uMThhNjUuNjIgNjUuNjIgMCAwIDAgMjkuNjQtNy4xMmwyOTAuOTYtMTQ3LjY1YzI2Ljc0LTEzLjU3IDUwLjcxLTMyLjk0IDY3LjAyLTU4LjMxIDE4LjMxLTI4LjQ4IDIwLjMtNDkuMDkgMTMuMDctNjMuNjUtNy4yMS0xNC41Ny0yNC43NC0yNS4yNy01OC4yNS0yNy40NS0yOS44NS0xLjk0LTU5LjU0IDUuOTItODYuMjggMTkuNDhsLTk4LjUxIDQ5Ljk5LTIxOC43LTgyLjA2YTE3Ljc5OSAxNy43OTkgMCAwIDAtMTgtMS4xMUw5MC42MiA2Ny4yOWMtMTAuNjcgNS40MS0xMy4yNSAxOS42NS01LjE3IDI4LjUzbDE1Ni4yMiA5OC4xLTEwMy4yMSA1Mi4zOC03Mi4zNS0zNi40N2ExNy44MDQgMTcuODA0IDAgMCAwLTE2LjA3LjAyTDkuOTEgMjMwLjIyYy0xMC40NCA1LjMtMTMuMTkgMTkuMTItNS41NyAyOC4wOGw3Ni4yMSA4Mi45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMi40OCwxNDcuODgsNjQsMjU2LDMyLjQ4LDM2NC4xM0ExNiwxNiwwLDAsMCw0OCwzODRIODhhMTYsMTYsMCwwLDAsMTIuOC02LjQxTDE0NCwzMjBIMjQ2Ljg1bC00OSwxNzEuNTlBMTYsMTYsMCwwLDAsMjEzLjIsNTEyaDY1LjVhMTYsMTYsMCwwLDAsMTMuODktOC4wNmw2Ni42LTExNi41NEwzNC4zNSwxMzYuMzRBMTUuNDcsMTUuNDcsMCwwLDAsMzIuNDgsMTQ3Ljg4Wk02MzMuODIsNDU4LjA5LDQ1NS4xNCwzMjBINTEyYzM1LjM0LDAsOTYtMjguNjYsOTYtNjRzLTYwLjY2LTY0LTk2LTY0SDM5Ny43TDI5Mi42MSw4LjA2QzI5MC4wNiwzLjYxLDI4My44NCwwLDI3OC43MSwwSDIxMy4yYTE2LDE2LDAsMCwwLTE1LjM4LDIwLjM5bDM2Ljk0LDEyOS4yOUw0NS40NiwzLjM4QTE2LDE2LDAsMCwwLDIzLDYuMTlMMy4zNywzMS40NUExNiwxNiwwLDAsMCw2LjE4LDUzLjkxTDU5NC41NCw1MDguNjNBMTYsMTYsMCwwLDAsNjE3LDUwNS44MWwxOS42NC0yNS4yNkExNiwxNiwwLDAsMCw2MzMuODIsNDU4LjA5WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMTkySDM2NS43MUwyNjAuNjEgOC4wNkExNi4wMTQgMTYuMDE0IDAgMCAwIDI0Ni43MSAwaC02NS41Yy0xMC42MyAwLTE4LjMgMTAuMTctMTUuMzggMjAuMzlMMjE0Ljg2IDE5MkgxMTJsLTQzLjItNTcuNmMtMy4wMi00LjAzLTcuNzctNi40LTEyLjgtNi40SDE2LjAxQzUuNiAxMjgtMi4wNCAxMzcuNzguNDkgMTQ3Ljg4TDMyIDI1NiAuNDkgMzY0LjEyQy0yLjA0IDM3NC4yMiA1LjYgMzg0IDE2LjAxIDM4NEg1NmM1LjA0IDAgOS43OC0yLjM3IDEyLjgtNi40TDExMiAzMjBoMTAyLjg2bC00OS4wMyAxNzEuNmMtMi45MiAxMC4yMiA0Ljc1IDIwLjQgMTUuMzggMjAuNGg2NS41YzUuNzQgMCAxMS4wNC0zLjA4IDEzLjg5LTguMDZMMzY1LjcxIDMyMEg0ODBjMzUuMzUgMCA5Ni0yOC42NSA5Ni02NHMtNjAuNjUtNjQtOTYtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYXlDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMTE1LjcgMjcybC0xNzYgMTAxYy0xNS44IDguOC0zNS43LTIuNS0zNS43LTIxVjE1MmMwLTE4LjQgMTkuOC0yOS44IDM1LjctMjFsMTc2IDEwN2MxNi40IDkuMiAxNi40IDMyLjkgMCA0MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjQuNCAyMTQuN0w3Mi40IDYuNkM0My44LTEwLjMgMCA2LjEgMCA0Ny45VjQ2NGMwIDM3LjUgNDAuNyA2MC4xIDcyLjQgNDEuM2wzNTItMjA4YzMxLjQtMTguNSAzMS41LTY0LjEgMC04Mi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCwzMmEzMiwzMiwwLDAsMC02NCwwdjk2aDY0Wm00OCwxMjhIMTZBMTYsMTYsMCwwLDAsMCwxNzZ2MzJhMTYsMTYsMCwwLDAsMTYsMTZIMzJ2MzJBMTYwLjA3LDE2MC4wNywwLDAsMCwxNjAsNDEyLjhWNTEyaDY0VjQxMi44QTE2MC4wNywxNjAuMDcsMCwwLDAsMzUyLDI1NlYyMjRoMTZhMTYsMTYsMCwwLDAsMTYtMTZWMTc2QTE2LDE2LDAsMCwwLDM2OCwxNjBaTTEyOCwzMmEzMiwzMiwwLDAsMC02NCwwdjk2aDY0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTE0NCAyNzZjMCA2LjYtNS40IDEyLTEyIDEyaC05MnY5MmMwIDYuNi01LjQgMTItMTIgMTJoLTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTkyaC05MmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoOTJ2LTkyYzAtNi42IDUuNC0xMiAxMi0xMmg1NmM2LjYgMCAxMiA1LjQgMTIgMTJ2OTJoOTJjNi42IDAgMTIgNS40IDEyIDEydjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0zMiAyNTJjMCA2LjYtNS40IDEyLTEyIDEyaC05MnY5MmMwIDYuNi01LjQgMTItMTIgMTJoLTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTkySDkyYy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmg5MnYtOTJjMC02LjYgNS40LTEyIDEyLTEyaDU2YzYuNiAwIDEyIDUuNCAxMiAxMnY5Mmg5MmM2LjYgMCAxMiA1LjQgMTIgMTJ2NTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOEgyNzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTQ0SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTQ0djE0NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzA0aDE0NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb2RjYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2Ny40MjkgNDg4LjU2M0MyNjIuMjg2IDUwNy41NzMgMjQyLjg1OCA1MTIgMjI0IDUxMmMtMTguODU3IDAtMzguMjg2LTQuNDI3LTQzLjQyOC0yMy40MzdDMTcyLjkyNyA0NjAuMTM0IDE2MCAzODguODk4IDE2MCAzNTUuNzVjMC0zNS4xNTYgMzEuMTQyLTQzLjc1IDY0LTQzLjc1czY0IDguNTk0IDY0IDQzLjc1YzAgMzIuOTQ5LTEyLjg3MSAxMDQuMTc5LTIwLjU3MSAxMzIuODEzek0xNTYuODY3IDI4OC41NTRjLTE4LjY5My0xOC4zMDgtMjkuOTU4LTQ0LjE3My0yOC43ODQtNzIuNTk5IDIuMDU0LTQ5LjcyNCA0Mi4zOTUtODkuOTU2IDkyLjEyNC05MS44ODFDMjc0Ljg2MiAxMjEuOTU4IDMyMCAxNjUuODA3IDMyMCAyMjBjMCAyNi44MjctMTEuMDY0IDUxLjExNi0yOC44NjYgNjguNTUyLTIuNjc1IDIuNjItMi40MDEgNi45ODYuNjI4IDkuMTg3IDkuMzEyIDYuNzY1IDE2LjQ2IDE1LjM0MyAyMS4yMzQgMjUuMzYzIDEuNzQxIDMuNjU0IDYuNDk3IDQuNjYgOS40NDkgMS44OTEgMjguODI2LTI3LjA0MyA0Ni41NTMtNjUuNzgzIDQ1LjUxMS0xMDguNTY1LTEuODU1LTc2LjIwNi02My41OTUtMTM4LjIwOC0xMzkuNzkzLTE0MC4zNjlDMTQ2Ljg2OSA3My43NTMgODAgMTM5LjIxNSA4MCAyMjBjMCA0MS4zNjEgMTcuNTMyIDc4LjcgNDUuNTUgMTA0Ljk4OSAyLjk1MyAyLjc3MSA3LjcxMSAxLjc3IDkuNDUzLTEuODg3IDQuNzc0LTEwLjAyMSAxMS45MjMtMTguNTk4IDIxLjIzNS0yNS4zNjMgMy4wMjktMi4yIDMuMzA0LTYuNTY2LjYyOS05LjE4NXpNMjI0IDBDMTAwLjIwNCAwIDAgMTAwLjE4NSAwIDIyNGMwIDg5Ljk5MiA1Mi42MDIgMTY1LjY0NyAxMjUuNzM5IDIwMS40MDggNC4zMzMgMi4xMTggOS4yNjctMS41NDQgOC41MzUtNi4zMS0yLjM4Mi0xNS41MTItNC4zNDItMzAuOTQ2LTUuNDA2LTQ0LjMzOS0uMTQ2LTEuODM2LTEuMTQ5LTMuNDg2LTIuNjc4LTQuNTEyLTQ3LjQtMzEuODA2LTc4LjU2NC04Ni4wMTYtNzguMTg3LTE0Ny4zNDcuNTkyLTk2LjIzNyA3OS4yOS0xNzQuNjQ4IDE3NS41MjktMTc0Ljg5OUMzMjAuNzkzIDQ3Ljc0NyA0MDAgMTI2Ljc5NyA0MDAgMjI0YzAgNjEuOTMyLTMyLjE1OCAxMTYuNDktODAuNjUgMTQ3Ljg2Ny0uOTk5IDE0LjAzNy0zLjA2OSAzMC41ODgtNS42MjQgNDcuMjMtLjczMiA0Ljc2NyA0LjIwMyA4LjQyOSA4LjUzNSA2LjMxQzM5NS4yMjcgMzg5LjcyNyA0NDggMzE0LjE4NyA0NDggMjI0IDQ0OCAxMDAuMjA1IDM0Ny44MTUgMCAyMjQgMHptMCAxNjBjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHMyOC42NTQgNjQgNjQgNjQgNjQtMjguNjU0IDY0LTY0LTI4LjY1NC02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9sbEggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDQzMlY4MGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6TTExMiAxOTJjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmgxMjhjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MzJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIMTEyem0wIDk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMjI0YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2SDExMnptMCA5NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyYzAtOC44NCA3LjE2LTE2IDE2LTE2aDY0YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2aC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNjAgMzY4YzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZWMjQwYzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djEyOHptOTYgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2VjE0NGMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYyMjR6bTk2IDBjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvb1N0b3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOCAzMzZoLTU3LjdsMTcuMy02NC45YzItNy42LTMuNy0xNS4xLTExLjYtMTUuMWgtNjhjLTYgMC0xMS4xIDQuNS0xMS45IDEwLjRsLTE2IDEyMGMtMSA3LjIgNC42IDEzLjYgMTEuOSAxMy42aDU5LjNsLTIzIDk3LjJjLTEuOCA3LjYgNCAxNC44IDExLjcgMTQuOCA0LjIgMCA4LjItMi4yIDEwLjQtNmw4OC0xNTJjNC42LTgtMS4yLTE4LTEwLjQtMTh6bTY2LjQtMTExLjNjNS45LTkuNiA5LjYtMjAuNiA5LjYtMzIuNyAwLTM1LjMtMjguNy02NC02NC02NGgtNS45YzMuNi0xMC4xIDUuOS0yMC43IDUuOS0zMiAwLTUzLTQzLTk2LTk2LTk2LTUuMiAwLTEwLjIuNy0xNS4xIDEuNUMyMTguMyAxNC42IDIyNCAzMC42IDIyNCA0OGMwIDQ0LjItMzUuOCA4MC04MCA4MGgtMTZjLTM1LjMgMC02NCAyOC43LTY0IDY0IDAgMTIuMSAzLjcgMjMuMSA5LjYgMzIuN0MzMi42IDIyOCAwIDI2Mi4yIDAgMzA0YzAgNDQgMzYgODAgODAgODBoNDguM2MuMS0uNiAwLTEuMiAwLTEuOGwxNi0xMjBjMy0yMS44IDIxLjctMzguMiA0My43LTM4LjJoNjhjMTMuOCAwIDI2LjUgNi4zIDM0LjkgMTcuMnMxMS4yIDI0LjggNy42IDM4LjFsLTYuNiAyNC43aDE2YzE1LjcgMCAzMC4zIDguNCAzOC4xIDIyIDcuOCAxMy42IDcuOCAzMC41IDAgNDRsLTguMSAxNGgzMGM0NCAwIDgwLTM2IDgwLTgwIC4xLTQxLjgtMzIuNS03Ni03My41LTc5LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTEuNCAzNjkuMUM0NjguNyAzNTYgNDgwIDMzNS40IDQ4MCAzMTJjMC0zOS44LTMyLjItNzItNzItNzJoLTE0LjFjMTMuNC0xMS43IDIyLjEtMjguOCAyMi4xLTQ4IDAtMzUuMy0yOC43LTY0LTY0LTY0aC01LjljMy42LTEwLjEgNS45LTIwLjcgNS45LTMyIDAtNTMtNDMtOTYtOTYtOTYtNS4yIDAtMTAuMi43LTE1LjEgMS41QzI1MC4zIDE0LjYgMjU2IDMwLjYgMjU2IDQ4YzAgNDQuMi0zNS44IDgwLTgwIDgwaC0xNmMtMzUuMyAwLTY0IDI4LjctNjQgNjQgMCAxOS4yIDguNyAzNi4zIDIyLjEgNDhIMTA0Yy0zOS44IDAtNzIgMzIuMi03MiA3MiAwIDIzLjQgMTEuMyA0NCAyOC42IDU3LjFDMjYuMyAzNzQuNiAwIDQwNC4xIDAgNDQwYzAgMzkuOCAzMi4yIDcyIDcyIDcyaDM2OGMzOS44IDAgNzItMzIuMiA3Mi03MiAwLTM1LjktMjYuMy02NS40LTYwLjYtNzAuOXpNMTkyIDI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bTE1OS41IDEzOUMzNDEgNDIyLjkgMjkzIDQ0OCAyNTYgNDQ4cy04NS0yNS4xLTk1LjUtNTNjLTItNS4zIDItMTEgNy44LTExaDE3NS40YzUuOCAwIDkuOCA1LjcgNy44IDExek0zMjAgMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9vcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTEuMzYgMzY5LjE0QzQ2OC42NiAzNTUuOTkgNDgwIDMzNS40MSA0ODAgMzEyYzAtMzkuNzctMzIuMjQtNzItNzItNzJoLTE0LjA3YzEzLjQyLTExLjczIDIyLjA3LTI4Ljc4IDIyLjA3LTQ4IDAtMzUuMzUtMjguNjUtNjQtNjQtNjRoLTUuODhjMy41Ny0xMC4wNSA1Ljg4LTIwLjcyIDUuODgtMzIgMC01My4wMi00Mi45OC05Ni05Ni05Ni01LjE3IDAtMTAuMTUuNzQtMTUuMTEgMS41MkMyNTAuMzEgMTQuNjQgMjU2IDMwLjYyIDI1NiA0OGMwIDQ0LjE4LTM1LjgyIDgwLTgwIDgwaC0xNmMtMzUuMzUgMC02NCAyOC42NS02NCA2NCAwIDE5LjIyIDguNjUgMzYuMjcgMjIuMDcgNDhIMTA0Yy0zOS43NiAwLTcyIDMyLjIzLTcyIDcyIDAgMjMuNDEgMTEuMzQgNDMuOTkgMjguNjQgNTcuMTRDMjYuMzEgMzc0LjYyIDAgNDA0LjEyIDAgNDQwYzAgMzkuNzYgMzIuMjQgNzIgNzIgNzJoMzY4YzM5Ljc2IDAgNzItMzIuMjQgNzItNzIgMC0zNS44OC0yNi4zMS02NS4zOC02MC42NC03MC44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE5MiAxMjhjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjQtNjQtMjguNy02NC02NCAyOC43LTY0IDY0LTY0em0xMTIgMjM2LjhjMCAxMC42LTEwIDE5LjItMjIuNCAxOS4ySDEwMi40QzkwIDM4NCA4MCAzNzUuNCA4MCAzNjQuOHYtMTkuMmMwLTMxLjggMzAuMS01Ny42IDY3LjItNTcuNmg1YzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDVjMzcuMSAwIDY3LjIgMjUuOCA2Ny4yIDU3LjZ2MTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG91bmRTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOCAzNTJoLTQ1LjQ5NWMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1MC44NDhIMTI4VjI4OGg4NGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC04NHYtNjMuNTU2YzAtMzIuMjY2IDI0LjU2Mi01Ny4wODYgNjEuNzkyLTU3LjA4NiAyMy42NTggMCA0NS44NzggMTEuNTA1IDU3LjY1MiAxOC44NDkgNS4xNTEgMy4yMTMgMTEuODg4IDIuMDUxIDE1LjY4OC0yLjY4NWwyOC40OTMtMzUuNTEzYzQuMjMzLTUuMjc2IDMuMjc5LTEzLjAwNS0yLjExOS0xNy4wODFDMjczLjEyNCA1NC41NiAyMzYuNTc2IDMyIDE4Ny45MzEgMzIgMTA2LjAyNiAzMiA0OCA4NC43NDIgNDggMTU3Ljk2MVYyMjRIMjBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOHYxMjhIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMlYzNjRjMC02LjYyNy01LjM3My0xMi0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG93ZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDU0LjFjNjMgNDUgMTA0IDExOC42IDEwNCAyMDEuOSAwIDEzNi44LTExMC44IDI0Ny43LTI0Ny41IDI0OEMxMjAgNTA0LjMgOC4yIDM5MyA4IDI1Ni40IDcuOSAxNzMuMSA0OC45IDk5LjMgMTExLjggNTQuMmMxMS43LTguMyAyOC00LjggMzUgNy43TDE2Mi42IDkwYzUuOSAxMC41IDMuMSAyMy44LTYuNiAzMS00MS41IDMwLjgtNjggNzkuNi02OCAxMzQuOS0uMSA5Mi4zIDc0LjUgMTY4LjEgMTY4IDE2OC4xIDkxLjYgMCAxNjguNi03NC4yIDE2OC0xNjkuMS0uMy01MS44LTI0LjctMTAxLjgtNjguMS0xMzQtOS43LTcuMi0xMi40LTIwLjUtNi41LTMwLjlsMTUuOC0yOC4xYzctMTIuNCAyMy4yLTE2LjEgMzQuOC03Ljh6TTI5NiAyNjRWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTMyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDEyOGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0UzI5MS4zNSAwIDI1NiAwcy02NCAyOC42NS02NCA2NCAyOC42NSA2NCA2NCA2NHptLTMwLjYzIDE2OS43NWMxNC4wNiAxNi43MiAzOSAxOS4wOSA1NS45NyA1LjIybDg4LTcyLjAyYzE3LjA5LTEzLjk4IDE5LjU5LTM5LjE5IDUuNjItNTYuMjgtMTMuOTctMTcuMTEtMzkuMTktMTkuNTktNTYuMzEtNS42MmwtNTcuNDQgNDctMzguOTEtNDYuMzFjLTE1LjQ0LTE4LjM5LTM5LjIyLTI3LjkyLTY0LTI1LjMzLTI0LjE5IDIuNDgtNDUuMjUgMTYuMjctNTYuMzcgMzYuOTJsLTQ5LjM3IDkyLjAzYy0yMy40IDQzLjY0LTguNjkgOTYuMzcgMzQuMTkgMTIzLjc1TDEzMS41NiA0MzJINDBjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDBzMTcuOTEgNDAgNDAgNDBoMjA4YzM0LjA4IDAgNTMuNzctNDIuNzkgMjguMjgtNjguMjhMMTY2LjQyIDMzMy44NmwzNC44LTY0Ljg3IDI0LjE1IDI4Ljc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmF5aW5nSGFuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDE5MS45MWMtMTcuNiAwLTMyIDE0LjQtMzIgMzJ2ODBjMCA4Ljg0LTcuMTYgMTYtMTYgMTZzLTE2LTcuMTYtMTYtMTZ2LTc2LjU1YzAtMTcuMzkgNC43Mi0zNC40NyAxMy42OS00OS4zOWw3Ny43NS0xMjkuNTljOS4wOS0xNS4xNiA0LjE5LTM0LjgxLTEwLjk3LTQzLjkxLTE0LjQ1LTguNjctMzIuNzItNC4zLTQyLjMgOS4yMS0uMi4yMy0uNjIuMjEtLjc5LjQ4bC0xMTcuMjYgMTc1LjlDMTE3LjU2IDIwNS45IDExMiAyMjQuMzEgMTEyIDI0My4yOXY4MC4yM2wtOTAuMTIgMzAuMDRBMzEuOTc0IDMxLjk3NCAwIDAgMCAwIDM4My45MXY5NmMwIDEwLjgyIDguNTIgMzIgMzIgMzIgMi42OSAwIDUuNDEtLjM0IDguMDYtMS4wM2wxNzkuMTktNDYuNjJDMjY5LjE2IDQ0OS45OSAzMDQgNDAzLjggMzA0IDM1MS45MXYtMTI4YzAtMTcuNi0xNC40LTMyLTMyLTMyem0zNDYuMTIgMTYxLjczTDUyOCAzMjMuNnYtODAuMjNjMC0xOC45OC01LjU2LTM3LjM5LTE2LjEyLTUzLjIzTDM5NC42MiAxNC4yNWMtLjE4LS4yNy0uNTktLjI0LS43OS0uNDgtOS41OC0xMy41MS0yNy44NS0xNy44OC00Mi4zLTkuMjEtMTUuMTYgOS4wOS0yMC4wNiAyOC43NS0xMC45NyA0My45MWw3Ny43NSAxMjkuNTljOC45NyAxNC45MiAxMy42OSAzMiAxMy42OSA0OS4zOVYzMDRjMCA4Ljg0LTcuMTYgMTYtMTYgMTZzLTE2LTcuMTYtMTYtMTZ2LTgwYzAtMTcuNi0xNC40LTMyLTMyLTMycy0zMiAxNC40LTMyIDMydjEyOGMwIDUxLjg5IDM0Ljg0IDk4LjA4IDg0Ljc1IDExMi4zNGwxNzkuMTkgNDYuNjJjMi42Ni42OSA1LjM4IDEuMDMgOC4wNiAxLjAzIDIzLjQ4IDAgMzItMjEuMTggMzItMzJ2LTk2YzAtMTMuNzctOC44MS0yNS45OS0yMS44OC0zMC4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uQm90dGxlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2MCAwSDI0QzEwLjggMCAwIDEwLjggMCAyNHY0OGMwIDEzLjIgMTAuOCAyNCAyNCAyNGgzMzZjMTMuMiAwIDI0LTEwLjggMjQtMjRWMjRjMC0xMy4yLTEwLjgtMjQtMjQtMjR6TTMyIDQ4MGMwIDE3LjYgMTQuNCAzMiAzMiAzMmgyNTZjMTcuNiAwIDMyLTE0LjQgMzItMzJWMTI4SDMydjM1MnptNjQtMTg0YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh2NDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uQm90dGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDE5MmgxMjBjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzMnY2NGgxMjBjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzMnY2NGgxMjBjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzMnY2NGMwIDE3LjYgMTQuNCAzMiAzMiAzMmgyNTZjMTcuNiAwIDMyLTE0LjQgMzItMzJWMTI4SDMydjY0ek0zNjAgMEgyNEMxMC44IDAgMCAxMC44IDAgMjR2NDhjMCAxMy4yIDEwLjggMjQgMjQgMjRoMzM2YzEzLjIgMCAyNC0xMC44IDI0LTI0VjI0YzAtMTMuMi0xMC44LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmVzY3JpcHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAxLjI2IDM1Mmw3OC4wNi03OC4wNmM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0yMi42My0yMi42M2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMEwyNTYgMzA2Ljc0bC04My45Ni04My45NkMyMTkuMzEgMjE2LjggMjU2IDE3Ni44OSAyNTYgMTI4YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2MjU2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di04MGgxOC43NWwxMjggMTI4LTc4LjA2IDc4LjA2Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBMMjU2IDM5Ny4yNWw3OC4wNiA3OC4wNmM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDIyLjYzLTIyLjYzYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNMMzAxLjI2IDM1MnpNNjQgOTZoOTZjMTcuNjQgMCAzMiAxNC4zNiAzMiAzMnMtMTQuMzYgMzItMzIgMzJINjRWOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxOTJWNzcuMjVjMC04LjQ5LTMuMzctMTYuNjItOS4zNy0yMi42M0wzOTMuMzcgOS4zN2MtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0g5NkM3OC4zMyAwIDY0IDE0LjMzIDY0IDMydjE2MGMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYxMTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDh2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMjBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjU2YzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6bS02NCAyNTZIMTI4di05NmgyNTZ2OTZ6bTAtMjI0SDEyOFY2NGgxOTJ2NDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDh2OTZ6bTQ4IDcyYy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJvY2VkdXJlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggMjI0SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djE0NEg2NFYxNDRjMC04LjgtNy4yLTE2LTE2LTE2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzUyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQ4aDUxMnY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMzNmMwLTYxLjktNTAuMS0xMTItMTEyLTExMnpNMTM2IDk2aDEyNi4xbDI3LjYgNTUuMmM1LjkgMTEuOCAyMi43IDExLjggMjguNiAwTDM2OCA1MS44IDM5MC4xIDk2SDUxMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg0MDkuOUwzODIuMyA4LjhDMzc2LjQtMyAzNTkuNi0zIDM1My43IDguOEwzMDQgMTA4LjJsLTE5LjktMzkuOGMtMS40LTIuNy00LjEtNC40LTcuMi00LjRIMTM2Yy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4em0yNCAyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcm9qZWN0RGlhZ3JhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzIwSDI1NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxMjhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzNTJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMTkyIDMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTUuNzJsNzMuMTYgMTI4LjA0QzIxMS45OCAzMDAuOTggMjMyLjQgMjg4IDI1NiAyODhoLjI4TDE5MiAxNzUuNTFWMTI4aDIyNFY2NEgxOTJWMzJ6TTYwOCAwSDQ4MGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxMjhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQdW1wTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzUuNTEsMTU5LjgySDg0LjI0QTY0LDY0LDAsMCwwLDIwLjUxLDIxOEwuMTQsNDQyYTY0LDY0LDAsMCwwLDYzLjc0LDY5LjhoMTkyQTY0LDY0LDAsMCwwLDMxOS42MSw0NDJMMjk5LjI0LDIxOEE2NCw2NCwwLDAsMCwyMzUuNTEsMTU5LjgyWm00LjM3LDE3My4zM2ExMy4zNSwxMy4zNSwwLDAsMS0xMy4zNCwxMy4zNGgtNDB2NDBhMTMuMzMsMTMuMzMsMCwwLDEtMTMuMzMsMTMuMzNIMTQ2LjU0YTEzLjMzLDEzLjMzLDAsMCwxLTEzLjMzLTEzLjMzdi00MGgtNDBhMTMuMzQsMTMuMzQsMCwwLDEtMTMuMzMtMTMuMzRWMzA2LjQ5YTEzLjMzLDEzLjMzLDAsMCwxLDEzLjMzLTEzLjM0aDQwdi00MGExMy4zMywxMy4zMywwLDAsMSwxMy4zMy0xMy4zM2gyNi42N2ExMy4zMywxMy4zMywwLDAsMSwxMy4zMywxMy4zM3Y0MGg0MGExMy4zNCwxMy4zNCwwLDAsMSwxMy4zNCwxMy4zNFpNMzc5LjE5LDkzLjg4LDMzNS44Nyw1MC41NmE2NCw2NCwwLDAsMC00NS4yNC0xOC43NEgyMjMuODhhMzIsMzIsMCwwLDAtMzItMzJoLTY0YTMyLDMyLDAsMCwwLTMyLDMydjk2aDEyOHYtMzJoNjYuNzVsNDMuMzEsNDMuMzFhMTYsMTYsMCwwLDAsMjIuNjMsMGwyMi42Mi0yMi42MkExNiwxNiwwLDAsMCwzNzkuMTksOTMuODhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1bXBTb2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzNS42MywxNjBIODQuMzdhNjQsNjQsMCwwLDAtNjMuNzQsNTguMjFMLjI3LDQ0Mi4yMUE2NCw2NCwwLDAsMCw2NCw1MTJIMjU2YTY0LDY0LDAsMCwwLDYzLjc0LTY5Ljc5bC0yMC4zNi0yMjRBNjQsNjQsMCwwLDAsMjM1LjYzLDE2MFpNMTYwLDQxNmMtMzMuMTIsMC02MC0yNi4zMy02MC01OC43NSwwLTI1LDM1LjctNzUuNDcsNTItOTcuMjdBMTAsMTAsMCwwLDEsMTY4LDI2MGMxNi4zMywyMS44LDUyLDcyLjI3LDUyLDk3LjI3QzIyMCwzODkuNjcsMTkzLjEyLDQxNiwxNjAsNDE2Wk0zNzkuMzEsOTQuMDYsMzM2LDUwLjc0QTY0LDY0LDAsMCwwLDI5MC43NSwzMkgyMjRBMzIsMzIsMCwwLDAsMTkyLDBIMTI4QTMyLDMyLDAsMCwwLDk2LDMydjk2SDIyNFY5Nmg2Ni43NWw0My4zMSw0My4zMWExNiwxNiwwLDAsMCwyMi42MywwbDIyLjYyLTIyLjYyQTE2LDE2LDAsMCwwLDM3OS4zMSw5NC4wNlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHV6emxlUGllY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTE5LjQ0MiAyODguNjUxYy00MS41MTkgMC01OS41IDMxLjU5My04Mi4wNTggMzEuNTkzQzM3Ny40MDkgMzIwLjI0NCA0MzIgMTQ0IDQzMiAxNDRzLTE5Ni4yODggODAtMTk2LjI4OC0zLjI5N2MwLTM1LjgyNyAzNi4yODgtNDYuMjUgMzYuMjg4LTg1Ljk4NUMyNzIgMTkuMjE2IDI0My44ODUgMCAyMTAuNTM5IDBjLTM0LjY1NCAwLTY2LjM2NiAxOC44OTEtNjYuMzY2IDU2LjM0NiAwIDQxLjM2NCAzMS43MTEgNTkuMjc3IDMxLjcxMSA4MS43NUMxNzUuODg1IDIwNy43MTkgMCAxNjYuNzU4IDAgMTY2Ljc1OHYzMzMuMjM3czE3OC42MzUgNDEuMDQ3IDE3OC42MzUtMjguNjYyYzAtMjIuNDczLTQwLTQwLjEwNy00MC04MS40NzEgMC0zNy40NTYgMjkuMjUtNTYuMzQ2IDYzLjU3Ny01Ni4zNDYgMzMuNjczIDAgNjEuNzg4IDE5LjIxNiA2MS43ODggNTQuNzE3IDAgMzkuNzM1LTM2LjI4OCA1MC4xNTgtMzYuMjg4IDg1Ljk4NSAwIDYwLjgwMyAxMjkuNjc1IDI1LjczIDE4MS4yMyAyNS43MyAwIDAtMzQuNzI1LTEyMC4xMDEgMjUuODI3LTEyMC4xMDEgMzUuOTYyIDAgNDYuNDIzIDM2LjE1MiA4Ni4zMDggMzYuMTUyQzU1Ni43MTIgNDE2IDU3NiAzODcuOTkgNTc2IDM1NC40NDNjMC0zNC4xOTktMTguOTYyLTY1Ljc5Mi01Ni41NTgtNjUuNzkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMjRoMTkyVjMySDB2MTkyek02NCA5Nmg2NHY2NEg2NFY5NnptMTkyLTY0djE5MmgxOTJWMzJIMjU2em0xMjggMTI4aC02NFY5Nmg2NHY2NHpNMCA0ODBoMTkyVjI4OEgwdjE5MnptNjQtMTI4aDY0djY0SDY0di02NHptMzUyLTY0aDMydjEyOGgtOTZ2LTMyaC0zMnY5NmgtNjRWMjg4aDk2djMyaDY0di0zMnptMCAxNjBoMzJ2MzJoLTMydi0zMnptLTY0IDBoMzJ2MzJoLTMydi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVlc3Rpb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NmMwIDEzNi45OTctMTExLjA0MyAyNDgtMjQ4IDI0OFM4IDM5Mi45OTcgOCAyNTZDOCAxMTkuMDgzIDExOS4wNDMgOCAyNTYgOHMyNDggMTExLjA4MyAyNDggMjQ4ek0yNjIuNjU1IDkwYy01NC40OTcgMC04OS4yNTUgMjIuOTU3LTExNi41NDkgNjMuNzU4LTMuNTM2IDUuMjg2LTIuMzUzIDEyLjQxNSAyLjcxNSAxNi4yNThsMzQuNjk5IDI2LjMxYzUuMjA1IDMuOTQ3IDEyLjYyMSAzLjAwOCAxNi42NjUtMi4xMjIgMTcuODY0LTIyLjY1OCAzMC4xMTMtMzUuNzk3IDU3LjMwMy0zNS43OTcgMjAuNDI5IDAgNDUuNjk4IDEzLjE0OCA0NS42OTggMzIuOTU4IDAgMTQuOTc2LTEyLjM2MyAyMi42NjctMzIuNTM0IDMzLjk3NkMyNDcuMTI4IDIzOC41MjggMjE2IDI1NC45NDEgMjE2IDI5NnY0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMS4zMzNjMC0yOC40NjIgODMuMTg2LTI5LjY0NyA4My4xODYtMTA2LjY2NyAwLTU4LjAwMi02MC4xNjUtMTAyLTExNi41MzEtMTAyek0yNTYgMzM4Yy0yNS4zNjUgMC00NiAyMC42MzUtNDYgNDYgMCAyNS4zNjQgMjAuNjM1IDQ2IDQ2IDQ2czQ2LTIwLjYzNiA0Ni00NmMwLTI1LjM2NS0yMC42MzUtNDYtNDYtNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1ZXN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMi4wMjEgMEMxMjIuMjAyIDAgNzAuNTAzIDMyLjcwMyAyOS45MTQgOTEuMDI2Yy03LjM2MyAxMC41OC01LjA5MyAyNS4wODYgNS4xNzggMzIuODc0bDQzLjEzOCAzMi43MDljMTAuMzczIDcuODY1IDI1LjEzMiA2LjAyNiAzMy4yNTMtNC4xNDggMjUuMDQ5LTMxLjM4MSA0My42My00OS40NDkgODIuNzU3LTQ5LjQ0OSAzMC43NjQgMCA2OC44MTYgMTkuNzk5IDY4LjgxNiA0OS42MzEgMCAyMi41NTItMTguNjE3IDM0LjEzNC00OC45OTMgNTEuMTY0LTM1LjQyMyAxOS44Ni04Mi4yOTkgNDQuNTc2LTgyLjI5OSAxMDYuNDA1VjMyMGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoNzIuNDcxYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtNS43NzNjMC00Mi44NiAxMjUuMjY4LTQ0LjY0NSAxMjUuMjY4LTE2MC42MjdDMzc3LjUwNCA2Ni4yNTYgMjg2LjkwMiAwIDIwMi4wMjEgMHpNMTkyIDM3My40NTljLTM4LjE5NiAwLTY5LjI3MSAzMS4wNzUtNjkuMjcxIDY5LjI3MSAwIDM4LjE5NSAzMS4wNzUgNjkuMjcgNjkuMjcxIDY5LjI3czY5LjI3MS0zMS4wNzUgNjkuMjcxLTY5LjI3MS0zMS4wNzUtNjkuMjctNjkuMjcxLTY5LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdWlkZGl0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LjUgMjE2LjhMMzQzLjIgMzI2cy0xNi42IDEwMi40LTc2LjYgMTUwLjFDMjA2LjcgNTIzLjggMCA1MTAuMiAwIDUxMC4yczMuOC0yMy4xIDExLTU1LjRsOTQuNi0xMTIuMmM0LTQuNy0uOS0xMS42LTYuNi05LjVsLTYwLjQgMjIuMWMxNC40LTQxLjcgMzIuNy04MCA1NC42LTk3LjUgNTkuOS00Ny44IDE2My4zLTQwLjkgMTYzLjMtNDAuOXptMjM4IDEzNWMtNDQgMC03OS44IDM1LjgtNzkuOCA3OS45IDAgNDQuMSAzNS43IDc5LjkgNzkuOCA3OS45IDQ0LjEgMCA3OS44LTM1LjggNzkuOC03OS45IDAtNDQuMi0zNS44LTc5LjktNzkuOC03OS45ek02MzYuNSAzMUw2MTYuNyA2Yy01LjUtNi45LTE1LjUtOC0yMi40LTIuNkwzNjEuOCAxODEuM2wtMzQuMS00M2MtNS4xLTYuNC0xNS4xLTUuMi0xOC42IDIuMmwtMjUuMyA1NC42IDg2LjcgMTA5LjIgNTguOC0xMi40YzgtMS43IDExLjQtMTEuMiA2LjMtMTcuNmwtMzQuMS00Mi45TDYzNCA1My41YzYuOS01LjUgOC0xNS42IDIuNS0yMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdW90ZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NmgtODB2LTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRoLThjLTg4LjQgMC0xNjAgNzEuNi0xNjAgMTYwdjI0MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxMjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMjg4IDBIOTZ2LTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRoLThDNzEuNiAzMiAwIDEwMy42IDAgMTkydjI0MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxMjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdW90ZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkgzMzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djEyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NGgtOGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTI4OCAwSDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MTI4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDgwdjY0YzAgMzUuMy0yOC43IDY0LTY0IDY0aC04Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4Yzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwVjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdXJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0zMDEuMDggMTQ1LjgyYy42LTEuMjEgMS43Ni0xLjgyIDIuOTItMS44MnMyLjMyLjYxIDIuOTIgMS44MmwxMS4xOCAyMi42NSAyNSAzLjYzYzIuNjcuMzkgMy43NCAzLjY3IDEuODEgNS41NmwtMTguMDkgMTcuNjMgNC4yNyAyNC44OWMuMzYgMi4xMS0xLjMxIDMuODItMy4yMSAzLjgyLS41IDAtMS4wMi0uMTItMS41Mi0uMzhMMzA0IDIxMS44N2wtMjIuMzYgMTEuNzVjLS41LjI2LTEuMDIuMzgtMS41Mi4zOC0xLjkgMC0zLjU3LTEuNzEtMy4yMS0zLjgybDQuMjctMjQuODktMTguMDktMTcuNjNjLTEuOTQtMS44OS0uODctNS4xNyAxLjgxLTUuNTZsMjQuOTktMy42MyAxMS4xOS0yMi42NXptLTU3Ljg5LTY5LjAxYzEzLjY3IDAgMjcuMjYgMi40OSA0MC4zOCA3LjQxYTYuNzc1IDYuNzc1IDAgMSAxLTIuMzggMTMuMTJjLS42NyAwLTMuMDktLjIxLTQuMTMtLjIxLTUyLjMxIDAtOTQuODYgNDIuNTUtOTQuODYgOTQuODYgMCA1Mi4zIDQyLjU1IDk0Ljg2IDk0Ljg2IDk0Ljg2IDEuMDMgMCAzLjQ4LS4yMSA0LjEzLS4yMSAzLjkzIDAgNi44IDMuMTQgNi44IDYuNzggMCAyLjk4LTEuOTQgNS41MS00LjYyIDYuNDItMTMuMDcgNC44Ny0yNi41OSA3LjM0LTQwLjE5IDcuMzRDMTc5LjY3IDMwNy4xOSAxMjggMjU1LjUxIDEyOCAxOTJjMC02My41MiA1MS42Ny0xMTUuMTkgMTE1LjE5LTExNS4xOXpNMzgwLjggNDQ4SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFkaWF0aW9uQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMiAyNTZoNzkuMWM5LjIgMCAxNi45LTcuNyAxNi0xNi44LTQuNi00My42LTI3LTgxLjgtNTkuNS0xMDcuOC03LjYtNi4xLTE4LjgtNC41LTI0IDMuOEwyODEuOSAyMDJjMTggMTEuMiAzMC4xIDMxLjIgMzAuMSA1NHptLTk3LjggNTQuMUwxNzIuNCAzNzdjLTQuOSA3LjgtMi40IDE4LjQgNS44IDIyLjUgMjEuMSAxMC40IDQ0LjcgMTYuNSA2OS44IDE2LjVzNDguNy02LjEgNjkuOS0xNi41YzguMi00LjEgMTAuNi0xNC43IDUuOC0yMi41bC00MS44LTY2LjljLTkuOCA2LjItMjEuNCA5LjktMzMuOCA5LjlzLTI0LjEtMy43LTMzLjktOS45ek0xMDQuOSAyNTZIMTg0YzAtMjIuOCAxMi4xLTQyLjggMzAuMi01NC4xbC00MS43LTY2LjhjLTUuMi04LjMtMTYuNC05LjktMjQtMy44LTMyLjYgMjYtNTQuOSA2NC4yLTU5LjUgMTA3LjgtMS4xIDkuMiA2LjcgMTYuOSAxNS45IDE2Ljl6TTI0OCA1MDRjMTM3IDAgMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OHptMC00MzJjMTAxLjUgMCAxODQgODIuNSAxODQgMTg0cy04Mi41IDE4NC0xODQgMTg0UzY0IDM1Ny41IDY0IDI1NiAxNDYuNSA3MiAyNDggNzJ6bTAgMjE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFkaWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyOC4yIDI1NS44aDE1MS42YzkuMSAwIDE2LjgtNy43IDE2LjItMTYuOC01LjEtNzUuOC00NC40LTE0Mi4yLTEwMi41LTE4NC4yLTcuNC01LjMtMTcuOS0yLjktMjIuNyA0LjhMMjkwLjQgMTg4YzIyLjYgMTQuMyAzNy44IDM5LjIgMzcuOCA2Ny44em0tMzcuOCA2Ny43Yy0xMi4zIDcuNy0yNi44IDEyLjQtNDIuNCAxMi40LTE1LjYgMC0zMC00LjctNDIuNC0xMi40TDEyNS4yIDQ1MmMtNC44IDcuNy0yLjQgMTguMSA1LjYgMjIuNEMxNjUuNyA0OTMuMiAyMDUuNiA1MDQgMjQ4IDUwNHM4Mi4zLTEwLjggMTE3LjItMjkuNmM4LTQuMyAxMC40LTE0LjggNS42LTIyLjRsLTgwLjQtMTI4LjV6TTI0OCAzMDMuOGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OC00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bS0yMzEuOC00OGgxNTEuNmMwLTI4LjYgMTUuMi01My41IDM3LjgtNjcuN0wxMjUuMiA1OS43Yy00LjgtNy43LTE1LjMtMTAuMi0yMi43LTQuOEM0NC40IDk2LjkgNS4xIDE2My4zIDAgMjM5LjFjLS42IDkgNy4xIDE2LjcgMTYuMiAxNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYWluYm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OC4zIDMyLjdDMTE1LjQgNDIuOSAwIDE3Ni45IDAgMzMwLjJWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwQzY0IDE4Ni44IDE4MC45IDgwLjMgMzE3LjUgOTcuOSA0MzAuNCAxMTIuNCA1MTIgMjE0IDUxMiAzMjcuOFY0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC0xNjUuMy0xNDAtMjk4LjYtMzA3LjctMjg3LjN6bS01LjYgOTYuOUMxNjYgMTQyIDk2IDIyOS4xIDk2IDMyNi43VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTc0LjggNjQuNS0xMzQuOCAxNDAuOC0xMjcuNCA2Ni41IDYuNSAxMTUuMiA2Ni4yIDExNS4yIDEzMy4xVjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTExNC4yLTEwMC4yLTIwNS40LTIxNy4zLTE5MC40em02LjIgOTYuM2MtNDUuNiA4LjktNzYuOSA1MS41LTc2LjkgOTcuOVY0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC0xNy42IDE0LjMtMzIgMzItMzJzMzIgMTQuNCAzMiAzMnYxNDRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC01OS4yLTUzLjgtMTA2LTExNS4xLTk0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhbmRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQuOTcxIDM1OS4wMjljOS4zNzMgOS4zNzMgOS4zNzMgMjQuNTY5IDAgMzMuOTQxbC04MCA3OS45ODRjLTE1LjAxIDE1LjAxLTQwLjk3MSA0LjQ5LTQwLjk3MS0xNi45NzFWNDE2aC01OC43ODVhMTIuMDA0IDEyLjAwNCAwIDAgMS04Ljc3My0zLjgxMmwtNzAuNTU2LTc1LjU5NiA1My4zMzMtNTcuMTQzTDM1MiAzMzZoMzJ2LTM5Ljk4MWMwLTIxLjQzOCAyNS45NDMtMzEuOTk4IDQwLjk3MS0xNi45NzFsODAgNzkuOTgxek0xMiAxNzZoODRsNTIuNzgxIDU2LjU1MSA1My4zMzMtNTcuMTQzLTcwLjU1Ni03NS41OTZBMTEuOTk5IDExLjk5OSAwIDAgMCAxMjIuNzg1IDk2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjU2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJ6bTM3MiAwdjM5Ljk4NGMwIDIxLjQ2IDI1Ljk2MSAzMS45OCA0MC45NzEgMTYuOTcxbDgwLTc5Ljk4NGM5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFsLTgwLTc5Ljk4MUM0MDkuOTQzIDI0LjAyMSAzODQgMzQuNTgyIDM4NCA1Ni4wMTlWOTZoLTU4Ljc4NWExMi4wMDQgMTIuMDA0IDAgMCAwLTguNzczIDMuODEyTDk2IDMzNkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExMC43ODVjMy4zMjYgMCA2LjUwMy0xLjM4MSA4Ljc3My0zLjgxMkwzNTIgMTc2aDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWNlaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1OC40IDMuMkwzMjAgNDggMjY1LjYgMy4yYTE1LjkgMTUuOSAwIDAgMC0xOS4yIDBMMTkyIDQ4IDEzNy42IDMuMmExNS45IDE1LjkgMCAwIDAtMTkuMiAwTDY0IDQ4IDI1LjYgMy4yQzE1LTQuNyAwIDIuOCAwIDE2djQ4MGMwIDEzLjIgMTUgMjAuNyAyNS42IDEyLjhMNjQgNDY0bDU0LjQgNDQuOGExNS45IDE1LjkgMCAwIDAgMTkuMiAwTDE5MiA0NjRsNTQuNCA0NC44YTE1LjkgMTUuOSAwIDAgMCAxOS4yIDBMMzIwIDQ2NGwzOC40IDQ0LjhjMTAuNSA3LjkgMjUuNi40IDI1LjYtMTIuOFYxNmMwLTEzLjItMTUtMjAuNy0yNS42LTEyLjh6TTMyMCAzNjBjMCA0LjQtMy42IDgtOCA4SDcyYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgyNDBjNC40IDAgOCAzLjYgOCA4djE2em0wLTk2YzAgNC40LTMuNiA4LTggOEg3MmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMjQwYzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhINzJjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDI0MGM0LjQgMCA4IDMuNiA4IDh2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY29yZFZpbnlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxNTJhMTA0IDEwNCAwIDEgMCAxMDQgMTA0IDEwNCAxMDQgMCAwIDAtMTA0LTEwNHptMCAxMjhhMjQgMjQgMCAxIDEgMjQtMjQgMjQgMjQgMCAwIDEtMjQgMjR6bTAtMjcyQzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgMzc2YTEyOCAxMjggMCAxIDEgMTI4LTEyOCAxMjggMTI4IDAgMCAxLTEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY3ljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0LjU2MSAyNjEuOTAzYzMuMjMyIDEzLjk5Ny0xMi4xMjMgMjQuNjM1LTI0LjA2OCAxNy4xNjhsLTQwLjczNi0yNS40NTUtNTAuODY3IDgxLjQwMkM1NS42MDYgMzU2LjI3MyA3MC45NiAzODQgOTYuMDEyIDM4NEgxNDhjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDk2LjExNWMtNzUuMzM0IDAtMTIxLjMwMi04My4wNDgtODEuNDA4LTE0Ni44OGw1MC44MjItODEuMzg4LTQwLjcyNS0yNS40NDhjLTEyLjA4MS03LjU0Ny04Ljk2Ni0yNS45NjEgNC44NzktMjkuMTU4bDExMC4yMzctMjUuNDVjOC42MTEtMS45ODggMTcuMjAxIDMuMzgxIDE5LjE4OSAxMS45OWwyNS40NTIgMTEwLjIzN3ptOTguNTYxLTE4Mi45MTVsNDEuMjg5IDY2LjA3Ni00MC43NCAyNS40NTdjLTEyLjA1MSA3LjUyOC05IDI1Ljk1MyA0Ljg3OSAyOS4xNThsMTEwLjIzNyAyNS40NWM4LjY3MiAxLjk5OSAxNy4yMTUtMy40MzggMTkuMTg5LTExLjk5bDI1LjQ1LTExMC4yMzdjMy4xOTctMTMuODQ0LTExLjk5LTI0LjcxOS0yNC4wNjgtMTcuMTY4bC00MC42ODcgMjUuNDI0LTQxLjI2My02Ni4wODJjLTM3LjUyMS02MC4wMzMtMTI1LjIwOS02MC4xNzEtMTYyLjgxNiAwbC0xNy45NjMgMjguNzY2Yy0zLjUxIDUuNjItMS44IDEzLjAyMSAzLjgyIDE2LjUzM2wzMy45MTkgMjEuMTk1YzUuNjIgMy41MTIgMTMuMDI0IDEuODAzIDE2LjUzNi0zLjgxN2wxNy45NjEtMjguNzQzYzEyLjcxMi0yMC4zNDEgNDEuOTczLTE5LjY3NiA1NC4yNTctLjAyMnpNNDk3LjI4OCAzMDEuMTJsLTI3LjUxNS00NC4wNjVjLTMuNTExLTUuNjIzLTEwLjkxNi03LjMzNC0xNi41MzgtMy44MjFsLTMzLjg2MSAyMS4xNTljLTUuNjIgMy41MTItNy4zMyAxMC45MTUtMy44MTggMTYuNTM2bDI3LjU2NCA0NC4xMTJjMTMuMjU3IDIxLjIxMS0yLjA1NyA0OC45Ni0yNy4xMzYgNDguOTZIMzIwVjMzNi4wMmMwLTE0LjIxMy0xNy4yNDItMjEuMzgzLTI3LjMxMy0xMS4zMTNsLTgwIDc5Ljk4MWMtNi4yNDkgNi4yNDgtNi4yNDkgMTYuMzc5IDAgMjIuNjI3bDgwIDc5Ljk4OUMzMDIuNjg5IDUxNy4zMDggMzIwIDUxMC4zIDMyMCA0OTUuOTg5VjQ0OGg5NS44OGM3NS4yNzQgMCAxMjEuMzM1LTgyLjk5NyA4MS40MDgtMTQ2Ljg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRvQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni40NTUgOGM2Ni4yNjkuMTE5IDEyNi40MzcgMjYuMjMzIDE3MC44NTkgNjguNjg1bDM1LjcxNS0zNS43MTVDNDc4LjE0OSAyNS44NTEgNTA0IDM2LjU1OSA1MDQgNTcuOTQxVjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMzQ1Ljk0MWMtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNDEuNzUtNDEuNzVjLTMwLjg2NC0yOC44OTktNzAuODAxLTQ0LjkwNy0xMTMuMjMtNDUuMjczLTkyLjM5OC0uNzk4LTE3MC4yODMgNzMuOTc3LTE2OS40ODQgMTY5LjQ0MkM4OC43NjQgMzQ4LjAwOSAxNjIuMTg0IDQyNCAyNTYgNDI0YzQxLjEyNyAwIDc5Ljk5Ny0xNC42NzggMTEwLjYyOS00MS41NTYgNC43NDMtNC4xNjEgMTEuOTA2LTMuOTA4IDE2LjM2OC41NTNsMzkuNjYyIDM5LjY2MmM0Ljg3MiA0Ljg3MiA0LjYzMSAxMi44MTUtLjQ4MiAxNy40MzNDMzc4LjIwMiA0NzkuODEzIDMxOS45MjYgNTA0IDI1NiA1MDQgMTE5LjAzNCA1MDQgOC4wMDEgMzkyLjk2NyA4IDI1Ni4wMDIgNy45OTkgMTE5LjE5MyAxMTkuNjQ2IDcuNzU1IDI1Ni40NTUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDAuMzMgMGgtNDcuNDFhMTIgMTIgMCAwIDAtMTIgMTIuNTdsNCA4Mi43NkEyNDcuNDIgMjQ3LjQyIDAgMCAwIDI1NiA4QzExOS4zNCA4IDcuOSAxMTkuNTMgOCAyNTYuMTkgOC4xIDM5My4wNyAxMTkuMSA1MDQgMjU2IDUwNGEyNDcuMSAyNDcuMSAwIDAgMCAxNjYuMTgtNjMuOTEgMTIgMTIgMCAwIDAgLjQ4LTE3LjQzbC0zNC0zNGExMiAxMiAwIDAgMC0xNi4zOC0uNTVBMTc2IDE3NiAwIDEgMSA0MDIuMSAxNTcuOGwtMTAxLjUzLTQuODdhMTIgMTIgMCAwIDAtMTIuNTcgMTJ2NDcuNDFhMTIgMTIgMCAwIDAgMTIgMTJoMjAwLjMzYTEyIDEyIDAgMCAwIDEyLTEyVjEyYTEyIDEyIDAgMCAwLTEyLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdpc3RlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4NS4zNjMgMjA3LjQ3NWMwIDE4LjYtOS44MzEgMjguNDMxLTI4LjQzMSAyOC40MzFoLTI5Ljg3NnYtNTYuMTRoMjMuMzc4YzI4LjY2OCAwIDM0LjkyOSA4Ljc3MyAzNC45MjkgMjcuNzA5ek01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHpNMzYzLjQxMSAzNjAuNDE0Yy00Ni43MjktODQuODI1LTQzLjI5OS03OC42MzYtNDQuNzAyLTgwLjk4IDIzLjQzMi0xNS4xNzIgMzcuOTQ1LTQyLjk3OSAzNy45NDUtNzQuNDg2IDAtNTQuMjQ0LTMxLjUtODkuMjUyLTEwNS40OTgtODkuMjUyaC03MC42NjdjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNFYzNzJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDIyLjU2N2MxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTcxLjY2M2gyNS41NTZsNDQuMTI5IDgyLjkzN2EyNC4wMDEgMjQuMDAxIDAgMCAwIDIxLjE4OCAxMi43MjdoMjQuNDY0YzE4LjI2MS0uMDAxIDI5LjgyOS0xOS41OTEgMjEuMDE4LTM1LjU4N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVtb3ZlRm9ybWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiA0MTZoLTExLjE3bDkuMjYtMjcuNzdMMjY3IDMzNi40IDI0MC40OSA0MTZIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTI5Ny44MiA0Mi4xTDM3NyAyNTkuNTkgNDI2LjE3IDExMkg1NDR2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djQzLjlMNDUuNDYgMy4zOEExNiAxNiAwIDAgMCAyMyA2LjE5TDMuMzcgMzEuNDZhMTYgMTYgMCAwIDAgMi44MSAyMi40NWw1ODguMzYgNDU0LjcyYTE2IDE2IDAgMCAwIDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdhMTYgMTYgMCAwIDAtMi44Mi0yMi40NXpNMzA5LjkxIDIwNy43NkwyMjQgMTQxLjM2VjExMmgxMTcuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlcGx5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNi4zMDkgMTg5LjgzNkwzMTIuMzEzIDM3Ljg1MUMzMjcuNzIgMjQuNTQ2IDM1MiAzNS4zNDggMzUyIDU2LjAxNXY4Mi43NjNjMTI5LjE4MiAxMC4yMzEgMjI0IDUyLjIxMiAyMjQgMTgzLjU0OCAwIDYxLjQ0MS0zOS41ODIgMTIyLjMwOS04My4zMzMgMTU0LjEzMi0xMy42NTMgOS45MzEtMzMuMTExLTIuNTMzLTI4LjA3Ny0xOC42MzEgMzguNTEyLTEyMy4xNjItMy45MjItMTY5LjQ4Mi0xMTIuNTktMTgyLjAxNXY4NC4xNzVjMCAyMC43MDEtMjQuMyAzMS40NTMtMzkuNjg3IDE4LjE2NEwxMzYuMzA5IDIyNi4xNjRjLTExLjA3MS05LjU2MS0xMS4wODYtMjYuNzUzIDAtMzYuMzI4em0tMTI4IDM2LjMyOEwxODQuMzEzIDM3OC4xNUMxOTkuNyAzOTEuNDM5IDIyNCAzODAuNjg3IDIyNCAzNTkuOTg2di0xNS44MThsLTEwOC42MDYtOTMuNzg1QTU1Ljk2IDU1Ljk2IDAgMCAxIDk2IDIwNy45OThhNTUuOTUzIDU1Ljk1MyAwIDAgMSAxOS4zOTMtNDIuMzhMMjI0IDcxLjgzMlY1Ni4wMTVjMC0yMC42NjctMjQuMjgtMzEuNDY5LTM5LjY4Ny0xOC4xNjRMOC4zMDkgMTg5LjgzNmMtMTEuMDg2IDkuNTc1LTExLjA3MSAyNi43NjcgMCAzNi4zMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlcGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMzA5IDE4OS44MzZMMTg0LjMxMyAzNy44NTFDMTk5LjcxOSAyNC41NDYgMjI0IDM1LjM0NyAyMjQgNTYuMDE1djgwLjA1M2MxNjAuNjI5IDEuODM5IDI4OCAzNC4wMzIgMjg4IDE4Ni4yNTggMCA2MS40NDEtMzkuNTgxIDEyMi4zMDktODMuMzMzIDE1NC4xMzItMTMuNjUzIDkuOTMxLTMzLjExMS0yLjUzMy0yOC4wNzctMTguNjMxIDQ1LjM0NC0xNDUuMDEyLTIxLjUwNy0xODMuNTEtMTc2LjU5LTE4NS43NDJWMzYwYzAgMjAuNy0yNC4zIDMxLjQ1My0zOS42ODcgMTguMTY0bC0xNzYuMDA0LTE1MmMtMTEuMDcxLTkuNTYyLTExLjA4Ni0yNi43NTMgMC0zNi4zMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlcHVibGljYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDE5MmMwLTg4LjQtNzEuNi0xNjAtMTYwLTE2MEgxNjBDNzEuNiAzMiAwIDEwMy42IDAgMTkydjY0aDU0NHYtNjR6bS0zNjcuNy0yMS42bC0xOS44IDE5LjMgNC43IDI3LjNjLjggNC45LTQuMyA4LjYtOC43IDYuM0wxMjggMjEwLjRsLTI0LjUgMTIuOWMtNC4zIDIuMy05LjUtMS40LTguNy02LjNsNC43LTI3LjMtMTkuOC0xOS4zYy0zLjYtMy41LTEuNi05LjUgMy4zLTEwLjJsMjcuNC00IDEyLjItMjQuOGMyLjItNC41IDguNi00LjQgMTAuNyAwbDEyLjIgMjQuOCAyNy40IDRjNSAuNyA2LjkgNi43IDMuNCAxMC4yem0xNDQgMGwtMTkuOCAxOS4zIDQuNyAyNy4zYy44IDQuOS00LjMgOC42LTguNyA2LjNMMjcyIDIxMC40bC0yNC41IDEyLjljLTQuMyAyLjMtOS41LTEuNC04LjctNi4zbDQuNy0yNy4zLTE5LjgtMTkuM2MtMy42LTMuNS0xLjYtOS41IDMuMy0xMC4ybDI3LjQtNCAxMi4yLTI0LjhjMi4yLTQuNSA4LjYtNC40IDEwLjcgMGwxMi4yIDI0LjggMjcuNCA0YzUgLjcgNi45IDYuNyAzLjQgMTAuMnptMTQ0IDBsLTE5LjggMTkuMyA0LjcgMjcuM2MuOCA0LjktNC4zIDguNi04LjcgNi4zTDQxNiAyMTAuNGwtMjQuNSAxMi45Yy00LjMgMi4zLTkuNS0xLjQtOC43LTYuM2w0LjctMjcuMy0xOS44LTE5LjNjLTMuNi0zLjUtMS42LTkuNSAzLjMtMTAuMmwyNy40LTQgMTIuMi0yNC44YzIuMi00LjUgOC42LTQuNCAxMC43IDBsMTIuMiAyNC44IDI3LjQgNGM1IC43IDYuOSA2LjcgMy40IDEwLjJ6TTYyNCAzMjBoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4SDB2MTc2YzAgOC44IDcuMiAxNiAxNiAxNmg5NmM4LjggMCAxNi03LjIgMTYtMTZ2LTgwaDE5MnY4MGMwIDguOCA3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2VjM1MmgzMnY0My4zYzAgNDEuOCAzMCA4MC4xIDcxLjYgODQuMyA0Ny44IDQuOSA4OC40LTMyLjcgODguNC03OS42di02NGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlc3Ryb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMjhjMzUuMyAwIDY0LTI4LjcgNjQtNjRTMTYzLjMgMCAxMjggMCA2NCAyOC43IDY0IDY0czI4LjcgNjQgNjQgNjR6bTM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0UzU0Ny4zIDAgNTEyIDBzLTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptMTI3LjMgMjI2LjVsLTQ1LjYtMTg1LjhjLTMuMy0xMy41LTE1LjUtMjMtMjkuOC0yNC4yLTE1IDkuNy0zMi44IDE1LjUtNTIgMTUuNS0xOS4yIDAtMzctNS44LTUyLTE1LjUtMTQuMyAxLjItMjYuNSAxMC43LTI5LjggMjQuMmwtNDUuNiAxODUuOEMzODEgMzY5LjYgMzkzIDM4NCA0MDkuMiAzODRINDY0djEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzODRoNTQuOGMxNi4yIDAgMjguMi0xNC40IDI0LjUtMjkuNXpNMzM2IDBoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDgwYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2ek0xODAuMSAxNDQuNGMtMTUgOS44LTMyLjkgMTUuNi01Mi4xIDE1LjYtMTkuMiAwLTM3LjEtNS44LTUyLjEtMTUuNkM1MS4zIDE0Ni41IDMyIDE2Ni45IDMyIDE5MnYxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOHYxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzUyaDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTkyYzAtMjUuMS0xOS4zLTQ1LjUtNDMuOS00Ny42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXR3ZWV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyOS42NTcgMzQzLjU5OEw1MjguOTcxIDQ0NC4yODRjLTkuMzczIDkuMzcyLTI0LjU2OCA5LjM3Mi0zMy45NDEgMEwzOTQuMzQzIDM0My41OThjLTkuMzczLTkuMzczLTkuMzczLTI0LjU2OSAwLTMzLjk0MWwxMC44MjMtMTAuODIzYzkuNTYyLTkuNTYyIDI1LjEzMy05LjM0IDM0LjQxOS40OTJMNDgwIDM0Mi4xMThWMTYwSDI5Mi40NTFhMjQuMDA1IDI0LjAwNSAwIDAgMS0xNi45NzEtNy4wMjlsLTE2LTE2QzI0NC4zNjEgMTIxLjg1MSAyNTUuMDY5IDk2IDI3Ni40NTEgOTZINTIwYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYyMjIuMTE4bDQwLjQxNi00Mi43OTJjOS4yODUtOS44MzEgMjQuODU2LTEwLjA1NCAzNC40MTktLjQ5MmwxMC44MjMgMTAuODIzYzkuMzcyIDkuMzcyIDkuMzcyIDI0LjU2OS0uMDAxIDMzLjk0MXptLTI2NS4xMzggMTUuNDMxQTIzLjk5OSAyMy45OTkgMCAwIDAgMzQ3LjU0OCAzNTJIMTYwVjE2OS44ODFsNDAuNDE2IDQyLjc5MmM5LjI4NiA5LjgzMSAyNC44NTYgMTAuMDU0IDM0LjQxOS40OTFsMTAuODIyLTEwLjgyMmM5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFMMTQ0Ljk3MSA2Ny43MTZjLTkuMzczLTkuMzczLTI0LjU2OS05LjM3My0zMy45NDEgMEwxMC4zNDMgMTY4LjQwMmMtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY5IDAgMzMuOTQxbDEwLjgyMiAxMC44MjJjOS41NjIgOS41NjIgMjUuMTMzIDkuMzQgMzQuNDE5LS40OTFMOTYgMTY5Ljg4MVYzOTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDI0My41NDljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFsLTE2LjAwMS0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmliYm9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMSA0NDQuM2MtOS42IDEwLjgtNy41IDI3LjYgNC41IDM1LjdsNjguOCAyNy45YzkuOSA2LjcgMjMuMyA1IDMxLjMtMy44bDkxLjgtMTAxLjktNzkuMi04Ny45LTExNy4yIDEzMHptNDM1LjggMHMtMjkyLTMyNC42LTI5NS40LTMzMC4xYzE1LjQtOC40IDQwLjItMTcuOSA3Ny41LTE3LjlzNjIuMSA5LjUgNzcuNSAxNy45Yy0zLjMgNS42LTU2IDY0LjYtNTYgNjQuNmw3OS4xIDg3LjcgMzQuMi0zOGMyOC43LTMxLjkgMzMuMy03OC42IDExLjQtMTE1LjVsLTQzLjctNzMuNWMtNC4zLTcuMi05LjktMTMuMy0xNi44LTE4LTQwLjctMjcuNi0xMjcuNC0yOS43LTE3MS40IDAtNi45IDQuNy0xMi41IDEwLjgtMTYuOCAxOGwtNDMuNiA3My4yYy0xLjUgMi41LTM3LjEgNjIuMiAxMS41IDExNkwzMzcuNSA1MDRjOCA4LjkgMjEuNCAxMC41IDMxLjMgMy44bDY4LjgtMjcuOWMxMS45LTggMTQtMjQuOCA0LjMtMzUuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNjRDMTEwLjA2IDY0IDAgMTI1LjkxIDAgMjA4djk4LjEzQzAgMzg0LjQ4IDExNC42MiA0NDggMjU2IDQ0OHMyNTYtNjMuNTIgMjU2LTE0MS44N1YyMDhjMC04Mi4wOS0xMTAuMDYtMTQ0LTI1Ni0xNDR6bTAgNjRjMTA2LjA0IDAgMTkyIDM1LjgyIDE5MiA4MCAwIDkuMjYtMy45NyAxOC4xMi0xMC45MSAyNi4zOUMzOTIuMTUgMjA4LjIxIDMyOC4yMyAxOTIgMjU2IDE5MnMtMTM2LjE1IDE2LjIxLTE4MS4wOSA0Mi4zOUM2Ny45NyAyMjYuMTIgNjQgMjE3LjI2IDY0IDIwOGMwLTQ0LjE4IDg1Ljk2LTgwIDE5Mi04MHpNMTIwLjQzIDI2NC42NEMxNTUuMDQgMjQ5LjkzIDIwMS42NCAyNDAgMjU2IDI0MHMxMDAuOTYgOS45MyAxMzUuNTcgMjQuNjRDMzU2Ljg0IDI3OS4wNyAzMDguOTMgMjg4IDI1NiAyODhzLTEwMC44NC04LjkzLTEzNS41Ny0yMy4zNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzMuMTkgNDAyLjY3bC0xMzkuNzktMzIwQzQyOC40MyA3MS4yOSA0MTcuNiA2NCA0MDUuNjggNjRoLTk3LjU5bDIuNDUgMjMuMTZjLjUgNC43Mi0zLjIxIDguODQtNy45NiA4Ljg0aC0yOS4xNmMtNC43NSAwLTguNDYtNC4xMi03Ljk2LTguODRMMjY3LjkxIDY0aC05Ny41OWMtMTEuOTMgMC0yMi43NiA3LjI5LTI3LjczIDE4LjY3TDIuOCA0MDIuNjdDLTYuNDUgNDIzLjg2IDguMzEgNDQ4IDMwLjU0IDQ0OGgxOTYuODRsMTAuMzEtOTcuNjhjLjg2LTguMTQgNy43Mi0xNC4zMiAxNS45MS0xNC4zMmg2OC44YzguMTkgMCAxNS4wNSA2LjE4IDE1LjkxIDE0LjMyTDM0OC42MiA0NDhoMTk2Ljg0YzIyLjIzIDAgMzYuOTktMjQuMTQgMjcuNzMtNDUuMzN6TTI2MC40IDEzNS4xNmE4IDggMCAwIDEgNy45Ni03LjE2aDM5LjI5YzQuMDkgMCA3LjUzIDMuMDkgNy45NiA3LjE2bDQuNiA0My41OGMuNzUgNy4wOS00LjgxIDEzLjI2LTExLjkzIDEzLjI2aC00MC41NGMtNy4xMyAwLTEyLjY4LTYuMTctMTEuOTMtMTMuMjZsNC41OS00My41OHpNMzE1LjY0IDMwNGgtNTUuMjljLTkuNSAwLTE2LjkxLTguMjMtMTUuOTEtMTcuNjhsNS4wNy00OGMuODYtOC4xNCA3LjcyLTE0LjMyIDE1LjkxLTE0LjMyaDQ1LjE1YzguMTkgMCAxNS4wNSA2LjE4IDE1LjkxIDE0LjMybDUuMDcgNDhjMSA5LjQ1LTYuNDEgMTcuNjgtMTUuOTEgMTcuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYm90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLDIyNEg2NFY0MTZIMzJBMzEuOTYxNjYsMzEuOTYxNjYsMCwwLDEsMCwzODRWMjU2QTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLDMyLDIyNFptNTEyLTQ4VjQ0OGE2NC4wNjMyOCw2NC4wNjMyOCwwLDAsMS02NCw2NEgxNjBhNjQuMDYzMjgsNjQuMDYzMjgsMCwwLDEtNjQtNjRWMTc2YTc5Ljk3NCw3OS45NzQsMCwwLDEsODAtODBIMjg4VjMyYTMyLDMyLDAsMCwxLDY0LDBWOTZINDY0QTc5Ljk3NCw3OS45NzQsMCwwLDEsNTQ0LDE3NlpNMjY0LDI1NmE0MCw0MCwwLDEsMC00MCw0MEEzOS45OTcsMzkuOTk3LDAsMCwwLDI2NCwyNTZabS04LDEyOEgxOTJ2MzJoNjRabTk2LDBIMjg4djMyaDY0Wk00NTYsMjU2YTQwLDQwLDAsMSwwLTQwLDQwQTM5Ljk5NywzOS45OTcsMCwwLDAsNDU2LDI1NlptLTgsMTI4SDM4NHYzMmg2NFpNNjQwLDI1NlYzODRhMzEuOTYxNjYsMzEuOTYxNjYsMCwwLDEtMzIsMzJINTc2VjIyNGgzMkEzMS45NjE2NiwzMS45NjE2NiwwLDAsMSw2NDAsMjU2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2NrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1LjEyMDE5LDE5LjA5Mzc1Yy0xLjE4OTQ1LTUuNTMxMjUtNi42NTgxOS0xMS0xMi4yMDctMTIuMTg3NUM0NjAuNzE2LDAsNDM1LjUwNywwLDQxMC40MDc0NywwLDMwNy4xNzUyMywwLDI0NS4yNjkwOSw1NS4yMDMxMiwxOTkuMDUyMzgsMTI4SDk0LjgzNzcyYy0xNi4zNDc2My4wMTU2Mi0zNS41NTY1OCwxMS44NzUtNDIuODg2NjQsMjYuNDg0MzhMMi41MTU2MiwyNTMuMjk2ODhBMjguNCwyOC40LDAsMCwwLDAsMjY0YTI0LjAwODY3LDI0LjAwODY3LDAsMCwwLDI0LjAwNTgyLDI0SDEyNy44MTYxOGwtMjIuNDc0NTcsMjIuNDY4NzVjLTExLjM2NTIxLDExLjM2MTMzLTEyLjk5NjA3LDMyLjI1NzgxLDAsNDUuMjVMMTU2LjI0NTgyLDQwNi42MjVjMTEuMTU2MjMsMTEuMTg3NSwzMi4xNTYxOSwxMy4xNTYyNSw0NS4yNzcyNiwwbDIyLjQ3NDU3LTIyLjQ2ODc1VjQ4OGEyNC4wMDg2NywyNC4wMDg2NywwLDAsMCwyNC4wMDU4MSwyNCwyOC41NTkzNCwyOC41NTkzNCwwLDAsMCwxMC43MDctMi41MTU2Mmw5OC43MjgzNC00OS4zOTA2M2MxNC42Mjg4OC03LjI5Njg3LDI2LjUwNzc2LTI2LjUsMjYuNTA3NzYtNDIuODU5MzdWMzEyLjc5Njg4YzcyLjU5NzUzLTQ2LjMxMjUsMTI4LjAzNDkzLTEwOC40MDYyNiwxMjguMDM0OTMtMjExLjA5Mzc2QzUxMi4wNzUyNiw3Ni41LDUxMi4wNzUyNiw1MS4yOTY4OCw1MDUuMTIwMTksMTkuMDkzNzVaTTM4NC4wNDAzMywxNjhBNDAsNDAsMCwxLDEsNDI0LjA1LDEyOCw0MC4wMjMyMiw0MC4wMjMyMiwwLDAsMSwzODQuMDQwMzMsMTY4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb3V0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzIwaC05NmMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMmg5NnM5Ni0xMDcgOTYtMTYwLTQzLTk2LTk2LTk2LTk2IDQzLTk2IDk2YzAgMjUuNSAyMi4yIDYzLjQgNDUuMyA5NkgzMjBjLTUyLjkgMC05NiA0My4xLTk2IDk2czQzLjEgOTYgOTYgOTZoOTZjMTcuNiAwIDMyIDE0LjQgMzIgMzJzLTE0LjQgMzItMzIgMzJIMTg1LjVjLTE2IDI0LjgtMzMuOCA0Ny43LTQ3LjMgNjRINDE2YzUyLjkgMCA5Ni00My4xIDk2LTk2cy00My4xLTk2LTk2LTk2em0wLTI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6TTk2IDI1NmMtNTMgMC05NiA0My05NiA5NnM5NiAxNjAgOTYgMTYwIDk2LTEwNyA5Ni0xNjAtNDMtOTYtOTYtOTZ6bTAgMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnNzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMTEyIDQxNmMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptMTU3LjUzMyAwaC0zNC4zMzVjLTYuMDExIDAtMTEuMDUxLTQuNjM2LTExLjQ0Mi0xMC42MzQtNS4yMTQtODAuMDUtNjkuMjQzLTE0My45Mi0xNDkuMTIzLTE0OS4xMjMtNS45OTctLjM5LTEwLjYzMy01LjQzMS0xMC42MzMtMTEuNDQxdi0zNC4zMzVjMC02LjUzNSA1LjQ2OC0xMS43NzcgMTEuOTk0LTExLjQyNSAxMTAuNTQ2IDUuOTc0IDE5OC45OTcgOTQuNTM2IDIwNC45NjQgMjA0Ljk2NC4zNTIgNi41MjYtNC44OSAxMS45OTQtMTEuNDI1IDExLjk5NHptMTAzLjAyNyAwaC0zNC4zMzRjLTYuMTYxIDAtMTEuMTc1LTQuODgyLTExLjQyNy0xMS4wMzgtNS41OTgtMTM2LjUzNS0xMTUuMjA0LTI0Ni4xNjEtMjUxLjc2LTI1MS43NkM2OC44ODIgMTUyLjk0OSA2NCAxNDcuOTM1IDY0IDE0MS43NzRWMTA3LjQ0YzAtNi40NTQgNS4zMzgtMTEuNjY0IDExLjc4Ny0xMS40MzIgMTY3LjgzIDYuMDI1IDMwMi4yMSAxNDEuMTkxIDMwOC4yMDUgMzA4LjIwNS4yMzIgNi40NDktNC45NzggMTEuNzg3LTExLjQzMiAxMS43ODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjguMDgxIDQxNS45NTljMCAzNS4zNjktMjguNjcyIDY0LjA0MS02NC4wNDEgNjQuMDQxUzAgNDUxLjMyOCAwIDQxNS45NTlzMjguNjcyLTY0LjA0MSA2NC4wNDEtNjQuMDQxIDY0LjA0IDI4LjY3MyA2NC4wNCA2NC4wNDF6bTE3NS42NiA0Ny4yNWMtOC4zNTQtMTU0LjYtMTMyLjE4NS0yNzguNTg3LTI4Ni45NS0yODYuOTVDNy42NTYgMTc1Ljc2NSAwIDE4My4xMDUgMCAxOTIuMjUzdjQ4LjA2OWMwIDguNDE1IDYuNDkgMTUuNDcyIDE0Ljg4NyAxNi4wMTggMTExLjgzMiA3LjI4NCAyMDEuNDczIDk2LjcwMiAyMDguNzcyIDIwOC43NzIuNTQ3IDguMzk3IDcuNjA0IDE0Ljg4NyAxNi4wMTggMTQuODg3aDQ4LjA2OWM5LjE0OS4wMDEgMTYuNDg5LTcuNjU1IDE1Ljk5NS0xNi43OXptMTQ0LjI0OS4yODhDNDM5LjU5NiAyMjkuNjc3IDI1MS40NjUgNDAuNDQ1IDE2LjUwMyAzMi4wMSA3LjQ3MyAzMS42ODYgMCAzOC45ODEgMCA0OC4wMTZ2NDguMDY4YzAgOC42MjUgNi44MzUgMTUuNjQ1IDE1LjQ1MyAxNS45OTkgMTkxLjE3OSA3LjgzOSAzNDQuNjI3IDE2MS4zMTYgMzUyLjQ2NSAzNTIuNDY1LjM1MyA4LjYxOCA3LjM3MyAxNS40NTMgMTUuOTk5IDE1LjQ1M2g0OC4wNjhjOS4wMzQtLjAwMSAxNi4zMjktNy40NzQgMTYuMDA1LTE2LjUwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVibGVTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzOS4zNiAzMjBDMzI0LjQ4IDMyMCAzODQgMjYwLjU0MiAzODQgMTc1LjA3MVMzMjQuNDggMzIgMjM5LjM2IDMySDc2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjIwNi42MzJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJWMzA4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTJ2MzJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1MnY1MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDU4LjU2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTUySDMwOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDE0Ni41NnYtMzJoOTIuOHptLTkyLjgtMjE5LjI1Mmg3OC43MmM0Ni43MiAwIDc0Ljg4IDI5LjExIDc0Ljg4IDc0LjMyMyAwIDQ1LjgzMi0yOC4xNiA3NS41NjEtNzYuMTYgNzUuNTYxaC03Ny40NFYxMDAuNzQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlckNvbWJpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAyODhoLTU2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoNTZ2LTY0aC01NmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDU2Vjk2aC01NmMtNC40MiAwLTgtMy41OC04LThWNzJjMC00LjQyIDMuNTgtOCA4LThoNTZWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgzMkMxNC4zMyAwIDAgMTQuMzMgMCAzMnY0NDhjMCAyLjc3LjkxIDUuMjQgMS41NyA3LjhMMTYwIDMyOS4zOFYyODh6bTMyMCA2NGgtMzJ2NTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtNTZoLTY0djU2YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTU2aC02NHY1NmMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di01NmgtNDEuMzdMMjQuMiA1MTAuNDNjMi41Ni42NiA1LjA0IDEuNTcgNy44IDEuNTdoNDQ4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1bGVySG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMTI4aC00OHY4OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di04OGgtNjR2ODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhoLTY0djg4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTg4aC02NHY4OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di04OGgtNjR2ODhjMCA0LjQyLTMuNTggOC04IDhIODhjLTQuNDIgMC04LTMuNTgtOC04di04OEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxOTJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1MTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxNjBjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXJWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjggNDE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODh2LTY0aC04OGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4di02NGgtODhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4OHYtNjRoLTg4Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODhWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgzMkMxNC4zMyAwIDAgMTQuMzMgMCAzMnY0NDhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxOTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRoLTg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzUuNyAxNjcuMkw1NTYuMSAzMS43Yy04LjgtMTUtMjguMy0yMC4xLTQzLjUtMTEuNWwtNjkgMzkuMUw1MDMuMyAxNjFjMi4yIDMuOC45IDguNS0yLjkgMTAuN2wtMTMuOCA3LjhjLTMuOCAyLjItOC43LjktMTAuOS0yLjlMNDE2IDc1bC01NS4yIDMxLjMgMjcuOSA0Ny40YzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45TDMzMy4yIDEyMiAyNzggMTUzLjMgMzM3LjggMjU1YzIuMiAzLjcuOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45bC01OS43LTEwMS43LTU1LjIgMzEuMyAyNy45IDQ3LjRjMi4yIDMuOC45IDguNS0yLjkgMTAuN2wtMTMuOCA3LjhjLTMuOCAyLjItOC43LjktMTAuOS0yLjlsLTI3LjktNDcuNS01NS4yIDMxLjMgNTkuNyAxMDEuN2MyLjIgMy43LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOUw4NC45IDI2Mi45bC02OSAzOS4xQy43IDMxMC43LTQuNiAzMjkuOCA0LjIgMzQ0LjhsNzkuNiAxMzUuNmM4LjggMTUgMjguMyAyMC4xIDQzLjUgMTEuNUw2MjQuMSAyMTBjMTUuMi04LjYgMjAuNC0yNy44IDExLjYtNDIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVubmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIgOTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFMyOTguNTEgMCAyNzIgMHMtNDggMjEuNDktNDggNDggMjEuNDkgNDggNDggNDh6TTExMy42OSAzMTcuNDdsLTE0LjggMzQuNTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzJoNzcuNDVjMTkuMjUgMCAzNi41OC0xMS40NCA0NC4xMS0yOS4wOWw4Ljc5LTIwLjUyLTEwLjY3LTYuM2MtMTcuMzItMTAuMjMtMzAuMDYtMjUuMzctMzcuOTktNDIuNjF6TTM4NCAyMjMuOTloLTQ0LjAzbC0yNi4wNi01My4yNWMtMTIuNS0yNS41NS0zNS40NS00NC4yMy02MS43OC01MC45NGwtNzEuMDgtMjEuMTRjLTI4LjMtNi44LTU3Ljc3LS41NS04MC44NCAxNy4xNGwtMzkuNjcgMzAuNDFjLTE0LjAzIDEwLjc1LTE2LjY5IDMwLjgzLTUuOTIgNDQuODZzMzAuODQgMTYuNjYgNDQuODYgNS45MmwzOS42OS0zMC40MWM3LjY3LTUuODkgMTcuNDQtOCAyNS4yNy02LjE0bDE0LjcgNC4zNy0zNy40NiA4Ny4zOWMtMTIuNjIgMjkuNDgtMS4zMSA2NC4wMSAyNi4zIDgwLjMxbDg0Ljk4IDUwLjE3LTI3LjQ3IDg3LjczYy01LjI4IDE2Ljg2IDQuMTEgMzQuODEgMjAuOTcgNDAuMDkgMy4xOSAxIDYuNDEgMS40OCA5LjU4IDEuNDggMTMuNjEgMCAyNi4yMy04Ljc3IDMwLjUyLTIyLjQ1bDMxLjY0LTEwMS4wNmM1LjkxLTIwLjc3LTIuODktNDMuMDgtMjEuNjQtNTQuMzlsLTYxLjI0LTM2LjE0IDMxLjMxLTc4LjI4IDIwLjI3IDQxLjQzYzggMTYuMzQgMjQuOTIgMjYuODkgNDMuMTEgMjYuODlIMzg0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJzLTE0LjMzLTMxLjk5LTMyLTMxLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdXBlZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA4IDk2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMkM1LjM3MyAzMiAwIDM3LjM3MyAwIDQ0djQ0Ljc0OGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDg1LjI4YzI3LjMwOCAwIDQ4LjI2MSA5Ljk1OCA2MC45NyAyNy4yNTJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxNTguNzU3Yy02LjIxNyAzNi4wODYtMzIuOTYxIDU4LjYzMi03NC43NTcgNTguNjMySDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjUzLjAxMmMwIDMuMzQ5IDEuNCA2LjU0NiAzLjg2MSA4LjgxOGwxNjUuMDUyIDE1Mi4zNTZhMTIuMDAxIDEyLjAwMSAwIDAgMCA4LjEzOSAzLjE4Mmg4Mi41NjJjMTAuOTI0IDAgMTYuMTY2LTEzLjQwOCA4LjEzOS0yMC44MThMMTE2Ljg3MSAzMTkuOTA2Yzc2LjQ5OS0yLjM0IDEzMS4xNDQtNTMuMzk1IDEzOC4zMTgtMTI3LjkwNkgzMDhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNTguNjljLTMuNDg2LTExLjU0MS04LjI4LTIyLjI0Ni0xNC4yNTItMzJIMzA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWRDcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZjMCA5MC4xIDQ4LjIgMTY4LjcgMTIwIDIxMi4xVjI4OGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djE5Ni43YzI5LjUgMTIuNCA2MiAxOS4zIDk2IDE5LjNzNjYuNS02LjkgOTYtMTkuM1YyODhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYxODAuMUM0NDcuOCA0MjQuNyA0OTYgMzQ2IDQ5NiAyNTYgNDk2IDExOSAzODUgOCAyNDggOHptLTY1LjUgMjE2LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwxMTIgMjMzYy0zLjggMy4zLTkuMyA0LTEzLjcgMS42LTQuNC0yLjQtNi45LTcuNC02LjEtMTIuNCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVMyMDggMTk3IDIxMiAyMjIuMmMuOCA1LTEuNyAxMC02LjEgMTIuNC01LjggMy4xLTExLjIuNy0xMy43LTEuNmwtOS43LTguNXpNMjQ4IDQxNmMtMjYuNSAwLTQ4LTI4LjctNDgtNjRzMjEuNS02NCA0OC02NCA0OCAyOC43IDQ4IDY0LTIxLjUgNjQtNDggNjR6bTE0OS44LTE4MS41Yy01LjggMy4xLTExLjIuNy0xMy43LTEuNmwtOS41LTguNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDMwNCAyMzNjLTMuOCAzLjMtOS4zIDQtMTMuNyAxLjYtNC40LTIuNC02LjktNy40LTYuMS0xMi40IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzQwMCAxOTcgNDA0IDIyMi4yYy42IDQuOS0xLjggOS45LTYuMiAxMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWRUZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTgwIDE2OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6TTE1MiA0MTZjLTI2LjUgMC00OC0yMS00OC00NyAwLTIwIDI4LjUtNjAuNCA0MS42LTc3LjggMy4yLTQuMyA5LjYtNC4zIDEyLjggMEMxNzEuNSAzMDguNiAyMDAgMzQ5IDIwMCAzNjljMCAyNi0yMS41IDQ3LTQ4IDQ3em0xNi0xNzZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xNzAuMiAxNTQuMkMzMTUuOCAzNjcuNCAyODIuOSAzNTIgMjQ4IDM1MmMtMjEuMiAwLTIxLjItMzIgMC0zMiA0NC40IDAgODYuMyAxOS42IDExNC43IDUzLjggMTMuOCAxNi40LTExLjIgMzYuNS0yNC41IDIwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhdGVsbGl0ZURpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA1LjQ0OTU0LDQ2Mi41OWM3LjM5MTU3LDcuMjk3OTIsNi4xODgyOSwyMC4wOTY2MS0zLjAwMDM4LDI1LjAwMzU2LTc3LjcxMyw0MS44MDI4MS0xNzYuNzI1NTksMjkuOTEwNS0yNDIuMzQzMzEtMzUuNzA4MkMtNS40OTYyNCwzODYuMjgyMjctMTcuNDA0LDI4Ny4zNjIsMjQuNDEzODEsMjA5LjU1NGM0Ljg5MTI1LTkuMDk1LDE3LjY4OTc1LTEwLjI5ODM0LDI1LjAwMzE4LTMuMDAwNDNMMTY2LjIyODcyLDMyMy4zNjcwOGwyNy4zOTQxMS0yNy4zOTQ1MmMtLjY4NzU5LTIuNjA5NzQtMS41OTQtNS4wMDA3MS0xLjU5NC03LjgxMzYxYTMyLjAwNDA3LDMyLjAwNDA3LDAsMSwxLDMyLjAwNDA3LDMyLjAwNDU1Yy0yLjc5NzIzLDAtNS4yMDM3OC0uODkwNzUtNy43OTc4Ni0xLjU5NGwtMjcuNDA5NzQsMjcuNDEwMTVaTTUxMS45NzU4LDMwMy4wNjczMmExNi4xMDMzNiwxNi4xMDMzNiwwLDAsMS0xNi4wMDIsMTcuMDAyNDJINDYzLjg2MDMxYTE1Ljk2OTU2LDE1Ljk2OTU2LDAsMCwxLTE1Ljg5MjY1LTE1LjAwMjEzQzQ0MC40NjY3MSwxNzUuNTQ5MiwzMzYuNDUzNDgsNzAuNTM0MjcsMjA3LjAzMDc4LDYzLjUzMzI4YTE1Ljg0NDg2LDE1Ljg0NDg2LDAsMCwxLTE1LjAwMTkxLTE1LjkwODUyVjE2LjAyNjUyQTE2LjA5Mzg5LDE2LjA5Mzg5LDAsMCwxLDIwOS4wMzEuMDI0MjVDMzcyLjI1NDkxLDguNjE5MjIsNTAzLjQ3NDcyLDEzOS44NDEsNTExLjk3NTgsMzAzLjA2NzMyWm0tOTYuMDEyMjEtLjI5NjkyYTE2LjIxMDkzLDE2LjIxMDkzLDAsMCwxLTE2LjExMTQyLDE3LjI5OTM0SDM2Ny42NDVhMTYuMDY4NjIsMTYuMDY4NjIsMCwwLDEtMTUuODkyNjUtMTQuNzA1MjJjLTYuOTA3MTItNzcuMDEwOTQtNjguMTE4LTEzOC45MTAzNy0xNDQuOTI0NjctMTQ1LjIyMzc2YTE1Ljk0LDE1Ljk0LDAsMCwxLTE0Ljc5ODc2LTE1Ljg5Mjg5VjExMi4xMzM5M2ExNi4xMzQsMTYuMTM0LDAsMCwxLDE3LjI5OTA4LTE2LjA5NkMzMTkuNDUxMzIsMTA0LjUzOTEsNDA3LjU1NjI3LDE5Mi42NDUzOCw0MTUuOTYzNTksMzAyLjc3MDRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhdGVsbGl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjA5NjksMzEwLjA0MjA2bC05Ni43MDM5Myw5Ni43MTYyNWEzMS44ODE1MSwzMS44ODE1MSwwLDAsMS00NS4wMDc2NSwwTDI4MC41NzIsMzI2LjM0MTE1bC05Ljg5MjMxLDkuOTA3NTlhMTkwLjU2MzQzLDE5MC41NjM0MywwLDAsMS01LjQwNzE2LDE2OC41MjI4N2MtNC41MDA3Nyw4LjUwMTE1LTE2LjM5MzQyLDkuNTk1MDUtMjMuMjA3MDcsMi43OTcyNUwxMzQuNTQ3MTUsNDAwLjA1NDI4bC0xNy43OTk5LDE3Ljc5OTI5Yy43MDMyNCwyLjYwOTcyLDEuNjA5NjUsNS4wMDA2NywxLjYwOTY1LDcuNzk3OTNhMzIuMDA1NDQsMzIuMDA1NDQsMCwxLDEtMzIuMDA1NDQtMzIuMDA0MzRjMi43OTczNSwwLDUuMTg4MzguOTA2MzcsNy43OTgyLDEuNjA5NTlsMTcuNzk5OS0xNy43OTkyOUw0LjQzMTI5LDI2OS45NDI4N2MtNi43OTgtNi44MTM0Mi01LjcwNDA5LTE4LjYxMTksMi43OTczNS0yMy4yMDYyN2ExOTAuNTgxNjEsMTkwLjU4MTYxLDAsMCwxLDE2OC41Mjg2NC01LjQwN2w5Ljc5ODU0LTkuNzk4MjEtODAuMzEwNTMtODAuNDE3MTZhMzIuMDAyLDMyLjAwMiwwLDAsMSwwLTQ1LjA5OTg3TDIwMS45NjQ3NCw5LjI5ODE0QTMxLjYyNjM5LDMxLjYyNjM5LDAsMCwxLDIyNC40Njg2OCwwYTMxLjk5OTUxLDMxLjk5OTUxLDAsMCwxLDIyLjU5NzU5LDkuMjk4MTRsODAuMzI2MTUsODAuMzA3NzcsNDcuODA1LTQ3Ljg5NzEzYTMzLjYwNzUsMzMuNjA3NSwwLDAsMSw0Ny41MDgwOCwwbDQ3LjUwODA3LDQ3LjUwNjQ1YTMzLjYzMzA4LDMzLjYzMzA4LDAsMCwxLDAsNDcuNTA2NDRsLTQ3LjgwNSw0Ny44OTcxM0w1MDIuNzE5MDgsMjY1LjAzNkEzMS43ODkzOCwzMS43ODkzOCwwLDAsMSw1MDIuNjA5NjksMzEwLjA0MjA2Wk0yMTkuNTYxNTksMTk3LjQzM2w3My44MjUwNS03My44MjI1Mi02OC45MTgtNjguOS03My44MDk0Miw3My44MDY4OVptMjM3Ljc0MzUyLDkwLjEwNi02OC45MDIzMy02OC45MTU2LTczLjgyNSw3My44MjI1Miw2OC45MTgsNjguOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzMuOTQxIDEyOS45NDFsLTgzLjg4Mi04My44ODJBNDggNDggMCAwIDAgMzE2LjExOCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTYzLjg4MmE0OCA0OCAwIDAgMC0xNC4wNTktMzMuOTQxek0yMjQgNDE2Yy0zNS4zNDYgMC02NC0yOC42NTQtNjQtNjQgMC0zNS4zNDYgMjguNjU0LTY0IDY0LTY0czY0IDI4LjY1NCA2NCA2NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjR6bTk2LTMwNC41MlYyMTJjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg3NmMtNi42MjcgMC0xMi01LjM3My0xMi0xMlYxMDhjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMjguNTJjMy4xODMgMCA2LjIzNSAxLjI2NCA4LjQ4NSAzLjUxNWwzLjQ4IDMuNDhBMTEuOTk2IDExLjk5NiAwIDAgMSAzMjAgMTExLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMjR2MjcyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDgwVjE5MkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnptMzYwLTQ4aC0yNHYtNDBjMC00LjQyLTMuNTgtOC04LThoLTE2Yy00LjQyIDAtOCAzLjU4LTggOHY2NGMwIDQuNDIgMy41OCA4IDggOGg0OGM0LjQyIDAgOC0zLjU4IDgtOHYtMTZjMC00LjQyLTMuNTgtOC04LTh6bTEzNy43NS02My45NmwtMTYwLTEwNi42N2EzMi4wMiAzMi4wMiAwIDAgMC0zNS41IDBsLTE2MCAxMDYuNjdBMzIuMDAyIDMyLjAwMiAwIDAgMCAxMjggMTM4LjY2VjUxMmgxMjhWMzY4YzAtOC44NCA3LjE2LTE2IDE2LTE2aDk2YzguODQgMCAxNiA3LjE2IDE2IDE2djE0NGgxMjhWMTM4LjY3YzAtMTAuNy01LjM1LTIwLjctMTQuMjUtMjYuNjN6TTMyMCAyNTZjLTQ0LjE4IDAtODAtMzUuODItODAtODBzMzUuODItODAgODAtODAgODAgMzUuODIgODAgODAtMzUuODIgODAtODAgODB6bTI4OC02NGgtNjR2MzIwaDgwYzguODQgMCAxNi03LjE2IDE2LTE2VjIyNGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3Jld2RyaXZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMEwzMjAgOTZ2NjIuMDZsLTgzLjAzIDgzLjAzYzYuNzkgNC4yNSAxMy4yNyA5LjA2IDE5LjA3IDE0Ljg3IDUuOCA1LjggMTAuNjIgMTIuMjggMTQuODcgMTkuMDdMMzUzLjk0IDE5Mkg0MTZsOTYtMTI4LTY0LTY0ek0xMjggMjc4LjU5TDEwLjkyIDM5NS42N2MtMTQuNTUgMTQuNTUtMTQuNTUgMzguMTUgMCA1Mi43MWw1Mi43IDUyLjdjMTQuNTYgMTQuNTYgMzguMTUgMTQuNTYgNTIuNzEgMEwyMzMuNDEgMzg0YzI5LjExLTI5LjExIDI5LjExLTc2LjMgMC0xMDUuNDFzLTc2LjMtMjkuMTEtMTA1LjQxIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjcm9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUzIDAgMCAyMS41MyAwIDQ4djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDgwVjQ4Qzk2IDIxLjUzIDc0LjQ3IDAgNDggMHptMjA4IDQxMi41N1YzNTJoMjg4Vjk2YzAtNTIuOTQtNDMuMDYtOTYtOTYtOTZIMTExLjU5QzEyMS43NCAxMy40MSAxMjggMjkuOTIgMTI4IDQ4djM2OGMwIDM4Ljg3IDM0LjY1IDY5LjY1IDc0Ljc1IDYzLjEyQzIzNC4yMiA0NzQgMjU2IDQ0NC40NiAyNTYgNDEyLjU3ek0yODggMzg0djMyYzAgNTIuOTMtNDMuMDYgOTYtOTYgOTZoMzM2YzYxLjg2IDAgMTEyLTUwLjE0IDExMi0xMTIgMC04Ljg0LTcuMTYtMTYtMTYtMTZIMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBIMTI4TDAgMTI4djMyMGMwIDM1LjMgMjguNyA2NCA2NCA2NGgyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTE2MCAxNjBoLTQ4VjY0aDQ4djk2em04MCAwaC00OFY2NGg0OHY5NnptODAgMGgtNDhWNjRoNDh2OTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaERvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDUuMDQgNDQyLjY2bC05OS43MS05OS42OWMtNC41LTQuNS0xMC42LTctMTctN2gtMTYuM2MyNy42LTM1LjMgNDQtNzkuNjkgNDQtMTI3Ljk5QzQxNi4wMyA5My4wOSAzMjIuOTIgMCAyMDguMDIgMFMwIDkzLjA5IDAgMjA3Ljk4czkzLjExIDIwNy45OCAyMDguMDIgMjA3Ljk4YzQ4LjMgMCA5Mi43MS0xNi40IDEyOC4wMS00NHYxNi4zYzAgNi40IDIuNSAxMi41IDcgMTdsOTkuNzEgOTkuNjljOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMjguMy0yOC4zYzkuNC05LjQgOS40LTI0LjU5LjEtMzMuOTl6bS0yOTcuMDItOTAuN2MtNzkuNTQgMC0xNDQtNjQuMzQtMTQ0LTE0My45OCAwLTc5LjUzIDY0LjM1LTE0My45OCAxNDQtMTQzLjk4IDc5LjU0IDAgMTQ0IDY0LjM0IDE0NCAxNDMuOTggMCA3OS41My02NC4zNSAxNDMuOTgtMTQ0IDE0My45OHptMjcuMTEtMTUyLjU0bC00NS4wMS0xMy41Yy01LjE2LTEuNTUtOC43Ny02Ljc4LTguNzctMTIuNzMgMC03LjI3IDUuMy0xMy4xOSAxMS44LTEzLjE5aDI4LjExYzQuNTYgMCA4Ljk2IDEuMjkgMTIuODIgMy43MiAzLjI0IDIuMDMgNy4zNiAxLjkxIDEwLjEzLS43M2wxMS43NS0xMS4yMWMzLjUzLTMuMzcgMy4zMy05LjIxLS41Ny0xMi4xNC05LjEtNi44My0yMC4wOC0xMC43Ny0zMS4zNy0xMS4zNVYxMTJjMC00LjQyLTMuNTgtOC04LThoLTE2Yy00LjQyIDAtOCAzLjU4LTggOHYxNi4xMmMtMjMuNjMuNjMtNDIuNjggMjAuNTUtNDIuNjggNDUuMDcgMCAxOS45NyAxMi45OSAzNy44MSAzMS41OCA0My4zOWw0NS4wMSAxMy41YzUuMTYgMS41NSA4Ljc3IDYuNzggOC43NyAxMi43MyAwIDcuMjctNS4zIDEzLjE5LTExLjggMTMuMTloLTI4LjFjLTQuNTYgMC04Ljk2LTEuMjktMTIuODItMy43Mi0zLjI0LTIuMDMtNy4zNi0xLjkxLTEwLjEzLjczbC0xMS43NSAxMS4yMWMtMy41MyAzLjM3LTMuMzMgOS4yMS41NyAxMi4xNCA5LjEgNi44MyAyMC4wOCAxMC43NyAzMS4zNyAxMS4zNVYzMDRjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LTh2LTE2LjEyYzIzLjYzLS42MyA0Mi42OC0yMC41NCA0Mi42OC00NS4wNyAwLTE5Ljk3LTEyLjk5LTM3LjgxLTMxLjU5LTQzLjM5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDUuMDQgNDQyLjY2bC05OS43MS05OS42OWMtNC41LTQuNS0xMC42LTctMTctN2gtMTYuM2MyNy42LTM1LjMgNDQtNzkuNjkgNDQtMTI3Ljk5QzQxNi4wMyA5My4wOSAzMjIuOTIgMCAyMDguMDIgMFMwIDkzLjA5IDAgMjA3Ljk4czkzLjExIDIwNy45OCAyMDguMDIgMjA3Ljk4YzQ4LjMgMCA5Mi43MS0xNi40IDEyOC4wMS00NHYxNi4zYzAgNi40IDIuNSAxMi41IDcgMTdsOTkuNzEgOTkuNjljOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMjguMy0yOC4zYzkuNC05LjQgOS40LTI0LjU5LjEtMzMuOTl6bS0yOTcuMDItOTAuN2MtNzkuNTQgMC0xNDQtNjQuMzQtMTQ0LTE0My45OCAwLTc5LjUzIDY0LjM1LTE0My45OCAxNDQtMTQzLjk4IDc5LjU0IDAgMTQ0IDY0LjM0IDE0NCAxNDMuOTggMCA3OS41My02NC4zNSAxNDMuOTgtMTQ0IDE0My45OHptLjAyLTIzOS45NmMtNDAuNzggMC03My44NCAzMy4wNS03My44NCA3My44MyAwIDMyLjk2IDQ4LjI2IDkzLjA1IDY2Ljc1IDExNC44NmE5LjI0IDkuMjQgMCAwIDAgMTQuMTggMGMxOC40OS0yMS44MSA2Ni43NS04MS44OSA2Ni43NS0xMTQuODYgMC00MC43OC0zMy4wNi03My44My03My44NC03My44M3ptMCA5NmMtMTMuMjYgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaE1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAxOTJ2MzJjMCA2LjYtNS40IDEyLTEyIDEySDEyNGMtNi42IDAtMTItNS40LTEyLTEydi0zMmMwLTYuNiA1LjQtMTIgMTItMTJoMTY4YzYuNiAwIDEyIDUuNCAxMiAxMnptMjAxIDI4NC43TDQ3Ni43IDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMzQzIDQwNS4zYy00LjUtNC41LTctMTAuNi03LTE3VjM3MmMtMzUuMyAyNy42LTc5LjcgNDQtMTI4IDQ0QzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwczIwOCA5My4xIDIwOCAyMDhjMCA0OC4zLTE2LjQgOTIuNy00NCAxMjhoMTYuM2M2LjQgMCAxMi41IDIuNSAxNyA3bDk5LjcgOTkuN2M5LjMgOS40IDkuMyAyNC42IDAgMzR6TTM0NCAyMDhjMC03NS4yLTYwLjgtMTM2LTEzNi0xMzZTNzIgMTMyLjggNzIgMjA4czYwLjggMTM2IDEzNiAxMzYgMTM2LTYwLjggMTM2LTEzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VhcmNoUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgMTkydjMyYzAgNi42LTUuNCAxMi0xMiAxMmgtNTZ2NTZjMCA2LjYtNS40IDEyLTEyIDEyaC0zMmMtNi42IDAtMTItNS40LTEyLTEydi01NmgtNTZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDU2di01NmMwLTYuNiA1LjQtMTIgMTItMTJoMzJjNi42IDAgMTIgNS40IDEyIDEydjU2aDU2YzYuNiAwIDEyIDUuNCAxMiAxMnptMjAxIDI4NC43TDQ3Ni43IDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMzQzIDQwNS4zYy00LjUtNC41LTctMTAuNi03LTE3VjM3MmMtMzUuMyAyNy42LTc5LjcgNDQtMTI4IDQ0QzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwczIwOCA5My4xIDIwOCAyMDhjMCA0OC4zLTE2LjQgOTIuNy00NCAxMjhoMTYuM2M2LjQgMCAxMi41IDIuNSAxNyA3bDk5LjcgOTkuN2M5LjMgOS40IDkuMyAyNC42IDAgMzR6TTM0NCAyMDhjMC03NS4yLTYwLjgtMTM2LTEzNi0xMzZTNzIgMTMyLjggNzIgMjA4czYwLjggMTM2IDEzNiAxMzYgMTM2LTYwLjggMTM2LTEzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNSA0NDIuN0w0MDUuMyAzNDNjLTQuNS00LjUtMTAuNi03LTE3LTdIMzcyYzI3LjYtMzUuMyA0NC03OS43IDQ0LTEyOEM0MTYgOTMuMSAzMjIuOSAwIDIwOCAwUzAgOTMuMSAwIDIwOHM5My4xIDIwOCAyMDggMjA4YzQ4LjMgMCA5Mi43LTE2LjQgMTI4LTQ0djE2LjNjMCA2LjQgMi41IDEyLjUgNyAxN2w5OS43IDk5LjdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMjguMy0yOC4zYzkuNC05LjQgOS40LTI0LjYuMS0zNHpNMjA4IDMzNmMtNzAuNyAwLTEyOC01Ny4yLTEyOC0xMjggMC03MC43IDU3LjItMTI4IDEyOC0xMjggNzAuNyAwIDEyOCA1Ny4yIDEyOCAxMjggMCA3MC43LTU3LjIgMTI4LTEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlZWRsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDk2SDBjMCAxMjMuNyAxMDAuMyAyMjQgMjI0IDIyNHYxNDRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBDMjg4IDE5Ni4zIDE4Ny43IDk2IDY0IDk2em0zODQtNjRjLTg0LjIgMC0xNTcuNCA0Ni41LTE5NS43IDExNS4yIDI3LjcgMzAuMiA0OC4yIDY2LjkgNTkgMTA3LjZDNDI0IDI0My4xIDUxMiAxNDcuOSA1MTIgMzJoLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZXJ2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDE2MEgzMmMtMTcuNjczIDAtMzItMTQuMzI3LTMyLTMyVjY0YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMmg0NDhjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjY0YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMnptLTQ4LTg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bS02NCAwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bTExMiAyNDhIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMnYtNjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyaDQ0OGMxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJ2NjRjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMyem0tNDgtODhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHptLTY0IDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHptMTEyIDI0OEgzMmMtMTcuNjczIDAtMzItMTQuMzI3LTMyLTMydi02NGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJoNDQ4YzE3LjY3MyAwIDMyIDE0LjMyNyAzMiAzMnY2NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJ6bS00OC04OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0tNjQgMGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFwZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LDI1NkExMjgsMTI4LDAsMSwwLDI1NiwzODQsMTI4LDEyOCwwLDAsMCwxMjgsMjU2Wm0zNzktNTQuODZMNDAwLjA3LDE4LjI5YTM3LjI2LDM3LjI2LDAsMCwwLTY0LjE0LDBMMjI5LDIwMS4xNEMyMTQuNzYsMjI1LjUyLDIzMi41OCwyNTYsMjYxLjA5LDI1Nkg0NzQuOTFDNTAzLjQyLDI1Niw1MjEuMjQsMjI1LjUyLDUwNywyMDEuMTRaTTQ4MCwyODhIMzIwYTMyLDMyLDAsMCwwLTMyLDMyVjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkg0ODBhMzIsMzIsMCwwLDAsMzItMzJWMzIwQTMyLDMyLDAsMCwwLDQ4MCwyODhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlQWx0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA4MHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4ek0zMDQgMjk2Yy0xNC41NjIgMC0yNy44MjMgNS41NjEtMzcuNzgzIDE0LjY3MWwtNjcuOTU4LTQwLjc3NWE1Ni4zMzkgNTYuMzM5IDAgMCAwIDAtMjcuNzkzbDY3Ljk1OC00MC43NzVDMjc2LjE3NyAyMTAuNDM5IDI4OS40MzggMjE2IDMwNCAyMTZjMzAuOTI4IDAgNTYtMjUuMDcyIDU2LTU2cy0yNS4wNzItNTYtNTYtNTYtNTYgMjUuMDcyLTU2IDU2YzAgNC43OTcuNjA1IDkuNDUzIDEuNzQgMTMuODk3bC02Ny45NTggNDAuNzc1QzE3MS44MjMgMjA1LjU2MSAxNTguNTYyIDIwMCAxNDQgMjAwYy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2YzE0LjU2MiAwIDI3LjgyMy01LjU2MSAzNy43ODMtMTQuNjcxbDY3Ljk1OCA0MC43NzVhNTYuMDg4IDU2LjA4OCAwIDAgMC0xLjc0IDEzLjg5N2MwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZzNTYtMjUuMDcyIDU2LTU2QzM2MCAzMjEuMDcyIDMzNC45MjggMjk2IDMwNCAyOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAzMjBjLTIyLjYwOCAwLTQzLjM4NyA3LjgxOS01OS43OSAyMC44OTVsLTEwMi40ODYtNjQuMDU0YTk2LjU1MSA5Ni41NTEgMCAwIDAgMC00MS42ODNsMTAyLjQ4Ni02NC4wNTRDMzA4LjYxMyAxODQuMTgxIDMyOS4zOTIgMTkyIDM1MiAxOTJjNTMuMDE5IDAgOTYtNDIuOTgxIDk2LTk2UzQwNS4wMTkgMCAzNTIgMHMtOTYgNDIuOTgxLTk2IDk2YzAgNy4xNTguNzkgMTQuMTMgMi4yNzYgMjAuODQxTDE1NS43OSAxODAuODk1QzEzOS4zODcgMTY3LjgxOSAxMTguNjA4IDE2MCA5NiAxNjBjLTUzLjAxOSAwLTk2IDQyLjk4MS05NiA5NnM0Mi45ODEgOTYgOTYgOTZjMjIuNjA4IDAgNDMuMzg3LTcuODE5IDU5Ljc5LTIwLjg5NWwxMDIuNDg2IDY0LjA1NEE5Ni4zMDEgOTYuMzAxIDAgMCAwIDI1NiA0MTZjMCA1My4wMTkgNDIuOTgxIDk2IDk2IDk2czk2LTQyLjk4MSA5Ni05Ni00Mi45ODEtOTYtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2OC40ODIgMTc3LjQ0OEw0MjQuNDc5IDMxMy40MzNDNDA5LjMgMzI3Ljc2OCAzODQgMzE3LjE0IDM4NCAyOTUuOTg1di03MS45NjNjLTE0NC41NzUuOTctMjA1LjU2NiAzNS4xMTMtMTY0Ljc3NSAxNzEuMzUzIDQuNDgzIDE0Ljk3My0xMi44NDYgMjYuNTY3LTI1LjAwNiAxNy4zM0MxNTUuMjUyIDM4My4xMDUgMTIwIDMyNi40ODggMTIwIDI2OS4zMzljMC0xNDMuOTM3IDExNy41OTktMTcyLjUgMjY0LTE3My4zMTJWMjQuMDEyYzAtMjEuMTc0IDI1LjMxNy0zMS43NjggNDAuNDc5LTE3LjQ0OGwxNDQuMDAzIDEzNS45ODhjMTAuMDIgOS40NjMgMTAuMDI4IDI1LjQyNSAwIDM0Ljg5NnpNMzg0IDM3OS4xMjhWNDQ4SDY0VjEyOGg1MC45MTZhMTEuOTkgMTEuOTkgMCAwIDAgOC42NDgtMy42OTNjMTQuOTUzLTE1LjU2OCAzMi4yMzctMjcuODkgNTEuMDE0LTM3LjY3NkMxODUuNzA4IDgwLjgzIDE4MS41ODQgNjQgMTY5LjAzMyA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di04OC44MDZjMC04LjI4OC04LjE5Ny0xNC4wNjYtMTYuMDExLTExLjMwMmE3MS44MyA3MS44MyAwIDAgMS0zNC4xODkgMy4zNzdjLTcuMjctMS4wNDYtMTMuOCA0LjUxNC0xMy44IDExLjg1OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAzLjY5MSAxODkuODM2TDMyNy42ODcgMzcuODUxQzMxMi4yODEgMjQuNTQ2IDI4OCAzNS4zNDcgMjg4IDU2LjAxNXY4MC4wNTNDMTI3LjM3MSAxMzcuOTA3IDAgMTcwLjEgMCAzMjIuMzI2YzAgNjEuNDQxIDM5LjU4MSAxMjIuMzA5IDgzLjMzMyAxNTQuMTMyIDEzLjY1MyA5LjkzMSAzMy4xMTEtMi41MzMgMjguMDc3LTE4LjYzMUM2Ni4wNjYgMzEyLjgxNCAxMzIuOTE3IDI3NC4zMTYgMjg4IDI3Mi4wODVWMzYwYzAgMjAuNyAyNC4zIDMxLjQ1MyAzOS42ODcgMTguMTY0bDE3Ni4wMDQtMTUyYzExLjA3MS05LjU2MiAxMS4wODYtMjYuNzUzIDAtMzYuMzI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGVrZWxTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCAxNjh2MTY4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjE2OGMwLTc1LjExLTYwLjg5LTEzNi0xMzYtMTM2SDI0QzEwLjc1IDMyIDAgNDIuNzQgMCA1NnY0MDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTEyaDExMmMzMC45MyAwIDU2IDI1LjA3IDU2IDU2ek00MzIgMzJoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYyOTZjMCAzMC45My0yNS4wNyA1Ni01NiA1NkgyMDBWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2aC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MjgwYzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoMTY4Yzc1LjExIDAgMTM2LTYwLjg5IDEzNi0xMzZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjYuNSA4My43bC0xOTItODBhNDguMTUgNDguMTUgMCAwIDAtMzYuOSAwbC0xOTIgODBDMjcuNyA5MS4xIDE2IDEwOC42IDE2IDEyOGMwIDE5OC41IDExNC41IDMzNS43IDIyMS41IDM4MC4zIDExLjggNC45IDI1LjEgNC45IDM2LjkgMEMzNjAuMSA0NzIuNiA0OTYgMzQ5LjMgNDk2IDEyOGMwLTE5LjQtMTEuNy0zNi45LTI5LjUtNDQuM3pNMjU2LjEgNDQ2LjNsLS4xLTM4MSAxNzUuOSA3My4zYy0zLjMgMTUxLjQtODIuMSAyNjEuMS0xNzUuOCAzMDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkVmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LDE5MmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwyMjQsMTkyWk00NjYuNSw4My42OGwtMTkyLTgwQTU3LjQsNTcuNCwwLDAsMCwyNTYuMDUsMGE1Ny40LDU3LjQsMCwwLDAtMTguNDYsMy42N2wtMTkyLDgwQTQ3LjkzLDQ3LjkzLDAsMCwwLDE2LDEyOEMxNiwzMjYuNSwxMzAuNSw0NjMuNzIsMjM3LjUsNTA4LjMyYTQ4LjA5LDQ4LjA5LDAsMCwwLDM2LjkxLDBDMzYwLjA5LDQ3Mi42MSw0OTYsMzQ5LjMsNDk2LDEyOEE0OCw0OCwwLDAsMCw0NjYuNSw4My42OFpNMzg0LDI1NkgzNzEuODhjLTI4LjUxLDAtNDIuNzksMzQuNDctMjIuNjMsNTQuNjNsOC41OCw4LjU3YTE2LDE2LDAsMSwxLTIyLjYzLDIyLjYzbC04LjU3LTguNThDMzA2LjQ3LDMxMy4wOSwyNzIsMzI3LjM3LDI3MiwzNTUuODhWMzY4YTE2LDE2LDAsMCwxLTMyLDBWMzU1Ljg4YzAtMjguNTEtMzQuNDctNDIuNzktNTQuNjMtMjIuNjNsLTguNTcsOC41OGExNiwxNiwwLDAsMS0yMi42My0yMi42M2w4LjU4LTguNTdjMjAuMTYtMjAuMTYsNS44OC01NC42My0yMi42My01NC42M0gxMjhhMTYsMTYsMCwwLDEsMC0zMmgxMi4xMmMyOC41MSwwLDQyLjc5LTM0LjQ3LDIyLjYzLTU0LjYzbC04LjU4LTguNTdhMTYsMTYsMCwwLDEsMjIuNjMtMjIuNjNsOC41Nyw4LjU4YzIwLjE2LDIwLjE2LDU0LjYzLDUuODgsNTQuNjMtMjIuNjNWMTEyYTE2LDE2LDAsMCwxLDMyLDB2MTIuMTJjMCwyOC41MSwzNC40Nyw0Mi43OSw1NC42MywyMi42M2w4LjU3LTguNThhMTYsMTYsMCwwLDEsMjIuNjMsMjIuNjNsLTguNTgsOC41N0MzMjkuMDksMTg5LjUzLDM0My4zNywyMjQsMzcxLjg4LDIyNEgzODRhMTYsMTYsMCwwLDEsMCwzMlptLTk2LDBhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjg4LDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYuNjE2IDM3Mi42MzlsNzAuMDEyLTcwLjAxMmMxNi44OTktMTYuOSA5Ljk0Mi00NS43NzEtMTIuODM2LTUzLjA5Mkw1MTIgMjM2LjEwMlY5NmMwLTE3LjY3My0xNC4zMjctMzItMzItMzJoLTY0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY0MGgtNjRjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnYxNDAuMTAybC00MS43OTIgMTMuNDMzYy0yMi43NTMgNy4zMTMtMjkuNzU0IDM2LjE3My0xMi44MzYgNTMuMDkybDcwLjAxMiA3MC4wMTJDMTI1LjgyOCA0MTYuMjg3IDg1LjU4NyA0NDggMjQgNDQ4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0IDYxLjAyMyAwIDEwNy40OTktMjAuNjEgMTQzLjI1OC01OS4zOTZDMTgxLjY3NyA0ODcuNDMyIDIxNi4wMjEgNTEyIDI1NiA1MTJoMTI4YzM5Ljk3OSAwIDc0LjMyMy0yNC41NjggODguNzQyLTU5LjM5NkM1MDguNDk1IDQ5MS4zODQgNTU0Ljk2OCA1MTIgNjE2IDUxMmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTE2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNC02MC44MTcgMC0xMDEuNTQyLTMxLjAwMS0xMTkuMzg0LTc1LjM2MXpNMTkyIDEyOGgyNTZ2ODcuNTMxbC0xMTguMjA4LTM3Ljk5NWEzMS45OTUgMzEuOTk1IDAgMCAwLTE5LjU4NCAwTDE5MiAyMTUuNTMxVjEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpcHBpbmdGYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTEyQzg1LjUgMCA2NCAyMS41IDY0IDQ4djQ4SDhjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMjcyYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhINDBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMjA4YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIOGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOGgyMDhjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEg2NHYxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05Nmg0OGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNMTYwIDQ2NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTMyMCAwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptODAtMjA4SDQxNlYxNDRoNDQuMWw5OS45IDk5LjlWMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9lUHJpbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAxNjBoMzJWMzJoLTMyYy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0czI4LjY1IDY0IDY0IDY0ek0wIDQxNmMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDMyVjM1Mkg2NGMtMzUuMzUgMC02NCAyOC42NS02NCA2NHptMzM3LjQ2LTEyOGMtMzQuOTEgMC03Ni4xNiAxMy4xMi0xMDQuNzMgMzItMjQuNzkgMTYuMzgtNDQuNTIgMzItMTA0LjczIDMydjEyOGw1Ny41MyAxNS45N2MyNi4yMSA3LjI4IDUzLjAxIDEzLjEyIDgwLjMxIDE1LjA1IDMyLjY5IDIuMzEgNjUuNi42NyA5Ny41OC02LjJDNDcyLjkgNDgxLjMgNTEyIDQyOS4yMiA1MTIgMzg0YzAtNjQtODQuMTgtOTYtMTc0LjU0LTk2ek00OTEuNDIgNy4xOUM0NTkuNDQuMzIgNDI2LjUzLTEuMzMgMzkzLjg0Ljk5Yy0yNy4zIDEuOTMtNTQuMSA3Ljc3LTgwLjMxIDE1LjA0TDI1NiAzMnYxMjhjNjAuMiAwIDc5Ljk0IDE1LjYyIDEwNC43MyAzMiAyOC41NyAxOC44OCA2OS44MiAzMiAxMDQuNzMgMzJDNTU1LjgyIDIyNCA2NDAgMTkyIDY0MCAxMjhjMC00NS4yMi0zOS4xLTk3LjMtMTQ4LjU4LTEyMC44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcHBpbmdCYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDE2MHYtMzJDMzUyIDU3LjQyIDI5NC41NzkgMCAyMjQgMCAxNTMuNDIgMCA5NiA1Ny40MiA5NiAxMjh2MzJIMHYyNzJjMCA0NC4xODMgMzUuODE3IDgwIDgwIDgwaDI4OGM0NC4xODMgMCA4MC0zNS44MTcgODAtODBWMTYwaC05NnptLTE5Mi0zMmMwLTM1LjI5IDI4LjcxLTY0IDY0LTY0czY0IDI4LjcxIDY0IDY0djMySDE2MHYtMzJ6bTE2MCAxMjBjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0LTEwLjc0NSAyNC0yNCAyNHptLTE5MiAwYy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRzMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3BwaW5nQmFza2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiAyMTZ2MTZjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0aC04bC0yNi4xMTMgMTgyLjc4OEM1MTQuNTA5IDQ2Mi40MzUgNDk0LjI1NyA0ODAgNDcwLjM3IDQ4MEgxMDUuNjNjLTIzLjg4NyAwLTQ0LjEzOS0xNy41NjUtNDcuNTE4LTQxLjIxMkwzMiAyNTZoLThjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHYtMTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDY3LjM0MWwxMDYuNzgtMTQ2LjgyMWMxMC4zOTUtMTQuMjkyIDMwLjQwNy0xNy40NTMgNDQuNzAxLTcuMDU4IDE0LjI5MyAxMC4zOTUgMTcuNDUzIDMwLjQwOCA3LjA1OCA0NC43MDFMMTcwLjQ3NyAxOTJoMjM1LjA0NkwzMjYuMTIgODIuODIxYy0xMC4zOTUtMTQuMjkyLTcuMjM0LTM0LjMwNiA3LjA1OS00NC43MDEgMTQuMjkxLTEwLjM5NSAzNC4zMDYtNy4yMzUgNDQuNzAxIDcuMDU4TDQ4NC42NTkgMTkySDU1MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR6TTMxMiAzOTJWMjgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHMtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRzMjQtMTAuNzQ1IDI0LTI0em0xMTIgMFYyODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0cy0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHMyNC0xMC43NDUgMjQtMjR6bS0yMjQgMFYyODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0cy0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHMyNC0xMC43NDUgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjguMTIgMzAxLjMxOWw0Ny4yNzMtMjA4QzU3OC44MDYgNzguMzAxIDU2Ny4zOTEgNjQgNTUxLjk5IDY0SDE1OS4yMDhsLTkuMTY2LTQ0LjgxQzE0Ny43NTggOC4wMjEgMTM3LjkzIDAgMTI2LjUyOSAwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDY5Ljg4M2w3MC4yNDggMzQzLjQzNUMxNDcuMzI1IDQxNy4xIDEzNiA0MzUuMjIyIDEzNiA0NTZjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2czU2LTI1LjA3MiA1Ni01NmMwLTE1LjY3NC02LjQ0Ny0yOS44MzUtMTYuODI0LTQwaDIwOS42NDdDNDMwLjQ0NyA0MjYuMTY1IDQyNCA0NDAuMzI2IDQyNCA0NTZjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2czU2LTI1LjA3MiA1Ni01NmMwLTIyLjE3Mi0xMi44ODgtNDEuMzMyLTMxLjU3OS01MC40MDVsNS41MTctMjQuMjc2YzMuNDEzLTE1LjAxOC04LjAwMi0yOS4zMTktMjMuNDAzLTI5LjMxOUgyMTguMTE3bC02LjU0NS0zMmgyOTMuMTQ1YzExLjIwNiAwIDIwLjkyLTcuNzU0IDIzLjQwMy0xOC42ODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQsMzIwYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMwNCwzMjBabTMyLTk2YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMzNiwyMjRabTMyLDY0YTE2LDE2LDAsMSwwLTE2LTE2QTE2LDE2LDAsMCwwLDM2OCwyODhabS0zMiwzMmExNiwxNiwwLDEsMC0xNi0xNkExNiwxNiwwLDAsMCwzMzYsMzIwWm0tMzItNjRhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMzA0LDI1NlptMTI4LTMyYTE2LDE2LDAsMSwwLTE2LTE2QTE2LDE2LDAsMCwwLDQzMiwyMjRabS00OCwxNmExNiwxNiwwLDEsMCwxNi0xNkExNiwxNiwwLDAsMCwzODQsMjQwWm0tMTYtNDhhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMzY4LDE5MlptOTYsMzJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDY0LDIyNFptMzItMzJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDk2LDE5MlptLTY0LDY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDQzMiwyNTZabS0zMiwzMmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCw0MDAsMjg4Wm0tNjQsNjRhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMzM2LDM1MlptLTMyLDMyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMwNCwzODRabTY0LTY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDM2OCwzMjBabTIxLjY1LTIxOC4zNS0xMS4zLTExLjMxYTE2LDE2LDAsMCwwLTIyLjYzLDBMMzUwLjA1LDk2QTExMS4xOSwxMTEuMTksMCwwLDAsMjcyLDY0Yy0xOS4yNCwwLTM3LjA4LDUuMy01Mi45LDEzLjg1bC0xMC0xMEExMjEuNzIsMTIxLjcyLDAsMCwwLDEyMy40NCwzMkM1NS40OSwzMS41LDAsOTIuOTEsMCwxNjAuODVWNDY0YTE2LDE2LDAsMCwwLDE2LDE2SDQ4YTE2LDE2LDAsMCwwLDE2LTE2VjE1OC40YzAtMzAuMTUsMjEtNTguMiw1MS02MS45M2E1OC4zOCw1OC4zOCwwLDAsMSw0OC45MywxNi42N2wxMCwxMEMxNjUuMywxMzguOTIsMTYwLDE1Ni43NiwxNjAsMTc2YTExMS4yMywxMTEuMjMsMCwwLDAsMzIsNzguMDVsLTUuNjYsNS42N2ExNiwxNiwwLDAsMCwwLDIyLjYybDExLjMsMTEuMzFhMTYsMTYsMCwwLDAsMjIuNjMsMEwzODkuNjUsMTI0LjI4QTE2LDE2LDAsMCwwLDM4OS42NSwxMDEuNjVaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNodXR0bGVWYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI4Ljg4IDIxMC42NUw0OTQuMzkgNDkuMjdBNDguMDEgNDguMDEgMCAwIDAgNDU3LjUyIDMySDMyQzE0LjMzIDMyIDAgNDYuMzMgMCA2NHYyODhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2czk2LTQyLjk4IDk2LTk2aDEyOGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2czk2LTQyLjk4IDk2LTk2aDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMjQxLjM4YzAtMTEuMjMtMy45NC0yMi4xLTExLjEyLTMwLjczek02NCAxOTJWOTZoOTZ2OTZINjR6bTk2IDI0MGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptMTYwLTI0MGgtOTZWOTZoOTZ2OTZ6bTE2MCAyNDBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bS05Ni0yNDBWOTZoNjYuMDJsODAgOTZIMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaWduSW5BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDQ0OGgtODRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMmgtODRjLTYuNiAwLTEyLTUuNC0xMi0xMlY3NmMwLTYuNiA1LjQtMTIgMTItMTJoODRjNTMgMCA5NiA0MyA5NiA5NnYxOTJjMCA1My00MyA5Ni05NiA5NnptLTQ3LTIwMUwyMDEgNzljLTE1LTE1LTQxLTQuNS00MSAxN3Y5NkgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2OTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTM2djk2YzAgMjEuNSAyNiAzMiA0MSAxN2wxNjgtMTY4YzkuMy05LjQgOS4zLTI0LjYgMC0zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbkxhbmd1YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkxLjQzNCA0ODMuOTg3Yy0uMzA3LTE2LjAxOCAxMy4xMDktMjkuMTI5IDI5LjEzLTI5LjEyOWg2Mi4yOTN2LTUuNzE0SDU2Ljk5M2MtMTYuMDIxIDAtMjkuNDM3LTEzLjExMS0yOS4xMy0yOS4xMjlDMjguMTYgNDA0LjQ5MSA0MC44MzUgMzkyIDU2LjQyOCAzOTJoMTI2LjQyOXYtNS43MTRIMjkuMTM2Yy0xNi4wMjEgMC0yOS40MzctMTMuMTExLTI5LjEzLTI5LjEyOS4yOTctMTUuNTIyIDEyLjk3My0yOC4wMTMgMjguNTY2LTI4LjAxM2gxNTQuMjg2di01LjcxNEg1Ny43MDdjLTE2LjAyMSAwLTI5LjQzNy0xMy4xMTEtMjkuMTMtMjkuMTI5LjI5Ny0xNS41MjIgMTIuOTczLTI4LjAxMyAyOC41NjYtMjguMDEzaDE2OC41NjZsLTMxLjA4NS0yMi42MDZjLTEyLjc2Mi05LjI4MS0xNS41ODMtMjcuMTQ5LTYuMzAyLTM5LjkxMiA5LjI4MS0xMi43NjEgMjcuMTUtMTUuNTgyIDM5LjkxMi02LjMwMmwxMjMuMzYxIDg5LjcxNWEzNC4yODcgMzQuMjg3IDAgMCAxIDE0LjEyIDI3LjcyOHYxNDEuMTM2YzAgMTUuOTEtMTAuOTQ2IDI5LjczLTI2LjQzMyAzMy4zNzRsLTgwLjQ3MSAxOC45MzRhMTM3LjE2IDEzNy4xNiAwIDAgMS0zMS40MTEgMy42NDZIMTIwYy0xNS41OTMtLjAwMS0yOC4yNjktMTIuNDkyLTI4LjU2Ni0yOC4wMTR6bTczLjI0OS0yMjUuNzAxaDM2LjQyM2wtMTEuMTg3LTguMTM2Yy0xOC41NzktMTMuNTExLTIwLjMxMy00MC44ODctMy4xNy01Ni41MzZsLTEzLjAwNC0xNi43Yy05Ljg0My0xMi42NDEtMjguNDMtMTUuMTcxLTQwLjg4LTUuMDg4LTEyLjA2NSA5Ljc3MS0xNC4xMzMgMjcuNDQ3LTQuNTUzIDM5Ljc1bDM2LjM3MSA0Ni43MXptMjgzLjI5OC0yLjEwM2wtNS4wMDMtMTUyLjQ1MmMtLjUxOC0xNS43NzEtMTMuNzIyLTI4LjEzNi0yOS40OTMtMjcuNjE5LTE1Ljc3My41MTgtMjguMTM3IDEzLjcyMi0yNy42MTkgMjkuNDkzbDEuMjYyIDM4LjQxNUwyODMuNTY1IDExLjAxOWMtOS41OC0xMi4zMDMtMjcuMjIzLTE0LjYzLTM5LjY1My01LjMyOC0xMi44MjcgOS41OTktMTQuOTI5IDI4LjI0LTUuMDg2IDQwLjg4MWw3Ni44ODkgOTguNzQ1LTQuNTA5IDMuNTExLTk0Ljc5LTEyMS43MzRjLTkuNTgtMTIuMzAzLTI3LjIyMy0xNC42My0zOS42NTMtNS4zMjgtMTIuODI3IDkuNTk5LTE0LjkyOSAyOC4yNC01LjA4NiA0MC44ODFsOTQuNDQzIDEyMS4yODgtNC41MDkgMy41MTEtNzcuNjc1LTk5Ljc1NGMtOS41OC0xMi4zMDMtMjcuMjIzLTE0LjYzLTM5LjY1My01LjMyOC0xMi44MjcgOS41OTktMTQuOTI5IDI4LjI0LTUuMDg2IDQwLjg4MWw1Mi4wNTMgNjYuODQ5YzEyLjQ5Ny04LjI1NyAyOS4wNTUtOC4yODUgNDEuNjkuOTA0bDEyMy4zNiA4OS43MTRjMTAuOTA0IDcuOTMgMTcuNDE1IDIwLjcxNSAxNy40MTUgMzQuMTk4djE2Ljk5OWw2MS4wNjQtNDcuNTQ5YTM0LjI4NSAzNC4yODUgMCAwIDAgMTMuMjAyLTI4LjE3N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbk91dEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcgMjczTDMyOSA0NDFjLTE1IDE1LTQxIDQuNS00MS0xN3YtOTZIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHYtOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTM2Vjg4YzAtMjEuNCAyNS45LTMyIDQxLTE3bDE2OCAxNjhjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0xOTIgNDM2di00MGMwLTYuNi01LjQtMTItMTItMTJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4NGM2LjYgMCAxMi01LjQgMTItMTJWNzZjMC02LjYtNS40LTEyLTEyLTEySDk2Yy01MyAwLTk2IDQzLTk2IDk2djE5MmMwIDUzIDQzIDk2IDk2IDk2aDg0YzYuNiAwIDEyLTUuNCAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgNjRIMTI4VjE2YzAtOC44LTcuMi0xNi0xNi0xNkg4MGMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDE2QzcuMiA2NCAwIDcxLjIgMCA4MHYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2MzY4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTI4aDM2OGM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2ek0xNjAgMzg0aDMyMFYxNjBIMTYwdjIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNiAyODhoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxOTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzA0YzAtOC44NC03LjE2LTE2LTE2LTE2ek04OCAzODRINDBjLTguODQgMC0xNiA3LjE2LTE2IDE2djk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2di05NmMwLTguODQtNy4xNi0xNi0xNi0xNnptMjU2LTE5MmgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djI4OGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyMDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTEyOC05NmgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djM4NGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxMTJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTYwMCAwaC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDgwYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaWduYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIzLjIgMTkyYy01MS44IDMuNS0xMjUuNyA1NC43LTE2My4xIDcxLjUtMjkuMSAxMy4xLTU0LjIgMjQuNC03Ni4xIDI0LjQtMjIuNiAwLTI2LTE2LjItMjEuMy01MS45IDEuMS04IDExLjctNzkuMi00Mi43LTc2LjEtMjUuMSAxLjUtNjQuMyAyNC44LTE2OS41IDEyNkwxOTIgMTgyLjJjMzAuNC03NS45LTUzLjItMTUxLjUtMTI5LjctMTAyLjhMNy40IDExNi4zQzAgMTIxLTIuMiAxMzAuOSAyLjUgMTM4LjRsMTcuMiAyN2M0LjcgNy41IDE0LjYgOS43IDIyLjEgNC45bDU4LTM4LjljMTguNC0xMS43IDQwLjcgNy4yIDMyLjcgMjcuMUwzNC4zIDQwNC4xQzI3LjUgNDIxIDM3IDQ0OCA2NCA0NDhjOC4zIDAgMTYuNS0zLjIgMjIuNi05LjQgNDIuMi00Mi4yIDE1NC43LTE1MC43IDIxMS4yLTE5NS44LTIuMiAyOC41LTIuMSA1OC45IDIwLjYgODMuOCAxNS4zIDE2LjggMzcuMyAyNS4zIDY1LjUgMjUuMyAzNS42IDAgNjgtMTQuNiAxMDIuMy0zMCAzMy0xNC44IDk5LTYyLjYgMTM4LjQtNjUuOCA4LjUtLjcgMTUuMi03LjMgMTUuMi0xNS44di0zMi4xYy4yLTkuMS03LjUtMTYuOC0xNi42LTE2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpbUNhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NHYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOEwyNTYgMEg2NEMyOC43IDAgMCAyOC43IDAgNjR6bTIyNCAxOTJoLTY0di02NGg2NHY2NHptOTYgMGgtNjR2LTY0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMydjMyem0tNjQgMTI4aDY0djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMyaC0zMnYtNjR6bS05NiAwaDY0djY0aC02NHYtNjR6bS05NiAwaDY0djY0SDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnYtMzJ6bTAtOTZoMjU2djY0SDY0di02NHptMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMnY2NEg2NHYtMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIsNDE2YTk2LDk2LDAsMCwwLDk2LDk2SDM4NGE5Niw5NiwwLDAsMCw5Ni05NlYzODRIMzJaTTQ5NiwyODhINDAwVjI1Nmg2NGExNiwxNiwwLDAsMCwxNi0xNlYyMjRhMTYsMTYsMCwwLDAtMTYtMTZIMzg0YTMyLDMyLDAsMCwwLTMyLDMydjQ4SDI4OFY5NmEzMiwzMiwwLDAsMSw2NCwwdjE2YTE2LDE2LDAsMCwwLDE2LDE2aDMyYTE2LDE2LDAsMCwwLDE2LTE2Vjk2QTk2LjE2LDk2LjE2LDAsMCwwLDMwMC44NywxLjg2QzI1NS4yOSwxMC43MSwyMjQsNTMuMzYsMjI0LDk5Ljc5VjI4OEgxNjBWMjQwYTMyLDMyLDAsMCwwLTMyLTMySDQ4YTE2LDE2LDAsMCwwLTE2LDE2djE2YTE2LDE2LDAsMCwwLDE2LDE2aDY0djMySDE2QTE2LDE2LDAsMCwwLDAsMzA0djMyYTE2LDE2LDAsMCwwLDE2LDE2SDQ5NmExNiwxNiwwLDAsMCwxNi0xNlYzMDRBMTYsMTYsMCwwLDAsNDk2LDI4OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2l0ZW1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMzUySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptLTI0LTgwaDE5MnY0OGg0OHYtNDhoMTkydjQ4aDQ4di01Ny41OWMwLTIxLjE3LTE3LjIzLTM4LjQxLTM4LjQxLTM4LjQxSDM0NHYtNjRoNDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDI1NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDQwdjY0SDk0LjQxQzczLjIzIDIyNCA1NiAyNDEuMjMgNTYgMjYyLjQxVjMyMGg0OHYtNDh6bTI2NCA4MGgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0yNDAgMGgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa2F0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAwYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4IDQ4LTIxLjUgNDgtNDgtMjEuNS00OC00OC00OHptMCA0NDhjLTguOCAwLTE2IDcuMi0xNiAxNnMtNy4yIDE2LTE2IDE2aC05NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg5NmMyNi41IDAgNDgtMjEuNSA0OC00OCAwLTguOC03LjItMTYtMTYtMTZ6bS0yODIuMiA4LjZjLTYuMiA2LjItMTYuNCA2LjMtMjIuNiAwbC02Ny45LTY3LjljLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsNjcuOSA2Ny45YzkuNCA5LjQgMjEuNyAxNCAzNCAxNHMyNC42LTQuNyAzMy45LTE0YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMy0yMi43IDB6bTU2LjEtMTc5LjhsLTkzLjcgOTMuN2MtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjIgNi4yIDYuMiAxNC40IDkuNCAyMi42IDkuNHMxNi40LTMuMSAyMi42LTkuNGw5MS45LTkxLjktMzAuMi0zMC4yYy01LTUtOS40LTEwLjctMTMuMi0xNi44ek0xMjggMTYwaDEwNS41bC0yMC4xIDE3LjJjLTEzLjUgMTEuNS0yMS42IDI4LjQtMjIuMyA0Ni4xLS43IDE3LjggNi4xIDM1LjIgMTguNyA0Ny43bDc4LjIgNzguMlY0MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnYtODkuNGMwLTEyLjYtNS4xLTI1LTE0LjEtMzMuOWwtNjEtNjFjLjUtLjQgMS4yLS42IDEuNy0xLjFsODIuMy04Mi4zYzExLjUtMTEuNSAxNC45LTI4LjYgOC43LTQzLjYtNi4yLTE1LTIwLjctMjQuNy0zNy0yNC43SDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2tpaW5nTm9yZGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiA5NmMyNi41IDAgNDgtMjEuNSA0OC00OFMzNjIuNSAwIDMzNiAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTIxNiAzMjBjLTEzLjIgMC0yNCAxMC43LTI0IDI0IDAgMTMuMi0xMC44IDI0LTI0IDI0aC02OS41TDQ2MCAyODUuNmMxMS43LTQuNyAyMC4xLTE2LjIgMjAuMS0yOS42IDAtMTcuNy0xNC4zLTMyLTMyLTMyaC00NEwzNzggMTcwLjhjLTEyLjUtMjUuNS0zNS41LTQ0LjItNjEuOC01MC45TDI0NSA5OC43Yy0yOC4zLTYuOC01Ny44LS41LTgwLjggMTcuMWwtMzkuNyAzMC40Yy0xNCAxMC43LTE2LjcgMzAuOC01LjkgNDQuOS43LjkgMS43IDEuMyAyLjQgMi4xTDY2LjkgNDY0SDI0Yy0xMy4yIDAtMjQgMTAuNy0yNCAyNHMxMC44IDI0IDI0IDI0aDQ4MGMzOS43IDAgNzItMzIuMyA3Mi03MiAwLTEzLjItMTAuOC0yNC0yNC0yNHptLTI2MC41IDQ4aC05Ni45bDQzLjEtOTEtMjItMTNjLTEyLjEtNy4yLTIxLjktMTYuOS0yOS41LTI3LjhMMTIzLjcgNDY0SDk5LjVsNTIuMy0yNjEuNGM0LjEtMSA4LjEtMi45IDExLjctNS42bDM5LjctMzAuNGM3LjctNS45IDE3LjQtOCAyNS4zLTYuMWwxNC43IDQuNC0zNy41IDg3LjRjLTEyLjYgMjkuNS0xLjMgNjQgMjYuMyA4MC4zbDg1IDUwLjItMjUuNSA4MS4yem0xMTAuNiAwaC00My42bDIzLjYtNzUuNWM1LjktMjAuOC0yLjktNDMuMS0yMS42LTU0LjRMMjk5LjMgMjk4bDMxLjMtNzguMyAyMC4zIDQxLjRjOCAxNi4zIDI0LjkgMjYuOSA0My4xIDI2LjloMzMuM2wtMjUuMiAxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNraWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTNDU4LjUgMCA0MzIgMHMtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em03MyAzNTYuMWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDAtMTIuMSAxMi4xLTMwLjUgMTUuNC00NS4xIDguN2wtMTM1LjgtNzAuMiA0OS4yLTczLjhjMTIuNy0xOSAxMC4yLTQ0LjUtNi02MC42TDI5MyAyMTUuN2wtMTA3LTUzLjFjLTIuOSAxOS45IDMuNCA0MCAxNy43IDU0LjRsNzUuMSA3NS4yLTQ1LjkgNjguOEwzNSAyNTguN2MtMTEuNy02LTI2LjItMS41LTMyLjMgMTAuMy02LjEgMTEuOC0xLjUgMjYuMyAxMC4zIDMyLjNsMzkxLjkgMjAyLjVjMTEuOSA1LjUgMjQuNSA4LjEgMzcuMSA4LjEgMjMuMiAwIDQ2LTkgNjMtMjYgOS4zLTkuMyA5LjMtMjQuNSAwLTMzLjh6TTEyMCA5MS42bC0xMS41IDIyLjVjMTQuNCA3LjMgMzEuMiA0LjkgNDIuOC00LjhsNDcuMiAyMy40Yy0uMS4xLS4xLjItLjIuM2wxMTQuNSA1Ni44IDMyLjQtMTMgNi40IDE5LjFjNCAxMi4xIDEyLjYgMjIgMjQgMjcuN2w1OC4xIDI5YzE1LjkgNy45IDM1IDEuNSA0Mi45LTE0LjMgNy45LTE1LjggMS41LTM1LTE0LjMtNDIuOWwtNTIuMS0yNi4xLTE3LjEtNTEuMmMtOC4xLTI0LjItNDAuOS01Ni42LTg0LjUtMzkuMmwtODEuMiAzMi41LTYyLjUtMzFjLjMtMTQuNS03LjItMjguNi0yMC45LTM1LjZsLTExLjEgMjEuN2gtLjJsLTM0LjQtN2MtMS44LS40LTMuNy4yLTUgMS43LTEuOSAyLjItMS43IDUuNS41IDcuNGwyNi4yIDIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa3VsbENyb3NzYm9uZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM5LjE1IDQ1My4wNkwyOTcuMTcgMzg0bDE0MS45OS02OS4wNmM3LjktMy45NSAxMS4xMS0xMy41NiA3LjE1LTIxLjQ2TDQzMiAyNjQuODVjLTMuOTUtNy45LTEzLjU2LTExLjExLTIxLjQ3LTcuMTZMMjI0IDM0OC40MSAzNy40NyAyNTcuNjljLTcuOS0zLjk1LTE3LjUxLS43NS0yMS40NyA3LjE2TDEuNjkgMjkzLjQ4Yy0zLjk1IDcuOS0uNzUgMTcuNTEgNy4xNSAyMS40NkwxNTAuODMgMzg0IDguODUgNDUzLjA2Yy03LjkgMy45NS0xMS4xMSAxMy41Ni03LjE1IDIxLjQ3bDE0LjMxIDI4LjYzYzMuOTUgNy45IDEzLjU2IDExLjExIDIxLjQ3IDcuMTVMMjI0IDQxOS41OWwxODYuNTMgOTAuNzJjNy45IDMuOTUgMTcuNTEuNzUgMjEuNDctNy4xNWwxNC4zMS0yOC42M2MzLjk1LTcuOTEuNzQtMTcuNTItNy4xNi0yMS40N3pNMTUwIDIzNy4yOGwtNS40OCAyNS44N2MtMi42NyAxMi42MiA1LjQyIDI0Ljg1IDE2LjQ1IDI0Ljg1aDEyNi4wOGMxMS4wMyAwIDE5LjEyLTEyLjIzIDE2LjQ1LTI0Ljg1bC01LjUtMjUuODdjNDEuNzgtMjIuNDEgNzAtNjIuNzUgNzAtMTA5LjI4QzM2OCA1Ny4zMSAzMDMuNTMgMCAyMjQgMFM4MCA1Ny4zMSA4MCAxMjhjMCA0Ni41MyAyOC4yMiA4Ni44NyA3MCAxMDkuMjh6TTI4MCAxMTJjMTcuNjUgMCAzMiAxNC4zNSAzMiAzMnMtMTQuMzUgMzItMzIgMzItMzItMTQuMzUtMzItMzIgMTQuMzUtMzIgMzItMzJ6bS0xMTIgMGMxNy42NSAwIDMyIDE0LjM1IDMyIDMycy0xNC4zNSAzMi0zMiAzMi0zMi0xNC4zNS0zMi0zMiAxNC4zNS0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBDMTE0LjYgMCAwIDEwMC4zIDAgMjI0YzAgNzAuMSAzNi45IDEzMi42IDk0LjUgMTczLjcgOS42IDYuOSAxNS4yIDE4LjEgMTMuNSAyOS45bC05LjQgNjYuMmMtMS40IDkuNiA2IDE4LjIgMTUuNyAxOC4ySDE5MnYtNTZjMC00LjQgMy42LTggOC04aDE2YzQuNCAwIDggMy42IDggOHY1Nmg2NHYtNTZjMC00LjQgMy42LTggOC04aDE2YzQuNCAwIDggMy42IDggOHY1Nmg3Ny43YzkuNyAwIDE3LjEtOC42IDE1LjctMTguMmwtOS40LTY2LjJjLTEuNy0xMS43IDMuOC0yMyAxMy41LTI5LjlDNDc1LjEgMzU2LjYgNTEyIDI5NC4xIDUxMiAyMjQgNTEyIDEwMC4zIDM5Ny40IDAgMjU2IDB6bS05NiAzMjBjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em0xOTIgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NCA2NCAyOC43IDY0IDY0LTI4LjcgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5NC41MyA1MDguNjNMNi4xOCA1My45Yy02Ljk3LTUuNDItOC4yMy0xNS40Ny0yLjgxLTIyLjQ1TDIzLjAxIDYuMThDMjguNDMtLjggMzguNDktMi4wNiA0NS40NyAzLjM3TDYzMy44MiA0NTguMWM2Ljk3IDUuNDIgOC4yMyAxNS40NyAyLjgxIDIyLjQ1bC0xOS42NCAyNS4yN2MtNS40MiA2Ljk4LTE1LjQ4IDguMjMtMjIuNDYgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xlaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxMi43IDM1MC43bC05LjMtNy40Yy02LjktNS41LTE3LTQuNC0yMi41IDIuNWwtMTAgMTIuNWMtNS41IDYuOS00LjQgMTcgMi41IDIyLjVsOS4zIDcuNGM1LjkgNC43IDkuMiAxMS43IDkuMiAxOS4yIDAgMTMuNi0xMSAyNC42LTI0LjYgMjQuNkg0OGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmg1MTZjMzkgMCA3My43LTI5LjMgNzUuOS02OC4zIDEuNC0yMy44LTguNy00Ni4zLTI3LjItNjF6TTMyIDIyNGMwIDU5LjYgNDAuOSAxMDkuMiA5NiAxMjMuNVY0MDBoNjR2LTQ4aDE5MnY0OGg2NHYtNDhjNTMgMCA5Ni00MyA5Ni05NnYtOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJoLTk2djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0aC0yMC43Yy02NS44IDAtMTI1LjktMzcuMi0xNTUuMy05Ni0yOS40LTU4LjgtODkuNi05Ni0xNTUuMy05NkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0czE0LjMgMzIgMzIgMzJ2MTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGlkZXJzSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMzg0SDE2MHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djE2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDgwdjE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTE2aDMzNmM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptMC0xNjBoLTgwdi0xNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzM2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTE2aDgwYzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2em0wLTE2MEgyODhWNDhjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djE2SDE2QzcuMiA2NCAwIDcxLjIgMCA4MHYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMjA4djE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTE2aDIwOGM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbWlsZUJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNMTEyIDIyMy40YzMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMyA3LjQtMTUuOCA0LTE1LjEtNC41em0yNTAuOCAxMjIuOEMzMzQuMyAzODAuNCAyOTIuNSA0MDAgMjQ4IDQwMHMtODYuMy0xOS42LTExNC44LTUzLjhjLTEzLjUtMTYuMyAxMS0zNi43IDI0LjYtMjAuNSAyMi40IDI2LjkgNTUuMiA0Mi4yIDkwLjIgNDIuMnM2Ny44LTE1LjQgOTAuMi00Mi4yYzEzLjYtMTYuMiAzOC4xIDQuMyAyNC42IDIwLjV6bTYuMi0xMTguM2wtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4xIDcuMy0xNS42IDQtMTQuOS00LjUgMy4zLTQyLjEgMzIuMi03MS40IDU2LTcxLjRzNTIuNyAyOS4zIDU2IDcxLjRjLjYgOC42LTExIDExLjktMTUuMSA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtaWxlV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmMwIDEzNyAxMTEgMjQ4IDI0OCAyNDhzMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4IDAgMTE5IDAgMjU2em0yMDAtNDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyem0xNTguNSAxNi41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMjg4IDIzM2MtOC4zIDcuNC0yMS42LjQtMTkuOC0xMC44IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzM4NCAxOTcgMzg4IDIyMi4yYzEuNyAxMS4xLTExLjQgMTguMy0xOS44IDEwLjhsLTkuNy04LjV6TTE1Ny44IDMyNS44QzE4MC4yIDM1Mi43IDIxMyAzNjggMjQ4IDM2OHM2Ny44LTE1LjQgOTAuMi00Mi4yYzEzLjYtMTYuMiAzOC4xIDQuMiAyNC42IDIwLjVDMzM0LjMgMzgwLjQgMjkyLjUgNDAwIDI0OCA0MDBzLTg2LjMtMTkuNi0xMTQuOC01My44Yy0xMy41LTE2LjMgMTEuMi0zNi43IDI0LjYtMjAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21pbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMTk0LjggMTcwLjJDMzM0LjMgMzgwLjQgMjkyLjUgNDAwIDI0OCA0MDBzLTg2LjMtMTkuNi0xMTQuOC01My44Yy0xMy42LTE2LjMgMTEtMzYuNyAyNC42LTIwLjUgMjIuNCAyNi45IDU1LjIgNDIuMiA5MC4yIDQyLjJzNjcuOC0xNS40IDkwLjItNDIuMmMxMy40LTE2LjIgMzguMSA0LjIgMjQuNiAyMC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbW9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAzNjhIODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoNTQ0YzguOCAwIDE2LTcuMiAxNi0xNnYtMTZjMC04LjgtNy4yLTE2LTE2LTE2em0tNDgwIDk2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDEyOGM4LjggMCAxNi03LjIgMTYtMTZ2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnptNDE2IDBIMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMzNmM4LjggMCAxNi03LjIgMTYtMTZ2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnpNMTQ0IDI4OGgxNTYuMWMyMi41IDE5LjcgNTEuNiAzMiA4My45IDMyczYxLjMtMTIuMyA4My45LTMySDUyOGM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlM1ODkuOSA2NCA1MjggNjRjLTE4IDAtMzQuNyA0LjYtNDkuNyAxMi4xQzQ1NCAzMSA0MDYuOCAwIDM1MiAwYy00MSAwLTc3LjggMTcuMy0xMDQgNDQuOEMyMjEuOCAxNy4zIDE4NSAwIDE0NCAwIDY0LjUgMCAwIDY0LjUgMCAxNDRzNjQuNSAxNDQgMTQ0IDE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21va2luZ0JhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMDRjMCA4LjggNy4yIDE2IDE2IDE2aDExNy41bC05Ni05NkgxMTJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NHpNMjU2IDBDMTE0LjYgMCAwIDExNC42IDAgMjU2czExNC42IDI1NiAyNTYgMjU2IDI1Ni0xMTQuNiAyNTYtMjU2UzM5Ny40IDAgMjU2IDB6bTAgNDQ4Yy0xMDUuOSAwLTE5Mi04Ni4xLTE5Mi0xOTIgMC00MS40IDEzLjMtNzkuNyAzNS43LTExMS4xbDI2Ny40IDI2Ny40QzMzNS43IDQzNC43IDI5Ny40IDQ0OCAyNTYgNDQ4em00NS4yLTE5MkgzODR2MzJoLTUwLjhsLTMyLTMyem0xMTEuMSAxMTEuMUwzNjUuMiAzMjBINDAwYzguOCAwIDE2LTcuMiAxNi0xNnYtNjRjMC04LjgtNy4yLTE2LTE2LTE2SDI2OS4yTDE0NC45IDk5LjdDMTc2LjMgNzcuMyAyMTQuNiA2NCAyNTYgNjRjMTA1LjkgMCAxOTIgODYuMSAxOTIgMTkyIDAgNDEuNC0xMy4zIDc5LjctMzUuNyAxMTEuMXpNMzIwLjYgMTI4Yy0xNS42IDAtMjguNi0xMS4yLTMxLjQtMjUuOS0uNy0zLjYtNC02LjEtNy43LTYuMWgtMTYuMmMtNSAwLTguNyA0LjUtOCA5LjQgNC42IDMwLjkgMzEuMiA1NC42IDYzLjMgNTQuNiAxNS42IDAgMjguNiAxMS4yIDMxLjQgMjUuOS43IDMuNiA0IDYuMSA3LjcgNi4xaDE2LjJjNSAwIDguNy00LjUgOC05LjQtNC42LTMwLjktMzEuMi01NC42LTYzLjMtNTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21va2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzIgMzUyaC00OGMtNC40IDAtOCAzLjYtOCA4djE0NGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjM2MGMwLTQuNC0zLjYtOC04LTh6TTU1My4zIDg3LjFjLTUuNy0zLjgtOS4zLTEwLTkuMy0xNi44VjhjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djYyLjNjMCAyMiAxMC4yIDQzLjQgMjguNiA1NS40IDQyLjIgMjcuMyA2Ny40IDczLjggNjcuNCAxMjRWMjgwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTMwLjNjMC02NS41LTMyLjQtMTI2LjItODYuNy0xNjIuNnpNNDMyIDM1Mkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzg0YzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2em0tMzIgMTEySDIyNHYtNjRoMTc2djY0em04Ny43LTMyMi40QzQ2My44IDEyNSA0NDggOTkuMyA0NDggNzAuM1Y4YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHY2Ni40YzAgNDMuNyAyNC42IDgxLjYgNjAuMyAxMDYuNyAyMi40IDE1LjcgMzUuNyA0MS4yIDM1LjcgNjguNlYyODBjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtMzAuM2MwLTQzLjMtMjEtODMuNC01Ni4zLTEwOC4xek01MzYgMzUyaC00OGMtNC40IDAtOCAzLjYtOCA4djE0NGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjM2MGMwLTQuNC0zLjYtOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTE0LjYgMzIgMCAxMjUuMSAwIDI0MGMwIDQ5LjYgMjEuNCA5NSA1NyAxMzAuN0M0NC41IDQyMS4xIDIuNyA0NjYgMi4yIDQ2Ni41Yy0yLjIgMi4zLTIuOCA1LjctMS41IDguNyAxLjMgMyA0LjEgNC44IDcuMyA0LjggNjYuMyAwIDExNi0zMS44IDE0MC42LTUxLjQgMzIuNyAxMi4zIDY5IDE5LjQgMTA3LjQgMTkuNCAxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyek0xMjguMiAzMDRIMTE2Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxMi4zYzYgMCAxMC40LTMuNSAxMC40LTYuNiAwLTEuMy0uOC0yLjctMi4xLTMuOGwtMjEuOS0xOC44Yy04LjUtNy4yLTEzLjMtMTcuNS0xMy4zLTI4LjEgMC0yMS4zIDE5LTM4LjYgNDIuNC0zOC42SDE1NmM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4aC0xMi4zYy02IDAtMTAuNCAzLjUtMTAuNCA2LjYgMCAxLjMuOCAyLjcgMi4xIDMuOGwyMS45IDE4LjhjOC41IDcuMiAxMy4zIDE3LjUgMTMuMyAyOC4xLjEgMjEuMy0xOSAzOC42LTQyLjQgMzguNnptMTkxLjgtOGMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LTh2LTY4LjJsLTI0LjggNTUuOGMtMi45IDUuOS0xMS40IDUuOS0xNC4zIDBMMjI0IDIyNy44VjI5NmMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LThWMTkyYzAtOC44IDcuMi0xNiAxNi0xNmgxNmM2LjEgMCAxMS42IDMuNCAxNC4zIDguOGwxNy43IDM1LjQgMTcuNy0zNS40YzIuNy01LjQgOC4zLTguOCAxNC4zLTguOGgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTA0em00OC4zIDhIMzU2Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxMi4zYzYgMCAxMC40LTMuNSAxMC40LTYuNiAwLTEuMy0uOC0yLjctMi4xLTMuOGwtMjEuOS0xOC44Yy04LjUtNy4yLTEzLjMtMTcuNS0xMy4zLTI4LjEgMC0yMS4zIDE5LTM4LjYgNDIuNC0zOC42SDM5NmM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4aC0xMi4zYy02IDAtMTAuNCAzLjUtMTAuNCA2LjYgMCAxLjMuOCAyLjcgMi4xIDMuOGwyMS45IDE4LjhjOC41IDcuMiAxMy4zIDE3LjUgMTMuMyAyOC4xLjEgMjEuMy0xOC45IDM4LjYtNDIuMyAzOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbm93Ym9hcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzQ1OC41IDAgNDMyIDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptMjguOCAxNTMuNmM1LjggNC4zIDEyLjUgNi40IDE5LjIgNi40IDkuNyAwIDE5LjMtNC40IDI1LjYtMTIuOCAxMC42LTE0LjEgNy44LTM0LjItNi40LTQ0LjhsLTExMS40LTgzLjVjLTEzLjgtMTAuMy0yOS4xLTE4LjQtNDUuNC0yMy44bC02My43LTIxLjItMjYuMS01Mi4xQzI0NC43IDIgMjI1LjUtNC40IDIwOS43IDMuNWMtMTUuOCA3LjktMjIuMiAyNy4xLTE0LjMgNDIuOWwyOS4xIDU4LjFjNS43IDExLjQgMTUuNiAxOS45IDI3LjcgMjRsMTYuNCA1LjUtNDEuMiAyMC42Yy0yMS44IDEwLjktMzUuNCAzMi44LTM1LjQgNTcuMnY1My4xbC03NC4xIDI0LjdjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjUgMS43IDUuMiA0LjkgOS40IDguNyAxMi45bC0zOC43LTE0LjFjLTkuNy0zLjUtMTcuNC0xMC42LTIxLjgtMjAtNS42LTEyLTE5LjktMTcuMi0zMS45LTExLjZzLTE3LjIgMTkuOS0xMS42IDMxLjljOS44IDIxIDI3LjEgMzYuOSA0OC45IDQ0LjhsMzY0LjggMTMyLjdjOS43IDMuNSAxOS43IDUuMyAyOS43IDUuMyAxMi41IDAgMjQuOS0yLjcgMzYuNS04LjIgMTItNS42IDE3LjItMTkuOSAxMS42LTMxLjlTNDc0IDQ1NC43IDQ2MiA0NjAuM2MtOS4zIDQuNC0xOS44IDQuOC0yOS41IDEuM2wtOTAuOC0zMy4xYzguNy00LjEgMTUuNi0xMS44IDE3LjgtMjEuOWwyMS45LTEwMmMzLjktMTguMi0zLjItMzcuMi0xOC4xLTQ4LjRsLTUyLTM5IDY2LTMwLjUgODMuNSA2Mi45em0tMTQ0LjQgNTEuN2wtMTkuNyA5MmMtMS41IDcuMS0uMSAxMy45IDIuOCAyMGwtMTY5LjQtNjEuNmMyLjctLjIgNS40LS40IDgtMS4zbDg1LTI4LjRjMTkuNi02LjUgMzIuOC0yNC44IDMyLjgtNDUuNVYyNTZsNjAuNSA0NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbm93Zmxha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjMgMzQ1LjJsLTMzLjgtMTkuNSAyNi03YzguMi0yLjIgMTMuMS0xMC43IDEwLjktMTguOWwtNC0xNC45Yy0yLjItOC4yLTEwLjctMTMuMS0xOC45LTEwLjlsLTcwLjggMTktNjMuOS0zNyA2My44LTM2LjkgNzAuOCAxOWM4LjIgMi4yIDE2LjctMi43IDE4LjktMTAuOWw0LTE0LjljMi4yLTguMi0yLjctMTYuNy0xMC45LTE4LjlsLTI2LTcgMzMuOC0xOS41YzcuNC00LjMgOS45LTEzLjcgNS43LTIxLjFMNDMwLjQgMTE5Yy00LjMtNy40LTEzLjctOS45LTIxLjEtNS43bC0zMy44IDE5LjUgNy0yNmMyLjItOC4yLTIuNy0xNi43LTEwLjktMTguOWwtMTQuOS00Yy04LjItMi4yLTE2LjcgMi43LTE4LjkgMTAuOWwtMTkgNzAuOC02Mi44IDM2LjJ2LTc3LjVsNTMuNy01My43YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0xMS4zLTExLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDI1NiA1Ni40VjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0MC40bC0xOS43LTE5LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDEzOC4zIDQ4Yy02LjMgNi4yLTYuMyAxNi40IDAgMjIuNmw1My43IDUzLjd2NzcuNWwtNjIuOC0zNi4yLTE5LTcwLjhjLTIuMi04LjItMTAuNy0xMy4xLTE4LjktMTAuOWwtMTQuOSA0Yy04LjIgMi4yLTEzLjEgMTAuNy0xMC45IDE4LjlsNyAyNi0zMy44LTE5LjVjLTcuNC00LjMtMTYuOC0xLjctMjEuMSA1LjdMMi4xIDE0NS43Yy00LjMgNy40LTEuNyAxNi44IDUuNyAyMS4xbDMzLjggMTkuNS0yNiA3Yy04LjMgMi4yLTEzLjIgMTAuNy0xMSAxOWw0IDE0LjljMi4yIDguMiAxMC43IDEzLjEgMTguOSAxMC45bDcwLjgtMTkgNjMuOCAzNi45LTYzLjggMzYuOS03MC44LTE5Yy04LjItMi4yLTE2LjcgMi43LTE4LjkgMTAuOWwtNCAxNC45Yy0yLjIgOC4yIDIuNyAxNi43IDEwLjkgMTguOWwyNiA3LTMzLjggMTkuNmMtNy40IDQuMy05LjkgMTMuNy01LjcgMjEuMWwxNS41IDI2LjhjNC4zIDcuNCAxMy43IDkuOSAyMS4xIDUuN2wzMy44LTE5LjUtNyAyNmMtMi4yIDguMiAyLjcgMTYuNyAxMC45IDE4LjlsMTQuOSA0YzguMiAyLjIgMTYuNy0yLjcgMTguOS0xMC45bDE5LTcwLjggNjIuOC0zNi4ydjc3LjVsLTUzLjcgNTMuN2MtNi4zIDYuMi02LjMgMTYuNCAwIDIyLjZsMTEuMyAxMS4zYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDE5LjctMTkuN1Y0OTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtNDAuNGwxOS43IDE5LjdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsMTEuMy0xMS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42TDI1NiAzODcuN3YtNzcuNWw2Mi44IDM2LjIgMTkgNzAuOGMyLjIgOC4yIDEwLjcgMTMuMSAxOC45IDEwLjlsMTQuOS00YzguMi0yLjIgMTMuMS0xMC43IDEwLjktMTguOWwtNy0yNiAzMy44IDE5LjVjNy40IDQuMyAxNi44IDEuNyAyMS4xLTUuN2wxNS41LTI2LjhjNC4zLTcuMyAxLjgtMTYuOC01LjYtMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNub3dtYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjkgMTUyLjNsLTUuOS0xNC41Yy0zLjMtOC0xMi42LTExLjktMjAuOC04LjdMNDU2IDE0MC42di0yOWMwLTguNi03LjItMTUuNi0xNi0xNS42aC0xNmMtOC44IDAtMTYgNy0xNiAxNS42djQ2LjljMCAuNS4zIDEgLjMgMS41bC01Ni40IDIzYy01LjktMTAtMTMuMy0xOC45LTIyLTI2LjYgMTMuNi0xNi42IDIyLTM3LjQgMjItNjAuNSAwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDIzLjEgOC41IDQzLjkgMjIgNjAuNS04LjcgNy43LTE2IDE2LjYtMjIgMjYuNmwtNTYuNC0yM2MuMS0uNS4zLTEgLjMtMS41di00Ni45QzEwNCAxMDMgOTYuOCA5NiA4OCA5Nkg3MmMtOC44IDAtMTYgNy0xNiAxNS42djI5bC0yOC4xLTExLjVjLTguMi0zLjItMTcuNS43LTIwLjggOC43bC01LjkgMTQuNWMtMy4zIDggLjcgMTcuMSA4LjkgMjAuM2wxMzUuMiA1NS4yYy0uNCA0LTEuMiA4LTEuMiAxMi4yIDAgMTAuMSAxLjcgMTkuNiA0LjIgMjguOUMxMjAuOSAyOTYuNCAxMDQgMzM0LjIgMTA0IDM3NmMwIDU0IDI4LjQgMTAwLjkgNzAuOCAxMjcuOCA5LjMgNS45IDIwLjMgOC4yIDMxLjMgOC4yaDk5LjJjMTMuMyAwIDI2LjMtNC4xIDM3LjItMTEuNyA0Ni41LTMyLjMgNzQuNC04OS40IDYyLjktMTUyLjYtNS41LTMwLjItMjAuNS01Ny42LTQxLjYtNzkgMi41LTkuMiA0LjItMTguNyA0LjItMjguNyAwLTQuMi0uOC04LjEtMS4yLTEyLjJMNTAyIDE3Mi42YzguMS0zLjEgMTIuMS0xMi4yIDguOS0yMC4zek0yMjQgOTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMzIgMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtNjRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC02NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTg4cy0xNi0yMy4yLTE2LTMyIDcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtMTYgMzItMTYgMzJ6bTMyLTU2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNub3dwbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMCAzNzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em04MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptODAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bTgwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em0yMzguNiA0OS40Yy0xNC41LTE0LjUtMjIuNi0zNC4xLTIyLjYtNTQuNlYyNjkuMmMwLTIwLjUgOC4xLTQwLjEgMjIuNi01NC42bDM2LjctMzYuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMjIuNi0yMi42Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGwtMzYuNyAzNi43Yy0yNi41IDI2LjUtNDEuNCA2Mi40LTQxLjQgOTkuOVYyODhoLTY0di01MC45YzAtOC43LTEuOC0xNy4yLTUuMi0yNS4yTDM2NC41IDI5LjFDMzU2LjkgMTEuNCAzMzkuNiAwIDMyMC4zIDBIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxMTJoLTE2Yy0yNi41IDAtNDggMjEuNS00OCA0OHY5MS4yQzI2LjMgMzE3LjIgMCAzNTUuNCAwIDQwMGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMmgyNTZjNjEuOSAwIDExMi01MC4xIDExMi0xMTIgMC0xNy4zLTQuMi0zMy40LTExLjItNDhINTEydjE4LjdjMCAzNy41IDE0LjkgNzMuNCA0MS40IDk5LjlsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDIyLjYtMjIuNmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMzYuNy0zNi43ek0xOTIgNjRoMTE3LjhsNjguNiAxNjBIMjU2bC02NC02NFY2NHptMTc2IDM4NEgxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDhoMjU2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiwxOTJhOTUuNDIsOTUuNDIsMCwwLDEtMzAuOTQsNzAuMjFBOTUuOCw5NS44LDAsMCwxLDM1Miw0NDhIMTYwYTk2LDk2LDAsMCwxLDAtMTkyaDg4LjkxQTk1LjMsOTUuMywwLDAsMSwyMjQsMTkySDk2QTk2LDk2LDAsMCwwLDAsMjg4VjQxNmE5Niw5NiwwLDAsMCw5Niw5Nkg0MTZhOTYsOTYsMCwwLDAsOTYtOTZWMjg4QTk2LDk2LDAsMCwwLDQxNiwxOTJabS05Niw2NGE2NCw2NCwwLDEsMC02NC02NEE2NCw2NCwwLDAsMCwzMjAsMjU2Wk0yMDgsOTZhNDgsNDgsMCwxLDAtNDgtNDhBNDgsNDgsMCwwLDAsMjA4LDk2Wk0zODQsNjRhMzIsMzIsMCwxLDAtMzItMzJBMzIsMzIsMCwwLDAsMzg0LDY0Wk0xNjAsMjg4YTY0LDY0LDAsMCwwLDAsMTI4SDM1MmE2NCw2NCwwLDAsMCwwLTEyOFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ja3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE0LjY2IDMxMS4wMUwyODggMjU2Vjk2SDEyOHYxNzZsLTg2LjY1IDY0LjYxYy0zOS40IDI5LjU2LTUzLjg2IDg0LjQyLTI5LjIxIDEyNy4wNkMzMC4zOSA0OTUuMjUgNjMuMjcgNTEyIDk2LjA4IDUxMmMyMC4wMyAwIDQwLjI1LTYuMjUgNTcuNTItMTkuMmwyMS44Ni0xNi4zOWMtMjkuODUtNTUuMzgtMTMuNTQtMTI1Ljg0IDM5LjItMTY1LjR6TTI4OCAzMmMwLTExLjA1IDMuMDctMjEuMyA4LjAyLTMwLjM4QzI5My40LjkyIDI5MC44NSAwIDI4OCAwSDE2MGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmgxNjBWMzJ6TTQ4MCAwSDM1MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmgxOTJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMzIwIDI3MmwtODYuMTMgNjQuNjFjLTM5LjQgMjkuNTYtNTMuODYgODQuNDItMjkuMjEgMTI3LjA2IDE4LjI1IDMxLjU4IDUwLjYxIDQ4LjMzIDgzLjQyIDQ4LjMzIDIwLjAzIDAgNDAuMjUtNi4yNSA1Ny41Mi0xOS4ybDExNS4yLTg2LjRBMTI3Ljk5NyAxMjcuOTk3IDAgMCAwIDUxMiAzMDRWOTZIMzIwdjE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29sYXJQYW5lbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzEuOTggNDQ4LjAxbC00Ny45Ny4wNVY0MTZoLTEyOHYzMi4yMWwtNDcuOTguMDVjLTguODIuMDEtMTUuOTcgNy4xNi0xNS45OCAxNS45OWwtLjA1IDMxLjczYy0uMDEgOC44NSA3LjE3IDE2LjAzIDE2LjAyIDE2LjAybDIyMy45Ni0uMjZjOC44Mi0uMDEgMTUuOTctNy4xNiAxNS45OC0xNS45OGwuMDQtMzEuNzNjLjAxLTguODUtNy4xNy0xNi4wMy0xNi4wMi0xNi4wMnpNNTg1LjIgMjYuNzRDNTgyLjU4IDExLjMxIDU2OC45OSAwIDU1My4wNiAwSDg2LjkzQzcxIDAgNTcuNDEgMTEuMzEgNTQuNzkgMjYuNzQtMy4zMiAzNjkuMTYuMDQgMzQ4LjA4LjAzIDM1MmMtLjAzIDE3LjMyIDE0LjI5IDMyIDMyLjYgMzJoNTc0Ljc0YzE4LjIzIDAgMzIuNTEtMTQuNTYgMzIuNTktMzEuNzkuMDItNC4wOCAzLjM1IDE2Ljk1LTU0Ljc2LTMyNS40N3pNMjU5LjgzIDY0aDEyMC4zM2w5Ljc3IDk2SDI1MC4wNmw5Ljc3LTk2em0tNzUuMTcgMjU2SDcxLjA5TDkwLjEgMjA4aDEwNS45N2wtMTEuNDEgMTEyem0xNi4yOS0xNjBIOTguMjRsMTYuMjktOTZoOTYuMTlsLTkuNzcgOTZ6bTMyLjgyIDE2MGwxMS40LTExMmgxNDkuNjVsMTEuNCAxMTJIMjMzLjc3em0xOTUuNS0yNTZoOTYuMTlsMTYuMjkgOTZINDM5LjA0bC05Ljc3LTk2em0yNi4wNiAyNTZsLTExLjQtMTEySDU0OS45bDE5LjAxIDExMkg0NTUuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbHBoYURvd25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDM1MmgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM2IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6bTExMi0xMjhoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtNTZsNjEuMjYtNzAuNDVBMzIgMzIgMCAwIDAgNDMyIDY1LjYzVjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDI4OGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg1NmwtNjEuMjYgNzAuNDVBMzIgMzIgMCAwIDAgMjcyIDE5MC4zN1YyMDhhMTYgMTYgMCAwIDAgMTYgMTZ6bTE1OS4wNiAyMzQuNjJsLTU5LjI3LTE2MEExNiAxNiAwIDAgMCAzNzIuNzIgMjg4aC00MS40NGExNiAxNiAwIDAgMC0xNS4wNyAxMC42MmwtNTkuMjcgMTYwQTE2IDE2IDAgMCAwIDI3MiA0ODBoMjQuODNhMTYgMTYgMCAwIDAgMTUuMjMtMTEuMDhsNC40Mi0xMi45Mmg3MWw0LjQxIDEyLjkyQTE2IDE2IDAgMCAwIDQwNy4xNiA0ODBINDMyYTE2IDE2IDAgMCAwIDE1LjA2LTIxLjM4ek0zMzUuNjEgNDAwTDM1MiAzNTJsMTYuMzkgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbHBoYURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDM1MmgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM2IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6bTI0MC02NEgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiA0NDYuMzdWNDY0YTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiAzMjEuNjNWMzA0YTE2IDE2IDAgMCAwLTE2LTE2em0zMS4wNi04NS4zOGwtNTkuMjctMTYwQTE2IDE2IDAgMCAwIDM3Mi43MiAzMmgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgMjI0aDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgMjI0SDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDE0NEwzNTIgOTZsMTYuMzkgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbHBoYVVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE2MGg0OHYzMDRhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTYwaDQ4YzE0LjIxIDAgMjEuMzgtMTcuMjQgMTEuMzEtMjcuMzFsLTgwLTk2YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjB6bTI3MiA2NGgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC01Nmw2MS4yNi03MC40NUEzMiAzMiAwIDAgMCA0MzIgNjUuNjNWNDhhMTYgMTYgMCAwIDAtMTYtMTZIMjg4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDU2bC02MS4yNiA3MC40NUEzMiAzMiAwIDAgMCAyNzIgMTkwLjM3VjIwOGExNiAxNiAwIDAgMCAxNiAxNnptMTU5LjA2IDIzNC42MmwtNTkuMjctMTYwQTE2IDE2IDAgMCAwIDM3Mi43MiAyODhoLTQxLjQ0YTE2IDE2IDAgMCAwLTE1LjA3IDEwLjYybC01OS4yNyAxNjBBMTYgMTYgMCAwIDAgMjcyIDQ4MGgyNC44M2ExNiAxNiAwIDAgMCAxNS4yMy0xMS4wOGw0LjQyLTEyLjkyaDcxbDQuNDEgMTIuOTJBMTYgMTYgMCAwIDAgNDA3LjE2IDQ4MEg0MzJhMTYgMTYgMCAwIDAgMTUuMDYtMjEuMzh6TTMzNS42MSA0MDBMMzUyIDM1MmwxNi4zOSA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydEFscGhhVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTYwaDQ4djMwNGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNjBoNDhjMTQuMjEgMCAyMS4zOC0xNy4yNCAxMS4zMS0yNy4zMWwtODAtOTZhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgOTZDLTUuMzUgMTQyLjc0IDEuNzggMTYwIDE2IDE2MHptNDAwIDEyOEgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiA0NDYuMzdWNDY0YTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiAzMjEuNjNWMzA0YTE2IDE2IDAgMCAwLTE2LTE2em0zMS4wNi04NS4zOGwtNTkuMjctMTYwQTE2IDE2IDAgMCAwIDM3Mi43MiAzMmgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgMjI0aDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgMjI0SDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDE0NEwzNTIgOTZsMTYuMzkgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbW91bnREb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCA5Nmg2NGExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTAgMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0yNTYgMTkySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMjU2LTY0aDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0tNjQgMGgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM3IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbW91bnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCA0MTZoLTY0YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDY0YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTEyOC02NGgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM3IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6bTI1Ni0xOTJIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS02NCAxMjhIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTQ5NiAzMkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjU2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QW1vdW50VXBBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwIDk2aDY0YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2aC02NGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptMCAxMjhoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTI1NiAxOTJIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI1NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0yNTYtNjRoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6TTE2IDE2MGg0OHYzMDRhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTYwaDQ4YzE0LjIxIDAgMjEuMzktMTcuMjQgMTEuMzEtMjcuMzFsLTgwLTk2YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbW91bnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgNDE2aC02NGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTE2IDE2MGg0OHYzMDRhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTYwaDQ4YzE0LjIxIDAgMjEuMzgtMTcuMjQgMTEuMzEtMjcuMzFsLTgwLTk2YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc3IDE2MCAxNiAxNjB6bTQxNiAwSDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tNjQgMTI4SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek00OTYgMzJIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI1NmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEgMjg4aDIzOGMyMS40IDAgMzIuMSAyNS45IDE3IDQxTDE3NyA0NDhjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDI0IDMyOWMtMTUuMS0xNS4xLTQuNC00MSAxNy00MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydE51bWVyaWNEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAzNTJoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0yMjQgNjRoLTE2VjMwNGExNiAxNiAwIDAgMC0xNi0xNmgtNDhhMTYgMTYgMCAwIDAtMTQuMjkgOC44M2wtMTYgMzJBMTYgMTYgMCAwIDAgMzA0IDM1MmgxNnY2NGgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0zMzAuMTcgMzQuOTFhNzkgNzkgMCAwIDAtNTUgNTQuMTdjLTE0LjI3IDUxLjA1IDIxLjE5IDk3Ljc3IDY4LjgzIDEwMi41M2E4NC4wNyA4NC4wNyAwIDAgMS0yMC44NSAxMi45MWMtNy41NyAzLjQtMTAuOCAxMi40Ny04LjE4IDIwLjM0bDkuOSAyMGMyLjg3IDguNjMgMTIuNTMgMTMuNDkgMjAuOSA5LjkxIDU4LTI0Ljc3IDg2LjI1LTYxLjYxIDg2LjI1LTEzMlYxMTJjLS4wMi01MS4yMS00OC40LTkxLjM0LTEwMS44NS03Ny4wOXpNMzUyIDEzMmEyMCAyMCAwIDEgMSAyMC0yMCAyMCAyMCAwIDAgMS0yMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydE51bWVyaWNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCA5NmgxNnY2NGgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNmgtNDhhMTYgMTYgMCAwIDAtMTQuMjkgOC44M2wtMTYgMzJBMTYgMTYgMCAwIDAgMzA0IDk2em0yNi4xNSAxNjIuOTFhNzkgNzkgMCAwIDAtNTUgNTQuMTdjLTE0LjI1IDUxLjA1IDIxLjIxIDk3Ljc3IDY4Ljg1IDEwMi41M2E4NC4wNyA4NC4wNyAwIDAgMS0yMC44NSAxMi45MWMtNy41NyAzLjQtMTAuOCAxMi40Ny04LjE4IDIwLjM0bDkuOSAyMGMyLjg3IDguNjMgMTIuNTMgMTMuNDkgMjAuOSA5LjkxIDU4LTI0Ljc2IDg2LjI1LTYxLjYxIDg2LjI1LTEzMlYzMzZjLS4wMi01MS4yMS00OC40LTkxLjM0LTEwMS44NS03Ny4wOXpNMzUyIDM1NmEyMCAyMCAwIDEgMSAyMC0yMCAyMCAyMCAwIDAgMS0yMCAyMHptLTE3Ni00aC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMDRIMTZjLTE0LjE5IDAtMjEuMzYgMTcuMjQtMTEuMjkgMjcuMzFsODAgOTZhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC05NkMxOTcuMzUgMzY5LjI2IDE5MC4yMiAzNTIgMTc2IDM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydE51bWVyaWNVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDcuMzEgMzYuNjlhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgOTZDLTUuMzUgMTQyLjc0IDEuNzggMTYwIDE2IDE2MGg0OHYzMDRhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTYwaDQ4YzE0LjIxIDAgMjEuMzgtMTcuMjQgMTEuMzEtMjcuMzF6TTQwMCA0MTZoLTE2VjMwNGExNiAxNiAwIDAgMC0xNi0xNmgtNDhhMTYgMTYgMCAwIDAtMTQuMjkgOC44M2wtMTYgMzJBMTYgMTYgMCAwIDAgMzA0IDM1MmgxNnY2NGgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0zMzAuMTcgMzQuOTFhNzkgNzkgMCAwIDAtNTUgNTQuMTdjLTE0LjI3IDUxLjA1IDIxLjE5IDk3Ljc3IDY4LjgzIDEwMi41M2E4NC4wNyA4NC4wNyAwIDAgMS0yMC44NSAxMi45MWMtNy41NyAzLjQtMTAuOCAxMi40Ny04LjE4IDIwLjM0bDkuOSAyMGMyLjg3IDguNjMgMTIuNTMgMTMuNDkgMjAuOSA5LjkxIDU4LTI0Ljc3IDg2LjI1LTYxLjYxIDg2LjI1LTEzMlYxMTJjLS4wMi01MS4yMS00OC40LTkxLjM0LTEwMS44NS03Ny4wOXpNMzUyIDEzMmEyMCAyMCAwIDEgMSAyMC0yMCAyMCAyMCAwIDAgMS0yMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydE51bWVyaWNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzAuMTcgMjU4LjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNyA1MS4wNSAyMS4xOSA5Ny43NyA2OC44MyAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NiA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMzM2Yy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAzNTZhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6TTMwNCA5NmgxNnY2NGgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNmgtNDhhMTYgMTYgMCAwIDAtMTQuMjkgOC44M2wtMTYgMzJBMTYgMTYgMCAwIDAgMzA0IDk2ek0xMDcuMzEgMzYuNjlhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgOTZDLTUuMzUgMTQyLjc0IDEuNzggMTYwIDE2IDE2MGg0OHYzMDRhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTYwaDQ4YzE0LjIxIDAgMjEuMzgtMTcuMjQgMTEuMzEtMjcuMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzkgMjI0SDQxYy0yMS40IDAtMzIuMS0yNS45LTE3LTQxTDE0MyA2NGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxMTkgMTE5YzE1LjIgMTUuMSA0LjUgNDEtMTYuOSA0MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MSAyODhoMjM4YzIxLjQgMCAzMi4xIDI1LjkgMTcgNDFMMTc3IDQ0OGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMjQgMzI5Yy0xNS4xLTE1LjEtNC40LTQxIDE3LTQxem0yNTUtMTA1TDE3NyA2NGMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMjQgMTgzYy0xNS4xIDE1LjEtNC40IDQxIDE3IDQxaDIzOGMyMS40IDAgMzIuMS0yNS45IDE3LTQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY4LjI1IDE5MmMtMjkuMDQuMTMtMTM1LjAxIDYuMTYtMjEzLjg0IDgzLTMzLjEyIDI5LjYzLTUzLjM2IDYzLjMtNjYuNDEgOTQuODYtMTMuMDUtMzEuNTYtMzMuMjktNjUuMjMtNjYuNDEtOTQuODYtNzguODMtNzYuODQtMTg0LjgtODIuODctMjEzLjg0LTgzLTQuNDEtLjAyLTcuNzkgMy40LTcuNzUgNy44Mi4yMyAyNy45MiA3LjE0IDEyNi4xNCA4OC43NyAxOTkuM0MxNzIuNzkgNDgwLjk0IDI1NiA0ODAgMjg4IDQ4MHMxMTUuMTkuOTUgMTk5LjIzLTgwLjg4YzgxLjY0LTczLjE3IDg4LjU0LTE3MS4zOCA4OC43Ny0xOTkuMy4wNC00LjQyLTMuMzQtNy44NC03Ljc1LTcuODJ6TTI4Ny45OCAzMDIuNmMxMi44Mi0xOC44NSAyNy42LTM1Ljc4IDQ0LjA5LTUwLjUyIDE5LjA5LTE4LjYxIDM5LjU4LTMzLjMgNjAuMjYtNDUuMTgtMTYuNDQtNzAuNS01MS43Mi0xMzMuMDUtOTYuNzMtMTcyLjIyLTQuMTEtMy41OC0xMS4wMi0zLjU4LTE1LjE0IDAtNDQuOTkgMzkuMTQtODAuMjcgMTAxLjYzLTk2Ljc0IDE3Mi4wNyAyMC4zNyAxMS43IDQwLjUgMjYuMTQgNTkuMjIgNDQuMzlhMjgyLjc2OCAyODIuNzY4IDAgMCAxIDQ1LjA0IDUxLjQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGFjZVNodXR0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkyLjYwNCAyMDguMjQ0QzU1OS43MzUgMTkyLjgzNiA1MTUuNzc3IDE4NCA0NzIgMTg0SDE4Ni4zMjdjLTQuOTUyLTYuNTU1LTEwLjU4NS0xMS45NzgtMTYuNzItMTZIMzc2QzIyOS4xNTcgMTM3Ljc0NyAyMTkuNDAzIDMyIDk2LjAwMyAzMkg5NnYxMjhIODBWMzJjLTI2LjUxIDAtNDggMjguNjU0LTQ4IDY0djY0Yy0yMy4xOTcgMC0zMiAxMC4wMzItMzIgMjR2NDBjMCAxMy45ODMgOC44MTkgMjQgMzIgMjR2MTZjLTIzLjE5NyAwLTMyIDEwLjAzMi0zMiAyNHY0MGMwIDEzLjk4MyA4LjgxOSAyNCAzMiAyNHY2NGMwIDM1LjM0NiAyMS40OSA2NCA0OCA2NFYzNTJoMTZ2MTI4aC4wMDNjMTIzLjQgMCAxMzMuMTU0LTEwNS43NDcgMjc5Ljk5Ny0xMzZIMTY5LjYwNmM2LjEzNS00LjAyMiAxMS43NjgtOS40NDUgMTYuNzItMTZINDcyYzQzLjc3NyAwIDg3LjczNS04LjgzNiAxMjAuNjA0LTI0LjI0NEM2MjIuMjgyIDI4OS44NDUgNjQwIDI3MS45OTIgNjQwIDI1NnMtMTcuNzE4LTMzLjg0NS00Ny4zOTYtNDcuNzU2ek00ODggMjk2YTggOCAwIDAgMS04LTh2LTY0YTggOCAwIDAgMSA4LThjMzEuOTA5IDAgMzEuOTQyIDgwIDAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwZWxsQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDI1Nmg5MS4zNmM0My4yIDAgODItMzIuMiA4NC41MS03NS4zNGE3OS44MiA3OS44MiAwIDAgMC0yNS4yNi02My4wNyA3OS44MSA3OS44MSAwIDAgMCA5LjA2LTQ0LjkxQzQyNy45IDMwLjU3IDM4OS4zIDAgMzQ3IDBoLTc1YTE2IDE2IDAgMCAwLTE2IDE2djIyNGExNiAxNiAwIDAgMCAxNiAxNnptNDAtMjAwaDQwYTI0IDI0IDAgMCAxIDAgNDhoLTQwem0wIDk2aDU2YTI0IDI0IDAgMCAxIDAgNDhoLTU2ek0xNTUuMTIgMjIuMjVBMzIgMzIgMCAwIDAgMTI0LjY0IDBIOTkuMzZhMzIgMzIgMCAwIDAtMzAuNDggMjIuMjVMLjU5IDIzNS43M0ExNiAxNiAwIDAgMCAxNiAyNTZoMjQuOTNhMTYgMTYgMCAwIDAgMTUuNDItMTEuNzNMNjguMjkgMjA4aDg3LjQybDExLjk0IDM2LjI3QTE2IDE2IDAgMCAwIDE4My4wNyAyNTZIMjA4YTE2IDE2IDAgMCAwIDE1LjQyLTIwLjI3ek04OS4zNyAxNDRMMTEyIDc1LjNsMjIuNjMgNjguN3ptNDgyIDEzMi40OGwtNDUuMjEtNDUuM2ExNS44OCAxNS44OCAwIDAgMC0yMi41OSAwbC0xNTEuNSAxNTEuNS01NS40MS01NS41YTE1Ljg4IDE1Ljg4IDAgMCAwLTIyLjU5IDBsLTQ1LjMgNDUuM2ExNiAxNiAwIDAgMCAwIDIyLjU5bDExMiAxMTIuMjFhMTUuODkgMTUuODkgMCAwIDAgMjIuNiAwbDIwOC0yMDguMjFhMTYgMTYgMCAwIDAtLjAyLTIyLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGlkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjE3IDE2Ny4zNUwxNzcuMSAxNzZoNC42N2w1LjIyLTI2LjEyYy43Mi0zLjU4IDEuOC03LjU4IDMuMjEtMTEuNzlsLTIwLjI5LTQwLjU4IDIzLjgtNzEuMzljMi43OS04LjM4LTEuNzMtMTcuNDQtMTAuMTItMjAuMjRMMTY4LjQyLjgyYy04LjM4LTIuOC0xNy40NSAxLjczLTIwLjI0IDEwLjEybC0yNS44OSA3Ny42OGEzMi4wNCAzMi4wNCAwIDAgMCAxLjczIDI0LjQzbDI3LjE1IDU0LjN6bTQyMi4xNCAxODIuMDNsLTUyLjc1LTc5LjEyYTMyLjAwMiAzMi4wMDIgMCAwIDAtMjYuNjItMTQuMjVINDE2bDY4Ljk5LTI0LjM2YTMyLjAzIDMyLjAzIDAgMCAwIDE2LjUxLTEyLjYxbDUzLjYtODAuNDFjNC45LTcuMzUgMi45MS0xNy4yOS00LjQ0LTIyLjE5bC0xMy4zMS04Ljg4Yy03LjM1LTQuOS0xNy4yOS0yLjkxLTIyLjE5IDQuNDRsLTUwLjU2IDc1LjgzTDQwNC4xIDIwOEgzNjhsLTEwLjM3LTUxLjg1QzM1NS40NCAxNDUuMTggMzQwLjI2IDk2IDI4OCA5NmMtNTIuMjYgMC02Ny40NCA0OS4xOC02OS42MyA2MC4xNUwyMDggMjA4aC0zNi4xbC02MC40OS0yMC4xN0w2MC44NCAxMTJjLTQuOS03LjM1LTE0LjgzLTkuMzQtMjIuMTktNC40NGwtMTMuMzEgOC44OGMtNy4zNSA0LjktOS4zNCAxNC44My00LjQ0IDIyLjE5bDUzLjYgODAuNDFhMzIuMDMgMzIuMDMgMCAwIDAgMTYuNTEgMTIuNjFMMTYwIDI1Nkg4Mi4wNmEzMi4wMiAzMi4wMiAwIDAgMC0yNi42MyAxNC4yNUwyLjY5IDM0OS4zOGMtNC45IDcuMzUtMi45MiAxNy4yOSA0LjQ0IDIyLjE5bDEzLjMxIDguODhjNy4zNSA0LjkgMTcuMjkgMi45MSAyMi4xOS00LjQ0bDQ4LTcyaDQ3LjA2bC02MC44MyA5Ny4zM0EzMS45ODggMzEuOTg4IDAgMCAwIDcyIDQxOC4zVjQ5NmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNzMuMTFsNzQuMDgtMTE4LjUzYy0xLjAxIDE0LjA1LTIuMDggMjguMTEtMi4wOCA0Mi4yMUMxOTIgMzk5LjY0IDIzMi43NiA0NDggMjg4IDQ0OHM5Ni00OC4zNiA5Ni0xMDEuNDNjMC0xNC4xLTEuMDgtMjguMTYtMi4wOC00Mi4yMUw0NTYgNDIyLjg5VjQ5NmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNzcuNzFjMC02LTEuNjktMTEuODgtNC44Ni0xNi45Nkw0MzguMzEgMzA0aDQ3LjA2bDQ4IDcyYzQuOSA3LjM1IDE0Ljg0IDkuMzQgMjIuMTkgNC40NGwxMy4zMS04Ljg4YzcuMzYtNC45IDkuMzQtMTQuODMgNC40NC0yMi4xOHpNNDA2LjA5IDk3LjUxbC0yMC4yOSA0MC41OGMxLjQxIDQuMjEgMi40OSA4LjIxIDMuMjEgMTEuNzlsNS4yMiAyNi4xMmg0LjY3bDI1LjkzLTguNjUgMjcuMTUtNTQuM2EzMS45OTUgMzEuOTk1IDAgMCAwIDEuNzMtMjQuNDNsLTI1Ljg5LTc3LjY4QzQyNS4wMyAyLjU2IDQxNS45Ni0xLjk4IDQwNy41OC44MmwtMTUuMTcgNS4wNmMtOC4zOCAyLjgtMTIuOTEgMTEuODYtMTAuMTIgMjAuMjRsMjMuOCA3MS4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Bpbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgNDhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDggMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDh6bS00OCAzNjhjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6bTIwOC0yMDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6TTk2IDI1NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4UzAgMjI5LjQ5IDAgMjU2czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4em0xMi45MjIgOTkuMDc4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4YzAtMjYuNTA5LTIxLjQ5MS00OC00OC00OHptMjk0LjE1NiAwYy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4YzAtMjYuNTA5LTIxLjQ5LTQ4LTQ4LTQ4ek0xMDguOTIyIDYwLjkyMmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OTEtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwbG90Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcyLjI5IDE5NS44OWwtNjcuMDYtMjIuOTVjLTE5LjI4LTYuNi0zMy41NC0yMC45Mi0zOC4xNC0zOC4zTDM1MS4xIDc0LjE5Yy0xMS41OC00My43Ny03Ni41Ny01Ny4xMy0xMDkuOTgtMjIuNjJsLTQ2LjE0IDQ3LjY3Yy0xMy4yNiAxMy43MS0zMy41NCAyMC45My01NC4yIDE5LjMxbC03MS44OC01LjYyYy01Mi4wNS00LjA3LTg2LjkzIDQ0Ljg4LTU5LjAzIDgyLjgzbDM4LjU0IDUyLjQyYzExLjA4IDE1LjA3IDEyLjgyIDMzLjg2IDQuNjQgNTAuMjRMMjQuNjIgMzU1LjRjLTIwLjU5IDQxLjI1IDIyLjg0IDg0Ljg3IDczLjQ5IDczLjgxbDY5Ljk2LTE1LjI4YzIwLjExLTQuMzkgNDEuNDUgMCA1Ny4wNyAxMS43M2w1NC4zMiA0MC44M2MzOS4zMiAyOS41NiAxMDEuMDQgNy41NyAxMDQuNDUtMzcuMjJsNC43LTYxLjg2YzEuMzUtMTcuNzkgMTIuOC0zMy44NiAzMC42My00Mi45OWw2Mi0zMS43NGM0NC44OC0yMi45NiAzOS41OS04MC4xNy04Ljk1LTk2Ljc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcHJheUNhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZoMTI4VjMyem0yNTYgOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6bS0yNTYgMzJIOTZjLTUzLjAyIDAtOTYgNDIuOTgtOTYgOTZ2MjI0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMjU2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMjU2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6bS02NCAyNTZjLTQ0LjE4IDAtODAtMzUuODItODAtODBzMzUuODItODAgODAtODAgODAgMzUuODIgODAgODAtMzUuODIgODAtODAgODB6TTQ4MCA5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMycy0xNC4zMy0zMi0zMi0zMi0zMiAxNC4zMy0zMiAzMiAxNC4zMyAzMiAzMiAzMnptLTk2IDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem0tOTYtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6bTk2IDBjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6bTk2IDE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMiAzMi0xNC4zMyAzMi0zMi0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgNTEySDBWMGg1MTJ2NTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVSb290QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3MS4zMSAyNTEuMzFsLTIyLjYyLTIyLjYyYy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwTDQ4MCAyNzQuNzVsLTQ2LjA2LTQ2LjA2Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0yMi42MiAyMi42MmMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M0w0MzQuNzUgMzIwbC00Ni4wNiA0Ni4wNmMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MiAyMi42MmM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwTDQ4MCAzNjUuMjVsNDYuMDYgNDYuMDZjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42Mi0yMi42MmM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDUyNS4yNSAzMjBsNDYuMDYtNDYuMDZjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M3pNNTUyIDBIMzA3LjY1Yy0xNC41NCAwLTI3LjI2IDkuOC0zMC45NSAyMy44N2wtODQuNzkgMzIyLjgtNTguNDEtMTA2LjFBMzIuMDA4IDMyLjAwOCAwIDAgMCAxMDUuNDcgMjI0SDI0Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0djQ4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDMuNjJsODguODggMTYzLjczQzE2OC45OSA1MDMuNSAxODYuMyA1MTIgMjA0Ljk0IDUxMmMxNy4yNyAwIDQ0LjQ0LTkgNTQuMjgtNDEuNDhMMzU3LjAzIDk2SDU1MmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0VjI0YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA1MTJoNDQ4di02NEgzMnY2NHptMzg0LTI1NmgtNjYuNTZjLTE2LjI2IDAtMjkuNDQtMTMuMTgtMjkuNDQtMjkuNDR2LTkuNDZjMC0yNy4zNyA4Ljg4LTUzLjQxIDIxLjQ2LTc3LjcyIDkuMTEtMTcuNjEgMTIuOS0zOC4zOSA5LjA1LTYwLjQyLTYuNzctMzguNzgtMzguNDctNzAuNy03Ny4yNi03Ny40NUMyMTIuNjItOS4wNCAxNjAgMzcuMzMgMTYwIDk2YzAgMTQuMTYgMy4xMiAyNy41NCA4LjY5IDM5LjU4QzE4Mi4wMiAxNjQuNDMgMTkyIDE5NC43IDE5MiAyMjYuNDl2LjA3YzAgMTYuMjYtMTMuMTggMjkuNDQtMjkuNDQgMjkuNDRIOTZjLTUzLjAyIDAtOTYgNDIuOTgtOTYgOTZ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC01My4wMi00Mi45OC05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckFuZENyZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MC40NyA0NjYuMzZjLTEuNDUgMC02Ljg5LjQ2LTkuMTguNDYtMTE2LjI1IDAtMjEwLjgyLTk0LjU3LTIxMC44Mi0yMTAuODJTMjE1LjA0IDQ1LjE4IDMzMS4yOSA0NS4xOGMyLjMyIDAgNy43LjQ2IDkuMTguNDYgNy4xMyAwIDEzLjMzLTUuMDMgMTQuNzUtMTIuMDcgMS40Ni03LjI1LTIuNTUtMTQuNDktOS40Ny0xNy4wOUMzMTYuNTggNS41NCAyODYuMzkgMCAyNTYgMCAxMTQuODQgMCAwIDExNC44NCAwIDI1NnMxMTQuODQgMjU2IDI1NiAyNTZjMzAuMjMgMCA2MC4yOC01LjQ5IDg5LjMyLTE2LjMyIDUuOTYtMi4wMiAxMC4yOC03LjY0IDEwLjI4LTE0LjI2IDAtOC4wOS02LjM5LTE1LjA2LTE1LjEzLTE1LjA2em0xNjIuOTktMjUyLjVsLTc2LjM4LTExLjEtMzQuMTYtNjkuMjFjLTEuODMtMy43LTUuMzgtNS41NS04LjkzLTUuNTVzLTcuMSAxLjg1LTguOTMgNS41NWwtMzQuMTYgNjkuMjEtNzYuMzggMTEuMWMtOC4xNyAxLjE4LTExLjQzIDExLjIyLTUuNTIgMTYuOTlsNTUuMjcgNTMuODctMTMuMDUgNzYuMDdjLTEuMTEgNi40NCA0LjAxIDExLjY2IDkuODEgMTEuNjYgMS41MyAwIDMuMTEtLjM2IDQuNjQtMS4xN0wzODQgMzM1LjM3bDY4LjMxIDM1LjkxYzEuNTMuOCAzLjExIDEuMTcgNC42NCAxLjE3IDUuOCAwIDEwLjkyLTUuMjMgOS44MS0xMS42NmwtMTMuMDUtNzYuMDcgNTUuMjctNTMuODdjNS45MS01Ljc3IDIuNjUtMTUuODEtNS41Mi0xNi45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckhhbGZBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUzNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA4LjU1IDE3MS41MUwzNjIuMTggMTUwLjIgMjk2Ljc3IDE3LjgxQzI5MC44OSA1Ljk4IDI3OS40MiAwIDI2Ny45NSAwYy0xMS40IDAtMjIuNzkgNS45LTI4LjY5IDE3LjgxbC02NS40MyAxMzIuMzgtMTQ2LjM4IDIxLjI5Yy0yNi4yNSAzLjgtMzYuNzcgMzYuMDktMTcuNzQgNTQuNTlsMTA1Ljg5IDEwMy0yNS4wNiAxNDUuNDhDODYuOTggNDk1LjMzIDEwMy41NyA1MTIgMTIyLjE1IDUxMmM0LjkzIDAgMTAtMS4xNyAxNC44Ny0zLjc1bDEzMC45NS02OC42OCAxMzAuOTQgNjguN2M0Ljg2IDIuNTUgOS45MiAzLjcxIDE0LjgzIDMuNzEgMTguNiAwIDM1LjIyLTE2LjYxIDMxLjY2LTM3LjRsLTI1LjAzLTE0NS40OSAxMDUuOTEtMTAyLjk4YzE5LjA0LTE4LjUgOC41Mi01MC44LTE3LjczLTU0LjZ6bS0xMjEuNzQgMTIzLjJsLTE4LjEyIDE3LjYyIDQuMjggMjQuODggMTkuNTIgMTEzLjQ1LTEwMi4xMy01My41OS0yMi4zOC0xMS43NC4wMy0zMTcuMTkgNTEuMDMgMTAzLjI5IDExLjE4IDIyLjYzIDI1LjAxIDMuNjQgMTE0LjIzIDE2LjYzLTgyLjY1IDgwLjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMtMTEuNCAwLTIyLjggNS45LTI4LjcgMTcuOEwxOTQgMTUwLjIgNDcuOSAxNzEuNGMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4xIDIzIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Rhck9mRGF2aWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ2NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA1LjY4IDI1Nmw1My4yMS04OS4zOUM0NzMuMyAxNDIuNCA0NTUuNDggMTEyIDQyNi44OCAxMTJIMzE5Ljk2bC01NS45NS05My45OEMyNTYuODYgNi4wMSAyNDQuNDMgMCAyMzIgMHMtMjQuODYgNi4wMS0zMi4wMSAxOC4wMkwxNDQuMDQgMTEySDM3LjExYy0yOC42IDAtNDYuNDIgMzAuNC0zMi4wMSA1NC42MUw1OC4zMiAyNTYgNS4xIDM0NS4zOUMtOS4zMSAzNjkuNiA4LjUxIDQwMCAzNy4xMSA0MDBoMTA2LjkzbDU1Ljk1IDkzLjk4QzIwNy4xNCA1MDUuOTkgMjE5LjU3IDUxMiAyMzIgNTEyczI0Ljg2LTYuMDEgMzIuMDEtMTguMDJMMzE5Ljk2IDQwMGgxMDYuOTNjMjguNiAwIDQ2LjQyLTMwLjQgMzIuMDEtNTQuNjFMNDA1LjY4IDI1NnptLTEyLjc4LTg4bC0xOS44IDMzLjI2TDM1My4zIDE2OGgzOS42em0tNTIuMzkgODhsLTUyLjM5IDg4SDE3NS44OGwtNTIuMzktODggNTIuMzgtODhoMTEyLjI1bDUyLjM5IDg4ek0yMzIgNzMuNzJMMjU0Ljc5IDExMmgtNDUuNTdMMjMyIDczLjcyek03MS4xIDE2OGgzOS42bC0xOS44IDMzLjI2TDcxLjEgMTY4em0wIDE3NmwxOS44LTMzLjI2TDExMC43IDM0NEg3MS4xek0yMzIgNDM4LjI4TDIwOS4yMSA0MDBoNDUuNTdMMjMyIDQzOC4yOHpNMzUzLjI5IDM0NGwxOS44LTMzLjI2TDM5Mi45IDM0NGgtMzkuNjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJPZkxpZmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcxLjk5IDMzNC40M0wzMzYuMDYgMjU2bDEzNS45My03OC40M2M3LjY2LTQuNDIgMTAuMjgtMTQuMiA1Ljg2LTIxLjg2bC0zMi4wMi01NS40M2MtNC40Mi03LjY1LTE0LjIxLTEwLjI4LTIxLjg3LTUuODZsLTEzNS45MyA3OC40M1YxNmMwLTguODQtNy4xNy0xNi0xNi4wMS0xNmgtNjQuMDRjLTguODQgMC0xNi4wMSA3LjE2LTE2LjAxIDE2djE1Ni44Nkw1Ni4wNCA5NC40M2MtNy42Ni00LjQyLTE3LjQ1LTEuNzktMjEuODcgNS44NkwyLjE1IDE1NS43MWMtNC40MiA3LjY1LTEuOCAxNy40NCA1Ljg2IDIxLjg2TDE0My45NCAyNTYgOC4wMSAzMzQuNDNjLTcuNjYgNC40Mi0xMC4yOCAxNC4yMS01Ljg2IDIxLjg2bDMyLjAyIDU1LjQzYzQuNDIgNy42NSAxNC4yMSAxMC4yNyAyMS44NyA1Ljg2bDEzNS45My03OC40M1Y0OTZjMCA4Ljg0IDcuMTcgMTYgMTYuMDEgMTZoNjQuMDRjOC44NCAwIDE2LjAxLTcuMTYgMTYuMDEtMTZWMzM5LjE0bDEzNS45MyA3OC40M2M3LjY2IDQuNDIgMTcuNDUgMS44IDIxLjg3LTUuODZsMzIuMDItNTUuNDNjNC40Mi03LjY1IDEuOC0xNy40My01Ljg2LTIxLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1OS4zIDE3LjhMMTk0IDE1MC4yIDQ3LjkgMTcxLjVjLTI2LjIgMy44LTM2LjcgMzYuMS0xNy43IDU0LjZsMTA1LjcgMTAzLTI1IDE0NS41Yy00LjUgMjYuMyAyMy4yIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZsMTMwLjcgNjguN2MyMy4yIDEyLjIgNTAuOS03LjQgNDYuNC0zMy43bC0yNS0xNDUuNSAxMDUuNy0xMDNjMTktMTguNSA4LjUtNTAuOC0xNy43LTU0LjZMMzgyIDE1MC4yIDMxNi43IDE3LjhjLTExLjctMjMuNi00NS42LTIzLjktNTcuNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVwQmFja3dhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY4VjQ0YzAtNi42IDUuNC0xMiAxMi0xMmg0OGM2LjYgMCAxMiA1LjQgMTIgMTJ2MTc2LjRsMTk1LjUtMTgxQzM1Mi4xIDIyLjMgMzg0IDM2LjYgMzg0IDY0djM4NGMwIDI3LjQtMzEuOSA0MS43LTUyLjUgMjQuNkwxMzYgMjkyLjdWNDY4YzAgNi42LTUuNCAxMi0xMiAxMkg3NmMtNi42IDAtMTItNS40LTEyLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVwRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgNDR2NDI0YzAgNi42LTUuNCAxMi0xMiAxMmgtNDhjLTYuNiAwLTEyLTUuNC0xMi0xMlYyOTEuNmwtMTk1LjUgMTgxQzk1LjkgNDg5LjcgNjQgNDc1LjQgNjQgNDQ4VjY0YzAtMjcuNCAzMS45LTQxLjcgNTIuNS0yNC42TDMxMiAyMTkuM1Y0NGMwLTYuNiA1LjQtMTIgMTItMTJoNDhjNi42IDAgMTIgNS40IDEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGV0aG9zY29wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDcuMSAxMTJjLTM0LjIuNS02Mi4zIDI4LjQtNjMgNjIuNi0uNSAyNC4zIDEyLjUgNDUuNiAzMiA1Ni44VjM0NGMwIDU3LjMtNTAuMiAxMDQtMTEyIDEwNC02MCAwLTEwOS4yLTQ0LjEtMTExLjktOTkuMkMyNjUgMzMzLjggMzIwIDI2OS4yIDMyMCAxOTJWMzYuNmMwLTExLjQtOC4xLTIxLjMtMTkuMy0yMy41TDIzNy44LjVjLTEzLTIuNi0yNS42IDUuOC0yOC4yIDE4LjhMMjA2LjQgMzVjLTIuNiAxMyA1LjggMjUuNiAxOC44IDI4LjJsMzAuNyA2LjF2MTIxLjRjMCA1Mi45LTQyLjIgOTYuNy05NS4xIDk3LjItNTMuNC41LTk2LjktNDIuNy05Ni45LTk2VjY5LjRsMzAuNy02LjFjMTMtMi42IDIxLjQtMTUuMiAxOC44LTI4LjJsLTMuMS0xNS43QzEwNy43IDYuNCA5NS4xLTIgODIuMS42TDE5LjMgMTNDOC4xIDE1LjMgMCAyNS4xIDAgMzYuNlYxOTJjMCA3Ny4zIDU1LjEgMTQyIDEyOC4xIDE1Ni44QzEzMC43IDQzOS4yIDIwOC42IDUxMiAzMDQgNTEyYzk3IDAgMTc2LTc1LjQgMTc2LTE2OFYyMzEuNGMxOS4xLTExLjEgMzItMzEuNyAzMi01NS40IDAtMzUuNy0yOS4yLTY0LjUtNjQuOS02NHptLjkgODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RpY2t5Tm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTIgMzIwaDEzNlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyNEMxMC43IDMyIDAgNDIuNyAwIDU2djQwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgyNjRWMzQ0YzAtMTMuMiAxMC44LTI0IDI0LTI0em0xMjkgNTVsLTk4IDk4Yy00LjUgNC41LTEwLjYgNy0xNyA3aC02VjM1MmgxMjh2Ni4xYzAgNi4zLTIuNSAxMi40LTcgMTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em05NiAzMjhjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoMTYwYzguOCAwIDE2IDcuMiAxNiAxNnYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcHdhdGNoMjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk4LjUsMTkwLjkxbC41OS0uNjEsMjYuNTktMjYuNThhMTYsMTYsMCwwLDAsMC0yMi42M0w0MDMsMTE4LjQxYTE2LDE2LDAsMCwwLTIyLjYzLDBsLTI0LjY4LDI0LjY4QTIwNi42OCwyMDYuNjgsMCwwLDAsMjU2LDk4LjVWNjRoMzJhMTYsMTYsMCwwLDAsMTYtMTZWMTZBMTYsMTYsMCwwLDAsMjg4LDBIMTYwYTE2LjA1LDE2LjA1LDAsMCwwLTE2LDE2VjQ4YTE2LjA1LDE2LjA1LDAsMCwwLDE2LDE2aDMyVjk4LjVBMjA3LjkyLDIwNy45MiwwLDAsMCwxNi4wOSwyOTcuNTdDMTIuNjQsNDExLjUsMTA2Ljc2LDUxMC4yMiwyMjAuNzIsNTEyLDMzNy4xMyw1MTMuNzcsNDMyLDQyMCw0MzIsMzA0QTIwNiwyMDYsMCwwLDAsMzk4LjUsMTkwLjkxWk0yMDQuMzcsMzc3LjU1YTguMiw4LjIsMCwwLDEsOC4zMiw4LjA3djIyLjMxYTguMiw4LjIsMCwwLDEtOC4zMiw4LjA3SDEyMS41MmExNi40NiwxNi40NiwwLDAsMS0xNi42MS0xNy42MmMyLjc4LTM1LjIyLDE0LjY3LTU3LjQxLDM4LjQ1LTkxLjM3LDIwLjQyLTI5LjE5LDI3LjEtMzcuMzIsMjcuMS02Mi4zNCwwLTE2LjkyLTEuNzktMjQuMjctMTIuMjEtMjQuMjctOS4zOSwwLTEyLjY5LDcuNC0xMi42OSwyMi42OHY1LjIzYTguMiw4LjIsMCwwLDEtOC4zMyw4LjA3aC0yNC45YTguMiw4LjIsMCwwLDEtOC4zMy04LjA3di00LjA3YzAtMjcuMyw4LjQ4LTYwLjI0LDU2LjQzLTYwLjI0LDQzLDAsNTUuNTcsMjUuODUsNTUuNTcsNjEsMCwzNS41OC0xMi40NCw1MS4yMS0zNC4zNSw4MS4zMS0xMS41NiwxNS0yNC42MSwzNS41Ny0yNi40MSw1MS4yWk0zNDQsMzUyLjMyYzAsMzUuMTYtMTIuMyw2My42OC01Ny4yMyw2My42OEMyNDMuMTksNDE2LDIzMiwzODYuNDgsMjMyLDM1Mi41NVYyNDcuMjJjMC00MC43MywxOS41OC02My4yMiw1Ni4yLTYzLjIyQzMyNSwxODQsMzQ0LDIwNi42NCwzNDQsMjQ1LjNaTTI4Ny44NywyMjEuNzNjLTkuNDEsMC0xMy4yMyw3LjUtMTMuMjMsMjBWMzU3LjY4YzAsMTMuMTEsMy41OSwyMC41OSwxMy4yMywyMC41OXMxMy04LDEzLTIxLjI3VjI0MS4wNkMzMDAuODksMjI5Ljc5LDI5Ny44OCwyMjEuNzMsMjg3Ljg3LDIyMS43M1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcHdhdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiAzMDRjMCAxMTQuOS05My4xIDIwOC0yMDggMjA4UzE2IDQxOC45IDE2IDMwNGMwLTEwNCA3Ni4zLTE5MC4yIDE3Ni0yMDUuNVY2NGgtMjhjLTYuNiAwLTEyLTUuNC0xMi0xMlYxMmMwLTYuNiA1LjQtMTIgMTItMTJoMTIwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTI4djM0LjVjMzcuNSA1LjggNzEuNyAyMS42IDk5LjcgNDQuNmwyNy41LTI3LjVjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDI4LjMgMjguM2M0LjcgNC43IDQuNyAxMi4zIDAgMTdsLTI5LjQgMjkuNC0uNi42QzQxOS43IDIyMy4zIDQzMiAyNjIuMiA0MzIgMzA0em0tMTc2IDM2VjE4OC41YzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMlYzNDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcmVBbHRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44OSwxMjMuNjIsNS41MSwxNDIuMmMtMTQuMiwyMS4zLDEsNDkuOCwyNi41OSw0OS44aDc0LjI2Wk01NzYsNDEzLjQyVjIyNEg1MTJWMzY0TDM4NCwyNjVWMjI0SDMzMC45MmwtNDEuNC0zMkg2MDhjMjUuNSwwLDQwLjctMjguNSwyNi41OS00OS44bC04NS4yOS0xMjhBMzIuMTgsMzIuMTgsMCwwLDAsNTIyLjYsMEgxMTcuNDJBMzEuODcsMzEuODcsMCwwLDAsOTAuODEsMTQuMmwtMTAuNjYsMTZMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDZBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTMsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZhMTYsMTYsMCwwLDAtMi44MS0yMi40NVpNMzIwLDM4NEgxMjhWMjI0SDY0VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkgzNTJhMzIsMzIsMCwwLDAsMzItMzJWNDA2LjU5bC02NC00OS40N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDM4NEgxMjhWMjI0SDY0djI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0aC02NHYxNjB6bTMxNC42LTI0MS44bC04NS4zLTEyOGMtNi04LjktMTYtMTQuMi0yNi43LTE0LjJIMTE3LjRjLTEwLjcgMC0yMC43IDUuMy0yNi42IDE0LjJsLTg1LjMgMTI4Yy0xNC4yIDIxLjMgMSA0OS44IDI2LjYgNDkuOEg2MDhjMjUuNSAwIDQwLjctMjguNSAyNi42LTQ5Ljh6TTUxMiA0OTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMjRoLTY0djI3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcmVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjEuNTEsMzg0VjI4NC4yYTExOS40MywxMTkuNDMsMCwwLDEtMjgsMy44LDEyMy40NiwxMjMuNDYsMCwwLDEtMTcuMS0xLjIsMTE0Ljg4LDExNC44OCwwLDAsMS0xNS41OC0zLjZWNDgwYzAsMTcuNywxMy41OSwzMiwzMC40LDMySDUwNS43NUwzNDguNDIsMzg0Wm0tMjgtMTI4LjA5YzI1LjEsMCw0Ny4yOS0xMC43Miw2NC0yNy4yNEwyNCwxMjAuMDVjLTMwLjUyLDUzLjM5LTIuNDUsMTI2LjUzLDU2LjQ5LDEzNUE5NS42OCw5NS42OCwwLDAsMCw5My40OCwyNTUuOTFaTTYwMi4xMyw0NTguMDksNTQ3LjIsNDEzLjQxVjI4My4yYTkzLjUsOTMuNSwwLDAsMS0xNS41NywzLjYsMTI3LjMxLDEyNy4zMSwwLDAsMS0xNy4yOSwxLjIsMTE0Ljg5LDExNC44OSwwLDAsMS0yOC0zLjh2NzkuNjhMMzQ4LjUyLDI1MS43N2E4OC4wNiw4OC4wNiwwLDAsMCwyNS40MSw0LjE0YzI4LjExLDAsNTMtMTMsNzAuMTEtMzMuMTEsMTcuMTksMjAuMTEsNDIuMDgsMzMuMTEsNzAuMTEsMzMuMTFhOTQuMzEsOTQuMzEsMCwwLDAsMTMtLjkxYzU5LjY2LTguNDEsODgtODIuOCw1Ni4wNi0xMzYuNEw1MjEuNTUsMTVBMzAuMSwzMC4xLDAsMCwwLDQ5NS44MSwwSDExMkEzMC4xMSwzMC4xMSwwLDAsMCw4Ni4yNywxNUw3Ni44OCwzMC43OCw0My4xOSwzLjM4QTE0LjY4LDE0LjY4LDAsMCwwLDIxLjg2LDYuMTlMMy4yLDMxLjQ1QTE2LjU4LDE2LjU4LDAsMCwwLDUuODcsNTMuOTFMNTY0LjgxLDUwOC42M2ExNC42OSwxNC42OSwwLDAsMCwyMS4zMy0yLjgybDE4LjY2LTI1LjI2QTE2LjU4LDE2LjU4LDAsMCwwLDYwMi4xMyw0NTguMDlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2MTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwMiAxMTguNkw1MzcuMSAxNUM1MzEuMyA1LjcgNTIxIDAgNTEwIDBIMTA2Qzk1IDAgODQuNyA1LjcgNzguOSAxNUwxNCAxMTguNmMtMzMuNSA1My41LTMuOCAxMjcuOSA1OC44IDEzNi40IDQuNS42IDkuMS45IDEzLjcuOSAyOS42IDAgNTUuOC0xMyA3My44LTMzLjEgMTggMjAuMSA0NC4zIDMzLjEgNzMuOCAzMy4xIDI5LjYgMCA1NS44LTEzIDczLjgtMzMuMSAxOCAyMC4xIDQ0LjMgMzMuMSA3My44IDMzLjEgMjkuNiAwIDU1LjgtMTMgNzMuOC0zMy4xIDE4LjEgMjAuMSA0NC4zIDMzLjEgNzMuOCAzMy4xIDQuNyAwIDkuMi0uMyAxMy43LS45IDYyLjgtOC40IDkyLjYtODIuOCA1OS0xMzYuNHpNNTI5LjUgMjg4Yy0xMCAwLTE5LjktMS41LTI5LjUtMy44VjM4NEgxMTZ2LTk5LjhjLTkuNiAyLjItMTkuNSAzLjgtMjkuNSAzLjgtNiAwLTEyLjEtLjQtMTgtMS4yLTUuNi0uOC0xMS4xLTIuMS0xNi40LTMuNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI4My4yYy01LjQgMS42LTEwLjggMi45LTE2LjQgMy42LTYuMS44LTEyLjEgMS4yLTE4LjIgMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTI4aDQxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlY0OGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDMyIDAgMzkuMTYgMCA0OHY2NGMwIDguODQgNy4xNiAxNiAxNiAxNnptNDgwIDgwSDgwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em0tNjQgMTc2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJlZXRWaWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2Ny45IDMyOS43NmMtNC42MiA1LjMtOS43OCAxMC4xLTE1LjkgMTMuNjV2MjIuOTRjNjYuNTIgOS4zNCAxMTIgMjguMDUgMTEyIDQ5LjY1IDAgMzAuOTMtOTMuMTIgNTYtMjA4IDU2UzQ4IDQ0Ni45MyA0OCA0MTZjMC0yMS42IDQ1LjQ4LTQwLjMgMTEyLTQ5LjY1di0yMi45NGMtNi4xMi0zLjU1LTExLjI4LTguMzUtMTUuOS0xMy42NUM1OC44NyAzNDUuMzQgMCAzNzguMDUgMCA0MTZjMCA1My4wMiAxMTQuNjIgOTYgMjU2IDk2czI1Ni00Mi45OCAyNTYtOTZjMC0zNy45NS01OC44Ny03MC42Ni0xNDQuMS04Ni4yNHpNMjU2IDEyOGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0UzI5MS4zNSAwIDI1NiAwcy02NCAyOC42NS02NCA2NCAyOC42NSA2NCA2NCA2NHptLTY0IDE5MnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTExLjhjLTExLjA3IDUuMDMtMjMuMjYgOC0zNi4yIDhzLTI1LjEzLTIuOTctMzYuMi04SDIwOGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJpa2V0aHJvdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyMjRIMjkzLjlsLTg3LjE3LTI2LjgzQTQzLjU1IDQzLjU1IDAgMCAxIDIxOS41NSAxMTJoNjYuNzlBNDkuODkgNDkuODkgMCAwIDEgMzMxIDEzOS41OGExNiAxNiAwIDAgMCAyMS40NiA3LjE1bDQyLjk0LTIxLjQ3YTE2IDE2IDAgMCAwIDcuMTYtMjEuNDZsLS41My0xQTEyOCAxMjggMCAwIDAgMjg3LjUxIDMyaC02OGExMjMuNjggMTIzLjY4IDAgMCAwLTEyMyAxMzUuNjRjMiAyMC44OSAxMC4xIDM5LjgzIDIxLjc4IDU2LjM2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQ4MGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0xODAuMjQgOTZBNDMgNDMgMCAwIDEgMzM2IDM1Ni40NSA0My41OSA0My41OSAwIDAgMSAyOTIuNDUgNDAwaC02Ni43OUE0OS44OSA0OS44OSAwIDAgMSAxODEgMzcyLjQyYTE2IDE2IDAgMCAwLTIxLjQ2LTcuMTVsLTQyLjk0IDIxLjQ3YTE2IDE2IDAgMCAwLTcuMTYgMjEuNDZsLjUzIDFBMTI4IDEyOCAwIDAgMCAyMjQuNDkgNDgwaDY4YTEyMy42OCAxMjMuNjggMCAwIDAgMTIzLTEzNS42NCAxMTQuMjUgMTE0LjI1IDAgMCAwLTUuMzQtMjQuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cm9vcHdhZmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4OC4xMiAyMTAuNzRMMTQyLjg2IDI1Nmw0NS4yNSA0NS4yNUwyMzMuMzcgMjU2bC00NS4yNS00NS4yNnptMTEzLjEzLTIyLjYyTDI1NiAxNDIuODZsLTQ1LjI1IDQ1LjI1TDI1NiAyMzMuMzdsNDUuMjUtNDUuMjV6bS05MC41IDEzNS43NkwyNTYgMzY5LjE0bDQ1LjI2LTQ1LjI2TDI1NiAyNzguNjNsLTQ1LjI1IDQ1LjI1ek0yNTYgMEMxMTQuNjIgMCAwIDExNC42MiAwIDI1NnMxMTQuNjIgMjU2IDI1NiAyNTYgMjU2LTExNC42MiAyNTYtMjU2UzM5Ny4zOCAwIDI1NiAwem0xODYuNjggMjk1LjZsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTI4LjI5LTI4LjI5LTQ1LjI1IDQ1LjI1IDMzLjk0IDMzLjk0IDE2Ljk3LTE2Ljk3YzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxMS4zMSAxMS4zMWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTE2Ljk3IDE2Ljk3IDE2Ljk3IDE2Ljk3YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTEuMzEgMTEuMzFjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTYuOTctMTYuOTctMTYuOTcgMTYuOTdjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTEuMzEtMTEuMzFjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxNi45Ny0xNi45Ny0zMy45NC0zMy45NC00NS4yNiA0NS4yNiAyOC4yOSAyOC4yOWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBMMjU2IDQxNC4zOWwtMjguMjkgMjguMjljLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTEuMzEtMTEuMzFjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwyOC4yOS0yOC4yOS00NS4yNS00NS4yNi0zMy45NCAzMy45NCAxNi45NyAxNi45N2MzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTE2Ljk3LTE2Ljk3LTE2Ljk3IDE2Ljk3Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTYuOTctMTYuOTctMTYuOTctMTYuOTdjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTYuOTcgMTYuOTcgMzMuOTQtMzMuOTQtNDUuMjUtNDUuMjUtMjguMjkgMjguMjljLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMEw2OS4zMiAyOTUuNmMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxTDk3LjYxIDI1NmwtMjguMjktMjguMjljLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMjguMjkgMjguMjkgNDUuMjUtNDUuMjYtMzMuOTQtMzMuOTQtMTYuOTcgMTYuOTdjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTEuMzEtMTEuMzFjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxNi45Ny0xNi45Ny0xNi45Ny0xNi45N2MtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDExLjMxLTExLjMxYzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxNi45NyAxNi45NyAxNi45Ny0xNi45N2MzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTEuMzEgMTEuMzFjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xNi45NyAxNi45NyAzMy45NCAzMy45NCA0NS4yNi00NS4yNS0yOC4yOS0yOC4yOWMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDExLjMxLTExLjMxYzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMEwyNTYgOTcuNjFsMjguMjktMjguMjljMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMjguMjkgMjguMjkgNDUuMjYgNDUuMjUgMzMuOTQtMzMuOTQtMTYuOTctMTYuOTdjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTYuOTcgMTYuOTcgMTYuOTctMTYuOTdjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTYuOTcgMTYuOTcgMTYuOTcgMTYuOTdjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xNi45Ny0xNi45Ny0zMy45NCAzMy45NCA0NS4yNSA0NS4yNiAyOC4yOS0yOC4yOWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTEuMzEgMTEuMzFjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxTDQxNC4zOSAyNTZsMjguMjkgMjguMjhhOC4wMTUgOC4wMTUgMCAwIDEgMCAxMS4zMnpNMjc4LjYzIDI1Nmw0NS4yNiA0NS4yNUwzNjkuMTQgMjU2bC00NS4yNS00NS4yNkwyNzguNjMgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdWJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDQ0OGgtMTZWMzA0YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCA0MDAgMzUyaDE2djk2aC0xNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg5NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTMzNiA2NGgtNjdhMTYgMTYgMCAwIDAtMTMuMTQgNi44N2wtNzkuOSAxMTUtNzkuOS0xMTVBMTYgMTYgMCAwIDAgODMgNjRIMTZBMTYgMTYgMCAwIDAgMCA4MHY0OGExNiAxNiAwIDAgMCAxNiAxNmgzMy40OGw3Ny44MSAxMTItNzcuODEgMTEySDE2YTE2IDE2IDAgMCAwLTE2IDE2djQ4YTE2IDE2IDAgMCAwIDE2IDE2aDY3YTE2IDE2IDAgMCAwIDEzLjE0LTYuODdsNzkuOS0xMTUgNzkuOSAxMTVBMTYgMTYgMCAwIDAgMjY5IDQ0OGg2N2ExNiAxNiAwIDAgMCAxNi0xNnYtNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTMzLjQ4bC03Ny44MS0xMTIgNzcuODEtMTEySDMzNmExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Vid2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NnYyNTZjMCA1MS44MTUtNjEuNjI0IDk2LTEzMC4wMjIgOTZsNjIuOTggNDkuNzIxQzM4Ni45MDUgNTAyLjQxNyAzODMuNTYyIDUxMiAzNzYgNTEySDcyYy03LjU3OCAwLTEwLjg5Mi05LjU5NC00Ljk1Ny0xNC4yNzlMMTMwLjAyMiA0NDhDNjEuODIgNDQ4IDAgNDAzLjk1NCAwIDM1MlY5NkMwIDQyLjk4MSA2NCAwIDEyOCAwaDE5MmM2NSAwIDEyOCA0Mi45ODEgMTI4IDk2ek0yMDAgMjMyVjEyMGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINzJjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR6bTIwMCAwVjEyMGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjcyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0em0tNDggNTZjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6bS0yNTYgMGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VpdGNhc2VSb2xsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAxNjBINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2aDEyOHYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZoMTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyMDhjMC0yNi41MS0yMS40OS00OC00OC00OHptLTE2IDIxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDI0MGM0LjQyIDAgOCAzLjU4IDggOHYxNnptMC05NmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDI0MGM0LjQyIDAgOCAzLjU4IDggOHYxNnpNMTQ0IDQ4aDk2djgwaDQ4VjQ4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djgwaDQ4VjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdWl0Y2FzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNDgwaDI1NlY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djQwMHptNjQtMzg0aDEyOHYzMkgxOTJWOTZ6bTMyMCA4MHYyNTZjMCAyNi41LTIxLjUgNDgtNDggNDhoLTQ4VjEyOGg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHpNOTYgNDgwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDhoNDh2MzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDE2MGMtNTIuOSAwLTk2IDQzLjEtOTYgOTZzNDMuMSA5NiA5NiA5NiA5Ni00My4xIDk2LTk2LTQzLjEtOTYtOTYtOTZ6bTI0Ni40IDgwLjVsLTk0LjctNDcuMyAzMy41LTEwMC40YzQuNS0xMy42LTguNC0yNi41LTIxLjktMjEuOWwtMTAwLjQgMzMuNS00Ny40LTk0LjhjLTYuNC0xMi44LTI0LjYtMTIuOC0zMSAwbC00Ny4zIDk0LjdMOTIuNyA3MC44Yy0xMy42LTQuNS0yNi41IDguNC0yMS45IDIxLjlsMzMuNSAxMDAuNC05NC43IDQ3LjRjLTEyLjggNi40LTEyLjggMjQuNiAwIDMxbDk0LjcgNDcuMy0zMy41IDEwMC41Yy00LjUgMTMuNiA4LjQgMjYuNSAyMS45IDIxLjlsMTAwLjQtMzMuNSA0Ny4zIDk0LjdjNi40IDEyLjggMjQuNiAxMi44IDMxIDBsNDcuMy05NC43IDEwMC40IDMzLjVjMTMuNiA0LjUgMjYuNS04LjQgMjEuOS0yMS45bC0zMy41LTEwMC40IDk0LjctNDcuM2MxMy02LjUgMTMtMjQuNy4yLTMxLjF6bS0xNTUuOSAxMDZjLTQ5LjkgNDkuOS0xMzEuMSA0OS45LTE4MSAwLTQ5LjktNDkuOS00OS45LTEzMS4xIDAtMTgxIDQ5LjktNDkuOSAxMzEuMS00OS45IDE4MSAwIDQ5LjkgNDkuOSA0OS45IDEzMS4xIDAgMTgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdXBlcnNjcmlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMTYwaC0xNlYxNmExNiAxNiAwIDAgMC0xNi0xNmgtNDhhMTYgMTYgMCAwIDAtMTQuMjkgOC44M2wtMTYgMzJBMTYgMTYgMCAwIDAgNDAwIDY0aDE2djk2aC0xNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg5NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTMzNiA2NGgtNjdhMTYgMTYgMCAwIDAtMTMuMTQgNi44N2wtNzkuOSAxMTUtNzkuOS0xMTVBMTYgMTYgMCAwIDAgODMgNjRIMTZBMTYgMTYgMCAwIDAgMCA4MHY0OGExNiAxNiAwIDAgMCAxNiAxNmgzMy40OGw3Ny44MSAxMTItNzcuODEgMTEySDE2YTE2IDE2IDAgMCAwLTE2IDE2djQ4YTE2IDE2IDAgMCAwIDE2IDE2aDY3YTE2IDE2IDAgMCAwIDEzLjE0LTYuODdsNzkuOS0xMTUgNzkuOSAxMTVBMTYgMTYgMCAwIDAgMjY5IDQ0OGg2N2ExNiAxNiAwIDAgMCAxNi0xNnYtNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTMzLjQ4bC03Ny44MS0xMTIgNzcuODEtMTEySDMzNmExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VycHJpc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNMTM2IDIwOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptMTEyIDIwOGMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NCA2NCAyOC43IDY0IDY0LTI4LjcgNjQtNjQgNjR6bTgwLTE3NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN3YXRjaGJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM0LjY2LDE2Ny43MWgwTDM0NC41LDc3LjM2YTMxLjgzLDMxLjgzLDAsMCwwLTQ1LS4wN2gwbC0uMDcuMDdMMjI0LDE1Mi44OFY0MjRMNDM0LjY2LDIxMi45QTMyLDMyLDAsMCwwLDQzNC42NiwxNjcuNzFaTTQ4MCwzMjBIMzczLjA5TDE4Ni42OCw1MDYuNTFjLTIuMDYsMi4wNy00LjUsMy41OC02LjY4LDUuNDlINDgwYTMyLDMyLDAsMCwwLDMyLTMyVjM1MkEzMiwzMiwwLDAsMCw0ODAsMzIwWk0xOTIsMzJBMzIsMzIsMCwwLDAsMTYwLDBIMzJBMzIsMzIsMCwwLDAsMCwzMlY0MTZhOTYsOTYsMCwwLDAsMTkyLDBaTTk2LDQ0MGEyNCwyNCwwLDEsMSwyNC0yNEEyNCwyNCwwLDAsMSw5Niw0NDBabTMyLTE4NEg2NFYxOTJoNjRabTAtMTI4SDY0VjY0aDY0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTd2ltbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4OS42MSAzMTAuNThjMy41NCAzLjI2IDE1LjI3IDkuNDIgMzQuMzkgOS40MnMzMC44Ni02LjE2IDM0LjM5LTkuNDJjMTYuMDItMTQuNzcgMzQuNS0yMi41OCA1My40Ni0yMi41OGgxNi4zYzE4Ljk2IDAgMzcuNDUgNy44MSA1My40NiAyMi41OCAzLjU0IDMuMjYgMTUuMjcgOS40MiAzNC4zOSA5LjQyczMwLjg2LTYuMTYgMzQuMzktOS40MmMxNC44Ni0xMy43MSAzMS44OC0yMS4xMiA0OS4zOS0yMi4xNmwtMTEyLjg0LTgwLjYgMTgtMTIuODZjMy42NC0yLjU4IDguMjgtMy41MiAxMi42Mi0yLjYxbDEwMC4zNSAyMS41M2MyNS45MSA1LjUzIDUxLjQ0LTEwLjk3IDU3LTM2Ljg4IDUuNTUtMjUuOTItMTAuOTUtNTEuNDQtMzYuODgtNTdMNDM3LjY4IDk4LjQ3Yy0zMC43My02LjU4LTYzLjAyLjEyLTg4LjU2IDE4LjM4bC04MC4wMiA1Ny4xN2MtMTAuMzggNy4zOS0xOS4zNiAxNi40NC0yNi43MiAyNi45NEwxNzMuNzUgMjk5YzUuNDcgMy4yMyAxMC44MiA2LjkzIDE1Ljg2IDExLjU4ek02MjQgMzUyaC0xNmMtMjYuMDQgMC00NS44LTguNDItNTYuMDktMTcuOS04LjktOC4yMS0xOS42Ni0xNC4xLTMxLjc3LTE0LjFoLTE2LjNjLTEyLjExIDAtMjIuODcgNS44OS0zMS43NyAxNC4xQzQ2MS44IDM0My41OCA0NDIuMDQgMzUyIDQxNiAzNTJzLTQ1LjgtOC40Mi01Ni4wOS0xNy45Yy04LjktOC4yMS0xOS42Ni0xNC4xLTMxLjc3LTE0LjFoLTE2LjNjLTEyLjExIDAtMjIuODcgNS44OS0zMS43NyAxNC4xQzI2OS44IDM0My41OCAyNTAuMDQgMzUyIDIyNCAzNTJzLTQ1LjgtOC40Mi01Ni4wOS0xNy45Yy04LjktOC4yMS0xOS42Ni0xNC4xLTMxLjc3LTE0LjFoLTE2LjNjLTEyLjExIDAtMjIuODcgNS44OS0zMS43NyAxNC4xQzc3LjggMzQzLjU4IDU4LjA0IDM1MiAzMiAzNTJIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzM4LjYyIDAgNzIuNzItMTIuMTkgOTYtMzEuODQgMjMuMjggMTkuNjYgNTcuMzggMzEuODQgOTYgMzEuODRzNzIuNzItMTIuMTkgOTYtMzEuODRjMjMuMjggMTkuNjYgNTcuMzggMzEuODQgOTYgMzEuODRzNzIuNzItMTIuMTkgOTYtMzEuODRjMjMuMjggMTkuNjYgNTcuMzggMzEuODQgOTYgMzEuODRoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0tNTEyLTk2YzQ0LjE4IDAgODAtMzUuODIgODAtODBzLTM1LjgyLTgwLTgwLTgwLTgwIDM1LjgyLTgwIDgwIDM1LjgyIDgwIDgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTd2ltbWluZ1Bvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQxNmgtMTZjLTI2LjA0IDAtNDUuOC04LjQyLTU2LjA5LTE3LjktOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUM0NjEuOCA0MDcuNTggNDQyLjA0IDQxNiA0MTYgNDE2cy00NS44LTguNDItNTYuMDktMTcuOWMtOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUMyNjkuOCA0MDcuNTggMjUwLjA0IDQxNiAyMjQgNDE2cy00NS44LTguNDItNTYuMDktMTcuOWMtOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUM3Ny44IDQwNy41OCA1OC4wNCA0MTYgMzIgNDE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmMzOC42MiAwIDcyLjcyLTEyLjE5IDk2LTMxLjg0IDIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0czcyLjcyLTEyLjE5IDk2LTMxLjg0YzIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0czcyLjcyLTEyLjE5IDk2LTMxLjg0YzIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTQwMC0zMnYtOTZoMTkydjk2YzE5LjEyIDAgMzAuODYtNi4xNiAzNC4zOS05LjQyIDkuMTctOC40NiAxOS4yLTE0LjM0IDI5LjYxLTE4LjA3VjEyOGMwLTE3LjY0IDE0LjM2LTMyIDMyLTMyczMyIDE0LjM2IDMyIDMydjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2cy05NiA0My4wNi05NiA5NnY5NkgyMjR2LTk2YzAtMTcuNjQgMTQuMzYtMzIgMzItMzJzMzIgMTQuMzYgMzIgMzJ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtNTIuOTQtNDMuMDYtOTYtOTYtOTZzLTk2IDQzLjA2LTk2IDk2djIyOC41YzEwLjQxIDMuNzMgMjAuNDQgOS42MiAyOS42MSAxOC4wNyAzLjUzIDMuMjcgMTUuMjcgOS40MyAzNC4zOSA5LjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTeW5hZ29ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzAgMTk2LjUxTDYuNjcgMjY4LjI5QTI2LjY0MyAyNi42NDMgMCAwIDAgMCAyODUuOTNWNTEyaDEyOFYyMzkuNThsLTM4LTQzLjA3Yy01LjMxLTYuMDEtMTQuNjktNi4wMS0yMCAwem01NjMuMzMgNzEuNzhMNTcwIDE5Ni41MWMtNS4zMS02LjAyLTE0LjY5LTYuMDItMjAgMGwtMzggNDMuMDdWNTEyaDEyOFYyODUuOTNjMC02LjUtMi4zNy0xMi43Ny02LjY3LTE3LjY0ek0zMzkuOTkgNy4wMWMtMTEuNjktOS4zNS0yOC4yOS05LjM1LTM5Ljk4IDBsLTEyOCAxMDIuNEEzMi4wMDUgMzIuMDA1IDAgMCAwIDE2MCAxMzQuNFY1MTJoOTZ2LTkyLjU3YzAtMzEuODggMjEuNzgtNjEuNDMgNTMuMjUtNjYuNTVDMzQ5LjM0IDM0Ni4zNSAzODQgMzc3LjEzIDM4NCA0MTZ2OTZoOTZWMTM0LjRjMC05LjcyLTQuNDItMTguOTItMTIuMDEtMjQuOTlsLTEyOC0xMDIuNHptNTIuMDcgMjE1LjU1YzEuOTggMy4xNS0uMjkgNy4yNC00IDcuMjRoLTM4Ljk0TDMyNCAyNjkuNzljLTEuODUgMi45NS02LjE1IDIuOTUtOCAwbC0yNS4xMi0zOS45OGgtMzguOTRjLTMuNzIgMC01Ljk4LTQuMDktNC03LjI0bDE5LjItMzAuNTYtMTkuMi0zMC41NmMtMS45OC0zLjE1LjI5LTcuMjQgNC03LjI0aDM4Ljk0bDI1LjEyLTQwYzEuODUtMi45NSA2LjE1LTIuOTUgOCAwbDI1LjEyIDM5Ljk4aDM4Ljk1YzMuNzEgMCA1Ljk4IDQuMDkgNCA3LjI0TDM3Mi44NyAxOTJsMTkuMTkgMzAuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5bmNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcwLjcyIDEzMy4yOEMzMzkuNDU4IDEwNC4wMDggMjk4Ljg4OCA4Ny45NjIgMjU1Ljg0OCA4OGMtNzcuNDU4LjA2OC0xNDQuMzI4IDUzLjE3OC0xNjIuNzkxIDEyNi44NS0xLjM0NCA1LjM2My02LjEyMiA5LjE1LTExLjY1MSA5LjE1SDI0LjEwM2MtNy40OTggMC0xMy4xOTQtNi44MDctMTEuODA3LTE0LjE3NkMzMy45MzMgOTQuOTI0IDEzNC44MTMgOCAyNTYgOGM2Ni40NDggMCAxMjYuNzkxIDI2LjEzNiAxNzEuMzE1IDY4LjY4NUw0NjMuMDMgNDAuOTdDNDc4LjE0OSAyNS44NTEgNTA0IDM2LjU1OSA1MDQgNTcuOTQxVjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMzQ1Ljk0MWMtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNDEuNzUtNDEuNzQ5ek0zMiAyOTZoMTM0LjA1OWMyMS4zODIgMCAzMi4wOSAyNS44NTEgMTYuOTcxIDQwLjk3MWwtNDEuNzUgNDEuNzVjMzEuMjYyIDI5LjI3MyA3MS44MzUgNDUuMzE5IDExNC44NzYgNDUuMjggNzcuNDE4LS4wNyAxNDQuMzE1LTUzLjE0NCAxNjIuNzg3LTEyNi44NDkgMS4zNDQtNS4zNjMgNi4xMjItOS4xNSAxMS42NTEtOS4xNWg1Ny4zMDRjNy40OTggMCAxMy4xOTQgNi44MDcgMTEuODA3IDE0LjE3NkM0NzguMDY3IDQxNy4wNzYgMzc3LjE4NyA1MDQgMjU2IDUwNGMtNjYuNDQ4IDAtMTI2Ljc5MS0yNi4xMzYtMTcxLjMxNS02OC42ODVMNDguOTcgNDcxLjAzQzMzLjg1MSA0ODYuMTQ5IDggNDc1LjQ0MSA4IDQ1NC4wNTlWMzIwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3luYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDAuNjUgMTIuNTdsNCA4Mi43N0EyNDcuMTYgMjQ3LjE2IDAgMCAwIDI1NS44MyA4QzEzNC43MyA4IDMzLjkxIDk0LjkyIDEyLjI5IDIwOS44MkExMiAxMiAwIDAgMCAyNC4wOSAyMjRoNDkuMDVhMTIgMTIgMCAwIDAgMTEuNjctOS4yNiAxNzUuOTEgMTc1LjkxIDAgMCAxIDMxNy01Ni45NGwtMTAxLjQ2LTQuODZhMTIgMTIgMCAwIDAtMTIuNTcgMTJ2NDcuNDFhMTIgMTIgMCAwIDAgMTIgMTJINTAwYTEyIDEyIDAgMCAwIDEyLTEyVjEyYTEyIDEyIDAgMCAwLTEyLTEyaC00Ny4zN2ExMiAxMiAwIDAgMC0xMS45OCAxMi41N3pNMjU1LjgzIDQzMmExNzUuNjEgMTc1LjYxIDAgMCAxLTE0Ni03Ny44bDEwMS44IDQuODdhMTIgMTIgMCAwIDAgMTIuNTctMTJ2LTQ3LjRhMTIgMTIgMCAwIDAtMTItMTJIMTJhMTIgMTIgMCAwIDAtMTIgMTJWNTAwYTEyIDEyIDAgMCAwIDEyIDEyaDQ3LjM1YTEyIDEyIDAgMCAwIDEyLTEyLjZsLTQuMTUtODIuNTdBMjQ3LjE3IDI0Ny4xNyAwIDAgMCAyNTUuODMgNTA0YzEyMS4xMSAwIDIyMS45My04Ni45MiAyNDMuNTUtMjAxLjgyYTEyIDEyIDAgMCAwLTExLjgtMTQuMThoLTQ5LjA1YTEyIDEyIDAgMCAwLTExLjY3IDkuMjZBMTc1Ljg2IDE3NS44NiAwIDAgMSAyNTUuODMgNDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTeXJpbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMS41IDE3NC44bDU1LjcgNTUuOGMzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBsLTU1LjctNTUuOC00NS4zIDQ1LjMgNTUuOCA1NS44YzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMEwxMTEgMjY1LjJsLTI2LjQgMjYuNGMtMTcuMyAxNy4zLTI1LjYgNDEuMS0yMyA2NS40bDcuMSA2My42TDIuMyA0ODdjLTMuMSAzLjEtMy4xIDguMiAwIDExLjNsMTEuMyAxMS4zYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsNjYuMy02Ni4zIDYzLjYgNy4xYzIzLjkgMi42IDQ3LjktNS40IDY1LjQtMjNsMTgxLjktMTgxLjktMTM1LjctMTM1LjctNjQuOSA2NXptMzA4LjItOTMuM0w0MzAuNSAyLjNjLTMuMS0zLjEtOC4yLTMuMS0xMS4zIDBsLTExLjMgMTEuM2MtMy4xIDMuMS0zLjEgOC4yIDAgMTEuM2wyOC4zIDI4LjMtNDUuMyA0NS4zLTU2LjYtNTYuNi0xNy0xN2MtMy4xLTMuMS04LjItMy4xLTExLjMgMGwtMzMuOSAzMy45Yy0zLjEgMy4xLTMuMSA4LjIgMCAxMS4zbDE3IDE3TDQyNC44IDIyM2wxNyAxN2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDMzLjktMzRjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtNzMuNS03My41IDQ1LjMtNDUuMyAyOC4zIDI4LjNjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGwxMS4zLTExLjNjMy4xLTMuMiAzLjEtOC4yIDAtMTEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGVUZW5uaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjIgMjk2LjVDNTI3LjcgMjE4LjcgNTEyIDEyNi4yIDQ0OSA2My4xIDM2NS4xLTIxIDIyOS0yMSAxNDUuMSA2My4xbC01NiA1Ni4xIDIxMS41IDIxMS41YzQ2LjEtNjIuMSAxMzEuNS03Ny40IDE5NS42LTM0LjJ6bS0yMTcuOSA3OS43TDU3LjkgMTU1LjljLTI3LjMgNDUuMy0yMS43IDEwNSAxNy4zIDE0NC4xbDM0LjUgMzQuNkw2LjcgNDI0Yy04LjYgNy41LTkuMSAyMC43LTEgMjguOGw1My40IDUzLjVjOCA4LjEgMjEuMiA3LjYgMjguNy0xTDE3Ny4xIDQwMmwzNS43IDM1LjdjMTkuNyAxOS43IDQ0LjYgMzAuNSA3MC4zIDMzLjMtNy4xLTE3LTExLTM1LjYtMTEtNTUuMS0uMS0xMy44IDIuNS0yNyA2LjItMzkuN3pNNDE2IDMyMGMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NiA5Ni00MyA5Ni05Ni00My05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0yMjQgNDE2SDY0di05NmgxNjB2OTZ6bTAtMTYwSDY0di05NmgxNjB2OTZ6bTIyNCAxNjBIMjg4di05NmgxNjB2OTZ6bTAtMTYwSDI4OHYtOTZoMTYwdjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZXRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIyNCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xNzYtMTA4YzAgNi42LTUuNCAxMi0xMiAxMkg2MGMtNi42IDAtMTItNS40LTEyLTEyVjYwYzAtNi42IDUuNC0xMiAxMi0xMmgzMjhjNi42IDAgMTIgNS40IDEyIDEydjMxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yMjQgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGV0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMTkyQzc4LjkgMTkyIDEyLjUgMjUwLjUuMSAzMjYuN2MtLjggNC44IDMuMyA5LjMgOC4zIDkuM2gzMDMuM2M1IDAgOS4xLTQuNSA4LjMtOS4zQzMwNy41IDI1MC41IDI0MS4xIDE5MiAxNjAgMTkyem0xNTEuNiAxNzZIOC40Yy01IDAtOS4xIDQuNS04LjMgOS4zQzEyLjUgNDUzLjUgNzguOSA1MTIgMTYwIDUxMnMxNDcuNS01OC41IDE1OS45LTEzNC43Yy44LTQuOC0zLjMtOS4zLTguMy05LjN6TTU5My40IDQ2LjZjLTU2LjUtNTYuNS0xNDQuMi02MS40LTIwNi45LTE2LTQgMi45LTQuMyA4LjktLjggMTIuM0w1OTcgMjU0LjNjMy41IDMuNSA5LjUgMy4yIDEyLjMtLjggNDUuNS02Mi43IDQwLjYtMTUwLjQtMTUuOS0yMDYuOXpNMzYzIDY1LjdjLTMuNS0zLjUtOS41LTMuMi0xMi4zLjgtNDUuNCA2Mi43LTQwLjUgMTUwLjQgMTUuOSAyMDYuOSA1Ni41IDU2LjUgMTQ0LjIgNjEuNCAyMDYuOSAxNS45IDQtMi45IDQuMy04LjkuOC0xMi4zTDM2MyA2NS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWNob21ldGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMkMxMjguOTQgMzIgMCAxNjAuOTQgMCAzMjBjMCA1Mi44IDE0LjI1IDEwMi4yNiAzOS4wNiAxNDQuOCA1LjYxIDkuNjIgMTYuMyAxNS4yIDI3LjQ0IDE1LjJoNDQzYzExLjE0IDAgMjEuODMtNS41OCAyNy40NC0xNS4yQzU2MS43NSA0MjIuMjYgNTc2IDM3Mi44IDU3NiAzMjBjMC0xNTkuMDYtMTI4Ljk0LTI4OC0yODgtMjg4em0wIDY0YzE0LjcxIDAgMjYuNTggMTAuMTMgMzAuMzIgMjMuNjUtMS4xMSAyLjI2LTIuNjQgNC4yMy0zLjQ1IDYuNjdsLTkuMjIgMjcuNjdjLTUuMTMgMy40OS0xMC45NyA2LjAxLTE3LjY0IDYuMDEtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlMyNzAuMzMgOTYgMjg4IDk2ek05NiAzODRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTQ4LTE2MGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMjQ2Ljc3LTcyLjQxbC02MS4zMyAxODRDMzQzLjEzIDM0Ny4zMyAzNTIgMzY0LjU0IDM1MiAzODRjMCAxMS43Mi0zLjM4IDIyLjU1LTguODggMzJIMjMyLjg4Yy01LjUtOS40NS04Ljg4LTIwLjI4LTguODgtMzIgMC0zMy45NCAyNi41LTYxLjQzIDU5LjktNjMuNTlsNjEuMzQtMTg0LjAxYzQuMTctMTIuNTYgMTcuNzMtMTkuNDUgMzAuMzYtMTUuMTcgMTIuNTcgNC4xOSAxOS4zNSAxNy43OSAxNS4xNyAzMC4zNnptMTQuNjYgNTcuMmwxNS41Mi00Ni41NWMzLjQ3LTEuMjkgNy4xMy0yLjIzIDExLjA1LTIuMjMgMTcuNjcgMCAzMiAxNC4zMyAzMiAzMnMtMTQuMzMgMzItMzIgMzJjLTExLjM4LS4wMS0yMC44OS02LjI4LTI2LjU3LTE1LjIyek00ODAgMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTIuMTE4VjQ4QzAgMjEuNDkgMjEuNDkgMCA0OCAwaDIwNC4xMThhNDggNDggMCAwIDEgMzMuOTQxIDE0LjA1OWwyMTEuODgyIDIxMS44ODJjMTguNzQ1IDE4Ljc0NSAxOC43NDUgNDkuMTM3IDAgNjcuODgyTDI5My44MjMgNDk3Ljk0MWMtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMTguNzQ1LTY3Ljg4MiAwTDE0LjA1OSAyODYuMDU5QTQ4IDQ4IDAgMCAxIDAgMjUyLjExOHpNMTEyIDY0Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4LTIxLjQ5LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ny45NDEgMjI1Ljk0MUwyODYuMDU5IDE0LjA1OUE0OCA0OCAwIDAgMCAyNTIuMTE4IDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2MjA0LjExOGE0OCA0OCAwIDAgMCAxNC4wNTkgMzMuOTQxbDIxMS44ODIgMjExLjg4MmMxOC43NDQgMTguNzQ1IDQ5LjEzNiAxOC43NDYgNjcuODgyIDBsMjA0LjExOC0yMDQuMTE4YzE4Ljc0NS0xOC43NDUgMTguNzQ1LTQ5LjEzNyAwLTY3Ljg4MnpNMTEyIDE2MGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptNTEzLjk0MSAxMzMuODIzTDQyMS44MjMgNDk3Ljk0MWMtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMTguNzQ1LTY3Ljg4MiAwbC0uMzYtLjM2TDUyNy42NCAzMjMuNTIyYzE2Ljk5OS0xNi45OTkgMjYuMzYtMzkuNiAyNi4zNi02My42NHMtOS4zNjItNDYuNjQxLTI2LjM2LTYzLjY0TDMzMS4zOTcgMGg0OC43MjFhNDggNDggMCAwIDEgMzMuOTQxIDE0LjA1OWwyMTEuODgyIDIxMS44ODJjMTguNzQ1IDE4Ljc0NSAxOC43NDUgNDkuMTM3IDAgNjcuODgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxOTJjLTM1LjMgMC02NCAyOC43LTY0IDY0czI4LjcgNjQgNjQgNjQgNjQtMjguNyA2NC02NC0yOC43LTY0LTY0LTY0em00MDAgMjI0SDM4MC42YzQxLjUtNDAuNyA2Ny40LTk3LjMgNjcuNC0xNjAgMC0xMjMuNy0xMDAuMy0yMjQtMjI0LTIyNFMwIDEzMi4zIDAgMjU2czEwMC4zIDIyNCAyMjQgMjI0aDQwMGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQwMC02NGMtNTMgMC05Ni00My05Ni05NnM0My05NiA5Ni05NiA5NiA0MyA5NiA5Ni00MyA5Ni05NiA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFza3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM5LjYxIDM1LjVhMTIgMTIgMCAwIDAtMTcgMEw1OC45MyA5OC44MWwtMjIuNy0yMi4xMmExMiAxMiAwIDAgMC0xNyAwTDMuNTMgOTIuNDFhMTIgMTIgMCAwIDAgMCAxN2w0Ny41OSA0Ny40YTEyLjc4IDEyLjc4IDAgMCAwIDE3LjYxIDBsMTUuNTktMTUuNjJMMTU2LjUyIDY5YTEyLjA5IDEyLjA5IDAgMCAwIC4wOS0xN3ptMCAxNTkuMTlhMTIgMTIgMCAwIDAtMTcgMGwtNjMuNjggNjMuNzItMjIuNy0yMi4xYTEyIDEyIDAgMCAwLTE3IDBMMy41MyAyNTJhMTIgMTIgMCAwIDAgMCAxN0w1MSAzMTYuNWExMi43NyAxMi43NyAwIDAgMCAxNy42IDBsMTUuNy0xNS42OSA3Mi4yLTcyLjIyYTEyIDEyIDAgMCAwIC4wOS0xNi45ek02NCAzNjhjLTI2LjQ5IDAtNDguNTkgMjEuNS00OC41OSA0OFMzNy41MyA0NjQgNjQgNDY0YTQ4IDQ4IDAgMCAwIDAtOTZ6bTQzMiAxNkgyMDhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjg4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0zMjBIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAxNjBIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRheGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYyIDI0MS42NGwtMjItODQuODRjLTkuNi0zNS4yLTQxLjYtNjAuOC03Ni44LTYwLjhIMzUyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJIMTkyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyaC0xMS4yYy0zNS4yIDAtNjcuMiAyNS42LTc2LjggNjAuOGwtMjIgODQuODRDMjEuNDEgMjQ4LjA0IDAgMjczLjQ3IDAgMzA0djQ4YzAgMjMuNjMgMTIuOTUgNDQuMDQgMzIgNTUuMTJWNDQ4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMjU2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNDAuODhjMTkuMDUtMTEuMDkgMzItMzEuNSAzMi01NS4xMnYtNDhjMC0zMC41My0yMS40MS01NS45Ni01MC02Mi4zNnpNOTYgMzUyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0yMC41NS0xMTJsMTcuMi02Ni4zNmMyLjIzLTguMTYgOS41OS0xMy42NCAxNS4wNi0xMy42NGgyMTQuNGM1LjQ3IDAgMTIuODMgNS40OCAxNC44NSAxMi44NkwzOTUuNDUgMjQwaC0yNzguOXpNNDE2IDM1MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVldGhPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAwSDk2QzQyLjk4IDAgMCA0Mi45OCAwIDk2djY0YzAgMzUuMzUgMjguNjYgNjQgNjQgNjRoNTEyYzM1LjM0IDAgNjQtMjguNjUgNjQtNjRWOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnpNMTYwIDE3NmMwIDguODQtNy4xNiAxNi0xNiAxNkg4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhzNDggMjEuNDkgNDggNDh2MzJ6bTE0NCAwYzAgOC44NC03LjE2IDE2LTE2IDE2aC04MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTU2YzAtMzAuOTMgMjUuMDctNTYgNTYtNTZzNTYgMjUuMDcgNTYgNTZ2NTZ6bTE0NCAwYzAgOC44NC03LjE2IDE2LTE2IDE2aC04MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTU2YzAtMzAuOTMgMjUuMDctNTYgNTYtNTZzNTYgMjUuMDcgNTYgNTZ2NTZ6bTEyOCAwYzAgOC44NC03LjE2IDE2LTE2IDE2aC02NGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhzNDggMjEuNDkgNDggNDh2MzJ6bTAgMTQ0SDY0Yy0zNS4zNCAwLTY0IDI4LjY1LTY0IDY0djMyYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZoNDQ4YzUzLjAyIDAgOTYtNDIuOTggOTYtOTZ2LTMyYzAtMzUuMzUtMjguNjYtNjQtNjQtNjR6bS00MTYgODBjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDh2LTMyYzAtOC44NCA3LjE2LTE2IDE2LTE2aDY0YzguODQgMCAxNiA3LjE2IDE2IDE2djMyem0xNDQtOGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtMjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MjR6bTE0NCAwYzAgMzAuOTMtMjUuMDcgNTYtNTYgNTZzLTU2LTI1LjA3LTU2LTU2di0yNGMwLTguODQgNy4xNi0xNiAxNi0xNmg4MGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYyNHptMTI4IDhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDh2LTMyYzAtOC44NCA3LjE2LTE2IDE2LTE2aDY0YzguODQgMCAxNiA3LjE2IDE2IDE2djMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWV0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMEg5NkM0Mi45OCAwIDAgNDIuOTggMCA5NnYzMjBjMCA1My4wMiA0Mi45OCA5NiA5NiA5Nmg0NDhjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NlY5NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2ek0xNjAgMzY4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di02NGMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY2NHptMC0xMjhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di02NGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djY0em0xNDQgMTIwYzAgMzAuOTMtMjUuMDcgNTYtNTYgNTZzLTU2LTI1LjA3LTU2LTU2di01NmMwLTguODQgNy4xNi0xNiAxNi0xNmg4MGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY1NnptMC0xMjBjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtODhjMC0zMC45MyAyNS4wNy01NiA1Ni01NnM1NiAyNS4wNyA1NiA1NnY4OHptMTQ0IDEyMGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtNTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NTZ6bTAtMTIwYzAgOC44NC03LjE2IDE2LTE2IDE2aC04MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTg4YzAtMzAuOTMgMjUuMDctNTYgNTYtNTZzNTYgMjUuMDcgNTYgNTZ2ODh6bTEyOCAxMjhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDh2LTY0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDY0YzguODQgMCAxNiA3LjE2IDE2IDE2djY0em0wLTEyOGMwIDguODQtNy4xNiAxNi0xNiAxNmgtNjRjLTguODQgMC0xNi03LjE2LTE2LTE2di02NGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW1wZXJhdHVyZUhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDBjLTUyLjkgMC05NiA0My4xLTk2IDk2czQzLjEgOTYgOTYgOTYgOTYtNDMuMSA5Ni05Ni00My4xLTk2LTk2LTk2em0wIDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bS0xNjAtMTZDMjU2IDUwLjEgMjA1LjkgMCAxNDQgMFMzMiA1MC4xIDMyIDExMnYxNjYuNUMxMi4zIDMwMy4yIDAgMzM0IDAgMzY4YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0czE0NC02NC41IDE0NC0xNDRjMC0zNC0xMi4zLTY0LjktMzItODkuNVYxMTJ6TTE0NCA0NDhjLTQ0LjEgMC04MC0zNS45LTgwLTgwIDAtMjUuNSAxMi4yLTQ4LjkgMzItNjMuOFYxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHYxOTIuMmMxOS44IDE0LjggMzIgMzguMyAzMiA2My44IDAgNDQuMS0zNS45IDgwLTgwIDgwem0xNi0xMjUuMVYxMTJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2MjEwLjljLTE4LjYgNi42LTMyIDI0LjItMzIgNDUuMSAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjUtMzItNDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDBjLTUyLjkgMC05NiA0My4xLTk2IDk2czQzLjEgOTYgOTYgOTYgOTYtNDMuMSA5Ni05Ni00My4xLTk2LTk2LTk2em0wIDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bS0xNjAtMTZDMjU2IDUwLjEgMjA1LjkgMCAxNDQgMFMzMiA1MC4xIDMyIDExMnYxNjYuNUMxMi4zIDMwMy4yIDAgMzM0IDAgMzY4YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0czE0NC02NC41IDE0NC0xNDRjMC0zNC0xMi4zLTY0LjktMzItODkuNVYxMTJ6TTE0NCA0NDhjLTQ0LjEgMC04MC0zNS45LTgwLTgwIDAtMjUuNSAxMi4yLTQ4LjkgMzItNjMuOFYxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHYxOTIuMmMxOS44IDE0LjggMzIgMzguMyAzMiA2My44IDAgNDQuMS0zNS45IDgwLTgwIDgwem0xNi0xMjUuMVYzMDRjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2MTguOWMtMTguNiA2LjYtMzIgMjQuMi0zMiA0NS4xIDAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC0yMC45LTEzLjQtMzguNS0zMi00NS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIgMTYwSDEyYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTZjMCA2LjYgNS40IDEyIDEyIDEyaDE0MHYyMjhjMCA2LjYgNS40IDEyIDEyIDEyaDU2YzYuNiAwIDEyLTUuNCAxMi0xMlYyNDBoMTQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNTZjMC02LjYtNS40LTEyLTEyLTEyem0wLTEyOEgxMkM1LjQgMzIgMCAzNy40IDAgNDR2NTZjMCA2LjYgNS40IDEyIDEyIDEyaDM2MGM2LjYgMCAxMi01LjQgMTItMTJWNDRjMC02LjYtNS40LTEyLTEyLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZXJtaW5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTcuOTgxIDI3Mi45NzFMNjMuNjM4IDQ2Ny4zMTRjLTkuMzczIDkuMzczLTI0LjU2OSA5LjM3My0zMy45NDEgMEw3LjAyOSA0NDQuNjQ3Yy05LjM1Ny05LjM1Ny05LjM3NS0yNC41MjItLjA0LTMzLjkwMUwxNjEuMDExIDI1NiA2Ljk5IDEwMS4yNTVjLTkuMzM1LTkuMzc5LTkuMzE3LTI0LjU0NC4wNC0zMy45MDFsMjIuNjY3LTIyLjY2N2M5LjM3My05LjM3MyAyNC41NjktOS4zNzMgMzMuOTQxIDBMMjU3Ljk4MSAyMzkuMDNjOS4zNzMgOS4zNzIgOS4zNzMgMjQuNTY4IDAgMzMuOTQxek02NDAgNDU2di0zMmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzEyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MzJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMwNGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRleHRIZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2OTZhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyaDU2djMwNEg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxNjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC00MFYxMTJoNTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTI1NiAzMzZoLTQ4VjE0NGg0OGMxNC4zMSAwIDIxLjMzLTE3LjMxIDExLjMxLTI3LjMxbC04MC04MGExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA4MEMzNzkuMzYgMTI2IDM4NC4zNiAxNDQgNDAwIDE0NGg0OHYyMjRoLTQ4Yy0xNC4zMSAwLTIxLjMyIDE3LjMxLTExLjMxIDI3LjMxbDgwIDgwYTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtODBDNTgwLjY0IDM4NiA1NzUuNjQgMzY4IDU2MCAzNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRleHRXaWR0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHY4MGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMTZoMTIwdjExMmgtMjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMjRWMTEyaDEyMHYxNmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnptLTY4LjY5IDI2MC42OUMzNTQgMjgzLjM2IDMzNiAyODguMzYgMzM2IDMwNHY0OEgxMTJ2LTQ4YzAtMTQuMzEtMTcuMzEtMjEuMzItMjcuMzEtMTEuMzFsLTgwIDgwYTE2IDE2IDAgMCAwIDAgMjIuNjJsODAgODBDOTQgNDg0LjY0IDExMiA0NzkuNjQgMTEyIDQ2NHYtNDhoMjI0djQ4YzAgMTQuMzEgMTcuMzEgMjEuMzMgMjcuMzEgMTEuMzFsODAtODBhMTYgMTYgMCAwIDAgMC0yMi42MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTYgMzJoMTkyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYxNjBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDI5NmMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjU2YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHptLTgwIDBIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2MTYwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxOTJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNMCAyOTZ2MTYwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxOTJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI5NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHptMjk2IDE4NGgxOTJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI5NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjk2Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTYwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OS4zMzMgMjE2djgwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di04MGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTAxLjMzM2MxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR6TTAgMzc2djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6TTEyNS4zMzMgMzJIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHptODAgNDQ4SDQ4OGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0em0tMjQtNDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bTI0IDI2NEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ5LjMzMyA1NnY4MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFY1NmMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTAxLjMzM2MxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR6bTE4MS4zMzQgMjQwdi04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NiAwIDI0LjAwMS0xMC43NDUgMjQuMDAxLTI0em0zMi0yNDB2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0SDQ4OGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDM4Ni42NjdjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHptLTMyIDgwVjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU2IDAgMjQuMDAxLTEwLjc0NSAyNC4wMDEtMjR6bS0yMDUuMzM0IDU2SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTAgMzc2djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bTM4Ni42NjctNTZINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDM4Ni42NjdjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjR6bTAgMTYwSDQ4OGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgzODYuNjY3Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0ek0xODEuMzMzIDM3NnY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZWF0ZXJNYXNrcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDYuODYgMjQ1LjE1Yy0zNS44OCAxMC40NS01OS45NSA0MS4yLTU3LjUzIDc0LjEgMTEuNC0xMi43MiAyOC44MS0yMy43IDQ5LjktMzAuOTJsNy42My00My4xOHpNOTUuODEgMjk1TDY0LjA4IDExNS40OWMtLjI5LTEuNjIuMjgtMi42Mi4yNC0yLjY1IDU3Ljc2LTMyLjA2IDEyMy4xMi00OS4wMSAxODkuMDEtNDkuMDEgMS42MSAwIDMuMjMuMTcgNC44NS4xOSAxMy45NS0xMy40NyAzMS43My0yMi44MyA1MS41OS0yNiAxOC44OS0zLjAyIDM4LjA1LTQuNTUgNTcuMTgtNS4zMi05Ljk5LTEzLjk1LTI0LjQ4LTI0LjIzLTQxLjc3LTI3QzMwMS4yNyAxLjg5IDI3Ny4yNCAwIDI1My4zMiAwIDE3Ni42NiAwIDEwMS4wMiAxOS40MiAzMy4yIDU3LjA2IDkuMDMgNzAuNDgtMy45MiA5OC40OCAxLjA1IDEyNi41OGwzMS43MyAxNzkuNTFjMTQuMjMgODAuNTIgMTM2LjMzIDE0Mi4wOCAyMDQuNDUgMTQyLjA4IDMuNTkgMCA2Ljc1LS40NiAxMC4wMS0uOC0xMy41Mi0xNy4wOC0yOC45NC00MC40OC0zOS41LTY3LjU4LTQ3LjYxLTEyLjk4LTEwNi4wNi01MS42Mi0xMTEuOTMtODQuNzl6bTk3LjU1LTEzNy40NmMtLjczLTQuMTItMi4yMy03Ljg3LTQuMDctMTEuNC04LjI1IDguOTEtMjAuNjcgMTUuNzUtMzUuMzIgMTguMzItMTQuNjUgMi41OC0yOC42Ny40LTM5LjQ4LTUuMTctLjUyIDMuOTQtLjY0IDcuOTguMDkgMTIuMSAzLjg0IDIxLjcgMjQuNTggMzYuMTkgNDYuMzQgMzIuMzcgMjEuNzUtMy44MiAzNi4yOC0yNC41MiAzMi40NC00Ni4yMnpNNjA2LjggMTIwLjljLTg4Ljk4LTQ5LjM4LTE5MS40My02Ny40MS0yOTEuOTgtNTEuMzUtMjcuMzEgNC4zNi00OS4wOCAyNi4yNi01NC4wNCA1NC4zNmwtMzEuNzMgMTc5LjUxYy0xNS4zOSA4Ny4wNSA5NS4yOCAxOTYuMjcgMTU4LjMxIDIwNy4zNSA2My4wMyAxMS4wOSAyMDQuNDctNTMuNzkgMjE5Ljg2LTE0MC44NGwzMS43My0xNzkuNTFjNC45Ny0yOC4xMS03Ljk4LTU2LjExLTMyLjE1LTY5LjUyem0tMjczLjI0IDk2LjhjMy44NC0yMS43IDI0LjU4LTM2LjE5IDQ2LjM0LTMyLjM2IDIxLjc2IDMuODMgMzYuMjggMjQuNTIgMzIuNDUgNDYuMjItLjczIDQuMTItMi4yMyA3Ljg3LTQuMDcgMTEuNC04LjI1LTguOTEtMjAuNjctMTUuNzUtMzUuMzItMTguMzItMTQuNjUtMi41OC0yOC42Ny0uNC0zOS40OCA1LjE3LS41My0zLjk1LS42NS03Ljk5LjA4LTEyLjExem03MC40NyAxOTguNzZjLTU1LjY4LTkuNzktOTMuNTItNTkuMjctODkuMDQtMTEyLjkgMjAuNiAyNS41NCA1Ni4yMSA0Ni4xNyA5OS40OSA1My43OCA0My4yOCA3LjYxIDgzLjgyLjM3IDExMS45My0xNi42LTE0LjE4IDUxLjk0LTY2LjcxIDg1LjUxLTEyMi4zOCA3NS43MnptMTMwLjMtMTUxLjM0Yy04LjI1LTguOTEtMjAuNjgtMTUuNzUtMzUuMzMtMTguMzItMTQuNjUtMi41OC0yOC42Ny0uNC0zOS40OCA1LjE3LS41Mi0zLjk0LS42NC03Ljk4LjA5LTEyLjEgMy44NC0yMS43IDI0LjU4LTM2LjE5IDQ2LjM0LTMyLjM3IDIxLjc1IDMuODMgMzYuMjggMjQuNTIgMzIuNDUgNDYuMjItLjczIDQuMTMtMi4yMyA3Ljg4LTQuMDcgMTEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlcm1vbWV0ZXJFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHMtNjQtMjguNjU0LTY0LTY0YzAtMzUuMzQ2IDI4LjY1NC02NCA2NC02NHM2NCAyOC42NTQgNjQgNjR6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlcm1vbWV0ZXJGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA5NmMwLTUzLjAxOS00Mi45ODEtOTYtOTYtOTZTMzIgNDIuOTgxIDMyIDk2djIwMy4zNDdDMTIuMjI1IDMyMS43NTYuMTY2IDM1MS4xMzYuMDAyIDM4My4zMzNjLS4zNTkgNzAuMzAzIDU2Ljc4NyAxMjguMTc2IDEyNy4wODkgMTI4LjY2NC4yOTkuMDAyLjYxLjAwMy45MDkuMDAzIDcwLjY5OCAwIDEyOC01Ny4zMDQgMTI4LTEyOCAwLTMyLjQ1OS0xMi4wODgtNjIuMDktMzItODQuNjUzVjk2em0tOTYgMzY4bC0uNTc2LS4wMDJjLTQzLjg2LS4zMDQtNzkuNjQ3LTM2LjU0NC03OS40MjMtODAuNDIuMTczLTMzLjk4IDE5LjI2Ni01MS42NTIgMzEuOTk5LTY2LjA4Vjk2YzAtMjYuNDY3IDIxLjUzMy00OCA0OC00OHM0OCAyMS41MzMgNDggNDh2MjIxLjQ5OGMxMi42MyAxNC4zMTIgMzIgMzIuMTY0IDMyIDY2LjUwMiAwIDQ0LjExMi0zNS44ODggODAtODAgODB6bTY0LTgwYzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHMtNjQtMjguNjU0LTY0LTY0YzAtMjMuNjg1IDEyLjg3Ni00NC4zNDkgMzItNTUuNDE3Vjk2YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMnMzMiAxNC4zMjcgMzIgMzJ2MjMyLjU4M2MxOS4xMjQgMTEuMDY4IDMyIDMxLjczMiAzMiA1NS40MTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHMtNjQtMjguNjU0LTY0LTY0YzAtMjMuNjg1IDEyLjg3Ni00NC4zNDkgMzItNTUuNDE3VjIyNGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjEwNC41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3em0zMi04NC42NTNjMTkuOTEyIDIyLjU2MyAzMiA1Mi4xOTQgMzIgODQuNjUzIDAgNzAuNjk2LTU3LjMwMyAxMjgtMTI4IDEyOC0uMjk5IDAtLjYwOS0uMDAxLS45MDktLjAwM0M1Ni43ODkgNTExLjUwOS0uMzU3IDQ1My42MzYuMDAyIDM4My4zMzMuMTY2IDM1MS4xMzUgMTIuMjI1IDMyMS43NTUgMzIgMjk5LjM0N1Y5NmMwLTUzLjAxOSA0Mi45ODEtOTYgOTYtOTZzOTYgNDIuOTgxIDk2IDk2djIwMy4zNDd6TTIwOCAzODRjMC0zNC4zMzktMTkuMzctNTIuMTktMzItNjYuNTAyVjk2YzAtMjYuNDY3LTIxLjUzMy00OC00OC00OFM4MCA2OS41MzMgODAgOTZ2MjIxLjQ5OGMtMTIuNzMyIDE0LjQyOC0zMS44MjUgMzIuMS0zMS45OTkgNjYuMDgtLjIyNCA0My44NzYgMzUuNTYzIDgwLjExNiA3OS40MjMgODAuNDJMMTI4IDQ2NGM0NC4xMTIgMCA4MC0zNS44ODggODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyUXVhcnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHMtNjQtMjguNjU0LTY0LTY0YzAtMjMuNjg1IDEyLjg3Ni00NC4zNDkgMzItNTUuNDE3VjI4OGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjQwLjU4M2MxOS4xMjQgMTEuMDY4IDMyIDMxLjczMiAzMiA1NS40MTd6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlcm1vbWV0ZXJUaHJlZVF1YXJ0ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAzODRjMCAzNS4zNDYtMjguNjU0IDY0LTY0IDY0LTM1LjM0NiAwLTY0LTI4LjY1NC02NC02NCAwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1YxNjBjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnYxNjguNTgzYzE5LjEyNCAxMS4wNjggMzIgMzEuNzMyIDMyIDU1LjQxN3ptMzItODQuNjUzYzE5LjkxMiAyMi41NjMgMzIgNTIuMTk0IDMyIDg0LjY1MyAwIDcwLjY5Ni01Ny4zMDMgMTI4LTEyOCAxMjgtLjI5OSAwLS42MDktLjAwMS0uOTA5LS4wMDNDNTYuNzg5IDUxMS41MDktLjM1NyA0NTMuNjM2LjAwMiAzODMuMzMzLjE2NiAzNTEuMTM1IDEyLjIyNSAzMjEuNzU1IDMyIDI5OS4zNDdWOTZjMC01My4wMTkgNDIuOTgxLTk2IDk2LTk2czk2IDQyLjk4MSA5NiA5NnYyMDMuMzQ3ek0yMDggMzg0YzAtMzQuMzM5LTE5LjM3LTUyLjE5LTMyLTY2LjUwMlY5NmMwLTI2LjQ2Ny0yMS41MzMtNDgtNDgtNDhTODAgNjkuNTMzIDgwIDk2djIyMS40OThjLTEyLjczMiAxNC40MjgtMzEuODI1IDMyLjEtMzEuOTk5IDY2LjA4LS4yMjQgNDMuODc2IDM1LjU2MyA4MC4xMTYgNzkuNDIzIDgwLjQyTDEyOCA0NjRjNDQuMTEyIDAgODAtMzUuODg4IDgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYuOCAyMC40Yy0zNy41LTMwLjctOTUuNS0yNi4zLTEzMS45IDEwLjJsLTQ1LjcgNDYgNTAuNSA1MC41YzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtNTAuNC01MC41LTQ1LjEgNDUuNCA1MC4zIDUwLjRjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwTDIwOSAxNjcuNGwtNDUuMSA0NS40TDIxNCAyNjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC01MC4xLTUwLjJMOTYgMjgxLjFWMzgyTDcgNDcxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOSA5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw4OS04OWg5OS45TDQ4NCAxNjIuNmMzNC45LTM0LjkgNDIuMi0xMDEuNS03LjItMTQyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRodW1ic0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA1NnYyNDBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDgwYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ6bTQwIDIwMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRzMjQgMTAuNzQ1IDI0IDI0LTEwLjc0NSAyNC0yNCAyNC0yNC0xMC43NDUtMjQtMjR6bTI3MiAyNTZjLTIwLjE4MyAwLTI5LjQ4NS0zOS4yOTMtMzMuOTMxLTU3Ljc5NS01LjIwNi0yMS42NjYtMTAuNTg5LTQ0LjA3LTI1LjM5My01OC45MDItMzIuNDY5LTMyLjUyNC00OS41MDMtNzMuOTY3LTg5LjExNy0xMTMuMTExYTExLjk4IDExLjk4IDAgMCAxLTMuNTU4LTguNTIxVjU5LjkwMWMwLTYuNTQxIDUuMjQzLTExLjg3OCAxMS43ODMtMTEuOTk4IDE1LjgzMS0uMjkgMzYuNjk0LTkuMDc5IDUyLjY1MS0xNi4xNzhDMjU2LjE4OSAxNy41OTggMjk1LjcwOS4wMTcgMzQzLjk5NSAwaDIuODQ0YzQyLjc3NyAwIDkzLjM2My40MTMgMTEzLjc3NCAyOS43MzcgOC4zOTIgMTIuMDU3IDEwLjQ0NiAyNy4wMzQgNi4xNDggNDQuNjMyIDE2LjMxMiAxNy4wNTMgMjUuMDYzIDQ4Ljg2MyAxNi4zODIgNzQuNzU3IDE3LjU0NCAyMy40MzIgMTkuMTQzIDU2LjEzMiA5LjMwOCA3OS40NjlsLjExLjExYzExLjg5MyAxMS45NDkgMTkuNTIzIDMxLjI1OSAxOS40MzkgNDkuMTk3LS4xNTYgMzAuMzUyLTI2LjE1NyA1OC4wOTgtNTkuNTUzIDU4LjA5OEgzNTAuNzIzQzM1OC4wMyAzNjQuMzQgMzg0IDM4OC4xMzIgMzg0IDQzMC41NDggMzg0IDUwNCAzMzYgNTEyIDMxMiA1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRodW1ic1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNCAyMjRIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYyNDBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDgwYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNDhjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek02NCA0NzJjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0LTEwLjc0NSAyNC0yNCAyNHpNMzg0IDgxLjQ1MmMwIDQyLjQxNi0yNS45NyA2Ni4yMDgtMzMuMjc3IDk0LjU0OGgxMDEuNzIzYzMzLjM5NyAwIDU5LjM5NyAyNy43NDYgNTkuNTUzIDU4LjA5OC4wODQgMTcuOTM4LTcuNTQ2IDM3LjI0OS0xOS40MzkgNDkuMTk3bC0uMTEuMTFjOS44MzYgMjMuMzM3IDguMjM3IDU2LjAzNy05LjMwOCA3OS40NjkgOC42ODEgMjUuODk1LS4wNjkgNTcuNzA0LTE2LjM4MiA3NC43NTcgNC4yOTggMTcuNTk4IDIuMjQ0IDMyLjU3NS02LjE0OCA0NC42MzJDNDQwLjIwMiA1MTEuNTg3IDM4OS42MTYgNTEyIDM0Ni44MzkgNTEybC0yLjg0NS0uMDAxYy00OC4yODctLjAxNy04Ny44MDYtMTcuNTk4LTExOS41Ni0zMS43MjUtMTUuOTU3LTcuMDk5LTM2LjgyMS0xNS44ODctNTIuNjUxLTE2LjE3OC02LjU0LS4xMi0xMS43ODMtNS40NTctMTEuNzgzLTExLjk5OHYtMjEzLjc3YzAtMy4yIDEuMjgyLTYuMjcxIDMuNTU4LTguNTIxIDM5LjYxNC0zOS4xNDQgNTYuNjQ4LTgwLjU4NyA4OS4xMTctMTEzLjExMSAxNC44MDQtMTQuODMyIDIwLjE4OC0zNy4yMzYgMjUuMzkzLTU4LjkwMkMyODIuNTE1IDM5LjI5MyAyOTEuODE3IDAgMzEyIDBjMjQgMCA3MiA4IDcyIDgxLjQ1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGh1bWJ0YWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC4wMjggMjE0LjI2N0wyODUuNzkzIDk2SDMyOGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDU2QzQyLjc0NSAwIDMyIDEwLjc0NSAzMiAyNHY0OGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoNDIuMjA3TDg1Ljk3MiAyMTQuMjY3QzM3LjQ2NSAyMzYuODIgMCAyNzcuMjYxIDAgMzI4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMzZ2MTA0LjAwN2MwIDEuMjQyLjI4OSAyLjQ2Ny44NDUgMy41NzhsMjQgNDhjMi45NDEgNS44ODIgMTEuMzY0IDUuODkzIDE0LjMxMSAwbDI0LTQ4YTguMDA4IDguMDA4IDAgMCAwIC44NDUtMy41NzhWMzUyaDEzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjQtLjAwMS01MS4xODMtMzcuOTgzLTkxLjQyLTg1Ljk3My0xMTMuNzMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaWNrZXRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDE2MGgzMjB2MTkySDEyOFYxNjB6bTQwMCA5NmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4djk2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDh2LTk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhzLTIxLjQ5LTQ4LTQ4LTQ4di05NmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQ4MGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4em0tNDgtMTA0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgxMjBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYyMDhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaW1lc0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xMjEuNiAzMTMuMWM0LjcgNC43IDQuNyAxMi4zIDAgMTdMMzM4IDM3Ny42Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMjU2IDMxMmwtNjUuMSA2NS42Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMTM0LjQgMzM4Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsNjUuNi02NS02NS42LTY1LjFjLTQuNy00LjctNC43LTEyLjMgMC0xN2wzOS42LTM5LjZjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDY1IDY1LjcgNjUuMS02NS42YzQuNy00LjcgMTIuMy00LjcgMTcgMGwzOS42IDM5LjZjNC43IDQuNyA0LjcgMTIuMyAwIDE3TDMxMiAyNTZsNjUuNiA2NS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaW1lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzUyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDIuNzIgMjU2bDEwMC4wNy0xMDAuMDdjMTIuMjgtMTIuMjggMTIuMjgtMzIuMTkgMC00NC40OGwtMjIuMjQtMjIuMjRjLTEyLjI4LTEyLjI4LTMyLjE5LTEyLjI4LTQ0LjQ4IDBMMTc2IDE4OS4yOCA3NS45MyA4OS4yMWMtMTIuMjgtMTIuMjgtMzIuMTktMTIuMjgtNDQuNDggMEw5LjIxIDExMS40NWMtMTIuMjggMTIuMjgtMTIuMjggMzIuMTkgMCA0NC40OEwxMDkuMjggMjU2IDkuMjEgMzU2LjA3Yy0xMi4yOCAxMi4yOC0xMi4yOCAzMi4xOSAwIDQ0LjQ4bDIyLjI0IDIyLjI0YzEyLjI4IDEyLjI4IDMyLjIgMTIuMjggNDQuNDggMEwxNzYgMzIyLjcybDEwMC4wNyAxMDAuMDdjMTIuMjggMTIuMjggMzIuMiAxMi4yOCA0NC40OCAwbDIyLjI0LTIyLjI0YzEyLjI4LTEyLjI4IDEyLjI4LTMyLjE5IDAtNDQuNDhMMjQyLjcyIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGludFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44MiA0NTguMUw0OTQuOTcgMzUwLjc4Yy41Mi01LjU3IDEuMDMtMTEuMTYgMS4wMy0xNi44NyAwLTExMS43Ni05OS43OS0xNTMuMzQtMTQ2Ljc4LTMxMS44Mi03Ljk0LTI4Ljc4LTQ5LjQ0LTMwLjEyLTU4LjQ0IDAtMTUuNTIgNTIuMzQtMzYuODcgOTEuOTYtNTguNDkgMTI1LjY4TDQ1LjQ3IDMuMzdDMzguNDktMi4wNSAyOC40My0uOCAyMy4wMSA2LjE4TDMuMzcgMzEuNDVDLTIuMDUgMzguNDItLjggNDguNDcgNi4xOCA1My45bDU4OC4zNiA0NTQuNzNjNi45OCA1LjQzIDE3LjAzIDQuMTcgMjIuNDYtMi44MWwxOS42NC0yNS4yN2M1LjQxLTYuOTcgNC4xNi0xNy4wMi0yLjgyLTIyLjQ1ek0xNDQgMzMzLjkxQzE0NCA0MzIuMzUgMjIyLjcyIDUxMiAzMjAgNTEyYzQ0LjcxIDAgODUuMzctMTYuOTYgMTE2LjQtNDQuN0wxNjIuNzIgMjU1Ljc4Yy0xMS40MSAyMy41LTE4LjcyIDQ4LjM1LTE4LjcyIDc4LjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzNTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNS4yMiAyMi4wOWMtNy45NC0yOC43OC00OS40NC0zMC4xMi01OC40NCAwQzEwMC4wMSAxNzkuODUgMCAyMjIuNzIgMCAzMzMuOTEgMCA0MzIuMzUgNzguNzIgNTEyIDE3NiA1MTJzMTc2LTc5LjY1IDE3Ni0xNzguMDljMC0xMTEuNzUtOTkuNzktMTUzLjM0LTE0Ni43OC0zMTEuODJ6TTE3NiA0NDhjLTYxLjc1IDAtMTEyLTUwLjI1LTExMi0xMTIgMC04Ljg0IDcuMTYtMTYgMTYtMTZzMTYgNy4xNiAxNiAxNmMwIDQ0LjExIDM1Ljg5IDgwIDgwIDgwIDguODQgMCAxNiA3LjE2IDE2IDE2cy03LjE2IDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0zMy44IDE4OS43bDgwLTQ4YzExLjYtNi45IDI0IDcuNyAxNS40IDE4TDM0My42IDIwOGwzMy42IDQwLjNjOC43IDEwLjQtMy45IDI0LjgtMTUuNCAxOGwtODAtNDhjLTcuNy00LjctNy43LTE1LjkgMC0yMC42em0tMTYzLTMwYy04LjYtMTAuMyAzLjgtMjQuOSAxNS40LTE4bDgwIDQ4YzcuOCA0LjcgNy44IDE1LjkgMCAyMC42bC04MCA0OGMtMTEuNSA2LjgtMjQtNy42LTE1LjQtMThsMzMuNi00MC4zLTMzLjYtNDAuM3pNMjQ4IDI4OGM1MS45IDAgMTE1LjMgNDMuOCAxMjMuMiAxMDYuNyAxLjcgMTMuNi04IDI0LjYtMTcuNyAyMC40LTI1LjktMTEuMS02NC40LTE3LjQtMTA1LjUtMTcuNHMtNzkuNiA2LjMtMTA1LjUgMTcuNGMtOS44IDQuMi0xOS40LTctMTcuNy0yMC40QzEzMi43IDMzMS44IDE5Ni4xIDI4OCAyNDggMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2dnbGVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDY0SDE5MkM4NS45NjEgNjQgMCAxNDkuOTYxIDAgMjU2czg1Ljk2MSAxOTIgMTkyIDE5MmgxOTJjMTA2LjAzOSAwIDE5Mi04NS45NjEgMTkyLTE5MlM0OTAuMDM5IDY0IDM4NCA2NHpNNjQgMjU2YzAtNzAuNzQxIDU3LjI0OS0xMjggMTI4LTEyOCA3MC43NDEgMCAxMjggNTcuMjQ5IDEyOCAxMjggMCA3MC43NDEtNTcuMjQ5IDEyOC0xMjggMTI4LTcwLjc0MSAwLTEyOC01Ny4yNDktMTI4LTEyOHptMzIwIDEyOGgtNDguOTA1YzY1LjIxNy03Mi44NTggNjUuMjM2LTE4My4xMiAwLTI1NkgzODRjNzAuNzQxIDAgMTI4IDU3LjI0OSAxMjggMTI4IDAgNzAuNzQtNTcuMjQ5IDEyOC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2dnbGVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgNjRIMTkyQzg2IDY0IDAgMTUwIDAgMjU2czg2IDE5MiAxOTIgMTkyaDE5MmMxMDYgMCAxOTItODYgMTkyLTE5MlM0OTAgNjQgMzg0IDY0em0wIDMyMGMtNzAuOCAwLTEyOC01Ny4zLTEyOC0xMjggMC03MC44IDU3LjMtMTI4IDEyOC0xMjggNzAuOCAwIDEyOCA1Ny4zIDEyOCAxMjggMCA3MC44LTU3LjMgMTI4LTEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvaWxldFBhcGVyU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQsMTkyVjM2NC4xM2MwLDQxLjEyLTkuNzUsNjIuNzUtMzEuMTIsMTI2Ljg3QTE2LDE2LDAsMCwwLDQ4LDUxMkgzMjguODZhMzEuODcsMzEuODcsMCwwLDAsMzAuMzgtMjEuODdjOS4zMS0yNy44MywxOC01My4zNSwyMi4xOC04NS41NWwtMzE2LTI0NC4yNUM2NC41MywxNzAuNjYsNjQsMTgxLjE5LDY0LDE5MlpNNjMzLjgyLDQ1OC4wOWwtMTAyLTc4LjgxQzU3NS4yOCwzNjAuOTEsNjA4LDI4NC4zMiw2MDgsMTkyLDYwOCw4Niw1NjUsMCw1MTIsMHMtOTYsODYtOTYsMTkyYzAsNDIsNyw4MC40LDE4LjQzLDExMkwzODQsMjY1VjE5MmMwLTgzLjYyLDIzLjYzLTE1My41LDYwLjUtMTkySDE2MGMtMjMuMzMsMC00NC42MywxNi44My02MS4yNiw0NC41M0w0NS40NiwzLjM4QTE2LDE2LDAsMCwwLDIzLDYuMTlMMy4zNywzMS40NUExNiwxNiwwLDAsMCw2LjE4LDUzLjkxTDU5NC41NCw1MDguNjNBMTYsMTYsMCwwLDAsNjE3LDUwNS44MWwxOS42NC0yNS4yNkExNiwxNiwwLDAsMCw2MzMuODIsNDU4LjA5Wk01MTIsMjU2Yy0xNy42MywwLTMyLTI4LjYyLTMyLTY0czE0LjM3LTY0LDMyLTY0LDMyLDI4LjYzLDMyLDY0UzUyOS42MiwyNTYsNTEyLDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9pbGV0UGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBDNzQuOTggMCAzMiA4NS45NiAzMiAxOTJ2MTcyLjA3YzAgNDEuMTItOS44IDYyLjc3LTMxLjE3IDEyNi44N0MtMi42MiA1MDEuMyA1LjA5IDUxMiAxNi4wMSA1MTJoMjgwLjkyYzEzLjc3IDAgMjYtOC44MSAzMC4zNi0yMS44OCAxMi44My0zOC40OCAyNC43MS03Mi40IDI0LjcxLTEyNi4wNVYxOTJjMC04My42IDIzLjY3LTE1My41MiA2MC40NC0xOTJIMTI4ek05NiAyMjRjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2em02NCAwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnptNjQgMGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6bTY0IDBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2ek00ODAgMGMtNTMuMDIgMC05NiA4NS45Ni05NiAxOTJzNDIuOTggMTkyIDk2IDE5MiA5Ni04NS45NiA5Ni0xOTJTNTMzLjAyIDAgNDgwIDB6bTAgMjU2Yy0xNy42NyAwLTMyLTI4LjY1LTMyLTY0czE0LjMzLTY0IDMyLTY0IDMyIDI4LjY1IDMyIDY0LTE0LjMzIDY0LTMyIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZIMTZDNy4yIDAgMCA3LjIgMCAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMTZ2MTU2LjdDMTEuOCAyMTQuOCAwIDIyNi45IDAgMjQwYzAgNjcuMiAzNC42IDEyNi4yIDg2LjggMTYwLjVsLTIxLjQgNzAuMkM1OS4xIDQ5MS4yIDc0LjUgNTEyIDk2IDUxMmgxOTJjMjEuNSAwIDM2LjktMjAuOCAzMC42LTQxLjNsLTIxLjQtNzAuMkMzNDkuNCAzNjYuMiAzODQgMzA3LjIgMzg0IDI0MGMwLTEzLjEtMTEuOC0yNS4yLTMyLTM1LjNWNDhoMTZ6TTgwIDcyYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDg4Yy00LjQgMC04LTMuNi04LThWNzJ6bTExMiAyMDBjLTc3LjEgMC0xMzkuNi0xNC4zLTEzOS42LTMyczYyLjUtMzIgMTM5LjYtMzIgMTM5LjYgMTQuMyAxMzkuNiAzMi02Mi41IDMyLTEzOS42IDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb29sYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi42MyAyMTQuNjNsLTQ1LjI1LTQ1LjI1Yy02LTYtMTQuMTQtOS4zNy0yMi42My05LjM3SDM4NFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDE3NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY4MEg3Ny4yNWMtOC40OSAwLTE2LjYyIDMuMzctMjIuNjMgOS4zN0w5LjM3IDIxNC42M2MtNiA2LTkuMzcgMTQuMTQtOS4zNyAyMi42M1YzMjBoMTI4di0xNmMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNmgxMjh2LTE2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djE2aDEyOHYtODIuNzVjMC04LjQ4LTMuMzctMTYuNjItOS4zNy0yMi42MnpNMzIwIDE2MEgxOTJWOTZoMTI4djY0em02NCAyMDhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMTZIMTkydjE2YzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTE2SDB2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZIMzg0djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb29scyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDEuMSAzOTUuN0wzODQgMjc4LjZjLTIzLjEtMjMuMS01Ny42LTI3LjYtODUuNC0xMy45TDE5MiAxNTguMVY5Nkw2NCAwIDAgNjRsOTYgMTI4aDYyLjFsMTA2LjYgMTA2LjZjLTEzLjYgMjcuOC05LjIgNjIuMyAxMy45IDg1LjRsMTE3LjEgMTE3LjFjMTQuNiAxNC42IDM4LjIgMTQuNiA1Mi43IDBsNTIuNy01Mi43YzE0LjUtMTQuNiAxNC41LTM4LjIgMC01Mi43ek0zMzEuNyAyMjVjMjguMyAwIDU0LjkgMTEgNzQuOSAzMWwxOS40IDE5LjRjMTUuOC02LjkgMzAuOC0xNi41IDQzLjgtMjkuNSAzNy4xLTM3LjEgNDkuNy04OS4zIDM3LjktMTM2LjctMi4yLTktMTMuNS0xMi4xLTIwLjEtNS41bC03NC40IDc0LjQtNjcuOS0xMS4zTDMzNCA5OC45bDc0LjQtNzQuNGM2LjYtNi42IDMuNC0xNy45LTUuNy0yMC4yLTQ3LjQtMTEuNy05OS42LjktMTM2LjYgMzcuOS0yOC41IDI4LjUtNDEuOSA2Ni4xLTQxLjIgMTAzLjZsODIuMSA4Mi4xYzguMS0xLjkgMTYuNS0yLjkgMjQuNy0yLjl6bS0xMDMuOSA4MmwtNTYuNy01Ni43TDE4LjcgNDAyLjhjLTI1IDI1LTI1IDY1LjUgMCA5MC41czY1LjUgMjUgOTAuNSAwbDEyMy42LTEyMy42Yy03LjYtMTkuOS05LjktNDEuNi01LTYyLjd6TTY0IDQ3MmMtMTMuMiAwLTI0LTEwLjgtMjQtMjQgMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGMwIDEzLjItMTAuNyAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQzLjk4IDk2LjI1Yy0xMS4wMS00NS4yMi00Ny4xMS04Mi4wNi05Mi4wMS05My43Mi0zMi4xOS04LjM2LTYzIDUuMS04OS4xNCAyNC4zMy0zLjI1IDIuMzktNi45NiAzLjczLTEwLjUgNS40OGwyOC4zMiAxOC4yMWM3LjQyIDQuNzcgOS41OCAxNC42NyA0LjggMjIuMTEtNC40NiA2Ljk1LTE0LjI3IDkuODYtMjIuMTEgNC44TDE2Mi44MyAxMi44NGMtMjAuNy0xMC44NS00My4zOC0xNi40LTY2LjgxLTEwLjMxLTQ0LjkgMTEuNjctODEgNDguNS05Mi4wMSA5My43Mi0xMC4xMyA0MS42Mi0uNDIgODAuODEgMjEuNSAxMTAuNDMgMjMuMzYgMzEuNTcgMzIuNjggNjguNjYgMzYuMjkgMTA3LjM1IDQuNCA0Ny4xNiAxMC4zMyA5NC4xNiAyMC45NCAxNDAuMzJsNy44IDMzLjk1YzMuMTkgMTMuODcgMTUuNDkgMjMuNyAyOS42NyAyMy43IDEzLjk3IDAgMjYuMTUtOS41NSAyOS41NC0yMy4xNmwzNC40Ny0xMzguNDJjNC41Ni0xOC4zMiAyMC45Ni0zMS4xNiAzOS43Ni0zMS4xNnMzNS4yIDEyLjg1IDM5Ljc2IDMxLjE2bDM0LjQ3IDEzOC40MmMzLjM5IDEzLjYxIDE1LjU3IDIzLjE2IDI5LjU0IDIzLjE2IDE0LjE4IDAgMjYuNDgtOS44MyAyOS42Ny0yMy43bDcuOC0zMy45NWMxMC42MS00Ni4xNSAxNi41My05My4xNiAyMC45NC0xNDAuMzIgMy42MS0zOC43IDEyLjkzLTc1Ljc4IDM2LjI5LTEwNy4zNSAyMS45NS0yOS42MSAzMS42Ni02OC44IDIxLjUzLTExMC40M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9yYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwLjA1IDM2Ni40OGwxNy43Mi0yOS42NGgtMzUuNDZ6bTk5LjIxLTE2NkgzODIuNGwxOC40NiAzMC44MnpNNDggMEMyMS40OSAwIDAgMTQuMzMgMCAzMnY0NDhjMCAxNy42NyAyMS40OSAzMiA0OCAzMnM0OC0xNC4zMyA0OC0zMlYzMkM5NiAxNC4zMyA3NC41MSAwIDQ4IDB6bTE3Mi43NCAzMTEuNWgzNi44NWwtMTguNDYtMzAuODJ6bTE2MS43MSAwaDM2Ljg2bC0xOC40NS0zMC44ek0xMjggNDY0aDM4NFY0OEgxMjh6bTY2Ljc3LTI3OC4xM2EyMS4yMiAyMS4yMiAwIDAgMSAxOC40OC0xMC43MWg1OS40NWwyOS4xMy00OC43MWEyMS4xMyAyMS4xMyAwIDAgMSAxOC4yMi0xMC4zN0EyMC43NiAyMC43NiAwIDAgMSAzMzggMTI2LjI5bDI5LjI1IDQ4Ljg2aDU5LjUyYTIxLjEyIDIxLjEyIDAgMCAxIDE4LjEgMzJMNDE1LjYzIDI1NiA0NDUgMzA1YTIwLjY5IDIwLjY5IDAgMCAxIC4yNCAyMS4xMiAyMS4yNSAyMS4yNSAwIDAgMS0xOC40OCAxMC43MmgtNTkuNDdsLTI5LjEzIDQ4LjdhMjEuMTMgMjEuMTMgMCAwIDEtMTguMTYgMTAuNCAyMC43OSAyMC43OSAwIDAgMS0xOC0xMC4yMmwtMjkuMjUtNDguODhoLTU5LjVhMjEuMTEgMjEuMTEgMCAwIDEtMTguMS0zMkwyMjQuMzYgMjU2IDE5NSAyMDdhMjAuNyAyMC43IDAgMCAxLS4yMy0yMS4xM3pNNTkyIDBjLTI2LjUxIDAtNDggMTQuMzMtNDggMzJ2NDQ4YzAgMTcuNjcgMjEuNDkgMzIgNDggMzJzNDgtMTQuMzMgNDgtMzJWMzJjMC0xNy42Ny0yMS40OS0zMi00OC0zMnpNMzIwIDE0NS41M2wtMTcuNzggMjkuNjJoMzUuNDZ6bS02Mi40NSA1NWgtMzYuODFsMTguNDQgMzAuOHptMjkuNTggMTExaDY1Ljc5TDM4Ni4wOSAyNTZsLTMzLjIzLTU1LjUyaC02NS43OUwyNTMuOSAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvcmlpR2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzYuNDUgMzJoLTI0MC45QTMwMy4xNyAzMDMuMTcgMCAwIDEgMCAwdjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJ2NjRIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyNTZoMjU2djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyNTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2aC00OHYtNjRoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYwYTMwMy4xNyAzMDMuMTcgMCAwIDEtMTM1LjU1IDMyek0xMjggMTI4aDk2djY0aC05NnYtNjR6bTI1NiA2NGgtOTZ2LTY0aDk2djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFjdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAzMzZjLTQ4LjYgMC04OCAzOS40LTg4IDg4czM5LjQgODggODggODggODgtMzkuNCA4OC04OC0zOS40LTg4LTg4LTg4em0wIDExMmMtMTMuMjMgMC0yNC0xMC43Ny0yNC0yNHMxMC43Ny0yNCAyNC0yNCAyNCAxMC43NyAyNCAyNC0xMC43NyAyNC0yNCAyNHptODAtMjg4aC02NHYtNDAuMmMwLTE0LjEyIDQuNy0yNy43NiAxMy4xNS0zOC44NCA0LjQyLTUuOCAzLjU1LTE0LjA2LTEuMzItMTkuNDlMNTM0LjIgMzcuM2MtNi42Ni03LjQ1LTE4LjMyLTYuOTItMjQuNy43OEM0OTAuNTggNjAuOSA0ODAgODkuODEgNDgwIDExOS44VjE2MEgzNzcuNjdMMzIxLjU4IDI5LjE0QTQ3LjkxNCA0Ny45MTQgMCAwIDAgMjc3LjQ1IDBIMTQ0Yy0yNi40NyAwLTQ4IDIxLjUzLTQ4IDQ4djE0Ni41MmMtOC42My02LjczLTIwLjk2LTYuNDYtMjguODkgMS40N0wzNiAyMjcuMWMtOC41OSA4LjU5LTguNTkgMjIuNTIgMCAzMS4xMWw1LjA2IDUuMDZjLTQuOTkgOS4yNi04Ljk2IDE4LjgyLTExLjkxIDI4LjcySDIyYy0xMi4xNSAwLTIyIDkuODUtMjIgMjJ2NDRjMCAxMi4xNSA5Ljg1IDIyIDIyIDIyaDcuMTRjMi45NiA5LjkxIDYuOTIgMTkuNDYgMTEuOTEgMjguNzNsLTUuMDYgNS4wNmMtOC41OSA4LjU5LTguNTkgMjIuNTIgMCAzMS4xMUw2Ny4xIDQ3NmM4LjU5IDguNTkgMjIuNTIgOC41OSAzMS4xMSAwbDUuMDYtNS4wNmM5LjI2IDQuOTkgMTguODIgOC45NiAyOC43MiAxMS45MVY0OTBjMCAxMi4xNSA5Ljg1IDIyIDIyIDIyaDQ0YzEyLjE1IDAgMjItOS44NSAyMi0yMnYtNy4xNGM5LjktMi45NSAxOS40Ni02LjkyIDI4LjcyLTExLjkxbDUuMDYgNS4wNmM4LjU5IDguNTkgMjIuNTIgOC41OSAzMS4xMSAwbDMxLjExLTMxLjExYzguNTktOC41OSA4LjU5LTIyLjUyIDAtMzEuMTFsLTUuMDYtNS4wNmM0Ljk5LTkuMjYgOC45Ni0xOC44MiAxMS45MS0yOC43MkgzMzBjMTIuMTUgMCAyMi05Ljg1IDIyLTIydi02aDgwLjU0YzIxLjkxLTI4Ljk5IDU2LjMyLTQ4IDk1LjQ2LTQ4IDE4LjY0IDAgMzYuMDcgNC42MSA1MS44IDEyLjJsNTAuODItNTAuODJjNi02IDkuMzctMTQuMTQgOS4zNy0yMi42M1YxOTJjLjAxLTE3LjY3LTE0LjMyLTMyLTMxLjk5LTMyek0xNzYgNDE2Yy00NC4xOCAwLTgwLTM1LjgyLTgwLTgwczM1LjgyLTgwIDgwLTgwIDgwIDM1LjgyIDgwIDgwLTM1LjgyIDgwLTgwIDgwem0yMi0yNTZoLTM4VjY0aDEwNi44OWw0MS4xNSA5NkgxOTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYWRlbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjAuNiA5NkgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQzLjFjMCA2LjYgNS40IDEyIDEyIDEyaDg1LjFWNDA0YzAgNi42IDUuNCAxMiAxMiAxMmg1NC4zYzYuNiAwIDEyLTUuNCAxMi0xMlYxNjMuMWg4NS4xYzYuNiAwIDEyLTUuNCAxMi0xMlYxMDhjLjEtNi42LTUuMy0xMi0xMS45LTEyek02NDAgNDAzbC0yNC0yOTZjLS41LTYuMi01LjctMTEtMTItMTFoLTY1LjRjLTUuMSAwLTkuNyAzLjMtMTEuMyA4LjFsLTQzLjggMTI3LjFjLTcuMiAyMC42LTE2LjEgNTIuOC0xNi4xIDUyLjhoLS45cy04LjktMzIuMi0xNi4xLTUyLjhsLTQzLjgtMTI3LjFjLTEuNy00LjgtNi4yLTguMS0xMS4zLTguMWgtNjUuNGMtNi4yIDAtMTEuNCA0LjgtMTIgMTFsLTI0LjQgMjk2Yy0uNiA3IDQuOSAxMyAxMiAxM0gzNjBjNi4zIDAgMTEuNS00LjkgMTItMTEuMmw5LjEtMTMyLjljMS44LTI0LjIgMC01My43IDAtNTMuN2guOXMxMC43IDMzLjYgMTcuOSA1My43bDMwLjcgODQuN2MxLjcgNC43IDYuMiA3LjkgMTEuMyA3LjloNTAuM2M1LjEgMCA5LjYtMy4yIDExLjMtNy45bDMwLjctODQuN2M3LjItMjAuMSAxNy45LTUzLjcgMTcuOS01My43aC45cy0xLjggMjkuNSAwIDUzLjdsOS4xIDEzMi45Yy40IDYuMyA1LjcgMTEuMiAxMiAxMS4ySDYyOGM3IDAgMTIuNS02IDEyLTEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFmZmljTGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE5MmgtNjR2LTM3Ljg4YzM3LjItMTMuMjIgNjQtNDguMzggNjQtOTAuMTJoLTY0VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIOTZDNzguMzMgMCA2NCAxNC4zMyA2NCAzMnYzMkgwYzAgNDEuNzQgMjYuOCA3Ni45IDY0IDkwLjEyVjE5MkgwYzAgNDEuNzQgMjYuOCA3Ni45IDY0IDkwLjEyVjMyMEgwYzAgNDIuODQgMjguMjUgNzguNjkgNjYuOTkgOTEuMDVDNzkuNDIgNDY4LjcyIDEzMC42IDUxMiAxOTIgNTEyczExMi41OC00My4yOCAxMjUuMDEtMTAwLjk1QzM1NS43NSAzOTguNjkgMzg0IDM2Mi44NCAzODQgMzIwaC02NHYtMzcuODhjMzcuMi0xMy4yMiA2NC00OC4zOCA2NC05MC4xMnpNMTkyIDQxNmMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptMC0xMjhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTAtMTI4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCwzMjBINTQ0VjgwYTE2LDE2LDAsMCwwLTE2LTE2SDE2QTE2LDE2LDAsMCwwLDAsODBWMzY4YTE2LDE2LDAsMCwwLDE2LDE2SDY1LjYxYzcuODMtNTQuMjEsNTQtOTYsMTEwLjM5LTk2czEwMi41Niw0MS43OSwxMTAuMzksOTZINjI0YTE2LDE2LDAsMCwwLDE2LTE2VjMzNkExNiwxNiwwLDAsMCw2MjQsMzIwWk05NiwyNDMuNjhhMTc2LjI5LDE3Ni4yOSwwLDAsMC0zMiwyMC43MVYxMzZhOCw4LDAsMCwxLDgtOEg4OGE4LDgsMCwwLDEsOCw4Wm05Ni0xOC41NGMtNS4zMS0uNDktMTAuNTctMS4xNC0xNi0xLjE0cy0xMC42OS42NS0xNiwxLjE0VjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhabTk2LDM5LjI1YTE3Ni4yOSwxNzYuMjksMCwwLDAtMzItMjAuNzFWMTM2YTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOFpNMzg0LDMyMEgzNTJWMTM2YTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOFptOTYsMEg0NDhWMTM2YTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOFptLTMwNCwwYTgwLDgwLDAsMSwwLDgwLDgwQTgwLDgwLDAsMCwwLDE3NiwzMjBabTAsMTEyYTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDE3Niw0MzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NnYyNTZjMCA1MS44MTUtNjEuNjI0IDk2LTEzMC4wMjIgOTZsNjIuOTggNDkuNzIxQzM4Ni45MDUgNTAyLjQxNyAzODMuNTYyIDUxMiAzNzYgNTEySDcyYy03LjU3OCAwLTEwLjg5Mi05LjU5NC00Ljk1Ny0xNC4yNzlMMTMwLjAyMiA0NDhDNjEuODIgNDQ4IDAgNDAzLjk1NCAwIDM1MlY5NkMwIDQyLjk4MSA2NCAwIDEyOCAwaDE5MmM2NSAwIDEyOCA0Mi45ODEgMTI4IDk2em0tNDggMTM2VjEyMGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINzJjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMwNGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR6bS0xNzYgNjRjLTMwLjkyOCAwLTU2IDI1LjA3Mi01NiA1NnMyNS4wNzIgNTYgNTYgNTYgNTYtMjUuMDcyIDU2LTU2LTI1LjA3Mi01Ni01Ni01NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJTMzA1LjcgMCAyODggMHMtMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0yMjMuNS0xMi4xYy0yLjMtOC42LTExLTEzLjYtMTkuNi0xMS4zbC00ODAgMTI4Yy04LjUgMi4zLTEzLjYgMTEtMTEuMyAxOS42QzIuNSAxOTUuMyA4LjkgMjAwIDE2IDIwMGMxLjQgMCAyLjgtLjIgNC4xLS41TDI0MCAxNDAuOFYyMjRINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI3MnYtOTEuN2wyMjguMS02MC44YzguNi0yLjMgMTMuNi0xMS4xIDExLjQtMTkuNnpNMTc2IDM4NEg4MHYtOTZoOTZ2OTZ6bTE2MC05Nmg5NnY5NmgtOTZ2LTk2em0tMzIgMHY5NmgtOTZ2LTk2aDk2ek0xOTIgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFuc2dlbmRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjggMGgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS04MC43IDgwLjdDMjk0LjUgMTA0LjEgMjY4LjIgOTYgMjQwIDk2Yy0yOC4yIDAtNTQuNSA4LjEtNzYuNyAyMi4xbC0xNi41LTE2LjUgMTkuOC0xOS44YzQuNy00LjcgNC43LTEyLjMgMC0xN2wtMjguMy0yOC4zYy00LjctNC43LTEyLjMtNC43LTE3IDBsLTE5LjggMTkuOC0xOS0xOSAxNi45LTE2LjlDMTA3LjEgMTIuOSAxMDEuNyAwIDkxIDBIMTJDNS40IDAgMCA1LjQgMCAxMnY3OWMwIDEwLjcgMTIuOSAxNiAyMC41IDguNWwxNi45LTE2LjkgMTkgMTktMTkuOCAxOS44Yy00LjcgNC43LTQuNyAxMi4zIDAgMTdsMjguMyAyOC4zYzQuNyA0LjcgMTIuMyA0LjcgMTcgMGwxOS44LTE5LjggMTYuNSAxNi41QzEwNC4xIDE4NS41IDk2IDIxMS44IDk2IDI0MGMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWNDA4aC0zNmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgzNnYyOGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi0yOGgzNmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMzZ2LTI3LjZjNjQuMS0xNC42IDExMi03MS45IDExMi0xNDAuNCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDgwLjctODAuNyAxNi45IDE2LjljNy42IDcuNiAyMC41IDIuMiAyMC41LTguNVYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTI0MCAzMjBjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFuc2dlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIgMGgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS04MC43IDgwLjdDMTk4LjUgMTA0LjEgMTcyLjIgOTYgMTQ0IDk2IDY0LjUgOTYgMCAxNjAuNSAwIDI0MGMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWNDA4SDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djI4YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTI4aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtMjcuNmM2NC4xLTE0LjYgMTEyLTcxLjkgMTEyLTE0MC40IDAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsODAuNy04MC43IDE2LjkgMTYuOWM3LjYgNy42IDIwLjUgMi4yIDIwLjUtOC41VjEyYzAtNi42LTUuNC0xMi0xMi0xMnpNMTQ0IDMyMGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDQ2NGE0OCA0OCAwIDAgMCA0OCA0OGgyODhhNDggNDggMCAwIDAgNDgtNDhWMTI4SDMyem0yNzItMjU2YTE2IDE2IDAgMCAxIDMyIDB2MjI0YTE2IDE2IDAgMCAxLTMyIDB6bS05NiAwYTE2IDE2IDAgMCAxIDMyIDB2MjI0YTE2IDE2IDAgMCAxLTMyIDB6bS05NiAwYTE2IDE2IDAgMCAxIDMyIDB2MjI0YTE2IDE2IDAgMCAxLTMyIDB6TTQzMiAzMkgzMTJsLTkuNC0xOC43QTI0IDI0IDAgMCAwIDI4MS4xIDBIMTY2LjhhMjMuNzIgMjMuNzIgMCAwIDAtMjEuNCAxMy4zTDEzNiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhc2hSZXN0b3JlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDQ2NGE0OCA0OCAwIDAgMCA0OCA0OGgyODhhNDggNDggMCAwIDAgNDgtNDhWMTI4SDMyem05MS4zMS0xNzIuOGw4OS4zOC05NC4yNmExNS40MSAxNS40MSAwIDAgMSAyMi42MiAwbDg5LjM4IDk0LjI2YzEwLjA4IDEwLjYyIDIuOTQgMjguOC0xMS4zMiAyOC44SDI1NnYxMTJhMTYgMTYgMCAwIDEtMTYgMTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2VjMyMGgtNTcuMzdjLTE0LjI2IDAtMjEuNC0xOC4xOC0xMS4zMi0yOC44ek00MzIgMzJIMzEybC05LjQtMTguN0EyNCAyNCAwIDAgMCAyODEuMSAwSDE2Ni44YTIzLjcyIDIzLjcyIDAgMCAwLTIxLjQgMTMuM0wxMzYgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoUmVzdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01My4yIDQ2N2E0OCA0OCAwIDAgMCA0Ny45IDQ1aDI0NS44YTQ4IDQ4IDAgMCAwIDQ3LjktNDVMNDE2IDEyOEgzMnptNzAuMTEtMTc1LjhsODkuMzgtOTQuMjZhMTUuNDEgMTUuNDEgMCAwIDEgMjIuNjIgMGw4OS4zOCA5NC4yNmMxMC4wOCAxMC42MiAyLjk0IDI4LjgtMTEuMzIgMjguOEgyNTZ2MTEyYTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlYzMjBoLTU3LjM3Yy0xNC4yNiAwLTIxLjQtMTguMTgtMTEuMzItMjguOHpNNDMyIDMySDMxMmwtOS40LTE4LjdBMjQgMjQgMCAwIDAgMjgxLjEgMEgxNjYuOGEyMy43MiAyMy43MiAwIDAgMC0yMS40IDEzLjNMMTM2IDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgMzJIMzEybC05LjQtMTguN0EyNCAyNCAwIDAgMCAyODEuMSAwSDE2Ni44YTIzLjcyIDIzLjcyIDAgMCAwLTIxLjQgMTMuM0wxMzYgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6TTUzLjIgNDY3YTQ4IDQ4IDAgMCAwIDQ3LjkgNDVoMjQ1LjhhNDggNDggMCAwIDAgNDcuOS00NUw0MTYgMTI4SDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3OC4zMSAzNzguNDlMMjk4LjQyIDI4OGgzMC42M2M5LjAxIDAgMTYuOTgtNSAyMC43OC0xMy4wNiAzLjgtOC4wNCAyLjU1LTE3LjI2LTMuMjgtMjQuMDVMMjY4LjQyIDE2MGgyOC44OWM5LjEgMCAxNy4zLTUuMzUgMjAuODYtMTMuNjEgMy41Mi04LjEzIDEuODYtMTcuNTktNC4yNC0yNC4wOEwyMDMuNjYgNC44M2MtNi4wMy02LjQ1LTE3LjI4LTYuNDUtMjMuMzIgMEw3MC4wNiAxMjIuMzFjLTYuMSA2LjQ5LTcuNzUgMTUuOTUtNC4yNCAyNC4wOEM2OS4zOCAxNTQuNjUgNzcuNTkgMTYwIDg2LjY5IDE2MGgyOC44OWwtNzguMTQgOTAuOTFjLTUuODEgNi43OC03LjA2IDE1Ljk5LTMuMjcgMjQuMDRDMzcuOTcgMjgzIDQ1LjkzIDI4OCA1NC45NSAyODhoMzAuNjNMNS42OSAzNzguNDljLTYgNi43OS03LjM2IDE2LjA5LTMuNTYgMjQuMjYgMy43NSA4LjA1IDEyIDEzLjI1IDIxLjAxIDEzLjI1SDE2MHYyNC40NWwtMzAuMjkgNDguNGMtNS4zMiAxMC42NCAyLjQyIDIzLjE2IDE0LjMxIDIzLjE2aDk1Ljk2YzExLjg5IDAgMTkuNjMtMTIuNTIgMTQuMzEtMjMuMTZMMjI0IDQ0MC40NVY0MTZoMTM2Ljg2YzkuMDEgMCAxNy4yNi01LjIgMjEuMDEtMTMuMjUgMy44LTguMTcgMi40NC0xNy40Ny0zLjU2LTI0LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcm9waHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTUyIDY0SDQ0OFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxNTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQwSDI0QzEwLjcgNjQgMCA3NC43IDAgODh2NTZjMCAzNS43IDIyLjUgNzIuNCA2MS45IDEwMC43IDMxLjUgMjIuNyA2OS44IDM3LjEgMTEwIDQxLjdDMjAzLjMgMzM4LjUgMjQwIDM2MCAyNDAgMzYwdjcyaC00OGMtMzUuMyAwLTY0IDIwLjctNjQgNTZ2MTJjMCA2LjYgNS40IDEyIDEyIDEyaDI5NmM2LjYgMCAxMi01LjQgMTItMTJ2LTEyYzAtMzUuMy0yOC43LTU2LTY0LTU2aC00OHYtNzJzMzYuNy0yMS41IDY4LjEtNzMuNmM0MC4zLTQuNiA3OC42LTE5IDExMC00MS43IDM5LjMtMjguMyA2MS45LTY1IDYxLjktMTAwLjdWODhjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTk5LjMgMTkyLjhDNzQuOSAxNzUuMiA2NCAxNTUuNiA2NCAxNDR2LTE2aDY0LjJjMSAzMi42IDUuOCA2MS4yIDEyLjggODYuMi0xNS4xLTUuMi0yOS4yLTEyLjQtNDEuNy0yMS40ek01MTIgMTQ0YzAgMTYuMS0xNy43IDM2LjEtMzUuMyA0OC44LTEyLjUgOS0yNi43IDE2LjItNDEuOCAyMS40IDctMjUgMTEuOC01My42IDEyLjgtODYuMkg1MTJ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTG9hZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MC4yIDM3NS42YzIuMyA4LjUgMTEuMSAxMy42IDE5LjYgMTEuM2wyMTYuNC01OGM4LjUtMi4zIDEzLjYtMTEuMSAxMS4zLTE5LjZsLTQ5LjctMTg1LjVjLTIuMy04LjUtMTEuMS0xMy42LTE5LjYtMTEuM0wxNTEgMTMzLjNsMjQuOCA5Mi43LTYxLjggMTYuNS0yNC44LTkyLjctNzcuMyAyMC43QzMuNCAxNzIuOC0xLjcgMTgxLjYuNiAxOTAuMWw0OS42IDE4NS41ek0zODQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzIzLjZMNS45IDQ1MGMtNC4zIDEuMi02LjggNS42LTUuNiA5LjhsMTIuNiA0Ni4zYzEuMiA0LjMgNS42IDYuOCA5LjggNS42bDM5My43LTEwNy40QzQxOC44IDQ2NC4xIDQ2Ny42IDUxMiA1MjggNTEyYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyVjBIMzg0em0xNDQgNDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tNb25zdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAyMjRoLTE2di02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC03My42TDQxOS4yMiAyNC4wMkE2NC4wMjUgNjQuMDI1IDAgMCAwIDM2OS4yNCAwSDI1NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5Nkg0OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2ODBIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2LjcyYzI5LjIxLTM4LjY1IDc1LjEtNjQgMTI3LjI4LTY0czk4LjA3IDI1LjM1IDEyNy4yOCA2NGg2NS40NWMyOS4yMS0zOC42NSA3NS4xLTY0IDEyNy4yOC02NHM5OC4wNyAyNS4zNSAxMjcuMjggNjRINjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTMzNi05NlY2NGg4MS4yNGw1MS4yIDY0SDI4OHptMzA0IDIyNGgtNS4yYy0yLjItNy4zMy01LjA3LTE0LjI4LTguNjUtMjAuODlsMy42Ny0zLjY3YzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNsLTIyLjYzLTIyLjYzYy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0zLjY3IDMuNjdBMTEwLjg1IDExMC44NSAwIDAgMCA1MTIgMjc3LjJWMjcyYzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NS4yYy03LjMzIDIuMi0xNC4yOCA1LjA3LTIwLjg5IDguNjVsLTMuNjctMy42N2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMjIuNjMgMjIuNjNjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMy42NyAzLjY3QTExMC44NSAxMTAuODUgMCAwIDAgMzczLjIgMzUySDM2OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNS4yYzIuMiA3LjMzIDUuMDcgMTQuMjggOC42NSAyMC44OWwtMy42NyAzLjY3Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMy42Ny0zLjY3YzYuNjEgMy41NyAxMy41NyA2LjQ1IDIwLjkgOC42NXY1LjJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTUuMmM3LjMzLTIuMiAxNC4yOC01LjA3IDIwLjktOC42NWwzLjY3IDMuNjdjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0zLjY3LTMuNjdhMTEwLjg1IDExMC44NSAwIDAgMCA4LjY1LTIwLjg5aDUuMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjLS4wMi04Ljg0LTcuMTgtMTYtMTYuMDItMTZ6bS0xMTIgODBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bS0yMDgtODBoLTUuMmMtMi4yLTcuMzMtNS4wNy0xNC4yOC04LjY1LTIwLjg5bDMuNjctMy42N2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0yMi42My0yMi42M2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMy42NyAzLjY3QTExMC44NSAxMTAuODUgMCAwIDAgMTkyIDI3Ny4yVjI3MmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djUuMmMtNy4zMyAyLjItMTQuMjggNS4wNy0yMC44OSA4LjY1bC0zLjY3LTMuNjdjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBMNTguMTggMzA0LjhjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMy42NyAzLjY3YTExMC44NSAxMTAuODUgMCAwIDAtOC42NSAyMC44OUg0OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNS4yYzIuMiA3LjMzIDUuMDcgMTQuMjggOC42NSAyMC44OWwtMy42NyAzLjY3Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMy42Ny0zLjY3YzYuNjEgMy41NyAxMy41NyA2LjQ1IDIwLjkgOC42NXY1LjJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTUuMmM3LjMzLTIuMiAxNC4yOC01LjA3IDIwLjktOC42NWwzLjY3IDMuNjdjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0zLjY3LTMuNjdhMTEwLjg1IDExMC44NSAwIDAgMCA4LjY1LTIwLjg5aDUuMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJDMjg4IDM1OS4xNiAyODAuODQgMzUyIDI3MiAzNTJ6bS0xMTIgODBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTW92aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyMS4zIDIzNy4zbC01OC41LTU4LjVjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdINDgwVjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjR2MzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwIDI2LjMgMCA0OS40LTEyLjkgNjQtMzIuNCAxNC42IDE5LjYgMzcuNyAzMi40IDY0IDMyLjQgNDQuMiAwIDgwLTM1LjggODAtODAgMC01LjUtLjYtMTAuOC0xLjYtMTZoMTYzLjJjLTEuMSA1LjItMS42IDEwLjUtMS42IDE2IDAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC01LjUtLjYtMTAuOC0xLjYtMTZINjI0YzguOCAwIDE2LTcuMiAxNi0xNnYtODUuNWMwLTE3LTYuNy0zMy4yLTE4LjctNDUuMnpNODAgNDMyYy0xNy42IDAtMzItMTQuNC0zMi0zMnMxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzItMTQuNCAzMi0zMiAzMnptMTI4IDBjLTE3LjYgMC0zMi0xNC40LTMyLTMyczE0LjQtMzIgMzItMzIgMzIgMTQuNCAzMiAzMi0xNC40IDMyLTMyIDMyem0yNzItMjI0aDM3LjVjNC4zIDAgOC4zIDEuNyAxMS4zIDQuN2w0My4zIDQzLjNINDgwdi00OHptNDggMjI0Yy0xNy42IDAtMzItMTQuNC0zMi0zMnMxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzItMTQuNCAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tQaWNrdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDI4OGgtMTZ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTQ4TDQxOS4yMiA1Ni4wMkE2NC4wMjUgNjQuMDI1IDAgMCAwIDM2OS4yNCAzMkgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4SDY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OS42MWMtLjc2IDUuMjctMS42MSAxMC41Mi0xLjYxIDE2IDAgNjEuODYgNTAuMTQgMTEyIDExMiAxMTJzMTEyLTUwLjE0IDExMi0xMTJjMC01LjQ4LS44NS0xMC43My0xLjYxLTE2aDY3LjIzYy0uNzYgNS4yNy0xLjYxIDEwLjUyLTEuNjEgMTYgMCA2MS44NiA1MC4xNCAxMTIgMTEyIDExMnMxMTItNTAuMTQgMTEyLTExMmMwLTUuNDgtLjg1LTEwLjczLTEuNjEtMTZINjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNMjg4IDk2aDgxLjI0bDc2LjggOTZIMjg4Vjk2ek0xNzYgNDE2Yy0yNi40NyAwLTQ4LTIxLjUzLTQ4LTQ4czIxLjUzLTQ4IDQ4LTQ4IDQ4IDIxLjUzIDQ4IDQ4LTIxLjUzIDQ4LTQ4IDQ4em0yODggMGMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDM1MmgtMTZWMjQzLjljMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOUw0OTQgMTEwLjFjLTktOS0yMS4yLTE0LjEtMzMuOS0xNC4xSDQxNlY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh2MzIwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDE2YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoMTI4YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTE2MCA0NjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0zMjAgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTgwLTIwOEg0MTZWMTQ0aDQ0LjFsOTkuOSA5OS45VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHNoaXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMS4yIDk2LjVMNDM2LjUgMEM0MTYuNCAyNy44IDM3MS45IDQ3LjIgMzIwIDQ3LjJTMjIzLjYgMjcuOCAyMDMuNSAwTDguOCA5Ni41Yy03LjkgNC0xMS4xIDEzLjYtNy4yIDIxLjVsNTcuMiAxMTQuNWM0IDcuOSAxMy42IDExLjEgMjEuNSA3LjJsNTYuNi0yNy43YzEwLjYtNS4yIDIzIDIuNSAyMyAxNC40VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI2LjNjMC0xMS44IDEyLjQtMTkuNiAyMy0xNC40bDU2LjYgMjcuN2M3LjkgNCAxNy41LjggMjEuNS03LjJMNjM4LjMgMTE4YzQtNy45LjgtMTcuNi03LjEtMjEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMzcgMTAzLjgyMmMxMzguNTMyLTEzOC41MzIgMzYyLjkzNi0xMzguMzI2IDUwMS4yNjIgMCA2LjA3OCA2LjA3OCA3LjA3NCAxNS40OTYgMi41ODMgMjIuNjgxbC00My4yMTQgNjkuMTM4YTE4LjMzMiAxOC4zMzIgMCAwIDEtMjIuMzU2IDcuMzA1bC04Ni40MjItMzQuNTY5YTE4LjMzNSAxOC4zMzUgMCAwIDEtMTEuNDM0LTE4Ljg0NkwzNTEuNzQxIDkwYy02Mi4xNDUtMjIuNDU0LTEzMC42MzYtMjEuOTg2LTE5MS40ODMgMGw1Ljk1MyA1OS41MzJhMTguMzMxIDE4LjMzMSAwIDAgMS0xMS40MzQgMTguODQ2bC04Ni40MjMgMzQuNTY4YTE4LjMzNCAxOC4zMzQgMCAwIDEtMjIuMzU2LTcuMzA1TDIuNzg3IDEyNi41MDJhMTguMzMzIDE4LjMzMyAwIDAgMSAyLjU4My0yMi42OHpNOTYgMzA4di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDQ0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDk2di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDkyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpNOTYgNTAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDQ0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMjg4IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjMyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkyIDBINDhBNDggNDggMCAwIDAgMCA0OHYzMjBhNDggNDggMCAwIDAgNDggNDhoMjQwdjMySDExMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2SDM1MnYtMzJoMjQwYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjQ4YTQ4IDQ4IDAgMCAwLTQ4LTQ4em0tMTYgMzUySDY0VjY0aDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW1icmVsbGFCZWFjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTUuMzggMTM2LjlsMTAyLjExIDM3LjE4YzM1LjE5LTgxLjU0IDg2LjIxLTE0NC4yOSAxMzktMTczLjctOTUuODgtNC44OS0xODguNzggMzYuOTYtMjQ4LjUzIDExMS44LTYuNjkgOC40LTIuNjYgMjEuMDUgNy40MiAyNC43MnptMTMyLjI1IDQ4LjE2bDIzOC40OCA4Ni44M2MzNS43Ni0xMjEuMzggMTguNy0yMzEuNjYtNDIuNjMtMjUzLjk4LTcuNC0yLjctMTUuMTMtNC0yMy4wOS00LTU4LjAyLjAxLTEyOC4yNyA2OS4xNy0xNzIuNzYgMTcxLjE1ek01MjEuNDggNjAuNWM2LjIyIDE2LjMgMTAuODMgMzQuNiAxMy4yIDU1LjE5IDUuNzQgNDkuODktMS40MiAxMDguMjMtMTguOTUgMTY2Ljk4bDEwMi42MiAzNy4zNmMxMC4wOSAzLjY3IDIxLjMxLTMuNDMgMjEuNTctMTQuMTcgMi4zMi05NS42OS00MS45MS0xODcuNDQtMTE4LjQ0LTI0NS4zNnpNNTYwIDQ0Ny45OEgzMjEuMDZMMzg2IDI2OS41bC02MC4xNC0yMS45LTcyLjkgMjAwLjM3SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNi4wMXYzMi4wMUMwIDUwNC44MyA3LjE2IDUxMiAxNiA1MTJoNTQ0YzguODQgMCAxNi03LjE3IDE2LTE2LjAxdi0zMi4wMWMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW1icmVsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjcgMjgwLjhDNTQ3LjEgMTQ0LjUgNDM3LjMgNjIuNiAzMjAgNDkuOVYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnYxNy45QzEzOC4zIDYyLjYgMjkuNSAxNDQuNS4zIDI4MC44Yy0yLjIgMTAuMSA4LjUgMjEuMyAxOC43IDExLjQgNTItNTUgMTA3LjctNTIuNCAxNTguNiAzNyA1LjMgOS41IDE0LjkgOC42IDE5LjcgMCAyMC4yLTM1LjQgNDQuOS03My4yIDkwLjctNzMuMiA1OC41IDAgODguMiA2OC44IDkwLjcgNzMuMiA0LjggOC42IDE0LjQgOS41IDE5LjcgMCA1MS04OS41IDEwNy4xLTkxLjQgMTU4LjYtMzcgMTAuMyAxMCAyMC45LTEuMyAxOC43LTExLjR6TTI1NiAzMDEuN1Y0MzJjMCA4LjgtNy4yIDE2LTE2IDE2LTcuOCAwLTEzLjItNS4zLTE1LjEtMTAuNy01LjktMTYuNy0yNC4xLTI1LjQtNDAuOC0xOS41LTE2LjcgNS45LTI1LjQgMjQuMi0xOS41IDQwLjggMTEuMiAzMS45IDQxLjYgNTMuMyA3NS40IDUzLjMgNDQuMSAwIDgwLTM1LjkgODAtODBWMzAxLjZjLTkuMS03LjktMTkuOC0xMy42LTMyLTEzLjYtMTIuMy4xLTIyLjQgNC44LTMyIDEzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuZGVybGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA2NGgzMnYxNjBjMCA4OC4yMiA3MS43OCAxNjAgMTYwIDE2MHMxNjAtNzEuNzggMTYwLTE2MFY2NGgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNmExNiAxNiAwIDAgMC0xNi0xNkgyNzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJ2MTYwYTgwIDgwIDAgMCAxLTE2MCAwVjY0aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2YTE2IDE2IDAgMCAwLTE2LTE2SDMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em00MDAgMzg0SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuZG9BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjU0NSA4Yy02Ni4yNjkuMTE5LTEyNi40MzggMjYuMjMzLTE3MC44NiA2OC42ODVMNDguOTcxIDQwLjk3MUMzMy44NTEgMjUuODUxIDggMzYuNTU5IDggNTcuOTQxVjE5MmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTM0LjA1OWMyMS4zODIgMCAzMi4wOS0yNS44NTEgMTYuOTcxLTQwLjk3MWwtNDEuNzUtNDEuNzVjMzAuODY0LTI4Ljg5OSA3MC44MDEtNDQuOTA3IDExMy4yMy00NS4yNzMgOTIuMzk4LS43OTggMTcwLjI4MyA3My45NzcgMTY5LjQ4NCAxNjkuNDQyQzQyMy4yMzYgMzQ4LjAwOSAzNDkuODE2IDQyNCAyNTYgNDI0Yy00MS4xMjcgMC03OS45OTctMTQuNjc4LTExMC42My00MS41NTYtNC43NDMtNC4xNjEtMTEuOTA2LTMuOTA4LTE2LjM2OC41NTNMODkuMzQgNDIyLjY1OWMtNC44NzIgNC44NzItNC42MzEgMTIuODE1LjQ4MiAxNy40MzNDMTMzLjc5OCA0NzkuODEzIDE5Mi4wNzQgNTA0IDI1NiA1MDRjMTM2Ljk2NiAwIDI0Ny45OTktMTExLjAzMyAyNDgtMjQ3Ljk5OEM1MDQuMDAxIDExOS4xOTMgMzkyLjM1NCA3Ljc1NSAyNTUuNTQ1IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEyLjMzMyAyMjQuMzMzSDEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEyVjEyQzAgNS4zNzMgNS4zNzMgMCAxMiAwaDQ4YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NzguMTEyQzExNy43NzMgMzkuMjc5IDE4NC4yNiA3LjQ3IDI1OC4xNzUgOC4wMDdjMTM2LjkwNi45OTQgMjQ2LjQ0OCAxMTEuNjIzIDI0Ni4xNTcgMjQ4LjUzMkM1MDQuMDQxIDM5My4yNTggMzkzLjEyIDUwNCAyNTYuMzMzIDUwNGMtNjQuMDg5IDAtMTIyLjQ5Ni0yNC4zMTMtMTY2LjUxLTY0LjIxNS01LjA5OS00LjYyMi01LjMzNC0xMi41NTQtLjQ2Ny0xNy40MmwzMy45NjctMzMuOTY3YzQuNDc0LTQuNDc0IDExLjY2Mi00LjcxNyAxNi40MDEtLjUyNUMxNzAuNzYgNDE1LjMzNiAyMTEuNTggNDMyIDI1Ni4zMzMgNDMyYzk3LjI2OCAwIDE3Ni03OC43MTYgMTc2LTE3NiAwLTk3LjI2Ny03OC43MTYtMTc2LTE3Ni0xNzYtNTguNDk2IDAtMTEwLjI4IDI4LjQ3Ni0xNDIuMjc0IDcyLjMzM2g5OC4yNzRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbml2ZXJzYWxBY2Nlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YzExNC45NTMgMCAyMDggOTMuMDI5IDIwOCAyMDggMCAxMTQuOTUzLTkzLjAyOSAyMDgtMjA4IDIwOC0xMTQuOTUzIDAtMjA4LTkzLjAyOS0yMDgtMjA4IDAtMTE0Ljk1MyA5My4wMjktMjA4IDIwOC0yMDhtMC00MEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTAgNTZDMTQ5Ljk2MSA2NCA2NCAxNDkuOTYxIDY0IDI1NnM4NS45NjEgMTkyIDE5MiAxOTIgMTkyLTg1Ljk2MSAxOTItMTkyUzM2Mi4wMzkgNjQgMjU2IDY0em0wIDQ0YzE5Ljg4MiAwIDM2IDE2LjExOCAzNiAzNnMtMTYuMTE4IDM2LTM2IDM2LTM2LTE2LjExOC0zNi0zNiAxNi4xMTgtMzYgMzYtMzZ6bTExNy43NDEgOTguMDIzYy0yOC43MTIgNi43NzktNTUuNTExIDEyLjc0OC04Mi4xNCAxNS44MDcuODUxIDEwMS4wMjMgMTIuMzA2IDEyMy4wNTIgMjUuMDM3IDE1NS42MjEgMy42MTcgOS4yNi0uOTU3IDE5LjY5OC0xMC4yMTcgMjMuMzE1LTkuMjYxIDMuNjE3LTE5LjY5OS0uOTU3LTIzLjMxNi0xMC4yMTctOC43MDUtMjIuMzA4LTE3LjA4Ni00MC42MzYtMjIuMjYxLTc4LjU0OWgtOS42ODZjLTUuMTY3IDM3Ljg1MS0xMy41MzQgNTYuMjA4LTIyLjI2MiA3OC41NDktMy42MTUgOS4yNTUtMTQuMDUgMTMuODM2LTIzLjMxNSAxMC4yMTctOS4yNi0zLjYxNy0xMy44MzQtMTQuMDU2LTEwLjIxNy0yMy4zMTUgMTIuNzEzLTMyLjU0MSAyNC4xODUtNTQuNTQxIDI1LjAzNy0xNTUuNjIxLTI2LjYyOS0zLjA1OC01My40MjgtOS4wMjctODIuMTQxLTE1LjgwNy04LjYtMi4wMzEtMTMuOTI2LTEwLjY0OC0xMS44OTUtMTkuMjQ5czEwLjY0Ny0xMy45MjYgMTkuMjQ5LTExLjg5NWM5Ni42ODYgMjIuODI5IDEyNC4yODMgMjIuNzgzIDIyMC43NzUgMCA4LjU5OS0yLjAzIDE3LjIxOCAzLjI5NCAxOS4yNDkgMTEuODk1IDIuMDI5IDguNjAxLTMuMjk3IDE3LjIxOS0xMS44OTcgMTkuMjQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbml2ZXJzaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAxMjh2MTZhOCA4IDAgMCAxLTggOGgtMjR2MTJjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg2MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMTJIMjRhOCA4IDAgMCAxLTgtOHYtMTZhOCA4IDAgMCAxIDQuOTQxLTcuMzkybDIzMi04OGE3Ljk5NiA3Ljk5NiAwIDAgMSA2LjExOCAwbDIzMiA4OEE4IDggMCAwIDEgNDk2IDEyOHptLTI0IDMwNEg0MGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YTggOCAwIDAgMCA4IDhoNDY0YTggOCAwIDAgMCA4LTh2LTE2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNOTYgMTkydjE5Mkg2MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyMGg0MTZ2LTIwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTM2VjE5MmgtNjR2MTkyaC02NFYxOTJoLTY0djE5MmgtNjRWMTkySDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LjA4MyA0MDUuOTA3YzQuNjg2IDQuNjg2IDQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwtNDQuNjc0IDQ0LjY3NGMtNTkuMjYzIDU5LjI2Mi0xNTUuNjkzIDU5LjI2Ni0yMTQuOTYxIDAtNTkuMjY0LTU5LjI2NS01OS4yNjQtMTU1LjY5NiAwLTIxNC45Nmw0NC42NzUtNDQuNjc1YzQuNjg2LTQuNjg2IDEyLjI4NC00LjY4NiAxNi45NzEgMGwzOS41OTggMzkuNTk4YzQuNjg2IDQuNjg2IDQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwtNDQuNjc1IDQ0LjY3NGMtMjguMDcyIDI4LjA3My0yOC4wNzIgNzMuNzUgMCAxMDEuODIzIDI4LjA3MiAyOC4wNzIgNzMuNzUgMjguMDczIDEwMS44MjQgMGw0NC42NzQtNDQuNjc0YzQuNjg2LTQuNjg2IDEyLjI4NC00LjY4NiAxNi45NzEgMGwzOS41OTcgMzkuNTk4em0tNTYuNTY4LTI2MC4yMTZjNC42ODYgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3MSAwbDQ0LjY3NC00NC42NzRjMjguMDcyLTI4LjA3NSA3My43NS0yOC4wNzMgMTAxLjgyNCAwIDI4LjA3MiAyOC4wNzMgMjguMDcyIDczLjc1IDAgMTAxLjgyM2wtNDQuNjc1IDQ0LjY3NGMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDM5LjU5OCAzOS41OThjNC42ODYgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3MSAwbDQ0LjY3NS00NC42NzVjNTkuMjY1LTU5LjI2NSA1OS4yNjUtMTU1LjY5NSAwLTIxNC45Ni01OS4yNjYtNTkuMjY0LTE1NS42OTUtNTkuMjY0LTIxNC45NjEgMGwtNDQuNjc0IDQ0LjY3NGMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDM5LjU5NyAzOS41OTh6bTIzNC44MjggMzU5LjI4bDIyLjYyNy0yMi42MjdjOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxTDYzLjU5OCA3LjAyOWMtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwTDcuMDI5IDI5LjY1N2MtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY5IDAgMzMuOTQxbDQ0MS4zNzMgNDQxLjM3M2M5LjM3MyA5LjM3MiAyNC41NjkgOS4zNzIgMzMuOTQxIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVubG9ja0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMjU2SDE1MlYxNTIuOWMwLTM5LjYgMzEuNy03Mi41IDcxLjMtNzIuOSA0MC0uNCA3Mi43IDMyLjEgNzIuNyA3MnYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMTZDMzc2IDY4IDMwNy41LS4zIDIyMy41IDAgMTM5LjUuMyA3MiA2OS41IDcyIDE1My41VjI1Nkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTYwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI2NCA0MDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBzLTQwLTE3LjktNDAtNDB2LTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVubG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMjU2SDE1MlYxNTIuOWMwLTM5LjYgMzEuNy03Mi41IDcxLjMtNzIuOSA0MC0uNCA3Mi43IDMyLjEgNzIuNyA3MnYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMTZDMzc2IDY4IDMwNy41LS4zIDIyMy41IDAgMTM5LjUuMyA3MiA2OS41IDcyIDE1My41VjI1Nkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTYwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTYgMzg0aC04MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTkyaC04Ny43Yy0xNy44IDAtMjYuNy0yMS41LTE0LjEtMzQuMUwyNDIuMyA1LjdjNy41LTcuNSAxOS44LTcuNSAyNy4zIDBsMTUyLjIgMTUyLjJjMTIuNiAxMi42IDMuNyAzNC4xLTE0LjEgMzQuMUgzMjB2MTY4YzAgMTMuMy0xMC43IDI0LTI0IDI0em0yMTYtOHYxMTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjM3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxMzZ2OGMwIDMwLjkgMjUuMSA1NiA1NiA1Nmg4MGMzMC45IDAgNTYtMjUuMSA1Ni01NnYtOGgxMzZjMTMuMyAwIDI0IDEwLjcgMjQgMjR6bS0xMjQgODhjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHptNjQgMGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjAgOSAyMCAyMCAyMCAyMC05IDIwLTIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQWx0U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjggNDU4LjFMMzg5LjYgMjY5LjNDNDMzLjggMjQ0LjcgNDY0IDE5OC4xIDQ2NCAxNDQgNDY0IDY0LjUgMzk5LjUgMCAzMjAgMGMtNjcuMSAwLTEyMyA0Ni4xLTEzOSAxMDguMkw0NS41IDMuNEMzOC41LTIgMjguNS0uOCAyMyA2LjJMMy40IDMxLjRjLTUuNCA3LTQuMiAxNyAyLjggMjIuNGw1ODguNCA0NTQuN2M3IDUuNCAxNyA0LjIgMjIuNS0yLjhsMTkuNi0yNS4zYzUuNC02LjggNC4xLTE2LjktMi45LTIyLjN6TTE5OC40IDMyMEMxMjQuMiAzMjAgNjQgMzgwLjIgNjQgNDU0LjR2OS42YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM4Mi4yTDI0NS44IDMyMGgtNDcuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMjg4Yzc5LjUgMCAxNDQtNjQuNSAxNDQtMTQ0UzMzNS41IDAgMjU2IDAgMTEyIDY0LjUgMTEyIDE0NHM2NC41IDE0NCAxNDQgMTQ0em0xMjggMzJoLTU1LjFjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZIMTI4QzU3LjMgMzIwIDAgMzc3LjMgMCA0NDh2MTZjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0xNmMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckFzdHJvbmF1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAyMjRoMTMuNWMyNC43IDU2LjUgODAuOSA5NiAxNDYuNSA5NnMxMjEuOC0zOS41IDE0Ni41LTk2SDM4NGM4LjggMCAxNi03LjIgMTYtMTZ2LTk2YzAtOC44LTcuMi0xNi0xNi0xNmgtMTMuNUMzNDUuOCAzOS41IDI4OS42IDAgMjI0IDBTMTAyLjIgMzkuNSA3Ny41IDk2SDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2em00MC04OGMwLTIyLjEgMjEuNS00MCA0OC00MGgxNDRjMjYuNSAwIDQ4IDE3LjkgNDggNDB2MjRjMCA1My00MyA5Ni05NiA5NmgtNDhjLTUzIDAtOTYtNDMtOTYtOTZ2LTI0em03MiA3MmwxMi0zNiAzNi0xMi0zNi0xMi0xMi0zNi0xMiAzNi0zNiAxMiAzNiAxMiAxMiAzNnptMTUxLjYgMTEzLjRDMjk3LjcgMzQwLjcgMjYyLjIgMzUyIDIyNCAzNTJzLTczLjctMTEuMy0xMDMuNi0zMC42QzUyLjkgMzI4LjUgMCAzODUgMCA0NTQuNHY5LjZjMCAyNi41IDIxLjUgNDggNDggNDhoODB2LTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGg4MGMyNi41IDAgNDgtMjEuNSA0OC00OHYtOS42YzAtNjkuNC01Mi45LTEyNS45LTEyMC40LTEzM3pNMjcyIDQ0OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNiAxNi03LjIgMTYtMTYtNy4yLTE2LTE2LTE2em0tOTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2djQ4aDMydi00OGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHptODkuNiAzMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDEuNmMwLTc0LjItNjAuMi0xMzQuNC0xMzQuNC0xMzQuNHptMzIzLTEyOC40bC0yNy44LTI4LjFjLTQuNi00LjctMTIuMS00LjctMTYuOC0uMWwtMTA0LjggMTA0LTQ1LjUtNDUuOGMtNC42LTQuNy0xMi4xLTQuNy0xNi44LS4xbC0yOC4xIDI3LjljLTQuNyA0LjYtNC43IDEyLjEtLjEgMTYuOGw4MS43IDgyLjNjNC42IDQuNyAxMi4xIDQuNyAxNi44LjFsMTQxLjMtMTQwLjJjNC42LTQuNyA0LjctMTIuMi4xLTE2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA5NmM0OC42IDAgODggMzkuNCA4OCA4OHMtMzkuNCA4OC04OCA4OC04OC0zOS40LTg4LTg4IDM5LjQtODggODgtODh6bTAgMzQ0Yy01OC43IDAtMTExLjMtMjYuNi0xNDYuNS02OC4yIDE4LjgtMzUuNCA1NS42LTU5LjggOTguNS01OS44IDIuNCAwIDQuOC40IDcuMSAxLjEgMTMgNC4yIDI2LjYgNi45IDQwLjkgNi45IDE0LjMgMCAyOC0yLjcgNDAuOS02LjkgMi4zLS43IDQuNy0xLjEgNy4xLTEuMSA0Mi45IDAgNzkuNyAyNC40IDk4LjUgNTkuOEMzNTkuMyA0MjEuNCAzMDYuNyA0NDggMjQ4IDQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyMjRjLTc5LjYgMC0xNDQgNjQuNC0xNDQgMTQ0czY0LjQgMTQ0IDE0NCAxNDQgMTQ0LTY0LjQgMTQ0LTE0NC02NC40LTE0NC0xNDQtMTQ0em02NCAxNTAuM2MwIDUuMy00LjQgOS43LTkuNyA5LjdoLTYwLjZjLTUuMyAwLTkuNy00LjQtOS43LTkuN3YtNzYuNmMwLTUuMyA0LjQtOS43IDkuNy05LjdoMTIuNmM1LjMgMCA5LjcgNC40IDkuNyA5LjdWMzUyaDM4LjNjNS4zIDAgOS43IDQuNCA5LjcgOS43djEyLjZ6TTMyMCAzNjhjMC0yNy44IDYuNy01NC4xIDE4LjItNzcuNS04LTEuNS0xNi4yLTIuNS0yNC42LTIuNWgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM0Ny4xYy00NS4zLTMxLjktNzUuMS04NC41LTc1LjEtMTQ0em0tOTYtMTEyYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckNvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTAuNSAzNzMuM2MyLjYtMTQuMSAyLjYtMjguNSAwLTQyLjZsMjUuOC0xNC45YzMtMS43IDQuMy01LjIgMy4zLTguNS02LjctMjEuNi0xOC4yLTQxLjItMzMuMi01Ny40LTIuMy0yLjUtNi0zLjEtOS0xLjRsLTI1LjggMTQuOWMtMTAuOS05LjMtMjMuNC0xNi41LTM2LjktMjEuM3YtMjkuOGMwLTMuNC0yLjQtNi40LTUuNy03LjEtMjIuMy01LTQ1LTQuOC02Ni4yIDAtMy4zLjctNS43IDMuNy01LjcgNy4xdjI5LjhjLTEzLjUgNC44LTI2IDEyLTM2LjkgMjEuM2wtMjUuOC0xNC45Yy0yLjktMS43LTYuNy0xLjEtOSAxLjQtMTUgMTYuMi0yNi41IDM1LjgtMzMuMiA1Ny40LTEgMy4zLjQgNi44IDMuMyA4LjVsMjUuOCAxNC45Yy0yLjYgMTQuMS0yLjYgMjguNSAwIDQyLjZsLTI1LjggMTQuOWMtMyAxLjctNC4zIDUuMi0zLjMgOC41IDYuNyAyMS42IDE4LjIgNDEuMSAzMy4yIDU3LjQgMi4zIDIuNSA2IDMuMSA5IDEuNGwyNS44LTE0LjljMTAuOSA5LjMgMjMuNCAxNi41IDM2LjkgMjEuM3YyOS44YzAgMy40IDIuNCA2LjQgNS43IDcuMSAyMi4zIDUgNDUgNC44IDY2LjIgMCAzLjMtLjcgNS43LTMuNyA1LjctNy4xdi0yOS44YzEzLjUtNC44IDI2LTEyIDM2LjktMjEuM2wyNS44IDE0LjljMi45IDEuNyA2LjcgMS4xIDktMS40IDE1LTE2LjIgMjYuNS0zNS44IDMzLjItNTcuNCAxLTMuMy0uNC02LjgtMy4zLTguNWwtMjUuOC0xNC45ek00OTYgNDAwLjVjLTI2LjggMC00OC41LTIxLjgtNDguNS00OC41czIxLjgtNDguNSA0OC41LTQ4LjUgNDguNSAyMS44IDQ4LjUgNDguNS0yMS43IDQ4LjUtNDguNSA0OC41ek0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHptMjAxLjIgMjI2LjVjLTIuMy0xLjItNC42LTIuNi02LjgtMy45bC03LjkgNC42Yy02IDMuNC0xMi44IDUuMy0xOS42IDUuMy0xMC45IDAtMjEuNC00LjYtMjguOS0xMi42LTE4LjMtMTkuOC0zMi4zLTQzLjktNDAuMi02OS42LTUuNS0xNy43IDEuOS0zNi40IDE3LjktNDUuN2w3LjktNC42Yy0uMS0yLjYtLjEtNS4yIDAtNy44bC03LjktNC42Yy0xNi05LjItMjMuNC0yOC0xNy45LTQ1LjcuOS0yLjkgMi4yLTUuOCAzLjItOC43LTMuOC0uMy03LjUtMS4yLTExLjQtMS4yaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzEwLjEgMCAxOS41LTMuMiAyNy4yLTguNS0xLjItMy44LTItNy43LTItMTEuOHYtOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHptODkuNiAzMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI3NC45Yy0yLjQtNi44LTMuNC0xNC0yLjYtMjEuM2w2LjgtNjAuOSAxLjItMTEuMSA3LjktNy45IDc3LjMtNzcuM2MtMjQuNS0yNy43LTYwLTQ1LjUtOTkuOS00NS41em00NS4zIDE0NS4zbC02LjggNjFjLTEuMSAxMC4yIDcuNSAxOC44IDE3LjYgMTcuNmw2MC45LTYuOCAxMzcuOS0xMzcuOS03MS43LTcxLjctMTM3LjkgMTM3Ljh6TTYzMyAyNjguOUw1OTUuMSAyMzFjLTkuMy05LjMtMjQuNS05LjMtMzMuOCAwbC0zNy44IDM3LjgtNC4xIDQuMSA3MS44IDcxLjcgNDEuOC00MS44YzkuMy05LjQgOS4zLTI0LjUgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyRnJpZW5kcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMjU2YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyUzI1My45IDMyIDE5MiAzMiA4MCA4Mi4xIDgwIDE0NHM1MC4xIDExMiAxMTIgMTEyem03Ni44IDMyaC04LjNjLTIwLjggMTAtNDMuOSAxNi02OC41IDE2cy00Ny42LTYtNjguNS0xNmgtOC4zQzUxLjYgMjg4IDAgMzM5LjYgMCA0MDMuMlY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0yOC44YzAtNjMuNi01MS42LTExNS4yLTExNS4yLTExNS4yek00ODAgMjU2YzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2LTk2IDQzLTk2IDk2IDQzIDk2IDk2IDk2em00OCAzMmgtMy44Yy0xMy45IDQuOC0yOC42IDgtNDQuMiA4cy0zMC4zLTMuMi00NC4yLThINDMyYy0yMC40IDAtMzkuMiA1LjktNTUuNyAxNS40IDI0LjQgMjYuMyAzOS43IDYxLjIgMzkuNyA5OS44djM4LjRjMCAyLjItLjUgNC4zLS42IDYuNEg1OTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDggMC02MS45LTUwLjEtMTEyLTExMi0xMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJHcmFkdWF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTkuNCAzMjAuNkwyMjQgNDE2bC05NS40LTk1LjRDNTcuMSAzMjMuNyAwIDM4Mi4yIDAgNDU0LjR2OS42YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtOS42YzAtNzIuMi01Ny4xLTEzMC43LTEyOC42LTEzMy44ek0xMy42IDc5LjhsNi40IDEuNXY1OC40Yy03IDQuMi0xMiAxMS41LTEyIDIwLjMgMCA4LjQgNC42IDE1LjQgMTEuMSAxOS43TDMuNSAyNDJjLTEuNyA2LjkgMi4xIDE0IDcuNiAxNGg0MS44YzUuNSAwIDkuMy03LjEgNy42LTE0bC0xNS42LTYyLjNDNTEuNCAxNzUuNCA1NiAxNjguNCA1NiAxNjBjMC04LjgtNS0xNi4xLTEyLTIwLjNWODcuMWw2NiAxNS45Yy04LjYgMTcuMi0xNCAzNi40LTE0IDU3IDAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4czEyOC01Ny4zIDEyOC0xMjhjMC0yMC42LTUuMy0zOS44LTE0LTU3bDk2LjMtMjMuMmMxOC4yLTQuNCAxOC4yLTI3LjEgMC0zMS41bC0xOTAuNC00NmMtMTMtMy4xLTI2LjctMy4xLTM5LjcgMEwxMy42IDQ4LjJjLTE4LjEgNC40LTE4LjEgMjcuMiAwIDMxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJJbmp1cmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Ny4zNyAxMS45OEMyNjEuMDggNC40NyAyNDMuMTEgMCAyMjQgMGMtNTMuNjkgMC05OS41IDMzLjEzLTExOC41MSA4MGg4MS4xOWw5MC42OS02OC4wMnpNMzQyLjUxIDgwYy03LjktMTkuNDctMjAuNjctMzYuMi0zNi40OS00OS41MkwyMzkuOTkgODBoMTAyLjUyek0yMjQgMjU2YzcwLjY5IDAgMTI4LTU3LjMxIDEyOC0xMjggMC01LjQ4LS45NS0xMC43LTEuNjEtMTZIOTcuNjFjLS42NyA1LjMtMS42MSAxMC41Mi0xLjYxIDE2IDAgNzAuNjkgNTcuMzEgMTI4IDEyOCAxMjh6TTgwIDI5OS43VjUxMmgxMjguMjZsLTk4LjQ1LTIyMS41MkExMzIuODM1IDEzMi44MzUgMCAwIDAgODAgMjk5Ljd6TTAgNDY0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhWMzIwLjI0QzE4Ljg4IDM0NC44OSAwIDM4MS4yNiAwIDQyMi40VjQ2NHptMjU2LTQ4aC01NS4zOGw0Mi42NyA5NkgyNTZjMjYuNDcgMCA0OC0yMS41MyA0OC00OHMtMjEuNTMtNDgtNDgtNDh6bTU3LjYtMTI4aC0xNi43MWMtMjIuMjQgMTAuMTgtNDYuODggMTYtNzIuODkgMTZzLTUwLjY1LTUuODItNzIuODktMTZoLTcuMzdsNDIuNjcgOTZIMjU2YzQ0LjExIDAgODAgMzUuODkgODAgODAgMCAxOC4wOC02LjI2IDM0LjU5LTE2LjQxIDQ4SDQwMGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di00MS42YzAtNzQuMjMtNjAuMTctMTM0LjQtMTM0LjQtMTM0LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCA5NiAxMjhhMTI4IDEyOCAwIDAgMCAxMjggMTI4em05NiA2NGE2My4wOCA2My4wOCAwIDAgMSA4LjEtMzAuNWMtNC44LS41LTkuNS0xLjUtMTQuNS0xLjVoLTE2LjdhMTc0LjA4IDE3NC4wOCAwIDAgMS0xNDUuOCAwaC0xNi43QTEzNC40MyAxMzQuNDMgMCAwIDAgMCA0MjIuNFY0NjRhNDggNDggMCAwIDAgNDggNDhoMjgwLjlhNjMuNTQgNjMuNTQgMCAwIDEtOC45LTMyem0yODgtMzJoLTMydi04MGE4MCA4MCAwIDAgMC0xNjAgMHY4MGgtMzJhMzIgMzIgMCAwIDAtMzIgMzJ2MTYwYTMyIDMyIDAgMCAwIDMyIDMyaDIyNGEzMiAzMiAwIDAgMCAzMi0zMlYzMjBhMzIgMzIgMCAwIDAtMzItMzJ6TTQ5NiA0MzJhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTMyLTE0NGgtNjR2LTgwYTMyIDMyIDAgMCAxIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJNZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHpNMTA0IDQyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjQtMjQgMTAuNy0yNCAyNHptMjE2LTEzNS40djQ5YzM2LjUgNy40IDY0IDM5LjggNjQgNzguNHY0MS43YzAgNy42LTUuNCAxNC4yLTEyLjkgMTUuN2wtMzIuMiA2LjRjLTQuMy45LTguNS0xLjktOS40LTYuM2wtMy4xLTE1LjdjLS45LTQuMyAxLjktOC42IDYuMy05LjRsMTkuMy0zLjlWNDE2YzAtNjIuOC05Ni02NS4xLTk2IDEuOXYyNi43bDE5LjMgMy45YzQuMy45IDcuMSA1LjEgNi4zIDkuNGwtMy4xIDE1LjdjLS45IDQuMy01LjEgNy4xLTkuNCA2LjNsLTMxLjItNC4yYy03LjktMS4xLTEzLjgtNy44LTEzLjgtMTUuOVY0MTZjMC0zOC42IDI3LjUtNzAuOSA2NC03OC40di00NS4yYy0yLjIuNy00LjQgMS4xLTYuNiAxLjktMTggNi4zLTM3LjMgOS44LTU3LjQgOS44cy0zOS40LTMuNS01Ny40LTkuOGMtNy40LTIuNi0xNC45LTQuMi0yMi42LTUuMnY4MS42YzIzLjEgNi45IDQwIDI4LjEgNDAgNTMuNCAwIDMwLjktMjUuMSA1Ni01NiA1NnMtNTYtMjUuMS01Ni01NmMwLTI1LjMgMTYuOS00Ni41IDQwLTUzLjR2LTgwLjRDNDguNSAzMDEgMCAzNTUuOCAwIDQyMi40djQ0LjhDMCA0OTEuOSAyMC4xIDUxMiA0NC44IDUxMmgzNTguNGMyNC43IDAgNDQuOC0yMC4xIDQ0LjgtNDQuOHYtNDQuOGMwLTcyLTU2LjgtMTMwLjMtMTI4LTEzMy44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDIwOEg0MzJjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMTkyYzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2em0tNDAwIDQ4YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHptODkuNiAzMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDEuNmMwLTc0LjItNjAuMi0xMzQuNC0xMzQuNC0xMzQuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck5pbmphIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNS40IDI4OS4yTDIyNCAzOTAuNiAxMjIuNiAyODkuMkM1NCAyOTUuMyAwIDM1Mi4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDEuNmMwLTcwLjItNTQtMTI3LjEtMTIyLjYtMTMzLjJ6TTMyIDE5MmMyNy4zIDAgNTEuOC0xMS41IDY5LjItMjkuNyAxNS4xIDUzLjkgNjQgOTMuNyAxMjIuOCA5My43IDcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDBjLTUwLjQgMC05My42IDI5LjQtMTE0LjUgNzEuOEM5Mi4xIDQ3LjggNjQgMzIgMzIgMzJjMCAzMy40IDE3LjEgNjIuOCA0My4xIDgwLTI2IDE3LjItNDMuMSA0Ni42LTQzLjEgODB6bTE0NC05Nmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMkgxNDRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJOdXJzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTkuNDEsMzIwLDIyNCw0MTUuMzksMTI4LjU5LDMyMEM1Ny4xLDMyMy4xLDAsMzgxLjYsMCw0NTMuNzlBNTguMjEsNTguMjEsMCwwLDAsNTguMjEsNTEySDM4OS43OUE1OC4yMSw1OC4yMSwwLDAsMCw0NDgsNDUzLjc5QzQ0OCwzODEuNiwzOTAuOSwzMjMuMSwzMTkuNDEsMzIwWk0yMjQsMzA0QTEyOCwxMjgsMCwwLDAsMzUyLDE3NlY2NS44MmEzMiwzMiwwLDAsMC0yMC43Ni0zMEwyNDYuNDcsNC4wN2E2NCw2NCwwLDAsMC00NC45NCwwTDExNi43NiwzNS44NkEzMiwzMiwwLDAsMCw5Niw2NS44MlYxNzZBMTI4LDEyOCwwLDAsMCwyMjQsMzA0Wk0xODQsNzEuNjdhNSw1LDAsMCwxLDUtNWgyMS42N1Y0NWE1LDUsMCwwLDEsNS01aDE2LjY2YTUsNSwwLDAsMSw1LDVWNjYuNjdIMjU5YTUsNSwwLDAsMSw1LDVWODguMzNhNSw1LDAsMCwxLTUsNUgyMzcuMzNWMTE1YTUsNSwwLDAsMS01LDVIMjE1LjY3YTUsNSwwLDAsMS01LTVWOTMuMzNIMTg5YTUsNSwwLDAsMS01LTVaTTE0NCwxNjBIMzA0djE2YTgwLDgwLDAsMCwxLTE2MCwwWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMjA4aC02NHYtNjRjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djY0aC02NGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2NHY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di02NGg2NGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQwMCA0OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJTZWNyZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgzLjkgMzA4LjNsMjMuOS02Mi42YzQtMTAuNS0zLjctMjEuNy0xNS0yMS43aC01OC41YzExLTE4LjkgMTcuOC00MC42IDE3LjgtNjR2LS4zYzM5LjItNy44IDY0LTE5LjEgNjQtMzEuNyAwLTEzLjMtMjcuMy0yNS4xLTcwLjEtMzMtOS4yLTMyLjgtMjctNjUuOC00MC42LTgyLjgtOS41LTExLjktMjUuOS0xNS42LTM5LjUtOC44bC0yNy42IDEzLjhjLTkgNC41LTE5LjYgNC41LTI4LjYgMEwxODIuMSAzLjRjLTEzLjYtNi44LTMwLTMuMS0zOS41IDguOC0xMy41IDE3LTMxLjQgNTAtNDAuNiA4Mi44LTQyLjcgNy45LTcwIDE5LjctNzAgMzMgMCAxMi42IDI0LjggMjMuOSA2NCAzMS43di4zYzAgMjMuNCA2LjggNDUuMSAxNy44IDY0SDU2LjNjLTExLjUgMC0xOS4yIDExLjctMTQuNyAyMi4zbDI1LjggNjAuMkMyNy4zIDMyOS44IDAgMzcyLjcgMCA0MjIuNHY0NC44QzAgNDkxLjkgMjAuMSA1MTIgNDQuOCA1MTJoMzU4LjRjMjQuNyAwIDQ0LjgtMjAuMSA0NC44LTQ0Ljh2LTQ0LjhjMC00OC40LTI1LjgtOTAuNC02NC4xLTExNC4xek0xNzYgNDgwbC00MS42LTE5MiA0OS42IDMyIDI0IDQwLTMyIDEyMHptOTYgMGwtMzItMTIwIDI0LTQwIDQ5LjYtMzJMMjcyIDQ4MHptNDEuNy0yOTguNWMtMy45IDExLjktNyAyNC42LTE2LjUgMzMuNC0xMC4xIDkuMy00OCAyMi40LTY0LTI1LTIuOC04LjQtMTUuNC04LjQtMTguMyAwLTE3IDUwLjItNTYgMzIuNC02NCAyNS05LjUtOC44LTEyLjctMjEuNS0xNi41LTMzLjQtLjgtMi41LTYuMy01LjctNi4zLTUuOHYtMTAuOGMyOC4zIDMuNiA2MSA1LjggOTYgNS44czY3LjctMi4xIDk2LTUuOHYxMC44Yy0uMS4xLTUuNiAzLjItNi40IDUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclNoaWVsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjIuMyAyNzEuMWwtMTE1LjItNDVjLTQuMS0xLjYtMTIuNi0zLjctMjIuMiAwbC0xMTUuMiA0NWMtMTAuNyA0LjItMTcuNyAxNC0xNy43IDI0LjkgMCAxMTEuNiA2OC43IDE4OC44IDEzMi45IDIxMy45IDkuNiAzLjcgMTggMS42IDIyLjIgMEM1NTguNCA0ODkuOSA2NDAgNDIwLjUgNjQwIDI5NmMwLTEwLjktNy0yMC43LTE3LjctMjQuOXpNNDk2IDQ2Mi40VjI3My4zbDk1LjUgMzcuM2MtNS42IDg3LjEtNjAuOSAxMzUuNC05NS41IDE1MS44ek0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHptOTYgNDBjMC0yLjUuOC00LjggMS4xLTcuMi0yLjUtLjEtNC45LS44LTcuNS0uOGgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmM2LjggMCAxMy4zLTEuNSAxOS4yLTQtNTQtNDIuOS05OS4yLTExNi43LTk5LjItMjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjggNDU4LjFMMzYyLjMgMjQ4LjNDNDEyLjEgMjMwLjcgNDQ4IDE4My44IDQ0OCAxMjggNDQ4IDU3LjMgMzkwLjcgMCAzMjAgMGMtNjcuMSAwLTEyMS41IDUxLjgtMTI2LjkgMTE3LjRMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRsNTg4LjQgNDU0LjdjNyA1LjQgMTcgNC4yIDIyLjUtMi44bDE5LjYtMjUuM2M1LjQtNi44IDQuMS0xNi45LTIuOS0yMi4zek05NiA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUwLjJMMjA3LjQgMjkwLjNDMTQ0LjIgMzAxLjMgOTYgMzU2IDk2IDQyMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMC42IDM2NC45bC05MC4zLTkwLjJjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdoLTc5LjNjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjc5LjJjMCAxNyA2LjcgMzMuMiAxOC43IDQ1LjJsOTAuMyA5MC4yYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDkyLjUtOTIuNWMxMi42LTEyLjUgMTIuNi0zMi43LjEtNDUuMnptLTE4Mi44LTIxYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0IDI0IDEwLjcgMjQgMjRjMCAxMy4yLTEwLjcgMjQtMjQgMjR6bS0yMjMuOC04OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOEMzNTIgNTcuMyAyOTQuNyAwIDIyNCAwUzk2IDU3LjMgOTYgMTI4YzAgNzAuNiA1Ny4zIDEyNy45IDEyOCAxMjcuOXptMTI3LjggMTExLjJWMjk0Yy0xMi4yLTMuNi0yNC45LTYuMi0zOC4yLTYuMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4Ny45IDAgMzQ4LjEgMCA0MjIuM3Y0MS42YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMxNS41IDAgMjkuMS03LjUgMzcuOS0xOC45bC01OC01OGMtMTguMS0xOC4xLTI4LjEtNDIuMi0yOC4xLTY3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJUaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTk1LjggMzIuNkwyNzIgNDgwbC0zMi0xMzYgMzItNTZoLTk2bDMyIDU2LTMyIDEzNi00Ny44LTE5MS40QzU2LjkgMjkyIDAgMzUwLjMgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzIuMS01Ni45LTEzMC40LTEyOC4yLTEzMy44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGltZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTg5LjYgMjQwbDQ1LjYtNDUuNmM2LjMtNi4zIDYuMy0xNi41IDAtMjIuOGwtMjIuOC0yMi44Yy02LjMtNi4zLTE2LjUtNi4zLTIyLjggMEw1NDQgMTk0LjRsLTQ1LjYtNDUuNmMtNi4zLTYuMy0xNi41LTYuMy0yMi44IDBsLTIyLjggMjIuOGMtNi4zIDYuMy02LjMgMTYuNSAwIDIyLjhsNDUuNiA0NS42LTQ1LjYgNDUuNmMtNi4zIDYuMy02LjMgMTYuNSAwIDIyLjhsMjIuOCAyMi44YzYuMyA2LjMgMTYuNSA2LjMgMjIuOCAwbDQ1LjYtNDUuNiA0NS42IDQ1LjZjNi4zIDYuMyAxNi41IDYuMyAyMi44IDBsMjIuOC0yMi44YzYuMy02LjMgNi4zLTE2LjUgMC0yMi44TDU4OS42IDI0MHpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzQ29nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxMC41IDM0MS4zYzIuNi0xNC4xIDIuNi0yOC41IDAtNDIuNmwyNS44LTE0LjljMy0xLjcgNC4zLTUuMiAzLjMtOC41LTYuNy0yMS42LTE4LjItNDEuMi0zMy4yLTU3LjQtMi4zLTIuNS02LTMuMS05LTEuNGwtMjUuOCAxNC45Yy0xMC45LTkuMy0yMy40LTE2LjUtMzYuOS0yMS4zdi0yOS44YzAtMy40LTIuNC02LjQtNS43LTcuMS0yMi4zLTUtNDUtNC44LTY2LjIgMC0zLjMuNy01LjcgMy43LTUuNyA3LjF2MjkuOGMtMTMuNSA0LjgtMjYgMTItMzYuOSAyMS4zbC0yNS44LTE0LjljLTIuOS0xLjctNi43LTEuMS05IDEuNC0xNSAxNi4yLTI2LjUgMzUuOC0zMy4yIDU3LjQtMSAzLjMuNCA2LjggMy4zIDguNWwyNS44IDE0LjljLTIuNiAxNC4xLTIuNiAyOC41IDAgNDIuNmwtMjUuOCAxNC45Yy0zIDEuNy00LjMgNS4yLTMuMyA4LjUgNi43IDIxLjYgMTguMiA0MS4xIDMzLjIgNTcuNCAyLjMgMi41IDYgMy4xIDkgMS40bDI1LjgtMTQuOWMxMC45IDkuMyAyMy40IDE2LjUgMzYuOSAyMS4zdjI5LjhjMCAzLjQgMi40IDYuNCA1LjcgNy4xIDIyLjMgNSA0NSA0LjggNjYuMiAwIDMuMy0uNyA1LjctMy43IDUuNy03LjF2LTI5LjhjMTMuNS00LjggMjYtMTIgMzYuOS0yMS4zbDI1LjggMTQuOWMyLjkgMS43IDYuNyAxLjEgOS0xLjQgMTUtMTYuMiAyNi41LTM1LjggMzMuMi01Ny40IDEtMy4zLS40LTYuOC0zLjMtOC41bC0yNS44LTE0Ljl6TTQ5NiAzNjguNWMtMjYuOCAwLTQ4LjUtMjEuOC00OC41LTQ4LjVzMjEuOC00OC41IDQ4LjUtNDguNSA0OC41IDIxLjggNDguNSA0OC41LTIxLjcgNDguNS00OC41IDQ4LjV6TTk2IDIyNGMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bTIyNCAzMmMxLjkgMCAzLjctLjUgNS42LS42IDguMy0yMS43IDIwLjUtNDIuMSAzNi4zLTU5LjIgNy40LTggMTcuOS0xMi42IDI4LjktMTIuNiA2LjkgMCAxMy43IDEuOCAxOS42IDUuM2w3LjkgNC42Yy44LS41IDEuNi0uOSAyLjQtMS40IDctMTQuNiAxMS4yLTMwLjggMTEuMi00OCAwLTYxLjktNTAuMS0xMTItMTEyLTExMlMyMDggODIuMSAyMDggMTQ0YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyem0xMDUuMiAxOTQuNWMtMi4zLTEuMi00LjYtMi42LTYuOC0zLjktOC4yIDQuOC0xNS4zIDkuOC0yNy41IDkuOC0xMC45IDAtMjEuNC00LjYtMjguOS0xMi42LTE4LjMtMTkuOC0zMi4zLTQzLjktNDAuMi02OS42LTEwLjctMzQuNSAyNC45LTQ5LjcgMjUuOC01MC4zLS4xLTIuNi0uMS01LjIgMC03LjhsLTcuOS00LjZjLTMuOC0yLjItNy01LTkuOC04LjEtMy4zLjItNi41LjYtOS44LjYtMjQuNiAwLTQ3LjYtNi02OC41LTE2aC04LjNDMTc5LjYgMjg4IDEyOCAzMzkuNiAxMjggNDAzLjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI1NS40Yy0zLjctNi02LjItMTIuOC02LjItMjAuM3YtOS4yek0xNzMuMSAyNzQuNkMxNjEuNSAyNjMuMSAxNDUuNiAyNTYgMTI4IDI1Nkg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjUuOWM2LjMtNDcuNCAzNC45LTg3LjMgNzUuMi0xMDkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzIuNjUsMjEyLjMyLDM2LjIxLDEzNy43OEE2My40LDYzLjQsMCwwLDAsMzIsMTYwYTYzLjg0LDYzLjg0LDAsMCwwLDEwMC42NSw1Mi4zMlptNDAuNDQsNjIuMjhBNjMuNzksNjMuNzksMCwwLDAsMTI4LDI1Nkg2NEE2NC4wNiw2NC4wNiwwLDAsMCwwLDMyMHYzMmEzMiwzMiwwLDAsMCwzMiwzMkg5Ny45MUExNDYuNjIsMTQ2LjYyLDAsMCwxLDE3My4wOSwyNzQuNlpNNTQ0LDIyNGE2NCw2NCwwLDEsMC02NC02NEE2NC4wNiw2NC4wNiwwLDAsMCw1NDQsMjI0Wk01MDAuNTYsMzU1LjExYTExNC4yNCwxMTQuMjQsMCwwLDAtODQuNDctNjUuMjhMMzYxLDI0Ny4yM2M0MS40Ni0xNi4zLDcxLTU1LjkyLDcxLTEwMy4yM0ExMTEuOTMsMTExLjkzLDAsMCwwLDMyMCwzMmMtNTcuMTQsMC0xMDMuNjksNDIuODMtMTEwLjYsOTguMDhMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDZBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTMsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODJsMTkuNjQtMjUuMjdhMTYsMTYsMCwwLDAtMi44MS0yMi40NVpNMTI4LDQwMy4yMVY0MzJhNDgsNDgsMCwwLDAsNDgsNDhINDY0YTQ3LjQ1LDQ3LjQ1LDAsMCwwLDEyLjU3LTEuODdMMjMyLDI4OS4xM0MxNzMuNzQsMjk0LjgzLDEyOCwzNDMuNDIsMTI4LDQwMy4yMVpNNTc2LDI1Nkg1MTJhNjMuNzksNjMuNzksMCwwLDAtNDUuMDksMTguNkExNDYuMjksMTQ2LjI5LDAsMCwxLDU0MiwzODRoNjZhMzIsMzIsMCwwLDAsMzItMzJWMzIwQTY0LjA2LDY0LjA2LDAsMCwwLDU3NiwyNTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDIyNGMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bTQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptMzIgMzJoLTY0Yy0xNy42IDAtMzMuNSA3LjEtNDUuMSAxOC42IDQwLjMgMjIuMSA2OC45IDYyIDc1LjEgMTA5LjRoNjZjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0em0tMjU2IDBjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTMzgxLjkgMzIgMzIwIDMyIDIwOCA4Mi4xIDIwOCAxNDRzNTAuMSAxMTIgMTEyIDExMnptNzYuOCAzMmgtOC4zYy0yMC44IDEwLTQzLjkgMTYtNjguNSAxNnMtNDcuNi02LTY4LjUtMTZoLTguM0MxNzkuNiAyODggMTI4IDMzOS42IDEyOCA0MDMuMlY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0yOC44YzAtNjMuNi01MS42LTExNS4yLTExNS4yLTExNS4yem0tMjIzLjctMTMuNEMxNjEuNSAyNjMuMSAxNDUuNiAyNTYgMTI4IDI1Nkg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjUuOWM2LjMtNDcuNCAzNC45LTg3LjMgNzUuMi0xMDkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXRlbnNpbFNwb29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MC4xIDMxLjljLTU1LTU1LjEtMTY0LjktMzQuNS0yMjcuOCAyOC41LTQ5LjMgNDkuMy01NS4xIDExMC0yOC44IDE2MC40TDkgNDEzLjJjLTExLjYgMTAuNS0xMi4xIDI4LjUtMSAzOS41TDU5LjMgNTA0YzExIDExIDI5LjEgMTAuNSAzOS41LTEuMWwxOTIuNC0yMTQuNGM1MC40IDI2LjMgMTExLjEgMjAuNSAxNjAuNC0yOC44IDYzLTYyLjkgODMuNi0xNzIuOCAyOC41LTIyNy44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVdGVuc2lscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDcuOSAxNS4yYy44IDQuNyAxNi4xIDk0LjUgMTYuMSAxMjguOCAwIDUyLjMtMjcuOCA4OS42LTY4LjkgMTA0LjZMMTY4IDQ4Ni43Yy43IDEzLjctMTAuMiAyNS4zLTI0IDI1LjNIODBjLTEzLjcgMC0yNC43LTExLjUtMjQtMjUuM2wxMi45LTIzOC4xQzI3LjcgMjMzLjYgMCAxOTYuMiAwIDE0NCAwIDEwOS42IDE1LjMgMTkuOSAxNi4xIDE1LjIgMTkuMy01LjEgNjEuNC01LjQgNjQgMTYuM3YxNDEuMmMxLjMgMy40IDE1LjEgMy4yIDE2IDAgMS40LTI1LjMgNy45LTEzOS4yIDgtMTQxLjggMy4zLTIwLjggNDQuNy0yMC44IDQ3LjkgMCAuMiAyLjcgNi42IDExNi41IDggMTQxLjguOSAzLjIgMTQuOCAzLjQgMTYgMFYxNi4zYzIuNi0yMS42IDQ0LjgtMjEuNCA0OC0xLjF6bTExOS4yIDI4NS43bC0xNSAxODUuMWMtMS4yIDE0IDkuOSAyNiAyMy45IDI2aDU2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjI0YzAtMTMuMi0xMC43LTI0LTI0LTI0LTgyLjUgMC0yMjEuNCAxNzguNS02NC45IDMwMC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZWN0b3JTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDEyOFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC05NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMkgxNjBjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgzMkMxNC4zMyAwIDAgMTQuMzMgMCAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMydjE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJoMTkyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMlYxNjBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnptLTk2LTY0aDMydjMyaC0zMlY2NHpNNjQgNjRoMzJ2MzJINjRWNjR6bTMyIDM4NEg2NHYtMzJoMzJ2MzJ6bTM1MiAwaC0zMnYtMzJoMzJ2MzJ6bS0zMi05NmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJIMTYwdi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDk2VjE2MGgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjk2aDE5MnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMydjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVudXNEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE3NmMwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NFMwIDk2LjUgMCAxNzZjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjM2OEg3NmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgzNnYzNmMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi0zNmgzNmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMzZ2LTUxLjZjNjQuMS0xNC41IDExMi03MS45IDExMi0xNDAuNHptLTIyNCAwYzAtNDQuMSAzNS45LTgwIDgwLTgwczgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MC04MC0zNS45LTgwLTgwem0zMzYgMTQwLjRWMzY4aDM2YzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTM2djM2YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzZoLTM2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmgzNnYtNTEuNmMtMjEuMi00LjgtNDAuNi0xNC4zLTU3LjItMjcuMyAxNC0xNi43IDI1LTM2IDMyLjEtNTcuMSAxNC41IDE0LjggMzQuNyAyNCA1Ny4xIDI0IDQ0LjEgMCA4MC0zNS45IDgwLTgwcy0zNS45LTgwLTgwLTgwYy0yMi4zIDAtNDIuNiA5LjItNTcuMSAyNC03LjEtMjEuMS0xOC00MC40LTMyLjEtNTcuMUMzMDMuNCA0My42IDMzNC4zIDMyIDM2OCAzMmM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NCAwIDY4LjUtNDcuOSAxMjUuOS0xMTIgMTQwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlbnVzTWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjQgMGgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS00OC43IDQ4LjdDNDIyLjUgNzIuMSAzOTYuMiA2NCAzNjggNjRjLTMzLjcgMC02NC42IDExLjYtODkuMiAzMC45IDE0IDE2LjcgMjUgMzYgMzIuMSA1Ny4xIDE0LjUtMTQuOCAzNC43LTI0IDU3LjEtMjQgNDQuMSAwIDgwIDM1LjkgODAgODBzLTM1LjkgODAtODAgODBjLTIyLjMgMC00Mi42LTkuMi01Ny4xLTI0LTcuMSAyMS4xLTE4IDQwLjQtMzIuMSA1Ny4xIDI0LjUgMTkuNCA1NS41IDMwLjkgODkuMiAzMC45IDc5LjUgMCAxNDQtNjQuNSAxNDQtMTQ0IDAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsNDguNy00OC43IDE2LjkgMTYuOWMyLjQgMi40IDUuNCAzLjUgOC40IDMuNSA2LjIgMCAxMi4xLTQuOCAxMi4xLTEyVjEyYzAtNi42LTUuNC0xMi0xMi0xMnpNMTQ0IDY0QzY0LjUgNjQgMCAxMjguNSAwIDIwOGMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWNDAwSDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjYgMTEyLTcxLjkgMTEyLTE0MC40IDAtNzkuNS02NC41LTE0NC0xNDQtMTQ0em0wIDIyNGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCA5Ni41IDAgMTc2YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFYzNjhINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0yMjQgMGMwLTQ0LjEgMzUuOS04MCA4MC04MHM4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVzdFBhdGNoZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM3LjI1MiwyMzkuODc3LDM4NCwxNjBWMzJBMzIsMzIsMCwwLDAsMzUyLDBIMzIwYTIzLjk4MiwyMy45ODIsMCwwLDAtMTMuMzEyLDQuMDMxbC0yNSwxNi42NzJhMTAzLjc5NCwxMDMuNzk0LDAsMCwxLTExNS4zNzYsMGwtMjUtMTYuNjcyQTIzLjk4MiwyMy45ODIsMCwwLDAsMTI4LDBIOTZBMzIsMzIsMCwwLDAsNjQsMzJWMTYwTDEwLjc0OCwyMzkuODc3QTY0LDY0LDAsMCwwLDAsMjc1LjM3N1Y0ODBhMzIsMzIsMCwwLDAsMzIsMzJIMTkyVjI4OGEzMS45ODcsMzEuOTg3LDAsMCwxLDEuNjQzLTEwLjExOUwyMDcuMTM1LDIzNy40LDE1MC4xODgsNjYuNTYxQTE1MS41NzksMTUxLjU3OSwwLDAsMCwyMjQsODYuMjM0YTE1MS41NjUsMTUxLjU2NSwwLDAsMCw3My44MTEtMTkuNjY4TDIyNCwyODhWNTEySDQxNmEzMiwzMiwwLDAsMCwzMi0zMlYyNzUuMzc3QTY0LDY0LDAsMCwwLDQzNy4yNTIsMjM5Ljg3N1pNNjMuNSwyNzIuNDg0YTEyLjAxLDEyLjAxLDAsMCwxLDE3LTE2Ljk2OGwxNS41LDE1LjUsMTUuNS0xNS41YTEyLjAxLDEyLjAxLDAsMCwxLDE3LDE2Ljk2OEwxMTIuOTg0LDI4OCwxMjguNSwzMDMuNTE2YTEyLjAxLDEyLjAxLDAsMCwxLTE3LDE2Ljk2OEw5NiwzMDQuOTg0bC0xNS41LDE1LjVhMTIuMDEsMTIuMDEsMCwwLDEtMTctMTYuOTY4TDc5LjAxNiwyODhaTTk2LDQ1NmE0MCw0MCwwLDEsMSw0MC00MEE0MCw0MCwwLDAsMSw5Niw0NTZaTTM1OS4yMjcsMzM1Ljc4NSwzMTAuNywzMzZhNi42NzEsNi42NzEsMCwwLDEtNi43LTYuN2wuMjE1LTQ4LjU3NEEyNC45ODcsMjQuOTg3LDAsMCwxLDMzMS40MywyNTYuMWMxMi43ODksMS4xNjIsMjIuMTI5LDEyLjYxOSwyMi4wNTYsMjUuNDE5bC0uMDM3LDUuMDU3LDUuMDUxLS4wMzdjMTIuODI2LS4wMzUsMjQuMjM2LDkuMjc1LDI1LjQsMjIuMDc2QTI0Ljk0OCwyNC45NDgsMCwwLDEsMzU5LjIyNywzMzUuNzg1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNy4yNTIsMjM5Ljg3NywzODQsMTYwVjMyQTMyLDMyLDAsMCwwLDM1MiwwSDMyMGEyNC4wMjEsMjQuMDIxLDAsMCwwLTEzLjMxMiw0LjAzMWwtMjUsMTYuNjcyYTEwMy43OTQsMTAzLjc5NCwwLDAsMS0xMTUuMzc2LDBsLTI1LTE2LjY3MkEyNC4wMjEsMjQuMDIxLDAsMCwwLDEyOCwwSDk2QTMyLDMyLDAsMCwwLDY0LDMyVjE2MEwxMC43NDgsMjM5Ljg3N0E2NCw2NCwwLDAsMCwwLDI3NS4zNzdWNDgwYTMyLDMyLDAsMCwwLDMyLDMySDE5MlYyODhhMzEuOTg3LDMxLjk4NywwLDAsMSwxLjY0My0xMC4xMTlMMjA3LjEzNSwyMzcuNCwxNTAuMTg4LDY2LjU2NEExNTEuNTE4LDE1MS41MTgsMCwwLDAsMjI0LDg2LjIzNGExNTEuNTUsMTUxLjU1LDAsMCwwLDczLjgxMi0xOS42NzJMMjI0LDI4OFY1MTJINDE2YTMyLDMyLDAsMCwwLDMyLTMyVjI3NS4zNzdBNjQsNjQsMCwwLDAsNDM3LjI1MiwyMzkuODc3Wk0xMzEuMzEyLDM3MS4zMTJsLTQ4LDQ4YTE2LDE2LDAsMCwxLTIyLjYyNC0yMi42MjRsNDgtNDhhMTYsMTYsMCwwLDEsMjIuNjI0LDIyLjYyNFptMjU2LDQ4YTE1Ljk5MiwxNS45OTIsMCwwLDEtMjIuNjI0LDBsLTQ4LTQ4YTE2LDE2LDAsMCwxLDIyLjYyNC0yMi42MjRsNDgsNDhBMTUuOTkzLDE1Ljk5MywwLDAsMSwzODcuMzEyLDQxOS4zMTJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc3LjcgMTg2LjFMMzA5LjUgMTguM2MtMy4xLTMuMS04LjItMy4xLTExLjMgMGwtMzQgMzMuOWMtMy4xIDMuMS0zLjEgOC4yIDAgMTEuM2wxMS4yIDExLjFMMzMgMzE2LjVjLTM4LjggMzguNy00NS4xIDEwMi05LjQgMTQzLjUgMjAuNiAyNCA0OS41IDM2IDc4LjQgMzUuOSAyNi40IDAgNTIuOC0xMCA3Mi45LTMwLjFsMjQ2LjMtMjQ1LjcgMTEuMiAxMS4xYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMzQtMzMuOWMzLjEtMyAzLjEtOC4xIDAtMTEuMnpNMzE4IDI1NkgxNjFsMTQ4LTE0Ny43IDc4LjUgNzguM0wzMTggMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MiA2NGgyNHYyNDBjMCA0NC4xIDM1LjkgODAgODAgODBzODAtMzUuOSA4MC04MFY2NGgyNGM0LjQgMCA4LTMuNiA4LThWOGMwLTQuNC0zLjYtOC04LThINzJjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDh6bTcyIDBoNjR2OTZoLTY0VjY0em00ODAgMzg0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNMzYwIDY0aDI0djI0MGMwIDQ0LjEgMzUuOSA4MCA4MCA4MHM4MC0zNS45IDgwLTgwVjY0aDI0YzQuNCAwIDgtMy42IDgtOFY4YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDh6bTcyIDBoNjR2OTZoLTY0VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWRlb1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44IDQ1OC4xbC01NS00Mi41YzE1LjQtMS40IDI5LjItMTMuNyAyOS4yLTMxLjF2LTI1N2MwLTI1LjUtMjkuMS00MC40LTUwLjQtMjUuOEw0NDggMTc3LjN2MTM3LjJsLTMyLTI0Ljd2LTE3OGMwLTI2LjQtMjEuNC00Ny44LTQ3LjgtNDcuOEgxMjMuOUw0NS41IDMuNEMzOC41LTIgMjguNS0uOCAyMyA2LjJMMy40IDMxLjRjLTUuNCA3LTQuMiAxNyAyLjggMjIuNEw0Mi43IDgyIDQxNiAzNzAuNmwxNzguNSAxMzhjNyA1LjQgMTcgNC4yIDIyLjUtMi44bDE5LjYtMjUuM2M1LjUtNi45IDQuMi0xNy0yLjgtMjIuNHpNMzIgNDAwLjJjMCAyNi40IDIxLjQgNDcuOCA0Ny44IDQ3LjhoMjg4LjRjMTEuMiAwIDIxLjQtNCAyOS42LTEwLjVMMzIgMTU0Ljd2MjQ1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNi4yIDY0SDQ3LjhDMjEuNCA2NCAwIDg1LjQgMCAxMTEuOHYyODguNEMwIDQyNi42IDIxLjQgNDQ4IDQ3LjggNDQ4aDI4OC40YzI2LjQgMCA0Ny44LTIxLjQgNDcuOC00Ny44VjExMS44YzAtMjYuNC0yMS40LTQ3LjgtNDcuOC00Ny44em0xODkuNCAzNy43TDQxNiAxNzcuM3YxNTcuNGwxMDkuNiA3NS41YzIxLjIgMTQuNiA1MC40LS4zIDUwLjQtMjUuOFYxMjcuNWMwLTI1LjQtMjkuMS00MC40LTUwLjQtMjUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmloYXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMi44OCA0MDAuNzFMNTQ0IDM1MnYtNjRsNTUuMTYtMTcuNjljMTEuNzktNS45IDExLjc5LTIyLjcyIDAtMjguNjJMNDgwIDE5MnYtNjRsMjcuMzEtMTYuM2M3LjcyLTcuNzIgNS42MS0yMC43NC00LjE2LTI1LjYyTDMyMCAwIDEzNi44NSA4Ni4wN2MtOS43NyA0Ljg4LTExLjg4IDE3LjktNC4xNiAyNS42MkwxNjAgMTI4djY0TDQwLjg0IDI0MS42OWMtMTEuNzkgNS45LTExLjc5IDIyLjcyIDAgMjguNjJMOTYgMjg4djY0TDcuMTIgNDAwLjcxYy01LjQyIDMuNjItNy43IDkuNjMtNyAxNS4yOS42MiA1LjAxIDMuNTcgOS43NSA4LjcyIDEyLjMzTDY0IDQ0OHY0OGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNDhoMTYwdjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di00OGgxNjB2NDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTQ4bDU1LjE1LTE5LjY3YzUuMTYtMi41OCA4LjEtNy4zMiA4LjcyLTEyLjMzLjcxLTUuNjctMS41Ny0xMS42OC02Ljk5LTE1LjI5ek0yMjQgMTI4aDE5MnY2NEgyMjR2LTY0em0tNjQgMjI0di02NGgzMjB2NjRIMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNCwyMjcuNkg5Mi40Qzc2LjcsMjI3LjYsNjQsMjQwLjMsNjQsMjU2czEyLjcsMjguNCwyOC40LDI4LjRIMTE0YzUwLjcsMCw3Ni4xLDYxLjMsNDAuMiw5Ny4xTDEzOSwzOTYuOCBjLTExLjUsMTAuNy0xMi4yLDI4LjctMS42LDQwLjJzMjguNywxMi4yLDQwLjIsMS42YzAuNS0wLjUsMS4xLTEsMS42LTEuNmwxNS4yLTE1LjJjMzUuOC0zNS44LDk3LjEtMTAuNSw5Ny4xLDQwLjJ2MjEuNSBjMCwxNS43LDEyLjgsMjguNCwyOC41LDI4LjRjMTUuNywwLDI4LjQtMTIuNywyOC40LTI4LjRWNDYyYzAtMjYuNiwxNy00NS45LDM4LjItNTMuNGwtMjQ0LjUtMTg5IEMxMzMuNywyMjQuNywxMjMuOSwyMjcuNSwxMTQsMjI3LjZ6IE02MTcsNTA1LjhsMTkuNi0yNS4zYzUuNC03LDQuMi0xNy0yLjgtMjIuNUw0NzAuNiwzMzJjNC4yLTI1LjQsMjQuOS00Ny41LDU1LjQtNDcuNWgyMS41IGMxNS43LDAsMjguNC0xMi43LDI4LjQtMjguNHMtMTIuNy0yOC40LTI4LjQtMjguNEg1MjZjLTUwLjcsMC03Ni4xLTYxLjMtNDAuMi05Ny4xbDE1LjItMTUuM2MxMC43LTExLjUsMTAtMjkuNS0xLjYtNDAuMiBjLTEwLjktMTAuMS0yNy43LTEwLjEtMzguNiwwbC0xNS4yLDE1LjJjLTM1LjgsMzUuOC05Ny4xLDEwLjUtOTcuMS00MC4yVjI4LjVDMzQ4LjQsMTIuNywzMzUuNywwLDMyMCwwIGMtMTUuNywwLTI4LjQsMTIuNy0yOC40LDI4LjRWNTBjMCw1MC43LTYxLjMsNzYuMS05Ny4xLDQwLjJMMTc5LjIsNzVjLTExLjEtMTEuMS0yOS40LTEwLjYtNDAuNSwwLjVMNDUuNSwzLjQgYy03LTUuNC0xNy00LjItMjIuNSwyLjhMMy40LDMxLjVjLTUuNCw3LTQuMiwxNywyLjgsMjIuNWw1ODguNCw0NTQuN0M2MDEuNSw1MTQuMSw2MTEuNiw1MTIuOCw2MTcsNTA1Ljh6IE0zMzUuNCwyMjcuNWwtNjIuOS00OC42IGM0LjktMS44LDEwLjItMi44LDE1LjQtMi45YzI2LjUsMCw0OCwyMS41LDQ4LDQ4QzMzNiwyMjUuMiwzMzUuNSwyMjYuMywzMzUuNCwyMjcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgzLjU1LDIyNy41NUg0NjJjLTUwLjY4LDAtNzYuMDctNjEuMjctNDAuMjMtOTcuMTFMNDM3LDExNS4xOUEyOC40NCwyOC40NCwwLDAsMCwzOTYuOCw3NUwzODEuNTYsOTAuMjJjLTM1Ljg0LDM1LjgzLTk3LjExLDEwLjQ1LTk3LjExLTQwLjIzVjI4LjQ0YTI4LjQ1LDI4LjQ1LDAsMCwwLTU2LjksMFY1MGMwLDUwLjY4LTYxLjI3LDc2LjA2LTk3LjExLDQwLjIzTDExNS4yLDc1QTI4LjQ0LDI4LjQ0LDAsMCwwLDc1LDExNS4xOWwxNS4yNSwxNS4yNWMzNS44NCwzNS44NCwxMC40NSw5Ny4xMS00MC4yMyw5Ny4xMUgyOC40NWEyOC40NSwyOC40NSwwLDEsMCwwLDU2Ljg5SDUwYzUwLjY4LDAsNzYuMDcsNjEuMjgsNDAuMjMsOTcuMTJMNzUsMzk2LjhBMjguNDUsMjguNDUsMCwwLDAsMTE1LjIsNDM3bDE1LjI0LTE1LjI1YzM1Ljg0LTM1Ljg0LDk3LjExLTEwLjQ1LDk3LjExLDQwLjIzdjIxLjU0YTI4LjQ1LDI4LjQ1LDAsMCwwLDU2LjksMFY0NjJjMC01MC42OCw2MS4yNy03Ni4wNyw5Ny4xMS00MC4yM0wzOTYuOCw0MzdBMjguNDUsMjguNDUsMCwwLDAsNDM3LDM5Ni44bC0xNS4yNS0xNS4yNGMtMzUuODQtMzUuODQtMTAuNDUtOTcuMTIsNDAuMjMtOTcuMTJoMjEuNTRhMjguNDUsMjguNDUsMCwxLDAsMC01Ni44OVpNMjI0LDI3MmE0OCw0OCwwLDEsMSw0OC00OEE0OCw0OCwwLDAsMSwyMjQsMjcyWm04MCw1NmEyNCwyNCwwLDEsMSwyNC0yNEEyNCwyNCwwLDAsMSwzMDQsMzI4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCwzNTJINjExLjg4Yy0yOC41MSwwLTQyLjc5LTM0LjQ3LTIyLjYzLTU0LjYzbDguNTgtOC41N2ExNiwxNiwwLDEsMC0yMi42My0yMi42M2wtOC41Nyw4LjU4QzU0Ni40NywyOTQuOTEsNTEyLDI4MC42Myw1MTIsMjUyLjEyVjI0MGExNiwxNiwwLDAsMC0zMiwwdjEyLjEyYzAsMjguNTEtMzQuNDcsNDIuNzktNTQuNjMsMjIuNjNsLTguNTctOC41OGExNiwxNiwwLDAsMC0yMi42MywyMi42M2w4LjU4LDguNTdjMjAuMTYsMjAuMTYsNS44OCw1NC42My0yMi42Myw1NC42M0gzNjhhMTYsMTYsMCwwLDAsMCwzMmgxMi4xMmMyOC41MSwwLDQyLjc5LDM0LjQ3LDIyLjYzLDU0LjYzbC04LjU4LDguNTdhMTYsMTYsMCwxLDAsMjIuNjMsMjIuNjNsOC41Ny04LjU4YzIwLjE2LTIwLjE2LDU0LjYzLTUuODgsNTQuNjMsMjIuNjNWNDk2YTE2LDE2LDAsMCwwLDMyLDBWNDgzLjg4YzAtMjguNTEsMzQuNDctNDIuNzksNTQuNjMtMjIuNjNsOC41Nyw4LjU4YTE2LDE2LDAsMSwwLDIyLjYzLTIyLjYzbC04LjU4LTguNTdDNTY5LjA5LDQxOC40Nyw1ODMuMzcsMzg0LDYxMS44OCwzODRINjI0YTE2LDE2LDAsMCwwLDAtMzJaTTQ4MCwzODRhMzIsMzIsMCwxLDEsMzItMzJBMzIsMzIsMCwwLDEsNDgwLDM4NFpNMzQ2LjUxLDIxMy4zM2gxNi4xNmEyMS4zMywyMS4zMywwLDAsMCwwLTQyLjY2SDM0Ni41MWMtMzgsMC01Ny4wNS00Ni0zMC4xNy03Mi44NGwxMS40My0xMS40NEEyMS4zMywyMS4zMywwLDAsMCwyOTcuNiw1Ni4yM0wyODYuMTcsNjcuNjZjLTI2Ljg4LDI2Ljg4LTcyLjg0LDcuODUtNzIuODQtMzAuMTdWMjEuMzNhMjEuMzMsMjEuMzMsMCwwLDAtNDIuNjYsMFYzNy40OWMwLDM4LTQ2LDU3LjA1LTcyLjg0LDMwLjE3TDg2LjQsNTYuMjNBMjEuMzMsMjEuMzMsMCwwLDAsNTYuMjMsODYuMzlMNjcuNjYsOTcuODNjMjYuODgsMjYuODgsNy44NSw3Mi44NC0zMC4xNyw3Mi44NEgyMS4zM2EyMS4zMywyMS4zMywwLDAsMCwwLDQyLjY2SDM3LjQ5YzM4LDAsNTcuMDUsNDYsMzAuMTcsNzIuODRMNTYuMjMsMjk3LjZBMjEuMzMsMjEuMzMsMCwxLDAsODYuNCwzMjcuNzdsMTEuNDMtMTEuNDNjMjYuODgtMjYuODgsNzIuODQtNy44NSw3Mi44NCwzMC4xN3YxNi4xNmEyMS4zMywyMS4zMywwLDAsMCw0Mi42NiwwVjM0Ni41MWMwLTM4LDQ2LTU3LjA1LDcyLjg0LTMwLjE3bDExLjQzLDExLjQzYTIxLjMzLDIxLjMzLDAsMCwwLDMwLjE3LTMwLjE3bC0xMS40My0xMS40M0MyODkuNDYsMjU5LjI5LDMwOC40OSwyMTMuMzMsMzQ2LjUxLDIxMy4zM1pNMTYwLDE5MmEzMiwzMiwwLDEsMSwzMi0zMkEzMiwzMiwwLDAsMSwxNjAsMTkyWm04MCwzMmExNiwxNiwwLDEsMSwxNi0xNkExNiwxNiwwLDAsMSwyNDAsMjI0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2ljZW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDEyOGExNDQgMTQ0IDAgMCAwLTExOS43NCAyMjRIMjYzLjc0QTE0NCAxNDQgMCAxIDAgMTQ0IDQxNmgzNTJhMTQ0IDE0NCAwIDAgMCAwLTI4OHpNNjQgMjcyYTgwIDgwIDAgMSAxIDgwIDgwIDgwIDgwIDAgMCAxLTgwLTgwem00MzIgODBhODAgODAgMCAxIDEgODAtODAgODAgODAgMCAwIDEtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbGxleWJhbGxCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMS4zOSAyNDMuNDhhMjg1LjU2IDI4NS41NiAwIDAgMC0yMi43LTEwNS43Yy05MC44IDQyLjQtMTU3LjUgMTIyLjQtMTgwLjMgMjE2LjhhMjQ5IDI0OSAwIDAgMCA1Ni45IDgxLjEgMzMzLjg3IDMzMy44NyAwIDAgMSAxNDYuMS0xOTIuMnptLTM2LjktMTM0LjRhMjg0LjIzIDI4NC4yMyAwIDAgMC01Ny40LTcwLjdjLTkxIDQ5LjgtMTQ0LjggMTUyLjktMTI1IDI2Mi4yIDMzLjQtODMuMSA5OC40LTE1MiAxODIuNC0xOTEuNXptMTg3LjYgMTY1LjFjOC42LTk5LjgtMjcuMy0xOTcuNS05Ny41LTI2NC40LTE0LjctMS43LTUxLjYtNS41LTk4LjkgOC41QTMzMy44NyAzMzMuODcgMCAwIDEgMjc5LjE5IDI0MWEyODUgMjg1IDAgMCAwIDEwMi45IDMzLjE4em0tMTI0LjcgOS41YTI4Ni4zMyAyODYuMzMgMCAwIDAtODAuMiA3Mi42YzgyIDU3LjMgMTg0LjUgNzUuMSAyNzcuNSA0Ny44YTI0Ny4xNSAyNDcuMTUgMCAwIDAgNDIuMi04OS45IDMzNi4xIDMzNi4xIDAgMCAxLTgwLjkgMTAuNGMtNTQuNi0uMS0xMDguOS0xNC4xLTE1OC42LTQwLjl6bS05OC4zIDk5LjdjLTE1LjIgMjYtMjUuNyA1NC40LTMyLjEgODQuMmEyNDcuMDcgMjQ3LjA3IDAgMCAwIDI4OS0yMi4xYy0xMTIuOSAxNi4xLTIwMy4zLTI0LjgtMjU2LjktNjIuMXptMTgwLjMtMzYwLjZjNTUuMyA3MC40IDgyLjUgMTYxLjIgNzQuNiAyNTMuNmEyODYuNTkgMjg2LjU5IDAgMCAwIDg5LjctMTQuMmMwLTIgLjMtNCAuMy02IDAtMTA3LjgtNjguNy0xOTkuMS0xNjQuNi0yMzMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sdW1lRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTUuMDMgNzIuMDRMMTI2LjA2IDE2MUgyNGMtMTMuMjYgMC0yNCAxMC43NC0yNCAyNHYxNDRjMCAxMy4yNSAxMC43NCAyNCAyNCAyNGgxMDIuMDZsODguOTcgODguOTVjMTUuMDMgMTUuMDMgNDAuOTcgNC40NyA0MC45Ny0xNi45N1Y4OS4wMmMwLTIxLjQ3LTI1Ljk2LTMxLjk4LTQwLjk3LTE2Ljk4em0xMjMuMiAxMDguMDhjLTExLjU4LTYuMzMtMjYuMTktMi4xNi0zMi42MSA5LjQ1LTYuMzkgMTEuNjEtMi4xNiAyNi4yIDkuNDUgMzIuNjFDMzI3Ljk4IDIyOS4yOCAzMzYgMjQyLjYyIDMzNiAyNTdjMCAxNC4zOC04LjAyIDI3LjcyLTIwLjkyIDM0LjgxLTExLjYxIDYuNDEtMTUuODQgMjEtOS40NSAzMi42MSA2LjQzIDExLjY2IDIxLjA1IDE1LjggMzIuNjEgOS40NSAyOC4yMy0xNS41NSA0NS43Ny00NSA0NS43Ny03Ni44OHMtMTcuNTQtNjEuMzItNDUuNzgtNzYuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbHVtZU11dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1LjAzIDcxLjA1TDEyNi4wNiAxNjBIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MTQ0YzAgMTMuMjUgMTAuNzQgMjQgMjQgMjRoMTAyLjA2bDg4Ljk3IDg4Ljk1YzE1LjAzIDE1LjAzIDQwLjk3IDQuNDcgNDAuOTctMTYuOTdWODguMDJjMC0yMS40Ni0yNS45Ni0zMS45OC00MC45Ny0xNi45N3pNNDYxLjY0IDI1Nmw0NS42NC00NS42NGM2LjMtNi4zIDYuMy0xNi41MiAwLTIyLjgybC0yMi44Mi0yMi44MmMtNi4zLTYuMy0xNi41Mi02LjMtMjIuODIgMEw0MTYgMjEwLjM2bC00NS42NC00NS42NGMtNi4zLTYuMy0xNi41Mi02LjMtMjIuODIgMGwtMjIuODIgMjIuODJjLTYuMyA2LjMtNi4zIDE2LjUyIDAgMjIuODJMMzcwLjM2IDI1NmwtNDUuNjMgNDUuNjNjLTYuMyA2LjMtNi4zIDE2LjUyIDAgMjIuODJsMjIuODIgMjIuODJjNi4zIDYuMyAxNi41MiA2LjMgMjIuODIgMEw0MTYgMzAxLjY0bDQ1LjY0IDQ1LjY0YzYuMyA2LjMgMTYuNTIgNi4zIDIyLjgyIDBsMjIuODItMjIuODJjNi4zLTYuMyA2LjMtMTYuNTIgMC0yMi44Mkw0NjEuNjQgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1IDcxbC04OSA4OUgyNGEyNCAyNCAwIDAgMC0yNCAyNHYxNDRhMjQgMjQgMCAwIDAgMjQgMjRoMTAyLjA2TDIxNSA0NDFjMTUgMTUgNDEgNC40NyA0MS0xN1Y4OGMwLTIxLjQ3LTI2LTMyLTQxLTE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTUuMDMgNzEuMDVMMTI2LjA2IDE2MEgyNGMtMTMuMjYgMC0yNCAxMC43NC0yNCAyNHYxNDRjMCAxMy4yNSAxMC43NCAyNCAyNCAyNGgxMDIuMDZsODguOTcgODguOTVjMTUuMDMgMTUuMDMgNDAuOTcgNC40NyA0MC45Ny0xNi45N1Y4OC4wMmMwLTIxLjQ2LTI1Ljk2LTMxLjk4LTQwLjk3LTE2Ljk3em0yMzMuMzItNTEuMDhjLTExLjE3LTcuMzMtMjYuMTgtNC4yNC0zMy41MSA2Ljk1LTcuMzQgMTEuMTctNC4yMiAyNi4xOCA2Ljk1IDMzLjUxIDY2LjI3IDQzLjQ5IDEwNS44MiAxMTYuNiAxMDUuODIgMTk1LjU4IDAgNzguOTgtMzkuNTUgMTUyLjA5LTEwNS44MiAxOTUuNTgtMTEuMTcgNy4zMi0xNC4yOSAyMi4zNC02Ljk1IDMzLjUgNy4wNCAxMC43MSAyMS45MyAxNC41NiAzMy41MSA2Ljk1QzUyOC4yNyA0MzkuNTggNTc2IDM1MS4zMyA1NzYgMjU2UzUyOC4yNyA3Mi40MyA0NDguMzUgMTkuOTd6TTQ4MCAyNTZjMC02My41My0zMi4wNi0xMjEuOTQtODUuNzctMTU2LjI0LTExLjE5LTcuMTQtMjYuMDMtMy44Mi0zMy4xMiA3LjQ2cy0zLjc4IDI2LjIxIDcuNDEgMzMuMzZDNDA4LjI3IDE2NS45NyA0MzIgMjA5LjExIDQzMiAyNTZzLTIzLjczIDkwLjAzLTYzLjQ4IDExNS40MmMtMTEuMTkgNy4xNC0xNC41IDIyLjA3LTcuNDEgMzMuMzYgNi41MSAxMC4zNiAyMS4xMiAxNS4xNCAzMy4xMiA3LjQ2QzQ0Ny45NCAzNzcuOTQgNDgwIDMxOS41NCA0ODAgMjU2em0tMTQxLjc3LTc2Ljg3Yy0xMS41OC02LjMzLTI2LjE5LTIuMTYtMzIuNjEgOS40NS02LjM5IDExLjYxLTIuMTYgMjYuMiA5LjQ1IDMyLjYxQzMyNy45OCAyMjguMjggMzM2IDI0MS42MyAzMzYgMjU2YzAgMTQuMzgtOC4wMiAyNy43Mi0yMC45MiAzNC44MS0xMS42MSA2LjQxLTE1Ljg0IDIxLTkuNDUgMzIuNjEgNi40MyAxMS42NiAyMS4wNSAxNS44IDMyLjYxIDkuNDUgMjguMjMtMTUuNTUgNDUuNzctNDUgNDUuNzctNzYuODhzLTE3LjU0LTYxLjMyLTQ1Ljc4LTc2Ljg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb3RlWWVhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwOCAzMjBoLTY0djY0aDIyLjRjNS4zIDAgOS42IDMuNiA5LjYgOHYxNmMwIDQuNC00LjMgOC05LjYgOEg3My42Yy01LjMgMC05LjYtMy42LTkuNi04di0xNmMwLTQuNCA0LjMtOCA5LjYtOEg5NnYtNjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDU3NmMxNy43IDAgMzItMTQuMyAzMi0zMnYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS05NiA2NFY2NC4zYzAtMTcuOS0xNC41LTMyLjMtMzIuMy0zMi4zSDE2MC40QzE0Mi41IDMyIDEyOCA0Ni41IDEyOCA2NC4zVjM4NGgzODR6TTIxMS4yIDIwMmwyNS41LTI1LjNjNC4yLTQuMiAxMS00LjIgMTUuMi4xbDQxLjMgNDEuNiA5NS4yLTk0LjRjNC4yLTQuMiAxMS00LjIgMTUuMi4xbDI1LjMgMjUuNWM0LjIgNC4yIDQuMiAxMS0uMSAxNS4yTDMwMC41IDI5MmMtNC4yIDQuMi0xMSA0LjItMTUuMi0uMWwtNzQuMS03NC43Yy00LjMtNC4yLTQuMi0xMSAwLTE1LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZyQ2FyZGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTYwLjIyYzI1LjE5IDAgNDguMDMtMTQuNzcgNTguMzYtMzcuNzRsMjcuNzQtNjEuNjRDMjg2LjIxIDMzMS4wOCAzMDIuMzUgMzIwIDMyMCAzMjBzMzMuNzkgMTEuMDggNDEuNjggMjguNjJsMjcuNzQgNjEuNjRDMzk5Ljc1IDQzMy4yMyA0MjIuNiA0NDggNDQ3Ljc4IDQ0OEg2MDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xNjAgMzA0Yy0zNS4zNSAwLTY0LTI4LjY1LTY0LTY0czI4LjY1LTY0IDY0LTY0IDY0IDI4LjY1IDY0IDY0LTI4LjY1IDY0LTY0IDY0em0zMjAgMGMtMzUuMzUgMC02NC0yOC42NS02NC02NHMyOC42NS02NCA2NC02NCA2NCAyOC42NSA2NCA2NC0yOC42NSA2NC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2Fsa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTMjM0LjUgMCAyMDggMHMtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em05NC41IDE0OS4xbC0yMy4zLTExLjgtOS43LTI5LjRjLTE0LjctNDQuNi01NS43LTc1LjgtMTAyLjItNzUuOS0zNi0uMS01NS45IDEwLjEtOTMuMyAyNS4yLTIxLjYgOC43LTM5LjMgMjUuMi00OS43IDQ2LjJMMTcuNiAyMTNjLTcuOCAxNS44LTEuNSAzNSAxNC4yIDQyLjkgMTUuNiA3LjkgMzQuNiAxLjUgNDIuNS0xNC4zTDgxIDIyOGMzLjUtNyA5LjMtMTIuNSAxNi41LTE1LjRsMjYuOC0xMC44LTE1LjIgNjAuN2MtNS4yIDIwLjguNCA0Mi45IDE0LjkgNTguOGw1OS45IDY1LjRjNy4yIDcuOSAxMi4zIDE3LjQgMTQuOSAyNy43bDE4LjMgNzMuM2M0LjMgMTcuMSAyMS43IDI3LjYgMzguOCAyMy4zIDE3LjEtNC4zIDI3LjYtMjEuNyAyMy4zLTM4LjhsLTIyLjItODljLTIuNi0xMC4zLTcuNy0xOS45LTE0LjktMjcuN2wtNDUuNS00OS43IDE3LjItNjguNyA1LjUgMTYuNWM1LjMgMTYuMSAxNi43IDI5LjQgMzEuNyAzN2wyMy4zIDExLjhjMTUuNiA3LjkgMzQuNiAxLjUgNDIuNS0xNC4zIDcuNy0xNS43IDEuNC0zNS4xLTE0LjMtNDN6TTczLjYgMzg1LjhjLTMuMiA4LjEtOCAxNS40LTE0LjIgMjEuNWwtNTAgNTAuMWMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuNyAxMi41IDQ1LjIgMGw1OS40LTU5LjRjNi4xLTYuMSAxMC45LTEzLjQgMTQuMi0yMS41bDEzLjUtMzMuOGMtNTUuMy02MC4zLTM4LjctNDEuOC00Ny40LTUzLjdsLTIwLjcgNTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2FsbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MS4yIDEyOEg4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNmgzODRjOC44NCAwIDE2LTcuMTYgMTYtMTYgMC0yNi41MS0yMS40OS00OC00OC00OEg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzk3LjJjMjguMDIgMCA1MC44LTIxLjUzIDUwLjgtNDhWMTc2YzAtMjYuNDctMjIuNzgtNDgtNTAuOC00OHpNNDE2IDMzNmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2FyZWhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAzNTJIMTM2LjRjLTQuNCAwLTggMy42LTggOGwtLjEgNDhjMCA0LjQgMy42IDggOCA4SDUwNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMCA5NkgxMzYuMWMtNC40IDAtOCAzLjYtOCA4bC0uMSA0OGMwIDQuNCAzLjYgOCA4IDhoMzY4YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04em0wLTE5MkgxMzYuNmMtNC40IDAtOCAzLjYtOCA4bC0uMSA0OGMwIDQuNCAzLjYgOCA4IDhINTA0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04em0xMDYuNS0xMzlMMzM4LjQgMy43YTQ4LjE1IDQ4LjE1IDAgMCAwLTM2LjkgMEwyOS41IDExN0MxMS43IDEyNC41IDAgMTQxLjkgMCAxNjEuM1Y1MDRjMCA0LjQgMy42IDggOCA4aDgwYzQuNCAwIDgtMy42IDgtOFYyNTZjMC0xNy42IDE0LjYtMzIgMzIuNi0zMmgzODIuOGMxOCAwIDMyLjYgMTQuNCAzMi42IDMydjI0OGMwIDQuNCAzLjYgOCA4IDhoODBjNC40IDAgOC0zLjYgOC04VjE2MS4zYzAtMTkuNC0xMS43LTM2LjgtMjkuNS00NC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjIuMSAzODMuOWMtMjEuNS0yLjQtNDIuMS0xMC41LTU3LjktMjIuOS0xNC4xLTExLjEtMzQuMi0xMS4zLTQ4LjIgMC0zNy45IDMwLjQtMTA3LjIgMzAuNC0xNDUuNy0xLjUtMTMuNS0xMS4yLTMzLTkuMS00Ni43IDEuOC0zOCAzMC4xLTEwNi45IDMwLTE0NS4yLTEuNy0xMy41LTExLjItMzMuMy04LjktNDcuMSAyLTE1LjUgMTIuMi0zNiAyMC4xLTU3LjcgMjIuNC03LjkuOC0xMy42IDcuOC0xMy42IDE1Ljd2MzIuMmMwIDkuMSA3LjYgMTYuOCAxNi43IDE2IDI4LjgtMi41IDU2LjEtMTEuNCA3OS40LTI1LjkgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCAyMy4zIDE0LjIgNTAuOSAyMy4zIDc5LjEgMjUuOCA5LjEuOCAxNi43LTYuOSAxNi43LTE2di0zMS42Yy4xLTgtNS43LTE1LjQtMTMuOC0xNi4zem0wLTE0NGMtMjEuNS0yLjQtNDIuMS0xMC41LTU3LjktMjIuOS0xNC4xLTExLjEtMzQuMi0xMS4zLTQ4LjIgMC0zNy45IDMwLjQtMTA3LjIgMzAuNC0xNDUuNy0xLjUtMTMuNS0xMS4yLTMzLTkuMS00Ni43IDEuOC0zOCAzMC4xLTEwNi45IDMwLTE0NS4yLTEuNy0xMy41LTExLjItMzMuMy04LjktNDcuMSAyLTE1LjUgMTIuMi0zNiAyMC4xLTU3LjcgMjIuNC03LjkuOC0xMy42IDcuOC0xMy42IDE1Ljd2MzIuMmMwIDkuMSA3LjYgMTYuOCAxNi43IDE2IDI4LjgtMi41IDU2LjEtMTEuNCA3OS40LTI1LjkgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCAyMy4zIDE0LjIgNTAuOSAyMy4zIDc5LjEgMjUuOCA5LjEuOCAxNi43LTYuOSAxNi43LTE2di0zMS42Yy4xLTgtNS43LTE1LjQtMTMuOC0xNi4zem0wLTE0NEM1NDAuNiA5My40IDUyMCA4NS40IDUwNC4yIDczIDQ5MC4xIDYxLjkgNDcwIDYxLjcgNDU2IDczYy0zNy45IDMwLjQtMTA3LjIgMzAuNC0xNDUuNy0xLjUtMTMuNS0xMS4yLTMzLTkuMS00Ni43IDEuOC0zOCAzMC4xLTEwNi45IDMwLTE0NS4yLTEuNy0xMy41LTExLjItMzMuMy04LjktNDcuMSAyLTE1LjUgMTIuMi0zNiAyMC4xLTU3LjcgMjIuNC03LjkuOC0xMy42IDcuOC0xMy42IDE1Ljd2MzIuMmMwIDkuMSA3LjYgMTYuOCAxNi43IDE2IDI4LjgtMi41IDU2LjEtMTEuNCA3OS40LTI1LjkgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCAyMy4zIDE0LjIgNTAuOSAyMy4zIDc5LjEgMjUuOCA5LjEuOCAxNi43LTYuOSAxNi43LTE2di0zMS42Yy4xLTgtNS43LTE1LjQtMTMuOC0xNi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXZlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3NiA0ODBIMzI0YTM2IDM2IDAgMCAxLTM2LTM2Vjk2aC05NnYxNTZhMzYgMzYgMCAwIDEtMzYgMzZIMTZhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDExMlY2OGEzNiAzNiAwIDAgMSAzNi0zNmgxNTJhMzYgMzYgMCAwIDEgMzYgMzZ2MzQ4aDk2VjI2MGEzNiAzNiAwIDAgMSAzNi0zNmgxNDBhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZINTEydjE1NmEzNiAzNiAwIDAgMS0zNiAzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VpZ2h0SGFuZ2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTAuMjggNDQ1Ljg2bC03My4wMy0yOTIuMTNjLTMuOC0xNS4xOS0xNi40NC0yNS43Mi0zMC44Ny0yNS43MmgtNjAuMjVjMy41Ny0xMC4wNSA1Ljg4LTIwLjcyIDUuODgtMzIgMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZjMCAxMS4yOCAyLjMgMjEuOTUgNS44OCAzMmgtNjAuMjVjLTE0LjQzIDAtMjcuMDggMTAuNTQtMzAuODcgMjUuNzJMMS43MiA0NDUuODZDLTYuNjEgNDc5LjE3IDE2LjM4IDUxMiA0OC4wMyA1MTJoNDE1Ljk1YzMxLjY0IDAgNTQuNjMtMzIuODMgNDYuMy02Ni4xNHpNMjU2IDEyOGMtMTcuNjQgMC0zMi0xNC4zNi0zMi0zMnMxNC4zNi0zMiAzMi0zMiAzMiAxNC4zNiAzMiAzMi0xNC4zNiAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA2NGgtMjUuOThDNDM4LjQ0IDkyLjI4IDQ0OCAxMjUuMDEgNDQ4IDE2MGMwIDEwNS44Ny04Ni4xMyAxOTItMTkyIDE5MlM2NCAyNjUuODcgNjQgMTYwYzAtMzQuOTkgOS41Ni02Ny43MiAyNS45OC05Nkg2NEMyOC43MSA2NCAwIDkyLjcxIDAgMTI4djMyMGMwIDM1LjI5IDI4LjcxIDY0IDY0IDY0aDM4NGMzNS4yOSAwIDY0LTI4LjcxIDY0LTY0VjEyOGMwLTM1LjI5LTI4LjcxLTY0LTY0LTY0ek0yNTYgMzIwYzg4LjM3IDAgMTYwLTcxLjYzIDE2MC0xNjBTMzQ0LjM3IDAgMjU2IDAgOTYgNzEuNjMgOTYgMTYwczcxLjYzIDE2MCAxNjAgMTYwem0tLjMtMTUxLjk0bDMzLjU4LTc4LjM2YzMuNS04LjE3IDEyLjk0LTExLjkyIDIxLjAzLTguNDEgOC4xMiAzLjQ4IDExLjg4IDEyLjg5IDguNDEgMjFsLTMzLjY3IDc4LjU1QzI5MS43MyAxODggMjk2IDE5Ny40NSAyOTYgMjA4YzAgMjIuMDktMTcuOTEgNDAtNDAgNDBzLTQwLTE3LjkxLTQwLTQwYzAtMjEuOTggMTcuNzYtMzkuNzcgMzkuNy0zOS45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2hlZWxjaGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYuMTAxIDM4NS42NjlsMTQuMjI3IDI4LjY2M2MzLjkyOSA3LjkxNS42OTcgMTcuNTE2LTcuMjE4IDIxLjQ0NWwtNjUuNDY1IDMyLjg4NmMtMTYuMDQ5IDcuOTY3LTM1LjU1NiAxLjE5NC00My4xODktMTUuMDU1TDMzMS42NzkgMzIwSDE5MmMtMTUuOTI1IDAtMjkuNDI2LTExLjcxLTMxLjY3OS0yNy40NzVDMTI2LjQzMyA1NS4zMDggMTI4LjM4IDcwLjA0NCAxMjggNjRjMC0zNi4zNTggMzAuMzE4LTY1LjYzNSA2Ny4wNTItNjMuOTI5IDMzLjI3MSAxLjU0NSA2MC4wNDggMjguOTA1IDYwLjkyNSA2Mi4yMDEuODY4IDMyLjkzMy0yMy4xNTIgNjAuNDIzLTU0LjYwOCA2NS4wMzlsNC42NyAzMi42OUgzMzZjOC44MzcgMCAxNiA3LjE2MyAxNiAxNnYzMmMwIDguODM3LTcuMTYzIDE2LTE2IDE2SDIxNS4xODJsNC41NzIgMzJIMzUyYTMyIDMyIDAgMCAxIDI4Ljk2MiAxOC4zOTJMNDM4LjQ3NyAzOTYuOGwzNi4xNzgtMTguMzQ5YzcuOTE1LTMuOTI5IDE3LjUxNy0uNjk3IDIxLjQ0NiA3LjIxOHpNMzExLjM1OCAzNTJoLTI0LjUwNmMtNy43ODggNTQuMjA0LTU0LjUyOCA5Ni0xMTAuODUyIDk2LTYxLjc1NyAwLTExMi01MC4yNDMtMTEyLTExMiAwLTQxLjUwNSAyMi42OTQtNzcuODA5IDU2LjMyNC05Ny4xNTYtMy43MTItMjUuOTY1LTYuODQ0LTQ3Ljg2LTkuNDg4LTY2LjMzM0M0NS45NTYgMTk4LjQ2NCAwIDI2MS45NjMgMCAzMzZjMCA5Ny4wNDcgNzguOTUzIDE3NiAxNzYgMTc2IDcxLjg3IDAgMTMzLjgwNi00My4zMDggMTYxLjExLTEwNS4xOTJMMzExLjM1OCAzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM0LjkxIDE1NC44OEM0NTcuNzQtOC45OSAxODIuMTktOC45MyA1LjA5IDE1NC44OGMtNi42NiA2LjE2LTYuNzkgMTYuNTktLjM1IDIyLjk4bDM0LjI0IDMzLjk3YzYuMTQgNi4xIDE2LjAyIDYuMjMgMjIuNC4zOCAxNDUuOTItMTMzLjY4IDM3MS4zLTEzMy43MSA1MTcuMjUgMCA2LjM4IDUuODUgMTYuMjYgNS43MSAyMi40LS4zOGwzNC4yNC0zMy45N2M2LjQzLTYuMzkgNi4zLTE2LjgyLS4zNi0yMi45OHpNMzIwIDM1MmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHMyOC42NSA2NCA2NCA2NCA2NC0yOC42NSA2NC02NC0yOC42NS02NC02NC02NHptMjAyLjY3LTgzLjU5Yy0xMTUuMjYtMTAxLjkzLTI5MC4yMS0xMDEuODItNDA1LjM0IDAtNi45IDYuMS03LjEyIDE2LjY5LS41NyAyMy4xNWwzNC40NCAzMy45OWM2IDUuOTIgMTUuNjYgNi4zMiAyMi4wNS44IDgzLjk1LTcyLjU3IDIwOS43NC03Mi40MSAyOTMuNDkgMCA2LjM5IDUuNTIgMTYuMDUgNS4xMyAyMi4wNS0uOGwzNC40NC0zMy45OWM2LjU2LTYuNDYgNi4zMy0xNy4wNi0uNTYtMjMuMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU2LjcgMjU2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDE0Mi4yYzE1LjkgMCAzMC44IDEwLjkgMzMuNCAyNi42IDMuMyAyMC0xMi4xIDM3LjQtMzEuNiAzNy40LTE0LjEgMC0yNi4xLTkuMi0zMC40LTIxLjktMi4xLTYuMy04LjYtMTAuMS0xNS4yLTEwLjFIODEuNmMtOS44IDAtMTcuNyA4LjgtMTUuOSAxOC40IDguNiA0NC4xIDQ3LjYgNzcuNiA5NC4yIDc3LjYgNTcuMSAwIDEwMi43LTUwLjEgOTUuMi0xMDguNkMyNDkgMjkxIDIwNS40IDI1NiAxNTYuNyAyNTZ6TTE2IDIyNGgzMzZjNTkuNyAwIDEwNi44LTU0LjggOTMuOC0xMTYuNy03LjYtMzYuMi0zNi45LTY1LjUtNzMuMS03My4xLTU1LjQtMTEuNi0xMDUuMSAyNC45LTExNC45IDc1LjUtMS45IDkuNiA2LjEgMTguMyAxNS44IDE4LjNoMzIuOGM2LjcgMCAxMy4xLTMuOCAxNS4yLTEwLjFDMzI1LjkgMTA1LjIgMzM3LjkgOTYgMzUyIDk2YzE5LjQgMCAzNC45IDE3LjQgMzEuNiAzNy40LTIuNiAxNS43LTE3LjQgMjYuNi0zMy40IDI2LjZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZ6bTM4NCAzMkgyNDMuN2MxOS4zIDE2LjYgMzMuMiAzOC44IDM5LjggNjRINDAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4Yy0xNy45IDAtMzMuMy05LjktNDEuNi0yNC40LTIuOS01LTguNy03LjYtMTQuNS03LjZoLTMzLjhjLTEwLjkgMC0xOSAxMC44LTE1LjMgMjEuMSAxNy44IDUwLjYgNzAuNSA4NC44IDEyOS40IDcyLjMgNDEuMi04LjcgNzUuMS00MS42IDg0LjctODIuN0M1MjYgMzIxLjUgNDcwLjUgMjU2IDQwMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmRvd0Nsb3NlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS04My42IDI5MC41YzQuOCA0LjggNC44IDEyLjYgMCAxNy40bC00MC41IDQwLjVjLTQuOCA0LjgtMTIuNiA0LjgtMTcuNCAwTDI1NiAzMTMuM2wtNjYuNSA2Ny4xYy00LjggNC44LTEyLjYgNC44LTE3LjQgMGwtNDAuNS00MC41Yy00LjgtNC44LTQuOC0xMi42IDAtMTcuNGw2Ny4xLTY2LjUtNjcuMS02Ni41Yy00LjgtNC44LTQuOC0xMi42IDAtMTcuNGw0MC41LTQwLjVjNC44LTQuOCAxMi42LTQuOCAxNy40IDBsNjYuNSA2Ny4xIDY2LjUtNjcuMWM0LjgtNC44IDEyLjYtNC44IDE3LjQgMGw0MC41IDQwLjVjNC44IDQuOCA0LjggMTIuNiAwIDE3LjRMMzEzLjMgMjU2bDY3LjEgNjYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93TWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTE2IDE2MEg2NHYtODRjMC02LjYgNS40LTEyIDEyLTEyaDM2MGM2LjYgMCAxMiA1LjQgMTIgMTJ2ODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmRvd01pbmltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzNTJINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMzJjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmRvd1Jlc3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDQ4djI4OGMwIDI2LjUtMjEuNSA0OC00OCA0OGgtNDhWMTc2YzAtNDQuMS0zNS45LTgwLTgwLTgwSDEyOFY0OGMwLTI2LjUgMjEuNS00OCA0OC00OGgyODhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTM4NCAxNzZ2Mjg4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDhoMjg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNjggMjhjMC02LjYtNS40LTEyLTEyLTEySDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJoMjUydi01MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZUJvdHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDcuMzEgNzIuNTdMNDM5LjQzIDQuNjljLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTIyLjYzIDIyLjYzYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbC03Ni42NyA3Ni42N2MtNDYuNTgtMTkuNy0xMDIuNC0xMC43My0xNDAuMzcgMjcuMjNMMTguNzUgMzEyLjIzYy0yNC45OSAyNC45OS0yNC45OSA2NS41MiAwIDkwLjUxbDkwLjUxIDkwLjUxYzI0Ljk5IDI0Ljk5IDY1LjUyIDI0Ljk5IDkwLjUxIDBsMTU4LjM5LTE1OC4zOWMzNy45Ni0zNy45NiA0Ni45My05My43OSAyNy4yMy0xNDAuMzdsNzYuNjctNzYuNjdjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI0LTYuMjQgNi4yNC0xNi4zNy0uMDEtMjIuNjJ6TTE3OS4yMiA0MjMuMjlsLTkwLjUxLTkwLjUxIDEyMi4wNC0xMjIuMDQgOTAuNTEgOTAuNTEtMTIyLjA0IDEyMi4wNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZUdsYXNzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNiA0NjRoLTQwVjM0Ni44MWM2OC40Ny0xNS44OSAxMTguMDUtNzkuOTEgMTExLjQtMTU0LjE2bC0xNS45NS0xNzguMUMyNzAuNzEgNi4zMSAyNjMuOSAwIDI1NS43NCAwSDMyLjI2Yy04LjE1IDAtMTQuOTcgNi4zMS0xNS43IDE0LjU1TC42IDE5Mi42NkMtNi4wNSAyNjYuOTEgNDMuNTMgMzMwLjkzIDExMiAzNDYuODJWNDY0SDcyYy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwIDAgNC40MiAzLjU4IDggOCA4aDIwOGM0LjQyIDAgOC0zLjU4IDgtOCAwLTIyLjA5LTE3LjkxLTQwLTQwLTQwek02MS43NSA0OGgxNjQuNWw3LjE3IDgwSDU0LjU4bDcuMTctODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVHbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgNDY0aC00MFYzNDYuODFjNjguNDctMTUuODkgMTE4LjA1LTc5LjkxIDExMS40LTE1NC4xNmwtMTUuOTUtMTc4LjFDMjcwLjcxIDYuMzEgMjYzLjkgMCAyNTUuNzQgMEgzMi4yNmMtOC4xNSAwLTE0Ljk3IDYuMzEtMTUuNyAxNC41NUwuNiAxOTIuNjZDLTYuMDUgMjY2LjkxIDQzLjUzIDMzMC45MyAxMTIgMzQ2LjgyVjQ2NEg3MmMtMjIuMDkgMC00MCAxNy45MS00MCA0MCAwIDQuNDIgMy41OCA4IDggOGgyMDhjNC40MiAwIDgtMy41OCA4LTggMC0yMi4wOS0xNy45MS00MC00MC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV29uU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjQgMTkyYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00OGwxOC42LTgwLjZjMS43LTcuNS00LTE0LjctMTEuNy0xNC43aC00Ni4xYy01LjcgMC0xMC42IDQtMTEuNyA5LjVMNDUwLjcgMTI4SDM0MC44bC0xOS43LTg2Yy0xLjMtNS41LTYuMS05LjMtMTEuNy05LjNoLTQ0Yy01LjYgMC0xMC40IDMuOC0xMS43IDkuM2wtMjAgODZIMTI1bC0xNy41LTg1LjdjLTEuMS01LjYtNi4xLTkuNi0xMS44LTkuNkg1My42Yy03LjcgMC0xMy40IDcuMS0xMS43IDE0LjZMNjAgMTI4SDEyYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDYyLjNsNy4yIDMySDEyYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDgzLjlsNDAuOSAxODIuNmMxLjIgNS41IDYuMSA5LjQgMTEuNyA5LjRoNTYuOGM1LjYgMCAxMC40LTMuOSAxMS43LTkuM0wyNTkuMyAyODhoNTUuMWw0Mi40IDE4Mi43YzEuMyA1LjQgNi4xIDkuMyAxMS43IDkuM2g1Ni44YzUuNiAwIDEwLjQtMy45IDExLjctOS4zTDQ3OS4xIDI4OEg1NjRjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTcwLjFsNy40LTMyek0xODMuOCAzNDJjLTYuMiAyNS44LTYuOCA0Ny4yLTcuMyA0Ny4yaC0xLjFzLTEuNy0yMi02LjgtNDcuMmwtMTEtNTRoMzguOHptMjcuNS0xMThoLTY2LjhsLTYuNS0zMmg4MC44em02Mi45IDBsMi04LjZjMS45LTggMy41LTE2IDQuOC0yMy40aDExLjhjMS4zIDcuNCAyLjkgMTUuNCA0LjggMjMuNGwyIDguNnptMTMwLjkgMTE4Yy01LjEgMjUuMi02LjggNDcuMi02LjggNDcuMmgtMS4xYy0uNiAwLTEuMS0yMS40LTcuMy00Ny4ybC0xMi40LTU0aDM5LjF6bTI1LjItMTE4aC02Ny40bC03LjMtMzJoODEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3JlbmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNy43MyAxMDkuMWMtMi4yNC05LjAzLTEzLjU0LTEyLjA5LTIwLjEyLTUuNTFsLTc0LjM2IDc0LjM2LTY3Ljg4LTExLjMxLTExLjMxLTY3Ljg4IDc0LjM2LTc0LjM2YzYuNjItNi42MiAzLjQzLTE3LjktNS42Ni0yMC4xNi00Ny4zOC0xMS43NC05OS41NS45MS0xMzYuNTggMzcuOTMtMzkuNjQgMzkuNjQtNTAuNTUgOTcuMS0zNC4wNSAxNDcuMkwxOC43NCA0MDIuNzZjLTI0Ljk5IDI0Ljk5LTI0Ljk5IDY1LjUxIDAgOTAuNSAyNC45OSAyNC45OSA2NS41MSAyNC45OSA5MC41IDBsMjEzLjIxLTIxMy4yMWM1MC4xMiAxNi43MSAxMDcuNDcgNS42OCAxNDcuMzctMzQuMjIgMzcuMDctMzcuMDcgNDkuNy04OS4zMiAzNy45MS0xMzYuNzN6TTY0IDQ3MmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVhSYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwIDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNiAxNi03LjIgMTYtMTYtNy4yLTE2LTE2LTE2em0xNjAgMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTYtMTYgNy4yLTE2IDE2IDcuMiAxNiAxNiAxNnpNNjI0IDBIMTZDNy4yIDAgMCA3LjIgMCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjA4YzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZ6bTAgNDQ4aC00OFY5Nkg2NHYzNTJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjA4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek00ODAgMjQ4YzAgNC40LTMuNiA4LTggOEgzMzZ2MzJoMTA0YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzM2djMyaDY0YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4LTQ4LTIxLjUtNDgtNDh2LTE2aC02NHYxNmMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OCAyMS41LTQ4IDQ4LTQ4aDY0di0zMkgyMDBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDEwNHYtMzJIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxMzZ2LTMySDIwMGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTA0di0yNGMwLTQuNCAzLjYtOCA4LThoMTZjNC40IDAgOCAzLjYgOCA4djI0aDEwNGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMzNnYzMmgxMzZjNC40IDAgOCAzLjYgOCA4djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZZW5TaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MS4yIDMyaC02NS4zYy00LjYgMC04LjggMi42LTEwLjggNi43bC01NS40IDExMy4yYy0xNC41IDM0LjctMjcuMSA3MS45LTI3LjEgNzEuOWgtMS4zcy0xMi42LTM3LjItMjcuMS03MS45TDEwOC44IDM4LjdjLTItNC4xLTYuMi02LjctMTAuOC02LjdIMzIuOGMtOS4xIDAtMTQuOCA5LjctMTAuNiAxNy42TDEwMi4zIDIwMEg0NGMtNi42IDAtMTIgNS40LTEyIDEydjMyYzAgNi42IDUuNCAxMiAxMiAxMmg4OC4ybDE5LjggMzcuMlYzMjBINDRjLTYuNiAwLTEyIDUuNC0xMiAxMnYzMmMwIDYuNiA1LjQgMTIgMTIgMTJoMTA4djkyYzAgNi42IDUuNCAxMiAxMiAxMmg1NmM2LjYgMCAxMi01LjQgMTItMTJ2LTkyaDEwOGM2LjYgMCAxMi01LjQgMTItMTJ2LTMyYzAtNi42LTUuNC0xMi0xMi0xMkgyMzJ2LTI2LjhsMTkuOC0zNy4ySDM0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTMyYzAtNi42LTUuNC0xMi0xMi0xMmgtNTguM2w4MC4xLTE1MC40YzQuMy03LjktMS41LTE3LjYtMTAuNi0xNy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZaW5ZYW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgMzc2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTEyOGMtNTMuMDIgMC05NiA0Mi45OC05NiA5NnM0Mi45OCA5NiA5NiA5NmMtMTA2LjA0IDAtMTkyLTg1Ljk2LTE5Mi0xOTJTMTQxLjk2IDY0IDI0OCA2NGM1My4wMiAwIDk2IDQyLjk4IDk2IDk2cy00Mi45OCA5Ni05NiA5NnptMC0xMjhjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0FkZHJlc3NCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNiAxNjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwVjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMzIwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00OGgyMGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjB2LTY0aDIwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMHYtNjRoMjB6bS02OCAzMDRINDhWNDhoMzIwdjQxNnpNMjA4IDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bS04OS42IDEyOGgxNzkuMmMxMi40IDAgMjIuNC04LjYgMjIuNC0xOS4ydi0xOS4yYzAtMzEuOC0zMC4xLTU3LjYtNjcuMi01Ny42LTEwLjggMC0xOC43IDgtNDQuOCA4LTI2LjkgMC0zMy40LTgtNDQuOC04LTM3LjEgMC02Ny4yIDI1LjgtNjcuMiA1Ny42djE5LjJjMCAxMC42IDEwIDE5LjIgMjIuNCAxOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0wIDQwMEg0OFY4MGg0ODB2MzUyek0yMDggMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptLTg5LjYgMTI4aDE3OS4yYzEyLjQgMCAyMi40LTguNiAyMi40LTE5LjJ2LTE5LjJjMC0zMS44LTMwLjEtNTcuNi02Ny4yLTU3LjYtMTAuOCAwLTE4LjcgOC00NC44IDgtMjYuOSAwLTMzLjQtOC00NC44LTgtMzcuMSAwLTY3LjIgMjUuOC02Ny4yIDU3LjZ2MTkuMmMwIDEwLjYgMTAgMTkuMiAyMi40IDE5LjJ6TTM2MCAzMjBoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMC02NGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4em0wLTY0aDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0FuZ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMC0xNDRjLTMzLjYgMC02NS4yIDE0LjgtODYuOCA0MC42LTguNSAxMC4yLTcuMSAyNS4zIDMuMSAzMy44czI1LjMgNy4yIDMzLjgtM2MyNC44LTI5LjcgNzUtMjkuNyA5OS44IDAgOC4xIDkuNyAyMy4yIDExLjkgMzMuOCAzIDEwLjItOC41IDExLjUtMjMuNiAzLjEtMzMuOC0yMS42LTI1LjgtNTMuMi00MC42LTg2LjgtNDAuNnptLTQ4LTcyYzEwLjMgMCAxOS45LTYuNyAyMy0xNy4xIDMuOC0xMi43LTMuNC0yNi4xLTE2LjEtMjkuOWwtODAtMjRjLTEyLjgtMy45LTI2LjEgMy40LTI5LjkgMTYuMS0zLjggMTIuNyAzLjQgMjYuMSAxNi4xIDI5LjlsMjguMiA4LjVjLTMuMSA0LjktNS4zIDEwLjQtNS4zIDE2LjYgMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuNCAzMi0zMi4xem0xOTktNTQuOWMtMy44LTEyLjctMTcuMS0xOS45LTI5LjktMTYuMWwtODAgMjRjLTEyLjcgMy44LTE5LjkgMTcuMi0xNi4xIDI5LjkgMy4xIDEwLjQgMTIuNyAxNy4xIDIzIDE3LjEgMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTYuMi0yLjItMTEuNy01LjMtMTYuNmwyOC4yLTguNWMxMi43LTMuNyAxOS45LTE3LjEgMTYuMS0yOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBcnJvd0FsdENpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCA0NDhjLTExMC41IDAtMjAwLTg5LjUtMjAwLTIwMFMxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwem0tMzItMzE2djExNmgtNjdjLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDk5IDk5YzQuNyA0LjcgMTIuMyA0LjcgMTcgMGw5OS05OWM3LjYtNy42IDIuMi0yMC41LTguNS0yMC41aC02N1YxNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBcnJvd0FsdENpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOCA4IDExOSA4IDI1NnptNDQ4IDBjMCAxMTAuNS04OS41IDIwMC0yMDAgMjAwUzU2IDM2Ni41IDU2IDI1NiAxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMHptLTcyLTIwdjQwYzAgNi42LTUuNCAxMi0xMiAxMkgyNTZ2NjdjMCAxMC43LTEyLjkgMTYtMjAuNSA4LjVsLTk5LTk5Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsOTktOTljNy42LTcuNiAyMC41LTIuMiAyMC41IDguNXY2N2gxMTZjNi42IDAgMTIgNS40IDEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBcnJvd0FsdENpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZDNTA0IDExOSAzOTMgOCAyNTYgOFM4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4em0tNDQ4IDBjMC0xMTAuNSA4OS41LTIwMCAyMDAtMjAwczIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMFM1NiAzNjYuNSA1NiAyNTZ6bTcyIDIwdi00MGMwLTYuNiA1LjQtMTIgMTItMTJoMTE2di02N2MwLTEwLjcgMTIuOS0xNiAyMC41LTguNWw5OSA5OWM0LjcgNC43IDQuNyAxMi4zIDAgMTdsLTk5IDk5Yy03LjYgNy42LTIwLjUgMi4yLTIwLjUtOC41di02N0gxNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQXJyb3dBbHRDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTA0YzEzNyAwIDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDh6bTAtNDQ4YzExMC41IDAgMjAwIDg5LjUgMjAwIDIwMHMtODkuNSAyMDAtMjAwIDIwMFM1NiAzNjYuNSA1NiAyNTYgMTQ1LjUgNTYgMjU2IDU2em0yMCAzMjhoLTQwYy02LjYgMC0xMi01LjQtMTItMTJWMjU2aC02N2MtMTAuNyAwLTE2LTEyLjktOC41LTIwLjVsOTktOTljNC43LTQuNyAxMi4zLTQuNyAxNyAwbDk5IDk5YzcuNiA3LjYgMi4yIDIwLjUtOC41IDIwLjVoLTY3djExNmMwIDYuNi01LjQgMTItMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0JlbGxTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuOTkgNDcxLjAyTDM2IDMuNTFDMjkuMS0yLjAxIDE5LjAzLS45IDEzLjUxIDZsLTEwIDEyLjQ5Qy0yLjAyIDI1LjM5LS45IDM1LjQ2IDYgNDAuOThsNTk4IDQ2Ny41MWM2LjkgNS41MiAxNi45NiA0LjQgMjIuNDktMi40OWwxMC0xMi40OWM1LjUyLTYuOSA0LjQxLTE2Ljk3LTIuNS0yMi40OXpNMTYzLjUzIDM2OGMxNi43MS0yMi4wMyAzNC40OC01NS44IDQxLjQtMTEwLjU4bC00NS40Ny0zNS41NWMtMy4yNyA5MC43My0zNi40NyAxMjAuNjgtNTQuODQgMTQwLjQyLTYgNi40NS04LjY2IDE0LjE2LTguNjEgMjEuNzEuMTEgMTYuNCAxMi45OCAzMiAzMi4xIDMyaDI3OS42NmwtNjEuNC00OEgxNjMuNTN6TTMyMCA5NmM2MS44NiAwIDExMiA1MC4xNCAxMTIgMTEyIDAgLjItLjA2LjM4LS4wNi41OC4wMiAxNi44NCAxLjE2IDMxLjc3IDIuNzkgNDUuNzNsNTkuNTMgNDYuNTRjLTguMzEtMjIuMTMtMTQuMzQtNTEuNDktMTQuMzQtOTIuODUgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRjLTI2LjAyIDUuNDEtNDkuNDUgMTYuOTQtNjkuMTMgMzIuNzJsMzguMTcgMjkuODRDMjc1IDEwMy4xOCAyOTYuNjUgOTYgMzIwIDk2em0wIDQxNmMzNS4zMiAwIDYzLjk3LTI4LjY1IDYzLjk3LTY0SDI1Ni4wM2MwIDM1LjM1IDI4LjY1IDY0IDYzLjk3IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdCZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS4zOSAzNjIuMjljLTE5LjMyLTIwLjc2LTU1LjQ3LTUxLjk5LTU1LjQ3LTE1NC4yOSAwLTc3LjctNTQuNDgtMTM5LjktMTI3Ljk0LTE1NS4xNlYzMmMwLTE3LjY3LTE0LjMyLTMyLTMxLjk4LTMycy0zMS45OCAxNC4zMy0zMS45OCAzMnYyMC44NEMxMTguNTYgNjguMSA2NC4wOCAxMzAuMyA2NC4wOCAyMDhjMCAxMDIuMy0zNi4xNSAxMzMuNTMtNTUuNDcgMTU0LjI5LTYgNi40NS04LjY2IDE0LjE2LTguNjEgMjEuNzEuMTEgMTYuNCAxMi45OCAzMiAzMi4xIDMyaDM4My44YzE5LjEyIDAgMzItMTUuNiAzMi4xLTMyIC4wNS03LjU1LTIuNjEtMTUuMjctOC42MS0yMS43MXpNNjcuNTMgMzY4YzIxLjIyLTI3Ljk3IDQ0LjQyLTc0LjMzIDQ0LjUzLTE1OS40MiAwLS4yLS4wNi0uMzgtLjA2LS41OCAwLTYxLjg2IDUwLjE0LTExMiAxMTItMTEyczExMiA1MC4xNCAxMTIgMTEyYzAgLjItLjA2LjM4LS4wNi41OC4xMSA4NS4xIDIzLjMxIDEzMS40NiA0NC41MyAxNTkuNDJINjcuNTN6TTIyNCA1MTJjMzUuMzIgMCA2My45Ny0yOC42NSA2My45Ny02NEgxNjAuMDNjMCAzNS4zNSAyOC42NSA2NCA2My45NyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2NDY0bDE5Mi0xMTIgMTkyIDExMlY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0wIDQyOC40M2wtMTQ0LTg0LTE0NCA4NFY1NGE2IDYgMCAwIDEgNi02aDI3NmMzLjMxNCAwIDYgMi42ODMgNiA1Ljk5NlY0MjguNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0J1aWxkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxNDh2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEyem0xNDAgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyem0tMTI4IDk2aDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMnptMTI4IDBoNDBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyem0tNzYgODR2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem03NiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJ6bTE4MCAxMjR2MzZIMHYtMzZjMC02LjYgNS40LTEyIDEyLTEyaDE5LjVWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRoMzM3YzEzLjMgMCAyNCAxMC43IDI0IDI0djQ0MEg0MzZjNi42IDAgMTIgNS40IDEyIDEyek03OS41IDQ2M0gxOTJ2LTY3YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NjdoMTEyLjVWNDlMODAgNDhsLS41IDQxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ4IDI4OGgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJ6bTEwOC0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6bTk2IDB2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem0tOTYgOTZ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem0tOTYgMHYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6bTE5MiAwdi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptOTYtMjYwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoMTI4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWMTYwSDQ4djI5OGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgNjRoLTQ4VjEyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjUySDE2MFYxMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1Mkg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjExMmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tNiA0MDBINTRhNiA2IDAgMCAxLTYtNlYxNjBoMzUydjI5OGE2IDYgMCAwIDEtNiA2em0tNTIuODQ5LTIwMC42NUwxOTguODQyIDQwNC41MTljLTQuNzA1IDQuNjY3LTEyLjMwMyA0LjYzNy0xNi45NzEtLjA2OGwtNzUuMDkxLTc1LjY5OWMtNC42NjctNC43MDUtNC42MzctMTIuMzAzLjA2OC0xNi45NzFsMjIuNzE5LTIyLjUzNmM0LjcwNS00LjY2NyAxMi4zMDMtNC42MzcgMTYuOTcuMDY5bDQ0LjEwNCA0NC40NjEgMTExLjA3Mi0xMTAuMTgxYzQuNzA1LTQuNjY3IDEyLjMwMy00LjYzNyAxNi45NzEuMDY4bDIyLjUzNiAyMi43MThjNC42NjcgNC43MDUgNC42MzYgMTIuMzAzLS4wNjkgMTYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI0IDMyOGMtNi42IDAtMTItNS40LTEyLTEydi0yNGMwLTYuNiA1LjQtMTIgMTItMTJoMjAwYzYuNiAwIDEyIDUuNCAxMiAxMnYyNGMwIDYuNi01LjQgMTItMTIgMTJIMTI0em0zMjQtMjE2djM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoMTI4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWMTYwSDQ4djI5OGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAyOTJ2MjRjMCA2LjYtNS40IDEyLTEyIDEyaC03NnY3NmMwIDYuNi01LjQgMTItMTIgMTJoLTI0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTc2aC03NmMtNi42IDAtMTItNS40LTEyLTEydi0yNGMwLTYuNiA1LjQtMTIgMTItMTJoNzZ2LTc2YzAtNi42IDUuNC0xMiAxMi0xMmgyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2NzZoNzZjNi42IDAgMTIgNS40IDEyIDEyem0xMTItMTgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoMTI4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWMTYwSDQ4djI5OGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJUaW1lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTEuNyAzNzQuN2wtMTcgMTdjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwyMjQgMzM3LjlsLTUzLjcgNTMuN2MtNC43IDQuNy0xMi4zIDQuNy0xNyAwbC0xNy0xN2MtNC43LTQuNy00LjctMTIuMyAwLTE3bDUzLjctNTMuNy01My43LTUzLjdjLTQuNy00LjctNC43LTEyLjMgMC0xN2wxNy0xN2M0LjctNC43IDEyLjMtNC43IDE3IDBsNTMuNyA1My43IDUzLjctNTMuN2M0LjctNC43IDEyLjMtNC43IDE3IDBsMTcgMTdjNC43IDQuNyA0LjcgMTIuMyAwIDE3TDI1Ny45IDMwNGw1My43IDUzLjdjNC44IDQuNyA0LjggMTIuMy4xIDE3ek00NDggMTEydjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoMTI4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWMTYwSDQ4djI5OGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDY0aC00OFYxMmMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJIMTYwVjEyYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY1Mkg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHptLTYgNDAwSDU0Yy0zLjMgMC02LTIuNy02LTZWMTYwaDM1MnYyOThjMCAzLjMtMi43IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYXJldFNxdWFyZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI1LjEgMjA4aDE5Ny44YzEwLjcgMCAxNi4xIDEzIDguNSAyMC41bC05OC45IDk4LjNjLTQuNyA0LjctMTIuMiA0LjctMTYuOSAwbC05OC45LTk4LjNjLTcuNy03LjUtMi4zLTIwLjUgOC40LTIwLjV6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTQ4IDM0NlY4NmMwLTMuMy0yLjctNi02LTZINTRjLTMuMyAwLTYgMi43LTYgNnYzNDBjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhcmV0U3F1YXJlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIgMTU3LjF2MTk3LjhjMCAxMC43LTEzIDE2LjEtMjAuNSA4LjVsLTk4LjMtOTguOWMtNC43LTQuNy00LjctMTIuMiAwLTE2LjlsOTguMy05OC45YzcuNS03LjcgMjAuNS0yLjMgMjAuNSA4LjR6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTQ4IDM0NlY4NmMwLTMuMy0yLjctNi02LTZINTRjLTMuMyAwLTYgMi43LTYgNnYzNDBjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhcmV0U3F1YXJlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDM1NC45VjE1Ny4xYzAtMTAuNyAxMy0xNi4xIDIwLjUtOC41bDk4LjMgOTguOWM0LjcgNC43IDQuNyAxMi4yIDAgMTYuOWwtOTguMyA5OC45Yy03LjUgNy43LTIwLjUgMi4zLTIwLjUtOC40ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYXJldFNxdWFyZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMi45IDMwNEgxMjUuMWMtMTAuNyAwLTE2LjEtMTMtOC41LTIwLjVsOTguOS05OC4zYzQuNy00LjcgMTIuMi00LjcgMTYuOSAwbDk4LjkgOTguM2M3LjcgNy41IDIuMyAyMC41LTguNCAyMC41ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGFydEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTYuOCAzNTJoMjIuNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjhWMTA4LjhjMC02LjQtNi40LTEyLjgtMTIuOC0xMi44aC0yMi40Yy02LjQgMC0xMi44IDYuNC0xMi44IDEyLjh2MjMwLjRjMCA2LjQgNi40IDEyLjggMTIuOCAxMi44em0tMTkyIDBoMjIuNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjhWMTQwLjhjMC02LjQtNi40LTEyLjgtMTIuOC0xMi44aC0yMi40Yy02LjQgMC0xMi44IDYuNC0xMi44IDEyLjh2MTk4LjRjMCA2LjQgNi40IDEyLjggMTIuOCAxMi44em05NiAwaDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjIwNC44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djEzNC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHpNNDk2IDQwMEg0OFY4MGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDY0IDAgNzEuMTYgMCA4MHYzMzZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2em0tMzg3LjItNDhoMjIuNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjh2LTcwLjRjMC02LjQtNi40LTEyLjgtMTIuOC0xMi44aC0yMi40Yy02LjQgMC0xMi44IDYuNC0xMi44IDEyLjh2NzAuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NoZWNrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMCA0OGMxMTAuNTMyIDAgMjAwIDg5LjQ1MSAyMDAgMjAwIDAgMTEwLjUzMi04OS40NTEgMjAwLTIwMCAyMDAtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzIgODkuNDUxLTIwMCAyMDAtMjAwbTE0MC4yMDQgMTMwLjI2N2wtMjIuNTM2LTIyLjcxOGMtNC42NjctNC43MDUtMTIuMjY1LTQuNzM2LTE2Ljk3LS4wNjhMMjE1LjM0NiAzMDMuNjk3bC01OS43OTItNjAuMjc3Yy00LjY2Ny00LjcwNS0xMi4yNjUtNC43MzYtMTYuOTctLjA2OWwtMjIuNzE5IDIyLjUzNmMtNC43MDUgNC42NjctNC43MzYgMTIuMjY1LS4wNjggMTYuOTcxbDkwLjc4MSA5MS41MTZjNC42NjcgNC43MDUgMTIuMjY1IDQuNzM2IDE2Ljk3LjA2OGwxNzIuNTg5LTE3MS4yMDRjNC43MDQtNC42NjggNC43MzQtMTIuMjY2LjA2Ny0xNi45NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NoZWNrU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHptMCA0MDBINDhWODBoMzUydjM1MnptLTM1Ljg2NC0yNDEuNzI0TDE5MS41NDcgMzYxLjQ4Yy00LjcwNSA0LjY2Ny0xMi4zMDMgNC42MzctMTYuOTctLjA2OGwtOTAuNzgxLTkxLjUxNmMtNC42NjctNC43MDUtNC42MzctMTIuMzAzLjA2OS0xNi45NzFsMjIuNzE5LTIyLjUzNmM0LjcwNS00LjY2NyAxMi4zMDMtNC42MzcgMTYuOTcuMDY5bDU5Ljc5MiA2MC4yNzcgMTQxLjM1Mi0xNDAuMjE2YzQuNzA1LTQuNjY3IDEyLjMwMy00LjYzNyAxNi45Ny4wNjhsMjIuNTM2IDIyLjcxOGM0LjY2NyA0LjcwNiA0LjYzNyAxMi4zMDQtLjA2OCAxNi45NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUgMC0yMDAtODkuNS0yMDAtMjAwUzE0NS41IDU2IDI1NiA1NnMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xOTIgNDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0xNDQgNDE4YzAgMy4zLTIuNyA2LTYgNkg1NGMtMy4zIDAtNi0yLjctNi02VjExOGMwLTMuMyAyLjctNiA2LTZoNDJ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDE2OGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDQyYzMuMyAwIDYgMi43IDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCA0NDhjLTExMC41IDAtMjAwLTg5LjUtMjAwLTIwMFMxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwem02MS44LTEwNC40bC04NC45LTYxLjdjLTMuMS0yLjMtNC45LTUuOS00LjktOS43VjExNmMwLTYuNiA1LjQtMTIgMTItMTJoMzJjNi42IDAgMTIgNS40IDEyIDEydjE0MS43bDY2LjggNDguNmM1LjQgMy45IDYuNSAxMS40IDIuNiAxNi44TDMzNC42IDM0OWMtMy45IDUuMy0xMS40IDYuNS0xNi44IDIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2xvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDBIMTQ0Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djQ4SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djMyMGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDMyMGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di00OGg0OGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjQ4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6TTM2MiA0NjRINTRhNiA2IDAgMCAxLTYtNlYxNTBhNiA2IDAgMCAxIDYtNmg0MnYyMjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyMjR2NDJhNiA2IDAgMCAxLTYgNnptOTYtOTZIMTUwYTYgNiAwIDAgMS02LTZWNTRhNiA2IDAgMCAxIDYtNmgzMDhhNiA2IDAgMCAxIDYgNnYzMDhhNiA2IDAgMCAxLTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2xvc2VkQ2FwdGlvbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS02IDMzNkg1NGMtMy4zIDAtNi0yLjctNi02VjExOGMwLTMuMyAyLjctNiA2LTZoNDA0YzMuMyAwIDYgMi43IDYgNnYyNzZjMCAzLjMtMi43IDYtNiA2em0tMjExLjEtODUuN2MxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjYgNTYuOC0xNzIuOCAzMi4xLTE3Mi44LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN2wtMTcuNSAzMC41Yy0xLjkgMy4xLTYuMiA0LTkuMSAxLjctNDAuOC0zMi05NC42LTE0LjktOTQuNiAzMS4yIDAgNDggNTEgNzAuNSA5Mi4yIDMyLjYgMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjYgMjcuN3ptMTkwLjQgMGMxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjYgNTYuOS0xNzIuOCAzMi4xLTE3Mi44LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN0w0MjAgMjIwLjJjLTEuOSAzLjEtNi4yIDQtOS4xIDEuNy00MC44LTMyLTk0LjYtMTQuOS05NC42IDMxLjIgMCA0OCA1MSA3MC41IDkyLjIgMzIuNiAyLjgtMi41IDcuMS0yLjEgOS4yLjlsMTkuNiAyNy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb21tZW50QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAwSDY0QzI4LjcgMCAwIDI4LjcgMCA2NHYyODhjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTZ2ODRjMCA3LjEgNS44IDEyIDEyIDEyIDIuNCAwIDQuOS0uNyA3LjEtMi40TDMwNCA0MTZoMTQ0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0em0xNiAzNTJjMCA4LjgtNy4yIDE2LTE2IDE2SDI4OGwtMTIuOCA5LjZMMjA4IDQyOHYtNjBINjRjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZoMzg0YzguOCAwIDE2IDcuMiAxNiAxNnYyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnREb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAyMDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0xMTIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTExMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0Ny42IDE5LjkgOTEuMiA1Mi45IDEyNi4zQzM4IDQwNS43IDcgNDM5LjEgNi41IDQzOS41Yy02LjYgNy04LjQgMTcuMi00LjYgMjZTMTQuNCA0ODAgMjQgNDgwYzYxLjUgMCAxMTAtMjUuNyAxMzkuMS00Ni4zQzE5MiA0NDIuOCAyMjMuMiA0NDggMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyem0wIDM2OGMtMjYuNyAwLTUzLjEtNC4xLTc4LjQtMTIuMWwtMjIuNy03LjItMTkuNSAxMy44Yy0xNC4zIDEwLjEtMzMuOSAyMS40LTU3LjUgMjkgNy4zLTEyLjEgMTQuNC0yNS43IDE5LjktNDAuMmwxMC42LTI4LjEtMjAuNi0yMS44QzY5LjcgMzE0LjEgNDggMjgyLjIgNDggMjQwYzAtODguMiA5My4zLTE2MCAyMDgtMTYwczIwOCA3MS44IDIwOCAxNjAtOTMuMyAxNjAtMjA4IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTE0LjYgMzIgMCAxMjUuMSAwIDI0MGMwIDQ3LjYgMTkuOSA5MS4yIDUyLjkgMTI2LjNDMzggNDA1LjcgNyA0MzkuMSA2LjUgNDM5LjVjLTYuNiA3LTguNCAxNy4yLTQuNiAyNlMxNC40IDQ4MCAyNCA0ODBjNjEuNSAwIDExMC0yNS43IDEzOS4xLTQ2LjNDMTkyIDQ0Mi44IDIyMy4yIDQ0OCAyNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJ6bTAgMzY4Yy0yNi43IDAtNTMuMS00LjEtNzguNC0xMi4xbC0yMi43LTcuMi0xOS41IDEzLjhjLTE0LjMgMTAuMS0zMy45IDIxLjQtNTcuNSAyOSA3LjMtMTIuMSAxNC40LTI1LjcgMTkuOS00MC4ybDEwLjYtMjguMS0yMC42LTIxLjhDNjkuNyAzMTQuMSA0OCAyODIuMiA0OCAyNDBjMC04OC4yIDkzLjMtMTYwIDIwOC0xNjBzMjA4IDcxLjggMjA4IDE2MC05My4zIDE2MC0yMDggMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb21tZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzIgMzg2LjJjMjcuNS0yNy4xIDQ0LTYxLjEgNDQtOTguMiAwLTgwLTc2LjUtMTQ2LjEtMTc2LjItMTU3LjlDMzY4LjMgNzIuNSAyOTQuMyAzMiAyMDggMzIgOTMuMSAzMiAwIDEwMy42IDAgMTkyYzAgMzcgMTYuNSA3MSA0NCA5OC4yLTE1LjMgMzAuNy0zNy4zIDU0LjUtMzcuNyA1NC45LTYuMyA2LjctOC4xIDE2LjUtNC40IDI1IDMuNiA4LjUgMTIgMTQgMjEuMiAxNCA1My41IDAgOTYuNy0yMC4yIDEyNS4yLTM4LjggOS4yIDIuMSAxOC43IDMuNyAyOC40IDQuOUMyMDguMSA0MDcuNiAyODEuOCA0NDggMzY4IDQ0OGMyMC44IDAgNDAuOC0yLjQgNTkuOC02LjhDNDU2LjMgNDU5LjcgNDk5LjQgNDgwIDU1MyA0ODBjOS4yIDAgMTcuNS01LjUgMjEuMi0xNCAzLjYtOC41IDEuOS0xOC4zLTQuNC0yNS0uNC0uMy0yMi41LTI0LjEtMzcuOC01NC44em0tMzkyLjgtOTIuM0wxMjIuMSAzMDVjLTE0LjEgOS4xLTI4LjUgMTYuMy00My4xIDIxLjQgMi43LTQuNyA1LjQtOS43IDgtMTQuOGwxNS41LTMxLjFMNzcuNyAyNTZDNjQuMiAyNDIuNiA0OCAyMjAuNyA0OCAxOTJjMC02MC43IDczLjMtMTEyIDE2MC0xMTJzMTYwIDUxLjMgMTYwIDExMi03My4zIDExMi0xNjAgMTEyYy0xNi41IDAtMzMtMS45LTQ5LTUuNmwtMTkuOC00LjV6TTQ5OC4zIDM1MmwtMjQuNyAyNC40IDE1LjUgMzEuMWMyLjYgNS4xIDUuMyAxMC4xIDggMTQuOC0xNC42LTUuMS0yOS0xMi4zLTQzLjEtMjEuNGwtMTcuMS0xMS4xLTE5LjkgNC42Yy0xNiAzLjctMzIuNSA1LjYtNDkgNS42LTU0IDAtMTAyLjItMjAuMS0xMzEuMy00OS43QzMzOCAzMzkuNSA0MTYgMjcyLjkgNDE2IDE5MmMwLTMuNC0uNC02LjctLjctMTBDNDc5LjcgMTk2LjUgNTI4IDIzOC44IDUyOCAyODhjMCAyOC43LTE2LjIgNTAuNi0yOS43IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb21wYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ny45NCAxMjkuODZMMjAzLjYgMTk1LjgzYTMxLjkzOCAzMS45MzggMCAwIDAtMTUuNzcgMTUuNzdsLTY1Ljk3IDE0NC4zNGMtNy42MSAxNi42NSA5LjU0IDMzLjgxIDI2LjIgMjYuMmwxNDQuMzQtNjUuOTdhMzEuOTM4IDMxLjkzOCAwIDAgMCAxNS43Ny0xNS43N2w2NS45Ny0xNDQuMzRjNy42MS0xNi42Ni05LjU0LTMzLjgxLTI2LjItMjYuMnptLTc3LjM2IDE0OC43MmMtMTIuNDcgMTIuNDctMzIuNjkgMTIuNDctNDUuMTYgMC0xMi40Ny0xMi40Ny0xMi40Ny0zMi42OSAwLTQ1LjE2IDEyLjQ3LTEyLjQ3IDMyLjY5LTEyLjQ3IDQ1LjE2IDAgMTIuNDcgMTIuNDcgMTIuNDcgMzIuNjkgMCA0NS4xNnpNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0NDhjLTExMC4yOCAwLTIwMC04OS43Mi0yMDAtMjAwUzEzNy43MiA1NiAyNDggNTZzMjAwIDg5LjcyIDIwMCAyMDAtODkuNzIgMjAwLTIwMCAyMDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjk0MSA2NS45NDFsLTUxLjg4Mi01MS44ODJBNDggNDggMCAwIDAgMzQ4LjExOCAwSDE3NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0OEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYzMjBjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyMjRjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDhoODBjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY5OS44ODJhNDggNDggMCAwIDAtMTQuMDU5LTMzLjk0MXpNMjY2IDQ2NEg1NGE2IDYgMCAwIDEtNi02VjE1MGE2IDYgMCAwIDEgNi02aDc0djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDk2djQyYTYgNiAwIDAgMS02IDZ6bTEyOC05NkgxODJhNiA2IDAgMCAxLTYtNlY1NGE2IDYgMCAwIDEgNi02aDEwNnY4OGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoODh2MjAyYTYgNiAwIDAgMS02IDZ6bTYtMjU2aC02NFY0OGg5LjYzMmMxLjU5MSAwIDMuMTE3LjYzMiA0LjI0MyAxLjc1N2w0OC4zNjggNDguMzY4YTYgNiAwIDAgMSAxLjc1NyA0LjI0M1YxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvcHlyaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTAgNDQ4Yy0xMTAuNTMyIDAtMjAwLTg5LjQ1MS0yMDAtMjAwIDAtMTEwLjUzMSA4OS40NTEtMjAwIDIwMC0yMDAgMTEwLjUzMiAwIDIwMCA4OS40NTEgMjAwIDIwMCAwIDExMC41MzItODkuNDUxIDIwMC0yMDAgMjAwem0xMDcuMzUxLTEwMS4wNjRjLTkuNjE0IDkuNzEyLTQ1LjUzIDQxLjM5Ni0xMDQuMDY1IDQxLjM5Ni04Mi40MyAwLTE0MC40ODQtNjEuNDI1LTE0MC40ODQtMTQxLjU2NyAwLTc5LjE1MiA2MC4yNzUtMTM5LjQwMSAxMzkuNzYyLTEzOS40MDEgNTUuNTMxIDAgODguNzM4IDI2LjYyIDk3LjU5MyAzNC43NzlhMTEuOTY1IDExLjk2NSAwIDAgMSAxLjkzNiAxNS4zMjJsLTE4LjE1NSAyOC4xMTNjLTMuODQxIDUuOTUtMTEuOTY2IDcuMjgyLTE3LjQ5OSAyLjkyMS04LjU5NS02Ljc3Ni0zMS44MTQtMjIuNTM4LTYxLjcwOC0yMi41MzgtNDguMzAzIDAtNzcuOTE2IDM1LjMzLTc3LjkxNiA4MC4wODIgMCA0MS41ODkgMjYuODg4IDgzLjY5MiA3OC4yNzcgODMuNjkyIDMyLjY1NyAwIDU2Ljg0My0xOS4wMzkgNjUuNzI2LTI3LjIyNSA1LjI3LTQuODU3IDEzLjU5Ni00LjAzOSAxNy44MiAxLjczOGwxOS44NjUgMjcuMTdhMTEuOTQ3IDExLjk0NyAwIDAgMS0xLjE1MiAxNS41MTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI3LjkgMzJINDguMUMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OC4xIDQ4aDQ3OS44YzI2LjYgMCA0OC4xLTIxLjUgNDguMS00OFY4MGMwLTI2LjUtMjEuNS00OC00OC4xLTQ4ek01NC4xIDgwaDQ2Ny44YzMuMyAwIDYgMi43IDYgNnY0Mkg0OC4xVjg2YzAtMy4zIDIuNy02IDYtNnptNDY3LjggMzUySDU0LjFjLTMuMyAwLTYtMi43LTYtNlYyNTZoNDc5Ljh2MTcwYzAgMy4zLTIuNyA2LTYgNnpNMTkyIDMzMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTcyYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg3MmM2LjYgMCAxMiA1LjQgMTIgMTJ6bTE5MiAwdjQwYzAgNi42LTUuNCAxMi0xMiAxMkgyMzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDEzNmM2LjYgMCAxMiA1LjQgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Rpenp5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTMzLjgtMjE3LjljNy44LTcuOCA3LjgtMjAuNSAwLTI4LjNMMTk2LjMgMTkybDE3LjktMTcuOWM3LjgtNy44IDcuOC0yMC41IDAtMjguMy03LjgtNy44LTIwLjUtNy44LTI4LjMgMEwxNjggMTYzLjdsLTE3LjgtMTcuOGMtNy44LTcuOC0yMC41LTcuOC0yOC4zIDAtNy44IDcuOC03LjggMjAuNSAwIDI4LjNsMTcuOSAxNy45LTE3LjkgMTcuOWMtNy44IDcuOC03LjggMjAuNSAwIDI4LjMgNy44IDcuOCAyMC41IDcuOCAyOC4zIDBsMTcuOC0xNy44IDE3LjggMTcuOGM3LjkgNy43IDIwLjUgNy43IDI4LjQtLjJ6bTE2MC05Mi4yYy03LjgtNy44LTIwLjUtNy44LTI4LjMgMEwzMjggMTYzLjdsLTE3LjgtMTcuOGMtNy44LTcuOC0yMC41LTcuOC0yOC4zIDAtNy44IDcuOC03LjggMjAuNSAwIDI4LjNsMTcuOSAxNy45LTE3LjkgMTcuOWMtNy44IDcuOC03LjggMjAuNSAwIDI4LjMgNy44IDcuOCAyMC41IDcuOCAyOC4zIDBsMTcuOC0xNy44IDE3LjggMTcuOGM3LjggNy44IDIwLjUgNy44IDI4LjMgMCA3LjgtNy44IDcuOC0yMC41IDAtMjguM2wtMTcuOC0xOCAxNy45LTE3LjljNy43LTcuOCA3LjctMjAuNCAwLTI4LjJ6TTI0OCAyNzJjLTM1LjMgMC02NCAyOC43LTY0IDY0czI4LjcgNjQgNjQgNjQgNjQtMjguNyA2NC02NC0yOC43LTY0LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdEb3RDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDU2YzExMC41MzIgMCAyMDAgODkuNDUxIDIwMCAyMDAgMCAxMTAuNTMyLTg5LjQ1MSAyMDAtMjAwIDIwMC0xMTAuNTMyIDAtMjAwLTg5LjQ1MS0yMDAtMjAwIDAtMTEwLjUzMiA4OS40NTEtMjAwIDIwMC0yMDBtMC00OEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTAgMTY4Yy00NC4xODMgMC04MCAzNS44MTctODAgODBzMzUuODE3IDgwIDgwIDgwIDgwLTM1LjgxNyA4MC04MC0zNS44MTctODAtODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0VkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAyLjMgMzQ0LjlsMzItMzJjNS01IDEzLjctMS41IDEzLjcgNS43VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDI3My41YzcuMSAwIDEwLjcgOC42IDUuNyAxMy43bC0zMiAzMmMtMS41IDEuNS0zLjUgMi4zLTUuNyAyLjNINDh2MzUyaDM1MlYzNTAuNWMwLTIuMS44LTQuMSAyLjMtNS42em0xNTYuNi0yMDEuOEwyOTYuMyA0MDUuN2wtOTAuNCAxMGMtMjYuMiAyLjktNDguNS0xOS4yLTQ1LjYtNDUuNmwxMC05MC40TDQzMi45IDE3LjFjMjIuOS0yMi45IDU5LjktMjIuOSA4Mi43IDBsNDMuMiA0My4yYzIyLjkgMjIuOSAyMi45IDYwIC4xIDgyLjh6TTQ2MC4xIDE3NEw0MDIgMTE1LjkgMjE2LjIgMzAxLjhsLTcuMyA2NS4zIDY1LjMtNy4zTDQ2MC4xIDE3NHptNjQuOC03OS43bC00My4yLTQzLjJjLTQuMS00LjEtMTAuOC00LjEtMTQuOCAwTDQzNiA4Mmw1OC4xIDU4LjEgMzAuOS0zMC45YzQtNC4yIDQtMTAuOC0uMS0xNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFbnZlbG9wZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk0LjU4NiAxNjQuNTE2Yy00LjY5Ny0zLjg4My0xMTEuNzIzLTg5Ljk1LTEzNS4yNTEtMTA4LjY1N0MzMzcuMjMxIDM4LjE5MSAyOTkuNDM3IDAgMjU2IDBjLTQzLjIwNSAwLTgwLjYzNiAzNy43MTctMTAzLjMzNSA1NS44NTktMjQuNDYzIDE5LjQ1LTEzMS4wNyAxMDUuMTk1LTEzNS4xNSAxMDguNTQ5QTQ4LjAwNCA0OC4wMDQgMCAwIDAgMCAyMDEuNDg1VjQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjIwMS41MDlhNDggNDggMCAwIDAtMTcuNDE0LTM2Ljk5M3pNNDY0IDQ1OGE2IDYgMCAwIDEtNiA2SDU0YTYgNiAwIDAgMS02LTZWMjA0LjM0N2MwLTEuODEzLjgxNi0zLjUyNiAyLjIyNi00LjY2NSAxNS44Ny0xMi44MTQgMTA4Ljc5My04Ny41NTQgMTMyLjM2NC0xMDYuMjkzQzIwMC43NTUgNzguODggMjMyLjM5OCA0OCAyNTYgNDhjMjMuNjkzIDAgNTUuODU3IDMxLjM2OSA3My40MSA0NS4zODkgMjMuNTczIDE4Ljc0MSAxMTYuNTAzIDkzLjQ5MyAxMzIuMzY2IDEwNi4zMTZhNS45OSA1Ljk5IDAgMCAxIDIuMjI0IDQuNjYzVjQ1OHptLTMxLjk5MS0xODcuNzA0YzQuMjQ5IDUuMTU5IDMuNDY1IDEyLjc5NS0xLjc0NSAxNi45ODEtMjguOTc1IDIzLjI4My01OS4yNzQgNDcuNTk3LTcwLjkyOSA1Ni44NjNDMzM2LjYzNiAzNjIuMjgzIDI5OS4yMDUgNDAwIDI1NiA0MDBjLTQzLjQ1MiAwLTgxLjI4Ny0zOC4yMzctMTAzLjMzNS01NS44Ni0xMS4yNzktOC45NjctNDEuNzQ0LTMzLjQxMy03MC45MjctNTYuODY1LTUuMjEtNC4xODctNS45OTMtMTEuODIyLTEuNzQ1LTE2Ljk4MWwxNS4yNTgtMTguNTI4YzQuMTc4LTUuMDczIDExLjY1Ny01Ljg0MyAxNi43NzktMS43MjYgMjguNjE4IDIzLjAwMSA1OC41NjYgNDcuMDM1IDcwLjU2IDU2LjU3MUMyMDAuMTQzIDMyMC42MzEgMjMyLjMwNyAzNTIgMjU2IDM1MmMyMy42MDIgMCA1NS4yNDYtMzAuODggNzMuNDEtNDUuMzg5IDExLjk5NC05LjUzNSA0MS45NDQtMzMuNTcgNzAuNTYzLTU2LjU2OCA1LjEyMi00LjExNiAxMi42MDEtMy4zNDYgMTYuNzc4IDEuNzI3bDE1LjI1OCAxOC41MjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0VudmVsb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjExMmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0wIDQ4djQwLjgwNWMtMjIuNDIyIDE4LjI1OS01OC4xNjggNDYuNjUxLTEzNC41ODcgMTA2LjQ5LTE2Ljg0MSAxMy4yNDctNTAuMjAxIDQ1LjA3Mi03My40MTMgNDQuNzAxLTIzLjIwOC4zNzUtNTYuNTc5LTMxLjQ1OS03My40MTMtNDQuNzAxQzEwNi4xOCAxOTkuNDY1IDcwLjQyNSAxNzEuMDY3IDQ4IDE1Mi44MDVWMTEyaDQxNnpNNDggNDAwVjIxNC4zOThjMjIuOTE0IDE4LjI1MSA1NS40MDkgNDMuODYyIDEwNC45MzggODIuNjQ2IDIxLjg1NyAxNy4yMDUgNjAuMTM0IDU1LjE4NiAxMDMuMDYyIDU0Ljk1NSA0Mi43MTcuMjMxIDgwLjUwOS0zNy4xOTkgMTAzLjA1My01NC45NDcgNDkuNTI4LTM4Ljc4MyA4Mi4wMzItNjQuNDAxIDEwNC45NDctODIuNjUzVjQwMEg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRXllU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM0IDQ3MUwzNiAzLjUxQTE2IDE2IDAgMCAwIDEzLjUxIDZsLTEwIDEyLjQ5QTE2IDE2IDAgMCAwIDYgNDFsNTk4IDQ2Ny40OWExNiAxNiAwIDAgMCAyMi40OS0yLjQ5bDEwLTEyLjQ5QTE2IDE2IDAgMCAwIDYzNCA0NzF6TTI5Ni43OSAxNDYuNDdsMTM0Ljc5IDEwNS4zOEM0MjkuMzYgMTkxLjkxIDM4MC40OCAxNDQgMzIwIDE0NGExMTIuMjYgMTEyLjI2IDAgMCAwLTIzLjIxIDIuNDd6bTQ2LjQyIDIxOS4wN0wyMDguNDIgMjYwLjE2QzIxMC42NSAzMjAuMDkgMjU5LjUzIDM2OCAzMjAgMzY4YTExMyAxMTMgMCAwIDAgMjMuMjEtMi40NnpNMzIwIDExMmM5OC42NSAwIDE4OS4wOSA1NSAyMzcuOTMgMTQ0YTI4NS41MyAyODUuNTMgMCAwIDEtNDQgNjAuMmwzNy43NCAyOS41YTMzMy43IDMzMy43IDAgMCAwIDUyLjktNzUuMTEgMzIuMzUgMzIuMzUgMCAwIDAgMC0yOS4xOUM1NTAuMjkgMTM1LjU5IDQ0Mi45MyA2NCAzMjAgNjRjLTM2LjcgMC03MS43MSA3LTEwNC42MyAxOC44MWw0Ni40MSAzNi4yOWMxOC45NC00LjMgMzguMzQtNy4xIDU4LjIyLTcuMXptMCAyODhjLTk4LjY1IDAtMTg5LjA4LTU1LTIzNy45My0xNDRhMjg1LjQ3IDI4NS40NyAwIDAgMSA0NC4wNS02MC4xOWwtMzcuNzQtMjkuNWEzMzMuNiAzMzMuNiAwIDAgMC01Mi44OSA3NS4xIDMyLjM1IDMyLjM1IDAgMCAwIDAgMjkuMTlDODkuNzIgMzc2LjQxIDE5Ny4wOCA0NDggMzIwIDQ0OGMzNi43IDAgNzEuNzEtNy4wNSAxMDQuNjMtMTguODFsLTQ2LjQxLTM2LjI4QzM1OS4yOCAzOTcuMiAzMzkuODkgNDAwIDMyMCA0MDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTQ0YTExMC45NCAxMTAuOTQgMCAwIDAtMzEuMjQgNSA1NS40IDU1LjQgMCAwIDEgNy4yNCAyNyA1NiA1NiAwIDAgMS01NiA1NiA1NS40IDU1LjQgMCAwIDEtMjctNy4yNEExMTEuNzEgMTExLjcxIDAgMSAwIDI4OCAxNDR6bTI4NC41MiA5Ny40QzUxOC4yOSAxMzUuNTkgNDEwLjkzIDY0IDI4OCA2NFM1Ny42OCAxMzUuNjQgMy40OCAyNDEuNDFhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM1Ny43MSAzNzYuNDEgMTY1LjA3IDQ0OCAyODggNDQ4czIzMC4zMi03MS42NCAyODQuNTItMTc3LjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTl6TTI4OCA0MDBjLTk4LjY1IDAtMTg5LjA5LTU1LTIzNy45My0xNDRDOTguOTEgMTY3IDE4OS4zNCAxMTIgMjg4IDExMnMxODkuMDkgNTUgMjM3LjkzIDE0NEM0NzcuMSAzNDUgMzg2LjY2IDQwMCAyODggNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAyNDh2MjhjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi0yOGMwLTYuNiA1LjQtMTIgMTItMTJoMTY4YzYuNiAwIDEyIDUuNCAxMiAxMnptLTEyIDcySDEwOGMtNi42IDAtMTIgNS40LTEyIDEydjI4YzAgNi42IDUuNCAxMiAxMiAxMmgxNjhjNi42IDAgMTItNS40IDEyLTEydi0yOGMwLTYuNi01LjQtMTItMTItMTJ6bTEwOC0xODguMVY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4QzAgMjEuNSAyMS41IDAgNDggMGgyMDQuMUMyNjQuOCAwIDI3NyA1LjEgMjg2IDE0LjFMMzY5LjkgOThjOSA4LjkgMTQuMSAyMS4yIDE0LjEgMzMuOXptLTEyOC04MFYxMjhoNzYuMUwyNTYgNTEuOXpNMzM2IDQ2NFYxNzZIMjMyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY0OEg0OHY0MTZoMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjguMyAxNjB2MzJoMzJ2LTMyem02NC05NmgtMzJ2MzJoMzJ6bS02NCAzMnYzMmgzMlY5NnptNjQgMzJoLTMydjMyaDMyem0xNzcuNi0zMC4xTDI4NiAxNEMyNzcgNSAyNjQuOC0uMSAyNTIuMS0uMUg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMzEuOWMwLTEyLjctNS4xLTI1LTE0LjEtMzR6TTI1NiA1MS45bDc2LjEgNzYuMUgyNTZ6TTMzNiA0NjRINDhWNDhoNzkuN3YxNmgzMlY0OEgyMDh2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEwNHpNMTk0LjIgMjY1LjdjLTEuMS01LjYtNi05LjctMTEuOC05LjdoLTIyLjF2LTMyaC0zMnYzMmwtMTkuNyA5Ny4xQzEwMiAzODUuNiAxMjYuOCA0MTYgMTYwIDQxNmMzMy4xIDAgNTcuOS0zMC4yIDUxLjUtNjIuNnptLTMzLjkgMTI0LjRjLTE3LjkgMC0zMi40LTEyLjEtMzIuNC0yN3MxNC41LTI3IDMyLjQtMjcgMzIuNCAxMi4xIDMyLjQgMjctMTQuNSAyNy0zMi40IDI3em0zMi0xOTguMWgtMzJ2MzJoMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjkuOTQxIDk3Ljk0MWwtODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCAyNTIuMTE4IDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2NDE2YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjg4YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTMxLjg4MmE0OCA0OCAwIDAgMC0xNC4wNTktMzMuOTQxek0zMzIuMTE4IDEyOEgyNTZWNTEuODgyTDMzMi4xMTggMTI4ek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTA0djI4OEg0OHptMTQ0LTc2LjAyNGMwIDEwLjY5MS0xMi45MjYgMTYuMDQ1LTIwLjQ4NSA4LjQ4NUwxMzYgMzYwLjQ4NmgtMjhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTU2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMjhsMzUuNTE1LTM2Ljk0N2M3LjU2LTcuNTYgMjAuNDg1LTIuMjA2IDIwLjQ4NSA4LjQ4NXYxMzUuOTUyem00MS4yMDEtNDcuMTNjOS4wNTEtOS4yOTcgOS4wNi0yNC4xMzMuMDAxLTMzLjQzOS0yMi4xNDktMjIuNzUyIDEyLjIzNS01Ni4yNDYgMzQuMzk1LTMzLjQ4MSAyNy4xOTggMjcuOTQgMjcuMjEyIDcyLjQ0NC4wMDEgMTAwLjQwMS0yMS43OTMgMjIuMzg2LTU2Ljk0Ny0xMC4zMTUtMzQuMzk3LTMzLjQ4MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ5LjkgMzQ5LjFsLS4yLS4yLTMyLjgtMjguOSAzMi44LTI4LjljMy42LTMuMiA0LTguOC44LTEyLjRsLS4yLS4yLTE3LjQtMTguNmMtMy40LTMuNi05LTMuNy0xMi40LS40bC01Ny43IDU0LjFjLTMuNyAzLjUtMy43IDkuNCAwIDEyLjhsNTcuNyA1NC4xYzEuNiAxLjUgMy44IDIuNCA2IDIuNCAyLjQgMCA0LjgtMSA2LjQtMi44bDE3LjQtMTguNmMzLjMtMy41IDMuMS05LjEtLjQtMTIuNHptMjIwLTI1MS4yTDI4NiAxNEMyNzcgNSAyNjQuOC0uMSAyNTIuMS0uMUg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMzEuOWMwLTEyLjctNS4xLTI1LTE0LjEtMzR6TTI1NiA1MS45bDc2LjEgNzYuMUgyNTZ6TTMzNiA0NjRINDhWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR6TTIwOS42IDIxNGMtNC43LTEuNC05LjUgMS4zLTEwLjkgNkwxNDQgNDA4LjFjLTEuNCA0LjcgMS4zIDkuNiA2IDEwLjlsMjQuNCA3LjFjNC43IDEuNCA5LjYtMS40IDEwLjktNkwyNDAgMjMxLjljMS40LTQuNy0xLjMtOS42LTYtMTAuOXptMjQuNSA3Ni45bC4yLjIgMzIuOCAyOC45LTMyLjggMjguOWMtMy42IDMuMi00IDguOC0uOCAxMi40bC4yLjIgMTcuNCAxOC42YzMuMyAzLjUgOC45IDMuNyAxMi40LjRsNTcuNy01NC4xYzMuNy0zLjUgMy43LTkuNCAwLTEyLjhsLTU3LjctNTQuMWMtMy41LTMuMy05LjEtMy4yLTEyLjQuNGwtMTcuNCAxOC42Yy0zLjMgMy41LTMuMSA5LjEuNCAxMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlRXhjZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0yMTItMjQwaC0yOC44Yy00LjQgMC04LjQgMi40LTEwLjUgNi4zLTE4IDMzLjEtMjIuMiA0Mi40LTI4LjYgNTcuNy0xMy45LTI5LjEtNi45LTE3LjMtMjguNi01Ny43LTIuMS0zLjktNi4yLTYuMy0xMC42LTYuM0gxMjRjLTkuMyAwLTE1IDEwLTEwLjQgMThsNDYuMyA3OC00Ni4zIDc4Yy00LjcgOCAxLjEgMTggMTAuNCAxOGgyOC45YzQuNCAwIDguNC0yLjQgMTAuNS02LjMgMjEuNy00MCAyMy00NSAyOC42LTU3LjcgMTQuOSAzMC4yIDUuOSAxNS45IDI4LjYgNTcuNyAyLjEgMy45IDYuMiA2LjMgMTAuNiA2LjNIMjYwYzkuMyAwIDE1LTEwIDEwLjQtMThMMjI0IDMyMGMuNy0xLjEgMzAuMy01MC41IDQ2LjMtNzggNC43LTgtMS4xLTE4LTEwLjMtMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjkuOSA5Ny45TDI4NiAxNEMyNzcgNSAyNjQuOC0uMSAyNTIuMS0uMUg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMzEuOWMwLTEyLjctNS4xLTI1LTE0LjEtMzR6TTMzMi4xIDEyOEgyNTZWNTEuOWw3Ni4xIDc2LjF6TTQ4IDQ2NFY0OGgxNjB2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEwNHYyODhINDh6bTMyLTQ4aDIyNFYyODhsLTIzLjUtMjMuNWMtNC43LTQuNy0xMi4zLTQuNy0xNyAwTDE3NiAzNTJsLTM5LjUtMzkuNWMtNC43LTQuNy0xMi4zLTQuNy0xNyAwTDgwIDM1MnY2NHptNDgtMjQwYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4IDQ4LTIxLjUgNDgtNDgtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVBkZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjkuOSA5Ny45TDI4NiAxNEMyNzcgNSAyNjQuOC0uMSAyNTIuMS0uMUg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMzEuOWMwLTEyLjctNS4xLTI1LTE0LjEtMzR6TTMzMi4xIDEyOEgyNTZWNTEuOWw3Ni4xIDc2LjF6TTQ4IDQ2NFY0OGgxNjB2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEwNHYyODhINDh6bTI1MC4yLTE0My43Yy0xMi4yLTEyLTQ3LTguNy02NC40LTYuNS0xNy4yLTEwLjUtMjguNy0yNS0zNi44LTQ2LjMgMy45LTE2LjEgMTAuMS00MC42IDUuNC01Ni00LjItMjYuMi0zNy44LTIzLjYtNDIuNi01LjktNC40IDE2LjEtLjQgMzguNSA3IDY3LjEtMTAgMjMuOS0yNC45IDU2LTM1LjQgNzQuNC0yMCAxMC4zLTQ3IDI2LjItNTEgNDYuMi0zLjMgMTUuOCAyNiA1NS4yIDc2LjEtMzEuMiAyMi40LTcuNCA0Ni44LTE2LjUgNjguNC0yMC4xIDE4LjkgMTAuMiA0MSAxNyA1NS44IDE3IDI1LjUgMCAyOC0yOC4yIDE3LjUtMzguN3ptLTE5OC4xIDc3LjhjNS4xLTEzLjcgMjQuNS0yOS41IDMwLjQtMzUtMTkgMzAuMy0zMC40IDM1LjctMzAuNCAzNXptODEuNi0xOTAuNmM3LjQgMCA2LjcgMzIuMSAxLjggNDAuOC00LjQtMTMuOS00LjMtNDAuOC0xLjgtNDAuOHptLTI0LjQgMTM2LjZjOS43LTE2LjkgMTgtMzcgMjQuNy01NC43IDguMyAxNS4xIDE4LjkgMjcuMiAzMC4xIDM1LjUtMjAuOCA0LjMtMzguOSAxMy4xLTU0LjggMTkuMnptMTMxLjYtNXMtNSA2LTM3LjMtNy44YzM1LjEtMi42IDQwLjkgNS40IDM3LjMgNy44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlUG93ZXJwb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjkuOSA5Ny45TDI4NiAxNEMyNzcgNSAyNjQuOC0uMSAyNTIuMS0uMUg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMzEuOWMwLTEyLjctNS4xLTI1LTE0LjEtMzR6TTMzMi4xIDEyOEgyNTZWNTEuOWw3Ni4xIDc2LjF6TTQ4IDQ2NFY0OGgxNjB2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEwNHYyODhINDh6bTcyLTYwVjIzNmMwLTYuNiA1LjQtMTIgMTItMTJoNjkuMmMzNi43IDAgNjIuOCAyNyA2Mi44IDY2LjMgMCA3NC4zLTY4LjcgNjYuNS05NS41IDY2LjVWNDA0YzAgNi42LTUuNCAxMi0xMiAxMkgxMzJjLTYuNiAwLTEyLTUuNC0xMi0xMnptNDguNS04Ny40aDIzYzcuOSAwIDEzLjktMi40IDE4LjEtNy4yIDguNS05LjggOC40LTI4LjUuMS0zNy44LTQuMS00LjYtOS45LTctMTcuNC03aC0yMy45djUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5Ljk0MSA5Ny45NDFsLTgzLjg4Mi04My44ODJBNDggNDggMCAwIDAgMjUyLjExOCAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djQxNmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDI4OGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjEzMS44ODJhNDggNDggMCAwIDAtMTQuMDU5LTMzLjk0MXpNMzMyLjExOCAxMjhIMjU2VjUxLjg4MkwzMzIuMTE4IDEyOHpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNHYyODhINDh6bTIyOC42ODctMjExLjMwM0wyMjQgMzA1LjM3NFYyNjhjMC0xMS4wNDYtOC45NTQtMjAtMjAtMjBIMTAwYy0xMS4wNDYgMC0yMCA4Ljk1NC0yMCAyMHYxMDRjMCAxMS4wNDYgOC45NTQgMjAgMjAgMjBoMTA0YzExLjA0NiAwIDIwLTguOTU0IDIwLTIwdi0zNy4zNzRsNTIuNjg3IDUyLjY3NEMyODYuNzA0IDM5Ny4zMTggMzA0IDM5MC4yOCAzMDQgMzc1Ljk4NlYyNjQuMDExYzAtMTQuMzExLTE3LjMwOS0yMS4zMTktMjcuMzEzLTExLjMxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVdvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0yMjAuMS0yMDhjLTUuNyAwLTEwLjYgNC0xMS43IDkuNS0yMC42IDk3LjctMjAuNCA5NS40LTIxIDEwMy41LS4yLTEuMi0uNC0yLjYtLjctNC4zLS44LTUuMS4zLjItMjMuNi05OS41LTEuMy01LjQtNi4xLTkuMi0xMS43LTkuMmgtMTMuM2MtNS41IDAtMTAuMyAzLjgtMTEuNyA5LjEtMjQuNCA5OS0yNCA5Ni4yLTI0LjggMTAzLjctLjEtMS4xLS4yLTIuNS0uNS00LjItLjctNS4yLTE0LjEtNzMuMy0xOS4xLTk5LTEuMS01LjYtNi05LjctMTEuOC05LjdoLTE2LjhjLTcuOCAwLTEzLjUgNy4zLTExLjcgMTQuOCA4IDMyLjYgMjYuNyAxMDkuNSAzMy4yIDEzNiAxLjMgNS40IDYuMSA5LjEgMTEuNyA5LjFoMjUuMmM1LjUgMCAxMC4zLTMuNyAxMS42LTkuMWwxNy45LTcxLjRjMS41LTYuMiAyLjUtMTIgMy0xNy4zbDIuOSAxNy4zYy4xLjQgMTIuNiA1MC41IDE3LjkgNzEuNCAxLjMgNS4zIDYuMSA5LjEgMTEuNiA5LjFoMjQuN2M1LjUgMCAxMC4zLTMuNyAxMS42LTkuMSAyMC44LTgxLjkgMzAuMi0xMTkgMzQuNS0xMzYgMS45LTcuNi0zLjgtMTQuOS0xMS42LTE0LjloLTE1Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNi4xNzQgODBjLTQ5LjEzMiAwLTkzLjMwNS0zMi0xNjEuOTEzLTMyLTMxLjMwMSAwLTU4LjMwMyA2LjQ4Mi04MC43MjEgMTUuMTY4YTQ4LjA0IDQ4LjA0IDAgMCAwIDIuMTQyLTIwLjcyN0M5My4wNjcgMTkuNTc1IDc0LjE2NyAxLjU5NCA1MS4yMDEuMTA0IDIzLjI0Mi0xLjcxIDAgMjAuNDMxIDAgNDhjMCAxNy43NjQgOS42NTcgMzMuMjYyIDI0IDQxLjU2MlY0OTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di04My40NDNDMTA5Ljg2OSAzOTUuMjggMTQzLjI1OSAzODQgMTk5LjgyNiAzODRjNDkuMTMyIDAgOTMuMzA1IDMyIDE2MS45MTMgMzIgNTguNDc5IDAgMTAxLjk3Mi0yMi42MTcgMTI4LjU0OC0zOS45ODFDNTAzLjg0NiAzNjcuMTYxIDUxMiAzNTIuMDUxIDUxMiAzMzUuODU1Vjk1LjkzN2MwLTM0LjQ1OS0zNS4yNjQtNTcuNzY4LTY2LjkwNC00NC4xMTdDNDA5LjE5MyA2Ny4zMDkgMzcxLjY0MSA4MCAzMzYuMTc0IDgwek00NjQgMzM2Yy0yMS43ODMgMTUuNDEyLTYwLjgyNCAzMi0xMDIuMjYxIDMyLTU5Ljk0NSAwLTEwMi4wMDItMzItMTYxLjkxMy0zMi00My4zNjEgMC05Ni4zNzkgOS40MDMtMTI3LjgyNiAyNFYxMjhjMjEuNzg0LTE1LjQxMiA2MC44MjQtMzIgMTAyLjI2MS0zMiA1OS45NDUgMCAxMDIuMDAyIDMyIDE2MS45MTMgMzIgNDMuMjcxIDAgOTYuMzItMTcuMzY2IDEyNy44MjYtMzJ2MjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGbHVzaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptOTYtMzEyYy00NC4yIDAtODAgMzUuOC04MCA4MHMzNS44IDgwIDgwIDgwIDgwLTM1LjggODAtODAtMzUuOC04MC04MC04MHptMCAxMjhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0wLTcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptLTExMiAyNGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MCAzNS44IDgwIDgwIDgwIDgwLTM1LjggODAtODB6bS04MCA0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTAtNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em0xNjAgMTQ0SDE4NGMtMTMuMiAwLTI0IDEwLjgtMjQgMjRzMTAuOCAyNCAyNCAyNGgxMjhjMTMuMiAwIDI0LTEwLjggMjQtMjRzLTEwLjgtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI3LjkgMjI0SDQ4MHYtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjcybC02NC02NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYyODhjMCAyNi41IDIxLjUgNDggNDggNDhoNDAwYzE2LjUgMCAzMS45LTguNSA0MC43LTIyLjZsNzkuOS0xMjhjMjAtMzEuOS0zLTczLjQtNDAuNy03My40ek00OCAxMThjMC0zLjMgMi43LTYgNi02aDEzNC4xbDY0IDY0SDQyNmMzLjMgMCA2IDIuNyA2IDZ2NDJIMTUyYy0xNi44IDAtMzIuNCA4LjgtNDEuMSAyMy4yTDQ4IDM1MS40em00MDAgMjgySDcybDc3LjItMTI4SDUyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxMjhIMjcybC01NC42My01NC42M2MtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0g0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE3NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0wIDI3Mkg0OFYxMTJoMTQwLjEybDU0LjYzIDU0LjYzYzYgNiAxNC4xNCA5LjM3IDIyLjYzIDkuMzdINDY0djIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRm9udEF3ZXNvbWVMb2dvRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzk5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU0LjYgMEg1Ny40QzI1LjkgMCAwIDI1LjkgMCA1Ny40djM5Ny4zQzAgNDg2LjEgMjUuOSA1MTIgNTcuNCA1MTJoMzk3LjNjMzEuNCAwIDU3LjQtMjUuOSA1Ny40LTU3LjRWNTcuNEM1MTIgMjUuOSA0ODYuMSAwIDQ1NC42IDB6bS01OC45IDMyNC45YzAgNC44LTQuMSA2LjktOC45IDguOS0xOS4yIDguMS0zOS43IDE1LjctNjEuNSAxNS43LTQwLjUgMC02OC43LTQ0LjgtMTYzLjIgMi41djUxLjhjMCAzMC4zLTQ1LjcgMzAuMi00NS43IDB2LTI1MGMtOS03LTE1LTE3LjktMTUtMzAuMyAwLTIxIDE3LjEtMzguMiAzOC4yLTM4LjIgMjEgMCAzOC4yIDE3LjEgMzguMiAzOC4yIDAgMTIuMi01LjggMjMuMi0xNC45IDMwLjJ2MjFjMzcuMS0xMiA2NS41LTM0LjQgMTQ2LjEtMy40IDI2LjYgMTEuNCA2OC43LTE1LjcgNzYuNS0xNS43IDUuNSAwIDEwLjMgNC4xIDEwLjMgOC45djE2MC40em00MzIuOS0xNzQuMmgtMTM3djcwLjFIODI1YzM5LjggMCA0MC40IDYyLjIgMCA2Mi4ySDY5MS42djEwNS42YzAgNDUuNS03MC43IDQ2LjQtNzAuNyAwVjEyOC4zYzAtMjIgMTgtMzkuOCAzOS44LTM5LjhoMTY3LjhjMzkuNiAwIDQwLjUgNjIuMi4xIDYyLjJ6bTE5MS4xIDIzLjRjLTE2OS4zIDAtMTY5LjEgMjUyLjQgMCAyNTIuNCAxNjkuOSAwIDE2OS45LTI1Mi40IDAtMjUyLjR6bTAgMTk2LjFjLTgxLjYgMC04Mi4xLTEzOS44IDAtMTM5LjggODIuNSAwIDgyLjQgMTM5LjggMCAxMzkuOHptMzcyLjQgNTMuNGMtMTcuNSAwLTMxLjQtMTMuOS0zMS40LTMxLjR2LTExN2MwLTYyLjQtNzIuNi01Mi41LTk5LjEtMTYuNHYxMzMuNGMwIDQxLjUtNjMuMyA0MS44LTYzLjMgMFYyMDhjMC00MCA2My4xLTQxLjYgNjMuMSAwdjMuNGM0My4zLTUxLjYgMTYyLjQtNjAuNCAxNjIuNCAzOS4zdjE0MS41Yy4zIDMwLjQtMzEuNSAzMS40LTMxLjcgMzEuNHptMTc5LjcgMi45Yy00NC4zIDAtNjguMy0yMi45LTY4LjMtNjUuOFYyMzUuMkgxNDg4Yy0zNS42IDAtMzYuNy01NS4zIDAtNTUuM2gxNS41di0zNy4zYzAtNDEuMyA2My44LTQyLjEgNjMuOCAwdjM3LjVoMjQuOWMzNS40IDAgMzUuNyA1NS4zIDAgNTUuM2gtMjQuOXYxMDguNWMwIDI5LjYgMjYuMSAyNi4zIDI3LjQgMjYuMyAzMS40IDAgNTIuNiA1Ni4zLTIyLjkgNTYuM3pNMTk5MiAxMjNjLTE5LjUtNTAuMi05NS41LTUwLTExNC41IDAtMTA3LjMgMjc1LjctOTkuNSAyNTIuNy05OS41IDI2Mi44IDAgNDIuOCA1OC4zIDUxLjIgNzIuMSAxNC40bDEzLjUtMzUuOUgyMDA2bDEzIDM1LjljMTQuMiAzNy43IDcyLjEgMjcuMiA3Mi4xLTE0LjQgMC0xMC4xIDUuMyA2LjgtOTkuMS0yNjIuOHptLTEwOC45IDE3OS4xbDUxLjctMTQyLjkgNTEuOCAxNDIuOWgtMTAzLjV6bTU5MS4zLTg1LjZsLTUzLjcgMTc2LjNjLTEyLjQgNDEuMi03MiA0MS04NCAwbC00Mi4zLTEzNS45LTQyLjMgMTM1LjljLTEyLjQgNDAuOS03MiA0MS4yLTg0LjUgMGwtNTQuMi0xNzYuM2MtMTIuNS0zOS40IDQ5LjgtNTYuMSA2MC4yLTE2LjlMMjIxMyAzNDJsNDUuMy0xMzkuNWMxMC45LTMyLjcgNTkuNi0zNC43IDcxLjIgMGw0NS4zIDEzOS41IDM5LjMtMTQyLjRjMTAuMy0zOC4zIDcyLjYtMjMuOCA2MC4zIDE2Ljl6bTI3NS40IDc1LjFjMC00Mi40LTMzLjktMTE3LjUtMTE5LjUtMTE3LjUtNzMuMiAwLTEyNC40IDU2LjMtMTI0LjQgMTI2IDAgNzcuMiA1NS4zIDEyNi40IDEyOC41IDEyNi40IDMxLjcgMCA5My0xMS41IDkzLTM5LjggMC0xOC4zLTIxLjEtMzEuNS0zOS4zLTIyLjQtNDkuNCAyNi4yLTEwOSA4LjQtMTE1LjktNDMuOGgxNDguM2MxNi4zIDAgMjkuMy0xMy40IDI5LjMtMjguOXpNMjU3MSAyNzcuN2M5LjUtNzMuNCAxMTMuOS02OC42IDExOC42IDBIMjU3MXptMzE2LjcgMTQ4LjhjLTMxLjQgMC04MS42LTEwLjUtOTYuNi0zMS45LTEyLjQtMTcgMi41LTM5LjggMjEuOC0zOS44IDE2LjMgMCAzNi44IDIyLjkgNzcuNyAyMi45IDI3LjQgMCA0MC40LTExIDQwLjQtMjUuOCAwLTM5LjgtMTQyLjktNy40LTE0Mi45LTEwMiAwLTQwLjQgMzUuMy03NS43IDk4LjYtNzUuNyAzMS40IDAgNzQuMSA5LjkgODcuNiAyOS40IDEwLjggMTQuOC0xLjQgMzYuMi0yMC45IDM2LjItMTUuMSAwLTI2LjctMTcuMy02Ni4yLTE3LjMtMjIuOSAwLTM3LjggMTAuNS0zNy44IDIzLjggMCAzNS45IDE0Mi40IDYgMTQyLjQgMTAzLjEtLjEgNDMuNy0zNy40IDc3LjEtMTA0LjEgNzcuMXptMjY2LjgtMjUyLjRjLTE2OS4zIDAtMTY5LjEgMjUyLjQgMCAyNTIuNCAxNzAuMSAwIDE2OS42LTI1Mi40IDAtMjUyLjR6bTAgMTk2LjFjLTgxLjggMC04Mi0xMzkuOCAwLTEzOS44IDgyLjUgMCA4Mi40IDEzOS44IDAgMTM5Ljh6bTQ3Ni45IDIyVjI2OC43YzAtNTMuOC02MS40LTQ1LjgtODUuNy0xMC41djEzNGMwIDQxLjMtNjMuOCA0Mi4xLTYzLjggMFYyNjguN2MwLTUyLjEtNTkuNS00Ny40LTg1LjctMTAuMXYxMzMuNmMwIDQxLjUtNjMuMyA0MS44LTYzLjMgMFYyMDhjMC00MCA2My4xLTQxLjYgNjMuMSAwdjMuNGM5LjktMTQuNCA0MS44LTM3LjMgNzguNi0zNy4zIDM1LjMgMCA1Ny43IDE2LjQgNjYuNyA0My44IDEzLjktMjEuOCA0NS44LTQzLjggODIuNi00My44IDQ0LjMgMCA3MC43IDIzLjQgNzAuNyA3Mi43djE0NS4zYy41IDE3LjMtMTMuNSAzMS40LTMxLjkgMzEuNCAzLjUuMS0zMS4zIDEuMS0zMS4zLTMxLjN6TTM5OTIgMjkxLjZjMC00Mi40LTMyLjQtMTE3LjUtMTE3LjktMTE3LjUtNzMuMiAwLTEyNy41IDU2LjMtMTI3LjUgMTI2IDAgNzcuMiA1OC4zIDEyNi40IDEzMS42IDEyNi40IDMxLjcgMCA5MS41LTExLjUgOTEuNS0zOS44IDAtMTguMy0yMS4xLTMxLjUtMzkuMy0yMi40LTQ5LjQgMjYuMi0xMTAuNSA4LjQtMTE3LjUtNDMuOGgxNDkuOGMxNi4zIDAgMjkuMS0xMy40IDI5LjMtMjguOXptLTE4MC41LTEzLjljOS43LTc0LjQgMTE1LjktNjguMyAxMjAuMSAwaC0xMjAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRnJvd25PcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTQ4LTI0OGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzJ6bTEyOC0zMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bS04MCAxMTJjLTM1LjYgMC04OC44IDIxLjMtOTUuOCA2MS4yLTIgMTEuOCA5IDIxLjUgMjAuNSAxOC4xIDMxLjItOS42IDU5LjQtMTUuMyA3NS4zLTE1LjNzNDQuMSA1LjcgNzUuMyAxNS4zYzExLjQgMy41IDIyLjUtNi4zIDIwLjUtMTguMS03LTM5LjktNjAuMi02MS4yLTk1LjgtNjEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRnJvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0tODAtMjE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYwLTY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptLTgwIDEyOGMtNDAuMiAwLTc4IDE3LjctMTAzLjggNDguNi04LjUgMTAuMi03LjEgMjUuMyAzLjEgMzMuOCAxMC4yIDguNCAyNS4zIDcuMSAzMy44LTMuMSAxNi42LTE5LjkgNDEtMzEuNCA2Ni45LTMxLjRzNTAuMyAxMS40IDY2LjkgMzEuNGM4LjEgOS43IDIzLjEgMTEuOSAzMy44IDMuMSAxMC4yLTguNSAxMS41LTIzLjYgMy4xLTMzLjhDMzI2IDMyMS43IDI4OC4yIDMwNCAyNDggMzA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGdXRib2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgzLjggMTc5LjRDNDQ5LjggNzQuNiAzNTIuNiA4IDI0OC4xIDhjLTI1LjQgMC01MS4yIDMuOS03Ni43IDEyLjJDNDEuMiA2Mi41LTMwLjEgMjAyLjQgMTIuMiAzMzIuNiA0Ni4yIDQzNy40IDE0My40IDUwNCAyNDcuOSA1MDRjMjUuNCAwIDUxLjItMy45IDc2LjctMTIuMiAxMzAuMi00Mi4zIDIwMS41LTE4Mi4yIDE1OS4yLTMxMi40em0tNzQuNSAxOTMuN2wtNTIuMiA2LjQtNDMuNy02MC45IDI0LjQtNzUuMiA3MS4xLTIyLjEgMzguOSAzNi40Yy0uMiAzMC43LTcuNCA2MS4xLTIxLjcgODkuMi00LjcgOS4zLTEwLjcgMTcuOC0xNi44IDI2LjJ6bTAtMjM1LjRsLTEwLjQgNTMuMS03MC43IDIyLTY0LjItNDYuNVY5Mi41bDQ3LjQtMjYuMmMzOS4yIDEzIDczLjQgMzggOTcuOSA3MS40ek0xODQuOSA2Ni40TDIzMiA5Mi41djczLjhsLTY0LjIgNDYuNS03MC42LTIyLTEwLjEtNTIuNWMyNC4zLTMzLjQgNTcuOS01OC42IDk3LjgtNzEuOXpNMTM5IDM3OS41TDg1LjkgMzczYy0xNC40LTIwLjEtMzcuMy01OS42LTM3LjgtMTE1LjNsMzktMzYuNCA3MS4xIDIyLjIgMjQuMyA3NC4zLTQzLjUgNjEuN3ptNDguMiA2N2wtMjIuNC00OC4xIDQzLjYtNjEuN0gyODdsNDQuMyA2MS43LTIyLjQgNDguMWMtNi4yIDEuOC01Ny42IDIwLjQtMTIxLjcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR2VtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAwSDExMmMtNCAwLTcuOCAyLTEwIDUuNEwyIDE1Mi42Yy0yLjkgNC40LTIuNiAxMC4yLjcgMTQuMmwyNzYgMzQwLjhjNC44IDUuOSAxMy44IDUuOSAxOC42IDBsMjc2LTM0MC44YzMuMy00LjEgMy42LTkuOC43LTE0LjJMNDc0LjEgNS40QzQ3MS44IDIgNDY4LjEgMCA0NjQgMHptLTE5LjMgNDhsNjMuMyA5NmgtNjguNGwtNTEuNy05Nmg1Ni44em0tMjAyLjEgMGg5MC43bDUxLjcgOTZIMTkxbDUxLjYtOTZ6bS0xMTEuMyAwaDU2LjhsLTUxLjcgOTZINjhsNjMuMy05NnptLTQzIDE0NGg1MS40TDIwOCAzNTIgODguMyAxOTJ6bTEwMi45IDBoMTkzLjZMMjg4IDQzNS4zIDE5MS4yIDE5MnpNMzY4IDM1Mmw2OC4yLTE2MGg1MS40TDM2OCAzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW1hY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0tODAtMjE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNiAxNkgxNTJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDE5MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMzJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xNjggOTZoLTI0Yy04LjggMC0xNi03LjItMTYtMTZ2LThoNDB2MjR6bTAtNDBoLTQwdi04YzAtOC44IDcuMi0xNiAxNi0xNmgyNHYyNHptNjQgNDBoLTQ4di0yNGg0OHYyNHptMC00MGgtNDh2LTI0aDQ4djI0em02NCA0MGgtNDh2LTI0aDQ4djI0em0wLTQwaC00OHYtMjRoNDh2MjR6bTU2IDI0YzAgOC44LTcuMiAxNi0xNiAxNmgtMjR2LTI0aDQwdjh6bTAtMjRoLTQwdi0yNGgyNGM4LjggMCAxNiA3LjIgMTYgMTZ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDAuMyAyNDhjMTIuNC0xOC43IDE1LjEtMzcuMyAxNS43LTU2LS41LTE4LjctMy4zLTM3LjMtMTUuNy01Ni04LTEyLTI1LjEtMTEuNC0zMi43IDAtMTIuNCAxOC43LTE1LjEgMzcuMy0xNS43IDU2IC41IDE4LjcgMy4zIDM3LjMgMTUuNyA1NiA4LjEgMTIgMjUuMiAxMS40IDMyLjcgMHptMTI4IDBjMTIuNC0xOC43IDE1LjEtMzcuMyAxNS43LTU2LS41LTE4LjctMy4zLTM3LjMtMTUuNy01Ni04LTEyLTI1LjEtMTEuNC0zMi43IDAtMTIuNCAxOC43LTE1LjEgMzcuMy0xNS43IDU2IC41IDE4LjcgMy4zIDM3LjMgMTUuNyA1NiA4LjEgMTIgMjUuMiAxMS40IDMyLjcgMHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMDUuNi0xNTEuNGMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDcuOSA0Ny4yIDcxLjMgODAgMTIzLjMgODBzMTE1LjMtMzIuOSAxMjMuMy04MGMxLjYtOS44LTcuNy0xOC40LTE3LjctMTUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpbkJlYW1Td2VhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDAgMTYwYzI5LjUgMCA1My4zLTI2LjMgNTMuMy01OC43IDAtMjUtMzEuNy03NS41LTQ2LjItOTcuMy0zLjYtNS4zLTEwLjctNS4zLTE0LjIgMC0xNC41IDIxLjgtNDYuMiA3Mi4zLTQ2LjIgOTcuMyAwIDMyLjQgMjMuOCA1OC43IDUzLjMgNTguN3pNMjQ4IDQwMGM1MS45IDAgMTE1LjMtMzIuOSAxMjMuMy04MCAxLjctOS45LTcuNy0xOC41LTE3LjctMTUuMy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS44LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgOCA0Ny4xIDcxLjQgODAgMTIzLjMgODB6bTEzMC4zLTE2OC4zYzMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjYgNi4yIDQuNiA5LjMgMy43em0xMDUuMy01Mi45Yy0yNC42IDE1LjctNDYgMTIuOS00Ni40IDEyLjkgNi45IDIwLjIgMTAuOCA0MS44IDEwLjggNjQuMyAwIDExMC4zLTg5LjcgMjAwLTIwMCAyMDBTNDggMzY2LjMgNDggMjU2IDEzNy43IDU2IDI0OCA1NmMzOS44IDAgNzYuOCAxMS44IDEwOCAzMS45IDEuNy05LjUgNi4zLTI0LjEgMTcuMi00NS43QzMzNi40IDIwLjYgMjkzLjcgOCAyNDggOCAxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4YzAtMjctNC40LTUyLjktMTIuNC03Ny4yek0xNjggMTg5LjRjMTIuMyAwIDIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA2LTQuNSA1LjctOC4zLTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40cy01Mi43IDI5LjMtNTYgNzEuNGMtLjMgMy43IDIuMSA3LjIgNS43IDguMyAzLjUgMS4xIDcuNC0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuOCAxOS4yLTIxLjYgMzEuNS0yMS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTEwNS42LTE1MS40Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS44LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgNy45IDQ3LjEgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zem0tMjM1LjktNzIuOWMzLjUgMS4xIDcuNC0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA2LTQuNSA1LjctOC4zLTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40cy01Mi43IDI5LjMtNTYgNzEuNGMtLjMgMy43IDIuMSA3LjIgNS43IDguM3ptMTYwIDBjMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5IZWFydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUzLjYgMzA0LjZjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjgtMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyA3LjkgNDcuMiA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6bS0xNTIuOC00OC45YzQuNSAxLjIgOS4yLTEuNSAxMC41LTZsMTkuNC02OS45YzUuNi0yMC4zLTcuNC00MS4xLTI4LjgtNDQuNS0xOC42LTMtMzYuNCA5LjgtNDEuNSAyNy45bC0yIDcuMS03LjEtMS45Yy0xOC4yLTQuNy0zOC4yIDQuMy00NC45IDIyLTcuNyAyMC4yIDMuOCA0MS45IDI0LjIgNDcuMmw3MC4yIDE4LjF6bTE4OC44LTY1LjNjLTYuNy0xNy42LTI2LjctMjYuNy00NC45LTIybC03LjEgMS45LTItNy4xYy01LTE4LjEtMjIuOC0zMC45LTQxLjUtMjcuOS0yMS40IDMuNC0zNC40IDI0LjItMjguOCA0NC41bDE5LjQgNjkuOWMxLjIgNC41IDUuOSA3LjIgMTAuNSA2bDcwLjItMTguMmMyMC40LTUuMyAzMS45LTI2LjkgMjQuMi00Ny4xek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5TcXVpbnRUZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTcuMSAzODQuMWMtMjUuOCAzLjctODQgMTMuNy0xMDAuOSAzMC42LTIxLjkgMjEuOS0yMS41IDU3LjkuOSA4MC4zczU4LjMgMjIuOCA4MC4zLjlDMTE0LjMgNDc5IDEyNC4zIDQyMC44IDEyOCAzOTVjLjgtNi40LTQuNi0xMS44LTEwLjktMTAuOXptLTQxLjItNDEuN0M0MC4zIDI2OCA1MyAxNzYuMSAxMTQuNiAxMTQuNiAxNTIuNCA3Ni44IDIwMi42IDU2IDI1NiA1NmMzNi4yIDAgNzAuOCA5LjggMTAxLjIgMjcuNyAzLjgtMjAuMyA4LTM2LjEgMTItNDguM0MzMzMuOCAxNy4yIDI5NC45IDggMjU2IDggMTkyLjUgOCAxMjkuMSAzMi4yIDgwLjYgODAuNmMtNzQuMSA3NC4xLTkxLjMgMTgzLjQtNTIgMjc0IDEyLjItNC4xIDI3LjctOC4zIDQ3LjMtMTIuMnptMzUyLjMtMTg3LjZjNDUgNzYuNiAzNC45IDE3Ni45LTMwLjggMjQyLjYtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNi0zMC41IDAtNTkuOC03LTg2LjQtMTkuOC0zLjkgMTkuNS04IDM1LTEyLjIgNDcuMiAzMS40IDEzLjYgNjUgMjAuNiA5OC43IDIwLjYgNjMuNSAwIDEyNi45LTI0LjIgMTc1LjQtNzIuNiA3OC4xLTc4LjEgOTMuMS0xOTUuNCA0NS4yLTI4OC42LTEyLjMgNC0yOC4yIDguMS00OC41IDEyem0tMzMuMy0yNi45YzI1LjgtMy43IDg0LTEzLjcgMTAwLjktMzAuNiAyMS45LTIxLjkgMjEuNS01Ny45LS45LTgwLjNzLTU4LjMtMjIuOC04MC4zLS45QzM5Ny43IDMzIDM4Ny43IDkxLjIgMzg0IDExN2MtLjggNi40IDQuNiAxMS44IDEwLjkgMTAuOXptLTE4NyAxMDguM2MtMy0zLTcuMi00LjItMTEuNC0zLjJMMTA2IDI1NS43Yy01LjcgMS40LTkuNSA2LjctOS4xIDEyLjYuNSA1LjggNS4xIDEwLjUgMTAuOSAxMWw1Mi4zIDQuOCA0LjggNTIuM2MuNSA1LjggNS4yIDEwLjQgMTEgMTAuOWguOWM1LjUgMCAxMC4zLTMuNyAxMS43LTkuMWwyMi42LTkwLjVjMS00LjItLjItOC41LTMuMi0xMS41em0zOS43LTI1LjFsOTAuNS0yMi42YzUuNy0xLjQgOS41LTYuNyA5LjEtMTIuNi0uNS01LjgtNS4xLTEwLjUtMTAuOS0xMWwtNTIuMy00LjgtNC44LTUyLjNjLS41LTUuOC01LjItMTAuNC0xMS0xMC45LTUuNi0uMS0xMS4yIDMuNC0xMi42IDkuMUwyMzMgMTk2LjVjLTEgNC4xLjIgOC40IDMuMiAxMS40IDUgNSAxMS4zIDMuMiAxMS40IDMuMnptNTIgODguNWMtMjkuMSAyOS4xLTU5LjcgNTIuOS04My45IDY1LjQtOS4yIDQuOC0xMCAxNy41LTEuNyAyMy40IDM4LjkgMjcuNyAxMDcgNi4yIDE0My43LTMwLjZTNDE2IDI1MyAzODguMyAyMTQuMWMtNS44LTguMi0xOC41LTcuNi0yMy40IDEuNy0xMi4zIDI0LjItMzYuMiA1NC43LTY1LjMgODMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpblNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTEwNS42LTE1MS40Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS45LTMuMS0xOS40IDUuNC0xNy43IDE1LjMgNy45IDQ3LjEgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zem0tMjM0LjctNDAuOGMzLjYgNC4yIDkuOSA1LjcgMTUuMyAyLjVsODAtNDhjMy42LTIuMiA1LjgtNi4xIDUuOC0xMC4zcy0yLjItOC4xLTUuOC0xMC4zbC04MC00OGMtNS4xLTMtMTEuNC0xLjktMTUuMyAyLjUtMy44IDQuNS0zLjggMTEtLjEgMTUuNWwzMy42IDQwLjMtMzMuNiA0MC4zYy0zLjggNC41LTMuNyAxMS4xLjEgMTUuNXptMjQyLjkgMi41YzUuNCAzLjIgMTEuNyAxLjcgMTUuMy0yLjUgMy44LTQuNSAzLjgtMTEgLjEtMTUuNUwzNDMuNiAyMDhsMzMuNi00MC4zYzMuOC00LjUgMy43LTExLS4xLTE1LjUtMy44LTQuNC0xMC4yLTUuNC0xNS4zLTIuNWwtODAgNDhjLTMuNiAyLjItNS44IDYuMS01LjggMTAuM3MyLjIgOC4xIDUuOCAxMC4zbDgwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluU3RhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMDUuNi0xNTEuNGMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDcuOSA0Ny4yIDcxLjMgODAgMTIzLjMgODBzMTE1LjMtMzIuOSAxMjMuMy04MGMxLjYtOS44LTcuNy0xOC40LTE3LjctMTUuM3ptLTIyNy45LTU3LjVjLTEgNi4yIDUuNCAxMSAxMSA3LjlsMzEuMy0xNi4zIDMxLjMgMTYuM2M1LjYgMy4xIDEyLTEuNyAxMS03LjlsLTYtMzQuOSAyNS40LTI0LjZjNC41LTQuNSAxLjktMTIuMi00LjMtMTMuMmwtMzQuOS01LTE1LjUtMzEuNmMtMi45LTUuOC0xMS01LjgtMTMuOSAwbC0xNS41IDMxLjYtMzQuOSA1Yy02LjIuOS04LjkgOC42LTQuMyAxMy4ybDI1LjQgMjQuNi02LjEgMzQuOXptMjU5LjctNzIuN2wtMzQuOS01LTE1LjUtMzEuNmMtMi45LTUuOC0xMS01LjgtMTMuOSAwbC0xNS41IDMxLjYtMzQuOSA1Yy02LjIuOS04LjkgOC42LTQuMyAxMy4ybDI1LjQgMjQuNi02IDM0LjljLTEgNi4yIDUuNCAxMSAxMSA3LjlsMzEuMy0xNi4zIDMxLjMgMTYuM2M1LjYgMy4xIDEyLTEuNyAxMS03LjlsLTYtMzQuOSAyNS40LTI0LjZjNC41LTQuNiAxLjgtMTIuMi00LjQtMTMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpblRlYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNy4xIDI1Ni4xYy0yNS44IDMuNy04NCAxMy43LTEwMC45IDMwLjYtMjEuOSAyMS45LTIxLjUgNTcuOS45IDgwLjNzNTguMyAyMi44IDgwLjMuOUMxMTQuMyAzNTEgMTI0LjMgMjkyLjggMTI4IDI2N2MuOC02LjQtNC42LTExLjgtMTAuOS0xMC45em01MDYuNyAzMC42Yy0xNi45LTE2LjktNzUuMS0yNi45LTEwMC45LTMwLjYtNi4zLS45LTExLjcgNC41LTEwLjggMTAuOCAzLjcgMjUuOCAxMy43IDg0IDMwLjYgMTAwLjkgMjEuOSAyMS45IDU3LjkgMjEuNSA4MC4zLS45IDIyLjMtMjIuMyAyMi43LTU4LjMuOC04MC4yem0tMTI2LjYgNjEuN0M0NjMuOCA0MTIuMyAzOTYuOSA0NTYgMzIwIDQ1NmMtNzYuOSAwLTE0My44LTQzLjctMTc3LjItMTA3LjYtMTIuNSAzNy40LTI1LjIgNDMuOS0yOC4zIDQ2LjVDMTU5LjEgNDYwLjcgMjM0LjUgNTA0IDMyMCA1MDRzMTYwLjktNDMuMyAyMDUuNS0xMDkuMWMtMy4yLTIuNy0xNS45LTkuMi0yOC4zLTQ2LjV6TTEyMi43IDIyNC41QzEzNy45IDEyOS4yIDIyMC41IDU2IDMyMCA1NmM5OS41IDAgMTgyLjEgNzMuMiAxOTcuMyAxNjguNSAyLjEtLjIgNS4yLTIuNCA0OS41IDdDNTU0LjQgMTA2IDQ0OC43IDggMzIwIDhTODUuNiAxMDYgNzMuMiAyMzEuNGM0NC41LTkuNCA0Ny4xLTcuMiA0OS41LTYuOXpNMzIwIDQwMGM1MS45IDAgMTE1LjMtMzIuOSAxMjMuMy04MCAxLjctOS45LTcuNy0xOC41LTE3LjctMTUuMy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS44LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgOCA0Ny4xIDcxLjQgODAgMTIzLjMgODB6bTEzMC4zLTE2OC4zYzMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjYgNi4yIDQuNiA5LjMgMy43ek0yNDAgMTg5LjRjMTIuMyAwIDIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA2LTQuNSA1LjctOC4zLTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40cy01Mi43IDI5LjMtNTYgNzEuNGMtLjMgMy43IDIuMSA3LjIgNS43IDguMyAzLjUgMS4xIDcuNC0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuOCAxOS4yLTIxLjYgMzEuNS0yMS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluVG9uZ3VlU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTY0IDQwMGMwIDM1LjYtMjkuMSA2NC41LTY0LjkgNjQtMzUuMS0uNS02My4xLTI5LjgtNjMuMS02NXYtNDIuOGwxNy43LTguOGMxNS03LjUgMzEuNSAxLjcgMzQuOSAxNi41bDIuOCAxMi4xYzIuMSA5LjIgMTUuMiA5LjIgMTcuMyAwbDIuOC0xMi4xYzMuNC0xNC44IDE5LjgtMjQuMSAzNC45LTE2LjVsMTcuNyA4LjhWNDA4em0yOC4yIDI1LjNjMi4yLTguMSAzLjgtMTYuNSAzLjgtMjUuM3YtNDMuNWMxNC4yLTEyLjQgMjQuNC0yNy41IDI3LjMtNDQuNSAxLjctOS45LTcuNy0xOC41LTE3LjctMTUuMy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS45LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgMi45IDE3IDEzLjEgMzIuMSAyNy4zIDQ0LjVWNDA4YzAgOC44IDEuNiAxNy4yIDMuOCAyNS4zQzkxLjggMzk5LjkgNDggMzMzIDQ4IDI1NmMwLTExMC4zIDg5LjctMjAwIDIwMC0yMDBzMjAwIDg5LjcgMjAwIDIwMGMwIDc3LTQzLjggMTQzLjktMTA3LjggMTc3LjN6bTM2LjktMjgxLjFjLTMuOC00LjQtMTAuMy01LjUtMTUuMy0yLjVsLTgwIDQ4Yy0zLjYgMi4yLTUuOCA2LjEtNS44IDEwLjNzMi4yIDguMSA1LjggMTAuM2w4MCA0OGM1LjQgMy4yIDExLjcgMS43IDE1LjMtMi41IDMuOC00LjUgMy44LTExIC4xLTE1LjVMMzQzLjYgMjA4bDMzLjYtNDAuM2MzLjgtNC41IDMuNy0xMS4xLS4xLTE1LjV6bS0xNjIuOSA0NS41bC04MC00OGMtNS0zLTExLjQtMi0xNS4zIDIuNS0zLjggNC41LTMuOCAxMS0uMSAxNS41bDMzLjYgNDAuMy0zMy42IDQwLjNjLTMuOCA0LjUtMy43IDExIC4xIDE1LjUgMy42IDQuMiA5LjkgNS43IDE1LjMgMi41bDgwLTQ4YzMuNi0yLjIgNS44LTYuMSA1LjgtMTAuM3MtMi4yLTguMS01LjgtMTAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpblRvbmd1ZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyIDE4MGMtMjUuNyAwLTU1LjkgMTYuOS01OS44IDQyLjEtLjggNSAxLjcgMTAgNi4xIDEyLjQgNC40IDIuNCA5LjkgMS44IDEzLjctMS42bDkuNS04LjVjMTQuOC0xMy4yIDQ2LjItMTMuMiA2MSAwbDkuNSA4LjVjMi41IDIuMiA4IDQuNyAxMy43IDEuNiA0LjQtMi40IDYuOS03LjQgNi4xLTEyLjQtMy45LTI1LjItMzQuMS00Mi4xLTU5LjgtNDIuMXptMTc2LTUyYy00NC4yIDAtODAgMzUuOC04MCA4MHMzNS44IDgwIDgwIDgwIDgwLTM1LjggODAtODAtMzUuOC04MC04MC04MHptMCAxMjhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0wLTcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNjQgNDAwYzAgMzUuNi0yOS4xIDY0LjUtNjQuOSA2NC0zNS4xLS41LTYzLjEtMjkuOC02My4xLTY1di00Mi44bDE3LjctOC44YzE1LTcuNSAzMS41IDEuNyAzNC45IDE2LjVsMi44IDEyLjFjMi4xIDkuMiAxNS4yIDkuMiAxNy4zIDBsMi44LTEyLjFjMy40LTE0LjggMTkuOC0yNC4xIDM0LjktMTYuNWwxNy43IDguOFY0MDh6bTI4LjIgMjUuM2MyLjItOC4xIDMuOC0xNi41IDMuOC0yNS4zdi00My41YzE0LjItMTIuNCAyNC40LTI3LjUgMjcuMy00NC41IDEuNy05LjktNy43LTE4LjUtMTcuNy0xNS4zLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyAyLjkgMTcgMTMuMSAzMi4xIDI3LjMgNDQuNVY0MDhjMCA4LjggMS42IDE3LjIgMy44IDI1LjNDOTEuOCAzOTkuOSA0OCAzMzMgNDggMjU2YzAtMTEwLjMgODkuNy0yMDAgMjAwLTIwMHMyMDAgODkuNyAyMDAgMjAwYzAgNzctNDMuOCAxNDMuOS0xMDcuOCAxNzcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpblRvbmd1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em02NCA0MDBjMCAzNS42LTI5LjEgNjQuNS02NC45IDY0LTM1LjEtLjUtNjMuMS0yOS44LTYzLjEtNjV2LTQyLjhsMTcuNy04LjhjMTUtNy41IDMxLjUgMS43IDM0LjkgMTYuNWwyLjggMTIuMWMyLjEgOS4yIDE1LjIgOS4yIDE3LjMgMGwyLjgtMTIuMWMzLjQtMTQuOCAxOS44LTI0LjEgMzQuOS0xNi41bDE3LjcgOC44VjQwOHptMjguMiAyNS4zYzIuMi04LjEgMy44LTE2LjUgMy44LTI1LjN2LTQzLjVjMTQuMi0xMi40IDI0LjQtMjcuNSAyNy4zLTQ0LjUgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDIuOSAxNyAxMy4xIDMyLjEgMjcuMyA0NC41VjQwOGMwIDguOCAxLjYgMTcuMiAzLjggMjUuM0M5MS44IDM5OS45IDQ4IDMzMyA0OCAyNTZjMC0xMTAuMyA4OS43LTIwMCAyMDAtMjAwczIwMCA4OS43IDIwMCAyMDBjMCA3Ny00My44IDE0My45LTEwNy44IDE3Ny4zek0xNjggMTc2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptMTYwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjggMTgwYy0yNS42OSAwLTU1Ljg4IDE2LjkyLTU5Ljg2IDQyLjEyLTEuNzUgMTEuMjIgMTEuNSAxOC4yNCAxOS44MyAxMC44NGw5LjU1LTguNDhjMTQuODEtMTMuMTkgNDYuMTYtMTMuMTkgNjAuOTcgMGw5LjU1IDguNDhjOC40OCA3LjQzIDIxLjU2LjI1IDE5LjgzLTEwLjg0QzM4My44OCAxOTYuOTIgMzUzLjY5IDE4MCAzMjggMTgwem0tMTYwIDYwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJzLTE0LjMzLTMyLTMyLTMyLTMyIDE0LjMzLTMyIDMyIDE0LjMzIDMyIDMyIDMyem0xODUuNTUgNjQuNjRjLTI1LjkzIDguMy02NC40IDEzLjA2LTEwNS41NSAxMy4wNnMtNzkuNjItNC43NS0xMDUuNTUtMTMuMDZjLTkuOTQtMy4xMy0xOS40IDUuMzctMTcuNzEgMTUuMzRDMTMyLjY3IDM2Ny4xMyAxOTYuMDYgNDAwIDI0OCA0MDBzMTE1LjMzLTMyLjg3IDEyMy4yNi04MC4wMmMxLjY4LTkuODktNy42Ny0xOC40OC0xNy43MS0xNS4zNHpNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0NDhjLTExMC4yOCAwLTIwMC04OS43Mi0yMDAtMjAwUzEzNy43MiA1NiAyNDggNTZzMjAwIDg5LjcyIDIwMCAyMDAtODkuNzIgMjAwLTIwMCAyMDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMDUuNi0xNTEuNGMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjQtMTcuNyAxNS4zIDcuOSA0Ny4xIDcxLjMgODAgMTIzLjMgODBzMTE1LjMtMzIuOSAxMjMuMy04MGMxLjYtOS44LTcuNy0xOC40LTE3LjctMTUuM3pNMTY4IDI0MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZExpemFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTYuNjg2IDI5MC41NDJMNDEwLjMyOCA2NC44MjlDMzk3LjAwMSA0NC4yNzIgMzc0LjQxNyAzMiAzNDkuOTE3IDMySDU2QzI1LjEyMSAzMiAwIDU3LjEyMiAwIDg4djhjMCA0NC4xMTIgMzUuODg4IDgwIDgwIDgwaDE5Ni4wNDJsLTE4LjMzMyA0OEgxNDRjLTQ4LjUyMyAwLTg4IDM5LjQ3Ny04OCA4OCAwIDMwLjg3OSAyNS4xMjEgNTYgNTYgNTZoMTMxLjU1MmMyLjk4NyAwIDUuOTE0LjU0OSA4LjY5NyAxLjYzMUwzNTIgNDA4LjQxOFY0ODBoMjI0VjM1NS44MjljMC0yMy4yMjUtNi42NzktNDUuODAxLTE5LjMxNC02NS4yODd6TTUyOCA0MzJINDAwdi0yMy41ODJjMC0xOS45NDgtMTIuMDE0LTM3LjUwOC0zMC42MDQtNDQuNzM2bC05OS43NTEtMzguNzg4QTcxLjczMyA3MS43MzMgMCAwIDAgMjQzLjU1MiAzMjBIMTEyYy00LjQxMSAwLTgtMy41ODktOC04IDAtMjIuMDU2IDE3Ljk0NC00MCA0MC00MGgxMTMuNzA5YzE5Ljc2NyAwIDM3Ljc4Ni0xMi40MDcgNDQuODQtMzAuODczbDI0LjU1Mi02NC4yODFjOC45OTYtMjMuNTUzLTguNDI4LTQ4Ljg0Ni0zMy42My00OC44NDZIODBjLTE3LjY0NSAwLTMyLTE0LjM1NS0zMi0zMnYtOGMwLTQuNDExIDMuNTg5LTggOC04aDI5My45MTdjOC4xNjYgMCAxNS42OTMgNC4wOSAyMC4xMzcgMTAuOTQybDE0Ni4zNTggMjI1LjcxNUE3MS44NCA3MS44NCAwIDAgMSA1MjggMzU1LjgyOVY0MzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIuNTcgMTEyLjY0MXYtMTAuODI1YzAtNDMuNjEyLTQwLjUyLTc2LjY5MS04My4wMzktNjUuNTQ2LTI1LjYyOS00OS41LTk0LjA5LTQ3LjQ1LTExNy45ODIuNzQ3QzEzMC4yNjkgMjYuNDU2IDg5LjE0NCA1Ny45NDUgODkuMTQ0IDEwMnYxMjYuMTNjLTE5Ljk1My03LjQyNy00My4zMDgtNS4wNjgtNjIuMDgzIDguODcxLTI5LjM1NSAyMS43OTYtMzUuNzk0IDYzLjMzMy0xNC41NSA5My4xNTNMMTMyLjQ4IDQ5OC41NjlhMzIgMzIgMCAwIDAgMjYuMDYyIDEzLjQzMmgyMjIuODk3YzE0LjkwNCAwIDI3LjgzNS0xMC4yODkgMzEuMTgyLTI0LjgxM2wzMC4xODQtMTMwLjk1OEEyMDMuNjM3IDIwMy42MzcgMCAwIDAgNDQ4IDMxMC41NjRWMTc5YzAtNDAuNjItMzUuNTIzLTcxLjk5Mi03NS40My02Ni4zNTl6bTI3LjQyNyAxOTcuOTIyYzAgMTEuNzMxLTEuMzM0IDIzLjQ2OS0zLjk2NSAzNC44ODZMMzY4LjcwNyA0NjRoLTIwMS45Mkw1MS41OTEgMzAyLjMwM2MtMTQuNDM5LTIwLjI3IDE1LjAyMy00Mi43NzYgMjkuMzk0LTIyLjYwNWwyNy4xMjggMzguMDc5YzguOTk1IDEyLjYyNiAyOS4wMzEgNi4yODcgMjkuMDMxLTkuMjgzVjEwMmMwLTI1LjY0NSAzNi41NzEtMjQuODEgMzYuNTcxLjY5MVYyNTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg2Ljg1NmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjY3YzAtMjUuNjYzIDM2LjU3MS0yNC44MSAzNi41NzEuNjkxVjI1NmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDYuODU2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZWMTAxLjEyNWMwLTI1LjY3MiAzNi41Ny0yNC44MSAzNi41Ny42OTFWMjU2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNi44NTdjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNzYuMzA5YzAtMjYuMjQyIDM2LjU3LTI1LjY0IDM2LjU3LS42OTF2MTMxLjU2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBlYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2Mi4xNDYgMTkxLjk3NmMtMTMuNzEtMjEuNjQ5LTM4Ljc2MS0zNC4wMTYtNjUuMDA2LTMwLjM0MVY3NGMwLTQwLjgwNC0zMi44MTEtNzQtNzMuMTQxLTc0LTQwLjMzIDAtNzMuMTQgMzMuMTk2LTczLjE0IDc0TDE2MCAxNjhsLTE4LjY3OS03OC44NUMxMjYuNTc4IDUwLjg0MyA4My44NSAzMi4xMSA0Ni4yMDkgNDcuMjA4IDguNzM1IDYyLjIzOC05LjU3MSAxMDQuOTYzIDUuMDA4IDE0Mi44NWw1NS43NTcgMTQ0LjkyN2MtMzAuNTU3IDI0Ljk1Ni00My45OTQgNTcuODA5LTI0LjczMyA5Mi4yMThsNTQuODUzIDk3Ljk5OUMxMDIuNjI1IDQ5OC45NyAxMjQuNzMgNTEyIDE0OC41NzUgNTEyaDIwNS43MDJjMzAuNzQ0IDAgNTcuNTU4LTIxLjQ0IDY0LjU1NS01MS43OTdsMjcuNDI3LTExOC45OTlhNjcuODAxIDY3LjgwMSAwIDAgMCAxLjcyOS0xNS4yMDNMNDQ4IDI1NmMwLTQ0Ljk1Ni00My4yNjMtNzcuMzQzLTg1Ljg1NC02NC4wMjR6TTM5OS45ODcgMzI2YzAgMS40ODgtLjE2OSAyLjk3Ny0uNTAyIDQuNDIzbC0yNy40MjcgMTE5LjAwMWMtMS45NzggOC41ODItOS4yOSAxNC41NzYtMTcuNzgyIDE0LjU3NkgxNDguNTc1Yy02LjQ4NiAwLTEyLjU0Mi0zLjYyMS0xNS44MDUtOS40NDlsLTU0Ljg1NC05OGMtNC41NTctOC4xNDEtMi42MTktMTguNjY4IDQuNTA4LTI0LjQ4OGwyNi42NDctMjEuNzY0YTE2IDE2IDAgMCAwIDQuODEyLTE4LjEzOWwtNjQuMDktMTY2LjU0OUMzNy4yMjYgOTIuOTU2IDg0LjM3IDc0LjgzNyA5Ni41MSAxMDYuMzg5bDU5Ljc4NCAxNTUuMzU3QTE2IDE2IDAgMCAwIDE3MS4yMjcgMjcyaDExLjYzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2Vjc0YzAtMzQuMzc1IDUwLjI4MS0zNC40MyA1MC4yODEgMHYxODJjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg2Ljg1NmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di0yOGMwLTI1LjEyMiAzNi41NjctMjUuMTU5IDM2LjU2NyAwdjI4YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNi44NTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNiAwLTI1LjEyIDM2LjU2Ny0yNS4xNiAzNi41NjcgMHY3MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODguOCA1MTJjNDUuNjE2IDAgODMuMi0zNy43NjUgODMuMi04My4ydi0zNS42NDdhOTMuMTQ4IDkzLjE0OCAwIDAgMCAyMi4wNjQtNy45MjljMjIuMDA2IDIuNTA3IDQ0Ljk3OC0zLjUwMyA2Mi43OTEtMTUuOTg1QzQwOS4zNDIgMzY4LjEgNDQ4IDMzMS44NDEgNDQ4IDI2OS4yOTlWMjQ4YzAtNjAuMDYzLTQwLTk4LjUxMi00MC0xMjcuMnYtMi42NzljNC45NTItNS43NDcgOC0xMy41MzYgOC0yMi4xMlYzMmMwLTE3LjY3My0xMi44OTQtMzItMjguOC0zMkgxNTYuOEMxNDAuODk0IDAgMTI4IDE0LjMyNyAxMjggMzJ2NjRjMCA4LjU4NCAzLjA0OCAxNi4zNzMgOCAyMi4xMnYyLjY3OWMwIDYuOTY0LTYuMTkzIDE0Ljg2Mi0yMy42NjggMzAuMTgzbC0uMTQ4LjEyOS0uMTQ2LjEzMWMtOS45MzcgOC44NTYtMjAuODQxIDE4LjExNi0zMy4yNTMgMjUuODUxQzQ4LjUzNyAxOTUuNzk4IDAgMjA3LjQ4NiAwIDI1Mi44YzAgNTYuOTI4IDM1LjI4NiA5MiA4My4yIDkyIDguMDI2IDAgMTUuNDg5LS44MTQgMjIuNC0yLjE3NlY0MjguOGMwIDQ1LjA5OSAzOC4xMDEgODMuMiA4My4yIDgzLjJ6bTAtNDhjLTE4LjcgMC0zNS4yLTE2Ljc3NS0zNS4yLTM1LjJWMjcwLjRjLTE3LjMyNSAwLTM1LjIgMjYuNC03MC40IDI2LjQtMjYuNCAwLTM1LjItMjAuNjI1LTM1LjItNDQgMC04Ljc5NCAzMi43MTItMjAuNDQ1IDU2LjEtMzQuOTI2IDE0LjU3NS05LjA3NCAyNy4yMjUtMTkuNTI0IDM5Ljg3NS0zMC43OTkgMTguMzc0LTE2LjEwOSAzNi42MzMtMzMuODM2IDM5LjU5Ni01OS4wNzVoMTc2Ljc1MkMzNjQuMDg3IDE3MC43OSA0MDAgMjAyLjUwOSA0MDAgMjQ4djIxLjI5OWMwIDQwLjUyNC0yMi4xOTcgNTcuMTI0LTYxLjMyNSA1MC42MDEtOC4wMDEgMTQuNjEyLTMzLjk3OSAyNC4xNTEtNTMuNjI1IDEyLjkyNS0xOC4yMjUgMTkuMzY1LTQ2LjM4MSAxNy43ODctNjEuMDUgNC45NVY0MjguOGMwIDE4Ljk3NS0xNi4yMjUgMzUuMi0zNS4yIDM1LjJ6TTMyOCA2NGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRzMjQgMTAuNzQ1IDI0IDI0LTEwLjc0NSAyNC0yNCAyNC0yNC0xMC43NDUtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMjAuOEMwIDI2Ni40MTYgMzcuNzY1IDMwNCA4My4yIDMwNGgzNS42NDdhOTMuMTQ4IDkzLjE0OCAwIDAgMCA3LjkyOSAyMi4wNjRjLTIuNTA3IDIyLjAwNiAzLjUwMyA0NC45NzggMTUuOTg1IDYyLjc5MUMxNDMuOSA0NDEuMzQyIDE4MC4xNTkgNDgwIDI0Mi43MDEgNDgwSDI2NGM2MC4wNjMgMCA5OC41MTItNDAgMTI3LjItNDBoMi42NzljNS43NDcgNC45NTIgMTMuNTM2IDggMjIuMTIgOGg2NGMxNy42NzMgMCAzMi0xMi44OTQgMzItMjguOFYxODguOGMwLTE1LjkwNi0xNC4zMjctMjguOC0zMi0yOC44aC02NGMtOC41ODQgMC0xNi4zNzMgMy4wNDgtMjIuMTIgOEgzOTEuMmMtNi45NjQgMC0xNC44NjItNi4xOTMtMzAuMTgzLTIzLjY2OGwtLjEyOS0uMTQ4LS4xMzEtLjE0NmMtOC44NTYtOS45MzctMTguMTE2LTIwLjg0MS0yNS44NTEtMzMuMjUzQzMxNi4yMDIgODAuNTM3IDMwNC41MTQgMzIgMjU5LjIgMzJjLTU2LjkyOCAwLTkyIDM1LjI4Ni05MiA4My4yIDAgOC4wMjYuODE0IDE1LjQ4OSAyLjE3NiAyMi40SDgzLjJDMzguMTAxIDEzNy42IDAgMTc1LjcwMSAwIDIyMC44em00OCAwYzAtMTguNyAxNi43NzUtMzUuMiAzNS4yLTM1LjJoMTU4LjRjMC0xNy4zMjUtMjYuNC0zNS4yLTI2LjQtNzAuNCAwLTI2LjQgMjAuNjI1LTM1LjIgNDQtMzUuMiA4Ljc5NCAwIDIwLjQ0NSAzMi43MTIgMzQuOTI2IDU2LjEgOS4wNzQgMTQuNTc1IDE5LjUyNCAyNy4yMjUgMzAuNzk5IDM5Ljg3NSAxNi4xMDkgMTguMzc0IDMzLjgzNiAzNi42MzMgNTkuMDc1IDM5LjU5NnYxNzYuNzUyQzM0MS4yMSAzOTYuMDg3IDMwOS40OTEgNDMyIDI2NCA0MzJoLTIxLjI5OWMtNDAuNTI0IDAtNTcuMTI0LTIyLjE5Ny01MC42MDEtNjEuMzI1LTE0LjYxMi04LjAwMS0yNC4xNTEtMzMuOTc5LTEyLjkyNS01My42MjUtMTkuMzY1LTE4LjIyNS0xNy43ODctNDYuMzgxLTQuOTUtNjEuMDVIODMuMkM2NC4yMjUgMjU2IDQ4IDIzOS43NzUgNDggMjIwLjh6TTQ0OCAzNjBjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0cy0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI4LjggMTM3LjZoLTg2LjE3N2ExMTUuNTIgMTE1LjUyIDAgMCAwIDIuMTc2LTIyLjRjMC00Ny45MTQtMzUuMDcyLTgzLjItOTItODMuMi00NS4zMTQgMC01Ny4wMDIgNDguNTM3LTc1LjcwNyA3OC43ODQtNy43MzUgMTIuNDEzLTE2Ljk5NCAyMy4zMTctMjUuODUxIDMzLjI1M2wtLjEzMS4xNDYtLjEyOS4xNDhDMTM1LjY2MiAxNjEuODA3IDEyNy43NjQgMTY4IDEyMC44IDE2OGgtMi42NzljLTUuNzQ3LTQuOTUyLTEzLjUzNi04LTIyLjEyLThIMzJjLTE3LjY3MyAwLTMyIDEyLjg5NC0zMiAyOC44djIzMC40QzAgNDM1LjEwNiAxNC4zMjcgNDQ4IDMyIDQ0OGg2NGM4LjU4NCAwIDE2LjM3My0zLjA0OCAyMi4xMi04aDIuNjc5YzI4LjY4OCAwIDY3LjEzNyA0MCAxMjcuMiA0MGgyMS4yOTljNjIuNTQyIDAgOTguOC0zOC42NTggOTkuOTQtOTEuMTQ1IDEyLjQ4Mi0xNy44MTMgMTguNDkxLTQwLjc4NSAxNS45ODUtNjIuNzkxQTkzLjE0OCA5My4xNDggMCAwIDAgMzkzLjE1MiAzMDRINDI4LjhjNDUuNDM1IDAgODMuMi0zNy41ODQgODMuMi04My4yIDAtNDUuMDk5LTM4LjEwMS04My4yLTgzLjItODMuMnptMCAxMTguNGgtOTEuMDI2YzEyLjgzNyAxNC42NjkgMTQuNDE1IDQyLjgyNS00Ljk1IDYxLjA1IDExLjIyNyAxOS42NDYgMS42ODcgNDUuNjI0LTEyLjkyNSA1My42MjUgNi41MjQgMzkuMTI4LTEwLjA3NiA2MS4zMjUtNTAuNiA2MS4zMjVIMjQ4Yy00NS40OTEgMC03Ny4yMS0zNS45MTMtMTIwLTM5LjY3NlYyMTUuNTcxYzI1LjIzOS0yLjk2NCA0Mi45NjYtMjEuMjIyIDU5LjA3NS0zOS41OTYgMTEuMjc1LTEyLjY1IDIxLjcyNS0yNS4zIDMwLjc5OS0zOS44NzVDMjMyLjM1NSAxMTIuNzEyIDI0NC4wMDYgODAgMjUyLjggODBjMjMuMzc1IDAgNDQgOC44IDQ0IDM1LjIgMCAzNS4yLTI2LjQgNTMuMDc1LTI2LjQgNzAuNGgxNTguNGMxOC40MjUgMCAzNS4yIDE2LjUgMzUuMiAzNS4yIDAgMTguOTc1LTE2LjIyNSAzNS4yLTM1LjIgMzUuMnpNODggMzg0YzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNHMtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNS42IDgzLjJ2ODYuMTc3YTExNS41MiAxMTUuNTIgMCAwIDAtMjIuNC0yLjE3NmMtNDcuOTE0IDAtODMuMiAzNS4wNzItODMuMiA5MiAwIDQ1LjMxNCA0OC41MzcgNTcuMDAyIDc4Ljc4NCA3NS43MDcgMTIuNDEzIDcuNzM1IDIzLjMxNyAxNi45OTQgMzMuMjUzIDI1Ljg1MWwuMTQ2LjEzMS4xNDguMTI5QzEyOS44MDcgMzc2LjMzOCAxMzYgMzg0LjIzNiAxMzYgMzkxLjJ2Mi42NzljLTQuOTUyIDUuNzQ3LTggMTMuNTM2LTggMjIuMTJ2NjRjMCAxNy42NzMgMTIuODk0IDMyIDI4LjggMzJoMjMwLjRjMTUuOTA2IDAgMjguOC0xNC4zMjcgMjguOC0zMnYtNjRjMC04LjU4NC0zLjA0OC0xNi4zNzMtOC0yMi4xMlYzOTEuMmMwLTI4LjY4OCA0MC02Ny4xMzcgNDAtMTI3LjJ2LTIxLjI5OWMwLTYyLjU0Mi0zOC42NTgtOTguOC05MS4xNDUtOTkuOTQtMTcuODEzLTEyLjQ4Mi00MC43ODUtMTguNDkxLTYyLjc5MS0xNS45ODVBOTMuMTQ4IDkzLjE0OCAwIDAgMCAyNzIgMTE4Ljg0N1Y4My4yQzI3MiAzNy43NjUgMjM0LjQxNiAwIDE4OC44IDBjLTQ1LjA5OSAwLTgzLjIgMzguMTAxLTgzLjIgODMuMnptMTE4LjQgMHY5MS4wMjZjMTQuNjY5LTEyLjgzNyA0Mi44MjUtMTQuNDE1IDYxLjA1IDQuOTUgMTkuNjQ2LTExLjIyNyA0NS42MjQtMS42ODcgNTMuNjI1IDEyLjkyNSAzOS4xMjgtNi41MjQgNjEuMzI1IDEwLjA3NiA2MS4zMjUgNTAuNlYyNjRjMCA0NS40OTEtMzUuOTEzIDc3LjIxLTM5LjY3NiAxMjBIMTgzLjU3MWMtMi45NjQtMjUuMjM5LTIxLjIyMi00Mi45NjYtMzkuNTk2LTU5LjA3NS0xMi42NS0xMS4yNzUtMjUuMy0yMS43MjUtMzkuODc1LTMwLjc5OUM4MC43MTIgMjc5LjY0NSA0OCAyNjcuOTk0IDQ4IDI1OS4yYzAtMjMuMzc1IDguOC00NCAzNS4yLTQ0IDM1LjIgMCA1My4wNzUgMjYuNCA3MC40IDI2LjRWODMuMmMwLTE4LjQyNSAxNi41LTM1LjIgMzUuMi0zNS4yIDE4Ljk3NSAwIDM1LjIgMTYuMjI1IDM1LjIgMzUuMnpNMzUyIDQyNGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjRzLTEwLjc0NSAyNC0yNCAyNC0yNC0xMC43NDUtMjQtMjQgMTAuNzQ1LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTguMTgyIDE3OS4zNjFjLTE5LjQ5My0yNC43NjgtNTIuNjc5LTMxLjk0NS03OS44NzItMTkuMDk4LTE1LjEyNy0xNS42ODctMzYuMTgyLTIyLjQ4Ny01Ni41OTUtMTkuNjI5VjY3YzAtMzYuOTQ0LTI5LjczNi02Ny02Ni4yODYtNjdTODkuMTQzIDMwLjA1NiA4OS4xNDMgNjd2MTYxLjEyOWMtMTkuOTA5LTcuNDEtNDMuMjcyLTUuMDk0LTYyLjA4MyA4Ljg3Mi0yOS4zNTUgMjEuNzk1LTM1Ljc5MyA2My4zMzMtMTQuNTUgOTMuMTUybDEwOS42OTkgMTU0LjAwMUMxMzQuNjMyIDUwMS41OSAxNTQuNzQxIDUxMiAxNzYgNTEyaDE3OC4yODZjMzAuODAyIDAgNTcuNTc0LTIxLjUgNjQuNTU3LTUxLjc5N2wyNy40MjktMTE4Ljk5OUE2Ny44NzMgNjcuODczIDAgMCAwIDQ0OCAzMjZ2LTg0YzAtNDYuODQ0LTQ2LjYyNS03OS4yNzMtODkuODE4LTYyLjYzOXpNODAuOTg1IDI3OS42OTdsMjcuMTI2IDM4LjA3OWM4Ljk5NSAxMi42MjYgMjkuMDMxIDYuMjg3IDI5LjAzMS05LjI4M1Y2N2MwLTI1LjEyIDM2LjU3MS0yNS4xNiAzNi41NzEgMHYxNzVjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNmg2Ljg1N2M4LjgzNyAwIDE2LTcuMTY0IDE2LTE2di0zNWMwLTI1LjEyIDM2LjU3MS0yNS4xNiAzNi41NzEgMHYzNWMwIDguODM2IDcuMTYzIDE2IDE2IDE2SDI3MmM4LjgzNyAwIDE2LTcuMTY0IDE2LTE2di0yMWMwLTI1LjEyIDM2LjU3MS0yNS4xNiAzNi41NzEgMHYyMWMwIDguODM2IDcuMTYzIDE2IDE2IDE2aDYuODU3YzguODM3IDAgMTYtNy4xNjQgMTYtMTYgMC0yNS4xMjEgMzYuNTcxLTI1LjE2IDM2LjU3MSAwdjg0YzAgMS40ODgtLjE2OSAyLjk3Ny0uNTAyIDQuNDIzbC0yNy40MyAxMTkuMDAxYy0xLjk3OCA4LjU4Mi05LjI5IDE0LjU3Ni0xNy43ODIgMTQuNTc2SDE3NmMtNS43NjkgMC0xMS4yNjMtMi44NzgtMTQuNjk3LTcuNjk3bC0xMDkuNzEyLTE1NGMtMTQuNDA2LTIwLjIyMyAxNC45OTQtNDIuODE4IDI5LjM5NC0yMi42MDZ6TTE3Ni4xNDMgNDAwdi05NmMwLTguODM3IDYuMjY4LTE2IDE0LTE2aDZjNy43MzIgMCAxNCA3LjE2MyAxNCAxNnY5NmMwIDguODM3LTYuMjY4IDE2LTE0IDE2aC02Yy03LjczMyAwLTE0LTcuMTYzLTE0LTE2em03NS40MjggMHYtOTZjMC04LjgzNyA2LjI2OC0xNiAxNC0xNmg2YzcuNzMyIDAgMTQgNy4xNjMgMTQgMTZ2OTZjMCA4LjgzNy02LjI2OCAxNi0xNCAxNmgtNmMtNy43MzIgMC0xNC03LjE2My0xNC0xNnpNMzI3IDQwMHYtOTZjMC04LjgzNyA2LjI2OC0xNiAxNC0xNmg2YzcuNzMyIDAgMTQgNy4xNjMgMTQgMTZ2OTZjMCA4LjgzNy02LjI2OCAxNi0xNCAxNmgtNmMtNy43MzIgMC0xNC03LjE2My0xNC0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFJvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA4Ljg2NCA3OS4wNTJjLTIyLjQwMS0zMy44OTgtNjYuMTA4LTQyLjI3My05OC44MTMtMjMuNTg4LTI5LjQ3NC0zMS40NjktNzkuMTQ1LTMxLjA5My0xMDguMzM0LS4wMjItNDcuMTYtMjcuMDItMTA4LjcxIDUuMDU1LTExMC42NzEgNjAuODA2QzQ0Ljg0NiAxMDUuNDA3IDAgMTQwLjAwMSAwIDE4Ny40Mjl2NTYuOTUzYzAgMzIuNzQxIDE0LjI4IDYzLjk1NCAzOS4xOCA4NS42MzRsOTcuNzEgODUuMDgxYzQuMjUyIDMuNzAyIDMuMTEgNS41NzMgMy4xMSAzMi45MDMgMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyaDI1MmMxNy42NzMgMCAzMi0xNC4zMjcgMzItMzIgMC0yMy41MTMtMS4wMTUtMzAuNzQ1IDMuOTgyLTQyLjM3bDQyLjgzNS05OS42NTZjNi4wOTQtMTQuMTc3IDkuMTgzLTI5LjE3MiA5LjE4My00NC41NjhWMTQ2Ljk2M2MwLTUyLjgzOS01NC4zMTQtODguNjYyLTEwMy4xMzYtNjcuOTExek00NjQgMjYxLjQwNmE2NC41MDUgNjQuNTA1IDAgMCAxLTUuMjgyIDI1LjYxM2wtNDIuODM1IDk5LjY1NWMtNS4yMyAxMi4xNzEtNy44ODMgMjUuMDQtNy44ODMgMzguMjVWNDMySDE4OHYtMTAuMjg2YzAtMTYuMzctNy4xNC0zMS45NzctMTkuNTktNDIuODE3bC05Ny43MS04NS4wOEM1Ni4yNzQgMjgxLjI1NSA0OCAyNjMuMjM2IDQ4IDI0NC4zODF2LTU2Ljk1M2MwLTMzLjIwOCA1Mi0zMy41MzcgNTIgLjY3N3Y0MS4yMjhhMTYgMTYgMCAwIDAgNS40OTMgMTIuMDY3bDcgNi4wOTVBMTYgMTYgMCAwIDAgMTM5IDIzNS40MjlWMTE4Ljg1N2MwLTMzLjA5NyA1Mi0zMy43MjUgNTIgLjY3N3YyNi43NTFjMCA4LjgzNiA3LjE2NCAxNiAxNiAxNmg3YzguODM2IDAgMTYtNy4xNjQgMTYtMTZ2LTQxLjE0M2MwLTMzLjEzNCA1Mi0zMy42NzUgNTIgLjY3N3Y0MC40NjZjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNmg3YzguODM3IDAgMTYtNy4xNjQgMTYtMTZ2LTI3LjQyOWMwLTMzLjAzIDUyLTMzLjc4IDUyIC42Nzd2MjYuNzUxYzAgOC44MzYgNy4xNjMgMTYgMTYgMTZoN2M4LjgzNyAwIDE2LTcuMTY0IDE2LTE2IDAtMzMuMTQ2IDUyLTMzLjYxMyA1MiAuNjc3djExNC40NDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDgwbDcwLS4wMTNjNS4xMTQgMCAxMC4yMzEtLjU4MyAxNS4yMDMtMS43MjlsMTE4Ljk5OS0yNy40MjdDNDkwLjU2IDQ0My44MzUgNTEyIDQxNy4wMiA1MTIgMzg2LjI3N1YxODAuNTc1YzAtMjMuODQ1LTEzLjAzLTQ1Ljk1MS0zNC4wMDUtNTcuNjlsLTk3Ljk5OS01NC44NTNjLTM0LjQwOS0xOS4yNjEtNjcuMjYzLTUuODI0LTkyLjIxOCAyNC43MzNMMTQyLjg1IDM3LjAwOGMtMzcuODg3LTE0LjU3OS04MC42MTIgMy43MjctOTUuNjQyIDQxLjIwMS0xNS4wOTggMzcuNjQyIDMuNjM1IDgwLjM3IDQxLjk0MiA5NS4xMTJMMTY4IDE5MmwtOTQtOS4xNDFjLTQwLjgwNCAwLTc0IDMyLjgxMS03NCA3My4xNCAwIDQwLjMzIDMzLjE5NiA3My4xNDEgNzQgNzMuMTQxaDg3LjYzNWMtMy42NzUgMjYuMjQ1IDguNjkyIDUxLjI5NyAzMC4zNDEgNjUuMDA2QzE3OC42NTcgNDM2LjczNyAyMTEuMDQ0IDQ4MCAyNTYgNDgwem0wLTQ4LjAxM2MtMjUuMTYgMC0yNS4xMi0zNi41NjcgMC0zNi41NjcgOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNi44NTZjMC04LjgzNy03LjE2My0xNi0xNi0xNmgtMjhjLTI1LjE1OSAwLTI1LjEyMi0zNi41NjcgMC0zNi41NjdoMjhjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNi44NTZjMC04LjgzNy03LjE2My0xNi0xNi0xNkg3NGMtMzQuNDMgMC0zNC4zNzUtNTAuMjgxIDAtNTAuMjgxaDE4MmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di0xMS42MzJhMTYgMTYgMCAwIDAtMTAuMjU0LTE0LjkzM0wxMDYuMzg5IDEyOC41MWMtMzEuNTUyLTEyLjE0LTEzLjQzMi01OS4yODMgMTkuMjIyLTQ2LjcxN2wxNjYuNTQ5IDY0LjA5MWExNi4wMDEgMTYuMDAxIDAgMCAwIDE4LjEzOS00LjgxMmwyMS43NjQtMjYuNjQ3YzUuODItNy4xMjcgMTYuMzQ4LTkuMDY0IDI0LjQ4OC00LjUwOGw5OCA1NC44NTRjNS44MjggMy4yNjMgOS40NDkgOS4zMTggOS40NDkgMTUuODA1djIwNS43MDFjMCA4LjQ5MS01Ljk5NCAxNS44MDQtMTQuNTc2IDE3Ljc4MmwtMTE5LjAwMSAyNy40MjdhMTkuNzQzIDE5Ljc0MyAwIDAgMS00LjQyMy41MDJoLTcwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kU3BvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjAzMDUzLDExNi4xNzYwNWMtMTkuMzkwNTktMzEuNTA3NzktNTEuMjQ0MDYtMzUuNzI4NDktNjYuMzEwNDQtMzUuMDE3NTYtMTQuMTEzMjUtNTAuODEwNTEtNjIuMDAzOC01NC4wOC03MC43MzgxNi01NC4wOGE3NC4wMzA5MSw3NC4wMzA5MSwwLDAsMC03Mi4yMzgxNiw1OC45MTZsLTQuNjQ2NDgsMjIuNjYwMTQtMTMuNjgzNTctNTMuMjA3Yy05LjA5NTY5LTM1LjM3MTA3LTQ2LjQxMi02NC4wNTA3NC04OS42Ni01My4wNzIyM2E3My44OTc0OSw3My44OTc0OSwwLDAsMC01NS4xMjEsNzguOTQ3MjIsNzMuNjgyNzMsNzMuNjgyNzMsMCwwLDAtNjQuODQ5NSw5NC40MjE4MWwyNC4zNTkzMyw4Mi4xOTcyMWMtMzguMjQwMTctNy41NDQ5Mi02Mi43OTY3NywxNi4xODM1OC02OC4xMTUxMiwyMS44NDc2NGE3My42NzkxLDczLjY3OTEsMCwwLDAsMy4xOTkyMSwxMDQuMTkzMjlsOTEuMzY1MDksODUuOTc2NUExNTQuMTY0LDE1NC4xNjQsMCwwLDAsMjIwLjYyMjc5LDUxMmgxMDcuNDU0OUExMjcuMzAwNzksMTI3LjMwMDc5LDAsMCwwLDQ1Mi4zMzkyLDQxMy44NjEzOWw1Ny42MjMtMjQxLjk2MjcyQTczLjIwMjc0LDczLjIwMjc0LDAsMCwwLDUwMS4wMzA1MywxMTYuMTc2MDVabS0zNy43NTk3LDQ0LjYwNTQ0TDQwNS42NDc4OCw0MDIuNzQ4MTJhNzkuNDY2MTYsNzkuNDY2MTYsMCwwLDEtNzcuNTcwMTksNjEuMjU5NzJIMjIwLjYyMjc5YTEwNi4zNDA1MiwxMDYuMzQwNTIsMCwwLDEtNzMuMTM2Ni0yOC45OThsLTkxLjM2OS04NS45ODA0MUMzMS4zNDM4MSwzMjUuNzI2NjksNjYuNjExMzMsMjg4LjEzMSw5MS4zOTY0NCwzMTEuNTM5Mmw1MS4xMjMsNDguMTA3MzljNS40MjU3Nyw1LjEwOTM3LDEzLjQ4MjM5LjcxNjc5LDEzLjQ4MjM5LTUuODI2MTdhMjQ2Ljc5OTE0LDI0Ni43OTkxNCwwLDAsMC0xMC4xNzc3MS03MC4xNTIzbC0zNi4wMTM2Mi0xMjEuNTM5Yy05LjczMjQtMzIuODgyNzksMzkuNjk5MTYtNDcuMjcxNDUsNDkuMzg2NjQtMTQuNjI1bDMxLjM0MzcsMTA1Ljc3OTIzYzUuNTkzNzQsMTguOTA0MjgsMzMuNzgxMTksMTAuNzEyODgsMjguOTY0OC04LjAwNzgxTDE3Ny4wNjQyNyw4MC4yMzY2MmMtOC41MDM4OS0zMy4xMDM1LDQxLjQzMTU3LTQ1LjY0NjQ2LDQ5Ljg2NTE1LTEyLjgzNTkzbDQ3LjMyNjA5LDE4NC4wMzVjNC40Mjc3MywxNy4yNDIxOCwyOS4xNjIwNywxNi41MDM5LDMyLjcxMDg5LS44MDQ2OGwzMS43OTEtMTU0Ljk3MDZjNi44MTA1NC0zMy4xMDc0LDU3LjUxNzQ4LTI0LjEwNzQxLDUwLjExOTA2LDExLjk2Mjg4TDM2MC4zMjc2NCwyNDYuNzg5MjRjLTMuNzIyNjUsMTguMTA5MzYsMjMuNjY3OTMsMjQuNjMwODQsMjguMDU2NTksNi4yMTY3OUw0MTMuMTg1LDE0OC44NTk2MkM0MjEuMTQ5OCwxMTUuNTEyLDQ3MS4xNCwxMjcuNzk3MTMsNDYzLjI3MDgzLDE2MC43ODE0OVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxOS4yIDEyNy45bC00Ny42LTQ3LjZBNTYuMjUyIDU2LjI1MiAwIDAgMCA0MzIgNjRIMjA1LjJjLTE0LjggMC0yOS4xIDUuOS0zOS42IDE2LjNMMTE4IDEyNy45SDB2MjU1LjdoNjRjMTcuNiAwIDMxLjgtMTQuMiAzMS45LTMxLjdoOS4xbDg0LjYgNzYuNGMzMC45IDI1LjEgNzMuOCAyNS43IDEwNS42IDMuOCAxMi41IDEwLjggMjYgMTUuOSA0MS4xIDE1LjkgMTguMiAwIDM1LjMtNy40IDQ4LjgtMjQgMjIuMSA4LjcgNDguMiAyLjYgNjQtMTYuOGwyNi4yLTMyLjNjNS42LTYuOSA5LjEtMTQuOCAxMC45LTIzaDU3LjljLjEgMTcuNSAxNC40IDMxLjcgMzEuOSAzMS43aDY0VjEyNy45SDUxOS4yek00OCAzNTEuNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTZjMCA4LjktNy4yIDE2LTE2IDE2em0zOTAtNi45bC0yNi4xIDMyLjJjLTIuOCAzLjQtNy44IDQtMTEuMyAxLjJsLTIzLjktMTkuNC0zMCAzNi41Yy02IDcuMy0xNSA0LjgtMTggMi40bC0zNi44LTMxLjUtMTUuNiAxOS4yYy0xMy45IDE3LjEtMzkuMiAxOS43LTU1LjMgNi42bC05Ny4zLTg4SDk2VjE3NS44aDQxLjlsNjEuNy02MS42YzItLjggMy43LTEuNSA1LjctMi4zSDI2MmwtMzguNyAzNS41Yy0yOS40IDI2LjktMzEuMSA3Mi4zLTQuNCAxMDEuMyAxNC44IDE2LjIgNjEuMiA0MS4yIDEwMS41IDQuNGw4LjItNy41IDEwOC4yIDg3LjhjMy40IDIuOCAzLjkgNy45IDEuMiAxMS4zem0xMDYtNDAuOGgtNjkuMmMtMi4zLTIuOC00LjktNS40LTcuNy03LjdsLTEwMi43LTgzLjQgMTIuNS0xMS40YzYuNS02IDctMTYuMSAxLTIyLjZMMzY3IDE2Ny4xYy02LTYuNS0xNi4xLTYuOS0yMi42LTFsLTU1LjIgNTAuNmMtOS41IDguNy0yNS43IDkuNC0zNC42IDAtOS4zLTkuOS04LjUtMjUuMSAxLjItMzMuOWw2NS42LTYwLjFjNy40LTYuOCAxNy0xMC41IDI3LTEwLjVsODMuNy0uMmMyLjEgMCA0LjEuOCA1LjUgMi4zbDYxLjcgNjEuNkg1NDR2MTI4em00OCA0Ny43Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNmMwIDguOS03LjIgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjcuNDAzIDIzNS42NDJMNDYyLjMyMyA4NC41ODlBNDggNDggMCAwIDAgNDIyLjkxOSA2NEgxNTMuMDgxYTQ4IDQ4IDAgMCAwLTM5LjQwNCAyMC41ODlMOC41OTcgMjM1LjY0MkE0OC4wMDEgNDguMDAxIDAgMCAwIDAgMjYzLjA1NFY0MDBjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0ODBjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyNjMuMDU0YzAtOS44MDEtMy0xOS4zNjYtOC41OTctMjcuNDEyek0xNTMuMDgxIDExMmgyNjkuODM4bDc3LjkxMyAxMTJINzUuMTY4bDc3LjkxMy0xMTJ6TTUyOCA0MDBINDhWMjcyaDQ4MHYxMjh6bS0zMi02NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJzLTMyLTE0LjMyNy0zMi0zMiAxNC4zMjctMzIgMzItMzIgMzIgMTQuMzI3IDMyIDMyem0tOTYgMGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJzLTMyLTE0LjMyNy0zMi0zMiAxNC4zMjctMzIgMzItMzIgMzIgMTQuMzI3IDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTguNCA2NC4zQzQwMC42IDE1LjcgMzExLjMgMjMgMjU2IDc5LjMgMjAwLjcgMjMgMTExLjQgMTUuNiA1My42IDY0LjMtMjEuNiAxMjcuNi0xMC42IDIzMC44IDQzIDI4NS41bDE3NS40IDE3OC43YzEwIDEwLjIgMjMuNCAxNS45IDM3LjYgMTUuOSAxNC4zIDAgMjcuNi01LjYgMzcuNi0xNS44TDQ2OSAyODUuNmM1My41LTU0LjcgNjQuNy0xNTcuOS0xMC42LTIyMS4zem0tMjMuNiAxODcuNUwyNTkuNCA0MzAuNWMtMi40IDIuNC00LjQgMi40LTYuOCAwTDc3LjIgMjUxLjhjLTM2LjUtMzcuMi00My45LTEwNy42IDcuMy0xNTAuNyAzOC45LTMyLjcgOTguOS0yNy44IDEzNi41IDEwLjVsMzUgMzUuNyAzNS0zNS43YzM3LjgtMzguNSA5Ny44LTQzLjIgMTM2LjUtMTAuNiA1MS4xIDQzLjEgNDMuNSAxMTMuOSA3LjMgMTUwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hvc3BpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAyNDR2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMTQwIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJ6bS03NiA4NHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem03NiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyem0xODAgMTI0djM2SDB2LTM2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTkuNVY4NS4wMzVDMzEuNSA3My40MTggNDIuMjQ1IDY0IDU1LjUgNjRIMTQ0VjI0YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxMTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djQwaDg4LjVjMTMuMjU1IDAgMjQgOS40MTggMjQgMjEuMDM1VjQ2NEg0MzZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnpNNzkuNSA0NjNIMTkydi02N2MwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NjdoMTEyLjVWMTEySDMwNHYyNGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTY4Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LTI0SDc5LjV2MzUxek0yNjYgNjRoLTI2VjM4YTYgNiAwIDAgMC02LTZoLTIwYTYgNiAwIDAgMC02IDZ2MjZoLTI2YTYgNiAwIDAgMC02IDZ2MjBhNiA2IDAgMCAwIDYgNmgyNnYyNmE2IDYgMCAwIDAgNiA2aDIwYTYgNiAwIDAgMCA2LTZWOTZoMjZhNiA2IDAgMCAwIDYtNlY3MGE2IDYgMCAwIDAtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIb3VyZ2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDQ4aDRjNi42MjcgMCAxMi01LjM3MyAxMi0xMlYxMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDEyQzUuMzczIDAgMCA1LjM3MyAwIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNGMwIDgwLjU2NCAzMi4xODggMTY1LjgwNyA5Ny4xOCAyMDhDNDcuODk5IDI5OC4zODEgMTYgMzgzLjkgMTYgNDY0aC00Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMzYwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTI0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTRjMC04MC41NjQtMzIuMTg4LTE2NS44MDctOTcuMTgtMjA4QzMzNi4xMDIgMjEzLjYxOSAzNjggMTI4LjEgMzY4IDQ4ek02NCA0OGgyNTZjMCAxMDEuNjItNTcuMzA3IDE4NC0xMjggMTg0UzY0IDE0OS42MjEgNjQgNDh6bTI1NiA0MTZINjRjMC0xMDEuNjIgNTcuMzA4LTE4NCAxMjgtMTg0czEyOCA4Mi4zOCAxMjggMTg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJZEJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0wIDQ2NEg0OFY0OGgyODh2NDE2ek0xNDQgMTEyaDk2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2aC05NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNnptNDggMTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptLTg5LjYgMTI4aDE3OS4yYzEyLjQgMCAyMi40LTguNiAyMi40LTE5LjJ2LTE5LjJjMC0zMS44LTMwLjEtNTcuNi02Ny4yLTU3LjYtMTAuOCAwLTE4LjcgOC00NC44IDgtMjYuOSAwLTMzLjQtOC00NC44LTgtMzcuMSAwLTY3LjIgMjUuOC02Ny4yIDU3LjZ2MTkuMmMwIDEwLjYgMTAgMTkuMiAyMi40IDE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0lkQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0wIDQwMEgzMDMuMmMuOS00LjUuOCAzLjYuOC0yMi40IDAtMzEuOC0zMC4xLTU3LjYtNjcuMi01Ny42LTEwLjggMC0xOC43IDgtNDQuOCA4LTI2LjkgMC0zMy40LTgtNDQuOC04LTM3LjEgMC02Ny4yIDI1LjgtNjcuMiA1Ny42IDAgMjYtLjIgMTcuOS44IDIyLjRINDhWMTQ0aDQ4MHYyODh6bS0xNjgtODBoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMC02NGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4em0wLTY0aDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bS0xNjggOTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptLTYgMzM2SDU0YTYgNiAwIDAgMS02LTZWMTE4YTYgNiAwIDAgMSA2LTZoNDA0YTYgNiAwIDAgMSA2IDZ2Mjc2YTYgNiAwIDAgMS02IDZ6TTEyOCAxNTJjLTIyLjA5MSAwLTQwIDE3LjkwOS00MCA0MHMxNy45MDkgNDAgNDAgNDAgNDAtMTcuOTA5IDQwLTQwLTE3LjkwOS00MC00MC00MHpNOTYgMzUyaDMyMHYtODBsLTg3LjUxNS04Ny41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEwxOTIgMzA0bC0zOS41MTUtMzkuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMOTYgMzA0djQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJbWFnZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDQxNnYxNmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjE3NmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDE2djQ4SDU0YTYgNiAwIDAgMC02IDZ2MjQ0YTYgNiAwIDAgMCA2IDZoMzcyYTYgNiAwIDAgMCA2LTZ2LTEwaDQ4em00Mi0zMzZIMTUwYTYgNiAwIDAgMC02IDZ2MjQ0YTYgNiAwIDAgMCA2IDZoMzcyYTYgNiAwIDAgMCA2LTZWODZhNiA2IDAgMCAwLTYtNnptNi00OGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djI1NmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDE0NGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM4NHpNMjY0IDE0NGMwIDIyLjA5MS0xNy45MDkgNDAtNDAgNDBzLTQwLTE3LjkwOS00MC00MCAxNy45MDktNDAgNDAtNDAgNDAgMTcuOTA5IDQwIDQwem0tNzIgOTZsMzkuNTE1LTM5LjUxNWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBMMjg4IDI0MGwxMDMuNTE1LTEwMy41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDQ4MCAyMDh2ODBIMTkydi00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnS2V5Ym9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTEyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bTggMzM2YzAgNC40MTEtMy41ODkgOC04IDhINDhjLTQuNDExIDAtOC0zLjU4OS04LThWMTEyYzAtNC40MTEgMy41ODktOCA4LThoNDgwYzQuNDExIDAgOCAzLjU4OSA4IDh2Mjg4ek0xNzAgMjcwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bS0zMzYgODJ2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJIODJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0zODQgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyek0xMjIgMTg4di0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDgyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tOTggMTU4di0xNmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDE4MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxNmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIxNmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdLaXNzQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjggMTUyYy0yMy44IDAtNTIuNyAyOS4zLTU2IDcxLjQtLjMgMy43IDIgNy4yIDUuNiA4LjMgMy41IDEgNy41LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDUuOS00LjUgNS42LTguMy0zLjEtNDIuMS0zMi03MS40LTU1LjgtNzEuNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem01Ni0xNDhjMC0xOS4yLTI4LjgtNDEuNS03MS41LTQ0LTMuOC0uNC03LjQgMi40LTguMiA2LjItLjkgMy44IDEuMSA3LjcgNC43IDkuMmwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy01LjcgMi40LTYgMTIuMiAwIDE0LjhsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtMy42IDEuNS01LjYgNS40LTQuNyA5LjIuOCAzLjYgNC4xIDYuMiA3LjggNi4yaC41YzQyLjgtMi41IDcxLjUtMjQuOCA3MS41LTQ0IDAtMTMtMTMuNC0yNy4zLTM1LjItMzZDMjkwLjYgMzM1LjMgMzA0IDMyMSAzMDQgMzA4em0yNC0xNTZjLTIzLjggMC01Mi43IDI5LjMtNTYgNzEuNC0uMyAzLjcgMiA3LjIgNS42IDguMyAzLjUgMSA3LjUtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNS45LTQuNSA1LjYtOC4zLTMuMS00Mi4xLTMyLTcxLjQtNTUuOC03MS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdLaXNzV2lua0hlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAzMDguNWMwLTE5LjItMjguOC00MS41LTcxLjUtNDQtMy44LS40LTcuNCAyLjQtOC4yIDYuMi0uOSAzLjggMS4xIDcuNyA0LjcgOS4ybDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTUuNyAyLjQtNiAxMi4yIDAgMTQuOGwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy0zLjYgMS41LTUuNiA1LjQtNC43IDkuMi44IDMuNiA0LjEgNi4yIDcuOCA2LjJoLjVjNDIuOC0yLjUgNzEuNS0yNC44IDcxLjUtNDQgMC0xMy0xMy40LTI3LjMtMzUuMi0zNiAyMS43LTkuMSAzNS4xLTIzLjQgMzUuMS0zNi40em03MC41LTgzLjVsOS41IDguNWMzLjggMy4zIDkuMyA0IDEzLjcgMS42IDQuNC0yLjQgNi45LTcuNCA2LjEtMTIuNC00LTI1LjItMzQuMi00Mi4xLTU5LjgtNDIuMXMtNTUuOSAxNi45LTU5LjggNDIuMWMtLjggNSAxLjcgMTAgNi4xIDEyLjQgNS44IDMuMSAxMS4yLjcgMTMuNy0xLjZsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDB6TTEzNiAyMDguNWMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMnptMzY1LjEgMTk0Yy04LTIwLjgtMzEuNS0zMS41LTUzLjEtMjUuOWwtOC40IDIuMi0yLjMtOC40Yy01LjktMjEuNC0yNy0zNi41LTQ5LTMzLTI1LjIgNC00MC42IDI4LjYtMzQgNTIuNmwyMi45IDgyLjZjMS41IDUuMyA3IDguNSAxMi40IDcuMWw4My0yMS41YzI0LjEtNi4zIDM3LjctMzEuOCAyOC41LTU1Ljd6TTMzNCA0MzYuM2MtMjYuMSAxMi41LTU1LjIgMTkuNy04NiAxOS43LTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMGMwIDIyLjEtMy43IDQzLjMtMTAuNCA2My4yIDkgNi40IDE3IDE0LjIgMjIuNiAyMy45IDYuNC4xIDEyLjYgMS40IDE4LjYgMi45IDEwLjktMjcuOSAxNy4xLTU4LjIgMTcuMS05MEM0OTYgMTE5IDM4NSA4IDI0OCA4UzAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OGMzNS40IDAgNjguOS03LjUgOTkuNC0yMC45LTIuNS03LjMgNC4zIDE3LjItMTMuNC00Ni44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdLaXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OCAxNzZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0xMzYgMTMyYzAtMTkuMi0yOC44LTQxLjUtNzEuNS00NC0zLjgtLjQtNy40IDIuNC04LjIgNi4yLS45IDMuOCAxLjEgNy43IDQuNyA5LjJsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtNS43IDIuNC02IDEyLjIgMCAxNC44bDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTMuNiAxLjUtNS42IDUuNC00LjcgOS4yLjggMy42IDQuMSA2LjIgNy44IDYuMmguNWM0Mi44LTIuNSA3MS41LTI0LjggNzEuNS00NCAwLTEzLTEzLjQtMjcuMy0zNS4yLTM2QzI5MC42IDMzNS4zIDMwNCAzMjEgMzA0IDMwOHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem04MC0yODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMYXVnaEJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQxLjQgMzg5LjRjLTM3LjggMzcuOC04OCA1OC42LTE0MS40IDU4LjZzLTEwMy42LTIwLjgtMTQxLjQtNTguNlM0OCAzMDkuNCA0OCAyNTZzMjAuOC0xMDMuNiA1OC42LTE0MS40UzE5NC42IDU2IDI0OCA1NnMxMDMuNiAyMC44IDE0MS40IDU4LjZTNDQ4IDIwMi42IDQ0OCAyNTZzLTIwLjggMTAzLjYtNTguNiAxNDEuNHpNMzI4IDE1MmMtMjMuOCAwLTUyLjcgMjkuMy01NiA3MS40LS43IDguNiAxMC44IDExLjkgMTQuOSA0LjVsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2M0LjEgNy40IDE1LjYgNCAxNC45LTQuNS0zLjEtNDIuMS0zMi03MS40LTU1LjgtNzEuNHptLTIwMSA3NS45bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjNC4xIDcuNCAxNS42IDQgMTQuOS00LjUtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uNiA4LjUgMTAuOSAxMS45IDE1LjEgNC41ek0zNjIuNCAyODhIMTMzLjZjLTguMiAwLTE0LjUgNy0xMy41IDE1IDcuNSA1OS4yIDU4LjkgMTA1IDEyMS4xIDEwNWgxMy42YzYyLjIgMCAxMTMuNi00NS44IDEyMS4xLTEwNSAxLTgtNS4zLTE1LTEzLjUtMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xhdWdoU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0MS40IDM4OS40Yy0zNy44IDM3LjgtODggNTguNi0xNDEuNCA1OC42cy0xMDMuNi0yMC44LTE0MS40LTU4LjZTNDggMzA5LjQgNDggMjU2czIwLjgtMTAzLjYgNTguNi0xNDEuNFMxOTQuNiA1NiAyNDggNTZzMTAzLjYgMjAuOCAxNDEuNCA1OC42UzQ0OCAyMDIuNiA0NDggMjU2cy0yMC44IDEwMy42LTU4LjYgMTQxLjR6TTM0My42IDE5NmwzMy42LTQwLjNjOC42LTEwLjMtMy44LTI0LjgtMTUuNC0xOGwtODAgNDhjLTcuOCA0LjctNy44IDE1LjkgMCAyMC42bDgwIDQ4YzExLjUgNi44IDI0LTcuNiAxNS40LTE4TDM0My42IDE5NnptLTIwOS40IDU4LjNsODAtNDhjNy44LTQuNyA3LjgtMTUuOSAwLTIwLjZsLTgwLTQ4Yy0xMS42LTYuOS0yNCA3LjctMTUuNCAxOGwzMy42IDQwLjMtMzMuNiA0MC4zYy04LjcgMTAuNCAzLjggMjQuOCAxNS40IDE4ek0zNjIuNCAyODhIMTMzLjZjLTguMiAwLTE0LjUgNy0xMy41IDE1IDcuNSA1OS4yIDU4LjkgMTA1IDEyMS4xIDEwNWgxMy42YzYyLjIgMCAxMTMuNi00NS44IDEyMS4xLTEwNSAxLTgtNS4zLTE1LTEzLjUtMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xhdWdoV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDEuNCAzODkuNGMtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNnMtMTAzLjYtMjAuOC0xNDEuNC01OC42QzY4LjggMzU5LjYgNDggMzA5LjQgNDggMjU2czIwLjgtMTAzLjYgNTguNi0xNDEuNEMxNDQuNCA3Ni44IDE5NC42IDU2IDI0OCA1NnMxMDMuNiAyMC44IDE0MS40IDU4LjZjMzcuOCAzNy44IDU4LjYgODggNTguNiAxNDEuNHMtMjAuOCAxMDMuNi01OC42IDE0MS40ek0zMjggMTY0Yy0yNS43IDAtNTUuOSAxNi45LTU5LjkgNDIuMS0xLjcgMTEuMiAxMS41IDE4LjIgMTkuOCAxMC44bDkuNS04LjVjMTQuOC0xMy4yIDQ2LjItMTMuMiA2MSAwbDkuNSA4LjVjOC41IDcuNCAyMS42LjMgMTkuOC0xMC44LTMuOC0yNS4yLTM0LTQyLjEtNTkuNy00Mi4xem0tMTYwIDYwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTk0LjQgNjRIMTMzLjZjLTguMiAwLTE0LjUgNy0xMy41IDE1IDcuNSA1OS4yIDU4LjkgMTA1IDEyMS4xIDEwNWgxMy42YzYyLjIgMCAxMTMuNi00NS44IDEyMS4xLTEwNSAxLTgtNS4zLTE1LTEzLjUtMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xhdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0MS40IDM4OS40Yy0zNy44IDM3LjgtODggNTguNi0xNDEuNCA1OC42cy0xMDMuNi0yMC44LTE0MS40LTU4LjZTNDggMzA5LjQgNDggMjU2czIwLjgtMTAzLjYgNTguNi0xNDEuNFMxOTQuNiA1NiAyNDggNTZzMTAzLjYgMjAuOCAxNDEuNCA1OC42UzQ0OCAyMDIuNiA0NDggMjU2cy0yMC44IDEwMy42LTU4LjYgMTQxLjR6TTMyOCAyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0tMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xOTQuNCA2NEgxMzMuNmMtOC4yIDAtMTQuNSA3LTEzLjUgMTUgNy41IDU5LjIgNTguOSAxMDUgMTIxLjEgMTA1aDEzLjZjNjIuMiAwIDExMy42LTQ1LjggMTIxLjEtMTA1IDEtOC01LjMtMTUtMTMuNS0xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGVtb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg0LjExMiAyNy44ODlDNDU1Ljk4OS0uMjMzIDQxNi4xMDgtOC4wNTcgMzg3LjA1OSA4Ljg2NSAzNDcuNjA0IDMxLjg0OCAyMjMuNTA0LTQxLjExMSA5MS4xOTYgOTEuMTk3LTQxLjI3NyAyMjMuNjcyIDMxLjkyMyAzNDcuNDcyIDguODY2IDM4Ny4wNThjLTE2LjkyMiAyOS4wNTEtOS4xIDY4LjkzMiAxOS4wMjIgOTcuMDU0IDI4LjEzNSAyOC4xMzUgNjguMDExIDM1LjkzOCA5Ny4wNTcgMTkuMDIxIDM5LjQyMy0yMi45NyAxNjMuNTU3IDQ5Ljk2OSAyOTUuODU4LTgyLjMyOSAxMzIuNDc0LTEzMi40NzcgNTkuMjczLTI1Ni4yNzcgODIuMzMxLTI5NS44NjEgMTYuOTIyLTI5LjA1IDkuMS02OC45MzEtMTkuMDIyLTk3LjA1NHptLTIyLjQwNSA3Mi44OTRjLTM4LjggNjYuNjA5IDQ1LjYgMTY1LjYzNS03NC44NDUgMjg2LjA4LTEyMC40NCAxMjAuNDQzLTIxOS40NzUgMzYuMDQ4LTI4Ni4wNzYgNzQuODQzLTIyLjY3OSAxMy4yMDctNjQuMDM1LTI3LjI0MS01MC40OTMtNTAuNDg4IDM4LjgtNjYuNjA5LTQ1LjYtMTY1LjYzNSA3NC44NDUtMjg2LjA4QzI0NS41NzMgNC43MDIgMzQ0LjYxNiA4OS4wODYgNDExLjIxOSA1MC4yOTJjMjIuNzMtMTMuMjQgNjQuMDA1IDI3LjI4OCA1MC40ODggNTAuNDkxem0tMTY5Ljg2MSA4LjczNmMxLjM3IDEwLjk2LTYuNDA0IDIwLjk1Ny0xNy4zNjUgMjIuMzI3LTU0Ljg0NiA2Ljg1NS0xMzUuNzc5IDg3Ljc4Ny0xNDIuNjM1IDE0Mi42MzUtMS4zNzMgMTAuOTg5LTExLjM5OSAxOC43MzQtMjIuMzI2IDE3LjM2NS0xMC45NjEtMS4zNy0xOC43MzUtMTEuMzY2LTE3LjM2NS0yMi4zMjYgOS4xNjItNzMuMjg2IDEwNC4xNjctMTY4LjIxNSAxNzcuMzY1LTE3Ny4zNjUgMTAuOTUzLTEuMzY4IDIwLjk1NiA2LjQwMyAyMi4zMjYgMTcuMzY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMaWZlUmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTA0YzEzNi45NjcgMCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OHptLTEwMy4zOTgtNzYuNzJsNTMuNDExLTUzLjQxMWMzMS44MDYgMTMuNTA2IDY4LjEyOCAxMy41MjIgOTkuOTc0IDBsNTMuNDExIDUzLjQxMWMtNjMuMjE3IDM4LjMxOS0xNDMuNTc5IDM4LjMxOS0yMDYuNzk2IDB6TTMzNiAyNTZjMCA0NC4xMTItMzUuODg4IDgwLTgwIDgwcy04MC0zNS44ODgtODAtODAgMzUuODg4LTgwIDgwLTgwIDgwIDM1Ljg4OCA4MCA4MHptOTEuMjggMTAzLjM5OGwtNTMuNDExLTUzLjQxMWMxMy41MDUtMzEuODA2IDEzLjUyMi02OC4xMjggMC05OS45NzRsNTMuNDExLTUzLjQxMWMzOC4zMTkgNjMuMjE3IDM4LjMxOSAxNDMuNTc5IDAgMjA2Ljc5NnpNMzU5LjM5NyA4NC43MmwtNTMuNDExIDUzLjQxMWMtMzEuODA2LTEzLjUwNS02OC4xMjgtMTMuNTIyLTk5Ljk3MyAwTDE1Mi42MDIgODQuNzJjNjMuMjE3LTM4LjMxOSAxNDMuNTc5LTM4LjMxOSAyMDYuNzk1IDB6TTg0LjcyIDE1Mi42MDJsNTMuNDExIDUzLjQxMWMtMTMuNTA2IDMxLjgwNi0xMy41MjIgNjguMTI4IDAgOTkuOTc0TDg0LjcyIDM1OS4zOThjLTM4LjMxOS02My4yMTctMzguMzE5LTE0My41NzkgMC0yMDYuNzk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMaWdodGJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM1MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDgwYy01Mi45NCAwLTk2IDQzLjA2LTk2IDk2IDAgOC44NCA3LjE2IDE2IDE2IDE2czE2LTcuMTYgMTYtMTZjMC0zNS4zIDI4LjcyLTY0IDY0LTY0IDguODQgMCAxNi03LjE2IDE2LTE2cy03LjE2LTE2LTE2LTE2ek05Ni4wNiA0NTkuMTdjMCAzLjE1LjkzIDYuMjIgMi42OCA4Ljg0bDI0LjUxIDM2Ljg0YzIuOTcgNC40NiA3Ljk3IDcuMTQgMTMuMzIgNy4xNGg3OC44NWM1LjM2IDAgMTAuMzYtMi42OCAxMy4zMi03LjE0bDI0LjUxLTM2Ljg0YzEuNzQtMi42MiAyLjY3LTUuNyAyLjY4LTguODRsLjA1LTQzLjE4SDk2LjAybC4wNCA0My4xOHpNMTc2IDBDNzMuNzIgMCAwIDgyLjk3IDAgMTc2YzAgNDQuMzcgMTYuNDUgODQuODUgNDMuNTYgMTE1Ljc4IDE2LjY0IDE4Ljk5IDQyLjc0IDU4LjggNTIuNDIgOTIuMTZ2LjA2aDQ4di0uMTJjLS4wMS00Ljc3LS43Mi05LjUxLTIuMTUtMTQuMDctNS41OS0xNy44MS0yMi44Mi02NC43Ny02Mi4xNy0xMDkuNjctMjAuNTQtMjMuNDMtMzEuNTItNTMuMTUtMzEuNjEtODQuMTQtLjItNzMuNjQgNTkuNjctMTI4IDEyNy45NS0xMjggNzAuNTggMCAxMjggNTcuNDIgMTI4IDEyOCAwIDMwLjk3LTExLjI0IDYwLjg1LTMxLjY1IDg0LjE0LTM5LjExIDQ0LjYxLTU2LjQyIDkxLjQ3LTYyLjEgMTA5LjQ2YTQ3LjUwNyA0Ny41MDcgMCAwIDAtMi4yMiAxNC4zdi4xaDQ4di0uMDVjOS42OC0zMy4zNyAzNS43OC03My4xOCA1Mi40Mi05Mi4xNkMzMzUuNTUgMjYwLjg1IDM1MiAyMjAuMzcgMzUyIDE3NiAzNTIgNzguOCAyNzMuMiAwIDE3NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMaXN0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHptLTYgNDAwSDU0YTYgNiAwIDAgMS02LTZWODZhNiA2IDAgMCAxIDYtNmg0MDRhNiA2IDAgMCAxIDYgNnYzNDBhNiA2IDAgMCAxLTYgNnptLTQyLTkydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMjA0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDIwMGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyem0wLTk2djI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMjA0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDIwMGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyem0wLTk2djI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMjA0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDIwMGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyem0tMjUyIDEyYzAgMTkuODgyLTE2LjExOCAzNi0zNiAzNnMtMzYtMTYuMTE4LTM2LTM2IDE2LjExOC0zNiAzNi0zNiAzNiAxNi4xMTggMzYgMzZ6bTAgOTZjMCAxOS44ODItMTYuMTE4IDM2LTM2IDM2cy0zNi0xNi4xMTgtMzYtMzYgMTYuMTE4LTM2IDM2LTM2IDM2IDE2LjExOCAzNiAzNnptMCA5NmMwIDE5Ljg4Mi0xNi4xMTggMzYtMzYgMzZzLTM2LTE2LjExOC0zNi0zNiAxNi4xMTgtMzYgMzYtMzYgMzYgMTYuMTE4IDM2IDM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYwLjAyIDMyYy0xLjk2IDAtMy45OC4zNy01Ljk2IDEuMTZMMzg0LjAxIDk2SDM4NEwyMTIgMzUuMjhBNjQuMjUyIDY0LjI1MiAwIDAgMCAxOTEuNzYgMzJjLTYuNjkgMC0xMy4zNyAxLjA1LTE5LjgxIDMuMTRMMjAuMTIgODcuOTVBMzIuMDA2IDMyLjAwNiAwIDAgMCAwIDExNy42NnYzNDYuMzJDMCA0NzMuMTcgNy41MyA0ODAgMTUuOTkgNDgwYzEuOTYgMCAzLjk3LS4zNyA1Ljk2LTEuMTZMMTkyIDQxNmwxNzIgNjAuNzFhNjMuOTggNjMuOTggMCAwIDAgNDAuMDUuMTVsMTUxLjgzLTUyLjgxQTMxLjk5NiAzMS45OTYgMCAwIDAgNTc2IDM5NC4zNFY0OC4wMmMwLTkuMTktNy41My0xNi4wMi0xNS45OC0xNi4wMnpNMjI0IDkwLjQybDEyOCA0NS4xOXYyODUuOTdsLTEyOC00NS4xOVY5MC40MnpNNDggNDE4LjA1VjEyOS4wN2wxMjgtNDQuNTN2Mjg2LjJsLS42NC4yM0w0OCA0MTguMDV6bTQ4MC0zNS4xM2wtMTI4IDQ0LjUzVjE0MS4yNmwuNjQtLjI0TDUyOCA5My45NXYyODguOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01laEJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTI4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTE2MCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTWVoUm9sbGluZ0V5ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem04OC0zMDRjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyem0wIDExMmMtMjIuMSAwLTQwLTE3LjktNDAtNDAgMC0xMy42IDcuMy0yNS4xIDE3LjctMzIuMy0xIDIuNi0xLjcgNS4zLTEuNyA4LjMgMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTIuOS0uNy01LjctMS43LTguMyAxMC40IDcuMiAxNy43IDE4LjcgMTcuNyAzMi4zIDAgMjIuMS0xNy45IDQwLTQwIDQwem0tMTA0LTQwYzAtMzkuOC0zMi4yLTcyLTcyLTcycy03MiAzMi4yLTcyIDcyIDMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03MnptLTExMiAwYzAtMTMuNiA3LjMtMjUuMSAxNy43LTMyLjMtMSAyLjYtMS43IDUuMy0xLjcgOC4zIDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0yLjktLjctNS43LTEuNy04LjMgMTAuNCA3LjIgMTcuNyAxOC43IDE3LjcgMzIuMyAwIDIyLjEtMTcuOSA0MC00MCA0MHMtNDAtMTcuOS00MC00MHptMTkyIDEyOEgxODRjLTEzLjIgMC0yNCAxMC44LTI0IDI0czEwLjggMjQgMjQgMjRoMTI4YzEzLjIgMCAyNC0xMC44IDI0LTI0cy0xMC44LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdNZWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0tODAtMjE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYwLTY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptOCAxNDRIMTYwYy0xMy4yIDAtMjQgMTAuOC0yNCAyNHMxMC44IDI0IDI0IDI0aDE3NmMxMy4yIDAgMjQtMTAuOCAyNC0yNHMtMTAuOC0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTWludXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA4IDI4NGMtNi42IDAtMTItNS40LTEyLTEydi0zMmMwLTYuNiA1LjQtMTIgMTItMTJoMjMyYzYuNiAwIDEyIDUuNCAxMiAxMnYzMmMwIDYuNi01LjQgMTItMTIgMTJIMTA4ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdNb25leUJpbGxBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDE0NGMtNTMuMDIgMC05NiA1MC4xNC05NiAxMTIgMCA2MS44NSA0Mi45OCAxMTIgOTYgMTEyIDUzIDAgOTYtNTAuMTMgOTYtMTEyIDAtNjEuODYtNDIuOTgtMTEyLTk2LTExMnptNDAgMTY4YzAgNC40Mi0zLjU4IDgtOCA4aC02NGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDE2di01NS40NGwtLjQ3LjMxYTcuOTkyIDcuOTkyIDAgMCAxLTExLjA5LTIuMjJsLTguODgtMTMuMzFhNy45OTIgNy45OTIgMCAwIDEgMi4yMi0xMS4wOWwxNS4zMy0xMC4yMmEyMy45OSAyMy45OSAwIDAgMSAxMy4zMS00LjAzSDMyOGM0LjQyIDAgOCAzLjU4IDggOHY4OGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxNnpNNjA4IDY0SDMyQzE0LjMzIDY0IDAgNzguMzMgMCA5NnYzMjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0tMTYgMjcyYy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0SDExMmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0VjE3NmMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0aDQxNmMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0djE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzkuMTM1IDUxMmM3OC43NTYgMCAxNTAuOTgyLTM1LjgwNCAxOTguODQ0LTk0Ljc3NSAyOC4yNy0zNC44MzEtMi41NTgtODUuNzIyLTQ2LjI0OS03Ny40MDEtODIuMzQ4IDE1LjY4My0xNTguMjcyLTQ3LjI2OC0xNTguMjcyLTEzMC43OTIgMC00OC40MjQgMjYuMDYtOTIuMjkyIDY3LjQzNC0xMTUuODM2IDM4Ljc0NS0yMi4wNSAyOC45OTktODAuNzg4LTE1LjAyMi04OC45MTlBMjU3LjkzNiAyNTcuOTM2IDAgMCAwIDI3OS4xMzUgMGMtMTQxLjM2IDAtMjU2IDExNC41NzUtMjU2IDI1NiAwIDE0MS4zNiAxMTQuNTc2IDI1NiAyNTYgMjU2em0wLTQ2NGMxMi45ODUgMCAyNS42ODkgMS4yMDEgMzguMDE2IDMuNDc4LTU0Ljc2IDMxLjE2My05MS42OTMgOTAuMDQyLTkxLjY5MyAxNTcuNTU0IDAgMTEzLjg0OCAxMDMuNjQxIDE5OS4yIDIxNS4yNTIgMTc3Ljk0NEM0MDIuNTc0IDQzMy45NjQgMzQ0LjM2NiA0NjQgMjc5LjEzNSA0NjRjLTExNC44NzUgMC0yMDgtOTMuMTI1LTIwOC0yMDhzOTMuMTI1LTIwOCAyMDgtMjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdOZXdzcGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTUyIDY0SDExMmMtMjAuODU4IDAtMzguNjQzIDEzLjM3Ny00NS4yNDggMzJIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYyNzJjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2aDQ5NmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWODhjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek00OCAzOTJWMTQ0aDE2djI0OGMwIDQuNDExLTMuNTg5IDgtOCA4cy04LTMuNTg5LTgtOHptNDgwIDhIMTExLjQyMmMuMzc0LTIuNjE0LjU3OC01LjI4My41NzgtOFYxMTJoNDE2djI4OHpNMTcyIDI4MGgxMzZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtOTZjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxNzJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2OTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMjgtODBoODB2NDBoLTgwdi00MHptLTQwIDE0MHYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMzZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDE3MmMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMTkyIDB2LTI0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTA0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzNjRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAtMTQ0di0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDEwNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzY0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDcydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDEwNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzY0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdPYmplY3RHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDAgMTI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNzJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJIOTZWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMkM1LjM3MyAzMiAwIDM3LjM3MyAwIDQ0djcyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MjU2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjcyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMTJoMzIwdjEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNzJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMTJWMTI4aDEyem0tNTItNjRoMzJ2MzJoLTMyVjY0ek0zMiA2NGgzMnYzMkgzMlY2NHptMzIgMzg0SDMydi0zMmgzMnYzMnptNDE2IDBoLTMydi0zMmgzMnYzMnptLTQwLTY0aC0xMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxMkg5NnYtMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3MlYxMjhoMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMTJoMzIwdjEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MjU2em0tMzYtMTkyaC04NHYtNTJjMC02LjYyOC01LjM3My0xMi0xMi0xMkgxMDhjLTYuNjI3IDAtMTIgNS4zNzItMTIgMTJ2MTY4YzAgNi42MjggNS4zNzMgMTIgMTIgMTJoODR2NTJjMCA2LjYyOCA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MiAxMi0xMlYyMDRjMC02LjYyOC01LjM3My0xMi0xMi0xMnptLTI2OC0yNGgxNDR2MTEySDEzNlYxNjh6bTI0MCAxNzZIMjMydi0yNGg3NmM2LjYyNyAwIDEyLTUuMzcyIDEyLTEydi03Nmg1NnYxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ09iamVjdFVuZ3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY0IDIyNGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi03MmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC03MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxMmgtODh2LTI0aDEyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNzJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJIOTZWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMkM1LjM3MyAzMiAwIDM3LjM3MyAwIDQ0djcyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MTYwSDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjcyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMTJoODh2MjRoLTEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjcyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMTJoMjI0djEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNzJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMTJWMjI0aDEyek0zNTIgNjRoMzJ2MzJoLTMyVjY0em0wIDI1NmgzMnYzMmgtMzJ2LTMyek02NCAzNTJIMzJ2LTMyaDMydjMyem0wLTI1NkgzMlY2NGgzMnYzMnptMzIgMjE2di0xMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDcyVjEyOGgxMmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0xMmgyMjR2MTJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMnYxNjBoLTEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEySDk2em0xMjggMTM2aC0zMnYtMzJoMzJ2MzJ6bTI4MC02NGgtMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJIMjU2di0xMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0xMnYtMjRoODh2MTJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg3MmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi03MmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0xMnYtODhoODh2MTJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMnYxNjB6bTQwIDY0aC0zMnYtMzJoMzJ2MzJ6bTAtMjU2aC0zMnYtMzJoMzJ2MzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1BhcGVyUGxhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwIDYuNUwyNCAyNDYuNGMtMzQuNCAxOS45LTMxLjEgNzAuOCA1LjcgODUuOUwxNDQgMzc5LjZWNDY0YzAgNDYuNCA1OS4yIDY1LjUgODYuNiAyOC42bDQzLjgtNTkuMSAxMTEuOSA0Ni4yYzUuOSAyLjQgMTIuMSAzLjYgMTguMyAzLjYgOC4yIDAgMTYuMy0yLjEgMjMuNi02LjIgMTIuOC03LjIgMjEuNi0yMCAyMy45LTM0LjVsNTkuNC0zODcuMmM2LjEtNDAuMS0zNi45LTY4LjgtNzEuNS00OC45ek0xOTIgNDY0di02NC42bDM2LjYgMTUuMUwxOTIgNDY0em0yMTIuNi0yOC43bC0xNTMuOC02My41TDM5MSAxNjkuNWMxMC43LTE1LjUtOS41LTMzLjUtMjMuNy0yMS4yTDE1NS44IDMzMi42IDQ4IDI4OCA0NjQgNDhsLTU5LjQgMzg3LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1BhdXNlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptOTYtMjgwdjE2MGMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ6bS0xMTIgMHYxNjBjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQbGF5Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3MS43IDIzOGwtMTc2LTEwN2MtMTUuOC04LjgtMzUuNyAyLjUtMzUuNyAyMXYyMDhjMCAxOC40IDE5LjggMjkuOCAzNS43IDIxbDE3Ni0xMDFjMTYuNC05LjEgMTYuNC0zMi44IDAtNDJ6TTUwNCAyNTZDNTA0IDExOSAzOTMgOCAyNTYgOFM4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4em0tNDQ4IDBjMC0xMTAuNSA4OS41LTIwMCAyMDAtMjAwczIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMFM1NiAzNjYuNSA1NiAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1BsdXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDI0MHYzMmMwIDYuNi01LjQgMTItMTIgMTJoLTg4djg4YzAgNi42LTUuNCAxMi0xMiAxMmgtMzJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtODhoLTg4Yy02LjYgMC0xMi01LjQtMTItMTJ2LTMyYzAtNi42IDUuNC0xMiAxMi0xMmg4OHYtODhjMC02LjYgNS40LTEyIDEyLTEyaDMyYzYuNiAwIDEyIDUuNCAxMiAxMnY4OGg4OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bTk2LTE2MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTQ4IDM0NlY4NmMwLTMuMy0yLjctNi02LTZINTRjLTMuMyAwLTYgMi43LTYgNnYzNDBjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1F1ZXN0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgNDQ4Yy0xMTAuNTMyIDAtMjAwLTg5LjQzMS0yMDAtMjAwIDAtMTEwLjQ5NSA4OS40NzItMjAwIDIwMC0yMDAgMTEwLjQ5MSAwIDIwMCA4OS40NzEgMjAwIDIwMCAwIDExMC41My04OS40MzEgMjAwLTIwMCAyMDB6bTEwNy4yNDQtMjU1LjJjMCA2Ny4wNTItNzIuNDIxIDY4LjA4NC03Mi40MjEgOTIuODYzVjMwMGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00NS42NDdjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTguNjU5YzAtMzUuNzQ1IDI3LjEtNTAuMDM0IDQ3LjU3OS02MS41MTYgMTcuNTYxLTkuODQ1IDI4LjMyNC0xNi41NDEgMjguMzI0LTI5LjU3OSAwLTE3LjI0Ni0yMS45OTktMjguNjkzLTM5Ljc4NC0yOC42OTMtMjMuMTg5IDAtMzMuODk0IDEwLjk3Ny00OC45NDIgMjkuOTY5LTQuMDU3IDUuMTItMTEuNDYgNi4wNzEtMTYuNjY2IDIuMTI0bC0yNy44MjQtMjEuMDk4Yy01LjEwNy0zLjg3Mi02LjI1MS0xMS4wNjYtMi42NDQtMTYuMzYzQzE4NC44NDYgMTMxLjQ5MSAyMTQuOTQgMTEyIDI2MS43OTQgMTEyYzQ5LjA3MSAwIDEwMS40NSAzOC4zMDQgMTAxLjQ1IDg4Ljh6TTI5OCAzNjhjMCAyMy4xNTktMTguODQxIDQyLTQyIDQycy00Mi0xOC44NDEtNDItNDIgMTguODQxLTQyIDQyLTQyIDQyIDE4Ljg0MSA0MiA0MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUmVnaXN0ZXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTAgNDQ4Yy0xMTAuNTMyIDAtMjAwLTg5LjQ1MS0yMDAtMjAwIDAtMTEwLjUzMSA4OS40NTEtMjAwIDIwMC0yMDAgMTEwLjUzMiAwIDIwMCA4OS40NTEgMjAwIDIwMCAwIDExMC41MzItODkuNDUxIDIwMC0yMDAgMjAwem0xMTAuNDQyLTgxLjc5MWMtNTMuMDQ2LTk2LjI4NC01MC4yNS05MS40NjgtNTMuMjcxLTk2LjA4NSAyNC4yNjctMTMuODc5IDM5LjQ4Mi00MS41NjMgMzkuNDgyLTczLjE3NiAwLTUyLjUwMy0zMC4yNDctODUuMjUyLTEwMS40OTgtODUuMjUyaC03OC42NjdjLTYuNjE3IDAtMTIgNS4zODMtMTIgMTJWMzgwYzAgNi42MTcgNS4zODMgMTIgMTIgMTJoMzguNTY4YzYuNjE3IDAgMTItNS4zODMgMTItMTJ2LTgzLjY2M2gzMS45NThsNDcuNTE1IDg5LjMwM2ExMS45OCAxMS45OCAwIDAgMCAxMC41OTMgNi4zNmg0Mi44MWM5LjE0IDAgMTQuOTE0LTkuNzk5IDEwLjUxLTE3Ljc5MXpNMjU2LjkzMyAyMzkuOTA2aC0zMy44NzV2LTY0LjE0aDI3LjM3N2MzMi40MTcgMCAzOC45MjkgMTIuMTMzIDM4LjkyOSAzMS43MDktLjAwMSAyMC45MTMtMTEuNTE4IDMyLjQzMS0zMi40MzEgMzIuNDMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTYWRDcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQ0IDM4Ni40VjI4MGMwLTEzLjItMTAuOC0yNC0yNC0yNHMtMjQgMTAuOC0yNCAyNHYxNTEuNEMzMTUuNSA0NDcgMjgyLjggNDU2IDI0OCA0NTZzLTY3LjUtOS05Ni0yNC42VjI4MGMwLTEzLjItMTAuOC0yNC0yNC0yNHMtMjQgMTAuOC0yNCAyNHYxMTQuNGMtMzQuNi0zNi01Ni04NC43LTU2LTEzOC40IDAtMTEwLjMgODkuNy0yMDAgMjAwLTIwMHMyMDAgODkuNyAyMDAgMjAwYzAgNTMuNy0yMS40IDEwMi41LTU2IDEzOC40ek0yMDUuOCAyMzQuNWM0LjQtMi40IDYuOS03LjQgNi4xLTEyLjQtNC0yNS4yLTM0LjItNDIuMS01OS44LTQyLjFzLTU1LjkgMTYuOS01OS44IDQyLjFjLS44IDUgMS43IDEwIDYuMSAxMi40IDQuNCAyLjQgOS45IDEuOCAxMy43LTEuNmw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzIuNSAyLjMgNy45IDQuOCAxMy43IDEuNnpNMzQ0IDE4MGMtMjUuNyAwLTU1LjkgMTYuOS01OS44IDQyLjEtLjggNSAxLjcgMTAgNi4xIDEyLjQgNC41IDIuNCA5LjkgMS44IDEzLjctMS42bDkuNS04LjVjMTQuOC0xMy4yIDQ2LjItMTMuMiA2MSAwbDkuNSA4LjVjMi41IDIuMiA4IDQuNyAxMy43IDEuNiA0LjQtMi40IDYuOS03LjQgNi4xLTEyLjQtMy45LTI1LjItMzQuMS00Mi4xLTU5LjgtNDIuMXptLTk2IDkyYy0zMC45IDAtNTYgMjguNy01NiA2NHMyNS4xIDY0IDU2IDY0IDU2LTI4LjcgNTYtNjQtMjUuMS02NC01Ni02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU2FkVGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTgtMTUyYy0xMy4yIDAtMjQgMTAuOC0yNCAyNHMxMC44IDI0IDI0IDI0YzIzLjggMCA0Ni4zIDEwLjUgNjEuNiAyOC44IDguMSA5LjggMjMuMiAxMS45IDMzLjggMy4xIDEwLjItOC41IDExLjYtMjMuNiAzLjEtMzMuOEMzMzAgMzIwLjggMjk0LjEgMzA0IDI1NiAzMDR6bS04OC02NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bS0xNjUuNiA5OC44QzE1MSAyOTAuMSAxMjYgMzI1LjQgMTI2IDM0Mi45YzAgMjIuNyAxOC44IDQxLjEgNDIgNDEuMXM0Mi0xOC40IDQyLTQxLjFjMC0xNy41LTI1LTUyLjgtMzYuNC02OC4xLTIuOC0zLjctOC40LTMuNy0xMS4yIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjk0MSAxMjkuOTQxbC04My44ODItODMuODgyQTQ4IDQ4IDAgMCAwIDMxNi4xMTggMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE2My44ODJhNDggNDggMCAwIDAtMTQuMDU5LTMzLjk0MXpNMjcyIDgwdjgwSDE0NFY4MGgxMjh6bTEyMiAzNTJINTRhNiA2IDAgMCAxLTYtNlY4NmE2IDYgMCAwIDEgNi02aDQydjEwNGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTc2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY4My44ODJsNzguMjQzIDc4LjI0M2E2IDYgMCAwIDEgMS43NTcgNC4yNDNWNDI2YTYgNiAwIDAgMS02IDZ6TTIyNCAyMzJjLTQ4LjUyMyAwLTg4IDM5LjQ3Ny04OCA4OHMzOS40NzcgODggODggODggODgtMzkuNDc3IDg4LTg4LTM5LjQ3Ny04OC04OC04OHptMCAxMjhjLTIyLjA1NiAwLTQwLTE3Ljk0NC00MC00MHMxNy45NDQtNDAgNDAtNDAgNDAgMTcuOTQ0IDQwIDQwLTE3Ljk0NCA0MC00MCA0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU2hhcmVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYxLjkzOCAxNTguMDZMNDE3Ljk0IDE0LjA5MkMzODcuOTI2LTE1LjkyMiAzMzYgNS4wOTcgMzM2IDQ4LjAzMnY1Ny4xOThjLTQyLjQ1IDEuODgtODQuMDMgNi41NS0xMjAuNzYgMTcuOTktMzUuMTcgMTAuOTUtNjMuMDcgMjcuNTgtODIuOTEgNDkuNDJDMTA4LjIyIDE5OS4yIDk2IDIzMi42IDk2IDI3MS45NGMwIDYxLjY5NyAzMy4xNzggMTEyLjQ1NSA4NC44NyAxNDQuNzYgMzcuNTQ2IDIzLjUwOCA4NS4yNDgtMTIuNjUxIDcxLjAyLTU1Ljc0LTE1LjUxNS00Ny4xMTktMTcuMTU2LTcwLjkyMyA4NC4xMS03OC43NlYzMzZjMCA0Mi45OTMgNTEuOTY4IDYzLjkxMyA4MS45NCAzMy45NGwxNDMuOTk4LTE0NGMxOC43NS0xOC43NCAxOC43NS00OS4xNCAwLTY3Ljg4ek0zODQgMzM2VjIzMi4xNkMyNTUuMzA5IDIzNC4wODIgMTY2LjQ5MiAyNTUuMzUgMjA2LjMxIDM3NiAxNzYuNzkgMzU3LjU1IDE0NCAzMjQuMDggMTQ0IDI3MS45NGMwLTEwOS4zMzQgMTI5LjE0LTExOC45NDcgMjQwLTExOS44NVY0OGwxNDQgMTQ0LTE0NCAxNDR6bTI0Ljc0IDg0LjQ5M2E4Mi42NTggODIuNjU4IDAgMCAwIDIwLjk3NC05LjMwM2M3Ljk3Ni00Ljk1MiAxOC4yODYuODI2IDE4LjI4NiAxMC4yMTRWNDY0YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTEyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMTMyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NC40ODZjMCA0LjkxNy0yLjk4NyA5LjM2OS03LjU2OSAxMS4xNTItMTMuNzAyIDUuMzMxLTI2LjM5NiAxMS41MzctMzguMDUgMTguNTg1YTEyLjEzOCAxMi4xMzggMCAwIDEtNi4yOCAxLjc3N0g1NGE2IDYgMCAwIDAtNiA2djM0MGE2IDYgMCAwIDAgNiA2aDM0MGE2IDYgMCAwIDAgNi02di0yNS45NjZjMC01LjM3IDMuNTc5LTEwLjA1OSA4Ljc0LTExLjU0MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU21pbGVCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptODQtMTQzLjRjLTIwLjggMjUtNTEuNSAzOS40LTg0IDM5LjRzLTYzLjItMTQuMy04NC0zOS40Yy04LjUtMTAuMi0yMy42LTExLjUtMzMuOC0zLjEtMTAuMiA4LjUtMTEuNSAyMy42LTMuMSAzMy44IDMwIDM2IDc0LjEgNTYuNiAxMjAuOSA1Ni42czkwLjktMjAuNiAxMjAuOS01Ni42YzguNS0xMC4yIDcuMS0yNS4zLTMuMS0zMy44LTEwLjItOC40LTI1LjMtNy4xLTMzLjggMy4xek0xMzYuNSAyMTFjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy40IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTd6TTMyOCAxNTJjLTIzLjggMC01Mi43IDI5LjMtNTYgNzEuNC0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NtaWxlV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTExNy44LTE0Ni40Yy0xMC4yLTguNS0yNS4zLTcuMS0zMy44IDMuMS0yMC44IDI1LTUxLjUgMzkuNC04NCAzOS40cy02My4yLTE0LjMtODQtMzkuNGMtOC41LTEwLjItMjMuNy0xMS41LTMzLjgtMy4xLTEwLjIgOC41LTExLjUgMjMuNi0zLjEgMzMuOCAzMCAzNiA3NC4xIDU2LjYgMTIwLjkgNTYuNnM5MC45LTIwLjYgMTIwLjktNTYuNmM4LjUtMTAuMiA3LjEtMjUuMy0zLjEtMzMuOHpNMTY4IDI0MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MC02MGMtMjUuNyAwLTU1LjkgMTYuOS01OS45IDQyLjEtMS43IDExLjIgMTEuNSAxOC4yIDE5LjggMTAuOGw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzguNSA3LjQgMjEuNi4zIDE5LjgtMTAuOC0zLjgtMjUuMi0zNC00Mi4xLTU5LjctNDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU21pbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0tODAtMjE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem00IDcyLjZjLTIwLjggMjUtNTEuNSAzOS40LTg0IDM5LjRzLTYzLjItMTQuMy04NC0zOS40Yy04LjUtMTAuMi0yMy43LTExLjUtMzMuOC0zLjEtMTAuMiA4LjUtMTEuNSAyMy42LTMuMSAzMy44IDMwIDM2IDc0LjEgNTYuNiAxMjAuOSA1Ni42czkwLjktMjAuNiAxMjAuOS01Ni42YzguNS0xMC4yIDcuMS0yNS4zLTMuMS0zMy44LTEwLjEtOC40LTI1LjMtNy4xLTMzLjggMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTbm93Zmxha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjEgMzU1LjJsLTM5LjItMjMgMzQuMS05LjNjOC40LTIuMyAxMy40LTExLjEgMTEuMS0xOS42bC00LjEtMTUuNWMtMi4yLTguNS0xMC45LTEzLjYtMTkuMy0xMS4zTDM0MyAyOTguMiAyNzEuMiAyNTZsNzEuOS00Mi4yIDc5LjcgMjEuN2M4LjQgMi4zIDE3LTIuOCAxOS4zLTExLjNsNC4xLTE1LjVjMi4yLTguNS0yLjctMTcuMy0xMS4xLTE5LjZsLTM0LjEtOS4zIDM5LjItMjNjNy41LTQuNCAxMC4xLTE0LjIgNS44LTIxLjlsLTcuOS0xMy45Yy00LjMtNy43LTE0LTEwLjMtMjEuNS01LjlsLTM5LjIgMjMgOS4xLTM0LjdjMi4yLTguNS0yLjctMTcuMy0xMS4xLTE5LjZsLTE1LjItNC4xYy04LjQtMi4zLTE3IDIuOC0xOS4zIDExLjNsLTIxLjMgODEtNzEuOSA0Mi4ydi04NC41TDMwNiA3MC40YzYuMS02LjIgNi4xLTE2LjQgMC0yMi42bC0xMS4xLTExLjNjLTYuMS02LjItMTYuMS02LjItMjIuMiAwbC0yNC45IDI1LjRWMTZjMC04LjgtNy0xNi0xNS43LTE2aC0xNS43Yy04LjcgMC0xNS43IDcuMi0xNS43IDE2djQ2LjFsLTI0LjktMjUuNGMtNi4xLTYuMi0xNi4xLTYuMi0yMi4yIDBMMTQyLjEgNDhjLTYuMSA2LjItNi4xIDE2LjQgMCAyMi42bDU4LjMgNTkuM3Y4NC41bC03MS45LTQyLjItMjEuMy04MWMtMi4yLTguNS0xMC45LTEzLjYtMTkuMy0xMS4zTDcyLjcgODRjLTguNCAyLjMtMTMuNCAxMS4xLTExLjEgMTkuNmw5LjEgMzQuNy0zOS4yLTIzYy03LjUtNC40LTE3LjEtMS44LTIxLjUgNS45bC03LjkgMTMuOWMtNC4zIDcuNy0xLjggMTcuNCA1LjggMjEuOWwzOS4yIDIzLTM0LjEgOS4xYy04LjQgMi4zLTEzLjQgMTEuMS0xMS4xIDE5LjZMNiAyMjQuMmMyLjIgOC41IDEwLjkgMTMuNiAxOS4zIDExLjNsNzkuNy0yMS43IDcxLjkgNDIuMi03MS45IDQyLjItNzkuNy0yMS43Yy04LjQtMi4zLTE3IDIuOC0xOS4zIDExLjNsLTQuMSAxNS41Yy0yLjIgOC41IDIuNyAxNy4zIDExLjEgMTkuNmwzNC4xIDkuMy0zOS4yIDIzYy03LjUgNC40LTEwLjEgMTQuMi01LjggMjEuOUwxMCAzOTFjNC4zIDcuNyAxNCAxMC4zIDIxLjUgNS45bDM5LjItMjMtOS4xIDM0LjdjLTIuMiA4LjUgMi43IDE3LjMgMTEuMSAxOS42bDE1LjIgNC4xYzguNCAyLjMgMTctMi44IDE5LjMtMTEuM2wyMS4zLTgxIDcxLjktNDIuMnY4NC41bC01OC4zIDU5LjNjLTYuMSA2LjItNi4xIDE2LjQgMCAyMi42bDExLjEgMTEuM2M2LjEgNi4yIDE2LjEgNi4yIDIyLjIgMGwyNC45LTI1LjRWNDk2YzAgOC44IDcgMTYgMTUuNyAxNmgxNS43YzguNyAwIDE1LjctNy4yIDE1LjctMTZ2LTQ2LjFsMjQuOSAyNS40YzYuMSA2LjIgMTYuMSA2LjIgMjIuMiAwbDExLjEtMTEuM2M2LjEtNi4yIDYuMS0xNi40IDAtMjIuNmwtNTguMy01OS4zdi04NC41bDcxLjkgNDIuMiAyMS4zIDgxYzIuMiA4LjUgMTAuOSAxMy42IDE5LjMgMTEuM0wzNzUgNDI4YzguNC0yLjMgMTMuNC0xMS4xIDExLjEtMTkuNmwtOS4xLTM0LjcgMzkuMiAyM2M3LjUgNC40IDE3LjEgMS44IDIxLjUtNS45bDcuOS0xMy45YzQuNi03LjUgMi4xLTE3LjMtNS41LTIxLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNiA0MDBINTRjLTMuMyAwLTYtMi43LTYtNlY4NmMwLTMuMyAyLjctNiA2LTZoMzQwYzMuMyAwIDYgMi43IDYgNnYzNDBjMCAzLjMtMi43IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTdGFySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzg1LjNsLTEyNC4zIDY1LjQgMjMuNy0xMzguNC0xMDAuNi05OCAxMzktMjAuMiA2Mi4yLTEyNlYwYy0xMS40IDAtMjIuOCA1LjktMjguNyAxNy44TDE5NCAxNTAuMiA0Ny45IDE3MS40Yy0yNi4yIDMuOC0zNi43IDM2LjEtMTcuNyA1NC42bDEwNS43IDEwMy0yNSAxNDUuNWMtNC41IDI2LjEgMjMgNDYgNDYuNCAzMy43TDI4OCA0MzkuNnYtNTQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjguMSAxNzEuNUwzODIgMTUwLjIgMzE2LjcgMTcuOGMtMTEuNy0yMy42LTQ1LjYtMjMuOS01Ny40IDBMMTk0IDE1MC4yIDQ3LjkgMTcxLjVjLTI2LjIgMy44LTM2LjcgMzYuMS0xNy43IDU0LjZsMTA1LjcgMTAzLTI1IDE0NS41Yy00LjUgMjYuMyAyMy4yIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZsMTMwLjcgNjguN2MyMy4yIDEyLjIgNTAuOS03LjQgNDYuNC0zMy43bC0yNS0xNDUuNSAxMDUuNy0xMDNjMTktMTguNSA4LjUtNTAuOC0xNy43LTU0LjZ6TTM4OC42IDMxMi4zbDIzLjcgMTM4LjRMMjg4IDM4NS40bC0xMjQuMyA2NS4zIDIzLjctMTM4LjQtMTAwLjYtOTggMTM5LTIwLjIgNjIuMi0xMjYgNjIuMiAxMjYgMTM5IDIwLjItMTAwLjYgOTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N0aWNreU5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM0OC4xMDZWODBjMC0yNi41MS0yMS40OS00OC00OC00OEg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUxLjk4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDI2OC4xMThhNDggNDggMCAwIDAgMzMuOTQxLTE0LjA1OWw4My44ODItODMuODgyQTQ4IDQ4IDAgMCAwIDQ0OCAzNDguMTA2em0tMTI4IDgwdi03Ni4xMThoNzYuMTE4TDMyMCA0MjguMTA2ek00MDAgODB2MjIzLjk4OEgyOTZjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxMDRINDhWODBoMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTdG9wQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZDNTA0IDExOSAzOTMgOCAyNTYgOFM4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4em0tNDQ4IDBjMC0xMTAuNSA4OS41LTIwMCAyMDAtMjAwczIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMFM1NiAzNjYuNSA1NiAyNTZ6bTI5Ni04MHYxNjBjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoMTYwYzguOCAwIDE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NC4yIDIyMS45bC01OS44LTQwLjUgMTMuNy03MWMyLjYtMTMuMi0xLjYtMjYuOC0xMS4xLTM2LjQtOS42LTkuNS0yMy4yLTEzLjctMzYuMi0xMS4xbC03MC45IDEzLjctNDAuNC01OS45Yy0xNS4xLTIyLjMtNTEuOS0yMi4zLTY3IDBsLTQwLjQgNTkuOS03MC44LTEzLjdDOTggNjAuNCA4NC41IDY0LjUgNzUgNzQuMWMtOS41IDkuNi0xMy43IDIzLjEtMTEuMSAzNi4zbDEzLjcgNzEtNTkuOCA0MC41QzYuNiAyMjkuNSAwIDI0MiAwIDI1NS41czYuNyAyNiAxNy44IDMzLjVsNTkuOCA0MC41LTEzLjcgNzFjLTIuNiAxMy4yIDEuNiAyNi44IDExLjEgMzYuMyA5LjUgOS41IDIyLjkgMTMuNyAzNi4zIDExLjFsNzAuOC0xMy43IDQwLjQgNTkuOUMyMzAgNTA1LjMgMjQyLjYgNTEyIDI1NiA1MTJzMjYtNi43IDMzLjUtMTcuOGw0MC40LTU5LjkgNzAuOSAxMy43YzEzLjQgMi43IDI2LjgtMS42IDM2LjMtMTEuMSA5LjUtOS41IDEzLjYtMjMuMSAxMS4xLTM2LjNsLTEzLjctNzEgNTkuOC00MC41YzExLjEtNy41IDE3LjgtMjAuMSAxNy44LTMzLjUtLjEtMTMuNi02LjctMjYuMS0xNy45LTMzLjd6bS0xMTIuOSA4NS42bDE3LjYgOTEuMi05MS0xNy42TDI1NiA0NThsLTUxLjktNzctOTAuOSAxNy42IDE3LjYtOTEuMi03Ni44LTUyIDc2LjgtNTItMTcuNi05MS4yIDkxIDE3LjZMMjU2IDUzbDUxLjkgNzYuOSA5MS0xNy42LTE3LjYgOTEuMSA3Ni44IDUyLTc2LjggNTIuMXpNMjU2IDE1MmMtNTcuMyAwLTEwNCA0Ni43LTEwNCAxMDRzNDYuNyAxMDQgMTA0IDEwNCAxMDQtNDYuNyAxMDQtMTA0LTQ2LjctMTA0LTEwNC0xMDR6bTAgMTYwYy0zMC45IDAtNTYtMjUuMS01Ni01NnMyNS4xLTU2IDU2LTU2IDU2IDI1LjEgNTYgNTYtMjUuMSA1Ni01NiA1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3VycHJpc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0wLTE3NmMtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NCA2NC0yOC43IDY0LTY0LTI4LjctNjQtNjQtNjR6bS00OC03MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzJ6bTEyOC0zMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RodW1ic0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY2LjI3IDIyNS4zMWM0LjY3NC0yMi42NDcuODY0LTQ0LjUzOC04Ljk5LTYyLjk5IDIuOTU4LTIzLjg2OC00LjAyMS00OC41NjUtMTcuMzQtNjYuOTlDNDM4Ljk4NiAzOS40MjMgNDA0LjExNyAwIDMyNyAwYy03IDAtMTUgLjAxLTIyLjIyLjAxQzIwMS4xOTUuMDEgMTY4Ljk5NyA0MCAxMjggNDBoLTEwLjg0NWMtNS42NC00Ljk3NS0xMy4wNDItOC0yMS4xNTUtOEgzMkMxNC4zMjcgMzIgMCA0Ni4zMjcgMCA2NHYyNDBjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyaDY0YzExLjg0MiAwIDIyLjE3NS02LjQzOCAyNy43MDgtMTZoNy4wNTJjMTkuMTQ2IDE2Ljk1MyA0Ni4wMTMgNjAuNjUzIDY4Ljc2IDgzLjQgMTMuNjY3IDEzLjY2NyAxMC4xNTMgMTA4LjYgNzEuNzYgMTA4LjYgNTcuNTggMCA5NS4yNy0zMS45MzYgOTUuMjctMTA0LjczIDAtMTguNDEtMy45My0zMy43My04Ljg1LTQ2LjU0aDM2LjQ4YzQ4LjYwMiAwIDg1LjgyLTQxLjU2NSA4NS44Mi04NS41OCAwLTE5LjE1LTQuOTYtMzQuOTktMTMuNzMtNDkuODR6TTY0IDI5NmMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0em0zMzAuMTggMTYuNzNIMjkwLjE5YzAgMzcuODIgMjguMzYgNTUuMzcgMjguMzYgOTQuNTQgMCAyMy43NSAwIDU2LjczLTQ3LjI3IDU2LjczLTE4LjkxLTE4LjkxLTkuNDYtNjYuMTgtMzcuODItOTQuNTRDMjA2LjkgMzQyLjg5IDE2Ny4yOCAyNzIgMTM4LjkyIDI3MkgxMjhWODUuODNjNTMuNjExIDAgMTAwLjAwMS0zNy44MiAxNzEuNjQtMzcuODJoMzcuODJjMzUuNTEyIDAgNjAuODIgMTcuMTIgNTMuMTIgNjUuOSAxNS4yIDguMTYgMjYuNSAzNi40NCAxMy45NCA1Ny41NyAyMS41ODEgMjAuMzg0IDE4LjY5OSA1MS4wNjUgNS4yMSA2NS42MiA5LjQ1IDAgMjIuMzYgMTguOTEgMjIuMjcgMzcuODEtLjA5IDE4LjkxLTE2LjcxIDM3LjgyLTM3LjgyIDM3LjgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjYuMjcgMjg2LjY5QzQ3NS4wNCAyNzEuODQgNDgwIDI1NiA0ODAgMjM2Ljg1YzAtNDQuMDE1LTM3LjIxOC04NS41OC04NS44Mi04NS41OEgzNTcuN2M0LjkyLTEyLjgxIDguODUtMjguMTMgOC44NS00Ni41NEMzNjYuNTUgMzEuOTM2IDMyOC44NiAwIDI3MS4yOCAwYy02MS42MDcgMC01OC4wOTMgOTQuOTMzLTcxLjc2IDEwOC42LTIyLjc0NyAyMi43NDctNDkuNjE1IDY2LjQ0Ny02OC43NiA4My40SDMyYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJ2MjQwYzAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmg2NGMxNC44OTMgMCAyNy40MDgtMTAuMTc0IDMwLjk3OC0yMy45NSA0NC41MDkgMS4wMDEgNzUuMDYgMzkuOTQgMTc3LjgwMiAzOS45NCA3LjIyIDAgMTUuMjIuMDEgMjIuMjIuMDEgNzcuMTE3IDAgMTExLjk4Ni0zOS40MjMgMTEyLjk0LTk1LjMzIDEzLjMxOS0xOC40MjUgMjAuMjk5LTQzLjEyMiAxNy4zNC02Ni45OSA5Ljg1NC0xOC40NTIgMTMuNjY0LTQwLjM0MyA4Ljk5LTYyLjk5em0tNjEuNzUgNTMuODNjMTIuNTYgMjEuMTMgMS4yNiA0OS40MS0xMy45NCA1Ny41NyA3LjcgNDguNzgtMTcuNjA4IDY1LjktNTMuMTIgNjUuOWgtMzcuODJjLTcxLjYzOSAwLTExOC4wMjktMzcuODItMTcxLjY0LTM3LjgyVjI0MGgxMC45MmMyOC4zNiAwIDY3Ljk4LTcwLjg5IDk0LjU0LTk3LjQ2IDI4LjM2LTI4LjM2IDE4LjkxLTc1LjYzIDM3LjgyLTk0LjU0IDQ3LjI3IDAgNDcuMjcgMzIuOTggNDcuMjcgNTYuNzMgMCAzOS4xNy0yOC4zNiA1Ni43Mi0yOC4zNiA5NC41NGgxMDMuOTljMjEuMTEgMCAzNy43MyAxOC45MSAzNy44MiAzNy44Mi4wOSAxOC45LTEyLjgyIDM3LjgxLTIyLjI3IDM3LjgxIDEzLjQ4OSAxNC41NTUgMTYuMzcxIDQ1LjIzNi01LjIxIDY1LjYyek04OCA0MzJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0cy0yNC0xMC43NDUtMjQtMjQgMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVGltZXNDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCA0NDhjLTExMC41IDAtMjAwLTg5LjUtMjAwLTIwMFMxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwem0xMDEuOC0yNjIuMkwyOTUuNiAyNTZsNjIuMiA2Mi4yYzQuNyA0LjcgNC43IDEyLjMgMCAxN2wtMjIuNiAyMi42Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMjU2IDI5NS42bC02Mi4yIDYyLjJjLTQuNyA0LjctMTIuMyA0LjctMTcgMGwtMjIuNi0yMi42Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsNjIuMi02Mi4yLTYyLjItNjIuMmMtNC43LTQuNy00LjctMTIuMyAwLTE3bDIyLjYtMjIuNmM0LjctNC43IDEyLjMtNC43IDE3IDBsNjIuMiA2Mi4yIDYyLjItNjIuMmM0LjctNC43IDEyLjMtNC43IDE3IDBsMjIuNiAyMi42YzQuNyA0LjcgNC43IDEyLjMgMCAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVGlyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMjkuMS0zMDMuOGMtMy44LTQuNC0xMC4zLTUuNC0xNS4zLTIuNWwtODAgNDhjLTMuNiAyLjItNS44IDYuMS01LjggMTAuM3MyLjIgOC4xIDUuOCAxMC4zbDgwIDQ4YzUuNCAzLjIgMTEuOCAxLjYgMTUuMy0yLjUgMy44LTQuNSAzLjktMTEgLjEtMTUuNUwzNDMuNiAyMDhsMzMuNi00MC4zYzMuOC00LjUgMy43LTExLjEtLjEtMTUuNXpNMjIwIDIwOGMwLTQuMi0yLjItOC4xLTUuOC0xMC4zbC04MC00OGMtNS0zLTExLjUtMS45LTE1LjMgMi41LTMuOCA0LjUtMy45IDExLS4xIDE1LjVsMzMuNiA0MC4zLTMzLjYgNDAuM2MtMy44IDQuNS0zLjcgMTEgLjEgMTUuNSAzLjUgNC4xIDkuOSA1LjcgMTUuMyAyLjVsODAtNDhjMy42LTIuMiA1LjgtNi4xIDUuOC0xMC4zem0yOCA2NGMtNDUuNCAwLTEwMC45IDM4LjMtMTA3LjggOTMuMy0xLjUgMTEuOCA2LjkgMjEuNiAxNS41IDE3LjlDMTc4LjQgMzczLjUgMjEyIDM2OCAyNDggMzY4czY5LjYgNS41IDkyLjMgMTUuMmM4LjUgMy43IDE3LTYgMTUuNS0xNy45LTYuOS01NS02Mi40LTkzLjMtMTA3LjgtOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVHJhc2hBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY4IDQxNmgyNGExMiAxMiAwIDAgMCAxMi0xMlYxODhhMTIgMTIgMCAwIDAtMTItMTJoLTI0YTEyIDEyIDAgMCAwLTEyIDEydjIxNmExMiAxMiAwIDAgMCAxMiAxMnpNNDMyIDgwaC04Mi40MWwtMzQtNTYuN0E0OCA0OCAwIDAgMCAyNzQuNDEgMEgxNzMuNTlhNDggNDggMCAwIDAtNDEuMTYgMjMuM0w5OC40MSA4MEgxNkExNiAxNiAwIDAgMCAwIDk2djE2YTE2IDE2IDAgMCAwIDE2IDE2aDE2djMzNmE0OCA0OCAwIDAgMCA0OCA0OGgyODhhNDggNDggMCAwIDAgNDgtNDhWMTI4aDE2YTE2IDE2IDAgMCAwIDE2LTE2Vjk2YTE2IDE2IDAgMCAwLTE2LTE2ek0xNzEuODQgNTAuOTFBNiA2IDAgMCAxIDE3NyA0OGg5NGE2IDYgMCAwIDEgNS4xNSAyLjkxTDI5My42MSA4MEgxNTQuMzl6TTM2OCA0NjRIODBWMTI4aDI4OHptLTIxMi00OGgyNGExMiAxMiAwIDAgMCAxMi0xMlYxODhhMTIgMTIgMCAwIDAtMTItMTJoLTI0YTEyIDEyIDAgMCAwLTEyIDEydjIxNmExMiAxMiAwIDAgMCAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMTA0Yy01MyAwLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2IDk2LTQzIDk2LTk2LTQzLTk2LTk2LTk2em0wIDE0NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTAtMjQwQzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy00OS43IDAtOTUuMS0xOC4zLTEzMC4xLTQ4LjQgMTQuOS0yMyA0MC40LTM4LjYgNjkuNi0zOS41IDIwLjggNi40IDQwLjYgOS42IDYwLjUgOS42czM5LjctMy4xIDYwLjUtOS42YzI5LjIgMSA1NC43IDE2LjUgNjkuNiAzOS41LTM1IDMwLjEtODAuNCA0OC40LTEzMC4xIDQ4LjR6bTE2Mi43LTg0LjFjLTI0LjQtMzEuNC02Mi4xLTUxLjktMTA1LjEtNTEuOS0xMC4yIDAtMjYgOS42LTU3LjYgOS42LTMxLjUgMC00Ny40LTkuNi01Ny42LTkuNi00Mi45IDAtODAuNiAyMC41LTEwNS4xIDUxLjlDNjEuOSAzMzkuMiA0OCAyOTkuMiA0OCAyNTZjMC0xMTAuMyA4OS43LTIwMCAyMDAtMjAwczIwMCA4OS43IDIwMCAyMDBjMCA0My4yLTEzLjkgODMuMi0zNy4zIDExNS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy42IDMwNGMtMjguNyAwLTQyLjUgMTYtODkuNiAxNi00Ny4xIDAtNjAuOC0xNi04OS42LTE2QzYwLjIgMzA0IDAgMzY0LjIgMCA0MzguNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0yNS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40ek00MDAgNDY0SDQ4di0yNS42YzAtNDcuNiAzOC44LTg2LjQgODYuNC04Ni40IDE0LjYgMCAzOC4zIDE2IDg5LjYgMTYgNTEuNyAwIDc0LjktMTYgODkuNi0xNiA0Ny42IDAgODYuNCAzOC44IDg2LjQgODYuNFY0NjR6TTIyNCAyODhjNzkuNSAwIDE0NC02NC41IDE0NC0xNDRTMzAzLjUgMCAyMjQgMCA4MCA2NC41IDgwIDE0NHM2NC41IDE0NCAxNDQgMTQ0em0wLTI0MGM1Mi45IDAgOTYgNDMuMSA5NiA5NnMtNDMuMSA5Ni05NiA5Ni05Ni00My4xLTk2LTk2IDQzLjEtOTYgOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1dpbmRvd0Nsb3NlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bTAgMzk0YzAgMy4zLTIuNyA2LTYgNkg1NGMtMy4zIDAtNi0yLjctNi02Vjg2YzAtMy4zIDIuNy02IDYtNmg0MDRjMy4zIDAgNiAyLjcgNiA2djM0MHpNMzU2LjUgMTk0LjZMMjk1LjEgMjU2bDYxLjQgNjEuNGM0LjYgNC42IDQuNiAxMi4xIDAgMTYuOGwtMjIuMyAyMi4zYy00LjYgNC42LTEyLjEgNC42LTE2LjggMEwyNTYgMjk1LjFsLTYxLjQgNjEuNGMtNC42IDQuNi0xMi4xIDQuNi0xNi44IDBsLTIyLjMtMjIuM2MtNC42LTQuNi00LjYtMTIuMSAwLTE2LjhsNjEuNC02MS40LTYxLjQtNjEuNGMtNC42LTQuNi00LjYtMTIuMSAwLTE2LjhsMjIuMy0yMi4zYzQuNi00LjYgMTIuMS00LjYgMTYuOCAwbDYxLjQgNjEuNCA2MS40LTYxLjRjNC42LTQuNiAxMi4xLTQuNiAxNi44IDBsMjIuMyAyMi4zYzQuNyA0LjYgNC43IDEyLjEgMCAxNi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dNYXhpbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0wIDM5NGMwIDMuMy0yLjcgNi02IDZINTRjLTMuMyAwLTYtMi43LTYtNlYxOTJoNDE2djIzNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnV2luZG93TWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDQ4MEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1dpbmRvd1Jlc3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDBIMTQ0Yy0yNi41IDAtNDggMjEuNS00OCA0OHY0OEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MzIwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS05NiA0NjRINDhWMjU2aDMyMHYyMDh6bTk2LTk2aC00OFYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTQ0VjQ4aDMyMHYzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IEZhQmFycyB9IGZyb20gJ3JlYWN0LWljb25zL2ZhJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZU5hdmJhckNvbnRleHQgfSBmcm9tICcuL05hdmJhckNvbnRleHQubWpzJztcblxuY29uc3QgTmF2YmFyVG9nZ2xlID0gKHtcbiAgYmFySWNvbjogQmFySWNvbiA9IEZhQmFycyxcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBpc09wZW4sIHNldElzT3BlbiB9ID0gdXNlTmF2YmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUudG9nZ2xlLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIHNldElzT3BlbighaXNPcGVuKTtcbiAgfTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIFwiYnV0dG9uXCIsXG4gICAge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLW5hdmJhci10b2dnbGVcIixcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBcInNyLW9ubHlcIiwgY2hpbGRyZW46IFwiT3BlbiBtYWluIG1lbnVcIiB9KSxcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChCYXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pY29uIH0pXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgTmF2YmFyVG9nZ2xlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OYXZiYXJUb2dnbGUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBOYXZiYXJCcmFuZCB9IGZyb20gJy4vTmF2YmFyQnJhbmQubWpzJztcbmltcG9ydCB7IE5hdmJhckNvbGxhcHNlIH0gZnJvbSAnLi9OYXZiYXJDb2xsYXBzZS5tanMnO1xuaW1wb3J0IHsgTmF2YmFyQ29udGV4dCB9IGZyb20gJy4vTmF2YmFyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgTmF2YmFyTGluayB9IGZyb20gJy4vTmF2YmFyTGluay5tanMnO1xuaW1wb3J0IHsgTmF2YmFyVG9nZ2xlIH0gZnJvbSAnLi9OYXZiYXJUb2dnbGUubWpzJztcblxuY29uc3QgTmF2YmFyQ29tcG9uZW50ID0gKHtcbiAgYm9yZGVyLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBmbHVpZCA9IGZhbHNlLFxuICBtZW51T3BlbixcbiAgcm91bmRlZCxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShtZW51T3Blbik7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkubmF2YmFyLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KE5hdmJhckNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgdGhlbWUsIGlzT3Blbiwgc2V0SXNPcGVuIH0sIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwibmF2XCIsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICB0aGVtZS5yb290LmJhc2UsXG4gICAgICAgIHRoZW1lLnJvb3QuYm9yZGVyZWRbYm9yZGVyID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgIHRoZW1lLnJvb3Qucm91bmRlZFtyb3VuZGVkID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5pbm5lci5iYXNlLCB0aGVtZS5yb290LmlubmVyLmZsdWlkW2ZsdWlkID8gXCJvblwiIDogXCJvZmZcIl0pLCBjaGlsZHJlbiB9KVxuICAgIH1cbiAgKSB9KTtcbn07XG5OYXZiYXJDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIk5hdmJhclwiO1xuTmF2YmFyQnJhbmQuZGlzcGxheU5hbWUgPSBcIk5hdmJhci5CcmFuZFwiO1xuTmF2YmFyQ29sbGFwc2UuZGlzcGxheU5hbWUgPSBcIk5hdmJhci5Db2xsYXBzZVwiO1xuTmF2YmFyTGluay5kaXNwbGF5TmFtZSA9IFwiTmF2YmFyLkxpbmtcIjtcbk5hdmJhclRvZ2dsZS5kaXNwbGF5TmFtZSA9IFwiTmF2YmFyLlRvZ2dsZVwiO1xuY29uc3QgTmF2YmFyID0gT2JqZWN0LmFzc2lnbihOYXZiYXJDb21wb25lbnQsIHtcbiAgQnJhbmQ6IE5hdmJhckJyYW5kLFxuICBDb2xsYXBzZTogTmF2YmFyQ29sbGFwc2UsXG4gIExpbms6IE5hdmJhckxpbmssXG4gIFRvZ2dsZTogTmF2YmFyVG9nZ2xlXG59KTtcblxuZXhwb3J0IHsgTmF2YmFyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OYXZiYXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUlkLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IERyb3Bkb3duIH0gZnJvbSAnLi4vRHJvcGRvd24vRHJvcGRvd24ubWpzJztcbmltcG9ydCAnLi4vRHJvcGRvd24vRHJvcGRvd25Db250ZXh0Lm1qcyc7XG5pbXBvcnQgJy4uL0Ryb3Bkb3duL0Ryb3Bkb3duSXRlbS5tanMnO1xuXG5jb25zdCBNZWdhTWVudURyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHRvZ2dsZSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgW2xhYmVsbGVkQnksIHNldExhYmVsbGVkQnldID0gdXNlU3RhdGUodm9pZCAwKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5tZWdhTWVudS5kcm9wZG93biwgY3VzdG9tVGhlbWUpO1xuICBpZiAodG9nZ2xlKSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBEcm9wZG93bixcbiAgICAgIHtcbiAgICAgICAgaW5saW5lOiB0cnVlLFxuICAgICAgICBsYWJlbDogdG9nZ2xlLFxuICAgICAgICBwbGFjZW1lbnQ6IFwiYm90dG9tXCIsXG4gICAgICAgIHRoZW1lOiB0aGVtZS50b2dnbGUsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgICBjaGlsZHJlblxuICAgICAgfVxuICAgICk7XG4gIH1cbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmluZFRvZ2dsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgY29uc3QgbWVnYU1lbnUgPSByZWYuY3VycmVudD8uY2xvc2VzdChcIm5hdlwiKTtcbiAgICAgIHJldHVybiBtZWdhTWVudT8ucXVlcnlTZWxlY3RvcignW2FyaWEtaGFzcG9wdXA9XCJtZW51XCJdJyk7XG4gICAgfTtcbiAgICBzZXRMYWJlbGxlZEJ5KGZpbmRUb2dnbGUoKT8uaWQpO1xuICB9LCBbXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogbGFiZWxsZWRCeSxcbiAgICAgIGlkLFxuICAgICAgcmVmLFxuICAgICAgcm9sZTogXCJtZW51XCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICk7XG59O1xuTWVnYU1lbnVEcm9wZG93bi5kaXNwbGF5TmFtZSA9IFwiTWVnYU1lbnUuRHJvcGRvd25cIjtcblxuZXhwb3J0IHsgTWVnYU1lbnVEcm9wZG93biB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TWVnYU1lbnVEcm9wZG93bi5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VJZCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBNZWdhTWVudURyb3Bkb3duVG9nZ2xlID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBbY29udHJvbHMsIHNldENvbnRyb2xzXSA9IHVzZVN0YXRlKHZvaWQgMCk7XG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRFeHBhbmRlZF0gPSB1c2VTdGF0ZSh2b2lkIDApO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLm1lZ2FNZW51LmRyb3Bkb3duVG9nZ2xlLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IGZpbmREcm9wZG93biA9IGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IG1lZ2FNZW51ID0gcmVmLmN1cnJlbnQ/LmNsb3Nlc3QoXCJuYXZcIik7XG4gICAgcmV0dXJuIG1lZ2FNZW51Py5xdWVyeVNlbGVjdG9yKCdbcm9sZT1cIm1lbnVcIl0nKTtcbiAgfTtcbiAgY29uc3Qgb25DbGljayA9IGZ1bmN0aW9uKCkge1xuICAgIGZpbmREcm9wZG93bigpPy5jbGFzc0xpc3QudG9nZ2xlKFwiaGlkZGVuXCIpO1xuICAgIHNldEV4cGFuZGVkKCFpc0V4cGFuZGVkKTtcbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBkcm9wZG93biA9IGZpbmREcm9wZG93bigpO1xuICAgIGNvbnN0IGlzRHJvcGRvd25IaWRkZW4gPSBkcm9wZG93bj8uY2xhc3NMaXN0LmNvbnRhaW5zKFwiaGlkZGVuXCIpO1xuICAgIHNldENvbnRyb2xzKGRyb3Bkb3duPy5pZCk7XG4gICAgc2V0RXhwYW5kZWQoIWlzRHJvcGRvd25IaWRkZW4pO1xuICB9LCBbXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiYnV0dG9uXCIsXG4gICAge1xuICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGNvbnRyb2xzLFxuICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGlzRXhwYW5kZWQsXG4gICAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJtZW51XCIsXG4gICAgICBpZCxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICByZWYsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICk7XG59O1xuTWVnYU1lbnVEcm9wZG93blRvZ2dsZS5kaXNwbGF5TmFtZSA9IFwiTWVnYU1lbnUuRHJvcGRvd25Ub2dnbGVcIjtcblxuZXhwb3J0IHsgTWVnYU1lbnVEcm9wZG93blRvZ2dsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TWVnYU1lbnVEcm9wZG93blRvZ2dsZS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IE5hdmJhciB9IGZyb20gJy4uL05hdmJhci9OYXZiYXIubWpzJztcbmltcG9ydCAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0ICcuLi9OYXZiYXIvTmF2YmFyQ29udGV4dC5tanMnO1xuaW1wb3J0ICdyZWFjdC1pY29ucy9mYSc7XG5pbXBvcnQgeyBNZWdhTWVudURyb3Bkb3duIH0gZnJvbSAnLi9NZWdhTWVudURyb3Bkb3duLm1qcyc7XG5pbXBvcnQgeyBNZWdhTWVudURyb3Bkb3duVG9nZ2xlIH0gZnJvbSAnLi9NZWdhTWVudURyb3Bkb3duVG9nZ2xlLm1qcyc7XG5cbmNvbnN0IE1lZ2FNZW51Q29tcG9uZW50ID0gKHsgY2hpbGRyZW4sIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkubWVnYU1lbnUsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goTmF2YmFyLCB7IGZsdWlkOiB0cnVlLCB0aGVtZSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbmNvbnN0IE1lZ2FNZW51ID0gT2JqZWN0LmFzc2lnbihNZWdhTWVudUNvbXBvbmVudCwge1xuICBEcm9wZG93bjogTWVnYU1lbnVEcm9wZG93bixcbiAgRHJvcGRvd25Ub2dnbGU6IE1lZ2FNZW51RHJvcGRvd25Ub2dnbGVcbn0pO1xuTWVnYU1lbnVDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIk1lZ2FNZW51XCI7XG5cbmV4cG9ydCB7IE1lZ2FNZW51IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NZWdhTWVudS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBNb2RhbENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VNb2RhbENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE1vZGFsQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZU1vZGFsQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIE1vZGFsQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IE1vZGFsQ29udGV4dCwgdXNlTW9kYWxDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Nb2RhbENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlTW9kYWxDb250ZXh0IH0gZnJvbSAnLi9Nb2RhbENvbnRleHQubWpzJztcblxuY29uc3QgTW9kYWxCb2R5ID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBwb3B1cCB9ID0gdXNlTW9kYWxDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5ib2R5LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIHBvcHVwICYmIFt0aGVtZS5wb3B1cF0sIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbn07XG5cbmV4cG9ydCB7IE1vZGFsQm9keSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TW9kYWxCb2R5Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZU1vZGFsQ29udGV4dCB9IGZyb20gJy4vTW9kYWxDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IE1vZGFsRm9vdGVyID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBwb3B1cCB9ID0gdXNlTW9kYWxDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5mb290ZXIsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgIXBvcHVwICYmIHRoZW1lLnBvcHVwLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuXG5leHBvcnQgeyBNb2RhbEZvb3RlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TW9kYWxGb290ZXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlSWQsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEhpT3V0bGluZVggfSBmcm9tICdyZWFjdC1pY29ucy9oaSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VNb2RhbENvbnRleHQgfSBmcm9tICcuL01vZGFsQ29udGV4dC5tanMnO1xuXG5jb25zdCBNb2RhbEhlYWRlciA9ICh7XG4gIGFzOiBDb21wb25lbnQgPSBcImgzXCIsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBpZCxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgaW5uZXJIZWFkZXJJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IGhlYWRlcklkID0gaWQgfHwgaW5uZXJIZWFkZXJJZDtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBwb3B1cCwgb25DbG9zZSwgc2V0SGVhZGVySWQgfSA9IHVzZU1vZGFsQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuaGVhZGVyLCBjdXN0b21UaGVtZSk7XG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SGVhZGVySWQoaGVhZGVySWQpO1xuICAgIHJldHVybiAoKSA9PiBzZXRIZWFkZXJJZCh2b2lkIDApO1xuICB9LCBbaGVhZGVySWQsIHNldEhlYWRlcklkXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBwb3B1cCAmJiB0aGVtZS5wb3B1cCwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiBbXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChDb21wb25lbnQsIHsgaWQ6IGhlYWRlcklkLCBjbGFzc05hbWU6IHRoZW1lLnRpdGxlLCBjaGlsZHJlbiB9KSxcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiYnV0dG9uXCIsIHsgXCJhcmlhLWxhYmVsXCI6IFwiQ2xvc2VcIiwgY2xhc3NOYW1lOiB0aGVtZS5jbG9zZS5iYXNlLCB0eXBlOiBcImJ1dHRvblwiLCBvbkNsaWNrOiBvbkNsb3NlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChIaU91dGxpbmVYLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5jbG9zZS5pY29uIH0pIH0pXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBNb2RhbEhlYWRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TW9kYWxIZWFkZXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlRmxvYXRpbmcsIHVzZU1lcmdlUmVmcywgdXNlQ2xpY2ssIHVzZURpc21pc3MsIHVzZVJvbGUsIHVzZUludGVyYWN0aW9ucywgRmxvYXRpbmdQb3J0YWwsIEZsb2F0aW5nT3ZlcmxheSwgRmxvYXRpbmdGb2N1c01hbmFnZXIgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBNb2RhbEJvZHkgfSBmcm9tICcuL01vZGFsQm9keS5tanMnO1xuaW1wb3J0IHsgTW9kYWxDb250ZXh0IH0gZnJvbSAnLi9Nb2RhbENvbnRleHQubWpzJztcbmltcG9ydCB7IE1vZGFsRm9vdGVyIH0gZnJvbSAnLi9Nb2RhbEZvb3Rlci5tanMnO1xuaW1wb3J0IHsgTW9kYWxIZWFkZXIgfSBmcm9tICcuL01vZGFsSGVhZGVyLm1qcyc7XG5cbmNvbnN0IE1vZGFsQ29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKHtcbiAgICBjaGlsZHJlbixcbiAgICBjbGFzc05hbWUsXG4gICAgZGlzbWlzc2libGUgPSBmYWxzZSxcbiAgICBvbkNsb3NlLFxuICAgIHBvcHVwLFxuICAgIHBvc2l0aW9uID0gXCJjZW50ZXJcIixcbiAgICByb290LFxuICAgIHNob3csXG4gICAgc2l6ZSA9IFwiMnhsXCIsXG4gICAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gICAgaW5pdGlhbEZvY3VzLFxuICAgIC4uLnByb3BzXG4gIH0sIHRoZWlyUmVmKSA9PiB7XG4gICAgY29uc3QgW2hlYWRlcklkLCBzZXRIZWFkZXJJZF0gPSB1c2VTdGF0ZSh2b2lkIDApO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkubW9kYWwsIGN1c3RvbVRoZW1lKTtcbiAgICBjb25zdCB7IGNvbnRleHQgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICAgIG9wZW46IHNob3csXG4gICAgICBvbk9wZW5DaGFuZ2U6ICgpID0+IG9uQ2xvc2UgJiYgb25DbG9zZSgpXG4gICAgfSk7XG4gICAgY29uc3QgcmVmID0gdXNlTWVyZ2VSZWZzKFtjb250ZXh0LnJlZnMuc2V0RmxvYXRpbmcsIHRoZWlyUmVmXSk7XG4gICAgY29uc3QgY2xpY2sgPSB1c2VDbGljayhjb250ZXh0KTtcbiAgICBjb25zdCBkaXNtaXNzID0gdXNlRGlzbWlzcyhjb250ZXh0LCB7IG91dHNpZGVQcmVzc0V2ZW50OiBcIm1vdXNlZG93blwiLCBlbmFibGVkOiBkaXNtaXNzaWJsZSB9KTtcbiAgICBjb25zdCByb2xlID0gdXNlUm9sZShjb250ZXh0KTtcbiAgICBjb25zdCB7IGdldEZsb2F0aW5nUHJvcHMgfSA9IHVzZUludGVyYWN0aW9ucyhbY2xpY2ssIGRpc21pc3MsIHJvbGVdKTtcbiAgICBpZiAoIXNob3cpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChNb2RhbENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgdGhlbWUsIHBvcHVwLCBvbkNsb3NlLCBzZXRIZWFkZXJJZCB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChGbG9hdGluZ1BvcnRhbCwgeyByb290LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIEZsb2F0aW5nT3ZlcmxheSxcbiAgICAgIHtcbiAgICAgICAgbG9ja1Njcm9sbDogdHJ1ZSxcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcIm1vZGFsLW92ZXJsYXlcIixcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgIHRoZW1lLnJvb3QuYmFzZSxcbiAgICAgICAgICB0aGVtZS5yb290LnBvc2l0aW9uc1twb3NpdGlvbl0sXG4gICAgICAgICAgc2hvdyA/IHRoZW1lLnJvb3Quc2hvdy5vbiA6IHRoZW1lLnJvb3Quc2hvdy5vZmYsXG4gICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgICksXG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChGbG9hdGluZ0ZvY3VzTWFuYWdlciwgeyBjb250ZXh0LCBpbml0aWFsRm9jdXMsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgLi4uZ2V0RmxvYXRpbmdQcm9wcyhwcm9wcyksXG4gICAgICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBoZWFkZXJJZCxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5jb250ZW50LmJhc2UsIHRoZW1lLnJvb3Quc2l6ZXNbc2l6ZV0pLFxuICAgICAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbnRlbnQuaW5uZXIsIGNoaWxkcmVuIH0pXG4gICAgICAgICAgfVxuICAgICAgICApIH0pXG4gICAgICB9XG4gICAgKSB9KSB9KTtcbiAgfVxuKTtcbk1vZGFsQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJNb2RhbFwiO1xuTW9kYWxIZWFkZXIuZGlzcGxheU5hbWUgPSBcIk1vZGFsLkhlYWRlclwiO1xuTW9kYWxCb2R5LmRpc3BsYXlOYW1lID0gXCJNb2RhbC5Cb2R5XCI7XG5Nb2RhbEZvb3Rlci5kaXNwbGF5TmFtZSA9IFwiTW9kYWwuRm9vdGVyXCI7XG5jb25zdCBNb2RhbCA9IE9iamVjdC5hc3NpZ24oTW9kYWxDb21wb25lbnQsIHtcbiAgSGVhZGVyOiBNb2RhbEhlYWRlcixcbiAgQm9keTogTW9kYWxCb2R5LFxuICBGb290ZXI6IE1vZGFsRm9vdGVyXG59KTtcblxuZXhwb3J0IHsgTW9kYWwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vZGFsLm1qcy5tYXBcbiIsImNvbnN0IHJhbmdlID0gKHN0YXJ0LCBlbmQpID0+IHtcbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICByZXR1cm4gWy4uLkFycmF5KGVuZCAtIHN0YXJ0ICsgMSkua2V5cygpXS5tYXAoKGtleSkgPT4ga2V5ICsgc3RhcnQpO1xufTtcblxuZXhwb3J0IHsgcmFuZ2UgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhlbHBlcnMubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBQYWdpbmF0aW9uQnV0dG9uID0gKHtcbiAgYWN0aXZlLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBvbkNsaWNrLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5wYWdpbmF0aW9uLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiYnV0dG9uXCIsXG4gICAge1xuICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShhY3RpdmUgJiYgdGhlbWUucGFnZXMuc2VsZWN0b3IuYWN0aXZlLCBjbGFzc05hbWUpLFxuICAgICAgb25DbGljayxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICk7XG59O1xuUGFnaW5hdGlvbkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiUGFnaW5hdGlvbi5CdXR0b25cIjtcbmNvbnN0IFBhZ2luYXRpb25OYXZpZ2F0aW9uID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgb25DbGljayxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucGFnaW5hdGlvbiwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoZGlzYWJsZWQgJiYgdGhlbWUucGFnZXMuc2VsZWN0b3IuZGlzYWJsZWQsIGNsYXNzTmFtZSksXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcblBhZ2luYXRpb25OYXZpZ2F0aW9uLmRpc3BsYXlOYW1lID0gXCJQYWdpbmF0aW9uLk5hdmlnYXRpb25cIjtcblxuZXhwb3J0IHsgUGFnaW5hdGlvbkJ1dHRvbiwgUGFnaW5hdGlvbk5hdmlnYXRpb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhZ2luYXRpb25CdXR0b24ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgSGlDaGV2cm9uTGVmdCwgSGlDaGV2cm9uUmlnaHQgfSBmcm9tICdyZWFjdC1pY29ucy9oaSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyByYW5nZSB9IGZyb20gJy4vaGVscGVycy5tanMnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkJ1dHRvbiwgUGFnaW5hdGlvbk5hdmlnYXRpb24gfSBmcm9tICcuL1BhZ2luYXRpb25CdXR0b24ubWpzJztcblxuY29uc3QgUGFnaW5hdGlvbkNvbXBvbmVudCA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgY3VycmVudFBhZ2UsXG4gIGxheW91dCA9IFwicGFnaW5hdGlvblwiLFxuICBuZXh0TGFiZWwgPSBcIk5leHRcIixcbiAgb25QYWdlQ2hhbmdlLFxuICBwcmV2aW91c0xhYmVsID0gXCJQcmV2aW91c1wiLFxuICByZW5kZXJQYWdpbmF0aW9uQnV0dG9uID0gKHByb3BzMikgPT4gLyogQF9fUFVSRV9fICovIGpzeChQYWdpbmF0aW9uQnV0dG9uLCB7IC4uLnByb3BzMiB9KSxcbiAgc2hvd0ljb25zOiBzaG93SWNvbiA9IGZhbHNlLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgdG90YWxQYWdlcyxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5wYWdpbmF0aW9uLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IGxhc3RQYWdlID0gTWF0aC5taW4oTWF0aC5tYXgobGF5b3V0ID09PSBcInBhZ2luYXRpb25cIiA/IGN1cnJlbnRQYWdlICsgMiA6IGN1cnJlbnRQYWdlICsgNCwgNSksIHRvdGFsUGFnZXMpO1xuICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLm1heCgxLCBsYXN0UGFnZSAtIDQpO1xuICBjb25zdCBnb1RvTmV4dFBhZ2UgPSAoKSA9PiB7XG4gICAgb25QYWdlQ2hhbmdlKE1hdGgubWluKGN1cnJlbnRQYWdlICsgMSwgdG90YWxQYWdlcykpO1xuICB9O1xuICBjb25zdCBnb1RvUHJldmlvdXNQYWdlID0gKCkgPT4ge1xuICAgIG9uUGFnZUNoYW5nZShNYXRoLm1heChjdXJyZW50UGFnZSAtIDEsIDEpKTtcbiAgfTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwibmF2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIGxheW91dCA9PT0gXCJ0YWJsZVwiICYmIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5sYXlvdXQudGFibGUuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgIFwiU2hvd2luZyBcIixcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5sYXlvdXQudGFibGUuc3BhbiwgY2hpbGRyZW46IGZpcnN0UGFnZSB9KSxcbiAgICAgIFwiIHRvXFx4QTBcIixcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5sYXlvdXQudGFibGUuc3BhbiwgY2hpbGRyZW46IGxhc3RQYWdlIH0pLFxuICAgICAgXCIgb2ZcXHhBMFwiLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxheW91dC50YWJsZS5zcGFuLCBjaGlsZHJlbjogdG90YWxQYWdlcyB9KSxcbiAgICAgIFwiIEVudHJpZXNcIlxuICAgIF0gfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJ1bFwiLCB7IGNsYXNzTmFtZTogdGhlbWUucGFnZXMuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJsaVwiLCB7IGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgICAgUGFnaW5hdGlvbk5hdmlnYXRpb24sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucGFnZXMucHJldmlvdXMuYmFzZSwgc2hvd0ljb24gJiYgdGhlbWUucGFnZXMuc2hvd0ljb24pLFxuICAgICAgICAgIG9uQ2xpY2s6IGdvVG9QcmV2aW91c1BhZ2UsXG4gICAgICAgICAgZGlzYWJsZWQ6IGN1cnJlbnRQYWdlID09PSAxLFxuICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICBzaG93SWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEhpQ2hldnJvbkxlZnQsIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLnBhZ2VzLnByZXZpb3VzLmljb24gfSksXG4gICAgICAgICAgICBwcmV2aW91c0xhYmVsXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApIH0pLFxuICAgICAgbGF5b3V0ID09PSBcInBhZ2luYXRpb25cIiAmJiByYW5nZShmaXJzdFBhZ2UsIGxhc3RQYWdlKS5tYXAoKHBhZ2UpID0+IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJsaVwiLCB7IFwiYXJpYS1jdXJyZW50XCI6IHBhZ2UgPT09IGN1cnJlbnRQYWdlID8gXCJwYWdlXCIgOiB2b2lkIDAsIGNoaWxkcmVuOiByZW5kZXJQYWdpbmF0aW9uQnV0dG9uKHtcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnBhZ2VzLnNlbGVjdG9yLmJhc2UsIGN1cnJlbnRQYWdlID09PSBwYWdlICYmIHRoZW1lLnBhZ2VzLnNlbGVjdG9yLmFjdGl2ZSksXG4gICAgICAgIGFjdGl2ZTogcGFnZSA9PT0gY3VycmVudFBhZ2UsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IG9uUGFnZUNoYW5nZShwYWdlKSxcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VcbiAgICAgIH0pIH0sIHBhZ2UpKSxcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJsaVwiLCB7IGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgICAgUGFnaW5hdGlvbk5hdmlnYXRpb24sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucGFnZXMubmV4dC5iYXNlLCBzaG93SWNvbiAmJiB0aGVtZS5wYWdlcy5zaG93SWNvbiksXG4gICAgICAgICAgb25DbGljazogZ29Ub05leHRQYWdlLFxuICAgICAgICAgIGRpc2FibGVkOiBjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlcyxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgbmV4dExhYmVsLFxuICAgICAgICAgICAgc2hvd0ljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChIaUNoZXZyb25SaWdodCwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUucGFnZXMubmV4dC5pY29uIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApIH0pXG4gICAgXSB9KVxuICBdIH0pO1xufTtcblBhZ2luYXRpb25Db21wb25lbnQuZGlzcGxheU5hbWUgPSBcIlBhZ2luYXRpb25cIjtcbmNvbnN0IFBhZ2luYXRpb24gPSBPYmplY3QuYXNzaWduKFBhZ2luYXRpb25Db21wb25lbnQsIHtcbiAgQnV0dG9uOiBQYWdpbmF0aW9uQnV0dG9uXG59KTtcblxuZXhwb3J0IHsgUGFnaW5hdGlvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGFnaW5hdGlvbi5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBSYWRpbyA9IGZvcndhcmRSZWYoXG4gICh7IGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucmFkaW8sIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImlucHV0XCIsIHsgcmVmLCB0eXBlOiBcInJhZGlvXCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzIH0pO1xuICB9XG4pO1xuUmFkaW8uZGlzcGxheU5hbWUgPSBcIlJhZGlvXCI7XG5cbmV4cG9ydCB7IFJhZGlvIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SYWRpby5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3gsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgUmFuZ2VTbGlkZXIgPSBmb3J3YXJkUmVmKFxuICAoeyBjbGFzc05hbWUsIHNpemluZyA9IFwibWRcIiwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucmFuZ2VTbGlkZXIsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChGcmFnbWVudCwgeyBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1yYW5nZS1zbGlkZXJcIiwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmJhc2UsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJpbnB1dFwiLFxuICAgICAge1xuICAgICAgICByZWYsXG4gICAgICAgIHR5cGU6IFwicmFuZ2VcIixcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmZpZWxkLmlucHV0LmJhc2UsIHRoZW1lLmZpZWxkLmlucHV0LnNpemVzW3NpemluZ10pLFxuICAgICAgICAuLi5wcm9wc1xuICAgICAgfVxuICAgICkgfSkgfSkgfSk7XG4gIH1cbik7XG5SYW5nZVNsaWRlci5kaXNwbGF5TmFtZSA9IFwiUmFuZ2VTbGlkZXJcIjtcblxuZXhwb3J0IHsgUmFuZ2VTbGlkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhbmdlU2xpZGVyLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgUmF0aW5nQWR2YW5jZWQgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBwZXJjZW50RmlsbGVkID0gMCxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucmF0aW5nQWR2YW5jZWQsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5sYWJlbCwgY2hpbGRyZW4gfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucHJvZ3Jlc3MuYmFzZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImRpdlwiLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IHRoZW1lLnByb2dyZXNzLmZpbGwsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1yYXRpbmctZmlsbFwiLFxuICAgICAgICBzdHlsZTogeyB3aWR0aDogYCR7cGVyY2VudEZpbGxlZH0lYCB9XG4gICAgICB9XG4gICAgKSB9KSxcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUucHJvZ3Jlc3MubGFiZWwsIGNoaWxkcmVuOiBgJHtwZXJjZW50RmlsbGVkfSVgIH0pXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBSYXRpbmdBZHZhbmNlZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmF0aW5nQWR2YW5jZWQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgUmF0aW5nQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZVJhdGluZ0NvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFJhdGluZ0NvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VSYXRpbmdDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgUmF0aW5nQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFJhdGluZ0NvbnRleHQsIHVzZVJhdGluZ0NvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhdGluZ0NvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgSGlTdGFyIH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlUmF0aW5nQ29udGV4dCB9IGZyb20gJy4vUmF0aW5nQ29udGV4dC5tanMnO1xuXG5jb25zdCBSYXRpbmdTdGFyID0gKHtcbiAgY2xhc3NOYW1lLFxuICBmaWxsZWQgPSB0cnVlLFxuICBzdGFySWNvbjogSWNvbiA9IEhpU3RhcixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgc2l6ZSA9IFwic21cIiB9ID0gdXNlUmF0aW5nQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuc3RhciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBJY29uLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1yYXRpbmctc3RhclwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnNpemVzW3NpemVdLCB0aGVtZVtmaWxsZWQgPyBcImZpbGxlZFwiIDogXCJlbXB0eVwiXSwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgUmF0aW5nU3RhciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmF0aW5nU3Rhci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBSYXRpbmdBZHZhbmNlZCB9IGZyb20gJy4vUmF0aW5nQWR2YW5jZWQubWpzJztcbmltcG9ydCB7IFJhdGluZ0NvbnRleHQgfSBmcm9tICcuL1JhdGluZ0NvbnRleHQubWpzJztcbmltcG9ydCB7IFJhdGluZ1N0YXIgfSBmcm9tICcuL1JhdGluZ1N0YXIubWpzJztcblxuY29uc3QgUmF0aW5nQ29tcG9uZW50ID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgc2l6ZSA9IFwic21cIiwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5yYXRpbmcsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goUmF0aW5nQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgc2l6ZSB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbiB9KSB9KTtcbn07XG5SYXRpbmdDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIlJhdGluZ1wiO1xuUmF0aW5nU3Rhci5kaXNwbGF5TmFtZSA9IFwiUmF0aW5nLlN0YXJcIjtcblJhdGluZ0FkdmFuY2VkLmRpc3BsYXlOYW1lID0gXCJSYXRpbmcuQWR2YW5jZWRcIjtcbmNvbnN0IFJhdGluZyA9IE9iamVjdC5hc3NpZ24oUmF0aW5nQ29tcG9uZW50LCB7XG4gIFN0YXI6IFJhdGluZ1N0YXIsXG4gIEFkdmFuY2VkOiBSYXRpbmdBZHZhbmNlZFxufSk7XG5cbmV4cG9ydCB7IFJhdGluZyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmF0aW5nLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBIZWxwZXJUZXh0IH0gZnJvbSAnLi4vSGVscGVyVGV4dC9IZWxwZXJUZXh0Lm1qcyc7XG5cbmNvbnN0IFNlbGVjdCA9IGZvcndhcmRSZWYoXG4gICh7XG4gICAgYWRkb24sXG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIGNvbG9yID0gXCJncmF5XCIsXG4gICAgaGVscGVyVGV4dCxcbiAgICBpY29uOiBJY29uLFxuICAgIHNoYWRvdyxcbiAgICBzaXppbmcgPSBcIm1kXCIsXG4gICAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gICAgLi4ucHJvcHNcbiAgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5zZWxlY3QsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IFtcbiAgICAgIGFkZG9uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5hZGRvbiwgY2hpbGRyZW46IGFkZG9uIH0pLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAgIEljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuZmllbGQuaWNvbi5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IGNsYXNzTmFtZTogdGhlbWUuZmllbGQuaWNvbi5zdmcgfSkgfSksXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgXCJzZWxlY3RcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgIHRoZW1lLmZpZWxkLnNlbGVjdC5iYXNlLFxuICAgICAgICAgICAgICB0aGVtZS5maWVsZC5zZWxlY3QuY29sb3JzW2NvbG9yXSxcbiAgICAgICAgICAgICAgdGhlbWUuZmllbGQuc2VsZWN0LnNpemVzW3NpemluZ10sXG4gICAgICAgICAgICAgIHRoZW1lLmZpZWxkLnNlbGVjdC53aXRoSWNvbltJY29uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgIHRoZW1lLmZpZWxkLnNlbGVjdC53aXRoQWRkb25bYWRkb24gPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICAgICAgdGhlbWUuZmllbGQuc2VsZWN0LndpdGhTaGFkb3dbc2hhZG93ID8gXCJvblwiIDogXCJvZmZcIl1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICBoZWxwZXJUZXh0ICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSGVscGVyVGV4dCwgeyBjb2xvciwgY2hpbGRyZW46IGhlbHBlclRleHQgfSlcbiAgICAgIF0gfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuU2VsZWN0LmRpc3BsYXlOYW1lID0gXCJTZWxlY3RcIjtcblxuZXhwb3J0IHsgU2VsZWN0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TZWxlY3QubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgU2lkZWJhckNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VTaWRlYmFyQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoU2lkZWJhckNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VTaWRlYmFyQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFNpZGViYXJDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgU2lkZWJhckNvbnRleHQsIHVzZVNpZGViYXJDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaWRlYmFyQ29udGV4dC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBTaWRlYmFySXRlbUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VTaWRlYmFySXRlbUNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFNpZGViYXJJdGVtQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVNpZGViYXJJdGVtQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFNpZGViYXJJdGVtQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFNpZGViYXJJdGVtQ29udGV4dCwgdXNlU2lkZWJhckl0ZW1Db250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaWRlYmFySXRlbUNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4cywganN4LCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUlkLCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSGlDaGV2cm9uRG93biB9IGZyb20gJ3JlYWN0LWljb25zL2hpJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICcuLi9Ub29sdGlwL1Rvb2x0aXAubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckl0ZW1Db250ZXh0IH0gZnJvbSAnLi9TaWRlYmFySXRlbUNvbnRleHQubWpzJztcblxuY29uc3QgU2lkZWJhckNvbGxhcHNlID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgaWNvbjogSWNvbixcbiAgbGFiZWwsXG4gIGNoZXZyb25JY29uOiBDaGV2cm9uSWNvbiA9IEhpQ2hldnJvbkRvd24sXG4gIHJlbmRlckNoZXZyb25JY29uLFxuICBvcGVuID0gZmFsc2UsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBpZCA9IHVzZUlkKCk7XG4gIGNvbnN0IFtpc09wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUob3Blbik7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaXNDb2xsYXBzZWQgfSA9IHVzZVNpZGViYXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5jb2xsYXBzZSwgY3VzdG9tVGhlbWUpO1xuICB1c2VFZmZlY3QoKCkgPT4gc2V0T3BlbihvcGVuKSwgW29wZW5dKTtcbiAgY29uc3QgV3JhcHBlciA9ICh7IGNoaWxkcmVuOiBjaGlsZHJlbjIgfSkgPT4gLyogQF9fUFVSRV9fICovIGpzeChcImxpXCIsIHsgY2hpbGRyZW46IGlzQ29sbGFwc2VkICYmICFpc09wZW4gPyAvKiBAX19QVVJFX18gKi8ganN4KFRvb2x0aXAsIHsgY29udGVudDogbGFiZWwsIHBsYWNlbWVudDogXCJyaWdodFwiLCBjaGlsZHJlbjogY2hpbGRyZW4yIH0pIDogY2hpbGRyZW4yIH0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoV3JhcHBlciwgeyBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgXCJidXR0b25cIixcbiAgICAgIHtcbiAgICAgICAgaWQ6IGBmbG93Yml0ZS1zaWRlYmFyLWNvbGxhcHNlLSR7aWR9YCxcbiAgICAgICAgb25DbGljazogKCkgPT4gc2V0T3BlbighaXNPcGVuKSxcbiAgICAgICAgdGl0bGU6IGxhYmVsLFxuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYnV0dG9uLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICBJY29uLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1zaWRlYmFyLWNvbGxhcHNlLWljb25cIixcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmljb24uYmFzZSwgdGhlbWUuaWNvbi5vcGVuW2lzT3BlbiA/IFwib25cIiA6IFwib2ZmXCJdKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICksXG4gICAgICAgICAgaXNDb2xsYXBzZWQgPyAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJzci1vbmx5XCIsIGNoaWxkcmVuOiBsYWJlbCB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3hzKEZyYWdtZW50LCB7IGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1zaWRlYmFyLWNvbGxhcHNlLWxhYmVsXCIsIGNsYXNzTmFtZTogdGhlbWUubGFiZWwuYmFzZSwgY2hpbGRyZW46IGxhYmVsIH0pLFxuICAgICAgICAgICAgcmVuZGVyQ2hldnJvbkljb24gPyByZW5kZXJDaGV2cm9uSWNvbih0aGVtZSwgaXNPcGVuKSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICAgIENoZXZyb25JY29uLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5sYWJlbC5pY29uLmJhc2UsIHRoZW1lLmxhYmVsLmljb24ub3Blbltpc09wZW4gPyBcIm9uXCIgOiBcIm9mZlwiXSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0gfSlcbiAgICAgICAgXVxuICAgICAgfVxuICAgICksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcInVsXCIsIHsgXCJhcmlhLWxhYmVsbGVkYnlcIjogYGZsb3diaXRlLXNpZGViYXItY29sbGFwc2UtJHtpZH1gLCBoaWRkZW46ICFpc09wZW4sIGNsYXNzTmFtZTogdGhlbWUubGlzdCwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goU2lkZWJhckl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IGlzSW5zaWRlQ29sbGFwc2U6IHRydWUgfSwgY2hpbGRyZW4gfSkgfSlcbiAgXSB9KTtcbn07XG5TaWRlYmFyQ29sbGFwc2UuZGlzcGxheU5hbWUgPSBcIlNpZGViYXIuQ29sbGFwc2VcIjtcblxuZXhwb3J0IHsgU2lkZWJhckNvbGxhcHNlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaWRlYmFyQ29sbGFwc2UubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlU2lkZWJhckNvbnRleHQgfSBmcm9tICcuL1NpZGViYXJDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFNpZGViYXJDVEEgPSAoe1xuICBjaGlsZHJlbixcbiAgY29sb3IgPSBcImluZm9cIixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBpc0NvbGxhcHNlZCB9ID0gdXNlU2lkZWJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmN0YSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJzaWRlYmFyLWN0YVwiLFxuICAgICAgaGlkZGVuOiBpc0NvbGxhcHNlZCxcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCB0aGVtZS5jb2xvcltjb2xvcl0sIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcblNpZGViYXJDVEEuZGlzcGxheU5hbWUgPSBcIlNpZGViYXIuQ1RBXCI7XG5cbmV4cG9ydCB7IFNpZGViYXJDVEEgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNpZGViYXJDVEEubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlSWQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gJy4uL0JhZGdlL0JhZGdlLm1qcyc7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnLi4vVG9vbHRpcC9Ub29sdGlwLm1qcyc7XG5pbXBvcnQgeyB1c2VTaWRlYmFyQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckNvbnRleHQubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJJdGVtQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckl0ZW1Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IExpc3RJdGVtID0gKHsgaWQsIHRoZW1lLCBpc0NvbGxhcHNlZCwgdG9vbHRpcENoaWxkcmVuLCBjaGlsZHJlbjogd3JhcHBlckNoaWxkcmVuLCAuLi5wcm9wcyB9KSA9PiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyAuLi5wcm9wcywgY2hpbGRyZW46IGlzQ29sbGFwc2VkID8gLyogQF9fUFVSRV9fICovIGpzeChcbiAgVG9vbHRpcCxcbiAge1xuICAgIGNvbnRlbnQ6IC8qIEBfX1BVUkVfXyAqLyBqc3goQ2hpbGRyZW4sIHsgaWQsIHRoZW1lLCBjaGlsZHJlbjogdG9vbHRpcENoaWxkcmVuIH0pLFxuICAgIHBsYWNlbWVudDogXCJyaWdodFwiLFxuICAgIGNoaWxkcmVuOiB3cmFwcGVyQ2hpbGRyZW5cbiAgfVxuKSA6IHdyYXBwZXJDaGlsZHJlbiB9KTtcbmNvbnN0IENoaWxkcmVuID0gKHsgaWQsIHRoZW1lLCBjaGlsZHJlbiB9KSA9PiB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwic3BhblwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1zaWRlYmFyLWl0ZW0tY29udGVudFwiLFxuICAgICAgaWQ6IGBmbG93Yml0ZS1zaWRlYmFyLWl0ZW0tJHtpZH1gLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmNvbnRlbnQuYmFzZSksXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5jb25zdCBTaWRlYmFySXRlbSA9IGZvcndhcmRSZWYoXG4gICh7XG4gICAgYWN0aXZlOiBpc0FjdGl2ZSxcbiAgICBhczogQ29tcG9uZW50ID0gXCJhXCIsXG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIGljb246IEljb24sXG4gICAgbGFiZWwsXG4gICAgbGFiZWxDb2xvciA9IFwiaW5mb1wiLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGlzQ29sbGFwc2VkIH0gPSB1c2VTaWRlYmFyQ29udGV4dCgpO1xuICAgIGNvbnN0IHsgaXNJbnNpZGVDb2xsYXBzZSB9ID0gdXNlU2lkZWJhckl0ZW1Db250ZXh0KCk7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLml0ZW0sIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChMaXN0SXRlbSwgeyB0aGVtZSwgY2xhc3NOYW1lOiB0aGVtZS5saXN0SXRlbSwgaWQsIGlzQ29sbGFwc2VkLCB0b29sdGlwQ2hpbGRyZW46IGNoaWxkcmVuLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICBDb21wb25lbnQsXG4gICAgICB7XG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGBmbG93Yml0ZS1zaWRlYmFyLWl0ZW0tJHtpZH1gLFxuICAgICAgICByZWYsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICB0aGVtZS5iYXNlLFxuICAgICAgICAgIGlzQWN0aXZlICYmIHRoZW1lLmFjdGl2ZSxcbiAgICAgICAgICAhaXNDb2xsYXBzZWQgJiYgaXNJbnNpZGVDb2xsYXBzZSAmJiB0aGVtZS5jb2xsYXBzZWQ/Lmluc2lkZUNvbGxhcHNlLFxuICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICApLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICBJY29uLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1zaWRlYmFyLWl0ZW0taWNvblwiLFxuICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuaWNvbj8uYmFzZSwgaXNBY3RpdmUgJiYgdGhlbWUuaWNvbj8uYWN0aXZlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICksXG4gICAgICAgICAgaXNDb2xsYXBzZWQgJiYgIUljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbGxhcHNlZD8ubm9JY29uLCBjaGlsZHJlbjogY2hpbGRyZW4uY2hhckF0KDApLnRvTG9jYWxlVXBwZXJDYXNlKCkgPz8gXCI/XCIgfSksXG4gICAgICAgICAgIWlzQ29sbGFwc2VkICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goQ2hpbGRyZW4sIHsgaWQsIHRoZW1lLCBjaGlsZHJlbiB9KSxcbiAgICAgICAgICAhaXNDb2xsYXBzZWQgJiYgbGFiZWwgJiYgLyogQF9fUFVSRV9fICovIGpzeChCYWRnZSwgeyBjb2xvcjogbGFiZWxDb2xvciwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXNpZGViYXItbGFiZWxcIiwgaGlkZGVuOiBpc0NvbGxhcHNlZCwgY2xhc3NOYW1lOiB0aGVtZS5sYWJlbCwgY2hpbGRyZW46IGxhYmVsIH0pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApIH0pO1xuICB9XG4pO1xuU2lkZWJhckl0ZW0uZGlzcGxheU5hbWUgPSBcIlNpZGViYXIuSXRlbVwiO1xuXG5leHBvcnQgeyBTaWRlYmFySXRlbSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckl0ZW0ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlU2lkZWJhckNvbnRleHQgfSBmcm9tICcuL1NpZGViYXJDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBTaWRlYmFySXRlbUNvbnRleHQgfSBmcm9tICcuL1NpZGViYXJJdGVtQ29udGV4dC5tanMnO1xuXG5jb25zdCBTaWRlYmFySXRlbUdyb3VwID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSB9ID0gdXNlU2lkZWJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLml0ZW1Hcm91cCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcInVsXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXNpZGViYXItaXRlbS1ncm91cFwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFNpZGViYXJJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyBpc0luc2lkZUNvbGxhcHNlOiBmYWxzZSB9LCBjaGlsZHJlbiB9KSB9KTtcbn07XG5TaWRlYmFySXRlbUdyb3VwLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkl0ZW1Hcm91cFwiO1xuXG5leHBvcnQgeyBTaWRlYmFySXRlbUdyb3VwIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaWRlYmFySXRlbUdyb3VwLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBTaWRlYmFySXRlbXMgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZVNpZGViYXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5pdGVtcywgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1pdGVtc1wiLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuU2lkZWJhckl0ZW1zLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkl0ZW1zXCI7XG5cbmV4cG9ydCB7IFNpZGViYXJJdGVtcyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckl0ZW1zLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUlkIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlU2lkZWJhckNvbnRleHQgfSBmcm9tICcuL1NpZGViYXJDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFNpZGViYXJMb2dvID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgaHJlZixcbiAgaW1nLFxuICBpbWdBbHQgPSBcIlwiLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGlzQ29sbGFwc2VkIH0gPSB1c2VTaWRlYmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUubG9nbywgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgXCJhXCIsXG4gICAge1xuICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYGZsb3diaXRlLXNpZGViYXItbG9nby0ke2lkfWAsXG4gICAgICBocmVmLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJpbWdcIiwgeyBhbHQ6IGltZ0FsdCwgc3JjOiBpbWcsIGNsYXNzTmFtZTogdGhlbWUuaW1nIH0pLFxuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUuY29sbGFwc2VkW2lzQ29sbGFwc2VkID8gXCJvblwiIDogXCJvZmZcIl0sIGlkOiBgZmxvd2JpdGUtc2lkZWJhci1sb2dvLSR7aWR9YCwgY2hpbGRyZW4gfSlcbiAgICAgIF1cbiAgICB9XG4gICk7XG59O1xuU2lkZWJhckxvZ28uZGlzcGxheU5hbWUgPSBcIlNpZGViYXIuTG9nb1wiO1xuXG5leHBvcnQgeyBTaWRlYmFyTG9nbyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckxvZ28ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckNvbGxhcHNlIH0gZnJvbSAnLi9TaWRlYmFyQ29sbGFwc2UubWpzJztcbmltcG9ydCB7IFNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckNUQSB9IGZyb20gJy4vU2lkZWJhckNUQS5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckl0ZW0gfSBmcm9tICcuL1NpZGViYXJJdGVtLm1qcyc7XG5pbXBvcnQgeyBTaWRlYmFySXRlbUdyb3VwIH0gZnJvbSAnLi9TaWRlYmFySXRlbUdyb3VwLm1qcyc7XG5pbXBvcnQgeyBTaWRlYmFySXRlbXMgfSBmcm9tICcuL1NpZGViYXJJdGVtcy5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckxvZ28gfSBmcm9tICcuL1NpZGViYXJMb2dvLm1qcyc7XG5cbmNvbnN0IFNpZGViYXJDb21wb25lbnQgPSAoe1xuICBjaGlsZHJlbixcbiAgYXM6IENvbXBvbmVudCA9IFwibmF2XCIsXG4gIGNvbGxhcHNlQmVoYXZpb3IgPSBcImNvbGxhcHNlXCIsXG4gIGNvbGxhcHNlZDogaXNDb2xsYXBzZWQgPSBmYWxzZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5zaWRlYmFyLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFNpZGViYXJDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lLCBpc0NvbGxhcHNlZCB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBDb21wb25lbnQsXG4gICAge1xuICAgICAgXCJhcmlhLWxhYmVsXCI6IFwiU2lkZWJhclwiLFxuICAgICAgaGlkZGVuOiBpc0NvbGxhcHNlZCAmJiBjb2xsYXBzZUJlaGF2aW9yID09PSBcImhpZGVcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIHRoZW1lLnJvb3QuY29sbGFwc2VkW2lzQ29sbGFwc2VkID8gXCJvblwiIDogXCJvZmZcIl0sIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5yb290LmlubmVyLCBjaGlsZHJlbiB9KVxuICAgIH1cbiAgKSB9KTtcbn07XG5TaWRlYmFyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyXCI7XG5jb25zdCBTaWRlYmFyID0gT2JqZWN0LmFzc2lnbihTaWRlYmFyQ29tcG9uZW50LCB7XG4gIENvbGxhcHNlOiBTaWRlYmFyQ29sbGFwc2UsXG4gIENUQTogU2lkZWJhckNUQSxcbiAgSXRlbTogU2lkZWJhckl0ZW0sXG4gIEl0ZW1zOiBTaWRlYmFySXRlbXMsXG4gIEl0ZW1Hcm91cDogU2lkZWJhckl0ZW1Hcm91cCxcbiAgTG9nbzogU2lkZWJhckxvZ29cbn0pO1xuXG5leHBvcnQgeyBTaWRlYmFyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaWRlYmFyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFRhYmxlQm9keUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VUYWJsZUJvZHlDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChUYWJsZUJvZHlDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlVGFibGVCb2R5Q29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFRhYmxlQm9keUNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBUYWJsZUJvZHlDb250ZXh0LCB1c2VUYWJsZUJvZHlDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJsZUJvZHlDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFRhYmxlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZVRhYmxlQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoVGFibGVDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlVGFibGVDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgVGFibGVDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgVGFibGVDb250ZXh0LCB1c2VUYWJsZUNvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlQ29udGV4dC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgVGFibGVCb2R5Q29udGV4dCB9IGZyb20gJy4vVGFibGVCb2R5Q29udGV4dC5tanMnO1xuaW1wb3J0IHsgdXNlVGFibGVDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUNvbnRleHQubWpzJztcblxuY29uc3QgVGFibGVCb2R5ID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSB9ID0gdXNlVGFibGVDb250ZXh0KCk7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmJvZHksIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChUYWJsZUJvZHlDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lIH0sIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwidGJvZHlcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgcmVmLCAuLi5wcm9wcywgY2hpbGRyZW4gfSkgfSk7XG4gIH1cbik7XG5UYWJsZUJvZHkuZGlzcGxheU5hbWUgPSBcIlRhYmxlLkJvZHlcIjtcblxuZXhwb3J0IHsgVGFibGVCb2R5IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJsZUJvZHkubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRhYmxlQm9keUNvbnRleHQgfSBmcm9tICcuL1RhYmxlQm9keUNvbnRleHQubWpzJztcblxuY29uc3QgVGFibGVDZWxsID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWU6IGJvZHlUaGVtZSB9ID0gdXNlVGFibGVCb2R5Q29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGJvZHlUaGVtZS5jZWxsLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ0ZFwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCByZWYsIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbiAgfVxuKTtcblRhYmxlQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGFibGUuQ2VsbFwiO1xuXG5leHBvcnQgeyBUYWJsZUNlbGwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlQ2VsbC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUYWJsZUhlYWRDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlVGFibGVIZWFkQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoVGFibGVIZWFkQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRhYmxlSGVhZENvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBUYWJsZUhlYWRDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgVGFibGVIZWFkQ29udGV4dCwgdXNlVGFibGVIZWFkQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVIZWFkQ29udGV4dC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGFibGVDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUNvbnRleHQubWpzJztcbmltcG9ydCB7IFRhYmxlSGVhZENvbnRleHQgfSBmcm9tICcuL1RhYmxlSGVhZENvbnRleHQubWpzJztcblxuY29uc3QgVGFibGVIZWFkID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSB9ID0gdXNlVGFibGVDb250ZXh0KCk7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmhlYWQsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChUYWJsZUhlYWRDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lIH0sIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwidGhlYWRcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgcmVmLCAuLi5wcm9wcywgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ0clwiLCB7IGNoaWxkcmVuIH0pIH0pIH0pO1xuICB9XG4pO1xuVGFibGVIZWFkLmRpc3BsYXlOYW1lID0gXCJUYWJsZS5IZWFkXCI7XG5cbmV4cG9ydCB7IFRhYmxlSGVhZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVIZWFkLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUYWJsZUhlYWRDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUhlYWRDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlSGVhZENlbGwgPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgeyB0aGVtZTogaGVhZFRoZW1lIH0gPSB1c2VUYWJsZUhlYWRDb250ZXh0KCk7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoaGVhZFRoZW1lLmNlbGwsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcInRoXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIHJlZiwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xuICB9XG4pO1xuVGFibGVIZWFkQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGFibGUuSGVhZENlbGxcIjtcblxuZXhwb3J0IHsgVGFibGVIZWFkQ2VsbCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVIZWFkQ2VsbC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGFibGVDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUNvbnRleHQubWpzJztcblxuY29uc3QgVGFibGVSb3cgPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBob3ZlcmFibGUsIHN0cmlwZWQgfSA9IHVzZVRhYmxlQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5yb3csIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwidHJcIixcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwidGFibGUtcm93LWVsZW1lbnRcIixcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIHN0cmlwZWQgJiYgdGhlbWUuc3RyaXBlZCwgaG92ZXJhYmxlICYmIHRoZW1lLmhvdmVyZWQsIGNsYXNzTmFtZSksXG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBjaGlsZHJlblxuICAgICAgfVxuICAgICk7XG4gIH1cbik7XG5UYWJsZVJvdy5kaXNwbGF5TmFtZSA9IFwiVGFibGUuUm93XCI7XG5cbmV4cG9ydCB7IFRhYmxlUm93IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJsZVJvdy5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3gsIGpzeHMgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgVGFibGVCb2R5IH0gZnJvbSAnLi9UYWJsZUJvZHkubWpzJztcbmltcG9ydCB7IFRhYmxlQ2VsbCB9IGZyb20gJy4vVGFibGVDZWxsLm1qcyc7XG5pbXBvcnQgeyBUYWJsZUNvbnRleHQgfSBmcm9tICcuL1RhYmxlQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgVGFibGVIZWFkIH0gZnJvbSAnLi9UYWJsZUhlYWQubWpzJztcbmltcG9ydCB7IFRhYmxlSGVhZENlbGwgfSBmcm9tICcuL1RhYmxlSGVhZENlbGwubWpzJztcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSAnLi9UYWJsZVJvdy5tanMnO1xuXG5jb25zdCBUYWJsZUNvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHN0cmlwZWQsIGhvdmVyYWJsZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudGFibGUsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJ0YWJsZS1lbGVtZW50XCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LndyYXBwZXIpLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoVGFibGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lLCBzdHJpcGVkLCBob3ZlcmFibGUgfSwgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5zaGFkb3csIGNsYXNzTmFtZSkgfSksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwidGFibGVcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgcmVmLCBjaGlsZHJlbiB9KVxuICAgIF0gfSkgfSk7XG4gIH1cbik7XG5UYWJsZUNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiVGFibGVcIjtcbmNvbnN0IFRhYmxlID0gT2JqZWN0LmFzc2lnbihUYWJsZUNvbXBvbmVudCwge1xuICBIZWFkOiBUYWJsZUhlYWQsXG4gIEJvZHk6IFRhYmxlQm9keSxcbiAgUm93OiBUYWJsZVJvdyxcbiAgQ2VsbDogVGFibGVDZWxsLFxuICBIZWFkQ2VsbDogVGFibGVIZWFkQ2VsbFxufSk7XG5cbmV4cG9ydCB7IFRhYmxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJsZS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5cbmNvbnN0IFRhYkl0ZW0gPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lIH0pID0+IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWUsIGNoaWxkcmVuIH0pO1xuVGFiSXRlbS5kaXNwbGF5TmFtZSA9IFwiVGFicy5JdGVtXCI7XG5cbmV4cG9ydCB7IFRhYkl0ZW0gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYkl0ZW0ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlSWQsIHVzZU1lbW8sIENoaWxkcmVuLCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZUltcGVyYXRpdmVIYW5kbGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBUYWJJdGVtIH0gZnJvbSAnLi9UYWJJdGVtLm1qcyc7XG5cbmNvbnN0IFRhYnNDb21wb25lbnQgPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBvbkFjdGl2ZVRhYkNoYW5nZSwgdmFyaWFudCA9IFwiZGVmYXVsdFwiLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS50YWJzLCBjdXN0b21UaGVtZSk7XG4gICAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IHRhYnMgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gQ2hpbGRyZW4ubWFwKFxuICAgICAgICBDaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKSxcbiAgICAgICAgKHsgcHJvcHM6IHByb3BzMiB9KSA9PiBwcm9wczJcbiAgICAgICksXG4gICAgICBbY2hpbGRyZW5dXG4gICAgKTtcbiAgICBjb25zdCB0YWJSZWZzID0gdXNlUmVmKFtdKTtcbiAgICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGUoXG4gICAgICBNYXRoLm1heChcbiAgICAgICAgMCxcbiAgICAgICAgdGFicy5maW5kSW5kZXgoKHRhYikgPT4gdGFiLmFjdGl2ZSlcbiAgICAgIClcbiAgICApO1xuICAgIGNvbnN0IFtmb2N1c2VkVGFiLCBzZXRGb2N1c2VkVGFiXSA9IHVzZVN0YXRlKC0xKTtcbiAgICBjb25zdCBzZXRBY3RpdmVUYWJXaXRoQ2FsbGJhY2sgPSAoYWN0aXZlVGFiMikgPT4ge1xuICAgICAgc2V0QWN0aXZlVGFiKGFjdGl2ZVRhYjIpO1xuICAgICAgaWYgKG9uQWN0aXZlVGFiQ2hhbmdlKSBvbkFjdGl2ZVRhYkNoYW5nZShhY3RpdmVUYWIyKTtcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrID0gKHsgdGFyZ2V0IH0pID0+IHtcbiAgICAgIHNldEFjdGl2ZVRhYldpdGhDYWxsYmFjayh0YXJnZXQpO1xuICAgICAgc2V0Rm9jdXNlZFRhYih0YXJnZXQpO1xuICAgIH07XG4gICAgY29uc3QgaGFuZGxlS2V5Ym9hcmQgPSAoeyBldmVudCwgdGFyZ2V0IH0pID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dMZWZ0XCIpIHtcbiAgICAgICAgc2V0Rm9jdXNlZFRhYihNYXRoLm1heCgwLCBmb2N1c2VkVGFiIC0gMSkpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1JpZ2h0XCIpIHtcbiAgICAgICAgc2V0Rm9jdXNlZFRhYihNYXRoLm1pbih0YWJzLmxlbmd0aCAtIDEsIGZvY3VzZWRUYWIgKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgICAgc2V0QWN0aXZlVGFiV2l0aENhbGxiYWNrKHRhcmdldCk7XG4gICAgICAgIHNldEZvY3VzZWRUYWIodGFyZ2V0KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHRhYkl0ZW1TdHlsZSA9IHRoZW1lLnRhYmxpc3QudGFiaXRlbS52YXJpYW50W3ZhcmlhbnRdO1xuICAgIGNvbnN0IHRhYkl0ZW1Db250YWluZXJTdHlsZSA9IHRoZW1lLnRhYml0ZW1jb250YWluZXIudmFyaWFudFt2YXJpYW50XTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgdGFiUmVmcy5jdXJyZW50W2ZvY3VzZWRUYWJdPy5mb2N1cygpO1xuICAgIH0sIFtmb2N1c2VkVGFiXSk7XG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgICBzZXRBY3RpdmVUYWI6IHNldEFjdGl2ZVRhYldpdGhDYWxsYmFja1xuICAgIH0pKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBcImFyaWEtbGFiZWxcIjogXCJUYWJzXCIsXG4gICAgICAgICAgcm9sZTogXCJ0YWJsaXN0XCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnRhYmxpc3QuYmFzZSwgdGhlbWUudGFibGlzdC52YXJpYW50W3ZhcmlhbnRdLCBjbGFzc05hbWUpLFxuICAgICAgICAgIC4uLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuOiB0YWJzLm1hcCgodGFiLCBpbmRleCkgPT4gLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICBcImFyaWEtY29udHJvbHNcIjogYCR7aWR9LXRhYnBhbmVsLSR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IGluZGV4ID09PSBhY3RpdmVUYWIsXG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgICAgICB0aGVtZS50YWJsaXN0LnRhYml0ZW0uYmFzZSxcbiAgICAgICAgICAgICAgICB0YWJJdGVtU3R5bGUuYmFzZSxcbiAgICAgICAgICAgICAgICBpbmRleCA9PT0gYWN0aXZlVGFiICYmIHRhYkl0ZW1TdHlsZS5hY3RpdmUub24sXG4gICAgICAgICAgICAgICAgaW5kZXggIT09IGFjdGl2ZVRhYiAmJiAhdGFiLmRpc2FibGVkICYmIHRhYkl0ZW1TdHlsZS5hY3RpdmUub2ZmXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGRpc2FibGVkOiB0YWIuZGlzYWJsZWQsXG4gICAgICAgICAgICAgIGlkOiBgJHtpZH0tdGFiLSR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgb25DbGljazogKCkgPT4gaGFuZGxlQ2xpY2soeyB0YXJnZXQ6IGluZGV4IH0pLFxuICAgICAgICAgICAgICBvbktleURvd246IChldmVudCkgPT4gaGFuZGxlS2V5Ym9hcmQoeyBldmVudCwgdGFyZ2V0OiBpbmRleCB9KSxcbiAgICAgICAgICAgICAgcmVmOiAoZWxlbWVudCkgPT4gdGFiUmVmcy5jdXJyZW50W2luZGV4XSA9IGVsZW1lbnQsXG4gICAgICAgICAgICAgIHJvbGU6IFwidGFiXCIsXG4gICAgICAgICAgICAgIHRhYkluZGV4OiBpbmRleCA9PT0gZm9jdXNlZFRhYiA/IDAgOiAtMSxcbiAgICAgICAgICAgICAgc3R5bGU6IHsgekluZGV4OiBpbmRleCA9PT0gZm9jdXNlZFRhYiA/IDIgOiAxIH0sXG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgdGFiLmljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeCh0YWIuaWNvbiwgeyBjbGFzc05hbWU6IHRoZW1lLnRhYmxpc3QudGFiaXRlbS5pY29uIH0pLFxuICAgICAgICAgICAgICAgIHRhYi50aXRsZVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICApKVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS50YWJpdGVtY29udGFpbmVyLmJhc2UsIHRhYkl0ZW1Db250YWluZXJTdHlsZSksIGNoaWxkcmVuOiB0YWJzLm1hcCgodGFiLCBpbmRleCkgPT4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGAke2lkfS10YWItJHtpbmRleH1gLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhlbWUudGFicGFuZWwsXG4gICAgICAgICAgaGlkZGVuOiBpbmRleCAhPT0gYWN0aXZlVGFiLFxuICAgICAgICAgIGlkOiBgJHtpZH0tdGFicGFuZWwtJHtpbmRleH1gLFxuICAgICAgICAgIHJvbGU6IFwidGFicGFuZWxcIixcbiAgICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgICBjaGlsZHJlbjogdGFiLmNoaWxkcmVuXG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4XG4gICAgICApKSB9KVxuICAgIF0gfSk7XG4gIH1cbik7XG5UYWJzQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJUYWJzXCI7XG5jb25zdCBUYWJzID0gT2JqZWN0LmFzc2lnbihUYWJzQ29tcG9uZW50LCB7XG4gIEl0ZW06IFRhYkl0ZW1cbn0pO1xuXG5leHBvcnQgeyBUYWJzIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJzLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIEZyYWdtZW50LCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgSGVscGVyVGV4dCB9IGZyb20gJy4uL0hlbHBlclRleHQvSGVscGVyVGV4dC5tanMnO1xuXG5jb25zdCBUZXh0YXJlYSA9IGZvcndhcmRSZWYoXG4gICh7IGNsYXNzTmFtZSwgY29sb3IgPSBcImdyYXlcIiwgaGVscGVyVGV4dCwgc2hhZG93LCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS50ZXh0YXJlYSwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJ0ZXh0YXJlYVwiLFxuICAgICAgICB7XG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCB0aGVtZS5jb2xvcnNbY29sb3JdLCB0aGVtZS53aXRoU2hhZG93W3NoYWRvdyA/IFwib25cIiA6IFwib2ZmXCJdLCBjbGFzc05hbWUpLFxuICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBoZWxwZXJUZXh0ICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSGVscGVyVGV4dCwgeyBjb2xvciwgY2hpbGRyZW46IGhlbHBlclRleHQgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuVGV4dGFyZWEuZGlzcGxheU5hbWUgPSBcIlRleHRhcmVhXCI7XG5cbmV4cG9ydCB7IFRleHRhcmVhIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZXh0YXJlYS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUaW1lbGluZUNvbnRlbnRDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoVGltZWxpbmVDb250ZW50Q29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRpbWVsaW5lQ29udGVudENvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBUaW1lbGluZUNvbnRlbnRDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgVGltZWxpbmVDb250ZW50Q29udGV4dCwgdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZWxpbmVDb250ZW50Q29udGV4dC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUNvbnRlbnRDb250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUNvbnRlbnRDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lQm9keSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IGNvbnRlbnRUaGVtZSB9ID0gdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChjb250ZW50VGhlbWUuYm9keSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuXG5leHBvcnQgeyBUaW1lbGluZUJvZHkgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lQm9keS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUaW1lbGluZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VUaW1lbGluZUNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRpbWVsaW5lQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRpbWVsaW5lQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFRpbWVsaW5lQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRpbWVsaW5lQ29udGV4dCwgdXNlVGltZWxpbmVDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZUNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGltZWxpbmVJdGVtQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZVRpbWVsaW5lSXRlbUNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRpbWVsaW5lSXRlbUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VUaW1lbGluZUl0ZW1Db250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgVGltZWxpbmVJdGVtQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRpbWVsaW5lSXRlbUNvbnRleHQsIHVzZVRpbWVsaW5lSXRlbUNvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lSXRlbUNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVDb250ZW50Q29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZW50Q29udGV4dC5tanMnO1xuaW1wb3J0IHsgdXNlVGltZWxpbmVDb250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUNvbnRleHQubWpzJztcbmltcG9ydCB7IHVzZVRpbWVsaW5lSXRlbUNvbnRleHQgfSBmcm9tICcuL1RpbWVsaW5lSXRlbUNvbnRleHQubWpzJztcblxuY29uc3QgVGltZWxpbmVDb250ZW50ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgaG9yaXpvbnRhbCB9ID0gdXNlVGltZWxpbmVDb250ZXh0KCk7XG4gIGNvbnN0IHsgdGhlbWU6IGl0ZW1UaGVtZSB9ID0gdXNlVGltZWxpbmVJdGVtQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChpdGVtVGhlbWUuY29udGVudCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChUaW1lbGluZUNvbnRlbnRDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lIH0sIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRpbWVsaW5lLWNvbnRlbnRcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGhvcml6b250YWwgPyB0aGVtZS5yb290Lmhvcml6b250YWwgOiB0aGVtZS5yb290LnZlcnRpY2FsLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKSB9KTtcbn07XG5cbmV4cG9ydCB7IFRpbWVsaW5lQ29udGVudCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZWxpbmVDb250ZW50Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRpbWVsaW5lQ29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZUl0ZW1Db250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUl0ZW1Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lSXRlbSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaG9yaXpvbnRhbCB9ID0gdXNlVGltZWxpbmVDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5pdGVtLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFRpbWVsaW5lSXRlbUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgdGhlbWUgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJsaVwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0aW1lbGluZS1pdGVtXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoaG9yaXpvbnRhbCAmJiB0aGVtZS5yb290Lmhvcml6b250YWwsICFob3Jpem9udGFsICYmIHRoZW1lLnJvb3QudmVydGljYWwsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApIH0pO1xufTtcblxuZXhwb3J0IHsgVGltZWxpbmVJdGVtIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZUl0ZW0ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGltZWxpbmVDb250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUNvbnRleHQubWpzJztcbmltcG9ydCB7IHVzZVRpbWVsaW5lSXRlbUNvbnRleHQgfSBmcm9tICcuL1RpbWVsaW5lSXRlbUNvbnRleHQubWpzJztcblxuY29uc3QgVGltZWxpbmVQb2ludCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGljb246IEljb24sXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IGhvcml6b250YWwgfSA9IHVzZVRpbWVsaW5lQ29udGV4dCgpO1xuICBjb25zdCB7IHRoZW1lOiBpdGVtVGhlbWUgfSA9IHVzZVRpbWVsaW5lSXRlbUNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoaXRlbVRoZW1lLnBvaW50LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0aW1lbGluZS1wb2ludFwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKGhvcml6b250YWwgJiYgdGhlbWUuaG9yaXpvbnRhbCwgIWhvcml6b250YWwgJiYgdGhlbWUudmVydGljYWwsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBJY29uID8gLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUubWFya2VyLmljb24ud3JhcHBlciksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUubWFya2VyLmljb24uYmFzZSkgfSkgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKGhvcml6b250YWwgJiYgdGhlbWUubWFya2VyLmJhc2UuaG9yaXpvbnRhbCwgIWhvcml6b250YWwgJiYgdGhlbWUubWFya2VyLmJhc2UudmVydGljYWwpXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICBob3Jpem9udGFsICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUubGluZSkgfSlcbiAgICAgIF1cbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgeyBUaW1lbGluZVBvaW50IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZVBvaW50Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRpbWVsaW5lQ29udGVudENvbnRleHQgfSBmcm9tICcuL1RpbWVsaW5lQ29udGVudENvbnRleHQubWpzJztcblxuY29uc3QgVGltZWxpbmVUaW1lID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogY29udGVudFRoZW1lIH0gPSB1c2VUaW1lbGluZUNvbnRlbnRDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGNvbnRlbnRUaGVtZS50aW1lLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwidGltZVwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuXG5leHBvcnQgeyBUaW1lbGluZVRpbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lVGltZS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUNvbnRlbnRDb250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUNvbnRlbnRDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lVGl0bGUgPSAoe1xuICBhczogVGFnID0gXCJoM1wiLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogY29udGVudFRoZW1lIH0gPSB1c2VUaW1lbGluZUNvbnRlbnRDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGNvbnRlbnRUaGVtZS50aXRsZSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChUYWcsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbn07XG5cbmV4cG9ydCB7IFRpbWVsaW5lVGl0bGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lVGl0bGUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVCb2R5IH0gZnJvbSAnLi9UaW1lbGluZUJvZHkubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lQ29udGVudCB9IGZyb20gJy4vVGltZWxpbmVDb250ZW50Lm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZUNvbnRleHQgfSBmcm9tICcuL1RpbWVsaW5lQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVJdGVtIH0gZnJvbSAnLi9UaW1lbGluZUl0ZW0ubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lUG9pbnQgfSBmcm9tICcuL1RpbWVsaW5lUG9pbnQubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lVGltZSB9IGZyb20gJy4vVGltZWxpbmVUaW1lLm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZVRpdGxlIH0gZnJvbSAnLi9UaW1lbGluZVRpdGxlLm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lQ29tcG9uZW50ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgaG9yaXpvbnRhbCxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudGltZWxpbmUsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGltZWxpbmVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lLCBob3Jpem9udGFsIH0sIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwib2xcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwidGltZWxpbmUtY29tcG9uZW50XCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIGhvcml6b250YWwgJiYgdGhlbWUucm9vdC5kaXJlY3Rpb24uaG9yaXpvbnRhbCxcbiAgICAgICAgIWhvcml6b250YWwgJiYgdGhlbWUucm9vdC5kaXJlY3Rpb24udmVydGljYWwsXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICkgfSk7XG59O1xuVGltZWxpbmVDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lXCI7XG5UaW1lbGluZUl0ZW0uZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLkl0ZW1cIjtcblRpbWVsaW5lUG9pbnQuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLlBvaW50XCI7XG5UaW1lbGluZUNvbnRlbnQuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLkNvbnRlbnRcIjtcblRpbWVsaW5lVGltZS5kaXNwbGF5TmFtZSA9IFwiVGltZWxpbmUuVGltZVwiO1xuVGltZWxpbmVUaXRsZS5kaXNwbGF5TmFtZSA9IFwiVGltZWxpbmUuVGl0bGVcIjtcblRpbWVsaW5lQm9keS5kaXNwbGF5TmFtZSA9IFwiVGltZWxpbmUuQm9keVwiO1xuY29uc3QgVGltZWxpbmUgPSBPYmplY3QuYXNzaWduKFRpbWVsaW5lQ29tcG9uZW50LCB7XG4gIEl0ZW06IFRpbWVsaW5lSXRlbSxcbiAgUG9pbnQ6IFRpbWVsaW5lUG9pbnQsXG4gIENvbnRlbnQ6IFRpbWVsaW5lQ29udGVudCxcbiAgVGltZTogVGltZWxpbmVUaW1lLFxuICBUaXRsZTogVGltZWxpbmVUaXRsZSxcbiAgQm9keTogVGltZWxpbmVCb2R5XG59KTtcblxuZXhwb3J0IHsgVGltZWxpbmUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFRvYXN0Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZVRvYXN0Q29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoVG9hc3RDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlVG9hc3RDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgVG9hc3RDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgVG9hc3RDb250ZXh0LCB1c2VUb2FzdENvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRvYXN0Q29udGV4dC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBIaVggfSBmcm9tICdyZWFjdC1pY29ucy9oaSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUb2FzdENvbnRleHQgfSBmcm9tICcuL1RvYXN0Q29udGV4dC5tanMnO1xuXG5jb25zdCBUb2FzdFRvZ2dsZSA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgb25DbGljayxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHhJY29uOiBYSWNvbiA9IEhpWCxcbiAgb25EaXNtaXNzLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGR1cmF0aW9uLCBpc0Nsb3NlZCwgaXNSZW1vdmVkLCBzZXRJc0Nsb3NlZCwgc2V0SXNSZW1vdmVkIH0gPSB1c2VUb2FzdENvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLnRvZ2dsZSwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBoYW5kbGVDbGljayA9IChlKSA9PiB7XG4gICAgaWYgKG9uQ2xpY2spIG9uQ2xpY2soZSk7XG4gICAgaWYgKG9uRGlzbWlzcykge1xuICAgICAgb25EaXNtaXNzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNldElzQ2xvc2VkKCFpc0Nsb3NlZCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiBzZXRJc1JlbW92ZWQoIWlzUmVtb3ZlZCksIGR1cmF0aW9uKTtcbiAgfTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJidXR0b25cIixcbiAgICB7XG4gICAgICBcImFyaWEtbGFiZWxcIjogXCJDbG9zZVwiLFxuICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFhJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pY29uIH0pXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgVG9hc3RUb2dnbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRvYXN0VG9nZ2xlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgVG9hc3RDb250ZXh0IH0gZnJvbSAnLi9Ub2FzdENvbnRleHQubWpzJztcbmltcG9ydCB7IFRvYXN0VG9nZ2xlIH0gZnJvbSAnLi9Ub2FzdFRvZ2dsZS5tanMnO1xuXG5jb25zdCBkdXJhdGlvbkNsYXNzZXMgPSB7XG4gIDc1OiBcImR1cmF0aW9uLTc1XCIsXG4gIDEwMDogXCJkdXJhdGlvbi0xMDBcIixcbiAgMTUwOiBcImR1cmF0aW9uLTE1MFwiLFxuICAyMDA6IFwiZHVyYXRpb24tMjAwXCIsXG4gIDMwMDogXCJkdXJhdGlvbi0zMDBcIixcbiAgNTAwOiBcImR1cmF0aW9uLTUwMFwiLFxuICA3MDA6IFwiZHVyYXRpb24tNzAwXCIsXG4gIDFlMzogXCJkdXJhdGlvbi0xMDAwXCJcbn07XG5jb25zdCBUb2FzdENvbXBvbmVudCA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGR1cmF0aW9uID0gMzAwLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBbaXNDbG9zZWQsIHNldElzQ2xvc2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzUmVtb3ZlZCwgc2V0SXNSZW1vdmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS50b2FzdCwgY3VzdG9tVGhlbWUpO1xuICBpZiAoaXNSZW1vdmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVG9hc3RDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lLCBkdXJhdGlvbiwgaXNDbG9zZWQsIGlzUmVtb3ZlZCwgc2V0SXNDbG9zZWQsIHNldElzUmVtb3ZlZCB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS10b2FzdFwiLFxuICAgICAgcm9sZTogXCJhbGVydFwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgZHVyYXRpb25DbGFzc2VzW2R1cmF0aW9uXSwgaXNDbG9zZWQgJiYgdGhlbWUucm9vdC5jbG9zZWQsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApIH0pO1xufTtcblRvYXN0Q29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJUb2FzdFwiO1xuVG9hc3RUb2dnbGUuZGlzcGxheU5hbWUgPSBcIlRvYXN0LlRvZ2dsZVwiO1xuY29uc3QgVG9hc3QgPSBPYmplY3QuYXNzaWduKFRvYXN0Q29tcG9uZW50LCB7XG4gIFRvZ2dsZTogVG9hc3RUb2dnbGVcbn0pO1xuXG5leHBvcnQgeyBUb2FzdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VG9hc3QubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywgRnJhZ21lbnQsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUlkIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBUb2dnbGVTd2l0Y2ggPSBmb3J3YXJkUmVmKFxuICAoe1xuICAgIGNoZWNrZWQsXG4gICAgY2xhc3NOYW1lLFxuICAgIGNvbG9yID0gXCJibHVlXCIsXG4gICAgc2l6aW5nID0gXCJtZFwiLFxuICAgIGRpc2FibGVkLFxuICAgIGxhYmVsLFxuICAgIG5hbWUsXG4gICAgb25DaGFuZ2UsXG4gICAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gICAgLi4ucHJvcHNcbiAgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudG9nZ2xlU3dpdGNoLCBjdXN0b21UaGVtZSk7XG4gICAgY29uc3QgdG9nZ2xlID0gKCkgPT4gb25DaGFuZ2UoIWNoZWNrZWQpO1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgICAgdG9nZ2xlKCk7XG4gICAgfTtcbiAgICBjb25zdCBoYW5kbGVPbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5jb2RlID09IFwiRW50ZXJcIikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKEZyYWdtZW50LCB7IGNoaWxkcmVuOiBbXG4gICAgICBuYW1lICYmIGNoZWNrZWQgPyAvKiBAX19QVVJFX18gKi8ganN4KFwiaW5wdXRcIiwgeyByZWYsIGNoZWNrZWQsIGhpZGRlbjogdHJ1ZSwgbmFtZSwgcmVhZE9ubHk6IHRydWUsIHR5cGU6IFwiY2hlY2tib3hcIiwgY2xhc3NOYW1lOiBcInNyLW9ubHlcIiB9KSA6IG51bGwsXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAge1xuICAgICAgICAgIFwiYXJpYS1jaGVja2VkXCI6IGNoZWNrZWQsXG4gICAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYCR7aWR9LWZsb3diaXRlLXRvZ2dsZXN3aXRjaC1sYWJlbGAsXG4gICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgaWQ6IGAke2lkfS1mbG93Yml0ZS10b2dnbGVzd2l0Y2hgLFxuICAgICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgICAgIG9uS2V5RG93bjogaGFuZGxlT25LZXlEb3duLFxuICAgICAgICAgIHJvbGU6IFwic3dpdGNoXCIsXG4gICAgICAgICAgdGFiSW5kZXg6IDAsXG4gICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCB0aGVtZS5yb290LmFjdGl2ZVtkaXNhYmxlZCA/IFwib2ZmXCIgOiBcIm9uXCJdLCBjbGFzc05hbWUpLFxuICAgICAgICAgIC4uLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXRvZ2dsZXN3aXRjaC10b2dnbGVcIixcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgICB0aGVtZS50b2dnbGUuYmFzZSxcbiAgICAgICAgICAgICAgICAgIHRoZW1lLnRvZ2dsZS5jaGVja2VkW2NoZWNrZWQgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQgJiYgdGhlbWUudG9nZ2xlLmNoZWNrZWQuY29sb3JbY29sb3JdLFxuICAgICAgICAgICAgICAgICAgdGhlbWUudG9nZ2xlLnNpemVzW3NpemluZ11cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsYWJlbD8ubGVuZ3RoID8gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtdG9nZ2xlc3dpdGNoLWxhYmVsXCIsXG4gICAgICAgICAgICAgICAgaWQ6IGAke2lkfS1mbG93Yml0ZS10b2dnbGVzd2l0Y2gtbGFiZWxgLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdGhlbWUucm9vdC5sYWJlbCxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogbGFiZWxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIClcbiAgICBdIH0pO1xuICB9XG4pO1xuVG9nZ2xlU3dpdGNoLmRpc3BsYXlOYW1lID0gXCJUb2dnbGVTd2l0Y2hcIjtcblxuZXhwb3J0IHsgVG9nZ2xlU3dpdGNoIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ub2dnbGVTd2l0Y2gubWpzLm1hcFxuIiwiaW1wb3J0IHsgQnNQbHVzIH0gZnJvbSBcIkByZWFjdC1pY29ucy9hbGwtZmlsZXMvYnMvQnNQbHVzXCJcbmltcG9ydCB7IEJzUGVuY2lsIH0gZnJvbSBcIkByZWFjdC1pY29ucy9hbGwtZmlsZXMvYnMvQnNQZW5jaWxcIlxuaW1wb3J0IHsgUmlTYXZlRmlsbCB9IGZyb20gXCJAcmVhY3QtaWNvbnMvYWxsLWZpbGVzL3JpL1JpU2F2ZUZpbGxcIlxuaW1wb3J0IHsgUmlEZWxldGVCaW4yTGluZSwgUmlTYXZlRmlsbCB9IGZyb20gXCJAcHJlYWN0LWljb25zL3JpXCJcbmltcG9ydCB7IEJzWENpcmNsZSwgQnNQbHVzLCBCc1BlbmNpbCB9IGZyb20gXCJAcHJlYWN0LWljb25zL2JzXCJcbmltcG9ydCB7IEJ1dHRvbiBhcyBCYXNlQnV0dG9uIH0gZnJvbSBcImZsb3diaXRlLXJlYWN0XCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgQnV0dG9uID0gKHsgdHlwZSAsIHZhcmlhbnQgLCBvbkNsaWNrIH0pID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8QmFzZUJ1dHRvbiBjb2xvcj17dmFyaWFudH0gcGlsbCBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgICAgICAgIHsgdHlwZSA9PSAxICYmIDxCc1BsdXMvPiB9XG4gICAgICAgICAgICB7IHR5cGUgPT0gMiAmJiA8QnNQZW5jaWwvPiB9XG4gICAgICAgICAgICB7IHR5cGUgPT0gMyAmJiA8UmlTYXZlRmlsbC8+IH1cbiAgICAgICAgICAgIHsgdHlwZSA9PSA0ICYmIDxCc1hDaXJjbGUvPiB9XG4gICAgICAgICAgICB7IHR5cGUgPT0gNSAmJiA8UmlEZWxldGVCaW4yTGluZS8+IH1cbiAgICAgICAgPC9CYXNlQnV0dG9uPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCdXR0b247XG4iLCIvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgYHRoaW5nYCBpcyBhbiBvYmplY3QgZm9yIHRoZSBwdXJwb3NlcyBvZiBSSlNGLiBJbiB0aGlzIGNhc2UsIGB0aGluZ2AgaXMgYW4gb2JqZWN0IGlmIGl0IGhhc1xuICogdGhlIHR5cGUgYG9iamVjdGAgYnV0IGlzIE5PVCBudWxsLCBhbiBhcnJheSBvciBhIEZpbGUuXG4gKlxuICogQHBhcmFtIHRoaW5nIC0gVGhlIHRoaW5nIHRvIGNoZWNrIHRvIHNlZSB3aGV0aGVyIGl0IGlzIGFuIG9iamVjdFxuICogQHJldHVybnMgLSBUcnVlIGlmIGl0IGlzIGEgbm9uLW51bGwsIG5vbi1hcnJheSwgbm9uLUZpbGUgb2JqZWN0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzT2JqZWN0KHRoaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB0aGluZyAhPT0gJ29iamVjdCcgfHwgdGhpbmcgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBsYXN0TW9kaWZpZWQgaXMgZ3VhcmFudGVlZCB0byBiZSBhIG51bWJlciBvbiBhIEZpbGUgaW5zdGFuY2VcbiAgICAvLyBhcyBwZXIgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0ZpbGVBUEkvI2Rmbi1sYXN0TW9kaWZpZWRcbiAgICBpZiAodHlwZW9mIHRoaW5nLmxhc3RNb2RpZmllZCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIEZpbGUgIT09ICd1bmRlZmluZWQnICYmIHRoaW5nIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIGdldE1vbnRoIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBtZXRob2Qgb24gYSBEYXRlIGluc3RhbmNlXG4gICAgLy8gYXMgcGVyIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyL211bHRpcGFnZS9udW1iZXJzLWFuZC1kYXRlcy5odG1sI3NlYy1kYXRlLnByb3RvdHlwZS5nZXRtb250aFxuICAgIGlmICh0eXBlb2YgdGhpbmcuZ2V0TW9udGggPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIERhdGUgIT09ICd1bmRlZmluZWQnICYmIHRoaW5nIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhQXJyYXkuaXNBcnJheSh0aGluZyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc09iamVjdC5qcy5tYXAiLCJpbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogQ2hlY2tzIHRoZSBzY2hlbWEgdG8gc2VlIGlmIGl0IGlzIGFsbG93aW5nIGFkZGl0aW9uYWwgaXRlbXMsIGJ5IHZlcmlmeWluZyB0aGF0IGBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zYCBpcyBhblxuICogb2JqZWN0LiBUaGUgdXNlciBpcyB3YXJuZWQgaW4gdGhlIGNvbnNvbGUgaWYgYHNjaGVtYS5hZGRpdGlvbmFsSXRlbXNgIGhhcyB0aGUgdmFsdWUgYHRydWVgLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIG9iamVjdCB0byBjaGVja1xuICogQHJldHVybnMgLSBUcnVlIGlmIGFkZGl0aW9uYWwgaXRlbXMgaXMgYWxsb3dlZCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFsbG93QWRkaXRpb25hbEl0ZW1zKHNjaGVtYSkge1xuICAgIGlmIChzY2hlbWEuYWRkaXRpb25hbEl0ZW1zID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignYWRkaXRpb25hbEl0ZW1zPXRydWUgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzT2JqZWN0KHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWxsb3dBZGRpdGlvbmFsSXRlbXMuanMubWFwIiwiLyoqIEF0dGVtcHRzIHRvIGNvbnZlcnQgdGhlIHN0cmluZyBpbnRvIGEgbnVtYmVyLiBJZiBhbiBlbXB0eSBzdHJpbmcgaXMgcHJvdmlkZWQsIHRoZW4gYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuIElmIGFcbiAqIGBudWxsYCBpcyBwcm92aWRlZCwgaXQgaXMgcmV0dXJuZWQuIElmIHRoZSBzdHJpbmcgZW5kcyBpbiBhIGAuYCB0aGVuIHRoZSBzdHJpbmcgaXMgcmV0dXJuZWQgYmVjYXVzZSB0aGUgdXNlciBtYXkgYmVcbiAqIGluIHRoZSBtaWRkbGUgb2YgdHlwaW5nIGEgZmxvYXQgbnVtYmVyLiBJZiBhIG51bWJlciBlbmRzIGluIGEgcGF0dGVybiBsaWtlIGAuMGAsIGAuMjBgLCBgLjAzMGAsIHN0cmluZyBpcyByZXR1cm5lZFxuICogYmVjYXVzZSB0aGUgdXNlciBtYXkgYmUgdHlwaW5nIG51bWJlciB0aGF0IHdpbGwgZW5kIGluIGEgbm9uLXplcm8gZGlnaXQuIE90aGVyd2lzZSwgdGhlIHN0cmluZyBpcyB3cmFwcGVkIGJ5XG4gKiBgTnVtYmVyKClgIGFuZCBpZiB0aGF0IHJlc3VsdCBpcyBub3QgYE5hTmAsIHRoYXQgbnVtYmVyIHdpbGwgYmUgcmV0dXJuZWQsIG90aGVyd2lzZSB0aGUgc3RyaW5nIGB2YWx1ZWAgd2lsbCBiZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgc3RyaW5nIG9yIG51bGwgdmFsdWUgdG8gY29udmVydCB0byBhIG51bWJlclxuICogQHJldHVybnMgLSBUaGUgYHZhbHVlYCBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgd2hlbiBhcHByb3ByaWF0ZSwgb3RoZXJ3aXNlIHRoZSBgdmFsdWVgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFzTnVtYmVyKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICgvXFwuJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgLy8gJzMuJyBjYW4ndCByZWFsbHkgYmUgY29uc2lkZXJlZCBhIG51bWJlciBldmVuIGlmIGl0IHBhcnNlcyBpbiBqcy4gVGhlXG4gICAgICAgIC8vIHVzZXIgaXMgbW9zdCBsaWtlbHkgZW50ZXJpbmcgYSBmbG9hdC5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoL1xcLjAkLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIHJldHVybiB0aGlzIGFzIGEgc3RyaW5nIGhlcmUsIHRvIGFsbG93IGZvciBpbnB1dCBsaWtlIDMuMDdcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoL1xcLlxcZCowJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgLy8gSXQncyBhIG51bWJlciwgdGhhdCdzIGNvb2wgLSBidXQgd2UgbmVlZCBpdCBhcyBhIHN0cmluZyBzbyBpdCBkb2Vzbid0IHNjcmV3XG4gICAgICAgIC8vIHdpdGggdGhlIHVzZXIgd2hlbiBlbnRlcmluZyBkb2xsYXIgYW1vdW50cyBvciBvdGhlciB2YWx1ZXMgKHN1Y2ggYXMgdGhvc2Ugd2l0aFxuICAgICAgICAvLyBzcGVjaWZpYyBwcmVjaXNpb24gb3IgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cylcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBuID0gTnVtYmVyKHZhbHVlKTtcbiAgICBjb25zdCB2YWxpZCA9IHR5cGVvZiBuID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKG4pO1xuICAgIHJldHVybiB2YWxpZCA/IG4gOiB2YWx1ZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFzTnVtYmVyLmpzLm1hcCIsIi8qKiBCZWxvdyBhcmUgdGhlIGxpc3Qgb2YgYWxsIHRoZSBrZXlzIGludG8gdmFyaW91cyBlbGVtZW50cyBvZiBhIFJKU0ZTY2hlbWEgb3IgVWlTY2hlbWEgdGhhdCBhcmUgdXNlZCBieSB0aGUgdmFyaW91c1xuICogdXRpbGl0eSBmdW5jdGlvbnMuIEluIGFkZGl0aW9uIHRvIHRob3NlIGtleXMsIHRoZXJlIGFyZSB0aGUgc3BlY2lhbCBgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHYCBhbmRcbiAqIGBSSlNGX0FERElUSU9OQUxfUFJPUEVSVElFU19GTEFHYCBmbGFncyB0aGF0IGlzIGFkZGVkIHRvIGEgc2NoZW1hIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyBieSB0aGUgYHJldHJpZXZlU2NoZW1hKClgXG4gKiB1dGlsaXR5LlxuICovXG5leHBvcnQgY29uc3QgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHID0gJ19fYWRkaXRpb25hbF9wcm9wZXJ0eSc7XG5leHBvcnQgY29uc3QgQURESVRJT05BTF9QUk9QRVJUSUVTX0tFWSA9ICdhZGRpdGlvbmFsUHJvcGVydGllcyc7XG5leHBvcnQgY29uc3QgQUxMX09GX0tFWSA9ICdhbGxPZic7XG5leHBvcnQgY29uc3QgQU5ZX09GX0tFWSA9ICdhbnlPZic7XG5leHBvcnQgY29uc3QgQ09OU1RfS0VZID0gJ2NvbnN0JztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0tFWSA9ICdkZWZhdWx0JztcbmV4cG9ydCBjb25zdCBERUZJTklUSU9OU19LRVkgPSAnZGVmaW5pdGlvbnMnO1xuZXhwb3J0IGNvbnN0IERFUEVOREVOQ0lFU19LRVkgPSAnZGVwZW5kZW5jaWVzJztcbmV4cG9ydCBjb25zdCBFTlVNX0tFWSA9ICdlbnVtJztcbmV4cG9ydCBjb25zdCBFUlJPUlNfS0VZID0gJ19fZXJyb3JzJztcbmV4cG9ydCBjb25zdCBJRF9LRVkgPSAnJGlkJztcbmV4cG9ydCBjb25zdCBJRl9LRVkgPSAnaWYnO1xuZXhwb3J0IGNvbnN0IElURU1TX0tFWSA9ICdpdGVtcyc7XG5leHBvcnQgY29uc3QgSlVOS19PUFRJT05fSUQgPSAnXyRqdW5rX29wdGlvbl9zY2hlbWFfaWQkXyc7XG5leHBvcnQgY29uc3QgTkFNRV9LRVkgPSAnJG5hbWUnO1xuZXhwb3J0IGNvbnN0IE9ORV9PRl9LRVkgPSAnb25lT2YnO1xuZXhwb3J0IGNvbnN0IFBST1BFUlRJRVNfS0VZID0gJ3Byb3BlcnRpZXMnO1xuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX0tFWSA9ICdyZXF1aXJlZCc7XG5leHBvcnQgY29uc3QgU1VCTUlUX0JUTl9PUFRJT05TX0tFWSA9ICdzdWJtaXRCdXR0b25PcHRpb25zJztcbmV4cG9ydCBjb25zdCBSRUZfS0VZID0gJyRyZWYnO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlIHdpdGggY29ycmVjdGx5IHNwZWxsZWQgY29uc3RhbnQgYFJKU0ZfQURESVRJT05BTF9QUk9QRVJUSUVTX0ZMQUdgXG4gKi9cbmV4cG9ydCBjb25zdCBSSlNGX0FERElUT05BTF9QUk9QRVJUSUVTX0ZMQUcgPSAnX19yanNmX2FkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbmV4cG9ydCBjb25zdCBSSlNGX0FERElUSU9OQUxfUFJPUEVSVElFU19GTEFHID0gJ19fcmpzZl9hZGRpdGlvbmFsUHJvcGVydGllcyc7XG5leHBvcnQgY29uc3QgUk9PVF9TQ0hFTUFfUFJFRklYID0gJ19fcmpzZl9yb290U2NoZW1hJztcbmV4cG9ydCBjb25zdCBVSV9GSUVMRF9LRVkgPSAndWk6ZmllbGQnO1xuZXhwb3J0IGNvbnN0IFVJX1dJREdFVF9LRVkgPSAndWk6d2lkZ2V0JztcbmV4cG9ydCBjb25zdCBVSV9PUFRJT05TX0tFWSA9ICd1aTpvcHRpb25zJztcbmV4cG9ydCBjb25zdCBVSV9HTE9CQUxfT1BUSU9OU19LRVkgPSAndWk6Z2xvYmFsT3B0aW9ucyc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25zdGFudHMuanMubWFwIiwiaW1wb3J0IHsgVUlfT1BUSU9OU19LRVksIFVJX1dJREdFVF9LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogR2V0IGFsbCBwYXNzZWQgb3B0aW9ucyBmcm9tIHVpOm9wdGlvbnMsIGFuZCB1aTo8b3B0aW9uTmFtZT4sIHJldHVybmluZyB0aGVtIGluIGFuIG9iamVjdCB3aXRoIHRoZSBgdWk6YFxuICogc3RyaXBwZWQgb2ZmLiBBbnkgYGdsb2JhbE9wdGlvbnNgIHdpbGwgYWx3YXlzIGJlIHJldHVybmVkLCB1bmxlc3MgdGhleSBhcmUgb3ZlcnJpZGRlbiBieSBvcHRpb25zIGluIHRoZSBgdWlTY2hlbWFgLlxuICpcbiAqIEBwYXJhbSBbdWlTY2hlbWE9e31dIC0gVGhlIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGdldCBhbnkgYHVpOnh4eGAgb3B0aW9uc1xuICogQHBhcmFtIFtnbG9iYWxPcHRpb25zPXt9XSAtIFRoZSBvcHRpb25hbCBHbG9iYWwgVUkgU2NoZW1hIGZyb20gd2hpY2ggdG8gZ2V0IGFueSBmYWxsYmFjayBgeHh4YCBvcHRpb25zXG4gKiBAcmV0dXJucyAtIEFuIG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgYHVpOnh4eGAgb3B0aW9ucyB3aXRoIHRoZSBgdWk6YCBzdHJpcHBlZCBvZmYgYWxvbmcgd2l0aCBhbGwgYGdsb2JhbE9wdGlvbnNgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVpT3B0aW9ucyh1aVNjaGVtYSA9IHt9LCBnbG9iYWxPcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModWlTY2hlbWEpXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5LmluZGV4T2YoJ3VpOicpID09PSAwKVxuICAgICAgICAucmVkdWNlKChvcHRpb25zLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB1aVNjaGVtYVtrZXldO1xuICAgICAgICBpZiAoa2V5ID09PSBVSV9XSURHRVRfS0VZICYmIGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignU2V0dGluZyBvcHRpb25zIHZpYSB1aTp3aWRnZXQgb2JqZWN0IGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIHVzZSB1aTpvcHRpb25zIGluc3RlYWQnKTtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09IFVJX09QVElPTlNfS0VZICYmIGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4ub3B0aW9ucywgLi4udmFsdWUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vcHRpb25zLCBba2V5LnN1YnN0cmluZygzKV06IHZhbHVlIH07XG4gICAgfSwgeyAuLi5nbG9iYWxPcHRpb25zIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0VWlPcHRpb25zLmpzLm1hcCIsImltcG9ydCBnZXRVaU9wdGlvbnMgZnJvbSAnLi9nZXRVaU9wdGlvbnMnO1xuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBmaWVsZCBkZXNjcmliZWQgYnkgYHNjaGVtYWAsIGhhdmluZyB0aGUgYHVpU2NoZW1hYCBhbmQgYGZvcm1EYXRhYCBzdXBwb3J0cyBleHBhbmRpbmcuIFRoZSBVSSBmb3JcbiAqIHRoZSBmaWVsZCBjYW4gZXhwYW5kIGlmIGl0IGhhcyBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIGlzIG5vdCBmb3JjZWQgYXMgbm9uLWV4cGFuZGFibGUgYnkgdGhlIGB1aVNjaGVtYWAgYW5kIHRoZVxuICogYGZvcm1EYXRhYCBvYmplY3QgZG9lc24ndCBhbHJlYWR5IGhhdmUgYHNjaGVtYS5tYXhQcm9wZXJ0aWVzYCBlbGVtZW50cy5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3IgdGhlIGZpZWxkIHRoYXQgaXMgYmVpbmcgY2hlY2tlZFxuICogQHBhcmFtIFt1aVNjaGVtYT17fV0gLSBUaGUgdWlTY2hlbWEgZm9yIHRoZSBmaWVsZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgZm9ybURhdGEgZm9yIHRoZSBmaWVsZFxuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBzY2hlbWEgZWxlbWVudCBoYXMgYWRkaXRpb25hbFByb3BlcnRpZXMsIGlzIGV4cGFuZGFibGUsIGFuZCBub3QgYXQgdGhlIG1heFByb3BlcnRpZXMgbGltaXRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2FuRXhwYW5kKHNjaGVtYSwgdWlTY2hlbWEgPSB7fSwgZm9ybURhdGEpIHtcbiAgICBpZiAoIXNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHsgZXhwYW5kYWJsZSA9IHRydWUgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgaWYgKGV4cGFuZGFibGUgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBleHBhbmRhYmxlO1xuICAgIH1cbiAgICAvLyBpZiB1aTpvcHRpb25zLmV4cGFuZGFibGUgd2FzIG5vdCBleHBsaWNpdGx5IHNldCB0byBmYWxzZSwgd2UgY2FuIGFkZFxuICAgIC8vIGFub3RoZXIgcHJvcGVydHkgaWYgd2UgaGF2ZSBub3QgZXhjZWVkZWQgbWF4UHJvcGVydGllcyB5ZXRcbiAgICBpZiAoc2NoZW1hLm1heFByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCAmJiBmb3JtRGF0YSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybURhdGEpLmxlbmd0aCA8IHNjaGVtYS5tYXhQcm9wZXJ0aWVzO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNhbkV4cGFuZC5qcy5tYXAiLCIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgaWYgKHVubWFza2VkKSB7XG4gICAgaWYgKGlzT3duKSB7XG4gICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb2JqZWN0VG9TdHJpbmc7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRQcm90b3R5cGU7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQbGFpbk9iamVjdDtcbiIsImltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJ2xvZGFzaC9pc1BsYWluT2JqZWN0JztcbmltcG9ydCB7IEVSUk9SU19LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogR2l2ZW4gYSBgZm9ybURhdGFgIG9iamVjdCwgcmVjdXJzaXZlbHkgY3JlYXRlcyBhIGBGb3JtVmFsaWRhdGlvbmAgZXJyb3IgaGFuZGxpbmcgc3RydWN0dXJlIGFyb3VuZCBpdFxuICpcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgYXJvdW5kIHdoaWNoIHRoZSBlcnJvciBoYW5kbGVyIGlzIGNyZWF0ZWRcbiAqIEByZXR1cm5zIC0gQSBgRm9ybVZhbGlkYXRpb25gIG9iamVjdCBiYXNlZCBvbiB0aGUgYGZvcm1EYXRhYCBzdHJ1Y3R1cmVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlRXJyb3JIYW5kbGVyKGZvcm1EYXRhKSB7XG4gICAgY29uc3QgaGFuZGxlciA9IHtcbiAgICAgICAgLy8gV2Ugc3RvcmUgdGhlIGxpc3Qgb2YgZXJyb3JzIGZvciB0aGlzIG5vZGUgaW4gYSBwcm9wZXJ0eSBuYW1lZCBfX2Vycm9yc1xuICAgICAgICAvLyB0byBhdm9pZCBuYW1lIGNvbGxpc2lvbiB3aXRoIGEgcG9zc2libGUgc3ViIHNjaGVtYSBmaWVsZCBuYW1lZFxuICAgICAgICAvLyAnZXJyb3JzJyAoc2VlIGB1dGlscy50b0Vycm9yU2NoZW1hYCkuXG4gICAgICAgIFtFUlJPUlNfS0VZXTogW10sXG4gICAgICAgIGFkZEVycm9yKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHRoaXNbRVJST1JTX0tFWV0ucHVzaChtZXNzYWdlKTtcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICByZXR1cm4gZm9ybURhdGEucmVkdWNlKChhY2MsIHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmFjYywgW2tleV06IGNyZWF0ZUVycm9ySGFuZGxlcih2YWx1ZSkgfTtcbiAgICAgICAgfSwgaGFuZGxlcik7XG4gICAgfVxuICAgIGlmIChpc1BsYWluT2JqZWN0KGZvcm1EYXRhKSkge1xuICAgICAgICBjb25zdCBmb3JtT2JqZWN0ID0gZm9ybURhdGE7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmb3JtT2JqZWN0KS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtrZXldOiBjcmVhdGVFcnJvckhhbmRsZXIoZm9ybU9iamVjdFtrZXldKSB9O1xuICAgICAgICB9LCBoYW5kbGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVFcnJvckhhbmRsZXIuanMubWFwIiwiLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUNsZWFyO1xuIiwiLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXE7XG4iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzb2NJbmRleE9mO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICBkYXRhLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgfVxuICAtLXRoaXMuc2l6ZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlRGVsZXRlO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUdldDtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlSGFzO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgICsrdGhpcy5zaXplO1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlU2V0O1xuIiwidmFyIGxpc3RDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlQ2xlYXInKSxcbiAgICBsaXN0Q2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVEZWxldGUnKSxcbiAgICBsaXN0Q2FjaGVHZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVHZXQnKSxcbiAgICBsaXN0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVIYXMnKSxcbiAgICBsaXN0Q2FjaGVTZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbkxpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbkxpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbkxpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExpc3RDYWNoZTtcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBTdGFja1xuICovXG5mdW5jdGlvbiBzdGFja0NsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0NsZWFyO1xuIiwiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIHJlc3VsdCA9IGRhdGFbJ2RlbGV0ZSddKGtleSk7XG5cbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrRGVsZXRlO1xuIiwiLyoqXG4gKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tHZXQoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrR2V0O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0hhcztcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcmVKc0RhdGE7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKi9cbmZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hHZXQ7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoSGFzO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoU2V0O1xuIiwidmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaGFzaEdldCA9IHJlcXVpcmUoJy4vX2hhc2hHZXQnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGhhc2hTZXQgPSByZXF1aXJlKCcuL19oYXNoU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2g7XG4iLCJ2YXIgSGFzaCA9IHJlcXVpcmUoJy4vX0hhc2gnKSxcbiAgICBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgdGhpcy5zaXplID0gMDtcbiAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlQ2xlYXI7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuIiwidmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFwRGF0YTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iLCJ2YXIgbWFwQ2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX21hcENhY2hlQ2xlYXInKSxcbiAgICBtYXBDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX21hcENhY2hlRGVsZXRlJyksXG4gICAgbWFwQ2FjaGVHZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZUdldCcpLFxuICAgIG1hcENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVIYXMnKSxcbiAgICBtYXBDYWNoZVNldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgc3RhY2tDbGVhciA9IHJlcXVpcmUoJy4vX3N0YWNrQ2xlYXInKSxcbiAgICBzdGFja0RlbGV0ZSA9IHJlcXVpcmUoJy4vX3N0YWNrRGVsZXRlJyksXG4gICAgc3RhY2tHZXQgPSByZXF1aXJlKCcuL19zdGFja0dldCcpLFxuICAgIHN0YWNrSGFzID0gcmVxdWlyZSgnLi9fc3RhY2tIYXMnKSxcbiAgICBzdGFja1NldCA9IHJlcXVpcmUoJy4vX3N0YWNrU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuU3RhY2sucHJvdG90eXBlLmNsZWFyID0gc3RhY2tDbGVhcjtcblN0YWNrLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBzdGFja0RlbGV0ZTtcblN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcblN0YWNrLnByb3RvdHlwZS5oYXMgPSBzdGFja0hhcztcblN0YWNrLnByb3RvdHlwZS5zZXQgPSBzdGFja1NldDtcblxubW9kdWxlLmV4cG9ydHMgPSBTdGFjaztcbiIsIi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBhZGRcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQGFsaWFzIHB1c2hcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlQWRkO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlSGFzO1xuIiwidmFyIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKSxcbiAgICBzZXRDYWNoZUFkZCA9IHJlcXVpcmUoJy4vX3NldENhY2hlQWRkJyksXG4gICAgc2V0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19zZXRDYWNoZUhhcycpO1xuXG4vKipcbiAqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG5cbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG5TZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0Q2FjaGU7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5U29tZTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheVNvbWUgPSByZXF1aXJlKCcuL19hcnJheVNvbWUnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQXJyYXlzKGFycmF5LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuXG4gIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChhcnJTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICB9XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgIHNlZW4gPSAoYml0bWFzayAmIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpID8gbmV3IFNldENhY2hlIDogdW5kZWZpbmVkO1xuXG4gIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG4gIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2luZGV4XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBhcnJWYWx1ZSwgaW5kZXgsIG90aGVyLCBhcnJheSwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKHNlZW4pIHtcbiAgICAgIGlmICghYXJyYXlTb21lKG90aGVyLCBmdW5jdGlvbihvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWVuLnB1c2gob3RoSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKSB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCEoXG4gICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEFycmF5cztcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVpbnQ4QXJyYXk7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gKi9cbmZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFRvQXJyYXk7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvQXJyYXk7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgbWFwVG9BcnJheSA9IHJlcXVpcmUoJy4vX21hcFRvQXJyYXknKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBjb21wYXJpbmcgb2JqZWN0cyBvZlxuICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNvbXBhcmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0cyB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuXG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAhZXF1YWxGdW5jKG5ldyBVaW50OEFycmF5KG9iamVjdCksIG5ldyBVaW50OEFycmF5KG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICByZXR1cm4gZXEoK29iamVjdCwgK290aGVyKTtcblxuICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgLy8gYXMgZXF1YWwuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUc7XG4gICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgfVxuICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQnlUYWc7XG4iLCIvKipcbiAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlQdXNoO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheTtcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0QWxsS2V5cztcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheUZpbHRlcihhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXNJbmRleCA9IDAsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUZpbHRlcjtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBlbXB0eSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgYXJyYXlzID0gXy50aW1lcygyLCBfLnN0dWJBcnJheSk7XG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAqIC8vID0+IFtbXSwgW11dXG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICByZXR1cm4gW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkFycmF5O1xuIiwidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICovXG52YXIgZ2V0U3ltYm9scyA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgcmV0dXJuIGFycmF5RmlsdGVyKG5hdGl2ZUdldFN5bWJvbHMob2JqZWN0KSwgZnVuY3Rpb24oc3ltYm9sKSB7XG4gICAgcmV0dXJuIHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqZWN0LCBzeW1ib2wpO1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0U3ltYm9scztcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRpbWVzO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FyZ3VtZW50c2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICovXG5mdW5jdGlvbiBiYXNlSXNBcmd1bWVudHModmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNBcmd1bWVudHM7XG4iLCJ2YXIgYmFzZUlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9fYmFzZUlzQXJndW1lbnRzJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcmd1bWVudHM7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkZhbHNlO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW5kZXg7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzVHlwZWRBcnJheTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5hcnk7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBub2RlVXRpbDtcbiIsInZhciBiYXNlSXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fYmFzZUlzVHlwZWRBcnJheScpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUeXBlZEFycmF5O1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUHJvdG90eXBlO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzO1xuIiwidmFyIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5cycpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXM7XG4iLCJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZTtcbiIsInZhciBhcnJheUxpa2VLZXlzID0gcmVxdWlyZSgnLi9fYXJyYXlMaWtlS2V5cycpLFxuICAgIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy5rZXlzKCdoaScpO1xuICogLy8gPT4gWycwJywgJzEnXVxuICovXG5mdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0KSA6IGJhc2VLZXlzKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5cztcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5cztcbiIsInZhciBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgb2JqU3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gb2JqU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IG9iamVjdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gIH1cbiAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbE9iamVjdHM7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFdlYWtNYXAgPSBnZXROYXRpdmUocm9vdCwgJ1dlYWtNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBXZWFrTWFwO1xuIiwidmFyIERhdGFWaWV3ID0gcmVxdWlyZSgnLi9fRGF0YVZpZXcnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBQcm9taXNlID0gcmVxdWlyZSgnLi9fUHJvbWlzZScpLFxuICAgIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIFdlYWtNYXAgPSByZXF1aXJlKCcuL19XZWFrTWFwJyksXG4gICAgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG52YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xudmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbi8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbmlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGFnO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgZXF1YWxCeVRhZyA9IHJlcXVpcmUoJy4vX2VxdWFsQnlUYWcnKSxcbiAgICBlcXVhbE9iamVjdHMgPSByZXF1aXJlKCcuL19lcXVhbE9iamVjdHMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLFxuICAgICAgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLFxuICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgb2JqVGFnID0gb2JqVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvYmpUYWc7XG4gIG90aFRhZyA9IG90aFRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb3RoVGFnO1xuXG4gIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBpc1NhbWVUYWcgPSBvYmpUYWcgPT0gb3RoVGFnO1xuXG4gIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG9iaklzQXJyID0gdHJ1ZTtcbiAgICBvYmpJc09iaiA9IGZhbHNlO1xuICB9XG4gIGlmIChpc1NhbWVUYWcgJiYgIW9iaklzT2JqKSB7XG4gICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gIH1cbiAgaWYgKCEoYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHKSkge1xuICAgIHZhciBvYmpJc1dyYXBwZWQgPSBvYmpJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ19fd3JhcHBlZF9fJyksXG4gICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgaWYgKG9iaklzV3JhcHBlZCB8fCBvdGhJc1dyYXBwZWQpIHtcbiAgICAgIHZhciBvYmpVbndyYXBwZWQgPSBvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCxcbiAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICB9XG4gIGlmICghaXNTYW1lVGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWxEZWVwO1xuIiwidmFyIGJhc2VJc0VxdWFsRGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsRGVlcCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNFcXVhbGAgd2hpY2ggc3VwcG9ydHMgcGFydGlhbCBjb21wYXJpc29uc1xuICogYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gKiAgMSAtIFVub3JkZXJlZCBjb21wYXJpc29uXG4gKiAgMiAtIFBhcnRpYWwgY29tcGFyaXNvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsIHx8IG90aGVyID09IG51bGwgfHwgKCFpc09iamVjdExpa2UodmFsdWUpICYmICFpc09iamVjdExpa2Uob3RoZXIpKSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICB9XG4gIHJldHVybiBiYXNlSXNFcXVhbERlZXAodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBiYXNlSXNFcXVhbCwgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsO1xuIiwidmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzRXF1YWxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggdXAgdG9cbiAqIHNpeCBhcmd1bWVudHM6IChvYmpWYWx1ZSwgb3RoVmFsdWUgWywgaW5kZXh8a2V5LCBvYmplY3QsIG90aGVyLCBzdGFja10pLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gaXNHcmVldGluZyh2YWx1ZSkge1xuICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICogfVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlKSB7XG4gKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKG90aFZhbHVlKSkge1xuICogICAgIHJldHVybiB0cnVlO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIGFycmF5ID0gWydoZWxsbycsICdnb29kYnllJ107XG4gKiB2YXIgb3RoZXIgPSBbJ2hpJywgJ2dvb2RieWUnXTtcbiAqXG4gKiBfLmlzRXF1YWxXaXRoKGFycmF5LCBvdGhlciwgY3VzdG9taXplcik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzRXF1YWxXaXRoKHZhbHVlLCBvdGhlciwgY3VzdG9taXplcikge1xuICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gIHZhciByZXN1bHQgPSBjdXN0b21pemVyID8gY3VzdG9taXplcih2YWx1ZSwgb3RoZXIpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIHVuZGVmaW5lZCwgY3VzdG9taXplcikgOiAhIXJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VxdWFsV2l0aDtcbiIsImltcG9ydCBpc0VxdWFsV2l0aCBmcm9tICdsb2Rhc2gvaXNFcXVhbFdpdGgnO1xuLyoqIEltcGxlbWVudHMgYSBkZWVwIGVxdWFscyB1c2luZyB0aGUgYGxvZGFzaC5pc0VxdWFsV2l0aGAgZnVuY3Rpb24sIHRoYXQgcHJvdmlkZXMgYSBjdXN0b21pemVkIGNvbXBhcmF0b3IgdGhhdFxuICogYXNzdW1lcyBhbGwgZnVuY3Rpb25zIGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBwYXJhbSBhIC0gVGhlIGZpcnN0IGVsZW1lbnQgdG8gY29tcGFyZVxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIGVsZW1lbnQgdG8gY29tcGFyZVxuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBgYWAgYW5kIGBiYCBhcmUgZGVlcGx5IGVxdWFsLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVlcEVxdWFscyhhLCBiKSB7XG4gICAgcmV0dXJuIGlzRXF1YWxXaXRoKGEsIGIsIChvYmosIG90aGVyKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvdGhlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgLy8gQXNzdW1lIGFsbCBmdW5jdGlvbnMgYXJlIGVxdWl2YWxlbnRcbiAgICAgICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmpzZi10ZWFtL3JlYWN0LWpzb25zY2hlbWEtZm9ybS9pc3N1ZXMvMjU1XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBmYWxsYmFjayB0byBkZWZhdWx0IGlzRXF1YWxzIGJlaGF2aW9yXG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWVwRXF1YWxzLmpzLm1hcCIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N5bWJvbDtcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgIHJlSXNQbGFpblByb3AgPSAvXlxcdyokLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJyB8fFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleTtcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAqIHByb3ZpZGVkLCBpdCBkZXRlcm1pbmVzIHRoZSBjYWNoZSBrZXkgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdCBiYXNlZCBvbiB0aGVcbiAqIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBhcmd1bWVudFxuICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAqIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIG1lbW9pemVkIGZ1bmN0aW9uLlxuICpcbiAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAqIGZ1bmN0aW9uLiBJdHMgY3JlYXRpb24gbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcmVwbGFjaW5nIHRoZSBgXy5tZW1vaXplLkNhY2hlYFxuICogY29uc3RydWN0b3Igd2l0aCBvbmUgd2hvc2UgaW5zdGFuY2VzIGltcGxlbWVudCB0aGVcbiAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gKiBtZXRob2QgaW50ZXJmYWNlIG9mIGBjbGVhcmAsIGBkZWxldGVgLCBgZ2V0YCwgYGhhc2AsIGFuZCBgc2V0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZXNvbHZlcl0gVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIGNhY2hlIGtleS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICogdmFyIG90aGVyID0geyAnYyc6IDMsICdkJzogNCB9O1xuICpcbiAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiB2YWx1ZXMob3RoZXIpO1xuICogLy8gPT4gWzMsIDRdXG4gKlxuICogb2JqZWN0LmEgPSAyO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiAvLyBNb2RpZnkgdGhlIHJlc3VsdCBjYWNoZS5cbiAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWydhJywgJ2InXVxuICpcbiAqIC8vIFJlcGxhY2UgYF8ubWVtb2l6ZS5DYWNoZWAuXG4gKiBfLm1lbW9pemUuQ2FjaGUgPSBXZWFrTWFwO1xuICovXG5mdW5jdGlvbiBtZW1vaXplKGZ1bmMsIHJlc29sdmVyKSB7XG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nIHx8IChyZXNvbHZlciAhPSBudWxsICYmIHR5cGVvZiByZXNvbHZlciAhPSAnZnVuY3Rpb24nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAga2V5ID0gcmVzb2x2ZXIgPyByZXNvbHZlci5hcHBseSh0aGlzLCBhcmdzKSA6IGFyZ3NbMF0sXG4gICAgICAgIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgbWVtb2l6ZWQuY2FjaGUgPSBjYWNoZS5zZXQoa2V5LCByZXN1bHQpIHx8IGNhY2hlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIG1lbW9pemVkLmNhY2hlID0gbmV3IChtZW1vaXplLkNhY2hlIHx8IE1hcENhY2hlKTtcbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG4vLyBFeHBvc2UgYE1hcENhY2hlYC5cbm1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplO1xuIiwidmFyIG1lbW9pemUgPSByZXF1aXJlKCcuL21lbW9pemUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xudmFyIE1BWF9NRU1PSVpFX1NJWkUgPSA1MDA7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICogY2FjaGUgd2hlbiBpdCBleGNlZWRzIGBNQVhfTUVNT0laRV9TSVpFYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1lbW9pemVDYXBwZWQoZnVuYykge1xuICB2YXIgcmVzdWx0ID0gbWVtb2l6ZShmdW5jLCBmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgY2FjaGUuY2xlYXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfSk7XG5cbiAgdmFyIGNhY2hlID0gcmVzdWx0LmNhY2hlO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVDYXBwZWQ7XG4iLCJ2YXIgbWVtb2l6ZUNhcHBlZCA9IHJlcXVpcmUoJy4vX21lbW9pemVDYXBwZWQnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlUHJvcE5hbWUgPSAvW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2c7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlRXNjYXBlQ2hhciA9IC9cXFxcKFxcXFwpPy9nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGEgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbnZhciBzdHJpbmdUb1BhdGggPSBtZW1vaXplQ2FwcGVkKGZ1bmN0aW9uKHN0cmluZykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDYgLyogLiAqLykge1xuICAgIHJlc3VsdC5wdXNoKCcnKTtcbiAgfVxuICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbihtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3ViU3RyaW5nKSB7XG4gICAgcmVzdWx0LnB1c2gocXVvdGUgPyBzdWJTdHJpbmcucmVwbGFjZShyZUVzY2FwZUNoYXIsICckMScpIDogKG51bWJlciB8fCBtYXRjaCkpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ1RvUGF0aDtcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlNYXA7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVG9TdHJpbmc7XG4iLCJ2YXIgYmFzZVRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVRvU3RyaW5nJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1N0cmluZyhudWxsKTtcbiAqIC8vID0+ICcnXG4gKlxuICogXy50b1N0cmluZygtMCk7XG4gKiAvLyA9PiAnLTAnXG4gKlxuICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICogLy8gPT4gJzEsMiwzJ1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1N0cmluZztcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLFxuICAgIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RQYXRoO1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd8c3ltYm9sfSBSZXR1cm5zIHRoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0tleTtcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmdldGAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWZhdWx0IHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldChvYmplY3QsIHBhdGgpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gMCxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gIH1cbiAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXQ7XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjcuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gKlxuICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gKiAvLyA9PiAnZGVmYXVsdCdcbiAqL1xuZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldDtcbiIsInZhciBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gZW1wdHkgb2JqZWN0LCBjb2xsZWN0aW9uLCBtYXAsIG9yIHNldC5cbiAqXG4gKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAqIHByb3BlcnRpZXMuXG4gKlxuICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gKiBqUXVlcnktbGlrZSBjb2xsZWN0aW9ucyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgbGVuZ3RoYCBvZiBgMGAuXG4gKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRW1wdHkobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KHRydWUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSgxKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgJiZcbiAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDtcbiAgfVxuICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgfVxuICBpZiAoaXNQcm90b3R5cGUodmFsdWUpKSB7XG4gICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRW1wdHk7XG4iLCJ2YXIgaGFzRXhjYXBlID0gL34vXG52YXIgZXNjYXBlTWF0Y2hlciA9IC9+WzAxXS9nXG5mdW5jdGlvbiBlc2NhcGVSZXBsYWNlciAobSkge1xuICBzd2l0Y2ggKG0pIHtcbiAgICBjYXNlICd+MSc6IHJldHVybiAnLydcbiAgICBjYXNlICd+MCc6IHJldHVybiAnfidcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdGlsZGUgZXNjYXBlOiAnICsgbSlcbn1cblxuZnVuY3Rpb24gdW50aWxkZSAoc3RyKSB7XG4gIGlmICghaGFzRXhjYXBlLnRlc3Qoc3RyKSkgcmV0dXJuIHN0clxuICByZXR1cm4gc3RyLnJlcGxhY2UoZXNjYXBlTWF0Y2hlciwgZXNjYXBlUmVwbGFjZXIpXG59XG5cbmZ1bmN0aW9uIHNldHRlciAob2JqLCBwb2ludGVyLCB2YWx1ZSkge1xuICB2YXIgcGFydFxuICB2YXIgaGFzTmV4dFBhcnRcblxuICBmb3IgKHZhciBwID0gMSwgbGVuID0gcG9pbnRlci5sZW5ndGg7IHAgPCBsZW47KSB7XG4gICAgaWYgKHBvaW50ZXJbcF0gPT09ICdjb25zdHJ1Y3RvcicgfHwgcG9pbnRlcltwXSA9PT0gJ3Byb3RvdHlwZScgfHwgcG9pbnRlcltwXSA9PT0gJ19fcHJvdG9fXycpIHJldHVybiBvYmpcblxuICAgIHBhcnQgPSB1bnRpbGRlKHBvaW50ZXJbcCsrXSlcbiAgICBoYXNOZXh0UGFydCA9IGxlbiA+IHBcblxuICAgIGlmICh0eXBlb2Ygb2JqW3BhcnRdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gc3VwcG9ydCBzZXR0aW5nIG9mIC8tXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopICYmIHBhcnQgPT09ICctJykge1xuICAgICAgICBwYXJ0ID0gb2JqLmxlbmd0aFxuICAgICAgfVxuXG4gICAgICAvLyBzdXBwb3J0IG5lc3RlZCBvYmplY3RzL2FycmF5IHdoZW4gc2V0dGluZyB2YWx1ZXNcbiAgICAgIGlmIChoYXNOZXh0UGFydCkge1xuICAgICAgICBpZiAoKHBvaW50ZXJbcF0gIT09ICcnICYmIHBvaW50ZXJbcF0gPCBJbmZpbml0eSkgfHwgcG9pbnRlcltwXSA9PT0gJy0nKSBvYmpbcGFydF0gPSBbXVxuICAgICAgICBlbHNlIG9ialtwYXJ0XSA9IHt9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFoYXNOZXh0UGFydCkgYnJlYWtcbiAgICBvYmogPSBvYmpbcGFydF1cbiAgfVxuXG4gIHZhciBvbGRWYWx1ZSA9IG9ialtwYXJ0XVxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgZGVsZXRlIG9ialtwYXJ0XVxuICBlbHNlIG9ialtwYXJ0XSA9IHZhbHVlXG4gIHJldHVybiBvbGRWYWx1ZVxufVxuXG5mdW5jdGlvbiBjb21waWxlUG9pbnRlciAocG9pbnRlcikge1xuICBpZiAodHlwZW9mIHBvaW50ZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcG9pbnRlciA9IHBvaW50ZXIuc3BsaXQoJy8nKVxuICAgIGlmIChwb2ludGVyWzBdID09PSAnJykgcmV0dXJuIHBvaW50ZXJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTiBwb2ludGVyLicpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwb2ludGVyKSkge1xuICAgIGZvciAoY29uc3QgcGFydCBvZiBwb2ludGVyKSB7XG4gICAgICBpZiAodHlwZW9mIHBhcnQgIT09ICdzdHJpbmcnICYmIHR5cGVvZiBwYXJ0ICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTiBwb2ludGVyLiBNdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIG51bWJlci4nKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcG9pbnRlclxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04gcG9pbnRlci4nKVxufVxuXG5mdW5jdGlvbiBnZXQgKG9iaiwgcG9pbnRlcikge1xuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dCBvYmplY3QuJylcbiAgcG9pbnRlciA9IGNvbXBpbGVQb2ludGVyKHBvaW50ZXIpXG4gIHZhciBsZW4gPSBwb2ludGVyLmxlbmd0aFxuICBpZiAobGVuID09PSAxKSByZXR1cm4gb2JqXG5cbiAgZm9yICh2YXIgcCA9IDE7IHAgPCBsZW47KSB7XG4gICAgb2JqID0gb2JqW3VudGlsZGUocG9pbnRlcltwKytdKV1cbiAgICBpZiAobGVuID09PSBwKSByZXR1cm4gb2JqXG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmZ1bmN0aW9uIHNldCAob2JqLCBwb2ludGVyLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dCBvYmplY3QuJylcbiAgcG9pbnRlciA9IGNvbXBpbGVQb2ludGVyKHBvaW50ZXIpXG4gIGlmIChwb2ludGVyLmxlbmd0aCA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04gcG9pbnRlciBmb3Igc2V0LicpXG4gIHJldHVybiBzZXR0ZXIob2JqLCBwb2ludGVyLCB2YWx1ZSlcbn1cblxuZnVuY3Rpb24gY29tcGlsZSAocG9pbnRlcikge1xuICB2YXIgY29tcGlsZWQgPSBjb21waWxlUG9pbnRlcihwb2ludGVyKVxuICByZXR1cm4ge1xuICAgIGdldDogZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGdldChvYmplY3QsIGNvbXBpbGVkKVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAob2JqZWN0LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHNldChvYmplY3QsIGNvbXBpbGVkLCB2YWx1ZSlcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0cy5nZXQgPSBnZXRcbmV4cG9ydHMuc2V0ID0gc2V0XG5leHBvcnRzLmNvbXBpbGUgPSBjb21waWxlXG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlFYWNoO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0eTtcbiIsInZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAqIHZhbHVlIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnblZhbHVlO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnblZhbHVlO1xuIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19iYXNlQXNzaWduVmFsdWUnKTtcblxuLyoqXG4gKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzIHRvIGNvcHkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGlzTmV3ID0gIW9iamVjdDtcbiAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIGlmIChpc05ldykge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weU9iamVjdDtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ247XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzSW47XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIG5hdGl2ZUtleXNJbiA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXNJbicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gIH1cbiAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzSW47XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5c0luID0gcmVxdWlyZSgnLi9fYmFzZUtleXNJbicpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzSW47XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduSW4ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbkluO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIGFsbG9jVW5zYWZlID0gQnVmZmVyID8gQnVmZmVyLmFsbG9jVW5zYWZlIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICB9XG4gIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVCdWZmZXI7XG4iLCIvKipcbiAqIENvcGllcyB0aGUgdmFsdWVzIG9mIGBzb3VyY2VgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcblxuICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5QXJyYXk7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpO1xuXG4vKipcbiAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHM7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHNJbjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpO1xuXG4vKipcbiAqIENvcGllcyBvd24gYW5kIGluaGVyaXRlZCBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5U3ltYm9sc0luKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHNJbjtcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzSW47XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIGFycmF5IGNsb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVBcnJheShhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gbmV3IGFycmF5LmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgLy8gQWRkIHByb3BlcnRpZXMgYXNzaWduZWQgYnkgYFJlZ0V4cCNleGVjYC5cbiAgaWYgKGxlbmd0aCAmJiB0eXBlb2YgYXJyYXlbMF0gPT0gJ3N0cmluZycgJiYgaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwgJ2luZGV4JykpIHtcbiAgICByZXN1bHQuaW5kZXggPSBhcnJheS5pbmRleDtcbiAgICByZXN1bHQuaW5wdXQgPSBhcnJheS5pbnB1dDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUFycmF5O1xuIiwidmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUFycmF5QnVmZmVyO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBkYXRhIHZpZXcuXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcihkYXRhVmlldy5idWZmZXIpIDogZGF0YVZpZXcuYnVmZmVyO1xuICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVEYXRhVmlldztcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgIGZsYWdzIGZyb20gdGhlaXIgY29lcmNlZCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlRmxhZ3MgPSAvXFx3KiQvO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgcmVnZXhwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHJlZ2V4cCBUaGUgcmVnZXhwIHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHJlZ2V4cC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVSZWdFeHAocmVnZXhwKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgcmVnZXhwLmNvbnN0cnVjdG9yKHJlZ2V4cC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhyZWdleHApKTtcbiAgcmVzdWx0Lmxhc3RJbmRleCA9IHJlZ2V4cC5sYXN0SW5kZXg7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVSZWdFeHA7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHN5bWJvbCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICByZXR1cm4gc3ltYm9sVmFsdWVPZiA/IE9iamVjdChzeW1ib2xWYWx1ZU9mLmNhbGwoc3ltYm9sKSkgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVN5bWJvbDtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgdHlwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lVHlwZWRBcnJheTtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpLFxuICAgIGNsb25lRGF0YVZpZXcgPSByZXF1aXJlKCcuL19jbG9uZURhdGFWaWV3JyksXG4gICAgY2xvbmVSZWdFeHAgPSByZXF1aXJlKCcuL19jbG9uZVJlZ0V4cCcpLFxuICAgIGNsb25lU3ltYm9sID0gcmVxdWlyZSgnLi9fY2xvbmVTeW1ib2wnKSxcbiAgICBjbG9uZVR5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19jbG9uZVR5cGVkQXJyYXknKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE1hcGAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgYFNldGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgdmFyIEN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVyKG9iamVjdCk7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO1xuXG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgZmxvYXQzMlRhZzogY2FzZSBmbG9hdDY0VGFnOlxuICAgIGNhc2UgaW50OFRhZzogY2FzZSBpbnQxNlRhZzogY2FzZSBpbnQzMlRhZzpcbiAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lVHlwZWRBcnJheShvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVJlZ0V4cChvYmplY3QpO1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQnlUYWc7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGU7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbnZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBvYmplY3QoKSB7fVxuICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICBpZiAoIWlzT2JqZWN0KHByb3RvKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBpZiAob2JqZWN0Q3JlYXRlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0Q3JlYXRlKHByb3RvKTtcbiAgICB9XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgIHZhciByZXN1bHQgPSBuZXcgb2JqZWN0O1xuICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNyZWF0ZTtcbiIsInZhciBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmICFpc1Byb3RvdHlwZShvYmplY3QpKVxuICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZU9iamVjdDtcbiIsInZhciBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNNYXA7XG4iLCJ2YXIgYmFzZUlzTWFwID0gcmVxdWlyZSgnLi9fYmFzZUlzTWFwJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTWFwYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc01hcChuZXcgTWFwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFwO1xuIiwidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1NldGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzU2V0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gc2V0VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1NldDtcbiIsInZhciBiYXNlSXNTZXQgPSByZXF1aXJlKCcuL19iYXNlSXNTZXQnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzU2V0ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNTZXQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTZXRgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU2V0KG5ldyBTZXQpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTZXQobmV3IFdlYWtTZXQpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzU2V0ID0gbm9kZUlzU2V0ID8gYmFzZVVuYXJ5KG5vZGVJc1NldCkgOiBiYXNlSXNTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTZXQ7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbicpLFxuICAgIGJhc2VBc3NpZ25JbiA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25JbicpLFxuICAgIGNsb25lQnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVCdWZmZXInKSxcbiAgICBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKSxcbiAgICBjb3B5U3ltYm9scyA9IHJlcXVpcmUoJy4vX2NvcHlTeW1ib2xzJyksXG4gICAgY29weVN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2NvcHlTeW1ib2xzSW4nKSxcbiAgICBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpLFxuICAgIGdldEFsbEtleXNJbiA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXNJbicpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGluaXRDbG9uZUFycmF5ID0gcmVxdWlyZSgnLi9faW5pdENsb25lQXJyYXknKSxcbiAgICBpbml0Q2xvbmVCeVRhZyA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZUJ5VGFnJyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzTWFwID0gcmVxdWlyZSgnLi9pc01hcCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU2V0ID0gcmVxdWlyZSgnLi9pc1NldCcpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG52YXIgY2xvbmVhYmxlVGFncyA9IHt9O1xuY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbmNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuY2xvbmVhYmxlVGFnc1tib29sVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0ZVRhZ10gPVxuY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZmxvYXQ2NFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbmNsb25lYWJsZVRhZ3NbaW50MzJUYWddID0gY2xvbmVhYmxlVGFnc1ttYXBUYWddID1cbmNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9IGNsb25lYWJsZVRhZ3Nbb2JqZWN0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddID0gY2xvbmVhYmxlVGFnc1tzeW1ib2xUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDhUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50OENsYW1wZWRUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG5jbG9uZWFibGVUYWdzW2Vycm9yVGFnXSA9IGNsb25lYWJsZVRhZ3NbZnVuY1RhZ10gPVxuY2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsb25lYCBhbmQgYF8uY2xvbmVEZWVwYCB3aGljaCB0cmFja3NcbiAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gRGVlcCBjbG9uZVxuICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gKiAgNCAtIENsb25lIHN5bWJvbHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIG9iamVjdHMgYW5kIHRoZWlyIGNsb25lIGNvdW50ZXJwYXJ0cy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VDbG9uZSh2YWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCBvYmplY3QsIHN0YWNrKSB7XG4gIHZhciByZXN1bHQsXG4gICAgICBpc0RlZXAgPSBiaXRtYXNrICYgQ0xPTkVfREVFUF9GTEFHLFxuICAgICAgaXNGbGF0ID0gYml0bWFzayAmIENMT05FX0ZMQVRfRkxBRyxcbiAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICByZXN1bHQgPSBvYmplY3QgPyBjdXN0b21pemVyKHZhbHVlLCBrZXksIG9iamVjdCwgc3RhY2spIDogY3VzdG9taXplcih2YWx1ZSk7XG4gIH1cbiAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTtcbiAgaWYgKGlzQXJyKSB7XG4gICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgIGlmICghaXNEZWVwKSB7XG4gICAgICByZXR1cm4gY29weUFycmF5KHZhbHVlLCByZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgIGlmIChpc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjbG9uZUJ1ZmZlcih2YWx1ZSwgaXNEZWVwKTtcbiAgICB9XG4gICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkge1xuICAgICAgcmVzdWx0ID0gKGlzRmxhdCB8fCBpc0Z1bmMpID8ge30gOiBpbml0Q2xvbmVPYmplY3QodmFsdWUpO1xuICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgcmV0dXJuIGlzRmxhdFxuICAgICAgICAgID8gY29weVN5bWJvbHNJbih2YWx1ZSwgYmFzZUFzc2lnbkluKHJlc3VsdCwgdmFsdWUpKVxuICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID8gdmFsdWUgOiB7fTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgfVxuICB9XG4gIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KHZhbHVlKTtcbiAgaWYgKHN0YWNrZWQpIHtcbiAgICByZXR1cm4gc3RhY2tlZDtcbiAgfVxuICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgaWYgKGlzU2V0KHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUpIHtcbiAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNNYXAodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHQuc2V0KGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGtleXNGdW5jID0gaXNGdWxsXG4gICAgPyAoaXNGbGF0ID8gZ2V0QWxsS2V5c0luIDogZ2V0QWxsS2V5cylcbiAgICA6IChpc0ZsYXQgPyBrZXlzSW4gOiBrZXlzKTtcblxuICB2YXIgcHJvcHMgPSBpc0FyciA/IHVuZGVmaW5lZCA6IGtleXNGdW5jKHZhbHVlKTtcbiAgYXJyYXlFYWNoKHByb3BzIHx8IHZhbHVlLCBmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgaWYgKHByb3BzKSB7XG4gICAgICBrZXkgPSBzdWJWYWx1ZTtcbiAgICAgIHN1YlZhbHVlID0gdmFsdWVba2V5XTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgcG9wdWxhdGUgY2xvbmUgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBhc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ2xvbmU7XG4iLCIvKipcbiAqIEdldHMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsYXN0O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zbGljZWAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICB9XG4gIGVuZCA9IGVuZCA+IGxlbmd0aCA/IGxlbmd0aCA6IGVuZDtcbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuZ3RoO1xuICB9XG4gIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTtcbiAgc3RhcnQgPj4+PSAwO1xuXG4gIHZhciByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTbGljZTtcbiIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VTbGljZSA9IHJlcXVpcmUoJy4vX2Jhc2VTbGljZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIHBhcmVudCB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHBhdGggVGhlIHBhdGggdG8gZ2V0IHRoZSBwYXJlbnQgdmFsdWUgb2YuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGFyZW50IHZhbHVlLlxuICovXG5mdW5jdGlvbiBwYXJlbnQob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBwYXRoLmxlbmd0aCA8IDIgPyBvYmplY3QgOiBiYXNlR2V0KG9iamVjdCwgYmFzZVNsaWNlKHBhdGgsIDAsIC0xKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBsYXN0ID0gcmVxdWlyZSgnLi9sYXN0JyksXG4gICAgcGFyZW50ID0gcmVxdWlyZSgnLi9fcGFyZW50JyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIHRvIHVuc2V0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbnNldChvYmplY3QsIHBhdGgpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgfHwgZGVsZXRlIG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuc2V0O1xuIiwidmFyIGlzUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL2lzUGxhaW5PYmplY3QnKTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLm9taXRgIHRvIGN1c3RvbWl6ZSBpdHMgYF8uY2xvbmVEZWVwYCB1c2UgdG8gb25seSBjbG9uZSBwbGFpblxuICogb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB1bmNsb25lZCB2YWx1ZSBvciBgdW5kZWZpbmVkYCB0byBkZWZlciBjbG9uaW5nIHRvIGBfLmNsb25lRGVlcGAuXG4gKi9cbmZ1bmN0aW9uIGN1c3RvbU9taXRDbG9uZSh2YWx1ZSkge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdCh2YWx1ZSkgPyB1bmRlZmluZWQgOiB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjdXN0b21PbWl0Q2xvbmU7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZsYXR0ZW5hYmxlIGBhcmd1bWVudHNgIG9iamVjdCBvciBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAhIShzcHJlYWRhYmxlU3ltYm9sICYmIHZhbHVlICYmIHZhbHVlW3NwcmVhZGFibGVTeW1ib2xdKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZsYXR0ZW5hYmxlO1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzRmxhdHRlbmFibGUgPSByZXF1aXJlKCcuL19pc0ZsYXR0ZW5hYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKTtcblxuLyoqXG4gKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIDEpIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdHRlbjtcbiIsIi8qKlxuICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnKTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgfVxuICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseTtcbiIsInZhciBhcHBseSA9IHJlcXVpcmUoJy4vX2FwcGx5Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgIH1cbiAgICBpbmRleCA9IC0xO1xuICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICB9XG4gICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlclJlc3Q7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmV0dXJuIGZyb20gdGhlIG5ldyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzWzBdID09PSBvYmplY3RzWzFdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb25zdGFudDtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKlxuICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaWRlbnRpdHk7XG4iLCJ2YXIgY29uc3RhbnQgPSByZXF1aXJlKCcuL2NvbnN0YW50JyksXG4gICAgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19kZWZpbmVQcm9wZXJ0eScpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBzZXRUb1N0cmluZ2Agd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBiYXNlU2V0VG9TdHJpbmcgPSAhZGVmaW5lUHJvcGVydHkgPyBpZGVudGl0eSA6IGZ1bmN0aW9uKGZ1bmMsIHN0cmluZykge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICdlbnVtZXJhYmxlJzogZmFsc2UsXG4gICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAnd3JpdGFibGUnOiB0cnVlXG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2V0VG9TdHJpbmc7XG4iLCIvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVOb3cgPSBEYXRlLm5vdztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvcnRPdXQ7XG4iLCJ2YXIgYmFzZVNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVNldFRvU3RyaW5nJyksXG4gICAgc2hvcnRPdXQgPSByZXF1aXJlKCcuL19zaG9ydE91dCcpO1xuXG4vKipcbiAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvU3RyaW5nO1xuIiwidmFyIGZsYXR0ZW4gPSByZXF1aXJlKCcuL2ZsYXR0ZW4nKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIGZsYXR0ZW5zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGZsYXRSZXN0KGZ1bmMpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHVuZGVmaW5lZCwgZmxhdHRlbiksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdFJlc3Q7XG4iLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VDbG9uZSA9IHJlcXVpcmUoJy4vX2Jhc2VDbG9uZScpLFxuICAgIGJhc2VVbnNldCA9IHJlcXVpcmUoJy4vX2Jhc2VVbnNldCcpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGN1c3RvbU9taXRDbG9uZSA9IHJlcXVpcmUoJy4vX2N1c3RvbU9taXRDbG9uZScpLFxuICAgIGZsYXRSZXN0ID0gcmVxdWlyZSgnLi9fZmxhdFJlc3QnKSxcbiAgICBnZXRBbGxLZXlzSW4gPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzSW4nKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZVxuICogb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBwYXRocyBvZiBgb2JqZWN0YCB0aGF0IGFyZSBub3Qgb21pdHRlZC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgY29uc2lkZXJhYmx5IHNsb3dlciB0aGFuIGBfLnBpY2tgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBvbWl0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gKlxuICogXy5vbWl0KG9iamVjdCwgWydhJywgJ2MnXSk7XG4gKiAvLyA9PiB7ICdiJzogJzInIH1cbiAqL1xudmFyIG9taXQgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICB2YXIgaXNEZWVwID0gZmFsc2U7XG4gIHBhdGhzID0gYXJyYXlNYXAocGF0aHMsIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICBpc0RlZXAgfHwgKGlzRGVlcCA9IHBhdGgubGVuZ3RoID4gMSk7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0pO1xuICBjb3B5T2JqZWN0KG9iamVjdCwgZ2V0QWxsS2V5c0luKG9iamVjdCksIHJlc3VsdCk7XG4gIGlmIChpc0RlZXApIHtcbiAgICByZXN1bHQgPSBiYXNlQ2xvbmUocmVzdWx0LCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9GTEFUX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbU9taXRDbG9uZSk7XG4gIH1cbiAgdmFyIGxlbmd0aCA9IHBhdGhzLmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgYmFzZVVuc2V0KHJlc3VsdCwgcGF0aHNbbGVuZ3RoXSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9taXQ7XG4iLCJpbXBvcnQganNvbnBvaW50ZXIgZnJvbSAnanNvbnBvaW50ZXInO1xuaW1wb3J0IG9taXQgZnJvbSAnbG9kYXNoL29taXQnO1xuaW1wb3J0IHsgUkVGX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKiBTcGxpdHMgb3V0IHRoZSB2YWx1ZSBhdCB0aGUgYGtleWAgaW4gYG9iamVjdGAgZnJvbSB0aGUgYG9iamVjdGAsIHJldHVybmluZyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGluIHRoZSBmaXJzdFxuICogbG9jYXRpb24sIHRoZSBgb2JqZWN0YCBtaW51cyB0aGUgYGtleTogdmFsdWVgIGFuZCBpbiB0aGUgc2Vjb25kIGxvY2F0aW9uIHRoZSBgdmFsdWVgLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGZyb20gdGhlIG9iamVjdCB0byBleHRyYWN0XG4gKiBAcGFyYW0gb2JqZWN0IC0gVGhlIG9iamVjdCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGVsZW1lbnRcbiAqIEByZXR1cm5zIC0gQW4gYXJyYXkgd2l0aCB0aGUgZmlyc3QgdmFsdWUgYmVpbmcgdGhlIG9iamVjdCBtaW51cyB0aGUgYGtleWAgZWxlbWVudCBhbmQgdGhlIHNlY29uZCBlbGVtZW50IGJlaW5nIHRoZVxuICogICAgICB2YWx1ZSBmcm9tIGBvYmplY3Rba2V5XWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0S2V5RWxlbWVudEZyb21PYmplY3Qoa2V5LCBvYmplY3QpIHtcbiAgICBjb25zdCB2YWx1ZSA9IG9iamVjdFtrZXldO1xuICAgIGNvbnN0IHJlbWFpbmluZyA9IG9taXQob2JqZWN0LCBba2V5XSk7XG4gICAgcmV0dXJuIFtyZW1haW5pbmcsIHZhbHVlXTtcbn1cbi8qKiBHaXZlbiB0aGUgbmFtZSBvZiBhIGAkcmVmYCBmcm9tIHdpdGhpbiBhIHNjaGVtYSwgdXNpbmcgdGhlIGByb290U2NoZW1hYCwgcmVjdXJzaXZlbHkgbG9vayB1cCBhbmQgcmV0dXJuIHRoZVxuICogc3ViLXNjaGVtYSB1c2luZyB0aGUgcGF0aCBwcm92aWRlZCBieSB0aGF0IHJlZmVyZW5jZS4gSWYgYCNgIGlzIG5vdCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSByZWZlcmVuY2UsIHRoZSBwYXRoXG4gKiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgc2NoZW1hLCBvciB0aGUgcmVmZXJlbmNlIHJlc29sdmVzIGNpcmN1bGFybHkgYmFjayB0byBpdHNlbGYsIHRoZW4gdGhyb3cgYW4gRXJyb3IuXG4gKiBPdGhlcndpc2UgcmV0dXJuIHRoZSBzdWItc2NoZW1hLiBBbHNvIGRlYWxzIHdpdGggbmVzdGVkIGAkcmVmYHMgaW4gdGhlIHN1Yi1zY2hlbWEuXG4gKlxuICogQHBhcmFtICRyZWYgLSBUaGUgcmVmIHN0cmluZyBmb3Igd2hpY2ggdGhlIHNjaGVtYSBkZWZpbml0aW9uIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYT17fV0gLSBUaGUgcm9vdCBzY2hlbWEgaW4gd2hpY2ggdG8gc2VhcmNoIGZvciB0aGUgZGVmaW5pdGlvblxuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gTGlzdCBvZiAkcmVmcyBhbHJlYWR5IHJlc29sdmVkIHRvIHByZXZlbnQgcmVjdXJzaW9uXG4gKiBAcmV0dXJucyAtIFRoZSBzdWItc2NoZW1hIHdpdGhpbiB0aGUgYHJvb3RTY2hlbWFgIHdoaWNoIG1hdGNoZXMgdGhlIGAkcmVmYCBpZiBpdCBleGlzdHNcbiAqIEB0aHJvd3MgLSBFcnJvciBpbmRpY2F0aW5nIHRoYXQgbm8gc2NoZW1hIGZvciB0aGF0IHJlZmVyZW5jZSBjb3VsZCBiZSByZXNvbHZlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFNjaGVtYURlZmluaXRpb25SZWN1cnNpdmUoJHJlZiwgcm9vdFNjaGVtYSA9IHt9LCByZWN1cnNlTGlzdCA9IFtdKSB7XG4gICAgY29uc3QgcmVmID0gJHJlZiB8fCAnJztcbiAgICBsZXQgZGVjb2RlZFJlZjtcbiAgICBpZiAocmVmLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgICAvLyBEZWNvZGUgVVJJIGZyYWdtZW50IHJlcHJlc2VudGF0aW9uLlxuICAgICAgICBkZWNvZGVkUmVmID0gZGVjb2RlVVJJQ29tcG9uZW50KHJlZi5zdWJzdHJpbmcoMSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIGRlZmluaXRpb24gZm9yICR7JHJlZn0uYCk7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnQgPSBqc29ucG9pbnRlci5nZXQocm9vdFNjaGVtYSwgZGVjb2RlZFJlZik7XG4gICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGEgZGVmaW5pdGlvbiBmb3IgJHskcmVmfS5gKTtcbiAgICB9XG4gICAgY29uc3QgbmV4dFJlZiA9IGN1cnJlbnRbUkVGX0tFWV07XG4gICAgaWYgKG5leHRSZWYpIHtcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMuXG4gICAgICAgIGlmIChyZWN1cnNlTGlzdC5pbmNsdWRlcyhuZXh0UmVmKSkge1xuICAgICAgICAgICAgaWYgKHJlY3Vyc2VMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGVmaW5pdGlvbiBmb3IgJHskcmVmfSBpcyBhIGNpcmN1bGFyIHJlZmVyZW5jZWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgW2ZpcnN0UmVmLCAuLi5yZXN0UmVmc10gPSByZWN1cnNlTGlzdDtcbiAgICAgICAgICAgIGNvbnN0IGNpcmN1bGFyUGF0aCA9IFsuLi5yZXN0UmVmcywgcmVmLCBmaXJzdFJlZl0uam9pbignIC0+ICcpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEZWZpbml0aW9uIGZvciAke2ZpcnN0UmVmfSBjb250YWlucyBhIGNpcmN1bGFyIHJlZmVyZW5jZSB0aHJvdWdoICR7Y2lyY3VsYXJQYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtyZW1haW5pbmcsIHRoZVJlZl0gPSBzcGxpdEtleUVsZW1lbnRGcm9tT2JqZWN0KFJFRl9LRVksIGN1cnJlbnQpO1xuICAgICAgICBjb25zdCBzdWJTY2hlbWEgPSBmaW5kU2NoZW1hRGVmaW5pdGlvblJlY3Vyc2l2ZSh0aGVSZWYsIHJvb3RTY2hlbWEsIFsuLi5yZWN1cnNlTGlzdCwgcmVmXSk7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhyZW1haW5pbmcpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnJlbWFpbmluZywgLi4uc3ViU2NoZW1hIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1YlNjaGVtYTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG59XG4vKiogR2l2ZW4gdGhlIG5hbWUgb2YgYSBgJHJlZmAgZnJvbSB3aXRoaW4gYSBzY2hlbWEsIHVzaW5nIHRoZSBgcm9vdFNjaGVtYWAsIGxvb2sgdXAgYW5kIHJldHVybiB0aGUgc3ViLXNjaGVtYSB1c2luZyB0aGVcbiAqIHBhdGggcHJvdmlkZWQgYnkgdGhhdCByZWZlcmVuY2UuIElmIGAjYCBpcyBub3QgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgcmVmZXJlbmNlLCB0aGUgcGF0aCBkb2VzIG5vdCBleGlzdCBpblxuICogdGhlIHNjaGVtYSwgb3IgdGhlIHJlZmVyZW5jZSByZXNvbHZlcyBjaXJjdWxhcmx5IGJhY2sgdG8gaXRzZWxmLCB0aGVuIHRocm93IGFuIEVycm9yLiBPdGhlcndpc2UgcmV0dXJuIHRoZVxuICogc3ViLXNjaGVtYS4gQWxzbyBkZWFscyB3aXRoIG5lc3RlZCBgJHJlZmBzIGluIHRoZSBzdWItc2NoZW1hLlxuICpcbiAqIEBwYXJhbSAkcmVmIC0gVGhlIHJlZiBzdHJpbmcgZm9yIHdoaWNoIHRoZSBzY2hlbWEgZGVmaW5pdGlvbiBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWE9e31dIC0gVGhlIHJvb3Qgc2NoZW1hIGluIHdoaWNoIHRvIHNlYXJjaCBmb3IgdGhlIGRlZmluaXRpb25cbiAqIEByZXR1cm5zIC0gVGhlIHN1Yi1zY2hlbWEgd2l0aGluIHRoZSBgcm9vdFNjaGVtYWAgd2hpY2ggbWF0Y2hlcyB0aGUgYCRyZWZgIGlmIGl0IGV4aXN0c1xuICogQHRocm93cyAtIEVycm9yIGluZGljYXRpbmcgdGhhdCBubyBzY2hlbWEgZm9yIHRoYXQgcmVmZXJlbmNlIGNvdWxkIGJlIHJlc29sdmVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZpbmRTY2hlbWFEZWZpbml0aW9uKCRyZWYsIHJvb3RTY2hlbWEgPSB7fSkge1xuICAgIGNvbnN0IHJlY3Vyc2VMaXN0ID0gW107XG4gICAgcmV0dXJuIGZpbmRTY2hlbWFEZWZpbml0aW9uUmVjdXJzaXZlKCRyZWYsIHJvb3RTY2hlbWEsIHJlY3Vyc2VMaXN0KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZpbmRTY2hlbWFEZWZpbml0aW9uLmpzLm1hcCIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzO1xuIiwidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBmYWxzZTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgaWYgKCEocmVzdWx0ID0gb2JqZWN0ICE9IG51bGwgJiYgaGFzRnVuYyhvYmplY3QsIGtleSkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gIH1cbiAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1BhdGg7XG4iLCJ2YXIgYmFzZUhhcyA9IHJlcXVpcmUoJy4vX2Jhc2VIYXMnKSxcbiAgICBoYXNQYXRoID0gcmVxdWlyZSgnLi9faGFzUGF0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3QgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IHsgJ2InOiAyIH0gfTtcbiAqIHZhciBvdGhlciA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAqXG4gKiBfLmhhcyhvYmplY3QsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob2JqZWN0LCAnYS5iJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhcyhvdGhlciwgJ2EnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGhhcyhvYmplY3QsIHBhdGgpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXM7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIFRvIGV4Y2x1ZGUgYEluZmluaXR5YCwgYC1JbmZpbml0eWAsIGFuZCBgTmFOYCwgd2hpY2ggYXJlXG4gKiBjbGFzc2lmaWVkIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTnVtYmVyKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcignMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IG51bWJlclRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNOdW1iZXI7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3RyaW5nLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTdHJpbmcoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTdHJpbmcoMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTdHJpbmc7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UmVkdWNlKGFycmF5LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgYWNjdW11bGF0b3IgPSBhcnJheVsrK2luZGV4XTtcbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlSZWR1Y2U7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRm9yO1xuIiwidmFyIGNyZWF0ZUJhc2VGb3IgPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRm9yJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG52YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yO1xuIiwidmFyIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93bmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3Iob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvck93bjtcbiIsInZhciBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYGJhc2VFYWNoYCBvciBgYmFzZUVhY2hSaWdodGAgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYSBjb2xsZWN0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRWFjaChlYWNoRnVuYywgZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cbiAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICByZXR1cm4gZWFjaEZ1bmMoY29sbGVjdGlvbiwgaXRlcmF0ZWUpO1xuICAgIH1cbiAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTEsXG4gICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuXG4gICAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0sIGluZGV4LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRWFjaDtcbiIsInZhciBiYXNlRm9yT3duID0gcmVxdWlyZSgnLi9fYmFzZUZvck93bicpLFxuICAgIGNyZWF0ZUJhc2VFYWNoID0gcmVxdWlyZSgnLi9fY3JlYXRlQmFzZUVhY2gnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAqL1xudmFyIGJhc2VFYWNoID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93bik7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUVhY2g7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gIWxlbmd0aDtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWF0Y2g7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIEdldHMgdGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGdldE1hdGNoRGF0YShvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLFxuICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgcmVzdWx0W2xlbmd0aF0gPSBba2V5LCB2YWx1ZSwgaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXRjaERhdGE7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLFxuICAgIGdldE1hdGNoRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hdGNoRGF0YScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hdGNoZXM7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzSW47XG4iLCJ2YXIgYmFzZUhhc0luID0gcmVxdWlyZSgnLi9fYmFzZUhhc0luJyksXG4gICAgaGFzUGF0aCA9IHJlcXVpcmUoJy4vX2hhc1BhdGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IG9yIGluaGVyaXRlZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhLmInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdiJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXNJbihvYmplY3QsIHBhdGgpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzSW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc0luO1xuIiwidmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKSxcbiAgICBnZXQgPSByZXF1aXJlKCcuL2dldCcpLFxuICAgIGhhc0luID0gcmVxdWlyZSgnLi9oYXNJbicpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19pc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc1Byb3BlcnR5YCB3aGljaCBkb2Vzbid0IGNsb25lIGBzcmNWYWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgaWYgKGlzS2V5KHBhdGgpICYmIGlzU3RyaWN0Q29tcGFyYWJsZShzcmNWYWx1ZSkpIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUodG9LZXkocGF0aCksIHNyY1ZhbHVlKTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIG9ialZhbHVlID0gZ2V0KG9iamVjdCwgcGF0aCk7XG4gICAgcmV0dXJuIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG9ialZhbHVlID09PSBzcmNWYWx1ZSlcbiAgICAgID8gaGFzSW4ob2JqZWN0LCBwYXRoKVxuICAgICAgOiBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hdGNoZXNQcm9wZXJ0eTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVByb3BlcnR5O1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUHJvcGVydHlgIHdoaWNoIHN1cHBvcnRzIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5RGVlcChwYXRoKSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eURlZXA7XG4iLCJ2YXIgYmFzZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5JyksXG4gICAgYmFzZVByb3BlcnR5RGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eURlZXAnKSxcbiAgICBpc0tleSA9IHJlcXVpcmUoJy4vX2lzS2V5JyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFtcbiAqICAgeyAnYSc6IHsgJ2InOiAyIH0gfSxcbiAqICAgeyAnYSc6IHsgJ2InOiAxIH0gfVxuICogXTtcbiAqXG4gKiBfLm1hcChvYmplY3RzLCBfLnByb3BlcnR5KCdhLmInKSk7XG4gKiAvLyA9PiBbMiwgMV1cbiAqXG4gKiBfLm1hcChfLnNvcnRCeShvYmplY3RzLCBfLnByb3BlcnR5KFsnYScsICdiJ10pKSwgJ2EuYicpO1xuICogLy8gPT4gWzEsIDJdXG4gKi9cbmZ1bmN0aW9uIHByb3BlcnR5KHBhdGgpIHtcbiAgcmV0dXJuIGlzS2V5KHBhdGgpID8gYmFzZVByb3BlcnR5KHRvS2V5KHBhdGgpKSA6IGJhc2VQcm9wZXJ0eURlZXAocGF0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvcGVydHk7XG4iLCJ2YXIgYmFzZU1hdGNoZXMgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlcycpLFxuICAgIGJhc2VNYXRjaGVzUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlc1Byb3BlcnR5JyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIHByb3BlcnR5ID0gcmVxdWlyZSgnLi9wcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGl0ZXJhdGVlLlxuICovXG5mdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGlkZW50aXR5O1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcHJvcGVydHkodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJdGVyYXRlZTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVkdWNlYCBhbmQgYF8ucmVkdWNlUmlnaHRgLCB3aXRob3V0IHN1cHBvcnRcbiAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYCB1c2luZyBgZWFjaEZ1bmNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5pdEFjY3VtIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBvZlxuICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlUmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBlYWNoRnVuYykge1xuICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgPyAoaW5pdEFjY3VtID0gZmFsc2UsIHZhbHVlKVxuICAgICAgOiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmVkdWNlO1xuIiwidmFyIGFycmF5UmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXlSZWR1Y2UnKSxcbiAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZVJlZHVjZSA9IHJlcXVpcmUoJy4vX2Jhc2VSZWR1Y2UnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAqIGFuZCBgc29ydEJ5YFxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICogICByZXR1cm4gc3VtICsgbjtcbiAqIH0sIDApO1xuICogLy8gPT4gM1xuICpcbiAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAqICAgcmV0dXJuIHJlc3VsdDtcbiAqIH0sIHt9KTtcbiAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZSA6IGJhc2VSZWR1Y2UsXG4gICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVkdWNlO1xuIiwidmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYGlkZW50aXR5YCBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGNhc3QgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNhc3RGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgPyB2YWx1ZSA6IGlkZW50aXR5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RGdW5jdGlvbjtcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmltbWVkRW5kSW5kZXg7XG4iLCJ2YXIgdHJpbW1lZEVuZEluZGV4ID0gcmVxdWlyZSgnLi9fdHJpbW1lZEVuZEluZGV4Jyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udHJpbWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byB0cmltLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUcmltKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nXG4gICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICA6IHN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVHJpbTtcbiIsInZhciBiYXNlVHJpbSA9IHJlcXVpcmUoJy4vX2Jhc2VUcmltJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTnVtYmVyO1xuIiwidmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0Zpbml0ZTtcbiIsInZhciB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0ludGVnZXI7XG4iLCJ2YXIgYmFzZVRpbWVzID0gcmVxdWlyZSgnLi9fYmFzZVRpbWVzJyksXG4gICAgY2FzdEZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fY2FzdEZ1bmN0aW9uJyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHRoZSBtYXhpbXVtIGxlbmd0aCBhbmQgaW5kZXggb2YgYW4gYXJyYXkuICovXG52YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDQyOTQ5NjcyOTU7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBJbnZva2VzIHRoZSBpdGVyYXRlZSBgbmAgdGltZXMsIHJldHVybmluZyBhbiBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZlxuICogZWFjaCBpbnZvY2F0aW9uLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKGluZGV4KS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDMsIFN0cmluZyk7XG4gKiAvLyA9PiBbJzAnLCAnMScsICcyJ11cbiAqXG4gKiAgXy50aW1lcyg0LCBfLmNvbnN0YW50KDApKTtcbiAqIC8vID0+IFswLCAwLCAwLCAwXVxuICovXG5mdW5jdGlvbiB0aW1lcyhuLCBpdGVyYXRlZSkge1xuICBuID0gdG9JbnRlZ2VyKG4pO1xuICBpZiAobiA8IDEgfHwgbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGluZGV4ID0gTUFYX0FSUkFZX0xFTkdUSCxcbiAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihuLCBNQVhfQVJSQVlfTEVOR1RIKTtcblxuICBpdGVyYXRlZSA9IGNhc3RGdW5jdGlvbihpdGVyYXRlZSk7XG4gIG4gLT0gTUFYX0FSUkFZX0xFTkdUSDtcblxuICB2YXIgcmVzdWx0ID0gYmFzZVRpbWVzKGxlbmd0aCwgaXRlcmF0ZWUpO1xuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0aW1lcztcbiIsImltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgeyBQUk9QRVJUSUVTX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKiBDb21wYXJlcyB0aGUgdmFsdWUgb2YgYGRpc2NyaW1pbmF0b3JGaWVsZGAgd2l0aGluIGBmb3JtRGF0YWAgYWdhaW5zdCB0aGUgdmFsdWUgb2YgYGRpc2NyaW1pbmF0b3JGaWVsZGAgd2l0aGluIHNjaGVtYSBmb3IgZWFjaCBgb3B0aW9uYC5cbiAqIFJldHVybnMgaW5kZXggb2YgZmlyc3QgYG9wdGlvbmAgd2hvc2UgZGlzY3JpbWluYXRvciBtYXRjaGVzIGZvcm1EYXRhLiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCB3b3JrIHdpdGggZGlzY3JpbWluYXRvcnMgb2YgYFwidHlwZVwiOiBcIm9iamVjdFwiYCBhbmQgYFwidHlwZVwiOiBcImFycmF5XCJgXG4gKlxuICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdXNlZCB0byBmaWd1cmUgb3V0IGEgbWF0Y2hcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyB0byBmaW5kIGEgbWF0Y2hpbmcgb3B0aW9ucyBmcm9tXG4gKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gKiAgICAgICAgICBkZXRlcm1pbmUgd2hpY2ggb3B0aW9uIGlzIHNlbGVjdGVkXG4gKiBAcmV0dXJucyAtIFRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCBvcHRpb24gb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIG1hdGNoXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wdGlvbk1hdGNoaW5nU2ltcGxlRGlzY3JpbWluYXRvcihmb3JtRGF0YSwgb3B0aW9ucywgZGlzY3JpbWluYXRvckZpZWxkKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChmb3JtRGF0YSAmJiBkaXNjcmltaW5hdG9yRmllbGQpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQoZm9ybURhdGEsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zW2ldO1xuICAgICAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldChvcHRpb24sIFtQUk9QRVJUSUVTX0tFWSwgZGlzY3JpbWluYXRvckZpZWxkXSwge30pO1xuICAgICAgICAgICAgaWYgKGRpc2NyaW1pbmF0b3IudHlwZSA9PT0gJ29iamVjdCcgfHwgZGlzY3JpbWluYXRvci50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGlzY3JpbWluYXRvci5jb25zdCA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoX2EgPSBkaXNjcmltaW5hdG9yLmVudW0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm47XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBoYXMgZnJvbSAnbG9kYXNoL2hhcyc7XG5pbXBvcnQgaXNOdW1iZXIgZnJvbSAnbG9kYXNoL2lzTnVtYmVyJztcbmltcG9ydCB7IFBST1BFUlRJRVNfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBnZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IgZnJvbSAnLi4vZ2V0T3B0aW9uTWF0Y2hpbmdTaW1wbGVEaXNjcmltaW5hdG9yJztcbi8qKiBHaXZlbiB0aGUgYGZvcm1EYXRhYCBhbmQgbGlzdCBvZiBgb3B0aW9uc2AsIGF0dGVtcHRzIHRvIGZpbmQgdGhlIGluZGV4IG9mIHRoZSBvcHRpb24gdGhhdCBiZXN0IG1hdGNoZXMgdGhlIGRhdGEuXG4gKiBEZXByZWNhdGVkLCB1c2UgYGdldEZpcnN0TWF0Y2hpbmdPcHRpb24oKWAgaW5zdGVhZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHVzZWQgdG8gZmlndXJlIG91dCBhIG1hdGNoXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgdG8gZmluZCBhIG1hdGNoaW5nIG9wdGlvbnMgZnJvbVxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtkaXNjcmltaW5hdG9yRmllbGRdIC0gVGhlIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGZpZWxkIHdpdGhpbiB0aGUgb3B0aW9ucyBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdXNlZCB0b1xuICogICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIG9wdGlvbiBpcyBzZWxlY3RlZFxuICogQHJldHVybnMgLSBUaGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgb3B0aW9uIG9yIDAgaWYgbm9uZSBpcyBhdmFpbGFibGVcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgZm9ybURhdGEsIG9wdGlvbnMsIHJvb3RTY2hlbWEsIGRpc2NyaW1pbmF0b3JGaWVsZCkge1xuICAgIC8vIEZvciBwZXJmb3JtYW5jZSwgc2tpcCB2YWxpZGF0aW5nIHN1YnNjaGVtYXMgaWYgZm9ybURhdGEgaXMgdW5kZWZpbmVkLiBXZSBqdXN0XG4gICAgLy8gd2FudCB0byBnZXQgdGhlIGZpcnN0IG9wdGlvbiBpbiB0aGF0IGNhc2UuXG4gICAgaWYgKGZvcm1EYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNvbnN0IHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaCA9IGdldE9wdGlvbk1hdGNoaW5nU2ltcGxlRGlzY3JpbWluYXRvcihmb3JtRGF0YSwgb3B0aW9ucywgZGlzY3JpbWluYXRvckZpZWxkKTtcbiAgICBpZiAoaXNOdW1iZXIoc2ltcGxlRGlzY3JpbWluYXRvck1hdGNoKSkge1xuICAgICAgICByZXR1cm4gc2ltcGxlRGlzY3JpbWluYXRvck1hdGNoO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9uc1tpXTtcbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGRpc2NyaW1pbmF0b3IgZmllbGQsIHRoZW4gd2Ugd2lsbCB1c2UgdGhpcyB0byBtYWtlIHRoZSBkZXRlcm1pbmF0aW9uXG4gICAgICAgIGlmIChkaXNjcmltaW5hdG9yRmllbGQgJiYgaGFzKG9wdGlvbiwgW1BST1BFUlRJRVNfS0VZLCBkaXNjcmltaW5hdG9yRmllbGRdKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQoZm9ybURhdGEsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gZ2V0KG9wdGlvbiwgW1BST1BFUlRJRVNfS0VZLCBkaXNjcmltaW5hdG9yRmllbGRdLCB7fSk7XG4gICAgICAgICAgICBpZiAodmFsaWRhdG9yLmlzVmFsaWQoZGlzY3JpbWluYXRvciwgdmFsdWUsIHJvb3RTY2hlbWEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob3B0aW9uW1BST1BFUlRJRVNfS0VZXSkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIHNjaGVtYSBkZXNjcmliZXMgYW4gb2JqZWN0IHRoZW4gd2UgbmVlZCB0byBhZGQgc2xpZ2h0bHkgbW9yZVxuICAgICAgICAgICAgLy8gc3RyaWN0IG1hdGNoaW5nIHRvIHRoZSBzY2hlbWEsIGJlY2F1c2UgdW5sZXNzIHRoZSBzY2hlbWEgdXNlcyB0aGVcbiAgICAgICAgICAgIC8vIFwicmVxdWlyZXNcIiBrZXl3b3JkLCBhbiBvYmplY3Qgd2lsbCBtYXRjaCB0aGUgc2NoZW1hIGFzIGxvbmcgYXMgaXRcbiAgICAgICAgICAgIC8vIGRvZXNuJ3QgaGF2ZSBtYXRjaGluZyBrZXlzIHdpdGggYSBjb25mbGljdGluZyB0eXBlLiBUbyBkbyB0aGlzIHdlIHVzZSBhblxuICAgICAgICAgICAgLy8gXCJhbnlPZlwiIHdpdGggYW4gYXJyYXkgb2YgcmVxdWlyZXMuIFRoaXMgYXVnbWVudGF0aW9uIGV4cHJlc3NlcyB0aGF0IHRoZVxuICAgICAgICAgICAgLy8gc2NoZW1hIHNob3VsZCBtYXRjaCBpZiBhbnkgb2YgdGhlIGtleXMgaW4gdGhlIHNjaGVtYSBhcmUgcHJlc2VudCBvbiB0aGVcbiAgICAgICAgICAgIC8vIG9iamVjdCBhbmQgcGFzcyB2YWxpZGF0aW9uLlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBcImFueU9mXCIgc2NoZW1hIHRoYXQgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIG9mIHRoZSBrZXlzIGluIHRoZVxuICAgICAgICAgICAgLy8gXCJwcm9wZXJ0aWVzXCIgb2JqZWN0XG4gICAgICAgICAgICBjb25zdCByZXF1aXJlc0FueU9mID0ge1xuICAgICAgICAgICAgICAgIGFueU9mOiBPYmplY3Qua2V5cyhvcHRpb25bUFJPUEVSVElFU19LRVldKS5tYXAoKGtleSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFtrZXldLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgYXVnbWVudGVkU2NoZW1hO1xuICAgICAgICAgICAgLy8gSWYgdGhlIFwiYW55T2ZcIiBrZXl3b3JkIGFscmVhZHkgZXhpc3RzLCB3cmFwIHRoZSBhdWdtZW50YXRpb24gaW4gYW4gXCJhbGxPZlwiXG4gICAgICAgICAgICBpZiAob3B0aW9uLmFueU9mKSB7XG4gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgc2hhbGxvdyBjbG9uZSBvZiB0aGUgb3B0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgeyAuLi5zaGFsbG93Q2xvbmUgfSA9IG9wdGlvbjtcbiAgICAgICAgICAgICAgICBpZiAoIXNoYWxsb3dDbG9uZS5hbGxPZikge1xuICAgICAgICAgICAgICAgICAgICBzaGFsbG93Q2xvbmUuYWxsT2YgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIFwiYWxsT2ZcIiBhbHJlYWR5IGV4aXN0cywgc2hhbGxvdyBjbG9uZSB0aGUgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgc2hhbGxvd0Nsb25lLmFsbE9mID0gc2hhbGxvd0Nsb25lLmFsbE9mLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNoYWxsb3dDbG9uZS5hbGxPZi5wdXNoKHJlcXVpcmVzQW55T2YpO1xuICAgICAgICAgICAgICAgIGF1Z21lbnRlZFNjaGVtYSA9IHNoYWxsb3dDbG9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGF1Z21lbnRlZFNjaGVtYSA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbiwgcmVxdWlyZXNBbnlPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIFwicmVxdWlyZWRcIiBmaWVsZCBhcyBpdCdzIGxpa2VseSB0aGF0IG5vdCBhbGwgZmllbGRzIGhhdmVcbiAgICAgICAgICAgIC8vIGJlZW4gZmlsbGVkIGluIHlldCwgd2hpY2ggd2lsbCBtZWFuIHRoYXQgdGhlIHNjaGVtYSBpcyBub3QgdmFsaWRcbiAgICAgICAgICAgIGRlbGV0ZSBhdWdtZW50ZWRTY2hlbWEucmVxdWlyZWQ7XG4gICAgICAgICAgICBpZiAodmFsaWRhdG9yLmlzVmFsaWQoYXVnbWVudGVkU2NoZW1hLCBmb3JtRGF0YSwgcm9vdFNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWxpZGF0b3IuaXNWYWxpZChvcHRpb24sIGZvcm1EYXRhLCByb290U2NoZW1hKSkge1xuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRNYXRjaGluZ09wdGlvbi5qcy5tYXAiLCJpbXBvcnQgZ2V0TWF0Y2hpbmdPcHRpb24gZnJvbSAnLi9nZXRNYXRjaGluZ09wdGlvbic7XG4vKiogR2l2ZW4gdGhlIGBmb3JtRGF0YWAgYW5kIGxpc3Qgb2YgYG9wdGlvbnNgLCBhdHRlbXB0cyB0byBmaW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb3B0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgZGF0YS5cbiAqIEFsd2F5cyByZXR1cm5zIHRoZSBmaXJzdCBvcHRpb24gaWYgdGhlcmUgaXMgbm90aGluZyB0aGF0IG1hdGNoZXMuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB1c2VkIHRvIGZpZ3VyZSBvdXQgYSBtYXRjaFxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRvIGZpbmQgYSBtYXRjaGluZyBvcHRpb25zIGZyb21cbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZGlzY3JpbWluYXRvckZpZWxkXSAtIFRoZSBvcHRpb25hbCBuYW1lIG9mIHRoZSBmaWVsZCB3aXRoaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHVzZWQgdG9cbiAqICAgICAgICAgIGRldGVybWluZSB3aGljaCBvcHRpb24gaXMgc2VsZWN0ZWRcbiAqIEByZXR1cm5zIC0gVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBtYXRjaGVkIG9wdGlvbiBvciAwIGlmIG5vbmUgaXMgYXZhaWxhYmxlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEZpcnN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCBmb3JtRGF0YSwgb3B0aW9ucywgcm9vdFNjaGVtYSwgZGlzY3JpbWluYXRvckZpZWxkKSB7XG4gICAgcmV0dXJuIGdldE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgZm9ybURhdGEsIG9wdGlvbnMsIHJvb3RTY2hlbWEsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRGaXJzdE1hdGNoaW5nT3B0aW9uLmpzLm1hcCIsInZhciBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKlxuICogUGVyZm9ybXMgYSBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZVxuICogZXF1aXZhbGVudC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2Qgc3VwcG9ydHMgY29tcGFyaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsXG4gKiBkYXRlIG9iamVjdHMsIGVycm9yIG9iamVjdHMsIG1hcHMsIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsXG4gKiBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWQgYXJyYXlzLiBgT2JqZWN0YCBvYmplY3RzIGFyZSBjb21wYXJlZFxuICogYnkgdGhlaXIgb3duLCBub3QgaW5oZXJpdGVkLCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuIEZ1bmN0aW9ucyBhbmQgRE9NXG4gKiBub2RlcyBhcmUgY29tcGFyZWQgYnkgc3RyaWN0IGVxdWFsaXR5LCBpLmUuIGA9PT1gLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmlzRXF1YWwob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogb2JqZWN0ID09PSBvdGhlcjtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRXF1YWwodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRXF1YWw7XG4iLCJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zZXRgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgIG5lc3RlZCA9IG9iamVjdDtcblxuICB3aGlsZSAobmVzdGVkICE9IG51bGwgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgIG5ld1ZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJyB8fCBrZXkgPT09ICdjb25zdHJ1Y3RvcicgfHwga2V5ID09PSAncHJvdG90eXBlJykge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggIT0gbGFzdEluZGV4KSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgIG5ld1ZhbHVlID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIGtleSwgbmVzdGVkKSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgPyBvYmpWYWx1ZVxuICAgICAgICAgIDogKGlzSW5kZXgocGF0aFtpbmRleCArIDFdKSA/IFtdIDoge30pO1xuICAgICAgfVxuICAgIH1cbiAgICBhc3NpZ25WYWx1ZShuZXN0ZWQsIGtleSwgbmV3VmFsdWUpO1xuICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldDtcbiIsInZhciBiYXNlU2V0ID0gcmVxdWlyZSgnLi9fYmFzZVNldCcpO1xuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgYSBwb3J0aW9uIG9mIGBwYXRoYCBkb2Vzbid0IGV4aXN0LFxuICogaXQncyBjcmVhdGVkLiBBcnJheXMgYXJlIGNyZWF0ZWQgZm9yIG1pc3NpbmcgaW5kZXggcHJvcGVydGllcyB3aGlsZSBvYmplY3RzXG4gKiBhcmUgY3JlYXRlZCBmb3IgYWxsIG90aGVyIG1pc3NpbmcgcHJvcGVydGllcy4gVXNlIGBfLnNldFdpdGhgIHRvIGN1c3RvbWl6ZVxuICogYHBhdGhgIGNyZWF0aW9uLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAqXG4gKiBfLnNldChvYmplY3QsICdhWzBdLmIuYycsIDQpO1xuICogY29uc29sZS5sb2cob2JqZWN0LmFbMF0uYi5jKTtcbiAqIC8vID0+IDRcbiAqXG4gKiBfLnNldChvYmplY3QsIFsneCcsICcwJywgJ3knLCAneiddLCA1KTtcbiAqIGNvbnNvbGUubG9nKG9iamVjdC54WzBdLnkueik7XG4gKiAvLyA9PiA1XG4gKi9cbmZ1bmN0aW9uIHNldChvYmplY3QsIHBhdGgsIHZhbHVlKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0O1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKlxuICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gKiB9LCBbXSk7XG4gKiAvLyA9PiBbNCwgOV1cbiAqXG4gKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybShvYmplY3QsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgaWYgKGFjY3VtdWxhdG9yID09IG51bGwpIHtcbiAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpc0FyciA/IG5ldyBDdG9yIDogW107XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNGdW5jdGlvbihDdG9yKSA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpIDoge307XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYWNjdW11bGF0b3IgPSB7fTtcbiAgICB9XG4gIH1cbiAgKGlzQXJyTGlrZSA/IGFycmF5RWFjaCA6IGJhc2VGb3JPd24pKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmFuc2Zvcm07XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduTWVyZ2VWYWx1ZTtcbiIsInZhciBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAqIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheS1saWtlIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2VPYmplY3Q7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzYWZlR2V0O1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBwbGFpbiBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIG5ldyBGb28pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgXy50b1BsYWluT2JqZWN0KG5ldyBGb28pKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gKi9cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3QodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvUGxhaW5PYmplY3Q7XG4iLCJ2YXIgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBjbG9uZUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQnVmZmVyJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5JyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0JyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpLFxuICAgIHRvUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL3RvUGxhaW5PYmplY3QnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLFxuICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gIGlmIChzdGFja2VkKSB7XG4gICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICBpZiAoaXNDb21tb24pIHtcbiAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHNyY1ZhbHVlKSxcbiAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBjb3B5QXJyYXkob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICB9XG4gIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2VEZWVwO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBhc3NpZ25NZXJnZVZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduTWVyZ2VWYWx1ZScpLFxuICAgIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAgYmFzZU1lcmdlRGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZURlZXAnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpLFxuICAgIHNhZmVHZXQgPSByZXF1aXJlKCcuL19zYWZlR2V0Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfSwga2V5c0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2U7XG4iLCJ2YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgb3ZlclJlc3QgPSByZXF1aXJlKCcuL19vdmVyUmVzdCcpLFxuICAgIHNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fc2V0VG9TdHJpbmcnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlc3Q7XG4iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICkge1xuICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSXRlcmF0ZWVDYWxsO1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXNzaWduZXI7XG4iLCJ2YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksXG4gICAgY3JlYXRlQXNzaWduZXIgPSByZXF1aXJlKCcuL19jcmVhdGVBc3NpZ25lcicpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC41LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHtcbiAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAqIH07XG4gKlxuICogdmFyIG90aGVyID0ge1xuICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICogfTtcbiAqXG4gKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICovXG52YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpIHtcbiAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZTtcbiIsInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgZmxhdHRlbnMgYGFycmF5YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZsYXR0ZW5EZWVwKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gKiAvLyA9PiBbMSwgMiwgMywgNCwgNV1cbiAqL1xuZnVuY3Rpb24gZmxhdHRlbkRlZXAoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIElORklOSVRZKSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5EZWVwO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4LCBmcm9tUmlnaHQpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGluZGV4ID0gZnJvbUluZGV4ICsgKGZyb21SaWdodCA/IDEgOiAtMSk7XG5cbiAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZpbmRJbmRleDtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYU5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbnVtYmVyIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmFOKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmFOO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmljdEluZGV4T2Y7XG4iLCJ2YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSxcbiAgICBiYXNlSXNOYU4gPSByZXF1aXJlKCcuL19iYXNlSXNOYU4nKSxcbiAgICBzdHJpY3RJbmRleE9mID0gcmVxdWlyZSgnLi9fc3RyaWN0SW5kZXhPZicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluZGV4T2ZgIHdpdGhvdXQgYGZyb21JbmRleGAgYm91bmRzIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlXG4gICAgPyBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KVxuICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBmcm9tSW5kZXgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJbmRleE9mO1xuIiwidmFyIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi9fYmFzZUluZGV4T2YnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5jbHVkZXNgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgMCkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFycmF5SW5jbHVkZXNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlJbmNsdWRlc1dpdGgoYXJyYXksIHZhbHVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoY29tcGFyYXRvcih2YWx1ZSwgYXJyYXlbaW5kZXhdKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gKi9cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gbm9vcDtcbiIsInZhciBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBub29wID0gcmVxdWlyZSgnLi9ub29wJyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2V0IG9iamVjdCBvZiBgdmFsdWVzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYWRkIHRvIHRoZSBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgc2V0LlxuICovXG52YXIgY3JlYXRlU2V0ID0gIShTZXQgJiYgKDEgLyBzZXRUb0FycmF5KG5ldyBTZXQoWywtMF0pKVsxXSkgPT0gSU5GSU5JVFkpID8gbm9vcCA6IGZ1bmN0aW9uKHZhbHVlcykge1xuICByZXR1cm4gbmV3IFNldCh2YWx1ZXMpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVTZXQ7XG4iLCJ2YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLFxuICAgIGFycmF5SW5jbHVkZXMgPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzJyksXG4gICAgYXJyYXlJbmNsdWRlc1dpdGggPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzV2l0aCcpLFxuICAgIGNhY2hlSGFzID0gcmVxdWlyZSgnLi9fY2FjaGVIYXMnKSxcbiAgICBjcmVhdGVTZXQgPSByZXF1aXJlKCcuL19jcmVhdGVTZXQnKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuaXFCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlVW5pcShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBpc0NvbW1vbiA9IHRydWUsXG4gICAgICByZXN1bHQgPSBbXSxcbiAgICAgIHNlZW4gPSByZXN1bHQ7XG5cbiAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gIH1cbiAgZWxzZSBpZiAobGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICB2YXIgc2V0ID0gaXRlcmF0ZWUgPyBudWxsIDogY3JlYXRlU2V0KGFycmF5KTtcbiAgICBpZiAoc2V0KSB7XG4gICAgICByZXR1cm4gc2V0VG9BcnJheShzZXQpO1xuICAgIH1cbiAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgc2VlbiA9IG5ldyBTZXRDYWNoZTtcbiAgfVxuICBlbHNlIHtcbiAgICBzZWVuID0gaXRlcmF0ZWUgPyBbXSA6IHJlc3VsdDtcbiAgfVxuICBvdXRlcjpcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgIHZhciBzZWVuSW5kZXggPSBzZWVuLmxlbmd0aDtcbiAgICAgIHdoaWxlIChzZWVuSW5kZXgtLSkge1xuICAgICAgICBpZiAoc2VlbltzZWVuSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIWluY2x1ZGVzKHNlZW4sIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgaWYgKHNlZW4gIT09IHJlc3VsdCkge1xuICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VVbmlxO1xuIiwidmFyIGJhc2VVbmlxID0gcmVxdWlyZSgnLi9fYmFzZVVuaXEnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiBhbiBhcnJheSwgdXNpbmdcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGluIHdoaWNoIG9ubHkgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgZWFjaCBlbGVtZW50XG4gKiBpcyBrZXB0LiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyXG4gKiBpbiB0aGUgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnVuaXEoWzIsIDEsIDJdKTtcbiAqIC8vID0+IFsyLCAxXVxuICovXG5mdW5jdGlvbiB1bmlxKGFycmF5KSB7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5KSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaXE7XG4iLCJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZVxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgZGVlcCA9IF8uY2xvbmVEZWVwKG9iamVjdHMpO1xuICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURlZXA7XG4iLCJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXA7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRCeWAgd2hpY2ggdXNlcyBgY29tcGFyZXJgIHRvIGRlZmluZSB0aGVcbiAqIHNvcnQgb3JkZXIgb2YgYGFycmF5YCBhbmQgcmVwbGFjZXMgY3JpdGVyaWEgb2JqZWN0cyB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmdcbiAqIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJlciBUaGUgZnVuY3Rpb24gdG8gZGVmaW5lIHNvcnQgb3JkZXIuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNvcnRCeShhcnJheSwgY29tcGFyZXIpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBhcnJheS5zb3J0KGNvbXBhcmVyKTtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgYXJyYXlbbGVuZ3RoXSA9IGFycmF5W2xlbmd0aF0udmFsdWU7XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTb3J0Qnk7XG4iLCJ2YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKlxuICogQ29tcGFyZXMgdmFsdWVzIHRvIHNvcnQgdGhlbSBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGB2YWx1ZWAuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVBc2NlbmRpbmcodmFsdWUsIG90aGVyKSB7XG4gIGlmICh2YWx1ZSAhPT0gb3RoZXIpIHtcbiAgICB2YXIgdmFsSXNEZWZpbmVkID0gdmFsdWUgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgdmFsSXNOdWxsID0gdmFsdWUgPT09IG51bGwsXG4gICAgICAgIHZhbElzUmVmbGV4aXZlID0gdmFsdWUgPT09IHZhbHVlLFxuICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKTtcblxuICAgIHZhciBvdGhJc0RlZmluZWQgPSBvdGhlciAhPT0gdW5kZWZpbmVkLFxuICAgICAgICBvdGhJc051bGwgPSBvdGhlciA9PT0gbnVsbCxcbiAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBvdGhlciA9PT0gb3RoZXIsXG4gICAgICAgIG90aElzU3ltYm9sID0gaXNTeW1ib2wob3RoZXIpO1xuXG4gICAgaWYgKCghb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCAmJiAhdmFsSXNTeW1ib2wgJiYgdmFsdWUgPiBvdGhlcikgfHxcbiAgICAgICAgKHZhbElzU3ltYm9sICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSAmJiAhb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCkgfHxcbiAgICAgICAgKHZhbElzTnVsbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICghdmFsSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAhdmFsSXNSZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBpZiAoKCF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sICYmICFvdGhJc1N5bWJvbCAmJiB2YWx1ZSA8IG90aGVyKSB8fFxuICAgICAgICAob3RoSXNTeW1ib2wgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlICYmICF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sKSB8fFxuICAgICAgICAob3RoSXNOdWxsICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgKCFvdGhJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICFvdGhJc1JlZmxleGl2ZSkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb21wYXJlQXNjZW5kaW5nO1xuIiwidmFyIGNvbXBhcmVBc2NlbmRpbmcgPSByZXF1aXJlKCcuL19jb21wYXJlQXNjZW5kaW5nJyk7XG5cbi8qKlxuICogVXNlZCBieSBgXy5vcmRlckJ5YCB0byBjb21wYXJlIG11bHRpcGxlIHByb3BlcnRpZXMgb2YgYSB2YWx1ZSB0byBhbm90aGVyXG4gKiBhbmQgc3RhYmxlIHNvcnQgdGhlbS5cbiAqXG4gKiBJZiBgb3JkZXJzYCBpcyB1bnNwZWNpZmllZCwgYWxsIHZhbHVlcyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLFxuICogc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3IgZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlclxuICogb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbltdfHN0cmluZ1tdfSBvcmRlcnMgVGhlIG9yZGVyIHRvIHNvcnQgYnkgZm9yIGVhY2ggcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBvYmpDcml0ZXJpYSA9IG9iamVjdC5jcml0ZXJpYSxcbiAgICAgIG90aENyaXRlcmlhID0gb3RoZXIuY3JpdGVyaWEsXG4gICAgICBsZW5ndGggPSBvYmpDcml0ZXJpYS5sZW5ndGgsXG4gICAgICBvcmRlcnNMZW5ndGggPSBvcmRlcnMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVBc2NlbmRpbmcob2JqQ3JpdGVyaWFbaW5kZXhdLCBvdGhDcml0ZXJpYVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIGlmIChpbmRleCA+PSBvcmRlcnNMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHZhciBvcmRlciA9IG9yZGVyc1tpbmRleF07XG4gICAgICByZXR1cm4gcmVzdWx0ICogKG9yZGVyID09ICdkZXNjJyA/IC0xIDogMSk7XG4gICAgfVxuICB9XG4gIC8vIEZpeGVzIGFuIGBBcnJheSNzb3J0YCBidWcgaW4gdGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBhcHBsaWNhdGlvbnNcbiAgLy8gdGhhdCBjYXVzZXMgaXQsIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdG8gcHJvdmlkZSB0aGUgc2FtZSB2YWx1ZSBmb3JcbiAgLy8gYG9iamVjdGAgYW5kIGBvdGhlcmAuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvcHVsbC8xMjQ3XG4gIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gIC8vXG4gIC8vIFRoaXMgYWxzbyBlbnN1cmVzIGEgc3RhYmxlIHNvcnQgaW4gVjggYW5kIG90aGVyIGVuZ2luZXMuXG4gIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05MCBmb3IgbW9yZSBkZXRhaWxzLlxuICByZXR1cm4gb2JqZWN0LmluZGV4IC0gb3RoZXIuaW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZU11bHRpcGxlO1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VNYXAgPSByZXF1aXJlKCcuL19iYXNlTWFwJyksXG4gICAgYmFzZVNvcnRCeSA9IHJlcXVpcmUoJy4vX2Jhc2VTb3J0QnknKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBjb21wYXJlTXVsdGlwbGUgPSByZXF1aXJlKCcuL19jb21wYXJlTXVsdGlwbGUnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ub3JkZXJCeWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAqIEBwYXJhbSB7c3RyaW5nW119IG9yZGVycyBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKSB7XG4gIGlmIChpdGVyYXRlZXMubGVuZ3RoKSB7XG4gICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgaWYgKGlzQXJyYXkoaXRlcmF0ZWUpKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBiYXNlR2V0KHZhbHVlLCBpdGVyYXRlZS5sZW5ndGggPT09IDEgPyBpdGVyYXRlZVswXSA6IGl0ZXJhdGVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZXJhdGVlO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJhdGVlcyA9IFtpZGVudGl0eV07XG4gIH1cblxuICB2YXIgaW5kZXggPSAtMTtcbiAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoYmFzZUl0ZXJhdGVlKSk7XG5cbiAgdmFyIHJlc3VsdCA9IGJhc2VNYXAoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBpdGVyYXRlZSh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gIH0pO1xuXG4gIHJldHVybiBiYXNlU29ydEJ5KHJlc3VsdCwgZnVuY3Rpb24ob2JqZWN0LCBvdGhlcikge1xuICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU9yZGVyQnk7XG4iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpLFxuICAgIGJhc2VPcmRlckJ5ID0gcmVxdWlyZSgnLi9fYmFzZU9yZGVyQnknKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMsIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgdGhlIHJlc3VsdHMgb2ZcbiAqIHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGEgY29sbGVjdGlvbiB0aHJ1IGVhY2ggaXRlcmF0ZWUuIFRoaXMgbWV0aG9kXG4gKiBwZXJmb3JtcyBhIHN0YWJsZSBzb3J0LCB0aGF0IGlzLCBpdCBwcmVzZXJ2ZXMgdGhlIG9yaWdpbmFsIHNvcnQgb3JkZXIgb2ZcbiAqIGVxdWFsIGVsZW1lbnRzLiBUaGUgaXRlcmF0ZWVzIGFyZSBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDMwIH0sXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH1cbiAqIF07XG4gKlxuICogXy5zb3J0QnkodXNlcnMsIFtmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXI7IH1dKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgMzBdXVxuICpcbiAqIF8uc29ydEJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzRdLCBbJ2Jhcm5leScsIDM2XSwgWydmcmVkJywgMzBdLCBbJ2ZyZWQnLCA0OF1dXG4gKi9cbnZhciBzb3J0QnkgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZXMpIHtcbiAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aDtcbiAgaWYgKGxlbmd0aCA+IDEgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0pKSB7XG4gICAgaXRlcmF0ZWVzID0gW107XG4gIH0gZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpc0l0ZXJhdGVlQ2FsbChpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSwgaXRlcmF0ZWVzWzJdKSkge1xuICAgIGl0ZXJhdGVlcyA9IFtpdGVyYXRlZXNbMF1dO1xuICB9XG4gIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBiYXNlRmxhdHRlbihpdGVyYXRlZXMsIDEpLCBbXSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzb3J0Qnk7XG4iLCJ2YXIgYmFzZVVuaXEgPSByZXF1aXJlKCcuL19iYXNlVW5pcScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpc1xuICogZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuVGhlIGNvbXBhcmF0b3IgaXMgaW52b2tlZFxuICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAqXG4gKiBfLnVuaXFXaXRoKG9iamVjdHMsIF8uaXNFcXVhbCk7XG4gKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dXG4gKi9cbmZ1bmN0aW9uIHVuaXFXaXRoKGFycmF5LCBjb21wYXJhdG9yKSB7XG4gIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXksIHVuZGVmaW5lZCwgY29tcGFyYXRvcikgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmlxV2l0aDtcbiIsInZhciBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZVxuICogb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllcyB0aGF0XG4gKiByZXNvbHZlIHRvIGB1bmRlZmluZWRgLiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4gKiBPbmNlIGEgcHJvcGVydHkgaXMgc2V0LCBhZGRpdGlvbmFsIHZhbHVlcyBvZiB0aGUgc2FtZSBwcm9wZXJ0eSBhcmUgaWdub3JlZC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAc2VlIF8uZGVmYXVsdHNEZWVwXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqL1xudmFyIGRlZmF1bHRzID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgbGVuZ3RoID0gc291cmNlcy5sZW5ndGg7XG4gIHZhciBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICBsZW5ndGggPSAxO1xuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgdmFyIHByb3BzID0ga2V5c0luKHNvdXJjZSk7XG4gICAgdmFyIHByb3BzSW5kZXggPSAtMTtcbiAgICB2YXIgcHJvcHNMZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytwcm9wc0luZGV4IDwgcHJvcHNMZW5ndGgpIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wc1twcm9wc0luZGV4XTtcbiAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIChlcSh2YWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmplY3Q7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0cztcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlJbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXMnKSxcbiAgICBhcnJheUluY2x1ZGVzV2l0aCA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXNXaXRoJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIGNhY2hlSGFzID0gcmVxdWlyZSgnLi9fY2FjaGVIYXMnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1pbiA9IE1hdGgubWluO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gLCB3aXRob3V0IHN1cHBvcnRcbiAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBzaGFyZWQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlSW50ZXJzZWN0aW9uKGFycmF5cywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluY2x1ZGVzID0gY29tcGFyYXRvciA/IGFycmF5SW5jbHVkZXNXaXRoIDogYXJyYXlJbmNsdWRlcyxcbiAgICAgIGxlbmd0aCA9IGFycmF5c1swXS5sZW5ndGgsXG4gICAgICBvdGhMZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGgsXG4gICAgICBjYWNoZXMgPSBBcnJheShvdGhMZW5ndGgpLFxuICAgICAgbWF4TGVuZ3RoID0gSW5maW5pdHksXG4gICAgICByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAob3RoSW5kZXgtLSkge1xuICAgIHZhciBhcnJheSA9IGFycmF5c1tvdGhJbmRleF07XG4gICAgaWYgKG90aEluZGV4ICYmIGl0ZXJhdGVlKSB7XG4gICAgICBhcnJheSA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICB9XG4gICAgbWF4TGVuZ3RoID0gbmF0aXZlTWluKGFycmF5Lmxlbmd0aCwgbWF4TGVuZ3RoKTtcbiAgICBjYWNoZXNbb3RoSW5kZXhdID0gIWNvbXBhcmF0b3IgJiYgKGl0ZXJhdGVlIHx8IChsZW5ndGggPj0gMTIwICYmIGFycmF5Lmxlbmd0aCA+PSAxMjApKVxuICAgICAgPyBuZXcgU2V0Q2FjaGUob3RoSW5kZXggJiYgYXJyYXkpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuICBhcnJheSA9IGFycmF5c1swXTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHNlZW4gPSBjYWNoZXNbMF07XG5cbiAgb3V0ZXI6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoICYmIHJlc3VsdC5sZW5ndGggPCBtYXhMZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgIGlmICghKHNlZW5cbiAgICAgICAgICA/IGNhY2hlSGFzKHNlZW4sIGNvbXB1dGVkKVxuICAgICAgICAgIDogaW5jbHVkZXMocmVzdWx0LCBjb21wdXRlZCwgY29tcGFyYXRvcilcbiAgICAgICAgKSkge1xuICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGg7XG4gICAgICB3aGlsZSAoLS1vdGhJbmRleCkge1xuICAgICAgICB2YXIgY2FjaGUgPSBjYWNoZXNbb3RoSW5kZXhdO1xuICAgICAgICBpZiAoIShjYWNoZVxuICAgICAgICAgICAgICA/IGNhY2hlSGFzKGNhY2hlLCBjb21wdXRlZClcbiAgICAgICAgICAgICAgOiBpbmNsdWRlcyhhcnJheXNbb3RoSW5kZXhdLCBjb21wdXRlZCwgY29tcGFyYXRvcikpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSW50ZXJzZWN0aW9uO1xuIiwidmFyIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYW4gZW1wdHkgYXJyYXkgaWYgaXQncyBub3QgYW4gYXJyYXkgbGlrZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIHRoZSBjYXN0IGFycmF5LWxpa2Ugb2JqZWN0LlxuICovXG5mdW5jdGlvbiBjYXN0QXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RBcnJheUxpa2VPYmplY3Q7XG4iLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VJbnRlcnNlY3Rpb24gPSByZXF1aXJlKCcuL19iYXNlSW50ZXJzZWN0aW9uJyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGNhc3RBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL19jYXN0QXJyYXlMaWtlT2JqZWN0JyksXG4gICAgbGFzdCA9IHJlcXVpcmUoJy4vbGFzdCcpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYFxuICogd2hpY2ggaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXNcbiAqIG9mIHJlc3VsdCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgY29tcGFyYXRvciBpc1xuICogaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICpcbiAqIF8uaW50ZXJzZWN0aW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9XVxuICovXG52YXIgaW50ZXJzZWN0aW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICB2YXIgY29tcGFyYXRvciA9IGxhc3QoYXJyYXlzKSxcbiAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICBpZiAoY29tcGFyYXRvcikge1xuICAgIG1hcHBlZC5wb3AoKTtcbiAgfVxuICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgIDogW107XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnRlcnNlY3Rpb25XaXRoO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGJvb2xlYW4gcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJvb2xlYW4sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Jvb2xlYW4oZmFsc2UpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCb29sZWFuKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBib29sVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Jvb2xlYW47XG4iLCJ2YXIgaXNFcXVhbCA9IHJlcXVpcmUoJ2xvZGFzaC9pc0VxdWFsJylcbnZhciBzb3J0QnkgPSByZXF1aXJlKCdsb2Rhc2gvc29ydEJ5JylcbnZhciB1bmlxID0gcmVxdWlyZSgnbG9kYXNoL3VuaXEnKVxudmFyIHVuaXFXaXRoID0gcmVxdWlyZSgnbG9kYXNoL3VuaXFXaXRoJylcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJ2xvZGFzaC9kZWZhdWx0cycpXG52YXIgaW50ZXJzZWN0aW9uV2l0aCA9IHJlcXVpcmUoJ2xvZGFzaC9pbnRlcnNlY3Rpb25XaXRoJylcbnZhciBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5PYmplY3QnKVxudmFyIGlzQm9vbGVhbiA9IHJlcXVpcmUoJ2xvZGFzaC9pc0Jvb2xlYW4nKVxuXG52YXIgbm9ybWFsaXplQXJyYXkgPSB2YWwgPT4gQXJyYXkuaXNBcnJheSh2YWwpXG4gID8gdmFsIDogW3ZhbF1cbnZhciB1bmRlZiA9IHZhbCA9PiB2YWwgPT09IHVuZGVmaW5lZFxudmFyIGtleXMgPSBvYmogPT4gaXNQbGFpbk9iamVjdChvYmopIHx8IEFycmF5LmlzQXJyYXkob2JqKSA/IE9iamVjdC5rZXlzKG9iaikgOiBbXVxudmFyIGhhcyA9IChvYmosIGtleSkgPT4gb2JqLmhhc093blByb3BlcnR5KGtleSlcbnZhciBzdHJpbmdBcnJheSA9IGFyciA9PiBzb3J0QnkodW5pcShhcnIpKVxudmFyIHVuZGVmRW1wdHkgPSB2YWwgPT4gdW5kZWYodmFsKSB8fCAoQXJyYXkuaXNBcnJheSh2YWwpICYmIHZhbC5sZW5ndGggPT09IDApXG52YXIga2V5VmFsRXF1YWwgPSAoYSwgYiwga2V5LCBjb21wYXJlKSA9PiBiICYmIGhhcyhiLCBrZXkpICYmIGEgJiYgaGFzKGEsIGtleSkgJiYgY29tcGFyZShhW2tleV0sIGJba2V5XSlcbnZhciB1bmRlZkFuZFplcm8gPSAoYSwgYikgPT4gKHVuZGVmKGEpICYmIGIgPT09IDApIHx8ICh1bmRlZihiKSAmJiBhID09PSAwKSB8fCBpc0VxdWFsKGEsIGIpXG52YXIgZmFsc2VVbmRlZmluZWQgPSAoYSwgYikgPT4gKHVuZGVmKGEpICYmIGIgPT09IGZhbHNlKSB8fCAodW5kZWYoYikgJiYgYSA9PT0gZmFsc2UpIHx8IGlzRXF1YWwoYSwgYilcbnZhciBlbXB0eVNjaGVtYSA9IHNjaGVtYSA9PiB1bmRlZihzY2hlbWEpIHx8IGlzRXF1YWwoc2NoZW1hLCB7fSkgfHwgc2NoZW1hID09PSB0cnVlXG52YXIgZW1wdHlPYmpVbmRlZiA9IHNjaGVtYSA9PiB1bmRlZihzY2hlbWEpIHx8IGlzRXF1YWwoc2NoZW1hLCB7fSlcbnZhciBpc1NjaGVtYSA9IHZhbCA9PiB1bmRlZih2YWwpIHx8IGlzUGxhaW5PYmplY3QodmFsKSB8fCB2YWwgPT09IHRydWUgfHwgdmFsID09PSBmYWxzZVxuXG5mdW5jdGlvbiB1bmRlZkFycmF5RXF1YWwoYSwgYikge1xuICBpZiAodW5kZWZFbXB0eShhKSAmJiB1bmRlZkVtcHR5KGIpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaXNFcXVhbChzdHJpbmdBcnJheShhKSwgc3RyaW5nQXJyYXkoYikpXG4gIH1cbn1cblxuZnVuY3Rpb24gdW5zb3J0ZWROb3JtYWxpemVkQXJyYXkoYSwgYikge1xuICBhID0gbm9ybWFsaXplQXJyYXkoYSlcbiAgYiA9IG5vcm1hbGl6ZUFycmF5KGIpXG4gIHJldHVybiBpc0VxdWFsKHN0cmluZ0FycmF5KGEpLCBzdHJpbmdBcnJheShiKSlcbn1cblxuZnVuY3Rpb24gc2NoZW1hR3JvdXAoYSwgYiwga2V5LCBjb21wYXJlKSB7XG4gIHZhciBhbGxQcm9wcyA9IHVuaXEoa2V5cyhhKS5jb25jYXQoa2V5cyhiKSkpXG4gIGlmIChlbXB0eU9ialVuZGVmKGEpICYmIGVtcHR5T2JqVW5kZWYoYikpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGVsc2UgaWYgKGVtcHR5T2JqVW5kZWYoYSkgJiYga2V5cyhiKS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIGlmIChlbXB0eU9ialVuZGVmKGIpICYmIGtleXMoYSkubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gYWxsUHJvcHMuZXZlcnkoZnVuY3Rpb24oa2V5KSB7XG4gICAgdmFyIGFWYWwgPSBhW2tleV1cbiAgICB2YXIgYlZhbCA9IGJba2V5XVxuICAgIGlmIChBcnJheS5pc0FycmF5KGFWYWwpICYmIEFycmF5LmlzQXJyYXkoYlZhbCkpIHtcbiAgICAgIHJldHVybiBpc0VxdWFsKHN0cmluZ0FycmF5KGEpLCBzdHJpbmdBcnJheShiKSlcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYVZhbCkgJiYgIUFycmF5LmlzQXJyYXkoYlZhbCkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShiVmFsKSAmJiAhQXJyYXkuaXNBcnJheShhVmFsKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiBrZXlWYWxFcXVhbChhLCBiLCBrZXksIGNvbXBhcmUpXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGl0ZW1zKGEsIGIsIGtleSwgY29tcGFyZSkge1xuICBpZiAoaXNQbGFpbk9iamVjdChhKSAmJiBpc1BsYWluT2JqZWN0KGIpKSB7XG4gICAgcmV0dXJuIGNvbXBhcmUoYSwgYilcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGEpICYmIEFycmF5LmlzQXJyYXkoYikpIHtcbiAgICByZXR1cm4gc2NoZW1hR3JvdXAoYSwgYiwga2V5LCBjb21wYXJlKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBpc0VxdWFsKGEsIGIpXG4gIH1cbn1cblxuZnVuY3Rpb24gdW5zb3J0ZWRBcnJheShhLCBiLCBrZXksIGNvbXBhcmUpIHtcbiAgdmFyIHVuaXF1ZUEgPSB1bmlxV2l0aChhLCBjb21wYXJlKVxuICB2YXIgdW5pcXVlQiA9IHVuaXFXaXRoKGIsIGNvbXBhcmUpXG4gIHZhciBpbnRlciA9IGludGVyc2VjdGlvbldpdGgodW5pcXVlQSwgdW5pcXVlQiwgY29tcGFyZSlcbiAgcmV0dXJuIGludGVyLmxlbmd0aCA9PT0gTWF0aC5tYXgodW5pcXVlQS5sZW5ndGgsIHVuaXF1ZUIubGVuZ3RoKVxufVxuXG52YXIgY29tcGFyZXJzID0ge1xuICB0aXRsZTogaXNFcXVhbCxcbiAgdW5pcXVlSXRlbXM6IGZhbHNlVW5kZWZpbmVkLFxuICBtaW5MZW5ndGg6IHVuZGVmQW5kWmVybyxcbiAgbWluSXRlbXM6IHVuZGVmQW5kWmVybyxcbiAgbWluUHJvcGVydGllczogdW5kZWZBbmRaZXJvLFxuICByZXF1aXJlZDogdW5kZWZBcnJheUVxdWFsLFxuICBlbnVtOiB1bmRlZkFycmF5RXF1YWwsXG4gIHR5cGU6IHVuc29ydGVkTm9ybWFsaXplZEFycmF5LFxuICBpdGVtczogaXRlbXMsXG4gIGFueU9mOiB1bnNvcnRlZEFycmF5LFxuICBhbGxPZjogdW5zb3J0ZWRBcnJheSxcbiAgb25lT2Y6IHVuc29ydGVkQXJyYXksXG4gIHByb3BlcnRpZXM6IHNjaGVtYUdyb3VwLFxuICBwYXR0ZXJuUHJvcGVydGllczogc2NoZW1hR3JvdXAsXG4gIGRlcGVuZGVuY2llczogc2NoZW1hR3JvdXBcbn1cblxudmFyIGFjY2VwdHNVbmRlZmluZWQgPSBbXG4gICdwcm9wZXJ0aWVzJyxcbiAgJ3BhdHRlcm5Qcm9wZXJ0aWVzJyxcbiAgJ2RlcGVuZGVuY2llcycsXG4gICd1bmlxdWVJdGVtcycsXG4gICdtaW5MZW5ndGgnLFxuICAnbWluSXRlbXMnLFxuICAnbWluUHJvcGVydGllcycsXG4gICdyZXF1aXJlZCdcbl1cblxudmFyIHNjaGVtYVByb3BzID0gWydhZGRpdGlvbmFsUHJvcGVydGllcycsICdhZGRpdGlvbmFsSXRlbXMnLCAnY29udGFpbnMnLCAncHJvcGVydHlOYW1lcycsICdub3QnXVxuXG5mdW5jdGlvbiBjb21wYXJlKGEsIGIsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IGRlZmF1bHRzKG9wdGlvbnMsIHtcbiAgICBpZ25vcmU6IFtdXG4gIH0pXG5cbiAgaWYgKGVtcHR5U2NoZW1hKGEpICYmIGVtcHR5U2NoZW1hKGIpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmICghaXNTY2hlbWEoYSkgfHwgIWlzU2NoZW1hKGIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgb2YgdGhlIHZhbHVlcyBhcmUgbm90IGEgSlNPTiBzY2hlbWEuJylcbiAgfVxuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAoaXNCb29sZWFuKGEpICYmIGlzQm9vbGVhbihiKSkge1xuICAgIHJldHVybiBhID09PSBiXG4gIH1cblxuICBpZiAoKGEgPT09IHVuZGVmaW5lZCAmJiBiID09PSBmYWxzZSkgfHwgKGIgPT09IHVuZGVmaW5lZCAmJiBhID09PSBmYWxzZSkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICgodW5kZWYoYSkgJiYgIXVuZGVmKGIpKSB8fCAoIXVuZGVmKGEpICYmIHVuZGVmKGIpKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgdmFyIGFsbEtleXMgPSB1bmlxKE9iamVjdC5rZXlzKGEpLmNvbmNhdChPYmplY3Qua2V5cyhiKSkpXG5cbiAgaWYgKG9wdGlvbnMuaWdub3JlLmxlbmd0aCkge1xuICAgIGFsbEtleXMgPSBhbGxLZXlzLmZpbHRlcihrID0+IG9wdGlvbnMuaWdub3JlLmluZGV4T2YoaykgPT09IC0xKVxuICB9XG5cbiAgaWYgKCFhbGxLZXlzLmxlbmd0aCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBmdW5jdGlvbiBpbm5lckNvbXBhcmUoYSwgYikge1xuICAgIHJldHVybiBjb21wYXJlKGEsIGIsIG9wdGlvbnMpXG4gIH1cblxuICByZXR1cm4gYWxsS2V5cy5ldmVyeShmdW5jdGlvbihrZXkpIHtcbiAgICB2YXIgYVZhbHVlID0gYVtrZXldXG4gICAgdmFyIGJWYWx1ZSA9IGJba2V5XVxuXG4gICAgaWYgKHNjaGVtYVByb3BzLmluZGV4T2Yoa2V5KSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBjb21wYXJlKGFWYWx1ZSwgYlZhbHVlLCBvcHRpb25zKVxuICAgIH1cblxuICAgIHZhciBjb21wYXJlciA9IGNvbXBhcmVyc1trZXldXG4gICAgaWYgKCFjb21wYXJlcikge1xuICAgICAgY29tcGFyZXIgPSBpc0VxdWFsXG4gICAgfVxuXG4gICAgLy8gZG8gc2ltcGxlIGxvZGFzaCBjaGVjayBmaXJzdFxuICAgIGlmIChpc0VxdWFsKGFWYWx1ZSwgYlZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBpZiAoYWNjZXB0c1VuZGVmaW5lZC5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICBpZiAoKCFoYXMoYSwga2V5KSAmJiBoYXMoYiwga2V5KSkgfHwgKGhhcyhhLCBrZXkpICYmICFoYXMoYiwga2V5KSkpIHtcbiAgICAgICAgcmV0dXJuIGFWYWx1ZSA9PT0gYlZhbHVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVyKGFWYWx1ZSwgYlZhbHVlLCBrZXksIGlubmVyQ29tcGFyZSlcbiAgICBpZiAoIWlzQm9vbGVhbihyZXN1bHQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBhcmVyIG11c3QgcmV0dXJuIHRydWUgb3IgZmFsc2UnKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiogRlVOQ1RJT046IGlzQXJyYXkoIHZhbHVlIClcbipcdFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGFuIGFycmF5LlxuKlxuKiBAcGFyYW0geyp9IHZhbHVlIC0gdmFsdWUgdG8gYmUgdmFsaWRhdGVkXG4qIEByZXR1cm5zIHtCb29sZWFufSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB2YWx1ZSBpcyBhbiBhcnJheVxuKi9cbmZ1bmN0aW9uIGlzQXJyYXkoIHZhbHVlICkge1xuXHRyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKCB2YWx1ZSApID09PSAnW29iamVjdCBBcnJheV0nO1xufSAvLyBlbmQgRlVOQ1RJT04gaXNBcnJheSgpXG5cbi8vIEVYUE9SVFMgLy9cblxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGlzQXJyYXk7XG4iLCIvKipcbipcbipcdFZBTElEQVRFOiBudW1iZXJcbipcbipcbipcdERFU0NSSVBUSU9OOlxuKlx0XHQtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGEgbnVtYmVyLlxuKlxuKlxuKlx0Tk9URVM6XG4qXHRcdFsxXVxuKlxuKlxuKlx0VE9ETzpcbipcdFx0WzFdXG4qXG4qXG4qXHRMSUNFTlNFOlxuKlx0XHRNSVRcbipcbipcdENvcHlyaWdodCAoYykgMjAxNC4gQXRoYW4gUmVpbmVzLlxuKlxuKlxuKlx0QVVUSE9SOlxuKlx0XHRBdGhhbiBSZWluZXMuIGtncnl0ZUBnbWFpbC5jb20uIDIwMTQuXG4qXG4qL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuKiBGVU5DVElPTjogaXNOdW1iZXIoIHZhbHVlIClcbipcdFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGEgbnVtYmVyLlxuKlxuKiBAcGFyYW0geyp9IHZhbHVlIC0gdmFsdWUgdG8gYmUgdmFsaWRhdGVkXG4qIEByZXR1cm5zIHtCb29sZWFufSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB2YWx1ZSBpcyBhIG51bWJlclxuKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKCB2YWx1ZSApIHtcblx0cmV0dXJuICggdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoIHZhbHVlICkgPT09ICdbb2JqZWN0IE51bWJlcl0nICkgJiYgdmFsdWUudmFsdWVPZigpID09PSB2YWx1ZS52YWx1ZU9mKCk7XG59IC8vIGVuZCBGVU5DVElPTiBpc051bWJlcigpXG5cblxuLy8gRVhQT1JUUyAvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTnVtYmVyO1xuIiwiLyoqXG4qXG4qXHRWQUxJREFURTogaW50ZWdlclxuKlxuKlxuKlx0REVTQ1JJUFRJT046XG4qXHRcdC0gVmFsaWRhdGVzIGlmIGEgdmFsdWUgaXMgYW4gaW50ZWdlci5cbipcbipcbipcdE5PVEVTOlxuKlx0XHRbMV1cbipcbipcbipcdFRPRE86XG4qXHRcdFsxXVxuKlxuKlxuKlx0TElDRU5TRTpcbipcdFx0TUlUXG4qXG4qXHRDb3B5cmlnaHQgKGMpIDIwMTQuIEF0aGFuIFJlaW5lcy5cbipcbipcbipcdEFVVEhPUjpcbipcdFx0QXRoYW4gUmVpbmVzLiBrZ3J5dGVAZ21haWwuY29tLiAyMDE0LlxuKlxuKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vLyBNT0RVTEVTIC8vXG5cbnZhciBpc051bWJlciA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1udW1iZXInICk7XG5cblxuLy8gSVNJTlRFR0VSIC8vXG5cbi8qKlxuKiBGVU5DVElPTjogaXNJbnRlZ2VyKCB2YWx1ZSApXG4qXHRWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLlxuKlxuKiBAcGFyYW0ge051bWJlcn0gdmFsdWUgLSB2YWx1ZSB0byBiZSB2YWxpZGF0ZWRcbiogQHJldHVybnMge0Jvb2xlYW59IGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHZhbHVlIGlzIGFuIGludGVnZXJcbiovXG5mdW5jdGlvbiBpc0ludGVnZXIoIHZhbHVlICkge1xuXHRyZXR1cm4gaXNOdW1iZXIoIHZhbHVlICkgJiYgdmFsdWUlMSA9PT0gMDtcbn0gLy8gZW5kIEZVTkNUSU9OIGlzSW50ZWdlcigpXG5cblxuLy8gRVhQT1JUUyAvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW50ZWdlcjtcbiIsIi8qKlxuKlxuKlx0VkFMSURBVEU6IGludGVnZXItYXJyYXlcbipcbipcbipcdERFU0NSSVBUSU9OOlxuKlx0XHQtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGFuIGludGVnZXIgYXJyYXkuXG4qXG4qXG4qXHROT1RFUzpcbipcdFx0WzFdXG4qXG4qXG4qXHRUT0RPOlxuKlx0XHRbMV1cbipcbipcbipcdExJQ0VOU0U6XG4qXHRcdE1JVFxuKlxuKlx0Q29weXJpZ2h0IChjKSAyMDE1LiBBdGhhbiBSZWluZXMuXG4qXG4qXG4qXHRBVVRIT1I6XG4qXHRcdEF0aGFuIFJlaW5lcy4ga2dyeXRlQGdtYWlsLmNvbS4gMjAxNS5cbipcbiovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gTU9EVUxFUyAvL1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1hcnJheScgKSxcblx0aXNJbnRlZ2VyID0gcmVxdWlyZSggJ3ZhbGlkYXRlLmlvLWludGVnZXInICk7XG5cblxuLy8gSVMgSU5URUdFUiBBUlJBWSAvL1xuXG4vKipcbiogRlVOQ1RJT046IGlzSW50ZWdlckFycmF5KCB2YWx1ZSApXG4qXHRWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhbiBpbnRlZ2VyIGFycmF5LlxuKlxuKiBAcGFyYW0geyp9IHZhbHVlIC0gdmFsdWUgdG8gYmUgdmFsaWRhdGVkXG4qIEByZXR1cm5zIHtCb29sZWFufSBib29sZWFuIGluZGljYXRpbmcgaWYgYSB2YWx1ZSBpcyBhbiBpbnRlZ2VyIGFycmF5XG4qL1xuZnVuY3Rpb24gaXNJbnRlZ2VyQXJyYXkoIHZhbHVlICkge1xuXHR2YXIgbGVuO1xuXHRpZiAoICFpc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRsZW4gPSB2YWx1ZS5sZW5ndGg7XG5cdGlmICggIWxlbiApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Zm9yICggdmFyIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAhaXNJbnRlZ2VyKCB2YWx1ZVtpXSApICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn0gLy8gZW5kIEZVTkNUSU9OIGlzSW50ZWdlckFycmF5KClcblxuXG4vLyBFWFBPUlRTIC8vXG5cbm1vZHVsZS5leHBvcnRzID0gaXNJbnRlZ2VyQXJyYXk7XG4iLCIvKipcbipcbipcdFZBTElEQVRFOiBmdW5jdGlvblxuKlxuKlxuKlx0REVTQ1JJUFRJT046XG4qXHRcdC0gVmFsaWRhdGVzIGlmIGEgdmFsdWUgaXMgYSBmdW5jdGlvbi5cbipcbipcbipcdE5PVEVTOlxuKlx0XHRbMV1cbipcbipcbipcdFRPRE86XG4qXHRcdFsxXVxuKlxuKlxuKlx0TElDRU5TRTpcbipcdFx0TUlUXG4qXG4qXHRDb3B5cmlnaHQgKGMpIDIwMTQuIEF0aGFuIFJlaW5lcy5cbipcbipcbipcdEFVVEhPUjpcbipcdFx0QXRoYW4gUmVpbmVzLiBrZ3J5dGVAZ21haWwuY29tLiAyMDE0LlxuKlxuKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiogRlVOQ1RJT046IGlzRnVuY3Rpb24oIHZhbHVlIClcbipcdFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGEgZnVuY3Rpb24uXG4qXG4qIEBwYXJhbSB7Kn0gdmFsdWUgLSB2YWx1ZSB0byBiZSB2YWxpZGF0ZWRcbiogQHJldHVybnMge0Jvb2xlYW59IGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHZhbHVlIGlzIGEgZnVuY3Rpb25cbiovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKCB2YWx1ZSApIHtcblx0cmV0dXJuICggdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICk7XG59IC8vIGVuZCBGVU5DVElPTiBpc0Z1bmN0aW9uKClcblxuXG4vLyBFWFBPUlRTIC8vXG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gTU9EVUxFUyAvL1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1hcnJheScgKSxcblx0aXNJbnRlZ2VyQXJyYXkgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8taW50ZWdlci1hcnJheScgKSxcblx0aXNGdW5jdGlvbiA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1mdW5jdGlvbicgKTtcblxuXG4vLyBWQVJJQUJMRVMgLy9cblxudmFyIE1BWElOVCA9IE1hdGgucG93KCAyLCAzMSApIC0gMTtcblxuXG4vLyBGVU5DVElPTlMgLy9cblxuLyoqXG4qIEZVTkNUSU9OOiBnY2QoIGEsIGIgKVxuKlx0Q29tcHV0ZXMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIG9mIHR3byBpbnRlZ2VycyBgYWAgYW5kIGBiYCwgdXNpbmcgdGhlIGJpbmFyeSBHQ0QgYWxnb3JpdGhtLlxuKlxuKiBAcGFyYW0ge051bWJlcn0gYSAtIGludGVnZXJcbiogQHBhcmFtIHtOdW1iZXJ9IGIgLSBpbnRlZ2VyXG4qIEByZXR1cm5zIHtOdW1iZXJ9IGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yXG4qL1xuZnVuY3Rpb24gZ2NkKCBhLCBiICkge1xuXHR2YXIgayA9IDEsXG5cdFx0dDtcblx0Ly8gU2ltcGxlIGNhc2VzOlxuXHRpZiAoIGEgPT09IDAgKSB7XG5cdFx0cmV0dXJuIGI7XG5cdH1cblx0aWYgKCBiID09PSAwICkge1xuXHRcdHJldHVybiBhO1xuXHR9XG5cdC8vIFJlZHVjZSBgYWAgYW5kL29yIGBiYCB0byBvZGQgbnVtYmVycyBhbmQga2VlcCB0cmFjayBvZiB0aGUgZ3JlYXRlc3QgcG93ZXIgb2YgMiBkaXZpZGluZyBib3RoIGBhYCBhbmQgYGJgLi4uXG5cdHdoaWxlICggYSUyID09PSAwICYmIGIlMiA9PT0gMCApIHtcblx0XHRhID0gYSAvIDI7IC8vIHJpZ2h0IHNoaWZ0XG5cdFx0YiA9IGIgLyAyOyAvLyByaWdodCBzaGlmdFxuXHRcdGsgPSBrICogMjsgLy8gbGVmdCBzaGlmdFxuXHR9XG5cdC8vIFJlZHVjZSBgYWAgdG8gYW4gb2RkIG51bWJlci4uLlxuXHR3aGlsZSAoIGElMiA9PT0gMCApIHtcblx0XHRhID0gYSAvIDI7IC8vIHJpZ2h0IHNoaWZ0XG5cdH1cblx0Ly8gSGVuY2Vmb3J0aCwgYGFgIGlzIGFsd2F5cyBvZGQuLi5cblx0d2hpbGUgKCBiICkge1xuXHRcdC8vIFJlbW92ZSBhbGwgZmFjdG9ycyBvZiAyIGluIGBiYCwgYXMgdGhleSBhcmUgbm90IGNvbW1vbi4uLlxuXHRcdHdoaWxlICggYiUyID09PSAwICkge1xuXHRcdFx0YiA9IGIgLyAyOyAvLyByaWdodCBzaGlmdFxuXHRcdH1cblx0XHQvLyBgYWAgYW5kIGBiYCBhcmUgYm90aCBvZGQuIFN3YXAgdmFsdWVzIHN1Y2ggdGhhdCBgYmAgaXMgdGhlIGxhcmdlciBvZiB0aGUgdHdvIHZhbHVlcywgYW5kIHRoZW4gc2V0IGBiYCB0byB0aGUgZGlmZmVyZW5jZSAod2hpY2ggaXMgZXZlbikuLi5cblx0XHRpZiAoIGEgPiBiICkge1xuXHRcdFx0dCA9IGI7XG5cdFx0XHRiID0gYTtcblx0XHRcdGEgPSB0O1xuXHRcdH1cblx0XHRiID0gYiAtIGE7IC8vIGI9MCBpZmYgYj1hXG5cdH1cblx0Ly8gUmVzdG9yZSBjb21tb24gZmFjdG9ycyBvZiAyLi4uXG5cdHJldHVybiBrICogYTtcbn0gLy8gZW5kIEZVTkNUSU9OIGdjZCgpXG5cbi8qKlxuKiBGVU5DVElPTjogYml0d2lzZSggYSwgYiApXG4qXHRDb21wdXRlcyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgdHdvIGludGVnZXJzIGBhYCBhbmQgYGJgLCB1c2luZyB0aGUgYmluYXJ5IEdDRCBhbGdvcml0aG0gYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucy5cbipcbiogQHBhcmFtIHtOdW1iZXJ9IGEgLSBzYWZlIGludGVnZXJcbiogQHBhcmFtIHtOdW1iZXJ9IGIgLSBzYWZlIGludGVnZXJcbiogQHJldHVybnMge051bWJlcn0gZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3JcbiovXG5mdW5jdGlvbiBiaXR3aXNlKCBhLCBiICkge1xuXHR2YXIgayA9IDAsXG5cdFx0dDtcblx0Ly8gU2ltcGxlIGNhc2VzOlxuXHRpZiAoIGEgPT09IDAgKSB7XG5cdFx0cmV0dXJuIGI7XG5cdH1cblx0aWYgKCBiID09PSAwICkge1xuXHRcdHJldHVybiBhO1xuXHR9XG5cdC8vIFJlZHVjZSBgYWAgYW5kL29yIGBiYCB0byBvZGQgbnVtYmVycyBhbmQga2VlcCB0cmFjayBvZiB0aGUgZ3JlYXRlc3QgcG93ZXIgb2YgMiBkaXZpZGluZyBib3RoIGBhYCBhbmQgYGJgLi4uXG5cdHdoaWxlICggKGEgJiAxKSA9PT0gMCAmJiAoYiAmIDEpID09PSAwICkge1xuXHRcdGEgPj4+PSAxOyAvLyByaWdodCBzaGlmdFxuXHRcdGIgPj4+PSAxOyAvLyByaWdodCBzaGlmdFxuXHRcdGsrKztcblx0fVxuXHQvLyBSZWR1Y2UgYGFgIHRvIGFuIG9kZCBudW1iZXIuLi5cblx0d2hpbGUgKCAoYSAmIDEpID09PSAwICkge1xuXHRcdGEgPj4+PSAxOyAvLyByaWdodCBzaGlmdFxuXHR9XG5cdC8vIEhlbmNlZm9ydGgsIGBhYCBpcyBhbHdheXMgb2RkLi4uXG5cdHdoaWxlICggYiApIHtcblx0XHQvLyBSZW1vdmUgYWxsIGZhY3RvcnMgb2YgMiBpbiBgYmAsIGFzIHRoZXkgYXJlIG5vdCBjb21tb24uLi5cblx0XHR3aGlsZSAoIChiICYgMSkgPT09IDAgKSB7XG5cdFx0XHRiID4+Pj0gMTsgLy8gcmlnaHQgc2hpZnRcblx0XHR9XG5cdFx0Ly8gYGFgIGFuZCBgYmAgYXJlIGJvdGggb2RkLiBTd2FwIHZhbHVlcyBzdWNoIHRoYXQgYGJgIGlzIHRoZSBsYXJnZXIgb2YgdGhlIHR3byB2YWx1ZXMsIGFuZCB0aGVuIHNldCBgYmAgdG8gdGhlIGRpZmZlcmVuY2UgKHdoaWNoIGlzIGV2ZW4pLi4uXG5cdFx0aWYgKCBhID4gYiApIHtcblx0XHRcdHQgPSBiO1xuXHRcdFx0YiA9IGE7XG5cdFx0XHRhID0gdDtcblx0XHR9XG5cdFx0YiA9IGIgLSBhOyAvLyBiPTAgaWZmIGI9YVxuXHR9XG5cdC8vIFJlc3RvcmUgY29tbW9uIGZhY3RvcnMgb2YgMi4uLlxuXHRyZXR1cm4gYSA8PCBrO1xufSAvLyBlbmQgRlVOQ1RJT04gYml0d2lzZSgpXG5cblxuLy8gR1JFQVRFU1QgQ09NTU9OIERJVklTT1IgLy9cblxuLyoqXG4qIEZVTkNUSU9OOiBjb21wdXRlKCBhcnJbLCBjbGJrXSApXG4qXHRDb21wdXRlcyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3IuXG4qXG4qIEBwYXJhbSB7TnVtYmVyW118TnVtYmVyfSBhcnIgLSBpbnB1dCBhcnJheSBvZiBpbnRlZ2Vyc1xuKiBAcGFyYW0ge0Z1bmN0aW9ufE51bWJlcn0gW2NsYmtdIC0gYWNjZXNzb3IgZnVuY3Rpb24gZm9yIGFjY2Vzc2luZyBhcnJheSB2YWx1ZXNcbiogQHJldHVybnMge051bWJlcnxOdWxsfSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvciBudWxsXG4qL1xuZnVuY3Rpb24gY29tcHV0ZSgpIHtcblx0dmFyIG5hcmdzID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRhcmdzLFxuXHRcdGNsYmssXG5cdFx0YXJyLFxuXHRcdGxlbixcblx0XHRhLCBiLFxuXHRcdGk7XG5cblx0Ly8gQ29weSB0aGUgaW5wdXQgYXJndW1lbnRzIHRvIGFuIGFycmF5Li4uXG5cdGFyZ3MgPSBuZXcgQXJyYXkoIG5hcmdzICk7XG5cdGZvciAoIGkgPSAwOyBpIDwgbmFyZ3M7IGkrKyApIHtcblx0XHRhcmdzWyBpIF0gPSBhcmd1bWVudHNbIGkgXTtcblx0fVxuXHQvLyBIYXZlIHdlIGJlZW4gcHJvdmlkZWQgd2l0aCBpbnRlZ2VyIGFyZ3VtZW50cz9cblx0aWYgKCBpc0ludGVnZXJBcnJheSggYXJncyApICkge1xuXHRcdGlmICggbmFyZ3MgPT09IDIgKSB7XG5cdFx0XHRhID0gYXJnc1sgMCBdO1xuXHRcdFx0YiA9IGFyZ3NbIDEgXTtcblx0XHRcdGlmICggYSA8IDAgKSB7XG5cdFx0XHRcdGEgPSAtYTtcblx0XHRcdH1cblx0XHRcdGlmICggYiA8IDAgKSB7XG5cdFx0XHRcdGIgPSAtYjtcblx0XHRcdH1cblx0XHRcdGlmICggYSA8PSBNQVhJTlQgJiYgYiA8PSBNQVhJTlQgKSB7XG5cdFx0XHRcdHJldHVybiBiaXR3aXNlKCBhLCBiICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gZ2NkKCBhLCBiICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGFyciA9IGFyZ3M7XG5cdH1cblx0Ly8gSWYgbm90IGludGVnZXJzLCBlbnN1cmUgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFuIGFycmF5Li4uXG5cdGVsc2UgaWYgKCAhaXNBcnJheSggYXJnc1sgMCBdICkgKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2djZCgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBNdXN0IHByb3ZpZGUgYW4gYXJyYXkgb2YgaW50ZWdlcnMuIFZhbHVlOiBgJyArIGFyZ3NbIDAgXSArICdgLicgKTtcblx0fVxuXHQvLyBIYXZlIHdlIGJlZW4gcHJvdmlkZWQgd2l0aCBtb3JlIHRoYW4gb25lIGFyZ3VtZW50PyBJZiBzbywgZW5zdXJlIHRoYXQgdGhlIGFjY2Vzc29yIGFyZ3VtZW50IGlzIGEgZnVuY3Rpb24uLi5cblx0ZWxzZSBpZiAoIG5hcmdzID4gMSApIHtcblx0XHRhcnIgPSBhcmdzWyAwIF07XG5cdFx0Y2xiayA9IGFyZ3NbIDEgXTtcblx0XHRpZiAoICFpc0Z1bmN0aW9uKCBjbGJrICkgKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCAnZ2NkKCk6OmludmFsaWQgaW5wdXQgYXJndW1lbnQuIEFjY2Vzc29yIG11c3QgYmUgYSBmdW5jdGlvbi4gVmFsdWU6IGAnICsgY2xiayArICdgLicgKTtcblx0XHR9XG5cdH1cblx0Ly8gV2UgaGF2ZSBiZWVuIHByb3ZpZGVkIGFuIGFycmF5Li4uXG5cdGVsc2Uge1xuXHRcdGFyciA9IGFyZ3NbIDAgXTtcblx0fVxuXHRsZW4gPSBhcnIubGVuZ3RoO1xuXG5cdC8vIENoZWNrIGlmIGEgc3VmZmljaWVudCBudW1iZXIgb2YgdmFsdWVzIGhhdmUgYmVlbiBwcm92aWRlZC4uLlxuXHRpZiAoIGxlbiA8IDIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0Ly8gSWYgYW4gYWNjZXNzb3IgaXMgcHJvdmlkZWQsIGV4dHJhY3QgdGhlIGFycmF5IHZhbHVlcy4uLlxuXHRpZiAoIGNsYmsgKSB7XG5cdFx0YSA9IG5ldyBBcnJheSggbGVuICk7XG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGFbIGkgXSA9IGNsYmsoIGFyclsgaSBdLCBpICk7XG5cdFx0fVxuXHRcdGFyciA9IGE7XG5cdH1cblx0Ly8gR2l2ZW4gYW4gaW5wdXQgYXJyYXksIGVuc3VyZSBhbGwgYXJyYXkgdmFsdWVzIGFyZSBpbnRlZ2Vycy4uLlxuXHRpZiAoIG5hcmdzIDwgMyApIHtcblx0XHRpZiAoICFpc0ludGVnZXJBcnJheSggYXJyICkgKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCAnZ2NkKCk6OmludmFsaWQgaW5wdXQgYXJndW1lbnQuIEFjY2Vzc2VkIGFycmF5IHZhbHVlcyBtdXN0IGJlIGludGVnZXJzLiBWYWx1ZTogYCcgKyBhcnIgKyAnYC4nICk7XG5cdFx0fVxuXHR9XG5cdC8vIENvbnZlcnQgYW55IG5lZ2F0aXZlIGludGVnZXJzIHRvIHBvc2l0aXZlIGludGVnZXJzLi4uXG5cdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0YSA9IGFyclsgaSBdO1xuXHRcdGlmICggYSA8IDAgKSB7XG5cdFx0XHRhcnJbIGkgXSA9IC1hO1xuXHRcdH1cblx0fVxuXHQvLyBFeHBsb2l0IHRoZSBmYWN0IHRoYXQgdGhlIGdjZCBpcyBhbiBhc3NvY2lhdGl2ZSBmdW5jdGlvbi4uLlxuXHRhID0gYXJyWyAwIF07XG5cdGZvciAoIGkgPSAxOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0YiA9IGFyclsgaSBdO1xuXHRcdGlmICggYiA8PSBNQVhJTlQgJiYgYSA8PSBNQVhJTlQgKSB7XG5cdFx0XHRhID0gYml0d2lzZSggYSwgYiApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhID0gZ2NkKCBhLCBiICk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhO1xufSAvLyBlbmQgRlVOQ1RJT04gY29tcHV0ZSgpXG5cblxuLy8gRVhQT1JUUyAvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXB1dGU7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIE1PRFVMRVMgLy9cblxudmFyIGdjZCA9IHJlcXVpcmUoICdjb21wdXRlLWdjZCcgKSxcblx0aXNBcnJheSA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1hcnJheScgKSxcblx0aXNJbnRlZ2VyQXJyYXkgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8taW50ZWdlci1hcnJheScgKSxcblx0aXNGdW5jdGlvbiA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1mdW5jdGlvbicgKTtcblxuXG4vLyBMRUFTVCBDT01NT04gTVVMVElQTEUgLy9cblxuLyoqXG4qIEZVTkNUSU9OOiBsY20oIGFyclssIGNsYmtdIClcbipcdENvbXB1dGVzIHRoZSBsZWFzdCBjb21tb24gbXVsdGlwbGUgKGxjbSkuXG4qXG4qIEBwYXJhbSB7TnVtYmVyW118TnVtYmVyfSBhcnIgLSBpbnB1dCBhcnJheSBvZiBpbnRlZ2Vyc1xuKiBAcGFyYW0ge0Z1bmN0aW9ufE51bWJlcn0gW2FjY2Vzc29yXSAtIGFjY2Vzc29yIGZ1bmN0aW9uIGZvciBhY2Nlc3NpbmcgYXJyYXkgdmFsdWVzXG4qIEByZXR1cm5zIHtOdW1iZXJ8TnVsbH0gbGVhc3QgY29tbW9uIG11bHRpcGxlIG9yIG51bGxcbiovXG5mdW5jdGlvbiBsY20oKSB7XG5cdHZhciBuYXJncyA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0YXJncyxcblx0XHRjbGJrLFxuXHRcdGFycixcblx0XHRsZW4sXG5cdFx0YSwgYixcblx0XHRpO1xuXG5cdC8vIENvcHkgdGhlIGlucHV0IGFyZ3VtZW50cyB0byBhbiBhcnJheS4uLlxuXHRhcmdzID0gbmV3IEFycmF5KCBuYXJncyApO1xuXHRmb3IgKCBpID0gMDsgaSA8IG5hcmdzOyBpKysgKSB7XG5cdFx0YXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07XG5cdH1cblx0Ly8gSGF2ZSB3ZSBiZWVuIHByb3ZpZGVkIHdpdGggaW50ZWdlciBhcmd1bWVudHM/XG5cdGlmICggaXNJbnRlZ2VyQXJyYXkoIGFyZ3MgKSApIHtcblx0XHRpZiAoIG5hcmdzID09PSAyICkge1xuXHRcdFx0YSA9IGFyZ3NbIDAgXTtcblx0XHRcdGIgPSBhcmdzWyAxIF07XG5cdFx0XHRpZiAoIGEgPCAwICkge1xuXHRcdFx0XHRhID0gLWE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGIgPCAwICkge1xuXHRcdFx0XHRiID0gLWI7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGEgPT09IDAgfHwgYiA9PT0gMCApIHtcblx0XHRcdFx0cmV0dXJuIDA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gKCBhL2djZChhLGIpICkgKiBiO1xuXHRcdH1cblx0XHRhcnIgPSBhcmdzO1xuXHR9XG5cdC8vIElmIG5vdCBpbnRlZ2VycywgZW5zdXJlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFuIGFycmF5Li4uXG5cdGVsc2UgaWYgKCAhaXNBcnJheSggYXJnc1sgMCBdICkgKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2xjbSgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBNdXN0IHByb3ZpZGUgYW4gYXJyYXkgb2YgaW50ZWdlcnMuIFZhbHVlOiBgJyArIGFyZ3NbIDAgXSArICdgLicgKTtcblx0fVxuXHQvLyBIYXZlIHdlIGJlZW4gcHJvdmlkZWQgd2l0aCBtb3JlIHRoYW4gb25lIGFyZ3VtZW50PyBJZiBzbywgZW5zdXJlIHRoYXQgdGhlIGFjY2Vzc29yIGFyZ3VtZW50IGlzIGEgZnVuY3Rpb24uLi5cblx0ZWxzZSBpZiAoIG5hcmdzID4gMSApIHtcblx0XHRhcnIgPSBhcmdzWyAwIF07XG5cdFx0Y2xiayA9IGFyZ3NbIDEgXTtcblx0XHRpZiAoICFpc0Z1bmN0aW9uKCBjbGJrICkgKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCAnbGNtKCk6OmludmFsaWQgaW5wdXQgYXJndW1lbnQuIEFjY2Vzc29yIG11c3QgYmUgYSBmdW5jdGlvbi4gVmFsdWU6IGAnICsgY2xiayArICdgLicgKTtcblx0XHR9XG5cdH1cblx0Ly8gV2UgaGF2ZSBiZWVuIHByb3ZpZGVkIGFuIGFycmF5Li4uXG5cdGVsc2Uge1xuXHRcdGFyciA9IGFyZ3NbIDAgXTtcblx0fVxuXHRsZW4gPSBhcnIubGVuZ3RoO1xuXG5cdC8vIENoZWNrIGlmIGEgc3VmZmljaWVudCBudW1iZXIgb2YgdmFsdWVzIGhhdmUgYmVlbiBwcm92aWRlZC4uLlxuXHRpZiAoIGxlbiA8IDIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0Ly8gSWYgYW4gYWNjZXNzb3IgaXMgcHJvdmlkZWQsIGV4dHJhY3QgdGhlIGFycmF5IHZhbHVlcy4uLlxuXHRpZiAoIGNsYmsgKSB7XG5cdFx0YSA9IG5ldyBBcnJheSggbGVuICk7XG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGFbIGkgXSA9IGNsYmsoIGFyclsgaSBdLCBpICk7XG5cdFx0fVxuXHRcdGFyciA9IGE7XG5cdH1cblx0Ly8gR2l2ZW4gYW4gaW5wdXQgYXJyYXksIGVuc3VyZSBhbGwgYXJyYXkgdmFsdWVzIGFyZSBpbnRlZ2Vycy4uLlxuXHRpZiAoIG5hcmdzIDwgMyApIHtcblx0XHRpZiAoICFpc0ludGVnZXJBcnJheSggYXJyICkgKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCAnbGNtKCk6OmludmFsaWQgaW5wdXQgYXJndW1lbnQuIEFjY2Vzc2VkIGFycmF5IHZhbHVlcyBtdXN0IGJlIGludGVnZXJzLiBWYWx1ZTogYCcgKyBhcnIgKyAnYC4nICk7XG5cdFx0fVxuXHR9XG5cdC8vIENvbnZlcnQgYW55IG5lZ2F0aXZlIGludGVnZXJzIHRvIHBvc2l0aXZlIGludGVnZXJzLi4uXG5cdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0YSA9IGFyclsgaSBdO1xuXHRcdGlmICggYSA8IDAgKSB7XG5cdFx0XHRhcnJbIGkgXSA9IC1hO1xuXHRcdH1cblx0fVxuXHQvLyBFeHBsb2l0IHRoZSBmYWN0IHRoYXQgdGhlIGxjbSBpcyBhbiBhc3NvY2lhdGl2ZSBmdW5jdGlvbi4uLlxuXHRhID0gYXJyWyAwIF07XG5cdGZvciAoIGkgPSAxOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0YiA9IGFyclsgaSBdO1xuXHRcdGlmICggYSA9PT0gMCB8fCBiID09PSAwICkge1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXHRcdGEgPSAoIGEvZ2NkKGEsYikgKSAqIGI7XG5cdH1cblx0cmV0dXJuIGE7XG59IC8vIGVuZCBGVU5DVElPTiBsY20oKVxuXG5cbi8vIEVYUE9SVFMgLy9cblxubW9kdWxlLmV4cG9ydHMgPSBsY207XG4iLCJ2YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogVXNlZCBieSBgXy5kZWZhdWx0c0RlZXBgIHRvIGN1c3RvbWl6ZSBpdHMgYF8ubWVyZ2VgIHVzZSB0byBtZXJnZSBzb3VyY2VcbiAqIG9iamVjdHMgaW50byBkZXN0aW5hdGlvbiBvYmplY3RzIHRoYXQgYXJlIHBhc3NlZCB0aHJ1LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHNvdXJjZSB2YWx1ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gbWVyZ2UuXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBvYmpWYWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBzcmNWYWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGN1c3RvbURlZmF1bHRzTWVyZ2Uob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjaykge1xuICBpZiAoaXNPYmplY3Qob2JqVmFsdWUpICYmIGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgb2JqVmFsdWUpO1xuICAgIGJhc2VNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSwgc3RhY2spO1xuICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIG9ialZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGN1c3RvbURlZmF1bHRzTWVyZ2U7XG4iLCJ2YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksXG4gICAgY3JlYXRlQXNzaWduZXIgPSByZXF1aXJlKCcuL19jcmVhdGVBc3NpZ25lcicpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVyZ2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG1lcmdlZCB2YWx1ZXMgb2YgdGhlIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2VcbiAqIHByb3BlcnRpZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBtZXJnaW5nIGlzIGhhbmRsZWQgYnkgdGhlXG4gKiBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggc2l4IGFyZ3VtZW50czpcbiAqIChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKS5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAqICAgaWYgKF8uaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAqICAgICByZXR1cm4gb2JqVmFsdWUuY29uY2F0KHNyY1ZhbHVlKTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogWzFdLCAnYic6IFsyXSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IFszXSwgJ2InOiBbNF0gfTtcbiAqXG4gKiBfLm1lcmdlV2l0aChvYmplY3QsIG90aGVyLCBjdXN0b21pemVyKTtcbiAqIC8vID0+IHsgJ2EnOiBbMSwgM10sICdiJzogWzIsIDRdIH1cbiAqL1xudmFyIG1lcmdlV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlV2l0aDtcbiIsInZhciBhcHBseSA9IHJlcXVpcmUoJy4vX2FwcGx5JyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGN1c3RvbURlZmF1bHRzTWVyZ2UgPSByZXF1aXJlKCcuL19jdXN0b21EZWZhdWx0c01lcmdlJyksXG4gICAgbWVyZ2VXaXRoID0gcmVxdWlyZSgnLi9tZXJnZVdpdGgnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRlZmF1bHRzYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBhc3NpZ25zXG4gKiBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjEwLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5kZWZhdWx0c1xuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmF1bHRzRGVlcCh7ICdhJzogeyAnYic6IDIgfSB9LCB7ICdhJzogeyAnYic6IDEsICdjJzogMyB9IH0pO1xuICogLy8gPT4geyAnYSc6IHsgJ2InOiAyLCAnYyc6IDMgfSB9XG4gKi9cbnZhciBkZWZhdWx0c0RlZXAgPSBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gIGFyZ3MucHVzaCh1bmRlZmluZWQsIGN1c3RvbURlZmF1bHRzTWVyZ2UpO1xuICByZXR1cm4gYXBwbHkobWVyZ2VXaXRoLCB1bmRlZmluZWQsIGFyZ3MpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHNEZWVwO1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlSW50ZXJzZWN0aW9uID0gcmVxdWlyZSgnLi9fYmFzZUludGVyc2VjdGlvbicpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBjYXN0QXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9fY2FzdEFycmF5TGlrZU9iamVjdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiBhbGwgZ2l2ZW4gYXJyYXlzXG4gKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pbnRlcnNlY3Rpb24oWzIsIDFdLCBbMiwgM10pO1xuICogLy8gPT4gWzJdXG4gKi9cbnZhciBpbnRlcnNlY3Rpb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgdmFyIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG4gIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkKVxuICAgIDogW107XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnRlcnNlY3Rpb247XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJbmRleE9mV2l0aChhcnJheSwgdmFsdWUsIGZyb21JbmRleCwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGNvbXBhcmF0b3IoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJbmRleE9mV2l0aDtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUluZGV4T2YgPSByZXF1aXJlKCcuL19iYXNlSW5kZXhPZicpLFxuICAgIGJhc2VJbmRleE9mV2l0aCA9IHJlcXVpcmUoJy4vX2Jhc2VJbmRleE9mV2l0aCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHVsbEFsbEJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleE9mID0gY29tcGFyYXRvciA/IGJhc2VJbmRleE9mV2l0aCA6IGJhc2VJbmRleE9mLFxuICAgICAgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBzZWVuID0gYXJyYXk7XG5cbiAgaWYgKGFycmF5ID09PSB2YWx1ZXMpIHtcbiAgICB2YWx1ZXMgPSBjb3B5QXJyYXkodmFsdWVzKTtcbiAgfVxuICBpZiAoaXRlcmF0ZWUpIHtcbiAgICBzZWVuID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGZyb21JbmRleCA9IDAsXG4gICAgICAgIHZhbHVlID0gdmFsdWVzW2luZGV4XSxcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgd2hpbGUgKChmcm9tSW5kZXggPSBpbmRleE9mKHNlZW4sIGNvbXB1dGVkLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpKSA+IC0xKSB7XG4gICAgICBpZiAoc2VlbiAhPT0gYXJyYXkpIHtcbiAgICAgICAgc3BsaWNlLmNhbGwoc2VlbiwgZnJvbUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICAgIHNwbGljZS5jYWxsKGFycmF5LCBmcm9tSW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVB1bGxBbGw7XG4iLCJ2YXIgYmFzZVB1bGxBbGwgPSByZXF1aXJlKCcuL19iYXNlUHVsbEFsbCcpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiB2YWx1ZXMgdG8gcmVtb3ZlLlxuICpcbiAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZWAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICpcbiAqIF8ucHVsbEFsbChhcnJheSwgWydhJywgJ2MnXSk7XG4gKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gKiAvLyA9PiBbJ2InLCAnYiddXG4gKi9cbmZ1bmN0aW9uIHB1bGxBbGwoYXJyYXksIHZhbHVlcykge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMpXG4gICAgOiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwdWxsQWxsO1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKSxcbiAgICBjYXN0RnVuY3Rpb24gPSByZXF1aXJlKCcuL19jYXN0RnVuY3Rpb24nKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBlbGVtZW50LlxuICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICogcHJvcGVydHkgYXJlIGl0ZXJhdGVkIGxpa2UgYXJyYXlzLiBUbyBhdm9pZCB0aGlzIGJlaGF2aW9yIHVzZSBgXy5mb3JJbmBcbiAqIG9yIGBfLmZvck93bmAgZm9yIG9iamVjdCBpdGVyYXRpb24uXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGFsaWFzIGVhY2hcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICogQHNlZSBfLmZvckVhY2hSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICpcbiAqIF8uZm9yRWFjaCh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAqICAgY29uc29sZS5sb2coa2V5KTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2goY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoIDogYmFzZUVhY2g7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGNhc3RGdW5jdGlvbihpdGVyYXRlZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvckVhY2g7XG4iLCJ2YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLFxuICAgIGFycmF5SW5jbHVkZXMgPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzJyksXG4gICAgYXJyYXlJbmNsdWRlc1dpdGggPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzV2l0aCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRpZmZlcmVuY2VgIHdpdGhvdXQgc3VwcG9ydFxuICogZm9yIGV4Y2x1ZGluZyBtdWx0aXBsZSBhcnJheXMgb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlRGlmZmVyZW5jZShhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgdmFsdWVzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcblxuICBpZiAoIWxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgdmFsdWVzID0gYXJyYXlNYXAodmFsdWVzLCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgfVxuICBpZiAoY29tcGFyYXRvcikge1xuICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgfVxuICBlbHNlIGlmICh2YWx1ZXMubGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgdmFsdWVzID0gbmV3IFNldENhY2hlKHZhbHVlcyk7XG4gIH1cbiAgb3V0ZXI6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID09IG51bGwgPyB2YWx1ZSA6IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgIHZhciB2YWx1ZXNJbmRleCA9IHZhbHVlc0xlbmd0aDtcbiAgICAgIHdoaWxlICh2YWx1ZXNJbmRleC0tKSB7XG4gICAgICAgIGlmICh2YWx1ZXNbdmFsdWVzSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpbmNsdWRlcyh2YWx1ZXMsIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VEaWZmZXJlbmNlO1xuIiwidmFyIGJhc2VEaWZmZXJlbmNlID0gcmVxdWlyZSgnLi9fYmFzZURpZmZlcmVuY2UnKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBleGNsdWRpbmcgYWxsIGdpdmVuIHZhbHVlcyB1c2luZ1xuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAqIEBzZWUgXy5kaWZmZXJlbmNlLCBfLnhvclxuICogQGV4YW1wbGVcbiAqXG4gKiBfLndpdGhvdXQoWzIsIDEsIDIsIDNdLCAxLCAyKTtcbiAqIC8vID0+IFszXVxuICovXG52YXIgd2l0aG91dCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIHZhbHVlcylcbiAgICA6IFtdO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gd2l0aG91dDtcbiIsImNvbnN0IGZsYXR0ZW4gPSByZXF1aXJlKCdsb2Rhc2gvZmxhdHRlbicpXG5jb25zdCBmbGF0dGVuRGVlcCA9IHJlcXVpcmUoJ2xvZGFzaC9mbGF0dGVuRGVlcCcpXG5jb25zdCBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5PYmplY3QnKVxuY29uc3QgdW5pcSA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxJylcbmNvbnN0IHVuaXFXaXRoID0gcmVxdWlyZSgnbG9kYXNoL3VuaXFXaXRoJylcbmNvbnN0IHdpdGhvdXQgPSByZXF1aXJlKCdsb2Rhc2gvd2l0aG91dCcpXG5cbmZ1bmN0aW9uIGRlbGV0ZVVuZGVmaW5lZFByb3BzKHJldHVybk9iamVjdCkge1xuICAvLyBjbGVhbnVwIGVtcHR5XG4gIGZvciAoY29uc3QgcHJvcCBpbiByZXR1cm5PYmplY3QpIHtcbiAgICBpZiAoaGFzKHJldHVybk9iamVjdCwgcHJvcCkgJiYgaXNFbXB0eVNjaGVtYShyZXR1cm5PYmplY3RbcHJvcF0pKSB7XG4gICAgICBkZWxldGUgcmV0dXJuT2JqZWN0W3Byb3BdXG4gICAgfVxuICB9XG4gIHJldHVybiByZXR1cm5PYmplY3Rcbn1cblxuY29uc3QgYWxsVW5pcXVlS2V5cyA9IChhcnIpID0+IHVuaXEoZmxhdHRlbkRlZXAoYXJyLm1hcChrZXlzKSkpXG5jb25zdCBnZXRWYWx1ZXMgPSAoc2NoZW1hcywga2V5KSA9PiBzY2hlbWFzLm1hcChzY2hlbWEgPT4gc2NoZW1hICYmIHNjaGVtYVtrZXldKVxuY29uc3QgaGFzID0gKG9iaiwgcHJvcE5hbWUpID0+IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3BOYW1lKVxuY29uc3Qga2V5cyA9IG9iaiA9PiB7XG4gIGlmIChpc1BsYWluT2JqZWN0KG9iaikgfHwgQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW11cbiAgfVxufVxuXG5jb25zdCBub3RVbmRlZmluZWQgPSAodmFsKSA9PiB2YWwgIT09IHVuZGVmaW5lZFxuY29uc3QgaXNTY2hlbWEgPSAodmFsKSA9PiBpc1BsYWluT2JqZWN0KHZhbCkgfHwgdmFsID09PSB0cnVlIHx8IHZhbCA9PT0gZmFsc2VcbmNvbnN0IGlzRW1wdHlTY2hlbWEgPSAob2JqKSA9PiAoIWtleXMob2JqKS5sZW5ndGgpICYmIG9iaiAhPT0gZmFsc2UgJiYgb2JqICE9PSB0cnVlXG5jb25zdCB3aXRob3V0QXJyID0gKGFyciwgLi4ucmVzdCkgPT4gd2l0aG91dC5hcHBseShudWxsLCBbYXJyXS5jb25jYXQoZmxhdHRlbihyZXN0KSkpXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhbGxVbmlxdWVLZXlzLFxuICBkZWxldGVVbmRlZmluZWRQcm9wcyxcbiAgZ2V0VmFsdWVzLFxuICBoYXMsXG4gIGlzRW1wdHlTY2hlbWEsXG4gIGlzU2NoZW1hLFxuICBrZXlzLFxuICBub3RVbmRlZmluZWQsXG4gIHVuaXFXaXRoLFxuICB3aXRob3V0QXJyXG59XG4iLCJcbmNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCdqc29uLXNjaGVtYS1jb21wYXJlJylcbmNvbnN0IGZvckVhY2ggPSByZXF1aXJlKCdsb2Rhc2gvZm9yRWFjaCcpXG5jb25zdCB7XG4gIGFsbFVuaXF1ZUtleXMsXG4gIGRlbGV0ZVVuZGVmaW5lZFByb3BzLFxuICBnZXRWYWx1ZXMsXG4gIGtleXMsXG4gIG5vdFVuZGVmaW5lZCxcbiAgdW5pcVdpdGgsXG4gIHdpdGhvdXRBcnJcbn0gPSByZXF1aXJlKCcuLi9jb21tb24nKVxuXG5mdW5jdGlvbiByZW1vdmVGYWxzZVNjaGVtYXModGFyZ2V0KSB7XG4gIGZvckVhY2godGFyZ2V0LCBmdW5jdGlvbihzY2hlbWEsIHByb3ApIHtcbiAgICBpZiAoc2NoZW1hID09PSBmYWxzZSkge1xuICAgICAgZGVsZXRlIHRhcmdldFtwcm9wXVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gbWVyZ2VTY2hlbWFHcm91cChncm91cCwgbWVyZ2VTY2hlbWFzKSB7XG4gIGNvbnN0IGFsbEtleXMgPSBhbGxVbmlxdWVLZXlzKGdyb3VwKVxuICByZXR1cm4gYWxsS2V5cy5yZWR1Y2UoZnVuY3Rpb24oYWxsLCBrZXkpIHtcbiAgICBjb25zdCBzY2hlbWFzID0gZ2V0VmFsdWVzKGdyb3VwLCBrZXkpXG4gICAgY29uc3QgY29tcGFjdGVkID0gdW5pcVdpdGgoc2NoZW1hcy5maWx0ZXIobm90VW5kZWZpbmVkKSwgY29tcGFyZSlcbiAgICBhbGxba2V5XSA9IG1lcmdlU2NoZW1hcyhjb21wYWN0ZWQsIGtleSlcbiAgICByZXR1cm4gYWxsXG4gIH0sIHt9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAga2V5d29yZHM6IFsncHJvcGVydGllcycsICdwYXR0ZXJuUHJvcGVydGllcycsICdhZGRpdGlvbmFsUHJvcGVydGllcyddLFxuICByZXNvbHZlcih2YWx1ZXMsIHBhcmVudHMsIG1lcmdlcnMsIG9wdGlvbnMpIHtcbiAgICAvLyBmaXJzdCBnZXQgcmlkIG9mIGFsbCBub24gcGVybWl0dGVkIHByb3BlcnRpZXNcbiAgICBpZiAoIW9wdGlvbnMuaWdub3JlQWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHN1YlNjaGVtYSkge1xuICAgICAgICBjb25zdCBvdGhlclN1YlNjaGVtYXMgPSB2YWx1ZXMuZmlsdGVyKHMgPT4gcyAhPT0gc3ViU2NoZW1hKVxuICAgICAgICBjb25zdCBvd25LZXlzID0ga2V5cyhzdWJTY2hlbWEucHJvcGVydGllcylcbiAgICAgICAgY29uc3Qgb3duUGF0dGVybktleXMgPSBrZXlzKHN1YlNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcylcbiAgICAgICAgY29uc3Qgb3duUGF0dGVybnMgPSBvd25QYXR0ZXJuS2V5cy5tYXAoayA9PiBuZXcgUmVnRXhwKGspKVxuICAgICAgICBvdGhlclN1YlNjaGVtYXMuZm9yRWFjaChmdW5jdGlvbihvdGhlcikge1xuICAgICAgICAgIGNvbnN0IGFsbE90aGVyS2V5cyA9IGtleXMob3RoZXIucHJvcGVydGllcylcbiAgICAgICAgICBjb25zdCBrZXlzTWF0Y2hpbmdQYXR0ZXJuID0gYWxsT3RoZXJLZXlzLmZpbHRlcihrID0+IG93blBhdHRlcm5zLnNvbWUocGsgPT4gcGsudGVzdChrKSkpXG4gICAgICAgICAgY29uc3QgYWRkaXRpb25hbEtleXMgPSB3aXRob3V0QXJyKGFsbE90aGVyS2V5cywgb3duS2V5cywga2V5c01hdGNoaW5nUGF0dGVybilcbiAgICAgICAgICBhZGRpdGlvbmFsS2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAgICAgb3RoZXIucHJvcGVydGllc1trZXldID0gbWVyZ2Vycy5wcm9wZXJ0aWVzKFtcbiAgICAgICAgICAgICAgb3RoZXIucHJvcGVydGllc1trZXldLCBzdWJTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXNcbiAgICAgICAgICAgIF0sIGtleSlcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfSlcblxuICAgICAgLy8gcmVtb3ZlIGRpc2FsbG93ZWQgcGF0dGVyblByb3BlcnRpZXNcbiAgICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHN1YlNjaGVtYSkge1xuICAgICAgICBjb25zdCBvdGhlclN1YlNjaGVtYXMgPSB2YWx1ZXMuZmlsdGVyKHMgPT4gcyAhPT0gc3ViU2NoZW1hKVxuICAgICAgICBjb25zdCBvd25QYXR0ZXJuS2V5cyA9IGtleXMoc3ViU2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzKVxuICAgICAgICBpZiAoc3ViU2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID09PSBmYWxzZSkge1xuICAgICAgICAgIG90aGVyU3ViU2NoZW1hcy5mb3JFYWNoKGZ1bmN0aW9uKG90aGVyKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxPdGhlclBhdHRlcm5zID0ga2V5cyhvdGhlci5wYXR0ZXJuUHJvcGVydGllcylcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxQYXR0ZXJuS2V5cyA9IHdpdGhvdXRBcnIoYWxsT3RoZXJQYXR0ZXJucywgb3duUGF0dGVybktleXMpXG4gICAgICAgICAgICBhZGRpdGlvbmFsUGF0dGVybktleXMuZm9yRWFjaChrZXkgPT4gZGVsZXRlIG90aGVyLnBhdHRlcm5Qcm9wZXJ0aWVzW2tleV0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCByZXR1cm5PYmplY3QgPSB7XG4gICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogbWVyZ2Vycy5hZGRpdGlvbmFsUHJvcGVydGllcyh2YWx1ZXMubWFwKHMgPT4gcy5hZGRpdGlvbmFsUHJvcGVydGllcykpLFxuICAgICAgcGF0dGVyblByb3BlcnRpZXM6IG1lcmdlU2NoZW1hR3JvdXAodmFsdWVzLm1hcChzID0+IHMucGF0dGVyblByb3BlcnRpZXMpLCBtZXJnZXJzLnBhdHRlcm5Qcm9wZXJ0aWVzKSxcbiAgICAgIHByb3BlcnRpZXM6IG1lcmdlU2NoZW1hR3JvdXAodmFsdWVzLm1hcChzID0+IHMucHJvcGVydGllcyksIG1lcmdlcnMucHJvcGVydGllcylcbiAgICB9XG5cbiAgICBpZiAocmV0dXJuT2JqZWN0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzID09PSBmYWxzZSkge1xuICAgICAgcmVtb3ZlRmFsc2VTY2hlbWFzKHJldHVybk9iamVjdC5wcm9wZXJ0aWVzKVxuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVVbmRlZmluZWRQcm9wcyhyZXR1cm5PYmplY3QpXG4gIH1cbn1cbiIsIlxuY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJ2pzb24tc2NoZW1hLWNvbXBhcmUnKVxuY29uc3QgZm9yRWFjaCA9IHJlcXVpcmUoJ2xvZGFzaC9mb3JFYWNoJylcbmNvbnN0IHtcbiAgYWxsVW5pcXVlS2V5cyxcbiAgZGVsZXRlVW5kZWZpbmVkUHJvcHMsXG4gIGhhcyxcbiAgaXNTY2hlbWEsXG4gIG5vdFVuZGVmaW5lZCxcbiAgdW5pcVdpdGhcbn0gPSByZXF1aXJlKCcuLi9jb21tb24nKVxuXG5mdW5jdGlvbiByZW1vdmVGYWxzZVNjaGVtYXNGcm9tQXJyYXkodGFyZ2V0KSB7XG4gIGZvckVhY2godGFyZ2V0LCBmdW5jdGlvbihzY2hlbWEsIGluZGV4KSB7XG4gICAgaWYgKHNjaGVtYSA9PT0gZmFsc2UpIHtcbiAgICAgIHRhcmdldC5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBnZXRJdGVtU2NoZW1hcyhzdWJTY2hlbWFzLCBrZXkpIHtcbiAgcmV0dXJuIHN1YlNjaGVtYXMubWFwKGZ1bmN0aW9uKHN1Yikge1xuICAgIGlmICghc3ViKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3ViLml0ZW1zKSkge1xuICAgICAgY29uc3Qgc2NoZW1hQXRQb3MgPSBzdWIuaXRlbXNba2V5XVxuICAgICAgaWYgKGlzU2NoZW1hKHNjaGVtYUF0UG9zKSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hQXRQb3NcbiAgICAgIH0gZWxzZSBpZiAoaGFzKHN1YiwgJ2FkZGl0aW9uYWxJdGVtcycpKSB7XG4gICAgICAgIHJldHVybiBzdWIuYWRkaXRpb25hbEl0ZW1zXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzdWIuaXRlbXNcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGdldEFkZGl0aW9uYWxTY2hlbWFzKHN1YlNjaGVtYXMpIHtcbiAgcmV0dXJuIHN1YlNjaGVtYXMubWFwKGZ1bmN0aW9uKHN1Yikge1xuICAgIGlmICghc3ViKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHN1Yi5pdGVtcykpIHtcbiAgICAgIHJldHVybiBzdWIuYWRkaXRpb25hbEl0ZW1zXG4gICAgfVxuICAgIHJldHVybiBzdWIuaXRlbXNcbiAgfSlcbn1cblxuLy8gUHJvdmlkZSBzb3VyY2Ugd2hlbiBhcnJheVxuZnVuY3Rpb24gbWVyZ2VJdGVtcyhncm91cCwgbWVyZ2VTY2hlbWFzLCBpdGVtcykge1xuICBjb25zdCBhbGxLZXlzID0gYWxsVW5pcXVlS2V5cyhpdGVtcylcbiAgcmV0dXJuIGFsbEtleXMucmVkdWNlKGZ1bmN0aW9uKGFsbCwga2V5KSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGdldEl0ZW1TY2hlbWFzKGdyb3VwLCBrZXkpXG4gICAgY29uc3QgY29tcGFjdGVkID0gdW5pcVdpdGgoc2NoZW1hcy5maWx0ZXIobm90VW5kZWZpbmVkKSwgY29tcGFyZSlcbiAgICBhbGxba2V5XSA9IG1lcmdlU2NoZW1hcyhjb21wYWN0ZWQsIGtleSlcbiAgICByZXR1cm4gYWxsXG4gIH0sIFtdKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAga2V5d29yZHM6IFsnaXRlbXMnLCAnYWRkaXRpb25hbEl0ZW1zJ10sXG4gIHJlc29sdmVyKHZhbHVlcywgcGFyZW50cywgbWVyZ2Vycykge1xuICAgIC8vIGNvbnN0IGNyZWF0ZVN1Yk1lcmdlciA9IGdyb3VwS2V5ID0+IChzY2hlbWFzLCBrZXkpID0+IG1lcmdlU2NoZW1hcyhzY2hlbWFzLCBwYXJlbnRzLmNvbmNhdChncm91cEtleSwga2V5KSlcbiAgICBjb25zdCBpdGVtcyA9IHZhbHVlcy5tYXAocyA9PiBzLml0ZW1zKVxuICAgIGNvbnN0IGl0ZW1zQ29tcGFjdGVkID0gaXRlbXMuZmlsdGVyKG5vdFVuZGVmaW5lZClcbiAgICBjb25zdCByZXR1cm5PYmplY3QgPSB7fVxuXG4gICAgLy8gaWYgYWxsIGl0ZW1zIGtleXdvcmQgdmFsdWVzIGFyZSBzY2hlbWFzLCB3ZSBjYW4gbWVyZ2UgdGhlbSBhcyBzaW1wbGUgc2NoZW1hc1xuICAgIC8vIGlmIG5vdCB3ZSBuZWVkIHRvIG1lcmdlIHRoZW0gYXMgbWl4ZWRcbiAgICBpZiAoaXRlbXNDb21wYWN0ZWQuZXZlcnkoaXNTY2hlbWEpKSB7XG4gICAgICByZXR1cm5PYmplY3QuaXRlbXMgPSBtZXJnZXJzLml0ZW1zKGl0ZW1zKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm5PYmplY3QuaXRlbXMgPSBtZXJnZUl0ZW1zKHZhbHVlcywgbWVyZ2Vycy5pdGVtcywgaXRlbXMpXG4gICAgfVxuXG4gICAgbGV0IHNjaGVtYXNBdExhc3RQb3NcbiAgICBpZiAoaXRlbXNDb21wYWN0ZWQuZXZlcnkoQXJyYXkuaXNBcnJheSkpIHtcbiAgICAgIHNjaGVtYXNBdExhc3RQb3MgPSB2YWx1ZXMubWFwKHMgPT4gcy5hZGRpdGlvbmFsSXRlbXMpXG4gICAgfSBlbHNlIGlmIChpdGVtc0NvbXBhY3RlZC5zb21lKEFycmF5LmlzQXJyYXkpKSB7XG4gICAgICBzY2hlbWFzQXRMYXN0UG9zID0gZ2V0QWRkaXRpb25hbFNjaGVtYXModmFsdWVzKVxuICAgIH1cblxuICAgIGlmIChzY2hlbWFzQXRMYXN0UG9zKSB7XG4gICAgICByZXR1cm5PYmplY3QuYWRkaXRpb25hbEl0ZW1zID0gbWVyZ2Vycy5hZGRpdGlvbmFsSXRlbXMoc2NoZW1hc0F0TGFzdFBvcylcbiAgICB9XG5cbiAgICBpZiAocmV0dXJuT2JqZWN0LmFkZGl0aW9uYWxJdGVtcyA9PT0gZmFsc2UgJiYgQXJyYXkuaXNBcnJheShyZXR1cm5PYmplY3QuaXRlbXMpKSB7XG4gICAgICByZW1vdmVGYWxzZVNjaGVtYXNGcm9tQXJyYXkocmV0dXJuT2JqZWN0Lml0ZW1zKVxuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVVbmRlZmluZWRQcm9wcyhyZXR1cm5PYmplY3QpXG4gIH1cbn1cbiIsImNvbnN0IGNsb25lRGVlcCA9IHJlcXVpcmUoJ2xvZGFzaC9jbG9uZURlZXAnKVxuY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJ2pzb24tc2NoZW1hLWNvbXBhcmUnKVxuY29uc3QgY29tcHV0ZUxjbSA9IHJlcXVpcmUoJ2NvbXB1dGUtbGNtJylcbmNvbnN0IGRlZmF1bHRzRGVlcCA9IHJlcXVpcmUoJ2xvZGFzaC9kZWZhdWx0c0RlZXAnKVxuY29uc3QgZmxhdHRlbiA9IHJlcXVpcmUoJ2xvZGFzaC9mbGF0dGVuJylcbmNvbnN0IGZsYXR0ZW5EZWVwID0gcmVxdWlyZSgnbG9kYXNoL2ZsYXR0ZW5EZWVwJylcbmNvbnN0IGludGVyc2VjdGlvbiA9IHJlcXVpcmUoJ2xvZGFzaC9pbnRlcnNlY3Rpb24nKVxuY29uc3QgaW50ZXJzZWN0aW9uV2l0aCA9IHJlcXVpcmUoJ2xvZGFzaC9pbnRlcnNlY3Rpb25XaXRoJylcbmNvbnN0IGlzRXF1YWwgPSByZXF1aXJlKCdsb2Rhc2gvaXNFcXVhbCcpXG5jb25zdCBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5PYmplY3QnKVxuY29uc3QgcHVsbEFsbCA9IHJlcXVpcmUoJ2xvZGFzaC9wdWxsQWxsJylcbmNvbnN0IHNvcnRCeSA9IHJlcXVpcmUoJ2xvZGFzaC9zb3J0QnknKVxuY29uc3QgdW5pcSA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxJylcbmNvbnN0IHVuaXFXaXRoID0gcmVxdWlyZSgnbG9kYXNoL3VuaXFXaXRoJylcblxuY29uc3QgcHJvcGVydGllc1Jlc29sdmVyID0gcmVxdWlyZSgnLi9jb21wbGV4LXJlc29sdmVycy9wcm9wZXJ0aWVzJylcbmNvbnN0IGl0ZW1zUmVzb2x2ZXIgPSByZXF1aXJlKCcuL2NvbXBsZXgtcmVzb2x2ZXJzL2l0ZW1zJylcblxuY29uc3QgY29udGFpbnMgPSAoYXJyLCB2YWwpID0+IGFyci5pbmRleE9mKHZhbCkgIT09IC0xXG5jb25zdCBpc1NjaGVtYSA9ICh2YWwpID0+IGlzUGxhaW5PYmplY3QodmFsKSB8fCB2YWwgPT09IHRydWUgfHwgdmFsID09PSBmYWxzZVxuY29uc3QgaXNGYWxzZSA9ICh2YWwpID0+IHZhbCA9PT0gZmFsc2VcbmNvbnN0IGlzVHJ1ZSA9ICh2YWwpID0+IHZhbCA9PT0gdHJ1ZVxuY29uc3Qgc2NoZW1hUmVzb2x2ZXIgPSAoY29tcGFjdGVkLCBrZXksIG1lcmdlU2NoZW1hcykgPT4gbWVyZ2VTY2hlbWFzKGNvbXBhY3RlZClcbmNvbnN0IHN0cmluZ0FycmF5ID0gKHZhbHVlcykgPT4gc29ydEJ5KHVuaXEoZmxhdHRlbkRlZXAodmFsdWVzKSkpXG5jb25zdCBub3RVbmRlZmluZWQgPSAodmFsKSA9PiB2YWwgIT09IHVuZGVmaW5lZFxuY29uc3QgYWxsVW5pcXVlS2V5cyA9IChhcnIpID0+IHVuaXEoZmxhdHRlbkRlZXAoYXJyLm1hcChrZXlzKSkpXG5cbi8vIHJlc29sdmVyc1xuY29uc3QgZmlyc3QgPSBjb21wYWN0ZWQgPT4gY29tcGFjdGVkWzBdXG5jb25zdCByZXF1aXJlZCA9IGNvbXBhY3RlZCA9PiBzdHJpbmdBcnJheShjb21wYWN0ZWQpXG5jb25zdCBtYXhpbXVtVmFsdWUgPSBjb21wYWN0ZWQgPT4gTWF0aC5tYXguYXBwbHkoTWF0aCwgY29tcGFjdGVkKVxuY29uc3QgbWluaW11bVZhbHVlID0gY29tcGFjdGVkID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIGNvbXBhY3RlZClcbmNvbnN0IHVuaXF1ZUl0ZW1zID0gY29tcGFjdGVkID0+IGNvbXBhY3RlZC5zb21lKGlzVHJ1ZSlcbmNvbnN0IGV4YW1wbGVzID0gY29tcGFjdGVkID0+IHVuaXFXaXRoKGZsYXR0ZW4oY29tcGFjdGVkKSwgaXNFcXVhbClcblxuZnVuY3Rpb24gY29tcGFyZVByb3Aoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbihhLCBiKSB7XG4gICAgcmV0dXJuIGNvbXBhcmUoe1xuICAgICAgW2tleV06IGFcbiAgICB9LCB7IFtrZXldOiBiIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QWxsT2Yoc2NoZW1hKSB7XG4gIGxldCB7IGFsbE9mID0gW10sIC4uLmNvcHkgfSA9IHNjaGVtYVxuICBjb3B5ID0gaXNQbGFpbk9iamVjdChzY2hlbWEpID8gY29weSA6IHNjaGVtYSAvLyBpZiBzY2hlbWEgaXMgYm9vbGVhblxuICByZXR1cm4gW2NvcHksIC4uLmFsbE9mLm1hcChnZXRBbGxPZildXG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlcyhzY2hlbWFzLCBrZXkpIHtcbiAgcmV0dXJuIHNjaGVtYXMubWFwKHNjaGVtYSA9PiBzY2hlbWEgJiYgc2NoZW1hW2tleV0pXG59XG5cbmZ1bmN0aW9uIHRyeU1lcmdlU2NoZW1hR3JvdXBzKHNjaGVtYUdyb3VwcywgbWVyZ2VTY2hlbWFzKSB7XG4gIHJldHVybiBzY2hlbWFHcm91cHMubWFwKGZ1bmN0aW9uKHNjaGVtYXMsIGluZGV4KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBtZXJnZVNjaGVtYXMoc2NoZW1hcywgaW5kZXgpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgfSkuZmlsdGVyKG5vdFVuZGVmaW5lZClcbn1cblxuZnVuY3Rpb24ga2V5cyhvYmopIHtcbiAgaWYgKGlzUGxhaW5PYmplY3Qob2JqKSB8fCBBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBbXVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFueU9mQ29tYmluYXRpb25zKGFyck9mQXJyYXlzLCBjb21iaW5hdGlvbnMpIHtcbiAgY29tYmluYXRpb25zID0gY29tYmluYXRpb25zIHx8IFtdXG4gIGlmICghYXJyT2ZBcnJheXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGNvbWJpbmF0aW9uc1xuICB9XG5cbiAgY29uc3QgdmFsdWVzID0gYXJyT2ZBcnJheXMuc2xpY2UoMCkuc2hpZnQoKVxuICBjb25zdCByZXN0ID0gYXJyT2ZBcnJheXMuc2xpY2UoMSlcbiAgaWYgKGNvbWJpbmF0aW9ucy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZ2V0QW55T2ZDb21iaW5hdGlvbnMocmVzdCwgZmxhdHRlbihjb21iaW5hdGlvbnMubWFwKGNvbWJpbmF0aW9uID0+IHZhbHVlcy5tYXAoaXRlbSA9PiAoW2l0ZW1dLmNvbmNhdChjb21iaW5hdGlvbikpKSkpKVxuICB9XG4gIHJldHVybiBnZXRBbnlPZkNvbWJpbmF0aW9ucyhyZXN0LCB2YWx1ZXMubWFwKGl0ZW0gPT4gKGl0ZW0pKSlcbn1cblxuZnVuY3Rpb24gdGhyb3dJbmNvbXBhdGlibGUodmFsdWVzLCBwYXRocykge1xuICBsZXQgYXNKU09OXG4gIHRyeSB7XG4gICAgYXNKU09OID0gdmFsdWVzLm1hcChmdW5jdGlvbih2YWwpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWwsIG51bGwsIDIpXG4gICAgfSkuam9pbignXFxuJylcbiAgfSBjYXRjaCAodmFyaWFibGUpIHtcbiAgICBhc0pTT04gPSB2YWx1ZXMuam9pbignLCAnKVxuICB9XG4gIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHJlc29sdmUgdmFsdWVzIGZvciBwYXRoOlwiJyArIHBhdGhzLmpvaW4oJy4nKSArICdcIi4gVGhleSBhcmUgcHJvYmFibHkgaW5jb21wYXRpYmxlLiBWYWx1ZXM6IFxcbicgKyBhc0pTT04pXG59XG5cbmZ1bmN0aW9uIGNhbGxHcm91cFJlc29sdmVyKGNvbXBsZXhLZXl3b3JkcywgcmVzb2x2ZXJOYW1lLCBzY2hlbWFzLCBtZXJnZVNjaGVtYXMsIG9wdGlvbnMsIHBhcmVudHMpIHtcbiAgaWYgKGNvbXBsZXhLZXl3b3Jkcy5sZW5ndGgpIHtcbiAgICBjb25zdCByZXNvbHZlckNvbmZpZyA9IG9wdGlvbnMuY29tcGxleFJlc29sdmVyc1tyZXNvbHZlck5hbWVdXG4gICAgaWYgKCFyZXNvbHZlckNvbmZpZyB8fCAhcmVzb2x2ZXJDb25maWcucmVzb2x2ZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVzb2x2ZXIgZm91bmQgZm9yICcgKyByZXNvbHZlck5hbWUpXG4gICAgfVxuXG4gICAgLy8gZXh0cmFjdCBhbGwga2V5d29yZHMgZnJvbSBhbGwgdGhlIHNjaGVtYXMgdGhhdCBoYXZlIG9uZSBvciBtb3JlXG4gICAgLy8gdGhlbiByZW1vdmUgYWxsIHVuZGVmaW5lZCBvbmVzIGFuZCBub3QgdW5pcXVlXG4gICAgY29uc3QgZXh0cmFjdGVkS2V5d29yZHNPbmx5ID0gc2NoZW1hcy5tYXAoc2NoZW1hID0+IGNvbXBsZXhLZXl3b3Jkcy5yZWR1Y2UoKGFsbCwga2V5KSA9PiB7XG4gICAgICBpZiAoc2NoZW1hW2tleV0gIT09IHVuZGVmaW5lZCkgYWxsW2tleV0gPSBzY2hlbWFba2V5XVxuICAgICAgcmV0dXJuIGFsbFxuICAgIH0sIHt9KSlcbiAgICBjb25zdCB1bmlxdWUgPSB1bmlxV2l0aChleHRyYWN0ZWRLZXl3b3Jkc09ubHksIGNvbXBhcmUpXG5cbiAgICAvLyBjcmVhdGUgbWVyZ2VycyB0aGF0IGF1dG9tYXRpY2FsbHkgYWRkIHRoZSBwYXRoIG9mIHRoZSBrZXl3b3JkIGZvciB1c2UgaW4gdGhlIGNvbXBsZXggcmVzb2x2ZXJcbiAgICBjb25zdCBtZXJnZXJzID0gcmVzb2x2ZXJDb25maWcua2V5d29yZHMucmVkdWNlKChhbGwsIGtleSkgPT4gKHtcbiAgICAgIC4uLmFsbCxcbiAgICAgIFtrZXldOiAoc2NoZW1hcywgZXh0cmFLZXkgPSBbXSkgPT4gbWVyZ2VTY2hlbWFzKHNjaGVtYXMsIG51bGwsIHBhcmVudHMuY29uY2F0KGtleSwgZXh0cmFLZXkpKVxuICAgIH0pLCB7fSlcblxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVyQ29uZmlnLnJlc29sdmVyKHVuaXF1ZSwgcGFyZW50cy5jb25jYXQocmVzb2x2ZXJOYW1lKSwgbWVyZ2Vycywgb3B0aW9ucylcblxuICAgIGlmICghaXNQbGFpbk9iamVjdChyZXN1bHQpKSB7XG4gICAgICB0aHJvd0luY29tcGF0aWJsZSh1bmlxdWUsIHBhcmVudHMuY29uY2F0KHJlc29sdmVyTmFtZSkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlcXVpcmVkTWV0YUFycmF5KGFycikge1xuICByZXR1cm4geyByZXF1aXJlZDogYXJyIH1cbn1cblxuY29uc3Qgc2NoZW1hR3JvdXBQcm9wcyA9IFsncHJvcGVydGllcycsICdwYXR0ZXJuUHJvcGVydGllcycsICdkZWZpbml0aW9ucycsICdkZXBlbmRlbmNpZXMnXVxuY29uc3Qgc2NoZW1hQXJyYXlzID0gWydhbnlPZicsICdvbmVPZiddXG5jb25zdCBzY2hlbWFQcm9wcyA9IFtcbiAgJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJyxcbiAgJ2FkZGl0aW9uYWxJdGVtcycsXG4gICdjb250YWlucycsXG4gICdwcm9wZXJ0eU5hbWVzJyxcbiAgJ25vdCcsXG4gICdpdGVtcydcbl1cblxuY29uc3QgZGVmYXVsdFJlc29sdmVycyA9IHtcbiAgdHlwZShjb21wYWN0ZWQpIHtcbiAgICBpZiAoY29tcGFjdGVkLnNvbWUoQXJyYXkuaXNBcnJheSkpIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBjb21wYWN0ZWQubWFwKGZ1bmN0aW9uKHZhbCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpXG4gICAgICAgICAgPyB2YWxcbiAgICAgICAgICA6IFt2YWxdXG4gICAgICB9KVxuICAgICAgY29uc3QgY29tbW9uID0gaW50ZXJzZWN0aW9uLmFwcGx5KG51bGwsIG5vcm1hbGl6ZWQpXG5cbiAgICAgIGlmIChjb21tb24ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBjb21tb25bMF1cbiAgICAgIH0gZWxzZSBpZiAoY29tbW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcmV0dXJuIHVuaXEoY29tbW9uKVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZGVwZW5kZW5jaWVzKGNvbXBhY3RlZCwgcGF0aHMsIG1lcmdlU2NoZW1hcykge1xuICAgIGNvbnN0IGFsbENoaWxkcmVuID0gYWxsVW5pcXVlS2V5cyhjb21wYWN0ZWQpXG5cbiAgICByZXR1cm4gYWxsQ2hpbGRyZW4ucmVkdWNlKGZ1bmN0aW9uKGFsbCwgY2hpbGRLZXkpIHtcbiAgICAgIGNvbnN0IGNoaWxkU2NoZW1hcyA9IGdldFZhbHVlcyhjb21wYWN0ZWQsIGNoaWxkS2V5KVxuICAgICAgbGV0IGlubmVyQ29tcGFjdGVkID0gdW5pcVdpdGgoY2hpbGRTY2hlbWFzLmZpbHRlcihub3RVbmRlZmluZWQpLCBpc0VxdWFsKVxuXG4gICAgICAvLyB0byBzdXBwb3J0IGRlcGVuZGVuY2llc1xuICAgICAgY29uc3QgaW5uZXJBcnJheXMgPSBpbm5lckNvbXBhY3RlZC5maWx0ZXIoQXJyYXkuaXNBcnJheSlcblxuICAgICAgaWYgKGlubmVyQXJyYXlzLmxlbmd0aCkge1xuICAgICAgICBpZiAoaW5uZXJBcnJheXMubGVuZ3RoID09PSBpbm5lckNvbXBhY3RlZC5sZW5ndGgpIHtcbiAgICAgICAgICBhbGxbY2hpbGRLZXldID0gc3RyaW5nQXJyYXkoaW5uZXJDb21wYWN0ZWQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaW5uZXJTY2hlbWFzID0gaW5uZXJDb21wYWN0ZWQuZmlsdGVyKGlzU2NoZW1hKVxuICAgICAgICAgIGNvbnN0IGFycmF5TWV0YVNjaGVhbXMgPSBpbm5lckFycmF5cy5tYXAoY3JlYXRlUmVxdWlyZWRNZXRhQXJyYXkpXG4gICAgICAgICAgYWxsW2NoaWxkS2V5XSA9IG1lcmdlU2NoZW1hcyhpbm5lclNjaGVtYXMuY29uY2F0KGFycmF5TWV0YVNjaGVhbXMpLCBjaGlsZEtleSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWxsXG4gICAgICB9XG5cbiAgICAgIGlubmVyQ29tcGFjdGVkID0gdW5pcVdpdGgoaW5uZXJDb21wYWN0ZWQsIGNvbXBhcmUpXG5cbiAgICAgIGFsbFtjaGlsZEtleV0gPSBtZXJnZVNjaGVtYXMoaW5uZXJDb21wYWN0ZWQsIGNoaWxkS2V5KVxuICAgICAgcmV0dXJuIGFsbFxuICAgIH0sIHt9KVxuICB9LFxuICBvbmVPZihjb21wYWN0ZWQsIHBhdGhzLCBtZXJnZVNjaGVtYXMpIHtcbiAgICBjb25zdCBjb21iaW5hdGlvbnMgPSBnZXRBbnlPZkNvbWJpbmF0aW9ucyhjbG9uZURlZXAoY29tcGFjdGVkKSlcbiAgICBjb25zdCByZXN1bHQgPSB0cnlNZXJnZVNjaGVtYUdyb3Vwcyhjb21iaW5hdGlvbnMsIG1lcmdlU2NoZW1hcylcbiAgICBjb25zdCB1bmlxdWUgPSB1bmlxV2l0aChyZXN1bHQsIGNvbXBhcmUpXG5cbiAgICBpZiAodW5pcXVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHVuaXF1ZVxuICAgIH1cbiAgfSxcbiAgbm90KGNvbXBhY3RlZCkge1xuICAgIHJldHVybiB7IGFueU9mOiBjb21wYWN0ZWQgfVxuICB9LFxuICBwYXR0ZXJuKGNvbXBhY3RlZCkge1xuICAgIHJldHVybiBjb21wYWN0ZWQubWFwKHIgPT4gJyg/PScgKyByICsgJyknKS5qb2luKCcnKVxuICB9LFxuICBtdWx0aXBsZU9mKGNvbXBhY3RlZCkge1xuICAgIGxldCBpbnRlZ2VycyA9IGNvbXBhY3RlZC5zbGljZSgwKVxuICAgIGxldCBmYWN0b3IgPSAxXG4gICAgd2hpbGUgKGludGVnZXJzLnNvbWUobiA9PiAhTnVtYmVyLmlzSW50ZWdlcihuKSkpIHtcbiAgICAgIGludGVnZXJzID0gaW50ZWdlcnMubWFwKG4gPT4gbiAqIDEwKVxuICAgICAgZmFjdG9yID0gZmFjdG9yICogMTBcbiAgICB9XG4gICAgcmV0dXJuIGNvbXB1dGVMY20oaW50ZWdlcnMpIC8gZmFjdG9yXG4gIH0sXG4gIGVudW0oY29tcGFjdGVkKSB7XG4gICAgY29uc3QgZW51bXMgPSBpbnRlcnNlY3Rpb25XaXRoLmFwcGx5KG51bGwsIGNvbXBhY3RlZC5jb25jYXQoaXNFcXVhbCkpXG4gICAgaWYgKGVudW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHNvcnRCeShlbnVtcylcbiAgICB9XG4gIH1cbn1cblxuZGVmYXVsdFJlc29sdmVycy4kaWQgPSBmaXJzdFxuZGVmYXVsdFJlc29sdmVycy4kcmVmID0gZmlyc3RcbmRlZmF1bHRSZXNvbHZlcnMuJHNjaGVtYSA9IGZpcnN0XG5kZWZhdWx0UmVzb2x2ZXJzLmFkZGl0aW9uYWxJdGVtcyA9IHNjaGVtYVJlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gc2NoZW1hUmVzb2x2ZXJcbmRlZmF1bHRSZXNvbHZlcnMuYW55T2YgPSBkZWZhdWx0UmVzb2x2ZXJzLm9uZU9mXG5kZWZhdWx0UmVzb2x2ZXJzLmNvbnRhaW5zID0gc2NoZW1hUmVzb2x2ZXJcbmRlZmF1bHRSZXNvbHZlcnMuZGVmYXVsdCA9IGZpcnN0XG5kZWZhdWx0UmVzb2x2ZXJzLmRlZmluaXRpb25zID0gZGVmYXVsdFJlc29sdmVycy5kZXBlbmRlbmNpZXNcbmRlZmF1bHRSZXNvbHZlcnMuZGVzY3JpcHRpb24gPSBmaXJzdFxuZGVmYXVsdFJlc29sdmVycy5leGFtcGxlcyA9IGV4YW1wbGVzXG5kZWZhdWx0UmVzb2x2ZXJzLmV4Y2x1c2l2ZU1heGltdW0gPSBtaW5pbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMuZXhjbHVzaXZlTWluaW11bSA9IG1heGltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5pdGVtcyA9IGl0ZW1zUmVzb2x2ZXJcbmRlZmF1bHRSZXNvbHZlcnMubWF4aW11bSA9IG1pbmltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5tYXhJdGVtcyA9IG1pbmltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5tYXhMZW5ndGggPSBtaW5pbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMubWF4UHJvcGVydGllcyA9IG1pbmltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5taW5pbXVtID0gbWF4aW11bVZhbHVlXG5kZWZhdWx0UmVzb2x2ZXJzLm1pbkl0ZW1zID0gbWF4aW11bVZhbHVlXG5kZWZhdWx0UmVzb2x2ZXJzLm1pbkxlbmd0aCA9IG1heGltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5taW5Qcm9wZXJ0aWVzID0gbWF4aW11bVZhbHVlXG5kZWZhdWx0UmVzb2x2ZXJzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzUmVzb2x2ZXJcbmRlZmF1bHRSZXNvbHZlcnMucHJvcGVydHlOYW1lcyA9IHNjaGVtYVJlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLnJlcXVpcmVkID0gcmVxdWlyZWRcbmRlZmF1bHRSZXNvbHZlcnMudGl0bGUgPSBmaXJzdFxuZGVmYXVsdFJlc29sdmVycy51bmlxdWVJdGVtcyA9IHVuaXF1ZUl0ZW1zXG5cbmNvbnN0IGRlZmF1bHRDb21wbGV4UmVzb2x2ZXJzID0ge1xuICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzUmVzb2x2ZXIsXG4gIGl0ZW1zOiBpdGVtc1Jlc29sdmVyXG59XG5cbmZ1bmN0aW9uIG1lcmdlcihyb290U2NoZW1hLCBvcHRpb25zLCB0b3RhbFNjaGVtYXMpIHtcbiAgdG90YWxTY2hlbWFzID0gdG90YWxTY2hlbWFzIHx8IFtdXG4gIG9wdGlvbnMgPSBkZWZhdWx0c0RlZXAob3B0aW9ucywge1xuICAgIGlnbm9yZUFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICByZXNvbHZlcnM6IGRlZmF1bHRSZXNvbHZlcnMsXG4gICAgY29tcGxleFJlc29sdmVyczogZGVmYXVsdENvbXBsZXhSZXNvbHZlcnMsXG4gICAgZGVlcDogdHJ1ZVxuICB9KVxuXG4gIGNvbnN0IGNvbXBsZXhSZXNvbHZlcnMgPSBPYmplY3QuZW50cmllcyhvcHRpb25zLmNvbXBsZXhSZXNvbHZlcnMpXG5cbiAgZnVuY3Rpb24gbWVyZ2VTY2hlbWFzKHNjaGVtYXMsIGJhc2UsIHBhcmVudHMpIHtcbiAgICBzY2hlbWFzID0gY2xvbmVEZWVwKHNjaGVtYXMuZmlsdGVyKG5vdFVuZGVmaW5lZCkpXG4gICAgcGFyZW50cyA9IHBhcmVudHMgfHwgW11cbiAgICBjb25zdCBtZXJnZWQgPSBpc1BsYWluT2JqZWN0KGJhc2UpXG4gICAgICA/IGJhc2VcbiAgICAgIDoge31cblxuICAgIC8vIHJldHVybiB1bmRlZmluZWQsIGFuIGVtcHR5IHNjaGVtYVxuICAgIGlmICghc2NoZW1hcy5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChzY2hlbWFzLnNvbWUoaXNGYWxzZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmIChzY2hlbWFzLmV2ZXJ5KGlzVHJ1ZSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgLy8gdGhlcmUgYXJlIG5vIGZhbHNlIGFuZCB3ZSBkb24ndCBuZWVkIHRoZSB0cnVlIG9uZXMgYXMgdGhleSBhY2NlcHQgZXZlcnl0aGluZ1xuICAgIHNjaGVtYXMgPSBzY2hlbWFzLmZpbHRlcihpc1BsYWluT2JqZWN0KVxuXG4gICAgY29uc3QgYWxsS2V5cyA9IGFsbFVuaXF1ZUtleXMoc2NoZW1hcylcbiAgICBpZiAob3B0aW9ucy5kZWVwICYmIGNvbnRhaW5zKGFsbEtleXMsICdhbGxPZicpKSB7XG4gICAgICByZXR1cm4gbWVyZ2VyKHtcbiAgICAgICAgYWxsT2Y6IHNjaGVtYXNcbiAgICAgIH0sIG9wdGlvbnMsIHRvdGFsU2NoZW1hcylcbiAgICB9XG5cbiAgICBjb25zdCBjb21wbGV4S2V5c0FyciA9IGNvbXBsZXhSZXNvbHZlcnMubWFwKChbbWFpbktleVdvcmQsIHJlc29sdmVyQ29uZl0pID0+XG4gICAgICBhbGxLZXlzLmZpbHRlcihrID0+IHJlc29sdmVyQ29uZi5rZXl3b3Jkcy5pbmNsdWRlcyhrKSkpXG5cbiAgICAvLyByZW1vdmUgYWxsIGNvbXBsZXgga2V5cyBiZWZvcmUgc2ltcGxlIHJlc29sdmVyc1xuICAgIGNvbXBsZXhLZXlzQXJyLmZvckVhY2goa2V5cyA9PiBwdWxsQWxsKGFsbEtleXMsIGtleXMpKVxuXG4gICAgLy8gY2FsbCBhbGwgc2ltcGxlIHJlc29sdmVycyBmb3IgcmVsZXZhbnQga2V5d29yZHNcbiAgICBhbGxLZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBnZXRWYWx1ZXMoc2NoZW1hcywga2V5KVxuICAgICAgY29uc3QgY29tcGFjdGVkID0gdW5pcVdpdGgodmFsdWVzLmZpbHRlcihub3RVbmRlZmluZWQpLCBjb21wYXJlUHJvcChrZXkpKVxuXG4gICAgICAvLyBhcnJheXByb3BzIGxpa2UgYW55T2YgYW5kIG9uZU9mIG11c3QgYmUgbWVyZ2VkIGZpcnN0LCBhcyB0aGV5IGNvbnRhaW5zIHNjaGVtYXNcbiAgICAgIC8vIGFsbE9mIGlzIHRyZWF0ZWQgZGlmZmVyZW50bHkgYWxsdG9nZXRoZXJcbiAgICAgIGlmIChjb21wYWN0ZWQubGVuZ3RoID09PSAxICYmIGNvbnRhaW5zKHNjaGVtYUFycmF5cywga2V5KSkge1xuICAgICAgICBtZXJnZWRba2V5XSA9IGNvbXBhY3RlZFswXS5tYXAoc2NoZW1hID0+IG1lcmdlU2NoZW1hcyhbc2NoZW1hXSwgc2NoZW1hKSlcbiAgICAgICAgLy8gcHJvcCBncm91cHMgbXVzdCBhbHdheXMgYmUgcmVzb2x2ZWRcbiAgICAgIH0gZWxzZSBpZiAoY29tcGFjdGVkLmxlbmd0aCA9PT0gMSAmJiAhY29udGFpbnMoc2NoZW1hR3JvdXBQcm9wcywga2V5KSAmJiAhY29udGFpbnMoc2NoZW1hUHJvcHMsIGtleSkpIHtcbiAgICAgICAgbWVyZ2VkW2tleV0gPSBjb21wYWN0ZWRbMF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVyID0gb3B0aW9ucy5yZXNvbHZlcnNba2V5XSB8fCBvcHRpb25zLnJlc29sdmVycy5kZWZhdWx0UmVzb2x2ZXJcbiAgICAgICAgaWYgKCFyZXNvbHZlcikgdGhyb3cgbmV3IEVycm9yKCdObyByZXNvbHZlciBmb3VuZCBmb3Iga2V5ICcgKyBrZXkgKyAnLiBZb3UgY2FuIHByb3ZpZGUgYSByZXNvbHZlciBmb3IgdGhpcyBrZXl3b3JkIGluIHRoZSBvcHRpb25zLCBvciBwcm92aWRlIGEgZGVmYXVsdCByZXNvbHZlci4nKVxuXG4gICAgICAgIGNvbnN0IG1lcmdlciA9IChzY2hlbWFzLCBleHRyYUtleSA9IFtdKSA9PiBtZXJnZVNjaGVtYXMoc2NoZW1hcywgbnVsbCwgcGFyZW50cy5jb25jYXQoa2V5LCBleHRyYUtleSkpXG4gICAgICAgIG1lcmdlZFtrZXldID0gcmVzb2x2ZXIoY29tcGFjdGVkLCBwYXJlbnRzLmNvbmNhdChrZXkpLCBtZXJnZXIsIG9wdGlvbnMpXG5cbiAgICAgICAgaWYgKG1lcmdlZFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvd0luY29tcGF0aWJsZShjb21wYWN0ZWQsIHBhcmVudHMuY29uY2F0KGtleSkpXG4gICAgICAgIH0gZWxzZSBpZiAobWVyZ2VkW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRlbGV0ZSBtZXJnZWRba2V5XVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBjb21wbGV4UmVzb2x2ZXJzLnJlZHVjZSgoYWxsLCBbcmVzb2x2ZXJLZXl3b3JkLCBjb25maWddLCBpbmRleCkgPT4gKHtcbiAgICAgIC4uLmFsbCxcbiAgICAgIC4uLmNhbGxHcm91cFJlc29sdmVyKGNvbXBsZXhLZXlzQXJyW2luZGV4XSwgcmVzb2x2ZXJLZXl3b3JkLCBzY2hlbWFzLCBtZXJnZVNjaGVtYXMsIG9wdGlvbnMsIHBhcmVudHMpXG4gICAgfSksIG1lcmdlZClcbiAgfVxuXG4gIGNvbnN0IGFsbFNjaGVtYXMgPSBmbGF0dGVuRGVlcChnZXRBbGxPZihyb290U2NoZW1hKSlcbiAgY29uc3QgbWVyZ2VkID0gbWVyZ2VTY2hlbWFzKGFsbFNjaGVtYXMpXG5cbiAgcmV0dXJuIG1lcmdlZFxufVxuXG5tZXJnZXIub3B0aW9ucyA9IHtcbiAgcmVzb2x2ZXJzOiBkZWZhdWx0UmVzb2x2ZXJzXG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2VyXG4iLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJ2xvZGFzaC9pc1N0cmluZyc7XG4vKiogUmV0dXJucyB0aGUgYGRpc2NyaW1pbmF0b3IucHJvcGVydHlOYW1lYCB3aGVuIGRlZmluZWQgaW4gdGhlIGBzY2hlbWFgIGlmIGl0IGlzIGEgc3RyaW5nLiBBIHdhcm5pbmcgaXMgZ2VuZXJhdGVkIHdoZW5cbiAqIGl0IGlzIG5vdCBhIHN0cmluZy4gUmV0dXJucyBgdW5kZWZpbmVkYCB3aGVuIGEgdmFsaWQgZGlzY3JpbWluYXRvciBpcyBub3QgcHJlc2VudC5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmcm9tIHdoaWNoIHRoZSBkaXNjcmltaW5hdG9yIGlzIHBvdGVudGlhbGx5IG9idGFpbmVkXG4gKiBAcmV0dXJucyAtIFRoZSBgZGlzY3JpbWluYXRvci5wcm9wZXJ0eU5hbWVgIGlmIGl0IGV4aXN0cyBpbiB0aGUgc2NoZW1hLCBvdGhlcndpc2UgYHVuZGVmaW5lZGBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYShzY2hlbWEpIHtcbiAgICBsZXQgZGlzY3JpbWluYXRvcjtcbiAgICBjb25zdCBtYXliZVN0cmluZyA9IGdldChzY2hlbWEsICdkaXNjcmltaW5hdG9yLnByb3BlcnR5TmFtZScsIHVuZGVmaW5lZCk7XG4gICAgaWYgKGlzU3RyaW5nKG1heWJlU3RyaW5nKSkge1xuICAgICAgICBkaXNjcmltaW5hdG9yID0gbWF5YmVTdHJpbmc7XG4gICAgfVxuICAgIGVsc2UgaWYgKG1heWJlU3RyaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBFeHBlY3RpbmcgZGlzY3JpbWluYXRvciB0byBiZSBhIHN0cmluZywgZ290IFwiJHt0eXBlb2YgbWF5YmVTdHJpbmd9XCIgaW5zdGVhZGApO1xuICAgIH1cbiAgICByZXR1cm4gZGlzY3JpbWluYXRvcjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEuanMubWFwIiwiLyoqIEdpdmVuIGEgc3BlY2lmaWMgYHZhbHVlYCBhdHRlbXB0cyB0byBndWVzcyB0aGUgdHlwZSBvZiBhIHNjaGVtYSBlbGVtZW50LiBJbiB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIHRvIGltcGxpY2l0bHlcbiAqICBjcmVhdGUgYSBzY2hlbWEsIGl0IGlzIHVzZWZ1bCB0byBrbm93IHdoYXQgdHlwZSB0byB1c2UgYmFzZWQgb24gdGhlIGRhdGEgd2UgYXJlIGRlZmluaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSBmcm9tIHdoaWNoIHRvIGd1ZXNzIHRoZSB0eXBlXG4gKiBAcmV0dXJucyAtIFRoZSBiZXN0IGd1ZXNzIGZvciB0aGUgb2JqZWN0IHR5cGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ3Vlc3NUeXBlKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnYXJyYXknO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gJ3N0cmluZyc7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAnbnVsbCc7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gJ2Jvb2xlYW4nO1xuICAgIH1cbiAgICBpZiAoIWlzTmFOKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJ251bWJlcic7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICB9XG4gICAgLy8gRGVmYXVsdCB0byBzdHJpbmcgaWYgd2UgY2FuJ3QgZmlndXJlIGl0IG91dFxuICAgIHJldHVybiAnc3RyaW5nJztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWd1ZXNzVHlwZS5qcy5tYXAiLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBiYXNlVW5pcSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmlxJyksXG4gICAgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgZnJvbSBhbGwgZ2l2ZW4gYXJyYXlzIHVzaW5nXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnVuaW9uKFsyXSwgWzEsIDJdKTtcbiAqIC8vID0+IFsyLCAxXVxuICovXG52YXIgdW5pb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaW9uO1xuIiwiaW1wb3J0IGd1ZXNzVHlwZSBmcm9tICcuL2d1ZXNzVHlwZSc7XG4vKiogR2V0cyB0aGUgdHlwZSBvZiBhIGdpdmVuIGBzY2hlbWFgLiBJZiB0aGUgdHlwZSBpcyBub3QgZXhwbGljaXRseSBkZWZpbmVkLCB0aGVuIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBpbmZlciBpdCBmcm9tXG4gKiBvdGhlciBlbGVtZW50cyBvZiB0aGUgc2NoZW1hIGFzIGZvbGxvd3M6XG4gKiAtIHNjaGVtYS5jb25zdDogUmV0dXJucyB0aGUgYGd1ZXNzVHlwZSgpYCBvZiB0aGF0IHZhbHVlXG4gKiAtIHNjaGVtYS5lbnVtOiBSZXR1cm5zIGBzdHJpbmdgXG4gKiAtIHNjaGVtYS5wcm9wZXJ0aWVzOiBSZXR1cm5zIGBvYmplY3RgXG4gKiAtIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllczogUmV0dXJucyBgb2JqZWN0YFxuICogLSB0eXBlIGlzIGFuIGFycmF5IHdpdGggYSBsZW5ndGggb2YgMiBhbmQgb25lIHR5cGUgaXMgJ251bGwnOiBSZXR1cm5zIHRoZSBvdGhlciB0eXBlXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRvIGdldCB0aGUgdHlwZVxuICogQHJldHVybnMgLSBUaGUgdHlwZSBvZiB0aGUgc2NoZW1hXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjaGVtYVR5cGUoc2NoZW1hKSB7XG4gICAgbGV0IHsgdHlwZSB9ID0gc2NoZW1hO1xuICAgIGlmICghdHlwZSAmJiBzY2hlbWEuY29uc3QpIHtcbiAgICAgICAgcmV0dXJuIGd1ZXNzVHlwZShzY2hlbWEuY29uc3QpO1xuICAgIH1cbiAgICBpZiAoIXR5cGUgJiYgc2NoZW1hLmVudW0pIHtcbiAgICAgICAgcmV0dXJuICdzdHJpbmcnO1xuICAgIH1cbiAgICBpZiAoIXR5cGUgJiYgKHNjaGVtYS5wcm9wZXJ0aWVzIHx8IHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykpIHtcbiAgICAgICAgcmV0dXJuICdvYmplY3QnO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgICAgICBpZiAodHlwZS5sZW5ndGggPT09IDIgJiYgdHlwZS5pbmNsdWRlcygnbnVsbCcpKSB7XG4gICAgICAgICAgICB0eXBlID0gdHlwZS5maW5kKCh0eXBlKSA9PiB0eXBlICE9PSAnbnVsbCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHlwZSA9IHR5cGVbMF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR5cGU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRTY2hlbWFUeXBlLmpzLm1hcCIsImltcG9ydCB1bmlvbiBmcm9tICdsb2Rhc2gvdW5pb24nO1xuaW1wb3J0IHsgUkVRVUlSRURfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IGdldFNjaGVtYVR5cGUgZnJvbSAnLi9nZXRTY2hlbWFUeXBlJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0Jztcbi8qKiBSZWN1cnNpdmVseSBtZXJnZSBkZWVwbHkgbmVzdGVkIHNjaGVtYXMuIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYG1lcmdlU2NoZW1hc2AgYW5kIGBtZXJnZU9iamVjdHNgIGlzIHRoYXRcbiAqIGBtZXJnZVNjaGVtYXNgIG9ubHkgY29uY2F0cyBhcnJheXMgZm9yIHZhbHVlcyB1bmRlciB0aGUgJ3JlcXVpcmVkJyBrZXl3b3JkLCBhbmQgd2hlbiBpdCBkb2VzLCBpdCBkb2Vzbid0IGluY2x1ZGVcbiAqIGR1cGxpY2F0ZSB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIG9iajEgLSBUaGUgZmlyc3Qgc2NoZW1hIG9iamVjdCB0byBtZXJnZVxuICogQHBhcmFtIG9iajIgLSBUaGUgc2Vjb25kIHNjaGVtYSBvYmplY3QgdG8gbWVyZ2VcbiAqIEByZXR1cm5zIC0gVGhlIG1lcmdlZCBzY2hlbWEgb2JqZWN0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlU2NoZW1hcyhvYmoxLCBvYmoyKSB7XG4gICAgY29uc3QgYWNjID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqMSk7IC8vIFByZXZlbnQgbXV0YXRpb24gb2Ygc291cmNlIG9iamVjdC5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqMikucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBsZWZ0ID0gb2JqMSA/IG9iajFba2V5XSA6IHt9LCByaWdodCA9IG9iajJba2V5XTtcbiAgICAgICAgaWYgKG9iajEgJiYga2V5IGluIG9iajEgJiYgaXNPYmplY3QocmlnaHQpKSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IG1lcmdlU2NoZW1hcyhsZWZ0LCByaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob2JqMSAmJlxuICAgICAgICAgICAgb2JqMiAmJlxuICAgICAgICAgICAgKGdldFNjaGVtYVR5cGUob2JqMSkgPT09ICdvYmplY3QnIHx8IGdldFNjaGVtYVR5cGUob2JqMikgPT09ICdvYmplY3QnKSAmJlxuICAgICAgICAgICAga2V5ID09PSBSRVFVSVJFRF9LRVkgJiZcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkobGVmdCkgJiZcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmlnaHQpKSB7XG4gICAgICAgICAgICAvLyBEb24ndCBpbmNsdWRlIGR1cGxpY2F0ZSB2YWx1ZXMgd2hlbiBtZXJnaW5nICdyZXF1aXJlZCcgZmllbGRzLlxuICAgICAgICAgICAgYWNjW2tleV0gPSB1bmlvbihsZWZ0LCByaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHJpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgYWNjKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlU2NoZW1hcy5qcy5tYXAiLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCB0aW1lcyBmcm9tICdsb2Rhc2gvdGltZXMnO1xuaW1wb3J0IHRyYW5zZm9ybSBmcm9tICdsb2Rhc2gvdHJhbnNmb3JtJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gvbWVyZ2UnO1xuaW1wb3J0IGZsYXR0ZW5EZWVwIGZyb20gJ2xvZGFzaC9mbGF0dGVuRGVlcCc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgbWVyZ2VBbGxPZiBmcm9tICdqc29uLXNjaGVtYS1tZXJnZS1hbGxvZic7XG5pbXBvcnQgeyBBRERJVElPTkFMX1BST1BFUlRJRVNfS0VZLCBBRERJVElPTkFMX1BST1BFUlRZX0ZMQUcsIEFMTF9PRl9LRVksIEFOWV9PRl9LRVksIERFUEVOREVOQ0lFU19LRVksIElGX0tFWSwgT05FX09GX0tFWSwgUkVGX0tFWSwgUFJPUEVSVElFU19LRVksIElURU1TX0tFWSwgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGZpbmRTY2hlbWFEZWZpbml0aW9uLCB7IHNwbGl0S2V5RWxlbWVudEZyb21PYmplY3QgfSBmcm9tICcuLi9maW5kU2NoZW1hRGVmaW5pdGlvbic7XG5pbXBvcnQgZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSBmcm9tICcuLi9nZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hJztcbmltcG9ydCBndWVzc1R5cGUgZnJvbSAnLi4vZ3Vlc3NUeXBlJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuLi9pc09iamVjdCc7XG5pbXBvcnQgbWVyZ2VTY2hlbWFzIGZyb20gJy4uL21lcmdlU2NoZW1hcyc7XG5pbXBvcnQgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbiBmcm9tICcuL2dldEZpcnN0TWF0Y2hpbmdPcHRpb24nO1xuLyoqIFJldHJpZXZlcyBhbiBleHBhbmRlZCBzY2hlbWEgdGhhdCBoYXMgaGFkIGFsbCBvZiBpdHMgY29uZGl0aW9ucywgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCByZWZlcmVuY2VzIGFuZCBkZXBlbmRlbmNpZXNcbiAqIHJlc29sdmVkIGFuZCBtZXJnZWQgaW50byB0aGUgYHNjaGVtYWAgZ2l2ZW4gYSBgdmFsaWRhdG9yYCwgYHJvb3RTY2hlbWFgIGFuZCBgcmF3Rm9ybURhdGFgIHRoYXQgaXMgdXNlZCB0byBkbyB0aGVcbiAqIHBvdGVudGlhbGx5IHJlY3Vyc2l2ZSByZXNvbHV0aW9uLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJldHJpZXZpbmcgYSBzY2hlbWEgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtyb290U2NoZW1hPXt9XSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIFtyYXdGb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBzY2hlbWEgaGF2aW5nIGl0cyBjb25kaXRpb25zLCBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIHJlZmVyZW5jZXMgYW5kIGRlcGVuZGVuY2llcyByZXNvbHZlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSA9IHt9LCByYXdGb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICByZXR1cm4gcmV0cmlldmVTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgcmF3Rm9ybURhdGEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZilbMF07XG59XG4vKiogUmVzb2x2ZXMgYSBjb25kaXRpb25hbCBibG9jayAoaWYvZWxzZS90aGVuKSBieSByZW1vdmluZyB0aGUgY29uZGl0aW9uIGFuZCBtZXJnaW5nIHRoZSBhcHByb3ByaWF0ZSBjb25kaXRpb25hbCBicmFuY2hcbiAqIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHNjaGVtYS4gSWYgYGV4cGFuZEFsbEJyYW5jaGVzYCBpcyB0cnVlLCB0aGVuIHRoZSBgcmV0cmlldmVTY2hlbWFJbnRlcmFsKClgIHJlc3VsdHMgZm9yIGJvdGhcbiAqIGNvbmRpdGlvbnMgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCBpcyB1c2VkIHRvIGRldGVjdCB2YWxpZCBzY2hlbWEgY29uZGl0aW9uc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIGNvbmRpdGlvbiBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmRcbiAqICAgICAgICAgIGRlcGVuZGVuY2llcyBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBBIGxpc3Qgb2Ygc2NoZW1hcyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBjb25kaXRpb25zIHJlc29sdmVkLCBwb3NzaWJseSB3aXRoIGFsbCBicmFuY2hlcyBleHBhbmRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNvbmRpdGlvbih2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBjb25zdCB7IGlmOiBleHByZXNzaW9uLCB0aGVuLCBlbHNlOiBvdGhlcndpc2UsIC4uLnJlc29sdmVkU2NoZW1hTGVzc0NvbmRpdGlvbmFsIH0gPSBzY2hlbWE7XG4gICAgY29uc3QgY29uZGl0aW9uVmFsdWUgPSB2YWxpZGF0b3IuaXNWYWxpZChleHByZXNzaW9uLCBmb3JtRGF0YSB8fCB7fSwgcm9vdFNjaGVtYSk7XG4gICAgbGV0IHJlc29sdmVkU2NoZW1hcyA9IFtyZXNvbHZlZFNjaGVtYUxlc3NDb25kaXRpb25hbF07XG4gICAgbGV0IHNjaGVtYXMgPSBbXTtcbiAgICBpZiAoZXhwYW5kQWxsQnJhbmNoZXMpIHtcbiAgICAgICAgaWYgKHRoZW4gJiYgdHlwZW9mIHRoZW4gIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgc2NoZW1hcyA9IHNjaGVtYXMuY29uY2F0KHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCB0aGVuLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlcndpc2UgJiYgdHlwZW9mIG90aGVyd2lzZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBzY2hlbWFzID0gc2NoZW1hcy5jb25jYXQocmV0cmlldmVTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIG90aGVyd2lzZSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uYWxTY2hlbWEgPSBjb25kaXRpb25WYWx1ZSA/IHRoZW4gOiBvdGhlcndpc2U7XG4gICAgICAgIGlmIChjb25kaXRpb25hbFNjaGVtYSAmJiB0eXBlb2YgY29uZGl0aW9uYWxTY2hlbWEgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgc2NoZW1hcyA9IHNjaGVtYXMuY29uY2F0KHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBjb25kaXRpb25hbFNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2NoZW1hcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzb2x2ZWRTY2hlbWFzID0gc2NoZW1hcy5tYXAoKHMpID0+IG1lcmdlU2NoZW1hcyhyZXNvbHZlZFNjaGVtYUxlc3NDb25kaXRpb25hbCwgcykpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWFzLmZsYXRNYXAoKHMpID0+IHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xufVxuLyoqIEdpdmVuIGEgbGlzdCBvZiBsaXN0cyBvZiBhbGxPZiwgYW55T2Ygb3Igb25lT2YgdmFsdWVzLCBjcmVhdGUgYSBsaXN0IG9mIGxpc3RzIG9mIGFsbCBwZXJtdXRhdGlvbnMgb2YgdGhlIHZhbHVlcy4gVGhlXG4gKiBgbGlzdE9mTGlzdHNgIGlzIGV4cGVjdGVkIHRvIGJlIGFsbCByZXNvbHZlZCB2YWx1ZXMgb2YgdGhlIDFzdC4uLm50aCBzY2hlbWFzIHdpdGhpbiBhbiBgYWxsT2ZgLCBgYW55T2ZgIG9yIGBvbmVPZmAuXG4gKiBGcm9tIHRob3NlIGxpc3RzLCBidWlsZCBhIG1hdHJpeCBmb3IgZWFjaCBgeHh4T2ZgIHdoZXJlIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgc2NoZW1hIGZvciBhIHJvdyBpbiB0aGUgbGlzdCBvZiBsaXN0cy5cbiAqXG4gKiBGb3IgZXhhbXBsZTpcbiAqIC0gSWYgdGhlcmUgYXJlIHRocmVlIHh4eE9mIHJvd3MgKEEsIEIsIEMpIGFuZCB0aGV5IGhhdmUgYmVlbiByZXNvbHZlZCBzdWNoIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgQSwgdHdvIEIgYW5kIHRocmVlXG4gKiAgIEMgc2NoZW1hcyB0aGVuOlxuICogICAtIFRoZSBwZXJtdXRhdGlvbiBmb3IgdGhlIGZpcnN0IHJvdyBpcyBgW1tBXV1gXG4gKiAgIC0gVGhlIHBlcm11dGF0aW9ucyBmb3IgdGhlIHNlY29uZCByb3cgYXJlIGBbW0EsQjFdLCBbQSxCMl1dYFxuICogICAtIFRoZSBwZXJtdXRhdGlvbnMgZm9yIHRoZSB0aGlyZCByb3cgYXJlIGBbW0EsQjEsQzFdLCBbQSxCMSxDMl0sIFtBLEIxLEMzXSwgW0EsQjIsQzFdLCBbQSxCMixDMl0sIFtBLEIyLEMzXV1gXG4gKlxuICogQHBhcmFtIGxpc3RPZkxpc3RzIC0gVGhlIGxpc3Qgb2YgbGlzdHMgb2YgZWxlbWVudHMgdGhhdCByZXByZXNlbnQgdGhlIGFsbE9mLCBhbnlPZiBvciBvbmVPZiByZXNvbHZlZCB2YWx1ZXMgaW4gb3JkZXJcbiAqIEByZXR1cm5zIC0gVGhlIGxpc3Qgb2YgYWxsIHBlcm11dGF0aW9ucyBvZiBzY2hlbWFzIGZvciBhIHNldCBvZiBgeHh4T2Zgc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsUGVybXV0YXRpb25zT2ZYeHhPZihsaXN0T2ZMaXN0cykge1xuICAgIGNvbnN0IGFsbFBlcm11dGF0aW9ucyA9IGxpc3RPZkxpc3RzLnJlZHVjZSgocGVybXV0YXRpb25zLCBsaXN0KSA9PiB7XG4gICAgICAgIC8vIFdoZW4gdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgc2V0IG9mIHNjaGVtYXMgZm9yIGEgcm93LCBkdXBsaWNhdGUgdGhlIHNldCBvZiBwZXJtdXRhdGlvbnMgYW5kIGFkZCBpbiB0aGUgdmFsdWVzXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBsaXN0LmZsYXRNYXAoKGVsZW1lbnQpID0+IHRpbWVzKHBlcm11dGF0aW9ucy5sZW5ndGgsIChpKSA9PiBbLi4ucGVybXV0YXRpb25zW2ldXS5jb25jYXQoZWxlbWVudCkpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UganVzdCBwdXNoIGluIHRoZSBzaW5nbGUgdmFsdWUgaW50byB0aGUgY3VycmVudCBzZXQgb2YgcGVybXV0YXRpb25zXG4gICAgICAgIHBlcm11dGF0aW9ucy5mb3JFYWNoKChwZXJtdXRhdGlvbikgPT4gcGVybXV0YXRpb24ucHVzaChsaXN0WzBdKSk7XG4gICAgICAgIHJldHVybiBwZXJtdXRhdGlvbnM7XG4gICAgfSwgW1tdXSAvLyBTdGFydCB3aXRoIGFuIGVtcHR5IGxpc3RcbiAgICApO1xuICAgIHJldHVybiBhbGxQZXJtdXRhdGlvbnM7XG59XG4vKiogUmVzb2x2ZXMgcmVmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiBhIHNjaGVtYSBhbmQgaXRzICdhbGxPZicgY2hpbGRyZW4uIFBhc3NlcyB0aGUgYGV4cGFuZEFsbEJyYW5jaGVzYCBmbGFnXG4gKiBkb3duIHRvIHRoZSBgcmV0cmlldmVTY2hlbWFJbnRlcm5hbCgpYCwgYHJlc29sdmVSZWZlcmVuY2UoKWAgYW5kIGByZXNvbHZlRGVwZW5kZW5jaWVzKClgIGhlbHBlciBjYWxscy4gSWZcbiAqIGBleHBhbmRBbGxCcmFuY2hlc2AgaXMgdHJ1ZSwgdGhlbiBhbGwgcG9zc2libGUgZGVwZW5kZW5jaWVzIGFuZC9vciBhbGxPZiBicmFuY2hlcyBhcmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGEgc2NoZW1hIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBUaGUgbGlzdCBvZiByZWN1cnNpdmUgcmVmZXJlbmNlcyBhbHJlYWR5IHByb2Nlc3NlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIHNjaGVtYXMgaGF2aW5nIGl0cyByZWZlcmVuY2VzLCBkZXBlbmRlbmNpZXMgYW5kIGFsbE9mIHNjaGVtYXMgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgdXBkYXRlZFNjaGVtYXMgPSByZXNvbHZlUmVmZXJlbmNlKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhKTtcbiAgICBpZiAodXBkYXRlZFNjaGVtYXMubGVuZ3RoID4gMSB8fCB1cGRhdGVkU2NoZW1hc1swXSAhPT0gc2NoZW1hKSB7XG4gICAgICAgIC8vIHJldHVybiB0aGUgdXBkYXRlZFNjaGVtYXMgYXJyYXkgaWYgaXQgaGFzIGVpdGhlciBtdWx0aXBsZSBzY2hlbWFzIHdpdGhpbiBpdFxuICAgICAgICAvLyBPUiB0aGUgZmlyc3Qgc2NoZW1hIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgb3JpZ2luYWwgc2NoZW1hXG4gICAgICAgIHJldHVybiB1cGRhdGVkU2NoZW1hcztcbiAgICB9XG4gICAgaWYgKERFUEVOREVOQ0lFU19LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkU2NoZW1hcyA9IHJlc29sdmVEZXBlbmRlbmNpZXModmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEpO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWFzLmZsYXRNYXAoKHMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgcywgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKEFMTF9PRl9LRVkgaW4gc2NoZW1hICYmIEFycmF5LmlzQXJyYXkoc2NoZW1hLmFsbE9mKSkge1xuICAgICAgICBjb25zdCBhbGxPZlNjaGVtYUVsZW1lbnRzID0gc2NoZW1hLmFsbE9mLm1hcCgoYWxsT2ZTdWJzY2hlbWEpID0+IHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBhbGxPZlN1YnNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICAgICAgY29uc3QgYWxsUGVybXV0YXRpb25zID0gZ2V0QWxsUGVybXV0YXRpb25zT2ZYeHhPZihhbGxPZlNjaGVtYUVsZW1lbnRzKTtcbiAgICAgICAgcmV0dXJuIGFsbFBlcm11dGF0aW9ucy5tYXAoKHBlcm11dGF0aW9uKSA9PiAoeyAuLi5zY2hlbWEsIGFsbE9mOiBwZXJtdXRhdGlvbiB9KSk7XG4gICAgfVxuICAgIC8vIE5vICRyZWYgb3IgZGVwZW5kZW5jaWVzIG9yIGFsbE9mIGF0dHJpYnV0ZSB3YXMgZm91bmQsIHJldHVybmluZyB0aGUgb3JpZ2luYWwgc2NoZW1hLlxuICAgIHJldHVybiBbc2NoZW1hXTtcbn1cbi8qKiBSZXNvbHZlcyBhbGwgcmVmZXJlbmNlcyB3aXRoaW4gYSBzY2hlbWEgYW5kIHRoZW4gcmV0dXJucyB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJuYWwoKWAgaWYgdGhlIHJlc29sdmVkIHNjaGVtYSBpc1xuICogYWN0dWFsbHkgZGlmZmVyZW50IHRoYW4gdGhlIG9yaWdpbmFsLiBQYXNzZXMgdGhlIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZyBkb3duIHRvIHRoZSBgcmV0cmlldmVTY2hlbWFJbnRlcm5hbCgpYFxuICogaGVscGVyIGNhbGwuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGEgcmVmZXJlbmNlIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBUaGUgbGlzdCBvZiByZWN1cnNpdmUgcmVmZXJlbmNlcyBhbHJlYWR5IHByb2Nlc3NlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IHNjaGVtYXMgcmV0cmlldmVkIGFmdGVyIGhhdmluZyBhbGwgcmVmZXJlbmNlcyByZXNvbHZlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJlZmVyZW5jZSh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBjb25zdCB1cGRhdGVkU2NoZW1hID0gcmVzb2x2ZUFsbFJlZmVyZW5jZXMoc2NoZW1hLCByb290U2NoZW1hLCByZWN1cnNlTGlzdCk7XG4gICAgaWYgKHVwZGF0ZWRTY2hlbWEgIT09IHNjaGVtYSkge1xuICAgICAgICAvLyBPbmx5IGNhbGwgdGhpcyBpZiB0aGUgc2NoZW1hIHdhcyBhY3R1YWxseSBjaGFuZ2VkIGJ5IHRoZSBgcmVzb2x2ZUFsbFJlZmVyZW5jZXMoKWAgZnVuY3Rpb25cbiAgICAgICAgcmV0dXJuIHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCB1cGRhdGVkU2NoZW1hLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIHJldHVybiBbc2NoZW1hXTtcbn1cbi8qKiBSZXNvbHZlcyBhbGwgcmVmZXJlbmNlcyB3aXRoaW4gdGhlIHNjaGVtYSBpdHNlbGYgYXMgd2VsbCBhcyBhbnkgb2YgaXRzIHByb3BlcnRpZXMgYW5kIGFycmF5IGl0ZW1zLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXNvbHZpbmcgYWxsIHJlZmVyZW5jZXMgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSByZWN1cnNlTGlzdCAtIExpc3Qgb2YgJHJlZnMgYWxyZWFkeSByZXNvbHZlZCB0byBwcmV2ZW50IHJlY3Vyc2lvblxuICogQHJldHVybnMgLSBnaXZlbiBzY2hlbWEgd2lsbCBhbGwgcmVmZXJlbmNlcyByZXNvbHZlZCBvciB0aGUgb3JpZ2luYWwgc2NoZW1hIGlmIG5vIGludGVybmFsIGAkcmVmc2Agd2VyZSByZXNvbHZlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFsbFJlZmVyZW5jZXMoc2NoZW1hLCByb290U2NoZW1hLCByZWN1cnNlTGlzdCkge1xuICAgIGlmICghaXNPYmplY3Qoc2NoZW1hKSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cbiAgICBsZXQgcmVzb2x2ZWRTY2hlbWEgPSBzY2hlbWE7XG4gICAgLy8gcmVzb2x2ZSB0b3AgbGV2ZWwgcmVmXG4gICAgaWYgKFJFRl9LRVkgaW4gcmVzb2x2ZWRTY2hlbWEpIHtcbiAgICAgICAgY29uc3QgeyAkcmVmLCAuLi5sb2NhbFNjaGVtYSB9ID0gcmVzb2x2ZWRTY2hlbWE7XG4gICAgICAgIC8vIENoZWNrIGZvciBhIHJlY3Vyc2l2ZSByZWZlcmVuY2UgYW5kIHN0b3AgdGhlIGxvb3BcbiAgICAgICAgaWYgKHJlY3Vyc2VMaXN0LmluY2x1ZGVzKCRyZWYpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWE7XG4gICAgICAgIH1cbiAgICAgICAgcmVjdXJzZUxpc3QucHVzaCgkcmVmKTtcbiAgICAgICAgLy8gUmV0cmlldmUgdGhlIHJlZmVyZW5jZWQgc2NoZW1hIGRlZmluaXRpb24uXG4gICAgICAgIGNvbnN0IHJlZlNjaGVtYSA9IGZpbmRTY2hlbWFEZWZpbml0aW9uKCRyZWYsIHJvb3RTY2hlbWEpO1xuICAgICAgICByZXNvbHZlZFNjaGVtYSA9IHsgLi4ucmVmU2NoZW1hLCAuLi5sb2NhbFNjaGVtYSB9O1xuICAgIH1cbiAgICBpZiAoUFJPUEVSVElFU19LRVkgaW4gcmVzb2x2ZWRTY2hlbWEpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5MaXN0cyA9IFtdO1xuICAgICAgICBjb25zdCB1cGRhdGVkUHJvcHMgPSB0cmFuc2Zvcm0ocmVzb2x2ZWRTY2hlbWFbUFJPUEVSVElFU19LRVldLCAocmVzdWx0LCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZExpc3QgPSBbLi4ucmVjdXJzZUxpc3RdO1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSByZXNvbHZlQWxsUmVmZXJlbmNlcyh2YWx1ZSwgcm9vdFNjaGVtYSwgY2hpbGRMaXN0KTtcbiAgICAgICAgICAgIGNoaWxkcmVuTGlzdHMucHVzaChjaGlsZExpc3QpO1xuICAgICAgICB9LCB7fSk7XG4gICAgICAgIG1lcmdlKHJlY3Vyc2VMaXN0LCB1bmlxKGZsYXR0ZW5EZWVwKGNoaWxkcmVuTGlzdHMpKSk7XG4gICAgICAgIHJlc29sdmVkU2NoZW1hID0geyAuLi5yZXNvbHZlZFNjaGVtYSwgW1BST1BFUlRJRVNfS0VZXTogdXBkYXRlZFByb3BzIH07XG4gICAgfVxuICAgIGlmIChJVEVNU19LRVkgaW4gcmVzb2x2ZWRTY2hlbWEgJiZcbiAgICAgICAgIUFycmF5LmlzQXJyYXkocmVzb2x2ZWRTY2hlbWEuaXRlbXMpICYmXG4gICAgICAgIHR5cGVvZiByZXNvbHZlZFNjaGVtYS5pdGVtcyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHJlc29sdmVkU2NoZW1hID0ge1xuICAgICAgICAgICAgLi4ucmVzb2x2ZWRTY2hlbWEsXG4gICAgICAgICAgICBpdGVtczogcmVzb2x2ZUFsbFJlZmVyZW5jZXMocmVzb2x2ZWRTY2hlbWEuaXRlbXMsIHJvb3RTY2hlbWEsIHJlY3Vyc2VMaXN0KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRXF1YWwoc2NoZW1hLCByZXNvbHZlZFNjaGVtYSkgPyBzY2hlbWEgOiByZXNvbHZlZFNjaGVtYTtcbn1cbi8qKiBDcmVhdGVzIG5ldyAncHJvcGVydGllcycgaXRlbXMgZm9yIGVhY2gga2V5IGluIHRoZSBgZm9ybURhdGFgXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gdGhlU2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGV4aXN0aW5nIGFkZGl0aW9uYWwgcHJvcGVydGllcyBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHMgKiBAcGFyYW0gdmFsaWRhdG9yXG4gKiBAcGFyYW0gW2FGb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSB1cGRhdGVkIHNjaGVtYSB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBzdHViYmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHViRXhpc3RpbmdBZGRpdGlvbmFsUHJvcGVydGllcyh2YWxpZGF0b3IsIHRoZVNjaGVtYSwgcm9vdFNjaGVtYSwgYUZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIC8vIENsb25lIHRoZSBzY2hlbWEgc28gdGhhdCB3ZSBkb24ndCBydWluIHRoZSBjb25zdW1lcidzIG9yaWdpbmFsXG4gICAgY29uc3Qgc2NoZW1hID0ge1xuICAgICAgICAuLi50aGVTY2hlbWEsXG4gICAgICAgIHByb3BlcnRpZXM6IHsgLi4udGhlU2NoZW1hLnByb3BlcnRpZXMgfSxcbiAgICB9O1xuICAgIC8vIG1ha2Ugc3VyZSBmb3JtRGF0YSBpcyBhbiBvYmplY3RcbiAgICBjb25zdCBmb3JtRGF0YSA9IGFGb3JtRGF0YSAmJiBpc09iamVjdChhRm9ybURhdGEpID8gYUZvcm1EYXRhIDoge307XG4gICAgT2JqZWN0LmtleXMoZm9ybURhdGEpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoa2V5IGluIHNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAvLyBObyBuZWVkIHRvIHN0dWIsIG91ciBzY2hlbWEgYWxyZWFkeSBoYXMgdGhlIHByb3BlcnR5XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0ge307XG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmIChSRUZfS0VZIGluIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCB7ICRyZWY6IGdldChzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMsIFtSRUZfS0VZXSkgfSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCd0eXBlJyBpbiBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHsgLi4uc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChBTllfT0ZfS0VZIGluIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyB8fCBPTkVfT0ZfS0VZIGluIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgLi4uc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHsgdHlwZTogZ3Vlc3NUeXBlKGdldChmb3JtRGF0YSwgW2tleV0pKSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXMgPSB7IHR5cGU6IGd1ZXNzVHlwZShnZXQoZm9ybURhdGEsIFtrZXldKSkgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgdHlwZSBvZiBvdXIgbmV3IGtleSBzaG91bGQgbWF0Y2ggdGhlIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIHZhbHVlO1xuICAgICAgICBzY2hlbWEucHJvcGVydGllc1trZXldID0gYWRkaXRpb25hbFByb3BlcnRpZXM7XG4gICAgICAgIC8vIFNldCBvdXIgYWRkaXRpb25hbCBwcm9wZXJ0eSBmbGFnIHNvIHdlIGtub3cgaXQgd2FzIGR5bmFtaWNhbGx5IGFkZGVkXG4gICAgICAgIHNldChzY2hlbWEucHJvcGVydGllcywgW2tleSwgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHXSwgdHJ1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNjaGVtYTtcbn1cbi8qKiBJbnRlcm5hbCBoYW5kbGVyIHRoYXQgcmV0cmlldmVzIGFuIGV4cGFuZGVkIHNjaGVtYSB0aGF0IGhhcyBoYWQgYWxsIG9mIGl0cyBjb25kaXRpb25zLCBhZGRpdGlvbmFsIHByb3BlcnRpZXMsXG4gKiByZWZlcmVuY2VzIGFuZCBkZXBlbmRlbmNpZXMgcmVzb2x2ZWQgYW5kIG1lcmdlZCBpbnRvIHRoZSBgc2NoZW1hYCBnaXZlbiBhIGB2YWxpZGF0b3JgLCBgcm9vdFNjaGVtYWAgYW5kIGByYXdGb3JtRGF0YWBcbiAqIHRoYXQgaXMgdXNlZCB0byBkbyB0aGUgcG90ZW50aWFsbHkgcmVjdXJzaXZlIHJlc29sdXRpb24uIElmIGBleHBhbmRBbGxCcmFuY2hlc2AgaXMgdHJ1ZSwgdGhlbiBhbGwgcG9zc2libGUgYnJhbmNoZXNcbiAqIG9mIHRoZSBzY2hlbWEgYW5kIGl0cyByZWZlcmVuY2VzLCBjb25kaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJldHJpZXZpbmcgYSBzY2hlbWEgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBbcmF3Rm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwYW5kQWxsQnJhbmNoZXM9ZmFsc2VdIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmRcbiAqICAgICAgICAgIGRlcGVuZGVuY2llcyBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIFtyZWN1cnNlTGlzdD1bXV0gLSBUaGUgb3B0aW9uYWwsIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgc2NoZW1hKHMpIHJlc3VsdGluZyBmcm9tIGhhdmluZyBpdHMgY29uZGl0aW9ucywgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCByZWZlcmVuY2VzIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIHJlc29sdmVkLiBNdWx0aXBsZSBzY2hlbWFzIG1heSBiZSByZXR1cm5lZCBpZiBgZXhwYW5kQWxsQnJhbmNoZXNgIGlzIHRydWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCByYXdGb3JtRGF0YSwgZXhwYW5kQWxsQnJhbmNoZXMgPSBmYWxzZSwgcmVjdXJzZUxpc3QgPSBbXSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHNjaGVtYSkpIHtcbiAgICAgICAgcmV0dXJuIFt7fV07XG4gICAgfVxuICAgIGNvbnN0IHJlc29sdmVkU2NoZW1hcyA9IHJlc29sdmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgcmF3Rm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWFzLmZsYXRNYXAoKHMpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBsZXQgcmVzb2x2ZWRTY2hlbWEgPSBzO1xuICAgICAgICBpZiAoSUZfS0VZIGluIHJlc29sdmVkU2NoZW1hKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUNvbmRpdGlvbih2YWxpZGF0b3IsIHJlc29sdmVkU2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIHJhd0Zvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFMTF9PRl9LRVkgaW4gcmVzb2x2ZWRTY2hlbWEpIHtcbiAgICAgICAgICAgIC8vIHJlc29sdmUgYWxsT2Ygc2NoZW1hc1xuICAgICAgICAgICAgaWYgKGV4cGFuZEFsbEJyYW5jaGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhbGxPZiwgLi4ucmVzdE9mU2NoZW1hIH0gPSByZXNvbHZlZFNjaGVtYTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmFsbE9mLCByZXN0T2ZTY2hlbWFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB3aXRoQ29udGFpbnNTY2hlbWFzID0gW107XG4gICAgICAgICAgICAgICAgY29uc3Qgd2l0aG91dENvbnRhaW5zU2NoZW1hcyA9IFtdO1xuICAgICAgICAgICAgICAgIChfYSA9IHJlc29sdmVkU2NoZW1hLmFsbE9mKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgocykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHMgPT09ICdvYmplY3QnICYmIHMuY29udGFpbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDb250YWluc1NjaGVtYXMucHVzaChzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXRDb250YWluc1NjaGVtYXMucHVzaChzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh3aXRoQ29udGFpbnNTY2hlbWFzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFNjaGVtYSA9IHsgLi4ucmVzb2x2ZWRTY2hlbWEsIGFsbE9mOiB3aXRob3V0Q29udGFpbnNTY2hlbWFzIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc29sdmVkU2NoZW1hID0gZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZcbiAgICAgICAgICAgICAgICAgICAgPyBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZihyZXNvbHZlZFNjaGVtYSlcbiAgICAgICAgICAgICAgICAgICAgOiBtZXJnZUFsbE9mKHJlc29sdmVkU2NoZW1hLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWVwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHdpdGhDb250YWluc1NjaGVtYXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkU2NoZW1hLmFsbE9mID0gd2l0aENvbnRhaW5zU2NoZW1hcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignY291bGQgbm90IG1lcmdlIHN1YnNjaGVtYXMgaW4gYWxsT2Y6XFxuJywgZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhbGxPZiwgLi4ucmVzb2x2ZWRTY2hlbWFXaXRob3V0QWxsT2YgfSA9IHJlc29sdmVkU2NoZW1hO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlZFNjaGVtYVdpdGhvdXRBbGxPZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoYXNBZGRpdGlvbmFsUHJvcGVydGllcyA9IEFERElUSU9OQUxfUFJPUEVSVElFU19LRVkgaW4gcmVzb2x2ZWRTY2hlbWEgJiYgcmVzb2x2ZWRTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgIT09IGZhbHNlO1xuICAgICAgICBpZiAoaGFzQWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHViRXhpc3RpbmdBZGRpdGlvbmFsUHJvcGVydGllcyh2YWxpZGF0b3IsIHJlc29sdmVkU2NoZW1hLCByb290U2NoZW1hLCByYXdGb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNvbHZlZFNjaGVtYTtcbiAgICB9KTtcbn1cbi8qKiBSZXNvbHZlcyBhbiBgYW55T2ZgIG9yIGBvbmVPZmAgd2l0aGluIGEgc2NoZW1hIChpZiBwcmVzZW50KSB0byB0aGUgbGlzdCBvZiBzY2hlbWFzIHJldHVybmVkIGZyb21cbiAqIGByZXRyaWV2ZVNjaGVtYUludGVybmFsKClgIGZvciB0aGUgYmVzdCBtYXRjaGluZyBvcHRpb24uIElmIGBleHBhbmRBbGxCcmFuY2hlc2AgaXMgdHJ1ZSwgdGhlbiBhIGxpc3Qgb2Ygc2NoZW1hcyBmb3IgQUxMXG4gKiBvcHRpb25zIGFyZSByZXRyaWV2ZWQgYW5kIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJldHJpZXZpbmcgYSBzY2hlbWEgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBleHBhbmRBbGxCcmFuY2hlcyAtIEZsYWcsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGFsbCBwb3NzaWJsZSBicmFuY2hlcyBvZiBjb25kaXRpb25zLCBhbnkvb25lT2YgYW5kIGRlcGVuZGVuY2llc1xuICogICAgICAgICAgYXMgYSBsaXN0IG9mIHNjaGVtYXNcbiAqIEBwYXJhbSBbcmF3Rm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWEsIGRlZmF1bHRzIHRvIGFuIGVtcHR5IG9iamVjdFxuICogQHJldHVybnMgLSBFaXRoZXIgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgYmVzdCBtYXRjaGluZyBvcHRpb24gb3IgYWxsIG9wdGlvbnMgaWYgYGV4cGFuZEFsbEJyYW5jaGVzYCBpcyB0cnVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQW55T3JPbmVPZlNjaGVtYXModmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByYXdGb3JtRGF0YSkge1xuICAgIGxldCBhbnlPck9uZU9mO1xuICAgIGNvbnN0IHsgb25lT2YsIGFueU9mLCAuLi5yZW1haW5pbmcgfSA9IHNjaGVtYTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvbmVPZikpIHtcbiAgICAgICAgYW55T3JPbmVPZiA9IG9uZU9mO1xuICAgIH1cbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFueU9mKSkge1xuICAgICAgICBhbnlPck9uZU9mID0gYW55T2Y7XG4gICAgfVxuICAgIGlmIChhbnlPck9uZU9mKSB7XG4gICAgICAgIC8vIEVuc3VyZSB0aGF0IGR1cmluZyBleHBhbmQgYWxsIGJyYW5jaGVzIHdlIHBhc3MgYW4gb2JqZWN0IHJhdGhlciB0aGFuIHVuZGVmaW5lZCBzbyB0aGF0IGFsbCBvcHRpb25zIGFyZSBpbnRlcnJvZ2F0ZWRcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSByYXdGb3JtRGF0YSA9PT0gdW5kZWZpbmVkICYmIGV4cGFuZEFsbEJyYW5jaGVzID8ge30gOiByYXdGb3JtRGF0YTtcbiAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEoc2NoZW1hKTtcbiAgICAgICAgYW55T3JPbmVPZiA9IGFueU9yT25lT2YubWFwKChzKSA9PiB7XG4gICAgICAgICAgICAvLyBEdWUgdG8gYW55T2Yvb25lT2YgcG9zc2libHkgdXNpbmcgdGhlIHNhbWUgJHJlZiB3ZSBhbHdheXMgcGFzcyBhIGZyZXNoIHJlY3Vyc2UgbGlzdCBhcnJheSBzbyB0aGF0IGVhY2ggb3B0aW9uXG4gICAgICAgICAgICAvLyBjYW4gcmVzb2x2ZSByZWN1cnNpdmUgcmVmZXJlbmNlcyBpbmRlcGVuZGVudGx5XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUFsbFJlZmVyZW5jZXMocywgcm9vdFNjaGVtYSwgW10pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gQ2FsbCB0aGlzIHRvIHRyaWdnZXIgdGhlIHNldCBvZiBpc1ZhbGlkKCkgY2FsbHMgdGhhdCB0aGUgc2NoZW1hIHBhcnNlciB3aWxsIG5lZWRcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIGZvcm1EYXRhLCBhbnlPck9uZU9mLCByb290U2NoZW1hLCBkaXNjcmltaW5hdG9yKTtcbiAgICAgICAgaWYgKGV4cGFuZEFsbEJyYW5jaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gYW55T3JPbmVPZi5tYXAoKGl0ZW0pID0+IG1lcmdlU2NoZW1hcyhyZW1haW5pbmcsIGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgICBzY2hlbWEgPSBtZXJnZVNjaGVtYXMocmVtYWluaW5nLCBhbnlPck9uZU9mW29wdGlvbl0pO1xuICAgIH1cbiAgICByZXR1cm4gW3NjaGVtYV07XG59XG4vKiogUmVzb2x2ZXMgZGVwZW5kZW5jaWVzIHdpdGhpbiBhIHNjaGVtYSBhbmQgaXRzICdhbnlPZi9vbmVPZicgY2hpbGRyZW4uIFBhc3NlcyB0aGUgYGV4cGFuZEFsbEJyYW5jaGVzYCBmbGFnIGRvd24gdG9cbiAqIHRoZSBgcmVzb2x2ZUFueU9yT25lT2ZTY2hlbWEoKWAgYW5kIGBwcm9jZXNzRGVwZW5kZW5jaWVzKClgIGhlbHBlciBjYWxscy5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXNvbHZpbmcgYSBkZXBlbmRlbmN5IGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBUaGUgbGlzdCBvZiByZWN1cnNpdmUgcmVmZXJlbmNlcyBhbHJlYWR5IHByb2Nlc3NlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIHNjaGVtYXMgd2l0aCB0aGVpciBkZXBlbmRlbmNpZXMgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVEZXBlbmRlbmNpZXModmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgLy8gRHJvcCB0aGUgZGVwZW5kZW5jaWVzIGZyb20gdGhlIHNvdXJjZSBzY2hlbWEuXG4gICAgY29uc3QgeyBkZXBlbmRlbmNpZXMsIC4uLnJlbWFpbmluZ1NjaGVtYSB9ID0gc2NoZW1hO1xuICAgIGNvbnN0IHJlc29sdmVkU2NoZW1hcyA9IHJlc29sdmVBbnlPck9uZU9mU2NoZW1hcyh2YWxpZGF0b3IsIHJlbWFpbmluZ1NjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIGZvcm1EYXRhKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWFzLmZsYXRNYXAoKHJlc29sdmVkU2NoZW1hKSA9PiBwcm9jZXNzRGVwZW5kZW5jaWVzKHZhbGlkYXRvciwgZGVwZW5kZW5jaWVzLCByZXNvbHZlZFNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbn1cbi8qKiBQcm9jZXNzZXMgYWxsIHRoZSBgZGVwZW5kZW5jaWVzYCByZWN1cnNpdmVseSBpbnRvIHRoZSBsaXN0IG9mIGByZXNvbHZlZFNjaGVtYWBzIGFzIG5lZWRlZC4gUGFzc2VzIHRoZVxuICogYGV4cGFuZEFsbEJyYW5jaGVzYCBmbGFnIGRvd24gdG8gdGhlIGB3aXRoRGVwZW5kZW50U2NoZW1hKClgIGFuZCB0aGUgcmVjdXJzaXZlIGBwcm9jZXNzRGVwZW5kZW5jaWVzKClgIGhlbHBlciBjYWxscy5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBkZXBlbmRlbmNpZXMgLSBUaGUgc2V0IG9mIGRlcGVuZGVuY2llcyB0aGF0IG5lZWRzIHRvIGJlIHByb2Nlc3NlZFxuICogQHBhcmFtIHJlc29sdmVkU2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcHJvY2Vzc2luZyBkZXBlbmRlbmNpZXMgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBleHBhbmRBbGxCcmFuY2hlcyAtIEZsYWcsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGFsbCBwb3NzaWJsZSBicmFuY2hlcyBvZiBjb25kaXRpb25zLCBhbnkvb25lT2YgYW5kIGRlcGVuZGVuY2llc1xuICogICAgICAgICAgYXMgYSBsaXN0IG9mIHNjaGVtYXNcbiAqIEBwYXJhbSByZWN1cnNlTGlzdCAtIFRoZSBsaXN0IG9mIHJlY3Vyc2l2ZSByZWZlcmVuY2VzIGFscmVhZHkgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIHNjaGVtYSB3aXRoIHRoZSBgZGVwZW5kZW5jaWVzYCByZXNvbHZlZCBpbnRvIGl0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzRGVwZW5kZW5jaWVzKHZhbGlkYXRvciwgZGVwZW5kZW5jaWVzLCByZXNvbHZlZFNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBsZXQgc2NoZW1hcyA9IFtyZXNvbHZlZFNjaGVtYV07XG4gICAgLy8gUHJvY2VzcyBkZXBlbmRlbmNpZXMgdXBkYXRpbmcgdGhlIGxvY2FsIHNjaGVtYSBwcm9wZXJ0aWVzIGFzIGFwcHJvcHJpYXRlLlxuICAgIGZvciAoY29uc3QgZGVwZW5kZW5jeUtleSBpbiBkZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgLy8gU2tpcCB0aGlzIGRlcGVuZGVuY3kgaWYgaXRzIHRyaWdnZXIgcHJvcGVydHkgaXMgbm90IHByZXNlbnQuXG4gICAgICAgIGlmICghZXhwYW5kQWxsQnJhbmNoZXMgJiYgZ2V0KGZvcm1EYXRhLCBbZGVwZW5kZW5jeUtleV0pID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNraXAgdGhpcyBkZXBlbmRlbmN5IGlmIGl0IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgc2NoZW1hIChzdWNoIGFzIHdoZW4gZGVwZW5kZW5jeUtleSBpcyBpdHNlbGYgYSBoaWRkZW4gZGVwZW5kZW5jeS4pXG4gICAgICAgIGlmIChyZXNvbHZlZFNjaGVtYS5wcm9wZXJ0aWVzICYmICEoZGVwZW5kZW5jeUtleSBpbiByZXNvbHZlZFNjaGVtYS5wcm9wZXJ0aWVzKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW3JlbWFpbmluZ0RlcGVuZGVuY2llcywgZGVwZW5kZW5jeVZhbHVlXSA9IHNwbGl0S2V5RWxlbWVudEZyb21PYmplY3QoZGVwZW5kZW5jeUtleSwgZGVwZW5kZW5jaWVzKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jeVZhbHVlKSkge1xuICAgICAgICAgICAgc2NoZW1hc1swXSA9IHdpdGhEZXBlbmRlbnRQcm9wZXJ0aWVzKHJlc29sdmVkU2NoZW1hLCBkZXBlbmRlbmN5VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KGRlcGVuZGVuY3lWYWx1ZSkpIHtcbiAgICAgICAgICAgIHNjaGVtYXMgPSB3aXRoRGVwZW5kZW50U2NoZW1hKHZhbGlkYXRvciwgcmVzb2x2ZWRTY2hlbWEsIHJvb3RTY2hlbWEsIGRlcGVuZGVuY3lLZXksIGRlcGVuZGVuY3lWYWx1ZSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2hlbWFzLmZsYXRNYXAoKHNjaGVtYSkgPT4gcHJvY2Vzc0RlcGVuZGVuY2llcyh2YWxpZGF0b3IsIHJlbWFpbmluZ0RlcGVuZGVuY2llcywgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgIH1cbiAgICByZXR1cm4gc2NoZW1hcztcbn1cbi8qKiBVcGRhdGVzIGEgc2NoZW1hIHdpdGggYWRkaXRpb25hbGx5IHJlcXVpcmVkIHByb3BlcnRpZXMgYWRkZWRcbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGEgZGVwZW5kZW50IHByb3BlcnRpZXMgaXMgZGVzaXJlZFxuICogQHBhcmFtIFthZGRpdGlvbmFsbHlSZXF1aXJlZF0gLSBBbiBvcHRpb25hbCBhcnJheSBvZiBhZGRpdGlvbmFsbHkgcmVxdWlyZWQgbmFtZXNcbiAqIEByZXR1cm5zIC0gVGhlIHNjaGVtYSB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlcXVpcmVkIHZhbHVlcyBtZXJnZWQgaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhEZXBlbmRlbnRQcm9wZXJ0aWVzKHNjaGVtYSwgYWRkaXRpb25hbGx5UmVxdWlyZWQpIHtcbiAgICBpZiAoIWFkZGl0aW9uYWxseVJlcXVpcmVkKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuICAgIGNvbnN0IHJlcXVpcmVkID0gQXJyYXkuaXNBcnJheShzY2hlbWEucmVxdWlyZWQpXG4gICAgICAgID8gQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5zY2hlbWEucmVxdWlyZWQsIC4uLmFkZGl0aW9uYWxseVJlcXVpcmVkXSkpXG4gICAgICAgIDogYWRkaXRpb25hbGx5UmVxdWlyZWQ7XG4gICAgcmV0dXJuIHsgLi4uc2NoZW1hLCByZXF1aXJlZDogcmVxdWlyZWQgfTtcbn1cbi8qKiBNZXJnZXMgYSBkZXBlbmRlbnQgc2NoZW1hIGludG8gdGhlIGBzY2hlbWFgIGRlYWxpbmcgd2l0aCBvbmVPZnMgYW5kIHJlZmVyZW5jZXMuIFBhc3NlcyB0aGUgYGV4cGFuZEFsbEJyYW5jaGVzYCBmbGFnXG4gKiBkb3duIHRvIHRoZSBgcmV0cmlldmVTY2hlbWFJbnRlcm5hbCgpYCwgYHJlc29sdmVSZWZlcmVuY2UoKWAgYW5kIGB3aXRoRXhhY3RseU9uZVN1YnNjaGVtYSgpYCBoZWxwZXIgY2FsbHMuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGEgZGVwZW5kZW50IHNjaGVtYSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGRlcGVuZGVuY3lLZXkgLSBUaGUga2V5IG5hbWUgb2YgdGhlIGRlcGVuZGVuY3lcbiAqIEBwYXJhbSBkZXBlbmRlbmN5VmFsdWUgLSBUaGUgcG90ZW50aWFsbHkgZGVwZW5kZW50IHNjaGVtYVxuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdLSBUaGUgY3VycmVudCBmb3JtRGF0YSB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIHNjaGVtYXMgd2l0aCB0aGUgZGVwZW5kZW50IHNjaGVtYSByZXNvbHZlZCBpbnRvIHRoZW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhEZXBlbmRlbnRTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGRlcGVuZGVuY3lLZXksIGRlcGVuZGVuY3lWYWx1ZSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBjb25zdCBkZXBlbmRlbnRTY2hlbWFzID0gcmV0cmlldmVTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIGRlcGVuZGVuY3lWYWx1ZSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIHJldHVybiBkZXBlbmRlbnRTY2hlbWFzLmZsYXRNYXAoKGRlcGVuZGVudCkgPT4ge1xuICAgICAgICBjb25zdCB7IG9uZU9mLCAuLi5kZXBlbmRlbnRTY2hlbWEgfSA9IGRlcGVuZGVudDtcbiAgICAgICAgc2NoZW1hID0gbWVyZ2VTY2hlbWFzKHNjaGVtYSwgZGVwZW5kZW50U2NoZW1hKTtcbiAgICAgICAgLy8gU2luY2UgaXQgZG9lcyBub3QgY29udGFpbiBvbmVPZiwgd2UgcmV0dXJuIHRoZSBvcmlnaW5hbCBzY2hlbWEuXG4gICAgICAgIGlmIChvbmVPZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlc29sdmUgJHJlZnMgaW5zaWRlIG9uZU9mLlxuICAgICAgICBjb25zdCByZXNvbHZlZE9uZU9mcyA9IG9uZU9mLm1hcCgoc3Vic2NoZW1hKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN1YnNjaGVtYSA9PT0gJ2Jvb2xlYW4nIHx8ICEoUkVGX0tFWSBpbiBzdWJzY2hlbWEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtzdWJzY2hlbWFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVSZWZlcmVuY2UodmFsaWRhdG9yLCBzdWJzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWxsUGVybXV0YXRpb25zID0gZ2V0QWxsUGVybXV0YXRpb25zT2ZYeHhPZihyZXNvbHZlZE9uZU9mcyk7XG4gICAgICAgIHJldHVybiBhbGxQZXJtdXRhdGlvbnMuZmxhdE1hcCgocmVzb2x2ZWRPbmVPZikgPT4gd2l0aEV4YWN0bHlPbmVTdWJzY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGRlcGVuZGVuY3lLZXksIHJlc29sdmVkT25lT2YsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgfSk7XG59XG4vKiogUmV0dXJucyBhIGxpc3Qgb2YgYHNjaGVtYWBzIHdpdGggdGhlIGJlc3QgY2hvaWNlIGZyb20gdGhlIGBvbmVPZmAgb3B0aW9ucyBtZXJnZWQgaW50byBpdC4gSWYgYGV4cGFuZEFsbEJyYW5jaGVzYCBpc1xuICogdHJ1ZSwgdGhlbiBhIGxpc3Qgb2Ygc2NoZW1hcyBmb3IgQUxMIG9wdGlvbnMgYXJlIHJldHJpZXZlZCBhbmQgcmV0dXJuZWQuIFBhc3NlcyB0aGUgYGV4cGFuZEFsbEJyYW5jaGVzYCBmbGFnIGRvd24gdG9cbiAqIHRoZSBgcmV0cmlldmVTY2hlbWFJbnRlcm5hbCgpYCBoZWxwZXIgY2FsbC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgdG8gdmFsaWRhdGUgb25lT2Ygb3B0aW9uc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIG9uZU9mIHN1YnNjaGVtYSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGRlcGVuZGVuY3lLZXkgLSBUaGUga2V5IG5hbWUgb2YgdGhlIG9uZU9mIGRlcGVuZGVuY3lcbiAqIEBwYXJhbSBvbmVPZiAtIFRoZSBsaXN0IG9mIHNjaGVtYXMgcmVwcmVzZW50aW5nIHRoZSBvbmVPZiBvcHRpb25zXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBUaGUgbGlzdCBvZiByZWN1cnNpdmUgcmVmZXJlbmNlcyBhbHJlYWR5IHByb2Nlc3NlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIEVpdGhlciBhbiBhcnJheSBjb250YWluaW5nIHRoZSBiZXN0IG1hdGNoaW5nIG9wdGlvbiBvciBhbGwgb3B0aW9ucyBpZiBgZXhwYW5kQWxsQnJhbmNoZXNgIGlzIHRydWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhFeGFjdGx5T25lU3Vic2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBkZXBlbmRlbmN5S2V5LCBvbmVPZiwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBjb25zdCB2YWxpZFN1YnNjaGVtYXMgPSBvbmVPZi5maWx0ZXIoKHN1YnNjaGVtYSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHN1YnNjaGVtYSA9PT0gJ2Jvb2xlYW4nIHx8ICFzdWJzY2hlbWEgfHwgIXN1YnNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBbZGVwZW5kZW5jeUtleV06IGNvbmRpdGlvblByb3BlcnR5U2NoZW1hIH0gPSBzdWJzY2hlbWEucHJvcGVydGllcztcbiAgICAgICAgaWYgKGNvbmRpdGlvblByb3BlcnR5U2NoZW1hKSB7XG4gICAgICAgICAgICBjb25zdCBjb25kaXRpb25TY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICBbZGVwZW5kZW5jeUtleV06IGNvbmRpdGlvblByb3BlcnR5U2NoZW1hLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRvci5pc1ZhbGlkKGNvbmRpdGlvblNjaGVtYSwgZm9ybURhdGEsIHJvb3RTY2hlbWEpIHx8IGV4cGFuZEFsbEJyYW5jaGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICBpZiAoIWV4cGFuZEFsbEJyYW5jaGVzICYmIHZhbGlkU3Vic2NoZW1hcy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiaWdub3Jpbmcgb25lT2YgaW4gZGVwZW5kZW5jaWVzIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZXhhY3RseSBvbmUgc3Vic2NoZW1hIHRoYXQgaXMgdmFsaWRcIik7XG4gICAgICAgIHJldHVybiBbc2NoZW1hXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkU3Vic2NoZW1hcy5mbGF0TWFwKChzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnNjaGVtYSA9IHM7XG4gICAgICAgIGNvbnN0IFtkZXBlbmRlbnRTdWJzY2hlbWFdID0gc3BsaXRLZXlFbGVtZW50RnJvbU9iamVjdChkZXBlbmRlbmN5S2V5LCBzdWJzY2hlbWEucHJvcGVydGllcyk7XG4gICAgICAgIGNvbnN0IGRlcGVuZGVudFNjaGVtYSA9IHsgLi4uc3Vic2NoZW1hLCBwcm9wZXJ0aWVzOiBkZXBlbmRlbnRTdWJzY2hlbWEgfTtcbiAgICAgICAgY29uc3Qgc2NoZW1hcyA9IHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBkZXBlbmRlbnRTY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgcmV0dXJuIHNjaGVtYXMubWFwKChzKSA9PiBtZXJnZVNjaGVtYXMoc2NoZW1hLCBzKSk7XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXRyaWV2ZVNjaGVtYS5qcy5tYXAiLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGhhcyBmcm9tICdsb2Rhc2gvaGFzJztcbmltcG9ydCBpc051bWJlciBmcm9tICdsb2Rhc2gvaXNOdW1iZXInO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCByZWR1Y2UgZnJvbSAnbG9kYXNoL3JlZHVjZSc7XG5pbXBvcnQgdGltZXMgZnJvbSAnbG9kYXNoL3RpbWVzJztcbmltcG9ydCBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uIGZyb20gJy4vZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbic7XG5pbXBvcnQgcmV0cmlldmVTY2hlbWEsIHsgcmVzb2x2ZUFsbFJlZmVyZW5jZXMgfSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbmltcG9ydCB7IE9ORV9PRl9LRVksIFJFRl9LRVksIEpVTktfT1BUSU9OX0lELCBBTllfT0ZfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBndWVzc1R5cGUgZnJvbSAnLi4vZ3Vlc3NUeXBlJztcbmltcG9ydCBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hIGZyb20gJy4uL2dldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEnO1xuaW1wb3J0IGdldE9wdGlvbk1hdGNoaW5nU2ltcGxlRGlzY3JpbWluYXRvciBmcm9tICcuLi9nZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3InO1xuLyoqIEEganVuayBvcHRpb24gdXNlZCB0byBkZXRlcm1pbmUgd2hlbiB0aGUgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbiBjYWxsIHJlYWxseSBtYXRjaGVzIGFuIG9wdGlvbiByYXRoZXIgdGhhbiByZXR1cm5pbmdcbiAqIHRoZSBmaXJzdCBpdGVtXG4gKi9cbmV4cG9ydCBjb25zdCBKVU5LX09QVElPTiA9IHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAkaWQ6IEpVTktfT1BUSU9OX0lELFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgX19ub3RfcmVhbGx5X3RoZXJlX186IHtcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICB9LFxuICAgIH0sXG59O1xuLyoqIFJlY3Vyc2l2ZSBmdW5jdGlvbiB0aGF0IGNhbGN1bGF0ZXMgdGhlIHNjb3JlIG9mIGEgYGZvcm1EYXRhYCBhZ2FpbnN0IHRoZSBnaXZlbiBgc2NoZW1hYC4gVGhlIGNvbXB1dGF0aW9uIGlzIGZhaXJseVxuICogc2ltcGxlLiBJbml0aWFsbHkgdGhlIHRvdGFsIHNjb3JlIGlzIDAuIFdoZW4gYHNjaGVtYS5wcm9wZXJ0aWVzYCBvYmplY3QgZXhpc3RzLCB0aGVuIGFsbCB0aGUgYGtleS92YWx1ZWAgcGFpcnMgd2l0aGluXG4gKiB0aGUgb2JqZWN0IGFyZSBwcm9jZXNzZWQgYXMgZm9sbG93cyBhZnRlciBvYnRhaW5pbmcgdGhlIGZvcm1WYWx1ZSBmcm9tIGBmb3JtRGF0YWAgdXNpbmcgdGhlIGBrZXlgOlxuICogLSBJZiB0aGUgYHZhbHVlYCBjb250YWlucyBhIGAkcmVmYCwgYGNhbGN1bGF0ZUluZGV4U2NvcmUoKWAgaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5IHdpdGggdGhlIGZvcm1WYWx1ZSBhbmQgdGhlIG5ld1xuICogICBzY2hlbWEgdGhhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSByZWYgaW4gdGhlIHNjaGVtYSBiZWluZyByZXNvbHZlZCBhbmQgdGhhdCBzdWItc2NoZW1hJ3MgcmVzdWx0aW5nIHNjb3JlIGlzIGFkZGVkIHRvXG4gKiAgIHRoZSB0b3RhbC5cbiAqIC0gSWYgdGhlIGB2YWx1ZWAgY29udGFpbnMgYSBgb25lT2ZgIGFuZCB0aGVyZSBpcyBhIGZvcm1WYWx1ZSwgdGhlbiBzY29yZSBiYXNlZCBvbiB0aGUgaW5kZXggcmV0dXJuZWQgZnJvbSBjYWxsaW5nXG4gKiAgIGBnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24oKWAgb2YgdGhhdCBvbmVPZi5cbiAqIC0gSWYgdGhlIHR5cGUgb2YgdGhlIGB2YWx1ZWAgaXMgJ29iamVjdCcsIGBjYWxjdWxhdGVJbmRleFNjb3JlKClgIGlzIGNhbGxlZCByZWN1cnNpdmVseSB3aXRoIHRoZSBmb3JtVmFsdWUgYW5kIHRoZVxuICogICBgdmFsdWVgIGl0c2VsZiBhcyB0aGUgc3ViLXNjaGVtYSwgYW5kIHRoZSBzY29yZSBpcyBhZGRlZCB0byB0aGUgdG90YWwuXG4gKiAtIElmIHRoZSB0eXBlIG9mIHRoZSBgdmFsdWVgIG1hdGNoZXMgdGhlIGd1ZXNzZWQtdHlwZSBvZiB0aGUgYGZvcm1WYWx1ZWAsIHRoZSBzY29yZSBpcyBpbmNyZW1lbnRlZCBieSAxLCBVTkxFU1MgdGhlXG4gKiAgIHZhbHVlIGhhcyBhIGBkZWZhdWx0YCBvciBgY29uc3RgLiBJbiB0aG9zZSBjYXNlLCBpZiB0aGUgYGRlZmF1bHRgIG9yIGBjb25zdGAgYW5kIHRoZSBgZm9ybVZhbHVlYCBtYXRjaCwgdGhlIHNjb3JlXG4gKiAgIGlzIGluY3JlbWVudGVkIGJ5IGFub3RoZXIgMSBvdGhlcndpc2UgaXQgaXMgZGVjcmVtZW50ZWQgYnkgMS5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3QgSlNPTiBzY2hlbWEgb2YgdGhlIGVudGlyZSBmb3JtXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIHNjb3JlIGlzIGJlaW5nIGNhbGN1bGF0ZWRcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBzY2hlbWEsIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzY29yZVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBzY29yZSBhIHNjaGVtYSBhZ2FpbnN0IHRoZSBmb3JtRGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlSW5kZXhTY29yZSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIHNjaGVtYSwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgbGV0IHRvdGFsU2NvcmUgPSAwO1xuICAgIGlmIChzY2hlbWEpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHNjaGVtYS5wcm9wZXJ0aWVzKSkge1xuICAgICAgICAgICAgdG90YWxTY29yZSArPSByZWR1Y2Uoc2NoZW1hLnByb3BlcnRpZXMsIChzY29yZSwgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGdldChmb3JtRGF0YSwga2V5KTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjb3JlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaGFzKHZhbHVlLCBSRUZfS0VZKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdTY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHZhbHVlLCByb290U2NoZW1hLCBmb3JtVmFsdWUsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzY29yZSArXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGVJbmRleFNjb3JlKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgbmV3U2NoZW1hLCBmb3JtVmFsdWUgfHwge30sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgoaGFzKHZhbHVlLCBPTkVfT0ZfS0VZKSB8fCBoYXModmFsdWUsIEFOWV9PRl9LRVkpKSAmJiBmb3JtVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gaGFzKHZhbHVlLCBPTkVfT0ZfS0VZKSA/IE9ORV9PRl9LRVkgOiBBTllfT0ZfS0VZO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NvcmUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgZm9ybVZhbHVlLCBnZXQodmFsdWUsIGtleSksIC0xLCBkaXNjcmltaW5hdG9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzdHJ1Y3R1cmUgaXMgbWF0Y2hpbmcgdGhlbiBnaXZlIGl0IGEgbGl0dGxlIGJvb3N0IGluIHNjb3JlXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29yZSArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NvcmUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlSW5kZXhTY29yZSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIHZhbHVlLCBmb3JtVmFsdWUsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlID09PSBndWVzc1R5cGUoZm9ybVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdHlwZXMgbWF0Y2gsIHRoZW4gd2UgYnVtcCB0aGUgc2NvcmUgYnkgb25lXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdTY29yZSA9IHNjb3JlICsgMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmRlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzY2hlbWEgY29udGFpbnMgYSByZWFkb25seSBkZWZhdWx0IHZhbHVlIHNjb3JlIHRoZSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIGRlZmF1bHQgaGlnaGVyIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG5vbi1tYXRjaGluZyB2YWx1ZSBsb3dlclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2NvcmUgKz0gZm9ybVZhbHVlID09PSB2YWx1ZS5kZWZhdWx0ID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLmNvbnN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2NoZW1hIGNvbnRhaW5zIGEgY29uc3QgdmFsdWUgc2NvcmUgdGhlIHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgZGVmYXVsdCBoaWdoZXIgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgbm9uLW1hdGNoaW5nIHZhbHVlIGxvd2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTY29yZSArPSBmb3JtVmFsdWUgPT09IHZhbHVlLmNvbnN0ID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gZXZlbnR1YWxseSwgZGVhbCB3aXRoIGVudW1zL2FycmF5c1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3U2NvcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzY29yZTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKHNjaGVtYS50eXBlKSAmJiBzY2hlbWEudHlwZSA9PT0gZ3Vlc3NUeXBlKGZvcm1EYXRhKSkge1xuICAgICAgICAgICAgdG90YWxTY29yZSArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0b3RhbFNjb3JlO1xufVxuLyoqIERldGVybWluZXMgd2hpY2ggb2YgdGhlIGdpdmVuIGBvcHRpb25zYCBwcm92aWRlZCBtb3N0IGNsb3NlbHkgbWF0Y2hlcyB0aGUgYGZvcm1EYXRhYC4gVXNpbmdcbiAqIGBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKClgIHRvIG1hdGNoIHR3byBzY2hlbWFzIHRoYXQgZGlmZmVyIG9ubHkgYnkgdGhlIHJlYWRPbmx5LCBkZWZhdWx0IG9yIGNvbnN0IHZhbHVlIG9mIGEgZmllbGRcbiAqIGJhc2VkIG9uIHRoZSBgZm9ybURhdGFgIGFuZCByZXR1cm5zIDAgd2hlbiB0aGVyZSBpcyBubyBtYXRjaC4gUmF0aGVyIHRoYW4gcGFzc2luZyBpbiBhbGwgdGhlIGBvcHRpb25zYCBhdCBvbmNlIHRvXG4gKiB0aGlzIHV0aWxpdHksIGluc3RlYWQgYW4gYXJyYXkgb2YgdmFsaWQgb3B0aW9uIGluZGV4ZXMgaXMgY3JlYXRlZCBieSBpdGVyYXRpbmcgb3ZlciB0aGUgbGlzdCBvZiBvcHRpb25zLCBjYWxsXG4gKiBgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbnNgIHdpdGggYSBsaXN0IG9mIG9uZSBqdW5rIG9wdGlvbiBhbmQgb25lIGdvb2Qgb3B0aW9uLCBzZWVpbmcgaWYgdGhlIGdvb2Qgb3B0aW9uIGlzIGNvbnNpZGVyZWRcbiAqIG1hdGNoZWQuXG4gKlxuICogT25jZSB0aGUgbGlzdCBvZiB2YWxpZCBpbmRleGVzIGlzIGNyZWF0ZWQsIGlmIHRoZXJlIGlzIG9ubHkgb25lIHZhbGlkIGluZGV4LCBqdXN0IHJldHVybiBpdC4gT3RoZXJ3aXNlLCBpZiB0aGVyZSBhcmVcbiAqIG5vIHZhbGlkIGluZGV4ZXMsIHRoZW4gZmlsbCB0aGUgdmFsaWQgaW5kZXhlcyBhcnJheSB3aXRoIHRoZSBpbmRleGVzIG9mIGFsbCB0aGUgb3B0aW9ucy4gTmV4dCwgdGhlIGluZGV4IG9mIHRoZVxuICogb3B0aW9uIHdpdGggdGhlIGhpZ2hlc3Qgc2NvcmUgaXMgZGV0ZXJtaW5lZCBieSBpdGVyYXRpbmcgb3ZlciB0aGUgbGlzdCBvZiB2YWxpZCBvcHRpb25zLCBjYWxsaW5nXG4gKiBgY2FsY3VsYXRlSW5kZXhTY29yZSgpYCBvbiBlYWNoLCBjb21wYXJpbmcgaXQgYWdhaW5zdCB0aGUgY3VycmVudCBiZXN0IHNjb3JlLCBhbmQgcmV0dXJuaW5nIHRoZSBpbmRleCBvZiB0aGUgb25lIHRoYXRcbiAqIGV2ZW50dWFsbHkgaGFzIHRoZSBiZXN0IHNjb3JlLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBKU09OIHNjaGVtYSBvZiB0aGUgZW50aXJlIGZvcm1cbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBzY2hlbWFcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBzZWxlY3RlZCBmcm9tXG4gKiBAcGFyYW0gW3NlbGVjdGVkT3B0aW9uPS0xXSAtIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbiwgZGVmYXVsdGVkIHRvIC0xIGlmIG5vdCBzcGVjaWZpZWRcbiAqIEBwYXJhbSBbZGlzY3JpbWluYXRvckZpZWxkXSAtIFRoZSBvcHRpb25hbCBuYW1lIG9mIHRoZSBmaWVsZCB3aXRoaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHVzZWQgdG9cbiAqICAgICAgICAgIGRldGVybWluZSB3aGljaCBvcHRpb24gaXMgc2VsZWN0ZWRcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgaW5kZXggb2YgdGhlIG9wdGlvbiB0aGF0IGlzIHRoZSBjbG9zZXN0IG1hdGNoIHRvIHRoZSBgZm9ybURhdGFgIG9yIHRoZSBgc2VsZWN0ZWRPcHRpb25gIGlmIG5vIG1hdGNoXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBvcHRpb25zLCBzZWxlY3RlZE9wdGlvbiA9IC0xLCBkaXNjcmltaW5hdG9yRmllbGQsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgLy8gRmlyc3QgcmVzb2x2ZSBhbnkgcmVmcyBpbiB0aGUgb3B0aW9uc1xuICAgIGNvbnN0IHJlc29sdmVkT3B0aW9ucyA9IG9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBbGxSZWZlcmVuY2VzKG9wdGlvbiwgcm9vdFNjaGVtYSwgW10pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaCA9IGdldE9wdGlvbk1hdGNoaW5nU2ltcGxlRGlzY3JpbWluYXRvcihmb3JtRGF0YSwgb3B0aW9ucywgZGlzY3JpbWluYXRvckZpZWxkKTtcbiAgICBpZiAoaXNOdW1iZXIoc2ltcGxlRGlzY3JpbWluYXRvck1hdGNoKSkge1xuICAgICAgICByZXR1cm4gc2ltcGxlRGlzY3JpbWluYXRvck1hdGNoO1xuICAgIH1cbiAgICAvLyBSZWR1Y2UgdGhlIGFycmF5IG9mIG9wdGlvbnMgZG93biB0byBhIGxpc3Qgb2YgdGhlIGluZGV4ZXMgdGhhdCBhcmUgY29uc2lkZXJlZCBtYXRjaGluZyBvcHRpb25zXG4gICAgY29uc3QgYWxsVmFsaWRJbmRleGVzID0gcmVzb2x2ZWRPcHRpb25zLnJlZHVjZSgodmFsaWRMaXN0LCBvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHRlc3RPcHRpb25zID0gW0pVTktfT1BUSU9OLCBvcHRpb25dO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGdldEZpcnN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCBmb3JtRGF0YSwgdGVzdE9wdGlvbnMsIHJvb3RTY2hlbWEsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgICAgIC8vIFRoZSBtYXRjaCBpcyB0aGUgcmVhbCBvcHRpb24sIHNvIGFkZCBpdHMgaW5kZXggdG8gbGlzdCBvZiB2YWxpZCBpbmRleGVzXG4gICAgICAgIGlmIChtYXRjaCA9PT0gMSkge1xuICAgICAgICAgICAgdmFsaWRMaXN0LnB1c2goaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZExpc3Q7XG4gICAgfSwgW10pO1xuICAgIC8vIFRoZXJlIGlzIG9ubHkgb25lIHZhbGlkIGluZGV4LCBzbyByZXR1cm4gaXQhXG4gICAgaWYgKGFsbFZhbGlkSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGFsbFZhbGlkSW5kZXhlc1swXTtcbiAgICB9XG4gICAgaWYgKCFhbGxWYWxpZEluZGV4ZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIE5vIGluZGV4ZXMgd2VyZSB2YWxpZCwgc28gd2UnbGwgc2NvcmUgYWxsIHRoZSBvcHRpb25zLCBhZGQgYWxsIHRoZSBpbmRleGVzXG4gICAgICAgIHRpbWVzKHJlc29sdmVkT3B0aW9ucy5sZW5ndGgsIChpKSA9PiBhbGxWYWxpZEluZGV4ZXMucHVzaChpKSk7XG4gICAgfVxuICAgIGNvbnN0IHNjb3JlQ291bnQgPSBuZXcgU2V0KCk7XG4gICAgLy8gU2NvcmUgYWxsIHRoZSBvcHRpb25zIGluIHRoZSBsaXN0IG9mIHZhbGlkIGluZGV4ZXMgYW5kIHJldHVybiB0aGUgaW5kZXggd2l0aCB0aGUgYmVzdCBzY29yZVxuICAgIGNvbnN0IHsgYmVzdEluZGV4IH0gPSBhbGxWYWxpZEluZGV4ZXMucmVkdWNlKChzY29yZURhdGEsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgYmVzdFNjb3JlIH0gPSBzY29yZURhdGE7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHJlc29sdmVkT3B0aW9uc1tpbmRleF07XG4gICAgICAgIGNvbnN0IHNjb3JlID0gY2FsY3VsYXRlSW5kZXhTY29yZSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIG9wdGlvbiwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgc2NvcmVDb3VudC5hZGQoc2NvcmUpO1xuICAgICAgICBpZiAoc2NvcmUgPiBiZXN0U2NvcmUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGJlc3RJbmRleDogaW5kZXgsIGJlc3RTY29yZTogc2NvcmUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NvcmVEYXRhO1xuICAgIH0sIHsgYmVzdEluZGV4OiBzZWxlY3RlZE9wdGlvbiwgYmVzdFNjb3JlOiAwIH0pO1xuICAgIC8vIGlmIGFsbCBzY29yZXMgYXJlIHRoZSBzYW1lIGdvIHdpdGggc2VsZWN0ZWRPcHRpb25cbiAgICBpZiAoc2NvcmVDb3VudC5zaXplID09PSAxICYmIHNlbGVjdGVkT3B0aW9uID49IDApIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkT3B0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gYmVzdEluZGV4O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uLmpzLm1hcCIsImltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0Jztcbi8qKiBEZXRlY3RzIHdoZXRoZXIgdGhlIGdpdmVuIGBzY2hlbWFgIGNvbnRhaW5zIGZpeGVkIGl0ZW1zLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gYHNjaGVtYS5pdGVtc2AgaXMgYSBub24tZW1wdHkgYXJyYXlcbiAqIHRoYXQgb25seSBjb250YWlucyBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGluIHdoaWNoIHRvIGNoZWNrIGZvciBmaXhlZCBpdGVtc1xuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZXJlIGFyZSBmaXhlZCBpdGVtcyBpbiB0aGUgc2NoZW1hLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNGaXhlZEl0ZW1zKHNjaGVtYSkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykgJiYgc2NoZW1hLml0ZW1zLmxlbmd0aCA+IDAgJiYgc2NoZW1hLml0ZW1zLmV2ZXJ5KChpdGVtKSA9PiBpc09iamVjdChpdGVtKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc0ZpeGVkSXRlbXMuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0Jztcbi8qKiBNZXJnZXMgdGhlIGBkZWZhdWx0c2Agb2JqZWN0IG9mIHR5cGUgYFRgIGludG8gdGhlIGBmb3JtRGF0YWAgb2YgdHlwZSBgVGBcbiAqXG4gKiBXaGVuIG1lcmdpbmcgZGVmYXVsdHMgYW5kIGZvcm0gZGF0YSwgd2Ugd2FudCB0byBtZXJnZSBpbiB0aGlzIHNwZWNpZmljIHdheTpcbiAqIC0gb2JqZWN0cyBhcmUgZGVlcGx5IG1lcmdlZFxuICogLSBhcnJheXMgYXJlIG1lcmdlZCBpbiBzdWNoIGEgd2F5IHRoYXQ6XG4gKiAgIC0gd2hlbiB0aGUgYXJyYXkgaXMgc2V0IGluIGZvcm0gZGF0YSwgb25seSBhcnJheSBlbnRyaWVzIHNldCBpbiBmb3JtIGRhdGFcbiAqICAgICBhcmUgZGVlcGx5IG1lcmdlZDsgYWRkaXRpb25hbCBlbnRyaWVzIGZyb20gdGhlIGRlZmF1bHRzIGFyZSBpZ25vcmVkIHVubGVzcyBgbWVyZ2VFeHRyYUFycmF5RGVmYXVsdHNgIGlzIHRydWUsIGluXG4gKiAgICAgd2hpY2ggY2FzZSB0aGUgZXh0cmFzIGFyZSBhcHBlbmRlZCBvbnRvIHRoZSBlbmQgb2YgdGhlIGZvcm0gZGF0YVxuICogICAtIHdoZW4gdGhlIGFycmF5IGlzIG5vdCBzZXQgaW4gZm9ybSBkYXRhLCB0aGUgZGVmYXVsdCBpcyBjb3BpZWQgb3ZlclxuICogLSBzY2FsYXJzIGFyZSBvdmVyd3JpdHRlbi9zZXQgYnkgZm9ybSBkYXRhIHVubGVzcyB1bmRlZmluZWQgYW5kIHRoZXJlIGlzIGEgZGVmYXVsdCBBTkQgYGRlZmF1bHRTdXBlcmNlZGVzVW5kZWZpbmVkYFxuICogICBpcyB0cnVlXG4gKlxuICogQHBhcmFtIFtkZWZhdWx0c10gLSBUaGUgZGVmYXVsdHMgdG8gbWVyZ2VcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGZvcm0gZGF0YSBpbnRvIHdoaWNoIHRoZSBkZWZhdWx0cyB3aWxsIGJlIG1lcmdlZFxuICogQHBhcmFtIFttZXJnZUV4dHJhQXJyYXlEZWZhdWx0cz1mYWxzZV0gLSBJZiB0cnVlLCBhbnkgYWRkaXRpb25hbCBkZWZhdWx0IGFycmF5IGVudHJpZXMgYXJlIGFwcGVuZGVkIG9udG8gdGhlIGZvcm1EYXRhXG4gKiBAcGFyYW0gW2RlZmF1bHRTdXBlcmNlZGVzVW5kZWZpbmVkPWZhbHNlXSAtIElmIHRydWUsIGFuIGV4cGxpY2l0IHVuZGVmaW5lZCB2YWx1ZSB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBkZWZhdWx0IHZhbHVlXG4gKiBAcmV0dXJucyAtIFRoZSByZXN1bHRpbmcgbWVyZ2VkIGZvcm0gZGF0YSB3aXRoIGRlZmF1bHRzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEoZGVmYXVsdHMsIGZvcm1EYXRhLCBtZXJnZUV4dHJhQXJyYXlEZWZhdWx0cyA9IGZhbHNlLCBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCA9IGZhbHNlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybURhdGEpKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRzQXJyYXkgPSBBcnJheS5pc0FycmF5KGRlZmF1bHRzKSA/IGRlZmF1bHRzIDogW107XG4gICAgICAgIGNvbnN0IG1hcHBlZCA9IGZvcm1EYXRhLm1hcCgodmFsdWUsIGlkeCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRzQXJyYXlbaWR4XSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhKGRlZmF1bHRzQXJyYXlbaWR4XSwgdmFsdWUsIG1lcmdlRXh0cmFBcnJheURlZmF1bHRzLCBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBNZXJnZSBhbnkgZXh0cmEgZGVmYXVsdHMgd2hlbiBtZXJnZUV4dHJhQXJyYXlEZWZhdWx0cyBpcyB0cnVlXG4gICAgICAgIGlmIChtZXJnZUV4dHJhQXJyYXlEZWZhdWx0cyAmJiBtYXBwZWQubGVuZ3RoIDwgZGVmYXVsdHNBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIG1hcHBlZC5wdXNoKC4uLmRlZmF1bHRzQXJyYXkuc2xpY2UobWFwcGVkLmxlbmd0aCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXBwZWQ7XG4gICAgfVxuICAgIGlmIChpc09iamVjdChmb3JtRGF0YSkpIHtcbiAgICAgICAgY29uc3QgYWNjID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdHMpOyAvLyBQcmV2ZW50IG11dGF0aW9uIG9mIHNvdXJjZSBvYmplY3QuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmb3JtRGF0YSkucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgICAgYWNjW2tleV0gPSBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhKGRlZmF1bHRzID8gZ2V0KGRlZmF1bHRzLCBrZXkpIDoge30sIGdldChmb3JtRGF0YSwga2V5KSwgbWVyZ2VFeHRyYUFycmF5RGVmYXVsdHMsIGRlZmF1bHRTdXBlcmNlZGVzVW5kZWZpbmVkKTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIGFjYyk7XG4gICAgfVxuICAgIGlmIChkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCAmJiBmb3JtRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0cztcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1EYXRhO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YS5qcy5tYXAiLCJpbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogUmVjdXJzaXZlbHkgbWVyZ2UgZGVlcGx5IG5lc3RlZCBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSBvYmoxIC0gVGhlIGZpcnN0IG9iamVjdCB0byBtZXJnZVxuICogQHBhcmFtIG9iajIgLSBUaGUgc2Vjb25kIG9iamVjdCB0byBtZXJnZVxuICogQHBhcmFtIFtjb25jYXRBcnJheXM9ZmFsc2VdIC0gT3B0aW9uYWwgZmxhZyB0aGF0LCB3aGVuIHRydWUsIHdpbGwgY2F1c2UgYXJyYXlzIHRvIGJlIGNvbmNhdGVuYXRlZC4gVXNlXG4gKiAgICAgICAgICBcInByZXZlbnREdXBsaWNhdGVzXCIgdG8gbWVyZ2UgYXJyYXlzIGluIGEgbWFubmVyIHRoYXQgcHJldmVudHMgYW55IGR1cGxpY2F0ZSBlbnRyaWVzIGZyb20gYmVpbmcgbWVyZ2VkLlxuICogICAgICAgICAgTk9URTogVXNlcyBzaGFsbG93IGNvbXBhcmlzb24gZm9yIHRoZSBkdXBsaWNhdGUgY2hlY2tpbmcuXG4gKiBAcmV0dXJucyAtIEEgbmV3IG9iamVjdCB0aGF0IGlzIHRoZSBtZXJnZSBvZiB0aGUgdHdvIGdpdmVuIG9iamVjdHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VPYmplY3RzKG9iajEsIG9iajIsIGNvbmNhdEFycmF5cyA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iajIpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdCA9IG9iajEgPyBvYmoxW2tleV0gOiB7fSwgcmlnaHQgPSBvYmoyW2tleV07XG4gICAgICAgIGlmIChvYmoxICYmIGtleSBpbiBvYmoxICYmIGlzT2JqZWN0KHJpZ2h0KSkge1xuICAgICAgICAgICAgYWNjW2tleV0gPSBtZXJnZU9iamVjdHMobGVmdCwgcmlnaHQsIGNvbmNhdEFycmF5cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29uY2F0QXJyYXlzICYmIEFycmF5LmlzQXJyYXkobGVmdCkgJiYgQXJyYXkuaXNBcnJheShyaWdodCkpIHtcbiAgICAgICAgICAgIGxldCB0b01lcmdlID0gcmlnaHQ7XG4gICAgICAgICAgICBpZiAoY29uY2F0QXJyYXlzID09PSAncHJldmVudER1cGxpY2F0ZXMnKSB7XG4gICAgICAgICAgICAgICAgdG9NZXJnZSA9IHJpZ2h0LnJlZHVjZSgocmVzdWx0LCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWxlZnQuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY2Nba2V5XSA9IGxlZnQuY29uY2F0KHRvTWVyZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWNjW2tleV0gPSByaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIE9iamVjdC5hc3NpZ24oe30sIG9iajEpKTsgLy8gUHJldmVudCBtdXRhdGlvbiBvZiBzb3VyY2Ugb2JqZWN0LlxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVyZ2VPYmplY3RzLmpzLm1hcCIsImltcG9ydCB7IENPTlNUX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgZ2l2ZW4gYHNjaGVtYWAgbWF0Y2hlcyBhIHNpbmdsZSBjb25zdGFudCB2YWx1ZS4gVGhpcyBoYXBwZW5zIHdoZW4gZWl0aGVyIHRoZSBzY2hlbWEgaGFzXG4gKiBhbiBgZW51bWAgYXJyYXkgd2l0aCBhIHNpbmdsZSB2YWx1ZSBvciB0aGVyZSBpcyBhIGBjb25zdGAgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3IgYSBmaWVsZFxuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBgc2NoZW1hYCBoYXMgYSBzaW5nbGUgY29uc3RhbnQgdmFsdWUsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0NvbnN0YW50KHNjaGVtYSkge1xuICAgIHJldHVybiAoQXJyYXkuaXNBcnJheShzY2hlbWEuZW51bSkgJiYgc2NoZW1hLmVudW0ubGVuZ3RoID09PSAxKSB8fCBDT05TVF9LRVkgaW4gc2NoZW1hO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNDb25zdGFudC5qcy5tYXAiLCJpbXBvcnQgaXNDb25zdGFudCBmcm9tICcuLi9pc0NvbnN0YW50JztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbi8qKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBgc2NoZW1hYCBjb21iaW5hdGlvbiByZXByZXNlbnRzIGEgc2VsZWN0XG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gdGhlU2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggY2hlY2sgZm9yIGEgc2VsZWN0IGZsYWcgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBzY2hlbWEgY29udGFpbnMgYSBzZWxlY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NlbGVjdCh2YWxpZGF0b3IsIHRoZVNjaGVtYSwgcm9vdFNjaGVtYSA9IHt9LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGNvbnN0IHNjaGVtYSA9IHJldHJpZXZlU2NoZW1hKHZhbGlkYXRvciwgdGhlU2NoZW1hLCByb290U2NoZW1hLCB1bmRlZmluZWQsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICBjb25zdCBhbHRTY2hlbWFzID0gc2NoZW1hLm9uZU9mIHx8IHNjaGVtYS5hbnlPZjtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEuZW51bSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGFsdFNjaGVtYXMpKSB7XG4gICAgICAgIHJldHVybiBhbHRTY2hlbWFzLmV2ZXJ5KChhbHRTY2hlbWFzKSA9PiB0eXBlb2YgYWx0U2NoZW1hcyAhPT0gJ2Jvb2xlYW4nICYmIGlzQ29uc3RhbnQoYWx0U2NoZW1hcykpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc1NlbGVjdC5qcy5tYXAiLCJpbXBvcnQgaXNTZWxlY3QgZnJvbSAnLi9pc1NlbGVjdCc7XG4vKiogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgYHNjaGVtYWAgY29tYmluYXRpb24gcmVwcmVzZW50cyBhIG11bHRpLXNlbGVjdFxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIGNoZWNrIGZvciBhIG11bHRpLXNlbGVjdCBmbGFnIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgc2NoZW1hIGNvbnRhaW5zIGEgbXVsdGktc2VsZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNNdWx0aVNlbGVjdCh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBpZiAoIXNjaGVtYS51bmlxdWVJdGVtcyB8fCAhc2NoZW1hLml0ZW1zIHx8IHR5cGVvZiBzY2hlbWEuaXRlbXMgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBpc1NlbGVjdCh2YWxpZGF0b3IsIHNjaGVtYS5pdGVtcywgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNNdWx0aVNlbGVjdC5qcy5tYXAiLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IHsgQU5ZX09GX0tFWSwgQ09OU1RfS0VZLCBERUZBVUxUX0tFWSwgREVQRU5ERU5DSUVTX0tFWSwgUFJPUEVSVElFU19LRVksIE9ORV9PRl9LRVksIFJFRl9LRVksIEFMTF9PRl9LRVksIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBmaW5kU2NoZW1hRGVmaW5pdGlvbiBmcm9tICcuLi9maW5kU2NoZW1hRGVmaW5pdGlvbic7XG5pbXBvcnQgZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uIGZyb20gJy4vZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uJztcbmltcG9ydCBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hIGZyb20gJy4uL2dldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEnO1xuaW1wb3J0IGdldFNjaGVtYVR5cGUgZnJvbSAnLi4vZ2V0U2NoZW1hVHlwZSc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi4vaXNPYmplY3QnO1xuaW1wb3J0IGlzRml4ZWRJdGVtcyBmcm9tICcuLi9pc0ZpeGVkSXRlbXMnO1xuaW1wb3J0IG1lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEgZnJvbSAnLi4vbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YSc7XG5pbXBvcnQgbWVyZ2VPYmplY3RzIGZyb20gJy4uL21lcmdlT2JqZWN0cyc7XG5pbXBvcnQgbWVyZ2VTY2hlbWFzIGZyb20gJy4uL21lcmdlU2NoZW1hcyc7XG5pbXBvcnQgaXNNdWx0aVNlbGVjdCBmcm9tICcuL2lzTXVsdGlTZWxlY3QnO1xuaW1wb3J0IHJldHJpZXZlU2NoZW1hLCB7IHJlc29sdmVEZXBlbmRlbmNpZXMgfSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbmNvbnN0IFBSSU1JVElWRV9UWVBFUyA9IFsnc3RyaW5nJywgJ251bWJlcicsICdpbnRlZ2VyJywgJ2Jvb2xlYW4nLCAnbnVsbCddO1xuLyoqIEVudW0gdGhhdCBpbmRpY2F0ZXMgaG93IGBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zYCBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgYGdldElubmVyU2NoZW1hRm9yQXJyYXlJdGVtKClgIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgdmFyIEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nO1xuKGZ1bmN0aW9uIChBZGRpdGlvbmFsSXRlbXNIYW5kbGluZykge1xuICAgIEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW0FkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW1wiSWdub3JlXCJdID0gMF0gPSBcIklnbm9yZVwiO1xuICAgIEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW0FkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW1wiSW52ZXJ0XCJdID0gMV0gPSBcIkludmVydFwiO1xuICAgIEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW0FkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW1wiRmFsbGJhY2tcIl0gPSAyXSA9IFwiRmFsbGJhY2tcIjtcbn0pKEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nIHx8IChBZGRpdGlvbmFsSXRlbXNIYW5kbGluZyA9IHt9KSk7XG4vKiogR2l2ZW4gYSBgc2NoZW1hYCB3aWxsIHJldHVybiBhbiBpbm5lciBzY2hlbWEgdGhhdCBmb3IgYW4gYXJyYXkgaXRlbS4gVGhpcyBpcyBjb21wdXRlZCBkaWZmZXJlbnRseSBiYXNlZCBvbiB0aGVcbiAqIGBhZGRpdGlvbmFsSXRlbXNgIGVudW0gYW5kIHRoZSB2YWx1ZSBvZiBgaWR4YC4gVGhlcmUgYXJlIGZvdXIgcG9zc2libGUgcmV0dXJuczpcbiAqIDEuIElmIGBpZHhgIGlzID49IDAsIHRoZW4gaWYgYHNjaGVtYS5pdGVtc2AgaXMgYW4gYXJyYXkgdGhlIGBpZHhgdGggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgcmV0dXJuZWQgaWYgaXQgaXMgYSB2YWxpZFxuICogICAgaW5kZXggYW5kIG5vdCBhIGJvb2xlYW4sIG90aGVyd2lzZSBpdCBmYWxscyB0aHJvdWdoIHRvIDMuXG4gKiAyLiBJZiBgc2NoZW1hLml0ZW1zYCBpcyBub3QgYW4gYXJyYXkgQU5EIHRydXRoeSBhbmQgbm90IGEgYm9vbGVhbiwgdGhlbiBgc2NoZW1hLml0ZW1zYCBpcyByZXR1cm5lZCBzaW5jZSBpdCBhY3R1YWxseVxuICogICAgaXMgYSBzY2hlbWEsIG90aGVyd2lzZSBpdCBmYWxscyB0aHJvdWdoIHRvIDMuXG4gKiAzLiBJZiBgYWRkaXRpb25hbEl0ZW1zYCBpcyBub3QgYEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nLklnbm9yZWAgYW5kIGBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zYCBpcyBhbiBvYmplY3QsIHRoZW5cbiAqICAgIGBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zYCBpcyByZXR1cm5lZCBzaW5jZSBpdCBhY3R1YWxseSBpcyBhIHNjaGVtYSwgb3RoZXJ3aXNlIGl0IGZhbGxzIHRocm91Z2ggdG8gNC5cbiAqIDQuIHt9IGlzIHJldHVybmVkIHJlcHJlc2VudGluZyBhbiBlbXB0eSBzY2hlbWFcbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmcm9tIHdoaWNoIHRvIGdldCB0aGUgcGFydGljdWxhciBpdGVtXG4gKiBAcGFyYW0gW2FkZGl0aW9uYWxJdGVtcz1BZGRpdGlvbmFsSXRlbXNIYW5kbGluZy5JZ25vcmVdIC0gSG93IGRvIHdlIHdhbnQgdG8gaGFuZGxlIGFkZGl0aW9uYWwgaXRlbXM/XG4gKiBAcGFyYW0gW2lkeD0tMV0gLSBJbmRleCwgaWYgbm9uLW5lZ2F0aXZlLCB3aWxsIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSBpZHgtdGggZWxlbWVudCBpbiBhIGBzY2hlbWEuaXRlbXNgIGFycmF5XG4gKiBAcmV0dXJucyAtIFRoZSBiZXN0IGZpdCBzY2hlbWEgb2JqZWN0IGZyb20gdGhlIGBzY2hlbWFgIGdpdmVuIHRoZSBgYWRkaXRpb25hbEl0ZW1zYCBhbmQgYGlkeGAgbW9kaWZpZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbm5lclNjaGVtYUZvckFycmF5SXRlbShzY2hlbWEsIGFkZGl0aW9uYWxJdGVtcyA9IEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nLklnbm9yZSwgaWR4ID0gLTEpIHtcbiAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSAmJiBpZHggPCBzY2hlbWEuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gc2NoZW1hLml0ZW1zW2lkeF07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHNjaGVtYS5pdGVtcyAmJiAhQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpICYmIHR5cGVvZiBzY2hlbWEuaXRlbXMgIT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gc2NoZW1hLml0ZW1zO1xuICAgIH1cbiAgICBpZiAoYWRkaXRpb25hbEl0ZW1zICE9PSBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZy5JZ25vcmUgJiYgaXNPYmplY3Qoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcykpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYS5hZGRpdGlvbmFsSXRlbXM7XG4gICAgfVxuICAgIHJldHVybiB7fTtcbn1cbi8qKiBFaXRoZXIgYWRkIGBjb21wdXRlZERlZmF1bHRgIGF0IGBrZXlgIGludG8gYG9iamAgb3Igbm90IGFkZCBpdCBiYXNlZCBvbiBpdHMgdmFsdWUsIHRoZSB2YWx1ZSBvZlxuICogYGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgLCB0aGUgdmFsdWUgb2YgYGVtcHR5T2JqZWN0RmllbGRzYCBhbmQgaWYgaXRzIHBhcmVudCBmaWVsZCBpcyByZXF1aXJlZC4gR2VuZXJhbGx5IHVuZGVmaW5lZFxuICogYGNvbXB1dGVkRGVmYXVsdGAgdmFsdWVzIGFyZSBhZGRlZCBvbmx5IHdoZW4gYGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgIGlzIGVpdGhlciB0cnVlL1wiZXhjbHVkZU9iamVjdENoaWxkcmVuXCIuIElmIGBcbiAqIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgIGlzIGZhbHNlIGFuZCBgZW1wdHlPYmplY3RGaWVsZHNgIGlzIG5vdCBcInNraXBEZWZhdWx0c1wiLCB0aGVuIG5vbi11bmRlZmluZWQgYW5kIG5vbi1lbXB0eS1vYmplY3RcbiAqIHZhbHVlcyB3aWxsIGJlIGFkZGVkIGJhc2VkIG9uIGNlcnRhaW4gY29uZGl0aW9ucy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCBpbnRvIHdoaWNoIHRoZSBjb21wdXRlZCBkZWZhdWx0IG1heSBiZSBhZGRlZFxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgaW50byB0aGUgb2JqZWN0IGF0IHdoaWNoIHRoZSBjb21wdXRlZCBkZWZhdWx0IG1heSBiZSBhZGRlZFxuICogQHBhcmFtIGNvbXB1dGVkRGVmYXVsdCAtIFRoZSBjb21wdXRlZCBkZWZhdWx0IHZhbHVlIHRoYXQgbWF5YmUgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBvYmpcbiAqIEBwYXJhbSBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzIC0gT3B0aW9uYWwgZmxhZywgaWYgdHJ1ZSwgY2F1c2UgdW5kZWZpbmVkIHZhbHVlcyB0byBiZSBhZGRlZCBhcyBkZWZhdWx0cy5cbiAqICAgICAgICAgIElmIFwiZXhjbHVkZU9iamVjdENoaWxkcmVuXCIsIGNhdXNlIHVuZGVmaW5lZCB2YWx1ZXMgZm9yIHRoaXMgb2JqZWN0IGFuZCBwYXNzIGBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzYCBhc1xuICogICAgICAgICAgZmFsc2Ugd2hlbiBjb21wdXRpbmcgZGVmYXVsdHMgZm9yIGFueSBuZXN0ZWQgb2JqZWN0IHByb3BlcnRpZXMuIElmIFwiYWxsb3dFbXB0eU9iamVjdFwiLCBwcmV2ZW50cyB1bmRlZmluZWRcbiAqICAgICAgICAgIHZhbHVlcyBpbiB0aGlzIG9iamVjdCB3aGlsZSBhbGxvdyB0aGUgb2JqZWN0IGl0c2VsZiB0byBiZSBlbXB0eSBhbmQgcGFzc2luZyBgaW5jbHVkZVVuZGVmaW5lZFZhbHVlc2AgYXNcbiAqICAgICAgICAgIGZhbHNlIHdoZW4gY29tcHV0aW5nIGRlZmF1bHRzIGZvciBhbnkgbmVzdGVkIG9iamVjdCBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIGlzUGFyZW50UmVxdWlyZWQgLSBUaGUgb3B0aW9uYWwgYm9vbGVhbiB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBwYXJlbnQgZmllbGQgaXMgcmVxdWlyZWRcbiAqIEBwYXJhbSByZXF1aXJlZEZpZWxkcyAtIFRoZSBsaXN0IG9mIGZpZWxkcyB0aGF0IGFyZSByZXF1aXJlZFxuICogQHBhcmFtIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9iamVjdCwgaWYgcHJvdmlkZWQsIGFsbG93cyB1c2VycyB0byBvdmVycmlkZVxuICogICAgICAgIGRlZmF1bHQgZm9ybSBzdGF0ZSBiZWhhdmlvclxuICogQHBhcmFtIGlzQ29uc3QgLSBPcHRpb25hbCBmbGFnLCBpZiB0cnVlLCBpbmRpY2F0ZXMgdGhhdCB0aGUgc2NoZW1hIGhhcyBhIGNvbnN0IHByb3BlcnR5IGRlZmluZWQsIHRodXMgd2Ugc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIGNvbXB1dGVkRGVmYXVsdCBzaW5jZSBpdCdzIGNvbWluZyBmcm9tIHRoZSBjb25zdC5cbiAqL1xuZnVuY3Rpb24gbWF5YmVBZGREZWZhdWx0VG9PYmplY3Qob2JqLCBrZXksIGNvbXB1dGVkRGVmYXVsdCwgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcywgaXNQYXJlbnRSZXF1aXJlZCwgcmVxdWlyZWRGaWVsZHMgPSBbXSwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9IHt9LCBpc0NvbnN0ID0gZmFsc2UpIHtcbiAgICBjb25zdCB7IGVtcHR5T2JqZWN0RmllbGRzID0gJ3BvcHVsYXRlQWxsRGVmYXVsdHMnIH0gPSBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yO1xuICAgIGlmIChpbmNsdWRlVW5kZWZpbmVkVmFsdWVzIHx8IGlzQ29uc3QpIHtcbiAgICAgICAgLy8gSWYgaW5jbHVkZVVuZGVmaW5lZFZhbHVlc1xuICAgICAgICAvLyBPciBpZiB0aGUgc2NoZW1hIGhhcyBhIGNvbnN0IHByb3BlcnR5IGRlZmluZWQsIHRoZW4gd2Ugc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIGNvbXB1dGVkRGVmYXVsdCBzaW5jZSBpdCdzIGNvbWluZyBmcm9tIHRoZSBjb25zdC5cbiAgICAgICAgb2JqW2tleV0gPSBjb21wdXRlZERlZmF1bHQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKGVtcHR5T2JqZWN0RmllbGRzICE9PSAnc2tpcERlZmF1bHRzJykge1xuICAgICAgICBpZiAoaXNPYmplY3QoY29tcHV0ZWREZWZhdWx0KSkge1xuICAgICAgICAgICAgLy8gSWYgaXNQYXJlbnRSZXF1aXJlZCBpcyB1bmRlZmluZWQsIHRoZW4gd2UgYXJlIGF0IHRoZSByb290IGxldmVsIG9mIHRoZSBzY2hlbWEgc28gZGVmZXIgdG8gdGhlIHJlcXVpcmVkbmVzcyBvZlxuICAgICAgICAgICAgLy8gdGhlIGZpZWxkIGtleSBpdHNlbGYgaW4gdGhlIGByZXF1aXJlZEZpZWxkYCBsaXN0XG4gICAgICAgICAgICBjb25zdCBpc1NlbGZPclBhcmVudFJlcXVpcmVkID0gaXNQYXJlbnRSZXF1aXJlZCA9PT0gdW5kZWZpbmVkID8gcmVxdWlyZWRGaWVsZHMuaW5jbHVkZXMoa2V5KSA6IGlzUGFyZW50UmVxdWlyZWQ7XG4gICAgICAgICAgICAvLyBJZiBlbXB0eU9iamVjdEZpZWxkcyAnc2tpcEVtcHR5RGVmYXVsdHMnIHN0b3JlIGNvbXB1dGVkRGVmYXVsdCBpZiBpdCdzIGEgbm9uLWVtcHR5IG9iamVjdChlLmcuIG5vdCB7fSlcbiAgICAgICAgICAgIGlmIChlbXB0eU9iamVjdEZpZWxkcyA9PT0gJ3NraXBFbXB0eURlZmF1bHRzJykge1xuICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eShjb21wdXRlZERlZmF1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ialtrZXldID0gY29tcHV0ZWREZWZhdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEVsc2Ugc3RvcmUgY29tcHV0ZWREZWZhdWx0IGlmIGl0J3MgYSBub24tZW1wdHkgb2JqZWN0KGUuZy4gbm90IHt9KSBhbmQgc2F0aXNmaWVzIGNlcnRhaW4gY29uZGl0aW9uc1xuICAgICAgICAgICAgLy8gQ29uZGl0aW9uIDE6IElmIGNvbXB1dGVkRGVmYXVsdCBpcyBub3QgZW1wdHkgb3IgaWYgdGhlIGtleSBpcyBhIHJlcXVpcmVkIGZpZWxkXG4gICAgICAgICAgICAvLyBDb25kaXRpb24gMjogSWYgdGhlIHBhcmVudCBvYmplY3QgaXMgcmVxdWlyZWQgb3IgZW1wdHlPYmplY3RGaWVsZHMgaXMgbm90ICdwb3B1bGF0ZVJlcXVpcmVkRGVmYXVsdHMnXG4gICAgICAgICAgICBlbHNlIGlmICgoIWlzRW1wdHkoY29tcHV0ZWREZWZhdWx0KSB8fCByZXF1aXJlZEZpZWxkcy5pbmNsdWRlcyhrZXkpKSAmJlxuICAgICAgICAgICAgICAgIChpc1NlbGZPclBhcmVudFJlcXVpcmVkIHx8IGVtcHR5T2JqZWN0RmllbGRzICE9PSAncG9wdWxhdGVSZXF1aXJlZERlZmF1bHRzJykpIHtcbiAgICAgICAgICAgICAgICBvYmpba2V5XSA9IGNvbXB1dGVkRGVmYXVsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgLy8gU3RvcmUgY29tcHV0ZWREZWZhdWx0IGlmIGl0J3MgYSBkZWZpbmVkIHByaW1pdGl2ZSAoZS5nLiwgdHJ1ZSkgYW5kIHNhdGlzZmllcyBjZXJ0YWluIGNvbmRpdGlvbnNcbiAgICAgICAgLy8gQ29uZGl0aW9uIDE6IGNvbXB1dGVkRGVmYXVsdCBpcyBub3QgdW5kZWZpbmVkXG4gICAgICAgIC8vIENvbmRpdGlvbiAyOiBJZiBlbXB0eU9iamVjdEZpZWxkcyBpcyAncG9wdWxhdGVBbGxEZWZhdWx0cycgb3IgJ3NraXBFbXB0eURlZmF1bHRzKSBvciBpZiB0aGUga2V5IGlzIGEgcmVxdWlyZWQgZmllbGRcbiAgICAgICAgY29tcHV0ZWREZWZhdWx0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIChlbXB0eU9iamVjdEZpZWxkcyA9PT0gJ3BvcHVsYXRlQWxsRGVmYXVsdHMnIHx8XG4gICAgICAgICAgICAgICAgZW1wdHlPYmplY3RGaWVsZHMgPT09ICdza2lwRW1wdHlEZWZhdWx0cycgfHxcbiAgICAgICAgICAgICAgICByZXF1aXJlZEZpZWxkcy5pbmNsdWRlcyhrZXkpKSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSBjb21wdXRlZERlZmF1bHQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKiogQ29tcHV0ZXMgdGhlIGRlZmF1bHRzIGZvciB0aGUgY3VycmVudCBgc2NoZW1hYCBnaXZlbiB0aGUgYHJhd0Zvcm1EYXRhYCBhbmQgYHBhcmVudERlZmF1bHRzYCBpZiBhbnkuIFRoaXMgZHJpbGxzIGludG9cbiAqIGVhY2ggbGV2ZWwgb2YgdGhlIHNjaGVtYSwgcmVjdXJzaXZlbHksIHRvIGZpbGwgb3V0IGV2ZXJ5IGxldmVsIG9mIGRlZmF1bHRzIHByb3ZpZGVkIGJ5IHRoZSBzY2hlbWEuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gcmF3U2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRlZmF1bHQgc3RhdGUgaXMgZGVzaXJlZFxuICogQHBhcmFtIHtDb21wdXRlRGVmYXVsdHNQcm9wc30gY29tcHV0ZURlZmF1bHRzUHJvcHMgLSBPcHRpb25hbCBwcm9wcyBmb3IgdGhpcyBmdW5jdGlvblxuICogQHJldHVybnMgLSBUaGUgcmVzdWx0aW5nIGBmb3JtRGF0YWAgd2l0aCBhbGwgdGhlIGRlZmF1bHRzIHByb3ZpZGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCByYXdTY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzID0ge30pIHtcbiAgICBjb25zdCB7IHBhcmVudERlZmF1bHRzLCByYXdGb3JtRGF0YSwgcm9vdFNjaGVtYSA9IHt9LCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID0gZmFsc2UsIF9yZWN1cnNlTGlzdCA9IFtdLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0gdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiA9IHVuZGVmaW5lZCwgcmVxdWlyZWQsIH0gPSBjb21wdXRlRGVmYXVsdHNQcm9wcztcbiAgICBjb25zdCBmb3JtRGF0YSA9IChpc09iamVjdChyYXdGb3JtRGF0YSkgPyByYXdGb3JtRGF0YSA6IHt9KTtcbiAgICBjb25zdCBzY2hlbWEgPSBpc09iamVjdChyYXdTY2hlbWEpID8gcmF3U2NoZW1hIDoge307XG4gICAgLy8gQ29tcHV0ZSB0aGUgZGVmYXVsdHMgcmVjdXJzaXZlbHk6IGdpdmUgaGlnaGVzdCBwcmlvcml0eSB0byBkZWVwZXN0IG5vZGVzLlxuICAgIGxldCBkZWZhdWx0cyA9IHBhcmVudERlZmF1bHRzO1xuICAgIC8vIElmIHdlIGdldCBhIG5ldyBzY2hlbWEsIHRoZW4gd2UgbmVlZCB0byByZWNvbXB1dGUgZGVmYXVsdHMgYWdhaW4gZm9yIHRoZSBuZXcgc2NoZW1hIGZvdW5kLlxuICAgIGxldCBzY2hlbWFUb0NvbXB1dGUgPSBudWxsO1xuICAgIGxldCBleHBlcmltZW50YWxfZGZzYl90b19jb21wdXRlID0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcjtcbiAgICBsZXQgdXBkYXRlZFJlY3Vyc2VMaXN0ID0gX3JlY3Vyc2VMaXN0O1xuICAgIGlmIChzY2hlbWFbQ09OU1RfS0VZXSAmJiAoZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmNvbnN0QXNEZWZhdWx0cykgIT09ICduZXZlcicpIHtcbiAgICAgICAgZGVmYXVsdHMgPSBzY2hlbWEuY29uc3Q7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KGRlZmF1bHRzKSAmJiBpc09iamVjdChzY2hlbWEuZGVmYXVsdCkpIHtcbiAgICAgICAgLy8gRm9yIG9iamVjdCBkZWZhdWx0cywgb25seSBvdmVycmlkZSBwYXJlbnQgZGVmYXVsdHMgdGhhdCBhcmUgZGVmaW5lZCBpblxuICAgICAgICAvLyBzY2hlbWEuZGVmYXVsdC5cbiAgICAgICAgZGVmYXVsdHMgPSBtZXJnZU9iamVjdHMoZGVmYXVsdHMsIHNjaGVtYS5kZWZhdWx0KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoREVGQVVMVF9LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGRlZmF1bHRzID0gc2NoZW1hLmRlZmF1bHQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKFJFRl9LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHJlZk5hbWUgPSBzY2hlbWFbUkVGX0tFWV07XG4gICAgICAgIC8vIFVzZSByZWZlcmVuY2VkIHNjaGVtYSBkZWZhdWx0cyBmb3IgdGhpcyBub2RlLlxuICAgICAgICBpZiAoIV9yZWN1cnNlTGlzdC5pbmNsdWRlcyhyZWZOYW1lKSkge1xuICAgICAgICAgICAgdXBkYXRlZFJlY3Vyc2VMaXN0ID0gX3JlY3Vyc2VMaXN0LmNvbmNhdChyZWZOYW1lKTtcbiAgICAgICAgICAgIHNjaGVtYVRvQ29tcHV0ZSA9IGZpbmRTY2hlbWFEZWZpbml0aW9uKHJlZk5hbWUsIHJvb3RTY2hlbWEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKERFUEVOREVOQ0lFU19LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIC8vIEdldCB0aGUgZGVmYXVsdCBpZiBzZXQgZnJvbSBwcm9wZXJ0aWVzIHRvIGVuc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGNvbmRpdGlvbnMgYXJlIHJlc29sdmVkIGJhc2VkIG9uIGl0XG4gICAgICAgIGNvbnN0IGRlZmF1bHRGb3JtRGF0YSA9IHtcbiAgICAgICAgICAgIC4uLmdldERlZmF1bHRCYXNlZE9uU2NoZW1hVHlwZSh2YWxpZGF0b3IsIHNjaGVtYSwgY29tcHV0ZURlZmF1bHRzUHJvcHMsIGRlZmF1bHRzKSxcbiAgICAgICAgICAgIC4uLmZvcm1EYXRhLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXNvbHZlZFNjaGVtYSA9IHJlc29sdmVEZXBlbmRlbmNpZXModmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGZhbHNlLCBbXSwgZGVmYXVsdEZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIHNjaGVtYVRvQ29tcHV0ZSA9IHJlc29sdmVkU2NoZW1hWzBdOyAvLyBwaWNrIHRoZSBmaXJzdCBlbGVtZW50IGZyb20gcmVzb2x2ZSBkZXBlbmRlbmNpZXNcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNGaXhlZEl0ZW1zKHNjaGVtYSkpIHtcbiAgICAgICAgZGVmYXVsdHMgPSBzY2hlbWEuaXRlbXMubWFwKChpdGVtU2NoZW1hLCBpZHgpID0+IGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIGl0ZW1TY2hlbWEsIHtcbiAgICAgICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgICAgICBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzLFxuICAgICAgICAgICAgX3JlY3Vyc2VMaXN0LFxuICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mLFxuICAgICAgICAgICAgcGFyZW50RGVmYXVsdHM6IEFycmF5LmlzQXJyYXkocGFyZW50RGVmYXVsdHMpID8gcGFyZW50RGVmYXVsdHNbaWR4XSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHJhd0Zvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKE9ORV9PRl9LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHsgb25lT2YsIC4uLnJlbWFpbmluZyB9ID0gc2NoZW1hO1xuICAgICAgICBpZiAob25lT2YubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hKHNjaGVtYSk7XG4gICAgICAgIGNvbnN0IHsgdHlwZSA9ICdudWxsJyB9ID0gcmVtYWluaW5nO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodHlwZSkgJiZcbiAgICAgICAgICAgIFBSSU1JVElWRV9UWVBFUy5pbmNsdWRlcyh0eXBlKSAmJlxuICAgICAgICAgICAgKGV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUgPT09IG51bGwgfHwgZXhwZXJpbWVudGFsX2Rmc2JfdG9fY29tcHV0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZXJpbWVudGFsX2Rmc2JfdG9fY29tcHV0ZS5jb25zdEFzRGVmYXVsdHMpID09PSAnc2tpcE9uZU9mJykge1xuICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGluIGEgb25lT2Ygb2YgYSBwcmltaXRpdmUgdHlwZSwgdGhlbiB3ZSB3YW50IHRvIHBhc3MgY29uc3RBc0RlZmF1bHRzIGFzICduZXZlcicgZm9yIHRoZSByZWN1cnNpb25cbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUgPSB7IC4uLmV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUsIGNvbnN0QXNEZWZhdWx0czogJ25ldmVyJyB9O1xuICAgICAgICB9XG4gICAgICAgIHNjaGVtYVRvQ29tcHV0ZSA9IG9uZU9mW2dldENsb3Nlc3RNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGlzRW1wdHkoZm9ybURhdGEpID8gdW5kZWZpbmVkIDogZm9ybURhdGEsIG9uZU9mLCAwLCBkaXNjcmltaW5hdG9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZildO1xuICAgICAgICBzY2hlbWFUb0NvbXB1dGUgPSBtZXJnZVNjaGVtYXMocmVtYWluaW5nLCBzY2hlbWFUb0NvbXB1dGUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChBTllfT0ZfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCB7IGFueU9mLCAuLi5yZW1haW5pbmcgfSA9IHNjaGVtYTtcbiAgICAgICAgaWYgKGFueU9mLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYShzY2hlbWEpO1xuICAgICAgICBzY2hlbWFUb0NvbXB1dGUgPSBhbnlPZltnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCByb290U2NoZW1hLCBpc0VtcHR5KGZvcm1EYXRhKSA/IHVuZGVmaW5lZCA6IGZvcm1EYXRhLCBhbnlPZiwgMCwgZGlzY3JpbWluYXRvciwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpXTtcbiAgICAgICAgc2NoZW1hVG9Db21wdXRlID0gbWVyZ2VTY2hlbWFzKHJlbWFpbmluZywgc2NoZW1hVG9Db21wdXRlKTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYVRvQ29tcHV0ZSkge1xuICAgICAgICByZXR1cm4gY29tcHV0ZURlZmF1bHRzKHZhbGlkYXRvciwgc2NoZW1hVG9Db21wdXRlLCB7XG4gICAgICAgICAgICByb290U2NoZW1hLFxuICAgICAgICAgICAgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyxcbiAgICAgICAgICAgIF9yZWN1cnNlTGlzdDogdXBkYXRlZFJlY3Vyc2VMaXN0LFxuICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcjogZXhwZXJpbWVudGFsX2Rmc2JfdG9fY29tcHV0ZSxcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mLFxuICAgICAgICAgICAgcGFyZW50RGVmYXVsdHM6IGRlZmF1bHRzLFxuICAgICAgICAgICAgcmF3Rm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBObyBkZWZhdWx0cyBkZWZpbmVkIGZvciB0aGlzIG5vZGUsIGZhbGxiYWNrIHRvIGdlbmVyaWMgdHlwZWQgb25lcy5cbiAgICBpZiAoZGVmYXVsdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkZWZhdWx0cyA9IHNjaGVtYS5kZWZhdWx0O1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUgPSBnZXREZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUodmFsaWRhdG9yLCBzY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzLCBkZWZhdWx0cyk7XG4gICAgcmV0dXJuIGRlZmF1bHRCYXNlZE9uU2NoZW1hVHlwZSAhPT0gbnVsbCAmJiBkZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUgIT09IHZvaWQgMCA/IGRlZmF1bHRCYXNlZE9uU2NoZW1hVHlwZSA6IGRlZmF1bHRzO1xufVxuLyoqIENvbXB1dGVzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHJhd1NjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHN0YXRlIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSB7Q29tcHV0ZURlZmF1bHRzUHJvcHN9IGNvbXB1dGVEZWZhdWx0c1Byb3BzIC0gT3B0aW9uYWwgcHJvcHMgZm9yIHRoaXMgZnVuY3Rpb25cbiAqIEBwYXJhbSBkZWZhdWx0cyAtIE9wdGlvbmFsIHByb3BzIGZvciB0aGlzIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyAtIFRoZSBkZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBzY2hlbWEgdHlwZSBpZiB0aGV5IGFyZSBkZWZpbmVkIGZvciBvYmplY3Qgb3IgYXJyYXkgc2NoZW1hcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdERlZmF1bHRzKHZhbGlkYXRvciwgcmF3U2NoZW1hLCB7IHJhd0Zvcm1EYXRhLCByb290U2NoZW1hID0ge30sIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMgPSBmYWxzZSwgX3JlY3Vyc2VMaXN0ID0gW10sIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSB1bmRlZmluZWQsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mID0gdW5kZWZpbmVkLCByZXF1aXJlZCwgfSA9IHt9LCBkZWZhdWx0cykge1xuICAgIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSAoaXNPYmplY3QocmF3Rm9ybURhdGEpID8gcmF3Rm9ybURhdGEgOiB7fSk7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHJhd1NjaGVtYTtcbiAgICAgICAgLy8gVGhpcyBpcyBhIGN1c3RvbSBhZGRpdGlvbiB0aGF0IGZpeGVzIHRoaXMgaXNzdWU6XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yanNmLXRlYW0vcmVhY3QtanNvbnNjaGVtYS1mb3JtL2lzc3Vlcy8zODMyXG4gICAgICAgIGNvbnN0IHJldHJpZXZlZFNjaGVtYSA9IChleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSBudWxsIHx8IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IuYWxsT2YpID09PSAncG9wdWxhdGVEZWZhdWx0cycgJiYgQUxMX09GX0tFWSBpbiBzY2hlbWFcbiAgICAgICAgICAgID8gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZilcbiAgICAgICAgICAgIDogc2NoZW1hO1xuICAgICAgICBjb25zdCBwYXJlbnRDb25zdCA9IHJldHJpZXZlZFNjaGVtYVtDT05TVF9LRVldO1xuICAgICAgICBjb25zdCBvYmplY3REZWZhdWx0cyA9IE9iamVjdC5rZXlzKHJldHJpZXZlZFNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9KS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVNjaGVtYSA9IGdldChyZXRyaWV2ZWRTY2hlbWEsIFtQUk9QRVJUSUVTX0tFWSwga2V5XSk7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgcGFyZW50IHNjaGVtYSBoYXMgYSBjb25zdCBwcm9wZXJ0eSBkZWZpbmVkIEFORCB3ZSBhcmUgc3VwcG9ydGluZyBjb25zdCBhcyBkZWZhdWx0cywgdGhlbiB3ZVxuICAgICAgICAgICAgLy8gc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIGNvbXB1dGVkRGVmYXVsdCBzaW5jZSBpdCdzIGNvbWluZyBmcm9tIHRoZSBjb25zdC5cbiAgICAgICAgICAgIGNvbnN0IGhhc1BhcmVudENvbnN0ID0gaXNPYmplY3QocGFyZW50Q29uc3QpICYmIHBhcmVudENvbnN0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGhhc0NvbnN0ID0gKChpc09iamVjdChwcm9wZXJ0eVNjaGVtYSkgJiYgQ09OU1RfS0VZIGluIHByb3BlcnR5U2NoZW1hKSB8fCBoYXNQYXJlbnRDb25zdCkgJiZcbiAgICAgICAgICAgICAgICAoZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmNvbnN0QXNEZWZhdWx0cykgIT09ICduZXZlcic7XG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBkZWZhdWx0cyBmb3IgdGhpcyBub2RlLCB3aXRoIHRoZSBwYXJlbnQgZGVmYXVsdHMgd2UgbWlnaHRcbiAgICAgICAgICAgIC8vIGhhdmUgZnJvbSBhIHByZXZpb3VzIHJ1bjogZGVmYXVsdHNba2V5XS5cbiAgICAgICAgICAgIGNvbnN0IGNvbXB1dGVkRGVmYXVsdCA9IGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIHByb3BlcnR5U2NoZW1hLCB7XG4gICAgICAgICAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgICAgICAgICBfcmVjdXJzZUxpc3QsXG4gICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgICAgICAgICBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzOiBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID09PSB0cnVlLFxuICAgICAgICAgICAgICAgIHBhcmVudERlZmF1bHRzOiBnZXQoZGVmYXVsdHMsIFtrZXldKSxcbiAgICAgICAgICAgICAgICByYXdGb3JtRGF0YTogZ2V0KGZvcm1EYXRhLCBba2V5XSksXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IChfYSA9IHJldHJpZXZlZFNjaGVtYS5yZXF1aXJlZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluY2x1ZGVzKGtleSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1heWJlQWRkRGVmYXVsdFRvT2JqZWN0KGFjYywga2V5LCBjb21wdXRlZERlZmF1bHQsIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMsIHJlcXVpcmVkLCByZXRyaWV2ZWRTY2hlbWEucmVxdWlyZWQsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGhhc0NvbnN0KTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KTtcbiAgICAgICAgaWYgKHJldHJpZXZlZFNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykge1xuICAgICAgICAgICAgLy8gYXMgcGVyIHNwZWMgYWRkaXRpb25hbFByb3BlcnRpZXMgbWF5IGJlIGVpdGhlciBzY2hlbWEgb3IgYm9vbGVhblxuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbFByb3BlcnRpZXNTY2hlbWEgPSBpc09iamVjdChyZXRyaWV2ZWRTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpXG4gICAgICAgICAgICAgICAgPyByZXRyaWV2ZWRTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgIGlmIChpc09iamVjdChkZWZhdWx0cykpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhkZWZhdWx0cylcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAhcmV0cmlldmVkU2NoZW1hLnByb3BlcnRpZXMgfHwgIXJldHJpZXZlZFNjaGVtYS5wcm9wZXJ0aWVzW2tleV0pXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChrZXkpID0+IGtleXMuYWRkKGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGFSZXF1aXJlZCA9IFtdO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAhcmV0cmlldmVkU2NoZW1hLnByb3BlcnRpZXMgfHwgIXJldHJpZXZlZFNjaGVtYS5wcm9wZXJ0aWVzW2tleV0pXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGtleXMuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgZm9ybURhdGFSZXF1aXJlZC5wdXNoKGtleSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXB1dGVkRGVmYXVsdCA9IGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIGFkZGl0aW9uYWxQcm9wZXJ0aWVzU2NoZW1hLCB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIF9yZWN1cnNlTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXM6IGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMgPT09IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudERlZmF1bHRzOiBnZXQoZGVmYXVsdHMsIFtrZXldKSxcbiAgICAgICAgICAgICAgICAgICAgcmF3Rm9ybURhdGE6IGdldChmb3JtRGF0YSwgW2tleV0pLFxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKF9hID0gcmV0cmlldmVkU2NoZW1hLnJlcXVpcmVkKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaW5jbHVkZXMoa2V5KSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGVzZSBhcmUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHdlIGRvbid0IG5lZWQgdG8gYWRkIHRoZSBgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcmAgcHJvcFxuICAgICAgICAgICAgICAgIG1heWJlQWRkRGVmYXVsdFRvT2JqZWN0KG9iamVjdERlZmF1bHRzLCBrZXksIGNvbXB1dGVkRGVmYXVsdCwgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcywgcmVxdWlyZWQsIGZvcm1EYXRhUmVxdWlyZWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdERlZmF1bHRzO1xuICAgIH1cbn1cbi8qKiBDb21wdXRlcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgYXJyYXlzLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHJhd1NjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHN0YXRlIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSB7Q29tcHV0ZURlZmF1bHRzUHJvcHN9IGNvbXB1dGVEZWZhdWx0c1Byb3BzIC0gT3B0aW9uYWwgcHJvcHMgZm9yIHRoaXMgZnVuY3Rpb25cbiAqIEBwYXJhbSBkZWZhdWx0cyAtIE9wdGlvbmFsIHByb3BzIGZvciB0aGlzIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyAtIFRoZSBkZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBzY2hlbWEgdHlwZSBpZiB0aGV5IGFyZSBkZWZpbmVkIGZvciBvYmplY3Qgb3IgYXJyYXkgc2NoZW1hcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFycmF5RGVmYXVsdHModmFsaWRhdG9yLCByYXdTY2hlbWEsIHsgcmF3Rm9ybURhdGEsIHJvb3RTY2hlbWEgPSB7fSwgX3JlY3Vyc2VMaXN0ID0gW10sIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSB1bmRlZmluZWQsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mID0gdW5kZWZpbmVkLCByZXF1aXJlZCwgfSA9IHt9LCBkZWZhdWx0cykge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3Qgc2NoZW1hID0gcmF3U2NoZW1hO1xuICAgIGNvbnN0IGFycmF5TWluSXRlbXNTdGF0ZUJlaGF2aW9yID0gKF9hID0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmFycmF5TWluSXRlbXMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9O1xuICAgIGNvbnN0IHsgcG9wdWxhdGU6IGFycmF5TWluSXRlbXNQb3B1bGF0ZSwgbWVyZ2VFeHRyYURlZmF1bHRzOiBhcnJheU1lcmdlRXh0cmFEZWZhdWx0cyB9ID0gYXJyYXlNaW5JdGVtc1N0YXRlQmVoYXZpb3I7XG4gICAgY29uc3QgbmV2ZXJQb3B1bGF0ZSA9IGFycmF5TWluSXRlbXNQb3B1bGF0ZSA9PT0gJ25ldmVyJztcbiAgICBjb25zdCBpZ25vcmVNaW5JdGVtc0ZsYWdTZXQgPSBhcnJheU1pbkl0ZW1zUG9wdWxhdGUgPT09ICdyZXF1aXJlZE9ubHknO1xuICAgIGNvbnN0IGlzUG9wdWxhdGVBbGwgPSBhcnJheU1pbkl0ZW1zUG9wdWxhdGUgPT09ICdhbGwnIHx8ICghbmV2ZXJQb3B1bGF0ZSAmJiAhaWdub3JlTWluSXRlbXNGbGFnU2V0KTtcbiAgICBjb25zdCBjb21wdXRlU2tpcFBvcHVsYXRlID0gKF9iID0gYXJyYXlNaW5JdGVtc1N0YXRlQmVoYXZpb3IgPT09IG51bGwgfHwgYXJyYXlNaW5JdGVtc1N0YXRlQmVoYXZpb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFycmF5TWluSXRlbXNTdGF0ZUJlaGF2aW9yLmNvbXB1dGVTa2lwUG9wdWxhdGUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICgoKSA9PiBmYWxzZSk7XG4gICAgY29uc3QgaXNTa2lwRW1wdHlEZWZhdWx0cyA9IChleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSBudWxsIHx8IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IuZW1wdHlPYmplY3RGaWVsZHMpID09PSAnc2tpcEVtcHR5RGVmYXVsdHMnO1xuICAgIGNvbnN0IGVtcHR5RGVmYXVsdCA9IGlzU2tpcEVtcHR5RGVmYXVsdHMgPyB1bmRlZmluZWQgOiBbXTtcbiAgICAvLyBJbmplY3QgZGVmYXVsdHMgaW50byBleGlzdGluZyBhcnJheSBkZWZhdWx0c1xuICAgIGlmIChBcnJheS5pc0FycmF5KGRlZmF1bHRzKSkge1xuICAgICAgICBkZWZhdWx0cyA9IGRlZmF1bHRzLm1hcCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFJdGVtID0gZ2V0SW5uZXJTY2hlbWFGb3JBcnJheUl0ZW0oc2NoZW1hLCBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZy5GYWxsYmFjaywgaWR4KTtcbiAgICAgICAgICAgIHJldHVybiBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBzY2hlbWFJdGVtLCB7XG4gICAgICAgICAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgICAgICAgICBfcmVjdXJzZUxpc3QsXG4gICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgICAgICAgICBwYXJlbnREZWZhdWx0czogaXRlbSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gRGVlcGx5IGluamVjdCBkZWZhdWx0cyBpbnRvIGFscmVhZHkgZXhpc3RpbmcgZm9ybSBkYXRhXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmF3Rm9ybURhdGEpKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYUl0ZW0gPSBnZXRJbm5lclNjaGVtYUZvckFycmF5SXRlbShzY2hlbWEpO1xuICAgICAgICBpZiAobmV2ZXJQb3B1bGF0ZSkge1xuICAgICAgICAgICAgZGVmYXVsdHMgPSByYXdGb3JtRGF0YTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1EZWZhdWx0cyA9IHJhd0Zvcm1EYXRhLm1hcCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIHNjaGVtYUl0ZW0sIHtcbiAgICAgICAgICAgICAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgX3JlY3Vyc2VMaXN0LFxuICAgICAgICAgICAgICAgICAgICBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLFxuICAgICAgICAgICAgICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgICAgICAgICAgICAgcmF3Rm9ybURhdGE6IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudERlZmF1bHRzOiBnZXQoZGVmYXVsdHMsIFtpZHhdKSxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIElmIHRoZSBwb3B1bGF0ZSAncmVxdWlyZWRPbmx5JyBmbGFnIGlzIHNldCB0aGVuIHdlIG9ubHkgbWVyZ2UgYW5kIGluY2x1ZGUgZXh0cmEgZGVmYXVsdHMgaWYgdGhleSBhcmUgcmVxdWlyZWQuXG4gICAgICAgICAgICAvLyBPciBpZiBwb3B1bGF0ZSAnYWxsJyBpcyBzZXQgd2UgbWVyZ2UgYW5kIGluY2x1ZGUgZXh0cmEgZGVmYXVsdHMuXG4gICAgICAgICAgICBjb25zdCBtZXJnZUV4dHJhRGVmYXVsdHMgPSAoKGlnbm9yZU1pbkl0ZW1zRmxhZ1NldCAmJiByZXF1aXJlZCkgfHwgaXNQb3B1bGF0ZUFsbCkgJiYgYXJyYXlNZXJnZUV4dHJhRGVmYXVsdHM7XG4gICAgICAgICAgICBkZWZhdWx0cyA9IG1lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEoZGVmYXVsdHMsIGl0ZW1EZWZhdWx0cywgbWVyZ2VFeHRyYURlZmF1bHRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDaGVjayBpZiB0aGUgc2NoZW1hIGhhcyBhIGNvbnN0IHByb3BlcnR5IGRlZmluZWQgQU5EIHdlIGFyZSBzdXBwb3J0aW5nIGNvbnN0IGFzIGRlZmF1bHRzLCB0aGVuIHdlIHNob3VsZCBhbHdheXNcbiAgICAvLyByZXR1cm4gdGhlIGNvbXB1dGVkRGVmYXVsdCBzaW5jZSBpdCdzIGNvbWluZyBmcm9tIHRoZSBjb25zdC5cbiAgICBjb25zdCBoYXNDb25zdCA9IGlzT2JqZWN0KHNjaGVtYSkgJiYgQ09OU1RfS0VZIGluIHNjaGVtYSAmJiAoZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmNvbnN0QXNEZWZhdWx0cykgIT09ICduZXZlcic7XG4gICAgaWYgKGhhc0NvbnN0ID09PSBmYWxzZSkge1xuICAgICAgICBpZiAobmV2ZXJQb3B1bGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRzICE9PSBudWxsICYmIGRlZmF1bHRzICE9PSB2b2lkIDAgPyBkZWZhdWx0cyA6IGVtcHR5RGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWdub3JlTWluSXRlbXNGbGFnU2V0ICYmICFyZXF1aXJlZCkge1xuICAgICAgICAgICAgLy8gSWYgbm8gZm9ybSBkYXRhIGV4aXN0cyBvciBkZWZhdWx0cyBhcmUgc2V0IGxlYXZlIHRoZSBmaWVsZCBlbXB0eS9ub24tZXhpc3RlbnQsIG90aGVyd2lzZVxuICAgICAgICAgICAgLy8gcmV0dXJuIGZvcm0gZGF0YS9kZWZhdWx0c1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRzID8gZGVmYXVsdHMgOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdHNMZW5ndGggPSBBcnJheS5pc0FycmF5KGRlZmF1bHRzKSA/IGRlZmF1bHRzLmxlbmd0aCA6IDA7XG4gICAgaWYgKCFzY2hlbWEubWluSXRlbXMgfHxcbiAgICAgICAgaXNNdWx0aVNlbGVjdCh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHx8XG4gICAgICAgIGNvbXB1dGVTa2lwUG9wdWxhdGUodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEpIHx8XG4gICAgICAgIHNjaGVtYS5taW5JdGVtcyA8PSBkZWZhdWx0c0xlbmd0aCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdHMgPyBkZWZhdWx0cyA6IGVtcHR5RGVmYXVsdDtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdEVudHJpZXMgPSAoZGVmYXVsdHMgfHwgW10pO1xuICAgIGNvbnN0IGZpbGxlclNjaGVtYSA9IGdldElubmVyU2NoZW1hRm9yQXJyYXlJdGVtKHNjaGVtYSwgQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcuSW52ZXJ0KTtcbiAgICBjb25zdCBmaWxsZXJEZWZhdWx0ID0gZmlsbGVyU2NoZW1hLmRlZmF1bHQ7XG4gICAgLy8gQ2FsY3VsYXRlIGZpbGxlciBlbnRyaWVzIGZvciByZW1haW5pbmcgaXRlbXMgKG1pbkl0ZW1zIC0gZXhpc3RpbmcgcmF3IGRhdGEvZGVmYXVsdHMpXG4gICAgY29uc3QgZmlsbGVyRW50cmllcyA9IG5ldyBBcnJheShzY2hlbWEubWluSXRlbXMgLSBkZWZhdWx0c0xlbmd0aCkuZmlsbChjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBmaWxsZXJTY2hlbWEsIHtcbiAgICAgICAgcGFyZW50RGVmYXVsdHM6IGZpbGxlckRlZmF1bHQsXG4gICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgIF9yZWN1cnNlTGlzdCxcbiAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgIHJlcXVpcmVkLFxuICAgIH0pKTtcbiAgICAvLyB0aGVuIGZpbGwgdXAgdGhlIHJlc3Qgd2l0aCBlaXRoZXIgdGhlIGl0ZW0gZGVmYXVsdCBvciBlbXB0eSwgdXAgdG8gbWluSXRlbXNcbiAgICByZXR1cm4gZGVmYXVsdEVudHJpZXMuY29uY2F0KGZpbGxlckVudHJpZXMpO1xufVxuLyoqIENvbXB1dGVzIHRoZSBkZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBzY2hlbWEgdHlwZS5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByYXdTY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGVmYXVsdCBzdGF0ZSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0ge0NvbXB1dGVEZWZhdWx0c1Byb3BzfSBjb21wdXRlRGVmYXVsdHNQcm9wcyAtIE9wdGlvbmFsIHByb3BzIGZvciB0aGlzIGZ1bmN0aW9uXG4gKiBAcGFyYW0gZGVmYXVsdHMgLSBPcHRpb25hbCBwcm9wcyBmb3IgdGhpcyBmdW5jdGlvblxuICogQHJldHVybnMgLSBUaGUgZGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgc2NoZW1hIHR5cGUgaWYgdGhleSBhcmUgZGVmaW5lZCBmb3Igb2JqZWN0IG9yIGFycmF5IHNjaGVtYXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUodmFsaWRhdG9yLCByYXdTY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzID0ge30sIGRlZmF1bHRzKSB7XG4gICAgc3dpdGNoIChnZXRTY2hlbWFUeXBlKHJhd1NjaGVtYSkpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byByZWN1cnNlIGZvciBvYmplY3Qgc2NoZW1hIGlubmVyIGRlZmF1bHQgdmFsdWVzLlxuICAgICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0T2JqZWN0RGVmYXVsdHModmFsaWRhdG9yLCByYXdTY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzLCBkZWZhdWx0cyk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0QXJyYXlEZWZhdWx0cyh2YWxpZGF0b3IsIHJhd1NjaGVtYSwgY29tcHV0ZURlZmF1bHRzUHJvcHMsIGRlZmF1bHRzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8qKiBSZXR1cm5zIHRoZSBzdXBlcnNldCBvZiBgZm9ybURhdGFgIHRoYXQgaW5jbHVkZXMgdGhlIGdpdmVuIHNldCB1cGRhdGVkIHRvIGluY2x1ZGUgYW55IG1pc3NpbmcgZmllbGRzIHRoYXQgaGF2ZVxuICogY29tcHV0ZWQgdG8gaGF2ZSBkZWZhdWx0cyBwcm92aWRlZCBpbiB0aGUgYHNjaGVtYWAuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gdGhlU2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRlZmF1bHQgc3RhdGUgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCBvbnRvIHdoaWNoIHRvIHByb3ZpZGUgYW55IG1pc3NpbmcgZGVmYXVsdHNcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtpbmNsdWRlVW5kZWZpbmVkVmFsdWVzPWZhbHNlXSAtIE9wdGlvbmFsIGZsYWcsIGlmIHRydWUsIGNhdXNlIHVuZGVmaW5lZCB2YWx1ZXMgdG8gYmUgYWRkZWQgYXMgZGVmYXVsdHMuXG4gKiAgICAgICAgICBJZiBcImV4Y2x1ZGVPYmplY3RDaGlsZHJlblwiLCBjYXVzZSB1bmRlZmluZWQgdmFsdWVzIGZvciB0aGlzIG9iamVjdCBhbmQgcGFzcyBgaW5jbHVkZVVuZGVmaW5lZFZhbHVlc2AgYXNcbiAqICAgICAgICAgIGZhbHNlIHdoZW4gY29tcHV0aW5nIGRlZmF1bHRzIGZvciBhbnkgbmVzdGVkIG9iamVjdCBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIFtleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yXSBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9iamVjdCwgaWYgcHJvdmlkZWQsIGFsbG93cyB1c2VycyB0byBvdmVycmlkZSBkZWZhdWx0IGZvcm0gc3RhdGUgYmVoYXZpb3JcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgcmVzdWx0aW5nIGBmb3JtRGF0YWAgd2l0aCBhbGwgdGhlIGRlZmF1bHRzIHByb3ZpZGVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERlZmF1bHRGb3JtU3RhdGUodmFsaWRhdG9yLCB0aGVTY2hlbWEsIGZvcm1EYXRhLCByb290U2NoZW1hLCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID0gZmFsc2UsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgaWYgKCFpc09iamVjdCh0aGVTY2hlbWEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzY2hlbWE6ICcgKyB0aGVTY2hlbWEpO1xuICAgIH1cbiAgICBjb25zdCBzY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHRoZVNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIHNjaGVtYSwge1xuICAgICAgICByb290U2NoZW1hLFxuICAgICAgICBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzLFxuICAgICAgICBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLFxuICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgcmF3Rm9ybURhdGE6IGZvcm1EYXRhLFxuICAgIH0pO1xuICAgIGlmIChmb3JtRGF0YSA9PT0gdW5kZWZpbmVkIHx8IGZvcm1EYXRhID09PSBudWxsIHx8ICh0eXBlb2YgZm9ybURhdGEgPT09ICdudW1iZXInICYmIGlzTmFOKGZvcm1EYXRhKSkpIHtcbiAgICAgICAgLy8gTm8gZm9ybSBkYXRhPyBVc2Ugc2NoZW1hIGRlZmF1bHRzLlxuICAgICAgICByZXR1cm4gZGVmYXVsdHM7XG4gICAgfVxuICAgIGNvbnN0IHsgbWVyZ2VEZWZhdWx0c0ludG9Gb3JtRGF0YSwgYXJyYXlNaW5JdGVtcyA9IHt9IH0gPSBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yIHx8IHt9O1xuICAgIGNvbnN0IHsgbWVyZ2VFeHRyYURlZmF1bHRzIH0gPSBhcnJheU1pbkl0ZW1zO1xuICAgIGNvbnN0IGRlZmF1bHRTdXBlcmNlZGVzVW5kZWZpbmVkID0gbWVyZ2VEZWZhdWx0c0ludG9Gb3JtRGF0YSA9PT0gJ3VzZURlZmF1bHRJZkZvcm1EYXRhVW5kZWZpbmVkJztcbiAgICBpZiAoaXNPYmplY3QoZm9ybURhdGEpKSB7XG4gICAgICAgIHJldHVybiBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhKGRlZmF1bHRzLCBmb3JtRGF0YSwgbWVyZ2VFeHRyYURlZmF1bHRzLCBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YShkZWZhdWx0cywgZm9ybURhdGEsIG1lcmdlRXh0cmFEZWZhdWx0cywgZGVmYXVsdFN1cGVyY2VkZXNVbmRlZmluZWQpO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybURhdGE7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREZWZhdWx0Rm9ybVN0YXRlLmpzLm1hcCIsImltcG9ydCBnZXRVaU9wdGlvbnMgZnJvbSAnLi9nZXRVaU9wdGlvbnMnO1xuLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGB1aVNjaGVtYWAgY29udGFpbnMgdGhlIGB3aWRnZXRgIGZpZWxkIGFuZCB0aGF0IHRoZSB3aWRnZXQgaXMgbm90IGBoaWRkZW5gXG4gKlxuICogQHBhcmFtIHVpU2NoZW1hIC0gVGhlIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGRldGVjdCBpZiBpdCBpcyBjdXN0b21pemVkXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGB1aVNjaGVtYWAgZGVzY3JpYmVzIGEgY3VzdG9tIHdpZGdldCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQ3VzdG9tV2lkZ2V0KHVpU2NoZW1hID0ge30pIHtcbiAgICByZXR1cm4gKFxuICAgIC8vIFRPRE86IFJlbW92ZSB0aGUgYCYmIHVpU2NoZW1hWyd1aTp3aWRnZXQnXSAhPT0gJ2hpZGRlbidgIG9uY2Ugd2Ugc3VwcG9ydCBoaWRkZW4gd2lkZ2V0cyBmb3IgYXJyYXlzLlxuICAgIC8vIGh0dHBzOi8vcmpzZi10ZWFtLmdpdGh1Yi5pby9yZWFjdC1qc29uc2NoZW1hLWZvcm0vZG9jcy91c2FnZS93aWRnZXRzLyNoaWRkZW4td2lkZ2V0c1xuICAgICd3aWRnZXQnIGluIGdldFVpT3B0aW9ucyh1aVNjaGVtYSkgJiYgZ2V0VWlPcHRpb25zKHVpU2NoZW1hKVsnd2lkZ2V0J10gIT09ICdoaWRkZW4nKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzQ3VzdG9tV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IFVJX1dJREdFVF9LRVkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHJldHJpZXZlU2NoZW1hIGZyb20gJy4vcmV0cmlldmVTY2hlbWEnO1xuLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGBzY2hlbWFgIGFuZCBgdWlTY2hlbWFgIGNvbWJpbmF0aW9uIHJlcHJlc2VudHMgYW4gYXJyYXkgb2YgZmlsZXNcbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCBjaGVjayBmb3IgYXJyYXkgb2YgZmlsZXMgZmxhZyBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW3VpU2NoZW1hPXt9XSAtIFRoZSBVSSBzY2hlbWEgZnJvbSB3aGljaCB0byBjaGVjayB0aGUgd2lkZ2V0XG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUcnVlIGlmIHNjaGVtYS91aVNjaGVtYSBjb250YWlucyBhbiBhcnJheSBvZiBmaWxlcywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRmlsZXNBcnJheSh2YWxpZGF0b3IsIHNjaGVtYSwgdWlTY2hlbWEgPSB7fSwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBpZiAodWlTY2hlbWFbVUlfV0lER0VUX0tFWV0gPT09ICdmaWxlcycpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChzY2hlbWEuaXRlbXMpIHtcbiAgICAgICAgY29uc3QgaXRlbXNTY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHNjaGVtYS5pdGVtcywgcm9vdFNjaGVtYSwgdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIHJldHVybiBpdGVtc1NjaGVtYS50eXBlID09PSAnc3RyaW5nJyAmJiBpdGVtc1NjaGVtYS5mb3JtYXQgPT09ICdkYXRhLXVybCc7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzRmlsZXNBcnJheS5qcy5tYXAiLCJpbXBvcnQgeyBVSV9GSUVMRF9LRVksIFVJX1dJREdFVF9LRVkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGdldFNjaGVtYVR5cGUgZnJvbSAnLi4vZ2V0U2NoZW1hVHlwZSc7XG5pbXBvcnQgZ2V0VWlPcHRpb25zIGZyb20gJy4uL2dldFVpT3B0aW9ucyc7XG5pbXBvcnQgaXNDdXN0b21XaWRnZXQgZnJvbSAnLi4vaXNDdXN0b21XaWRnZXQnO1xuaW1wb3J0IGlzRmlsZXNBcnJheSBmcm9tICcuL2lzRmlsZXNBcnJheSc7XG5pbXBvcnQgaXNNdWx0aVNlbGVjdCBmcm9tICcuL2lzTXVsdGlTZWxlY3QnO1xuLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgY29tYmluYXRpb24gb2YgYHNjaGVtYWAgYW5kIGB1aVNjaGVtYWAgcHJvcGVydGllcyBpbmRpY2F0ZXMgdGhhdCB0aGUgbGFiZWwgZm9yIHRoZSBgc2NoZW1hYFxuICogc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBhIFVJLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkaXNwbGF5IGxhYmVsIGZsYWcgaXMgZGVzaXJlZFxuICogQHBhcmFtIFt1aVNjaGVtYT17fV0gLSBUaGUgVUkgc2NoZW1hIGZyb20gd2hpY2ggdG8gZGVyaXZlIHBvdGVudGlhbGx5IGRpc3BsYXlhYmxlIGluZm9ybWF0aW9uXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZ2xvYmFsT3B0aW9ucz17fV0gLSBUaGUgb3B0aW9uYWwgR2xvYmFsIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGdldCBhbnkgZmFsbGJhY2sgYHh4eGAgb3B0aW9uc1xuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGxhYmVsIHNob3VsZCBiZSBkaXNwbGF5ZWQgb3IgZmFsc2UgaWYgaXQgc2hvdWxkIG5vdFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREaXNwbGF5TGFiZWwodmFsaWRhdG9yLCBzY2hlbWEsIHVpU2NoZW1hID0ge30sIHJvb3RTY2hlbWEsIGdsb2JhbE9wdGlvbnMsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxPcHRpb25zKTtcbiAgICBjb25zdCB7IGxhYmVsID0gdHJ1ZSB9ID0gdWlPcHRpb25zO1xuICAgIGxldCBkaXNwbGF5TGFiZWwgPSAhIWxhYmVsO1xuICAgIGNvbnN0IHNjaGVtYVR5cGUgPSBnZXRTY2hlbWFUeXBlKHNjaGVtYSk7XG4gICAgaWYgKHNjaGVtYVR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgZGlzcGxheUxhYmVsID1cbiAgICAgICAgICAgIGlzTXVsdGlTZWxlY3QodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB8fFxuICAgICAgICAgICAgICAgIGlzRmlsZXNBcnJheSh2YWxpZGF0b3IsIHNjaGVtYSwgdWlTY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB8fFxuICAgICAgICAgICAgICAgIGlzQ3VzdG9tV2lkZ2V0KHVpU2NoZW1hKTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYVR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGRpc3BsYXlMYWJlbCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoc2NoZW1hVHlwZSA9PT0gJ2Jvb2xlYW4nICYmICF1aVNjaGVtYVtVSV9XSURHRVRfS0VZXSkge1xuICAgICAgICBkaXNwbGF5TGFiZWwgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHVpU2NoZW1hW1VJX0ZJRUxEX0tFWV0pIHtcbiAgICAgICAgZGlzcGxheUxhYmVsID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBkaXNwbGF5TGFiZWw7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREaXNwbGF5TGFiZWwuanMubWFwIiwiaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IG1lcmdlT2JqZWN0cyBmcm9tICcuLi9tZXJnZU9iamVjdHMnO1xuLyoqIE1lcmdlcyB0aGUgZXJyb3JzIGluIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGludG8gdGhlIGV4aXN0aW5nIGB2YWxpZGF0aW9uRGF0YWAgYnkgY29tYmluaW5nIHRoZSBoaWVyYXJjaGllcyBpbiB0aGVcbiAqIHR3byBgRXJyb3JTY2hlbWFgcyBhbmQgdGhlbiBhcHBlbmRpbmcgdGhlIGVycm9yIGxpc3QgZnJvbSB0aGUgYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgb2J0YWluZWQgYnkgY2FsbGluZ1xuICogYHZhbGlkYXRvci50b0Vycm9yTGlzdCgpYCBvbnRvIHRoZSBgZXJyb3JzYCBpbiB0aGUgYHZhbGlkYXRpb25EYXRhYC4gSWYgbm8gYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgaXMgcGFzc2VkLCB0aGVuXG4gKiBgdmFsaWRhdGlvbkRhdGFgIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBUaGUgdmFsaWRhdG9yIHVzZWQgdG8gY29udmVydCBhbiBFcnJvclNjaGVtYSB0byBhIGxpc3Qgb2YgZXJyb3JzXG4gKiBAcGFyYW0gdmFsaWRhdGlvbkRhdGEgLSBUaGUgY3VycmVudCBgVmFsaWRhdGlvbkRhdGFgIGludG8gd2hpY2ggdG8gbWVyZ2UgdGhlIGFkZGl0aW9uYWwgZXJyb3JzXG4gKiBAcGFyYW0gW2FkZGl0aW9uYWxFcnJvclNjaGVtYV0gLSBUaGUgYWRkaXRpb25hbCBzZXQgb2YgZXJyb3JzIGluIGFuIGBFcnJvclNjaGVtYWBcbiAqIEByZXR1cm5zIC0gVGhlIGB2YWxpZGF0aW9uRGF0YWAgd2l0aCB0aGUgYWRkaXRpb25hbCBlcnJvcnMgZnJvbSBgYWRkaXRpb25hbEVycm9yU2NoZW1hYCBtZXJnZWQgaW50byBpdCwgaWYgcHJvdmlkZWQuXG4gKiBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgYHZhbGlkYXRpb25EYXRhTWVyZ2UoKWAgZnVuY3Rpb24gZXhwb3J0ZWQgZnJvbSBgQHJqc2YvdXRpbHNgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24gd2lsbCBiZVxuICogICAgICAgIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VWYWxpZGF0aW9uRGF0YSh2YWxpZGF0b3IsIHZhbGlkYXRpb25EYXRhLCBhZGRpdGlvbmFsRXJyb3JTY2hlbWEpIHtcbiAgICBpZiAoIWFkZGl0aW9uYWxFcnJvclNjaGVtYSkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGlvbkRhdGE7XG4gICAgfVxuICAgIGNvbnN0IHsgZXJyb3JzOiBvbGRFcnJvcnMsIGVycm9yU2NoZW1hOiBvbGRFcnJvclNjaGVtYSB9ID0gdmFsaWRhdGlvbkRhdGE7XG4gICAgbGV0IGVycm9ycyA9IHZhbGlkYXRvci50b0Vycm9yTGlzdChhZGRpdGlvbmFsRXJyb3JTY2hlbWEpO1xuICAgIGxldCBlcnJvclNjaGVtYSA9IGFkZGl0aW9uYWxFcnJvclNjaGVtYTtcbiAgICBpZiAoIWlzRW1wdHkob2xkRXJyb3JTY2hlbWEpKSB7XG4gICAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VPYmplY3RzKG9sZEVycm9yU2NoZW1hLCBhZGRpdGlvbmFsRXJyb3JTY2hlbWEsIHRydWUpO1xuICAgICAgICBlcnJvcnMgPSBbLi4ub2xkRXJyb3JzXS5jb25jYXQoZXJyb3JzKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZXJyb3JTY2hlbWEsIGVycm9ycyB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVyZ2VWYWxpZGF0aW9uRGF0YS5qcy5tYXAiLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGhhcyBmcm9tICdsb2Rhc2gvaGFzJztcbmltcG9ydCB7IFBST1BFUlRJRVNfS0VZLCBSRUZfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbmNvbnN0IE5PX1ZBTFVFID0gU3ltYm9sKCdubyBWYWx1ZScpO1xuLyoqIFNhbml0aXplIHRoZSBgZGF0YWAgYXNzb2NpYXRlZCB3aXRoIHRoZSBgb2xkU2NoZW1hYCBzbyBpdCBpcyBjb25zaWRlcmVkIGFwcHJvcHJpYXRlIGZvciB0aGUgYG5ld1NjaGVtYWAuIElmIHRoZSBuZXdcbiAqIHNjaGVtYSBkb2VzIG5vdCBjb250YWluIGFueSBwcm9wZXJ0aWVzLCB0aGVuIGB1bmRlZmluZWRgIGlzIHJldHVybmVkIHRvIGNsZWFyIGFsbCB0aGUgZm9ybSBkYXRhLiBEdWUgdG8gdGhlIG5hdHVyZVxuICogb2Ygc2NoZW1hcywgdGhpcyBzYW5pdGl6YXRpb24gaGFwcGVucyByZWN1cnNpdmVseSBmb3IgbmVzdGVkIG9iamVjdHMgb2YgZGF0YS4gQWxzbywgYW55IHByb3BlcnRpZXMgaW4gdGhlIG9sZCBzY2hlbWFcbiAqIHRoYXQgYXJlIG5vbi1leGlzdGVudCBpbiB0aGUgbmV3IHNjaGVtYSBhcmUgc2V0IHRvIGB1bmRlZmluZWRgLiBUaGUgZGF0YSBzYW5pdGl6YXRpb24gcHJvY2VzcyBoYXMgdGhlIGZvbGxvd2luZyBmbG93OlxuICpcbiAqIC0gSWYgdGhlIG5ldyBzY2hlbWEgaXMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBgcHJvcGVydGllc2Agb2JqZWN0IHRoZW46XG4gKiAgIC0gQ3JlYXRlIGEgYHJlbW92ZU9sZFNjaGVtYURhdGFgIG9iamVjdCwgc2V0dGluZyBlYWNoIGtleSBpbiB0aGUgYG9sZFNjaGVtYS5wcm9wZXJ0aWVzYCBoYXZpbmcgYGRhdGFgIHRvIHVuZGVmaW5lZFxuICogICAtIENyZWF0ZSBhbiBlbXB0eSBgbmVzdGVkRGF0YWAgb2JqZWN0IGZvciB1c2UgaW4gdGhlIGtleSBmaWx0ZXJpbmcgYmVsb3c6XG4gKiAgIC0gSXRlcmF0ZSBvdmVyIGVhY2gga2V5IGluIHRoZSBgbmV3U2NoZW1hLnByb3BlcnRpZXNgIGFzIGZvbGxvd3M6XG4gKiAgICAgLSBHZXQgdGhlIGBmb3JtVmFsdWVgIG9mIHRoZSBrZXkgZnJvbSB0aGUgYGRhdGFgXG4gKiAgICAgLSBHZXQgdGhlIGBvbGRLZXlTY2hlbWFgIGFuZCBgbmV3S2V5ZWRTY2hlbWFgIGZvciB0aGUga2V5LCBkZWZhdWx0aW5nIHRvIGB7fWAgd2hlbiBpdCBkb2Vzbid0IGV4aXN0XG4gKiAgICAgLSBSZXRyaWV2ZSB0aGUgc2NoZW1hIGZvciBhbnkgcmVmcyB3aXRoaW4gZWFjaCBgb2xkS2V5U2NoZW1hYCBhbmQvb3IgYG5ld0tleVNjaGVtYWBcbiAqICAgICAtIEdldCB0aGUgdHlwZXMgb2YgdGhlIG9sZCBhbmQgbmV3IGtleWVkIHNjaGVtYXMgYW5kIGlmIHRoZSBvbGQgZG9lc24ndCBleGlzdCBvciB0aGUgb2xkICYgbmV3IGFyZSB0aGUgc2FtZSB0aGVuOlxuICogICAgICAgLSBJZiBgcmVtb3ZlT2xkU2NoZW1hRGF0YWAgaGFzIGFuIGVudHJ5IGZvciB0aGUga2V5LCBkZWxldGUgaXQgc2luY2UgdGhlIG5ldyBzY2hlbWEgaGFzIHRoZSBzYW1lIHByb3BlcnR5XG4gKiAgICAgICAtIElmIHR5cGUgb2YgdGhlIGtleSBpbiB0aGUgbmV3IHNjaGVtYSBpcyBgb2JqZWN0YDpcbiAqICAgICAgICAgLSBTdG9yZSB0aGUgdmFsdWUgZnJvbSB0aGUgcmVjdXJzaXZlIGBzYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWFgIGNhbGwgaW4gYG5lc3RlZERhdGFba2V5XWBcbiAqICAgICAgIC0gT3RoZXJ3aXNlLCBjaGVjayBmb3IgZGVmYXVsdCBvciBjb25zdCB2YWx1ZXM6XG4gKiAgICAgICAgIC0gR2V0IHRoZSBvbGQgYW5kIG5ldyBgZGVmYXVsdGAgdmFsdWVzIGZyb20gdGhlIHNjaGVtYSBhbmQgY2hlY2s6XG4gKiAgICAgICAgICAgLSBJZiB0aGUgbmV3IGBkZWZhdWx0YCB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgZm9ybSB2YWx1ZTpcbiAqICAgICAgICAgICAgIC0gSWYgdGhlIG9sZCBgZGVmYXVsdGAgdmFsdWUgRE9FUyBtYXRjaCB0aGUgZm9ybSB2YWx1ZSwgdGhlbjpcbiAqICAgICAgICAgICAgICAgLSBSZXBsYWNlIGByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV1gIHdpdGggdGhlIG5ldyBgZGVmYXVsdGBcbiAqICAgICAgICAgICAgICAgLSBPdGhlcndpc2UsIGlmIHRoZSBuZXcgc2NoZW1hIGlzIGByZWFkT25seWAgdGhlbiByZXBsYWNlIGByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV1gIHdpdGggdW5kZWZpbmVkXG4gKiAgICAgICAgIC0gR2V0IHRoZSBvbGQgYW5kIG5ldyBgY29uc3RgIHZhbHVlcyBmcm9tIHRoZSBzY2hlbWEgYW5kIGNoZWNrOlxuICogICAgICAgICAgIC0gSWYgdGhlIG5ldyBgY29uc3RgIHZhbHVlIGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtIHZhbHVlOlxuICogICAgICAgICAgIC0gSWYgdGhlIG9sZCBgY29uc3RgIHZhbHVlIERPRVMgbWF0Y2ggdGhlIGZvcm0gdmFsdWUsIHRoZW46XG4gKiAgICAgICAgICAgICAtIFJlcGxhY2UgYHJlbW92ZU9sZFNjaGVtYURhdGFba2V5XWAgd2l0aCB0aGUgbmV3IGBjb25zdGBcbiAqICAgICAgICAgICAgIC0gT3RoZXJ3aXNlLCByZXBsYWNlIGByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV1gIHdpdGggdW5kZWZpbmVkXG4gKiAgIC0gT25jZSBhbGwga2V5cyBoYXZlIGJlZW4gcHJvY2Vzc2VkLCByZXR1cm4gYW4gb2JqZWN0IGJ1aWx0IGFzIGZvbGxvd3M6XG4gKiAgICAgLSBgeyAuLi5yZW1vdmVPbGRTY2hlbWFEYXRhLCAuLi5uZXN0ZWREYXRhLCAuLi5waWNrKGRhdGEsIGtleXNUb0tlZXApIH1gXG4gKiAtIElmIHRoZSBuZXcgYW5kIG9sZCBzY2hlbWEgdHlwZXMgYXJlIGFycmF5IGFuZCB0aGUgYGRhdGFgIGlzIGFuIGFycmF5IHRoZW46XG4gKiAgIC0gSWYgdGhlIHR5cGUgb2YgdGhlIG9sZCBhbmQgbmV3IHNjaGVtYSBgaXRlbXNgIGFyZSBhIG5vbi1hcnJheSBvYmplY3RzOlxuICogICAgIC0gUmV0cmlldmUgdGhlIHNjaGVtYSBmb3IgYW55IHJlZnMgd2l0aGluIGVhY2ggYG9sZEtleVNjaGVtYS5pdGVtc2AgYW5kL29yIGBuZXdLZXlTY2hlbWEuaXRlbXNgXG4gKiAgICAgLSBJZiB0aGUgYHR5cGVgcyBvZiBib3RoIGl0ZW1zIGFyZSB0aGUgc2FtZSAob3IgdGhlIG9sZCBkb2VzIG5vdCBoYXZlIGEgdHlwZSk6XG4gKiAgICAgICAtIElmIHRoZSB0eXBlIGlzIFwib2JqZWN0XCIsIHRoZW46XG4gKiAgICAgICAgIC0gRm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgYGRhdGFgIHJlY3Vyc2l2ZWx5IHNhbml0aXplIHRoZSBkYXRhLCBzdG9wcGluZyBhdCBgbWF4SXRlbXNgIGlmIHNwZWNpZmllZFxuICogICAgICAgLSBPdGhlcndpc2UsIGp1c3QgcmV0dXJuIHRoZSBgZGF0YWAgcmVtb3ZpbmcgYW55IHZhbHVlcyBhZnRlciBgbWF4SXRlbXNgIGlmIGl0IGlzIHNldFxuICogICAtIElmIHRoZSB0eXBlIG9mIHRoZSBvbGQgYW5kIG5ldyBzY2hlbWEgYGl0ZW1zYCBhcmUgYm9vbGVhbnMgb2YgdGhlIHNhbWUgdmFsdWUsIHJldHVybiBgZGF0YWAgYXMgaXNcbiAqIC0gT3RoZXJ3aXNlIHJldHVybiBgdW5kZWZpbmVkYFxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBKU09OIHNjaGVtYSBvZiB0aGUgZW50aXJlIGZvcm1cbiAqIEBwYXJhbSBbbmV3U2NoZW1hXSAtIFRoZSBuZXcgc2NoZW1hIGZvciB3aGljaCB0aGUgZGF0YSBpcyBiZWluZyBzYW5pdGl6ZWRcbiAqIEBwYXJhbSBbb2xkU2NoZW1hXSAtIFRoZSBvbGQgc2NoZW1hIGZyb20gd2hpY2ggdGhlIGRhdGEgb3JpZ2luYXRlZFxuICogQHBhcmFtIFtkYXRhPXt9XSAtIFRoZSBmb3JtIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBzY2hlbWEsIGRlZmF1bHRpbmcgdG8gYW4gZW1wdHkgb2JqZWN0IHdoZW4gdW5kZWZpbmVkXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIG5ldyBmb3JtIGRhdGEsIHdpdGggYWxsIHRoZSBmaWVsZHMgdW5pcXVlbHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBvbGQgc2NoZW1hIHNldFxuICogICAgICB0byBgdW5kZWZpbmVkYC4gV2lsbCByZXR1cm4gYHVuZGVmaW5lZGAgaWYgdGhlIG5ldyBzY2hlbWEgaXMgbm90IGFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNhbml0aXplRGF0YUZvck5ld1NjaGVtYSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIG5ld1NjaGVtYSwgb2xkU2NoZW1hLCBkYXRhID0ge30sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgLy8gQnkgZGVmYXVsdCwgd2Ugd2lsbCBjbGVhciB0aGUgZm9ybSBkYXRhXG4gICAgbGV0IG5ld0Zvcm1EYXRhO1xuICAgIC8vIElmIHRoZSBuZXcgc2NoZW1hIGlzIG9mIHR5cGUgb2JqZWN0IGFuZCB0aGF0IG9iamVjdCBjb250YWlucyBhIGxpc3Qgb2YgcHJvcGVydGllc1xuICAgIGlmIChoYXMobmV3U2NoZW1hLCBQUk9QRVJUSUVTX0tFWSkpIHtcbiAgICAgICAgLy8gQ3JlYXRlIGFuIG9iamVjdCBjb250YWluaW5nIHJvb3QtbGV2ZWwga2V5cyBpbiB0aGUgb2xkIHNjaGVtYSwgc2V0dGluZyBlYWNoIGtleSB0byB1bmRlZmluZWQgdG8gcmVtb3ZlIHRoZSBkYXRhXG4gICAgICAgIGNvbnN0IHJlbW92ZU9sZFNjaGVtYURhdGEgPSB7fTtcbiAgICAgICAgaWYgKGhhcyhvbGRTY2hlbWEsIFBST1BFUlRJRVNfS0VZKSkge1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGdldChvbGRTY2hlbWEsIFBST1BFUlRJRVNfS0VZLCB7fSk7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzKGRhdGEsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlT2xkU2NoZW1hRGF0YVtrZXldID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhnZXQobmV3U2NoZW1hLCBQUk9QRVJUSUVTX0tFWSwge30pKTtcbiAgICAgICAgLy8gQ3JlYXRlIGEgcGxhY2UgdG8gc3RvcmUgbmVzdGVkIGRhdGEgdGhhdCB3aWxsIGJlIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIGZpbHRlclxuICAgICAgICBjb25zdCBuZXN0ZWREYXRhID0ge307XG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBnZXQoZGF0YSwga2V5KTtcbiAgICAgICAgICAgIGxldCBvbGRLZXllZFNjaGVtYSA9IGdldChvbGRTY2hlbWEsIFtQUk9QRVJUSUVTX0tFWSwga2V5XSwge30pO1xuICAgICAgICAgICAgbGV0IG5ld0tleWVkU2NoZW1hID0gZ2V0KG5ld1NjaGVtYSwgW1BST1BFUlRJRVNfS0VZLCBrZXldLCB7fSk7XG4gICAgICAgICAgICAvLyBSZXNvbHZlIHRoZSByZWZzIGlmIHRoZXkgZXhpc3RcbiAgICAgICAgICAgIGlmIChoYXMob2xkS2V5ZWRTY2hlbWEsIFJFRl9LRVkpKSB7XG4gICAgICAgICAgICAgICAgb2xkS2V5ZWRTY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIG9sZEtleWVkU2NoZW1hLCByb290U2NoZW1hLCBmb3JtVmFsdWUsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoYXMobmV3S2V5ZWRTY2hlbWEsIFJFRl9LRVkpKSB7XG4gICAgICAgICAgICAgICAgbmV3S2V5ZWRTY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIG5ld0tleWVkU2NoZW1hLCByb290U2NoZW1hLCBmb3JtVmFsdWUsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIE5vdyBnZXQgdHlwZXMgYW5kIHNlZSBpZiB0aGV5IGFyZSB0aGUgc2FtZVxuICAgICAgICAgICAgY29uc3Qgb2xkU2NoZW1hVHlwZUZvcktleSA9IGdldChvbGRLZXllZFNjaGVtYSwgJ3R5cGUnKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NjaGVtYVR5cGVGb3JLZXkgPSBnZXQobmV3S2V5ZWRTY2hlbWEsICd0eXBlJyk7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgb2xkIG9wdGlvbiBoYXMgdGhlIHNhbWUga2V5IHdpdGggdGhlIHNhbWUgdHlwZVxuICAgICAgICAgICAgaWYgKCFvbGRTY2hlbWFUeXBlRm9yS2V5IHx8IG9sZFNjaGVtYVR5cGVGb3JLZXkgPT09IG5ld1NjaGVtYVR5cGVGb3JLZXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzKHJlbW92ZU9sZFNjaGVtYURhdGEsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU0lERS1FRkZFQ1Q6IHJlbW92ZSB0aGUgdW5kZWZpbmVkIHZhbHVlIGZvciBhIGtleSB0aGF0IGhhcyB0aGUgc2FtZSB0eXBlIGJldHdlZW4gdGhlIG9sZCBhbmQgbmV3IHNjaGVtYXNcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlbW92ZU9sZFNjaGVtYURhdGFba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gSWYgaXQgaXMgYW4gb2JqZWN0LCB3ZSdsbCByZWN1cnNlIGFuZCBzdG9yZSB0aGUgcmVzdWx0aW5nIHNhbml0aXplZCBkYXRhIGZvciB0aGUga2V5XG4gICAgICAgICAgICAgICAgaWYgKG5ld1NjaGVtYVR5cGVGb3JLZXkgPT09ICdvYmplY3QnIHx8IChuZXdTY2hlbWFUeXBlRm9yS2V5ID09PSAnYXJyYXknICYmIEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU0lERS1FRkZFQ1Q6IHByb2Nlc3MgdGhlIG5ldyBzY2hlbWEgdHlwZSBvZiBvYmplY3QgcmVjdXJzaXZlbHkgdG8gc2F2ZSBpdGVyYXRpb25zXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1EYXRhID0gc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgbmV3S2V5ZWRTY2hlbWEsIG9sZEtleWVkU2NoZW1hLCBmb3JtVmFsdWUsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1EYXRhICE9PSB1bmRlZmluZWQgfHwgbmV3U2NoZW1hVHlwZUZvcktleSA9PT0gJ2FycmF5Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBwdXQgdW5kZWZpbmVkIHZhbHVlcyBmb3IgdGhlIGFycmF5IHR5cGUgYW5kIG5vdCB0aGUgb2JqZWN0IHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZERhdGFba2V5XSA9IGl0ZW1EYXRhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBPaywgdGhlIG5vbi1vYmplY3QgdHlwZXMgbWF0Y2gsIGxldCdzIG1ha2Ugc3VyZSB0aGF0IGEgZGVmYXVsdCBvciBhIGNvbnN0IG9mIGEgZGlmZmVyZW50IHZhbHVlIGlzIHJlcGxhY2VkXG4gICAgICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIG5ldyBkZWZhdWx0IG9yIGNvbnN0LiBUaGlzIGFsbG93cyB0aGUgY2FzZSB3aGVyZSB0d28gc2NoZW1hcyBkaWZmZXIgdGhhdCBvbmx5IGJ5IHRoZSBkZWZhdWx0L2NvbnN0XG4gICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIHRvIGJlIHByb3Blcmx5IHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld09wdGlvbkRlZmF1bHQgPSBnZXQobmV3S2V5ZWRTY2hlbWEsICdkZWZhdWx0JywgTk9fVkFMVUUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbGRPcHRpb25EZWZhdWx0ID0gZ2V0KG9sZEtleWVkU2NoZW1hLCAnZGVmYXVsdCcsIE5PX1ZBTFVFKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld09wdGlvbkRlZmF1bHQgIT09IE5PX1ZBTFVFICYmIG5ld09wdGlvbkRlZmF1bHQgIT09IGZvcm1WYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZE9wdGlvbkRlZmF1bHQgPT09IGZvcm1WYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBvbGQgZGVmYXVsdCBtYXRjaGVzIHRoZSBmb3JtVmFsdWUsIHdlJ2xsIHVwZGF0ZSB0aGUgbmV3IHZhbHVlIHRvIG1hdGNoIHRoZSBuZXcgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZU9sZFNjaGVtYURhdGFba2V5XSA9IG5ld09wdGlvbkRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChnZXQobmV3S2V5ZWRTY2hlbWEsICdyZWFkT25seScpID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5ldyBzY2hlbWEgaGFzIHRoZSBkZWZhdWx0IHNldCB0byByZWFkLW9ubHksIHRyZWF0IGl0IGxpa2UgYSBjb25zdCBhbmQgcmVtb3ZlIHRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZU9sZFNjaGVtYURhdGFba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdPcHRpb25Db25zdCA9IGdldChuZXdLZXllZFNjaGVtYSwgJ2NvbnN0JywgTk9fVkFMVUUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbGRPcHRpb25Db25zdCA9IGdldChvbGRLZXllZFNjaGVtYSwgJ2NvbnN0JywgTk9fVkFMVUUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3T3B0aW9uQ29uc3QgIT09IE5PX1ZBTFVFICYmIG5ld09wdGlvbkNvbnN0ICE9PSBmb3JtVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBjb25zdCwgaWYgdGhlIG9sZCB2YWx1ZSBtYXRjaGVzLCByZXBsYWNlIHRoZSB2YWx1ZSB3aXRoIHRoZSBuZXcgY29uc3Qgb3RoZXJ3aXNlIGNsZWFyIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV0gPSBvbGRPcHRpb25Db25zdCA9PT0gZm9ybVZhbHVlID8gbmV3T3B0aW9uQ29uc3QgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBuZXdGb3JtRGF0YSA9IHtcbiAgICAgICAgICAgIC4uLih0eXBlb2YgZGF0YSA9PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KGRhdGEpID8gdW5kZWZpbmVkIDogZGF0YSksXG4gICAgICAgICAgICAuLi5yZW1vdmVPbGRTY2hlbWFEYXRhLFxuICAgICAgICAgICAgLi4ubmVzdGVkRGF0YSxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gRmlyc3QgYXBwbHkgcmVtb3ZpbmcgdGhlIG9sZCBzY2hlbWEgZGF0YSwgdGhlbiBhcHBseSB0aGUgbmVzdGVkIGRhdGEsIHRoZW4gYXBwbHkgdGhlIG9sZCBkYXRhIGtleXMgdG8ga2VlcFxuICAgIH1cbiAgICBlbHNlIGlmIChnZXQob2xkU2NoZW1hLCAndHlwZScpID09PSAnYXJyYXknICYmIGdldChuZXdTY2hlbWEsICd0eXBlJykgPT09ICdhcnJheScgJiYgQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICBsZXQgb2xkU2NoZW1hSXRlbXMgPSBnZXQob2xkU2NoZW1hLCAnaXRlbXMnKTtcbiAgICAgICAgbGV0IG5ld1NjaGVtYUl0ZW1zID0gZ2V0KG5ld1NjaGVtYSwgJ2l0ZW1zJyk7XG4gICAgICAgIC8vIElmIGFueSBvZiB0aGUgYXJyYXkgdHlwZXMgYGl0ZW1zYCBhcmUgYXJyYXlzIChyZW1lbWJlciBhcnJheXMgYXJlIG9iamVjdHMpIHRoZW4gd2UnbGwganVzdCBkcm9wIHRoZSBkYXRhXG4gICAgICAgIC8vIEV2ZW50dWFsbHksIHdlIG1heSB3YW50IHRvIGRlYWwgd2l0aCB3aGVuIGVpdGhlciBvZiB0aGUgYGl0ZW1zYCBhcmUgYXJyYXlzIHNpbmNlIHRob3NlIHR1cGxlIHZhbGlkYXRpb25zXG4gICAgICAgIGlmICh0eXBlb2Ygb2xkU2NoZW1hSXRlbXMgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICB0eXBlb2YgbmV3U2NoZW1hSXRlbXMgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShvbGRTY2hlbWFJdGVtcykgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KG5ld1NjaGVtYUl0ZW1zKSkge1xuICAgICAgICAgICAgaWYgKGhhcyhvbGRTY2hlbWFJdGVtcywgUkVGX0tFWSkpIHtcbiAgICAgICAgICAgICAgICBvbGRTY2hlbWFJdGVtcyA9IHJldHJpZXZlU2NoZW1hKHZhbGlkYXRvciwgb2xkU2NoZW1hSXRlbXMsIHJvb3RTY2hlbWEsIGRhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoYXMobmV3U2NoZW1hSXRlbXMsIFJFRl9LRVkpKSB7XG4gICAgICAgICAgICAgICAgbmV3U2NoZW1hSXRlbXMgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIG5ld1NjaGVtYUl0ZW1zLCByb290U2NoZW1hLCBkYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBOb3cgZ2V0IHR5cGVzIGFuZCBzZWUgaWYgdGhleSBhcmUgdGhlIHNhbWVcbiAgICAgICAgICAgIGNvbnN0IG9sZFNjaGVtYVR5cGUgPSBnZXQob2xkU2NoZW1hSXRlbXMsICd0eXBlJyk7XG4gICAgICAgICAgICBjb25zdCBuZXdTY2hlbWFUeXBlID0gZ2V0KG5ld1NjaGVtYUl0ZW1zLCAndHlwZScpO1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG9sZCBvcHRpb24gaGFzIHRoZSBzYW1lIGtleSB3aXRoIHRoZSBzYW1lIHR5cGVcbiAgICAgICAgICAgIGlmICghb2xkU2NoZW1hVHlwZSB8fCBvbGRTY2hlbWFUeXBlID09PSBuZXdTY2hlbWFUeXBlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4SXRlbXMgPSBnZXQobmV3U2NoZW1hLCAnbWF4SXRlbXMnLCAtMSk7XG4gICAgICAgICAgICAgICAgaWYgKG5ld1NjaGVtYVR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhID0gZGF0YS5yZWR1Y2UoKG5ld1ZhbHVlLCBhVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IHNhbml0aXplRGF0YUZvck5ld1NjaGVtYSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIG5ld1NjaGVtYUl0ZW1zLCBvbGRTY2hlbWFJdGVtcywgYVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVZhbHVlICE9PSB1bmRlZmluZWQgJiYgKG1heEl0ZW1zIDwgMCB8fCBuZXdWYWx1ZS5sZW5ndGggPCBtYXhJdGVtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZS5wdXNoKGl0ZW1WYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhID0gbWF4SXRlbXMgPiAwICYmIGRhdGEubGVuZ3RoID4gbWF4SXRlbXMgPyBkYXRhLnNsaWNlKDAsIG1heEl0ZW1zKSA6IGRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBvbGRTY2hlbWFJdGVtcyA9PT0gJ2Jvb2xlYW4nICYmXG4gICAgICAgICAgICB0eXBlb2YgbmV3U2NoZW1hSXRlbXMgPT09ICdib29sZWFuJyAmJlxuICAgICAgICAgICAgb2xkU2NoZW1hSXRlbXMgPT09IG5ld1NjaGVtYUl0ZW1zKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGV5IGFyZSBib3RoIGJvb2xlYW5zIGFuZCBoYXZlIHRoZSBzYW1lIHZhbHVlIGp1c3QgcmV0dXJuIHRoZSBkYXRhIGFzIGlzIG90aGVyd2lzZSBmYWxsLXRocnUgdG8gdW5kZWZpbmVkXG4gICAgICAgICAgICBuZXdGb3JtRGF0YSA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWxzbyBwcm9iYWJseSB3YW50IHRvIGRlYWwgd2l0aCBgcHJlZml4SXRlbXNgIGFzIHR1cGxlcyB3aXRoIHRoZSBsYXRlc3QgMjAyMCBkcmFmdFxuICAgIH1cbiAgICByZXR1cm4gbmV3Rm9ybURhdGE7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWEuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCB7IEFMTF9PRl9LRVksIERFUEVOREVOQ0lFU19LRVksIElEX0tFWSwgSVRFTVNfS0VZLCBQUk9QRVJUSUVTX0tFWSwgUkVGX0tFWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi4vaXNPYmplY3QnO1xuaW1wb3J0IHJldHJpZXZlU2NoZW1hIGZyb20gJy4vcmV0cmlldmVTY2hlbWEnO1xuaW1wb3J0IGdldFNjaGVtYVR5cGUgZnJvbSAnLi4vZ2V0U2NoZW1hVHlwZSc7XG4vKiogQW4gaW50ZXJuYWwgaGVscGVyIHRoYXQgZ2VuZXJhdGVzIGFuIGBJZFNjaGVtYWAgb2JqZWN0IGZvciB0aGUgYHNjaGVtYWAsIHJlY3Vyc2l2ZWx5IHdpdGggcHJvdGVjdGlvbiBhZ2FpbnN0XG4gKiBpbmZpbml0ZSByZWN1cnNpb25cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgYElkU2NoZW1hYCBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gaWRQcmVmaXggLSBUaGUgcHJlZml4IHRvIHVzZSBmb3IgdGhlIGlkXG4gKiBAcGFyYW0gaWRTZXBhcmF0b3IgLSBUaGUgc2VwYXJhdG9yIHRvIHVzZSBmb3IgdGhlIHBhdGggc2VnbWVudHMgaW4gdGhlIGlkXG4gKiBAcGFyYW0gW2lkXSAtIFRoZSBiYXNlIGlkIGZvciB0aGUgc2NoZW1hXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbX3JlY3Vyc2VMaXN0PVtdXSAtIFRoZSBsaXN0IG9mIHJldHJpZXZlZCBzY2hlbWFzIGN1cnJlbnRseSBiZWluZyByZWN1cnNlZCwgdXNlZCB0byBwcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvblxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgXG4gKi9cbmZ1bmN0aW9uIHRvSWRTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBpZCwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIF9yZWN1cnNlTGlzdCA9IFtdLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGlmIChSRUZfS0VZIGluIHNjaGVtYSB8fCBERVBFTkRFTkNJRVNfS0VZIGluIHNjaGVtYSB8fCBBTExfT0ZfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCBfc2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIGNvbnN0IHNhbWVTY2hlbWFJbmRleCA9IF9yZWN1cnNlTGlzdC5maW5kSW5kZXgoKGl0ZW0pID0+IGlzRXF1YWwoaXRlbSwgX3NjaGVtYSkpO1xuICAgICAgICBpZiAoc2FtZVNjaGVtYUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvSWRTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIF9zY2hlbWEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgaWQsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBfcmVjdXJzZUxpc3QuY29uY2F0KF9zY2hlbWEpLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKElURU1TX0tFWSBpbiBzY2hlbWEgJiYgIWdldChzY2hlbWEsIFtJVEVNU19LRVksIFJFRl9LRVldKSkge1xuICAgICAgICByZXR1cm4gdG9JZFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgZ2V0KHNjaGVtYSwgSVRFTVNfS0VZKSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBpZCwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIF9yZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICBjb25zdCAkaWQgPSBpZCB8fCBpZFByZWZpeDtcbiAgICBjb25zdCBpZFNjaGVtYSA9IHsgJGlkIH07XG4gICAgaWYgKGdldFNjaGVtYVR5cGUoc2NoZW1hKSA9PT0gJ29iamVjdCcgJiYgUFJPUEVSVElFU19LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBnZXQoc2NoZW1hLCBbUFJPUEVSVElFU19LRVksIG5hbWVdKTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkSWQgPSBpZFNjaGVtYVtJRF9LRVldICsgaWRTZXBhcmF0b3IgKyBuYW1lO1xuICAgICAgICAgICAgaWRTY2hlbWFbbmFtZV0gPSB0b0lkU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBpc09iamVjdChmaWVsZCkgPyBmaWVsZCA6IHt9LCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIGZpZWxkSWQsIHJvb3RTY2hlbWEsIFxuICAgICAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGZvcm1EYXRhIGlzIG5vdCBhbiBvYmplY3QgLS0gdGhpcyBjYW4gaGFwcGVuIGlmIGFuXG4gICAgICAgICAgICAvLyBhcnJheSBpdGVtIGhhcyBqdXN0IGJlZW4gYWRkZWQsIGJ1dCBub3QgcG9wdWxhdGVkIHdpdGggZGF0YSB5ZXRcbiAgICAgICAgICAgIGdldChmb3JtRGF0YSwgW25hbWVdKSwgX3JlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkU2NoZW1hO1xufVxuLyoqIEdlbmVyYXRlcyBhbiBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgLCByZWN1cnNpdmVseVxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBgSWRTY2hlbWFgIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbaWRdIC0gVGhlIGJhc2UgaWQgZm9yIHRoZSBzY2hlbWFcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtpZFByZWZpeD0ncm9vdCddIC0gVGhlIHByZWZpeCB0byB1c2UgZm9yIHRoZSBpZFxuICogQHBhcmFtIFtpZFNlcGFyYXRvcj0nXyddIC0gVGhlIHNlcGFyYXRvciB0byB1c2UgZm9yIHRoZSBwYXRoIHNlZ21lbnRzIGluIHRoZSBpZFxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvSWRTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIGlkLCByb290U2NoZW1hLCBmb3JtRGF0YSwgaWRQcmVmaXggPSAncm9vdCcsIGlkU2VwYXJhdG9yID0gJ18nLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIHJldHVybiB0b0lkU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgaWQsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCB1bmRlZmluZWQsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvSWRTY2hlbWEuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoL3NldCc7XG5pbXBvcnQgeyBBTExfT0ZfS0VZLCBBTllfT0ZfS0VZLCBBRERJVElPTkFMX1BST1BFUlRJRVNfS0VZLCBERVBFTkRFTkNJRVNfS0VZLCBJVEVNU19LRVksIE5BTUVfS0VZLCBPTkVfT0ZfS0VZLCBQUk9QRVJUSUVTX0tFWSwgUkVGX0tFWSwgUkpTRl9BRERJVElPTkFMX1BST1BFUlRJRVNfRkxBRywgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEgZnJvbSAnLi4vZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSc7XG5pbXBvcnQgZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uIGZyb20gJy4vZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uJztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbi8qKiBBbiBpbnRlcm5hbCBoZWxwZXIgdGhhdCBnZW5lcmF0ZXMgYW4gYFBhdGhTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgLCByZWN1cnNpdmVseSB3aXRoIHByb3RlY3Rpb24gYWdhaW5zdFxuICogaW5maW5pdGUgcmVjdXJzaW9uXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGBQYXRoU2NoZW1hYCBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW25hbWU9JyddIC0gVGhlIGJhc2UgbmFtZSBmb3IgdGhlIHNjaGVtYVxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW19yZWN1cnNlTGlzdD1bXV0gLSBUaGUgbGlzdCBvZiByZXRyaWV2ZWQgc2NoZW1hcyBjdXJyZW50bHkgYmVpbmcgcmVjdXJzZWQsIHVzZWQgdG8gcHJldmVudCBpbmZpbml0ZSByZWN1cnNpb25cbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgYFBhdGhTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgXG4gKi9cbmZ1bmN0aW9uIHRvUGF0aFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hLCBuYW1lLCByb290U2NoZW1hLCBmb3JtRGF0YSwgX3JlY3Vyc2VMaXN0ID0gW10sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgaWYgKFJFRl9LRVkgaW4gc2NoZW1hIHx8IERFUEVOREVOQ0lFU19LRVkgaW4gc2NoZW1hIHx8IEFMTF9PRl9LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IF9zY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgY29uc3Qgc2FtZVNjaGVtYUluZGV4ID0gX3JlY3Vyc2VMaXN0LmZpbmRJbmRleCgoaXRlbSkgPT4gaXNFcXVhbChpdGVtLCBfc2NoZW1hKSk7XG4gICAgICAgIGlmIChzYW1lU2NoZW1hSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBfc2NoZW1hLCBuYW1lLCByb290U2NoZW1hLCBmb3JtRGF0YSwgX3JlY3Vyc2VMaXN0LmNvbmNhdChfc2NoZW1hKSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBwYXRoU2NoZW1hID0ge1xuICAgICAgICBbTkFNRV9LRVldOiBuYW1lLnJlcGxhY2UoL15cXC4vLCAnJyksXG4gICAgfTtcbiAgICBpZiAoT05FX09GX0tFWSBpbiBzY2hlbWEgfHwgQU5ZX09GX0tFWSBpbiBzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgeHh4T2YgPSBPTkVfT0ZfS0VZIGluIHNjaGVtYSA/IHNjaGVtYS5vbmVPZiA6IHNjaGVtYS5hbnlPZjtcbiAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEoc2NoZW1hKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCByb290U2NoZW1hLCBmb3JtRGF0YSwgeHh4T2YsIDAsIGRpc2NyaW1pbmF0b3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgY29uc3QgX3NjaGVtYSA9IHh4eE9mW2luZGV4XTtcbiAgICAgICAgcGF0aFNjaGVtYSA9IHtcbiAgICAgICAgICAgIC4uLnBhdGhTY2hlbWEsXG4gICAgICAgICAgICAuLi50b1BhdGhTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIF9zY2hlbWEsIG5hbWUsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBfcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKEFERElUSU9OQUxfUFJPUEVSVElFU19LRVkgaW4gc2NoZW1hICYmIHNjaGVtYVtBRERJVElPTkFMX1BST1BFUlRJRVNfS0VZXSAhPT0gZmFsc2UpIHtcbiAgICAgICAgc2V0KHBhdGhTY2hlbWEsIFJKU0ZfQURESVRJT05BTF9QUk9QRVJUSUVTX0ZMQUcsIHRydWUpO1xuICAgIH1cbiAgICBpZiAoSVRFTVNfS0VZIGluIHNjaGVtYSAmJiBBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICBjb25zdCB7IGl0ZW1zOiBzY2hlbWFJdGVtcywgYWRkaXRpb25hbEl0ZW1zOiBzY2hlbWFBZGRpdGlvbmFsSXRlbXMgfSA9IHNjaGVtYTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hSXRlbXMpKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5mb3JFYWNoKChlbGVtZW50LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYUl0ZW1zW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGhTY2hlbWFbaV0gPSB0b1BhdGhTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYUl0ZW1zW2ldLCBgJHtuYW1lfS4ke2l9YCwgcm9vdFNjaGVtYSwgZWxlbWVudCwgX3JlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjaGVtYUFkZGl0aW9uYWxJdGVtcykge1xuICAgICAgICAgICAgICAgICAgICBwYXRoU2NoZW1hW2ldID0gdG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWFBZGRpdGlvbmFsSXRlbXMsIGAke25hbWV9LiR7aX1gLCByb290U2NoZW1hLCBlbGVtZW50LCBfcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5hYmxlIHRvIGdlbmVyYXRlIHBhdGggc2NoZW1hIGZvciBcIiR7bmFtZX0uJHtpfVwiLiBObyBzY2hlbWEgZGVmaW5lZCBmb3IgaXRgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmZvckVhY2goKGVsZW1lbnQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXRoU2NoZW1hW2ldID0gdG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWFJdGVtcywgYCR7bmFtZX0uJHtpfWAsIHJvb3RTY2hlbWEsIGVsZW1lbnQsIF9yZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoUFJPUEVSVElFU19LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0KHNjaGVtYSwgW1BST1BFUlRJRVNfS0VZLCBwcm9wZXJ0eV0pO1xuICAgICAgICAgICAgcGF0aFNjaGVtYVtwcm9wZXJ0eV0gPSB0b1BhdGhTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIGZpZWxkLCBgJHtuYW1lfS4ke3Byb3BlcnR5fWAsIHJvb3RTY2hlbWEsIFxuICAgICAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGZvcm1EYXRhIGlzIG5vdCBhbiBvYmplY3QgLS0gdGhpcyBjYW4gaGFwcGVuIGlmIGFuXG4gICAgICAgICAgICAvLyBhcnJheSBpdGVtIGhhcyBqdXN0IGJlZW4gYWRkZWQsIGJ1dCBub3QgcG9wdWxhdGVkIHdpdGggZGF0YSB5ZXRcbiAgICAgICAgICAgIGdldChmb3JtRGF0YSwgW3Byb3BlcnR5XSksIF9yZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXRoU2NoZW1hO1xufVxuLyoqIEdlbmVyYXRlcyBhbiBgUGF0aFNjaGVtYWAgb2JqZWN0IGZvciB0aGUgYHNjaGVtYWAsIHJlY3Vyc2l2ZWx5XG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGBQYXRoU2NoZW1hYCBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW25hbWU9JyddIC0gVGhlIGJhc2UgbmFtZSBmb3IgdGhlIHNjaGVtYVxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b1BhdGhTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIG5hbWUgPSAnJywgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgcmV0dXJuIHRvUGF0aFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hLCBuYW1lLCByb290U2NoZW1hLCBmb3JtRGF0YSwgdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b1BhdGhTY2hlbWEuanMubWFwIiwiaW1wb3J0IGRlZXBFcXVhbHMgZnJvbSAnLi9kZWVwRXF1YWxzJztcbmltcG9ydCB7IGdldERlZmF1bHRGb3JtU3RhdGUsIGdldERpc3BsYXlMYWJlbCwgZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uLCBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uLCBnZXRNYXRjaGluZ09wdGlvbiwgaXNGaWxlc0FycmF5LCBpc011bHRpU2VsZWN0LCBpc1NlbGVjdCwgbWVyZ2VWYWxpZGF0aW9uRGF0YSwgcmV0cmlldmVTY2hlbWEsIHNhbml0aXplRGF0YUZvck5ld1NjaGVtYSwgdG9JZFNjaGVtYSwgdG9QYXRoU2NoZW1hLCB9IGZyb20gJy4vc2NoZW1hJztcbi8qKiBUaGUgYFNjaGVtYVV0aWxzYCBjbGFzcyBwcm92aWRlcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBwdWJsaWNseSBleHBvcnRlZCBBUElzIGluIHRoZSBgdXRpbHMvc2NoZW1hYCBkaXJlY3Rvcnkgc3VjaFxuICogdGhhdCBvbmUgZG9lcyBub3QgaGF2ZSB0byBleHBsaWNpdGx5IHBhc3MgdGhlIGB2YWxpZGF0b3JgLCBgcm9vdFNjaGVtYWAsIGBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yYCBvclxuICogYGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mYCB0byBlYWNoIG1ldGhvZC4gU2luY2UgdGhlc2UgZ2VuZXJhbGx5IGRvIG5vdCBjaGFuZ2UgYWNyb3NzIGEgYEZvcm1gLCB0aGlzIGFsbG93cyBmb3JcbiAqIHByb3ZpZGluZyBhIHNpbXBsaWZpZWQgc2V0IG9mIEFQSXMgdG8gdGhlIGBAcmpzZi9jb3JlYCBjb21wb25lbnRzIGFuZCB0aGUgdmFyaW91cyB0aGVtZXMgYXMgd2VsbC4gVGhpcyBjbGFzc1xuICogaW1wbGVtZW50cyB0aGUgYFNjaGVtYVV0aWxzVHlwZWAgaW50ZXJmYWNlLlxuICovXG5jbGFzcyBTY2hlbWFVdGlscyB7XG4gICAgLyoqIENvbnN0cnVjdHMgdGhlIGBTY2hlbWFVdGlsc2AgaW5zdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gYHZhbGlkYXRvcmAgYW5kIGByb290U2NoZW1hYCBzdG9yZWQgYXMgaW5zdGFuY2UgdmFyaWFibGVzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAgICAgKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICAgICAqIEBwYXJhbSBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yIC0gQ29uZmlndXJhdGlvbiBmbGFncyB0byBhbGxvdyB1c2VycyB0byBvdmVycmlkZSBkZWZhdWx0IGZvcm0gc3RhdGUgYmVoYXZpb3JcbiAgICAgKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgICAgIHRoaXMucm9vdFNjaGVtYSA9IHJvb3RTY2hlbWE7XG4gICAgICAgIHRoaXMudmFsaWRhdG9yID0gdmFsaWRhdG9yO1xuICAgICAgICB0aGlzLmV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yO1xuICAgICAgICB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mID0gZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2Y7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW4gdGhlIGBTY2hlbWFVdGlsc1R5cGVgXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBgVmFsaWRhdG9yVHlwZWBcbiAgICAgKi9cbiAgICBnZXRWYWxpZGF0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRvcjtcbiAgICB9XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBlaXRoZXIgdGhlIGB2YWxpZGF0b3JgIGFuZCBgcm9vdFNjaGVtYWAgZGlmZmVyIGZyb20gdGhlIG9uZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2Ugb2ZcbiAgICAgKiB0aGUgYFNjaGVtYVV0aWxzVHlwZWAuIElmIGVpdGhlciBgdmFsaWRhdG9yYCBvciBgcm9vdFNjaGVtYWAgYXJlIGZhbHN5LCB0aGVuIHJldHVybiBmYWxzZSB0byBwcmV2ZW50IHRoZSBjcmVhdGlvblxuICAgICAqIG9mIGEgbmV3IGBTY2hlbWFVdGlsc1R5cGVgIHdpdGggaW5jb21wbGV0ZSBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBjdXJyZW50IG9uZVxuICAgICAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBjdXJyZW50IG9uZVxuICAgICAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcl0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QsIGlmIHByb3ZpZGVkLCBhbGxvd3MgdXNlcnMgdG8gb3ZlcnJpZGUgZGVmYXVsdCBmb3JtIHN0YXRlIGJlaGF2aW9yXG4gICAgICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBgU2NoZW1hVXRpbHNUeXBlYCBkaWZmZXJzIGZyb20gdGhlIGdpdmVuIGB2YWxpZGF0b3JgIG9yIGByb290U2NoZW1hYFxuICAgICAqL1xuICAgIGRvZXNTY2hlbWFVdGlsc0RpZmZlcih2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSB7fSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICAgICAgaWYgKCF2YWxpZGF0b3IgfHwgIXJvb3RTY2hlbWEpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRoaXMudmFsaWRhdG9yICE9PSB2YWxpZGF0b3IgfHxcbiAgICAgICAgICAgICFkZWVwRXF1YWxzKHRoaXMucm9vdFNjaGVtYSwgcm9vdFNjaGVtYSkgfHxcbiAgICAgICAgICAgICFkZWVwRXF1YWxzKHRoaXMuZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcikgfHxcbiAgICAgICAgICAgIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YgIT09IGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgdGhlIHN1cGVyc2V0IG9mIGBmb3JtRGF0YWAgdGhhdCBpbmNsdWRlcyB0aGUgZ2l2ZW4gc2V0IHVwZGF0ZWQgdG8gaW5jbHVkZSBhbnkgbWlzc2luZyBmaWVsZHMgdGhhdCBoYXZlXG4gICAgICogY29tcHV0ZWQgdG8gaGF2ZSBkZWZhdWx0cyBwcm92aWRlZCBpbiB0aGUgYHNjaGVtYWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRlZmF1bHQgc3RhdGUgaXMgZGVzaXJlZFxuICAgICAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgb250byB3aGljaCB0byBwcm92aWRlIGFueSBtaXNzaW5nIGRlZmF1bHRzXG4gICAgICogQHBhcmFtIFtpbmNsdWRlVW5kZWZpbmVkVmFsdWVzPWZhbHNlXSAtIE9wdGlvbmFsIGZsYWcsIGlmIHRydWUsIGNhdXNlIHVuZGVmaW5lZCB2YWx1ZXMgdG8gYmUgYWRkZWQgYXMgZGVmYXVsdHMuXG4gICAgICogICAgICAgICAgSWYgXCJleGNsdWRlT2JqZWN0Q2hpbGRyZW5cIiwgcGFzcyBgaW5jbHVkZVVuZGVmaW5lZFZhbHVlc2AgYXMgZmFsc2Ugd2hlbiBjb21wdXRpbmcgZGVmYXVsdHMgZm9yIGFueSBuZXN0ZWRcbiAgICAgKiAgICAgICAgICBvYmplY3QgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyAtIFRoZSByZXN1bHRpbmcgYGZvcm1EYXRhYCB3aXRoIGFsbCB0aGUgZGVmYXVsdHMgcHJvdmlkZWRcbiAgICAgKi9cbiAgICBnZXREZWZhdWx0Rm9ybVN0YXRlKHNjaGVtYSwgZm9ybURhdGEsIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZ2V0RGVmYXVsdEZvcm1TdGF0ZSh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCBmb3JtRGF0YSwgdGhpcy5yb290U2NoZW1hLCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzLCB0aGlzLmV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb21iaW5hdGlvbiBvZiBgc2NoZW1hYCBhbmQgYHVpU2NoZW1hYCBwcm9wZXJ0aWVzIGluZGljYXRlcyB0aGF0IHRoZSBsYWJlbCBmb3IgdGhlIGBzY2hlbWFgXG4gICAgICogc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBhIFVJLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkaXNwbGF5IGxhYmVsIGZsYWcgaXMgZGVzaXJlZFxuICAgICAqIEBwYXJhbSBbdWlTY2hlbWFdIC0gVGhlIFVJIHNjaGVtYSBmcm9tIHdoaWNoIHRvIGRlcml2ZSBwb3RlbnRpYWxseSBkaXNwbGF5YWJsZSBpbmZvcm1hdGlvblxuICAgICAqIEBwYXJhbSBbZ2xvYmFsT3B0aW9ucz17fV0gLSBUaGUgb3B0aW9uYWwgR2xvYmFsIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGdldCBhbnkgZmFsbGJhY2sgYHh4eGAgb3B0aW9uc1xuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgbGFiZWwgc2hvdWxkIGJlIGRpc3BsYXllZCBvciBmYWxzZSBpZiBpdCBzaG91bGQgbm90XG4gICAgICovXG4gICAgZ2V0RGlzcGxheUxhYmVsKHNjaGVtYSwgdWlTY2hlbWEsIGdsb2JhbE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIGdldERpc3BsYXlMYWJlbCh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCB1aVNjaGVtYSwgdGhpcy5yb290U2NoZW1hLCBnbG9iYWxPcHRpb25zLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIERldGVybWluZXMgd2hpY2ggb2YgdGhlIGdpdmVuIGBvcHRpb25zYCBwcm92aWRlZCBtb3N0IGNsb3NlbHkgbWF0Y2hlcyB0aGUgYGZvcm1EYXRhYC5cbiAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgb3B0aW9uIHRoYXQgaXMgdmFsaWQgYW5kIGlzIHRoZSBjbG9zZXN0IG1hdGNoLCBvciAwIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuICAgICAqXG4gICAgICogVGhlIGNsb3Nlc3QgbWF0Y2ggaXMgZGV0ZXJtaW5lZCB1c2luZyB0aGUgbnVtYmVyIG9mIG1hdGNoaW5nIHByb3BlcnRpZXMsIGFuZCBtb3JlIGhlYXZpbHkgZmF2b3JzIG9wdGlvbnMgd2l0aFxuICAgICAqIG1hdGNoaW5nIHJlYWRPbmx5LCBkZWZhdWx0LCBvciBjb25zdCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGZyb21cbiAgICAgKiBAcGFyYW0gW3NlbGVjdGVkT3B0aW9uXSAtIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbiwgZGVmYXVsdGVkIHRvIC0xIGlmIG5vdCBzcGVjaWZpZWRcbiAgICAgKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gICAgICogICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIG9wdGlvbiBpcyBzZWxlY3RlZFxuICAgICAqIEByZXR1cm5zIC0gVGhlIGluZGV4IG9mIHRoZSBvcHRpb24gdGhhdCBpcyB0aGUgY2xvc2VzdCBtYXRjaCB0byB0aGUgYGZvcm1EYXRhYCBvciB0aGUgYHNlbGVjdGVkT3B0aW9uYCBpZiBubyBtYXRjaFxuICAgICAqL1xuICAgIGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbihmb3JtRGF0YSwgb3B0aW9ucywgc2VsZWN0ZWRPcHRpb24sIGRpc2NyaW1pbmF0b3JGaWVsZCkge1xuICAgICAgICByZXR1cm4gZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uKHRoaXMudmFsaWRhdG9yLCB0aGlzLnJvb3RTY2hlbWEsIGZvcm1EYXRhLCBvcHRpb25zLCBzZWxlY3RlZE9wdGlvbiwgZGlzY3JpbWluYXRvckZpZWxkLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIEdpdmVuIHRoZSBgZm9ybURhdGFgIGFuZCBsaXN0IG9mIGBvcHRpb25zYCwgYXR0ZW1wdHMgdG8gZmluZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9wdGlvbiB0aGF0IG1hdGNoZXMgdGhlIGRhdGEuXG4gICAgICogQWx3YXlzIHJldHVybnMgdGhlIGZpcnN0IG9wdGlvbiBpZiB0aGVyZSBpcyBub3RoaW5nIHRoYXQgbWF0Y2hlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHVzZWQgdG8gZmlndXJlIG91dCBhIG1hdGNoXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRvIGZpbmQgYSBtYXRjaGluZyBvcHRpb25zIGZyb21cbiAgICAgKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gICAgICogICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIG9wdGlvbiBpcyBzZWxlY3RlZFxuICAgICAqIEByZXR1cm5zIC0gVGhlIGZpcnN0aW5kZXggb2YgdGhlIG1hdGNoZWQgb3B0aW9uIG9yIDAgaWYgbm9uZSBpcyBhdmFpbGFibGVcbiAgICAgKi9cbiAgICBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKGZvcm1EYXRhLCBvcHRpb25zLCBkaXNjcmltaW5hdG9yRmllbGQpIHtcbiAgICAgICAgcmV0dXJuIGdldEZpcnN0TWF0Y2hpbmdPcHRpb24odGhpcy52YWxpZGF0b3IsIGZvcm1EYXRhLCBvcHRpb25zLCB0aGlzLnJvb3RTY2hlbWEsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgfVxuICAgIC8qKiBHaXZlbiB0aGUgYGZvcm1EYXRhYCBhbmQgbGlzdCBvZiBgb3B0aW9uc2AsIGF0dGVtcHRzIHRvIGZpbmQgdGhlIGluZGV4IG9mIHRoZSBvcHRpb24gdGhhdCBiZXN0IG1hdGNoZXMgdGhlIGRhdGEuXG4gICAgICogRGVwcmVjYXRlZCwgdXNlIGBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKClgIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCBvbnRvIHdoaWNoIHRvIHByb3ZpZGUgYW55IG1pc3NpbmcgZGVmYXVsdHNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgdG8gZmluZCBhIG1hdGNoaW5nIG9wdGlvbnMgZnJvbVxuICAgICAqIEBwYXJhbSBbZGlzY3JpbWluYXRvckZpZWxkXSAtIFRoZSBvcHRpb25hbCBuYW1lIG9mIHRoZSBmaWVsZCB3aXRoaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHVzZWQgdG9cbiAgICAgKiAgICAgICAgICBkZXRlcm1pbmUgd2hpY2ggb3B0aW9uIGlzIHNlbGVjdGVkXG4gICAgICogQHJldHVybnMgLSBUaGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgb3B0aW9uIG9yIDAgaWYgbm9uZSBpcyBhdmFpbGFibGVcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIGdldE1hdGNoaW5nT3B0aW9uKGZvcm1EYXRhLCBvcHRpb25zLCBkaXNjcmltaW5hdG9yRmllbGQpIHtcbiAgICAgICAgcmV0dXJuIGdldE1hdGNoaW5nT3B0aW9uKHRoaXMudmFsaWRhdG9yLCBmb3JtRGF0YSwgb3B0aW9ucywgdGhpcy5yb290U2NoZW1hLCBkaXNjcmltaW5hdG9yRmllbGQpO1xuICAgIH1cbiAgICAvKiogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgYHNjaGVtYWAgYW5kIGB1aVNjaGVtYWAgY29tYmluYXRpb24gcmVwcmVzZW50cyBhbiBhcnJheSBvZiBmaWxlc1xuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIGNoZWNrIGZvciBhcnJheSBvZiBmaWxlcyBmbGFnIGlzIGRlc2lyZWRcbiAgICAgKiBAcGFyYW0gW3VpU2NoZW1hXSAtIFRoZSBVSSBzY2hlbWEgZnJvbSB3aGljaCB0byBjaGVjayB0aGUgd2lkZ2V0XG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHNjaGVtYS91aVNjaGVtYSBjb250YWlucyBhbiBhcnJheSBvZiBmaWxlcywgb3RoZXJ3aXNlIGZhbHNlXG4gICAgICovXG4gICAgaXNGaWxlc0FycmF5KHNjaGVtYSwgdWlTY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIGlzRmlsZXNBcnJheSh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCB1aVNjaGVtYSwgdGhpcy5yb290U2NoZW1hLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGBzY2hlbWFgIGNvbWJpbmF0aW9uIHJlcHJlc2VudHMgYSBtdWx0aS1zZWxlY3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCBjaGVjayBmb3IgYSBtdWx0aS1zZWxlY3QgZmxhZyBpcyBkZXNpcmVkXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHNjaGVtYSBjb250YWlucyBhIG11bHRpLXNlbGVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgICovXG4gICAgaXNNdWx0aVNlbGVjdChzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIGlzTXVsdGlTZWxlY3QodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgdGhpcy5yb290U2NoZW1hLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGBzY2hlbWFgIGNvbWJpbmF0aW9uIHJlcHJlc2VudHMgYSBzZWxlY3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCBjaGVjayBmb3IgYSBzZWxlY3QgZmxhZyBpcyBkZXNpcmVkXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHNjaGVtYSBjb250YWlucyBhIHNlbGVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgICovXG4gICAgaXNTZWxlY3Qoc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBpc1NlbGVjdCh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCB0aGlzLnJvb3RTY2hlbWEsIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICAvKiogTWVyZ2VzIHRoZSBlcnJvcnMgaW4gYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgaW50byB0aGUgZXhpc3RpbmcgYHZhbGlkYXRpb25EYXRhYCBieSBjb21iaW5pbmcgdGhlIGhpZXJhcmNoaWVzIGluXG4gICAgICogdGhlIHR3byBgRXJyb3JTY2hlbWFgcyBhbmQgdGhlbiBhcHBlbmRpbmcgdGhlIGVycm9yIGxpc3QgZnJvbSB0aGUgYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgb2J0YWluZWQgYnkgY2FsbGluZ1xuICAgICAqIGBnZXRWYWxpZGF0b3IoKS50b0Vycm9yTGlzdCgpYCBvbnRvIHRoZSBgZXJyb3JzYCBpbiB0aGUgYHZhbGlkYXRpb25EYXRhYC4gSWYgbm8gYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgaXMgcGFzc2VkLFxuICAgICAqIHRoZW4gYHZhbGlkYXRpb25EYXRhYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uRGF0YSAtIFRoZSBjdXJyZW50IGBWYWxpZGF0aW9uRGF0YWAgaW50byB3aGljaCB0byBtZXJnZSB0aGUgYWRkaXRpb25hbCBlcnJvcnNcbiAgICAgKiBAcGFyYW0gW2FkZGl0aW9uYWxFcnJvclNjaGVtYV0gLSBUaGUgYWRkaXRpb25hbCBzZXQgb2YgZXJyb3JzXG4gICAgICogQHJldHVybnMgLSBUaGUgYHZhbGlkYXRpb25EYXRhYCB3aXRoIHRoZSBhZGRpdGlvbmFsIGVycm9ycyBmcm9tIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIG1lcmdlZCBpbnRvIGl0LCBpZiBwcm92aWRlZC5cbiAgICAgKiBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgYHZhbGlkYXRpb25EYXRhTWVyZ2UoKWAgZnVuY3Rpb24gZXhwb3J0ZWQgZnJvbSBgQHJqc2YvdXRpbHNgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24gd2lsbCBiZVxuICAgICAqICAgICAgICByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuXG4gICAgICovXG4gICAgbWVyZ2VWYWxpZGF0aW9uRGF0YSh2YWxpZGF0aW9uRGF0YSwgYWRkaXRpb25hbEVycm9yU2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBtZXJnZVZhbGlkYXRpb25EYXRhKHRoaXMudmFsaWRhdG9yLCB2YWxpZGF0aW9uRGF0YSwgYWRkaXRpb25hbEVycm9yU2NoZW1hKTtcbiAgICB9XG4gICAgLyoqIFJldHJpZXZlcyBhbiBleHBhbmRlZCBzY2hlbWEgdGhhdCBoYXMgaGFkIGFsbCBvZiBpdHMgY29uZGl0aW9ucywgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCByZWZlcmVuY2VzIGFuZFxuICAgICAqIGRlcGVuZGVuY2llcyByZXNvbHZlZCBhbmQgbWVyZ2VkIGludG8gdGhlIGBzY2hlbWFgIGdpdmVuIGEgYHJhd0Zvcm1EYXRhYCB0aGF0IGlzIHVzZWQgdG8gZG8gdGhlIHBvdGVudGlhbGx5XG4gICAgICogcmVjdXJzaXZlIHJlc29sdXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmV0cmlldmluZyBhIHNjaGVtYSBpcyBkZXNpcmVkXG4gICAgICogQHBhcmFtIFtyYXdGb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICAgICAqIEByZXR1cm5zIC0gVGhlIHNjaGVtYSBoYXZpbmcgaXRzIGNvbmRpdGlvbnMsIGFkZGl0aW9uYWwgcHJvcGVydGllcywgcmVmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzIHJlc29sdmVkXG4gICAgICovXG4gICAgcmV0cmlldmVTY2hlbWEoc2NoZW1hLCByYXdGb3JtRGF0YSkge1xuICAgICAgICByZXR1cm4gcmV0cmlldmVTY2hlbWEodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgdGhpcy5yb290U2NoZW1hLCByYXdGb3JtRGF0YSwgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBTYW5pdGl6ZSB0aGUgYGRhdGFgIGFzc29jaWF0ZWQgd2l0aCB0aGUgYG9sZFNjaGVtYWAgc28gaXQgaXMgY29uc2lkZXJlZCBhcHByb3ByaWF0ZSBmb3IgdGhlIGBuZXdTY2hlbWFgLiBJZiB0aGVcbiAgICAgKiBuZXcgc2NoZW1hIGRvZXMgbm90IGNvbnRhaW4gYW55IHByb3BlcnRpZXMsIHRoZW4gYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQgdG8gY2xlYXIgYWxsIHRoZSBmb3JtIGRhdGEuIER1ZSB0byB0aGVcbiAgICAgKiBuYXR1cmUgb2Ygc2NoZW1hcywgdGhpcyBzYW5pdGl6YXRpb24gaGFwcGVucyByZWN1cnNpdmVseSBmb3IgbmVzdGVkIG9iamVjdHMgb2YgZGF0YS4gQWxzbywgYW55IHByb3BlcnRpZXMgaW4gdGhlXG4gICAgICogb2xkIHNjaGVtYXMgdGhhdCBhcmUgbm9uLWV4aXN0ZW50IGluIHRoZSBuZXcgc2NoZW1hIGFyZSBzZXQgdG8gYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gW25ld1NjaGVtYV0gLSBUaGUgbmV3IHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRhdGEgaXMgYmVpbmcgc2FuaXRpemVkXG4gICAgICogQHBhcmFtIFtvbGRTY2hlbWFdIC0gVGhlIG9sZCBzY2hlbWEgZnJvbSB3aGljaCB0aGUgZGF0YSBvcmlnaW5hdGVkXG4gICAgICogQHBhcmFtIFtkYXRhPXt9XSAtIFRoZSBmb3JtIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBzY2hlbWEsIGRlZmF1bHRpbmcgdG8gYW4gZW1wdHkgb2JqZWN0IHdoZW4gdW5kZWZpbmVkXG4gICAgICogQHJldHVybnMgLSBUaGUgbmV3IGZvcm0gZGF0YSwgd2l0aCBhbGwgdGhlIGZpZWxkcyB1bmlxdWVseSBhc3NvY2lhdGVkIHdpdGggdGhlIG9sZCBzY2hlbWEgc2V0XG4gICAgICogICAgICB0byBgdW5kZWZpbmVkYC4gV2lsbCByZXR1cm4gYHVuZGVmaW5lZGAgaWYgdGhlIG5ldyBzY2hlbWEgaXMgbm90IGFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMuXG4gICAgICovXG4gICAgc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hKG5ld1NjaGVtYSwgb2xkU2NoZW1hLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBzYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWEodGhpcy52YWxpZGF0b3IsIHRoaXMucm9vdFNjaGVtYSwgbmV3U2NoZW1hLCBvbGRTY2hlbWEsIGRhdGEsIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICAvKiogR2VuZXJhdGVzIGFuIGBJZFNjaGVtYWAgb2JqZWN0IGZvciB0aGUgYHNjaGVtYWAsIHJlY3Vyc2l2ZWx5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRpc3BsYXkgbGFiZWwgZmxhZyBpcyBkZXNpcmVkXG4gICAgICogQHBhcmFtIFtpZF0gLSBUaGUgYmFzZSBpZCBmb3IgdGhlIHNjaGVtYVxuICAgICAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgb250byB3aGljaCB0byBwcm92aWRlIGFueSBtaXNzaW5nIGRlZmF1bHRzXG4gICAgICogQHBhcmFtIFtpZFByZWZpeD0ncm9vdCddIC0gVGhlIHByZWZpeCB0byB1c2UgZm9yIHRoZSBpZFxuICAgICAqIEBwYXJhbSBbaWRTZXBhcmF0b3I9J18nXSAtIFRoZSBzZXBhcmF0b3IgdG8gdXNlIGZvciB0aGUgcGF0aCBzZWdtZW50cyBpbiB0aGUgaWRcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgXG4gICAgICovXG4gICAgdG9JZFNjaGVtYShzY2hlbWEsIGlkLCBmb3JtRGF0YSwgaWRQcmVmaXggPSAncm9vdCcsIGlkU2VwYXJhdG9yID0gJ18nKSB7XG4gICAgICAgIHJldHVybiB0b0lkU2NoZW1hKHRoaXMudmFsaWRhdG9yLCBzY2hlbWEsIGlkLCB0aGlzLnJvb3RTY2hlbWEsIGZvcm1EYXRhLCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICAvKiogR2VuZXJhdGVzIGFuIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYCwgcmVjdXJzaXZlbHlcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGlzcGxheSBsYWJlbCBmbGFnIGlzIGRlc2lyZWRcbiAgICAgKiBAcGFyYW0gW25hbWVdIC0gVGhlIGJhc2UgbmFtZSBmb3IgdGhlIHNjaGVtYVxuICAgICAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgb250byB3aGljaCB0byBwcm92aWRlIGFueSBtaXNzaW5nIGRlZmF1bHRzXG4gICAgICogQHJldHVybnMgLSBUaGUgYFBhdGhTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgXG4gICAgICovXG4gICAgdG9QYXRoU2NoZW1hKHNjaGVtYSwgbmFtZSwgZm9ybURhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRvUGF0aFNjaGVtYSh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCBuYW1lLCB0aGlzLnJvb3RTY2hlbWEsIGZvcm1EYXRhLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG59XG4vKiogQ3JlYXRlcyBhIGBTY2hlbWFVdGlsc1R5cGVgIGludGVyZmFjZSB0aGF0IGlzIGJhc2VkIGFyb3VuZCB0aGUgZ2l2ZW4gYHZhbGlkYXRvcmAgYW5kIGByb290U2NoZW1hYCBwYXJhbWV0ZXJzLiBUaGVcbiAqIHJlc3VsdGluZyBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gd2lsbCBmb3J3YXJkIHRoZSBgdmFsaWRhdG9yYCBhbmQgYHJvb3RTY2hlbWFgIHRvIGFsbCB0aGUgd3JhcHBlZCBBUElzLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcl0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QsIGlmIHByb3ZpZGVkLCBhbGxvd3MgdXNlcnMgdG8gb3ZlcnJpZGUgZGVmYXVsdCBmb3JtIHN0YXRlIGJlaGF2aW9yXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgYSBgU2NoZW1hVXRpbHNUeXBlYCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU2NoZW1hVXRpbHModmFsaWRhdG9yLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0ge30sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgcmV0dXJuIG5ldyBTY2hlbWFVdGlscyh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZVNjaGVtYVV0aWxzLmpzLm1hcCIsIi8qKiBHaXZlbiB0aGUgYEZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTCgpYCBiYXNlZCBgZGF0YVVSSWAgZXh0cmFjdHMgdGhhdCBkYXRhIGludG8gYW4gYWN0dWFsIEJsb2IgYWxvbmcgd2l0aCB0aGUgbmFtZVxuICogb2YgdGhhdCBCbG9iIGlmIHByb3ZpZGVkIGluIHRoZSBVUkwuIElmIG5vIG5hbWUgaXMgcHJvdmlkZWQsIHRoZW4gdGhlIG5hbWUgZmFsbHMgYmFjayB0byBgdW5rbm93bmAuXG4gKlxuICogQHBhcmFtIGRhdGFVUkkgLSBUaGUgYERhdGFVcmxgIHBvdGVudGlhbGx5IGNvbnRhaW5pbmcgbmFtZSBhbmQgcmF3IGRhdGEgdG8gYmUgY29udmVydGVkIHRvIGEgQmxvYlxuICogQHJldHVybnMgLSBhbiBvYmplY3QgY29udGFpbmluZyBhIEJsb2IgYW5kIGl0cyBuYW1lLCBleHRyYWN0ZWQgZnJvbSB0aGUgVVJJXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRhdGFVUkl0b0Jsb2IoZGF0YVVSSUxpa2UpIHtcbiAgICB2YXIgX2E7XG4gICAgLy8gY2hlY2sgaWYgaXMgZGF0YVVSSVxuICAgIGlmIChkYXRhVVJJTGlrZS5pbmRleE9mKCdkYXRhOicpID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbGUgaXMgaW52YWxpZDogVVJJIG11c3QgYmUgYSBkYXRhVVJJJyk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGFVUkkgPSBkYXRhVVJJTGlrZS5zbGljZSg1KTtcbiAgICAvLyBzcGxpdCB0aGUgZGF0YVVSSSBpbnRvIG1lZGlhIGFuZCBiYXNlNjQsIHdpdGggdGhlIGJhc2U2NCBzaWduYXR1cmVcbiAgICBjb25zdCBzcGxpdHRlZCA9IGRhdGFVUkkuc3BsaXQoJztiYXNlNjQsJyk7XG4gICAgLy8gaWYgdGhlIGJhc2U2NCBzaWduYXR1cmUgaXMgbm90IHByZXNlbnQsIHRoZSBsYXR0ZXIgcGFydCB3aWxsIGJlY29tZSBlbXB0eVxuICAgIGlmIChzcGxpdHRlZC5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIGludmFsaWQ6IGRhdGFVUkkgbXVzdCBiZSBiYXNlNjQnKTtcbiAgICB9XG4gICAgLy8gZXh0cmFjdCB0aGUgbWltZSB0eXBlLCBtZWRpYSBwYXJhbWV0ZXJzIGluY2x1ZGluZyB0aGUgbmFtZSwgYW5kIHRoZSBiYXNlNjQgc3RyaW5nXG4gICAgY29uc3QgW21lZGlhLCBiYXNlNjRdID0gc3BsaXR0ZWQ7XG4gICAgY29uc3QgW21pbWUsIC4uLm1lZGlhcGFyYW1zXSA9IG1lZGlhLnNwbGl0KCc7Jyk7XG4gICAgY29uc3QgdHlwZSA9IG1pbWUgfHwgJyc7XG4gICAgLy8gZXh0cmFjdCB0aGUgbmFtZSBmcm9tIHRoZSBwYXJhbWV0ZXJzXG4gICAgY29uc3QgbmFtZSA9IGRlY29kZVVSSShcbiAgICAvLyBwYXJzZSB0aGUgcGFyYW1ldGVycyBpbnRvIGtleS12YWx1ZSBwYWlycywgZmluZCBhIGtleSwgYW5kIGV4dHJhY3QgYSB2YWx1ZVxuICAgIC8vIGlmIG5vIGtleSBpcyBmb3VuZCwgdGhlbiB0aGUgbmFtZSBpcyB1bmtub3duXG4gICAgKChfYSA9IG1lZGlhcGFyYW1zLm1hcCgocGFyYW0pID0+IHBhcmFtLnNwbGl0KCc9JykpLmZpbmQoKFtrZXldKSA9PiBrZXkgPT09ICduYW1lJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVsxXSkgfHwgJ3Vua25vd24nKTtcbiAgICAvLyBCdWlsdCB0aGUgVWludDhBcnJheSBCbG9iIHBhcmFtZXRlciBmcm9tIHRoZSBiYXNlNjQgc3RyaW5nLlxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJpbmFyeSA9IGF0b2IoYmFzZTY0KTtcbiAgICAgICAgY29uc3QgYXJyYXkgPSBuZXcgQXJyYXkoYmluYXJ5Lmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmluYXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcnJheVtpXSA9IGJpbmFyeS5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIENyZWF0ZSB0aGUgYmxvYiBvYmplY3RcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyB3aW5kb3cuQmxvYihbbmV3IFVpbnQ4QXJyYXkoYXJyYXkpXSwgeyB0eXBlIH0pO1xuICAgICAgICByZXR1cm4geyBibG9iLCBuYW1lIH07XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbGUgaXMgaW52YWxpZDogJyArIGVycm9yLm1lc3NhZ2UpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGFVUkl0b0Jsb2IuanMubWFwIiwiLyoqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGBudW1gIHRoYXQgaXMgcGFkZGVkIHdpdGggbGVhZGluZyBcIjBcInMgaWYgbmVjZXNzYXJ5XG4gKlxuICogQHBhcmFtIG51bSAtIFRoZSBudW1iZXIgdG8gcGFkXG4gKiBAcGFyYW0gd2lkdGggLSBUaGUgd2lkdGggb2YgdGhlIHN0cmluZyBhdCB3aGljaCBubyBsZWFkIHBhZGRpbmcgaXMgbmVjZXNzYXJ5XG4gKiBAcmV0dXJucyAtIFRoZSBudW1iZXIgY29udmVydGVkIHRvIGEgc3RyaW5nIHdpdGggbGVhZGluZyB6ZXJvIHBhZGRpbmcgaWYgdGhlIG51bWJlciBvZiBkaWdpdHMgaXMgbGVzcyB0aGFuIGB3aWR0aGBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFkKG51bSwgd2lkdGgpIHtcbiAgICBsZXQgcyA9IFN0cmluZyhudW0pO1xuICAgIHdoaWxlIChzLmxlbmd0aCA8IHdpZHRoKSB7XG4gICAgICAgIHMgPSAnMCcgKyBzO1xuICAgIH1cbiAgICByZXR1cm4gcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhZC5qcy5tYXAiLCJpbXBvcnQgcGFkIGZyb20gJy4vcGFkJztcbi8qKiBSZXR1cm5zIGEgbGlzdCBvZiBvcHRpb25zIGZvciBhIGRhdGUgcmFuZ2UgYmV0d2VlbiBgc3RhcnRgIGFuZCBgc3RvcGAuIElmIHRoZSBzdGFydCBkYXRlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZW5kXG4gKiBkYXRlLCB0aGVuIHRoZSBkYXRlIHJhbmdlIGlzIHJldmVyc2VkLiBJZiBgc3RhcnRgIGFuZCBgc3RvcGAgYXJlIG5lZ2F0aXZlIG51bWJlcnMgKG9yIHplcm8pLCB0aGVuIHRoZXkgd2lsbCBiZVxuICogdHJlYXRlZCBhcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB5ZWFyLlxuICpcbiAqIEBwYXJhbSBzdGFydCAtIFRoZSBzdGFydGluZyBwb2ludCBvZiB0aGUgZGF0ZSByYW5nZVxuICogQHBhcmFtIHN0b3AgLSBUaGUgZW5kaW5nIHBvaW50IG9mIHRoZSBkYXRlIHJhbmdlXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIEVudW1PcHRpb25zVHlwZSBmb3IgdGhlIGRhdGUgcmFuZ2UgYmV0d2VlbiBgc3RhcnRgIGFuZCBgc3RvcGBcbiAqIEB0aHJvd3MgLSBFcnJvciB3aGVuIGBzdGFydGAgYW5kIGBzdG9wYCBhcmVuJ3QgYm90aCA8PSAwIG9yID4gMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkYXRlUmFuZ2VPcHRpb25zKHN0YXJ0LCBzdG9wKSB7XG4gICAgaWYgKHN0YXJ0IDw9IDAgJiYgc3RvcCA8PSAwKSB7XG4gICAgICAgIHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgc3RhcnQ7XG4gICAgICAgIHN0b3AgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyBzdG9wO1xuICAgIH1cbiAgICBlbHNlIGlmIChzdGFydCA8IDAgfHwgc3RvcCA8IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCb3RoIHN0YXJ0ICgke3N0YXJ0fSkgYW5kIHN0b3AgKCR7c3RvcH0pIG11c3QgYm90aCBiZSA8PSAwIG9yID4gMCwgZ290IG9uZSBvZiBlYWNoYCk7XG4gICAgfVxuICAgIGlmIChzdGFydCA+IHN0b3ApIHtcbiAgICAgICAgcmV0dXJuIGRhdGVSYW5nZU9wdGlvbnMoc3RvcCwgc3RhcnQpLnJldmVyc2UoKTtcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBzdG9wOyBpKyspIHtcbiAgICAgICAgb3B0aW9ucy5wdXNoKHsgdmFsdWU6IGksIGxhYmVsOiBwYWQoaSwgMikgfSk7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0ZVJhbmdlT3B0aW9ucy5qcy5tYXAiLCIvKiogUG90ZW50aWFsbHkgc3Vic3RpdHV0ZXMgYWxsIHJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgd2l0aCB0aGUgYXNzb2NpYXRlZCB2YWx1ZShzKSBmcm9tIHRoZSBgcGFyYW1zYCBpZiBhdmFpbGFibGUuIFdoZW5cbiAqIGEgYHBhcmFtc2AgYXJyYXkgaXMgcHJvdmlkZWQsIGVhY2ggdmFsdWUgaW4gdGhlIGFycmF5IGlzIHVzZWQgdG8gcmVwbGFjZSBhbnkgb2YgdGhlIHJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgaW4gdGhlXG4gKiBgaW5wdXRTdHJpbmdgIHVzaW5nIHRoZSBgJTFgLCBgJTJgLCBldGMuIHJlcGxhY2VtZW50IHNwZWNpZmllcnMuXG4gKlxuICogQHBhcmFtIGlucHV0U3RyaW5nIC0gVGhlIHN0cmluZyB3aGljaCB3aWxsIGJlIHBvdGVudGlhbGx5IHVwZGF0ZWQgd2l0aCByZXBsYWNlbWVudCBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIG9wdGlvbmFsIGxpc3Qgb2YgcmVwbGFjZWFibGUgcGFyYW1ldGVyIHZhbHVlcyB0byBzdWJzdGl0dXRlIGludG8gdGhlIGVuZ2xpc2ggc3RyaW5nXG4gKiBAcmV0dXJucyAtIFRoZSB1cGRhdGVkIHN0cmluZyB3aXRoIGFueSByZXBsYWNlbWVudCBzcGVjaWZpZXJzIHJlcGxhY2VkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlcGxhY2VTdHJpbmdQYXJhbWV0ZXJzKGlucHV0U3RyaW5nLCBwYXJhbXMpIHtcbiAgICBsZXQgb3V0cHV0ID0gaW5wdXRTdHJpbmc7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGFyYW1zKSkge1xuICAgICAgICBjb25zdCBwYXJ0cyA9IG91dHB1dC5zcGxpdCgvKCVcXGQpLyk7XG4gICAgICAgIHBhcmFtcy5mb3JFYWNoKChwYXJhbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRJbmRleCA9IHBhcnRzLmZpbmRJbmRleCgocGFydCkgPT4gcGFydCA9PT0gYCUke2luZGV4ICsgMX1gKTtcbiAgICAgICAgICAgIGlmIChwYXJ0SW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHBhcnRzW3BhcnRJbmRleF0gPSBwYXJhbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG91dHB1dCA9IHBhcnRzLmpvaW4oJycpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVwbGFjZVN0cmluZ1BhcmFtZXRlcnMuanMubWFwIiwiaW1wb3J0IHJlcGxhY2VTdHJpbmdQYXJhbWV0ZXJzIGZyb20gJy4vcmVwbGFjZVN0cmluZ1BhcmFtZXRlcnMnO1xuLyoqIFRyYW5zbGF0ZXMgYSBgVHJhbnNsYXRhYmxlU3RyaW5nYCB2YWx1ZSBgc3RyaW5nVG9UcmFuc2xhdGVgIGludG8gZW5nbGlzaC4gV2hlbiBhIGBwYXJhbXNgIGFycmF5IGlzIHByb3ZpZGVkLCBlYWNoXG4gKiB2YWx1ZSBpbiB0aGUgYXJyYXkgaXMgdXNlZCB0byByZXBsYWNlIGFueSBvZiB0aGUgcmVwbGFjZWFibGUgcGFyYW1ldGVycyBpbiB0aGUgYHN0cmluZ1RvVHJhbnNsYXRlYCB1c2luZyB0aGUgYCUxYCxcbiAqIGAlMmAsIGV0Yy4gcmVwbGFjZW1lbnQgc3BlY2lmaWVycy5cbiAqXG4gKiBAcGFyYW0gc3RyaW5nVG9UcmFuc2xhdGUgLSBUaGUgYFRyYW5zbGF0YWJsZVN0cmluZ2AgdmFsdWUgdG8gY29udmVydCB0byBlbmdsaXNoXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIG9wdGlvbmFsIGxpc3Qgb2YgcmVwbGFjZWFibGUgcGFyYW1ldGVyIHZhbHVlcyB0byBzdWJzdGl0dXRlIGludG8gdGhlIGVuZ2xpc2ggc3RyaW5nXG4gKiBAcmV0dXJucyAtIFRoZSBgc3RyaW5nVG9UcmFuc2xhdGVgIGl0c2VsZiB3aXRoIGFueSByZXBsYWNlYWJsZSBwYXJhbWV0ZXIgdmFsdWVzIHN1YnN0aXR1dGVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZ2xpc2hTdHJpbmdUcmFuc2xhdG9yKHN0cmluZ1RvVHJhbnNsYXRlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gcmVwbGFjZVN0cmluZ1BhcmFtZXRlcnMoc3RyaW5nVG9UcmFuc2xhdGUsIHBhcmFtcyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbmdsaXNoU3RyaW5nVHJhbnNsYXRvci5qcy5tYXAiLCIvKiogUmV0dXJucyB0aGUgdmFsdWUocykgZnJvbSBgYWxsRW51bU9wdGlvbnNgIGF0IHRoZSBpbmRleChlcykgcHJvdmlkZWQgYnkgYHZhbHVlSW5kZXhgLiBJZiBgdmFsdWVJbmRleGAgaXMgbm90IGFuXG4gKiBhcnJheSBBTkQgdGhlIGluZGV4IGlzIG5vdCB2YWxpZCBmb3IgYGFsbEVudW1PcHRpb25zYCwgYGVtcHR5VmFsdWVgIGlzIHJldHVybmVkLiBJZiBgdmFsdWVJbmRleGAgaXMgYW4gYXJyYXksIEFORCBpdFxuICogY29udGFpbnMgYW4gaW52YWxpZCBpbmRleCwgdGhlIHJldHVybmVkIGFycmF5IHdpbGwgaGF2ZSB0aGUgcmVzdWx0aW5nIHVuZGVmaW5lZCB2YWx1ZXMgZmlsdGVyZWQgb3V0LCBsZWF2aW5nIG9ubHlcbiAqIHZhbGlkIHZhbHVlcyBvciBpbiB0aGUgd29yc3QgY2FzZSwgYW4gZW1wdHkgYXJyYXkuXG4gKlxuICogQHBhcmFtIHZhbHVlSW5kZXggLSBUaGUgaW5kZXgoZXMpIG9mIHRoZSB2YWx1ZShzKSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZFxuICogQHBhcmFtIFthbGxFbnVtT3B0aW9ucz1bXV0gLSBUaGUgbGlzdCBvZiBhbGwgdGhlIGtub3duIGVudW1PcHRpb25zXG4gKiBAcGFyYW0gW2VtcHR5VmFsdWVdIC0gVGhlIHZhbHVlIHRvIHJldHVybiB3aGVuIHRoZSBub24tYXJyYXkgYHZhbHVlSW5kZXhgIGRvZXMgbm90IHJlZmVyIHRvIGEgcmVhbCBvcHRpb25cbiAqIEByZXR1cm5zIC0gVGhlIHNpbmdsZSBvciBsaXN0IG9mIHZhbHVlcyBzcGVjaWZpZWQgYnkgdGhlIHNpbmdsZSBvciBsaXN0IG9mIGluZGV4ZXMgaWYgdGhleSBhcmUgdmFsaWQuIE90aGVyd2lzZSxcbiAqICAgICAgICBgZW1wdHlWYWx1ZWAgb3IgYW4gZW1wdHkgbGlzdC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KHZhbHVlSW5kZXgsIGFsbEVudW1PcHRpb25zID0gW10sIGVtcHR5VmFsdWUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZUluZGV4KSkge1xuICAgICAgICByZXR1cm4gKHZhbHVlSW5kZXhcbiAgICAgICAgICAgIC5tYXAoKGluZGV4KSA9PiBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgoaW5kZXgsIGFsbEVudW1PcHRpb25zKSlcbiAgICAgICAgICAgIC8vIFNpbmNlIHRoZSByZWN1cnNpdmUgY2FsbCByZXR1cm5zIGBlbXB0eVZhbHVlYCB3aGVuIHdlIGdldCBhIGJhZCBvcHRpb24sIG9ubHkgZmlsdGVyIHRob3NlIG91dFxuICAgICAgICAgICAgLmZpbHRlcigodmFsKSA9PiB2YWwgIT09IGVtcHR5VmFsdWUpKTtcbiAgICB9XG4gICAgLy8gU28gTnVtYmVyKG51bGwpIGFuZCBOdW1iZXIoJycpIGJvdGggcmV0dXJuIDAsIHNvIHVzZSBlbXB0eVZhbHVlIGZvciB0aG9zZSB0d28gdmFsdWVzXG4gICAgY29uc3QgaW5kZXggPSB2YWx1ZUluZGV4ID09PSAnJyB8fCB2YWx1ZUluZGV4ID09PSBudWxsID8gLTEgOiBOdW1iZXIodmFsdWVJbmRleCk7XG4gICAgY29uc3Qgb3B0aW9uID0gYWxsRW51bU9wdGlvbnNbaW5kZXhdO1xuICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24udmFsdWUgOiBlbXB0eVZhbHVlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4LmpzLm1hcCIsImltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXggZnJvbSAnLi9lbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgnO1xuLyoqIFJlbW92ZXMgdGhlIGVudW0gb3B0aW9uIHZhbHVlIGF0IHRoZSBgdmFsdWVJbmRleGAgZnJvbSB0aGUgY3VycmVudGx5IGBzZWxlY3RlZGAgKGxpc3Qgb2YpIHZhbHVlKHMpLiBJZiBgc2VsZWN0ZWRgIGlzXG4gKiBhIGxpc3QsIHRoZW4gdGhhdCBsaXN0IGlzIHVwZGF0ZWQgdG8gcmVtb3ZlIHRoZSBlbnVtIG9wdGlvbiB2YWx1ZSB3aXRoIHRoZSBgdmFsdWVJbmRleGAgaW4gYGFsbEVudW1PcHRpb25zYC4gSWYgaXQgaXNcbiAqIGEgc2luZ2xlIHZhbHVlLCB0aGVuIGlmIHRoZSBlbnVtIG9wdGlvbiB2YWx1ZSB3aXRoIHRoZSBgdmFsdWVJbmRleGAgaW4gYGFsbEVudW1PcHRpb25zYCBtYXRjaGVzIGBzZWxlY3RlZGAsIHVuZGVmaW5lZFxuICogaXMgcmV0dXJuZWQsIG90aGVyd2lzZSB0aGUgYHNlbGVjdGVkYCB2YWx1ZSBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsdWVJbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgdmFsdWUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZWxlY3RlZCBsaXN0IG9yIHNpbmdsZSB2YWx1ZVxuICogQHBhcmFtIHNlbGVjdGVkIC0gVGhlIGN1cnJlbnQgKGxpc3Qgb2YpIHNlbGVjdGVkIHZhbHVlKHMpXG4gKiBAcGFyYW0gW2FsbEVudW1PcHRpb25zPVtdXSAtIFRoZSBsaXN0IG9mIGFsbCB0aGUga25vd24gZW51bU9wdGlvbnNcbiAqIEByZXR1cm5zIC0gVGhlIHVwZGF0ZWQgYHNlbGVjdGVkYCB3aXRoIHRoZSBlbnVtIG9wdGlvbiB2YWx1ZSBhdCBgdmFsdWVJbmRleGAgaW4gYGFsbEVudW1PcHRpb25zYCByZW1vdmVkIGZyb20gaXQsXG4gKiAgICAgICAgdW5sZXNzIGBzZWxlY3RlZGAgaXMgYSBzaW5nbGUgdmFsdWUuIEluIHRoYXQgY2FzZSwgaWYgdGhlIGB2YWx1ZUluZGV4YCB2YWx1ZSBtYXRjaGVzIGBzZWxlY3RlZGAsIHJldHVybnNcbiAqICAgICAgICB1bmRlZmluZWQsIG90aGVyd2lzZSBgc2VsZWN0ZWRgLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbnVtT3B0aW9uc0Rlc2VsZWN0VmFsdWUodmFsdWVJbmRleCwgc2VsZWN0ZWQsIGFsbEVudW1PcHRpb25zID0gW10pIHtcbiAgICBjb25zdCB2YWx1ZSA9IGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh2YWx1ZUluZGV4LCBhbGxFbnVtT3B0aW9ucyk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZC5maWx0ZXIoKHYpID0+ICFpc0VxdWFsKHYsIHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBpc0VxdWFsKHZhbHVlLCBzZWxlY3RlZCkgPyB1bmRlZmluZWQgOiBzZWxlY3RlZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVudW1PcHRpb25zRGVzZWxlY3RWYWx1ZS5qcy5tYXAiLCJpbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG4vKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBgdmFsdWVgIGlzIChvbmUgb2YpIHRoZSBgc2VsZWN0ZWRgIHZhbHVlKHMpLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSBiZWluZyBjaGVja2VkIHRvIHNlZSBpZiBpdCBpcyBzZWxlY3RlZFxuICogQHBhcmFtIHNlbGVjdGVkIC0gVGhlIGN1cnJlbnQgc2VsZWN0ZWQgdmFsdWUgb3IgbGlzdCBvZiB2YWx1ZXNcbiAqIEByZXR1cm5zIC0gdHJ1ZSBpZiB0aGUgYHZhbHVlYCBpcyBvbmUgb2YgdGhlIGBzZWxlY3RlZGAgb25lcywgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVudW1PcHRpb25zSXNTZWxlY3RlZCh2YWx1ZSwgc2VsZWN0ZWQpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkLnNvbWUoKHNlbCkgPT4gaXNFcXVhbChzZWwsIHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBpc0VxdWFsKHNlbGVjdGVkLCB2YWx1ZSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbnVtT3B0aW9uc0lzU2VsZWN0ZWQuanMubWFwIiwiaW1wb3J0IGVudW1PcHRpb25zSXNTZWxlY3RlZCBmcm9tICcuL2VudW1PcHRpb25zSXNTZWxlY3RlZCc7XG4vKiogUmV0dXJucyB0aGUgaW5kZXgoZXMpIG9mIHRoZSBvcHRpb25zIGluIGBhbGxFbnVtT3B0aW9uc2Agd2hvc2UgdmFsdWUocykgbWF0Y2ggdGhlIG9uZXMgaW4gYHZhbHVlYC4gQWxsIHRoZVxuICogYGVudW1PcHRpb25zYCBhcmUgZmlsdGVyZWQgYmFzZWQgb24gd2hldGhlciB0aGV5IGFyZSBhIFwic2VsZWN0ZWRcIiBgdmFsdWVgIGFuZCB0aGUgaW5kZXggb2YgZWFjaCBzZWxlY3RlZCBvbmUgaXMgdGhlblxuICogc3RvcmVkIGluIGFuIGFycmF5LiBJZiBgbXVsdGlwbGVgIGlzIHRydWUsIHRoYXQgYXJyYXkgaXMgcmV0dXJuZWQsIG90aGVyd2lzZSB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgYXJyYXkgaXNcbiAqIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzaW5nbGUgdmFsdWUgb3IgbGlzdCBvZiB2YWx1ZXMgZm9yIHdoaWNoIGluZGV4ZXMgYXJlIGRlc2lyZWRcbiAqIEBwYXJhbSBbYWxsRW51bU9wdGlvbnM9W11dIC0gVGhlIGxpc3Qgb2YgYWxsIHRoZSBrbm93biBlbnVtT3B0aW9uc1xuICogQHBhcmFtIFttdWx0aXBsZT1mYWxzZV0gLSBPcHRpb25hbCBmbGFnLCBpZiB0cnVlIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBpbmRleCwgb3RoZXJ3aXNlIGEgc2luZ2xlIG9uZVxuICogQHJldHVybnMgLSBBIHNpbmdsZSBzdHJpbmcgaW5kZXggZm9yIHRoZSBmaXJzdCBgdmFsdWVgIGluIGBhbGxFbnVtT3B0aW9uc2AsIGlmIG5vdCBgbXVsdGlwbGVgLiBPdGhlcndpc2UsIHRoZSBsaXN0XG4gKiAgICAgICAgb2YgaW5kZXhlcyBmb3IgKGVhY2ggb2YpIHRoZSB2YWx1ZShzKSBpbiBgdmFsdWVgLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbnVtT3B0aW9uc0luZGV4Rm9yVmFsdWUodmFsdWUsIGFsbEVudW1PcHRpb25zID0gW10sIG11bHRpcGxlID0gZmFsc2UpIHtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ZXMgPSBhbGxFbnVtT3B0aW9uc1xuICAgICAgICAubWFwKChvcHQsIGluZGV4KSA9PiAoZW51bU9wdGlvbnNJc1NlbGVjdGVkKG9wdC52YWx1ZSwgdmFsdWUpID8gU3RyaW5nKGluZGV4KSA6IHVuZGVmaW5lZCkpXG4gICAgICAgIC5maWx0ZXIoKG9wdCkgPT4gdHlwZW9mIG9wdCAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXhlc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVkSW5kZXhlcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVudW1PcHRpb25zSW5kZXhGb3JWYWx1ZS5qcy5tYXAiLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBudWxsaXNoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOaWwobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05pbCh2b2lkIDApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOaWwoTmFOKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTmlsKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTmlsO1xuIiwiaW1wb3J0IGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCBmcm9tICcuL2VudW1PcHRpb25zVmFsdWVGb3JJbmRleCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbi8qKiBBZGQgdGhlIGVudW0gb3B0aW9uIHZhbHVlIGF0IHRoZSBgdmFsdWVJbmRleGAgdG8gdGhlIGxpc3Qgb2YgYHNlbGVjdGVkYCB2YWx1ZXMgaW4gdGhlIHByb3BlciBvcmRlciBhcyBkZWZpbmVkIGJ5XG4gKiBgYWxsRW51bU9wdGlvbnNgXG4gKlxuICogQHBhcmFtIHZhbHVlSW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHNlbGVjdGVkXG4gKiBAcGFyYW0gc2VsZWN0ZWQgLSBUaGUgY3VycmVudCBsaXN0IG9mIHNlbGVjdGVkIHZhbHVlc1xuICogQHBhcmFtIFthbGxFbnVtT3B0aW9ucz1bXV0gLSBUaGUgbGlzdCBvZiBhbGwgdGhlIGtub3duIGVudW1PcHRpb25zXG4gKiBAcmV0dXJucyAtIFRoZSB1cGRhdGVkIGxpc3Qgb2Ygc2VsZWN0ZWQgZW51bSB2YWx1ZXMgd2l0aCBlbnVtIHZhbHVlIGF0IHRoZSBgdmFsdWVJbmRleGAgYWRkZWQgdG8gaXRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW51bU9wdGlvbnNTZWxlY3RWYWx1ZSh2YWx1ZUluZGV4LCBzZWxlY3RlZCwgYWxsRW51bU9wdGlvbnMgPSBbXSkge1xuICAgIGNvbnN0IHZhbHVlID0gZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KHZhbHVlSW5kZXgsIGFsbEVudW1PcHRpb25zKTtcbiAgICBpZiAoIWlzTmlsKHZhbHVlKSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IGFsbEVudW1PcHRpb25zLmZpbmRJbmRleCgob3B0KSA9PiB2YWx1ZSA9PT0gb3B0LnZhbHVlKTtcbiAgICAgICAgY29uc3QgYWxsID0gYWxsRW51bU9wdGlvbnMubWFwKCh7IHZhbHVlOiB2YWwgfSkgPT4gdmFsKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IHNlbGVjdGVkLnNsaWNlKDAsIGluZGV4KS5jb25jYXQodmFsdWUsIHNlbGVjdGVkLnNsaWNlKGluZGV4KSk7XG4gICAgICAgIC8vIEFzIGluc2VydGluZyB2YWx1ZXMgYXQgcHJlZGVmaW5lZCBpbmRleCBwb3NpdGlvbnMgZG9lc24ndCB3b3JrIHdpdGggZW1wdHlcbiAgICAgICAgLy8gYXJyYXlzLCB3ZSBuZWVkIHRvIHJlb3JkZXIgdGhlIHVwZGF0ZWQgc2VsZWN0aW9uIHRvIG1hdGNoIHRoZSBpbml0aWFsIG9yZGVyXG4gICAgICAgIHJldHVybiB1cGRhdGVkLnNvcnQoKGEsIGIpID0+IE51bWJlcihhbGwuaW5kZXhPZihhKSA+IGFsbC5pbmRleE9mKGIpKSk7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVudW1PcHRpb25zU2VsZWN0VmFsdWUuanMubWFwIiwidmFyIGJhc2VTZXQgPSByZXF1aXJlKCcuL19iYXNlU2V0Jyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zZXRgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoIGlzXG4gKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAqIHBhdGggY3JlYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZFxuICogd2l0aCB0aHJlZSBhcmd1bWVudHM6IChuc1ZhbHVlLCBrZXksIG5zT2JqZWN0KS5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7fTtcbiAqXG4gKiBfLnNldFdpdGgob2JqZWN0LCAnWzBdWzFdJywgJ2EnLCBPYmplY3QpO1xuICogLy8gPT4geyAnMCc6IHsgJzEnOiAnYScgfSB9XG4gKi9cbmZ1bmN0aW9uIHNldFdpdGgob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0V2l0aDtcbiIsImltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCBzZXRXaXRoIGZyb20gJ2xvZGFzaC9zZXRXaXRoJztcbmltcG9ydCB7IEVSUk9SU19LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogVGhlIGBFcnJvclNjaGVtYUJ1aWxkZXI8VD5gIGlzIHVzZWQgdG8gYnVpbGQgYW4gYEVycm9yU2NoZW1hPFQ+YCBzaW5jZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYEVycm9yU2NoZW1hYCB0eXBlIGlzXG4gKiBkZXNpZ25lZCBmb3IgcmVhZGluZyBpbmZvcm1hdGlvbiByYXRoZXIgdGhhbiB3cml0aW5nIGl0LiBVc2UgdGhpcyBjbGFzcyB0byBhZGQsIHJlcGxhY2Ugb3IgY2xlYXIgZXJyb3JzIGluIGFuIGVycm9yXG4gKiBzY2hlbWEgYnkgdXNpbmcgZWl0aGVyIGRvdHRlZCBwYXRoIG9yIGFuIGFycmF5IG9mIHBhdGggbmFtZXMuIE9uY2UgeW91IGFyZSBkb25lIGJ1aWxkaW5nIHRoZSBgRXJyb3JTY2hlbWFgLCB5b3UgY2FuXG4gKiBnZXQgdGhlIHJlc3VsdCBhbmQvb3IgcmVzZXQgYWxsIHRoZSBlcnJvcnMgYmFjayB0byBhbiBpbml0aWFsIHNldCBhbmQgc3RhcnQgYWdhaW4uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVycm9yU2NoZW1hQnVpbGRlciB7XG4gICAgLyoqIENvbnN0cnVjdCBhbiBgRXJyb3JTY2hlbWFCdWlsZGVyYCB3aXRoIGFuIG9wdGlvbmFsIGluaXRpYWwgc2V0IG9mIGVycm9ycyBpbiBhbiBgRXJyb3JTY2hlbWFgLlxuICAgICAqXG4gICAgICogQHBhcmFtIFtpbml0aWFsU2NoZW1hXSAtIFRoZSBvcHRpb25hbCBzZXQgb2YgaW5pdGlhbCBlcnJvcnMsIHRoYXQgd2lsbCBiZSBjbG9uZWQgaW50byB0aGUgY2xhc3NcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihpbml0aWFsU2NoZW1hKSB7XG4gICAgICAgIC8qKiBUaGUgZXJyb3Igc2NoZW1hIGJlaW5nIGJ1aWx0XG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmVycm9yU2NoZW1hID0ge307XG4gICAgICAgIHRoaXMucmVzZXRBbGxFcnJvcnMoaW5pdGlhbFNjaGVtYSk7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIHRoZSBgRXJyb3JTY2hlbWFgIHRoYXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgbWV0aG9kcyBvZiB0aGUgYEVycm9yU2NoZW1hQnVpbGRlcmBcbiAgICAgKi9cbiAgICBnZXQgRXJyb3JTY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yU2NoZW1hO1xuICAgIH1cbiAgICAvKiogV2lsbCBnZXQgYW4gZXhpc3RpbmcgYEVycm9yU2NoZW1hYCBhdCB0aGUgc3BlY2lmaWVkIGBwYXRoT2ZFcnJvcmAgb3IgY3JlYXRlIGFuZCByZXR1cm4gb25lLlxuICAgICAqXG4gICAgICogQHBhcmFtIFtwYXRoT2ZFcnJvcl0gLSBUaGUgb3B0aW9uYWwgcGF0aCBpbnRvIHRoZSBgRXJyb3JTY2hlbWFgIGF0IHdoaWNoIHRvIGFkZCB0aGUgZXJyb3IocylcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBlcnJvciBibG9jayBmb3IgdGhlIGdpdmVuIGBwYXRoT2ZFcnJvcmAgb3IgdGhlIHJvb3QgaWYgbm90IHByb3ZpZGVkXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBnZXRPckNyZWF0ZUVycm9yQmxvY2socGF0aE9mRXJyb3IpIHtcbiAgICAgICAgY29uc3QgaGFzUGF0aCA9IChBcnJheS5pc0FycmF5KHBhdGhPZkVycm9yKSAmJiBwYXRoT2ZFcnJvci5sZW5ndGggPiAwKSB8fCB0eXBlb2YgcGF0aE9mRXJyb3IgPT09ICdzdHJpbmcnO1xuICAgICAgICBsZXQgZXJyb3JCbG9jayA9IGhhc1BhdGggPyBnZXQodGhpcy5lcnJvclNjaGVtYSwgcGF0aE9mRXJyb3IpIDogdGhpcy5lcnJvclNjaGVtYTtcbiAgICAgICAgaWYgKCFlcnJvckJsb2NrICYmIHBhdGhPZkVycm9yKSB7XG4gICAgICAgICAgICBlcnJvckJsb2NrID0ge307XG4gICAgICAgICAgICBzZXRXaXRoKHRoaXMuZXJyb3JTY2hlbWEsIHBhdGhPZkVycm9yLCBlcnJvckJsb2NrLCBPYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlcnJvckJsb2NrO1xuICAgIH1cbiAgICAvKiogUmVzZXRzIGFsbCBlcnJvcnMgaW4gdGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgIGJhY2sgdG8gdGhlIGBpbml0aWFsU2NoZW1hYCBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIGFuIGVtcHR5IHNldC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBbaW5pdGlhbFNjaGVtYV0gLSBUaGUgb3B0aW9uYWwgc2V0IG9mIGluaXRpYWwgZXJyb3JzLCB0aGF0IHdpbGwgYmUgY2xvbmVkIGludG8gdGhlIGNsYXNzXG4gICAgICogQHJldHVybnMgLSBUaGUgYEVycm9yU2NoZW1hQnVpbGRlcmAgb2JqZWN0IGZvciBjaGFpbmluZyBwdXJwb3Nlc1xuICAgICAqL1xuICAgIHJlc2V0QWxsRXJyb3JzKGluaXRpYWxTY2hlbWEpIHtcbiAgICAgICAgdGhpcy5lcnJvclNjaGVtYSA9IGluaXRpYWxTY2hlbWEgPyBjbG9uZURlZXAoaW5pdGlhbFNjaGVtYSkgOiB7fTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKiBBZGRzIHRoZSBgZXJyb3JPckxpc3RgIHRvIHRoZSBsaXN0IG9mIGVycm9ycyBpbiB0aGUgYEVycm9yU2NoZW1hYCBhdCBlaXRoZXIgdGhlIHJvb3QgbGV2ZWwgb3IgdGhlIGxvY2F0aW9uIHdpdGhpblxuICAgICAqIHRoZSBzY2hlbWEgZGVzY3JpYmVkIGJ5IHRoZSBgcGF0aE9mRXJyb3JgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gc3BlY2lmeSB0aGUgcGF0aCBzZWUgdGhlXG4gICAgICogW2VzbGludCBsb2Rhc2ggcGx1Z2luIGRvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS93aXgvZXNsaW50LXBsdWdpbi1sb2Rhc2gvYmxvYi9tYXN0ZXIvZG9jcy9ydWxlcy9wYXRoLXN0eWxlLm1kKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlcnJvck9yTGlzdCAtIFRoZSBlcnJvciBvciBsaXN0IG9mIGVycm9ycyB0byBhZGQgaW50byB0aGUgYEVycm9yU2NoZW1hYFxuICAgICAqIEBwYXJhbSBbcGF0aE9mRXJyb3JdIC0gVGhlIG9wdGlvbmFsIHBhdGggaW50byB0aGUgYEVycm9yU2NoZW1hYCBhdCB3aGljaCB0byBhZGQgdGhlIGVycm9yKHMpXG4gICAgICogQHJldHVybnMgLSBUaGUgYEVycm9yU2NoZW1hQnVpbGRlcmAgb2JqZWN0IGZvciBjaGFpbmluZyBwdXJwb3Nlc1xuICAgICAqL1xuICAgIGFkZEVycm9ycyhlcnJvck9yTGlzdCwgcGF0aE9mRXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JCbG9jayA9IHRoaXMuZ2V0T3JDcmVhdGVFcnJvckJsb2NrKHBhdGhPZkVycm9yKTtcbiAgICAgICAgbGV0IGVycm9yc0xpc3QgPSBnZXQoZXJyb3JCbG9jaywgRVJST1JTX0tFWSk7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlcnJvcnNMaXN0KSkge1xuICAgICAgICAgICAgZXJyb3JzTGlzdCA9IFtdO1xuICAgICAgICAgICAgZXJyb3JCbG9ja1tFUlJPUlNfS0VZXSA9IGVycm9yc0xpc3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JPckxpc3QpKSB7XG4gICAgICAgICAgICBzZXQoZXJyb3JCbG9jaywgRVJST1JTX0tFWSwgWy4uLm5ldyBTZXQoWy4uLmVycm9yc0xpc3QsIC4uLmVycm9yT3JMaXN0XSldKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldChlcnJvckJsb2NrLCBFUlJPUlNfS0VZLCBbLi4ubmV3IFNldChbLi4uZXJyb3JzTGlzdCwgZXJyb3JPckxpc3RdKV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKiogU2V0cy9yZXBsYWNlcyB0aGUgYGVycm9yT3JMaXN0YCBhcyB0aGUgZXJyb3IocykgaW4gdGhlIGBFcnJvclNjaGVtYWAgYXQgZWl0aGVyIHRoZSByb290IGxldmVsIG9yIHRoZSBsb2NhdGlvblxuICAgICAqIHdpdGhpbiB0aGUgc2NoZW1hIGRlc2NyaWJlZCBieSB0aGUgYHBhdGhPZkVycm9yYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIHNwZWNpZnkgdGhlIHBhdGggc2VlIHRoZVxuICAgICAqIFtlc2xpbnQgbG9kYXNoIHBsdWdpbiBkb2NzXShodHRwczovL2dpdGh1Yi5jb20vd2l4L2VzbGludC1wbHVnaW4tbG9kYXNoL2Jsb2IvbWFzdGVyL2RvY3MvcnVsZXMvcGF0aC1zdHlsZS5tZCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXJyb3JPckxpc3QgLSBUaGUgZXJyb3Igb3IgbGlzdCBvZiBlcnJvcnMgdG8gc2V0IGludG8gdGhlIGBFcnJvclNjaGVtYWBcbiAgICAgKiBAcGFyYW0gW3BhdGhPZkVycm9yXSAtIFRoZSBvcHRpb25hbCBwYXRoIGludG8gdGhlIGBFcnJvclNjaGVtYWAgYXQgd2hpY2ggdG8gc2V0IHRoZSBlcnJvcihzKVxuICAgICAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgIG9iamVjdCBmb3IgY2hhaW5pbmcgcHVycG9zZXNcbiAgICAgKi9cbiAgICBzZXRFcnJvcnMoZXJyb3JPckxpc3QsIHBhdGhPZkVycm9yKSB7XG4gICAgICAgIGNvbnN0IGVycm9yQmxvY2sgPSB0aGlzLmdldE9yQ3JlYXRlRXJyb3JCbG9jayhwYXRoT2ZFcnJvcik7XG4gICAgICAgIC8vIEVmZmVjdGl2ZWx5IGNsb25lIHRoZSBhcnJheSBiZWluZyBnaXZlbiB0byBwcmV2ZW50IGFjY2lkZW50YWwgb3V0c2lkZSBtYW5pcHVsYXRpb24gb2YgdGhlIGdpdmVuIGxpc3RcbiAgICAgICAgY29uc3QgbGlzdFRvQWRkID0gQXJyYXkuaXNBcnJheShlcnJvck9yTGlzdCkgPyBbLi4ubmV3IFNldChbLi4uZXJyb3JPckxpc3RdKV0gOiBbZXJyb3JPckxpc3RdO1xuICAgICAgICBzZXQoZXJyb3JCbG9jaywgRVJST1JTX0tFWSwgbGlzdFRvQWRkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKiBDbGVhcnMgdGhlIGVycm9yKHMpIGluIHRoZSBgRXJyb3JTY2hlbWFgIGF0IGVpdGhlciB0aGUgcm9vdCBsZXZlbCBvciB0aGUgbG9jYXRpb24gd2l0aGluIHRoZSBzY2hlbWEgZGVzY3JpYmVkIGJ5XG4gICAgICogdGhlIGBwYXRoT2ZFcnJvcmAuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBzcGVjaWZ5IHRoZSBwYXRoIHNlZSB0aGVcbiAgICAgKiBbZXNsaW50IGxvZGFzaCBwbHVnaW4gZG9jc10oaHR0cHM6Ly9naXRodWIuY29tL3dpeC9lc2xpbnQtcGx1Z2luLWxvZGFzaC9ibG9iL21hc3Rlci9kb2NzL3J1bGVzL3BhdGgtc3R5bGUubWQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIFtwYXRoT2ZFcnJvcl0gLSBUaGUgb3B0aW9uYWwgcGF0aCBpbnRvIHRoZSBgRXJyb3JTY2hlbWFgIGF0IHdoaWNoIHRvIGNsZWFyIHRoZSBlcnJvcihzKVxuICAgICAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgIG9iamVjdCBmb3IgY2hhaW5pbmcgcHVycG9zZXNcbiAgICAgKi9cbiAgICBjbGVhckVycm9ycyhwYXRoT2ZFcnJvcikge1xuICAgICAgICBjb25zdCBlcnJvckJsb2NrID0gdGhpcy5nZXRPckNyZWF0ZUVycm9yQmxvY2socGF0aE9mRXJyb3IpO1xuICAgICAgICBzZXQoZXJyb3JCbG9jaywgRVJST1JTX0tFWSwgW10pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1FcnJvclNjaGVtYUJ1aWxkZXIuanMubWFwIiwiLyoqIEdpdmVuIGRhdGUgJiB0aW1lIGluZm9ybWF0aW9uIHdpdGggb3B0aW9uYWwgeWVhclJhbmdlICYgZm9ybWF0LCByZXR1cm5zIHByb3BzIGZvciBEYXRlRWxlbWVudFxuICpcbiAqIEBwYXJhbSBkYXRlIC0gT2JqZWN0IGNvbnRhaW5pbmcgZGF0ZSB3aXRoIG9wdGlvbmFsIHRpbWUgaW5mb3JtYXRpb25cbiAqIEBwYXJhbSB0aW1lIC0gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGltZSBvciBub3RcbiAqIEBwYXJhbSBbeWVhclJhbmdlPVsxOTAwLCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAyXV0gLSBDb250cm9scyB0aGUgbGlzdCBvZiB5ZWFycyB0byBiZSBkaXNwbGF5ZWRcbiAqIEBwYXJhbSBbZm9ybWF0PSdZTUQnXSAtIENvbnRyb2xzIHRoZSBvcmRlciBpbiB3aGljaCBkYXksIG1vbnRoIGFuZCB5ZWFyIGlucHV0IGVsZW1lbnQgd2lsbCBiZSBkaXNwbGF5ZWRcbiAqIEByZXR1cm5zIEFycmF5IG9mIHByb3BzIGZvciBEYXRlRWxlbWVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREYXRlRWxlbWVudFByb3BzKGRhdGUsIHRpbWUsIHllYXJSYW5nZSA9IFsxOTAwLCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAyXSwgZm9ybWF0ID0gJ1lNRCcpIHtcbiAgICBjb25zdCB7IGRheSwgbW9udGgsIHllYXIsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIH0gPSBkYXRlO1xuICAgIGNvbnN0IGRheU9iaiA9IHsgdHlwZTogJ2RheScsIHJhbmdlOiBbMSwgMzFdLCB2YWx1ZTogZGF5IH07XG4gICAgY29uc3QgbW9udGhPYmogPSB7IHR5cGU6ICdtb250aCcsIHJhbmdlOiBbMSwgMTJdLCB2YWx1ZTogbW9udGggfTtcbiAgICBjb25zdCB5ZWFyT2JqID0geyB0eXBlOiAneWVhcicsIHJhbmdlOiB5ZWFyUmFuZ2UsIHZhbHVlOiB5ZWFyIH07XG4gICAgY29uc3QgZGF0ZUVsZW1lbnRQcm9wID0gW107XG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgICAgY2FzZSAnTURZJzpcbiAgICAgICAgICAgIGRhdGVFbGVtZW50UHJvcC5wdXNoKG1vbnRoT2JqLCBkYXlPYmosIHllYXJPYmopO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0RNWSc6XG4gICAgICAgICAgICBkYXRlRWxlbWVudFByb3AucHVzaChkYXlPYmosIG1vbnRoT2JqLCB5ZWFyT2JqKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdZTUQnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZGF0ZUVsZW1lbnRQcm9wLnB1c2goeWVhck9iaiwgbW9udGhPYmosIGRheU9iaik7XG4gICAgfVxuICAgIGlmICh0aW1lKSB7XG4gICAgICAgIGRhdGVFbGVtZW50UHJvcC5wdXNoKHsgdHlwZTogJ2hvdXInLCByYW5nZTogWzAsIDIzXSwgdmFsdWU6IGhvdXIgfSwgeyB0eXBlOiAnbWludXRlJywgcmFuZ2U6IFswLCA1OV0sIHZhbHVlOiBtaW51dGUgfSwgeyB0eXBlOiAnc2Vjb25kJywgcmFuZ2U6IFswLCA1OV0sIHZhbHVlOiBzZWNvbmQgfSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlRWxlbWVudFByb3A7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREYXRlRWxlbWVudFByb3BzLmpzLm1hcCIsIi8qKiBFeHRyYWN0cyB0aGUgcmFuZ2Ugc3BlYyBpbmZvcm1hdGlvbiBgeyBzdGVwPzogbnVtYmVyLCBtaW4/OiBudW1iZXIsIG1heD86IG51bWJlciB9YCB0aGF0IGNhbiBiZSBzcHJlYWQgb250byBhbiBIVE1MXG4gKiBpbnB1dCBmcm9tIHRoZSByYW5nZSBhbmFsb2cgaW4gdGhlIHNjaGVtYSBgeyBtdWx0aXBsZU9mPzogbnVtYmVyLCBtaW5pbXVtPzogbnVtYmVyLCBtYXhpbXVtPzogbnVtYmVyIH1gLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZyb20gd2hpY2ggdG8gZXh0cmFjdCB0aGUgcmFuZ2Ugc3BlY1xuICogQHJldHVybnMgLSBBIHJhbmdlIHNwZWNpZmljYXRpb24gZnJvbSB0aGUgc2NoZW1hXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJhbmdlU3BlYyhzY2hlbWEpIHtcbiAgICBjb25zdCBzcGVjID0ge307XG4gICAgaWYgKHNjaGVtYS5tdWx0aXBsZU9mKSB7XG4gICAgICAgIHNwZWMuc3RlcCA9IHNjaGVtYS5tdWx0aXBsZU9mO1xuICAgIH1cbiAgICBpZiAoc2NoZW1hLm1pbmltdW0gfHwgc2NoZW1hLm1pbmltdW0gPT09IDApIHtcbiAgICAgICAgc3BlYy5taW4gPSBzY2hlbWEubWluaW11bTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYS5tYXhpbXVtIHx8IHNjaGVtYS5tYXhpbXVtID09PSAwKSB7XG4gICAgICAgIHNwZWMubWF4ID0gc2NoZW1hLm1heGltdW07XG4gICAgfVxuICAgIHJldHVybiBzcGVjO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmFuZ2VTcGVjLmpzLm1hcCIsImltcG9ydCByYW5nZVNwZWMgZnJvbSAnLi9yYW5nZVNwZWMnO1xuLyoqIFVzaW5nIHRoZSBgc2NoZW1hYCwgYGRlZmF1bHRUeXBlYCBhbmQgYG9wdGlvbnNgLCBleHRyYWN0IG91dCB0aGUgcHJvcHMgZm9yIHRoZSA8aW5wdXQ+IGVsZW1lbnQgdGhhdCBtYWtlIHNlbnNlLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB0aGUgZmllbGQgcHJvdmlkZWQgYnkgdGhlIHdpZGdldFxuICogQHBhcmFtIFtkZWZhdWx0VHlwZV0gLSBUaGUgZGVmYXVsdCB0eXBlLCBpZiBhbnksIGZvciB0aGUgZmllbGQgcHJvdmlkZWQgYnkgdGhlIHdpZGdldFxuICogQHBhcmFtIFtvcHRpb25zPXt9XSAtIFRoZSBVSSBPcHRpb25zIGZvciB0aGUgZmllbGQgcHJvdmlkZWQgYnkgdGhlIHdpZGdldFxuICogQHBhcmFtIFthdXRvRGVmYXVsdFN0ZXBBbnk9dHJ1ZV0gLSBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gYXV0by1kZWZhdWx0IHN0ZXA9YW55IHdoZW4gdGhlIHR5cGUgaXMgbnVtYmVyIGFuZCBubyBzdGVwXG4gKiBAcmV0dXJucyAtIFRoZSBleHRyYWN0ZWQgYElucHV0UHJvcHNUeXBlYCBvYmplY3RcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SW5wdXRQcm9wcyhzY2hlbWEsIGRlZmF1bHRUeXBlLCBvcHRpb25zID0ge30sIGF1dG9EZWZhdWx0U3RlcEFueSA9IHRydWUpIHtcbiAgICBjb25zdCBpbnB1dFByb3BzID0ge1xuICAgICAgICB0eXBlOiBkZWZhdWx0VHlwZSB8fCAndGV4dCcsXG4gICAgICAgIC4uLnJhbmdlU3BlYyhzY2hlbWEpLFxuICAgIH07XG4gICAgLy8gSWYgb3B0aW9ucy5pbnB1dFR5cGUgaXMgc2V0IHVzZSB0aGF0IGFzIHRoZSBpbnB1dCB0eXBlXG4gICAgaWYgKG9wdGlvbnMuaW5wdXRUeXBlKSB7XG4gICAgICAgIGlucHV0UHJvcHMudHlwZSA9IG9wdGlvbnMuaW5wdXRUeXBlO1xuICAgIH1cbiAgICBlbHNlIGlmICghZGVmYXVsdFR5cGUpIHtcbiAgICAgICAgLy8gSWYgdGhlIHNjaGVtYSBpcyBvZiB0eXBlIG51bWJlciBvciBpbnRlZ2VyLCBzZXQgdGhlIGlucHV0IHR5cGUgdG8gbnVtYmVyXG4gICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGlucHV0UHJvcHMudHlwZSA9ICdudW1iZXInO1xuICAgICAgICAgICAgLy8gT25seSBhZGQgc3RlcCBpZiBvbmUgaXNuJ3QgYWxyZWFkeSBkZWZpbmVkIGFuZCB3ZSBhcmUgYXV0by1kZWZhdWx0aW5nIHRoZSBcImFueVwiIHN0ZXBcbiAgICAgICAgICAgIGlmIChhdXRvRGVmYXVsdFN0ZXBBbnkgJiYgaW5wdXRQcm9wcy5zdGVwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBTZXR0aW5nIHN0ZXAgdG8gJ2FueScgZml4ZXMgYSBidWcgaW4gU2FmYXJpIHdoZXJlIGRlY2ltYWxzIGFyZSBub3RcbiAgICAgICAgICAgICAgICAvLyBhbGxvd2VkIGluIG51bWJlciBpbnB1dHNcbiAgICAgICAgICAgICAgICBpbnB1dFByb3BzLnN0ZXAgPSAnYW55JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzY2hlbWEudHlwZSA9PT0gJ2ludGVnZXInKSB7XG4gICAgICAgICAgICBpbnB1dFByb3BzLnR5cGUgPSAnbnVtYmVyJztcbiAgICAgICAgICAgIC8vIE9ubHkgYWRkIHN0ZXAgaWYgb25lIGlzbid0IGFscmVhZHkgZGVmaW5lZFxuICAgICAgICAgICAgaWYgKGlucHV0UHJvcHMuc3RlcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBpcyBpbnRlZ2VyLCB5b3UgYWx3YXlzIHdhbnQgdG8gc3RlcCB1cCBvciBkb3duIGluIG11bHRpcGxlcyBvZiAxXG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcy5zdGVwID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5hdXRvY29tcGxldGUpIHtcbiAgICAgICAgaW5wdXRQcm9wcy5hdXRvQ29tcGxldGUgPSBvcHRpb25zLmF1dG9jb21wbGV0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0UHJvcHM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRJbnB1dFByb3BzLmpzLm1hcCIsImltcG9ydCB7IFNVQk1JVF9CVE5fT1BUSU9OU19LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0VWlPcHRpb25zIGZyb20gJy4vZ2V0VWlPcHRpb25zJztcbi8qKiBUaGUgZGVmYXVsdCBzdWJtaXQgYnV0dG9uIG9wdGlvbnMsIGV4cG9ydGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX09QVElPTlMgPSB7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAgc3VibWl0VGV4dDogJ1N1Ym1pdCcsXG4gICAgbm9yZW5kZXI6IGZhbHNlLFxufTtcbi8qKiBFeHRyYWN0cyBhbnkgYHVpOnN1Ym1pdEJ1dHRvbk9wdGlvbnNgIGZyb20gdGhlIGB1aVNjaGVtYWAgYW5kIG1lcmdlcyB0aGVtIG9udG8gdGhlIGBERUZBVUxUX09QVElPTlNgXG4gKlxuICogQHBhcmFtIFt1aVNjaGVtYT17fV0gLSB0aGUgVUkgU2NoZW1hIGZyb20gd2hpY2ggdG8gZXh0cmFjdCBzdWJtaXQgYnV0dG9uIHByb3BzXG4gKiBAcmV0dXJucyAtIFRoZSBtZXJnaW5nIG9mIHRoZSBgREVGQVVMVF9PUFRJT05TYCB3aXRoIGFueSBjdXN0b20gb25lc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTdWJtaXRCdXR0b25PcHRpb25zKHVpU2NoZW1hID0ge30pIHtcbiAgICBjb25zdCB1aU9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgIGlmICh1aU9wdGlvbnMgJiYgdWlPcHRpb25zW1NVQk1JVF9CVE5fT1BUSU9OU19LRVldKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB1aU9wdGlvbnNbU1VCTUlUX0JUTl9PUFRJT05TX0tFWV07XG4gICAgICAgIHJldHVybiB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gREVGQVVMVF9PUFRJT05TO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0U3VibWl0QnV0dG9uT3B0aW9ucy5qcy5tYXAiLCIvKiogUmV0dXJucyB0aGUgdGVtcGxhdGUgd2l0aCB0aGUgZ2l2ZW4gYG5hbWVgIGZyb20gZWl0aGVyIHRoZSBgdWlTY2hlbWFgIGlmIGl0IGlzIGRlZmluZWQgb3IgZnJvbSB0aGUgYHJlZ2lzdHJ5YFxuICogb3RoZXJ3aXNlLiBOT1RFLCBzaW5jZSBgQnV0dG9uVGVtcGxhdGVzYCBhcmUgbm90IG92ZXJyaWRkZW4gaW4gYHVpU2NoZW1hYCBvbmx5IHRob3NlIGluIHRoZSBgcmVnaXN0cnlgIGFyZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZSB0byBmZXRjaCwgcmVzdHJpY3RlZCB0byB0aGUga2V5cyBvZiBgVGVtcGxhdGVzVHlwZWBcbiAqIEBwYXJhbSByZWdpc3RyeSAtIFRoZSBgUmVnaXN0cnlgIGZyb20gd2hpY2ggdG8gcmVhZCB0aGUgdGVtcGxhdGVcbiAqIEBwYXJhbSBbdWlPcHRpb25zPXt9XSAtIFRoZSBgVUlPcHRpb25zVHlwZWAgZnJvbSB3aGljaCB0byByZWFkIGFuIGFsdGVybmF0ZSB0ZW1wbGF0ZVxuICogQHJldHVybnMgLSBUaGUgdGVtcGxhdGUgZnJvbSBlaXRoZXIgdGhlIGB1aVNjaGVtYWAgb3IgYHJlZ2lzdHJ5YCBmb3IgdGhlIGBuYW1lYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRUZW1wbGF0ZShuYW1lLCByZWdpc3RyeSwgdWlPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IHRlbXBsYXRlcyB9ID0gcmVnaXN0cnk7XG4gICAgaWYgKG5hbWUgPT09ICdCdXR0b25UZW1wbGF0ZXMnKSB7XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZXNbbmFtZV07XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgLy8gRXZhbHVhdGluZyB1aU9wdGlvbnNbbmFtZV0gcmVzdWx0cyBpbiBUUzI1OTA6IEV4cHJlc3Npb24gcHJvZHVjZXMgYSB1bmlvbiB0eXBlIHRoYXQgaXMgdG9vIGNvbXBsZXggdG8gcmVwcmVzZW50XG4gICAgLy8gVG8gYXZvaWQgdGhhdCwgd2UgY2FzdCB1aU9wdGlvbnMgdG8gYGFueWAgYmVmb3JlIGFjY2Vzc2luZyB0aGUgbmFtZSBmaWVsZFxuICAgIHVpT3B0aW9uc1tuYW1lXSB8fCB0ZW1wbGF0ZXNbbmFtZV0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0VGVtcGxhdGUuanMubWFwIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBiPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGM9U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxkPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxlPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxmPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSxnPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSxoPVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LnNlcnZlcl9jb250ZXh0XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLG09U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLG49U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIikscD1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxxPVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLHQ9U3ltYm9sLmZvcihcInJlYWN0Lm9mZnNjcmVlblwiKSx1O3U9U3ltYm9sLmZvcihcInJlYWN0Lm1vZHVsZS5yZWZlcmVuY2VcIik7XG5mdW5jdGlvbiB2KGEpe2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpe3ZhciByPWEuJCR0eXBlb2Y7c3dpdGNoKHIpe2Nhc2UgYjpzd2l0Y2goYT1hLnR5cGUsYSl7Y2FzZSBkOmNhc2UgZjpjYXNlIGU6Y2FzZSBtOmNhc2UgbjpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgaDpjYXNlIGw6Y2FzZSBxOmNhc2UgcDpjYXNlIGc6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gcn19Y2FzZSBjOnJldHVybiByfX19ZXhwb3J0cy5Db250ZXh0Q29uc3VtZXI9aDtleHBvcnRzLkNvbnRleHRQcm92aWRlcj1nO2V4cG9ydHMuRWxlbWVudD1iO2V4cG9ydHMuRm9yd2FyZFJlZj1sO2V4cG9ydHMuRnJhZ21lbnQ9ZDtleHBvcnRzLkxhenk9cTtleHBvcnRzLk1lbW89cDtleHBvcnRzLlBvcnRhbD1jO2V4cG9ydHMuUHJvZmlsZXI9ZjtleHBvcnRzLlN0cmljdE1vZGU9ZTtleHBvcnRzLlN1c3BlbnNlPW07XG5leHBvcnRzLlN1c3BlbnNlTGlzdD1uO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX07ZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2V4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1ofTtleHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09Z307ZXhwb3J0cy5pc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWJ9O2V4cG9ydHMuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09bH07ZXhwb3J0cy5pc0ZyYWdtZW50PWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09ZH07ZXhwb3J0cy5pc0xhenk9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1xfTtleHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PXB9O1xuZXhwb3J0cy5pc1BvcnRhbD1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWN9O2V4cG9ydHMuaXNQcm9maWxlcj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWZ9O2V4cG9ydHMuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09ZX07ZXhwb3J0cy5pc1N1c3BlbnNlPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09bX07ZXhwb3J0cy5pc1N1c3BlbnNlTGlzdD1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PW59O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWR8fGE9PT1mfHxhPT09ZXx8YT09PW18fGE9PT1ufHxhPT09dHx8XCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmKGEuJCR0eXBlb2Y9PT1xfHxhLiQkdHlwZW9mPT09cHx8YS4kJHR5cGVvZj09PWd8fGEuJCR0eXBlb2Y9PT1ofHxhLiQkdHlwZW9mPT09bHx8YS4kJHR5cGVvZj09PXV8fHZvaWQgMCE9PWEuZ2V0TW9kdWxlSWQpPyEwOiExfTtleHBvcnRzLnR5cGVPZj12O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdElzIGZyb20gJ3JlYWN0LWlzJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC9zZXQnO1xuaW1wb3J0IGdldFNjaGVtYVR5cGUgZnJvbSAnLi9nZXRTY2hlbWFUeXBlJztcbi8qKiBUaGUgbWFwIG9mIHNjaGVtYSB0eXBlcyB0byB3aWRnZXQgdHlwZSB0byB3aWRnZXQgbmFtZVxuICovXG5jb25zdCB3aWRnZXRNYXAgPSB7XG4gICAgYm9vbGVhbjoge1xuICAgICAgICBjaGVja2JveDogJ0NoZWNrYm94V2lkZ2V0JyxcbiAgICAgICAgcmFkaW86ICdSYWRpb1dpZGdldCcsXG4gICAgICAgIHNlbGVjdDogJ1NlbGVjdFdpZGdldCcsXG4gICAgICAgIGhpZGRlbjogJ0hpZGRlbldpZGdldCcsXG4gICAgfSxcbiAgICBzdHJpbmc6IHtcbiAgICAgICAgdGV4dDogJ1RleHRXaWRnZXQnLFxuICAgICAgICBwYXNzd29yZDogJ1Bhc3N3b3JkV2lkZ2V0JyxcbiAgICAgICAgZW1haWw6ICdFbWFpbFdpZGdldCcsXG4gICAgICAgIGhvc3RuYW1lOiAnVGV4dFdpZGdldCcsXG4gICAgICAgIGlwdjQ6ICdUZXh0V2lkZ2V0JyxcbiAgICAgICAgaXB2NjogJ1RleHRXaWRnZXQnLFxuICAgICAgICB1cmk6ICdVUkxXaWRnZXQnLFxuICAgICAgICAnZGF0YS11cmwnOiAnRmlsZVdpZGdldCcsXG4gICAgICAgIHJhZGlvOiAnUmFkaW9XaWRnZXQnLFxuICAgICAgICBzZWxlY3Q6ICdTZWxlY3RXaWRnZXQnLFxuICAgICAgICB0ZXh0YXJlYTogJ1RleHRhcmVhV2lkZ2V0JyxcbiAgICAgICAgaGlkZGVuOiAnSGlkZGVuV2lkZ2V0JyxcbiAgICAgICAgZGF0ZTogJ0RhdGVXaWRnZXQnLFxuICAgICAgICBkYXRldGltZTogJ0RhdGVUaW1lV2lkZ2V0JyxcbiAgICAgICAgJ2RhdGUtdGltZSc6ICdEYXRlVGltZVdpZGdldCcsXG4gICAgICAgICdhbHQtZGF0ZSc6ICdBbHREYXRlV2lkZ2V0JyxcbiAgICAgICAgJ2FsdC1kYXRldGltZSc6ICdBbHREYXRlVGltZVdpZGdldCcsXG4gICAgICAgIHRpbWU6ICdUaW1lV2lkZ2V0JyxcbiAgICAgICAgY29sb3I6ICdDb2xvcldpZGdldCcsXG4gICAgICAgIGZpbGU6ICdGaWxlV2lkZ2V0JyxcbiAgICB9LFxuICAgIG51bWJlcjoge1xuICAgICAgICB0ZXh0OiAnVGV4dFdpZGdldCcsXG4gICAgICAgIHNlbGVjdDogJ1NlbGVjdFdpZGdldCcsXG4gICAgICAgIHVwZG93bjogJ1VwRG93bldpZGdldCcsXG4gICAgICAgIHJhbmdlOiAnUmFuZ2VXaWRnZXQnLFxuICAgICAgICByYWRpbzogJ1JhZGlvV2lkZ2V0JyxcbiAgICAgICAgaGlkZGVuOiAnSGlkZGVuV2lkZ2V0JyxcbiAgICB9LFxuICAgIGludGVnZXI6IHtcbiAgICAgICAgdGV4dDogJ1RleHRXaWRnZXQnLFxuICAgICAgICBzZWxlY3Q6ICdTZWxlY3RXaWRnZXQnLFxuICAgICAgICB1cGRvd246ICdVcERvd25XaWRnZXQnLFxuICAgICAgICByYW5nZTogJ1JhbmdlV2lkZ2V0JyxcbiAgICAgICAgcmFkaW86ICdSYWRpb1dpZGdldCcsXG4gICAgICAgIGhpZGRlbjogJ0hpZGRlbldpZGdldCcsXG4gICAgfSxcbiAgICBhcnJheToge1xuICAgICAgICBzZWxlY3Q6ICdTZWxlY3RXaWRnZXQnLFxuICAgICAgICBjaGVja2JveGVzOiAnQ2hlY2tib3hlc1dpZGdldCcsXG4gICAgICAgIGZpbGVzOiAnRmlsZVdpZGdldCcsXG4gICAgICAgIGhpZGRlbjogJ0hpZGRlbldpZGdldCcsXG4gICAgfSxcbn07XG4vKiogV3JhcHMgdGhlIGdpdmVuIHdpZGdldCB3aXRoIHN0YXRlbGVzcyBmdW5jdGlvbmFsIGNvbXBvbmVudCB0aGF0IHdpbGwgbWVyZ2UgYW55IGBkZWZhdWx0UHJvcHMub3B0aW9uc2Agd2l0aCB0aGVcbiAqIGBvcHRpb25zYCB0aGF0IGFyZSBwcm92aWRlZCBpbiB0aGUgcHJvcHMuIEl0IHdpbGwgYWRkIHRoZSB3cmFwcGVyIGNvbXBvbmVudCBhcyBhIGBNZXJnZWRXaWRnZXRgIHByb3BlcnR5IG9udG8gdGhlXG4gKiBgV2lkZ2V0YCBzbyB0aGF0IGZ1dHVyZSBhdHRlbXB0cyB0byB3cmFwIGBBV2lkZ2V0YCB3aWxsIHJldHVybiB0aGUgYWxyZWFkeSBleGlzdGluZyB3cmFwcGVyLlxuICpcbiAqIEBwYXJhbSBBV2lkZ2V0IC0gQSB3aWRnZXQgdGhhdCB3aWxsIGJlIHdyYXBwZWQgb3Igb25lIHRoYXQgaXMgYWxyZWFkeSB3cmFwcGVkXG4gKiBAcmV0dXJucyAtIFRoZSB3cmFwcGVyIHdpZGdldFxuICovXG5mdW5jdGlvbiBtZXJnZVdpZGdldE9wdGlvbnMoQVdpZGdldCkge1xuICAgIGxldCBNZXJnZWRXaWRnZXQgPSBnZXQoQVdpZGdldCwgJ01lcmdlZFdpZGdldCcpO1xuICAgIC8vIGNhY2hlIHJldHVybiB2YWx1ZSBhcyBwcm9wZXJ0eSBvZiB3aWRnZXQgZm9yIHByb3BlciByZWFjdCByZWNvbmNpbGlhdGlvblxuICAgIGlmICghTWVyZ2VkV2lkZ2V0KSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gKEFXaWRnZXQuZGVmYXVsdFByb3BzICYmIEFXaWRnZXQuZGVmYXVsdFByb3BzLm9wdGlvbnMpIHx8IHt9O1xuICAgICAgICBNZXJnZWRXaWRnZXQgPSAoeyBvcHRpb25zLCAuLi5wcm9wcyB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gX2pzeChBV2lkZ2V0LCB7IG9wdGlvbnM6IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLm9wdGlvbnMgfSwgLi4ucHJvcHMgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHNldChBV2lkZ2V0LCAnTWVyZ2VkV2lkZ2V0JywgTWVyZ2VkV2lkZ2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIE1lcmdlZFdpZGdldDtcbn1cbi8qKiBHaXZlbiBhIHNjaGVtYSByZXByZXNlbnRpbmcgYSBmaWVsZCB0byByZW5kZXIgYW5kIGVpdGhlciB0aGUgbmFtZSBvciBhY3R1YWwgYFdpZGdldGAgaW1wbGVtZW50YXRpb24sIHJldHVybnMgdGhlXG4gKiBSZWFjdCBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHJlbmRlciB0aGUgd2lkZ2V0LiBJZiB0aGUgYHdpZGdldGAgaXMgYWxyZWFkeSBhIFJlYWN0IGNvbXBvbmVudCwgdGhlbiBpdCBpcyB3cmFwcGVkXG4gKiB3aXRoIGEgYE1lcmdlZFdpZGdldGAuIE90aGVyd2lzZSBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gbG9vayB1cCB0aGUgd2lkZ2V0IGluc2lkZSBvZiB0aGUgYHJlZ2lzdGVyZWRXaWRnZXRzYCBtYXAgYmFzZWRcbiAqIG9uIHRoZSBzY2hlbWEgdHlwZSBhbmQgYHdpZGdldGAgbmFtZS4gSWYgbm8gd2lkZ2V0IGNvbXBvbmVudCBjYW4gYmUgZm91bmQgYW4gYEVycm9yYCBpcyB0aHJvd24uXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHRoZSBmaWVsZFxuICogQHBhcmFtIFt3aWRnZXRdIC0gRWl0aGVyIHRoZSBuYW1lIG9mIHRoZSB3aWRnZXQgT1IgYSBgV2lkZ2V0YCBpbXBsZW1lbnRhdGlvbiB0byB1c2VcbiAqIEBwYXJhbSBbcmVnaXN0ZXJlZFdpZGdldHM9e31dIC0gQSByZWdpc3RyeSBvZiB3aWRnZXQgbmFtZSB0byBgV2lkZ2V0YCBpbXBsZW1lbnRhdGlvblxuICogQHJldHVybnMgLSBUaGUgYFdpZGdldGAgY29tcG9uZW50IHRvIHVzZVxuICogQHRocm93cyAtIEFuIGVycm9yIGlmIHRoZXJlIGlzIG5vIGBXaWRnZXRgIGNvbXBvbmVudCB0aGF0IGNhbiBiZSByZXR1cm5lZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHJlZ2lzdGVyZWRXaWRnZXRzID0ge30pIHtcbiAgICBjb25zdCB0eXBlID0gZ2V0U2NoZW1hVHlwZShzY2hlbWEpO1xuICAgIGlmICh0eXBlb2Ygd2lkZ2V0ID09PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgICh3aWRnZXQgJiYgUmVhY3RJcy5pc0ZvcndhcmRSZWYoY3JlYXRlRWxlbWVudCh3aWRnZXQpKSkgfHxcbiAgICAgICAgUmVhY3RJcy5pc01lbW8od2lkZ2V0KSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VXaWRnZXRPcHRpb25zKHdpZGdldCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2lkZ2V0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHdpZGdldCBkZWZpbml0aW9uOiAke3R5cGVvZiB3aWRnZXR9YCk7XG4gICAgfVxuICAgIGlmICh3aWRnZXQgaW4gcmVnaXN0ZXJlZFdpZGdldHMpIHtcbiAgICAgICAgY29uc3QgcmVnaXN0ZXJlZFdpZGdldCA9IHJlZ2lzdGVyZWRXaWRnZXRzW3dpZGdldF07XG4gICAgICAgIHJldHVybiBnZXRXaWRnZXQoc2NoZW1hLCByZWdpc3RlcmVkV2lkZ2V0LCByZWdpc3RlcmVkV2lkZ2V0cyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKCEodHlwZSBpbiB3aWRnZXRNYXApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHdpZGdldCBmb3IgdHlwZSAnJHt0eXBlfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod2lkZ2V0IGluIHdpZGdldE1hcFt0eXBlXSkge1xuICAgICAgICAgICAgY29uc3QgcmVnaXN0ZXJlZFdpZGdldCA9IHJlZ2lzdGVyZWRXaWRnZXRzW3dpZGdldE1hcFt0eXBlXVt3aWRnZXRdXTtcbiAgICAgICAgICAgIHJldHVybiBnZXRXaWRnZXQoc2NoZW1hLCByZWdpc3RlcmVkV2lkZ2V0LCByZWdpc3RlcmVkV2lkZ2V0cyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyB3aWRnZXQgJyR7d2lkZ2V0fScgZm9yIHR5cGUgJyR7dHlwZX0nYCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRXaWRnZXQuanMubWFwIiwiaW1wb3J0IGdldFdpZGdldCBmcm9tICcuL2dldFdpZGdldCc7XG4vKiogRGV0ZWN0cyB3aGV0aGVyIHRoZSBgd2lkZ2V0YCBleGlzdHMgZm9yIHRoZSBgc2NoZW1hYCB3aXRoIHRoZSBhc3NvY2lhdGVkIGByZWdpc3RyeVdpZGdldHNgIGFuZCByZXR1cm5zIHRydWUgaWYgaXRcbiAqIGRvZXMsIG9yIGZhbHNlIGlmIGl0IGRvZXNuJ3QuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHRoZSBmaWVsZFxuICogQHBhcmFtIHdpZGdldCAtIEVpdGhlciB0aGUgbmFtZSBvZiB0aGUgd2lkZ2V0IE9SIGEgYFdpZGdldGAgaW1wbGVtZW50YXRpb24gdG8gdXNlXG4gKiBAcGFyYW0gW3JlZ2lzdGVyZWRXaWRnZXRzPXt9XSAtIEEgcmVnaXN0cnkgb2Ygd2lkZ2V0IG5hbWUgdG8gYFdpZGdldGAgaW1wbGVtZW50YXRpb25cbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgd2lkZ2V0IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhhc1dpZGdldChzY2hlbWEsIHdpZGdldCwgcmVnaXN0ZXJlZFdpZGdldHMgPSB7fSkge1xuICAgIHRyeSB7XG4gICAgICAgIGdldFdpZGdldChzY2hlbWEsIHdpZGdldCwgcmVnaXN0ZXJlZFdpZGdldHMpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc3QgZXJyID0gZTtcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlICYmIChlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdObyB3aWRnZXQnKSB8fCBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdVbnN1cHBvcnRlZCB3aWRnZXQnKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhhc1dpZGdldC5qcy5tYXAiLCJpbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCB7IElEX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKiBHZW5lcmF0ZXMgYSBjb25zaXN0ZW50IGBpZGAgcGF0dGVybiBmb3IgYSBnaXZlbiBgaWRgIGFuZCBhIGBzdWZmaXhgXG4gKlxuICogQHBhcmFtIGlkIC0gRWl0aGVyIHNpbXBsZSBzdHJpbmcgaWQgb3IgYW4gSWRTY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IGl0XG4gKiBAcGFyYW0gc3VmZml4IC0gVGhlIHN1ZmZpeCB0byBhcHBlbmQgdG8gdGhlIGlkXG4gKi9cbmZ1bmN0aW9uIGlkR2VuZXJhdG9yKGlkLCBzdWZmaXgpIHtcbiAgICBjb25zdCB0aGVJZCA9IGlzU3RyaW5nKGlkKSA/IGlkIDogaWRbSURfS0VZXTtcbiAgICByZXR1cm4gYCR7dGhlSWR9X18ke3N1ZmZpeH1gO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGZpZWxkIGRlc2NyaXB0aW9uIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnNpc3RlbnQgaWQgZm9yIHRoZSBmaWVsZCBkZXNjcmlwdGlvbiBlbGVtZW50IGZyb20gdGhlIGdpdmVuIGBpZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaXB0aW9uSWQoaWQpIHtcbiAgICByZXR1cm4gaWRHZW5lcmF0b3IoaWQsICdkZXNjcmlwdGlvbicpO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGZpZWxkIGVycm9yIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnNpc3RlbnQgaWQgZm9yIHRoZSBmaWVsZCBlcnJvciBlbGVtZW50IGZyb20gdGhlIGdpdmVuIGBpZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9ySWQoaWQpIHtcbiAgICByZXR1cm4gaWRHZW5lcmF0b3IoaWQsICdlcnJvcicpO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGZpZWxkIGV4YW1wbGVzIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnNpc3RlbnQgaWQgZm9yIHRoZSBmaWVsZCBleGFtcGxlcyBlbGVtZW50IGZyb20gdGhlIGdpdmVuIGBpZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4YW1wbGVzSWQoaWQpIHtcbiAgICByZXR1cm4gaWRHZW5lcmF0b3IoaWQsICdleGFtcGxlcycpO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGZpZWxkIGhlbHAgZWxlbWVudFxuICpcbiAqIEBwYXJhbSBpZCAtIEVpdGhlciBzaW1wbGUgc3RyaW5nIGlkIG9yIGFuIElkU2NoZW1hIGZyb20gd2hpY2ggdG8gZXh0cmFjdCBpdFxuICogQHJldHVybnMgLSBUaGUgY29uc2lzdGVudCBpZCBmb3IgdGhlIGZpZWxkIGhlbHAgZWxlbWVudCBmcm9tIHRoZSBnaXZlbiBgaWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoZWxwSWQoaWQpIHtcbiAgICByZXR1cm4gaWRHZW5lcmF0b3IoaWQsICdoZWxwJyk7XG59XG4vKiogUmV0dXJuIGEgY29uc2lzdGVudCBgaWRgIGZvciB0aGUgZmllbGQgdGl0bGUgZWxlbWVudFxuICpcbiAqIEBwYXJhbSBpZCAtIEVpdGhlciBzaW1wbGUgc3RyaW5nIGlkIG9yIGFuIElkU2NoZW1hIGZyb20gd2hpY2ggdG8gZXh0cmFjdCBpdFxuICogQHJldHVybnMgLSBUaGUgY29uc2lzdGVudCBpZCBmb3IgdGhlIGZpZWxkIHRpdGxlIGVsZW1lbnQgZnJvbSB0aGUgZ2l2ZW4gYGlkYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdGl0bGVJZChpZCkge1xuICAgIHJldHVybiBpZEdlbmVyYXRvcihpZCwgJ3RpdGxlJyk7XG59XG4vKiogUmV0dXJuIGEgbGlzdCBvZiBlbGVtZW50IGlkcyB0aGF0IGNvbnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmllbGQgdGhhdCBjYW4gYmUgdXNlZCB0byBhcyB0aGUgYXJpYVxuICogZGVzY3JpcHRpb24gb2YgdGhlIGZpZWxkLiBUaGlzIGlzIGNvcnJlY3RseSBvbWl0dGluZyBgdGl0bGVJZGAgd2hpY2ggd291bGQgYmUgXCJsYWJlbGluZ1wiIHJhdGhlciB0aGFuIFwiZGVzY3JpYmluZ1wiIHRoZVxuICogZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEBwYXJhbSBbaW5jbHVkZUV4YW1wbGVzPWZhbHNlXSAtIE9wdGlvbmFsIGZsYWcsIGlmIHRydWUsIHdpbGwgYWRkIHRoZSBgZXhhbXBsZXNJZGAgaW50byB0aGUgbGlzdFxuICogQHJldHVybnMgLSBUaGUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGxpc3Qgb2YgaWRzIGZvciB1c2UgaW4gYW4gYGFyaWEtZGVzY3JpYmVkQnlgIGF0dHJpYnV0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJpYURlc2NyaWJlZEJ5SWRzKGlkLCBpbmNsdWRlRXhhbXBsZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGV4YW1wbGVzID0gaW5jbHVkZUV4YW1wbGVzID8gYCAke2V4YW1wbGVzSWQoaWQpfWAgOiAnJztcbiAgICByZXR1cm4gYCR7ZXJyb3JJZChpZCl9ICR7ZGVzY3JpcHRpb25JZChpZCl9ICR7aGVscElkKGlkKX0ke2V4YW1wbGVzfWA7XG59XG4vKiogUmV0dXJuIGEgY29uc2lzdGVudCBgaWRgIGZvciB0aGUgYG9wdGlvbkluZGV4YHMgb2YgYSBgUmFkaW9gIG9yIGBDaGVja2JveGVzYCB3aWRnZXRcbiAqXG4gKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIHBhcmVudCBjb21wb25lbnQgZm9yIHRoZSBvcHRpb25cbiAqIEBwYXJhbSBvcHRpb25JbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgb3B0aW9uIGZvciB3aGljaCB0aGUgaWQgaXMgZGVzaXJlZFxuICogQHJldHVybnMgLSBBbiBpZCBmb3IgdGhlIG9wdGlvbiBpbmRleCBiYXNlZCBvbiB0aGUgcGFyZW50IGBpZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbklkKGlkLCBvcHRpb25JbmRleCkge1xuICAgIHJldHVybiBgJHtpZH0tJHtvcHRpb25JbmRleH1gO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aWRHZW5lcmF0b3JzLmpzLm1hcCIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhYmVsVmFsdWUobGFiZWwsIGhpZGVMYWJlbCwgZmFsbGJhY2spIHtcbiAgICByZXR1cm4gaGlkZUxhYmVsID8gZmFsbGJhY2sgOiBsYWJlbDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxhYmVsVmFsdWUuanMubWFwIiwiLyoqIENvbnZlcnRzIGEgbG9jYWwgRGF0ZSBzdHJpbmcgaW50byBhIFVUQyBkYXRlIHN0cmluZ1xuICpcbiAqIEBwYXJhbSBkYXRlU3RyaW5nIC0gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGRhdGUgYXMgYWNjZXB0ZWQgYnkgdGhlIGBEYXRlKClgIGNvbnN0cnVjdG9yXG4gKiBAcmV0dXJucyAtIEEgVVRDIGRhdGUgc3RyaW5nIGlmIGBkYXRlU3RyaW5nYCBpcyB0cnV0aHksIG90aGVyd2lzZSB1bmRlZmluZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbG9jYWxUb1VUQyhkYXRlU3RyaW5nKSB7XG4gICAgcmV0dXJuIGRhdGVTdHJpbmcgPyBuZXcgRGF0ZShkYXRlU3RyaW5nKS50b0pTT04oKSA6IHVuZGVmaW5lZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvY2FsVG9VVEMuanMubWFwIiwiaW1wb3J0IHsgQ09OU1RfS0VZLCBFTlVNX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKiBSZXR1cm5zIHRoZSBjb25zdGFudCB2YWx1ZSBmcm9tIHRoZSBzY2hlbWEgd2hlbiBpdCBpcyBlaXRoZXIgYSBzaW5nbGUgdmFsdWUgZW51bSBvciBoYXMgYSBjb25zdCBrZXkuIE90aGVyd2lzZVxuICogdGhyb3dzIGFuIGVycm9yLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZyb20gd2hpY2ggdG8gb2J0YWluIHRoZSBjb25zdGFudCB2YWx1ZVxuICogQHJldHVybnMgLSBUaGUgY29uc3RhbnQgdmFsdWUgZm9yIHRoZSBzY2hlbWFcbiAqIEB0aHJvd3MgLSBFcnJvciB3aGVuIHRoZSBzY2hlbWEgZG9lcyBub3QgaGF2ZSBhIGNvbnN0YW50IHZhbHVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvQ29uc3RhbnQoc2NoZW1hKSB7XG4gICAgaWYgKEVOVU1fS0VZIGluIHNjaGVtYSAmJiBBcnJheS5pc0FycmF5KHNjaGVtYS5lbnVtKSAmJiBzY2hlbWEuZW51bS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYS5lbnVtWzBdO1xuICAgIH1cbiAgICBpZiAoQ09OU1RfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hLmNvbnN0O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NjaGVtYSBjYW5ub3QgYmUgaW5mZXJyZWQgYXMgYSBjb25zdGFudCcpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG9Db25zdGFudC5qcy5tYXAiLCJpbXBvcnQgdG9Db25zdGFudCBmcm9tICcuL3RvQ29uc3RhbnQnO1xuaW1wb3J0IGdldFVpT3B0aW9ucyBmcm9tICcuL2dldFVpT3B0aW9ucyc7XG4vKiogR2V0cyB0aGUgbGlzdCBvZiBvcHRpb25zIGZyb20gdGhlIGBzY2hlbWFgLiBJZiB0aGUgc2NoZW1hIGhhcyBhbiBlbnVtIGxpc3QsIHRoZW4gdGhvc2UgZW51bSB2YWx1ZXMgYXJlIHJldHVybmVkLiBUaGVcbiAqIGxhYmVscyBmb3IgdGhlIG9wdGlvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgbm9uLXN0YW5kYXJkLCBSSlNGLWRlcHJlY2F0ZWQgYGVudW1OYW1lc2AgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2VcbiAqIHRoZSBsYWJlbCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBgdmFsdWVgLiBJZiB0aGUgc2NoZW1hIGhhcyBhIGBvbmVPZmAgb3IgYGFueU9mYCwgdGhlbiB0aGUgdmFsdWUgaXMgdGhlIGxpc3Qgb2ZcbiAqIGBjb25zdGAgdmFsdWVzIGZyb20gdGhlIHNjaGVtYSBhbmQgdGhlIGxhYmVsIGlzIGVpdGhlciB0aGUgYHNjaGVtYS50aXRsZWAgb3IgdGhlIHZhbHVlLiBJZiBhIGB1aVNjaGVtYWAgaXMgcHJvdmlkZWRcbiAqIGFuZCBpdCBoYXMgdGhlIGB1aTplbnVtTmFtZXNgIG1hdGNoZWQgd2l0aCBgZW51bWAgb3IgaXQgaGFzIGFuIGFzc29jaWF0ZWQgYG9uZU9mYCBvciBgYW55T2ZgIHdpdGggYSBsaXN0IG9mIG9iamVjdHNcbiAqIGNvbnRhaW5pbmcgYHVpOnRpdGxlYCB0aGVuIHRoZSBVSSBzY2hlbWEgdmFsdWVzIHdpbGwgcmVwbGFjZSB0aGUgdmFsdWVzIGZyb20gdGhlIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIG9wdGlvbnMgbGlzdFxuICogQHBhcmFtIFt1aVNjaGVtYV0gLSBUaGUgb3B0aW9uYWwgdWlTY2hlbWEgZnJvbSB3aGljaCB0byBnZXQgYWx0ZXJuYXRlIGxhYmVscyBmb3IgdGhlIG9wdGlvbnNcbiAqIEByZXR1cm5zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyBmcm9tIHRoZSBzY2hlbWFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3B0aW9uc0xpc3Qoc2NoZW1hLCB1aVNjaGVtYSkge1xuICAgIC8vIFRPRE8gZmxpcCBnZW5lcmljcyB0byBtb3ZlIFQgZmlyc3QgaW4gdjZcbiAgICBjb25zdCBzY2hlbWFXaXRoRW51bU5hbWVzID0gc2NoZW1hO1xuICAgIGlmIChzY2hlbWEuZW51bSkge1xuICAgICAgICBsZXQgZW51bU5hbWVzO1xuICAgICAgICBpZiAodWlTY2hlbWEpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZW51bU5hbWVzOiB1aUVudW1OYW1lcyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICAgICAgICAgIGVudW1OYW1lcyA9IHVpRW51bU5hbWVzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZW51bU5hbWVzICYmIHNjaGVtYVdpdGhFbnVtTmFtZXMuZW51bU5hbWVzKSB7XG4gICAgICAgICAgICAvLyBlbnVtTmFtZXMgd2FzIGRlcHJlY2F0ZWQgaW4gdjUgYW5kIGlzIGludGVudGlvbmFsbHkgb21pdHRlZCBmcm9tIHRoZSBSSlNGU2NoZW1hIHR5cGUuXG4gICAgICAgICAgICAvLyBDYXN0IHRoZSB0eXBlIHRvIGluY2x1ZGUgZW51bU5hbWVzIHNvIHRoZSBmZWF0dXJlIHN0aWxsIHdvcmtzLlxuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1RoZSBcImVudW1OYW1lc1wiIHByb3BlcnR5IGluIHRoZSBzY2hlbWEgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIG1ham9yIHJlbGVhc2UuIFVzZSB0aGUgXCJ1aTplbnVtTmFtZXNcIiBwcm9wZXJ0eSBpbiB0aGUgdWlTY2hlbWEgaW5zdGVhZC4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVudW1OYW1lcyA9IHNjaGVtYVdpdGhFbnVtTmFtZXMuZW51bU5hbWVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2hlbWEuZW51bS5tYXAoKHZhbHVlLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IChlbnVtTmFtZXMgPT09IG51bGwgfHwgZW51bU5hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnVtTmFtZXNbaV0pIHx8IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4geyBsYWJlbCwgdmFsdWUgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGxldCBhbHRTY2hlbWFzID0gdW5kZWZpbmVkO1xuICAgIGxldCBhbHRVaVNjaGVtYXMgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHNjaGVtYS5hbnlPZikge1xuICAgICAgICBhbHRTY2hlbWFzID0gc2NoZW1hLmFueU9mO1xuICAgICAgICBhbHRVaVNjaGVtYXMgPSB1aVNjaGVtYSA9PT0gbnVsbCB8fCB1aVNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdWlTY2hlbWEuYW55T2Y7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNjaGVtYS5vbmVPZikge1xuICAgICAgICBhbHRTY2hlbWFzID0gc2NoZW1hLm9uZU9mO1xuICAgICAgICBhbHRVaVNjaGVtYXMgPSB1aVNjaGVtYSA9PT0gbnVsbCB8fCB1aVNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdWlTY2hlbWEub25lT2Y7XG4gICAgfVxuICAgIHJldHVybiAoYWx0U2NoZW1hcyAmJlxuICAgICAgICBhbHRTY2hlbWFzLm1hcCgoYVNjaGVtYURlZiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGl0bGUgfSA9IGdldFVpT3B0aW9ucyhhbHRVaVNjaGVtYXMgPT09IG51bGwgfHwgYWx0VWlTY2hlbWFzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhbHRVaVNjaGVtYXNbaW5kZXhdKTtcbiAgICAgICAgICAgIGNvbnN0IGFTY2hlbWEgPSBhU2NoZW1hRGVmO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0b0NvbnN0YW50KGFTY2hlbWEpO1xuICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0aXRsZSB8fCBhU2NoZW1hLnRpdGxlIHx8IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNjaGVtYTogYVNjaGVtYSxcbiAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9wdGlvbnNMaXN0LmpzLm1hcCIsIi8qKiBHaXZlbiBhIGxpc3Qgb2YgYHByb3BlcnRpZXNgIGFuZCBhbiBgb3JkZXJgIGxpc3QsIHJldHVybnMgYSBsaXN0IHRoYXQgY29udGFpbnMgdGhlIGBwcm9wZXJ0aWVzYCBvcmRlcmVkIGNvcnJlY3RseS5cbiAqIElmIGBvcmRlcmAgaXMgbm90IGFuIGFycmF5LCB0aGVuIHRoZSB1bnRvdWNoZWQgYHByb3BlcnRpZXNgIGxpc3QgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSBgcHJvcGVydGllc2AgaXMgb3JkZXJlZCBwZXJcbiAqIHRoZSBgb3JkZXJgIGxpc3QuIElmIGBvcmRlcmAgY29udGFpbnMgYSAnKicgdGhlbiBhbnkgYHByb3BlcnRpZXNgIHRoYXQgYXJlIG5vdCBtZW50aW9uZWQgZXhwbGljaXR5IGluIGBvcmRlcmAgd2lsbCBiZVxuICogcGxhY2VzIGluIHRoZSBsb2NhdGlvbiBvZiB0aGUgYCpgLlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gVGhlIGxpc3Qgb2YgcHJvcGVydHkga2V5cyB0byBiZSBvcmRlcmVkXG4gKiBAcGFyYW0gb3JkZXIgLSBBbiBhcnJheSBvZiBwcm9wZXJ0eSBrZXlzIHRvIGJlIG9yZGVyZWQgZmlyc3QsIHdpdGggYW4gb3B0aW9uYWwgJyonIHByb3BlcnR5XG4gKiBAcmV0dXJucyAtIEEgbGlzdCB3aXRoIHRoZSBgcHJvcGVydGllc2Agb3JkZXJlZFxuICogQHRocm93cyAtIEVycm9yIHdoZW4gdGhlIHByb3BlcnRpZXMgY2Fubm90IGJlIG9yZGVyZWQgY29ycmVjdGx5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBvcmRlcikge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShvcmRlcikpIHtcbiAgICAgICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gICAgfVxuICAgIGNvbnN0IGFycmF5VG9IYXNoID0gKGFycikgPT4gYXJyLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgICBwcmV2W2N1cnJdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwge30pO1xuICAgIGNvbnN0IGVycm9yUHJvcExpc3QgPSAoYXJyKSA9PiBhcnIubGVuZ3RoID4gMSA/IGBwcm9wZXJ0aWVzICcke2Fyci5qb2luKFwiJywgJ1wiKX0nYCA6IGBwcm9wZXJ0eSAnJHthcnJbMF19J2A7XG4gICAgY29uc3QgcHJvcGVydHlIYXNoID0gYXJyYXlUb0hhc2gocHJvcGVydGllcyk7XG4gICAgY29uc3Qgb3JkZXJGaWx0ZXJlZCA9IG9yZGVyLmZpbHRlcigocHJvcCkgPT4gcHJvcCA9PT0gJyonIHx8IHByb3BlcnR5SGFzaFtwcm9wXSk7XG4gICAgY29uc3Qgb3JkZXJIYXNoID0gYXJyYXlUb0hhc2gob3JkZXJGaWx0ZXJlZCk7XG4gICAgY29uc3QgcmVzdCA9IHByb3BlcnRpZXMuZmlsdGVyKChwcm9wKSA9PiAhb3JkZXJIYXNoW3Byb3BdKTtcbiAgICBjb25zdCByZXN0SW5kZXggPSBvcmRlckZpbHRlcmVkLmluZGV4T2YoJyonKTtcbiAgICBpZiAocmVzdEluZGV4ID09PSAtMSkge1xuICAgICAgICBpZiAocmVzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdWlTY2hlbWEgb3JkZXIgbGlzdCBkb2VzIG5vdCBjb250YWluICR7ZXJyb3JQcm9wTGlzdChyZXN0KX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JkZXJGaWx0ZXJlZDtcbiAgICB9XG4gICAgaWYgKHJlc3RJbmRleCAhPT0gb3JkZXJGaWx0ZXJlZC5sYXN0SW5kZXhPZignKicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndWlTY2hlbWEgb3JkZXIgbGlzdCBjb250YWlucyBtb3JlIHRoYW4gb25lIHdpbGRjYXJkIGl0ZW0nKTtcbiAgICB9XG4gICAgY29uc3QgY29tcGxldGUgPSBbLi4ub3JkZXJGaWx0ZXJlZF07XG4gICAgY29tcGxldGUuc3BsaWNlKHJlc3RJbmRleCwgMSwgLi4ucmVzdCk7XG4gICAgcmV0dXJuIGNvbXBsZXRlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3JkZXJQcm9wZXJ0aWVzLmpzLm1hcCIsIi8qKiBQYXJzZXMgdGhlIGBkYXRlU3RyaW5nYCBpbnRvIGEgYERhdGVPYmplY3RgLCBpbmNsdWRpbmcgdGhlIHRpbWUgaW5mb3JtYXRpb24gd2hlbiBgaW5jbHVkZVRpbWVgIGlzIHRydWVcbiAqXG4gKiBAcGFyYW0gZGF0ZVN0cmluZyAtIFRoZSBkYXRlIHN0cmluZyB0byBwYXJzZSBpbnRvIGEgRGF0ZU9iamVjdFxuICogQHBhcmFtIFtpbmNsdWRlVGltZT10cnVlXSAtIE9wdGlvbmFsIGZsYWcsIGlmIGZhbHNlLCB3aWxsIG5vdCBpbmNsdWRlIHRoZSB0aW1lIGRhdGEgaW50byB0aGUgb2JqZWN0XG4gKiBAcmV0dXJucyAtIFRoZSBkYXRlIHN0cmluZyBjb252ZXJ0ZWQgdG8gYSBgRGF0ZU9iamVjdGBcbiAqIEB0aHJvd3MgLSBFcnJvciB3aGVuIHRoZSBkYXRlIGNhbm5vdCBiZSBwYXJzZWQgZnJvbSB0aGUgc3RyaW5nXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlRGF0ZVN0cmluZyhkYXRlU3RyaW5nLCBpbmNsdWRlVGltZSA9IHRydWUpIHtcbiAgICBpZiAoIWRhdGVTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHllYXI6IC0xLFxuICAgICAgICAgICAgbW9udGg6IC0xLFxuICAgICAgICAgICAgZGF5OiAtMSxcbiAgICAgICAgICAgIGhvdXI6IGluY2x1ZGVUaW1lID8gLTEgOiAwLFxuICAgICAgICAgICAgbWludXRlOiBpbmNsdWRlVGltZSA/IC0xIDogMCxcbiAgICAgICAgICAgIHNlY29uZDogaW5jbHVkZVRpbWUgPyAtMSA6IDAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBwYXJzZSBkYXRlICcgKyBkYXRlU3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeWVhcjogZGF0ZS5nZXRVVENGdWxsWWVhcigpLFxuICAgICAgICBtb250aDogZGF0ZS5nZXRVVENNb250aCgpICsgMSxcbiAgICAgICAgZGF5OiBkYXRlLmdldFVUQ0RhdGUoKSxcbiAgICAgICAgaG91cjogaW5jbHVkZVRpbWUgPyBkYXRlLmdldFVUQ0hvdXJzKCkgOiAwLFxuICAgICAgICBtaW51dGU6IGluY2x1ZGVUaW1lID8gZGF0ZS5nZXRVVENNaW51dGVzKCkgOiAwLFxuICAgICAgICBzZWNvbmQ6IGluY2x1ZGVUaW1lID8gZGF0ZS5nZXRVVENTZWNvbmRzKCkgOiAwLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJzZURhdGVTdHJpbmcuanMubWFwIiwiLyoqIENoZWNrIHRvIHNlZSBpZiBhIGBzY2hlbWFgIHNwZWNpZmllcyB0aGF0IGEgdmFsdWUgbXVzdCBiZSB0cnVlLiBUaGlzIGhhcHBlbnMgd2hlbjpcbiAqIC0gYHNjaGVtYS5jb25zdGAgaXMgdHJ1dGh5XG4gKiAtIGBzY2hlbWEuZW51bWAgPT0gYFt0cnVlXWBcbiAqIC0gYHNjaGVtYS5hbnlPZmAgb3IgYHNjaGVtYS5vbmVPZmAgaGFzIGEgc2luZ2xlIHZhbHVlIHdoaWNoIHJlY3Vyc2l2ZWx5IHJldHVybnMgdHJ1ZVxuICogLSBgc2NoZW1hLmFsbE9mYCBoYXMgYXQgbGVhc3Qgb25lIHZhbHVlIHdoaWNoIHJlY3Vyc2l2ZWx5IHJldHVybnMgdHJ1ZVxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIHRvIGNoZWNrXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIHNjaGVtYSBzcGVjaWZpZXMgYSB2YWx1ZSB0aGF0IG11c3QgYmUgdHJ1ZSwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNjaGVtYVJlcXVpcmVzVHJ1ZVZhbHVlKHNjaGVtYSkge1xuICAgIC8vIENoZWNrIGlmIGNvbnN0IGlzIGEgdHJ1dGh5IHZhbHVlXG4gICAgaWYgKHNjaGVtYS5jb25zdCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgYW4gZW51bSBoYXMgYSBzaW5nbGUgdmFsdWUgb2YgdHJ1ZVxuICAgIGlmIChzY2hlbWEuZW51bSAmJiBzY2hlbWEuZW51bS5sZW5ndGggPT09IDEgJiYgc2NoZW1hLmVudW1bMF0gPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIElmIGFueU9mIGhhcyBhIHNpbmdsZSB2YWx1ZSwgZXZhbHVhdGUgdGhlIHN1YnNjaGVtYVxuICAgIGlmIChzY2hlbWEuYW55T2YgJiYgc2NoZW1hLmFueU9mLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hUmVxdWlyZXNUcnVlVmFsdWUoc2NoZW1hLmFueU9mWzBdKTtcbiAgICB9XG4gICAgLy8gSWYgb25lT2YgaGFzIGEgc2luZ2xlIHZhbHVlLCBldmFsdWF0ZSB0aGUgc3Vic2NoZW1hXG4gICAgaWYgKHNjaGVtYS5vbmVPZiAmJiBzY2hlbWEub25lT2YubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWFSZXF1aXJlc1RydWVWYWx1ZShzY2hlbWEub25lT2ZbMF0pO1xuICAgIH1cbiAgICAvLyBFdmFsdWF0ZSBlYWNoIHN1YnNjaGVtYSBpbiBhbGxPZiwgdG8gc2VlIGlmIG9uZSBvZiB0aGVtIHJlcXVpcmVzIGEgdHJ1ZSB2YWx1ZVxuICAgIGlmIChzY2hlbWEuYWxsT2YpIHtcbiAgICAgICAgY29uc3Qgc2NoZW1hU29tZSA9IChzdWJTY2hlbWEpID0+IHNjaGVtYVJlcXVpcmVzVHJ1ZVZhbHVlKHN1YlNjaGVtYSk7XG4gICAgICAgIHJldHVybiBzY2hlbWEuYWxsT2Yuc29tZShzY2hlbWFTb21lKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2NoZW1hUmVxdWlyZXNUcnVlVmFsdWUuanMubWFwIiwiaW1wb3J0IGRlZXBFcXVhbHMgZnJvbSAnLi9kZWVwRXF1YWxzJztcbi8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIGBjb21wb25lbnRgIHNob3VsZCBiZSByZXJlbmRlcmVkIGJ5IGNvbXBhcmluZyBpdHMgY3VycmVudCBzZXQgb2YgcHJvcHMgYW5kIHN0YXRlXG4gKiBhZ2FpbnN0IHRoZSBuZXh0IHNldC4gSWYgZWl0aGVyIG9mIHRob3NlIHR3byBzZXRzIGFyZSBub3QgdGhlIHNhbWUsIHRoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgcmVyZW5kZXJlZC5cbiAqXG4gKiBAcGFyYW0gY29tcG9uZW50IC0gQSBSZWFjdCBjb21wb25lbnQgYmVpbmcgY2hlY2tlZFxuICogQHBhcmFtIG5leHRQcm9wcyAtIFRoZSBuZXh0IHNldCBvZiBwcm9wcyBhZ2FpbnN0IHdoaWNoIHRvIGNoZWNrXG4gKiBAcGFyYW0gbmV4dFN0YXRlIC0gVGhlIG5leHQgc2V0IG9mIHN0YXRlIGFnYWluc3Qgd2hpY2ggdG8gY2hlY2tcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSByZS1yZW5kZXJlZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNob3VsZFJlbmRlcihjb21wb25lbnQsIG5leHRQcm9wcywgbmV4dFN0YXRlKSB7XG4gICAgY29uc3QgeyBwcm9wcywgc3RhdGUgfSA9IGNvbXBvbmVudDtcbiAgICByZXR1cm4gIWRlZXBFcXVhbHMocHJvcHMsIG5leHRQcm9wcykgfHwgIWRlZXBFcXVhbHMoc3RhdGUsIG5leHRTdGF0ZSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zaG91bGRSZW5kZXIuanMubWFwIiwiLyoqIFJldHVybnMgYSBVVEMgZGF0ZSBzdHJpbmcgZm9yIHRoZSBnaXZlbiBgZGF0ZU9iamVjdGAuIElmIGB0aW1lYCBpcyBmYWxzZSwgdGhlbiB0aGUgdGltZSBwb3J0aW9uIG9mIHRoZSBzdHJpbmcgaXNcbiAqIHJlbW92ZWQuXG4gKlxuICogQHBhcmFtIGRhdGVPYmplY3QgLSBUaGUgYERhdGVPYmplY3RgIHRvIGNvbnZlcnQgdG8gYSBkYXRlIHN0cmluZ1xuICogQHBhcmFtIFt0aW1lPXRydWVdIC0gT3B0aW9uYWwgZmxhZyB1c2VkIHRvIHJlbW92ZSB0aGUgdGltZSBwb3J0aW9uIG9mIHRoZSBkYXRlIHN0cmluZyBpZiBmYWxzZVxuICogQHJldHVybnMgLSBUaGUgVVRDIGRhdGUgc3RyaW5nXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvRGF0ZVN0cmluZyhkYXRlT2JqZWN0LCB0aW1lID0gdHJ1ZSkge1xuICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSwgaG91ciA9IDAsIG1pbnV0ZSA9IDAsIHNlY29uZCA9IDAgfSA9IGRhdGVPYmplY3Q7XG4gICAgY29uc3QgdXRjVGltZSA9IERhdGUuVVRDKHllYXIsIG1vbnRoIC0gMSwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCk7XG4gICAgY29uc3QgZGF0ZXRpbWUgPSBuZXcgRGF0ZSh1dGNUaW1lKS50b0pTT04oKTtcbiAgICByZXR1cm4gdGltZSA/IGRhdGV0aW1lIDogZGF0ZXRpbWUuc2xpY2UoMCwgMTApO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG9EYXRlU3RyaW5nLmpzLm1hcCIsImltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJ2xvZGFzaC9pc1BsYWluT2JqZWN0JztcbmltcG9ydCB7IEVSUk9SU19LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogQ29udmVydHMgYW4gYGVycm9yU2NoZW1hYCBpbnRvIGEgbGlzdCBvZiBgUkpTRlZhbGlkYXRpb25FcnJvcnNgXG4gKlxuICogQHBhcmFtIGVycm9yU2NoZW1hIC0gVGhlIGBFcnJvclNjaGVtYWAgaW5zdGFuY2UgdG8gY29udmVydFxuICogQHBhcmFtIFtmaWVsZFBhdGg9W11dIC0gVGhlIGN1cnJlbnQgZmllbGQgcGF0aCwgZGVmYXVsdHMgdG8gW10gaWYgbm90IHNwZWNpZmllZFxuICogQHJldHVybnMgLSBUaGUgbGlzdCBvZiBgUkpTRlZhbGlkYXRpb25FcnJvcnNgIGV4dHJhY3RlZCBmcm9tIHRoZSBgZXJyb3JTY2hlbWFgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvRXJyb3JMaXN0KGVycm9yU2NoZW1hLCBmaWVsZFBhdGggPSBbXSkge1xuICAgIGlmICghZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBsZXQgZXJyb3JMaXN0ID0gW107XG4gICAgaWYgKEVSUk9SU19LRVkgaW4gZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgZXJyb3JMaXN0ID0gZXJyb3JMaXN0LmNvbmNhdChlcnJvclNjaGVtYVtFUlJPUlNfS0VZXS5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gYC4ke2ZpZWxkUGF0aC5qb2luKCcuJyl9YDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBzdGFjazogYCR7cHJvcGVydHl9ICR7bWVzc2FnZX1gLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JTY2hlbWEpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGtleSAhPT0gRVJST1JTX0tFWSkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBlcnJvclNjaGVtYVtrZXldO1xuICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QoY2hpbGRTY2hlbWEpKSB7XG4gICAgICAgICAgICAgICAgYWNjID0gYWNjLmNvbmNhdCh0b0Vycm9yTGlzdChjaGlsZFNjaGVtYSwgWy4uLmZpZWxkUGF0aCwga2V5XSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgZXJyb3JMaXN0KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvRXJyb3JMaXN0LmpzLm1hcCIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpLFxuICAgIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKSxcbiAgICB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9QYXRoKCdhLmIuYycpO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gKlxuICogXy50b1BhdGgoJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiBbJ2EnLCAnMCcsICdiJywgJ2MnXVxuICovXG5mdW5jdGlvbiB0b1BhdGgodmFsdWUpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCB0b0tleSk7XG4gIH1cbiAgcmV0dXJuIGlzU3ltYm9sKHZhbHVlKSA/IFt2YWx1ZV0gOiBjb3B5QXJyYXkoc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvUGF0aDtcbiIsImltcG9ydCB0b1BhdGggZnJvbSAnbG9kYXNoL3RvUGF0aCc7XG5pbXBvcnQgRXJyb3JTY2hlbWFCdWlsZGVyIGZyb20gJy4vRXJyb3JTY2hlbWFCdWlsZGVyJztcbi8qKiBUcmFuc2Zvcm1zIGEgcmpzZiB2YWxpZGF0aW9uIGVycm9ycyBsaXN0OlxuICogW1xuICogICB7cHJvcGVydHk6ICcubGV2ZWwxLmxldmVsMlsyXS5sZXZlbDMnLCBtZXNzYWdlOiAnZXJyIGEnfSxcbiAqICAge3Byb3BlcnR5OiAnLmxldmVsMS5sZXZlbDJbMl0ubGV2ZWwzJywgbWVzc2FnZTogJ2VyciBiJ30sXG4gKiAgIHtwcm9wZXJ0eTogJy5sZXZlbDEubGV2ZWwyWzRdLmxldmVsMycsIG1lc3NhZ2U6ICdlcnIgYid9LFxuICogXVxuICogSW50byBhbiBlcnJvciB0cmVlOlxuICoge1xuICogICBsZXZlbDE6IHtcbiAqICAgICBsZXZlbDI6IHtcbiAqICAgICAgIDI6IHtsZXZlbDM6IHtlcnJvcnM6IFsnZXJyIGEnLCAnZXJyIGInXX19LFxuICogICAgICAgNDoge2xldmVsMzoge2Vycm9yczogWydlcnIgYiddfX0sXG4gKiAgICAgfVxuICogICB9XG4gKiB9O1xuICpcbiAqIEBwYXJhbSBlcnJvcnMgLSBUaGUgbGlzdCBvZiBSSlNGVmFsaWRhdGlvbkVycm9yIG9iamVjdHNcbiAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYWAgYnVpbHQgZnJvbSB0aGUgbGlzdCBvZiBgUkpTRlZhbGlkYXRpb25FcnJvcnNgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvRXJyb3JTY2hlbWEoZXJyb3JzKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBFcnJvclNjaGVtYUJ1aWxkZXIoKTtcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICBlcnJvcnMuZm9yRWFjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcGVydHksIG1lc3NhZ2UgfSA9IGVycm9yO1xuICAgICAgICAgICAgLy8gV2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHJvb3QgZWxlbWVudCwganVzdCB1c2UgYW4gZW1wdHkgYXJyYXkgZm9yIHRoZSBwYXRoXG4gICAgICAgICAgICBjb25zdCBwYXRoID0gcHJvcGVydHkgPT09ICcuJyA/IFtdIDogdG9QYXRoKHByb3BlcnR5KTtcbiAgICAgICAgICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhdCB0aGUgcm9vdCAoLmxldmVsMSkgdGhlbiB0b1BhdGggY3JlYXRlc1xuICAgICAgICAgICAgLy8gYW4gZW1wdHkgYXJyYXkgZWxlbWVudCBhdCB0aGUgZmlyc3QgaW5kZXguIFJlbW92ZSBpdC5cbiAgICAgICAgICAgIGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgcGF0aFswXSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBwYXRoLnNwbGljZSgwLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgYnVpbGRlci5hZGRFcnJvcnMobWVzc2FnZSwgcGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlci5FcnJvclNjaGVtYTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvRXJyb3JTY2hlbWEuanMubWFwIiwiaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnbG9kYXNoL2lzUGxhaW5PYmplY3QnO1xuLyoqIFVud3JhcHMgdGhlIGBlcnJvckhhbmRsZXJgIHN0cnVjdHVyZSBpbnRvIHRoZSBhc3NvY2lhdGVkIGBFcnJvclNjaGVtYWAsIHN0cmlwcGluZyB0aGUgYGFkZEVycm9yKClgIGZ1bmN0aW9ucyBmcm9tIGl0XG4gKlxuICogQHBhcmFtIGVycm9ySGFuZGxlciAtIFRoZSBgRm9ybVZhbGlkYXRpb25gIGVycm9yIGhhbmRsaW5nIHN0cnVjdHVyZVxuICogQHJldHVybnMgLSBUaGUgYEVycm9yU2NoZW1hYCByZXN1bHRpbmcgZnJvbSB0aGUgc3RyaXBwaW5nIG9mIHRoZSBgYWRkRXJyb3IoKWAgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW53cmFwRXJyb3JIYW5kbGVyKGVycm9ySGFuZGxlcikge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvckhhbmRsZXIpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2FkZEVycm9yJykge1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkU2NoZW1hID0gZXJyb3JIYW5kbGVyW2tleV07XG4gICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChjaGlsZFNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgIFtrZXldOiB1bndyYXBFcnJvckhhbmRsZXIoY2hpbGRTY2hlbWEpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtrZXldOiBjaGlsZFNjaGVtYSB9O1xuICAgICAgICB9XG4gICAgfSwge30pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dW53cmFwRXJyb3JIYW5kbGVyLmpzLm1hcCIsImltcG9ydCBwYWQgZnJvbSAnLi9wYWQnO1xuLyoqIENvbnZlcnRzIGEgVVRDIGRhdGUgc3RyaW5nIGludG8gYSBsb2NhbCBEYXRlIGZvcm1hdFxuICpcbiAqIEBwYXJhbSBqc29uRGF0ZSAtIEEgVVRDIGRhdGUgc3RyaW5nXG4gKiBAcmV0dXJucyAtIEFuIGVtcHR5IHN0cmluZyB3aGVuIGBqc29uRGF0ZWAgaXMgZmFsc2V5LCBvdGhlcndpc2UgYSBkYXRlIHN0cmluZyBpbiBsb2NhbCBmb3JtYXRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXRjVG9Mb2NhbChqc29uRGF0ZSkge1xuICAgIGlmICghanNvbkRhdGUpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICAvLyByZXF1aXJlZCBmb3JtYXQgb2YgYCd5eXl5LU1NLWRkVGhoOm1tJyBmb2xsb3dlZCBieSBvcHRpb25hbCAnOnNzJyBvciAnOnNzLlNTUydcbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbnB1dC5odG1sI2xvY2FsLWRhdGUtYW5kLXRpbWUtc3RhdGUtKHR5cGUlM0RkYXRldGltZS1sb2NhbClcbiAgICAvLyA+IHNob3VsZCBiZSBhIF92YWxpZCBsb2NhbCBkYXRlIGFuZCB0aW1lIHN0cmluZ18gKG5vdCBHTVQpXG4gICAgLy8gTm90ZSAtIGRhdGUgY29uc3RydWN0b3IgcGFzc2VkIGxvY2FsIElTTy04NjAxIGRvZXMgbm90IGNvcnJlY3RseVxuICAgIC8vIGNoYW5nZSB0aW1lIHRvIFVUQyBpbiBub2RlIHByZS04XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGpzb25EYXRlKTtcbiAgICBjb25zdCB5eXl5ID0gcGFkKGRhdGUuZ2V0RnVsbFllYXIoKSwgNCk7XG4gICAgY29uc3QgTU0gPSBwYWQoZGF0ZS5nZXRNb250aCgpICsgMSwgMik7XG4gICAgY29uc3QgZGQgPSBwYWQoZGF0ZS5nZXREYXRlKCksIDIpO1xuICAgIGNvbnN0IGhoID0gcGFkKGRhdGUuZ2V0SG91cnMoKSwgMik7XG4gICAgY29uc3QgbW0gPSBwYWQoZGF0ZS5nZXRNaW51dGVzKCksIDIpO1xuICAgIGNvbnN0IHNzID0gcGFkKGRhdGUuZ2V0U2Vjb25kcygpLCAyKTtcbiAgICBjb25zdCBTU1MgPSBwYWQoZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSwgMyk7XG4gICAgcmV0dXJuIGAke3l5eXl9LSR7TU19LSR7ZGR9VCR7aGh9OiR7bW19OiR7c3N9LiR7U1NTfWA7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGNUb0xvY2FsLmpzLm1hcCIsImltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBtZXJnZU9iamVjdHMgZnJvbSAnLi9tZXJnZU9iamVjdHMnO1xuaW1wb3J0IHRvRXJyb3JMaXN0IGZyb20gJy4vdG9FcnJvckxpc3QnO1xuLyoqIE1lcmdlcyB0aGUgZXJyb3JzIGluIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGludG8gdGhlIGV4aXN0aW5nIGB2YWxpZGF0aW9uRGF0YWAgYnkgY29tYmluaW5nIHRoZSBoaWVyYXJjaGllcyBpbiB0aGVcbiAqIHR3byBgRXJyb3JTY2hlbWFgcyBhbmQgdGhlbiBhcHBlbmRpbmcgdGhlIGVycm9yIGxpc3QgZnJvbSB0aGUgYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgb2J0YWluZWQgYnkgY2FsbGluZ1xuICogYHRvRXJyb3JMaXN0KClgIG9uIHRoZSBgZXJyb3JzYCBpbiB0aGUgYHZhbGlkYXRpb25EYXRhYC4gSWYgbm8gYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgaXMgcGFzc2VkLCB0aGVuXG4gKiBgdmFsaWRhdGlvbkRhdGFgIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0aW9uRGF0YSAtIFRoZSBjdXJyZW50IGBWYWxpZGF0aW9uRGF0YWAgaW50byB3aGljaCB0byBtZXJnZSB0aGUgYWRkaXRpb25hbCBlcnJvcnNcbiAqIEBwYXJhbSBbYWRkaXRpb25hbEVycm9yU2NoZW1hXSAtIFRoZSBvcHRpb25hbCBhZGRpdGlvbmFsIHNldCBvZiBlcnJvcnMgaW4gYW4gYEVycm9yU2NoZW1hYFxuICogQHJldHVybnMgLSBUaGUgYHZhbGlkYXRpb25EYXRhYCB3aXRoIHRoZSBhZGRpdGlvbmFsIGVycm9ycyBmcm9tIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIG1lcmdlZCBpbnRvIGl0LCBpZiBwcm92aWRlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmFsaWRhdGlvbkRhdGFNZXJnZSh2YWxpZGF0aW9uRGF0YSwgYWRkaXRpb25hbEVycm9yU2NoZW1hKSB7XG4gICAgaWYgKCFhZGRpdGlvbmFsRXJyb3JTY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25EYXRhO1xuICAgIH1cbiAgICBjb25zdCB7IGVycm9yczogb2xkRXJyb3JzLCBlcnJvclNjaGVtYTogb2xkRXJyb3JTY2hlbWEgfSA9IHZhbGlkYXRpb25EYXRhO1xuICAgIGxldCBlcnJvcnMgPSB0b0Vycm9yTGlzdChhZGRpdGlvbmFsRXJyb3JTY2hlbWEpO1xuICAgIGxldCBlcnJvclNjaGVtYSA9IGFkZGl0aW9uYWxFcnJvclNjaGVtYTtcbiAgICBpZiAoIWlzRW1wdHkob2xkRXJyb3JTY2hlbWEpKSB7XG4gICAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VPYmplY3RzKG9sZEVycm9yU2NoZW1hLCBhZGRpdGlvbmFsRXJyb3JTY2hlbWEsIHRydWUpO1xuICAgICAgICBlcnJvcnMgPSBbLi4ub2xkRXJyb3JzXS5jb25jYXQoZXJyb3JzKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZXJyb3JTY2hlbWEsIGVycm9ycyB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmFsaWRhdGlvbkRhdGFNZXJnZS5qcy5tYXAiLCJpbXBvcnQgeyBSRUZfS0VZLCBST09UX1NDSEVNQV9QUkVGSVggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0Jztcbi8qKiBUYWtlcyBhIGBub2RlYCBvYmplY3QgYW5kIHRyYW5zZm9ybXMgYW55IGNvbnRhaW5lZCBgJHJlZmAgbm9kZSB2YXJpYWJsZXMgd2l0aCBhIHByZWZpeCwgcmVjdXJzaXZlbHkgY2FsbGluZ1xuICogYHdpdGhJZFJlZlByZWZpeGAgZm9yIGFueSBvdGhlciBlbGVtZW50cy5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBvYmplY3Qgbm9kZSB0byB3aGljaCBhIFJPT1RfU0NIRU1BX1BSRUZJWCBpcyBhZGRlZCB3aGVuIGEgUkVGX0tFWSBpcyBwYXJ0IG9mIGl0XG4gKi9cbmZ1bmN0aW9uIHdpdGhJZFJlZlByZWZpeE9iamVjdChub2RlKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbm9kZSkge1xuICAgICAgICBjb25zdCByZWFsT2JqID0gbm9kZTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByZWFsT2JqW2tleV07XG4gICAgICAgIGlmIChrZXkgPT09IFJFRl9LRVkgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgICAgICAgIHJlYWxPYmpba2V5XSA9IFJPT1RfU0NIRU1BX1BSRUZJWCArIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVhbE9ialtrZXldID0gd2l0aElkUmVmUHJlZml4KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbn1cbi8qKiBUYWtlcyBhIGBub2RlYCBvYmplY3QgbGlzdCBhbmQgdHJhbnNmb3JtcyBhbnkgY29udGFpbmVkIGAkcmVmYCBub2RlIHZhcmlhYmxlcyB3aXRoIGEgcHJlZml4LCByZWN1cnNpdmVseSBjYWxsaW5nXG4gKiBgd2l0aElkUmVmUHJlZml4YCBmb3IgYW55IG90aGVyIGVsZW1lbnRzLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIGxpc3Qgb2Ygb2JqZWN0IG5vZGVzIHRvIHdoaWNoIGEgUk9PVF9TQ0hFTUFfUFJFRklYIGlzIGFkZGVkIHdoZW4gYSBSRUZfS0VZIGlzIHBhcnQgb2YgaXRcbiAqL1xuZnVuY3Rpb24gd2l0aElkUmVmUHJlZml4QXJyYXkobm9kZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBub2RlW2ldID0gd2l0aElkUmVmUHJlZml4KG5vZGVbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbn1cbi8qKiBSZWN1cnNpdmVseSBwcmVmaXhlcyBhbGwgYCRyZWZgcyBpbiBhIHNjaGVtYSB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgYFJPT1RfU0NIRU1BX1BSRUZJWGAgY29uc3RhbnQuXG4gKiBUaGlzIGlzIHVzZWQgaW4gaXNWYWxpZCB0byBtYWtlIHJlZmVyZW5jZXMgdG8gdGhlIHJvb3RTY2hlbWFcbiAqXG4gKiBAcGFyYW0gc2NoZW1hTm9kZSAtIFRoZSBvYmplY3Qgbm9kZSB0byB3aGljaCBhIFJPT1RfU0NIRU1BX1BSRUZJWCBpcyBhZGRlZCB3aGVuIGEgUkVGX0tFWSBpcyBwYXJ0IG9mIGl0XG4gKiBAcmV0dXJucyAtIEEgY29weSBvZiB0aGUgYHNjaGVtYU5vZGVgIHdpdGggdXBkYXRlZCBgJHJlZmBzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdpdGhJZFJlZlByZWZpeChzY2hlbWFOb2RlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hTm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHdpdGhJZFJlZlByZWZpeEFycmF5KFsuLi5zY2hlbWFOb2RlXSk7XG4gICAgfVxuICAgIGlmIChpc09iamVjdChzY2hlbWFOb2RlKSkge1xuICAgICAgICByZXR1cm4gd2l0aElkUmVmUHJlZml4T2JqZWN0KHsgLi4uc2NoZW1hTm9kZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHNjaGVtYU5vZGU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD13aXRoSWRSZWZQcmVmaXguanMubWFwIiwiLyoqIEFuIGVudW1lcmF0aW9uIG9mIGFsbCB0aGUgdHJhbnNsYXRhYmxlIHN0cmluZ3MgdXNlZCBieSBgQHJqc2YvY29yZWAgYW5kIGl0cyB0aGVtZXMuIFRoZSB2YWx1ZSBvZiBlYWNoIG9mIHRoZVxuICogZW51bWVyYXRpb24ga2V5cyBpcyBleHBlY3RlZCB0byBiZSB0aGUgYWN0dWFsIGVuZ2xpc2ggc3RyaW5nLiBTb21lIHN0cmluZ3MgY29udGFpbiByZXBsYWNlYWJsZSBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBhcyBpbmRpY2F0ZWQgYnkgYCUxYCwgYCUyYCwgZXRjLiBUaGUgbnVtYmVyIGFmdGVyIHRoZSBgJWAgaW5kaWNhdGVzIHRoZSBvcmRlciBvZiB0aGUgcGFyYW1ldGVyLiBUaGUgb3JkZXJpbmcgb2ZcbiAqIHBhcmFtZXRlcnMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSBsYW5ndWFnZXMgbWF5IGNob29zZSB0byBwdXQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgYmVmb3JlIHRoZSBmaXJzdCBpbiBpdHNcbiAqIHRyYW5zbGF0aW9uLiBBbHNvLCBzb21lIHN0cmluZ3MgYXJlIHJlbmRlcmVkIHVzaW5nIGBtYXJrZG93bi10by1qc3hgIGFuZCB0aHVzIHN1cHBvcnQgbWFya2Rvd24gYW5kIGlubGluZSBodG1sLlxuICovXG5leHBvcnQgdmFyIFRyYW5zbGF0YWJsZVN0cmluZztcbihmdW5jdGlvbiAoVHJhbnNsYXRhYmxlU3RyaW5nKSB7XG4gICAgLyoqIEZhbGxiYWNrIHRpdGxlIG9mIGFuIGFycmF5IGl0ZW0sIHVzZWQgYnkgQXJyYXlGaWVsZCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkFycmF5SXRlbVRpdGxlXCJdID0gXCJJdGVtXCI7XG4gICAgLyoqIE1pc3NpbmcgaXRlbXMgcmVhc29uLCB1c2VkIGJ5IEFycmF5RmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJNaXNzaW5nSXRlbXNcIl0gPSBcIk1pc3NpbmcgaXRlbXMgZGVmaW5pdGlvblwiO1xuICAgIC8qKiBZZXMgbGFiZWwsIHVzZWQgYnkgQm9vbGVhbkZpZWxkICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiWWVzTGFiZWxcIl0gPSBcIlllc1wiO1xuICAgIC8qKiBObyBsYWJlbCwgdXNlZCBieSBCb29sZWFuRmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJOb0xhYmVsXCJdID0gXCJOb1wiO1xuICAgIC8qKiBDbG9zZSBsYWJlbCwgdXNlZCBieSBFcnJvckxpc3QgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJDbG9zZUxhYmVsXCJdID0gXCJDbG9zZVwiO1xuICAgIC8qKiBFcnJvcnMgbGFiZWwsIHVzZWQgYnkgRXJyb3JMaXN0ICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiRXJyb3JzTGFiZWxcIl0gPSBcIkVycm9yc1wiO1xuICAgIC8qKiBOZXcgYWRkaXRpb25hbFByb3BlcnRpZXMgc3RyaW5nIGRlZmF1bHQgdmFsdWUsIHVzZWQgYnkgT2JqZWN0RmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJOZXdTdHJpbmdEZWZhdWx0XCJdID0gXCJOZXcgVmFsdWVcIjtcbiAgICAvKiogQWRkIGJ1dHRvbiB0aXRsZSwgdXNlZCBieSBBZGRCdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJBZGRCdXR0b25cIl0gPSBcIkFkZFwiO1xuICAgIC8qKiBBZGQgYnV0dG9uIHRpdGxlLCB1c2VkIGJ5IEFkZEJ1dHRvbiAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkFkZEl0ZW1CdXR0b25cIl0gPSBcIkFkZCBJdGVtXCI7XG4gICAgLyoqIENvcHkgYnV0dG9uIHRpdGxlLCB1c2VkIGJ5IEljb25CdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJDb3B5QnV0dG9uXCJdID0gXCJDb3B5XCI7XG4gICAgLyoqIE1vdmUgZG93biBidXR0b24gdGl0bGUsIHVzZWQgYnkgSWNvbkJ1dHRvbiAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIk1vdmVEb3duQnV0dG9uXCJdID0gXCJNb3ZlIGRvd25cIjtcbiAgICAvKiogTW92ZSB1cCBidXR0b24gdGl0bGUsIHVzZWQgYnkgSWNvbkJ1dHRvbiAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIk1vdmVVcEJ1dHRvblwiXSA9IFwiTW92ZSB1cFwiO1xuICAgIC8qKiBSZW1vdmUgYnV0dG9uIHRpdGxlLCB1c2VkIGJ5IEljb25CdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJSZW1vdmVCdXR0b25cIl0gPSBcIlJlbW92ZVwiO1xuICAgIC8qKiBOb3cgbGFiZWwsIHVzZWQgYnkgQWx0RGF0ZVdpZGdldCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIk5vd0xhYmVsXCJdID0gXCJOb3dcIjtcbiAgICAvKiogQ2xlYXIgbGFiZWwsIHVzZWQgYnkgQWx0RGF0ZVdpZGdldCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkNsZWFyTGFiZWxcIl0gPSBcIkNsZWFyXCI7XG4gICAgLyoqIEFyaWEgZGF0ZSBsYWJlbCwgdXNlZCBieSBEYXRlV2lkZ2V0ICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiQXJpYURhdGVMYWJlbFwiXSA9IFwiU2VsZWN0IGEgZGF0ZVwiO1xuICAgIC8qKiBGaWxlIHByZXZpZXcgbGFiZWwsIHVzZWQgYnkgRmlsZVdpZGdldCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlByZXZpZXdMYWJlbFwiXSA9IFwiUHJldmlld1wiO1xuICAgIC8qKiBEZWNyZW1lbnQgYnV0dG9uIGFyaWEgbGFiZWwsIHVzZWQgYnkgVXBEb3duV2lkZ2V0ICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiRGVjcmVtZW50QXJpYUxhYmVsXCJdID0gXCJEZWNyZWFzZSB2YWx1ZSBieSAxXCI7XG4gICAgLyoqIEluY3JlbWVudCBidXR0b24gYXJpYSBsYWJlbCwgdXNlZCBieSBVcERvd25XaWRnZXQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJJbmNyZW1lbnRBcmlhTGFiZWxcIl0gPSBcIkluY3JlYXNlIHZhbHVlIGJ5IDFcIjtcbiAgICAvLyBTdHJpbmdzIHdpdGggcmVwbGFjZWFibGUgcGFyYW1ldGVyc1xuICAgIC8qKiBVbmtub3duIGZpZWxkIHR5cGUgcmVhc29uLCB3aGVyZSAlMSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIHR5cGUgYXMgcHJvdmlkZWQgYnkgU2NoZW1hRmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJVbmtub3duRmllbGRUeXBlXCJdID0gXCJVbmtub3duIGZpZWxkIHR5cGUgJTFcIjtcbiAgICAvKiogT3B0aW9uIHByZWZpeCwgd2hlcmUgJTEgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvcHRpb24gaW5kZXggYXMgcHJvdmlkZWQgYnkgTXVsdGlTY2hlbWFGaWVsZCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIk9wdGlvblByZWZpeFwiXSA9IFwiT3B0aW9uICUxXCI7XG4gICAgLyoqIE9wdGlvbiBwcmVmaXgsIHdoZXJlICUxIGFuZCAlMiB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBzY2hlbWEgdGl0bGUgYW5kIG9wdGlvbiBpbmRleCwgcmVzcGVjdGl2ZWx5IGFzIHByb3ZpZGVkIGJ5XG4gICAgICogTXVsdGlTY2hlbWFGaWVsZFxuICAgICAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlRpdGxlT3B0aW9uUHJlZml4XCJdID0gXCIlMSBvcHRpb24gJTJcIjtcbiAgICAvKiogS2V5IGxhYmVsLCB3aGVyZSAlMSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBsYWJlbCBhcyBwcm92aWRlZCBieSBXcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJLZXlMYWJlbFwiXSA9IFwiJTEgS2V5XCI7XG4gICAgLy8gU3RyaW5ncyB3aXRoIHJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgQU5EL09SIHRoYXQgc3VwcG9ydCBtYXJrZG93biBhbmQgaHRtbFxuICAgIC8qKiBJbnZhbGlkIG9iamVjdCBmaWVsZCBjb25maWd1cmF0aW9uIGFzIHByb3ZpZGVkIGJ5IHRoZSBPYmplY3RGaWVsZC5cbiAgICAgKiBOT1RFOiBVc2UgbWFya2Rvd24gbm90YXRpb24gcmF0aGVyIHRoYW4gaHRtbCB0YWdzLlxuICAgICAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkludmFsaWRPYmplY3RGaWVsZFwiXSA9IFwiSW52YWxpZCBcXFwiJTFcXFwiIG9iamVjdCBmaWVsZCBjb25maWd1cmF0aW9uOiBfJTJfLlwiO1xuICAgIC8qKiBVbnN1cHBvcnRlZCBmaWVsZCBzY2hlbWEsIHVzZWQgYnkgVW5zdXBwb3J0ZWRGaWVsZCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlVuc3VwcG9ydGVkRmllbGRcIl0gPSBcIlVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYS5cIjtcbiAgICAvKiogVW5zdXBwb3J0ZWQgZmllbGQgc2NoZW1hLCB3aGVyZSAlMSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBpZFNjaGVtYS4kaWQgYXMgcHJvdmlkZWQgYnkgVW5zdXBwb3J0ZWRGaWVsZC5cbiAgICAgKiBOT1RFOiBVc2UgbWFya2Rvd24gbm90YXRpb24gcmF0aGVyIHRoYW4gaHRtbCB0YWdzLlxuICAgICAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlVuc3VwcG9ydGVkRmllbGRXaXRoSWRcIl0gPSBcIlVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYSBmb3IgZmllbGQgYCUxYC5cIjtcbiAgICAvKiogVW5zdXBwb3J0ZWQgZmllbGQgc2NoZW1hLCB3aGVyZSAlMSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSByZWFzb24gc3RyaW5nIGFzIHByb3ZpZGVkIGJ5IFVuc3VwcG9ydGVkRmllbGQuXG4gICAgICogTk9URTogVXNlIG1hcmtkb3duIG5vdGF0aW9uIHJhdGhlciB0aGFuIGh0bWwgdGFncy5cbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJVbnN1cHBvcnRlZEZpZWxkV2l0aFJlYXNvblwiXSA9IFwiVW5zdXBwb3J0ZWQgZmllbGQgc2NoZW1hOiBfJTFfLlwiO1xuICAgIC8qKiBVbnN1cHBvcnRlZCBmaWVsZCBzY2hlbWEsIHdoZXJlICUxIGFuZCAlMiB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBpZFNjaGVtYS4kaWQgYW5kIHJlYXNvbiBzdHJpbmdzLCByZXNwZWN0aXZlbHksXG4gICAgICogYXMgcHJvdmlkZWQgYnkgVW5zdXBwb3J0ZWRGaWVsZC5cbiAgICAgKiBOT1RFOiBVc2UgbWFya2Rvd24gbm90YXRpb24gcmF0aGVyIHRoYW4gaHRtbCB0YWdzLlxuICAgICAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlVuc3VwcG9ydGVkRmllbGRXaXRoSWRBbmRSZWFzb25cIl0gPSBcIlVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYSBmb3IgZmllbGQgYCUxYDogXyUyXy5cIjtcbiAgICAvKiogRmlsZSBuYW1lLCB0eXBlIGFuZCBzaXplIGluZm8sIHdoZXJlICUxLCAlMiBhbmQgJTMgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgZmlsZSBuYW1lLCBmaWxlIHR5cGUgYW5kIGZpbGUgc2l6ZSBhc1xuICAgICAqIHByb3ZpZGVkIGJ5IEZpbGVXaWRnZXRcbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJGaWxlc0luZm9cIl0gPSBcIioqJTEqKiAoJTIsICUzIGJ5dGVzKVwiO1xufSkoVHJhbnNsYXRhYmxlU3RyaW5nIHx8IChUcmFuc2xhdGFibGVTdHJpbmcgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW51bXMuanMubWFwIiwiLyoqIEBsaWNlbnNlIFVSSS5qcyB2NC40LjEgKGMpIDIwMTEgR2FyeSBDb3VydC4gTGljZW5zZTogaHR0cDovL2dpdGh1Yi5jb20vZ2FyeWNvdXJ0L3VyaS1qcyAqL1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcblx0dHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gZmFjdG9yeShleHBvcnRzKSA6XG5cdHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2V4cG9ydHMnXSwgZmFjdG9yeSkgOlxuXHQoZmFjdG9yeSgoZ2xvYmFsLlVSSSA9IGdsb2JhbC5VUkkgfHwge30pKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoZXhwb3J0cykgeyAndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIG1lcmdlKCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzZXRzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIHNldHNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgaWYgKHNldHMubGVuZ3RoID4gMSkge1xuICAgICAgICBzZXRzWzBdID0gc2V0c1swXS5zbGljZSgwLCAtMSk7XG4gICAgICAgIHZhciB4bCA9IHNldHMubGVuZ3RoIC0gMTtcbiAgICAgICAgZm9yICh2YXIgeCA9IDE7IHggPCB4bDsgKyt4KSB7XG4gICAgICAgICAgICBzZXRzW3hdID0gc2V0c1t4XS5zbGljZSgxLCAtMSk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0c1t4bF0gPSBzZXRzW3hsXS5zbGljZSgxKTtcbiAgICAgICAgcmV0dXJuIHNldHMuam9pbignJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNldHNbMF07XG4gICAgfVxufVxuZnVuY3Rpb24gc3ViZXhwKHN0cikge1xuICAgIHJldHVybiBcIig/OlwiICsgc3RyICsgXCIpXCI7XG59XG5mdW5jdGlvbiB0eXBlT2Yobykge1xuICAgIHJldHVybiBvID09PSB1bmRlZmluZWQgPyBcInVuZGVmaW5lZFwiIDogbyA9PT0gbnVsbCA/IFwibnVsbFwiIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNwbGl0KFwiIFwiKS5wb3AoKS5zcGxpdChcIl1cIikuc2hpZnQoKS50b0xvd2VyQ2FzZSgpO1xufVxuZnVuY3Rpb24gdG9VcHBlckNhc2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci50b1VwcGVyQ2FzZSgpO1xufVxuZnVuY3Rpb24gdG9BcnJheShvYmopIHtcbiAgICByZXR1cm4gb2JqICE9PSB1bmRlZmluZWQgJiYgb2JqICE9PSBudWxsID8gb2JqIGluc3RhbmNlb2YgQXJyYXkgPyBvYmogOiB0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gXCJudW1iZXJcIiB8fCBvYmouc3BsaXQgfHwgb2JqLnNldEludGVydmFsIHx8IG9iai5jYWxsID8gW29ial0gOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChvYmopIDogW107XG59XG5mdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHtcbiAgICB2YXIgb2JqID0gdGFyZ2V0O1xuICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBidWlsZEV4cHMoaXNJUkkpIHtcbiAgICB2YXIgQUxQSEEkJCA9IFwiW0EtWmEtel1cIixcbiAgICAgICAgQ1IkID0gXCJbXFxcXHgwRF1cIixcbiAgICAgICAgRElHSVQkJCA9IFwiWzAtOV1cIixcbiAgICAgICAgRFFVT1RFJCQgPSBcIltcXFxceDIyXVwiLFxuICAgICAgICBIRVhESUckJCA9IG1lcmdlKERJR0lUJCQsIFwiW0EtRmEtZl1cIiksXG4gICAgICAgIC8vY2FzZS1pbnNlbnNpdGl2ZVxuICAgIExGJCQgPSBcIltcXFxceDBBXVwiLFxuICAgICAgICBTUCQkID0gXCJbXFxcXHgyMF1cIixcbiAgICAgICAgUENUX0VOQ09ERUQkID0gc3ViZXhwKHN1YmV4cChcIiVbRUZlZl1cIiArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSArIFwifFwiICsgc3ViZXhwKFwiJVs4OUEtRmEtZl1cIiArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSArIFwifFwiICsgc3ViZXhwKFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkpLFxuICAgICAgICAvL2V4cGFuZGVkXG4gICAgR0VOX0RFTElNUyQkID0gXCJbXFxcXDpcXFxcL1xcXFw/XFxcXCNcXFxcW1xcXFxdXFxcXEBdXCIsXG4gICAgICAgIFNVQl9ERUxJTVMkJCA9IFwiW1xcXFwhXFxcXCRcXFxcJlxcXFwnXFxcXChcXFxcKVxcXFwqXFxcXCtcXFxcLFxcXFw7XFxcXD1dXCIsXG4gICAgICAgIFJFU0VSVkVEJCQgPSBtZXJnZShHRU5fREVMSU1TJCQsIFNVQl9ERUxJTVMkJCksXG4gICAgICAgIFVDU0NIQVIkJCA9IGlzSVJJID8gXCJbXFxcXHhBMC1cXFxcdTIwMERcXFxcdTIwMTAtXFxcXHUyMDI5XFxcXHUyMDJGLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVGRkVGXVwiIDogXCJbXVwiLFxuICAgICAgICAvL3N1YnNldCwgZXhjbHVkZXMgYmlkaSBjb250cm9sIGNoYXJhY3RlcnNcbiAgICBJUFJJVkFURSQkID0gaXNJUkkgPyBcIltcXFxcdUUwMDAtXFxcXHVGOEZGXVwiIDogXCJbXVwiLFxuICAgICAgICAvL3N1YnNldFxuICAgIFVOUkVTRVJWRUQkJCA9IG1lcmdlKEFMUEhBJCQsIERJR0lUJCQsIFwiW1xcXFwtXFxcXC5cXFxcX1xcXFx+XVwiLCBVQ1NDSEFSJCQpLFxuICAgICAgICBTQ0hFTUUkID0gc3ViZXhwKEFMUEhBJCQgKyBtZXJnZShBTFBIQSQkLCBESUdJVCQkLCBcIltcXFxcK1xcXFwtXFxcXC5dXCIpICsgXCIqXCIpLFxuICAgICAgICBVU0VSSU5GTyQgPSBzdWJleHAoc3ViZXhwKFBDVF9FTkNPREVEJCArIFwifFwiICsgbWVyZ2UoVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFw6XVwiKSkgKyBcIipcIiksXG4gICAgICAgIERFQ19PQ1RFVCQgPSBzdWJleHAoc3ViZXhwKFwiMjVbMC01XVwiKSArIFwifFwiICsgc3ViZXhwKFwiMlswLTRdXCIgKyBESUdJVCQkKSArIFwifFwiICsgc3ViZXhwKFwiMVwiICsgRElHSVQkJCArIERJR0lUJCQpICsgXCJ8XCIgKyBzdWJleHAoXCJbMS05XVwiICsgRElHSVQkJCkgKyBcInxcIiArIERJR0lUJCQpLFxuICAgICAgICBERUNfT0NURVRfUkVMQVhFRCQgPSBzdWJleHAoc3ViZXhwKFwiMjVbMC01XVwiKSArIFwifFwiICsgc3ViZXhwKFwiMlswLTRdXCIgKyBESUdJVCQkKSArIFwifFwiICsgc3ViZXhwKFwiMVwiICsgRElHSVQkJCArIERJR0lUJCQpICsgXCJ8XCIgKyBzdWJleHAoXCIwP1sxLTldXCIgKyBESUdJVCQkKSArIFwifDA/MD9cIiArIERJR0lUJCQpLFxuICAgICAgICAvL3JlbGF4ZWQgcGFyc2luZyBydWxlc1xuICAgIElQVjRBRERSRVNTJCA9IHN1YmV4cChERUNfT0NURVRfUkVMQVhFRCQgKyBcIlxcXFwuXCIgKyBERUNfT0NURVRfUkVMQVhFRCQgKyBcIlxcXFwuXCIgKyBERUNfT0NURVRfUkVMQVhFRCQgKyBcIlxcXFwuXCIgKyBERUNfT0NURVRfUkVMQVhFRCQpLFxuICAgICAgICBIMTYkID0gc3ViZXhwKEhFWERJRyQkICsgXCJ7MSw0fVwiKSxcbiAgICAgICAgTFMzMiQgPSBzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIgKyBIMTYkKSArIFwifFwiICsgSVBWNEFERFJFU1MkKSxcbiAgICAgICAgSVBWNkFERFJFU1MxJCA9IHN1YmV4cChzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcIns2fVwiICsgTFMzMiQpLFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDYoIGgxNiBcIjpcIiApIGxzMzJcbiAgICBJUFY2QUREUkVTUzIkID0gc3ViZXhwKFwiXFxcXDpcXFxcOlwiICsgc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7NX1cIiArIExTMzIkKSxcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgXCI6OlwiIDUoIGgxNiBcIjpcIiApIGxzMzJcbiAgICBJUFY2QUREUkVTUzMkID0gc3ViZXhwKHN1YmV4cChIMTYkKSArIFwiP1xcXFw6XFxcXDpcIiArIHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezR9XCIgKyBMUzMyJCksXG4gICAgICAgIC8vWyAgICAgICAgICAgICAgIGgxNiBdIFwiOjpcIiA0KCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1M0JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCwxfVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcInszfVwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjEoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAzKCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1M1JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCwyfVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcInsyfVwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjIoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAyKCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1M2JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCwzfVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBIMTYkICsgXCJcXFxcOlwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjMoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAgICBoMTYgXCI6XCIgICBsczMyXG4gICAgSVBWNkFERFJFU1M3JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCw0fVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBMUzMyJCksXG4gICAgICAgIC8vWyAqNCggaDE2IFwiOlwiICkgaDE2IF0gXCI6OlwiICAgICAgICAgICAgICBsczMyXG4gICAgSVBWNkFERFJFU1M4JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCw1fVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBIMTYkKSxcbiAgICAgICAgLy9bICo1KCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgICAgICAgICAgICAgIGgxNlxuICAgIElQVjZBRERSRVNTOSQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsNn1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiKSxcbiAgICAgICAgLy9bICo2KCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCJcbiAgICBJUFY2QUREUkVTUyQgPSBzdWJleHAoW0lQVjZBRERSRVNTMSQsIElQVjZBRERSRVNTMiQsIElQVjZBRERSRVNTMyQsIElQVjZBRERSRVNTNCQsIElQVjZBRERSRVNTNSQsIElQVjZBRERSRVNTNiQsIElQVjZBRERSRVNTNyQsIElQVjZBRERSRVNTOCQsIElQVjZBRERSRVNTOSRdLmpvaW4oXCJ8XCIpKSxcbiAgICAgICAgWk9ORUlEJCA9IHN1YmV4cChzdWJleHAoVU5SRVNFUlZFRCQkICsgXCJ8XCIgKyBQQ1RfRU5DT0RFRCQpICsgXCIrXCIpLFxuICAgICAgICAvL1JGQyA2ODc0XG4gICAgSVBWNkFERFJaJCA9IHN1YmV4cChJUFY2QUREUkVTUyQgKyBcIlxcXFwlMjVcIiArIFpPTkVJRCQpLFxuICAgICAgICAvL1JGQyA2ODc0XG4gICAgSVBWNkFERFJaX1JFTEFYRUQkID0gc3ViZXhwKElQVjZBRERSRVNTJCArIHN1YmV4cChcIlxcXFwlMjV8XFxcXCUoPyFcIiArIEhFWERJRyQkICsgXCJ7Mn0pXCIpICsgWk9ORUlEJCksXG4gICAgICAgIC8vUkZDIDY4NzQsIHdpdGggcmVsYXhlZCBwYXJzaW5nIHJ1bGVzXG4gICAgSVBWRlVUVVJFJCA9IHN1YmV4cChcIlt2Vl1cIiArIEhFWERJRyQkICsgXCIrXFxcXC5cIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcOl1cIikgKyBcIitcIiksXG4gICAgICAgIElQX0xJVEVSQUwkID0gc3ViZXhwKFwiXFxcXFtcIiArIHN1YmV4cChJUFY2QUREUlpfUkVMQVhFRCQgKyBcInxcIiArIElQVjZBRERSRVNTJCArIFwifFwiICsgSVBWRlVUVVJFJCkgKyBcIlxcXFxdXCIpLFxuICAgICAgICAvL1JGQyA2ODc0XG4gICAgUkVHX05BTUUkID0gc3ViZXhwKHN1YmV4cChQQ1RfRU5DT0RFRCQgKyBcInxcIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSkgKyBcIipcIiksXG4gICAgICAgIEhPU1QkID0gc3ViZXhwKElQX0xJVEVSQUwkICsgXCJ8XCIgKyBJUFY0QUREUkVTUyQgKyBcIig/IVwiICsgUkVHX05BTUUkICsgXCIpXCIgKyBcInxcIiArIFJFR19OQU1FJCksXG4gICAgICAgIFBPUlQkID0gc3ViZXhwKERJR0lUJCQgKyBcIipcIiksXG4gICAgICAgIEFVVEhPUklUWSQgPSBzdWJleHAoc3ViZXhwKFVTRVJJTkZPJCArIFwiQFwiKSArIFwiP1wiICsgSE9TVCQgKyBzdWJleHAoXCJcXFxcOlwiICsgUE9SVCQpICsgXCI/XCIpLFxuICAgICAgICBQQ0hBUiQgPSBzdWJleHAoUENUX0VOQ09ERUQkICsgXCJ8XCIgKyBtZXJnZShVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCwgXCJbXFxcXDpcXFxcQF1cIikpLFxuICAgICAgICBTRUdNRU5UJCA9IHN1YmV4cChQQ0hBUiQgKyBcIipcIiksXG4gICAgICAgIFNFR01FTlRfTlokID0gc3ViZXhwKFBDSEFSJCArIFwiK1wiKSxcbiAgICAgICAgU0VHTUVOVF9OWl9OQyQgPSBzdWJleHAoc3ViZXhwKFBDVF9FTkNPREVEJCArIFwifFwiICsgbWVyZ2UoVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFxAXVwiKSkgKyBcIitcIiksXG4gICAgICAgIFBBVEhfQUJFTVBUWSQgPSBzdWJleHAoc3ViZXhwKFwiXFxcXC9cIiArIFNFR01FTlQkKSArIFwiKlwiKSxcbiAgICAgICAgUEFUSF9BQlNPTFVURSQgPSBzdWJleHAoXCJcXFxcL1wiICsgc3ViZXhwKFNFR01FTlRfTlokICsgUEFUSF9BQkVNUFRZJCkgKyBcIj9cIiksXG4gICAgICAgIC8vc2ltcGxpZmllZFxuICAgIFBBVEhfTk9TQ0hFTUUkID0gc3ViZXhwKFNFR01FTlRfTlpfTkMkICsgUEFUSF9BQkVNUFRZJCksXG4gICAgICAgIC8vc2ltcGxpZmllZFxuICAgIFBBVEhfUk9PVExFU1MkID0gc3ViZXhwKFNFR01FTlRfTlokICsgUEFUSF9BQkVNUFRZJCksXG4gICAgICAgIC8vc2ltcGxpZmllZFxuICAgIFBBVEhfRU1QVFkkID0gXCIoPyFcIiArIFBDSEFSJCArIFwiKVwiLFxuICAgICAgICBQQVRIJCA9IHN1YmV4cChQQVRIX0FCRU1QVFkkICsgXCJ8XCIgKyBQQVRIX0FCU09MVVRFJCArIFwifFwiICsgUEFUSF9OT1NDSEVNRSQgKyBcInxcIiArIFBBVEhfUk9PVExFU1MkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCksXG4gICAgICAgIFFVRVJZJCA9IHN1YmV4cChzdWJleHAoUENIQVIkICsgXCJ8XCIgKyBtZXJnZShcIltcXFxcL1xcXFw/XVwiLCBJUFJJVkFURSQkKSkgKyBcIipcIiksXG4gICAgICAgIEZSQUdNRU5UJCA9IHN1YmV4cChzdWJleHAoUENIQVIkICsgXCJ8W1xcXFwvXFxcXD9dXCIpICsgXCIqXCIpLFxuICAgICAgICBISUVSX1BBUlQkID0gc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC9cIiArIEFVVEhPUklUWSQgKyBQQVRIX0FCRU1QVFkkKSArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfUk9PVExFU1MkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCksXG4gICAgICAgIFVSSSQgPSBzdWJleHAoU0NIRU1FJCArIFwiXFxcXDpcIiArIEhJRVJfUEFSVCQgKyBzdWJleHAoXCJcXFxcP1wiICsgUVVFUlkkKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCNcIiArIEZSQUdNRU5UJCkgKyBcIj9cIiksXG4gICAgICAgIFJFTEFUSVZFX1BBUlQkID0gc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC9cIiArIEFVVEhPUklUWSQgKyBQQVRIX0FCRU1QVFkkKSArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfTk9TQ0hFTUUkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCksXG4gICAgICAgIFJFTEFUSVZFJCA9IHN1YmV4cChSRUxBVElWRV9QQVJUJCArIHN1YmV4cChcIlxcXFw/XCIgKyBRVUVSWSQpICsgXCI/XCIgKyBzdWJleHAoXCJcXFxcI1wiICsgRlJBR01FTlQkKSArIFwiP1wiKSxcbiAgICAgICAgVVJJX1JFRkVSRU5DRSQgPSBzdWJleHAoVVJJJCArIFwifFwiICsgUkVMQVRJVkUkKSxcbiAgICAgICAgQUJTT0xVVEVfVVJJJCA9IHN1YmV4cChTQ0hFTUUkICsgXCJcXFxcOlwiICsgSElFUl9QQVJUJCArIHN1YmV4cChcIlxcXFw/XCIgKyBRVUVSWSQpICsgXCI/XCIpLFxuICAgICAgICBHRU5FUklDX1JFRiQgPSBcIl4oXCIgKyBTQ0hFTUUkICsgXCIpXFxcXDpcIiArIHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvKFwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/KVwiKSArIFwiPyhcIiArIFBBVEhfQUJFTVBUWSQgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQgKyBcIilcIikgKyBzdWJleHAoXCJcXFxcPyhcIiArIFFVRVJZJCArIFwiKVwiKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCMoXCIgKyBGUkFHTUVOVCQgKyBcIilcIikgKyBcIj8kXCIsXG4gICAgICAgIFJFTEFUSVZFX1JFRiQgPSBcIl4oKXswfVwiICsgc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC8oXCIgKyBzdWJleHAoXCIoXCIgKyBVU0VSSU5GTyQgKyBcIilAXCIpICsgXCI/KFwiICsgSE9TVCQgKyBcIilcIiArIHN1YmV4cChcIlxcXFw6KFwiICsgUE9SVCQgKyBcIilcIikgKyBcIj8pXCIpICsgXCI/KFwiICsgUEFUSF9BQkVNUFRZJCArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfTk9TQ0hFTUUkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCArIFwiKVwiKSArIHN1YmV4cChcIlxcXFw/KFwiICsgUVVFUlkkICsgXCIpXCIpICsgXCI/XCIgKyBzdWJleHAoXCJcXFxcIyhcIiArIEZSQUdNRU5UJCArIFwiKVwiKSArIFwiPyRcIixcbiAgICAgICAgQUJTT0xVVEVfUkVGJCA9IFwiXihcIiArIFNDSEVNRSQgKyBcIilcXFxcOlwiICsgc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC8oXCIgKyBzdWJleHAoXCIoXCIgKyBVU0VSSU5GTyQgKyBcIilAXCIpICsgXCI/KFwiICsgSE9TVCQgKyBcIilcIiArIHN1YmV4cChcIlxcXFw6KFwiICsgUE9SVCQgKyBcIilcIikgKyBcIj8pXCIpICsgXCI/KFwiICsgUEFUSF9BQkVNUFRZJCArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfUk9PVExFU1MkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCArIFwiKVwiKSArIHN1YmV4cChcIlxcXFw/KFwiICsgUVVFUlkkICsgXCIpXCIpICsgXCI/JFwiLFxuICAgICAgICBTQU1FRE9DX1JFRiQgPSBcIl5cIiArIHN1YmV4cChcIlxcXFwjKFwiICsgRlJBR01FTlQkICsgXCIpXCIpICsgXCI/JFwiLFxuICAgICAgICBBVVRIT1JJVFlfUkVGJCA9IFwiXlwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/JFwiO1xuICAgIHJldHVybiB7XG4gICAgICAgIE5PVF9TQ0hFTUU6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXl1cIiwgQUxQSEEkJCwgRElHSVQkJCwgXCJbXFxcXCtcXFxcLVxcXFwuXVwiKSwgXCJnXCIpLFxuICAgICAgICBOT1RfVVNFUklORk86IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXDpdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfSE9TVDogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVcXFxcW1xcXFxdXFxcXDpdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfUEFUSDogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVcXFxcL1xcXFw6XFxcXEBdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfUEFUSF9OT1NDSEVNRTogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVcXFxcL1xcXFxAXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1FVRVJZOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJV1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFw6XFxcXEBcXFxcL1xcXFw/XVwiLCBJUFJJVkFURSQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfRlJBR01FTlQ6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCwgXCJbXFxcXDpcXFxcQFxcXFwvXFxcXD9dXCIpLCBcImdcIiksXG4gICAgICAgIEVTQ0FQRTogbmV3IFJlZ0V4cChtZXJnZShcIlteXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgVU5SRVNFUlZFRDogbmV3IFJlZ0V4cChVTlJFU0VSVkVEJCQsIFwiZ1wiKSxcbiAgICAgICAgT1RIRVJfQ0hBUlM6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXVwiLCBVTlJFU0VSVkVEJCQsIFJFU0VSVkVEJCQpLCBcImdcIiksXG4gICAgICAgIFBDVF9FTkNPREVEOiBuZXcgUmVnRXhwKFBDVF9FTkNPREVEJCwgXCJnXCIpLFxuICAgICAgICBJUFY0QUREUkVTUzogbmV3IFJlZ0V4cChcIl4oXCIgKyBJUFY0QUREUkVTUyQgKyBcIikkXCIpLFxuICAgICAgICBJUFY2QUREUkVTUzogbmV3IFJlZ0V4cChcIl5cXFxcWz8oXCIgKyBJUFY2QUREUkVTUyQgKyBcIilcIiArIHN1YmV4cChzdWJleHAoXCJcXFxcJTI1fFxcXFwlKD8hXCIgKyBIRVhESUckJCArIFwiezJ9KVwiKSArIFwiKFwiICsgWk9ORUlEJCArIFwiKVwiKSArIFwiP1xcXFxdPyRcIikgLy9SRkMgNjg3NCwgd2l0aCByZWxheGVkIHBhcnNpbmcgcnVsZXNcbiAgICB9O1xufVxudmFyIFVSSV9QUk9UT0NPTCA9IGJ1aWxkRXhwcyhmYWxzZSk7XG5cbnZhciBJUklfUFJPVE9DT0wgPSBidWlsZEV4cHModHJ1ZSk7XG5cbnZhciBzbGljZWRUb0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBzbGljZUl0ZXJhdG9yKGFyciwgaSkge1xuICAgIHZhciBfYXJyID0gW107XG4gICAgdmFyIF9uID0gdHJ1ZTtcbiAgICB2YXIgX2QgPSBmYWxzZTtcbiAgICB2YXIgX2UgPSB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG4gICAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIF9kID0gdHJ1ZTtcbiAgICAgIF9lID0gZXJyO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdKSBfaVtcInJldHVyblwiXSgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gX2FycjtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoYXJyLCBpKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9IGVsc2UgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkge1xuICAgICAgcmV0dXJuIHNsaWNlSXRlcmF0b3IoYXJyLCBpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG4gICAgfVxuICB9O1xufSgpO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG52YXIgdG9Db25zdW1hYmxlQXJyYXkgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuXG4gICAgcmV0dXJuIGFycjI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oYXJyKTtcbiAgfVxufTtcblxuLyoqIEhpZ2hlc3QgcG9zaXRpdmUgc2lnbmVkIDMyLWJpdCBmbG9hdCB2YWx1ZSAqL1xuXG52YXIgbWF4SW50ID0gMjE0NzQ4MzY0NzsgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxuXG4vKiogQm9vdHN0cmluZyBwYXJhbWV0ZXJzICovXG52YXIgYmFzZSA9IDM2O1xudmFyIHRNaW4gPSAxO1xudmFyIHRNYXggPSAyNjtcbnZhciBza2V3ID0gMzg7XG52YXIgZGFtcCA9IDcwMDtcbnZhciBpbml0aWFsQmlhcyA9IDcyO1xudmFyIGluaXRpYWxOID0gMTI4OyAvLyAweDgwXG52YXIgZGVsaW1pdGVyID0gJy0nOyAvLyAnXFx4MkQnXG5cbi8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG52YXIgcmVnZXhQdW55Y29kZSA9IC9eeG4tLS87XG52YXIgcmVnZXhOb25BU0NJSSA9IC9bXlxcMC1cXHg3RV0vOyAvLyBub24tQVNDSUkgY2hhcnNcbnZhciByZWdleFNlcGFyYXRvcnMgPSAvW1xceDJFXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nOyAvLyBSRkMgMzQ5MCBzZXBhcmF0b3JzXG5cbi8qKiBFcnJvciBtZXNzYWdlcyAqL1xudmFyIGVycm9ycyA9IHtcblx0J292ZXJmbG93JzogJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJyxcblx0J25vdC1iYXNpYyc6ICdJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpJyxcblx0J2ludmFsaWQtaW5wdXQnOiAnSW52YWxpZCBpbnB1dCdcbn07XG5cbi8qKiBDb252ZW5pZW5jZSBzaG9ydGN1dHMgKi9cbnZhciBiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW47XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIHN0cmluZ0Zyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIEEgZ2VuZXJpYyBlcnJvciB1dGlsaXR5IGZ1bmN0aW9uLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIFRoZSBlcnJvciB0eXBlLlxuICogQHJldHVybnMge0Vycm9yfSBUaHJvd3MgYSBgUmFuZ2VFcnJvcmAgd2l0aCB0aGUgYXBwbGljYWJsZSBlcnJvciBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBlcnJvciQxKHR5cGUpIHtcblx0dGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcbn1cblxuLyoqXG4gKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG4gKiBpdGVtLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG5cdHZhciByZXN1bHQgPSBbXTtcblx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblx0d2hpbGUgKGxlbmd0aC0tKSB7XG5cdFx0cmVzdWx0W2xlbmd0aF0gPSBmbihhcnJheVtsZW5ndGhdKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEEgc2ltcGxlIGBBcnJheSNtYXBgLWxpa2Ugd3JhcHBlciB0byB3b3JrIHdpdGggZG9tYWluIG5hbWUgc3RyaW5ncyBvciBlbWFpbFxuICogYWRkcmVzc2VzLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnlcbiAqIGNoYXJhY3Rlci5cbiAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrXG4gKiBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWFwRG9tYWluKHN0cmluZywgZm4pIHtcblx0dmFyIHBhcnRzID0gc3RyaW5nLnNwbGl0KCdAJyk7XG5cdHZhciByZXN1bHQgPSAnJztcblx0aWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcblx0XHQvLyBJbiBlbWFpbCBhZGRyZXNzZXMsIG9ubHkgdGhlIGRvbWFpbiBuYW1lIHNob3VsZCBiZSBwdW55Y29kZWQuIExlYXZlXG5cdFx0Ly8gdGhlIGxvY2FsIHBhcnQgKGkuZS4gZXZlcnl0aGluZyB1cCB0byBgQGApIGludGFjdC5cblx0XHRyZXN1bHQgPSBwYXJ0c1swXSArICdAJztcblx0XHRzdHJpbmcgPSBwYXJ0c1sxXTtcblx0fVxuXHQvLyBBdm9pZCBgc3BsaXQocmVnZXgpYCBmb3IgSUU4IGNvbXBhdGliaWxpdHkuIFNlZSAjMTcuXG5cdHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgJ1xceDJFJyk7XG5cdHZhciBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcblx0dmFyIGVuY29kZWQgPSBtYXAobGFiZWxzLCBmbikuam9pbignLicpO1xuXHRyZXR1cm4gcmVzdWx0ICsgZW5jb2RlZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG4gKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG4gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG4gKiBtYXRjaGluZyBVVEYtMTYuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmVuY29kZWBcbiAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGRlY29kZVxuICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUgVW5pY29kZSBpbnB1dCBzdHJpbmcgKFVDUy0yKS5cbiAqIEByZXR1cm5zIHtBcnJheX0gVGhlIG5ldyBhcnJheSBvZiBjb2RlIHBvaW50cy5cbiAqL1xuZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcblx0dmFyIG91dHB1dCA9IFtdO1xuXHR2YXIgY291bnRlciA9IDA7XG5cdHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuXHR3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuXHRcdHZhciB2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0aWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0Ly8gSXQncyBhIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3Rlci5cblx0XHRcdHZhciBleHRyYSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0XHRpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHtcblx0XHRcdFx0Ly8gTG93IHN1cnJvZ2F0ZS5cblx0XHRcdFx0b3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEl0J3MgYW4gdW5tYXRjaGVkIHN1cnJvZ2F0ZTsgb25seSBhcHBlbmQgdGhpcyBjb2RlIHVuaXQsIGluIGNhc2UgdGhlXG5cdFx0XHRcdC8vIG5leHQgY29kZSB1bml0IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyLlxuXHRcdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0XHRcdGNvdW50ZXItLTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0cHV0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdHJpbmcgYmFzZWQgb24gYW4gYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEBzZWUgYHB1bnljb2RlLnVjczIuZGVjb2RlYFxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGVuY29kZVxuICogQHBhcmFtIHtBcnJheX0gY29kZVBvaW50cyBUaGUgYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBuZXcgVW5pY29kZSBzdHJpbmcgKFVDUy0yKS5cbiAqL1xudmFyIHVjczJlbmNvZGUgPSBmdW5jdGlvbiB1Y3MyZW5jb2RlKGFycmF5KSB7XG5cdHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludC5hcHBseShTdHJpbmcsIHRvQ29uc3VtYWJsZUFycmF5KGFycmF5KSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgYmFzaWMgY29kZSBwb2ludCBpbnRvIGEgZGlnaXQvaW50ZWdlci5cbiAqIEBzZWUgYGRpZ2l0VG9CYXNpYygpYFxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb2RlUG9pbnQgVGhlIGJhc2ljIG51bWVyaWMgY29kZSBwb2ludCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludCAoZm9yIHVzZSBpblxuICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpbiB0aGUgcmFuZ2UgYDBgIHRvIGBiYXNlIC0gMWAsIG9yIGBiYXNlYCBpZlxuICogdGhlIGNvZGUgcG9pbnQgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsdWUuXG4gKi9cbnZhciBiYXNpY1RvRGlnaXQgPSBmdW5jdGlvbiBiYXNpY1RvRGlnaXQoY29kZVBvaW50KSB7XG5cdGlmIChjb2RlUG9pbnQgLSAweDMwIDwgMHgwQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDE2O1xuXHR9XG5cdGlmIChjb2RlUG9pbnQgLSAweDQxIDwgMHgxQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDQxO1xuXHR9XG5cdGlmIChjb2RlUG9pbnQgLSAweDYxIDwgMHgxQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDYxO1xuXHR9XG5cdHJldHVybiBiYXNlO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3JcbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG4gKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcbiAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG4gKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuICovXG52YXIgZGlnaXRUb0Jhc2ljID0gZnVuY3Rpb24gZGlnaXRUb0Jhc2ljKGRpZ2l0LCBmbGFnKSB7XG5cdC8vICAwLi4yNSBtYXAgdG8gQVNDSUkgYS4ueiBvciBBLi5aXG5cdC8vIDI2Li4zNSBtYXAgdG8gQVNDSUkgMC4uOVxuXHRyZXR1cm4gZGlnaXQgKyAyMiArIDc1ICogKGRpZ2l0IDwgMjYpIC0gKChmbGFnICE9IDApIDw8IDUpO1xufTtcblxuLyoqXG4gKiBCaWFzIGFkYXB0YXRpb24gZnVuY3Rpb24gYXMgcGVyIHNlY3Rpb24gMy40IG9mIFJGQyAzNDkyLlxuICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM0OTIjc2VjdGlvbi0zLjRcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBhZGFwdCA9IGZ1bmN0aW9uIGFkYXB0KGRlbHRhLCBudW1Qb2ludHMsIGZpcnN0VGltZSkge1xuXHR2YXIgayA9IDA7XG5cdGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG5cdGRlbHRhICs9IGZsb29yKGRlbHRhIC8gbnVtUG9pbnRzKTtcblx0Zm9yICg7IC8qIG5vIGluaXRpYWxpemF0aW9uICovZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcblx0XHRkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG5cdH1cblx0cmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG4gKiBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKi9cbnZhciBkZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoaW5wdXQpIHtcblx0Ly8gRG9uJ3QgdXNlIFVDUy0yLlxuXHR2YXIgb3V0cHV0ID0gW107XG5cdHZhciBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblx0dmFyIGkgPSAwO1xuXHR2YXIgbiA9IGluaXRpYWxOO1xuXHR2YXIgYmlhcyA9IGluaXRpYWxCaWFzO1xuXG5cdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHM6IGxldCBgYmFzaWNgIGJlIHRoZSBudW1iZXIgb2YgaW5wdXQgY29kZVxuXHQvLyBwb2ludHMgYmVmb3JlIHRoZSBsYXN0IGRlbGltaXRlciwgb3IgYDBgIGlmIHRoZXJlIGlzIG5vbmUsIHRoZW4gY29weVxuXHQvLyB0aGUgZmlyc3QgYmFzaWMgY29kZSBwb2ludHMgdG8gdGhlIG91dHB1dC5cblxuXHR2YXIgYmFzaWMgPSBpbnB1dC5sYXN0SW5kZXhPZihkZWxpbWl0ZXIpO1xuXHRpZiAoYmFzaWMgPCAwKSB7XG5cdFx0YmFzaWMgPSAwO1xuXHR9XG5cblx0Zm9yICh2YXIgaiA9IDA7IGogPCBiYXNpYzsgKytqKSB7XG5cdFx0Ly8gaWYgaXQncyBub3QgYSBiYXNpYyBjb2RlIHBvaW50XG5cdFx0aWYgKGlucHV0LmNoYXJDb2RlQXQoaikgPj0gMHg4MCkge1xuXHRcdFx0ZXJyb3IkMSgnbm90LWJhc2ljJyk7XG5cdFx0fVxuXHRcdG91dHB1dC5wdXNoKGlucHV0LmNoYXJDb2RlQXQoaikpO1xuXHR9XG5cblx0Ly8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuXHQvLyBwb2ludHMgd2VyZSBjb3BpZWQ7IHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb3RoZXJ3aXNlLlxuXG5cdGZvciAodmFyIGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDspIC8qIG5vIGZpbmFsIGV4cHJlc3Npb24gKi97XG5cblx0XHQvLyBgaW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQuXG5cdFx0Ly8gRGVjb2RlIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIgaW50byBgZGVsdGFgLFxuXHRcdC8vIHdoaWNoIGdldHMgYWRkZWQgdG8gYGlgLiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgZWFzaWVyXG5cdFx0Ly8gaWYgd2UgaW5jcmVhc2UgYGlgIGFzIHdlIGdvLCB0aGVuIHN1YnRyYWN0IG9mZiBpdHMgc3RhcnRpbmdcblx0XHQvLyB2YWx1ZSBhdCB0aGUgZW5kIHRvIG9idGFpbiBgZGVsdGFgLlxuXHRcdHZhciBvbGRpID0gaTtcblx0XHRmb3IgKHZhciB3ID0gMSwgayA9IGJhc2U7OyAvKiBubyBjb25kaXRpb24gKi9rICs9IGJhc2UpIHtcblxuXHRcdFx0aWYgKGluZGV4ID49IGlucHV0TGVuZ3RoKSB7XG5cdFx0XHRcdGVycm9yJDEoJ2ludmFsaWQtaW5wdXQnKTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGRpZ2l0ID0gYmFzaWNUb0RpZ2l0KGlucHV0LmNoYXJDb2RlQXQoaW5kZXgrKykpO1xuXG5cdFx0XHRpZiAoZGlnaXQgPj0gYmFzZSB8fCBkaWdpdCA+IGZsb29yKChtYXhJbnQgLSBpKSAvIHcpKSB7XG5cdFx0XHRcdGVycm9yJDEoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGkgKz0gZGlnaXQgKiB3O1xuXHRcdFx0dmFyIHQgPSBrIDw9IGJpYXMgPyB0TWluIDogayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcztcblxuXHRcdFx0aWYgKGRpZ2l0IDwgdCkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0dmFyIGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdGlmICh3ID4gZmxvb3IobWF4SW50IC8gYmFzZU1pbnVzVCkpIHtcblx0XHRcdFx0ZXJyb3IkMSgnb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0dyAqPSBiYXNlTWludXNUO1xuXHRcdH1cblxuXHRcdHZhciBvdXQgPSBvdXRwdXQubGVuZ3RoICsgMTtcblx0XHRiaWFzID0gYWRhcHQoaSAtIG9sZGksIG91dCwgb2xkaSA9PSAwKTtcblxuXHRcdC8vIGBpYCB3YXMgc3VwcG9zZWQgdG8gd3JhcCBhcm91bmQgZnJvbSBgb3V0YCB0byBgMGAsXG5cdFx0Ly8gaW5jcmVtZW50aW5nIGBuYCBlYWNoIHRpbWUsIHNvIHdlJ2xsIGZpeCB0aGF0IG5vdzpcblx0XHRpZiAoZmxvb3IoaSAvIG91dCkgPiBtYXhJbnQgLSBuKSB7XG5cdFx0XHRlcnJvciQxKCdvdmVyZmxvdycpO1xuXHRcdH1cblxuXHRcdG4gKz0gZmxvb3IoaSAvIG91dCk7XG5cdFx0aSAlPSBvdXQ7XG5cblx0XHQvLyBJbnNlcnQgYG5gIGF0IHBvc2l0aW9uIGBpYCBvZiB0aGUgb3V0cHV0LlxuXHRcdG91dHB1dC5zcGxpY2UoaSsrLCAwLCBuKTtcblx0fVxuXG5cdHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludC5hcHBseShTdHJpbmcsIG91dHB1dCk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG4gKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKi9cbnZhciBlbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoaW5wdXQpIHtcblx0dmFyIG91dHB1dCA9IFtdO1xuXG5cdC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIGFuIGFycmF5IG9mIFVuaWNvZGUgY29kZSBwb2ludHMuXG5cdGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cblx0Ly8gQ2FjaGUgdGhlIGxlbmd0aC5cblx0dmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG5cdC8vIEluaXRpYWxpemUgdGhlIHN0YXRlLlxuXHR2YXIgbiA9IGluaXRpYWxOO1xuXHR2YXIgZGVsdGEgPSAwO1xuXHR2YXIgYmlhcyA9IGluaXRpYWxCaWFzO1xuXG5cdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHMuXG5cdHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZTtcblx0dmFyIF9kaWRJdGVyYXRvckVycm9yID0gZmFsc2U7XG5cdHZhciBfaXRlcmF0b3JFcnJvciA9IHVuZGVmaW5lZDtcblxuXHR0cnkge1xuXHRcdGZvciAodmFyIF9pdGVyYXRvciA9IGlucHV0W1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkge1xuXHRcdFx0dmFyIF9jdXJyZW50VmFsdWUyID0gX3N0ZXAudmFsdWU7XG5cblx0XHRcdGlmIChfY3VycmVudFZhbHVlMiA8IDB4ODApIHtcblx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKF9jdXJyZW50VmFsdWUyKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7XG5cdFx0X2l0ZXJhdG9yRXJyb3IgPSBlcnI7XG5cdH0gZmluYWxseSB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiAmJiBfaXRlcmF0b3IucmV0dXJuKSB7XG5cdFx0XHRcdF9pdGVyYXRvci5yZXR1cm4oKTtcblx0XHRcdH1cblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0aWYgKF9kaWRJdGVyYXRvckVycm9yKSB7XG5cdFx0XHRcdHRocm93IF9pdGVyYXRvckVycm9yO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHZhciBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7XG5cdHZhciBoYW5kbGVkQ1BDb3VudCA9IGJhc2ljTGVuZ3RoO1xuXG5cdC8vIGBoYW5kbGVkQ1BDb3VudGAgaXMgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuXHQvLyBgYmFzaWNMZW5ndGhgIGlzIHRoZSBudW1iZXIgb2YgYmFzaWMgY29kZSBwb2ludHMuXG5cblx0Ly8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgd2l0aCBhIGRlbGltaXRlciB1bmxlc3MgaXQncyBlbXB0eS5cblx0aWYgKGJhc2ljTGVuZ3RoKSB7XG5cdFx0b3V0cHV0LnB1c2goZGVsaW1pdGVyKTtcblx0fVxuXG5cdC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcblx0d2hpbGUgKGhhbmRsZWRDUENvdW50IDwgaW5wdXRMZW5ndGgpIHtcblxuXHRcdC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHRcblx0XHQvLyBsYXJnZXIgb25lOlxuXHRcdHZhciBtID0gbWF4SW50O1xuXHRcdHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7XG5cdFx0dmFyIF9kaWRJdGVyYXRvckVycm9yMiA9IGZhbHNlO1xuXHRcdHZhciBfaXRlcmF0b3JFcnJvcjIgPSB1bmRlZmluZWQ7XG5cblx0XHR0cnkge1xuXHRcdFx0Zm9yICh2YXIgX2l0ZXJhdG9yMiA9IGlucHV0W1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAyOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gKF9zdGVwMiA9IF9pdGVyYXRvcjIubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSB0cnVlKSB7XG5cdFx0XHRcdHZhciBjdXJyZW50VmFsdWUgPSBfc3RlcDIudmFsdWU7XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcblx0XHRcdFx0XHRtID0gY3VycmVudFZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPixcblx0XHRcdC8vIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93LlxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0X2RpZEl0ZXJhdG9yRXJyb3IyID0gdHJ1ZTtcblx0XHRcdF9pdGVyYXRvckVycm9yMiA9IGVycjtcblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiAmJiBfaXRlcmF0b3IyLnJldHVybikge1xuXHRcdFx0XHRcdF9pdGVyYXRvcjIucmV0dXJuKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGlmIChfZGlkSXRlcmF0b3JFcnJvcjIpIHtcblx0XHRcdFx0XHR0aHJvdyBfaXRlcmF0b3JFcnJvcjI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR2YXIgaGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuXHRcdGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG5cdFx0XHRlcnJvciQxKCdvdmVyZmxvdycpO1xuXHRcdH1cblxuXHRcdGRlbHRhICs9IChtIC0gbikgKiBoYW5kbGVkQ1BDb3VudFBsdXNPbmU7XG5cdFx0biA9IG07XG5cblx0XHR2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSB0cnVlO1xuXHRcdHZhciBfZGlkSXRlcmF0b3JFcnJvcjMgPSBmYWxzZTtcblx0XHR2YXIgX2l0ZXJhdG9yRXJyb3IzID0gdW5kZWZpbmVkO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGZvciAodmFyIF9pdGVyYXRvcjMgPSBpbnB1dFtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMzsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IChfc3RlcDMgPSBfaXRlcmF0b3IzLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZSkge1xuXHRcdFx0XHR2YXIgX2N1cnJlbnRWYWx1ZSA9IF9zdGVwMy52YWx1ZTtcblxuXHRcdFx0XHRpZiAoX2N1cnJlbnRWYWx1ZSA8IG4gJiYgKytkZWx0YSA+IG1heEludCkge1xuXHRcdFx0XHRcdGVycm9yJDEoJ292ZXJmbG93Jyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKF9jdXJyZW50VmFsdWUgPT0gbikge1xuXHRcdFx0XHRcdC8vIFJlcHJlc2VudCBkZWx0YSBhcyBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyLlxuXHRcdFx0XHRcdHZhciBxID0gZGVsdGE7XG5cdFx0XHRcdFx0Zm9yICh2YXIgayA9IGJhc2U7OyAvKiBubyBjb25kaXRpb24gKi9rICs9IGJhc2UpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gayA8PSBiaWFzID8gdE1pbiA6IGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXM7XG5cdFx0XHRcdFx0XHRpZiAocSA8IHQpIHtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgcU1pbnVzVCA9IHEgLSB0O1xuXHRcdFx0XHRcdFx0dmFyIGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWModCArIHFNaW51c1QgJSBiYXNlTWludXNULCAwKSkpO1xuXHRcdFx0XHRcdFx0cSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEsIDApKSk7XG5cdFx0XHRcdFx0YmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcblx0XHRcdFx0XHRkZWx0YSA9IDA7XG5cdFx0XHRcdFx0KytoYW5kbGVkQ1BDb3VudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0X2RpZEl0ZXJhdG9yRXJyb3IzID0gdHJ1ZTtcblx0XHRcdF9pdGVyYXRvckVycm9yMyA9IGVycjtcblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyAmJiBfaXRlcmF0b3IzLnJldHVybikge1xuXHRcdFx0XHRcdF9pdGVyYXRvcjMucmV0dXJuKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGlmIChfZGlkSXRlcmF0b3JFcnJvcjMpIHtcblx0XHRcdFx0XHR0aHJvdyBfaXRlcmF0b3JFcnJvcjM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQrK2RlbHRhO1xuXHRcdCsrbjtcblx0fVxuXHRyZXR1cm4gb3V0cHV0LmpvaW4oJycpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG4gKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG4gKiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCBvbiBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW5cbiAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlZCBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvXG4gKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcbiAqIHN0cmluZy5cbiAqL1xudmFyIHRvVW5pY29kZSA9IGZ1bmN0aW9uIHRvVW5pY29kZShpbnB1dCkge1xuXHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbiAoc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHJlZ2V4UHVueWNvZGUudGVzdChzdHJpbmcpID8gZGVjb2RlKHN0cmluZy5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKSA6IHN0cmluZztcblx0fSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuICogUHVueWNvZGUuIE9ubHkgdGhlIG5vbi1BU0NJSSBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgd2lsbCBiZSBjb252ZXJ0ZWQsXG4gKiBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCdzIGFscmVhZHkgaW5cbiAqIEFTQ0lJLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG8gY29udmVydCwgYXMgYVxuICogVW5pY29kZSBzdHJpbmcuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgUHVueWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRvbWFpbiBuYW1lIG9yXG4gKiBlbWFpbCBhZGRyZXNzLlxuICovXG52YXIgdG9BU0NJSSA9IGZ1bmN0aW9uIHRvQVNDSUkoaW5wdXQpIHtcblx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24gKHN0cmluZykge1xuXHRcdHJldHVybiByZWdleE5vbkFTQ0lJLnRlc3Qoc3RyaW5nKSA/ICd4bi0tJyArIGVuY29kZShzdHJpbmcpIDogc3RyaW5nO1xuXHR9KTtcbn07XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiogRGVmaW5lIHRoZSBwdWJsaWMgQVBJICovXG52YXIgcHVueWNvZGUgPSB7XG5cdC8qKlxuICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBQdW55Y29kZS5qcyB2ZXJzaW9uIG51bWJlci5cbiAgKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAgKiBAdHlwZSBTdHJpbmdcbiAgKi9cblx0J3ZlcnNpb24nOiAnMi4xLjAnLFxuXHQvKipcbiAgKiBBbiBvYmplY3Qgb2YgbWV0aG9kcyB0byBjb252ZXJ0IGZyb20gSmF2YVNjcmlwdCdzIGludGVybmFsIGNoYXJhY3RlclxuICAqIHJlcHJlc2VudGF0aW9uIChVQ1MtMikgdG8gVW5pY29kZSBjb2RlIHBvaW50cywgYW5kIGJhY2suXG4gICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG4gICogQG1lbWJlck9mIHB1bnljb2RlXG4gICogQHR5cGUgT2JqZWN0XG4gICovXG5cdCd1Y3MyJzoge1xuXHRcdCdkZWNvZGUnOiB1Y3MyZGVjb2RlLFxuXHRcdCdlbmNvZGUnOiB1Y3MyZW5jb2RlXG5cdH0sXG5cdCdkZWNvZGUnOiBkZWNvZGUsXG5cdCdlbmNvZGUnOiBlbmNvZGUsXG5cdCd0b0FTQ0lJJzogdG9BU0NJSSxcblx0J3RvVW5pY29kZSc6IHRvVW5pY29kZVxufTtcblxuLyoqXG4gKiBVUkkuanNcbiAqXG4gKiBAZmlsZW92ZXJ2aWV3IEFuIFJGQyAzOTg2IGNvbXBsaWFudCwgc2NoZW1lIGV4dGVuZGFibGUgVVJJIHBhcnNpbmcvdmFsaWRhdGluZy9yZXNvbHZpbmcgbGlicmFyeSBmb3IgSmF2YVNjcmlwdC5cbiAqIEBhdXRob3IgPGEgaHJlZj1cIm1haWx0bzpnYXJ5LmNvdXJ0QGdtYWlsLmNvbVwiPkdhcnkgQ291cnQ8L2E+XG4gKiBAc2VlIGh0dHA6Ly9naXRodWIuY29tL2dhcnljb3VydC91cmktanNcbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMSBHYXJ5IENvdXJ0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZVxuICogcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKlxuICogICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2ZcbiAqICAgICAgIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdFxuICogICAgICAgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHNcbiAqICAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdBUlkgQ09VUlQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEXG4gKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgR0FSWSBDT1VSVCBPUlxuICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1JcbiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1JcbiAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT05cbiAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRlxuICogQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKlxuICogVGhlIHZpZXdzIGFuZCBjb25jbHVzaW9ucyBjb250YWluZWQgaW4gdGhlIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uIGFyZSB0aG9zZSBvZiB0aGVcbiAqIGF1dGhvcnMgYW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgcmVwcmVzZW50aW5nIG9mZmljaWFsIHBvbGljaWVzLCBlaXRoZXIgZXhwcmVzc2VkXG4gKiBvciBpbXBsaWVkLCBvZiBHYXJ5IENvdXJ0LlxuICovXG52YXIgU0NIRU1FUyA9IHt9O1xuZnVuY3Rpb24gcGN0RW5jQ2hhcihjaHIpIHtcbiAgICB2YXIgYyA9IGNoci5jaGFyQ29kZUF0KDApO1xuICAgIHZhciBlID0gdm9pZCAwO1xuICAgIGlmIChjIDwgMTYpIGUgPSBcIiUwXCIgKyBjLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO2Vsc2UgaWYgKGMgPCAxMjgpIGUgPSBcIiVcIiArIGMudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7ZWxzZSBpZiAoYyA8IDIwNDgpIGUgPSBcIiVcIiArIChjID4+IDYgfCAxOTIpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpICsgXCIlXCIgKyAoYyAmIDYzIHwgMTI4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtlbHNlIGUgPSBcIiVcIiArIChjID4+IDEyIHwgMjI0KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSArIFwiJVwiICsgKGMgPj4gNiAmIDYzIHwgMTI4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSArIFwiJVwiICsgKGMgJiA2MyB8IDEyOCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgcmV0dXJuIGU7XG59XG5mdW5jdGlvbiBwY3REZWNDaGFycyhzdHIpIHtcbiAgICB2YXIgbmV3U3RyID0gXCJcIjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGlsID0gc3RyLmxlbmd0aDtcbiAgICB3aGlsZSAoaSA8IGlsKSB7XG4gICAgICAgIHZhciBjID0gcGFyc2VJbnQoc3RyLnN1YnN0cihpICsgMSwgMiksIDE2KTtcbiAgICAgICAgaWYgKGMgPCAxMjgpIHtcbiAgICAgICAgICAgIG5ld1N0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICAgICAgaSArPSAzO1xuICAgICAgICB9IGVsc2UgaWYgKGMgPj0gMTk0ICYmIGMgPCAyMjQpIHtcbiAgICAgICAgICAgIGlmIChpbCAtIGkgPj0gNikge1xuICAgICAgICAgICAgICAgIHZhciBjMiA9IHBhcnNlSW50KHN0ci5zdWJzdHIoaSArIDQsIDIpLCAxNik7XG4gICAgICAgICAgICAgICAgbmV3U3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiAzMSkgPDwgNiB8IGMyICYgNjMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdTdHIgKz0gc3RyLnN1YnN0cihpLCA2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkgKz0gNjtcbiAgICAgICAgfSBlbHNlIGlmIChjID49IDIyNCkge1xuICAgICAgICAgICAgaWYgKGlsIC0gaSA+PSA5KSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jID0gcGFyc2VJbnQoc3RyLnN1YnN0cihpICsgNCwgMiksIDE2KTtcbiAgICAgICAgICAgICAgICB2YXIgYzMgPSBwYXJzZUludChzdHIuc3Vic3RyKGkgKyA3LCAyKSwgMTYpO1xuICAgICAgICAgICAgICAgIG5ld1N0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgMTUpIDw8IDEyIHwgKF9jICYgNjMpIDw8IDYgfCBjMyAmIDYzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3U3RyICs9IHN0ci5zdWJzdHIoaSwgOSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpICs9IDk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdTdHIgKz0gc3RyLnN1YnN0cihpLCAzKTtcbiAgICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3U3RyO1xufVxuZnVuY3Rpb24gX25vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKGNvbXBvbmVudHMsIHByb3RvY29sKSB7XG4gICAgZnVuY3Rpb24gZGVjb2RlVW5yZXNlcnZlZChzdHIpIHtcbiAgICAgICAgdmFyIGRlY1N0ciA9IHBjdERlY0NoYXJzKHN0cik7XG4gICAgICAgIHJldHVybiAhZGVjU3RyLm1hdGNoKHByb3RvY29sLlVOUkVTRVJWRUQpID8gc3RyIDogZGVjU3RyO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5zY2hlbWUpIGNvbXBvbmVudHMuc2NoZW1lID0gU3RyaW5nKGNvbXBvbmVudHMuc2NoZW1lKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UocHJvdG9jb2wuTk9UX1NDSEVNRSwgXCJcIik7XG4gICAgaWYgKGNvbXBvbmVudHMudXNlcmluZm8gIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy51c2VyaW5mbyA9IFN0cmluZyhjb21wb25lbnRzLnVzZXJpbmZvKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKHByb3RvY29sLk5PVF9VU0VSSU5GTywgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIGlmIChjb21wb25lbnRzLmhvc3QgIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy5ob3N0ID0gU3RyaW5nKGNvbXBvbmVudHMuaG9zdCkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHByb3RvY29sLk5PVF9IT1NULCBwY3RFbmNDaGFyKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSk7XG4gICAgaWYgKGNvbXBvbmVudHMucGF0aCAhPT0gdW5kZWZpbmVkKSBjb21wb25lbnRzLnBhdGggPSBTdHJpbmcoY29tcG9uZW50cy5wYXRoKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKGNvbXBvbmVudHMuc2NoZW1lID8gcHJvdG9jb2wuTk9UX1BBVEggOiBwcm90b2NvbC5OT1RfUEFUSF9OT1NDSEVNRSwgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIGlmIChjb21wb25lbnRzLnF1ZXJ5ICE9PSB1bmRlZmluZWQpIGNvbXBvbmVudHMucXVlcnkgPSBTdHJpbmcoY29tcG9uZW50cy5xdWVyeSkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShwcm90b2NvbC5OT1RfUVVFUlksIHBjdEVuY0NoYXIpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKTtcbiAgICBpZiAoY29tcG9uZW50cy5mcmFnbWVudCAhPT0gdW5kZWZpbmVkKSBjb21wb25lbnRzLmZyYWdtZW50ID0gU3RyaW5nKGNvbXBvbmVudHMuZnJhZ21lbnQpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UocHJvdG9jb2wuTk9UX0ZSQUdNRU5ULCBwY3RFbmNDaGFyKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSk7XG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG5cbmZ1bmN0aW9uIF9zdHJpcExlYWRpbmdaZXJvcyhzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL14wKiguKikvLCBcIiQxXCIpIHx8IFwiMFwiO1xufVxuZnVuY3Rpb24gX25vcm1hbGl6ZUlQdjQoaG9zdCwgcHJvdG9jb2wpIHtcbiAgICB2YXIgbWF0Y2hlcyA9IGhvc3QubWF0Y2gocHJvdG9jb2wuSVBWNEFERFJFU1MpIHx8IFtdO1xuXG4gICAgdmFyIF9tYXRjaGVzID0gc2xpY2VkVG9BcnJheShtYXRjaGVzLCAyKSxcbiAgICAgICAgYWRkcmVzcyA9IF9tYXRjaGVzWzFdO1xuXG4gICAgaWYgKGFkZHJlc3MpIHtcbiAgICAgICAgcmV0dXJuIGFkZHJlc3Muc3BsaXQoXCIuXCIpLm1hcChfc3RyaXBMZWFkaW5nWmVyb3MpLmpvaW4oXCIuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBob3N0O1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVJUHY2KGhvc3QsIHByb3RvY29sKSB7XG4gICAgdmFyIG1hdGNoZXMgPSBob3N0Lm1hdGNoKHByb3RvY29sLklQVjZBRERSRVNTKSB8fCBbXTtcblxuICAgIHZhciBfbWF0Y2hlczIgPSBzbGljZWRUb0FycmF5KG1hdGNoZXMsIDMpLFxuICAgICAgICBhZGRyZXNzID0gX21hdGNoZXMyWzFdLFxuICAgICAgICB6b25lID0gX21hdGNoZXMyWzJdO1xuXG4gICAgaWYgKGFkZHJlc3MpIHtcbiAgICAgICAgdmFyIF9hZGRyZXNzJHRvTG93ZXJDYXNlJCA9IGFkZHJlc3MudG9Mb3dlckNhc2UoKS5zcGxpdCgnOjonKS5yZXZlcnNlKCksXG4gICAgICAgICAgICBfYWRkcmVzcyR0b0xvd2VyQ2FzZSQyID0gc2xpY2VkVG9BcnJheShfYWRkcmVzcyR0b0xvd2VyQ2FzZSQsIDIpLFxuICAgICAgICAgICAgbGFzdCA9IF9hZGRyZXNzJHRvTG93ZXJDYXNlJDJbMF0sXG4gICAgICAgICAgICBmaXJzdCA9IF9hZGRyZXNzJHRvTG93ZXJDYXNlJDJbMV07XG5cbiAgICAgICAgdmFyIGZpcnN0RmllbGRzID0gZmlyc3QgPyBmaXJzdC5zcGxpdChcIjpcIikubWFwKF9zdHJpcExlYWRpbmdaZXJvcykgOiBbXTtcbiAgICAgICAgdmFyIGxhc3RGaWVsZHMgPSBsYXN0LnNwbGl0KFwiOlwiKS5tYXAoX3N0cmlwTGVhZGluZ1plcm9zKTtcbiAgICAgICAgdmFyIGlzTGFzdEZpZWxkSVB2NEFkZHJlc3MgPSBwcm90b2NvbC5JUFY0QUREUkVTUy50ZXN0KGxhc3RGaWVsZHNbbGFzdEZpZWxkcy5sZW5ndGggLSAxXSk7XG4gICAgICAgIHZhciBmaWVsZENvdW50ID0gaXNMYXN0RmllbGRJUHY0QWRkcmVzcyA/IDcgOiA4O1xuICAgICAgICB2YXIgbGFzdEZpZWxkc1N0YXJ0ID0gbGFzdEZpZWxkcy5sZW5ndGggLSBmaWVsZENvdW50O1xuICAgICAgICB2YXIgZmllbGRzID0gQXJyYXkoZmllbGRDb3VudCk7XG4gICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgZmllbGRDb3VudDsgKyt4KSB7XG4gICAgICAgICAgICBmaWVsZHNbeF0gPSBmaXJzdEZpZWxkc1t4XSB8fCBsYXN0RmllbGRzW2xhc3RGaWVsZHNTdGFydCArIHhdIHx8ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0xhc3RGaWVsZElQdjRBZGRyZXNzKSB7XG4gICAgICAgICAgICBmaWVsZHNbZmllbGRDb3VudCAtIDFdID0gX25vcm1hbGl6ZUlQdjQoZmllbGRzW2ZpZWxkQ291bnQgLSAxXSwgcHJvdG9jb2wpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhbGxaZXJvRmllbGRzID0gZmllbGRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBmaWVsZCwgaW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghZmllbGQgfHwgZmllbGQgPT09IFwiMFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RMb25nZXN0ID0gYWNjW2FjYy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdExvbmdlc3QgJiYgbGFzdExvbmdlc3QuaW5kZXggKyBsYXN0TG9uZ2VzdC5sZW5ndGggPT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RMb25nZXN0Lmxlbmd0aCsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKHsgaW5kZXg6IGluZGV4LCBsZW5ndGg6IDEgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgICAgICB2YXIgbG9uZ2VzdFplcm9GaWVsZHMgPSBhbGxaZXJvRmllbGRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9KVswXTtcbiAgICAgICAgdmFyIG5ld0hvc3QgPSB2b2lkIDA7XG4gICAgICAgIGlmIChsb25nZXN0WmVyb0ZpZWxkcyAmJiBsb25nZXN0WmVyb0ZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgbmV3Rmlyc3QgPSBmaWVsZHMuc2xpY2UoMCwgbG9uZ2VzdFplcm9GaWVsZHMuaW5kZXgpO1xuICAgICAgICAgICAgdmFyIG5ld0xhc3QgPSBmaWVsZHMuc2xpY2UobG9uZ2VzdFplcm9GaWVsZHMuaW5kZXggKyBsb25nZXN0WmVyb0ZpZWxkcy5sZW5ndGgpO1xuICAgICAgICAgICAgbmV3SG9zdCA9IG5ld0ZpcnN0LmpvaW4oXCI6XCIpICsgXCI6OlwiICsgbmV3TGFzdC5qb2luKFwiOlwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0hvc3QgPSBmaWVsZHMuam9pbihcIjpcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHpvbmUpIHtcbiAgICAgICAgICAgIG5ld0hvc3QgKz0gXCIlXCIgKyB6b25lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdIb3N0O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBob3N0O1xuICAgIH1cbn1cbnZhciBVUklfUEFSU0UgPSAvXig/OihbXjpcXC8/I10rKTopPyg/OlxcL1xcLygoPzooW15cXC8/I0BdKilAKT8oXFxbW15cXC8/I1xcXV0rXFxdfFteXFwvPyM6XSopKD86XFw6KFxcZCopKT8pKT8oW14/I10qKSg/OlxcPyhbXiNdKikpPyg/OiMoKD86LnxcXG58XFxyKSopKT8vaTtcbnZhciBOT19NQVRDSF9JU19VTkRFRklORUQgPSBcIlwiLm1hdGNoKC8oKXswfS8pWzFdID09PSB1bmRlZmluZWQ7XG5mdW5jdGlvbiBwYXJzZSh1cmlTdHJpbmcpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICB2YXIgY29tcG9uZW50cyA9IHt9O1xuICAgIHZhciBwcm90b2NvbCA9IG9wdGlvbnMuaXJpICE9PSBmYWxzZSA/IElSSV9QUk9UT0NPTCA6IFVSSV9QUk9UT0NPTDtcbiAgICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgPT09IFwic3VmZml4XCIpIHVyaVN0cmluZyA9IChvcHRpb25zLnNjaGVtZSA/IG9wdGlvbnMuc2NoZW1lICsgXCI6XCIgOiBcIlwiKSArIFwiLy9cIiArIHVyaVN0cmluZztcbiAgICB2YXIgbWF0Y2hlcyA9IHVyaVN0cmluZy5tYXRjaChVUklfUEFSU0UpO1xuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIGlmIChOT19NQVRDSF9JU19VTkRFRklORUQpIHtcbiAgICAgICAgICAgIC8vc3RvcmUgZWFjaCBjb21wb25lbnRcbiAgICAgICAgICAgIGNvbXBvbmVudHMuc2NoZW1lID0gbWF0Y2hlc1sxXTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMudXNlcmluZm8gPSBtYXRjaGVzWzNdO1xuICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gbWF0Y2hlc1s0XTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucG9ydCA9IHBhcnNlSW50KG1hdGNoZXNbNV0sIDEwKTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucGF0aCA9IG1hdGNoZXNbNl0gfHwgXCJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucXVlcnkgPSBtYXRjaGVzWzddO1xuICAgICAgICAgICAgY29tcG9uZW50cy5mcmFnbWVudCA9IG1hdGNoZXNbOF07XG4gICAgICAgICAgICAvL2ZpeCBwb3J0IG51bWJlclxuICAgICAgICAgICAgaWYgKGlzTmFOKGNvbXBvbmVudHMucG9ydCkpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzLnBvcnQgPSBtYXRjaGVzWzVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9JRSBGSVggZm9yIGltcHJvcGVyIFJlZ0V4cCBtYXRjaGluZ1xuICAgICAgICAgICAgLy9zdG9yZSBlYWNoIGNvbXBvbmVudFxuICAgICAgICAgICAgY29tcG9uZW50cy5zY2hlbWUgPSBtYXRjaGVzWzFdIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMudXNlcmluZm8gPSB1cmlTdHJpbmcuaW5kZXhPZihcIkBcIikgIT09IC0xID8gbWF0Y2hlc1szXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuaG9zdCA9IHVyaVN0cmluZy5pbmRleE9mKFwiLy9cIikgIT09IC0xID8gbWF0Y2hlc1s0XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucG9ydCA9IHBhcnNlSW50KG1hdGNoZXNbNV0sIDEwKTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucGF0aCA9IG1hdGNoZXNbNl0gfHwgXCJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucXVlcnkgPSB1cmlTdHJpbmcuaW5kZXhPZihcIj9cIikgIT09IC0xID8gbWF0Y2hlc1s3XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZnJhZ21lbnQgPSB1cmlTdHJpbmcuaW5kZXhPZihcIiNcIikgIT09IC0xID8gbWF0Y2hlc1s4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIC8vZml4IHBvcnQgbnVtYmVyXG4gICAgICAgICAgICBpZiAoaXNOYU4oY29tcG9uZW50cy5wb3J0KSkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucG9ydCA9IHVyaVN0cmluZy5tYXRjaCgvXFwvXFwvKD86LnxcXG4pKlxcOig/OlxcL3xcXD98XFwjfCQpLykgPyBtYXRjaGVzWzRdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wb25lbnRzLmhvc3QpIHtcbiAgICAgICAgICAgIC8vbm9ybWFsaXplIElQIGhvc3RzXG4gICAgICAgICAgICBjb21wb25lbnRzLmhvc3QgPSBfbm9ybWFsaXplSVB2Nihfbm9ybWFsaXplSVB2NChjb21wb25lbnRzLmhvc3QsIHByb3RvY29sKSwgcHJvdG9jb2wpO1xuICAgICAgICB9XG4gICAgICAgIC8vZGV0ZXJtaW5lIHJlZmVyZW5jZSB0eXBlXG4gICAgICAgIGlmIChjb21wb25lbnRzLnNjaGVtZSA9PT0gdW5kZWZpbmVkICYmIGNvbXBvbmVudHMudXNlcmluZm8gPT09IHVuZGVmaW5lZCAmJiBjb21wb25lbnRzLmhvc3QgPT09IHVuZGVmaW5lZCAmJiBjb21wb25lbnRzLnBvcnQgPT09IHVuZGVmaW5lZCAmJiAhY29tcG9uZW50cy5wYXRoICYmIGNvbXBvbmVudHMucXVlcnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5yZWZlcmVuY2UgPSBcInNhbWUtZG9jdW1lbnRcIjtcbiAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnRzLnNjaGVtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnJlZmVyZW5jZSA9IFwicmVsYXRpdmVcIjtcbiAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnRzLmZyYWdtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucmVmZXJlbmNlID0gXCJhYnNvbHV0ZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29tcG9uZW50cy5yZWZlcmVuY2UgPSBcInVyaVwiO1xuICAgICAgICB9XG4gICAgICAgIC8vY2hlY2sgZm9yIHJlZmVyZW5jZSBlcnJvcnNcbiAgICAgICAgaWYgKG9wdGlvbnMucmVmZXJlbmNlICYmIG9wdGlvbnMucmVmZXJlbmNlICE9PSBcInN1ZmZpeFwiICYmIG9wdGlvbnMucmVmZXJlbmNlICE9PSBjb21wb25lbnRzLnJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJVUkkgaXMgbm90IGEgXCIgKyBvcHRpb25zLnJlZmVyZW5jZSArIFwiIHJlZmVyZW5jZS5cIjtcbiAgICAgICAgfVxuICAgICAgICAvL2ZpbmQgc2NoZW1lIGhhbmRsZXJcbiAgICAgICAgdmFyIHNjaGVtZUhhbmRsZXIgPSBTQ0hFTUVTWyhvcHRpb25zLnNjaGVtZSB8fCBjb21wb25lbnRzLnNjaGVtZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgLy9jaGVjayBpZiBzY2hlbWUgY2FuJ3QgaGFuZGxlIElSSXNcbiAgICAgICAgaWYgKCFvcHRpb25zLnVuaWNvZGVTdXBwb3J0ICYmICghc2NoZW1lSGFuZGxlciB8fCAhc2NoZW1lSGFuZGxlci51bmljb2RlU3VwcG9ydCkpIHtcbiAgICAgICAgICAgIC8vaWYgaG9zdCBjb21wb25lbnQgaXMgYSBkb21haW4gbmFtZVxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuaG9zdCAmJiAob3B0aW9ucy5kb21haW5Ib3N0IHx8IHNjaGVtZUhhbmRsZXIgJiYgc2NoZW1lSGFuZGxlci5kb21haW5Ib3N0KSkge1xuICAgICAgICAgICAgICAgIC8vY29udmVydCBVbmljb2RlIElETiAtPiBBU0NJSSBJRE5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLmhvc3QgPSBwdW55Y29kZS50b0FTQ0lJKGNvbXBvbmVudHMuaG9zdC5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBwY3REZWNDaGFycykudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIkhvc3QncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBBU0NJSSB2aWEgcHVueWNvZGU6IFwiICsgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2NvbnZlcnQgSVJJIC0+IFVSSVxuICAgICAgICAgICAgX25vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKGNvbXBvbmVudHMsIFVSSV9QUk9UT0NPTCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvL25vcm1hbGl6ZSBlbmNvZGluZ3NcbiAgICAgICAgICAgIF9ub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyhjb21wb25lbnRzLCBwcm90b2NvbCk7XG4gICAgICAgIH1cbiAgICAgICAgLy9wZXJmb3JtIHNjaGVtZSBzcGVjaWZpYyBwYXJzaW5nXG4gICAgICAgIGlmIChzY2hlbWVIYW5kbGVyICYmIHNjaGVtZUhhbmRsZXIucGFyc2UpIHtcbiAgICAgICAgICAgIHNjaGVtZUhhbmRsZXIucGFyc2UoY29tcG9uZW50cywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIlVSSSBjYW4gbm90IGJlIHBhcnNlZC5cIjtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG5cbmZ1bmN0aW9uIF9yZWNvbXBvc2VBdXRob3JpdHkoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgIHZhciBwcm90b2NvbCA9IG9wdGlvbnMuaXJpICE9PSBmYWxzZSA/IElSSV9QUk9UT0NPTCA6IFVSSV9QUk9UT0NPTDtcbiAgICB2YXIgdXJpVG9rZW5zID0gW107XG4gICAgaWYgKGNvbXBvbmVudHMudXNlcmluZm8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cmlUb2tlbnMucHVzaChjb21wb25lbnRzLnVzZXJpbmZvKTtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goXCJAXCIpO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5ob3N0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy9ub3JtYWxpemUgSVAgaG9zdHMsIGFkZCBicmFja2V0cyBhbmQgZXNjYXBlIHpvbmUgc2VwYXJhdG9yIGZvciBJUHY2XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKF9ub3JtYWxpemVJUHY2KF9ub3JtYWxpemVJUHY0KFN0cmluZyhjb21wb25lbnRzLmhvc3QpLCBwcm90b2NvbCksIHByb3RvY29sKS5yZXBsYWNlKHByb3RvY29sLklQVjZBRERSRVNTLCBmdW5jdGlvbiAoXywgJDEsICQyKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJbXCIgKyAkMSArICgkMiA/IFwiJTI1XCIgKyAkMiA6IFwiXCIpICsgXCJdXCI7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjb21wb25lbnRzLnBvcnQgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIGNvbXBvbmVudHMucG9ydCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB1cmlUb2tlbnMucHVzaChcIjpcIik7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFN0cmluZyhjb21wb25lbnRzLnBvcnQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaVRva2Vucy5sZW5ndGggPyB1cmlUb2tlbnMuam9pbihcIlwiKSA6IHVuZGVmaW5lZDtcbn1cblxudmFyIFJEUzEgPSAvXlxcLlxcLj9cXC8vO1xudmFyIFJEUzIgPSAvXlxcL1xcLihcXC98JCkvO1xudmFyIFJEUzMgPSAvXlxcL1xcLlxcLihcXC98JCkvO1xudmFyIFJEUzUgPSAvXlxcLz8oPzoufFxcbikqPyg/PVxcL3wkKS87XG5mdW5jdGlvbiByZW1vdmVEb3RTZWdtZW50cyhpbnB1dCkge1xuICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICB3aGlsZSAoaW5wdXQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChpbnB1dC5tYXRjaChSRFMxKSkge1xuICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKFJEUzEsIFwiXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0Lm1hdGNoKFJEUzIpKSB7XG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoUkRTMiwgXCIvXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0Lm1hdGNoKFJEUzMpKSB7XG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoUkRTMywgXCIvXCIpO1xuICAgICAgICAgICAgb3V0cHV0LnBvcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSBcIi5cIiB8fCBpbnB1dCA9PT0gXCIuLlwiKSB7XG4gICAgICAgICAgICBpbnB1dCA9IFwiXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaW0gPSBpbnB1dC5tYXRjaChSRFM1KTtcbiAgICAgICAgICAgIGlmIChpbSkge1xuICAgICAgICAgICAgICAgIHZhciBzID0gaW1bMF07XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZShzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgb3V0cHV0LnB1c2gocyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgZG90IHNlZ21lbnQgY29uZGl0aW9uXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQuam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplKGNvbXBvbmVudHMpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICB2YXIgcHJvdG9jb2wgPSBvcHRpb25zLmlyaSA/IElSSV9QUk9UT0NPTCA6IFVSSV9QUk9UT0NPTDtcbiAgICB2YXIgdXJpVG9rZW5zID0gW107XG4gICAgLy9maW5kIHNjaGVtZSBoYW5kbGVyXG4gICAgdmFyIHNjaGVtZUhhbmRsZXIgPSBTQ0hFTUVTWyhvcHRpb25zLnNjaGVtZSB8fCBjb21wb25lbnRzLnNjaGVtZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpXTtcbiAgICAvL3BlcmZvcm0gc2NoZW1lIHNwZWNpZmljIHNlcmlhbGl6YXRpb25cbiAgICBpZiAoc2NoZW1lSGFuZGxlciAmJiBzY2hlbWVIYW5kbGVyLnNlcmlhbGl6ZSkgc2NoZW1lSGFuZGxlci5zZXJpYWxpemUoY29tcG9uZW50cywgb3B0aW9ucyk7XG4gICAgaWYgKGNvbXBvbmVudHMuaG9zdCkge1xuICAgICAgICAvL2lmIGhvc3QgY29tcG9uZW50IGlzIGFuIElQdjYgYWRkcmVzc1xuICAgICAgICBpZiAocHJvdG9jb2wuSVBWNkFERFJFU1MudGVzdChjb21wb25lbnRzLmhvc3QpKSB7fVxuICAgICAgICAvL1RPRE86IG5vcm1hbGl6ZSBJUHY2IGFkZHJlc3MgYXMgcGVyIFJGQyA1OTUyXG5cbiAgICAgICAgLy9pZiBob3N0IGNvbXBvbmVudCBpcyBhIGRvbWFpbiBuYW1lXG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuZG9tYWluSG9zdCB8fCBzY2hlbWVIYW5kbGVyICYmIHNjaGVtZUhhbmRsZXIuZG9tYWluSG9zdCkge1xuICAgICAgICAgICAgICAgIC8vY29udmVydCBJRE4gdmlhIHB1bnljb2RlXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gIW9wdGlvbnMuaXJpID8gcHVueWNvZGUudG9BU0NJSShjb21wb25lbnRzLmhvc3QucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgcGN0RGVjQ2hhcnMpLnRvTG93ZXJDYXNlKCkpIDogcHVueWNvZGUudG9Vbmljb2RlKGNvbXBvbmVudHMuaG9zdCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIkhvc3QncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBcIiArICghb3B0aW9ucy5pcmkgPyBcIkFTQ0lJXCIgOiBcIlVuaWNvZGVcIikgKyBcIiB2aWEgcHVueWNvZGU6IFwiICsgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIC8vbm9ybWFsaXplIGVuY29kaW5nXG4gICAgX25vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKGNvbXBvbmVudHMsIHByb3RvY29sKTtcbiAgICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgIT09IFwic3VmZml4XCIgJiYgY29tcG9uZW50cy5zY2hlbWUpIHtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50cy5zY2hlbWUpO1xuICAgICAgICB1cmlUb2tlbnMucHVzaChcIjpcIik7XG4gICAgfVxuICAgIHZhciBhdXRob3JpdHkgPSBfcmVjb21wb3NlQXV0aG9yaXR5KGNvbXBvbmVudHMsIG9wdGlvbnMpO1xuICAgIGlmIChhdXRob3JpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgIT09IFwic3VmZml4XCIpIHtcbiAgICAgICAgICAgIHVyaVRva2Vucy5wdXNoKFwiLy9cIik7XG4gICAgICAgIH1cbiAgICAgICAgdXJpVG9rZW5zLnB1c2goYXV0aG9yaXR5KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudHMucGF0aCAmJiBjb21wb25lbnRzLnBhdGguY2hhckF0KDApICE9PSBcIi9cIikge1xuICAgICAgICAgICAgdXJpVG9rZW5zLnB1c2goXCIvXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb21wb25lbnRzLnBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgcyA9IGNvbXBvbmVudHMucGF0aDtcbiAgICAgICAgaWYgKCFvcHRpb25zLmFic29sdXRlUGF0aCAmJiAoIXNjaGVtZUhhbmRsZXIgfHwgIXNjaGVtZUhhbmRsZXIuYWJzb2x1dGVQYXRoKSkge1xuICAgICAgICAgICAgcyA9IHJlbW92ZURvdFNlZ21lbnRzKHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdXRob3JpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgvXlxcL1xcLy8sIFwiLyUyRlwiKTsgLy9kb24ndCBhbGxvdyB0aGUgcGF0aCB0byBzdGFydCB3aXRoIFwiLy9cIlxuICAgICAgICB9XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKHMpO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5xdWVyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFwiP1wiKTtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50cy5xdWVyeSk7XG4gICAgfVxuICAgIGlmIChjb21wb25lbnRzLmZyYWdtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goXCIjXCIpO1xuICAgICAgICB1cmlUb2tlbnMucHVzaChjb21wb25lbnRzLmZyYWdtZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaVRva2Vucy5qb2luKFwiXCIpOyAvL21lcmdlIHRva2VucyBpbnRvIGEgc3RyaW5nXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnRzKGJhc2UsIHJlbGF0aXZlKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICAgIHZhciBza2lwTm9ybWFsaXphdGlvbiA9IGFyZ3VtZW50c1szXTtcblxuICAgIHZhciB0YXJnZXQgPSB7fTtcbiAgICBpZiAoIXNraXBOb3JtYWxpemF0aW9uKSB7XG4gICAgICAgIGJhc2UgPSBwYXJzZShzZXJpYWxpemUoYmFzZSwgb3B0aW9ucyksIG9wdGlvbnMpOyAvL25vcm1hbGl6ZSBiYXNlIGNvbXBvbmVudHNcbiAgICAgICAgcmVsYXRpdmUgPSBwYXJzZShzZXJpYWxpemUocmVsYXRpdmUsIG9wdGlvbnMpLCBvcHRpb25zKTsgLy9ub3JtYWxpemUgcmVsYXRpdmUgY29tcG9uZW50c1xuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBpZiAoIW9wdGlvbnMudG9sZXJhbnQgJiYgcmVsYXRpdmUuc2NoZW1lKSB7XG4gICAgICAgIHRhcmdldC5zY2hlbWUgPSByZWxhdGl2ZS5zY2hlbWU7XG4gICAgICAgIC8vdGFyZ2V0LmF1dGhvcml0eSA9IHJlbGF0aXZlLmF1dGhvcml0eTtcbiAgICAgICAgdGFyZ2V0LnVzZXJpbmZvID0gcmVsYXRpdmUudXNlcmluZm87XG4gICAgICAgIHRhcmdldC5ob3N0ID0gcmVsYXRpdmUuaG9zdDtcbiAgICAgICAgdGFyZ2V0LnBvcnQgPSByZWxhdGl2ZS5wb3J0O1xuICAgICAgICB0YXJnZXQucGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHJlbGF0aXZlLnBhdGggfHwgXCJcIik7XG4gICAgICAgIHRhcmdldC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChyZWxhdGl2ZS51c2VyaW5mbyAhPT0gdW5kZWZpbmVkIHx8IHJlbGF0aXZlLmhvc3QgIT09IHVuZGVmaW5lZCB8fCByZWxhdGl2ZS5wb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vdGFyZ2V0LmF1dGhvcml0eSA9IHJlbGF0aXZlLmF1dGhvcml0eTtcbiAgICAgICAgICAgIHRhcmdldC51c2VyaW5mbyA9IHJlbGF0aXZlLnVzZXJpbmZvO1xuICAgICAgICAgICAgdGFyZ2V0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0O1xuICAgICAgICAgICAgdGFyZ2V0LnBvcnQgPSByZWxhdGl2ZS5wb3J0O1xuICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhyZWxhdGl2ZS5wYXRoIHx8IFwiXCIpO1xuICAgICAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXJlbGF0aXZlLnBhdGgpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IGJhc2UucGF0aDtcbiAgICAgICAgICAgICAgICBpZiAocmVsYXRpdmUucXVlcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlLnBhdGguY2hhckF0KDApID09PSBcIi9cIikge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHJlbGF0aXZlLnBhdGgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoYmFzZS51c2VyaW5mbyAhPT0gdW5kZWZpbmVkIHx8IGJhc2UuaG9zdCAhPT0gdW5kZWZpbmVkIHx8IGJhc2UucG9ydCAhPT0gdW5kZWZpbmVkKSAmJiAhYmFzZS5wYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IFwiL1wiICsgcmVsYXRpdmUucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghYmFzZS5wYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IHJlbGF0aXZlLnBhdGg7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IGJhc2UucGF0aC5zbGljZSgwLCBiYXNlLnBhdGgubGFzdEluZGV4T2YoXCIvXCIpICsgMSkgKyByZWxhdGl2ZS5wYXRoO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5wYXRoID0gcmVtb3ZlRG90U2VnbWVudHModGFyZ2V0LnBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0YXJnZXQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vdGFyZ2V0LmF1dGhvcml0eSA9IGJhc2UuYXV0aG9yaXR5O1xuICAgICAgICAgICAgdGFyZ2V0LnVzZXJpbmZvID0gYmFzZS51c2VyaW5mbztcbiAgICAgICAgICAgIHRhcmdldC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdGFyZ2V0LnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0LnNjaGVtZSA9IGJhc2Uuc2NoZW1lO1xuICAgIH1cbiAgICB0YXJnZXQuZnJhZ21lbnQgPSByZWxhdGl2ZS5mcmFnbWVudDtcbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiByZXNvbHZlKGJhc2VVUkksIHJlbGF0aXZlVVJJLCBvcHRpb25zKSB7XG4gICAgdmFyIHNjaGVtZWxlc3NPcHRpb25zID0gYXNzaWduKHsgc2NoZW1lOiAnbnVsbCcgfSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZShyZXNvbHZlQ29tcG9uZW50cyhwYXJzZShiYXNlVVJJLCBzY2hlbWVsZXNzT3B0aW9ucyksIHBhcnNlKHJlbGF0aXZlVVJJLCBzY2hlbWVsZXNzT3B0aW9ucyksIHNjaGVtZWxlc3NPcHRpb25zLCB0cnVlKSwgc2NoZW1lbGVzc09wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemUodXJpLCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiB1cmkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdXJpID0gc2VyaWFsaXplKHBhcnNlKHVyaSwgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAodHlwZU9mKHVyaSkgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdXJpID0gcGFyc2Uoc2VyaWFsaXplKHVyaSwgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdXJpO1xufVxuXG5mdW5jdGlvbiBlcXVhbCh1cmlBLCB1cmlCLCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiB1cmlBID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHVyaUEgPSBzZXJpYWxpemUocGFyc2UodXJpQSwgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAodHlwZU9mKHVyaUEpID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHVyaUEgPSBzZXJpYWxpemUodXJpQSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdXJpQiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB1cmlCID0gc2VyaWFsaXplKHBhcnNlKHVyaUIsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVPZih1cmlCKSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICB1cmlCID0gc2VyaWFsaXplKHVyaUIsIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdXJpQSA9PT0gdXJpQjtcbn1cblxuZnVuY3Rpb24gZXNjYXBlQ29tcG9uZW50KHN0ciwgb3B0aW9ucykge1xuICAgIHJldHVybiBzdHIgJiYgc3RyLnRvU3RyaW5nKCkucmVwbGFjZSghb3B0aW9ucyB8fCAhb3B0aW9ucy5pcmkgPyBVUklfUFJPVE9DT0wuRVNDQVBFIDogSVJJX1BST1RPQ09MLkVTQ0FQRSwgcGN0RW5jQ2hhcik7XG59XG5cbmZ1bmN0aW9uIHVuZXNjYXBlQ29tcG9uZW50KHN0ciwgb3B0aW9ucykge1xuICAgIHJldHVybiBzdHIgJiYgc3RyLnRvU3RyaW5nKCkucmVwbGFjZSghb3B0aW9ucyB8fCAhb3B0aW9ucy5pcmkgPyBVUklfUFJPVE9DT0wuUENUX0VOQ09ERUQgOiBJUklfUFJPVE9DT0wuUENUX0VOQ09ERUQsIHBjdERlY0NoYXJzKTtcbn1cblxudmFyIGhhbmRsZXIgPSB7XG4gICAgc2NoZW1lOiBcImh0dHBcIixcbiAgICBkb21haW5Ib3N0OiB0cnVlLFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIC8vcmVwb3J0IG1pc3NpbmcgaG9zdFxuICAgICAgICBpZiAoIWNvbXBvbmVudHMuaG9zdCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJIVFRQIFVSSXMgbXVzdCBoYXZlIGEgaG9zdC5cIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tcG9uZW50cztcbiAgICB9LFxuICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24gc2VyaWFsaXplKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHNlY3VyZSA9IFN0cmluZyhjb21wb25lbnRzLnNjaGVtZSkudG9Mb3dlckNhc2UoKSA9PT0gXCJodHRwc1wiO1xuICAgICAgICAvL25vcm1hbGl6ZSB0aGUgZGVmYXVsdCBwb3J0XG4gICAgICAgIGlmIChjb21wb25lbnRzLnBvcnQgPT09IChzZWN1cmUgPyA0NDMgOiA4MCkgfHwgY29tcG9uZW50cy5wb3J0ID09PSBcIlwiKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy9ub3JtYWxpemUgdGhlIGVtcHR5IHBhdGhcbiAgICAgICAgaWYgKCFjb21wb25lbnRzLnBhdGgpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucGF0aCA9IFwiL1wiO1xuICAgICAgICB9XG4gICAgICAgIC8vTk9URTogV2UgZG8gbm90IHBhcnNlIHF1ZXJ5IHN0cmluZ3MgZm9yIEhUVFAgVVJJc1xuICAgICAgICAvL2FzIFdXVyBGb3JtIFVybCBFbmNvZGVkIHF1ZXJ5IHN0cmluZ3MgYXJlIHBhcnQgb2YgdGhlIEhUTUw0KyBzcGVjLFxuICAgICAgICAvL2FuZCBub3QgdGhlIEhUVFAgc3BlYy5cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgfVxufTtcblxudmFyIGhhbmRsZXIkMSA9IHtcbiAgICBzY2hlbWU6IFwiaHR0cHNcIixcbiAgICBkb21haW5Ib3N0OiBoYW5kbGVyLmRvbWFpbkhvc3QsXG4gICAgcGFyc2U6IGhhbmRsZXIucGFyc2UsXG4gICAgc2VyaWFsaXplOiBoYW5kbGVyLnNlcmlhbGl6ZVxufTtcblxuZnVuY3Rpb24gaXNTZWN1cmUod3NDb21wb25lbnRzKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3c0NvbXBvbmVudHMuc2VjdXJlID09PSAnYm9vbGVhbicgPyB3c0NvbXBvbmVudHMuc2VjdXJlIDogU3RyaW5nKHdzQ29tcG9uZW50cy5zY2hlbWUpLnRvTG93ZXJDYXNlKCkgPT09IFwid3NzXCI7XG59XG4vL1JGQyA2NDU1XG52YXIgaGFuZGxlciQyID0ge1xuICAgIHNjaGVtZTogXCJ3c1wiLFxuICAgIGRvbWFpbkhvc3Q6IHRydWUsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHdzQ29tcG9uZW50cyA9IGNvbXBvbmVudHM7XG4gICAgICAgIC8vaW5kaWNhdGUgaWYgdGhlIHNlY3VyZSBmbGFnIGlzIHNldFxuICAgICAgICB3c0NvbXBvbmVudHMuc2VjdXJlID0gaXNTZWN1cmUod3NDb21wb25lbnRzKTtcbiAgICAgICAgLy9jb25zdHJ1Y3QgcmVzb3VjZSBuYW1lXG4gICAgICAgIHdzQ29tcG9uZW50cy5yZXNvdXJjZU5hbWUgPSAod3NDb21wb25lbnRzLnBhdGggfHwgJy8nKSArICh3c0NvbXBvbmVudHMucXVlcnkgPyAnPycgKyB3c0NvbXBvbmVudHMucXVlcnkgOiAnJyk7XG4gICAgICAgIHdzQ29tcG9uZW50cy5wYXRoID0gdW5kZWZpbmVkO1xuICAgICAgICB3c0NvbXBvbmVudHMucXVlcnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB3c0NvbXBvbmVudHM7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uIHNlcmlhbGl6ZSh3c0NvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgLy9ub3JtYWxpemUgdGhlIGRlZmF1bHQgcG9ydFxuICAgICAgICBpZiAod3NDb21wb25lbnRzLnBvcnQgPT09IChpc1NlY3VyZSh3c0NvbXBvbmVudHMpID8gNDQzIDogODApIHx8IHdzQ29tcG9uZW50cy5wb3J0ID09PSBcIlwiKSB7XG4gICAgICAgICAgICB3c0NvbXBvbmVudHMucG9ydCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvL2Vuc3VyZSBzY2hlbWUgbWF0Y2hlcyBzZWN1cmUgZmxhZ1xuICAgICAgICBpZiAodHlwZW9mIHdzQ29tcG9uZW50cy5zZWN1cmUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgd3NDb21wb25lbnRzLnNjaGVtZSA9IHdzQ29tcG9uZW50cy5zZWN1cmUgPyAnd3NzJyA6ICd3cyc7XG4gICAgICAgICAgICB3c0NvbXBvbmVudHMuc2VjdXJlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vcmVjb25zdHJ1Y3QgcGF0aCBmcm9tIHJlc291cmNlIG5hbWVcbiAgICAgICAgaWYgKHdzQ29tcG9uZW50cy5yZXNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgIHZhciBfd3NDb21wb25lbnRzJHJlc291cmMgPSB3c0NvbXBvbmVudHMucmVzb3VyY2VOYW1lLnNwbGl0KCc/JyksXG4gICAgICAgICAgICAgICAgX3dzQ29tcG9uZW50cyRyZXNvdXJjMiA9IHNsaWNlZFRvQXJyYXkoX3dzQ29tcG9uZW50cyRyZXNvdXJjLCAyKSxcbiAgICAgICAgICAgICAgICBwYXRoID0gX3dzQ29tcG9uZW50cyRyZXNvdXJjMlswXSxcbiAgICAgICAgICAgICAgICBxdWVyeSA9IF93c0NvbXBvbmVudHMkcmVzb3VyYzJbMV07XG5cbiAgICAgICAgICAgIHdzQ29tcG9uZW50cy5wYXRoID0gcGF0aCAmJiBwYXRoICE9PSAnLycgPyBwYXRoIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgd3NDb21wb25lbnRzLnF1ZXJ5ID0gcXVlcnk7XG4gICAgICAgICAgICB3c0NvbXBvbmVudHMucmVzb3VyY2VOYW1lID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vZm9yYmlkIGZyYWdtZW50IGNvbXBvbmVudFxuICAgICAgICB3c0NvbXBvbmVudHMuZnJhZ21lbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB3c0NvbXBvbmVudHM7XG4gICAgfVxufTtcblxudmFyIGhhbmRsZXIkMyA9IHtcbiAgICBzY2hlbWU6IFwid3NzXCIsXG4gICAgZG9tYWluSG9zdDogaGFuZGxlciQyLmRvbWFpbkhvc3QsXG4gICAgcGFyc2U6IGhhbmRsZXIkMi5wYXJzZSxcbiAgICBzZXJpYWxpemU6IGhhbmRsZXIkMi5zZXJpYWxpemVcbn07XG5cbnZhciBPID0ge307XG52YXIgaXNJUkkgPSB0cnVlO1xuLy9SRkMgMzk4NlxudmFyIFVOUkVTRVJWRUQkJCA9IFwiW0EtWmEtejAtOVxcXFwtXFxcXC5cXFxcX1xcXFx+XCIgKyAoaXNJUkkgPyBcIlxcXFx4QTAtXFxcXHUyMDBEXFxcXHUyMDEwLVxcXFx1MjAyOVxcXFx1MjAyRi1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZFRlwiIDogXCJcIikgKyBcIl1cIjtcbnZhciBIRVhESUckJCA9IFwiWzAtOUEtRmEtZl1cIjsgLy9jYXNlLWluc2Vuc2l0aXZlXG52YXIgUENUX0VOQ09ERUQkID0gc3ViZXhwKHN1YmV4cChcIiVbRUZlZl1cIiArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSArIFwifFwiICsgc3ViZXhwKFwiJVs4OUEtRmEtZl1cIiArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSArIFwifFwiICsgc3ViZXhwKFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkpOyAvL2V4cGFuZGVkXG4vL1JGQyA1MzIyLCBleGNlcHQgdGhlc2Ugc3ltYm9scyBhcyBwZXIgUkZDIDYwNjg6IEAgOiAvID8gIyBbIF0gJiA7ID1cbi8vY29uc3QgQVRFWFQkJCA9IFwiW0EtWmEtejAtOVxcXFwhXFxcXCNcXFxcJFxcXFwlXFxcXCZcXFxcJ1xcXFwqXFxcXCtcXFxcLVxcXFwvXFxcXD1cXFxcP1xcXFxeXFxcXF9cXFxcYFxcXFx7XFxcXHxcXFxcfVxcXFx+XVwiO1xuLy9jb25zdCBXU1AkJCA9IFwiW1xcXFx4MjBcXFxceDA5XVwiO1xuLy9jb25zdCBPQlNfUVRFWFQkJCA9IFwiW1xcXFx4MDEtXFxcXHgwOFxcXFx4MEJcXFxceDBDXFxcXHgwRS1cXFxceDFGXFxcXHg3Rl1cIjsgIC8vKCVkMS04IC8gJWQxMS0xMiAvICVkMTQtMzEgLyAlZDEyNylcbi8vY29uc3QgUVRFWFQkJCA9IG1lcmdlKFwiW1xcXFx4MjFcXFxceDIzLVxcXFx4NUJcXFxceDVELVxcXFx4N0VdXCIsIE9CU19RVEVYVCQkKTsgIC8vJWQzMyAvICVkMzUtOTEgLyAlZDkzLTEyNiAvIG9icy1xdGV4dFxuLy9jb25zdCBWQ0hBUiQkID0gXCJbXFxcXHgyMS1cXFxceDdFXVwiO1xuLy9jb25zdCBXU1AkJCA9IFwiW1xcXFx4MjBcXFxceDA5XVwiO1xuLy9jb25zdCBPQlNfUVAkID0gc3ViZXhwKFwiXFxcXFxcXFxcIiArIG1lcmdlKFwiW1xcXFx4MDBcXFxceDBEXFxcXHgwQV1cIiwgT0JTX1FURVhUJCQpKTsgIC8vJWQwIC8gQ1IgLyBMRiAvIG9icy1xdGV4dFxuLy9jb25zdCBGV1MkID0gc3ViZXhwKHN1YmV4cChXU1AkJCArIFwiKlwiICsgXCJcXFxceDBEXFxcXHgwQVwiKSArIFwiP1wiICsgV1NQJCQgKyBcIitcIik7XG4vL2NvbnN0IFFVT1RFRF9QQUlSJCA9IHN1YmV4cChzdWJleHAoXCJcXFxcXFxcXFwiICsgc3ViZXhwKFZDSEFSJCQgKyBcInxcIiArIFdTUCQkKSkgKyBcInxcIiArIE9CU19RUCQpO1xuLy9jb25zdCBRVU9URURfU1RSSU5HJCA9IHN1YmV4cCgnXFxcXFwiJyArIHN1YmV4cChGV1MkICsgXCI/XCIgKyBRQ09OVEVOVCQpICsgXCIqXCIgKyBGV1MkICsgXCI/XCIgKyAnXFxcXFwiJyk7XG52YXIgQVRFWFQkJCA9IFwiW0EtWmEtejAtOVxcXFwhXFxcXCRcXFxcJVxcXFwnXFxcXCpcXFxcK1xcXFwtXFxcXF5cXFxcX1xcXFxgXFxcXHtcXFxcfFxcXFx9XFxcXH5dXCI7XG52YXIgUVRFWFQkJCA9IFwiW1xcXFwhXFxcXCRcXFxcJVxcXFwnXFxcXChcXFxcKVxcXFwqXFxcXCtcXFxcLFxcXFwtXFxcXC4wLTlcXFxcPFxcXFw+QS1aXFxcXHg1RS1cXFxceDdFXVwiO1xudmFyIFZDSEFSJCQgPSBtZXJnZShRVEVYVCQkLCBcIltcXFxcXFxcIlxcXFxcXFxcXVwiKTtcbnZhciBTT01FX0RFTElNUyQkID0gXCJbXFxcXCFcXFxcJFxcXFwnXFxcXChcXFxcKVxcXFwqXFxcXCtcXFxcLFxcXFw7XFxcXDpcXFxcQF1cIjtcbnZhciBVTlJFU0VSVkVEID0gbmV3IFJlZ0V4cChVTlJFU0VSVkVEJCQsIFwiZ1wiKTtcbnZhciBQQ1RfRU5DT0RFRCA9IG5ldyBSZWdFeHAoUENUX0VOQ09ERUQkLCBcImdcIik7XG52YXIgTk9UX0xPQ0FMX1BBUlQgPSBuZXcgUmVnRXhwKG1lcmdlKFwiW15dXCIsIEFURVhUJCQsIFwiW1xcXFwuXVwiLCAnW1xcXFxcIl0nLCBWQ0hBUiQkKSwgXCJnXCIpO1xudmFyIE5PVF9IRk5BTUUgPSBuZXcgUmVnRXhwKG1lcmdlKFwiW15dXCIsIFVOUkVTRVJWRUQkJCwgU09NRV9ERUxJTVMkJCksIFwiZ1wiKTtcbnZhciBOT1RfSEZWQUxVRSA9IE5PVF9IRk5BTUU7XG5mdW5jdGlvbiBkZWNvZGVVbnJlc2VydmVkKHN0cikge1xuICAgIHZhciBkZWNTdHIgPSBwY3REZWNDaGFycyhzdHIpO1xuICAgIHJldHVybiAhZGVjU3RyLm1hdGNoKFVOUkVTRVJWRUQpID8gc3RyIDogZGVjU3RyO1xufVxudmFyIGhhbmRsZXIkNCA9IHtcbiAgICBzY2hlbWU6IFwibWFpbHRvXCIsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlJCQxKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIG1haWx0b0NvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuICAgICAgICB2YXIgdG8gPSBtYWlsdG9Db21wb25lbnRzLnRvID0gbWFpbHRvQ29tcG9uZW50cy5wYXRoID8gbWFpbHRvQ29tcG9uZW50cy5wYXRoLnNwbGl0KFwiLFwiKSA6IFtdO1xuICAgICAgICBtYWlsdG9Db21wb25lbnRzLnBhdGggPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChtYWlsdG9Db21wb25lbnRzLnF1ZXJ5KSB7XG4gICAgICAgICAgICB2YXIgdW5rbm93bkhlYWRlcnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBoZWFkZXJzID0ge307XG4gICAgICAgICAgICB2YXIgaGZpZWxkcyA9IG1haWx0b0NvbXBvbmVudHMucXVlcnkuc3BsaXQoXCImXCIpO1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDAsIHhsID0gaGZpZWxkcy5sZW5ndGg7IHggPCB4bDsgKyt4KSB7XG4gICAgICAgICAgICAgICAgdmFyIGhmaWVsZCA9IGhmaWVsZHNbeF0uc3BsaXQoXCI9XCIpO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoaGZpZWxkWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ0b1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvQWRkcnMgPSBoZmllbGRbMV0uc3BsaXQoXCIsXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX3ggPSAwLCBfeGwgPSB0b0FkZHJzLmxlbmd0aDsgX3ggPCBfeGw7ICsrX3gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by5wdXNoKHRvQWRkcnNbX3hdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3ViamVjdFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFpbHRvQ29tcG9uZW50cy5zdWJqZWN0ID0gdW5lc2NhcGVDb21wb25lbnQoaGZpZWxkWzFdLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYm9keVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFpbHRvQ29tcG9uZW50cy5ib2R5ID0gdW5lc2NhcGVDb21wb25lbnQoaGZpZWxkWzFdLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93bkhlYWRlcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1t1bmVzY2FwZUNvbXBvbmVudChoZmllbGRbMF0sIG9wdGlvbnMpXSA9IHVuZXNjYXBlQ29tcG9uZW50KGhmaWVsZFsxXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodW5rbm93bkhlYWRlcnMpIG1haWx0b0NvbXBvbmVudHMuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgICAgIH1cbiAgICAgICAgbWFpbHRvQ29tcG9uZW50cy5xdWVyeSA9IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yICh2YXIgX3gyID0gMCwgX3hsMiA9IHRvLmxlbmd0aDsgX3gyIDwgX3hsMjsgKytfeDIpIHtcbiAgICAgICAgICAgIHZhciBhZGRyID0gdG9bX3gyXS5zcGxpdChcIkBcIik7XG4gICAgICAgICAgICBhZGRyWzBdID0gdW5lc2NhcGVDb21wb25lbnQoYWRkclswXSk7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMudW5pY29kZVN1cHBvcnQpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnZlcnQgVW5pY29kZSBJRE4gLT4gQVNDSUkgSUROXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgYWRkclsxXSA9IHB1bnljb2RlLnRvQVNDSUkodW5lc2NhcGVDb21wb25lbnQoYWRkclsxXSwgb3B0aW9ucykudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBtYWlsdG9Db21wb25lbnRzLmVycm9yID0gbWFpbHRvQ29tcG9uZW50cy5lcnJvciB8fCBcIkVtYWlsIGFkZHJlc3MncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBBU0NJSSB2aWEgcHVueWNvZGU6IFwiICsgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFkZHJbMV0gPSB1bmVzY2FwZUNvbXBvbmVudChhZGRyWzFdLCBvcHRpb25zKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9bX3gyXSA9IGFkZHIuam9pbihcIkBcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1haWx0b0NvbXBvbmVudHM7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uIHNlcmlhbGl6ZSQkMShtYWlsdG9Db21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBjb21wb25lbnRzID0gbWFpbHRvQ29tcG9uZW50cztcbiAgICAgICAgdmFyIHRvID0gdG9BcnJheShtYWlsdG9Db21wb25lbnRzLnRvKTtcbiAgICAgICAgaWYgKHRvKSB7XG4gICAgICAgICAgICBmb3IgKHZhciB4ID0gMCwgeGwgPSB0by5sZW5ndGg7IHggPCB4bDsgKyt4KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvQWRkciA9IFN0cmluZyh0b1t4XSk7XG4gICAgICAgICAgICAgICAgdmFyIGF0SWR4ID0gdG9BZGRyLmxhc3RJbmRleE9mKFwiQFwiKTtcbiAgICAgICAgICAgICAgICB2YXIgbG9jYWxQYXJ0ID0gdG9BZGRyLnNsaWNlKDAsIGF0SWR4KS5yZXBsYWNlKFBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKFBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSkucmVwbGFjZShOT1RfTE9DQUxfUEFSVCwgcGN0RW5jQ2hhcik7XG4gICAgICAgICAgICAgICAgdmFyIGRvbWFpbiA9IHRvQWRkci5zbGljZShhdElkeCArIDEpO1xuICAgICAgICAgICAgICAgIC8vY29udmVydCBJRE4gdmlhIHB1bnljb2RlXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZG9tYWluID0gIW9wdGlvbnMuaXJpID8gcHVueWNvZGUudG9BU0NJSSh1bmVzY2FwZUNvbXBvbmVudChkb21haW4sIG9wdGlvbnMpLnRvTG93ZXJDYXNlKCkpIDogcHVueWNvZGUudG9Vbmljb2RlKGRvbWFpbik7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIkVtYWlsIGFkZHJlc3MncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBcIiArICghb3B0aW9ucy5pcmkgPyBcIkFTQ0lJXCIgOiBcIlVuaWNvZGVcIikgKyBcIiB2aWEgcHVueWNvZGU6IFwiICsgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdG9beF0gPSBsb2NhbFBhcnQgKyBcIkBcIiArIGRvbWFpbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbXBvbmVudHMucGF0aCA9IHRvLmpvaW4oXCIsXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBoZWFkZXJzID0gbWFpbHRvQ29tcG9uZW50cy5oZWFkZXJzID0gbWFpbHRvQ29tcG9uZW50cy5oZWFkZXJzIHx8IHt9O1xuICAgICAgICBpZiAobWFpbHRvQ29tcG9uZW50cy5zdWJqZWN0KSBoZWFkZXJzW1wic3ViamVjdFwiXSA9IG1haWx0b0NvbXBvbmVudHMuc3ViamVjdDtcbiAgICAgICAgaWYgKG1haWx0b0NvbXBvbmVudHMuYm9keSkgaGVhZGVyc1tcImJvZHlcIl0gPSBtYWlsdG9Db21wb25lbnRzLmJvZHk7XG4gICAgICAgIHZhciBmaWVsZHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBoZWFkZXJzKSB7XG4gICAgICAgICAgICBpZiAoaGVhZGVyc1tuYW1lXSAhPT0gT1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIGZpZWxkcy5wdXNoKG5hbWUucmVwbGFjZShQQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShQQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpLnJlcGxhY2UoTk9UX0hGTkFNRSwgcGN0RW5jQ2hhcikgKyBcIj1cIiArIGhlYWRlcnNbbmFtZV0ucmVwbGFjZShQQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShQQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpLnJlcGxhY2UoTk9UX0hGVkFMVUUsIHBjdEVuY0NoYXIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5xdWVyeSA9IGZpZWxkcy5qb2luKFwiJlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tcG9uZW50cztcbiAgICB9XG59O1xuXG52YXIgVVJOX1BBUlNFID0gL14oW15cXDpdKylcXDooLiopLztcbi8vUkZDIDIxNDFcbnZhciBoYW5kbGVyJDUgPSB7XG4gICAgc2NoZW1lOiBcInVyblwiLFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZSQkMShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBtYXRjaGVzID0gY29tcG9uZW50cy5wYXRoICYmIGNvbXBvbmVudHMucGF0aC5tYXRjaChVUk5fUEFSU0UpO1xuICAgICAgICB2YXIgdXJuQ29tcG9uZW50cyA9IGNvbXBvbmVudHM7XG4gICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICB2YXIgc2NoZW1lID0gb3B0aW9ucy5zY2hlbWUgfHwgdXJuQ29tcG9uZW50cy5zY2hlbWUgfHwgXCJ1cm5cIjtcbiAgICAgICAgICAgIHZhciBuaWQgPSBtYXRjaGVzWzFdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB2YXIgbnNzID0gbWF0Y2hlc1syXTtcbiAgICAgICAgICAgIHZhciB1cm5TY2hlbWUgPSBzY2hlbWUgKyBcIjpcIiArIChvcHRpb25zLm5pZCB8fCBuaWQpO1xuICAgICAgICAgICAgdmFyIHNjaGVtZUhhbmRsZXIgPSBTQ0hFTUVTW3VyblNjaGVtZV07XG4gICAgICAgICAgICB1cm5Db21wb25lbnRzLm5pZCA9IG5pZDtcbiAgICAgICAgICAgIHVybkNvbXBvbmVudHMubnNzID0gbnNzO1xuICAgICAgICAgICAgdXJuQ29tcG9uZW50cy5wYXRoID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHNjaGVtZUhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICB1cm5Db21wb25lbnRzID0gc2NoZW1lSGFuZGxlci5wYXJzZSh1cm5Db21wb25lbnRzLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybkNvbXBvbmVudHMuZXJyb3IgPSB1cm5Db21wb25lbnRzLmVycm9yIHx8IFwiVVJOIGNhbiBub3QgYmUgcGFyc2VkLlwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1cm5Db21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUkJDEodXJuQ29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgc2NoZW1lID0gb3B0aW9ucy5zY2hlbWUgfHwgdXJuQ29tcG9uZW50cy5zY2hlbWUgfHwgXCJ1cm5cIjtcbiAgICAgICAgdmFyIG5pZCA9IHVybkNvbXBvbmVudHMubmlkO1xuICAgICAgICB2YXIgdXJuU2NoZW1lID0gc2NoZW1lICsgXCI6XCIgKyAob3B0aW9ucy5uaWQgfHwgbmlkKTtcbiAgICAgICAgdmFyIHNjaGVtZUhhbmRsZXIgPSBTQ0hFTUVTW3VyblNjaGVtZV07XG4gICAgICAgIGlmIChzY2hlbWVIYW5kbGVyKSB7XG4gICAgICAgICAgICB1cm5Db21wb25lbnRzID0gc2NoZW1lSGFuZGxlci5zZXJpYWxpemUodXJuQ29tcG9uZW50cywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHVyaUNvbXBvbmVudHMgPSB1cm5Db21wb25lbnRzO1xuICAgICAgICB2YXIgbnNzID0gdXJuQ29tcG9uZW50cy5uc3M7XG4gICAgICAgIHVyaUNvbXBvbmVudHMucGF0aCA9IChuaWQgfHwgb3B0aW9ucy5uaWQpICsgXCI6XCIgKyBuc3M7XG4gICAgICAgIHJldHVybiB1cmlDb21wb25lbnRzO1xuICAgIH1cbn07XG5cbnZhciBVVUlEID0gL15bMC05QS1GYS1mXXs4fSg/OlxcLVswLTlBLUZhLWZdezR9KXszfVxcLVswLTlBLUZhLWZdezEyfSQvO1xuLy9SRkMgNDEyMlxudmFyIGhhbmRsZXIkNiA9IHtcbiAgICBzY2hlbWU6IFwidXJuOnV1aWRcIixcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UodXJuQ29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgdXVpZENvbXBvbmVudHMgPSB1cm5Db21wb25lbnRzO1xuICAgICAgICB1dWlkQ29tcG9uZW50cy51dWlkID0gdXVpZENvbXBvbmVudHMubnNzO1xuICAgICAgICB1dWlkQ29tcG9uZW50cy5uc3MgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghb3B0aW9ucy50b2xlcmFudCAmJiAoIXV1aWRDb21wb25lbnRzLnV1aWQgfHwgIXV1aWRDb21wb25lbnRzLnV1aWQubWF0Y2goVVVJRCkpKSB7XG4gICAgICAgICAgICB1dWlkQ29tcG9uZW50cy5lcnJvciA9IHV1aWRDb21wb25lbnRzLmVycm9yIHx8IFwiVVVJRCBpcyBub3QgdmFsaWQuXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHV1aWRDb21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUodXVpZENvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHVybkNvbXBvbmVudHMgPSB1dWlkQ29tcG9uZW50cztcbiAgICAgICAgLy9ub3JtYWxpemUgVVVJRFxuICAgICAgICB1cm5Db21wb25lbnRzLm5zcyA9ICh1dWlkQ29tcG9uZW50cy51dWlkIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiB1cm5Db21wb25lbnRzO1xuICAgIH1cbn07XG5cblNDSEVNRVNbaGFuZGxlci5zY2hlbWVdID0gaGFuZGxlcjtcblNDSEVNRVNbaGFuZGxlciQxLnNjaGVtZV0gPSBoYW5kbGVyJDE7XG5TQ0hFTUVTW2hhbmRsZXIkMi5zY2hlbWVdID0gaGFuZGxlciQyO1xuU0NIRU1FU1toYW5kbGVyJDMuc2NoZW1lXSA9IGhhbmRsZXIkMztcblNDSEVNRVNbaGFuZGxlciQ0LnNjaGVtZV0gPSBoYW5kbGVyJDQ7XG5TQ0hFTUVTW2hhbmRsZXIkNS5zY2hlbWVdID0gaGFuZGxlciQ1O1xuU0NIRU1FU1toYW5kbGVyJDYuc2NoZW1lXSA9IGhhbmRsZXIkNjtcblxuZXhwb3J0cy5TQ0hFTUVTID0gU0NIRU1FUztcbmV4cG9ydHMucGN0RW5jQ2hhciA9IHBjdEVuY0NoYXI7XG5leHBvcnRzLnBjdERlY0NoYXJzID0gcGN0RGVjQ2hhcnM7XG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5leHBvcnRzLnJlbW92ZURvdFNlZ21lbnRzID0gcmVtb3ZlRG90U2VnbWVudHM7XG5leHBvcnRzLnNlcmlhbGl6ZSA9IHNlcmlhbGl6ZTtcbmV4cG9ydHMucmVzb2x2ZUNvbXBvbmVudHMgPSByZXNvbHZlQ29tcG9uZW50cztcbmV4cG9ydHMucmVzb2x2ZSA9IHJlc29sdmU7XG5leHBvcnRzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTtcbmV4cG9ydHMuZXF1YWwgPSBlcXVhbDtcbmV4cG9ydHMuZXNjYXBlQ29tcG9uZW50ID0gZXNjYXBlQ29tcG9uZW50O1xuZXhwb3J0cy51bmVzY2FwZUNvbXBvbmVudCA9IHVuZXNjYXBlQ29tcG9uZW50O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG59KSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXJpLmFsbC5qcy5tYXBcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gZG8gbm90IGVkaXQgLmpzIGZpbGVzIGRpcmVjdGx5IC0gZWRpdCBzcmMvaW5kZXguanN0XG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVxdWFsKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xuXG4gIGlmIChhICYmIGIgJiYgdHlwZW9mIGEgPT0gJ29iamVjdCcgJiYgdHlwZW9mIGIgPT0gJ29iamVjdCcpIHtcbiAgICBpZiAoYS5jb25zdHJ1Y3RvciAhPT0gYi5jb25zdHJ1Y3RvcikgcmV0dXJuIGZhbHNlO1xuXG4gICAgdmFyIGxlbmd0aCwgaSwga2V5cztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuICAgICAgbGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspXG4gICAgICAgIGlmICghZXF1YWwoYVtpXSwgYltpXSkpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG5cbiAgICBpZiAoYS5jb25zdHJ1Y3RvciA9PT0gUmVnRXhwKSByZXR1cm4gYS5zb3VyY2UgPT09IGIuc291cmNlICYmIGEuZmxhZ3MgPT09IGIuZmxhZ3M7XG4gICAgaWYgKGEudmFsdWVPZiAhPT0gT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mKSByZXR1cm4gYS52YWx1ZU9mKCkgPT09IGIudmFsdWVPZigpO1xuICAgIGlmIChhLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKSByZXR1cm4gYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCk7XG5cbiAgICBrZXlzID0gT2JqZWN0LmtleXMoYSk7XG4gICAgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgaWYgKGxlbmd0aCAhPT0gT2JqZWN0LmtleXMoYikubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspXG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXlzW2ldKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKCFlcXVhbChhW2tleV0sIGJba2V5XSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIHRydWUgaWYgYm90aCBOYU4sIGZhbHNlIG90aGVyd2lzZVxuICByZXR1cm4gYSE9PWEgJiYgYiE9PWI7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZ1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL3B1bnljb2RlLmpzIC0gcHVueWNvZGUudWNzMi5kZWNvZGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdWNzMmxlbmd0aChzdHIpIHtcbiAgdmFyIGxlbmd0aCA9IDBcbiAgICAsIGxlbiA9IHN0ci5sZW5ndGhcbiAgICAsIHBvcyA9IDBcbiAgICAsIHZhbHVlO1xuICB3aGlsZSAocG9zIDwgbGVuKSB7XG4gICAgbGVuZ3RoKys7XG4gICAgdmFsdWUgPSBzdHIuY2hhckNvZGVBdChwb3MrKyk7XG4gICAgaWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgcG9zIDwgbGVuKSB7XG4gICAgICAvLyBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXJcbiAgICAgIHZhbHVlID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmICgodmFsdWUgJiAweEZDMDApID09IDB4REMwMCkgcG9zKys7IC8vIGxvdyBzdXJyb2dhdGVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxlbmd0aDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNvcHk6IGNvcHksXG4gIGNoZWNrRGF0YVR5cGU6IGNoZWNrRGF0YVR5cGUsXG4gIGNoZWNrRGF0YVR5cGVzOiBjaGVja0RhdGFUeXBlcyxcbiAgY29lcmNlVG9UeXBlczogY29lcmNlVG9UeXBlcyxcbiAgdG9IYXNoOiB0b0hhc2gsXG4gIGdldFByb3BlcnR5OiBnZXRQcm9wZXJ0eSxcbiAgZXNjYXBlUXVvdGVzOiBlc2NhcGVRdW90ZXMsXG4gIGVxdWFsOiByZXF1aXJlKCdmYXN0LWRlZXAtZXF1YWwnKSxcbiAgdWNzMmxlbmd0aDogcmVxdWlyZSgnLi91Y3MybGVuZ3RoJyksXG4gIHZhck9jY3VyZW5jZXM6IHZhck9jY3VyZW5jZXMsXG4gIHZhclJlcGxhY2U6IHZhclJlcGxhY2UsXG4gIHNjaGVtYUhhc1J1bGVzOiBzY2hlbWFIYXNSdWxlcyxcbiAgc2NoZW1hSGFzUnVsZXNFeGNlcHQ6IHNjaGVtYUhhc1J1bGVzRXhjZXB0LFxuICBzY2hlbWFVbmtub3duUnVsZXM6IHNjaGVtYVVua25vd25SdWxlcyxcbiAgdG9RdW90ZWRTdHJpbmc6IHRvUXVvdGVkU3RyaW5nLFxuICBnZXRQYXRoRXhwcjogZ2V0UGF0aEV4cHIsXG4gIGdldFBhdGg6IGdldFBhdGgsXG4gIGdldERhdGE6IGdldERhdGEsXG4gIHVuZXNjYXBlRnJhZ21lbnQ6IHVuZXNjYXBlRnJhZ21lbnQsXG4gIHVuZXNjYXBlSnNvblBvaW50ZXI6IHVuZXNjYXBlSnNvblBvaW50ZXIsXG4gIGVzY2FwZUZyYWdtZW50OiBlc2NhcGVGcmFnbWVudCxcbiAgZXNjYXBlSnNvblBvaW50ZXI6IGVzY2FwZUpzb25Qb2ludGVyXG59O1xuXG5cbmZ1bmN0aW9uIGNvcHkobywgdG8pIHtcbiAgdG8gPSB0byB8fCB7fTtcbiAgZm9yICh2YXIga2V5IGluIG8pIHRvW2tleV0gPSBvW2tleV07XG4gIHJldHVybiB0bztcbn1cblxuXG5mdW5jdGlvbiBjaGVja0RhdGFUeXBlKGRhdGFUeXBlLCBkYXRhLCBzdHJpY3ROdW1iZXJzLCBuZWdhdGUpIHtcbiAgdmFyIEVRVUFMID0gbmVnYXRlID8gJyAhPT0gJyA6ICcgPT09ICdcbiAgICAsIEFORCA9IG5lZ2F0ZSA/ICcgfHwgJyA6ICcgJiYgJ1xuICAgICwgT0sgPSBuZWdhdGUgPyAnIScgOiAnJ1xuICAgICwgTk9UID0gbmVnYXRlID8gJycgOiAnISc7XG4gIHN3aXRjaCAoZGF0YVR5cGUpIHtcbiAgICBjYXNlICdudWxsJzogcmV0dXJuIGRhdGEgKyBFUVVBTCArICdudWxsJztcbiAgICBjYXNlICdhcnJheSc6IHJldHVybiBPSyArICdBcnJheS5pc0FycmF5KCcgKyBkYXRhICsgJyknO1xuICAgIGNhc2UgJ29iamVjdCc6IHJldHVybiAnKCcgKyBPSyArIGRhdGEgKyBBTkQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZW9mICcgKyBkYXRhICsgRVFVQUwgKyAnXCJvYmplY3RcIicgKyBBTkQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBOT1QgKyAnQXJyYXkuaXNBcnJheSgnICsgZGF0YSArICcpKSc7XG4gICAgY2FzZSAnaW50ZWdlcic6IHJldHVybiAnKHR5cGVvZiAnICsgZGF0YSArIEVRVUFMICsgJ1wibnVtYmVyXCInICsgQU5EICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PVCArICcoJyArIGRhdGEgKyAnICUgMSknICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFORCArIGRhdGEgKyBFUVVBTCArIGRhdGEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmljdE51bWJlcnMgPyAoQU5EICsgT0sgKyAnaXNGaW5pdGUoJyArIGRhdGEgKyAnKScpIDogJycpICsgJyknO1xuICAgIGNhc2UgJ251bWJlcic6IHJldHVybiAnKHR5cGVvZiAnICsgZGF0YSArIEVRVUFMICsgJ1wiJyArIGRhdGFUeXBlICsgJ1wiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpY3ROdW1iZXJzID8gKEFORCArIE9LICsgJ2lzRmluaXRlKCcgKyBkYXRhICsgJyknKSA6ICcnKSArICcpJztcbiAgICBkZWZhdWx0OiByZXR1cm4gJ3R5cGVvZiAnICsgZGF0YSArIEVRVUFMICsgJ1wiJyArIGRhdGFUeXBlICsgJ1wiJztcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGNoZWNrRGF0YVR5cGVzKGRhdGFUeXBlcywgZGF0YSwgc3RyaWN0TnVtYmVycykge1xuICBzd2l0Y2ggKGRhdGFUeXBlcy5sZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBjaGVja0RhdGFUeXBlKGRhdGFUeXBlc1swXSwgZGF0YSwgc3RyaWN0TnVtYmVycywgdHJ1ZSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHZhciBjb2RlID0gJyc7XG4gICAgICB2YXIgdHlwZXMgPSB0b0hhc2goZGF0YVR5cGVzKTtcbiAgICAgIGlmICh0eXBlcy5hcnJheSAmJiB0eXBlcy5vYmplY3QpIHtcbiAgICAgICAgY29kZSA9IHR5cGVzLm51bGwgPyAnKCc6ICcoIScgKyBkYXRhICsgJyB8fCAnO1xuICAgICAgICBjb2RlICs9ICd0eXBlb2YgJyArIGRhdGEgKyAnICE9PSBcIm9iamVjdFwiKSc7XG4gICAgICAgIGRlbGV0ZSB0eXBlcy5udWxsO1xuICAgICAgICBkZWxldGUgdHlwZXMuYXJyYXk7XG4gICAgICAgIGRlbGV0ZSB0eXBlcy5vYmplY3Q7XG4gICAgICB9XG4gICAgICBpZiAodHlwZXMubnVtYmVyKSBkZWxldGUgdHlwZXMuaW50ZWdlcjtcbiAgICAgIGZvciAodmFyIHQgaW4gdHlwZXMpXG4gICAgICAgIGNvZGUgKz0gKGNvZGUgPyAnICYmICcgOiAnJyApICsgY2hlY2tEYXRhVHlwZSh0LCBkYXRhLCBzdHJpY3ROdW1iZXJzLCB0cnVlKTtcblxuICAgICAgcmV0dXJuIGNvZGU7XG4gIH1cbn1cblxuXG52YXIgQ09FUkNFX1RPX1RZUEVTID0gdG9IYXNoKFsgJ3N0cmluZycsICdudW1iZXInLCAnaW50ZWdlcicsICdib29sZWFuJywgJ251bGwnIF0pO1xuZnVuY3Rpb24gY29lcmNlVG9UeXBlcyhvcHRpb25Db2VyY2VUeXBlcywgZGF0YVR5cGVzKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGFUeXBlcykpIHtcbiAgICB2YXIgdHlwZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpPTA7IGk8ZGF0YVR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdCA9IGRhdGFUeXBlc1tpXTtcbiAgICAgIGlmIChDT0VSQ0VfVE9fVFlQRVNbdF0pIHR5cGVzW3R5cGVzLmxlbmd0aF0gPSB0O1xuICAgICAgZWxzZSBpZiAob3B0aW9uQ29lcmNlVHlwZXMgPT09ICdhcnJheScgJiYgdCA9PT0gJ2FycmF5JykgdHlwZXNbdHlwZXMubGVuZ3RoXSA9IHQ7XG4gICAgfVxuICAgIGlmICh0eXBlcy5sZW5ndGgpIHJldHVybiB0eXBlcztcbiAgfSBlbHNlIGlmIChDT0VSQ0VfVE9fVFlQRVNbZGF0YVR5cGVzXSkge1xuICAgIHJldHVybiBbZGF0YVR5cGVzXTtcbiAgfSBlbHNlIGlmIChvcHRpb25Db2VyY2VUeXBlcyA9PT0gJ2FycmF5JyAmJiBkYXRhVHlwZXMgPT09ICdhcnJheScpIHtcbiAgICByZXR1cm4gWydhcnJheSddO1xuICB9XG59XG5cblxuZnVuY3Rpb24gdG9IYXNoKGFycikge1xuICB2YXIgaGFzaCA9IHt9O1xuICBmb3IgKHZhciBpPTA7IGk8YXJyLmxlbmd0aDsgaSsrKSBoYXNoW2FycltpXV0gPSB0cnVlO1xuICByZXR1cm4gaGFzaDtcbn1cblxuXG52YXIgSURFTlRJRklFUiA9IC9eW2EteiRfXVthLXokXzAtOV0qJC9pO1xudmFyIFNJTkdMRV9RVU9URSA9IC8nfFxcXFwvZztcbmZ1bmN0aW9uIGdldFByb3BlcnR5KGtleSkge1xuICByZXR1cm4gdHlwZW9mIGtleSA9PSAnbnVtYmVyJ1xuICAgICAgICAgID8gJ1snICsga2V5ICsgJ10nXG4gICAgICAgICAgOiBJREVOVElGSUVSLnRlc3Qoa2V5KVxuICAgICAgICAgICAgPyAnLicgKyBrZXlcbiAgICAgICAgICAgIDogXCJbJ1wiICsgZXNjYXBlUXVvdGVzKGtleSkgKyBcIiddXCI7XG59XG5cblxuZnVuY3Rpb24gZXNjYXBlUXVvdGVzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoU0lOR0xFX1FVT1RFLCAnXFxcXCQmJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHIvZywgJ1xcXFxyJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXGYvZywgJ1xcXFxmJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgJ1xcXFx0Jyk7XG59XG5cblxuZnVuY3Rpb24gdmFyT2NjdXJlbmNlcyhzdHIsIGRhdGFWYXIpIHtcbiAgZGF0YVZhciArPSAnW14wLTldJztcbiAgdmFyIG1hdGNoZXMgPSBzdHIubWF0Y2gobmV3IFJlZ0V4cChkYXRhVmFyLCAnZycpKTtcbiAgcmV0dXJuIG1hdGNoZXMgPyBtYXRjaGVzLmxlbmd0aCA6IDA7XG59XG5cblxuZnVuY3Rpb24gdmFyUmVwbGFjZShzdHIsIGRhdGFWYXIsIGV4cHIpIHtcbiAgZGF0YVZhciArPSAnKFteMC05XSknO1xuICBleHByID0gZXhwci5yZXBsYWNlKC9cXCQvZywgJyQkJCQnKTtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoZGF0YVZhciwgJ2cnKSwgZXhwciArICckMScpO1xufVxuXG5cbmZ1bmN0aW9uIHNjaGVtYUhhc1J1bGVzKHNjaGVtYSwgcnVsZXMpIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gJ2Jvb2xlYW4nKSByZXR1cm4gIXNjaGVtYTtcbiAgZm9yICh2YXIga2V5IGluIHNjaGVtYSkgaWYgKHJ1bGVzW2tleV0pIHJldHVybiB0cnVlO1xufVxuXG5cbmZ1bmN0aW9uIHNjaGVtYUhhc1J1bGVzRXhjZXB0KHNjaGVtYSwgcnVsZXMsIGV4Y2VwdEtleXdvcmQpIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gJ2Jvb2xlYW4nKSByZXR1cm4gIXNjaGVtYSAmJiBleGNlcHRLZXl3b3JkICE9ICdub3QnO1xuICBmb3IgKHZhciBrZXkgaW4gc2NoZW1hKSBpZiAoa2V5ICE9IGV4Y2VwdEtleXdvcmQgJiYgcnVsZXNba2V5XSkgcmV0dXJuIHRydWU7XG59XG5cblxuZnVuY3Rpb24gc2NoZW1hVW5rbm93blJ1bGVzKHNjaGVtYSwgcnVsZXMpIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gJ2Jvb2xlYW4nKSByZXR1cm47XG4gIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIGlmICghcnVsZXNba2V5XSkgcmV0dXJuIGtleTtcbn1cblxuXG5mdW5jdGlvbiB0b1F1b3RlZFN0cmluZyhzdHIpIHtcbiAgcmV0dXJuICdcXCcnICsgZXNjYXBlUXVvdGVzKHN0cikgKyAnXFwnJztcbn1cblxuXG5mdW5jdGlvbiBnZXRQYXRoRXhwcihjdXJyZW50UGF0aCwgZXhwciwganNvblBvaW50ZXJzLCBpc051bWJlcikge1xuICB2YXIgcGF0aCA9IGpzb25Qb2ludGVycyAvLyBmYWxzZSBieSBkZWZhdWx0XG4gICAgICAgICAgICAgID8gJ1xcJy9cXCcgKyAnICsgZXhwciArIChpc051bWJlciA/ICcnIDogJy5yZXBsYWNlKC9+L2csIFxcJ34wXFwnKS5yZXBsYWNlKC9cXFxcLy9nLCBcXCd+MVxcJyknKVxuICAgICAgICAgICAgICA6IChpc051bWJlciA/ICdcXCdbXFwnICsgJyArIGV4cHIgKyAnICsgXFwnXVxcJycgOiAnXFwnW1xcXFxcXCdcXCcgKyAnICsgZXhwciArICcgKyBcXCdcXFxcXFwnXVxcJycpO1xuICByZXR1cm4gam9pblBhdGhzKGN1cnJlbnRQYXRoLCBwYXRoKTtcbn1cblxuXG5mdW5jdGlvbiBnZXRQYXRoKGN1cnJlbnRQYXRoLCBwcm9wLCBqc29uUG9pbnRlcnMpIHtcbiAgdmFyIHBhdGggPSBqc29uUG9pbnRlcnMgLy8gZmFsc2UgYnkgZGVmYXVsdFxuICAgICAgICAgICAgICA/IHRvUXVvdGVkU3RyaW5nKCcvJyArIGVzY2FwZUpzb25Qb2ludGVyKHByb3ApKVxuICAgICAgICAgICAgICA6IHRvUXVvdGVkU3RyaW5nKGdldFByb3BlcnR5KHByb3ApKTtcbiAgcmV0dXJuIGpvaW5QYXRocyhjdXJyZW50UGF0aCwgcGF0aCk7XG59XG5cblxudmFyIEpTT05fUE9JTlRFUiA9IC9eXFwvKD86W15+XXx+MHx+MSkqJC87XG52YXIgUkVMQVRJVkVfSlNPTl9QT0lOVEVSID0gL14oWzAtOV0rKSgjfFxcLyg/Oltefl18fjB8fjEpKik/JC87XG5mdW5jdGlvbiBnZXREYXRhKCRkYXRhLCBsdmwsIHBhdGhzKSB7XG4gIHZhciB1cCwganNvblBvaW50ZXIsIGRhdGEsIG1hdGNoZXM7XG4gIGlmICgkZGF0YSA9PT0gJycpIHJldHVybiAncm9vdERhdGEnO1xuICBpZiAoJGRhdGFbMF0gPT0gJy8nKSB7XG4gICAgaWYgKCFKU09OX1BPSU5URVIudGVzdCgkZGF0YSkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OLXBvaW50ZXI6ICcgKyAkZGF0YSk7XG4gICAganNvblBvaW50ZXIgPSAkZGF0YTtcbiAgICBkYXRhID0gJ3Jvb3REYXRhJztcbiAgfSBlbHNlIHtcbiAgICBtYXRjaGVzID0gJGRhdGEubWF0Y2goUkVMQVRJVkVfSlNPTl9QT0lOVEVSKTtcbiAgICBpZiAoIW1hdGNoZXMpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OLXBvaW50ZXI6ICcgKyAkZGF0YSk7XG4gICAgdXAgPSArbWF0Y2hlc1sxXTtcbiAgICBqc29uUG9pbnRlciA9IG1hdGNoZXNbMl07XG4gICAgaWYgKGpzb25Qb2ludGVyID09ICcjJykge1xuICAgICAgaWYgKHVwID49IGx2bCkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYWNjZXNzIHByb3BlcnR5L2luZGV4ICcgKyB1cCArICcgbGV2ZWxzIHVwLCBjdXJyZW50IGxldmVsIGlzICcgKyBsdmwpO1xuICAgICAgcmV0dXJuIHBhdGhzW2x2bCAtIHVwXTtcbiAgICB9XG5cbiAgICBpZiAodXAgPiBsdmwpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGFjY2VzcyBkYXRhICcgKyB1cCArICcgbGV2ZWxzIHVwLCBjdXJyZW50IGxldmVsIGlzICcgKyBsdmwpO1xuICAgIGRhdGEgPSAnZGF0YScgKyAoKGx2bCAtIHVwKSB8fCAnJyk7XG4gICAgaWYgKCFqc29uUG9pbnRlcikgcmV0dXJuIGRhdGE7XG4gIH1cblxuICB2YXIgZXhwciA9IGRhdGE7XG4gIHZhciBzZWdtZW50cyA9IGpzb25Qb2ludGVyLnNwbGl0KCcvJyk7XG4gIGZvciAodmFyIGk9MDsgaTxzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzZWdtZW50ID0gc2VnbWVudHNbaV07XG4gICAgaWYgKHNlZ21lbnQpIHtcbiAgICAgIGRhdGEgKz0gZ2V0UHJvcGVydHkodW5lc2NhcGVKc29uUG9pbnRlcihzZWdtZW50KSk7XG4gICAgICBleHByICs9ICcgJiYgJyArIGRhdGE7XG4gICAgfVxuICB9XG4gIHJldHVybiBleHByO1xufVxuXG5cbmZ1bmN0aW9uIGpvaW5QYXRocyAoYSwgYikge1xuICBpZiAoYSA9PSAnXCJcIicpIHJldHVybiBiO1xuICByZXR1cm4gKGEgKyAnICsgJyArIGIpLnJlcGxhY2UoLyhbXlxcXFxdKScgXFwrICcvZywgJyQxJyk7XG59XG5cblxuZnVuY3Rpb24gdW5lc2NhcGVGcmFnbWVudChzdHIpIHtcbiAgcmV0dXJuIHVuZXNjYXBlSnNvblBvaW50ZXIoZGVjb2RlVVJJQ29tcG9uZW50KHN0cikpO1xufVxuXG5cbmZ1bmN0aW9uIGVzY2FwZUZyYWdtZW50KHN0cikge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGVzY2FwZUpzb25Qb2ludGVyKHN0cikpO1xufVxuXG5cbmZ1bmN0aW9uIGVzY2FwZUpzb25Qb2ludGVyKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL34vZywgJ34wJykucmVwbGFjZSgvXFwvL2csICd+MScpO1xufVxuXG5cbmZ1bmN0aW9uIHVuZXNjYXBlSnNvblBvaW50ZXIoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvfjEvZywgJy8nKS5yZXBsYWNlKC9+MC9nLCAnficpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNjaGVtYU9iamVjdDtcblxuZnVuY3Rpb24gU2NoZW1hT2JqZWN0KG9iaikge1xuICB1dGlsLmNvcHkob2JqLCB0aGlzKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHRyYXZlcnNlID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc2NoZW1hLCBvcHRzLCBjYikge1xuICAvLyBMZWdhY3kgc3VwcG9ydCBmb3IgdjAuMy4xIGFuZCBlYXJsaWVyLlxuICBpZiAodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cblxuICBjYiA9IG9wdHMuY2IgfHwgY2I7XG4gIHZhciBwcmUgPSAodHlwZW9mIGNiID09ICdmdW5jdGlvbicpID8gY2IgOiBjYi5wcmUgfHwgZnVuY3Rpb24oKSB7fTtcbiAgdmFyIHBvc3QgPSBjYi5wb3N0IHx8IGZ1bmN0aW9uKCkge307XG5cbiAgX3RyYXZlcnNlKG9wdHMsIHByZSwgcG9zdCwgc2NoZW1hLCAnJywgc2NoZW1hKTtcbn07XG5cblxudHJhdmVyc2Uua2V5d29yZHMgPSB7XG4gIGFkZGl0aW9uYWxJdGVtczogdHJ1ZSxcbiAgaXRlbXM6IHRydWUsXG4gIGNvbnRhaW5zOiB0cnVlLFxuICBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZSxcbiAgcHJvcGVydHlOYW1lczogdHJ1ZSxcbiAgbm90OiB0cnVlXG59O1xuXG50cmF2ZXJzZS5hcnJheUtleXdvcmRzID0ge1xuICBpdGVtczogdHJ1ZSxcbiAgYWxsT2Y6IHRydWUsXG4gIGFueU9mOiB0cnVlLFxuICBvbmVPZjogdHJ1ZVxufTtcblxudHJhdmVyc2UucHJvcHNLZXl3b3JkcyA9IHtcbiAgZGVmaW5pdGlvbnM6IHRydWUsXG4gIHByb3BlcnRpZXM6IHRydWUsXG4gIHBhdHRlcm5Qcm9wZXJ0aWVzOiB0cnVlLFxuICBkZXBlbmRlbmNpZXM6IHRydWVcbn07XG5cbnRyYXZlcnNlLnNraXBLZXl3b3JkcyA9IHtcbiAgZGVmYXVsdDogdHJ1ZSxcbiAgZW51bTogdHJ1ZSxcbiAgY29uc3Q6IHRydWUsXG4gIHJlcXVpcmVkOiB0cnVlLFxuICBtYXhpbXVtOiB0cnVlLFxuICBtaW5pbXVtOiB0cnVlLFxuICBleGNsdXNpdmVNYXhpbXVtOiB0cnVlLFxuICBleGNsdXNpdmVNaW5pbXVtOiB0cnVlLFxuICBtdWx0aXBsZU9mOiB0cnVlLFxuICBtYXhMZW5ndGg6IHRydWUsXG4gIG1pbkxlbmd0aDogdHJ1ZSxcbiAgcGF0dGVybjogdHJ1ZSxcbiAgZm9ybWF0OiB0cnVlLFxuICBtYXhJdGVtczogdHJ1ZSxcbiAgbWluSXRlbXM6IHRydWUsXG4gIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICBtYXhQcm9wZXJ0aWVzOiB0cnVlLFxuICBtaW5Qcm9wZXJ0aWVzOiB0cnVlXG59O1xuXG5cbmZ1bmN0aW9uIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaGVtYSwganNvblB0ciwgcm9vdFNjaGVtYSwgcGFyZW50SnNvblB0ciwgcGFyZW50S2V5d29yZCwgcGFyZW50U2NoZW1hLCBrZXlJbmRleCkge1xuICBpZiAoc2NoZW1hICYmIHR5cGVvZiBzY2hlbWEgPT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgIHByZShzY2hlbWEsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpO1xuICAgIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIHtcbiAgICAgIHZhciBzY2ggPSBzY2hlbWFba2V5XTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaCkpIHtcbiAgICAgICAgaWYgKGtleSBpbiB0cmF2ZXJzZS5hcnJheUtleXdvcmRzKSB7XG4gICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHNjaC5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaFtpXSwganNvblB0ciArICcvJyArIGtleSArICcvJyArIGksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hLCBpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgaW4gdHJhdmVyc2UucHJvcHNLZXl3b3Jkcykge1xuICAgICAgICBpZiAoc2NoICYmIHR5cGVvZiBzY2ggPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHNjaClcbiAgICAgICAgICAgIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaFtwcm9wXSwganNvblB0ciArICcvJyArIGtleSArICcvJyArIGVzY2FwZUpzb25QdHIocHJvcCksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hLCBwcm9wKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgaW4gdHJhdmVyc2Uua2V5d29yZHMgfHwgKG9wdHMuYWxsS2V5cyAmJiAhKGtleSBpbiB0cmF2ZXJzZS5za2lwS2V5d29yZHMpKSkge1xuICAgICAgICBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2gsIGpzb25QdHIgKyAnLycgKyBrZXksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcG9zdChzY2hlbWEsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gZXNjYXBlSnNvblB0cihzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9+L2csICd+MCcpLnJlcGxhY2UoL1xcLy9nLCAnfjEnKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFVSSSA9IHJlcXVpcmUoJ3VyaS1qcycpXG4gICwgZXF1YWwgPSByZXF1aXJlKCdmYXN0LWRlZXAtZXF1YWwnKVxuICAsIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKVxuICAsIFNjaGVtYU9iamVjdCA9IHJlcXVpcmUoJy4vc2NoZW1hX29iaicpXG4gICwgdHJhdmVyc2UgPSByZXF1aXJlKCdqc29uLXNjaGVtYS10cmF2ZXJzZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlc29sdmU7XG5cbnJlc29sdmUubm9ybWFsaXplSWQgPSBub3JtYWxpemVJZDtcbnJlc29sdmUuZnVsbFBhdGggPSBnZXRGdWxsUGF0aDtcbnJlc29sdmUudXJsID0gcmVzb2x2ZVVybDtcbnJlc29sdmUuaWRzID0gcmVzb2x2ZUlkcztcbnJlc29sdmUuaW5saW5lUmVmID0gaW5saW5lUmVmO1xucmVzb2x2ZS5zY2hlbWEgPSByZXNvbHZlU2NoZW1hO1xuXG4vKipcbiAqIFtyZXNvbHZlIGFuZCBjb21waWxlIHRoZSByZWZlcmVuY2VzICgkcmVmKV1cbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY29tcGlsZSByZWZlcmVuY2UgdG8gc2NoZW1hIGNvbXBpbGF0aW9uIGZ1bmNpdG9uIChsb2NhbENvbXBpbGUpXG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgb2JqZWN0IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJvb3Qgc2NoZW1hIGZvciB0aGUgY3VycmVudCBzY2hlbWFcbiAqIEBwYXJhbSAge1N0cmluZ30gcmVmIHJlZmVyZW5jZSB0byByZXNvbHZlXG4gKiBAcmV0dXJuIHtPYmplY3R8RnVuY3Rpb259IHNjaGVtYSBvYmplY3QgKGlmIHRoZSBzY2hlbWEgY2FuIGJlIGlubGluZWQpIG9yIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZShjb21waWxlLCByb290LCByZWYpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgcmVmVmFsID0gdGhpcy5fcmVmc1tyZWZdO1xuICBpZiAodHlwZW9mIHJlZlZhbCA9PSAnc3RyaW5nJykge1xuICAgIGlmICh0aGlzLl9yZWZzW3JlZlZhbF0pIHJlZlZhbCA9IHRoaXMuX3JlZnNbcmVmVmFsXTtcbiAgICBlbHNlIHJldHVybiByZXNvbHZlLmNhbGwodGhpcywgY29tcGlsZSwgcm9vdCwgcmVmVmFsKTtcbiAgfVxuXG4gIHJlZlZhbCA9IHJlZlZhbCB8fCB0aGlzLl9zY2hlbWFzW3JlZl07XG4gIGlmIChyZWZWYWwgaW5zdGFuY2VvZiBTY2hlbWFPYmplY3QpIHtcbiAgICByZXR1cm4gaW5saW5lUmVmKHJlZlZhbC5zY2hlbWEsIHRoaXMuX29wdHMuaW5saW5lUmVmcylcbiAgICAgICAgICAgID8gcmVmVmFsLnNjaGVtYVxuICAgICAgICAgICAgOiByZWZWYWwudmFsaWRhdGUgfHwgdGhpcy5fY29tcGlsZShyZWZWYWwpO1xuICB9XG5cbiAgdmFyIHJlcyA9IHJlc29sdmVTY2hlbWEuY2FsbCh0aGlzLCByb290LCByZWYpO1xuICB2YXIgc2NoZW1hLCB2LCBiYXNlSWQ7XG4gIGlmIChyZXMpIHtcbiAgICBzY2hlbWEgPSByZXMuc2NoZW1hO1xuICAgIHJvb3QgPSByZXMucm9vdDtcbiAgICBiYXNlSWQgPSByZXMuYmFzZUlkO1xuICB9XG5cbiAgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFNjaGVtYU9iamVjdCkge1xuICAgIHYgPSBzY2hlbWEudmFsaWRhdGUgfHwgY29tcGlsZS5jYWxsKHRoaXMsIHNjaGVtYS5zY2hlbWEsIHJvb3QsIHVuZGVmaW5lZCwgYmFzZUlkKTtcbiAgfSBlbHNlIGlmIChzY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgIHYgPSBpbmxpbmVSZWYoc2NoZW1hLCB0aGlzLl9vcHRzLmlubGluZVJlZnMpXG4gICAgICAgID8gc2NoZW1hXG4gICAgICAgIDogY29tcGlsZS5jYWxsKHRoaXMsIHNjaGVtYSwgcm9vdCwgdW5kZWZpbmVkLCBiYXNlSWQpO1xuICB9XG5cbiAgcmV0dXJuIHY7XG59XG5cblxuLyoqXG4gKiBSZXNvbHZlIHNjaGVtYSwgaXRzIHJvb3QgYW5kIGJhc2VJZFxuICogQHRoaXMgQWp2XG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgcm9vdCBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIHNjaGVtYSwgcmVmVmFsLCByZWZzXG4gKiBAcGFyYW0gIHtTdHJpbmd9IHJlZiAgcmVmZXJlbmNlIHRvIHJlc29sdmVcbiAqIEByZXR1cm4ge09iamVjdH0gb2JqZWN0IHdpdGggcHJvcGVydGllcyBzY2hlbWEsIHJvb3QsIGJhc2VJZFxuICovXG5mdW5jdGlvbiByZXNvbHZlU2NoZW1hKHJvb3QsIHJlZikge1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gIHZhciBwID0gVVJJLnBhcnNlKHJlZilcbiAgICAsIHJlZlBhdGggPSBfZ2V0RnVsbFBhdGgocClcbiAgICAsIGJhc2VJZCA9IGdldEZ1bGxQYXRoKHRoaXMuX2dldElkKHJvb3Quc2NoZW1hKSk7XG4gIGlmIChPYmplY3Qua2V5cyhyb290LnNjaGVtYSkubGVuZ3RoID09PSAwIHx8IHJlZlBhdGggIT09IGJhc2VJZCkge1xuICAgIHZhciBpZCA9IG5vcm1hbGl6ZUlkKHJlZlBhdGgpO1xuICAgIHZhciByZWZWYWwgPSB0aGlzLl9yZWZzW2lkXTtcbiAgICBpZiAodHlwZW9mIHJlZlZhbCA9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHJlc29sdmVSZWN1cnNpdmUuY2FsbCh0aGlzLCByb290LCByZWZWYWwsIHApO1xuICAgIH0gZWxzZSBpZiAocmVmVmFsIGluc3RhbmNlb2YgU2NoZW1hT2JqZWN0KSB7XG4gICAgICBpZiAoIXJlZlZhbC52YWxpZGF0ZSkgdGhpcy5fY29tcGlsZShyZWZWYWwpO1xuICAgICAgcm9vdCA9IHJlZlZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVmVmFsID0gdGhpcy5fc2NoZW1hc1tpZF07XG4gICAgICBpZiAocmVmVmFsIGluc3RhbmNlb2YgU2NoZW1hT2JqZWN0KSB7XG4gICAgICAgIGlmICghcmVmVmFsLnZhbGlkYXRlKSB0aGlzLl9jb21waWxlKHJlZlZhbCk7XG4gICAgICAgIGlmIChpZCA9PSBub3JtYWxpemVJZChyZWYpKVxuICAgICAgICAgIHJldHVybiB7IHNjaGVtYTogcmVmVmFsLCByb290OiByb290LCBiYXNlSWQ6IGJhc2VJZCB9O1xuICAgICAgICByb290ID0gcmVmVmFsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXJvb3Quc2NoZW1hKSByZXR1cm47XG4gICAgYmFzZUlkID0gZ2V0RnVsbFBhdGgodGhpcy5fZ2V0SWQocm9vdC5zY2hlbWEpKTtcbiAgfVxuICByZXR1cm4gZ2V0SnNvblBvaW50ZXIuY2FsbCh0aGlzLCBwLCBiYXNlSWQsIHJvb3Quc2NoZW1hLCByb290KTtcbn1cblxuXG4vKiBAdGhpcyBBanYgKi9cbmZ1bmN0aW9uIHJlc29sdmVSZWN1cnNpdmUocm9vdCwgcmVmLCBwYXJzZWRSZWYpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgcmVzID0gcmVzb2x2ZVNjaGVtYS5jYWxsKHRoaXMsIHJvb3QsIHJlZik7XG4gIGlmIChyZXMpIHtcbiAgICB2YXIgc2NoZW1hID0gcmVzLnNjaGVtYTtcbiAgICB2YXIgYmFzZUlkID0gcmVzLmJhc2VJZDtcbiAgICByb290ID0gcmVzLnJvb3Q7XG4gICAgdmFyIGlkID0gdGhpcy5fZ2V0SWQoc2NoZW1hKTtcbiAgICBpZiAoaWQpIGJhc2VJZCA9IHJlc29sdmVVcmwoYmFzZUlkLCBpZCk7XG4gICAgcmV0dXJuIGdldEpzb25Qb2ludGVyLmNhbGwodGhpcywgcGFyc2VkUmVmLCBiYXNlSWQsIHNjaGVtYSwgcm9vdCk7XG4gIH1cbn1cblxuXG52YXIgUFJFVkVOVF9TQ09QRV9DSEFOR0UgPSB1dGlsLnRvSGFzaChbJ3Byb3BlcnRpZXMnLCAncGF0dGVyblByb3BlcnRpZXMnLCAnZW51bScsICdkZXBlbmRlbmNpZXMnLCAnZGVmaW5pdGlvbnMnXSk7XG4vKiBAdGhpcyBBanYgKi9cbmZ1bmN0aW9uIGdldEpzb25Qb2ludGVyKHBhcnNlZFJlZiwgYmFzZUlkLCBzY2hlbWEsIHJvb3QpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICBwYXJzZWRSZWYuZnJhZ21lbnQgPSBwYXJzZWRSZWYuZnJhZ21lbnQgfHwgJyc7XG4gIGlmIChwYXJzZWRSZWYuZnJhZ21lbnQuc2xpY2UoMCwxKSAhPSAnLycpIHJldHVybjtcbiAgdmFyIHBhcnRzID0gcGFyc2VkUmVmLmZyYWdtZW50LnNwbGl0KCcvJyk7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQpIHtcbiAgICAgIHBhcnQgPSB1dGlsLnVuZXNjYXBlRnJhZ21lbnQocGFydCk7XG4gICAgICBzY2hlbWEgPSBzY2hlbWFbcGFydF07XG4gICAgICBpZiAoc2NoZW1hID09PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgICAgdmFyIGlkO1xuICAgICAgaWYgKCFQUkVWRU5UX1NDT1BFX0NIQU5HRVtwYXJ0XSkge1xuICAgICAgICBpZCA9IHRoaXMuX2dldElkKHNjaGVtYSk7XG4gICAgICAgIGlmIChpZCkgYmFzZUlkID0gcmVzb2x2ZVVybChiYXNlSWQsIGlkKTtcbiAgICAgICAgaWYgKHNjaGVtYS4kcmVmKSB7XG4gICAgICAgICAgdmFyICRyZWYgPSByZXNvbHZlVXJsKGJhc2VJZCwgc2NoZW1hLiRyZWYpO1xuICAgICAgICAgIHZhciByZXMgPSByZXNvbHZlU2NoZW1hLmNhbGwodGhpcywgcm9vdCwgJHJlZik7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgc2NoZW1hID0gcmVzLnNjaGVtYTtcbiAgICAgICAgICAgIHJvb3QgPSByZXMucm9vdDtcbiAgICAgICAgICAgIGJhc2VJZCA9IHJlcy5iYXNlSWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChzY2hlbWEgIT09IHVuZGVmaW5lZCAmJiBzY2hlbWEgIT09IHJvb3Quc2NoZW1hKVxuICAgIHJldHVybiB7IHNjaGVtYTogc2NoZW1hLCByb290OiByb290LCBiYXNlSWQ6IGJhc2VJZCB9O1xufVxuXG5cbnZhciBTSU1QTEVfSU5MSU5FRCA9IHV0aWwudG9IYXNoKFtcbiAgJ3R5cGUnLCAnZm9ybWF0JywgJ3BhdHRlcm4nLFxuICAnbWF4TGVuZ3RoJywgJ21pbkxlbmd0aCcsXG4gICdtYXhQcm9wZXJ0aWVzJywgJ21pblByb3BlcnRpZXMnLFxuICAnbWF4SXRlbXMnLCAnbWluSXRlbXMnLFxuICAnbWF4aW11bScsICdtaW5pbXVtJyxcbiAgJ3VuaXF1ZUl0ZW1zJywgJ211bHRpcGxlT2YnLFxuICAncmVxdWlyZWQnLCAnZW51bSdcbl0pO1xuZnVuY3Rpb24gaW5saW5lUmVmKHNjaGVtYSwgbGltaXQpIHtcbiAgaWYgKGxpbWl0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICBpZiAobGltaXQgPT09IHVuZGVmaW5lZCB8fCBsaW1pdCA9PT0gdHJ1ZSkgcmV0dXJuIGNoZWNrTm9SZWYoc2NoZW1hKTtcbiAgZWxzZSBpZiAobGltaXQpIHJldHVybiBjb3VudEtleXMoc2NoZW1hKSA8PSBsaW1pdDtcbn1cblxuXG5mdW5jdGlvbiBjaGVja05vUmVmKHNjaGVtYSkge1xuICB2YXIgaXRlbTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgIGZvciAodmFyIGk9MDsgaTxzY2hlbWEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGl0ZW0gPSBzY2hlbWFbaV07XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcgJiYgIWNoZWNrTm9SZWYoaXRlbSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIga2V5IGluIHNjaGVtYSkge1xuICAgICAgaWYgKGtleSA9PSAnJHJlZicpIHJldHVybiBmYWxzZTtcbiAgICAgIGl0ZW0gPSBzY2hlbWFba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PSAnb2JqZWN0JyAmJiAhY2hlY2tOb1JlZihpdGVtKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuXG5mdW5jdGlvbiBjb3VudEtleXMoc2NoZW1hKSB7XG4gIHZhciBjb3VudCA9IDAsIGl0ZW07XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpIHtcbiAgICBmb3IgKHZhciBpPTA7IGk8c2NoZW1hLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpdGVtID0gc2NoZW1hW2ldO1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09ICdvYmplY3QnKSBjb3VudCArPSBjb3VudEtleXMoaXRlbSk7XG4gICAgICBpZiAoY291bnQgPT0gSW5maW5pdHkpIHJldHVybiBJbmZpbml0eTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIga2V5IGluIHNjaGVtYSkge1xuICAgICAgaWYgKGtleSA9PSAnJHJlZicpIHJldHVybiBJbmZpbml0eTtcbiAgICAgIGlmIChTSU1QTEVfSU5MSU5FRFtrZXldKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtID0gc2NoZW1hW2tleV07XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PSAnb2JqZWN0JykgY291bnQgKz0gY291bnRLZXlzKGl0ZW0pICsgMTtcbiAgICAgICAgaWYgKGNvdW50ID09IEluZmluaXR5KSByZXR1cm4gSW5maW5pdHk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjb3VudDtcbn1cblxuXG5mdW5jdGlvbiBnZXRGdWxsUGF0aChpZCwgbm9ybWFsaXplKSB7XG4gIGlmIChub3JtYWxpemUgIT09IGZhbHNlKSBpZCA9IG5vcm1hbGl6ZUlkKGlkKTtcbiAgdmFyIHAgPSBVUkkucGFyc2UoaWQpO1xuICByZXR1cm4gX2dldEZ1bGxQYXRoKHApO1xufVxuXG5cbmZ1bmN0aW9uIF9nZXRGdWxsUGF0aChwKSB7XG4gIHJldHVybiBVUkkuc2VyaWFsaXplKHApLnNwbGl0KCcjJylbMF0gKyAnIyc7XG59XG5cblxudmFyIFRSQUlMSU5HX1NMQVNIX0hBU0ggPSAvI1xcLz8kLztcbmZ1bmN0aW9uIG5vcm1hbGl6ZUlkKGlkKSB7XG4gIHJldHVybiBpZCA/IGlkLnJlcGxhY2UoVFJBSUxJTkdfU0xBU0hfSEFTSCwgJycpIDogJyc7XG59XG5cblxuZnVuY3Rpb24gcmVzb2x2ZVVybChiYXNlSWQsIGlkKSB7XG4gIGlkID0gbm9ybWFsaXplSWQoaWQpO1xuICByZXR1cm4gVVJJLnJlc29sdmUoYmFzZUlkLCBpZCk7XG59XG5cblxuLyogQHRoaXMgQWp2ICovXG5mdW5jdGlvbiByZXNvbHZlSWRzKHNjaGVtYSkge1xuICB2YXIgc2NoZW1hSWQgPSBub3JtYWxpemVJZCh0aGlzLl9nZXRJZChzY2hlbWEpKTtcbiAgdmFyIGJhc2VJZHMgPSB7Jyc6IHNjaGVtYUlkfTtcbiAgdmFyIGZ1bGxQYXRocyA9IHsnJzogZ2V0RnVsbFBhdGgoc2NoZW1hSWQsIGZhbHNlKX07XG4gIHZhciBsb2NhbFJlZnMgPSB7fTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHRyYXZlcnNlKHNjaGVtYSwge2FsbEtleXM6IHRydWV9LCBmdW5jdGlvbihzY2gsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpIHtcbiAgICBpZiAoanNvblB0ciA9PT0gJycpIHJldHVybjtcbiAgICB2YXIgaWQgPSBzZWxmLl9nZXRJZChzY2gpO1xuICAgIHZhciBiYXNlSWQgPSBiYXNlSWRzW3BhcmVudEpzb25QdHJdO1xuICAgIHZhciBmdWxsUGF0aCA9IGZ1bGxQYXRoc1twYXJlbnRKc29uUHRyXSArICcvJyArIHBhcmVudEtleXdvcmQ7XG4gICAgaWYgKGtleUluZGV4ICE9PSB1bmRlZmluZWQpXG4gICAgICBmdWxsUGF0aCArPSAnLycgKyAodHlwZW9mIGtleUluZGV4ID09ICdudW1iZXInID8ga2V5SW5kZXggOiB1dGlsLmVzY2FwZUZyYWdtZW50KGtleUluZGV4KSk7XG5cbiAgICBpZiAodHlwZW9mIGlkID09ICdzdHJpbmcnKSB7XG4gICAgICBpZCA9IGJhc2VJZCA9IG5vcm1hbGl6ZUlkKGJhc2VJZCA/IFVSSS5yZXNvbHZlKGJhc2VJZCwgaWQpIDogaWQpO1xuXG4gICAgICB2YXIgcmVmVmFsID0gc2VsZi5fcmVmc1tpZF07XG4gICAgICBpZiAodHlwZW9mIHJlZlZhbCA9PSAnc3RyaW5nJykgcmVmVmFsID0gc2VsZi5fcmVmc1tyZWZWYWxdO1xuICAgICAgaWYgKHJlZlZhbCAmJiByZWZWYWwuc2NoZW1hKSB7XG4gICAgICAgIGlmICghZXF1YWwoc2NoLCByZWZWYWwuc2NoZW1hKSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lkIFwiJyArIGlkICsgJ1wiIHJlc29sdmVzIHRvIG1vcmUgdGhhbiBvbmUgc2NoZW1hJyk7XG4gICAgICB9IGVsc2UgaWYgKGlkICE9IG5vcm1hbGl6ZUlkKGZ1bGxQYXRoKSkge1xuICAgICAgICBpZiAoaWRbMF0gPT0gJyMnKSB7XG4gICAgICAgICAgaWYgKGxvY2FsUmVmc1tpZF0gJiYgIWVxdWFsKHNjaCwgbG9jYWxSZWZzW2lkXSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lkIFwiJyArIGlkICsgJ1wiIHJlc29sdmVzIHRvIG1vcmUgdGhhbiBvbmUgc2NoZW1hJyk7XG4gICAgICAgICAgbG9jYWxSZWZzW2lkXSA9IHNjaDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWxmLl9yZWZzW2lkXSA9IGZ1bGxQYXRoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGJhc2VJZHNbanNvblB0cl0gPSBiYXNlSWQ7XG4gICAgZnVsbFBhdGhzW2pzb25QdHJdID0gZnVsbFBhdGg7XG4gIH0pO1xuXG4gIHJldHVybiBsb2NhbFJlZnM7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciByZXNvbHZlID0gcmVxdWlyZSgnLi9yZXNvbHZlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBWYWxpZGF0aW9uOiBlcnJvclN1YmNsYXNzKFZhbGlkYXRpb25FcnJvciksXG4gIE1pc3NpbmdSZWY6IGVycm9yU3ViY2xhc3MoTWlzc2luZ1JlZkVycm9yKVxufTtcblxuXG5mdW5jdGlvbiBWYWxpZGF0aW9uRXJyb3IoZXJyb3JzKSB7XG4gIHRoaXMubWVzc2FnZSA9ICd2YWxpZGF0aW9uIGZhaWxlZCc7XG4gIHRoaXMuZXJyb3JzID0gZXJyb3JzO1xuICB0aGlzLmFqdiA9IHRoaXMudmFsaWRhdGlvbiA9IHRydWU7XG59XG5cblxuTWlzc2luZ1JlZkVycm9yLm1lc3NhZ2UgPSBmdW5jdGlvbiAoYmFzZUlkLCByZWYpIHtcbiAgcmV0dXJuICdjYW5cXCd0IHJlc29sdmUgcmVmZXJlbmNlICcgKyByZWYgKyAnIGZyb20gaWQgJyArIGJhc2VJZDtcbn07XG5cblxuZnVuY3Rpb24gTWlzc2luZ1JlZkVycm9yKGJhc2VJZCwgcmVmLCBtZXNzYWdlKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgTWlzc2luZ1JlZkVycm9yLm1lc3NhZ2UoYmFzZUlkLCByZWYpO1xuICB0aGlzLm1pc3NpbmdSZWYgPSByZXNvbHZlLnVybChiYXNlSWQsIHJlZik7XG4gIHRoaXMubWlzc2luZ1NjaGVtYSA9IHJlc29sdmUubm9ybWFsaXplSWQocmVzb2x2ZS5mdWxsUGF0aCh0aGlzLm1pc3NpbmdSZWYpKTtcbn1cblxuXG5mdW5jdGlvbiBlcnJvclN1YmNsYXNzKFN1YmNsYXNzKSB7XG4gIFN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbiAgU3ViY2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3ViY2xhc3M7XG4gIHJldHVybiBTdWJjbGFzcztcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZGF0YSwgb3B0cykge1xuICAgIGlmICghb3B0cykgb3B0cyA9IHt9O1xuICAgIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgb3B0cyA9IHsgY21wOiBvcHRzIH07XG4gICAgdmFyIGN5Y2xlcyA9ICh0eXBlb2Ygb3B0cy5jeWNsZXMgPT09ICdib29sZWFuJykgPyBvcHRzLmN5Y2xlcyA6IGZhbHNlO1xuXG4gICAgdmFyIGNtcCA9IG9wdHMuY21wICYmIChmdW5jdGlvbiAoZikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIHZhciBhb2JqID0geyBrZXk6IGEsIHZhbHVlOiBub2RlW2FdIH07XG4gICAgICAgICAgICAgICAgdmFyIGJvYmogPSB7IGtleTogYiwgdmFsdWU6IG5vZGVbYl0gfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZihhb2JqLCBib2JqKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfSkob3B0cy5jbXApO1xuXG4gICAgdmFyIHNlZW4gPSBbXTtcbiAgICByZXR1cm4gKGZ1bmN0aW9uIHN0cmluZ2lmeSAobm9kZSkge1xuICAgICAgICBpZiAobm9kZSAmJiBub2RlLnRvSlNPTiAmJiB0eXBlb2Ygbm9kZS50b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLnRvSlNPTigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG5vZGUgPT0gJ251bWJlcicpIHJldHVybiBpc0Zpbml0ZShub2RlKSA/ICcnICsgbm9kZSA6ICdudWxsJztcbiAgICAgICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JykgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG5vZGUpO1xuXG4gICAgICAgIHZhciBpLCBvdXQ7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICAgICAgICBvdXQgPSAnWyc7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpKSBvdXQgKz0gJywnO1xuICAgICAgICAgICAgICAgIG91dCArPSBzdHJpbmdpZnkobm9kZVtpXSkgfHwgJ251bGwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dCArICddJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlID09PSBudWxsKSByZXR1cm4gJ251bGwnO1xuXG4gICAgICAgIGlmIChzZWVuLmluZGV4T2Yobm9kZSkgIT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoY3ljbGVzKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkoJ19fY3ljbGVfXycpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29udmVydGluZyBjaXJjdWxhciBzdHJ1Y3R1cmUgdG8gSlNPTicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ucHVzaChub2RlKSAtIDE7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMobm9kZSkuc29ydChjbXAgJiYgY21wKG5vZGUpKTtcbiAgICAgICAgb3V0ID0gJyc7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0cmluZ2lmeShub2RlW2tleV0pO1xuXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChvdXQpIG91dCArPSAnLCc7XG4gICAgICAgICAgICBvdXQgKz0gSlNPTi5zdHJpbmdpZnkoa2V5KSArICc6JyArIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHNlZW4uc3BsaWNlKHNlZW5JbmRleCwgMSk7XG4gICAgICAgIHJldHVybiAneycgKyBvdXQgKyAnfSc7XG4gICAgfSkoZGF0YSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV92YWxpZGF0ZShpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyc7XG4gIHZhciAkYXN5bmMgPSBpdC5zY2hlbWEuJGFzeW5jID09PSB0cnVlLFxuICAgICRyZWZLZXl3b3JkcyA9IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXNFeGNlcHQoaXQuc2NoZW1hLCBpdC5SVUxFUy5hbGwsICckcmVmJyksXG4gICAgJGlkID0gaXQuc2VsZi5fZ2V0SWQoaXQuc2NoZW1hKTtcbiAgaWYgKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMpIHtcbiAgICB2YXIgJHVua25vd25Ld2QgPSBpdC51dGlsLnNjaGVtYVVua25vd25SdWxlcyhpdC5zY2hlbWEsIGl0LlJVTEVTLmtleXdvcmRzKTtcbiAgICBpZiAoJHVua25vd25Ld2QpIHtcbiAgICAgIHZhciAka2V5d29yZHNNc2cgPSAndW5rbm93biBrZXl3b3JkOiAnICsgJHVua25vd25Ld2Q7XG4gICAgICBpZiAoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA9PT0gJ2xvZycpIGl0LmxvZ2dlci53YXJuKCRrZXl3b3Jkc01zZyk7XG4gICAgICBlbHNlIHRocm93IG5ldyBFcnJvcigka2V5d29yZHNNc2cpO1xuICAgIH1cbiAgfVxuICBpZiAoaXQuaXNUb3ApIHtcbiAgICBvdXQgKz0gJyB2YXIgdmFsaWRhdGUgPSAnO1xuICAgIGlmICgkYXN5bmMpIHtcbiAgICAgIGl0LmFzeW5jID0gdHJ1ZTtcbiAgICAgIG91dCArPSAnYXN5bmMgJztcbiAgICB9XG4gICAgb3V0ICs9ICdmdW5jdGlvbihkYXRhLCBkYXRhUGF0aCwgcGFyZW50RGF0YSwgcGFyZW50RGF0YVByb3BlcnR5LCByb290RGF0YSkgeyBcXCd1c2Ugc3RyaWN0XFwnOyAnO1xuICAgIGlmICgkaWQgJiYgKGl0Lm9wdHMuc291cmNlQ29kZSB8fCBpdC5vcHRzLnByb2Nlc3NDb2RlKSkge1xuICAgICAgb3V0ICs9ICcgJyArICgnL1xcKiMgc291cmNlVVJMPScgKyAkaWQgKyAnICovJykgKyAnICc7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgaXQuc2NoZW1hID09ICdib29sZWFuJyB8fCAhKCRyZWZLZXl3b3JkcyB8fCBpdC5zY2hlbWEuJHJlZikpIHtcbiAgICB2YXIgJGtleXdvcmQgPSAnZmFsc2Ugc2NoZW1hJztcbiAgICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICAgIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gICAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICAgIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgICB2YXIgJGVycm9yS2V5d29yZDtcbiAgICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICAgIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgICBpZiAoaXQuc2NoZW1hID09PSBmYWxzZSkge1xuICAgICAgaWYgKGl0LmlzVG9wKSB7XG4gICAgICAgICRicmVha09uRXJyb3IgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgJztcbiAgICAgIH1cbiAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnZmFsc2Ugc2NoZW1hJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczoge30gJztcbiAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdib29sZWFuIHNjaGVtYSBpcyBmYWxzZVxcJyAnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogZmFsc2UgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgIH1cbiAgICAgIHZhciBfX2VyciA9IG91dDtcbiAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXQuaXNUb3ApIHtcbiAgICAgICAgaWYgKCRhc3luYykge1xuICAgICAgICAgIG91dCArPSAnIHJldHVybiBkYXRhOyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IG51bGw7IHJldHVybiB0cnVlOyAnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkdmFsaWQpICsgJyA9IHRydWU7ICc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpdC5pc1RvcCkge1xuICAgICAgb3V0ICs9ICcgfTsgcmV0dXJuIHZhbGlkYXRlOyAnO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIGlmIChpdC5pc1RvcCkge1xuICAgIHZhciAkdG9wID0gaXQuaXNUb3AsXG4gICAgICAkbHZsID0gaXQubGV2ZWwgPSAwLFxuICAgICAgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWwgPSAwLFxuICAgICAgJGRhdGEgPSAnZGF0YSc7XG4gICAgaXQucm9vdElkID0gaXQucmVzb2x2ZS5mdWxsUGF0aChpdC5zZWxmLl9nZXRJZChpdC5yb290LnNjaGVtYSkpO1xuICAgIGl0LmJhc2VJZCA9IGl0LmJhc2VJZCB8fCBpdC5yb290SWQ7XG4gICAgZGVsZXRlIGl0LmlzVG9wO1xuICAgIGl0LmRhdGFQYXRoQXJyID0gW1wiXCJdO1xuICAgIGlmIChpdC5zY2hlbWEuZGVmYXVsdCAhPT0gdW5kZWZpbmVkICYmIGl0Lm9wdHMudXNlRGVmYXVsdHMgJiYgaXQub3B0cy5zdHJpY3REZWZhdWx0cykge1xuICAgICAgdmFyICRkZWZhdWx0TXNnID0gJ2RlZmF1bHQgaXMgaWdub3JlZCBpbiB0aGUgc2NoZW1hIHJvb3QnO1xuICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMgPT09ICdsb2cnKSBpdC5sb2dnZXIud2FybigkZGVmYXVsdE1zZyk7XG4gICAgICBlbHNlIHRocm93IG5ldyBFcnJvcigkZGVmYXVsdE1zZyk7XG4gICAgfVxuICAgIG91dCArPSAnIHZhciB2RXJyb3JzID0gbnVsbDsgJztcbiAgICBvdXQgKz0gJyB2YXIgZXJyb3JzID0gMDsgICAgICc7XG4gICAgb3V0ICs9ICcgaWYgKHJvb3REYXRhID09PSB1bmRlZmluZWQpIHJvb3REYXRhID0gZGF0YTsgJztcbiAgfSBlbHNlIHtcbiAgICB2YXIgJGx2bCA9IGl0LmxldmVsLFxuICAgICAgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWwsXG4gICAgICAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gICAgaWYgKCRpZCkgaXQuYmFzZUlkID0gaXQucmVzb2x2ZS51cmwoaXQuYmFzZUlkLCAkaWQpO1xuICAgIGlmICgkYXN5bmMgJiYgIWl0LmFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoJ2FzeW5jIHNjaGVtYSBpbiBzeW5jIHNjaGVtYScpO1xuICAgIG91dCArPSAnIHZhciBlcnJzXycgKyAoJGx2bCkgKyAnID0gZXJyb3JzOyc7XG4gIH1cbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsLFxuICAgICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnMsXG4gICAgJGNsb3NpbmdCcmFjZXMxID0gJycsXG4gICAgJGNsb3NpbmdCcmFjZXMyID0gJyc7XG4gIHZhciAkZXJyb3JLZXl3b3JkO1xuICB2YXIgJHR5cGVTY2hlbWEgPSBpdC5zY2hlbWEudHlwZSxcbiAgICAkdHlwZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCR0eXBlU2NoZW1hKTtcbiAgaWYgKCR0eXBlU2NoZW1hICYmIGl0Lm9wdHMubnVsbGFibGUgJiYgaXQuc2NoZW1hLm51bGxhYmxlID09PSB0cnVlKSB7XG4gICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgaWYgKCR0eXBlU2NoZW1hLmluZGV4T2YoJ251bGwnKSA9PSAtMSkgJHR5cGVTY2hlbWEgPSAkdHlwZVNjaGVtYS5jb25jYXQoJ251bGwnKTtcbiAgICB9IGVsc2UgaWYgKCR0eXBlU2NoZW1hICE9ICdudWxsJykge1xuICAgICAgJHR5cGVTY2hlbWEgPSBbJHR5cGVTY2hlbWEsICdudWxsJ107XG4gICAgICAkdHlwZUlzQXJyYXkgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAoJHR5cGVJc0FycmF5ICYmICR0eXBlU2NoZW1hLmxlbmd0aCA9PSAxKSB7XG4gICAgJHR5cGVTY2hlbWEgPSAkdHlwZVNjaGVtYVswXTtcbiAgICAkdHlwZUlzQXJyYXkgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXQuc2NoZW1hLiRyZWYgJiYgJHJlZktleXdvcmRzKSB7XG4gICAgaWYgKGl0Lm9wdHMuZXh0ZW5kUmVmcyA9PSAnZmFpbCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignJHJlZjogdmFsaWRhdGlvbiBrZXl3b3JkcyB1c2VkIGluIHNjaGVtYSBhdCBwYXRoIFwiJyArIGl0LmVyclNjaGVtYVBhdGggKyAnXCIgKHNlZSBvcHRpb24gZXh0ZW5kUmVmcyknKTtcbiAgICB9IGVsc2UgaWYgKGl0Lm9wdHMuZXh0ZW5kUmVmcyAhPT0gdHJ1ZSkge1xuICAgICAgJHJlZktleXdvcmRzID0gZmFsc2U7XG4gICAgICBpdC5sb2dnZXIud2FybignJHJlZjoga2V5d29yZHMgaWdub3JlZCBpbiBzY2hlbWEgYXQgcGF0aCBcIicgKyBpdC5lcnJTY2hlbWFQYXRoICsgJ1wiJyk7XG4gICAgfVxuICB9XG4gIGlmIChpdC5zY2hlbWEuJGNvbW1lbnQgJiYgaXQub3B0cy4kY29tbWVudCkge1xuICAgIG91dCArPSAnICcgKyAoaXQuUlVMRVMuYWxsLiRjb21tZW50LmNvZGUoaXQsICckY29tbWVudCcpKTtcbiAgfVxuICBpZiAoJHR5cGVTY2hlbWEpIHtcbiAgICBpZiAoaXQub3B0cy5jb2VyY2VUeXBlcykge1xuICAgICAgdmFyICRjb2VyY2VUb1R5cGVzID0gaXQudXRpbC5jb2VyY2VUb1R5cGVzKGl0Lm9wdHMuY29lcmNlVHlwZXMsICR0eXBlU2NoZW1hKTtcbiAgICB9XG4gICAgdmFyICRydWxlc0dyb3VwID0gaXQuUlVMRVMudHlwZXNbJHR5cGVTY2hlbWFdO1xuICAgIGlmICgkY29lcmNlVG9UeXBlcyB8fCAkdHlwZUlzQXJyYXkgfHwgJHJ1bGVzR3JvdXAgPT09IHRydWUgfHwgKCRydWxlc0dyb3VwICYmICEkc2hvdWxkVXNlR3JvdXAoJHJ1bGVzR3JvdXApKSkge1xuICAgICAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcudHlwZScsXG4gICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvdHlwZSc7XG4gICAgICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgJy50eXBlJyxcbiAgICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy90eXBlJyxcbiAgICAgICAgJG1ldGhvZCA9ICR0eXBlSXNBcnJheSA/ICdjaGVja0RhdGFUeXBlcycgOiAnY2hlY2tEYXRhVHlwZSc7XG4gICAgICBvdXQgKz0gJyBpZiAoJyArIChpdC51dGlsWyRtZXRob2RdKCR0eXBlU2NoZW1hLCAkZGF0YSwgaXQub3B0cy5zdHJpY3ROdW1iZXJzLCB0cnVlKSkgKyAnKSB7ICc7XG4gICAgICBpZiAoJGNvZXJjZVRvVHlwZXMpIHtcbiAgICAgICAgdmFyICRkYXRhVHlwZSA9ICdkYXRhVHlwZScgKyAkbHZsLFxuICAgICAgICAgICRjb2VyY2VkID0gJ2NvZXJjZWQnICsgJGx2bDtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJGRhdGFUeXBlKSArICcgPSB0eXBlb2YgJyArICgkZGF0YSkgKyAnOyB2YXIgJyArICgkY29lcmNlZCkgKyAnID0gdW5kZWZpbmVkOyAnO1xuICAgICAgICBpZiAoaXQub3B0cy5jb2VyY2VUeXBlcyA9PSAnYXJyYXknKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJGRhdGFUeXBlKSArICcgPT0gXFwnb2JqZWN0XFwnICYmIEFycmF5LmlzQXJyYXkoJyArICgkZGF0YSkgKyAnKSAmJiAnICsgKCRkYXRhKSArICcubGVuZ3RoID09IDEpIHsgJyArICgkZGF0YSkgKyAnID0gJyArICgkZGF0YSkgKyAnWzBdOyAnICsgKCRkYXRhVHlwZSkgKyAnID0gdHlwZW9mICcgKyAoJGRhdGEpICsgJzsgaWYgKCcgKyAoaXQudXRpbC5jaGVja0RhdGFUeXBlKGl0LnNjaGVtYS50eXBlLCAkZGF0YSwgaXQub3B0cy5zdHJpY3ROdW1iZXJzKSkgKyAnKSAnICsgKCRjb2VyY2VkKSArICcgPSAnICsgKCRkYXRhKSArICc7IH0gJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkY29lcmNlZCkgKyAnICE9PSB1bmRlZmluZWQpIDsgJztcbiAgICAgICAgdmFyIGFycjEgPSAkY29lcmNlVG9UeXBlcztcbiAgICAgICAgaWYgKGFycjEpIHtcbiAgICAgICAgICB2YXIgJHR5cGUsICRpID0gLTEsXG4gICAgICAgICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoJGkgPCBsMSkge1xuICAgICAgICAgICAgJHR5cGUgPSBhcnIxWyRpICs9IDFdO1xuICAgICAgICAgICAgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIGVsc2UgaWYgKCcgKyAoJGRhdGFUeXBlKSArICcgPT0gXFwnbnVtYmVyXFwnIHx8ICcgKyAoJGRhdGFUeXBlKSArICcgPT0gXFwnYm9vbGVhblxcJykgJyArICgkY29lcmNlZCkgKyAnID0gXFwnXFwnICsgJyArICgkZGF0YSkgKyAnOyBlbHNlIGlmICgnICsgKCRkYXRhKSArICcgPT09IG51bGwpICcgKyAoJGNvZXJjZWQpICsgJyA9IFxcJ1xcJzsgJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHR5cGUgPT0gJ251bWJlcicgfHwgJHR5cGUgPT0gJ2ludGVnZXInKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIGVsc2UgaWYgKCcgKyAoJGRhdGFUeXBlKSArICcgPT0gXFwnYm9vbGVhblxcJyB8fCAnICsgKCRkYXRhKSArICcgPT09IG51bGwgfHwgKCcgKyAoJGRhdGFUeXBlKSArICcgPT0gXFwnc3RyaW5nXFwnICYmICcgKyAoJGRhdGEpICsgJyAmJiAnICsgKCRkYXRhKSArICcgPT0gKycgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgICAgICBpZiAoJHR5cGUgPT0gJ2ludGVnZXInKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgJiYgISgnICsgKCRkYXRhKSArICcgJSAxKSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3V0ICs9ICcpKSAnICsgKCRjb2VyY2VkKSArICcgPSArJyArICgkZGF0YSkgKyAnOyAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgkdHlwZSA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgZWxzZSBpZiAoJyArICgkZGF0YSkgKyAnID09PSBcXCdmYWxzZVxcJyB8fCAnICsgKCRkYXRhKSArICcgPT09IDAgfHwgJyArICgkZGF0YSkgKyAnID09PSBudWxsKSAnICsgKCRjb2VyY2VkKSArICcgPSBmYWxzZTsgZWxzZSBpZiAoJyArICgkZGF0YSkgKyAnID09PSBcXCd0cnVlXFwnIHx8ICcgKyAoJGRhdGEpICsgJyA9PT0gMSkgJyArICgkY29lcmNlZCkgKyAnID0gdHJ1ZTsgJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHR5cGUgPT0gJ251bGwnKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIGVsc2UgaWYgKCcgKyAoJGRhdGEpICsgJyA9PT0gXFwnXFwnIHx8ICcgKyAoJGRhdGEpICsgJyA9PT0gMCB8fCAnICsgKCRkYXRhKSArICcgPT09IGZhbHNlKSAnICsgKCRjb2VyY2VkKSArICcgPSBudWxsOyAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5vcHRzLmNvZXJjZVR5cGVzID09ICdhcnJheScgJiYgJHR5cGUgPT0gJ2FycmF5Jykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyBlbHNlIGlmICgnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ3N0cmluZ1xcJyB8fCAnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ251bWJlclxcJyB8fCAnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ2Jvb2xlYW5cXCcgfHwgJyArICgkZGF0YSkgKyAnID09IG51bGwpICcgKyAoJGNvZXJjZWQpICsgJyA9IFsnICsgKCRkYXRhKSArICddOyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyBlbHNlIHsgICAnO1xuICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAndHlwZScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgdHlwZTogXFwnJztcbiAgICAgICAgICBpZiAoJHR5cGVJc0FycmF5KSB7XG4gICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEuam9pbihcIixcIikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJ1xcJyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBiZSAnO1xuICAgICAgICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEuam9pbihcIixcIikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX2VyciA9IG91dDtcbiAgICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgfSBpZiAoJyArICgkY29lcmNlZCkgKyAnICE9PSB1bmRlZmluZWQpIHsgICc7XG4gICAgICAgIHZhciAkcGFyZW50RGF0YSA9ICRkYXRhTHZsID8gJ2RhdGEnICsgKCgkZGF0YUx2bCAtIDEpIHx8ICcnKSA6ICdwYXJlbnREYXRhJyxcbiAgICAgICAgICAkcGFyZW50RGF0YVByb3BlcnR5ID0gJGRhdGFMdmwgPyBpdC5kYXRhUGF0aEFyclskZGF0YUx2bF0gOiAncGFyZW50RGF0YVByb3BlcnR5JztcbiAgICAgICAgb3V0ICs9ICcgJyArICgkZGF0YSkgKyAnID0gJyArICgkY29lcmNlZCkgKyAnOyAnO1xuICAgICAgICBpZiAoISRkYXRhTHZsKSB7XG4gICAgICAgICAgb3V0ICs9ICdpZiAoJyArICgkcGFyZW50RGF0YSkgKyAnICE9PSB1bmRlZmluZWQpJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyAnICsgKCRwYXJlbnREYXRhKSArICdbJyArICgkcGFyZW50RGF0YVByb3BlcnR5KSArICddID0gJyArICgkY29lcmNlZCkgKyAnOyB9ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAndHlwZScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgdHlwZTogXFwnJztcbiAgICAgICAgICBpZiAoJHR5cGVJc0FycmF5KSB7XG4gICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEuam9pbihcIixcIikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJ1xcJyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBiZSAnO1xuICAgICAgICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEuam9pbihcIixcIikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX2VyciA9IG91dDtcbiAgICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9XG4gIH1cbiAgaWYgKGl0LnNjaGVtYS4kcmVmICYmICEkcmVmS2V5d29yZHMpIHtcbiAgICBvdXQgKz0gJyAnICsgKGl0LlJVTEVTLmFsbC4kcmVmLmNvZGUoaXQsICckcmVmJykpICsgJyAnO1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyB9IGlmIChlcnJvcnMgPT09ICc7XG4gICAgICBpZiAoJHRvcCkge1xuICAgICAgICBvdXQgKz0gJzAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICdlcnJzXycgKyAoJGx2bCk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJykgeyAnO1xuICAgICAgJGNsb3NpbmdCcmFjZXMyICs9ICd9JztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGFycjIgPSBpdC5SVUxFUztcbiAgICBpZiAoYXJyMikge1xuICAgICAgdmFyICRydWxlc0dyb3VwLCBpMiA9IC0xLFxuICAgICAgICBsMiA9IGFycjIubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlIChpMiA8IGwyKSB7XG4gICAgICAgICRydWxlc0dyb3VwID0gYXJyMltpMiArPSAxXTtcbiAgICAgICAgaWYgKCRzaG91bGRVc2VHcm91cCgkcnVsZXNHcm91cCkpIHtcbiAgICAgICAgICBpZiAoJHJ1bGVzR3JvdXAudHlwZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoaXQudXRpbC5jaGVja0RhdGFUeXBlKCRydWxlc0dyb3VwLnR5cGUsICRkYXRhLCBpdC5vcHRzLnN0cmljdE51bWJlcnMpKSArICcpIHsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudXNlRGVmYXVsdHMpIHtcbiAgICAgICAgICAgIGlmICgkcnVsZXNHcm91cC50eXBlID09ICdvYmplY3QnICYmIGl0LnNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hLnByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgJHNjaGVtYUtleXMgPSBPYmplY3Qua2V5cygkc2NoZW1hKTtcbiAgICAgICAgICAgICAgdmFyIGFycjMgPSAkc2NoZW1hS2V5cztcbiAgICAgICAgICAgICAgaWYgKGFycjMpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHByb3BlcnR5S2V5LCBpMyA9IC0xLFxuICAgICAgICAgICAgICAgICAgbDMgPSBhcnIzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkzIDwgbDMpIHtcbiAgICAgICAgICAgICAgICAgICRwcm9wZXJ0eUtleSA9IGFycjNbaTMgKz0gMV07XG4gICAgICAgICAgICAgICAgICB2YXIgJHNjaCA9ICRzY2hlbWFbJHByb3BlcnR5S2V5XTtcbiAgICAgICAgICAgICAgICAgIGlmICgkc2NoLmRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyBpdC51dGlsLmdldFByb3BlcnR5KCRwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC5jb21wb3NpdGVSdWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkZGVmYXVsdE1zZyA9ICdkZWZhdWx0IGlzIGlnbm9yZWQgZm9yOiAnICsgJHBhc3NEYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMgPT09ICdsb2cnKSBpdC5sb2dnZXIud2FybigkZGVmYXVsdE1zZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRocm93IG5ldyBFcnJvcigkZGVmYXVsdE1zZyk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCRwYXNzRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy51c2VEZWZhdWx0cyA9PSAnZW1wdHknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAnICsgKCRwYXNzRGF0YSkgKyAnID09PSBudWxsIHx8ICcgKyAoJHBhc3NEYXRhKSArICcgPT09IFxcJ1xcJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyApICcgKyAoJHBhc3NEYXRhKSArICcgPSAnO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnVzZURlZmF1bHRzID09ICdzaGFyZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnVzZURlZmF1bHQoJHNjaC5kZWZhdWx0KSkgKyAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnICcgKyAoSlNPTi5zdHJpbmdpZnkoJHNjaC5kZWZhdWx0KSkgKyAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnOyAnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCRydWxlc0dyb3VwLnR5cGUgPT0gJ2FycmF5JyAmJiBBcnJheS5pc0FycmF5KGl0LnNjaGVtYS5pdGVtcykpIHtcbiAgICAgICAgICAgICAgdmFyIGFycjQgPSBpdC5zY2hlbWEuaXRlbXM7XG4gICAgICAgICAgICAgIGlmIChhcnI0KSB7XG4gICAgICAgICAgICAgICAgdmFyICRzY2gsICRpID0gLTEsXG4gICAgICAgICAgICAgICAgICBsNCA9IGFycjQubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoJGkgPCBsNCkge1xuICAgICAgICAgICAgICAgICAgJHNjaCA9IGFycjRbJGkgKz0gMV07XG4gICAgICAgICAgICAgICAgICBpZiAoJHNjaC5kZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGkgKyAnXSc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC5jb21wb3NpdGVSdWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkZGVmYXVsdE1zZyA9ICdkZWZhdWx0IGlzIGlnbm9yZWQgZm9yOiAnICsgJHBhc3NEYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMgPT09ICdsb2cnKSBpdC5sb2dnZXIud2FybigkZGVmYXVsdE1zZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRocm93IG5ldyBFcnJvcigkZGVmYXVsdE1zZyk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCRwYXNzRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy51c2VEZWZhdWx0cyA9PSAnZW1wdHknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAnICsgKCRwYXNzRGF0YSkgKyAnID09PSBudWxsIHx8ICcgKyAoJHBhc3NEYXRhKSArICcgPT09IFxcJ1xcJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyApICcgKyAoJHBhc3NEYXRhKSArICcgPSAnO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnVzZURlZmF1bHRzID09ICdzaGFyZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnVzZURlZmF1bHQoJHNjaC5kZWZhdWx0KSkgKyAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnICcgKyAoSlNPTi5zdHJpbmdpZnkoJHNjaC5kZWZhdWx0KSkgKyAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnOyAnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBhcnI1ID0gJHJ1bGVzR3JvdXAucnVsZXM7XG4gICAgICAgICAgaWYgKGFycjUpIHtcbiAgICAgICAgICAgIHZhciAkcnVsZSwgaTUgPSAtMSxcbiAgICAgICAgICAgICAgbDUgPSBhcnI1Lmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoaTUgPCBsNSkge1xuICAgICAgICAgICAgICAkcnVsZSA9IGFycjVbaTUgKz0gMV07XG4gICAgICAgICAgICAgIGlmICgkc2hvdWxkVXNlUnVsZSgkcnVsZSkpIHtcbiAgICAgICAgICAgICAgICB2YXIgJGNvZGUgPSAkcnVsZS5jb2RlKGl0LCAkcnVsZS5rZXl3b3JkLCAkcnVsZXNHcm91cC50eXBlKTtcbiAgICAgICAgICAgICAgICBpZiAoJGNvZGUpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnICcgKyAoJGNvZGUpICsgJyAnO1xuICAgICAgICAgICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgJGNsb3NpbmdCcmFjZXMxICs9ICd9JztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoJGNsb3NpbmdCcmFjZXMxKSArICcgJztcbiAgICAgICAgICAgICRjbG9zaW5nQnJhY2VzMSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJHJ1bGVzR3JvdXAudHlwZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgICAgaWYgKCR0eXBlU2NoZW1hICYmICR0eXBlU2NoZW1hID09PSAkcnVsZXNHcm91cC50eXBlICYmICEkY29lcmNlVG9UeXBlcykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICAgICAgICAgICAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcudHlwZScsXG4gICAgICAgICAgICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy90eXBlJztcbiAgICAgICAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ3R5cGUnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHR5cGU6IFxcJyc7XG4gICAgICAgICAgICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICdcXCcgfSAnO1xuICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgJztcbiAgICAgICAgICAgICAgICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIG91dCArPSAnIGlmIChlcnJvcnMgPT09ICc7XG4gICAgICAgICAgICBpZiAoJHRvcCkge1xuICAgICAgICAgICAgICBvdXQgKz0gJzAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICdlcnJzXycgKyAoJGx2bCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJykgeyAnO1xuICAgICAgICAgICAgJGNsb3NpbmdCcmFjZXMyICs9ICd9JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzMikgKyAnICc7XG4gIH1cbiAgaWYgKCR0b3ApIHtcbiAgICBpZiAoJGFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyBpZiAoZXJyb3JzID09PSAwKSByZXR1cm4gZGF0YTsgICAgICAgICAgICc7XG4gICAgICBvdXQgKz0gJyBlbHNlIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IodkVycm9ycyk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IHZFcnJvcnM7ICc7XG4gICAgICBvdXQgKz0gJyByZXR1cm4gZXJyb3JzID09PSAwOyAgICAgICAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9OyByZXR1cm4gdmFsaWRhdGU7JztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkdmFsaWQpICsgJyA9IGVycm9ycyA9PT0gZXJyc18nICsgKCRsdmwpICsgJzsnO1xuICB9XG5cbiAgZnVuY3Rpb24gJHNob3VsZFVzZUdyb3VwKCRydWxlc0dyb3VwKSB7XG4gICAgdmFyIHJ1bGVzID0gJHJ1bGVzR3JvdXAucnVsZXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKylcbiAgICAgIGlmICgkc2hvdWxkVXNlUnVsZShydWxlc1tpXSkpIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gJHNob3VsZFVzZVJ1bGUoJHJ1bGUpIHtcbiAgICByZXR1cm4gaXQuc2NoZW1hWyRydWxlLmtleXdvcmRdICE9PSB1bmRlZmluZWQgfHwgKCRydWxlLmltcGxlbWVudHMgJiYgJHJ1bGVJbXBsZW1lbnRzU29tZUtleXdvcmQoJHJ1bGUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uICRydWxlSW1wbGVtZW50c1NvbWVLZXl3b3JkKCRydWxlKSB7XG4gICAgdmFyIGltcGwgPSAkcnVsZS5pbXBsZW1lbnRzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW1wbC5sZW5ndGg7IGkrKylcbiAgICAgIGlmIChpdC5zY2hlbWFbaW1wbFtpXV0gIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHJlc29sdmUgPSByZXF1aXJlKCcuL3Jlc29sdmUnKVxuICAsIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKVxuICAsIGVycm9yQ2xhc3NlcyA9IHJlcXVpcmUoJy4vZXJyb3JfY2xhc3NlcycpXG4gICwgc3RhYmxlU3RyaW5naWZ5ID0gcmVxdWlyZSgnZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnknKTtcblxudmFyIHZhbGlkYXRlR2VuZXJhdG9yID0gcmVxdWlyZSgnLi4vZG90anMvdmFsaWRhdGUnKTtcblxuLyoqXG4gKiBGdW5jdGlvbnMgYmVsb3cgYXJlIHVzZWQgaW5zaWRlIGNvbXBpbGVkIHZhbGlkYXRpb25zIGZ1bmN0aW9uXG4gKi9cblxudmFyIHVjczJsZW5ndGggPSB1dGlsLnVjczJsZW5ndGg7XG52YXIgZXF1YWwgPSByZXF1aXJlKCdmYXN0LWRlZXAtZXF1YWwnKTtcblxuLy8gdGhpcyBlcnJvciBpcyB0aHJvd24gYnkgYXN5bmMgc2NoZW1hcyB0byByZXR1cm4gdmFsaWRhdGlvbiBlcnJvcnMgdmlhIGV4Y2VwdGlvblxudmFyIFZhbGlkYXRpb25FcnJvciA9IGVycm9yQ2xhc3Nlcy5WYWxpZGF0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBpbGU7XG5cblxuLyoqXG4gKiBDb21waWxlcyBzY2hlbWEgdG8gdmFsaWRhdGlvbiBmdW5jdGlvblxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge09iamVjdH0gc2NoZW1hIHNjaGVtYSBvYmplY3RcbiAqIEBwYXJhbSAge09iamVjdH0gcm9vdCBvYmplY3Qgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcm9vdCBzY2hlbWEgZm9yIHRoaXMgc2NoZW1hXG4gKiBAcGFyYW0gIHtPYmplY3R9IGxvY2FsUmVmcyB0aGUgaGFzaCBvZiBsb2NhbCByZWZlcmVuY2VzIGluc2lkZSB0aGUgc2NoZW1hIChjcmVhdGVkIGJ5IHJlc29sdmUuaWQpLCB1c2VkIGZvciBpbmxpbmUgcmVzb2x1dGlvblxuICogQHBhcmFtICB7U3RyaW5nfSBiYXNlSWQgYmFzZSBJRCBmb3IgSURzIGluIHRoZSBzY2hlbWFcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGUoc2NoZW1hLCByb290LCBsb2NhbFJlZnMsIGJhc2VJZCkge1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlLCBldmlsOiB0cnVlICovXG4gIC8qIGVzbGludCBuby1zaGFkb3c6IDAgKi9cbiAgdmFyIHNlbGYgPSB0aGlzXG4gICAgLCBvcHRzID0gdGhpcy5fb3B0c1xuICAgICwgcmVmVmFsID0gWyB1bmRlZmluZWQgXVxuICAgICwgcmVmcyA9IHt9XG4gICAgLCBwYXR0ZXJucyA9IFtdXG4gICAgLCBwYXR0ZXJuc0hhc2ggPSB7fVxuICAgICwgZGVmYXVsdHMgPSBbXVxuICAgICwgZGVmYXVsdHNIYXNoID0ge31cbiAgICAsIGN1c3RvbVJ1bGVzID0gW107XG5cbiAgcm9vdCA9IHJvb3QgfHwgeyBzY2hlbWE6IHNjaGVtYSwgcmVmVmFsOiByZWZWYWwsIHJlZnM6IHJlZnMgfTtcblxuICB2YXIgYyA9IGNoZWNrQ29tcGlsaW5nLmNhbGwodGhpcywgc2NoZW1hLCByb290LCBiYXNlSWQpO1xuICB2YXIgY29tcGlsYXRpb24gPSB0aGlzLl9jb21waWxhdGlvbnNbYy5pbmRleF07XG4gIGlmIChjLmNvbXBpbGluZykgcmV0dXJuIChjb21waWxhdGlvbi5jYWxsVmFsaWRhdGUgPSBjYWxsVmFsaWRhdGUpO1xuXG4gIHZhciBmb3JtYXRzID0gdGhpcy5fZm9ybWF0cztcbiAgdmFyIFJVTEVTID0gdGhpcy5SVUxFUztcblxuICB0cnkge1xuICAgIHZhciB2ID0gbG9jYWxDb21waWxlKHNjaGVtYSwgcm9vdCwgbG9jYWxSZWZzLCBiYXNlSWQpO1xuICAgIGNvbXBpbGF0aW9uLnZhbGlkYXRlID0gdjtcbiAgICB2YXIgY3YgPSBjb21waWxhdGlvbi5jYWxsVmFsaWRhdGU7XG4gICAgaWYgKGN2KSB7XG4gICAgICBjdi5zY2hlbWEgPSB2LnNjaGVtYTtcbiAgICAgIGN2LmVycm9ycyA9IG51bGw7XG4gICAgICBjdi5yZWZzID0gdi5yZWZzO1xuICAgICAgY3YucmVmVmFsID0gdi5yZWZWYWw7XG4gICAgICBjdi5yb290ID0gdi5yb290O1xuICAgICAgY3YuJGFzeW5jID0gdi4kYXN5bmM7XG4gICAgICBpZiAob3B0cy5zb3VyY2VDb2RlKSBjdi5zb3VyY2UgPSB2LnNvdXJjZTtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH0gZmluYWxseSB7XG4gICAgZW5kQ29tcGlsaW5nLmNhbGwodGhpcywgc2NoZW1hLCByb290LCBiYXNlSWQpO1xuICB9XG5cbiAgLyogQHRoaXMgICB7Kn0gLSBjdXN0b20gY29udGV4dCwgc2VlIHBhc3NDb250ZXh0IG9wdGlvbiAqL1xuICBmdW5jdGlvbiBjYWxsVmFsaWRhdGUoKSB7XG4gICAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICAgIHZhciB2YWxpZGF0ZSA9IGNvbXBpbGF0aW9uLnZhbGlkYXRlO1xuICAgIHZhciByZXN1bHQgPSB2YWxpZGF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGNhbGxWYWxpZGF0ZS5lcnJvcnMgPSB2YWxpZGF0ZS5lcnJvcnM7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvY2FsQ29tcGlsZShfc2NoZW1hLCBfcm9vdCwgbG9jYWxSZWZzLCBiYXNlSWQpIHtcbiAgICB2YXIgaXNSb290ID0gIV9yb290IHx8IChfcm9vdCAmJiBfcm9vdC5zY2hlbWEgPT0gX3NjaGVtYSk7XG4gICAgaWYgKF9yb290LnNjaGVtYSAhPSByb290LnNjaGVtYSlcbiAgICAgIHJldHVybiBjb21waWxlLmNhbGwoc2VsZiwgX3NjaGVtYSwgX3Jvb3QsIGxvY2FsUmVmcywgYmFzZUlkKTtcblxuICAgIHZhciAkYXN5bmMgPSBfc2NoZW1hLiRhc3luYyA9PT0gdHJ1ZTtcblxuICAgIHZhciBzb3VyY2VDb2RlID0gdmFsaWRhdGVHZW5lcmF0b3Ioe1xuICAgICAgaXNUb3A6IHRydWUsXG4gICAgICBzY2hlbWE6IF9zY2hlbWEsXG4gICAgICBpc1Jvb3Q6IGlzUm9vdCxcbiAgICAgIGJhc2VJZDogYmFzZUlkLFxuICAgICAgcm9vdDogX3Jvb3QsXG4gICAgICBzY2hlbWFQYXRoOiAnJyxcbiAgICAgIGVyclNjaGVtYVBhdGg6ICcjJyxcbiAgICAgIGVycm9yUGF0aDogJ1wiXCInLFxuICAgICAgTWlzc2luZ1JlZkVycm9yOiBlcnJvckNsYXNzZXMuTWlzc2luZ1JlZixcbiAgICAgIFJVTEVTOiBSVUxFUyxcbiAgICAgIHZhbGlkYXRlOiB2YWxpZGF0ZUdlbmVyYXRvcixcbiAgICAgIHV0aWw6IHV0aWwsXG4gICAgICByZXNvbHZlOiByZXNvbHZlLFxuICAgICAgcmVzb2x2ZVJlZjogcmVzb2x2ZVJlZixcbiAgICAgIHVzZVBhdHRlcm46IHVzZVBhdHRlcm4sXG4gICAgICB1c2VEZWZhdWx0OiB1c2VEZWZhdWx0LFxuICAgICAgdXNlQ3VzdG9tUnVsZTogdXNlQ3VzdG9tUnVsZSxcbiAgICAgIG9wdHM6IG9wdHMsXG4gICAgICBmb3JtYXRzOiBmb3JtYXRzLFxuICAgICAgbG9nZ2VyOiBzZWxmLmxvZ2dlcixcbiAgICAgIHNlbGY6IHNlbGZcbiAgICB9KTtcblxuICAgIHNvdXJjZUNvZGUgPSB2YXJzKHJlZlZhbCwgcmVmVmFsQ29kZSkgKyB2YXJzKHBhdHRlcm5zLCBwYXR0ZXJuQ29kZSlcbiAgICAgICAgICAgICAgICAgICArIHZhcnMoZGVmYXVsdHMsIGRlZmF1bHRDb2RlKSArIHZhcnMoY3VzdG9tUnVsZXMsIGN1c3RvbVJ1bGVDb2RlKVxuICAgICAgICAgICAgICAgICAgICsgc291cmNlQ29kZTtcblxuICAgIGlmIChvcHRzLnByb2Nlc3NDb2RlKSBzb3VyY2VDb2RlID0gb3B0cy5wcm9jZXNzQ29kZShzb3VyY2VDb2RlLCBfc2NoZW1hKTtcbiAgICAvLyBjb25zb2xlLmxvZygnXFxuXFxuXFxuICoqKiBcXG4nLCBKU09OLnN0cmluZ2lmeShzb3VyY2VDb2RlKSk7XG4gICAgdmFyIHZhbGlkYXRlO1xuICAgIHRyeSB7XG4gICAgICB2YXIgbWFrZVZhbGlkYXRlID0gbmV3IEZ1bmN0aW9uKFxuICAgICAgICAnc2VsZicsXG4gICAgICAgICdSVUxFUycsXG4gICAgICAgICdmb3JtYXRzJyxcbiAgICAgICAgJ3Jvb3QnLFxuICAgICAgICAncmVmVmFsJyxcbiAgICAgICAgJ2RlZmF1bHRzJyxcbiAgICAgICAgJ2N1c3RvbVJ1bGVzJyxcbiAgICAgICAgJ2VxdWFsJyxcbiAgICAgICAgJ3VjczJsZW5ndGgnLFxuICAgICAgICAnVmFsaWRhdGlvbkVycm9yJyxcbiAgICAgICAgc291cmNlQ29kZVxuICAgICAgKTtcblxuICAgICAgdmFsaWRhdGUgPSBtYWtlVmFsaWRhdGUoXG4gICAgICAgIHNlbGYsXG4gICAgICAgIFJVTEVTLFxuICAgICAgICBmb3JtYXRzLFxuICAgICAgICByb290LFxuICAgICAgICByZWZWYWwsXG4gICAgICAgIGRlZmF1bHRzLFxuICAgICAgICBjdXN0b21SdWxlcyxcbiAgICAgICAgZXF1YWwsXG4gICAgICAgIHVjczJsZW5ndGgsXG4gICAgICAgIFZhbGlkYXRpb25FcnJvclxuICAgICAgKTtcblxuICAgICAgcmVmVmFsWzBdID0gdmFsaWRhdGU7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICBzZWxmLmxvZ2dlci5lcnJvcignRXJyb3IgY29tcGlsaW5nIHNjaGVtYSwgZnVuY3Rpb24gY29kZTonLCBzb3VyY2VDb2RlKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUuc2NoZW1hID0gX3NjaGVtYTtcbiAgICB2YWxpZGF0ZS5lcnJvcnMgPSBudWxsO1xuICAgIHZhbGlkYXRlLnJlZnMgPSByZWZzO1xuICAgIHZhbGlkYXRlLnJlZlZhbCA9IHJlZlZhbDtcbiAgICB2YWxpZGF0ZS5yb290ID0gaXNSb290ID8gdmFsaWRhdGUgOiBfcm9vdDtcbiAgICBpZiAoJGFzeW5jKSB2YWxpZGF0ZS4kYXN5bmMgPSB0cnVlO1xuICAgIGlmIChvcHRzLnNvdXJjZUNvZGUgPT09IHRydWUpIHtcbiAgICAgIHZhbGlkYXRlLnNvdXJjZSA9IHtcbiAgICAgICAgY29kZTogc291cmNlQ29kZSxcbiAgICAgICAgcGF0dGVybnM6IHBhdHRlcm5zLFxuICAgICAgICBkZWZhdWx0czogZGVmYXVsdHNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzb2x2ZVJlZihiYXNlSWQsIHJlZiwgaXNSb290KSB7XG4gICAgcmVmID0gcmVzb2x2ZS51cmwoYmFzZUlkLCByZWYpO1xuICAgIHZhciByZWZJbmRleCA9IHJlZnNbcmVmXTtcbiAgICB2YXIgX3JlZlZhbCwgcmVmQ29kZTtcbiAgICBpZiAocmVmSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgX3JlZlZhbCA9IHJlZlZhbFtyZWZJbmRleF07XG4gICAgICByZWZDb2RlID0gJ3JlZlZhbFsnICsgcmVmSW5kZXggKyAnXSc7XG4gICAgICByZXR1cm4gcmVzb2x2ZWRSZWYoX3JlZlZhbCwgcmVmQ29kZSk7XG4gICAgfVxuICAgIGlmICghaXNSb290ICYmIHJvb3QucmVmcykge1xuICAgICAgdmFyIHJvb3RSZWZJZCA9IHJvb3QucmVmc1tyZWZdO1xuICAgICAgaWYgKHJvb3RSZWZJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIF9yZWZWYWwgPSByb290LnJlZlZhbFtyb290UmVmSWRdO1xuICAgICAgICByZWZDb2RlID0gYWRkTG9jYWxSZWYocmVmLCBfcmVmVmFsKTtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVkUmVmKF9yZWZWYWwsIHJlZkNvZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlZkNvZGUgPSBhZGRMb2NhbFJlZihyZWYpO1xuICAgIHZhciB2ID0gcmVzb2x2ZS5jYWxsKHNlbGYsIGxvY2FsQ29tcGlsZSwgcm9vdCwgcmVmKTtcbiAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgbG9jYWxTY2hlbWEgPSBsb2NhbFJlZnMgJiYgbG9jYWxSZWZzW3JlZl07XG4gICAgICBpZiAobG9jYWxTY2hlbWEpIHtcbiAgICAgICAgdiA9IHJlc29sdmUuaW5saW5lUmVmKGxvY2FsU2NoZW1hLCBvcHRzLmlubGluZVJlZnMpXG4gICAgICAgICAgICA/IGxvY2FsU2NoZW1hXG4gICAgICAgICAgICA6IGNvbXBpbGUuY2FsbChzZWxmLCBsb2NhbFNjaGVtYSwgcm9vdCwgbG9jYWxSZWZzLCBiYXNlSWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlbW92ZUxvY2FsUmVmKHJlZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcGxhY2VMb2NhbFJlZihyZWYsIHYpO1xuICAgICAgcmV0dXJuIHJlc29sdmVkUmVmKHYsIHJlZkNvZGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZExvY2FsUmVmKHJlZiwgdikge1xuICAgIHZhciByZWZJZCA9IHJlZlZhbC5sZW5ndGg7XG4gICAgcmVmVmFsW3JlZklkXSA9IHY7XG4gICAgcmVmc1tyZWZdID0gcmVmSWQ7XG4gICAgcmV0dXJuICdyZWZWYWwnICsgcmVmSWQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVMb2NhbFJlZihyZWYpIHtcbiAgICBkZWxldGUgcmVmc1tyZWZdO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZUxvY2FsUmVmKHJlZiwgdikge1xuICAgIHZhciByZWZJZCA9IHJlZnNbcmVmXTtcbiAgICByZWZWYWxbcmVmSWRdID0gdjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc29sdmVkUmVmKHJlZlZhbCwgY29kZSkge1xuICAgIHJldHVybiB0eXBlb2YgcmVmVmFsID09ICdvYmplY3QnIHx8IHR5cGVvZiByZWZWYWwgPT0gJ2Jvb2xlYW4nXG4gICAgICAgICAgICA/IHsgY29kZTogY29kZSwgc2NoZW1hOiByZWZWYWwsIGlubGluZTogdHJ1ZSB9XG4gICAgICAgICAgICA6IHsgY29kZTogY29kZSwgJGFzeW5jOiByZWZWYWwgJiYgISFyZWZWYWwuJGFzeW5jIH07XG4gIH1cblxuICBmdW5jdGlvbiB1c2VQYXR0ZXJuKHJlZ2V4U3RyKSB7XG4gICAgdmFyIGluZGV4ID0gcGF0dGVybnNIYXNoW3JlZ2V4U3RyXTtcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgaW5kZXggPSBwYXR0ZXJuc0hhc2hbcmVnZXhTdHJdID0gcGF0dGVybnMubGVuZ3RoO1xuICAgICAgcGF0dGVybnNbaW5kZXhdID0gcmVnZXhTdHI7XG4gICAgfVxuICAgIHJldHVybiAncGF0dGVybicgKyBpbmRleDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVzZURlZmF1bHQodmFsdWUpIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICByZXR1cm4gJycgKyB2YWx1ZTtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiB1dGlsLnRvUXVvdGVkU3RyaW5nKHZhbHVlKTtcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICdudWxsJztcbiAgICAgICAgdmFyIHZhbHVlU3RyID0gc3RhYmxlU3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgdmFyIGluZGV4ID0gZGVmYXVsdHNIYXNoW3ZhbHVlU3RyXTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbmRleCA9IGRlZmF1bHRzSGFzaFt2YWx1ZVN0cl0gPSBkZWZhdWx0cy5sZW5ndGg7XG4gICAgICAgICAgZGVmYXVsdHNbaW5kZXhdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdkZWZhdWx0JyArIGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVzZUN1c3RvbVJ1bGUocnVsZSwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGl0KSB7XG4gICAgaWYgKHNlbGYuX29wdHMudmFsaWRhdGVTY2hlbWEgIT09IGZhbHNlKSB7XG4gICAgICB2YXIgZGVwcyA9IHJ1bGUuZGVmaW5pdGlvbi5kZXBlbmRlbmNpZXM7XG4gICAgICBpZiAoZGVwcyAmJiAhZGVwcy5ldmVyeShmdW5jdGlvbihrZXl3b3JkKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyZW50U2NoZW1hLCBrZXl3b3JkKTtcbiAgICAgIH0pKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3BhcmVudCBzY2hlbWEgbXVzdCBoYXZlIGFsbCByZXF1aXJlZCBrZXl3b3JkczogJyArIGRlcHMuam9pbignLCcpKTtcblxuICAgICAgdmFyIHZhbGlkYXRlU2NoZW1hID0gcnVsZS5kZWZpbml0aW9uLnZhbGlkYXRlU2NoZW1hO1xuICAgICAgaWYgKHZhbGlkYXRlU2NoZW1hKSB7XG4gICAgICAgIHZhciB2YWxpZCA9IHZhbGlkYXRlU2NoZW1hKHNjaGVtYSk7XG4gICAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgICB2YXIgbWVzc2FnZSA9ICdrZXl3b3JkIHNjaGVtYSBpcyBpbnZhbGlkOiAnICsgc2VsZi5lcnJvcnNUZXh0KHZhbGlkYXRlU2NoZW1hLmVycm9ycyk7XG4gICAgICAgICAgaWYgKHNlbGYuX29wdHMudmFsaWRhdGVTY2hlbWEgPT0gJ2xvZycpIHNlbGYubG9nZ2VyLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNvbXBpbGUgPSBydWxlLmRlZmluaXRpb24uY29tcGlsZVxuICAgICAgLCBpbmxpbmUgPSBydWxlLmRlZmluaXRpb24uaW5saW5lXG4gICAgICAsIG1hY3JvID0gcnVsZS5kZWZpbml0aW9uLm1hY3JvO1xuXG4gICAgdmFyIHZhbGlkYXRlO1xuICAgIGlmIChjb21waWxlKSB7XG4gICAgICB2YWxpZGF0ZSA9IGNvbXBpbGUuY2FsbChzZWxmLCBzY2hlbWEsIHBhcmVudFNjaGVtYSwgaXQpO1xuICAgIH0gZWxzZSBpZiAobWFjcm8pIHtcbiAgICAgIHZhbGlkYXRlID0gbWFjcm8uY2FsbChzZWxmLCBzY2hlbWEsIHBhcmVudFNjaGVtYSwgaXQpO1xuICAgICAgaWYgKG9wdHMudmFsaWRhdGVTY2hlbWEgIT09IGZhbHNlKSBzZWxmLnZhbGlkYXRlU2NoZW1hKHZhbGlkYXRlLCB0cnVlKTtcbiAgICB9IGVsc2UgaWYgKGlubGluZSkge1xuICAgICAgdmFsaWRhdGUgPSBpbmxpbmUuY2FsbChzZWxmLCBpdCwgcnVsZS5rZXl3b3JkLCBzY2hlbWEsIHBhcmVudFNjaGVtYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbGlkYXRlID0gcnVsZS5kZWZpbml0aW9uLnZhbGlkYXRlO1xuICAgICAgaWYgKCF2YWxpZGF0ZSkgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjdXN0b20ga2V5d29yZCBcIicgKyBydWxlLmtleXdvcmQgKyAnXCJmYWlsZWQgdG8gY29tcGlsZScpO1xuXG4gICAgdmFyIGluZGV4ID0gY3VzdG9tUnVsZXMubGVuZ3RoO1xuICAgIGN1c3RvbVJ1bGVzW2luZGV4XSA9IHZhbGlkYXRlO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6ICdjdXN0b21SdWxlJyArIGluZGV4LFxuICAgICAgdmFsaWRhdGU6IHZhbGlkYXRlXG4gICAgfTtcbiAgfVxufVxuXG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBzY2hlbWEgaXMgY3VycmVudGx5IGNvbXBpbGVkXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7T2JqZWN0fSBzY2hlbWEgc2NoZW1hIHRvIGNvbXBpbGVcbiAqIEBwYXJhbSAge09iamVjdH0gcm9vdCByb290IG9iamVjdFxuICogQHBhcmFtICB7U3RyaW5nfSBiYXNlSWQgYmFzZSBzY2hlbWEgSURcbiAqIEByZXR1cm4ge09iamVjdH0gb2JqZWN0IHdpdGggcHJvcGVydGllcyBcImluZGV4XCIgKGNvbXBpbGF0aW9uIGluZGV4KSBhbmQgXCJjb21waWxpbmdcIiAoYm9vbGVhbilcbiAqL1xuZnVuY3Rpb24gY2hlY2tDb21waWxpbmcoc2NoZW1hLCByb290LCBiYXNlSWQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgaW5kZXggPSBjb21wSW5kZXguY2FsbCh0aGlzLCBzY2hlbWEsIHJvb3QsIGJhc2VJZCk7XG4gIGlmIChpbmRleCA+PSAwKSByZXR1cm4geyBpbmRleDogaW5kZXgsIGNvbXBpbGluZzogdHJ1ZSB9O1xuICBpbmRleCA9IHRoaXMuX2NvbXBpbGF0aW9ucy5sZW5ndGg7XG4gIHRoaXMuX2NvbXBpbGF0aW9uc1tpbmRleF0gPSB7XG4gICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgcm9vdDogcm9vdCxcbiAgICBiYXNlSWQ6IGJhc2VJZFxuICB9O1xuICByZXR1cm4geyBpbmRleDogaW5kZXgsIGNvbXBpbGluZzogZmFsc2UgfTtcbn1cblxuXG4vKipcbiAqIFJlbW92ZXMgdGhlIHNjaGVtYSBmcm9tIHRoZSBjdXJyZW50bHkgY29tcGlsZWQgbGlzdFxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge09iamVjdH0gc2NoZW1hIHNjaGVtYSB0byBjb21waWxlXG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgcm9vdCBvYmplY3RcbiAqIEBwYXJhbSAge1N0cmluZ30gYmFzZUlkIGJhc2Ugc2NoZW1hIElEXG4gKi9cbmZ1bmN0aW9uIGVuZENvbXBpbGluZyhzY2hlbWEsIHJvb3QsIGJhc2VJZCkge1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gIHZhciBpID0gY29tcEluZGV4LmNhbGwodGhpcywgc2NoZW1hLCByb290LCBiYXNlSWQpO1xuICBpZiAoaSA+PSAwKSB0aGlzLl9jb21waWxhdGlvbnMuc3BsaWNlKGksIDEpO1xufVxuXG5cbi8qKlxuICogSW5kZXggb2Ygc2NoZW1hIGNvbXBpbGF0aW9uIGluIHRoZSBjdXJyZW50bHkgY29tcGlsZWQgbGlzdFxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge09iamVjdH0gc2NoZW1hIHNjaGVtYSB0byBjb21waWxlXG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgcm9vdCBvYmplY3RcbiAqIEBwYXJhbSAge1N0cmluZ30gYmFzZUlkIGJhc2Ugc2NoZW1hIElEXG4gKiBAcmV0dXJuIHtJbnRlZ2VyfSBjb21waWxhdGlvbiBpbmRleFxuICovXG5mdW5jdGlvbiBjb21wSW5kZXgoc2NoZW1hLCByb290LCBiYXNlSWQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICBmb3IgKHZhciBpPTA7IGk8dGhpcy5fY29tcGlsYXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGMgPSB0aGlzLl9jb21waWxhdGlvbnNbaV07XG4gICAgaWYgKGMuc2NoZW1hID09IHNjaGVtYSAmJiBjLnJvb3QgPT0gcm9vdCAmJiBjLmJhc2VJZCA9PSBiYXNlSWQpIHJldHVybiBpO1xuICB9XG4gIHJldHVybiAtMTtcbn1cblxuXG5mdW5jdGlvbiBwYXR0ZXJuQ29kZShpLCBwYXR0ZXJucykge1xuICByZXR1cm4gJ3ZhciBwYXR0ZXJuJyArIGkgKyAnID0gbmV3IFJlZ0V4cCgnICsgdXRpbC50b1F1b3RlZFN0cmluZyhwYXR0ZXJuc1tpXSkgKyAnKTsnO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmF1bHRDb2RlKGkpIHtcbiAgcmV0dXJuICd2YXIgZGVmYXVsdCcgKyBpICsgJyA9IGRlZmF1bHRzWycgKyBpICsgJ107Jztcbn1cblxuXG5mdW5jdGlvbiByZWZWYWxDb2RlKGksIHJlZlZhbCkge1xuICByZXR1cm4gcmVmVmFsW2ldID09PSB1bmRlZmluZWQgPyAnJyA6ICd2YXIgcmVmVmFsJyArIGkgKyAnID0gcmVmVmFsWycgKyBpICsgJ107Jztcbn1cblxuXG5mdW5jdGlvbiBjdXN0b21SdWxlQ29kZShpKSB7XG4gIHJldHVybiAndmFyIGN1c3RvbVJ1bGUnICsgaSArICcgPSBjdXN0b21SdWxlc1snICsgaSArICddOyc7XG59XG5cblxuZnVuY3Rpb24gdmFycyhhcnIsIHN0YXRlbWVudCkge1xuICBpZiAoIWFyci5sZW5ndGgpIHJldHVybiAnJztcbiAgdmFyIGNvZGUgPSAnJztcbiAgZm9yICh2YXIgaT0wOyBpPGFyci5sZW5ndGg7IGkrKylcbiAgICBjb2RlICs9IHN0YXRlbWVudChpLCBhcnIpO1xuICByZXR1cm4gY29kZTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuXG52YXIgQ2FjaGUgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIENhY2hlKCkge1xuICB0aGlzLl9jYWNoZSA9IHt9O1xufTtcblxuXG5DYWNoZS5wcm90b3R5cGUucHV0ID0gZnVuY3Rpb24gQ2FjaGVfcHV0KGtleSwgdmFsdWUpIHtcbiAgdGhpcy5fY2FjaGVba2V5XSA9IHZhbHVlO1xufTtcblxuXG5DYWNoZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gQ2FjaGVfZ2V0KGtleSkge1xuICByZXR1cm4gdGhpcy5fY2FjaGVba2V5XTtcbn07XG5cblxuQ2FjaGUucHJvdG90eXBlLmRlbCA9IGZ1bmN0aW9uIENhY2hlX2RlbChrZXkpIHtcbiAgZGVsZXRlIHRoaXMuX2NhY2hlW2tleV07XG59O1xuXG5cbkNhY2hlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIENhY2hlX2NsZWFyKCkge1xuICB0aGlzLl9jYWNoZSA9IHt9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxudmFyIERBVEUgPSAvXihcXGRcXGRcXGRcXGQpLShcXGRcXGQpLShcXGRcXGQpJC87XG52YXIgREFZUyA9IFswLDMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXTtcbnZhciBUSU1FID0gL14oXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKShcXC5cXGQrKT8oenxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPyk/JC9pO1xudmFyIEhPU1ROQU1FID0gL14oPz0uezEsMjUzfVxcLj8kKVthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pPyg/OlxcLlthLXowLTldKD86Wy0wLTlhLXpdezAsNjF9WzAtOWEtel0pPykqXFwuPyQvaTtcbnZhciBVUkkgPSAvXig/OlthLXpdW2EtejAtOStcXC0uXSo6KSg/OlxcLz9cXC8oPzooPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06XXwlWzAtOWEtZl17Mn0pKkApPyg/OlxcWyg/Oig/Oig/Oig/OlswLTlhLWZdezEsNH06KXs2fXw6Oig/OlswLTlhLWZdezEsNH06KXs1fXwoPzpbMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXs0fXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwxfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezN9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDJ9WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7Mn18KD86KD86WzAtOWEtZl17MSw0fTopezAsM31bMC05YS1mXXsxLDR9KT86OlswLTlhLWZdezEsNH06fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDR9WzAtOWEtZl17MSw0fSk/OjopKD86WzAtOWEtZl17MSw0fTpbMC05YS1mXXsxLDR9fCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl8KD86KD86WzAtOWEtZl17MSw0fTopezAsNX1bMC05YS1mXXsxLDR9KT86OlswLTlhLWZdezEsNH18KD86KD86WzAtOWEtZl17MSw0fTopezAsNn1bMC05YS1mXXsxLDR9KT86Oil8W1Z2XVswLTlhLWZdK1xcLlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpdKylcXF18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pfCg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PV18JVswLTlhLWZdezJ9KSopKD86OlxcZCopPyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqfFxcLyg/Oig/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKT98KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkrKD86XFwvKD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSopKD86XFw/KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkAvP118JVswLTlhLWZdezJ9KSopPyg/OiMoPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QC8/XXwlWzAtOWEtZl17Mn0pKik/JC9pO1xudmFyIFVSSVJFRiA9IC9eKD86W2Etel1bYS16MC05K1xcLS5dKjopPyg/OlxcLz9cXC8oPzooPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06XXwlWzAtOWEtZl17Mn0pKkApPyg/OlxcWyg/Oig/Oig/Oig/OlswLTlhLWZdezEsNH06KXs2fXw6Oig/OlswLTlhLWZdezEsNH06KXs1fXwoPzpbMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXs0fXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwxfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezN9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDJ9WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7Mn18KD86KD86WzAtOWEtZl17MSw0fTopezAsM31bMC05YS1mXXsxLDR9KT86OlswLTlhLWZdezEsNH06fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDR9WzAtOWEtZl17MSw0fSk/OjopKD86WzAtOWEtZl17MSw0fTpbMC05YS1mXXsxLDR9fCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl8KD86KD86WzAtOWEtZl17MSw0fTopezAsNX1bMC05YS1mXXsxLDR9KT86OlswLTlhLWZdezEsNH18KD86KD86WzAtOWEtZl17MSw0fTopezAsNn1bMC05YS1mXXsxLDR9KT86Oil8W1Z2XVswLTlhLWZdK1xcLlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpdKylcXF18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pfCg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9XXwlWzAtOWEtZl17Mn0pKikoPzo6XFxkKik/KD86XFwvKD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSopKnxcXC8oPzooPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSopP3woPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSopPyg/OlxcPyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkAvP118JVswLTlhLWZdezJ9KSopPyg/OiMoPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpALz9dfCVbMC05YS1mXXsyfSkqKT8kL2k7XG4vLyB1cmktdGVtcGxhdGU6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTcwXG52YXIgVVJJVEVNUExBVEUgPSAvXig/Oig/OlteXFx4MDAtXFx4MjBcIic8PiVcXFxcXmB7fH1dfCVbMC05YS1mXXsyfSl8XFx7WysjLi87PyY9LCFAfF0/KD86W2EtejAtOV9dfCVbMC05YS1mXXsyfSkrKD86OlsxLTldWzAtOV17MCwzfXxcXCopPyg/OiwoPzpbYS16MC05X118JVswLTlhLWZdezJ9KSsoPzo6WzEtOV1bMC05XXswLDN9fFxcKik/KSpcXH0pKiQvaTtcbi8vIEZvciB0aGUgc291cmNlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9kcGVyaW5pLzcyOTI5NFxuLy8gRm9yIHRlc3QgY2FzZXM6IGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9kZW1vL3VybC1yZWdleFxuLy8gQHRvZG8gRGVsZXRlIGN1cnJlbnQgVVJMIGluIGZhdm91ciBvZiB0aGUgY29tbWVudGVkIG91dCBVUkwgcnVsZSB3aGVuIHRoaXMgaXNzdWUgaXMgZml4ZWQgaHR0cHM6Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvaXNzdWVzLzc5ODMuXG4vLyB2YXIgVVJMID0gL14oPzooPzpodHRwcz98ZnRwKTpcXC9cXC8pKD86XFxTKyg/OjpcXFMqKT9AKT8oPzooPyExMCg/OlxcLlxcZHsxLDN9KXszfSkoPyExMjcoPzpcXC5cXGR7MSwzfSl7M30pKD8hMTY5XFwuMjU0KD86XFwuXFxkezEsM30pezJ9KSg/ITE5MlxcLjE2OCg/OlxcLlxcZHsxLDN9KXsyfSkoPyExNzJcXC4oPzoxWzYtOV18MlxcZHwzWzAtMV0pKD86XFwuXFxkezEsM30pezJ9KSg/OlsxLTldXFxkP3wxXFxkXFxkfDJbMDFdXFxkfDIyWzAtM10pKD86XFwuKD86MT9cXGR7MSwyfXwyWzAtNF1cXGR8MjVbMC01XSkpezJ9KD86XFwuKD86WzEtOV1cXGQ/fDFcXGRcXGR8MlswLTRdXFxkfDI1WzAtNF0pKXwoPzooPzpbYS16XFx1ezAwYTF9LVxcdXtmZmZmfTAtOV0rLSkqW2EtelxcdXswMGExfS1cXHV7ZmZmZn0wLTldKykoPzpcXC4oPzpbYS16XFx1ezAwYTF9LVxcdXtmZmZmfTAtOV0rLSkqW2EtelxcdXswMGExfS1cXHV7ZmZmZn0wLTldKykqKD86XFwuKD86W2EtelxcdXswMGExfS1cXHV7ZmZmZn1dezIsfSkpKSg/OjpcXGR7Miw1fSk/KD86XFwvW15cXHNdKik/JC9pdTtcbnZhciBVUkwgPSAvXig/Oig/Omh0dHBbc1xcdTAxN0ZdP3xmdHApOlxcL1xcLykoPzooPzpbXFwwLVxceDA4XFx4MEUtXFx4MUYhLVxceDlGXFx4QTEtXFx1MTY3RlxcdTE2ODEtXFx1MUZGRlxcdTIwMEItXFx1MjAyN1xcdTIwMkEtXFx1MjAyRVxcdTIwMzAtXFx1MjA1RVxcdTIwNjAtXFx1MkZGRlxcdTMwMDEtXFx1RDdGRlxcdUUwMDAtXFx1RkVGRVxcdUZGMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkrKD86Oig/OltcXDAtXFx4MDhcXHgwRS1cXHgxRiEtXFx4OUZcXHhBMS1cXHUxNjdGXFx1MTY4MS1cXHUxRkZGXFx1MjAwQi1cXHUyMDI3XFx1MjAyQS1cXHUyMDJFXFx1MjAzMC1cXHUyMDVFXFx1MjA2MC1cXHUyRkZGXFx1MzAwMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRUZFXFx1RkYwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEODAwLVxcdURCRkZdKD8hW1xcdURDMDAtXFx1REZGRl0pfCg/OlteXFx1RDgwMC1cXHVEQkZGXXxeKVtcXHVEQzAwLVxcdURGRkZdKSopP0ApPyg/Oig/ITEwKD86XFwuWzAtOV17MSwzfSl7M30pKD8hMTI3KD86XFwuWzAtOV17MSwzfSl7M30pKD8hMTY5XFwuMjU0KD86XFwuWzAtOV17MSwzfSl7Mn0pKD8hMTkyXFwuMTY4KD86XFwuWzAtOV17MSwzfSl7Mn0pKD8hMTcyXFwuKD86MVs2LTldfDJbMC05XXwzWzAxXSkoPzpcXC5bMC05XXsxLDN9KXsyfSkoPzpbMS05XVswLTldP3wxWzAtOV1bMC05XXwyWzAxXVswLTldfDIyWzAtM10pKD86XFwuKD86MT9bMC05XXsxLDJ9fDJbMC00XVswLTldfDI1WzAtNV0pKXsyfSg/OlxcLig/OlsxLTldWzAtOV0/fDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNF0pKXwoPzooPzooPzpbMC05YS16XFx4QTEtXFx1RDdGRlxcdUUwMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0pKy0pKig/OlswLTlhLXpcXHhBMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkrKSg/OlxcLig/Oig/OlswLTlhLXpcXHhBMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkrLSkqKD86WzAtOWEtelxceEExLVxcdUQ3RkZcXHVFMDAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdKD8hW1xcdURDMDAtXFx1REZGRl0pfCg/OlteXFx1RDgwMC1cXHVEQkZGXXxeKVtcXHVEQzAwLVxcdURGRkZdKSspKig/OlxcLig/Oig/OlthLXpcXHhBMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSl7Mix9KSkpKD86OlswLTldezIsNX0pPyg/OlxcLyg/OltcXDAtXFx4MDhcXHgwRS1cXHgxRiEtXFx4OUZcXHhBMS1cXHUxNjdGXFx1MTY4MS1cXHUxRkZGXFx1MjAwQi1cXHUyMDI3XFx1MjAyQS1cXHUyMDJFXFx1MjAzMC1cXHUyMDVFXFx1MjA2MC1cXHUyRkZGXFx1MzAwMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRUZFXFx1RkYwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEODAwLVxcdURCRkZdKD8hW1xcdURDMDAtXFx1REZGRl0pfCg/OlteXFx1RDgwMC1cXHVEQkZGXXxeKVtcXHVEQzAwLVxcdURGRkZdKSopPyQvaTtcbnZhciBVVUlEID0gL14oPzp1cm46dXVpZDopP1swLTlhLWZdezh9LSg/OlswLTlhLWZdezR9LSl7M31bMC05YS1mXXsxMn0kL2k7XG52YXIgSlNPTl9QT0lOVEVSID0gL14oPzpcXC8oPzpbXn4vXXx+MHx+MSkqKSokLztcbnZhciBKU09OX1BPSU5URVJfVVJJX0ZSQUdNRU5UID0gL14jKD86XFwvKD86W2EtejAtOV9cXC0uISQmJygpKissOzo9QF18JVswLTlhLWZdezJ9fH4wfH4xKSopKiQvaTtcbnZhciBSRUxBVElWRV9KU09OX1BPSU5URVIgPSAvXig/OjB8WzEtOV1bMC05XSopKD86I3woPzpcXC8oPzpbXn4vXXx+MHx+MSkqKSopJC87XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JtYXRzO1xuXG5mdW5jdGlvbiBmb3JtYXRzKG1vZGUpIHtcbiAgbW9kZSA9IG1vZGUgPT0gJ2Z1bGwnID8gJ2Z1bGwnIDogJ2Zhc3QnO1xuICByZXR1cm4gdXRpbC5jb3B5KGZvcm1hdHNbbW9kZV0pO1xufVxuXG5cbmZvcm1hdHMuZmFzdCA9IHtcbiAgLy8gZGF0ZTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSNzZWN0aW9uLTUuNlxuICBkYXRlOiAvXlxcZFxcZFxcZFxcZC1bMC0xXVxcZC1bMC0zXVxcZCQvLFxuICAvLyBkYXRlLXRpbWU6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgdGltZTogL14oPzpbMC0yXVxcZDpbMC01XVxcZDpbMC01XVxcZHwyMzo1OTo2MCkoPzpcXC5cXGQrKT8oPzp6fFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/KT8kL2ksXG4gICdkYXRlLXRpbWUnOiAvXlxcZFxcZFxcZFxcZC1bMC0xXVxcZC1bMC0zXVxcZFt0XFxzXSg/OlswLTJdXFxkOlswLTVdXFxkOlswLTVdXFxkfDIzOjU5OjYwKSg/OlxcLlxcZCspPyg/Onp8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8pJC9pLFxuICAvLyB1cmk6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvaXMtbXktanNvbi12YWxpZC9ibG9iL21hc3Rlci9mb3JtYXRzLmpzXG4gIHVyaTogL14oPzpbYS16XVthLXowLTkrXFwtLl0qOikoPzpcXC8/XFwvKT9bXlxcc10qJC9pLFxuICAndXJpLXJlZmVyZW5jZSc6IC9eKD86KD86W2Etel1bYS16MC05K1xcLS5dKjopP1xcLz9cXC8pPyg/OlteXFxcXFxccyNdW15cXHMjXSopPyg/OiNbXlxcXFxcXHNdKik/JC9pLFxuICAndXJpLXRlbXBsYXRlJzogVVJJVEVNUExBVEUsXG4gIHVybDogVVJMLFxuICAvLyBlbWFpbCAoc291cmNlcyBmcm9tIGpzZW4gdmFsaWRhdG9yKTpcbiAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMDEzMjMvdXNpbmctYS1yZWd1bGFyLWV4cHJlc3Npb24tdG8tdmFsaWRhdGUtYW4tZW1haWwtYWRkcmVzcyNhbnN3ZXItODgyOTM2M1xuICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9mb3Jtcy5odG1sI3ZhbGlkLWUtbWFpbC1hZGRyZXNzIChzZWFyY2ggZm9yICd3aWxsZnVsIHZpb2xhdGlvbicpXG4gIGVtYWlsOiAvXlthLXowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pPyg/OlxcLlthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pPykqJC9pLFxuICBob3N0bmFtZTogSE9TVE5BTUUsXG4gIC8vIG9wdGltaXplZCBodHRwczovL3d3dy5zYWZhcmlib29rc29ubGluZS5jb20vbGlicmFyeS92aWV3L3JlZ3VsYXItZXhwcmVzc2lvbnMtY29va2Jvb2svOTc4MDU5NjgwMjgzNy9jaDA3czE2Lmh0bWxcbiAgaXB2NDogL14oPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykkLyxcbiAgLy8gb3B0aW1pemVkIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTM0OTcvcmVndWxhci1leHByZXNzaW9uLXRoYXQtbWF0Y2hlcy12YWxpZC1pcHY2LWFkZHJlc3Nlc1xuICBpcHY2OiAvXlxccyooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7N30oPzpbMC05YS1mXXsxLDR9fDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7Nn0oPzo6WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezV9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsMn0pfDooPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezR9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsM30pfCg/Oig/OjpbMC05YS1mXXsxLDR9KT86KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7M30oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw0fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsMn06KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7Mn0oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw1fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsM306KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MX0oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw2fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsNH06KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzo6KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsN30pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDV9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSkpKD86JS4rKT9cXHMqJC9pLFxuICByZWdleDogcmVnZXgsXG4gIC8vIHV1aWQ6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQxMjJcbiAgdXVpZDogVVVJRCxcbiAgLy8gSlNPTi1wb2ludGVyOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjkwMVxuICAvLyB1cmkgZnJhZ21lbnQ6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I2FwcGVuZGl4LUFcbiAgJ2pzb24tcG9pbnRlcic6IEpTT05fUE9JTlRFUixcbiAgJ2pzb24tcG9pbnRlci11cmktZnJhZ21lbnQnOiBKU09OX1BPSU5URVJfVVJJX0ZSQUdNRU5ULFxuICAvLyByZWxhdGl2ZSBKU09OLXBvaW50ZXI6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWx1ZmYtcmVsYXRpdmUtanNvbi1wb2ludGVyLTAwXG4gICdyZWxhdGl2ZS1qc29uLXBvaW50ZXInOiBSRUxBVElWRV9KU09OX1BPSU5URVJcbn07XG5cblxuZm9ybWF0cy5mdWxsID0ge1xuICBkYXRlOiBkYXRlLFxuICB0aW1lOiB0aW1lLFxuICAnZGF0ZS10aW1lJzogZGF0ZV90aW1lLFxuICB1cmk6IHVyaSxcbiAgJ3VyaS1yZWZlcmVuY2UnOiBVUklSRUYsXG4gICd1cmktdGVtcGxhdGUnOiBVUklURU1QTEFURSxcbiAgdXJsOiBVUkwsXG4gIGVtYWlsOiAvXlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSsoPzpcXC5bYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKSpAKD86W2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pP1xcLikrW2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pPyQvaSxcbiAgaG9zdG5hbWU6IEhPU1ROQU1FLFxuICBpcHY0OiAvXig/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSQvLFxuICBpcHY2OiAvXlxccyooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7N30oPzpbMC05YS1mXXsxLDR9fDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7Nn0oPzo6WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezV9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsMn0pfDooPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezR9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsM30pfCg/Oig/OjpbMC05YS1mXXsxLDR9KT86KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7M30oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw0fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsMn06KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7Mn0oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw1fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsM306KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MX0oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw2fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsNH06KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzo6KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsN30pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDV9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSkpKD86JS4rKT9cXHMqJC9pLFxuICByZWdleDogcmVnZXgsXG4gIHV1aWQ6IFVVSUQsXG4gICdqc29uLXBvaW50ZXInOiBKU09OX1BPSU5URVIsXG4gICdqc29uLXBvaW50ZXItdXJpLWZyYWdtZW50JzogSlNPTl9QT0lOVEVSX1VSSV9GUkFHTUVOVCxcbiAgJ3JlbGF0aXZlLWpzb24tcG9pbnRlcic6IFJFTEFUSVZFX0pTT05fUE9JTlRFUlxufTtcblxuXG5mdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHtcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjYXBwZW5kaXgtQ1xuICByZXR1cm4geWVhciAlIDQgPT09IDAgJiYgKHllYXIgJSAxMDAgIT09IDAgfHwgeWVhciAlIDQwMCA9PT0gMCk7XG59XG5cblxuZnVuY3Rpb24gZGF0ZShzdHIpIHtcbiAgLy8gZnVsbC1kYXRlIGZyb20gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSNzZWN0aW9uLTUuNlxuICB2YXIgbWF0Y2hlcyA9IHN0ci5tYXRjaChEQVRFKTtcbiAgaWYgKCFtYXRjaGVzKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIHllYXIgPSArbWF0Y2hlc1sxXTtcbiAgdmFyIG1vbnRoID0gK21hdGNoZXNbMl07XG4gIHZhciBkYXkgPSArbWF0Y2hlc1szXTtcblxuICByZXR1cm4gbW9udGggPj0gMSAmJiBtb250aCA8PSAxMiAmJiBkYXkgPj0gMSAmJlxuICAgICAgICAgIGRheSA8PSAobW9udGggPT0gMiAmJiBpc0xlYXBZZWFyKHllYXIpID8gMjkgOiBEQVlTW21vbnRoXSk7XG59XG5cblxuZnVuY3Rpb24gdGltZShzdHIsIGZ1bGwpIHtcbiAgdmFyIG1hdGNoZXMgPSBzdHIubWF0Y2goVElNRSk7XG4gIGlmICghbWF0Y2hlcykgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBob3VyID0gbWF0Y2hlc1sxXTtcbiAgdmFyIG1pbnV0ZSA9IG1hdGNoZXNbMl07XG4gIHZhciBzZWNvbmQgPSBtYXRjaGVzWzNdO1xuICB2YXIgdGltZVpvbmUgPSBtYXRjaGVzWzVdO1xuICByZXR1cm4gKChob3VyIDw9IDIzICYmIG1pbnV0ZSA8PSA1OSAmJiBzZWNvbmQgPD0gNTkpIHx8XG4gICAgICAgICAgKGhvdXIgPT0gMjMgJiYgbWludXRlID09IDU5ICYmIHNlY29uZCA9PSA2MCkpICYmXG4gICAgICAgICAoIWZ1bGwgfHwgdGltZVpvbmUpO1xufVxuXG5cbnZhciBEQVRFX1RJTUVfU0VQQVJBVE9SID0gL3R8XFxzL2k7XG5mdW5jdGlvbiBkYXRlX3RpbWUoc3RyKSB7XG4gIC8vIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgdmFyIGRhdGVUaW1lID0gc3RyLnNwbGl0KERBVEVfVElNRV9TRVBBUkFUT1IpO1xuICByZXR1cm4gZGF0ZVRpbWUubGVuZ3RoID09IDIgJiYgZGF0ZShkYXRlVGltZVswXSkgJiYgdGltZShkYXRlVGltZVsxXSwgdHJ1ZSk7XG59XG5cblxudmFyIE5PVF9VUklfRlJBR01FTlQgPSAvXFwvfDovO1xuZnVuY3Rpb24gdXJpKHN0cikge1xuICAvLyBodHRwOi8vam1yd2FyZS5jb20vYXJ0aWNsZXMvMjAwOS91cmlfcmVnZXhwL1VSSV9yZWdleC5odG1sICsgb3B0aW9uYWwgcHJvdG9jb2wgKyByZXF1aXJlZCBcIi5cIlxuICByZXR1cm4gTk9UX1VSSV9GUkFHTUVOVC50ZXN0KHN0cikgJiYgVVJJLnRlc3Qoc3RyKTtcbn1cblxuXG52YXIgWl9BTkNIT1IgPSAvW15cXFxcXVxcXFxaLztcbmZ1bmN0aW9uIHJlZ2V4KHN0cikge1xuICBpZiAoWl9BTkNIT1IudGVzdChzdHIpKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgbmV3IFJlZ0V4cChzdHIpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfcmVmKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkYXN5bmMsICRyZWZDb2RlO1xuICBpZiAoJHNjaGVtYSA9PSAnIycgfHwgJHNjaGVtYSA9PSAnIy8nKSB7XG4gICAgaWYgKGl0LmlzUm9vdCkge1xuICAgICAgJGFzeW5jID0gaXQuYXN5bmM7XG4gICAgICAkcmVmQ29kZSA9ICd2YWxpZGF0ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgICRhc3luYyA9IGl0LnJvb3Quc2NoZW1hLiRhc3luYyA9PT0gdHJ1ZTtcbiAgICAgICRyZWZDb2RlID0gJ3Jvb3QucmVmVmFsWzBdJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyICRyZWZWYWwgPSBpdC5yZXNvbHZlUmVmKGl0LmJhc2VJZCwgJHNjaGVtYSwgaXQuaXNSb290KTtcbiAgICBpZiAoJHJlZlZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgJG1lc3NhZ2UgPSBpdC5NaXNzaW5nUmVmRXJyb3IubWVzc2FnZShpdC5iYXNlSWQsICRzY2hlbWEpO1xuICAgICAgaWYgKGl0Lm9wdHMubWlzc2luZ1JlZnMgPT0gJ2ZhaWwnKSB7XG4gICAgICAgIGl0LmxvZ2dlci5lcnJvcigkbWVzc2FnZSk7XG4gICAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnJHJlZicpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgcmVmOiBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRzY2hlbWEpKSArICdcXCcgfSAnO1xuICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdjYW5cXFxcXFwndCByZXNvbHZlIHJlZmVyZW5jZSAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRzY2hlbWEpKSArICdcXCcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkc2NoZW1hKSkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKGZhbHNlKSB7ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXQub3B0cy5taXNzaW5nUmVmcyA9PSAnaWdub3JlJykge1xuICAgICAgICBpdC5sb2dnZXIud2FybigkbWVzc2FnZSk7XG4gICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IGl0Lk1pc3NpbmdSZWZFcnJvcihpdC5iYXNlSWQsICRzY2hlbWEsICRtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCRyZWZWYWwuaW5saW5lKSB7XG4gICAgICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgICAgICRpdC5sZXZlbCsrO1xuICAgICAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICAgICAgJGl0LnNjaGVtYSA9ICRyZWZWYWwuc2NoZW1hO1xuICAgICAgJGl0LnNjaGVtYVBhdGggPSAnJztcbiAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJHNjaGVtYTtcbiAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCkucmVwbGFjZSgvdmFsaWRhdGVcXC5zY2hlbWEvZywgJHJlZlZhbC5jb2RlKTtcbiAgICAgIG91dCArPSAnICcgKyAoJGNvZGUpICsgJyAnO1xuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICRhc3luYyA9ICRyZWZWYWwuJGFzeW5jID09PSB0cnVlIHx8IChpdC5hc3luYyAmJiAkcmVmVmFsLiRhc3luYyAhPT0gZmFsc2UpO1xuICAgICAgJHJlZkNvZGUgPSAkcmVmVmFsLmNvZGU7XG4gICAgfVxuICB9XG4gIGlmICgkcmVmQ29kZSkge1xuICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICBvdXQgPSAnJztcbiAgICBpZiAoaXQub3B0cy5wYXNzQ29udGV4dCkge1xuICAgICAgb3V0ICs9ICcgJyArICgkcmVmQ29kZSkgKyAnLmNhbGwodGhpcywgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgJyArICgkcmVmQ29kZSkgKyAnKCAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyAnICsgKCRkYXRhKSArICcsIChkYXRhUGF0aCB8fCBcXCdcXCcpJztcbiAgICBpZiAoaXQuZXJyb3JQYXRoICE9ICdcIlwiJykge1xuICAgICAgb3V0ICs9ICcgKyAnICsgKGl0LmVycm9yUGF0aCk7XG4gICAgfVxuICAgIHZhciAkcGFyZW50RGF0YSA9ICRkYXRhTHZsID8gJ2RhdGEnICsgKCgkZGF0YUx2bCAtIDEpIHx8ICcnKSA6ICdwYXJlbnREYXRhJyxcbiAgICAgICRwYXJlbnREYXRhUHJvcGVydHkgPSAkZGF0YUx2bCA/IGl0LmRhdGFQYXRoQXJyWyRkYXRhTHZsXSA6ICdwYXJlbnREYXRhUHJvcGVydHknO1xuICAgIG91dCArPSAnICwgJyArICgkcGFyZW50RGF0YSkgKyAnICwgJyArICgkcGFyZW50RGF0YVByb3BlcnR5KSArICcsIHJvb3REYXRhKSAgJztcbiAgICB2YXIgX19jYWxsVmFsaWRhdGUgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoJGFzeW5jKSB7XG4gICAgICBpZiAoIWl0LmFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoJ2FzeW5jIHNjaGVtYSByZWZlcmVuY2VkIGJ5IHN5bmMgc2NoZW1hJyk7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkdmFsaWQpICsgJzsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIHRyeSB7IGF3YWl0ICcgKyAoX19jYWxsVmFsaWRhdGUpICsgJzsgJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSBjYXRjaCAoZSkgeyBpZiAoIShlIGluc3RhbmNlb2YgVmFsaWRhdGlvbkVycm9yKSkgdGhyb3cgZTsgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBlLmVycm9yczsgZWxzZSB2RXJyb3JzID0gdkVycm9ycy5jb25jYXQoZS5lcnJvcnMpOyBlcnJvcnMgPSB2RXJyb3JzLmxlbmd0aDsgJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnIGlmICgnICsgKCR2YWxpZCkgKyAnKSB7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIGlmICghJyArIChfX2NhbGxWYWxpZGF0ZSkgKyAnKSB7IGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gJyArICgkcmVmQ29kZSkgKyAnLmVycm9yczsgZWxzZSB2RXJyb3JzID0gdkVycm9ycy5jb25jYXQoJyArICgkcmVmQ29kZSkgKyAnLmVycm9ycyk7IGVycm9ycyA9IHZFcnJvcnMubGVuZ3RoOyB9ICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfYWxsT2YoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICB2YXIgJGNsb3NpbmdCcmFjZXMgPSAnJztcbiAgJGl0LmxldmVsKys7XG4gIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgdmFyICRjdXJyZW50QmFzZUlkID0gJGl0LmJhc2VJZCxcbiAgICAkYWxsU2NoZW1hc0VtcHR5ID0gdHJ1ZTtcbiAgdmFyIGFycjEgPSAkc2NoZW1hO1xuICBpZiAoYXJyMSkge1xuICAgIHZhciAkc2NoLCAkaSA9IC0xLFxuICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKCRpIDwgbDEpIHtcbiAgICAgICRzY2ggPSBhcnIxWyRpICs9IDFdO1xuICAgICAgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2gpLmxlbmd0aCA+IDApIHx8ICRzY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICAgICAkYWxsU2NoZW1hc0VtcHR5ID0gZmFsc2U7XG4gICAgICAgICRpdC5zY2hlbWEgPSAkc2NoO1xuICAgICAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoICsgJ1snICsgJGkgKyAnXSc7XG4gICAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGggKyAnLycgKyAkaTtcbiAgICAgICAgb3V0ICs9ICcgICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBpZiAoJGFsbFNjaGVtYXNFbXB0eSkge1xuICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgJyArICgkY2xvc2luZ0JyYWNlcy5zbGljZSgwLCAtMSkpICsgJyAnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9hbnlPZihpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJG5vRW1wdHlTY2hlbWEgPSAkc2NoZW1hLmV2ZXJ5KGZ1bmN0aW9uKCRzY2gpIHtcbiAgICByZXR1cm4gKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2ggPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaCkubGVuZ3RoID4gMCkgfHwgJHNjaCA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2gsIGl0LlJVTEVTLmFsbCkpO1xuICB9KTtcbiAgaWYgKCRub0VtcHR5U2NoZW1hKSB7XG4gICAgdmFyICRjdXJyZW50QmFzZUlkID0gJGl0LmJhc2VJZDtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZXJycykgKyAnID0gZXJyb3JzOyB2YXIgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyAgJztcbiAgICB2YXIgJHdhc0NvbXBvc2l0ZSA9IGl0LmNvbXBvc2l0ZVJ1bGU7XG4gICAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gdHJ1ZTtcbiAgICB2YXIgYXJyMSA9ICRzY2hlbWE7XG4gICAgaWYgKGFycjEpIHtcbiAgICAgIHZhciAkc2NoLCAkaSA9IC0xLFxuICAgICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlICgkaSA8IGwxKSB7XG4gICAgICAgICRzY2ggPSBhcnIxWyRpICs9IDFdO1xuICAgICAgICAkaXQuc2NoZW1hID0gJHNjaDtcbiAgICAgICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aCArICdbJyArICRpICsgJ10nO1xuICAgICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoICsgJy8nICsgJGk7XG4gICAgICAgIG91dCArPSAnICAnICsgKGl0LnZhbGlkYXRlKCRpdCkpICsgJyAnO1xuICAgICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSAnICsgKCR2YWxpZCkgKyAnIHx8ICcgKyAoJG5leHRWYWxpZCkgKyAnOyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgJztcbiAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgfVxuICAgIH1cbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIG91dCArPSAnICcgKyAoJGNsb3NpbmdCcmFjZXMpICsgJyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2FueU9mJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczoge30gJztcbiAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBtYXRjaCBzb21lIHNjaGVtYSBpbiBhbnlPZlxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHZFcnJvcnMpOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gdkVycm9yczsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH1cbiAgICBvdXQgKz0gJyB9IGVsc2UgeyAgZXJyb3JzID0gJyArICgkZXJycykgKyAnOyBpZiAodkVycm9ycyAhPT0gbnVsbCkgeyBpZiAoJyArICgkZXJycykgKyAnKSB2RXJyb3JzLmxlbmd0aCA9ICcgKyAoJGVycnMpICsgJzsgZWxzZSB2RXJyb3JzID0gbnVsbDsgfSAnO1xuICAgIGlmIChpdC5vcHRzLmFsbEVycm9ycykge1xuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfY29tbWVudChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkY29tbWVudCA9IGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHNjaGVtYSk7XG4gIGlmIChpdC5vcHRzLiRjb21tZW50ID09PSB0cnVlKSB7XG4gICAgb3V0ICs9ICcgY29uc29sZS5sb2coJyArICgkY29tbWVudCkgKyAnKTsnO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpdC5vcHRzLiRjb21tZW50ID09ICdmdW5jdGlvbicpIHtcbiAgICBvdXQgKz0gJyBzZWxmLl9vcHRzLiRjb21tZW50KCcgKyAoJGNvbW1lbnQpICsgJywgJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnLCB2YWxpZGF0ZS5yb290LnNjaGVtYSk7JztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9jb25zdChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICBpZiAoISRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICc7JztcbiAgfVxuICBvdXQgKz0gJ3ZhciAnICsgKCR2YWxpZCkgKyAnID0gZXF1YWwoJyArICgkZGF0YSkgKyAnLCBzY2hlbWEnICsgKCRsdmwpICsgJyk7IGlmICghJyArICgkdmFsaWQpICsgJykgeyAgICc7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnY29uc3QnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGFsbG93ZWRWYWx1ZTogc2NoZW1hJyArICgkbHZsKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgZXF1YWwgdG8gY29uc3RhbnRcXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJyB9JztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9jb250YWlucyhpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJGlkeCA9ICdpJyArICRsdmwsXG4gICAgJGRhdGFOeHQgPSAkaXQuZGF0YUxldmVsID0gaXQuZGF0YUxldmVsICsgMSxcbiAgICAkbmV4dERhdGEgPSAnZGF0YScgKyAkZGF0YU54dCxcbiAgICAkY3VycmVudEJhc2VJZCA9IGl0LmJhc2VJZCxcbiAgICAkbm9uRW1wdHlTY2hlbWEgPSAoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaGVtYSA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoZW1hKS5sZW5ndGggPiAwKSB8fCAkc2NoZW1hID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaGVtYSwgaXQuUlVMRVMuYWxsKSk7XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczt2YXIgJyArICgkdmFsaWQpICsgJzsnO1xuICBpZiAoJG5vbkVtcHR5U2NoZW1hKSB7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgJGl0LnNjaGVtYSA9ICRzY2hlbWE7XG4gICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aDtcbiAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0VmFsaWQpICsgJyA9IGZhbHNlOyBmb3IgKHZhciAnICsgKCRpZHgpICsgJyA9IDA7ICcgKyAoJGlkeCkgKyAnIDwgJyArICgkZGF0YSkgKyAnLmxlbmd0aDsgJyArICgkaWR4KSArICcrKykgeyAnO1xuICAgICRpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGhFeHByKGl0LmVycm9yUGF0aCwgJGlkeCwgaXQub3B0cy5qc29uUG9pbnRlcnMsIHRydWUpO1xuICAgIHZhciAkcGFzc0RhdGEgPSAkZGF0YSArICdbJyArICRpZHggKyAnXSc7XG4gICAgJGl0LmRhdGFQYXRoQXJyWyRkYXRhTnh0XSA9ICRpZHg7XG4gICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KTtcbiAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgIG91dCArPSAnICcgKyAoaXQudXRpbC52YXJSZXBsYWNlKCRjb2RlLCAkbmV4dERhdGEsICRwYXNzRGF0YSkpICsgJyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dERhdGEpICsgJyA9ICcgKyAoJHBhc3NEYXRhKSArICc7ICcgKyAoJGNvZGUpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIGJyZWFrOyB9ICAnO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9ICR3YXNDb21wb3NpdGU7XG4gICAgb3V0ICs9ICcgJyArICgkY2xvc2luZ0JyYWNlcykgKyAnIGlmICghJyArICgkbmV4dFZhbGlkKSArICcpIHsnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIGlmICgnICsgKCRkYXRhKSArICcubGVuZ3RoID09IDApIHsnO1xuICB9XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnY29udGFpbnMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7fSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgY29udGFpbiBhIHZhbGlkIGl0ZW1cXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJyB9IGVsc2UgeyAnO1xuICBpZiAoJG5vbkVtcHR5U2NoZW1hKSB7XG4gICAgb3V0ICs9ICcgIGVycm9ycyA9ICcgKyAoJGVycnMpICsgJzsgaWYgKHZFcnJvcnMgIT09IG51bGwpIHsgaWYgKCcgKyAoJGVycnMpICsgJykgdkVycm9ycy5sZW5ndGggPSAnICsgKCRlcnJzKSArICc7IGVsc2UgdkVycm9ycyA9IG51bGw7IH0gJztcbiAgfVxuICBpZiAoaXQub3B0cy5hbGxFcnJvcnMpIHtcbiAgICBvdXQgKz0gJyB9ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfZGVwZW5kZW5jaWVzKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJHNjaGVtYURlcHMgPSB7fSxcbiAgICAkcHJvcGVydHlEZXBzID0ge30sXG4gICAgJG93blByb3BlcnRpZXMgPSBpdC5vcHRzLm93blByb3BlcnRpZXM7XG4gIGZvciAoJHByb3BlcnR5IGluICRzY2hlbWEpIHtcbiAgICBpZiAoJHByb3BlcnR5ID09ICdfX3Byb3RvX18nKSBjb250aW51ZTtcbiAgICB2YXIgJHNjaCA9ICRzY2hlbWFbJHByb3BlcnR5XTtcbiAgICB2YXIgJGRlcHMgPSBBcnJheS5pc0FycmF5KCRzY2gpID8gJHByb3BlcnR5RGVwcyA6ICRzY2hlbWFEZXBzO1xuICAgICRkZXBzWyRwcm9wZXJ0eV0gPSAkc2NoO1xuICB9XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczsnO1xuICB2YXIgJGN1cnJlbnRFcnJvclBhdGggPSBpdC5lcnJvclBhdGg7XG4gIG91dCArPSAndmFyIG1pc3NpbmcnICsgKCRsdmwpICsgJzsnO1xuICBmb3IgKHZhciAkcHJvcGVydHkgaW4gJHByb3BlcnR5RGVwcykge1xuICAgICRkZXBzID0gJHByb3BlcnR5RGVwc1skcHJvcGVydHldO1xuICAgIGlmICgkZGVwcy5sZW5ndGgpIHtcbiAgICAgIG91dCArPSAnIGlmICggJyArICgkZGF0YSkgKyAoaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHkpKSArICcgIT09IHVuZGVmaW5lZCAnO1xuICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgIG91dCArPSAnICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5KSkgKyAnXFwnKSAnO1xuICAgICAgfVxuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgb3V0ICs9ICcgJiYgKCAnO1xuICAgICAgICB2YXIgYXJyMSA9ICRkZXBzO1xuICAgICAgICBpZiAoYXJyMSkge1xuICAgICAgICAgIHZhciAkcHJvcGVydHlLZXksICRpID0gLTEsXG4gICAgICAgICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoJGkgPCBsMSkge1xuICAgICAgICAgICAgJHByb3BlcnR5S2V5ID0gYXJyMVskaSArPSAxXTtcbiAgICAgICAgICAgIGlmICgkaSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyICRwcm9wID0gaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHlLZXkpLFxuICAgICAgICAgICAgICAkdXNlRGF0YSA9ICRkYXRhICsgJHByb3A7XG4gICAgICAgICAgICBvdXQgKz0gJyAoICggJyArICgkdXNlRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcpICYmIChtaXNzaW5nJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoaXQub3B0cy5qc29uUG9pbnRlcnMgPyAkcHJvcGVydHlLZXkgOiAkcHJvcCkpICsgJykgKSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJykpIHsgICc7XG4gICAgICAgIHZhciAkcHJvcGVydHlQYXRoID0gJ21pc3NpbmcnICsgJGx2bCxcbiAgICAgICAgICAkbWlzc2luZ1Byb3BlcnR5ID0gJ1xcJyArICcgKyAkcHJvcGVydHlQYXRoICsgJyArIFxcJyc7XG4gICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICBpdC5lcnJvclBhdGggPSBpdC5vcHRzLmpzb25Qb2ludGVycyA/IGl0LnV0aWwuZ2V0UGF0aEV4cHIoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eVBhdGgsIHRydWUpIDogJGN1cnJlbnRFcnJvclBhdGggKyAnICsgJyArICRwcm9wZXJ0eVBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdkZXBlbmRlbmNpZXMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHByb3BlcnR5OiBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eSkpICsgJ1xcJywgbWlzc2luZ1Byb3BlcnR5OiBcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcJywgZGVwc0NvdW50OiAnICsgKCRkZXBzLmxlbmd0aCkgKyAnLCBkZXBzOiBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRkZXBzLmxlbmd0aCA9PSAxID8gJGRlcHNbMF0gOiAkZGVwcy5qb2luKFwiLCBcIikpKSArICdcXCcgfSAnO1xuICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgaGF2ZSAnO1xuICAgICAgICAgICAgaWYgKCRkZXBzLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgIG91dCArPSAncHJvcGVydHkgJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkZGVwc1swXSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICdwcm9wZXJ0aWVzICcgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJGRlcHMuam9pbihcIiwgXCIpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJyB3aGVuIHByb3BlcnR5ICcgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5KSkgKyAnIGlzIHByZXNlbnRcXCcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgKSB7ICc7XG4gICAgICAgIHZhciBhcnIyID0gJGRlcHM7XG4gICAgICAgIGlmIChhcnIyKSB7XG4gICAgICAgICAgdmFyICRwcm9wZXJ0eUtleSwgaTIgPSAtMSxcbiAgICAgICAgICAgIGwyID0gYXJyMi5sZW5ndGggLSAxO1xuICAgICAgICAgIHdoaWxlIChpMiA8IGwyKSB7XG4gICAgICAgICAgICAkcHJvcGVydHlLZXkgPSBhcnIyW2kyICs9IDFdO1xuICAgICAgICAgICAgdmFyICRwcm9wID0gaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHlLZXkpLFxuICAgICAgICAgICAgICAkbWlzc2luZ1Byb3BlcnR5ID0gaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJHVzZURhdGEgPSAkZGF0YSArICRwcm9wO1xuICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICBpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGgoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eUtleSwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCAnICsgKCR1c2VEYXRhKSArICcgPT09IHVuZGVmaW5lZCAnO1xuICAgICAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIHx8ICEgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCcgKyAoJGRhdGEpICsgJywgXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkcHJvcGVydHlLZXkpKSArICdcXCcpICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJykgeyAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnZGVwZW5kZW5jaWVzJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBwcm9wZXJ0eTogXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkcHJvcGVydHkpKSArICdcXCcsIG1pc3NpbmdQcm9wZXJ0eTogXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXCcsIGRlcHNDb3VudDogJyArICgkZGVwcy5sZW5ndGgpICsgJywgZGVwczogXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkZGVwcy5sZW5ndGggPT0gMSA/ICRkZXBzWzBdIDogJGRlcHMuam9pbihcIiwgXCIpKSkgKyAnXFwnIH0gJztcbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgaGF2ZSAnO1xuICAgICAgICAgICAgICAgIGlmICgkZGVwcy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICdwcm9wZXJ0eSAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRkZXBzWzBdKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAncHJvcGVydGllcyAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRkZXBzLmpvaW4oXCIsIFwiKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB3aGVuIHByb3BlcnR5ICcgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5KSkgKyAnIGlzIHByZXNlbnRcXCcgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgfSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAgICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpdC5lcnJvclBhdGggPSAkY3VycmVudEVycm9yUGF0aDtcbiAgdmFyICRjdXJyZW50QmFzZUlkID0gJGl0LmJhc2VJZDtcbiAgZm9yICh2YXIgJHByb3BlcnR5IGluICRzY2hlbWFEZXBzKSB7XG4gICAgdmFyICRzY2ggPSAkc2NoZW1hRGVwc1skcHJvcGVydHldO1xuICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJG5leHRWYWxpZCkgKyAnID0gdHJ1ZTsgaWYgKCAnICsgKCRkYXRhKSArIChpdC51dGlsLmdldFByb3BlcnR5KCRwcm9wZXJ0eSkpICsgJyAhPT0gdW5kZWZpbmVkICc7XG4gICAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgICAgb3V0ICs9ICcgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCcgKyAoJGRhdGEpICsgJywgXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkcHJvcGVydHkpKSArICdcXCcpICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJykgeyAnO1xuICAgICAgJGl0LnNjaGVtYSA9ICRzY2g7XG4gICAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHkpO1xuICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCArICcvJyArIGl0LnV0aWwuZXNjYXBlRnJhZ21lbnQoJHByb3BlcnR5KTtcbiAgICAgIG91dCArPSAnICAnICsgKGl0LnZhbGlkYXRlKCRpdCkpICsgJyAnO1xuICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgb3V0ICs9ICcgfSAgJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnO1xuICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgICAnICsgKCRjbG9zaW5nQnJhY2VzKSArICcgaWYgKCcgKyAoJGVycnMpICsgJyA9PSBlcnJvcnMpIHsnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2VudW0oaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgdmFyICRpID0gJ2knICsgJGx2bCxcbiAgICAkdlNjaGVtYSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgaWYgKCEkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJHZTY2hlbWEpICsgJyA9IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJzsnO1xuICB9XG4gIG91dCArPSAndmFyICcgKyAoJHZhbGlkKSArICc7JztcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyBpZiAoc2NoZW1hJyArICgkbHZsKSArICcgPT09IHVuZGVmaW5lZCkgJyArICgkdmFsaWQpICsgJyA9IHRydWU7IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KHNjaGVtYScgKyAoJGx2bCkgKyAnKSkgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyBlbHNlIHsnO1xuICB9XG4gIG91dCArPSAnJyArICgkdmFsaWQpICsgJyA9IGZhbHNlO2ZvciAodmFyICcgKyAoJGkpICsgJz0wOyAnICsgKCRpKSArICc8JyArICgkdlNjaGVtYSkgKyAnLmxlbmd0aDsgJyArICgkaSkgKyAnKyspIGlmIChlcXVhbCgnICsgKCRkYXRhKSArICcsICcgKyAoJHZTY2hlbWEpICsgJ1snICsgKCRpKSArICddKSkgeyAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZTsgYnJlYWs7IH0nO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICB9ICAnO1xuICB9XG4gIG91dCArPSAnIGlmICghJyArICgkdmFsaWQpICsgJykgeyAgICc7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnZW51bScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgYWxsb3dlZFZhbHVlczogc2NoZW1hJyArICgkbHZsKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgZXF1YWwgdG8gb25lIG9mIHRoZSBhbGxvd2VkIHZhbHVlc1xcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICB2YXIgX19lcnIgPSBvdXQ7XG4gIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICB9XG4gIG91dCArPSAnIH0nO1xuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2Zvcm1hdChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICBpZiAoaXQub3B0cy5mb3JtYXQgPT09IGZhbHNlKSB7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkdW5rbm93bkZvcm1hdHMgPSBpdC5vcHRzLnVua25vd25Gb3JtYXRzLFxuICAgICRhbGxvd1Vua25vd24gPSBBcnJheS5pc0FycmF5KCR1bmtub3duRm9ybWF0cyk7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgdmFyICRmb3JtYXQgPSAnZm9ybWF0JyArICRsdmwsXG4gICAgICAkaXNPYmplY3QgPSAnaXNPYmplY3QnICsgJGx2bCxcbiAgICAgICRmb3JtYXRUeXBlID0gJ2Zvcm1hdFR5cGUnICsgJGx2bDtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZm9ybWF0KSArICcgPSBmb3JtYXRzWycgKyAoJHNjaGVtYVZhbHVlKSArICddOyB2YXIgJyArICgkaXNPYmplY3QpICsgJyA9IHR5cGVvZiAnICsgKCRmb3JtYXQpICsgJyA9PSBcXCdvYmplY3RcXCcgJiYgISgnICsgKCRmb3JtYXQpICsgJyBpbnN0YW5jZW9mIFJlZ0V4cCkgJiYgJyArICgkZm9ybWF0KSArICcudmFsaWRhdGU7IHZhciAnICsgKCRmb3JtYXRUeXBlKSArICcgPSAnICsgKCRpc09iamVjdCkgKyAnICYmICcgKyAoJGZvcm1hdCkgKyAnLnR5cGUgfHwgXFwnc3RyaW5nXFwnOyBpZiAoJyArICgkaXNPYmplY3QpICsgJykgeyAnO1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdmFyIGFzeW5jJyArICgkbHZsKSArICcgPSAnICsgKCRmb3JtYXQpICsgJy5hc3luYzsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgJyArICgkZm9ybWF0KSArICcgPSAnICsgKCRmb3JtYXQpICsgJy52YWxpZGF0ZTsgfSBpZiAoICAnO1xuICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICBvdXQgKz0gJyAoJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9IFxcJ3N0cmluZ1xcJykgfHwgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgKCc7XG4gICAgaWYgKCR1bmtub3duRm9ybWF0cyAhPSAnaWdub3JlJykge1xuICAgICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgJiYgIScgKyAoJGZvcm1hdCkgKyAnICc7XG4gICAgICBpZiAoJGFsbG93VW5rbm93bikge1xuICAgICAgICBvdXQgKz0gJyAmJiBzZWxmLl9vcHRzLnVua25vd25Gb3JtYXRzLmluZGV4T2YoJyArICgkc2NoZW1hVmFsdWUpICsgJykgPT0gLTEgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnKSB8fCAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyAoJyArICgkZm9ybWF0KSArICcgJiYgJyArICgkZm9ybWF0VHlwZSkgKyAnID09IFxcJycgKyAoJHJ1bGVUeXBlKSArICdcXCcgJiYgISh0eXBlb2YgJyArICgkZm9ybWF0KSArICcgPT0gXFwnZnVuY3Rpb25cXCcgPyAnO1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgKGFzeW5jJyArICgkbHZsKSArICcgPyBhd2FpdCAnICsgKCRmb3JtYXQpICsgJygnICsgKCRkYXRhKSArICcpIDogJyArICgkZm9ybWF0KSArICcoJyArICgkZGF0YSkgKyAnKSkgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgJyArICgkZm9ybWF0KSArICcoJyArICgkZGF0YSkgKyAnKSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyA6ICcgKyAoJGZvcm1hdCkgKyAnLnRlc3QoJyArICgkZGF0YSkgKyAnKSkpKSkgeyc7XG4gIH0gZWxzZSB7XG4gICAgdmFyICRmb3JtYXQgPSBpdC5mb3JtYXRzWyRzY2hlbWFdO1xuICAgIGlmICghJGZvcm1hdCkge1xuICAgICAgaWYgKCR1bmtub3duRm9ybWF0cyA9PSAnaWdub3JlJykge1xuICAgICAgICBpdC5sb2dnZXIud2FybigndW5rbm93biBmb3JtYXQgXCInICsgJHNjaGVtYSArICdcIiBpZ25vcmVkIGluIHNjaGVtYSBhdCBwYXRoIFwiJyArIGl0LmVyclNjaGVtYVBhdGggKyAnXCInKTtcbiAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9IGVsc2UgaWYgKCRhbGxvd1Vua25vd24gJiYgJHVua25vd25Gb3JtYXRzLmluZGV4T2YoJHNjaGVtYSkgPj0gMCkge1xuICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBmb3JtYXQgXCInICsgJHNjaGVtYSArICdcIiBpcyB1c2VkIGluIHNjaGVtYSBhdCBwYXRoIFwiJyArIGl0LmVyclNjaGVtYVBhdGggKyAnXCInKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyICRpc09iamVjdCA9IHR5cGVvZiAkZm9ybWF0ID09ICdvYmplY3QnICYmICEoJGZvcm1hdCBpbnN0YW5jZW9mIFJlZ0V4cCkgJiYgJGZvcm1hdC52YWxpZGF0ZTtcbiAgICB2YXIgJGZvcm1hdFR5cGUgPSAkaXNPYmplY3QgJiYgJGZvcm1hdC50eXBlIHx8ICdzdHJpbmcnO1xuICAgIGlmICgkaXNPYmplY3QpIHtcbiAgICAgIHZhciAkYXN5bmMgPSAkZm9ybWF0LmFzeW5jID09PSB0cnVlO1xuICAgICAgJGZvcm1hdCA9ICRmb3JtYXQudmFsaWRhdGU7XG4gICAgfVxuICAgIGlmICgkZm9ybWF0VHlwZSAhPSAkcnVsZVR5cGUpIHtcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICBpZiAoJGFzeW5jKSB7XG4gICAgICBpZiAoIWl0LmFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoJ2FzeW5jIGZvcm1hdCBpbiBzeW5jIHNjaGVtYScpO1xuICAgICAgdmFyICRmb3JtYXRSZWYgPSAnZm9ybWF0cycgKyBpdC51dGlsLmdldFByb3BlcnR5KCRzY2hlbWEpICsgJy52YWxpZGF0ZSc7XG4gICAgICBvdXQgKz0gJyBpZiAoIShhd2FpdCAnICsgKCRmb3JtYXRSZWYpICsgJygnICsgKCRkYXRhKSArICcpKSkgeyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyBpZiAoISAnO1xuICAgICAgdmFyICRmb3JtYXRSZWYgPSAnZm9ybWF0cycgKyBpdC51dGlsLmdldFByb3BlcnR5KCRzY2hlbWEpO1xuICAgICAgaWYgKCRpc09iamVjdCkgJGZvcm1hdFJlZiArPSAnLnZhbGlkYXRlJztcbiAgICAgIGlmICh0eXBlb2YgJGZvcm1hdCA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG91dCArPSAnICcgKyAoJGZvcm1hdFJlZikgKyAnKCcgKyAoJGRhdGEpICsgJykgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnICcgKyAoJGZvcm1hdFJlZikgKyAnLnRlc3QoJyArICgkZGF0YSkgKyAnKSAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcpIHsgJztcbiAgICB9XG4gIH1cbiAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdmb3JtYXQnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGZvcm1hdDogICc7XG4gICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgIG91dCArPSAnJyArICgkc2NoZW1hVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkc2NoZW1hKSk7XG4gICAgfVxuICAgIG91dCArPSAnICB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBtYXRjaCBmb3JtYXQgXCInO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICsgXFwnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArIChpdC51dGlsLmVzY2FwZVF1b3Rlcygkc2NoZW1hKSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJ1wiXFwnICc7XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiAgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAndmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkc2NoZW1hKSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAgICAgICAgICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICB2YXIgX19lcnIgPSBvdXQ7XG4gIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICB9XG4gIG91dCArPSAnIH0gJztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9pZihpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIHZhciAkdGhlblNjaCA9IGl0LnNjaGVtYVsndGhlbiddLFxuICAgICRlbHNlU2NoID0gaXQuc2NoZW1hWydlbHNlJ10sXG4gICAgJHRoZW5QcmVzZW50ID0gJHRoZW5TY2ggIT09IHVuZGVmaW5lZCAmJiAoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHRoZW5TY2ggPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHRoZW5TY2gpLmxlbmd0aCA+IDApIHx8ICR0aGVuU2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHRoZW5TY2gsIGl0LlJVTEVTLmFsbCkpLFxuICAgICRlbHNlUHJlc2VudCA9ICRlbHNlU2NoICE9PSB1bmRlZmluZWQgJiYgKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRlbHNlU2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRlbHNlU2NoKS5sZW5ndGggPiAwKSB8fCAkZWxzZVNjaCA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRlbHNlU2NoLCBpdC5SVUxFUy5hbGwpKSxcbiAgICAkY3VycmVudEJhc2VJZCA9ICRpdC5iYXNlSWQ7XG4gIGlmICgkdGhlblByZXNlbnQgfHwgJGVsc2VQcmVzZW50KSB7XG4gICAgdmFyICRpZkNsYXVzZTtcbiAgICAkaXQuY3JlYXRlRXJyb3JzID0gZmFsc2U7XG4gICAgJGl0LnNjaGVtYSA9ICRzY2hlbWE7XG4gICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aDtcbiAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgIG91dCArPSAnIHZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7IHZhciAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZTsgICc7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgb3V0ICs9ICcgICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICRpdC5jcmVhdGVFcnJvcnMgPSB0cnVlO1xuICAgIG91dCArPSAnICBlcnJvcnMgPSAnICsgKCRlcnJzKSArICc7IGlmICh2RXJyb3JzICE9PSBudWxsKSB7IGlmICgnICsgKCRlcnJzKSArICcpIHZFcnJvcnMubGVuZ3RoID0gJyArICgkZXJycykgKyAnOyBlbHNlIHZFcnJvcnMgPSBudWxsOyB9ICAnO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9ICR3YXNDb21wb3NpdGU7XG4gICAgaWYgKCR0aGVuUHJlc2VudCkge1xuICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICAnO1xuICAgICAgJGl0LnNjaGVtYSA9IGl0LnNjaGVtYVsndGhlbiddO1xuICAgICAgJGl0LnNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgJy50aGVuJztcbiAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvdGhlbic7XG4gICAgICBvdXQgKz0gJyAgJyArIChpdC52YWxpZGF0ZSgkaXQpKSArICcgJztcbiAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSAnICsgKCRuZXh0VmFsaWQpICsgJzsgJztcbiAgICAgIGlmICgkdGhlblByZXNlbnQgJiYgJGVsc2VQcmVzZW50KSB7XG4gICAgICAgICRpZkNsYXVzZSA9ICdpZkNsYXVzZScgKyAkbHZsO1xuICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkaWZDbGF1c2UpICsgJyA9IFxcJ3RoZW5cXCc7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkaWZDbGF1c2UgPSAnXFwndGhlblxcJyc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICBpZiAoJGVsc2VQcmVzZW50KSB7XG4gICAgICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgfVxuICAgIGlmICgkZWxzZVByZXNlbnQpIHtcbiAgICAgICRpdC5zY2hlbWEgPSBpdC5zY2hlbWFbJ2Vsc2UnXTtcbiAgICAgICRpdC5zY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcuZWxzZSc7XG4gICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2Vsc2UnO1xuICAgICAgb3V0ICs9ICcgICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkbmV4dFZhbGlkKSArICc7ICc7XG4gICAgICBpZiAoJHRoZW5QcmVzZW50ICYmICRlbHNlUHJlc2VudCkge1xuICAgICAgICAkaWZDbGF1c2UgPSAnaWZDbGF1c2UnICsgJGx2bDtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJGlmQ2xhdXNlKSArICcgPSBcXCdlbHNlXFwnOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJGlmQ2xhdXNlID0gJ1xcJ2Vsc2VcXCcnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2lmJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBmYWlsaW5nS2V5d29yZDogJyArICgkaWZDbGF1c2UpICsgJyB9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgbWF0Y2ggXCJcXCcgKyAnICsgKCRpZkNsYXVzZSkgKyAnICsgXFwnXCIgc2NoZW1hXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IodkVycm9ycyk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSB2RXJyb3JzOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgfVxuICAgIG91dCArPSAnIH0gICAnO1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2l0ZW1zKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgdmFyICRlcnJzID0gJ2VycnNfXycgKyAkbHZsO1xuICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIHZhciAkaWR4ID0gJ2knICsgJGx2bCxcbiAgICAkZGF0YU54dCA9ICRpdC5kYXRhTGV2ZWwgPSBpdC5kYXRhTGV2ZWwgKyAxLFxuICAgICRuZXh0RGF0YSA9ICdkYXRhJyArICRkYXRhTnh0LFxuICAgICRjdXJyZW50QmFzZUlkID0gaXQuYmFzZUlkO1xuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7dmFyICcgKyAoJHZhbGlkKSArICc7JztcbiAgaWYgKEFycmF5LmlzQXJyYXkoJHNjaGVtYSkpIHtcbiAgICB2YXIgJGFkZGl0aW9uYWxJdGVtcyA9IGl0LnNjaGVtYS5hZGRpdGlvbmFsSXRlbXM7XG4gICAgaWYgKCRhZGRpdGlvbmFsSXRlbXMgPT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkZGF0YSkgKyAnLmxlbmd0aCA8PSAnICsgKCRzY2hlbWEubGVuZ3RoKSArICc7ICc7XG4gICAgICB2YXIgJGN1cnJFcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGg7XG4gICAgICAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2FkZGl0aW9uYWxJdGVtcyc7XG4gICAgICBvdXQgKz0gJyAgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgJztcbiAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2FkZGl0aW9uYWxJdGVtcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbGltaXQ6ICcgKyAoJHNjaGVtYS5sZW5ndGgpICsgJyB9ICc7XG4gICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIE5PVCBoYXZlIG1vcmUgdGhhbiAnICsgKCRzY2hlbWEubGVuZ3RoKSArICcgaXRlbXNcXCcgJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IGZhbHNlICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICB9XG4gICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICRlcnJTY2hlbWFQYXRoID0gJGN1cnJFcnJTY2hlbWFQYXRoO1xuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGFycjEgPSAkc2NoZW1hO1xuICAgIGlmIChhcnIxKSB7XG4gICAgICB2YXIgJHNjaCwgJGkgPSAtMSxcbiAgICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoJGkgPCBsMSkge1xuICAgICAgICAkc2NoID0gYXJyMVskaSArPSAxXTtcbiAgICAgICAgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2gpLmxlbmd0aCA+IDApIHx8ICRzY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICAgICAgIG91dCArPSAnICcgKyAoJG5leHRWYWxpZCkgKyAnID0gdHJ1ZTsgaWYgKCcgKyAoJGRhdGEpICsgJy5sZW5ndGggPiAnICsgKCRpKSArICcpIHsgJztcbiAgICAgICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAkaSArICddJztcbiAgICAgICAgICAkaXQuc2NoZW1hID0gJHNjaDtcbiAgICAgICAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoICsgJ1snICsgJGkgKyAnXSc7XG4gICAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCArICcvJyArICRpO1xuICAgICAgICAgICRpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGhFeHByKGl0LmVycm9yUGF0aCwgJGksIGl0Lm9wdHMuanNvblBvaW50ZXJzLCB0cnVlKTtcbiAgICAgICAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGk7XG4gICAgICAgICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KTtcbiAgICAgICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICAgICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoaXQudXRpbC52YXJSZXBsYWNlKCRjb2RlLCAkbmV4dERhdGEsICRwYXNzRGF0YSkpICsgJyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dERhdGEpICsgJyA9ICcgKyAoJHBhc3NEYXRhKSArICc7ICcgKyAoJGNvZGUpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICAnO1xuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiAkYWRkaXRpb25hbEl0ZW1zID09ICdvYmplY3QnICYmIChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkYWRkaXRpb25hbEl0ZW1zID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRhZGRpdGlvbmFsSXRlbXMpLmxlbmd0aCA+IDApIHx8ICRhZGRpdGlvbmFsSXRlbXMgPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkYWRkaXRpb25hbEl0ZW1zLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICAgJGl0LnNjaGVtYSA9ICRhZGRpdGlvbmFsSXRlbXM7XG4gICAgICAkaXQuc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLmFkZGl0aW9uYWxJdGVtcyc7XG4gICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2FkZGl0aW9uYWxJdGVtcyc7XG4gICAgICBvdXQgKz0gJyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IHRydWU7IGlmICgnICsgKCRkYXRhKSArICcubGVuZ3RoID4gJyArICgkc2NoZW1hLmxlbmd0aCkgKyAnKSB7ICBmb3IgKHZhciAnICsgKCRpZHgpICsgJyA9ICcgKyAoJHNjaGVtYS5sZW5ndGgpICsgJzsgJyArICgkaWR4KSArICcgPCAnICsgKCRkYXRhKSArICcubGVuZ3RoOyAnICsgKCRpZHgpICsgJysrKSB7ICc7XG4gICAgICAkaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRpZHgsIGl0Lm9wdHMuanNvblBvaW50ZXJzLCB0cnVlKTtcbiAgICAgIHZhciAkcGFzc0RhdGEgPSAkZGF0YSArICdbJyArICRpZHggKyAnXSc7XG4gICAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGlkeDtcbiAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJyArICgkY29kZSkgKyAnICc7XG4gICAgICB9XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSBicmVhazsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gfSAgJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnO1xuICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoZW1hID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2hlbWEpLmxlbmd0aCA+IDApIHx8ICRzY2hlbWEgPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoZW1hLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICRpdC5zY2hlbWEgPSAkc2NoZW1hO1xuICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGg7XG4gICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aDtcbiAgICBvdXQgKz0gJyAgZm9yICh2YXIgJyArICgkaWR4KSArICcgPSAnICsgKDApICsgJzsgJyArICgkaWR4KSArICcgPCAnICsgKCRkYXRhKSArICcubGVuZ3RoOyAnICsgKCRpZHgpICsgJysrKSB7ICc7XG4gICAgJGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAkaWR4LCBpdC5vcHRzLmpzb25Qb2ludGVycywgdHJ1ZSk7XG4gICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGlkeCArICddJztcbiAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGlkeDtcbiAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgb3V0ICs9ICcgJyArIChpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKSkgKyAnICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJyArICgkY29kZSkgKyAnICc7XG4gICAgfVxuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSBicmVhazsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSc7XG4gIH1cbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzKSArICcgaWYgKCcgKyAoJGVycnMpICsgJyA9PSBlcnJvcnMpIHsnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX19saW1pdChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGVycm9yS2V5d29yZDtcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkaXNNYXggPSAka2V5d29yZCA9PSAnbWF4aW11bScsXG4gICAgJGV4Y2x1c2l2ZUtleXdvcmQgPSAkaXNNYXggPyAnZXhjbHVzaXZlTWF4aW11bScgOiAnZXhjbHVzaXZlTWluaW11bScsXG4gICAgJHNjaGVtYUV4Y2wgPSBpdC5zY2hlbWFbJGV4Y2x1c2l2ZUtleXdvcmRdLFxuICAgICRpc0RhdGFFeGNsID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hRXhjbCAmJiAkc2NoZW1hRXhjbC4kZGF0YSxcbiAgICAkb3AgPSAkaXNNYXggPyAnPCcgOiAnPicsXG4gICAgJG5vdE9wID0gJGlzTWF4ID8gJz4nIDogJzwnLFxuICAgICRlcnJvcktleXdvcmQgPSB1bmRlZmluZWQ7XG4gIGlmICghKCRpc0RhdGEgfHwgdHlwZW9mICRzY2hlbWEgPT0gJ251bWJlcicgfHwgJHNjaGVtYSA9PT0gdW5kZWZpbmVkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigka2V5d29yZCArICcgbXVzdCBiZSBudW1iZXInKTtcbiAgfVxuICBpZiAoISgkaXNEYXRhRXhjbCB8fCAkc2NoZW1hRXhjbCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiAkc2NoZW1hRXhjbCA9PSAnbnVtYmVyJyB8fCB0eXBlb2YgJHNjaGVtYUV4Y2wgPT0gJ2Jvb2xlYW4nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigkZXhjbHVzaXZlS2V5d29yZCArICcgbXVzdCBiZSBudW1iZXIgb3IgYm9vbGVhbicpO1xuICB9XG4gIGlmICgkaXNEYXRhRXhjbCkge1xuICAgIHZhciAkc2NoZW1hVmFsdWVFeGNsID0gaXQudXRpbC5nZXREYXRhKCRzY2hlbWFFeGNsLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpLFxuICAgICAgJGV4Y2x1c2l2ZSA9ICdleGNsdXNpdmUnICsgJGx2bCxcbiAgICAgICRleGNsVHlwZSA9ICdleGNsVHlwZScgKyAkbHZsLFxuICAgICAgJGV4Y2xJc051bWJlciA9ICdleGNsSXNOdW1iZXInICsgJGx2bCxcbiAgICAgICRvcEV4cHIgPSAnb3AnICsgJGx2bCxcbiAgICAgICRvcFN0ciA9ICdcXCcgKyAnICsgJG9wRXhwciArICcgKyBcXCcnO1xuICAgIG91dCArPSAnIHZhciBzY2hlbWFFeGNsJyArICgkbHZsKSArICcgPSAnICsgKCRzY2hlbWFWYWx1ZUV4Y2wpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWVFeGNsID0gJ3NjaGVtYUV4Y2wnICsgJGx2bDtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZXhjbHVzaXZlKSArICc7IHZhciAnICsgKCRleGNsVHlwZSkgKyAnID0gdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlRXhjbCkgKyAnOyBpZiAoJyArICgkZXhjbFR5cGUpICsgJyAhPSBcXCdib29sZWFuXFwnICYmICcgKyAoJGV4Y2xUeXBlKSArICcgIT0gXFwndW5kZWZpbmVkXFwnICYmICcgKyAoJGV4Y2xUeXBlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB7ICc7XG4gICAgdmFyICRlcnJvcktleXdvcmQgPSAkZXhjbHVzaXZlS2V5d29yZDtcbiAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICdfZXhjbHVzaXZlTGltaXQnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7fSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJyArICgkZXhjbHVzaXZlS2V5d29yZCkgKyAnIHNob3VsZCBiZSBib29sZWFuXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIHZhciBfX2VyciA9IG91dDtcbiAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSBlbHNlIGlmICggJztcbiAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gICAgfVxuICAgIG91dCArPSAnICcgKyAoJGV4Y2xUeXBlKSArICcgPT0gXFwnbnVtYmVyXFwnID8gKCAoJyArICgkZXhjbHVzaXZlKSArICcgPSAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnID09PSB1bmRlZmluZWQgfHwgJyArICgkc2NoZW1hVmFsdWVFeGNsKSArICcgJyArICgkb3ApICsgJz0gJyArICgkc2NoZW1hVmFsdWUpICsgJykgPyAnICsgKCRkYXRhKSArICcgJyArICgkbm90T3ApICsgJz0gJyArICgkc2NoZW1hVmFsdWVFeGNsKSArICcgOiAnICsgKCRkYXRhKSArICcgJyArICgkbm90T3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICkgOiAoICgnICsgKCRleGNsdXNpdmUpICsgJyA9ICcgKyAoJHNjaGVtYVZhbHVlRXhjbCkgKyAnID09PSB0cnVlKSA/ICcgKyAoJGRhdGEpICsgJyAnICsgKCRub3RPcCkgKyAnPSAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnIDogJyArICgkZGF0YSkgKyAnICcgKyAoJG5vdE9wKSArICcgJyArICgkc2NoZW1hVmFsdWUpICsgJyApIHx8ICcgKyAoJGRhdGEpICsgJyAhPT0gJyArICgkZGF0YSkgKyAnKSB7IHZhciBvcCcgKyAoJGx2bCkgKyAnID0gJyArICgkZXhjbHVzaXZlKSArICcgPyBcXCcnICsgKCRvcCkgKyAnXFwnIDogXFwnJyArICgkb3ApICsgJz1cXCc7ICc7XG4gICAgaWYgKCRzY2hlbWEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgJGVycm9yS2V5d29yZCA9ICRleGNsdXNpdmVLZXl3b3JkO1xuICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hVmFsdWVFeGNsO1xuICAgICAgJGlzRGF0YSA9ICRpc0RhdGFFeGNsO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgJGV4Y2xJc051bWJlciA9IHR5cGVvZiAkc2NoZW1hRXhjbCA9PSAnbnVtYmVyJyxcbiAgICAgICRvcFN0ciA9ICRvcDtcbiAgICBpZiAoJGV4Y2xJc051bWJlciAmJiAkaXNEYXRhKSB7XG4gICAgICB2YXIgJG9wRXhwciA9ICdcXCcnICsgJG9wU3RyICsgJ1xcJyc7XG4gICAgICBvdXQgKz0gJyBpZiAoICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJyAoJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9IFxcJ251bWJlclxcJykgfHwgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnICggJyArICgkc2NoZW1hVmFsdWUpICsgJyA9PT0gdW5kZWZpbmVkIHx8ICcgKyAoJHNjaGVtYUV4Y2wpICsgJyAnICsgKCRvcCkgKyAnPSAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnID8gJyArICgkZGF0YSkgKyAnICcgKyAoJG5vdE9wKSArICc9ICcgKyAoJHNjaGVtYUV4Y2wpICsgJyA6ICcgKyAoJGRhdGEpICsgJyAnICsgKCRub3RPcCkgKyAnICcgKyAoJHNjaGVtYVZhbHVlKSArICcgKSB8fCAnICsgKCRkYXRhKSArICcgIT09ICcgKyAoJGRhdGEpICsgJykgeyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJGV4Y2xJc051bWJlciAmJiAkc2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgJGV4Y2x1c2l2ZSA9IHRydWU7XG4gICAgICAgICRlcnJvcktleXdvcmQgPSAkZXhjbHVzaXZlS2V5d29yZDtcbiAgICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWFFeGNsO1xuICAgICAgICAkbm90T3AgKz0gJz0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCRleGNsSXNOdW1iZXIpICRzY2hlbWFWYWx1ZSA9IE1hdGhbJGlzTWF4ID8gJ21pbicgOiAnbWF4J10oJHNjaGVtYUV4Y2wsICRzY2hlbWEpO1xuICAgICAgICBpZiAoJHNjaGVtYUV4Y2wgPT09ICgkZXhjbElzTnVtYmVyID8gJHNjaGVtYVZhbHVlIDogdHJ1ZSkpIHtcbiAgICAgICAgICAkZXhjbHVzaXZlID0gdHJ1ZTtcbiAgICAgICAgICAkZXJyb3JLZXl3b3JkID0gJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgICAgICAgJG5vdE9wICs9ICc9JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAkZXhjbHVzaXZlID0gZmFsc2U7XG4gICAgICAgICAgJG9wU3RyICs9ICc9JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyICRvcEV4cHIgPSAnXFwnJyArICRvcFN0ciArICdcXCcnO1xuICAgICAgb3V0ICs9ICcgaWYgKCAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAnICsgKCRkYXRhKSArICcgJyArICgkbm90T3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnIHx8ICcgKyAoJGRhdGEpICsgJyAhPT0gJyArICgkZGF0YSkgKyAnKSB7ICc7XG4gICAgfVxuICB9XG4gICRlcnJvcktleXdvcmQgPSAkZXJyb3JLZXl3b3JkIHx8ICRrZXl3b3JkO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnX2xpbWl0JykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBjb21wYXJpc29uOiAnICsgKCRvcEV4cHIpICsgJywgbGltaXQ6ICcgKyAoJHNjaGVtYVZhbHVlKSArICcsIGV4Y2x1c2l2ZTogJyArICgkZXhjbHVzaXZlKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgJyArICgkb3BTdHIpICsgJyAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYVZhbHVlKSArICdcXCcnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJyB9ICc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfX2xpbWl0SXRlbXMoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRlcnJvcktleXdvcmQ7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICBpZiAoISgkaXNEYXRhIHx8IHR5cGVvZiAkc2NoZW1hID09ICdudW1iZXInKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigka2V5d29yZCArICcgbXVzdCBiZSBudW1iZXInKTtcbiAgfVxuICB2YXIgJG9wID0gJGtleXdvcmQgPT0gJ21heEl0ZW1zJyA/ICc+JyA6ICc8JztcbiAgb3V0ICs9ICdpZiAoICc7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gIH1cbiAgb3V0ICs9ICcgJyArICgkZGF0YSkgKyAnLmxlbmd0aCAnICsgKCRvcCkgKyAnICcgKyAoJHNjaGVtYVZhbHVlKSArICcpIHsgJztcbiAgdmFyICRlcnJvcktleXdvcmQgPSAka2V5d29yZDtcbiAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ19saW1pdEl0ZW1zJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBsaW1pdDogJyArICgkc2NoZW1hVmFsdWUpICsgJyB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBOT1QgaGF2ZSAnO1xuICAgICAgaWYgKCRrZXl3b3JkID09ICdtYXhJdGVtcycpIHtcbiAgICAgICAgb3V0ICs9ICdtb3JlJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnZmV3ZXInO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgdGhhbiAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICsgXFwnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIGl0ZW1zXFwnICc7XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiAgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAndmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAgICAgICAgICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICB2YXIgX19lcnIgPSBvdXQ7XG4gIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICB9XG4gIG91dCArPSAnfSAnO1xuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX19saW1pdExlbmd0aChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGVycm9yS2V5d29yZDtcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIGlmICghKCRpc0RhdGEgfHwgdHlwZW9mICRzY2hlbWEgPT0gJ251bWJlcicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCRrZXl3b3JkICsgJyBtdXN0IGJlIG51bWJlcicpO1xuICB9XG4gIHZhciAkb3AgPSAka2V5d29yZCA9PSAnbWF4TGVuZ3RoJyA/ICc+JyA6ICc8JztcbiAgb3V0ICs9ICdpZiAoICc7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gIH1cbiAgaWYgKGl0Lm9wdHMudW5pY29kZSA9PT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRkYXRhKSArICcubGVuZ3RoICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdWNzMmxlbmd0aCgnICsgKCRkYXRhKSArICcpICc7XG4gIH1cbiAgb3V0ICs9ICcgJyArICgkb3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnKSB7ICc7XG4gIHZhciAkZXJyb3JLZXl3b3JkID0gJGtleXdvcmQ7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICdfbGltaXRMZW5ndGgnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGxpbWl0OiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIE5PVCBiZSAnO1xuICAgICAgaWYgKCRrZXl3b3JkID09ICdtYXhMZW5ndGgnKSB7XG4gICAgICAgIG91dCArPSAnbG9uZ2VyJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnc2hvcnRlcic7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB0aGFuICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ1xcJyArICcgKyAoJHNjaGVtYVZhbHVlKSArICcgKyBcXCcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgY2hhcmFjdGVyc1xcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJ30gJztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9fbGltaXRQcm9wZXJ0aWVzKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZXJyb3JLZXl3b3JkO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgaWYgKCEoJGlzRGF0YSB8fCB0eXBlb2YgJHNjaGVtYSA9PSAnbnVtYmVyJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJGtleXdvcmQgKyAnIG11c3QgYmUgbnVtYmVyJyk7XG4gIH1cbiAgdmFyICRvcCA9ICRrZXl3b3JkID09ICdtYXhQcm9wZXJ0aWVzJyA/ICc+JyA6ICc8JztcbiAgb3V0ICs9ICdpZiAoICc7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gIH1cbiAgb3V0ICs9ICcgT2JqZWN0LmtleXMoJyArICgkZGF0YSkgKyAnKS5sZW5ndGggJyArICgkb3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnKSB7ICc7XG4gIHZhciAkZXJyb3JLZXl3b3JkID0gJGtleXdvcmQ7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICdfbGltaXRQcm9wZXJ0aWVzJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBsaW1pdDogJyArICgkc2NoZW1hVmFsdWUpICsgJyB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBOT1QgaGF2ZSAnO1xuICAgICAgaWYgKCRrZXl3b3JkID09ICdtYXhQcm9wZXJ0aWVzJykge1xuICAgICAgICBvdXQgKz0gJ21vcmUnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICdmZXdlcic7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB0aGFuICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ1xcJyArICcgKyAoJHNjaGVtYVZhbHVlKSArICcgKyBcXCcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgcHJvcGVydGllc1xcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJ30gJztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9tdWx0aXBsZU9mKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICBpZiAoISgkaXNEYXRhIHx8IHR5cGVvZiAkc2NoZW1hID09ICdudW1iZXInKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigka2V5d29yZCArICcgbXVzdCBiZSBudW1iZXInKTtcbiAgfVxuICBvdXQgKz0gJ3ZhciBkaXZpc2lvbicgKyAoJGx2bCkgKyAnO2lmICgnO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiAoIHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9IFxcJ251bWJlclxcJyB8fCAnO1xuICB9XG4gIG91dCArPSAnIChkaXZpc2lvbicgKyAoJGx2bCkgKyAnID0gJyArICgkZGF0YSkgKyAnIC8gJyArICgkc2NoZW1hVmFsdWUpICsgJywgJztcbiAgaWYgKGl0Lm9wdHMubXVsdGlwbGVPZlByZWNpc2lvbikge1xuICAgIG91dCArPSAnIE1hdGguYWJzKE1hdGgucm91bmQoZGl2aXNpb24nICsgKCRsdmwpICsgJykgLSBkaXZpc2lvbicgKyAoJGx2bCkgKyAnKSA+IDFlLScgKyAoaXQub3B0cy5tdWx0aXBsZU9mUHJlY2lzaW9uKSArICcgJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyBkaXZpc2lvbicgKyAoJGx2bCkgKyAnICE9PSBwYXJzZUludChkaXZpc2lvbicgKyAoJGx2bCkgKyAnKSAnO1xuICB9XG4gIG91dCArPSAnICkgJztcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyAgKSAgJztcbiAgfVxuICBvdXQgKz0gJyApIHsgICAnO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ211bHRpcGxlT2YnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IG11bHRpcGxlT2Y6ICcgKyAoJHNjaGVtYVZhbHVlKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgbXVsdGlwbGUgb2YgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnXFwnICsgJyArICgkc2NoZW1hVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWFWYWx1ZSkgKyAnXFwnJztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6ICAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICd2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnICAgICAgICAgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICd9ICc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfbm90KGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaGVtYSA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoZW1hKS5sZW5ndGggPiAwKSB8fCAkc2NoZW1hID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaGVtYSwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAkaXQuc2NoZW1hID0gJHNjaGVtYTtcbiAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoO1xuICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGg7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczsgICc7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgJGl0LmNyZWF0ZUVycm9ycyA9IGZhbHNlO1xuICAgIHZhciAkYWxsRXJyb3JzT3B0aW9uO1xuICAgIGlmICgkaXQub3B0cy5hbGxFcnJvcnMpIHtcbiAgICAgICRhbGxFcnJvcnNPcHRpb24gPSAkaXQub3B0cy5hbGxFcnJvcnM7XG4gICAgICAkaXQub3B0cy5hbGxFcnJvcnMgPSBmYWxzZTtcbiAgICB9XG4gICAgb3V0ICs9ICcgJyArIChpdC52YWxpZGF0ZSgkaXQpKSArICcgJztcbiAgICAkaXQuY3JlYXRlRXJyb3JzID0gdHJ1ZTtcbiAgICBpZiAoJGFsbEVycm9yc09wdGlvbikgJGl0Lm9wdHMuYWxsRXJyb3JzID0gJGFsbEVycm9yc09wdGlvbjtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAgICc7XG4gICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ25vdCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHt9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgTk9UIGJlIHZhbGlkXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIHZhciBfX2VyciA9IG91dDtcbiAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSBlbHNlIHsgIGVycm9ycyA9ICcgKyAoJGVycnMpICsgJzsgaWYgKHZFcnJvcnMgIT09IG51bGwpIHsgaWYgKCcgKyAoJGVycnMpICsgJykgdkVycm9ycy5sZW5ndGggPSAnICsgKCRlcnJzKSArICc7IGVsc2UgdkVycm9ycyA9IG51bGw7IH0gJztcbiAgICBpZiAoaXQub3B0cy5hbGxFcnJvcnMpIHtcbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgIHZhciBlcnIgPSAgICc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnbm90JykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczoge30gJztcbiAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBOT1QgYmUgdmFsaWRcXCcgJztcbiAgICAgIH1cbiAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcge30gJztcbiAgICB9XG4gICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKGZhbHNlKSB7ICc7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX29uZU9mKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgdmFyICRlcnJzID0gJ2VycnNfXycgKyAkbHZsO1xuICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIHZhciAkY3VycmVudEJhc2VJZCA9ICRpdC5iYXNlSWQsXG4gICAgJHByZXZWYWxpZCA9ICdwcmV2VmFsaWQnICsgJGx2bCxcbiAgICAkcGFzc2luZ1NjaGVtYXMgPSAncGFzc2luZ1NjaGVtYXMnICsgJGx2bDtcbiAgb3V0ICs9ICd2YXIgJyArICgkZXJycykgKyAnID0gZXJyb3JzICwgJyArICgkcHJldlZhbGlkKSArICcgPSBmYWxzZSAsICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZSAsICcgKyAoJHBhc3NpbmdTY2hlbWFzKSArICcgPSBudWxsOyAnO1xuICB2YXIgJHdhc0NvbXBvc2l0ZSA9IGl0LmNvbXBvc2l0ZVJ1bGU7XG4gIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gIHZhciBhcnIxID0gJHNjaGVtYTtcbiAgaWYgKGFycjEpIHtcbiAgICB2YXIgJHNjaCwgJGkgPSAtMSxcbiAgICAgIGwxID0gYXJyMS5sZW5ndGggLSAxO1xuICAgIHdoaWxlICgkaSA8IGwxKSB7XG4gICAgICAkc2NoID0gYXJyMVskaSArPSAxXTtcbiAgICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICAgJGl0LnNjaGVtYSA9ICRzY2g7XG4gICAgICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGggKyAnWycgKyAkaSArICddJztcbiAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCArICcvJyArICRpO1xuICAgICAgICBvdXQgKz0gJyAgJyArIChpdC52YWxpZGF0ZSgkaXQpKSArICcgJztcbiAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHRWYWxpZCkgKyAnID0gdHJ1ZTsgJztcbiAgICAgIH1cbiAgICAgIGlmICgkaSkge1xuICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcgJiYgJyArICgkcHJldlZhbGlkKSArICcpIHsgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyAnICsgKCRwYXNzaW5nU2NoZW1hcykgKyAnID0gWycgKyAoJHBhc3NpbmdTY2hlbWFzKSArICcsICcgKyAoJGkpICsgJ107IH0gZWxzZSB7ICc7XG4gICAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkcHJldlZhbGlkKSArICcgPSB0cnVlOyAnICsgKCRwYXNzaW5nU2NoZW1hcykgKyAnID0gJyArICgkaSkgKyAnOyB9JztcbiAgICB9XG4gIH1cbiAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gJHdhc0NvbXBvc2l0ZTtcbiAgb3V0ICs9ICcnICsgKCRjbG9zaW5nQnJhY2VzKSArICdpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnb25lT2YnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHBhc3NpbmdTY2hlbWFzOiAnICsgKCRwYXNzaW5nU2NoZW1hcykgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIG1hdGNoIGV4YWN0bHkgb25lIHNjaGVtYSBpbiBvbmVPZlxcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICBvdXQgKz0gJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcih2RXJyb3JzKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gdkVycm9yczsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfVxuICBvdXQgKz0gJ30gZWxzZSB7ICBlcnJvcnMgPSAnICsgKCRlcnJzKSArICc7IGlmICh2RXJyb3JzICE9PSBudWxsKSB7IGlmICgnICsgKCRlcnJzKSArICcpIHZFcnJvcnMubGVuZ3RoID0gJyArICgkZXJycykgKyAnOyBlbHNlIHZFcnJvcnMgPSBudWxsOyB9JztcbiAgaWYgKGl0Lm9wdHMuYWxsRXJyb3JzKSB7XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3BhdHRlcm4oaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkcmVnZXhwID0gJGlzRGF0YSA/ICcobmV3IFJlZ0V4cCgnICsgJHNjaGVtYVZhbHVlICsgJykpJyA6IGl0LnVzZVBhdHRlcm4oJHNjaGVtYSk7XG4gIG91dCArPSAnaWYgKCAnO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnc3RyaW5nXFwnKSB8fCAnO1xuICB9XG4gIG91dCArPSAnICEnICsgKCRyZWdleHApICsgJy50ZXN0KCcgKyAoJGRhdGEpICsgJykgKSB7ICAgJztcbiAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdwYXR0ZXJuJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBwYXR0ZXJuOiAgJztcbiAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWFWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRzY2hlbWEpKTtcbiAgICB9XG4gICAgb3V0ICs9ICcgIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCInO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICsgXFwnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArIChpdC51dGlsLmVzY2FwZVF1b3Rlcygkc2NoZW1hKSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJ1wiXFwnICc7XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiAgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAndmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkc2NoZW1hKSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAgICAgICAgICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICB2YXIgX19lcnIgPSBvdXQ7XG4gIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICB9XG4gIG91dCArPSAnfSAnO1xuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3Byb3BlcnRpZXMoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRlcnJzID0gJ2VycnNfXycgKyAkbHZsO1xuICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIHZhciAka2V5ID0gJ2tleScgKyAkbHZsLFxuICAgICRpZHggPSAnaWR4JyArICRsdmwsXG4gICAgJGRhdGFOeHQgPSAkaXQuZGF0YUxldmVsID0gaXQuZGF0YUxldmVsICsgMSxcbiAgICAkbmV4dERhdGEgPSAnZGF0YScgKyAkZGF0YU54dCxcbiAgICAkZGF0YVByb3BlcnRpZXMgPSAnZGF0YVByb3BlcnRpZXMnICsgJGx2bDtcbiAgdmFyICRzY2hlbWFLZXlzID0gT2JqZWN0LmtleXMoJHNjaGVtYSB8fCB7fSkuZmlsdGVyKG5vdFByb3RvKSxcbiAgICAkcFByb3BlcnRpZXMgPSBpdC5zY2hlbWEucGF0dGVyblByb3BlcnRpZXMgfHwge30sXG4gICAgJHBQcm9wZXJ0eUtleXMgPSBPYmplY3Qua2V5cygkcFByb3BlcnRpZXMpLmZpbHRlcihub3RQcm90byksXG4gICAgJGFQcm9wZXJ0aWVzID0gaXQuc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLFxuICAgICRzb21lUHJvcGVydGllcyA9ICRzY2hlbWFLZXlzLmxlbmd0aCB8fCAkcFByb3BlcnR5S2V5cy5sZW5ndGgsXG4gICAgJG5vQWRkaXRpb25hbCA9ICRhUHJvcGVydGllcyA9PT0gZmFsc2UsXG4gICAgJGFkZGl0aW9uYWxJc1NjaGVtYSA9IHR5cGVvZiAkYVByb3BlcnRpZXMgPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJGFQcm9wZXJ0aWVzKS5sZW5ndGgsXG4gICAgJHJlbW92ZUFkZGl0aW9uYWwgPSBpdC5vcHRzLnJlbW92ZUFkZGl0aW9uYWwsXG4gICAgJGNoZWNrQWRkaXRpb25hbCA9ICRub0FkZGl0aW9uYWwgfHwgJGFkZGl0aW9uYWxJc1NjaGVtYSB8fCAkcmVtb3ZlQWRkaXRpb25hbCxcbiAgICAkb3duUHJvcGVydGllcyA9IGl0Lm9wdHMub3duUHJvcGVydGllcyxcbiAgICAkY3VycmVudEJhc2VJZCA9IGl0LmJhc2VJZDtcbiAgdmFyICRyZXF1aXJlZCA9IGl0LnNjaGVtYS5yZXF1aXJlZDtcbiAgaWYgKCRyZXF1aXJlZCAmJiAhKGl0Lm9wdHMuJGRhdGEgJiYgJHJlcXVpcmVkLiRkYXRhKSAmJiAkcmVxdWlyZWQubGVuZ3RoIDwgaXQub3B0cy5sb29wUmVxdWlyZWQpIHtcbiAgICB2YXIgJHJlcXVpcmVkSGFzaCA9IGl0LnV0aWwudG9IYXNoKCRyZXF1aXJlZCk7XG4gIH1cblxuICBmdW5jdGlvbiBub3RQcm90byhwKSB7XG4gICAgcmV0dXJuIHAgIT09ICdfX3Byb3RvX18nO1xuICB9XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczt2YXIgJyArICgkbmV4dFZhbGlkKSArICcgPSB0cnVlOyc7XG4gIGlmICgkb3duUHJvcGVydGllcykge1xuICAgIG91dCArPSAnIHZhciAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnID0gdW5kZWZpbmVkOyc7XG4gIH1cbiAgaWYgKCRjaGVja0FkZGl0aW9uYWwpIHtcbiAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgPSAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnIHx8IE9iamVjdC5rZXlzKCcgKyAoJGRhdGEpICsgJyk7IGZvciAodmFyICcgKyAoJGlkeCkgKyAnPTA7ICcgKyAoJGlkeCkgKyAnPCcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcubGVuZ3RoOyAnICsgKCRpZHgpICsgJysrKSB7IHZhciAnICsgKCRrZXkpICsgJyA9ICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICdbJyArICgkaWR4KSArICddOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyBmb3IgKHZhciAnICsgKCRrZXkpICsgJyBpbiAnICsgKCRkYXRhKSArICcpIHsgJztcbiAgICB9XG4gICAgaWYgKCRzb21lUHJvcGVydGllcykge1xuICAgICAgb3V0ICs9ICcgdmFyIGlzQWRkaXRpb25hbCcgKyAoJGx2bCkgKyAnID0gIShmYWxzZSAnO1xuICAgICAgaWYgKCRzY2hlbWFLZXlzLmxlbmd0aCkge1xuICAgICAgICBpZiAoJHNjaGVtYUtleXMubGVuZ3RoID4gOCkge1xuICAgICAgICAgIG91dCArPSAnIHx8IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJy5oYXNPd25Qcm9wZXJ0eSgnICsgKCRrZXkpICsgJykgJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgYXJyMSA9ICRzY2hlbWFLZXlzO1xuICAgICAgICAgIGlmIChhcnIxKSB7XG4gICAgICAgICAgICB2YXIgJHByb3BlcnR5S2V5LCBpMSA9IC0xLFxuICAgICAgICAgICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIHdoaWxlIChpMSA8IGwxKSB7XG4gICAgICAgICAgICAgICRwcm9wZXJ0eUtleSA9IGFycjFbaTEgKz0gMV07XG4gICAgICAgICAgICAgIG91dCArPSAnIHx8ICcgKyAoJGtleSkgKyAnID09ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkcHJvcGVydHlLZXkpKSArICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICgkcFByb3BlcnR5S2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGFycjIgPSAkcFByb3BlcnR5S2V5cztcbiAgICAgICAgaWYgKGFycjIpIHtcbiAgICAgICAgICB2YXIgJHBQcm9wZXJ0eSwgJGkgPSAtMSxcbiAgICAgICAgICAgIGwyID0gYXJyMi5sZW5ndGggLSAxO1xuICAgICAgICAgIHdoaWxlICgkaSA8IGwyKSB7XG4gICAgICAgICAgICAkcFByb3BlcnR5ID0gYXJyMlskaSArPSAxXTtcbiAgICAgICAgICAgIG91dCArPSAnIHx8ICcgKyAoaXQudXNlUGF0dGVybigkcFByb3BlcnR5KSkgKyAnLnRlc3QoJyArICgka2V5KSArICcpICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyApOyBpZiAoaXNBZGRpdGlvbmFsJyArICgkbHZsKSArICcpIHsgJztcbiAgICB9XG4gICAgaWYgKCRyZW1vdmVBZGRpdGlvbmFsID09ICdhbGwnKSB7XG4gICAgICBvdXQgKz0gJyBkZWxldGUgJyArICgkZGF0YSkgKyAnWycgKyAoJGtleSkgKyAnXTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyICRjdXJyZW50RXJyb3JQYXRoID0gaXQuZXJyb3JQYXRoO1xuICAgICAgdmFyICRhZGRpdGlvbmFsUHJvcGVydHkgPSAnXFwnICsgJyArICRrZXkgKyAnICsgXFwnJztcbiAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRrZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgIH1cbiAgICAgIGlmICgkbm9BZGRpdGlvbmFsKSB7XG4gICAgICAgIGlmICgkcmVtb3ZlQWRkaXRpb25hbCkge1xuICAgICAgICAgIG91dCArPSAnIGRlbGV0ZSAnICsgKCRkYXRhKSArICdbJyArICgka2V5KSArICddOyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnICcgKyAoJG5leHRWYWxpZCkgKyAnID0gZmFsc2U7ICc7XG4gICAgICAgICAgdmFyICRjdXJyRXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvYWRkaXRpb25hbFByb3BlcnRpZXMnO1xuICAgICAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdhZGRpdGlvbmFsUHJvcGVydGllcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgYWRkaXRpb25hbFByb3BlcnR5OiBcXCcnICsgKCRhZGRpdGlvbmFsUHJvcGVydHkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCcnO1xuICAgICAgICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhbiBpbnZhbGlkIGFkZGl0aW9uYWwgcHJvcGVydHknO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIE5PVCBoYXZlIGFkZGl0aW9uYWwgcHJvcGVydGllcyc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IGZhbHNlICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICAgICAgfVxuICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gJGN1cnJFcnJTY2hlbWFQYXRoO1xuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBicmVhazsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoJGFkZGl0aW9uYWxJc1NjaGVtYSkge1xuICAgICAgICBpZiAoJHJlbW92ZUFkZGl0aW9uYWwgPT0gJ2ZhaWxpbmcnKSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczsgICc7XG4gICAgICAgICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgICAgICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgICAgICAgJGl0LnNjaGVtYSA9ICRhUHJvcGVydGllcztcbiAgICAgICAgICAkaXQuc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLmFkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbiAgICAgICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2FkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbiAgICAgICAgICAkaXQuZXJyb3JQYXRoID0gaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5ID8gaXQuZXJyb3JQYXRoIDogaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRrZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAka2V5ICsgJ10nO1xuICAgICAgICAgICRpdC5kYXRhUGF0aEFyclskZGF0YU54dF0gPSAka2V5O1xuICAgICAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCEnICsgKCRuZXh0VmFsaWQpICsgJykgeyBlcnJvcnMgPSAnICsgKCRlcnJzKSArICc7IGlmICh2YWxpZGF0ZS5lcnJvcnMgIT09IG51bGwpIHsgaWYgKGVycm9ycykgdmFsaWRhdGUuZXJyb3JzLmxlbmd0aCA9IGVycm9yczsgZWxzZSB2YWxpZGF0ZS5lcnJvcnMgPSBudWxsOyB9IGRlbGV0ZSAnICsgKCRkYXRhKSArICdbJyArICgka2V5KSArICddOyB9ICAnO1xuICAgICAgICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9ICR3YXNDb21wb3NpdGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgJGl0LnNjaGVtYSA9ICRhUHJvcGVydGllcztcbiAgICAgICAgICAkaXQuc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLmFkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbiAgICAgICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2FkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbiAgICAgICAgICAkaXQuZXJyb3JQYXRoID0gaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5ID8gaXQuZXJyb3JQYXRoIDogaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRrZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAka2V5ICsgJ10nO1xuICAgICAgICAgICRpdC5kYXRhUGF0aEFyclskZGF0YU54dF0gPSAka2V5O1xuICAgICAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIG91dCArPSAnIGlmICghJyArICgkbmV4dFZhbGlkKSArICcpIGJyZWFrOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaXQuZXJyb3JQYXRoID0gJGN1cnJlbnRFcnJvclBhdGg7XG4gICAgfVxuICAgIGlmICgkc29tZVByb3BlcnRpZXMpIHtcbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAgJztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgfVxuICB9XG4gIHZhciAkdXNlRGVmYXVsdHMgPSBpdC5vcHRzLnVzZURlZmF1bHRzICYmICFpdC5jb21wb3NpdGVSdWxlO1xuICBpZiAoJHNjaGVtYUtleXMubGVuZ3RoKSB7XG4gICAgdmFyIGFycjMgPSAkc2NoZW1hS2V5cztcbiAgICBpZiAoYXJyMykge1xuICAgICAgdmFyICRwcm9wZXJ0eUtleSwgaTMgPSAtMSxcbiAgICAgICAgbDMgPSBhcnIzLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaTMgPCBsMykge1xuICAgICAgICAkcHJvcGVydHlLZXkgPSBhcnIzW2kzICs9IDFdO1xuICAgICAgICB2YXIgJHNjaCA9ICRzY2hlbWFbJHByb3BlcnR5S2V5XTtcbiAgICAgICAgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2gpLmxlbmd0aCA+IDApIHx8ICRzY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICAgICAgIHZhciAkcHJvcCA9IGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICRwYXNzRGF0YSA9ICRkYXRhICsgJHByb3AsXG4gICAgICAgICAgICAkaGFzRGVmYXVsdCA9ICR1c2VEZWZhdWx0cyAmJiAkc2NoLmRlZmF1bHQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAkaXQuc2NoZW1hID0gJHNjaDtcbiAgICAgICAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoICsgJHByb3A7XG4gICAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCArICcvJyArIGl0LnV0aWwuZXNjYXBlRnJhZ21lbnQoJHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAkaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoKGl0LmVycm9yUGF0aCwgJHByb3BlcnR5S2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICAgICAgJGl0LmRhdGFQYXRoQXJyWyRkYXRhTnh0XSA9IGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHByb3BlcnR5S2V5KTtcbiAgICAgICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgICAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgICAgICAgJGNvZGUgPSBpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKTtcbiAgICAgICAgICAgIHZhciAkdXNlRGF0YSA9ICRwYXNzRGF0YTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyICR1c2VEYXRhID0gJG5leHREYXRhO1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJGhhc0RlZmF1bHQpIHtcbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoJGNvZGUpICsgJyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoJHJlcXVpcmVkSGFzaCAmJiAkcmVxdWlyZWRIYXNoWyRwcm9wZXJ0eUtleV0pIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCAnICsgKCR1c2VEYXRhKSArICcgPT09IHVuZGVmaW5lZCAnO1xuICAgICAgICAgICAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG91dCArPSAnKSB7ICcgKyAoJG5leHRWYWxpZCkgKyAnID0gZmFsc2U7ICc7XG4gICAgICAgICAgICAgIHZhciAkY3VycmVudEVycm9yUGF0aCA9IGl0LmVycm9yUGF0aCxcbiAgICAgICAgICAgICAgICAkY3VyckVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCxcbiAgICAgICAgICAgICAgICAkbWlzc2luZ1Byb3BlcnR5ID0gaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aCgkY3VycmVudEVycm9yUGF0aCwgJHByb3BlcnR5S2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9yZXF1aXJlZCc7XG4gICAgICAgICAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICAgICAgICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgICAgICAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgncmVxdWlyZWQnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IG1pc3NpbmdQcm9wZXJ0eTogXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXCcgfSAnO1xuICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCcnO1xuICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJ2lzIGEgcmVxdWlyZWQgcHJvcGVydHknO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICdzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSBcXFxcXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXFxcXFwnJztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHZhciBfX2VyciA9IG91dDtcbiAgICAgICAgICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJGVyclNjaGVtYVBhdGggPSAkY3VyckVyclNjaGVtYVBhdGg7XG4gICAgICAgICAgICAgIGl0LmVycm9yUGF0aCA9ICRjdXJyZW50RXJyb3JQYXRoO1xuICAgICAgICAgICAgICBvdXQgKz0gJyB9IGVsc2UgeyAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyBpZiAoICcgKyAoJHVzZURhdGEpICsgJyA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdXQgKz0gJykgeyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IHRydWU7IH0gZWxzZSB7ICc7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJHVzZURhdGEpICsgJyAhPT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyAmJiAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdXQgKz0gJyApIHsgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcgJyArICgkY29kZSkgKyAnIH0gJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCRwUHJvcGVydHlLZXlzLmxlbmd0aCkge1xuICAgIHZhciBhcnI0ID0gJHBQcm9wZXJ0eUtleXM7XG4gICAgaWYgKGFycjQpIHtcbiAgICAgIHZhciAkcFByb3BlcnR5LCBpNCA9IC0xLFxuICAgICAgICBsNCA9IGFycjQubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlIChpNCA8IGw0KSB7XG4gICAgICAgICRwUHJvcGVydHkgPSBhcnI0W2k0ICs9IDFdO1xuICAgICAgICB2YXIgJHNjaCA9ICRwUHJvcGVydGllc1skcFByb3BlcnR5XTtcbiAgICAgICAgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2gpLmxlbmd0aCA+IDApIHx8ICRzY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICAgICAgICRpdC5zY2hlbWEgPSAkc2NoO1xuICAgICAgICAgICRpdC5zY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcucGF0dGVyblByb3BlcnRpZXMnICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgkcFByb3BlcnR5KTtcbiAgICAgICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL3BhdHRlcm5Qcm9wZXJ0aWVzLycgKyBpdC51dGlsLmVzY2FwZUZyYWdtZW50KCRwUHJvcGVydHkpO1xuICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgb3V0ICs9ICcgJyArICgkZGF0YVByb3BlcnRpZXMpICsgJyA9ICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgfHwgT2JqZWN0LmtleXMoJyArICgkZGF0YSkgKyAnKTsgZm9yICh2YXIgJyArICgkaWR4KSArICc9MDsgJyArICgkaWR4KSArICc8JyArICgkZGF0YVByb3BlcnRpZXMpICsgJy5sZW5ndGg7ICcgKyAoJGlkeCkgKyAnKyspIHsgdmFyICcgKyAoJGtleSkgKyAnID0gJyArICgkZGF0YVByb3BlcnRpZXMpICsgJ1snICsgKCRpZHgpICsgJ107ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIGZvciAodmFyICcgKyAoJGtleSkgKyAnIGluICcgKyAoJGRhdGEpICsgJykgeyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArIChpdC51c2VQYXR0ZXJuKCRwUHJvcGVydHkpKSArICcudGVzdCgnICsgKCRrZXkpICsgJykpIHsgJztcbiAgICAgICAgICAkaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRrZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAka2V5ICsgJ10nO1xuICAgICAgICAgICRpdC5kYXRhUGF0aEFyclskZGF0YU54dF0gPSAka2V5O1xuICAgICAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIG91dCArPSAnIGlmICghJyArICgkbmV4dFZhbGlkKSArICcpIGJyZWFrOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIG91dCArPSAnIGVsc2UgJyArICgkbmV4dFZhbGlkKSArICcgPSB0cnVlOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICAnO1xuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzKSArICcgaWYgKCcgKyAoJGVycnMpICsgJyA9PSBlcnJvcnMpIHsnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3Byb3BlcnR5TmFtZXMoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRlcnJzID0gJ2VycnNfXycgKyAkbHZsO1xuICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczsnO1xuICBpZiAoKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2hlbWEgPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaGVtYSkubGVuZ3RoID4gMCkgfHwgJHNjaGVtYSA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2hlbWEsIGl0LlJVTEVTLmFsbCkpKSB7XG4gICAgJGl0LnNjaGVtYSA9ICRzY2hlbWE7XG4gICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aDtcbiAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgIHZhciAka2V5ID0gJ2tleScgKyAkbHZsLFxuICAgICAgJGlkeCA9ICdpZHgnICsgJGx2bCxcbiAgICAgICRpID0gJ2knICsgJGx2bCxcbiAgICAgICRpbnZhbGlkTmFtZSA9ICdcXCcgKyAnICsgJGtleSArICcgKyBcXCcnLFxuICAgICAgJGRhdGFOeHQgPSAkaXQuZGF0YUxldmVsID0gaXQuZGF0YUxldmVsICsgMSxcbiAgICAgICRuZXh0RGF0YSA9ICdkYXRhJyArICRkYXRhTnh0LFxuICAgICAgJGRhdGFQcm9wZXJ0aWVzID0gJ2RhdGFQcm9wZXJ0aWVzJyArICRsdmwsXG4gICAgICAkb3duUHJvcGVydGllcyA9IGl0Lm9wdHMub3duUHJvcGVydGllcyxcbiAgICAgICRjdXJyZW50QmFzZUlkID0gaXQuYmFzZUlkO1xuICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgPSB1bmRlZmluZWQ7ICc7XG4gICAgfVxuICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgb3V0ICs9ICcgJyArICgkZGF0YVByb3BlcnRpZXMpICsgJyA9ICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgfHwgT2JqZWN0LmtleXMoJyArICgkZGF0YSkgKyAnKTsgZm9yICh2YXIgJyArICgkaWR4KSArICc9MDsgJyArICgkaWR4KSArICc8JyArICgkZGF0YVByb3BlcnRpZXMpICsgJy5sZW5ndGg7ICcgKyAoJGlkeCkgKyAnKyspIHsgdmFyICcgKyAoJGtleSkgKyAnID0gJyArICgkZGF0YVByb3BlcnRpZXMpICsgJ1snICsgKCRpZHgpICsgJ107ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIGZvciAodmFyICcgKyAoJGtleSkgKyAnIGluICcgKyAoJGRhdGEpICsgJykgeyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB2YXIgc3RhcnRFcnJzJyArICgkbHZsKSArICcgPSBlcnJvcnM7ICc7XG4gICAgdmFyICRwYXNzRGF0YSA9ICRrZXk7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KTtcbiAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgIG91dCArPSAnICcgKyAoaXQudXRpbC52YXJSZXBsYWNlKCRjb2RlLCAkbmV4dERhdGEsICRwYXNzRGF0YSkpICsgJyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dERhdGEpICsgJyA9ICcgKyAoJHBhc3NEYXRhKSArICc7ICcgKyAoJGNvZGUpICsgJyAnO1xuICAgIH1cbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIG91dCArPSAnIGlmICghJyArICgkbmV4dFZhbGlkKSArICcpIHsgZm9yICh2YXIgJyArICgkaSkgKyAnPXN0YXJ0RXJycycgKyAoJGx2bCkgKyAnOyAnICsgKCRpKSArICc8ZXJyb3JzOyAnICsgKCRpKSArICcrKykgeyB2RXJyb3JzWycgKyAoJGkpICsgJ10ucHJvcGVydHlOYW1lID0gJyArICgka2V5KSArICc7IH0gICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3Byb3BlcnR5TmFtZXMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHByb3BlcnR5TmFtZTogXFwnJyArICgkaW52YWxpZE5hbWUpICsgJ1xcJyB9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdwcm9wZXJ0eSBuYW1lIFxcXFxcXCcnICsgKCRpbnZhbGlkTmFtZSkgKyAnXFxcXFxcJyBpcyBpbnZhbGlkXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IodkVycm9ycyk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSB2RXJyb3JzOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBicmVhazsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSB9JztcbiAgfVxuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnICcgKyAoJGNsb3NpbmdCcmFjZXMpICsgJyBpZiAoJyArICgkZXJycykgKyAnID09IGVycm9ycykgeyc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfcmVxdWlyZWQoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgdmFyICR2U2NoZW1hID0gJ3NjaGVtYScgKyAkbHZsO1xuICBpZiAoISRpc0RhdGEpIHtcbiAgICBpZiAoJHNjaGVtYS5sZW5ndGggPCBpdC5vcHRzLmxvb3BSZXF1aXJlZCAmJiBpdC5zY2hlbWEucHJvcGVydGllcyAmJiBPYmplY3Qua2V5cyhpdC5zY2hlbWEucHJvcGVydGllcykubGVuZ3RoKSB7XG4gICAgICB2YXIgJHJlcXVpcmVkID0gW107XG4gICAgICB2YXIgYXJyMSA9ICRzY2hlbWE7XG4gICAgICBpZiAoYXJyMSkge1xuICAgICAgICB2YXIgJHByb3BlcnR5LCBpMSA9IC0xLFxuICAgICAgICAgIGwxID0gYXJyMS5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoaTEgPCBsMSkge1xuICAgICAgICAgICRwcm9wZXJ0eSA9IGFycjFbaTEgKz0gMV07XG4gICAgICAgICAgdmFyICRwcm9wZXJ0eVNjaCA9IGl0LnNjaGVtYS5wcm9wZXJ0aWVzWyRwcm9wZXJ0eV07XG4gICAgICAgICAgaWYgKCEoJHByb3BlcnR5U2NoICYmIChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkcHJvcGVydHlTY2ggPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHByb3BlcnR5U2NoKS5sZW5ndGggPiAwKSB8fCAkcHJvcGVydHlTY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkcHJvcGVydHlTY2gsIGl0LlJVTEVTLmFsbCkpKSkge1xuICAgICAgICAgICAgJHJlcXVpcmVkWyRyZXF1aXJlZC5sZW5ndGhdID0gJHByb3BlcnR5O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgJHJlcXVpcmVkID0gJHNjaGVtYTtcbiAgICB9XG4gIH1cbiAgaWYgKCRpc0RhdGEgfHwgJHJlcXVpcmVkLmxlbmd0aCkge1xuICAgIHZhciAkY3VycmVudEVycm9yUGF0aCA9IGl0LmVycm9yUGF0aCxcbiAgICAgICRsb29wUmVxdWlyZWQgPSAkaXNEYXRhIHx8ICRyZXF1aXJlZC5sZW5ndGggPj0gaXQub3B0cy5sb29wUmVxdWlyZWQsXG4gICAgICAkb3duUHJvcGVydGllcyA9IGl0Lm9wdHMub3duUHJvcGVydGllcztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgdmFyIG1pc3NpbmcnICsgKCRsdmwpICsgJzsgJztcbiAgICAgIGlmICgkbG9vcFJlcXVpcmVkKSB7XG4gICAgICAgIGlmICghJGlzRGF0YSkge1xuICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCR2U2NoZW1hKSArICcgPSB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICc7ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyICRpID0gJ2knICsgJGx2bCxcbiAgICAgICAgICAkcHJvcGVydHlQYXRoID0gJ3NjaGVtYScgKyAkbHZsICsgJ1snICsgJGkgKyAnXScsXG4gICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9ICdcXCcgKyAnICsgJHByb3BlcnR5UGF0aCArICcgKyBcXCcnO1xuICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcigkY3VycmVudEVycm9yUGF0aCwgJHByb3BlcnR5UGF0aCwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZTsgJztcbiAgICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJyBpZiAoc2NoZW1hJyArICgkbHZsKSArICcgPT09IHVuZGVmaW5lZCkgJyArICgkdmFsaWQpICsgJyA9IHRydWU7IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KHNjaGVtYScgKyAoJGx2bCkgKyAnKSkgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyBlbHNlIHsnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIGZvciAodmFyICcgKyAoJGkpICsgJyA9IDA7ICcgKyAoJGkpICsgJyA8ICcgKyAoJHZTY2hlbWEpICsgJy5sZW5ndGg7ICcgKyAoJGkpICsgJysrKSB7ICcgKyAoJHZhbGlkKSArICcgPSAnICsgKCRkYXRhKSArICdbJyArICgkdlNjaGVtYSkgKyAnWycgKyAoJGkpICsgJ11dICE9PSB1bmRlZmluZWQgJztcbiAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgb3V0ICs9ICcgJiYgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCAnICsgKCR2U2NoZW1hKSArICdbJyArICgkaSkgKyAnXSkgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJzsgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSBicmVhazsgfSAnO1xuICAgICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICAgIG91dCArPSAnICB9ICAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnICBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICAnO1xuICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJztcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIH0gZWxzZSB7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyBpZiAoICc7XG4gICAgICAgIHZhciBhcnIyID0gJHJlcXVpcmVkO1xuICAgICAgICBpZiAoYXJyMikge1xuICAgICAgICAgIHZhciAkcHJvcGVydHlLZXksICRpID0gLTEsXG4gICAgICAgICAgICBsMiA9IGFycjIubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoJGkgPCBsMikge1xuICAgICAgICAgICAgJHByb3BlcnR5S2V5ID0gYXJyMlskaSArPSAxXTtcbiAgICAgICAgICAgIGlmICgkaSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyICRwcm9wID0gaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHlLZXkpLFxuICAgICAgICAgICAgICAkdXNlRGF0YSA9ICRkYXRhICsgJHByb3A7XG4gICAgICAgICAgICBvdXQgKz0gJyAoICggJyArICgkdXNlRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcpICYmIChtaXNzaW5nJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoaXQub3B0cy5qc29uUG9pbnRlcnMgPyAkcHJvcGVydHlLZXkgOiAkcHJvcCkpICsgJykgKSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJykgeyAgJztcbiAgICAgICAgdmFyICRwcm9wZXJ0eVBhdGggPSAnbWlzc2luZycgKyAkbHZsLFxuICAgICAgICAgICRtaXNzaW5nUHJvcGVydHkgPSAnXFwnICsgJyArICRwcm9wZXJ0eVBhdGggKyAnICsgXFwnJztcbiAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgIGl0LmVycm9yUGF0aCA9IGl0Lm9wdHMuanNvblBvaW50ZXJzID8gaXQudXRpbC5nZXRQYXRoRXhwcigkY3VycmVudEVycm9yUGF0aCwgJHByb3BlcnR5UGF0aCwgdHJ1ZSkgOiAkY3VycmVudEVycm9yUGF0aCArICcgKyAnICsgJHByb3BlcnR5UGF0aDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJztcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIH0gZWxzZSB7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICgkbG9vcFJlcXVpcmVkKSB7XG4gICAgICAgIGlmICghJGlzRGF0YSkge1xuICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCR2U2NoZW1hKSArICcgPSB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICc7ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyICRpID0gJ2knICsgJGx2bCxcbiAgICAgICAgICAkcHJvcGVydHlQYXRoID0gJ3NjaGVtYScgKyAkbHZsICsgJ1snICsgJGkgKyAnXScsXG4gICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9ICdcXCcgKyAnICsgJHByb3BlcnR5UGF0aCArICcgKyBcXCcnO1xuICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcigkY3VycmVudEVycm9yUGF0aCwgJHByb3BlcnR5UGF0aCwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJHZTY2hlbWEpICsgJyAmJiAhQXJyYXkuaXNBcnJheSgnICsgKCR2U2NoZW1hKSArICcpKSB7ICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJyc7XG4gICAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJ2lzIGEgcmVxdWlyZWQgcHJvcGVydHknO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgfSBlbHNlIGlmICgnICsgKCR2U2NoZW1hKSArICcgIT09IHVuZGVmaW5lZCkgeyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIGZvciAodmFyICcgKyAoJGkpICsgJyA9IDA7ICcgKyAoJGkpICsgJyA8ICcgKyAoJHZTY2hlbWEpICsgJy5sZW5ndGg7ICcgKyAoJGkpICsgJysrKSB7IGlmICgnICsgKCRkYXRhKSArICdbJyArICgkdlNjaGVtYSkgKyAnWycgKyAoJGkpICsgJ11dID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgb3V0ICs9ICcgfHwgISBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCAnICsgKCR2U2NoZW1hKSArICdbJyArICgkaSkgKyAnXSkgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJykgeyAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJztcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyB9IH0gJztcbiAgICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJyAgfSAgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGFycjMgPSAkcmVxdWlyZWQ7XG4gICAgICAgIGlmIChhcnIzKSB7XG4gICAgICAgICAgdmFyICRwcm9wZXJ0eUtleSwgaTMgPSAtMSxcbiAgICAgICAgICAgIGwzID0gYXJyMy5sZW5ndGggLSAxO1xuICAgICAgICAgIHdoaWxlIChpMyA8IGwzKSB7XG4gICAgICAgICAgICAkcHJvcGVydHlLZXkgPSBhcnIzW2kzICs9IDFdO1xuICAgICAgICAgICAgdmFyICRwcm9wID0gaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHlLZXkpLFxuICAgICAgICAgICAgICAkbWlzc2luZ1Byb3BlcnR5ID0gaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJHVzZURhdGEgPSAkZGF0YSArICRwcm9wO1xuICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICBpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGgoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eUtleSwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCAnICsgKCR1c2VEYXRhKSArICcgPT09IHVuZGVmaW5lZCAnO1xuICAgICAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIHx8ICEgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCcgKyAoJGRhdGEpICsgJywgXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkcHJvcGVydHlLZXkpKSArICdcXCcpICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJykgeyAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgncmVxdWlyZWQnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IG1pc3NpbmdQcm9wZXJ0eTogXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXCcgfSAnO1xuICAgICAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJyc7XG4gICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICdzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSBcXFxcXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXFxcXFwnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgfSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpdC5lcnJvclBhdGggPSAkY3VycmVudEVycm9yUGF0aDtcbiAgfSBlbHNlIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgaWYgKHRydWUpIHsnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3VuaXF1ZUl0ZW1zKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIGlmICgoJHNjaGVtYSB8fCAkaXNEYXRhKSAmJiBpdC5vcHRzLnVuaXF1ZUl0ZW1zICE9PSBmYWxzZSkge1xuICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICBvdXQgKz0gJyB2YXIgJyArICgkdmFsaWQpICsgJzsgaWYgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgPT09IGZhbHNlIHx8ICcgKyAoJHNjaGVtYVZhbHVlKSArICcgPT09IHVuZGVmaW5lZCkgJyArICgkdmFsaWQpICsgJyA9IHRydWU7IGVsc2UgaWYgKHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9IFxcJ2Jvb2xlYW5cXCcpICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgZWxzZSB7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIHZhciBpID0gJyArICgkZGF0YSkgKyAnLmxlbmd0aCAsICcgKyAoJHZhbGlkKSArICcgPSB0cnVlICwgajsgaWYgKGkgPiAxKSB7ICc7XG4gICAgdmFyICRpdGVtVHlwZSA9IGl0LnNjaGVtYS5pdGVtcyAmJiBpdC5zY2hlbWEuaXRlbXMudHlwZSxcbiAgICAgICR0eXBlSXNBcnJheSA9IEFycmF5LmlzQXJyYXkoJGl0ZW1UeXBlKTtcbiAgICBpZiAoISRpdGVtVHlwZSB8fCAkaXRlbVR5cGUgPT0gJ29iamVjdCcgfHwgJGl0ZW1UeXBlID09ICdhcnJheScgfHwgKCR0eXBlSXNBcnJheSAmJiAoJGl0ZW1UeXBlLmluZGV4T2YoJ29iamVjdCcpID49IDAgfHwgJGl0ZW1UeXBlLmluZGV4T2YoJ2FycmF5JykgPj0gMCkpKSB7XG4gICAgICBvdXQgKz0gJyBvdXRlcjogZm9yICg7aS0tOykgeyBmb3IgKGogPSBpOyBqLS07KSB7IGlmIChlcXVhbCgnICsgKCRkYXRhKSArICdbaV0sICcgKyAoJGRhdGEpICsgJ1tqXSkpIHsgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyBicmVhayBvdXRlcjsgfSB9IH0gJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFyIGl0ZW1JbmRpY2VzID0ge30sIGl0ZW07IGZvciAoO2ktLTspIHsgdmFyIGl0ZW0gPSAnICsgKCRkYXRhKSArICdbaV07ICc7XG4gICAgICB2YXIgJG1ldGhvZCA9ICdjaGVja0RhdGFUeXBlJyArICgkdHlwZUlzQXJyYXkgPyAncycgOiAnJyk7XG4gICAgICBvdXQgKz0gJyBpZiAoJyArIChpdC51dGlsWyRtZXRob2RdKCRpdGVtVHlwZSwgJ2l0ZW0nLCBpdC5vcHRzLnN0cmljdE51bWJlcnMsIHRydWUpKSArICcpIGNvbnRpbnVlOyAnO1xuICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICBvdXQgKz0gJyBpZiAodHlwZW9mIGl0ZW0gPT0gXFwnc3RyaW5nXFwnKSBpdGVtID0gXFwnXCJcXCcgKyBpdGVtOyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgaWYgKHR5cGVvZiBpdGVtSW5kaWNlc1tpdGVtXSA9PSBcXCdudW1iZXJcXCcpIHsgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyBqID0gaXRlbUluZGljZXNbaXRlbV07IGJyZWFrOyB9IGl0ZW1JbmRpY2VzW2l0ZW1dID0gaTsgfSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgIG91dCArPSAnICB9ICAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICAnO1xuICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCd1bmlxdWVJdGVtcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgaTogaSwgajogaiB9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgTk9UIGhhdmUgZHVwbGljYXRlIGl0ZW1zIChpdGVtcyAjIyBcXCcgKyBqICsgXFwnIGFuZCBcXCcgKyBpICsgXFwnIGFyZSBpZGVudGljYWwpXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiAgJztcbiAgICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyAgICAgICAgICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vL2FsbCByZXF1aXJlcyBtdXN0IGJlIGV4cGxpY2l0IGJlY2F1c2UgYnJvd3NlcmlmeSB3b24ndCB3b3JrIHdpdGggZHluYW1pYyByZXF1aXJlc1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gICckcmVmJzogcmVxdWlyZSgnLi9yZWYnKSxcbiAgYWxsT2Y6IHJlcXVpcmUoJy4vYWxsT2YnKSxcbiAgYW55T2Y6IHJlcXVpcmUoJy4vYW55T2YnKSxcbiAgJyRjb21tZW50JzogcmVxdWlyZSgnLi9jb21tZW50JyksXG4gIGNvbnN0OiByZXF1aXJlKCcuL2NvbnN0JyksXG4gIGNvbnRhaW5zOiByZXF1aXJlKCcuL2NvbnRhaW5zJyksXG4gIGRlcGVuZGVuY2llczogcmVxdWlyZSgnLi9kZXBlbmRlbmNpZXMnKSxcbiAgJ2VudW0nOiByZXF1aXJlKCcuL2VudW0nKSxcbiAgZm9ybWF0OiByZXF1aXJlKCcuL2Zvcm1hdCcpLFxuICAnaWYnOiByZXF1aXJlKCcuL2lmJyksXG4gIGl0ZW1zOiByZXF1aXJlKCcuL2l0ZW1zJyksXG4gIG1heGltdW06IHJlcXVpcmUoJy4vX2xpbWl0JyksXG4gIG1pbmltdW06IHJlcXVpcmUoJy4vX2xpbWl0JyksXG4gIG1heEl0ZW1zOiByZXF1aXJlKCcuL19saW1pdEl0ZW1zJyksXG4gIG1pbkl0ZW1zOiByZXF1aXJlKCcuL19saW1pdEl0ZW1zJyksXG4gIG1heExlbmd0aDogcmVxdWlyZSgnLi9fbGltaXRMZW5ndGgnKSxcbiAgbWluTGVuZ3RoOiByZXF1aXJlKCcuL19saW1pdExlbmd0aCcpLFxuICBtYXhQcm9wZXJ0aWVzOiByZXF1aXJlKCcuL19saW1pdFByb3BlcnRpZXMnKSxcbiAgbWluUHJvcGVydGllczogcmVxdWlyZSgnLi9fbGltaXRQcm9wZXJ0aWVzJyksXG4gIG11bHRpcGxlT2Y6IHJlcXVpcmUoJy4vbXVsdGlwbGVPZicpLFxuICBub3Q6IHJlcXVpcmUoJy4vbm90JyksXG4gIG9uZU9mOiByZXF1aXJlKCcuL29uZU9mJyksXG4gIHBhdHRlcm46IHJlcXVpcmUoJy4vcGF0dGVybicpLFxuICBwcm9wZXJ0aWVzOiByZXF1aXJlKCcuL3Byb3BlcnRpZXMnKSxcbiAgcHJvcGVydHlOYW1lczogcmVxdWlyZSgnLi9wcm9wZXJ0eU5hbWVzJyksXG4gIHJlcXVpcmVkOiByZXF1aXJlKCcuL3JlcXVpcmVkJyksXG4gIHVuaXF1ZUl0ZW1zOiByZXF1aXJlKCcuL3VuaXF1ZUl0ZW1zJyksXG4gIHZhbGlkYXRlOiByZXF1aXJlKCcuL3ZhbGlkYXRlJylcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBydWxlTW9kdWxlcyA9IHJlcXVpcmUoJy4uL2RvdGpzJylcbiAgLCB0b0hhc2ggPSByZXF1aXJlKCcuL3V0aWwnKS50b0hhc2g7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcnVsZXMoKSB7XG4gIHZhciBSVUxFUyA9IFtcbiAgICB7IHR5cGU6ICdudW1iZXInLFxuICAgICAgcnVsZXM6IFsgeyAnbWF4aW11bSc6IFsnZXhjbHVzaXZlTWF4aW11bSddIH0sXG4gICAgICAgICAgICAgICB7ICdtaW5pbXVtJzogWydleGNsdXNpdmVNaW5pbXVtJ10gfSwgJ211bHRpcGxlT2YnLCAnZm9ybWF0J10gfSxcbiAgICB7IHR5cGU6ICdzdHJpbmcnLFxuICAgICAgcnVsZXM6IFsgJ21heExlbmd0aCcsICdtaW5MZW5ndGgnLCAncGF0dGVybicsICdmb3JtYXQnIF0gfSxcbiAgICB7IHR5cGU6ICdhcnJheScsXG4gICAgICBydWxlczogWyAnbWF4SXRlbXMnLCAnbWluSXRlbXMnLCAnaXRlbXMnLCAnY29udGFpbnMnLCAndW5pcXVlSXRlbXMnIF0gfSxcbiAgICB7IHR5cGU6ICdvYmplY3QnLFxuICAgICAgcnVsZXM6IFsgJ21heFByb3BlcnRpZXMnLCAnbWluUHJvcGVydGllcycsICdyZXF1aXJlZCcsICdkZXBlbmRlbmNpZXMnLCAncHJvcGVydHlOYW1lcycsXG4gICAgICAgICAgICAgICB7ICdwcm9wZXJ0aWVzJzogWydhZGRpdGlvbmFsUHJvcGVydGllcycsICdwYXR0ZXJuUHJvcGVydGllcyddIH0gXSB9LFxuICAgIHsgcnVsZXM6IFsgJyRyZWYnLCAnY29uc3QnLCAnZW51bScsICdub3QnLCAnYW55T2YnLCAnb25lT2YnLCAnYWxsT2YnLCAnaWYnIF0gfVxuICBdO1xuXG4gIHZhciBBTEwgPSBbICd0eXBlJywgJyRjb21tZW50JyBdO1xuICB2YXIgS0VZV09SRFMgPSBbXG4gICAgJyRzY2hlbWEnLCAnJGlkJywgJ2lkJywgJyRkYXRhJywgJyRhc3luYycsICd0aXRsZScsXG4gICAgJ2Rlc2NyaXB0aW9uJywgJ2RlZmF1bHQnLCAnZGVmaW5pdGlvbnMnLFxuICAgICdleGFtcGxlcycsICdyZWFkT25seScsICd3cml0ZU9ubHknLFxuICAgICdjb250ZW50TWVkaWFUeXBlJywgJ2NvbnRlbnRFbmNvZGluZycsXG4gICAgJ2FkZGl0aW9uYWxJdGVtcycsICd0aGVuJywgJ2Vsc2UnXG4gIF07XG4gIHZhciBUWVBFUyA9IFsgJ251bWJlcicsICdpbnRlZ2VyJywgJ3N0cmluZycsICdhcnJheScsICdvYmplY3QnLCAnYm9vbGVhbicsICdudWxsJyBdO1xuICBSVUxFUy5hbGwgPSB0b0hhc2goQUxMKTtcbiAgUlVMRVMudHlwZXMgPSB0b0hhc2goVFlQRVMpO1xuXG4gIFJVTEVTLmZvckVhY2goZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgZ3JvdXAucnVsZXMgPSBncm91cC5ydWxlcy5tYXAoZnVuY3Rpb24gKGtleXdvcmQpIHtcbiAgICAgIHZhciBpbXBsS2V5d29yZHM7XG4gICAgICBpZiAodHlwZW9mIGtleXdvcmQgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdmFyIGtleSA9IE9iamVjdC5rZXlzKGtleXdvcmQpWzBdO1xuICAgICAgICBpbXBsS2V5d29yZHMgPSBrZXl3b3JkW2tleV07XG4gICAgICAgIGtleXdvcmQgPSBrZXk7XG4gICAgICAgIGltcGxLZXl3b3Jkcy5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgQUxMLnB1c2goayk7XG4gICAgICAgICAgUlVMRVMuYWxsW2tdID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBBTEwucHVzaChrZXl3b3JkKTtcbiAgICAgIHZhciBydWxlID0gUlVMRVMuYWxsW2tleXdvcmRdID0ge1xuICAgICAgICBrZXl3b3JkOiBrZXl3b3JkLFxuICAgICAgICBjb2RlOiBydWxlTW9kdWxlc1trZXl3b3JkXSxcbiAgICAgICAgaW1wbGVtZW50czogaW1wbEtleXdvcmRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJ1bGU7XG4gICAgfSk7XG5cbiAgICBSVUxFUy5hbGwuJGNvbW1lbnQgPSB7XG4gICAgICBrZXl3b3JkOiAnJGNvbW1lbnQnLFxuICAgICAgY29kZTogcnVsZU1vZHVsZXMuJGNvbW1lbnRcbiAgICB9O1xuXG4gICAgaWYgKGdyb3VwLnR5cGUpIFJVTEVTLnR5cGVzW2dyb3VwLnR5cGVdID0gZ3JvdXA7XG4gIH0pO1xuXG4gIFJVTEVTLmtleXdvcmRzID0gdG9IYXNoKEFMTC5jb25jYXQoS0VZV09SRFMpKTtcbiAgUlVMRVMuY3VzdG9tID0ge307XG5cbiAgcmV0dXJuIFJVTEVTO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEtFWVdPUkRTID0gW1xuICAnbXVsdGlwbGVPZicsXG4gICdtYXhpbXVtJyxcbiAgJ2V4Y2x1c2l2ZU1heGltdW0nLFxuICAnbWluaW11bScsXG4gICdleGNsdXNpdmVNaW5pbXVtJyxcbiAgJ21heExlbmd0aCcsXG4gICdtaW5MZW5ndGgnLFxuICAncGF0dGVybicsXG4gICdhZGRpdGlvbmFsSXRlbXMnLFxuICAnbWF4SXRlbXMnLFxuICAnbWluSXRlbXMnLFxuICAndW5pcXVlSXRlbXMnLFxuICAnbWF4UHJvcGVydGllcycsXG4gICdtaW5Qcm9wZXJ0aWVzJyxcbiAgJ3JlcXVpcmVkJyxcbiAgJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJyxcbiAgJ2VudW0nLFxuICAnZm9ybWF0JyxcbiAgJ2NvbnN0J1xuXTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobWV0YVNjaGVtYSwga2V5d29yZHNKc29uUG9pbnRlcnMpIHtcbiAgZm9yICh2YXIgaT0wOyBpPGtleXdvcmRzSnNvblBvaW50ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgbWV0YVNjaGVtYSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobWV0YVNjaGVtYSkpO1xuICAgIHZhciBzZWdtZW50cyA9IGtleXdvcmRzSnNvblBvaW50ZXJzW2ldLnNwbGl0KCcvJyk7XG4gICAgdmFyIGtleXdvcmRzID0gbWV0YVNjaGVtYTtcbiAgICB2YXIgajtcbiAgICBmb3IgKGo9MTsgajxzZWdtZW50cy5sZW5ndGg7IGorKylcbiAgICAgIGtleXdvcmRzID0ga2V5d29yZHNbc2VnbWVudHNbal1dO1xuXG4gICAgZm9yIChqPTA7IGo8S0VZV09SRFMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBrZXkgPSBLRVlXT1JEU1tqXTtcbiAgICAgIHZhciBzY2hlbWEgPSBrZXl3b3Jkc1trZXldO1xuICAgICAgaWYgKHNjaGVtYSkge1xuICAgICAgICBrZXl3b3Jkc1trZXldID0ge1xuICAgICAgICAgIGFueU9mOiBbXG4gICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICB7ICRyZWY6ICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWp2LXZhbGlkYXRvci9hanYvbWFzdGVyL2xpYi9yZWZzL2RhdGEuanNvbiMnIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1ldGFTY2hlbWE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgTWlzc2luZ1JlZkVycm9yID0gcmVxdWlyZSgnLi9lcnJvcl9jbGFzc2VzJykuTWlzc2luZ1JlZjtcblxubW9kdWxlLmV4cG9ydHMgPSBjb21waWxlQXN5bmM7XG5cblxuLyoqXG4gKiBDcmVhdGVzIHZhbGlkYXRpbmcgZnVuY3Rpb24gZm9yIHBhc3NlZCBzY2hlbWEgd2l0aCBhc3luY2hyb25vdXMgbG9hZGluZyBvZiBtaXNzaW5nIHNjaGVtYXMuXG4gKiBgbG9hZFNjaGVtYWAgb3B0aW9uIHNob3VsZCBiZSBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBzY2hlbWEgdXJpIGFuZCByZXR1cm5zIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzY2hlbWEuXG4gKiBAdGhpcyAgQWp2XG4gKiBAcGFyYW0ge09iamVjdH0gICBzY2hlbWEgc2NoZW1hIG9iamVjdFxuICogQHBhcmFtIHtCb29sZWFufSAgbWV0YSBvcHRpb25hbCB0cnVlIHRvIGNvbXBpbGUgbWV0YS1zY2hlbWE7IHRoaXMgcGFyYW1ldGVyIGNhbiBiZSBza2lwcGVkXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBhbiBvcHRpb25hbCBub2RlLXN0eWxlIGNhbGxiYWNrLCBpdCBpcyBjYWxsZWQgd2l0aCAyIHBhcmFtZXRlcnM6IGVycm9yIChvciBudWxsKSBhbmQgdmFsaWRhdGluZyBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGEgdmFsaWRhdGluZyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY29tcGlsZUFzeW5jKHNjaGVtYSwgbWV0YSwgY2FsbGJhY2spIHtcbiAgLyogZXNsaW50IG5vLXNoYWRvdzogMCAqL1xuICAvKiBnbG9iYWwgUHJvbWlzZSAqL1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gIHZhciBzZWxmID0gdGhpcztcbiAgaWYgKHR5cGVvZiB0aGlzLl9vcHRzLmxvYWRTY2hlbWEgIT0gJ2Z1bmN0aW9uJylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMubG9hZFNjaGVtYSBzaG91bGQgYmUgYSBmdW5jdGlvbicpO1xuXG4gIGlmICh0eXBlb2YgbWV0YSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBtZXRhO1xuICAgIG1ldGEgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB2YXIgcCA9IGxvYWRNZXRhU2NoZW1hT2Yoc2NoZW1hKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2NoZW1hT2JqID0gc2VsZi5fYWRkU2NoZW1hKHNjaGVtYSwgdW5kZWZpbmVkLCBtZXRhKTtcbiAgICByZXR1cm4gc2NoZW1hT2JqLnZhbGlkYXRlIHx8IF9jb21waWxlQXN5bmMoc2NoZW1hT2JqKTtcbiAgfSk7XG5cbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgcC50aGVuKFxuICAgICAgZnVuY3Rpb24odikgeyBjYWxsYmFjayhudWxsLCB2KTsgfSxcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBwO1xuXG5cbiAgZnVuY3Rpb24gbG9hZE1ldGFTY2hlbWFPZihzY2gpIHtcbiAgICB2YXIgJHNjaGVtYSA9IHNjaC4kc2NoZW1hO1xuICAgIHJldHVybiAkc2NoZW1hICYmICFzZWxmLmdldFNjaGVtYSgkc2NoZW1hKVxuICAgICAgICAgICAgPyBjb21waWxlQXN5bmMuY2FsbChzZWxmLCB7ICRyZWY6ICRzY2hlbWEgfSwgdHJ1ZSlcbiAgICAgICAgICAgIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuXG4gIGZ1bmN0aW9uIF9jb21waWxlQXN5bmMoc2NoZW1hT2JqKSB7XG4gICAgdHJ5IHsgcmV0dXJuIHNlbGYuX2NvbXBpbGUoc2NoZW1hT2JqKTsgfVxuICAgIGNhdGNoKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgTWlzc2luZ1JlZkVycm9yKSByZXR1cm4gbG9hZE1pc3NpbmdTY2hlbWEoZSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbG9hZE1pc3NpbmdTY2hlbWEoZSkge1xuICAgICAgdmFyIHJlZiA9IGUubWlzc2luZ1NjaGVtYTtcbiAgICAgIGlmIChhZGRlZChyZWYpKSB0aHJvdyBuZXcgRXJyb3IoJ1NjaGVtYSAnICsgcmVmICsgJyBpcyBsb2FkZWQgYnV0ICcgKyBlLm1pc3NpbmdSZWYgKyAnIGNhbm5vdCBiZSByZXNvbHZlZCcpO1xuXG4gICAgICB2YXIgc2NoZW1hUHJvbWlzZSA9IHNlbGYuX2xvYWRpbmdTY2hlbWFzW3JlZl07XG4gICAgICBpZiAoIXNjaGVtYVByb21pc2UpIHtcbiAgICAgICAgc2NoZW1hUHJvbWlzZSA9IHNlbGYuX2xvYWRpbmdTY2hlbWFzW3JlZl0gPSBzZWxmLl9vcHRzLmxvYWRTY2hlbWEocmVmKTtcbiAgICAgICAgc2NoZW1hUHJvbWlzZS50aGVuKHJlbW92ZVByb21pc2UsIHJlbW92ZVByb21pc2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2NoZW1hUHJvbWlzZS50aGVuKGZ1bmN0aW9uIChzY2gpIHtcbiAgICAgICAgaWYgKCFhZGRlZChyZWYpKSB7XG4gICAgICAgICAgcmV0dXJuIGxvYWRNZXRhU2NoZW1hT2Yoc2NoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghYWRkZWQocmVmKSkgc2VsZi5hZGRTY2hlbWEoc2NoLCByZWYsIHVuZGVmaW5lZCwgbWV0YSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfY29tcGlsZUFzeW5jKHNjaGVtYU9iaik7XG4gICAgICB9KTtcblxuICAgICAgZnVuY3Rpb24gcmVtb3ZlUHJvbWlzZSgpIHtcbiAgICAgICAgZGVsZXRlIHNlbGYuX2xvYWRpbmdTY2hlbWFzW3JlZl07XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGFkZGVkKHJlZikge1xuICAgICAgICByZXR1cm4gc2VsZi5fcmVmc1tyZWZdIHx8IHNlbGYuX3NjaGVtYXNbcmVmXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfY3VzdG9tKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZXJyb3JLZXl3b3JkO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkcnVsZSA9IHRoaXMsXG4gICAgJGRlZmluaXRpb24gPSAnZGVmaW5pdGlvbicgKyAkbHZsLFxuICAgICRyRGVmID0gJHJ1bGUuZGVmaW5pdGlvbixcbiAgICAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICB2YXIgJGNvbXBpbGUsICRpbmxpbmUsICRtYWNybywgJHJ1bGVWYWxpZGF0ZSwgJHZhbGlkYXRlQ29kZTtcbiAgaWYgKCRpc0RhdGEgJiYgJHJEZWYuJGRhdGEpIHtcbiAgICAkdmFsaWRhdGVDb2RlID0gJ2tleXdvcmRWYWxpZGF0ZScgKyAkbHZsO1xuICAgIHZhciAkdmFsaWRhdGVTY2hlbWEgPSAkckRlZi52YWxpZGF0ZVNjaGVtYTtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZGVmaW5pdGlvbikgKyAnID0gUlVMRVMuY3VzdG9tW1xcJycgKyAoJGtleXdvcmQpICsgJ1xcJ10uZGVmaW5pdGlvbjsgdmFyICcgKyAoJHZhbGlkYXRlQ29kZSkgKyAnID0gJyArICgkZGVmaW5pdGlvbikgKyAnLnZhbGlkYXRlOyc7XG4gIH0gZWxzZSB7XG4gICAgJHJ1bGVWYWxpZGF0ZSA9IGl0LnVzZUN1c3RvbVJ1bGUoJHJ1bGUsICRzY2hlbWEsIGl0LnNjaGVtYSwgaXQpO1xuICAgIGlmICghJHJ1bGVWYWxpZGF0ZSkgcmV0dXJuO1xuICAgICRzY2hlbWFWYWx1ZSA9ICd2YWxpZGF0ZS5zY2hlbWEnICsgJHNjaGVtYVBhdGg7XG4gICAgJHZhbGlkYXRlQ29kZSA9ICRydWxlVmFsaWRhdGUuY29kZTtcbiAgICAkY29tcGlsZSA9ICRyRGVmLmNvbXBpbGU7XG4gICAgJGlubGluZSA9ICRyRGVmLmlubGluZTtcbiAgICAkbWFjcm8gPSAkckRlZi5tYWNybztcbiAgfVxuICB2YXIgJHJ1bGVFcnJzID0gJHZhbGlkYXRlQ29kZSArICcuZXJyb3JzJyxcbiAgICAkaSA9ICdpJyArICRsdmwsXG4gICAgJHJ1bGVFcnIgPSAncnVsZUVycicgKyAkbHZsLFxuICAgICRhc3luY0tleXdvcmQgPSAkckRlZi5hc3luYztcbiAgaWYgKCRhc3luY0tleXdvcmQgJiYgIWl0LmFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoJ2FzeW5jIGtleXdvcmQgaW4gc3luYyBzY2hlbWEnKTtcbiAgaWYgKCEoJGlubGluZSB8fCAkbWFjcm8pKSB7XG4gICAgb3V0ICs9ICcnICsgKCRydWxlRXJycykgKyAnID0gbnVsbDsnO1xuICB9XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczt2YXIgJyArICgkdmFsaWQpICsgJzsnO1xuICBpZiAoJGlzRGF0YSAmJiAkckRlZi4kZGF0YSkge1xuICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICBvdXQgKz0gJyBpZiAoJyArICgkc2NoZW1hVmFsdWUpICsgJyA9PT0gdW5kZWZpbmVkKSB7ICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyB9IGVsc2UgeyAnO1xuICAgIGlmICgkdmFsaWRhdGVTY2hlbWEpIHtcbiAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSAnICsgKCRkZWZpbml0aW9uKSArICcudmFsaWRhdGVTY2hlbWEoJyArICgkc2NoZW1hVmFsdWUpICsgJyk7IGlmICgnICsgKCR2YWxpZCkgKyAnKSB7ICc7XG4gICAgfVxuICB9XG4gIGlmICgkaW5saW5lKSB7XG4gICAgaWYgKCRyRGVmLnN0YXRlbWVudHMpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJHJ1bGVWYWxpZGF0ZS52YWxpZGF0ZSkgKyAnICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSAnICsgKCRydWxlVmFsaWRhdGUudmFsaWRhdGUpICsgJzsgJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoJG1hY3JvKSB7XG4gICAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gICAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICAgJGl0LmxldmVsKys7XG4gICAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICAgICRpdC5zY2hlbWEgPSAkcnVsZVZhbGlkYXRlLnZhbGlkYXRlO1xuICAgICRpdC5zY2hlbWFQYXRoID0gJyc7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KS5yZXBsYWNlKC92YWxpZGF0ZVxcLnNjaGVtYS9nLCAkdmFsaWRhdGVDb2RlKTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIG91dCArPSAnICcgKyAoJGNvZGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICBvdXQgPSAnJztcbiAgICBvdXQgKz0gJyAgJyArICgkdmFsaWRhdGVDb2RlKSArICcuY2FsbCggJztcbiAgICBpZiAoaXQub3B0cy5wYXNzQ29udGV4dCkge1xuICAgICAgb3V0ICs9ICd0aGlzJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICdzZWxmJztcbiAgICB9XG4gICAgaWYgKCRjb21waWxlIHx8ICRyRGVmLnNjaGVtYSA9PT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgJyArICgkZGF0YSkgKyAnICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICwgJyArICgkc2NoZW1hVmFsdWUpICsgJyAsICcgKyAoJGRhdGEpICsgJyAsIHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnICwgKGRhdGFQYXRoIHx8IFxcJ1xcJyknO1xuICAgIGlmIChpdC5lcnJvclBhdGggIT0gJ1wiXCInKSB7XG4gICAgICBvdXQgKz0gJyArICcgKyAoaXQuZXJyb3JQYXRoKTtcbiAgICB9XG4gICAgdmFyICRwYXJlbnREYXRhID0gJGRhdGFMdmwgPyAnZGF0YScgKyAoKCRkYXRhTHZsIC0gMSkgfHwgJycpIDogJ3BhcmVudERhdGEnLFxuICAgICAgJHBhcmVudERhdGFQcm9wZXJ0eSA9ICRkYXRhTHZsID8gaXQuZGF0YVBhdGhBcnJbJGRhdGFMdmxdIDogJ3BhcmVudERhdGFQcm9wZXJ0eSc7XG4gICAgb3V0ICs9ICcgLCAnICsgKCRwYXJlbnREYXRhKSArICcgLCAnICsgKCRwYXJlbnREYXRhUHJvcGVydHkpICsgJyAsIHJvb3REYXRhICkgICc7XG4gICAgdmFyIGRlZl9jYWxsUnVsZVZhbGlkYXRlID0gb3V0O1xuICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgaWYgKCRyRGVmLmVycm9ycyA9PT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSAnO1xuICAgICAgaWYgKCRhc3luY0tleXdvcmQpIHtcbiAgICAgICAgb3V0ICs9ICdhd2FpdCAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcnICsgKGRlZl9jYWxsUnVsZVZhbGlkYXRlKSArICc7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICgkYXN5bmNLZXl3b3JkKSB7XG4gICAgICAgICRydWxlRXJycyA9ICdjdXN0b21FcnJvcnMnICsgJGx2bDtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJHJ1bGVFcnJzKSArICcgPSBudWxsOyB0cnkgeyAnICsgKCR2YWxpZCkgKyAnID0gYXdhaXQgJyArIChkZWZfY2FsbFJ1bGVWYWxpZGF0ZSkgKyAnOyB9IGNhdGNoIChlKSB7ICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgaWYgKGUgaW5zdGFuY2VvZiBWYWxpZGF0aW9uRXJyb3IpICcgKyAoJHJ1bGVFcnJzKSArICcgPSBlLmVycm9yczsgZWxzZSB0aHJvdyBlOyB9ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyAnICsgKCRydWxlRXJycykgKyAnID0gbnVsbDsgJyArICgkdmFsaWQpICsgJyA9ICcgKyAoZGVmX2NhbGxSdWxlVmFsaWRhdGUpICsgJzsgJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCRyRGVmLm1vZGlmeWluZykge1xuICAgIG91dCArPSAnIGlmICgnICsgKCRwYXJlbnREYXRhKSArICcpICcgKyAoJGRhdGEpICsgJyA9ICcgKyAoJHBhcmVudERhdGEpICsgJ1snICsgKCRwYXJlbnREYXRhUHJvcGVydHkpICsgJ107JztcbiAgfVxuICBvdXQgKz0gJycgKyAoJGNsb3NpbmdCcmFjZXMpO1xuICBpZiAoJHJEZWYudmFsaWQpIHtcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgaWYgKCAnO1xuICAgIGlmICgkckRlZi52YWxpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdXQgKz0gJyAhJztcbiAgICAgIGlmICgkbWFjcm8pIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRuZXh0VmFsaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCR2YWxpZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICcgKyAoISRyRGVmLnZhbGlkKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcpIHsgJztcbiAgICAkZXJyb3JLZXl3b3JkID0gJHJ1bGUua2V5d29yZDtcbiAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgb3V0ID0gJyc7XG4gICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnY3VzdG9tJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBrZXl3b3JkOiBcXCcnICsgKCRydWxlLmtleXdvcmQpICsgJ1xcJyB9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgcGFzcyBcIicgKyAoJHJ1bGUua2V5d29yZCkgKyAnXCIga2V5d29yZCB2YWxpZGF0aW9uXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIHZhciBfX2VyciA9IG91dDtcbiAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICB9XG4gICAgdmFyIGRlZl9jdXN0b21FcnJvciA9IG91dDtcbiAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgIGlmICgkaW5saW5lKSB7XG4gICAgICBpZiAoJHJEZWYuZXJyb3JzKSB7XG4gICAgICAgIGlmICgkckRlZi5lcnJvcnMgIT0gJ2Z1bGwnKSB7XG4gICAgICAgICAgb3V0ICs9ICcgIGZvciAodmFyICcgKyAoJGkpICsgJz0nICsgKCRlcnJzKSArICc7ICcgKyAoJGkpICsgJzxlcnJvcnM7ICcgKyAoJGkpICsgJysrKSB7IHZhciAnICsgKCRydWxlRXJyKSArICcgPSB2RXJyb3JzWycgKyAoJGkpICsgJ107IGlmICgnICsgKCRydWxlRXJyKSArICcuZGF0YVBhdGggPT09IHVuZGVmaW5lZCkgJyArICgkcnVsZUVycikgKyAnLmRhdGFQYXRoID0gKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnOyBpZiAoJyArICgkcnVsZUVycikgKyAnLnNjaGVtYVBhdGggPT09IHVuZGVmaW5lZCkgeyAnICsgKCRydWxlRXJyKSArICcuc2NoZW1hUGF0aCA9IFwiJyArICgkZXJyU2NoZW1hUGF0aCkgKyAnXCI7IH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKCRydWxlRXJyKSArICcuc2NoZW1hID0gJyArICgkc2NoZW1hVmFsdWUpICsgJzsgJyArICgkcnVsZUVycikgKyAnLmRhdGEgPSAnICsgKCRkYXRhKSArICc7ICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCRyRGVmLmVycm9ycyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyAnICsgKGRlZl9jdXN0b21FcnJvcikgKyAnICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJGVycnMpICsgJyA9PSBlcnJvcnMpIHsgJyArIChkZWZfY3VzdG9tRXJyb3IpICsgJyB9IGVsc2UgeyAgZm9yICh2YXIgJyArICgkaSkgKyAnPScgKyAoJGVycnMpICsgJzsgJyArICgkaSkgKyAnPGVycm9yczsgJyArICgkaSkgKyAnKyspIHsgdmFyICcgKyAoJHJ1bGVFcnIpICsgJyA9IHZFcnJvcnNbJyArICgkaSkgKyAnXTsgaWYgKCcgKyAoJHJ1bGVFcnIpICsgJy5kYXRhUGF0aCA9PT0gdW5kZWZpbmVkKSAnICsgKCRydWxlRXJyKSArICcuZGF0YVBhdGggPSAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICc7IGlmICgnICsgKCRydWxlRXJyKSArICcuc2NoZW1hUGF0aCA9PT0gdW5kZWZpbmVkKSB7ICcgKyAoJHJ1bGVFcnIpICsgJy5zY2hlbWFQYXRoID0gXCInICsgKCRlcnJTY2hlbWFQYXRoKSArICdcIjsgfSAnO1xuICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoJHJ1bGVFcnIpICsgJy5zY2hlbWEgPSAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnOyAnICsgKCRydWxlRXJyKSArICcuZGF0YSA9ICcgKyAoJGRhdGEpICsgJzsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSB9ICc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCRtYWNybykge1xuICAgICAgb3V0ICs9ICcgICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ2N1c3RvbScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsga2V5d29yZDogXFwnJyArICgkcnVsZS5rZXl3b3JkKSArICdcXCcgfSAnO1xuICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBwYXNzIFwiJyArICgkcnVsZS5rZXl3b3JkKSArICdcIiBrZXl3b3JkIHZhbGlkYXRpb25cXCcgJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHZFcnJvcnMpOyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IHZFcnJvcnM7IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJHJEZWYuZXJyb3JzID09PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyAnICsgKGRlZl9jdXN0b21FcnJvcikgKyAnICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyBpZiAoQXJyYXkuaXNBcnJheSgnICsgKCRydWxlRXJycykgKyAnKSkgeyBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9ICcgKyAoJHJ1bGVFcnJzKSArICc7IGVsc2UgdkVycm9ycyA9IHZFcnJvcnMuY29uY2F0KCcgKyAoJHJ1bGVFcnJzKSArICcpOyBlcnJvcnMgPSB2RXJyb3JzLmxlbmd0aDsgIGZvciAodmFyICcgKyAoJGkpICsgJz0nICsgKCRlcnJzKSArICc7ICcgKyAoJGkpICsgJzxlcnJvcnM7ICcgKyAoJGkpICsgJysrKSB7IHZhciAnICsgKCRydWxlRXJyKSArICcgPSB2RXJyb3JzWycgKyAoJGkpICsgJ107IGlmICgnICsgKCRydWxlRXJyKSArICcuZGF0YVBhdGggPT09IHVuZGVmaW5lZCkgJyArICgkcnVsZUVycikgKyAnLmRhdGFQYXRoID0gKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnOyAgJyArICgkcnVsZUVycikgKyAnLnNjaGVtYVBhdGggPSBcIicgKyAoJGVyclNjaGVtYVBhdGgpICsgJ1wiOyAgJztcbiAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgIG91dCArPSAnICcgKyAoJHJ1bGVFcnIpICsgJy5zY2hlbWEgPSAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnOyAnICsgKCRydWxlRXJyKSArICcuZGF0YSA9ICcgKyAoJGRhdGEpICsgJzsgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB9IH0gZWxzZSB7ICcgKyAoZGVmX2N1c3RvbUVycm9yKSArICcgfSAnO1xuICAgICAgfVxuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgbWV0YVNjaGVtYSA9IHJlcXVpcmUoJy4vcmVmcy9qc29uLXNjaGVtYS1kcmFmdC0wNy5qc29uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAkaWQ6ICdodHRwczovL2dpdGh1Yi5jb20vYWp2LXZhbGlkYXRvci9hanYvYmxvYi9tYXN0ZXIvbGliL2RlZmluaXRpb25fc2NoZW1hLmpzJyxcbiAgZGVmaW5pdGlvbnM6IHtcbiAgICBzaW1wbGVUeXBlczogbWV0YVNjaGVtYS5kZWZpbml0aW9ucy5zaW1wbGVUeXBlc1xuICB9LFxuICB0eXBlOiAnb2JqZWN0JyxcbiAgZGVwZW5kZW5jaWVzOiB7XG4gICAgc2NoZW1hOiBbJ3ZhbGlkYXRlJ10sXG4gICAgJGRhdGE6IFsndmFsaWRhdGUnXSxcbiAgICBzdGF0ZW1lbnRzOiBbJ2lubGluZSddLFxuICAgIHZhbGlkOiB7bm90OiB7cmVxdWlyZWQ6IFsnbWFjcm8nXX19XG4gIH0sXG4gIHByb3BlcnRpZXM6IHtcbiAgICB0eXBlOiBtZXRhU2NoZW1hLnByb3BlcnRpZXMudHlwZSxcbiAgICBzY2hlbWE6IHt0eXBlOiAnYm9vbGVhbid9LFxuICAgIHN0YXRlbWVudHM6IHt0eXBlOiAnYm9vbGVhbid9LFxuICAgIGRlcGVuZGVuY2llczoge1xuICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgIGl0ZW1zOiB7dHlwZTogJ3N0cmluZyd9XG4gICAgfSxcbiAgICBtZXRhU2NoZW1hOiB7dHlwZTogJ29iamVjdCd9LFxuICAgIG1vZGlmeWluZzoge3R5cGU6ICdib29sZWFuJ30sXG4gICAgdmFsaWQ6IHt0eXBlOiAnYm9vbGVhbid9LFxuICAgICRkYXRhOiB7dHlwZTogJ2Jvb2xlYW4nfSxcbiAgICBhc3luYzoge3R5cGU6ICdib29sZWFuJ30sXG4gICAgZXJyb3JzOiB7XG4gICAgICBhbnlPZjogW1xuICAgICAgICB7dHlwZTogJ2Jvb2xlYW4nfSxcbiAgICAgICAge2NvbnN0OiAnZnVsbCd9XG4gICAgICBdXG4gICAgfVxuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgSURFTlRJRklFUiA9IC9eW2Etel8kXVthLXowLTlfJC1dKiQvaTtcbnZhciBjdXN0b21SdWxlQ29kZSA9IHJlcXVpcmUoJy4vZG90anMvY3VzdG9tJyk7XG52YXIgZGVmaW5pdGlvblNjaGVtYSA9IHJlcXVpcmUoJy4vZGVmaW5pdGlvbl9zY2hlbWEnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFkZDogYWRkS2V5d29yZCxcbiAgZ2V0OiBnZXRLZXl3b3JkLFxuICByZW1vdmU6IHJlbW92ZUtleXdvcmQsXG4gIHZhbGlkYXRlOiB2YWxpZGF0ZUtleXdvcmRcbn07XG5cblxuLyoqXG4gKiBEZWZpbmUgY3VzdG9tIGtleXdvcmRcbiAqIEB0aGlzICBBanZcbiAqIEBwYXJhbSB7U3RyaW5nfSBrZXl3b3JkIGN1c3RvbSBrZXl3b3JkLCBzaG91bGQgYmUgdW5pcXVlIChpbmNsdWRpbmcgZGlmZmVyZW50IGZyb20gYWxsIHN0YW5kYXJkLCBjdXN0b20gYW5kIG1hY3JvIGtleXdvcmRzKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZpbml0aW9uIGtleXdvcmQgZGVmaW5pdGlvbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGB0eXBlYCAodHlwZShzKSB3aGljaCB0aGUga2V5d29yZCBhcHBsaWVzIHRvKSwgYHZhbGlkYXRlYCBvciBgY29tcGlsZWAuXG4gKiBAcmV0dXJuIHtBanZ9IHRoaXMgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICovXG5mdW5jdGlvbiBhZGRLZXl3b3JkKGtleXdvcmQsIGRlZmluaXRpb24pIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICAvKiBlc2xpbnQgbm8tc2hhZG93OiAwICovXG4gIHZhciBSVUxFUyA9IHRoaXMuUlVMRVM7XG4gIGlmIChSVUxFUy5rZXl3b3Jkc1trZXl3b3JkXSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0tleXdvcmQgJyArIGtleXdvcmQgKyAnIGlzIGFscmVhZHkgZGVmaW5lZCcpO1xuXG4gIGlmICghSURFTlRJRklFUi50ZXN0KGtleXdvcmQpKVxuICAgIHRocm93IG5ldyBFcnJvcignS2V5d29yZCAnICsga2V5d29yZCArICcgaXMgbm90IGEgdmFsaWQgaWRlbnRpZmllcicpO1xuXG4gIGlmIChkZWZpbml0aW9uKSB7XG4gICAgdGhpcy52YWxpZGF0ZUtleXdvcmQoZGVmaW5pdGlvbiwgdHJ1ZSk7XG5cbiAgICB2YXIgZGF0YVR5cGUgPSBkZWZpbml0aW9uLnR5cGU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVR5cGUpKSB7XG4gICAgICBmb3IgKHZhciBpPTA7IGk8ZGF0YVR5cGUubGVuZ3RoOyBpKyspXG4gICAgICAgIF9hZGRSdWxlKGtleXdvcmQsIGRhdGFUeXBlW2ldLCBkZWZpbml0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgX2FkZFJ1bGUoa2V5d29yZCwgZGF0YVR5cGUsIGRlZmluaXRpb24pO1xuICAgIH1cblxuICAgIHZhciBtZXRhU2NoZW1hID0gZGVmaW5pdGlvbi5tZXRhU2NoZW1hO1xuICAgIGlmIChtZXRhU2NoZW1hKSB7XG4gICAgICBpZiAoZGVmaW5pdGlvbi4kZGF0YSAmJiB0aGlzLl9vcHRzLiRkYXRhKSB7XG4gICAgICAgIG1ldGFTY2hlbWEgPSB7XG4gICAgICAgICAgYW55T2Y6IFtcbiAgICAgICAgICAgIG1ldGFTY2hlbWEsXG4gICAgICAgICAgICB7ICckcmVmJzogJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9hanYtdmFsaWRhdG9yL2Fqdi9tYXN0ZXIvbGliL3JlZnMvZGF0YS5qc29uIycgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGRlZmluaXRpb24udmFsaWRhdGVTY2hlbWEgPSB0aGlzLmNvbXBpbGUobWV0YVNjaGVtYSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgUlVMRVMua2V5d29yZHNba2V5d29yZF0gPSBSVUxFUy5hbGxba2V5d29yZF0gPSB0cnVlO1xuXG5cbiAgZnVuY3Rpb24gX2FkZFJ1bGUoa2V5d29yZCwgZGF0YVR5cGUsIGRlZmluaXRpb24pIHtcbiAgICB2YXIgcnVsZUdyb3VwO1xuICAgIGZvciAodmFyIGk9MDsgaTxSVUxFUy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJnID0gUlVMRVNbaV07XG4gICAgICBpZiAocmcudHlwZSA9PSBkYXRhVHlwZSkge1xuICAgICAgICBydWxlR3JvdXAgPSByZztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFydWxlR3JvdXApIHtcbiAgICAgIHJ1bGVHcm91cCA9IHsgdHlwZTogZGF0YVR5cGUsIHJ1bGVzOiBbXSB9O1xuICAgICAgUlVMRVMucHVzaChydWxlR3JvdXApO1xuICAgIH1cblxuICAgIHZhciBydWxlID0ge1xuICAgICAga2V5d29yZDoga2V5d29yZCxcbiAgICAgIGRlZmluaXRpb246IGRlZmluaXRpb24sXG4gICAgICBjdXN0b206IHRydWUsXG4gICAgICBjb2RlOiBjdXN0b21SdWxlQ29kZSxcbiAgICAgIGltcGxlbWVudHM6IGRlZmluaXRpb24uaW1wbGVtZW50c1xuICAgIH07XG4gICAgcnVsZUdyb3VwLnJ1bGVzLnB1c2gocnVsZSk7XG4gICAgUlVMRVMuY3VzdG9tW2tleXdvcmRdID0gcnVsZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5cbi8qKlxuICogR2V0IGtleXdvcmRcbiAqIEB0aGlzICBBanZcbiAqIEBwYXJhbSB7U3RyaW5nfSBrZXl3b3JkIHByZS1kZWZpbmVkIG9yIGN1c3RvbSBrZXl3b3JkLlxuICogQHJldHVybiB7T2JqZWN0fEJvb2xlYW59IGN1c3RvbSBrZXl3b3JkIGRlZmluaXRpb24sIGB0cnVlYCBpZiBpdCBpcyBhIHByZWRlZmluZWQga2V5d29yZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGdldEtleXdvcmQoa2V5d29yZCkge1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gIHZhciBydWxlID0gdGhpcy5SVUxFUy5jdXN0b21ba2V5d29yZF07XG4gIHJldHVybiBydWxlID8gcnVsZS5kZWZpbml0aW9uIDogdGhpcy5SVUxFUy5rZXl3b3Jkc1trZXl3b3JkXSB8fCBmYWxzZTtcbn1cblxuXG4vKipcbiAqIFJlbW92ZSBrZXl3b3JkXG4gKiBAdGhpcyAgQWp2XG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5d29yZCBwcmUtZGVmaW5lZCBvciBjdXN0b20ga2V5d29yZC5cbiAqIEByZXR1cm4ge0Fqdn0gdGhpcyBmb3IgbWV0aG9kIGNoYWluaW5nXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUtleXdvcmQoa2V5d29yZCkge1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gIHZhciBSVUxFUyA9IHRoaXMuUlVMRVM7XG4gIGRlbGV0ZSBSVUxFUy5rZXl3b3Jkc1trZXl3b3JkXTtcbiAgZGVsZXRlIFJVTEVTLmFsbFtrZXl3b3JkXTtcbiAgZGVsZXRlIFJVTEVTLmN1c3RvbVtrZXl3b3JkXTtcbiAgZm9yICh2YXIgaT0wOyBpPFJVTEVTLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHJ1bGVzID0gUlVMRVNbaV0ucnVsZXM7XG4gICAgZm9yICh2YXIgaj0wOyBqPHJ1bGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAocnVsZXNbal0ua2V5d29yZCA9PSBrZXl3b3JkKSB7XG4gICAgICAgIHJ1bGVzLnNwbGljZShqLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5cbi8qKlxuICogVmFsaWRhdGUga2V5d29yZCBkZWZpbml0aW9uXG4gKiBAdGhpcyAgQWp2XG4gKiBAcGFyYW0ge09iamVjdH0gZGVmaW5pdGlvbiBrZXl3b3JkIGRlZmluaXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtCb29sZWFufSB0aHJvd0Vycm9yIHRydWUgdG8gdGhyb3cgZXhjZXB0aW9uIGlmIGRlZmluaXRpb24gaXMgaW52YWxpZFxuICogQHJldHVybiB7Ym9vbGVhbn0gdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVLZXl3b3JkKGRlZmluaXRpb24sIHRocm93RXJyb3IpIHtcbiAgdmFsaWRhdGVLZXl3b3JkLmVycm9ycyA9IG51bGw7XG4gIHZhciB2ID0gdGhpcy5fdmFsaWRhdGVLZXl3b3JkID0gdGhpcy5fdmFsaWRhdGVLZXl3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5jb21waWxlKGRlZmluaXRpb25TY2hlbWEsIHRydWUpO1xuXG4gIGlmICh2KGRlZmluaXRpb24pKSByZXR1cm4gdHJ1ZTtcbiAgdmFsaWRhdGVLZXl3b3JkLmVycm9ycyA9IHYuZXJyb3JzO1xuICBpZiAodGhyb3dFcnJvcilcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbSBrZXl3b3JkIGRlZmluaXRpb24gaXMgaW52YWxpZDogJyAgKyB0aGlzLmVycm9yc1RleHQodi5lcnJvcnMpKTtcbiAgZWxzZVxuICAgIHJldHVybiBmYWxzZTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNvbXBpbGVTY2hlbWEgPSByZXF1aXJlKCcuL2NvbXBpbGUnKVxuICAsIHJlc29sdmUgPSByZXF1aXJlKCcuL2NvbXBpbGUvcmVzb2x2ZScpXG4gICwgQ2FjaGUgPSByZXF1aXJlKCcuL2NhY2hlJylcbiAgLCBTY2hlbWFPYmplY3QgPSByZXF1aXJlKCcuL2NvbXBpbGUvc2NoZW1hX29iaicpXG4gICwgc3RhYmxlU3RyaW5naWZ5ID0gcmVxdWlyZSgnZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnknKVxuICAsIGZvcm1hdHMgPSByZXF1aXJlKCcuL2NvbXBpbGUvZm9ybWF0cycpXG4gICwgcnVsZXMgPSByZXF1aXJlKCcuL2NvbXBpbGUvcnVsZXMnKVxuICAsICRkYXRhTWV0YVNjaGVtYSA9IHJlcXVpcmUoJy4vZGF0YScpXG4gICwgdXRpbCA9IHJlcXVpcmUoJy4vY29tcGlsZS91dGlsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gQWp2O1xuXG5BanYucHJvdG90eXBlLnZhbGlkYXRlID0gdmFsaWRhdGU7XG5BanYucHJvdG90eXBlLmNvbXBpbGUgPSBjb21waWxlO1xuQWp2LnByb3RvdHlwZS5hZGRTY2hlbWEgPSBhZGRTY2hlbWE7XG5BanYucHJvdG90eXBlLmFkZE1ldGFTY2hlbWEgPSBhZGRNZXRhU2NoZW1hO1xuQWp2LnByb3RvdHlwZS52YWxpZGF0ZVNjaGVtYSA9IHZhbGlkYXRlU2NoZW1hO1xuQWp2LnByb3RvdHlwZS5nZXRTY2hlbWEgPSBnZXRTY2hlbWE7XG5BanYucHJvdG90eXBlLnJlbW92ZVNjaGVtYSA9IHJlbW92ZVNjaGVtYTtcbkFqdi5wcm90b3R5cGUuYWRkRm9ybWF0ID0gYWRkRm9ybWF0O1xuQWp2LnByb3RvdHlwZS5lcnJvcnNUZXh0ID0gZXJyb3JzVGV4dDtcblxuQWp2LnByb3RvdHlwZS5fYWRkU2NoZW1hID0gX2FkZFNjaGVtYTtcbkFqdi5wcm90b3R5cGUuX2NvbXBpbGUgPSBfY29tcGlsZTtcblxuQWp2LnByb3RvdHlwZS5jb21waWxlQXN5bmMgPSByZXF1aXJlKCcuL2NvbXBpbGUvYXN5bmMnKTtcbnZhciBjdXN0b21LZXl3b3JkID0gcmVxdWlyZSgnLi9rZXl3b3JkJyk7XG5BanYucHJvdG90eXBlLmFkZEtleXdvcmQgPSBjdXN0b21LZXl3b3JkLmFkZDtcbkFqdi5wcm90b3R5cGUuZ2V0S2V5d29yZCA9IGN1c3RvbUtleXdvcmQuZ2V0O1xuQWp2LnByb3RvdHlwZS5yZW1vdmVLZXl3b3JkID0gY3VzdG9tS2V5d29yZC5yZW1vdmU7XG5BanYucHJvdG90eXBlLnZhbGlkYXRlS2V5d29yZCA9IGN1c3RvbUtleXdvcmQudmFsaWRhdGU7XG5cbnZhciBlcnJvckNsYXNzZXMgPSByZXF1aXJlKCcuL2NvbXBpbGUvZXJyb3JfY2xhc3NlcycpO1xuQWp2LlZhbGlkYXRpb25FcnJvciA9IGVycm9yQ2xhc3Nlcy5WYWxpZGF0aW9uO1xuQWp2Lk1pc3NpbmdSZWZFcnJvciA9IGVycm9yQ2xhc3Nlcy5NaXNzaW5nUmVmO1xuQWp2LiRkYXRhTWV0YVNjaGVtYSA9ICRkYXRhTWV0YVNjaGVtYTtcblxudmFyIE1FVEFfU0NIRU1BX0lEID0gJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hJztcblxudmFyIE1FVEFfSUdOT1JFX09QVElPTlMgPSBbICdyZW1vdmVBZGRpdGlvbmFsJywgJ3VzZURlZmF1bHRzJywgJ2NvZXJjZVR5cGVzJywgJ3N0cmljdERlZmF1bHRzJyBdO1xudmFyIE1FVEFfU1VQUE9SVF9EQVRBID0gWycvcHJvcGVydGllcyddO1xuXG4vKipcbiAqIENyZWF0ZXMgdmFsaWRhdG9yIGluc3RhbmNlLlxuICogVXNhZ2U6IGBBanYob3B0cylgXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBvcHRpb25hbCBvcHRpb25zXG4gKiBAcmV0dXJuIHtPYmplY3R9IGFqdiBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBBanYob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQWp2KSkgcmV0dXJuIG5ldyBBanYob3B0cyk7XG4gIG9wdHMgPSB0aGlzLl9vcHRzID0gdXRpbC5jb3B5KG9wdHMpIHx8IHt9O1xuICBzZXRMb2dnZXIodGhpcyk7XG4gIHRoaXMuX3NjaGVtYXMgPSB7fTtcbiAgdGhpcy5fcmVmcyA9IHt9O1xuICB0aGlzLl9mcmFnbWVudHMgPSB7fTtcbiAgdGhpcy5fZm9ybWF0cyA9IGZvcm1hdHMob3B0cy5mb3JtYXQpO1xuXG4gIHRoaXMuX2NhY2hlID0gb3B0cy5jYWNoZSB8fCBuZXcgQ2FjaGU7XG4gIHRoaXMuX2xvYWRpbmdTY2hlbWFzID0ge307XG4gIHRoaXMuX2NvbXBpbGF0aW9ucyA9IFtdO1xuICB0aGlzLlJVTEVTID0gcnVsZXMoKTtcbiAgdGhpcy5fZ2V0SWQgPSBjaG9vc2VHZXRJZChvcHRzKTtcblxuICBvcHRzLmxvb3BSZXF1aXJlZCA9IG9wdHMubG9vcFJlcXVpcmVkIHx8IEluZmluaXR5O1xuICBpZiAob3B0cy5lcnJvckRhdGFQYXRoID09ICdwcm9wZXJ0eScpIG9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSA9IHRydWU7XG4gIGlmIChvcHRzLnNlcmlhbGl6ZSA9PT0gdW5kZWZpbmVkKSBvcHRzLnNlcmlhbGl6ZSA9IHN0YWJsZVN0cmluZ2lmeTtcbiAgdGhpcy5fbWV0YU9wdHMgPSBnZXRNZXRhU2NoZW1hT3B0aW9ucyh0aGlzKTtcblxuICBpZiAob3B0cy5mb3JtYXRzKSBhZGRJbml0aWFsRm9ybWF0cyh0aGlzKTtcbiAgaWYgKG9wdHMua2V5d29yZHMpIGFkZEluaXRpYWxLZXl3b3Jkcyh0aGlzKTtcbiAgYWRkRGVmYXVsdE1ldGFTY2hlbWEodGhpcyk7XG4gIGlmICh0eXBlb2Ygb3B0cy5tZXRhID09ICdvYmplY3QnKSB0aGlzLmFkZE1ldGFTY2hlbWEob3B0cy5tZXRhKTtcbiAgaWYgKG9wdHMubnVsbGFibGUpIHRoaXMuYWRkS2V5d29yZCgnbnVsbGFibGUnLCB7bWV0YVNjaGVtYToge3R5cGU6ICdib29sZWFuJ319KTtcbiAgYWRkSW5pdGlhbFNjaGVtYXModGhpcyk7XG59XG5cblxuXG4vKipcbiAqIFZhbGlkYXRlIGRhdGEgdXNpbmcgc2NoZW1hXG4gKiBTY2hlbWEgd2lsbCBiZSBjb21waWxlZCBhbmQgY2FjaGVkICh1c2luZyBzZXJpYWxpemVkIEpTT04gYXMga2V5LiBbZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnldKGh0dHBzOi8vZ2l0aHViLmNvbS9lcG9iZXJlemtpbi9mYXN0LWpzb24tc3RhYmxlLXN0cmluZ2lmeSkgaXMgdXNlZCB0byBzZXJpYWxpemUuXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7U3RyaW5nfE9iamVjdH0gc2NoZW1hS2V5UmVmIGtleSwgcmVmIG9yIHNjaGVtYSBvYmplY3RcbiAqIEBwYXJhbSAge0FueX0gZGF0YSB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHZhbGlkYXRpb24gcmVzdWx0LiBFcnJvcnMgZnJvbSB0aGUgbGFzdCB2YWxpZGF0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIGluIGBhanYuZXJyb3JzYCAoYW5kIGFsc28gaW4gY29tcGlsZWQgc2NoZW1hOiBgc2NoZW1hLmVycm9yc2ApLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZShzY2hlbWFLZXlSZWYsIGRhdGEpIHtcbiAgdmFyIHY7XG4gIGlmICh0eXBlb2Ygc2NoZW1hS2V5UmVmID09ICdzdHJpbmcnKSB7XG4gICAgdiA9IHRoaXMuZ2V0U2NoZW1hKHNjaGVtYUtleVJlZik7XG4gICAgaWYgKCF2KSB0aHJvdyBuZXcgRXJyb3IoJ25vIHNjaGVtYSB3aXRoIGtleSBvciByZWYgXCInICsgc2NoZW1hS2V5UmVmICsgJ1wiJyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNjaGVtYU9iaiA9IHRoaXMuX2FkZFNjaGVtYShzY2hlbWFLZXlSZWYpO1xuICAgIHYgPSBzY2hlbWFPYmoudmFsaWRhdGUgfHwgdGhpcy5fY29tcGlsZShzY2hlbWFPYmopO1xuICB9XG5cbiAgdmFyIHZhbGlkID0gdihkYXRhKTtcbiAgaWYgKHYuJGFzeW5jICE9PSB0cnVlKSB0aGlzLmVycm9ycyA9IHYuZXJyb3JzO1xuICByZXR1cm4gdmFsaWQ7XG59XG5cblxuLyoqXG4gKiBDcmVhdGUgdmFsaWRhdGluZyBmdW5jdGlvbiBmb3IgcGFzc2VkIHNjaGVtYS5cbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtPYmplY3R9IHNjaGVtYSBzY2hlbWEgb2JqZWN0XG4gKiBAcGFyYW0gIHtCb29sZWFufSBfbWV0YSB0cnVlIGlmIHNjaGVtYSBpcyBhIG1ldGEtc2NoZW1hLiBVc2VkIGludGVybmFsbHkgdG8gY29tcGlsZSBtZXRhIHNjaGVtYXMgb2YgY3VzdG9tIGtleXdvcmRzLlxuICogQHJldHVybiB7RnVuY3Rpb259IHZhbGlkYXRpbmcgZnVuY3Rpb25cbiAqL1xuZnVuY3Rpb24gY29tcGlsZShzY2hlbWEsIF9tZXRhKSB7XG4gIHZhciBzY2hlbWFPYmogPSB0aGlzLl9hZGRTY2hlbWEoc2NoZW1hLCB1bmRlZmluZWQsIF9tZXRhKTtcbiAgcmV0dXJuIHNjaGVtYU9iai52YWxpZGF0ZSB8fCB0aGlzLl9jb21waWxlKHNjaGVtYU9iaik7XG59XG5cblxuLyoqXG4gKiBBZGRzIHNjaGVtYSB0byB0aGUgaW5zdGFuY2UuXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IHNjaGVtYSBzY2hlbWEgb3IgYXJyYXkgb2Ygc2NoZW1hcy4gSWYgYXJyYXkgaXMgcGFzc2VkLCBga2V5YCBhbmQgb3RoZXIgcGFyYW1ldGVycyB3aWxsIGJlIGlnbm9yZWQuXG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5IE9wdGlvbmFsIHNjaGVtYSBrZXkuIENhbiBiZSBwYXNzZWQgdG8gYHZhbGlkYXRlYCBtZXRob2QgaW5zdGVhZCBvZiBzY2hlbWEgb2JqZWN0IG9yIGlkL3JlZi4gT25lIHNjaGVtYSBwZXIgaW5zdGFuY2UgY2FuIGhhdmUgZW1wdHkgYGlkYCBhbmQgYGtleWAuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IF9za2lwVmFsaWRhdGlvbiB0cnVlIHRvIHNraXAgc2NoZW1hIHZhbGlkYXRpb24uIFVzZWQgaW50ZXJuYWxseSwgb3B0aW9uIHZhbGlkYXRlU2NoZW1hIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IF9tZXRhIHRydWUgaWYgc2NoZW1hIGlzIGEgbWV0YS1zY2hlbWEuIFVzZWQgaW50ZXJuYWxseSwgYWRkTWV0YVNjaGVtYSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLlxuICogQHJldHVybiB7QWp2fSB0aGlzIGZvciBtZXRob2QgY2hhaW5pbmdcbiAqL1xuZnVuY3Rpb24gYWRkU2NoZW1hKHNjaGVtYSwga2V5LCBfc2tpcFZhbGlkYXRpb24sIF9tZXRhKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpe1xuICAgIGZvciAodmFyIGk9MDsgaTxzY2hlbWEubGVuZ3RoOyBpKyspIHRoaXMuYWRkU2NoZW1hKHNjaGVtYVtpXSwgdW5kZWZpbmVkLCBfc2tpcFZhbGlkYXRpb24sIF9tZXRhKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB2YXIgaWQgPSB0aGlzLl9nZXRJZChzY2hlbWEpO1xuICBpZiAoaWQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgaWQgIT0gJ3N0cmluZycpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdzY2hlbWEgaWQgbXVzdCBiZSBzdHJpbmcnKTtcbiAga2V5ID0gcmVzb2x2ZS5ub3JtYWxpemVJZChrZXkgfHwgaWQpO1xuICBjaGVja1VuaXF1ZSh0aGlzLCBrZXkpO1xuICB0aGlzLl9zY2hlbWFzW2tleV0gPSB0aGlzLl9hZGRTY2hlbWEoc2NoZW1hLCBfc2tpcFZhbGlkYXRpb24sIF9tZXRhLCB0cnVlKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cblxuLyoqXG4gKiBBZGQgc2NoZW1hIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHZhbGlkYXRlIG90aGVyIHNjaGVtYXNcbiAqIG9wdGlvbnMgaW4gTUVUQV9JR05PUkVfT1BUSU9OUyBhcmUgYWx3YXkgc2V0IHRvIGZhbHNlXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtIHtPYmplY3R9IHNjaGVtYSBzY2hlbWEgb2JqZWN0XG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5IG9wdGlvbmFsIHNjaGVtYSBrZXlcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gc2tpcFZhbGlkYXRpb24gdHJ1ZSB0byBza2lwIHNjaGVtYSB2YWxpZGF0aW9uLCBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSB2YWxpZGF0ZVNjaGVtYSBvcHRpb24gZm9yIG1ldGEtc2NoZW1hXG4gKiBAcmV0dXJuIHtBanZ9IHRoaXMgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICovXG5mdW5jdGlvbiBhZGRNZXRhU2NoZW1hKHNjaGVtYSwga2V5LCBza2lwVmFsaWRhdGlvbikge1xuICB0aGlzLmFkZFNjaGVtYShzY2hlbWEsIGtleSwgc2tpcFZhbGlkYXRpb24sIHRydWUpO1xuICByZXR1cm4gdGhpcztcbn1cblxuXG4vKipcbiAqIFZhbGlkYXRlIHNjaGVtYVxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSB7T2JqZWN0fSBzY2hlbWEgc2NoZW1hIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0ge0Jvb2xlYW59IHRocm93T3JMb2dFcnJvciBwYXNzIHRydWUgdG8gdGhyb3cgKG9yIGxvZykgYW4gZXJyb3IgaWYgaW52YWxpZFxuICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiBzY2hlbWEgaXMgdmFsaWRcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTY2hlbWEoc2NoZW1hLCB0aHJvd09yTG9nRXJyb3IpIHtcbiAgdmFyICRzY2hlbWEgPSBzY2hlbWEuJHNjaGVtYTtcbiAgaWYgKCRzY2hlbWEgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJHNjaGVtYSAhPSAnc3RyaW5nJylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJyRzY2hlbWEgbXVzdCBiZSBhIHN0cmluZycpO1xuICAkc2NoZW1hID0gJHNjaGVtYSB8fCB0aGlzLl9vcHRzLmRlZmF1bHRNZXRhIHx8IGRlZmF1bHRNZXRhKHRoaXMpO1xuICBpZiAoISRzY2hlbWEpIHtcbiAgICB0aGlzLmxvZ2dlci53YXJuKCdtZXRhLXNjaGVtYSBub3QgYXZhaWxhYmxlJyk7XG4gICAgdGhpcy5lcnJvcnMgPSBudWxsO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciB2YWxpZCA9IHRoaXMudmFsaWRhdGUoJHNjaGVtYSwgc2NoZW1hKTtcbiAgaWYgKCF2YWxpZCAmJiB0aHJvd09yTG9nRXJyb3IpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICdzY2hlbWEgaXMgaW52YWxpZDogJyArIHRoaXMuZXJyb3JzVGV4dCgpO1xuICAgIGlmICh0aGlzLl9vcHRzLnZhbGlkYXRlU2NoZW1hID09ICdsb2cnKSB0aGlzLmxvZ2dlci5lcnJvcihtZXNzYWdlKTtcbiAgICBlbHNlIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxuICByZXR1cm4gdmFsaWQ7XG59XG5cblxuZnVuY3Rpb24gZGVmYXVsdE1ldGEoc2VsZikge1xuICB2YXIgbWV0YSA9IHNlbGYuX29wdHMubWV0YTtcbiAgc2VsZi5fb3B0cy5kZWZhdWx0TWV0YSA9IHR5cGVvZiBtZXRhID09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxmLl9nZXRJZChtZXRhKSB8fCBtZXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWxmLmdldFNjaGVtYShNRVRBX1NDSEVNQV9JRClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTUVUQV9TQ0hFTUFfSURcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICByZXR1cm4gc2VsZi5fb3B0cy5kZWZhdWx0TWV0YTtcbn1cblxuXG4vKipcbiAqIEdldCBjb21waWxlZCBzY2hlbWEgZnJvbSB0aGUgaW5zdGFuY2UgYnkgYGtleWAgb3IgYHJlZmAuXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7U3RyaW5nfSBrZXlSZWYgYGtleWAgdGhhdCB3YXMgcGFzc2VkIHRvIGBhZGRTY2hlbWFgIG9yIGZ1bGwgc2NoZW1hIHJlZmVyZW5jZSAoYHNjaGVtYS5pZGAgb3IgcmVzb2x2ZWQgaWQpLlxuICogQHJldHVybiB7RnVuY3Rpb259IHNjaGVtYSB2YWxpZGF0aW5nIGZ1bmN0aW9uICh3aXRoIHByb3BlcnR5IGBzY2hlbWFgKS5cbiAqL1xuZnVuY3Rpb24gZ2V0U2NoZW1hKGtleVJlZikge1xuICB2YXIgc2NoZW1hT2JqID0gX2dldFNjaGVtYU9iaih0aGlzLCBrZXlSZWYpO1xuICBzd2l0Y2ggKHR5cGVvZiBzY2hlbWFPYmopIHtcbiAgICBjYXNlICdvYmplY3QnOiByZXR1cm4gc2NoZW1hT2JqLnZhbGlkYXRlIHx8IHRoaXMuX2NvbXBpbGUoc2NoZW1hT2JqKTtcbiAgICBjYXNlICdzdHJpbmcnOiByZXR1cm4gdGhpcy5nZXRTY2hlbWEoc2NoZW1hT2JqKTtcbiAgICBjYXNlICd1bmRlZmluZWQnOiByZXR1cm4gX2dldFNjaGVtYUZyYWdtZW50KHRoaXMsIGtleVJlZik7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBfZ2V0U2NoZW1hRnJhZ21lbnQoc2VsZiwgcmVmKSB7XG4gIHZhciByZXMgPSByZXNvbHZlLnNjaGVtYS5jYWxsKHNlbGYsIHsgc2NoZW1hOiB7fSB9LCByZWYpO1xuICBpZiAocmVzKSB7XG4gICAgdmFyIHNjaGVtYSA9IHJlcy5zY2hlbWFcbiAgICAgICwgcm9vdCA9IHJlcy5yb290XG4gICAgICAsIGJhc2VJZCA9IHJlcy5iYXNlSWQ7XG4gICAgdmFyIHYgPSBjb21waWxlU2NoZW1hLmNhbGwoc2VsZiwgc2NoZW1hLCByb290LCB1bmRlZmluZWQsIGJhc2VJZCk7XG4gICAgc2VsZi5fZnJhZ21lbnRzW3JlZl0gPSBuZXcgU2NoZW1hT2JqZWN0KHtcbiAgICAgIHJlZjogcmVmLFxuICAgICAgZnJhZ21lbnQ6IHRydWUsXG4gICAgICBzY2hlbWE6IHNjaGVtYSxcbiAgICAgIHJvb3Q6IHJvb3QsXG4gICAgICBiYXNlSWQ6IGJhc2VJZCxcbiAgICAgIHZhbGlkYXRlOiB2XG4gICAgfSk7XG4gICAgcmV0dXJuIHY7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBfZ2V0U2NoZW1hT2JqKHNlbGYsIGtleVJlZikge1xuICBrZXlSZWYgPSByZXNvbHZlLm5vcm1hbGl6ZUlkKGtleVJlZik7XG4gIHJldHVybiBzZWxmLl9zY2hlbWFzW2tleVJlZl0gfHwgc2VsZi5fcmVmc1trZXlSZWZdIHx8IHNlbGYuX2ZyYWdtZW50c1trZXlSZWZdO1xufVxuXG5cbi8qKlxuICogUmVtb3ZlIGNhY2hlZCBzY2hlbWEocykuXG4gKiBJZiBubyBwYXJhbWV0ZXIgaXMgcGFzc2VkIGFsbCBzY2hlbWFzIGJ1dCBtZXRhLXNjaGVtYXMgYXJlIHJlbW92ZWQuXG4gKiBJZiBSZWdFeHAgaXMgcGFzc2VkIGFsbCBzY2hlbWFzIHdpdGgga2V5L2lkIG1hdGNoaW5nIHBhdHRlcm4gYnV0IG1ldGEtc2NoZW1hcyBhcmUgcmVtb3ZlZC5cbiAqIEV2ZW4gaWYgc2NoZW1hIGlzIHJlZmVyZW5jZWQgYnkgb3RoZXIgc2NoZW1hcyBpdCBzdGlsbCBjYW4gYmUgcmVtb3ZlZCBhcyBvdGhlciBzY2hlbWFzIGhhdmUgbG9jYWwgcmVmZXJlbmNlcy5cbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtTdHJpbmd8T2JqZWN0fFJlZ0V4cH0gc2NoZW1hS2V5UmVmIGtleSwgcmVmLCBwYXR0ZXJuIHRvIG1hdGNoIGtleS9yZWYgb3Igc2NoZW1hIG9iamVjdFxuICogQHJldHVybiB7QWp2fSB0aGlzIGZvciBtZXRob2QgY2hhaW5pbmdcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlU2NoZW1hKHNjaGVtYUtleVJlZikge1xuICBpZiAoc2NoZW1hS2V5UmVmIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgX3JlbW92ZUFsbFNjaGVtYXModGhpcywgdGhpcy5fc2NoZW1hcywgc2NoZW1hS2V5UmVmKTtcbiAgICBfcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLCB0aGlzLl9yZWZzLCBzY2hlbWFLZXlSZWYpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHN3aXRjaCAodHlwZW9mIHNjaGVtYUtleVJlZikge1xuICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICBfcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLCB0aGlzLl9zY2hlbWFzKTtcbiAgICAgIF9yZW1vdmVBbGxTY2hlbWFzKHRoaXMsIHRoaXMuX3JlZnMpO1xuICAgICAgdGhpcy5fY2FjaGUuY2xlYXIoKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICB2YXIgc2NoZW1hT2JqID0gX2dldFNjaGVtYU9iaih0aGlzLCBzY2hlbWFLZXlSZWYpO1xuICAgICAgaWYgKHNjaGVtYU9iaikgdGhpcy5fY2FjaGUuZGVsKHNjaGVtYU9iai5jYWNoZUtleSk7XG4gICAgICBkZWxldGUgdGhpcy5fc2NoZW1hc1tzY2hlbWFLZXlSZWZdO1xuICAgICAgZGVsZXRlIHRoaXMuX3JlZnNbc2NoZW1hS2V5UmVmXTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICB2YXIgc2VyaWFsaXplID0gdGhpcy5fb3B0cy5zZXJpYWxpemU7XG4gICAgICB2YXIgY2FjaGVLZXkgPSBzZXJpYWxpemUgPyBzZXJpYWxpemUoc2NoZW1hS2V5UmVmKSA6IHNjaGVtYUtleVJlZjtcbiAgICAgIHRoaXMuX2NhY2hlLmRlbChjYWNoZUtleSk7XG4gICAgICB2YXIgaWQgPSB0aGlzLl9nZXRJZChzY2hlbWFLZXlSZWYpO1xuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIGlkID0gcmVzb2x2ZS5ub3JtYWxpemVJZChpZCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9zY2hlbWFzW2lkXTtcbiAgICAgICAgZGVsZXRlIHRoaXMuX3JlZnNbaWRdO1xuICAgICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5cbmZ1bmN0aW9uIF9yZW1vdmVBbGxTY2hlbWFzKHNlbGYsIHNjaGVtYXMsIHJlZ2V4KSB7XG4gIGZvciAodmFyIGtleVJlZiBpbiBzY2hlbWFzKSB7XG4gICAgdmFyIHNjaGVtYU9iaiA9IHNjaGVtYXNba2V5UmVmXTtcbiAgICBpZiAoIXNjaGVtYU9iai5tZXRhICYmICghcmVnZXggfHwgcmVnZXgudGVzdChrZXlSZWYpKSkge1xuICAgICAgc2VsZi5fY2FjaGUuZGVsKHNjaGVtYU9iai5jYWNoZUtleSk7XG4gICAgICBkZWxldGUgc2NoZW1hc1trZXlSZWZdO1xuICAgIH1cbiAgfVxufVxuXG5cbi8qIEB0aGlzICAgQWp2ICovXG5mdW5jdGlvbiBfYWRkU2NoZW1hKHNjaGVtYSwgc2tpcFZhbGlkYXRpb24sIG1ldGEsIHNob3VsZEFkZFNjaGVtYSkge1xuICBpZiAodHlwZW9mIHNjaGVtYSAhPSAnb2JqZWN0JyAmJiB0eXBlb2Ygc2NoZW1hICE9ICdib29sZWFuJylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NjaGVtYSBzaG91bGQgYmUgb2JqZWN0IG9yIGJvb2xlYW4nKTtcbiAgdmFyIHNlcmlhbGl6ZSA9IHRoaXMuX29wdHMuc2VyaWFsaXplO1xuICB2YXIgY2FjaGVLZXkgPSBzZXJpYWxpemUgPyBzZXJpYWxpemUoc2NoZW1hKSA6IHNjaGVtYTtcbiAgdmFyIGNhY2hlZCA9IHRoaXMuX2NhY2hlLmdldChjYWNoZUtleSk7XG4gIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgc2hvdWxkQWRkU2NoZW1hID0gc2hvdWxkQWRkU2NoZW1hIHx8IHRoaXMuX29wdHMuYWRkVXNlZFNjaGVtYSAhPT0gZmFsc2U7XG5cbiAgdmFyIGlkID0gcmVzb2x2ZS5ub3JtYWxpemVJZCh0aGlzLl9nZXRJZChzY2hlbWEpKTtcbiAgaWYgKGlkICYmIHNob3VsZEFkZFNjaGVtYSkgY2hlY2tVbmlxdWUodGhpcywgaWQpO1xuXG4gIHZhciB3aWxsVmFsaWRhdGUgPSB0aGlzLl9vcHRzLnZhbGlkYXRlU2NoZW1hICE9PSBmYWxzZSAmJiAhc2tpcFZhbGlkYXRpb247XG4gIHZhciByZWN1cnNpdmVNZXRhO1xuICBpZiAod2lsbFZhbGlkYXRlICYmICEocmVjdXJzaXZlTWV0YSA9IGlkICYmIGlkID09IHJlc29sdmUubm9ybWFsaXplSWQoc2NoZW1hLiRzY2hlbWEpKSlcbiAgICB0aGlzLnZhbGlkYXRlU2NoZW1hKHNjaGVtYSwgdHJ1ZSk7XG5cbiAgdmFyIGxvY2FsUmVmcyA9IHJlc29sdmUuaWRzLmNhbGwodGhpcywgc2NoZW1hKTtcblxuICB2YXIgc2NoZW1hT2JqID0gbmV3IFNjaGVtYU9iamVjdCh7XG4gICAgaWQ6IGlkLFxuICAgIHNjaGVtYTogc2NoZW1hLFxuICAgIGxvY2FsUmVmczogbG9jYWxSZWZzLFxuICAgIGNhY2hlS2V5OiBjYWNoZUtleSxcbiAgICBtZXRhOiBtZXRhXG4gIH0pO1xuXG4gIGlmIChpZFswXSAhPSAnIycgJiYgc2hvdWxkQWRkU2NoZW1hKSB0aGlzLl9yZWZzW2lkXSA9IHNjaGVtYU9iajtcbiAgdGhpcy5fY2FjaGUucHV0KGNhY2hlS2V5LCBzY2hlbWFPYmopO1xuXG4gIGlmICh3aWxsVmFsaWRhdGUgJiYgcmVjdXJzaXZlTWV0YSkgdGhpcy52YWxpZGF0ZVNjaGVtYShzY2hlbWEsIHRydWUpO1xuXG4gIHJldHVybiBzY2hlbWFPYmo7XG59XG5cblxuLyogQHRoaXMgICBBanYgKi9cbmZ1bmN0aW9uIF9jb21waWxlKHNjaGVtYU9iaiwgcm9vdCkge1xuICBpZiAoc2NoZW1hT2JqLmNvbXBpbGluZykge1xuICAgIHNjaGVtYU9iai52YWxpZGF0ZSA9IGNhbGxWYWxpZGF0ZTtcbiAgICBjYWxsVmFsaWRhdGUuc2NoZW1hID0gc2NoZW1hT2JqLnNjaGVtYTtcbiAgICBjYWxsVmFsaWRhdGUuZXJyb3JzID0gbnVsbDtcbiAgICBjYWxsVmFsaWRhdGUucm9vdCA9IHJvb3QgPyByb290IDogY2FsbFZhbGlkYXRlO1xuICAgIGlmIChzY2hlbWFPYmouc2NoZW1hLiRhc3luYyA9PT0gdHJ1ZSlcbiAgICAgIGNhbGxWYWxpZGF0ZS4kYXN5bmMgPSB0cnVlO1xuICAgIHJldHVybiBjYWxsVmFsaWRhdGU7XG4gIH1cbiAgc2NoZW1hT2JqLmNvbXBpbGluZyA9IHRydWU7XG5cbiAgdmFyIGN1cnJlbnRPcHRzO1xuICBpZiAoc2NoZW1hT2JqLm1ldGEpIHtcbiAgICBjdXJyZW50T3B0cyA9IHRoaXMuX29wdHM7XG4gICAgdGhpcy5fb3B0cyA9IHRoaXMuX21ldGFPcHRzO1xuICB9XG5cbiAgdmFyIHY7XG4gIHRyeSB7IHYgPSBjb21waWxlU2NoZW1hLmNhbGwodGhpcywgc2NoZW1hT2JqLnNjaGVtYSwgcm9vdCwgc2NoZW1hT2JqLmxvY2FsUmVmcyk7IH1cbiAgY2F0Y2goZSkge1xuICAgIGRlbGV0ZSBzY2hlbWFPYmoudmFsaWRhdGU7XG4gICAgdGhyb3cgZTtcbiAgfVxuICBmaW5hbGx5IHtcbiAgICBzY2hlbWFPYmouY29tcGlsaW5nID0gZmFsc2U7XG4gICAgaWYgKHNjaGVtYU9iai5tZXRhKSB0aGlzLl9vcHRzID0gY3VycmVudE9wdHM7XG4gIH1cblxuICBzY2hlbWFPYmoudmFsaWRhdGUgPSB2O1xuICBzY2hlbWFPYmoucmVmcyA9IHYucmVmcztcbiAgc2NoZW1hT2JqLnJlZlZhbCA9IHYucmVmVmFsO1xuICBzY2hlbWFPYmoucm9vdCA9IHYucm9vdDtcbiAgcmV0dXJuIHY7XG5cblxuICAvKiBAdGhpcyAgIHsqfSAtIGN1c3RvbSBjb250ZXh0LCBzZWUgcGFzc0NvbnRleHQgb3B0aW9uICovXG4gIGZ1bmN0aW9uIGNhbGxWYWxpZGF0ZSgpIHtcbiAgICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gICAgdmFyIF92YWxpZGF0ZSA9IHNjaGVtYU9iai52YWxpZGF0ZTtcbiAgICB2YXIgcmVzdWx0ID0gX3ZhbGlkYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgY2FsbFZhbGlkYXRlLmVycm9ycyA9IF92YWxpZGF0ZS5lcnJvcnM7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGNob29zZUdldElkKG9wdHMpIHtcbiAgc3dpdGNoIChvcHRzLnNjaGVtYUlkKSB7XG4gICAgY2FzZSAnYXV0byc6IHJldHVybiBfZ2V0JElkT3JJZDtcbiAgICBjYXNlICdpZCc6IHJldHVybiBfZ2V0SWQ7XG4gICAgZGVmYXVsdDogcmV0dXJuIF9nZXQkSWQ7XG4gIH1cbn1cblxuLyogQHRoaXMgICBBanYgKi9cbmZ1bmN0aW9uIF9nZXRJZChzY2hlbWEpIHtcbiAgaWYgKHNjaGVtYS4kaWQpIHRoaXMubG9nZ2VyLndhcm4oJ3NjaGVtYSAkaWQgaWdub3JlZCcsIHNjaGVtYS4kaWQpO1xuICByZXR1cm4gc2NoZW1hLmlkO1xufVxuXG4vKiBAdGhpcyAgIEFqdiAqL1xuZnVuY3Rpb24gX2dldCRJZChzY2hlbWEpIHtcbiAgaWYgKHNjaGVtYS5pZCkgdGhpcy5sb2dnZXIud2Fybignc2NoZW1hIGlkIGlnbm9yZWQnLCBzY2hlbWEuaWQpO1xuICByZXR1cm4gc2NoZW1hLiRpZDtcbn1cblxuXG5mdW5jdGlvbiBfZ2V0JElkT3JJZChzY2hlbWEpIHtcbiAgaWYgKHNjaGVtYS4kaWQgJiYgc2NoZW1hLmlkICYmIHNjaGVtYS4kaWQgIT0gc2NoZW1hLmlkKVxuICAgIHRocm93IG5ldyBFcnJvcignc2NoZW1hICRpZCBpcyBkaWZmZXJlbnQgZnJvbSBpZCcpO1xuICByZXR1cm4gc2NoZW1hLiRpZCB8fCBzY2hlbWEuaWQ7XG59XG5cblxuLyoqXG4gKiBDb252ZXJ0IGFycmF5IG9mIGVycm9yIG1lc3NhZ2Ugb2JqZWN0cyB0byBzdHJpbmdcbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtBcnJheTxPYmplY3Q+fSBlcnJvcnMgb3B0aW9uYWwgYXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvcnMsIGlmIG5vdCBwYXNzZWQgZXJyb3JzIGZyb20gdGhlIGluc3RhbmNlIGFyZSB1c2VkLlxuICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zIG9wdGlvbmFsIG9wdGlvbnMgd2l0aCBwcm9wZXJ0aWVzIGBzZXBhcmF0b3JgIGFuZCBgZGF0YVZhcmAuXG4gKiBAcmV0dXJuIHtTdHJpbmd9IGh1bWFuIHJlYWRhYmxlIHN0cmluZyB3aXRoIGFsbCBlcnJvcnMgZGVzY3JpcHRpb25zXG4gKi9cbmZ1bmN0aW9uIGVycm9yc1RleHQoZXJyb3JzLCBvcHRpb25zKSB7XG4gIGVycm9ycyA9IGVycm9ycyB8fCB0aGlzLmVycm9ycztcbiAgaWYgKCFlcnJvcnMpIHJldHVybiAnTm8gZXJyb3JzJztcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHZhciBzZXBhcmF0b3IgPSBvcHRpb25zLnNlcGFyYXRvciA9PT0gdW5kZWZpbmVkID8gJywgJyA6IG9wdGlvbnMuc2VwYXJhdG9yO1xuICB2YXIgZGF0YVZhciA9IG9wdGlvbnMuZGF0YVZhciA9PT0gdW5kZWZpbmVkID8gJ2RhdGEnIDogb3B0aW9ucy5kYXRhVmFyO1xuXG4gIHZhciB0ZXh0ID0gJyc7XG4gIGZvciAodmFyIGk9MDsgaTxlcnJvcnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZSA9IGVycm9yc1tpXTtcbiAgICBpZiAoZSkgdGV4dCArPSBkYXRhVmFyICsgZS5kYXRhUGF0aCArICcgJyArIGUubWVzc2FnZSArIHNlcGFyYXRvcjtcbiAgfVxuICByZXR1cm4gdGV4dC5zbGljZSgwLCAtc2VwYXJhdG9yLmxlbmd0aCk7XG59XG5cblxuLyoqXG4gKiBBZGQgY3VzdG9tIGZvcm1hdFxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIGZvcm1hdCBuYW1lXG4gKiBAcGFyYW0ge1N0cmluZ3xSZWdFeHB8RnVuY3Rpb259IGZvcm1hdCBzdHJpbmcgaXMgY29udmVydGVkIHRvIFJlZ0V4cDsgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBib29sZWFuICh0cnVlIHdoZW4gdmFsaWQpXG4gKiBAcmV0dXJuIHtBanZ9IHRoaXMgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICovXG5mdW5jdGlvbiBhZGRGb3JtYXQobmFtZSwgZm9ybWF0KSB7XG4gIGlmICh0eXBlb2YgZm9ybWF0ID09ICdzdHJpbmcnKSBmb3JtYXQgPSBuZXcgUmVnRXhwKGZvcm1hdCk7XG4gIHRoaXMuX2Zvcm1hdHNbbmFtZV0gPSBmb3JtYXQ7XG4gIHJldHVybiB0aGlzO1xufVxuXG5cbmZ1bmN0aW9uIGFkZERlZmF1bHRNZXRhU2NoZW1hKHNlbGYpIHtcbiAgdmFyICRkYXRhU2NoZW1hO1xuICBpZiAoc2VsZi5fb3B0cy4kZGF0YSkge1xuICAgICRkYXRhU2NoZW1hID0gcmVxdWlyZSgnLi9yZWZzL2RhdGEuanNvbicpO1xuICAgIHNlbGYuYWRkTWV0YVNjaGVtYSgkZGF0YVNjaGVtYSwgJGRhdGFTY2hlbWEuJGlkLCB0cnVlKTtcbiAgfVxuICBpZiAoc2VsZi5fb3B0cy5tZXRhID09PSBmYWxzZSkgcmV0dXJuO1xuICB2YXIgbWV0YVNjaGVtYSA9IHJlcXVpcmUoJy4vcmVmcy9qc29uLXNjaGVtYS1kcmFmdC0wNy5qc29uJyk7XG4gIGlmIChzZWxmLl9vcHRzLiRkYXRhKSBtZXRhU2NoZW1hID0gJGRhdGFNZXRhU2NoZW1hKG1ldGFTY2hlbWEsIE1FVEFfU1VQUE9SVF9EQVRBKTtcbiAgc2VsZi5hZGRNZXRhU2NoZW1hKG1ldGFTY2hlbWEsIE1FVEFfU0NIRU1BX0lELCB0cnVlKTtcbiAgc2VsZi5fcmVmc1snaHR0cDovL2pzb24tc2NoZW1hLm9yZy9zY2hlbWEnXSA9IE1FVEFfU0NIRU1BX0lEO1xufVxuXG5cbmZ1bmN0aW9uIGFkZEluaXRpYWxTY2hlbWFzKHNlbGYpIHtcbiAgdmFyIG9wdHNTY2hlbWFzID0gc2VsZi5fb3B0cy5zY2hlbWFzO1xuICBpZiAoIW9wdHNTY2hlbWFzKSByZXR1cm47XG4gIGlmIChBcnJheS5pc0FycmF5KG9wdHNTY2hlbWFzKSkgc2VsZi5hZGRTY2hlbWEob3B0c1NjaGVtYXMpO1xuICBlbHNlIGZvciAodmFyIGtleSBpbiBvcHRzU2NoZW1hcykgc2VsZi5hZGRTY2hlbWEob3B0c1NjaGVtYXNba2V5XSwga2V5KTtcbn1cblxuXG5mdW5jdGlvbiBhZGRJbml0aWFsRm9ybWF0cyhzZWxmKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gc2VsZi5fb3B0cy5mb3JtYXRzKSB7XG4gICAgdmFyIGZvcm1hdCA9IHNlbGYuX29wdHMuZm9ybWF0c1tuYW1lXTtcbiAgICBzZWxmLmFkZEZvcm1hdChuYW1lLCBmb3JtYXQpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gYWRkSW5pdGlhbEtleXdvcmRzKHNlbGYpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiBzZWxmLl9vcHRzLmtleXdvcmRzKSB7XG4gICAgdmFyIGtleXdvcmQgPSBzZWxmLl9vcHRzLmtleXdvcmRzW25hbWVdO1xuICAgIHNlbGYuYWRkS2V5d29yZChuYW1lLCBrZXl3b3JkKTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGNoZWNrVW5pcXVlKHNlbGYsIGlkKSB7XG4gIGlmIChzZWxmLl9zY2hlbWFzW2lkXSB8fCBzZWxmLl9yZWZzW2lkXSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NjaGVtYSB3aXRoIGtleSBvciBpZCBcIicgKyBpZCArICdcIiBhbHJlYWR5IGV4aXN0cycpO1xufVxuXG5cbmZ1bmN0aW9uIGdldE1ldGFTY2hlbWFPcHRpb25zKHNlbGYpIHtcbiAgdmFyIG1ldGFPcHRzID0gdXRpbC5jb3B5KHNlbGYuX29wdHMpO1xuICBmb3IgKHZhciBpPTA7IGk8TUVUQV9JR05PUkVfT1BUSU9OUy5sZW5ndGg7IGkrKylcbiAgICBkZWxldGUgbWV0YU9wdHNbTUVUQV9JR05PUkVfT1BUSU9OU1tpXV07XG4gIHJldHVybiBtZXRhT3B0cztcbn1cblxuXG5mdW5jdGlvbiBzZXRMb2dnZXIoc2VsZikge1xuICB2YXIgbG9nZ2VyID0gc2VsZi5fb3B0cy5sb2dnZXI7XG4gIGlmIChsb2dnZXIgPT09IGZhbHNlKSB7XG4gICAgc2VsZi5sb2dnZXIgPSB7bG9nOiBub29wLCB3YXJuOiBub29wLCBlcnJvcjogbm9vcH07XG4gIH0gZWxzZSB7XG4gICAgaWYgKGxvZ2dlciA9PT0gdW5kZWZpbmVkKSBsb2dnZXIgPSBjb25zb2xlO1xuICAgIGlmICghKHR5cGVvZiBsb2dnZXIgPT0gJ29iamVjdCcgJiYgbG9nZ2VyLmxvZyAmJiBsb2dnZXIud2FybiAmJiBsb2dnZXIuZXJyb3IpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdsb2dnZXIgbXVzdCBpbXBsZW1lbnQgbG9nLCB3YXJuIGFuZCBlcnJvciBtZXRob2RzJyk7XG4gICAgc2VsZi5sb2dnZXIgPSBsb2dnZXI7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBub29wKCkge31cbiIsImltcG9ydCBBanYgZnJvbSAnYWp2JztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuZXhwb3J0IGNvbnN0IEFKVl9DT05GSUcgPSB7XG4gICAgZXJyb3JEYXRhUGF0aDogJ3Byb3BlcnR5JyxcbiAgICBhbGxFcnJvcnM6IHRydWUsXG4gICAgbXVsdGlwbGVPZlByZWNpc2lvbjogOCxcbiAgICBzY2hlbWFJZDogJ2F1dG8nLFxuICAgIHVua25vd25Gb3JtYXRzOiAnaWdub3JlJyxcbn07XG5leHBvcnQgY29uc3QgQ09MT1JfRk9STUFUX1JFR0VYID0gL14oIz8oWzAtOUEtRmEtZl17M30pezEsMn1cXGJ8YXF1YXxibGFja3xibHVlfGZ1Y2hzaWF8Z3JheXxncmVlbnxsaW1lfG1hcm9vbnxuYXZ5fG9saXZlfG9yYW5nZXxwdXJwbGV8cmVkfHNpbHZlcnx0ZWFsfHdoaXRlfHllbGxvd3wocmdiXFwoXFxzKlxcYihbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pXFxiXFxzKixcXHMqXFxiKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcXGJcXHMqLFxccypcXGIoWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKVxcYlxccypcXCkpfChyZ2JcXChcXHMqKFxcZD9cXGQlfDEwMCUpK1xccyosXFxzKihcXGQ/XFxkJXwxMDAlKStcXHMqLFxccyooXFxkP1xcZCV8MTAwJSkrXFxzKlxcKSkpJC87XG5leHBvcnQgY29uc3QgREFUQV9VUkxfRk9STUFUX1JFR0VYID0gL15kYXRhOihbYS16XStcXC9bYS16MC05LSsuXSspPzsoPzpuYW1lPSguKik7KT9iYXNlNjQsKC4qKSQvO1xuLyoqIENyZWF0ZXMgYW4gQWp2IHZlcnNpb24gNiBpbXBsZW1lbnRhdGlvbiBvYmplY3Qgd2l0aCBzdGFuZGFyZCBzdXBwb3J0IGZvciB0aGUgJ2NvbG9yYCBhbmQgYGRhdGEtdXJsYCBjdXN0b20gZm9ybWF0cy5cbiAqIElmIGBhZGRpdGlvbmFsTWV0YVNjaGVtYXNgIGFyZSBwcm92aWRlZCB0aGVuIHRoZSBBanYgaW5zdGFuY2UgaXMgbW9kaWZpZWQgdG8gYWRkIGVhY2ggb2YgdGhlIG1ldGEgc2NoZW1hcyBpbiB0aGVcbiAqIGxpc3QuIElmIGBjdXN0b21Gb3JtYXRzYCBhcmUgcHJvdmlkZWQgdGhlbiB0aG9zZSBhZGRpdGlvbmFsIGZvcm1hdHMgYXJlIGFkZGVkIHRvIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBmb3JtYXRzLiBJZlxuICogYGFqdk9wdGlvbnNPdmVycmlkZXNgIGFyZSBwcm92aWRlZCB0aGVuIHRoZXkgYXJlIHNwcmVhZCBvbiB0b3Agb2YgdGhlIGRlZmF1bHQgYEFKVl9DT05GSUdgIG9wdGlvbnMgd2hlbiBjb25zdHJ1Y3RpbmdcbiAqIHRoZSBgQWp2YCBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0gW2FkZGl0aW9uYWxNZXRhU2NoZW1hc10gLSBUaGUgbGlzdCBvZiBhZGRpdGlvbmFsIG1ldGEgc2NoZW1hcyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIGFjY2Vzc1xuICogQHBhcmFtIFtjdXN0b21Gb3JtYXRzXSAtIFRoZSBzZXQgb2YgYWRkaXRpb25hbCBjdXN0b20gZm9ybWF0cyB0aGF0IHRoZSB2YWxpZGF0b3Igd2lsbCBzdXBwb3J0XG4gKiBAcGFyYW0gW2Fqdk9wdGlvbnNPdmVycmlkZXM9e31dIC0gVGhlIHNldCBvZiB2YWxpZGF0b3IgY29uZmlnIG92ZXJyaWRlIG9wdGlvbnNcbiAqIEBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZSBgQHJqc2YvdmFsaWRhdG9yLWFqdjhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQWp2SW5zdGFuY2UoYWRkaXRpb25hbE1ldGFTY2hlbWFzLCBjdXN0b21Gb3JtYXRzLCBhanZPcHRpb25zT3ZlcnJpZGVzID0ge30pIHtcbiAgICBjb25zdCBhanYgPSBuZXcgQWp2KHsgLi4uQUpWX0NPTkZJRywgLi4uYWp2T3B0aW9uc092ZXJyaWRlcyB9KTtcbiAgICAvLyBhZGQgY3VzdG9tIGZvcm1hdHNcbiAgICBhanYuYWRkRm9ybWF0KCdkYXRhLXVybCcsIERBVEFfVVJMX0ZPUk1BVF9SRUdFWCk7XG4gICAgYWp2LmFkZEZvcm1hdCgnY29sb3InLCBDT0xPUl9GT1JNQVRfUkVHRVgpO1xuICAgIC8vIGFkZCBtb3JlIHNjaGVtYXMgdG8gdmFsaWRhdGUgYWdhaW5zdFxuICAgIGlmIChBcnJheS5pc0FycmF5KGFkZGl0aW9uYWxNZXRhU2NoZW1hcykpIHtcbiAgICAgICAgYWp2LmFkZE1ldGFTY2hlbWEoYWRkaXRpb25hbE1ldGFTY2hlbWFzKTtcbiAgICB9XG4gICAgLy8gYWRkIG1vcmUgY3VzdG9tIGZvcm1hdHMgdG8gdmFsaWRhdGUgYWdhaW5zdFxuICAgIGlmIChpc09iamVjdChjdXN0b21Gb3JtYXRzKSkge1xuICAgICAgICBPYmplY3Qua2V5cyhjdXN0b21Gb3JtYXRzKS5mb3JFYWNoKChmb3JtYXROYW1lKSA9PiB7XG4gICAgICAgICAgICBhanYuYWRkRm9ybWF0KGZvcm1hdE5hbWUsIGN1c3RvbUZvcm1hdHNbZm9ybWF0TmFtZV0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFqdjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZUFqdkluc3RhbmNlLmpzLm1hcCIsImltcG9ydCB7IGNyZWF0ZUVycm9ySGFuZGxlciwgZGVlcEVxdWFscywgZ2V0RGVmYXVsdEZvcm1TdGF0ZSwgUk9PVF9TQ0hFTUFfUFJFRklYLCB0b0Vycm9yTGlzdCwgdG9FcnJvclNjaGVtYSwgdW53cmFwRXJyb3JIYW5kbGVyLCB2YWxpZGF0aW9uRGF0YU1lcmdlLCB3aXRoSWRSZWZQcmVmaXgsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IGNyZWF0ZUFqdkluc3RhbmNlIGZyb20gJy4vY3JlYXRlQWp2SW5zdGFuY2UnO1xuLyoqIGBWYWxpZGF0b3JUeXBlYCBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgdGhlIEFKViA2IHZhbGlkYXRpb24gbWVjaGFuaXNtLlxuICpcbiAqIEBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZSBgQHJqc2YvdmFsaWRhdG9yLWFqdjhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQUpWNlZhbGlkYXRvciB7XG4gICAgLyoqIENvbnN0cnVjdHMgYW4gYEFKVjZWYWxpZGF0b3JgIGluc3RhbmNlIHVzaW5nIHRoZSBgb3B0aW9uc2BcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGBDdXN0b21WYWxpZGF0b3JPcHRpb25zVHlwZWAgb3B0aW9ucyB0aGF0IGFyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgQUpWIGluc3RhbmNlXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBjb25zdCB7IGFkZGl0aW9uYWxNZXRhU2NoZW1hcywgY3VzdG9tRm9ybWF0cywgYWp2T3B0aW9uc092ZXJyaWRlcyB9ID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5hanYgPSBjcmVhdGVBanZJbnN0YW5jZShhZGRpdGlvbmFsTWV0YVNjaGVtYXMsIGN1c3RvbUZvcm1hdHMsIGFqdk9wdGlvbnNPdmVycmlkZXMpO1xuICAgIH1cbiAgICAvKiogQ29udmVydHMgYW4gYGVycm9yU2NoZW1hYCBpbnRvIGEgbGlzdCBvZiBgUkpTRlZhbGlkYXRpb25FcnJvcnNgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXJyb3JTY2hlbWEgLSBUaGUgYEVycm9yU2NoZW1hYCBpbnN0YW5jZSB0byBjb252ZXJ0XG4gICAgICogQHBhcmFtIFtmaWVsZFBhdGg9W11dIC0gVGhlIGN1cnJlbnQgZmllbGQgcGF0aCwgZGVmYXVsdHMgdG8gW10gaWYgbm90IHNwZWNpZmllZFxuICAgICAqIEBkZXByZWNhdGVkIC0gVXNlIHRoZSBgdG9FcnJvckxpc3QoKWAgZnVuY3Rpb24gcHJvdmlkZWQgYnkgYEByanNmL3V0aWxzYCBpbnN0ZWFkLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZCBpblxuICAgICAqICAgICAgICB0aGUgbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAqL1xuICAgIHRvRXJyb3JMaXN0KGVycm9yU2NoZW1hLCBmaWVsZFBhdGggPSBbXSkge1xuICAgICAgICByZXR1cm4gdG9FcnJvckxpc3QoZXJyb3JTY2hlbWEsIGZpZWxkUGF0aCk7XG4gICAgfVxuICAgIC8qKiBUcmFuc2Zvcm1pbmcgdGhlIGVycm9yIG91dHB1dCBmcm9tIGFqdiB0byBmb3JtYXQgdXNlZCBieSBAcmpzZi91dGlscy5cbiAgICAgKiBBdCBzb21lIHBvaW50LCBjb21wb25lbnRzIHNob3VsZCBiZSB1cGRhdGVkIHRvIHN1cHBvcnQgYWp2LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVycm9ycyAtIFRoZSBsaXN0IG9mIEFKViBlcnJvcnMgdG8gY29udmVydCB0byBgUkpTRlZhbGlkYXRpb25FcnJvcnNgXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1SSlNGVmFsaWRhdGlvbkVycm9ycyhlcnJvcnMgPSBbXSkge1xuICAgICAgICByZXR1cm4gZXJyb3JzLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBkYXRhUGF0aCwga2V5d29yZCwgbWVzc2FnZSwgcGFyYW1zLCBzY2hlbWFQYXRoIH0gPSBlO1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydHkgPSBgJHtkYXRhUGF0aH1gO1xuICAgICAgICAgICAgLy8gcHV0IGRhdGEgaW4gZXhwZWN0ZWQgZm9ybWF0XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGtleXdvcmQsXG4gICAgICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgc3RhY2s6IGAke3Byb3BlcnR5fSAke21lc3NhZ2V9YC50cmltKCksXG4gICAgICAgICAgICAgICAgc2NoZW1hUGF0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKiogUnVucyB0aGUgcHVyZSB2YWxpZGF0aW9uIG9mIHRoZSBgc2NoZW1hYCBhbmQgYGZvcm1EYXRhYCB3aXRob3V0IGFueSBvZiB0aGUgUkpTRiBmdW5jdGlvbmFsaXR5LiBQcm92aWRlZCBmb3IgdXNlXG4gICAgICogYnkgdGhlIHBsYXlncm91bmQuIFJldHVybnMgdGhlIGBlcnJvcnNgIGZyb20gdGhlIHZhbGlkYXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGFnYWluc3Qgd2hpY2ggdG8gdmFsaWRhdGUgdGhlIGZvcm0gZGF0YSAgICogQHBhcmFtIHNjaGVtYVxuICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgdG8gdmFsaWRhdGVcbiAgICAgKi9cbiAgICByYXdWYWxpZGF0aW9uKHNjaGVtYSwgZm9ybURhdGEpIHtcbiAgICAgICAgbGV0IHZhbGlkYXRpb25FcnJvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYWp2LnZhbGlkYXRlKHNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25FcnJvciA9IGVycjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmFqdi5lcnJvcnMgfHwgdW5kZWZpbmVkO1xuICAgICAgICAvLyBDbGVhciBlcnJvcnMgdG8gcHJldmVudCBwZXJzaXN0ZW50IGVycm9ycywgc2VlICMxMTA0XG4gICAgICAgIHRoaXMuYWp2LmVycm9ycyA9IG51bGw7XG4gICAgICAgIHJldHVybiB7IGVycm9yczogZXJyb3JzLCB2YWxpZGF0aW9uRXJyb3IgfTtcbiAgICB9XG4gICAgLyoqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBgZm9ybURhdGFgIHdpdGggYW4gb3B0aW9uYWwgdXNlciBjb250cmlidXRlZCBgY3VzdG9tVmFsaWRhdGVgIGZ1bmN0aW9uLCB3aGljaCByZWNlaXZlc1xuICAgICAqIHRoZSBmb3JtIGRhdGEgYW5kIGEgYGVycm9ySGFuZGxlcmAgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gYWRkIGN1c3RvbSB2YWxpZGF0aW9uIGVycm9ycyBmb3IgZWFjaCBmaWVsZC4gQWxzb1xuICAgICAqIHN1cHBvcnRzIGEgYHRyYW5zZm9ybUVycm9yc2AgZnVuY3Rpb24gdGhhdCB3aWxsIHRha2UgdGhlIHJhdyBBSlYgdmFsaWRhdGlvbiBlcnJvcnMsIHByaW9yIHRvIGN1c3RvbSB2YWxpZGF0aW9uIGFuZFxuICAgICAqIHRyYW5zZm9ybSB0aGVtIGluIHdoYXQgZXZlciB3YXkgaXQgY2hvb3Nlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgdG8gdmFsaWRhdGVcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBhZ2FpbnN0IHdoaWNoIHRvIHZhbGlkYXRlIHRoZSBmb3JtIGRhdGFcbiAgICAgKiBAcGFyYW0gW2N1c3RvbVZhbGlkYXRlXSAtIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0byBwZXJmb3JtIGN1c3RvbSB2YWxpZGF0aW9uXG4gICAgICogQHBhcmFtIFt0cmFuc2Zvcm1FcnJvcnNdIC0gQW4gb3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHRvIHRyYW5zZm9ybSBlcnJvcnMgYWZ0ZXIgQUpWIHZhbGlkYXRpb25cbiAgICAgKiBAcGFyYW0gW3VpU2NoZW1hXSAtIEFuIG9wdGlvbmFsIHVpU2NoZW1hIHRoYXQgaXMgcGFzc2VkIHRvIGB0cmFuc2Zvcm1FcnJvcnNgIGFuZCBgY3VzdG9tVmFsaWRhdGVgXG4gICAgICovXG4gICAgdmFsaWRhdGVGb3JtRGF0YShmb3JtRGF0YSwgc2NoZW1hLCBjdXN0b21WYWxpZGF0ZSwgdHJhbnNmb3JtRXJyb3JzLCB1aVNjaGVtYSkge1xuICAgICAgICBjb25zdCByb290U2NoZW1hID0gc2NoZW1hO1xuICAgICAgICBjb25zdCByYXdFcnJvcnMgPSB0aGlzLnJhd1ZhbGlkYXRpb24oc2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgICAgIGNvbnN0IHsgdmFsaWRhdGlvbkVycm9yIH0gPSByYXdFcnJvcnM7XG4gICAgICAgIGxldCBlcnJvcnMgPSB0aGlzLnRyYW5zZm9ybVJKU0ZWYWxpZGF0aW9uRXJyb3JzKHJhd0Vycm9ycy5lcnJvcnMpO1xuICAgICAgICBjb25zdCBub1Byb3Blck1ldGFTY2hlbWEgPSB2YWxpZGF0aW9uRXJyb3IgJiYgdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2UgJiYgdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ25vIHNjaGVtYSB3aXRoIGtleSBvciByZWYgJyk7XG4gICAgICAgIGlmIChub1Byb3Blck1ldGFTY2hlbWEpIHtcbiAgICAgICAgICAgIGVycm9ycyA9IFsuLi5lcnJvcnMsIHsgc3RhY2s6IHZhbGlkYXRpb25FcnJvci5tZXNzYWdlIH1dO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRXJyb3JzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBlcnJvcnMgPSB0cmFuc2Zvcm1FcnJvcnMoZXJyb3JzLCB1aVNjaGVtYSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGVycm9yU2NoZW1hID0gdG9FcnJvclNjaGVtYShlcnJvcnMpO1xuICAgICAgICBpZiAobm9Qcm9wZXJNZXRhU2NoZW1hKSB7XG4gICAgICAgICAgICBlcnJvclNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAuLi5lcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgICAgICRzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fZXJyb3JzOiBbdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2VdLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgY3VzdG9tVmFsaWRhdGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGVycm9ycywgZXJyb3JTY2hlbWEgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJbmNsdWRlIGZvcm0gZGF0YSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMsIHdoaWNoIGlzIHJlcXVpcmVkIGZvciBjdXN0b20gdmFsaWRhdGlvbi5cbiAgICAgICAgY29uc3QgbmV3Rm9ybURhdGEgPSBnZXREZWZhdWx0Rm9ybVN0YXRlKHRoaXMsIHNjaGVtYSwgZm9ybURhdGEsIHJvb3RTY2hlbWEsIHRydWUpO1xuICAgICAgICBjb25zdCBlcnJvckhhbmRsZXIgPSBjdXN0b21WYWxpZGF0ZShuZXdGb3JtRGF0YSwgY3JlYXRlRXJyb3JIYW5kbGVyKG5ld0Zvcm1EYXRhKSwgdWlTY2hlbWEpO1xuICAgICAgICBjb25zdCB1c2VyRXJyb3JTY2hlbWEgPSB1bndyYXBFcnJvckhhbmRsZXIoZXJyb3JIYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25EYXRhTWVyZ2UoeyBlcnJvcnMsIGVycm9yU2NoZW1hIH0sIHVzZXJFcnJvclNjaGVtYSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIGEgc2NoZW1hIG5lZWRzIHRvIGJlIGFkZGVkIGFuZCBpZiB0aGUgcm9vdCBzY2hlbWFzIGRvbid0IG1hdGNoIGl0IHJlbW92ZXMgdGhlIG9sZCByb290IHNjaGVtYSBmcm9tIHRoZSBhanYgaW5zdGFuY2UgYW5kIGFkZHMgdGhlIG5ldyBvbmUuXG4gICAgICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdXNlZCB0byBwcm92aWRlICRyZWYgcmVzb2x1dGlvbnNcbiAgICAgKi9cbiAgICBoYW5kbGVTY2hlbWFVcGRhdGUocm9vdFNjaGVtYSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHJvb3RTY2hlbWFJZCA9IFJPT1RfU0NIRU1BX1BSRUZJWDtcbiAgICAgICAgLy8gYWRkIHRoZSByb290U2NoZW1hIFJPT1RfU0NIRU1BX1BSRUZJWCBhcyBpZC5cbiAgICAgICAgLy8gaWYgc2NoZW1hIHZhbGlkYXRvciBpbnN0YW5jZSBkb2Vzbid0IGV4aXN0LCBhZGQgaXQuXG4gICAgICAgIC8vIGVsc2UgJ2hhbmRsZVJvb3RTY2hlbWFDaGFuZ2UnIHNob3VsZCBiZSBjYWxsZWQgaWYgdGhlIHJvb3Qgc2NoZW1hIGNoYW5nZXMgc28gd2UgZG9uJ3QgaGF2ZSB0byByZW1vdmUgYW5kIHJlY29tcGlsZSB0aGUgc2NoZW1hIGV2ZXJ5IHJ1bi5cbiAgICAgICAgaWYgKHRoaXMuYWp2LmdldFNjaGVtYShST09UX1NDSEVNQV9QUkVGSVgpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYWp2LmFkZFNjaGVtYShyb290U2NoZW1hLCBST09UX1NDSEVNQV9QUkVGSVgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFkZWVwRXF1YWxzKHJvb3RTY2hlbWEsIChfYSA9IHRoaXMuYWp2LmdldFNjaGVtYShST09UX1NDSEVNQV9QUkVGSVgpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2NoZW1hKSkge1xuICAgICAgICAgICAgdGhpcy5hanYucmVtb3ZlU2NoZW1hKHJvb3RTY2hlbWFJZCk7XG4gICAgICAgICAgICB0aGlzLmFqdi5hZGRTY2hlbWEocm9vdFNjaGVtYSwgcm9vdFNjaGVtYUlkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogVmFsaWRhdGVzIGRhdGEgYWdhaW5zdCBhIHNjaGVtYSwgcmV0dXJuaW5nIHRydWUgaWYgdGhlIGRhdGEgaXMgdmFsaWQsIG9yXG4gICAgICogZmFsc2Ugb3RoZXJ3aXNlLiBJZiB0aGUgc2NoZW1hIGlzIGludmFsaWQsIHRoZW4gdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVyblxuICAgICAqIGZhbHNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgYWdhaW5zdCB3aGljaCB0byB2YWxpZGF0ZSB0aGUgZm9ybSBkYXRhICAgKiBAcGFyYW0gc2NoZW1hXG4gICAgICogQHBhcmFtIGZvcm1EYXRhLSAtIFRoZSBmb3JtIGRhdGEgdG8gdmFsaWRhdGVcbiAgICAgKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB1c2VkIHRvIHByb3ZpZGUgJHJlZiByZXNvbHV0aW9uc1xuICAgICAqL1xuICAgIGlzVmFsaWQoc2NoZW1hLCBmb3JtRGF0YSwgcm9vdFNjaGVtYSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTY2hlbWFVcGRhdGUocm9vdFNjaGVtYSk7XG4gICAgICAgICAgICAvLyB0aGVuIHJld3JpdGUgdGhlIHNjaGVtYSByZWYncyB0byBwb2ludCB0byB0aGUgcm9vdFNjaGVtYVxuICAgICAgICAgICAgLy8gdGhpcyBhY2NvdW50cyBmb3IgdGhlIGNhc2Ugd2hlcmUgc2NoZW1hIGhhdmUgcmVmZXJlbmNlcyB0byBtb2RlbHNcbiAgICAgICAgICAgIC8vIHRoYXQgbGl2ZXMgaW4gdGhlIHJvb3RTY2hlbWEgYnV0IG5vdCBpbiB0aGUgc2NoZW1hIGluIHF1ZXN0aW9uLlxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5hanYudmFsaWRhdGUod2l0aElkUmVmUHJlZml4KHNjaGVtYSksIGZvcm1EYXRhKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZhbGlkYXRvci5qcy5tYXAiLCJpbXBvcnQgQUpWNlZhbGlkYXRvciBmcm9tICcuL3ZhbGlkYXRvcic7XG4vKiogQ3JlYXRlcyBhbmQgcmV0dXJucyBhIGN1c3RvbWl6ZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCB3aXRoIHRoZSBnaXZlbiBjdXN0b21pemF0aW9uIGBvcHRpb25zYCBpZlxuICogcHJvdmlkZWQuXG4gKlxuICogQHBhcmFtIFtvcHRpb25zPXt9XSAtIFRoZSBgQ3VzdG9tVmFsaWRhdG9yT3B0aW9uc1R5cGVgIG9wdGlvbnMgdGhhdCBhcmUgdXNlZCB0byBjcmVhdGUgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnN0YW5jZVxuICogQGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIGBAcmpzZi92YWxpZGF0b3ItYWp2OFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjdXN0b21pemVWYWxpZGF0b3Iob3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBBSlY2VmFsaWRhdG9yKG9wdGlvbnMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3VzdG9taXplVmFsaWRhdG9yLmpzLm1hcCIsImltcG9ydCBjdXN0b21pemVWYWxpZGF0b3IgZnJvbSAnLi9jdXN0b21pemVWYWxpZGF0b3InO1xuZXhwb3J0IHsgY3VzdG9taXplVmFsaWRhdG9yIH07XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbi8qKiBAZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUgYEByanNmL3ZhbGlkYXRvci1hanY4XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGN1c3RvbWl6ZVZhbGlkYXRvcigpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0JyksXG4gICAgYmFzZVNldCA9IHJlcXVpcmUoJy4vX2Jhc2VTZXQnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVBpY2tCeShvYmplY3QsIHBhdGhzLCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICB2YWx1ZSA9IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcblxuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIHBhdGgpKSB7XG4gICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrQnk7XG4iLCJ2YXIgYmFzZVBpY2tCeSA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrQnknKSxcbiAgICBoYXNJbiA9IHJlcXVpcmUoJy4vaGFzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGljayhvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrO1xuIiwidmFyIGJhc2VQaWNrID0gcmVxdWlyZSgnLi9fYmFzZVBpY2snKSxcbiAgICBmbGF0UmVzdCA9IHJlcXVpcmUoJy4vX2ZsYXRSZXN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gKlxuICogXy5waWNrKG9iamVjdCwgWydhJywgJ2MnXSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAqL1xudmFyIHBpY2sgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwaWNrO1xuIiwiLy8gVGhpcyBmaWxlIHJlcGxhY2VzIGBpbmRleC5qc2AgaW4gYnVuZGxlcnMgbGlrZSB3ZWJwYWNrIG9yIFJvbGx1cCxcbi8vIGFjY29yZGluZyB0byBgYnJvd3NlcmAgY29uZmlnIGluIGBwYWNrYWdlLmpzb25gLlxuXG5pbXBvcnQgeyB1cmxBbHBoYWJldCB9IGZyb20gJy4vdXJsLWFscGhhYmV0L2luZGV4LmpzJ1xuXG5sZXQgcmFuZG9tID0gYnl0ZXMgPT4gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShieXRlcykpXG5cbmxldCBjdXN0b21SYW5kb20gPSAoYWxwaGFiZXQsIGRlZmF1bHRTaXplLCBnZXRSYW5kb20pID0+IHtcbiAgLy8gRmlyc3QsIGEgYml0bWFzayBpcyBuZWNlc3NhcnkgdG8gZ2VuZXJhdGUgdGhlIElELiBUaGUgYml0bWFzayBtYWtlcyBieXRlc1xuICAvLyB2YWx1ZXMgY2xvc2VyIHRvIHRoZSBhbHBoYWJldCBzaXplLiBUaGUgYml0bWFzayBjYWxjdWxhdGVzIHRoZSBjbG9zZXN0XG4gIC8vIGAyXjMxIC0gMWAgbnVtYmVyLCB3aGljaCBleGNlZWRzIHRoZSBhbHBoYWJldCBzaXplLlxuICAvLyBGb3IgZXhhbXBsZSwgdGhlIGJpdG1hc2sgZm9yIHRoZSBhbHBoYWJldCBzaXplIDMwIGlzIDMxICgwMDAxMTExMSkuXG4gIC8vIGBNYXRoLmNsejMyYCBpcyBub3QgdXNlZCwgYmVjYXVzZSBpdCBpcyBub3QgYXZhaWxhYmxlIGluIGJyb3dzZXJzLlxuICBsZXQgbWFzayA9ICgyIDw8IChNYXRoLmxvZyhhbHBoYWJldC5sZW5ndGggLSAxKSAvIE1hdGguTE4yKSkgLSAxXG4gIC8vIFRob3VnaCwgdGhlIGJpdG1hc2sgc29sdXRpb24gaXMgbm90IHBlcmZlY3Qgc2luY2UgdGhlIGJ5dGVzIGV4Y2VlZGluZ1xuICAvLyB0aGUgYWxwaGFiZXQgc2l6ZSBhcmUgcmVmdXNlZC4gVGhlcmVmb3JlLCB0byByZWxpYWJseSBnZW5lcmF0ZSB0aGUgSUQsXG4gIC8vIHRoZSByYW5kb20gYnl0ZXMgcmVkdW5kYW5jeSBoYXMgdG8gYmUgc2F0aXNmaWVkLlxuXG4gIC8vIE5vdGU6IGV2ZXJ5IGhhcmR3YXJlIHJhbmRvbSBnZW5lcmF0b3IgY2FsbCBpcyBwZXJmb3JtYW5jZSBleHBlbnNpdmUsXG4gIC8vIGJlY2F1c2UgdGhlIHN5c3RlbSBjYWxsIGZvciBlbnRyb3B5IGNvbGxlY3Rpb24gdGFrZXMgYSBsb3Qgb2YgdGltZS5cbiAgLy8gU28sIHRvIGF2b2lkIGFkZGl0aW9uYWwgc3lzdGVtIGNhbGxzLCBleHRyYSBieXRlcyBhcmUgcmVxdWVzdGVkIGluIGFkdmFuY2UuXG5cbiAgLy8gTmV4dCwgYSBzdGVwIGRldGVybWluZXMgaG93IG1hbnkgcmFuZG9tIGJ5dGVzIHRvIGdlbmVyYXRlLlxuICAvLyBUaGUgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyBnZXRzIGRlY2lkZWQgdXBvbiB0aGUgSUQgc2l6ZSwgbWFzayxcbiAgLy8gYWxwaGFiZXQgc2l6ZSwgYW5kIG1hZ2ljIG51bWJlciAxLjYgKHVzaW5nIDEuNiBwZWFrcyBhdCBwZXJmb3JtYW5jZVxuICAvLyBhY2NvcmRpbmcgdG8gYmVuY2htYXJrcykuXG5cbiAgLy8gYC1+ZiA9PiBNYXRoLmNlaWwoZilgIGlmIGYgaXMgYSBmbG9hdFxuICAvLyBgLX5pID0+IGkgKyAxYCBpZiBpIGlzIGFuIGludGVnZXJcbiAgbGV0IHN0ZXAgPSAtfigoMS42ICogbWFzayAqIGRlZmF1bHRTaXplKSAvIGFscGhhYmV0Lmxlbmd0aClcblxuICByZXR1cm4gKHNpemUgPSBkZWZhdWx0U2l6ZSkgPT4ge1xuICAgIGxldCBpZCA9ICcnXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGxldCBieXRlcyA9IGdldFJhbmRvbShzdGVwKVxuICAgICAgLy8gQSBjb21wYWN0IGFsdGVybmF0aXZlIGZvciBgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGVwOyBpKyspYC5cbiAgICAgIGxldCBqID0gc3RlcCB8IDBcbiAgICAgIHdoaWxlIChqLS0pIHtcbiAgICAgICAgLy8gQWRkaW5nIGB8fCAnJ2AgcmVmdXNlcyBhIHJhbmRvbSBieXRlIHRoYXQgZXhjZWVkcyB0aGUgYWxwaGFiZXQgc2l6ZS5cbiAgICAgICAgaWQgKz0gYWxwaGFiZXRbYnl0ZXNbal0gJiBtYXNrXSB8fCAnJ1xuICAgICAgICBpZiAoaWQubGVuZ3RoID09PSBzaXplKSByZXR1cm4gaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxubGV0IGN1c3RvbUFscGhhYmV0ID0gKGFscGhhYmV0LCBzaXplID0gMjEpID0+XG4gIGN1c3RvbVJhbmRvbShhbHBoYWJldCwgc2l6ZSwgcmFuZG9tKVxuXG5sZXQgbmFub2lkID0gKHNpemUgPSAyMSkgPT5cbiAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShzaXplKSkucmVkdWNlKChpZCwgYnl0ZSkgPT4ge1xuICAgIC8vIEl0IGlzIGluY29ycmVjdCB0byB1c2UgYnl0ZXMgZXhjZWVkaW5nIHRoZSBhbHBoYWJldCBzaXplLlxuICAgIC8vIFRoZSBmb2xsb3dpbmcgbWFzayByZWR1Y2VzIHRoZSByYW5kb20gYnl0ZSBpbiB0aGUgMC0yNTUgdmFsdWVcbiAgICAvLyByYW5nZSB0byB0aGUgMC02MyB2YWx1ZSByYW5nZS4gVGhlcmVmb3JlLCBhZGRpbmcgaGFja3MsIHN1Y2hcbiAgICAvLyBhcyBlbXB0eSBzdHJpbmcgZmFsbGJhY2sgb3IgbWFnaWMgbnVtYmVycywgaXMgdW5uZWNjZXNzYXJ5IGJlY2F1c2VcbiAgICAvLyB0aGUgYml0bWFzayB0cmltcyBieXRlcyBkb3duIHRvIHRoZSBhbHBoYWJldCBzaXplLlxuICAgIGJ5dGUgJj0gNjNcbiAgICBpZiAoYnl0ZSA8IDM2KSB7XG4gICAgICAvLyBgMC05YS16YFxuICAgICAgaWQgKz0gYnl0ZS50b1N0cmluZygzNilcbiAgICB9IGVsc2UgaWYgKGJ5dGUgPCA2Mikge1xuICAgICAgLy8gYEEtWmBcbiAgICAgIGlkICs9IChieXRlIC0gMjYpLnRvU3RyaW5nKDM2KS50b1VwcGVyQ2FzZSgpXG4gICAgfSBlbHNlIGlmIChieXRlID4gNjIpIHtcbiAgICAgIGlkICs9ICctJ1xuICAgIH0gZWxzZSB7XG4gICAgICBpZCArPSAnXydcbiAgICB9XG4gICAgcmV0dXJuIGlkXG4gIH0sICcnKVxuXG5leHBvcnQgeyBuYW5vaWQsIGN1c3RvbUFscGhhYmV0LCBjdXN0b21SYW5kb20sIHVybEFscGhhYmV0LCByYW5kb20gfVxuIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldFRlbXBsYXRlLCBnZXRXaWRnZXQsIGdldFVpT3B0aW9ucywgaXNGaXhlZEl0ZW1zLCBhbGxvd0FkZGl0aW9uYWxJdGVtcywgaXNDdXN0b21XaWRnZXQsIG9wdGlvbnNMaXN0LCBUcmFuc2xhdGFibGVTdHJpbmcsIElURU1TX0tFWSwgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gJ25hbm9pZCc7XG4vKiogVXNlZCB0byBnZW5lcmF0ZSBhIHVuaXF1ZSBJRCBmb3IgYW4gZWxlbWVudCBpbiBhIHJvdyAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVSb3dJZCgpIHtcbiAgICByZXR1cm4gbmFub2lkKCk7XG59XG4vKiogQ29udmVydHMgdGhlIGBmb3JtRGF0YWAgaW50byBgS2V5ZWRGb3JtRGF0YVR5cGVgIGRhdGEsIHVzaW5nIHRoZSBgZ2VuZXJhdGVSb3dJZCgpYCBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIGtleVxuICpcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBkYXRhIGZvciB0aGUgZm9ybVxuICogQHJldHVybnMgLSBUaGUgYGZvcm1EYXRhYCBjb252ZXJ0ZWQgaW50byBhIGBLZXllZEZvcm1EYXRhVHlwZWAgZWxlbWVudFxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUtleWVkRm9ybURhdGEoZm9ybURhdGEpIHtcbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkoZm9ybURhdGEpXG4gICAgICAgID8gW11cbiAgICAgICAgOiBmb3JtRGF0YS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAga2V5OiBnZW5lcmF0ZVJvd0lkKCksXG4gICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xufVxuLyoqIENvbnZlcnRzIGBLZXllZEZvcm1EYXRhVHlwZWAgZGF0YSBpbnRvIHRoZSBpbm5lciBgZm9ybURhdGFgXG4gKlxuICogQHBhcmFtIGtleWVkRm9ybURhdGEgLSBUaGUgYEtleWVkRm9ybURhdGFUeXBlYCB0byBiZSBjb252ZXJ0ZWRcbiAqIEByZXR1cm5zIC0gVGhlIGlubmVyIGBmb3JtRGF0YWAgaXRlbShzKSBpbiB0aGUgYGtleWVkRm9ybURhdGFgXG4gKi9cbmZ1bmN0aW9uIGtleWVkVG9QbGFpbkZvcm1EYXRhKGtleWVkRm9ybURhdGEpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShrZXllZEZvcm1EYXRhKSkge1xuICAgICAgICByZXR1cm4ga2V5ZWRGb3JtRGF0YS5tYXAoKGtleWVkSXRlbSkgPT4ga2V5ZWRJdGVtLml0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gW107XG59XG4vKiogVGhlIGBBcnJheUZpZWxkYCBjb21wb25lbnQgaXMgdXNlZCB0byByZW5kZXIgYSBmaWVsZCBpbiB0aGUgc2NoZW1hIHRoYXQgaXMgb2YgdHlwZSBgYXJyYXlgLiBJdCBzdXBwb3J0cyBib3RoIG5vcm1hbFxuICogYW5kIGZpeGVkIGFycmF5LCBhbGxvd2luZyB1c2VyIHRvIGFkZCBhbmQgcmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIGFycmF5IGRhdGEuXG4gKi9cbmNsYXNzIEFycmF5RmllbGQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIC8qKiBDb25zdHJ1Y3RzIGFuIGBBcnJheUZpZWxkYCBmcm9tIHRoZSBgcHJvcHNgLCBnZW5lcmF0aW5nIHRoZSBpbml0aWFsIGtleWVkIGRhdGEgZnJvbSB0aGUgYGZvcm1EYXRhYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgLyoqIFJldHVybnMgdGhlIGRlZmF1bHQgZm9ybSBpbmZvcm1hdGlvbiBmb3IgYW4gaXRlbSBiYXNlZCBvbiB0aGUgc2NoZW1hIGZvciB0aGF0IGl0ZW0uIERlYWxzIHdpdGggdGhlIHBvc3NpYmlsaXR5XG4gICAgICAgICAqIHRoYXQgdGhlIHNjaGVtYSBpcyBmaXhlZCBhbmQgYWxsb3dzIGFkZGl0aW9uYWwgaXRlbXMuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9nZXROZXdGb3JtRGF0YVJvdyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hLCByZWdpc3RyeSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICAgICAgbGV0IGl0ZW1TY2hlbWEgPSBzY2hlbWEuaXRlbXM7XG4gICAgICAgICAgICBpZiAoaXNGaXhlZEl0ZW1zKHNjaGVtYSkgJiYgYWxsb3dBZGRpdGlvbmFsSXRlbXMoc2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIGl0ZW1TY2hlbWEgPSBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2FzdCB0aGlzIGFzIGEgVCB0byB3b3JrIGFyb3VuZCBzY2hlbWEgdXRpbHMgYmVpbmcgZm9yIFRbXSBjYXVzZWQgYnkgdGhlIEZpZWxkUHJvcHM8VFtdLCBTLCBGPiBjYWxsIG9uIHRoZSBjbGFzc1xuICAgICAgICAgICAgcmV0dXJuIHNjaGVtYVV0aWxzLmdldERlZmF1bHRGb3JtU3RhdGUoaXRlbVNjaGVtYSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBoYW5kbGVyIGZvciB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgYWRkIGJ1dHRvbi4gQ3JlYXRlcyBhIG5ldyByb3cgb2Yga2V5ZWQgZm9ybSBkYXRhIGF0IHRoZSBlbmQgb2ZcbiAgICAgICAgICogdGhlIGxpc3QsIGFkZGluZyBpdCBpbnRvIHRoZSBzdGF0ZSwgYW5kIHRoZW4gcmV0dXJuaW5nIGBvbkNoYW5nZSgpYCB3aXRoIHRoZSBwbGFpbiBmb3JtIGRhdGEgY29udmVydGVkIGZyb20gdGhlXG4gICAgICAgICAqIGtleWVkIGRhdGFcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGV2ZW50IGZvciB0aGUgY2xpY2tcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25BZGRDbGljayA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlQWRkQ2xpY2soZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIGFkZCBidXR0b24gb24gYW4gZXhpc3RpbmcgYXJyYXkgZWxlbWVudC4gQ3JlYXRlcyBhIG5ldyByb3cgb2ZcbiAgICAgICAgICoga2V5ZWQgZm9ybSBkYXRhIGluc2VydGVkIGF0IHRoZSBgaW5kZXhgLCBhZGRpbmcgaXQgaW50byB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGUgcGxhaW5cbiAgICAgICAgICogZm9ybSBkYXRhIGNvbnZlcnRlZCBmcm9tIHRoZSBrZXllZCBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBhdCB3aGljaCB0aGUgYWRkIGJ1dHRvbiBpcyBjbGlja2VkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uQWRkSW5kZXhDbGljayA9IChpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUFkZENsaWNrKGV2ZW50LCBpbmRleCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIGNvcHkgYnV0dG9uIG9uIGFuIGV4aXN0aW5nIGFycmF5IGVsZW1lbnQuIENsb25lcyB0aGUgcm93IG9mXG4gICAgICAgICAqIGtleWVkIGZvcm0gZGF0YSBhdCB0aGUgYGluZGV4YCBpbnRvIHRoZSBuZXh0IHBvc2l0aW9uIGluIHRoZSBzdGF0ZSwgYW5kIHRoZW4gcmV0dXJuaW5nIGBvbkNoYW5nZSgpYCB3aXRoIHRoZSBwbGFpblxuICAgICAgICAgKiBmb3JtIGRhdGEgY29udmVydGVkIGZyb20gdGhlIGtleWVkIGRhdGFcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IGF0IHdoaWNoIHRoZSBjb3B5IGJ1dHRvbiBpcyBjbGlja2VkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uQ29weUluZGV4Q2xpY2sgPSAoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSwgZXJyb3JTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgICAgIC8vIHJlZnMgIzE5NTogcmV2YWxpZGF0ZSB0byBlbnN1cmUgcHJvcGVybHkgcmVpbmRleGluZyBlcnJvcnNcbiAgICAgICAgICAgICAgICBsZXQgbmV3RXJyb3JTY2hlbWE7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yU2NoZW1hID0ge307XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaWR4IGluIGVycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gcGFyc2VJbnQoaWR4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpIDw9IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaV0sIGVycm9yU2NoZW1hW2lkeF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA+IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaSArIDFdLCBlcnJvclNjaGVtYVtpZHhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdLZXllZEZvcm1EYXRhUm93ID0ge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGdlbmVyYXRlUm93SWQoKSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbTogY2xvbmVEZWVwKGtleWVkRm9ybURhdGFbaW5kZXhdLml0ZW0pLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YSA9IFsuLi5rZXllZEZvcm1EYXRhXTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdLZXllZEZvcm1EYXRhLnNwbGljZShpbmRleCArIDEsIDAsIG5ld0tleWVkRm9ybURhdGFSb3cpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3S2V5ZWRGb3JtRGF0YS5wdXNoKG5ld0tleWVkRm9ybURhdGFSb3cpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAga2V5ZWRGb3JtRGF0YTogbmV3S2V5ZWRGb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgfSwgKCkgPT4gb25DaGFuZ2Uoa2V5ZWRUb1BsYWluRm9ybURhdGEobmV3S2V5ZWRGb3JtRGF0YSksIG5ld0Vycm9yU2NoZW1hKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIHJlbW92ZSBidXR0b24gb24gYW4gZXhpc3RpbmcgYXJyYXkgZWxlbWVudC4gUmVtb3ZlcyB0aGUgcm93IG9mXG4gICAgICAgICAqIGtleWVkIGZvcm0gZGF0YSBhdCB0aGUgYGluZGV4YCBpbiB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGUgcGxhaW4gZm9ybSBkYXRhIGNvbnZlcnRlZFxuICAgICAgICAgKiBmcm9tIHRoZSBrZXllZCBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBhdCB3aGljaCB0aGUgcmVtb3ZlIGJ1dHRvbiBpcyBjbGlja2VkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uRHJvcEluZGV4Q2xpY2sgPSAoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSwgZXJyb3JTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgICAgIC8vIHJlZnMgIzE5NTogcmV2YWxpZGF0ZSB0byBlbnN1cmUgcHJvcGVybHkgcmVpbmRleGluZyBlcnJvcnNcbiAgICAgICAgICAgICAgICBsZXQgbmV3RXJyb3JTY2hlbWE7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yU2NoZW1hID0ge307XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaWR4IGluIGVycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gcGFyc2VJbnQoaWR4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpIDwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtpXSwgZXJyb3JTY2hlbWFbaWR4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpID4gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtpIC0gMV0sIGVycm9yU2NoZW1hW2lkeF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSBrZXllZEZvcm1EYXRhLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBrZXllZEZvcm1EYXRhOiBuZXdLZXllZEZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkS2V5ZWRGb3JtRGF0YTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiBvbkNoYW5nZShrZXllZFRvUGxhaW5Gb3JtRGF0YShuZXdLZXllZEZvcm1EYXRhKSwgbmV3RXJyb3JTY2hlbWEpKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBoYW5kbGVyIGZvciB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiBvbmUgb2YgdGhlIG1vdmUgaXRlbSBidXR0b25zIG9uIGFuIGV4aXN0aW5nIGFycmF5IGVsZW1lbnQuIE1vdmVzIHRoZVxuICAgICAgICAgKiByb3cgb2Yga2V5ZWQgZm9ybSBkYXRhIGF0IHRoZSBgaW5kZXhgIHRvIHRoZSBgbmV3SW5kZXhgIGluIHRoZSBzdGF0ZSwgYW5kIHRoZW4gcmV0dXJuaW5nIGBvbkNoYW5nZSgpYCB3aXRoIHRoZVxuICAgICAgICAgKiBwbGFpbiBmb3JtIGRhdGEgY29udmVydGVkIGZyb20gdGhlIGtleWVkIGRhdGFcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBpdGVtIHRvIG1vdmVcbiAgICAgICAgICogQHBhcmFtIG5ld0luZGV4IC0gVGhlIGluZGV4IHRvIHdoZXJlIHRoZSBpdGVtIGlzIHRvIGJlIG1vdmVkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uUmVvcmRlckNsaWNrID0gKGluZGV4LCBuZXdJbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmJsdXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSwgZXJyb3JTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgbGV0IG5ld0Vycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvclNjaGVtYSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGlkeCBpbiBlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChuZXdFcnJvclNjaGVtYSwgW25ld0luZGV4XSwgZXJyb3JTY2hlbWFbaW5kZXhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGkgPT0gbmV3SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtpbmRleF0sIGVycm9yU2NoZW1hW25ld0luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtpZHhdLCBlcnJvclNjaGVtYVtpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlT3JkZXJBcnJheSgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29weSBpdGVtXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IF9uZXdLZXllZEZvcm1EYXRhID0ga2V5ZWRGb3JtRGF0YS5zbGljZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBNb3ZlcyBpdGVtIGZyb20gaW5kZXggdG8gbmV3SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgX25ld0tleWVkRm9ybURhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgX25ld0tleWVkRm9ybURhdGEuc3BsaWNlKG5ld0luZGV4LCAwLCBrZXllZEZvcm1EYXRhW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfbmV3S2V5ZWRGb3JtRGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YSA9IHJlT3JkZXJBcnJheSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBrZXllZEZvcm1EYXRhOiBuZXdLZXllZEZvcm1EYXRhLFxuICAgICAgICAgICAgICAgIH0sICgpID0+IG9uQ2hhbmdlKGtleWVkVG9QbGFpbkZvcm1EYXRhKG5ld0tleWVkRm9ybURhdGEpLCBuZXdFcnJvclNjaGVtYSkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgdXNlZCB0byBkZWFsIHdpdGggY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRoZSBkYXRhIGluIHRoZSBhcnJheSBhdCB0aGUgYGluZGV4YC4gQ2FsbHMgdGhlXG4gICAgICAgICAqIGBvbkNoYW5nZWAgY2FsbGJhY2sgd2l0aCB0aGUgdXBkYXRlZCBmb3JtIGRhdGFcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBpdGVtIGJlaW5nIGNoYW5nZWRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25DaGFuZ2VGb3JJbmRleCA9IChpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSwgbmV3RXJyb3JTY2hlbWEsIGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmb3JtRGF0YSwgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5RGF0YSA9IEFycmF5LmlzQXJyYXkoZm9ybURhdGEpID8gZm9ybURhdGEgOiBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IGFycmF5RGF0YS5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB0cmVhdCB1bmRlZmluZWQgaXRlbXMgYXMgbnVsbHMgdG8gaGF2ZSB2YWxpZGF0aW9uLlxuICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3RkZWdydW50L2pzb25zY2hlbWEvaXNzdWVzLzIwNlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXggPT09IGkgPyBqc29uVmFsdWUgOiBpdGVtO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKG5ld0Zvcm1EYXRhLCBlcnJvclNjaGVtYSAmJlxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSAmJiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBbaW5kZXhdOiBuZXdFcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICB9LCBpZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciB1c2VkIHRvIGNoYW5nZSB0aGUgdmFsdWUgZm9yIGEgY2hlY2tib3ggKi9cbiAgICAgICAgdGhpcy5vblNlbGVjdENoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSwgaWRTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSwgdW5kZWZpbmVkLCBpZFNjaGVtYSAmJiBpZFNjaGVtYS4kaWQpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCB7IGZvcm1EYXRhID0gW10gfSA9IHByb3BzO1xuICAgICAgICBjb25zdCBrZXllZEZvcm1EYXRhID0gZ2VuZXJhdGVLZXllZEZvcm1EYXRhKGZvcm1EYXRhKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGtleWVkRm9ybURhdGEsXG4gICAgICAgICAgICB1cGRhdGVkS2V5ZWRGb3JtRGF0YTogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBSZWFjdCBsaWZlY3ljbGUgbWV0aG9kIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHByb3BzIGFyZSBhYm91dCB0byBjaGFuZ2UgYWxsb3dpbmcgdGhlIHN0YXRlIHRvIGJlIHVwZGF0ZWQuIEl0XG4gICAgICogcmVnZW5lcmF0ZXMgdGhlIGtleWVkIGZvcm0gZGF0YSBhbmQgcmV0dXJucyBpdFxuICAgICAqXG4gICAgICogQHBhcmFtIG5leHRQcm9wcyAtIFRoZSBuZXh0IHNldCBvZiBwcm9wcyBkYXRhXG4gICAgICogQHBhcmFtIHByZXZTdGF0ZSAtIFRoZSBwcmV2aW91cyBzZXQgb2Ygc3RhdGUgZGF0YVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgLy8gRG9uJ3QgY2FsbCBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgaWYga2V5ZWQgZm9ybWRhdGEgd2FzIGp1c3QgdXBkYXRlZC5cbiAgICAgICAgaWYgKHByZXZTdGF0ZS51cGRhdGVkS2V5ZWRGb3JtRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVkS2V5ZWRGb3JtRGF0YTogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRGb3JtRGF0YSA9IEFycmF5LmlzQXJyYXkobmV4dFByb3BzLmZvcm1EYXRhKSA/IG5leHRQcm9wcy5mb3JtRGF0YSA6IFtdO1xuICAgICAgICBjb25zdCBwcmV2aW91c0tleWVkRm9ybURhdGEgPSBwcmV2U3RhdGUua2V5ZWRGb3JtRGF0YSB8fCBbXTtcbiAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YSA9IG5leHRGb3JtRGF0YS5sZW5ndGggPT09IHByZXZpb3VzS2V5ZWRGb3JtRGF0YS5sZW5ndGhcbiAgICAgICAgICAgID8gcHJldmlvdXNLZXllZEZvcm1EYXRhLm1hcCgocHJldmlvdXNLZXllZEZvcm1EYXR1bSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IHByZXZpb3VzS2V5ZWRGb3JtRGF0dW0ua2V5LFxuICAgICAgICAgICAgICAgICAgICBpdGVtOiBuZXh0Rm9ybURhdGFbaW5kZXhdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBnZW5lcmF0ZUtleWVkRm9ybURhdGEobmV4dEZvcm1EYXRhKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtleWVkRm9ybURhdGE6IG5ld0tleWVkRm9ybURhdGEsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSB0aXRsZSBmb3IgYW4gaXRlbSBieSBnZXR0aW5nIGZpcnN0IHRoZSB0aXRsZSBmcm9tIHRoZSBzY2hlbWEuaXRlbXMsIHRoZW4gZmFsbGluZyBiYWNrIHRvXG4gICAgICogdGhlIGRlc2NyaXB0aW9uIGZyb20gdGhlIHNjaGVtYS5pdGVtcywgYW5kIGZpbmFsbHkgdGhlIHN0cmluZyBcIkl0ZW1cIlxuICAgICAqL1xuICAgIGdldCBpdGVtVGl0bGUoKSB7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCByZWdpc3RyeSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICByZXR1cm4gZ2V0KHNjaGVtYSwgW0lURU1TX0tFWSwgJ3RpdGxlJ10sIGdldChzY2hlbWEsIFtJVEVNU19LRVksICdkZXNjcmlwdGlvbiddLCB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkFycmF5SXRlbVRpdGxlKSkpO1xuICAgIH1cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpdGVtIGRlc2NyaWJlZCBpbiB0aGUgc2NoZW1hIGlzIGFsd2F5cyByZXF1aXJlZCwgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSB3aGV0aGVyIGFueSBpdGVtXG4gICAgICogbWF5IGJlIG51bGwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbVNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHRoZSBpdGVtXG4gICAgICogQHJldHVybiAtIFRydWUgaWYgdGhlIGl0ZW0gc2NoZW1hIHR5cGUgZG9lcyBub3QgY29udGFpbiB0aGUgXCJudWxsXCIgdHlwZVxuICAgICAqL1xuICAgIGlzSXRlbVJlcXVpcmVkKGl0ZW1TY2hlbWEpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbVNjaGVtYS50eXBlKSkge1xuICAgICAgICAgICAgLy8gV2hpbGUgd2UgZG9uJ3QgeWV0IHN1cHBvcnQgY29tcG9zaXRlL251bGxhYmxlIGpzb25zY2hlbWEgdHlwZXMsIGl0J3NcbiAgICAgICAgICAgIC8vIGZ1dHVyZS1wcm9vZiB0byBjaGVjayBmb3IgcmVxdWlyZW1lbnQgYWdhaW5zdCB0aGVzZS5cbiAgICAgICAgICAgIHJldHVybiAhaXRlbVNjaGVtYS50eXBlLmluY2x1ZGVzKCdudWxsJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWxsIG5vbi1udWxsIGFycmF5IGl0ZW0gdHlwZXMgYXJlIGluaGVyZW50bHkgcmVxdWlyZWQgYnkgZGVzaWduXG4gICAgICAgIHJldHVybiBpdGVtU2NoZW1hLnR5cGUgIT09ICdudWxsJztcbiAgICB9XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBtb3JlIGl0ZW1zIGNhbiBiZSBhZGRlZCB0byB0aGUgYXJyYXkuIElmIHRoZSB1aVNjaGVtYSBpbmRpY2F0ZXMgdGhlIGFycmF5IGRvZXNuJ3QgYWxsb3cgYWRkaW5nXG4gICAgICogdGhlbiBmYWxzZSBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCBpZiB0aGUgc2NoZW1hIGluZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBhIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGFuZCB0aGVcbiAgICAgKiBgZm9ybURhdGFgIG1hdGNoZXMgdGhhdCB2YWx1ZSwgdGhlbiBmYWxzZSBpcyByZXR1cm5lZCwgb3RoZXJ3aXNlIHRydWUgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybUl0ZW1zIC0gVGhlIGxpc3Qgb2YgaXRlbXMgaW4gdGhlIGZvcm1cbiAgICAgKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGl0ZW0gaXMgYWRkYWJsZSBvdGhlcndpc2UgZmFsc2VcbiAgICAgKi9cbiAgICBjYW5BZGRJdGVtKGZvcm1JdGVtcykge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgdWlTY2hlbWEsIHJlZ2lzdHJ5IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBsZXQgeyBhZGRhYmxlIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIHJlZ2lzdHJ5Lmdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIGlmIChhZGRhYmxlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgLy8gaWYgdWk6b3B0aW9ucy5hZGRhYmxlIHdhcyBub3QgZXhwbGljaXRseSBzZXQgdG8gZmFsc2UsIHdlIGNhbiBhZGRcbiAgICAgICAgICAgIC8vIGFub3RoZXIgaXRlbSBpZiB3ZSBoYXZlIG5vdCBleGNlZWRlZCBtYXhJdGVtcyB5ZXRcbiAgICAgICAgICAgIGlmIChzY2hlbWEubWF4SXRlbXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGFkZGFibGUgPSBmb3JtSXRlbXMubGVuZ3RoIDwgc2NoZW1hLm1heEl0ZW1zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWRkYWJsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFkZGFibGU7XG4gICAgfVxuICAgIC8qKiBDYWxsYmFjayBoYW5kbGVyIGZvciB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgYWRkIG9yIGFkZCBhdCBpbmRleCBidXR0b25zLiBDcmVhdGVzIGEgbmV3IHJvdyBvZiBrZXllZCBmb3JtIGRhdGFcbiAgICAgKiBlaXRoZXIgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCAod2hlbiBpbmRleCBpcyBub3Qgc3BlY2lmaWVkKSBvciBpbnNlcnRlZCBhdCB0aGUgYGluZGV4YCB3aGVuIGl0IGlzLCBhZGRpbmcgaXQgaW50b1xuICAgICAqIHRoZSBzdGF0ZSwgYW5kIHRoZW4gcmV0dXJuaW5nIGBvbkNoYW5nZSgpYCB3aXRoIHRoZSBwbGFpbiBmb3JtIGRhdGEgY29udmVydGVkIGZyb20gdGhlIGtleWVkIGRhdGFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBldmVudCBmb3IgdGhlIGNsaWNrXG4gICAgICogQHBhcmFtIFtpbmRleF0gLSBUaGUgb3B0aW9uYWwgaW5kZXggYXQgd2hpY2ggdG8gYWRkIHRoZSBuZXcgZGF0YVxuICAgICAqL1xuICAgIF9oYW5kbGVBZGRDbGljayhldmVudCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGtleWVkRm9ybURhdGEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIC8vIHJlZnMgIzE5NTogcmV2YWxpZGF0ZSB0byBlbnN1cmUgcHJvcGVybHkgcmVpbmRleGluZyBlcnJvcnNcbiAgICAgICAgbGV0IG5ld0Vycm9yU2NoZW1hO1xuICAgICAgICBpZiAoZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgICAgIG5ld0Vycm9yU2NoZW1hID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkeCBpbiBlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBwYXJzZUludChpZHgpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGkgPCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtpXSwgZXJyb3JTY2hlbWFbaWR4XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGkgPj0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaSArIDFdLCBlcnJvclNjaGVtYVtpZHhdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YVJvdyA9IHtcbiAgICAgICAgICAgIGtleTogZ2VuZXJhdGVSb3dJZCgpLFxuICAgICAgICAgICAgaXRlbTogdGhpcy5fZ2V0TmV3Rm9ybURhdGFSb3coKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YSA9IFsuLi5rZXllZEZvcm1EYXRhXTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld0tleWVkRm9ybURhdGEuc3BsaWNlKGluZGV4LCAwLCBuZXdLZXllZEZvcm1EYXRhUm93KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5ld0tleWVkRm9ybURhdGEucHVzaChuZXdLZXllZEZvcm1EYXRhUm93KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGtleWVkRm9ybURhdGE6IG5ld0tleWVkRm9ybURhdGEsXG4gICAgICAgICAgICB1cGRhdGVkS2V5ZWRGb3JtRGF0YTogdHJ1ZSxcbiAgICAgICAgfSwgKCkgPT4gb25DaGFuZ2Uoa2V5ZWRUb1BsYWluRm9ybURhdGEobmV3S2V5ZWRGb3JtRGF0YSksIG5ld0Vycm9yU2NoZW1hKSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIHRoZSBgQXJyYXlGaWVsZGAgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyBuZWVkcyBvZiB0aGUgc2NoZW1hIGFuZCB1aXNjaGVtYSBlbGVtZW50c1xuICAgICAqL1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEsIHVpU2NoZW1hLCBpZFNjaGVtYSwgcmVnaXN0cnkgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMsIHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGlmICghKElURU1TX0tFWSBpbiBzY2hlbWEpKSB7XG4gICAgICAgICAgICBjb25zdCB1aU9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgICAgICAgICAgY29uc3QgVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ1Vuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuIChfanN4KFVuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZSwgeyBzY2hlbWE6IHNjaGVtYSwgaWRTY2hlbWE6IGlkU2NoZW1hLCByZWFzb246IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuTWlzc2luZ0l0ZW1zKSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hVXRpbHMuaXNNdWx0aVNlbGVjdChzY2hlbWEpKSB7XG4gICAgICAgICAgICAvLyBJZiBhcnJheSBoYXMgZW51bSBvciB1bmlxdWVJdGVtcyBzZXQgdG8gdHJ1ZSwgY2FsbCByZW5kZXJNdWx0aVNlbGVjdCgpIHRvIHJlbmRlciB0aGUgZGVmYXVsdCBtdWx0aXNlbGVjdCB3aWRnZXQgb3IgYSBjdXN0b20gd2lkZ2V0LCBpZiBzcGVjaWZpZWQuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJNdWx0aVNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0N1c3RvbVdpZGdldCh1aVNjaGVtYSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckN1c3RvbVdpZGdldCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0ZpeGVkSXRlbXMoc2NoZW1hKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyRml4ZWRBcnJheSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWFVdGlscy5pc0ZpbGVzQXJyYXkoc2NoZW1hLCB1aVNjaGVtYSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckZpbGVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyTm9ybWFsQXJyYXkoKTtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgYSBub3JtYWwgYXJyYXkgd2l0aG91dCBhbnkgbGltaXRhdGlvbnMgb2YgbGVuZ3RoXG4gICAgICovXG4gICAgcmVuZGVyTm9ybWFsQXJyYXkoKSB7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCB1aVNjaGVtYSA9IHt9LCBlcnJvclNjaGVtYSwgaWRTY2hlbWEsIG5hbWUsIHRpdGxlLCBkaXNhYmxlZCA9IGZhbHNlLCByZWFkb25seSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgcmVxdWlyZWQgPSBmYWxzZSwgcmVnaXN0cnksIG9uQmx1ciwgb25Gb2N1cywgaWRQcmVmaXgsIGlkU2VwYXJhdG9yID0gJ18nLCByYXdFcnJvcnMsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGtleWVkRm9ybURhdGEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IGZpZWxkVGl0bGUgPSBzY2hlbWEudGl0bGUgfHwgdGl0bGUgfHwgbmFtZTtcbiAgICAgICAgY29uc3QgeyBzY2hlbWFVdGlscywgZm9ybUNvbnRleHQgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICBjb25zdCB1aU9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgICAgICBjb25zdCBfc2NoZW1hSXRlbXMgPSBpc09iamVjdChzY2hlbWEuaXRlbXMpID8gc2NoZW1hLml0ZW1zIDoge307XG4gICAgICAgIGNvbnN0IGl0ZW1zU2NoZW1hID0gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoX3NjaGVtYUl0ZW1zKTtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBrZXllZFRvUGxhaW5Gb3JtRGF0YSh0aGlzLnN0YXRlLmtleWVkRm9ybURhdGEpO1xuICAgICAgICBjb25zdCBjYW5BZGQgPSB0aGlzLmNhbkFkZEl0ZW0oZm9ybURhdGEpO1xuICAgICAgICBjb25zdCBhcnJheVByb3BzID0ge1xuICAgICAgICAgICAgY2FuQWRkLFxuICAgICAgICAgICAgaXRlbXM6IGtleWVkRm9ybURhdGEubWFwKChrZXllZEl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXksIGl0ZW0gfSA9IGtleWVkSXRlbTtcbiAgICAgICAgICAgICAgICAvLyBXaGlsZSB3ZSBhcmUgYWN0dWFsbHkgZGVhbGluZyB3aXRoIGEgc2luZ2xlIGl0ZW0gb2YgdHlwZSBULCB0aGUgdHlwZXMgcmVxdWlyZSBhIFRbXSwgc28gY2FzdFxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1DYXN0ID0gaXRlbTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtU2NoZW1hID0gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoX3NjaGVtYUl0ZW1zLCBpdGVtQ2FzdCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUVycm9yU2NoZW1hID0gZXJyb3JTY2hlbWEgPyBlcnJvclNjaGVtYVtpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUlkUHJlZml4ID0gaWRTY2hlbWEuJGlkICsgaWRTZXBhcmF0b3IgKyBpbmRleDtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtSWRTY2hlbWEgPSBzY2hlbWFVdGlscy50b0lkU2NoZW1hKGl0ZW1TY2hlbWEsIGl0ZW1JZFByZWZpeCwgaXRlbUNhc3QsIGlkUHJlZml4LCBpZFNlcGFyYXRvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQXJyYXlGaWVsZEl0ZW0oe1xuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lICYmIGAke25hbWV9LSR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZpZWxkVGl0bGUgPyBgJHtmaWVsZFRpdGxlfS0ke2luZGV4ICsgMX1gIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjYW5BZGQsXG4gICAgICAgICAgICAgICAgICAgIGNhbk1vdmVVcDogaW5kZXggPiAwLFxuICAgICAgICAgICAgICAgICAgICBjYW5Nb3ZlRG93bjogaW5kZXggPCBmb3JtRGF0YS5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgICAgICBpdGVtU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBpdGVtSWRTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1FcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbURhdGE6IGl0ZW1DYXN0LFxuICAgICAgICAgICAgICAgICAgICBpdGVtVWlTY2hlbWE6IHVpU2NoZW1hLml0ZW1zLFxuICAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXM6IGF1dG9mb2N1cyAmJiBpbmRleCA9PT0gMCxcbiAgICAgICAgICAgICAgICAgICAgb25CbHVyLFxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzLFxuICAgICAgICAgICAgICAgICAgICByYXdFcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsSXRlbXM6IGtleWVkRm9ybURhdGEubGVuZ3RoLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjbGFzc05hbWU6IGBmaWVsZCBmaWVsZC1hcnJheSBmaWVsZC1hcnJheS1vZi0ke2l0ZW1zU2NoZW1hLnR5cGV9YCxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgaWRTY2hlbWEsXG4gICAgICAgICAgICB1aVNjaGVtYSxcbiAgICAgICAgICAgIG9uQWRkQ2xpY2s6IHRoaXMub25BZGRDbGljayxcbiAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICB0aXRsZTogZmllbGRUaXRsZSxcbiAgICAgICAgICAgIGZvcm1Db250ZXh0LFxuICAgICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgICByYXdFcnJvcnMsXG4gICAgICAgICAgICByZWdpc3RyeSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQXJyYXlGaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiBfanN4KFRlbXBsYXRlLCB7IC4uLmFycmF5UHJvcHMgfSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIGFuIGFycmF5IHVzaW5nIHRoZSBjdXN0b20gd2lkZ2V0IHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGluIHRoZSBgdWlTY2hlbWFgXG4gICAgICovXG4gICAgcmVuZGVyQ3VzdG9tV2lkZ2V0KCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCBpZFNjaGVtYSwgdWlTY2hlbWEsIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCByZXF1aXJlZCA9IGZhbHNlLCBoaWRlRXJyb3IsIHBsYWNlaG9sZGVyLCBvbkJsdXIsIG9uRm9jdXMsIGZvcm1EYXRhOiBpdGVtcyA9IFtdLCByZWdpc3RyeSwgcmF3RXJyb3JzLCBuYW1lLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyB3aWRnZXRzLCBmb3JtQ29udGV4dCwgZ2xvYmFsVWlPcHRpb25zLCBzY2hlbWFVdGlscyB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IHsgd2lkZ2V0LCB0aXRsZTogdWlUaXRsZSwgLi4ub3B0aW9ucyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHdpZGdldHMpO1xuICAgICAgICBjb25zdCBsYWJlbCA9IChfYSA9IHVpVGl0bGUgIT09IG51bGwgJiYgdWlUaXRsZSAhPT0gdm9pZCAwID8gdWlUaXRsZSA6IHNjaGVtYS50aXRsZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbmFtZTtcbiAgICAgICAgY29uc3QgZGlzcGxheUxhYmVsID0gc2NoZW1hVXRpbHMuZ2V0RGlzcGxheUxhYmVsKHNjaGVtYSwgdWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiAoX2pzeChXaWRnZXQsIHsgaWQ6IGlkU2NoZW1hLiRpZCwgbmFtZTogbmFtZSwgbXVsdGlwbGU6IHRydWUsIG9uQ2hhbmdlOiB0aGlzLm9uU2VsZWN0Q2hhbmdlLCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgb3B0aW9uczogb3B0aW9ucywgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCB2YWx1ZTogaXRlbXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCBoaWRlRXJyb3I6IGhpZGVFcnJvciwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBsYWJlbDogbGFiZWwsIGhpZGVMYWJlbDogIWRpc3BsYXlMYWJlbCwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIGF1dG9mb2N1czogYXV0b2ZvY3VzLCByYXdFcnJvcnM6IHJhd0Vycm9ycyB9KSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIGFuIGFycmF5IGFzIGEgc2V0IG9mIGNoZWNrYm94ZXNcbiAgICAgKi9cbiAgICByZW5kZXJNdWx0aVNlbGVjdCgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgaWRTY2hlbWEsIHVpU2NoZW1hLCBmb3JtRGF0YTogaXRlbXMgPSBbXSwgZGlzYWJsZWQgPSBmYWxzZSwgcmVhZG9ubHkgPSBmYWxzZSwgYXV0b2ZvY3VzID0gZmFsc2UsIHJlcXVpcmVkID0gZmFsc2UsIHBsYWNlaG9sZGVyLCBvbkJsdXIsIG9uRm9jdXMsIHJlZ2lzdHJ5LCByYXdFcnJvcnMsIG5hbWUsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHdpZGdldHMsIHNjaGVtYVV0aWxzLCBmb3JtQ29udGV4dCwgZ2xvYmFsVWlPcHRpb25zIH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgaXRlbXNTY2hlbWEgPSBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShzY2hlbWEuaXRlbXMsIGl0ZW1zKTtcbiAgICAgICAgY29uc3QgZW51bU9wdGlvbnMgPSBvcHRpb25zTGlzdChpdGVtc1NjaGVtYSwgdWlTY2hlbWEpO1xuICAgICAgICBjb25zdCB7IHdpZGdldCA9ICdzZWxlY3QnLCB0aXRsZTogdWlUaXRsZSwgLi4ub3B0aW9ucyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHdpZGdldHMpO1xuICAgICAgICBjb25zdCBsYWJlbCA9IChfYSA9IHVpVGl0bGUgIT09IG51bGwgJiYgdWlUaXRsZSAhPT0gdm9pZCAwID8gdWlUaXRsZSA6IHNjaGVtYS50aXRsZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbmFtZTtcbiAgICAgICAgY29uc3QgZGlzcGxheUxhYmVsID0gc2NoZW1hVXRpbHMuZ2V0RGlzcGxheUxhYmVsKHNjaGVtYSwgdWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiAoX2pzeChXaWRnZXQsIHsgaWQ6IGlkU2NoZW1hLiRpZCwgbmFtZTogbmFtZSwgbXVsdGlwbGU6IHRydWUsIG9uQ2hhbmdlOiB0aGlzLm9uU2VsZWN0Q2hhbmdlLCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgb3B0aW9uczogeyAuLi5vcHRpb25zLCBlbnVtT3B0aW9ucyB9LCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnksIHZhbHVlOiBpdGVtcywgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIHJlcXVpcmVkOiByZXF1aXJlZCwgbGFiZWw6IGxhYmVsLCBoaWRlTGFiZWw6ICFkaXNwbGF5TGFiZWwsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgcmF3RXJyb3JzOiByYXdFcnJvcnMgfSkpO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyBhbiBhcnJheSBvZiBmaWxlcyB1c2luZyB0aGUgYEZpbGVXaWRnZXRgXG4gICAgICovXG4gICAgcmVuZGVyRmlsZXMoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEsIHVpU2NoZW1hLCBpZFNjaGVtYSwgbmFtZSwgZGlzYWJsZWQgPSBmYWxzZSwgcmVhZG9ubHkgPSBmYWxzZSwgYXV0b2ZvY3VzID0gZmFsc2UsIHJlcXVpcmVkID0gZmFsc2UsIG9uQmx1ciwgb25Gb2N1cywgcmVnaXN0cnksIGZvcm1EYXRhOiBpdGVtcyA9IFtdLCByYXdFcnJvcnMsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHdpZGdldHMsIGZvcm1Db250ZXh0LCBnbG9iYWxVaU9wdGlvbnMsIHNjaGVtYVV0aWxzIH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgeyB3aWRnZXQgPSAnZmlsZXMnLCB0aXRsZTogdWlUaXRsZSwgLi4ub3B0aW9ucyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHdpZGdldHMpO1xuICAgICAgICBjb25zdCBsYWJlbCA9IChfYSA9IHVpVGl0bGUgIT09IG51bGwgJiYgdWlUaXRsZSAhPT0gdm9pZCAwID8gdWlUaXRsZSA6IHNjaGVtYS50aXRsZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbmFtZTtcbiAgICAgICAgY29uc3QgZGlzcGxheUxhYmVsID0gc2NoZW1hVXRpbHMuZ2V0RGlzcGxheUxhYmVsKHNjaGVtYSwgdWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiAoX2pzeChXaWRnZXQsIHsgb3B0aW9uczogb3B0aW9ucywgaWQ6IGlkU2NoZW1hLiRpZCwgbmFtZTogbmFtZSwgbXVsdGlwbGU6IHRydWUsIG9uQ2hhbmdlOiB0aGlzLm9uU2VsZWN0Q2hhbmdlLCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgdmFsdWU6IGl0ZW1zLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCByZWdpc3RyeTogcmVnaXN0cnksIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIHJhd0Vycm9yczogcmF3RXJyb3JzLCBsYWJlbDogbGFiZWwsIGhpZGVMYWJlbDogIWRpc3BsYXlMYWJlbCB9KSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIGFuIGFycmF5IHRoYXQgaGFzIGEgbWF4aW11bSBsaW1pdCBvZiBpdGVtc1xuICAgICAqL1xuICAgIHJlbmRlckZpeGVkQXJyYXkoKSB7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCB1aVNjaGVtYSA9IHt9LCBmb3JtRGF0YSA9IFtdLCBlcnJvclNjaGVtYSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yID0gJ18nLCBpZFNjaGVtYSwgbmFtZSwgdGl0bGUsIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCByZXF1aXJlZCA9IGZhbHNlLCByZWdpc3RyeSwgb25CbHVyLCBvbkZvY3VzLCByYXdFcnJvcnMsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGtleWVkRm9ybURhdGEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGxldCB7IGZvcm1EYXRhOiBpdGVtcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBmaWVsZFRpdGxlID0gc2NoZW1hLnRpdGxlIHx8IHRpdGxlIHx8IG5hbWU7XG4gICAgICAgIGNvbnN0IHVpT3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMsIGZvcm1Db250ZXh0IH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgX3NjaGVtYUl0ZW1zID0gaXNPYmplY3Qoc2NoZW1hLml0ZW1zKSA/IHNjaGVtYS5pdGVtcyA6IFtdO1xuICAgICAgICBjb25zdCBpdGVtU2NoZW1hcyA9IF9zY2hlbWFJdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShpdGVtLCBmb3JtRGF0YVtpbmRleF0pKTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbFNjaGVtYSA9IGlzT2JqZWN0KHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMpXG4gICAgICAgICAgICA/IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMsIGZvcm1EYXRhKVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA8IGl0ZW1TY2hlbWFzLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIGF0IGxlYXN0IGFsbCBmaXhlZCBpdGVtcyBhcmUgZ2VuZXJhdGVkXG4gICAgICAgICAgICBpdGVtcyA9IGl0ZW1zIHx8IFtdO1xuICAgICAgICAgICAgaXRlbXMgPSBpdGVtcy5jb25jYXQobmV3IEFycmF5KGl0ZW1TY2hlbWFzLmxlbmd0aCAtIGl0ZW1zLmxlbmd0aCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgcHJvcHMgcGFzc2VkIGludG8gdGhlIHJlbmRlciBmdW5jdGlvblxuICAgICAgICBjb25zdCBjYW5BZGQgPSB0aGlzLmNhbkFkZEl0ZW0oaXRlbXMpICYmICEhYWRkaXRpb25hbFNjaGVtYTtcbiAgICAgICAgY29uc3QgYXJyYXlQcm9wcyA9IHtcbiAgICAgICAgICAgIGNhbkFkZCxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2ZpZWxkIGZpZWxkLWFycmF5IGZpZWxkLWFycmF5LWZpeGVkLWl0ZW1zJyxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgaWRTY2hlbWEsXG4gICAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICAgIGl0ZW1zOiBrZXllZEZvcm1EYXRhLm1hcCgoa2V5ZWRJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5LCBpdGVtIH0gPSBrZXllZEl0ZW07XG4gICAgICAgICAgICAgICAgLy8gV2hpbGUgd2UgYXJlIGFjdHVhbGx5IGRlYWxpbmcgd2l0aCBhIHNpbmdsZSBpdGVtIG9mIHR5cGUgVCwgdGhlIHR5cGVzIHJlcXVpcmUgYSBUW10sIHNvIGNhc3RcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtQ2FzdCA9IGl0ZW07XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbCA9IGluZGV4ID49IGl0ZW1TY2hlbWFzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtU2NoZW1hID0gKGFkZGl0aW9uYWwgJiYgaXNPYmplY3Qoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcylcbiAgICAgICAgICAgICAgICAgICAgPyBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShzY2hlbWEuYWRkaXRpb25hbEl0ZW1zLCBpdGVtQ2FzdClcbiAgICAgICAgICAgICAgICAgICAgOiBpdGVtU2NoZW1hc1tpbmRleF0pIHx8IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JZFByZWZpeCA9IGlkU2NoZW1hLiRpZCArIGlkU2VwYXJhdG9yICsgaW5kZXg7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUlkU2NoZW1hID0gc2NoZW1hVXRpbHMudG9JZFNjaGVtYShpdGVtU2NoZW1hLCBpdGVtSWRQcmVmaXgsIGl0ZW1DYXN0LCBpZFByZWZpeCwgaWRTZXBhcmF0b3IpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1VaVNjaGVtYSA9IGFkZGl0aW9uYWxcbiAgICAgICAgICAgICAgICAgICAgPyB1aVNjaGVtYS5hZGRpdGlvbmFsSXRlbXMgfHwge31cbiAgICAgICAgICAgICAgICAgICAgOiBBcnJheS5pc0FycmF5KHVpU2NoZW1hLml0ZW1zKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB1aVNjaGVtYS5pdGVtc1tpbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdWlTY2hlbWEuaXRlbXMgfHwge307XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUVycm9yU2NoZW1hID0gZXJyb3JTY2hlbWEgPyBlcnJvclNjaGVtYVtpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQXJyYXlGaWVsZEl0ZW0oe1xuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lICYmIGAke25hbWV9LSR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZpZWxkVGl0bGUgPyBgJHtmaWVsZFRpdGxlfS0ke2luZGV4ICsgMX1gIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjYW5BZGQsXG4gICAgICAgICAgICAgICAgICAgIGNhblJlbW92ZTogYWRkaXRpb25hbCxcbiAgICAgICAgICAgICAgICAgICAgY2FuTW92ZVVwOiBpbmRleCA+PSBpdGVtU2NoZW1hcy5sZW5ndGggKyAxLFxuICAgICAgICAgICAgICAgICAgICBjYW5Nb3ZlRG93bjogYWRkaXRpb25hbCAmJiBpbmRleCA8IGl0ZW1zLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1TY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtQ2FzdCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbVVpU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBpdGVtSWRTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1FcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgYXV0b2ZvY3VzOiBhdXRvZm9jdXMgJiYgaW5kZXggPT09IDAsXG4gICAgICAgICAgICAgICAgICAgIG9uQmx1cixcbiAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyxcbiAgICAgICAgICAgICAgICAgICAgcmF3RXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiBrZXllZEZvcm1EYXRhLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgb25BZGRDbGljazogdGhpcy5vbkFkZENsaWNrLFxuICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICByZXF1aXJlZCxcbiAgICAgICAgICAgIHJlZ2lzdHJ5LFxuICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgdWlTY2hlbWEsXG4gICAgICAgICAgICB0aXRsZTogZmllbGRUaXRsZSxcbiAgICAgICAgICAgIGZvcm1Db250ZXh0LFxuICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICByYXdFcnJvcnMsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0FycmF5RmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gX2pzeChUZW1wbGF0ZSwgeyAuLi5hcnJheVByb3BzIH0pO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyB0aGUgaW5kaXZpZHVhbCBhcnJheSBpdGVtIHVzaW5nIGEgYFNjaGVtYUZpZWxkYCBhbG9uZyB3aXRoIHRoZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgcmVxdWlyZWQgdG8gYmUgc2VuZFxuICAgICAqIGJhY2sgdG8gdGhlIGBBcnJheUZpZWxkSXRlbVRlbXBsYXRlYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBwcm9wcyBmb3IgdGhlIGluZGl2aWR1YWwgYXJyYXkgaXRlbSB0byBiZSByZW5kZXJlZFxuICAgICAqL1xuICAgIHJlbmRlckFycmF5RmllbGRJdGVtKHByb3BzKSB7XG4gICAgICAgIGNvbnN0IHsga2V5LCBpbmRleCwgbmFtZSwgY2FuQWRkLCBjYW5SZW1vdmUgPSB0cnVlLCBjYW5Nb3ZlVXAsIGNhbk1vdmVEb3duLCBpdGVtU2NoZW1hLCBpdGVtRGF0YSwgaXRlbVVpU2NoZW1hLCBpdGVtSWRTY2hlbWEsIGl0ZW1FcnJvclNjaGVtYSwgYXV0b2ZvY3VzLCBvbkJsdXIsIG9uRm9jdXMsIHJhd0Vycm9ycywgdG90YWxJdGVtcywgdGl0bGUsIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgeyBkaXNhYmxlZCwgaGlkZUVycm9yLCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIHJlYWRvbmx5LCB1aVNjaGVtYSwgcmVnaXN0cnksIGZvcm1Db250ZXh0IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGZpZWxkczogeyBBcnJheVNjaGVtYUZpZWxkLCBTY2hlbWFGaWVsZCB9LCBnbG9iYWxVaU9wdGlvbnMsIH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgSXRlbVNjaGVtYUZpZWxkID0gQXJyYXlTY2hlbWFGaWVsZCB8fCBTY2hlbWFGaWVsZDtcbiAgICAgICAgY29uc3QgeyBvcmRlcmFibGUgPSB0cnVlLCByZW1vdmFibGUgPSB0cnVlLCBjb3B5YWJsZSA9IGZhbHNlIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGhhcyA9IHtcbiAgICAgICAgICAgIG1vdmVVcDogb3JkZXJhYmxlICYmIGNhbk1vdmVVcCxcbiAgICAgICAgICAgIG1vdmVEb3duOiBvcmRlcmFibGUgJiYgY2FuTW92ZURvd24sXG4gICAgICAgICAgICBjb3B5OiBjb3B5YWJsZSAmJiBjYW5BZGQsXG4gICAgICAgICAgICByZW1vdmU6IHJlbW92YWJsZSAmJiBjYW5SZW1vdmUsXG4gICAgICAgICAgICB0b29sYmFyOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgaGFzLnRvb2xiYXIgPSBPYmplY3Qua2V5cyhoYXMpLnNvbWUoKGtleSkgPT4gaGFzW2tleV0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IChfanN4KEl0ZW1TY2hlbWFGaWVsZCwgeyBuYW1lOiBuYW1lLCB0aXRsZTogdGl0bGUsIGluZGV4OiBpbmRleCwgc2NoZW1hOiBpdGVtU2NoZW1hLCB1aVNjaGVtYTogaXRlbVVpU2NoZW1hLCBmb3JtRGF0YTogaXRlbURhdGEsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgZXJyb3JTY2hlbWE6IGl0ZW1FcnJvclNjaGVtYSwgaWRQcmVmaXg6IGlkUHJlZml4LCBpZFNlcGFyYXRvcjogaWRTZXBhcmF0b3IsIGlkU2NoZW1hOiBpdGVtSWRTY2hlbWEsIHJlcXVpcmVkOiB0aGlzLmlzSXRlbVJlcXVpcmVkKGl0ZW1TY2hlbWEpLCBvbkNoYW5nZTogdGhpcy5vbkNoYW5nZUZvckluZGV4KGluZGV4KSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgcmF3RXJyb3JzOiByYXdFcnJvcnMgfSkpLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXJyYXktaXRlbScsXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIGNhbkFkZCxcbiAgICAgICAgICAgIGhhc0NvcHk6IGhhcy5jb3B5LFxuICAgICAgICAgICAgaGFzVG9vbGJhcjogaGFzLnRvb2xiYXIsXG4gICAgICAgICAgICBoYXNNb3ZlVXA6IGhhcy5tb3ZlVXAsXG4gICAgICAgICAgICBoYXNNb3ZlRG93bjogaGFzLm1vdmVEb3duLFxuICAgICAgICAgICAgaGFzUmVtb3ZlOiBoYXMucmVtb3ZlLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICB0b3RhbEl0ZW1zLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgb25BZGRJbmRleENsaWNrOiB0aGlzLm9uQWRkSW5kZXhDbGljayxcbiAgICAgICAgICAgIG9uQ29weUluZGV4Q2xpY2s6IHRoaXMub25Db3B5SW5kZXhDbGljayxcbiAgICAgICAgICAgIG9uRHJvcEluZGV4Q2xpY2s6IHRoaXMub25Ecm9wSW5kZXhDbGljayxcbiAgICAgICAgICAgIG9uUmVvcmRlckNsaWNrOiB0aGlzLm9uUmVvcmRlckNsaWNrLFxuICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICByZWdpc3RyeSxcbiAgICAgICAgICAgIHNjaGVtYTogaXRlbVNjaGVtYSxcbiAgICAgICAgICAgIHVpU2NoZW1hOiBpdGVtVWlTY2hlbWEsXG4gICAgICAgIH07XG4gICAgfVxufVxuLyoqIGBBcnJheUZpZWxkYCBpcyBgUmVhY3QuQ29tcG9uZW50VHlwZTxGaWVsZFByb3BzPFRbXSwgUywgRj4+YCAobmVjZXNzYXJpbHkpIGJ1dCB0aGUgYHJlZ2lzdHJ5YCByZXF1aXJlcyB0aGluZ3MgdG8gYmUgYVxuICogYEZpZWxkYCB3aGljaCBpcyBkZWZpbmVkIGFzIGBSZWFjdC5Db21wb25lbnRUeXBlPEZpZWxkUHJvcHM8VCwgUywgRj4+YCwgc28gY2FzdCBpdCB0byBtYWtlIGByZWdpc3RyeWAgaGFwcHkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IEFycmF5RmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcnJheUZpZWxkLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRXaWRnZXQsIGdldFVpT3B0aW9ucywgb3B0aW9uc0xpc3QsIFRyYW5zbGF0YWJsZVN0cmluZywgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0Jztcbi8qKiBUaGUgYEJvb2xlYW5GaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSBpcyBib29sZWFuLiBJdCBjb25zdHJ1Y3RzIGBlbnVtT3B0aW9uc2AgZm9yIHRoZVxuICogdHdvIGJvb2xlYW4gdmFsdWVzIGJhc2VkIG9uIHRoZSB2YXJpb3VzIGFsdGVybmF0aXZlcyBpbiB0aGUgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAqL1xuZnVuY3Rpb24gQm9vbGVhbkZpZWxkKHByb3BzKSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgY29uc3QgeyBzY2hlbWEsIG5hbWUsIHVpU2NoZW1hLCBpZFNjaGVtYSwgZm9ybURhdGEsIHJlZ2lzdHJ5LCByZXF1aXJlZCwgZGlzYWJsZWQsIHJlYWRvbmx5LCBoaWRlRXJyb3IsIGF1dG9mb2N1cywgdGl0bGUsIG9uQ2hhbmdlLCBvbkZvY3VzLCBvbkJsdXIsIHJhd0Vycm9ycywgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgdGl0bGU6IHNjaGVtYVRpdGxlIH0gPSBzY2hlbWE7XG4gICAgY29uc3QgeyB3aWRnZXRzLCBmb3JtQ29udGV4dCwgdHJhbnNsYXRlU3RyaW5nLCBnbG9iYWxVaU9wdGlvbnMgfSA9IHJlZ2lzdHJ5O1xuICAgIGNvbnN0IHsgd2lkZ2V0ID0gJ2NoZWNrYm94JywgdGl0bGU6IHVpVGl0bGUsIFxuICAgIC8vIFVubGlrZSB0aGUgb3RoZXIgZmllbGRzLCBkb24ndCB1c2UgYGdldERpc3BsYXlMYWJlbCgpYCBzaW5jZSBpdCBhbHdheXMgcmV0dXJucyBmYWxzZSBmb3IgdGhlIGJvb2xlYW4gdHlwZVxuICAgIGxhYmVsOiBkaXNwbGF5TGFiZWwgPSB0cnVlLCAuLi5vcHRpb25zIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICBjb25zdCB5ZXMgPSB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLlllc0xhYmVsKTtcbiAgICBjb25zdCBubyA9IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuTm9MYWJlbCk7XG4gICAgbGV0IGVudW1PcHRpb25zO1xuICAgIGNvbnN0IGxhYmVsID0gKF9iID0gKF9hID0gdWlUaXRsZSAhPT0gbnVsbCAmJiB1aVRpdGxlICE9PSB2b2lkIDAgPyB1aVRpdGxlIDogc2NoZW1hVGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRpdGxlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBuYW1lO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5vbmVPZikpIHtcbiAgICAgICAgZW51bU9wdGlvbnMgPSBvcHRpb25zTGlzdCh7XG4gICAgICAgICAgICBvbmVPZjogc2NoZW1hLm9uZU9mXG4gICAgICAgICAgICAgICAgLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb24udGl0bGUgfHwgKG9wdGlvbi5jb25zdCA9PT0gdHJ1ZSA/IHllcyA6IG5vKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcigobykgPT4gbyksIC8vIGNhc3QgYXdheSB0aGUgZXJyb3IgdGhhdCB0eXBlc2NyaXB0IGNhbid0IGdyb2sgaXMgZml4ZWRcbiAgICAgICAgfSwgdWlTY2hlbWEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gV2UgZGVwcmVjYXRlZCBlbnVtTmFtZXMgaW4gdjUuIEl0J3MgaW50ZW50aW9uYWxseSBvbWl0dGVkIGZyb20gUlNKRlNjaGVtYSB0eXBlLCBzbyB3ZSBuZWVkIHRvIGNhc3QgaGVyZS5cbiAgICAgICAgY29uc3Qgc2NoZW1hV2l0aEVudW1OYW1lcyA9IHNjaGVtYTtcbiAgICAgICAgY29uc3QgZW51bXMgPSAoX2MgPSBzY2hlbWEuZW51bSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogW3RydWUsIGZhbHNlXTtcbiAgICAgICAgaWYgKCFzY2hlbWFXaXRoRW51bU5hbWVzLmVudW1OYW1lcyAmJiBlbnVtcy5sZW5ndGggPT09IDIgJiYgZW51bXMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSAnYm9vbGVhbicpKSB7XG4gICAgICAgICAgICBlbnVtT3B0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtc1swXSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVudW1zWzBdID8geWVzIDogbm8sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtc1sxXSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVudW1zWzFdID8geWVzIDogbm8sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbnVtT3B0aW9ucyA9IG9wdGlvbnNMaXN0KHtcbiAgICAgICAgICAgICAgICBlbnVtOiBlbnVtcyxcbiAgICAgICAgICAgICAgICAvLyBOT1RFOiBlbnVtTmFtZXMgaXMgZGVwcmVjYXRlZCwgYnV0IHN0aWxsIHN1cHBvcnRlZCBmb3Igbm93LlxuICAgICAgICAgICAgICAgIGVudW1OYW1lczogc2NoZW1hV2l0aEVudW1OYW1lcy5lbnVtTmFtZXMsXG4gICAgICAgICAgICB9LCB1aVNjaGVtYSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIChfanN4KFdpZGdldCwgeyBvcHRpb25zOiB7IC4uLm9wdGlvbnMsIGVudW1PcHRpb25zIH0sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIGlkOiBpZFNjaGVtYS4kaWQsIG5hbWU6IG5hbWUsIG9uQ2hhbmdlOiBvbkNoYW5nZSwgb25Gb2N1czogb25Gb2N1cywgb25CbHVyOiBvbkJsdXIsIGxhYmVsOiBsYWJlbCwgaGlkZUxhYmVsOiAhZGlzcGxheUxhYmVsLCB2YWx1ZTogZm9ybURhdGEsIHJlcXVpcmVkOiByZXF1aXJlZCwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCByZWdpc3RyeTogcmVnaXN0cnksIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIHJhd0Vycm9yczogcmF3RXJyb3JzIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IEJvb2xlYW5GaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJvb2xlYW5GaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBvbWl0IGZyb20gJ2xvZGFzaC9vbWl0JztcbmltcG9ydCB7IEFOWV9PRl9LRVksIGRlZXBFcXVhbHMsIEVSUk9SU19LRVksIGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEsIGdldFVpT3B0aW9ucywgZ2V0V2lkZ2V0LCBtZXJnZVNjaGVtYXMsIE9ORV9PRl9LRVksIFRyYW5zbGF0YWJsZVN0cmluZywgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBBbnlPZkZpZWxkYCBjb21wb25lbnQgaXMgdXNlZCB0byByZW5kZXIgYSBmaWVsZCBpbiB0aGUgc2NoZW1hIHRoYXQgaXMgYW4gYGFueU9mYCwgYGFsbE9mYCBvciBgb25lT2ZgLiBJdCB0cmFja3NcbiAqIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb3B0aW9uIGFuZCBjbGVhbnMgdXAgYW55IGlycmVsZXZhbnQgZGF0YSBpbiBgZm9ybURhdGFgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAqL1xuY2xhc3MgQW55T2ZGaWVsZCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgLyoqIENvbnN0cnVjdHMgYW4gYEFueU9mRmllbGRgIHdpdGggdGhlIGdpdmVuIGBwcm9wc2AgdG8gaW5pdGlhbGl6ZSB0aGUgaW5pdGlhbGx5IHNlbGVjdGVkIG9wdGlvbiBpbiBzdGF0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgdG8gcmVtZW1iZXIgd2hhdCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbiBpcy4gSW4gYWRkaXRpb24gdG8gdGhhdCB0aGUgYGZvcm1EYXRhYCBpcyB1cGRhdGVkXG4gICAgICAgICAqIHRvIHJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBuZXdseSBzZWxlY3RlZCBvcHRpb24gc2NoZW1hLCBhbmQgdGhlbiB0aGUgdXBkYXRlZCBkYXRhIGlzIHBhc3NlZCB0b1xuICAgICAgICAgKiB0aGUgYG9uQ2hhbmdlYCBoYW5kbGVyLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gb3B0aW9uIC0gVGhlIG5ldyBvcHRpb24gdmFsdWUgYmVpbmcgc2VsZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25PcHRpb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNlbGVjdGVkT3B0aW9uLCByZXRyaWV2ZWRPcHRpb25zIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgY29uc3QgeyBmb3JtRGF0YSwgb25DaGFuZ2UsIHJlZ2lzdHJ5IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgY29uc3QgeyBzY2hlbWFVdGlscyB9ID0gcmVnaXN0cnk7XG4gICAgICAgICAgICBjb25zdCBpbnRPcHRpb24gPSBvcHRpb24gIT09IHVuZGVmaW5lZCA/IHBhcnNlSW50KG9wdGlvbiwgMTApIDogLTE7XG4gICAgICAgICAgICBpZiAoaW50T3B0aW9uID09PSBzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5ld09wdGlvbiA9IGludE9wdGlvbiA+PSAwID8gcmV0cmlldmVkT3B0aW9uc1tpbnRPcHRpb25dIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3Qgb2xkT3B0aW9uID0gc2VsZWN0ZWRPcHRpb24gPj0gMCA/IHJldHJpZXZlZE9wdGlvbnNbc2VsZWN0ZWRPcHRpb25dIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IG5ld0Zvcm1EYXRhID0gc2NoZW1hVXRpbHMuc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hKG5ld09wdGlvbiwgb2xkT3B0aW9uLCBmb3JtRGF0YSk7XG4gICAgICAgICAgICBpZiAobmV3T3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy8gQ2FsbCBnZXREZWZhdWx0Rm9ybVN0YXRlIHRvIG1ha2Ugc3VyZSBkZWZhdWx0cyBhcmUgcG9wdWxhdGVkIG9uIGNoYW5nZS4gUGFzcyBcImV4Y2x1ZGVPYmplY3RDaGlsZHJlblwiXG4gICAgICAgICAgICAgICAgLy8gc28gdGhhdCBvbmx5IHRoZSByb290IG9iamVjdHMgdGhlbXNlbHZlcyBhcmUgY3JlYXRlZCB3aXRob3V0IGFkZGluZyB1bmRlZmluZWQgY2hpbGRyZW4gcHJvcGVydGllc1xuICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhID0gc2NoZW1hVXRpbHMuZ2V0RGVmYXVsdEZvcm1TdGF0ZShuZXdPcHRpb24sIG5ld0Zvcm1EYXRhLCAnZXhjbHVkZU9iamVjdENoaWxkcmVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc2VsZWN0ZWRPcHRpb246IGludE9wdGlvbiB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UobmV3Rm9ybURhdGEsIHVuZGVmaW5lZCwgdGhpcy5nZXRGaWVsZElkKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHsgZm9ybURhdGEsIG9wdGlvbnMsIHJlZ2lzdHJ5OiB7IHNjaGVtYVV0aWxzIH0sIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAvLyBjYWNoZSB0aGUgcmV0cmlldmVkIG9wdGlvbnMgaW4gc3RhdGUgaW4gY2FzZSB0aGV5IGhhdmUgJHJlZnMgdG8gc2F2ZSBkb2luZyBpdCBsYXRlclxuICAgICAgICBjb25zdCByZXRyaWV2ZWRPcHRpb25zID0gb3B0aW9ucy5tYXAoKG9wdCkgPT4gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEob3B0LCBmb3JtRGF0YSkpO1xuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgcmV0cmlldmVkT3B0aW9ucyxcbiAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uOiB0aGlzLmdldE1hdGNoaW5nT3B0aW9uKDAsIGZvcm1EYXRhLCByZXRyaWV2ZWRPcHRpb25zKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqIFJlYWN0IGxpZmVjeWNsZSBtZXRob2QgdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgcHJvcHMgYW5kL29yIHN0YXRlIGZvciB0aGlzIGNvbXBvbmVudCBpcyB1cGRhdGVkLiBJdCByZWNvbXB1dGVzIHRoZVxuICAgICAqIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb24gYmFzZWQgb24gdGhlIG92ZXJhbGwgYGZvcm1EYXRhYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByZXZQcm9wcyAtIFRoZSBwcmV2aW91cyBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAgICAgKiBAcGFyYW0gcHJldlN0YXRlIC0gVGhlIHByZXZpb3VzIGBBbnlPZkZpZWxkU3RhdGVgIGZvciB0aGlzIHRlbXBsYXRlXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHsgZm9ybURhdGEsIG9wdGlvbnMsIGlkU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHNlbGVjdGVkT3B0aW9uIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBsZXQgbmV3U3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgICAgICBpZiAoIWRlZXBFcXVhbHMocHJldlByb3BzLm9wdGlvbnMsIG9wdGlvbnMpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHJlZ2lzdHJ5OiB7IHNjaGVtYVV0aWxzIH0sIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgLy8gcmUtY2FjaGUgdGhlIHJldHJpZXZlZCBvcHRpb25zIGluIHN0YXRlIGluIGNhc2UgdGhleSBoYXZlICRyZWZzIHRvIHNhdmUgZG9pbmcgaXQgbGF0ZXJcbiAgICAgICAgICAgIGNvbnN0IHJldHJpZXZlZE9wdGlvbnMgPSBvcHRpb25zLm1hcCgob3B0KSA9PiBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShvcHQsIGZvcm1EYXRhKSk7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IHsgc2VsZWN0ZWRPcHRpb24sIHJldHJpZXZlZE9wdGlvbnMgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRlZXBFcXVhbHMoZm9ybURhdGEsIHByZXZQcm9wcy5mb3JtRGF0YSkgJiYgaWRTY2hlbWEuJGlkID09PSBwcmV2UHJvcHMuaWRTY2hlbWEuJGlkKSB7XG4gICAgICAgICAgICBjb25zdCB7IHJldHJpZXZlZE9wdGlvbnMgfSA9IG5ld1N0YXRlO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdPcHRpb24gPSB0aGlzLmdldE1hdGNoaW5nT3B0aW9uKHNlbGVjdGVkT3B0aW9uLCBmb3JtRGF0YSwgcmV0cmlldmVkT3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAocHJldlN0YXRlICYmIG1hdGNoaW5nT3B0aW9uICE9PSBzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgICAgIG5ld1N0YXRlID0geyBzZWxlY3RlZE9wdGlvbjogbWF0Y2hpbmdPcHRpb24sIHJldHJpZXZlZE9wdGlvbnMgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3U3RhdGUgIT09IHRoaXMuc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBiZXN0IG1hdGNoaW5nIG9wdGlvbiBmb3IgdGhlIGdpdmVuIGBmb3JtRGF0YWAgYW5kIGBvcHRpb25zYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBuZXcgZm9ybURhdGFcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgdG8gY2hvb3NlIGZyb21cbiAgICAgKiBAcmV0dXJuIC0gVGhlIGluZGV4IG9mIHRoZSBgb3B0aW9uYCB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgYGZvcm1EYXRhYFxuICAgICAqL1xuICAgIGdldE1hdGNoaW5nT3B0aW9uKHNlbGVjdGVkT3B0aW9uLCBmb3JtRGF0YSwgb3B0aW9ucykge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgcmVnaXN0cnk6IHsgc2NoZW1hVXRpbHMgfSwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hKHNjaGVtYSk7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHNjaGVtYVV0aWxzLmdldENsb3Nlc3RNYXRjaGluZ09wdGlvbihmb3JtRGF0YSwgb3B0aW9ucywgc2VsZWN0ZWRPcHRpb24sIGRpc2NyaW1pbmF0b3IpO1xuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cbiAgICBnZXRGaWVsZElkKCkge1xuICAgICAgICBjb25zdCB7IGlkU2NoZW1hLCBzY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHJldHVybiBgJHtpZFNjaGVtYS4kaWR9JHtzY2hlbWEub25lT2YgPyAnX19vbmVvZl9zZWxlY3QnIDogJ19fYW55b2Zfc2VsZWN0J31gO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyB0aGUgYEFueU9mRmllbGRgIHNlbGVjdG9yIGFsb25nIHdpdGggYSBgU2NoZW1hRmllbGRgIGZvciB0aGUgdmFsdWUgb2YgdGhlIGBmb3JtRGF0YWBcbiAgICAgKi9cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgZGlzYWJsZWQgPSBmYWxzZSwgZXJyb3JTY2hlbWEgPSB7fSwgZm9ybUNvbnRleHQsIG9uQmx1ciwgb25Gb2N1cywgcmVnaXN0cnksIHNjaGVtYSwgdWlTY2hlbWEsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHdpZGdldHMsIGZpZWxkcywgdHJhbnNsYXRlU3RyaW5nLCBnbG9iYWxVaU9wdGlvbnMsIHNjaGVtYVV0aWxzIH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgeyBTY2hlbWFGaWVsZDogX1NjaGVtYUZpZWxkIH0gPSBmaWVsZHM7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0ZWRPcHRpb24sIHJldHJpZXZlZE9wdGlvbnMgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IHsgd2lkZ2V0ID0gJ3NlbGVjdCcsIHBsYWNlaG9sZGVyLCBhdXRvZm9jdXMsIGF1dG9jb21wbGV0ZSwgdGl0bGUgPSBzY2hlbWEudGl0bGUsIC4uLnVpT3B0aW9ucyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoeyB0eXBlOiAnbnVtYmVyJyB9LCB3aWRnZXQsIHdpZGdldHMpO1xuICAgICAgICBjb25zdCByYXdFcnJvcnMgPSBnZXQoZXJyb3JTY2hlbWEsIEVSUk9SU19LRVksIFtdKTtcbiAgICAgICAgY29uc3QgZmllbGRFcnJvclNjaGVtYSA9IG9taXQoZXJyb3JTY2hlbWEsIFtFUlJPUlNfS0VZXSk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBvcHRpb24gPSBzZWxlY3RlZE9wdGlvbiA+PSAwID8gcmV0cmlldmVkT3B0aW9uc1tzZWxlY3RlZE9wdGlvbl0gfHwgbnVsbCA6IG51bGw7XG4gICAgICAgIGxldCBvcHRpb25TY2hlbWE7XG4gICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICAgIC8vIG1lcmdlIHRvcCBsZXZlbCByZXF1aXJlZCBmaWVsZFxuICAgICAgICAgICAgY29uc3QgeyByZXF1aXJlZCB9ID0gc2NoZW1hO1xuICAgICAgICAgICAgLy8gTWVyZ2UgaW4gYWxsIHRoZSBub24tb25lT2YvYW55T2YgcHJvcGVydGllcyBhbmQgYWxzbyBza2lwIHRoZSBzcGVjaWFsIEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRyBwcm9wZXJ0eVxuICAgICAgICAgICAgb3B0aW9uU2NoZW1hID0gcmVxdWlyZWQgPyBtZXJnZVNjaGVtYXMoeyByZXF1aXJlZCB9LCBvcHRpb24pIDogb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZpcnN0IHdlIHdpbGwgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFuIGFueU9mL29uZU9mIG92ZXJyaWRlIGZvciB0aGUgVUkgc2NoZW1hXG4gICAgICAgIGxldCBvcHRpb25zVWlTY2hlbWEgPSBbXTtcbiAgICAgICAgaWYgKE9ORV9PRl9LRVkgaW4gc2NoZW1hICYmIHVpU2NoZW1hICYmIE9ORV9PRl9LRVkgaW4gdWlTY2hlbWEpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHVpU2NoZW1hW09ORV9PRl9LRVldKSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnNVaVNjaGVtYSA9IHVpU2NoZW1hW09ORV9PRl9LRVldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGB1aVNjaGVtYS5vbmVPZiBpcyBub3QgYW4gYXJyYXkgZm9yIFwiJHt0aXRsZSB8fCBuYW1lfVwiYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQU5ZX09GX0tFWSBpbiBzY2hlbWEgJiYgdWlTY2hlbWEgJiYgQU5ZX09GX0tFWSBpbiB1aVNjaGVtYSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodWlTY2hlbWFbQU5ZX09GX0tFWV0pKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uc1VpU2NoZW1hID0gdWlTY2hlbWFbQU5ZX09GX0tFWV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYHVpU2NoZW1hLmFueU9mIGlzIG5vdCBhbiBhcnJheSBmb3IgXCIke3RpdGxlIHx8IG5hbWV9XCJgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUaGVuIHdlIHBpY2sgdGhlIG9uZSB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdGVkIG9wdGlvbiBpbmRleCwgaWYgb25lIGV4aXN0cyBvdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgbWFpbiB1aVNjaGVtYVxuICAgICAgICBsZXQgb3B0aW9uVWlTY2hlbWEgPSB1aVNjaGVtYTtcbiAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uID49IDAgJiYgb3B0aW9uc1VpU2NoZW1hLmxlbmd0aCA+IHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICBvcHRpb25VaVNjaGVtYSA9IG9wdGlvbnNVaVNjaGVtYVtzZWxlY3RlZE9wdGlvbl07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHJhbnNsYXRlRW51bSA9IHRpdGxlXG4gICAgICAgICAgICA/IFRyYW5zbGF0YWJsZVN0cmluZy5UaXRsZU9wdGlvblByZWZpeFxuICAgICAgICAgICAgOiBUcmFuc2xhdGFibGVTdHJpbmcuT3B0aW9uUHJlZml4O1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVQYXJhbXMgPSB0aXRsZSA/IFt0aXRsZV0gOiBbXTtcbiAgICAgICAgY29uc3QgZW51bU9wdGlvbnMgPSByZXRyaWV2ZWRPcHRpb25zLm1hcCgob3B0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgLy8gQWxzbyBzZWUgaWYgdGhlcmUgaXMgYW4gb3ZlcnJpZGUgdGl0bGUgaW4gdGhlIHVpU2NoZW1hIGZvciBlYWNoIG9wdGlvbiwgb3RoZXJ3aXNlIHVzZSB0aGUgdGl0bGUgZnJvbSB0aGUgb3B0aW9uXG4gICAgICAgICAgICBjb25zdCB7IHRpdGxlOiB1aVRpdGxlID0gb3B0LnRpdGxlIH0gPSBnZXRVaU9wdGlvbnMob3B0aW9uc1VpU2NoZW1hW2luZGV4XSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB1aVRpdGxlIHx8IHRyYW5zbGF0ZVN0cmluZyh0cmFuc2xhdGVFbnVtLCB0cmFuc2xhdGVQYXJhbXMuY29uY2F0KFN0cmluZyhpbmRleCArIDEpKSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGluZGV4LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdwYW5lbCBwYW5lbC1kZWZhdWx0IHBhbmVsLWJvZHknLCBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdmb3JtLWdyb3VwJywgY2hpbGRyZW46IF9qc3goV2lkZ2V0LCB7IGlkOiB0aGlzLmdldEZpZWxkSWQoKSwgbmFtZTogYCR7bmFtZX0ke3NjaGVtYS5vbmVPZiA/ICdfX29uZW9mX3NlbGVjdCcgOiAnX19hbnlvZl9zZWxlY3QnfWAsIHNjaGVtYTogeyB0eXBlOiAnbnVtYmVyJywgZGVmYXVsdDogMCB9LCBvbkNoYW5nZTogdGhpcy5vbk9wdGlvbkNoYW5nZSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIGRpc2FibGVkOiBkaXNhYmxlZCB8fCBpc0VtcHR5KGVudW1PcHRpb25zKSwgbXVsdGlwbGU6IGZhbHNlLCByYXdFcnJvcnM6IHJhd0Vycm9ycywgZXJyb3JTY2hlbWE6IGZpZWxkRXJyb3JTY2hlbWEsIHZhbHVlOiBzZWxlY3RlZE9wdGlvbiA+PSAwID8gc2VsZWN0ZWRPcHRpb24gOiB1bmRlZmluZWQsIG9wdGlvbnM6IHsgZW51bU9wdGlvbnMsIC4uLnVpT3B0aW9ucyB9LCByZWdpc3RyeTogcmVnaXN0cnksIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBhdXRvY29tcGxldGU6IGF1dG9jb21wbGV0ZSwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIGxhYmVsOiB0aXRsZSAhPT0gbnVsbCAmJiB0aXRsZSAhPT0gdm9pZCAwID8gdGl0bGUgOiBuYW1lLCBoaWRlTGFiZWw6ICFkaXNwbGF5TGFiZWwgfSkgfSksIG9wdGlvblNjaGVtYSAmJiBfanN4KF9TY2hlbWFGaWVsZCwgeyAuLi50aGlzLnByb3BzLCBzY2hlbWE6IG9wdGlvblNjaGVtYSwgdWlTY2hlbWE6IG9wdGlvblVpU2NoZW1hIH0pXSB9KSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgQW55T2ZGaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU11bHRpU2NoZW1hRmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFzTnVtYmVyIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLy8gTWF0Y2hlcyBhIHN0cmluZyB0aGF0IGVuZHMgaW4gYSAuIGNoYXJhY3Rlciwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIHNlcXVlbmNlIG9mXG4vLyBkaWdpdHMgZm9sbG93ZWQgYnkgYW55IG51bWJlciBvZiAwIGNoYXJhY3RlcnMgdXAgdW50aWwgdGhlIGVuZCBvZiB0aGUgbGluZS5cbi8vIEVuc3VyaW5nIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHByZWZpeGVkIGNoYXJhY3RlciBpcyBpbXBvcnRhbnQgc28gdGhhdFxuLy8geW91IGRvbid0IGluY29ycmVjdGx5IG1hdGNoIGFnYWluc3QgXCIwXCIuXG5jb25zdCB0cmFpbGluZ0NoYXJNYXRjaGVyV2l0aFByZWZpeCA9IC9cXC4oWzAtOV0qMCkqJC87XG4vLyBUaGlzIGlzIHVzZWQgZm9yIHRyaW1taW5nIHRoZSB0cmFpbGluZyAwIGFuZCAuIGNoYXJhY3RlcnMgd2l0aG91dCBhZmZlY3Rpbmdcbi8vIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcuIEl0cyBwb3NzaWJsZSB0byB1c2Ugb25lIFJlZ0V4IHdpdGggZ3JvdXBzIGZvciB0aGlzXG4vLyBmdW5jdGlvbmFsaXR5LCBidXQgaXQgaXMgZmFpcmx5IGNvbXBsZXggY29tcGFyZWQgdG8gc2ltcGx5IGRlZmluaW5nIHR3b1xuLy8gZGlmZmVyZW50IG1hdGNoZXJzLlxuY29uc3QgdHJhaWxpbmdDaGFyTWF0Y2hlciA9IC9bMC5dMCokLztcbi8qKlxuICogVGhlIE51bWJlckZpZWxkIGNsYXNzIGhhcyBzb21lIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGRlYWxpbmcgd2l0aCB0cmFpbGluZ1xuICogZGVjaW1hbCBwb2ludHMgYW5kL29yIHplcm9lcy4gVGhpcyBsb2dpYyBpcyBkZXNpZ25lZCB0byBhbGxvdyB0cmFpbGluZyB2YWx1ZXNcbiAqIHRvIGJlIHZpc2libGUgaW4gdGhlIGlucHV0IGVsZW1lbnQsIGJ1dCBub3QgYmUgcmVwcmVzZW50ZWQgaW4gdGhlXG4gKiBjb3JyZXNwb25kaW5nIGZvcm0gZGF0YS5cbiAqXG4gKiBUaGUgYWxnb3JpdGhtIGlzIGFzIGZvbGxvd3M6XG4gKlxuICogMS4gV2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcyB0aGUgdmFsdWUgaXMgY2FjaGVkIGluIHRoZSBjb21wb25lbnQgc3RhdGVcbiAqXG4gKiAyLiBUaGUgdmFsdWUgaXMgdGhlbiBub3JtYWxpemVkLCByZW1vdmluZyB0cmFpbGluZyBkZWNpbWFsIHBvaW50cyBhbmQgemVyb3MsXG4gKiAgICB0aGVuIHBhc3NlZCB0byB0aGUgXCJvbkNoYW5nZVwiIGNhbGxiYWNrXG4gKlxuICogMy4gV2hlbiB0aGUgY29tcG9uZW50IGlzIHJlbmRlcmVkLCB0aGUgZm9ybURhdGEgdmFsdWUgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZVxuICogICAgdmFsdWUgY2FjaGVkIGluIHRoZSBzdGF0ZS4gSWYgaXQgbWF0Y2hlcyB0aGUgY2FjaGVkIHZhbHVlLCB0aGUgY2FjaGVkXG4gKiAgICB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlIGlucHV0IGluc3RlYWQgb2YgdGhlIGZvcm1EYXRhIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIE51bWJlckZpZWxkKHByb3BzKSB7XG4gICAgY29uc3QgeyByZWdpc3RyeSwgb25DaGFuZ2UsIGZvcm1EYXRhLCB2YWx1ZTogaW5pdGlhbFZhbHVlIH0gPSBwcm9wcztcbiAgICBjb25zdCBbbGFzdFZhbHVlLCBzZXRMYXN0VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcbiAgICBjb25zdCB7IFN0cmluZ0ZpZWxkIH0gPSByZWdpc3RyeS5maWVsZHM7XG4gICAgbGV0IHZhbHVlID0gZm9ybURhdGE7XG4gICAgLyoqIEhhbmRsZSB0aGUgY2hhbmdlIGZyb20gdGhlIGBTdHJpbmdGaWVsZGAgdG8gcHJvcGVybHkgY29udmVydCB0byBhIG51bWJlclxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGN1cnJlbnQgdmFsdWUgZm9yIHRoZSBjaGFuZ2Ugb2NjdXJyaW5nXG4gICAgICovXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHZhbHVlLCBlcnJvclNjaGVtYSwgaWQpID0+IHtcbiAgICAgICAgLy8gQ2FjaGUgdGhlIG9yaWdpbmFsIHZhbHVlIGluIGNvbXBvbmVudCBzdGF0ZVxuICAgICAgICBzZXRMYXN0VmFsdWUodmFsdWUpO1xuICAgICAgICAvLyBOb3JtYWxpemUgZGVjaW1hbHMgdGhhdCBkb24ndCBzdGFydCB3aXRoIGEgemVybyBjaGFyYWN0ZXIgaW4gYWR2YW5jZSBzb1xuICAgICAgICAvLyB0aGF0IHRoZSByZXN0IG9mIHRoZSBub3JtYWxpemF0aW9uIGxvZ2ljIGlzIHNpbXBsZXJcbiAgICAgICAgaWYgKGAke3ZhbHVlfWAuY2hhckF0KDApID09PSAnLicpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYDAke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdmFsdWUgaXMgYSBzdHJpbmcgKHRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgd2lkZ2V0IHVzZWQgaXMgYVxuICAgICAgICAvLyA8c2VsZWN0PiwgZHVlIHRvIGFuIGVudW0gZGVjbGFyYXRpb24gZXRjKSB0aGVuLCBpZiB0aGUgdmFsdWUgZW5kcyBpbiBhXG4gICAgICAgIC8vIHRyYWlsaW5nIGRlY2ltYWwgcG9pbnQgb3IgbXVsdGlwbGUgemVyb2VzLCBzdHJpcCB0aGUgdHJhaWxpbmcgdmFsdWVzXG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubWF0Y2godHJhaWxpbmdDaGFyTWF0Y2hlcldpdGhQcmVmaXgpXG4gICAgICAgICAgICA/IGFzTnVtYmVyKHZhbHVlLnJlcGxhY2UodHJhaWxpbmdDaGFyTWF0Y2hlciwgJycpKVxuICAgICAgICAgICAgOiBhc051bWJlcih2YWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlKHByb2Nlc3NlZCwgZXJyb3JTY2hlbWEsIGlkKTtcbiAgICB9LCBbb25DaGFuZ2VdKTtcbiAgICBpZiAodHlwZW9mIGxhc3RWYWx1ZSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAvLyBDb25zdHJ1Y3QgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBjaGVja3MgZm9yIGEgc3RyaW5nIHRoYXQgY29uc2lzdHNcbiAgICAgICAgLy8gb2YgdGhlIGZvcm1EYXRhIHZhbHVlIHN1ZmZpeGVkIHdpdGggemVybyBvciBvbmUgJy4nIGNoYXJhY3RlcnMgYW5kIHplcm9cbiAgICAgICAgLy8gb3IgbW9yZSAnMCcgY2hhcmFjdGVyc1xuICAgICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYF4oJHtTdHJpbmcodmFsdWUpLnJlcGxhY2UoJy4nLCAnXFxcXC4nKX0pP1xcXFwuPzAqJGApO1xuICAgICAgICAvLyBJZiB0aGUgY2FjaGVkIFwibGFzdFZhbHVlXCIgaXMgYSBtYXRjaCwgdXNlIHRoYXQgaW5zdGVhZCBvZiB0aGUgZm9ybURhdGFcbiAgICAgICAgLy8gdmFsdWUgdG8gcHJldmVudCB0aGUgaW5wdXQgdmFsdWUgZnJvbSBjaGFuZ2luZyBpbiB0aGUgVUlcbiAgICAgICAgaWYgKGxhc3RWYWx1ZS5tYXRjaChyZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gbGFzdFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfanN4KFN0cmluZ0ZpZWxkLCB7IC4uLnByb3BzLCBmb3JtRGF0YTogdmFsdWUsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UgfSk7XG59XG5leHBvcnQgZGVmYXVsdCBOdW1iZXJGaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU51bWJlckZpZWxkLmpzLm1hcCIsImltcG9ydCphcyBlIGZyb21cInJlYWN0XCI7ZnVuY3Rpb24gdCgpe3JldHVybiB0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Y29uc3Qgbj1bXCJjaGlsZHJlblwiLFwib3B0aW9uc1wiXSxyPXtibG9ja1F1b3RlOlwiMFwiLGJyZWFrTGluZTpcIjFcIixicmVha1RoZW1hdGljOlwiMlwiLGNvZGVCbG9jazpcIjNcIixjb2RlRmVuY2VkOlwiNFwiLGNvZGVJbmxpbmU6XCI1XCIsZm9vdG5vdGU6XCI2XCIsZm9vdG5vdGVSZWZlcmVuY2U6XCI3XCIsZ2ZtVGFzazpcIjhcIixoZWFkaW5nOlwiOVwiLGhlYWRpbmdTZXRleHQ6XCIxMFwiLGh0bWxCbG9jazpcIjExXCIsaHRtbENvbW1lbnQ6XCIxMlwiLGh0bWxTZWxmQ2xvc2luZzpcIjEzXCIsaW1hZ2U6XCIxNFwiLGxpbms6XCIxNVwiLGxpbmtBbmdsZUJyYWNlU3R5bGVEZXRlY3RvcjpcIjE2XCIsbGlua0JhcmVVcmxEZXRlY3RvcjpcIjE3XCIsbGlua01haWx0b0RldGVjdG9yOlwiMThcIixuZXdsaW5lQ29hbGVzY2VyOlwiMTlcIixvcmRlcmVkTGlzdDpcIjIwXCIscGFyYWdyYXBoOlwiMjFcIixyZWY6XCIyMlwiLHJlZkltYWdlOlwiMjNcIixyZWZMaW5rOlwiMjRcIix0YWJsZTpcIjI1XCIsdGFibGVTZXBhcmF0b3I6XCIyNlwiLHRleHQ6XCIyN1wiLHRleHRCb2xkZWQ6XCIyOFwiLHRleHRFbXBoYXNpemVkOlwiMjlcIix0ZXh0RXNjYXBlZDpcIjMwXCIsdGV4dE1hcmtlZDpcIjMxXCIsdGV4dFN0cmlrZXRocm91Z2hlZDpcIjMyXCIsdW5vcmRlcmVkTGlzdDpcIjMzXCJ9O3ZhciBpOyFmdW5jdGlvbihlKXtlW2UuTUFYPTBdPVwiTUFYXCIsZVtlLkhJR0g9MV09XCJISUdIXCIsZVtlLk1FRD0yXT1cIk1FRFwiLGVbZS5MT1c9M109XCJMT1dcIixlW2UuTUlOPTRdPVwiTUlOXCJ9KGl8fChpPXt9KSk7Y29uc3QgbD1bXCJhbGxvd0Z1bGxTY3JlZW5cIixcImFsbG93VHJhbnNwYXJlbmN5XCIsXCJhdXRvQ29tcGxldGVcIixcImF1dG9Gb2N1c1wiLFwiYXV0b1BsYXlcIixcImNlbGxQYWRkaW5nXCIsXCJjZWxsU3BhY2luZ1wiLFwiY2hhclNldFwiLFwiY2xhc3NJZFwiLFwiY29sU3BhblwiLFwiY29udGVudEVkaXRhYmxlXCIsXCJjb250ZXh0TWVudVwiLFwiY3Jvc3NPcmlnaW5cIixcImVuY1R5cGVcIixcImZvcm1BY3Rpb25cIixcImZvcm1FbmNUeXBlXCIsXCJmb3JtTWV0aG9kXCIsXCJmb3JtTm9WYWxpZGF0ZVwiLFwiZm9ybVRhcmdldFwiLFwiZnJhbWVCb3JkZXJcIixcImhyZWZMYW5nXCIsXCJpbnB1dE1vZGVcIixcImtleVBhcmFtc1wiLFwia2V5VHlwZVwiLFwibWFyZ2luSGVpZ2h0XCIsXCJtYXJnaW5XaWR0aFwiLFwibWF4TGVuZ3RoXCIsXCJtZWRpYUdyb3VwXCIsXCJtaW5MZW5ndGhcIixcIm5vVmFsaWRhdGVcIixcInJhZGlvR3JvdXBcIixcInJlYWRPbmx5XCIsXCJyb3dTcGFuXCIsXCJzcGVsbENoZWNrXCIsXCJzcmNEb2NcIixcInNyY0xhbmdcIixcInNyY1NldFwiLFwidGFiSW5kZXhcIixcInVzZU1hcFwiXS5yZWR1Y2UoKGUsdCk9PihlW3QudG9Mb3dlckNhc2UoKV09dCxlKSx7Y2xhc3M6XCJjbGFzc05hbWVcIixmb3I6XCJodG1sRm9yXCJ9KSxhPXthbXA6XCImXCIsYXBvczpcIidcIixndDpcIj5cIixsdDpcIjxcIixuYnNwOlwiwqBcIixxdW90Olwi4oCcXCJ9LG89W1wic3R5bGVcIixcInNjcmlwdFwiXSxjPS8oWy1BLVowLTlfOl0rKSg/Olxccyo9XFxzKig/Oig/OlwiKCg/OlxcXFwufFteXCJdKSopXCIpfCg/OicoKD86XFxcXC58W14nXSkqKScpfCg/OlxceygoPzpcXFxcLnx7W159XSo/fXxbXn1dKSopXFx9KSkpPy9naSxzPS9tYWlsdG86L2ksZD0vXFxuezIsfSQvLHA9L14oXFxzKj5bXFxzXFxTXSo/KSg/PVxcblxcbnwkKS8sdT0vXiAqPiA/L2dtLGY9L14oPzpcXFshKFteXFxdXSopXFxdXFxuKT8oW1xcc1xcU10qKS8saD0vXiB7Mix9XFxuLyxtPS9eKD86KCAqWy0qX10pKXszLH0gKig/OlxcbiAqKStcXG4vLGc9L14oPzogezEsM30pPyhgezMsfXx+ezMsfSkgKihcXFMrKT8gKihbXlxcbl0qPyk/XFxuKFtcXHNcXFNdKj8pKD86XFwxXFxuP3wkKS8seT0vXig/OiB7NH1bXlxcbl0rXFxuKikrKD86XFxuICopK1xcbj8vLGs9L14oYCspXFxzKihbXFxzXFxTXSo/W15gXSlcXHMqXFwxKD8hYCkvLHg9L14oPzpcXG4gKikqXFxuLyxiPS9cXHJcXG4/L2csdj0vXlxcW1xcXihbXlxcXV0rKV0oOiguKikoKFxcbisgezQsfS4qKXwoXFxuKD8hXFxbXFxeKS4rKSkqKS8sUz0vXlxcW1xcXihbXlxcXV0rKV0vLEM9L1xcZi9nLCQ9L14tLS1bIFxcdF0qXFxuKC58XFxuKSpcXG4tLS1bIFxcdF0qXFxuLyxFPS9eXFxzKj9cXFsoeHxcXHMpXFxdLyx3PS9eICooI3sxLDZ9KSAqKFteXFxuXSs/KSg/OiArIyopPyg/OlxcbiAqKSooPzpcXG58JCkvLHo9L14gKigjezEsNn0pICsoW15cXG5dKz8pKD86ICsjKik/KD86XFxuICopKig/OlxcbnwkKS8sTD0vXihbXlxcbl0rKVxcbiAqKD18LSl7Myx9ICooPzpcXG4gKikrXFxuLyxBPS9eICooPyE8W2Etel1bXiA+L10qID9cXC8+KTwoW2Etel1bXiA+L10qKSA/KCg/OltePl0qW14vXSk/KT5cXG4/KFxccyooPzo8XFwxW14+XSo/PltcXHNcXFNdKj88XFwvXFwxPnwoPyE8XFwxXFxiKVtcXHNcXFNdKSo/KTxcXC9cXDE+KD8hPFxcL1xcMT4pXFxuKi9pLFQ9LyYoW2EtejAtOV0rfCNbMC05XXsxLDZ9fCN4WzAtOWEtZkEtRl17MSw2fSk7L2dpLE89L148IS0tW1xcc1xcU10qPyg/Oi0tPikvLEI9L14oZGF0YXxhcmlhfHgpLVthLXpfXVthLXpcXGRfLi1dKiQvLE09L14gKjwoW2Etel1bYS16MC05Ol0qKSg/OlxccysoKD86PC4qPz58W14+XSkqKSk/XFwvPz4oPyE8XFwvXFwxPikoXFxzKlxcbik/L2ksUj0vXlxcey4qXFx9JC8sST0vXihodHRwcz86XFwvXFwvW15cXHM8XStbXjwuLDo7XCInKVxcXVxcc10pLyxVPS9ePChbXiA+XStAW14gPl0rKT4vLEQ9L148KFteID5dKzpcXC9bXiA+XSspPi8sTj0vLShbYS16XSk/L2dpLGo9L14oXFx8LiopXFxuKD86ICooXFx8PyAqWy06XSsgKlxcfFstfCA6XSopXFxuKCg/Oi4qXFx8LipcXG4pKikpP1xcbj8vLEg9L15cXFsoW15cXF1dKilcXF06XFxzKzw/KFteXFxzPl0rKT4/XFxzKihcIihbXlwiXSopXCIpPy8sUD0vXiFcXFsoW15cXF1dKilcXF0gP1xcWyhbXlxcXV0qKVxcXS8sRj0vXlxcWyhbXlxcXV0qKVxcXSA/XFxbKFteXFxdXSopXFxdLyxfPS8oXFxufF5bLSpdXFxzfF4jfF4gezIsfXxeLXsyLH18Xj5cXHMpLyxHPS9cXHQvZyxXPS8oXiAqXFx8fFxcfCAqJCkvZyxaPS9eICo6LSs6ICokLyxxPS9eICo6LSsgKiQvLFE9L14gKi0rOiAqJC8sVj1cIigoPzpcXFxcWy4qP1xcXFxdWyhbXS4qP1spXFxcXF1dfDwuKj8+KD86Lio/PC4qPz4pP3xgLio/YHx+fi4qP35+fD09Lio/PT18LnxcXFxcbikqPylcIixYPW5ldyBSZWdFeHAoYF4oWypfXSlcXFxcMSR7Vn1cXFxcMVxcXFwxKD8hXFxcXDEpYCksSj1uZXcgUmVnRXhwKGBeKFsqX10pJHtWfVxcXFwxKD8hXFxcXDF8XFxcXHcpYCksSz1uZXcgUmVnRXhwKGBePT0ke1Z9PT1gKSxZPW5ldyBSZWdFeHAoYF5+fiR7Vn1+fmApLGVlPS9eXFxcXChbXjAtOUEtWmEtelxcc10pLyx0ZT0vXltcXHNcXFNdKz8oPz1bXjAtOUEtWlxcc1xcdTAwYzAtXFx1ZmZmZiYjOy4oKSdcIl18XFxkK1xcLnxcXG5cXG58IHsyLH1cXG58XFx3KzpcXFN8JCkvaSxuZT0vXlxcbisvLHJlPS9eKFsgXFx0XSopLyxpZT0vXFxcXChbXlxcXFxdKS9nLGxlPS8gKlxcbiskLyxhZT0vKD86XnxcXG4pKCAqKSQvLG9lPVwiKD86XFxcXGQrXFxcXC4pXCIsY2U9XCIoPzpbKistXSlcIjtmdW5jdGlvbiBzZShlKXtyZXR1cm5cIiggKikoXCIrKDE9PT1lP29lOmNlKStcIikgK1wifWNvbnN0IGRlPXNlKDEpLHBlPXNlKDIpO2Z1bmN0aW9uIHVlKGUpe3JldHVybiBuZXcgUmVnRXhwKFwiXlwiKygxPT09ZT9kZTpwZSkpfWNvbnN0IGZlPXVlKDEpLGhlPXVlKDIpO2Z1bmN0aW9uIG1lKGUpe3JldHVybiBuZXcgUmVnRXhwKFwiXlwiKygxPT09ZT9kZTpwZSkrXCJbXlxcXFxuXSooPzpcXFxcbig/IVxcXFwxXCIrKDE9PT1lP29lOmNlKStcIiApW15cXFxcbl0qKSooXFxcXG58JClcIixcImdtXCIpfWNvbnN0IGdlPW1lKDEpLHllPW1lKDIpO2Z1bmN0aW9uIGtlKGUpe2NvbnN0IHQ9MT09PWU/b2U6Y2U7cmV0dXJuIG5ldyBSZWdFeHAoXCJeKCAqKShcIit0K1wiKSBbXFxcXHNcXFxcU10rPyg/OlxcXFxuezIsfSg/ISApKD8hXFxcXDFcIit0K1wiICg/IVwiK3QrXCIgKSlcXFxcbip8XFxcXHMqXFxcXG4qJClcIil9Y29uc3QgeGU9a2UoMSksYmU9a2UoMik7ZnVuY3Rpb24gdmUoZSx0KXtjb25zdCBuPTE9PT10LGk9bj94ZTpiZSxsPW4/Z2U6eWUsYT1uP2ZlOmhlO3JldHVybnttYXRjaChlLHQpe2NvbnN0IG49YWUuZXhlYyh0LnByZXZDYXB0dXJlKTtyZXR1cm4gbiYmKHQubGlzdHx8IXQuaW5saW5lJiYhdC5zaW1wbGUpP2kuZXhlYyhlPW5bMV0rZSk6bnVsbH0sb3JkZXI6MSxwYXJzZShlLHQscil7Y29uc3QgaT1uPytlWzJdOnZvaWQgMCxvPWVbMF0ucmVwbGFjZShkLFwiXFxuXCIpLm1hdGNoKGwpO2xldCBjPSExO3JldHVybntpdGVtczpvLm1hcChmdW5jdGlvbihlLG4pe2NvbnN0IGk9YS5leGVjKGUpWzBdLmxlbmd0aCxsPW5ldyBSZWdFeHAoXCJeIHsxLFwiK2krXCJ9XCIsXCJnbVwiKSxzPWUucmVwbGFjZShsLFwiXCIpLnJlcGxhY2UoYSxcIlwiKSxkPW49PT1vLmxlbmd0aC0xLHA9LTEhPT1zLmluZGV4T2YoXCJcXG5cXG5cIil8fGQmJmM7Yz1wO2NvbnN0IHU9ci5pbmxpbmUsZj1yLmxpc3Q7bGV0IGg7ci5saXN0PSEwLHA/KHIuaW5saW5lPSExLGg9cy5yZXBsYWNlKGxlLFwiXFxuXFxuXCIpKTooci5pbmxpbmU9ITAsaD1zLnJlcGxhY2UobGUsXCJcIikpO2NvbnN0IG09dChoLHIpO3JldHVybiByLmlubGluZT11LHIubGlzdD1mLG19KSxvcmRlcmVkOm4sc3RhcnQ6aX19LHJlbmRlcjoodCxuLGkpPT5lKHQub3JkZXJlZD9cIm9sXCI6XCJ1bFwiLHtrZXk6aS5rZXksc3RhcnQ6dC50eXBlPT09ci5vcmRlcmVkTGlzdD90LnN0YXJ0OnZvaWQgMH0sdC5pdGVtcy5tYXAoZnVuY3Rpb24odCxyKXtyZXR1cm4gZShcImxpXCIse2tleTpyfSxuKHQsaSkpfSkpfX1jb25zdCBTZT1uZXcgUmVnRXhwKFwiXlxcXFxbKCg/OlxcXFxbW15cXFxcXV0qXFxcXF18W15cXFxcW1xcXFxdXXxcXFxcXSg/PVteXFxcXFtdKlxcXFxdKSkqKVxcXFxdXFxcXChcXFxccyo8PygoPzpcXFxcKFteKV0qXFxcXCl8W15cXFxcc1xcXFxcXFxcXXxcXFxcXFxcXC4pKj8pPj8oPzpcXFxccytbJ1xcXCJdKFtcXFxcc1xcXFxTXSo/KVsnXFxcIl0pP1xcXFxzKlxcXFwpXCIpLENlPS9eIVxcWyguKj8pXFxdXFwoICooKD86XFwoW14pXSpcXCl8W14oKSBdKSopICpcIj8oW14pXCJdKik/XCI/XFwpLywkZT1bcCxnLHksdyxMLHosTyxqLGdlLHhlLHllLGJlXSxFZT1bLi4uJGUsL15bXlxcbl0rKD86ICBcXG58XFxuezIsfSkvLEEsTV07ZnVuY3Rpb24gd2UoZSl7cmV0dXJuIGUucmVwbGFjZSgvW8OAw4HDgsODw4TDhcOgw6HDosOjw6TDpcOmw4ZdL2csXCJhXCIpLnJlcGxhY2UoL1vDp8OHXS9nLFwiY1wiKS5yZXBsYWNlKC9bw7DDkF0vZyxcImRcIikucmVwbGFjZSgvW8OIw4nDisOLw6nDqMOqw6tdL2csXCJlXCIpLnJlcGxhY2UoL1vDj8Ovw47DrsONw63DjMOsXS9nLFwiaVwiKS5yZXBsYWNlKC9bw5HDsV0vZyxcIm5cIikucmVwbGFjZSgvW8O4w5jFk8WSw5XDtcOUw7TDk8Ozw5LDsl0vZyxcIm9cIikucmVwbGFjZSgvW8Ocw7zDm8O7w5rDusOZw7ldL2csXCJ1XCIpLnJlcGxhY2UoL1vFuMO/w53DvV0vZyxcInlcIikucmVwbGFjZSgvW15hLXowLTktIF0vZ2ksXCJcIikucmVwbGFjZSgvIC9naSxcIi1cIikudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiB6ZShlKXtyZXR1cm4gUS50ZXN0KGUpP1wicmlnaHRcIjpaLnRlc3QoZSk/XCJjZW50ZXJcIjpxLnRlc3QoZSk/XCJsZWZ0XCI6bnVsbH1mdW5jdGlvbiBMZShlLHQsbixpKXtjb25zdCBsPW4uaW5UYWJsZTtuLmluVGFibGU9ITA7bGV0IGE9ZS50cmltKCkuc3BsaXQoLyggKig/OmBbXmBdKmB8XFxcXFxcfHxcXHwpICopLykucmVkdWNlKChlLGwpPT4oXCJ8XCI9PT1sLnRyaW0oKT9lLnB1c2goaT97dHlwZTpyLnRhYmxlU2VwYXJhdG9yfTp7dHlwZTpyLnRleHQsdGV4dDpsfSk6XCJcIiE9PWwmJmUucHVzaC5hcHBseShlLHQobCxuKSksZSksW10pO24uaW5UYWJsZT1sO2xldCBvPVtbXV07cmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UudHlwZT09PXIudGFibGVTZXBhcmF0b3I/MCE9PXQmJnQhPT1hLmxlbmd0aC0xJiZvLnB1c2goW10pOihlLnR5cGUhPT1yLnRleHR8fG51bGwhPWFbdCsxXSYmYVt0KzFdLnR5cGUhPT1yLnRhYmxlU2VwYXJhdG9yfHwoZS50ZXh0PWUudGV4dC50cmltRW5kKCkpLG9bby5sZW5ndGgtMV0ucHVzaChlKSl9KSxvfWZ1bmN0aW9uIEFlKGUsdCxuKXtuLmlubGluZT0hMDtjb25zdCBpPWVbMl0/ZVsyXS5yZXBsYWNlKFcsXCJcIikuc3BsaXQoXCJ8XCIpLm1hcCh6ZSk6W10sbD1lWzNdP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS50cmltKCkuc3BsaXQoXCJcXG5cIikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBMZShlLHQsbiwhMCl9KX0oZVszXSx0LG4pOltdLGE9TGUoZVsxXSx0LG4sISFsLmxlbmd0aCk7cmV0dXJuIG4uaW5saW5lPSExLGwubGVuZ3RoP3thbGlnbjppLGNlbGxzOmwsaGVhZGVyOmEsdHlwZTpyLnRhYmxlfTp7Y2hpbGRyZW46YSx0eXBlOnIucGFyYWdyYXBofX1mdW5jdGlvbiBUZShlLHQpe3JldHVybiBudWxsPT1lLmFsaWduW3RdP3t9Ont0ZXh0QWxpZ246ZS5hbGlnblt0XX19ZnVuY3Rpb24gT2UoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uaW5saW5lP2UuZXhlYyh0KTpudWxsfX1mdW5jdGlvbiBCZShlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5pbmxpbmV8fG4uc2ltcGxlP2UuZXhlYyh0KTpudWxsfX1mdW5jdGlvbiBNZShlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5pbmxpbmV8fG4uc2ltcGxlP251bGw6ZS5leGVjKHQpfX1mdW5jdGlvbiBSZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuZXhlYyh0KX19ZnVuY3Rpb24gSWUoZSx0KXtpZih0LmlubGluZXx8dC5zaW1wbGUpcmV0dXJuIG51bGw7bGV0IG49XCJcIjtlLnNwbGl0KFwiXFxuXCIpLmV2ZXJ5KGU9PiEkZS5zb21lKHQ9PnQudGVzdChlKSkmJihuKz1lK1wiXFxuXCIsZS50cmltKCkpKTtjb25zdCByPW4udHJpbUVuZCgpO3JldHVyblwiXCI9PXI/bnVsbDpbbixyXX1mdW5jdGlvbiBVZShlKXt0cnl7aWYoZGVjb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoL1teQS1aYS16MC05LzpdL2csXCJcIikubWF0Y2goL15cXHMqKGphdmFzY3JpcHR8dmJzY3JpcHR8ZGF0YSg/ITppbWFnZSkpOi9pKSlyZXR1cm4gbnVsbH1jYXRjaChlKXtyZXR1cm4gbnVsbH1yZXR1cm4gZX1mdW5jdGlvbiBEZShlKXtyZXR1cm4gZS5yZXBsYWNlKGllLFwiJDFcIil9ZnVuY3Rpb24gTmUoZSx0LG4pe2NvbnN0IHI9bi5pbmxpbmV8fCExLGk9bi5zaW1wbGV8fCExO24uaW5saW5lPSEwLG4uc2ltcGxlPSEwO2NvbnN0IGw9ZSh0LG4pO3JldHVybiBuLmlubGluZT1yLG4uc2ltcGxlPWksbH1mdW5jdGlvbiBqZShlLHQsbil7Y29uc3Qgcj1uLmlubGluZXx8ITEsaT1uLnNpbXBsZXx8ITE7bi5pbmxpbmU9ITEsbi5zaW1wbGU9ITA7Y29uc3QgbD1lKHQsbik7cmV0dXJuIG4uaW5saW5lPXIsbi5zaW1wbGU9aSxsfWZ1bmN0aW9uIEhlKGUsdCxuKXtjb25zdCByPW4uaW5saW5lfHwhMTtuLmlubGluZT0hMTtjb25zdCBpPWUodCxuKTtyZXR1cm4gbi5pbmxpbmU9cixpfWNvbnN0IFBlPShlLHQsbik9Pih7Y2hpbGRyZW46TmUodCxlWzFdLG4pfSk7ZnVuY3Rpb24gRmUoKXtyZXR1cm57fX1mdW5jdGlvbiBfZSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIEdlKC4uLmUpe3JldHVybiBlLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKX1mdW5jdGlvbiBXZShlLHQsbil7bGV0IHI9ZTtjb25zdCBpPXQuc3BsaXQoXCIuXCIpO2Zvcig7aS5sZW5ndGgmJihyPXJbaVswXV0sdm9pZCAwIT09cik7KWkuc2hpZnQoKTtyZXR1cm4gcnx8bn1mdW5jdGlvbiBaZShuPVwiXCIsaT17fSl7ZnVuY3Rpb24gZChlLG4sLi4ucil7Y29uc3QgbD1XZShpLm92ZXJyaWRlcyxgJHtlfS5wcm9wc2Ase30pO3JldHVybiBpLmNyZWF0ZUVsZW1lbnQoZnVuY3Rpb24oZSx0KXtjb25zdCBuPVdlKHQsZSk7cmV0dXJuIG4/XCJmdW5jdGlvblwiPT10eXBlb2Ygbnx8XCJvYmplY3RcIj09dHlwZW9mIG4mJlwicmVuZGVyXCJpbiBuP246V2UodCxgJHtlfS5jb21wb25lbnRgLGUpOmV9KGUsaS5vdmVycmlkZXMpLHQoe30sbixsLHtjbGFzc05hbWU6R2UobnVsbD09bj92b2lkIDA6bi5jbGFzc05hbWUsbC5jbGFzc05hbWUpfHx2b2lkIDB9KSwuLi5yKX1mdW5jdGlvbiBXKGUpe2U9ZS5yZXBsYWNlKCQsXCJcIik7bGV0IHQ9ITE7aS5mb3JjZUlubGluZT90PSEwOmkuZm9yY2VCbG9ja3x8KHQ9ITE9PT1fLnRlc3QoZSkpO2NvbnN0IG49bGUoaWUodD9lOmAke2UudHJpbUVuZCgpLnJlcGxhY2UobmUsXCJcIil9XFxuXFxuYCx7aW5saW5lOnR9KSk7Zm9yKDtcInN0cmluZ1wiPT10eXBlb2YgbltuLmxlbmd0aC0xXSYmIW5bbi5sZW5ndGgtMV0udHJpbSgpOyluLnBvcCgpO2lmKG51bGw9PT1pLndyYXBwZXIpcmV0dXJuIG47Y29uc3Qgcj1pLndyYXBwZXJ8fCh0P1wic3BhblwiOlwiZGl2XCIpO2xldCBsO2lmKG4ubGVuZ3RoPjF8fGkuZm9yY2VXcmFwcGVyKWw9bjtlbHNle2lmKDE9PT1uLmxlbmd0aClyZXR1cm4gbD1uWzBdLFwic3RyaW5nXCI9PXR5cGVvZiBsP2QoXCJzcGFuXCIse2tleTpcIm91dGVyXCJ9LGwpOmw7bD1udWxsfXJldHVybiBpLmNyZWF0ZUVsZW1lbnQocix7a2V5Olwib3V0ZXJcIn0sbCl9ZnVuY3Rpb24gWihlLHQpe2NvbnN0IG49dC5tYXRjaChjKTtyZXR1cm4gbj9uLnJlZHVjZShmdW5jdGlvbih0LG4pe2NvbnN0IHI9bi5pbmRleE9mKFwiPVwiKTtpZigtMSE9PXIpe2NvbnN0IGE9ZnVuY3Rpb24oZSl7cmV0dXJuLTEhPT1lLmluZGV4T2YoXCItXCIpJiZudWxsPT09ZS5tYXRjaChCKSYmKGU9ZS5yZXBsYWNlKE4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfSkpLGV9KG4uc2xpY2UoMCxyKSkudHJpbSgpLG89ZnVuY3Rpb24oZSl7Y29uc3QgdD1lWzBdO3JldHVybignXCInPT09dHx8XCInXCI9PT10KSYmZS5sZW5ndGg+PTImJmVbZS5sZW5ndGgtMV09PT10P2Uuc2xpY2UoMSwtMSk6ZX0obi5zbGljZShyKzEpLnRyaW0oKSksYz1sW2FdfHxhO2lmKFwicmVmXCI9PT1jKXJldHVybiB0O2NvbnN0IHM9dFtjXT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm5cInN0eWxlXCI9PT10P24uc3BsaXQoLztcXHM/LykucmVkdWNlKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj10LnNsaWNlKDAsdC5pbmRleE9mKFwiOlwiKSk7cmV0dXJuIGVbbi50cmltKCkucmVwbGFjZSgvKC1bYS16XSkvZyxlPT5lWzFdLnRvVXBwZXJDYXNlKCkpXT10LnNsaWNlKG4ubGVuZ3RoKzEpLnRyaW0oKSxlfSx7fSk6XCJocmVmXCI9PT10fHxcInNyY1wiPT09dD9yKG4sZSx0KToobi5tYXRjaChSKSYmKG49bi5zbGljZSgxLG4ubGVuZ3RoLTEpKSxcInRydWVcIj09PW58fFwiZmFsc2VcIiE9PW4mJm4pfShlLGEsbyxpLnNhbml0aXplcik7XCJzdHJpbmdcIj09dHlwZW9mIHMmJihBLnRlc3Qocyl8fE0udGVzdChzKSkmJih0W2NdPVcocy50cmltKCkpKX1lbHNlXCJzdHlsZVwiIT09biYmKHRbbFtuXXx8bl09ITApO3JldHVybiB0fSx7fSk6bnVsbH1pLm92ZXJyaWRlcz1pLm92ZXJyaWRlc3x8e30saS5zYW5pdGl6ZXI9aS5zYW5pdGl6ZXJ8fFVlLGkuc2x1Z2lmeT1pLnNsdWdpZnl8fHdlLGkubmFtZWRDb2Rlc1RvVW5pY29kZT1pLm5hbWVkQ29kZXNUb1VuaWNvZGU/dCh7fSxhLGkubmFtZWRDb2Rlc1RvVW5pY29kZSk6YSxpLmNyZWF0ZUVsZW1lbnQ9aS5jcmVhdGVFbGVtZW50fHxlLmNyZWF0ZUVsZW1lbnQ7Y29uc3QgcT1bXSxRPXt9LFY9e1tyLmJsb2NrUXVvdGVdOnttYXRjaDpNZShwKSxvcmRlcjoxLHBhcnNlKGUsdCxuKXtjb25zdFsscixpXT1lWzBdLnJlcGxhY2UodSxcIlwiKS5tYXRjaChmKTtyZXR1cm57YWxlcnQ6cixjaGlsZHJlbjp0KGksbil9fSxyZW5kZXIoZSx0LG4pe2NvbnN0IGw9e2tleTpuLmtleX07cmV0dXJuIGUuYWxlcnQmJihsLmNsYXNzTmFtZT1cIm1hcmtkb3duLWFsZXJ0LVwiK2kuc2x1Z2lmeShlLmFsZXJ0LnRvTG93ZXJDYXNlKCksd2UpLGUuY2hpbGRyZW4udW5zaGlmdCh7YXR0cnM6e30sY2hpbGRyZW46W3t0eXBlOnIudGV4dCx0ZXh0OmUuYWxlcnR9XSxub0lubmVyUGFyc2U6ITAsdHlwZTpyLmh0bWxCbG9jayx0YWc6XCJoZWFkZXJcIn0pKSxkKFwiYmxvY2txdW90ZVwiLGwsdChlLmNoaWxkcmVuLG4pKX19LFtyLmJyZWFrTGluZV06e21hdGNoOlJlKGgpLG9yZGVyOjEscGFyc2U6RmUscmVuZGVyOihlLHQsbik9PmQoXCJiclwiLHtrZXk6bi5rZXl9KX0sW3IuYnJlYWtUaGVtYXRpY106e21hdGNoOk1lKG0pLG9yZGVyOjEscGFyc2U6RmUscmVuZGVyOihlLHQsbik9PmQoXCJoclwiLHtrZXk6bi5rZXl9KX0sW3IuY29kZUJsb2NrXTp7bWF0Y2g6TWUoeSksb3JkZXI6MCxwYXJzZTplPT4oe2xhbmc6dm9pZCAwLHRleHQ6ZVswXS5yZXBsYWNlKC9eIHs0fS9nbSxcIlwiKS5yZXBsYWNlKC9cXG4rJC8sXCJcIil9KSxyZW5kZXI6KGUsbixyKT0+ZChcInByZVwiLHtrZXk6ci5rZXl9LGQoXCJjb2RlXCIsdCh7fSxlLmF0dHJzLHtjbGFzc05hbWU6ZS5sYW5nP2BsYW5nLSR7ZS5sYW5nfWA6XCJcIn0pLGUudGV4dCkpfSxbci5jb2RlRmVuY2VkXTp7bWF0Y2g6TWUoZyksb3JkZXI6MCxwYXJzZTplPT4oe2F0dHJzOlooXCJjb2RlXCIsZVszXXx8XCJcIiksbGFuZzplWzJdfHx2b2lkIDAsdGV4dDplWzRdLHR5cGU6ci5jb2RlQmxvY2t9KX0sW3IuY29kZUlubGluZV06e21hdGNoOkJlKGspLG9yZGVyOjMscGFyc2U6ZT0+KHt0ZXh0OmVbMl19KSxyZW5kZXI6KGUsdCxuKT0+ZChcImNvZGVcIix7a2V5Om4ua2V5fSxlLnRleHQpfSxbci5mb290bm90ZV06e21hdGNoOk1lKHYpLG9yZGVyOjAscGFyc2U6ZT0+KHEucHVzaCh7Zm9vdG5vdGU6ZVsyXSxpZGVudGlmaWVyOmVbMV19KSx7fSkscmVuZGVyOl9lfSxbci5mb290bm90ZVJlZmVyZW5jZV06e21hdGNoOk9lKFMpLG9yZGVyOjEscGFyc2U6ZT0+KHt0YXJnZXQ6YCMke2kuc2x1Z2lmeShlWzFdLHdlKX1gLHRleHQ6ZVsxXX0pLHJlbmRlcjooZSx0LG4pPT5kKFwiYVwiLHtrZXk6bi5rZXksaHJlZjppLnNhbml0aXplcihlLnRhcmdldCxcImFcIixcImhyZWZcIil9LGQoXCJzdXBcIix7a2V5Om4ua2V5fSxlLnRleHQpKX0sW3IuZ2ZtVGFza106e21hdGNoOk9lKEUpLG9yZGVyOjEscGFyc2U6ZT0+KHtjb21wbGV0ZWQ6XCJ4XCI9PT1lWzFdLnRvTG93ZXJDYXNlKCl9KSxyZW5kZXI6KGUsdCxuKT0+ZChcImlucHV0XCIse2NoZWNrZWQ6ZS5jb21wbGV0ZWQsa2V5Om4ua2V5LHJlYWRPbmx5OiEwLHR5cGU6XCJjaGVja2JveFwifSl9LFtyLmhlYWRpbmddOnttYXRjaDpNZShpLmVuZm9yY2VBdHhIZWFkaW5ncz96OncpLG9yZGVyOjEscGFyc2U6KGUsdCxuKT0+KHtjaGlsZHJlbjpOZSh0LGVbMl0sbiksaWQ6aS5zbHVnaWZ5KGVbMl0sd2UpLGxldmVsOmVbMV0ubGVuZ3RofSkscmVuZGVyOihlLHQsbik9PmQoYGgke2UubGV2ZWx9YCx7aWQ6ZS5pZCxrZXk6bi5rZXl9LHQoZS5jaGlsZHJlbixuKSl9LFtyLmhlYWRpbmdTZXRleHRdOnttYXRjaDpNZShMKSxvcmRlcjowLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46TmUodCxlWzFdLG4pLGxldmVsOlwiPVwiPT09ZVsyXT8xOjIsdHlwZTpyLmhlYWRpbmd9KX0sW3IuaHRtbEJsb2NrXTp7bWF0Y2g6UmUoQSksb3JkZXI6MSxwYXJzZShlLHQsbil7Y29uc3RbLHJdPWVbM10ubWF0Y2gocmUpLGk9bmV3IFJlZ0V4cChgXiR7cn1gLFwiZ21cIiksbD1lWzNdLnJlcGxhY2UoaSxcIlwiKSxhPShjPWwsRWUuc29tZShlPT5lLnRlc3QoYykpP0hlOk5lKTt2YXIgYztjb25zdCBzPWVbMV0udG9Mb3dlckNhc2UoKSxkPS0xIT09by5pbmRleE9mKHMpLHA9KGQ/czplWzFdKS50cmltKCksdT17YXR0cnM6WihwLGVbMl0pLG5vSW5uZXJQYXJzZTpkLHRhZzpwfTtyZXR1cm4gbi5pbkFuY2hvcj1uLmluQW5jaG9yfHxcImFcIj09PXMsZD91LnRleHQ9ZVszXTp1LmNoaWxkcmVuPWEodCxsLG4pLG4uaW5BbmNob3I9ITEsdX0scmVuZGVyOihlLG4scik9PmQoZS50YWcsdCh7a2V5OnIua2V5fSxlLmF0dHJzKSxlLnRleHR8fChlLmNoaWxkcmVuP24oZS5jaGlsZHJlbixyKTpcIlwiKSl9LFtyLmh0bWxTZWxmQ2xvc2luZ106e21hdGNoOlJlKE0pLG9yZGVyOjEscGFyc2UoZSl7Y29uc3QgdD1lWzFdLnRyaW0oKTtyZXR1cm57YXR0cnM6Wih0LGVbMl18fFwiXCIpLHRhZzp0fX0scmVuZGVyOihlLG4scik9PmQoZS50YWcsdCh7fSxlLmF0dHJzLHtrZXk6ci5rZXl9KSl9LFtyLmh0bWxDb21tZW50XTp7bWF0Y2g6UmUoTyksb3JkZXI6MSxwYXJzZTooKT0+KHt9KSxyZW5kZXI6X2V9LFtyLmltYWdlXTp7bWF0Y2g6QmUoQ2UpLG9yZGVyOjEscGFyc2U6ZT0+KHthbHQ6ZVsxXSx0YXJnZXQ6RGUoZVsyXSksdGl0bGU6ZVszXX0pLHJlbmRlcjooZSx0LG4pPT5kKFwiaW1nXCIse2tleTpuLmtleSxhbHQ6ZS5hbHR8fHZvaWQgMCx0aXRsZTplLnRpdGxlfHx2b2lkIDAsc3JjOmkuc2FuaXRpemVyKGUudGFyZ2V0LFwiaW1nXCIsXCJzcmNcIil9KX0sW3IubGlua106e21hdGNoOk9lKFNlKSxvcmRlcjozLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46amUodCxlWzFdLG4pLHRhcmdldDpEZShlWzJdKSx0aXRsZTplWzNdfSkscmVuZGVyOihlLHQsbik9PmQoXCJhXCIse2tleTpuLmtleSxocmVmOmkuc2FuaXRpemVyKGUudGFyZ2V0LFwiYVwiLFwiaHJlZlwiKSx0aXRsZTplLnRpdGxlfSx0KGUuY2hpbGRyZW4sbikpfSxbci5saW5rQW5nbGVCcmFjZVN0eWxlRGV0ZWN0b3JdOnttYXRjaDpPZShEKSxvcmRlcjowLHBhcnNlOmU9Pih7Y2hpbGRyZW46W3t0ZXh0OmVbMV0sdHlwZTpyLnRleHR9XSx0YXJnZXQ6ZVsxXSx0eXBlOnIubGlua30pfSxbci5saW5rQmFyZVVybERldGVjdG9yXTp7bWF0Y2g6KGUsdCk9PnQuaW5BbmNob3J8fGkuZGlzYWJsZUF1dG9MaW5rP251bGw6T2UoSSkoZSx0KSxvcmRlcjowLHBhcnNlOmU9Pih7Y2hpbGRyZW46W3t0ZXh0OmVbMV0sdHlwZTpyLnRleHR9XSx0YXJnZXQ6ZVsxXSx0aXRsZTp2b2lkIDAsdHlwZTpyLmxpbmt9KX0sW3IubGlua01haWx0b0RldGVjdG9yXTp7bWF0Y2g6T2UoVSksb3JkZXI6MCxwYXJzZShlKXtsZXQgdD1lWzFdLG49ZVsxXTtyZXR1cm4gcy50ZXN0KG4pfHwobj1cIm1haWx0bzpcIituKSx7Y2hpbGRyZW46W3t0ZXh0OnQucmVwbGFjZShcIm1haWx0bzpcIixcIlwiKSx0eXBlOnIudGV4dH1dLHRhcmdldDpuLHR5cGU6ci5saW5rfX19LFtyLm9yZGVyZWRMaXN0XTp2ZShkLDEpLFtyLnVub3JkZXJlZExpc3RdOnZlKGQsMiksW3IubmV3bGluZUNvYWxlc2Nlcl06e21hdGNoOk1lKHgpLG9yZGVyOjMscGFyc2U6RmUscmVuZGVyOigpPT5cIlxcblwifSxbci5wYXJhZ3JhcGhdOnttYXRjaDpJZSxvcmRlcjozLHBhcnNlOlBlLHJlbmRlcjooZSx0LG4pPT5kKFwicFwiLHtrZXk6bi5rZXl9LHQoZS5jaGlsZHJlbixuKSl9LFtyLnJlZl06e21hdGNoOk9lKEgpLG9yZGVyOjAscGFyc2U6ZT0+KFFbZVsxXV09e3RhcmdldDplWzJdLHRpdGxlOmVbNF19LHt9KSxyZW5kZXI6X2V9LFtyLnJlZkltYWdlXTp7bWF0Y2g6QmUoUCksb3JkZXI6MCxwYXJzZTplPT4oe2FsdDplWzFdfHx2b2lkIDAscmVmOmVbMl19KSxyZW5kZXI6KGUsdCxuKT0+UVtlLnJlZl0/ZChcImltZ1wiLHtrZXk6bi5rZXksYWx0OmUuYWx0LHNyYzppLnNhbml0aXplcihRW2UucmVmXS50YXJnZXQsXCJpbWdcIixcInNyY1wiKSx0aXRsZTpRW2UucmVmXS50aXRsZX0pOm51bGx9LFtyLnJlZkxpbmtdOnttYXRjaDpPZShGKSxvcmRlcjowLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46dChlWzFdLG4pLGZhbGxiYWNrQ2hpbGRyZW46ZVswXSxyZWY6ZVsyXX0pLHJlbmRlcjooZSx0LG4pPT5RW2UucmVmXT9kKFwiYVwiLHtrZXk6bi5rZXksaHJlZjppLnNhbml0aXplcihRW2UucmVmXS50YXJnZXQsXCJhXCIsXCJocmVmXCIpLHRpdGxlOlFbZS5yZWZdLnRpdGxlfSx0KGUuY2hpbGRyZW4sbikpOmQoXCJzcGFuXCIse2tleTpuLmtleX0sZS5mYWxsYmFja0NoaWxkcmVuKX0sW3IudGFibGVdOnttYXRjaDpNZShqKSxvcmRlcjoxLHBhcnNlOkFlLHJlbmRlcihlLHQsbil7Y29uc3Qgcj1lO3JldHVybiBkKFwidGFibGVcIix7a2V5Om4ua2V5fSxkKFwidGhlYWRcIixudWxsLGQoXCJ0clwiLG51bGwsci5oZWFkZXIubWFwKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIGQoXCJ0aFwiLHtrZXk6aSxzdHlsZTpUZShyLGkpfSx0KGUsbikpfSkpKSxkKFwidGJvZHlcIixudWxsLHIuY2VsbHMubWFwKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIGQoXCJ0clwiLHtrZXk6aX0sZS5tYXAoZnVuY3Rpb24oZSxpKXtyZXR1cm4gZChcInRkXCIse2tleTppLHN0eWxlOlRlKHIsaSl9LHQoZSxuKSl9KSl9KSkpfX0sW3IudGV4dF06e21hdGNoOlJlKHRlKSxvcmRlcjo0LHBhcnNlOmU9Pih7dGV4dDplWzBdLnJlcGxhY2UoVCwoZSx0KT0+aS5uYW1lZENvZGVzVG9Vbmljb2RlW3RdP2kubmFtZWRDb2Rlc1RvVW5pY29kZVt0XTplKX0pLHJlbmRlcjplPT5lLnRleHR9LFtyLnRleHRCb2xkZWRdOnttYXRjaDpCZShYKSxvcmRlcjoyLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46dChlWzJdLG4pfSkscmVuZGVyOihlLHQsbik9PmQoXCJzdHJvbmdcIix7a2V5Om4ua2V5fSx0KGUuY2hpbGRyZW4sbikpfSxbci50ZXh0RW1waGFzaXplZF06e21hdGNoOkJlKEopLG9yZGVyOjMscGFyc2U6KGUsdCxuKT0+KHtjaGlsZHJlbjp0KGVbMl0sbil9KSxyZW5kZXI6KGUsdCxuKT0+ZChcImVtXCIse2tleTpuLmtleX0sdChlLmNoaWxkcmVuLG4pKX0sW3IudGV4dEVzY2FwZWRdOnttYXRjaDpCZShlZSksb3JkZXI6MSxwYXJzZTplPT4oe3RleHQ6ZVsxXSx0eXBlOnIudGV4dH0pfSxbci50ZXh0TWFya2VkXTp7bWF0Y2g6QmUoSyksb3JkZXI6MyxwYXJzZTpQZSxyZW5kZXI6KGUsdCxuKT0+ZChcIm1hcmtcIix7a2V5Om4ua2V5fSx0KGUuY2hpbGRyZW4sbikpfSxbci50ZXh0U3RyaWtldGhyb3VnaGVkXTp7bWF0Y2g6QmUoWSksb3JkZXI6MyxwYXJzZTpQZSxyZW5kZXI6KGUsdCxuKT0+ZChcImRlbFwiLHtrZXk6bi5rZXl9LHQoZS5jaGlsZHJlbixuKSl9fTshMD09PWkuZGlzYWJsZVBhcnNpbmdSYXdIVE1MJiYoZGVsZXRlIFZbci5odG1sQmxvY2tdLGRlbGV0ZSBWW3IuaHRtbFNlbGZDbG9zaW5nXSk7Y29uc3QgaWU9ZnVuY3Rpb24oZSl7bGV0IHQ9T2JqZWN0LmtleXMoZSk7ZnVuY3Rpb24gbihyLGkpe2xldCBsPVtdO2ZvcihpLnByZXZDYXB0dXJlPWkucHJldkNhcHR1cmV8fFwiXCI7cjspe2xldCBhPTA7Zm9yKDthPHQubGVuZ3RoOyl7Y29uc3Qgbz10W2FdLGM9ZVtvXSxzPWMubWF0Y2gocixpKTtpZihzKXtjb25zdCBlPXNbMF07aS5wcmV2Q2FwdHVyZSs9ZSxyPXIuc3Vic3RyaW5nKGUubGVuZ3RoKTtjb25zdCB0PWMucGFyc2UocyxuLGkpO251bGw9PXQudHlwZSYmKHQudHlwZT1vKSxsLnB1c2godCk7YnJlYWt9YSsrfX1yZXR1cm4gaS5wcmV2Q2FwdHVyZT1cIlwiLGx9cmV0dXJuIHQuc29ydChmdW5jdGlvbih0LG4pe2xldCByPWVbdF0ub3JkZXIsaT1lW25dLm9yZGVyO3JldHVybiByIT09aT9yLWk6dDxuPy0xOjF9KSxmdW5jdGlvbihlLHQpe3JldHVybiBuKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoYixcIlxcblwiKS5yZXBsYWNlKEMsXCJcIikucmVwbGFjZShHLFwiICAgIFwiKX0oZSksdCl9fShWKSxsZT0oYWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyLGkpe2NvbnN0IGw9ZVtuLnR5cGVdLnJlbmRlcjtyZXR1cm4gdD90KCgpPT5sKG4scixpKSxuLHIsaSk6bChuLHIsaSl9fShWLGkucmVuZGVyUnVsZSksZnVuY3Rpb24gZSh0LG49e30pe2lmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IHI9bi5rZXksaT1bXTtsZXQgbD0hMTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7bi5rZXk9cjtjb25zdCBhPWUodFtyXSxuKSxvPVwic3RyaW5nXCI9PXR5cGVvZiBhO28mJmw/aVtpLmxlbmd0aC0xXSs9YTpudWxsIT09YSYmaS5wdXNoKGEpLGw9b31yZXR1cm4gbi5rZXk9cixpfXJldHVybiBhZSh0LGUsbil9KTt2YXIgYWU7Y29uc3Qgb2U9VyhuKTtyZXR1cm4gcS5sZW5ndGg/ZChcImRpdlwiLG51bGwsb2UsZChcImZvb3RlclwiLHtrZXk6XCJmb290ZXJcIn0scS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGQoXCJkaXZcIix7aWQ6aS5zbHVnaWZ5KGUuaWRlbnRpZmllcix3ZSksa2V5OmUuaWRlbnRpZmllcn0sZS5pZGVudGlmaWVyLGxlKGllKGUuZm9vdG5vdGUse2lubGluZTohMH0pKSl9KSkpOm9lfWV4cG9ydCBkZWZhdWx0IHQ9PntsZXR7Y2hpbGRyZW46cj1cIlwiLG9wdGlvbnM6aX09dCxsPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLGk9e30sbD1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8bC5sZW5ndGg7cisrKXQuaW5kZXhPZihuPWxbcl0pPj0wfHwoaVtuXT1lW25dKTtyZXR1cm4gaX0odCxuKTtyZXR1cm4gZS5jbG9uZUVsZW1lbnQoWmUocixpKSxsKX07ZXhwb3J0e3IgYXMgUnVsZVR5cGUsWmUgYXMgY29tcGlsZXIsVWUgYXMgc2FuaXRpemVyLHdlIGFzIHNsdWdpZnl9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubW9kZXJuLmpzLm1hcFxuIiwidmFyIGJhc2VVbnNldCA9IHJlcXVpcmUoJy4vX2Jhc2VVbnNldCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgdGhlIHByb3BlcnR5IGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVuc2V0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogNyB9IH1dIH07XG4gKiBfLnVuc2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gKlxuICogXy51bnNldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3QpO1xuICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAqL1xuZnVuY3Rpb24gdW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHRydWUgOiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bnNldDtcbiIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCBvcmRlclByb3BlcnRpZXMsIFRyYW5zbGF0YWJsZVN0cmluZywgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHLCBQUk9QRVJUSUVTX0tFWSwgUkVGX0tFWSwgQU5ZX09GX0tFWSwgT05FX09GX0tFWSwgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgTWFya2Rvd24gZnJvbSAnbWFya2Rvd24tdG8tanN4JztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaGFzIGZyb20gJ2xvZGFzaC9oYXMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC9zZXQnO1xuaW1wb3J0IHVuc2V0IGZyb20gJ2xvZGFzaC91bnNldCc7XG4vKiogVGhlIGBPYmplY3RGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSB0aGF0IGlzIG9mIHR5cGUgYG9iamVjdGAuIEl0IHRyYWNrcyB3aGV0aGVyIGFuXG4gKiBhZGRpdGlvbmFsIHByb3BlcnR5IGtleSB3YXMgbW9kaWZpZWQgYW5kIHdoYXQgaXQgd2FzIG1vZGlmaWVkIHRvXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICovXG5jbGFzcyBPYmplY3RGaWVsZCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIC8qKiBTZXQgdXAgdGhlIGluaXRpYWwgc3RhdGUgKi9cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHdhc1Byb3BlcnR5S2V5TW9kaWZpZWQ6IGZhbHNlLFxuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHt9LFxuICAgICAgICB9O1xuICAgICAgICAvKiogUmV0dXJucyB0aGUgYG9uUHJvcGVydHlDaGFuZ2VgIGhhbmRsZXIgZm9yIHRoZSBgbmFtZWAgZmllbGQuIEhhbmRsZXMgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSBhIHVzZXIgaXMgYXR0ZW1wdGluZ1xuICAgICAgICAgKiB0byBjbGVhciB0aGUgZGF0YSBmb3IgYSBmaWVsZCBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIHByb3BlcnR5LiBDYWxscyB0aGUgYG9uQ2hhbmdlKClgIGhhbmRsZXIgd2l0aCB0aGUgdXBkYXRlZFxuICAgICAgICAgKiBmb3JtRGF0YS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHlcbiAgICAgICAgICogQHBhcmFtIGFkZGVkQnlBZGRpdGlvbmFsUHJvcGVydGllcyAtIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgYW4gYWRkaXRpb25hbCBwcm9wZXJ0eVxuICAgICAgICAgKiBAcmV0dXJucyAtIFRoZSBvblByb3BlcnR5Q2hhbmdlIGNhbGxiYWNrIGZvciB0aGUgYG5hbWVgIHByb3BlcnR5XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uUHJvcGVydHlDaGFuZ2UgPSAobmFtZSwgYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gZmFsc2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUsIG5ld0Vycm9yU2NoZW1hLCBpZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZm9ybURhdGEsIG9uQ2hhbmdlLCBlcnJvclNjaGVtYSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3Qgc2V0IHZhbHVlID0gdW5kZWZpbmVkIGZvciBmaWVsZHMgYWRkZWQgYnlcbiAgICAgICAgICAgICAgICAgICAgLy8gYWRkaXRpb25hbFByb3BlcnRpZXMuIERvaW5nIHNvIHJlbW92ZXMgdGhlbSBmcm9tIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBmb3JtRGF0YSwgd2hpY2ggY2F1c2VzIHRoZW0gdG8gY29tcGxldGVseSBkaXNhcHBlYXJcbiAgICAgICAgICAgICAgICAgICAgLy8gKGluY2x1ZGluZyB0aGUgaW5wdXQgZmllbGQgZm9yIHRoZSBwcm9wZXJ0eSBuYW1lKS4gVW5saWtlXG4gICAgICAgICAgICAgICAgICAgIC8vIGZpZWxkcyB3aGljaCBhcmUgXCJtYW5kYXRlZFwiIGJ5IHRoZSBzY2hlbWEsIHRoZXNlIGZpZWxkcyBjYW5cbiAgICAgICAgICAgICAgICAgICAgLy8gYmUgc2V0IHRvIHVuZGVmaW5lZCBieSBjbGlja2luZyBhIFwiZGVsZXRlIGZpZWxkXCIgYnV0dG9uLCBzb1xuICAgICAgICAgICAgICAgICAgICAvLyBzZXQgZW1wdHkgdmFsdWVzIHRvIHRoZSBlbXB0eSBzdHJpbmcuXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Zvcm1EYXRhID0geyAuLi5mb3JtRGF0YSwgW25hbWVdOiB2YWx1ZSB9O1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKG5ld0Zvcm1EYXRhLCBlcnJvclNjaGVtYSAmJlxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSAmJiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBbbmFtZV06IG5ld0Vycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgIH0sIGlkKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBSZXR1cm5zIGEgY2FsbGJhY2sgdG8gaGFuZGxlIHRoZSBvbkRyb3BQcm9wZXJ0eUNsaWNrIGV2ZW50IGZvciB0aGUgZ2l2ZW4gYGtleWAgd2hpY2ggcmVtb3ZlcyB0aGUgb2xkIGBrZXlgIGRhdGFcbiAgICAgICAgICogYW5kIGNhbGxzIHRoZSBgb25DaGFuZ2VgIGNhbGxiYWNrIHdpdGggaXRcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgZm9yIHdoaWNoIHRoZSBkcm9wIGNhbGxiYWNrIGlzIGRlc2lyZWRcbiAgICAgICAgICogQHJldHVybnMgLSBUaGUgZHJvcCBwcm9wZXJ0eSBjbGljayBjYWxsYmFja1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkRyb3BQcm9wZXJ0eUNsaWNrID0gKGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSwgZm9ybURhdGEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgY29uc3QgY29waWVkRm9ybURhdGEgPSB7IC4uLmZvcm1EYXRhIH07XG4gICAgICAgICAgICAgICAgdW5zZXQoY29waWVkRm9ybURhdGEsIGtleSk7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UoY29waWVkRm9ybURhdGEpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENvbXB1dGVzIHRoZSBuZXh0IGF2YWlsYWJsZSBrZXkgbmFtZSBmcm9tIHRoZSBgcHJlZmVycmVkS2V5YCwgaW5kZXhpbmcgdGhyb3VnaCB0aGUgYWxyZWFkeSBleGlzdGluZyBrZXlzIHVudGlsIG9uZVxuICAgICAgICAgKiB0aGF0IGlzIGFscmVhZHkgbm90IGFzc2lnbmVkIGlzIGZvdW5kLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcHJlZmVycmVkS2V5IC0gVGhlIHByZWZlcnJlZCBuYW1lIG9mIGEgbmV3IGtleVxuICAgICAgICAgKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBmb3JtIGRhdGEgaW4gd2hpY2ggdG8gY2hlY2sgaWYgdGhlIGRlc2lyZWQga2V5IGFscmVhZHkgZXhpc3RzXG4gICAgICAgICAqIEByZXR1cm5zIC0gVGhlIG5hbWUgb2YgdGhlIG5leHQgYXZhaWxhYmxlIGtleSBmcm9tIGBwcmVmZXJyZWRLZXlgXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmdldEF2YWlsYWJsZUtleSA9IChwcmVmZXJyZWRLZXksIGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHVpU2NoZW1hLCByZWdpc3RyeSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IHsgZHVwbGljYXRlS2V5U3VmZml4U2VwYXJhdG9yID0gJy0nIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIHJlZ2lzdHJ5Lmdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICAgICAgbGV0IG5ld0tleSA9IHByZWZlcnJlZEtleTtcbiAgICAgICAgICAgIHdoaWxlIChoYXMoZm9ybURhdGEsIG5ld0tleSkpIHtcbiAgICAgICAgICAgICAgICBuZXdLZXkgPSBgJHtwcmVmZXJyZWRLZXl9JHtkdXBsaWNhdGVLZXlTdWZmaXhTZXBhcmF0b3J9JHsrK2luZGV4fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3S2V5O1xuICAgICAgICB9O1xuICAgICAgICAvKiogUmV0dXJucyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgZGVhbHMgd2l0aCB0aGUgcmVuYW1lIG9mIGEga2V5IGZvciBhbiBhZGRpdGlvbmFsIHByb3BlcnR5IGZvciBhIHNjaGVtYS4gVGhhdFxuICAgICAgICAgKiBjYWxsYmFjayB3aWxsIGF0dGVtcHQgdG8gcmVuYW1lIHRoZSBrZXkgYW5kIG1vdmUgdGhlIGV4aXN0aW5nIGRhdGEgdG8gdGhhdCBrZXksIGNhbGxpbmcgYG9uQ2hhbmdlYCB3aGVuIGl0IGRvZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBvbGRWYWx1ZSAtIFRoZSBvbGQgdmFsdWUgb2YgYSBmaWVsZFxuICAgICAgICAgKiBAcmV0dXJucyAtIFRoZSBrZXkgY2hhbmdlIGNhbGxiYWNrIGZ1bmN0aW9uXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uS2V5Q2hhbmdlID0gKG9sZFZhbHVlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlLCBuZXdFcnJvclNjaGVtYSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvbGRWYWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IGZvcm1EYXRhLCBvbkNoYW5nZSwgZXJyb3JTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldEF2YWlsYWJsZUtleSh2YWx1ZSwgZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Zvcm1EYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtRGF0YSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0tleXMgPSB7IFtvbGRWYWx1ZV06IHZhbHVlIH07XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5VmFsdWVzID0gT2JqZWN0LmtleXMobmV3Rm9ybURhdGEpLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0tleSA9IG5ld0tleXNba2V5XSB8fCBrZXk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IFtuZXdLZXldOiBuZXdGb3JtRGF0YVtrZXldIH07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVuYW1lZE9iaiA9IE9iamVjdC5hc3NpZ24oe30sIC4uLmtleVZhbHVlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHdhc1Byb3BlcnR5S2V5TW9kaWZpZWQ6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UocmVuYW1lZE9iaiwgZXJyb3JTY2hlbWEgJiZcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgJiYge1xuICAgICAgICAgICAgICAgICAgICAuLi5lcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXTogbmV3RXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogSGFuZGxlcyB0aGUgYWRkaW5nIG9mIGEgbmV3IGFkZGl0aW9uYWwgcHJvcGVydHkgb24gdGhlIGdpdmVuIGBzY2hlbWFgLiBDYWxscyB0aGUgYG9uQ2hhbmdlYCBjYWxsYmFjayBvbmNlIHRoZSBuZXdcbiAgICAgICAgICogZGVmYXVsdCBkYXRhIGZvciB0aGF0IGZpZWxkIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBmb3JtRGF0YS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZWxlbWVudCB0byB3aGljaCB0aGUgbmV3IHByb3BlcnR5IGlzIGJlaW5nIGFkZGVkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmhhbmRsZUFkZENsaWNrID0gKHNjaGVtYSkgPT4gKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IGZvcm1EYXRhLCBvbkNoYW5nZSwgcmVnaXN0cnkgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IHsgLi4uZm9ybURhdGEgfTtcbiAgICAgICAgICAgIGxldCB0eXBlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IGNvbnN0VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykpIHtcbiAgICAgICAgICAgICAgICB0eXBlID0gc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnR5cGU7XG4gICAgICAgICAgICAgICAgY29uc3RWYWx1ZSA9IHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcy5jb25zdDtcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMuZGVmYXVsdDtcbiAgICAgICAgICAgICAgICBsZXQgYXBTY2hlbWEgPSBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgaWYgKFJFRl9LRVkgaW4gYXBTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBzY2hlbWFVdGlscyB9ID0gcmVnaXN0cnk7XG4gICAgICAgICAgICAgICAgICAgIGFwU2NoZW1hID0gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoeyAkcmVmOiBhcFNjaGVtYVtSRUZfS0VZXSB9LCBmb3JtRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBhcFNjaGVtYS50eXBlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdFZhbHVlID0gYXBTY2hlbWEuY29uc3Q7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGFwU2NoZW1hLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdHlwZSAmJiAoQU5ZX09GX0tFWSBpbiBhcFNjaGVtYSB8fCBPTkVfT0ZfS0VZIGluIGFwU2NoZW1hKSkge1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gJ29iamVjdCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmV3S2V5ID0gdGhpcy5nZXRBdmFpbGFibGVLZXkoJ25ld0tleScsIG5ld0Zvcm1EYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKF9hID0gY29uc3RWYWx1ZSAhPT0gbnVsbCAmJiBjb25zdFZhbHVlICE9PSB2b2lkIDAgPyBjb25zdFZhbHVlIDogZGVmYXVsdFZhbHVlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmdldERlZmF1bHRWYWx1ZSh0eXBlKTtcbiAgICAgICAgICAgIC8vIENhc3QgdGhpcyB0byBtYWtlIHRoZSBgc2V0YCB3b3JrIHByb3Blcmx5XG4gICAgICAgICAgICBzZXQobmV3Rm9ybURhdGEsIG5ld0tleSwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgb25DaGFuZ2UobmV3Rm9ybURhdGEpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBgbmFtZWAgZmllbGQgaXMgcmVxdWlyZWQgaW4gdGhlIG9iamVjdCBzY2hlbWFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZpZWxkIHRvIGNoZWNrIGZvciByZXF1aXJlZC1uZXNzXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBmaWVsZCBgbmFtZWAgaXMgcmVxdWlyZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqL1xuICAgIGlzUmVxdWlyZWQobmFtZSkge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSAmJiBzY2hlbWEucmVxdWlyZWQuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIGEgZGVmYXVsdCB2YWx1ZSB0byBiZSB1c2VkIGZvciBhIG5ldyBhZGRpdGlvbmFsIHNjaGVtYSBwcm9wZXJ0eSBvZiB0aGUgZ2l2ZW4gYHR5cGVgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBuZXcgYWRkaXRpb25hbCBzY2hlbWEgcHJvcGVydHlcbiAgICAgKi9cbiAgICBnZXREZWZhdWx0VmFsdWUodHlwZSkge1xuICAgICAgICBjb25zdCB7IHJlZ2lzdHJ5OiB7IHRyYW5zbGF0ZVN0cmluZyB9LCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGEgZGF0YXR5cGUgZm9yIHNvbWUgcmVhc29uIChwZXJoYXBzIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIHdhcyB0cnVlKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLk5ld1N0cmluZ0RlZmF1bHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIHRoZSBgT2JqZWN0RmllbGRgIGZyb20gdGhlIGdpdmVuIHByb3BzXG4gICAgICovXG4gICAgcmVuZGVyKCkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hOiByYXdTY2hlbWEsIHVpU2NoZW1hID0ge30sIGZvcm1EYXRhLCBlcnJvclNjaGVtYSwgaWRTY2hlbWEsIG5hbWUsIHJlcXVpcmVkID0gZmFsc2UsIGRpc2FibGVkLCByZWFkb25seSwgaGlkZUVycm9yLCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIG9uQmx1ciwgb25Gb2N1cywgcmVnaXN0cnksIHRpdGxlLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBmaWVsZHMsIGZvcm1Db250ZXh0LCBzY2hlbWFVdGlscywgdHJhbnNsYXRlU3RyaW5nLCBnbG9iYWxVaU9wdGlvbnMgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICBjb25zdCB7IFNjaGVtYUZpZWxkIH0gPSBmaWVsZHM7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHJhd1NjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICBjb25zdCB1aU9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHsgcHJvcGVydGllczogc2NoZW1hUHJvcGVydGllcyA9IHt9IH0gPSBzY2hlbWE7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlVGl0bGUgPSAoX2MgPSAoX2IgPSAoX2EgPSB1aU9wdGlvbnMudGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHNjaGVtYS50aXRsZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGl0bGUpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IG5hbWU7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gKF9kID0gdWlPcHRpb25zLmRlc2NyaXB0aW9uKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiBzY2hlbWEuZGVzY3JpcHRpb247XG4gICAgICAgIGxldCBvcmRlcmVkUHJvcGVydGllcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzY2hlbWFQcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIG9yZGVyZWRQcm9wZXJ0aWVzID0gb3JkZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIHVpT3B0aW9ucy5vcmRlcik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNoaWxkcmVuOiBbX2pzeChcInBcIiwgeyBjbGFzc05hbWU6ICdjb25maWctZXJyb3InLCBzdHlsZTogeyBjb2xvcjogJ3JlZCcgfSwgY2hpbGRyZW46IF9qc3goTWFya2Rvd24sIHsgb3B0aW9uczogeyBkaXNhYmxlUGFyc2luZ1Jhd0hUTUw6IHRydWUgfSwgY2hpbGRyZW46IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuSW52YWxpZE9iamVjdEZpZWxkLCBbbmFtZSB8fCAncm9vdCcsIGVyci5tZXNzYWdlXSkgfSkgfSksIF9qc3goXCJwcmVcIiwgeyBjaGlsZHJlbjogSlNPTi5zdHJpbmdpZnkoc2NoZW1hKSB9KV0gfSkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ09iamVjdEZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVQcm9wcyA9IHtcbiAgICAgICAgICAgIC8vIGdldERpc3BsYXlMYWJlbCgpIGFsd2F5cyByZXR1cm5zIGZhbHNlIGZvciBvYmplY3QgdHlwZXMsIHNvIGp1c3QgY2hlY2sgdGhlIGB1aU9wdGlvbnMubGFiZWxgXG4gICAgICAgICAgICB0aXRsZTogdWlPcHRpb25zLmxhYmVsID09PSBmYWxzZSA/ICcnIDogdGVtcGxhdGVUaXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB1aU9wdGlvbnMubGFiZWwgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBvcmRlcmVkUHJvcGVydGllcy5tYXAoKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMgPSBoYXMoc2NoZW1hLCBbUFJPUEVSVElFU19LRVksIG5hbWUsIEFERElUSU9OQUxfUFJPUEVSVFlfRkxBR10pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkVWlTY2hlbWEgPSBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMgPyB1aVNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyA6IHVpU2NoZW1hW25hbWVdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhpZGRlbiA9IGdldFVpT3B0aW9ucyhmaWVsZFVpU2NoZW1hKS53aWRnZXQgPT09ICdoaWRkZW4nO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkSWRTY2hlbWEgPSBnZXQoaWRTY2hlbWEsIFtuYW1lXSwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IChfanN4KFNjaGVtYUZpZWxkLCB7IG5hbWU6IG5hbWUsIHJlcXVpcmVkOiB0aGlzLmlzUmVxdWlyZWQobmFtZSksIHNjaGVtYTogZ2V0KHNjaGVtYSwgW1BST1BFUlRJRVNfS0VZLCBuYW1lXSwge30pLCB1aVNjaGVtYTogZmllbGRVaVNjaGVtYSwgZXJyb3JTY2hlbWE6IGdldChlcnJvclNjaGVtYSwgbmFtZSksIGlkU2NoZW1hOiBmaWVsZElkU2NoZW1hLCBpZFByZWZpeDogaWRQcmVmaXgsIGlkU2VwYXJhdG9yOiBpZFNlcGFyYXRvciwgZm9ybURhdGE6IGdldChmb3JtRGF0YSwgbmFtZSksIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgd2FzUHJvcGVydHlLZXlNb2RpZmllZDogdGhpcy5zdGF0ZS53YXNQcm9wZXJ0eUtleU1vZGlmaWVkLCBvbktleUNoYW5nZTogdGhpcy5vbktleUNoYW5nZShuYW1lKSwgb25DaGFuZ2U6IHRoaXMub25Qcm9wZXJ0eUNoYW5nZShuYW1lLCBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMpLCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgaGlkZUVycm9yOiBoaWRlRXJyb3IsIG9uRHJvcFByb3BlcnR5Q2xpY2s6IHRoaXMub25Ecm9wUHJvcGVydHlDbGljayB9LCBuYW1lKSksXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICBpZFNjaGVtYSxcbiAgICAgICAgICAgIHVpU2NoZW1hLFxuICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICAgIGZvcm1Db250ZXh0LFxuICAgICAgICAgICAgcmVnaXN0cnksXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBfanN4KFRlbXBsYXRlLCB7IC4uLnRlbXBsYXRlUHJvcHMsIG9uQWRkQ2xpY2s6IHRoaXMuaGFuZGxlQWRkQ2xpY2sgfSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgT2JqZWN0RmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1PYmplY3RGaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHLCBkZWVwRXF1YWxzLCBkZXNjcmlwdGlvbklkLCBnZXRTY2hlbWFUeXBlLCBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCBJRF9LRVksIG1lcmdlT2JqZWN0cywgVHJhbnNsYXRhYmxlU3RyaW5nLCBVSV9PUFRJT05TX0tFWSwgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmltcG9ydCBvbWl0IGZyb20gJ2xvZGFzaC9vbWl0JztcbmltcG9ydCBNYXJrZG93biBmcm9tICdtYXJrZG93bi10by1qc3gnO1xuLyoqIFRoZSBtYXAgb2YgY29tcG9uZW50IHR5cGUgdG8gRmllbGROYW1lICovXG5jb25zdCBDT01QT05FTlRfVFlQRVMgPSB7XG4gICAgYXJyYXk6ICdBcnJheUZpZWxkJyxcbiAgICBib29sZWFuOiAnQm9vbGVhbkZpZWxkJyxcbiAgICBpbnRlZ2VyOiAnTnVtYmVyRmllbGQnLFxuICAgIG51bWJlcjogJ051bWJlckZpZWxkJyxcbiAgICBvYmplY3Q6ICdPYmplY3RGaWVsZCcsXG4gICAgc3RyaW5nOiAnU3RyaW5nRmllbGQnLFxuICAgIG51bGw6ICdOdWxsRmllbGQnLFxufTtcbi8qKiBDb21wdXRlcyBhbmQgcmV0dXJucyB3aGljaCBgRmllbGRgIGltcGxlbWVudGF0aW9uIHRvIHJldHVybiBpbiBvcmRlciB0byByZW5kZXIgdGhlIGZpZWxkIHJlcHJlc2VudGVkIGJ5IHRoZVxuICogYHNjaGVtYWAuIFRoZSBgdWlPcHRpb25zYCBhcmUgdXNlZCB0byBhbHRlciB3aGF0IHBvdGVudGlhbCBgRmllbGRgIGltcGxlbWVudGF0aW9uIGlzIGFjdHVhbGx5IHJldHVybmVkLiBJZiBub1xuICogYXBwcm9wcmlhdGUgYEZpZWxkYCBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgdGhlbiBhIHdyYXBwZXIgYXJvdW5kIGBVbnN1cHBvcnRlZEZpZWxkVGVtcGxhdGVgIGlzIHVzZWQuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZnJvbSB3aGljaCB0byBvYnRhaW4gdGhlIHR5cGVcbiAqIEBwYXJhbSB1aU9wdGlvbnMgLSBUaGUgVUkgT3B0aW9ucyB0aGF0IG1heSBhZmZlY3QgdGhlIGNvbXBvbmVudCBkZWNpc2lvblxuICogQHBhcmFtIGlkU2NoZW1hIC0gVGhlIGlkIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBgVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlYFxuICogQHBhcmFtIHJlZ2lzdHJ5IC0gVGhlIHJlZ2lzdHJ5IGZyb20gd2hpY2ggZmllbGRzIGFuZCB0ZW1wbGF0ZXMgYXJlIG9idGFpbmVkXG4gKiBAcmV0dXJucyAtIFRoZSBgRmllbGRgIGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gcmVuZGVyIHRoZSBhY3R1YWwgZmllbGQgZGF0YVxuICovXG5mdW5jdGlvbiBnZXRGaWVsZENvbXBvbmVudChzY2hlbWEsIHVpT3B0aW9ucywgaWRTY2hlbWEsIHJlZ2lzdHJ5KSB7XG4gICAgY29uc3QgZmllbGQgPSB1aU9wdGlvbnMuZmllbGQ7XG4gICAgY29uc3QgeyBmaWVsZHMsIHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgaWYgKHR5cGVvZiBmaWVsZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZmllbGQgPT09ICdzdHJpbmcnICYmIGZpZWxkIGluIGZpZWxkcykge1xuICAgICAgICByZXR1cm4gZmllbGRzW2ZpZWxkXTtcbiAgICB9XG4gICAgY29uc3Qgc2NoZW1hVHlwZSA9IGdldFNjaGVtYVR5cGUoc2NoZW1hKTtcbiAgICBjb25zdCB0eXBlID0gQXJyYXkuaXNBcnJheShzY2hlbWFUeXBlKSA/IHNjaGVtYVR5cGVbMF0gOiBzY2hlbWFUeXBlIHx8ICcnO1xuICAgIGNvbnN0IHNjaGVtYUlkID0gc2NoZW1hLiRpZDtcbiAgICBsZXQgY29tcG9uZW50TmFtZSA9IENPTVBPTkVOVF9UWVBFU1t0eXBlXTtcbiAgICBpZiAoc2NoZW1hSWQgJiYgc2NoZW1hSWQgaW4gZmllbGRzKSB7XG4gICAgICAgIGNvbXBvbmVudE5hbWUgPSBzY2hlbWFJZDtcbiAgICB9XG4gICAgLy8gSWYgdGhlIHR5cGUgaXMgbm90IGRlZmluZWQgYW5kIHRoZSBzY2hlbWEgdXNlcyAnYW55T2YnIG9yICdvbmVPZicsIGRvbid0XG4gICAgLy8gcmVuZGVyIGEgZmllbGQgYW5kIGxldCB0aGUgTXVsdGlTY2hlbWFGaWVsZCBjb21wb25lbnQgaGFuZGxlIHRoZSBmb3JtIGRpc3BsYXlcbiAgICBpZiAoIWNvbXBvbmVudE5hbWUgJiYgKHNjaGVtYS5hbnlPZiB8fCBzY2hlbWEub25lT2YpKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY29tcG9uZW50TmFtZSBpbiBmaWVsZHNcbiAgICAgICAgPyBmaWVsZHNbY29tcG9uZW50TmFtZV1cbiAgICAgICAgOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBVbnN1cHBvcnRlZEZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm4gKF9qc3goVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlLCB7IHNjaGVtYTogc2NoZW1hLCBpZFNjaGVtYTogaWRTY2hlbWEsIHJlYXNvbjogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5Vbmtub3duRmllbGRUeXBlLCBbU3RyaW5nKHNjaGVtYS50eXBlKV0pLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpO1xuICAgICAgICB9O1xufVxuLyoqIFRoZSBgU2NoZW1hRmllbGRSZW5kZXJgIGNvbXBvbmVudCBpcyB0aGUgd29yay1ob3JzZSBvZiByZWFjdC1qc29uc2NoZW1hLWZvcm0sIGRldGVybWluaW5nIHdoYXQga2luZCBvZiByZWFsIGZpZWxkIHRvXG4gKiByZW5kZXIgYmFzZWQgb24gdGhlIGBzY2hlbWFgLCBgdWlTY2hlbWFgIGFuZCBhbGwgdGhlIG90aGVyIHByb3BzLiBJdCBhbHNvIGRlYWxzIHdpdGggcmVuZGVyaW5nIHRoZSBgYW55T2ZgIGFuZFxuICogYG9uZU9mYCBmaWVsZHMuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gU2NoZW1hRmllbGRSZW5kZXIocHJvcHMpIHtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICBjb25zdCB7IHNjaGVtYTogX3NjaGVtYSwgaWRTY2hlbWE6IF9pZFNjaGVtYSwgdWlTY2hlbWEsIGZvcm1EYXRhLCBlcnJvclNjaGVtYSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBuYW1lLCBvbkNoYW5nZSwgb25LZXlDaGFuZ2UsIG9uRHJvcFByb3BlcnR5Q2xpY2ssIHJlcXVpcmVkLCByZWdpc3RyeSwgd2FzUHJvcGVydHlLZXlNb2RpZmllZCA9IGZhbHNlLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBmb3JtQ29udGV4dCwgc2NoZW1hVXRpbHMsIGdsb2JhbFVpT3B0aW9ucyB9ID0gcmVnaXN0cnk7XG4gICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IEZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIGNvbnN0IERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBGaWVsZEhlbHBUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdGaWVsZEhlbHBUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIGNvbnN0IEZpZWxkRXJyb3JUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdGaWVsZEVycm9yVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBzY2hlbWEgPSBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShfc2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgY29uc3QgZmllbGRJZCA9IF9pZFNjaGVtYVtJRF9LRVldO1xuICAgIGNvbnN0IGlkU2NoZW1hID0gbWVyZ2VPYmplY3RzKHNjaGVtYVV0aWxzLnRvSWRTY2hlbWEoc2NoZW1hLCBmaWVsZElkLCBmb3JtRGF0YSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yKSwgX2lkU2NoZW1hKTtcbiAgICAvKiogSW50ZXJtZWRpYXJ5IGBvbkNoYW5nZWAgaGFuZGxlciBmb3IgZmllbGQgY29tcG9uZW50cyB0aGF0IHdpbGwgaW5qZWN0IHRoZSBgaWRgIG9mIHRoZSBjdXJyZW50IGZpZWxkIGludG8gdGhlXG4gICAgICogYG9uQ2hhbmdlYCBjaGFpbiBpZiBpdCBpcyBub3QgYWxyZWFkeSBiZWluZyBwcm92aWRlZCBmcm9tIGEgZGVlcGVyIGxldmVsIGluIHRoZSBoaWVyYXJjaHlcbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGaWVsZENvbXBvbmVudENoYW5nZSA9IHVzZUNhbGxiYWNrKChmb3JtRGF0YSwgbmV3RXJyb3JTY2hlbWEsIGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IHRoZUlkID0gaWQgfHwgZmllbGRJZDtcbiAgICAgICAgcmV0dXJuIG9uQ2hhbmdlKGZvcm1EYXRhLCBuZXdFcnJvclNjaGVtYSwgdGhlSWQpO1xuICAgIH0sIFtmaWVsZElkLCBvbkNoYW5nZV0pO1xuICAgIGNvbnN0IEZpZWxkQ29tcG9uZW50ID0gZ2V0RmllbGRDb21wb25lbnQoc2NoZW1hLCB1aU9wdGlvbnMsIGlkU2NoZW1hLCByZWdpc3RyeSk7XG4gICAgY29uc3QgZGlzYWJsZWQgPSBCb29sZWFuKChfYSA9IHVpT3B0aW9ucy5kaXNhYmxlZCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcHJvcHMuZGlzYWJsZWQpO1xuICAgIGNvbnN0IHJlYWRvbmx5ID0gQm9vbGVhbigoX2IgPSB1aU9wdGlvbnMucmVhZG9ubHkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IChwcm9wcy5yZWFkb25seSB8fCBwcm9wcy5zY2hlbWEucmVhZE9ubHkgfHwgc2NoZW1hLnJlYWRPbmx5KSk7XG4gICAgY29uc3QgdWlTY2hlbWFIaWRlRXJyb3IgPSB1aU9wdGlvbnMuaGlkZUVycm9yO1xuICAgIC8vIFNldCBoaWRlRXJyb3IgdG8gdGhlIHZhbHVlIHByb3ZpZGVkIGluIHRoZSB1aVNjaGVtYSwgb3RoZXJ3aXNlIHN0aWNrIHdpdGggdGhlIHByb3AgdG8gcHJvcGFnYXRlIHRvIGNoaWxkcmVuXG4gICAgY29uc3QgaGlkZUVycm9yID0gdWlTY2hlbWFIaWRlRXJyb3IgPT09IHVuZGVmaW5lZCA/IHByb3BzLmhpZGVFcnJvciA6IEJvb2xlYW4odWlTY2hlbWFIaWRlRXJyb3IpO1xuICAgIGNvbnN0IGF1dG9mb2N1cyA9IEJvb2xlYW4oKF9jID0gdWlPcHRpb25zLmF1dG9mb2N1cykgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogcHJvcHMuYXV0b2ZvY3VzKTtcbiAgICBpZiAoT2JqZWN0LmtleXMoc2NoZW1hKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IHsgX19lcnJvcnMsIC4uLmZpZWxkRXJyb3JTY2hlbWEgfSA9IGVycm9yU2NoZW1hIHx8IHt9O1xuICAgIC8vIFNlZSAjNDM5OiB1aVNjaGVtYTogRG9uJ3QgcGFzcyBjb25zdW1lZCBjbGFzcyBuYW1lcyBvciBzdHlsZSB0byBjaGlsZCBjb21wb25lbnRzXG4gICAgY29uc3QgZmllbGRVaVNjaGVtYSA9IG9taXQodWlTY2hlbWEsIFsndWk6Y2xhc3NOYW1lcycsICdjbGFzc05hbWVzJywgJ3VpOnN0eWxlJ10pO1xuICAgIGlmIChVSV9PUFRJT05TX0tFWSBpbiBmaWVsZFVpU2NoZW1hKSB7XG4gICAgICAgIGZpZWxkVWlTY2hlbWFbVUlfT1BUSU9OU19LRVldID0gb21pdChmaWVsZFVpU2NoZW1hW1VJX09QVElPTlNfS0VZXSwgWydjbGFzc05hbWVzJywgJ3N0eWxlJ10pO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZCA9IChfanN4KEZpZWxkQ29tcG9uZW50LCB7IC4uLnByb3BzLCBvbkNoYW5nZTogaGFuZGxlRmllbGRDb21wb25lbnRDaGFuZ2UsIGlkU2NoZW1hOiBpZFNjaGVtYSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiBmaWVsZFVpU2NoZW1hLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgaGlkZUVycm9yOiBoaWRlRXJyb3IsIGF1dG9mb2N1czogYXV0b2ZvY3VzLCBlcnJvclNjaGVtYTogZmllbGRFcnJvclNjaGVtYSwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCByYXdFcnJvcnM6IF9fZXJyb3JzIH0pKTtcbiAgICBjb25zdCBpZCA9IGlkU2NoZW1hW0lEX0tFWV07XG4gICAgLy8gSWYgdGhpcyBzY2hlbWEgaGFzIGEgdGl0bGUgZGVmaW5lZCwgYnV0IHRoZSB1c2VyIGhhcyBzZXQgYSBuZXcga2V5L2xhYmVsLCByZXRhaW4gdGhlaXIgaW5wdXQuXG4gICAgbGV0IGxhYmVsO1xuICAgIGlmICh3YXNQcm9wZXJ0eUtleU1vZGlmaWVkKSB7XG4gICAgICAgIGxhYmVsID0gbmFtZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxhYmVsID1cbiAgICAgICAgICAgIEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRyBpbiBzY2hlbWFcbiAgICAgICAgICAgICAgICA/IG5hbWVcbiAgICAgICAgICAgICAgICA6IHVpT3B0aW9ucy50aXRsZSB8fCBwcm9wcy5zY2hlbWEudGl0bGUgfHwgc2NoZW1hLnRpdGxlIHx8IHByb3BzLnRpdGxlIHx8IG5hbWU7XG4gICAgfVxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdWlPcHRpb25zLmRlc2NyaXB0aW9uIHx8IHByb3BzLnNjaGVtYS5kZXNjcmlwdGlvbiB8fCBzY2hlbWEuZGVzY3JpcHRpb24gfHwgJyc7XG4gICAgY29uc3QgcmljaERlc2NyaXB0aW9uID0gdWlPcHRpb25zLmVuYWJsZU1hcmtkb3duSW5EZXNjcmlwdGlvbiA/IChfanN4KE1hcmtkb3duLCB7IG9wdGlvbnM6IHsgZGlzYWJsZVBhcnNpbmdSYXdIVE1MOiB0cnVlIH0sIGNoaWxkcmVuOiBkZXNjcmlwdGlvbiB9KSkgOiAoZGVzY3JpcHRpb24pO1xuICAgIGNvbnN0IGhlbHAgPSB1aU9wdGlvbnMuaGVscDtcbiAgICBjb25zdCBoaWRkZW4gPSB1aU9wdGlvbnMud2lkZ2V0ID09PSAnaGlkZGVuJztcbiAgICBjb25zdCBjbGFzc05hbWVzID0gWydmb3JtLWdyb3VwJywgJ2ZpZWxkJywgYGZpZWxkLSR7Z2V0U2NoZW1hVHlwZShzY2hlbWEpfWBdO1xuICAgIGlmICghaGlkZUVycm9yICYmIF9fZXJyb3JzICYmIF9fZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCdmaWVsZC1lcnJvciBoYXMtZXJyb3IgaGFzLWRhbmdlcicpO1xuICAgIH1cbiAgICBpZiAodWlTY2hlbWEgPT09IG51bGwgfHwgdWlTY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVpU2NoZW1hLmNsYXNzTmFtZXMpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIid1aVNjaGVtYS5jbGFzc05hbWVzJyBpcyBkZXByZWNhdGVkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhIG1ham9yIHJlbGVhc2U7IFVzZSAndWk6Y2xhc3NOYW1lcycgaW5zdGVhZC5cIik7XG4gICAgICAgIH1cbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKHVpU2NoZW1hLmNsYXNzTmFtZXMpO1xuICAgIH1cbiAgICBpZiAodWlPcHRpb25zLmNsYXNzTmFtZXMpIHtcbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKHVpT3B0aW9ucy5jbGFzc05hbWVzKTtcbiAgICB9XG4gICAgY29uc3QgaGVscENvbXBvbmVudCA9IChfanN4KEZpZWxkSGVscFRlbXBsYXRlLCB7IGhlbHA6IGhlbHAsIGlkU2NoZW1hOiBpZFNjaGVtYSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgaGFzRXJyb3JzOiAhaGlkZUVycm9yICYmIF9fZXJyb3JzICYmIF9fZXJyb3JzLmxlbmd0aCA+IDAsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSk7XG4gICAgLypcbiAgICAgKiBBbnlPZi9PbmVPZiBlcnJvcnMgaGFuZGxlZCBieSBjaGlsZCBzY2hlbWFcbiAgICAgKiB1bmxlc3MgaXQgY2FuIGJlIHJlbmRlcmVkIGFzIHNlbGVjdCBjb250cm9sXG4gICAgICovXG4gICAgY29uc3QgZXJyb3JzQ29tcG9uZW50ID0gaGlkZUVycm9yIHx8ICgoc2NoZW1hLmFueU9mIHx8IHNjaGVtYS5vbmVPZikgJiYgIXNjaGVtYVV0aWxzLmlzU2VsZWN0KHNjaGVtYSkpID8gdW5kZWZpbmVkIDogKF9qc3goRmllbGRFcnJvclRlbXBsYXRlLCB7IGVycm9yczogX19lcnJvcnMsIGVycm9yU2NoZW1hOiBlcnJvclNjaGVtYSwgaWRTY2hlbWE6IGlkU2NoZW1hLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpO1xuICAgIGNvbnN0IGZpZWxkUHJvcHMgPSB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAoX2pzeChEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUsIHsgaWQ6IGRlc2NyaXB0aW9uSWQoaWQpLCBkZXNjcmlwdGlvbjogcmljaERlc2NyaXB0aW9uLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpLFxuICAgICAgICByYXdEZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgIGhlbHA6IGhlbHBDb21wb25lbnQsXG4gICAgICAgIHJhd0hlbHA6IHR5cGVvZiBoZWxwID09PSAnc3RyaW5nJyA/IGhlbHAgOiB1bmRlZmluZWQsXG4gICAgICAgIGVycm9yczogZXJyb3JzQ29tcG9uZW50LFxuICAgICAgICByYXdFcnJvcnM6IGhpZGVFcnJvciA/IHVuZGVmaW5lZCA6IF9fZXJyb3JzLFxuICAgICAgICBpZCxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIGhpZGRlbixcbiAgICAgICAgb25DaGFuZ2UsXG4gICAgICAgIG9uS2V5Q2hhbmdlLFxuICAgICAgICBvbkRyb3BQcm9wZXJ0eUNsaWNrLFxuICAgICAgICByZXF1aXJlZCxcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHJlYWRvbmx5LFxuICAgICAgICBoaWRlRXJyb3IsXG4gICAgICAgIGRpc3BsYXlMYWJlbCxcbiAgICAgICAgY2xhc3NOYW1lczogY2xhc3NOYW1lcy5qb2luKCcgJykudHJpbSgpLFxuICAgICAgICBzdHlsZTogdWlPcHRpb25zLnN0eWxlLFxuICAgICAgICBmb3JtQ29udGV4dCxcbiAgICAgICAgZm9ybURhdGEsXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgdWlTY2hlbWEsXG4gICAgICAgIHJlZ2lzdHJ5LFxuICAgIH07XG4gICAgY29uc3QgX0FueU9mRmllbGQgPSByZWdpc3RyeS5maWVsZHMuQW55T2ZGaWVsZDtcbiAgICBjb25zdCBfT25lT2ZGaWVsZCA9IHJlZ2lzdHJ5LmZpZWxkcy5PbmVPZkZpZWxkO1xuICAgIGNvbnN0IGlzUmVwbGFjaW5nQW55T3JPbmVPZiA9ICh1aVNjaGVtYSA9PT0gbnVsbCB8fCB1aVNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdWlTY2hlbWFbJ3VpOmZpZWxkJ10pICYmICh1aVNjaGVtYSA9PT0gbnVsbCB8fCB1aVNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdWlTY2hlbWFbJ3VpOmZpZWxkUmVwbGFjZXNBbnlPck9uZU9mJ10pID09PSB0cnVlO1xuICAgIHJldHVybiAoX2pzeChGaWVsZFRlbXBsYXRlLCB7IC4uLmZpZWxkUHJvcHMsIGNoaWxkcmVuOiBfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtmaWVsZCwgc2NoZW1hLmFueU9mICYmICFpc1JlcGxhY2luZ0FueU9yT25lT2YgJiYgIXNjaGVtYVV0aWxzLmlzU2VsZWN0KHNjaGVtYSkgJiYgKF9qc3goX0FueU9mRmllbGQsIHsgbmFtZTogbmFtZSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEsIGZvcm1EYXRhOiBmb3JtRGF0YSwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBpZFByZWZpeDogaWRQcmVmaXgsIGlkU2NoZW1hOiBpZFNjaGVtYSwgaWRTZXBhcmF0b3I6IGlkU2VwYXJhdG9yLCBvbkJsdXI6IHByb3BzLm9uQmx1ciwgb25DaGFuZ2U6IHByb3BzLm9uQ2hhbmdlLCBvbkZvY3VzOiBwcm9wcy5vbkZvY3VzLCBvcHRpb25zOiBzY2hlbWEuYW55T2YubWFwKChfc2NoZW1hKSA9PiBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShpc09iamVjdChfc2NoZW1hKSA/IF9zY2hlbWEgOiB7fSwgZm9ybURhdGEpKSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCByZXF1aXJlZDogcmVxdWlyZWQsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEgfSkpLCBzY2hlbWEub25lT2YgJiYgIWlzUmVwbGFjaW5nQW55T3JPbmVPZiAmJiAhc2NoZW1hVXRpbHMuaXNTZWxlY3Qoc2NoZW1hKSAmJiAoX2pzeChfT25lT2ZGaWVsZCwgeyBuYW1lOiBuYW1lLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgaGlkZUVycm9yOiBoaWRlRXJyb3IsIGVycm9yU2NoZW1hOiBlcnJvclNjaGVtYSwgZm9ybURhdGE6IGZvcm1EYXRhLCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIGlkUHJlZml4OiBpZFByZWZpeCwgaWRTY2hlbWE6IGlkU2NoZW1hLCBpZFNlcGFyYXRvcjogaWRTZXBhcmF0b3IsIG9uQmx1cjogcHJvcHMub25CbHVyLCBvbkNoYW5nZTogcHJvcHMub25DaGFuZ2UsIG9uRm9jdXM6IHByb3BzLm9uRm9jdXMsIG9wdGlvbnM6IHNjaGVtYS5vbmVPZi5tYXAoKF9zY2hlbWEpID0+IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKGlzT2JqZWN0KF9zY2hlbWEpID8gX3NjaGVtYSA6IHt9LCBmb3JtRGF0YSkpLCByZWdpc3RyeTogcmVnaXN0cnksIHJlcXVpcmVkOiByZXF1aXJlZCwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSB9KSldIH0pIH0pKTtcbn1cbi8qKiBUaGUgYFNjaGVtYUZpZWxkYCBjb21wb25lbnQgZGV0ZXJtaW5lcyB3aGV0aGVyIGl0IGlzIG5lY2Vzc2FyeSB0byByZXJlbmRlciB0aGUgY29tcG9uZW50IGJhc2VkIG9uIGFueSBwcm9wcyBjaGFuZ2VzXG4gKiBhbmQgaWYgc28sIGNhbGxzIHRoZSBgU2NoZW1hRmllbGRSZW5kZXJgIGNvbXBvbmVudCB3aXRoIHRoZSBwcm9wcy5cbiAqL1xuY2xhc3MgU2NoZW1hRmllbGQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMpIHtcbiAgICAgICAgcmV0dXJuICFkZWVwRXF1YWxzKHRoaXMucHJvcHMsIG5leHRQcm9wcyk7XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIF9qc3goU2NoZW1hRmllbGRSZW5kZXIsIHsgLi4udGhpcy5wcm9wcyB9KTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBTY2hlbWFGaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNjaGVtYUZpZWxkLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRXaWRnZXQsIGdldFVpT3B0aW9ucywgb3B0aW9uc0xpc3QsIGhhc1dpZGdldCwgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBTdHJpbmdGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgc2NoZW1hIGZpZWxkIHRoYXQgcmVwcmVzZW50cyBhIHN0cmluZyB0eXBlXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICovXG5mdW5jdGlvbiBTdHJpbmdGaWVsZChwcm9wcykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IHNjaGVtYSwgbmFtZSwgdWlTY2hlbWEsIGlkU2NoZW1hLCBmb3JtRGF0YSwgcmVxdWlyZWQsIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzLCByZWdpc3RyeSwgcmF3RXJyb3JzLCBoaWRlRXJyb3IsIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IHRpdGxlLCBmb3JtYXQgfSA9IHNjaGVtYTtcbiAgICBjb25zdCB7IHdpZGdldHMsIGZvcm1Db250ZXh0LCBzY2hlbWFVdGlscywgZ2xvYmFsVWlPcHRpb25zIH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCBlbnVtT3B0aW9ucyA9IHNjaGVtYVV0aWxzLmlzU2VsZWN0KHNjaGVtYSkgPyBvcHRpb25zTGlzdChzY2hlbWEsIHVpU2NoZW1hKSA6IHVuZGVmaW5lZDtcbiAgICBsZXQgZGVmYXVsdFdpZGdldCA9IGVudW1PcHRpb25zID8gJ3NlbGVjdCcgOiAndGV4dCc7XG4gICAgaWYgKGZvcm1hdCAmJiBoYXNXaWRnZXQoc2NoZW1hLCBmb3JtYXQsIHdpZGdldHMpKSB7XG4gICAgICAgIGRlZmF1bHRXaWRnZXQgPSBmb3JtYXQ7XG4gICAgfVxuICAgIGNvbnN0IHsgd2lkZ2V0ID0gZGVmYXVsdFdpZGdldCwgcGxhY2Vob2xkZXIgPSAnJywgdGl0bGU6IHVpVGl0bGUsIC4uLm9wdGlvbnMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgY29uc3QgZGlzcGxheUxhYmVsID0gc2NoZW1hVXRpbHMuZ2V0RGlzcGxheUxhYmVsKHNjaGVtYSwgdWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgY29uc3QgbGFiZWwgPSAoX2EgPSB1aVRpdGxlICE9PSBudWxsICYmIHVpVGl0bGUgIT09IHZvaWQgMCA/IHVpVGl0bGUgOiB0aXRsZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbmFtZTtcbiAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHdpZGdldHMpO1xuICAgIHJldHVybiAoX2pzeChXaWRnZXQsIHsgb3B0aW9uczogeyAuLi5vcHRpb25zLCBlbnVtT3B0aW9ucyB9LCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCBpZDogaWRTY2hlbWEuJGlkLCBuYW1lOiBuYW1lLCBsYWJlbDogbGFiZWwsIGhpZGVMYWJlbDogIWRpc3BsYXlMYWJlbCwgaGlkZUVycm9yOiBoaWRlRXJyb3IsIHZhbHVlOiBmb3JtRGF0YSwgb25DaGFuZ2U6IG9uQ2hhbmdlLCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHJhd0Vycm9yczogcmF3RXJyb3JzIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IFN0cmluZ0ZpZWxkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3RyaW5nRmllbGQuanMubWFwIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuLyoqIFRoZSBgTnVsbEZpZWxkYCBjb21wb25lbnQgaXMgdXNlZCB0byByZW5kZXIgYSBmaWVsZCBpbiB0aGUgc2NoZW1hIGlzIG51bGwuIEl0IGFsc28gZW5zdXJlcyB0aGF0IHRoZSBgZm9ybURhdGFgIGlzXG4gKiBhbHNvIHNldCB0byBudWxsIGlmIGl0IGhhcyBubyB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEZpZWxkUHJvcHNgIGZvciB0aGlzIHRlbXBsYXRlXG4gKi9cbmZ1bmN0aW9uIE51bGxGaWVsZChwcm9wcykge1xuICAgIGNvbnN0IHsgZm9ybURhdGEsIG9uQ2hhbmdlIH0gPSBwcm9wcztcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoZm9ybURhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb25DaGFuZ2UobnVsbCk7XG4gICAgICAgIH1cbiAgICB9LCBbZm9ybURhdGEsIG9uQ2hhbmdlXSk7XG4gICAgcmV0dXJuIG51bGw7XG59XG5leHBvcnQgZGVmYXVsdCBOdWxsRmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OdWxsRmllbGQuanMubWFwIiwiaW1wb3J0IEFycmF5RmllbGQgZnJvbSAnLi9BcnJheUZpZWxkJztcbmltcG9ydCBCb29sZWFuRmllbGQgZnJvbSAnLi9Cb29sZWFuRmllbGQnO1xuaW1wb3J0IE11bHRpU2NoZW1hRmllbGQgZnJvbSAnLi9NdWx0aVNjaGVtYUZpZWxkJztcbmltcG9ydCBOdW1iZXJGaWVsZCBmcm9tICcuL051bWJlckZpZWxkJztcbmltcG9ydCBPYmplY3RGaWVsZCBmcm9tICcuL09iamVjdEZpZWxkJztcbmltcG9ydCBTY2hlbWFGaWVsZCBmcm9tICcuL1NjaGVtYUZpZWxkJztcbmltcG9ydCBTdHJpbmdGaWVsZCBmcm9tICcuL1N0cmluZ0ZpZWxkJztcbmltcG9ydCBOdWxsRmllbGQgZnJvbSAnLi9OdWxsRmllbGQnO1xuZnVuY3Rpb24gZmllbGRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIEFueU9mRmllbGQ6IE11bHRpU2NoZW1hRmllbGQsXG4gICAgICAgIEFycmF5RmllbGQ6IEFycmF5RmllbGQsXG4gICAgICAgIC8vIEFycmF5RmllbGQgZmFsbHMgYmFjayB0byBTY2hlbWFGaWVsZCBpZiBBcnJheVNjaGVtYUZpZWxkIGlzIG5vdCBkZWZpbmVkLCB3aGljaCBpdCBpc24ndCBieSBkZWZhdWx0XG4gICAgICAgIEJvb2xlYW5GaWVsZCxcbiAgICAgICAgTnVtYmVyRmllbGQsXG4gICAgICAgIE9iamVjdEZpZWxkLFxuICAgICAgICBPbmVPZkZpZWxkOiBNdWx0aVNjaGVtYUZpZWxkLFxuICAgICAgICBTY2hlbWFGaWVsZCxcbiAgICAgICAgU3RyaW5nRmllbGQsXG4gICAgICAgIE51bGxGaWVsZCxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgZmllbGRzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGRlc2NyaXB0aW9uSWQsIGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGVgIGNvbXBvbmVudCByZW5kZXJzIGEgYERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZWAgd2l0aCBhbiBgaWRgIGRlcml2ZWQgZnJvbVxuICogdGhlIGBpZFNjaGVtYWAuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBBcnJheUZpZWxkRGVzY3JpcHRpb25Qcm9wc2AgZm9yIHRoZSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGlkU2NoZW1hLCBkZXNjcmlwdGlvbiwgcmVnaXN0cnksIHNjaGVtYSwgdWlTY2hlbWEgfSA9IHByb3BzO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIHJlZ2lzdHJ5Lmdsb2JhbFVpT3B0aW9ucyk7XG4gICAgY29uc3QgeyBsYWJlbDogZGlzcGxheUxhYmVsID0gdHJ1ZSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIWRlc2NyaXB0aW9uIHx8ICFkaXNwbGF5TGFiZWwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIChfanN4KERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSwgeyBpZDogZGVzY3JpcHRpb25JZChpZFNjaGVtYSksIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vKiogVGhlIGBBcnJheUZpZWxkSXRlbVRlbXBsYXRlYCBjb21wb25lbnQgaXMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIGFuIGl0ZW1zIG9mIGFuIGFycmF5LlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgQXJyYXlGaWVsZFRlbXBsYXRlSXRlbVR5cGVgIHByb3BzIGZvciB0aGUgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFycmF5RmllbGRJdGVtVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGRpc2FibGVkLCBoYXNUb29sYmFyLCBoYXNNb3ZlRG93biwgaGFzTW92ZVVwLCBoYXNSZW1vdmUsIGhhc0NvcHksIGluZGV4LCBvbkNvcHlJbmRleENsaWNrLCBvbkRyb3BJbmRleENsaWNrLCBvblJlb3JkZXJDbGljaywgcmVhZG9ubHksIHJlZ2lzdHJ5LCB1aVNjaGVtYSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgQ29weUJ1dHRvbiwgTW92ZURvd25CdXR0b24sIE1vdmVVcEJ1dHRvbiwgUmVtb3ZlQnV0dG9uIH0gPSByZWdpc3RyeS50ZW1wbGF0ZXMuQnV0dG9uVGVtcGxhdGVzO1xuICAgIGNvbnN0IGJ0blN0eWxlID0ge1xuICAgICAgICBmbGV4OiAxLFxuICAgICAgICBwYWRkaW5nTGVmdDogNixcbiAgICAgICAgcGFkZGluZ1JpZ2h0OiA2LFxuICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gICAgfTtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogaGFzVG9vbGJhciA/ICdjb2wteHMtOScgOiAnY29sLXhzLTEyJywgY2hpbGRyZW46IGNoaWxkcmVuIH0pLCBoYXNUb29sYmFyICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnY29sLXhzLTMgYXJyYXktaXRlbS10b29sYm94JywgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnYnRuLWdyb3VwJywgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYXJvdW5kJyxcbiAgICAgICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IFsoaGFzTW92ZVVwIHx8IGhhc01vdmVEb3duKSAmJiAoX2pzeChNb3ZlVXBCdXR0b24sIHsgc3R5bGU6IGJ0blN0eWxlLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgIWhhc01vdmVVcCwgb25DbGljazogb25SZW9yZGVyQ2xpY2soaW5kZXgsIGluZGV4IC0gMSksIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKSwgKGhhc01vdmVVcCB8fCBoYXNNb3ZlRG93bikgJiYgKF9qc3goTW92ZURvd25CdXR0b24sIHsgc3R5bGU6IGJ0blN0eWxlLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgIWhhc01vdmVEb3duLCBvbkNsaWNrOiBvblJlb3JkZXJDbGljayhpbmRleCwgaW5kZXggKyAxKSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpLCBoYXNDb3B5ICYmIChfanN4KENvcHlCdXR0b24sIHsgc3R5bGU6IGJ0blN0eWxlLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIG9uQ2xpY2s6IG9uQ29weUluZGV4Q2xpY2soaW5kZXgpLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSksIGhhc1JlbW92ZSAmJiAoX2pzeChSZW1vdmVCdXR0b24sIHsgc3R5bGU6IGJ0blN0eWxlLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIG9uQ2xpY2s6IG9uRHJvcEluZGV4Q2xpY2soaW5kZXgpLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSldIH0pIH0pKV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUsIGdldFVpT3B0aW9ucywgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBBcnJheUZpZWxkVGVtcGxhdGVgIGNvbXBvbmVudCBpcyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgYWxsIGl0ZW1zIGluIGFuIGFycmF5LlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgQXJyYXlGaWVsZFRlbXBsYXRlSXRlbVR5cGVgIHByb3BzIGZvciB0aGUgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFycmF5RmllbGRUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgY2FuQWRkLCBjbGFzc05hbWUsIGRpc2FibGVkLCBpZFNjaGVtYSwgdWlTY2hlbWEsIGl0ZW1zLCBvbkFkZENsaWNrLCByZWFkb25seSwgcmVnaXN0cnksIHJlcXVpcmVkLCBzY2hlbWEsIHRpdGxlLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICBjb25zdCBBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIGNvbnN0IEFycmF5RmllbGRJdGVtVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIGNvbnN0IEFycmF5RmllbGRUaXRsZVRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0FycmF5RmllbGRUaXRsZVRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgLy8gQnV0dG9uIHRlbXBsYXRlcyBhcmUgbm90IG92ZXJyaWRkZW4gaW4gdGhlIHVpU2NoZW1hXG4gICAgY29uc3QgeyBCdXR0b25UZW1wbGF0ZXM6IHsgQWRkQnV0dG9uIH0sIH0gPSByZWdpc3RyeS50ZW1wbGF0ZXM7XG4gICAgcmV0dXJuIChfanN4cyhcImZpZWxkc2V0XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGlkOiBpZFNjaGVtYS4kaWQsIGNoaWxkcmVuOiBbX2pzeChBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZSwgeyBpZFNjaGVtYTogaWRTY2hlbWEsIHRpdGxlOiB1aU9wdGlvbnMudGl0bGUgfHwgdGl0bGUsIHJlcXVpcmVkOiByZXF1aXJlZCwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pLCBfanN4KEFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlLCB7IGlkU2NoZW1hOiBpZFNjaGVtYSwgZGVzY3JpcHRpb246IHVpT3B0aW9ucy5kZXNjcmlwdGlvbiB8fCBzY2hlbWEuZGVzY3JpcHRpb24sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ3JvdyBhcnJheS1pdGVtLWxpc3QnLCBjaGlsZHJlbjogaXRlbXMgJiZcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMubWFwKCh7IGtleSwgLi4uaXRlbVByb3BzIH0pID0+IChfanN4KEFycmF5RmllbGRJdGVtVGVtcGxhdGUsIHsgLi4uaXRlbVByb3BzIH0sIGtleSkpKSB9KSwgY2FuQWRkICYmIChfanN4KEFkZEJ1dHRvbiwgeyBjbGFzc05hbWU6ICdhcnJheS1pdGVtLWFkZCcsIG9uQ2xpY2s6IG9uQWRkQ2xpY2ssIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcnJheUZpZWxkVGVtcGxhdGUuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIHRpdGxlSWQsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQXJyYXlGaWVsZFRpdGxlVGVtcGxhdGVgIGNvbXBvbmVudCByZW5kZXJzIGEgYFRpdGxlRmllbGRUZW1wbGF0ZWAgd2l0aCBhbiBgaWRgIGRlcml2ZWQgZnJvbVxuICogdGhlIGBpZFNjaGVtYWAuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBBcnJheUZpZWxkVGl0bGVQcm9wc2AgZm9yIHRoZSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXJyYXlGaWVsZFRpdGxlVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGlkU2NoZW1hLCB0aXRsZSwgc2NoZW1hLCB1aVNjaGVtYSwgcmVxdWlyZWQsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBvcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCByZWdpc3RyeS5nbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IHsgbGFiZWw6IGRpc3BsYXlMYWJlbCA9IHRydWUgfSA9IG9wdGlvbnM7XG4gICAgaWYgKCF0aXRsZSB8fCAhZGlzcGxheUxhYmVsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBUaXRsZUZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnVGl0bGVGaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiAoX2pzeChUaXRsZUZpZWxkVGVtcGxhdGUsIHsgaWQ6IHRpdGxlSWQoaWRTY2hlbWEpLCB0aXRsZTogdGl0bGUsIHJlcXVpcmVkOiByZXF1aXJlZCwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFycmF5RmllbGRUaXRsZVRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBGcmFnbWVudCBhcyBfRnJhZ21lbnQsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYXJpYURlc2NyaWJlZEJ5SWRzLCBleGFtcGxlc0lkLCBnZXRJbnB1dFByb3BzLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgYmFzaWMgYDxpbnB1dD5gIGNvbXBvbmVudCBmb3IgdGhlIGBjb3JlYCB0aGVtZS5cbiAqIEl0IGlzIHVzZWQgYXMgdGhlIHRlbXBsYXRlIGZvciByZW5kZXJpbmcgbWFueSBvZiB0aGUgPGlucHV0PiBiYXNlZCB3aWRnZXRzIHRoYXQgZGlmZmVyIGJ5IGB0eXBlYCBhbmQgY2FsbGJhY2tzIG9ubHkuXG4gKiBJdCBjYW4gYmUgY3VzdG9taXplZC9vdmVycmlkZGVuIGZvciBvdGhlciB0aGVtZXMgb3IgaW5kaXZpZHVhbCBpbXBsZW1lbnRhdGlvbnMgYXMgbmVlZGVkLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIHRlbXBsYXRlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhc2VJbnB1dFRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgLy8gcmVtb3ZlIHRoaXMgZnJvbSAuLi5yZXN0XG4gICAgdmFsdWUsIHJlYWRvbmx5LCBkaXNhYmxlZCwgYXV0b2ZvY3VzLCBvbkJsdXIsIG9uRm9jdXMsIG9uQ2hhbmdlLCBvbkNoYW5nZU92ZXJyaWRlLCBvcHRpb25zLCBzY2hlbWEsIHVpU2NoZW1hLCBmb3JtQ29udGV4dCwgcmVnaXN0cnksIHJhd0Vycm9ycywgdHlwZSwgaGlkZUxhYmVsLCAvLyByZW1vdmUgdGhpcyBmcm9tIC4uLnJlc3RcbiAgICBoaWRlRXJyb3IsIC8vIHJlbW92ZSB0aGlzIGZyb20gLi4ucmVzdFxuICAgIC4uLnJlc3QgfSA9IHByb3BzO1xuICAgIC8vIE5vdGU6IHNpbmNlIFJlYWN0IDE1LjIuMCB3ZSBjYW4ndCBmb3J3YXJkIHVua25vd24gZWxlbWVudCBhdHRyaWJ1dGVzLCBzbyB3ZVxuICAgIC8vIGV4Y2x1ZGUgdGhlIFwib3B0aW9uc1wiIGFuZCBcInNjaGVtYVwiIG9uZXMgaGVyZS5cbiAgICBpZiAoIWlkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdObyBpZCBmb3InLCBwcm9wcyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gaWQgZm9yIHByb3BzICR7SlNPTi5zdHJpbmdpZnkocHJvcHMpfWApO1xuICAgIH1cbiAgICBjb25zdCBpbnB1dFByb3BzID0ge1xuICAgICAgICAuLi5yZXN0LFxuICAgICAgICAuLi5nZXRJbnB1dFByb3BzKHNjaGVtYSwgdHlwZSwgb3B0aW9ucyksXG4gICAgfTtcbiAgICBsZXQgaW5wdXRWYWx1ZTtcbiAgICBpZiAoaW5wdXRQcm9wcy50eXBlID09PSAnbnVtYmVyJyB8fCBpbnB1dFByb3BzLnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgICAgICBpbnB1dFZhbHVlID0gdmFsdWUgfHwgdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICcnO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaW5wdXRWYWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBfb25DaGFuZ2UgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQ6IHsgdmFsdWUgfSB9KSA9PiBvbkNoYW5nZSh2YWx1ZSA9PT0gJycgPyBvcHRpb25zLmVtcHR5VmFsdWUgOiB2YWx1ZSksIFtvbkNoYW5nZSwgb3B0aW9uc10pO1xuICAgIGNvbnN0IF9vbkJsdXIgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25CbHVyKGlkLCB0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlKSwgW29uQmx1ciwgaWRdKTtcbiAgICBjb25zdCBfb25Gb2N1cyA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldCB9KSA9PiBvbkZvY3VzKGlkLCB0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlKSwgW29uRm9jdXMsIGlkXSk7XG4gICAgcmV0dXJuIChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtfanN4KFwiaW5wdXRcIiwgeyBpZDogaWQsIG5hbWU6IGlkLCBjbGFzc05hbWU6ICdmb3JtLWNvbnRyb2wnLCByZWFkT25seTogcmVhZG9ubHksIGRpc2FibGVkOiBkaXNhYmxlZCwgYXV0b0ZvY3VzOiBhdXRvZm9jdXMsIHZhbHVlOiBpbnB1dFZhbHVlLCAuLi5pbnB1dFByb3BzLCBsaXN0OiBzY2hlbWEuZXhhbXBsZXMgPyBleGFtcGxlc0lkKGlkKSA6IHVuZGVmaW5lZCwgb25DaGFuZ2U6IG9uQ2hhbmdlT3ZlcnJpZGUgfHwgX29uQ2hhbmdlLCBvbkJsdXI6IF9vbkJsdXIsIG9uRm9jdXM6IF9vbkZvY3VzLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5SWRzKGlkLCAhIXNjaGVtYS5leGFtcGxlcykgfSksIEFycmF5LmlzQXJyYXkoc2NoZW1hLmV4YW1wbGVzKSAmJiAoX2pzeChcImRhdGFsaXN0XCIsIHsgaWQ6IGV4YW1wbGVzSWQoaWQpLCBjaGlsZHJlbjogc2NoZW1hLmV4YW1wbGVzXG4gICAgICAgICAgICAgICAgICAgIC5jb25jYXQoc2NoZW1hLmRlZmF1bHQgJiYgIXNjaGVtYS5leGFtcGxlcy5pbmNsdWRlcyhzY2hlbWEuZGVmYXVsdCkgPyBbc2NoZW1hLmRlZmF1bHRdIDogW10pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGV4YW1wbGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9qc3goXCJvcHRpb25cIiwgeyB2YWx1ZTogZXhhbXBsZSB9LCBleGFtcGxlKTtcbiAgICAgICAgICAgICAgICB9KSB9LCBgZGF0YWxpc3RfJHtpZH1gKSldIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhc2VJbnB1dFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRTdWJtaXRCdXR0b25PcHRpb25zIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgU3VibWl0QnV0dG9uYCByZW5kZXJzIGEgYnV0dG9uIHRoYXQgcmVwcmVzZW50IHRoZSBgU3VibWl0YCBhY3Rpb24gb24gYSBmb3JtXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFN1Ym1pdEJ1dHRvbih7IHVpU2NoZW1hIH0pIHtcbiAgICBjb25zdCB7IHN1Ym1pdFRleHQsIG5vcmVuZGVyLCBwcm9wczogc3VibWl0QnV0dG9uUHJvcHMgPSB7fSB9ID0gZ2V0U3VibWl0QnV0dG9uT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgaWYgKG5vcmVuZGVyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjaGlsZHJlbjogX2pzeChcImJ1dHRvblwiLCB7IHR5cGU6ICdzdWJtaXQnLCAuLi5zdWJtaXRCdXR0b25Qcm9wcywgY2xhc3NOYW1lOiBgYnRuIGJ0bi1pbmZvICR7c3VibWl0QnV0dG9uUHJvcHMuY2xhc3NOYW1lIHx8ICcnfWAsIGNoaWxkcmVuOiBzdWJtaXRUZXh0IH0pIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN1Ym1pdEJ1dHRvbi5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgVHJhbnNsYXRhYmxlU3RyaW5nIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSWNvbkJ1dHRvbihwcm9wcykge1xuICAgIGNvbnN0IHsgaWNvblR5cGUgPSAnZGVmYXVsdCcsIGljb24sIGNsYXNzTmFtZSwgdWlTY2hlbWEsIHJlZ2lzdHJ5LCAuLi5vdGhlclByb3BzIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKF9qc3goXCJidXR0b25cIiwgeyB0eXBlOiAnYnV0dG9uJywgY2xhc3NOYW1lOiBgYnRuIGJ0bi0ke2ljb25UeXBlfSAke2NsYXNzTmFtZX1gLCAuLi5vdGhlclByb3BzLCBjaGlsZHJlbjogX2pzeChcImlcIiwgeyBjbGFzc05hbWU6IGBnbHlwaGljb24gZ2x5cGhpY29uLSR7aWNvbn1gIH0pIH0pKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBDb3B5QnV0dG9uKHByb3BzKSB7XG4gICAgY29uc3QgeyByZWdpc3RyeTogeyB0cmFuc2xhdGVTdHJpbmcgfSwgfSA9IHByb3BzO1xuICAgIHJldHVybiAoX2pzeChJY29uQnV0dG9uLCB7IHRpdGxlOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkNvcHlCdXR0b24pLCBjbGFzc05hbWU6ICdhcnJheS1pdGVtLWNvcHknLCAuLi5wcm9wcywgaWNvbjogJ2NvcHknIH0pKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBNb3ZlRG93bkJ1dHRvbihwcm9wcykge1xuICAgIGNvbnN0IHsgcmVnaXN0cnk6IHsgdHJhbnNsYXRlU3RyaW5nIH0sIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKF9qc3goSWNvbkJ1dHRvbiwgeyB0aXRsZTogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5Nb3ZlRG93bkJ1dHRvbiksIGNsYXNzTmFtZTogJ2FycmF5LWl0ZW0tbW92ZS1kb3duJywgLi4ucHJvcHMsIGljb246ICdhcnJvdy1kb3duJyB9KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gTW92ZVVwQnV0dG9uKHByb3BzKSB7XG4gICAgY29uc3QgeyByZWdpc3RyeTogeyB0cmFuc2xhdGVTdHJpbmcgfSwgfSA9IHByb3BzO1xuICAgIHJldHVybiAoX2pzeChJY29uQnV0dG9uLCB7IHRpdGxlOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLk1vdmVVcEJ1dHRvbiksIGNsYXNzTmFtZTogJ2FycmF5LWl0ZW0tbW92ZS11cCcsIC4uLnByb3BzLCBpY29uOiAnYXJyb3ctdXAnIH0pKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBSZW1vdmVCdXR0b24ocHJvcHMpIHtcbiAgICBjb25zdCB7IHJlZ2lzdHJ5OiB7IHRyYW5zbGF0ZVN0cmluZyB9LCB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChfanN4KEljb25CdXR0b24sIHsgdGl0bGU6IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuUmVtb3ZlQnV0dG9uKSwgY2xhc3NOYW1lOiAnYXJyYXktaXRlbS1yZW1vdmUnLCAuLi5wcm9wcywgaWNvblR5cGU6ICdkYW5nZXInLCBpY29uOiAncmVtb3ZlJyB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1JY29uQnV0dG9uLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGFibGVTdHJpbmcgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICcuL0ljb25CdXR0b24nO1xuLyoqIFRoZSBgQWRkQnV0dG9uYCByZW5kZXJzIGEgYnV0dG9uIHRoYXQgcmVwcmVzZW50IHRoZSBgQWRkYCBhY3Rpb24gb24gYSBmb3JtXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFkZEJ1dHRvbih7IGNsYXNzTmFtZSwgb25DbGljaywgZGlzYWJsZWQsIHJlZ2lzdHJ5LCB9KSB7XG4gICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ3JvdycsIGNoaWxkcmVuOiBfanN4KFwicFwiLCB7IGNsYXNzTmFtZTogYGNvbC14cy0zIGNvbC14cy1vZmZzZXQtOSB0ZXh0LXJpZ2h0ICR7Y2xhc3NOYW1lfWAsIGNoaWxkcmVuOiBfanN4KEljb25CdXR0b24sIHsgaWNvblR5cGU6ICdpbmZvJywgaWNvbjogJ3BsdXMnLCBjbGFzc05hbWU6ICdidG4tYWRkIGNvbC14cy0xMicsIHRpdGxlOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkFkZEJ1dHRvbiksIG9uQ2xpY2s6IG9uQ2xpY2ssIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pIH0pIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFkZEJ1dHRvbi5qcy5tYXAiLCJpbXBvcnQgU3VibWl0QnV0dG9uIGZyb20gJy4vU3VibWl0QnV0dG9uJztcbmltcG9ydCBBZGRCdXR0b24gZnJvbSAnLi9BZGRCdXR0b24nO1xuaW1wb3J0IHsgQ29weUJ1dHRvbiwgTW92ZURvd25CdXR0b24sIE1vdmVVcEJ1dHRvbiwgUmVtb3ZlQnV0dG9uIH0gZnJvbSAnLi9JY29uQnV0dG9uJztcbmZ1bmN0aW9uIGJ1dHRvblRlbXBsYXRlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBTdWJtaXRCdXR0b24sXG4gICAgICAgIEFkZEJ1dHRvbixcbiAgICAgICAgQ29weUJ1dHRvbixcbiAgICAgICAgTW92ZURvd25CdXR0b24sXG4gICAgICAgIE1vdmVVcEJ1dHRvbixcbiAgICAgICAgUmVtb3ZlQnV0dG9uLFxuICAgIH07XG59XG5leHBvcnQgZGVmYXVsdCBidXR0b25UZW1wbGF0ZXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLyoqIFRoZSBgRGVzY3JpcHRpb25GaWVsZGAgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGRlc2NyaXB0aW9uIG9mIGEgZmllbGRcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYERlc2NyaXB0aW9uRmllbGRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERlc2NyaXB0aW9uRmllbGQocHJvcHMpIHtcbiAgICBjb25zdCB7IGlkLCBkZXNjcmlwdGlvbiB9ID0gcHJvcHM7XG4gICAgaWYgKCFkZXNjcmlwdGlvbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkZXNjcmlwdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFwicFwiLCB7IGlkOiBpZCwgY2xhc3NOYW1lOiAnZmllbGQtZGVzY3JpcHRpb24nLCBjaGlsZHJlbjogZGVzY3JpcHRpb24gfSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgaWQ6IGlkLCBjbGFzc05hbWU6ICdmaWVsZC1kZXNjcmlwdGlvbicsIGNoaWxkcmVuOiBkZXNjcmlwdGlvbiB9KSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGVzY3JpcHRpb25GaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgVHJhbnNsYXRhYmxlU3RyaW5nLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEVycm9yTGlzdGAgY29tcG9uZW50IGlzIHRoZSB0ZW1wbGF0ZSB0aGF0IHJlbmRlcnMgdGhlIGFsbCB0aGUgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGRzIGluIHRoZSBgRm9ybWBcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEVycm9yTGlzdFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXJyb3JMaXN0KHsgZXJyb3JzLCByZWdpc3RyeSwgfSkge1xuICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAncGFuZWwgcGFuZWwtZGFuZ2VyIGVycm9ycycsIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ3BhbmVsLWhlYWRpbmcnLCBjaGlsZHJlbjogX2pzeChcImgzXCIsIHsgY2xhc3NOYW1lOiAncGFuZWwtdGl0bGUnLCBjaGlsZHJlbjogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5FcnJvcnNMYWJlbCkgfSkgfSksIF9qc3goXCJ1bFwiLCB7IGNsYXNzTmFtZTogJ2xpc3QtZ3JvdXAnLCBjaGlsZHJlbjogZXJyb3JzLm1hcCgoZXJyb3IsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KFwibGlcIiwgeyBjbGFzc05hbWU6ICdsaXN0LWdyb3VwLWl0ZW0gdGV4dC1kYW5nZXInLCBjaGlsZHJlbjogZXJyb3Iuc3RhY2sgfSwgaSkpO1xuICAgICAgICAgICAgICAgIH0pIH0pXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1FcnJvckxpc3QuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IFJFUVVJUkVEX0ZJRUxEX1NZTUJPTCA9ICcqJztcbi8qKiBSZW5kZXJzIGEgbGFiZWwgZm9yIGEgZmllbGRcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYExhYmVsUHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMYWJlbChwcm9wcykge1xuICAgIGNvbnN0IHsgbGFiZWwsIHJlcXVpcmVkLCBpZCB9ID0gcHJvcHM7XG4gICAgaWYgKCFsYWJlbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhcImxhYmVsXCIsIHsgY2xhc3NOYW1lOiAnY29udHJvbC1sYWJlbCcsIGh0bWxGb3I6IGlkLCBjaGlsZHJlbjogW2xhYmVsLCByZXF1aXJlZCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogJ3JlcXVpcmVkJywgY2hpbGRyZW46IFJFUVVJUkVEX0ZJRUxEX1NZTUJPTCB9KV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGFiZWwuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IExhYmVsIGZyb20gJy4vTGFiZWwnO1xuLyoqIFRoZSBgRmllbGRUZW1wbGF0ZWAgY29tcG9uZW50IGlzIHRoZSB0ZW1wbGF0ZSB1c2VkIGJ5IGBTY2hlbWFGaWVsZGAgdG8gcmVuZGVyIGFueSBmaWVsZC4gSXQgcmVuZGVycyB0aGUgZmllbGRcbiAqIGNvbnRlbnQsIChsYWJlbCwgZGVzY3JpcHRpb24sIGNoaWxkcmVuLCBlcnJvcnMgYW5kIGhlbHApIGluc2lkZSBvZiBhIGBXcmFwSWZBZGRpdGlvbmFsYCBjb21wb25lbnQuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFRlbXBsYXRlUHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGaWVsZFRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZCwgbGFiZWwsIGNoaWxkcmVuLCBlcnJvcnMsIGhlbHAsIGRlc2NyaXB0aW9uLCBoaWRkZW4sIHJlcXVpcmVkLCBkaXNwbGF5TGFiZWwsIHJlZ2lzdHJ5LCB1aVNjaGVtYSB9ID0gcHJvcHM7XG4gICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICBjb25zdCBXcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgaWYgKGhpZGRlbikge1xuICAgICAgICByZXR1cm4gX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2hpZGRlbicsIGNoaWxkcmVuOiBjaGlsZHJlbiB9KTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhXcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUsIHsgLi4ucHJvcHMsIGNoaWxkcmVuOiBbZGlzcGxheUxhYmVsICYmIF9qc3goTGFiZWwsIHsgbGFiZWw6IGxhYmVsLCByZXF1aXJlZDogcmVxdWlyZWQsIGlkOiBpZCB9KSwgZGlzcGxheUxhYmVsICYmIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb24gOiBudWxsLCBjaGlsZHJlbiwgZXJyb3JzLCBoZWxwXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWVsZFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBlcnJvcklkIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgRmllbGRFcnJvclRlbXBsYXRlYCBjb21wb25lbnQgcmVuZGVycyB0aGUgZXJyb3JzIGxvY2FsIHRvIHRoZSBwYXJ0aWN1bGFyIGZpZWxkXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZEVycm9yUHJvcHNgIGZvciB0aGUgZXJyb3JzIGJlaW5nIHJlbmRlcmVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZpZWxkRXJyb3JUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgZXJyb3JzID0gW10sIGlkU2NoZW1hIH0gPSBwcm9wcztcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgaWQgPSBlcnJvcklkKGlkU2NoZW1hKTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjaGlsZHJlbjogX2pzeChcInVsXCIsIHsgaWQ6IGlkLCBjbGFzc05hbWU6ICdlcnJvci1kZXRhaWwgYnMtY2FsbG91dCBicy1jYWxsb3V0LWluZm8nLCBjaGlsZHJlbjogZXJyb3JzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoZWxlbSkgPT4gISFlbGVtKVxuICAgICAgICAgICAgICAgIC5tYXAoKGVycm9yLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChcImxpXCIsIHsgY2xhc3NOYW1lOiAndGV4dC1kYW5nZXInLCBjaGlsZHJlbjogZXJyb3IgfSwgaW5kZXgpKTtcbiAgICAgICAgICAgIH0pIH0pIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpZWxkRXJyb3JUZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgaGVscElkIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgRmllbGRIZWxwVGVtcGxhdGVgIGNvbXBvbmVudCByZW5kZXJzIGFueSBoZWxwIGRlc2lyZWQgZm9yIGEgZmllbGRcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEZpZWxkSGVscFByb3BzYCB0byBiZSByZW5kZXJlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGaWVsZEhlbHBUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgaWRTY2hlbWEsIGhlbHAgfSA9IHByb3BzO1xuICAgIGlmICghaGVscCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgaWQgPSBoZWxwSWQoaWRTY2hlbWEpO1xuICAgIGlmICh0eXBlb2YgaGVscCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFwicFwiLCB7IGlkOiBpZCwgY2xhc3NOYW1lOiAnaGVscC1ibG9jaycsIGNoaWxkcmVuOiBoZWxwIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgaWQ6IGlkLCBjbGFzc05hbWU6ICdoZWxwLWJsb2NrJywgY2hpbGRyZW46IGhlbHAgfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmllbGRIZWxwVGVtcGxhdGUuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGNhbkV4cGFuZCwgZGVzY3JpcHRpb25JZCwgZ2V0VGVtcGxhdGUsIGdldFVpT3B0aW9ucywgdGl0bGVJZCwgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBPYmplY3RGaWVsZFRlbXBsYXRlYCBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciBhbGwgdGhlIGlubmVyIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0IGFsb25nIHdpdGggdGhlXG4gKiB0aXRsZSBhbmQgZGVzY3JpcHRpb24gaWYgYXZhaWxhYmxlLiBJZiB0aGUgb2JqZWN0IGlzIGV4cGFuZGFibGUsIHRoZW4gYW4gYEFkZEJ1dHRvbmAgaXMgYWxzbyByZW5kZXJlZCBhZnRlciBhbGxcbiAqIHRoZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgT2JqZWN0RmllbGRUZW1wbGF0ZVByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gT2JqZWN0RmllbGRUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgZGVzY3JpcHRpb24sIGRpc2FibGVkLCBmb3JtRGF0YSwgaWRTY2hlbWEsIG9uQWRkQ2xpY2ssIHByb3BlcnRpZXMsIHJlYWRvbmx5LCByZWdpc3RyeSwgcmVxdWlyZWQsIHNjaGVtYSwgdGl0bGUsIHVpU2NoZW1hLCB9ID0gcHJvcHM7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgY29uc3QgVGl0bGVGaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ1RpdGxlRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICBjb25zdCBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIC8vIEJ1dHRvbiB0ZW1wbGF0ZXMgYXJlIG5vdCBvdmVycmlkZGVuIGluIHRoZSB1aVNjaGVtYVxuICAgIGNvbnN0IHsgQnV0dG9uVGVtcGxhdGVzOiB7IEFkZEJ1dHRvbiB9LCB9ID0gcmVnaXN0cnkudGVtcGxhdGVzO1xuICAgIHJldHVybiAoX2pzeHMoXCJmaWVsZHNldFwiLCB7IGlkOiBpZFNjaGVtYS4kaWQsIGNoaWxkcmVuOiBbdGl0bGUgJiYgKF9qc3goVGl0bGVGaWVsZFRlbXBsYXRlLCB7IGlkOiB0aXRsZUlkKGlkU2NoZW1hKSwgdGl0bGU6IHRpdGxlLCByZXF1aXJlZDogcmVxdWlyZWQsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSksIGRlc2NyaXB0aW9uICYmIChfanN4KERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSwgeyBpZDogZGVzY3JpcHRpb25JZChpZFNjaGVtYSksIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKSwgcHJvcGVydGllcy5tYXAoKHByb3ApID0+IHByb3AuY29udGVudCksIGNhbkV4cGFuZChzY2hlbWEsIHVpU2NoZW1hLCBmb3JtRGF0YSkgJiYgKF9qc3goQWRkQnV0dG9uLCB7IGNsYXNzTmFtZTogJ29iamVjdC1wcm9wZXJ0eS1leHBhbmQnLCBvbkNsaWNrOiBvbkFkZENsaWNrKHNjaGVtYSksIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1PYmplY3RGaWVsZFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBSRVFVSVJFRF9GSUVMRF9TWU1CT0wgPSAnKic7XG4vKiogVGhlIGBUaXRsZUZpZWxkYCBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgdGl0bGUgb2YgYSBmaWVsZFxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgVGl0bGVGaWVsZFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGl0bGVGaWVsZChwcm9wcykge1xuICAgIGNvbnN0IHsgaWQsIHRpdGxlLCByZXF1aXJlZCB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChfanN4cyhcImxlZ2VuZFwiLCB7IGlkOiBpZCwgY2hpbGRyZW46IFt0aXRsZSwgcmVxdWlyZWQgJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6ICdyZXF1aXJlZCcsIGNoaWxkcmVuOiBSRVFVSVJFRF9GSUVMRF9TWU1CT0wgfSldIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpdGxlRmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IFRyYW5zbGF0YWJsZVN0cmluZyB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBNYXJrZG93biBmcm9tICdtYXJrZG93bi10by1qc3gnO1xuLyoqIFRoZSBgVW5zdXBwb3J0ZWRGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSBpcyBvbmUgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIGJ5XG4gKiByZWFjdC1qc29uc2NoZW1hLWZvcm0uXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICovXG5mdW5jdGlvbiBVbnN1cHBvcnRlZEZpZWxkKHByb3BzKSB7XG4gICAgY29uc3QgeyBzY2hlbWEsIGlkU2NoZW1hLCByZWFzb24sIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCB7IHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgbGV0IHRyYW5zbGF0ZUVudW0gPSBUcmFuc2xhdGFibGVTdHJpbmcuVW5zdXBwb3J0ZWRGaWVsZDtcbiAgICBjb25zdCB0cmFuc2xhdGVQYXJhbXMgPSBbXTtcbiAgICBpZiAoaWRTY2hlbWEgJiYgaWRTY2hlbWEuJGlkKSB7XG4gICAgICAgIHRyYW5zbGF0ZUVudW0gPSBUcmFuc2xhdGFibGVTdHJpbmcuVW5zdXBwb3J0ZWRGaWVsZFdpdGhJZDtcbiAgICAgICAgdHJhbnNsYXRlUGFyYW1zLnB1c2goaWRTY2hlbWEuJGlkKTtcbiAgICB9XG4gICAgaWYgKHJlYXNvbikge1xuICAgICAgICB0cmFuc2xhdGVFbnVtID1cbiAgICAgICAgICAgIHRyYW5zbGF0ZUVudW0gPT09IFRyYW5zbGF0YWJsZVN0cmluZy5VbnN1cHBvcnRlZEZpZWxkXG4gICAgICAgICAgICAgICAgPyBUcmFuc2xhdGFibGVTdHJpbmcuVW5zdXBwb3J0ZWRGaWVsZFdpdGhSZWFzb25cbiAgICAgICAgICAgICAgICA6IFRyYW5zbGF0YWJsZVN0cmluZy5VbnN1cHBvcnRlZEZpZWxkV2l0aElkQW5kUmVhc29uO1xuICAgICAgICB0cmFuc2xhdGVQYXJhbXMucHVzaChyZWFzb24pO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAndW5zdXBwb3J0ZWQtZmllbGQnLCBjaGlsZHJlbjogW19qc3goXCJwXCIsIHsgY2hpbGRyZW46IF9qc3goTWFya2Rvd24sIHsgb3B0aW9uczogeyBkaXNhYmxlUGFyc2luZ1Jhd0hUTUw6IHRydWUgfSwgY2hpbGRyZW46IHRyYW5zbGF0ZVN0cmluZyh0cmFuc2xhdGVFbnVtLCB0cmFuc2xhdGVQYXJhbXMpIH0pIH0pLCBzY2hlbWEgJiYgX2pzeChcInByZVwiLCB7IGNoaWxkcmVuOiBKU09OLnN0cmluZ2lmeShzY2hlbWEsIG51bGwsIDIpIH0pXSB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBVbnN1cHBvcnRlZEZpZWxkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VW5zdXBwb3J0ZWRGaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHLCBUcmFuc2xhdGFibGVTdHJpbmcsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IExhYmVsIGZyb20gJy4vRmllbGRUZW1wbGF0ZS9MYWJlbCc7XG4vKiogVGhlIGBXcmFwSWZBZGRpdGlvbmFsYCBjb21wb25lbnQgaXMgdXNlZCBieSB0aGUgYEZpZWxkVGVtcGxhdGVgIHRvIHJlbmFtZSwgb3IgcmVtb3ZlIHByb3BlcnRpZXMgdGhhdCBhcmVcbiAqIHBhcnQgb2YgYW4gYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBwYXJ0IG9mIGEgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV3JhcElmQWRkaXRpb25hbFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZCwgY2xhc3NOYW1lcywgc3R5bGUsIGRpc2FibGVkLCBsYWJlbCwgb25LZXlDaGFuZ2UsIG9uRHJvcFByb3BlcnR5Q2xpY2ssIHJlYWRvbmx5LCByZXF1aXJlZCwgc2NoZW1hLCBjaGlsZHJlbiwgdWlTY2hlbWEsIHJlZ2lzdHJ5LCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyB0ZW1wbGF0ZXMsIHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgLy8gQnV0dG9uIHRlbXBsYXRlcyBhcmUgbm90IG92ZXJyaWRkZW4gaW4gdGhlIHVpU2NoZW1hXG4gICAgY29uc3QgeyBSZW1vdmVCdXR0b24gfSA9IHRlbXBsYXRlcy5CdXR0b25UZW1wbGF0ZXM7XG4gICAgY29uc3Qga2V5TGFiZWwgPSB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLktleUxhYmVsLCBbbGFiZWxdKTtcbiAgICBjb25zdCBhZGRpdGlvbmFsID0gQURESVRJT05BTF9QUk9QRVJUWV9GTEFHIGluIHNjaGVtYTtcbiAgICBpZiAoIWFkZGl0aW9uYWwpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLCBzdHlsZTogc3R5bGUsIGNoaWxkcmVuOiBjaGlsZHJlbiB9KSk7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcywgc3R5bGU6IHN0eWxlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdyb3cnLCBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdjb2wteHMtNSBmb3JtLWFkZGl0aW9uYWwnLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdmb3JtLWdyb3VwJywgY2hpbGRyZW46IFtfanN4KExhYmVsLCB7IGxhYmVsOiBrZXlMYWJlbCwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBpZDogYCR7aWR9LWtleWAgfSksIF9qc3goXCJpbnB1dFwiLCB7IGNsYXNzTmFtZTogJ2Zvcm0tY29udHJvbCcsIHR5cGU6ICd0ZXh0JywgaWQ6IGAke2lkfS1rZXlgLCBvbkJsdXI6ICh7IHRhcmdldCB9KSA9PiBvbktleUNoYW5nZSh0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlKSwgZGVmYXVsdFZhbHVlOiBsYWJlbCB9KV0gfSkgfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdmb3JtLWFkZGl0aW9uYWwgZm9ybS1ncm91cCBjb2wteHMtNScsIGNoaWxkcmVuOiBjaGlsZHJlbiB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2NvbC14cy0yJywgY2hpbGRyZW46IF9qc3goUmVtb3ZlQnV0dG9uLCB7IGNsYXNzTmFtZTogJ2FycmF5LWl0ZW0tcmVtb3ZlIGJ0bi1ibG9jaycsIHN0eWxlOiB7IGJvcmRlcjogJzAnIH0sIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgb25DbGljazogb25Ecm9wUHJvcGVydHlDbGljayhsYWJlbCksIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pIH0pXSB9KSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUuanMubWFwIiwiaW1wb3J0IEFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlIGZyb20gJy4vQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGUnO1xuaW1wb3J0IEFycmF5RmllbGRJdGVtVGVtcGxhdGUgZnJvbSAnLi9BcnJheUZpZWxkSXRlbVRlbXBsYXRlJztcbmltcG9ydCBBcnJheUZpZWxkVGVtcGxhdGUgZnJvbSAnLi9BcnJheUZpZWxkVGVtcGxhdGUnO1xuaW1wb3J0IEFycmF5RmllbGRUaXRsZVRlbXBsYXRlIGZyb20gJy4vQXJyYXlGaWVsZFRpdGxlVGVtcGxhdGUnO1xuaW1wb3J0IEJhc2VJbnB1dFRlbXBsYXRlIGZyb20gJy4vQmFzZUlucHV0VGVtcGxhdGUnO1xuaW1wb3J0IEJ1dHRvblRlbXBsYXRlcyBmcm9tICcuL0J1dHRvblRlbXBsYXRlcyc7XG5pbXBvcnQgRGVzY3JpcHRpb25GaWVsZCBmcm9tICcuL0Rlc2NyaXB0aW9uRmllbGQnO1xuaW1wb3J0IEVycm9yTGlzdCBmcm9tICcuL0Vycm9yTGlzdCc7XG5pbXBvcnQgRmllbGRUZW1wbGF0ZSBmcm9tICcuL0ZpZWxkVGVtcGxhdGUnO1xuaW1wb3J0IEZpZWxkRXJyb3JUZW1wbGF0ZSBmcm9tICcuL0ZpZWxkRXJyb3JUZW1wbGF0ZSc7XG5pbXBvcnQgRmllbGRIZWxwVGVtcGxhdGUgZnJvbSAnLi9GaWVsZEhlbHBUZW1wbGF0ZSc7XG5pbXBvcnQgT2JqZWN0RmllbGRUZW1wbGF0ZSBmcm9tICcuL09iamVjdEZpZWxkVGVtcGxhdGUnO1xuaW1wb3J0IFRpdGxlRmllbGQgZnJvbSAnLi9UaXRsZUZpZWxkJztcbmltcG9ydCBVbnN1cHBvcnRlZEZpZWxkIGZyb20gJy4vVW5zdXBwb3J0ZWRGaWVsZCc7XG5pbXBvcnQgV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlIGZyb20gJy4vV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlJztcbmZ1bmN0aW9uIHRlbXBsYXRlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZSxcbiAgICAgICAgQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZSxcbiAgICAgICAgQXJyYXlGaWVsZFRlbXBsYXRlLFxuICAgICAgICBBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZSxcbiAgICAgICAgQnV0dG9uVGVtcGxhdGVzOiBCdXR0b25UZW1wbGF0ZXMoKSxcbiAgICAgICAgQmFzZUlucHV0VGVtcGxhdGUsXG4gICAgICAgIERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZTogRGVzY3JpcHRpb25GaWVsZCxcbiAgICAgICAgRXJyb3JMaXN0VGVtcGxhdGU6IEVycm9yTGlzdCxcbiAgICAgICAgRmllbGRUZW1wbGF0ZSxcbiAgICAgICAgRmllbGRFcnJvclRlbXBsYXRlLFxuICAgICAgICBGaWVsZEhlbHBUZW1wbGF0ZSxcbiAgICAgICAgT2JqZWN0RmllbGRUZW1wbGF0ZSxcbiAgICAgICAgVGl0bGVGaWVsZFRlbXBsYXRlOiBUaXRsZUZpZWxkLFxuICAgICAgICBVbnN1cHBvcnRlZEZpZWxkVGVtcGxhdGU6IFVuc3VwcG9ydGVkRmllbGQsXG4gICAgICAgIFdyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZSxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgdGVtcGxhdGVzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZHVjZXIsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYXJpYURlc2NyaWJlZEJ5SWRzLCBkYXRlUmFuZ2VPcHRpb25zLCBwYXJzZURhdGVTdHJpbmcsIHRvRGF0ZVN0cmluZywgVHJhbnNsYXRhYmxlU3RyaW5nLCBnZXREYXRlRWxlbWVudFByb3BzLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmZ1bmN0aW9uIHJlYWR5Rm9yQ2hhbmdlKHN0YXRlKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc3RhdGUpLmV2ZXJ5KCh2YWx1ZSkgPT4gdmFsdWUgIT09IC0xKTtcbn1cbmZ1bmN0aW9uIERhdGVFbGVtZW50KHsgdHlwZSwgcmFuZ2UsIHZhbHVlLCBzZWxlY3QsIHJvb3RJZCwgbmFtZSwgZGlzYWJsZWQsIHJlYWRvbmx5LCBhdXRvZm9jdXMsIHJlZ2lzdHJ5LCBvbkJsdXIsIG9uRm9jdXMsIH0pIHtcbiAgICBjb25zdCBpZCA9IHJvb3RJZCArICdfJyArIHR5cGU7XG4gICAgY29uc3QgeyBTZWxlY3RXaWRnZXQgfSA9IHJlZ2lzdHJ5LndpZGdldHM7XG4gICAgcmV0dXJuIChfanN4KFNlbGVjdFdpZGdldCwgeyBzY2hlbWE6IHsgdHlwZTogJ2ludGVnZXInIH0sIGlkOiBpZCwgbmFtZTogbmFtZSwgY2xhc3NOYW1lOiAnZm9ybS1jb250cm9sJywgb3B0aW9uczogeyBlbnVtT3B0aW9uczogZGF0ZVJhbmdlT3B0aW9ucyhyYW5nZVswXSwgcmFuZ2VbMV0pIH0sIHBsYWNlaG9sZGVyOiB0eXBlLCB2YWx1ZTogdmFsdWUsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgb25DaGFuZ2U6ICh2YWx1ZSkgPT4gc2VsZWN0KHR5cGUsIHZhbHVlKSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgbGFiZWw6ICcnLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5SWRzKHJvb3RJZCkgfSkpO1xufVxuLyoqIFRoZSBgQWx0RGF0ZVdpZGdldGAgaXMgYW4gYWx0ZXJuYXRpdmUgd2lkZ2V0IGZvciByZW5kZXJpbmcgZGF0ZSBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIEFsdERhdGVXaWRnZXQoeyB0aW1lID0gZmFsc2UsIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCBvcHRpb25zLCBpZCwgbmFtZSwgcmVnaXN0cnksIG9uQmx1ciwgb25Gb2N1cywgb25DaGFuZ2UsIHZhbHVlLCB9KSB7XG4gICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIGNvbnN0IFtsYXN0VmFsdWUsIHNldExhc3RWYWx1ZV0gPSB1c2VTdGF0ZSh2YWx1ZSk7XG4gICAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VSZWR1Y2VyKChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5hY3Rpb24gfTtcbiAgICB9LCBwYXJzZURhdGVTdHJpbmcodmFsdWUsIHRpbWUpKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZVZhbHVlID0gdG9EYXRlU3RyaW5nKHN0YXRlLCB0aW1lKTtcbiAgICAgICAgaWYgKHJlYWR5Rm9yQ2hhbmdlKHN0YXRlKSAmJiBzdGF0ZVZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgLy8gVGhlIHVzZXIgY2hhbmdlZCB0aGUgZGF0ZSB0byBhIG5ldyB2YWxpZCBkYXRhIHZpYSB0aGUgY29tYm9ib3hlcywgc28gY2FsbCBvbkNoYW5nZVxuICAgICAgICAgICAgb25DaGFuZ2Uoc3RhdGVWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobGFzdFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgLy8gV2UgZ290IGEgbmV3IHZhbHVlIGluIHRoZSBwcm9wc1xuICAgICAgICAgICAgc2V0TGFzdFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIHNldFN0YXRlKHBhcnNlRGF0ZVN0cmluZyh2YWx1ZSwgdGltZSkpO1xuICAgICAgICB9XG4gICAgfSwgW3RpbWUsIHZhbHVlLCBvbkNoYW5nZSwgc3RhdGUsIGxhc3RWYWx1ZV0pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChwcm9wZXJ0eSwgdmFsdWUpID0+IHtcbiAgICAgICAgc2V0U3RhdGUoeyBbcHJvcGVydHldOiB2YWx1ZSB9KTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlU2V0Tm93ID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCByZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHBhcnNlRGF0ZVN0cmluZyhuZXcgRGF0ZSgpLnRvSlNPTigpLCB0aW1lKTtcbiAgICAgICAgb25DaGFuZ2UodG9EYXRlU3RyaW5nKG5leHRTdGF0ZSwgdGltZSkpO1xuICAgIH0sIFtkaXNhYmxlZCwgcmVhZG9ubHksIHRpbWVdKTtcbiAgICBjb25zdCBoYW5kbGVDbGVhciA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSh1bmRlZmluZWQpO1xuICAgIH0sIFtkaXNhYmxlZCwgcmVhZG9ubHksIG9uQ2hhbmdlXSk7XG4gICAgcmV0dXJuIChfanN4cyhcInVsXCIsIHsgY2xhc3NOYW1lOiAnbGlzdC1pbmxpbmUnLCBjaGlsZHJlbjogW2dldERhdGVFbGVtZW50UHJvcHMoc3RhdGUsIHRpbWUsIG9wdGlvbnMueWVhcnNSYW5nZSwgb3B0aW9ucy5mb3JtYXQpLm1hcCgoZWxlbVByb3BzLCBpKSA9PiAoX2pzeChcImxpXCIsIHsgY2xhc3NOYW1lOiAnbGlzdC1pbmxpbmUtaXRlbScsIGNoaWxkcmVuOiBfanN4KERhdGVFbGVtZW50LCB7IHJvb3RJZDogaWQsIG5hbWU6IG5hbWUsIHNlbGVjdDogaGFuZGxlQ2hhbmdlLCAuLi5lbGVtUHJvcHMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCByZWdpc3RyeTogcmVnaXN0cnksIG9uQmx1cjogb25CbHVyLCBvbkZvY3VzOiBvbkZvY3VzLCBhdXRvZm9jdXM6IGF1dG9mb2N1cyAmJiBpID09PSAwIH0pIH0sIGkpKSksIChvcHRpb25zLmhpZGVOb3dCdXR0b24gIT09ICd1bmRlZmluZWQnID8gIW9wdGlvbnMuaGlkZU5vd0J1dHRvbiA6IHRydWUpICYmIChfanN4KFwibGlcIiwgeyBjbGFzc05hbWU6ICdsaXN0LWlubGluZS1pdGVtJywgY2hpbGRyZW46IF9qc3goXCJhXCIsIHsgaHJlZjogJyMnLCBjbGFzc05hbWU6ICdidG4gYnRuLWluZm8gYnRuLW5vdycsIG9uQ2xpY2s6IGhhbmRsZVNldE5vdywgY2hpbGRyZW46IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuTm93TGFiZWwpIH0pIH0pKSwgKG9wdGlvbnMuaGlkZUNsZWFyQnV0dG9uICE9PSAndW5kZWZpbmVkJyA/ICFvcHRpb25zLmhpZGVDbGVhckJ1dHRvbiA6IHRydWUpICYmIChfanN4KFwibGlcIiwgeyBjbGFzc05hbWU6ICdsaXN0LWlubGluZS1pdGVtJywgY2hpbGRyZW46IF9qc3goXCJhXCIsIHsgaHJlZjogJyMnLCBjbGFzc05hbWU6ICdidG4gYnRuLXdhcm5pbmcgYnRuLWNsZWFyJywgb25DbGljazogaGFuZGxlQ2xlYXIsIGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkNsZWFyTGFiZWwpIH0pIH0pKV0gfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgQWx0RGF0ZVdpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFsdERhdGVXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8qKiBUaGUgYEFsdERhdGVUaW1lV2lkZ2V0YCBpcyBhbiBhbHRlcm5hdGl2ZSB3aWRnZXQgZm9yIHJlbmRlcmluZyBkYXRldGltZSBwcm9wZXJ0aWVzLlxuICogIEl0IHVzZXMgdGhlIEFsdERhdGVXaWRnZXQgZm9yIHJlbmRlcmluZywgd2l0aCB0aGUgYHRpbWVgIHByb3Agc2V0IHRvIHRydWUgYnkgZGVmYXVsdC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gQWx0RGF0ZVRpbWVXaWRnZXQoeyB0aW1lID0gdHJ1ZSwgLi4ucHJvcHMgfSkge1xuICAgIGNvbnN0IHsgQWx0RGF0ZVdpZGdldCB9ID0gcHJvcHMucmVnaXN0cnkud2lkZ2V0cztcbiAgICByZXR1cm4gX2pzeChBbHREYXRlV2lkZ2V0LCB7IHRpbWU6IHRpbWUsIC4uLnByb3BzIH0pO1xufVxuZXhwb3J0IGRlZmF1bHQgQWx0RGF0ZVRpbWVXaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BbHREYXRlVGltZVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhcmlhRGVzY3JpYmVkQnlJZHMsIGRlc2NyaXB0aW9uSWQsIGdldFRlbXBsYXRlLCBsYWJlbFZhbHVlLCBzY2hlbWFSZXF1aXJlc1RydWVWYWx1ZSwgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBDaGVja0JveFdpZGdldGAgaXMgYSB3aWRnZXQgZm9yIHJlbmRlcmluZyBib29sZWFuIHByb3BlcnRpZXMuXG4gKiAgSXQgaXMgdHlwaWNhbGx5IHVzZWQgdG8gcmVwcmVzZW50IGEgYm9vbGVhbi5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gQ2hlY2tib3hXaWRnZXQoeyBzY2hlbWEsIHVpU2NoZW1hLCBvcHRpb25zLCBpZCwgdmFsdWUsIGRpc2FibGVkLCByZWFkb25seSwgbGFiZWwsIGhpZGVMYWJlbCwgYXV0b2ZvY3VzID0gZmFsc2UsIG9uQmx1ciwgb25Gb2N1cywgb25DaGFuZ2UsIHJlZ2lzdHJ5LCB9KSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgLy8gQmVjYXVzZSBhbiB1bmNoZWNrZWQgY2hlY2tib3ggd2lsbCBjYXVzZSBodG1sNSB2YWxpZGF0aW9uIHRvIGZhaWwsIG9ubHkgYWRkXG4gICAgLy8gdGhlIFwicmVxdWlyZWRcIiBhdHRyaWJ1dGUgaWYgdGhlIGZpZWxkIHZhbHVlIG11c3QgYmUgXCJ0cnVlXCIsIGR1ZSB0byB0aGVcbiAgICAvLyBcImNvbnN0XCIgb3IgXCJlbnVtXCIga2V5d29yZHNcbiAgICBjb25zdCByZXF1aXJlZCA9IHNjaGVtYVJlcXVpcmVzVHJ1ZVZhbHVlKHNjaGVtYSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiBvbkNoYW5nZShldmVudC50YXJnZXQuY2hlY2tlZCksIFtvbkNoYW5nZV0pO1xuICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjaygoZXZlbnQpID0+IG9uQmx1cihpZCwgZXZlbnQudGFyZ2V0LmNoZWNrZWQpLCBbb25CbHVyLCBpZF0pO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiBvbkZvY3VzKGlkLCBldmVudC50YXJnZXQuY2hlY2tlZCksIFtvbkZvY3VzLCBpZF0pO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gKF9hID0gb3B0aW9ucy5kZXNjcmlwdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogc2NoZW1hLmRlc2NyaXB0aW9uO1xuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGBjaGVja2JveCAke2Rpc2FibGVkIHx8IHJlYWRvbmx5ID8gJ2Rpc2FibGVkJyA6ICcnfWAsIGNoaWxkcmVuOiBbIWhpZGVMYWJlbCAmJiAhIWRlc2NyaXB0aW9uICYmIChfanN4KERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSwgeyBpZDogZGVzY3JpcHRpb25JZChpZCksIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKSwgX2pzeHMoXCJsYWJlbFwiLCB7IGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHsgdHlwZTogJ2NoZWNrYm94JywgaWQ6IGlkLCBuYW1lOiBpZCwgY2hlY2tlZDogdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/IGZhbHNlIDogdmFsdWUsIHJlcXVpcmVkOiByZXF1aXJlZCwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5LCBhdXRvRm9jdXM6IGF1dG9mb2N1cywgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgb25CbHVyOiBoYW5kbGVCbHVyLCBvbkZvY3VzOiBoYW5kbGVGb2N1cywgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeUlkcyhpZCkgfSksIGxhYmVsVmFsdWUoX2pzeChcInNwYW5cIiwgeyBjaGlsZHJlbjogbGFiZWwgfSksIGhpZGVMYWJlbCldIH0pXSB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFdpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNoZWNrYm94V2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFyaWFEZXNjcmliZWRCeUlkcywgZW51bU9wdGlvbnNEZXNlbGVjdFZhbHVlLCBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQsIGVudW1PcHRpb25zU2VsZWN0VmFsdWUsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCwgb3B0aW9uSWQsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQ2hlY2tib3hlc1dpZGdldGAgaXMgYSB3aWRnZXQgZm9yIHJlbmRlcmluZyBjaGVja2JveCBncm91cHMuXG4gKiAgSXQgaXMgdHlwaWNhbGx5IHVzZWQgdG8gcmVwcmVzZW50IGFuIGFycmF5IG9mIGVudW1zLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBDaGVja2JveGVzV2lkZ2V0KHsgaWQsIGRpc2FibGVkLCBvcHRpb25zOiB7IGlubGluZSA9IGZhbHNlLCBlbnVtT3B0aW9ucywgZW51bURpc2FibGVkLCBlbXB0eVZhbHVlIH0sIHZhbHVlLCBhdXRvZm9jdXMgPSBmYWxzZSwgcmVhZG9ubHksIG9uQ2hhbmdlLCBvbkJsdXIsIG9uRm9jdXMsIH0pIHtcbiAgICBjb25zdCBjaGVja2JveGVzVmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldCB9KSA9PiBvbkJsdXIoaWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlLCBlbnVtT3B0aW9ucywgZW1wdHlWYWx1ZSkpLCBbb25CbHVyLCBpZF0pO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0IH0pID0+IG9uRm9jdXMoaWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlLCBlbnVtT3B0aW9ucywgZW1wdHlWYWx1ZSkpLCBbb25Gb2N1cywgaWRdKTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdjaGVja2JveGVzJywgaWQ6IGlkLCBjaGlsZHJlbjogQXJyYXkuaXNBcnJheShlbnVtT3B0aW9ucykgJiZcbiAgICAgICAgICAgIGVudW1PcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQob3B0aW9uLnZhbHVlLCBjaGVja2JveGVzVmFsdWVzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtRGlzYWJsZWQgPSBBcnJheS5pc0FycmF5KGVudW1EaXNhYmxlZCkgJiYgZW51bURpc2FibGVkLmluZGV4T2Yob3B0aW9uLnZhbHVlKSAhPT0gLTE7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWRDbHMgPSBkaXNhYmxlZCB8fCBpdGVtRGlzYWJsZWQgfHwgcmVhZG9ubHkgPyAnZGlzYWJsZWQnIDogJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2UoZW51bU9wdGlvbnNTZWxlY3RWYWx1ZShpbmRleCwgY2hlY2tib3hlc1ZhbHVlcywgZW51bU9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKGVudW1PcHRpb25zRGVzZWxlY3RWYWx1ZShpbmRleCwgY2hlY2tib3hlc1ZhbHVlcywgZW51bU9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2tib3ggPSAoX2pzeHMoXCJzcGFuXCIsIHsgY2hpbGRyZW46IFtfanN4KFwiaW5wdXRcIiwgeyB0eXBlOiAnY2hlY2tib3gnLCBpZDogb3B0aW9uSWQoaWQsIGluZGV4KSwgbmFtZTogaWQsIGNoZWNrZWQ6IGNoZWNrZWQsIHZhbHVlOiBTdHJpbmcoaW5kZXgpLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgaXRlbURpc2FibGVkIHx8IHJlYWRvbmx5LCBhdXRvRm9jdXM6IGF1dG9mb2N1cyAmJiBpbmRleCA9PT0gMCwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgb25CbHVyOiBoYW5kbGVCbHVyLCBvbkZvY3VzOiBoYW5kbGVGb2N1cywgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeUlkcyhpZCkgfSksIF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IG9wdGlvbi5sYWJlbCB9KV0gfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmxpbmUgPyAoX2pzeChcImxhYmVsXCIsIHsgY2xhc3NOYW1lOiBgY2hlY2tib3gtaW5saW5lICR7ZGlzYWJsZWRDbHN9YCwgY2hpbGRyZW46IGNoZWNrYm94IH0sIGluZGV4KSkgOiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogYGNoZWNrYm94ICR7ZGlzYWJsZWRDbHN9YCwgY2hpbGRyZW46IF9qc3goXCJsYWJlbFwiLCB7IGNoaWxkcmVuOiBjaGVja2JveCB9KSB9LCBpbmRleCkpO1xuICAgICAgICAgICAgfSkgfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hlc1dpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNoZWNrYm94ZXNXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQ29sb3JXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGBjb2xvcmAgYW5kIGRpc2FibGVzIGl0IHdoZW4gaXQgaXNcbiAqIGVpdGhlciBkaXNhYmxlZCBvciByZWFkb25seS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ29sb3JXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IGRpc2FibGVkLCByZWFkb25seSwgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiBfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IHR5cGU6ICdjb2xvcicsIC4uLnByb3BzLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHkgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db2xvcldpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYERhdGVXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGBkYXRlYCBhbmQgdHJhbnNmb3Jtc1xuICogdGhlIHZhbHVlIHRvIHVuZGVmaW5lZCB3aGVuIGl0IGlzIGZhbHN5IGR1cmluZyB0aGUgYG9uQ2hhbmdlYCBoYW5kbGluZy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0ZVdpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygodmFsdWUpID0+IG9uQ2hhbmdlKHZhbHVlIHx8IHVuZGVmaW5lZCksIFtvbkNoYW5nZV0pO1xuICAgIHJldHVybiBfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IHR5cGU6ICdkYXRlJywgLi4ucHJvcHMsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXRlV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSwgbG9jYWxUb1VUQywgdXRjVG9Mb2NhbCwgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBEYXRlVGltZVdpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgY2hhbmdpbmcgdGhlIHR5cGUgdG8gYGRhdGV0aW1lLWxvY2FsYCBhbmQgdHJhbnNmb3Jtc1xuICogdGhlIHZhbHVlIHRvL2Zyb20gdXRjIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSB1dGlsaXR5IGZ1bmN0aW9ucy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0ZVRpbWVXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9uQ2hhbmdlLCB2YWx1ZSwgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiAoX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAnZGF0ZXRpbWUtbG9jYWwnLCAuLi5wcm9wcywgdmFsdWU6IHV0Y1RvTG9jYWwodmFsdWUpLCBvbkNoYW5nZTogKHZhbHVlKSA9PiBvbkNoYW5nZShsb2NhbFRvVVRDKHZhbHVlKSkgfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGF0ZVRpbWVXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgRW1haWxXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGBlbWFpbGAuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEVtYWlsV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ2VtYWlsJywgLi4ucHJvcHMgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1FbWFpbFdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGRhdGFVUkl0b0Jsb2IsIGdldFRlbXBsYXRlLCBUcmFuc2xhdGFibGVTdHJpbmcsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IE1hcmtkb3duIGZyb20gJ21hcmtkb3duLXRvLWpzeCc7XG5mdW5jdGlvbiBhZGROYW1lVG9EYXRhVVJMKGRhdGFVUkwsIG5hbWUpIHtcbiAgICBpZiAoZGF0YVVSTCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFVUkwucmVwbGFjZSgnO2Jhc2U2NCcsIGA7bmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudChuYW1lKX07YmFzZTY0YCk7XG59XG5mdW5jdGlvbiBwcm9jZXNzRmlsZShmaWxlKSB7XG4gICAgY29uc3QgeyBuYW1lLCBzaXplLCB0eXBlIH0gPSBmaWxlO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyB3aW5kb3cuRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiAoKF9hID0gZXZlbnQudGFyZ2V0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVzdWx0KSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVVSTDogYWRkTmFtZVRvRGF0YVVSTChldmVudC50YXJnZXQucmVzdWx0LCBuYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhVVJMOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHByb2Nlc3NGaWxlcyhmaWxlcykge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChBcnJheS5mcm9tKGZpbGVzKS5tYXAocHJvY2Vzc0ZpbGUpKTtcbn1cbmZ1bmN0aW9uIEZpbGVJbmZvUHJldmlldyh7IGZpbGVJbmZvLCByZWdpc3RyeSwgfSkge1xuICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCB7IGRhdGFVUkwsIHR5cGUsIG5hbWUgfSA9IGZpbGVJbmZvO1xuICAgIGlmICghZGF0YVVSTCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gSWYgdHlwZSBpcyBKUEVHIG9yIFBORyB0aGVuIHNob3cgaW1hZ2UgcHJldmlldy5cbiAgICAvLyBPcmlnaW5hbGx5LCBhbnkgdHlwZSBvZiBpbWFnZSB3YXMgc3VwcG9ydGVkLCBidXQgdGhpcyB3YXMgY2hhbmdlZCBpbnRvIGEgd2hpdGVsaXN0XG4gICAgLy8gc2luY2UgU1ZHcyBhbmQgYW5pbWF0ZWQgR0lGcyBhcmUgYWxzbyBpbWFnZXMsIHdoaWNoIGFyZSBnZW5lcmFsbHkgY29uc2lkZXJlZCBhIHNlY3VyaXR5IHJpc2suXG4gICAgaWYgKFsnaW1hZ2UvanBlZycsICdpbWFnZS9wbmcnXS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICByZXR1cm4gX2pzeChcImltZ1wiLCB7IHNyYzogZGF0YVVSTCwgc3R5bGU6IHsgbWF4V2lkdGg6ICcxMDAlJyB9LCBjbGFzc05hbWU6ICdmaWxlLXByZXZpZXcnIH0pO1xuICAgIH1cbiAgICAvLyBvdGhlcndpc2UsIGxldCB1c2VycyBkb3dubG9hZCBmaWxlXG4gICAgcmV0dXJuIChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFsnICcsIF9qc3goXCJhXCIsIHsgZG93bmxvYWQ6IGBwcmV2aWV3LSR7bmFtZX1gLCBocmVmOiBkYXRhVVJMLCBjbGFzc05hbWU6ICdmaWxlLWRvd25sb2FkJywgY2hpbGRyZW46IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuUHJldmlld0xhYmVsKSB9KV0gfSkpO1xufVxuZnVuY3Rpb24gRmlsZXNJbmZvKHsgZmlsZXNJbmZvLCByZWdpc3RyeSwgcHJldmlldywgb25SZW1vdmUsIG9wdGlvbnMsIH0pIHtcbiAgICBpZiAoZmlsZXNJbmZvLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIGNvbnN0IHsgUmVtb3ZlQnV0dG9uIH0gPSBnZXRUZW1wbGF0ZSgnQnV0dG9uVGVtcGxhdGVzJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiAoX2pzeChcInVsXCIsIHsgY2xhc3NOYW1lOiAnZmlsZS1pbmZvJywgY2hpbGRyZW46IGZpbGVzSW5mby5tYXAoKGZpbGVJbmZvLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbmFtZSwgc2l6ZSwgdHlwZSB9ID0gZmlsZUluZm87XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVSZW1vdmUgPSAoKSA9PiBvblJlbW92ZShrZXkpO1xuICAgICAgICAgICAgcmV0dXJuIChfanN4cyhcImxpXCIsIHsgY2hpbGRyZW46IFtfanN4KE1hcmtkb3duLCB7IGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkZpbGVzSW5mbywgW25hbWUsIHR5cGUsIFN0cmluZyhzaXplKV0pIH0pLCBwcmV2aWV3ICYmIF9qc3goRmlsZUluZm9QcmV2aWV3LCB7IGZpbGVJbmZvOiBmaWxlSW5mbywgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pLCBfanN4KFJlbW92ZUJ1dHRvbiwgeyBvbkNsaWNrOiBoYW5kbGVSZW1vdmUsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KV0gfSwga2V5KSk7XG4gICAgICAgIH0pIH0pKTtcbn1cbmZ1bmN0aW9uIGV4dHJhY3RGaWxlSW5mbyhkYXRhVVJMcykge1xuICAgIHJldHVybiBkYXRhVVJMcy5yZWR1Y2UoKGFjYywgZGF0YVVSTCkgPT4ge1xuICAgICAgICBpZiAoIWRhdGFVUkwpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgYmxvYiwgbmFtZSB9ID0gZGF0YVVSSXRvQmxvYihkYXRhVVJMKTtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogYmxvYi5zaXplLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBibG9iLnR5cGUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIEludmFsaWQgZGF0YVVSSSwgc28ganVzdCBpZ25vcmUgaXQuXG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgfSwgW10pO1xufVxuLyoqXG4gKiAgVGhlIGBGaWxlV2lkZ2V0YCBpcyBhIHdpZGdldCBmb3IgcmVuZGVyaW5nIGZpbGUgdXBsb2FkIGZpZWxkcy5cbiAqICBJdCBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIGEgc3RyaW5nIHByb3BlcnR5IHdpdGggZGF0YS11cmwgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBGaWxlV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBkaXNhYmxlZCwgcmVhZG9ubHksIHJlcXVpcmVkLCBtdWx0aXBsZSwgb25DaGFuZ2UsIHZhbHVlLCBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQudGFyZ2V0LmZpbGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gRHVlIHRvIHZhcmlhbmNlcyBpbiB0aGVtZXMsIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBmaWxlcyBmb3IgdGhlIGFycmF5IGNhc2Ugbm93IGhhcHBlbnMgb25lIGZpbGUgYXQgYSB0aW1lLlxuICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9uJ3QgcGFzcyBgbXVsdGlwbGVgIGludG8gdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgYW55bW9yZS4gSW5zdGVhZCwgd2UgZGVhbCB3aXRoIHRoZSBzaW5nbGVcbiAgICAgICAgLy8gZmlsZSBpbiBlYWNoIGV2ZW50IGFuZCBjb25jYXRlbmF0ZSB0aGVtIHRvZ2V0aGVyIG91cnNlbHZlc1xuICAgICAgICBwcm9jZXNzRmlsZXMoZXZlbnQudGFyZ2V0LmZpbGVzKS50aGVuKChmaWxlc0luZm9FdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBmaWxlc0luZm9FdmVudC5tYXAoKGZpbGVJbmZvKSA9PiBmaWxlSW5mby5kYXRhVVJMKTtcbiAgICAgICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlLmNvbmNhdChuZXdWYWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UobmV3VmFsdWVbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LCBbbXVsdGlwbGUsIHZhbHVlLCBvbkNoYW5nZV0pO1xuICAgIGNvbnN0IGZpbGVzSW5mbyA9IHVzZU1lbW8oKCkgPT4gZXh0cmFjdEZpbGVJbmZvKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdKSwgW3ZhbHVlXSk7XG4gICAgY29uc3Qgcm1GaWxlID0gdXNlQ2FsbGJhY2soKGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZS5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICAgICAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9LCBbbXVsdGlwbGUsIHZhbHVlLCBvbkNoYW5nZV0pO1xuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjaGlsZHJlbjogW19qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgLi4ucHJvcHMsIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgdHlwZTogJ2ZpbGUnLCByZXF1aXJlZDogdmFsdWUgPyBmYWxzZSA6IHJlcXVpcmVkLCBvbkNoYW5nZU92ZXJyaWRlOiBoYW5kbGVDaGFuZ2UsIHZhbHVlOiAnJywgYWNjZXB0OiBvcHRpb25zLmFjY2VwdCA/IFN0cmluZyhvcHRpb25zLmFjY2VwdCkgOiB1bmRlZmluZWQgfSksIF9qc3goRmlsZXNJbmZvLCB7IGZpbGVzSW5mbzogZmlsZXNJbmZvLCBvblJlbW92ZTogcm1GaWxlLCByZWdpc3RyeTogcmVnaXN0cnksIHByZXZpZXc6IG9wdGlvbnMuZmlsZVByZXZpZXcsIG9wdGlvbnM6IG9wdGlvbnMgfSldIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IEZpbGVXaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWxlV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vKiogVGhlIGBIaWRkZW5XaWRnZXRgIGlzIGEgd2lkZ2V0IGZvciByZW5kZXJpbmcgYSBoaWRkZW4gaW5wdXQgZmllbGQuXG4gKiAgSXQgaXMgdHlwaWNhbGx5IHVzZWQgYnkgc2V0dGluZyB0eXBlIHRvIFwiaGlkZGVuXCIuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIEhpZGRlbldpZGdldCh7IGlkLCB2YWx1ZSwgfSkge1xuICAgIHJldHVybiBfanN4KFwiaW5wdXRcIiwgeyB0eXBlOiAnaGlkZGVuJywgaWQ6IGlkLCBuYW1lOiBpZCwgdmFsdWU6IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6IHZhbHVlIH0pO1xufVxuZXhwb3J0IGRlZmF1bHQgSGlkZGVuV2lkZ2V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SGlkZGVuV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFBhc3N3b3JkV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgcGFzc3dvcmRgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYXNzd29yZFdpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiBfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IHR5cGU6ICdwYXNzd29yZCcsIC4uLnByb3BzIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGFzc3dvcmRXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYXJpYURlc2NyaWJlZEJ5SWRzLCBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCwgb3B0aW9uSWQsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgUmFkaW9XaWRnZXRgIGlzIGEgd2lkZ2V0IGZvciByZW5kZXJpbmcgYSByYWRpbyBncm91cC5cbiAqICBJdCBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIGEgc3RyaW5nIHByb3BlcnR5IGNvbnN0cmFpbmVkIHdpdGggZW51bSBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBSYWRpb1dpZGdldCh7IG9wdGlvbnMsIHZhbHVlLCByZXF1aXJlZCwgZGlzYWJsZWQsIHJlYWRvbmx5LCBhdXRvZm9jdXMgPSBmYWxzZSwgb25CbHVyLCBvbkZvY3VzLCBvbkNoYW5nZSwgaWQsIH0pIHtcbiAgICBjb25zdCB7IGVudW1PcHRpb25zLCBlbnVtRGlzYWJsZWQsIGlubGluZSwgZW1wdHlWYWx1ZSB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0IH0pID0+IG9uQmx1cihpZCwgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KHRhcmdldCAmJiB0YXJnZXQudmFsdWUsIGVudW1PcHRpb25zLCBlbXB0eVZhbHVlKSksIFtvbkJsdXIsIGlkXSk7XG4gICAgY29uc3QgaGFuZGxlRm9jdXMgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25Gb2N1cyhpZCwgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KHRhcmdldCAmJiB0YXJnZXQudmFsdWUsIGVudW1PcHRpb25zLCBlbXB0eVZhbHVlKSksIFtvbkZvY3VzLCBpZF0pO1xuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2ZpZWxkLXJhZGlvLWdyb3VwJywgaWQ6IGlkLCBjaGlsZHJlbjogQXJyYXkuaXNBcnJheShlbnVtT3B0aW9ucykgJiZcbiAgICAgICAgICAgIGVudW1PcHRpb25zLm1hcCgob3B0aW9uLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2tlZCA9IGVudW1PcHRpb25zSXNTZWxlY3RlZChvcHRpb24udmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtRGlzYWJsZWQgPSBBcnJheS5pc0FycmF5KGVudW1EaXNhYmxlZCkgJiYgZW51bURpc2FibGVkLmluZGV4T2Yob3B0aW9uLnZhbHVlKSAhPT0gLTE7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWRDbHMgPSBkaXNhYmxlZCB8fCBpdGVtRGlzYWJsZWQgfHwgcmVhZG9ubHkgPyAnZGlzYWJsZWQnIDogJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKCkgPT4gb25DaGFuZ2Uob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCByYWRpbyA9IChfanN4cyhcInNwYW5cIiwgeyBjaGlsZHJlbjogW19qc3goXCJpbnB1dFwiLCB7IHR5cGU6ICdyYWRpbycsIGlkOiBvcHRpb25JZChpZCwgaSksIGNoZWNrZWQ6IGNoZWNrZWQsIG5hbWU6IGlkLCByZXF1aXJlZDogcmVxdWlyZWQsIHZhbHVlOiBTdHJpbmcoaSksIGRpc2FibGVkOiBkaXNhYmxlZCB8fCBpdGVtRGlzYWJsZWQgfHwgcmVhZG9ubHksIGF1dG9Gb2N1czogYXV0b2ZvY3VzICYmIGkgPT09IDAsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Gb2N1czogaGFuZGxlRm9jdXMsIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnlJZHMoaWQpIH0pLCBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiBvcHRpb24ubGFiZWwgfSldIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lID8gKF9qc3goXCJsYWJlbFwiLCB7IGNsYXNzTmFtZTogYHJhZGlvLWlubGluZSAke2Rpc2FibGVkQ2xzfWAsIGNoaWxkcmVuOiByYWRpbyB9LCBpKSkgOiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogYHJhZGlvICR7ZGlzYWJsZWRDbHN9YCwgY2hpbGRyZW46IF9qc3goXCJsYWJlbFwiLCB7IGNoaWxkcmVuOiByYWRpbyB9KSB9LCBpKSk7XG4gICAgICAgICAgICB9KSB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBSYWRpb1dpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhZGlvV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vKiogVGhlIGBSYW5nZVdpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgY2hhbmdpbmcgdGhlIHR5cGUgdG8gYHJhbmdlYCBhbmQgd3JhcHBpbmcgdGhlIHJlc3VsdFxuICogaW4gYSBkaXYsIHdpdGggdGhlIHZhbHVlIGFsb25nIHNpZGUgaXQuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJhbmdlV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyB2YWx1ZSwgcmVnaXN0cnk6IHsgdGVtcGxhdGVzOiB7IEJhc2VJbnB1dFRlbXBsYXRlIH0sIH0sIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnZmllbGQtcmFuZ2Utd3JhcHBlcicsIGNoaWxkcmVuOiBbX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAncmFuZ2UnLCAuLi5wcm9wcyB9KSwgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6ICdyYW5nZS12aWV3JywgY2hpbGRyZW46IHZhbHVlIH0pXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SYW5nZVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhcmlhRGVzY3JpYmVkQnlJZHMsIGVudW1PcHRpb25zSW5kZXhGb3JWYWx1ZSwgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4LCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmZ1bmN0aW9uIGdldFZhbHVlKGV2ZW50LCBtdWx0aXBsZSkge1xuICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShldmVudC50YXJnZXQub3B0aW9ucylcbiAgICAgICAgICAgIC5zbGljZSgpXG4gICAgICAgICAgICAuZmlsdGVyKChvKSA9PiBvLnNlbGVjdGVkKVxuICAgICAgICAgICAgLm1hcCgobykgPT4gby52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBldmVudC50YXJnZXQudmFsdWU7XG59XG4vKiogVGhlIGBTZWxlY3RXaWRnZXRgIGlzIGEgd2lkZ2V0IGZvciByZW5kZXJpbmcgZHJvcGRvd25zLlxuICogIEl0IGlzIHR5cGljYWxseSB1c2VkIHdpdGggc3RyaW5nIHByb3BlcnRpZXMgY29uc3RyYWluZWQgd2l0aCBlbnVtIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIFNlbGVjdFdpZGdldCh7IHNjaGVtYSwgaWQsIG9wdGlvbnMsIHZhbHVlLCByZXF1aXJlZCwgZGlzYWJsZWQsIHJlYWRvbmx5LCBtdWx0aXBsZSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cywgcGxhY2Vob2xkZXIsIH0pIHtcbiAgICBjb25zdCB7IGVudW1PcHRpb25zLCBlbnVtRGlzYWJsZWQsIGVtcHR5VmFsdWU6IG9wdEVtcHR5VmFsIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGVtcHR5VmFsdWUgPSBtdWx0aXBsZSA/IFtdIDogJyc7XG4gICAgY29uc3QgaGFuZGxlRm9jdXMgPSB1c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBnZXRWYWx1ZShldmVudCwgbXVsdGlwbGUpO1xuICAgICAgICByZXR1cm4gb25Gb2N1cyhpZCwgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KG5ld1ZhbHVlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWwpKTtcbiAgICB9LCBbb25Gb2N1cywgaWQsIHNjaGVtYSwgbXVsdGlwbGUsIGVudW1PcHRpb25zLCBvcHRFbXB0eVZhbF0pO1xuICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBnZXRWYWx1ZShldmVudCwgbXVsdGlwbGUpO1xuICAgICAgICByZXR1cm4gb25CbHVyKGlkLCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgobmV3VmFsdWUsIGVudW1PcHRpb25zLCBvcHRFbXB0eVZhbCkpO1xuICAgIH0sIFtvbkJsdXIsIGlkLCBzY2hlbWEsIG11bHRpcGxlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWxdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBnZXRWYWx1ZShldmVudCwgbXVsdGlwbGUpO1xuICAgICAgICByZXR1cm4gb25DaGFuZ2UoZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KG5ld1ZhbHVlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWwpKTtcbiAgICB9LCBbb25DaGFuZ2UsIHNjaGVtYSwgbXVsdGlwbGUsIGVudW1PcHRpb25zLCBvcHRFbXB0eVZhbF0pO1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXhlcyA9IGVudW1PcHRpb25zSW5kZXhGb3JWYWx1ZSh2YWx1ZSwgZW51bU9wdGlvbnMsIG11bHRpcGxlKTtcbiAgICBjb25zdCBzaG93UGxhY2Vob2xkZXJPcHRpb24gPSAhbXVsdGlwbGUgJiYgc2NoZW1hLmRlZmF1bHQgPT09IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKF9qc3hzKFwic2VsZWN0XCIsIHsgaWQ6IGlkLCBuYW1lOiBpZCwgbXVsdGlwbGU6IG11bHRpcGxlLCBjbGFzc05hbWU6ICdmb3JtLWNvbnRyb2wnLCB2YWx1ZTogdHlwZW9mIHNlbGVjdGVkSW5kZXhlcyA9PT0gJ3VuZGVmaW5lZCcgPyBlbXB0eVZhbHVlIDogc2VsZWN0ZWRJbmRleGVzLCByZXF1aXJlZDogcmVxdWlyZWQsIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgYXV0b0ZvY3VzOiBhdXRvZm9jdXMsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Gb2N1czogaGFuZGxlRm9jdXMsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnlJZHMoaWQpLCBjaGlsZHJlbjogW3Nob3dQbGFjZWhvbGRlck9wdGlvbiAmJiBfanN4KFwib3B0aW9uXCIsIHsgdmFsdWU6ICcnLCBjaGlsZHJlbjogcGxhY2Vob2xkZXIgfSksIEFycmF5LmlzQXJyYXkoZW51bU9wdGlvbnMpICYmXG4gICAgICAgICAgICAgICAgZW51bU9wdGlvbnMubWFwKCh7IHZhbHVlLCBsYWJlbCB9LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gZW51bURpc2FibGVkICYmIGVudW1EaXNhYmxlZC5pbmRleE9mKHZhbHVlKSAhPT0gLTE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChcIm9wdGlvblwiLCB7IHZhbHVlOiBTdHJpbmcoaSksIGRpc2FibGVkOiBkaXNhYmxlZCwgY2hpbGRyZW46IGxhYmVsIH0sIGkpKTtcbiAgICAgICAgICAgICAgICB9KV0gfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgU2VsZWN0V2lkZ2V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VsZWN0V2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFyaWFEZXNjcmliZWRCeUlkcyB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFRleHRhcmVhV2lkZ2V0YCBpcyBhIHdpZGdldCBmb3IgcmVuZGVyaW5nIGlucHV0IGZpZWxkcyBhcyB0ZXh0YXJlYS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gVGV4dGFyZWFXaWRnZXQoeyBpZCwgb3B0aW9ucyA9IHt9LCBwbGFjZWhvbGRlciwgdmFsdWUsIHJlcXVpcmVkLCBkaXNhYmxlZCwgcmVhZG9ubHksIGF1dG9mb2N1cyA9IGZhbHNlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzLCB9KSB7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkgPT4gb25DaGFuZ2UodmFsdWUgPT09ICcnID8gb3B0aW9ucy5lbXB0eVZhbHVlIDogdmFsdWUpLCBbb25DaGFuZ2UsIG9wdGlvbnMuZW1wdHlWYWx1ZV0pO1xuICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25CbHVyKGlkLCB0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlKSwgW29uQmx1ciwgaWRdKTtcbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldCB9KSA9PiBvbkZvY3VzKGlkLCB0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlKSwgW2lkLCBvbkZvY3VzXSk7XG4gICAgcmV0dXJuIChfanN4KFwidGV4dGFyZWFcIiwgeyBpZDogaWQsIG5hbWU6IGlkLCBjbGFzc05hbWU6ICdmb3JtLWNvbnRyb2wnLCB2YWx1ZTogdmFsdWUgPyB2YWx1ZSA6ICcnLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHJlcXVpcmVkOiByZXF1aXJlZCwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkT25seTogcmVhZG9ubHksIGF1dG9Gb2N1czogYXV0b2ZvY3VzLCByb3dzOiBvcHRpb25zLnJvd3MsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Gb2N1czogaGFuZGxlRm9jdXMsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnlJZHMoaWQpIH0pKTtcbn1cblRleHRhcmVhV2lkZ2V0LmRlZmF1bHRQcm9wcyA9IHtcbiAgICBhdXRvZm9jdXM6IGZhbHNlLFxuICAgIG9wdGlvbnM6IHt9LFxufTtcbmV4cG9ydCBkZWZhdWx0IFRleHRhcmVhV2lkZ2V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dGFyZWFXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgVGV4dFdpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRleHRXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyAuLi5wcm9wcyB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRleHRXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBUaW1lV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgdGltZWAgYW5kIHRyYW5zZm9ybXNcbiAqIHRoZSB2YWx1ZSB0byB1bmRlZmluZWQgd2hlbiBpdCBpcyBmYWxzeSBkdXJpbmcgdGhlIGBvbkNoYW5nZWAgaGFuZGxpbmcuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRpbWVXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9uQ2hhbmdlLCBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHZhbHVlKSA9PiBvbkNoYW5nZSh2YWx1ZSA/IGAke3ZhbHVlfTowMGAgOiB1bmRlZmluZWQpLCBbb25DaGFuZ2VdKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAndGltZScsIC4uLnByb3BzLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBVUkxXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGB1cmxgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBVUkxXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAndXJsJywgLi4ucHJvcHMgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1VUkxXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgVXBEb3duV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgbnVtYmVyYC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVXBEb3duV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ251bWJlcicsIC4uLnByb3BzIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VXBEb3duV2lkZ2V0LmpzLm1hcCIsImltcG9ydCBBbHREYXRlV2lkZ2V0IGZyb20gJy4vQWx0RGF0ZVdpZGdldCc7XG5pbXBvcnQgQWx0RGF0ZVRpbWVXaWRnZXQgZnJvbSAnLi9BbHREYXRlVGltZVdpZGdldCc7XG5pbXBvcnQgQ2hlY2tib3hXaWRnZXQgZnJvbSAnLi9DaGVja2JveFdpZGdldCc7XG5pbXBvcnQgQ2hlY2tib3hlc1dpZGdldCBmcm9tICcuL0NoZWNrYm94ZXNXaWRnZXQnO1xuaW1wb3J0IENvbG9yV2lkZ2V0IGZyb20gJy4vQ29sb3JXaWRnZXQnO1xuaW1wb3J0IERhdGVXaWRnZXQgZnJvbSAnLi9EYXRlV2lkZ2V0JztcbmltcG9ydCBEYXRlVGltZVdpZGdldCBmcm9tICcuL0RhdGVUaW1lV2lkZ2V0JztcbmltcG9ydCBFbWFpbFdpZGdldCBmcm9tICcuL0VtYWlsV2lkZ2V0JztcbmltcG9ydCBGaWxlV2lkZ2V0IGZyb20gJy4vRmlsZVdpZGdldCc7XG5pbXBvcnQgSGlkZGVuV2lkZ2V0IGZyb20gJy4vSGlkZGVuV2lkZ2V0JztcbmltcG9ydCBQYXNzd29yZFdpZGdldCBmcm9tICcuL1Bhc3N3b3JkV2lkZ2V0JztcbmltcG9ydCBSYWRpb1dpZGdldCBmcm9tICcuL1JhZGlvV2lkZ2V0JztcbmltcG9ydCBSYW5nZVdpZGdldCBmcm9tICcuL1JhbmdlV2lkZ2V0JztcbmltcG9ydCBTZWxlY3RXaWRnZXQgZnJvbSAnLi9TZWxlY3RXaWRnZXQnO1xuaW1wb3J0IFRleHRhcmVhV2lkZ2V0IGZyb20gJy4vVGV4dGFyZWFXaWRnZXQnO1xuaW1wb3J0IFRleHRXaWRnZXQgZnJvbSAnLi9UZXh0V2lkZ2V0JztcbmltcG9ydCBUaW1lV2lkZ2V0IGZyb20gJy4vVGltZVdpZGdldCc7XG5pbXBvcnQgVVJMV2lkZ2V0IGZyb20gJy4vVVJMV2lkZ2V0JztcbmltcG9ydCBVcERvd25XaWRnZXQgZnJvbSAnLi9VcERvd25XaWRnZXQnO1xuZnVuY3Rpb24gd2lkZ2V0cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBBbHREYXRlV2lkZ2V0LFxuICAgICAgICBBbHREYXRlVGltZVdpZGdldCxcbiAgICAgICAgQ2hlY2tib3hXaWRnZXQsXG4gICAgICAgIENoZWNrYm94ZXNXaWRnZXQsXG4gICAgICAgIENvbG9yV2lkZ2V0LFxuICAgICAgICBEYXRlV2lkZ2V0LFxuICAgICAgICBEYXRlVGltZVdpZGdldCxcbiAgICAgICAgRW1haWxXaWRnZXQsXG4gICAgICAgIEZpbGVXaWRnZXQsXG4gICAgICAgIEhpZGRlbldpZGdldCxcbiAgICAgICAgUGFzc3dvcmRXaWRnZXQsXG4gICAgICAgIFJhZGlvV2lkZ2V0LFxuICAgICAgICBSYW5nZVdpZGdldCxcbiAgICAgICAgU2VsZWN0V2lkZ2V0LFxuICAgICAgICBUZXh0V2lkZ2V0LFxuICAgICAgICBUZXh0YXJlYVdpZGdldCxcbiAgICAgICAgVGltZVdpZGdldCxcbiAgICAgICAgVXBEb3duV2lkZ2V0LFxuICAgICAgICBVUkxXaWRnZXQsXG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IHdpZGdldHM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgeyBlbmdsaXNoU3RyaW5nVHJhbnNsYXRvciB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBmaWVsZHMgZnJvbSAnLi9jb21wb25lbnRzL2ZpZWxkcyc7XG5pbXBvcnQgdGVtcGxhdGVzIGZyb20gJy4vY29tcG9uZW50cy90ZW1wbGF0ZXMnO1xuaW1wb3J0IHdpZGdldHMgZnJvbSAnLi9jb21wb25lbnRzL3dpZGdldHMnO1xuLyoqIFRoZSBkZWZhdWx0IHJlZ2lzdHJ5IGNvbnNpc3RzIG9mIGFsbCB0aGUgZmllbGRzLCB0ZW1wbGF0ZXMgYW5kIHdpZGdldHMgcHJvdmlkZWQgaW4gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24sXG4gKiBwbHVzIGFuIGVtcHR5IGByb290U2NoZW1hYCBhbmQgYGZvcm1Db250ZXh0LiBXZSBvbWl0IHNjaGVtYVV0aWxzIGhlcmUgYmVjYXVzZSBpdCBjYW5ub3QgYmUgZGVmYXVsdGVkIHdpdGhvdXQgYVxuICogcm9vdFNjaGVtYSBhbmQgdmFsaWRhdG9yLiBJdCB3aWxsIGJlIGFkZGVkIGludG8gdGhlIGNvbXB1dGVkIHJlZ2lzdHJ5IGxhdGVyIGluIHRoZSBGb3JtLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREZWZhdWx0UmVnaXN0cnkoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZmllbGRzOiBmaWVsZHMoKSxcbiAgICAgICAgdGVtcGxhdGVzOiB0ZW1wbGF0ZXMoKSxcbiAgICAgICAgd2lkZ2V0czogd2lkZ2V0cygpLFxuICAgICAgICByb290U2NoZW1hOiB7fSxcbiAgICAgICAgZm9ybUNvbnRleHQ6IHt9LFxuICAgICAgICB0cmFuc2xhdGVTdHJpbmc6IGVuZ2xpc2hTdHJpbmdUcmFuc2xhdG9yLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREZWZhdWx0UmVnaXN0cnkuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgY3JlYXRlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlU2NoZW1hVXRpbHMsIGRlZXBFcXVhbHMsIGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIGlzT2JqZWN0LCBtZXJnZU9iamVjdHMsIE5BTUVfS0VZLCBSSlNGX0FERElUSU9OQUxfUFJPUEVSVElFU19GTEFHLCBzaG91bGRSZW5kZXIsIFNVQk1JVF9CVE5fT1BUSU9OU19LRVksIHRvRXJyb3JMaXN0LCBVSV9HTE9CQUxfT1BUSU9OU19LRVksIFVJX09QVElPTlNfS0VZLCB2YWxpZGF0aW9uRGF0YU1lcmdlLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBfZm9yRWFjaCBmcm9tICdsb2Rhc2gvZm9yRWFjaCc7XG5pbXBvcnQgX2dldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBfaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgX2lzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5pbXBvcnQgX3BpY2sgZnJvbSAnbG9kYXNoL3BpY2snO1xuaW1wb3J0IF90b1BhdGggZnJvbSAnbG9kYXNoL3RvUGF0aCc7XG5pbXBvcnQgZ2V0RGVmYXVsdFJlZ2lzdHJ5IGZyb20gJy4uL2dldERlZmF1bHRSZWdpc3RyeSc7XG4vKiogVGhlIGBGb3JtYCBjb21wb25lbnQgcmVuZGVycyB0aGUgb3V0ZXIgZm9ybSBhbmQgYWxsIHRoZSBmaWVsZHMgZGVmaW5lZCBpbiB0aGUgYHNjaGVtYWAgKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcm0gZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIC8qKiBDb25zdHJ1Y3RzIHRoZSBgRm9ybWAgZnJvbSB0aGUgYHByb3BzYC4gV2lsbCBzZXR1cCB0aGUgaW5pdGlhbCBzdGF0ZSBmcm9tIHRoZSBwcm9wcy4gSXQgd2lsbCBhbHNvIGNhbGwgdGhlXG4gICAgICogYG9uQ2hhbmdlYCBoYW5kbGVyIGlmIHRoZSBpbml0aWFsbHkgcHJvdmlkZWQgYGZvcm1EYXRhYCBpcyBtb2RpZmllZCB0byBhZGQgbWlzc2luZyBkZWZhdWx0IHZhbHVlcyBhcyBwYXJ0IG9mIHRoZVxuICAgICAqIHN0YXRlIGNvbnN0cnVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBpbml0aWFsIHByb3BzIGZvciB0aGUgYEZvcm1gXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuICAgICAgICAvKiogUmV0dXJucyB0aGUgYGZvcm1EYXRhYCB3aXRoIG9ubHkgdGhlIGVsZW1lbnRzIHNwZWNpZmllZCBpbiB0aGUgYGZpZWxkc2AgbGlzdFxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZGF0YSBmb3IgdGhlIGBGb3JtYFxuICAgICAgICAgKiBAcGFyYW0gZmllbGRzIC0gVGhlIGZpZWxkcyB0byBrZWVwIHdoaWxlIGZpbHRlcmluZ1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5nZXRVc2VkRm9ybURhdGEgPSAoZm9ybURhdGEsIGZpZWxkcykgPT4ge1xuICAgICAgICAgICAgLy8gRm9yIHRoZSBjYXNlIG9mIGEgc2luZ2xlIGlucHV0IGZvcm1cbiAgICAgICAgICAgIGlmIChmaWVsZHMubGVuZ3RoID09PSAwICYmIHR5cGVvZiBmb3JtRGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBfcGljayBoYXMgaW5jb3JyZWN0IHR5cGUgZGVmaW5pdGlvbiwgaXQgd29ya3Mgd2l0aCBzdHJpbmdbXVtdLCBiZWNhdXNlIGxvZGFzaC9oYXNJbiBzdXBwb3J0cyBpdFxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IF9waWNrKGZvcm1EYXRhLCBmaWVsZHMpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybURhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGRhdGEpLm1hcCgoa2V5KSA9PiBkYXRhW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGZpZWxkIG5hbWVzIGZyb20gaW5zcGVjdGluZyB0aGUgYHBhdGhTY2hlbWFgIGFzIHdlbGwgYXMgdXNpbmcgdGhlIGBmb3JtRGF0YWBcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHBhdGhTY2hlbWEgLSBUaGUgYFBhdGhTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGZvcm1cbiAgICAgICAgICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgZm9ybSBkYXRhIHRvIHVzZSB3aGlsZSBjaGVja2luZyBmb3IgZW1wdHkgb2JqZWN0cy9hcnJheXNcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZ2V0RmllbGROYW1lcyA9IChwYXRoU2NoZW1hLCBmb3JtRGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2V0QWxsUGF0aHMgPSAoX29iaiwgYWNjID0gW10sIHBhdGhzID0gW1tdXSkgPT4ge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKF9vYmopLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIF9vYmpba2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BhdGhzID0gcGF0aHMubWFwKChwYXRoKSA9PiBbLi4ucGF0aCwga2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbiBvYmplY3QgaXMgbWFya2VkIHdpdGggYWRkaXRpb25hbFByb3BlcnRpZXMsIGFsbCBpdHMga2V5cyBhcmUgdmFsaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfb2JqW2tleV1bUkpTRl9BRERJVElPTkFMX1BST1BFUlRJRVNfRkxBR10gJiYgX29ialtrZXldW05BTUVfS0VZXSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MucHVzaChfb2JqW2tleV1bTkFNRV9LRVldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEFsbFBhdGhzKF9vYmpba2V5XSwgYWNjLCBuZXdQYXRocyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBOQU1FX0tFWSAmJiBfb2JqW2tleV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gX2dldChmb3JtRGF0YSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkcyBwYXRoIHRvIGZpZWxkTmFtZXMgaWYgaXQgcG9pbnRzIHRvIGEgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciBhbiBlbXB0eSBvYmplY3QvYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZvcm1WYWx1ZSAhPT0gJ29iamVjdCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lzRW1wdHkoZm9ybVZhbHVlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkuaXNBcnJheShmb3JtVmFsdWUpICYmIGZvcm1WYWx1ZS5ldmVyeSgodmFsKSA9PiB0eXBlb2YgdmFsICE9PSAnb2JqZWN0JykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gZ2V0QWxsUGF0aHMocGF0aFNjaGVtYSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBSZXR1cm5zIHRoZSBgZm9ybURhdGFgIGFmdGVyIGZpbHRlcmluZyB0byByZW1vdmUgYW55IGV4dHJhIGRhdGEgbm90IGluIGEgZm9ybSBmaWVsZFxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZGF0YSBmb3IgdGhlIGBGb3JtYFxuICAgICAgICAgKiBAcmV0dXJucyBUaGUgYGZvcm1EYXRhYCBhZnRlciBvbWl0dGluZyBleHRyYSBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9taXRFeHRyYURhdGEgPSAoZm9ybURhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hLCBzY2hlbWFVdGlscyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IHJldHJpZXZlZFNjaGVtYSA9IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICAgICAgY29uc3QgcGF0aFNjaGVtYSA9IHNjaGVtYVV0aWxzLnRvUGF0aFNjaGVtYShyZXRyaWV2ZWRTY2hlbWEsICcnLCBmb3JtRGF0YSk7XG4gICAgICAgICAgICBjb25zdCBmaWVsZE5hbWVzID0gdGhpcy5nZXRGaWVsZE5hbWVzKHBhdGhTY2hlbWEsIGZvcm1EYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0Zvcm1EYXRhID0gdGhpcy5nZXRVc2VkRm9ybURhdGEoZm9ybURhdGEsIGZpZWxkTmFtZXMpO1xuICAgICAgICAgICAgcmV0dXJuIG5ld0Zvcm1EYXRhO1xuICAgICAgICB9O1xuICAgICAgICAvKiogRnVuY3Rpb24gdG8gaGFuZGxlIGNoYW5nZXMgbWFkZSB0byBhIGZpZWxkIGluIHRoZSBgRm9ybWAuIFRoaXMgaGFuZGxlciByZWNlaXZlcyBhbiBlbnRpcmVseSBuZXcgY29weSBvZiB0aGVcbiAgICAgICAgICogYGZvcm1EYXRhYCBhbG9uZyB3aXRoIGEgbmV3IGBFcnJvclNjaGVtYWAuIEl0IHdpbGwgZmlyc3QgdXBkYXRlIHRoZSBgZm9ybURhdGFgIHdpdGggYW55IG1pc3NpbmcgZGVmYXVsdCBmaWVsZHMgYW5kXG4gICAgICAgICAqIHRoZW4sIGlmIGBvbWl0RXh0cmFEYXRhYCBhbmQgYGxpdmVPbWl0YCBhcmUgdHVybmVkIG9uLCB0aGUgYGZvcm1EYXRhYCB3aWxsIGJlIGZpbHRlcmVkIHRvIHJlbW92ZSBhbnkgZXh0cmEgZGF0YSBub3RcbiAgICAgICAgICogaW4gYSBmb3JtIGZpZWxkLiBUaGVuLCB0aGUgcmVzdWx0aW5nIGZvcm1EYXRhIHdpbGwgYmUgdmFsaWRhdGVkIGlmIHJlcXVpcmVkLiBUaGUgc3RhdGUgd2lsbCBiZSB1cGRhdGVkIHdpdGggdGhlIG5ld1xuICAgICAgICAgKiB1cGRhdGVkIChwb3RlbnRpYWxseSBmaWx0ZXJlZCkgYGZvcm1EYXRhYCwgYW55IGVycm9ycyB0aGF0IHJlc3VsdGVkIGZyb20gdmFsaWRhdGlvbi4gRmluYWxseSB0aGUgYG9uQ2hhbmdlYFxuICAgICAgICAgKiBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpZiBzcGVjaWZpZWQgd2l0aCB0aGUgdXBkYXRlZCBzdGF0ZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIG5ldyBmb3JtIGRhdGEgZnJvbSBhIGNoYW5nZSB0byBhIGZpZWxkXG4gICAgICAgICAqIEBwYXJhbSBuZXdFcnJvclNjaGVtYSAtIFRoZSBuZXcgYEVycm9yU2NoZW1hYCBiYXNlZCBvbiB0aGUgZmllbGQgY2hhbmdlXG4gICAgICAgICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgZmllbGQgdGhhdCBjYXVzZWQgdGhlIGNoYW5nZVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IChmb3JtRGF0YSwgbmV3RXJyb3JTY2hlbWEsIGlkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGV4dHJhRXJyb3JzLCBvbWl0RXh0cmFEYXRhLCBsaXZlT21pdCwgbm9WYWxpZGF0ZSwgbGl2ZVZhbGlkYXRlLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMsIHNjaGVtYSwgcmV0cmlldmVkU2NoZW1hIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KGZvcm1EYXRhKSB8fCBBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5nZXRTdGF0ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCBmb3JtRGF0YSwgcmV0cmlldmVkU2NoZW1hKTtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG5ld1N0YXRlLmZvcm1EYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbXVzdFZhbGlkYXRlID0gIW5vVmFsaWRhdGUgJiYgbGl2ZVZhbGlkYXRlO1xuICAgICAgICAgICAgbGV0IHN0YXRlID0geyBmb3JtRGF0YSwgc2NoZW1hIH07XG4gICAgICAgICAgICBsZXQgbmV3Rm9ybURhdGEgPSBmb3JtRGF0YTtcbiAgICAgICAgICAgIGlmIChvbWl0RXh0cmFEYXRhID09PSB0cnVlICYmIGxpdmVPbWl0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9ybURhdGEgPSB0aGlzLm9taXRFeHRyYURhdGEoZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgIHN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YTogbmV3Rm9ybURhdGEsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtdXN0VmFsaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uID0gdGhpcy52YWxpZGF0ZShuZXdGb3JtRGF0YSwgc2NoZW1hLCBzY2hlbWFVdGlscywgcmV0cmlldmVkU2NoZW1hKTtcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3JzID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvcnM7XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yU2NoZW1hID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvclNjaGVtYTtcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzID0gZXJyb3JzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSA9IGVycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgIGlmIChleHRyYUVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZWQgPSB2YWxpZGF0aW9uRGF0YU1lcmdlKHNjaGVtYVZhbGlkYXRpb24sIGV4dHJhRXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSBtZXJnZWQuZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IG1lcmdlZC5lcnJvcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIE1lcmdpbmcgJ25ld0Vycm9yU2NoZW1hJyBpbnRvICdlcnJvclNjaGVtYScgdG8gZGlzcGxheSB0aGUgY3VzdG9tIHJhaXNlZCBlcnJvcnMuXG4gICAgICAgICAgICAgICAgaWYgKG5ld0Vycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkRXJyb3JzID0gdGhpcy5maWx0ZXJFcnJvcnNCYXNlZE9uU2NoZW1hKG5ld0Vycm9yU2NoZW1hLCByZXRyaWV2ZWRTY2hlbWEsIG5ld0Zvcm1EYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSBtZXJnZU9iamVjdHMoZXJyb3JTY2hlbWEsIGZpbHRlcmVkRXJyb3JzLCAncHJldmVudER1cGxpY2F0ZXMnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhOiBuZXdGb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghbm9WYWxpZGF0ZSAmJiBuZXdFcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yU2NoZW1hID0gZXh0cmFFcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgPyBtZXJnZU9iamVjdHMobmV3RXJyb3JTY2hlbWEsIGV4dHJhRXJyb3JzLCAncHJldmVudER1cGxpY2F0ZXMnKVxuICAgICAgICAgICAgICAgICAgICA6IG5ld0Vycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgIHN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YTogbmV3Rm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hOiBlcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiB0b0Vycm9yTGlzdChlcnJvclNjaGVtYSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUsICgpID0+IG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHsgLi4udGhpcy5zdGF0ZSwgLi4uc3RhdGUgfSwgaWQpKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGhhbmRsZSByZXNldCBmb3JtIGRhdGEuXG4gICAgICAgICAqIC0gUmVzZXQgYWxsIGZpZWxkcyB3aXRoIGRlZmF1bHQgdmFsdWVzLlxuICAgICAgICAgKiAtIFJlc2V0IHZhbGlkYXRpb25zIGFuZCBlcnJvcnNcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucmVzZXQgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLmdldFN0YXRlRnJvbVByb3BzKHRoaXMucHJvcHMsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IG5ld1N0YXRlLmZvcm1EYXRhO1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGE6IG5ld0Zvcm1EYXRhLFxuICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hOiB7fSxcbiAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYToge30sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSwgKCkgPT4gb25DaGFuZ2UgJiYgb25DaGFuZ2UoeyAuLi50aGlzLnN0YXRlLCAuLi5zdGF0ZSB9KSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgd2hlbiBhIGZpZWxkIG9uIHRoZSBmb3JtIGlzIGJsdXJyZWQuIENhbGxzIHRoZSBgb25CbHVyYCBjYWxsYmFjayBmb3IgdGhlIGBGb3JtYCBpZiBpdFxuICAgICAgICAgKiB3YXMgcHJvdmlkZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgYGlkYCBvZiB0aGUgZmllbGQgdGhhdCB3YXMgYmx1cnJlZFxuICAgICAgICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGQgdGhhdCB3YXMgYmx1cnJlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkJsdXIgPSAoaWQsIGRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgb25CbHVyIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgaWYgKG9uQmx1cikge1xuICAgICAgICAgICAgICAgIG9uQmx1cihpZCwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgd2hlbiBhIGZpZWxkIG9uIHRoZSBmb3JtIGlzIGZvY3VzZWQuIENhbGxzIHRoZSBgb25Gb2N1c2AgY2FsbGJhY2sgZm9yIHRoZSBgRm9ybWAgaWYgaXRcbiAgICAgICAgICogd2FzIHByb3ZpZGVkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGBpZGAgb2YgdGhlIGZpZWxkIHRoYXQgd2FzIGZvY3VzZWRcbiAgICAgICAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkIHRoYXQgd2FzIGZvY3VzZWRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25Gb2N1cyA9IChpZCwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBvbkZvY3VzIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgaWYgKG9uRm9jdXMpIHtcbiAgICAgICAgICAgICAgICBvbkZvY3VzKGlkLCBkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGhhbmRsZSB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZC4gRmlyc3QsIGl0IHByZXZlbnRzIHRoZSBkZWZhdWx0IGV2ZW50IGJlaGF2aW9yLiBOb3RoaW5nXG4gICAgICAgICAqIGhhcHBlbnMgaWYgdGhlIHRhcmdldCBhbmQgY3VycmVudFRhcmdldCBvZiB0aGUgZXZlbnQgYXJlIG5vdCB0aGUgc2FtZS4gSXQgd2lsbCBvbWl0IGFueSBleHRyYSBkYXRhIGluIHRoZVxuICAgICAgICAgKiBgZm9ybURhdGFgIGluIHRoZSBzdGF0ZSBpZiBgb21pdEV4dHJhRGF0YWAgaXMgdHJ1ZS4gSXQgd2lsbCB2YWxpZGF0ZSB0aGUgcmVzdWx0aW5nIGBmb3JtRGF0YWAsIHJlcG9ydGluZyBlcnJvcnNcbiAgICAgICAgICogdmlhIHRoZSBgb25FcnJvcigpYCBjYWxsYmFjayB1bmxlc3MgdmFsaWRhdGlvbiBpcyBkaXNhYmxlZC4gRmluYWxseSwgaXQgd2lsbCBhZGQgaW4gYW55IGBleHRyYUVycm9yc2AgYW5kIHRoZW4gY2FsbFxuICAgICAgICAgKiBiYWNrIHRoZSBgb25TdWJtaXRgIGNhbGxiYWNrIGlmIGl0IHdhcyBwcm92aWRlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIHN1Ym1pdCBIVE1MIGZvcm0gZXZlbnRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25TdWJtaXQgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBldmVudC5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucGVyc2lzdCgpO1xuICAgICAgICAgICAgY29uc3QgeyBvbWl0RXh0cmFEYXRhLCBleHRyYUVycm9ycywgbm9WYWxpZGF0ZSwgb25TdWJtaXQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBsZXQgeyBmb3JtRGF0YTogbmV3Rm9ybURhdGEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgICAgICBpZiAob21pdEV4dHJhRGF0YSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhID0gdGhpcy5vbWl0RXh0cmFEYXRhKG5ld0Zvcm1EYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub1ZhbGlkYXRlIHx8IHRoaXMudmFsaWRhdGVGb3JtV2l0aEZvcm1EYXRhKG5ld0Zvcm1EYXRhKSkge1xuICAgICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBubyBlcnJvcnMgZ2VuZXJhdGVkIHRocm91Z2ggc2NoZW1hIHZhbGlkYXRpb24uXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHVzZXIgcHJvdmlkZWQgZXJyb3JzIGFuZCB1cGRhdGUgc3RhdGUgYWNjb3JkaW5nbHkuXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JTY2hlbWEgPSBleHRyYUVycm9ycyB8fCB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvcnMgPSBleHRyYUVycm9ycyA/IHRvRXJyb3JMaXN0KGV4dHJhRXJyb3JzKSA6IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YTogbmV3Rm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWE6IHt9LFxuICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9uU3VibWl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdCh7IC4uLnRoaXMuc3RhdGUsIGZvcm1EYXRhOiBuZXdGb3JtRGF0YSwgc3RhdHVzOiAnc3VibWl0dGVkJyB9LCBldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqIFByb3ZpZGVzIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBwcm9ncmFtbWF0aWNhbGx5IHN1Ym1pdCB0aGUgYEZvcm1gICovXG4gICAgICAgIHRoaXMuc3VibWl0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnQuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1pdEN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdzdWJtaXQnLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3VibWl0Q3VzdG9tRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50LmN1cnJlbnQuZGlzcGF0Y2hFdmVudChzdWJtaXRDdXN0b21FdmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRWxlbWVudC5jdXJyZW50LnJlcXVlc3RTdWJtaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqIFZhbGlkYXRlcyB0aGUgZm9ybSB1c2luZyB0aGUgZ2l2ZW4gYGZvcm1EYXRhYC4gRm9yIHVzZSBvbiBmb3JtIHN1Ym1pc3Npb24gb3Igb24gcHJvZ3JhbW1hdGljIHZhbGlkYXRpb24uXG4gICAgICAgICAqIElmIGBvbkVycm9yYCBpcyBwcm92aWRlZCwgdGhlbiBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBsaXN0IG9mIGVycm9ycy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGZvcm0gZGF0YSB0byB2YWxpZGF0ZVxuICAgICAgICAgKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGZvcm0gaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudmFsaWRhdGVGb3JtV2l0aEZvcm1EYXRhID0gKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGV4dHJhRXJyb3JzLCBleHRyYUVycm9yc0Jsb2NrU3VibWl0LCBmb2N1c09uRmlyc3RFcnJvciwgb25FcnJvciB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzOiBwcmV2RXJyb3JzIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbiA9IHRoaXMudmFsaWRhdGUoZm9ybURhdGEpO1xuICAgICAgICAgICAgbGV0IGVycm9ycyA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JzO1xuICAgICAgICAgICAgbGV0IGVycm9yU2NoZW1hID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvclNjaGVtYTtcbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYVZhbGlkYXRpb25FcnJvcnMgPSBlcnJvcnM7XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWEgPSBlcnJvclNjaGVtYTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0Vycm9yID0gZXJyb3JzLmxlbmd0aCA+IDAgfHwgKGV4dHJhRXJyb3JzICYmIGV4dHJhRXJyb3JzQmxvY2tTdWJtaXQpO1xuICAgICAgICAgICAgaWYgKGhhc0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhRXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IHZhbGlkYXRpb25EYXRhTWVyZ2Uoc2NoZW1hVmFsaWRhdGlvbiwgZXh0cmFFcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSA9IG1lcmdlZC5lcnJvclNjaGVtYTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gbWVyZ2VkLmVycm9ycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZvY3VzT25GaXJzdEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZm9jdXNPbkZpcnN0RXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzT25GaXJzdEVycm9yKGVycm9yc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzT25FcnJvcihlcnJvcnNbMF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRm9ybSB2YWxpZGF0aW9uIGZhaWxlZCcsIGVycm9ycyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHByZXZFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYToge30sXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWE6IHt9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICFoYXNFcnJvcjtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFwcm9wcy52YWxpZGF0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQSB2YWxpZGF0b3IgaXMgcmVxdWlyZWQgZm9yIEZvcm0gZnVuY3Rpb25hbGl0eSB0byB3b3JrJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuZ2V0U3RhdGVGcm9tUHJvcHMocHJvcHMsIHByb3BzLmZvcm1EYXRhKTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UgJiYgIWRlZXBFcXVhbHModGhpcy5zdGF0ZS5mb3JtRGF0YSwgdGhpcy5wcm9wcy5mb3JtRGF0YSkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5zdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtRWxlbWVudCA9IGNyZWF0ZVJlZigpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGVgIGlzIGEgUmVhY3QgbGlmZWN5Y2xlIG1ldGhvZCB0aGF0IGlzIGludm9rZWQgcmlnaHQgYmVmb3JlIHRoZSBtb3N0IHJlY2VudGx5IHJlbmRlcmVkXG4gICAgICogb3V0cHV0IGlzIGNvbW1pdHRlZCB0byB0aGUgRE9NLiBJdCBlbmFibGVzIHlvdXIgY29tcG9uZW50IHRvIGNhcHR1cmUgY3VycmVudCB2YWx1ZXMgKGUuZy4sIHNjcm9sbCBwb3NpdGlvbikgYmVmb3JlXG4gICAgICogdGhleSBhcmUgcG90ZW50aWFsbHkgY2hhbmdlZC5cbiAgICAgKlxuICAgICAqIEluIHRoaXMgY2FzZSwgaXQgY2hlY2tzIGlmIHRoZSBwcm9wcyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgcmVuZGVyLiBJZiB0aGV5IGhhdmUsIGl0IGNvbXB1dGVzIHRoZSBuZXh0IHN0YXRlXG4gICAgICogb2YgdGhlIGNvbXBvbmVudCB1c2luZyBgZ2V0U3RhdGVGcm9tUHJvcHNgIG1ldGhvZCBhbmQgcmV0dXJucyBpdCBhbG9uZyB3aXRoIGEgYHNob3VsZFVwZGF0ZWAgZmxhZyBzZXQgdG8gYHRydWVgIElGXG4gICAgICogdGhlIGBuZXh0U3RhdGVgIGFuZCBgcHJldlN0YXRlYCBhcmUgZGlmZmVyZW50LCBvdGhlcndpc2UgYGZhbHNlYC4gVGhpcyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1cC10by1kYXRlXG4gICAgICogc3RhdGUgcmVhZHkgdG8gYmUgYXBwbGllZCBpbiBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICAgKlxuICAgICAqIElmIGBmb3JtRGF0YWAgaGFzbid0IGNoYW5nZWQsIGl0IHNpbXBseSByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGBzaG91bGRVcGRhdGVgIHNldCB0byBgZmFsc2VgLCBpbmRpY2F0aW5nIHRoYXQgYVxuICAgICAqIHN0YXRlIHVwZGF0ZSBpcyBub3QgbmVjZXNzYXJ5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHByZXZQcm9wcyAtIFRoZSBwcmV2aW91cyBzZXQgb2YgcHJvcHMgYmVmb3JlIHRoZSB1cGRhdGUuXG4gICAgICogQHBhcmFtIHByZXZTdGF0ZSAtIFRoZSBwcmV2aW91cyBzdGF0ZSBiZWZvcmUgdGhlIHVwZGF0ZS5cbiAgICAgKiBAcmV0dXJucyBFaXRoZXIgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG5leHQgc3RhdGUgYW5kIGEgZmxhZyBpbmRpY2F0aW5nIHRoYXQgYW4gdXBkYXRlIHNob3VsZCBvY2N1ciwgb3IgYW4gb2JqZWN0XG4gICAgICogICAgICAgIHdpdGggYSBmbGFnIGluZGljYXRpbmcgdGhhdCBhbiB1cGRhdGUgaXMgbm90IG5lY2Vzc2FyeS5cbiAgICAgKi9cbiAgICBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgICBpZiAoIWRlZXBFcXVhbHModGhpcy5wcm9wcywgcHJldlByb3BzKSkge1xuICAgICAgICAgICAgY29uc3QgaXNTY2hlbWFDaGFuZ2VkID0gIWRlZXBFcXVhbHMocHJldlByb3BzLnNjaGVtYSwgdGhpcy5wcm9wcy5zY2hlbWEpO1xuICAgICAgICAgICAgY29uc3QgaXNGb3JtRGF0YUNoYW5nZWQgPSAhZGVlcEVxdWFscyhwcmV2UHJvcHMuZm9ybURhdGEsIHRoaXMucHJvcHMuZm9ybURhdGEpO1xuICAgICAgICAgICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5nZXRTdGF0ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0aGlzLnByb3BzLmZvcm1EYXRhLCBcbiAgICAgICAgICAgIC8vIElmIHRoZSBgc2NoZW1hYCBoYXMgY2hhbmdlZCwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIHJldHJpZXZlZCBzY2hlbWEuXG4gICAgICAgICAgICAvLyBPciBpZiB0aGUgYGZvcm1EYXRhYCBjaGFuZ2VzLCBmb3IgZXhhbXBsZSBpbiB0aGUgY2FzZSBvZiBhIHNjaGVtYSB3aXRoIGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgdG9cbiAgICAgICAgICAgIC8vICBtYXRjaCBvbmUgb2YgdGhlIHN1YlNjaGVtYXMsIHRoZSByZXRyaWV2ZWQgc2NoZW1hIG11c3QgYmUgdXBkYXRlZC5cbiAgICAgICAgICAgIGlzU2NoZW1hQ2hhbmdlZCB8fCBpc0Zvcm1EYXRhQ2hhbmdlZCA/IHVuZGVmaW5lZCA6IHRoaXMuc3RhdGUucmV0cmlldmVkU2NoZW1hLCBpc1NjaGVtYUNoYW5nZWQpO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXBkYXRlID0gIWRlZXBFcXVhbHMobmV4dFN0YXRlLCBwcmV2U3RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgbmV4dFN0YXRlLCBzaG91bGRVcGRhdGUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzaG91bGRVcGRhdGU6IGZhbHNlIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIGBjb21wb25lbnREaWRVcGRhdGVgIGlzIGEgUmVhY3QgbGlmZWN5Y2xlIG1ldGhvZCB0aGF0IGlzIGludm9rZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdXBkYXRpbmcgb2NjdXJzLiBUaGlzIG1ldGhvZCBpc1xuICAgICAqIG5vdCBjYWxsZWQgZm9yIHRoZSBpbml0aWFsIHJlbmRlci5cbiAgICAgKlxuICAgICAqIEhlcmUsIGl0IGNoZWNrcyBpZiBhbiB1cGRhdGUgaXMgbmVjZXNzYXJ5IGJhc2VkIG9uIHRoZSBgc2hvdWxkVXBkYXRlYCBmbGFnIHJlY2VpdmVkIGZyb20gYGdldFNuYXBzaG90QmVmb3JlVXBkYXRlYC5cbiAgICAgKiBJZiBhbiB1cGRhdGUgaXMgcmVxdWlyZWQsIGl0IGFwcGxpZXMgdGhlIG5leHQgc3RhdGUgYW5kLCBpZiBuZWVkZWQsIHRyaWdnZXJzIHRoZSBgb25DaGFuZ2VgIGhhbmRsZXIgdG8gaW5mb3JtIGFib3V0XG4gICAgICogY2hhbmdlcy5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGVmZmVjdGl2ZWx5IHJlcGxhY2VzIHRoZSBkZXByZWNhdGVkIGBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc2AsIHByb3ZpZGluZyBhIHNhZmVyIGFsdGVybmF0aXZlXG4gICAgICogdG8gaGFuZGxlIHByb3AgY2hhbmdlcyBhbmQgc3RhdGUgdXBkYXRlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBfIC0gVGhlIHByZXZpb3VzIHNldCBvZiBwcm9wcy5cbiAgICAgKiBAcGFyYW0gcHJldlN0YXRlIC0gVGhlIHByZXZpb3VzIHN0YXRlIG9mIHRoZSBjb21wb25lbnQgYmVmb3JlIHRoZSB1cGRhdGUuXG4gICAgICogQHBhcmFtIHNuYXBzaG90IC0gVGhlIHZhbHVlIHJldHVybmVkIGZyb20gYGdldFNuYXBzaG90QmVmb3JlVXBkYXRlYC5cbiAgICAgKi9cbiAgICBjb21wb25lbnREaWRVcGRhdGUoXywgcHJldlN0YXRlLCBzbmFwc2hvdCkge1xuICAgICAgICBpZiAoc25hcHNob3Quc2hvdWxkVXBkYXRlKSB7XG4gICAgICAgICAgICBjb25zdCB7IG5leHRTdGF0ZSB9ID0gc25hcHNob3Q7XG4gICAgICAgICAgICBpZiAoIWRlZXBFcXVhbHMobmV4dFN0YXRlLmZvcm1EYXRhLCB0aGlzLnByb3BzLmZvcm1EYXRhKSAmJlxuICAgICAgICAgICAgICAgICFkZWVwRXF1YWxzKG5leHRTdGF0ZS5mb3JtRGF0YSwgcHJldlN0YXRlLmZvcm1EYXRhKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKG5leHRTdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKG5leHRTdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIEV4dHJhY3RzIHRoZSB1cGRhdGVkIHN0YXRlIGZyb20gdGhlIGdpdmVuIGBwcm9wc2AgYW5kIGBpbnB1dEZvcm1EYXRhYC4gQXMgcGFydCBvZiB0aGlzIHByb2Nlc3MsIHRoZVxuICAgICAqIGBpbnB1dEZvcm1EYXRhYCBpcyBmaXJzdCBwcm9jZXNzZWQgdG8gYWRkIGFueSBtaXNzaW5nIHJlcXVpcmVkIGRlZmF1bHRzLiBBZnRlciB0aGF0LCB0aGUgZGF0YSBpcyBydW4gdGhyb3VnaCB0aGVcbiAgICAgKiB2YWxpZGF0aW9uIHByb2Nlc3MgSUYgcmVxdWlyZWQgYnkgdGhlIGBwcm9wc2AuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgcHJvcHMgcGFzc2VkIHRvIHRoZSBgRm9ybWBcbiAgICAgKiBAcGFyYW0gaW5wdXRGb3JtRGF0YSAtIFRoZSBuZXcgb3IgY3VycmVudCBkYXRhIGZvciB0aGUgYEZvcm1gXG4gICAgICogQHBhcmFtIHJldHJpZXZlZFNjaGVtYSAtIEFuIGV4cGFuZGVkIHNjaGVtYSwgaWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBgc2NoZW1hYCBhbmQgYGZvcm1EYXRhYC5cbiAgICAgKiBAcGFyYW0gaXNTY2hlbWFDaGFuZ2VkIC0gQSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgc2NoZW1hIGhhcyBjaGFuZ2VkLlxuICAgICAqIEByZXR1cm5zIC0gVGhlIG5ldyBzdGF0ZSBmb3IgdGhlIGBGb3JtYFxuICAgICAqL1xuICAgIGdldFN0YXRlRnJvbVByb3BzKHByb3BzLCBpbnB1dEZvcm1EYXRhLCByZXRyaWV2ZWRTY2hlbWEsIGlzU2NoZW1hQ2hhbmdlZCA9IGZhbHNlKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlIHx8IHt9O1xuICAgICAgICBjb25zdCBzY2hlbWEgPSAnc2NoZW1hJyBpbiBwcm9wcyA/IHByb3BzLnNjaGVtYSA6IHRoaXMucHJvcHMuc2NoZW1hO1xuICAgICAgICBjb25zdCB1aVNjaGVtYSA9ICgndWlTY2hlbWEnIGluIHByb3BzID8gcHJvcHMudWlTY2hlbWEgOiB0aGlzLnByb3BzLnVpU2NoZW1hKSB8fCB7fTtcbiAgICAgICAgY29uc3QgZWRpdCA9IHR5cGVvZiBpbnB1dEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJztcbiAgICAgICAgY29uc3QgbGl2ZVZhbGlkYXRlID0gJ2xpdmVWYWxpZGF0ZScgaW4gcHJvcHMgPyBwcm9wcy5saXZlVmFsaWRhdGUgOiB0aGlzLnByb3BzLmxpdmVWYWxpZGF0ZTtcbiAgICAgICAgY29uc3QgbXVzdFZhbGlkYXRlID0gZWRpdCAmJiAhcHJvcHMubm9WYWxpZGF0ZSAmJiBsaXZlVmFsaWRhdGU7XG4gICAgICAgIGNvbnN0IHJvb3RTY2hlbWEgPSBzY2hlbWE7XG4gICAgICAgIGNvbnN0IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSAnZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcicgaW4gcHJvcHNcbiAgICAgICAgICAgID8gcHJvcHMuZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvclxuICAgICAgICAgICAgOiB0aGlzLnByb3BzLmV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3I7XG4gICAgICAgIGNvbnN0IGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mID0gJ2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mJyBpbiBwcm9wc1xuICAgICAgICAgICAgPyBwcm9wcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZlxuICAgICAgICAgICAgOiB0aGlzLnByb3BzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mO1xuICAgICAgICBsZXQgc2NoZW1hVXRpbHMgPSBzdGF0ZS5zY2hlbWFVdGlscztcbiAgICAgICAgaWYgKCFzY2hlbWFVdGlscyB8fFxuICAgICAgICAgICAgc2NoZW1hVXRpbHMuZG9lc1NjaGVtYVV0aWxzRGlmZmVyKHByb3BzLnZhbGlkYXRvciwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKSB7XG4gICAgICAgICAgICBzY2hlbWFVdGlscyA9IGNyZWF0ZVNjaGVtYVV0aWxzKHByb3BzLnZhbGlkYXRvciwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gc2NoZW1hVXRpbHMuZ2V0RGVmYXVsdEZvcm1TdGF0ZShzY2hlbWEsIGlucHV0Rm9ybURhdGEpO1xuICAgICAgICBjb25zdCBfcmV0cmlldmVkU2NoZW1hID0gcmV0cmlldmVkU2NoZW1hICE9PSBudWxsICYmIHJldHJpZXZlZFNjaGVtYSAhPT0gdm9pZCAwID8gcmV0cmlldmVkU2NoZW1hIDogc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoc2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgICAgIGNvbnN0IGdldEN1cnJlbnRFcnJvcnMgPSAoKSA9PiB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgYHByb3BzLm5vVmFsaWRhdGVgIG9wdGlvbiBpcyBzZXQgb3IgdGhlIHNjaGVtYSBoYXMgY2hhbmdlZCwgd2UgcmVzZXQgdGhlIGVycm9yIHN0YXRlLlxuICAgICAgICAgICAgaWYgKHByb3BzLm5vVmFsaWRhdGUgfHwgaXNTY2hlbWFDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3JzOiBbXSwgZXJyb3JTY2hlbWE6IHt9IH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghcHJvcHMubGl2ZVZhbGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBzdGF0ZS5zY2hlbWFWYWxpZGF0aW9uRXJyb3JzIHx8IFtdLFxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYTogc3RhdGUuc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hIHx8IHt9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGVycm9yczogc3RhdGUuZXJyb3JzIHx8IFtdLFxuICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hOiBzdGF0ZS5lcnJvclNjaGVtYSB8fCB7fSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIGxldCBlcnJvcnM7XG4gICAgICAgIGxldCBlcnJvclNjaGVtYTtcbiAgICAgICAgbGV0IHNjaGVtYVZhbGlkYXRpb25FcnJvcnMgPSBzdGF0ZS5zY2hlbWFWYWxpZGF0aW9uRXJyb3JzO1xuICAgICAgICBsZXQgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hID0gc3RhdGUuc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hO1xuICAgICAgICBpZiAobXVzdFZhbGlkYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uID0gdGhpcy52YWxpZGF0ZShmb3JtRGF0YSwgc2NoZW1hLCBzY2hlbWFVdGlscywgX3JldHJpZXZlZFNjaGVtYSk7XG4gICAgICAgICAgICBlcnJvcnMgPSBzY2hlbWFWYWxpZGF0aW9uLmVycm9ycztcbiAgICAgICAgICAgIC8vIElmIHJldHJpZXZlZFNjaGVtYSBpcyB1bmRlZmluZWQgd2hpY2ggbWVhbnMgdGhlIHNjaGVtYSBvciBmb3JtRGF0YSBoYXMgY2hhbmdlZCwgd2UgZG8gbm90IG1lcmdlIHN0YXRlLlxuICAgICAgICAgICAgLy8gRWxzZSBpbiB0aGUgY2FzZSB3aGVyZSBpdCBoYXNuJ3QgY2hhbmdlZCwgd2UgbWVyZ2UgJ3N0YXRlLmVycm9yU2NoZW1hJyB3aXRoICdzY2hlbWFWYWxpZGF0aW9uLmVycm9yU2NoZW1hLicgVGhpcyBkb25lIHRvIGRpc3BsYXkgdGhlIHJhaXNlZCBmaWVsZCBlcnJvci5cbiAgICAgICAgICAgIGlmIChyZXRyaWV2ZWRTY2hlbWEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvclNjaGVtYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VPYmplY3RzKChfYSA9IHRoaXMuc3RhdGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5lcnJvclNjaGVtYSwgc2NoZW1hVmFsaWRhdGlvbi5lcnJvclNjaGVtYSwgJ3ByZXZlbnREdXBsaWNhdGVzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzID0gZXJyb3JzO1xuICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hID0gZXJyb3JTY2hlbWE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RXJyb3JzID0gZ2V0Q3VycmVudEVycm9ycygpO1xuICAgICAgICAgICAgZXJyb3JzID0gY3VycmVudEVycm9ycy5lcnJvcnM7XG4gICAgICAgICAgICBlcnJvclNjaGVtYSA9IGN1cnJlbnRFcnJvcnMuZXJyb3JTY2hlbWE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzLmV4dHJhRXJyb3JzKSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWQgPSB2YWxpZGF0aW9uRGF0YU1lcmdlKHsgZXJyb3JTY2hlbWEsIGVycm9ycyB9LCBwcm9wcy5leHRyYUVycm9ycyk7XG4gICAgICAgICAgICBlcnJvclNjaGVtYSA9IG1lcmdlZC5lcnJvclNjaGVtYTtcbiAgICAgICAgICAgIGVycm9ycyA9IG1lcmdlZC5lcnJvcnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWRTY2hlbWEgPSBzY2hlbWFVdGlscy50b0lkU2NoZW1hKF9yZXRyaWV2ZWRTY2hlbWEsIHVpU2NoZW1hWyd1aTpyb290RmllbGRJZCddLCBmb3JtRGF0YSwgcHJvcHMuaWRQcmVmaXgsIHByb3BzLmlkU2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgbmV4dFN0YXRlID0ge1xuICAgICAgICAgICAgc2NoZW1hVXRpbHMsXG4gICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICB1aVNjaGVtYSxcbiAgICAgICAgICAgIGlkU2NoZW1hLFxuICAgICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgICBlZGl0LFxuICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzLFxuICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hLFxuICAgICAgICAgICAgcmV0cmlldmVkU2NoZW1hOiBfcmV0cmlldmVkU2NoZW1hLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgIH1cbiAgICAvKiogUmVhY3QgbGlmZWN5Y2xlIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgY29tcG9uZW50IHNob3VsZCBiZSB1cGRhdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIG5leHRQcm9wcyAtIFRoZSBuZXh0IHZlcnNpb24gb2YgdGhlIHByb3BzXG4gICAgICogQHBhcmFtIG5leHRTdGF0ZSAtIFRoZSBuZXh0IHZlcnNpb24gb2YgdGhlIHN0YXRlXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSkge1xuICAgICAgICByZXR1cm4gc2hvdWxkUmVuZGVyKHRoaXMsIG5leHRQcm9wcywgbmV4dFN0YXRlKTtcbiAgICB9XG4gICAgLyoqIFZhbGlkYXRlcyB0aGUgYGZvcm1EYXRhYCBhZ2FpbnN0IHRoZSBgc2NoZW1hYCB1c2luZyB0aGUgYGFsdFNjaGVtYVV0aWxzYCAoaWYgcHJvdmlkZWQgb3RoZXJ3aXNlIGl0IHVzZXMgdGhlXG4gICAgICogYHNjaGVtYVV0aWxzYCBpbiB0aGUgc3RhdGUpLCByZXR1cm5pbmcgdGhlIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgbmV3IGZvcm0gZGF0YSB0byB2YWxpZGF0ZVxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIHVzZWQgdG8gdmFsaWRhdGUgYWdhaW5zdFxuICAgICAqIEBwYXJhbSBhbHRTY2hlbWFVdGlscyAtIFRoZSBhbHRlcm5hdGUgc2NoZW1hVXRpbHMgdG8gdXNlIGZvciB2YWxpZGF0aW9uXG4gICAgICovXG4gICAgdmFsaWRhdGUoZm9ybURhdGEsIHNjaGVtYSA9IHRoaXMucHJvcHMuc2NoZW1hLCBhbHRTY2hlbWFVdGlscywgcmV0cmlldmVkU2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYVV0aWxzID0gYWx0U2NoZW1hVXRpbHMgPyBhbHRTY2hlbWFVdGlscyA6IHRoaXMuc3RhdGUuc2NoZW1hVXRpbHM7XG4gICAgICAgIGNvbnN0IHsgY3VzdG9tVmFsaWRhdGUsIHRyYW5zZm9ybUVycm9ycywgdWlTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkU2NoZW1hID0gcmV0cmlldmVkU2NoZW1hICE9PSBudWxsICYmIHJldHJpZXZlZFNjaGVtYSAhPT0gdm9pZCAwID8gcmV0cmlldmVkU2NoZW1hIDogc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoc2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgICAgIHJldHVybiBzY2hlbWFVdGlsc1xuICAgICAgICAgICAgLmdldFZhbGlkYXRvcigpXG4gICAgICAgICAgICAudmFsaWRhdGVGb3JtRGF0YShmb3JtRGF0YSwgcmVzb2x2ZWRTY2hlbWEsIGN1c3RvbVZhbGlkYXRlLCB0cmFuc2Zvcm1FcnJvcnMsIHVpU2NoZW1hKTtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgYW55IGVycm9ycyBjb250YWluZWQgaW4gdGhlIGBzdGF0ZWAgaW4gdXNpbmcgdGhlIGBFcnJvckxpc3RgLCBpZiBub3QgZGlzYWJsZWQgYnkgYHNob3dFcnJvckxpc3RgLiAqL1xuICAgIHJlbmRlckVycm9ycyhyZWdpc3RyeSkge1xuICAgICAgICBjb25zdCB7IGVycm9ycywgZXJyb3JTY2hlbWEsIHNjaGVtYSwgdWlTY2hlbWEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IHsgZm9ybUNvbnRleHQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgICAgICBjb25zdCBFcnJvckxpc3RUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdFcnJvckxpc3RUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICAgICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gKF9qc3goRXJyb3JMaXN0VGVtcGxhdGUsIHsgZXJyb3JzOiBlcnJvcnMsIGVycm9yU2NoZW1hOiBlcnJvclNjaGVtYSB8fCB7fSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCByZWdpc3RyeTogcmVnaXN0cnkgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBGaWx0ZXJpbmcgZXJyb3JzIGJhc2VkIG9uIHlvdXIgcmV0cmlldmVkIHNjaGVtYSB0byBvbmx5IHNob3cgZXJyb3JzIGZvciBwcm9wZXJ0aWVzIGluIHRoZSBzZWxlY3RlZCBicmFuY2guXG4gICAgZmlsdGVyRXJyb3JzQmFzZWRPblNjaGVtYShzY2hlbWFFcnJvcnMsIHJlc29sdmVkU2NoZW1hLCBmb3JtRGF0YSkge1xuICAgICAgICBjb25zdCB7IHJldHJpZXZlZFNjaGVtYSwgc2NoZW1hVXRpbHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IF9yZXRyaWV2ZWRTY2hlbWEgPSByZXNvbHZlZFNjaGVtYSAhPT0gbnVsbCAmJiByZXNvbHZlZFNjaGVtYSAhPT0gdm9pZCAwID8gcmVzb2x2ZWRTY2hlbWEgOiByZXRyaWV2ZWRTY2hlbWE7XG4gICAgICAgIGNvbnN0IHBhdGhTY2hlbWEgPSBzY2hlbWFVdGlscy50b1BhdGhTY2hlbWEoX3JldHJpZXZlZFNjaGVtYSwgJycsIGZvcm1EYXRhKTtcbiAgICAgICAgY29uc3QgZmllbGROYW1lcyA9IHRoaXMuZ2V0RmllbGROYW1lcyhwYXRoU2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkRXJyb3JzID0gX3BpY2soc2NoZW1hRXJyb3JzLCBmaWVsZE5hbWVzKTtcbiAgICAgICAgLy8gSWYgdGhlIHJvb3Qgc2NoZW1hIGlzIG9mIGEgcHJpbWl0aXZlIHR5cGUsIGRvIG5vdCBmaWx0ZXIgb3V0IHRoZSBfX2Vycm9yc1xuICAgICAgICBpZiAoKHJlc29sdmVkU2NoZW1hID09PSBudWxsIHx8IHJlc29sdmVkU2NoZW1hID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNvbHZlZFNjaGVtYS50eXBlKSAhPT0gJ29iamVjdCcgJiYgKHJlc29sdmVkU2NoZW1hID09PSBudWxsIHx8IHJlc29sdmVkU2NoZW1hID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNvbHZlZFNjaGVtYS50eXBlKSAhPT0gJ2FycmF5Jykge1xuICAgICAgICAgICAgZmlsdGVyZWRFcnJvcnMuX19lcnJvcnMgPSBzY2hlbWFFcnJvcnMuX19lcnJvcnM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVtb3ZpbmcgdW5kZWZpbmVkLCBudWxsIGFuZCBlbXB0eSBlcnJvcnMuXG4gICAgICAgIGNvbnN0IGZpbHRlck5pbE9yRW1wdHlFcnJvcnMgPSAoZXJyb3JzKSA9PiB7XG4gICAgICAgICAgICBfZm9yRWFjaChlcnJvcnMsIChlcnJvckF0S2V5LCBlcnJvcktleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChfaXNOaWwoZXJyb3JBdEtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVycm9yc1tlcnJvcktleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBlcnJvckF0S2V5ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShlcnJvckF0S2V5Ll9fZXJyb3JzKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJOaWxPckVtcHR5RXJyb3JzKGVycm9yQXRLZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZpbHRlck5pbE9yRW1wdHlFcnJvcnMoZmlsdGVyZWRFcnJvcnMpO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgcmVnaXN0cnkgZm9yIHRoZSBmb3JtICovXG4gICAgZ2V0UmVnaXN0cnkoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmc6IGN1c3RvbVRyYW5zbGF0ZVN0cmluZywgdWlTY2hlbWEgPSB7fSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBzY2hlbWFVdGlscyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgY29uc3QgeyBmaWVsZHMsIHRlbXBsYXRlcywgd2lkZ2V0cywgZm9ybUNvbnRleHQsIHRyYW5zbGF0ZVN0cmluZyB9ID0gZ2V0RGVmYXVsdFJlZ2lzdHJ5KCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWVsZHM6IHsgLi4uZmllbGRzLCAuLi50aGlzLnByb3BzLmZpZWxkcyB9LFxuICAgICAgICAgICAgdGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAgICAgLi4udGVtcGxhdGVzLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMucHJvcHMudGVtcGxhdGVzLFxuICAgICAgICAgICAgICAgIEJ1dHRvblRlbXBsYXRlczoge1xuICAgICAgICAgICAgICAgICAgICAuLi50ZW1wbGF0ZXMuQnV0dG9uVGVtcGxhdGVzLFxuICAgICAgICAgICAgICAgICAgICAuLi4oX2EgPSB0aGlzLnByb3BzLnRlbXBsYXRlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLkJ1dHRvblRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdpZGdldHM6IHsgLi4ud2lkZ2V0cywgLi4udGhpcy5wcm9wcy53aWRnZXRzIH0sXG4gICAgICAgICAgICByb290U2NoZW1hOiB0aGlzLnByb3BzLnNjaGVtYSxcbiAgICAgICAgICAgIGZvcm1Db250ZXh0OiB0aGlzLnByb3BzLmZvcm1Db250ZXh0IHx8IGZvcm1Db250ZXh0LFxuICAgICAgICAgICAgc2NoZW1hVXRpbHMsXG4gICAgICAgICAgICB0cmFuc2xhdGVTdHJpbmc6IGN1c3RvbVRyYW5zbGF0ZVN0cmluZyB8fCB0cmFuc2xhdGVTdHJpbmcsXG4gICAgICAgICAgICBnbG9iYWxVaU9wdGlvbnM6IHVpU2NoZW1hW1VJX0dMT0JBTF9PUFRJT05TX0tFWV0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBBdHRlbXB0cyB0byBmb2N1cyBvbiB0aGUgZmllbGQgYXNzb2NpYXRlZCB3aXRoIHRoZSBgZXJyb3JgLiBVc2VzIHRoZSBgcHJvcGVydHlgIGZpZWxkIHRvIGNvbXB1dGUgcGF0aCBvZiB0aGUgZXJyb3JcbiAgICAgKiBmaWVsZCwgdGhlbiwgdXNpbmcgdGhlIGBpZFByZWZpeGAgYW5kIGBpZFNlcGFyYXRvcmAgY29udmVydHMgdGhhdCBwYXRoIGludG8gYW4gaWQuIFRoZW4gdGhlIGlucHV0IGVsZW1lbnQgd2l0aCB0aGF0XG4gICAgICogaWQgaXMgYXR0ZW1wdGVkIHRvIGJlIGZvdW5kIHVzaW5nIHRoZSBgZm9ybUVsZW1lbnRgIHJlZi4gSWYgaXQgaXMgbG9jYXRlZCwgdGhlbiBpdCBpcyBmb2N1c2VkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIG9uIHdoaWNoIHRvIGZvY3VzXG4gICAgICovXG4gICAgZm9jdXNPbkVycm9yKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IHsgaWRQcmVmaXggPSAncm9vdCcsIGlkU2VwYXJhdG9yID0gJ18nIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHByb3BlcnR5IH0gPSBlcnJvcjtcbiAgICAgICAgY29uc3QgcGF0aCA9IF90b1BhdGgocHJvcGVydHkpO1xuICAgICAgICBpZiAocGF0aFswXSA9PT0gJycpIHtcbiAgICAgICAgICAgIC8vIE1vc3Qgb2YgdGhlIHRpbWUgdGhlIGAuZm9vYCBwcm9wZXJ0eSByZXN1bHRzIGluIHRoZSBmaXJzdCBlbGVtZW50IGJlaW5nIGVtcHR5LCBzbyByZXBsYWNlIGl0IHdpdGggdGhlIGlkUHJlZml4XG4gICAgICAgICAgICBwYXRoWzBdID0gaWRQcmVmaXg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBPdGhlcndpc2UgaW5zZXJ0IHRoZSBpZFByZWZpeCBpbnRvIHRoZSBmaXJzdCBsb2NhdGlvbiB1c2luZyB1bnNoaWZ0XG4gICAgICAgICAgICBwYXRoLnVuc2hpZnQoaWRQcmVmaXgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IHBhdGguam9pbihpZFNlcGFyYXRvcik7XG4gICAgICAgIGxldCBmaWVsZCA9IHRoaXMuZm9ybUVsZW1lbnQuY3VycmVudC5lbGVtZW50c1tlbGVtZW50SWRdO1xuICAgICAgICBpZiAoIWZpZWxkKSB7XG4gICAgICAgICAgICAvLyBpZiBub3QgYW4gZXhhY3QgbWF0Y2gsIHRyeSBmaW5kaW5nIGFuIGlucHV0IHN0YXJ0aW5nIHdpdGggdGhlIGVsZW1lbnQgaWQgKGxpa2UgcmFkaW8gYnV0dG9ucyBvciBjaGVja2JveGVzKVxuICAgICAgICAgICAgZmllbGQgPSB0aGlzLmZvcm1FbGVtZW50LmN1cnJlbnQucXVlcnlTZWxlY3RvcihgaW5wdXRbaWRePVwiJHtlbGVtZW50SWR9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBnb3QgYSBsaXN0IHdpdGggbGVuZ3RoID4gMFxuICAgICAgICAgICAgZmllbGQgPSBmaWVsZFswXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIGZpZWxkLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIFByb2dyYW1tYXRpY2FsbHkgdmFsaWRhdGUgdGhlIGZvcm0uICBJZiBgb21pdEV4dHJhRGF0YWAgaXMgdHJ1ZSwgdGhlIGBmb3JtRGF0YWAgd2lsbCBmaXJzdCBiZSBmaWx0ZXJlZCB0byByZW1vdmVcbiAgICAgKiBhbnkgZXh0cmEgZGF0YSBub3QgaW4gYSBmb3JtIGZpZWxkLiBJZiBgb25FcnJvcmAgaXMgcHJvdmlkZWQsIHRoZW4gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgbGlzdCBvZiBlcnJvcnMgdGhlXG4gICAgICogc2FtZSB3YXkgYXMgd291bGQgaGFwcGVuIG9uIGZvcm0gc3VibWlzc2lvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgZm9ybSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHZhbGlkYXRlRm9ybSgpIHtcbiAgICAgICAgY29uc3QgeyBvbWl0RXh0cmFEYXRhIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBsZXQgeyBmb3JtRGF0YTogbmV3Rm9ybURhdGEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGlmIChvbWl0RXh0cmFEYXRhID09PSB0cnVlKSB7XG4gICAgICAgICAgICBuZXdGb3JtRGF0YSA9IHRoaXMub21pdEV4dHJhRGF0YShuZXdGb3JtRGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVGb3JtV2l0aEZvcm1EYXRhKG5ld0Zvcm1EYXRhKTtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgdGhlIGBGb3JtYCBmaWVsZHMgaW5zaWRlIHRoZSA8Zm9ybT4gfCBgdGFnTmFtZWAgb3IgYF9pbnRlcm5hbEZvcm1XcmFwcGVyYCwgcmVuZGVyaW5nIGFueSBlcnJvcnMgaWZcbiAgICAgKiBuZWVkZWQgYWxvbmcgd2l0aCB0aGUgc3VibWl0IGJ1dHRvbiBvciBhbnkgY2hpbGRyZW4gb2YgdGhlIGZvcm0uXG4gICAgICovXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGNoaWxkcmVuLCBpZCwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBjbGFzc05hbWUgPSAnJywgdGFnTmFtZSwgbmFtZSwgbWV0aG9kLCB0YXJnZXQsIGFjdGlvbiwgYXV0b0NvbXBsZXRlLCBlbmN0eXBlLCBhY2NlcHRjaGFyc2V0LCBhY2NlcHRDaGFyc2V0LCBub0h0bWw1VmFsaWRhdGUgPSBmYWxzZSwgZGlzYWJsZWQsIHJlYWRvbmx5LCBmb3JtQ29udGV4dCwgc2hvd0Vycm9yTGlzdCA9ICd0b3AnLCBfaW50ZXJuYWxGb3JtV3JhcHBlciwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCB1aVNjaGVtYSwgZm9ybURhdGEsIGVycm9yU2NoZW1hLCBpZFNjaGVtYSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSB0aGlzLmdldFJlZ2lzdHJ5KCk7XG4gICAgICAgIGNvbnN0IHsgU2NoZW1hRmllbGQ6IF9TY2hlbWFGaWVsZCB9ID0gcmVnaXN0cnkuZmllbGRzO1xuICAgICAgICBjb25zdCB7IFN1Ym1pdEJ1dHRvbiB9ID0gcmVnaXN0cnkudGVtcGxhdGVzLkJ1dHRvblRlbXBsYXRlcztcbiAgICAgICAgLy8gVGhlIGBzZW1hbnRpYy11aWAgYW5kIGBtYXRlcmlhbC11aWAgdGhlbWVzIGhhdmUgYF9pbnRlcm5hbEZvcm1XcmFwcGVyYHMgdGhhdCB0YWtlIGFuIGBhc2AgcHJvcCB0aGF0IGlzIHRoZVxuICAgICAgICAvLyBQcm9wVHlwZXMuZWxlbWVudFR5cGUgdG8gdXNlIGZvciB0aGUgaW5uZXIgdGFnLCBzbyB3ZSdsbCBuZWVkIHRvIHBhc3MgYHRhZ05hbWVgIGFsb25nIGlmIGl0IGlzIHByb3ZpZGVkLlxuICAgICAgICAvLyBOT1RFLCB0aGUgYGFzYCBwcm9wIGlzIG5hdGl2ZSB0byBgc2VtYW50aWMtdWlgIGFuZCBpcyBlbXVsYXRlZCBpbiB0aGUgYG1hdGVyaWFsLXVpYCB0aGVtZVxuICAgICAgICBjb25zdCBhcyA9IF9pbnRlcm5hbEZvcm1XcmFwcGVyID8gdGFnTmFtZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgRm9ybVRhZyA9IF9pbnRlcm5hbEZvcm1XcmFwcGVyIHx8IHRhZ05hbWUgfHwgJ2Zvcm0nO1xuICAgICAgICBsZXQgeyBbU1VCTUlUX0JUTl9PUFRJT05TX0tFWV06IHN1Ym1pdE9wdGlvbnMgPSB7fSB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICBzdWJtaXRPcHRpb25zID0geyAuLi5zdWJtaXRPcHRpb25zLCBwcm9wczogeyAuLi5zdWJtaXRPcHRpb25zLnByb3BzLCBkaXNhYmxlZDogdHJ1ZSB9IH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3VibWl0VWlTY2hlbWEgPSB7IFtVSV9PUFRJT05TX0tFWV06IHsgW1NVQk1JVF9CVE5fT1BUSU9OU19LRVldOiBzdWJtaXRPcHRpb25zIH0gfTtcbiAgICAgICAgcmV0dXJuIChfanN4cyhGb3JtVGFnLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lID8gY2xhc3NOYW1lIDogJ3Jqc2YnLCBpZDogaWQsIG5hbWU6IG5hbWUsIG1ldGhvZDogbWV0aG9kLCB0YXJnZXQ6IHRhcmdldCwgYWN0aW9uOiBhY3Rpb24sIGF1dG9Db21wbGV0ZTogYXV0b0NvbXBsZXRlLCBlbmNUeXBlOiBlbmN0eXBlLCBhY2NlcHRDaGFyc2V0OiBhY2NlcHRDaGFyc2V0IHx8IGFjY2VwdGNoYXJzZXQsIG5vVmFsaWRhdGU6IG5vSHRtbDVWYWxpZGF0ZSwgb25TdWJtaXQ6IHRoaXMub25TdWJtaXQsIGFzOiBhcywgcmVmOiB0aGlzLmZvcm1FbGVtZW50LCBjaGlsZHJlbjogW3Nob3dFcnJvckxpc3QgPT09ICd0b3AnICYmIHRoaXMucmVuZGVyRXJyb3JzKHJlZ2lzdHJ5KSwgX2pzeChfU2NoZW1hRmllbGQsIHsgbmFtZTogJycsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIGVycm9yU2NoZW1hOiBlcnJvclNjaGVtYSwgaWRTY2hlbWE6IGlkU2NoZW1hLCBpZFByZWZpeDogaWRQcmVmaXgsIGlkU2VwYXJhdG9yOiBpZFNlcGFyYXRvciwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBmb3JtRGF0YTogZm9ybURhdGEsIG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLCBvbkJsdXI6IHRoaXMub25CbHVyLCBvbkZvY3VzOiB0aGlzLm9uRm9jdXMsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHkgfSksIGNoaWxkcmVuID8gY2hpbGRyZW4gOiBfanN4KFN1Ym1pdEJ1dHRvbiwgeyB1aVNjaGVtYTogc3VibWl0VWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSwgc2hvd0Vycm9yTGlzdCA9PT0gJ2JvdHRvbScgJiYgdGhpcy5yZW5kZXJFcnJvcnMocmVnaXN0cnkpXSB9KSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9ybS5qcy5tYXAiLCJleHBvcnQgY2xhc3MgQ291bnRyeSB7XG4gICAgdXVpZDogU3RyaW5nID0gXCJcIlxuICAgIHRpdGxlOiBTdHJpbmcgPSBcIlwiXG4gICAgY29kZTogU3RyaW5nID0gXCJcIlxuICAgIHVzZVZhdFdpdGhVc3RJZDogYm9vbGVhbiA9IHRydWVcbiAgICB1c2VWYXRXaXRob3V0VXN0SWQ6IGJvb2xlYW4gPSB0cnVlXG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnV1aWQgPSBpdGVtLnV1aWRcbiAgICAgICAgdGhpcy50aXRsZSA9IGl0ZW0udGl0bGVcbiAgICAgICAgdGhpcy5jb2RlID0gaXRlbS5jb2RlXG4gICAgICAgIHRoaXMudXNlVmF0V2l0aFVzdElkID0gaXRlbS51c2VWYXRXaXRoVXN0SWRcbiAgICAgICAgdGhpcy51c2VWYXRXaXRob3V0VXN0SWQgPSBpdGVtLnVzZVZhdFdpdGhvdXRVc3RJZFxuICAgIH1cbn0iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uL21vZGVsL3Nob3BcIlxuaW1wb3J0IHsgQ291bnRyeSB9IGZyb20gXCIuLi9tb2RlbC9jb3VudHJ5XCJcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvdW50cnlTZXJ2aWNlIHtcblxuICBhc3luYyBnZXRDb3VudHJ5KHNob3A6IFNob3ApOiBQcm9taXNlPENvdW50cnlbXT4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL2NvdW50cnkvYnkvc2hvcC8nICsgIHNob3AudXVpZCkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IGNvdW50cnkgPSBuZXcgQ291bnRyeSgpXG4gICAgICAgICAgY291bnRyeS5wYXJzZUZyb21Kc29uKGl0ZW0pXG4gICAgICAgICAgcmV0dXJuIGNvdW50cnlcbiAgICAgICAgfSlcbiAgICBcbiAgICB9KVxuICB9XG59XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IE5pY2VNb2RhbCwgeyB1c2VNb2RhbCwgYm9vdHN0cmFwRGlhbG9nIH0gZnJvbSBcIkBlYmF5L25pY2UtbW9kYWwtcmVhY3RcIjtcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vYmFzZS9CdXR0b24nXG5pbXBvcnQge1JKU0ZTY2hlbWF9IGZyb20gXCJAcmpzZi91dGlsc1wiO1xuaW1wb3J0IHtDb250YWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvY29udGFjdFwiO1xuaW1wb3J0IHZhbGlkYXRvciBmcm9tIFwiQHJqc2YvdmFsaWRhdG9yLWFqdjZcIjtcbmltcG9ydCBGb3JtIGZyb20gXCJAcmpzZi9jb3JlXCI7XG5pbXBvcnQge0NvdW50cnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY291bnRyeVwiO1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tIFwiZmxvd2JpdGUtcmVhY3RcIjtcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgQ29udGFjdE1vZGFsID0gTmljZU1vZGFsLmNyZWF0ZShcbiAgICAoeyB0aXRsZSwgYWN0aW9uLCBjb250YWN0LCBzaG9wIH0pID0+IHtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGNvdW50cnlfYXBpID0gbmV3IENvdW50cnlTZXJ2aWNlKClcblxuICAgICAgICBjb25zdCBtb2RhbCA9IHVzZU1vZGFsKCk7XG4gICAgICAgIGNvbnN0IFtmb3JtRGF0YSwgc2V0Rm9ybURhdGFdID0gdXNlU3RhdGUoe30pO1xuXG4gICAgICAgIGNvbnN0IFtzY2hlbWEsIHNldFNjaGVtYV0gPSB1c2VTdGF0ZTxSSlNGU2NoZW1hPih7fSlcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYoY29udGFjdC51aWQgIT0gXCJcIikge1xuICAgICAgICAgICAgICAgIHNldEZvcm1EYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IGNvbnRhY3QudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0bmFtZTogY29udGFjdC5sYXlvdXRlcl9kYXRhLmZpcnN0bmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbGFzdG5hbWU6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS5sYXN0bmFtZSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGFueTogY29udGFjdC5sYXlvdXRlcl9kYXRhLmNvbXBhbnksXG4gICAgICAgICAgICAgICAgICAgIHN0cmVldDogY29udGFjdC5sYXlvdXRlcl9kYXRhLnN0cmVldCxcbiAgICAgICAgICAgICAgICAgICAgaG91c2VOdW1iZXI6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS5ob3VzZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgemlwOiBjb250YWN0LmxheW91dGVyX2RhdGEuemlwLFxuICAgICAgICAgICAgICAgICAgICBjaXR5OiBjb250YWN0LmxheW91dGVyX2RhdGEuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeTogY29udGFjdC5sYXlvdXRlcl9kYXRhLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgIHVzdGlkOiBjb250YWN0LmxheW91dGVyX2RhdGEudXN0aWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBbY29udGFjdF0pO1xuXG4gICAgICAgIGNvbnN0IHVpU2NoZW1hOiBSSlNGU2NoZW1hID0ge1xuICAgICAgICAgICAgXCJ1aTpzdWJtaXRCdXR0b25PcHRpb25zXCI6IHtcbiAgICAgICAgICAgICAgICBcInN1Ym1pdFRleHRcIjogXCJTYXZlXCIsXG4gICAgICAgICAgICAgICAgXCJub3JlbmRlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgIFwicHJvcHNcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRpc2FibGVkXCI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBcImNsYXNzTmFtZVwiOiBcImJ0biBidG4taW5mb1wiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY291bnRyeV9hcGkuZ2V0Q291bnRyeShzaG9wKS50aGVuKCggZGF0YSApID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgY291bnRyeXMgPSBbXTtcblxuICAgICAgICAgICAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb3VudHJ5cy5wdXNoKHsndGl0bGUnOiBpdGVtLmNvZGUsICdjb25zdCc6IGl0ZW0uY29kZX0pXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHZhciBzY2hlbWE6IFJKU0ZTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQ29udGFjdCcsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWydlbWFpbCddLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogeyB0eXBlOiAnc3RyaW5nJywgZm9ybWF0OiAnZW1haWwnLCB0aXRsZTogJ0UtTWFpbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhbnk6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnQ29tcGFueSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0ZpcnN0bmFtZSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnTGFzdG5hbWUnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVldDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdTdHJlZXQnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXNlTnVtYmVyOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0hvdXNlbnVtYmVyJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICB6aXA6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnWmlwJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0NpdHknfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ1Bob25lJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICB1c3RpZDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdVc3RJZCd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdDb3VudHJ5Jywgb25lT2Y6IGNvdW50cnlzfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHNldFNjaGVtYShzY2hlbWEpXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgW10pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TW9kYWwgc2hvdz17bW9kYWwudmlzaWJsZX0gb25DbG9zZT17KCkgPT4gbW9kYWwucmVtb3ZlKCl9PlxuICAgICAgICAgICAgICAgIDxNb2RhbC5IZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgICAgICAgICA8L01vZGFsLkhlYWRlcj5cbiAgICAgICAgICAgICAgICA8TW9kYWwuQm9keT5cbiAgICAgICAgICAgICAgICAgICAge2FjdGlvbiA9PT0gXCJTYXZlXCIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWE9e3NjaGVtYX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YT17Zm9ybURhdGF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlTY2hlbWE9e3VpU2NoZW1hfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcj17dmFsaWRhdG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Rm9ybURhdGEoZS5mb3JtRGF0YSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Nb2RhbC5Cb2R5PlxuICAgICAgICAgICAgICAgIDxNb2RhbC5Gb290ZXI+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9ezN9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gXCJTYXZlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlc29sdmUoZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9ezR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwid2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvTW9kYWwuRm9vdGVyPlxuICAgICAgICAgICAgPC9Nb2RhbD5cbiAgICAgICAgKTtcbiAgICB9XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBDb250YWN0TW9kYWw7XG4iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiXG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tIFwiLi4vbW9kZWwvYWRkcmVzc1wiXG5cbkBzaW5nbGV0b24oKVxuQGF1dG9JbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBZGRyZXNzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW4/OiBUb2tlbikge31cblxuICBhc3luYyBjcmVhdGUoYWRkcmVzczogQWRkcmVzcyk6IFByb21pc2U8QWRkcmVzcz4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLnBvc3QoJy9hcHBzL2FwaS9jb250YWN0L2FkZHJlc3MvY3JlYXRlJywgeydhZGRyZXNzJzogYWRkcmVzc30gLHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YVxuICAgIH0pXG4gIH1cblxuICBhc3luYyB1cGRhdGUoYWRkcmVzczogQWRkcmVzcyk6IFByb21pc2U8QWRkcmVzcz4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLnB1dCgnL2FwcHMvYXBpL2NvbnRhY3QvYWRkcmVzcy91cGRhdGUvJyArIGFkZHJlc3MudXVpZCwgeydhZGRyZXNzJzogYWRkcmVzc30gLHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YVxuICAgIH0pXG4gIH1cblxuICBhc3luYyBnZXRDb250YWN0QWRkcmVzcyhjb250YWN0OiBTdHJpbmcsIHR5cGU6IE51bWJlcik6IFByb21pc2U8QWRkcmVzc1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL2NvbnRhY3QvYWRkcmVzcy9nZXRhbGxmb3J0eXBlLycgKyBjb250YWN0ICsgJy8nICsgdHlwZSwge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICB9XG4gICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBsZXQgYWRkcmVzcyA9IG5ldyBBZGRyZXNzXG4gICAgICAgIGFkZHJlc3MudWlkID0gaXRlbS51aWRcbiAgICAgICAgYWRkcmVzcy5maXJzdG5hbWUgPSBpdGVtLmZpcnN0bmFtZVxuICAgICAgICBhZGRyZXNzLmxhc3RuYW1lID0gaXRlbS5sYXN0bmFtZVxuICAgICAgICBhZGRyZXNzLnN0cmVldCA9IGl0ZW0uc3RyZWV0XG4gICAgICAgIGFkZHJlc3MuY291bnRyeSA9IGl0ZW0uY291bnRyeVxuICAgICAgICBhZGRyZXNzLnVzdGlkID0gaXRlbS51c3RpZFxuICAgICAgICBhZGRyZXNzLmhvdXNlTnVtYmVyID0gaXRlbS5ob3VzZU51bWJlclxuICAgICAgICBhZGRyZXNzLnppcCA9IGl0ZW0uemlwXG4gICAgICAgIGFkZHJlc3MuY2l0eSA9IGl0ZW0uY2l0eVxuICAgICAgICBhZGRyZXNzLmNvbXBhbnkgPSBpdGVtLmNvbXBhbnlcbiAgICAgICAgYWRkcmVzcy5jb21wYW55MiA9IGl0ZW0uY29tcGFueTJcbiAgICAgICAgYWRkcmVzcy51dWlkID0gaXRlbS51dWlkXG4gICAgICAgIHJldHVybiBhZGRyZXNzXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbiIsImltcG9ydCB7Q29udGFjdH0gZnJvbSBcIi4uLy4uL21vZGVsL2NvbnRhY3RcIlxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7U2hvcH0gZnJvbSBcIi4uLy4uL21vZGVsL3Nob3BcIlxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vYmFzZS9CdXR0b25cIlxuaW1wb3J0IENvbnRhY3RNb2RhbCBmcm9tIFwiLi9Db250YWN0TW9kYWxcIlxuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZU1vZGFsIH0gZnJvbSAnQGViYXkvbmljZS1tb2RhbC1yZWFjdCdcbmltcG9ydCB7IENvbnRhY3RTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2NvbnRhY3RcIlxuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gXCIuLi8uLi9tb2RlbC9hZGRyZXNzXCJcbmltcG9ydCB7IEFkZHJlc3NTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2FkZHJlc3NcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBDb250YWN0TW9kYWxDb21wb25lbnQgPSAoe3Nob3AsIGhhbmRsZUFkZCwgaGFuZGxlRWRpdCwgY29udGFjdH0pID0+IHtcblxuICAgIFxuICAgIGNvbnN0IGNvbnRhY3RNb2RhbCA9IHVzZU1vZGFsKENvbnRhY3RNb2RhbClcblxuICAgIGNvbnN0IHNob3dBZGRNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgY29udGFjdE1vZGFsLnNob3coe3RpdGxlOiAnQWRkIENvbnRhY3QnLCBhY3Rpb246ICdTYXZlJywgc2hvcDogc2hvcCwgY29udGFjdDogbmV3IENvbnRhY3QoKX0pLnRoZW4oKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBhZGRDb250YWN0KGZvcm1EYXRhKVxuICAgICAgICB9KVxuICAgIH0sW2NvbnRhY3RNb2RhbF0pXG5cbiAgICBjb25zdCBzaG93RWRpdE1vZGFsID0gdXNlQ2FsbGJhY2soKGNvbnRhY3QpID0+IHtcbiAgICAgICAgY29udGFjdCA9IGNvbnRhY3RcbiAgICAgICAgY29udGFjdE1vZGFsLnNob3coeyB0aXRsZTogJ0VkaXQgQ29udGFjdCcsIGFjdGlvbjogJ1NhdmUnLCBjb250YWN0OiBjb250YWN0LCBzaG9wOiBzaG9wIH0pLnRoZW4oKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBjb250YWN0LnBhcnNlRnJvbUZvcm1EYXRhKGZvcm1EYXRhKVxuICAgICAgICAgICAgdXBkYXRlQ29udGFjdChjb250YWN0KVxuICAgICAgICB9KVxuICAgIH0sW2NvbnRhY3RNb2RhbF0pXG5cbiAgICBjb25zdCB1cGRhdGVDb250YWN0ID0gKGNvbnRhY3QpID0+IHtcbiAgICAgICAgY29uc3QgY29udGFjdF9hcGkgPSBuZXcgQ29udGFjdFNlcnZpY2UoKVxuICAgICAgICBjb250YWN0X2FwaS51cGRhdGVDb250YWN0KGNvbnRhY3QpLnRoZW4oKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgaGFuZGxlRWRpdChjb250YWN0KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGFkZENvbnRhY3QgPSAoZm9ybURhdGEpID0+IHtcbiAgICAgICAgdmFyIGNvbnRhY3QgPSBuZXcgQ29udGFjdCgpXG4gICAgICAgIGNvbnRhY3QucGFyc2VGcm9tRm9ybURhdGEoZm9ybURhdGEsIHNob3ApXG4gICAgICAgIGNvbnN0IGNvbnRhY3RfYXBpID0gbmV3IENvbnRhY3RTZXJ2aWNlKClcbiAgICAgICAgY29udGFjdF9hcGkuY3JlYXRlQ29udGFjdChjb250YWN0KS50aGVuKChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnRhY3QucGFyc2VGcm9tSnNvbihlKVxuICAgICAgICAgICAgdmFyIGFkZHJlc3MgPSBuZXcgQWRkcmVzcygpXG4gICAgICAgICAgICBhZGRyZXNzLnBhcnNlRnJvbUZvcm1EYXRhKGZvcm1EYXRhKVxuICAgICAgICAgICAgYWRkcmVzcy5jb250YWN0LnV1aWQgPSBjb250YWN0LnV1aWRcbiAgICAgICAgICAgIGFkZHJlc3MudHlwZSA9IDFcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NfYXBpID0gbmV3IEFkZHJlc3NTZXJ2aWNlKClcbiAgICAgICAgICAgIGFkZHJlc3NfYXBpLmNyZWF0ZShhZGRyZXNzKVxuICAgICAgICAgICAgYWRkcmVzcy50eXBlID0gMlxuICAgICAgICAgICAgYWRkcmVzc19hcGkuY3JlYXRlKGFkZHJlc3MpXG5cbiAgICAgICAgICAgIGhhbmRsZUFkZChjb250YWN0KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleCBnYXAtMSd9PlxuICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPXsxfSB2YXJpYW50PVwic3VjY2Vzc1wiIG9uQ2xpY2s9e3Nob3dBZGRNb2RhbH0gLz5cbiAgICAgICAgICAgIDxCdXR0b24gdHlwZT17Mn0gdmFyaWFudD1cImluZm9cIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2hvd0VkaXRNb2RhbChjb250YWN0KVxuICAgICAgICAgICAgfX0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG5Db250YWN0TW9kYWxDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICAgIGhhbmRsZUFkZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFuZGxlRWRpdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY29udGFjdDogUHJvcFR5cGVzLmluc3RhbmNlT2YoQ29udGFjdClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29udGFjdE1vZGFsQ29tcG9uZW50XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cblxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XG4gIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XG4gIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG59XG5cbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcbiAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0O1xuICB9XG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICB0W3BdID0gc1twXTtcbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICB9XG4gIHJldHVybiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xuICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2VzRGVjb3JhdGUoY3RvciwgZGVzY3JpcHRvckluLCBkZWNvcmF0b3JzLCBjb250ZXh0SW4sIGluaXRpYWxpemVycywgZXh0cmFJbml0aWFsaXplcnMpIHtcbiAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XG4gIHZhciBraW5kID0gY29udGV4dEluLmtpbmQsIGtleSA9IGtpbmQgPT09IFwiZ2V0dGVyXCIgPyBcImdldFwiIDoga2luZCA9PT0gXCJzZXR0ZXJcIiA/IFwic2V0XCIgOiBcInZhbHVlXCI7XG4gIHZhciB0YXJnZXQgPSAhZGVzY3JpcHRvckluICYmIGN0b3IgPyBjb250ZXh0SW5bXCJzdGF0aWNcIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsO1xuICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcbiAgdmFyIF8sIGRvbmUgPSBmYWxzZTtcbiAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBjb250ZXh0ID0ge307XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbikgY29udGV4dFtwXSA9IHAgPT09IFwiYWNjZXNzXCIgPyB7fSA6IGNvbnRleHRJbltwXTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluLmFjY2VzcykgY29udGV4dC5hY2Nlc3NbcF0gPSBjb250ZXh0SW4uYWNjZXNzW3BdO1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcbiAgICAgIHZhciByZXN1bHQgPSAoMCwgZGVjb3JhdG9yc1tpXSkoa2luZCA9PT0gXCJhY2Nlc3NvclwiID8geyBnZXQ6IGRlc2NyaXB0b3IuZ2V0LCBzZXQ6IGRlc2NyaXB0b3Iuc2V0IH0gOiBkZXNjcmlwdG9yW2tleV0sIGNvbnRleHQpO1xuICAgICAgaWYgKGtpbmQgPT09IFwiYWNjZXNzb3JcIikge1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCB0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkXCIpO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuaW5pdCkpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XG4gICAgICAgICAgaWYgKGtpbmQgPT09IFwiZmllbGRcIikgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICAgICAgZWxzZSBkZXNjcmlwdG9yW2tleV0gPSBfO1xuICAgICAgfVxuICB9XG4gIGlmICh0YXJnZXQpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGNvbnRleHRJbi5uYW1lLCBkZXNjcmlwdG9yKTtcbiAgZG9uZSA9IHRydWU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xuICB2YXIgdXNlVmFsdWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0aWFsaXplcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcbiAgfVxuICByZXR1cm4gdXNlVmFsdWUgPyB2YWx1ZSA6IHZvaWQgMDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Byb3BLZXkoeCkge1xuICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIikgbmFtZSA9IG5hbWUuZGVzY3JpcHRpb24gPyBcIltcIi5jb25jYXQobmFtZS5kZXNjcmlwdGlvbiwgXCJdXCIpIDogXCJcIjtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCBcIm5hbWVcIiwgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBwcmVmaXggPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiIFwiLCBuYW1lKSA6IG5hbWUgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xuICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufVxuXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgb1trMl0gPSBtW2tdO1xufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xuICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XG4gIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XG4gIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFtKSByZXR1cm4gbztcbiAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gIHRyeSB7XG4gICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgfVxuICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgfVxuICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gIH1cbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcbiAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XG4gIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXG4gICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgICAgICByW2tdID0gYVtqXTtcbiAgcmV0dXJuIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XG4gIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcbiAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XG4gIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxuICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XG4gIHZhciBpLCBwO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xuICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICByZXR1cm4gY29va2VkO1xufTtcblxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcbiAgb1tcImRlZmF1bHRcIl0gPSB2O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcbiAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XG4gIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XG4gIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcbiAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XG4gIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZShlbnYsIHZhbHVlLCBhc3luYykge1xuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWQuXCIpO1xuICAgIHZhciBkaXNwb3NlO1xuICAgIGlmIChhc3luYykge1xuICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0Rpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNEaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xuICAgIH1cbiAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGlmICghU3ltYm9sLmRpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuZGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuZGlzcG9zZV07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGlzcG9zZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IG5vdCBkaXNwb3NhYmxlLlwiKTtcbiAgICBlbnYuc3RhY2sucHVzaCh7IHZhbHVlOiB2YWx1ZSwgZGlzcG9zZTogZGlzcG9zZSwgYXN5bmM6IGFzeW5jIH0pO1xuICB9XG4gIGVsc2UgaWYgKGFzeW5jKSB7XG4gICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XG4gIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGlzcG9zZVJlc291cmNlcyhlbnYpIHtcbiAgZnVuY3Rpb24gZmFpbChlKSB7XG4gICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xuICAgIGVudi5oYXNFcnJvciA9IHRydWU7XG4gIH1cbiAgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICB3aGlsZSAoZW52LnN0YWNrLmxlbmd0aCkge1xuICAgICAgdmFyIHJlYyA9IGVudi5zdGFjay5wb3AoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWMuZGlzcG9zZSAmJiByZWMuZGlzcG9zZS5jYWxsKHJlYy52YWx1ZSk7XG4gICAgICAgIGlmIChyZWMuYXN5bmMpIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKG5leHQsIGZ1bmN0aW9uKGUpIHsgZmFpbChlKTsgcmV0dXJuIG5leHQoKTsgfSk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgIGZhaWwoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbnYuaGFzRXJyb3IpIHRocm93IGVudi5lcnJvcjtcbiAgfVxuICByZXR1cm4gbmV4dCgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIF9fZXh0ZW5kcyxcbiAgX19hc3NpZ24sXG4gIF9fcmVzdCxcbiAgX19kZWNvcmF0ZSxcbiAgX19wYXJhbSxcbiAgX19tZXRhZGF0YSxcbiAgX19hd2FpdGVyLFxuICBfX2dlbmVyYXRvcixcbiAgX19jcmVhdGVCaW5kaW5nLFxuICBfX2V4cG9ydFN0YXIsXG4gIF9fdmFsdWVzLFxuICBfX3JlYWQsXG4gIF9fc3ByZWFkLFxuICBfX3NwcmVhZEFycmF5cyxcbiAgX19zcHJlYWRBcnJheSxcbiAgX19hd2FpdCxcbiAgX19hc3luY0dlbmVyYXRvcixcbiAgX19hc3luY0RlbGVnYXRvcixcbiAgX19hc3luY1ZhbHVlcyxcbiAgX19tYWtlVGVtcGxhdGVPYmplY3QsXG4gIF9faW1wb3J0U3RhcixcbiAgX19pbXBvcnREZWZhdWx0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4sXG4gIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxuICBfX2Rpc3Bvc2VSZXNvdXJjZXMsXG59O1xuIiwiZXhwb3J0IHZhciBNUyA9ICctbXMtJ1xuZXhwb3J0IHZhciBNT1ogPSAnLW1vei0nXG5leHBvcnQgdmFyIFdFQktJVCA9ICctd2Via2l0LSdcblxuZXhwb3J0IHZhciBDT01NRU5UID0gJ2NvbW0nXG5leHBvcnQgdmFyIFJVTEVTRVQgPSAncnVsZSdcbmV4cG9ydCB2YXIgREVDTEFSQVRJT04gPSAnZGVjbCdcblxuZXhwb3J0IHZhciBQQUdFID0gJ0BwYWdlJ1xuZXhwb3J0IHZhciBNRURJQSA9ICdAbWVkaWEnXG5leHBvcnQgdmFyIElNUE9SVCA9ICdAaW1wb3J0J1xuZXhwb3J0IHZhciBDSEFSU0VUID0gJ0BjaGFyc2V0J1xuZXhwb3J0IHZhciBWSUVXUE9SVCA9ICdAdmlld3BvcnQnXG5leHBvcnQgdmFyIFNVUFBPUlRTID0gJ0BzdXBwb3J0cydcbmV4cG9ydCB2YXIgRE9DVU1FTlQgPSAnQGRvY3VtZW50J1xuZXhwb3J0IHZhciBOQU1FU1BBQ0UgPSAnQG5hbWVzcGFjZSdcbmV4cG9ydCB2YXIgS0VZRlJBTUVTID0gJ0BrZXlmcmFtZXMnXG5leHBvcnQgdmFyIEZPTlRfRkFDRSA9ICdAZm9udC1mYWNlJ1xuZXhwb3J0IHZhciBDT1VOVEVSX1NUWUxFID0gJ0Bjb3VudGVyLXN0eWxlJ1xuZXhwb3J0IHZhciBGT05UX0ZFQVRVUkVfVkFMVUVTID0gJ0Bmb250LWZlYXR1cmUtdmFsdWVzJ1xuZXhwb3J0IHZhciBMQVlFUiA9ICdAbGF5ZXInXG5leHBvcnQgdmFyIFNDT1BFID0gJ0BzY29wZSdcbiIsIi8qKlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCB2YXIgYWJzID0gTWF0aC5hYnNcblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IHZhciBmcm9tID0gU3RyaW5nLmZyb21DaGFyQ29kZVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgdmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ25cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2ggKHZhbHVlLCBsZW5ndGgpIHtcblx0cmV0dXJuIGNoYXJhdCh2YWx1ZSwgMCkgXiA0NSA/ICgoKCgoKChsZW5ndGggPDwgMikgXiBjaGFyYXQodmFsdWUsIDApKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMSkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAyKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDMpIDogMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbSAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLnRyaW0oKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAqIEByZXR1cm4ge3N0cmluZz99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaCAodmFsdWUsIHBhdHRlcm4pIHtcblx0cmV0dXJuICh2YWx1ZSA9IHBhdHRlcm4uZXhlYyh2YWx1ZSkpID8gdmFsdWVbMF0gOiB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHsoc3RyaW5nfFJlZ0V4cCl9IHBhdHRlcm5cbiAqIEBwYXJhbSB7c3RyaW5nfSByZXBsYWNlbWVudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZSAodmFsdWUsIHBhdHRlcm4sIHJlcGxhY2VtZW50KSB7XG5cdHJldHVybiB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFxuICogQHBhcmFtIHtudW1iZXJ9IHBvc2l0aW9uXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleG9mICh2YWx1ZSwgc2VhcmNoLCBwb3NpdGlvbikge1xuXHRyZXR1cm4gdmFsdWUuaW5kZXhPZihzZWFyY2gsIHBvc2l0aW9uKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFyYXQgKHZhbHVlLCBpbmRleCkge1xuXHRyZXR1cm4gdmFsdWUuY2hhckNvZGVBdChpbmRleCkgfCAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gYmVnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0ciAodmFsdWUsIGJlZ2luLCBlbmQpIHtcblx0cmV0dXJuIHZhbHVlLnNsaWNlKGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJsZW4gKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS5sZW5ndGhcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueVtdfSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2l6ZW9mICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUubGVuZ3RoXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge2FueVtdfSBhcnJheVxuICogQHJldHVybiB7YW55fVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kICh2YWx1ZSwgYXJyYXkpIHtcblx0cmV0dXJuIGFycmF5LnB1c2godmFsdWUpLCB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nW119IGFycmF5XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZSAoYXJyYXksIGNhbGxiYWNrKSB7XG5cdHJldHVybiBhcnJheS5tYXAoY2FsbGJhY2spLmpvaW4oJycpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJyYXlcbiAqIEBwYXJhbSB7UmVnRXhwfSBwYXR0ZXJuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlciAoYXJyYXksIHBhdHRlcm4pIHtcblx0cmV0dXJuIGFycmF5LmZpbHRlcihmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuICFtYXRjaCh2YWx1ZSwgcGF0dGVybikgfSlcbn1cbiIsImltcG9ydCB7ZnJvbSwgdHJpbSwgY2hhcmF0LCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCBhc3NpZ259IGZyb20gJy4vVXRpbGl0eS5qcydcblxuZXhwb3J0IHZhciBsaW5lID0gMVxuZXhwb3J0IHZhciBjb2x1bW4gPSAxXG5leHBvcnQgdmFyIGxlbmd0aCA9IDBcbmV4cG9ydCB2YXIgcG9zaXRpb24gPSAwXG5leHBvcnQgdmFyIGNoYXJhY3RlciA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVycyA9ICcnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdCB8IG51bGx9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0W10gfCBzdHJpbmd9IGNoaWxkcmVuXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHJldHVybiB7dmFsdWU6IHZhbHVlLCByb290OiByb290LCBwYXJlbnQ6IHBhcmVudCwgdHlwZTogdHlwZSwgcHJvcHM6IHByb3BzLCBjaGlsZHJlbjogY2hpbGRyZW4sIGxpbmU6IGxpbmUsIGNvbHVtbjogY29sdW1uLCBsZW5ndGg6IGxlbmd0aCwgcmV0dXJuOiAnJywgc2libGluZ3M6IHNpYmxpbmdzfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHkgKHJvb3QsIHByb3BzKSB7XG5cdHJldHVybiBhc3NpZ24obm9kZSgnJywgbnVsbCwgbnVsbCwgJycsIG51bGwsIG51bGwsIDAsIHJvb3Quc2libGluZ3MpLCByb290LCB7bGVuZ3RoOiAtcm9vdC5sZW5ndGh9LCBwcm9wcylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdCAocm9vdCkge1xuXHR3aGlsZSAocm9vdC5yb290KVxuXHRcdHJvb3QgPSBjb3B5KHJvb3Qucm9vdCwge2NoaWxkcmVuOiBbcm9vdF19KVxuXG5cdGFwcGVuZChyb290LCByb290LnNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXIgKCkge1xuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJldiAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uID4gMCA/IGNoYXJhdChjaGFyYWN0ZXJzLCAtLXBvc2l0aW9uKSA6IDBcblxuXHRpZiAoY29sdW1uLS0sIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZS0tXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHQgKCkge1xuXHRjaGFyYWN0ZXIgPSBwb3NpdGlvbiA8IGxlbmd0aCA/IGNoYXJhdChjaGFyYWN0ZXJzLCBwb3NpdGlvbisrKSA6IDBcblxuXHRpZiAoY29sdW1uKyssIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZSsrXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlZWsgKCkge1xuXHRyZXR1cm4gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhcmV0ICgpIHtcblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGljZSAoYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gc3Vic3RyKGNoYXJhY3RlcnMsIGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuICh0eXBlKSB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdC8vIFxcMCBcXHQgXFxuIFxcciBcXHMgd2hpdGVzcGFjZSB0b2tlblxuXHRcdGNhc2UgMDogY2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0cmV0dXJuIDVcblx0XHQvLyAhICsgLCAvID4gQCB+IGlzb2xhdGUgdG9rZW5cblx0XHRjYXNlIDMzOiBjYXNlIDQzOiBjYXNlIDQ0OiBjYXNlIDQ3OiBjYXNlIDYyOiBjYXNlIDY0OiBjYXNlIDEyNjpcblx0XHQvLyA7IHsgfSBicmVha3BvaW50IHRva2VuXG5cdFx0Y2FzZSA1OTogY2FzZSAxMjM6IGNhc2UgMTI1OlxuXHRcdFx0cmV0dXJuIDRcblx0XHQvLyA6IGFjY29tcGFuaWVkIHRva2VuXG5cdFx0Y2FzZSA1ODpcblx0XHRcdHJldHVybiAzXG5cdFx0Ly8gXCIgJyAoIFsgb3BlbmluZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA0MDogY2FzZSA5MTpcblx0XHRcdHJldHVybiAyXG5cdFx0Ly8gKSBdIGNsb3NpbmcgZGVsaW1pdCB0b2tlblxuXHRcdGNhc2UgNDE6IGNhc2UgOTM6XG5cdFx0XHRyZXR1cm4gMVxuXHR9XG5cblx0cmV0dXJuIDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBsaW5lID0gY29sdW1uID0gMSwgbGVuZ3RoID0gc3RybGVuKGNoYXJhY3RlcnMgPSB2YWx1ZSksIHBvc2l0aW9uID0gMCwgW11cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJzID0gJycsIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXQgKHR5cGUpIHtcblx0cmV0dXJuIHRyaW0oc2xpY2UocG9zaXRpb24gLSAxLCBkZWxpbWl0ZXIodHlwZSA9PT0gOTEgPyB0eXBlICsgMiA6IHR5cGUgPT09IDQwID8gdHlwZSArIDEgOiB0eXBlKSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyh0b2tlbml6ZXIoYWxsb2ModmFsdWUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hpdGVzcGFjZSAodHlwZSkge1xuXHR3aGlsZSAoY2hhcmFjdGVyID0gcGVlaygpKVxuXHRcdGlmIChjaGFyYWN0ZXIgPCAzMylcblx0XHRcdG5leHQoKVxuXHRcdGVsc2Vcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuIHRva2VuKHR5cGUpID4gMiB8fCB0b2tlbihjaGFyYWN0ZXIpID4gMyA/ICcnIDogJyAnXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemVyIChjaGlsZHJlbikge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAodG9rZW4oY2hhcmFjdGVyKSkge1xuXHRcdFx0Y2FzZSAwOiBhcHBlbmQoaWRlbnRpZmllcihwb3NpdGlvbiAtIDEpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgMjogYXBwZW5kKGRlbGltaXQoY2hhcmFjdGVyKSwgY2hpbGRyZW4pXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRkZWZhdWx0OiBhcHBlbmQoZnJvbShjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHR9XG5cblx0cmV0dXJuIGNoaWxkcmVuXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gY291bnRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwaW5nIChpbmRleCwgY291bnQpIHtcblx0d2hpbGUgKC0tY291bnQgJiYgbmV4dCgpKVxuXHRcdC8vIG5vdCAwLTkgQS1GIGEtZlxuXHRcdGlmIChjaGFyYWN0ZXIgPCA0OCB8fCBjaGFyYWN0ZXIgPiAxMDIgfHwgKGNoYXJhY3RlciA+IDU3ICYmIGNoYXJhY3RlciA8IDY1KSB8fCAoY2hhcmFjdGVyID4gNzAgJiYgY2hhcmFjdGVyIDwgOTcpKVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIGNhcmV0KCkgKyAoY291bnQgPCA2ICYmIHBlZWsoKSA9PSAzMiAmJiBuZXh0KCkgPT0gMzIpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ZXIgKHR5cGUpIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHRzd2l0Y2ggKGNoYXJhY3Rlcikge1xuXHRcdFx0Ly8gXSApIFwiICdcblx0XHRcdGNhc2UgdHlwZTpcblx0XHRcdFx0cmV0dXJuIHBvc2l0aW9uXG5cdFx0XHQvLyBcIiAnXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OlxuXHRcdFx0XHRpZiAodHlwZSAhPT0gMzQgJiYgdHlwZSAhPT0gMzkpXG5cdFx0XHRcdFx0ZGVsaW1pdGVyKGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmICh0eXBlID09PSA0MSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIodHlwZSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRuZXh0KClcblx0XHRcdFx0YnJlYWtcblx0XHR9XG5cblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudGVyICh0eXBlLCBpbmRleCkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdC8vIC8vXG5cdFx0aWYgKHR5cGUgKyBjaGFyYWN0ZXIgPT09IDQ3ICsgMTApXG5cdFx0XHRicmVha1xuXHRcdC8vIC8qXG5cdFx0ZWxzZSBpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDIgKyA0MiAmJiBwZWVrKCkgPT09IDQ3KVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gJy8qJyArIHNsaWNlKGluZGV4LCBwb3NpdGlvbiAtIDEpICsgJyonICsgZnJvbSh0eXBlID09PSA0NyA/IHR5cGUgOiBuZXh0KCkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyIChpbmRleCkge1xuXHR3aGlsZSAoIXRva2VuKHBlZWsoKSkpXG5cdFx0bmV4dCgpXG5cblx0cmV0dXJuIHNsaWNlKGluZGV4LCBwb3NpdGlvbilcbn1cbiIsImltcG9ydCB7Q09NTUVOVCwgUlVMRVNFVCwgREVDTEFSQVRJT059IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7YWJzLCBjaGFyYXQsIHRyaW0sIGZyb20sIHNpemVvZiwgc3RybGVuLCBzdWJzdHIsIGFwcGVuZCwgcmVwbGFjZSwgaW5kZXhvZn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuaW1wb3J0IHtub2RlLCBjaGFyLCBwcmV2LCBuZXh0LCBwZWVrLCBjYXJldCwgYWxsb2MsIGRlYWxsb2MsIGRlbGltaXQsIHdoaXRlc3BhY2UsIGVzY2FwaW5nLCBpZGVudGlmaWVyLCBjb21tZW50ZXJ9IGZyb20gJy4vVG9rZW5pemVyLmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7b2JqZWN0W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyhwYXJzZSgnJywgbnVsbCwgbnVsbCwgbnVsbCwgWycnXSwgdmFsdWUgPSBhbGxvYyh2YWx1ZSksIDAsIFswXSwgdmFsdWUpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNldHNcbiAqIEBwYXJhbSB7bnVtYmVyW119IHBzZXVkb1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBkZWNsYXJhdGlvbnNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBydWxlLCBydWxlcywgcnVsZXNldHMsIHBzZXVkbywgcG9pbnRzLCBkZWNsYXJhdGlvbnMpIHtcblx0dmFyIGluZGV4ID0gMFxuXHR2YXIgb2Zmc2V0ID0gMFxuXHR2YXIgbGVuZ3RoID0gcHNldWRvXG5cdHZhciBhdHJ1bGUgPSAwXG5cdHZhciBwcm9wZXJ0eSA9IDBcblx0dmFyIHByZXZpb3VzID0gMFxuXHR2YXIgdmFyaWFibGUgPSAxXG5cdHZhciBzY2FubmluZyA9IDFcblx0dmFyIGFtcGVyc2FuZCA9IDFcblx0dmFyIGNoYXJhY3RlciA9IDBcblx0dmFyIHR5cGUgPSAnJ1xuXHR2YXIgcHJvcHMgPSBydWxlc1xuXHR2YXIgY2hpbGRyZW4gPSBydWxlc2V0c1xuXHR2YXIgcmVmZXJlbmNlID0gcnVsZVxuXHR2YXIgY2hhcmFjdGVycyA9IHR5cGVcblxuXHR3aGlsZSAoc2Nhbm5pbmcpXG5cdFx0c3dpdGNoIChwcmV2aW91cyA9IGNoYXJhY3RlciwgY2hhcmFjdGVyID0gbmV4dCgpKSB7XG5cdFx0XHQvLyAoXG5cdFx0XHRjYXNlIDQwOlxuXHRcdFx0XHRpZiAocHJldmlvdXMgIT0gMTA4ICYmIGNoYXJhdChjaGFyYWN0ZXJzLCBsZW5ndGggLSAxKSA9PSA1OCkge1xuXHRcdFx0XHRcdGlmIChpbmRleG9mKGNoYXJhY3RlcnMgKz0gcmVwbGFjZShkZWxpbWl0KGNoYXJhY3RlciksICcmJywgJyZcXGYnKSwgJyZcXGYnLCBhYnMoaW5kZXggPyBwb2ludHNbaW5kZXggLSAxXSA6IDApKSAhPSAtMSlcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IC0xXG5cdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0fVxuXHRcdFx0Ly8gXCIgJyBbXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OiBjYXNlIDkxOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQoY2hhcmFjdGVyKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFx0IFxcbiBcXHIgXFxzXG5cdFx0XHRjYXNlIDk6IGNhc2UgMTA6IGNhc2UgMTM6IGNhc2UgMzI6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gd2hpdGVzcGFjZShwcmV2aW91cylcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IGVzY2FwaW5nKGNhcmV0KCkgLSAxLCA3KVxuXHRcdFx0XHRjb250aW51ZVxuXHRcdFx0Ly8gL1xuXHRcdFx0Y2FzZSA0Nzpcblx0XHRcdFx0c3dpdGNoIChwZWVrKCkpIHtcblx0XHRcdFx0XHRjYXNlIDQyOiBjYXNlIDQ3OlxuXHRcdFx0XHRcdFx0YXBwZW5kKGNvbW1lbnQoY29tbWVudGVyKG5leHQoKSwgY2FyZXQoKSksIHJvb3QsIHBhcmVudCwgZGVjbGFyYXRpb25zKSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0Y2hhcmFjdGVycyArPSAnLydcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8ge1xuXHRcdFx0Y2FzZSAxMjMgKiB2YXJpYWJsZTpcblx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gc3RybGVuKGNoYXJhY3RlcnMpICogYW1wZXJzYW5kXG5cdFx0XHQvLyB9IDsgXFwwXG5cdFx0XHRjYXNlIDEyNSAqIHZhcmlhYmxlOiBjYXNlIDU5OiBjYXNlIDA6XG5cdFx0XHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHRcdFx0Ly8gXFwwIH1cblx0XHRcdFx0XHRjYXNlIDA6IGNhc2UgMTI1OiBzY2FubmluZyA9IDBcblx0XHRcdFx0XHQvLyA7XG5cdFx0XHRcdFx0Y2FzZSA1OSArIG9mZnNldDogaWYgKGFtcGVyc2FuZCA9PSAtMSkgY2hhcmFjdGVycyA9IHJlcGxhY2UoY2hhcmFjdGVycywgL1xcZi9nLCAnJylcblx0XHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA+IDAgJiYgKHN0cmxlbihjaGFyYWN0ZXJzKSAtIGxlbmd0aCkpXG5cdFx0XHRcdFx0XHRcdGFwcGVuZChwcm9wZXJ0eSA+IDMyID8gZGVjbGFyYXRpb24oY2hhcmFjdGVycyArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAxLCBkZWNsYXJhdGlvbnMpIDogZGVjbGFyYXRpb24ocmVwbGFjZShjaGFyYWN0ZXJzLCAnICcsICcnKSArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAyLCBkZWNsYXJhdGlvbnMpLCBkZWNsYXJhdGlvbnMpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIEAgO1xuXHRcdFx0XHRcdGNhc2UgNTk6IGNoYXJhY3RlcnMgKz0gJzsnXG5cdFx0XHRcdFx0Ly8geyBydWxlL2F0LXJ1bGVcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0YXBwZW5kKHJlZmVyZW5jZSA9IHJ1bGVzZXQoY2hhcmFjdGVycywgcm9vdCwgcGFyZW50LCBpbmRleCwgb2Zmc2V0LCBydWxlcywgcG9pbnRzLCB0eXBlLCBwcm9wcyA9IFtdLCBjaGlsZHJlbiA9IFtdLCBsZW5ndGgsIHJ1bGVzZXRzKSwgcnVsZXNldHMpXG5cblx0XHRcdFx0XHRcdGlmIChjaGFyYWN0ZXIgPT09IDEyMylcblx0XHRcdFx0XHRcdFx0aWYgKG9mZnNldCA9PT0gMClcblx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByb290LCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcHJvcHMsIHJ1bGVzZXRzLCBsZW5ndGgsIHBvaW50cywgY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGF0cnVsZSA9PT0gOTkgJiYgY2hhcmF0KGNoYXJhY3RlcnMsIDMpID09PSAxMTAgPyAxMDAgOiBhdHJ1bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGQgbCBtIHNcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTAwOiBjYXNlIDEwODogY2FzZSAxMDk6IGNhc2UgMTE1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZSh2YWx1ZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHJ1bGUgJiYgYXBwZW5kKHJ1bGVzZXQodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCAwLCAwLCBydWxlcywgcG9pbnRzLCB0eXBlLCBydWxlcywgcHJvcHMgPSBbXSwgbGVuZ3RoLCBjaGlsZHJlbiksIGNoaWxkcmVuKSwgcnVsZXMsIGNoaWxkcmVuLCBsZW5ndGgsIHBvaW50cywgcnVsZSA/IHByb3BzIDogY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBbJyddLCBjaGlsZHJlbiwgMCwgcG9pbnRzLCBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbmRleCA9IG9mZnNldCA9IHByb3BlcnR5ID0gMCwgdmFyaWFibGUgPSBhbXBlcnNhbmQgPSAxLCB0eXBlID0gY2hhcmFjdGVycyA9ICcnLCBsZW5ndGggPSBwc2V1ZG9cblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIDpcblx0XHRcdGNhc2UgNTg6XG5cdFx0XHRcdGxlbmd0aCA9IDEgKyBzdHJsZW4oY2hhcmFjdGVycyksIHByb3BlcnR5ID0gcHJldmlvdXNcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmICh2YXJpYWJsZSA8IDEpXG5cdFx0XHRcdFx0aWYgKGNoYXJhY3RlciA9PSAxMjMpXG5cdFx0XHRcdFx0XHQtLXZhcmlhYmxlXG5cdFx0XHRcdFx0ZWxzZSBpZiAoY2hhcmFjdGVyID09IDEyNSAmJiB2YXJpYWJsZSsrID09IDAgJiYgcHJldigpID09IDEyNSlcblx0XHRcdFx0XHRcdGNvbnRpbnVlXG5cblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXJzICs9IGZyb20oY2hhcmFjdGVyKSwgY2hhcmFjdGVyICogdmFyaWFibGUpIHtcblx0XHRcdFx0XHQvLyAmXG5cdFx0XHRcdFx0Y2FzZSAzODpcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IG9mZnNldCA+IDAgPyAxIDogKGNoYXJhY3RlcnMgKz0gJ1xcZicsIC0xKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAsXG5cdFx0XHRcdFx0Y2FzZSA0NDpcblx0XHRcdFx0XHRcdHBvaW50c1tpbmRleCsrXSA9IChzdHJsZW4oY2hhcmFjdGVycykgLSAxKSAqIGFtcGVyc2FuZCwgYW1wZXJzYW5kID0gMVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAXG5cdFx0XHRcdFx0Y2FzZSA2NDpcblx0XHRcdFx0XHRcdC8vIC1cblx0XHRcdFx0XHRcdGlmIChwZWVrKCkgPT09IDQ1KVxuXHRcdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQobmV4dCgpKVxuXG5cdFx0XHRcdFx0XHRhdHJ1bGUgPSBwZWVrKCksIG9mZnNldCA9IGxlbmd0aCA9IHN0cmxlbih0eXBlID0gY2hhcmFjdGVycyArPSBpZGVudGlmaWVyKGNhcmV0KCkpKSwgY2hhcmFjdGVyKytcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdGNhc2UgNDU6XG5cdFx0XHRcdFx0XHRpZiAocHJldmlvdXMgPT09IDQ1ICYmIHN0cmxlbihjaGFyYWN0ZXJzKSA9PSAyKVxuXHRcdFx0XHRcdFx0XHR2YXJpYWJsZSA9IDBcblx0XHRcdFx0fVxuXHRcdH1cblxuXHRyZXR1cm4gcnVsZXNldHNcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNldCAodmFsdWUsIHJvb3QsIHBhcmVudCwgaW5kZXgsIG9mZnNldCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHZhciBwb3N0ID0gb2Zmc2V0IC0gMVxuXHR2YXIgcnVsZSA9IG9mZnNldCA9PT0gMCA/IHJ1bGVzIDogWycnXVxuXHR2YXIgc2l6ZSA9IHNpemVvZihydWxlKVxuXG5cdGZvciAodmFyIGkgPSAwLCBqID0gMCwgayA9IDA7IGkgPCBpbmRleDsgKytpKVxuXHRcdGZvciAodmFyIHggPSAwLCB5ID0gc3Vic3RyKHZhbHVlLCBwb3N0ICsgMSwgcG9zdCA9IGFicyhqID0gcG9pbnRzW2ldKSksIHogPSB2YWx1ZTsgeCA8IHNpemU7ICsreClcblx0XHRcdGlmICh6ID0gdHJpbShqID4gMCA/IHJ1bGVbeF0gKyAnICcgKyB5IDogcmVwbGFjZSh5LCAvJlxcZi9nLCBydWxlW3hdKSkpXG5cdFx0XHRcdHByb3BzW2srK10gPSB6XG5cblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgb2Zmc2V0ID09PSAwID8gUlVMRVNFVCA6IHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoLCBzaWJsaW5ncylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtvYmplY3RbXX0gc2libGluZ3NcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1lbnQgKHZhbHVlLCByb290LCBwYXJlbnQsIHNpYmxpbmdzKSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIENPTU1FTlQsIGZyb20oY2hhcigpKSwgc3Vic3RyKHZhbHVlLCAyLCAtMiksIDAsIHNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyYXRpb24gKHZhbHVlLCByb290LCBwYXJlbnQsIGxlbmd0aCwgc2libGluZ3MpIHtcblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgREVDTEFSQVRJT04sIHN1YnN0cih2YWx1ZSwgMCwgbGVuZ3RoKSwgc3Vic3RyKHZhbHVlLCBsZW5ndGggKyAxLCAtMSksIGxlbmd0aCwgc2libGluZ3MpXG59XG4iLCJpbXBvcnQge01TLCBNT1osIFdFQktJVH0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHtoYXNoLCBjaGFyYXQsIHN0cmxlbiwgaW5kZXhvZiwgcmVwbGFjZSwgc3Vic3RyLCBtYXRjaH0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeCAodmFsdWUsIGxlbmd0aCwgY2hpbGRyZW4pIHtcblx0c3dpdGNoIChoYXNoKHZhbHVlLCBsZW5ndGgpKSB7XG5cdFx0Ly8gY29sb3ItYWRqdXN0XG5cdFx0Y2FzZSA1MTAzOlxuXHRcdFx0cmV0dXJuIFdFQktJVCArICdwcmludC0nICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFuaW1hdGlvbiwgYW5pbWF0aW9uLShkZWxheXxkaXJlY3Rpb258ZHVyYXRpb258ZmlsbC1tb2RlfGl0ZXJhdGlvbi1jb3VudHxuYW1lfHBsYXktc3RhdGV8dGltaW5nLWZ1bmN0aW9uKVxuXHRcdGNhc2UgNTczNzogY2FzZSA0MjAxOiBjYXNlIDMxNzc6IGNhc2UgMzQzMzogY2FzZSAxNjQxOiBjYXNlIDQ0NTc6IGNhc2UgMjkyMTpcblx0XHQvLyB0ZXh0LWRlY29yYXRpb24sIGZpbHRlciwgY2xpcC1wYXRoLCBiYWNrZmFjZS12aXNpYmlsaXR5LCBjb2x1bW4sIGJveC1kZWNvcmF0aW9uLWJyZWFrXG5cdFx0Y2FzZSA1NTcyOiBjYXNlIDYzNTY6IGNhc2UgNTg0NDogY2FzZSAzMTkxOiBjYXNlIDY2NDU6IGNhc2UgMzAwNTpcblx0XHQvLyBtYXNrLCBtYXNrLWltYWdlLCBtYXNrLShtb2RlfGNsaXB8c2l6ZSksIG1hc2stKHJlcGVhdHxvcmlnaW4pLCBtYXNrLXBvc2l0aW9uLCBtYXNrLWNvbXBvc2l0ZSxcblx0XHRjYXNlIDYzOTE6IGNhc2UgNTg3OTogY2FzZSA1NjIzOiBjYXNlIDYxMzU6IGNhc2UgNDU5OTogY2FzZSA0ODU1OlxuXHRcdC8vIGJhY2tncm91bmQtY2xpcCwgY29sdW1ucywgY29sdW1uLShjb3VudHxmaWxsfGdhcHxydWxlfHJ1bGUtY29sb3J8cnVsZS1zdHlsZXxydWxlLXdpZHRofHNwYW58d2lkdGgpXG5cdFx0Y2FzZSA0MjE1OiBjYXNlIDYzODk6IGNhc2UgNTEwOTogY2FzZSA1MzY1OiBjYXNlIDU2MjE6IGNhc2UgMzgyOTpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gdGFiLXNpemVcblx0XHRjYXNlIDQ3ODk6XG5cdFx0XHRyZXR1cm4gTU9aICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFwcGVhcmFuY2UsIHVzZXItc2VsZWN0LCB0cmFuc2Zvcm0sIGh5cGhlbnMsIHRleHQtc2l6ZS1hZGp1c3Rcblx0XHRjYXNlIDUzNDk6IGNhc2UgNDI0NjogY2FzZSA0ODEwOiBjYXNlIDY5Njg6IGNhc2UgMjc1Njpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1PWiArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gd3JpdGluZy1tb2RlXG5cdFx0Y2FzZSA1OTM2OlxuXHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDExKSkge1xuXHRcdFx0XHQvLyB2ZXJ0aWNhbC1sKHIpXG5cdFx0XHRcdGNhc2UgMTE0OlxuXHRcdFx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAndGInKSArIHZhbHVlXG5cdFx0XHRcdC8vIHZlcnRpY2FsLXIobClcblx0XHRcdFx0Y2FzZSAxMDg6XG5cdFx0XHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICd0Yi1ybCcpICsgdmFsdWVcblx0XHRcdFx0Ly8gaG9yaXpvbnRhbCgtKXRiXG5cdFx0XHRcdGNhc2UgNDU6XG5cdFx0XHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICdscicpICsgdmFsdWVcblx0XHRcdFx0Ly8gZGVmYXVsdDogZmFsbHRocm91Z2ggdG8gYmVsb3dcblx0XHRcdH1cblx0XHQvLyBmbGV4LCBmbGV4LWRpcmVjdGlvbiwgc2Nyb2xsLXNuYXAtdHlwZSwgd3JpdGluZy1tb2RlXG5cdFx0Y2FzZSA2ODI4OiBjYXNlIDQyNjg6IGNhc2UgMjkwMzpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIG9yZGVyXG5cdFx0Y2FzZSA2MTY1OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC0nICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFsaWduLWl0ZW1zXG5cdFx0Y2FzZSA1MTg3OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgcmVwbGFjZSh2YWx1ZSwgLyhcXHcrKS4rKDpbXl0rKS8sIFdFQktJVCArICdib3gtJDEkMicgKyBNUyArICdmbGV4LSQxJDInKSArIHZhbHVlXG5cdFx0Ly8gYWxpZ24tc2VsZlxuXHRcdGNhc2UgNTQ0Mzpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgJ2ZsZXgtaXRlbS0nICsgcmVwbGFjZSh2YWx1ZSwgL2ZsZXgtfC1zZWxmL2csICcnKSArICghbWF0Y2godmFsdWUsIC9mbGV4LXxiYXNlbGluZS8pID8gTVMgKyAnZ3JpZC1yb3ctJyArIHJlcGxhY2UodmFsdWUsIC9mbGV4LXwtc2VsZi9nLCAnJykgOiAnJykgKyB2YWx1ZVxuXHRcdC8vIGFsaWduLWNvbnRlbnRcblx0XHRjYXNlIDQ2NzU6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LWxpbmUtcGFjaycgKyByZXBsYWNlKHZhbHVlLCAvYWxpZ24tY29udGVudHxmbGV4LXwtc2VsZi9nLCAnJykgKyB2YWx1ZVxuXHRcdC8vIGZsZXgtc2hyaW5rXG5cdFx0Y2FzZSA1NTQ4OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAnc2hyaW5rJywgJ25lZ2F0aXZlJykgKyB2YWx1ZVxuXHRcdC8vIGZsZXgtYmFzaXNcblx0XHRjYXNlIDUyOTI6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdiYXNpcycsICdwcmVmZXJyZWQtc2l6ZScpICsgdmFsdWVcblx0XHQvLyBmbGV4LWdyb3dcblx0XHRjYXNlIDYwNjA6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgJ2JveC0nICsgcmVwbGFjZSh2YWx1ZSwgJy1ncm93JywgJycpICsgV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdncm93JywgJ3Bvc2l0aXZlJykgKyB2YWx1ZVxuXHRcdC8vIHRyYW5zaXRpb25cblx0XHRjYXNlIDQ1NTQ6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgcmVwbGFjZSh2YWx1ZSwgLyhbXi1dKSh0cmFuc2Zvcm0pL2csICckMScgKyBXRUJLSVQgKyAnJDInKSArIHZhbHVlXG5cdFx0Ly8gY3Vyc29yXG5cdFx0Y2FzZSA2MTg3OlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UocmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKHpvb20tfGdyYWIpLywgV0VCS0lUICsgJyQxJyksIC8oaW1hZ2Utc2V0KS8sIFdFQktJVCArICckMScpLCB2YWx1ZSwgJycpICsgdmFsdWVcblx0XHQvLyBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kLWltYWdlXG5cdFx0Y2FzZSA1NDk1OiBjYXNlIDM5NTk6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyhpbWFnZS1zZXRcXChbXl0qKS8sIFdFQktJVCArICckMScgKyAnJGAkMScpXG5cdFx0Ly8ganVzdGlmeS1jb250ZW50XG5cdFx0Y2FzZSA0OTY4OlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UocmVwbGFjZSh2YWx1ZSwgLyguKzopKGZsZXgtKT8oLiopLywgV0VCS0lUICsgJ2JveC1wYWNrOiQzJyArIE1TICsgJ2ZsZXgtcGFjazokMycpLCAvcy4rLWJbXjtdKy8sICdqdXN0aWZ5JykgKyBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8ganVzdGlmeS1zZWxmXG5cdFx0Y2FzZSA0MjAwOlxuXHRcdFx0aWYgKCFtYXRjaCh2YWx1ZSwgL2ZsZXgtfGJhc2VsaW5lLykpIHJldHVybiBNUyArICdncmlkLWNvbHVtbi1hbGlnbicgKyBzdWJzdHIodmFsdWUsIGxlbmd0aCkgKyB2YWx1ZVxuXHRcdFx0YnJlYWtcblx0XHQvLyBncmlkLXRlbXBsYXRlLShjb2x1bW5zfHJvd3MpXG5cdFx0Y2FzZSAyNTkyOiBjYXNlIDMzNjA6XG5cdFx0XHRyZXR1cm4gTVMgKyByZXBsYWNlKHZhbHVlLCAndGVtcGxhdGUtJywgJycpICsgdmFsdWVcblx0XHQvLyBncmlkLShyb3d8Y29sdW1uKS1zdGFydFxuXHRcdGNhc2UgNDM4NDogY2FzZSAzNjE2OlxuXHRcdFx0aWYgKGNoaWxkcmVuICYmIGNoaWxkcmVuLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQsIGluZGV4KSB7IHJldHVybiBsZW5ndGggPSBpbmRleCwgbWF0Y2goZWxlbWVudC5wcm9wcywgL2dyaWQtXFx3Ky1lbmQvKSB9KSkge1xuXHRcdFx0XHRyZXR1cm4gfmluZGV4b2YodmFsdWUgKyAoY2hpbGRyZW4gPSBjaGlsZHJlbltsZW5ndGhdLnZhbHVlKSwgJ3NwYW4nLCAwKSA/IHZhbHVlIDogKE1TICsgcmVwbGFjZSh2YWx1ZSwgJy1zdGFydCcsICcnKSArIHZhbHVlICsgTVMgKyAnZ3JpZC1yb3ctc3BhbjonICsgKH5pbmRleG9mKGNoaWxkcmVuLCAnc3BhbicsIDApID8gbWF0Y2goY2hpbGRyZW4sIC9cXGQrLykgOiArbWF0Y2goY2hpbGRyZW4sIC9cXGQrLykgLSArbWF0Y2godmFsdWUsIC9cXGQrLykpICsgJzsnKVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIE1TICsgcmVwbGFjZSh2YWx1ZSwgJy1zdGFydCcsICcnKSArIHZhbHVlXG5cdFx0Ly8gZ3JpZC0ocm93fGNvbHVtbiktZW5kXG5cdFx0Y2FzZSA0ODk2OiBjYXNlIDQxMjg6XG5cdFx0XHRyZXR1cm4gKGNoaWxkcmVuICYmIGNoaWxkcmVuLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoKGVsZW1lbnQucHJvcHMsIC9ncmlkLVxcdystc3RhcnQvKSB9KSkgPyB2YWx1ZSA6IE1TICsgcmVwbGFjZShyZXBsYWNlKHZhbHVlLCAnLWVuZCcsICctc3BhbicpLCAnc3BhbiAnLCAnJykgKyB2YWx1ZVxuXHRcdC8vIChtYXJnaW58cGFkZGluZyktaW5saW5lLShzdGFydHxlbmQpXG5cdFx0Y2FzZSA0MDk1OiBjYXNlIDM1ODM6IGNhc2UgNDA2ODogY2FzZSAyNTMyOlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLispLWlubGluZSguKykvLCBXRUJLSVQgKyAnJDEkMicpICsgdmFsdWVcblx0XHQvLyAobWlufG1heCk/KHdpZHRofGhlaWdodHxpbmxpbmUtc2l6ZXxibG9jay1zaXplKVxuXHRcdGNhc2UgODExNjogY2FzZSA3MDU5OiBjYXNlIDU3NTM6IGNhc2UgNTUzNTpcblx0XHRjYXNlIDU0NDU6IGNhc2UgNTcwMTogY2FzZSA0OTMzOiBjYXNlIDQ2Nzc6XG5cdFx0Y2FzZSA1NTMzOiBjYXNlIDU3ODk6IGNhc2UgNTAyMTogY2FzZSA0NzY1OlxuXHRcdFx0Ly8gc3RyZXRjaCwgbWF4LWNvbnRlbnQsIG1pbi1jb250ZW50LCBmaWxsLWF2YWlsYWJsZVxuXHRcdFx0aWYgKHN0cmxlbih2YWx1ZSkgLSAxIC0gbGVuZ3RoID4gNilcblx0XHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDEpKSB7XG5cdFx0XHRcdFx0Ly8gKG0pYXgtY29udGVudCwgKG0paW4tY29udGVudFxuXHRcdFx0XHRcdGNhc2UgMTA5OlxuXHRcdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdFx0aWYgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgNCkgIT09IDQ1KVxuXHRcdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIChmKWlsbC1hdmFpbGFibGUsIChmKWl0LWNvbnRlbnRcblx0XHRcdFx0XHRjYXNlIDEwMjpcblx0XHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rOikoLispLShbXl0rKS8sICckMScgKyBXRUJLSVQgKyAnJDItJDMnICsgJyQxJyArIE1PWiArIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDMpID09IDEwOCA/ICckMycgOiAnJDItJDMnKSkgKyB2YWx1ZVxuXHRcdFx0XHRcdC8vIChzKXRyZXRjaFxuXHRcdFx0XHRcdGNhc2UgMTE1OlxuXHRcdFx0XHRcdFx0cmV0dXJuIH5pbmRleG9mKHZhbHVlLCAnc3RyZXRjaCcsIDApID8gcHJlZml4KHJlcGxhY2UodmFsdWUsICdzdHJldGNoJywgJ2ZpbGwtYXZhaWxhYmxlJyksIGxlbmd0aCwgY2hpbGRyZW4pICsgdmFsdWUgOiB2YWx1ZVxuXHRcdFx0XHR9XG5cdFx0XHRicmVha1xuXHRcdC8vIGdyaWQtKGNvbHVtbnxyb3cpXG5cdFx0Y2FzZSA1MTUyOiBjYXNlIDU5MjA6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKz8pOihcXGQrKShcXHMqXFwvXFxzKihzcGFuKT9cXHMqKFxcZCspKT8oLiopLywgZnVuY3Rpb24gKF8sIGEsIGIsIGMsIGQsIGUsIGYpIHsgcmV0dXJuIChNUyArIGEgKyAnOicgKyBiICsgZikgKyAoYyA/IChNUyArIGEgKyAnLXNwYW46JyArIChkID8gZSA6ICtlIC0gK2IpKSArIGYgOiAnJykgKyB2YWx1ZSB9KVxuXHRcdC8vIHBvc2l0aW9uOiBzdGlja3lcblx0XHRjYXNlIDQ5NDk6XG5cdFx0XHQvLyBzdGljayh5KT9cblx0XHRcdGlmIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDYpID09PSAxMjEpXG5cdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAnOicsICc6JyArIFdFQktJVCkgKyB2YWx1ZVxuXHRcdFx0YnJlYWtcblx0XHQvLyBkaXNwbGF5OiAoZmxleHxpbmxpbmUtZmxleHxncmlkfGlubGluZS1ncmlkKVxuXHRcdGNhc2UgNjQ0NDpcblx0XHRcdHN3aXRjaCAoY2hhcmF0KHZhbHVlLCBjaGFyYXQodmFsdWUsIDE0KSA9PT0gNDUgPyAxOCA6IDExKSkge1xuXHRcdFx0XHQvLyAoaW5saW5lLSk/ZmxlKHgpXG5cdFx0XHRcdGNhc2UgMTIwOlxuXHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rOikoW147XFxzIV0rKSg7fChcXHMrKT8hLispPy8sICckMScgKyBXRUJLSVQgKyAoY2hhcmF0KHZhbHVlLCAxNCkgPT09IDQ1ID8gJ2lubGluZS0nIDogJycpICsgJ2JveCQzJyArICckMScgKyBXRUJLSVQgKyAnJDIkMycgKyAnJDEnICsgTVMgKyAnJDJib3gkMycpICsgdmFsdWVcblx0XHRcdFx0Ly8gKGlubGluZS0pP2dyaShkKVxuXHRcdFx0XHRjYXNlIDEwMDpcblx0XHRcdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgJzonLCAnOicgKyBNUykgKyB2YWx1ZVxuXHRcdFx0fVxuXHRcdFx0YnJlYWtcblx0XHQvLyBzY3JvbGwtbWFyZ2luLCBzY3JvbGwtbWFyZ2luLSh0b3B8cmlnaHR8Ym90dG9tfGxlZnQpXG5cdFx0Y2FzZSA1NzE5OiBjYXNlIDI2NDc6IGNhc2UgMjEzNTogY2FzZSAzOTI3OiBjYXNlIDIzOTE6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgJ3Njcm9sbC0nLCAnc2Nyb2xsLXNuYXAtJykgKyB2YWx1ZVxuXHR9XG5cblx0cmV0dXJuIHZhbHVlXG59XG4iLCJpbXBvcnQge0lNUE9SVCwgTEFZRVIsIENPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OLCBLRVlGUkFNRVN9IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7c3RybGVufSBmcm9tICcuL1V0aWxpdHkuanMnXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUgKGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHR2YXIgb3V0cHV0ID0gJydcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxuXHRcdG91dHB1dCArPSBjYWxsYmFjayhjaGlsZHJlbltpXSwgaSwgY2hpbGRyZW4sIGNhbGxiYWNrKSB8fCAnJ1xuXG5cdHJldHVybiBvdXRwdXRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdGNhc2UgTEFZRVI6IGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgYnJlYWtcblx0XHRjYXNlIElNUE9SVDogY2FzZSBERUNMQVJBVElPTjogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC5yZXR1cm4gfHwgZWxlbWVudC52YWx1ZVxuXHRcdGNhc2UgQ09NTUVOVDogcmV0dXJuICcnXG5cdFx0Y2FzZSBLRVlGUkFNRVM6IHJldHVybiBlbGVtZW50LnJldHVybiA9IGVsZW1lbnQudmFsdWUgKyAneycgKyBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spICsgJ30nXG5cdFx0Y2FzZSBSVUxFU0VUOiBpZiAoIXN0cmxlbihlbGVtZW50LnZhbHVlID0gZWxlbWVudC5wcm9wcy5qb2luKCcsJykpKSByZXR1cm4gJydcblx0fVxuXG5cdHJldHVybiBzdHJsZW4oY2hpbGRyZW4gPSBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spKSA/IGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIGNoaWxkcmVuICsgJ30nIDogJydcbn1cbiIsImltcG9ydCB7TVMsIE1PWiwgV0VCS0lULCBSVUxFU0VULCBLRVlGUkFNRVMsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge21hdGNoLCBjaGFyYXQsIHN1YnN0ciwgc3RybGVuLCBzaXplb2YsIHJlcGxhY2UsIGNvbWJpbmUsIGZpbHRlciwgYXNzaWdufSBmcm9tICcuL1V0aWxpdHkuanMnXG5pbXBvcnQge2NvcHksIGxpZnQsIHRva2VuaXplfSBmcm9tICcuL1Rva2VuaXplci5qcydcbmltcG9ydCB7c2VyaWFsaXplfSBmcm9tICcuL1NlcmlhbGl6ZXIuanMnXG5pbXBvcnQge3ByZWZpeH0gZnJvbSAnLi9QcmVmaXhlci5qcydcblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9uW119IGNvbGxlY3Rpb25cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWlkZGxld2FyZSAoY29sbGVjdGlvbikge1xuXHR2YXIgbGVuZ3RoID0gc2l6ZW9mKGNvbGxlY3Rpb24pXG5cblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdFx0dmFyIG91dHB1dCA9ICcnXG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKVxuXHRcdFx0b3V0cHV0ICs9IGNvbGxlY3Rpb25baV0oZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykgfHwgJydcblxuXHRcdHJldHVybiBvdXRwdXRcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzaGVldCAoY2FsbGJhY2spIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG5cdFx0aWYgKCFlbGVtZW50LnJvb3QpXG5cdFx0XHRpZiAoZWxlbWVudCA9IGVsZW1lbnQucmV0dXJuKVxuXHRcdFx0XHRjYWxsYmFjayhlbGVtZW50KVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhlciAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRpZiAoZWxlbWVudC5sZW5ndGggPiAtMSlcblx0XHRpZiAoIWVsZW1lbnQucmV0dXJuKVxuXHRcdFx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRcdFx0Y2FzZSBERUNMQVJBVElPTjogZWxlbWVudC5yZXR1cm4gPSBwcmVmaXgoZWxlbWVudC52YWx1ZSwgZWxlbWVudC5sZW5ndGgsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRjYXNlIEtFWUZSQU1FUzpcblx0XHRcdFx0XHRyZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHt2YWx1ZTogcmVwbGFjZShlbGVtZW50LnZhbHVlLCAnQCcsICdAJyArIFdFQktJVCl9KV0sIGNhbGxiYWNrKVxuXHRcdFx0XHRjYXNlIFJVTEVTRVQ6XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnQubGVuZ3RoKVxuXHRcdFx0XHRcdFx0cmV0dXJuIGNvbWJpbmUoY2hpbGRyZW4gPSBlbGVtZW50LnByb3BzLCBmdW5jdGlvbiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChtYXRjaCh2YWx1ZSwgY2FsbGJhY2sgPSAvKDo6cGxhY1xcdyt8OnJlYWQtXFx3KykvKSkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIDpyZWFkLShvbmx5fHdyaXRlKVxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJzpyZWFkLW9ubHknOiBjYXNlICc6cmVhZC13cml0ZSc6XG5cdFx0XHRcdFx0XHRcdFx0XHRsaWZ0KGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocmVhZC1cXHcrKS8sICc6JyArIE1PWiArICckMScpXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3ZhbHVlXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0YXNzaWduKGVsZW1lbnQsIHtwcm9wczogZmlsdGVyKGNoaWxkcmVuLCBjYWxsYmFjayl9KVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0XHQvLyA6cGxhY2Vob2xkZXJcblx0XHRcdFx0XHRcdFx0XHRjYXNlICc6OnBsYWNlaG9sZGVyJzpcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBXRUJLSVQgKyAnaW5wdXQtJDEnKV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCBNUyArICdpbnB1dC0kMScpXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3ZhbHVlXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0YXNzaWduKGVsZW1lbnQsIHtwcm9wczogZmlsdGVyKGNoaWxkcmVuLCBjYWxsYmFjayl9KVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHJldHVybiAnJ1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZXNwYWNlIChlbGVtZW50KSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBSVUxFU0VUOlxuXHRcdFx0ZWxlbWVudC5wcm9wcyA9IGVsZW1lbnQucHJvcHMubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuXHRcdFx0XHRyZXR1cm4gY29tYmluZSh0b2tlbml6ZSh2YWx1ZSksIGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIGNoaWxkcmVuKSB7XG5cdFx0XHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIDApKSB7XG5cdFx0XHRcdFx0XHQvLyBcXGZcblx0XHRcdFx0XHRcdGNhc2UgMTI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzdWJzdHIodmFsdWUsIDEsIHN0cmxlbih2YWx1ZSkpXG5cdFx0XHRcdFx0XHQvLyBcXDAgKCArID4gflxuXHRcdFx0XHRcdFx0Y2FzZSAwOiBjYXNlIDQwOiBjYXNlIDQzOiBjYXNlIDYyOiBjYXNlIDEyNjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0XHQvLyA6XG5cdFx0XHRcdFx0XHRjYXNlIDU4OlxuXHRcdFx0XHRcdFx0XHRpZiAoY2hpbGRyZW5bKytpbmRleF0gPT09ICdnbG9iYWwnKVxuXHRcdFx0XHRcdFx0XHRcdGNoaWxkcmVuW2luZGV4XSA9ICcnLCBjaGlsZHJlblsrK2luZGV4XSA9ICdcXGYnICsgc3Vic3RyKGNoaWxkcmVuW2luZGV4XSwgaW5kZXggPSAxLCAtMSlcblx0XHRcdFx0XHRcdC8vIFxcc1xuXHRcdFx0XHRcdFx0Y2FzZSAzMjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGluZGV4ID09PSAxID8gJycgOiB2YWx1ZVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChpbmRleCkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgMDogZWxlbWVudCA9IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2l6ZW9mKGNoaWxkcmVuKSA+IDEgPyAnJyA6IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBpbmRleCA9IHNpemVvZihjaGlsZHJlbikgLSAxOiBjYXNlIDI6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaW5kZXggPT09IDIgPyB2YWx1ZSArIGVsZW1lbnQgKyBlbGVtZW50IDogdmFsdWUgKyBlbGVtZW50XG5cdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0fVxufVxuIiwidmFyIHVuaXRsZXNzS2V5cyA9IHtcbiAgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6IDEsXG4gIGFzcGVjdFJhdGlvOiAxLFxuICBib3JkZXJJbWFnZU91dHNldDogMSxcbiAgYm9yZGVySW1hZ2VTbGljZTogMSxcbiAgYm9yZGVySW1hZ2VXaWR0aDogMSxcbiAgYm94RmxleDogMSxcbiAgYm94RmxleEdyb3VwOiAxLFxuICBib3hPcmRpbmFsR3JvdXA6IDEsXG4gIGNvbHVtbkNvdW50OiAxLFxuICBjb2x1bW5zOiAxLFxuICBmbGV4OiAxLFxuICBmbGV4R3JvdzogMSxcbiAgZmxleFBvc2l0aXZlOiAxLFxuICBmbGV4U2hyaW5rOiAxLFxuICBmbGV4TmVnYXRpdmU6IDEsXG4gIGZsZXhPcmRlcjogMSxcbiAgZ3JpZFJvdzogMSxcbiAgZ3JpZFJvd0VuZDogMSxcbiAgZ3JpZFJvd1NwYW46IDEsXG4gIGdyaWRSb3dTdGFydDogMSxcbiAgZ3JpZENvbHVtbjogMSxcbiAgZ3JpZENvbHVtbkVuZDogMSxcbiAgZ3JpZENvbHVtblNwYW46IDEsXG4gIGdyaWRDb2x1bW5TdGFydDogMSxcbiAgbXNHcmlkUm93OiAxLFxuICBtc0dyaWRSb3dTcGFuOiAxLFxuICBtc0dyaWRDb2x1bW46IDEsXG4gIG1zR3JpZENvbHVtblNwYW46IDEsXG4gIGZvbnRXZWlnaHQ6IDEsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG9wYWNpdHk6IDEsXG4gIG9yZGVyOiAxLFxuICBvcnBoYW5zOiAxLFxuICB0YWJTaXplOiAxLFxuICB3aWRvd3M6IDEsXG4gIHpJbmRleDogMSxcbiAgem9vbTogMSxcbiAgV2Via2l0TGluZUNsYW1wOiAxLFxuICAvLyBTVkctcmVsYXRlZCBwcm9wZXJ0aWVzXG4gIGZpbGxPcGFjaXR5OiAxLFxuICBmbG9vZE9wYWNpdHk6IDEsXG4gIHN0b3BPcGFjaXR5OiAxLFxuICBzdHJva2VEYXNoYXJyYXk6IDEsXG4gIHN0cm9rZURhc2hvZmZzZXQ6IDEsXG4gIHN0cm9rZU1pdGVybGltaXQ6IDEsXG4gIHN0cm9rZU9wYWNpdHk6IDEsXG4gIHN0cm9rZVdpZHRoOiAxXG59O1xuXG5leHBvcnQgeyB1bml0bGVzc0tleXMgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0e19fc3ByZWFkQXJyYXkgYXMgZSxfX2Fzc2lnbiBhcyB0fWZyb21cInRzbGliXCI7aW1wb3J0IG4gZnJvbVwiQGVtb3Rpb24vaXMtcHJvcC12YWxpZFwiO2ltcG9ydCBvLHt1c2VSZWYgYXMgcix1c2VTdGF0ZSBhcyBzLHVzZU1lbW8gYXMgaSx1c2VFZmZlY3QgYXMgYSx1c2VDb250ZXh0IGFzIGMsdXNlRGVidWdWYWx1ZSBhcyBsLGNyZWF0ZUVsZW1lbnQgYXMgdX1mcm9tXCJyZWFjdFwiO2ltcG9ydCBwIGZyb21cInNoYWxsb3dlcXVhbFwiO2ltcG9ydCphcyBkIGZyb21cInN0eWxpc1wiO2ltcG9ydCBoIGZyb21cIkBlbW90aW9uL3VuaXRsZXNzXCI7dmFyIGY9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiYocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0FUVFJ8fHByb2Nlc3MuZW52LlNDX0FUVFIpfHxcImRhdGEtc3R5bGVkXCIsbT1cImFjdGl2ZVwiLHk9XCJkYXRhLXN0eWxlZC12ZXJzaW9uXCIsdj1cIjYuMS4xM1wiLGc9XCIvKiFzYyovXFxuXCIsUz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZcIkhUTUxFbGVtZW50XCJpbiB3aW5kb3csdz1Cb29sZWFuKFwiYm9vbGVhblwiPT10eXBlb2YgU0NfRElTQUJMRV9TUEVFRFk/U0NfRElTQUJMRV9TUEVFRFk6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiZ2b2lkIDAhPT1wcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFkmJlwiXCIhPT1wcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFk/XCJmYWxzZVwiIT09cHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0RJU0FCTEVfU1BFRURZJiZwcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFk6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiZ2b2lkIDAhPT1wcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWSYmXCJcIiE9PXByb2Nlc3MuZW52LlNDX0RJU0FCTEVfU1BFRURZP1wiZmFsc2VcIiE9PXByb2Nlc3MuZW52LlNDX0RJU0FCTEVfU1BFRURZJiZwcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWTpcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WKSxiPXt9LEU9L2ludmFsaWQgaG9vayBjYWxsL2ksTj1uZXcgU2V0LFA9ZnVuY3Rpb24odCxuKXtpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WKXt2YXIgbz1uPycgd2l0aCB0aGUgaWQgb2YgXCInLmNvbmNhdChuLCdcIicpOlwiXCIscz1cIlRoZSBjb21wb25lbnQgXCIuY29uY2F0KHQpLmNvbmNhdChvLFwiIGhhcyBiZWVuIGNyZWF0ZWQgZHluYW1pY2FsbHkuXFxuXCIpK1wiWW91IG1heSBzZWUgdGhpcyB3YXJuaW5nIGJlY2F1c2UgeW91J3ZlIGNhbGxlZCBzdHlsZWQgaW5zaWRlIGFub3RoZXIgY29tcG9uZW50LlxcblRvIHJlc29sdmUgdGhpcyBvbmx5IGNyZWF0ZSBuZXcgU3R5bGVkQ29tcG9uZW50cyBvdXRzaWRlIG9mIGFueSByZW5kZXIgbWV0aG9kIGFuZCBmdW5jdGlvbiBjb21wb25lbnQuXCIsaT1jb25zb2xlLmVycm9yO3RyeXt2YXIgYT0hMDtjb25zb2xlLmVycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1bXSxvPTE7bzxhcmd1bWVudHMubGVuZ3RoO28rKyluW28tMV09YXJndW1lbnRzW29dO0UudGVzdCh0KT8oYT0hMSxOLmRlbGV0ZShzKSk6aS5hcHBseSh2b2lkIDAsZShbdF0sbiwhMSkpfSxyKCksYSYmIU4uaGFzKHMpJiYoY29uc29sZS53YXJuKHMpLE4uYWRkKHMpKX1jYXRjaChlKXtFLnRlc3QoZS5tZXNzYWdlKSYmTi5kZWxldGUocyl9ZmluYWxseXtjb25zb2xlLmVycm9yPWl9fX0sXz1PYmplY3QuZnJlZXplKFtdKSxDPU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIEkoZSx0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1DKSxlLnRoZW1lIT09bi50aGVtZSYmZS50aGVtZXx8dHx8bi50aGVtZX12YXIgQT1uZXcgU2V0KFtcImFcIixcImFiYnJcIixcImFkZHJlc3NcIixcImFyZWFcIixcImFydGljbGVcIixcImFzaWRlXCIsXCJhdWRpb1wiLFwiYlwiLFwiYmFzZVwiLFwiYmRpXCIsXCJiZG9cIixcImJpZ1wiLFwiYmxvY2txdW90ZVwiLFwiYm9keVwiLFwiYnJcIixcImJ1dHRvblwiLFwiY2FudmFzXCIsXCJjYXB0aW9uXCIsXCJjaXRlXCIsXCJjb2RlXCIsXCJjb2xcIixcImNvbGdyb3VwXCIsXCJkYXRhXCIsXCJkYXRhbGlzdFwiLFwiZGRcIixcImRlbFwiLFwiZGV0YWlsc1wiLFwiZGZuXCIsXCJkaWFsb2dcIixcImRpdlwiLFwiZGxcIixcImR0XCIsXCJlbVwiLFwiZW1iZWRcIixcImZpZWxkc2V0XCIsXCJmaWdjYXB0aW9uXCIsXCJmaWd1cmVcIixcImZvb3RlclwiLFwiZm9ybVwiLFwiaDFcIixcImgyXCIsXCJoM1wiLFwiaDRcIixcImg1XCIsXCJoNlwiLFwiaGVhZGVyXCIsXCJoZ3JvdXBcIixcImhyXCIsXCJodG1sXCIsXCJpXCIsXCJpZnJhbWVcIixcImltZ1wiLFwiaW5wdXRcIixcImluc1wiLFwia2JkXCIsXCJrZXlnZW5cIixcImxhYmVsXCIsXCJsZWdlbmRcIixcImxpXCIsXCJsaW5rXCIsXCJtYWluXCIsXCJtYXBcIixcIm1hcmtcIixcIm1lbnVcIixcIm1lbnVpdGVtXCIsXCJtZXRhXCIsXCJtZXRlclwiLFwibmF2XCIsXCJub3NjcmlwdFwiLFwib2JqZWN0XCIsXCJvbFwiLFwib3B0Z3JvdXBcIixcIm9wdGlvblwiLFwib3V0cHV0XCIsXCJwXCIsXCJwYXJhbVwiLFwicGljdHVyZVwiLFwicHJlXCIsXCJwcm9ncmVzc1wiLFwicVwiLFwicnBcIixcInJ0XCIsXCJydWJ5XCIsXCJzXCIsXCJzYW1wXCIsXCJzY3JpcHRcIixcInNlY3Rpb25cIixcInNlbGVjdFwiLFwic21hbGxcIixcInNvdXJjZVwiLFwic3BhblwiLFwic3Ryb25nXCIsXCJzdHlsZVwiLFwic3ViXCIsXCJzdW1tYXJ5XCIsXCJzdXBcIixcInRhYmxlXCIsXCJ0Ym9keVwiLFwidGRcIixcInRleHRhcmVhXCIsXCJ0Zm9vdFwiLFwidGhcIixcInRoZWFkXCIsXCJ0aW1lXCIsXCJ0clwiLFwidHJhY2tcIixcInVcIixcInVsXCIsXCJ1c2VcIixcInZhclwiLFwidmlkZW9cIixcIndiclwiLFwiY2lyY2xlXCIsXCJjbGlwUGF0aFwiLFwiZGVmc1wiLFwiZWxsaXBzZVwiLFwiZm9yZWlnbk9iamVjdFwiLFwiZ1wiLFwiaW1hZ2VcIixcImxpbmVcIixcImxpbmVhckdyYWRpZW50XCIsXCJtYXJrZXJcIixcIm1hc2tcIixcInBhdGhcIixcInBhdHRlcm5cIixcInBvbHlnb25cIixcInBvbHlsaW5lXCIsXCJyYWRpYWxHcmFkaWVudFwiLFwicmVjdFwiLFwic3RvcFwiLFwic3ZnXCIsXCJ0ZXh0XCIsXCJ0c3BhblwiXSksTz0vWyFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxcXFxcXV5ge3x9fi1dKy9nLEQ9LyheLXwtJCkvZztmdW5jdGlvbiBSKGUpe3JldHVybiBlLnJlcGxhY2UoTyxcIi1cIikucmVwbGFjZShELFwiXCIpfXZhciBUPS8oYSkoZCkvZ2ksaz01MixqPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUrKGU+MjU/Mzk6OTcpKX07ZnVuY3Rpb24geChlKXt2YXIgdCxuPVwiXCI7Zm9yKHQ9TWF0aC5hYnMoZSk7dD5rO3Q9dC9rfDApbj1qKHQlaykrbjtyZXR1cm4oaih0JWspK24pLnJlcGxhY2UoVCxcIiQxLSQyXCIpfXZhciBWLEY9NTM4MSxNPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQubGVuZ3RoO247KWU9MzMqZV50LmNoYXJDb2RlQXQoLS1uKTtyZXR1cm4gZX0sej1mdW5jdGlvbihlKXtyZXR1cm4gTShGLGUpfTtmdW5jdGlvbiAkKGUpe3JldHVybiB4KHooZSk+Pj4wKX1mdW5jdGlvbiBCKGUpe3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJlwic3RyaW5nXCI9PXR5cGVvZiBlJiZlfHxlLmRpc3BsYXlOYW1lfHxlLm5hbWV8fFwiQ29tcG9uZW50XCJ9ZnVuY3Rpb24gTChlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmKFwicHJvZHVjdGlvblwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlZ8fGUuY2hhckF0KDApPT09ZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSl9dmFyIEc9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLFk9Rz9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSxXPUc/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHE9e2NoaWxkQ29udGV4dFR5cGVzOiEwLGNvbnRleHRUeXBlOiEwLGNvbnRleHRUeXBlczohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAsZ2V0RGVmYXVsdFByb3BzOiEwLGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjohMCxnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6ITAsbWl4aW5zOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxIPXtuYW1lOiEwLGxlbmd0aDohMCxwcm90b3R5cGU6ITAsY2FsbGVyOiEwLGNhbGxlZTohMCxhcmd1bWVudHM6ITAsYXJpdHk6ITB9LFU9eyQkdHlwZW9mOiEwLGNvbXBhcmU6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxKPSgoVj17fSlbV109eyQkdHlwZW9mOiEwLHJlbmRlcjohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwfSxWW1ldPVUsVik7ZnVuY3Rpb24gWChlKXtyZXR1cm4oXCJ0eXBlXCJpbih0PWUpJiZ0LnR5cGUuJCR0eXBlb2YpPT09WT9VOlwiJCR0eXBlb2ZcImluIGU/SltlLiQkdHlwZW9mXTpxO3ZhciB0fXZhciBaPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxLPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLFE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxlZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHRlPU9iamVjdC5nZXRQcm90b3R5cGVPZixuZT1PYmplY3QucHJvdG90eXBlO2Z1bmN0aW9uIG9lKGUsdCxuKXtpZihcInN0cmluZ1wiIT10eXBlb2YgdCl7aWYobmUpe3ZhciBvPXRlKHQpO28mJm8hPT1uZSYmb2UoZSxvLG4pfXZhciByPUsodCk7USYmKHI9ci5jb25jYXQoUSh0KSkpO2Zvcih2YXIgcz1YKGUpLGk9WCh0KSxhPTA7YTxyLmxlbmd0aDsrK2Epe3ZhciBjPXJbYV07aWYoIShjIGluIEh8fG4mJm5bY118fGkmJmMgaW4gaXx8cyYmYyBpbiBzKSl7dmFyIGw9ZWUodCxjKTt0cnl7WihlLGMsbCl9Y2F0Y2goZSl7fX19fXJldHVybiBlfWZ1bmN0aW9uIHJlKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9ZnVuY3Rpb24gc2UoZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJlwic3R5bGVkQ29tcG9uZW50SWRcImluIGV9ZnVuY3Rpb24gaWUoZSx0KXtyZXR1cm4gZSYmdD9cIlwiLmNvbmNhdChlLFwiIFwiKS5jb25jYXQodCk6ZXx8dHx8XCJcIn1mdW5jdGlvbiBhZShlLHQpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm5cIlwiO2Zvcih2YXIgbj1lWzBdLG89MTtvPGUubGVuZ3RoO28rKyluKz10P3QrZVtvXTplW29dO3JldHVybiBufWZ1bmN0aW9uIGNlKGUpe3JldHVybiBudWxsIT09ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3IubmFtZT09PU9iamVjdC5uYW1lJiYhKFwicHJvcHNcImluIGUmJmUuJCR0eXBlb2YpfWZ1bmN0aW9uIGxlKGUsdCxuKXtpZih2b2lkIDA9PT1uJiYobj0hMSksIW4mJiFjZShlKSYmIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyllW29dPWxlKGVbb10sdFtvXSk7ZWxzZSBpZihjZSh0KSlmb3IodmFyIG8gaW4gdCllW29dPWxlKGVbb10sdFtvXSk7cmV0dXJuIGV9ZnVuY3Rpb24gdWUoZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInRvU3RyaW5nXCIse3ZhbHVlOnR9KX12YXIgcGU9XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOVj97MTpcIkNhbm5vdCBjcmVhdGUgc3R5bGVkLWNvbXBvbmVudCBmb3IgY29tcG9uZW50OiAlcy5cXG5cXG5cIiwyOlwiQ2FuJ3QgY29sbGVjdCBzdHlsZXMgb25jZSB5b3UndmUgY29uc3VtZWQgYSBgU2VydmVyU3R5bGVTaGVldGAncyBzdHlsZXMhIGBTZXJ2ZXJTdHlsZVNoZWV0YCBpcyBhIG9uZSBvZmYgaW5zdGFuY2UgZm9yIGVhY2ggc2VydmVyLXNpZGUgcmVuZGVyIGN5Y2xlLlxcblxcbi0gQXJlIHlvdSB0cnlpbmcgdG8gcmV1c2UgaXQgYWNyb3NzIHJlbmRlcnM/XFxuLSBBcmUgeW91IGFjY2lkZW50YWxseSBjYWxsaW5nIGNvbGxlY3RTdHlsZXMgdHdpY2U/XFxuXFxuXCIsMzpcIlN0cmVhbWluZyBTU1IgaXMgb25seSBzdXBwb3J0ZWQgaW4gYSBOb2RlLmpzIGVudmlyb25tZW50OyBQbGVhc2UgZG8gbm90IHRyeSB0byBjYWxsIHRoaXMgbWV0aG9kIGluIHRoZSBicm93c2VyLlxcblxcblwiLDQ6XCJUaGUgYFN0eWxlU2hlZXRNYW5hZ2VyYCBleHBlY3RzIGEgdmFsaWQgdGFyZ2V0IG9yIHNoZWV0IHByb3AhXFxuXFxuLSBEb2VzIHRoaXMgZXJyb3Igb2NjdXIgb24gdGhlIGNsaWVudCBhbmQgaXMgeW91ciB0YXJnZXQgZmFsc3k/XFxuLSBEb2VzIHRoaXMgZXJyb3Igb2NjdXIgb24gdGhlIHNlcnZlciBhbmQgaXMgdGhlIHNoZWV0IGZhbHN5P1xcblxcblwiLDU6XCJUaGUgY2xvbmUgbWV0aG9kIGNhbm5vdCBiZSB1c2VkIG9uIHRoZSBjbGllbnQhXFxuXFxuLSBBcmUgeW91IHJ1bm5pbmcgaW4gYSBjbGllbnQtbGlrZSBlbnZpcm9ubWVudCBvbiB0aGUgc2VydmVyP1xcbi0gQXJlIHlvdSB0cnlpbmcgdG8gcnVuIFNTUiBvbiB0aGUgY2xpZW50P1xcblxcblwiLDY6XCJUcnlpbmcgdG8gaW5zZXJ0IGEgbmV3IHN0eWxlIHRhZywgYnV0IHRoZSBnaXZlbiBOb2RlIGlzIHVubW91bnRlZCFcXG5cXG4tIEFyZSB5b3UgdXNpbmcgYSBjdXN0b20gdGFyZ2V0IHRoYXQgaXNuJ3QgbW91bnRlZD9cXG4tIERvZXMgeW91ciBkb2N1bWVudCBub3QgaGF2ZSBhIHZhbGlkIGhlYWQgZWxlbWVudD9cXG4tIEhhdmUgeW91IGFjY2lkZW50YWxseSByZW1vdmVkIGEgc3R5bGUgdGFnIG1hbnVhbGx5P1xcblxcblwiLDc6J1RoZW1lUHJvdmlkZXI6IFBsZWFzZSByZXR1cm4gYW4gb2JqZWN0IGZyb20geW91ciBcInRoZW1lXCIgcHJvcCBmdW5jdGlvbiwgZS5nLlxcblxcbmBgYGpzXFxudGhlbWU9eygpID0+ICh7fSl9XFxuYGBgXFxuXFxuJyw4OidUaGVtZVByb3ZpZGVyOiBQbGVhc2UgbWFrZSB5b3VyIFwidGhlbWVcIiBwcm9wIGFuIG9iamVjdC5cXG5cXG4nLDk6XCJNaXNzaW5nIGRvY3VtZW50IGA8aGVhZD5gXFxuXFxuXCIsMTA6XCJDYW5ub3QgZmluZCBhIFN0eWxlU2hlZXQgaW5zdGFuY2UuIFVzdWFsbHkgdGhpcyBoYXBwZW5zIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb3BpZXMgb2Ygc3R5bGVkLWNvbXBvbmVudHMgbG9hZGVkIGF0IG9uY2UuIENoZWNrIG91dCB0aGlzIGlzc3VlIGZvciBob3cgdG8gdHJvdWJsZXNob290IGFuZCBmaXggdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGlzIHNpdHVhdGlvbiBjYW4gaGFwcGVuOiBodHRwczovL2dpdGh1Yi5jb20vc3R5bGVkLWNvbXBvbmVudHMvc3R5bGVkLWNvbXBvbmVudHMvaXNzdWVzLzE5NDEjaXNzdWVjb21tZW50LTQxNzg2MjAyMVxcblxcblwiLDExOlwiX1RoaXMgZXJyb3Igd2FzIHJlcGxhY2VkIHdpdGggYSBkZXYtdGltZSB3YXJuaW5nLCBpdCB3aWxsIGJlIGRlbGV0ZWQgZm9yIHY0IGZpbmFsLl8gW2NyZWF0ZUdsb2JhbFN0eWxlXSByZWNlaXZlZCBjaGlsZHJlbiB3aGljaCB3aWxsIG5vdCBiZSByZW5kZXJlZC4gUGxlYXNlIHVzZSB0aGUgY29tcG9uZW50IHdpdGhvdXQgcGFzc2luZyBjaGlsZHJlbiBlbGVtZW50cy5cXG5cXG5cIiwxMjpcIkl0IHNlZW1zIHlvdSBhcmUgaW50ZXJwb2xhdGluZyBhIGtleWZyYW1lIGRlY2xhcmF0aW9uICglcykgaW50byBhbiB1bnRhZ2dlZCBzdHJpbmcuIFRoaXMgd2FzIHN1cHBvcnRlZCBpbiBzdHlsZWQtY29tcG9uZW50cyB2MywgYnV0IGlzIG5vdCBsb25nZXIgc3VwcG9ydGVkIGluIHY0IGFzIGtleWZyYW1lcyBhcmUgbm93IGluamVjdGVkIG9uLWRlbWFuZC4gUGxlYXNlIHdyYXAgeW91ciBzdHJpbmcgaW4gdGhlIGNzc1xcXFxgXFxcXGAgaGVscGVyIHdoaWNoIGVuc3VyZXMgdGhlIHN0eWxlcyBhcmUgaW5qZWN0ZWQgY29ycmVjdGx5LiBTZWUgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYXBpI2Nzc1xcblxcblwiLDEzOlwiJXMgaXMgbm90IGEgc3R5bGVkIGNvbXBvbmVudCBhbmQgY2Fubm90IGJlIHJlZmVycmVkIHRvIHZpYSBjb21wb25lbnQgc2VsZWN0b3IuIFNlZSBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9hZHZhbmNlZCNyZWZlcnJpbmctdG8tb3RoZXItY29tcG9uZW50cyBmb3IgbW9yZSBkZXRhaWxzLlxcblxcblwiLDE0OidUaGVtZVByb3ZpZGVyOiBcInRoZW1lXCIgcHJvcCBpcyByZXF1aXJlZC5cXG5cXG4nLDE1OlwiQSBzdHlsaXMgcGx1Z2luIGhhcyBiZWVuIHN1cHBsaWVkIHRoYXQgaXMgbm90IG5hbWVkLiBXZSBuZWVkIGEgbmFtZSBmb3IgZWFjaCBwbHVnaW4gdG8gYmUgYWJsZSB0byBwcmV2ZW50IHN0eWxpbmcgY29sbGlzaW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBzdHlsaXMgY29uZmlndXJhdGlvbnMgd2l0aGluIHRoZSBzYW1lIGFwcC4gQmVmb3JlIHlvdSBwYXNzIHlvdXIgcGx1Z2luIHRvIGA8U3R5bGVTaGVldE1hbmFnZXIgc3R5bGlzUGx1Z2lucz17W119PmAsIHBsZWFzZSBtYWtlIHN1cmUgZWFjaCBwbHVnaW4gaXMgdW5pcXVlbHktbmFtZWQsIGUuZy5cXG5cXG5gYGBqc1xcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbXBvcnRlZFBsdWdpbiwgJ25hbWUnLCB7IHZhbHVlOiAnc29tZS11bmlxdWUtbmFtZScgfSk7XFxuYGBgXFxuXFxuXCIsMTY6XCJSZWFjaGVkIHRoZSBsaW1pdCBvZiBob3cgbWFueSBzdHlsZWQgY29tcG9uZW50cyBtYXkgYmUgY3JlYXRlZCBhdCBncm91cCAlcy5cXG5Zb3UgbWF5IG9ubHkgY3JlYXRlIHVwIHRvIDEsMDczLDc0MSw4MjQgY29tcG9uZW50cy4gSWYgeW91J3JlIGNyZWF0aW5nIGNvbXBvbmVudHMgZHluYW1pY2FsbHksXFxuYXMgZm9yIGluc3RhbmNlIGluIHlvdXIgcmVuZGVyIG1ldGhvZCB0aGVuIHlvdSBtYXkgYmUgcnVubmluZyBpbnRvIHRoaXMgbGltaXRhdGlvbi5cXG5cXG5cIiwxNzpcIkNTU1N0eWxlU2hlZXQgY291bGQgbm90IGJlIGZvdW5kIG9uIEhUTUxTdHlsZUVsZW1lbnQuXFxuSGFzIHN0eWxlZC1jb21wb25lbnRzJyBzdHlsZSB0YWcgYmVlbiB1bm1vdW50ZWQgb3IgYWx0ZXJlZCBieSBhbm90aGVyIHNjcmlwdD9cXG5cIiwxODpcIlRoZW1lUHJvdmlkZXI6IFBsZWFzZSBtYWtlIHN1cmUgeW91ciB1c2VUaGVtZSBob29rIGlzIHdpdGhpbiBhIGA8VGhlbWVQcm92aWRlcj5gXCJ9Ont9O2Z1bmN0aW9uIGRlKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO2Zvcih2YXIgbj1lWzBdLG89W10scj0xLHM9ZS5sZW5ndGg7cjxzO3IrPTEpby5wdXNoKGVbcl0pO3JldHVybiBvLmZvckVhY2goZnVuY3Rpb24oZSl7bj1uLnJlcGxhY2UoLyVbYS16XS8sZSl9KSxufWZ1bmN0aW9uIGhlKHQpe2Zvcih2YXIgbj1bXSxvPTE7bzxhcmd1bWVudHMubGVuZ3RoO28rKyluW28tMV09YXJndW1lbnRzW29dO3JldHVyblwicHJvZHVjdGlvblwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlY/bmV3IEVycm9yKFwiQW4gZXJyb3Igb2NjdXJyZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc3R5bGVkLWNvbXBvbmVudHMvc3R5bGVkLWNvbXBvbmVudHMvYmxvYi9tYWluL3BhY2thZ2VzL3N0eWxlZC1jb21wb25lbnRzL3NyYy91dGlscy9lcnJvcnMubWQjXCIuY29uY2F0KHQsXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIpLmNvbmNhdChuLmxlbmd0aD4wP1wiIEFyZ3M6IFwiLmNvbmNhdChuLmpvaW4oXCIsIFwiKSk6XCJcIikpOm5ldyBFcnJvcihkZS5hcHBseSh2b2lkIDAsZShbcGVbdF1dLG4sITEpKS50cmltKCkpfXZhciBmZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5ncm91cFNpemVzPW5ldyBVaW50MzJBcnJheSg1MTIpLHRoaXMubGVuZ3RoPTUxMix0aGlzLnRhZz1lfXJldHVybiBlLnByb3RvdHlwZS5pbmRleE9mR3JvdXA9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj0wO248ZTtuKyspdCs9dGhpcy5ncm91cFNpemVzW25dO3JldHVybiB0fSxlLnByb3RvdHlwZS5pbnNlcnRSdWxlcz1mdW5jdGlvbihlLHQpe2lmKGU+PXRoaXMuZ3JvdXBTaXplcy5sZW5ndGgpe2Zvcih2YXIgbj10aGlzLmdyb3VwU2l6ZXMsbz1uLmxlbmd0aCxyPW87ZT49cjspaWYoKHI8PD0xKTwwKXRocm93IGhlKDE2LFwiXCIuY29uY2F0KGUpKTt0aGlzLmdyb3VwU2l6ZXM9bmV3IFVpbnQzMkFycmF5KHIpLHRoaXMuZ3JvdXBTaXplcy5zZXQobiksdGhpcy5sZW5ndGg9cjtmb3IodmFyIHM9bztzPHI7cysrKXRoaXMuZ3JvdXBTaXplc1tzXT0wfWZvcih2YXIgaT10aGlzLmluZGV4T2ZHcm91cChlKzEpLGE9KHM9MCx0Lmxlbmd0aCk7czxhO3MrKyl0aGlzLnRhZy5pbnNlcnRSdWxlKGksdFtzXSkmJih0aGlzLmdyb3VwU2l6ZXNbZV0rKyxpKyspfSxlLnByb3RvdHlwZS5jbGVhckdyb3VwPWZ1bmN0aW9uKGUpe2lmKGU8dGhpcy5sZW5ndGgpe3ZhciB0PXRoaXMuZ3JvdXBTaXplc1tlXSxuPXRoaXMuaW5kZXhPZkdyb3VwKGUpLG89bit0O3RoaXMuZ3JvdXBTaXplc1tlXT0wO2Zvcih2YXIgcj1uO3I8bztyKyspdGhpcy50YWcuZGVsZXRlUnVsZShuKX19LGUucHJvdG90eXBlLmdldEdyb3VwPWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCI7aWYoZT49dGhpcy5sZW5ndGh8fDA9PT10aGlzLmdyb3VwU2l6ZXNbZV0pcmV0dXJuIHQ7Zm9yKHZhciBuPXRoaXMuZ3JvdXBTaXplc1tlXSxvPXRoaXMuaW5kZXhPZkdyb3VwKGUpLHI9bytuLHM9bztzPHI7cysrKXQrPVwiXCIuY29uY2F0KHRoaXMudGFnLmdldFJ1bGUocykpLmNvbmNhdChnKTtyZXR1cm4gdH0sZX0oKSxtZT0xPDwzMCx5ZT1uZXcgTWFwLHZlPW5ldyBNYXAsZ2U9MSxTZT1mdW5jdGlvbihlKXtpZih5ZS5oYXMoZSkpcmV0dXJuIHllLmdldChlKTtmb3IoO3ZlLmhhcyhnZSk7KWdlKys7dmFyIHQ9Z2UrKztpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYoKDB8dCk8MHx8dD5tZSkpdGhyb3cgaGUoMTYsXCJcIi5jb25jYXQodCkpO3JldHVybiB5ZS5zZXQoZSx0KSx2ZS5zZXQodCxlKSx0fSx3ZT1mdW5jdGlvbihlLHQpe2dlPXQrMSx5ZS5zZXQoZSx0KSx2ZS5zZXQodCxlKX0sYmU9XCJzdHlsZVtcIi5jb25jYXQoZixcIl1bXCIpLmNvbmNhdCh5LCc9XCInKS5jb25jYXQodiwnXCJdJyksRWU9bmV3IFJlZ0V4cChcIl5cIi5jb25jYXQoZiwnXFxcXC5nKFxcXFxkKylcXFxcW2lkPVwiKFtcXFxcd1xcXFxkLV0rKVwiXFxcXF0uKj9cIihbXlwiXSopJykpLE5lPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIG8scj1uLnNwbGl0KFwiLFwiKSxzPTAsaT1yLmxlbmd0aDtzPGk7cysrKShvPXJbc10pJiZlLnJlZ2lzdGVyTmFtZSh0LG8pfSxQZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbixvPShudWxsIT09KG49dC50ZXh0Q29udGVudCkmJnZvaWQgMCE9PW4/bjpcIlwiKS5zcGxpdChnKSxyPVtdLHM9MCxpPW8ubGVuZ3RoO3M8aTtzKyspe3ZhciBhPW9bc10udHJpbSgpO2lmKGEpe3ZhciBjPWEubWF0Y2goRWUpO2lmKGMpe3ZhciBsPTB8cGFyc2VJbnQoY1sxXSwxMCksdT1jWzJdOzAhPT1sJiYod2UodSxsKSxOZShlLHUsY1szXSksZS5nZXRUYWcoKS5pbnNlcnRSdWxlcyhsLHIpKSxyLmxlbmd0aD0wfWVsc2Ugci5wdXNoKGEpfX19LF9lPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGJlKSxuPTAsbz10Lmxlbmd0aDtuPG87bisrKXt2YXIgcj10W25dO3ImJnIuZ2V0QXR0cmlidXRlKGYpIT09bSYmKFBlKGUsciksci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocikpfX07ZnVuY3Rpb24gQ2UoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgX193ZWJwYWNrX25vbmNlX18/X193ZWJwYWNrX25vbmNlX186bnVsbH12YXIgSWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuaGVhZCxuPWV8fHQsbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIikscj1mdW5jdGlvbihlKXt2YXIgdD1BcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW1wiLmNvbmNhdChmLFwiXVwiKSkpO3JldHVybiB0W3QubGVuZ3RoLTFdfShuKSxzPXZvaWQgMCE9PXI/ci5uZXh0U2libGluZzpudWxsO28uc2V0QXR0cmlidXRlKGYsbSksby5zZXRBdHRyaWJ1dGUoeSx2KTt2YXIgaT1DZSgpO3JldHVybiBpJiZvLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsaSksbi5pbnNlcnRCZWZvcmUobyxzKSxvfSxBZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5lbGVtZW50PUllKGUpLHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKSksdGhpcy5zaGVldD1mdW5jdGlvbihlKXtpZihlLnNoZWV0KXJldHVybiBlLnNoZWV0O2Zvcih2YXIgdD1kb2N1bWVudC5zdHlsZVNoZWV0cyxuPTAsbz10Lmxlbmd0aDtuPG87bisrKXt2YXIgcj10W25dO2lmKHIub3duZXJOb2RlPT09ZSlyZXR1cm4gcn10aHJvdyBoZSgxNyl9KHRoaXMuZWxlbWVudCksdGhpcy5sZW5ndGg9MH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0UnVsZT1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gdGhpcy5zaGVldC5pbnNlcnRSdWxlKHQsZSksdGhpcy5sZW5ndGgrKywhMH1jYXRjaChlKXtyZXR1cm4hMX19LGUucHJvdG90eXBlLmRlbGV0ZVJ1bGU9ZnVuY3Rpb24oZSl7dGhpcy5zaGVldC5kZWxldGVSdWxlKGUpLHRoaXMubGVuZ3RoLS19LGUucHJvdG90eXBlLmdldFJ1bGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zaGVldC5jc3NSdWxlc1tlXTtyZXR1cm4gdCYmdC5jc3NUZXh0P3QuY3NzVGV4dDpcIlwifSxlfSgpLE9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmVsZW1lbnQ9SWUoZSksdGhpcy5ub2Rlcz10aGlzLmVsZW1lbnQuY2hpbGROb2Rlcyx0aGlzLmxlbmd0aD0wfXJldHVybiBlLnByb3RvdHlwZS5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7aWYoZTw9dGhpcy5sZW5ndGgmJmU+PTApe3ZhciBuPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpO3JldHVybiB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKG4sdGhpcy5ub2Rlc1tlXXx8bnVsbCksdGhpcy5sZW5ndGgrKywhMH1yZXR1cm4hMX0sZS5wcm90b3R5cGUuZGVsZXRlUnVsZT1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5ub2Rlc1tlXSksdGhpcy5sZW5ndGgtLX0sZS5wcm90b3R5cGUuZ2V0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm4gZTx0aGlzLmxlbmd0aD90aGlzLm5vZGVzW2VdLnRleHRDb250ZW50OlwiXCJ9LGV9KCksRGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMucnVsZXM9W10sdGhpcy5sZW5ndGg9MH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0UnVsZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPD10aGlzLmxlbmd0aCYmKHRoaXMucnVsZXMuc3BsaWNlKGUsMCx0KSx0aGlzLmxlbmd0aCsrLCEwKX0sZS5wcm90b3R5cGUuZGVsZXRlUnVsZT1mdW5jdGlvbihlKXt0aGlzLnJ1bGVzLnNwbGljZShlLDEpLHRoaXMubGVuZ3RoLS19LGUucHJvdG90eXBlLmdldFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8dGhpcy5sZW5ndGg/dGhpcy5ydWxlc1tlXTpcIlwifSxlfSgpLFJlPVMsVGU9e2lzU2VydmVyOiFTLHVzZUNTU09NSW5qZWN0aW9uOiF3fSxrZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxuLG8pe3ZvaWQgMD09PWUmJihlPUMpLHZvaWQgMD09PW4mJihuPXt9KTt2YXIgcj10aGlzO3RoaXMub3B0aW9ucz10KHQoe30sVGUpLGUpLHRoaXMuZ3M9bix0aGlzLm5hbWVzPW5ldyBNYXAobyksdGhpcy5zZXJ2ZXI9ISFlLmlzU2VydmVyLCF0aGlzLnNlcnZlciYmUyYmUmUmJihSZT0hMSxfZSh0aGlzKSksdWUodGhpcyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5nZXRUYWcoKSxuPXQubGVuZ3RoLG89XCJcIixyPWZ1bmN0aW9uKG4pe3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiB2ZS5nZXQoZSl9KG4pO2lmKHZvaWQgMD09PXIpcmV0dXJuXCJjb250aW51ZVwiO3ZhciBzPWUubmFtZXMuZ2V0KHIpLGk9dC5nZXRHcm91cChuKTtpZih2b2lkIDA9PT1zfHwhcy5zaXplfHwwPT09aS5sZW5ndGgpcmV0dXJuXCJjb250aW51ZVwiO3ZhciBhPVwiXCIuY29uY2F0KGYsXCIuZ1wiKS5jb25jYXQobiwnW2lkPVwiJykuY29uY2F0KHIsJ1wiXScpLGM9XCJcIjt2b2lkIDAhPT1zJiZzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5sZW5ndGg+MCYmKGMrPVwiXCIuY29uY2F0KGUsXCIsXCIpKX0pLG8rPVwiXCIuY29uY2F0KGkpLmNvbmNhdChhLCd7Y29udGVudDpcIicpLmNvbmNhdChjLCdcIn0nKS5jb25jYXQoZyl9LHM9MDtzPG47cysrKXIocyk7cmV0dXJuIG99KHIpfSl9cmV0dXJuIGUucmVnaXN0ZXJJZD1mdW5jdGlvbihlKXtyZXR1cm4gU2UoZSl9LGUucHJvdG90eXBlLnJlaHlkcmF0ZT1mdW5jdGlvbigpeyF0aGlzLnNlcnZlciYmUyYmX2UodGhpcyl9LGUucHJvdG90eXBlLnJlY29uc3RydWN0V2l0aE9wdGlvbnM9ZnVuY3Rpb24obixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89ITApLG5ldyBlKHQodCh7fSx0aGlzLm9wdGlvbnMpLG4pLHRoaXMuZ3MsbyYmdGhpcy5uYW1lc3x8dm9pZCAwKX0sZS5wcm90b3R5cGUuYWxsb2NhdGVHU0luc3RhbmNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdzW2VdPSh0aGlzLmdzW2VdfHwwKSsxfSxlLnByb3RvdHlwZS5nZXRUYWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWd8fCh0aGlzLnRhZz0oZT1mdW5jdGlvbihlKXt2YXIgdD1lLnVzZUNTU09NSW5qZWN0aW9uLG49ZS50YXJnZXQ7cmV0dXJuIGUuaXNTZXJ2ZXI/bmV3IERlKG4pOnQ/bmV3IEFlKG4pOm5ldyBPZShuKX0odGhpcy5vcHRpb25zKSxuZXcgZmUoZSkpKTt2YXIgZX0sZS5wcm90b3R5cGUuaGFzTmFtZUZvcklkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubmFtZXMuaGFzKGUpJiZ0aGlzLm5hbWVzLmdldChlKS5oYXModCl9LGUucHJvdG90eXBlLnJlZ2lzdGVyTmFtZT1mdW5jdGlvbihlLHQpe2lmKFNlKGUpLHRoaXMubmFtZXMuaGFzKGUpKXRoaXMubmFtZXMuZ2V0KGUpLmFkZCh0KTtlbHNle3ZhciBuPW5ldyBTZXQ7bi5hZGQodCksdGhpcy5uYW1lcy5zZXQoZSxuKX19LGUucHJvdG90eXBlLmluc2VydFJ1bGVzPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnJlZ2lzdGVyTmFtZShlLHQpLHRoaXMuZ2V0VGFnKCkuaW5zZXJ0UnVsZXMoU2UoZSksbil9LGUucHJvdG90eXBlLmNsZWFyTmFtZXM9ZnVuY3Rpb24oZSl7dGhpcy5uYW1lcy5oYXMoZSkmJnRoaXMubmFtZXMuZ2V0KGUpLmNsZWFyKCl9LGUucHJvdG90eXBlLmNsZWFyUnVsZXM9ZnVuY3Rpb24oZSl7dGhpcy5nZXRUYWcoKS5jbGVhckdyb3VwKFNlKGUpKSx0aGlzLmNsZWFyTmFtZXMoZSl9LGUucHJvdG90eXBlLmNsZWFyVGFnPWZ1bmN0aW9uKCl7dGhpcy50YWc9dm9pZCAwfSxlfSgpLGplPS8mL2cseGU9L15cXHMqXFwvXFwvLiokL2dtO2Z1bmN0aW9uIFZlKGUsdCl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVyblwicnVsZVwiPT09ZS50eXBlJiYoZS52YWx1ZT1cIlwiLmNvbmNhdCh0LFwiIFwiKS5jb25jYXQoZS52YWx1ZSksZS52YWx1ZT1lLnZhbHVlLnJlcGxhY2VBbGwoXCIsXCIsXCIsXCIuY29uY2F0KHQsXCIgXCIpKSxlLnByb3BzPWUucHJvcHMubWFwKGZ1bmN0aW9uKGUpe3JldHVyblwiXCIuY29uY2F0KHQsXCIgXCIpLmNvbmNhdChlKX0pKSxBcnJheS5pc0FycmF5KGUuY2hpbGRyZW4pJiZcIkBrZXlmcmFtZXNcIiE9PWUudHlwZSYmKGUuY2hpbGRyZW49VmUoZS5jaGlsZHJlbix0KSksZX0pfWZ1bmN0aW9uIEZlKGUpe3ZhciB0LG4sbyxyPXZvaWQgMD09PWU/QzplLHM9ci5vcHRpb25zLGk9dm9pZCAwPT09cz9DOnMsYT1yLnBsdWdpbnMsYz12b2lkIDA9PT1hP186YSxsPWZ1bmN0aW9uKGUsbyxyKXtyZXR1cm4gci5zdGFydHNXaXRoKG4pJiZyLmVuZHNXaXRoKG4pJiZyLnJlcGxhY2VBbGwobixcIlwiKS5sZW5ndGg+MD9cIi5cIi5jb25jYXQodCk6ZX0sdT1jLnNsaWNlKCk7dS5wdXNoKGZ1bmN0aW9uKGUpe2UudHlwZT09PWQuUlVMRVNFVCYmZS52YWx1ZS5pbmNsdWRlcyhcIiZcIikmJihlLnByb3BzWzBdPWUucHJvcHNbMF0ucmVwbGFjZShqZSxuKS5yZXBsYWNlKG8sbCkpfSksaS5wcmVmaXgmJnUucHVzaChkLnByZWZpeGVyKSx1LnB1c2goZC5zdHJpbmdpZnkpO3ZhciBwPWZ1bmN0aW9uKGUscixzLGEpe3ZvaWQgMD09PXImJihyPVwiXCIpLHZvaWQgMD09PXMmJihzPVwiXCIpLHZvaWQgMD09PWEmJihhPVwiJlwiKSx0PWEsbj1yLG89bmV3IFJlZ0V4cChcIlxcXFxcIi5jb25jYXQobixcIlxcXFxiXCIpLFwiZ1wiKTt2YXIgYz1lLnJlcGxhY2UoeGUsXCJcIiksbD1kLmNvbXBpbGUoc3x8cj9cIlwiLmNvbmNhdChzLFwiIFwiKS5jb25jYXQocixcIiB7IFwiKS5jb25jYXQoYyxcIiB9XCIpOmMpO2kubmFtZXNwYWNlJiYobD1WZShsLGkubmFtZXNwYWNlKSk7dmFyIHA9W107cmV0dXJuIGQuc2VyaWFsaXplKGwsZC5taWRkbGV3YXJlKHUuY29uY2F0KGQucnVsZXNoZWV0KGZ1bmN0aW9uKGUpe3JldHVybiBwLnB1c2goZSl9KSkpKSxwfTtyZXR1cm4gcC5oYXNoPWMubGVuZ3RoP2MucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQubmFtZXx8aGUoMTUpLE0oZSx0Lm5hbWUpfSxGKS50b1N0cmluZygpOlwiXCIscH12YXIgTWU9bmV3IGtlLHplPUZlKCksJGU9by5jcmVhdGVDb250ZXh0KHtzaG91bGRGb3J3YXJkUHJvcDp2b2lkIDAsc3R5bGVTaGVldDpNZSxzdHlsaXM6emV9KSxCZT0kZS5Db25zdW1lcixMZT1vLmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiBHZSgpe3JldHVybiBjKCRlKX1mdW5jdGlvbiBZZShlKXt2YXIgdD1zKGUuc3R5bGlzUGx1Z2lucyksbj10WzBdLHI9dFsxXSxjPUdlKCkuc3R5bGVTaGVldCxsPWkoZnVuY3Rpb24oKXt2YXIgdD1jO3JldHVybiBlLnNoZWV0P3Q9ZS5zaGVldDplLnRhcmdldCYmKHQ9dC5yZWNvbnN0cnVjdFdpdGhPcHRpb25zKHt0YXJnZXQ6ZS50YXJnZXR9LCExKSksZS5kaXNhYmxlQ1NTT01JbmplY3Rpb24mJih0PXQucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucyh7dXNlQ1NTT01JbmplY3Rpb246ITF9KSksdH0sW2UuZGlzYWJsZUNTU09NSW5qZWN0aW9uLGUuc2hlZXQsZS50YXJnZXQsY10pLHU9aShmdW5jdGlvbigpe3JldHVybiBGZSh7b3B0aW9uczp7bmFtZXNwYWNlOmUubmFtZXNwYWNlLHByZWZpeDplLmVuYWJsZVZlbmRvclByZWZpeGVzfSxwbHVnaW5zOm59KX0sW2UuZW5hYmxlVmVuZG9yUHJlZml4ZXMsZS5uYW1lc3BhY2Usbl0pO2EoZnVuY3Rpb24oKXtwKG4sZS5zdHlsaXNQbHVnaW5zKXx8cihlLnN0eWxpc1BsdWdpbnMpfSxbZS5zdHlsaXNQbHVnaW5zXSk7dmFyIGQ9aShmdW5jdGlvbigpe3JldHVybntzaG91bGRGb3J3YXJkUHJvcDplLnNob3VsZEZvcndhcmRQcm9wLHN0eWxlU2hlZXQ6bCxzdHlsaXM6dX19LFtlLnNob3VsZEZvcndhcmRQcm9wLGwsdV0pO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoJGUuUHJvdmlkZXIse3ZhbHVlOmR9LG8uY3JlYXRlRWxlbWVudChMZS5Qcm92aWRlcix7dmFsdWU6dX0sZS5jaGlsZHJlbikpfXZhciBXZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgbj10aGlzO3RoaXMuaW5qZWN0PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9emUpO3ZhciBvPW4ubmFtZSt0Lmhhc2g7ZS5oYXNOYW1lRm9ySWQobi5pZCxvKXx8ZS5pbnNlcnRSdWxlcyhuLmlkLG8sdChuLnJ1bGVzLG8sXCJAa2V5ZnJhbWVzXCIpKX0sdGhpcy5uYW1lPWUsdGhpcy5pZD1cInNjLWtleWZyYW1lcy1cIi5jb25jYXQoZSksdGhpcy5ydWxlcz10LHVlKHRoaXMsZnVuY3Rpb24oKXt0aHJvdyBoZSgxMixTdHJpbmcobi5uYW1lKSl9KX1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9emUpLHRoaXMubmFtZStlLmhhc2h9LGV9KCkscWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PVwiQVwiJiZlPD1cIlpcIn07ZnVuY3Rpb24gSGUoZSl7Zm9yKHZhciB0PVwiXCIsbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgbz1lW25dO2lmKDE9PT1uJiZcIi1cIj09PW8mJlwiLVwiPT09ZVswXSlyZXR1cm4gZTtxZShvKT90Kz1cIi1cIitvLnRvTG93ZXJDYXNlKCk6dCs9b31yZXR1cm4gdC5zdGFydHNXaXRoKFwibXMtXCIpP1wiLVwiK3Q6dH12YXIgVWU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fCExPT09ZXx8XCJcIj09PWV9LEplPWZ1bmN0aW9uKHQpe3ZhciBuLG8scj1bXTtmb3IodmFyIHMgaW4gdCl7dmFyIGk9dFtzXTt0Lmhhc093blByb3BlcnR5KHMpJiYhVWUoaSkmJihBcnJheS5pc0FycmF5KGkpJiZpLmlzQ3NzfHxyZShpKT9yLnB1c2goXCJcIi5jb25jYXQoSGUocyksXCI6XCIpLGksXCI7XCIpOmNlKGkpP3IucHVzaC5hcHBseShyLGUoZShbXCJcIi5jb25jYXQocyxcIiB7XCIpXSxKZShpKSwhMSksW1wifVwiXSwhMSkpOnIucHVzaChcIlwiLmNvbmNhdChIZShzKSxcIjogXCIpLmNvbmNhdCgobj1zLG51bGw9PShvPWkpfHxcImJvb2xlYW5cIj09dHlwZW9mIG98fFwiXCI9PT1vP1wiXCI6XCJudW1iZXJcIiE9dHlwZW9mIG98fDA9PT1vfHxuIGluIGh8fG4uc3RhcnRzV2l0aChcIi0tXCIpP1N0cmluZyhvKS50cmltKCk6XCJcIi5jb25jYXQobyxcInB4XCIpKSxcIjtcIikpKX1yZXR1cm4gcn07ZnVuY3Rpb24gWGUoZSx0LG4sbyl7aWYoVWUoZSkpcmV0dXJuW107aWYoc2UoZSkpcmV0dXJuW1wiLlwiLmNvbmNhdChlLnN0eWxlZENvbXBvbmVudElkKV07aWYocmUoZSkpe2lmKCFyZShzPWUpfHxzLnByb3RvdHlwZSYmcy5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudHx8IXQpcmV0dXJuW2VdO3ZhciByPWUodCk7cmV0dXJuXCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOVnx8XCJvYmplY3RcIiE9dHlwZW9mIHJ8fEFycmF5LmlzQXJyYXkocil8fHIgaW5zdGFuY2VvZiBXZXx8Y2Uocil8fG51bGw9PT1yfHxjb25zb2xlLmVycm9yKFwiXCIuY29uY2F0KEIoZSksXCIgaXMgbm90IGEgc3R5bGVkIGNvbXBvbmVudCBhbmQgY2Fubm90IGJlIHJlZmVycmVkIHRvIHZpYSBjb21wb25lbnQgc2VsZWN0b3IuIFNlZSBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9hZHZhbmNlZCNyZWZlcnJpbmctdG8tb3RoZXItY29tcG9uZW50cyBmb3IgbW9yZSBkZXRhaWxzLlwiKSksWGUocix0LG4sbyl9dmFyIHM7cmV0dXJuIGUgaW5zdGFuY2VvZiBXZT9uPyhlLmluamVjdChuLG8pLFtlLmdldE5hbWUobyldKTpbZV06Y2UoZSk/SmUoZSk6QXJyYXkuaXNBcnJheShlKT9BcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KF8sZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIFhlKGUsdCxuLG8pfSkpOltlLnRvU3RyaW5nKCldfWZ1bmN0aW9uIFplKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCs9MSl7dmFyIG49ZVt0XTtpZihyZShuKSYmIXNlKG4pKXJldHVybiExfXJldHVybiEwfXZhciBLZT16KHYpLFFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy5ydWxlcz1lLHRoaXMuc3RhdGljUnVsZXNJZD1cIlwiLHRoaXMuaXNTdGF0aWM9XCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOViYmKHZvaWQgMD09PW58fG4uaXNTdGF0aWMpJiZaZShlKSx0aGlzLmNvbXBvbmVudElkPXQsdGhpcy5iYXNlSGFzaD1NKEtlLHQpLHRoaXMuYmFzZVN0eWxlPW4sa2UucmVnaXN0ZXJJZCh0KX1yZXR1cm4gZS5wcm90b3R5cGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPXRoaXMuYmFzZVN0eWxlP3RoaXMuYmFzZVN0eWxlLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKGUsdCxuKTpcIlwiO2lmKHRoaXMuaXNTdGF0aWMmJiFuLmhhc2gpaWYodGhpcy5zdGF0aWNSdWxlc0lkJiZ0Lmhhc05hbWVGb3JJZCh0aGlzLmNvbXBvbmVudElkLHRoaXMuc3RhdGljUnVsZXNJZCkpbz1pZShvLHRoaXMuc3RhdGljUnVsZXNJZCk7ZWxzZXt2YXIgcj1hZShYZSh0aGlzLnJ1bGVzLGUsdCxuKSkscz14KE0odGhpcy5iYXNlSGFzaCxyKT4+PjApO2lmKCF0Lmhhc05hbWVGb3JJZCh0aGlzLmNvbXBvbmVudElkLHMpKXt2YXIgaT1uKHIsXCIuXCIuY29uY2F0KHMpLHZvaWQgMCx0aGlzLmNvbXBvbmVudElkKTt0Lmluc2VydFJ1bGVzKHRoaXMuY29tcG9uZW50SWQscyxpKX1vPWllKG8scyksdGhpcy5zdGF0aWNSdWxlc0lkPXN9ZWxzZXtmb3IodmFyIGE9TSh0aGlzLmJhc2VIYXNoLG4uaGFzaCksYz1cIlwiLGw9MDtsPHRoaXMucnVsZXMubGVuZ3RoO2wrKyl7dmFyIHU9dGhpcy5ydWxlc1tsXTtpZihcInN0cmluZ1wiPT10eXBlb2YgdSljKz11LFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJihhPU0oYSx1KSk7ZWxzZSBpZih1KXt2YXIgcD1hZShYZSh1LGUsdCxuKSk7YT1NKGEscCtsKSxjKz1wfX1pZihjKXt2YXIgZD14KGE+Pj4wKTt0Lmhhc05hbWVGb3JJZCh0aGlzLmNvbXBvbmVudElkLGQpfHx0Lmluc2VydFJ1bGVzKHRoaXMuY29tcG9uZW50SWQsZCxuKGMsXCIuXCIuY29uY2F0KGQpLHZvaWQgMCx0aGlzLmNvbXBvbmVudElkKSksbz1pZShvLGQpfX1yZXR1cm4gb30sZX0oKSxldD1vLmNyZWF0ZUNvbnRleHQodm9pZCAwKSx0dD1ldC5Db25zdW1lcjtmdW5jdGlvbiBudCgpe3ZhciBlPWMoZXQpO2lmKCFlKXRocm93IGhlKDE4KTtyZXR1cm4gZX1mdW5jdGlvbiBvdChlKXt2YXIgbj1vLnVzZUNvbnRleHQoZXQpLHI9aShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLG4pe2lmKCFlKXRocm93IGhlKDE0KTtpZihyZShlKSl7dmFyIG89ZShuKTtpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYobnVsbD09PW98fEFycmF5LmlzQXJyYXkobyl8fFwib2JqZWN0XCIhPXR5cGVvZiBvKSl0aHJvdyBoZSg3KTtyZXR1cm4gb31pZihBcnJheS5pc0FycmF5KGUpfHxcIm9iamVjdFwiIT10eXBlb2YgZSl0aHJvdyBoZSg4KTtyZXR1cm4gbj90KHQoe30sbiksZSk6ZX0oZS50aGVtZSxuKX0sW2UudGhlbWUsbl0pO3JldHVybiBlLmNoaWxkcmVuP28uY3JlYXRlRWxlbWVudChldC5Qcm92aWRlcix7dmFsdWU6cn0sZS5jaGlsZHJlbik6bnVsbH12YXIgcnQ9e30sc3Q9bmV3IFNldDtmdW5jdGlvbiBpdChlLHIscyl7dmFyIGk9c2UoZSksYT1lLGM9IUwoZSkscD1yLmF0dHJzLGQ9dm9pZCAwPT09cD9fOnAsaD1yLmNvbXBvbmVudElkLGY9dm9pZCAwPT09aD9mdW5jdGlvbihlLHQpe3ZhciBuPVwic3RyaW5nXCIhPXR5cGVvZiBlP1wic2NcIjpSKGUpO3J0W25dPShydFtuXXx8MCkrMTt2YXIgbz1cIlwiLmNvbmNhdChuLFwiLVwiKS5jb25jYXQoJCh2K24rcnRbbl0pKTtyZXR1cm4gdD9cIlwiLmNvbmNhdCh0LFwiLVwiKS5jb25jYXQobyk6b30oci5kaXNwbGF5TmFtZSxyLnBhcmVudENvbXBvbmVudElkKTpoLG09ci5kaXNwbGF5TmFtZSx5PXZvaWQgMD09PW0/ZnVuY3Rpb24oZSl7cmV0dXJuIEwoZSk/XCJzdHlsZWQuXCIuY29uY2F0KGUpOlwiU3R5bGVkKFwiLmNvbmNhdChCKGUpLFwiKVwiKX0oZSk6bSxnPXIuZGlzcGxheU5hbWUmJnIuY29tcG9uZW50SWQ/XCJcIi5jb25jYXQoUihyLmRpc3BsYXlOYW1lKSxcIi1cIikuY29uY2F0KHIuY29tcG9uZW50SWQpOnIuY29tcG9uZW50SWR8fGYsUz1pJiZhLmF0dHJzP2EuYXR0cnMuY29uY2F0KGQpLmZpbHRlcihCb29sZWFuKTpkLHc9ci5zaG91bGRGb3J3YXJkUHJvcDtpZihpJiZhLnNob3VsZEZvcndhcmRQcm9wKXt2YXIgYj1hLnNob3VsZEZvcndhcmRQcm9wO2lmKHIuc2hvdWxkRm9yd2FyZFByb3Ape3ZhciBFPXIuc2hvdWxkRm9yd2FyZFByb3A7dz1mdW5jdGlvbihlLHQpe3JldHVybiBiKGUsdCkmJkUoZSx0KX19ZWxzZSB3PWJ9dmFyIE49bmV3IFFlKHMsZyxpP2EuY29tcG9uZW50U3R5bGU6dm9pZCAwKTtmdW5jdGlvbiBPKGUscil7cmV0dXJuIGZ1bmN0aW9uKGUscixzKXt2YXIgaT1lLmF0dHJzLGE9ZS5jb21wb25lbnRTdHlsZSxjPWUuZGVmYXVsdFByb3BzLHA9ZS5mb2xkZWRDb21wb25lbnRJZHMsZD1lLnN0eWxlZENvbXBvbmVudElkLGg9ZS50YXJnZXQsZj1vLnVzZUNvbnRleHQoZXQpLG09R2UoKSx5PWUuc2hvdWxkRm9yd2FyZFByb3B8fG0uc2hvdWxkRm9yd2FyZFByb3A7XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmbChkKTt2YXIgdj1JKHIsZixjKXx8QyxnPWZ1bmN0aW9uKGUsbixvKXtmb3IodmFyIHIscz10KHQoe30sbikse2NsYXNzTmFtZTp2b2lkIDAsdGhlbWU6b30pLGk9MDtpPGUubGVuZ3RoO2krPTEpe3ZhciBhPXJlKHI9ZVtpXSk/cihzKTpyO2Zvcih2YXIgYyBpbiBhKXNbY109XCJjbGFzc05hbWVcIj09PWM/aWUoc1tjXSxhW2NdKTpcInN0eWxlXCI9PT1jP3QodCh7fSxzW2NdKSxhW2NdKTphW2NdfXJldHVybiBuLmNsYXNzTmFtZSYmKHMuY2xhc3NOYW1lPWllKHMuY2xhc3NOYW1lLG4uY2xhc3NOYW1lKSksc30oaSxyLHYpLFM9Zy5hc3x8aCx3PXt9O2Zvcih2YXIgYiBpbiBnKXZvaWQgMD09PWdbYl18fFwiJFwiPT09YlswXXx8XCJhc1wiPT09Ynx8XCJ0aGVtZVwiPT09YiYmZy50aGVtZT09PXZ8fChcImZvcndhcmRlZEFzXCI9PT1iP3cuYXM9Zy5mb3J3YXJkZWRBczp5JiYheShiLFMpfHwod1tiXT1nW2JdLHl8fFwiZGV2ZWxvcG1lbnRcIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WfHxuKGIpfHxzdC5oYXMoYil8fCFBLmhhcyhTKXx8KHN0LmFkZChiKSxjb25zb2xlLndhcm4oJ3N0eWxlZC1jb21wb25lbnRzOiBpdCBsb29rcyBsaWtlIGFuIHVua25vd24gcHJvcCBcIicuY29uY2F0KGIsJ1wiIGlzIGJlaW5nIHNlbnQgdGhyb3VnaCB0byB0aGUgRE9NLCB3aGljaCB3aWxsIGxpa2VseSB0cmlnZ2VyIGEgUmVhY3QgY29uc29sZSBlcnJvci4gSWYgeW91IHdvdWxkIGxpa2UgYXV0b21hdGljIGZpbHRlcmluZyBvZiB1bmtub3duIHByb3BzLCB5b3UgY2FuIG9wdC1pbnRvIHRoYXQgYmVoYXZpb3IgdmlhIGA8U3R5bGVTaGVldE1hbmFnZXIgc2hvdWxkRm9yd2FyZFByb3A9ey4uLn0+YCAoY29ubmVjdCBhbiBBUEkgbGlrZSBgQGVtb3Rpb24vaXMtcHJvcC12YWxpZGApIG9yIGNvbnNpZGVyIHVzaW5nIHRyYW5zaWVudCBwcm9wcyAoYCRgIHByZWZpeCBmb3IgYXV0b21hdGljIGZpbHRlcmluZy4pJykpKSkpO3ZhciBFPWZ1bmN0aW9uKGUsdCl7dmFyIG49R2UoKSxvPWUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXModCxuLnN0eWxlU2hlZXQsbi5zdHlsaXMpO3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJmwobyksb30oYSxnKTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZlLndhcm5Ub29NYW55Q2xhc3NlcyYmZS53YXJuVG9vTWFueUNsYXNzZXMoRSk7dmFyIE49aWUocCxkKTtyZXR1cm4gRSYmKE4rPVwiIFwiK0UpLGcuY2xhc3NOYW1lJiYoTis9XCIgXCIrZy5jbGFzc05hbWUpLHdbTChTKSYmIUEuaGFzKFMpP1wiY2xhc3NcIjpcImNsYXNzTmFtZVwiXT1OLHcucmVmPXMsdShTLHcpfShELGUscil9Ty5kaXNwbGF5TmFtZT15O3ZhciBEPW8uZm9yd2FyZFJlZihPKTtyZXR1cm4gRC5hdHRycz1TLEQuY29tcG9uZW50U3R5bGU9TixELmRpc3BsYXlOYW1lPXksRC5zaG91bGRGb3J3YXJkUHJvcD13LEQuZm9sZGVkQ29tcG9uZW50SWRzPWk/aWUoYS5mb2xkZWRDb21wb25lbnRJZHMsYS5zdHlsZWRDb21wb25lbnRJZCk6XCJcIixELnN0eWxlZENvbXBvbmVudElkPWcsRC50YXJnZXQ9aT9hLnRhcmdldDplLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELFwiZGVmYXVsdFByb3BzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHN9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHM9aT9mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtmb3IodmFyIG89MCxyPXQ7bzxyLmxlbmd0aDtvKyspbGUoZSxyW29dLCEwKTtyZXR1cm4gZX0oe30sYS5kZWZhdWx0UHJvcHMsZSk6ZX19KSxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYoUCh5LGcpLEQud2FyblRvb01hbnlDbGFzc2VzPWZ1bmN0aW9uKGUsdCl7dmFyIG49e30sbz0hMTtyZXR1cm4gZnVuY3Rpb24ocil7aWYoIW8mJihuW3JdPSEwLE9iamVjdC5rZXlzKG4pLmxlbmd0aD49MjAwKSl7dmFyIHM9dD8nIHdpdGggdGhlIGlkIG9mIFwiJy5jb25jYXQodCwnXCInKTpcIlwiO2NvbnNvbGUud2FybihcIk92ZXIgXCIuY29uY2F0KDIwMCxcIiBjbGFzc2VzIHdlcmUgZ2VuZXJhdGVkIGZvciBjb21wb25lbnQgXCIpLmNvbmNhdChlKS5jb25jYXQocyxcIi5cXG5cIikrXCJDb25zaWRlciB1c2luZyB0aGUgYXR0cnMgbWV0aG9kLCB0b2dldGhlciB3aXRoIGEgc3R5bGUgb2JqZWN0IGZvciBmcmVxdWVudGx5IGNoYW5nZWQgc3R5bGVzLlxcbkV4YW1wbGU6XFxuICBjb25zdCBDb21wb25lbnQgPSBzdHlsZWQuZGl2LmF0dHJzKHByb3BzID0+ICh7XFxuICAgIHN0eWxlOiB7XFxuICAgICAgYmFja2dyb3VuZDogcHJvcHMuYmFja2dyb3VuZCxcXG4gICAgfSxcXG4gIH0pKWB3aWR0aDogMTAwJTtgXFxuXFxuICA8Q29tcG9uZW50IC8+XCIpLG89ITAsbj17fX19fSh5LGcpKSx1ZShELGZ1bmN0aW9uKCl7cmV0dXJuXCIuXCIuY29uY2F0KEQuc3R5bGVkQ29tcG9uZW50SWQpfSksYyYmb2UoRCxlLHthdHRyczohMCxjb21wb25lbnRTdHlsZTohMCxkaXNwbGF5TmFtZTohMCxmb2xkZWRDb21wb25lbnRJZHM6ITAsc2hvdWxkRm9yd2FyZFByb3A6ITAsc3R5bGVkQ29tcG9uZW50SWQ6ITAsdGFyZ2V0OiEwfSksRH1mdW5jdGlvbiBhdChlLHQpe2Zvcih2YXIgbj1bZVswXV0sbz0wLHI9dC5sZW5ndGg7bzxyO28rPTEpbi5wdXNoKHRbb10sZVtvKzFdKTtyZXR1cm4gbn12YXIgY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oZSx7aXNDc3M6ITB9KX07ZnVuY3Rpb24gbHQodCl7Zm9yKHZhciBuPVtdLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0xXT1hcmd1bWVudHNbb107aWYocmUodCl8fGNlKHQpKXJldHVybiBjdChYZShhdChfLGUoW3RdLG4sITApKSkpO3ZhciByPXQ7cmV0dXJuIDA9PT1uLmxlbmd0aCYmMT09PXIubGVuZ3RoJiZcInN0cmluZ1wiPT10eXBlb2YgclswXT9YZShyKTpjdChYZShhdChyLG4pKSl9ZnVuY3Rpb24gdXQobixvLHIpe2lmKHZvaWQgMD09PXImJihyPUMpLCFvKXRocm93IGhlKDEsbyk7dmFyIHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBzPVtdLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXNbaS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIG4obyxyLGx0LmFwcGx5KHZvaWQgMCxlKFt0XSxzLCExKSkpfTtyZXR1cm4gcy5hdHRycz1mdW5jdGlvbihlKXtyZXR1cm4gdXQobixvLHQodCh7fSxyKSx7YXR0cnM6QXJyYXkucHJvdG90eXBlLmNvbmNhdChyLmF0dHJzLGUpLmZpbHRlcihCb29sZWFuKX0pKX0scy53aXRoQ29uZmlnPWZ1bmN0aW9uKGUpe3JldHVybiB1dChuLG8sdCh0KHt9LHIpLGUpKX0sc312YXIgcHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHV0KGl0LGUpfSxkdD1wdDtBLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09cHQoZSl9KTt2YXIgaHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5ydWxlcz1lLHRoaXMuY29tcG9uZW50SWQ9dCx0aGlzLmlzU3RhdGljPVplKGUpLGtlLnJlZ2lzdGVySWQodGhpcy5jb21wb25lbnRJZCsxKX1yZXR1cm4gZS5wcm90b3R5cGUuY3JlYXRlU3R5bGVzPWZ1bmN0aW9uKGUsdCxuLG8pe3ZhciByPW8oYWUoWGUodGhpcy5ydWxlcyx0LG4sbykpLFwiXCIpLHM9dGhpcy5jb21wb25lbnRJZCtlO24uaW5zZXJ0UnVsZXMocyxzLHIpfSxlLnByb3RvdHlwZS5yZW1vdmVTdHlsZXM9ZnVuY3Rpb24oZSx0KXt0LmNsZWFyUnVsZXModGhpcy5jb21wb25lbnRJZCtlKX0sZS5wcm90b3R5cGUucmVuZGVyU3R5bGVzPWZ1bmN0aW9uKGUsdCxuLG8pe2U+MiYma2UucmVnaXN0ZXJJZCh0aGlzLmNvbXBvbmVudElkK2UpLHRoaXMucmVtb3ZlU3R5bGVzKGUsbiksdGhpcy5jcmVhdGVTdHlsZXMoZSx0LG4sbyl9LGV9KCk7ZnVuY3Rpb24gZnQobil7Zm9yKHZhciByPVtdLHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXJbcy0xXT1hcmd1bWVudHNbc107dmFyIGk9bHQuYXBwbHkodm9pZCAwLGUoW25dLHIsITEpKSxhPVwic2MtZ2xvYmFsLVwiLmNvbmNhdCgkKEpTT04uc3RyaW5naWZ5KGkpKSksYz1uZXcgaHQoaSxhKTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZQKGEpO3ZhciBsPWZ1bmN0aW9uKGUpe3ZhciB0PUdlKCksbj1vLnVzZUNvbnRleHQoZXQpLHI9by51c2VSZWYodC5zdHlsZVNoZWV0LmFsbG9jYXRlR1NJbnN0YW5jZShhKSkuY3VycmVudDtyZXR1cm5cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZvLkNoaWxkcmVuLmNvdW50KGUuY2hpbGRyZW4pJiZjb25zb2xlLndhcm4oXCJUaGUgZ2xvYmFsIHN0eWxlIGNvbXBvbmVudCBcIi5jb25jYXQoYSxcIiB3YXMgZ2l2ZW4gY2hpbGQgSlNYLiBjcmVhdGVHbG9iYWxTdHlsZSBkb2VzIG5vdCByZW5kZXIgY2hpbGRyZW4uXCIpKSxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZpLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJi0xIT09ZS5pbmRleE9mKFwiQGltcG9ydFwiKX0pJiZjb25zb2xlLndhcm4oXCJQbGVhc2UgZG8gbm90IHVzZSBAaW1wb3J0IENTUyBzeW50YXggaW4gY3JlYXRlR2xvYmFsU3R5bGUgYXQgdGhpcyB0aW1lLCBhcyB0aGUgQ1NTT00gQVBJcyB3ZSB1c2UgaW4gcHJvZHVjdGlvbiBkbyBub3QgaGFuZGxlIGl0IHdlbGwuIEluc3RlYWQsIHdlIHJlY29tbWVuZCB1c2luZyBhIGxpYnJhcnkgc3VjaCBhcyByZWFjdC1oZWxtZXQgdG8gaW5qZWN0IGEgdHlwaWNhbCA8bGluaz4gbWV0YSB0YWcgdG8gdGhlIHN0eWxlc2hlZXQsIG9yIHNpbXBseSBlbWJlZGRpbmcgaXQgbWFudWFsbHkgaW4geW91ciBpbmRleC5odG1sIDxoZWFkPiBzZWN0aW9uIGZvciBhIHNpbXBsZXIgYXBwLlwiKSx0LnN0eWxlU2hlZXQuc2VydmVyJiZ1KHIsZSx0LnN0eWxlU2hlZXQsbix0LnN0eWxpcyksby51c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24oKXtpZighdC5zdHlsZVNoZWV0LnNlcnZlcilyZXR1cm4gdShyLGUsdC5zdHlsZVNoZWV0LG4sdC5zdHlsaXMpLGZ1bmN0aW9uKCl7cmV0dXJuIGMucmVtb3ZlU3R5bGVzKHIsdC5zdHlsZVNoZWV0KX19LFtyLGUsdC5zdHlsZVNoZWV0LG4sdC5zdHlsaXNdKSxudWxsfTtmdW5jdGlvbiB1KGUsbixvLHIscyl7aWYoYy5pc1N0YXRpYyljLnJlbmRlclN0eWxlcyhlLGIsbyxzKTtlbHNle3ZhciBpPXQodCh7fSxuKSx7dGhlbWU6SShuLHIsbC5kZWZhdWx0UHJvcHMpfSk7Yy5yZW5kZXJTdHlsZXMoZSxpLG8scyl9fXJldHVybiBvLm1lbW8obCl9ZnVuY3Rpb24gbXQodCl7Zm9yKHZhciBuPVtdLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0xXT1hcmd1bWVudHNbb107XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG5hdmlnYXRvciYmXCJSZWFjdE5hdGl2ZVwiPT09bmF2aWdhdG9yLnByb2R1Y3QmJmNvbnNvbGUud2FybihcImBrZXlmcmFtZXNgIGNhbm5vdCBiZSB1c2VkIG9uIFJlYWN0TmF0aXZlLCBvbmx5IG9uIHRoZSB3ZWIuIFRvIGRvIGFuaW1hdGlvbiBpbiBSZWFjdE5hdGl2ZSBwbGVhc2UgdXNlIEFuaW1hdGVkLlwiKTt2YXIgcj1hZShsdC5hcHBseSh2b2lkIDAsZShbdF0sbiwhMSkpKSxzPSQocik7cmV0dXJuIG5ldyBXZShzLHIpfWZ1bmN0aW9uIHl0KGUpe3ZhciBuPW8uZm9yd2FyZFJlZihmdW5jdGlvbihuLHIpe3ZhciBzPUkobixvLnVzZUNvbnRleHQoZXQpLGUuZGVmYXVsdFByb3BzKTtyZXR1cm5cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZ2b2lkIDA9PT1zJiZjb25zb2xlLndhcm4oJ1t3aXRoVGhlbWVdIFlvdSBhcmUgbm90IHVzaW5nIGEgVGhlbWVQcm92aWRlciBub3IgcGFzc2luZyBhIHRoZW1lIHByb3Agb3IgYSB0aGVtZSBpbiBkZWZhdWx0UHJvcHMgaW4gY29tcG9uZW50IGNsYXNzIFwiJy5jb25jYXQoQihlKSwnXCInKSksby5jcmVhdGVFbGVtZW50KGUsdCh7fSxuLHt0aGVtZTpzLHJlZjpyfSkpfSk7cmV0dXJuIG4uZGlzcGxheU5hbWU9XCJXaXRoVGhlbWUoXCIuY29uY2F0KEIoZSksXCIpXCIpLG9lKG4sZSl9dmFyIHZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXRoaXM7dGhpcy5fZW1pdFNoZWV0Q1NTPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5pbnN0YW5jZS50b1N0cmluZygpO2lmKCF0KXJldHVyblwiXCI7dmFyIG49Q2UoKSxvPWFlKFtuJiYnbm9uY2U9XCInLmNvbmNhdChuLCdcIicpLFwiXCIuY29uY2F0KGYsJz1cInRydWVcIicpLFwiXCIuY29uY2F0KHksJz1cIicpLmNvbmNhdCh2LCdcIicpXS5maWx0ZXIoQm9vbGVhbiksXCIgXCIpO3JldHVyblwiPHN0eWxlIFwiLmNvbmNhdChvLFwiPlwiKS5jb25jYXQodCxcIjwvc3R5bGU+XCIpfSx0aGlzLmdldFN0eWxlVGFncz1mdW5jdGlvbigpe2lmKGUuc2VhbGVkKXRocm93IGhlKDIpO3JldHVybiBlLl9lbWl0U2hlZXRDU1MoKX0sdGhpcy5nZXRTdHlsZUVsZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgbjtpZihlLnNlYWxlZCl0aHJvdyBoZSgyKTt2YXIgcj1lLmluc3RhbmNlLnRvU3RyaW5nKCk7aWYoIXIpcmV0dXJuW107dmFyIHM9KChuPXt9KVtmXT1cIlwiLG5beV09dixuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXtfX2h0bWw6cn0sbiksaT1DZSgpO3JldHVybiBpJiYocy5ub25jZT1pKSxbby5jcmVhdGVFbGVtZW50KFwic3R5bGVcIix0KHt9LHMse2tleTpcInNjLTAtMFwifSkpXX0sdGhpcy5zZWFsPWZ1bmN0aW9uKCl7ZS5zZWFsZWQ9ITB9LHRoaXMuaW5zdGFuY2U9bmV3IGtlKHtpc1NlcnZlcjohMH0pLHRoaXMuc2VhbGVkPSExfXJldHVybiBlLnByb3RvdHlwZS5jb2xsZWN0U3R5bGVzPWZ1bmN0aW9uKGUpe2lmKHRoaXMuc2VhbGVkKXRocm93IGhlKDIpO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoWWUse3NoZWV0OnRoaXMuaW5zdGFuY2V9LGUpfSxlLnByb3RvdHlwZS5pbnRlcmxlYXZlV2l0aE5vZGVTdHJlYW09ZnVuY3Rpb24oZSl7dGhyb3cgaGUoMyl9LGV9KCksZ3Q9e1N0eWxlU2hlZXQ6a2UsbWFpblNoZWV0Ok1lfTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yJiZcIlJlYWN0TmF0aXZlXCI9PT1uYXZpZ2F0b3IucHJvZHVjdCYmY29uc29sZS53YXJuKFwiSXQgbG9va3MgbGlrZSB5b3UndmUgaW1wb3J0ZWQgJ3N0eWxlZC1jb21wb25lbnRzJyBvbiBSZWFjdCBOYXRpdmUuXFxuUGVyaGFwcyB5b3UncmUgbG9va2luZyB0byBpbXBvcnQgJ3N0eWxlZC1jb21wb25lbnRzL25hdGl2ZSc/XFxuUmVhZCBtb3JlIGFib3V0IHRoaXMgYXQgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYmFzaWNzI3JlYWN0LW5hdGl2ZVwiKTt2YXIgU3Q9XCJfX3NjLVwiLmNvbmNhdChmLFwiX19cIik7XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJ0ZXN0XCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvd1tTdF18fCh3aW5kb3dbU3RdPTApLDE9PT13aW5kb3dbU3RdJiZjb25zb2xlLndhcm4oXCJJdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzZXZlcmFsIGluc3RhbmNlcyBvZiAnc3R5bGVkLWNvbXBvbmVudHMnIGluaXRpYWxpemVkIGluIHRoaXMgYXBwbGljYXRpb24uIFRoaXMgbWF5IGNhdXNlIGR5bmFtaWMgc3R5bGVzIHRvIG5vdCByZW5kZXIgcHJvcGVybHksIGVycm9ycyBkdXJpbmcgdGhlIHJlaHlkcmF0aW9uIHByb2Nlc3MsIGEgbWlzc2luZyB0aGVtZSBwcm9wLCBhbmQgbWFrZXMgeW91ciBhcHBsaWNhdGlvbiBiaWdnZXIgd2l0aG91dCBnb29kIHJlYXNvbi5cXG5cXG5TZWUgaHR0cHM6Ly9zLWMuc2gvMkJBWHplZCBmb3IgbW9yZSBpbmZvLlwiKSx3aW5kb3dbU3RdKz0xKTtleHBvcnR7dnQgYXMgU2VydmVyU3R5bGVTaGVldCxCZSBhcyBTdHlsZVNoZWV0Q29uc3VtZXIsJGUgYXMgU3R5bGVTaGVldENvbnRleHQsWWUgYXMgU3R5bGVTaGVldE1hbmFnZXIsdHQgYXMgVGhlbWVDb25zdW1lcixldCBhcyBUaGVtZUNvbnRleHQsb3QgYXMgVGhlbWVQcm92aWRlcixndCBhcyBfX1BSSVZBVEVfXyxmdCBhcyBjcmVhdGVHbG9iYWxTdHlsZSxsdCBhcyBjc3MsZHQgYXMgZGVmYXVsdCxzZSBhcyBpc1N0eWxlZENvbXBvbmVudCxtdCBhcyBrZXlmcmFtZXMsZHQgYXMgc3R5bGVkLG50IGFzIHVzZVRoZW1lLHYgYXMgdmVyc2lvbix5dCBhcyB3aXRoVGhlbWV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVkLWNvbXBvbmVudHMuYnJvd3Nlci5lc20uanMubWFwXG4iLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJpbWl0aXZlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZShcIi4vdG9QcmltaXRpdmUuanNcIik7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9Qcm9wZXJ0eUtleSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xuICAgIHZhbHVlOiB0LFxuICAgIGVudW1lcmFibGU6ICEwLFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgd3JpdGFibGU6ICEwXG4gIH0pIDogZVtyXSA9IHQsIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9kZWZpbmVQcm9wZXJ0eSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuL2RlZmluZVByb3BlcnR5LmpzXCIpO1xuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7XG4gIHZhciB0ID0gT2JqZWN0LmtleXMoZSk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikge1xuICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTtcbiAgICB9KSksIHQucHVzaC5hcHBseSh0LCBvKTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQyKGUpIHtcbiAgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHtcbiAgICB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307XG4gICAgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pO1xuICAgIH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0U3ByZWFkMiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlMaWtlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRoSG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5TGltaXQgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlUmVzdCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiKTtcbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KHIsIGUpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGUpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGUpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2xpY2VkVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHIsIGUpIHtcbiAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHt9O1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBuIGluIHIpIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsIG4pKSB7XG4gICAgaWYgKGUuaW5jbHVkZXMobikpIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlID0gcmVxdWlyZShcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiKTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlLCB0KSB7XG4gIGlmIChudWxsID09IGUpIHJldHVybiB7fTtcbiAgdmFyIG8sXG4gICAgcixcbiAgICBpID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShlLCB0KTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgZm9yIChyID0gMDsgciA8IHMubGVuZ3RoOyByKyspIG8gPSBzW3JdLCB0LmluY2x1ZGVzKG8pIHx8IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX29iamVjdFNwcmVhZCA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xudmFyIF9zbGljZWRUb0FycmF5ID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5Jyk7XG52YXIgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcycpO1xudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9leGNsdWRlZCA9IFtcImRlZmF1bHRJbnB1dFZhbHVlXCIsIFwiZGVmYXVsdE1lbnVJc09wZW5cIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJpbnB1dFZhbHVlXCIsIFwibWVudUlzT3BlblwiLCBcIm9uQ2hhbmdlXCIsIFwib25JbnB1dENoYW5nZVwiLCBcIm9uTWVudUNsb3NlXCIsIFwib25NZW51T3BlblwiLCBcInZhbHVlXCJdO1xuZnVuY3Rpb24gdXNlU3RhdGVNYW5hZ2VyKF9yZWYpIHtcbiAgdmFyIF9yZWYkZGVmYXVsdElucHV0VmFsdSA9IF9yZWYuZGVmYXVsdElucHV0VmFsdWUsXG4gICAgZGVmYXVsdElucHV0VmFsdWUgPSBfcmVmJGRlZmF1bHRJbnB1dFZhbHUgPT09IHZvaWQgMCA/ICcnIDogX3JlZiRkZWZhdWx0SW5wdXRWYWx1LFxuICAgIF9yZWYkZGVmYXVsdE1lbnVJc09wZSA9IF9yZWYuZGVmYXVsdE1lbnVJc09wZW4sXG4gICAgZGVmYXVsdE1lbnVJc09wZW4gPSBfcmVmJGRlZmF1bHRNZW51SXNPcGUgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRkZWZhdWx0TWVudUlzT3BlLFxuICAgIF9yZWYkZGVmYXVsdFZhbHVlID0gX3JlZi5kZWZhdWx0VmFsdWUsXG4gICAgZGVmYXVsdFZhbHVlID0gX3JlZiRkZWZhdWx0VmFsdWUgPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmJGRlZmF1bHRWYWx1ZSxcbiAgICBwcm9wc0lucHV0VmFsdWUgPSBfcmVmLmlucHV0VmFsdWUsXG4gICAgcHJvcHNNZW51SXNPcGVuID0gX3JlZi5tZW51SXNPcGVuLFxuICAgIHByb3BzT25DaGFuZ2UgPSBfcmVmLm9uQ2hhbmdlLFxuICAgIHByb3BzT25JbnB1dENoYW5nZSA9IF9yZWYub25JbnB1dENoYW5nZSxcbiAgICBwcm9wc09uTWVudUNsb3NlID0gX3JlZi5vbk1lbnVDbG9zZSxcbiAgICBwcm9wc09uTWVudU9wZW4gPSBfcmVmLm9uTWVudU9wZW4sXG4gICAgcHJvcHNWYWx1ZSA9IF9yZWYudmFsdWUsXG4gICAgcmVzdFNlbGVjdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIHZhciBfdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZShwcm9wc0lucHV0VmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzSW5wdXRWYWx1ZSA6IGRlZmF1bHRJbnB1dFZhbHVlKSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICBzdGF0ZUlucHV0VmFsdWUgPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldFN0YXRlSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZTJbMV07XG4gIHZhciBfdXNlU3RhdGUzID0gUmVhY3QudXNlU3RhdGUocHJvcHNNZW51SXNPcGVuICE9PSB1bmRlZmluZWQgPyBwcm9wc01lbnVJc09wZW4gOiBkZWZhdWx0TWVudUlzT3BlbiksXG4gICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgIHN0YXRlTWVudUlzT3BlbiA9IF91c2VTdGF0ZTRbMF0sXG4gICAgc2V0U3RhdGVNZW51SXNPcGVuID0gX3VzZVN0YXRlNFsxXTtcbiAgdmFyIF91c2VTdGF0ZTUgPSBSZWFjdC51c2VTdGF0ZShwcm9wc1ZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm9wc1ZhbHVlIDogZGVmYXVsdFZhbHVlKSxcbiAgICBfdXNlU3RhdGU2ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlNSwgMiksXG4gICAgc3RhdGVWYWx1ZSA9IF91c2VTdGF0ZTZbMF0sXG4gICAgc2V0U3RhdGVWYWx1ZSA9IF91c2VTdGF0ZTZbMV07XG4gIHZhciBvbkNoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbkNoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcHNPbkNoYW5nZSh2YWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgfVxuICAgIHNldFN0YXRlVmFsdWUodmFsdWUpO1xuICB9LCBbcHJvcHNPbkNoYW5nZV0pO1xuICB2YXIgb25JbnB1dENoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgIHZhciBuZXdWYWx1ZTtcbiAgICBpZiAodHlwZW9mIHByb3BzT25JbnB1dENoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbmV3VmFsdWUgPSBwcm9wc09uSW5wdXRDaGFuZ2UodmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cbiAgICBzZXRTdGF0ZUlucHV0VmFsdWUobmV3VmFsdWUgIT09IHVuZGVmaW5lZCA/IG5ld1ZhbHVlIDogdmFsdWUpO1xuICB9LCBbcHJvcHNPbklucHV0Q2hhbmdlXSk7XG4gIHZhciBvbk1lbnVPcGVuID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbk1lbnVPcGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wc09uTWVudU9wZW4oKTtcbiAgICB9XG4gICAgc2V0U3RhdGVNZW51SXNPcGVuKHRydWUpO1xuICB9LCBbcHJvcHNPbk1lbnVPcGVuXSk7XG4gIHZhciBvbk1lbnVDbG9zZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHByb3BzT25NZW51Q2xvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BzT25NZW51Q2xvc2UoKTtcbiAgICB9XG4gICAgc2V0U3RhdGVNZW51SXNPcGVuKGZhbHNlKTtcbiAgfSwgW3Byb3BzT25NZW51Q2xvc2VdKTtcbiAgdmFyIGlucHV0VmFsdWUgPSBwcm9wc0lucHV0VmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzSW5wdXRWYWx1ZSA6IHN0YXRlSW5wdXRWYWx1ZTtcbiAgdmFyIG1lbnVJc09wZW4gPSBwcm9wc01lbnVJc09wZW4gIT09IHVuZGVmaW5lZCA/IHByb3BzTWVudUlzT3BlbiA6IHN0YXRlTWVudUlzT3BlbjtcbiAgdmFyIHZhbHVlID0gcHJvcHNWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNWYWx1ZSA6IHN0YXRlVmFsdWU7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RTZWxlY3RQcm9wcyksIHt9LCB7XG4gICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZSxcbiAgICBtZW51SXNPcGVuOiBtZW51SXNPcGVuLFxuICAgIG9uQ2hhbmdlOiBvbkNoYW5nZSxcbiAgICBvbklucHV0Q2hhbmdlOiBvbklucHV0Q2hhbmdlLFxuICAgIG9uTWVudUNsb3NlOiBvbk1lbnVDbG9zZSxcbiAgICBvbk1lbnVPcGVuOiBvbk1lbnVPcGVuLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9KTtcbn1cblxuZXhwb3J0cy51c2VTdGF0ZU1hbmFnZXIgPSB1c2VTdGF0ZU1hbmFnZXI7XG4iLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAobikge1xuICAgIGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7XG4gICAgICB2YXIgdCA9IGFyZ3VtZW50c1tlXTtcbiAgICAgIGZvciAodmFyIHIgaW4gdCkgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpICYmIChuW3JdID0gdFtyXSk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIF9leHRlbmRzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9leHRlbmRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZih0KSB7XG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX2dldFByb3RvdHlwZU9mKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICB0cnkge1xuICAgIHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgfSBjYXRjaCAodCkge31cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICAgIHJldHVybiAhIXQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cykoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL2dldFByb3RvdHlwZU9mLmpzXCIpO1xudmFyIGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IHJlcXVpcmUoXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiKTtcbnZhciBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuID0gcmVxdWlyZShcIi4vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qc1wiKTtcbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcih0KSB7XG4gIHZhciByID0gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGUsXG4gICAgICBvID0gZ2V0UHJvdG90eXBlT2YodCk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHZhciBzID0gZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7XG4gICAgICBlID0gUmVmbGVjdC5jb25zdHJ1Y3QobywgYXJndW1lbnRzLCBzKTtcbiAgICB9IGVsc2UgZSA9IG8uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBlKTtcbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZVN1cGVyLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KHIpIHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IHJbU3ltYm9sLml0ZXJhdG9yXSB8fCBudWxsICE9IHJbXCJAQGl0ZXJhdG9yXCJdKSByZXR1cm4gQXJyYXkuZnJvbShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVNwcmVhZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhvdXRIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlU3ByZWFkID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIik7XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkocikge1xuICByZXR1cm4gYXJyYXlXaXRob3V0SG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5KHIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpIHx8IG5vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90b0NvbnN1bWFibGVBcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwoZSwgdCkge1xuICByZXR1cm4gdCB8fCAodCA9IGUuc2xpY2UoMCkpLCBPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIHtcbiAgICByYXc6IHtcbiAgICAgIHZhbHVlOiBPYmplY3QuZnJlZXplKHQpXG4gICAgfVxuICB9KSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAobmV4dFJlZlJlY3QueCAhPT0gcHJldlJlZlJlY3QueCB8fCBuZXh0UmVmUmVjdC55ICE9PSBwcmV2UmVmUmVjdC55IHx8IG5leHRSZWZSZWN0LndpZHRoICE9PSBwcmV2UmVmUmVjdC53aWR0aCB8fCBuZXh0UmVmUmVjdC5oZWlnaHQgIT09IHByZXZSZWZSZWN0LmhlaWdodCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyMjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICBjbGVhbnVwSW8gPT0gbnVsbCB8fCBjbGVhbnVwSW8oKTtcbiAgICAoX3Jlc2l6ZU9ic2VydmVyMiA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlcjIuZGlzY29ubmVjdCgpO1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmNvbnN0IGRldGVjdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3ckMTtcblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gYXV0b1BsYWNlbWVudCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBzaGlmdCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZsaXAkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gc2l6ZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGhpZGUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBhcnJvdyQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBpbmxpbmUkMTtcblxuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGxpbWl0U2hpZnQkMTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIF9vYmplY3RTcHJlYWQgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDInKTtcbnZhciBfZXh0ZW5kcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcycpO1xudmFyIHJlYWN0ID0gcmVxdWlyZSgnQGVtb3Rpb24vcmVhY3QnKTtcbnZhciBfc2xpY2VkVG9BcnJheSA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheScpO1xudmFyIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnKTtcbnZhciBfdHlwZW9mID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YnKTtcbnZhciBfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90YWdnZWRUZW1wbGF0ZUxpdGVyYWwnKTtcbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5Jyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIHJlYWN0RG9tID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG52YXIgZG9tID0gcmVxdWlyZSgnQGZsb2F0aW5nLXVpL2RvbScpO1xudmFyIHVzZUxheW91dEVmZmVjdCA9IHJlcXVpcmUoJ3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChlKSB7IHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7ICdkZWZhdWx0JzogZSB9OyB9XG5cbnZhciB1c2VMYXlvdXRFZmZlY3RfX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX2ludGVyb3BEZWZhdWx0KHVzZUxheW91dEVmZmVjdCk7XG5cbnZhciBfZXhjbHVkZWQkNCA9IFtcImNsYXNzTmFtZVwiLCBcImNsZWFyVmFsdWVcIiwgXCJjeFwiLCBcImdldFN0eWxlc1wiLCBcImdldENsYXNzTmFtZXNcIiwgXCJnZXRWYWx1ZVwiLCBcImhhc1ZhbHVlXCIsIFwiaXNNdWx0aVwiLCBcImlzUnRsXCIsIFwib3B0aW9uc1wiLCBcInNlbGVjdE9wdGlvblwiLCBcInNlbGVjdFByb3BzXCIsIFwic2V0VmFsdWVcIiwgXCJ0aGVtZVwiXTtcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTk8gT1Bcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbm9vcCA9IGZ1bmN0aW9uIG5vb3AoKSB7fTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDbGFzcyBOYW1lIFByZWZpeGVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvbXBvbmVudCBzdGF0ZSBmb3Igc3R5bGluZyB3aXRoIGNsYXNzIG5hbWVzLlxuXG4gRXhwZWN0cyBhbiBhcnJheSBvZiBzdHJpbmdzIE9SIGEgc3RyaW5nL29iamVjdCBwYWlyOlxuIC0gY2xhc3NOYW1lKFsnY29tcCcsICdjb21wLWFyZycsICdjb21wLWFyZy0yJ10pXG4gICBAcmV0dXJucyAncmVhY3Qtc2VsZWN0X19jb21wIHJlYWN0LXNlbGVjdF9fY29tcC1hcmcgcmVhY3Qtc2VsZWN0X19jb21wLWFyZy0yJ1xuIC0gY2xhc3NOYW1lKCdjb21wJywgeyBzb21lOiB0cnVlLCBzdGF0ZTogZmFsc2UgfSlcbiAgIEByZXR1cm5zICdyZWFjdC1zZWxlY3RfX2NvbXAgcmVhY3Qtc2VsZWN0X19jb21wLS1zb21lJ1xuKi9cbmZ1bmN0aW9uIGFwcGx5UHJlZml4VG9OYW1lKHByZWZpeCwgbmFtZSkge1xuICBpZiAoIW5hbWUpIHtcbiAgICByZXR1cm4gcHJlZml4O1xuICB9IGVsc2UgaWYgKG5hbWVbMF0gPT09ICctJykge1xuICAgIHJldHVybiBwcmVmaXggKyBuYW1lO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwcmVmaXggKyAnX18nICsgbmFtZTtcbiAgfVxufVxuZnVuY3Rpb24gY2xhc3NOYW1lcyhwcmVmaXgsIHN0YXRlKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBjbGFzc05hbWVMaXN0ID0gbmV3IEFycmF5KF9sZW4gPiAyID8gX2xlbiAtIDIgOiAwKSwgX2tleSA9IDI7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBjbGFzc05hbWVMaXN0W19rZXkgLSAyXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuICB2YXIgYXJyID0gW10uY29uY2F0KGNsYXNzTmFtZUxpc3QpO1xuICBpZiAoc3RhdGUgJiYgcHJlZml4KSB7XG4gICAgZm9yICh2YXIga2V5IGluIHN0YXRlKSB7XG4gICAgICBpZiAoc3RhdGUuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBzdGF0ZVtrZXldKSB7XG4gICAgICAgIGFyci5wdXNoKFwiXCIuY29uY2F0KGFwcGx5UHJlZml4VG9OYW1lKHByZWZpeCwga2V5KSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBpO1xuICB9KS5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gU3RyaW5nKGkpLnRyaW0oKTtcbiAgfSkuam9pbignICcpO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDbGVhbiBWYWx1ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBjbGVhblZhbHVlID0gZnVuY3Rpb24gY2xlYW5WYWx1ZSh2YWx1ZSkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5maWx0ZXIoQm9vbGVhbik7XG4gIGlmIChfdHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHJldHVybiBbdmFsdWVdO1xuICByZXR1cm4gW107XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENsZWFuIENvbW1vbiBQcm9wc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBjbGVhbkNvbW1vblByb3BzID0gZnVuY3Rpb24gY2xlYW5Db21tb25Qcm9wcyhwcm9wcykge1xuICAvL2NsYXNzTmFtZVxuICBwcm9wcy5jbGFzc05hbWU7XG4gICAgcHJvcHMuY2xlYXJWYWx1ZTtcbiAgICBwcm9wcy5jeDtcbiAgICBwcm9wcy5nZXRTdHlsZXM7XG4gICAgcHJvcHMuZ2V0Q2xhc3NOYW1lcztcbiAgICBwcm9wcy5nZXRWYWx1ZTtcbiAgICBwcm9wcy5oYXNWYWx1ZTtcbiAgICBwcm9wcy5pc011bHRpO1xuICAgIHByb3BzLmlzUnRsO1xuICAgIHByb3BzLm9wdGlvbnM7XG4gICAgcHJvcHMuc2VsZWN0T3B0aW9uO1xuICAgIHByb3BzLnNlbGVjdFByb3BzO1xuICAgIHByb3BzLnNldFZhbHVlO1xuICAgIHByb3BzLnRoZW1lO1xuICAgIHZhciBpbm5lclByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQkNCk7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHt9LCBpbm5lclByb3BzKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2V0IFN0eWxlIFByb3BzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGdldFN0eWxlUHJvcHMgPSBmdW5jdGlvbiBnZXRTdHlsZVByb3BzKHByb3BzLCBuYW1lLCBjbGFzc05hbWVzU3RhdGUpIHtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgZ2V0U3R5bGVzID0gcHJvcHMuZ2V0U3R5bGVzLFxuICAgIGdldENsYXNzTmFtZXMgPSBwcm9wcy5nZXRDbGFzc05hbWVzLFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgcmV0dXJuIHtcbiAgICBjc3M6IGdldFN0eWxlcyhuYW1lLCBwcm9wcyksXG4gICAgY2xhc3NOYW1lOiBjeChjbGFzc05hbWVzU3RhdGUgIT09IG51bGwgJiYgY2xhc3NOYW1lc1N0YXRlICE9PSB2b2lkIDAgPyBjbGFzc05hbWVzU3RhdGUgOiB7fSwgZ2V0Q2xhc3NOYW1lcyhuYW1lLCBwcm9wcyksIGNsYXNzTmFtZSlcbiAgfTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGFuZGxlIElucHV0IENoYW5nZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGhhbmRsZUlucHV0Q2hhbmdlKGlucHV0VmFsdWUsIGFjdGlvbk1ldGEsIG9uSW5wdXRDaGFuZ2UpIHtcbiAgaWYgKG9uSW5wdXRDaGFuZ2UpIHtcbiAgICB2YXIgX25ld1ZhbHVlID0gb25JbnB1dENoYW5nZShpbnB1dFZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICBpZiAodHlwZW9mIF9uZXdWYWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiBfbmV3VmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlucHV0VmFsdWU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2Nyb2xsIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBpc0RvY3VtZW50RWxlbWVudChlbCkge1xuICByZXR1cm4gW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgZG9jdW1lbnQuYm9keSwgd2luZG93XS5pbmRleE9mKGVsKSA+IC0xO1xufVxuXG4vLyBOb3JtYWxpemVkIFNjcm9sbCBUb3Bcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBub3JtYWxpemVkSGVpZ2h0KGVsKSB7XG4gIGlmIChpc0RvY3VtZW50RWxlbWVudChlbCkpIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0O1xuICB9XG4gIHJldHVybiBlbC5jbGllbnRIZWlnaHQ7XG59XG5cbi8vIE5vcm1hbGl6ZWQgc2Nyb2xsVG8gJiBzY3JvbGxUb3Bcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxUb3AoZWwpIHtcbiAgaWYgKGlzRG9jdW1lbnRFbGVtZW50KGVsKSkge1xuICAgIHJldHVybiB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gIH1cbiAgcmV0dXJuIGVsLnNjcm9sbFRvcDtcbn1cbmZ1bmN0aW9uIHNjcm9sbFRvKGVsLCB0b3ApIHtcbiAgLy8gd2l0aCBhIHNjcm9sbCBkaXN0YW5jZSwgd2UgcGVyZm9ybSBzY3JvbGwgb24gdGhlIGVsZW1lbnRcbiAgaWYgKGlzRG9jdW1lbnRFbGVtZW50KGVsKSkge1xuICAgIHdpbmRvdy5zY3JvbGxUbygwLCB0b3ApO1xuICAgIHJldHVybjtcbiAgfVxuICBlbC5zY3JvbGxUb3AgPSB0b3A7XG59XG5cbi8vIEdldCBTY3JvbGwgUGFyZW50XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgdmFyIGV4Y2x1ZGVTdGF0aWNQYXJlbnQgPSBzdHlsZS5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJztcbiAgdmFyIG92ZXJmbG93UnggPSAvKGF1dG98c2Nyb2xsKS87XG4gIGlmIChzdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgZm9yICh2YXIgcGFyZW50ID0gZWxlbWVudDsgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7KSB7XG4gICAgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBhcmVudCk7XG4gICAgaWYgKGV4Y2x1ZGVTdGF0aWNQYXJlbnQgJiYgc3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UngudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG59XG5cbi8vIEFuaW1hdGVkIFNjcm9sbCBUb1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICBAcGFyYW0gdDogdGltZSAoZWxhcHNlZClcbiAgQHBhcmFtIGI6IGluaXRpYWwgdmFsdWVcbiAgQHBhcmFtIGM6IGFtb3VudCBvZiBjaGFuZ2VcbiAgQHBhcmFtIGQ6IGR1cmF0aW9uXG4qL1xuZnVuY3Rpb24gZWFzZU91dEN1YmljKHQsIGIsIGMsIGQpIHtcbiAgcmV0dXJuIGMgKiAoKHQgPSB0IC8gZCAtIDEpICogdCAqIHQgKyAxKSArIGI7XG59XG5mdW5jdGlvbiBhbmltYXRlZFNjcm9sbFRvKGVsZW1lbnQsIHRvKSB7XG4gIHZhciBkdXJhdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMjAwO1xuICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IG5vb3A7XG4gIHZhciBzdGFydCA9IGdldFNjcm9sbFRvcChlbGVtZW50KTtcbiAgdmFyIGNoYW5nZSA9IHRvIC0gc3RhcnQ7XG4gIHZhciBpbmNyZW1lbnQgPSAxMDtcbiAgdmFyIGN1cnJlbnRUaW1lID0gMDtcbiAgZnVuY3Rpb24gYW5pbWF0ZVNjcm9sbCgpIHtcbiAgICBjdXJyZW50VGltZSArPSBpbmNyZW1lbnQ7XG4gICAgdmFyIHZhbCA9IGVhc2VPdXRDdWJpYyhjdXJyZW50VGltZSwgc3RhcnQsIGNoYW5nZSwgZHVyYXRpb24pO1xuICAgIHNjcm9sbFRvKGVsZW1lbnQsIHZhbCk7XG4gICAgaWYgKGN1cnJlbnRUaW1lIDwgZHVyYXRpb24pIHtcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVNjcm9sbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBhbmltYXRlU2Nyb2xsKCk7XG59XG5cbi8vIFNjcm9sbCBJbnRvIFZpZXdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBzY3JvbGxJbnRvVmlldyhtZW51RWwsIGZvY3VzZWRFbCkge1xuICB2YXIgbWVudVJlY3QgPSBtZW51RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBmb2N1c2VkUmVjdCA9IGZvY3VzZWRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIG92ZXJTY3JvbGwgPSBmb2N1c2VkRWwub2Zmc2V0SGVpZ2h0IC8gMztcbiAgaWYgKGZvY3VzZWRSZWN0LmJvdHRvbSArIG92ZXJTY3JvbGwgPiBtZW51UmVjdC5ib3R0b20pIHtcbiAgICBzY3JvbGxUbyhtZW51RWwsIE1hdGgubWluKGZvY3VzZWRFbC5vZmZzZXRUb3AgKyBmb2N1c2VkRWwuY2xpZW50SGVpZ2h0IC0gbWVudUVsLm9mZnNldEhlaWdodCArIG92ZXJTY3JvbGwsIG1lbnVFbC5zY3JvbGxIZWlnaHQpKTtcbiAgfSBlbHNlIGlmIChmb2N1c2VkUmVjdC50b3AgLSBvdmVyU2Nyb2xsIDwgbWVudVJlY3QudG9wKSB7XG4gICAgc2Nyb2xsVG8obWVudUVsLCBNYXRoLm1heChmb2N1c2VkRWwub2Zmc2V0VG9wIC0gb3ZlclNjcm9sbCwgMCkpO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2V0IGJvdW5kaW5nIGNsaWVudCBvYmplY3Rcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBjYW5ub3QgZ2V0IGtleXMgdXNpbmcgYXJyYXkgbm90YXRpb24gd2l0aCBET01SZWN0XG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudE9iaihlbGVtZW50KSB7XG4gIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIHtcbiAgICBib3R0b206IHJlY3QuYm90dG9tLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgIHJpZ2h0OiByZWN0LnJpZ2h0LFxuICAgIHRvcDogcmVjdC50b3AsXG4gICAgd2lkdGg6IHJlY3Qud2lkdGhcbiAgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUb3VjaCBDYXBhYmlsaXR5IERldGVjdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gaXNUb3VjaENhcGFibGUoKSB7XG4gIHRyeSB7XG4gICAgZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ1RvdWNoRXZlbnQnKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1vYmlsZSBEZXZpY2UgRGV0ZWN0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBpc01vYmlsZURldmljZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGFzc2l2ZSBFdmVudCBEZXRlY3RvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yYWZncmFwaC9kZXRlY3QtaXQvYmxvYi9tYWluL3NyYy9pbmRleC50cyNMMTktTDM2XG52YXIgcGFzc2l2ZU9wdGlvbkFjY2Vzc2VkID0gZmFsc2U7XG52YXIgb3B0aW9ucyA9IHtcbiAgZ2V0IHBhc3NpdmUoKSB7XG4gICAgcmV0dXJuIHBhc3NpdmVPcHRpb25BY2Nlc3NlZCA9IHRydWU7XG4gIH1cbn07XG4vLyBjaGVjayBmb3IgU1NSXG52YXIgdyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDoge307XG5pZiAody5hZGRFdmVudExpc3RlbmVyICYmIHcucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICB3LmFkZEV2ZW50TGlzdGVuZXIoJ3AnLCBub29wLCBvcHRpb25zKTtcbiAgdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwJywgbm9vcCwgZmFsc2UpO1xufVxudmFyIHN1cHBvcnRzUGFzc2l2ZUV2ZW50cyA9IHBhc3NpdmVPcHRpb25BY2Nlc3NlZDtcbmZ1bmN0aW9uIG5vdE51bGxpc2goaXRlbSkge1xuICByZXR1cm4gaXRlbSAhPSBudWxsO1xufVxuZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJnKTtcbn1cbmZ1bmN0aW9uIHZhbHVlVGVybmFyeShpc011bHRpLCBtdWx0aVZhbHVlLCBzaW5nbGVWYWx1ZSkge1xuICByZXR1cm4gaXNNdWx0aSA/IG11bHRpVmFsdWUgOiBzaW5nbGVWYWx1ZTtcbn1cbmZ1bmN0aW9uIHNpbmdsZVZhbHVlQXNWYWx1ZShzaW5nbGVWYWx1ZSkge1xuICByZXR1cm4gc2luZ2xlVmFsdWU7XG59XG5mdW5jdGlvbiBtdWx0aVZhbHVlQXNWYWx1ZShtdWx0aVZhbHVlKSB7XG4gIHJldHVybiBtdWx0aVZhbHVlO1xufVxudmFyIHJlbW92ZVByb3BzID0gZnVuY3Rpb24gcmVtb3ZlUHJvcHMocHJvcHNPYmopIHtcbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBwcm9wZXJ0aWVzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICBwcm9wZXJ0aWVzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICB9XG4gIHZhciBwcm9wc01hcCA9IE9iamVjdC5lbnRyaWVzKHByb3BzT2JqKS5maWx0ZXIoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICB2YXIgX3JlZjIgPSBfc2xpY2VkVG9BcnJheShfcmVmLCAxKSxcbiAgICAgIGtleSA9IF9yZWYyWzBdO1xuICAgIHJldHVybiAhcHJvcGVydGllcy5pbmNsdWRlcyhrZXkpO1xuICB9KTtcbiAgcmV0dXJuIHByb3BzTWFwLnJlZHVjZShmdW5jdGlvbiAobmV3UHJvcHMsIF9yZWYzKSB7XG4gICAgdmFyIF9yZWY0ID0gX3NsaWNlZFRvQXJyYXkoX3JlZjMsIDIpLFxuICAgICAga2V5ID0gX3JlZjRbMF0sXG4gICAgICB2YWwgPSBfcmVmNFsxXTtcbiAgICBuZXdQcm9wc1trZXldID0gdmFsO1xuICAgIHJldHVybiBuZXdQcm9wcztcbiAgfSwge30pO1xufTtcblxudmFyIF9leGNsdWRlZCQzID0gW1wiY2hpbGRyZW5cIiwgXCJpbm5lclByb3BzXCJdLFxuICBfZXhjbHVkZWQyJDEgPSBbXCJjaGlsZHJlblwiLCBcImlubmVyUHJvcHNcIl07XG5mdW5jdGlvbiBnZXRNZW51UGxhY2VtZW50KF9yZWYpIHtcbiAgdmFyIHByZWZlcnJlZE1heEhlaWdodCA9IF9yZWYubWF4SGVpZ2h0LFxuICAgIG1lbnVFbCA9IF9yZWYubWVudUVsLFxuICAgIG1pbkhlaWdodCA9IF9yZWYubWluSGVpZ2h0LFxuICAgIHByZWZlcnJlZFBsYWNlbWVudCA9IF9yZWYucGxhY2VtZW50LFxuICAgIHNob3VsZFNjcm9sbCA9IF9yZWYuc2hvdWxkU2Nyb2xsLFxuICAgIGlzRml4ZWRQb3NpdGlvbiA9IF9yZWYuaXNGaXhlZFBvc2l0aW9uLFxuICAgIGNvbnRyb2xIZWlnaHQgPSBfcmVmLmNvbnRyb2xIZWlnaHQ7XG4gIHZhciBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQobWVudUVsKTtcbiAgdmFyIGRlZmF1bHRTdGF0ZSA9IHtcbiAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gIH07XG5cbiAgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmcsIHJldHVybiBkZWZhdWx0IHN0YXRlXG4gIGlmICghbWVudUVsIHx8ICFtZW51RWwub2Zmc2V0UGFyZW50KSByZXR1cm4gZGVmYXVsdFN0YXRlO1xuXG4gIC8vIHdlIGNhbid0IHRydXN0IGBzY3JvbGxQYXJlbnQuc2Nyb2xsSGVpZ2h0YCAtLT4gaXQgbWF5IGluY3JlYXNlIHdoZW5cbiAgLy8gdGhlIG1lbnUgaXMgcmVuZGVyZWRcbiAgdmFyIF9zY3JvbGxQYXJlbnQkZ2V0Qm91biA9IHNjcm9sbFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICBzY3JvbGxIZWlnaHQgPSBfc2Nyb2xsUGFyZW50JGdldEJvdW4uaGVpZ2h0O1xuICB2YXIgX21lbnVFbCRnZXRCb3VuZGluZ0NsID0gbWVudUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIG1lbnVCb3R0b20gPSBfbWVudUVsJGdldEJvdW5kaW5nQ2wuYm90dG9tLFxuICAgIG1lbnVIZWlnaHQgPSBfbWVudUVsJGdldEJvdW5kaW5nQ2wuaGVpZ2h0LFxuICAgIG1lbnVUb3AgPSBfbWVudUVsJGdldEJvdW5kaW5nQ2wudG9wO1xuICB2YXIgX21lbnVFbCRvZmZzZXRQYXJlbnQkID0gbWVudUVsLm9mZnNldFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICBjb250YWluZXJUb3AgPSBfbWVudUVsJG9mZnNldFBhcmVudCQudG9wO1xuICB2YXIgdmlld0hlaWdodCA9IGlzRml4ZWRQb3NpdGlvbiA/IHdpbmRvdy5pbm5lckhlaWdodCA6IG5vcm1hbGl6ZWRIZWlnaHQoc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHNjcm9sbFRvcCA9IGdldFNjcm9sbFRvcChzY3JvbGxQYXJlbnQpO1xuICB2YXIgbWFyZ2luQm90dG9tID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShtZW51RWwpLm1hcmdpbkJvdHRvbSwgMTApO1xuICB2YXIgbWFyZ2luVG9wID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShtZW51RWwpLm1hcmdpblRvcCwgMTApO1xuICB2YXIgdmlld1NwYWNlQWJvdmUgPSBjb250YWluZXJUb3AgLSBtYXJnaW5Ub3A7XG4gIHZhciB2aWV3U3BhY2VCZWxvdyA9IHZpZXdIZWlnaHQgLSBtZW51VG9wO1xuICB2YXIgc2Nyb2xsU3BhY2VBYm92ZSA9IHZpZXdTcGFjZUFib3ZlICsgc2Nyb2xsVG9wO1xuICB2YXIgc2Nyb2xsU3BhY2VCZWxvdyA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIG1lbnVUb3A7XG4gIHZhciBzY3JvbGxEb3duID0gbWVudUJvdHRvbSAtIHZpZXdIZWlnaHQgKyBzY3JvbGxUb3AgKyBtYXJnaW5Cb3R0b207XG4gIHZhciBzY3JvbGxVcCA9IHNjcm9sbFRvcCArIG1lbnVUb3AgLSBtYXJnaW5Ub3A7XG4gIHZhciBzY3JvbGxEdXJhdGlvbiA9IDE2MDtcbiAgc3dpdGNoIChwcmVmZXJyZWRQbGFjZW1lbnQpIHtcbiAgICBjYXNlICdhdXRvJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgLy8gMTogdGhlIG1lbnUgd2lsbCBmaXQsIGRvIG5vdGhpbmdcbiAgICAgIGlmICh2aWV3U3BhY2VCZWxvdyA+PSBtZW51SGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAyOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgc2Nyb2xsZWRcbiAgICAgIGlmIChzY3JvbGxTcGFjZUJlbG93ID49IG1lbnVIZWlnaHQgJiYgIWlzRml4ZWRQb3NpdGlvbikge1xuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgYW5pbWF0ZWRTY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbERvd24sIHNjcm9sbER1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMzogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIGNvbnN0cmFpbmVkXG4gICAgICBpZiAoIWlzRml4ZWRQb3NpdGlvbiAmJiBzY3JvbGxTcGFjZUJlbG93ID49IG1pbkhlaWdodCB8fCBpc0ZpeGVkUG9zaXRpb24gJiYgdmlld1NwYWNlQmVsb3cgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsRG93biwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2Ugd2FudCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlIG1lbnUgYXMgcG9zc2libGUgdG8gdGhlIHVzZXIsXG4gICAgICAgIC8vIHNvIGdpdmUgdGhlbSB3aGF0ZXZlciBpcyBhdmFpbGFibGUgYmVsb3cgcmF0aGVyIHRoYW4gdGhlIG1pbkhlaWdodC5cbiAgICAgICAgdmFyIGNvbnN0cmFpbmVkSGVpZ2h0ID0gaXNGaXhlZFBvc2l0aW9uID8gdmlld1NwYWNlQmVsb3cgLSBtYXJnaW5Cb3R0b20gOiBzY3JvbGxTcGFjZUJlbG93IC0gbWFyZ2luQm90dG9tO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBjb25zdHJhaW5lZEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBGb3JrZWQgYmV2aW91ciB3aGVuIHRoZXJlIGlzbid0IGVub3VnaCBzcGFjZSBiZWxvd1xuXG4gICAgICAvLyBBVVRPOiBmbGlwIHRoZSBtZW51LCByZW5kZXIgYWJvdmVcbiAgICAgIGlmIChwcmVmZXJyZWRQbGFjZW1lbnQgPT09ICdhdXRvJyB8fCBpc0ZpeGVkUG9zaXRpb24pIHtcbiAgICAgICAgLy8gbWF5IG5lZWQgdG8gYmUgY29uc3RyYWluZWQgYWZ0ZXIgZmxpcHBpbmdcbiAgICAgICAgdmFyIF9jb25zdHJhaW5lZEhlaWdodCA9IHByZWZlcnJlZE1heEhlaWdodDtcbiAgICAgICAgdmFyIHNwYWNlQWJvdmUgPSBpc0ZpeGVkUG9zaXRpb24gPyB2aWV3U3BhY2VBYm92ZSA6IHNjcm9sbFNwYWNlQWJvdmU7XG4gICAgICAgIGlmIChzcGFjZUFib3ZlID49IG1pbkhlaWdodCkge1xuICAgICAgICAgIF9jb25zdHJhaW5lZEhlaWdodCA9IE1hdGgubWluKHNwYWNlQWJvdmUgLSBtYXJnaW5Cb3R0b20gLSBjb250cm9sSGVpZ2h0LCBwcmVmZXJyZWRNYXhIZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IF9jb25zdHJhaW5lZEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBCT1RUT006IGFsbG93IGJyb3dzZXIgdG8gaW5jcmVhc2Ugc2Nyb2xsYWJsZSBhcmVhIGFuZCBpbW1lZGlhdGVseSBzZXQgc2Nyb2xsXG4gICAgICBpZiAocHJlZmVycmVkUGxhY2VtZW50ID09PSAnYm90dG9tJykge1xuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgc2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxEb3duKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICAvLyAxOiB0aGUgbWVudSB3aWxsIGZpdCwgZG8gbm90aGluZ1xuICAgICAgaWYgKHZpZXdTcGFjZUFib3ZlID49IG1lbnVIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDI6IHRoZSBtZW51IHdpbGwgZml0LCBpZiBzY3JvbGxlZFxuICAgICAgaWYgKHNjcm9sbFNwYWNlQWJvdmUgPj0gbWVudUhlaWdodCAmJiAhaXNGaXhlZFBvc2l0aW9uKSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsVXAsIHNjcm9sbER1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMzogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIGNvbnN0cmFpbmVkXG4gICAgICBpZiAoIWlzRml4ZWRQb3NpdGlvbiAmJiBzY3JvbGxTcGFjZUFib3ZlID49IG1pbkhlaWdodCB8fCBpc0ZpeGVkUG9zaXRpb24gJiYgdmlld1NwYWNlQWJvdmUgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgIHZhciBfY29uc3RyYWluZWRIZWlnaHQyID0gcHJlZmVycmVkTWF4SGVpZ2h0O1xuXG4gICAgICAgIC8vIHdlIHdhbnQgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZSBtZW51IGFzIHBvc3NpYmxlIHRvIHRoZSB1c2VyLFxuICAgICAgICAvLyBzbyBnaXZlIHRoZW0gd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIGJlbG93IHJhdGhlciB0aGFuIHRoZSBtaW5IZWlnaHQuXG4gICAgICAgIGlmICghaXNGaXhlZFBvc2l0aW9uICYmIHNjcm9sbFNwYWNlQWJvdmUgPj0gbWluSGVpZ2h0IHx8IGlzRml4ZWRQb3NpdGlvbiAmJiB2aWV3U3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgICBfY29uc3RyYWluZWRIZWlnaHQyID0gaXNGaXhlZFBvc2l0aW9uID8gdmlld1NwYWNlQWJvdmUgLSBtYXJnaW5Ub3AgOiBzY3JvbGxTcGFjZUFib3ZlIC0gbWFyZ2luVG9wO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsVXAsIHNjcm9sbER1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBfY29uc3RyYWluZWRIZWlnaHQyXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIG5vdCBlbm91Z2ggc3BhY2UsIHRoZSBicm93c2VyIFdJTEwgTk9UIGluY3JlYXNlIHNjcm9sbGFibGUgYXJlYSB3aGVuXG4gICAgICAvLyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZWxlbWVudCByZW5kZXJlZCBhYm92ZSB0aGUgdmlld3BvcnQgKG9ubHkgYmVsb3cpLlxuICAgICAgLy8gRmxpcCB0aGUgbWVudSwgcmVuZGVyIGJlbG93XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwbGFjZW1lbnQgcHJvdmlkZWQgXFxcIlwiLmNvbmNhdChwcmVmZXJyZWRQbGFjZW1lbnQsIFwiXFxcIi5cIikpO1xuICB9XG4gIHJldHVybiBkZWZhdWx0U3RhdGU7XG59XG5cbi8vIE1lbnUgQ29tcG9uZW50XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gYWxpZ25Ub0NvbnRyb2wocGxhY2VtZW50KSB7XG4gIHZhciBwbGFjZW1lbnRUb0NTU1Byb3AgPSB7XG4gICAgYm90dG9tOiAndG9wJyxcbiAgICB0b3A6ICdib3R0b20nXG4gIH07XG4gIHJldHVybiBwbGFjZW1lbnQgPyBwbGFjZW1lbnRUb0NTU1Byb3BbcGxhY2VtZW50XSA6ICdib3R0b20nO1xufVxudmFyIGNvZXJjZVBsYWNlbWVudCA9IGZ1bmN0aW9uIGNvZXJjZVBsYWNlbWVudChwKSB7XG4gIHJldHVybiBwID09PSAnYXV0bycgPyAnYm90dG9tJyA6IHA7XG59O1xudmFyIG1lbnVDU1MgPSBmdW5jdGlvbiBtZW51Q1NTKF9yZWYyLCB1bnN0eWxlZCkge1xuICB2YXIgX29iamVjdFNwcmVhZDI7XG4gIHZhciBwbGFjZW1lbnQgPSBfcmVmMi5wbGFjZW1lbnQsXG4gICAgX3JlZjIkdGhlbWUgPSBfcmVmMi50aGVtZSxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmMiR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgc3BhY2luZyA9IF9yZWYyJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZjIkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCgoX29iamVjdFNwcmVhZDIgPSB7XG4gICAgbGFiZWw6ICdtZW51J1xuICB9LCBfZGVmaW5lUHJvcGVydHkoX29iamVjdFNwcmVhZDIsIGFsaWduVG9Db250cm9sKHBsYWNlbWVudCksICcxMDAlJyksIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgXCJwb3NpdGlvblwiLCAnYWJzb2x1dGUnKSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBcIndpZHRoXCIsICcxMDAlJyksIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgXCJ6SW5kZXhcIiwgMSksIF9vYmplY3RTcHJlYWQyKSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9ycy5uZXV0cmFsMCxcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyxcbiAgICBib3hTaGFkb3c6ICcwIDAgMCAxcHggaHNsYSgwLCAwJSwgMCUsIDAuMSksIDAgNHB4IDExcHggaHNsYSgwLCAwJSwgMCUsIDAuMSknLFxuICAgIG1hcmdpbkJvdHRvbTogc3BhY2luZy5tZW51R3V0dGVyLFxuICAgIG1hcmdpblRvcDogc3BhY2luZy5tZW51R3V0dGVyXG4gIH0pO1xufTtcbnZhciBQb3J0YWxQbGFjZW1lbnRDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbi8vIE5PVEU6IGludGVybmFsIG9ubHlcbnZhciBNZW51UGxhY2VyID0gZnVuY3Rpb24gTWVudVBsYWNlcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBtaW5NZW51SGVpZ2h0ID0gcHJvcHMubWluTWVudUhlaWdodCxcbiAgICBtYXhNZW51SGVpZ2h0ID0gcHJvcHMubWF4TWVudUhlaWdodCxcbiAgICBtZW51UGxhY2VtZW50ID0gcHJvcHMubWVudVBsYWNlbWVudCxcbiAgICBtZW51UG9zaXRpb24gPSBwcm9wcy5tZW51UG9zaXRpb24sXG4gICAgbWVudVNob3VsZFNjcm9sbEludG9WaWV3ID0gcHJvcHMubWVudVNob3VsZFNjcm9sbEludG9WaWV3LFxuICAgIHRoZW1lID0gcHJvcHMudGhlbWU7XG4gIHZhciBfcmVmMyA9IFJlYWN0LnVzZUNvbnRleHQoUG9ydGFsUGxhY2VtZW50Q29udGV4dCkgfHwge30sXG4gICAgc2V0UG9ydGFsUGxhY2VtZW50ID0gX3JlZjMuc2V0UG9ydGFsUGxhY2VtZW50O1xuICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICB2YXIgX3VzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUobWF4TWVudUhlaWdodCksXG4gICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgbWF4SGVpZ2h0ID0gX3VzZVN0YXRlMlswXSxcbiAgICBzZXRNYXhIZWlnaHQgPSBfdXNlU3RhdGUyWzFdO1xuICB2YXIgX3VzZVN0YXRlMyA9IFJlYWN0LnVzZVN0YXRlKG51bGwpLFxuICAgIF91c2VTdGF0ZTQgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUzLCAyKSxcbiAgICBwbGFjZW1lbnQgPSBfdXNlU3RhdGU0WzBdLFxuICAgIHNldFBsYWNlbWVudCA9IF91c2VTdGF0ZTRbMV07XG4gIHZhciBjb250cm9sSGVpZ2h0ID0gdGhlbWUuc3BhY2luZy5jb250cm9sSGVpZ2h0O1xuICB1c2VMYXlvdXRFZmZlY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWVudUVsID0gcmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFtZW51RWwpIHJldHVybjtcblxuICAgIC8vIERPIE5PVCBzY3JvbGwgaWYgcG9zaXRpb24gaXMgZml4ZWRcbiAgICB2YXIgaXNGaXhlZFBvc2l0aW9uID0gbWVudVBvc2l0aW9uID09PSAnZml4ZWQnO1xuICAgIHZhciBzaG91bGRTY3JvbGwgPSBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgJiYgIWlzRml4ZWRQb3NpdGlvbjtcbiAgICB2YXIgc3RhdGUgPSBnZXRNZW51UGxhY2VtZW50KHtcbiAgICAgIG1heEhlaWdodDogbWF4TWVudUhlaWdodCxcbiAgICAgIG1lbnVFbDogbWVudUVsLFxuICAgICAgbWluSGVpZ2h0OiBtaW5NZW51SGVpZ2h0LFxuICAgICAgcGxhY2VtZW50OiBtZW51UGxhY2VtZW50LFxuICAgICAgc2hvdWxkU2Nyb2xsOiBzaG91bGRTY3JvbGwsXG4gICAgICBpc0ZpeGVkUG9zaXRpb246IGlzRml4ZWRQb3NpdGlvbixcbiAgICAgIGNvbnRyb2xIZWlnaHQ6IGNvbnRyb2xIZWlnaHRcbiAgICB9KTtcbiAgICBzZXRNYXhIZWlnaHQoc3RhdGUubWF4SGVpZ2h0KTtcbiAgICBzZXRQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgICBzZXRQb3J0YWxQbGFjZW1lbnQgPT09IG51bGwgfHwgc2V0UG9ydGFsUGxhY2VtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZXRQb3J0YWxQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgfSwgW21heE1lbnVIZWlnaHQsIG1lbnVQbGFjZW1lbnQsIG1lbnVQb3NpdGlvbiwgbWVudVNob3VsZFNjcm9sbEludG9WaWV3LCBtaW5NZW51SGVpZ2h0LCBzZXRQb3J0YWxQbGFjZW1lbnQsIGNvbnRyb2xIZWlnaHRdKTtcbiAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICByZWY6IHJlZixcbiAgICBwbGFjZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCB8fCBjb2VyY2VQbGFjZW1lbnQobWVudVBsYWNlbWVudCksXG4gICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodFxuICAgIH0pXG4gIH0pO1xufTtcbnZhciBNZW51ID0gZnVuY3Rpb24gTWVudShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbWVudScsIHtcbiAgICBtZW51OiB0cnVlXG4gIH0pLCB7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBNZW51JDEgPSBNZW51O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbnUgTGlzdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBtZW51TGlzdENTUyA9IGZ1bmN0aW9uIG1lbnVMaXN0Q1NTKF9yZWY0LCB1bnN0eWxlZCkge1xuICB2YXIgbWF4SGVpZ2h0ID0gX3JlZjQubWF4SGVpZ2h0LFxuICAgIGJhc2VVbml0ID0gX3JlZjQudGhlbWUuc3BhY2luZy5iYXNlVW5pdDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIG1heEhlaWdodDogbWF4SGVpZ2h0LFxuICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIC8vIHJlcXVpcmVkIGZvciBvZmZzZXRbSGVpZ2h0LCBUb3BdID4ga2V5Ym9hcmQgc2Nyb2xsXG4gICAgV2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6ICd0b3VjaCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBwYWRkaW5nQm90dG9tOiBiYXNlVW5pdCxcbiAgICBwYWRkaW5nVG9wOiBiYXNlVW5pdFxuICB9KTtcbn07XG52YXIgTWVudUxpc3QgPSBmdW5jdGlvbiBNZW51TGlzdChwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbWVudUxpc3QnLCB7XG4gICAgJ21lbnUtbGlzdCc6IHRydWUsXG4gICAgJ21lbnUtbGlzdC0taXMtbXVsdGknOiBpc011bHRpXG4gIH0pLCB7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IE5vdGljZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbm90aWNlQ1NTID0gZnVuY3Rpb24gbm90aWNlQ1NTKF9yZWY1LCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjUkdGhlbWUgPSBfcmVmNS50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWY1JHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjUkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgIHBhZGRpbmc6IFwiXCIuY29uY2F0KGJhc2VVbml0ICogMiwgXCJweCBcIikuY29uY2F0KGJhc2VVbml0ICogMywgXCJweFwiKVxuICB9KTtcbn07XG52YXIgbm9PcHRpb25zTWVzc2FnZUNTUyA9IG5vdGljZUNTUztcbnZhciBsb2FkaW5nTWVzc2FnZUNTUyA9IG5vdGljZUNTUztcbnZhciBOb09wdGlvbnNNZXNzYWdlID0gZnVuY3Rpb24gTm9PcHRpb25zTWVzc2FnZShfcmVmNikge1xuICB2YXIgX3JlZjYkY2hpbGRyZW4gPSBfcmVmNi5jaGlsZHJlbixcbiAgICBjaGlsZHJlbiA9IF9yZWY2JGNoaWxkcmVuID09PSB2b2lkIDAgPyAnTm8gb3B0aW9ucycgOiBfcmVmNiRjaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjYuaW5uZXJQcm9wcyxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjYsIF9leGNsdWRlZCQzKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHNcbiAgfSksICdub09wdGlvbnNNZXNzYWdlJywge1xuICAgICdtZW51LW5vdGljZSc6IHRydWUsXG4gICAgJ21lbnUtbm90aWNlLS1uby1vcHRpb25zJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgTG9hZGluZ01lc3NhZ2UgPSBmdW5jdGlvbiBMb2FkaW5nTWVzc2FnZShfcmVmNykge1xuICB2YXIgX3JlZjckY2hpbGRyZW4gPSBfcmVmNy5jaGlsZHJlbixcbiAgICBjaGlsZHJlbiA9IF9yZWY3JGNoaWxkcmVuID09PSB2b2lkIDAgPyAnTG9hZGluZy4uLicgOiBfcmVmNyRjaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjcuaW5uZXJQcm9wcyxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjcsIF9leGNsdWRlZDIkMSk7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0UHJvcHMpLCB7fSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICBpbm5lclByb3BzOiBpbm5lclByb3BzXG4gIH0pLCAnbG9hZGluZ01lc3NhZ2UnLCB7XG4gICAgJ21lbnUtbm90aWNlJzogdHJ1ZSxcbiAgICAnbWVudS1ub3RpY2UtLWxvYWRpbmcnOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IFBvcnRhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBtZW51UG9ydGFsQ1NTID0gZnVuY3Rpb24gbWVudVBvcnRhbENTUyhfcmVmOCkge1xuICB2YXIgcmVjdCA9IF9yZWY4LnJlY3QsXG4gICAgb2Zmc2V0ID0gX3JlZjgub2Zmc2V0LFxuICAgIHBvc2l0aW9uID0gX3JlZjgucG9zaXRpb247XG4gIHJldHVybiB7XG4gICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICB0b3A6IG9mZnNldCxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICB6SW5kZXg6IDFcbiAgfTtcbn07XG52YXIgTWVudVBvcnRhbCA9IGZ1bmN0aW9uIE1lbnVQb3J0YWwocHJvcHMpIHtcbiAgdmFyIGFwcGVuZFRvID0gcHJvcHMuYXBwZW5kVG8sXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb250cm9sRWxlbWVudCA9IHByb3BzLmNvbnRyb2xFbGVtZW50LFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIG1lbnVQbGFjZW1lbnQgPSBwcm9wcy5tZW51UGxhY2VtZW50LFxuICAgIG1lbnVQb3NpdGlvbiA9IHByb3BzLm1lbnVQb3NpdGlvbjtcbiAgdmFyIG1lbnVQb3J0YWxSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHZhciBjbGVhbnVwUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICB2YXIgX3VzZVN0YXRlNSA9IFJlYWN0LnVzZVN0YXRlKGNvZXJjZVBsYWNlbWVudChtZW51UGxhY2VtZW50KSksXG4gICAgX3VzZVN0YXRlNiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTUsIDIpLFxuICAgIHBsYWNlbWVudCA9IF91c2VTdGF0ZTZbMF0sXG4gICAgc2V0UG9ydGFsUGxhY2VtZW50ID0gX3VzZVN0YXRlNlsxXTtcbiAgdmFyIHBvcnRhbFBsYWNlbWVudENvbnRleHQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2V0UG9ydGFsUGxhY2VtZW50OiBzZXRQb3J0YWxQbGFjZW1lbnRcbiAgICB9O1xuICB9LCBbXSk7XG4gIHZhciBfdXNlU3RhdGU3ID0gUmVhY3QudXNlU3RhdGUobnVsbCksXG4gICAgX3VzZVN0YXRlOCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTcsIDIpLFxuICAgIGNvbXB1dGVkUG9zaXRpb24gPSBfdXNlU3RhdGU4WzBdLFxuICAgIHNldENvbXB1dGVkUG9zaXRpb24gPSBfdXNlU3RhdGU4WzFdO1xuICB2YXIgdXBkYXRlQ29tcHV0ZWRQb3NpdGlvbiA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNvbnRyb2xFbGVtZW50KSByZXR1cm47XG4gICAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudE9iaihjb250cm9sRWxlbWVudCk7XG4gICAgdmFyIHNjcm9sbERpc3RhbmNlID0gbWVudVBvc2l0aW9uID09PSAnZml4ZWQnID8gMCA6IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICB2YXIgb2Zmc2V0ID0gcmVjdFtwbGFjZW1lbnRdICsgc2Nyb2xsRGlzdGFuY2U7XG4gICAgaWYgKG9mZnNldCAhPT0gKGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5vZmZzZXQpIHx8IHJlY3QubGVmdCAhPT0gKGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5yZWN0LmxlZnQpIHx8IHJlY3Qud2lkdGggIT09IChjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC53aWR0aCkpIHtcbiAgICAgIHNldENvbXB1dGVkUG9zaXRpb24oe1xuICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgcmVjdDogcmVjdFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY29udHJvbEVsZW1lbnQsIG1lbnVQb3NpdGlvbiwgcGxhY2VtZW50LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ub2Zmc2V0LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC5sZWZ0LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC53aWR0aF0pO1xuICB1c2VMYXlvdXRFZmZlY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdKGZ1bmN0aW9uICgpIHtcbiAgICB1cGRhdGVDb21wdXRlZFBvc2l0aW9uKCk7XG4gIH0sIFt1cGRhdGVDb21wdXRlZFBvc2l0aW9uXSk7XG4gIHZhciBydW5BdXRvVXBkYXRlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgY2xlYW51cFJlZi5jdXJyZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjbGVhbnVwUmVmLmN1cnJlbnQoKTtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICAgIGlmIChjb250cm9sRWxlbWVudCAmJiBtZW51UG9ydGFsUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IGRvbS5hdXRvVXBkYXRlKGNvbnRyb2xFbGVtZW50LCBtZW51UG9ydGFsUmVmLmN1cnJlbnQsIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb24sIHtcbiAgICAgICAgZWxlbWVudFJlc2l6ZTogJ1Jlc2l6ZU9ic2VydmVyJyBpbiB3aW5kb3dcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2NvbnRyb2xFbGVtZW50LCB1cGRhdGVDb21wdXRlZFBvc2l0aW9uXSk7XG4gIHVzZUxheW91dEVmZmVjdF9fZGVmYXVsdFtcImRlZmF1bHRcIl0oZnVuY3Rpb24gKCkge1xuICAgIHJ1bkF1dG9VcGRhdGUoKTtcbiAgfSwgW3J1bkF1dG9VcGRhdGVdKTtcbiAgdmFyIHNldE1lbnVQb3J0YWxFbGVtZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKG1lbnVQb3J0YWxFbGVtZW50KSB7XG4gICAgbWVudVBvcnRhbFJlZi5jdXJyZW50ID0gbWVudVBvcnRhbEVsZW1lbnQ7XG4gICAgcnVuQXV0b1VwZGF0ZSgpO1xuICB9LCBbcnVuQXV0b1VwZGF0ZV0pO1xuXG4gIC8vIGJhaWwgZWFybHkgaWYgcmVxdWlyZWQgZWxlbWVudHMgYXJlbid0IHByZXNlbnRcbiAgaWYgKCFhcHBlbmRUbyAmJiBtZW51UG9zaXRpb24gIT09ICdmaXhlZCcgfHwgIWNvbXB1dGVkUG9zaXRpb24pIHJldHVybiBudWxsO1xuXG4gIC8vIHNhbWUgd3JhcHBlciBlbGVtZW50IHdoZXRoZXIgZml4ZWQgb3IgcG9ydGFsbGVkXG4gIHZhciBtZW51V3JhcHBlciA9IHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiBzZXRNZW51UG9ydGFsRWxlbWVudFxuICB9LCBnZXRTdHlsZVByb3BzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgIG9mZnNldDogY29tcHV0ZWRQb3NpdGlvbi5vZmZzZXQsXG4gICAgcG9zaXRpb246IG1lbnVQb3NpdGlvbixcbiAgICByZWN0OiBjb21wdXRlZFBvc2l0aW9uLnJlY3RcbiAgfSksICdtZW51UG9ydGFsJywge1xuICAgICdtZW51LXBvcnRhbCc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG4gIHJldHVybiByZWFjdC5qc3goUG9ydGFsUGxhY2VtZW50Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBwb3J0YWxQbGFjZW1lbnRDb250ZXh0XG4gIH0sIGFwcGVuZFRvID8gLyojX19QVVJFX18qL3JlYWN0RG9tLmNyZWF0ZVBvcnRhbChtZW51V3JhcHBlciwgYXBwZW5kVG8pIDogbWVudVdyYXBwZXIpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSb290IENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBjb250YWluZXJDU1MgPSBmdW5jdGlvbiBjb250YWluZXJDU1MoX3JlZikge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWYuaXNEaXNhYmxlZCxcbiAgICBpc1J0bCA9IF9yZWYuaXNSdGw7XG4gIHJldHVybiB7XG4gICAgbGFiZWw6ICdjb250YWluZXInLFxuICAgIGRpcmVjdGlvbjogaXNSdGwgPyAncnRsJyA6IHVuZGVmaW5lZCxcbiAgICBwb2ludGVyRXZlbnRzOiBpc0Rpc2FibGVkID8gJ25vbmUnIDogdW5kZWZpbmVkLFxuICAgIC8vIGNhbmNlbCBtb3VzZSBldmVudHMgd2hlbiBkaXNhYmxlZFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gIH07XG59O1xudmFyIFNlbGVjdENvbnRhaW5lciA9IGZ1bmN0aW9uIFNlbGVjdENvbnRhaW5lcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc1J0bCA9IHByb3BzLmlzUnRsO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnY29udGFpbmVyJywge1xuICAgICctLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnLS1pcy1ydGwnOiBpc1J0bFxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVmFsdWUgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIHZhbHVlQ29udGFpbmVyQ1NTID0gZnVuY3Rpb24gdmFsdWVDb250YWluZXJDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBzcGFjaW5nID0gX3JlZjIudGhlbWUuc3BhY2luZyxcbiAgICBpc011bHRpID0gX3JlZjIuaXNNdWx0aSxcbiAgICBoYXNWYWx1ZSA9IF9yZWYyLmhhc1ZhbHVlLFxuICAgIGNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSA9IF9yZWYyLnNlbGVjdFByb3BzLmNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6IGlzTXVsdGkgJiYgaGFzVmFsdWUgJiYgY29udHJvbFNob3VsZFJlbmRlclZhbHVlID8gJ2ZsZXgnIDogJ2dyaWQnLFxuICAgIGZsZXg6IDEsXG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICBXZWJraXRPdmVyZmxvd1Njcm9sbGluZzogJ3RvdWNoJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0IC8gMiwgXCJweCBcIikuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAyLCBcInB4XCIpXG4gIH0pO1xufTtcbnZhciBWYWx1ZUNvbnRhaW5lciA9IGZ1bmN0aW9uIFZhbHVlQ29udGFpbmVyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpLFxuICAgIGhhc1ZhbHVlID0gcHJvcHMuaGFzVmFsdWU7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICd2YWx1ZUNvbnRhaW5lcicsIHtcbiAgICAndmFsdWUtY29udGFpbmVyJzogdHJ1ZSxcbiAgICAndmFsdWUtY29udGFpbmVyLS1pcy1tdWx0aSc6IGlzTXVsdGksXG4gICAgJ3ZhbHVlLWNvbnRhaW5lci0taGFzLXZhbHVlJzogaGFzVmFsdWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEluZGljYXRvciBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgaW5kaWNhdG9yc0NvbnRhaW5lckNTUyA9IGZ1bmN0aW9uIGluZGljYXRvcnNDb250YWluZXJDU1MoKSB7XG4gIHJldHVybiB7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhTaHJpbms6IDBcbiAgfTtcbn07XG52YXIgSW5kaWNhdG9yc0NvbnRhaW5lciA9IGZ1bmN0aW9uIEluZGljYXRvcnNDb250YWluZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JzQ29udGFpbmVyJywge1xuICAgIGluZGljYXRvcnM6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG52YXIgX3RlbXBsYXRlT2JqZWN0O1xudmFyIF9leGNsdWRlZCQyID0gW1wic2l6ZVwiXSxcbiAgX2V4Y2x1ZGVkMiA9IFtcImlubmVyUHJvcHNcIiwgXCJpc1J0bFwiLCBcInNpemVcIl07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG52YXIgX3JlZjIgPSB7XG4gIG5hbWU6IFwiOG1ta2NnXCIsXG4gIHN0eWxlczogXCJkaXNwbGF5OmlubGluZS1ibG9jaztmaWxsOmN1cnJlbnRDb2xvcjtsaW5lLWhlaWdodDoxO3N0cm9rZTpjdXJyZW50Q29sb3I7c3Ryb2tlLXdpZHRoOjBcIlxufSA7XG52YXIgU3ZnID0gZnVuY3Rpb24gU3ZnKF9yZWYpIHtcbiAgdmFyIHNpemUgPSBfcmVmLnNpemUsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkJDIpO1xuICByZXR1cm4gcmVhY3QuanN4KFwic3ZnXCIsIF9leHRlbmRzKHtcbiAgICBoZWlnaHQ6IHNpemUsXG4gICAgd2lkdGg6IHNpemUsXG4gICAgdmlld0JveDogXCIwIDAgMjAgMjBcIixcbiAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLFxuICAgIGZvY3VzYWJsZTogXCJmYWxzZVwiLFxuICAgIGNzczogX3JlZjJcbiAgfSwgcHJvcHMpKTtcbn07XG52YXIgQ3Jvc3NJY29uID0gZnVuY3Rpb24gQ3Jvc3NJY29uKHByb3BzKSB7XG4gIHJldHVybiByZWFjdC5qc3goU3ZnLCBfZXh0ZW5kcyh7XG4gICAgc2l6ZTogMjBcbiAgfSwgcHJvcHMpLCByZWFjdC5qc3goXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xNC4zNDggMTQuODQ5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwbC0yLjY1MS0zLjAzMC0yLjY1MSAzLjAyOWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMC0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOSAwLTEuNjk3bDIuNzU4LTMuMTUtMi43NTktMy4xNTJjLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI4IDAtMS42OTdzMS4yMjgtMC40NjkgMS42OTcgMGwyLjY1MiAzLjAzMSAyLjY1MS0zLjAzMWMwLjQ2OS0wLjQ2OSAxLjIyOC0wLjQ2OSAxLjY5NyAwczAuNDY5IDEuMjI5IDAgMS42OTdsLTIuNzU4IDMuMTUyIDIuNzU4IDMuMTVjMC40NjkgMC40NjkgMC40NjkgMS4yMjkgMCAxLjY5OHpcIlxuICB9KSk7XG59O1xudmFyIERvd25DaGV2cm9uID0gZnVuY3Rpb24gRG93bkNoZXZyb24ocHJvcHMpIHtcbiAgcmV0dXJuIHJlYWN0LmpzeChTdmcsIF9leHRlbmRzKHtcbiAgICBzaXplOiAyMFxuICB9LCBwcm9wcyksIHJlYWN0LmpzeChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTQuNTE2IDcuNTQ4YzAuNDM2LTAuNDQ2IDEuMDQzLTAuNDgxIDEuNTc2IDBsMy45MDggMy43NDcgMy45MDgtMy43NDdjMC41MzMtMC40ODEgMS4xNDEtMC40NDYgMS41NzQgMCAwLjQzNiAwLjQ0NSAwLjQwOCAxLjE5NyAwIDEuNjE1LTAuNDA2IDAuNDE4LTQuNjk1IDQuNTAyLTQuNjk1IDQuNTAyLTAuMjE3IDAuMjIzLTAuNTAyIDAuMzM1LTAuNzg3IDAuMzM1cy0wLjU3LTAuMTEyLTAuNzg5LTAuMzM1YzAgMC00LjI4Ny00LjA4NC00LjY5NS00LjUwMnMtMC40MzYtMS4xNyAwLTEuNjE1elwiXG4gIH0pKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGJhc2VDU1MgPSBmdW5jdGlvbiBiYXNlQ1NTKF9yZWYzLCB1bnN0eWxlZCkge1xuICB2YXIgaXNGb2N1c2VkID0gX3JlZjMuaXNGb2N1c2VkLFxuICAgIF9yZWYzJHRoZW1lID0gX3JlZjMudGhlbWUsXG4gICAgYmFzZVVuaXQgPSBfcmVmMyR0aGVtZS5zcGFjaW5nLmJhc2VVbml0LFxuICAgIGNvbG9ycyA9IF9yZWYzJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgJzpob3Zlcic6IHtcbiAgICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MFxuICAgIH1cbiAgfSk7XG59O1xudmFyIGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbnZhciBEcm9wZG93bkluZGljYXRvciA9IGZ1bmN0aW9uIERyb3Bkb3duSW5kaWNhdG9yKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnZHJvcGRvd25JbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwgcmVhY3QuanN4KERvd25DaGV2cm9uLCBudWxsKSk7XG59O1xudmFyIGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbnZhciBDbGVhckluZGljYXRvciA9IGZ1bmN0aW9uIENsZWFySW5kaWNhdG9yKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnY2xlYXJJbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwgcmVhY3QuanN4KENyb3NzSWNvbiwgbnVsbCkpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gZnVuY3Rpb24gaW5kaWNhdG9yU2VwYXJhdG9yQ1NTKF9yZWY0LCB1bnN0eWxlZCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWY0LmlzRGlzYWJsZWQsXG4gICAgX3JlZjQkdGhlbWUgPSBfcmVmNC50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWY0JHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjQkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICAgIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICAgIHdpZHRoOiAxXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gICAgbWFyZ2luVG9wOiBiYXNlVW5pdCAqIDJcbiAgfSk7XG59O1xudmFyIEluZGljYXRvclNlcGFyYXRvciA9IGZ1bmN0aW9uIEluZGljYXRvclNlcGFyYXRvcihwcm9wcykge1xuICB2YXIgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJzcGFuXCIsIF9leHRlbmRzKHt9LCBpbm5lclByb3BzLCBnZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yU2VwYXJhdG9yJywge1xuICAgICdpbmRpY2F0b3Itc2VwYXJhdG9yJzogdHJ1ZVxuICB9KSkpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGxvYWRpbmdEb3RBbmltYXRpb25zID0gcmVhY3Qua2V5ZnJhbWVzKF90ZW1wbGF0ZU9iamVjdCB8fCAoX3RlbXBsYXRlT2JqZWN0ID0gX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbChbXCJcXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XFxuICA0MCUgeyBvcGFjaXR5OiAxOyB9XFxuXCJdKSkpO1xudmFyIGxvYWRpbmdJbmRpY2F0b3JDU1MgPSBmdW5jdGlvbiBsb2FkaW5nSW5kaWNhdG9yQ1NTKF9yZWY1LCB1bnN0eWxlZCkge1xuICB2YXIgaXNGb2N1c2VkID0gX3JlZjUuaXNGb2N1c2VkLFxuICAgIHNpemUgPSBfcmVmNS5zaXplLFxuICAgIF9yZWY1JHRoZW1lID0gX3JlZjUudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZjUkdGhlbWUuY29sb3JzLFxuICAgIGJhc2VVbml0ID0gX3JlZjUkdGhlbWUuc3BhY2luZy5iYXNlVW5pdDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnbG9hZGluZ0luZGljYXRvcicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gICAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgICBmb250U2l6ZTogc2l6ZSxcbiAgICBsaW5lSGVpZ2h0OiAxLFxuICAgIG1hcmdpblJpZ2h0OiBzaXplLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgdmVydGljYWxBbGlnbjogJ21pZGRsZSdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgcGFkZGluZzogYmFzZVVuaXQgKiAyXG4gIH0pO1xufTtcbnZhciBMb2FkaW5nRG90ID0gZnVuY3Rpb24gTG9hZGluZ0RvdChfcmVmNikge1xuICB2YXIgZGVsYXkgPSBfcmVmNi5kZWxheSxcbiAgICBvZmZzZXQgPSBfcmVmNi5vZmZzZXQ7XG4gIHJldHVybiByZWFjdC5qc3goXCJzcGFuXCIsIHtcbiAgICBjc3M6IC8qI19fUFVSRV9fKi9yZWFjdC5jc3Moe1xuICAgICAgYW5pbWF0aW9uOiBcIlwiLmNvbmNhdChsb2FkaW5nRG90QW5pbWF0aW9ucywgXCIgMXMgZWFzZS1pbi1vdXQgXCIpLmNvbmNhdChkZWxheSwgXCJtcyBpbmZpbml0ZTtcIiksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbSdcbiAgICB9LCBcIlwiICwgXCJcIiApXG4gIH0pO1xufTtcbnZhciBMb2FkaW5nSW5kaWNhdG9yID0gZnVuY3Rpb24gTG9hZGluZ0luZGljYXRvcihfcmVmNykge1xuICB2YXIgaW5uZXJQcm9wcyA9IF9yZWY3LmlubmVyUHJvcHMsXG4gICAgaXNSdGwgPSBfcmVmNy5pc1J0bCxcbiAgICBfcmVmNyRzaXplID0gX3JlZjcuc2l6ZSxcbiAgICBzaXplID0gX3JlZjckc2l6ZSA9PT0gdm9pZCAwID8gNCA6IF9yZWY3JHNpemUsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY3LCBfZXhjbHVkZWQyKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICBpc1J0bDogaXNSdGwsXG4gICAgc2l6ZTogc2l6ZVxuICB9KSwgJ2xvYWRpbmdJbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCByZWFjdC5qc3goTG9hZGluZ0RvdCwge1xuICAgIGRlbGF5OiAwLFxuICAgIG9mZnNldDogaXNSdGxcbiAgfSksIHJlYWN0LmpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDE2MCxcbiAgICBvZmZzZXQ6IHRydWVcbiAgfSksIHJlYWN0LmpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDMyMCxcbiAgICBvZmZzZXQ6ICFpc1J0bFxuICB9KSk7XG59O1xuXG52YXIgY3NzJDEgPSBmdW5jdGlvbiBjc3MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gX3JlZi5pc0ZvY3VzZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnMsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZiR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnY29udHJvbCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtaW5IZWlnaHQ6IHNwYWNpbmcuY29udHJvbEhlaWdodCxcbiAgICBvdXRsaW5lOiAnMCAhaW1wb3J0YW50JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0cmFuc2l0aW9uOiAnYWxsIDEwMG1zJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsNSA6IGNvbG9ycy5uZXV0cmFsMCxcbiAgICBib3JkZXJDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBpc0ZvY3VzZWQgPyBjb2xvcnMucHJpbWFyeSA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgYm94U2hhZG93OiBpc0ZvY3VzZWQgPyBcIjAgMCAwIDFweCBcIi5jb25jYXQoY29sb3JzLnByaW1hcnkpIDogdW5kZWZpbmVkLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgYm9yZGVyQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5wcmltYXJ5IDogY29sb3JzLm5ldXRyYWwzMFxuICAgIH1cbiAgfSk7XG59O1xudmFyIENvbnRyb2wgPSBmdW5jdGlvbiBDb250cm9sKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIG1lbnVJc09wZW4gPSBwcm9wcy5tZW51SXNPcGVuO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICByZWY6IGlubmVyUmVmXG4gIH0sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjb250cm9sJywge1xuICAgIGNvbnRyb2w6IHRydWUsXG4gICAgJ2NvbnRyb2wtLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnY29udHJvbC0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnY29udHJvbC0tbWVudS1pcy1vcGVuJzogbWVudUlzT3BlblxuICB9KSwgaW5uZXJQcm9wcywge1xuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkIHx8IHVuZGVmaW5lZFxuICB9KSwgY2hpbGRyZW4pO1xufTtcbnZhciBDb250cm9sJDEgPSBDb250cm9sO1xuXG52YXIgX2V4Y2x1ZGVkJDEgPSBbXCJkYXRhXCJdO1xudmFyIGdyb3VwQ1NTID0gZnVuY3Rpb24gZ3JvdXBDU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIHNwYWNpbmcgPSBfcmVmLnRoZW1lLnNwYWNpbmc7XG4gIHJldHVybiB1bnN0eWxlZCA/IHt9IDoge1xuICAgIHBhZGRpbmdCb3R0b206IHNwYWNpbmcuYmFzZVVuaXQgKiAyLFxuICAgIHBhZGRpbmdUb3A6IHNwYWNpbmcuYmFzZVVuaXQgKiAyXG4gIH07XG59O1xudmFyIEdyb3VwID0gZnVuY3Rpb24gR3JvdXAocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgY3ggPSBwcm9wcy5jeCxcbiAgICBnZXRTdHlsZXMgPSBwcm9wcy5nZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lcyA9IHByb3BzLmdldENsYXNzTmFtZXMsXG4gICAgSGVhZGluZyA9IHByb3BzLkhlYWRpbmcsXG4gICAgaGVhZGluZ1Byb3BzID0gcHJvcHMuaGVhZGluZ1Byb3BzLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGxhYmVsID0gcHJvcHMubGFiZWwsXG4gICAgdGhlbWUgPSBwcm9wcy50aGVtZSxcbiAgICBzZWxlY3RQcm9wcyA9IHByb3BzLnNlbGVjdFByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnZ3JvdXAnLCB7XG4gICAgZ3JvdXA6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCByZWFjdC5qc3goSGVhZGluZywgX2V4dGVuZHMoe30sIGhlYWRpbmdQcm9wcywge1xuICAgIHNlbGVjdFByb3BzOiBzZWxlY3RQcm9wcyxcbiAgICB0aGVtZTogdGhlbWUsXG4gICAgZ2V0U3R5bGVzOiBnZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICBjeDogY3hcbiAgfSksIGxhYmVsKSwgcmVhY3QuanN4KFwiZGl2XCIsIG51bGwsIGNoaWxkcmVuKSk7XG59O1xudmFyIGdyb3VwSGVhZGluZ0NTUyA9IGZ1bmN0aW9uIGdyb3VwSGVhZGluZ0NTUyhfcmVmMiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWYyJHRoZW1lID0gX3JlZjIudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZjIkdGhlbWUuY29sb3JzLFxuICAgIHNwYWNpbmcgPSBfcmVmMiR0aGVtZS5zcGFjaW5nO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdncm91cCcsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2Jsb2NrJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgIGZvbnRTaXplOiAnNzUlJyxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgbWFyZ2luQm90dG9tOiAnMC4yNWVtJyxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCAqIDMsXG4gICAgcGFkZGluZ1JpZ2h0OiBzcGFjaW5nLmJhc2VVbml0ICogMyxcbiAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJ1xuICB9KTtcbn07XG52YXIgR3JvdXBIZWFkaW5nID0gZnVuY3Rpb24gR3JvdXBIZWFkaW5nKHByb3BzKSB7XG4gIHZhciBfY2xlYW5Db21tb25Qcm9wcyA9IGNsZWFuQ29tbW9uUHJvcHMocHJvcHMpO1xuICAgIF9jbGVhbkNvbW1vblByb3BzLmRhdGE7XG4gICAgdmFyIGlubmVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX2NsZWFuQ29tbW9uUHJvcHMsIF9leGNsdWRlZCQxKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2dyb3VwSGVhZGluZycsIHtcbiAgICAnZ3JvdXAtaGVhZGluZyc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpKTtcbn07XG52YXIgR3JvdXAkMSA9IEdyb3VwO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiaW5uZXJSZWZcIiwgXCJpc0Rpc2FibGVkXCIsIFwiaXNIaWRkZW5cIiwgXCJpbnB1dENsYXNzTmFtZVwiXTtcbnZhciBpbnB1dENTUyA9IGZ1bmN0aW9uIGlucHV0Q1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIHZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICB2aXNpYmlsaXR5OiBpc0Rpc2FibGVkID8gJ2hpZGRlbicgOiAndmlzaWJsZScsXG4gICAgLy8gZm9yY2UgY3NzIHRvIHJlY29tcHV0ZSB3aGVuIHZhbHVlIGNoYW5nZSBkdWUgdG8gQGVtb3Rpb24gYnVnLlxuICAgIC8vIFdlIGNhbiByZW1vdmUgaXQgd2hlbmV2ZXIgdGhlIGJ1ZyBpcyBmaXhlZC5cbiAgICB0cmFuc2Zvcm06IHZhbHVlID8gJ3RyYW5zbGF0ZVooMCknIDogJydcbiAgfSwgY29udGFpbmVyU3R5bGUpLCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIG1hcmdpbjogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ1RvcDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODBcbiAgfSk7XG59O1xudmFyIHNwYWNpbmdTdHlsZSA9IHtcbiAgZ3JpZEFyZWE6ICcxIC8gMicsXG4gIGZvbnQ6ICdpbmhlcml0JyxcbiAgbWluV2lkdGg6ICcycHgnLFxuICBib3JkZXI6IDAsXG4gIG1hcmdpbjogMCxcbiAgb3V0bGluZTogMCxcbiAgcGFkZGluZzogMFxufTtcbnZhciBjb250YWluZXJTdHlsZSA9IHtcbiAgZmxleDogJzEgMSBhdXRvJyxcbiAgZGlzcGxheTogJ2lubGluZS1ncmlkJyxcbiAgZ3JpZEFyZWE6ICcxIC8gMSAvIDIgLyAzJyxcbiAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJzAgbWluLWNvbnRlbnQnLFxuICAnJjphZnRlcic6IF9vYmplY3RTcHJlYWQoe1xuICAgIGNvbnRlbnQ6ICdhdHRyKGRhdGEtdmFsdWUpIFwiIFwiJyxcbiAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICB3aGl0ZVNwYWNlOiAncHJlJ1xuICB9LCBzcGFjaW5nU3R5bGUpXG59O1xudmFyIGlucHV0U3R5bGUgPSBmdW5jdGlvbiBpbnB1dFN0eWxlKGlzSGlkZGVuKSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2lucHV0JyxcbiAgICBjb2xvcjogJ2luaGVyaXQnLFxuICAgIGJhY2tncm91bmQ6IDAsXG4gICAgb3BhY2l0eTogaXNIaWRkZW4gPyAwIDogMSxcbiAgICB3aWR0aDogJzEwMCUnXG4gIH0sIHNwYWNpbmdTdHlsZSk7XG59O1xudmFyIElucHV0ID0gZnVuY3Rpb24gSW5wdXQocHJvcHMpIHtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgdmFsdWUgPSBwcm9wcy52YWx1ZTtcbiAgdmFyIF9jbGVhbkNvbW1vblByb3BzID0gY2xlYW5Db21tb25Qcm9wcyhwcm9wcyksXG4gICAgaW5uZXJSZWYgPSBfY2xlYW5Db21tb25Qcm9wcy5pbm5lclJlZixcbiAgICBpc0Rpc2FibGVkID0gX2NsZWFuQ29tbW9uUHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc0hpZGRlbiA9IF9jbGVhbkNvbW1vblByb3BzLmlzSGlkZGVuLFxuICAgIGlucHV0Q2xhc3NOYW1lID0gX2NsZWFuQ29tbW9uUHJvcHMuaW5wdXRDbGFzc05hbWUsXG4gICAgaW5uZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfY2xlYW5Db21tb25Qcm9wcywgX2V4Y2x1ZGVkKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2lucHV0Jywge1xuICAgICdpbnB1dC1jb250YWluZXInOiB0cnVlXG4gIH0pLCB7XG4gICAgXCJkYXRhLXZhbHVlXCI6IHZhbHVlIHx8ICcnXG4gIH0pLCByZWFjdC5qc3goXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjeCh7XG4gICAgICBpbnB1dDogdHJ1ZVxuICAgIH0sIGlucHV0Q2xhc3NOYW1lKSxcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIHN0eWxlOiBpbnB1dFN0eWxlKGlzSGlkZGVuKSxcbiAgICBkaXNhYmxlZDogaXNEaXNhYmxlZFxuICB9LCBpbm5lclByb3BzKSkpO1xufTtcbnZhciBJbnB1dCQxID0gSW5wdXQ7XG5cbnZhciBtdWx0aVZhbHVlQ1NTID0gZnVuY3Rpb24gbXVsdGlWYWx1ZUNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnbXVsdGlWYWx1ZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIG1pbldpZHRoOiAwXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcnMubmV1dHJhbDEwLFxuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBtYXJnaW46IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBtdWx0aVZhbHVlTGFiZWxDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlTGFiZWxDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmMiR0aGVtZSA9IF9yZWYyLnRoZW1lLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYyJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnMsXG4gICAgY3JvcFdpdGhFbGxpcHNpcyA9IF9yZWYyLmNyb3BXaXRoRWxsaXBzaXM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiBjcm9wV2l0aEVsbGlwc2lzIHx8IGNyb3BXaXRoRWxsaXBzaXMgPT09IHVuZGVmaW5lZCA/ICdlbGxpcHNpcycgOiB1bmRlZmluZWQsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgZm9udFNpemU6ICc4NSUnLFxuICAgIHBhZGRpbmc6IDMsXG4gICAgcGFkZGluZ0xlZnQ6IDZcbiAgfSk7XG59O1xudmFyIG11bHRpVmFsdWVSZW1vdmVDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlUmVtb3ZlQ1NTKF9yZWYzLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjMkdGhlbWUgPSBfcmVmMy50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZjMkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmMyR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgY29sb3JzID0gX3JlZjMkdGhlbWUuY29sb3JzLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYzLmlzRm9jdXNlZDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4J1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5kYW5nZXJMaWdodCA6IHVuZGVmaW5lZCxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCxcbiAgICBwYWRkaW5nUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQsXG4gICAgJzpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLmRhbmdlckxpZ2h0LFxuICAgICAgY29sb3I6IGNvbG9ycy5kYW5nZXJcbiAgICB9XG4gIH0pO1xufTtcbnZhciBNdWx0aVZhbHVlR2VuZXJpYyA9IGZ1bmN0aW9uIE11bHRpVmFsdWVHZW5lcmljKF9yZWY0KSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWY0LmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBfcmVmNC5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIGlubmVyUHJvcHMsIGNoaWxkcmVuKTtcbn07XG52YXIgTXVsdGlWYWx1ZUNvbnRhaW5lciA9IE11bHRpVmFsdWVHZW5lcmljO1xudmFyIE11bHRpVmFsdWVMYWJlbCA9IE11bHRpVmFsdWVHZW5lcmljO1xuZnVuY3Rpb24gTXVsdGlWYWx1ZVJlbW92ZShfcmVmNSkge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmNS5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjUuaW5uZXJQcm9wcztcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcm9sZTogXCJidXR0b25cIlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwgcmVhY3QuanN4KENyb3NzSWNvbiwge1xuICAgIHNpemU6IDE0XG4gIH0pKTtcbn1cbnZhciBNdWx0aVZhbHVlID0gZnVuY3Rpb24gTXVsdGlWYWx1ZShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb21wb25lbnRzID0gcHJvcHMuY29tcG9uZW50cyxcbiAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICByZW1vdmVQcm9wcyA9IHByb3BzLnJlbW92ZVByb3BzLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHM7XG4gIHZhciBDb250YWluZXIgPSBjb21wb25lbnRzLkNvbnRhaW5lcixcbiAgICBMYWJlbCA9IGNvbXBvbmVudHMuTGFiZWwsXG4gICAgUmVtb3ZlID0gY29tcG9uZW50cy5SZW1vdmU7XG4gIHJldHVybiByZWFjdC5qc3goQ29udGFpbmVyLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtdWx0aVZhbHVlJywge1xuICAgICAgJ211bHRpLXZhbHVlJzogdHJ1ZSxcbiAgICAgICdtdWx0aS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gICAgfSkpLCBpbm5lclByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSwgcmVhY3QuanN4KExhYmVsLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZUxhYmVsJywge1xuICAgICAgJ211bHRpLXZhbHVlX19sYWJlbCc6IHRydWVcbiAgICB9KSksXG4gICAgc2VsZWN0UHJvcHM6IHNlbGVjdFByb3BzXG4gIH0sIGNoaWxkcmVuKSwgcmVhY3QuanN4KFJlbW92ZSwge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgaW5uZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZVJlbW92ZScsIHtcbiAgICAgICdtdWx0aS12YWx1ZV9fcmVtb3ZlJzogdHJ1ZVxuICAgIH0pKSwge30sIHtcbiAgICAgICdhcmlhLWxhYmVsJzogXCJSZW1vdmUgXCIuY29uY2F0KGNoaWxkcmVuIHx8ICdvcHRpb24nKVxuICAgIH0sIHJlbW92ZVByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSkpO1xufTtcbnZhciBNdWx0aVZhbHVlJDEgPSBNdWx0aVZhbHVlO1xuXG52YXIgb3B0aW9uQ1NTID0gZnVuY3Rpb24gb3B0aW9uQ1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYuaXNGb2N1c2VkLFxuICAgIGlzU2VsZWN0ZWQgPSBfcmVmLmlzU2VsZWN0ZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnb3B0aW9uJyxcbiAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6ICdyZ2JhKDAsIDAsIDAsIDApJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNTZWxlY3RlZCA/IGNvbG9ycy5wcmltYXJ5IDogaXNGb2N1c2VkID8gY29sb3JzLnByaW1hcnkyNSA6ICd0cmFuc3BhcmVudCcsXG4gICAgY29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDIwIDogaXNTZWxlY3RlZCA/IGNvbG9ycy5uZXV0cmFsMCA6ICdpbmhlcml0JyxcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0ICogMiwgXCJweCBcIikuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAzLCBcInB4XCIpLFxuICAgIC8vIHByb3ZpZGUgc29tZSBhZmZvcmRhbmNlIG9uIHRvdWNoIGRldmljZXNcbiAgICAnOmFjdGl2ZSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogIWlzRGlzYWJsZWQgPyBpc1NlbGVjdGVkID8gY29sb3JzLnByaW1hcnkgOiBjb2xvcnMucHJpbWFyeTUwIDogdW5kZWZpbmVkXG4gICAgfVxuICB9KTtcbn07XG52YXIgT3B0aW9uID0gZnVuY3Rpb24gT3B0aW9uKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpc1NlbGVjdGVkID0gcHJvcHMuaXNTZWxlY3RlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnb3B0aW9uJywge1xuICAgIG9wdGlvbjogdHJ1ZSxcbiAgICAnb3B0aW9uLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWQsXG4gICAgJ29wdGlvbi0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnb3B0aW9uLS1pcy1zZWxlY3RlZCc6IGlzU2VsZWN0ZWRcbiAgfSksIHtcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkXG4gIH0sIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIE9wdGlvbiQxID0gT3B0aW9uO1xuXG52YXIgcGxhY2Vob2xkZXJDU1MgPSBmdW5jdGlvbiBwbGFjZWhvbGRlckNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAncGxhY2Vob2xkZXInLFxuICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMydcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw1MCxcbiAgICBtYXJnaW5MZWZ0OiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBtYXJnaW5SaWdodDogc3BhY2luZy5iYXNlVW5pdCAvIDJcbiAgfSk7XG59O1xudmFyIFBsYWNlaG9sZGVyID0gZnVuY3Rpb24gUGxhY2Vob2xkZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdwbGFjZWhvbGRlcicsIHtcbiAgICBwbGFjZWhvbGRlcjogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgUGxhY2Vob2xkZXIkMSA9IFBsYWNlaG9sZGVyO1xuXG52YXIgY3NzID0gZnVuY3Rpb24gY3NzKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ3NpbmdsZVZhbHVlJyxcbiAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWw0MCA6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgbWFyZ2luTGVmdDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgbWFyZ2luUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSA9IGZ1bmN0aW9uIFNpbmdsZVZhbHVlKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnc2luZ2xlVmFsdWUnLCB7XG4gICAgJ3NpbmdsZS12YWx1ZSc6IHRydWUsXG4gICAgJ3NpbmdsZS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSQxID0gU2luZ2xlVmFsdWU7XG5cbnZhciBjb21wb25lbnRzID0ge1xuICBDbGVhckluZGljYXRvcjogQ2xlYXJJbmRpY2F0b3IsXG4gIENvbnRyb2w6IENvbnRyb2wkMSxcbiAgRHJvcGRvd25JbmRpY2F0b3I6IERyb3Bkb3duSW5kaWNhdG9yLFxuICBEb3duQ2hldnJvbjogRG93bkNoZXZyb24sXG4gIENyb3NzSWNvbjogQ3Jvc3NJY29uLFxuICBHcm91cDogR3JvdXAkMSxcbiAgR3JvdXBIZWFkaW5nOiBHcm91cEhlYWRpbmcsXG4gIEluZGljYXRvcnNDb250YWluZXI6IEluZGljYXRvcnNDb250YWluZXIsXG4gIEluZGljYXRvclNlcGFyYXRvcjogSW5kaWNhdG9yU2VwYXJhdG9yLFxuICBJbnB1dDogSW5wdXQkMSxcbiAgTG9hZGluZ0luZGljYXRvcjogTG9hZGluZ0luZGljYXRvcixcbiAgTWVudTogTWVudSQxLFxuICBNZW51TGlzdDogTWVudUxpc3QsXG4gIE1lbnVQb3J0YWw6IE1lbnVQb3J0YWwsXG4gIExvYWRpbmdNZXNzYWdlOiBMb2FkaW5nTWVzc2FnZSxcbiAgTm9PcHRpb25zTWVzc2FnZTogTm9PcHRpb25zTWVzc2FnZSxcbiAgTXVsdGlWYWx1ZTogTXVsdGlWYWx1ZSQxLFxuICBNdWx0aVZhbHVlQ29udGFpbmVyOiBNdWx0aVZhbHVlQ29udGFpbmVyLFxuICBNdWx0aVZhbHVlTGFiZWw6IE11bHRpVmFsdWVMYWJlbCxcbiAgTXVsdGlWYWx1ZVJlbW92ZTogTXVsdGlWYWx1ZVJlbW92ZSxcbiAgT3B0aW9uOiBPcHRpb24kMSxcbiAgUGxhY2Vob2xkZXI6IFBsYWNlaG9sZGVyJDEsXG4gIFNlbGVjdENvbnRhaW5lcjogU2VsZWN0Q29udGFpbmVyLFxuICBTaW5nbGVWYWx1ZTogU2luZ2xlVmFsdWUkMSxcbiAgVmFsdWVDb250YWluZXI6IFZhbHVlQ29udGFpbmVyXG59O1xudmFyIGRlZmF1bHRDb21wb25lbnRzID0gZnVuY3Rpb24gZGVmYXVsdENvbXBvbmVudHMocHJvcHMpIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29tcG9uZW50cyksIHByb3BzLmNvbXBvbmVudHMpO1xufTtcblxuZXhwb3J0cy5NZW51UGxhY2VyID0gTWVudVBsYWNlcjtcbmV4cG9ydHMuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5leHBvcnRzLmNsZWFuVmFsdWUgPSBjbGVhblZhbHVlO1xuZXhwb3J0cy5jbGVhckluZGljYXRvckNTUyA9IGNsZWFySW5kaWNhdG9yQ1NTO1xuZXhwb3J0cy5jb21wb25lbnRzID0gY29tcG9uZW50cztcbmV4cG9ydHMuY29udGFpbmVyQ1NTID0gY29udGFpbmVyQ1NTO1xuZXhwb3J0cy5jc3MgPSBjc3MkMTtcbmV4cG9ydHMuY3NzJDEgPSBjc3M7XG5leHBvcnRzLmRlZmF1bHRDb21wb25lbnRzID0gZGVmYXVsdENvbXBvbmVudHM7XG5leHBvcnRzLmRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gZHJvcGRvd25JbmRpY2F0b3JDU1M7XG5leHBvcnRzLmdyb3VwQ1NTID0gZ3JvdXBDU1M7XG5leHBvcnRzLmdyb3VwSGVhZGluZ0NTUyA9IGdyb3VwSGVhZGluZ0NTUztcbmV4cG9ydHMuaGFuZGxlSW5wdXRDaGFuZ2UgPSBoYW5kbGVJbnB1dENoYW5nZTtcbmV4cG9ydHMuaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gaW5kaWNhdG9yU2VwYXJhdG9yQ1NTO1xuZXhwb3J0cy5pbmRpY2F0b3JzQ29udGFpbmVyQ1NTID0gaW5kaWNhdG9yc0NvbnRhaW5lckNTUztcbmV4cG9ydHMuaW5wdXRDU1MgPSBpbnB1dENTUztcbmV4cG9ydHMuaXNEb2N1bWVudEVsZW1lbnQgPSBpc0RvY3VtZW50RWxlbWVudDtcbmV4cG9ydHMuaXNNb2JpbGVEZXZpY2UgPSBpc01vYmlsZURldmljZTtcbmV4cG9ydHMuaXNUb3VjaENhcGFibGUgPSBpc1RvdWNoQ2FwYWJsZTtcbmV4cG9ydHMubG9hZGluZ0luZGljYXRvckNTUyA9IGxvYWRpbmdJbmRpY2F0b3JDU1M7XG5leHBvcnRzLmxvYWRpbmdNZXNzYWdlQ1NTID0gbG9hZGluZ01lc3NhZ2VDU1M7XG5leHBvcnRzLm1lbnVDU1MgPSBtZW51Q1NTO1xuZXhwb3J0cy5tZW51TGlzdENTUyA9IG1lbnVMaXN0Q1NTO1xuZXhwb3J0cy5tZW51UG9ydGFsQ1NTID0gbWVudVBvcnRhbENTUztcbmV4cG9ydHMubXVsdGlWYWx1ZUFzVmFsdWUgPSBtdWx0aVZhbHVlQXNWYWx1ZTtcbmV4cG9ydHMubXVsdGlWYWx1ZUNTUyA9IG11bHRpVmFsdWVDU1M7XG5leHBvcnRzLm11bHRpVmFsdWVMYWJlbENTUyA9IG11bHRpVmFsdWVMYWJlbENTUztcbmV4cG9ydHMubXVsdGlWYWx1ZVJlbW92ZUNTUyA9IG11bHRpVmFsdWVSZW1vdmVDU1M7XG5leHBvcnRzLm5vT3B0aW9uc01lc3NhZ2VDU1MgPSBub09wdGlvbnNNZXNzYWdlQ1NTO1xuZXhwb3J0cy5ub29wID0gbm9vcDtcbmV4cG9ydHMubm90TnVsbGlzaCA9IG5vdE51bGxpc2g7XG5leHBvcnRzLm9wdGlvbkNTUyA9IG9wdGlvbkNTUztcbmV4cG9ydHMucGxhY2Vob2xkZXJDU1MgPSBwbGFjZWhvbGRlckNTUztcbmV4cG9ydHMucmVtb3ZlUHJvcHMgPSByZW1vdmVQcm9wcztcbmV4cG9ydHMuc2Nyb2xsSW50b1ZpZXcgPSBzY3JvbGxJbnRvVmlldztcbmV4cG9ydHMuc2luZ2xlVmFsdWVBc1ZhbHVlID0gc2luZ2xlVmFsdWVBc1ZhbHVlO1xuZXhwb3J0cy5zdXBwb3J0c1Bhc3NpdmVFdmVudHMgPSBzdXBwb3J0c1Bhc3NpdmVFdmVudHM7XG5leHBvcnRzLnZhbHVlQ29udGFpbmVyQ1NTID0gdmFsdWVDb250YWluZXJDU1M7XG5leHBvcnRzLnZhbHVlVGVybmFyeSA9IHZhbHVlVGVybmFyeTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIF9leHRlbmRzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJyk7XG52YXIgX29iamVjdFNwcmVhZCA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xudmFyIF9jbGFzc0NhbGxDaGVjayA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcbnZhciBfY3JlYXRlQ2xhc3MgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG52YXIgX2luaGVyaXRzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cycpO1xudmFyIF9jcmVhdGVTdXBlciA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXInKTtcbnZhciBfdG9Db25zdW1hYmxlQXJyYXkgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5Jyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIGluZGV4ID0gcmVxdWlyZSgnLi9pbmRleC02NjVjNGVkOC5janMucHJvZC5qcycpO1xudmFyIHJlYWN0ID0gcmVxdWlyZSgnQGVtb3Rpb24vcmVhY3QnKTtcbnZhciBtZW1vaXplT25lID0gcmVxdWlyZSgnbWVtb2l6ZS1vbmUnKTtcbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wRGVmYXVsdCAoZSkgeyByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogeyAnZGVmYXVsdCc6IGUgfTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcE5hbWVzcGFjZShlKSB7XG4gIGlmIChlICYmIGUuX19lc01vZHVsZSkgcmV0dXJuIGU7XG4gIHZhciBuID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKGUpIHtcbiAgICBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICBpZiAoayAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZVtrXTsgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuW1wiZGVmYXVsdFwiXSA9IGU7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKG4pO1xufVxuXG52YXIgUmVhY3RfX25hbWVzcGFjZSA9IC8qI19fUFVSRV9fKi9faW50ZXJvcE5hbWVzcGFjZShSZWFjdCk7XG52YXIgbWVtb2l6ZU9uZV9fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9faW50ZXJvcERlZmF1bHQobWVtb2l6ZU9uZSk7XG5cbi8vIEFzc2lzdGl2ZSB0ZXh0IHRvIGRlc2NyaWJlIHZpc3VhbCBlbGVtZW50cy4gSGlkZGVuIGZvciBzaWdodGVkIHVzZXJzLlxudmFyIF9yZWYgPSB7XG4gIG5hbWU6IFwiN3BnMGNqLWExMXlUZXh0XCIsXG4gIHN0eWxlczogXCJsYWJlbDphMTF5VGV4dDt6LWluZGV4Ojk5OTk7Ym9yZGVyOjA7Y2xpcDpyZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7aGVpZ2h0OjFweDt3aWR0aDoxcHg7cG9zaXRpb246YWJzb2x1dGU7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDt3aGl0ZS1zcGFjZTpub3dyYXBcIlxufSA7XG52YXIgQTExeVRleHQgPSBmdW5jdGlvbiBBMTF5VGV4dChwcm9wcykge1xuICByZXR1cm4gcmVhY3QuanN4KFwic3BhblwiLCBfZXh0ZW5kcyh7XG4gICAgY3NzOiBfcmVmXG4gIH0sIHByb3BzKSk7XG59O1xudmFyIEExMXlUZXh0JDEgPSBBMTF5VGV4dDtcblxudmFyIGRlZmF1bHRBcmlhTGl2ZU1lc3NhZ2VzID0ge1xuICBndWlkYW5jZTogZnVuY3Rpb24gZ3VpZGFuY2UocHJvcHMpIHtcbiAgICB2YXIgaXNTZWFyY2hhYmxlID0gcHJvcHMuaXNTZWFyY2hhYmxlLFxuICAgICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGksXG4gICAgICB0YWJTZWxlY3RzVmFsdWUgPSBwcm9wcy50YWJTZWxlY3RzVmFsdWUsXG4gICAgICBjb250ZXh0ID0gcHJvcHMuY29udGV4dCxcbiAgICAgIGlzSW5pdGlhbEZvY3VzID0gcHJvcHMuaXNJbml0aWFsRm9jdXM7XG4gICAgc3dpdGNoIChjb250ZXh0KSB7XG4gICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgcmV0dXJuIFwiVXNlIFVwIGFuZCBEb3duIHRvIGNob29zZSBvcHRpb25zLCBwcmVzcyBFbnRlciB0byBzZWxlY3QgdGhlIGN1cnJlbnRseSBmb2N1c2VkIG9wdGlvbiwgcHJlc3MgRXNjYXBlIHRvIGV4aXQgdGhlIG1lbnVcIi5jb25jYXQodGFiU2VsZWN0c1ZhbHVlID8gJywgcHJlc3MgVGFiIHRvIHNlbGVjdCB0aGUgb3B0aW9uIGFuZCBleGl0IHRoZSBtZW51JyA6ICcnLCBcIi5cIik7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIHJldHVybiBpc0luaXRpYWxGb2N1cyA/IFwiXCIuY29uY2F0KHByb3BzWydhcmlhLWxhYmVsJ10gfHwgJ1NlbGVjdCcsIFwiIGlzIGZvY3VzZWQgXCIpLmNvbmNhdChpc1NlYXJjaGFibGUgPyAnLHR5cGUgdG8gcmVmaW5lIGxpc3QnIDogJycsIFwiLCBwcmVzcyBEb3duIHRvIG9wZW4gdGhlIG1lbnUsIFwiKS5jb25jYXQoaXNNdWx0aSA/ICcgcHJlc3MgbGVmdCB0byBmb2N1cyBzZWxlY3RlZCB2YWx1ZXMnIDogJycpIDogJyc7XG4gICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgIHJldHVybiAnVXNlIGxlZnQgYW5kIHJpZ2h0IHRvIHRvZ2dsZSBiZXR3ZWVuIGZvY3VzZWQgdmFsdWVzLCBwcmVzcyBCYWNrc3BhY2UgdG8gcmVtb3ZlIHRoZSBjdXJyZW50bHkgZm9jdXNlZCB2YWx1ZSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9LFxuICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJvcHMpIHtcbiAgICB2YXIgYWN0aW9uID0gcHJvcHMuYWN0aW9uLFxuICAgICAgX3Byb3BzJGxhYmVsID0gcHJvcHMubGFiZWwsXG4gICAgICBsYWJlbCA9IF9wcm9wcyRsYWJlbCA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkbGFiZWwsXG4gICAgICBsYWJlbHMgPSBwcm9wcy5sYWJlbHMsXG4gICAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZDtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnZGVzZWxlY3Qtb3B0aW9uJzpcbiAgICAgIGNhc2UgJ3BvcC12YWx1ZSc6XG4gICAgICBjYXNlICdyZW1vdmUtdmFsdWUnOlxuICAgICAgICByZXR1cm4gXCJvcHRpb24gXCIuY29uY2F0KGxhYmVsLCBcIiwgZGVzZWxlY3RlZC5cIik7XG4gICAgICBjYXNlICdjbGVhcic6XG4gICAgICAgIHJldHVybiAnQWxsIHNlbGVjdGVkIG9wdGlvbnMgaGF2ZSBiZWVuIGNsZWFyZWQuJztcbiAgICAgIGNhc2UgJ2luaXRpYWwtaW5wdXQtZm9jdXMnOlxuICAgICAgICByZXR1cm4gXCJvcHRpb25cIi5jb25jYXQobGFiZWxzLmxlbmd0aCA+IDEgPyAncycgOiAnJywgXCIgXCIpLmNvbmNhdChsYWJlbHMuam9pbignLCcpLCBcIiwgc2VsZWN0ZWQuXCIpO1xuICAgICAgY2FzZSAnc2VsZWN0LW9wdGlvbic6XG4gICAgICAgIHJldHVybiBpc0Rpc2FibGVkID8gXCJvcHRpb24gXCIuY29uY2F0KGxhYmVsLCBcIiBpcyBkaXNhYmxlZC4gU2VsZWN0IGFub3RoZXIgb3B0aW9uLlwiKSA6IFwib3B0aW9uIFwiLmNvbmNhdChsYWJlbCwgXCIsIHNlbGVjdGVkLlwiKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH0sXG4gIG9uRm9jdXM6IGZ1bmN0aW9uIG9uRm9jdXMocHJvcHMpIHtcbiAgICB2YXIgY29udGV4dCA9IHByb3BzLmNvbnRleHQsXG4gICAgICBmb2N1c2VkID0gcHJvcHMuZm9jdXNlZCxcbiAgICAgIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zLFxuICAgICAgX3Byb3BzJGxhYmVsMiA9IHByb3BzLmxhYmVsLFxuICAgICAgbGFiZWwgPSBfcHJvcHMkbGFiZWwyID09PSB2b2lkIDAgPyAnJyA6IF9wcm9wcyRsYWJlbDIsXG4gICAgICBzZWxlY3RWYWx1ZSA9IHByb3BzLnNlbGVjdFZhbHVlLFxuICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICBpc1NlbGVjdGVkID0gcHJvcHMuaXNTZWxlY3RlZCxcbiAgICAgIGlzQXBwbGVEZXZpY2UgPSBwcm9wcy5pc0FwcGxlRGV2aWNlO1xuICAgIHZhciBnZXRBcnJheUluZGV4ID0gZnVuY3Rpb24gZ2V0QXJyYXlJbmRleChhcnIsIGl0ZW0pIHtcbiAgICAgIHJldHVybiBhcnIgJiYgYXJyLmxlbmd0aCA/IFwiXCIuY29uY2F0KGFyci5pbmRleE9mKGl0ZW0pICsgMSwgXCIgb2YgXCIpLmNvbmNhdChhcnIubGVuZ3RoKSA6ICcnO1xuICAgIH07XG4gICAgaWYgKGNvbnRleHQgPT09ICd2YWx1ZScgJiYgc2VsZWN0VmFsdWUpIHtcbiAgICAgIHJldHVybiBcInZhbHVlIFwiLmNvbmNhdChsYWJlbCwgXCIgZm9jdXNlZCwgXCIpLmNvbmNhdChnZXRBcnJheUluZGV4KHNlbGVjdFZhbHVlLCBmb2N1c2VkKSwgXCIuXCIpO1xuICAgIH1cbiAgICBpZiAoY29udGV4dCA9PT0gJ21lbnUnICYmIGlzQXBwbGVEZXZpY2UpIHtcbiAgICAgIHZhciBkaXNhYmxlZCA9IGlzRGlzYWJsZWQgPyAnIGRpc2FibGVkJyA6ICcnO1xuICAgICAgdmFyIHN0YXR1cyA9IFwiXCIuY29uY2F0KGlzU2VsZWN0ZWQgPyAnIHNlbGVjdGVkJyA6ICcnKS5jb25jYXQoZGlzYWJsZWQpO1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KGxhYmVsKS5jb25jYXQoc3RhdHVzLCBcIiwgXCIpLmNvbmNhdChnZXRBcnJheUluZGV4KG9wdGlvbnMsIGZvY3VzZWQpLCBcIi5cIik7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfSxcbiAgb25GaWx0ZXI6IGZ1bmN0aW9uIG9uRmlsdGVyKHByb3BzKSB7XG4gICAgdmFyIGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgICAgcmVzdWx0c01lc3NhZ2UgPSBwcm9wcy5yZXN1bHRzTWVzc2FnZTtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQocmVzdWx0c01lc3NhZ2UpLmNvbmNhdChpbnB1dFZhbHVlID8gJyBmb3Igc2VhcmNoIHRlcm0gJyArIGlucHV0VmFsdWUgOiAnJywgXCIuXCIpO1xuICB9XG59O1xuXG52YXIgTGl2ZVJlZ2lvbiA9IGZ1bmN0aW9uIExpdmVSZWdpb24ocHJvcHMpIHtcbiAgdmFyIGFyaWFTZWxlY3Rpb24gPSBwcm9wcy5hcmlhU2VsZWN0aW9uLFxuICAgIGZvY3VzZWRPcHRpb24gPSBwcm9wcy5mb2N1c2VkT3B0aW9uLFxuICAgIGZvY3VzZWRWYWx1ZSA9IHByb3BzLmZvY3VzZWRWYWx1ZSxcbiAgICBmb2N1c2FibGVPcHRpb25zID0gcHJvcHMuZm9jdXNhYmxlT3B0aW9ucyxcbiAgICBpc0ZvY3VzZWQgPSBwcm9wcy5pc0ZvY3VzZWQsXG4gICAgc2VsZWN0VmFsdWUgPSBwcm9wcy5zZWxlY3RWYWx1ZSxcbiAgICBzZWxlY3RQcm9wcyA9IHByb3BzLnNlbGVjdFByb3BzLFxuICAgIGlkID0gcHJvcHMuaWQsXG4gICAgaXNBcHBsZURldmljZSA9IHByb3BzLmlzQXBwbGVEZXZpY2U7XG4gIHZhciBhcmlhTGl2ZU1lc3NhZ2VzID0gc2VsZWN0UHJvcHMuYXJpYUxpdmVNZXNzYWdlcyxcbiAgICBnZXRPcHRpb25MYWJlbCA9IHNlbGVjdFByb3BzLmdldE9wdGlvbkxhYmVsLFxuICAgIGlucHV0VmFsdWUgPSBzZWxlY3RQcm9wcy5pbnB1dFZhbHVlLFxuICAgIGlzTXVsdGkgPSBzZWxlY3RQcm9wcy5pc011bHRpLFxuICAgIGlzT3B0aW9uRGlzYWJsZWQgPSBzZWxlY3RQcm9wcy5pc09wdGlvbkRpc2FibGVkLFxuICAgIGlzU2VhcmNoYWJsZSA9IHNlbGVjdFByb3BzLmlzU2VhcmNoYWJsZSxcbiAgICBtZW51SXNPcGVuID0gc2VsZWN0UHJvcHMubWVudUlzT3BlbixcbiAgICBvcHRpb25zID0gc2VsZWN0UHJvcHMub3B0aW9ucyxcbiAgICBzY3JlZW5SZWFkZXJTdGF0dXMgPSBzZWxlY3RQcm9wcy5zY3JlZW5SZWFkZXJTdGF0dXMsXG4gICAgdGFiU2VsZWN0c1ZhbHVlID0gc2VsZWN0UHJvcHMudGFiU2VsZWN0c1ZhbHVlLFxuICAgIGlzTG9hZGluZyA9IHNlbGVjdFByb3BzLmlzTG9hZGluZztcbiAgdmFyIGFyaWFMYWJlbCA9IHNlbGVjdFByb3BzWydhcmlhLWxhYmVsJ107XG4gIHZhciBhcmlhTGl2ZSA9IHNlbGVjdFByb3BzWydhcmlhLWxpdmUnXTtcblxuICAvLyBVcGRhdGUgYXJpYSBsaXZlIG1lc3NhZ2UgY29uZmlndXJhdGlvbiB3aGVuIHByb3AgY2hhbmdlc1xuICB2YXIgbWVzc2FnZXMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0QXJpYUxpdmVNZXNzYWdlcyksIGFyaWFMaXZlTWVzc2FnZXMgfHwge30pO1xuICB9LCBbYXJpYUxpdmVNZXNzYWdlc10pO1xuXG4gIC8vIFVwZGF0ZSBhcmlhIGxpdmUgc2VsZWN0ZWQgb3B0aW9uIHdoZW4gcHJvcCBjaGFuZ2VzXG4gIHZhciBhcmlhU2VsZWN0ZWQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICcnO1xuICAgIGlmIChhcmlhU2VsZWN0aW9uICYmIG1lc3NhZ2VzLm9uQ2hhbmdlKSB7XG4gICAgICB2YXIgb3B0aW9uID0gYXJpYVNlbGVjdGlvbi5vcHRpb24sXG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucyA9IGFyaWFTZWxlY3Rpb24ub3B0aW9ucyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlID0gYXJpYVNlbGVjdGlvbi5yZW1vdmVkVmFsdWUsXG4gICAgICAgIHJlbW92ZWRWYWx1ZXMgPSBhcmlhU2VsZWN0aW9uLnJlbW92ZWRWYWx1ZXMsXG4gICAgICAgIHZhbHVlID0gYXJpYVNlbGVjdGlvbi52YWx1ZTtcbiAgICAgIC8vIHNlbGVjdC1vcHRpb24gd2hlbiAhaXNNdWx0aSBkb2VzIG5vdCByZXR1cm4gb3B0aW9uIHNvIHdlIGFzc3VtZSBzZWxlY3RlZCBvcHRpb24gaXMgdmFsdWVcbiAgICAgIHZhciBhc09wdGlvbiA9IGZ1bmN0aW9uIGFzT3B0aW9uKHZhbCkge1xuICAgICAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsKSA/IHZhbCA6IG51bGw7XG4gICAgICB9O1xuXG4gICAgICAvLyBJZiB0aGVyZSBpcyBqdXN0IG9uZSBpdGVtIGZyb20gdGhlIGFjdGlvbiB0aGVuIGdldCBpdHMgbGFiZWxcbiAgICAgIHZhciBzZWxlY3RlZCA9IHJlbW92ZWRWYWx1ZSB8fCBvcHRpb24gfHwgYXNPcHRpb24odmFsdWUpO1xuICAgICAgdmFyIGxhYmVsID0gc2VsZWN0ZWQgPyBnZXRPcHRpb25MYWJlbChzZWxlY3RlZCkgOiAnJztcblxuICAgICAgLy8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGl0ZW1zIGZyb20gdGhlIGFjdGlvbiB0aGVuIHJldHVybiBhbiBhcnJheSBvZiBsYWJlbHNcbiAgICAgIHZhciBtdWx0aVNlbGVjdGVkID0gc2VsZWN0ZWRPcHRpb25zIHx8IHJlbW92ZWRWYWx1ZXMgfHwgdW5kZWZpbmVkO1xuICAgICAgdmFyIGxhYmVscyA9IG11bHRpU2VsZWN0ZWQgPyBtdWx0aVNlbGVjdGVkLm1hcChnZXRPcHRpb25MYWJlbCkgOiBbXTtcbiAgICAgIHZhciBvbkNoYW5nZVByb3BzID0gX29iamVjdFNwcmVhZCh7XG4gICAgICAgIC8vIG11bHRpU2VsZWN0ZWQgaXRlbXMgYXJlIHVzdWFsbHkgaXRlbXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBzZWxlY3RlZFxuICAgICAgICAvLyBvciBzZXQgYnkgdGhlIHVzZXIgYXMgYSBkZWZhdWx0IHZhbHVlIHNvIHdlIGFzc3VtZSB0aGV5IGFyZSBub3QgZGlzYWJsZWRcbiAgICAgICAgaXNEaXNhYmxlZDogc2VsZWN0ZWQgJiYgaXNPcHRpb25EaXNhYmxlZChzZWxlY3RlZCwgc2VsZWN0VmFsdWUpLFxuICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgIGxhYmVsczogbGFiZWxzXG4gICAgICB9LCBhcmlhU2VsZWN0aW9uKTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlcy5vbkNoYW5nZShvbkNoYW5nZVByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sIFthcmlhU2VsZWN0aW9uLCBtZXNzYWdlcywgaXNPcHRpb25EaXNhYmxlZCwgc2VsZWN0VmFsdWUsIGdldE9wdGlvbkxhYmVsXSk7XG4gIHZhciBhcmlhRm9jdXNlZCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBmb2N1c01zZyA9ICcnO1xuICAgIHZhciBmb2N1c2VkID0gZm9jdXNlZE9wdGlvbiB8fCBmb2N1c2VkVmFsdWU7XG4gICAgdmFyIGlzU2VsZWN0ZWQgPSAhIShmb2N1c2VkT3B0aW9uICYmIHNlbGVjdFZhbHVlICYmIHNlbGVjdFZhbHVlLmluY2x1ZGVzKGZvY3VzZWRPcHRpb24pKTtcbiAgICBpZiAoZm9jdXNlZCAmJiBtZXNzYWdlcy5vbkZvY3VzKSB7XG4gICAgICB2YXIgb25Gb2N1c1Byb3BzID0ge1xuICAgICAgICBmb2N1c2VkOiBmb2N1c2VkLFxuICAgICAgICBsYWJlbDogZ2V0T3B0aW9uTGFiZWwoZm9jdXNlZCksXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzT3B0aW9uRGlzYWJsZWQoZm9jdXNlZCwgc2VsZWN0VmFsdWUpLFxuICAgICAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgICAgICBvcHRpb25zOiBmb2N1c2FibGVPcHRpb25zLFxuICAgICAgICBjb250ZXh0OiBmb2N1c2VkID09PSBmb2N1c2VkT3B0aW9uID8gJ21lbnUnIDogJ3ZhbHVlJyxcbiAgICAgICAgc2VsZWN0VmFsdWU6IHNlbGVjdFZhbHVlLFxuICAgICAgICBpc0FwcGxlRGV2aWNlOiBpc0FwcGxlRGV2aWNlXG4gICAgICB9O1xuICAgICAgZm9jdXNNc2cgPSBtZXNzYWdlcy5vbkZvY3VzKG9uRm9jdXNQcm9wcyk7XG4gICAgfVxuICAgIHJldHVybiBmb2N1c01zZztcbiAgfSwgW2ZvY3VzZWRPcHRpb24sIGZvY3VzZWRWYWx1ZSwgZ2V0T3B0aW9uTGFiZWwsIGlzT3B0aW9uRGlzYWJsZWQsIG1lc3NhZ2VzLCBmb2N1c2FibGVPcHRpb25zLCBzZWxlY3RWYWx1ZSwgaXNBcHBsZURldmljZV0pO1xuICB2YXIgYXJpYVJlc3VsdHMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0c01zZyA9ICcnO1xuICAgIGlmIChtZW51SXNPcGVuICYmIG9wdGlvbnMubGVuZ3RoICYmICFpc0xvYWRpbmcgJiYgbWVzc2FnZXMub25GaWx0ZXIpIHtcbiAgICAgIHZhciByZXN1bHRzTWVzc2FnZSA9IHNjcmVlblJlYWRlclN0YXR1cyh7XG4gICAgICAgIGNvdW50OiBmb2N1c2FibGVPcHRpb25zLmxlbmd0aFxuICAgICAgfSk7XG4gICAgICByZXN1bHRzTXNnID0gbWVzc2FnZXMub25GaWx0ZXIoe1xuICAgICAgICBpbnB1dFZhbHVlOiBpbnB1dFZhbHVlLFxuICAgICAgICByZXN1bHRzTWVzc2FnZTogcmVzdWx0c01lc3NhZ2VcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c01zZztcbiAgfSwgW2ZvY3VzYWJsZU9wdGlvbnMsIGlucHV0VmFsdWUsIG1lbnVJc09wZW4sIG1lc3NhZ2VzLCBvcHRpb25zLCBzY3JlZW5SZWFkZXJTdGF0dXMsIGlzTG9hZGluZ10pO1xuICB2YXIgaXNJbml0aWFsRm9jdXMgPSAoYXJpYVNlbGVjdGlvbiA9PT0gbnVsbCB8fCBhcmlhU2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcmlhU2VsZWN0aW9uLmFjdGlvbikgPT09ICdpbml0aWFsLWlucHV0LWZvY3VzJztcbiAgdmFyIGFyaWFHdWlkYW5jZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBndWlkYW5jZU1zZyA9ICcnO1xuICAgIGlmIChtZXNzYWdlcy5ndWlkYW5jZSkge1xuICAgICAgdmFyIGNvbnRleHQgPSBmb2N1c2VkVmFsdWUgPyAndmFsdWUnIDogbWVudUlzT3BlbiA/ICdtZW51JyA6ICdpbnB1dCc7XG4gICAgICBndWlkYW5jZU1zZyA9IG1lc3NhZ2VzLmd1aWRhbmNlKHtcbiAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGZvY3VzZWRPcHRpb24gJiYgaXNPcHRpb25EaXNhYmxlZChmb2N1c2VkT3B0aW9uLCBzZWxlY3RWYWx1ZSksXG4gICAgICAgIGlzTXVsdGk6IGlzTXVsdGksXG4gICAgICAgIGlzU2VhcmNoYWJsZTogaXNTZWFyY2hhYmxlLFxuICAgICAgICB0YWJTZWxlY3RzVmFsdWU6IHRhYlNlbGVjdHNWYWx1ZSxcbiAgICAgICAgaXNJbml0aWFsRm9jdXM6IGlzSW5pdGlhbEZvY3VzXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGd1aWRhbmNlTXNnO1xuICB9LCBbYXJpYUxhYmVsLCBmb2N1c2VkT3B0aW9uLCBmb2N1c2VkVmFsdWUsIGlzTXVsdGksIGlzT3B0aW9uRGlzYWJsZWQsIGlzU2VhcmNoYWJsZSwgbWVudUlzT3BlbiwgbWVzc2FnZXMsIHNlbGVjdFZhbHVlLCB0YWJTZWxlY3RzVmFsdWUsIGlzSW5pdGlhbEZvY3VzXSk7XG4gIHZhciBTY3JlZW5SZWFkZXJUZXh0ID0gcmVhY3QuanN4KFJlYWN0LkZyYWdtZW50LCBudWxsLCByZWFjdC5qc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLXNlbGVjdGlvblwiXG4gIH0sIGFyaWFTZWxlY3RlZCksIHJlYWN0LmpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtZm9jdXNlZFwiXG4gIH0sIGFyaWFGb2N1c2VkKSwgcmVhY3QuanN4KFwic3BhblwiLCB7XG4gICAgaWQ6IFwiYXJpYS1yZXN1bHRzXCJcbiAgfSwgYXJpYVJlc3VsdHMpLCByZWFjdC5qc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLWd1aWRhbmNlXCJcbiAgfSwgYXJpYUd1aWRhbmNlKSk7XG4gIHJldHVybiByZWFjdC5qc3goUmVhY3QuRnJhZ21lbnQsIG51bGwsIHJlYWN0LmpzeChBMTF5VGV4dCQxLCB7XG4gICAgaWQ6IGlkXG4gIH0sIGlzSW5pdGlhbEZvY3VzICYmIFNjcmVlblJlYWRlclRleHQpLCByZWFjdC5qc3goQTExeVRleHQkMSwge1xuICAgIFwiYXJpYS1saXZlXCI6IGFyaWFMaXZlLFxuICAgIFwiYXJpYS1hdG9taWNcIjogXCJmYWxzZVwiLFxuICAgIFwiYXJpYS1yZWxldmFudFwiOiBcImFkZGl0aW9ucyB0ZXh0XCIsXG4gICAgcm9sZTogXCJsb2dcIlxuICB9LCBpc0ZvY3VzZWQgJiYgIWlzSW5pdGlhbEZvY3VzICYmIFNjcmVlblJlYWRlclRleHQpKTtcbn07XG52YXIgTGl2ZVJlZ2lvbiQxID0gTGl2ZVJlZ2lvbjtcblxudmFyIGRpYWNyaXRpY3MgPSBbe1xuICBiYXNlOiAnQScsXG4gIGxldHRlcnM6IFwiQVxcdTI0QjZcXHVGRjIxXFx4QzBcXHhDMVxceEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxceEMzXFx1MDEwMFxcdTAxMDJcXHUxRUIwXFx1MUVBRVxcdTFFQjRcXHUxRUIyXFx1MDIyNlxcdTAxRTBcXHhDNFxcdTAxREVcXHUxRUEyXFx4QzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiXG59LCB7XG4gIGJhc2U6ICdBQScsXG4gIGxldHRlcnM6IFwiXFx1QTczMlwiXG59LCB7XG4gIGJhc2U6ICdBRScsXG4gIGxldHRlcnM6IFwiXFx4QzZcXHUwMUZDXFx1MDFFMlwiXG59LCB7XG4gIGJhc2U6ICdBTycsXG4gIGxldHRlcnM6IFwiXFx1QTczNFwiXG59LCB7XG4gIGJhc2U6ICdBVScsXG4gIGxldHRlcnM6IFwiXFx1QTczNlwiXG59LCB7XG4gIGJhc2U6ICdBVicsXG4gIGxldHRlcnM6IFwiXFx1QTczOFxcdUE3M0FcIlxufSwge1xuICBiYXNlOiAnQVknLFxuICBsZXR0ZXJzOiBcIlxcdUE3M0NcIlxufSwge1xuICBiYXNlOiAnQicsXG4gIGxldHRlcnM6IFwiQlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODJcXHUwMTgxXCJcbn0sIHtcbiAgYmFzZTogJ0MnLFxuICBsZXR0ZXJzOiBcIkNcXHUyNEI4XFx1RkYyM1xcdTAxMDZcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHhDN1xcdTFFMDhcXHUwMTg3XFx1MDIzQlxcdUE3M0VcIlxufSwge1xuICBiYXNlOiAnRCcsXG4gIGxldHRlcnM6IFwiRFxcdTI0QjlcXHVGRjI0XFx1MUUwQVxcdTAxMEVcXHUxRTBDXFx1MUUxMFxcdTFFMTJcXHUxRTBFXFx1MDExMFxcdTAxOEJcXHUwMThBXFx1MDE4OVxcdUE3NzlcIlxufSwge1xuICBiYXNlOiAnRFonLFxuICBsZXR0ZXJzOiBcIlxcdTAxRjFcXHUwMUM0XCJcbn0sIHtcbiAgYmFzZTogJ0R6JyxcbiAgbGV0dGVyczogXCJcXHUwMUYyXFx1MDFDNVwiXG59LCB7XG4gIGJhc2U6ICdFJyxcbiAgbGV0dGVyczogXCJFXFx1MjRCQVxcdUZGMjVcXHhDOFxceEM5XFx4Q0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx4Q0JcXHUxRUJBXFx1MDExQVxcdTAyMDRcXHUwMjA2XFx1MUVCOFxcdTFFQzZcXHUwMjI4XFx1MUUxQ1xcdTAxMThcXHUxRTE4XFx1MUUxQVxcdTAxOTBcXHUwMThFXCJcbn0sIHtcbiAgYmFzZTogJ0YnLFxuICBsZXR0ZXJzOiBcIkZcXHUyNEJCXFx1RkYyNlxcdTFFMUVcXHUwMTkxXFx1QTc3QlwiXG59LCB7XG4gIGJhc2U6ICdHJyxcbiAgbGV0dGVyczogXCJHXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcIlxufSwge1xuICBiYXNlOiAnSCcsXG4gIGxldHRlcnM6IFwiSFxcdTI0QkRcXHVGRjI4XFx1MDEyNFxcdTFFMjJcXHUxRTI2XFx1MDIxRVxcdTFFMjRcXHUxRTI4XFx1MUUyQVxcdTAxMjZcXHUyQzY3XFx1MkM3NVxcdUE3OERcIlxufSwge1xuICBiYXNlOiAnSScsXG4gIGxldHRlcnM6IFwiSVxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCJcbn0sIHtcbiAgYmFzZTogJ0onLFxuICBsZXR0ZXJzOiBcIkpcXHUyNEJGXFx1RkYyQVxcdTAxMzRcXHUwMjQ4XCJcbn0sIHtcbiAgYmFzZTogJ0snLFxuICBsZXR0ZXJzOiBcIktcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCJcbn0sIHtcbiAgYmFzZTogJ0wnLFxuICBsZXR0ZXJzOiBcIkxcXHUyNEMxXFx1RkYyQ1xcdTAxM0ZcXHUwMTM5XFx1MDEzRFxcdTFFMzZcXHUxRTM4XFx1MDEzQlxcdTFFM0NcXHUxRTNBXFx1MDE0MVxcdTAyM0RcXHUyQzYyXFx1MkM2MFxcdUE3NDhcXHVBNzQ2XFx1QTc4MFwiXG59LCB7XG4gIGJhc2U6ICdMSicsXG4gIGxldHRlcnM6IFwiXFx1MDFDN1wiXG59LCB7XG4gIGJhc2U6ICdMaicsXG4gIGxldHRlcnM6IFwiXFx1MDFDOFwiXG59LCB7XG4gIGJhc2U6ICdNJyxcbiAgbGV0dGVyczogXCJNXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1wiXG59LCB7XG4gIGJhc2U6ICdOJyxcbiAgbGV0dGVyczogXCJOXFx1MjRDM1xcdUZGMkVcXHUwMUY4XFx1MDE0M1xceEQxXFx1MUU0NFxcdTAxNDdcXHUxRTQ2XFx1MDE0NVxcdTFFNEFcXHUxRTQ4XFx1MDIyMFxcdTAxOURcXHVBNzkwXFx1QTdBNFwiXG59LCB7XG4gIGJhc2U6ICdOSicsXG4gIGxldHRlcnM6IFwiXFx1MDFDQVwiXG59LCB7XG4gIGJhc2U6ICdOaicsXG4gIGxldHRlcnM6IFwiXFx1MDFDQlwiXG59LCB7XG4gIGJhc2U6ICdPJyxcbiAgbGV0dGVyczogXCJPXFx1MjRDNFxcdUZGMkZcXHhEMlxceEQzXFx4RDRcXHUxRUQyXFx1MUVEMFxcdTFFRDZcXHUxRUQ0XFx4RDVcXHUxRTRDXFx1MDIyQ1xcdTFFNEVcXHUwMTRDXFx1MUU1MFxcdTFFNTJcXHUwMTRFXFx1MDIyRVxcdTAyMzBcXHhENlxcdTAyMkFcXHUxRUNFXFx1MDE1MFxcdTAxRDFcXHUwMjBDXFx1MDIwRVxcdTAxQTBcXHUxRURDXFx1MUVEQVxcdTFFRTBcXHUxRURFXFx1MUVFMlxcdTFFQ0NcXHUxRUQ4XFx1MDFFQVxcdTAxRUNcXHhEOFxcdTAxRkVcXHUwMTg2XFx1MDE5RlxcdUE3NEFcXHVBNzRDXCJcbn0sIHtcbiAgYmFzZTogJ09JJyxcbiAgbGV0dGVyczogXCJcXHUwMUEyXCJcbn0sIHtcbiAgYmFzZTogJ09PJyxcbiAgbGV0dGVyczogXCJcXHVBNzRFXCJcbn0sIHtcbiAgYmFzZTogJ09VJyxcbiAgbGV0dGVyczogXCJcXHUwMjIyXCJcbn0sIHtcbiAgYmFzZTogJ1AnLFxuICBsZXR0ZXJzOiBcIlBcXHUyNEM1XFx1RkYzMFxcdTFFNTRcXHUxRTU2XFx1MDFBNFxcdTJDNjNcXHVBNzUwXFx1QTc1MlxcdUE3NTRcIlxufSwge1xuICBiYXNlOiAnUScsXG4gIGxldHRlcnM6IFwiUVxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCJcbn0sIHtcbiAgYmFzZTogJ1InLFxuICBsZXR0ZXJzOiBcIlJcXHUyNEM3XFx1RkYzMlxcdTAxNTRcXHUxRTU4XFx1MDE1OFxcdTAyMTBcXHUwMjEyXFx1MUU1QVxcdTFFNUNcXHUwMTU2XFx1MUU1RVxcdTAyNENcXHUyQzY0XFx1QTc1QVxcdUE3QTZcXHVBNzgyXCJcbn0sIHtcbiAgYmFzZTogJ1MnLFxuICBsZXR0ZXJzOiBcIlNcXHUyNEM4XFx1RkYzM1xcdTFFOUVcXHUwMTVBXFx1MUU2NFxcdTAxNUNcXHUxRTYwXFx1MDE2MFxcdTFFNjZcXHUxRTYyXFx1MUU2OFxcdTAyMThcXHUwMTVFXFx1MkM3RVxcdUE3QThcXHVBNzg0XCJcbn0sIHtcbiAgYmFzZTogJ1QnLFxuICBsZXR0ZXJzOiBcIlRcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiXG59LCB7XG4gIGJhc2U6ICdUWicsXG4gIGxldHRlcnM6IFwiXFx1QTcyOFwiXG59LCB7XG4gIGJhc2U6ICdVJyxcbiAgbGV0dGVyczogXCJVXFx1MjRDQVxcdUZGMzVcXHhEOVxceERBXFx4REJcXHUwMTY4XFx1MUU3OFxcdTAxNkFcXHUxRTdBXFx1MDE2Q1xceERDXFx1MDFEQlxcdTAxRDdcXHUwMUQ1XFx1MDFEOVxcdTFFRTZcXHUwMTZFXFx1MDE3MFxcdTAxRDNcXHUwMjE0XFx1MDIxNlxcdTAxQUZcXHUxRUVBXFx1MUVFOFxcdTFFRUVcXHUxRUVDXFx1MUVGMFxcdTFFRTRcXHUxRTcyXFx1MDE3MlxcdTFFNzZcXHUxRTc0XFx1MDI0NFwiXG59LCB7XG4gIGJhc2U6ICdWJyxcbiAgbGV0dGVyczogXCJWXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiXG59LCB7XG4gIGJhc2U6ICdWWScsXG4gIGxldHRlcnM6IFwiXFx1QTc2MFwiXG59LCB7XG4gIGJhc2U6ICdXJyxcbiAgbGV0dGVyczogXCJXXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCJcbn0sIHtcbiAgYmFzZTogJ1gnLFxuICBsZXR0ZXJzOiBcIlhcXHUyNENEXFx1RkYzOFxcdTFFOEFcXHUxRThDXCJcbn0sIHtcbiAgYmFzZTogJ1knLFxuICBsZXR0ZXJzOiBcIllcXHUyNENFXFx1RkYzOVxcdTFFRjJcXHhERFxcdTAxNzZcXHUxRUY4XFx1MDIzMlxcdTFFOEVcXHUwMTc4XFx1MUVGNlxcdTFFRjRcXHUwMUIzXFx1MDI0RVxcdTFFRkVcIlxufSwge1xuICBiYXNlOiAnWicsXG4gIGxldHRlcnM6IFwiWlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIlxufSwge1xuICBiYXNlOiAnYScsXG4gIGxldHRlcnM6IFwiYVxcdTI0RDBcXHVGRjQxXFx1MUU5QVxceEUwXFx4RTFcXHhFMlxcdTFFQTdcXHUxRUE1XFx1MUVBQlxcdTFFQTlcXHhFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx4RTRcXHUwMURGXFx1MUVBM1xceEU1XFx1MDFGQlxcdTAxQ0VcXHUwMjAxXFx1MDIwM1xcdTFFQTFcXHUxRUFEXFx1MUVCN1xcdTFFMDFcXHUwMTA1XFx1MkM2NVxcdTAyNTBcIlxufSwge1xuICBiYXNlOiAnYWEnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzNcIlxufSwge1xuICBiYXNlOiAnYWUnLFxuICBsZXR0ZXJzOiBcIlxceEU2XFx1MDFGRFxcdTAxRTNcIlxufSwge1xuICBiYXNlOiAnYW8nLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzVcIlxufSwge1xuICBiYXNlOiAnYXUnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzdcIlxufSwge1xuICBiYXNlOiAnYXYnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzlcXHVBNzNCXCJcbn0sIHtcbiAgYmFzZTogJ2F5JyxcbiAgbGV0dGVyczogXCJcXHVBNzNEXCJcbn0sIHtcbiAgYmFzZTogJ2InLFxuICBsZXR0ZXJzOiBcImJcXHUyNEQxXFx1RkY0MlxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTAxODBcXHUwMTgzXFx1MDI1M1wiXG59LCB7XG4gIGJhc2U6ICdjJyxcbiAgbGV0dGVyczogXCJjXFx1MjREMlxcdUZGNDNcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx4RTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiXG59LCB7XG4gIGJhc2U6ICdkJyxcbiAgbGV0dGVyczogXCJkXFx1MjREM1xcdUZGNDRcXHUxRTBCXFx1MDEwRlxcdTFFMERcXHUxRTExXFx1MUUxM1xcdTFFMEZcXHUwMTExXFx1MDE4Q1xcdTAyNTZcXHUwMjU3XFx1QTc3QVwiXG59LCB7XG4gIGJhc2U6ICdkeicsXG4gIGxldHRlcnM6IFwiXFx1MDFGM1xcdTAxQzZcIlxufSwge1xuICBiYXNlOiAnZScsXG4gIGxldHRlcnM6IFwiZVxcdTI0RDRcXHVGRjQ1XFx4RThcXHhFOVxceEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xceEVCXFx1MUVCQlxcdTAxMUJcXHUwMjA1XFx1MDIwN1xcdTFFQjlcXHUxRUM3XFx1MDIyOVxcdTFFMURcXHUwMTE5XFx1MUUxOVxcdTFFMUJcXHUwMjQ3XFx1MDI1QlxcdTAxRERcIlxufSwge1xuICBiYXNlOiAnZicsXG4gIGxldHRlcnM6IFwiZlxcdTI0RDVcXHVGRjQ2XFx1MUUxRlxcdTAxOTJcXHVBNzdDXCJcbn0sIHtcbiAgYmFzZTogJ2cnLFxuICBsZXR0ZXJzOiBcImdcXHUyNEQ2XFx1RkY0N1xcdTAxRjVcXHUwMTFEXFx1MUUyMVxcdTAxMUZcXHUwMTIxXFx1MDFFN1xcdTAxMjNcXHUwMUU1XFx1MDI2MFxcdUE3QTFcXHUxRDc5XFx1QTc3RlwiXG59LCB7XG4gIGJhc2U6ICdoJyxcbiAgbGV0dGVyczogXCJoXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIlxufSwge1xuICBiYXNlOiAnaHYnLFxuICBsZXR0ZXJzOiBcIlxcdTAxOTVcIlxufSwge1xuICBiYXNlOiAnaScsXG4gIGxldHRlcnM6IFwiaVxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCJcbn0sIHtcbiAgYmFzZTogJ2onLFxuICBsZXR0ZXJzOiBcImpcXHUyNEQ5XFx1RkY0QVxcdTAxMzVcXHUwMUYwXFx1MDI0OVwiXG59LCB7XG4gIGJhc2U6ICdrJyxcbiAgbGV0dGVyczogXCJrXFx1MjREQVxcdUZGNEJcXHUxRTMxXFx1MDFFOVxcdTFFMzNcXHUwMTM3XFx1MUUzNVxcdTAxOTlcXHUyQzZBXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTdBM1wiXG59LCB7XG4gIGJhc2U6ICdsJyxcbiAgbGV0dGVyczogXCJsXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XCJcbn0sIHtcbiAgYmFzZTogJ2xqJyxcbiAgbGV0dGVyczogXCJcXHUwMUM5XCJcbn0sIHtcbiAgYmFzZTogJ20nLFxuICBsZXR0ZXJzOiBcIm1cXHUyNERDXFx1RkY0RFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTAyNzFcXHUwMjZGXCJcbn0sIHtcbiAgYmFzZTogJ24nLFxuICBsZXR0ZXJzOiBcIm5cXHUyNEREXFx1RkY0RVxcdTAxRjlcXHUwMTQ0XFx4RjFcXHUxRTQ1XFx1MDE0OFxcdTFFNDdcXHUwMTQ2XFx1MUU0QlxcdTFFNDlcXHUwMTlFXFx1MDI3MlxcdTAxNDlcXHVBNzkxXFx1QTdBNVwiXG59LCB7XG4gIGJhc2U6ICduaicsXG4gIGxldHRlcnM6IFwiXFx1MDFDQ1wiXG59LCB7XG4gIGJhc2U6ICdvJyxcbiAgbGV0dGVyczogXCJvXFx1MjRERVxcdUZGNEZcXHhGMlxceEYzXFx4RjRcXHUxRUQzXFx1MUVEMVxcdTFFRDdcXHUxRUQ1XFx4RjVcXHUxRTREXFx1MDIyRFxcdTFFNEZcXHUwMTREXFx1MUU1MVxcdTFFNTNcXHUwMTRGXFx1MDIyRlxcdTAyMzFcXHhGNlxcdTAyMkJcXHUxRUNGXFx1MDE1MVxcdTAxRDJcXHUwMjBEXFx1MDIwRlxcdTAxQTFcXHUxRUREXFx1MUVEQlxcdTFFRTFcXHUxRURGXFx1MUVFM1xcdTFFQ0RcXHUxRUQ5XFx1MDFFQlxcdTAxRURcXHhGOFxcdTAxRkZcXHUwMjU0XFx1QTc0QlxcdUE3NERcXHUwMjc1XCJcbn0sIHtcbiAgYmFzZTogJ29pJyxcbiAgbGV0dGVyczogXCJcXHUwMUEzXCJcbn0sIHtcbiAgYmFzZTogJ291JyxcbiAgbGV0dGVyczogXCJcXHUwMjIzXCJcbn0sIHtcbiAgYmFzZTogJ29vJyxcbiAgbGV0dGVyczogXCJcXHVBNzRGXCJcbn0sIHtcbiAgYmFzZTogJ3AnLFxuICBsZXR0ZXJzOiBcInBcXHUyNERGXFx1RkY1MFxcdTFFNTVcXHUxRTU3XFx1MDFBNVxcdTFEN0RcXHVBNzUxXFx1QTc1M1xcdUE3NTVcIlxufSwge1xuICBiYXNlOiAncScsXG4gIGxldHRlcnM6IFwicVxcdTI0RTBcXHVGRjUxXFx1MDI0QlxcdUE3NTdcXHVBNzU5XCJcbn0sIHtcbiAgYmFzZTogJ3InLFxuICBsZXR0ZXJzOiBcInJcXHUyNEUxXFx1RkY1MlxcdTAxNTVcXHUxRTU5XFx1MDE1OVxcdTAyMTFcXHUwMjEzXFx1MUU1QlxcdTFFNURcXHUwMTU3XFx1MUU1RlxcdTAyNERcXHUwMjdEXFx1QTc1QlxcdUE3QTdcXHVBNzgzXCJcbn0sIHtcbiAgYmFzZTogJ3MnLFxuICBsZXR0ZXJzOiBcInNcXHUyNEUyXFx1RkY1M1xceERGXFx1MDE1QlxcdTFFNjVcXHUwMTVEXFx1MUU2MVxcdTAxNjFcXHUxRTY3XFx1MUU2M1xcdTFFNjlcXHUwMjE5XFx1MDE1RlxcdTAyM0ZcXHVBN0E5XFx1QTc4NVxcdTFFOUJcIlxufSwge1xuICBiYXNlOiAndCcsXG4gIGxldHRlcnM6IFwidFxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiXG59LCB7XG4gIGJhc2U6ICd0eicsXG4gIGxldHRlcnM6IFwiXFx1QTcyOVwiXG59LCB7XG4gIGJhc2U6ICd1JyxcbiAgbGV0dGVyczogXCJ1XFx1MjRFNFxcdUZGNTVcXHhGOVxceEZBXFx4RkJcXHUwMTY5XFx1MUU3OVxcdTAxNkJcXHUxRTdCXFx1MDE2RFxceEZDXFx1MDFEQ1xcdTAxRDhcXHUwMUQ2XFx1MDFEQVxcdTFFRTdcXHUwMTZGXFx1MDE3MVxcdTAxRDRcXHUwMjE1XFx1MDIxN1xcdTAxQjBcXHUxRUVCXFx1MUVFOVxcdTFFRUZcXHUxRUVEXFx1MUVGMVxcdTFFRTVcXHUxRTczXFx1MDE3M1xcdTFFNzdcXHUxRTc1XFx1MDI4OVwiXG59LCB7XG4gIGJhc2U6ICd2JyxcbiAgbGV0dGVyczogXCJ2XFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiXG59LCB7XG4gIGJhc2U6ICd2eScsXG4gIGxldHRlcnM6IFwiXFx1QTc2MVwiXG59LCB7XG4gIGJhc2U6ICd3JyxcbiAgbGV0dGVyczogXCJ3XFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiXG59LCB7XG4gIGJhc2U6ICd4JyxcbiAgbGV0dGVyczogXCJ4XFx1MjRFN1xcdUZGNThcXHUxRThCXFx1MUU4RFwiXG59LCB7XG4gIGJhc2U6ICd5JyxcbiAgbGV0dGVyczogXCJ5XFx1MjRFOFxcdUZGNTlcXHUxRUYzXFx4RkRcXHUwMTc3XFx1MUVGOVxcdTAyMzNcXHUxRThGXFx4RkZcXHUxRUY3XFx1MUU5OVxcdTFFRjVcXHUwMUI0XFx1MDI0RlxcdTFFRkZcIlxufSwge1xuICBiYXNlOiAneicsXG4gIGxldHRlcnM6IFwielxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIlxufV07XG52YXIgYW55RGlhY3JpdGljID0gbmV3IFJlZ0V4cCgnWycgKyBkaWFjcml0aWNzLm1hcChmdW5jdGlvbiAoZCkge1xuICByZXR1cm4gZC5sZXR0ZXJzO1xufSkuam9pbignJykgKyAnXScsICdnJyk7XG52YXIgZGlhY3JpdGljVG9CYXNlID0ge307XG5mb3IgKHZhciBpID0gMDsgaSA8IGRpYWNyaXRpY3MubGVuZ3RoOyBpKyspIHtcbiAgdmFyIGRpYWNyaXRpYyA9IGRpYWNyaXRpY3NbaV07XG4gIGZvciAodmFyIGogPSAwOyBqIDwgZGlhY3JpdGljLmxldHRlcnMubGVuZ3RoOyBqKyspIHtcbiAgICBkaWFjcml0aWNUb0Jhc2VbZGlhY3JpdGljLmxldHRlcnNbal1dID0gZGlhY3JpdGljLmJhc2U7XG4gIH1cbn1cbnZhciBzdHJpcERpYWNyaXRpY3MgPSBmdW5jdGlvbiBzdHJpcERpYWNyaXRpY3Moc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShhbnlEaWFjcml0aWMsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBkaWFjcml0aWNUb0Jhc2VbbWF0Y2hdO1xuICB9KTtcbn07XG5cbnZhciBtZW1vaXplZFN0cmlwRGlhY3JpdGljc0ZvcklucHV0ID0gbWVtb2l6ZU9uZV9fZGVmYXVsdFtcImRlZmF1bHRcIl0oc3RyaXBEaWFjcml0aWNzKTtcbnZhciB0cmltU3RyaW5nID0gZnVuY3Rpb24gdHJpbVN0cmluZyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJyk7XG59O1xudmFyIGRlZmF1bHRTdHJpbmdpZnkgPSBmdW5jdGlvbiBkZWZhdWx0U3RyaW5naWZ5KG9wdGlvbikge1xuICByZXR1cm4gXCJcIi5jb25jYXQob3B0aW9uLmxhYmVsLCBcIiBcIikuY29uY2F0KG9wdGlvbi52YWx1ZSk7XG59O1xudmFyIGNyZWF0ZUZpbHRlciA9IGZ1bmN0aW9uIGNyZWF0ZUZpbHRlcihjb25maWcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb24sIHJhd0lucHV0KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgaWYgKG9wdGlvbi5kYXRhLl9faXNOZXdfXykgcmV0dXJuIHRydWU7XG4gICAgdmFyIF9pZ25vcmVDYXNlJGlnbm9yZUFjYyA9IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBpZ25vcmVDYXNlOiB0cnVlLFxuICAgICAgICBpZ25vcmVBY2NlbnRzOiB0cnVlLFxuICAgICAgICBzdHJpbmdpZnk6IGRlZmF1bHRTdHJpbmdpZnksXG4gICAgICAgIHRyaW06IHRydWUsXG4gICAgICAgIG1hdGNoRnJvbTogJ2FueSdcbiAgICAgIH0sIGNvbmZpZyksXG4gICAgICBpZ25vcmVDYXNlID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLmlnbm9yZUNhc2UsXG4gICAgICBpZ25vcmVBY2NlbnRzID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLmlnbm9yZUFjY2VudHMsXG4gICAgICBzdHJpbmdpZnkgPSBfaWdub3JlQ2FzZSRpZ25vcmVBY2Muc3RyaW5naWZ5LFxuICAgICAgdHJpbSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy50cmltLFxuICAgICAgbWF0Y2hGcm9tID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLm1hdGNoRnJvbTtcbiAgICB2YXIgaW5wdXQgPSB0cmltID8gdHJpbVN0cmluZyhyYXdJbnB1dCkgOiByYXdJbnB1dDtcbiAgICB2YXIgY2FuZGlkYXRlID0gdHJpbSA/IHRyaW1TdHJpbmcoc3RyaW5naWZ5KG9wdGlvbikpIDogc3RyaW5naWZ5KG9wdGlvbik7XG4gICAgaWYgKGlnbm9yZUNhc2UpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAoaWdub3JlQWNjZW50cykge1xuICAgICAgaW5wdXQgPSBtZW1vaXplZFN0cmlwRGlhY3JpdGljc0ZvcklucHV0KGlucHV0KTtcbiAgICAgIGNhbmRpZGF0ZSA9IHN0cmlwRGlhY3JpdGljcyhjYW5kaWRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hGcm9tID09PSAnc3RhcnQnID8gY2FuZGlkYXRlLnN1YnN0cigwLCBpbnB1dC5sZW5ndGgpID09PSBpbnB1dCA6IGNhbmRpZGF0ZS5pbmRleE9mKGlucHV0KSA+IC0xO1xuICB9O1xufTtcblxudmFyIF9leGNsdWRlZCA9IFtcImlubmVyUmVmXCJdO1xuZnVuY3Rpb24gRHVtbXlJbnB1dChfcmVmKSB7XG4gIHZhciBpbm5lclJlZiA9IF9yZWYuaW5uZXJSZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgLy8gUmVtb3ZlIGFuaW1hdGlvbiBwcm9wcyBub3QgbWVhbnQgZm9yIEhUTUwgZWxlbWVudHNcbiAgdmFyIGZpbHRlcmVkUHJvcHMgPSBpbmRleC5yZW1vdmVQcm9wcyhwcm9wcywgJ29uRXhpdGVkJywgJ2luJywgJ2VudGVyJywgJ2V4aXQnLCAnYXBwZWFyJyk7XG4gIHJldHVybiByZWFjdC5qc3goXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBmaWx0ZXJlZFByb3BzLCB7XG4gICAgY3NzOiAvKiNfX1BVUkVfXyovcmVhY3QuY3NzKHtcbiAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgYmFja2dyb3VuZDogMCxcbiAgICAgIGJvcmRlcjogMCxcbiAgICAgIC8vIGltcG9ydGFudCEgdGhpcyBoaWRlcyB0aGUgZmxhc2hpbmcgY3Vyc29yXG4gICAgICBjYXJldENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMycsXG4gICAgICBvdXRsaW5lOiAwLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICB3aWR0aDogMSxcbiAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICBsZWZ0OiAtMTAwLFxuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoLjAxKSdcbiAgICB9LCBcIlwiICwgXCJcIiApXG4gIH0pKTtcbn1cblxudmFyIGNhbmNlbFNjcm9sbCA9IGZ1bmN0aW9uIGNhbmNlbFNjcm9sbChldmVudCkge1xuICBpZiAoZXZlbnQuY2FuY2VsYWJsZSkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG59O1xuZnVuY3Rpb24gdXNlU2Nyb2xsQ2FwdHVyZShfcmVmKSB7XG4gIHZhciBpc0VuYWJsZWQgPSBfcmVmLmlzRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSA9IF9yZWYub25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZSA9IF9yZWYub25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZSA9IF9yZWYub25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZSA9IF9yZWYub25Ub3BMZWF2ZTtcbiAgdmFyIGlzQm90dG9tID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgdmFyIGlzVG9wID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgdmFyIHRvdWNoU3RhcnQgPSBSZWFjdC51c2VSZWYoMCk7XG4gIHZhciBzY3JvbGxUYXJnZXQgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHZhciBoYW5kbGVFdmVudERlbHRhID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50LCBkZWx0YSkge1xuICAgIGlmIChzY3JvbGxUYXJnZXQuY3VycmVudCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIHZhciBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQgPSBzY3JvbGxUYXJnZXQuY3VycmVudCxcbiAgICAgIHNjcm9sbFRvcCA9IF9zY3JvbGxUYXJnZXQkY3VycmVudC5zY3JvbGxUb3AsXG4gICAgICBzY3JvbGxIZWlnaHQgPSBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgY2xpZW50SGVpZ2h0ID0gX3Njcm9sbFRhcmdldCRjdXJyZW50LmNsaWVudEhlaWdodDtcbiAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsVGFyZ2V0LmN1cnJlbnQ7XG4gICAgdmFyIGlzRGVsdGFQb3NpdGl2ZSA9IGRlbHRhID4gMDtcbiAgICB2YXIgYXZhaWxhYmxlU2Nyb2xsID0gc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0IC0gc2Nyb2xsVG9wO1xuICAgIHZhciBzaG91bGRDYW5jZWxTY3JvbGwgPSBmYWxzZTtcblxuICAgIC8vIHJlc2V0IGJvdHRvbS90b3AgZmxhZ3NcbiAgICBpZiAoYXZhaWxhYmxlU2Nyb2xsID4gZGVsdGEgJiYgaXNCb3R0b20uY3VycmVudCkge1xuICAgICAgaWYgKG9uQm90dG9tTGVhdmUpIG9uQm90dG9tTGVhdmUoZXZlbnQpO1xuICAgICAgaXNCb3R0b20uY3VycmVudCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXNEZWx0YVBvc2l0aXZlICYmIGlzVG9wLmN1cnJlbnQpIHtcbiAgICAgIGlmIChvblRvcExlYXZlKSBvblRvcExlYXZlKGV2ZW50KTtcbiAgICAgIGlzVG9wLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBib3R0b20gbGltaXRcbiAgICBpZiAoaXNEZWx0YVBvc2l0aXZlICYmIGRlbHRhID4gYXZhaWxhYmxlU2Nyb2xsKSB7XG4gICAgICBpZiAob25Cb3R0b21BcnJpdmUgJiYgIWlzQm90dG9tLmN1cnJlbnQpIHtcbiAgICAgICAgb25Cb3R0b21BcnJpdmUoZXZlbnQpO1xuICAgICAgfVxuICAgICAgdGFyZ2V0LnNjcm9sbFRvcCA9IHNjcm9sbEhlaWdodDtcbiAgICAgIHNob3VsZENhbmNlbFNjcm9sbCA9IHRydWU7XG4gICAgICBpc0JvdHRvbS5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgLy8gdG9wIGxpbWl0XG4gICAgfSBlbHNlIGlmICghaXNEZWx0YVBvc2l0aXZlICYmIC1kZWx0YSA+IHNjcm9sbFRvcCkge1xuICAgICAgaWYgKG9uVG9wQXJyaXZlICYmICFpc1RvcC5jdXJyZW50KSB7XG4gICAgICAgIG9uVG9wQXJyaXZlKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIHRhcmdldC5zY3JvbGxUb3AgPSAwO1xuICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIGlzVG9wLmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIGNhbmNlbCBzY3JvbGxcbiAgICBpZiAoc2hvdWxkQ2FuY2VsU2Nyb2xsKSB7XG4gICAgICBjYW5jZWxTY3JvbGwoZXZlbnQpO1xuICAgIH1cbiAgfSwgW29uQm90dG9tQXJyaXZlLCBvbkJvdHRvbUxlYXZlLCBvblRvcEFycml2ZSwgb25Ub3BMZWF2ZV0pO1xuICB2YXIgb25XaGVlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgIGhhbmRsZUV2ZW50RGVsdGEoZXZlbnQsIGV2ZW50LmRlbHRhWSk7XG4gIH0sIFtoYW5kbGVFdmVudERlbHRhXSk7XG4gIHZhciBvblRvdWNoU3RhcnQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBzZXQgdG91Y2ggc3RhcnQgc28gd2UgY2FuIGNhbGN1bGF0ZSB0b3VjaG1vdmUgZGVsdGFcbiAgICB0b3VjaFN0YXJ0LmN1cnJlbnQgPSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZO1xuICB9LCBbXSk7XG4gIHZhciBvblRvdWNoTW92ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciBkZWx0YVkgPSB0b3VjaFN0YXJ0LmN1cnJlbnQgLSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZO1xuICAgIGhhbmRsZUV2ZW50RGVsdGEoZXZlbnQsIGRlbHRhWSk7XG4gIH0sIFtoYW5kbGVFdmVudERlbHRhXSk7XG4gIHZhciBzdGFydExpc3RlbmluZyA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlbCkge1xuICAgIC8vIGJhaWwgZWFybHkgaWYgbm8gZWxlbWVudCBpcyBhdmFpbGFibGUgdG8gYXR0YWNoIHRvXG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIHZhciBub3RQYXNzaXZlID0gaW5kZXguc3VwcG9ydHNQYXNzaXZlRXZlbnRzID8ge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9IDogZmFsc2U7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvbldoZWVsLCBub3RQYXNzaXZlKTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBub3RQYXNzaXZlKTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgbm90UGFzc2l2ZSk7XG4gIH0sIFtvblRvdWNoTW92ZSwgb25Ub3VjaFN0YXJ0LCBvbldoZWVsXSk7XG4gIHZhciBzdG9wTGlzdGVuaW5nID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGVsKSB7XG4gICAgLy8gYmFpbCBlYXJseSBpZiBubyBlbGVtZW50IGlzIGF2YWlsYWJsZSB0byBkZXRhY2ggZnJvbVxuICAgIGlmICghZWwpIHJldHVybjtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwsIGZhbHNlKTtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBmYWxzZSk7XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUsIGZhbHNlKTtcbiAgfSwgW29uVG91Y2hNb3ZlLCBvblRvdWNoU3RhcnQsIG9uV2hlZWxdKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWlzRW5hYmxlZCkgcmV0dXJuO1xuICAgIHZhciBlbGVtZW50ID0gc2Nyb2xsVGFyZ2V0LmN1cnJlbnQ7XG4gICAgc3RhcnRMaXN0ZW5pbmcoZWxlbWVudCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0b3BMaXN0ZW5pbmcoZWxlbWVudCk7XG4gICAgfTtcbiAgfSwgW2lzRW5hYmxlZCwgc3RhcnRMaXN0ZW5pbmcsIHN0b3BMaXN0ZW5pbmddKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgc2Nyb2xsVGFyZ2V0LmN1cnJlbnQgPSBlbGVtZW50O1xuICB9O1xufVxuXG52YXIgU1RZTEVfS0VZUyA9IFsnYm94U2l6aW5nJywgJ2hlaWdodCcsICdvdmVyZmxvdycsICdwYWRkaW5nUmlnaHQnLCAncG9zaXRpb24nXTtcbnZhciBMT0NLX1NUWUxFUyA9IHtcbiAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gIC8vIGFjY291bnQgZm9yIHBvc3NpYmxlIGRlY2xhcmF0aW9uIGB3aWR0aDogMTAwJTtgIG9uIGJvZHlcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgaGVpZ2h0OiAnMTAwJSdcbn07XG5mdW5jdGlvbiBwcmV2ZW50VG91Y2hNb3ZlKGUpIHtcbiAgaWYgKGUuY2FuY2VsYWJsZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xufVxuZnVuY3Rpb24gYWxsb3dUb3VjaE1vdmUoZSkge1xuICBlLnN0b3BQcm9wYWdhdGlvbigpO1xufVxuZnVuY3Rpb24gcHJldmVudEluZXJ0aWFTY3JvbGwoKSB7XG4gIHZhciB0b3AgPSB0aGlzLnNjcm9sbFRvcDtcbiAgdmFyIHRvdGFsU2Nyb2xsID0gdGhpcy5zY3JvbGxIZWlnaHQ7XG4gIHZhciBjdXJyZW50U2Nyb2xsID0gdG9wICsgdGhpcy5vZmZzZXRIZWlnaHQ7XG4gIGlmICh0b3AgPT09IDApIHtcbiAgICB0aGlzLnNjcm9sbFRvcCA9IDE7XG4gIH0gZWxzZSBpZiAoY3VycmVudFNjcm9sbCA9PT0gdG90YWxTY3JvbGwpIHtcbiAgICB0aGlzLnNjcm9sbFRvcCA9IHRvcCAtIDE7XG4gIH1cbn1cblxuLy8gYG9udG91Y2hzdGFydGAgY2hlY2sgd29ya3Mgb24gbW9zdCBicm93c2Vyc1xuLy8gYG1heFRvdWNoUG9pbnRzYCB3b3JrcyBvbiBJRTEwLzExIGFuZCBTdXJmYWNlXG5mdW5jdGlvbiBpc1RvdWNoRGV2aWNlKCkge1xuICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cztcbn1cbnZhciBjYW5Vc2VET00gPSAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xudmFyIGFjdGl2ZVNjcm9sbExvY2tzID0gMDtcbnZhciBsaXN0ZW5lck9wdGlvbnMgPSB7XG4gIGNhcHR1cmU6IGZhbHNlLFxuICBwYXNzaXZlOiBmYWxzZVxufTtcbmZ1bmN0aW9uIHVzZVNjcm9sbExvY2soX3JlZikge1xuICB2YXIgaXNFbmFibGVkID0gX3JlZi5pc0VuYWJsZWQsXG4gICAgX3JlZiRhY2NvdW50Rm9yU2Nyb2xsID0gX3JlZi5hY2NvdW50Rm9yU2Nyb2xsYmFycyxcbiAgICBhY2NvdW50Rm9yU2Nyb2xsYmFycyA9IF9yZWYkYWNjb3VudEZvclNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkYWNjb3VudEZvclNjcm9sbDtcbiAgdmFyIG9yaWdpbmFsU3R5bGVzID0gUmVhY3QudXNlUmVmKHt9KTtcbiAgdmFyIHNjcm9sbFRhcmdldCA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgdmFyIGFkZFNjcm9sbExvY2sgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAodG91Y2hTY3JvbGxUYXJnZXQpIHtcbiAgICBpZiAoIWNhblVzZURPTSkgcmV0dXJuO1xuICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5ib2R5O1xuICAgIHZhciB0YXJnZXRTdHlsZSA9IHRhcmdldCAmJiB0YXJnZXQuc3R5bGU7XG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzKSB7XG4gICAgICAvLyBzdG9yZSBhbnkgc3R5bGVzIGFscmVhZHkgYXBwbGllZCB0byB0aGUgYm9keVxuICAgICAgU1RZTEVfS0VZUy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IHRhcmdldFN0eWxlICYmIHRhcmdldFN0eWxlW2tleV07XG4gICAgICAgIG9yaWdpbmFsU3R5bGVzLmN1cnJlbnRba2V5XSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGFwcGx5IHRoZSBsb2NrIHN0eWxlcyBhbmQgcGFkZGluZyBpZiB0aGlzIGlzIHRoZSBmaXJzdCBzY3JvbGwgbG9ja1xuICAgIGlmIChhY2NvdW50Rm9yU2Nyb2xsYmFycyAmJiBhY3RpdmVTY3JvbGxMb2NrcyA8IDEpIHtcbiAgICAgIHZhciBjdXJyZW50UGFkZGluZyA9IHBhcnNlSW50KG9yaWdpbmFsU3R5bGVzLmN1cnJlbnQucGFkZGluZ1JpZ2h0LCAxMCkgfHwgMDtcbiAgICAgIHZhciBjbGllbnRXaWR0aCA9IGRvY3VtZW50LmJvZHkgPyBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDogMDtcbiAgICAgIHZhciBhZGp1c3RlZFBhZGRpbmcgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGNsaWVudFdpZHRoICsgY3VycmVudFBhZGRpbmcgfHwgMDtcbiAgICAgIE9iamVjdC5rZXlzKExPQ0tfU1RZTEVTKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IExPQ0tfU1RZTEVTW2tleV07XG4gICAgICAgIGlmICh0YXJnZXRTdHlsZSkge1xuICAgICAgICAgIHRhcmdldFN0eWxlW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgIHRhcmdldFN0eWxlLnBhZGRpbmdSaWdodCA9IFwiXCIuY29uY2F0KGFkanVzdGVkUGFkZGluZywgXCJweFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhY2NvdW50IGZvciB0b3VjaCBkZXZpY2VzXG4gICAgaWYgKHRhcmdldCAmJiBpc1RvdWNoRGV2aWNlKCkpIHtcbiAgICAgIC8vIE1vYmlsZSBTYWZhcmkgaWdub3JlcyB7IG92ZXJmbG93OiBoaWRkZW4gfSBkZWNsYXJhdGlvbiBvbiB0aGUgYm9keS5cbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBwcmV2ZW50VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuXG4gICAgICAvLyBBbGxvdyBzY3JvbGwgb24gcHJvdmlkZWQgdGFyZ2V0XG4gICAgICBpZiAodG91Y2hTY3JvbGxUYXJnZXQpIHtcbiAgICAgICAgdG91Y2hTY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHByZXZlbnRJbmVydGlhU2Nyb2xsLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBhbGxvd1RvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpbmNyZW1lbnQgYWN0aXZlIHNjcm9sbCBsb2Nrc1xuICAgIGFjdGl2ZVNjcm9sbExvY2tzICs9IDE7XG4gIH0sIFthY2NvdW50Rm9yU2Nyb2xsYmFyc10pO1xuICB2YXIgcmVtb3ZlU2Nyb2xsTG9jayA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgIGlmICghY2FuVXNlRE9NKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmJvZHk7XG4gICAgdmFyIHRhcmdldFN0eWxlID0gdGFyZ2V0ICYmIHRhcmdldC5zdHlsZTtcblxuICAgIC8vIHNhZmVseSBkZWNyZW1lbnQgYWN0aXZlIHNjcm9sbCBsb2Nrc1xuICAgIGFjdGl2ZVNjcm9sbExvY2tzID0gTWF0aC5tYXgoYWN0aXZlU2Nyb2xsTG9ja3MgLSAxLCAwKTtcblxuICAgIC8vIHJlYXBwbHkgb3JpZ2luYWwgYm9keSBzdHlsZXMsIGlmIGFueVxuICAgIGlmIChhY2NvdW50Rm9yU2Nyb2xsYmFycyAmJiBhY3RpdmVTY3JvbGxMb2NrcyA8IDEpIHtcbiAgICAgIFNUWUxFX0tFWVMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWwgPSBvcmlnaW5hbFN0eWxlcy5jdXJyZW50W2tleV07XG4gICAgICAgIGlmICh0YXJnZXRTdHlsZSkge1xuICAgICAgICAgIHRhcmdldFN0eWxlW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSB0b3VjaCBsaXN0ZW5lcnNcbiAgICBpZiAodGFyZ2V0ICYmIGlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnRUb3VjaE1vdmUsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICBpZiAodG91Y2hTY3JvbGxUYXJnZXQpIHtcbiAgICAgICAgdG91Y2hTY3JvbGxUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHByZXZlbnRJbmVydGlhU2Nyb2xsLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBhbGxvd1RvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFthY2NvdW50Rm9yU2Nyb2xsYmFyc10pO1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm47XG4gICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICBhZGRTY3JvbGxMb2NrKGVsZW1lbnQpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZW1vdmVTY3JvbGxMb2NrKGVsZW1lbnQpO1xuICAgIH07XG4gIH0sIFtpc0VuYWJsZWQsIGFkZFNjcm9sbExvY2ssIHJlbW92ZVNjcm9sbExvY2tdKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgc2Nyb2xsVGFyZ2V0LmN1cnJlbnQgPSBlbGVtZW50O1xuICB9O1xufVxuXG52YXIgYmx1clNlbGVjdElucHV0ID0gZnVuY3Rpb24gYmx1clNlbGVjdElucHV0KGV2ZW50KSB7XG4gIHZhciBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICByZXR1cm4gZWxlbWVudC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgZWxlbWVudC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xufTtcbnZhciBfcmVmMiQxID0ge1xuICBuYW1lOiBcIjFrZmRiMGVcIixcbiAgc3R5bGVzOiBcInBvc2l0aW9uOmZpeGVkO2xlZnQ6MDtib3R0b206MDtyaWdodDowO3RvcDowXCJcbn0gO1xuZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcihfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgbG9ja0VuYWJsZWQgPSBfcmVmLmxvY2tFbmFibGVkLFxuICAgIF9yZWYkY2FwdHVyZUVuYWJsZWQgPSBfcmVmLmNhcHR1cmVFbmFibGVkLFxuICAgIGNhcHR1cmVFbmFibGVkID0gX3JlZiRjYXB0dXJlRW5hYmxlZCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkY2FwdHVyZUVuYWJsZWQsXG4gICAgb25Cb3R0b21BcnJpdmUgPSBfcmVmLm9uQm90dG9tQXJyaXZlLFxuICAgIG9uQm90dG9tTGVhdmUgPSBfcmVmLm9uQm90dG9tTGVhdmUsXG4gICAgb25Ub3BBcnJpdmUgPSBfcmVmLm9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUgPSBfcmVmLm9uVG9wTGVhdmU7XG4gIHZhciBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZTogb25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZTogb25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZTogb25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZTogb25Ub3BMZWF2ZVxuICB9KTtcbiAgdmFyIHNldFNjcm9sbExvY2tUYXJnZXQgPSB1c2VTY3JvbGxMb2NrKHtcbiAgICBpc0VuYWJsZWQ6IGxvY2tFbmFibGVkXG4gIH0pO1xuICB2YXIgdGFyZ2V0UmVmID0gZnVuY3Rpb24gdGFyZ2V0UmVmKGVsZW1lbnQpIHtcbiAgICBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0KGVsZW1lbnQpO1xuICAgIHNldFNjcm9sbExvY2tUYXJnZXQoZWxlbWVudCk7XG4gIH07XG4gIHJldHVybiByZWFjdC5qc3goUmVhY3QuRnJhZ21lbnQsIG51bGwsIGxvY2tFbmFibGVkICYmIHJlYWN0LmpzeChcImRpdlwiLCB7XG4gICAgb25DbGljazogYmx1clNlbGVjdElucHV0LFxuICAgIGNzczogX3JlZjIkMVxuICB9KSwgY2hpbGRyZW4odGFyZ2V0UmVmKSk7XG59XG5cbnZhciBfcmVmMiA9IHtcbiAgbmFtZTogXCIxYTBybzRuLXJlcXVpcmVkSW5wdXRcIixcbiAgc3R5bGVzOiBcImxhYmVsOnJlcXVpcmVkSW5wdXQ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7d2lkdGg6MTAwJVwiXG59IDtcbnZhciBSZXF1aXJlZElucHV0ID0gZnVuY3Rpb24gUmVxdWlyZWRJbnB1dChfcmVmKSB7XG4gIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgIG9uRm9jdXMgPSBfcmVmLm9uRm9jdXM7XG4gIHJldHVybiByZWFjdC5qc3goXCJpbnB1dFwiLCB7XG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgbmFtZTogbmFtZSxcbiAgICB0YWJJbmRleDogLTEsXG4gICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIixcbiAgICBvbkZvY3VzOiBvbkZvY3VzLFxuICAgIGNzczogX3JlZjJcbiAgICAvLyBQcmV2ZW50IGBTd2l0Y2hpbmcgZnJvbSB1bmNvbnRyb2xsZWQgdG8gY29udHJvbGxlZGAgZXJyb3JcbiAgICAsXG4gICAgdmFsdWU6IFwiXCIsXG4gICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge31cbiAgfSk7XG59O1xudmFyIFJlcXVpcmVkSW5wdXQkMSA9IFJlcXVpcmVkSW5wdXQ7XG5cbi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidXNlci1hZ2VudC1kYXRhLXR5cGVzXCIgLz5cblxuZnVuY3Rpb24gdGVzdFBsYXRmb3JtKHJlKSB7XG4gIHZhciBfd2luZG93JG5hdmlnYXRvciR1c2U7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubmF2aWdhdG9yICE9IG51bGwgPyByZS50ZXN0KCgoX3dpbmRvdyRuYXZpZ2F0b3IkdXNlID0gd2luZG93Lm5hdmlnYXRvclsndXNlckFnZW50RGF0YSddKSA9PT0gbnVsbCB8fCBfd2luZG93JG5hdmlnYXRvciR1c2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF93aW5kb3ckbmF2aWdhdG9yJHVzZS5wbGF0Zm9ybSkgfHwgd2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSkgOiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzSVBob25lKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eaVBob25lL2kpO1xufVxuZnVuY3Rpb24gaXNNYWMoKSB7XG4gIHJldHVybiB0ZXN0UGxhdGZvcm0oL15NYWMvaSk7XG59XG5mdW5jdGlvbiBpc0lQYWQoKSB7XG4gIHJldHVybiB0ZXN0UGxhdGZvcm0oL15pUGFkL2kpIHx8XG4gIC8vIGlQYWRPUyAxMyBsaWVzIGFuZCBzYXlzIGl0J3MgYSBNYWMsIGJ1dCB3ZSBjYW4gZGlzdGluZ3Vpc2ggYnkgZGV0ZWN0aW5nIHRvdWNoIHN1cHBvcnQuXG4gIGlzTWFjKCkgJiYgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMTtcbn1cbmZ1bmN0aW9uIGlzSU9TKCkge1xuICByZXR1cm4gaXNJUGhvbmUoKSB8fCBpc0lQYWQoKTtcbn1cbmZ1bmN0aW9uIGlzQXBwbGVEZXZpY2UoKSB7XG4gIHJldHVybiBpc01hYygpIHx8IGlzSU9TKCk7XG59XG5cbnZhciBmb3JtYXRHcm91cExhYmVsID0gZnVuY3Rpb24gZm9ybWF0R3JvdXBMYWJlbChncm91cCkge1xuICByZXR1cm4gZ3JvdXAubGFiZWw7XG59O1xudmFyIGdldE9wdGlvbkxhYmVsJDEgPSBmdW5jdGlvbiBnZXRPcHRpb25MYWJlbChvcHRpb24pIHtcbiAgcmV0dXJuIG9wdGlvbi5sYWJlbDtcbn07XG52YXIgZ2V0T3B0aW9uVmFsdWUkMSA9IGZ1bmN0aW9uIGdldE9wdGlvblZhbHVlKG9wdGlvbikge1xuICByZXR1cm4gb3B0aW9uLnZhbHVlO1xufTtcbnZhciBpc09wdGlvbkRpc2FibGVkID0gZnVuY3Rpb24gaXNPcHRpb25EaXNhYmxlZChvcHRpb24pIHtcbiAgcmV0dXJuICEhb3B0aW9uLmlzRGlzYWJsZWQ7XG59O1xuXG52YXIgZGVmYXVsdFN0eWxlcyA9IHtcbiAgY2xlYXJJbmRpY2F0b3I6IGluZGV4LmNsZWFySW5kaWNhdG9yQ1NTLFxuICBjb250YWluZXI6IGluZGV4LmNvbnRhaW5lckNTUyxcbiAgY29udHJvbDogaW5kZXguY3NzLFxuICBkcm9wZG93bkluZGljYXRvcjogaW5kZXguZHJvcGRvd25JbmRpY2F0b3JDU1MsXG4gIGdyb3VwOiBpbmRleC5ncm91cENTUyxcbiAgZ3JvdXBIZWFkaW5nOiBpbmRleC5ncm91cEhlYWRpbmdDU1MsXG4gIGluZGljYXRvcnNDb250YWluZXI6IGluZGV4LmluZGljYXRvcnNDb250YWluZXJDU1MsXG4gIGluZGljYXRvclNlcGFyYXRvcjogaW5kZXguaW5kaWNhdG9yU2VwYXJhdG9yQ1NTLFxuICBpbnB1dDogaW5kZXguaW5wdXRDU1MsXG4gIGxvYWRpbmdJbmRpY2F0b3I6IGluZGV4LmxvYWRpbmdJbmRpY2F0b3JDU1MsXG4gIGxvYWRpbmdNZXNzYWdlOiBpbmRleC5sb2FkaW5nTWVzc2FnZUNTUyxcbiAgbWVudTogaW5kZXgubWVudUNTUyxcbiAgbWVudUxpc3Q6IGluZGV4Lm1lbnVMaXN0Q1NTLFxuICBtZW51UG9ydGFsOiBpbmRleC5tZW51UG9ydGFsQ1NTLFxuICBtdWx0aVZhbHVlOiBpbmRleC5tdWx0aVZhbHVlQ1NTLFxuICBtdWx0aVZhbHVlTGFiZWw6IGluZGV4Lm11bHRpVmFsdWVMYWJlbENTUyxcbiAgbXVsdGlWYWx1ZVJlbW92ZTogaW5kZXgubXVsdGlWYWx1ZVJlbW92ZUNTUyxcbiAgbm9PcHRpb25zTWVzc2FnZTogaW5kZXgubm9PcHRpb25zTWVzc2FnZUNTUyxcbiAgb3B0aW9uOiBpbmRleC5vcHRpb25DU1MsXG4gIHBsYWNlaG9sZGVyOiBpbmRleC5wbGFjZWhvbGRlckNTUyxcbiAgc2luZ2xlVmFsdWU6IGluZGV4LmNzcyQxLFxuICB2YWx1ZUNvbnRhaW5lcjogaW5kZXgudmFsdWVDb250YWluZXJDU1Ncbn07XG4vLyBNZXJnZSBVdGlsaXR5XG4vLyBBbGxvd3MgY29uc3VtZXJzIHRvIGV4dGVuZCBhIGJhc2UgU2VsZWN0IHdpdGggYWRkaXRpb25hbCBzdHlsZXNcblxuZnVuY3Rpb24gbWVyZ2VTdHlsZXMoc291cmNlKSB7XG4gIHZhciB0YXJnZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAvLyBpbml0aWFsaXplIHdpdGggc291cmNlIHN0eWxlc1xuICB2YXIgc3R5bGVzID0gX29iamVjdFNwcmVhZCh7fSwgc291cmNlKTtcblxuICAvLyBtYXNzYWdlIGluIHRhcmdldCBzdHlsZXNcbiAgT2JqZWN0LmtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlBc1N0cmluZykge1xuICAgIHZhciBrZXkgPSBrZXlBc1N0cmluZztcbiAgICBpZiAoc291cmNlW2tleV0pIHtcbiAgICAgIHN0eWxlc1trZXldID0gZnVuY3Rpb24gKHJzQ3NzLCBwcm9wcykge1xuICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0oc291cmNlW2tleV0ocnNDc3MsIHByb3BzKSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzW2tleV0gPSB0YXJnZXRba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3R5bGVzO1xufVxuXG52YXIgY29sb3JzID0ge1xuICBwcmltYXJ5OiAnIzI2ODRGRicsXG4gIHByaW1hcnk3NTogJyM0QzlBRkYnLFxuICBwcmltYXJ5NTA6ICcjQjJENEZGJyxcbiAgcHJpbWFyeTI1OiAnI0RFRUJGRicsXG4gIGRhbmdlcjogJyNERTM1MEInLFxuICBkYW5nZXJMaWdodDogJyNGRkJEQUQnLFxuICBuZXV0cmFsMDogJ2hzbCgwLCAwJSwgMTAwJSknLFxuICBuZXV0cmFsNTogJ2hzbCgwLCAwJSwgOTUlKScsXG4gIG5ldXRyYWwxMDogJ2hzbCgwLCAwJSwgOTAlKScsXG4gIG5ldXRyYWwyMDogJ2hzbCgwLCAwJSwgODAlKScsXG4gIG5ldXRyYWwzMDogJ2hzbCgwLCAwJSwgNzAlKScsXG4gIG5ldXRyYWw0MDogJ2hzbCgwLCAwJSwgNjAlKScsXG4gIG5ldXRyYWw1MDogJ2hzbCgwLCAwJSwgNTAlKScsXG4gIG5ldXRyYWw2MDogJ2hzbCgwLCAwJSwgNDAlKScsXG4gIG5ldXRyYWw3MDogJ2hzbCgwLCAwJSwgMzAlKScsXG4gIG5ldXRyYWw4MDogJ2hzbCgwLCAwJSwgMjAlKScsXG4gIG5ldXRyYWw5MDogJ2hzbCgwLCAwJSwgMTAlKSdcbn07XG52YXIgYm9yZGVyUmFkaXVzID0gNDtcbi8vIFVzZWQgdG8gY2FsY3VsYXRlIGNvbnNpc3RlbnQgbWFyZ2luL3BhZGRpbmcgb24gZWxlbWVudHNcbnZhciBiYXNlVW5pdCA9IDQ7XG4vLyBUaGUgbWluaW11bSBoZWlnaHQgb2YgdGhlIGNvbnRyb2xcbnZhciBjb250cm9sSGVpZ2h0ID0gMzg7XG4vLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRyb2wgYW5kIG1lbnUgKi9cbnZhciBtZW51R3V0dGVyID0gYmFzZVVuaXQgKiAyO1xudmFyIHNwYWNpbmcgPSB7XG4gIGJhc2VVbml0OiBiYXNlVW5pdCxcbiAgY29udHJvbEhlaWdodDogY29udHJvbEhlaWdodCxcbiAgbWVudUd1dHRlcjogbWVudUd1dHRlclxufTtcbnZhciBkZWZhdWx0VGhlbWUgPSB7XG4gIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICBjb2xvcnM6IGNvbG9ycyxcbiAgc3BhY2luZzogc3BhY2luZ1xufTtcblxudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgJ2FyaWEtbGl2ZSc6ICdwb2xpdGUnLFxuICBiYWNrc3BhY2VSZW1vdmVzVmFsdWU6IHRydWUsXG4gIGJsdXJJbnB1dE9uU2VsZWN0OiBpbmRleC5pc1RvdWNoQ2FwYWJsZSgpLFxuICBjYXB0dXJlTWVudVNjcm9sbDogIWluZGV4LmlzVG91Y2hDYXBhYmxlKCksXG4gIGNsYXNzTmFtZXM6IHt9LFxuICBjbG9zZU1lbnVPblNlbGVjdDogdHJ1ZSxcbiAgY2xvc2VNZW51T25TY3JvbGw6IGZhbHNlLFxuICBjb21wb25lbnRzOiB7fSxcbiAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlOiB0cnVlLFxuICBlc2NhcGVDbGVhcnNWYWx1ZTogZmFsc2UsXG4gIGZpbHRlck9wdGlvbjogY3JlYXRlRmlsdGVyKCksXG4gIGZvcm1hdEdyb3VwTGFiZWw6IGZvcm1hdEdyb3VwTGFiZWwsXG4gIGdldE9wdGlvbkxhYmVsOiBnZXRPcHRpb25MYWJlbCQxLFxuICBnZXRPcHRpb25WYWx1ZTogZ2V0T3B0aW9uVmFsdWUkMSxcbiAgaXNEaXNhYmxlZDogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIGlzTXVsdGk6IGZhbHNlLFxuICBpc1J0bDogZmFsc2UsXG4gIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgaXNPcHRpb25EaXNhYmxlZDogaXNPcHRpb25EaXNhYmxlZCxcbiAgbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIGxvYWRpbmdNZXNzYWdlKCkge1xuICAgIHJldHVybiAnTG9hZGluZy4uLic7XG4gIH0sXG4gIG1heE1lbnVIZWlnaHQ6IDMwMCxcbiAgbWluTWVudUhlaWdodDogMTQwLFxuICBtZW51SXNPcGVuOiBmYWxzZSxcbiAgbWVudVBsYWNlbWVudDogJ2JvdHRvbScsXG4gIG1lbnVQb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgbWVudVNob3VsZEJsb2NrU2Nyb2xsOiBmYWxzZSxcbiAgbWVudVNob3VsZFNjcm9sbEludG9WaWV3OiAhaW5kZXguaXNNb2JpbGVEZXZpY2UoKSxcbiAgbm9PcHRpb25zTWVzc2FnZTogZnVuY3Rpb24gbm9PcHRpb25zTWVzc2FnZSgpIHtcbiAgICByZXR1cm4gJ05vIG9wdGlvbnMnO1xuICB9LFxuICBvcGVuTWVudU9uRm9jdXM6IGZhbHNlLFxuICBvcGVuTWVudU9uQ2xpY2s6IHRydWUsXG4gIG9wdGlvbnM6IFtdLFxuICBwYWdlU2l6ZTogNSxcbiAgcGxhY2Vob2xkZXI6ICdTZWxlY3QuLi4nLFxuICBzY3JlZW5SZWFkZXJTdGF0dXM6IGZ1bmN0aW9uIHNjcmVlblJlYWRlclN0YXR1cyhfcmVmKSB7XG4gICAgdmFyIGNvdW50ID0gX3JlZi5jb3VudDtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoY291bnQsIFwiIHJlc3VsdFwiKS5jb25jYXQoY291bnQgIT09IDEgPyAncycgOiAnJywgXCIgYXZhaWxhYmxlXCIpO1xuICB9LFxuICBzdHlsZXM6IHt9LFxuICB0YWJJbmRleDogMCxcbiAgdGFiU2VsZWN0c1ZhbHVlOiB0cnVlLFxuICB1bnN0eWxlZDogZmFsc2Vcbn07XG5mdW5jdGlvbiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBpbmRleCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9pc09wdGlvbkRpc2FibGVkKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlKTtcbiAgdmFyIGlzU2VsZWN0ZWQgPSBfaXNPcHRpb25TZWxlY3RlZChwcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIHZhciBsYWJlbCA9IGdldE9wdGlvbkxhYmVsKHByb3BzLCBvcHRpb24pO1xuICB2YXIgdmFsdWUgPSBnZXRPcHRpb25WYWx1ZShwcm9wcywgb3B0aW9uKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnb3B0aW9uJyxcbiAgICBkYXRhOiBvcHRpb24sXG4gICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgIGxhYmVsOiBsYWJlbCxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgaW5kZXg6IGluZGV4XG4gIH07XG59XG5mdW5jdGlvbiBidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChncm91cE9yT3B0aW9uLCBncm91cE9yT3B0aW9uSW5kZXgpIHtcbiAgICBpZiAoJ29wdGlvbnMnIGluIGdyb3VwT3JPcHRpb24pIHtcbiAgICAgIHZhciBjYXRlZ29yaXplZE9wdGlvbnMgPSBncm91cE9yT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIG9wdGlvbkluZGV4KSB7XG4gICAgICAgIHJldHVybiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBvcHRpb25JbmRleCk7XG4gICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBpc0ZvY3VzYWJsZShwcm9wcywgY2F0ZWdvcml6ZWRPcHRpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gY2F0ZWdvcml6ZWRPcHRpb25zLmxlbmd0aCA+IDAgPyB7XG4gICAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICAgIGRhdGE6IGdyb3VwT3JPcHRpb24sXG4gICAgICAgIG9wdGlvbnM6IGNhdGVnb3JpemVkT3B0aW9ucyxcbiAgICAgICAgaW5kZXg6IGdyb3VwT3JPcHRpb25JbmRleFxuICAgICAgfSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIGNhdGVnb3JpemVkT3B0aW9uID0gdG9DYXRlZ29yaXplZE9wdGlvbihwcm9wcywgZ3JvdXBPck9wdGlvbiwgc2VsZWN0VmFsdWUsIGdyb3VwT3JPcHRpb25JbmRleCk7XG4gICAgcmV0dXJuIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikgPyBjYXRlZ29yaXplZE9wdGlvbiA6IHVuZGVmaW5lZDtcbiAgfSkuZmlsdGVyKGluZGV4Lm5vdE51bGxpc2gpO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhjYXRlZ29yaXplZE9wdGlvbnMpIHtcbiAgcmV0dXJuIGNhdGVnb3JpemVkT3B0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKG9wdGlvbnNBY2N1bXVsYXRvciwgY2F0ZWdvcml6ZWRPcHRpb24pIHtcbiAgICBpZiAoY2F0ZWdvcml6ZWRPcHRpb24udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2guYXBwbHkob3B0aW9uc0FjY3VtdWxhdG9yLCBfdG9Db25zdW1hYmxlQXJyYXkoY2F0ZWdvcml6ZWRPcHRpb24ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uLmRhdGE7XG4gICAgICB9KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zQWNjdW11bGF0b3IucHVzaChjYXRlZ29yaXplZE9wdGlvbi5kYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhjYXRlZ29yaXplZE9wdGlvbnMsIG9wdGlvbklkKSB7XG4gIHJldHVybiBjYXRlZ29yaXplZE9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChvcHRpb25zQWNjdW11bGF0b3IsIGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgaWYgKGNhdGVnb3JpemVkT3B0aW9uLnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgIG9wdGlvbnNBY2N1bXVsYXRvci5wdXNoLmFwcGx5KG9wdGlvbnNBY2N1bXVsYXRvciwgX3RvQ29uc3VtYWJsZUFycmF5KGNhdGVnb3JpemVkT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiBvcHRpb24uZGF0YSxcbiAgICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KVxuICAgICAgICB9O1xuICAgICAgfSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2goe1xuICAgICAgICBkYXRhOiBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkge1xuICByZXR1cm4gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikge1xuICB2YXIgX3Byb3BzJGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgIGlucHV0VmFsdWUgPSBfcHJvcHMkaW5wdXRWYWx1ZSA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkaW5wdXRWYWx1ZTtcbiAgdmFyIGRhdGEgPSBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgIGlzU2VsZWN0ZWQgPSBjYXRlZ29yaXplZE9wdGlvbi5pc1NlbGVjdGVkLFxuICAgIGxhYmVsID0gY2F0ZWdvcml6ZWRPcHRpb24ubGFiZWwsXG4gICAgdmFsdWUgPSBjYXRlZ29yaXplZE9wdGlvbi52YWx1ZTtcbiAgcmV0dXJuICghc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykgfHwgIWlzU2VsZWN0ZWQpICYmIF9maWx0ZXJPcHRpb24ocHJvcHMsIHtcbiAgICBsYWJlbDogbGFiZWwsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIGRhdGE6IGRhdGFcbiAgfSwgaW5wdXRWYWx1ZSk7XG59XG5mdW5jdGlvbiBnZXROZXh0Rm9jdXNlZFZhbHVlKHN0YXRlLCBuZXh0U2VsZWN0VmFsdWUpIHtcbiAgdmFyIGZvY3VzZWRWYWx1ZSA9IHN0YXRlLmZvY3VzZWRWYWx1ZSxcbiAgICBsYXN0U2VsZWN0VmFsdWUgPSBzdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgdmFyIGxhc3RGb2N1c2VkSW5kZXggPSBsYXN0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICBpZiAobGFzdEZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgdmFyIG5leHRGb2N1c2VkSW5kZXggPSBuZXh0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICAgIGlmIChuZXh0Rm9jdXNlZEluZGV4ID4gLTEpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkIHZhbHVlIGlzIHN0aWxsIGluIHRoZSBzZWxlY3RWYWx1ZSwgcmV0dXJuIGl0XG4gICAgICByZXR1cm4gZm9jdXNlZFZhbHVlO1xuICAgIH0gZWxzZSBpZiAobGFzdEZvY3VzZWRJbmRleCA8IG5leHRTZWxlY3RWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkVmFsdWUgaXMgbm90IHByZXNlbnQgaW4gdGhlIG5leHQgc2VsZWN0VmFsdWUgYXJyYXkgYnlcbiAgICAgIC8vIHJlZmVyZW5jZSwgc28gcmV0dXJuIHRoZSBuZXcgdmFsdWUgYXQgdGhlIHNhbWUgaW5kZXhcbiAgICAgIHJldHVybiBuZXh0U2VsZWN0VmFsdWVbbGFzdEZvY3VzZWRJbmRleF07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RGb2N1c2VkT3B0aW9uID0gc3RhdGUuZm9jdXNlZE9wdGlvbjtcbiAgcmV0dXJuIGxhc3RGb2N1c2VkT3B0aW9uICYmIG9wdGlvbnMuaW5kZXhPZihsYXN0Rm9jdXNlZE9wdGlvbikgPiAtMSA/IGxhc3RGb2N1c2VkT3B0aW9uIDogb3B0aW9uc1swXTtcbn1cbnZhciBnZXRGb2N1c2VkT3B0aW9uSWQgPSBmdW5jdGlvbiBnZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzZWRPcHRpb24pIHtcbiAgdmFyIF9mb2N1c2FibGVPcHRpb25zV2l0aDtcbiAgdmFyIGZvY3VzZWRPcHRpb25JZCA9IChfZm9jdXNhYmxlT3B0aW9uc1dpdGggPSBmb2N1c2FibGVPcHRpb25zV2l0aElkcy5maW5kKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmRhdGEgPT09IGZvY3VzZWRPcHRpb247XG4gIH0pKSA9PT0gbnVsbCB8fCBfZm9jdXNhYmxlT3B0aW9uc1dpdGggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mb2N1c2FibGVPcHRpb25zV2l0aC5pZDtcbiAgcmV0dXJuIGZvY3VzZWRPcHRpb25JZCB8fCBudWxsO1xufTtcbnZhciBnZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIGdldE9wdGlvbkxhYmVsKHByb3BzLCBkYXRhKSB7XG4gIHJldHVybiBwcm9wcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbn07XG52YXIgZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiBnZXRPcHRpb25WYWx1ZShwcm9wcywgZGF0YSkge1xuICByZXR1cm4gcHJvcHMuZ2V0T3B0aW9uVmFsdWUoZGF0YSk7XG59O1xuZnVuY3Rpb24gX2lzT3B0aW9uRGlzYWJsZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9wcy5pc09wdGlvbkRpc2FibGVkID09PSAnZnVuY3Rpb24nID8gcHJvcHMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24sIHNlbGVjdFZhbHVlKSA6IGZhbHNlO1xufVxuZnVuY3Rpb24gX2lzT3B0aW9uU2VsZWN0ZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgaWYgKHNlbGVjdFZhbHVlLmluZGV4T2Yob3B0aW9uKSA+IC0xKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiBwcm9wcy5pc09wdGlvblNlbGVjdGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb3BzLmlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZSA9IGdldE9wdGlvblZhbHVlKHByb3BzLCBvcHRpb24pO1xuICByZXR1cm4gc2VsZWN0VmFsdWUuc29tZShmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBnZXRPcHRpb25WYWx1ZShwcm9wcywgaSkgPT09IGNhbmRpZGF0ZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBfZmlsdGVyT3B0aW9uKHByb3BzLCBvcHRpb24sIGlucHV0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLmZpbHRlck9wdGlvbiA/IHByb3BzLmZpbHRlck9wdGlvbihvcHRpb24sIGlucHV0VmFsdWUpIDogdHJ1ZTtcbn1cbnZhciBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zID0gZnVuY3Rpb24gc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykge1xuICB2YXIgaGlkZVNlbGVjdGVkT3B0aW9ucyA9IHByb3BzLmhpZGVTZWxlY3RlZE9wdGlvbnMsXG4gICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGk7XG4gIGlmIChoaWRlU2VsZWN0ZWRPcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICByZXR1cm4gaGlkZVNlbGVjdGVkT3B0aW9ucztcbn07XG52YXIgaW5zdGFuY2VJZCA9IDE7XG52YXIgU2VsZWN0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTZWxlY3QsIF9Db21wb25lbnQpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNlbGVjdCk7XG4gIC8vIE1pc2MuIEluc3RhbmNlIFByb3BlcnRpZXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gVE9ET1xuXG4gIC8vIFJlZnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGZ1bmN0aW9uIFNlbGVjdChfcHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNlbGVjdCk7XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBfcHJvcHMpO1xuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgYXJpYVNlbGVjdGlvbjogbnVsbCxcbiAgICAgIGZvY3VzZWRPcHRpb246IG51bGwsXG4gICAgICBmb2N1c2VkT3B0aW9uSWQ6IG51bGwsXG4gICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogW10sXG4gICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICBpbnB1dElzSGlkZGVuOiBmYWxzZSxcbiAgICAgIGlzRm9jdXNlZDogZmFsc2UsXG4gICAgICBzZWxlY3RWYWx1ZTogW10sXG4gICAgICBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZTogZmFsc2UsXG4gICAgICBwcmV2V2FzRm9jdXNlZDogZmFsc2UsXG4gICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZQcm9wczogdW5kZWZpbmVkLFxuICAgICAgaW5zdGFuY2VQcmVmaXg6ICcnXG4gICAgfTtcbiAgICBfdGhpcy5ibG9ja09wdGlvbkhvdmVyID0gZmFsc2U7XG4gICAgX3RoaXMuaXNDb21wb3NpbmcgPSBmYWxzZTtcbiAgICBfdGhpcy5jb21tb25Qcm9wcyA9IHZvaWQgMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hZID0gMDtcbiAgICBfdGhpcy5vcGVuQWZ0ZXJGb2N1cyA9IGZhbHNlO1xuICAgIF90aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSB2b2lkIDA7XG4gICAgX3RoaXMuaXNBcHBsZURldmljZSA9IGlzQXBwbGVEZXZpY2UoKTtcbiAgICBfdGhpcy5jb250cm9sUmVmID0gbnVsbDtcbiAgICBfdGhpcy5nZXRDb250cm9sUmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMuY29udHJvbFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzZWRPcHRpb25SZWYgPSBudWxsO1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25SZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5mb2N1c2VkT3B0aW9uUmVmID0gcmVmO1xuICAgIH07XG4gICAgX3RoaXMubWVudUxpc3RSZWYgPSBudWxsO1xuICAgIF90aGlzLmdldE1lbnVMaXN0UmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMubWVudUxpc3RSZWYgPSByZWY7XG4gICAgfTtcbiAgICBfdGhpcy5pbnB1dFJlZiA9IG51bGw7XG4gICAgX3RoaXMuZ2V0SW5wdXRSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5pbnB1dFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzID0gX3RoaXMuZm9jdXNJbnB1dDtcbiAgICBfdGhpcy5ibHVyID0gX3RoaXMuYmx1cklucHV0O1xuICAgIF90aGlzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgb25DaGFuZ2UgPSBfdGhpcyRwcm9wcy5vbkNoYW5nZSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzLm5hbWU7XG4gICAgICBhY3Rpb25NZXRhLm5hbWUgPSBuYW1lO1xuICAgICAgX3RoaXMuYXJpYU9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9O1xuICAgIF90aGlzLnNldFZhbHVlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb24sIG9wdGlvbikge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICBjbG9zZU1lbnVPblNlbGVjdCA9IF90aGlzJHByb3BzMi5jbG9zZU1lbnVPblNlbGVjdCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMi5pc011bHRpLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHMyLmlucHV0VmFsdWU7XG4gICAgICBfdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ3NldC12YWx1ZScsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIGlmIChjbG9zZU1lbnVPblNlbGVjdCkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIC8vIHdoZW4gdGhlIHNlbGVjdCB2YWx1ZSBzaG91bGQgY2hhbmdlLCB3ZSBzaG91bGQgcmVzZXQgZm9jdXNlZFZhbHVlXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlLCB7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBvcHRpb246IG9wdGlvblxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5zZWxlY3RPcHRpb24gPSBmdW5jdGlvbiAobmV3VmFsdWUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgYmx1cklucHV0T25TZWxlY3QgPSBfdGhpcyRwcm9wczMuYmx1cklucHV0T25TZWxlY3QsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMy5uYW1lO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZGVzZWxlY3RlZCA9IGlzTXVsdGkgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChuZXdWYWx1ZSwgc2VsZWN0VmFsdWUpO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSBfdGhpcy5pc09wdGlvbkRpc2FibGVkKG5ld1ZhbHVlLCBzZWxlY3RWYWx1ZSk7XG4gICAgICBpZiAoZGVzZWxlY3RlZCkge1xuICAgICAgICB2YXIgY2FuZGlkYXRlID0gX3RoaXMuZ2V0T3B0aW9uVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICBfdGhpcy5zZXRWYWx1ZShpbmRleC5tdWx0aVZhbHVlQXNWYWx1ZShzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZ2V0T3B0aW9uVmFsdWUoaSkgIT09IGNhbmRpZGF0ZTtcbiAgICAgICAgfSkpLCAnZGVzZWxlY3Qtb3B0aW9uJywgbmV3VmFsdWUpO1xuICAgICAgfSBlbHNlIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgICAvLyBTZWxlY3Qgb3B0aW9uIGlmIG9wdGlvbiBpcyBub3QgZGlzYWJsZWRcbiAgICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShpbmRleC5tdWx0aVZhbHVlQXNWYWx1ZShbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHNlbGVjdFZhbHVlKSwgW25ld1ZhbHVlXSkpLCAnc2VsZWN0LW9wdGlvbicsIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShpbmRleC5zaW5nbGVWYWx1ZUFzVmFsdWUobmV3VmFsdWUpLCAnc2VsZWN0LW9wdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5hcmlhT25DaGFuZ2UoaW5kZXguc2luZ2xlVmFsdWVBc1ZhbHVlKG5ld1ZhbHVlKSwge1xuICAgICAgICAgIGFjdGlvbjogJ3NlbGVjdC1vcHRpb24nLFxuICAgICAgICAgIG9wdGlvbjogbmV3VmFsdWUsXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGJsdXJJbnB1dE9uU2VsZWN0KSB7XG4gICAgICAgIF90aGlzLmJsdXJJbnB1dCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMucmVtb3ZlVmFsdWUgPSBmdW5jdGlvbiAocmVtb3ZlZFZhbHVlKSB7XG4gICAgICB2YXIgaXNNdWx0aSA9IF90aGlzLnByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBjYW5kaWRhdGUgPSBfdGhpcy5nZXRPcHRpb25WYWx1ZShyZW1vdmVkVmFsdWUpO1xuICAgICAgdmFyIG5ld1ZhbHVlQXJyYXkgPSBzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmdldE9wdGlvblZhbHVlKGkpICE9PSBjYW5kaWRhdGU7XG4gICAgICB9KTtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGluZGV4LnZhbHVlVGVybmFyeShpc011bHRpLCBuZXdWYWx1ZUFycmF5LCBuZXdWYWx1ZUFycmF5WzBdIHx8IG51bGwpO1xuICAgICAgX3RoaXMub25DaGFuZ2UobmV3VmFsdWUsIHtcbiAgICAgICAgYWN0aW9uOiAncmVtb3ZlLXZhbHVlJyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlOiByZW1vdmVkVmFsdWVcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH07XG4gICAgX3RoaXMuY2xlYXJWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgICAgX3RoaXMub25DaGFuZ2UoaW5kZXgudmFsdWVUZXJuYXJ5KF90aGlzLnByb3BzLmlzTXVsdGksIFtdLCBudWxsKSwge1xuICAgICAgICBhY3Rpb246ICdjbGVhcicsXG4gICAgICAgIHJlbW92ZWRWYWx1ZXM6IHNlbGVjdFZhbHVlXG4gICAgICB9KTtcbiAgICB9O1xuICAgIF90aGlzLnBvcFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGlzTXVsdGkgPSBfdGhpcy5wcm9wcy5pc011bHRpO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgbGFzdFNlbGVjdGVkVmFsdWUgPSBzZWxlY3RWYWx1ZVtzZWxlY3RWYWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgIHZhciBuZXdWYWx1ZUFycmF5ID0gc2VsZWN0VmFsdWUuc2xpY2UoMCwgc2VsZWN0VmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICB2YXIgbmV3VmFsdWUgPSBpbmRleC52YWx1ZVRlcm5hcnkoaXNNdWx0aSwgbmV3VmFsdWVBcnJheSwgbmV3VmFsdWVBcnJheVswXSB8fCBudWxsKTtcbiAgICAgIGlmIChsYXN0U2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICBfdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSwge1xuICAgICAgICAgIGFjdGlvbjogJ3BvcC12YWx1ZScsXG4gICAgICAgICAgcmVtb3ZlZFZhbHVlOiBsYXN0U2VsZWN0ZWRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25JZCA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICByZXR1cm4gZ2V0Rm9jdXNlZE9wdGlvbklkKF90aGlzLnN0YXRlLmZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkRm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMoYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlKSwgX3RoaXMuZ2V0RWxlbWVudElkKCdvcHRpb24nKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICB9O1xuICAgIF90aGlzLmN4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5kZXguY2xhc3NOYW1lcy5hcHBseSh2b2lkIDAsIFtfdGhpcy5wcm9wcy5jbGFzc05hbWVQcmVmaXhdLmNvbmNhdChhcmdzKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICByZXR1cm4gZ2V0T3B0aW9uTGFiZWwoX3RoaXMucHJvcHMsIGRhdGEpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgcmV0dXJuIGdldE9wdGlvblZhbHVlKF90aGlzLnByb3BzLCBkYXRhKTtcbiAgICB9O1xuICAgIF90aGlzLmdldFN0eWxlcyA9IGZ1bmN0aW9uIChrZXksIHByb3BzKSB7XG4gICAgICB2YXIgdW5zdHlsZWQgPSBfdGhpcy5wcm9wcy51bnN0eWxlZDtcbiAgICAgIHZhciBiYXNlID0gZGVmYXVsdFN0eWxlc1trZXldKHByb3BzLCB1bnN0eWxlZCk7XG4gICAgICBiYXNlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICAgIHZhciBjdXN0b20gPSBfdGhpcy5wcm9wcy5zdHlsZXNba2V5XTtcbiAgICAgIHJldHVybiBjdXN0b20gPyBjdXN0b20oYmFzZSwgcHJvcHMpIDogYmFzZTtcbiAgICB9O1xuICAgIF90aGlzLmdldENsYXNzTmFtZXMgPSBmdW5jdGlvbiAoa2V5LCBwcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzJGNsYXNzTmFtZSwgX3RoaXMkcHJvcHMkY2xhc3NOYW1lMjtcbiAgICAgIHJldHVybiAoX3RoaXMkcHJvcHMkY2xhc3NOYW1lID0gKF90aGlzJHByb3BzJGNsYXNzTmFtZTIgPSBfdGhpcy5wcm9wcy5jbGFzc05hbWVzKVtrZXldKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGNsYXNzTmFtZS5jYWxsKF90aGlzJHByb3BzJGNsYXNzTmFtZTIsIHByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEVsZW1lbnRJZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQoX3RoaXMuc3RhdGUuaW5zdGFuY2VQcmVmaXgsIFwiLVwiKS5jb25jYXQoZWxlbWVudCk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDb21wb25lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGluZGV4LmRlZmF1bHRDb21wb25lbnRzKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDYXRlZ29yaXplZE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMubWVudUlzT3BlbiA/IF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5tZW51SXNPcGVuID8gX3RoaXMuYnVpbGRGb2N1c2FibGVPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmFyaWFPbkNoYW5nZSA9IGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBhcmlhU2VsZWN0aW9uOiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfSwgYWN0aW9uTWV0YSlcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25NZW51TW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uTWVudU1vdXNlTW92ZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciA9IGZhbHNlO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sTW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAvLyBFdmVudCBjYXB0dXJlZCBieSBkcm9wZG93biBpbmRpY2F0b3JcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcGVuTWVudU9uQ2xpY2sgPSBfdGhpcy5wcm9wcy5vcGVuTWVudU9uQ2xpY2s7XG4gICAgICBpZiAoIV90aGlzLnN0YXRlLmlzRm9jdXNlZCkge1xuICAgICAgICBpZiAob3Blbk1lbnVPbkNsaWNrKSB7XG4gICAgICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH0gZWxzZSBpZiAoIV90aGlzLnByb3BzLm1lbnVJc09wZW4pIHtcbiAgICAgICAgaWYgKG9wZW5NZW51T25DbGljaykge1xuICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF90aGlzLnByb3BzLmlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNC5pc011bHRpLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM0Lm1lbnVJc09wZW47XG4gICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLm9wZW5BZnRlckZvY3VzID0gZmFsc2U7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RvdWNoZW5kJykge1xuICAgICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uU2Nyb2xsID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAodHlwZW9mIF90aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGluZGV4LmlzRG9jdW1lbnRFbGVtZW50KGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICBfdGhpcy5wcm9wcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBfdGhpcy5wcm9wcy5jbG9zZU1lbnVPblNjcm9sbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAoX3RoaXMucHJvcHMuY2xvc2VNZW51T25TY3JvbGwoZXZlbnQpKSB7XG4gICAgICAgICAgX3RoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvblN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuaXNDb21wb3NpbmcgPSB0cnVlO1xuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvbkVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmlzQ29tcG9zaW5nID0gZmFsc2U7XG4gICAgfTtcbiAgICBfdGhpcy5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgIHZhciB0b3VjaGVzID0gX3JlZjIudG91Y2hlcztcbiAgICAgIHZhciB0b3VjaCA9IHRvdWNoZXMgJiYgdG91Y2hlcy5pdGVtKDApO1xuICAgICAgaWYgKCF0b3VjaCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gdG91Y2guY2xpZW50WDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSB0b3VjaC5jbGllbnRZO1xuICAgICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hNb3ZlID0gZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IF9yZWYzLnRvdWNoZXM7XG4gICAgICB2YXIgdG91Y2ggPSB0b3VjaGVzICYmIHRvdWNoZXMuaXRlbSgwKTtcbiAgICAgIGlmICghdG91Y2gpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGRlbHRhWCA9IE1hdGguYWJzKHRvdWNoLmNsaWVudFggLSBfdGhpcy5pbml0aWFsVG91Y2hYKTtcbiAgICAgIHZhciBkZWx0YVkgPSBNYXRoLmFicyh0b3VjaC5jbGllbnRZIC0gX3RoaXMuaW5pdGlhbFRvdWNoWSk7XG4gICAgICB2YXIgbW92ZVRocmVzaG9sZCA9IDU7XG4gICAgICBfdGhpcy51c2VySXNEcmFnZ2luZyA9IGRlbHRhWCA+IG1vdmVUaHJlc2hvbGQgfHwgZGVsdGFZID4gbW92ZVRocmVzaG9sZDtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgICAvLyBjbG9zZSB0aGUgbWVudSBpZiB0aGUgdXNlciB0YXBzIG91dHNpZGVcbiAgICAgIC8vIHdlJ3JlIGNoZWNraW5nIG9uIGV2ZW50LnRhcmdldCBoZXJlIGluc3RlYWQgb2YgZXZlbnQuY3VycmVudFRhcmdldCwgYmVjYXVzZSB3ZSB3YW50IHRvIGFzc2VydCBpbmZvcm1hdGlvblxuICAgICAgLy8gb24gZXZlbnRzIG9uIGNoaWxkIGVsZW1lbnRzLCBub3QgdGhlIGRvY3VtZW50ICh3aGljaCB3ZSd2ZSBhdHRhY2hlZCB0aGlzIGhhbmRsZXIgdG8pLlxuICAgICAgaWYgKF90aGlzLmNvbnRyb2xSZWYgJiYgIV90aGlzLmNvbnRyb2xSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiBfdGhpcy5tZW51TGlzdFJlZiAmJiAhX3RoaXMubWVudUxpc3RSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICBfdGhpcy5ibHVySW5wdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzZXQgbW92ZSB2YXJzXG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSAwO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuICAgICAgX3RoaXMub25Db250cm9sTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkNsZWFySW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLmhhbmRsZUlucHV0Q2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgdmFyIGlucHV0VmFsdWUgPSBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwge1xuICAgICAgICBhY3Rpb246ICdpbnB1dC1jaGFuZ2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogcHJldklucHV0VmFsdWVcbiAgICAgIH0pO1xuICAgICAgaWYgKCFfdGhpcy5wcm9wcy5tZW51SXNPcGVuKSB7XG4gICAgICAgIF90aGlzLm9uTWVudU9wZW4oKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRGb2N1cyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25Gb2N1cyhldmVudCk7XG4gICAgICB9XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBpZiAoX3RoaXMub3BlbkFmdGVyRm9jdXMgfHwgX3RoaXMucHJvcHMub3Blbk1lbnVPbkZvY3VzKSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRCbHVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgaWYgKF90aGlzLm1lbnVMaXN0UmVmICYmIF90aGlzLm1lbnVMaXN0UmVmLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIF90aGlzLmlucHV0UmVmLmZvY3VzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25CbHVyKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgYWN0aW9uOiAnaW5wdXQtYmx1cicsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBwcmV2SW5wdXRWYWx1ZVxuICAgICAgfSk7XG4gICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25PcHRpb25Ib3ZlciA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICBpZiAoX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciB8fCBfdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uID09PSBmb2N1c2VkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcHRpb25zID0gX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb25JbmRleCA9IG9wdGlvbnMuaW5kZXhPZihmb2N1c2VkT3B0aW9uKTtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiBmb2N1c2VkT3B0aW9uSW5kZXggPiAtMSA/IF90aGlzLmdldEZvY3VzZWRPcHRpb25JZChmb2N1c2VkT3B0aW9uKSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMuc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLm9uVmFsdWVJbnB1dEZvY3VzID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBfdGhpcy5mb2N1cygpO1xuICAgIH07XG4gICAgX3RoaXMub25LZXlEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczUuaXNNdWx0aSxcbiAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlID0gX3RoaXMkcHJvcHM1LmJhY2tzcGFjZVJlbW92ZXNWYWx1ZSxcbiAgICAgICAgZXNjYXBlQ2xlYXJzVmFsdWUgPSBfdGhpcyRwcm9wczUuZXNjYXBlQ2xlYXJzVmFsdWUsXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczUuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNDbGVhcmFibGUgPSBfdGhpcyRwcm9wczUuaXNDbGVhcmFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczUuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNS5tZW51SXNPcGVuLFxuICAgICAgICBvbktleURvd24gPSBfdGhpcyRwcm9wczUub25LZXlEb3duLFxuICAgICAgICB0YWJTZWxlY3RzVmFsdWUgPSBfdGhpcyRwcm9wczUudGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgICBvcGVuTWVudU9uRm9jdXMgPSBfdGhpcyRwcm9wczUub3Blbk1lbnVPbkZvY3VzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gX3RoaXMuc3RhdGUsXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZS5mb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZS5mb2N1c2VkVmFsdWUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKHR5cGVvZiBvbktleURvd24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25LZXlEb3duKGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQmxvY2sgb3B0aW9uIGhvdmVyIGV2ZW50cyB3aGVuIHRoZSB1c2VyIGhhcyBqdXN0IHByZXNzZWQgYSBrZXlcbiAgICAgIF90aGlzLmJsb2NrT3B0aW9uSG92ZXIgPSB0cnVlO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICBpZiAoIWlzTXVsdGkgfHwgaW5wdXRWYWx1ZSkgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzVmFsdWUoJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgIGlmICghaXNNdWx0aSB8fCBpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNWYWx1ZSgnbmV4dCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgIGlmIChpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgaWYgKGZvY3VzZWRWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMucmVtb3ZlVmFsdWUoZm9jdXNlZFZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFiYWNrc3BhY2VSZW1vdmVzVmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChpc011bHRpKSB7XG4gICAgICAgICAgICAgIF90aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2xlYXJhYmxlKSB7XG4gICAgICAgICAgICAgIF90aGlzLmNsZWFyVmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgaWYgKF90aGlzLmlzQ29tcG9zaW5nKSByZXR1cm47XG4gICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8ICFtZW51SXNPcGVuIHx8ICF0YWJTZWxlY3RzVmFsdWUgfHwgIWZvY3VzZWRPcHRpb24gfHxcbiAgICAgICAgICAvLyBkb24ndCBjYXB0dXJlIHRoZSBldmVudCBpZiB0aGUgbWVudSBvcGVucyBvbiBmb2N1cyBhbmQgdGhlIGZvY3VzZWRcbiAgICAgICAgICAvLyBvcHRpb24gaXMgYWxyZWFkeSBzZWxlY3RlZDsgaXQgYnJlYWtzIHRoZSBmbG93IG9mIG5hdmlnYXRpb25cbiAgICAgICAgICBvcGVuTWVudU9uRm9jdXMgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChmb2N1c2VkT3B0aW9uLCBzZWxlY3RWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDIyOSkge1xuICAgICAgICAgICAgLy8gaWdub3JlIHRoZSBrZXlkb3duIGV2ZW50IGZyb20gYW4gSW5wdXQgTWV0aG9kIEVkaXRvcihJTUUpXG4gICAgICAgICAgICAvLyByZWYuIGh0dHBzOi8vd3d3LnczLm9yZy9UUi91aWV2ZW50cy8jZGV0ZXJtaW5lLWtleWRvd24ta2V5dXAta2V5Q29kZVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHJldHVybjtcbiAgICAgICAgICAgIGlmIChfdGhpcy5pc0NvbXBvc2luZykgcmV0dXJuO1xuICAgICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgICAgICAgYWN0aW9uOiAnbWVudS1jbG9zZScsXG4gICAgICAgICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uTWVudUNsb3NlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0NsZWFyYWJsZSAmJiBlc2NhcGVDbGVhcnNWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgLy8gc3BhY2VcbiAgICAgICAgICBpZiAoaW5wdXRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZm9jdXNlZE9wdGlvbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLnNlbGVjdE9wdGlvbihmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgaWYgKG1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCd1cCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5vcGVuTWVudSgnbGFzdCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ2Rvd24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdldXAnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdlZG93bicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignZmlyc3QnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignbGFzdCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcbiAgICBfdGhpcy5zdGF0ZS5pbnN0YW5jZVByZWZpeCA9ICdyZWFjdC1zZWxlY3QtJyArIChfdGhpcy5wcm9wcy5pbnN0YW5jZUlkIHx8ICsraW5zdGFuY2VJZCk7XG4gICAgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUgPSBpbmRleC5jbGVhblZhbHVlKF9wcm9wcy52YWx1ZSk7XG4gICAgLy8gU2V0IGZvY3VzZWRPcHRpb24gaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gaW5pdCAoZS5nLiBkZWZhdWx0TWVudUlzT3BlbilcbiAgICBpZiAoX3Byb3BzLm1lbnVJc09wZW4gJiYgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUubGVuZ3RoKSB7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBfdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zV2l0aElkcygpO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSBfdGhpcy5idWlsZEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIHZhciBvcHRpb25JbmRleCA9IGZvY3VzYWJsZU9wdGlvbnMuaW5kZXhPZihfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZVswXSk7XG4gICAgICBfdGhpcy5zdGF0ZS5mb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiA9IGZvY3VzYWJsZU9wdGlvbnNbb3B0aW9uSW5kZXhdO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2FibGVPcHRpb25zW29wdGlvbkluZGV4XSk7XG4gICAgfVxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU2VsZWN0LCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMuc3RhcnRMaXN0ZW5pbmdDb21wb3NpdGlvbigpO1xuICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgLy8gTGlzdGVuIHRvIGFsbCBzY3JvbGwgZXZlbnRzLCBhbmQgZmlsdGVyIHRoZW0gb3V0IGluc2lkZSBvZiAnb25TY3JvbGwnXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTY3JvbGwgZm9jdXNlZE9wdGlvbiBpbnRvIHZpZXcgaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gbW91bnQgKGUuZy4gZGVmYXVsdE1lbnVJc09wZW4pXG4gICAgICBpZiAodGhpcy5wcm9wcy5tZW51SXNPcGVuICYmIHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiAmJiB0aGlzLm1lbnVMaXN0UmVmICYmIHRoaXMuZm9jdXNlZE9wdGlvblJlZikge1xuICAgICAgICBpbmRleC5zY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczYuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNi5tZW51SXNPcGVuO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKFxuICAgICAgLy8gZW5zdXJlIGZvY3VzIGlzIHJlc3RvcmVkIGNvcnJlY3RseSB3aGVuIHRoZSBjb250cm9sIGJlY29tZXMgZW5hYmxlZFxuICAgICAgaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkIHx8XG4gICAgICAvLyBlbnN1cmUgZm9jdXMgaXMgb24gdGhlIElucHV0IHdoZW4gdGhlIG1lbnUgb3BlbnNcbiAgICAgIGlzRm9jdXNlZCAmJiBtZW51SXNPcGVuICYmICFwcmV2UHJvcHMubWVudUlzT3Blbikge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0ZvY3VzZWQgJiYgaXNEaXNhYmxlZCAmJiAhcHJldlByb3BzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGJsdXJyZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbW1hdGljYWxseSBkaXNhYmxlZCB3aGlsZSBmb2N1c2VkXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGZhbHNlXG4gICAgICAgIH0sIHRoaXMub25NZW51Q2xvc2UpO1xuICAgICAgfSBlbHNlIGlmICghaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkICYmIHRoaXMuaW5wdXRSZWYgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGZvY3VzZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbWF0aWNhbGx5IHJlLWVuYWJsZWQgd2hpbGUgZm9jdXNlZCAoRmlyZWZveClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gc2Nyb2xsIHRoZSBmb2N1c2VkIG9wdGlvbiBpbnRvIHZpZXcgaWYgbmVjZXNzYXJ5XG4gICAgICBpZiAodGhpcy5tZW51TGlzdFJlZiAmJiB0aGlzLmZvY3VzZWRPcHRpb25SZWYgJiYgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSkge1xuICAgICAgICBpbmRleC5zY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nQ29tcG9zaXRpb24oKTtcbiAgICAgIHRoaXMuc3RvcExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENvbnN1bWVyIEhhbmRsZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIH0sIHtcbiAgICBrZXk6IFwib25NZW51T3BlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbk1lbnVPcGVuKCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1lbnVPcGVuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uTWVudUNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ21lbnUtY2xvc2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogdGhpcy5wcm9wcy5pbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25JbnB1dENoYW5nZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbklucHV0Q2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB0aGlzLnByb3BzLm9uSW5wdXRDaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE1ldGhvZHNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJmb2N1c0lucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvY3VzSW5wdXQoKSB7XG4gICAgICBpZiAoIXRoaXMuaW5wdXRSZWYpIHJldHVybjtcbiAgICAgIHRoaXMuaW5wdXRSZWYuZm9jdXMoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmx1cklucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJsdXJJbnB1dCgpIHtcbiAgICAgIGlmICghdGhpcy5pbnB1dFJlZikgcmV0dXJuO1xuICAgICAgdGhpcy5pbnB1dFJlZi5ibHVyKCk7XG4gICAgfVxuXG4gICAgLy8gYWxpYXNlZCBmb3IgY29uc3VtZXJzXG4gIH0sIHtcbiAgICBrZXk6IFwib3Blbk1lbnVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb3Blbk1lbnUoZm9jdXNPcHRpb24pIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlMiA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUyLnNlbGVjdFZhbHVlLFxuICAgICAgICBpc0ZvY3VzZWQgPSBfdGhpcyRzdGF0ZTIuaXNGb2N1c2VkO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSB0aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIG9wZW5BdEluZGV4ID0gZm9jdXNPcHRpb24gPT09ICdmaXJzdCcgPyAwIDogZm9jdXNhYmxlT3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSBmb2N1c2FibGVPcHRpb25zLmluZGV4T2Yoc2VsZWN0VmFsdWVbMF0pO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgb3BlbkF0SW5kZXggPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIG9ubHkgc2Nyb2xsIGlmIHRoZSBtZW51IGlzbid0IGFscmVhZHkgb3BlblxuICAgICAgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSA9ICEoaXNGb2N1c2VkICYmIHRoaXMubWVudUxpc3RSZWYpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0sXG4gICAgICAgIGZvY3VzZWRPcHRpb25JZDogdGhpcy5nZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0pXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIub25NZW51T3BlbigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvY3VzVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNWYWx1ZShkaXJlY3Rpb24pIHtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTMgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlMy5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGUzLmZvY3VzZWRWYWx1ZTtcblxuICAgICAgLy8gT25seSBtdWx0aXNlbGVjdHMgc3VwcG9ydCB2YWx1ZSBmb2N1c2luZ1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHJldHVybjtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBudWxsXG4gICAgICB9KTtcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBzZWxlY3RWYWx1ZS5pbmRleE9mKGZvY3VzZWRWYWx1ZSk7XG4gICAgICBpZiAoIWZvY3VzZWRWYWx1ZSkge1xuICAgICAgICBmb2N1c2VkSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBzZWxlY3RWYWx1ZS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG5leHRGb2N1cyA9IC0xO1xuICAgICAgaWYgKCFzZWxlY3RWYWx1ZS5sZW5ndGgpIHJldHVybjtcbiAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAvLyBkb24ndCBjeWNsZSBmcm9tIHRoZSBzdGFydCB0byB0aGUgZW5kXG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9jdXNlZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgLy8gaWYgbm90aGluZyBpcyBmb2N1c2VkLCBmb2N1cyB0aGUgbGFzdCB2YWx1ZSBmaXJzdFxuICAgICAgICAgICAgbmV4dEZvY3VzID0gbGFzdEluZGV4O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbmV4dCc6XG4gICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA+IC0xICYmIGZvY3VzZWRJbmRleCA8IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgbmV4dEZvY3VzID0gZm9jdXNlZEluZGV4ICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbjogbmV4dEZvY3VzICE9PSAtMSxcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBzZWxlY3RWYWx1ZVtuZXh0Rm9jdXNdXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9jdXNPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNPcHRpb24oKSB7XG4gICAgICB2YXIgZGlyZWN0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnZmlyc3QnO1xuICAgICAgdmFyIHBhZ2VTaXplID0gdGhpcy5wcm9wcy5wYWdlU2l6ZTtcbiAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uO1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLmdldEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIGlmICghb3B0aW9ucy5sZW5ndGgpIHJldHVybjtcbiAgICAgIHZhciBuZXh0Rm9jdXMgPSAwOyAvLyBoYW5kbGVzICdmaXJzdCdcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBvcHRpb25zLmluZGV4T2YoZm9jdXNlZE9wdGlvbik7XG4gICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHtcbiAgICAgICAgZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICB9XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCA+IDAgPyBmb2N1c2VkSW5kZXggLSAxIDogb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSAoZm9jdXNlZEluZGV4ICsgMSkgJSBvcHRpb25zLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncGFnZXVwJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA8IDApIG5leHRGb2N1cyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggKyBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA+IG9wdGlvbnMubGVuZ3RoIC0gMSkgbmV4dEZvY3VzID0gb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsYXN0Jykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBvcHRpb25zW25leHRGb2N1c10sXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiB0aGlzLmdldEZvY3VzZWRPcHRpb25JZChvcHRpb25zW25leHRGb2N1c10pXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGhlbWVcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBHZXR0ZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBmdW5jdGlvbiBnZXRUaGVtZSgpIHtcbiAgICAgIC8vIFVzZSB0aGUgZGVmYXVsdCB0aGVtZSBpZiB0aGVyZSBhcmUgbm8gY3VzdG9taXNhdGlvbnMuXG4gICAgICBpZiAoIXRoaXMucHJvcHMudGhlbWUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRUaGVtZTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSB0aGVtZSBwcm9wIGlzIGEgZnVuY3Rpb24sIGFzc3VtZSB0aGUgZnVuY3Rpb25cbiAgICAgIC8vIGtub3dzIGhvdyB0byBtZXJnZSB0aGUgcGFzc2VkLWluIGRlZmF1bHQgdGhlbWUgd2l0aFxuICAgICAgLy8gaXRzIG93biBtb2RpZmljYXRpb25zLlxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnRoZW1lKGRlZmF1bHRUaGVtZSk7XG4gICAgICB9XG4gICAgICAvLyBPdGhlcndpc2UsIGlmIGEgcGxhaW4gdGhlbWUgb2JqZWN0IHdhcyBwYXNzZWQgaW4sXG4gICAgICAvLyBvdmVybGF5IGl0IHdpdGggdGhlIGRlZmF1bHQgdGhlbWUuXG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0VGhlbWUpLCB0aGlzLnByb3BzLnRoZW1lKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tbW9uUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29tbW9uUHJvcHMoKSB7XG4gICAgICB2YXIgY2xlYXJWYWx1ZSA9IHRoaXMuY2xlYXJWYWx1ZSxcbiAgICAgICAgY3ggPSB0aGlzLmN4LFxuICAgICAgICBnZXRTdHlsZXMgPSB0aGlzLmdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lcyA9IHRoaXMuZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWUgPSB0aGlzLmdldFZhbHVlLFxuICAgICAgICBzZWxlY3RPcHRpb24gPSB0aGlzLnNlbGVjdE9wdGlvbixcbiAgICAgICAgc2V0VmFsdWUgPSB0aGlzLnNldFZhbHVlLFxuICAgICAgICBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICB2YXIgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGksXG4gICAgICAgIGlzUnRsID0gcHJvcHMuaXNSdGwsXG4gICAgICAgIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zO1xuICAgICAgdmFyIGhhc1ZhbHVlID0gdGhpcy5oYXNWYWx1ZSgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXJWYWx1ZTogY2xlYXJWYWx1ZSxcbiAgICAgICAgY3g6IGN4LFxuICAgICAgICBnZXRTdHlsZXM6IGdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWU6IGdldFZhbHVlLFxuICAgICAgICBoYXNWYWx1ZTogaGFzVmFsdWUsXG4gICAgICAgIGlzTXVsdGk6IGlzTXVsdGksXG4gICAgICAgIGlzUnRsOiBpc1J0bCxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgc2VsZWN0T3B0aW9uOiBzZWxlY3RPcHRpb24sXG4gICAgICAgIHNlbGVjdFByb3BzOiBwcm9wcyxcbiAgICAgICAgc2V0VmFsdWU6IHNldFZhbHVlLFxuICAgICAgICB0aGVtZTogdGhpcy5nZXRUaGVtZSgpXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNWYWx1ZSgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICByZXR1cm4gc2VsZWN0VmFsdWUubGVuZ3RoID4gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzT3B0aW9uc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNPcHRpb25zKCkge1xuICAgICAgcmV0dXJuICEhdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zKCkubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc0NsZWFyYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0NsZWFyYWJsZSgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0NsZWFyYWJsZSA9IF90aGlzJHByb3BzNy5pc0NsZWFyYWJsZSxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNy5pc011bHRpO1xuXG4gICAgICAvLyBzaW5nbGUgc2VsZWN0LCBieSBkZWZhdWx0LCBJUyBOT1QgY2xlYXJhYmxlXG4gICAgICAvLyBtdWx0aSBzZWxlY3QsIGJ5IGRlZmF1bHQsIElTIGNsZWFyYWJsZVxuICAgICAgaWYgKGlzQ2xlYXJhYmxlID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICAgICAgcmV0dXJuIGlzQ2xlYXJhYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvbkRpc2FibGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvbkRpc2FibGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvblNlbGVjdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvblNlbGVjdGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaWx0ZXJPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlsdGVyT3B0aW9uKG9wdGlvbiwgaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9maWx0ZXJPcHRpb24odGhpcy5wcm9wcywgb3B0aW9uLCBpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0T3B0aW9uTGFiZWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9ybWF0T3B0aW9uTGFiZWwoZGF0YSwgY29udGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBfaW5wdXRWYWx1ZSA9IHRoaXMucHJvcHMuaW5wdXRWYWx1ZTtcbiAgICAgICAgdmFyIF9zZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsKGRhdGEsIHtcbiAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgIGlucHV0VmFsdWU6IF9pbnB1dFZhbHVlLFxuICAgICAgICAgIHNlbGVjdFZhbHVlOiBfc2VsZWN0VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0R3JvdXBMYWJlbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXRHcm91cExhYmVsKGRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdEdyb3VwTGFiZWwoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTW91c2UgSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ29tcG9zaXRpb24gSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nQ29tcG9zaXRpb24oKSB7XG4gICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0JywgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQsIGZhbHNlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdDb21wb3NpdGlvbigpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJywgdGhpcy5vbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVG91Y2ggSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nVG9Ub3VjaCgpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLm9uVG91Y2hTdGFydCwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLm9uVG91Y2hNb3ZlLCBmYWxzZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN0b3BMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdUb1RvdWNoKCkge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0KTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5vblRvdWNoTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySW5wdXRcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBSZW5kZXJlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBmdW5jdGlvbiByZW5kZXJJbnB1dCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczggPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM4LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzU2VhcmNoYWJsZSA9IF90aGlzJHByb3BzOC5pc1NlYXJjaGFibGUsXG4gICAgICAgIGlucHV0SWQgPSBfdGhpcyRwcm9wczguaW5wdXRJZCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOC5pbnB1dFZhbHVlLFxuICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzOC50YWJJbmRleCxcbiAgICAgICAgZm9ybSA9IF90aGlzJHByb3BzOC5mb3JtLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM4Lm1lbnVJc09wZW4sXG4gICAgICAgIHJlcXVpcmVkID0gX3RoaXMkcHJvcHM4LnJlcXVpcmVkO1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgSW5wdXQgPSBfdGhpcyRnZXRDb21wb25lbnRzLklucHV0O1xuICAgICAgdmFyIF90aGlzJHN0YXRlNCA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW4gPSBfdGhpcyRzdGF0ZTQuaW5wdXRJc0hpZGRlbixcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IF90aGlzJHN0YXRlNC5hcmlhU2VsZWN0aW9uO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpZCA9IGlucHV0SWQgfHwgdGhpcy5nZXRFbGVtZW50SWQoJ2lucHV0Jyk7XG5cbiAgICAgIC8vIGFyaWEgYXR0cmlidXRlcyBtYWtlcyB0aGUgSlNYIFwibm9pc3lcIiwgc2VwYXJhdGVkIGZvciBjbGFyaXR5XG4gICAgICB2YXIgYXJpYUF0dHJpYnV0ZXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdsaXN0JyxcbiAgICAgICAgJ2FyaWEtZXhwYW5kZWQnOiBtZW51SXNPcGVuLFxuICAgICAgICAnYXJpYS1oYXNwb3B1cCc6IHRydWUsXG4gICAgICAgICdhcmlhLWVycm9ybWVzc2FnZSc6IHRoaXMucHJvcHNbJ2FyaWEtZXJyb3JtZXNzYWdlJ10sXG4gICAgICAgICdhcmlhLWludmFsaWQnOiB0aGlzLnByb3BzWydhcmlhLWludmFsaWQnXSxcbiAgICAgICAgJ2FyaWEtbGFiZWwnOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsJ10sXG4gICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsbGVkYnknXSxcbiAgICAgICAgJ2FyaWEtcmVxdWlyZWQnOiByZXF1aXJlZCxcbiAgICAgICAgcm9sZTogJ2NvbWJvYm94JyxcbiAgICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IHRoaXMuaXNBcHBsZURldmljZSA/IHVuZGVmaW5lZCA6IHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkIHx8ICcnXG4gICAgICB9LCBtZW51SXNPcGVuICYmIHtcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnOiB0aGlzLmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICB9KSwgIWlzU2VhcmNoYWJsZSAmJiB7XG4gICAgICAgICdhcmlhLXJlYWRvbmx5JzogdHJ1ZVxuICAgICAgfSksIHRoaXMuaGFzVmFsdWUoKSA/IChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnICYmIHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgnbGl2ZS1yZWdpb24nKVxuICAgICAgfSA6IHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgncGxhY2Vob2xkZXInKVxuICAgICAgfSk7XG4gICAgICBpZiAoIWlzU2VhcmNoYWJsZSkge1xuICAgICAgICAvLyB1c2UgYSBkdW1teSBpbnB1dCB0byBtYWludGFpbiBmb2N1cy9ibHVyIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoRHVtbXlJbnB1dCwgX2V4dGVuZHMoe1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRJbnB1dFJlZixcbiAgICAgICAgICBvbkJsdXI6IHRoaXMub25JbnB1dEJsdXIsXG4gICAgICAgICAgb25DaGFuZ2U6IGluZGV4Lm5vb3AsXG4gICAgICAgICAgb25Gb2N1czogdGhpcy5vbklucHV0Rm9jdXMsXG4gICAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4LFxuICAgICAgICAgIGlucHV0TW9kZTogXCJub25lXCIsXG4gICAgICAgICAgZm9ybTogZm9ybSxcbiAgICAgICAgICB2YWx1ZTogXCJcIlxuICAgICAgICB9LCBhcmlhQXR0cmlidXRlcykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoSW5wdXQsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBhdXRvQ2FwaXRhbGl6ZTogXCJub25lXCIsXG4gICAgICAgIGF1dG9Db21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgYXV0b0NvcnJlY3Q6IFwib2ZmXCIsXG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgaW5uZXJSZWY6IHRoaXMuZ2V0SW5wdXRSZWYsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzSGlkZGVuOiBpbnB1dElzSGlkZGVuLFxuICAgICAgICBvbkJsdXI6IHRoaXMub25JbnB1dEJsdXIsXG4gICAgICAgIG9uQ2hhbmdlOiB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlLFxuICAgICAgICBvbkZvY3VzOiB0aGlzLm9uSW5wdXRGb2N1cyxcbiAgICAgICAgc3BlbGxDaGVjazogXCJmYWxzZVwiLFxuICAgICAgICB0YWJJbmRleDogdGFiSW5kZXgsXG4gICAgICAgIGZvcm06IGZvcm0sXG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB2YWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgfSwgYXJpYUF0dHJpYnV0ZXMpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclBsYWNlaG9sZGVyT3JWYWx1ZSgpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMyID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIE11bHRpVmFsdWUgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlLFxuICAgICAgICBNdWx0aVZhbHVlQ29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuTXVsdGlWYWx1ZUNvbnRhaW5lcixcbiAgICAgICAgTXVsdGlWYWx1ZUxhYmVsID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuTXVsdGlWYWx1ZUxhYmVsLFxuICAgICAgICBNdWx0aVZhbHVlUmVtb3ZlID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuTXVsdGlWYWx1ZVJlbW92ZSxcbiAgICAgICAgU2luZ2xlVmFsdWUgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5TaW5nbGVWYWx1ZSxcbiAgICAgICAgUGxhY2Vob2xkZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5QbGFjZWhvbGRlcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM5ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlID0gX3RoaXMkcHJvcHM5LmNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSxcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzOS5pc0Rpc2FibGVkLFxuICAgICAgICBpc011bHRpID0gX3RoaXMkcHJvcHM5LmlzTXVsdGksXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczkuaW5wdXRWYWx1ZSxcbiAgICAgICAgcGxhY2Vob2xkZXIgPSBfdGhpcyRwcm9wczkucGxhY2Vob2xkZXI7XG4gICAgICB2YXIgX3RoaXMkc3RhdGU1ID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTUuc2VsZWN0VmFsdWUsXG4gICAgICAgIGZvY3VzZWRWYWx1ZSA9IF90aGlzJHN0YXRlNS5mb2N1c2VkVmFsdWUsXG4gICAgICAgIGlzRm9jdXNlZCA9IF90aGlzJHN0YXRlNS5pc0ZvY3VzZWQ7XG4gICAgICBpZiAoIXRoaXMuaGFzVmFsdWUoKSB8fCAhY29udHJvbFNob3VsZFJlbmRlclZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpbnB1dFZhbHVlID8gbnVsbCA6IC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoUGxhY2Vob2xkZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgIGtleTogXCJwbGFjZWhvbGRlclwiLFxuICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgICAgaWQ6IHRoaXMuZ2V0RWxlbWVudElkKCdwbGFjZWhvbGRlcicpXG4gICAgICAgICAgfVxuICAgICAgICB9KSwgcGxhY2Vob2xkZXIpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpbmRleCkge1xuICAgICAgICAgIHZhciBpc09wdGlvbkZvY3VzZWQgPSBvcHQgPT09IGZvY3VzZWRWYWx1ZTtcbiAgICAgICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoX3RoaXMzLmdldE9wdGlvbkxhYmVsKG9wdCksIFwiLVwiKS5jb25jYXQoX3RoaXMzLmdldE9wdGlvblZhbHVlKG9wdCkpO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KE11bHRpVmFsdWUsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgICBDb250YWluZXI6IE11bHRpVmFsdWVDb250YWluZXIsXG4gICAgICAgICAgICAgIExhYmVsOiBNdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgICAgICAgIFJlbW92ZTogTXVsdGlWYWx1ZVJlbW92ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRm9jdXNlZDogaXNPcHRpb25Gb2N1c2VkLFxuICAgICAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgcmVtb3ZlUHJvcHM6IHtcbiAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMzLnJlbW92ZVZhbHVlKG9wdCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uVG91Y2hFbmQ6IGZ1bmN0aW9uIG9uVG91Y2hFbmQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5yZW1vdmVWYWx1ZShvcHQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbk1vdXNlRG93bjogZnVuY3Rpb24gb25Nb3VzZURvd24oZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGE6IG9wdFxuICAgICAgICAgIH0pLCBfdGhpczMuZm9ybWF0T3B0aW9uTGFiZWwob3B0LCAndmFsdWUnKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0VmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgc2luZ2xlVmFsdWUgPSBzZWxlY3RWYWx1ZVswXTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFNpbmdsZVZhbHVlLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgZGF0YTogc2luZ2xlVmFsdWUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgICAgIH0pLCB0aGlzLmZvcm1hdE9wdGlvbkxhYmVsKHNpbmdsZVZhbHVlLCAndmFsdWUnKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckNsZWFySW5kaWNhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckNsZWFySW5kaWNhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMzID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIENsZWFySW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czMuQ2xlYXJJbmRpY2F0b3I7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTAgPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHMxMC5pc0Rpc2FibGVkLFxuICAgICAgICBpc0xvYWRpbmcgPSBfdGhpcyRwcm9wczEwLmlzTG9hZGluZztcbiAgICAgIHZhciBpc0ZvY3VzZWQgPSB0aGlzLnN0YXRlLmlzRm9jdXNlZDtcbiAgICAgIGlmICghdGhpcy5pc0NsZWFyYWJsZSgpIHx8ICFDbGVhckluZGljYXRvciB8fCBpc0Rpc2FibGVkIHx8ICF0aGlzLmhhc1ZhbHVlKCkgfHwgaXNMb2FkaW5nKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGlubmVyUHJvcHMgPSB7XG4gICAgICAgIG9uTW91c2VEb3duOiB0aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24sXG4gICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMub25DbGVhckluZGljYXRvclRvdWNoRW5kLFxuICAgICAgICAnYXJpYS1oaWRkZW4nOiAndHJ1ZSdcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChDbGVhckluZGljYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckxvYWRpbmdJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTG9hZGluZ0luZGljYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNCA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBMb2FkaW5nSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czQuTG9hZGluZ0luZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMSA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczExLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTEuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCFMb2FkaW5nSW5kaWNhdG9yIHx8ICFpc0xvYWRpbmcpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGlubmVyUHJvcHMgPSB7XG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KExvYWRpbmdJbmRpY2F0b3IsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclByb3BzOiBpbm5lclByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJJbmRpY2F0b3JTZXBhcmF0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM1ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIERyb3Bkb3duSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czUuRHJvcGRvd25JbmRpY2F0b3IsXG4gICAgICAgIEluZGljYXRvclNlcGFyYXRvciA9IF90aGlzJGdldENvbXBvbmVudHM1LkluZGljYXRvclNlcGFyYXRvcjtcblxuICAgICAgLy8gc2VwYXJhdG9yIGRvZXNuJ3QgbWFrZSBzZW5zZSB3aXRob3V0IHRoZSBkcm9wZG93biBpbmRpY2F0b3JcbiAgICAgIGlmICghRHJvcGRvd25JbmRpY2F0b3IgfHwgIUluZGljYXRvclNlcGFyYXRvcikgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSB0aGlzLnByb3BzLmlzRGlzYWJsZWQ7XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChJbmRpY2F0b3JTZXBhcmF0b3IsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJEcm9wZG93bkluZGljYXRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJEcm9wZG93bkluZGljYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNiA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBEcm9wZG93bkluZGljYXRvciA9IF90aGlzJGdldENvbXBvbmVudHM2LkRyb3Bkb3duSW5kaWNhdG9yO1xuICAgICAgaWYgKCFEcm9wZG93bkluZGljYXRvcikgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSB0aGlzLnByb3BzLmlzRGlzYWJsZWQ7XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25Ecm9wZG93bkluZGljYXRvck1vdXNlRG93bixcbiAgICAgICAgb25Ub3VjaEVuZDogdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yVG91Y2hFbmQsXG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KERyb3Bkb3duSW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTWVudVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJNZW51KCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czcgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgR3JvdXAgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Hcm91cCxcbiAgICAgICAgR3JvdXBIZWFkaW5nID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuR3JvdXBIZWFkaW5nLFxuICAgICAgICBNZW51ID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTWVudSxcbiAgICAgICAgTWVudUxpc3QgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5NZW51TGlzdCxcbiAgICAgICAgTWVudVBvcnRhbCA9IF90aGlzJGdldENvbXBvbmVudHM3Lk1lbnVQb3J0YWwsXG4gICAgICAgIExvYWRpbmdNZXNzYWdlID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTG9hZGluZ01lc3NhZ2UsXG4gICAgICAgIE5vT3B0aW9uc01lc3NhZ2UgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Ob09wdGlvbnNNZXNzYWdlLFxuICAgICAgICBPcHRpb24gPSBfdGhpcyRnZXRDb21wb25lbnRzNy5PcHRpb247XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb24gPSB0aGlzLnN0YXRlLmZvY3VzZWRPcHRpb247XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNhcHR1cmVNZW51U2Nyb2xsID0gX3RoaXMkcHJvcHMxMi5jYXB0dXJlTWVudVNjcm9sbCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzMTIuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNMb2FkaW5nID0gX3RoaXMkcHJvcHMxMi5pc0xvYWRpbmcsXG4gICAgICAgIGxvYWRpbmdNZXNzYWdlID0gX3RoaXMkcHJvcHMxMi5sb2FkaW5nTWVzc2FnZSxcbiAgICAgICAgbWluTWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWluTWVudUhlaWdodCxcbiAgICAgICAgbWF4TWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWF4TWVudUhlaWdodCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzMTIubWVudUlzT3BlbixcbiAgICAgICAgbWVudVBsYWNlbWVudCA9IF90aGlzJHByb3BzMTIubWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uID0gX3RoaXMkcHJvcHMxMi5tZW51UG9zaXRpb24sXG4gICAgICAgIG1lbnVQb3J0YWxUYXJnZXQgPSBfdGhpcyRwcm9wczEyLm1lbnVQb3J0YWxUYXJnZXQsXG4gICAgICAgIG1lbnVTaG91bGRCbG9ja1Njcm9sbCA9IF90aGlzJHByb3BzMTIubWVudVNob3VsZEJsb2NrU2Nyb2xsLFxuICAgICAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBfdGhpcyRwcm9wczEyLm1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyxcbiAgICAgICAgbm9PcHRpb25zTWVzc2FnZSA9IF90aGlzJHByb3BzMTIubm9PcHRpb25zTWVzc2FnZSxcbiAgICAgICAgb25NZW51U2Nyb2xsVG9Ub3AgPSBfdGhpcyRwcm9wczEyLm9uTWVudVNjcm9sbFRvVG9wLFxuICAgICAgICBvbk1lbnVTY3JvbGxUb0JvdHRvbSA9IF90aGlzJHByb3BzMTIub25NZW51U2Nyb2xsVG9Cb3R0b207XG4gICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybiBudWxsO1xuXG4gICAgICAvLyBUT0RPOiBJbnRlcm5hbCBPcHRpb24gVHlwZSBoZXJlXG4gICAgICB2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKHByb3BzLCBpZCkge1xuICAgICAgICB2YXIgdHlwZSA9IHByb3BzLnR5cGUsXG4gICAgICAgICAgZGF0YSA9IHByb3BzLmRhdGEsXG4gICAgICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTZWxlY3RlZCA9IHByb3BzLmlzU2VsZWN0ZWQsXG4gICAgICAgICAgbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlO1xuICAgICAgICB2YXIgaXNGb2N1c2VkID0gZm9jdXNlZE9wdGlvbiA9PT0gZGF0YTtcbiAgICAgICAgdmFyIG9uSG92ZXIgPSBpc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQub25PcHRpb25Ib3ZlcihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9uU2VsZWN0ID0gaXNEaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXM0LnNlbGVjdE9wdGlvbihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9wdGlvbklkID0gXCJcIi5jb25jYXQoX3RoaXM0LmdldEVsZW1lbnRJZCgnb3B0aW9uJyksIFwiLVwiKS5jb25jYXQoaWQpO1xuICAgICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgICBpZDogb3B0aW9uSWQsXG4gICAgICAgICAgb25DbGljazogb25TZWxlY3QsXG4gICAgICAgICAgb25Nb3VzZU1vdmU6IG9uSG92ZXIsXG4gICAgICAgICAgb25Nb3VzZU92ZXI6IG9uSG92ZXIsXG4gICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogX3RoaXM0LmlzQXBwbGVEZXZpY2UgPyB1bmRlZmluZWQgOiBpc1NlbGVjdGVkIC8vIGlzIG5vdCBzdXBwb3J0ZWQgb24gQXBwbGUgZGV2aWNlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KE9wdGlvbiwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgICBrZXk6IG9wdGlvbklkLFxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZCxcbiAgICAgICAgICBpbm5lclJlZjogaXNGb2N1c2VkID8gX3RoaXM0LmdldEZvY3VzZWRPcHRpb25SZWYgOiB1bmRlZmluZWRcbiAgICAgICAgfSksIF90aGlzNC5mb3JtYXRPcHRpb25MYWJlbChwcm9wcy5kYXRhLCAnbWVudScpKTtcbiAgICAgIH07XG4gICAgICB2YXIgbWVudVVJO1xuICAgICAgaWYgKHRoaXMuaGFzT3B0aW9ucygpKSB7XG4gICAgICAgIG1lbnVVSSA9IHRoaXMuZ2V0Q2F0ZWdvcml6ZWRPcHRpb25zKCkubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgICAgdmFyIF9kYXRhID0gaXRlbS5kYXRhLFxuICAgICAgICAgICAgICBvcHRpb25zID0gaXRlbS5vcHRpb25zLFxuICAgICAgICAgICAgICBncm91cEluZGV4ID0gaXRlbS5pbmRleDtcbiAgICAgICAgICAgIHZhciBncm91cElkID0gXCJcIi5jb25jYXQoX3RoaXM0LmdldEVsZW1lbnRJZCgnZ3JvdXAnKSwgXCItXCIpLmNvbmNhdChncm91cEluZGV4KTtcbiAgICAgICAgICAgIHZhciBoZWFkaW5nSWQgPSBcIlwiLmNvbmNhdChncm91cElkLCBcIi1oZWFkaW5nXCIpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoR3JvdXAsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgICAgICBrZXk6IGdyb3VwSWQsXG4gICAgICAgICAgICAgIGRhdGE6IF9kYXRhLFxuICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAgICAgICBIZWFkaW5nOiBHcm91cEhlYWRpbmcsXG4gICAgICAgICAgICAgIGhlYWRpbmdQcm9wczoge1xuICAgICAgICAgICAgICAgIGlkOiBoZWFkaW5nSWQsXG4gICAgICAgICAgICAgICAgZGF0YTogaXRlbS5kYXRhXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBfdGhpczQuZm9ybWF0R3JvdXBMYWJlbChpdGVtLmRhdGEpXG4gICAgICAgICAgICB9KSwgaXRlbS5vcHRpb25zLm1hcChmdW5jdGlvbiAob3B0aW9uKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZW5kZXIob3B0aW9uLCBcIlwiLmNvbmNhdChncm91cEluZGV4LCBcIi1cIikuY29uY2F0KG9wdGlvbi5pbmRleCkpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnb3B0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihpdGVtLCBcIlwiLmNvbmNhdChpdGVtLmluZGV4KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNMb2FkaW5nKSB7XG4gICAgICAgIHZhciBtZXNzYWdlID0gbG9hZGluZ01lc3NhZ2Uoe1xuICAgICAgICAgIGlucHV0VmFsdWU6IGlucHV0VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChtZXNzYWdlID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbWVudVVJID0gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChMb2FkaW5nTWVzc2FnZSwgY29tbW9uUHJvcHMsIG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF9tZXNzYWdlID0gbm9PcHRpb25zTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKF9tZXNzYWdlID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbWVudVVJID0gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChOb09wdGlvbnNNZXNzYWdlLCBjb21tb25Qcm9wcywgX21lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdmFyIG1lbnVQbGFjZW1lbnRQcm9wcyA9IHtcbiAgICAgICAgbWluTWVudUhlaWdodDogbWluTWVudUhlaWdodCxcbiAgICAgICAgbWF4TWVudUhlaWdodDogbWF4TWVudUhlaWdodCxcbiAgICAgICAgbWVudVBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uOiBtZW51UG9zaXRpb24sXG4gICAgICAgIG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldzogbWVudVNob3VsZFNjcm9sbEludG9WaWV3XG4gICAgICB9O1xuICAgICAgdmFyIG1lbnVFbGVtZW50ID0gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChpbmRleC5NZW51UGxhY2VyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIG1lbnVQbGFjZW1lbnRQcm9wcyksIGZ1bmN0aW9uIChfcmVmNCkge1xuICAgICAgICB2YXIgcmVmID0gX3JlZjQucmVmLFxuICAgICAgICAgIF9yZWY0JHBsYWNlclByb3BzID0gX3JlZjQucGxhY2VyUHJvcHMsXG4gICAgICAgICAgcGxhY2VtZW50ID0gX3JlZjQkcGxhY2VyUHJvcHMucGxhY2VtZW50LFxuICAgICAgICAgIG1heEhlaWdodCA9IF9yZWY0JHBsYWNlclByb3BzLm1heEhlaWdodDtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoTWVudSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCBtZW51UGxhY2VtZW50UHJvcHMsIHtcbiAgICAgICAgICBpbm5lclJlZjogcmVmLFxuICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgIG9uTW91c2VEb3duOiBfdGhpczQub25NZW51TW91c2VEb3duLFxuICAgICAgICAgICAgb25Nb3VzZU1vdmU6IF90aGlzNC5vbk1lbnVNb3VzZU1vdmVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFNjcm9sbE1hbmFnZXIsIHtcbiAgICAgICAgICBjYXB0dXJlRW5hYmxlZDogY2FwdHVyZU1lbnVTY3JvbGwsXG4gICAgICAgICAgb25Ub3BBcnJpdmU6IG9uTWVudVNjcm9sbFRvVG9wLFxuICAgICAgICAgIG9uQm90dG9tQXJyaXZlOiBvbk1lbnVTY3JvbGxUb0JvdHRvbSxcbiAgICAgICAgICBsb2NrRW5hYmxlZDogbWVudVNob3VsZEJsb2NrU2Nyb2xsXG4gICAgICAgIH0sIGZ1bmN0aW9uIChzY3JvbGxUYXJnZXRSZWYpIHtcbiAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChNZW51TGlzdCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgICBpbm5lclJlZjogZnVuY3Rpb24gaW5uZXJSZWYoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgX3RoaXM0LmdldE1lbnVMaXN0UmVmKGluc3RhbmNlKTtcbiAgICAgICAgICAgICAgc2Nyb2xsVGFyZ2V0UmVmKGluc3RhbmNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgICAgIHJvbGU6ICdsaXN0Ym94JyxcbiAgICAgICAgICAgICAgJ2FyaWEtbXVsdGlzZWxlY3RhYmxlJzogY29tbW9uUHJvcHMuaXNNdWx0aSxcbiAgICAgICAgICAgICAgaWQ6IF90aGlzNC5nZXRFbGVtZW50SWQoJ2xpc3Rib3gnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHQsXG4gICAgICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2VkT3B0aW9uXG4gICAgICAgICAgfSksIG1lbnVVSSk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBwb3NpdGlvbmluZyBiZWhhdmlvdXIgaXMgYWxtb3N0IGlkZW50aWNhbCBmb3IgcG9ydGFsbGVkIGFuZCBmaXhlZCxcbiAgICAgIC8vIHNvIHdlIHVzZSB0aGUgc2FtZSBjb21wb25lbnQuIHRoZSBhY3R1YWwgcG9ydGFsbGluZyBsb2dpYyBpcyBmb3JrZWRcbiAgICAgIC8vIHdpdGhpbiB0aGUgY29tcG9uZW50IGJhc2VkIG9uIGBtZW51UG9zaXRpb25gXG4gICAgICByZXR1cm4gbWVudVBvcnRhbFRhcmdldCB8fCBtZW51UG9zaXRpb24gPT09ICdmaXhlZCcgPyAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KE1lbnVQb3J0YWwsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBhcHBlbmRUbzogbWVudVBvcnRhbFRhcmdldCxcbiAgICAgICAgY29udHJvbEVsZW1lbnQ6IHRoaXMuY29udHJvbFJlZixcbiAgICAgICAgbWVudVBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uOiBtZW51UG9zaXRpb25cbiAgICAgIH0pLCBtZW51RWxlbWVudCkgOiBtZW51RWxlbWVudDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyRm9ybUZpZWxkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckZvcm1GaWVsZCgpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTMgPSB0aGlzLnByb3BzLFxuICAgICAgICBkZWxpbWl0ZXIgPSBfdGhpcyRwcm9wczEzLmRlbGltaXRlcixcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzMTMuaXNEaXNhYmxlZCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMTMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMTMubmFtZSxcbiAgICAgICAgcmVxdWlyZWQgPSBfdGhpcyRwcm9wczEzLnJlcXVpcmVkO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAhdGhpcy5oYXNWYWx1ZSgpICYmICFpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFJlcXVpcmVkSW5wdXQkMSwge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgb25Gb2N1czogdGhpcy5vblZhbHVlSW5wdXRGb2N1c1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghbmFtZSB8fCBpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICBpZiAoaXNNdWx0aSkge1xuICAgICAgICBpZiAoZGVsaW1pdGVyKSB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gc2VsZWN0VmFsdWUubWFwKGZ1bmN0aW9uIChvcHQpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczUuZ2V0T3B0aW9uVmFsdWUob3B0KTtcbiAgICAgICAgICB9KS5qb2luKGRlbGltaXRlcik7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBpbnB1dCA9IHNlbGVjdFZhbHVlLmxlbmd0aCA+IDAgPyBzZWxlY3RWYWx1ZS5tYXAoZnVuY3Rpb24gKG9wdCwgaSkge1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGtleTogXCJpLVwiLmNvbmNhdChpKSxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgICAgdmFsdWU6IF90aGlzNS5nZXRPcHRpb25WYWx1ZShvcHQpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSA6IC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgIHZhbHVlOiBcIlwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCwgaW5wdXQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX3ZhbHVlID0gc2VsZWN0VmFsdWVbMF0gPyB0aGlzLmdldE9wdGlvblZhbHVlKHNlbGVjdFZhbHVlWzBdKSA6ICcnO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgdmFsdWU6IF92YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTGl2ZVJlZ2lvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJMaXZlUmVnaW9uKCkge1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTYgPSB0aGlzLnN0YXRlLFxuICAgICAgICBhcmlhU2VsZWN0aW9uID0gX3RoaXMkc3RhdGU2LmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZTYuZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU2LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU2LmlzRm9jdXNlZCxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTYuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IHRoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoTGl2ZVJlZ2lvbiQxLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaWQ6IHRoaXMuZ2V0RWxlbWVudElkKCdsaXZlLXJlZ2lvbicpLFxuICAgICAgICBhcmlhU2VsZWN0aW9uOiBhcmlhU2VsZWN0aW9uLFxuICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWU6IGZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgIHNlbGVjdFZhbHVlOiBzZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNhYmxlT3B0aW9uczogZm9jdXNhYmxlT3B0aW9ucyxcbiAgICAgICAgaXNBcHBsZURldmljZTogdGhpcy5pc0FwcGxlRGV2aWNlXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czggPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgQ29udHJvbCA9IF90aGlzJGdldENvbXBvbmVudHM4LkNvbnRyb2wsXG4gICAgICAgIEluZGljYXRvcnNDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5JbmRpY2F0b3JzQ29udGFpbmVyLFxuICAgICAgICBTZWxlY3RDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5TZWxlY3RDb250YWluZXIsXG4gICAgICAgIFZhbHVlQ29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguVmFsdWVDb250YWluZXI7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzMTQuY2xhc3NOYW1lLFxuICAgICAgICBpZCA9IF90aGlzJHByb3BzMTQuaWQsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczE0LmlzRGlzYWJsZWQsXG4gICAgICAgIG1lbnVJc09wZW4gPSBfdGhpcyRwcm9wczE0Lm1lbnVJc09wZW47XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzID0gdGhpcy5nZXRDb21tb25Qcm9wcygpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgb25LZXlEb3duOiB0aGlzLm9uS2V5RG93blxuICAgICAgICB9LFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSksIHRoaXMucmVuZGVyTGl2ZVJlZ2lvbigpLCAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KENvbnRyb2wsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRDb250cm9sUmVmLFxuICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25Db250cm9sTW91c2VEb3duLFxuICAgICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMub25Db250cm9sVG91Y2hFbmRcbiAgICAgICAgfSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW5cbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFZhbHVlQ29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMucmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlKCksIHRoaXMucmVuZGVySW5wdXQoKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoSW5kaWNhdG9yc0NvbnRhaW5lciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgICAgIH0pLCB0aGlzLnJlbmRlckNsZWFySW5kaWNhdG9yKCksIHRoaXMucmVuZGVyTG9hZGluZ0luZGljYXRvcigpLCB0aGlzLnJlbmRlckluZGljYXRvclNlcGFyYXRvcigpLCB0aGlzLnJlbmRlckRyb3Bkb3duSW5kaWNhdG9yKCkpKSwgdGhpcy5yZW5kZXJNZW51KCksIHRoaXMucmVuZGVyRm9ybUZpZWxkKCkpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgICB2YXIgcHJldlByb3BzID0gc3RhdGUucHJldlByb3BzLFxuICAgICAgICBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZSA9IHN0YXRlLmNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlLFxuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUgPSBzdGF0ZS5pbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUsXG4gICAgICAgIGFyaWFTZWxlY3Rpb24gPSBzdGF0ZS5hcmlhU2VsZWN0aW9uLFxuICAgICAgICBpc0ZvY3VzZWQgPSBzdGF0ZS5pc0ZvY3VzZWQsXG4gICAgICAgIHByZXZXYXNGb2N1c2VkID0gc3RhdGUucHJldldhc0ZvY3VzZWQsXG4gICAgICAgIGluc3RhbmNlUHJlZml4ID0gc3RhdGUuaW5zdGFuY2VQcmVmaXg7XG4gICAgICB2YXIgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnMsXG4gICAgICAgIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgICAgIG1lbnVJc09wZW4gPSBwcm9wcy5tZW51SXNPcGVuLFxuICAgICAgICBpbnB1dFZhbHVlID0gcHJvcHMuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBpbmRleC5jbGVhblZhbHVlKHZhbHVlKTtcbiAgICAgIHZhciBuZXdNZW51T3B0aW9uc1N0YXRlID0ge307XG4gICAgICBpZiAocHJldlByb3BzICYmICh2YWx1ZSAhPT0gcHJldlByb3BzLnZhbHVlIHx8IG9wdGlvbnMgIT09IHByZXZQcm9wcy5vcHRpb25zIHx8IG1lbnVJc09wZW4gIT09IHByZXZQcm9wcy5tZW51SXNPcGVuIHx8IGlucHV0VmFsdWUgIT09IHByZXZQcm9wcy5pbnB1dFZhbHVlKSkge1xuICAgICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IG1lbnVJc09wZW4gPyBidWlsZEZvY3VzYWJsZU9wdGlvbnMocHJvcHMsIHNlbGVjdFZhbHVlKSA6IFtdO1xuICAgICAgICB2YXIgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBtZW51SXNPcGVuID8gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpLCBcIlwiLmNvbmNhdChpbnN0YW5jZVByZWZpeCwgXCItb3B0aW9uXCIpKSA6IFtdO1xuICAgICAgICB2YXIgZm9jdXNlZFZhbHVlID0gY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGUgPyBnZXROZXh0Rm9jdXNlZFZhbHVlKHN0YXRlLCBzZWxlY3RWYWx1ZSkgOiBudWxsO1xuICAgICAgICB2YXIgZm9jdXNlZE9wdGlvbiA9IGdldE5leHRGb2N1c2VkT3B0aW9uKHN0YXRlLCBmb2N1c2FibGVPcHRpb25zKTtcbiAgICAgICAgdmFyIGZvY3VzZWRPcHRpb25JZCA9IGdldEZvY3VzZWRPcHRpb25JZChmb2N1c2FibGVPcHRpb25zV2l0aElkcywgZm9jdXNlZE9wdGlvbik7XG4gICAgICAgIG5ld01lbnVPcHRpb25zU3RhdGUgPSB7XG4gICAgICAgICAgc2VsZWN0VmFsdWU6IHNlbGVjdFZhbHVlLFxuICAgICAgICAgIGZvY3VzZWRPcHRpb246IGZvY3VzZWRPcHRpb24sXG4gICAgICAgICAgZm9jdXNlZE9wdGlvbklkOiBmb2N1c2VkT3B0aW9uSWQsXG4gICAgICAgICAgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHM6IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLFxuICAgICAgICAgIGZvY3VzZWRWYWx1ZTogZm9jdXNlZFZhbHVlLFxuICAgICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgLy8gc29tZSB1cGRhdGVzIHNob3VsZCB0b2dnbGUgdGhlIHN0YXRlIG9mIHRoZSBpbnB1dCB2aXNpYmlsaXR5XG4gICAgICB2YXIgbmV3SW5wdXRJc0hpZGRlblN0YXRlID0gaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlICE9IG51bGwgJiYgcHJvcHMgIT09IHByZXZQcm9wcyA/IHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbjogaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlLFxuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IHVuZGVmaW5lZFxuICAgICAgfSA6IHt9O1xuICAgICAgdmFyIG5ld0FyaWFTZWxlY3Rpb24gPSBhcmlhU2VsZWN0aW9uO1xuICAgICAgdmFyIGhhc0tlcHRGb2N1cyA9IGlzRm9jdXNlZCAmJiBwcmV2V2FzRm9jdXNlZDtcbiAgICAgIGlmIChpc0ZvY3VzZWQgJiYgIWhhc0tlcHRGb2N1cykge1xuICAgICAgICAvLyBJZiBgdmFsdWVgIG9yIGBkZWZhdWx0VmFsdWVgIHByb3BzIGFyZSBub3QgZW1wdHkgdGhlbiBhbm5vdW5jZSB0aGVtXG4gICAgICAgIC8vIHdoZW4gdGhlIFNlbGVjdCBpcyBpbml0aWFsbHkgZm9jdXNlZFxuICAgICAgICBuZXdBcmlhU2VsZWN0aW9uID0ge1xuICAgICAgICAgIHZhbHVlOiBpbmRleC52YWx1ZVRlcm5hcnkoaXNNdWx0aSwgc2VsZWN0VmFsdWUsIHNlbGVjdFZhbHVlWzBdIHx8IG51bGwpLFxuICAgICAgICAgIG9wdGlvbnM6IHNlbGVjdFZhbHVlLFxuICAgICAgICAgIGFjdGlvbjogJ2luaXRpYWwtaW5wdXQtZm9jdXMnXG4gICAgICAgIH07XG4gICAgICAgIGhhc0tlcHRGb2N1cyA9ICFwcmV2V2FzRm9jdXNlZDtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlICdpbml0aWFsLWlucHV0LWZvY3VzJyBhY3Rpb24gaGFzIGJlZW4gc2V0IGFscmVhZHlcbiAgICAgIC8vIHRoZW4gcmVzZXQgdGhlIGFyaWFTZWxlY3Rpb24gdG8gbnVsbFxuICAgICAgaWYgKChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnKSB7XG4gICAgICAgIG5ld0FyaWFTZWxlY3Rpb24gPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBuZXdNZW51T3B0aW9uc1N0YXRlKSwgbmV3SW5wdXRJc0hpZGRlblN0YXRlKSwge30sIHtcbiAgICAgICAgcHJldlByb3BzOiBwcm9wcyxcbiAgICAgICAgYXJpYVNlbGVjdGlvbjogbmV3QXJpYVNlbGVjdGlvbixcbiAgICAgICAgcHJldldhc0ZvY3VzZWQ6IGhhc0tlcHRGb2N1c1xuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTZWxlY3Q7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5TZWxlY3QuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG5leHBvcnRzLlNlbGVjdCA9IFNlbGVjdDtcbmV4cG9ydHMuY3JlYXRlRmlsdGVyID0gY3JlYXRlRmlsdGVyO1xuZXhwb3J0cy5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnRzLmRlZmF1bHRUaGVtZSA9IGRlZmF1bHRUaGVtZTtcbmV4cG9ydHMuZ2V0T3B0aW9uTGFiZWwgPSBnZXRPcHRpb25MYWJlbCQxO1xuZXhwb3J0cy5nZXRPcHRpb25WYWx1ZSA9IGdldE9wdGlvblZhbHVlJDE7XG5leHBvcnRzLm1lcmdlU3R5bGVzID0gbWVyZ2VTdHlsZXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciB1c2VTdGF0ZU1hbmFnZXIgPSByZXF1aXJlKCcuL3VzZVN0YXRlTWFuYWdlci1jZTIzMDYxYy5janMucHJvZC5qcycpO1xudmFyIF9leHRlbmRzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIFNlbGVjdCA9IHJlcXVpcmUoJy4vU2VsZWN0LTM2ZDE1ZjkzLmNqcy5wcm9kLmpzJyk7XG52YXIgcmVhY3QgPSByZXF1aXJlKCdAZW1vdGlvbi9yZWFjdCcpO1xudmFyIGNyZWF0ZUNhY2hlID0gcmVxdWlyZSgnQGVtb3Rpb24vY2FjaGUnKTtcbnZhciBpbmRleCA9IHJlcXVpcmUoJy4vaW5kZXgtNjY1YzRlZDguY2pzLnByb2QuanMnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5Jyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZVN1cGVyJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5Jyk7XG5yZXF1aXJlKCdtZW1vaXplLW9uZScpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdGFnZ2VkVGVtcGxhdGVMaXRlcmFsJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5Jyk7XG5yZXF1aXJlKCdyZWFjdC1kb20nKTtcbnJlcXVpcmUoJ0BmbG9hdGluZy11aS9kb20nKTtcbnJlcXVpcmUoJ3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChlKSB7IHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7ICdkZWZhdWx0JzogZSB9OyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wTmFtZXNwYWNlKGUpIHtcbiAgaWYgKGUgJiYgZS5fX2VzTW9kdWxlKSByZXR1cm4gZTtcbiAgdmFyIG4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBpZiAoZSkge1xuICAgIE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgIGlmIChrICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgdmFyIGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIGspO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwgaywgZC5nZXQgPyBkIDoge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBlW2tdOyB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5bXCJkZWZhdWx0XCJdID0gZTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5cbnZhciBSZWFjdF9fbmFtZXNwYWNlID0gLyojX19QVVJFX18qL19pbnRlcm9wTmFtZXNwYWNlKFJlYWN0KTtcbnZhciBjcmVhdGVDYWNoZV9fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9faW50ZXJvcERlZmF1bHQoY3JlYXRlQ2FjaGUpO1xuXG52YXIgU3RhdGVNYW5hZ2VkU2VsZWN0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIGJhc2VTZWxlY3RQcm9wcyA9IHVzZVN0YXRlTWFuYWdlci51c2VTdGF0ZU1hbmFnZXIocHJvcHMpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChTZWxlY3QuU2VsZWN0LCBfZXh0ZW5kcyh7XG4gICAgcmVmOiByZWZcbiAgfSwgYmFzZVNlbGVjdFByb3BzKSk7XG59KTtcbnZhciBTdGF0ZU1hbmFnZWRTZWxlY3QkMSA9IFN0YXRlTWFuYWdlZFNlbGVjdDtcblxudmFyIE5vbmNlUHJvdmlkZXIgPSAoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIG5vbmNlID0gX3JlZi5ub25jZSxcbiAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgY2FjaGVLZXkgPSBfcmVmLmNhY2hlS2V5O1xuICB2YXIgZW1vdGlvbkNhY2hlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNhY2hlX19kZWZhdWx0W1wiZGVmYXVsdFwiXSh7XG4gICAgICBrZXk6IGNhY2hlS2V5LFxuICAgICAgbm9uY2U6IG5vbmNlXG4gICAgfSk7XG4gIH0sIFtjYWNoZUtleSwgbm9uY2VdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQocmVhY3QuQ2FjaGVQcm92aWRlciwge1xuICAgIHZhbHVlOiBlbW90aW9uQ2FjaGVcbiAgfSwgY2hpbGRyZW4pO1xufSk7XG5cbmV4cG9ydHMudXNlU3RhdGVNYW5hZ2VyID0gdXNlU3RhdGVNYW5hZ2VyLnVzZVN0YXRlTWFuYWdlcjtcbmV4cG9ydHMuY3JlYXRlRmlsdGVyID0gU2VsZWN0LmNyZWF0ZUZpbHRlcjtcbmV4cG9ydHMuZGVmYXVsdFRoZW1lID0gU2VsZWN0LmRlZmF1bHRUaGVtZTtcbmV4cG9ydHMubWVyZ2VTdHlsZXMgPSBTZWxlY3QubWVyZ2VTdHlsZXM7XG5leHBvcnRzLmNvbXBvbmVudHMgPSBpbmRleC5jb21wb25lbnRzO1xuZXhwb3J0cy5Ob25jZVByb3ZpZGVyID0gTm9uY2VQcm92aWRlcjtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gU3RhdGVNYW5hZ2VkU2VsZWN0JDE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9yZWFjdC1zZWxlY3QuY2pzLnByb2QuanNcIik7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC5janMuZGV2LmpzXCIpO1xufVxuIiwiZXhwb3J0cy5fZGVmYXVsdCA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC5janMuanNcIikuZGVmYXVsdDtcbiIsImltcG9ydCBzdHlsZWQgZnJvbSBcInN0eWxlZC1jb21wb25lbnRzXCJcbmltcG9ydCB7IGNvbXBvbmVudHMgfSBmcm9tIFwicmVhY3Qtc2VsZWN0XCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGNvbnN0IFNlbGVjdExhYmVsID0gKHByb3BzOiBhbnkpID0+IHtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Y29tcG9uZW50cy5Db250cm9sIHsuLi5wcm9wc30gLz5cbiAgICAgIDxMYWJlbCAkaXNGbG9hdGluZz17cHJvcHMuZ2V0VmFsdWUoKS5sZW5ndGggPT0gMCB8fCBwcm9wcy5nZXRWYWx1ZSgpWzBdLnV1aWQgPT0gXCJcIn0+e3Byb3BzLnNlbGVjdFByb3BzLm5hbWV9PC9MYWJlbD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IExhYmVsID0gc3R5bGVkLmxhYmVsPHsgJGlzRmxvYXRpbmc/OiBib29sZWFuIH0+YFxuICBsZWZ0OiAxMHB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2l0aW9uOiAwLjJzIGVhc2UgYWxsO1xuICAtbW96LXRyYW5zaXRpb246IDAuMnMgZWFzZSBhbGw7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogMC4ycyBlYXNlIGFsbDtcbiAgdG9wOiAkeyhwcm9wcykgPT4gKHByb3BzLiRpc0Zsb2F0aW5nID8gYDIwJWAgOiBgMHB4YCl9O1xuICBmb250LXNpemU6ICR7KHByb3BzKSA9PiAocHJvcHMuJGlzRmxvYXRpbmcgPyBgMXJlbWAgOiBgMC42cmVtYCl9O1xuYDtcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IHsgQ29udGFjdCB9IGZyb20gJy4uLy4uL21vZGVsL2NvbnRhY3QnXG5pbXBvcnQge0NvbnRhY3RTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250YWN0J1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSAndHN5cmluZ2UnXG5pbXBvcnQgeyBPcmRlclN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvb3JkZXInXG5pbXBvcnQgQ29udGFjdE1vZGFsQ29tcG9uZW50IGZyb20gXCIuL0NvbnRhY3RNb2RhbENvbXBvbmVudFwiXG5pbXBvcnQgeyBPcmRlciB9IGZyb20gJy4uLy4uL21vZGVsL29yZGVyJ1xuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBDb250YWN0U2VsZWN0ID0gKHtvcmRlciwgc2hvcCwgb25DaGFuZ2V9KSA9PiB7XG5cbiAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKTtcblxuICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSk7XG4gIGNvbnN0IGNvbnRhY3RfYXBpID0gbmV3IENvbnRhY3RTZXJ2aWNlKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTaG9wVXVpZChzaG9wLnV1aWQpO1xuICB9LCBbc2hvcF0pO1xuXG4gIGNvbnN0IGxvYWRPcHRpb25zID0gYXN5bmMgKHNlYXJjaFF1ZXJ5LCBsb2FkZWRPcHRpb25zLCB7IHBhZ2UgfSkgPT4ge1xuXG4gICAgbGV0IGNvbnRhY3RzID0gYXdhaXQgY29udGFjdF9hcGkuZ2V0Q29udGFjdHMoc2VhcmNoUXVlcnksIHBhZ2UsIHNob3ApO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBvcHRpb25zOiBjb250YWN0cyxcbiAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgYWRkaXRpb25hbDoge1xuICAgICAgICBwYWdlOiBwYWdlICsgMSxcbiAgICAgIH0sXG4gICAgfTsgXG4gIH07XG5cbiAgY29uc3Qgc2V0Q29udGFjdEluT3JkZXIgPSAob3B0aW9uKSA9PiB7XG4gICAgb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZS5jb250YWN0ID0gb3B0aW9uO1xuICAgIG9yZGVyLmNvbnRhY3QgPSBvcHRpb247XG4gICAgb25DaGFuZ2Uob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBZGQgPSAoY29udGFjdDogQ29udGFjdCkgPT4ge1xuICAgIHNldFNob3BVdWlkKE1hdGgucmFuZG9tKCkpO1xuICAgIHNldENvbnRhY3RJbk9yZGVyKGNvbnRhY3QpO1xuICB9XG5cbiAgY29uc3QgaGFuZGxlRWRpdCA9IChjb250YWN0OiBDb250YWN0KSA9PiB7XG4gICAgc2V0U2hvcFV1aWQoTWF0aC5yYW5kb20oKSk7XG4gICAgc2V0Q29udGFjdEluT3JkZXIoY29udGFjdCk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgPEFzeW5jUGFnaW5hdGVcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake29yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuY29udGFjdC51c2VybmFtZSA9PSBcIlwiID8gXCJib3JkZXIgYm9yZGVyLWRhbmdlclwiIDogXCJcIn1gfVxuICAgICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShzaG9wVXVpZCl9XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9e29yZGVyLmNvbnRhY3R9XG4gICAgICAgICAgICBjb21wb25lbnRzPXt7Q29udHJvbDogU2VsZWN0TGFiZWx9fVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9JydcbiAgICAgICAgICAgIG5hbWU9J0t1bmRlJ1xuICAgICAgICAgICAgdmFsdWU9e29yZGVyLmNvbnRhY3R9XG4gICAgICAgICAgICBsb2FkT3B0aW9ucz17bG9hZE9wdGlvbnN9XG4gICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnV1aWR9XG4gICAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4gb3B0aW9uLnVzZXJuYW1lfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NldENvbnRhY3RJbk9yZGVyfVxuICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXt0cnVlfVxuICAgICAgICAgICAgYWRkaXRpb25hbD17e1xuICAgICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPENvbnRhY3RNb2RhbENvbXBvbmVudCBzaG9wPXtzaG9wfSBjb250YWN0PXtvcmRlci5jb250YWN0fSBoYW5kbGVBZGQ9e2hhbmRsZUFkZH0gaGFuZGxlRWRpdD17aGFuZGxlRWRpdH0vPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Db250YWN0U2VsZWN0LnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKE9yZGVyKSxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbnRhY3RTZWxlY3Q7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTmljZU1vZGFsLCB7IHVzZU1vZGFsLCBib290c3RyYXBEaWFsb2cgfSBmcm9tIFwiQGViYXkvbmljZS1tb2RhbC1yZWFjdFwiXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL2Jhc2UvQnV0dG9uJ1xuaW1wb3J0IHtSSlNGU2NoZW1hfSBmcm9tIFwiQHJqc2YvdXRpbHNcIlxuaW1wb3J0IHZhbGlkYXRvciBmcm9tIFwiQHJqc2YvdmFsaWRhdG9yLWFqdjZcIlxuaW1wb3J0IEZvcm0gZnJvbSBcIkByanNmL2NvcmVcIlxuaW1wb3J0IHsgQ291bnRyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb3VudHJ5J1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tIFwiZmxvd2JpdGUtcmVhY3RcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBBZGRyZXNzZGl2ID0gTmljZU1vZGFsLmNyZWF0ZShcbiAgICAoeyB0aXRsZSwgYWN0aW9uLCBhZGRyZXNzLCBzaG9wIH0pID0+IHtcblxuICAgICAgICBjb25zdCBjb3VudHJ5X2FwaSA9IG5ldyBDb3VudHJ5U2VydmljZSgpXG4gICAgICAgIFxuICAgICAgICBjb25zdCBtb2RhbCA9IHVzZU1vZGFsKClcbiAgICAgICAgY29uc3QgW2Zvcm1EYXRhLCBzZXRGb3JtRGF0YV0gPSB1c2VTdGF0ZSh7fSlcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IFtzY2hlbWEsIHNldFNjaGVtYV0gPSB1c2VTdGF0ZTxSSlNGU2NoZW1hPih7fSlcblxuICAgICAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYoYWRkcmVzcykge1xuICAgICAgICAgICAgICAgIHNldEZvcm1EYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IGFkZHJlc3MuZW1haWwsXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0bmFtZTogYWRkcmVzcy5maXJzdG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RuYW1lOiBhZGRyZXNzLmxhc3RuYW1lLFxuICAgICAgICAgICAgICAgICAgICBjb21wYW55OiBhZGRyZXNzLmNvbXBhbnksXG4gICAgICAgICAgICAgICAgICAgIHN0cmVldDogYWRkcmVzcy5zdHJlZXQsXG4gICAgICAgICAgICAgICAgICAgIGhvdXNlTnVtYmVyOiBhZGRyZXNzLmhvdXNlTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICB6aXA6IGFkZHJlc3MuemlwLFxuICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgIHBob25lOiBhZGRyZXNzLnBob25lLFxuICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBhZGRyZXNzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgIHVzdGlkOiBhZGRyZXNzLnVzdGlkXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBbYWRkcmVzc10pXG5cbiAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvdW50cnlfYXBpLmdldENvdW50cnkoc2hvcCkudGhlbigoIGRhdGEgKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIGNvdW50cnlzOiBhcnJheSA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnlzLnB1c2goeyd0aXRsZSc6IGl0ZW0uY29kZSwgJ2NvbnN0JzogaXRlbS5jb2RlfSlcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgdmFyIHNjaGVtYTogUkpTRlNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdBZGRyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ2VtYWlsJ10sXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7IHR5cGU6ICdzdHJpbmcnLCBmb3JtYXQ6ICdlbWFpbCcsIHRpdGxlOiAnRS1NYWlsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFueTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdDb21wYW55J30sXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnRmlyc3RuYW1lJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0bmFtZTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdMYXN0bmFtZSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ1N0cmVldCd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaG91c2VOdW1iZXI6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnSG91c2VudW1iZXInfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHppcDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdaaXAnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnQ2l0eSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnUGhvbmUnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzdGlkOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ1VzdElkJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0NvdW50cnknLCBvbmVPZjogY291bnRyeXN9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc2V0U2NoZW1hKHNjaGVtYSlcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgY29uc3QgdWlTY2hlbWE6IFJKU0ZTY2hlbWEgPSB7XG4gICAgICAgICAgICBcInVpOnN1Ym1pdEJ1dHRvbk9wdGlvbnNcIjoge1xuICAgICAgICAgICAgICAgIFwic3VibWl0VGV4dFwiOiBcIlNhdmVcIixcbiAgICAgICAgICAgICAgICBcIm5vcmVuZGVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgXCJwcm9wc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGlzYWJsZWRcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIFwiY2xhc3NOYW1lXCI6IFwiYnRuIGJ0bi1pbmZvXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPE1vZGFsIHNob3c9e21vZGFsLnZpc2libGV9IG9uQ2xvc2U9eygpID0+IG1vZGFsLnJlbW92ZSgpfT5cbiAgICAgICAgICAgICAgICA8TW9kYWwuSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt0aXRsZX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L01vZGFsLkhlYWRlcj5cbiAgICAgICAgICAgICAgICA8TW9kYWwuQm9keT5cbiAgICAgICAgICAgICAgICAgICAge2FjdGlvbiA9PT0gXCJTYXZlXCIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWE9e3NjaGVtYX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YT17Zm9ybURhdGF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlTY2hlbWE9e3VpU2NoZW1hfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcj17dmFsaWRhdG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Rm9ybURhdGEoZS5mb3JtRGF0YSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Nb2RhbC5Cb2R5PlxuICAgICAgICAgICAgICAgIDxNb2RhbC5Gb290ZXI+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9ezN9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gXCJTYXZlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZXNvbHZlKGZvcm1EYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVtb3ZlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlc29sdmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9ezR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwid2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVtb3ZlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Nb2RhbC5Gb290ZXI+XG4gICAgICAgICAgICA8L01vZGFsPlxuICAgICAgICApXG4gICAgfVxuKVxuXG5leHBvcnQgZGVmYXVsdCBBZGRyZXNzZGl2XG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vYmFzZS9CdXR0b25cIlxuaW1wb3J0IEFkZHJlc3NNb2RhbCBmcm9tIFwiLi9BZGRyZXNzTW9kYWxcIlxuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZU1vZGFsIH0gZnJvbSAnQGViYXkvbmljZS1tb2RhbC1yZWFjdCdcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tIFwiLi4vLi4vbW9kZWwvYWRkcmVzc1wiXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uLy4uL21vZGVsL3Nob3BcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBBZGRyZXNzTW9kYWxDb21wb25lbnQgPSAoe2hhbmRsZUFkZCwgaGFuZGxlRWRpdCwgYWRkcmVzcywgc2hvcH0pID0+IHtcbiAgICBjb25zdCBhZGRyZXNzTW9kYWwgPSB1c2VNb2RhbChBZGRyZXNzTW9kYWwpXG5cbiAgICBjb25zdCBzaG93QWRkTW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGFkZHJlc3NNb2RhbC5zaG93KHt0aXRsZTogJ0FkZCBBZGRyZXNzJywgYWN0aW9uOiAnU2F2ZScsIHNob3B9KS50aGVuKChmb3JtRGF0YSkgPT4ge1xuICAgICAgICAgICAgYWRkQWRkcmVzcyhmb3JtRGF0YSlcbiAgICAgICAgfSlcbiAgICB9LFthZGRyZXNzTW9kYWxdKVxuXG4gICAgY29uc3Qgc2hvd0VkaXRNb2RhbCA9IHVzZUNhbGxiYWNrKChhZGRyZXNzKSA9PiB7XG4gICAgICAgIGFkZHJlc3NNb2RhbC5zaG93KHsgdGl0bGU6ICdFZGl0IEFkZHJlc3MnLCBhY3Rpb246ICdTYXZlJywgYWRkcmVzczogYWRkcmVzcywgc2hvcCB9KS50aGVuKChmb3JtRGF0YSkgPT4ge1xuICAgICAgICAgICAgdXBkYXRlQWRkcmVzcyhmb3JtRGF0YSlcbiAgICAgICAgfSlcbiAgICB9LFthZGRyZXNzTW9kYWxdKVxuXG4gICAgY29uc3QgdXBkYXRlQWRkcmVzcyA9IChmb3JtRGF0YSkgPT4ge1xuICAgICAgICBhZGRyZXNzLnBhcnNlRnJvbUZvcm1EYXRhKGZvcm1EYXRhKVxuICAgICAgICBoYW5kbGVFZGl0KGFkZHJlc3MpXG4gICAgfVxuXG4gICAgY29uc3QgYWRkQWRkcmVzcyA9IChmb3JtRGF0YSkgPT4ge1xuICAgICAgICBhZGRyZXNzID0gbmV3IEFkZHJlc3MoKVxuICAgICAgICBhZGRyZXNzLnBhcnNlRnJvbUZvcm1EYXRhKGZvcm1EYXRhKVxuICAgICAgICBoYW5kbGVBZGQoYWRkcmVzcylcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXggZ2FwLTEnfT5cbiAgICAgICAgICAgIDxCdXR0b24gdHlwZT17MX0gdmFyaWFudD1cInN1Y2Nlc3NcIiBvbkNsaWNrPXtzaG93QWRkTW9kYWx9IC8+XG4gICAgICAgICAgICA8QnV0dG9uIHR5cGU9ezJ9IHZhcmlhbnQ9XCJpbmZvXCIgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIHNob3dFZGl0TW9kYWwoYWRkcmVzcylcbiAgICAgICAgICAgIH19IC8+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn1cblxuQWRkcmVzc01vZGFsQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBoYW5kbGVBZGQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGhhbmRsZUVkaXQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGFkZHJlc3M6IFByb3BUeXBlcy5pbnN0YW5jZU9mKEFkZHJlc3MpLFxuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFkZHJlc3NNb2RhbENvbXBvbmVudFxuIiwiaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSAnLi4vLi4vbW9kZWwvYWRkcmVzcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmNvbnN0IEFkZHJlc3NEZXRhaWwgPSAoe2FkZHJlc3N9KSA9PiB7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8c21hbGw+e2FkZHJlc3MuY29tcGFueX0ge2FkZHJlc3MuZmlyc3RuYW1lfSB7YWRkcmVzcy5sYXN0bmFtZX0ge2FkZHJlc3Muc3RyZWV0fSB7YWRkcmVzcy5ob3VzZU51bWJlcn0ge2FkZHJlc3MuY291bnRyeX0ge2FkZHJlc3MuemlwfSB7YWRkcmVzcy5jaXR5fTwvc21hbGw+XG4gICAgKVxufVxuXG5cbkFkZHJlc3NEZXRhaWwucHJvcFR5cGVzID0ge1xuICAgIGFkZHJlc3M6IFByb3BUeXBlcy5pbnN0YW5jZU9mKEFkZHJlc3MpXG59XG4gICAgXG5leHBvcnQgZGVmYXVsdCBBZGRyZXNzRGV0YWlsXG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IEFzeW5jUGFnaW5hdGUgfSBmcm9tIFwicmVhY3Qtc2VsZWN0LWFzeW5jLXBhZ2luYXRlXCJcbmltcG9ydCB7IENvbnRhY3QgfSBmcm9tICcuLi8uLi9tb2RlbC9jb250YWN0J1xuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gJy4uLy4uL21vZGVsL2FkZHJlc3MnXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlXCJcbmltcG9ydCB7dXNlRWZmZWN0LHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7T3JkZXJTdGF0ZX0gZnJvbSBcIi4uLy4uL3N0YXRlL29yZGVyXCJcbmltcG9ydCB7QWRkcmVzc1NlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hZGRyZXNzXCJcbmltcG9ydCBBZGRyZXNzTW9kYWxDb21wb25lbnQgZnJvbSBcIi4vQWRkcmVzc01vZGFsQ29tcG9uZW50XCJcbmltcG9ydCB7IFNlbGVjdExhYmVsIH0gZnJvbSAnLi4vYmFzZS9TZWxlY3RMYWJlbCdcbmltcG9ydCBBZGRyZXNzRGV0YWlsIGZyb20gJy4vQWRkcmVzc0RldGFpbCdcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBBZGRyZXNzU2VsZWN0ID0gKHthZGRyZXNzLCBjb250YWN0LCB0eXBlLCBjaGFuZ2VBZGRyZXNzLCBuYW1lLCBzaG9wfSkgPT4ge1xuXG4gIGNvbnN0IFtjb250YWN0VXVpZCwgc2V0Q29udGFjdFV1aWRdID0gdXNlU3RhdGUobnVsbClcblxuICBjb25zdCBbbG9jYWxBZGRyZXNzLCBzZXRMb2NhbEFkZHJlc3NdID0gdXNlU3RhdGUobnVsbClcblxuICBjb25zdCBhZGRyZXNzX3NlcnZpY2UgPSBuZXcgQWRkcmVzc1NlcnZpY2UoKVxuXG4gIGxldCBvcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcbiAgXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYoY29udGFjdC51dWlkICE9IFwiXCIpIHtcbiAgICAgIHNldENvbnRhY3RVdWlkKGNvbnRhY3QudXVpZClcbiAgICB9XG4gIH0sIFtjb250YWN0LnV1aWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TG9jYWxBZGRyZXNzKGFkZHJlc3MpXG4gIH0sIFthZGRyZXNzXSlcblxuICBjb25zdCBvcmRlcjogT3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG5cbiAgY29uc3QgbG9hZE9wdGlvbnMgPSBhc3luYyAoc2VhcmNoUXVlcnksIGxvYWRlZE9wdGlvbnMpID0+IHtcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBhZGRyZXNzX3NlcnZpY2UuZ2V0Q29udGFjdEFkZHJlc3MoY29udGFjdC51dWlkLCB0eXBlKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9wdGlvbnM6IGRhdGEsXG4gICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVBZGQgPSAoYWRkcmVzczogQWRkcmVzcykgPT4ge1xuICAgIGFkZHJlc3MudHlwZSA9IHR5cGVcbiAgICBhZGRyZXNzLmNvbnRhY3QudXVpZCA9IGNvbnRhY3QudXVpZFxuICAgIGFkZHJlc3Nfc2VydmljZS5jcmVhdGUoYWRkcmVzcykudGhlbigoKSA9PiB7XG4gICAgICBzZXRMb2NhbEFkZHJlc3MoYWRkcmVzcylcbiAgICAgIGNoYW5nZUFkZHJlc3MoYWRkcmVzcywgdHlwZSlcbiAgICAgIHNldENvbnRhY3RVdWlkKE1hdGgucmFuZG9tKCkpXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUVkaXQgPSAoYWRkcmVzczogQWRkcmVzcykgPT4ge1xuICAgIGFkZHJlc3MudHlwZSA9IHR5cGVcbiAgICBhZGRyZXNzLmNvbnRhY3QudXVpZCA9IGNvbnRhY3QudXVpZFxuICAgIGFkZHJlc3Nfc2VydmljZS51cGRhdGUoYWRkcmVzcykudGhlbigoKSA9PiB7XG4gICAgICBzZXRMb2NhbEFkZHJlc3MoYWRkcmVzcylcbiAgICAgIGNoYW5nZUFkZHJlc3MoYWRkcmVzcywgdHlwZSlcbiAgICAgIHNldENvbnRhY3RVdWlkKE1hdGgucmFuZG9tKCkpXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHNldEFkZHJlc3NJbk9yZGVyID0gKG9wdGlvbikgPT4ge1xuICAgIHNldExvY2FsQWRkcmVzcyhvcHRpb24pXG4gICAgY2hhbmdlQWRkcmVzcyhvcHRpb24sIHR5cGUpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4IGdhcC0xJz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4LTEnPlxuICAgICAgICAgIDxBc3luY1BhZ2luYXRlXG4gICAgICAgICAgICBkZWZhdWx0T3B0aW9uc1xuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXthZGRyZXNzfVxuICAgICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShjb250YWN0VXVpZCl9XG4gICAgICAgICAgICBsb2FkT3B0aW9ucz17bG9hZE9wdGlvbnN9XG4gICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnV1aWR9XG4gICAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4gb3B0aW9uLmZpcnN0bmFtZSArICcgJyArIG9wdGlvbi5sYXN0bmFtZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRBZGRyZXNzSW5PcmRlcn1cbiAgICAgICAgICAgIGlzU2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9JydcbiAgICAgICAgICAgIGNvbXBvbmVudHM9e3sgQ29udHJvbDogU2VsZWN0TGFiZWwgfX1cbiAgICAgICAgLz5cbiAgICAgICAgXG4gICAgICAgIHsgbG9jYWxBZGRyZXNzICYmIDxBZGRyZXNzRGV0YWlsIGFkZHJlc3M9e2xvY2FsQWRkcmVzc30gLz59XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgPlxuICAgICAgICA8QWRkcmVzc01vZGFsQ29tcG9uZW50IGFkZHJlc3M9e2xvY2FsQWRkcmVzc30gaGFuZGxlQWRkPXtoYW5kbGVBZGR9IGhhbmRsZUVkaXQ9e2hhbmRsZUVkaXR9IHNob3A9e3Nob3B9Lz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIFxuICApXG59XG5cbkFkZHJlc3NTZWxlY3QucHJvcFR5cGVzID0ge1xuICBhZGRyZXNzOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihBZGRyZXNzKSxcbiAgY29udGFjdDogUHJvcFR5cGVzLmluc3RhbmNlT2YoQ29udGFjdCksXG4gIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICB0eXBlOiBQcm9wVHlwZXMubnVtYmVyLFxuICBjaGFuZ2VBZGRyZXNzOiBQcm9wVHlwZXMuZnVuYyxcbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufVxuXG5leHBvcnQgZGVmYXVsdCBBZGRyZXNzU2VsZWN0XG4iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEFjY291bnQgfSBmcm9tIFwiLi4vbW9kZWwvYWNjb3VudFwiO1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi9tb2RlbC9zaG9wXCI7XG5cbkBzaW5nbGV0b24oKVxuQGF1dG9JbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBY2NvdW50U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW4/OiBUb2tlbikge31cblxuICBhc3luYyBnZXRBY2NvdW50cyhzaG9wOiBTaG9wKTogUHJvbWlzZTxBY2NvdW50W10+IHtcblxuICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9hY2NvdW50L2FsbGJ5c2hvcC8nICsgc2hvcC51dWlkLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBsZXQgYWNjb3VudCA9IG5ldyBBY2NvdW50KCk7XG4gICAgICAgICAgYWNjb3VudC51aWQgPSBpdGVtLnVpZDtcbiAgICAgICAgICBhY2NvdW50LnRpdGxlID0gaXRlbS50aXRsZTtcbiAgICAgICAgICBhY2NvdW50LmFwcGVuZGl4ID0gaXRlbS5hcHBlbmRpeDtcbiAgICAgICAgICBhY2NvdW50LnV1aWQgPSBpdGVtLnV1aWQ7XG4gICAgICAgICAgcmV0dXJuIGFjY291bnQ7XG4gICAgICAgIH0pXG4gICAgXG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IEFzeW5jUGFnaW5hdGUgfSBmcm9tIFwicmVhY3Qtc2VsZWN0LWFzeW5jLXBhZ2luYXRlXCJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWNjb3VudCdcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlJ1xuaW1wb3J0IHsgT3JkZXJTdGF0ZSB9IGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXG5pbXBvcnQge09yZGVyfSBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tIFwiLi4vYmFzZS9TZWxlY3RMYWJlbFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5jb25zdCBBY2NvdW50U2VsZWN0Q29tcG9uZW50ID0gKHtzaG9wLCBvcmRlcn0pID0+IHtcbiAgICAgIFxuICAgIGNvbnN0IFtzaG9wVXVpZCwgc2V0U2hvcFV1aWRdID0gdXNlU3RhdGUobnVsbClcblxuICAgIGNvbnN0IFthY2NvdW50LCBzZXRBY2NvdW50XSA9IHVzZVN0YXRlKDApXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHNldFNob3BVdWlkKHNob3AudXVpZClcbiAgICB9LCBbc2hvcC51dWlkXSlcblxuICAgIGNvbnN0IG9yZGVyU3RhdGU6IE9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuXG4gICAgY29uc3QgbG9hZE9wdGlvbnMgPSBhc3luYyAoc2VhcmNoUXVlcnksIGxvYWRlZE9wdGlvbnMpID0+IHtcblxuICAgICAgICBjb25zdCBhY2NvdW50X3NlcnZpY2UgPSBuZXcgQWNjb3VudFNlcnZpY2UoKVxuICAgIFxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgYWNjb3VudF9zZXJ2aWNlLmdldEFjY291bnRzKHNob3ApXG4gICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgb3B0aW9uczogZGF0YSxcbiAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgfSBcbiAgICAgIH1cblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldEFjY291bnQob3JkZXIuYWNjb3VudC51dWlkKVxuICAgIH0sIFtvcmRlci5hY2NvdW50XSlcblxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xuICAgICAgICBvcmRlci5hY2NvdW50ID0gb3B0aW9uXG4gICAgICAgIGxldCBvcmRlck9iaiA9IG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkuZ2V0VmFsdWUoKVxuICAgICAgICBvcmRlck9iai5hY2NvdW50ID0gb3B0aW9uXG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxuICAgICAgICBzZXRBY2NvdW50KG9wdGlvbi51aWQpXG4gICAgfVxuXG4gICAgcmV0dXJuIChcblxuICAgICAgICAgICAgIDxBc3luY1BhZ2luYXRlXG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2FjY291bnQgPT0gMCA/IFwiYm9yZGVyIGJvcmRlci1kYW5nZXJcIiA6IFwiXCJ9YH1cbiAgICAgICAgICAgICAgICBrZXk9e0pTT04uc3RyaW5naWZ5KHNob3BVdWlkKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e29yZGVyLmFjY291bnR9XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cz17e0NvbnRyb2w6IFNlbGVjdExhYmVsfX1cbiAgICAgICAgICAgICAgICBuYW1lPXsnRmlybWEnfVxuICAgICAgICAgICAgICAgIGxvYWRPcHRpb25zPXtsb2FkT3B0aW9uc31cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0nJ1xuICAgICAgICAgICAgICAgIGdldE9wdGlvblZhbHVlPXsob3B0aW9uKSA9PiBvcHRpb24udXVpZH1cbiAgICAgICAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4gb3B0aW9uLnRpdGxlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU9e3RydWV9XG4gICAgICAgICAgICAvPlxuICAgICkgIFxufSBcblxuQWNjb3VudFNlbGVjdENvbXBvbmVudC5wcm9wVHlwZXMgPSB7XG4gIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxufVxuXG5leHBvcnQgZGVmYXVsdCBBY2NvdW50U2VsZWN0Q29tcG9uZW50XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IENvbnRhY3RTZWxlY3QgZnJvbSAnLi9Db250YWN0U2VsZWN0J1xuaW1wb3J0IEFkZHJlc3NTZWxlY3QgZnJvbSAnLi9BZGRyZXNzU2VsZWN0J1xuaW1wb3J0IHtDb250YWN0fSBmcm9tICcuLi8uLi9tb2RlbC9jb250YWN0J1xuaW1wb3J0IHtBZGRyZXNzfSBmcm9tICcuLi8uLi9tb2RlbC9hZGRyZXNzJ1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IE9yZGVyU3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZS9vcmRlcidcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2VcIlxuaW1wb3J0IEFjY291bnRTZWxlY3RDb21wb25lbnQgZnJvbSAnLi4vYWNjb3VudC9BY2NvdW50U2VsZWN0Q29tcG9uZW50J1xuaW1wb3J0IHsgT3JkZXIgfSBmcm9tICcuLi8uLi9tb2RlbC9vcmRlcidcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBDb250YWN0Q29tcG9uZW50ID0gKHtvcmRlciwgc2hvcH0pID0+IHtcblxuICAgIGxldCBvcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcblxuICAgIGNvbnN0IFtjb250YWN0LCBzZXRDb250YWN0XSA9IHVzZVN0YXRlPENvbnRhY3Q+KG5ldyBDb250YWN0KCkpXG5cbiAgICBjb25zdCBjaGFuZ2VBZGRyZXNzID0gKGFkZHJlc3M6IEFkZHJlc3MsIHR5cGU6IE51bWJlcikgPT4ge1xuICAgICAgICBpZih0eXBlID09IDEpIHtcbiAgICAgICAgICAgIG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuaW52b2ljZUFkZHJlc3MgPSBhZGRyZXNzXG4gICAgICAgICAgICBvcmRlci5pbnZvaWNlQWRkcmVzcyA9IGFkZHJlc3NcbiAgICAgICAgfVxuICAgICAgICBpZih0eXBlID09IDIpIHtcbiAgICAgICAgICAgIG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuZGVsaXZlcnlBZGRyZXNzID0gYWRkcmVzc1xuICAgICAgICAgICAgb3JkZXIuZGVsaXZlcnlBZGRyZXNzID0gYWRkcmVzc1xuICAgICAgICB9XG4gICAgICAgIGlmKHR5cGUgPT0gMykge1xuICAgICAgICAgICAgb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZS5zZW5kZXJBZGRyZXNzID0gYWRkcmVzc1xuICAgICAgICAgICAgb3JkZXIuc2VuZGVyQWRkcmVzcyA9IGFkZHJlc3NcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb250YWN0U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3A9e3Nob3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NldENvbnRhY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBY2NvdW50U2VsZWN0Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcD17c2hvcH0gb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHsgb3JkZXIuY29udGFjdC51dWlkICE9IFwiXCIgJiYgPEFkZHJlc3NTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M9e29yZGVyLmludm9pY2VBZGRyZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdD17b3JkZXIuY29udGFjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUFkZHJlc3M9e2NoYW5nZUFkZHJlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSdSZWNobnVuZ3NhZHJlc3NlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3A9e3Nob3B9XG4gICAgICAgICAgICAgICAgICAgIC8+IH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICB7IG9yZGVyLmNvbnRhY3QudXVpZCAhPSBcIlwiICYmIDxBZGRyZXNzU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzPXtvcmRlci5kZWxpdmVyeUFkZHJlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0PXtvcmRlci5jb250YWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlQWRkcmVzcz17Y2hhbmdlQWRkcmVzc31cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9J0xpZWZlcmFkcmVzc2UnXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXsyfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvcD17c2hvcH1cbiAgICAgICAgICAgICAgICAgICAgLz4gfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHsgb3JkZXIuY29udGFjdC51dWlkICE9IFwiXCIgJiYgPEFkZHJlc3NTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M9e29yZGVyLnNlbmRlckFkZHJlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VBZGRyZXNzPXtjaGFuZ2VBZGRyZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdD17b3JkZXIuY29udGFjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9J0Fic2VuZGVyYWRyZXNzZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9ezN9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG9wPXtzaG9wfVxuICAgICAgICAgICAgICAgICAgICAvPiB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC8+XG4gICAgKSAgXG59XG5cbkNvbnRhY3RDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgQ29udGFjdENvbXBvbmVudFxuIiwiaW1wb3J0IFNlbGVjdCBmcm9tICdyZWFjdC1zZWxlY3QnXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSAndHN5cmluZ2UnXG5pbXBvcnQgeyBPcmRlclN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvb3JkZXInXG5pbXBvcnQgeyBTZWxlY3RMYWJlbCB9IGZyb20gJy4uL2Jhc2UvU2VsZWN0TGFiZWwnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFR5cGVTZWxlY3RDb21wb25lbnQgPSAoe29yZGVyfSkgPT4ge1xuICAgIFxuICAgIGNvbnN0IFt0eXBlLCBzZXRUeXBlXSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IG9yZGVyU3RhdGU6IE9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSBbXG4gICAgICAgIHsgdmFsdWU6IDEsIGxhYmVsOiAnQXVmdHJhZycgfSxcbiAgICAgICAgeyB2YWx1ZTogMiwgbGFiZWw6ICdBbmdlYm90JyB9LFxuICAgICAgICB7IHZhbHVlOiAzLCBsYWJlbDogJ1N0b3JubycgfSxcbiAgICAgICAgeyB2YWx1ZTogNCwgbGFiZWw6ICdHdXRzY2hyaWZ0JyB9LFxuICAgICAgICB7IHZhbHVlOiA1LCBsYWJlbDogJ1JlY2hudW5nJyB9LFxuICAgICAgICB7IHZhbHVlOiA2LCBsYWJlbDogJ1RlaWxyZWNobnVuZycgfSxcbiAgICAgICAgeyB2YWx1ZTogNywgbGFiZWw6ICdUZWlsc3Rvcm5vJyB9LFxuICAgIF07XG5cbiAgICBjb25zdCBvbkNoYW5nZSA9IChvcHRpb24pID0+IHtcbiAgICAgICAgbGV0IG9yZGVyID0gb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZTtcbiAgICAgICAgb3JkZXIudHlwZSA9IG9wdGlvbi52YWx1ZTtcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXIpO1xuICAgICAgICBzZXRUeXBlKG9wdGlvbik7XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldFR5cGUob3JkZXIudHlwZSk7XG4gICAgfSwgW29yZGVyLnR5cGVdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHt0eXBlID09IDAgPyBcImJvcmRlciBib3JkZXItZGFuZ2VyXCIgOiBcIlwifWB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e29wdGlvbnMuZmlsdGVyKChlKSA9PiBlLnZhbHVlID09IHR5cGUpLnBvcCgpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb25zLmZpbHRlcigoZSkgPT4gZS52YWx1ZSA9PSB0eXBlKS5wb3AoKX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cz17eyBDb250cm9sOiBTZWxlY3RMYWJlbCB9fVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiVHlwXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICk7ICBcbn0gXG5cbmV4cG9ydCBkZWZhdWx0IFR5cGVTZWxlY3RDb21wb25lbnQ7XG4iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiXG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiXG5cbkBzaW5nbGV0b24oKVxuQGF1dG9JbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTaG9wU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW46IFRva2VuKSB7fVxuXG4gIGFzeW5jIGdldFNob3BzKCk6IFByb21pc2U8U2hvcFtdPiB7XG5cbiAgICBjb25zb2xlLmxvZyh0aGlzLnRva2VuKVxuICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9zaG9wcycsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuLmN1cnJlbnRUb2tlblxuICAgICAgICB9XG4gICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IHNob3AgPSBuZXcgU2hvcCgpXG4gICAgICAgICAgc2hvcC5wYXJzZUZyb21Kc29uKHtzaG9wOiBpdGVtfSlcbiAgICAgICAgICByZXR1cm4gc2hvcFxuICAgICAgICB9KVxuICAgIFxuICAgIH0pXG4gIH1cbn1cbiIsImltcG9ydCB7IEFzeW5jUGFnaW5hdGUgfSBmcm9tIFwicmVhY3Qtc2VsZWN0LWFzeW5jLXBhZ2luYXRlXCJcbmltcG9ydCB7IFNob3BTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2hvcCdcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlJ1xuaW1wb3J0IHsgT3JkZXJTdGF0ZSB9IGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBTaG9wU2VsZWN0Q29tcG9uZW50ID0gKHByb3BzKSA9PiB7XG4gICAgXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG5cbiAgICBjb25zdCBzaG9wX3NlcnZpY2UgPSBjb250YWluZXIucmVzb2x2ZShTaG9wU2VydmljZSlcblxuICAgIGNvbnN0IGxvYWRPcHRpb25zID0gYXN5bmMgKHNlYXJjaFF1ZXJ5LCBsb2FkZWRPcHRpb25zKSA9PiB7XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHNob3Bfc2VydmljZS5nZXRTaG9wcygpXG4gICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgb3B0aW9uczogZGF0YSxcbiAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgfSBcbiAgICAgIH1cbiAgICBcblxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xuICAgICAgICBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlLnNob3AgPSBvcHRpb25cbiAgICAgICAgcHJvcHMuY2hhbmdlKG9wdGlvbilcbiAgICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgPEFzeW5jUGFnaW5hdGVcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9uc1xuICAgICAgICAgICAgICAgIHZhbHVlPXtwcm9wcy5zaG9wfVxuICAgICAgICAgICAgICAgIGNvbXBvbmVudHM9e3sgQ29udHJvbDogU2VsZWN0TGFiZWwgfX1cbiAgICAgICAgICAgICAgICBsb2FkT3B0aW9ucz17bG9hZE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi5pZH1cbiAgICAgICAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4gb3B0aW9uLm5hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcm9wcy5zaG9wLnV1aWQgPT0gXCJcIiA/IFwiYm9yZGVyIGJvcmRlci1kYW5nZXJcIiA6IFwiYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDBcIn1gfVxuICAgICAgICAgICAgICAgIG5hbWU9J1Nob3AnXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICkgIFxufSBcblxuZXhwb3J0IGRlZmF1bHQgU2hvcFNlbGVjdENvbXBvbmVudFxuIiwiaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlJ1xuaW1wb3J0IHsgT3JkZXJTdGF0ZSB9IGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBEcmFmdENvbXBvbmVudCA9ICh7b3JkZXJ9KSA9PiB7XG4gICAgXG4gICAgY29uc3QgW2RyYWZ0LCBzZXREcmFmdF0gPSB1c2VTdGF0ZSh0cnVlKVxuICAgIGNvbnN0IG9yZGVyU3RhdGU6IE9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgICAgIGxldCBvcmRlck9iaiA9IG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWVcbiAgICAgICAgb3JkZXJPYmouZHJhZnQgPSAhZHJhZnRcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXG4gICAgICAgIHNldERyYWZ0KCFkcmFmdClcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXREcmFmdChvcmRlci5kcmFmdClcbiAgICB9LCBbb3JkZXIuZHJhZnRdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJnYXAtMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCIxXCIgY2xhc3NOYW1lPVwic3Itb25seSBwZWVyXCIgZGVmYXVsdENoZWNrZWQ9e2RyYWZ0fSBvbkNoYW5nZT17KGUpID0+IG9uQ2hhbmdlKGUpfS8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy0xMSBoLTYgYmctZ3JheS0yMDAgcm91bmRlZC1mdWxsIHBlZXIgcGVlci1mb2N1czpyaW5nLTQgcGVlci1mb2N1czpyaW5nLWJsdWUtMzAwIGRhcms6cGVlci1mb2N1czpyaW5nLWJsdWUtODAwIGRhcms6YmctZ3JheS03MDAgcGVlci1jaGVja2VkOmFmdGVyOnRyYW5zbGF0ZS14LWZ1bGwgcnRsOnBlZXItY2hlY2tlZDphZnRlcjotdHJhbnNsYXRlLXgtZnVsbCBwZWVyLWNoZWNrZWQ6YWZ0ZXI6Ym9yZGVyLXdoaXRlIGFmdGVyOmNvbnRlbnQtWycnXSBhZnRlcjphYnNvbHV0ZSBhZnRlcjp0b3AtMC41IGFmdGVyOnN0YXJ0LVsycHhdIGFmdGVyOmJnLXdoaXRlIGFmdGVyOmJvcmRlci1ncmF5LTMwMCBhZnRlcjpib3JkZXIgYWZ0ZXI6cm91bmRlZC1mdWxsIGFmdGVyOmgtNSBhZnRlcjp3LTUgYWZ0ZXI6dHJhbnNpdGlvbi1hbGwgZGFyazpib3JkZXItZ3JheS02MDAgcGVlci1jaGVja2VkOmJnLWJsdWUtNjAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1zLTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTMwMFwiPkVudHd1cmY8L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICApICBcbn0gXG5cbmV4cG9ydCBkZWZhdWx0IERyYWZ0Q29tcG9uZW50XG4iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7T3JkZXJ9IGZyb20gXCIuLi9tb2RlbC9vcmRlclwiO1xuXG5Ac2luZ2xldG9uKClcbkBhdXRvSW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3JkZXJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuPzogVG9rZW4pIHt9XG5cbiAgICBhc3luYyBnZXRPcmRlcih1dWlkOiBTdHJpbmcpOiBQcm9taXNlPE9yZGVyPiB7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGF4aW9zLnBvc3QoJy9hcHBzL2FwaS9vcmRlci9nZXRvbmVieXV1aWQnLCB7dXVpZDogdXVpZH0gLHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG5cbiAgICAgICAgICAgIGxldCBvcmRlciA9IG5ldyBPcmRlcigpO1xuICAgICAgICAgICAgb3JkZXIucGFyc2VGcm9tSnNvbihyZXNwb25zZS5kYXRhKTtcblxuICAgICAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG5cbiAgICBhc3luYyBzYXZlT3JkZXIob3JkZXI6IE9yZGVyKTogUHJvbWlzZTxPcmRlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL29yZGVyL2NyZWF0ZScsIG9yZGVyICx7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGNhbGNPcmRlcihvcmRlcjogT3JkZXIpOiBQcm9taXNlPE9yZGVyPiB7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGF4aW9zLnBvc3QoJy9hcHBzL2FwaS9vcmRlci9jYWxjJywgb3JkZXIgLHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmludGVyZmFjZSBJUHJvcHMge1xuICBwcmljZTogbnVtYmVyO1xufVxuXG5jb25zdCBDdXJyZW5jeTogUmVhY3QuRkM8SVByb3BzPiA9ICh7IHByaWNlIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgIHtJbnRsLk51bWJlckZvcm1hdCgnZGUtREUnLCB7XG4gICAgICBzdHlsZTogJ2N1cnJlbmN5JywgXG4gICAgICBjdXJyZW5jeTogJ0VVUidcbiAgICAgIH0pLmZvcm1hdChwcmljZS8xMDApfVxuICAgIDwvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDdXJyZW5jeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQge09yZGVyfSBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxuaW1wb3J0IHtjb250YWluZXJ9IGZyb20gXCJ0c3lyaW5nZVwiXG5pbXBvcnQge09yZGVyU3RhdGV9IGZyb20gXCIuLi8uLi9zdGF0ZS9vcmRlclwiXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHtPcmRlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9vcmRlclwiXG5pbXBvcnQgQ3VycmVuY3kgZnJvbSBcIi4uL2Jhc2UvQ3VycmVuY3lcIlxuXG50eXBlIE15U3RhdGUgPSB7XG4gICAgb3JkZXI6IE9yZGVyIC8vIGxpa2UgdGhpc1xufVxuXG5jbGFzcyBDYWxjQ29tcG9uZW50IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PHsgIH0sTXlTdGF0ZT4ge1xuICAgIG9yZGVyU3RhdGU6IE9yZGVyU3RhdGVcbiAgICBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZVxuXG4gICAgc3RhdGU6IE15U3RhdGUgPSB7XG4gICAgICAgIG9yZGVyOiBuZXcgT3JkZXIoKVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKVxuICAgICAgICB0aGlzLm9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuICAgICAgICB0aGlzLm9yZGVyU2VydmljZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU2VydmljZSlcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy5vcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnBpcGUoZGVib3VuY2VUaW1lKDIwMDApKS5zdWJzY3JpYmUoKGUpID0+IHRoaXMuY2FsYyhlKSlcbiAgICB9XG5cbiAgICBhc3luYyBjYWxjKGU6IE9yZGVyKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLm9yZGVyU2VydmljZS5jYWxjT3JkZXIoZSlcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSgoKSA9PiAoe1xuICAgICAgICAgICAgb3JkZXI6IHJlc3VsdCxcbiAgICAgICAgfSkpXG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGgzPlxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9XCJ0ZXh0LWJvZHktc2Vjb25kYXJ5XCI+IE5ldHRvOiA8Q3VycmVuY3kgcHJpY2U9e3RoaXMuc3RhdGUub3JkZXIubmV0fSAvPiArIE13U3QuOiA8Q3VycmVuY3kgcHJpY2U9e3RoaXMuc3RhdGUub3JkZXIudmF0fSAvPiA9PC9zbWFsbD4gQnJ1dHRvOiA8Q3VycmVuY3kgcHJpY2U9e3RoaXMuc3RhdGUub3JkZXIuZ3Jvc3N9IC8+XG4gICAgICAgICAgICA8L2gzPlxuICAgICAgICApXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDYWxjQ29tcG9uZW50XG4iLCJpbXBvcnQgVHlwZVNlbGVjdENvbXBvbmVudCBmcm9tICcuLi90eXBlL1R5cGVTZWxlY3RDb21wb25lbnQnXG5pbXBvcnQgU2hvcFNlbGVjdENvbXBvbmVudCBmcm9tICcuLi9zaG9wL1Nob3BTZWxlY3RDb21wb25lbnQnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi4vLi4vbW9kZWwvc2hvcFwiXG5pbXBvcnQgRHJhZnRDb21wb25lbnQgZnJvbSBcIi4uL2RyYWZ0L0RyYWZ0Q29tcG9uZW50XCJcbmltcG9ydCB7T3JkZXJ9IGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQgQ2FsY0NvbXBvbmVudCBmcm9tICcuLi9jYWxjL0NhbGNDb21wb25lbnQnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFRvcEJhckNvbXBvbmVudCA9ICh7c2hvcCwgb3JkZXIsIGNoYW5nZX0pID0+IHtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgPERyYWZ0Q29tcG9uZW50IG9yZGVyPXtvcmRlcn0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgIDxUeXBlU2VsZWN0Q29tcG9uZW50IG9yZGVyPXtvcmRlcn0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8U2hvcFNlbGVjdENvbXBvbmVudCBzaG9wPXtzaG9wfSBjaGFuZ2U9e2NoYW5nZX0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8Q2FsY0NvbXBvbmVudCAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApICBcbn1cblxuVG9wQmFyQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxuICAgIGNoYW5nZTogUHJvcFR5cGVzLmZ1bmNcbn1cblxuZXhwb3J0IGRlZmF1bHQgVG9wQmFyQ29tcG9uZW50XG4iLCJleHBvcnQgY2xhc3MgUHJvZHVjdEdyb3VwIHtcbiAgICBpZDogTnVtYmVyID0gMFxuICAgIGxhYmVsOiBTdHJpbmcgPSBcIlwiXG4gICAgdXVpZDogU3RyaW5nID0gXCJcIlxuICAgIC8vb3B0aW9uczogUHJvZHVjdEdyb3VwW10gPSBbXVxufSIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCI7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi9tb2RlbC9zaG9wXCI7XG5pbXBvcnQge1Byb2R1Y3RHcm91cH0gZnJvbSBcIi4uL21vZGVsL3Byb2R1Y3RHcm91cFwiO1xuXG5Ac2luZ2xldG9uKClcbkBhdXRvSW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHJvZHVjdEdyb3VwU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW4/OiBUb2tlbikge31cblxuICBhc3luYyBnZXRQcm9kdWN0R3JvdXBzKHNlYXJjaFF1ZXJ5OiBTdHJpbmcsIHNob3A6IFNob3ApOiBQcm9taXNlPFByb2R1Y3RHcm91cFtdPiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvcHJvZHVjdGdyb3VwL2dldHRyZWUvJyArIHNob3AudXVpZCArICc/dGVybT0nICsgc2VhcmNoUXVlcnksIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuLmN1cnJlbnRUb2tlblxuICAgICAgICB9XG4gICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuXG4gICAgICAgIGxldCB0ZW1wOiBQcm9kdWN0R3JvdXBbXSA9IFtdO1xuXG4gICAgICAgIHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBwZyA9IG5ldyBQcm9kdWN0R3JvdXA7XG4gICAgICAgICAgcGcuaWQgPSBpdGVtLmlkO1xuICAgICAgICAgIHBnLmxhYmVsID0gaXRlbS50aXRsZTtcbiAgICAgICAgICBwZy51dWlkID0gaXRlbS51dWlkO1xuICAgICAgICAgIFxuICAgICAgICAgIHRlbXAucHVzaChwZyk7XG5cbiAgICAgICAgICBpdGVtLmNoaWxkcmVuLm1hcCgoc3ViOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHNwZyA9IG5ldyBQcm9kdWN0R3JvdXA7XG4gICAgICAgICAgICAgIHNwZy5pZCA9IHN1Yi5pZDtcbiAgICAgICAgICAgICAgc3BnLmxhYmVsID0gXCItLSBcIiArIHN1Yi50aXRsZTtcbiAgICAgICAgICAgICAgc3BnLnV1aWQgPSBzdWIudXVpZDtcbiAgICAgICAgICAgICAgdGVtcC5wdXNoKHNwZyk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gcGc7XG4gICAgICAgIH0pXG4gICAgXG4gICAgICAgIHJldHVybiB0ZW1wO1xuICAgIH0pXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHknKTtcbnZhciBfb2JqZWN0U3ByZWFkID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyJyk7XG52YXIgX3NsaWNlZFRvQXJyYXkgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXknKTtcbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIGluZGV4ID0gcmVxdWlyZSgnLi9pbmRleC02NjVjNGVkOC5janMucHJvZC5qcycpO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiZGVmYXVsdE9wdGlvbnNcIiwgXCJjYWNoZU9wdGlvbnNcIiwgXCJsb2FkT3B0aW9uc1wiLCBcIm9wdGlvbnNcIiwgXCJpc0xvYWRpbmdcIiwgXCJvbklucHV0Q2hhbmdlXCIsIFwiZmlsdGVyT3B0aW9uXCJdO1xuZnVuY3Rpb24gdXNlQXN5bmMoX3JlZikge1xuICB2YXIgX3JlZiRkZWZhdWx0T3B0aW9ucyA9IF9yZWYuZGVmYXVsdE9wdGlvbnMsXG4gICAgcHJvcHNEZWZhdWx0T3B0aW9ucyA9IF9yZWYkZGVmYXVsdE9wdGlvbnMgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRkZWZhdWx0T3B0aW9ucyxcbiAgICBfcmVmJGNhY2hlT3B0aW9ucyA9IF9yZWYuY2FjaGVPcHRpb25zLFxuICAgIGNhY2hlT3B0aW9ucyA9IF9yZWYkY2FjaGVPcHRpb25zID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkY2FjaGVPcHRpb25zLFxuICAgIHByb3BzTG9hZE9wdGlvbnMgPSBfcmVmLmxvYWRPcHRpb25zO1xuICAgIF9yZWYub3B0aW9ucztcbiAgICB2YXIgX3JlZiRpc0xvYWRpbmcgPSBfcmVmLmlzTG9hZGluZyxcbiAgICBwcm9wc0lzTG9hZGluZyA9IF9yZWYkaXNMb2FkaW5nID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkaXNMb2FkaW5nLFxuICAgIHByb3BzT25JbnB1dENoYW5nZSA9IF9yZWYub25JbnB1dENoYW5nZSxcbiAgICBfcmVmJGZpbHRlck9wdGlvbiA9IF9yZWYuZmlsdGVyT3B0aW9uLFxuICAgIGZpbHRlck9wdGlvbiA9IF9yZWYkZmlsdGVyT3B0aW9uID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRmaWx0ZXJPcHRpb24sXG4gICAgcmVzdFNlbGVjdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIHZhciBwcm9wc0lucHV0VmFsdWUgPSByZXN0U2VsZWN0UHJvcHMuaW5wdXRWYWx1ZTtcbiAgdmFyIGxhc3RSZXF1ZXN0ID0gUmVhY3QudXNlUmVmKHVuZGVmaW5lZCk7XG4gIHZhciBtb3VudGVkID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgdmFyIF91c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKEFycmF5LmlzQXJyYXkocHJvcHNEZWZhdWx0T3B0aW9ucykgPyBwcm9wc0RlZmF1bHRPcHRpb25zIDogdW5kZWZpbmVkKSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICBkZWZhdWx0T3B0aW9ucyA9IF91c2VTdGF0ZTJbMF0sXG4gICAgc2V0RGVmYXVsdE9wdGlvbnMgPSBfdXNlU3RhdGUyWzFdO1xuICB2YXIgX3VzZVN0YXRlMyA9IFJlYWN0LnVzZVN0YXRlKHR5cGVvZiBwcm9wc0lucHV0VmFsdWUgIT09ICd1bmRlZmluZWQnID8gcHJvcHNJbnB1dFZhbHVlIDogJycpLFxuICAgIF91c2VTdGF0ZTQgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUzLCAyKSxcbiAgICBzdGF0ZUlucHV0VmFsdWUgPSBfdXNlU3RhdGU0WzBdLFxuICAgIHNldFN0YXRlSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZTRbMV07XG4gIHZhciBfdXNlU3RhdGU1ID0gUmVhY3QudXNlU3RhdGUocHJvcHNEZWZhdWx0T3B0aW9ucyA9PT0gdHJ1ZSksXG4gICAgX3VzZVN0YXRlNiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTUsIDIpLFxuICAgIGlzTG9hZGluZyA9IF91c2VTdGF0ZTZbMF0sXG4gICAgc2V0SXNMb2FkaW5nID0gX3VzZVN0YXRlNlsxXTtcbiAgdmFyIF91c2VTdGF0ZTcgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLFxuICAgIF91c2VTdGF0ZTggPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU3LCAyKSxcbiAgICBsb2FkZWRJbnB1dFZhbHVlID0gX3VzZVN0YXRlOFswXSxcbiAgICBzZXRMb2FkZWRJbnB1dFZhbHVlID0gX3VzZVN0YXRlOFsxXTtcbiAgdmFyIF91c2VTdGF0ZTkgPSBSZWFjdC51c2VTdGF0ZShbXSksXG4gICAgX3VzZVN0YXRlMTAgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU5LCAyKSxcbiAgICBsb2FkZWRPcHRpb25zID0gX3VzZVN0YXRlMTBbMF0sXG4gICAgc2V0TG9hZGVkT3B0aW9ucyA9IF91c2VTdGF0ZTEwWzFdO1xuICB2YXIgX3VzZVN0YXRlMTEgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksXG4gICAgX3VzZVN0YXRlMTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUxMSwgMiksXG4gICAgcGFzc0VtcHR5T3B0aW9ucyA9IF91c2VTdGF0ZTEyWzBdLFxuICAgIHNldFBhc3NFbXB0eU9wdGlvbnMgPSBfdXNlU3RhdGUxMlsxXTtcbiAgdmFyIF91c2VTdGF0ZTEzID0gUmVhY3QudXNlU3RhdGUoe30pLFxuICAgIF91c2VTdGF0ZTE0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMTMsIDIpLFxuICAgIG9wdGlvbnNDYWNoZSA9IF91c2VTdGF0ZTE0WzBdLFxuICAgIHNldE9wdGlvbnNDYWNoZSA9IF91c2VTdGF0ZTE0WzFdO1xuICB2YXIgX3VzZVN0YXRlMTUgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLFxuICAgIF91c2VTdGF0ZTE2ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMTUsIDIpLFxuICAgIHByZXZEZWZhdWx0T3B0aW9ucyA9IF91c2VTdGF0ZTE2WzBdLFxuICAgIHNldFByZXZEZWZhdWx0T3B0aW9ucyA9IF91c2VTdGF0ZTE2WzFdO1xuICB2YXIgX3VzZVN0YXRlMTcgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLFxuICAgIF91c2VTdGF0ZTE4ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMTcsIDIpLFxuICAgIHByZXZDYWNoZU9wdGlvbnMgPSBfdXNlU3RhdGUxOFswXSxcbiAgICBzZXRQcmV2Q2FjaGVPcHRpb25zID0gX3VzZVN0YXRlMThbMV07XG4gIGlmIChjYWNoZU9wdGlvbnMgIT09IHByZXZDYWNoZU9wdGlvbnMpIHtcbiAgICBzZXRPcHRpb25zQ2FjaGUoe30pO1xuICAgIHNldFByZXZDYWNoZU9wdGlvbnMoY2FjaGVPcHRpb25zKTtcbiAgfVxuICBpZiAocHJvcHNEZWZhdWx0T3B0aW9ucyAhPT0gcHJldkRlZmF1bHRPcHRpb25zKSB7XG4gICAgc2V0RGVmYXVsdE9wdGlvbnMoQXJyYXkuaXNBcnJheShwcm9wc0RlZmF1bHRPcHRpb25zKSA/IHByb3BzRGVmYXVsdE9wdGlvbnMgOiB1bmRlZmluZWQpO1xuICAgIHNldFByZXZEZWZhdWx0T3B0aW9ucyhwcm9wc0RlZmF1bHRPcHRpb25zKTtcbiAgfVxuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIG1vdW50ZWQuY3VycmVudCA9IHRydWU7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1vdW50ZWQuY3VycmVudCA9IGZhbHNlO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgdmFyIGxvYWRPcHRpb25zID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGlucHV0VmFsdWUsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFwcm9wc0xvYWRPcHRpb25zKSByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB2YXIgbG9hZGVyID0gcHJvcHNMb2FkT3B0aW9ucyhpbnB1dFZhbHVlLCBjYWxsYmFjayk7XG4gICAgaWYgKGxvYWRlciAmJiB0eXBlb2YgbG9hZGVyLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxvYWRlci50aGVuKGNhbGxiYWNrLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbcHJvcHNMb2FkT3B0aW9uc10pO1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChwcm9wc0RlZmF1bHRPcHRpb25zID09PSB0cnVlKSB7XG4gICAgICBsb2FkT3B0aW9ucyhzdGF0ZUlucHV0VmFsdWUsIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIGlmICghbW91bnRlZC5jdXJyZW50KSByZXR1cm47XG4gICAgICAgIHNldERlZmF1bHRPcHRpb25zKG9wdGlvbnMgfHwgW10pO1xuICAgICAgICBzZXRJc0xvYWRpbmcoISFsYXN0UmVxdWVzdC5jdXJyZW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBOT1RFOiB0aGlzIGVmZmVjdCBpcyBkZXNpZ25lZCB0byBvbmx5IHJ1biB3aGVuIHRoZSBjb21wb25lbnQgbW91bnRzLFxuICAgIC8vIHNvIHdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSBhbnkgaG9vayBkZXBlbmRlbmNpZXNcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTtcbiAgdmFyIG9uSW5wdXRDaGFuZ2UgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAobmV3VmFsdWUsIGFjdGlvbk1ldGEpIHtcbiAgICB2YXIgaW5wdXRWYWx1ZSA9IGluZGV4LmhhbmRsZUlucHV0Q2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhLCBwcm9wc09uSW5wdXRDaGFuZ2UpO1xuICAgIGlmICghaW5wdXRWYWx1ZSkge1xuICAgICAgbGFzdFJlcXVlc3QuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIHNldFN0YXRlSW5wdXRWYWx1ZSgnJyk7XG4gICAgICBzZXRMb2FkZWRJbnB1dFZhbHVlKCcnKTtcbiAgICAgIHNldExvYWRlZE9wdGlvbnMoW10pO1xuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgIHNldFBhc3NFbXB0eU9wdGlvbnMoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2FjaGVPcHRpb25zICYmIG9wdGlvbnNDYWNoZVtpbnB1dFZhbHVlXSkge1xuICAgICAgc2V0U3RhdGVJbnB1dFZhbHVlKGlucHV0VmFsdWUpO1xuICAgICAgc2V0TG9hZGVkSW5wdXRWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgIHNldExvYWRlZE9wdGlvbnMob3B0aW9uc0NhY2hlW2lucHV0VmFsdWVdKTtcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICBzZXRQYXNzRW1wdHlPcHRpb25zKGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHJlcXVlc3QgPSBsYXN0UmVxdWVzdC5jdXJyZW50ID0ge307XG4gICAgICBzZXRTdGF0ZUlucHV0VmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgICBzZXRQYXNzRW1wdHlPcHRpb25zKCFsb2FkZWRJbnB1dFZhbHVlKTtcbiAgICAgIGxvYWRPcHRpb25zKGlucHV0VmFsdWUsIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIGlmICghbW91bnRlZCkgcmV0dXJuO1xuICAgICAgICBpZiAocmVxdWVzdCAhPT0gbGFzdFJlcXVlc3QuY3VycmVudCkgcmV0dXJuO1xuICAgICAgICBsYXN0UmVxdWVzdC5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICBzZXRMb2FkZWRJbnB1dFZhbHVlKGlucHV0VmFsdWUpO1xuICAgICAgICBzZXRMb2FkZWRPcHRpb25zKG9wdGlvbnMgfHwgW10pO1xuICAgICAgICBzZXRQYXNzRW1wdHlPcHRpb25zKGZhbHNlKTtcbiAgICAgICAgc2V0T3B0aW9uc0NhY2hlKG9wdGlvbnMgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9wdGlvbnNDYWNoZSksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIGlucHV0VmFsdWUsIG9wdGlvbnMpKSA6IG9wdGlvbnNDYWNoZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtjYWNoZU9wdGlvbnMsIGxvYWRPcHRpb25zLCBsb2FkZWRJbnB1dFZhbHVlLCBvcHRpb25zQ2FjaGUsIHByb3BzT25JbnB1dENoYW5nZV0pO1xuICB2YXIgb3B0aW9ucyA9IHBhc3NFbXB0eU9wdGlvbnMgPyBbXSA6IHN0YXRlSW5wdXRWYWx1ZSAmJiBsb2FkZWRJbnB1dFZhbHVlID8gbG9hZGVkT3B0aW9ucyA6IGRlZmF1bHRPcHRpb25zIHx8IFtdO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0U2VsZWN0UHJvcHMpLCB7fSwge1xuICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcgfHwgcHJvcHNJc0xvYWRpbmcsXG4gICAgb25JbnB1dENoYW5nZTogb25JbnB1dENoYW5nZSxcbiAgICBmaWx0ZXJPcHRpb246IGZpbHRlck9wdGlvblxuICB9KTtcbn1cblxuZXhwb3J0cy51c2VBc3luYyA9IHVzZUFzeW5jO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgX2V4dGVuZHMgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnKTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgU2VsZWN0ID0gcmVxdWlyZSgnLi4vLi4vZGlzdC9TZWxlY3QtMzZkMTVmOTMuY2pzLnByb2QuanMnKTtcbnZhciB1c2VTdGF0ZU1hbmFnZXIgPSByZXF1aXJlKCcuLi8uLi9kaXN0L3VzZVN0YXRlTWFuYWdlci1jZTIzMDYxYy5janMucHJvZC5qcycpO1xudmFyIHVzZUFzeW5jID0gcmVxdWlyZSgnLi4vLi4vZGlzdC91c2VBc3luYy1iZTY1OWE1Ny5janMucHJvZC5qcycpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZVN1cGVyJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5Jyk7XG5yZXF1aXJlKCcuLi8uLi9kaXN0L2luZGV4LTY2NWM0ZWQ4LmNqcy5wcm9kLmpzJyk7XG5yZXF1aXJlKCdAZW1vdGlvbi9yZWFjdCcpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5Jyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZicpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90YWdnZWRUZW1wbGF0ZUxpdGVyYWwnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHknKTtcbnJlcXVpcmUoJ3JlYWN0LWRvbScpO1xucmVxdWlyZSgnQGZsb2F0aW5nLXVpL2RvbScpO1xucmVxdWlyZSgndXNlLWlzb21vcnBoaWMtbGF5b3V0LWVmZmVjdCcpO1xucmVxdWlyZSgnbWVtb2l6ZS1vbmUnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BOYW1lc3BhY2UoZSkge1xuICBpZiAoZSAmJiBlLl9fZXNNb2R1bGUpIHJldHVybiBlO1xuICB2YXIgbiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGlmIChlKSB7XG4gICAgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgaWYgKGsgIT09ICdkZWZhdWx0Jykge1xuICAgICAgICB2YXIgZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgayk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCBrLCBkLmdldCA/IGQgOiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVba107IH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgbltcImRlZmF1bHRcIl0gPSBlO1xuICByZXR1cm4gT2JqZWN0LmZyZWV6ZShuKTtcbn1cblxudmFyIFJlYWN0X19uYW1lc3BhY2UgPSAvKiNfX1BVUkVfXyovX2ludGVyb3BOYW1lc3BhY2UoUmVhY3QpO1xuXG52YXIgQXN5bmNTZWxlY3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgc3RhdGVNYW5hZ2VkUHJvcHMgPSB1c2VBc3luYy51c2VBc3luYyhwcm9wcyk7XG4gIHZhciBzZWxlY3RQcm9wcyA9IHVzZVN0YXRlTWFuYWdlci51c2VTdGF0ZU1hbmFnZXIoc3RhdGVNYW5hZ2VkUHJvcHMpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChTZWxlY3QuU2VsZWN0LCBfZXh0ZW5kcyh7XG4gICAgcmVmOiByZWZcbiAgfSwgc2VsZWN0UHJvcHMpKTtcbn0pO1xudmFyIEFzeW5jU2VsZWN0JDEgPSBBc3luY1NlbGVjdDtcblxuZXhwb3J0cy51c2VBc3luYyA9IHVzZUFzeW5jLnVzZUFzeW5jO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBBc3luY1NlbGVjdCQxO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vcmVhY3Qtc2VsZWN0LWFzeW5jLmNqcy5wcm9kLmpzXCIpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9yZWFjdC1zZWxlY3QtYXN5bmMuY2pzLmRldi5qc1wiKTtcbn1cbiIsImV4cG9ydHMuX2RlZmF1bHQgPSByZXF1aXJlKFwiLi9yZWFjdC1zZWxlY3QtYXN5bmMuY2pzLmpzXCIpLmRlZmF1bHQ7XG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCc7XG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tICd0c3lyaW5nZSc7XG5pbXBvcnQgeyBPcmRlclN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvb3JkZXInO1xuaW1wb3J0IHtQcm9kdWN0R3JvdXB9IGZyb20gXCIuLi8uLi9tb2RlbC9wcm9kdWN0R3JvdXBcIjtcbmltcG9ydCB7UHJvZHVjdEdyb3VwU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Byb2R1Y3Rncm91cFwiO1xuaW1wb3J0IEFzeW5jU2VsZWN0ICwgeyB1c2VBc3luYyB9IGZyb20gJ3JlYWN0LXNlbGVjdC9hc3luYyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFByb2R1Y3RHcm91cFNlbGVjdCA9IChwcm9wcykgPT4ge1xuICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSk7XG5cbiAgY29uc3QgbG9hZE9wdGlvbnMgPSBhc3luYyAoc2VhcmNoUXVlcnkpID0+IHtcbiAgICBjb25zdCBwcm9kdWN0Z3JvdXBfYXBpID0gbmV3IFByb2R1Y3RHcm91cFNlcnZpY2UoKTtcblxuICAgIHJldHVybiBhd2FpdCBwcm9kdWN0Z3JvdXBfYXBpLmdldFByb2R1Y3RHcm91cHMoc2VhcmNoUXVlcnksIHByb3BzLnNob3ApO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xuICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcHJvcHMub25DaGFuZ2Uob3B0aW9uKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICAgIDxBc3luY1NlbGVjdFxuICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShwcm9wcy5zaG9wLnV1aWQpfVxuICAgICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZX1cbiAgICAgICAgICBsb2FkT3B0aW9ucz17bG9hZE9wdGlvbnN9XG4gICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi51dWlkfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBpc1NlYXJjaGFibGU9e3RydWV9XG4gICAgICAvPlxuICApO1xufTtcblxuUHJvZHVjdEdyb3VwU2VsZWN0LnByb3BUeXBlcyA9IHtcbiAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG4gIHZhbHVlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihQcm9kdWN0R3JvdXApLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9kdWN0R3JvdXBTZWxlY3Q7XG4iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiO1xuaW1wb3J0IHtQcm9kdWN0R3JvdXB9IGZyb20gXCIuLi9tb2RlbC9wcm9kdWN0R3JvdXBcIjtcbmltcG9ydCB7UHJvZHVjdH0gZnJvbSBcIi4uL21vZGVsL3Byb2R1Y3RcIjtcbmltcG9ydCB7SlNPTlNjaGVtYTd9IGZyb20gXCJqc29uLXNjaGVtYVwiO1xuXG5Ac2luZ2xldG9uKClcbkBhdXRvSW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHJvZHVjdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuPzogVG9rZW4pIHt9XG5cbiAgICBhc3luYyBnZXRQcm9kdWN0c0J5VGVybSh0ZXJtOiBzdHJpbmcsIHNob3A6IFNob3ApOiBQcm9taXNlPFByb2R1Y3RbXT4ge1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9wcm9kdWN0L2dldGFsbGJ5dGVybS8nICsgc2hvcC51dWlkICsgJy8nICsgdGVybSwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcCA9IG5ldyBQcm9kdWN0KCk7XG4gICAgICAgICAgICAgICAgcC5pZCA9IGl0ZW0uaWQ7XG4gICAgICAgICAgICAgICAgcC50aXRsZSA9IGl0ZW0udGl0bGU7XG4gICAgICAgICAgICAgICAgcC51dWlkID0gaXRlbS51dWlkO1xuICAgICAgICAgICAgICAgIHAuc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnR5cCA9IGl0ZW0udHlwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0UHJvZHVjdHMocHJvZHVjdEdyb3VwOiBQcm9kdWN0R3JvdXApOiBQcm9taXNlPFByb2R1Y3RbXT4ge1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9wcm9kdWN0L2dldGFsbGJ5cHJvZHVjdGdyb3VwLycgKyBwcm9kdWN0R3JvdXAudXVpZCwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHAgPSBuZXcgUHJvZHVjdCgpO1xuICAgICAgICAgICAgICBwLmlkID0gaXRlbS5pZDtcbiAgICAgICAgICAgICAgcC50aXRsZSA9IGl0ZW0udGl0bGU7XG4gICAgICAgICAgICAgIHAudXVpZCA9IGl0ZW0udXVpZDtcbiAgICAgICAgICAgICAgcC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QudHlwID0gaXRlbS50eXA7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QWRkUHJvZHVjdFNjaGVtYShwcm9kdWN0OiBQcm9kdWN0LCBmb3JtRGF0YTogYW55KTogUHJvbWlzZTxKU09OU2NoZW1hNz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL3Byb2R1Y3QvZ2V0L2Zvcm0vanNvbi8nICsgcHJvZHVjdC51dWlkLCBmb3JtRGF0YSwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGFzeW5jIGNhbGNQcm9kdWN0KHByb2R1Y3Q6IFByb2R1Y3QsIGZvcm1EYXRhKTogUHJvbWlzZTxKU09OU2NoZW1hNz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL3Byb2R1Y3QvZ2V0L2Zvcm0vanNvbi8nICsgcHJvZHVjdC51dWlkLCBmb3JtRGF0YSwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KVxuICAgIH1cbn1cbiIsImltcG9ydHt1c2VSZWYgYXMgcix1c2VFZmZlY3QgYXMgbix1c2VNZW1vIGFzIHQsdXNlU3RhdGUgYXMgZSx1c2VDYWxsYmFjayBhcyB1fWZyb21cInJlYWN0XCI7ZnVuY3Rpb24gYyhlLHUsYyl7dmFyIGk9dGhpcyxhPXIobnVsbCksbz1yKDApLGY9cihudWxsKSxsPXIoW10pLHY9cigpLG09cigpLGQ9cihlKSxnPXIoITApO2QuY3VycmVudD1lO3ZhciBwPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3csdz0hdSYmMCE9PXUmJnA7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiKTt1PSt1fHwwO3ZhciBzPSEhKGM9Y3x8e30pLmxlYWRpbmcseD0hKFwidHJhaWxpbmdcImluIGMpfHwhIWMudHJhaWxpbmcsaD1cIm1heFdhaXRcImluIGMseT1cImRlYm91bmNlT25TZXJ2ZXJcImluIGMmJiEhYy5kZWJvdW5jZU9uU2VydmVyLEY9aD9NYXRoLm1heCgrYy5tYXhXYWl0fHwwLHUpOm51bGw7bihmdW5jdGlvbigpe3JldHVybiBnLmN1cnJlbnQ9ITAsZnVuY3Rpb24oKXtnLmN1cnJlbnQ9ITF9fSxbXSk7dmFyIEE9dChmdW5jdGlvbigpe3ZhciByPWZ1bmN0aW9uKHIpe3ZhciBuPWwuY3VycmVudCx0PXYuY3VycmVudDtyZXR1cm4gbC5jdXJyZW50PXYuY3VycmVudD1udWxsLG8uY3VycmVudD1yLG0uY3VycmVudD1kLmN1cnJlbnQuYXBwbHkodCxuKX0sbj1mdW5jdGlvbihyLG4pe3cmJmNhbmNlbEFuaW1hdGlvbkZyYW1lKGYuY3VycmVudCksZi5jdXJyZW50PXc/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHIpOnNldFRpbWVvdXQocixuKX0sdD1mdW5jdGlvbihyKXtpZighZy5jdXJyZW50KXJldHVybiExO3ZhciBuPXItYS5jdXJyZW50O3JldHVybiFhLmN1cnJlbnR8fG4+PXV8fG48MHx8aCYmci1vLmN1cnJlbnQ+PUZ9LGU9ZnVuY3Rpb24obil7cmV0dXJuIGYuY3VycmVudD1udWxsLHgmJmwuY3VycmVudD9yKG4pOihsLmN1cnJlbnQ9di5jdXJyZW50PW51bGwsbS5jdXJyZW50KX0sYz1mdW5jdGlvbiByKCl7dmFyIGM9RGF0ZS5ub3coKTtpZih0KGMpKXJldHVybiBlKGMpO2lmKGcuY3VycmVudCl7dmFyIGk9dS0oYy1hLmN1cnJlbnQpLGY9aD9NYXRoLm1pbihpLEYtKGMtby5jdXJyZW50KSk6aTtuKHIsZil9fSxBPWZ1bmN0aW9uKCl7aWYocHx8eSl7dmFyIGU9RGF0ZS5ub3coKSxkPXQoZSk7aWYobC5jdXJyZW50PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx2LmN1cnJlbnQ9aSxhLmN1cnJlbnQ9ZSxkKXtpZighZi5jdXJyZW50JiZnLmN1cnJlbnQpcmV0dXJuIG8uY3VycmVudD1hLmN1cnJlbnQsbihjLHUpLHM/cihhLmN1cnJlbnQpOm0uY3VycmVudDtpZihoKXJldHVybiBuKGMsdSkscihhLmN1cnJlbnQpfXJldHVybiBmLmN1cnJlbnR8fG4oYyx1KSxtLmN1cnJlbnR9fTtyZXR1cm4gQS5jYW5jZWw9ZnVuY3Rpb24oKXtmLmN1cnJlbnQmJih3P2NhbmNlbEFuaW1hdGlvbkZyYW1lKGYuY3VycmVudCk6Y2xlYXJUaW1lb3V0KGYuY3VycmVudCkpLG8uY3VycmVudD0wLGwuY3VycmVudD1hLmN1cnJlbnQ9di5jdXJyZW50PWYuY3VycmVudD1udWxsfSxBLmlzUGVuZGluZz1mdW5jdGlvbigpe3JldHVybiEhZi5jdXJyZW50fSxBLmZsdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIGYuY3VycmVudD9lKERhdGUubm93KCkpOm0uY3VycmVudH0sQX0sW3MsaCx1LEYseCx3LHAseV0pO3JldHVybiBBfWZ1bmN0aW9uIGkocixuKXtyZXR1cm4gcj09PW59ZnVuY3Rpb24gYShuLHQsYSl7dmFyIG89YSYmYS5lcXVhbGl0eUZufHxpLGY9cihuKSxsPWUoe30pWzFdLHY9Yyh1KGZ1bmN0aW9uKHIpe2YuY3VycmVudD1yLGwoe30pfSxbbF0pLHQsYSksbT1yKG4pO3JldHVybiBvKG0uY3VycmVudCxuKXx8KHYobiksbS5jdXJyZW50PW4pLFtmLmN1cnJlbnQsdl19ZnVuY3Rpb24gbyhyLG4sdCl7dmFyIGU9dm9pZCAwPT09dD97fTp0LHU9ZS5sZWFkaW5nLGk9ZS50cmFpbGluZztyZXR1cm4gYyhyLG4se21heFdhaXQ6bixsZWFkaW5nOnZvaWQgMD09PXV8fHUsdHJhaWxpbmc6dm9pZCAwPT09aXx8aX0pfWV4cG9ydHthIGFzIHVzZURlYm91bmNlLGMgYXMgdXNlRGVib3VuY2VkQ2FsbGJhY2ssbyBhcyB1c2VUaHJvdHRsZWRDYWxsYmFja307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCc7XG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tICd0c3lyaW5nZSc7XG5pbXBvcnQgeyBPcmRlclN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvb3JkZXInO1xuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdFwiO1xuaW1wb3J0IHtQcm9kdWN0R3JvdXB9IGZyb20gXCIuLi8uLi9tb2RlbC9wcm9kdWN0R3JvdXBcIjtcbmltcG9ydCBBc3luY1NlbGVjdCBmcm9tIFwicmVhY3Qtc2VsZWN0L2FzeW5jXCI7XG5pbXBvcnQge1Byb2R1Y3RTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcHJvZHVjdFwiO1xuaW1wb3J0IHt1c2VEZWJvdW5jZX0gZnJvbSBcInVzZS1kZWJvdW5jZVwiO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBQcm9kdWN0U2VsZWN0ID0gKHByb3BzKSA9PiB7XG5cbiAgY29uc3Qgb3JkZXJTdGF0ZTogT3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpO1xuXG4gIGNvbnN0IGxvYWRPcHRpb25zID0gYXN5bmMgKHNlYXJjaFF1ZXJ5KSA9PiB7XG4gICAgaWYoc2VhcmNoUXVlcnkgPT0gXCJcIiAmJiBwcm9wcy5wcm9kdWN0R3JvdXAudXVpZCA9PSBcIlwiKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHByb2R1Y3RfYXBpID0gbmV3IFByb2R1Y3RTZXJ2aWNlKCk7XG4gICAgaWYoc2VhcmNoUXVlcnkgIT0gXCJcIikge1xuICAgICAgcmV0dXJuIGF3YWl0IHByb2R1Y3RfYXBpLmdldFByb2R1Y3RzQnlUZXJtKHNlYXJjaFF1ZXJ5LCBwcm9wcy5zaG9wKTtcbiAgICB9ZWxzZXtcbiAgICAgIHJldHVybiBhd2FpdCBwcm9kdWN0X2FwaS5nZXRQcm9kdWN0cyhwcm9wcy5wcm9kdWN0R3JvdXApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZWJvdW5jZWRTZWFyY2hUZXJtID0gdXNlRGVib3VuY2UobG9hZE9wdGlvbnMsIDUwMCk7XG5cbiAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBwcm9wcy5vbkNoYW5nZShvcHRpb24pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgICAgPEFzeW5jU2VsZWN0XG4gICAgICAgICAgZGVmYXVsdE9wdGlvbnNcbiAgICAgICAgICBrZXk9e0pTT04uc3RyaW5naWZ5KHByb3BzLnByb2R1Y3RHcm91cC51dWlkKX1cbiAgICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWV9XG4gICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxuICAgICAgICAgIGdldE9wdGlvblZhbHVlPXsob3B0aW9uKSA9PiBvcHRpb24udXVpZH1cbiAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4gb3B0aW9uLnRpdGxlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBpc1NlYXJjaGFibGU9e3RydWV9XG4gICAgICAvPlxuICApO1xufTtcblxuUHJvZHVjdFNlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICB2YWx1ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoUHJvZHVjdCksXG4gIHByb2R1Y3RHcm91cDogUHJvcFR5cGVzLmluc3RhbmNlT2YoUHJvZHVjdEdyb3VwKSxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvZHVjdFNlbGVjdDtcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXG5pbXBvcnQge1Byb2R1Y3R9IGZyb20gXCIuLi8uLi9tb2RlbC9wcm9kdWN0XCJcbmltcG9ydCB2YWxpZGF0b3IgZnJvbSBcIkByanNmL3ZhbGlkYXRvci1hanY2XCJcbmltcG9ydCB7IEpTT05TY2hlbWE3IH0gZnJvbSBcImpzb24tc2NoZW1hXCJcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlJ1xuaW1wb3J0IEZvcm0gZnJvbSBcIkByanNmL2NvcmVcIlxuaW1wb3J0IHtQcm9kdWN0U2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RcIlxuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1ByaWNlfSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJpY2VcIlxuaW1wb3J0IHtQb3N9IGZyb20gXCIuLi8uLi9tb2RlbC9wb3NcIlxuaW1wb3J0IHsgdXNlRGVib3VuY2VkQ2FsbGJhY2sgfSBmcm9tICd1c2UtZGVib3VuY2UnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL2Jhc2UvQnV0dG9uJ1xuaW1wb3J0IEN1cnJlbmN5IGZyb20gJy4uL2Jhc2UvQ3VycmVuY3knXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFByb2R1Y3RGb3JtID0gKHtzaG9wLCBwb3MsIGhhbmRsZUNsb3NlLCBoYW5kbGVDaGFuZ2V9KSA9PiB7XG4gICAgY29uc3QgcHJvZHVjdF9hcGkgPSBuZXcgUHJvZHVjdFNlcnZpY2UoKVxuXG4gICAgY29uc3QgW3NjaGVtYSwgc2V0U2NoZW1hXSA9IHVzZVN0YXRlPEpTT05TY2hlbWE3Pih7fSlcbiAgICBjb25zdCBbdWlTY2hlbWEsIHNldFVpU2NoZW1hXSA9IHVzZVN0YXRlPEpTT05TY2hlbWE3Pih7fSlcblxuICAgIGNvbnN0IFtmb3JtRGF0YSwgc2V0Rm9ybURhdGFdID0gdXNlU3RhdGUoe30pXG4gICAgY29uc3QgW3R5cGUsIHNldFR5cGVdID0gdXNlU3RhdGU8bnVtYmVyPigwKVxuXG4gICAgY29uc3QgW3ByaWNlLCBzZXRQcmljZV0gPSB1c2VTdGF0ZTxQcmljZT4obmV3IFByaWNlKCkpXG5cbiAgICBjb25zdCBsb2FkU2NoZW1hID0gKGxvYWREYXRhOiBhbnkpID0+IHtcbiAgICAgICAgaWYocG9zLnByb2R1Y3QudXVpZCA9PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF0YSA9IHt9XG5cbiAgICAgICAgcHJvZHVjdF9hcGkuZ2V0QWRkUHJvZHVjdFNjaGVtYShwb3MucHJvZHVjdCwgbG9hZERhdGEpLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBmb3IoY29uc3Qgb2JqIGluIHZhbHVlWydqc29uRm9ybSddWydwcm9wZXJ0aWVzJ10pIHsgXG4gICAgICAgICAgICAgICAgZGF0YVtvYmpdID0gdmFsdWVbJ2pzb25Gb3JtJ11bJ3Byb3BlcnRpZXMnXVtvYmpdWydkZWZhdWx0J11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEZvcm1EYXRhKGRhdGEpXG4gICAgICAgICAgICBzZXRTY2hlbWEodmFsdWVbJ2pzb25Gb3JtJ10pXG4gICAgICAgICAgICBzZXRVaVNjaGVtYSh2YWx1ZVsndWlKc29uRm9ybSddKVxuICAgICAgICAgICAgc2V0UHJpY2UodmFsdWVbJ3ByaWNlJ10pXG4gICAgICAgICAgICBzZXRUeXBlKHZhbHVlWyd0eXAnXSlcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2VDYWxjID0gKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgIHNldEZvcm1EYXRhKGZvcm1EYXRhKVxuICAgICAgICBkZWJvdW5jZVJlQ2FsYygpXG4gICAgfVxuXG4gICAgY29uc3QgZGVib3VuY2VSZUNhbGMgPSB1c2VEZWJvdW5jZWRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHZhciBkYXRhID0ge31cblxuICAgICAgICBwcm9kdWN0X2FwaS5jYWxjUHJvZHVjdChwb3MucHJvZHVjdCwgZm9ybURhdGEpLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBmb3IoY29uc3Qgb2JqIGluIHZhbHVlWydqc29uRm9ybSddWydwcm9wZXJ0aWVzJ10pIHsgXG4gICAgICAgICAgICAgICAgZGF0YVtvYmpdID0gdmFsdWVbJ2pzb25Gb3JtJ11bJ3Byb3BlcnRpZXMnXVtvYmpdWydkZWZhdWx0J11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEZvcm1EYXRhKGRhdGEpXG4gICAgICAgICAgICBzZXRTY2hlbWEodmFsdWVbJ2pzb25Gb3JtJ10pXG4gICAgICAgICAgICBzZXRVaVNjaGVtYSh2YWx1ZVsndWlKc29uRm9ybSddKVxuICAgICAgICAgICAgc2V0UHJpY2UodmFsdWVbJ3ByaWNlJ10pXG4gICAgICAgICAgICBzZXRUeXBlKHZhbHVlWyd0eXAnXSlcbiAgICAgICAgfSlcbiAgICB9LCA2MDApXG5cbiAgICBjb25zdCBhZGRQcm9kdWN0ID0gKCkgPT4ge1xuXG4gICAgICAgIHBvcy5wcm9kdWN0LnNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdC5wYXJhbXMgPSBmb3JtRGF0YVxuICAgICAgICBwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QudHlwID0gdHlwZVxuICAgICAgICBpZihmb3JtRGF0YVsnY291bnQnXSkge1xuICAgICAgICAgICAgcG9zLmNvdW50ID0gZm9ybURhdGFbJ2NvdW50J11cbiAgICAgICAgfVxuXG4gICAgICAgIHBvcy5wcmljZSA9IHByaWNlXG4gICAgICAgIGhhbmRsZUNoYW5nZShwb3MpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZihwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QucGFyYW1zKSB7XG4gICAgICAgICAgICBzZXRGb3JtRGF0YShwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QucGFyYW1zKVxuICAgICAgICAgICAgbG9hZFNjaGVtYShwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QucGFyYW1zKVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHNldEZvcm1EYXRhKHt9KVxuICAgICAgICAgICAgbG9hZFNjaGVtYSh7fSlcbiAgICAgICAgfVxuICAgICAgICBcbiAgICB9LCBbcG9zLnByb2R1Y3RdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4Jz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleC0xJz5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm0gc2NoZW1hPXtzY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVpU2NoZW1hPXt1aVNjaGVtYX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGE9e2Zvcm1EYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGNoYW5nZUNhbGMoZS5mb3JtRGF0YSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcj17dmFsaWRhdG9yfS8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9Jyc+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDU+TmV0dG86IDxDdXJyZW5jeSBwcmljZT17IHByaWNlLmFsbE5ldH0gLz48L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1Pk13ZXJ0OiA8Q3VycmVuY3kgcHJpY2U9eyBwcmljZS5hbGxWYXR9IC8+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoND5CcnV0dG86IDxDdXJyZW5jeSBwcmljZT17IHByaWNlLmFsbEdyb3NzfSAvPjwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e2FkZFByb2R1Y3R9IHR5cGU9ezN9IHZhcmlhbnQ9e1wic3VjY2Vzc1wifSAvPlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvPlxuICAgIClcbn1cblxuUHJvZHVjdEZvcm0ucHJvcFR5cGVzID0ge1xuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICAgIHBvczogUHJvcFR5cGVzLmluc3RhbmNlT2YoUG9zKSxcbiAgICBoYW5kbGVDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFuZGxlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuY1xufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9kdWN0Rm9ybVxuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdFwiXG5pbXBvcnQge1Byb2R1Y3RHcm91cH0gZnJvbSBcIi4uLy4uL21vZGVsL3Byb2R1Y3RHcm91cFwiXG5pbXBvcnQgUHJvZHVjdEdyb3VwU2VsZWN0IGZyb20gXCIuLi9wcm9kdWN0L1Byb2R1Y3RHcm91cFNlbGVjdFwiXG5pbXBvcnQgUHJvZHVjdFNlbGVjdCBmcm9tIFwiLi4vcHJvZHVjdC9Qcm9kdWN0U2VsZWN0XCJcbmltcG9ydCBQcm9kdWN0Rm9ybSBmcm9tIFwiLi4vcHJvZHVjdC9Qcm9kdWN0Rm9ybVwiXG5pbXBvcnQge09yZGVyfSBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxuaW1wb3J0IHsgUG9zIH0gZnJvbSAnLi4vLi4vbW9kZWwvcG9zJ1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi9iYXNlL0J1dHRvbidcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSBcImZsb3diaXRlLXJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEFkZFBvc2l0aW9uQ29tcG9uZW50ID0gKHByb3BzKSA9PiB7XG5cbiAgICBjb25zdCBbc2hvcCwgc2V0U2hvcF0gPSB1c2VTdGF0ZShudWxsKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0U2hvcChwcm9wcy5zaG9wKVxuICAgIH0sIFtwcm9wcy5zaG9wXSlcblxuICAgIGNvbnN0IFtzaG93LCBzZXRTaG93XSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gICAgY29uc3QgcG9zID0gbmV3IFBvcygpO1xuXG4gICAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKSA9PiBzZXRTaG93KGZhbHNlKVxuICAgIGNvbnN0IGhhbmRsZVNob3cgPSAoKSA9PiBzZXRTaG93KHRydWUpXG5cbiAgICBjb25zdCBbcHJvZHVjdCwgc2V0UHJvZHVjdF0gPSB1c2VTdGF0ZTxQcm9kdWN0PihuZXcgUHJvZHVjdCgpKVxuICAgIGNvbnN0IFtwcm9kdWN0R3JvdXAsIHNldFByb2R1Y3RHcm91cF0gPSB1c2VTdGF0ZTxQcm9kdWN0R3JvdXA+KG5ldyBQcm9kdWN0R3JvdXAoKSlcblxuICAgIHBvcy5wcm9kdWN0ID0gcHJvZHVjdDtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSd0ZXh0LWNlbnRlcic+XG4gICAgICAgICAgICA8QnV0dG9uIHR5cGU9ezF9IG9uQ2xpY2s9e2hhbmRsZVNob3d9IHZhcmlhbnQ9XCJzdWNjZXNzXCIvPlxuXG4gICAgICAgICAgICA8TW9kYWwgc2l6ZT1cIjd4bFwiIHNob3c9e3Nob3d9IG9uQ2xvc2U9eygpID0+IGhhbmRsZUNsb3NlKCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgYWRkIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgPC9Nb2RhbC5IZWFkZXI+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkJvZHkgY2xhc3NOYW1lPVwibWluLWgtOTZcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2ZsZXgnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2ZsZXgtMSc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlByb2R1Y3RHcm91cDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2R1Y3RHcm91cFNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJvZHVjdEdyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9wPXtwcm9wcy5zaG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2V0UHJvZHVjdEdyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4LTEnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5Qcm9kdWN0PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvZHVjdFNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJvZHVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcD17cHJvcHMuc2hvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdEdyb3VwPXtwcm9kdWN0R3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRQcm9kdWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPFByb2R1Y3RGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3M9e3Bvc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoYW5nZT17cHJvcHMuYWRkUG9zfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvTW9kYWwuQm9keT5cbiAgICAgICAgICAgIDwvTW9kYWw+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn1cblxuQWRkUG9zaXRpb25Db21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICAgIGFkZFBvczogUHJvcFR5cGVzLmZ1bmNcbn1cblxuXG5leHBvcnQgZGVmYXVsdCBBZGRQb3NpdGlvbkNvbXBvbmVudFxuIiwiaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcbmltcG9ydCB7UHJvZHVjdH0gZnJvbSBcIi4uLy4uL21vZGVsL3Byb2R1Y3RcIlxuaW1wb3J0IHtQcm9kdWN0R3JvdXB9IGZyb20gXCIuLi8uLi9tb2RlbC9wcm9kdWN0R3JvdXBcIlxuaW1wb3J0IFByb2R1Y3RHcm91cFNlbGVjdCBmcm9tIFwiLi4vcHJvZHVjdC9Qcm9kdWN0R3JvdXBTZWxlY3RcIlxuaW1wb3J0IFByb2R1Y3RTZWxlY3QgZnJvbSBcIi4uL3Byb2R1Y3QvUHJvZHVjdFNlbGVjdFwiXG5pbXBvcnQgeyBQb3MgfSBmcm9tICcuLi8uLi9tb2RlbC9wb3MnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL2Jhc2UvQnV0dG9uJ1xuaW1wb3J0IFByb2R1Y3RGb3JtIGZyb20gJy4uL3Byb2R1Y3QvUHJvZHVjdEZvcm0nXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gXCJmbG93Yml0ZS1yZWFjdFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBFZGl0UG9zaXRpb25Db21wb25lbnQgPSAoe3Bvc2l0aW9uLCBzaG9wLCBjaGFuZ2VQb3N9KSA9PiB7XG5cbiAgICBjb25zdCBbc2hvdywgc2V0U2hvd10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICAgIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4gc2V0U2hvdyhmYWxzZSlcbiAgICBjb25zdCBoYW5kbGVTaG93ID0gKCkgPT4gc2V0U2hvdyh0cnVlKVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPXsyfSB2YXJpYW50PVwiZ3JheVwiIG9uQ2xpY2s9e2hhbmRsZVNob3d9Lz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8TW9kYWwgc2l6ZT1cIjd4bFwiIHNob3c9e3Nob3d9IG9uQ2xvc2U9eygpID0+IGhhbmRsZUNsb3NlKCl9PlxuICAgICAgICAgICAgICAgIDxNb2RhbC5IZWFkZXIgIGNsYXNzTmFtZT1cInRleHQtbWF1dmUxMiBtLTAgdGV4dC1bMTdweF0gZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgZWRpdCBwb3NpdGlvblxuICAgICAgICAgICAgICAgIDwvTW9kYWwuSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxNb2RhbC5Cb2R5PlxuICAgICAgICAgICAgICAgIDxQcm9kdWN0Rm9ybVxuICAgICAgICAgICAgICAgICAgICBwb3M9e3Bvc2l0aW9ufVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2NoYW5nZVBvc31cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlfVxuICAgICAgICAgICAgICAgIC8+PC9Nb2RhbC5Cb2R5PlxuICAgICAgICAgICAgPC9Nb2RhbD5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG5FZGl0UG9zaXRpb25Db21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICAgIHBvc2l0aW9uOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihQb3MpLFxuICAgIGNoYW5nZVBvczogUHJvcFR5cGVzLmZ1bmNcbn1cblxuXG5leHBvcnQgZGVmYXVsdCBFZGl0UG9zaXRpb25Db21wb25lbnRcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcclxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcclxuaW1wb3J0IHtQb3N9IGZyb20gXCIuLi8uLi9tb2RlbC9wb3NcIlxyXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL2Jhc2UvQnV0dG9uJ1xyXG5pbXBvcnQgRWRpdFBvc2l0aW9uQ29tcG9uZW50IGZyb20gJy4vRWRpdFBvc2l0aW9uQ29tcG9uZW50J1xyXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcclxuaW1wb3J0IEN1cnJlbmN5IGZyb20gJy4uL2Jhc2UvQ3VycmVuY3knXHJcblxyXG5cclxuY29uc3QgUG9zQ29tcG9uZW50ID0gKHtpbmRleCwgcG9zLCBkZWxQb3MsIGNoYW5nZVBvcywgc2hvcH0pID0+IHtcclxuXHJcbiAgICBjb25zdCBkZWxldGVQb3MgPSAodXVpZDogU3RyaW5nKSA9PiB7XHJcbiAgICAgICAgZGVsUG9zKHV1aWQpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgnfT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xJ30+e2luZGV4ICsgMX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xJ30+e3Bvcy5wcm9kdWN0LnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEnfT57cG9zLmNvdW50fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT48Q3VycmVuY3kgcHJpY2U9eyBwb3MucHJpY2UuYWxsTmV0fSAvPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT48Q3VycmVuY3kgcHJpY2U9eyBwb3MucHJpY2UuYWxsVmF0fSAvPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT48Q3VycmVuY3kgcHJpY2U9eyBwb3MucHJpY2UuYWxsR3Jvc3N9IC8+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSB0ZXh0LWVuZCd9PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEVkaXRQb3NpdGlvbkNvbXBvbmVudCBzaG9wPXtzaG9wfSBwb3NpdGlvbj17cG9zfSBjaGFuZ2VQb3M9e2NoYW5nZVBvc30gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPXs1fSB2YXJpYW50PXsnZmFpbHVyZSd9IG9uQ2xpY2s9eygpID0+IGRlbGV0ZVBvcyhwb3MudXVpZCl9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxoci8+XHJcbiAgICAgICAgPC8+XHJcbiAgICApXHJcbn1cclxuXHJcblBvc0NvbXBvbmVudC5wcm9wVHlwZXMgPSB7XHJcbiAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlcixcclxuICAgIHBvczogUHJvcFR5cGVzLmluc3RhbmNlT2YoUG9zKSxcclxuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxyXG4gICAgZGVsUG9zOiBQcm9wVHlwZXMuZnVuYyxcclxuICAgIGNoYW5nZVBvczogUHJvcFR5cGVzLmZ1bmNcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUG9zQ29tcG9uZW50XHJcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXHJcbmltcG9ydCBQb3NDb21wb25lbnQgZnJvbSBcIi4vUG9zQ29tcG9uZW50XCJcclxuaW1wb3J0IHt1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiXHJcbmltcG9ydCB7T3JkZXJ9IGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXHJcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xyXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXHJcblxyXG5jb25zdCBJdGVtc0NvbXBvbmVudCA9ICh7cG9zaXRpb25zLCBkZWxQb3MsIHNob3AsIGNoYW5nZVBvc30pID0+IHtcclxuXHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgnfT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xJ30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg1PlBvczwvaDU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xJ30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg1PlRpdGxlPC9oNT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEnfT5cclxuICAgICAgICAgICAgICAgICAgICA8aDU+QW56YWhsPC9oNT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT5cclxuICAgICAgICAgICAgICAgICAgICA8aDU+TmV0dG88L2g1PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSB0ZXh0LWVuZCd9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNT5UYXg8L2g1PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSB0ZXh0LWVuZCd9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNT5Hcm9zczwvaDU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg1PlN0YXR1czwvaDU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xJ30+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aHIvPlxyXG4gICAgICAgICAgICB7cG9zaXRpb25zLm1hcCgob2JqZWN0LCBpKSA9PiA8UG9zQ29tcG9uZW50IHBvcz17b2JqZWN0fSBzaG9wPXtzaG9wfSBkZWxQb3M9e2RlbFBvc30gY2hhbmdlUG9zPXtjaGFuZ2VQb3N9IGtleT17aX0gaW5kZXg9e2l9IC8+KX1cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApXHJcbn1cclxuXHJcbkl0ZW1zQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcclxuICAgIHBvc2l0aW9uczogUHJvcFR5cGVzLmFycmF5LFxyXG4gICAgZGVsUG9zOiBQcm9wVHlwZXMuZnVuYyxcclxuICAgIGNoYW5nZVBvczogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBJdGVtc0NvbXBvbmVudFxyXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgQWRkUG9zaXRpb25Db21wb25lbnQgZnJvbSBcIi4vQWRkUG9zaXRpb25Db21wb25lbnRcIlxuaW1wb3J0IEl0ZW1zQ29tcG9uZW50IGZyb20gXCIuL0l0ZW1zQ29tcG9uZW50XCJcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7UG9zfSBmcm9tIFwiLi4vLi4vbW9kZWwvcG9zXCJcbmltcG9ydCB7T3JkZXJ9IGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlXCJcbmltcG9ydCB7T3JkZXJTdGF0ZX0gZnJvbSBcIi4uLy4uL3N0YXRlL29yZGVyXCJcblxuY29uc3QgUG9zaXRpb25zQ29tcG9uZW50ID0gKHtvcmRlciwgc2hvcCwgdXBkYXRlT3JkZXJ9KSA9PiB7XG5cbiAgICBjb25zdCBvcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcblxuICAgIGNvbnN0IFtwb3NpdGlvbnMsIHNldFBvc2l0aW9uc10gPSB1c2VTdGF0ZTxBcnJheTxQb3M+PihvcmRlci5wb3NpdGlvbnMpXG5cbiAgICBjb25zdCBhZGRQb3MgPSAocG9zT2JqKSA9PiB7XG4gICAgICAgIHNldFBvc2l0aW9ucyhbLi4ucG9zaXRpb25zLCBwb3NPYmpdKVxuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZVBvcyA9IChwb3NPYmopID0+IHtcbiAgICAgICAgY29uc3QgbmV4dENvdW50ZXJzID0gcG9zaXRpb25zLm1hcCgoYywgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGMudXVpZCA9PT0gcG9zT2JqLnV1aWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHBvc09ialxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgc2V0UG9zaXRpb25zKG5leHRDb3VudGVycylcbiAgICAgICAgXG4gICAgfVxuXG4gICAgY29uc3QgZGVsUG9zID0gKHV1aWQpID0+IHtcbiAgICAgICAgbGV0IHBvcyA9IHBvc2l0aW9ucy5maWx0ZXIoKG9iaikgPT4gb2JqLnV1aWQgIT09IHV1aWQpXG5cbiAgICAgICAgc2V0UG9zaXRpb25zKHBvcylcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlXG4gICAgICAgIG9yZGVyT2JqLnBvc2l0aW9ucyA9IHBvc2l0aW9uc1xuICAgICAgICBvcmRlclN0YXRlLnNldEN1cnJlbnRPcmRlcihvcmRlck9iailcbiAgICB9LCBbcG9zaXRpb25zXSlcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcInAtMlwifT5cbiAgICAgICAgICAgIDxJdGVtc0NvbXBvbmVudCBwb3NpdGlvbnM9e3Bvc2l0aW9uc30gc2hvcD17c2hvcH0gZGVsUG9zPXtkZWxQb3N9IGNoYW5nZVBvcz17Y2hhbmdlUG9zfS8+XG4gICAgICAgICAgICA8QWRkUG9zaXRpb25Db21wb25lbnQgc2hvcD17c2hvcH0gYWRkUG9zPXthZGRQb3N9Lz5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG5Qb3NpdGlvbnNDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXG4gICAgdXBkYXRlT3JkZXI6IFByb3BUeXBlcy5mdW5jXG59XG5cbmV4cG9ydCBkZWZhdWx0IFBvc2l0aW9uc0NvbXBvbmVudFxuIiwiaW1wb3J0IHthdXRvSW5qZWN0YWJsZSwgc2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2VcIlxyXG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCJcclxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJ1xyXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uL21vZGVsL3Nob3BcIlxyXG5pbXBvcnQge1BheW1lbnR9IGZyb20gXCIuLi9tb2RlbC9wYXltZW50XCJcclxuXHJcbkBzaW5nbGV0b24oKVxyXG5AYXV0b0luamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUGF5bWVudFNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2tlbj86IFRva2VuKSB7fVxyXG5cclxuICAgIGFzeW5jIGdldFBheW1lbnRzKHNob3A6IFNob3ApOiBQcm9taXNlPFBheW1lbnRbXT4ge1xyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvcGF5bWVudC9ieS9zaG9wLycgKyBzaG9wLnV1aWQsIHtcclxuICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBheW1lbnQgPSBuZXcgUGF5bWVudCgpXHJcbiAgICAgICAgICAgICAgICBwYXltZW50LnVpZCA9IGl0ZW0udWlkXHJcbiAgICAgICAgICAgICAgICBwYXltZW50LnRpdGxlID0gaXRlbS50aXRsZVxyXG4gICAgICAgICAgICAgICAgcGF5bWVudC51dWlkID0gaXRlbS51dWlkXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF5bWVudFxyXG4gICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG59XHJcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xyXG5pbXBvcnQgeyBBc3luY1BhZ2luYXRlIH0gZnJvbSBcInJlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZVwiXHJcbmltcG9ydCB7IFBheW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3BheW1lbnRcIlxyXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxyXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uLy4uL21vZGVsL3Nob3BcIlxyXG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tIFwidHN5cmluZ2VcIlxyXG5pbXBvcnQgeyBPcmRlclN0YXRlIH0gZnJvbSBcIi4uLy4uL3N0YXRlL29yZGVyXCJcclxuaW1wb3J0IHsgT3JkZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxyXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IFNlbGVjdCBmcm9tICdyZWFjdC1zZWxlY3QnXHJcbmltcG9ydCB7IFNlbGVjdExhYmVsIH0gZnJvbSAnLi4vYmFzZS9TZWxlY3RMYWJlbCdcclxuXHJcbmNvbnN0IFBheW1lbnRDb21wb25lbnQgPSAoeyBzaG9wLCBvcmRlciB9KSA9PiB7XHJcblxyXG4gICAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKVxyXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXHJcbiAgICBjb25zdCBbcGF5bWVudCwgc2V0UGF5bWVudF0gPSB1c2VTdGF0ZSgwKVxyXG4gICAgY29uc3QgcGF5bWVudF9zZXJ2aWNlID0gbmV3IFBheW1lbnRTZXJ2aWNlKClcclxuXHJcbiAgICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSwgbG9hZGVkT3B0aW9ucykgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwYXltZW50X3NlcnZpY2UuZ2V0UGF5bWVudHMoc2hvcClcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgb3B0aW9uczogZGF0YSxcclxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0U2hvcFV1aWQoc2hvcC51dWlkKVxyXG4gICAgICB9LCBbc2hvcC51dWlkXSlcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFBheW1lbnQob3JkZXIucGF5bWVudC51aWQpXHJcbiAgICB9LCBbb3JkZXIucGF5bWVudF0pXHJcblxyXG5cclxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xyXG4gICAgICAgIG9yZGVyLnBheW1lbnQgPSBvcHRpb25cclxuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLmdldFZhbHVlKClcclxuICAgICAgICBvcmRlck9iai5wYXltZW50ID0gb3B0aW9uXHJcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXHJcbiAgICAgICAgc2V0UGF5bWVudChvcHRpb24udWlkKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wicC0yXCJ9PlxyXG4gICAgICAgICAgICA8QXN5bmNQYWdpbmF0ZVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnNcclxuICAgICAgICAgICAgICAgIGtleT17SlNPTi5zdHJpbmdpZnkoc2hvcFV1aWQpfVxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50cz17eyBDb250cm9sOiBTZWxlY3RMYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtvcmRlci5wYXltZW50fVxyXG4gICAgICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9JydcclxuICAgICAgICAgICAgICAgIG5hbWU9J1phaGxhcnQnXHJcbiAgICAgICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnVpZH1cclxuICAgICAgICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24udGl0bGV9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwYXltZW50ID09IDAgPyBcImJvcmRlciBib3JkZXItcmVkLTUwMFwiIDogXCJcIn1gfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKVxyXG59XHJcblxyXG5QYXltZW50Q29tcG9uZW50LnByb3BUeXBlcyA9IHtcclxuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxyXG4gICAgb3JkZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKE9yZGVyKSxcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUGF5bWVudENvbXBvbmVudFxyXG4iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiXHJcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcIi4vdG9rZW5cIlxyXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXHJcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiXHJcbmltcG9ydCB7U2hpcHBpbmd9IGZyb20gXCIuLi9tb2RlbC9zaGlwcGluZ1wiXHJcblxyXG5Ac2luZ2xldG9uKClcclxuQGF1dG9JbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNoaXBwaW5nU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuPzogVG9rZW4pIHt9XHJcblxyXG4gICAgYXN5bmMgZ2V0U2hpcHBpbmcoc2hvcDogU2hvcCk6IFByb21pc2U8U2hpcHBpbmdbXT4ge1xyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvc2hpcHBpbmcvYnkvc2hvcC8nICsgc2hvcC51dWlkLCB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzaGlwbWVudCA9IG5ldyBTaGlwcGluZygpXHJcbiAgICAgICAgICAgICAgICBzaGlwbWVudC51aWQgPSBpdGVtLnVpZFxyXG4gICAgICAgICAgICAgICAgc2hpcG1lbnQudGl0bGUgPSBpdGVtLnRpdGxlXHJcbiAgICAgICAgICAgICAgICBzaGlwbWVudC51dWlkID0gaXRlbS51dWlkXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2hpcG1lbnRcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxufVxyXG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcclxuaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxyXG5pbXBvcnQge1NoaXBwaW5nU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NoaXBwaW5nXCJcclxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcclxuaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi4vLi4vbW9kZWwvc2hvcFwiXHJcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2VcIlxyXG5pbXBvcnQge09yZGVyU3RhdGV9IGZyb20gXCIuLi8uLi9zdGF0ZS9vcmRlclwiXHJcbmltcG9ydCB7T3JkZXJ9IGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXHJcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xyXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXHJcblxyXG5jb25zdCBTaGlwcGluZ0NvbXBvbmVudCA9ICh7c2hvcCwgb3JkZXJ9KSA9PiB7XHJcblxyXG4gICAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKVxyXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXHJcbiAgICBjb25zdCBbc2hpcHBpbmcsIHNldFNoaXBwaW5nXSA9IHVzZVN0YXRlKDApXHJcbiAgICBjb25zdCBzaGlwcGluZ19zZXJ2aWNlID0gbmV3IFNoaXBwaW5nU2VydmljZSgpXHJcbiAgICBcclxuICAgIGNvbnN0IGxvYWRPcHRpb25zID0gYXN5bmMgKHNlYXJjaFF1ZXJ5LCBsb2FkZWRPcHRpb25zKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHNoaXBwaW5nX3NlcnZpY2UuZ2V0U2hpcHBpbmcoc2hvcClcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgb3B0aW9uczogZGF0YSxcclxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0U2hvcFV1aWQoc2hvcC51dWlkKVxyXG4gICAgICB9LCBbc2hvcC51dWlkXSlcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFNoaXBwaW5nKG9yZGVyLnNoaXBwaW5nLnVpZClcclxuICAgIH0sIFtvcmRlci5zaGlwcGluZ10pXHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgb3JkZXIuc2hpcHBpbmcgPSBvcHRpb25cclxuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLmdldFZhbHVlKClcclxuICAgICAgICBvcmRlck9iai5zaGlwcGluZyA9IG9wdGlvblxyXG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxyXG4gICAgICAgIHNldFNoaXBwaW5nKG9wdGlvbi51aWQpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJwLTJcIn0+XHJcbiAgICAgICAgICAgIDxBc3luY1BhZ2luYXRlXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9uc1xyXG4gICAgICAgICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShzaG9wVXVpZCl9XHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzPXt7Q29udHJvbDogU2VsZWN0TGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtvcmRlci5zaGlwcGluZ31cclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPScnXHJcbiAgICAgICAgICAgICAgICBuYW1lPSdWZXJzYW5kYXJ0J1xyXG4gICAgICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi51aWR9XHJcbiAgICAgICAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4gb3B0aW9uLnRpdGxlfVxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxyXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c2hpcHBpbmcgPT0gMCA/IFwiYm9yZGVyIGJvcmRlci1yZWQtNTAwXCIgOiBcIlwifWB9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICA8L2Rpdj5cclxuKVxyXG59XHJcblxyXG5TaGlwcGluZ0NvbXBvbmVudC5wcm9wVHlwZXMgPSB7XHJcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcclxuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFNoaXBwaW5nQ29tcG9uZW50XHJcbiIsImltcG9ydCB7IE9yZGVyU3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZS9vcmRlcidcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2VcIlxuaW1wb3J0IHsgT3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3JkZXInXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tIFwicnhqc1wiXG5pbXBvcnQge09yZGVyfSBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxuaW1wb3J0IHsgUmlTYXZlRmlsbCwgUmlQcmludGVyRmlsbCB9IGZyb20gXCJAcHJlYWN0LWljb25zL3JpXCJcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJmbG93Yml0ZS1yZWFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNsYXNzIEJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudDx7bG9hZE9yZGVyfSx7ZGlzYWJsZWQ6IGJvb2xlYW59PiB7XG4gICAgb3JkZXJTdGF0ZTogT3JkZXJTdGF0ZVxuICAgIG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpXG4gICAgICAgIHRoaXMub3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG4gICAgICAgIHRoaXMub3JkZXJTZXJ2aWNlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTZXJ2aWNlKVxuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7ZGlzYWJsZWQ6IHRydWV9XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMub3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS5waXBlKGRlYm91bmNlVGltZSgyMDAwKSkuc3Vic2NyaWJlKChlKSA9PiB0aGlzLnNhdmVCdXR0b24oZSkpXG4gICAgfVxuXG4gICAgc2F2ZUJ1dHRvbihvcmRlcjogT3JkZXIpIHtcbiAgICAgICAgaWYob3JkZXIuY29udGFjdC51c2VybmFtZSAhPSBcIlwiXG4gICAgICAgICAgICAmJiBvcmRlci5wYXltZW50LnRpdGxlICE9IFwiXCJcbiAgICAgICAgICAgICYmIG9yZGVyLnNoaXBwaW5nLnRpdGxlICE9IFwiXCJcbiAgICAgICAgICAgICYmIG9yZGVyLnNob3AubmFtZSAhPSBcIlwiXG4gICAgICAgICAgICAmJiBvcmRlci5hY2NvdW50LnRpdGxlICE9IFwiXCJcbiAgICAgICAgICAgICYmIG9yZGVyLmludm9pY2VBZGRyZXNzLnV1aWQgIT0gXCJcIlxuICAgICAgICAgICAgJiYgb3JkZXIudHlwZSAhPSAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7ZGlzYWJsZWQ6IGZhbHNlfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGhhbmRsZVByaW50KGUpIHtcbiAgICAgICAgY29uc3QgdXVpZCA9IHRoaXMub3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZS51dWlkO1xuICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5vcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlLnR5cGU7XG4gICAgICAgIHdpbmRvdy5vcGVuKCcvYXBwcy9iYWNrZW5kL29yZGVyL2RldGFpbC9wcmludC8nICsgdHlwZSArICcvJyArIHV1aWQpXG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlU2F2ZShlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLm9yZGVyU2VydmljZS5zYXZlT3JkZXIodGhpcy5vcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlKVxuXG4gICAgICAgIHRoaXMucHJvcHMubG9hZE9yZGVyKHJlc3VsdFsndXVpZCddKVxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gc2l6ZT1cInhzXCIgY29sb3I9XCJpbmZvXCIgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9IG9uQ2xpY2s9eyhlOmFueSkgPT4gdGhpcy5oYW5kbGVTYXZlKGUpfT5cbiAgICAgICAgICAgICAgICAgICAgPFJpU2F2ZUZpbGwgY2xhc3NOYW1lPVwibXItMiBoLTUgdy01XCIvPiBTcGVpY2hlcm5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHNpemU9XCJ4c1wiIGNvbG9yPVwic3VjY2Vzc1wiIGRpc2FibGVkPXshdGhpcy5vcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlLnNhdmVkfSBvbkNsaWNrPXsoZTphbnkpID0+IHRoaXMuaGFuZGxlUHJpbnQoZSl9PlxuICAgICAgICAgICAgICAgICAgICA8UmlQcmludGVyRmlsbCBjbGFzc05hbWU9XCJtci0yIGgtNSB3LTVcIi8+IERydWNrZW5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uQ29tcG9uZW50XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbmV4cG9ydHMuc2VyaWFsaXplID0gc2VyaWFsaXplO1xuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggY29va2llLW5hbWUgaW4gUkZDIDYyNjUgc2VjIDQuMS4xXG4gKiBUaGlzIHJlZmVycyBvdXQgdG8gdGhlIG9ic29sZXRlZCBkZWZpbml0aW9uIG9mIHRva2VuIGluIFJGQyAyNjE2IHNlYyAyLjJcbiAqIHdoaWNoIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSB0b2tlbiBkZWZpbml0aW9uIGluIFJGQyA3MjMwIGFwcGVuZGl4IEIuXG4gKlxuICogY29va2llLW5hbWUgICAgICAgPSB0b2tlblxuICogdG9rZW4gICAgICAgICAgICAgPSAxKnRjaGFyXG4gKiB0Y2hhciAgICAgICAgICAgICA9IFwiIVwiIC8gXCIjXCIgLyBcIiRcIiAvIFwiJVwiIC8gXCImXCIgLyBcIidcIiAvXG4gKiAgICAgICAgICAgICAgICAgICAgIFwiKlwiIC8gXCIrXCIgLyBcIi1cIiAvIFwiLlwiIC8gXCJeXCIgLyBcIl9cIiAvXG4gKiAgICAgICAgICAgICAgICAgICAgIFwiYFwiIC8gXCJ8XCIgLyBcIn5cIiAvIERJR0lUIC8gQUxQSEFcbiAqXG4gKiBOb3RlOiBBbGxvd2luZyBtb3JlIGNoYXJhY3RlcnMgLSBodHRwczovL2dpdGh1Yi5jb20vanNodHRwL2Nvb2tpZS9pc3N1ZXMvMTkxXG4gKiBBbGxvdyBzYW1lIHJhbmdlIGFzIGNvb2tpZSB2YWx1ZSwgZXhjZXB0IGA9YCwgd2hpY2ggZGVsaW1pdHMgZW5kIG9mIG5hbWUuXG4gKi9cbmNvbnN0IGNvb2tpZU5hbWVSZWdFeHAgPSAvXltcXHUwMDIxLVxcdTAwM0FcXHUwMDNDXFx1MDAzRS1cXHUwMDdFXSskLztcbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGNvb2tpZS12YWx1ZSBpbiBSRkMgNjI2NSBzZWMgNC4xLjFcbiAqXG4gKiBjb29raWUtdmFsdWUgICAgICA9ICpjb29raWUtb2N0ZXQgLyAoIERRVU9URSAqY29va2llLW9jdGV0IERRVU9URSApXG4gKiBjb29raWUtb2N0ZXQgICAgICA9ICV4MjEgLyAleDIzLTJCIC8gJXgyRC0zQSAvICV4M0MtNUIgLyAleDVELTdFXG4gKiAgICAgICAgICAgICAgICAgICAgIDsgVVMtQVNDSUkgY2hhcmFjdGVycyBleGNsdWRpbmcgQ1RMcyxcbiAqICAgICAgICAgICAgICAgICAgICAgOyB3aGl0ZXNwYWNlIERRVU9URSwgY29tbWEsIHNlbWljb2xvbixcbiAqICAgICAgICAgICAgICAgICAgICAgOyBhbmQgYmFja3NsYXNoXG4gKlxuICogQWxsb3dpbmcgbW9yZSBjaGFyYWN0ZXJzOiBodHRwczovL2dpdGh1Yi5jb20vanNodHRwL2Nvb2tpZS9pc3N1ZXMvMTkxXG4gKiBDb21tYSwgYmFja3NsYXNoLCBhbmQgRFFVT1RFIGFyZSBub3QgcGFydCBvZiB0aGUgcGFyc2luZyBhbGdvcml0aG0uXG4gKi9cbmNvbnN0IGNvb2tpZVZhbHVlUmVnRXhwID0gL15bXFx1MDAyMS1cXHUwMDNBXFx1MDAzQy1cXHUwMDdFXSokLztcbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGRvbWFpbi12YWx1ZSBpbiBSRkMgNjI2NSBzZWMgNC4xLjFcbiAqXG4gKiBkb21haW4tdmFsdWUgICAgICA9IDxzdWJkb21haW4+XG4gKiAgICAgICAgICAgICAgICAgICAgIDsgZGVmaW5lZCBpbiBbUkZDMTAzNF0sIFNlY3Rpb24gMy41LCBhc1xuICogICAgICAgICAgICAgICAgICAgICA7IGVuaGFuY2VkIGJ5IFtSRkMxMTIzXSwgU2VjdGlvbiAyLjFcbiAqIDxzdWJkb21haW4+ICAgICAgID0gPGxhYmVsPiB8IDxzdWJkb21haW4+IFwiLlwiIDxsYWJlbD5cbiAqIDxsYWJlbD4gICAgICAgICAgID0gPGxldC1kaWc+IFsgWyA8bGRoLXN0cj4gXSA8bGV0LWRpZz4gXVxuICogICAgICAgICAgICAgICAgICAgICBMYWJlbHMgbXVzdCBiZSA2MyBjaGFyYWN0ZXJzIG9yIGxlc3MuXG4gKiAgICAgICAgICAgICAgICAgICAgICdsZXQtZGlnJyBub3QgJ2xldHRlcicgaW4gdGhlIGZpcnN0IGNoYXIsIHBlciBSRkMxMTIzXG4gKiA8bGRoLXN0cj4gICAgICAgICA9IDxsZXQtZGlnLWh5cD4gfCA8bGV0LWRpZy1oeXA+IDxsZGgtc3RyPlxuICogPGxldC1kaWctaHlwPiAgICAgPSA8bGV0LWRpZz4gfCBcIi1cIlxuICogPGxldC1kaWc+ICAgICAgICAgPSA8bGV0dGVyPiB8IDxkaWdpdD5cbiAqIDxsZXR0ZXI+ICAgICAgICAgID0gYW55IG9uZSBvZiB0aGUgNTIgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzIEEgdGhyb3VnaCBaIGluXG4gKiAgICAgICAgICAgICAgICAgICAgIHVwcGVyIGNhc2UgYW5kIGEgdGhyb3VnaCB6IGluIGxvd2VyIGNhc2VcbiAqIDxkaWdpdD4gICAgICAgICAgID0gYW55IG9uZSBvZiB0aGUgdGVuIGRpZ2l0cyAwIHRocm91Z2ggOVxuICpcbiAqIEtlZXAgc3VwcG9ydCBmb3IgbGVhZGluZyBkb3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9qc2h0dHAvY29va2llL2lzc3Vlcy8xNzNcbiAqXG4gKiA+IChOb3RlIHRoYXQgYSBsZWFkaW5nICV4MkUgKFwiLlwiKSwgaWYgcHJlc2VudCwgaXMgaWdub3JlZCBldmVuIHRob3VnaCB0aGF0XG4gKiBjaGFyYWN0ZXIgaXMgbm90IHBlcm1pdHRlZCwgYnV0IGEgdHJhaWxpbmcgJXgyRSAoXCIuXCIpLCBpZiBwcmVzZW50LCB3aWxsXG4gKiBjYXVzZSB0aGUgdXNlciBhZ2VudCB0byBpZ25vcmUgdGhlIGF0dHJpYnV0ZS4pXG4gKi9cbmNvbnN0IGRvbWFpblZhbHVlUmVnRXhwID0gL14oWy5dP1thLXowLTldKFthLXowLTktXXswLDYxfVthLXowLTldKT8pKFsuXVthLXowLTldKFthLXowLTktXXswLDYxfVthLXowLTldKT8pKiQvaTtcbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHBhdGgtdmFsdWUgaW4gUkZDIDYyNjUgc2VjIDQuMS4xXG4gKlxuICogcGF0aC12YWx1ZSAgICAgICAgPSA8YW55IENIQVIgZXhjZXB0IENUTHMgb3IgXCI7XCI+XG4gKiBDSEFSICAgICAgICAgICAgICA9ICV4MDEtN0ZcbiAqICAgICAgICAgICAgICAgICAgICAgOyBkZWZpbmVkIGluIFJGQyA1MjM0IGFwcGVuZGl4IEIuMVxuICovXG5jb25zdCBwYXRoVmFsdWVSZWdFeHAgPSAvXltcXHUwMDIwLVxcdTAwM0FcXHUwMDNELVxcdTAwN0VdKiQvO1xuY29uc3QgX190b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5jb25zdCBOdWxsT2JqZWN0ID0gLyogQF9fUFVSRV9fICovICgoKSA9PiB7XG4gICAgY29uc3QgQyA9IGZ1bmN0aW9uICgpIHsgfTtcbiAgICBDLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgcmV0dXJuIEM7XG59KSgpO1xuLyoqXG4gKiBQYXJzZSBhIGNvb2tpZSBoZWFkZXIuXG4gKlxuICogUGFyc2UgdGhlIGdpdmVuIGNvb2tpZSBoZWFkZXIgc3RyaW5nIGludG8gYW4gb2JqZWN0XG4gKiBUaGUgb2JqZWN0IGhhcyB0aGUgdmFyaW91cyBjb29raWVzIGFzIGtleXMobmFtZXMpID0+IHZhbHVlc1xuICovXG5mdW5jdGlvbiBwYXJzZShzdHIsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBvYmogPSBuZXcgTnVsbE9iamVjdCgpO1xuICAgIGNvbnN0IGxlbiA9IHN0ci5sZW5ndGg7XG4gICAgLy8gUkZDIDYyNjUgc2VjIDQuMS4xLCBSRkMgMjYxNiAyLjIgZGVmaW5lcyBhIGNvb2tpZSBuYW1lIGNvbnNpc3RzIG9mIG9uZSBjaGFyIG1pbmltdW0sIHBsdXMgJz0nLlxuICAgIGlmIChsZW4gPCAyKVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgIGNvbnN0IGRlYyA9IG9wdGlvbnM/LmRlY29kZSB8fCBkZWNvZGU7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBkbyB7XG4gICAgICAgIGNvbnN0IGVxSWR4ID0gc3RyLmluZGV4T2YoXCI9XCIsIGluZGV4KTtcbiAgICAgICAgaWYgKGVxSWR4ID09PSAtMSlcbiAgICAgICAgICAgIGJyZWFrOyAvLyBObyBtb3JlIGNvb2tpZSBwYWlycy5cbiAgICAgICAgY29uc3QgY29sb25JZHggPSBzdHIuaW5kZXhPZihcIjtcIiwgaW5kZXgpO1xuICAgICAgICBjb25zdCBlbmRJZHggPSBjb2xvbklkeCA9PT0gLTEgPyBsZW4gOiBjb2xvbklkeDtcbiAgICAgICAgaWYgKGVxSWR4ID4gZW5kSWR4KSB7XG4gICAgICAgICAgICAvLyBiYWNrdHJhY2sgb24gcHJpb3Igc2VtaWNvbG9uXG4gICAgICAgICAgICBpbmRleCA9IHN0ci5sYXN0SW5kZXhPZihcIjtcIiwgZXFJZHggLSAxKSArIDE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlTdGFydElkeCA9IHN0YXJ0SW5kZXgoc3RyLCBpbmRleCwgZXFJZHgpO1xuICAgICAgICBjb25zdCBrZXlFbmRJZHggPSBlbmRJbmRleChzdHIsIGVxSWR4LCBrZXlTdGFydElkeCk7XG4gICAgICAgIGNvbnN0IGtleSA9IHN0ci5zbGljZShrZXlTdGFydElkeCwga2V5RW5kSWR4KTtcbiAgICAgICAgLy8gb25seSBhc3NpZ24gb25jZVxuICAgICAgICBpZiAob2JqW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbGV0IHZhbFN0YXJ0SWR4ID0gc3RhcnRJbmRleChzdHIsIGVxSWR4ICsgMSwgZW5kSWR4KTtcbiAgICAgICAgICAgIGxldCB2YWxFbmRJZHggPSBlbmRJbmRleChzdHIsIGVuZElkeCwgdmFsU3RhcnRJZHgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkZWMoc3RyLnNsaWNlKHZhbFN0YXJ0SWR4LCB2YWxFbmRJZHgpKTtcbiAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSBlbmRJZHggKyAxO1xuICAgIH0gd2hpbGUgKGluZGV4IDwgbGVuKTtcbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gc3RhcnRJbmRleChzdHIsIGluZGV4LCBtYXgpIHtcbiAgICBkbyB7XG4gICAgICAgIGNvbnN0IGNvZGUgPSBzdHIuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgIGlmIChjb2RlICE9PSAweDIwIC8qICAgKi8gJiYgY29kZSAhPT0gMHgwOSAvKiBcXHQgKi8pXG4gICAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfSB3aGlsZSAoKytpbmRleCA8IG1heCk7XG4gICAgcmV0dXJuIG1heDtcbn1cbmZ1bmN0aW9uIGVuZEluZGV4KHN0ciwgaW5kZXgsIG1pbikge1xuICAgIHdoaWxlIChpbmRleCA+IG1pbikge1xuICAgICAgICBjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoLS1pbmRleCk7XG4gICAgICAgIGlmIChjb2RlICE9PSAweDIwIC8qICAgKi8gJiYgY29kZSAhPT0gMHgwOSAvKiBcXHQgKi8pXG4gICAgICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICByZXR1cm4gbWluO1xufVxuLyoqXG4gKiBTZXJpYWxpemUgZGF0YSBpbnRvIGEgY29va2llIGhlYWRlci5cbiAqXG4gKiBTZXJpYWxpemUgYSBuYW1lIHZhbHVlIHBhaXIgaW50byBhIGNvb2tpZSBzdHJpbmcgc3VpdGFibGUgZm9yXG4gKiBodHRwIGhlYWRlcnMuIEFuIG9wdGlvbmFsIG9wdGlvbnMgb2JqZWN0IHNwZWNpZmllcyBjb29raWUgcGFyYW1ldGVycy5cbiAqXG4gKiBzZXJpYWxpemUoJ2ZvbycsICdiYXInLCB7IGh0dHBPbmx5OiB0cnVlIH0pXG4gKiAgID0+IFwiZm9vPWJhcjsgaHR0cE9ubHlcIlxuICovXG5mdW5jdGlvbiBzZXJpYWxpemUobmFtZSwgdmFsLCBvcHRpb25zKSB7XG4gICAgY29uc3QgZW5jID0gb3B0aW9ucz8uZW5jb2RlIHx8IGVuY29kZVVSSUNvbXBvbmVudDtcbiAgICBpZiAoIWNvb2tpZU5hbWVSZWdFeHAudGVzdChuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBhcmd1bWVudCBuYW1lIGlzIGludmFsaWQ6ICR7bmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBlbmModmFsKTtcbiAgICBpZiAoIWNvb2tpZVZhbHVlUmVnRXhwLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGFyZ3VtZW50IHZhbCBpcyBpbnZhbGlkOiAke3ZhbH1gKTtcbiAgICB9XG4gICAgbGV0IHN0ciA9IG5hbWUgKyBcIj1cIiArIHZhbHVlO1xuICAgIGlmICghb3B0aW9ucylcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICBpZiAob3B0aW9ucy5tYXhBZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIob3B0aW9ucy5tYXhBZ2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gbWF4QWdlIGlzIGludmFsaWQ6ICR7b3B0aW9ucy5tYXhBZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyICs9IFwiOyBNYXgtQWdlPVwiICsgb3B0aW9ucy5tYXhBZ2U7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmRvbWFpbikge1xuICAgICAgICBpZiAoIWRvbWFpblZhbHVlUmVnRXhwLnRlc3Qob3B0aW9ucy5kb21haW4pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gZG9tYWluIGlzIGludmFsaWQ6ICR7b3B0aW9ucy5kb21haW59YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyICs9IFwiOyBEb21haW49XCIgKyBvcHRpb25zLmRvbWFpbjtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMucGF0aCkge1xuICAgICAgICBpZiAoIXBhdGhWYWx1ZVJlZ0V4cC50ZXN0KG9wdGlvbnMucGF0aCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG9wdGlvbiBwYXRoIGlzIGludmFsaWQ6ICR7b3B0aW9ucy5wYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIHN0ciArPSBcIjsgUGF0aD1cIiArIG9wdGlvbnMucGF0aDtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZXhwaXJlcykge1xuICAgICAgICBpZiAoIWlzRGF0ZShvcHRpb25zLmV4cGlyZXMpIHx8XG4gICAgICAgICAgICAhTnVtYmVyLmlzRmluaXRlKG9wdGlvbnMuZXhwaXJlcy52YWx1ZU9mKCkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gZXhwaXJlcyBpcyBpbnZhbGlkOiAke29wdGlvbnMuZXhwaXJlc31gKTtcbiAgICAgICAgfVxuICAgICAgICBzdHIgKz0gXCI7IEV4cGlyZXM9XCIgKyBvcHRpb25zLmV4cGlyZXMudG9VVENTdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuaHR0cE9ubHkpIHtcbiAgICAgICAgc3RyICs9IFwiOyBIdHRwT25seVwiO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zZWN1cmUpIHtcbiAgICAgICAgc3RyICs9IFwiOyBTZWN1cmVcIjtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMucGFydGl0aW9uZWQpIHtcbiAgICAgICAgc3RyICs9IFwiOyBQYXJ0aXRpb25lZFwiO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5wcmlvcml0eSkge1xuICAgICAgICBjb25zdCBwcmlvcml0eSA9IHR5cGVvZiBvcHRpb25zLnByaW9yaXR5ID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICA/IG9wdGlvbnMucHJpb3JpdHkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIHN3aXRjaCAocHJpb3JpdHkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJsb3dcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCI7IFByaW9yaXR5PUxvd1wiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm1lZGl1bVwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgUHJpb3JpdHk9TWVkaXVtXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiaGlnaFwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgUHJpb3JpdHk9SGlnaFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gcHJpb3JpdHkgaXMgaW52YWxpZDogJHtvcHRpb25zLnByaW9yaXR5fWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNhbWVTaXRlKSB7XG4gICAgICAgIGNvbnN0IHNhbWVTaXRlID0gdHlwZW9mIG9wdGlvbnMuc2FtZVNpdGUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gb3B0aW9ucy5zYW1lU2l0ZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICA6IG9wdGlvbnMuc2FtZVNpdGU7XG4gICAgICAgIHN3aXRjaCAoc2FtZVNpdGUpIHtcbiAgICAgICAgICAgIGNhc2UgdHJ1ZTpcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpY3RcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCI7IFNhbWVTaXRlPVN0cmljdFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImxheFwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgU2FtZVNpdGU9TGF4XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibm9uZVwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgU2FtZVNpdGU9Tm9uZVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gc2FtZVNpdGUgaXMgaW52YWxpZDogJHtvcHRpb25zLnNhbWVTaXRlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG4vKipcbiAqIFVSTC1kZWNvZGUgc3RyaW5nIHZhbHVlLiBPcHRpbWl6ZWQgdG8gc2tpcCBuYXRpdmUgY2FsbCB3aGVuIG5vICUuXG4gKi9cbmZ1bmN0aW9uIGRlY29kZShzdHIpIHtcbiAgICBpZiAoc3RyLmluZGV4T2YoXCIlXCIpID09PSAtMSlcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHN0cik7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdmFsdWUgaXMgYSBEYXRlLlxuICovXG5mdW5jdGlvbiBpc0RhdGUodmFsKSB7XG4gICAgcmV0dXJuIF9fdG9TdHJpbmcuY2FsbCh2YWwpID09PSBcIltvYmplY3QgRGF0ZV1cIjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8qKlxuICogcmVhY3Qtcm91dGVyIHY3LjAuMlxuICpcbiAqIENvcHlyaWdodCAoYykgUmVtaXggU29mdHdhcmUgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRS5tZCBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqIEBsaWNlbnNlIE1JVFxuICovXG5cbi8vIGxpYi9yb3V0ZXIvaGlzdG9yeS50c1xudmFyIEFjdGlvbiA9IC8qIEBfX1BVUkVfXyAqLyAoKEFjdGlvbjIpID0+IHtcbiAgQWN0aW9uMltcIlBvcFwiXSA9IFwiUE9QXCI7XG4gIEFjdGlvbjJbXCJQdXNoXCJdID0gXCJQVVNIXCI7XG4gIEFjdGlvbjJbXCJSZXBsYWNlXCJdID0gXCJSRVBMQUNFXCI7XG4gIHJldHVybiBBY3Rpb24yO1xufSkoQWN0aW9uIHx8IHt9KTtcbnZhciBQb3BTdGF0ZUV2ZW50VHlwZSA9IFwicG9wc3RhdGVcIjtcbmZ1bmN0aW9uIGNyZWF0ZU1lbW9yeUhpc3Rvcnkob3B0aW9ucyA9IHt9KSB7XG4gIGxldCB7IGluaXRpYWxFbnRyaWVzID0gW1wiL1wiXSwgaW5pdGlhbEluZGV4LCB2NUNvbXBhdCA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICBsZXQgZW50cmllcztcbiAgZW50cmllcyA9IGluaXRpYWxFbnRyaWVzLm1hcChcbiAgICAoZW50cnksIGluZGV4MikgPT4gY3JlYXRlTWVtb3J5TG9jYXRpb24oXG4gICAgICBlbnRyeSxcbiAgICAgIHR5cGVvZiBlbnRyeSA9PT0gXCJzdHJpbmdcIiA/IG51bGwgOiBlbnRyeS5zdGF0ZSxcbiAgICAgIGluZGV4MiA9PT0gMCA/IFwiZGVmYXVsdFwiIDogdm9pZCAwXG4gICAgKVxuICApO1xuICBsZXQgaW5kZXggPSBjbGFtcEluZGV4KFxuICAgIGluaXRpYWxJbmRleCA9PSBudWxsID8gZW50cmllcy5sZW5ndGggLSAxIDogaW5pdGlhbEluZGV4XG4gICk7XG4gIGxldCBhY3Rpb24gPSBcIlBPUFwiIC8qIFBvcCAqLztcbiAgbGV0IGxpc3RlbmVyID0gbnVsbDtcbiAgZnVuY3Rpb24gY2xhbXBJbmRleChuKSB7XG4gICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KG4sIDApLCBlbnRyaWVzLmxlbmd0aCAtIDEpO1xuICB9XG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRMb2NhdGlvbigpIHtcbiAgICByZXR1cm4gZW50cmllc1tpbmRleF07XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlTWVtb3J5TG9jYXRpb24odG8sIHN0YXRlID0gbnVsbCwga2V5KSB7XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oXG4gICAgICBlbnRyaWVzID8gZ2V0Q3VycmVudExvY2F0aW9uKCkucGF0aG5hbWUgOiBcIi9cIixcbiAgICAgIHRvLFxuICAgICAgc3RhdGUsXG4gICAgICBrZXlcbiAgICApO1xuICAgIHdhcm5pbmcoXG4gICAgICBsb2NhdGlvbi5wYXRobmFtZS5jaGFyQXQoMCkgPT09IFwiL1wiLFxuICAgICAgYHJlbGF0aXZlIHBhdGhuYW1lcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBtZW1vcnkgaGlzdG9yeTogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgdG9cbiAgICAgICl9YFxuICAgICk7XG4gICAgcmV0dXJuIGxvY2F0aW9uO1xuICB9XG4gIGZ1bmN0aW9uIGNyZWF0ZUhyZWYyKHRvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHRvIDogY3JlYXRlUGF0aCh0byk7XG4gIH1cbiAgbGV0IGhpc3RvcnkgPSB7XG4gICAgZ2V0IGluZGV4KCkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH0sXG4gICAgZ2V0IGFjdGlvbigpIHtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfSxcbiAgICBnZXQgbG9jYXRpb24oKSB7XG4gICAgICByZXR1cm4gZ2V0Q3VycmVudExvY2F0aW9uKCk7XG4gICAgfSxcbiAgICBjcmVhdGVIcmVmOiBjcmVhdGVIcmVmMixcbiAgICBjcmVhdGVVUkwodG8pIHtcbiAgICAgIHJldHVybiBuZXcgVVJMKGNyZWF0ZUhyZWYyKHRvKSwgXCJodHRwOi8vbG9jYWxob3N0XCIpO1xuICAgIH0sXG4gICAgZW5jb2RlTG9jYXRpb24odG8pIHtcbiAgICAgIGxldCBwYXRoID0gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gcGFyc2VQYXRoKHRvKSA6IHRvO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aG5hbWU6IHBhdGgucGF0aG5hbWUgfHwgXCJcIixcbiAgICAgICAgc2VhcmNoOiBwYXRoLnNlYXJjaCB8fCBcIlwiLFxuICAgICAgICBoYXNoOiBwYXRoLmhhc2ggfHwgXCJcIlxuICAgICAgfTtcbiAgICB9LFxuICAgIHB1c2godG8sIHN0YXRlKSB7XG4gICAgICBhY3Rpb24gPSBcIlBVU0hcIiAvKiBQdXNoICovO1xuICAgICAgbGV0IG5leHRMb2NhdGlvbiA9IGNyZWF0ZU1lbW9yeUxvY2F0aW9uKHRvLCBzdGF0ZSk7XG4gICAgICBpbmRleCArPSAxO1xuICAgICAgZW50cmllcy5zcGxpY2UoaW5kZXgsIGVudHJpZXMubGVuZ3RoLCBuZXh0TG9jYXRpb24pO1xuICAgICAgaWYgKHY1Q29tcGF0ICYmIGxpc3RlbmVyKSB7XG4gICAgICAgIGxpc3RlbmVyKHsgYWN0aW9uLCBsb2NhdGlvbjogbmV4dExvY2F0aW9uLCBkZWx0YTogMSB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2UodG8sIHN0YXRlKSB7XG4gICAgICBhY3Rpb24gPSBcIlJFUExBQ0VcIiAvKiBSZXBsYWNlICovO1xuICAgICAgbGV0IG5leHRMb2NhdGlvbiA9IGNyZWF0ZU1lbW9yeUxvY2F0aW9uKHRvLCBzdGF0ZSk7XG4gICAgICBlbnRyaWVzW2luZGV4XSA9IG5leHRMb2NhdGlvbjtcbiAgICAgIGlmICh2NUNvbXBhdCAmJiBsaXN0ZW5lcikge1xuICAgICAgICBsaXN0ZW5lcih7IGFjdGlvbiwgbG9jYXRpb246IG5leHRMb2NhdGlvbiwgZGVsdGE6IDAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBnbyhkZWx0YSkge1xuICAgICAgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gICAgICBsZXQgbmV4dEluZGV4ID0gY2xhbXBJbmRleChpbmRleCArIGRlbHRhKTtcbiAgICAgIGxldCBuZXh0TG9jYXRpb24gPSBlbnRyaWVzW25leHRJbmRleF07XG4gICAgICBpbmRleCA9IG5leHRJbmRleDtcbiAgICAgIGlmIChsaXN0ZW5lcikge1xuICAgICAgICBsaXN0ZW5lcih7IGFjdGlvbiwgbG9jYXRpb246IG5leHRMb2NhdGlvbiwgZGVsdGEgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBsaXN0ZW4oZm4pIHtcbiAgICAgIGxpc3RlbmVyID0gZm47XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBsaXN0ZW5lciA9IG51bGw7XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGhpc3Rvcnk7XG59XG5mdW5jdGlvbiBjcmVhdGVCcm93c2VySGlzdG9yeShvcHRpb25zID0ge30pIHtcbiAgZnVuY3Rpb24gY3JlYXRlQnJvd3NlckxvY2F0aW9uKHdpbmRvdzIsIGdsb2JhbEhpc3RvcnkpIHtcbiAgICBsZXQgeyBwYXRobmFtZSwgc2VhcmNoLCBoYXNoIH0gPSB3aW5kb3cyLmxvY2F0aW9uO1xuICAgIHJldHVybiBjcmVhdGVMb2NhdGlvbihcbiAgICAgIFwiXCIsXG4gICAgICB7IHBhdGhuYW1lLCBzZWFyY2gsIGhhc2ggfSxcbiAgICAgIC8vIHN0YXRlIGRlZmF1bHRzIHRvIGBudWxsYCBiZWNhdXNlIGB3aW5kb3cuaGlzdG9yeS5zdGF0ZWAgZG9lc1xuICAgICAgZ2xvYmFsSGlzdG9yeS5zdGF0ZSAmJiBnbG9iYWxIaXN0b3J5LnN0YXRlLnVzciB8fCBudWxsLFxuICAgICAgZ2xvYmFsSGlzdG9yeS5zdGF0ZSAmJiBnbG9iYWxIaXN0b3J5LnN0YXRlLmtleSB8fCBcImRlZmF1bHRcIlxuICAgICk7XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlQnJvd3NlckhyZWYod2luZG93MiwgdG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gdG8gOiBjcmVhdGVQYXRoKHRvKTtcbiAgfVxuICByZXR1cm4gZ2V0VXJsQmFzZWRIaXN0b3J5KFxuICAgIGNyZWF0ZUJyb3dzZXJMb2NhdGlvbixcbiAgICBjcmVhdGVCcm93c2VySHJlZixcbiAgICBudWxsLFxuICAgIG9wdGlvbnNcbiAgKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUhhc2hIaXN0b3J5KG9wdGlvbnMgPSB7fSkge1xuICBmdW5jdGlvbiBjcmVhdGVIYXNoTG9jYXRpb24od2luZG93MiwgZ2xvYmFsSGlzdG9yeSkge1xuICAgIGxldCB7XG4gICAgICBwYXRobmFtZSA9IFwiL1wiLFxuICAgICAgc2VhcmNoID0gXCJcIixcbiAgICAgIGhhc2ggPSBcIlwiXG4gICAgfSA9IHBhcnNlUGF0aCh3aW5kb3cyLmxvY2F0aW9uLmhhc2guc3Vic3RyaW5nKDEpKTtcbiAgICBpZiAoIXBhdGhuYW1lLnN0YXJ0c1dpdGgoXCIvXCIpICYmICFwYXRobmFtZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgcGF0aG5hbWUgPSBcIi9cIiArIHBhdGhuYW1lO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlTG9jYXRpb24oXG4gICAgICBcIlwiLFxuICAgICAgeyBwYXRobmFtZSwgc2VhcmNoLCBoYXNoIH0sXG4gICAgICAvLyBzdGF0ZSBkZWZhdWx0cyB0byBgbnVsbGAgYmVjYXVzZSBgd2luZG93Lmhpc3Rvcnkuc3RhdGVgIGRvZXNcbiAgICAgIGdsb2JhbEhpc3Rvcnkuc3RhdGUgJiYgZ2xvYmFsSGlzdG9yeS5zdGF0ZS51c3IgfHwgbnVsbCxcbiAgICAgIGdsb2JhbEhpc3Rvcnkuc3RhdGUgJiYgZ2xvYmFsSGlzdG9yeS5zdGF0ZS5rZXkgfHwgXCJkZWZhdWx0XCJcbiAgICApO1xuICB9XG4gIGZ1bmN0aW9uIGNyZWF0ZUhhc2hIcmVmKHdpbmRvdzIsIHRvKSB7XG4gICAgbGV0IGJhc2UgPSB3aW5kb3cyLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJiYXNlXCIpO1xuICAgIGxldCBocmVmID0gXCJcIjtcbiAgICBpZiAoYmFzZSAmJiBiYXNlLmdldEF0dHJpYnV0ZShcImhyZWZcIikpIHtcbiAgICAgIGxldCB1cmwgPSB3aW5kb3cyLmxvY2F0aW9uLmhyZWY7XG4gICAgICBsZXQgaGFzaEluZGV4ID0gdXJsLmluZGV4T2YoXCIjXCIpO1xuICAgICAgaHJlZiA9IGhhc2hJbmRleCA9PT0gLTEgPyB1cmwgOiB1cmwuc2xpY2UoMCwgaGFzaEluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIGhyZWYgKyBcIiNcIiArICh0eXBlb2YgdG8gPT09IFwic3RyaW5nXCIgPyB0byA6IGNyZWF0ZVBhdGgodG8pKTtcbiAgfVxuICBmdW5jdGlvbiB2YWxpZGF0ZUhhc2hMb2NhdGlvbihsb2NhdGlvbiwgdG8pIHtcbiAgICB3YXJuaW5nKFxuICAgICAgbG9jYXRpb24ucGF0aG5hbWUuY2hhckF0KDApID09PSBcIi9cIixcbiAgICAgIGByZWxhdGl2ZSBwYXRobmFtZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gaGFzaCBoaXN0b3J5LnB1c2goJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgdG9cbiAgICAgICl9KWBcbiAgICApO1xuICB9XG4gIHJldHVybiBnZXRVcmxCYXNlZEhpc3RvcnkoXG4gICAgY3JlYXRlSGFzaExvY2F0aW9uLFxuICAgIGNyZWF0ZUhhc2hIcmVmLFxuICAgIHZhbGlkYXRlSGFzaExvY2F0aW9uLFxuICAgIG9wdGlvbnNcbiAgKTtcbn1cbmZ1bmN0aW9uIGludmFyaWFudCh2YWx1ZSwgbWVzc2FnZSkge1xuICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuZnVuY3Rpb24gd2FybmluZyhjb25kLCBtZXNzYWdlKSB7XG4gIGlmICghY29uZCkge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIikgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIHRyeSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlS2V5KCkge1xuICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDEwKTtcbn1cbmZ1bmN0aW9uIGdldEhpc3RvcnlTdGF0ZShsb2NhdGlvbiwgaW5kZXgpIHtcbiAgcmV0dXJuIHtcbiAgICB1c3I6IGxvY2F0aW9uLnN0YXRlLFxuICAgIGtleTogbG9jYXRpb24ua2V5LFxuICAgIGlkeDogaW5kZXhcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUxvY2F0aW9uKGN1cnJlbnQsIHRvLCBzdGF0ZSA9IG51bGwsIGtleSkge1xuICBsZXQgbG9jYXRpb24gPSB7XG4gICAgcGF0aG5hbWU6IHR5cGVvZiBjdXJyZW50ID09PSBcInN0cmluZ1wiID8gY3VycmVudCA6IGN1cnJlbnQucGF0aG5hbWUsXG4gICAgc2VhcmNoOiBcIlwiLFxuICAgIGhhc2g6IFwiXCIsXG4gICAgLi4udHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gcGFyc2VQYXRoKHRvKSA6IHRvLFxuICAgIHN0YXRlLFxuICAgIC8vIFRPRE86IFRoaXMgY291bGQgYmUgY2xlYW5lZCB1cC4gIHB1c2gvcmVwbGFjZSBzaG91bGQgcHJvYmFibHkganVzdCB0YWtlXG4gICAgLy8gZnVsbCBMb2NhdGlvbnMgbm93IGFuZCBhdm9pZCB0aGUgbmVlZCB0byBydW4gdGhyb3VnaCB0aGlzIGZsb3cgYXQgYWxsXG4gICAgLy8gQnV0IHRoYXQncyBhIHByZXR0eSBiaWcgcmVmYWN0b3IgdG8gdGhlIGN1cnJlbnQgdGVzdCBzdWl0ZSBzbyBnb2luZyB0b1xuICAgIC8vIGtlZXAgYXMgaXMgZm9yIHRoZSB0aW1lIGJlaW5nIGFuZCBqdXN0IGxldCBhbnkgaW5jb21pbmcga2V5cyB0YWtlIHByZWNlZGVuY2VcbiAgICBrZXk6IHRvICYmIHRvLmtleSB8fCBrZXkgfHwgY3JlYXRlS2V5KClcbiAgfTtcbiAgcmV0dXJuIGxvY2F0aW9uO1xufVxuZnVuY3Rpb24gY3JlYXRlUGF0aCh7XG4gIHBhdGhuYW1lID0gXCIvXCIsXG4gIHNlYXJjaCA9IFwiXCIsXG4gIGhhc2ggPSBcIlwiXG59KSB7XG4gIGlmIChzZWFyY2ggJiYgc2VhcmNoICE9PSBcIj9cIilcbiAgICBwYXRobmFtZSArPSBzZWFyY2guY2hhckF0KDApID09PSBcIj9cIiA/IHNlYXJjaCA6IFwiP1wiICsgc2VhcmNoO1xuICBpZiAoaGFzaCAmJiBoYXNoICE9PSBcIiNcIilcbiAgICBwYXRobmFtZSArPSBoYXNoLmNoYXJBdCgwKSA9PT0gXCIjXCIgPyBoYXNoIDogXCIjXCIgKyBoYXNoO1xuICByZXR1cm4gcGF0aG5hbWU7XG59XG5mdW5jdGlvbiBwYXJzZVBhdGgocGF0aCkge1xuICBsZXQgcGFyc2VkUGF0aCA9IHt9O1xuICBpZiAocGF0aCkge1xuICAgIGxldCBoYXNoSW5kZXggPSBwYXRoLmluZGV4T2YoXCIjXCIpO1xuICAgIGlmIChoYXNoSW5kZXggPj0gMCkge1xuICAgICAgcGFyc2VkUGF0aC5oYXNoID0gcGF0aC5zdWJzdHJpbmcoaGFzaEluZGV4KTtcbiAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBoYXNoSW5kZXgpO1xuICAgIH1cbiAgICBsZXQgc2VhcmNoSW5kZXggPSBwYXRoLmluZGV4T2YoXCI/XCIpO1xuICAgIGlmIChzZWFyY2hJbmRleCA+PSAwKSB7XG4gICAgICBwYXJzZWRQYXRoLnNlYXJjaCA9IHBhdGguc3Vic3RyaW5nKHNlYXJjaEluZGV4KTtcbiAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBzZWFyY2hJbmRleCk7XG4gICAgfVxuICAgIGlmIChwYXRoKSB7XG4gICAgICBwYXJzZWRQYXRoLnBhdGhuYW1lID0gcGF0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnNlZFBhdGg7XG59XG5mdW5jdGlvbiBnZXRVcmxCYXNlZEhpc3RvcnkoZ2V0TG9jYXRpb24sIGNyZWF0ZUhyZWYyLCB2YWxpZGF0ZUxvY2F0aW9uLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IHsgd2luZG93OiB3aW5kb3cyID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcsIHY1Q29tcGF0ID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGxldCBnbG9iYWxIaXN0b3J5ID0gd2luZG93Mi5oaXN0b3J5O1xuICBsZXQgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gIGxldCBsaXN0ZW5lciA9IG51bGw7XG4gIGxldCBpbmRleCA9IGdldEluZGV4KCk7XG4gIGlmIChpbmRleCA9PSBudWxsKSB7XG4gICAgaW5kZXggPSAwO1xuICAgIGdsb2JhbEhpc3RvcnkucmVwbGFjZVN0YXRlKHsgLi4uZ2xvYmFsSGlzdG9yeS5zdGF0ZSwgaWR4OiBpbmRleCB9LCBcIlwiKTtcbiAgfVxuICBmdW5jdGlvbiBnZXRJbmRleCgpIHtcbiAgICBsZXQgc3RhdGUgPSBnbG9iYWxIaXN0b3J5LnN0YXRlIHx8IHsgaWR4OiBudWxsIH07XG4gICAgcmV0dXJuIHN0YXRlLmlkeDtcbiAgfVxuICBmdW5jdGlvbiBoYW5kbGVQb3AoKSB7XG4gICAgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gICAgbGV0IG5leHRJbmRleCA9IGdldEluZGV4KCk7XG4gICAgbGV0IGRlbHRhID0gbmV4dEluZGV4ID09IG51bGwgPyBudWxsIDogbmV4dEluZGV4IC0gaW5kZXg7XG4gICAgaW5kZXggPSBuZXh0SW5kZXg7XG4gICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICBsaXN0ZW5lcih7IGFjdGlvbiwgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb24sIGRlbHRhIH0pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBwdXNoKHRvLCBzdGF0ZSkge1xuICAgIGFjdGlvbiA9IFwiUFVTSFwiIC8qIFB1c2ggKi87XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oaGlzdG9yeS5sb2NhdGlvbiwgdG8sIHN0YXRlKTtcbiAgICBpZiAodmFsaWRhdGVMb2NhdGlvbikgdmFsaWRhdGVMb2NhdGlvbihsb2NhdGlvbiwgdG8pO1xuICAgIGluZGV4ID0gZ2V0SW5kZXgoKSArIDE7XG4gICAgbGV0IGhpc3RvcnlTdGF0ZSA9IGdldEhpc3RvcnlTdGF0ZShsb2NhdGlvbiwgaW5kZXgpO1xuICAgIGxldCB1cmwgPSBoaXN0b3J5LmNyZWF0ZUhyZWYobG9jYXRpb24pO1xuICAgIHRyeSB7XG4gICAgICBnbG9iYWxIaXN0b3J5LnB1c2hTdGF0ZShoaXN0b3J5U3RhdGUsIFwiXCIsIHVybCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiAmJiBlcnJvci5uYW1lID09PSBcIkRhdGFDbG9uZUVycm9yXCIpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICB3aW5kb3cyLmxvY2F0aW9uLmFzc2lnbih1cmwpO1xuICAgIH1cbiAgICBpZiAodjVDb21wYXQgJiYgbGlzdGVuZXIpIHtcbiAgICAgIGxpc3RlbmVyKHsgYWN0aW9uLCBsb2NhdGlvbjogaGlzdG9yeS5sb2NhdGlvbiwgZGVsdGE6IDEgfSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlcGxhY2UyKHRvLCBzdGF0ZSkge1xuICAgIGFjdGlvbiA9IFwiUkVQTEFDRVwiIC8qIFJlcGxhY2UgKi87XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oaGlzdG9yeS5sb2NhdGlvbiwgdG8sIHN0YXRlKTtcbiAgICBpZiAodmFsaWRhdGVMb2NhdGlvbikgdmFsaWRhdGVMb2NhdGlvbihsb2NhdGlvbiwgdG8pO1xuICAgIGluZGV4ID0gZ2V0SW5kZXgoKTtcbiAgICBsZXQgaGlzdG9yeVN0YXRlID0gZ2V0SGlzdG9yeVN0YXRlKGxvY2F0aW9uLCBpbmRleCk7XG4gICAgbGV0IHVybCA9IGhpc3RvcnkuY3JlYXRlSHJlZihsb2NhdGlvbik7XG4gICAgZ2xvYmFsSGlzdG9yeS5yZXBsYWNlU3RhdGUoaGlzdG9yeVN0YXRlLCBcIlwiLCB1cmwpO1xuICAgIGlmICh2NUNvbXBhdCAmJiBsaXN0ZW5lcikge1xuICAgICAgbGlzdGVuZXIoeyBhY3Rpb24sIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uLCBkZWx0YTogMCB9KTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlVVJMKHRvKSB7XG4gICAgbGV0IGJhc2UgPSB3aW5kb3cyLmxvY2F0aW9uLm9yaWdpbiAhPT0gXCJudWxsXCIgPyB3aW5kb3cyLmxvY2F0aW9uLm9yaWdpbiA6IHdpbmRvdzIubG9jYXRpb24uaHJlZjtcbiAgICBsZXQgaHJlZiA9IHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHRvIDogY3JlYXRlUGF0aCh0byk7XG4gICAgaHJlZiA9IGhyZWYucmVwbGFjZSgvICQvLCBcIiUyMFwiKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICBiYXNlLFxuICAgICAgYE5vIHdpbmRvdy5sb2NhdGlvbi4ob3JpZ2lufGhyZWYpIGF2YWlsYWJsZSB0byBjcmVhdGUgVVJMIGZvciBocmVmOiAke2hyZWZ9YFxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBVUkwoaHJlZiwgYmFzZSk7XG4gIH1cbiAgbGV0IGhpc3RvcnkgPSB7XG4gICAgZ2V0IGFjdGlvbigpIHtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfSxcbiAgICBnZXQgbG9jYXRpb24oKSB7XG4gICAgICByZXR1cm4gZ2V0TG9jYXRpb24od2luZG93MiwgZ2xvYmFsSGlzdG9yeSk7XG4gICAgfSxcbiAgICBsaXN0ZW4oZm4pIHtcbiAgICAgIGlmIChsaXN0ZW5lcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGhpc3Rvcnkgb25seSBhY2NlcHRzIG9uZSBhY3RpdmUgbGlzdGVuZXJcIik7XG4gICAgICB9XG4gICAgICB3aW5kb3cyLmFkZEV2ZW50TGlzdGVuZXIoUG9wU3RhdGVFdmVudFR5cGUsIGhhbmRsZVBvcCk7XG4gICAgICBsaXN0ZW5lciA9IGZuO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93Mi5yZW1vdmVFdmVudExpc3RlbmVyKFBvcFN0YXRlRXZlbnRUeXBlLCBoYW5kbGVQb3ApO1xuICAgICAgICBsaXN0ZW5lciA9IG51bGw7XG4gICAgICB9O1xuICAgIH0sXG4gICAgY3JlYXRlSHJlZih0bykge1xuICAgICAgcmV0dXJuIGNyZWF0ZUhyZWYyKHdpbmRvdzIsIHRvKTtcbiAgICB9LFxuICAgIGNyZWF0ZVVSTCxcbiAgICBlbmNvZGVMb2NhdGlvbih0bykge1xuICAgICAgbGV0IHVybCA9IGNyZWF0ZVVSTCh0byk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRobmFtZTogdXJsLnBhdGhuYW1lLFxuICAgICAgICBzZWFyY2g6IHVybC5zZWFyY2gsXG4gICAgICAgIGhhc2g6IHVybC5oYXNoXG4gICAgICB9O1xuICAgIH0sXG4gICAgcHVzaCxcbiAgICByZXBsYWNlOiByZXBsYWNlMixcbiAgICBnbyhuKSB7XG4gICAgICByZXR1cm4gZ2xvYmFsSGlzdG9yeS5nbyhuKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBoaXN0b3J5O1xufVxuXG4vLyBsaWIvcm91dGVyL3V0aWxzLnRzXG52YXIgaW1tdXRhYmxlUm91dGVLZXlzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1xuICBcImxhenlcIixcbiAgXCJjYXNlU2Vuc2l0aXZlXCIsXG4gIFwicGF0aFwiLFxuICBcImlkXCIsXG4gIFwiaW5kZXhcIixcbiAgXCJjaGlsZHJlblwiXG5dKTtcbmZ1bmN0aW9uIGlzSW5kZXhSb3V0ZShyb3V0ZSkge1xuICByZXR1cm4gcm91dGUuaW5kZXggPT09IHRydWU7XG59XG5mdW5jdGlvbiBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKHJvdXRlcywgbWFwUm91dGVQcm9wZXJ0aWVzMiwgcGFyZW50UGF0aCA9IFtdLCBtYW5pZmVzdCA9IHt9KSB7XG4gIHJldHVybiByb3V0ZXMubWFwKChyb3V0ZSwgaW5kZXgpID0+IHtcbiAgICBsZXQgdHJlZVBhdGggPSBbLi4ucGFyZW50UGF0aCwgU3RyaW5nKGluZGV4KV07XG4gICAgbGV0IGlkID0gdHlwZW9mIHJvdXRlLmlkID09PSBcInN0cmluZ1wiID8gcm91dGUuaWQgOiB0cmVlUGF0aC5qb2luKFwiLVwiKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICByb3V0ZS5pbmRleCAhPT0gdHJ1ZSB8fCAhcm91dGUuY2hpbGRyZW4sXG4gICAgICBgQ2Fubm90IHNwZWNpZnkgY2hpbGRyZW4gb24gYW4gaW5kZXggcm91dGVgXG4gICAgKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICAhbWFuaWZlc3RbaWRdLFxuICAgICAgYEZvdW5kIGEgcm91dGUgaWQgY29sbGlzaW9uIG9uIGlkIFwiJHtpZH1cIi4gIFJvdXRlIGlkJ3MgbXVzdCBiZSBnbG9iYWxseSB1bmlxdWUgd2l0aGluIERhdGEgUm91dGVyIHVzYWdlc2BcbiAgICApO1xuICAgIGlmIChpc0luZGV4Um91dGUocm91dGUpKSB7XG4gICAgICBsZXQgaW5kZXhSb3V0ZSA9IHtcbiAgICAgICAgLi4ucm91dGUsXG4gICAgICAgIC4uLm1hcFJvdXRlUHJvcGVydGllczIocm91dGUpLFxuICAgICAgICBpZFxuICAgICAgfTtcbiAgICAgIG1hbmlmZXN0W2lkXSA9IGluZGV4Um91dGU7XG4gICAgICByZXR1cm4gaW5kZXhSb3V0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHBhdGhPckxheW91dFJvdXRlID0ge1xuICAgICAgICAuLi5yb3V0ZSxcbiAgICAgICAgLi4ubWFwUm91dGVQcm9wZXJ0aWVzMihyb3V0ZSksXG4gICAgICAgIGlkLFxuICAgICAgICBjaGlsZHJlbjogdm9pZCAwXG4gICAgICB9O1xuICAgICAgbWFuaWZlc3RbaWRdID0gcGF0aE9yTGF5b3V0Um91dGU7XG4gICAgICBpZiAocm91dGUuY2hpbGRyZW4pIHtcbiAgICAgICAgcGF0aE9yTGF5b3V0Um91dGUuY2hpbGRyZW4gPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgICAgICAgIHJvdXRlLmNoaWxkcmVuLFxuICAgICAgICAgIG1hcFJvdXRlUHJvcGVydGllczIsXG4gICAgICAgICAgdHJlZVBhdGgsXG4gICAgICAgICAgbWFuaWZlc3RcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXRoT3JMYXlvdXRSb3V0ZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gbWF0Y2hSb3V0ZXMocm91dGVzLCBsb2NhdGlvbkFyZywgYmFzZW5hbWUgPSBcIi9cIikge1xuICByZXR1cm4gbWF0Y2hSb3V0ZXNJbXBsKHJvdXRlcywgbG9jYXRpb25BcmcsIGJhc2VuYW1lLCBmYWxzZSk7XG59XG5mdW5jdGlvbiBtYXRjaFJvdXRlc0ltcGwocm91dGVzLCBsb2NhdGlvbkFyZywgYmFzZW5hbWUsIGFsbG93UGFydGlhbCkge1xuICBsZXQgbG9jYXRpb24gPSB0eXBlb2YgbG9jYXRpb25BcmcgPT09IFwic3RyaW5nXCIgPyBwYXJzZVBhdGgobG9jYXRpb25BcmcpIDogbG9jYXRpb25Bcmc7XG4gIGxldCBwYXRobmFtZSA9IHN0cmlwQmFzZW5hbWUobG9jYXRpb24ucGF0aG5hbWUgfHwgXCIvXCIsIGJhc2VuYW1lKTtcbiAgaWYgKHBhdGhuYW1lID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBsZXQgYnJhbmNoZXMgPSBmbGF0dGVuUm91dGVzKHJvdXRlcyk7XG4gIHJhbmtSb3V0ZUJyYW5jaGVzKGJyYW5jaGVzKTtcbiAgbGV0IG1hdGNoZXMgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgbWF0Y2hlcyA9PSBudWxsICYmIGkgPCBicmFuY2hlcy5sZW5ndGg7ICsraSkge1xuICAgIGxldCBkZWNvZGVkID0gZGVjb2RlUGF0aChwYXRobmFtZSk7XG4gICAgbWF0Y2hlcyA9IG1hdGNoUm91dGVCcmFuY2goXG4gICAgICBicmFuY2hlc1tpXSxcbiAgICAgIGRlY29kZWQsXG4gICAgICBhbGxvd1BhcnRpYWxcbiAgICApO1xuICB9XG4gIHJldHVybiBtYXRjaGVzO1xufVxuZnVuY3Rpb24gY29udmVydFJvdXRlTWF0Y2hUb1VpTWF0Y2gobWF0Y2gsIGxvYWRlckRhdGEpIHtcbiAgbGV0IHsgcm91dGUsIHBhdGhuYW1lLCBwYXJhbXMgfSA9IG1hdGNoO1xuICByZXR1cm4ge1xuICAgIGlkOiByb3V0ZS5pZCxcbiAgICBwYXRobmFtZSxcbiAgICBwYXJhbXMsXG4gICAgZGF0YTogbG9hZGVyRGF0YVtyb3V0ZS5pZF0sXG4gICAgaGFuZGxlOiByb3V0ZS5oYW5kbGVcbiAgfTtcbn1cbmZ1bmN0aW9uIGZsYXR0ZW5Sb3V0ZXMocm91dGVzLCBicmFuY2hlcyA9IFtdLCBwYXJlbnRzTWV0YSA9IFtdLCBwYXJlbnRQYXRoID0gXCJcIikge1xuICBsZXQgZmxhdHRlblJvdXRlID0gKHJvdXRlLCBpbmRleCwgcmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgbGV0IG1ldGEgPSB7XG4gICAgICByZWxhdGl2ZVBhdGg6IHJlbGF0aXZlUGF0aCA9PT0gdm9pZCAwID8gcm91dGUucGF0aCB8fCBcIlwiIDogcmVsYXRpdmVQYXRoLFxuICAgICAgY2FzZVNlbnNpdGl2ZTogcm91dGUuY2FzZVNlbnNpdGl2ZSA9PT0gdHJ1ZSxcbiAgICAgIGNoaWxkcmVuSW5kZXg6IGluZGV4LFxuICAgICAgcm91dGVcbiAgICB9O1xuICAgIGlmIChtZXRhLnJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgaW52YXJpYW50KFxuICAgICAgICBtZXRhLnJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKHBhcmVudFBhdGgpLFxuICAgICAgICBgQWJzb2x1dGUgcm91dGUgcGF0aCBcIiR7bWV0YS5yZWxhdGl2ZVBhdGh9XCIgbmVzdGVkIHVuZGVyIHBhdGggXCIke3BhcmVudFBhdGh9XCIgaXMgbm90IHZhbGlkLiBBbiBhYnNvbHV0ZSBjaGlsZCByb3V0ZSBwYXRoIG11c3Qgc3RhcnQgd2l0aCB0aGUgY29tYmluZWQgcGF0aCBvZiBhbGwgaXRzIHBhcmVudCByb3V0ZXMuYFxuICAgICAgKTtcbiAgICAgIG1ldGEucmVsYXRpdmVQYXRoID0gbWV0YS5yZWxhdGl2ZVBhdGguc2xpY2UocGFyZW50UGF0aC5sZW5ndGgpO1xuICAgIH1cbiAgICBsZXQgcGF0aCA9IGpvaW5QYXRocyhbcGFyZW50UGF0aCwgbWV0YS5yZWxhdGl2ZVBhdGhdKTtcbiAgICBsZXQgcm91dGVzTWV0YSA9IHBhcmVudHNNZXRhLmNvbmNhdChtZXRhKTtcbiAgICBpZiAocm91dGUuY2hpbGRyZW4gJiYgcm91dGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgaW52YXJpYW50KFxuICAgICAgICAvLyBPdXIgdHlwZXMga25vdyBiZXR0ZXIsIGJ1dCBydW50aW1lIEpTIG1heSBub3QhXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgcm91dGUuaW5kZXggIT09IHRydWUsXG4gICAgICAgIGBJbmRleCByb3V0ZXMgbXVzdCBub3QgaGF2ZSBjaGlsZCByb3V0ZXMuIFBsZWFzZSByZW1vdmUgYWxsIGNoaWxkIHJvdXRlcyBmcm9tIHJvdXRlIHBhdGggXCIke3BhdGh9XCIuYFxuICAgICAgKTtcbiAgICAgIGZsYXR0ZW5Sb3V0ZXMocm91dGUuY2hpbGRyZW4sIGJyYW5jaGVzLCByb3V0ZXNNZXRhLCBwYXRoKTtcbiAgICB9XG4gICAgaWYgKHJvdXRlLnBhdGggPT0gbnVsbCAmJiAhcm91dGUuaW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYnJhbmNoZXMucHVzaCh7XG4gICAgICBwYXRoLFxuICAgICAgc2NvcmU6IGNvbXB1dGVTY29yZShwYXRoLCByb3V0ZS5pbmRleCksXG4gICAgICByb3V0ZXNNZXRhXG4gICAgfSk7XG4gIH07XG4gIHJvdXRlcy5mb3JFYWNoKChyb3V0ZSwgaW5kZXgpID0+IHtcbiAgICBpZiAocm91dGUucGF0aCA9PT0gXCJcIiB8fCAhcm91dGUucGF0aD8uaW5jbHVkZXMoXCI/XCIpKSB7XG4gICAgICBmbGF0dGVuUm91dGUocm91dGUsIGluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgZXhwbG9kZWQgb2YgZXhwbG9kZU9wdGlvbmFsU2VnbWVudHMocm91dGUucGF0aCkpIHtcbiAgICAgICAgZmxhdHRlblJvdXRlKHJvdXRlLCBpbmRleCwgZXhwbG9kZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBicmFuY2hlcztcbn1cbmZ1bmN0aW9uIGV4cGxvZGVPcHRpb25hbFNlZ21lbnRzKHBhdGgpIHtcbiAgbGV0IHNlZ21lbnRzID0gcGF0aC5zcGxpdChcIi9cIik7XG4gIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgbGV0IFtmaXJzdCwgLi4ucmVzdF0gPSBzZWdtZW50cztcbiAgbGV0IGlzT3B0aW9uYWwgPSBmaXJzdC5lbmRzV2l0aChcIj9cIik7XG4gIGxldCByZXF1aXJlZCA9IGZpcnN0LnJlcGxhY2UoL1xcPyQvLCBcIlwiKTtcbiAgaWYgKHJlc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGlzT3B0aW9uYWwgPyBbcmVxdWlyZWQsIFwiXCJdIDogW3JlcXVpcmVkXTtcbiAgfVxuICBsZXQgcmVzdEV4cGxvZGVkID0gZXhwbG9kZU9wdGlvbmFsU2VnbWVudHMocmVzdC5qb2luKFwiL1wiKSk7XG4gIGxldCByZXN1bHQgPSBbXTtcbiAgcmVzdWx0LnB1c2goXG4gICAgLi4ucmVzdEV4cGxvZGVkLm1hcChcbiAgICAgIChzdWJwYXRoKSA9PiBzdWJwYXRoID09PSBcIlwiID8gcmVxdWlyZWQgOiBbcmVxdWlyZWQsIHN1YnBhdGhdLmpvaW4oXCIvXCIpXG4gICAgKVxuICApO1xuICBpZiAoaXNPcHRpb25hbCkge1xuICAgIHJlc3VsdC5wdXNoKC4uLnJlc3RFeHBsb2RlZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5tYXAoXG4gICAgKGV4cGxvZGVkKSA9PiBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpICYmIGV4cGxvZGVkID09PSBcIlwiID8gXCIvXCIgOiBleHBsb2RlZFxuICApO1xufVxuZnVuY3Rpb24gcmFua1JvdXRlQnJhbmNoZXMoYnJhbmNoZXMpIHtcbiAgYnJhbmNoZXMuc29ydChcbiAgICAoYSwgYikgPT4gYS5zY29yZSAhPT0gYi5zY29yZSA/IGIuc2NvcmUgLSBhLnNjb3JlIDogY29tcGFyZUluZGV4ZXMoXG4gICAgICBhLnJvdXRlc01ldGEubWFwKChtZXRhKSA9PiBtZXRhLmNoaWxkcmVuSW5kZXgpLFxuICAgICAgYi5yb3V0ZXNNZXRhLm1hcCgobWV0YSkgPT4gbWV0YS5jaGlsZHJlbkluZGV4KVxuICAgIClcbiAgKTtcbn1cbnZhciBwYXJhbVJlID0gL146W1xcdy1dKyQvO1xudmFyIGR5bmFtaWNTZWdtZW50VmFsdWUgPSAzO1xudmFyIGluZGV4Um91dGVWYWx1ZSA9IDI7XG52YXIgZW1wdHlTZWdtZW50VmFsdWUgPSAxO1xudmFyIHN0YXRpY1NlZ21lbnRWYWx1ZSA9IDEwO1xudmFyIHNwbGF0UGVuYWx0eSA9IC0yO1xudmFyIGlzU3BsYXQgPSAocykgPT4gcyA9PT0gXCIqXCI7XG5mdW5jdGlvbiBjb21wdXRlU2NvcmUocGF0aCwgaW5kZXgpIHtcbiAgbGV0IHNlZ21lbnRzID0gcGF0aC5zcGxpdChcIi9cIik7XG4gIGxldCBpbml0aWFsU2NvcmUgPSBzZWdtZW50cy5sZW5ndGg7XG4gIGlmIChzZWdtZW50cy5zb21lKGlzU3BsYXQpKSB7XG4gICAgaW5pdGlhbFNjb3JlICs9IHNwbGF0UGVuYWx0eTtcbiAgfVxuICBpZiAoaW5kZXgpIHtcbiAgICBpbml0aWFsU2NvcmUgKz0gaW5kZXhSb3V0ZVZhbHVlO1xuICB9XG4gIHJldHVybiBzZWdtZW50cy5maWx0ZXIoKHMpID0+ICFpc1NwbGF0KHMpKS5yZWR1Y2UoXG4gICAgKHNjb3JlLCBzZWdtZW50KSA9PiBzY29yZSArIChwYXJhbVJlLnRlc3Qoc2VnbWVudCkgPyBkeW5hbWljU2VnbWVudFZhbHVlIDogc2VnbWVudCA9PT0gXCJcIiA/IGVtcHR5U2VnbWVudFZhbHVlIDogc3RhdGljU2VnbWVudFZhbHVlKSxcbiAgICBpbml0aWFsU2NvcmVcbiAgKTtcbn1cbmZ1bmN0aW9uIGNvbXBhcmVJbmRleGVzKGEsIGIpIHtcbiAgbGV0IHNpYmxpbmdzID0gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuc2xpY2UoMCwgLTEpLmV2ZXJ5KChuLCBpKSA9PiBuID09PSBiW2ldKTtcbiAgcmV0dXJuIHNpYmxpbmdzID8gKFxuICAgIC8vIElmIHR3byByb3V0ZXMgYXJlIHNpYmxpbmdzLCB3ZSBzaG91bGQgdHJ5IHRvIG1hdGNoIHRoZSBlYXJsaWVyIHNpYmxpbmdcbiAgICAvLyBmaXJzdC4gVGhpcyBhbGxvd3MgcGVvcGxlIHRvIGhhdmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgbWF0Y2hpbmdcbiAgICAvLyBiZWhhdmlvciBieSBzaW1wbHkgcHV0dGluZyByb3V0ZXMgd2l0aCBpZGVudGljYWwgcGF0aHMgaW4gdGhlIG9yZGVyIHRoZXlcbiAgICAvLyB3YW50IHRoZW0gdHJpZWQuXG4gICAgYVthLmxlbmd0aCAtIDFdIC0gYltiLmxlbmd0aCAtIDFdXG4gICkgOiAoXG4gICAgLy8gT3RoZXJ3aXNlLCBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHJhbmsgbm9uLXNpYmxpbmdzIGJ5IGluZGV4LFxuICAgIC8vIHNvIHRoZXkgc29ydCBlcXVhbGx5LlxuICAgIDBcbiAgKTtcbn1cbmZ1bmN0aW9uIG1hdGNoUm91dGVCcmFuY2goYnJhbmNoLCBwYXRobmFtZSwgYWxsb3dQYXJ0aWFsID0gZmFsc2UpIHtcbiAgbGV0IHsgcm91dGVzTWV0YSB9ID0gYnJhbmNoO1xuICBsZXQgbWF0Y2hlZFBhcmFtcyA9IHt9O1xuICBsZXQgbWF0Y2hlZFBhdGhuYW1lID0gXCIvXCI7XG4gIGxldCBtYXRjaGVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm91dGVzTWV0YS5sZW5ndGg7ICsraSkge1xuICAgIGxldCBtZXRhID0gcm91dGVzTWV0YVtpXTtcbiAgICBsZXQgZW5kID0gaSA9PT0gcm91dGVzTWV0YS5sZW5ndGggLSAxO1xuICAgIGxldCByZW1haW5pbmdQYXRobmFtZSA9IG1hdGNoZWRQYXRobmFtZSA9PT0gXCIvXCIgPyBwYXRobmFtZSA6IHBhdGhuYW1lLnNsaWNlKG1hdGNoZWRQYXRobmFtZS5sZW5ndGgpIHx8IFwiL1wiO1xuICAgIGxldCBtYXRjaCA9IG1hdGNoUGF0aChcbiAgICAgIHsgcGF0aDogbWV0YS5yZWxhdGl2ZVBhdGgsIGNhc2VTZW5zaXRpdmU6IG1ldGEuY2FzZVNlbnNpdGl2ZSwgZW5kIH0sXG4gICAgICByZW1haW5pbmdQYXRobmFtZVxuICAgICk7XG4gICAgbGV0IHJvdXRlID0gbWV0YS5yb3V0ZTtcbiAgICBpZiAoIW1hdGNoICYmIGVuZCAmJiBhbGxvd1BhcnRpYWwgJiYgIXJvdXRlc01ldGFbcm91dGVzTWV0YS5sZW5ndGggLSAxXS5yb3V0ZS5pbmRleCkge1xuICAgICAgbWF0Y2ggPSBtYXRjaFBhdGgoXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiBtZXRhLnJlbGF0aXZlUGF0aCxcbiAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBtZXRhLmNhc2VTZW5zaXRpdmUsXG4gICAgICAgICAgZW5kOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICByZW1haW5pbmdQYXRobmFtZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24obWF0Y2hlZFBhcmFtcywgbWF0Y2gucGFyYW1zKTtcbiAgICBtYXRjaGVzLnB1c2goe1xuICAgICAgLy8gVE9ETzogQ2FuIHRoaXMgYXMgYmUgYXZvaWRlZD9cbiAgICAgIHBhcmFtczogbWF0Y2hlZFBhcmFtcyxcbiAgICAgIHBhdGhuYW1lOiBqb2luUGF0aHMoW21hdGNoZWRQYXRobmFtZSwgbWF0Y2gucGF0aG5hbWVdKSxcbiAgICAgIHBhdGhuYW1lQmFzZTogbm9ybWFsaXplUGF0aG5hbWUoXG4gICAgICAgIGpvaW5QYXRocyhbbWF0Y2hlZFBhdGhuYW1lLCBtYXRjaC5wYXRobmFtZUJhc2VdKVxuICAgICAgKSxcbiAgICAgIHJvdXRlXG4gICAgfSk7XG4gICAgaWYgKG1hdGNoLnBhdGhuYW1lQmFzZSAhPT0gXCIvXCIpIHtcbiAgICAgIG1hdGNoZWRQYXRobmFtZSA9IGpvaW5QYXRocyhbbWF0Y2hlZFBhdGhuYW1lLCBtYXRjaC5wYXRobmFtZUJhc2VdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXM7XG59XG5mdW5jdGlvbiBnZW5lcmF0ZVBhdGgob3JpZ2luYWxQYXRoLCBwYXJhbXMgPSB7fSkge1xuICBsZXQgcGF0aCA9IG9yaWdpbmFsUGF0aDtcbiAgaWYgKHBhdGguZW5kc1dpdGgoXCIqXCIpICYmIHBhdGggIT09IFwiKlwiICYmICFwYXRoLmVuZHNXaXRoKFwiLypcIikpIHtcbiAgICB3YXJuaW5nKFxuICAgICAgZmFsc2UsXG4gICAgICBgUm91dGUgcGF0aCBcIiR7cGF0aH1cIiB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBcIiR7cGF0aC5yZXBsYWNlKC9cXCokLywgXCIvKlwiKX1cIiBiZWNhdXNlIHRoZSBcXGAqXFxgIGNoYXJhY3RlciBtdXN0IGFsd2F5cyBmb2xsb3cgYSBcXGAvXFxgIGluIHRoZSBwYXR0ZXJuLiBUbyBnZXQgcmlkIG9mIHRoaXMgd2FybmluZywgcGxlYXNlIGNoYW5nZSB0aGUgcm91dGUgcGF0aCB0byBcIiR7cGF0aC5yZXBsYWNlKC9cXCokLywgXCIvKlwiKX1cIi5gXG4gICAgKTtcbiAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC9cXCokLywgXCIvKlwiKTtcbiAgfVxuICBjb25zdCBwcmVmaXggPSBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gXCIvXCIgOiBcIlwiO1xuICBjb25zdCBzdHJpbmdpZnkgPSAocCkgPT4gcCA9PSBudWxsID8gXCJcIiA6IHR5cGVvZiBwID09PSBcInN0cmluZ1wiID8gcCA6IFN0cmluZyhwKTtcbiAgY29uc3Qgc2VnbWVudHMgPSBwYXRoLnNwbGl0KC9cXC8rLykubWFwKChzZWdtZW50LCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICBjb25zdCBpc0xhc3RTZWdtZW50ID0gaW5kZXggPT09IGFycmF5Lmxlbmd0aCAtIDE7XG4gICAgaWYgKGlzTGFzdFNlZ21lbnQgJiYgc2VnbWVudCA9PT0gXCIqXCIpIHtcbiAgICAgIGNvbnN0IHN0YXIgPSBcIipcIjtcbiAgICAgIHJldHVybiBzdHJpbmdpZnkocGFyYW1zW3N0YXJdKTtcbiAgICB9XG4gICAgY29uc3Qga2V5TWF0Y2ggPSBzZWdtZW50Lm1hdGNoKC9eOihbXFx3LV0rKShcXD8/KSQvKTtcbiAgICBpZiAoa2V5TWF0Y2gpIHtcbiAgICAgIGNvbnN0IFssIGtleSwgb3B0aW9uYWxdID0ga2V5TWF0Y2g7XG4gICAgICBsZXQgcGFyYW0gPSBwYXJhbXNba2V5XTtcbiAgICAgIGludmFyaWFudChvcHRpb25hbCA9PT0gXCI/XCIgfHwgcGFyYW0gIT0gbnVsbCwgYE1pc3NpbmcgXCI6JHtrZXl9XCIgcGFyYW1gKTtcbiAgICAgIHJldHVybiBzdHJpbmdpZnkocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gc2VnbWVudC5yZXBsYWNlKC9cXD8kL2csIFwiXCIpO1xuICB9KS5maWx0ZXIoKHNlZ21lbnQpID0+ICEhc2VnbWVudCk7XG4gIHJldHVybiBwcmVmaXggKyBzZWdtZW50cy5qb2luKFwiL1wiKTtcbn1cbmZ1bmN0aW9uIG1hdGNoUGF0aChwYXR0ZXJuLCBwYXRobmFtZSkge1xuICBpZiAodHlwZW9mIHBhdHRlcm4gPT09IFwic3RyaW5nXCIpIHtcbiAgICBwYXR0ZXJuID0geyBwYXRoOiBwYXR0ZXJuLCBjYXNlU2Vuc2l0aXZlOiBmYWxzZSwgZW5kOiB0cnVlIH07XG4gIH1cbiAgbGV0IFttYXRjaGVyLCBjb21waWxlZFBhcmFtc10gPSBjb21waWxlUGF0aChcbiAgICBwYXR0ZXJuLnBhdGgsXG4gICAgcGF0dGVybi5jYXNlU2Vuc2l0aXZlLFxuICAgIHBhdHRlcm4uZW5kXG4gICk7XG4gIGxldCBtYXRjaCA9IHBhdGhuYW1lLm1hdGNoKG1hdGNoZXIpO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbDtcbiAgbGV0IG1hdGNoZWRQYXRobmFtZSA9IG1hdGNoWzBdO1xuICBsZXQgcGF0aG5hbWVCYXNlID0gbWF0Y2hlZFBhdGhuYW1lLnJlcGxhY2UoLyguKVxcLyskLywgXCIkMVwiKTtcbiAgbGV0IGNhcHR1cmVHcm91cHMgPSBtYXRjaC5zbGljZSgxKTtcbiAgbGV0IHBhcmFtcyA9IGNvbXBpbGVkUGFyYW1zLnJlZHVjZShcbiAgICAobWVtbzIsIHsgcGFyYW1OYW1lLCBpc09wdGlvbmFsIH0sIGluZGV4KSA9PiB7XG4gICAgICBpZiAocGFyYW1OYW1lID09PSBcIipcIikge1xuICAgICAgICBsZXQgc3BsYXRWYWx1ZSA9IGNhcHR1cmVHcm91cHNbaW5kZXhdIHx8IFwiXCI7XG4gICAgICAgIHBhdGhuYW1lQmFzZSA9IG1hdGNoZWRQYXRobmFtZS5zbGljZSgwLCBtYXRjaGVkUGF0aG5hbWUubGVuZ3RoIC0gc3BsYXRWYWx1ZS5sZW5ndGgpLnJlcGxhY2UoLyguKVxcLyskLywgXCIkMVwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbHVlID0gY2FwdHVyZUdyb3Vwc1tpbmRleF07XG4gICAgICBpZiAoaXNPcHRpb25hbCAmJiAhdmFsdWUpIHtcbiAgICAgICAgbWVtbzJbcGFyYW1OYW1lXSA9IHZvaWQgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lbW8yW3BhcmFtTmFtZV0gPSAodmFsdWUgfHwgXCJcIikucmVwbGFjZSgvJTJGL2csIFwiL1wiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZW1vMjtcbiAgICB9LFxuICAgIHt9XG4gICk7XG4gIHJldHVybiB7XG4gICAgcGFyYW1zLFxuICAgIHBhdGhuYW1lOiBtYXRjaGVkUGF0aG5hbWUsXG4gICAgcGF0aG5hbWVCYXNlLFxuICAgIHBhdHRlcm5cbiAgfTtcbn1cbmZ1bmN0aW9uIGNvbXBpbGVQYXRoKHBhdGgsIGNhc2VTZW5zaXRpdmUgPSBmYWxzZSwgZW5kID0gdHJ1ZSkge1xuICB3YXJuaW5nKFxuICAgIHBhdGggPT09IFwiKlwiIHx8ICFwYXRoLmVuZHNXaXRoKFwiKlwiKSB8fCBwYXRoLmVuZHNXaXRoKFwiLypcIiksXG4gICAgYFJvdXRlIHBhdGggXCIke3BhdGh9XCIgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIGl0IHdlcmUgXCIke3BhdGgucmVwbGFjZSgvXFwqJC8sIFwiLypcIil9XCIgYmVjYXVzZSB0aGUgXFxgKlxcYCBjaGFyYWN0ZXIgbXVzdCBhbHdheXMgZm9sbG93IGEgXFxgL1xcYCBpbiB0aGUgcGF0dGVybi4gVG8gZ2V0IHJpZCBvZiB0aGlzIHdhcm5pbmcsIHBsZWFzZSBjaGFuZ2UgdGhlIHJvdXRlIHBhdGggdG8gXCIke3BhdGgucmVwbGFjZSgvXFwqJC8sIFwiLypcIil9XCIuYFxuICApO1xuICBsZXQgcGFyYW1zID0gW107XG4gIGxldCByZWdleHBTb3VyY2UgPSBcIl5cIiArIHBhdGgucmVwbGFjZSgvXFwvKlxcKj8kLywgXCJcIikucmVwbGFjZSgvXlxcLyovLCBcIi9cIikucmVwbGFjZSgvW1xcXFwuKiteJHt9fCgpW1xcXV0vZywgXCJcXFxcJCZcIikucmVwbGFjZShcbiAgICAvXFwvOihbXFx3LV0rKShcXD8pPy9nLFxuICAgIChfLCBwYXJhbU5hbWUsIGlzT3B0aW9uYWwpID0+IHtcbiAgICAgIHBhcmFtcy5wdXNoKHsgcGFyYW1OYW1lLCBpc09wdGlvbmFsOiBpc09wdGlvbmFsICE9IG51bGwgfSk7XG4gICAgICByZXR1cm4gaXNPcHRpb25hbCA/IFwiLz8oW15cXFxcL10rKT9cIiA6IFwiLyhbXlxcXFwvXSspXCI7XG4gICAgfVxuICApO1xuICBpZiAocGF0aC5lbmRzV2l0aChcIipcIikpIHtcbiAgICBwYXJhbXMucHVzaCh7IHBhcmFtTmFtZTogXCIqXCIgfSk7XG4gICAgcmVnZXhwU291cmNlICs9IHBhdGggPT09IFwiKlwiIHx8IHBhdGggPT09IFwiLypcIiA/IFwiKC4qKSRcIiA6IFwiKD86XFxcXC8oLispfFxcXFwvKikkXCI7XG4gIH0gZWxzZSBpZiAoZW5kKSB7XG4gICAgcmVnZXhwU291cmNlICs9IFwiXFxcXC8qJFwiO1xuICB9IGVsc2UgaWYgKHBhdGggIT09IFwiXCIgJiYgcGF0aCAhPT0gXCIvXCIpIHtcbiAgICByZWdleHBTb3VyY2UgKz0gXCIoPzooPz1cXFxcL3wkKSlcIjtcbiAgfSBlbHNlIHtcbiAgfVxuICBsZXQgbWF0Y2hlciA9IG5ldyBSZWdFeHAocmVnZXhwU291cmNlLCBjYXNlU2Vuc2l0aXZlID8gdm9pZCAwIDogXCJpXCIpO1xuICByZXR1cm4gW21hdGNoZXIsIHBhcmFtc107XG59XG5mdW5jdGlvbiBkZWNvZGVQYXRoKHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHZhbHVlLnNwbGl0KFwiL1wiKS5tYXAoKHYpID0+IGRlY29kZVVSSUNvbXBvbmVudCh2KS5yZXBsYWNlKC9cXC8vZywgXCIlMkZcIikpLmpvaW4oXCIvXCIpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHdhcm5pbmcoXG4gICAgICBmYWxzZSxcbiAgICAgIGBUaGUgVVJMIHBhdGggXCIke3ZhbHVlfVwiIGNvdWxkIG5vdCBiZSBkZWNvZGVkIGJlY2F1c2UgaXQgaXMgaXMgYSBtYWxmb3JtZWQgVVJMIHNlZ21lbnQuIFRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIGEgYmFkIHBlcmNlbnQgZW5jb2RpbmcgKCR7ZXJyb3J9KS5gXG4gICAgKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbmZ1bmN0aW9uIHN0cmlwQmFzZW5hbWUocGF0aG5hbWUsIGJhc2VuYW1lKSB7XG4gIGlmIChiYXNlbmFtZSA9PT0gXCIvXCIpIHJldHVybiBwYXRobmFtZTtcbiAgaWYgKCFwYXRobmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoYmFzZW5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBsZXQgc3RhcnRJbmRleCA9IGJhc2VuYW1lLmVuZHNXaXRoKFwiL1wiKSA/IGJhc2VuYW1lLmxlbmd0aCAtIDEgOiBiYXNlbmFtZS5sZW5ndGg7XG4gIGxldCBuZXh0Q2hhciA9IHBhdGhuYW1lLmNoYXJBdChzdGFydEluZGV4KTtcbiAgaWYgKG5leHRDaGFyICYmIG5leHRDaGFyICE9PSBcIi9cIikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBwYXRobmFtZS5zbGljZShzdGFydEluZGV4KSB8fCBcIi9cIjtcbn1cbmZ1bmN0aW9uIHJlc29sdmVQYXRoKHRvLCBmcm9tUGF0aG5hbWUgPSBcIi9cIikge1xuICBsZXQge1xuICAgIHBhdGhuYW1lOiB0b1BhdGhuYW1lLFxuICAgIHNlYXJjaCA9IFwiXCIsXG4gICAgaGFzaCA9IFwiXCJcbiAgfSA9IHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aCh0bykgOiB0bztcbiAgbGV0IHBhdGhuYW1lID0gdG9QYXRobmFtZSA/IHRvUGF0aG5hbWUuc3RhcnRzV2l0aChcIi9cIikgPyB0b1BhdGhuYW1lIDogcmVzb2x2ZVBhdGhuYW1lKHRvUGF0aG5hbWUsIGZyb21QYXRobmFtZSkgOiBmcm9tUGF0aG5hbWU7XG4gIHJldHVybiB7XG4gICAgcGF0aG5hbWUsXG4gICAgc2VhcmNoOiBub3JtYWxpemVTZWFyY2goc2VhcmNoKSxcbiAgICBoYXNoOiBub3JtYWxpemVIYXNoKGhhc2gpXG4gIH07XG59XG5mdW5jdGlvbiByZXNvbHZlUGF0aG5hbWUocmVsYXRpdmVQYXRoLCBmcm9tUGF0aG5hbWUpIHtcbiAgbGV0IHNlZ21lbnRzID0gZnJvbVBhdGhuYW1lLnJlcGxhY2UoL1xcLyskLywgXCJcIikuc3BsaXQoXCIvXCIpO1xuICBsZXQgcmVsYXRpdmVTZWdtZW50cyA9IHJlbGF0aXZlUGF0aC5zcGxpdChcIi9cIik7XG4gIHJlbGF0aXZlU2VnbWVudHMuZm9yRWFjaCgoc2VnbWVudCkgPT4ge1xuICAgIGlmIChzZWdtZW50ID09PSBcIi4uXCIpIHtcbiAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPiAxKSBzZWdtZW50cy5wb3AoKTtcbiAgICB9IGVsc2UgaWYgKHNlZ21lbnQgIT09IFwiLlwiKSB7XG4gICAgICBzZWdtZW50cy5wdXNoKHNlZ21lbnQpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzZWdtZW50cy5sZW5ndGggPiAxID8gc2VnbWVudHMuam9pbihcIi9cIikgOiBcIi9cIjtcbn1cbmZ1bmN0aW9uIGdldEludmFsaWRQYXRoRXJyb3IoY2hhciwgZmllbGQsIGRlc3QsIHBhdGgpIHtcbiAgcmV0dXJuIGBDYW5ub3QgaW5jbHVkZSBhICcke2NoYXJ9JyBjaGFyYWN0ZXIgaW4gYSBtYW51YWxseSBzcGVjaWZpZWQgXFxgdG8uJHtmaWVsZH1cXGAgZmllbGQgWyR7SlNPTi5zdHJpbmdpZnkoXG4gICAgcGF0aFxuICApfV0uICBQbGVhc2Ugc2VwYXJhdGUgaXQgb3V0IHRvIHRoZSBcXGB0by4ke2Rlc3R9XFxgIGZpZWxkLiBBbHRlcm5hdGl2ZWx5IHlvdSBtYXkgcHJvdmlkZSB0aGUgZnVsbCBwYXRoIGFzIGEgc3RyaW5nIGluIDxMaW5rIHRvPVwiLi4uXCI+IGFuZCB0aGUgcm91dGVyIHdpbGwgcGFyc2UgaXQgZm9yIHlvdS5gO1xufVxuZnVuY3Rpb24gZ2V0UGF0aENvbnRyaWJ1dGluZ01hdGNoZXMobWF0Y2hlcykge1xuICByZXR1cm4gbWF0Y2hlcy5maWx0ZXIoXG4gICAgKG1hdGNoLCBpbmRleCkgPT4gaW5kZXggPT09IDAgfHwgbWF0Y2gucm91dGUucGF0aCAmJiBtYXRjaC5yb3V0ZS5wYXRoLmxlbmd0aCA+IDBcbiAgKTtcbn1cbmZ1bmN0aW9uIGdldFJlc29sdmVUb01hdGNoZXMobWF0Y2hlcykge1xuICBsZXQgcGF0aE1hdGNoZXMgPSBnZXRQYXRoQ29udHJpYnV0aW5nTWF0Y2hlcyhtYXRjaGVzKTtcbiAgcmV0dXJuIHBhdGhNYXRjaGVzLm1hcChcbiAgICAobWF0Y2gsIGlkeCkgPT4gaWR4ID09PSBwYXRoTWF0Y2hlcy5sZW5ndGggLSAxID8gbWF0Y2gucGF0aG5hbWUgOiBtYXRjaC5wYXRobmFtZUJhc2VcbiAgKTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVUbyh0b0FyZywgcm91dGVQYXRobmFtZXMsIGxvY2F0aW9uUGF0aG5hbWUsIGlzUGF0aFJlbGF0aXZlID0gZmFsc2UpIHtcbiAgbGV0IHRvO1xuICBpZiAodHlwZW9mIHRvQXJnID09PSBcInN0cmluZ1wiKSB7XG4gICAgdG8gPSBwYXJzZVBhdGgodG9BcmcpO1xuICB9IGVsc2Uge1xuICAgIHRvID0geyAuLi50b0FyZyB9O1xuICAgIGludmFyaWFudChcbiAgICAgICF0by5wYXRobmFtZSB8fCAhdG8ucGF0aG5hbWUuaW5jbHVkZXMoXCI/XCIpLFxuICAgICAgZ2V0SW52YWxpZFBhdGhFcnJvcihcIj9cIiwgXCJwYXRobmFtZVwiLCBcInNlYXJjaFwiLCB0bylcbiAgICApO1xuICAgIGludmFyaWFudChcbiAgICAgICF0by5wYXRobmFtZSB8fCAhdG8ucGF0aG5hbWUuaW5jbHVkZXMoXCIjXCIpLFxuICAgICAgZ2V0SW52YWxpZFBhdGhFcnJvcihcIiNcIiwgXCJwYXRobmFtZVwiLCBcImhhc2hcIiwgdG8pXG4gICAgKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICAhdG8uc2VhcmNoIHx8ICF0by5zZWFyY2guaW5jbHVkZXMoXCIjXCIpLFxuICAgICAgZ2V0SW52YWxpZFBhdGhFcnJvcihcIiNcIiwgXCJzZWFyY2hcIiwgXCJoYXNoXCIsIHRvKVxuICAgICk7XG4gIH1cbiAgbGV0IGlzRW1wdHlQYXRoID0gdG9BcmcgPT09IFwiXCIgfHwgdG8ucGF0aG5hbWUgPT09IFwiXCI7XG4gIGxldCB0b1BhdGhuYW1lID0gaXNFbXB0eVBhdGggPyBcIi9cIiA6IHRvLnBhdGhuYW1lO1xuICBsZXQgZnJvbTtcbiAgaWYgKHRvUGF0aG5hbWUgPT0gbnVsbCkge1xuICAgIGZyb20gPSBsb2NhdGlvblBhdGhuYW1lO1xuICB9IGVsc2Uge1xuICAgIGxldCByb3V0ZVBhdGhuYW1lSW5kZXggPSByb3V0ZVBhdGhuYW1lcy5sZW5ndGggLSAxO1xuICAgIGlmICghaXNQYXRoUmVsYXRpdmUgJiYgdG9QYXRobmFtZS5zdGFydHNXaXRoKFwiLi5cIikpIHtcbiAgICAgIGxldCB0b1NlZ21lbnRzID0gdG9QYXRobmFtZS5zcGxpdChcIi9cIik7XG4gICAgICB3aGlsZSAodG9TZWdtZW50c1swXSA9PT0gXCIuLlwiKSB7XG4gICAgICAgIHRvU2VnbWVudHMuc2hpZnQoKTtcbiAgICAgICAgcm91dGVQYXRobmFtZUluZGV4IC09IDE7XG4gICAgICB9XG4gICAgICB0by5wYXRobmFtZSA9IHRvU2VnbWVudHMuam9pbihcIi9cIik7XG4gICAgfVxuICAgIGZyb20gPSByb3V0ZVBhdGhuYW1lSW5kZXggPj0gMCA/IHJvdXRlUGF0aG5hbWVzW3JvdXRlUGF0aG5hbWVJbmRleF0gOiBcIi9cIjtcbiAgfVxuICBsZXQgcGF0aCA9IHJlc29sdmVQYXRoKHRvLCBmcm9tKTtcbiAgbGV0IGhhc0V4cGxpY2l0VHJhaWxpbmdTbGFzaCA9IHRvUGF0aG5hbWUgJiYgdG9QYXRobmFtZSAhPT0gXCIvXCIgJiYgdG9QYXRobmFtZS5lbmRzV2l0aChcIi9cIik7XG4gIGxldCBoYXNDdXJyZW50VHJhaWxpbmdTbGFzaCA9IChpc0VtcHR5UGF0aCB8fCB0b1BhdGhuYW1lID09PSBcIi5cIikgJiYgbG9jYXRpb25QYXRobmFtZS5lbmRzV2l0aChcIi9cIik7XG4gIGlmICghcGF0aC5wYXRobmFtZS5lbmRzV2l0aChcIi9cIikgJiYgKGhhc0V4cGxpY2l0VHJhaWxpbmdTbGFzaCB8fCBoYXNDdXJyZW50VHJhaWxpbmdTbGFzaCkpIHtcbiAgICBwYXRoLnBhdGhuYW1lICs9IFwiL1wiO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxudmFyIGpvaW5QYXRocyA9IChwYXRocykgPT4gcGF0aHMuam9pbihcIi9cIikucmVwbGFjZSgvXFwvXFwvKy9nLCBcIi9cIik7XG52YXIgbm9ybWFsaXplUGF0aG5hbWUgPSAocGF0aG5hbWUpID0+IHBhdGhuYW1lLnJlcGxhY2UoL1xcLyskLywgXCJcIikucmVwbGFjZSgvXlxcLyovLCBcIi9cIik7XG52YXIgbm9ybWFsaXplU2VhcmNoID0gKHNlYXJjaCkgPT4gIXNlYXJjaCB8fCBzZWFyY2ggPT09IFwiP1wiID8gXCJcIiA6IHNlYXJjaC5zdGFydHNXaXRoKFwiP1wiKSA/IHNlYXJjaCA6IFwiP1wiICsgc2VhcmNoO1xudmFyIG5vcm1hbGl6ZUhhc2ggPSAoaGFzaCkgPT4gIWhhc2ggfHwgaGFzaCA9PT0gXCIjXCIgPyBcIlwiIDogaGFzaC5zdGFydHNXaXRoKFwiI1wiKSA/IGhhc2ggOiBcIiNcIiArIGhhc2g7XG52YXIgRGF0YVdpdGhSZXNwb25zZUluaXQgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGRhdGEyLCBpbml0KSB7XG4gICAgdGhpcy50eXBlID0gXCJEYXRhV2l0aFJlc3BvbnNlSW5pdFwiO1xuICAgIHRoaXMuZGF0YSA9IGRhdGEyO1xuICAgIHRoaXMuaW5pdCA9IGluaXQgfHwgbnVsbDtcbiAgfVxufTtcbmZ1bmN0aW9uIGRhdGEoZGF0YTIsIGluaXQpIHtcbiAgcmV0dXJuIG5ldyBEYXRhV2l0aFJlc3BvbnNlSW5pdChcbiAgICBkYXRhMixcbiAgICB0eXBlb2YgaW5pdCA9PT0gXCJudW1iZXJcIiA/IHsgc3RhdHVzOiBpbml0IH0gOiBpbml0XG4gICk7XG59XG52YXIgcmVkaXJlY3QgPSAodXJsLCBpbml0ID0gMzAyKSA9PiB7XG4gIGxldCByZXNwb25zZUluaXQgPSBpbml0O1xuICBpZiAodHlwZW9mIHJlc3BvbnNlSW5pdCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJlc3BvbnNlSW5pdCA9IHsgc3RhdHVzOiByZXNwb25zZUluaXQgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcmVzcG9uc2VJbml0LnN0YXR1cyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJlc3BvbnNlSW5pdC5zdGF0dXMgPSAzMDI7XG4gIH1cbiAgbGV0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXNwb25zZUluaXQuaGVhZGVycyk7XG4gIGhlYWRlcnMuc2V0KFwiTG9jYXRpb25cIiwgdXJsKTtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7XG4gICAgLi4ucmVzcG9uc2VJbml0LFxuICAgIGhlYWRlcnNcbiAgfSk7XG59O1xudmFyIHJlZGlyZWN0RG9jdW1lbnQgPSAodXJsLCBpbml0KSA9PiB7XG4gIGxldCByZXNwb25zZSA9IHJlZGlyZWN0KHVybCwgaW5pdCk7XG4gIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiWC1SZW1peC1SZWxvYWQtRG9jdW1lbnRcIiwgXCJ0cnVlXCIpO1xuICByZXR1cm4gcmVzcG9uc2U7XG59O1xudmFyIHJlcGxhY2UgPSAodXJsLCBpbml0KSA9PiB7XG4gIGxldCByZXNwb25zZSA9IHJlZGlyZWN0KHVybCwgaW5pdCk7XG4gIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiWC1SZW1peC1SZXBsYWNlXCIsIFwidHJ1ZVwiKTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcbnZhciBFcnJvclJlc3BvbnNlSW1wbCA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3Ioc3RhdHVzLCBzdGF0dXNUZXh0LCBkYXRhMiwgaW50ZXJuYWwgPSBmYWxzZSkge1xuICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzO1xuICAgIHRoaXMuc3RhdHVzVGV4dCA9IHN0YXR1c1RleHQgfHwgXCJcIjtcbiAgICB0aGlzLmludGVybmFsID0gaW50ZXJuYWw7XG4gICAgaWYgKGRhdGEyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGEyLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLmVycm9yID0gZGF0YTI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGEyO1xuICAgIH1cbiAgfVxufTtcbmZ1bmN0aW9uIGlzUm91dGVFcnJvclJlc3BvbnNlKGVycm9yKSB7XG4gIHJldHVybiBlcnJvciAhPSBudWxsICYmIHR5cGVvZiBlcnJvci5zdGF0dXMgPT09IFwibnVtYmVyXCIgJiYgdHlwZW9mIGVycm9yLnN0YXR1c1RleHQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGVycm9yLmludGVybmFsID09PSBcImJvb2xlYW5cIiAmJiBcImRhdGFcIiBpbiBlcnJvcjtcbn1cblxuLy8gbGliL3JvdXRlci9yb3V0ZXIudHNcbnZhciB2YWxpZE11dGF0aW9uTWV0aG9kc0FyciA9IFtcbiAgXCJQT1NUXCIsXG4gIFwiUFVUXCIsXG4gIFwiUEFUQ0hcIixcbiAgXCJERUxFVEVcIlxuXTtcbnZhciB2YWxpZE11dGF0aW9uTWV0aG9kcyA9IG5ldyBTZXQoXG4gIHZhbGlkTXV0YXRpb25NZXRob2RzQXJyXG4pO1xudmFyIHZhbGlkUmVxdWVzdE1ldGhvZHNBcnIgPSBbXG4gIFwiR0VUXCIsXG4gIC4uLnZhbGlkTXV0YXRpb25NZXRob2RzQXJyXG5dO1xudmFyIHZhbGlkUmVxdWVzdE1ldGhvZHMgPSBuZXcgU2V0KHZhbGlkUmVxdWVzdE1ldGhvZHNBcnIpO1xudmFyIHJlZGlyZWN0U3RhdHVzQ29kZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdKTtcbnZhciByZWRpcmVjdFByZXNlcnZlTWV0aG9kU3RhdHVzQ29kZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbMzA3LCAzMDhdKTtcbnZhciBJRExFX05BVklHQVRJT04gPSB7XG4gIHN0YXRlOiBcImlkbGVcIixcbiAgbG9jYXRpb246IHZvaWQgMCxcbiAgZm9ybU1ldGhvZDogdm9pZCAwLFxuICBmb3JtQWN0aW9uOiB2b2lkIDAsXG4gIGZvcm1FbmNUeXBlOiB2b2lkIDAsXG4gIGZvcm1EYXRhOiB2b2lkIDAsXG4gIGpzb246IHZvaWQgMCxcbiAgdGV4dDogdm9pZCAwXG59O1xudmFyIElETEVfRkVUQ0hFUiA9IHtcbiAgc3RhdGU6IFwiaWRsZVwiLFxuICBkYXRhOiB2b2lkIDAsXG4gIGZvcm1NZXRob2Q6IHZvaWQgMCxcbiAgZm9ybUFjdGlvbjogdm9pZCAwLFxuICBmb3JtRW5jVHlwZTogdm9pZCAwLFxuICBmb3JtRGF0YTogdm9pZCAwLFxuICBqc29uOiB2b2lkIDAsXG4gIHRleHQ6IHZvaWQgMFxufTtcbnZhciBJRExFX0JMT0NLRVIgPSB7XG4gIHN0YXRlOiBcInVuYmxvY2tlZFwiLFxuICBwcm9jZWVkOiB2b2lkIDAsXG4gIHJlc2V0OiB2b2lkIDAsXG4gIGxvY2F0aW9uOiB2b2lkIDBcbn07XG52YXIgQUJTT0xVVEVfVVJMX1JFR0VYID0gL14oPzpbYS16XVthLXowLTkrLi1dKjp8XFwvXFwvKS9pO1xudmFyIGRlZmF1bHRNYXBSb3V0ZVByb3BlcnRpZXMgPSAocm91dGUpID0+ICh7XG4gIGhhc0Vycm9yQm91bmRhcnk6IEJvb2xlYW4ocm91dGUuaGFzRXJyb3JCb3VuZGFyeSlcbn0pO1xudmFyIFRSQU5TSVRJT05TX1NUT1JBR0VfS0VZID0gXCJyZW1peC1yb3V0ZXItdHJhbnNpdGlvbnNcIjtcbnZhciBSZXNldExvYWRlckRhdGFTeW1ib2wgPSBTeW1ib2woXCJSZXNldExvYWRlckRhdGFcIik7XG5mdW5jdGlvbiBjcmVhdGVSb3V0ZXIoaW5pdCkge1xuICBjb25zdCByb3V0ZXJXaW5kb3cgPSBpbml0LndpbmRvdyA/IGluaXQud2luZG93IDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHZvaWQgMDtcbiAgY29uc3QgaXNCcm93c2VyMiA9IHR5cGVvZiByb3V0ZXJXaW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIHJvdXRlcldpbmRvdy5kb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygcm91dGVyV2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgIT09IFwidW5kZWZpbmVkXCI7XG4gIGludmFyaWFudChcbiAgICBpbml0LnJvdXRlcy5sZW5ndGggPiAwLFxuICAgIFwiWW91IG11c3QgcHJvdmlkZSBhIG5vbi1lbXB0eSByb3V0ZXMgYXJyYXkgdG8gY3JlYXRlUm91dGVyXCJcbiAgKTtcbiAgbGV0IG1hcFJvdXRlUHJvcGVydGllczIgPSBpbml0Lm1hcFJvdXRlUHJvcGVydGllcyB8fCBkZWZhdWx0TWFwUm91dGVQcm9wZXJ0aWVzO1xuICBsZXQgbWFuaWZlc3QgPSB7fTtcbiAgbGV0IGRhdGFSb3V0ZXMgPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgIGluaXQucm91dGVzLFxuICAgIG1hcFJvdXRlUHJvcGVydGllczIsXG4gICAgdm9pZCAwLFxuICAgIG1hbmlmZXN0XG4gICk7XG4gIGxldCBpbkZsaWdodERhdGFSb3V0ZXM7XG4gIGxldCBiYXNlbmFtZSA9IGluaXQuYmFzZW5hbWUgfHwgXCIvXCI7XG4gIGxldCBkYXRhU3RyYXRlZ3lJbXBsID0gaW5pdC5kYXRhU3RyYXRlZ3kgfHwgZGVmYXVsdERhdGFTdHJhdGVneTtcbiAgbGV0IHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uSW1wbCA9IGluaXQucGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb247XG4gIGxldCBmdXR1cmUgPSB7XG4gICAgLi4uaW5pdC5mdXR1cmVcbiAgfTtcbiAgbGV0IHVubGlzdGVuSGlzdG9yeSA9IG51bGw7XG4gIGxldCBzdWJzY3JpYmVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBzYXZlZFNjcm9sbFBvc2l0aW9uczIgPSBudWxsO1xuICBsZXQgZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkyID0gbnVsbDtcbiAgbGV0IGdldFNjcm9sbFBvc2l0aW9uID0gbnVsbDtcbiAgbGV0IGluaXRpYWxTY3JvbGxSZXN0b3JlZCA9IGluaXQuaHlkcmF0aW9uRGF0YSAhPSBudWxsO1xuICBsZXQgaW5pdGlhbE1hdGNoZXMgPSBtYXRjaFJvdXRlcyhkYXRhUm91dGVzLCBpbml0Lmhpc3RvcnkubG9jYXRpb24sIGJhc2VuYW1lKTtcbiAgbGV0IGluaXRpYWxFcnJvcnMgPSBudWxsO1xuICBpZiAoaW5pdGlhbE1hdGNoZXMgPT0gbnVsbCAmJiAhcGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb25JbXBsKSB7XG4gICAgbGV0IGVycm9yID0gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHtcbiAgICAgIHBhdGhuYW1lOiBpbml0Lmhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWVcbiAgICB9KTtcbiAgICBsZXQgeyBtYXRjaGVzLCByb3V0ZSB9ID0gZ2V0U2hvcnRDaXJjdWl0TWF0Y2hlcyhkYXRhUm91dGVzKTtcbiAgICBpbml0aWFsTWF0Y2hlcyA9IG1hdGNoZXM7XG4gICAgaW5pdGlhbEVycm9ycyA9IHsgW3JvdXRlLmlkXTogZXJyb3IgfTtcbiAgfVxuICBpZiAoaW5pdGlhbE1hdGNoZXMgJiYgIWluaXQuaHlkcmF0aW9uRGF0YSkge1xuICAgIGxldCBmb2dPZldhciA9IGNoZWNrRm9nT2ZXYXIoXG4gICAgICBpbml0aWFsTWF0Y2hlcyxcbiAgICAgIGRhdGFSb3V0ZXMsXG4gICAgICBpbml0Lmhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWVcbiAgICApO1xuICAgIGlmIChmb2dPZldhci5hY3RpdmUpIHtcbiAgICAgIGluaXRpYWxNYXRjaGVzID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgbGV0IGluaXRpYWxpemVkO1xuICBpZiAoIWluaXRpYWxNYXRjaGVzKSB7XG4gICAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBpbml0aWFsTWF0Y2hlcyA9IFtdO1xuICAgIGxldCBmb2dPZldhciA9IGNoZWNrRm9nT2ZXYXIoXG4gICAgICBudWxsLFxuICAgICAgZGF0YVJvdXRlcyxcbiAgICAgIGluaXQuaGlzdG9yeS5sb2NhdGlvbi5wYXRobmFtZVxuICAgICk7XG4gICAgaWYgKGZvZ09mV2FyLmFjdGl2ZSAmJiBmb2dPZldhci5tYXRjaGVzKSB7XG4gICAgICBpbml0aWFsTWF0Y2hlcyA9IGZvZ09mV2FyLm1hdGNoZXM7XG4gICAgfVxuICB9IGVsc2UgaWYgKGluaXRpYWxNYXRjaGVzLnNvbWUoKG0pID0+IG0ucm91dGUubGF6eSkpIHtcbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuICB9IGVsc2UgaWYgKCFpbml0aWFsTWF0Y2hlcy5zb21lKChtKSA9PiBtLnJvdXRlLmxvYWRlcikpIHtcbiAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGxvYWRlckRhdGEgPSBpbml0Lmh5ZHJhdGlvbkRhdGEgPyBpbml0Lmh5ZHJhdGlvbkRhdGEubG9hZGVyRGF0YSA6IG51bGw7XG4gICAgbGV0IGVycm9ycyA9IGluaXQuaHlkcmF0aW9uRGF0YSA/IGluaXQuaHlkcmF0aW9uRGF0YS5lcnJvcnMgOiBudWxsO1xuICAgIGlmIChlcnJvcnMpIHtcbiAgICAgIGxldCBpZHggPSBpbml0aWFsTWF0Y2hlcy5maW5kSW5kZXgoXG4gICAgICAgIChtKSA9PiBlcnJvcnNbbS5yb3V0ZS5pZF0gIT09IHZvaWQgMFxuICAgICAgKTtcbiAgICAgIGluaXRpYWxpemVkID0gaW5pdGlhbE1hdGNoZXMuc2xpY2UoMCwgaWR4ICsgMSkuZXZlcnkoKG0pID0+ICFzaG91bGRMb2FkUm91dGVPbkh5ZHJhdGlvbihtLnJvdXRlLCBsb2FkZXJEYXRhLCBlcnJvcnMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdGlhbGl6ZWQgPSBpbml0aWFsTWF0Y2hlcy5ldmVyeShcbiAgICAgICAgKG0pID0+ICFzaG91bGRMb2FkUm91dGVPbkh5ZHJhdGlvbihtLnJvdXRlLCBsb2FkZXJEYXRhLCBlcnJvcnMpXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBsZXQgcm91dGVyO1xuICBsZXQgc3RhdGUgPSB7XG4gICAgaGlzdG9yeUFjdGlvbjogaW5pdC5oaXN0b3J5LmFjdGlvbixcbiAgICBsb2NhdGlvbjogaW5pdC5oaXN0b3J5LmxvY2F0aW9uLFxuICAgIG1hdGNoZXM6IGluaXRpYWxNYXRjaGVzLFxuICAgIGluaXRpYWxpemVkLFxuICAgIG5hdmlnYXRpb246IElETEVfTkFWSUdBVElPTixcbiAgICAvLyBEb24ndCByZXN0b3JlIG9uIGluaXRpYWwgdXBkYXRlU3RhdGUoKSBpZiB3ZSB3ZXJlIFNTUidkXG4gICAgcmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBpbml0Lmh5ZHJhdGlvbkRhdGEgIT0gbnVsbCA/IGZhbHNlIDogbnVsbCxcbiAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IGZhbHNlLFxuICAgIHJldmFsaWRhdGlvbjogXCJpZGxlXCIsXG4gICAgbG9hZGVyRGF0YTogaW5pdC5oeWRyYXRpb25EYXRhICYmIGluaXQuaHlkcmF0aW9uRGF0YS5sb2FkZXJEYXRhIHx8IHt9LFxuICAgIGFjdGlvbkRhdGE6IGluaXQuaHlkcmF0aW9uRGF0YSAmJiBpbml0Lmh5ZHJhdGlvbkRhdGEuYWN0aW9uRGF0YSB8fCBudWxsLFxuICAgIGVycm9yczogaW5pdC5oeWRyYXRpb25EYXRhICYmIGluaXQuaHlkcmF0aW9uRGF0YS5lcnJvcnMgfHwgaW5pdGlhbEVycm9ycyxcbiAgICBmZXRjaGVyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSxcbiAgICBibG9ja2VyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKVxuICB9O1xuICBsZXQgcGVuZGluZ0FjdGlvbiA9IFwiUE9QXCIgLyogUG9wICovO1xuICBsZXQgcGVuZGluZ1ByZXZlbnRTY3JvbGxSZXNldCA9IGZhbHNlO1xuICBsZXQgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyO1xuICBsZXQgcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICBsZXQgYXBwbGllZFZpZXdUcmFuc2l0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCByZW1vdmVQYWdlSGlkZUV2ZW50TGlzdGVuZXIgPSBudWxsO1xuICBsZXQgaXNVbmludGVycnVwdGVkUmV2YWxpZGF0aW9uID0gZmFsc2U7XG4gIGxldCBpc1JldmFsaWRhdGlvblJlcXVpcmVkID0gZmFsc2U7XG4gIGxldCBjYW5jZWxsZWRGZXRjaGVyTG9hZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgZmV0Y2hDb250cm9sbGVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCBpbmNyZW1lbnRpbmdMb2FkSWQgPSAwO1xuICBsZXQgcGVuZGluZ05hdmlnYXRpb25Mb2FkSWQgPSAtMTtcbiAgbGV0IGZldGNoUmVsb2FkSWRzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgbGV0IGZldGNoUmVkaXJlY3RJZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgZmV0Y2hMb2FkTWF0Y2hlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCBhY3RpdmVGZXRjaGVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgbGV0IGJsb2NrZXJGdW5jdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBsZXQgdW5ibG9ja0Jsb2NrZXJIaXN0b3J5VXBkYXRlID0gdm9pZCAwO1xuICBsZXQgcGVuZGluZ1JldmFsaWRhdGlvbkRmZCA9IG51bGw7XG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgdW5saXN0ZW5IaXN0b3J5ID0gaW5pdC5oaXN0b3J5Lmxpc3RlbihcbiAgICAgICh7IGFjdGlvbjogaGlzdG9yeUFjdGlvbiwgbG9jYXRpb24sIGRlbHRhIH0pID0+IHtcbiAgICAgICAgaWYgKHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSkge1xuICAgICAgICAgIHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSgpO1xuICAgICAgICAgIHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICBibG9ja2VyRnVuY3Rpb25zLnNpemUgPT09IDAgfHwgZGVsdGEgIT0gbnVsbCxcbiAgICAgICAgICBcIllvdSBhcmUgdHJ5aW5nIHRvIHVzZSBhIGJsb2NrZXIgb24gYSBQT1AgbmF2aWdhdGlvbiB0byBhIGxvY2F0aW9uIHRoYXQgd2FzIG5vdCBjcmVhdGVkIGJ5IEByZW1peC1ydW4vcm91dGVyLiBUaGlzIHdpbGwgZmFpbCBzaWxlbnRseSBpbiBwcm9kdWN0aW9uLiBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IGFyZSBuYXZpZ2F0aW5nIG91dHNpZGUgdGhlIHJvdXRlciB2aWEgYHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZWAvYHdpbmRvdy5sb2NhdGlvbi5oYXNoYCBpbnN0ZWFkIG9mIHVzaW5nIHJvdXRlciBuYXZpZ2F0aW9uIEFQSXMuICBUaGlzIGNhbiBhbHNvIGhhcHBlbiBpZiB5b3UgYXJlIHVzaW5nIGNyZWF0ZUhhc2hSb3V0ZXIgYW5kIHRoZSB1c2VyIG1hbnVhbGx5IGNoYW5nZXMgdGhlIFVSTC5cIlxuICAgICAgICApO1xuICAgICAgICBsZXQgYmxvY2tlcktleSA9IHNob3VsZEJsb2NrTmF2aWdhdGlvbih7XG4gICAgICAgICAgY3VycmVudExvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgICAgICBuZXh0TG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgIGhpc3RvcnlBY3Rpb25cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChibG9ja2VyS2V5ICYmIGRlbHRhICE9IG51bGwpIHtcbiAgICAgICAgICBsZXQgbmV4dEhpc3RvcnlVcGRhdGVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSA9IHJlc29sdmU7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaW5pdC5oaXN0b3J5LmdvKGRlbHRhICogLTEpO1xuICAgICAgICAgIHVwZGF0ZUJsb2NrZXIoYmxvY2tlcktleSwge1xuICAgICAgICAgICAgc3RhdGU6IFwiYmxvY2tlZFwiLFxuICAgICAgICAgICAgbG9jYXRpb24sXG4gICAgICAgICAgICBwcm9jZWVkKCkge1xuICAgICAgICAgICAgICB1cGRhdGVCbG9ja2VyKGJsb2NrZXJLZXksIHtcbiAgICAgICAgICAgICAgICBzdGF0ZTogXCJwcm9jZWVkaW5nXCIsXG4gICAgICAgICAgICAgICAgcHJvY2VlZDogdm9pZCAwLFxuICAgICAgICAgICAgICAgIHJlc2V0OiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgbG9jYXRpb25cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIG5leHRIaXN0b3J5VXBkYXRlUHJvbWlzZS50aGVuKCgpID0+IGluaXQuaGlzdG9yeS5nbyhkZWx0YSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICBsZXQgYmxvY2tlcnMgPSBuZXcgTWFwKHN0YXRlLmJsb2NrZXJzKTtcbiAgICAgICAgICAgICAgYmxvY2tlcnMuc2V0KGJsb2NrZXJLZXksIElETEVfQkxPQ0tFUik7XG4gICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKHsgYmxvY2tlcnMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGFydE5hdmlnYXRpb24oaGlzdG9yeUFjdGlvbiwgbG9jYXRpb24pO1xuICAgICAgfVxuICAgICk7XG4gICAgaWYgKGlzQnJvd3NlcjIpIHtcbiAgICAgIHJlc3RvcmVBcHBsaWVkVHJhbnNpdGlvbnMocm91dGVyV2luZG93LCBhcHBsaWVkVmlld1RyYW5zaXRpb25zKTtcbiAgICAgIGxldCBfc2F2ZUFwcGxpZWRUcmFuc2l0aW9ucyA9ICgpID0+IHBlcnNpc3RBcHBsaWVkVHJhbnNpdGlvbnMocm91dGVyV2luZG93LCBhcHBsaWVkVmlld1RyYW5zaXRpb25zKTtcbiAgICAgIHJvdXRlcldpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgX3NhdmVBcHBsaWVkVHJhbnNpdGlvbnMpO1xuICAgICAgcmVtb3ZlUGFnZUhpZGVFdmVudExpc3RlbmVyID0gKCkgPT4gcm91dGVyV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwYWdlaGlkZVwiLCBfc2F2ZUFwcGxpZWRUcmFuc2l0aW9ucyk7XG4gICAgfVxuICAgIGlmICghc3RhdGUuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHN0YXJ0TmF2aWdhdGlvbihcIlBPUFwiIC8qIFBvcCAqLywgc3RhdGUubG9jYXRpb24sIHtcbiAgICAgICAgaW5pdGlhbEh5ZHJhdGlvbjogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByb3V0ZXI7XG4gIH1cbiAgZnVuY3Rpb24gZGlzcG9zZSgpIHtcbiAgICBpZiAodW5saXN0ZW5IaXN0b3J5KSB7XG4gICAgICB1bmxpc3Rlbkhpc3RvcnkoKTtcbiAgICB9XG4gICAgaWYgKHJlbW92ZVBhZ2VIaWRlRXZlbnRMaXN0ZW5lcikge1xuICAgICAgcmVtb3ZlUGFnZUhpZGVFdmVudExpc3RlbmVyKCk7XG4gICAgfVxuICAgIHN1YnNjcmliZXJzLmNsZWFyKCk7XG4gICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyICYmIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlci5hYm9ydCgpO1xuICAgIHN0YXRlLmZldGNoZXJzLmZvckVhY2goKF8sIGtleSkgPT4gZGVsZXRlRmV0Y2hlcihrZXkpKTtcbiAgICBzdGF0ZS5ibG9ja2Vycy5mb3JFYWNoKChfLCBrZXkpID0+IGRlbGV0ZUJsb2NrZXIoa2V5KSk7XG4gIH1cbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGZuKSB7XG4gICAgc3Vic2NyaWJlcnMuYWRkKGZuKTtcbiAgICByZXR1cm4gKCkgPT4gc3Vic2NyaWJlcnMuZGVsZXRlKGZuKTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVTdGF0ZShuZXdTdGF0ZSwgb3B0cyA9IHt9KSB7XG4gICAgc3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlXG4gICAgfTtcbiAgICBsZXQgdW5tb3VudGVkRmV0Y2hlcnMgPSBbXTtcbiAgICBsZXQgbW91bnRlZEZldGNoZXJzID0gW107XG4gICAgc3RhdGUuZmV0Y2hlcnMuZm9yRWFjaCgoZmV0Y2hlciwga2V5KSA9PiB7XG4gICAgICBpZiAoZmV0Y2hlci5zdGF0ZSA9PT0gXCJpZGxlXCIpIHtcbiAgICAgICAgaWYgKGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uaGFzKGtleSkpIHtcbiAgICAgICAgICB1bm1vdW50ZWRGZXRjaGVycy5wdXNoKGtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW91bnRlZEZldGNoZXJzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIFsuLi5zdWJzY3JpYmVyc10uZm9yRWFjaChcbiAgICAgIChzdWJzY3JpYmVyKSA9PiBzdWJzY3JpYmVyKHN0YXRlLCB7XG4gICAgICAgIGRlbGV0ZWRGZXRjaGVyczogdW5tb3VudGVkRmV0Y2hlcnMsXG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0czogb3B0cy52aWV3VHJhbnNpdGlvbk9wdHMsXG4gICAgICAgIGZsdXNoU3luYzogb3B0cy5mbHVzaFN5bmMgPT09IHRydWVcbiAgICAgIH0pXG4gICAgKTtcbiAgICB1bm1vdW50ZWRGZXRjaGVycy5mb3JFYWNoKChrZXkpID0+IGRlbGV0ZUZldGNoZXIoa2V5KSk7XG4gICAgbW91bnRlZEZldGNoZXJzLmZvckVhY2goKGtleSkgPT4gc3RhdGUuZmV0Y2hlcnMuZGVsZXRlKGtleSkpO1xuICB9XG4gIGZ1bmN0aW9uIGNvbXBsZXRlTmF2aWdhdGlvbihsb2NhdGlvbiwgbmV3U3RhdGUsIHsgZmx1c2hTeW5jIH0gPSB7fSkge1xuICAgIGxldCBpc0FjdGlvblJlbG9hZCA9IHN0YXRlLmFjdGlvbkRhdGEgIT0gbnVsbCAmJiBzdGF0ZS5uYXZpZ2F0aW9uLmZvcm1NZXRob2QgIT0gbnVsbCAmJiBpc011dGF0aW9uTWV0aG9kKHN0YXRlLm5hdmlnYXRpb24uZm9ybU1ldGhvZCkgJiYgc3RhdGUubmF2aWdhdGlvbi5zdGF0ZSA9PT0gXCJsb2FkaW5nXCIgJiYgbG9jYXRpb24uc3RhdGU/Ll9pc1JlZGlyZWN0ICE9PSB0cnVlO1xuICAgIGxldCBhY3Rpb25EYXRhO1xuICAgIGlmIChuZXdTdGF0ZS5hY3Rpb25EYXRhKSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXMobmV3U3RhdGUuYWN0aW9uRGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICBhY3Rpb25EYXRhID0gbmV3U3RhdGUuYWN0aW9uRGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGlvbkRhdGEgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNBY3Rpb25SZWxvYWQpIHtcbiAgICAgIGFjdGlvbkRhdGEgPSBzdGF0ZS5hY3Rpb25EYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rpb25EYXRhID0gbnVsbDtcbiAgICB9XG4gICAgbGV0IGxvYWRlckRhdGEgPSBuZXdTdGF0ZS5sb2FkZXJEYXRhID8gbWVyZ2VMb2FkZXJEYXRhKFxuICAgICAgc3RhdGUubG9hZGVyRGF0YSxcbiAgICAgIG5ld1N0YXRlLmxvYWRlckRhdGEsXG4gICAgICBuZXdTdGF0ZS5tYXRjaGVzIHx8IFtdLFxuICAgICAgbmV3U3RhdGUuZXJyb3JzXG4gICAgKSA6IHN0YXRlLmxvYWRlckRhdGE7XG4gICAgbGV0IGJsb2NrZXJzID0gc3RhdGUuYmxvY2tlcnM7XG4gICAgaWYgKGJsb2NrZXJzLnNpemUgPiAwKSB7XG4gICAgICBibG9ja2VycyA9IG5ldyBNYXAoYmxvY2tlcnMpO1xuICAgICAgYmxvY2tlcnMuZm9yRWFjaCgoXywgaykgPT4gYmxvY2tlcnMuc2V0KGssIElETEVfQkxPQ0tFUikpO1xuICAgIH1cbiAgICBsZXQgcHJldmVudFNjcm9sbFJlc2V0ID0gcGVuZGluZ1ByZXZlbnRTY3JvbGxSZXNldCA9PT0gdHJ1ZSB8fCBzdGF0ZS5uYXZpZ2F0aW9uLmZvcm1NZXRob2QgIT0gbnVsbCAmJiBpc011dGF0aW9uTWV0aG9kKHN0YXRlLm5hdmlnYXRpb24uZm9ybU1ldGhvZCkgJiYgbG9jYXRpb24uc3RhdGU/Ll9pc1JlZGlyZWN0ICE9PSB0cnVlO1xuICAgIGlmIChpbkZsaWdodERhdGFSb3V0ZXMpIHtcbiAgICAgIGRhdGFSb3V0ZXMgPSBpbkZsaWdodERhdGFSb3V0ZXM7XG4gICAgICBpbkZsaWdodERhdGFSb3V0ZXMgPSB2b2lkIDA7XG4gICAgfVxuICAgIGlmIChpc1VuaW50ZXJydXB0ZWRSZXZhbGlkYXRpb24pIHtcbiAgICB9IGVsc2UgaWYgKHBlbmRpbmdBY3Rpb24gPT09IFwiUE9QXCIgLyogUG9wICovKSB7XG4gICAgfSBlbHNlIGlmIChwZW5kaW5nQWN0aW9uID09PSBcIlBVU0hcIiAvKiBQdXNoICovKSB7XG4gICAgICBpbml0Lmhpc3RvcnkucHVzaChsb2NhdGlvbiwgbG9jYXRpb24uc3RhdGUpO1xuICAgIH0gZWxzZSBpZiAocGVuZGluZ0FjdGlvbiA9PT0gXCJSRVBMQUNFXCIgLyogUmVwbGFjZSAqLykge1xuICAgICAgaW5pdC5oaXN0b3J5LnJlcGxhY2UobG9jYXRpb24sIGxvY2F0aW9uLnN0YXRlKTtcbiAgICB9XG4gICAgbGV0IHZpZXdUcmFuc2l0aW9uT3B0cztcbiAgICBpZiAocGVuZGluZ0FjdGlvbiA9PT0gXCJQT1BcIiAvKiBQb3AgKi8pIHtcbiAgICAgIGxldCBwcmlvclBhdGhzID0gYXBwbGllZFZpZXdUcmFuc2l0aW9ucy5nZXQoc3RhdGUubG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgaWYgKHByaW9yUGF0aHMgJiYgcHJpb3JQYXRocy5oYXMobG9jYXRpb24ucGF0aG5hbWUpKSB7XG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0cyA9IHtcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgICAgIG5leHRMb2NhdGlvbjogbG9jYXRpb25cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoYXBwbGllZFZpZXdUcmFuc2l0aW9ucy5oYXMobG9jYXRpb24ucGF0aG5hbWUpKSB7XG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0cyA9IHtcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgIG5leHRMb2NhdGlvbjogc3RhdGUubG9jYXRpb25cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBlbmRpbmdWaWV3VHJhbnNpdGlvbkVuYWJsZWQpIHtcbiAgICAgIGxldCB0b1BhdGhzID0gYXBwbGllZFZpZXdUcmFuc2l0aW9ucy5nZXQoc3RhdGUubG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgaWYgKHRvUGF0aHMpIHtcbiAgICAgICAgdG9QYXRocy5hZGQobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9QYXRocyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtsb2NhdGlvbi5wYXRobmFtZV0pO1xuICAgICAgICBhcHBsaWVkVmlld1RyYW5zaXRpb25zLnNldChzdGF0ZS5sb2NhdGlvbi5wYXRobmFtZSwgdG9QYXRocyk7XG4gICAgICB9XG4gICAgICB2aWV3VHJhbnNpdGlvbk9wdHMgPSB7XG4gICAgICAgIGN1cnJlbnRMb2NhdGlvbjogc3RhdGUubG9jYXRpb24sXG4gICAgICAgIG5leHRMb2NhdGlvbjogbG9jYXRpb25cbiAgICAgIH07XG4gICAgfVxuICAgIHVwZGF0ZVN0YXRlKFxuICAgICAge1xuICAgICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgICAgLy8gbWF0Y2hlcywgZXJyb3JzLCBmZXRjaGVycyBnbyB0aHJvdWdoIGFzLWlzXG4gICAgICAgIGFjdGlvbkRhdGEsXG4gICAgICAgIGxvYWRlckRhdGEsXG4gICAgICAgIGhpc3RvcnlBY3Rpb246IHBlbmRpbmdBY3Rpb24sXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBpbml0aWFsaXplZDogdHJ1ZSxcbiAgICAgICAgbmF2aWdhdGlvbjogSURMRV9OQVZJR0FUSU9OLFxuICAgICAgICByZXZhbGlkYXRpb246IFwiaWRsZVwiLFxuICAgICAgICByZXN0b3JlU2Nyb2xsUG9zaXRpb246IGdldFNhdmVkU2Nyb2xsUG9zaXRpb24oXG4gICAgICAgICAgbG9jYXRpb24sXG4gICAgICAgICAgbmV3U3RhdGUubWF0Y2hlcyB8fCBzdGF0ZS5tYXRjaGVzXG4gICAgICAgICksXG4gICAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgICAgYmxvY2tlcnNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0cyxcbiAgICAgICAgZmx1c2hTeW5jOiBmbHVzaFN5bmMgPT09IHRydWVcbiAgICAgIH1cbiAgICApO1xuICAgIHBlbmRpbmdBY3Rpb24gPSBcIlBPUFwiIC8qIFBvcCAqLztcbiAgICBwZW5kaW5nUHJldmVudFNjcm9sbFJlc2V0ID0gZmFsc2U7XG4gICAgcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICAgIGlzVW5pbnRlcnJ1cHRlZFJldmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgICBwZW5kaW5nUmV2YWxpZGF0aW9uRGZkPy5yZXNvbHZlKCk7XG4gICAgcGVuZGluZ1JldmFsaWRhdGlvbkRmZCA9IG51bGw7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGUodG8sIG9wdHMpIHtcbiAgICBpZiAodHlwZW9mIHRvID09PSBcIm51bWJlclwiKSB7XG4gICAgICBpbml0Lmhpc3RvcnkuZ28odG8pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVUbyhcbiAgICAgIHN0YXRlLmxvY2F0aW9uLFxuICAgICAgc3RhdGUubWF0Y2hlcyxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgdG8sXG4gICAgICBvcHRzPy5mcm9tUm91dGVJZCxcbiAgICAgIG9wdHM/LnJlbGF0aXZlXG4gICAgKTtcbiAgICBsZXQgeyBwYXRoLCBzdWJtaXNzaW9uLCBlcnJvciB9ID0gbm9ybWFsaXplTmF2aWdhdGVPcHRpb25zKFxuICAgICAgZmFsc2UsXG4gICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgIG9wdHNcbiAgICApO1xuICAgIGxldCBjdXJyZW50TG9jYXRpb24gPSBzdGF0ZS5sb2NhdGlvbjtcbiAgICBsZXQgbmV4dExvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oc3RhdGUubG9jYXRpb24sIHBhdGgsIG9wdHMgJiYgb3B0cy5zdGF0ZSk7XG4gICAgbmV4dExvY2F0aW9uID0ge1xuICAgICAgLi4ubmV4dExvY2F0aW9uLFxuICAgICAgLi4uaW5pdC5oaXN0b3J5LmVuY29kZUxvY2F0aW9uKG5leHRMb2NhdGlvbilcbiAgICB9O1xuICAgIGxldCB1c2VyUmVwbGFjZSA9IG9wdHMgJiYgb3B0cy5yZXBsYWNlICE9IG51bGwgPyBvcHRzLnJlcGxhY2UgOiB2b2lkIDA7XG4gICAgbGV0IGhpc3RvcnlBY3Rpb24gPSBcIlBVU0hcIiAvKiBQdXNoICovO1xuICAgIGlmICh1c2VyUmVwbGFjZSA9PT0gdHJ1ZSkge1xuICAgICAgaGlzdG9yeUFjdGlvbiA9IFwiUkVQTEFDRVwiIC8qIFJlcGxhY2UgKi87XG4gICAgfSBlbHNlIGlmICh1c2VyUmVwbGFjZSA9PT0gZmFsc2UpIHtcbiAgICB9IGVsc2UgaWYgKHN1Ym1pc3Npb24gIT0gbnVsbCAmJiBpc011dGF0aW9uTWV0aG9kKHN1Ym1pc3Npb24uZm9ybU1ldGhvZCkgJiYgc3VibWlzc2lvbi5mb3JtQWN0aW9uID09PSBzdGF0ZS5sb2NhdGlvbi5wYXRobmFtZSArIHN0YXRlLmxvY2F0aW9uLnNlYXJjaCkge1xuICAgICAgaGlzdG9yeUFjdGlvbiA9IFwiUkVQTEFDRVwiIC8qIFJlcGxhY2UgKi87XG4gICAgfVxuICAgIGxldCBwcmV2ZW50U2Nyb2xsUmVzZXQgPSBvcHRzICYmIFwicHJldmVudFNjcm9sbFJlc2V0XCIgaW4gb3B0cyA/IG9wdHMucHJldmVudFNjcm9sbFJlc2V0ID09PSB0cnVlIDogdm9pZCAwO1xuICAgIGxldCBmbHVzaFN5bmMgPSAob3B0cyAmJiBvcHRzLmZsdXNoU3luYykgPT09IHRydWU7XG4gICAgbGV0IGJsb2NrZXJLZXkgPSBzaG91bGRCbG9ja05hdmlnYXRpb24oe1xuICAgICAgY3VycmVudExvY2F0aW9uLFxuICAgICAgbmV4dExvY2F0aW9uLFxuICAgICAgaGlzdG9yeUFjdGlvblxuICAgIH0pO1xuICAgIGlmIChibG9ja2VyS2V5KSB7XG4gICAgICB1cGRhdGVCbG9ja2VyKGJsb2NrZXJLZXksIHtcbiAgICAgICAgc3RhdGU6IFwiYmxvY2tlZFwiLFxuICAgICAgICBsb2NhdGlvbjogbmV4dExvY2F0aW9uLFxuICAgICAgICBwcm9jZWVkKCkge1xuICAgICAgICAgIHVwZGF0ZUJsb2NrZXIoYmxvY2tlcktleSwge1xuICAgICAgICAgICAgc3RhdGU6IFwicHJvY2VlZGluZ1wiLFxuICAgICAgICAgICAgcHJvY2VlZDogdm9pZCAwLFxuICAgICAgICAgICAgcmVzZXQ6IHZvaWQgMCxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBuZXh0TG9jYXRpb25cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBuYXZpZ2F0ZSh0bywgb3B0cyk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgIGxldCBibG9ja2VycyA9IG5ldyBNYXAoc3RhdGUuYmxvY2tlcnMpO1xuICAgICAgICAgIGJsb2NrZXJzLnNldChibG9ja2VyS2V5LCBJRExFX0JMT0NLRVIpO1xuICAgICAgICAgIHVwZGF0ZVN0YXRlKHsgYmxvY2tlcnMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCBzdGFydE5hdmlnYXRpb24oaGlzdG9yeUFjdGlvbiwgbmV4dExvY2F0aW9uLCB7XG4gICAgICBzdWJtaXNzaW9uLFxuICAgICAgLy8gU2VuZCB0aHJvdWdoIHRoZSBmb3JtRGF0YSBzZXJpYWxpemF0aW9uIGVycm9yIGlmIHdlIGhhdmUgb25lIHNvIHdlIGNhblxuICAgICAgLy8gcmVuZGVyIGF0IHRoZSByaWdodCBlcnJvciBib3VuZGFyeSBhZnRlciB3ZSBtYXRjaCByb3V0ZXNcbiAgICAgIHBlbmRpbmdFcnJvcjogZXJyb3IsXG4gICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICByZXBsYWNlOiBvcHRzICYmIG9wdHMucmVwbGFjZSxcbiAgICAgIGVuYWJsZVZpZXdUcmFuc2l0aW9uOiBvcHRzICYmIG9wdHMudmlld1RyYW5zaXRpb24sXG4gICAgICBmbHVzaFN5bmNcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiByZXZhbGlkYXRlKCkge1xuICAgIGlmICghcGVuZGluZ1JldmFsaWRhdGlvbkRmZCkge1xuICAgICAgcGVuZGluZ1JldmFsaWRhdGlvbkRmZCA9IGNyZWF0ZURlZmVycmVkKCk7XG4gICAgfVxuICAgIGludGVycnVwdEFjdGl2ZUxvYWRzKCk7XG4gICAgdXBkYXRlU3RhdGUoeyByZXZhbGlkYXRpb246IFwibG9hZGluZ1wiIH0pO1xuICAgIGxldCBwcm9taXNlID0gcGVuZGluZ1JldmFsaWRhdGlvbkRmZC5wcm9taXNlO1xuICAgIGlmIChzdGF0ZS5uYXZpZ2F0aW9uLnN0YXRlID09PSBcInN1Ym1pdHRpbmdcIikge1xuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5uYXZpZ2F0aW9uLnN0YXRlID09PSBcImlkbGVcIikge1xuICAgICAgc3RhcnROYXZpZ2F0aW9uKHN0YXRlLmhpc3RvcnlBY3Rpb24sIHN0YXRlLmxvY2F0aW9uLCB7XG4gICAgICAgIHN0YXJ0VW5pbnRlcnJ1cHRlZFJldmFsaWRhdGlvbjogdHJ1ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gICAgc3RhcnROYXZpZ2F0aW9uKFxuICAgICAgcGVuZGluZ0FjdGlvbiB8fCBzdGF0ZS5oaXN0b3J5QWN0aW9uLFxuICAgICAgc3RhdGUubmF2aWdhdGlvbi5sb2NhdGlvbixcbiAgICAgIHtcbiAgICAgICAgb3ZlcnJpZGVOYXZpZ2F0aW9uOiBzdGF0ZS5uYXZpZ2F0aW9uLFxuICAgICAgICAvLyBQcm94eSB0aHJvdWdoIGFueSByZW5kaW5nIHZpZXcgdHJhbnNpdGlvblxuICAgICAgICBlbmFibGVWaWV3VHJhbnNpdGlvbjogcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA9PT0gdHJ1ZVxuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gc3RhcnROYXZpZ2F0aW9uKGhpc3RvcnlBY3Rpb24sIGxvY2F0aW9uLCBvcHRzKSB7XG4gICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyICYmIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlci5hYm9ydCgpO1xuICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG51bGw7XG4gICAgcGVuZGluZ0FjdGlvbiA9IGhpc3RvcnlBY3Rpb247XG4gICAgaXNVbmludGVycnVwdGVkUmV2YWxpZGF0aW9uID0gKG9wdHMgJiYgb3B0cy5zdGFydFVuaW50ZXJydXB0ZWRSZXZhbGlkYXRpb24pID09PSB0cnVlO1xuICAgIHNhdmVTY3JvbGxQb3NpdGlvbihzdGF0ZS5sb2NhdGlvbiwgc3RhdGUubWF0Y2hlcyk7XG4gICAgcGVuZGluZ1ByZXZlbnRTY3JvbGxSZXNldCA9IChvcHRzICYmIG9wdHMucHJldmVudFNjcm9sbFJlc2V0KSA9PT0gdHJ1ZTtcbiAgICBwZW5kaW5nVmlld1RyYW5zaXRpb25FbmFibGVkID0gKG9wdHMgJiYgb3B0cy5lbmFibGVWaWV3VHJhbnNpdGlvbikgPT09IHRydWU7XG4gICAgbGV0IHJvdXRlc1RvVXNlID0gaW5GbGlnaHREYXRhUm91dGVzIHx8IGRhdGFSb3V0ZXM7XG4gICAgbGV0IGxvYWRpbmdOYXZpZ2F0aW9uID0gb3B0cyAmJiBvcHRzLm92ZXJyaWRlTmF2aWdhdGlvbjtcbiAgICBsZXQgbWF0Y2hlcyA9IG1hdGNoUm91dGVzKHJvdXRlc1RvVXNlLCBsb2NhdGlvbiwgYmFzZW5hbWUpO1xuICAgIGxldCBmbHVzaFN5bmMgPSAob3B0cyAmJiBvcHRzLmZsdXNoU3luYykgPT09IHRydWU7XG4gICAgbGV0IGZvZ09mV2FyID0gY2hlY2tGb2dPZldhcihtYXRjaGVzLCByb3V0ZXNUb1VzZSwgbG9jYXRpb24ucGF0aG5hbWUpO1xuICAgIGlmIChmb2dPZldhci5hY3RpdmUgJiYgZm9nT2ZXYXIubWF0Y2hlcykge1xuICAgICAgbWF0Y2hlcyA9IGZvZ09mV2FyLm1hdGNoZXM7XG4gICAgfVxuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgbGV0IHsgZXJyb3IsIG5vdEZvdW5kTWF0Y2hlcywgcm91dGUgfSA9IGhhbmRsZU5hdmlnYXRpb25hbDQwNChcbiAgICAgICAgbG9jYXRpb24ucGF0aG5hbWVcbiAgICAgICk7XG4gICAgICBjb21wbGV0ZU5hdmlnYXRpb24oXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgbWF0Y2hlczogbm90Rm91bmRNYXRjaGVzLFxuICAgICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICAgIGVycm9yczoge1xuICAgICAgICAgICAgW3JvdXRlLmlkXTogZXJyb3JcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChzdGF0ZS5pbml0aWFsaXplZCAmJiAhaXNSZXZhbGlkYXRpb25SZXF1aXJlZCAmJiBpc0hhc2hDaGFuZ2VPbmx5KHN0YXRlLmxvY2F0aW9uLCBsb2NhdGlvbikgJiYgIShvcHRzICYmIG9wdHMuc3VibWlzc2lvbiAmJiBpc011dGF0aW9uTWV0aG9kKG9wdHMuc3VibWlzc2lvbi5mb3JtTWV0aG9kKSkpIHtcbiAgICAgIGNvbXBsZXRlTmF2aWdhdGlvbihsb2NhdGlvbiwgeyBtYXRjaGVzIH0sIHsgZmx1c2hTeW5jIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgbGV0IHJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyLnNpZ25hbCxcbiAgICAgIG9wdHMgJiYgb3B0cy5zdWJtaXNzaW9uXG4gICAgKTtcbiAgICBsZXQgcGVuZGluZ0FjdGlvblJlc3VsdDtcbiAgICBpZiAob3B0cyAmJiBvcHRzLnBlbmRpbmdFcnJvcikge1xuICAgICAgcGVuZGluZ0FjdGlvblJlc3VsdCA9IFtcbiAgICAgICAgZmluZE5lYXJlc3RCb3VuZGFyeShtYXRjaGVzKS5yb3V0ZS5pZCxcbiAgICAgICAgeyB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sIGVycm9yOiBvcHRzLnBlbmRpbmdFcnJvciB9XG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAob3B0cyAmJiBvcHRzLnN1Ym1pc3Npb24gJiYgaXNNdXRhdGlvbk1ldGhvZChvcHRzLnN1Ym1pc3Npb24uZm9ybU1ldGhvZCkpIHtcbiAgICAgIGxldCBhY3Rpb25SZXN1bHQgPSBhd2FpdCBoYW5kbGVBY3Rpb24oXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBvcHRzLnN1Ym1pc3Npb24sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGZvZ09mV2FyLmFjdGl2ZSxcbiAgICAgICAgeyByZXBsYWNlOiBvcHRzLnJlcGxhY2UsIGZsdXNoU3luYyB9XG4gICAgICApO1xuICAgICAgaWYgKGFjdGlvblJlc3VsdC5zaG9ydENpcmN1aXRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uUmVzdWx0LnBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgICAgICAgbGV0IFtyb3V0ZUlkLCByZXN1bHRdID0gYWN0aW9uUmVzdWx0LnBlbmRpbmdBY3Rpb25SZXN1bHQ7XG4gICAgICAgIGlmIChpc0Vycm9yUmVzdWx0KHJlc3VsdCkgJiYgaXNSb3V0ZUVycm9yUmVzcG9uc2UocmVzdWx0LmVycm9yKSAmJiByZXN1bHQuZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBudWxsO1xuICAgICAgICAgIGNvbXBsZXRlTmF2aWdhdGlvbihsb2NhdGlvbiwge1xuICAgICAgICAgICAgbWF0Y2hlczogYWN0aW9uUmVzdWx0Lm1hdGNoZXMsXG4gICAgICAgICAgICBsb2FkZXJEYXRhOiB7fSxcbiAgICAgICAgICAgIGVycm9yczoge1xuICAgICAgICAgICAgICBbcm91dGVJZF06IHJlc3VsdC5lcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbWF0Y2hlcyA9IGFjdGlvblJlc3VsdC5tYXRjaGVzIHx8IG1hdGNoZXM7XG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0ID0gYWN0aW9uUmVzdWx0LnBlbmRpbmdBY3Rpb25SZXN1bHQ7XG4gICAgICBsb2FkaW5nTmF2aWdhdGlvbiA9IGdldExvYWRpbmdOYXZpZ2F0aW9uKGxvY2F0aW9uLCBvcHRzLnN1Ym1pc3Npb24pO1xuICAgICAgZmx1c2hTeW5jID0gZmFsc2U7XG4gICAgICBmb2dPZldhci5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgICAgaW5pdC5oaXN0b3J5LFxuICAgICAgICByZXF1ZXN0LnVybCxcbiAgICAgICAgcmVxdWVzdC5zaWduYWxcbiAgICAgICk7XG4gICAgfVxuICAgIGxldCB7XG4gICAgICBzaG9ydENpcmN1aXRlZCxcbiAgICAgIG1hdGNoZXM6IHVwZGF0ZWRNYXRjaGVzLFxuICAgICAgbG9hZGVyRGF0YSxcbiAgICAgIGVycm9yc1xuICAgIH0gPSBhd2FpdCBoYW5kbGVMb2FkZXJzKFxuICAgICAgcmVxdWVzdCxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGZvZ09mV2FyLmFjdGl2ZSxcbiAgICAgIGxvYWRpbmdOYXZpZ2F0aW9uLFxuICAgICAgb3B0cyAmJiBvcHRzLnN1Ym1pc3Npb24sXG4gICAgICBvcHRzICYmIG9wdHMuZmV0Y2hlclN1Ym1pc3Npb24sXG4gICAgICBvcHRzICYmIG9wdHMucmVwbGFjZSxcbiAgICAgIG9wdHMgJiYgb3B0cy5pbml0aWFsSHlkcmF0aW9uID09PSB0cnVlLFxuICAgICAgZmx1c2hTeW5jLFxuICAgICAgcGVuZGluZ0FjdGlvblJlc3VsdFxuICAgICk7XG4gICAgaWYgKHNob3J0Q2lyY3VpdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG51bGw7XG4gICAgY29tcGxldGVOYXZpZ2F0aW9uKGxvY2F0aW9uLCB7XG4gICAgICBtYXRjaGVzOiB1cGRhdGVkTWF0Y2hlcyB8fCBtYXRjaGVzLFxuICAgICAgLi4uZ2V0QWN0aW9uRGF0YUZvckNvbW1pdChwZW5kaW5nQWN0aW9uUmVzdWx0KSxcbiAgICAgIGxvYWRlckRhdGEsXG4gICAgICBlcnJvcnNcbiAgICB9KTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVBY3Rpb24ocmVxdWVzdCwgbG9jYXRpb24sIHN1Ym1pc3Npb24sIG1hdGNoZXMsIGlzRm9nT2ZXYXIsIG9wdHMgPSB7fSkge1xuICAgIGludGVycnVwdEFjdGl2ZUxvYWRzKCk7XG4gICAgbGV0IG5hdmlnYXRpb24gPSBnZXRTdWJtaXR0aW5nTmF2aWdhdGlvbihsb2NhdGlvbiwgc3VibWlzc2lvbik7XG4gICAgdXBkYXRlU3RhdGUoeyBuYXZpZ2F0aW9uIH0sIHsgZmx1c2hTeW5jOiBvcHRzLmZsdXNoU3luYyA9PT0gdHJ1ZSB9KTtcbiAgICBpZiAoaXNGb2dPZldhcikge1xuICAgICAgbGV0IGRpc2NvdmVyUmVzdWx0ID0gYXdhaXQgZGlzY292ZXJSb3V0ZXMoXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICByZXF1ZXN0LnNpZ25hbFxuICAgICAgKTtcbiAgICAgIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgICAgfSBlbHNlIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgbGV0IGJvdW5kYXJ5SWQgPSBmaW5kTmVhcmVzdEJvdW5kYXJ5KGRpc2NvdmVyUmVzdWx0LnBhcnRpYWxNYXRjaGVzKS5yb3V0ZS5pZDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXRjaGVzOiBkaXNjb3ZlclJlc3VsdC5wYXJ0aWFsTWF0Y2hlcyxcbiAgICAgICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbXG4gICAgICAgICAgICBib3VuZGFyeUlkLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgICAgICAgIGVycm9yOiBkaXNjb3ZlclJlc3VsdC5lcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoIWRpc2NvdmVyUmVzdWx0Lm1hdGNoZXMpIHtcbiAgICAgICAgbGV0IHsgbm90Rm91bmRNYXRjaGVzLCBlcnJvciwgcm91dGUgfSA9IGhhbmRsZU5hdmlnYXRpb25hbDQwNChcbiAgICAgICAgICBsb2NhdGlvbi5wYXRobmFtZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hdGNoZXM6IG5vdEZvdW5kTWF0Y2hlcyxcbiAgICAgICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbXG4gICAgICAgICAgICByb3V0ZS5pZCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLFxuICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcmVzdWx0O1xuICAgIGxldCBhY3Rpb25NYXRjaCA9IGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIGxvY2F0aW9uKTtcbiAgICBpZiAoIWFjdGlvbk1hdGNoLnJvdXRlLmFjdGlvbiAmJiAhYWN0aW9uTWF0Y2gucm91dGUubGF6eSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgIGVycm9yOiBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNSwge1xuICAgICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgICAgcGF0aG5hbWU6IGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICAgIHJvdXRlSWQ6IGFjdGlvbk1hdGNoLnJvdXRlLmlkXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGNhbGxEYXRhU3RyYXRlZ3koXG4gICAgICAgIFwiYWN0aW9uXCIsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBbYWN0aW9uTWF0Y2hdLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBudWxsXG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0c1thY3Rpb25NYXRjaC5yb3V0ZS5pZF07XG4gICAgICBpZiAocmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBsZXQgcmVwbGFjZTI7XG4gICAgICBpZiAob3B0cyAmJiBvcHRzLnJlcGxhY2UgIT0gbnVsbCkge1xuICAgICAgICByZXBsYWNlMiA9IG9wdHMucmVwbGFjZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBsb2NhdGlvbjIgPSBub3JtYWxpemVSZWRpcmVjdExvY2F0aW9uKFxuICAgICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmdldChcIkxvY2F0aW9uXCIpLFxuICAgICAgICAgIG5ldyBVUkwocmVxdWVzdC51cmwpLFxuICAgICAgICAgIGJhc2VuYW1lXG4gICAgICAgICk7XG4gICAgICAgIHJlcGxhY2UyID0gbG9jYXRpb24yID09PSBzdGF0ZS5sb2NhdGlvbi5wYXRobmFtZSArIHN0YXRlLmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKHJlcXVlc3QsIHJlc3VsdCwgdHJ1ZSwge1xuICAgICAgICBzdWJtaXNzaW9uLFxuICAgICAgICByZXBsYWNlOiByZXBsYWNlMlxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBpZiAoaXNFcnJvclJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBsZXQgYm91bmRhcnlNYXRjaCA9IGZpbmROZWFyZXN0Qm91bmRhcnkobWF0Y2hlcywgYWN0aW9uTWF0Y2gucm91dGUuaWQpO1xuICAgICAgaWYgKChvcHRzICYmIG9wdHMucmVwbGFjZSkgIT09IHRydWUpIHtcbiAgICAgICAgcGVuZGluZ0FjdGlvbiA9IFwiUFVTSFwiIC8qIFB1c2ggKi87XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbYm91bmRhcnlNYXRjaC5yb3V0ZS5pZCwgcmVzdWx0XVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoZXMsXG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbYWN0aW9uTWF0Y2gucm91dGUuaWQsIHJlc3VsdF1cbiAgICB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUxvYWRlcnMocmVxdWVzdCwgbG9jYXRpb24sIG1hdGNoZXMsIGlzRm9nT2ZXYXIsIG92ZXJyaWRlTmF2aWdhdGlvbiwgc3VibWlzc2lvbiwgZmV0Y2hlclN1Ym1pc3Npb24sIHJlcGxhY2UyLCBpbml0aWFsSHlkcmF0aW9uLCBmbHVzaFN5bmMsIHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgICBsZXQgbG9hZGluZ05hdmlnYXRpb24gPSBvdmVycmlkZU5hdmlnYXRpb24gfHwgZ2V0TG9hZGluZ05hdmlnYXRpb24obG9jYXRpb24sIHN1Ym1pc3Npb24pO1xuICAgIGxldCBhY3RpdmVTdWJtaXNzaW9uID0gc3VibWlzc2lvbiB8fCBmZXRjaGVyU3VibWlzc2lvbiB8fCBnZXRTdWJtaXNzaW9uRnJvbU5hdmlnYXRpb24obG9hZGluZ05hdmlnYXRpb24pO1xuICAgIGxldCBzaG91bGRVcGRhdGVOYXZpZ2F0aW9uU3RhdGUgPSAhaXNVbmludGVycnVwdGVkUmV2YWxpZGF0aW9uICYmICFpbml0aWFsSHlkcmF0aW9uO1xuICAgIGlmIChpc0ZvZ09mV2FyKSB7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlTmF2aWdhdGlvblN0YXRlKSB7XG4gICAgICAgIGxldCBhY3Rpb25EYXRhID0gZ2V0VXBkYXRlZEFjdGlvbkRhdGEocGVuZGluZ0FjdGlvblJlc3VsdCk7XG4gICAgICAgIHVwZGF0ZVN0YXRlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hdmlnYXRpb246IGxvYWRpbmdOYXZpZ2F0aW9uLFxuICAgICAgICAgICAgLi4uYWN0aW9uRGF0YSAhPT0gdm9pZCAwID8geyBhY3Rpb25EYXRhIH0gOiB7fVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmx1c2hTeW5jXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgbGV0IGRpc2NvdmVyUmVzdWx0ID0gYXdhaXQgZGlzY292ZXJSb3V0ZXMoXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICByZXF1ZXN0LnNpZ25hbFxuICAgICAgKTtcbiAgICAgIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgICAgfSBlbHNlIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgbGV0IGJvdW5kYXJ5SWQgPSBmaW5kTmVhcmVzdEJvdW5kYXJ5KGRpc2NvdmVyUmVzdWx0LnBhcnRpYWxNYXRjaGVzKS5yb3V0ZS5pZDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXRjaGVzOiBkaXNjb3ZlclJlc3VsdC5wYXJ0aWFsTWF0Y2hlcyxcbiAgICAgICAgICBsb2FkZXJEYXRhOiB7fSxcbiAgICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICAgIFtib3VuZGFyeUlkXTogZGlzY292ZXJSZXN1bHQuZXJyb3JcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKCFkaXNjb3ZlclJlc3VsdC5tYXRjaGVzKSB7XG4gICAgICAgIGxldCB7IGVycm9yLCBub3RGb3VuZE1hdGNoZXMsIHJvdXRlIH0gPSBoYW5kbGVOYXZpZ2F0aW9uYWw0MDQoXG4gICAgICAgICAgbG9jYXRpb24ucGF0aG5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXRjaGVzOiBub3RGb3VuZE1hdGNoZXMsXG4gICAgICAgICAgbG9hZGVyRGF0YToge30sXG4gICAgICAgICAgZXJyb3JzOiB7XG4gICAgICAgICAgICBbcm91dGUuaWRdOiBlcnJvclxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICBsZXQgW21hdGNoZXNUb0xvYWQsIHJldmFsaWRhdGluZ0ZldGNoZXJzXSA9IGdldE1hdGNoZXNUb0xvYWQoXG4gICAgICBpbml0Lmhpc3RvcnksXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBhY3RpdmVTdWJtaXNzaW9uLFxuICAgICAgbG9jYXRpb24sXG4gICAgICBpbml0aWFsSHlkcmF0aW9uID09PSB0cnVlLFxuICAgICAgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCxcbiAgICAgIGNhbmNlbGxlZEZldGNoZXJMb2FkcyxcbiAgICAgIGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24sXG4gICAgICBmZXRjaExvYWRNYXRjaGVzLFxuICAgICAgZmV0Y2hSZWRpcmVjdElkcyxcbiAgICAgIHJvdXRlc1RvVXNlLFxuICAgICAgYmFzZW5hbWUsXG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0XG4gICAgKTtcbiAgICBwZW5kaW5nTmF2aWdhdGlvbkxvYWRJZCA9ICsraW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGlmIChtYXRjaGVzVG9Mb2FkLmxlbmd0aCA9PT0gMCAmJiByZXZhbGlkYXRpbmdGZXRjaGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxldCB1cGRhdGVkRmV0Y2hlcnMyID0gbWFya0ZldGNoUmVkaXJlY3RzRG9uZSgpO1xuICAgICAgY29tcGxldGVOYXZpZ2F0aW9uKFxuICAgICAgICBsb2NhdGlvbixcbiAgICAgICAge1xuICAgICAgICAgIG1hdGNoZXMsXG4gICAgICAgICAgbG9hZGVyRGF0YToge30sXG4gICAgICAgICAgLy8gQ29tbWl0IHBlbmRpbmcgZXJyb3IgaWYgd2UncmUgc2hvcnQgY2lyY3VpdGluZ1xuICAgICAgICAgIGVycm9yczogcGVuZGluZ0FjdGlvblJlc3VsdCAmJiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8geyBbcGVuZGluZ0FjdGlvblJlc3VsdFswXV06IHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0uZXJyb3IgfSA6IG51bGwsXG4gICAgICAgICAgLi4uZ2V0QWN0aW9uRGF0YUZvckNvbW1pdChwZW5kaW5nQWN0aW9uUmVzdWx0KSxcbiAgICAgICAgICAuLi51cGRhdGVkRmV0Y2hlcnMyID8geyBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycykgfSA6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICAgICk7XG4gICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBpZiAoc2hvdWxkVXBkYXRlTmF2aWdhdGlvblN0YXRlKSB7XG4gICAgICBsZXQgdXBkYXRlcyA9IHt9O1xuICAgICAgaWYgKCFpc0ZvZ09mV2FyKSB7XG4gICAgICAgIHVwZGF0ZXMubmF2aWdhdGlvbiA9IGxvYWRpbmdOYXZpZ2F0aW9uO1xuICAgICAgICBsZXQgYWN0aW9uRGF0YSA9IGdldFVwZGF0ZWRBY3Rpb25EYXRhKHBlbmRpbmdBY3Rpb25SZXN1bHQpO1xuICAgICAgICBpZiAoYWN0aW9uRGF0YSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgdXBkYXRlcy5hY3Rpb25EYXRhID0gYWN0aW9uRGF0YTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJldmFsaWRhdGluZ0ZldGNoZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdXBkYXRlcy5mZXRjaGVycyA9IGdldFVwZGF0ZWRSZXZhbGlkYXRpbmdGZXRjaGVycyhyZXZhbGlkYXRpbmdGZXRjaGVycyk7XG4gICAgICB9XG4gICAgICB1cGRhdGVTdGF0ZSh1cGRhdGVzLCB7IGZsdXNoU3luYyB9KTtcbiAgICB9XG4gICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZm9yRWFjaCgocmYpID0+IHtcbiAgICAgIGFib3J0RmV0Y2hlcihyZi5rZXkpO1xuICAgICAgaWYgKHJmLmNvbnRyb2xsZXIpIHtcbiAgICAgICAgZmV0Y2hDb250cm9sbGVycy5zZXQocmYua2V5LCByZi5jb250cm9sbGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgYWJvcnRQZW5kaW5nRmV0Y2hSZXZhbGlkYXRpb25zID0gKCkgPT4gcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZm9yRWFjaCgoZikgPT4gYWJvcnRGZXRjaGVyKGYua2V5KSk7XG4gICAgaWYgKHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlcikge1xuICAgICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBcImFib3J0XCIsXG4gICAgICAgIGFib3J0UGVuZGluZ0ZldGNoUmV2YWxpZGF0aW9uc1xuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IHsgbG9hZGVyUmVzdWx0cywgZmV0Y2hlclJlc3VsdHMgfSA9IGF3YWl0IGNhbGxMb2FkZXJzQW5kTWF5YmVSZXNvbHZlRGF0YShcbiAgICAgIHN0YXRlLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIG1hdGNoZXNUb0xvYWQsXG4gICAgICByZXZhbGlkYXRpbmdGZXRjaGVycyxcbiAgICAgIHJlcXVlc3RcbiAgICApO1xuICAgIGlmIChyZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBpZiAocGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyKSB7XG4gICAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgIFwiYWJvcnRcIixcbiAgICAgICAgYWJvcnRQZW5kaW5nRmV0Y2hSZXZhbGlkYXRpb25zXG4gICAgICApO1xuICAgIH1cbiAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyZikgPT4gZmV0Y2hDb250cm9sbGVycy5kZWxldGUocmYua2V5KSk7XG4gICAgbGV0IHJlZGlyZWN0MiA9IGZpbmRSZWRpcmVjdChsb2FkZXJSZXN1bHRzKTtcbiAgICBpZiAocmVkaXJlY3QyKSB7XG4gICAgICBhd2FpdCBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihyZXF1ZXN0LCByZWRpcmVjdDIucmVzdWx0LCB0cnVlLCB7XG4gICAgICAgIHJlcGxhY2U6IHJlcGxhY2UyXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgfVxuICAgIHJlZGlyZWN0MiA9IGZpbmRSZWRpcmVjdChmZXRjaGVyUmVzdWx0cyk7XG4gICAgaWYgKHJlZGlyZWN0Mikge1xuICAgICAgZmV0Y2hSZWRpcmVjdElkcy5hZGQocmVkaXJlY3QyLmtleSk7XG4gICAgICBhd2FpdCBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihyZXF1ZXN0LCByZWRpcmVjdDIucmVzdWx0LCB0cnVlLCB7XG4gICAgICAgIHJlcGxhY2U6IHJlcGxhY2UyXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgfVxuICAgIGxldCB7IGxvYWRlckRhdGEsIGVycm9ycyB9ID0gcHJvY2Vzc0xvYWRlckRhdGEoXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBsb2FkZXJSZXN1bHRzLFxuICAgICAgcGVuZGluZ0FjdGlvblJlc3VsdCxcbiAgICAgIHJldmFsaWRhdGluZ0ZldGNoZXJzLFxuICAgICAgZmV0Y2hlclJlc3VsdHNcbiAgICApO1xuICAgIGlmIChpbml0aWFsSHlkcmF0aW9uICYmIHN0YXRlLmVycm9ycykge1xuICAgICAgZXJyb3JzID0geyAuLi5zdGF0ZS5lcnJvcnMsIC4uLmVycm9ycyB9O1xuICAgIH1cbiAgICBsZXQgdXBkYXRlZEZldGNoZXJzID0gbWFya0ZldGNoUmVkaXJlY3RzRG9uZSgpO1xuICAgIGxldCBkaWRBYm9ydEZldGNoTG9hZHMgPSBhYm9ydFN0YWxlRmV0Y2hMb2FkcyhwZW5kaW5nTmF2aWdhdGlvbkxvYWRJZCk7XG4gICAgbGV0IHNob3VsZFVwZGF0ZUZldGNoZXJzID0gdXBkYXRlZEZldGNoZXJzIHx8IGRpZEFib3J0RmV0Y2hMb2FkcyB8fCByZXZhbGlkYXRpbmdGZXRjaGVycy5sZW5ndGggPiAwO1xuICAgIHJldHVybiB7XG4gICAgICBtYXRjaGVzLFxuICAgICAgbG9hZGVyRGF0YSxcbiAgICAgIGVycm9ycyxcbiAgICAgIC4uLnNob3VsZFVwZGF0ZUZldGNoZXJzID8geyBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycykgfSA6IHt9XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBnZXRVcGRhdGVkQWN0aW9uRGF0YShwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgaWYgKHBlbmRpbmdBY3Rpb25SZXN1bHQgJiYgIWlzRXJyb3JSZXN1bHQocGVuZGluZ0FjdGlvblJlc3VsdFsxXSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtwZW5kaW5nQWN0aW9uUmVzdWx0WzBdXTogcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5kYXRhXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoc3RhdGUuYWN0aW9uRGF0YSkge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHN0YXRlLmFjdGlvbkRhdGEpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5hY3Rpb25EYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBnZXRVcGRhdGVkUmV2YWxpZGF0aW5nRmV0Y2hlcnMocmV2YWxpZGF0aW5nRmV0Y2hlcnMpIHtcbiAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyZikgPT4ge1xuICAgICAgbGV0IGZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQocmYua2V5KTtcbiAgICAgIGxldCByZXZhbGlkYXRpbmdGZXRjaGVyID0gZ2V0TG9hZGluZ0ZldGNoZXIoXG4gICAgICAgIHZvaWQgMCxcbiAgICAgICAgZmV0Y2hlciA/IGZldGNoZXIuZGF0YSA6IHZvaWQgMFxuICAgICAgKTtcbiAgICAgIHN0YXRlLmZldGNoZXJzLnNldChyZi5rZXksIHJldmFsaWRhdGluZ0ZldGNoZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBmZXRjaDIoa2V5LCByb3V0ZUlkLCBocmVmLCBvcHRzKSB7XG4gICAgYWJvcnRGZXRjaGVyKGtleSk7XG4gICAgbGV0IGZsdXNoU3luYyA9IChvcHRzICYmIG9wdHMuZmx1c2hTeW5jKSA9PT0gdHJ1ZTtcbiAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICBsZXQgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVUbyhcbiAgICAgIHN0YXRlLmxvY2F0aW9uLFxuICAgICAgc3RhdGUubWF0Y2hlcyxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgaHJlZixcbiAgICAgIHJvdXRlSWQsXG4gICAgICBvcHRzPy5yZWxhdGl2ZVxuICAgICk7XG4gICAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhyb3V0ZXNUb1VzZSwgbm9ybWFsaXplZFBhdGgsIGJhc2VuYW1lKTtcbiAgICBsZXQgZm9nT2ZXYXIgPSBjaGVja0ZvZ09mV2FyKG1hdGNoZXMsIHJvdXRlc1RvVXNlLCBub3JtYWxpemVkUGF0aCk7XG4gICAgaWYgKGZvZ09mV2FyLmFjdGl2ZSAmJiBmb2dPZldhci5tYXRjaGVzKSB7XG4gICAgICBtYXRjaGVzID0gZm9nT2ZXYXIubWF0Y2hlcztcbiAgICB9XG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICBzZXRGZXRjaGVyRXJyb3IoXG4gICAgICAgIGtleSxcbiAgICAgICAgcm91dGVJZCxcbiAgICAgICAgZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHsgcGF0aG5hbWU6IG5vcm1hbGl6ZWRQYXRoIH0pLFxuICAgICAgICB7IGZsdXNoU3luYyB9XG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgeyBwYXRoLCBzdWJtaXNzaW9uLCBlcnJvciB9ID0gbm9ybWFsaXplTmF2aWdhdGVPcHRpb25zKFxuICAgICAgdHJ1ZSxcbiAgICAgIG5vcm1hbGl6ZWRQYXRoLFxuICAgICAgb3B0c1xuICAgICk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBlcnJvciwgeyBmbHVzaFN5bmMgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBtYXRjaCA9IGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIHBhdGgpO1xuICAgIGxldCBwcmV2ZW50U2Nyb2xsUmVzZXQgPSAob3B0cyAmJiBvcHRzLnByZXZlbnRTY3JvbGxSZXNldCkgPT09IHRydWU7XG4gICAgaWYgKHN1Ym1pc3Npb24gJiYgaXNNdXRhdGlvbk1ldGhvZChzdWJtaXNzaW9uLmZvcm1NZXRob2QpKSB7XG4gICAgICBhd2FpdCBoYW5kbGVGZXRjaGVyQWN0aW9uKFxuICAgICAgICBrZXksXG4gICAgICAgIHJvdXRlSWQsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG1hdGNoLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBmb2dPZldhci5hY3RpdmUsXG4gICAgICAgIGZsdXNoU3luYyxcbiAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgICBzdWJtaXNzaW9uXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmZXRjaExvYWRNYXRjaGVzLnNldChrZXksIHsgcm91dGVJZCwgcGF0aCB9KTtcbiAgICBhd2FpdCBoYW5kbGVGZXRjaGVyTG9hZGVyKFxuICAgICAga2V5LFxuICAgICAgcm91dGVJZCxcbiAgICAgIHBhdGgsXG4gICAgICBtYXRjaCxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBmb2dPZldhci5hY3RpdmUsXG4gICAgICBmbHVzaFN5bmMsXG4gICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICBzdWJtaXNzaW9uXG4gICAgKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVGZXRjaGVyQWN0aW9uKGtleSwgcm91dGVJZCwgcGF0aCwgbWF0Y2gsIHJlcXVlc3RNYXRjaGVzLCBpc0ZvZ09mV2FyLCBmbHVzaFN5bmMsIHByZXZlbnRTY3JvbGxSZXNldCwgc3VibWlzc2lvbikge1xuICAgIGludGVycnVwdEFjdGl2ZUxvYWRzKCk7XG4gICAgZmV0Y2hMb2FkTWF0Y2hlcy5kZWxldGUoa2V5KTtcbiAgICBmdW5jdGlvbiBkZXRlY3RBbmRIYW5kbGU0MDVFcnJvcihtKSB7XG4gICAgICBpZiAoIW0ucm91dGUuYWN0aW9uICYmICFtLnJvdXRlLmxhenkpIHtcbiAgICAgICAgbGV0IGVycm9yID0gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDUsIHtcbiAgICAgICAgICBtZXRob2Q6IHN1Ym1pc3Npb24uZm9ybU1ldGhvZCxcbiAgICAgICAgICBwYXRobmFtZTogcGF0aCxcbiAgICAgICAgICByb3V0ZUlkXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBlcnJvciwgeyBmbHVzaFN5bmMgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWlzRm9nT2ZXYXIgJiYgZGV0ZWN0QW5kSGFuZGxlNDA1RXJyb3IobWF0Y2gpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBleGlzdGluZ0ZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICB1cGRhdGVGZXRjaGVyU3RhdGUoa2V5LCBnZXRTdWJtaXR0aW5nRmV0Y2hlcihzdWJtaXNzaW9uLCBleGlzdGluZ0ZldGNoZXIpLCB7XG4gICAgICBmbHVzaFN5bmNcbiAgICB9KTtcbiAgICBsZXQgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGxldCBmZXRjaFJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIHBhdGgsXG4gICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgc3VibWlzc2lvblxuICAgICk7XG4gICAgaWYgKGlzRm9nT2ZXYXIpIHtcbiAgICAgIGxldCBkaXNjb3ZlclJlc3VsdCA9IGF3YWl0IGRpc2NvdmVyUm91dGVzKFxuICAgICAgICByZXF1ZXN0TWF0Y2hlcyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZmV0Y2hSZXF1ZXN0LnNpZ25hbFxuICAgICAgKTtcbiAgICAgIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGRpc2NvdmVyUmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBkaXNjb3ZlclJlc3VsdC5lcnJvciwgeyBmbHVzaFN5bmMgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoIWRpc2NvdmVyUmVzdWx0Lm1hdGNoZXMpIHtcbiAgICAgICAgc2V0RmV0Y2hlckVycm9yKFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICByb3V0ZUlkLFxuICAgICAgICAgIGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7IHBhdGhuYW1lOiBwYXRoIH0pLFxuICAgICAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxdWVzdE1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgICBtYXRjaCA9IGdldFRhcmdldE1hdGNoKHJlcXVlc3RNYXRjaGVzLCBwYXRoKTtcbiAgICAgICAgaWYgKGRldGVjdEFuZEhhbmRsZTQwNUVycm9yKG1hdGNoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmZXRjaENvbnRyb2xsZXJzLnNldChrZXksIGFib3J0Q29udHJvbGxlcik7XG4gICAgbGV0IG9yaWdpbmF0aW5nTG9hZElkID0gaW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGxldCBhY3Rpb25SZXN1bHRzID0gYXdhaXQgY2FsbERhdGFTdHJhdGVneShcbiAgICAgIFwiYWN0aW9uXCIsXG4gICAgICBzdGF0ZSxcbiAgICAgIGZldGNoUmVxdWVzdCxcbiAgICAgIFttYXRjaF0sXG4gICAgICByZXF1ZXN0TWF0Y2hlcyxcbiAgICAgIGtleVxuICAgICk7XG4gICAgbGV0IGFjdGlvblJlc3VsdCA9IGFjdGlvblJlc3VsdHNbbWF0Y2gucm91dGUuaWRdO1xuICAgIGlmIChmZXRjaFJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIGlmIChmZXRjaENvbnRyb2xsZXJzLmdldChrZXkpID09PSBhYm9ydENvbnRyb2xsZXIpIHtcbiAgICAgICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uaGFzKGtleSkpIHtcbiAgICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KGFjdGlvblJlc3VsdCkgfHwgaXNFcnJvclJlc3VsdChhY3Rpb25SZXN1bHQpKSB7XG4gICAgICAgIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGdldERvbmVGZXRjaGVyKHZvaWQgMCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KGFjdGlvblJlc3VsdCkpIHtcbiAgICAgICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICAgICAgaWYgKHBlbmRpbmdOYXZpZ2F0aW9uTG9hZElkID4gb3JpZ2luYXRpbmdMb2FkSWQpIHtcbiAgICAgICAgICB1cGRhdGVGZXRjaGVyU3RhdGUoa2V5LCBnZXREb25lRmV0Y2hlcih2b2lkIDApKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmV0Y2hSZWRpcmVjdElkcy5hZGQoa2V5KTtcbiAgICAgICAgICB1cGRhdGVGZXRjaGVyU3RhdGUoa2V5LCBnZXRMb2FkaW5nRmV0Y2hlcihzdWJtaXNzaW9uKSk7XG4gICAgICAgICAgcmV0dXJuIHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKGZldGNoUmVxdWVzdCwgYWN0aW9uUmVzdWx0LCBmYWxzZSwge1xuICAgICAgICAgICAgZmV0Y2hlclN1Ym1pc3Npb246IHN1Ym1pc3Npb24sXG4gICAgICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzRXJyb3JSZXN1bHQoYWN0aW9uUmVzdWx0KSkge1xuICAgICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBhY3Rpb25SZXN1bHQuZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBuZXh0TG9jYXRpb24gPSBzdGF0ZS5uYXZpZ2F0aW9uLmxvY2F0aW9uIHx8IHN0YXRlLmxvY2F0aW9uO1xuICAgIGxldCByZXZhbGlkYXRpb25SZXF1ZXN0ID0gY3JlYXRlQ2xpZW50U2lkZVJlcXVlc3QoXG4gICAgICBpbml0Lmhpc3RvcnksXG4gICAgICBuZXh0TG9jYXRpb24sXG4gICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsXG4gICAgKTtcbiAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICBsZXQgbWF0Y2hlcyA9IHN0YXRlLm5hdmlnYXRpb24uc3RhdGUgIT09IFwiaWRsZVwiID8gbWF0Y2hSb3V0ZXMocm91dGVzVG9Vc2UsIHN0YXRlLm5hdmlnYXRpb24ubG9jYXRpb24sIGJhc2VuYW1lKSA6IHN0YXRlLm1hdGNoZXM7XG4gICAgaW52YXJpYW50KG1hdGNoZXMsIFwiRGlkbid0IGZpbmQgYW55IG1hdGNoZXMgYWZ0ZXIgZmV0Y2hlciBhY3Rpb25cIik7XG4gICAgbGV0IGxvYWRJZCA9ICsraW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGZldGNoUmVsb2FkSWRzLnNldChrZXksIGxvYWRJZCk7XG4gICAgbGV0IGxvYWRGZXRjaGVyID0gZ2V0TG9hZGluZ0ZldGNoZXIoc3VibWlzc2lvbiwgYWN0aW9uUmVzdWx0LmRhdGEpO1xuICAgIHN0YXRlLmZldGNoZXJzLnNldChrZXksIGxvYWRGZXRjaGVyKTtcbiAgICBsZXQgW21hdGNoZXNUb0xvYWQsIHJldmFsaWRhdGluZ0ZldGNoZXJzXSA9IGdldE1hdGNoZXNUb0xvYWQoXG4gICAgICBpbml0Lmhpc3RvcnksXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBzdWJtaXNzaW9uLFxuICAgICAgbmV4dExvY2F0aW9uLFxuICAgICAgZmFsc2UsXG4gICAgICBpc1JldmFsaWRhdGlvblJlcXVpcmVkLFxuICAgICAgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLFxuICAgICAgZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbixcbiAgICAgIGZldGNoTG9hZE1hdGNoZXMsXG4gICAgICBmZXRjaFJlZGlyZWN0SWRzLFxuICAgICAgcm91dGVzVG9Vc2UsXG4gICAgICBiYXNlbmFtZSxcbiAgICAgIFttYXRjaC5yb3V0ZS5pZCwgYWN0aW9uUmVzdWx0XVxuICAgICk7XG4gICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZmlsdGVyKChyZikgPT4gcmYua2V5ICE9PSBrZXkpLmZvckVhY2goKHJmKSA9PiB7XG4gICAgICBsZXQgc3RhbGVLZXkgPSByZi5rZXk7XG4gICAgICBsZXQgZXhpc3RpbmdGZXRjaGVyMiA9IHN0YXRlLmZldGNoZXJzLmdldChzdGFsZUtleSk7XG4gICAgICBsZXQgcmV2YWxpZGF0aW5nRmV0Y2hlciA9IGdldExvYWRpbmdGZXRjaGVyKFxuICAgICAgICB2b2lkIDAsXG4gICAgICAgIGV4aXN0aW5nRmV0Y2hlcjIgPyBleGlzdGluZ0ZldGNoZXIyLmRhdGEgOiB2b2lkIDBcbiAgICAgICk7XG4gICAgICBzdGF0ZS5mZXRjaGVycy5zZXQoc3RhbGVLZXksIHJldmFsaWRhdGluZ0ZldGNoZXIpO1xuICAgICAgYWJvcnRGZXRjaGVyKHN0YWxlS2V5KTtcbiAgICAgIGlmIChyZi5jb250cm9sbGVyKSB7XG4gICAgICAgIGZldGNoQ29udHJvbGxlcnMuc2V0KHN0YWxlS2V5LCByZi5jb250cm9sbGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB1cGRhdGVTdGF0ZSh7IGZldGNoZXJzOiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKSB9KTtcbiAgICBsZXQgYWJvcnRQZW5kaW5nRmV0Y2hSZXZhbGlkYXRpb25zID0gKCkgPT4gcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZm9yRWFjaCgocmYpID0+IGFib3J0RmV0Y2hlcihyZi5rZXkpKTtcbiAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImFib3J0XCIsXG4gICAgICBhYm9ydFBlbmRpbmdGZXRjaFJldmFsaWRhdGlvbnNcbiAgICApO1xuICAgIGxldCB7IGxvYWRlclJlc3VsdHMsIGZldGNoZXJSZXN1bHRzIH0gPSBhd2FpdCBjYWxsTG9hZGVyc0FuZE1heWJlUmVzb2x2ZURhdGEoXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBtYXRjaGVzVG9Mb2FkLFxuICAgICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMsXG4gICAgICByZXZhbGlkYXRpb25SZXF1ZXN0XG4gICAgKTtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFib3J0Q29udHJvbGxlci5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgIFwiYWJvcnRcIixcbiAgICAgIGFib3J0UGVuZGluZ0ZldGNoUmV2YWxpZGF0aW9uc1xuICAgICk7XG4gICAgZmV0Y2hSZWxvYWRJZHMuZGVsZXRlKGtleSk7XG4gICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyKSA9PiBmZXRjaENvbnRyb2xsZXJzLmRlbGV0ZShyLmtleSkpO1xuICAgIGxldCByZWRpcmVjdDIgPSBmaW5kUmVkaXJlY3QobG9hZGVyUmVzdWx0cyk7XG4gICAgaWYgKHJlZGlyZWN0Mikge1xuICAgICAgcmV0dXJuIHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKFxuICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LFxuICAgICAgICByZWRpcmVjdDIucmVzdWx0LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgeyBwcmV2ZW50U2Nyb2xsUmVzZXQgfVxuICAgICAgKTtcbiAgICB9XG4gICAgcmVkaXJlY3QyID0gZmluZFJlZGlyZWN0KGZldGNoZXJSZXN1bHRzKTtcbiAgICBpZiAocmVkaXJlY3QyKSB7XG4gICAgICBmZXRjaFJlZGlyZWN0SWRzLmFkZChyZWRpcmVjdDIua2V5KTtcbiAgICAgIHJldHVybiBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihcbiAgICAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdCxcbiAgICAgICAgcmVkaXJlY3QyLnJlc3VsdCxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHsgcHJldmVudFNjcm9sbFJlc2V0IH1cbiAgICAgICk7XG4gICAgfVxuICAgIGxldCB7IGxvYWRlckRhdGEsIGVycm9ycyB9ID0gcHJvY2Vzc0xvYWRlckRhdGEoXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBsb2FkZXJSZXN1bHRzLFxuICAgICAgdm9pZCAwLFxuICAgICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMsXG4gICAgICBmZXRjaGVyUmVzdWx0c1xuICAgICk7XG4gICAgaWYgKHN0YXRlLmZldGNoZXJzLmhhcyhrZXkpKSB7XG4gICAgICBsZXQgZG9uZUZldGNoZXIgPSBnZXREb25lRmV0Y2hlcihhY3Rpb25SZXN1bHQuZGF0YSk7XG4gICAgICBzdGF0ZS5mZXRjaGVycy5zZXQoa2V5LCBkb25lRmV0Y2hlcik7XG4gICAgfVxuICAgIGFib3J0U3RhbGVGZXRjaExvYWRzKGxvYWRJZCk7XG4gICAgaWYgKHN0YXRlLm5hdmlnYXRpb24uc3RhdGUgPT09IFwibG9hZGluZ1wiICYmIGxvYWRJZCA+IHBlbmRpbmdOYXZpZ2F0aW9uTG9hZElkKSB7XG4gICAgICBpbnZhcmlhbnQocGVuZGluZ0FjdGlvbiwgXCJFeHBlY3RlZCBwZW5kaW5nIGFjdGlvblwiKTtcbiAgICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciAmJiBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgIGNvbXBsZXRlTmF2aWdhdGlvbihzdGF0ZS5uYXZpZ2F0aW9uLmxvY2F0aW9uLCB7XG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGxvYWRlckRhdGEsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZmV0Y2hlcnM6IG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdXBkYXRlU3RhdGUoe1xuICAgICAgICBlcnJvcnMsXG4gICAgICAgIGxvYWRlckRhdGE6IG1lcmdlTG9hZGVyRGF0YShcbiAgICAgICAgICBzdGF0ZS5sb2FkZXJEYXRhLFxuICAgICAgICAgIGxvYWRlckRhdGEsXG4gICAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgICBlcnJvcnNcbiAgICAgICAgKSxcbiAgICAgICAgZmV0Y2hlcnM6IG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpXG4gICAgICB9KTtcbiAgICAgIGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gaGFuZGxlRmV0Y2hlckxvYWRlcihrZXksIHJvdXRlSWQsIHBhdGgsIG1hdGNoLCBtYXRjaGVzLCBpc0ZvZ09mV2FyLCBmbHVzaFN5bmMsIHByZXZlbnRTY3JvbGxSZXNldCwgc3VibWlzc2lvbikge1xuICAgIGxldCBleGlzdGluZ0ZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICB1cGRhdGVGZXRjaGVyU3RhdGUoXG4gICAgICBrZXksXG4gICAgICBnZXRMb2FkaW5nRmV0Y2hlcihcbiAgICAgICAgc3VibWlzc2lvbixcbiAgICAgICAgZXhpc3RpbmdGZXRjaGVyID8gZXhpc3RpbmdGZXRjaGVyLmRhdGEgOiB2b2lkIDBcbiAgICAgICksXG4gICAgICB7IGZsdXNoU3luYyB9XG4gICAgKTtcbiAgICBsZXQgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGxldCBmZXRjaFJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIHBhdGgsXG4gICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsXG4gICAgKTtcbiAgICBpZiAoaXNGb2dPZldhcikge1xuICAgICAgbGV0IGRpc2NvdmVyUmVzdWx0ID0gYXdhaXQgZGlzY292ZXJSb3V0ZXMoXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGZldGNoUmVxdWVzdC5zaWduYWxcbiAgICAgICk7XG4gICAgICBpZiAoZGlzY292ZXJSZXN1bHQudHlwZSA9PT0gXCJhYm9ydGVkXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgc2V0RmV0Y2hlckVycm9yKGtleSwgcm91dGVJZCwgZGlzY292ZXJSZXN1bHQuZXJyb3IsIHsgZmx1c2hTeW5jIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKCFkaXNjb3ZlclJlc3VsdC5tYXRjaGVzKSB7XG4gICAgICAgIHNldEZldGNoZXJFcnJvcihcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcm91dGVJZCxcbiAgICAgICAgICBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwgeyBwYXRobmFtZTogcGF0aCB9KSxcbiAgICAgICAgICB7IGZsdXNoU3luYyB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgICBtYXRjaCA9IGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIHBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmZXRjaENvbnRyb2xsZXJzLnNldChrZXksIGFib3J0Q29udHJvbGxlcik7XG4gICAgbGV0IG9yaWdpbmF0aW5nTG9hZElkID0gaW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGxldCByZXN1bHRzID0gYXdhaXQgY2FsbERhdGFTdHJhdGVneShcbiAgICAgIFwibG9hZGVyXCIsXG4gICAgICBzdGF0ZSxcbiAgICAgIGZldGNoUmVxdWVzdCxcbiAgICAgIFttYXRjaF0sXG4gICAgICBtYXRjaGVzLFxuICAgICAga2V5XG4gICAgKTtcbiAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgaWYgKGZldGNoQ29udHJvbGxlcnMuZ2V0KGtleSkgPT09IGFib3J0Q29udHJvbGxlcikge1xuICAgICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgaWYgKGZldGNoUmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbi5oYXMoa2V5KSkge1xuICAgICAgdXBkYXRlRmV0Y2hlclN0YXRlKGtleSwgZ2V0RG9uZUZldGNoZXIodm9pZCAwKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIGlmIChwZW5kaW5nTmF2aWdhdGlvbkxvYWRJZCA+IG9yaWdpbmF0aW5nTG9hZElkKSB7XG4gICAgICAgIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGdldERvbmVGZXRjaGVyKHZvaWQgMCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZXRjaFJlZGlyZWN0SWRzLmFkZChrZXkpO1xuICAgICAgICBhd2FpdCBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihmZXRjaFJlcXVlc3QsIHJlc3VsdCwgZmFsc2UsIHtcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRXJyb3JSZXN1bHQocmVzdWx0KSkge1xuICAgICAgc2V0RmV0Y2hlckVycm9yKGtleSwgcm91dGVJZCwgcmVzdWx0LmVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdXBkYXRlRmV0Y2hlclN0YXRlKGtleSwgZ2V0RG9uZUZldGNoZXIocmVzdWx0LmRhdGEpKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihyZXF1ZXN0LCByZWRpcmVjdDIsIGlzTmF2aWdhdGlvbiwge1xuICAgIHN1Ym1pc3Npb24sXG4gICAgZmV0Y2hlclN1Ym1pc3Npb24sXG4gICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgIHJlcGxhY2U6IHJlcGxhY2UyXG4gIH0gPSB7fSkge1xuICAgIGlmIChyZWRpcmVjdDIucmVzcG9uc2UuaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJldmFsaWRhdGVcIikpIHtcbiAgICAgIGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQgPSB0cnVlO1xuICAgIH1cbiAgICBsZXQgbG9jYXRpb24gPSByZWRpcmVjdDIucmVzcG9uc2UuaGVhZGVycy5nZXQoXCJMb2NhdGlvblwiKTtcbiAgICBpbnZhcmlhbnQobG9jYXRpb24sIFwiRXhwZWN0ZWQgYSBMb2NhdGlvbiBoZWFkZXIgb24gdGhlIHJlZGlyZWN0IFJlc3BvbnNlXCIpO1xuICAgIGxvY2F0aW9uID0gbm9ybWFsaXplUmVkaXJlY3RMb2NhdGlvbihcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbmV3IFVSTChyZXF1ZXN0LnVybCksXG4gICAgICBiYXNlbmFtZVxuICAgICk7XG4gICAgbGV0IHJlZGlyZWN0TG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihzdGF0ZS5sb2NhdGlvbiwgbG9jYXRpb24sIHtcbiAgICAgIF9pc1JlZGlyZWN0OiB0cnVlXG4gICAgfSk7XG4gICAgaWYgKGlzQnJvd3NlcjIpIHtcbiAgICAgIGxldCBpc0RvY3VtZW50UmVsb2FkID0gZmFsc2U7XG4gICAgICBpZiAocmVkaXJlY3QyLnJlc3BvbnNlLmhlYWRlcnMuaGFzKFwiWC1SZW1peC1SZWxvYWQtRG9jdW1lbnRcIikpIHtcbiAgICAgICAgaXNEb2N1bWVudFJlbG9hZCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKEFCU09MVVRFX1VSTF9SRUdFWC50ZXN0KGxvY2F0aW9uKSkge1xuICAgICAgICBjb25zdCB1cmwgPSBpbml0Lmhpc3RvcnkuY3JlYXRlVVJMKGxvY2F0aW9uKTtcbiAgICAgICAgaXNEb2N1bWVudFJlbG9hZCA9IC8vIEhhcmQgcmVsb2FkIGlmIGl0J3MgYW4gYWJzb2x1dGUgVVJMIHRvIGEgbmV3IG9yaWdpblxuICAgICAgICB1cmwub3JpZ2luICE9PSByb3V0ZXJXaW5kb3cubG9jYXRpb24ub3JpZ2luIHx8IC8vIEhhcmQgcmVsb2FkIGlmIGl0J3MgYW4gYWJzb2x1dGUgVVJMIHRoYXQgZG9lcyBub3QgbWF0Y2ggb3VyIGJhc2VuYW1lXG4gICAgICAgIHN0cmlwQmFzZW5hbWUodXJsLnBhdGhuYW1lLCBiYXNlbmFtZSkgPT0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChpc0RvY3VtZW50UmVsb2FkKSB7XG4gICAgICAgIGlmIChyZXBsYWNlMikge1xuICAgICAgICAgIHJvdXRlcldpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGxvY2F0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByb3V0ZXJXaW5kb3cubG9jYXRpb24uYXNzaWduKGxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG51bGw7XG4gICAgbGV0IHJlZGlyZWN0TmF2aWdhdGlvblR5cGUgPSByZXBsYWNlMiA9PT0gdHJ1ZSB8fCByZWRpcmVjdDIucmVzcG9uc2UuaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJlcGxhY2VcIikgPyBcIlJFUExBQ0VcIiAvKiBSZXBsYWNlICovIDogXCJQVVNIXCIgLyogUHVzaCAqLztcbiAgICBsZXQgeyBmb3JtTWV0aG9kLCBmb3JtQWN0aW9uLCBmb3JtRW5jVHlwZSB9ID0gc3RhdGUubmF2aWdhdGlvbjtcbiAgICBpZiAoIXN1Ym1pc3Npb24gJiYgIWZldGNoZXJTdWJtaXNzaW9uICYmIGZvcm1NZXRob2QgJiYgZm9ybUFjdGlvbiAmJiBmb3JtRW5jVHlwZSkge1xuICAgICAgc3VibWlzc2lvbiA9IGdldFN1Ym1pc3Npb25Gcm9tTmF2aWdhdGlvbihzdGF0ZS5uYXZpZ2F0aW9uKTtcbiAgICB9XG4gICAgbGV0IGFjdGl2ZVN1Ym1pc3Npb24gPSBzdWJtaXNzaW9uIHx8IGZldGNoZXJTdWJtaXNzaW9uO1xuICAgIGlmIChyZWRpcmVjdFByZXNlcnZlTWV0aG9kU3RhdHVzQ29kZXMuaGFzKHJlZGlyZWN0Mi5yZXNwb25zZS5zdGF0dXMpICYmIGFjdGl2ZVN1Ym1pc3Npb24gJiYgaXNNdXRhdGlvbk1ldGhvZChhY3RpdmVTdWJtaXNzaW9uLmZvcm1NZXRob2QpKSB7XG4gICAgICBhd2FpdCBzdGFydE5hdmlnYXRpb24ocmVkaXJlY3ROYXZpZ2F0aW9uVHlwZSwgcmVkaXJlY3RMb2NhdGlvbiwge1xuICAgICAgICBzdWJtaXNzaW9uOiB7XG4gICAgICAgICAgLi4uYWN0aXZlU3VibWlzc2lvbixcbiAgICAgICAgICBmb3JtQWN0aW9uOiBsb2NhdGlvblxuICAgICAgICB9LFxuICAgICAgICAvLyBQcmVzZXJ2ZSB0aGVzZSBmbGFncyBhY3Jvc3MgcmVkaXJlY3RzXG4gICAgICAgIHByZXZlbnRTY3JvbGxSZXNldDogcHJldmVudFNjcm9sbFJlc2V0IHx8IHBlbmRpbmdQcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgIGVuYWJsZVZpZXdUcmFuc2l0aW9uOiBpc05hdmlnYXRpb24gPyBwZW5kaW5nVmlld1RyYW5zaXRpb25FbmFibGVkIDogdm9pZCAwXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG92ZXJyaWRlTmF2aWdhdGlvbiA9IGdldExvYWRpbmdOYXZpZ2F0aW9uKFxuICAgICAgICByZWRpcmVjdExvY2F0aW9uLFxuICAgICAgICBzdWJtaXNzaW9uXG4gICAgICApO1xuICAgICAgYXdhaXQgc3RhcnROYXZpZ2F0aW9uKHJlZGlyZWN0TmF2aWdhdGlvblR5cGUsIHJlZGlyZWN0TG9jYXRpb24sIHtcbiAgICAgICAgb3ZlcnJpZGVOYXZpZ2F0aW9uLFxuICAgICAgICAvLyBTZW5kIGZldGNoZXIgc3VibWlzc2lvbnMgdGhyb3VnaCBmb3Igc2hvdWxkUmV2YWxpZGF0ZVxuICAgICAgICBmZXRjaGVyU3VibWlzc2lvbixcbiAgICAgICAgLy8gUHJlc2VydmUgdGhlc2UgZmxhZ3MgYWNyb3NzIHJlZGlyZWN0c1xuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IHByZXZlbnRTY3JvbGxSZXNldCB8fCBwZW5kaW5nUHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgICBlbmFibGVWaWV3VHJhbnNpdGlvbjogaXNOYXZpZ2F0aW9uID8gcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA6IHZvaWQgMFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGNhbGxEYXRhU3RyYXRlZ3kodHlwZSwgc3RhdGUyLCByZXF1ZXN0LCBtYXRjaGVzVG9Mb2FkLCBtYXRjaGVzLCBmZXRjaGVyS2V5KSB7XG4gICAgbGV0IHJlc3VsdHM7XG4gICAgbGV0IGRhdGFSZXN1bHRzID0ge307XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5SW1wbChcbiAgICAgICAgZGF0YVN0cmF0ZWd5SW1wbCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgc3RhdGUyLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtYXRjaGVzVG9Mb2FkLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBmZXRjaGVyS2V5LFxuICAgICAgICBtYW5pZmVzdCxcbiAgICAgICAgbWFwUm91dGVQcm9wZXJ0aWVzMlxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBtYXRjaGVzVG9Mb2FkLmZvckVhY2goKG0pID0+IHtcbiAgICAgICAgZGF0YVJlc3VsdHNbbS5yb3V0ZS5pZF0gPSB7XG4gICAgICAgICAgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLFxuICAgICAgICAgIGVycm9yOiBlXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkYXRhUmVzdWx0cztcbiAgICB9XG4gICAgZm9yIChsZXQgW3JvdXRlSWQsIHJlc3VsdF0gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0cykpIHtcbiAgICAgIGlmIChpc1JlZGlyZWN0RGF0YVN0cmF0ZWd5UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzdWx0LnJlc3VsdDtcbiAgICAgICAgZGF0YVJlc3VsdHNbcm91dGVJZF0gPSB7XG4gICAgICAgICAgdHlwZTogXCJyZWRpcmVjdFwiIC8qIHJlZGlyZWN0ICovLFxuICAgICAgICAgIHJlc3BvbnNlOiBub3JtYWxpemVSZWxhdGl2ZVJvdXRpbmdSZWRpcmVjdFJlc3BvbnNlKFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgcm91dGVJZCxcbiAgICAgICAgICAgIG1hdGNoZXMsXG4gICAgICAgICAgICBiYXNlbmFtZVxuICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFSZXN1bHRzW3JvdXRlSWRdID0gYXdhaXQgY29udmVydERhdGFTdHJhdGVneVJlc3VsdFRvRGF0YVJlc3VsdChcbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFSZXN1bHRzO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGNhbGxMb2FkZXJzQW5kTWF5YmVSZXNvbHZlRGF0YShzdGF0ZTIsIG1hdGNoZXMsIG1hdGNoZXNUb0xvYWQsIGZldGNoZXJzVG9Mb2FkLCByZXF1ZXN0KSB7XG4gICAgbGV0IGxvYWRlclJlc3VsdHNQcm9taXNlID0gY2FsbERhdGFTdHJhdGVneShcbiAgICAgIFwibG9hZGVyXCIsXG4gICAgICBzdGF0ZTIsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWF0Y2hlc1RvTG9hZCxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBudWxsXG4gICAgKTtcbiAgICBsZXQgZmV0Y2hlclJlc3VsdHNQcm9taXNlID0gUHJvbWlzZS5hbGwoXG4gICAgICBmZXRjaGVyc1RvTG9hZC5tYXAoYXN5bmMgKGYpID0+IHtcbiAgICAgICAgaWYgKGYubWF0Y2hlcyAmJiBmLm1hdGNoICYmIGYuY29udHJvbGxlcikge1xuICAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgY2FsbERhdGFTdHJhdGVneShcbiAgICAgICAgICAgIFwibG9hZGVyXCIsXG4gICAgICAgICAgICBzdGF0ZTIsXG4gICAgICAgICAgICBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChpbml0Lmhpc3RvcnksIGYucGF0aCwgZi5jb250cm9sbGVyLnNpZ25hbCksXG4gICAgICAgICAgICBbZi5tYXRjaF0sXG4gICAgICAgICAgICBmLm1hdGNoZXMsXG4gICAgICAgICAgICBmLmtleVxuICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3VsdHNbZi5tYXRjaC5yb3V0ZS5pZF07XG4gICAgICAgICAgcmV0dXJuIHsgW2Yua2V5XTogcmVzdWx0IH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICBbZi5rZXldOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgICAgICAgICAgZXJyb3I6IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWU6IGYucGF0aFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgbGV0IGxvYWRlclJlc3VsdHMgPSBhd2FpdCBsb2FkZXJSZXN1bHRzUHJvbWlzZTtcbiAgICBsZXQgZmV0Y2hlclJlc3VsdHMgPSAoYXdhaXQgZmV0Y2hlclJlc3VsdHNQcm9taXNlKS5yZWR1Y2UoXG4gICAgICAoYWNjLCByKSA9PiBPYmplY3QuYXNzaWduKGFjYywgciksXG4gICAgICB7fVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvYWRlclJlc3VsdHMsXG4gICAgICBmZXRjaGVyUmVzdWx0c1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gaW50ZXJydXB0QWN0aXZlTG9hZHMoKSB7XG4gICAgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCA9IHRydWU7XG4gICAgZmV0Y2hMb2FkTWF0Y2hlcy5mb3JFYWNoKChfLCBrZXkpID0+IHtcbiAgICAgIGlmIChmZXRjaENvbnRyb2xsZXJzLmhhcyhrZXkpKSB7XG4gICAgICAgIGNhbmNlbGxlZEZldGNoZXJMb2Fkcy5hZGQoa2V5KTtcbiAgICAgIH1cbiAgICAgIGFib3J0RmV0Y2hlcihrZXkpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGZldGNoZXIsIG9wdHMgPSB7fSkge1xuICAgIHN0YXRlLmZldGNoZXJzLnNldChrZXksIGZldGNoZXIpO1xuICAgIHVwZGF0ZVN0YXRlKFxuICAgICAgeyBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycykgfSxcbiAgICAgIHsgZmx1c2hTeW5jOiAob3B0cyAmJiBvcHRzLmZsdXNoU3luYykgPT09IHRydWUgfVxuICAgICk7XG4gIH1cbiAgZnVuY3Rpb24gc2V0RmV0Y2hlckVycm9yKGtleSwgcm91dGVJZCwgZXJyb3IsIG9wdHMgPSB7fSkge1xuICAgIGxldCBib3VuZGFyeU1hdGNoID0gZmluZE5lYXJlc3RCb3VuZGFyeShzdGF0ZS5tYXRjaGVzLCByb3V0ZUlkKTtcbiAgICBkZWxldGVGZXRjaGVyKGtleSk7XG4gICAgdXBkYXRlU3RhdGUoXG4gICAgICB7XG4gICAgICAgIGVycm9yczoge1xuICAgICAgICAgIFtib3VuZGFyeU1hdGNoLnJvdXRlLmlkXTogZXJyb3JcbiAgICAgICAgfSxcbiAgICAgICAgZmV0Y2hlcnM6IG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpXG4gICAgICB9LFxuICAgICAgeyBmbHVzaFN5bmM6IChvcHRzICYmIG9wdHMuZmx1c2hTeW5jKSA9PT0gdHJ1ZSB9XG4gICAgKTtcbiAgfVxuICBmdW5jdGlvbiBnZXRGZXRjaGVyKGtleSkge1xuICAgIGFjdGl2ZUZldGNoZXJzLnNldChrZXksIChhY3RpdmVGZXRjaGVycy5nZXQoa2V5KSB8fCAwKSArIDEpO1xuICAgIGlmIChmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLmhhcyhrZXkpKSB7XG4gICAgICBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGUuZmV0Y2hlcnMuZ2V0KGtleSkgfHwgSURMRV9GRVRDSEVSO1xuICB9XG4gIGZ1bmN0aW9uIGRlbGV0ZUZldGNoZXIoa2V5KSB7XG4gICAgbGV0IGZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICBpZiAoZmV0Y2hDb250cm9sbGVycy5oYXMoa2V5KSAmJiAhKGZldGNoZXIgJiYgZmV0Y2hlci5zdGF0ZSA9PT0gXCJsb2FkaW5nXCIgJiYgZmV0Y2hSZWxvYWRJZHMuaGFzKGtleSkpKSB7XG4gICAgICBhYm9ydEZldGNoZXIoa2V5KTtcbiAgICB9XG4gICAgZmV0Y2hMb2FkTWF0Y2hlcy5kZWxldGUoa2V5KTtcbiAgICBmZXRjaFJlbG9hZElkcy5kZWxldGUoa2V5KTtcbiAgICBmZXRjaFJlZGlyZWN0SWRzLmRlbGV0ZShrZXkpO1xuICAgIGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uZGVsZXRlKGtleSk7XG4gICAgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLmRlbGV0ZShrZXkpO1xuICAgIHN0YXRlLmZldGNoZXJzLmRlbGV0ZShrZXkpO1xuICB9XG4gIGZ1bmN0aW9uIHF1ZXVlRmV0Y2hlckZvckRlbGV0aW9uKGtleSkge1xuICAgIGxldCBjb3VudCA9IChhY3RpdmVGZXRjaGVycy5nZXQoa2V5KSB8fCAwKSAtIDE7XG4gICAgaWYgKGNvdW50IDw9IDApIHtcbiAgICAgIGFjdGl2ZUZldGNoZXJzLmRlbGV0ZShrZXkpO1xuICAgICAgZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbi5hZGQoa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0aXZlRmV0Y2hlcnMuc2V0KGtleSwgY291bnQpO1xuICAgIH1cbiAgICB1cGRhdGVTdGF0ZSh7IGZldGNoZXJzOiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKSB9KTtcbiAgfVxuICBmdW5jdGlvbiBhYm9ydEZldGNoZXIoa2V5KSB7XG4gICAgbGV0IGNvbnRyb2xsZXIgPSBmZXRjaENvbnRyb2xsZXJzLmdldChrZXkpO1xuICAgIGlmIChjb250cm9sbGVyKSB7XG4gICAgICBjb250cm9sbGVyLmFib3J0KCk7XG4gICAgICBmZXRjaENvbnRyb2xsZXJzLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtYXJrRmV0Y2hlcnNEb25lKGtleXMpIHtcbiAgICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgICAgbGV0IGZldGNoZXIgPSBnZXRGZXRjaGVyKGtleSk7XG4gICAgICBsZXQgZG9uZUZldGNoZXIgPSBnZXREb25lRmV0Y2hlcihmZXRjaGVyLmRhdGEpO1xuICAgICAgc3RhdGUuZmV0Y2hlcnMuc2V0KGtleSwgZG9uZUZldGNoZXIpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtYXJrRmV0Y2hSZWRpcmVjdHNEb25lKCkge1xuICAgIGxldCBkb25lS2V5cyA9IFtdO1xuICAgIGxldCB1cGRhdGVkRmV0Y2hlcnMgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBrZXkgb2YgZmV0Y2hSZWRpcmVjdElkcykge1xuICAgICAgbGV0IGZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICAgIGludmFyaWFudChmZXRjaGVyLCBgRXhwZWN0ZWQgZmV0Y2hlcjogJHtrZXl9YCk7XG4gICAgICBpZiAoZmV0Y2hlci5zdGF0ZSA9PT0gXCJsb2FkaW5nXCIpIHtcbiAgICAgICAgZmV0Y2hSZWRpcmVjdElkcy5kZWxldGUoa2V5KTtcbiAgICAgICAgZG9uZUtleXMucHVzaChrZXkpO1xuICAgICAgICB1cGRhdGVkRmV0Y2hlcnMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBtYXJrRmV0Y2hlcnNEb25lKGRvbmVLZXlzKTtcbiAgICByZXR1cm4gdXBkYXRlZEZldGNoZXJzO1xuICB9XG4gIGZ1bmN0aW9uIGFib3J0U3RhbGVGZXRjaExvYWRzKGxhbmRlZElkKSB7XG4gICAgbGV0IHllZXRlZEtleXMgPSBbXTtcbiAgICBmb3IgKGxldCBba2V5LCBpZF0gb2YgZmV0Y2hSZWxvYWRJZHMpIHtcbiAgICAgIGlmIChpZCA8IGxhbmRlZElkKSB7XG4gICAgICAgIGxldCBmZXRjaGVyID0gc3RhdGUuZmV0Y2hlcnMuZ2V0KGtleSk7XG4gICAgICAgIGludmFyaWFudChmZXRjaGVyLCBgRXhwZWN0ZWQgZmV0Y2hlcjogJHtrZXl9YCk7XG4gICAgICAgIGlmIChmZXRjaGVyLnN0YXRlID09PSBcImxvYWRpbmdcIikge1xuICAgICAgICAgIGFib3J0RmV0Y2hlcihrZXkpO1xuICAgICAgICAgIGZldGNoUmVsb2FkSWRzLmRlbGV0ZShrZXkpO1xuICAgICAgICAgIHllZXRlZEtleXMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIG1hcmtGZXRjaGVyc0RvbmUoeWVldGVkS2V5cyk7XG4gICAgcmV0dXJuIHllZXRlZEtleXMubGVuZ3RoID4gMDtcbiAgfVxuICBmdW5jdGlvbiBnZXRCbG9ja2VyKGtleSwgZm4pIHtcbiAgICBsZXQgYmxvY2tlciA9IHN0YXRlLmJsb2NrZXJzLmdldChrZXkpIHx8IElETEVfQkxPQ0tFUjtcbiAgICBpZiAoYmxvY2tlckZ1bmN0aW9ucy5nZXQoa2V5KSAhPT0gZm4pIHtcbiAgICAgIGJsb2NrZXJGdW5jdGlvbnMuc2V0KGtleSwgZm4pO1xuICAgIH1cbiAgICByZXR1cm4gYmxvY2tlcjtcbiAgfVxuICBmdW5jdGlvbiBkZWxldGVCbG9ja2VyKGtleSkge1xuICAgIHN0YXRlLmJsb2NrZXJzLmRlbGV0ZShrZXkpO1xuICAgIGJsb2NrZXJGdW5jdGlvbnMuZGVsZXRlKGtleSk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlQmxvY2tlcihrZXksIG5ld0Jsb2NrZXIpIHtcbiAgICBsZXQgYmxvY2tlciA9IHN0YXRlLmJsb2NrZXJzLmdldChrZXkpIHx8IElETEVfQkxPQ0tFUjtcbiAgICBpbnZhcmlhbnQoXG4gICAgICBibG9ja2VyLnN0YXRlID09PSBcInVuYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiIHx8IGJsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiIHx8IGJsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwicHJvY2VlZGluZ1wiIHx8IGJsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwidW5ibG9ja2VkXCIgfHwgYmxvY2tlci5zdGF0ZSA9PT0gXCJwcm9jZWVkaW5nXCIgJiYgbmV3QmxvY2tlci5zdGF0ZSA9PT0gXCJ1bmJsb2NrZWRcIixcbiAgICAgIGBJbnZhbGlkIGJsb2NrZXIgc3RhdGUgdHJhbnNpdGlvbjogJHtibG9ja2VyLnN0YXRlfSAtPiAke25ld0Jsb2NrZXIuc3RhdGV9YFxuICAgICk7XG4gICAgbGV0IGJsb2NrZXJzID0gbmV3IE1hcChzdGF0ZS5ibG9ja2Vycyk7XG4gICAgYmxvY2tlcnMuc2V0KGtleSwgbmV3QmxvY2tlcik7XG4gICAgdXBkYXRlU3RhdGUoeyBibG9ja2VycyB9KTtcbiAgfVxuICBmdW5jdGlvbiBzaG91bGRCbG9ja05hdmlnYXRpb24oe1xuICAgIGN1cnJlbnRMb2NhdGlvbixcbiAgICBuZXh0TG9jYXRpb24sXG4gICAgaGlzdG9yeUFjdGlvblxuICB9KSB7XG4gICAgaWYgKGJsb2NrZXJGdW5jdGlvbnMuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYmxvY2tlckZ1bmN0aW9ucy5zaXplID4gMSkge1xuICAgICAgd2FybmluZyhmYWxzZSwgXCJBIHJvdXRlciBvbmx5IHN1cHBvcnRzIG9uZSBibG9ja2VyIGF0IGEgdGltZVwiKTtcbiAgICB9XG4gICAgbGV0IGVudHJpZXMgPSBBcnJheS5mcm9tKGJsb2NrZXJGdW5jdGlvbnMuZW50cmllcygpKTtcbiAgICBsZXQgW2Jsb2NrZXJLZXksIGJsb2NrZXJGdW5jdGlvbl0gPSBlbnRyaWVzW2VudHJpZXMubGVuZ3RoIC0gMV07XG4gICAgbGV0IGJsb2NrZXIgPSBzdGF0ZS5ibG9ja2Vycy5nZXQoYmxvY2tlcktleSk7XG4gICAgaWYgKGJsb2NrZXIgJiYgYmxvY2tlci5zdGF0ZSA9PT0gXCJwcm9jZWVkaW5nXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGJsb2NrZXJGdW5jdGlvbih7IGN1cnJlbnRMb2NhdGlvbiwgbmV4dExvY2F0aW9uLCBoaXN0b3J5QWN0aW9uIH0pKSB7XG4gICAgICByZXR1cm4gYmxvY2tlcktleTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGlvbmFsNDA0KHBhdGhuYW1lKSB7XG4gICAgbGV0IGVycm9yID0gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHsgcGF0aG5hbWUgfSk7XG4gICAgbGV0IHJvdXRlc1RvVXNlID0gaW5GbGlnaHREYXRhUm91dGVzIHx8IGRhdGFSb3V0ZXM7XG4gICAgbGV0IHsgbWF0Y2hlcywgcm91dGUgfSA9IGdldFNob3J0Q2lyY3VpdE1hdGNoZXMocm91dGVzVG9Vc2UpO1xuICAgIHJldHVybiB7IG5vdEZvdW5kTWF0Y2hlczogbWF0Y2hlcywgcm91dGUsIGVycm9yIH07XG4gIH1cbiAgZnVuY3Rpb24gZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24ocG9zaXRpb25zLCBnZXRQb3NpdGlvbiwgZ2V0S2V5KSB7XG4gICAgc2F2ZWRTY3JvbGxQb3NpdGlvbnMyID0gcG9zaXRpb25zO1xuICAgIGdldFNjcm9sbFBvc2l0aW9uID0gZ2V0UG9zaXRpb247XG4gICAgZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkyID0gZ2V0S2V5IHx8IG51bGw7XG4gICAgaWYgKCFpbml0aWFsU2Nyb2xsUmVzdG9yZWQgJiYgc3RhdGUubmF2aWdhdGlvbiA9PT0gSURMRV9OQVZJR0FUSU9OKSB7XG4gICAgICBpbml0aWFsU2Nyb2xsUmVzdG9yZWQgPSB0cnVlO1xuICAgICAgbGV0IHkgPSBnZXRTYXZlZFNjcm9sbFBvc2l0aW9uKHN0YXRlLmxvY2F0aW9uLCBzdGF0ZS5tYXRjaGVzKTtcbiAgICAgIGlmICh5ICE9IG51bGwpIHtcbiAgICAgICAgdXBkYXRlU3RhdGUoeyByZXN0b3JlU2Nyb2xsUG9zaXRpb246IHkgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzYXZlZFNjcm9sbFBvc2l0aW9uczIgPSBudWxsO1xuICAgICAgZ2V0U2Nyb2xsUG9zaXRpb24gPSBudWxsO1xuICAgICAgZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkyID0gbnVsbDtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGdldFNjcm9sbEtleShsb2NhdGlvbiwgbWF0Y2hlcykge1xuICAgIGlmIChnZXRTY3JvbGxSZXN0b3JhdGlvbktleTIpIHtcbiAgICAgIGxldCBrZXkgPSBnZXRTY3JvbGxSZXN0b3JhdGlvbktleTIoXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzLm1hcCgobSkgPT4gY29udmVydFJvdXRlTWF0Y2hUb1VpTWF0Y2gobSwgc3RhdGUubG9hZGVyRGF0YSkpXG4gICAgICApO1xuICAgICAgcmV0dXJuIGtleSB8fCBsb2NhdGlvbi5rZXk7XG4gICAgfVxuICAgIHJldHVybiBsb2NhdGlvbi5rZXk7XG4gIH1cbiAgZnVuY3Rpb24gc2F2ZVNjcm9sbFBvc2l0aW9uKGxvY2F0aW9uLCBtYXRjaGVzKSB7XG4gICAgaWYgKHNhdmVkU2Nyb2xsUG9zaXRpb25zMiAmJiBnZXRTY3JvbGxQb3NpdGlvbikge1xuICAgICAgbGV0IGtleSA9IGdldFNjcm9sbEtleShsb2NhdGlvbiwgbWF0Y2hlcyk7XG4gICAgICBzYXZlZFNjcm9sbFBvc2l0aW9uczJba2V5XSA9IGdldFNjcm9sbFBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGdldFNhdmVkU2Nyb2xsUG9zaXRpb24obG9jYXRpb24sIG1hdGNoZXMpIHtcbiAgICBpZiAoc2F2ZWRTY3JvbGxQb3NpdGlvbnMyKSB7XG4gICAgICBsZXQga2V5ID0gZ2V0U2Nyb2xsS2V5KGxvY2F0aW9uLCBtYXRjaGVzKTtcbiAgICAgIGxldCB5ID0gc2F2ZWRTY3JvbGxQb3NpdGlvbnMyW2tleV07XG4gICAgICBpZiAodHlwZW9mIHkgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgcmV0dXJuIHk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIGNoZWNrRm9nT2ZXYXIobWF0Y2hlcywgcm91dGVzVG9Vc2UsIHBhdGhuYW1lKSB7XG4gICAgaWYgKHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uSW1wbCkge1xuICAgICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICAgIGxldCBmb2dNYXRjaGVzID0gbWF0Y2hSb3V0ZXNJbXBsKFxuICAgICAgICAgIHJvdXRlc1RvVXNlLFxuICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgIGJhc2VuYW1lLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgYWN0aXZlOiB0cnVlLCBtYXRjaGVzOiBmb2dNYXRjaGVzIHx8IFtdIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMobWF0Y2hlc1swXS5wYXJhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBsZXQgcGFydGlhbE1hdGNoZXMgPSBtYXRjaFJvdXRlc0ltcGwoXG4gICAgICAgICAgICByb3V0ZXNUb1VzZSxcbiAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgYmFzZW5hbWUsXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4geyBhY3RpdmU6IHRydWUsIG1hdGNoZXM6IHBhcnRpYWxNYXRjaGVzIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgbWF0Y2hlczogbnVsbCB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGRpc2NvdmVyUm91dGVzKG1hdGNoZXMsIHBhdGhuYW1lLCBzaWduYWwpIHtcbiAgICBpZiAoIXBhdGNoUm91dGVzT25OYXZpZ2F0aW9uSW1wbCkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJzdWNjZXNzXCIsIG1hdGNoZXMgfTtcbiAgICB9XG4gICAgbGV0IHBhcnRpYWxNYXRjaGVzID0gbWF0Y2hlcztcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgbGV0IGlzTm9uSE1SID0gaW5GbGlnaHREYXRhUm91dGVzID09IG51bGw7XG4gICAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICAgIGxldCBsb2NhbE1hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBwYXRjaFJvdXRlc09uTmF2aWdhdGlvbkltcGwoe1xuICAgICAgICAgIHBhdGg6IHBhdGhuYW1lLFxuICAgICAgICAgIG1hdGNoZXM6IHBhcnRpYWxNYXRjaGVzLFxuICAgICAgICAgIHBhdGNoOiAocm91dGVJZCwgY2hpbGRyZW4pID0+IHtcbiAgICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkgcmV0dXJuO1xuICAgICAgICAgICAgcGF0Y2hSb3V0ZXNJbXBsKFxuICAgICAgICAgICAgICByb3V0ZUlkLFxuICAgICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgICAgcm91dGVzVG9Vc2UsXG4gICAgICAgICAgICAgIGxvY2FsTWFuaWZlc3QsXG4gICAgICAgICAgICAgIG1hcFJvdXRlUHJvcGVydGllczJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJlcnJvclwiLCBlcnJvcjogZSwgcGFydGlhbE1hdGNoZXMgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChpc05vbkhNUiAmJiAhc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICBkYXRhUm91dGVzID0gWy4uLmRhdGFSb3V0ZXNdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJhYm9ydGVkXCIgfTtcbiAgICAgIH1cbiAgICAgIGxldCBuZXdNYXRjaGVzID0gbWF0Y2hSb3V0ZXMocm91dGVzVG9Vc2UsIHBhdGhuYW1lLCBiYXNlbmFtZSk7XG4gICAgICBpZiAobmV3TWF0Y2hlcykge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcInN1Y2Nlc3NcIiwgbWF0Y2hlczogbmV3TWF0Y2hlcyB9O1xuICAgICAgfVxuICAgICAgbGV0IG5ld1BhcnRpYWxNYXRjaGVzID0gbWF0Y2hSb3V0ZXNJbXBsKFxuICAgICAgICByb3V0ZXNUb1VzZSxcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgIGJhc2VuYW1lLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgaWYgKCFuZXdQYXJ0aWFsTWF0Y2hlcyB8fCBwYXJ0aWFsTWF0Y2hlcy5sZW5ndGggPT09IG5ld1BhcnRpYWxNYXRjaGVzLmxlbmd0aCAmJiBwYXJ0aWFsTWF0Y2hlcy5ldmVyeShcbiAgICAgICAgKG0sIGkpID0+IG0ucm91dGUuaWQgPT09IG5ld1BhcnRpYWxNYXRjaGVzW2ldLnJvdXRlLmlkXG4gICAgICApKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwic3VjY2Vzc1wiLCBtYXRjaGVzOiBudWxsIH07XG4gICAgICB9XG4gICAgICBwYXJ0aWFsTWF0Y2hlcyA9IG5ld1BhcnRpYWxNYXRjaGVzO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBfaW50ZXJuYWxTZXRSb3V0ZXMobmV3Um91dGVzKSB7XG4gICAgbWFuaWZlc3QgPSB7fTtcbiAgICBpbkZsaWdodERhdGFSb3V0ZXMgPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgICAgbmV3Um91dGVzLFxuICAgICAgbWFwUm91dGVQcm9wZXJ0aWVzMixcbiAgICAgIHZvaWQgMCxcbiAgICAgIG1hbmlmZXN0XG4gICAgKTtcbiAgfVxuICBmdW5jdGlvbiBwYXRjaFJvdXRlcyhyb3V0ZUlkLCBjaGlsZHJlbikge1xuICAgIGxldCBpc05vbkhNUiA9IGluRmxpZ2h0RGF0YVJvdXRlcyA9PSBudWxsO1xuICAgIGxldCByb3V0ZXNUb1VzZSA9IGluRmxpZ2h0RGF0YVJvdXRlcyB8fCBkYXRhUm91dGVzO1xuICAgIHBhdGNoUm91dGVzSW1wbChcbiAgICAgIHJvdXRlSWQsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIHJvdXRlc1RvVXNlLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBtYXBSb3V0ZVByb3BlcnRpZXMyXG4gICAgKTtcbiAgICBpZiAoaXNOb25ITVIpIHtcbiAgICAgIGRhdGFSb3V0ZXMgPSBbLi4uZGF0YVJvdXRlc107XG4gICAgICB1cGRhdGVTdGF0ZSh7fSk7XG4gICAgfVxuICB9XG4gIHJvdXRlciA9IHtcbiAgICBnZXQgYmFzZW5hbWUoKSB7XG4gICAgICByZXR1cm4gYmFzZW5hbWU7XG4gICAgfSxcbiAgICBnZXQgZnV0dXJlKCkge1xuICAgICAgcmV0dXJuIGZ1dHVyZTtcbiAgICB9LFxuICAgIGdldCBzdGF0ZSgpIHtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9LFxuICAgIGdldCByb3V0ZXMoKSB7XG4gICAgICByZXR1cm4gZGF0YVJvdXRlcztcbiAgICB9LFxuICAgIGdldCB3aW5kb3coKSB7XG4gICAgICByZXR1cm4gcm91dGVyV2luZG93O1xuICAgIH0sXG4gICAgaW5pdGlhbGl6ZSxcbiAgICBzdWJzY3JpYmUsXG4gICAgZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24sXG4gICAgbmF2aWdhdGUsXG4gICAgZmV0Y2g6IGZldGNoMixcbiAgICByZXZhbGlkYXRlLFxuICAgIC8vIFBhc3N0aHJvdWdoIHRvIGhpc3RvcnktYXdhcmUgY3JlYXRlSHJlZiB1c2VkIGJ5IHVzZUhyZWYgc28gd2UgZ2V0IHByb3BlclxuICAgIC8vIGhhc2gtYXdhcmUgVVJMcyBpbiBET00gcGF0aHNcbiAgICBjcmVhdGVIcmVmOiAodG8pID0+IGluaXQuaGlzdG9yeS5jcmVhdGVIcmVmKHRvKSxcbiAgICBlbmNvZGVMb2NhdGlvbjogKHRvKSA9PiBpbml0Lmhpc3RvcnkuZW5jb2RlTG9jYXRpb24odG8pLFxuICAgIGdldEZldGNoZXIsXG4gICAgZGVsZXRlRmV0Y2hlcjogcXVldWVGZXRjaGVyRm9yRGVsZXRpb24sXG4gICAgZGlzcG9zZSxcbiAgICBnZXRCbG9ja2VyLFxuICAgIGRlbGV0ZUJsb2NrZXIsXG4gICAgcGF0Y2hSb3V0ZXMsXG4gICAgX2ludGVybmFsRmV0Y2hDb250cm9sbGVyczogZmV0Y2hDb250cm9sbGVycyxcbiAgICAvLyBUT0RPOiBSZW1vdmUgc2V0Um91dGVzLCBpdCdzIHRlbXBvcmFyeSB0byBhdm9pZCBkZWFsaW5nIHdpdGhcbiAgICAvLyB1cGRhdGluZyB0aGUgdHJlZSB3aGlsZSB2YWxpZGF0aW5nIHRoZSB1cGRhdGUgYWxnb3JpdGhtLlxuICAgIF9pbnRlcm5hbFNldFJvdXRlc1xuICB9O1xuICByZXR1cm4gcm91dGVyO1xufVxuZnVuY3Rpb24gY3JlYXRlU3RhdGljSGFuZGxlcihyb3V0ZXMsIG9wdHMpIHtcbiAgaW52YXJpYW50KFxuICAgIHJvdXRlcy5sZW5ndGggPiAwLFxuICAgIFwiWW91IG11c3QgcHJvdmlkZSBhIG5vbi1lbXB0eSByb3V0ZXMgYXJyYXkgdG8gY3JlYXRlU3RhdGljSGFuZGxlclwiXG4gICk7XG4gIGxldCBtYW5pZmVzdCA9IHt9O1xuICBsZXQgYmFzZW5hbWUgPSAob3B0cyA/IG9wdHMuYmFzZW5hbWUgOiBudWxsKSB8fCBcIi9cIjtcbiAgbGV0IG1hcFJvdXRlUHJvcGVydGllczIgPSBvcHRzPy5tYXBSb3V0ZVByb3BlcnRpZXMgfHwgZGVmYXVsdE1hcFJvdXRlUHJvcGVydGllcztcbiAgbGV0IGRhdGFSb3V0ZXMgPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgIHJvdXRlcyxcbiAgICBtYXBSb3V0ZVByb3BlcnRpZXMyLFxuICAgIHZvaWQgMCxcbiAgICBtYW5pZmVzdFxuICApO1xuICBhc3luYyBmdW5jdGlvbiBxdWVyeShyZXF1ZXN0LCB7XG4gICAgcmVxdWVzdENvbnRleHQsXG4gICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcsXG4gICAgZGF0YVN0cmF0ZWd5XG4gIH0gPSB7fSkge1xuICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICBsZXQgbWV0aG9kID0gcmVxdWVzdC5tZXRob2Q7XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oXCJcIiwgY3JlYXRlUGF0aCh1cmwpLCBudWxsLCBcImRlZmF1bHRcIik7XG4gICAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhkYXRhUm91dGVzLCBsb2NhdGlvbiwgYmFzZW5hbWUpO1xuICAgIGlmICghaXNWYWxpZE1ldGhvZChtZXRob2QpICYmIG1ldGhvZCAhPT0gXCJIRUFEXCIpIHtcbiAgICAgIGxldCBlcnJvciA9IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA1LCB7IG1ldGhvZCB9KTtcbiAgICAgIGxldCB7IG1hdGNoZXM6IG1ldGhvZE5vdEFsbG93ZWRNYXRjaGVzLCByb3V0ZSB9ID0gZ2V0U2hvcnRDaXJjdWl0TWF0Y2hlcyhkYXRhUm91dGVzKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhc2VuYW1lLFxuICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgbWF0Y2hlczogbWV0aG9kTm90QWxsb3dlZE1hdGNoZXMsXG4gICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICBhY3Rpb25EYXRhOiBudWxsLFxuICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICBbcm91dGUuaWRdOiBlcnJvclxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXNDb2RlOiBlcnJvci5zdGF0dXMsXG4gICAgICAgIGxvYWRlckhlYWRlcnM6IHt9LFxuICAgICAgICBhY3Rpb25IZWFkZXJzOiB7fVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKCFtYXRjaGVzKSB7XG4gICAgICBsZXQgZXJyb3IgPSBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwgeyBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUgfSk7XG4gICAgICBsZXQgeyBtYXRjaGVzOiBub3RGb3VuZE1hdGNoZXMsIHJvdXRlIH0gPSBnZXRTaG9ydENpcmN1aXRNYXRjaGVzKGRhdGFSb3V0ZXMpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFzZW5hbWUsXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzOiBub3RGb3VuZE1hdGNoZXMsXG4gICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICBhY3Rpb25EYXRhOiBudWxsLFxuICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICBbcm91dGUuaWRdOiBlcnJvclxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXNDb2RlOiBlcnJvci5zdGF0dXMsXG4gICAgICAgIGxvYWRlckhlYWRlcnM6IHt9LFxuICAgICAgICBhY3Rpb25IZWFkZXJzOiB7fVxuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5SW1wbChcbiAgICAgIHJlcXVlc3QsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIG1hdGNoZXMsXG4gICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgIGRhdGFTdHJhdGVneSB8fCBudWxsLFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcgPT09IHRydWUsXG4gICAgICBudWxsXG4gICAgKTtcbiAgICBpZiAoaXNSZXNwb25zZShyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4geyBsb2NhdGlvbiwgYmFzZW5hbWUsIC4uLnJlc3VsdCB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5Um91dGUocmVxdWVzdCwge1xuICAgIHJvdXRlSWQsXG4gICAgcmVxdWVzdENvbnRleHQsXG4gICAgZGF0YVN0cmF0ZWd5XG4gIH0gPSB7fSkge1xuICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICBsZXQgbWV0aG9kID0gcmVxdWVzdC5tZXRob2Q7XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oXCJcIiwgY3JlYXRlUGF0aCh1cmwpLCBudWxsLCBcImRlZmF1bHRcIik7XG4gICAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhkYXRhUm91dGVzLCBsb2NhdGlvbiwgYmFzZW5hbWUpO1xuICAgIGlmICghaXNWYWxpZE1ldGhvZChtZXRob2QpICYmIG1ldGhvZCAhPT0gXCJIRUFEXCIgJiYgbWV0aG9kICE9PSBcIk9QVElPTlNcIikge1xuICAgICAgdGhyb3cgZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDUsIHsgbWV0aG9kIH0pO1xuICAgIH0gZWxzZSBpZiAoIW1hdGNoZXMpIHtcbiAgICAgIHRocm93IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7IHBhdGhuYW1lOiBsb2NhdGlvbi5wYXRobmFtZSB9KTtcbiAgICB9XG4gICAgbGV0IG1hdGNoID0gcm91dGVJZCA/IG1hdGNoZXMuZmluZCgobSkgPT4gbS5yb3V0ZS5pZCA9PT0gcm91dGVJZCkgOiBnZXRUYXJnZXRNYXRjaChtYXRjaGVzLCBsb2NhdGlvbik7XG4gICAgaWYgKHJvdXRlSWQgJiYgIW1hdGNoKSB7XG4gICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwMywge1xuICAgICAgICBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgIHJvdXRlSWRcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwgeyBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUgfSk7XG4gICAgfVxuICAgIGxldCByZXN1bHQgPSBhd2FpdCBxdWVyeUltcGwoXG4gICAgICByZXF1ZXN0LFxuICAgICAgbG9jYXRpb24sXG4gICAgICBtYXRjaGVzLFxuICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICBkYXRhU3RyYXRlZ3kgfHwgbnVsbCxcbiAgICAgIGZhbHNlLFxuICAgICAgbWF0Y2hcbiAgICApO1xuICAgIGlmIChpc1Jlc3BvbnNlKHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGxldCBlcnJvciA9IHJlc3VsdC5lcnJvcnMgPyBPYmplY3QudmFsdWVzKHJlc3VsdC5lcnJvcnMpWzBdIDogdm9pZCAwO1xuICAgIGlmIChlcnJvciAhPT0gdm9pZCAwKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5hY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQuYWN0aW9uRGF0YSlbMF07XG4gICAgfVxuICAgIGlmIChyZXN1bHQubG9hZGVyRGF0YSkge1xuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVzdWx0LmxvYWRlckRhdGEpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5SW1wbChyZXF1ZXN0LCBsb2NhdGlvbiwgbWF0Y2hlcywgcmVxdWVzdENvbnRleHQsIGRhdGFTdHJhdGVneSwgc2tpcExvYWRlckVycm9yQnViYmxpbmcsIHJvdXRlTWF0Y2gpIHtcbiAgICBpbnZhcmlhbnQoXG4gICAgICByZXF1ZXN0LnNpZ25hbCxcbiAgICAgIFwicXVlcnkoKS9xdWVyeVJvdXRlKCkgcmVxdWVzdHMgbXVzdCBjb250YWluIGFuIEFib3J0Q29udHJvbGxlciBzaWduYWxcIlxuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpc011dGF0aW9uTWV0aG9kKHJlcXVlc3QubWV0aG9kKSkge1xuICAgICAgICBsZXQgcmVzdWx0MiA9IGF3YWl0IHN1Ym1pdChcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgIG1hdGNoZXMsXG4gICAgICAgICAgcm91dGVNYXRjaCB8fCBnZXRUYXJnZXRNYXRjaChtYXRjaGVzLCBsb2NhdGlvbiksXG4gICAgICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICAgICAgZGF0YVN0cmF0ZWd5LFxuICAgICAgICAgIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nLFxuICAgICAgICAgIHJvdXRlTWF0Y2ggIT0gbnVsbFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gcmVzdWx0MjtcbiAgICAgIH1cbiAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBsb2FkUm91dGVEYXRhKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgICAgZGF0YVN0cmF0ZWd5LFxuICAgICAgICBza2lwTG9hZGVyRXJyb3JCdWJibGluZyxcbiAgICAgICAgcm91dGVNYXRjaFxuICAgICAgKTtcbiAgICAgIHJldHVybiBpc1Jlc3BvbnNlKHJlc3VsdCkgPyByZXN1bHQgOiB7XG4gICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgYWN0aW9uRGF0YTogbnVsbCxcbiAgICAgICAgYWN0aW9uSGVhZGVyczoge31cbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGlzRGF0YVN0cmF0ZWd5UmVzdWx0KGUpICYmIGlzUmVzcG9uc2UoZS5yZXN1bHQpKSB7XG4gICAgICAgIGlmIChlLnR5cGUgPT09IFwiZXJyb3JcIiAvKiBlcnJvciAqLykge1xuICAgICAgICAgIHRocm93IGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlLnJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGlmIChpc1JlZGlyZWN0UmVzcG9uc2UoZSkpIHtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuICBhc3luYyBmdW5jdGlvbiBzdWJtaXQocmVxdWVzdCwgbWF0Y2hlcywgYWN0aW9uTWF0Y2gsIHJlcXVlc3RDb250ZXh0LCBkYXRhU3RyYXRlZ3ksIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nLCBpc1JvdXRlUmVxdWVzdCkge1xuICAgIGxldCByZXN1bHQ7XG4gICAgaWYgKCFhY3Rpb25NYXRjaC5yb3V0ZS5hY3Rpb24gJiYgIWFjdGlvbk1hdGNoLnJvdXRlLmxhenkpIHtcbiAgICAgIGxldCBlcnJvciA9IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA1LCB7XG4gICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgIHBhdGhuYW1lOiBuZXcgVVJMKHJlcXVlc3QudXJsKS5wYXRobmFtZSxcbiAgICAgICAgcm91dGVJZDogYWN0aW9uTWF0Y2gucm91dGUuaWRcbiAgICAgIH0pO1xuICAgICAgaWYgKGlzUm91dGVSZXF1ZXN0KSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgIGVycm9yXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGNhbGxEYXRhU3RyYXRlZ3koXG4gICAgICAgIFwiYWN0aW9uXCIsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIFthY3Rpb25NYXRjaF0sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGlzUm91dGVSZXF1ZXN0LFxuICAgICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgICAgZGF0YVN0cmF0ZWd5XG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0c1thY3Rpb25NYXRjaC5yb3V0ZS5pZF07XG4gICAgICBpZiAocmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICB0aHJvd1N0YXRpY0hhbmRsZXJBYm9ydGVkRXJyb3IocmVxdWVzdCwgaXNSb3V0ZVJlcXVlc3QpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICB0aHJvdyBuZXcgUmVzcG9uc2UobnVsbCwge1xuICAgICAgICBzdGF0dXM6IHJlc3VsdC5yZXNwb25zZS5zdGF0dXMsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBMb2NhdGlvbjogcmVzdWx0LnJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiTG9jYXRpb25cIilcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChpc1JvdXRlUmVxdWVzdCkge1xuICAgICAgaWYgKGlzRXJyb3JSZXN1bHQocmVzdWx0KSkge1xuICAgICAgICB0aHJvdyByZXN1bHQuZXJyb3I7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaGVzOiBbYWN0aW9uTWF0Y2hdLFxuICAgICAgICBsb2FkZXJEYXRhOiB7fSxcbiAgICAgICAgYWN0aW9uRGF0YTogeyBbYWN0aW9uTWF0Y2gucm91dGUuaWRdOiByZXN1bHQuZGF0YSB9LFxuICAgICAgICBlcnJvcnM6IG51bGwsXG4gICAgICAgIC8vIE5vdGU6IHN0YXR1c0NvZGUgKyBoZWFkZXJzIGFyZSB1bnVzZWQgaGVyZSBzaW5jZSBxdWVyeVJvdXRlIHdpbGxcbiAgICAgICAgLy8gcmV0dXJuIHRoZSByYXcgUmVzcG9uc2Ugb3IgdmFsdWVcbiAgICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgICBsb2FkZXJIZWFkZXJzOiB7fSxcbiAgICAgICAgYWN0aW9uSGVhZGVyczoge31cbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBsb2FkZXJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QocmVxdWVzdC51cmwsIHtcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICAgIHJlZGlyZWN0OiByZXF1ZXN0LnJlZGlyZWN0LFxuICAgICAgc2lnbmFsOiByZXF1ZXN0LnNpZ25hbFxuICAgIH0pO1xuICAgIGlmIChpc0Vycm9yUmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIGxldCBib3VuZGFyeU1hdGNoID0gc2tpcExvYWRlckVycm9yQnViYmxpbmcgPyBhY3Rpb25NYXRjaCA6IGZpbmROZWFyZXN0Qm91bmRhcnkobWF0Y2hlcywgYWN0aW9uTWF0Y2gucm91dGUuaWQpO1xuICAgICAgbGV0IGNvbnRleHQyID0gYXdhaXQgbG9hZFJvdXRlRGF0YShcbiAgICAgICAgbG9hZGVyUmVxdWVzdCxcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICAgIGRhdGFTdHJhdGVneSxcbiAgICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcsXG4gICAgICAgIG51bGwsXG4gICAgICAgIFtib3VuZGFyeU1hdGNoLnJvdXRlLmlkLCByZXN1bHRdXG4gICAgICApO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY29udGV4dDIsXG4gICAgICAgIHN0YXR1c0NvZGU6IGlzUm91dGVFcnJvclJlc3BvbnNlKHJlc3VsdC5lcnJvcikgPyByZXN1bHQuZXJyb3Iuc3RhdHVzIDogcmVzdWx0LnN0YXR1c0NvZGUgIT0gbnVsbCA/IHJlc3VsdC5zdGF0dXNDb2RlIDogNTAwLFxuICAgICAgICBhY3Rpb25EYXRhOiBudWxsLFxuICAgICAgICBhY3Rpb25IZWFkZXJzOiB7XG4gICAgICAgICAgLi4ucmVzdWx0LmhlYWRlcnMgPyB7IFthY3Rpb25NYXRjaC5yb3V0ZS5pZF06IHJlc3VsdC5oZWFkZXJzIH0gOiB7fVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgY29udGV4dCA9IGF3YWl0IGxvYWRSb3V0ZURhdGEoXG4gICAgICBsb2FkZXJSZXF1ZXN0LFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIHJlcXVlc3RDb250ZXh0LFxuICAgICAgZGF0YVN0cmF0ZWd5LFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcsXG4gICAgICBudWxsXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIGFjdGlvbkRhdGE6IHtcbiAgICAgICAgW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTogcmVzdWx0LmRhdGFcbiAgICAgIH0sXG4gICAgICAvLyBhY3Rpb24gc3RhdHVzIGNvZGVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIGxvYWRlciBzdGF0dXMgY29kZXNcbiAgICAgIC4uLnJlc3VsdC5zdGF0dXNDb2RlID8geyBzdGF0dXNDb2RlOiByZXN1bHQuc3RhdHVzQ29kZSB9IDoge30sXG4gICAgICBhY3Rpb25IZWFkZXJzOiByZXN1bHQuaGVhZGVycyA/IHsgW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTogcmVzdWx0LmhlYWRlcnMgfSA6IHt9XG4gICAgfTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBsb2FkUm91dGVEYXRhKHJlcXVlc3QsIG1hdGNoZXMsIHJlcXVlc3RDb250ZXh0LCBkYXRhU3RyYXRlZ3ksIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nLCByb3V0ZU1hdGNoLCBwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgbGV0IGlzUm91dGVSZXF1ZXN0ID0gcm91dGVNYXRjaCAhPSBudWxsO1xuICAgIGlmIChpc1JvdXRlUmVxdWVzdCAmJiAhcm91dGVNYXRjaD8ucm91dGUubG9hZGVyICYmICFyb3V0ZU1hdGNoPy5yb3V0ZS5sYXp5KSB7XG4gICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwMCwge1xuICAgICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICBwYXRobmFtZTogbmV3IFVSTChyZXF1ZXN0LnVybCkucGF0aG5hbWUsXG4gICAgICAgIHJvdXRlSWQ6IHJvdXRlTWF0Y2g/LnJvdXRlLmlkXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IHJlcXVlc3RNYXRjaGVzID0gcm91dGVNYXRjaCA/IFtyb3V0ZU1hdGNoXSA6IHBlbmRpbmdBY3Rpb25SZXN1bHQgJiYgaXNFcnJvclJlc3VsdChwZW5kaW5nQWN0aW9uUmVzdWx0WzFdKSA/IGdldExvYWRlck1hdGNoZXNVbnRpbEJvdW5kYXJ5KG1hdGNoZXMsIHBlbmRpbmdBY3Rpb25SZXN1bHRbMF0pIDogbWF0Y2hlcztcbiAgICBsZXQgbWF0Y2hlc1RvTG9hZCA9IHJlcXVlc3RNYXRjaGVzLmZpbHRlcihcbiAgICAgIChtKSA9PiBtLnJvdXRlLmxvYWRlciB8fCBtLnJvdXRlLmxhenlcbiAgICApO1xuICAgIGlmIChtYXRjaGVzVG9Mb2FkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgLy8gQWRkIGEgbnVsbCBmb3IgYWxsIG1hdGNoZWQgcm91dGVzIGZvciBwcm9wZXIgcmV2YWxpZGF0aW9uIG9uIHRoZSBjbGllbnRcbiAgICAgICAgbG9hZGVyRGF0YTogbWF0Y2hlcy5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgbSkgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW20ucm91dGUuaWRdOiBudWxsIH0pLFxuICAgICAgICAgIHt9XG4gICAgICAgICksXG4gICAgICAgIGVycm9yczogcGVuZGluZ0FjdGlvblJlc3VsdCAmJiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8ge1xuICAgICAgICAgIFtwZW5kaW5nQWN0aW9uUmVzdWx0WzBdXTogcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5lcnJvclxuICAgICAgICB9IDogbnVsbCxcbiAgICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgICBsb2FkZXJIZWFkZXJzOiB7fVxuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5KFxuICAgICAgXCJsb2FkZXJcIixcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtYXRjaGVzVG9Mb2FkLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGlzUm91dGVSZXF1ZXN0LFxuICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICBkYXRhU3RyYXRlZ3lcbiAgICApO1xuICAgIGlmIChyZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICB0aHJvd1N0YXRpY0hhbmRsZXJBYm9ydGVkRXJyb3IocmVxdWVzdCwgaXNSb3V0ZVJlcXVlc3QpO1xuICAgIH1cbiAgICBsZXQgY29udGV4dCA9IHByb2Nlc3NSb3V0ZUxvYWRlckRhdGEoXG4gICAgICBtYXRjaGVzLFxuICAgICAgcmVzdWx0cyxcbiAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHQsXG4gICAgICB0cnVlLFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmdcbiAgICApO1xuICAgIGxldCBleGVjdXRlZExvYWRlcnMgPSBuZXcgU2V0KFxuICAgICAgbWF0Y2hlc1RvTG9hZC5tYXAoKG1hdGNoKSA9PiBtYXRjaC5yb3V0ZS5pZClcbiAgICApO1xuICAgIG1hdGNoZXMuZm9yRWFjaCgobWF0Y2gpID0+IHtcbiAgICAgIGlmICghZXhlY3V0ZWRMb2FkZXJzLmhhcyhtYXRjaC5yb3V0ZS5pZCkpIHtcbiAgICAgICAgY29udGV4dC5sb2FkZXJEYXRhW21hdGNoLnJvdXRlLmlkXSA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbnRleHQsXG4gICAgICBtYXRjaGVzXG4gICAgfTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBjYWxsRGF0YVN0cmF0ZWd5KHR5cGUsIHJlcXVlc3QsIG1hdGNoZXNUb0xvYWQsIG1hdGNoZXMsIGlzUm91dGVSZXF1ZXN0LCByZXF1ZXN0Q29udGV4dCwgZGF0YVN0cmF0ZWd5KSB7XG4gICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5SW1wbChcbiAgICAgIGRhdGFTdHJhdGVneSB8fCBkZWZhdWx0RGF0YVN0cmF0ZWd5LFxuICAgICAgdHlwZSxcbiAgICAgIG51bGwsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWF0Y2hlc1RvTG9hZCxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBudWxsLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBtYXBSb3V0ZVByb3BlcnRpZXMyLFxuICAgICAgcmVxdWVzdENvbnRleHRcbiAgICApO1xuICAgIGxldCBkYXRhUmVzdWx0cyA9IHt9O1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgbWF0Y2hlcy5tYXAoYXN5bmMgKG1hdGNoKSA9PiB7XG4gICAgICAgIGlmICghKG1hdGNoLnJvdXRlLmlkIGluIHJlc3VsdHMpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHQgPSByZXN1bHRzW21hdGNoLnJvdXRlLmlkXTtcbiAgICAgICAgaWYgKGlzUmVkaXJlY3REYXRhU3RyYXRlZ3lSZXN1bHQocmVzdWx0KSkge1xuICAgICAgICAgIGxldCByZXNwb25zZSA9IHJlc3VsdC5yZXN1bHQ7XG4gICAgICAgICAgdGhyb3cgbm9ybWFsaXplUmVsYXRpdmVSb3V0aW5nUmVkaXJlY3RSZXNwb25zZShcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgIG1hdGNoLnJvdXRlLmlkLFxuICAgICAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgICAgIGJhc2VuYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSZXNwb25zZShyZXN1bHQucmVzdWx0KSAmJiBpc1JvdXRlUmVxdWVzdCkge1xuICAgICAgICAgIHRocm93IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBkYXRhUmVzdWx0c1ttYXRjaC5yb3V0ZS5pZF0gPSBhd2FpdCBjb252ZXJ0RGF0YVN0cmF0ZWd5UmVzdWx0VG9EYXRhUmVzdWx0KHJlc3VsdCk7XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIGRhdGFSZXN1bHRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgZGF0YVJvdXRlcyxcbiAgICBxdWVyeSxcbiAgICBxdWVyeVJvdXRlXG4gIH07XG59XG5mdW5jdGlvbiBnZXRTdGF0aWNDb250ZXh0RnJvbUVycm9yKHJvdXRlcywgY29udGV4dCwgZXJyb3IpIHtcbiAgbGV0IG5ld0NvbnRleHQgPSB7XG4gICAgLi4uY29udGV4dCxcbiAgICBzdGF0dXNDb2RlOiBpc1JvdXRlRXJyb3JSZXNwb25zZShlcnJvcikgPyBlcnJvci5zdGF0dXMgOiA1MDAsXG4gICAgZXJyb3JzOiB7XG4gICAgICBbY29udGV4dC5fZGVlcGVzdFJlbmRlcmVkQm91bmRhcnlJZCB8fCByb3V0ZXNbMF0uaWRdOiBlcnJvclxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIG5ld0NvbnRleHQ7XG59XG5mdW5jdGlvbiB0aHJvd1N0YXRpY0hhbmRsZXJBYm9ydGVkRXJyb3IocmVxdWVzdCwgaXNSb3V0ZVJlcXVlc3QpIHtcbiAgaWYgKHJlcXVlc3Quc2lnbmFsLnJlYXNvbiAhPT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgcmVxdWVzdC5zaWduYWwucmVhc29uO1xuICB9XG4gIGxldCBtZXRob2QgPSBpc1JvdXRlUmVxdWVzdCA/IFwicXVlcnlSb3V0ZVwiIDogXCJxdWVyeVwiO1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYCR7bWV0aG9kfSgpIGNhbGwgYWJvcnRlZCB3aXRob3V0IGFuIFxcYEFib3J0U2lnbmFsLnJlYXNvblxcYDogJHtyZXF1ZXN0Lm1ldGhvZH0gJHtyZXF1ZXN0LnVybH1gXG4gICk7XG59XG5mdW5jdGlvbiBpc1N1Ym1pc3Npb25OYXZpZ2F0aW9uKG9wdHMpIHtcbiAgcmV0dXJuIG9wdHMgIT0gbnVsbCAmJiAoXCJmb3JtRGF0YVwiIGluIG9wdHMgJiYgb3B0cy5mb3JtRGF0YSAhPSBudWxsIHx8IFwiYm9keVwiIGluIG9wdHMgJiYgb3B0cy5ib2R5ICE9PSB2b2lkIDApO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplVG8obG9jYXRpb24sIG1hdGNoZXMsIGJhc2VuYW1lLCB0bywgZnJvbVJvdXRlSWQsIHJlbGF0aXZlKSB7XG4gIGxldCBjb250ZXh0dWFsTWF0Y2hlcztcbiAgbGV0IGFjdGl2ZVJvdXRlTWF0Y2g7XG4gIGlmIChmcm9tUm91dGVJZCkge1xuICAgIGNvbnRleHR1YWxNYXRjaGVzID0gW107XG4gICAgZm9yIChsZXQgbWF0Y2ggb2YgbWF0Y2hlcykge1xuICAgICAgY29udGV4dHVhbE1hdGNoZXMucHVzaChtYXRjaCk7XG4gICAgICBpZiAobWF0Y2gucm91dGUuaWQgPT09IGZyb21Sb3V0ZUlkKSB7XG4gICAgICAgIGFjdGl2ZVJvdXRlTWF0Y2ggPSBtYXRjaDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnRleHR1YWxNYXRjaGVzID0gbWF0Y2hlcztcbiAgICBhY3RpdmVSb3V0ZU1hdGNoID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdO1xuICB9XG4gIGxldCBwYXRoID0gcmVzb2x2ZVRvKFxuICAgIHRvID8gdG8gOiBcIi5cIixcbiAgICBnZXRSZXNvbHZlVG9NYXRjaGVzKGNvbnRleHR1YWxNYXRjaGVzKSxcbiAgICBzdHJpcEJhc2VuYW1lKGxvY2F0aW9uLnBhdGhuYW1lLCBiYXNlbmFtZSkgfHwgbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgcmVsYXRpdmUgPT09IFwicGF0aFwiXG4gICk7XG4gIGlmICh0byA9PSBudWxsKSB7XG4gICAgcGF0aC5zZWFyY2ggPSBsb2NhdGlvbi5zZWFyY2g7XG4gICAgcGF0aC5oYXNoID0gbG9jYXRpb24uaGFzaDtcbiAgfVxuICBpZiAoKHRvID09IG51bGwgfHwgdG8gPT09IFwiXCIgfHwgdG8gPT09IFwiLlwiKSAmJiBhY3RpdmVSb3V0ZU1hdGNoKSB7XG4gICAgbGV0IG5ha2VkSW5kZXggPSBoYXNOYWtlZEluZGV4UXVlcnkocGF0aC5zZWFyY2gpO1xuICAgIGlmIChhY3RpdmVSb3V0ZU1hdGNoLnJvdXRlLmluZGV4ICYmICFuYWtlZEluZGV4KSB7XG4gICAgICBwYXRoLnNlYXJjaCA9IHBhdGguc2VhcmNoID8gcGF0aC5zZWFyY2gucmVwbGFjZSgvXlxcPy8sIFwiP2luZGV4JlwiKSA6IFwiP2luZGV4XCI7XG4gICAgfSBlbHNlIGlmICghYWN0aXZlUm91dGVNYXRjaC5yb3V0ZS5pbmRleCAmJiBuYWtlZEluZGV4KSB7XG4gICAgICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXRoLnNlYXJjaCk7XG4gICAgICBsZXQgaW5kZXhWYWx1ZXMgPSBwYXJhbXMuZ2V0QWxsKFwiaW5kZXhcIik7XG4gICAgICBwYXJhbXMuZGVsZXRlKFwiaW5kZXhcIik7XG4gICAgICBpbmRleFZhbHVlcy5maWx0ZXIoKHYpID0+IHYpLmZvckVhY2goKHYpID0+IHBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB2KSk7XG4gICAgICBsZXQgcXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgIHBhdGguc2VhcmNoID0gcXMgPyBgPyR7cXN9YCA6IFwiXCI7XG4gICAgfVxuICB9XG4gIGlmIChiYXNlbmFtZSAhPT0gXCIvXCIpIHtcbiAgICBwYXRoLnBhdGhuYW1lID0gcGF0aC5wYXRobmFtZSA9PT0gXCIvXCIgPyBiYXNlbmFtZSA6IGpvaW5QYXRocyhbYmFzZW5hbWUsIHBhdGgucGF0aG5hbWVdKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlUGF0aChwYXRoKTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hdmlnYXRlT3B0aW9ucyhpc0ZldGNoZXIsIHBhdGgsIG9wdHMpIHtcbiAgaWYgKCFvcHRzIHx8ICFpc1N1Ym1pc3Npb25OYXZpZ2F0aW9uKG9wdHMpKSB7XG4gICAgcmV0dXJuIHsgcGF0aCB9O1xuICB9XG4gIGlmIChvcHRzLmZvcm1NZXRob2QgJiYgIWlzVmFsaWRNZXRob2Qob3B0cy5mb3JtTWV0aG9kKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXRoLFxuICAgICAgZXJyb3I6IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA1LCB7IG1ldGhvZDogb3B0cy5mb3JtTWV0aG9kIH0pXG4gICAgfTtcbiAgfVxuICBsZXQgZ2V0SW52YWxpZEJvZHlFcnJvciA9ICgpID0+ICh7XG4gICAgcGF0aCxcbiAgICBlcnJvcjogZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDAsIHsgdHlwZTogXCJpbnZhbGlkLWJvZHlcIiB9KVxuICB9KTtcbiAgbGV0IHJhd0Zvcm1NZXRob2QgPSBvcHRzLmZvcm1NZXRob2QgfHwgXCJnZXRcIjtcbiAgbGV0IGZvcm1NZXRob2QgPSByYXdGb3JtTWV0aG9kLnRvVXBwZXJDYXNlKCk7XG4gIGxldCBmb3JtQWN0aW9uID0gc3RyaXBIYXNoRnJvbVBhdGgocGF0aCk7XG4gIGlmIChvcHRzLmJvZHkgIT09IHZvaWQgMCkge1xuICAgIGlmIChvcHRzLmZvcm1FbmNUeXBlID09PSBcInRleHQvcGxhaW5cIikge1xuICAgICAgaWYgKCFpc011dGF0aW9uTWV0aG9kKGZvcm1NZXRob2QpKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgICB9XG4gICAgICBsZXQgdGV4dCA9IHR5cGVvZiBvcHRzLmJvZHkgPT09IFwic3RyaW5nXCIgPyBvcHRzLmJvZHkgOiBvcHRzLmJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSB8fCBvcHRzLmJvZHkgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMgPyAoXG4gICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm0tY29udHJvbC1pbmZyYXN0cnVjdHVyZS5odG1sI3BsYWluLXRleHQtZm9ybS1kYXRhXG4gICAgICAgIEFycmF5LmZyb20ob3B0cy5ib2R5LmVudHJpZXMoKSkucmVkdWNlKFxuICAgICAgICAgIChhY2MsIFtuYW1lLCB2YWx1ZV0pID0+IGAke2FjY30ke25hbWV9PSR7dmFsdWV9XG5gLFxuICAgICAgICAgIFwiXCJcbiAgICAgICAgKVxuICAgICAgKSA6IFN0cmluZyhvcHRzLmJvZHkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgc3VibWlzc2lvbjoge1xuICAgICAgICAgIGZvcm1NZXRob2QsXG4gICAgICAgICAgZm9ybUFjdGlvbixcbiAgICAgICAgICBmb3JtRW5jVHlwZTogb3B0cy5mb3JtRW5jVHlwZSxcbiAgICAgICAgICBmb3JtRGF0YTogdm9pZCAwLFxuICAgICAgICAgIGpzb246IHZvaWQgMCxcbiAgICAgICAgICB0ZXh0XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChvcHRzLmZvcm1FbmNUeXBlID09PSBcImFwcGxpY2F0aW9uL2pzb25cIikge1xuICAgICAgaWYgKCFpc011dGF0aW9uTWV0aG9kKGZvcm1NZXRob2QpKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBsZXQganNvbiA9IHR5cGVvZiBvcHRzLmJvZHkgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKG9wdHMuYm9keSkgOiBvcHRzLmJvZHk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdWJtaXNzaW9uOiB7XG4gICAgICAgICAgICBmb3JtTWV0aG9kLFxuICAgICAgICAgICAgZm9ybUFjdGlvbixcbiAgICAgICAgICAgIGZvcm1FbmNUeXBlOiBvcHRzLmZvcm1FbmNUeXBlLFxuICAgICAgICAgICAgZm9ybURhdGE6IHZvaWQgMCxcbiAgICAgICAgICAgIGpzb24sXG4gICAgICAgICAgICB0ZXh0OiB2b2lkIDBcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGludmFyaWFudChcbiAgICB0eXBlb2YgRm9ybURhdGEgPT09IFwiZnVuY3Rpb25cIixcbiAgICBcIkZvcm1EYXRhIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudFwiXG4gICk7XG4gIGxldCBzZWFyY2hQYXJhbXM7XG4gIGxldCBmb3JtRGF0YTtcbiAgaWYgKG9wdHMuZm9ybURhdGEpIHtcbiAgICBzZWFyY2hQYXJhbXMgPSBjb252ZXJ0Rm9ybURhdGFUb1NlYXJjaFBhcmFtcyhvcHRzLmZvcm1EYXRhKTtcbiAgICBmb3JtRGF0YSA9IG9wdHMuZm9ybURhdGE7XG4gIH0gZWxzZSBpZiAob3B0cy5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICBzZWFyY2hQYXJhbXMgPSBjb252ZXJ0Rm9ybURhdGFUb1NlYXJjaFBhcmFtcyhvcHRzLmJvZHkpO1xuICAgIGZvcm1EYXRhID0gb3B0cy5ib2R5O1xuICB9IGVsc2UgaWYgKG9wdHMuYm9keSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcykge1xuICAgIHNlYXJjaFBhcmFtcyA9IG9wdHMuYm9keTtcbiAgICBmb3JtRGF0YSA9IGNvbnZlcnRTZWFyY2hQYXJhbXNUb0Zvcm1EYXRhKHNlYXJjaFBhcmFtcyk7XG4gIH0gZWxzZSBpZiAob3B0cy5ib2R5ID09IG51bGwpIHtcbiAgICBzZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhvcHRzLmJvZHkpO1xuICAgICAgZm9ybURhdGEgPSBjb252ZXJ0U2VhcmNoUGFyYW1zVG9Gb3JtRGF0YShzZWFyY2hQYXJhbXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgfVxuICB9XG4gIGxldCBzdWJtaXNzaW9uID0ge1xuICAgIGZvcm1NZXRob2QsXG4gICAgZm9ybUFjdGlvbixcbiAgICBmb3JtRW5jVHlwZTogb3B0cyAmJiBvcHRzLmZvcm1FbmNUeXBlIHx8IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIsXG4gICAgZm9ybURhdGEsXG4gICAganNvbjogdm9pZCAwLFxuICAgIHRleHQ6IHZvaWQgMFxuICB9O1xuICBpZiAoaXNNdXRhdGlvbk1ldGhvZChzdWJtaXNzaW9uLmZvcm1NZXRob2QpKSB7XG4gICAgcmV0dXJuIHsgcGF0aCwgc3VibWlzc2lvbiB9O1xuICB9XG4gIGxldCBwYXJzZWRQYXRoID0gcGFyc2VQYXRoKHBhdGgpO1xuICBpZiAoaXNGZXRjaGVyICYmIHBhcnNlZFBhdGguc2VhcmNoICYmIGhhc05ha2VkSW5kZXhRdWVyeShwYXJzZWRQYXRoLnNlYXJjaCkpIHtcbiAgICBzZWFyY2hQYXJhbXMuYXBwZW5kKFwiaW5kZXhcIiwgXCJcIik7XG4gIH1cbiAgcGFyc2VkUGF0aC5zZWFyY2ggPSBgPyR7c2VhcmNoUGFyYW1zfWA7XG4gIHJldHVybiB7IHBhdGg6IGNyZWF0ZVBhdGgocGFyc2VkUGF0aCksIHN1Ym1pc3Npb24gfTtcbn1cbmZ1bmN0aW9uIGdldExvYWRlck1hdGNoZXNVbnRpbEJvdW5kYXJ5KG1hdGNoZXMsIGJvdW5kYXJ5SWQsIGluY2x1ZGVCb3VuZGFyeSA9IGZhbHNlKSB7XG4gIGxldCBpbmRleCA9IG1hdGNoZXMuZmluZEluZGV4KChtKSA9PiBtLnJvdXRlLmlkID09PSBib3VuZGFyeUlkKTtcbiAgaWYgKGluZGV4ID49IDApIHtcbiAgICByZXR1cm4gbWF0Y2hlcy5zbGljZSgwLCBpbmNsdWRlQm91bmRhcnkgPyBpbmRleCArIDEgOiBpbmRleCk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXM7XG59XG5mdW5jdGlvbiBnZXRNYXRjaGVzVG9Mb2FkKGhpc3RvcnksIHN0YXRlLCBtYXRjaGVzLCBzdWJtaXNzaW9uLCBsb2NhdGlvbiwgaW5pdGlhbEh5ZHJhdGlvbiwgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCwgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLCBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLCBmZXRjaExvYWRNYXRjaGVzLCBmZXRjaFJlZGlyZWN0SWRzLCByb3V0ZXNUb1VzZSwgYmFzZW5hbWUsIHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgbGV0IGFjdGlvblJlc3VsdCA9IHBlbmRpbmdBY3Rpb25SZXN1bHQgPyBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8gcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5lcnJvciA6IHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0uZGF0YSA6IHZvaWQgMDtcbiAgbGV0IGN1cnJlbnRVcmwgPSBoaXN0b3J5LmNyZWF0ZVVSTChzdGF0ZS5sb2NhdGlvbik7XG4gIGxldCBuZXh0VXJsID0gaGlzdG9yeS5jcmVhdGVVUkwobG9jYXRpb24pO1xuICBsZXQgYm91bmRhcnlNYXRjaGVzID0gbWF0Y2hlcztcbiAgaWYgKGluaXRpYWxIeWRyYXRpb24gJiYgc3RhdGUuZXJyb3JzKSB7XG4gICAgYm91bmRhcnlNYXRjaGVzID0gZ2V0TG9hZGVyTWF0Y2hlc1VudGlsQm91bmRhcnkoXG4gICAgICBtYXRjaGVzLFxuICAgICAgT2JqZWN0LmtleXMoc3RhdGUuZXJyb3JzKVswXSxcbiAgICAgIHRydWVcbiAgICApO1xuICB9IGVsc2UgaWYgKHBlbmRpbmdBY3Rpb25SZXN1bHQgJiYgaXNFcnJvclJlc3VsdChwZW5kaW5nQWN0aW9uUmVzdWx0WzFdKSkge1xuICAgIGJvdW5kYXJ5TWF0Y2hlcyA9IGdldExvYWRlck1hdGNoZXNVbnRpbEJvdW5kYXJ5KFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHRbMF1cbiAgICApO1xuICB9XG4gIGxldCBhY3Rpb25TdGF0dXMgPSBwZW5kaW5nQWN0aW9uUmVzdWx0ID8gcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5zdGF0dXNDb2RlIDogdm9pZCAwO1xuICBsZXQgc2hvdWxkU2tpcFJldmFsaWRhdGlvbiA9IGFjdGlvblN0YXR1cyAmJiBhY3Rpb25TdGF0dXMgPj0gNDAwO1xuICBsZXQgbmF2aWdhdGlvbk1hdGNoZXMgPSBib3VuZGFyeU1hdGNoZXMuZmlsdGVyKChtYXRjaCwgaW5kZXgpID0+IHtcbiAgICBsZXQgeyByb3V0ZSB9ID0gbWF0Y2g7XG4gICAgaWYgKHJvdXRlLmxhenkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAocm91dGUubG9hZGVyID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGluaXRpYWxIeWRyYXRpb24pIHtcbiAgICAgIHJldHVybiBzaG91bGRMb2FkUm91dGVPbkh5ZHJhdGlvbihyb3V0ZSwgc3RhdGUubG9hZGVyRGF0YSwgc3RhdGUuZXJyb3JzKTtcbiAgICB9XG4gICAgaWYgKGlzTmV3TG9hZGVyKHN0YXRlLmxvYWRlckRhdGEsIHN0YXRlLm1hdGNoZXNbaW5kZXhdLCBtYXRjaCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgY3VycmVudFJvdXRlTWF0Y2ggPSBzdGF0ZS5tYXRjaGVzW2luZGV4XTtcbiAgICBsZXQgbmV4dFJvdXRlTWF0Y2ggPSBtYXRjaDtcbiAgICByZXR1cm4gc2hvdWxkUmV2YWxpZGF0ZUxvYWRlcihtYXRjaCwge1xuICAgICAgY3VycmVudFVybCxcbiAgICAgIGN1cnJlbnRQYXJhbXM6IGN1cnJlbnRSb3V0ZU1hdGNoLnBhcmFtcyxcbiAgICAgIG5leHRVcmwsXG4gICAgICBuZXh0UGFyYW1zOiBuZXh0Um91dGVNYXRjaC5wYXJhbXMsXG4gICAgICAuLi5zdWJtaXNzaW9uLFxuICAgICAgYWN0aW9uUmVzdWx0LFxuICAgICAgYWN0aW9uU3RhdHVzLFxuICAgICAgZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6IHNob3VsZFNraXBSZXZhbGlkYXRpb24gPyBmYWxzZSA6IChcbiAgICAgICAgLy8gRm9yY2VkIHJldmFsaWRhdGlvbiBkdWUgdG8gc3VibWlzc2lvbiwgdXNlUmV2YWxpZGF0b3IsIG9yIFgtUmVtaXgtUmV2YWxpZGF0ZVxuICAgICAgICBpc1JldmFsaWRhdGlvblJlcXVpcmVkIHx8IGN1cnJlbnRVcmwucGF0aG5hbWUgKyBjdXJyZW50VXJsLnNlYXJjaCA9PT0gbmV4dFVybC5wYXRobmFtZSArIG5leHRVcmwuc2VhcmNoIHx8IC8vIFNlYXJjaCBwYXJhbXMgYWZmZWN0IGFsbCBsb2FkZXJzXG4gICAgICAgIGN1cnJlbnRVcmwuc2VhcmNoICE9PSBuZXh0VXJsLnNlYXJjaCB8fCBpc05ld1JvdXRlSW5zdGFuY2UoY3VycmVudFJvdXRlTWF0Y2gsIG5leHRSb3V0ZU1hdGNoKVxuICAgICAgKVxuICAgIH0pO1xuICB9KTtcbiAgbGV0IHJldmFsaWRhdGluZ0ZldGNoZXJzID0gW107XG4gIGZldGNoTG9hZE1hdGNoZXMuZm9yRWFjaCgoZiwga2V5KSA9PiB7XG4gICAgaWYgKGluaXRpYWxIeWRyYXRpb24gfHwgIW1hdGNoZXMuc29tZSgobSkgPT4gbS5yb3V0ZS5pZCA9PT0gZi5yb3V0ZUlkKSB8fCBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBmZXRjaGVyTWF0Y2hlcyA9IG1hdGNoUm91dGVzKHJvdXRlc1RvVXNlLCBmLnBhdGgsIGJhc2VuYW1lKTtcbiAgICBpZiAoIWZldGNoZXJNYXRjaGVzKSB7XG4gICAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5wdXNoKHtcbiAgICAgICAga2V5LFxuICAgICAgICByb3V0ZUlkOiBmLnJvdXRlSWQsXG4gICAgICAgIHBhdGg6IGYucGF0aCxcbiAgICAgICAgbWF0Y2hlczogbnVsbCxcbiAgICAgICAgbWF0Y2g6IG51bGwsXG4gICAgICAgIGNvbnRyb2xsZXI6IG51bGxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmV0Y2hlciA9IHN0YXRlLmZldGNoZXJzLmdldChrZXkpO1xuICAgIGxldCBmZXRjaGVyTWF0Y2ggPSBnZXRUYXJnZXRNYXRjaChmZXRjaGVyTWF0Y2hlcywgZi5wYXRoKTtcbiAgICBsZXQgc2hvdWxkUmV2YWxpZGF0ZSA9IGZhbHNlO1xuICAgIGlmIChmZXRjaFJlZGlyZWN0SWRzLmhhcyhrZXkpKSB7XG4gICAgICBzaG91bGRSZXZhbGlkYXRlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChjYW5jZWxsZWRGZXRjaGVyTG9hZHMuaGFzKGtleSkpIHtcbiAgICAgIGNhbmNlbGxlZEZldGNoZXJMb2Fkcy5kZWxldGUoa2V5KTtcbiAgICAgIHNob3VsZFJldmFsaWRhdGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZmV0Y2hlciAmJiBmZXRjaGVyLnN0YXRlICE9PSBcImlkbGVcIiAmJiBmZXRjaGVyLmRhdGEgPT09IHZvaWQgMCkge1xuICAgICAgc2hvdWxkUmV2YWxpZGF0ZSA9IGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNob3VsZFJldmFsaWRhdGUgPSBzaG91bGRSZXZhbGlkYXRlTG9hZGVyKGZldGNoZXJNYXRjaCwge1xuICAgICAgICBjdXJyZW50VXJsLFxuICAgICAgICBjdXJyZW50UGFyYW1zOiBzdGF0ZS5tYXRjaGVzW3N0YXRlLm1hdGNoZXMubGVuZ3RoIC0gMV0ucGFyYW1zLFxuICAgICAgICBuZXh0VXJsLFxuICAgICAgICBuZXh0UGFyYW1zOiBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0ucGFyYW1zLFxuICAgICAgICAuLi5zdWJtaXNzaW9uLFxuICAgICAgICBhY3Rpb25SZXN1bHQsXG4gICAgICAgIGFjdGlvblN0YXR1cyxcbiAgICAgICAgZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6IHNob3VsZFNraXBSZXZhbGlkYXRpb24gPyBmYWxzZSA6IGlzUmV2YWxpZGF0aW9uUmVxdWlyZWRcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoc2hvdWxkUmV2YWxpZGF0ZSkge1xuICAgICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMucHVzaCh7XG4gICAgICAgIGtleSxcbiAgICAgICAgcm91dGVJZDogZi5yb3V0ZUlkLFxuICAgICAgICBwYXRoOiBmLnBhdGgsXG4gICAgICAgIG1hdGNoZXM6IGZldGNoZXJNYXRjaGVzLFxuICAgICAgICBtYXRjaDogZmV0Y2hlck1hdGNoLFxuICAgICAgICBjb250cm9sbGVyOiBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBbbmF2aWdhdGlvbk1hdGNoZXMsIHJldmFsaWRhdGluZ0ZldGNoZXJzXTtcbn1cbmZ1bmN0aW9uIHNob3VsZExvYWRSb3V0ZU9uSHlkcmF0aW9uKHJvdXRlLCBsb2FkZXJEYXRhLCBlcnJvcnMpIHtcbiAgaWYgKHJvdXRlLmxhenkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoIXJvdXRlLmxvYWRlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBsZXQgaGFzRGF0YSA9IGxvYWRlckRhdGEgIT0gbnVsbCAmJiBsb2FkZXJEYXRhW3JvdXRlLmlkXSAhPT0gdm9pZCAwO1xuICBsZXQgaGFzRXJyb3IgPSBlcnJvcnMgIT0gbnVsbCAmJiBlcnJvcnNbcm91dGUuaWRdICE9PSB2b2lkIDA7XG4gIGlmICghaGFzRGF0YSAmJiBoYXNFcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIHJvdXRlLmxvYWRlciA9PT0gXCJmdW5jdGlvblwiICYmIHJvdXRlLmxvYWRlci5oeWRyYXRlID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuICFoYXNEYXRhICYmICFoYXNFcnJvcjtcbn1cbmZ1bmN0aW9uIGlzTmV3TG9hZGVyKGN1cnJlbnRMb2FkZXJEYXRhLCBjdXJyZW50TWF0Y2gsIG1hdGNoKSB7XG4gIGxldCBpc05ldyA9IChcbiAgICAvLyBbYV0gLT4gW2EsIGJdXG4gICAgIWN1cnJlbnRNYXRjaCB8fCAvLyBbYSwgYl0gLT4gW2EsIGNdXG4gICAgbWF0Y2gucm91dGUuaWQgIT09IGN1cnJlbnRNYXRjaC5yb3V0ZS5pZFxuICApO1xuICBsZXQgaXNNaXNzaW5nRGF0YSA9ICFjdXJyZW50TG9hZGVyRGF0YS5oYXNPd25Qcm9wZXJ0eShtYXRjaC5yb3V0ZS5pZCk7XG4gIHJldHVybiBpc05ldyB8fCBpc01pc3NpbmdEYXRhO1xufVxuZnVuY3Rpb24gaXNOZXdSb3V0ZUluc3RhbmNlKGN1cnJlbnRNYXRjaCwgbWF0Y2gpIHtcbiAgbGV0IGN1cnJlbnRQYXRoID0gY3VycmVudE1hdGNoLnJvdXRlLnBhdGg7XG4gIHJldHVybiAoXG4gICAgLy8gcGFyYW0gY2hhbmdlIGZvciB0aGlzIG1hdGNoLCAvdXNlcnMvMTIzIC0+IC91c2Vycy80NTZcbiAgICBjdXJyZW50TWF0Y2gucGF0aG5hbWUgIT09IG1hdGNoLnBhdGhuYW1lIHx8IC8vIHNwbGF0IHBhcmFtIGNoYW5nZWQsIHdoaWNoIGlzIG5vdCBwcmVzZW50IGluIG1hdGNoLnBhdGhcbiAgICAvLyBlLmcuIC9maWxlcy9pbWFnZXMvYXZhdGFyLmpwZyAtPiBmaWxlcy9maW5hbmNlcy54bHNcbiAgICBjdXJyZW50UGF0aCAhPSBudWxsICYmIGN1cnJlbnRQYXRoLmVuZHNXaXRoKFwiKlwiKSAmJiBjdXJyZW50TWF0Y2gucGFyYW1zW1wiKlwiXSAhPT0gbWF0Y2gucGFyYW1zW1wiKlwiXVxuICApO1xufVxuZnVuY3Rpb24gc2hvdWxkUmV2YWxpZGF0ZUxvYWRlcihsb2FkZXJNYXRjaCwgYXJnKSB7XG4gIGlmIChsb2FkZXJNYXRjaC5yb3V0ZS5zaG91bGRSZXZhbGlkYXRlKSB7XG4gICAgbGV0IHJvdXRlQ2hvaWNlID0gbG9hZGVyTWF0Y2gucm91dGUuc2hvdWxkUmV2YWxpZGF0ZShhcmcpO1xuICAgIGlmICh0eXBlb2Ygcm91dGVDaG9pY2UgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gcm91dGVDaG9pY2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcmcuZGVmYXVsdFNob3VsZFJldmFsaWRhdGU7XG59XG5mdW5jdGlvbiBwYXRjaFJvdXRlc0ltcGwocm91dGVJZCwgY2hpbGRyZW4sIHJvdXRlc1RvVXNlLCBtYW5pZmVzdCwgbWFwUm91dGVQcm9wZXJ0aWVzMikge1xuICBsZXQgY2hpbGRyZW5Ub1BhdGNoO1xuICBpZiAocm91dGVJZCkge1xuICAgIGxldCByb3V0ZSA9IG1hbmlmZXN0W3JvdXRlSWRdO1xuICAgIGludmFyaWFudChcbiAgICAgIHJvdXRlLFxuICAgICAgYE5vIHJvdXRlIGZvdW5kIHRvIHBhdGNoIGNoaWxkcmVuIGludG86IHJvdXRlSWQgPSAke3JvdXRlSWR9YFxuICAgICk7XG4gICAgaWYgKCFyb3V0ZS5jaGlsZHJlbikge1xuICAgICAgcm91dGUuY2hpbGRyZW4gPSBbXTtcbiAgICB9XG4gICAgY2hpbGRyZW5Ub1BhdGNoID0gcm91dGUuY2hpbGRyZW47XG4gIH0gZWxzZSB7XG4gICAgY2hpbGRyZW5Ub1BhdGNoID0gcm91dGVzVG9Vc2U7XG4gIH1cbiAgbGV0IHVuaXF1ZUNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKFxuICAgIChuZXdSb3V0ZSkgPT4gIWNoaWxkcmVuVG9QYXRjaC5zb21lKFxuICAgICAgKGV4aXN0aW5nUm91dGUpID0+IGlzU2FtZVJvdXRlKG5ld1JvdXRlLCBleGlzdGluZ1JvdXRlKVxuICAgIClcbiAgKTtcbiAgbGV0IG5ld1JvdXRlcyA9IGNvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXMoXG4gICAgdW5pcXVlQ2hpbGRyZW4sXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzMixcbiAgICBbcm91dGVJZCB8fCBcIl9cIiwgXCJwYXRjaFwiLCBTdHJpbmcoY2hpbGRyZW5Ub1BhdGNoPy5sZW5ndGggfHwgXCIwXCIpXSxcbiAgICBtYW5pZmVzdFxuICApO1xuICBjaGlsZHJlblRvUGF0Y2gucHVzaCguLi5uZXdSb3V0ZXMpO1xufVxuZnVuY3Rpb24gaXNTYW1lUm91dGUobmV3Um91dGUsIGV4aXN0aW5nUm91dGUpIHtcbiAgaWYgKFwiaWRcIiBpbiBuZXdSb3V0ZSAmJiBcImlkXCIgaW4gZXhpc3RpbmdSb3V0ZSAmJiBuZXdSb3V0ZS5pZCA9PT0gZXhpc3RpbmdSb3V0ZS5pZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICghKG5ld1JvdXRlLmluZGV4ID09PSBleGlzdGluZ1JvdXRlLmluZGV4ICYmIG5ld1JvdXRlLnBhdGggPT09IGV4aXN0aW5nUm91dGUucGF0aCAmJiBuZXdSb3V0ZS5jYXNlU2Vuc2l0aXZlID09PSBleGlzdGluZ1JvdXRlLmNhc2VTZW5zaXRpdmUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICgoIW5ld1JvdXRlLmNoaWxkcmVuIHx8IG5ld1JvdXRlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkgJiYgKCFleGlzdGluZ1JvdXRlLmNoaWxkcmVuIHx8IGV4aXN0aW5nUm91dGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBuZXdSb3V0ZS5jaGlsZHJlbi5ldmVyeShcbiAgICAoYUNoaWxkLCBpKSA9PiBleGlzdGluZ1JvdXRlLmNoaWxkcmVuPy5zb21lKChiQ2hpbGQpID0+IGlzU2FtZVJvdXRlKGFDaGlsZCwgYkNoaWxkKSlcbiAgKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGxvYWRMYXp5Um91dGVNb2R1bGUocm91dGUsIG1hcFJvdXRlUHJvcGVydGllczIsIG1hbmlmZXN0KSB7XG4gIGlmICghcm91dGUubGF6eSkge1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgbGF6eVJvdXRlID0gYXdhaXQgcm91dGUubGF6eSgpO1xuICBpZiAoIXJvdXRlLmxhenkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHJvdXRlVG9VcGRhdGUgPSBtYW5pZmVzdFtyb3V0ZS5pZF07XG4gIGludmFyaWFudChyb3V0ZVRvVXBkYXRlLCBcIk5vIHJvdXRlIGZvdW5kIGluIG1hbmlmZXN0XCIpO1xuICBsZXQgcm91dGVVcGRhdGVzID0ge307XG4gIGZvciAobGV0IGxhenlSb3V0ZVByb3BlcnR5IGluIGxhenlSb3V0ZSkge1xuICAgIGxldCBzdGF0aWNSb3V0ZVZhbHVlID0gcm91dGVUb1VwZGF0ZVtsYXp5Um91dGVQcm9wZXJ0eV07XG4gICAgbGV0IGlzUHJvcGVydHlTdGF0aWNhbGx5RGVmaW5lZCA9IHN0YXRpY1JvdXRlVmFsdWUgIT09IHZvaWQgMCAmJiAvLyBUaGlzIHByb3BlcnR5IGlzbid0IHN0YXRpYyBzaW5jZSBpdCBzaG91bGQgYWx3YXlzIGJlIHVwZGF0ZWQgYmFzZWRcbiAgICAvLyBvbiB0aGUgcm91dGUgdXBkYXRlc1xuICAgIGxhenlSb3V0ZVByb3BlcnR5ICE9PSBcImhhc0Vycm9yQm91bmRhcnlcIjtcbiAgICB3YXJuaW5nKFxuICAgICAgIWlzUHJvcGVydHlTdGF0aWNhbGx5RGVmaW5lZCxcbiAgICAgIGBSb3V0ZSBcIiR7cm91dGVUb1VwZGF0ZS5pZH1cIiBoYXMgYSBzdGF0aWMgcHJvcGVydHkgXCIke2xhenlSb3V0ZVByb3BlcnR5fVwiIGRlZmluZWQgYnV0IGl0cyBsYXp5IGZ1bmN0aW9uIGlzIGFsc28gcmV0dXJuaW5nIGEgdmFsdWUgZm9yIHRoaXMgcHJvcGVydHkuIFRoZSBsYXp5IHJvdXRlIHByb3BlcnR5IFwiJHtsYXp5Um91dGVQcm9wZXJ0eX1cIiB3aWxsIGJlIGlnbm9yZWQuYFxuICAgICk7XG4gICAgaWYgKCFpc1Byb3BlcnR5U3RhdGljYWxseURlZmluZWQgJiYgIWltbXV0YWJsZVJvdXRlS2V5cy5oYXMobGF6eVJvdXRlUHJvcGVydHkpKSB7XG4gICAgICByb3V0ZVVwZGF0ZXNbbGF6eVJvdXRlUHJvcGVydHldID0gbGF6eVJvdXRlW2xhenlSb3V0ZVByb3BlcnR5XTtcbiAgICB9XG4gIH1cbiAgT2JqZWN0LmFzc2lnbihyb3V0ZVRvVXBkYXRlLCByb3V0ZVVwZGF0ZXMpO1xuICBPYmplY3QuYXNzaWduKHJvdXRlVG9VcGRhdGUsIHtcbiAgICAvLyBUbyBrZWVwIHRoaW5ncyBmcmFtZXdvcmsgYWdub3N0aWMsIHdlIHVzZSB0aGUgcHJvdmlkZWQgYG1hcFJvdXRlUHJvcGVydGllc2BcbiAgICAvLyBmdW5jdGlvbiB0byBzZXQgdGhlIGZyYW1ld29yay1hd2FyZSBwcm9wZXJ0aWVzIChgZWxlbWVudGAvYGhhc0Vycm9yQm91bmRhcnlgKVxuICAgIC8vIHNpbmNlIHRoZSBsb2dpYyB3aWxsIGRpZmZlciBiZXR3ZWVuIGZyYW1ld29ya3MuXG4gICAgLi4ubWFwUm91dGVQcm9wZXJ0aWVzMihyb3V0ZVRvVXBkYXRlKSxcbiAgICBsYXp5OiB2b2lkIDBcbiAgfSk7XG59XG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0RGF0YVN0cmF0ZWd5KHtcbiAgbWF0Y2hlc1xufSkge1xuICBsZXQgbWF0Y2hlc1RvTG9hZCA9IG1hdGNoZXMuZmlsdGVyKChtKSA9PiBtLnNob3VsZExvYWQpO1xuICBsZXQgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKG1hdGNoZXNUb0xvYWQubWFwKChtKSA9PiBtLnJlc29sdmUoKSkpO1xuICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoXG4gICAgKGFjYywgcmVzdWx0LCBpKSA9PiBPYmplY3QuYXNzaWduKGFjYywgeyBbbWF0Y2hlc1RvTG9hZFtpXS5yb3V0ZS5pZF06IHJlc3VsdCB9KSxcbiAgICB7fVxuICApO1xufVxuYXN5bmMgZnVuY3Rpb24gY2FsbERhdGFTdHJhdGVneUltcGwoZGF0YVN0cmF0ZWd5SW1wbCwgdHlwZSwgc3RhdGUsIHJlcXVlc3QsIG1hdGNoZXNUb0xvYWQsIG1hdGNoZXMsIGZldGNoZXJLZXksIG1hbmlmZXN0LCBtYXBSb3V0ZVByb3BlcnRpZXMyLCByZXF1ZXN0Q29udGV4dCkge1xuICBsZXQgbG9hZFJvdXRlRGVmaW5pdGlvbnNQcm9taXNlcyA9IG1hdGNoZXMubWFwKFxuICAgIChtKSA9PiBtLnJvdXRlLmxhenkgPyBsb2FkTGF6eVJvdXRlTW9kdWxlKG0ucm91dGUsIG1hcFJvdXRlUHJvcGVydGllczIsIG1hbmlmZXN0KSA6IHZvaWQgMFxuICApO1xuICBsZXQgZHNNYXRjaGVzID0gbWF0Y2hlcy5tYXAoKG1hdGNoLCBpKSA9PiB7XG4gICAgbGV0IGxvYWRSb3V0ZVByb21pc2UgPSBsb2FkUm91dGVEZWZpbml0aW9uc1Byb21pc2VzW2ldO1xuICAgIGxldCBzaG91bGRMb2FkID0gbWF0Y2hlc1RvTG9hZC5zb21lKChtKSA9PiBtLnJvdXRlLmlkID09PSBtYXRjaC5yb3V0ZS5pZCk7XG4gICAgbGV0IHJlc29sdmUgPSBhc3luYyAoaGFuZGxlck92ZXJyaWRlKSA9PiB7XG4gICAgICBpZiAoaGFuZGxlck92ZXJyaWRlICYmIHJlcXVlc3QubWV0aG9kID09PSBcIkdFVFwiICYmIChtYXRjaC5yb3V0ZS5sYXp5IHx8IG1hdGNoLnJvdXRlLmxvYWRlcikpIHtcbiAgICAgICAgc2hvdWxkTG9hZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2hvdWxkTG9hZCA/IGNhbGxMb2FkZXJPckFjdGlvbihcbiAgICAgICAgdHlwZSxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIGxvYWRSb3V0ZVByb21pc2UsXG4gICAgICAgIGhhbmRsZXJPdmVycmlkZSxcbiAgICAgICAgcmVxdWVzdENvbnRleHRcbiAgICAgICkgOiBQcm9taXNlLnJlc29sdmUoeyB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLCByZXN1bHQ6IHZvaWQgMCB9KTtcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICAuLi5tYXRjaCxcbiAgICAgIHNob3VsZExvYWQsXG4gICAgICByZXNvbHZlXG4gICAgfTtcbiAgfSk7XG4gIGxldCByZXN1bHRzID0gYXdhaXQgZGF0YVN0cmF0ZWd5SW1wbCh7XG4gICAgbWF0Y2hlczogZHNNYXRjaGVzLFxuICAgIHJlcXVlc3QsXG4gICAgcGFyYW1zOiBtYXRjaGVzWzBdLnBhcmFtcyxcbiAgICBmZXRjaGVyS2V5LFxuICAgIGNvbnRleHQ6IHJlcXVlc3RDb250ZXh0XG4gIH0pO1xuICB0cnkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGxvYWRSb3V0ZURlZmluaXRpb25zUHJvbWlzZXMpO1xuICB9IGNhdGNoIChlKSB7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5hc3luYyBmdW5jdGlvbiBjYWxsTG9hZGVyT3JBY3Rpb24odHlwZSwgcmVxdWVzdCwgbWF0Y2gsIGxvYWRSb3V0ZVByb21pc2UsIGhhbmRsZXJPdmVycmlkZSwgc3RhdGljQ29udGV4dCkge1xuICBsZXQgcmVzdWx0O1xuICBsZXQgb25SZWplY3Q7XG4gIGxldCBydW5IYW5kbGVyID0gKGhhbmRsZXIpID0+IHtcbiAgICBsZXQgcmVqZWN0O1xuICAgIGxldCBhYm9ydFByb21pc2UgPSBuZXcgUHJvbWlzZSgoXywgcikgPT4gcmVqZWN0ID0gcik7XG4gICAgb25SZWplY3QgPSAoKSA9PiByZWplY3QoKTtcbiAgICByZXF1ZXN0LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25SZWplY3QpO1xuICAgIGxldCBhY3R1YWxIYW5kbGVyID0gKGN0eCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBZb3UgY2Fubm90IGNhbGwgdGhlIGhhbmRsZXIgZm9yIGEgcm91dGUgd2hpY2ggZGVmaW5lcyBhIGJvb2xlYW4gXCIke3R5cGV9XCIgW3JvdXRlSWQ6ICR7bWF0Y2gucm91dGUuaWR9XWBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFuZGxlcihcbiAgICAgICAge1xuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgcGFyYW1zOiBtYXRjaC5wYXJhbXMsXG4gICAgICAgICAgY29udGV4dDogc3RhdGljQ29udGV4dFxuICAgICAgICB9LFxuICAgICAgICAuLi5jdHggIT09IHZvaWQgMCA/IFtjdHhdIDogW11cbiAgICAgICk7XG4gICAgfTtcbiAgICBsZXQgaGFuZGxlclByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IHZhbCA9IGF3YWl0IChoYW5kbGVyT3ZlcnJpZGUgPyBoYW5kbGVyT3ZlcnJpZGUoKGN0eCkgPT4gYWN0dWFsSGFuZGxlcihjdHgpKSA6IGFjdHVhbEhhbmRsZXIoKSk7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiZGF0YVwiLCByZXN1bHQ6IHZhbCB9O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImVycm9yXCIsIHJlc3VsdDogZSB9O1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgcmV0dXJuIFByb21pc2UucmFjZShbaGFuZGxlclByb21pc2UsIGFib3J0UHJvbWlzZV0pO1xuICB9O1xuICB0cnkge1xuICAgIGxldCBoYW5kbGVyID0gbWF0Y2gucm91dGVbdHlwZV07XG4gICAgaWYgKGxvYWRSb3V0ZVByb21pc2UpIHtcbiAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgIGxldCBoYW5kbGVyRXJyb3I7XG4gICAgICAgIGxldCBbdmFsdWVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgIC8vIElmIHRoZSBoYW5kbGVyIHRocm93cywgZG9uJ3QgbGV0IGl0IGltbWVkaWF0ZWx5IGJ1YmJsZSBvdXQsXG4gICAgICAgICAgLy8gc2luY2Ugd2UgbmVlZCB0byBsZXQgdGhlIGxhenkoKSBleGVjdXRpb24gZmluaXNoIHNvIHdlIGtub3cgaWYgdGhpc1xuICAgICAgICAgIC8vIHJvdXRlIGhhcyBhIGJvdW5kYXJ5IHRoYXQgY2FuIGhhbmRsZSB0aGUgZXJyb3JcbiAgICAgICAgICBydW5IYW5kbGVyKGhhbmRsZXIpLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVyRXJyb3IgPSBlO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGxvYWRSb3V0ZVByb21pc2VcbiAgICAgICAgXSk7XG4gICAgICAgIGlmIChoYW5kbGVyRXJyb3IgIT09IHZvaWQgMCkge1xuICAgICAgICAgIHRocm93IGhhbmRsZXJFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGxvYWRSb3V0ZVByb21pc2U7XG4gICAgICAgIGhhbmRsZXIgPSBtYXRjaC5yb3V0ZVt0eXBlXTtcbiAgICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgICByZXN1bHQgPSBhd2FpdCBydW5IYW5kbGVyKGhhbmRsZXIpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYWN0aW9uXCIpIHtcbiAgICAgICAgICBsZXQgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCk7XG4gICAgICAgICAgbGV0IHBhdGhuYW1lID0gdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaDtcbiAgICAgICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNSwge1xuICAgICAgICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgcm91dGVJZDogbWF0Y2gucm91dGUuaWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4geyB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLCByZXN1bHQ6IHZvaWQgMCB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaGFuZGxlcikge1xuICAgICAgbGV0IHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICAgICAgbGV0IHBhdGhuYW1lID0gdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaDtcbiAgICAgIHRocm93IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7XG4gICAgICAgIHBhdGhuYW1lXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgcnVuSGFuZGxlcihoYW5kbGVyKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sIHJlc3VsdDogZSB9O1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChvblJlamVjdCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uUmVqZWN0KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnREYXRhU3RyYXRlZ3lSZXN1bHRUb0RhdGFSZXN1bHQoZGF0YVN0cmF0ZWd5UmVzdWx0KSB7XG4gIGxldCB7IHJlc3VsdCwgdHlwZSB9ID0gZGF0YVN0cmF0ZWd5UmVzdWx0O1xuICBpZiAoaXNSZXNwb25zZShyZXN1bHQpKSB7XG4gICAgbGV0IGRhdGEyO1xuICAgIHRyeSB7XG4gICAgICBsZXQgY29udGVudFR5cGUgPSByZXN1bHQuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIik7XG4gICAgICBpZiAoY29udGVudFR5cGUgJiYgL1xcYmFwcGxpY2F0aW9uXFwvanNvblxcYi8udGVzdChjb250ZW50VHlwZSkpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5ib2R5ID09IG51bGwpIHtcbiAgICAgICAgICBkYXRhMiA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0YTIgPSBhd2FpdCByZXN1bHQuanNvbigpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhMiA9IGF3YWl0IHJlc3VsdC50ZXh0KCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLCBlcnJvcjogZSB9O1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gXCJlcnJvclwiIC8qIGVycm9yICovKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgIGVycm9yOiBuZXcgRXJyb3JSZXNwb25zZUltcGwocmVzdWx0LnN0YXR1cywgcmVzdWx0LnN0YXR1c1RleHQsIGRhdGEyKSxcbiAgICAgICAgc3RhdHVzQ29kZTogcmVzdWx0LnN0YXR1cyxcbiAgICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnNcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLFxuICAgICAgZGF0YTogZGF0YTIsXG4gICAgICBzdGF0dXNDb2RlOiByZXN1bHQuc3RhdHVzLFxuICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnNcbiAgICB9O1xuICB9XG4gIGlmICh0eXBlID09PSBcImVycm9yXCIgLyogZXJyb3IgKi8pIHtcbiAgICBpZiAoaXNEYXRhV2l0aFJlc3BvbnNlSW5pdChyZXN1bHQpKSB7XG4gICAgICBpZiAocmVzdWx0LmRhdGEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgICAgICBlcnJvcjogcmVzdWx0LmRhdGEsXG4gICAgICAgICAgc3RhdHVzQ29kZTogcmVzdWx0LmluaXQ/LnN0YXR1c1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gbmV3IEVycm9yUmVzcG9uc2VJbXBsKFxuICAgICAgICByZXN1bHQuaW5pdD8uc3RhdHVzIHx8IDUwMCxcbiAgICAgICAgdm9pZCAwLFxuICAgICAgICByZXN1bHQuZGF0YVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgIGVycm9yOiByZXN1bHQsXG4gICAgICBzdGF0dXNDb2RlOiBpc1JvdXRlRXJyb3JSZXNwb25zZShyZXN1bHQpID8gcmVzdWx0LnN0YXR1cyA6IHZvaWQgMFxuICAgIH07XG4gIH1cbiAgaWYgKGlzRGF0YVdpdGhSZXNwb25zZUluaXQocmVzdWx0KSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLFxuICAgICAgZGF0YTogcmVzdWx0LmRhdGEsXG4gICAgICBzdGF0dXNDb2RlOiByZXN1bHQuaW5pdD8uc3RhdHVzLFxuICAgICAgaGVhZGVyczogcmVzdWx0LmluaXQ/LmhlYWRlcnMgPyBuZXcgSGVhZGVycyhyZXN1bHQuaW5pdC5oZWFkZXJzKSA6IHZvaWQgMFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgdHlwZTogXCJkYXRhXCIgLyogZGF0YSAqLywgZGF0YTogcmVzdWx0IH07XG59XG5mdW5jdGlvbiBub3JtYWxpemVSZWxhdGl2ZVJvdXRpbmdSZWRpcmVjdFJlc3BvbnNlKHJlc3BvbnNlLCByZXF1ZXN0LCByb3V0ZUlkLCBtYXRjaGVzLCBiYXNlbmFtZSkge1xuICBsZXQgbG9jYXRpb24gPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkxvY2F0aW9uXCIpO1xuICBpbnZhcmlhbnQoXG4gICAgbG9jYXRpb24sXG4gICAgXCJSZWRpcmVjdHMgcmV0dXJuZWQvdGhyb3duIGZyb20gbG9hZGVycy9hY3Rpb25zIG11c3QgaGF2ZSBhIExvY2F0aW9uIGhlYWRlclwiXG4gICk7XG4gIGlmICghQUJTT0xVVEVfVVJMX1JFR0VYLnRlc3QobG9jYXRpb24pKSB7XG4gICAgbGV0IHRyaW1tZWRNYXRjaGVzID0gbWF0Y2hlcy5zbGljZShcbiAgICAgIDAsXG4gICAgICBtYXRjaGVzLmZpbmRJbmRleCgobSkgPT4gbS5yb3V0ZS5pZCA9PT0gcm91dGVJZCkgKyAxXG4gICAgKTtcbiAgICBsb2NhdGlvbiA9IG5vcm1hbGl6ZVRvKFxuICAgICAgbmV3IFVSTChyZXF1ZXN0LnVybCksXG4gICAgICB0cmltbWVkTWF0Y2hlcyxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgbG9jYXRpb25cbiAgICApO1xuICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiTG9jYXRpb25cIiwgbG9jYXRpb24pO1xuICB9XG4gIHJldHVybiByZXNwb25zZTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlZGlyZWN0TG9jYXRpb24obG9jYXRpb24sIGN1cnJlbnRVcmwsIGJhc2VuYW1lKSB7XG4gIGlmIChBQlNPTFVURV9VUkxfUkVHRVgudGVzdChsb2NhdGlvbikpIHtcbiAgICBsZXQgbm9ybWFsaXplZExvY2F0aW9uID0gbG9jYXRpb247XG4gICAgbGV0IHVybCA9IG5vcm1hbGl6ZWRMb2NhdGlvbi5zdGFydHNXaXRoKFwiLy9cIikgPyBuZXcgVVJMKGN1cnJlbnRVcmwucHJvdG9jb2wgKyBub3JtYWxpemVkTG9jYXRpb24pIDogbmV3IFVSTChub3JtYWxpemVkTG9jYXRpb24pO1xuICAgIGxldCBpc1NhbWVCYXNlbmFtZSA9IHN0cmlwQmFzZW5hbWUodXJsLnBhdGhuYW1lLCBiYXNlbmFtZSkgIT0gbnVsbDtcbiAgICBpZiAodXJsLm9yaWdpbiA9PT0gY3VycmVudFVybC5vcmlnaW4gJiYgaXNTYW1lQmFzZW5hbWUpIHtcbiAgICAgIHJldHVybiB1cmwucGF0aG5hbWUgKyB1cmwuc2VhcmNoICsgdXJsLmhhc2g7XG4gICAgfVxuICB9XG4gIHJldHVybiBsb2NhdGlvbjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNsaWVudFNpZGVSZXF1ZXN0KGhpc3RvcnksIGxvY2F0aW9uLCBzaWduYWwsIHN1Ym1pc3Npb24pIHtcbiAgbGV0IHVybCA9IGhpc3RvcnkuY3JlYXRlVVJMKHN0cmlwSGFzaEZyb21QYXRoKGxvY2F0aW9uKSkudG9TdHJpbmcoKTtcbiAgbGV0IGluaXQgPSB7IHNpZ25hbCB9O1xuICBpZiAoc3VibWlzc2lvbiAmJiBpc011dGF0aW9uTWV0aG9kKHN1Ym1pc3Npb24uZm9ybU1ldGhvZCkpIHtcbiAgICBsZXQgeyBmb3JtTWV0aG9kLCBmb3JtRW5jVHlwZSB9ID0gc3VibWlzc2lvbjtcbiAgICBpbml0Lm1ldGhvZCA9IGZvcm1NZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICBpZiAoZm9ybUVuY1R5cGUgPT09IFwiYXBwbGljYXRpb24vanNvblwiKSB7XG4gICAgICBpbml0LmhlYWRlcnMgPSBuZXcgSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IGZvcm1FbmNUeXBlIH0pO1xuICAgICAgaW5pdC5ib2R5ID0gSlNPTi5zdHJpbmdpZnkoc3VibWlzc2lvbi5qc29uKTtcbiAgICB9IGVsc2UgaWYgKGZvcm1FbmNUeXBlID09PSBcInRleHQvcGxhaW5cIikge1xuICAgICAgaW5pdC5ib2R5ID0gc3VibWlzc2lvbi50ZXh0O1xuICAgIH0gZWxzZSBpZiAoZm9ybUVuY1R5cGUgPT09IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgJiYgc3VibWlzc2lvbi5mb3JtRGF0YSkge1xuICAgICAgaW5pdC5ib2R5ID0gY29udmVydEZvcm1EYXRhVG9TZWFyY2hQYXJhbXMoc3VibWlzc2lvbi5mb3JtRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQuYm9keSA9IHN1Ym1pc3Npb24uZm9ybURhdGE7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdCh1cmwsIGluaXQpO1xufVxuZnVuY3Rpb24gY29udmVydEZvcm1EYXRhVG9TZWFyY2hQYXJhbXMoZm9ybURhdGEpIHtcbiAgbGV0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGZvcm1EYXRhLmVudHJpZXMoKSkge1xuICAgIHNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IHZhbHVlLm5hbWUpO1xuICB9XG4gIHJldHVybiBzZWFyY2hQYXJhbXM7XG59XG5mdW5jdGlvbiBjb252ZXJ0U2VhcmNoUGFyYW1zVG9Gb3JtRGF0YShzZWFyY2hQYXJhbXMpIHtcbiAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBzZWFyY2hQYXJhbXMuZW50cmllcygpKSB7XG4gICAgZm9ybURhdGEuYXBwZW5kKGtleSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmb3JtRGF0YTtcbn1cbmZ1bmN0aW9uIHByb2Nlc3NSb3V0ZUxvYWRlckRhdGEobWF0Y2hlcywgcmVzdWx0cywgcGVuZGluZ0FjdGlvblJlc3VsdCwgaXNTdGF0aWNIYW5kbGVyID0gZmFsc2UsIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nID0gZmFsc2UpIHtcbiAgbGV0IGxvYWRlckRhdGEgPSB7fTtcbiAgbGV0IGVycm9ycyA9IG51bGw7XG4gIGxldCBzdGF0dXNDb2RlO1xuICBsZXQgZm91bmRFcnJvciA9IGZhbHNlO1xuICBsZXQgbG9hZGVySGVhZGVycyA9IHt9O1xuICBsZXQgcGVuZGluZ0Vycm9yID0gcGVuZGluZ0FjdGlvblJlc3VsdCAmJiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8gcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5lcnJvciA6IHZvaWQgMDtcbiAgbWF0Y2hlcy5mb3JFYWNoKChtYXRjaCkgPT4ge1xuICAgIGlmICghKG1hdGNoLnJvdXRlLmlkIGluIHJlc3VsdHMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBpZCA9IG1hdGNoLnJvdXRlLmlkO1xuICAgIGxldCByZXN1bHQgPSByZXN1bHRzW2lkXTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICAhaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpLFxuICAgICAgXCJDYW5ub3QgaGFuZGxlIHJlZGlyZWN0IHJlc3VsdHMgaW4gcHJvY2Vzc0xvYWRlckRhdGFcIlxuICAgICk7XG4gICAgaWYgKGlzRXJyb3JSZXN1bHQocmVzdWx0KSkge1xuICAgICAgbGV0IGVycm9yID0gcmVzdWx0LmVycm9yO1xuICAgICAgaWYgKHBlbmRpbmdFcnJvciAhPT0gdm9pZCAwKSB7XG4gICAgICAgIGVycm9yID0gcGVuZGluZ0Vycm9yO1xuICAgICAgICBwZW5kaW5nRXJyb3IgPSB2b2lkIDA7XG4gICAgICB9XG4gICAgICBlcnJvcnMgPSBlcnJvcnMgfHwge307XG4gICAgICBpZiAoc2tpcExvYWRlckVycm9yQnViYmxpbmcpIHtcbiAgICAgICAgZXJyb3JzW2lkXSA9IGVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGJvdW5kYXJ5TWF0Y2ggPSBmaW5kTmVhcmVzdEJvdW5kYXJ5KG1hdGNoZXMsIGlkKTtcbiAgICAgICAgaWYgKGVycm9yc1tib3VuZGFyeU1hdGNoLnJvdXRlLmlkXSA9PSBudWxsKSB7XG4gICAgICAgICAgZXJyb3JzW2JvdW5kYXJ5TWF0Y2gucm91dGUuaWRdID0gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaXNTdGF0aWNIYW5kbGVyKSB7XG4gICAgICAgIGxvYWRlckRhdGFbaWRdID0gUmVzZXRMb2FkZXJEYXRhU3ltYm9sO1xuICAgICAgfVxuICAgICAgaWYgKCFmb3VuZEVycm9yKSB7XG4gICAgICAgIGZvdW5kRXJyb3IgPSB0cnVlO1xuICAgICAgICBzdGF0dXNDb2RlID0gaXNSb3V0ZUVycm9yUmVzcG9uc2UocmVzdWx0LmVycm9yKSA/IHJlc3VsdC5lcnJvci5zdGF0dXMgOiA1MDA7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0LmhlYWRlcnMpIHtcbiAgICAgICAgbG9hZGVySGVhZGVyc1tpZF0gPSByZXN1bHQuaGVhZGVycztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZGVyRGF0YVtpZF0gPSByZXN1bHQuZGF0YTtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzQ29kZSAmJiByZXN1bHQuc3RhdHVzQ29kZSAhPT0gMjAwICYmICFmb3VuZEVycm9yKSB7XG4gICAgICAgIHN0YXR1c0NvZGUgPSByZXN1bHQuc3RhdHVzQ29kZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQuaGVhZGVycykge1xuICAgICAgICBsb2FkZXJIZWFkZXJzW2lkXSA9IHJlc3VsdC5oZWFkZXJzO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGlmIChwZW5kaW5nRXJyb3IgIT09IHZvaWQgMCAmJiBwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgZXJyb3JzID0geyBbcGVuZGluZ0FjdGlvblJlc3VsdFswXV06IHBlbmRpbmdFcnJvciB9O1xuICAgIGxvYWRlckRhdGFbcGVuZGluZ0FjdGlvblJlc3VsdFswXV0gPSB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBsb2FkZXJEYXRhLFxuICAgIGVycm9ycyxcbiAgICBzdGF0dXNDb2RlOiBzdGF0dXNDb2RlIHx8IDIwMCxcbiAgICBsb2FkZXJIZWFkZXJzXG4gIH07XG59XG5mdW5jdGlvbiBwcm9jZXNzTG9hZGVyRGF0YShzdGF0ZSwgbWF0Y2hlcywgcmVzdWx0cywgcGVuZGluZ0FjdGlvblJlc3VsdCwgcmV2YWxpZGF0aW5nRmV0Y2hlcnMsIGZldGNoZXJSZXN1bHRzKSB7XG4gIGxldCB7IGxvYWRlckRhdGEsIGVycm9ycyB9ID0gcHJvY2Vzc1JvdXRlTG9hZGVyRGF0YShcbiAgICBtYXRjaGVzLFxuICAgIHJlc3VsdHMsXG4gICAgcGVuZGluZ0FjdGlvblJlc3VsdFxuICApO1xuICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyZikgPT4ge1xuICAgIGxldCB7IGtleSwgbWF0Y2gsIGNvbnRyb2xsZXIgfSA9IHJmO1xuICAgIGxldCByZXN1bHQgPSBmZXRjaGVyUmVzdWx0c1trZXldO1xuICAgIGludmFyaWFudChyZXN1bHQsIFwiRGlkIG5vdCBmaW5kIGNvcnJlc3BvbmRpbmcgZmV0Y2hlciByZXN1bHRcIik7XG4gICAgaWYgKGNvbnRyb2xsZXIgJiYgY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoaXNFcnJvclJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBsZXQgYm91bmRhcnlNYXRjaCA9IGZpbmROZWFyZXN0Qm91bmRhcnkoc3RhdGUubWF0Y2hlcywgbWF0Y2g/LnJvdXRlLmlkKTtcbiAgICAgIGlmICghKGVycm9ycyAmJiBlcnJvcnNbYm91bmRhcnlNYXRjaC5yb3V0ZS5pZF0pKSB7XG4gICAgICAgIGVycm9ycyA9IHtcbiAgICAgICAgICAuLi5lcnJvcnMsXG4gICAgICAgICAgW2JvdW5kYXJ5TWF0Y2gucm91dGUuaWRdOiByZXN1bHQuZXJyb3JcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmZldGNoZXJzLmRlbGV0ZShrZXkpO1xuICAgIH0gZWxzZSBpZiAoaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBpbnZhcmlhbnQoZmFsc2UsIFwiVW5oYW5kbGVkIGZldGNoZXIgcmV2YWxpZGF0aW9uIHJlZGlyZWN0XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZG9uZUZldGNoZXIgPSBnZXREb25lRmV0Y2hlcihyZXN1bHQuZGF0YSk7XG4gICAgICBzdGF0ZS5mZXRjaGVycy5zZXQoa2V5LCBkb25lRmV0Y2hlcik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHsgbG9hZGVyRGF0YSwgZXJyb3JzIH07XG59XG5mdW5jdGlvbiBtZXJnZUxvYWRlckRhdGEobG9hZGVyRGF0YSwgbmV3TG9hZGVyRGF0YSwgbWF0Y2hlcywgZXJyb3JzKSB7XG4gIGxldCBtZXJnZWRMb2FkZXJEYXRhID0gT2JqZWN0LmVudHJpZXMobmV3TG9hZGVyRGF0YSkuZmlsdGVyKChbLCB2XSkgPT4gdiAhPT0gUmVzZXRMb2FkZXJEYXRhU3ltYm9sKS5yZWR1Y2UoKG1lcmdlZCwgW2ssIHZdKSA9PiB7XG4gICAgbWVyZ2VkW2tdID0gdjtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7XG4gIGZvciAobGV0IG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBsZXQgaWQgPSBtYXRjaC5yb3V0ZS5pZDtcbiAgICBpZiAoIW5ld0xvYWRlckRhdGEuaGFzT3duUHJvcGVydHkoaWQpICYmIGxvYWRlckRhdGEuaGFzT3duUHJvcGVydHkoaWQpICYmIG1hdGNoLnJvdXRlLmxvYWRlcikge1xuICAgICAgbWVyZ2VkTG9hZGVyRGF0YVtpZF0gPSBsb2FkZXJEYXRhW2lkXTtcbiAgICB9XG4gICAgaWYgKGVycm9ycyAmJiBlcnJvcnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1lcmdlZExvYWRlckRhdGE7XG59XG5mdW5jdGlvbiBnZXRBY3Rpb25EYXRhRm9yQ29tbWl0KHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgaWYgKCFwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHJldHVybiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8ge1xuICAgIC8vIENsZWFyIG91dCBwcmlvciBhY3Rpb25EYXRhIG9uIGVycm9yc1xuICAgIGFjdGlvbkRhdGE6IHt9XG4gIH0gOiB7XG4gICAgYWN0aW9uRGF0YToge1xuICAgICAgW3BlbmRpbmdBY3Rpb25SZXN1bHRbMF1dOiBwZW5kaW5nQWN0aW9uUmVzdWx0WzFdLmRhdGFcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBmaW5kTmVhcmVzdEJvdW5kYXJ5KG1hdGNoZXMsIHJvdXRlSWQpIHtcbiAgbGV0IGVsaWdpYmxlTWF0Y2hlcyA9IHJvdXRlSWQgPyBtYXRjaGVzLnNsaWNlKDAsIG1hdGNoZXMuZmluZEluZGV4KChtKSA9PiBtLnJvdXRlLmlkID09PSByb3V0ZUlkKSArIDEpIDogWy4uLm1hdGNoZXNdO1xuICByZXR1cm4gZWxpZ2libGVNYXRjaGVzLnJldmVyc2UoKS5maW5kKChtKSA9PiBtLnJvdXRlLmhhc0Vycm9yQm91bmRhcnkgPT09IHRydWUpIHx8IG1hdGNoZXNbMF07XG59XG5mdW5jdGlvbiBnZXRTaG9ydENpcmN1aXRNYXRjaGVzKHJvdXRlcykge1xuICBsZXQgcm91dGUgPSByb3V0ZXMubGVuZ3RoID09PSAxID8gcm91dGVzWzBdIDogcm91dGVzLmZpbmQoKHIpID0+IHIuaW5kZXggfHwgIXIucGF0aCB8fCByLnBhdGggPT09IFwiL1wiKSB8fCB7XG4gICAgaWQ6IGBfX3NoaW0tZXJyb3Itcm91dGVfX2BcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBtYXRjaGVzOiBbXG4gICAgICB7XG4gICAgICAgIHBhcmFtczoge30sXG4gICAgICAgIHBhdGhuYW1lOiBcIlwiLFxuICAgICAgICBwYXRobmFtZUJhc2U6IFwiXCIsXG4gICAgICAgIHJvdXRlXG4gICAgICB9XG4gICAgXSxcbiAgICByb3V0ZVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcihzdGF0dXMsIHtcbiAgcGF0aG5hbWUsXG4gIHJvdXRlSWQsXG4gIG1ldGhvZCxcbiAgdHlwZSxcbiAgbWVzc2FnZVxufSA9IHt9KSB7XG4gIGxldCBzdGF0dXNUZXh0ID0gXCJVbmtub3duIFNlcnZlciBFcnJvclwiO1xuICBsZXQgZXJyb3JNZXNzYWdlID0gXCJVbmtub3duIEByZW1peC1ydW4vcm91dGVyIGVycm9yXCI7XG4gIGlmIChzdGF0dXMgPT09IDQwMCkge1xuICAgIHN0YXR1c1RleHQgPSBcIkJhZCBSZXF1ZXN0XCI7XG4gICAgaWYgKG1ldGhvZCAmJiBwYXRobmFtZSAmJiByb3V0ZUlkKSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSBgWW91IG1hZGUgYSAke21ldGhvZH0gcmVxdWVzdCB0byBcIiR7cGF0aG5hbWV9XCIgYnV0IGRpZCBub3QgcHJvdmlkZSBhIFxcYGxvYWRlclxcYCBmb3Igcm91dGUgXCIke3JvdXRlSWR9XCIsIHNvIHRoZXJlIGlzIG5vIHdheSB0byBoYW5kbGUgdGhlIHJlcXVlc3QuYDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiaW52YWxpZC1ib2R5XCIpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IFwiVW5hYmxlIHRvIGVuY29kZSBzdWJtaXNzaW9uIGJvZHlcIjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoc3RhdHVzID09PSA0MDMpIHtcbiAgICBzdGF0dXNUZXh0ID0gXCJGb3JiaWRkZW5cIjtcbiAgICBlcnJvck1lc3NhZ2UgPSBgUm91dGUgXCIke3JvdXRlSWR9XCIgZG9lcyBub3QgbWF0Y2ggVVJMIFwiJHtwYXRobmFtZX1cImA7XG4gIH0gZWxzZSBpZiAoc3RhdHVzID09PSA0MDQpIHtcbiAgICBzdGF0dXNUZXh0ID0gXCJOb3QgRm91bmRcIjtcbiAgICBlcnJvck1lc3NhZ2UgPSBgTm8gcm91dGUgbWF0Y2hlcyBVUkwgXCIke3BhdGhuYW1lfVwiYDtcbiAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQwNSkge1xuICAgIHN0YXR1c1RleHQgPSBcIk1ldGhvZCBOb3QgQWxsb3dlZFwiO1xuICAgIGlmIChtZXRob2QgJiYgcGF0aG5hbWUgJiYgcm91dGVJZCkge1xuICAgICAgZXJyb3JNZXNzYWdlID0gYFlvdSBtYWRlIGEgJHttZXRob2QudG9VcHBlckNhc2UoKX0gcmVxdWVzdCB0byBcIiR7cGF0aG5hbWV9XCIgYnV0IGRpZCBub3QgcHJvdmlkZSBhbiBcXGBhY3Rpb25cXGAgZm9yIHJvdXRlIFwiJHtyb3V0ZUlkfVwiLCBzbyB0aGVyZSBpcyBubyB3YXkgdG8gaGFuZGxlIHRoZSByZXF1ZXN0LmA7XG4gICAgfSBlbHNlIGlmIChtZXRob2QpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBJbnZhbGlkIHJlcXVlc3QgbWV0aG9kIFwiJHttZXRob2QudG9VcHBlckNhc2UoKX1cImA7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgRXJyb3JSZXNwb25zZUltcGwoXG4gICAgc3RhdHVzIHx8IDUwMCxcbiAgICBzdGF0dXNUZXh0LFxuICAgIG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpLFxuICAgIHRydWVcbiAgKTtcbn1cbmZ1bmN0aW9uIGZpbmRSZWRpcmVjdChyZXN1bHRzKSB7XG4gIGxldCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocmVzdWx0cyk7XG4gIGZvciAobGV0IGkgPSBlbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgbGV0IFtrZXksIHJlc3VsdF0gPSBlbnRyaWVzW2ldO1xuICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiB7IGtleSwgcmVzdWx0IH07XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBzdHJpcEhhc2hGcm9tUGF0aChwYXRoKSB7XG4gIGxldCBwYXJzZWRQYXRoID0gdHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIgPyBwYXJzZVBhdGgocGF0aCkgOiBwYXRoO1xuICByZXR1cm4gY3JlYXRlUGF0aCh7IC4uLnBhcnNlZFBhdGgsIGhhc2g6IFwiXCIgfSk7XG59XG5mdW5jdGlvbiBpc0hhc2hDaGFuZ2VPbmx5KGEsIGIpIHtcbiAgaWYgKGEucGF0aG5hbWUgIT09IGIucGF0aG5hbWUgfHwgYS5zZWFyY2ggIT09IGIuc2VhcmNoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChhLmhhc2ggPT09IFwiXCIpIHtcbiAgICByZXR1cm4gYi5oYXNoICE9PSBcIlwiO1xuICB9IGVsc2UgaWYgKGEuaGFzaCA9PT0gYi5oYXNoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoYi5oYXNoICE9PSBcIlwiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaXNEYXRhU3RyYXRlZ3lSZXN1bHQocmVzdWx0KSB7XG4gIHJldHVybiByZXN1bHQgIT0gbnVsbCAmJiB0eXBlb2YgcmVzdWx0ID09PSBcIm9iamVjdFwiICYmIFwidHlwZVwiIGluIHJlc3VsdCAmJiBcInJlc3VsdFwiIGluIHJlc3VsdCAmJiAocmVzdWx0LnR5cGUgPT09IFwiZGF0YVwiIC8qIGRhdGEgKi8gfHwgcmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIiAvKiBlcnJvciAqLyk7XG59XG5mdW5jdGlvbiBpc1JlZGlyZWN0RGF0YVN0cmF0ZWd5UmVzdWx0KHJlc3VsdCkge1xuICByZXR1cm4gaXNSZXNwb25zZShyZXN1bHQucmVzdWx0KSAmJiByZWRpcmVjdFN0YXR1c0NvZGVzLmhhcyhyZXN1bHQucmVzdWx0LnN0YXR1cyk7XG59XG5mdW5jdGlvbiBpc0Vycm9yUmVzdWx0KHJlc3VsdCkge1xuICByZXR1cm4gcmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIiAvKiBlcnJvciAqLztcbn1cbmZ1bmN0aW9uIGlzUmVkaXJlY3RSZXN1bHQocmVzdWx0KSB7XG4gIHJldHVybiAocmVzdWx0ICYmIHJlc3VsdC50eXBlKSA9PT0gXCJyZWRpcmVjdFwiIC8qIHJlZGlyZWN0ICovO1xufVxuZnVuY3Rpb24gaXNEYXRhV2l0aFJlc3BvbnNlSW5pdCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9IG51bGwgJiYgXCJ0eXBlXCIgaW4gdmFsdWUgJiYgXCJkYXRhXCIgaW4gdmFsdWUgJiYgXCJpbml0XCIgaW4gdmFsdWUgJiYgdmFsdWUudHlwZSA9PT0gXCJEYXRhV2l0aFJlc3BvbnNlSW5pdFwiO1xufVxuZnVuY3Rpb24gaXNSZXNwb25zZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUuc3RhdHVzID09PSBcIm51bWJlclwiICYmIHR5cGVvZiB2YWx1ZS5zdGF0dXNUZXh0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWx1ZS5oZWFkZXJzID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZS5ib2R5ICE9PSBcInVuZGVmaW5lZFwiO1xufVxuZnVuY3Rpb24gaXNSZWRpcmVjdFN0YXR1c0NvZGUoc3RhdHVzQ29kZSkge1xuICByZXR1cm4gcmVkaXJlY3RTdGF0dXNDb2Rlcy5oYXMoc3RhdHVzQ29kZSk7XG59XG5mdW5jdGlvbiBpc1JlZGlyZWN0UmVzcG9uc2UocmVzdWx0KSB7XG4gIHJldHVybiBpc1Jlc3BvbnNlKHJlc3VsdCkgJiYgaXNSZWRpcmVjdFN0YXR1c0NvZGUocmVzdWx0LnN0YXR1cykgJiYgcmVzdWx0LmhlYWRlcnMuaGFzKFwiTG9jYXRpb25cIik7XG59XG5mdW5jdGlvbiBpc1ZhbGlkTWV0aG9kKG1ldGhvZCkge1xuICByZXR1cm4gdmFsaWRSZXF1ZXN0TWV0aG9kcy5oYXMobWV0aG9kLnRvVXBwZXJDYXNlKCkpO1xufVxuZnVuY3Rpb24gaXNNdXRhdGlvbk1ldGhvZChtZXRob2QpIHtcbiAgcmV0dXJuIHZhbGlkTXV0YXRpb25NZXRob2RzLmhhcyhtZXRob2QudG9VcHBlckNhc2UoKSk7XG59XG5mdW5jdGlvbiBoYXNOYWtlZEluZGV4UXVlcnkoc2VhcmNoKSB7XG4gIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHNlYXJjaCkuZ2V0QWxsKFwiaW5kZXhcIikuc29tZSgodikgPT4gdiA9PT0gXCJcIik7XG59XG5mdW5jdGlvbiBnZXRUYXJnZXRNYXRjaChtYXRjaGVzLCBsb2NhdGlvbikge1xuICBsZXQgc2VhcmNoID0gdHlwZW9mIGxvY2F0aW9uID09PSBcInN0cmluZ1wiID8gcGFyc2VQYXRoKGxvY2F0aW9uKS5zZWFyY2ggOiBsb2NhdGlvbi5zZWFyY2g7XG4gIGlmIChtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0ucm91dGUuaW5kZXggJiYgaGFzTmFrZWRJbmRleFF1ZXJ5KHNlYXJjaCB8fCBcIlwiKSkge1xuICAgIHJldHVybiBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV07XG4gIH1cbiAgbGV0IHBhdGhNYXRjaGVzID0gZ2V0UGF0aENvbnRyaWJ1dGluZ01hdGNoZXMobWF0Y2hlcyk7XG4gIHJldHVybiBwYXRoTWF0Y2hlc1twYXRoTWF0Y2hlcy5sZW5ndGggLSAxXTtcbn1cbmZ1bmN0aW9uIGdldFN1Ym1pc3Npb25Gcm9tTmF2aWdhdGlvbihuYXZpZ2F0aW9uKSB7XG4gIGxldCB7IGZvcm1NZXRob2QsIGZvcm1BY3Rpb24sIGZvcm1FbmNUeXBlLCB0ZXh0LCBmb3JtRGF0YSwganNvbiB9ID0gbmF2aWdhdGlvbjtcbiAgaWYgKCFmb3JtTWV0aG9kIHx8ICFmb3JtQWN0aW9uIHx8ICFmb3JtRW5jVHlwZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodGV4dCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvcm1NZXRob2QsXG4gICAgICBmb3JtQWN0aW9uLFxuICAgICAgZm9ybUVuY1R5cGUsXG4gICAgICBmb3JtRGF0YTogdm9pZCAwLFxuICAgICAganNvbjogdm9pZCAwLFxuICAgICAgdGV4dFxuICAgIH07XG4gIH0gZWxzZSBpZiAoZm9ybURhdGEgIT0gbnVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JtTWV0aG9kLFxuICAgICAgZm9ybUFjdGlvbixcbiAgICAgIGZvcm1FbmNUeXBlLFxuICAgICAgZm9ybURhdGEsXG4gICAgICBqc29uOiB2b2lkIDAsXG4gICAgICB0ZXh0OiB2b2lkIDBcbiAgICB9O1xuICB9IGVsc2UgaWYgKGpzb24gIT09IHZvaWQgMCkge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JtTWV0aG9kLFxuICAgICAgZm9ybUFjdGlvbixcbiAgICAgIGZvcm1FbmNUeXBlLFxuICAgICAgZm9ybURhdGE6IHZvaWQgMCxcbiAgICAgIGpzb24sXG4gICAgICB0ZXh0OiB2b2lkIDBcbiAgICB9O1xuICB9XG59XG5mdW5jdGlvbiBnZXRMb2FkaW5nTmF2aWdhdGlvbihsb2NhdGlvbiwgc3VibWlzc2lvbikge1xuICBpZiAoc3VibWlzc2lvbikge1xuICAgIGxldCBuYXZpZ2F0aW9uID0ge1xuICAgICAgc3RhdGU6IFwibG9hZGluZ1wiLFxuICAgICAgbG9jYXRpb24sXG4gICAgICBmb3JtTWV0aG9kOiBzdWJtaXNzaW9uLmZvcm1NZXRob2QsXG4gICAgICBmb3JtQWN0aW9uOiBzdWJtaXNzaW9uLmZvcm1BY3Rpb24sXG4gICAgICBmb3JtRW5jVHlwZTogc3VibWlzc2lvbi5mb3JtRW5jVHlwZSxcbiAgICAgIGZvcm1EYXRhOiBzdWJtaXNzaW9uLmZvcm1EYXRhLFxuICAgICAganNvbjogc3VibWlzc2lvbi5qc29uLFxuICAgICAgdGV4dDogc3VibWlzc2lvbi50ZXh0XG4gICAgfTtcbiAgICByZXR1cm4gbmF2aWdhdGlvbjtcbiAgfSBlbHNlIHtcbiAgICBsZXQgbmF2aWdhdGlvbiA9IHtcbiAgICAgIHN0YXRlOiBcImxvYWRpbmdcIixcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgZm9ybU1ldGhvZDogdm9pZCAwLFxuICAgICAgZm9ybUFjdGlvbjogdm9pZCAwLFxuICAgICAgZm9ybUVuY1R5cGU6IHZvaWQgMCxcbiAgICAgIGZvcm1EYXRhOiB2b2lkIDAsXG4gICAgICBqc29uOiB2b2lkIDAsXG4gICAgICB0ZXh0OiB2b2lkIDBcbiAgICB9O1xuICAgIHJldHVybiBuYXZpZ2F0aW9uO1xuICB9XG59XG5mdW5jdGlvbiBnZXRTdWJtaXR0aW5nTmF2aWdhdGlvbihsb2NhdGlvbiwgc3VibWlzc2lvbikge1xuICBsZXQgbmF2aWdhdGlvbiA9IHtcbiAgICBzdGF0ZTogXCJzdWJtaXR0aW5nXCIsXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybU1ldGhvZDogc3VibWlzc2lvbi5mb3JtTWV0aG9kLFxuICAgIGZvcm1BY3Rpb246IHN1Ym1pc3Npb24uZm9ybUFjdGlvbixcbiAgICBmb3JtRW5jVHlwZTogc3VibWlzc2lvbi5mb3JtRW5jVHlwZSxcbiAgICBmb3JtRGF0YTogc3VibWlzc2lvbi5mb3JtRGF0YSxcbiAgICBqc29uOiBzdWJtaXNzaW9uLmpzb24sXG4gICAgdGV4dDogc3VibWlzc2lvbi50ZXh0XG4gIH07XG4gIHJldHVybiBuYXZpZ2F0aW9uO1xufVxuZnVuY3Rpb24gZ2V0TG9hZGluZ0ZldGNoZXIoc3VibWlzc2lvbiwgZGF0YTIpIHtcbiAgaWYgKHN1Ym1pc3Npb24pIHtcbiAgICBsZXQgZmV0Y2hlciA9IHtcbiAgICAgIHN0YXRlOiBcImxvYWRpbmdcIixcbiAgICAgIGZvcm1NZXRob2Q6IHN1Ym1pc3Npb24uZm9ybU1ldGhvZCxcbiAgICAgIGZvcm1BY3Rpb246IHN1Ym1pc3Npb24uZm9ybUFjdGlvbixcbiAgICAgIGZvcm1FbmNUeXBlOiBzdWJtaXNzaW9uLmZvcm1FbmNUeXBlLFxuICAgICAgZm9ybURhdGE6IHN1Ym1pc3Npb24uZm9ybURhdGEsXG4gICAgICBqc29uOiBzdWJtaXNzaW9uLmpzb24sXG4gICAgICB0ZXh0OiBzdWJtaXNzaW9uLnRleHQsXG4gICAgICBkYXRhOiBkYXRhMlxuICAgIH07XG4gICAgcmV0dXJuIGZldGNoZXI7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGZldGNoZXIgPSB7XG4gICAgICBzdGF0ZTogXCJsb2FkaW5nXCIsXG4gICAgICBmb3JtTWV0aG9kOiB2b2lkIDAsXG4gICAgICBmb3JtQWN0aW9uOiB2b2lkIDAsXG4gICAgICBmb3JtRW5jVHlwZTogdm9pZCAwLFxuICAgICAgZm9ybURhdGE6IHZvaWQgMCxcbiAgICAgIGpzb246IHZvaWQgMCxcbiAgICAgIHRleHQ6IHZvaWQgMCxcbiAgICAgIGRhdGE6IGRhdGEyXG4gICAgfTtcbiAgICByZXR1cm4gZmV0Y2hlcjtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0U3VibWl0dGluZ0ZldGNoZXIoc3VibWlzc2lvbiwgZXhpc3RpbmdGZXRjaGVyKSB7XG4gIGxldCBmZXRjaGVyID0ge1xuICAgIHN0YXRlOiBcInN1Ym1pdHRpbmdcIixcbiAgICBmb3JtTWV0aG9kOiBzdWJtaXNzaW9uLmZvcm1NZXRob2QsXG4gICAgZm9ybUFjdGlvbjogc3VibWlzc2lvbi5mb3JtQWN0aW9uLFxuICAgIGZvcm1FbmNUeXBlOiBzdWJtaXNzaW9uLmZvcm1FbmNUeXBlLFxuICAgIGZvcm1EYXRhOiBzdWJtaXNzaW9uLmZvcm1EYXRhLFxuICAgIGpzb246IHN1Ym1pc3Npb24uanNvbixcbiAgICB0ZXh0OiBzdWJtaXNzaW9uLnRleHQsXG4gICAgZGF0YTogZXhpc3RpbmdGZXRjaGVyID8gZXhpc3RpbmdGZXRjaGVyLmRhdGEgOiB2b2lkIDBcbiAgfTtcbiAgcmV0dXJuIGZldGNoZXI7XG59XG5mdW5jdGlvbiBnZXREb25lRmV0Y2hlcihkYXRhMikge1xuICBsZXQgZmV0Y2hlciA9IHtcbiAgICBzdGF0ZTogXCJpZGxlXCIsXG4gICAgZm9ybU1ldGhvZDogdm9pZCAwLFxuICAgIGZvcm1BY3Rpb246IHZvaWQgMCxcbiAgICBmb3JtRW5jVHlwZTogdm9pZCAwLFxuICAgIGZvcm1EYXRhOiB2b2lkIDAsXG4gICAganNvbjogdm9pZCAwLFxuICAgIHRleHQ6IHZvaWQgMCxcbiAgICBkYXRhOiBkYXRhMlxuICB9O1xuICByZXR1cm4gZmV0Y2hlcjtcbn1cbmZ1bmN0aW9uIHJlc3RvcmVBcHBsaWVkVHJhbnNpdGlvbnMoX3dpbmRvdywgdHJhbnNpdGlvbnMpIHtcbiAgdHJ5IHtcbiAgICBsZXQgc2Vzc2lvblBvc2l0aW9ucyA9IF93aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgIFRSQU5TSVRJT05TX1NUT1JBR0VfS0VZXG4gICAgKTtcbiAgICBpZiAoc2Vzc2lvblBvc2l0aW9ucykge1xuICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKHNlc3Npb25Qb3NpdGlvbnMpO1xuICAgICAgZm9yIChsZXQgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGpzb24gfHwge30pKSB7XG4gICAgICAgIGlmICh2ICYmIEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgICB0cmFuc2l0aW9ucy5zZXQoaywgbmV3IFNldCh2IHx8IFtdKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxufVxuZnVuY3Rpb24gcGVyc2lzdEFwcGxpZWRUcmFuc2l0aW9ucyhfd2luZG93LCB0cmFuc2l0aW9ucykge1xuICBpZiAodHJhbnNpdGlvbnMuc2l6ZSA+IDApIHtcbiAgICBsZXQganNvbiA9IHt9O1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiB0cmFuc2l0aW9ucykge1xuICAgICAganNvbltrXSA9IFsuLi52XTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIF93aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgVFJBTlNJVElPTlNfU1RPUkFHRV9LRVksXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGpzb24pXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYEZhaWxlZCB0byBzYXZlIGFwcGxpZWQgdmlldyB0cmFuc2l0aW9ucyBpbiBzZXNzaW9uU3RvcmFnZSAoJHtlcnJvcn0pLmBcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVEZWZlcnJlZCgpIHtcbiAgbGV0IHJlc29sdmU7XG4gIGxldCByZWplY3Q7XG4gIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgcmVzb2x2ZSA9IGFzeW5jICh2YWwpID0+IHtcbiAgICAgIHJlcyh2YWwpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcHJvbWlzZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJlamVjdCA9IGFzeW5jIChlcnJvcikgPT4ge1xuICAgICAgcmVqKGVycm9yKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcHJvbWlzZSxcbiAgICAvL0B0cy1pZ25vcmVcbiAgICByZXNvbHZlLFxuICAgIC8vQHRzLWlnbm9yZVxuICAgIHJlamVjdFxuICB9O1xufVxuXG4vLyBsaWIvY29tcG9uZW50cy50c3hcbmltcG9ydCAqIGFzIFJlYWN0MyBmcm9tIFwicmVhY3RcIjtcblxuLy8gbGliL2NvbnRleHQudHNcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xudmFyIERhdGFSb3V0ZXJDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbkRhdGFSb3V0ZXJDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJEYXRhUm91dGVyXCI7XG52YXIgRGF0YVJvdXRlclN0YXRlQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5EYXRhUm91dGVyU3RhdGVDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJEYXRhUm91dGVyU3RhdGVcIjtcbnZhciBWaWV3VHJhbnNpdGlvbkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZVxufSk7XG5WaWV3VHJhbnNpdGlvbkNvbnRleHQuZGlzcGxheU5hbWUgPSBcIlZpZXdUcmFuc2l0aW9uXCI7XG52YXIgRmV0Y2hlcnNDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChcbiAgLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKVxuKTtcbkZldGNoZXJzQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiRmV0Y2hlcnNcIjtcbnZhciBBd2FpdENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuQXdhaXRDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJBd2FpdFwiO1xudmFyIE5hdmlnYXRpb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChcbiAgbnVsbFxuKTtcbk5hdmlnYXRpb25Db250ZXh0LmRpc3BsYXlOYW1lID0gXCJOYXZpZ2F0aW9uXCI7XG52YXIgTG9jYXRpb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChcbiAgbnVsbFxuKTtcbkxvY2F0aW9uQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiTG9jYXRpb25cIjtcbnZhciBSb3V0ZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgb3V0bGV0OiBudWxsLFxuICBtYXRjaGVzOiBbXSxcbiAgaXNEYXRhUm91dGU6IGZhbHNlXG59KTtcblJvdXRlQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiUm91dGVcIjtcbnZhciBSb3V0ZUVycm9yQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5Sb3V0ZUVycm9yQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiUm91dGVFcnJvclwiO1xuXG4vLyBsaWIvaG9va3MudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDIgZnJvbSBcInJlYWN0XCI7XG52YXIgRU5BQkxFX0RFVl9XQVJOSU5HUyA9IHRydWU7XG5mdW5jdGlvbiB1c2VIcmVmKHRvLCB7IHJlbGF0aXZlIH0gPSB7fSkge1xuICBpbnZhcmlhbnQoXG4gICAgdXNlSW5Sb3V0ZXJDb250ZXh0KCksXG4gICAgLy8gVE9ETzogVGhpcyBlcnJvciBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZXkgc29tZWhvdyBoYXZlIDIgdmVyc2lvbnMgb2YgdGhlXG4gICAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICAgIGB1c2VIcmVmKCkgbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC5gXG4gICk7XG4gIGxldCB7IGJhc2VuYW1lLCBuYXZpZ2F0b3I6IG5hdmlnYXRvcjIgfSA9IFJlYWN0Mi51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IHsgaGFzaCwgcGF0aG5hbWUsIHNlYXJjaCB9ID0gdXNlUmVzb2x2ZWRQYXRoKHRvLCB7IHJlbGF0aXZlIH0pO1xuICBsZXQgam9pbmVkUGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgaWYgKGJhc2VuYW1lICE9PSBcIi9cIikge1xuICAgIGpvaW5lZFBhdGhuYW1lID0gcGF0aG5hbWUgPT09IFwiL1wiID8gYmFzZW5hbWUgOiBqb2luUGF0aHMoW2Jhc2VuYW1lLCBwYXRobmFtZV0pO1xuICB9XG4gIHJldHVybiBuYXZpZ2F0b3IyLmNyZWF0ZUhyZWYoeyBwYXRobmFtZTogam9pbmVkUGF0aG5hbWUsIHNlYXJjaCwgaGFzaCB9KTtcbn1cbmZ1bmN0aW9uIHVzZUluUm91dGVyQ29udGV4dCgpIHtcbiAgcmV0dXJuIFJlYWN0Mi51c2VDb250ZXh0KExvY2F0aW9uQ29udGV4dCkgIT0gbnVsbDtcbn1cbmZ1bmN0aW9uIHVzZUxvY2F0aW9uKCkge1xuICBpbnZhcmlhbnQoXG4gICAgdXNlSW5Sb3V0ZXJDb250ZXh0KCksXG4gICAgLy8gVE9ETzogVGhpcyBlcnJvciBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZXkgc29tZWhvdyBoYXZlIDIgdmVyc2lvbnMgb2YgdGhlXG4gICAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICAgIGB1c2VMb2NhdGlvbigpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuYFxuICApO1xuICByZXR1cm4gUmVhY3QyLnVzZUNvbnRleHQoTG9jYXRpb25Db250ZXh0KS5sb2NhdGlvbjtcbn1cbmZ1bmN0aW9uIHVzZU5hdmlnYXRpb25UeXBlKCkge1xuICByZXR1cm4gUmVhY3QyLnVzZUNvbnRleHQoTG9jYXRpb25Db250ZXh0KS5uYXZpZ2F0aW9uVHlwZTtcbn1cbmZ1bmN0aW9uIHVzZU1hdGNoKHBhdHRlcm4pIHtcbiAgaW52YXJpYW50KFxuICAgIHVzZUluUm91dGVyQ29udGV4dCgpLFxuICAgIC8vIFRPRE86IFRoaXMgZXJyb3IgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHNvbWVob3cgaGF2ZSAyIHZlcnNpb25zIG9mIHRoZVxuICAgIC8vIHJvdXRlciBsb2FkZWQuIFdlIGNhbiBoZWxwIHRoZW0gdW5kZXJzdGFuZCBob3cgdG8gYXZvaWQgdGhhdC5cbiAgICBgdXNlTWF0Y2goKSBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LmBcbiAgKTtcbiAgbGV0IHsgcGF0aG5hbWUgfSA9IHVzZUxvY2F0aW9uKCk7XG4gIHJldHVybiBSZWFjdDIudXNlTWVtbyhcbiAgICAoKSA9PiBtYXRjaFBhdGgocGF0dGVybiwgZGVjb2RlUGF0aChwYXRobmFtZSkpLFxuICAgIFtwYXRobmFtZSwgcGF0dGVybl1cbiAgKTtcbn1cbnZhciBuYXZpZ2F0ZUVmZmVjdFdhcm5pbmcgPSBgWW91IHNob3VsZCBjYWxsIG5hdmlnYXRlKCkgaW4gYSBSZWFjdC51c2VFZmZlY3QoKSwgbm90IHdoZW4geW91ciBjb21wb25lbnQgaXMgZmlyc3QgcmVuZGVyZWQuYDtcbmZ1bmN0aW9uIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoY2IpIHtcbiAgbGV0IGlzU3RhdGljID0gUmVhY3QyLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpLnN0YXRpYztcbiAgaWYgKCFpc1N0YXRpYykge1xuICAgIFJlYWN0Mi51c2VMYXlvdXRFZmZlY3QoY2IpO1xuICB9XG59XG5mdW5jdGlvbiB1c2VOYXZpZ2F0ZSgpIHtcbiAgbGV0IHsgaXNEYXRhUm91dGUgfSA9IFJlYWN0Mi51c2VDb250ZXh0KFJvdXRlQ29udGV4dCk7XG4gIHJldHVybiBpc0RhdGFSb3V0ZSA/IHVzZU5hdmlnYXRlU3RhYmxlKCkgOiB1c2VOYXZpZ2F0ZVVuc3RhYmxlKCk7XG59XG5mdW5jdGlvbiB1c2VOYXZpZ2F0ZVVuc3RhYmxlKCkge1xuICBpbnZhcmlhbnQoXG4gICAgdXNlSW5Sb3V0ZXJDb250ZXh0KCksXG4gICAgLy8gVE9ETzogVGhpcyBlcnJvciBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZXkgc29tZWhvdyBoYXZlIDIgdmVyc2lvbnMgb2YgdGhlXG4gICAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICAgIGB1c2VOYXZpZ2F0ZSgpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuYFxuICApO1xuICBsZXQgZGF0YVJvdXRlckNvbnRleHQgPSBSZWFjdDIudXNlQ29udGV4dChEYXRhUm91dGVyQ29udGV4dCk7XG4gIGxldCB7IGJhc2VuYW1lLCBuYXZpZ2F0b3I6IG5hdmlnYXRvcjIgfSA9IFJlYWN0Mi51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IHsgbWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHsgcGF0aG5hbWU6IGxvY2F0aW9uUGF0aG5hbWUgfSA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCByb3V0ZVBhdGhuYW1lc0pzb24gPSBKU09OLnN0cmluZ2lmeShnZXRSZXNvbHZlVG9NYXRjaGVzKG1hdGNoZXMpKTtcbiAgbGV0IGFjdGl2ZVJlZiA9IFJlYWN0Mi51c2VSZWYoZmFsc2UpO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBhY3RpdmVSZWYuY3VycmVudCA9IHRydWU7XG4gIH0pO1xuICBsZXQgbmF2aWdhdGUgPSBSZWFjdDIudXNlQ2FsbGJhY2soXG4gICAgKHRvLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIHdhcm5pbmcoYWN0aXZlUmVmLmN1cnJlbnQsIG5hdmlnYXRlRWZmZWN0V2FybmluZyk7XG4gICAgICBpZiAoIWFjdGl2ZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICBpZiAodHlwZW9mIHRvID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIG5hdmlnYXRvcjIuZ28odG8pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgcGF0aCA9IHJlc29sdmVUbyhcbiAgICAgICAgdG8sXG4gICAgICAgIEpTT04ucGFyc2Uocm91dGVQYXRobmFtZXNKc29uKSxcbiAgICAgICAgbG9jYXRpb25QYXRobmFtZSxcbiAgICAgICAgb3B0aW9ucy5yZWxhdGl2ZSA9PT0gXCJwYXRoXCJcbiAgICAgICk7XG4gICAgICBpZiAoZGF0YVJvdXRlckNvbnRleHQgPT0gbnVsbCAmJiBiYXNlbmFtZSAhPT0gXCIvXCIpIHtcbiAgICAgICAgcGF0aC5wYXRobmFtZSA9IHBhdGgucGF0aG5hbWUgPT09IFwiL1wiID8gYmFzZW5hbWUgOiBqb2luUGF0aHMoW2Jhc2VuYW1lLCBwYXRoLnBhdGhuYW1lXSk7XG4gICAgICB9XG4gICAgICAoISFvcHRpb25zLnJlcGxhY2UgPyBuYXZpZ2F0b3IyLnJlcGxhY2UgOiBuYXZpZ2F0b3IyLnB1c2gpKFxuICAgICAgICBwYXRoLFxuICAgICAgICBvcHRpb25zLnN0YXRlLFxuICAgICAgICBvcHRpb25zXG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgYmFzZW5hbWUsXG4gICAgICBuYXZpZ2F0b3IyLFxuICAgICAgcm91dGVQYXRobmFtZXNKc29uLFxuICAgICAgbG9jYXRpb25QYXRobmFtZSxcbiAgICAgIGRhdGFSb3V0ZXJDb250ZXh0XG4gICAgXVxuICApO1xuICByZXR1cm4gbmF2aWdhdGU7XG59XG52YXIgT3V0bGV0Q29udGV4dCA9IFJlYWN0Mi5jcmVhdGVDb250ZXh0KG51bGwpO1xuZnVuY3Rpb24gdXNlT3V0bGV0Q29udGV4dCgpIHtcbiAgcmV0dXJuIFJlYWN0Mi51c2VDb250ZXh0KE91dGxldENvbnRleHQpO1xufVxuZnVuY3Rpb24gdXNlT3V0bGV0KGNvbnRleHQpIHtcbiAgbGV0IG91dGxldCA9IFJlYWN0Mi51c2VDb250ZXh0KFJvdXRlQ29udGV4dCkub3V0bGV0O1xuICBpZiAob3V0bGV0KSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChPdXRsZXRDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0IH0sIG91dGxldCk7XG4gIH1cbiAgcmV0dXJuIG91dGxldDtcbn1cbmZ1bmN0aW9uIHVzZVBhcmFtcygpIHtcbiAgbGV0IHsgbWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHJvdXRlTWF0Y2ggPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV07XG4gIHJldHVybiByb3V0ZU1hdGNoID8gcm91dGVNYXRjaC5wYXJhbXMgOiB7fTtcbn1cbmZ1bmN0aW9uIHVzZVJlc29sdmVkUGF0aCh0bywgeyByZWxhdGl2ZSB9ID0ge30pIHtcbiAgbGV0IHsgbWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHsgcGF0aG5hbWU6IGxvY2F0aW9uUGF0aG5hbWUgfSA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCByb3V0ZVBhdGhuYW1lc0pzb24gPSBKU09OLnN0cmluZ2lmeShnZXRSZXNvbHZlVG9NYXRjaGVzKG1hdGNoZXMpKTtcbiAgcmV0dXJuIFJlYWN0Mi51c2VNZW1vKFxuICAgICgpID0+IHJlc29sdmVUbyhcbiAgICAgIHRvLFxuICAgICAgSlNPTi5wYXJzZShyb3V0ZVBhdGhuYW1lc0pzb24pLFxuICAgICAgbG9jYXRpb25QYXRobmFtZSxcbiAgICAgIHJlbGF0aXZlID09PSBcInBhdGhcIlxuICAgICksXG4gICAgW3RvLCByb3V0ZVBhdGhuYW1lc0pzb24sIGxvY2F0aW9uUGF0aG5hbWUsIHJlbGF0aXZlXVxuICApO1xufVxuZnVuY3Rpb24gdXNlUm91dGVzKHJvdXRlcywgbG9jYXRpb25BcmcpIHtcbiAgcmV0dXJuIHVzZVJvdXRlc0ltcGwocm91dGVzLCBsb2NhdGlvbkFyZyk7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZXNJbXBsKHJvdXRlcywgbG9jYXRpb25BcmcsIGRhdGFSb3V0ZXJTdGF0ZSwgZnV0dXJlKSB7XG4gIGludmFyaWFudChcbiAgICB1c2VJblJvdXRlckNvbnRleHQoKSxcbiAgICAvLyBUT0RPOiBUaGlzIGVycm9yIGlzIHByb2JhYmx5IGJlY2F1c2UgdGhleSBzb21laG93IGhhdmUgMiB2ZXJzaW9ucyBvZiB0aGVcbiAgICAvLyByb3V0ZXIgbG9hZGVkLiBXZSBjYW4gaGVscCB0aGVtIHVuZGVyc3RhbmQgaG93IHRvIGF2b2lkIHRoYXQuXG4gICAgYHVzZVJvdXRlcygpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuYFxuICApO1xuICBsZXQgeyBuYXZpZ2F0b3I6IG5hdmlnYXRvcjIgfSA9IFJlYWN0Mi51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IHsgbWF0Y2hlczogcGFyZW50TWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHJvdXRlTWF0Y2ggPSBwYXJlbnRNYXRjaGVzW3BhcmVudE1hdGNoZXMubGVuZ3RoIC0gMV07XG4gIGxldCBwYXJlbnRQYXJhbXMgPSByb3V0ZU1hdGNoID8gcm91dGVNYXRjaC5wYXJhbXMgOiB7fTtcbiAgbGV0IHBhcmVudFBhdGhuYW1lID0gcm91dGVNYXRjaCA/IHJvdXRlTWF0Y2gucGF0aG5hbWUgOiBcIi9cIjtcbiAgbGV0IHBhcmVudFBhdGhuYW1lQmFzZSA9IHJvdXRlTWF0Y2ggPyByb3V0ZU1hdGNoLnBhdGhuYW1lQmFzZSA6IFwiL1wiO1xuICBsZXQgcGFyZW50Um91dGUgPSByb3V0ZU1hdGNoICYmIHJvdXRlTWF0Y2gucm91dGU7XG4gIGlmIChFTkFCTEVfREVWX1dBUk5JTkdTKSB7XG4gICAgbGV0IHBhcmVudFBhdGggPSBwYXJlbnRSb3V0ZSAmJiBwYXJlbnRSb3V0ZS5wYXRoIHx8IFwiXCI7XG4gICAgd2FybmluZ09uY2UoXG4gICAgICBwYXJlbnRQYXRobmFtZSxcbiAgICAgICFwYXJlbnRSb3V0ZSB8fCBwYXJlbnRQYXRoLmVuZHNXaXRoKFwiKlwiKSB8fCBwYXJlbnRQYXRoLmVuZHNXaXRoKFwiKj9cIiksXG4gICAgICBgWW91IHJlbmRlcmVkIGRlc2NlbmRhbnQgPFJvdXRlcz4gKG9yIGNhbGxlZCBcXGB1c2VSb3V0ZXMoKVxcYCkgYXQgXCIke3BhcmVudFBhdGhuYW1lfVwiICh1bmRlciA8Um91dGUgcGF0aD1cIiR7cGFyZW50UGF0aH1cIj4pIGJ1dCB0aGUgcGFyZW50IHJvdXRlIHBhdGggaGFzIG5vIHRyYWlsaW5nIFwiKlwiLiBUaGlzIG1lYW5zIGlmIHlvdSBuYXZpZ2F0ZSBkZWVwZXIsIHRoZSBwYXJlbnQgd29uJ3QgbWF0Y2ggYW55bW9yZSBhbmQgdGhlcmVmb3JlIHRoZSBjaGlsZCByb3V0ZXMgd2lsbCBuZXZlciByZW5kZXIuXG5cblBsZWFzZSBjaGFuZ2UgdGhlIHBhcmVudCA8Um91dGUgcGF0aD1cIiR7cGFyZW50UGF0aH1cIj4gdG8gPFJvdXRlIHBhdGg9XCIke3BhcmVudFBhdGggPT09IFwiL1wiID8gXCIqXCIgOiBgJHtwYXJlbnRQYXRofS8qYH1cIj4uYFxuICAgICk7XG4gIH1cbiAgbGV0IGxvY2F0aW9uRnJvbUNvbnRleHQgPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgbG9jYXRpb247XG4gIGlmIChsb2NhdGlvbkFyZykge1xuICAgIGxldCBwYXJzZWRMb2NhdGlvbkFyZyA9IHR5cGVvZiBsb2NhdGlvbkFyZyA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aChsb2NhdGlvbkFyZykgOiBsb2NhdGlvbkFyZztcbiAgICBpbnZhcmlhbnQoXG4gICAgICBwYXJlbnRQYXRobmFtZUJhc2UgPT09IFwiL1wiIHx8IHBhcnNlZExvY2F0aW9uQXJnLnBhdGhuYW1lPy5zdGFydHNXaXRoKHBhcmVudFBhdGhuYW1lQmFzZSksXG4gICAgICBgV2hlbiBvdmVycmlkaW5nIHRoZSBsb2NhdGlvbiB1c2luZyBcXGA8Um91dGVzIGxvY2F0aW9uPlxcYCBvciBcXGB1c2VSb3V0ZXMocm91dGVzLCBsb2NhdGlvbilcXGAsIHRoZSBsb2NhdGlvbiBwYXRobmFtZSBtdXN0IGJlZ2luIHdpdGggdGhlIHBvcnRpb24gb2YgdGhlIFVSTCBwYXRobmFtZSB0aGF0IHdhcyBtYXRjaGVkIGJ5IGFsbCBwYXJlbnQgcm91dGVzLiBUaGUgY3VycmVudCBwYXRobmFtZSBiYXNlIGlzIFwiJHtwYXJlbnRQYXRobmFtZUJhc2V9XCIgYnV0IHBhdGhuYW1lIFwiJHtwYXJzZWRMb2NhdGlvbkFyZy5wYXRobmFtZX1cIiB3YXMgZ2l2ZW4gaW4gdGhlIFxcYGxvY2F0aW9uXFxgIHByb3AuYFxuICAgICk7XG4gICAgbG9jYXRpb24gPSBwYXJzZWRMb2NhdGlvbkFyZztcbiAgfSBlbHNlIHtcbiAgICBsb2NhdGlvbiA9IGxvY2F0aW9uRnJvbUNvbnRleHQ7XG4gIH1cbiAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWUgfHwgXCIvXCI7XG4gIGxldCByZW1haW5pbmdQYXRobmFtZSA9IHBhdGhuYW1lO1xuICBpZiAocGFyZW50UGF0aG5hbWVCYXNlICE9PSBcIi9cIikge1xuICAgIGxldCBwYXJlbnRTZWdtZW50cyA9IHBhcmVudFBhdGhuYW1lQmFzZS5yZXBsYWNlKC9eXFwvLywgXCJcIikuc3BsaXQoXCIvXCIpO1xuICAgIGxldCBzZWdtZW50cyA9IHBhdGhuYW1lLnJlcGxhY2UoL15cXC8vLCBcIlwiKS5zcGxpdChcIi9cIik7XG4gICAgcmVtYWluaW5nUGF0aG5hbWUgPSBcIi9cIiArIHNlZ21lbnRzLnNsaWNlKHBhcmVudFNlZ21lbnRzLmxlbmd0aCkuam9pbihcIi9cIik7XG4gIH1cbiAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhyb3V0ZXMsIHsgcGF0aG5hbWU6IHJlbWFpbmluZ1BhdGhuYW1lIH0pO1xuICBpZiAoRU5BQkxFX0RFVl9XQVJOSU5HUykge1xuICAgIHdhcm5pbmcoXG4gICAgICBwYXJlbnRSb3V0ZSB8fCBtYXRjaGVzICE9IG51bGwsXG4gICAgICBgTm8gcm91dGVzIG1hdGNoZWQgbG9jYXRpb24gXCIke2xvY2F0aW9uLnBhdGhuYW1lfSR7bG9jYXRpb24uc2VhcmNofSR7bG9jYXRpb24uaGFzaH1cIiBgXG4gICAgKTtcbiAgICB3YXJuaW5nKFxuICAgICAgbWF0Y2hlcyA9PSBudWxsIHx8IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5lbGVtZW50ICE9PSB2b2lkIDAgfHwgbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdLnJvdXRlLkNvbXBvbmVudCAhPT0gdm9pZCAwIHx8IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5sYXp5ICE9PSB2b2lkIDAsXG4gICAgICBgTWF0Y2hlZCBsZWFmIHJvdXRlIGF0IGxvY2F0aW9uIFwiJHtsb2NhdGlvbi5wYXRobmFtZX0ke2xvY2F0aW9uLnNlYXJjaH0ke2xvY2F0aW9uLmhhc2h9XCIgZG9lcyBub3QgaGF2ZSBhbiBlbGVtZW50IG9yIENvbXBvbmVudC4gVGhpcyBtZWFucyBpdCB3aWxsIHJlbmRlciBhbiA8T3V0bGV0IC8+IHdpdGggYSBudWxsIHZhbHVlIGJ5IGRlZmF1bHQgcmVzdWx0aW5nIGluIGFuIFwiZW1wdHlcIiBwYWdlLmBcbiAgICApO1xuICB9XG4gIGxldCByZW5kZXJlZE1hdGNoZXMgPSBfcmVuZGVyTWF0Y2hlcyhcbiAgICBtYXRjaGVzICYmIG1hdGNoZXMubWFwKFxuICAgICAgKG1hdGNoKSA9PiBPYmplY3QuYXNzaWduKHt9LCBtYXRjaCwge1xuICAgICAgICBwYXJhbXM6IE9iamVjdC5hc3NpZ24oe30sIHBhcmVudFBhcmFtcywgbWF0Y2gucGFyYW1zKSxcbiAgICAgICAgcGF0aG5hbWU6IGpvaW5QYXRocyhbXG4gICAgICAgICAgcGFyZW50UGF0aG5hbWVCYXNlLFxuICAgICAgICAgIC8vIFJlLWVuY29kZSBwYXRobmFtZXMgdGhhdCB3ZXJlIGRlY29kZWQgaW5zaWRlIG1hdGNoUm91dGVzXG4gICAgICAgICAgbmF2aWdhdG9yMi5lbmNvZGVMb2NhdGlvbiA/IG5hdmlnYXRvcjIuZW5jb2RlTG9jYXRpb24obWF0Y2gucGF0aG5hbWUpLnBhdGhuYW1lIDogbWF0Y2gucGF0aG5hbWVcbiAgICAgICAgXSksXG4gICAgICAgIHBhdGhuYW1lQmFzZTogbWF0Y2gucGF0aG5hbWVCYXNlID09PSBcIi9cIiA/IHBhcmVudFBhdGhuYW1lQmFzZSA6IGpvaW5QYXRocyhbXG4gICAgICAgICAgcGFyZW50UGF0aG5hbWVCYXNlLFxuICAgICAgICAgIC8vIFJlLWVuY29kZSBwYXRobmFtZXMgdGhhdCB3ZXJlIGRlY29kZWQgaW5zaWRlIG1hdGNoUm91dGVzXG4gICAgICAgICAgbmF2aWdhdG9yMi5lbmNvZGVMb2NhdGlvbiA/IG5hdmlnYXRvcjIuZW5jb2RlTG9jYXRpb24obWF0Y2gucGF0aG5hbWVCYXNlKS5wYXRobmFtZSA6IG1hdGNoLnBhdGhuYW1lQmFzZVxuICAgICAgICBdKVxuICAgICAgfSlcbiAgICApLFxuICAgIHBhcmVudE1hdGNoZXMsXG4gICAgZGF0YVJvdXRlclN0YXRlLFxuICAgIGZ1dHVyZVxuICApO1xuICBpZiAobG9jYXRpb25BcmcgJiYgcmVuZGVyZWRNYXRjaGVzKSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcbiAgICAgIExvY2F0aW9uQ29udGV4dC5Qcm92aWRlcixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgICAgcGF0aG5hbWU6IFwiL1wiLFxuICAgICAgICAgICAgc2VhcmNoOiBcIlwiLFxuICAgICAgICAgICAgaGFzaDogXCJcIixcbiAgICAgICAgICAgIHN0YXRlOiBudWxsLFxuICAgICAgICAgICAga2V5OiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIC4uLmxvY2F0aW9uXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYXZpZ2F0aW9uVHlwZTogXCJQT1BcIiAvKiBQb3AgKi9cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlbmRlcmVkTWF0Y2hlc1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlbmRlcmVkTWF0Y2hlcztcbn1cbmZ1bmN0aW9uIERlZmF1bHRFcnJvckNvbXBvbmVudCgpIHtcbiAgbGV0IGVycm9yID0gdXNlUm91dGVFcnJvcigpO1xuICBsZXQgbWVzc2FnZSA9IGlzUm91dGVFcnJvclJlc3BvbnNlKGVycm9yKSA/IGAke2Vycm9yLnN0YXR1c30gJHtlcnJvci5zdGF0dXNUZXh0fWAgOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgbGV0IHN0YWNrID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLnN0YWNrIDogbnVsbDtcbiAgbGV0IGxpZ2h0Z3JleSA9IFwicmdiYSgyMDAsMjAwLDIwMCwgMC41KVwiO1xuICBsZXQgcHJlU3R5bGVzID0geyBwYWRkaW5nOiBcIjAuNXJlbVwiLCBiYWNrZ3JvdW5kQ29sb3I6IGxpZ2h0Z3JleSB9O1xuICBsZXQgY29kZVN0eWxlcyA9IHsgcGFkZGluZzogXCIycHggNHB4XCIsIGJhY2tncm91bmRDb2xvcjogbGlnaHRncmV5IH07XG4gIGxldCBkZXZJbmZvID0gbnVsbDtcbiAgaWYgKEVOQUJMRV9ERVZfV0FSTklOR1MpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJFcnJvciBoYW5kbGVkIGJ5IFJlYWN0IFJvdXRlciBkZWZhdWx0IEVycm9yQm91bmRhcnk6XCIsXG4gICAgICBlcnJvclxuICAgICk7XG4gICAgZGV2SW5mbyA9IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChSZWFjdDIuRnJhZ21lbnQsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcInBcIiwgbnVsbCwgXCJcXHV7MUY0QkZ9IEhleSBkZXZlbG9wZXIgXFx1ezFGNDRCfVwiKSwgLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFwicFwiLCBudWxsLCBcIllvdSBjYW4gcHJvdmlkZSBhIHdheSBiZXR0ZXIgVVggdGhhbiB0aGlzIHdoZW4geW91ciBhcHAgdGhyb3dzIGVycm9ycyBieSBwcm92aWRpbmcgeW91ciBvd24gXCIsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcImNvZGVcIiwgeyBzdHlsZTogY29kZVN0eWxlcyB9LCBcIkVycm9yQm91bmRhcnlcIiksIFwiIG9yXCIsIFwiIFwiLCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXCJjb2RlXCIsIHsgc3R5bGU6IGNvZGVTdHlsZXMgfSwgXCJlcnJvckVsZW1lbnRcIiksIFwiIHByb3Agb24geW91ciByb3V0ZS5cIikpO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoUmVhY3QyLkZyYWdtZW50LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXCJoMlwiLCBudWxsLCBcIlVuZXhwZWN0ZWQgQXBwbGljYXRpb24gRXJyb3IhXCIpLCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXCJoM1wiLCB7IHN0eWxlOiB7IGZvbnRTdHlsZTogXCJpdGFsaWNcIiB9IH0sIG1lc3NhZ2UpLCBzdGFjayA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcInByZVwiLCB7IHN0eWxlOiBwcmVTdHlsZXMgfSwgc3RhY2spIDogbnVsbCwgZGV2SW5mbyk7XG59XG52YXIgZGVmYXVsdEVycm9yRWxlbWVudCA9IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChEZWZhdWx0RXJyb3JDb21wb25lbnQsIG51bGwpO1xudmFyIFJlbmRlckVycm9yQm91bmRhcnkgPSBjbGFzcyBleHRlbmRzIFJlYWN0Mi5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uLFxuICAgICAgcmV2YWxpZGF0aW9uOiBwcm9wcy5yZXZhbGlkYXRpb24sXG4gICAgICBlcnJvcjogcHJvcHMuZXJyb3JcbiAgICB9O1xuICB9XG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3IpIHtcbiAgICByZXR1cm4geyBlcnJvciB9O1xuICB9XG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgaWYgKHN0YXRlLmxvY2F0aW9uICE9PSBwcm9wcy5sb2NhdGlvbiB8fCBzdGF0ZS5yZXZhbGlkYXRpb24gIT09IFwiaWRsZVwiICYmIHByb3BzLnJldmFsaWRhdGlvbiA9PT0gXCJpZGxlXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yOiBwcm9wcy5lcnJvcixcbiAgICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uLFxuICAgICAgICByZXZhbGlkYXRpb246IHByb3BzLnJldmFsaWRhdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiBwcm9wcy5lcnJvciAhPT0gdm9pZCAwID8gcHJvcHMuZXJyb3IgOiBzdGF0ZS5lcnJvcixcbiAgICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgIHJldmFsaWRhdGlvbjogcHJvcHMucmV2YWxpZGF0aW9uIHx8IHN0YXRlLnJldmFsaWRhdGlvblxuICAgIH07XG4gIH1cbiAgY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGVycm9ySW5mbykge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlJlYWN0IFJvdXRlciBjYXVnaHQgdGhlIGZvbGxvd2luZyBlcnJvciBkdXJpbmcgcmVuZGVyXCIsXG4gICAgICBlcnJvcixcbiAgICAgIGVycm9ySW5mb1xuICAgICk7XG4gIH1cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmVycm9yICE9PSB2b2lkIDAgPyAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoUm91dGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB0aGlzLnByb3BzLnJvdXRlQ29udGV4dCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBSb3V0ZUVycm9yQ29udGV4dC5Qcm92aWRlcixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHRoaXMuc3RhdGUuZXJyb3IsXG4gICAgICAgIGNoaWxkcmVuOiB0aGlzLnByb3BzLmNvbXBvbmVudFxuICAgICAgfVxuICAgICkpIDogdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgfVxufTtcbmZ1bmN0aW9uIFJlbmRlcmVkUm91dGUoeyByb3V0ZUNvbnRleHQsIG1hdGNoLCBjaGlsZHJlbiB9KSB7XG4gIGxldCBkYXRhUm91dGVyQ29udGV4dCA9IFJlYWN0Mi51c2VDb250ZXh0KERhdGFSb3V0ZXJDb250ZXh0KTtcbiAgaWYgKGRhdGFSb3V0ZXJDb250ZXh0ICYmIGRhdGFSb3V0ZXJDb250ZXh0LnN0YXRpYyAmJiBkYXRhUm91dGVyQ29udGV4dC5zdGF0aWNDb250ZXh0ICYmIChtYXRjaC5yb3V0ZS5lcnJvckVsZW1lbnQgfHwgbWF0Y2gucm91dGUuRXJyb3JCb3VuZGFyeSkpIHtcbiAgICBkYXRhUm91dGVyQ29udGV4dC5zdGF0aWNDb250ZXh0Ll9kZWVwZXN0UmVuZGVyZWRCb3VuZGFyeUlkID0gbWF0Y2gucm91dGUuaWQ7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChSb3V0ZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHJvdXRlQ29udGV4dCB9LCBjaGlsZHJlbik7XG59XG5mdW5jdGlvbiBfcmVuZGVyTWF0Y2hlcyhtYXRjaGVzLCBwYXJlbnRNYXRjaGVzID0gW10sIGRhdGFSb3V0ZXJTdGF0ZSA9IG51bGwsIGZ1dHVyZSA9IG51bGwpIHtcbiAgaWYgKG1hdGNoZXMgPT0gbnVsbCkge1xuICAgIGlmICghZGF0YVJvdXRlclN0YXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGRhdGFSb3V0ZXJTdGF0ZS5lcnJvcnMpIHtcbiAgICAgIG1hdGNoZXMgPSBkYXRhUm91dGVyU3RhdGUubWF0Y2hlcztcbiAgICB9IGVsc2UgaWYgKHBhcmVudE1hdGNoZXMubGVuZ3RoID09PSAwICYmICFkYXRhUm91dGVyU3RhdGUuaW5pdGlhbGl6ZWQgJiYgZGF0YVJvdXRlclN0YXRlLm1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgbWF0Y2hlcyA9IGRhdGFSb3V0ZXJTdGF0ZS5tYXRjaGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgbGV0IHJlbmRlcmVkTWF0Y2hlcyA9IG1hdGNoZXM7XG4gIGxldCBlcnJvcnMgPSBkYXRhUm91dGVyU3RhdGU/LmVycm9ycztcbiAgaWYgKGVycm9ycyAhPSBudWxsKSB7XG4gICAgbGV0IGVycm9ySW5kZXggPSByZW5kZXJlZE1hdGNoZXMuZmluZEluZGV4KFxuICAgICAgKG0pID0+IG0ucm91dGUuaWQgJiYgZXJyb3JzPy5bbS5yb3V0ZS5pZF0gIT09IHZvaWQgMFxuICAgICk7XG4gICAgaW52YXJpYW50KFxuICAgICAgZXJyb3JJbmRleCA+PSAwLFxuICAgICAgYENvdWxkIG5vdCBmaW5kIGEgbWF0Y2hpbmcgcm91dGUgZm9yIGVycm9ycyBvbiByb3V0ZSBJRHM6ICR7T2JqZWN0LmtleXMoXG4gICAgICAgIGVycm9yc1xuICAgICAgKS5qb2luKFwiLFwiKX1gXG4gICAgKTtcbiAgICByZW5kZXJlZE1hdGNoZXMgPSByZW5kZXJlZE1hdGNoZXMuc2xpY2UoXG4gICAgICAwLFxuICAgICAgTWF0aC5taW4ocmVuZGVyZWRNYXRjaGVzLmxlbmd0aCwgZXJyb3JJbmRleCArIDEpXG4gICAgKTtcbiAgfVxuICBsZXQgcmVuZGVyRmFsbGJhY2sgPSBmYWxzZTtcbiAgbGV0IGZhbGxiYWNrSW5kZXggPSAtMTtcbiAgaWYgKGRhdGFSb3V0ZXJTdGF0ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVuZGVyZWRNYXRjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbWF0Y2ggPSByZW5kZXJlZE1hdGNoZXNbaV07XG4gICAgICBpZiAobWF0Y2gucm91dGUuSHlkcmF0ZUZhbGxiYWNrIHx8IG1hdGNoLnJvdXRlLmh5ZHJhdGVGYWxsYmFja0VsZW1lbnQpIHtcbiAgICAgICAgZmFsbGJhY2tJbmRleCA9IGk7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2gucm91dGUuaWQpIHtcbiAgICAgICAgbGV0IHsgbG9hZGVyRGF0YSwgZXJyb3JzOiBlcnJvcnMyIH0gPSBkYXRhUm91dGVyU3RhdGU7XG4gICAgICAgIGxldCBuZWVkc1RvUnVuTG9hZGVyID0gbWF0Y2gucm91dGUubG9hZGVyICYmICFsb2FkZXJEYXRhLmhhc093blByb3BlcnR5KG1hdGNoLnJvdXRlLmlkKSAmJiAoIWVycm9yczIgfHwgZXJyb3JzMlttYXRjaC5yb3V0ZS5pZF0gPT09IHZvaWQgMCk7XG4gICAgICAgIGlmIChtYXRjaC5yb3V0ZS5sYXp5IHx8IG5lZWRzVG9SdW5Mb2FkZXIpIHtcbiAgICAgICAgICByZW5kZXJGYWxsYmFjayA9IHRydWU7XG4gICAgICAgICAgaWYgKGZhbGxiYWNrSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgcmVuZGVyZWRNYXRjaGVzID0gcmVuZGVyZWRNYXRjaGVzLnNsaWNlKDAsIGZhbGxiYWNrSW5kZXggKyAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVuZGVyZWRNYXRjaGVzID0gW3JlbmRlcmVkTWF0Y2hlc1swXV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZW5kZXJlZE1hdGNoZXMucmVkdWNlUmlnaHQoKG91dGxldCwgbWF0Y2gsIGluZGV4KSA9PiB7XG4gICAgbGV0IGVycm9yO1xuICAgIGxldCBzaG91bGRSZW5kZXJIeWRyYXRlRmFsbGJhY2sgPSBmYWxzZTtcbiAgICBsZXQgZXJyb3JFbGVtZW50ID0gbnVsbDtcbiAgICBsZXQgaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCA9IG51bGw7XG4gICAgaWYgKGRhdGFSb3V0ZXJTdGF0ZSkge1xuICAgICAgZXJyb3IgPSBlcnJvcnMgJiYgbWF0Y2gucm91dGUuaWQgPyBlcnJvcnNbbWF0Y2gucm91dGUuaWRdIDogdm9pZCAwO1xuICAgICAgZXJyb3JFbGVtZW50ID0gbWF0Y2gucm91dGUuZXJyb3JFbGVtZW50IHx8IGRlZmF1bHRFcnJvckVsZW1lbnQ7XG4gICAgICBpZiAocmVuZGVyRmFsbGJhY2spIHtcbiAgICAgICAgaWYgKGZhbGxiYWNrSW5kZXggPCAwICYmIGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgd2FybmluZ09uY2UoXG4gICAgICAgICAgICBcInJvdXRlLWZhbGxiYWNrXCIsXG4gICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgIFwiTm8gYEh5ZHJhdGVGYWxsYmFja2AgZWxlbWVudCBwcm92aWRlZCB0byByZW5kZXIgZHVyaW5nIGluaXRpYWwgaHlkcmF0aW9uXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIHNob3VsZFJlbmRlckh5ZHJhdGVGYWxsYmFjayA9IHRydWU7XG4gICAgICAgICAgaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCA9IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoZmFsbGJhY2tJbmRleCA9PT0gaW5kZXgpIHtcbiAgICAgICAgICBzaG91bGRSZW5kZXJIeWRyYXRlRmFsbGJhY2sgPSB0cnVlO1xuICAgICAgICAgIGh5ZHJhdGVGYWxsYmFja0VsZW1lbnQgPSBtYXRjaC5yb3V0ZS5oeWRyYXRlRmFsbGJhY2tFbGVtZW50IHx8IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IG1hdGNoZXMyID0gcGFyZW50TWF0Y2hlcy5jb25jYXQocmVuZGVyZWRNYXRjaGVzLnNsaWNlKDAsIGluZGV4ICsgMSkpO1xuICAgIGxldCBnZXRDaGlsZHJlbiA9ICgpID0+IHtcbiAgICAgIGxldCBjaGlsZHJlbjtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBjaGlsZHJlbiA9IGVycm9yRWxlbWVudDtcbiAgICAgIH0gZWxzZSBpZiAoc2hvdWxkUmVuZGVySHlkcmF0ZUZhbGxiYWNrKSB7XG4gICAgICAgIGNoaWxkcmVuID0gaHlkcmF0ZUZhbGxiYWNrRWxlbWVudDtcbiAgICAgIH0gZWxzZSBpZiAobWF0Y2gucm91dGUuQ29tcG9uZW50KSB7XG4gICAgICAgIGNoaWxkcmVuID0gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KG1hdGNoLnJvdXRlLkNvbXBvbmVudCwgbnVsbCk7XG4gICAgICB9IGVsc2UgaWYgKG1hdGNoLnJvdXRlLmVsZW1lbnQpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBtYXRjaC5yb3V0ZS5lbGVtZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGRyZW4gPSBvdXRsZXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFxuICAgICAgICBSZW5kZXJlZFJvdXRlLFxuICAgICAgICB7XG4gICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgcm91dGVDb250ZXh0OiB7XG4gICAgICAgICAgICBvdXRsZXQsXG4gICAgICAgICAgICBtYXRjaGVzOiBtYXRjaGVzMixcbiAgICAgICAgICAgIGlzRGF0YVJvdXRlOiBkYXRhUm91dGVyU3RhdGUgIT0gbnVsbFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9O1xuICAgIHJldHVybiBkYXRhUm91dGVyU3RhdGUgJiYgKG1hdGNoLnJvdXRlLkVycm9yQm91bmRhcnkgfHwgbWF0Y2gucm91dGUuZXJyb3JFbGVtZW50IHx8IGluZGV4ID09PSAwKSA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcbiAgICAgIFJlbmRlckVycm9yQm91bmRhcnksXG4gICAgICB7XG4gICAgICAgIGxvY2F0aW9uOiBkYXRhUm91dGVyU3RhdGUubG9jYXRpb24sXG4gICAgICAgIHJldmFsaWRhdGlvbjogZGF0YVJvdXRlclN0YXRlLnJldmFsaWRhdGlvbixcbiAgICAgICAgY29tcG9uZW50OiBlcnJvckVsZW1lbnQsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBjaGlsZHJlbjogZ2V0Q2hpbGRyZW4oKSxcbiAgICAgICAgcm91dGVDb250ZXh0OiB7IG91dGxldDogbnVsbCwgbWF0Y2hlczogbWF0Y2hlczIsIGlzRGF0YVJvdXRlOiB0cnVlIH1cbiAgICAgIH1cbiAgICApIDogZ2V0Q2hpbGRyZW4oKTtcbiAgfSwgbnVsbCk7XG59XG5mdW5jdGlvbiBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yKGhvb2tOYW1lKSB7XG4gIHJldHVybiBgJHtob29rTmFtZX0gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGRhdGEgcm91dGVyLiAgU2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2VuL21haW4vcm91dGVycy9waWNraW5nLWEtcm91dGVyLmA7XG59XG5mdW5jdGlvbiB1c2VEYXRhUm91dGVyQ29udGV4dChob29rTmFtZSkge1xuICBsZXQgY3R4ID0gUmVhY3QyLnVzZUNvbnRleHQoRGF0YVJvdXRlckNvbnRleHQpO1xuICBpbnZhcmlhbnQoY3R4LCBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yKGhvb2tOYW1lKSk7XG4gIHJldHVybiBjdHg7XG59XG5mdW5jdGlvbiB1c2VEYXRhUm91dGVyU3RhdGUoaG9va05hbWUpIHtcbiAgbGV0IHN0YXRlID0gUmVhY3QyLnVzZUNvbnRleHQoRGF0YVJvdXRlclN0YXRlQ29udGV4dCk7XG4gIGludmFyaWFudChzdGF0ZSwgZ2V0RGF0YVJvdXRlckNvbnNvbGVFcnJvcihob29rTmFtZSkpO1xuICByZXR1cm4gc3RhdGU7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZUNvbnRleHQoaG9va05hbWUpIHtcbiAgbGV0IHJvdXRlID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgaW52YXJpYW50KHJvdXRlLCBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yKGhvb2tOYW1lKSk7XG4gIHJldHVybiByb3V0ZTtcbn1cbmZ1bmN0aW9uIHVzZUN1cnJlbnRSb3V0ZUlkKGhvb2tOYW1lKSB7XG4gIGxldCByb3V0ZSA9IHVzZVJvdXRlQ29udGV4dChob29rTmFtZSk7XG4gIGxldCB0aGlzUm91dGUgPSByb3V0ZS5tYXRjaGVzW3JvdXRlLm1hdGNoZXMubGVuZ3RoIC0gMV07XG4gIGludmFyaWFudChcbiAgICB0aGlzUm91dGUucm91dGUuaWQsXG4gICAgYCR7aG9va05hbWV9IGNhbiBvbmx5IGJlIHVzZWQgb24gcm91dGVzIHRoYXQgY29udGFpbiBhIHVuaXF1ZSBcImlkXCJgXG4gICk7XG4gIHJldHVybiB0aGlzUm91dGUucm91dGUuaWQ7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZUlkKCkge1xuICByZXR1cm4gdXNlQ3VycmVudFJvdXRlSWQoXCJ1c2VSb3V0ZUlkXCIgLyogVXNlUm91dGVJZCAqLyk7XG59XG5mdW5jdGlvbiB1c2VOYXZpZ2F0aW9uKCkge1xuICBsZXQgc3RhdGUgPSB1c2VEYXRhUm91dGVyU3RhdGUoXCJ1c2VOYXZpZ2F0aW9uXCIgLyogVXNlTmF2aWdhdGlvbiAqLyk7XG4gIHJldHVybiBzdGF0ZS5uYXZpZ2F0aW9uO1xufVxuZnVuY3Rpb24gdXNlUmV2YWxpZGF0b3IoKSB7XG4gIGxldCBkYXRhUm91dGVyQ29udGV4dCA9IHVzZURhdGFSb3V0ZXJDb250ZXh0KFwidXNlUmV2YWxpZGF0b3JcIiAvKiBVc2VSZXZhbGlkYXRvciAqLyk7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcInVzZVJldmFsaWRhdG9yXCIgLyogVXNlUmV2YWxpZGF0b3IgKi8pO1xuICByZXR1cm4gUmVhY3QyLnVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGFzeW5jIHJldmFsaWRhdGUoKSB7XG4gICAgICAgIGF3YWl0IGRhdGFSb3V0ZXJDb250ZXh0LnJvdXRlci5yZXZhbGlkYXRlKCk7XG4gICAgICB9LFxuICAgICAgc3RhdGU6IHN0YXRlLnJldmFsaWRhdGlvblxuICAgIH0pLFxuICAgIFtkYXRhUm91dGVyQ29udGV4dC5yb3V0ZXIsIHN0YXRlLnJldmFsaWRhdGlvbl1cbiAgKTtcbn1cbmZ1bmN0aW9uIHVzZU1hdGNoZXMoKSB7XG4gIGxldCB7IG1hdGNoZXMsIGxvYWRlckRhdGEgfSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcbiAgICBcInVzZU1hdGNoZXNcIiAvKiBVc2VNYXRjaGVzICovXG4gICk7XG4gIHJldHVybiBSZWFjdDIudXNlTWVtbyhcbiAgICAoKSA9PiBtYXRjaGVzLm1hcCgobSkgPT4gY29udmVydFJvdXRlTWF0Y2hUb1VpTWF0Y2gobSwgbG9hZGVyRGF0YSkpLFxuICAgIFttYXRjaGVzLCBsb2FkZXJEYXRhXVxuICApO1xufVxuZnVuY3Rpb24gdXNlTG9hZGVyRGF0YSgpIHtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlKFwidXNlTG9hZGVyRGF0YVwiIC8qIFVzZUxvYWRlckRhdGEgKi8pO1xuICBsZXQgcm91dGVJZCA9IHVzZUN1cnJlbnRSb3V0ZUlkKFwidXNlTG9hZGVyRGF0YVwiIC8qIFVzZUxvYWRlckRhdGEgKi8pO1xuICByZXR1cm4gc3RhdGUubG9hZGVyRGF0YVtyb3V0ZUlkXTtcbn1cbmZ1bmN0aW9uIHVzZVJvdXRlTG9hZGVyRGF0YShyb3V0ZUlkKSB7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcInVzZVJvdXRlTG9hZGVyRGF0YVwiIC8qIFVzZVJvdXRlTG9hZGVyRGF0YSAqLyk7XG4gIHJldHVybiBzdGF0ZS5sb2FkZXJEYXRhW3JvdXRlSWRdO1xufVxuZnVuY3Rpb24gdXNlQWN0aW9uRGF0YSgpIHtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlKFwidXNlQWN0aW9uRGF0YVwiIC8qIFVzZUFjdGlvbkRhdGEgKi8pO1xuICBsZXQgcm91dGVJZCA9IHVzZUN1cnJlbnRSb3V0ZUlkKFwidXNlTG9hZGVyRGF0YVwiIC8qIFVzZUxvYWRlckRhdGEgKi8pO1xuICByZXR1cm4gc3RhdGUuYWN0aW9uRGF0YSA/IHN0YXRlLmFjdGlvbkRhdGFbcm91dGVJZF0gOiB2b2lkIDA7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZUVycm9yKCkge1xuICBsZXQgZXJyb3IgPSBSZWFjdDIudXNlQ29udGV4dChSb3V0ZUVycm9yQ29udGV4dCk7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcInVzZVJvdXRlRXJyb3JcIiAvKiBVc2VSb3V0ZUVycm9yICovKTtcbiAgbGV0IHJvdXRlSWQgPSB1c2VDdXJyZW50Um91dGVJZChcInVzZVJvdXRlRXJyb3JcIiAvKiBVc2VSb3V0ZUVycm9yICovKTtcbiAgaWYgKGVycm9yICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLmVycm9ycz8uW3JvdXRlSWRdO1xufVxuZnVuY3Rpb24gdXNlQXN5bmNWYWx1ZSgpIHtcbiAgbGV0IHZhbHVlID0gUmVhY3QyLnVzZUNvbnRleHQoQXdhaXRDb250ZXh0KTtcbiAgcmV0dXJuIHZhbHVlPy5fZGF0YTtcbn1cbmZ1bmN0aW9uIHVzZUFzeW5jRXJyb3IoKSB7XG4gIGxldCB2YWx1ZSA9IFJlYWN0Mi51c2VDb250ZXh0KEF3YWl0Q29udGV4dCk7XG4gIHJldHVybiB2YWx1ZT8uX2Vycm9yO1xufVxudmFyIGJsb2NrZXJJZCA9IDA7XG5mdW5jdGlvbiB1c2VCbG9ja2VyKHNob3VsZEJsb2NrKSB7XG4gIGxldCB7IHJvdXRlciwgYmFzZW5hbWUgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0KFwidXNlQmxvY2tlclwiIC8qIFVzZUJsb2NrZXIgKi8pO1xuICBsZXQgc3RhdGUgPSB1c2VEYXRhUm91dGVyU3RhdGUoXCJ1c2VCbG9ja2VyXCIgLyogVXNlQmxvY2tlciAqLyk7XG4gIGxldCBbYmxvY2tlcktleSwgc2V0QmxvY2tlcktleV0gPSBSZWFjdDIudXNlU3RhdGUoXCJcIik7XG4gIGxldCBibG9ja2VyRnVuY3Rpb24gPSBSZWFjdDIudXNlQ2FsbGJhY2soXG4gICAgKGFyZykgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBzaG91bGRCbG9jayAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiAhIXNob3VsZEJsb2NrO1xuICAgICAgfVxuICAgICAgaWYgKGJhc2VuYW1lID09PSBcIi9cIikge1xuICAgICAgICByZXR1cm4gc2hvdWxkQmxvY2soYXJnKTtcbiAgICAgIH1cbiAgICAgIGxldCB7IGN1cnJlbnRMb2NhdGlvbiwgbmV4dExvY2F0aW9uLCBoaXN0b3J5QWN0aW9uIH0gPSBhcmc7XG4gICAgICByZXR1cm4gc2hvdWxkQmxvY2soe1xuICAgICAgICBjdXJyZW50TG9jYXRpb246IHtcbiAgICAgICAgICAuLi5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgICAgcGF0aG5hbWU6IHN0cmlwQmFzZW5hbWUoY3VycmVudExvY2F0aW9uLnBhdGhuYW1lLCBiYXNlbmFtZSkgfHwgY3VycmVudExvY2F0aW9uLnBhdGhuYW1lXG4gICAgICAgIH0sXG4gICAgICAgIG5leHRMb2NhdGlvbjoge1xuICAgICAgICAgIC4uLm5leHRMb2NhdGlvbixcbiAgICAgICAgICBwYXRobmFtZTogc3RyaXBCYXNlbmFtZShuZXh0TG9jYXRpb24ucGF0aG5hbWUsIGJhc2VuYW1lKSB8fCBuZXh0TG9jYXRpb24ucGF0aG5hbWVcbiAgICAgICAgfSxcbiAgICAgICAgaGlzdG9yeUFjdGlvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbYmFzZW5hbWUsIHNob3VsZEJsb2NrXVxuICApO1xuICBSZWFjdDIudXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQga2V5ID0gU3RyaW5nKCsrYmxvY2tlcklkKTtcbiAgICBzZXRCbG9ja2VyS2V5KGtleSk7XG4gICAgcmV0dXJuICgpID0+IHJvdXRlci5kZWxldGVCbG9ja2VyKGtleSk7XG4gIH0sIFtyb3V0ZXJdKTtcbiAgUmVhY3QyLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGJsb2NrZXJLZXkgIT09IFwiXCIpIHtcbiAgICAgIHJvdXRlci5nZXRCbG9ja2VyKGJsb2NrZXJLZXksIGJsb2NrZXJGdW5jdGlvbik7XG4gICAgfVxuICB9LCBbcm91dGVyLCBibG9ja2VyS2V5LCBibG9ja2VyRnVuY3Rpb25dKTtcbiAgcmV0dXJuIGJsb2NrZXJLZXkgJiYgc3RhdGUuYmxvY2tlcnMuaGFzKGJsb2NrZXJLZXkpID8gc3RhdGUuYmxvY2tlcnMuZ2V0KGJsb2NrZXJLZXkpIDogSURMRV9CTE9DS0VSO1xufVxuZnVuY3Rpb24gdXNlTmF2aWdhdGVTdGFibGUoKSB7XG4gIGxldCB7IHJvdXRlciB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQoXCJ1c2VOYXZpZ2F0ZVwiIC8qIFVzZU5hdmlnYXRlU3RhYmxlICovKTtcbiAgbGV0IGlkID0gdXNlQ3VycmVudFJvdXRlSWQoXCJ1c2VOYXZpZ2F0ZVwiIC8qIFVzZU5hdmlnYXRlU3RhYmxlICovKTtcbiAgbGV0IGFjdGl2ZVJlZiA9IFJlYWN0Mi51c2VSZWYoZmFsc2UpO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBhY3RpdmVSZWYuY3VycmVudCA9IHRydWU7XG4gIH0pO1xuICBsZXQgbmF2aWdhdGUgPSBSZWFjdDIudXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHRvLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIHdhcm5pbmcoYWN0aXZlUmVmLmN1cnJlbnQsIG5hdmlnYXRlRWZmZWN0V2FybmluZyk7XG4gICAgICBpZiAoIWFjdGl2ZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICBpZiAodHlwZW9mIHRvID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJvdXRlci5uYXZpZ2F0ZSh0byk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCByb3V0ZXIubmF2aWdhdGUodG8sIHsgZnJvbVJvdXRlSWQ6IGlkLCAuLi5vcHRpb25zIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3JvdXRlciwgaWRdXG4gICk7XG4gIHJldHVybiBuYXZpZ2F0ZTtcbn1cbnZhciBhbHJlYWR5V2FybmVkID0ge307XG5mdW5jdGlvbiB3YXJuaW5nT25jZShrZXksIGNvbmQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kICYmICFhbHJlYWR5V2FybmVkW2tleV0pIHtcbiAgICBhbHJlYWR5V2FybmVkW2tleV0gPSB0cnVlO1xuICAgIHdhcm5pbmcoZmFsc2UsIG1lc3NhZ2UpO1xuICB9XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS93YXJuaW5ncy50c1xudmFyIGFscmVhZHlXYXJuZWQyID0ge307XG5mdW5jdGlvbiB3YXJuT25jZShjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kaXRpb24gJiYgIWFscmVhZHlXYXJuZWQyW21lc3NhZ2VdKSB7XG4gICAgYWxyZWFkeVdhcm5lZDJbbWVzc2FnZV0gPSB0cnVlO1xuICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgfVxufVxuXG4vLyBsaWIvY29tcG9uZW50cy50c3hcbnZhciBFTkFCTEVfREVWX1dBUk5JTkdTMiA9IHRydWU7XG5mdW5jdGlvbiBtYXBSb3V0ZVByb3BlcnRpZXMocm91dGUpIHtcbiAgbGV0IHVwZGF0ZXMgPSB7XG4gICAgLy8gTm90ZTogdGhpcyBjaGVjayBhbHNvIG9jY3VycyBpbiBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4gc28gdXBkYXRlXG4gICAgLy8gdGhlcmUgaWYgeW91IGNoYW5nZSB0aGlzIC0tIHBsZWFzZSBhbmQgdGhhbmsgeW91IVxuICAgIGhhc0Vycm9yQm91bmRhcnk6IHJvdXRlLmhhc0Vycm9yQm91bmRhcnkgfHwgcm91dGUuRXJyb3JCb3VuZGFyeSAhPSBudWxsIHx8IHJvdXRlLmVycm9yRWxlbWVudCAhPSBudWxsXG4gIH07XG4gIGlmIChyb3V0ZS5Db21wb25lbnQpIHtcbiAgICBpZiAoRU5BQkxFX0RFVl9XQVJOSU5HUzIpIHtcbiAgICAgIGlmIChyb3V0ZS5lbGVtZW50KSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgXCJZb3Ugc2hvdWxkIG5vdCBpbmNsdWRlIGJvdGggYENvbXBvbmVudGAgYW5kIGBlbGVtZW50YCBvbiB5b3VyIHJvdXRlIC0gYENvbXBvbmVudGAgd2lsbCBiZSB1c2VkLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24odXBkYXRlcywge1xuICAgICAgZWxlbWVudDogUmVhY3QzLmNyZWF0ZUVsZW1lbnQocm91dGUuQ29tcG9uZW50KSxcbiAgICAgIENvbXBvbmVudDogdm9pZCAwXG4gICAgfSk7XG4gIH1cbiAgaWYgKHJvdXRlLkh5ZHJhdGVGYWxsYmFjaykge1xuICAgIGlmIChFTkFCTEVfREVWX1dBUk5JTkdTMikge1xuICAgICAgaWYgKHJvdXRlLmh5ZHJhdGVGYWxsYmFja0VsZW1lbnQpIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBcIllvdSBzaG91bGQgbm90IGluY2x1ZGUgYm90aCBgSHlkcmF0ZUZhbGxiYWNrYCBhbmQgYGh5ZHJhdGVGYWxsYmFja0VsZW1lbnRgIG9uIHlvdXIgcm91dGUgLSBgSHlkcmF0ZUZhbGxiYWNrYCB3aWxsIGJlIHVzZWQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbih1cGRhdGVzLCB7XG4gICAgICBoeWRyYXRlRmFsbGJhY2tFbGVtZW50OiBSZWFjdDMuY3JlYXRlRWxlbWVudChyb3V0ZS5IeWRyYXRlRmFsbGJhY2spLFxuICAgICAgSHlkcmF0ZUZhbGxiYWNrOiB2b2lkIDBcbiAgICB9KTtcbiAgfVxuICBpZiAocm91dGUuRXJyb3JCb3VuZGFyeSkge1xuICAgIGlmIChFTkFCTEVfREVWX1dBUk5JTkdTMikge1xuICAgICAgaWYgKHJvdXRlLmVycm9yRWxlbWVudCkge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIFwiWW91IHNob3VsZCBub3QgaW5jbHVkZSBib3RoIGBFcnJvckJvdW5kYXJ5YCBhbmQgYGVycm9yRWxlbWVudGAgb24geW91ciByb3V0ZSAtIGBFcnJvckJvdW5kYXJ5YCB3aWxsIGJlIHVzZWQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbih1cGRhdGVzLCB7XG4gICAgICBlcnJvckVsZW1lbnQ6IFJlYWN0My5jcmVhdGVFbGVtZW50KHJvdXRlLkVycm9yQm91bmRhcnkpLFxuICAgICAgRXJyb3JCb3VuZGFyeTogdm9pZCAwXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHVwZGF0ZXM7XG59XG5mdW5jdGlvbiBjcmVhdGVNZW1vcnlSb3V0ZXIocm91dGVzLCBvcHRzKSB7XG4gIHJldHVybiBjcmVhdGVSb3V0ZXIoe1xuICAgIGJhc2VuYW1lOiBvcHRzPy5iYXNlbmFtZSxcbiAgICBmdXR1cmU6IG9wdHM/LmZ1dHVyZSxcbiAgICBoaXN0b3J5OiBjcmVhdGVNZW1vcnlIaXN0b3J5KHtcbiAgICAgIGluaXRpYWxFbnRyaWVzOiBvcHRzPy5pbml0aWFsRW50cmllcyxcbiAgICAgIGluaXRpYWxJbmRleDogb3B0cz8uaW5pdGlhbEluZGV4XG4gICAgfSksXG4gICAgaHlkcmF0aW9uRGF0YTogb3B0cz8uaHlkcmF0aW9uRGF0YSxcbiAgICByb3V0ZXMsXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzLFxuICAgIGRhdGFTdHJhdGVneTogb3B0cz8uZGF0YVN0cmF0ZWd5LFxuICAgIHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uOiBvcHRzPy5wYXRjaFJvdXRlc09uTmF2aWdhdGlvblxuICB9KS5pbml0aWFsaXplKCk7XG59XG52YXIgRGVmZXJyZWQgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc3RhdHVzID0gXCJwZW5kaW5nXCI7XG4gICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gXCJwZW5kaW5nXCIpIHtcbiAgICAgICAgICB0aGlzLnN0YXR1cyA9IFwicmVzb2x2ZWRcIjtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucmVqZWN0ID0gKHJlYXNvbikgPT4ge1xuICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IFwicGVuZGluZ1wiKSB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBcInJlamVjdGVkXCI7XG4gICAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn07XG5mdW5jdGlvbiBSb3V0ZXJQcm92aWRlcih7XG4gIHJvdXRlcixcbiAgZmx1c2hTeW5jOiByZWFjdERvbUZsdXNoU3luY0ltcGxcbn0pIHtcbiAgbGV0IFtzdGF0ZSwgc2V0U3RhdGVJbXBsXSA9IFJlYWN0My51c2VTdGF0ZShyb3V0ZXIuc3RhdGUpO1xuICBsZXQgW3BlbmRpbmdTdGF0ZSwgc2V0UGVuZGluZ1N0YXRlXSA9IFJlYWN0My51c2VTdGF0ZSgpO1xuICBsZXQgW3Z0Q29udGV4dCwgc2V0VnRDb250ZXh0XSA9IFJlYWN0My51c2VTdGF0ZSh7XG4gICAgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZVxuICB9KTtcbiAgbGV0IFtyZW5kZXJEZmQsIHNldFJlbmRlckRmZF0gPSBSZWFjdDMudXNlU3RhdGUoKTtcbiAgbGV0IFt0cmFuc2l0aW9uLCBzZXRUcmFuc2l0aW9uXSA9IFJlYWN0My51c2VTdGF0ZSgpO1xuICBsZXQgW2ludGVycnVwdGlvbiwgc2V0SW50ZXJydXB0aW9uXSA9IFJlYWN0My51c2VTdGF0ZSgpO1xuICBsZXQgZmV0Y2hlckRhdGEgPSBSZWFjdDMudXNlUmVmKC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCkpO1xuICBsZXQgc2V0U3RhdGUgPSBSZWFjdDMudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlLCB7IGRlbGV0ZWRGZXRjaGVycywgZmx1c2hTeW5jLCB2aWV3VHJhbnNpdGlvbk9wdHMgfSkgPT4ge1xuICAgICAgZGVsZXRlZEZldGNoZXJzLmZvckVhY2goKGtleSkgPT4gZmV0Y2hlckRhdGEuY3VycmVudC5kZWxldGUoa2V5KSk7XG4gICAgICBuZXdTdGF0ZS5mZXRjaGVycy5mb3JFYWNoKChmZXRjaGVyLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGZldGNoZXIuZGF0YSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgZmV0Y2hlckRhdGEuY3VycmVudC5zZXQoa2V5LCBmZXRjaGVyLmRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHdhcm5PbmNlKFxuICAgICAgICBmbHVzaFN5bmMgPT09IGZhbHNlIHx8IHJlYWN0RG9tRmx1c2hTeW5jSW1wbCAhPSBudWxsLFxuICAgICAgICAnWW91IHByb3ZpZGVkIHRoZSBgZmx1c2hTeW5jYCBvcHRpb24gdG8gYSByb3V0ZXIgdXBkYXRlLCBidXQgeW91IGFyZSBub3QgdXNpbmcgdGhlIGA8Um91dGVyUHJvdmlkZXI+YCBmcm9tIGByZWFjdC1yb3V0ZXIvZG9tYCBzbyBgUmVhY3RET00uZmx1c2hTeW5jKClgIGlzIHVuYXZhaWxhYmxlLiAgUGxlYXNlIHVwZGF0ZSB5b3VyIGFwcCB0byBgaW1wb3J0IHsgUm91dGVyUHJvdmlkZXIgfSBmcm9tIFwicmVhY3Qtcm91dGVyL2RvbVwiYCBhbmQgZW5zdXJlIHlvdSBoYXZlIGByZWFjdC1kb21gIGluc3RhbGxlZCBhcyBhIGRlcGVuZGVuY3kgdG8gdXNlIHRoZSBgZmx1c2hTeW5jYCBvcHRpb24uJ1xuICAgICAgKTtcbiAgICAgIGxldCBpc1ZpZXdUcmFuc2l0aW9uQXZhaWxhYmxlID0gcm91dGVyLndpbmRvdyAhPSBudWxsICYmIHJvdXRlci53aW5kb3cuZG9jdW1lbnQgIT0gbnVsbCAmJiB0eXBlb2Ygcm91dGVyLndpbmRvdy5kb2N1bWVudC5zdGFydFZpZXdUcmFuc2l0aW9uID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICB3YXJuT25jZShcbiAgICAgICAgdmlld1RyYW5zaXRpb25PcHRzID09IG51bGwgfHwgaXNWaWV3VHJhbnNpdGlvbkF2YWlsYWJsZSxcbiAgICAgICAgXCJZb3UgcHJvdmlkZWQgdGhlIGB2aWV3VHJhbnNpdGlvbmAgb3B0aW9uIHRvIGEgcm91dGVyIHVwZGF0ZSwgYnV0IHlvdSBkbyBub3QgYXBwZWFyIHRvIGJlIHJ1bm5pbmcgaW4gYSBET00gZW52aXJvbm1lbnQgYXMgYHdpbmRvdy5zdGFydFZpZXdUcmFuc2l0aW9uYCBpcyBub3QgYXZhaWxhYmxlLlwiXG4gICAgICApO1xuICAgICAgaWYgKCF2aWV3VHJhbnNpdGlvbk9wdHMgfHwgIWlzVmlld1RyYW5zaXRpb25BdmFpbGFibGUpIHtcbiAgICAgICAgaWYgKHJlYWN0RG9tRmx1c2hTeW5jSW1wbCAmJiBmbHVzaFN5bmMpIHtcbiAgICAgICAgICByZWFjdERvbUZsdXNoU3luY0ltcGwoKCkgPT4gc2V0U3RhdGVJbXBsKG5ld1N0YXRlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgUmVhY3QzLnN0YXJ0VHJhbnNpdGlvbigoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAocmVhY3REb21GbHVzaFN5bmNJbXBsICYmIGZsdXNoU3luYykge1xuICAgICAgICByZWFjdERvbUZsdXNoU3luY0ltcGwoKCkgPT4ge1xuICAgICAgICAgIGlmICh0cmFuc2l0aW9uKSB7XG4gICAgICAgICAgICByZW5kZXJEZmQgJiYgcmVuZGVyRGZkLnJlc29sdmUoKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb24uc2tpcFRyYW5zaXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0VnRDb250ZXh0KHtcbiAgICAgICAgICAgIGlzVHJhbnNpdGlvbmluZzogdHJ1ZSxcbiAgICAgICAgICAgIGZsdXNoU3luYzogdHJ1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbjogdmlld1RyYW5zaXRpb25PcHRzLmN1cnJlbnRMb2NhdGlvbixcbiAgICAgICAgICAgIG5leHRMb2NhdGlvbjogdmlld1RyYW5zaXRpb25PcHRzLm5leHRMb2NhdGlvblxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IHQgPSByb3V0ZXIud2luZG93LmRvY3VtZW50LnN0YXJ0Vmlld1RyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgIHJlYWN0RG9tRmx1c2hTeW5jSW1wbCgoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHQuZmluaXNoZWQuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgcmVhY3REb21GbHVzaFN5bmNJbXBsKCgpID0+IHtcbiAgICAgICAgICAgIHNldFJlbmRlckRmZCh2b2lkIDApO1xuICAgICAgICAgICAgc2V0VHJhbnNpdGlvbih2b2lkIDApO1xuICAgICAgICAgICAgc2V0UGVuZGluZ1N0YXRlKHZvaWQgMCk7XG4gICAgICAgICAgICBzZXRWdENvbnRleHQoeyBpc1RyYW5zaXRpb25pbmc6IGZhbHNlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVhY3REb21GbHVzaFN5bmNJbXBsKCgpID0+IHNldFRyYW5zaXRpb24odCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodHJhbnNpdGlvbikge1xuICAgICAgICByZW5kZXJEZmQgJiYgcmVuZGVyRGZkLnJlc29sdmUoKTtcbiAgICAgICAgdHJhbnNpdGlvbi5za2lwVHJhbnNpdGlvbigpO1xuICAgICAgICBzZXRJbnRlcnJ1cHRpb24oe1xuICAgICAgICAgIHN0YXRlOiBuZXdTdGF0ZSxcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IHZpZXdUcmFuc2l0aW9uT3B0cy5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgICAgbmV4dExvY2F0aW9uOiB2aWV3VHJhbnNpdGlvbk9wdHMubmV4dExvY2F0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0UGVuZGluZ1N0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgc2V0VnRDb250ZXh0KHtcbiAgICAgICAgICBpc1RyYW5zaXRpb25pbmc6IHRydWUsXG4gICAgICAgICAgZmx1c2hTeW5jOiBmYWxzZSxcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IHZpZXdUcmFuc2l0aW9uT3B0cy5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgICAgbmV4dExvY2F0aW9uOiB2aWV3VHJhbnNpdGlvbk9wdHMubmV4dExvY2F0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3JvdXRlci53aW5kb3csIHJlYWN0RG9tRmx1c2hTeW5jSW1wbCwgdHJhbnNpdGlvbiwgcmVuZGVyRGZkXVxuICApO1xuICBSZWFjdDMudXNlTGF5b3V0RWZmZWN0KCgpID0+IHJvdXRlci5zdWJzY3JpYmUoc2V0U3RhdGUpLCBbcm91dGVyLCBzZXRTdGF0ZV0pO1xuICBSZWFjdDMudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodnRDb250ZXh0LmlzVHJhbnNpdGlvbmluZyAmJiAhdnRDb250ZXh0LmZsdXNoU3luYykge1xuICAgICAgc2V0UmVuZGVyRGZkKG5ldyBEZWZlcnJlZCgpKTtcbiAgICB9XG4gIH0sIFt2dENvbnRleHRdKTtcbiAgUmVhY3QzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlbmRlckRmZCAmJiBwZW5kaW5nU3RhdGUgJiYgcm91dGVyLndpbmRvdykge1xuICAgICAgbGV0IG5ld1N0YXRlID0gcGVuZGluZ1N0YXRlO1xuICAgICAgbGV0IHJlbmRlclByb21pc2UgPSByZW5kZXJEZmQucHJvbWlzZTtcbiAgICAgIGxldCB0cmFuc2l0aW9uMiA9IHJvdXRlci53aW5kb3cuZG9jdW1lbnQuc3RhcnRWaWV3VHJhbnNpdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgIFJlYWN0My5zdGFydFRyYW5zaXRpb24oKCkgPT4gc2V0U3RhdGVJbXBsKG5ld1N0YXRlKSk7XG4gICAgICAgIGF3YWl0IHJlbmRlclByb21pc2U7XG4gICAgICB9KTtcbiAgICAgIHRyYW5zaXRpb24yLmZpbmlzaGVkLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBzZXRSZW5kZXJEZmQodm9pZCAwKTtcbiAgICAgICAgc2V0VHJhbnNpdGlvbih2b2lkIDApO1xuICAgICAgICBzZXRQZW5kaW5nU3RhdGUodm9pZCAwKTtcbiAgICAgICAgc2V0VnRDb250ZXh0KHsgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgICAgc2V0VHJhbnNpdGlvbih0cmFuc2l0aW9uMik7XG4gICAgfVxuICB9LCBbcGVuZGluZ1N0YXRlLCByZW5kZXJEZmQsIHJvdXRlci53aW5kb3ddKTtcbiAgUmVhY3QzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlbmRlckRmZCAmJiBwZW5kaW5nU3RhdGUgJiYgc3RhdGUubG9jYXRpb24ua2V5ID09PSBwZW5kaW5nU3RhdGUubG9jYXRpb24ua2V5KSB7XG4gICAgICByZW5kZXJEZmQucmVzb2x2ZSgpO1xuICAgIH1cbiAgfSwgW3JlbmRlckRmZCwgdHJhbnNpdGlvbiwgc3RhdGUubG9jYXRpb24sIHBlbmRpbmdTdGF0ZV0pO1xuICBSZWFjdDMudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZ0Q29udGV4dC5pc1RyYW5zaXRpb25pbmcgJiYgaW50ZXJydXB0aW9uKSB7XG4gICAgICBzZXRQZW5kaW5nU3RhdGUoaW50ZXJydXB0aW9uLnN0YXRlKTtcbiAgICAgIHNldFZ0Q29udGV4dCh7XG4gICAgICAgIGlzVHJhbnNpdGlvbmluZzogdHJ1ZSxcbiAgICAgICAgZmx1c2hTeW5jOiBmYWxzZSxcbiAgICAgICAgY3VycmVudExvY2F0aW9uOiBpbnRlcnJ1cHRpb24uY3VycmVudExvY2F0aW9uLFxuICAgICAgICBuZXh0TG9jYXRpb246IGludGVycnVwdGlvbi5uZXh0TG9jYXRpb25cbiAgICAgIH0pO1xuICAgICAgc2V0SW50ZXJydXB0aW9uKHZvaWQgMCk7XG4gICAgfVxuICB9LCBbdnRDb250ZXh0LmlzVHJhbnNpdGlvbmluZywgaW50ZXJydXB0aW9uXSk7XG4gIGxldCBuYXZpZ2F0b3IyID0gUmVhY3QzLnVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBjcmVhdGVIcmVmOiByb3V0ZXIuY3JlYXRlSHJlZixcbiAgICAgIGVuY29kZUxvY2F0aW9uOiByb3V0ZXIuZW5jb2RlTG9jYXRpb24sXG4gICAgICBnbzogKG4pID0+IHJvdXRlci5uYXZpZ2F0ZShuKSxcbiAgICAgIHB1c2g6ICh0bywgc3RhdGUyLCBvcHRzKSA9PiByb3V0ZXIubmF2aWdhdGUodG8sIHtcbiAgICAgICAgc3RhdGU6IHN0YXRlMixcbiAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0OiBvcHRzPy5wcmV2ZW50U2Nyb2xsUmVzZXRcbiAgICAgIH0pLFxuICAgICAgcmVwbGFjZTogKHRvLCBzdGF0ZTIsIG9wdHMpID0+IHJvdXRlci5uYXZpZ2F0ZSh0bywge1xuICAgICAgICByZXBsYWNlOiB0cnVlLFxuICAgICAgICBzdGF0ZTogc3RhdGUyLFxuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IG9wdHM/LnByZXZlbnRTY3JvbGxSZXNldFxuICAgICAgfSlcbiAgICB9O1xuICB9LCBbcm91dGVyXSk7XG4gIGxldCBiYXNlbmFtZSA9IHJvdXRlci5iYXNlbmFtZSB8fCBcIi9cIjtcbiAgbGV0IGRhdGFSb3V0ZXJDb250ZXh0ID0gUmVhY3QzLnVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHJvdXRlcixcbiAgICAgIG5hdmlnYXRvcjogbmF2aWdhdG9yMixcbiAgICAgIHN0YXRpYzogZmFsc2UsXG4gICAgICBiYXNlbmFtZVxuICAgIH0pLFxuICAgIFtyb3V0ZXIsIG5hdmlnYXRvcjIsIGJhc2VuYW1lXVxuICApO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KFJlYWN0My5GcmFnbWVudCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KERhdGFSb3V0ZXJDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBkYXRhUm91dGVyQ29udGV4dCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoRGF0YVJvdXRlclN0YXRlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogc3RhdGUgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KEZldGNoZXJzQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZmV0Y2hlckRhdGEuY3VycmVudCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoVmlld1RyYW5zaXRpb25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB2dENvbnRleHQgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgIG5hdmlnYXRpb25UeXBlOiBzdGF0ZS5oaXN0b3J5QWN0aW9uLFxuICAgICAgbmF2aWdhdG9yOiBuYXZpZ2F0b3IyXG4gICAgfSxcbiAgICAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBNZW1vaXplZERhdGFSb3V0ZXMsXG4gICAgICB7XG4gICAgICAgIHJvdXRlczogcm91dGVyLnJvdXRlcyxcbiAgICAgICAgZnV0dXJlOiByb3V0ZXIuZnV0dXJlLFxuICAgICAgICBzdGF0ZVxuICAgICAgfVxuICAgIClcbiAgKSkpKSksIG51bGwpO1xufVxudmFyIE1lbW9pemVkRGF0YVJvdXRlcyA9IFJlYWN0My5tZW1vKERhdGFSb3V0ZXMpO1xuZnVuY3Rpb24gRGF0YVJvdXRlcyh7XG4gIHJvdXRlcyxcbiAgZnV0dXJlLFxuICBzdGF0ZVxufSkge1xuICByZXR1cm4gdXNlUm91dGVzSW1wbChyb3V0ZXMsIHZvaWQgMCwgc3RhdGUsIGZ1dHVyZSk7XG59XG5mdW5jdGlvbiBNZW1vcnlSb3V0ZXIoe1xuICBiYXNlbmFtZSxcbiAgY2hpbGRyZW4sXG4gIGluaXRpYWxFbnRyaWVzLFxuICBpbml0aWFsSW5kZXhcbn0pIHtcbiAgbGV0IGhpc3RvcnlSZWYgPSBSZWFjdDMudXNlUmVmKCk7XG4gIGlmIChoaXN0b3J5UmVmLmN1cnJlbnQgPT0gbnVsbCkge1xuICAgIGhpc3RvcnlSZWYuY3VycmVudCA9IGNyZWF0ZU1lbW9yeUhpc3Rvcnkoe1xuICAgICAgaW5pdGlhbEVudHJpZXMsXG4gICAgICBpbml0aWFsSW5kZXgsXG4gICAgICB2NUNvbXBhdDogdHJ1ZVxuICAgIH0pO1xuICB9XG4gIGxldCBoaXN0b3J5ID0gaGlzdG9yeVJlZi5jdXJyZW50O1xuICBsZXQgW3N0YXRlLCBzZXRTdGF0ZUltcGxdID0gUmVhY3QzLnVzZVN0YXRlKHtcbiAgICBhY3Rpb246IGhpc3RvcnkuYWN0aW9uLFxuICAgIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uXG4gIH0pO1xuICBsZXQgc2V0U3RhdGUgPSBSZWFjdDMudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBSZWFjdDMuc3RhcnRUcmFuc2l0aW9uKCgpID0+IHNldFN0YXRlSW1wbChuZXdTdGF0ZSkpO1xuICAgIH0sXG4gICAgW3NldFN0YXRlSW1wbF1cbiAgKTtcbiAgUmVhY3QzLnVzZUxheW91dEVmZmVjdCgoKSA9PiBoaXN0b3J5Lmxpc3RlbihzZXRTdGF0ZSksIFtoaXN0b3J5LCBzZXRTdGF0ZV0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IHN0YXRlLmFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICAgIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIE5hdmlnYXRlKHtcbiAgdG8sXG4gIHJlcGxhY2U6IHJlcGxhY2UyLFxuICBzdGF0ZSxcbiAgcmVsYXRpdmVcbn0pIHtcbiAgaW52YXJpYW50KFxuICAgIHVzZUluUm91dGVyQ29udGV4dCgpLFxuICAgIC8vIFRPRE86IFRoaXMgZXJyb3IgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHNvbWVob3cgaGF2ZSAyIHZlcnNpb25zIG9mXG4gICAgLy8gdGhlIHJvdXRlciBsb2FkZWQuIFdlIGNhbiBoZWxwIHRoZW0gdW5kZXJzdGFuZCBob3cgdG8gYXZvaWQgdGhhdC5cbiAgICBgPE5hdmlnYXRlPiBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LmBcbiAgKTtcbiAgbGV0IHsgc3RhdGljOiBpc1N0YXRpYyB9ID0gUmVhY3QzLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICB3YXJuaW5nKFxuICAgICFpc1N0YXRpYyxcbiAgICBgPE5hdmlnYXRlPiBtdXN0IG5vdCBiZSB1c2VkIG9uIHRoZSBpbml0aWFsIHJlbmRlciBpbiBhIDxTdGF0aWNSb3V0ZXI+LiBUaGlzIGlzIGEgbm8tb3AsIGJ1dCB5b3Ugc2hvdWxkIG1vZGlmeSB5b3VyIGNvZGUgc28gdGhlIDxOYXZpZ2F0ZT4gaXMgb25seSBldmVyIHJlbmRlcmVkIGluIHJlc3BvbnNlIHRvIHNvbWUgdXNlciBpbnRlcmFjdGlvbiBvciBzdGF0ZSBjaGFuZ2UuYFxuICApO1xuICBsZXQgeyBtYXRjaGVzIH0gPSBSZWFjdDMudXNlQ29udGV4dChSb3V0ZUNvbnRleHQpO1xuICBsZXQgeyBwYXRobmFtZTogbG9jYXRpb25QYXRobmFtZSB9ID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcbiAgbGV0IHBhdGggPSByZXNvbHZlVG8oXG4gICAgdG8sXG4gICAgZ2V0UmVzb2x2ZVRvTWF0Y2hlcyhtYXRjaGVzKSxcbiAgICBsb2NhdGlvblBhdGhuYW1lLFxuICAgIHJlbGF0aXZlID09PSBcInBhdGhcIlxuICApO1xuICBsZXQganNvblBhdGggPSBKU09OLnN0cmluZ2lmeShwYXRoKTtcbiAgUmVhY3QzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbmF2aWdhdGUoSlNPTi5wYXJzZShqc29uUGF0aCksIHsgcmVwbGFjZTogcmVwbGFjZTIsIHN0YXRlLCByZWxhdGl2ZSB9KTtcbiAgfSwgW25hdmlnYXRlLCBqc29uUGF0aCwgcmVsYXRpdmUsIHJlcGxhY2UyLCBzdGF0ZV0pO1xuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIE91dGxldChwcm9wcykge1xuICByZXR1cm4gdXNlT3V0bGV0KHByb3BzLmNvbnRleHQpO1xufVxuZnVuY3Rpb24gUm91dGUoX3Byb3BzKSB7XG4gIGludmFyaWFudChcbiAgICBmYWxzZSxcbiAgICBgQSA8Um91dGU+IGlzIG9ubHkgZXZlciB0byBiZSB1c2VkIGFzIHRoZSBjaGlsZCBvZiA8Um91dGVzPiBlbGVtZW50LCBuZXZlciByZW5kZXJlZCBkaXJlY3RseS4gUGxlYXNlIHdyYXAgeW91ciA8Um91dGU+IGluIGEgPFJvdXRlcz4uYFxuICApO1xufVxuZnVuY3Rpb24gUm91dGVyKHtcbiAgYmFzZW5hbWU6IGJhc2VuYW1lUHJvcCA9IFwiL1wiLFxuICBjaGlsZHJlbiA9IG51bGwsXG4gIGxvY2F0aW9uOiBsb2NhdGlvblByb3AsXG4gIG5hdmlnYXRpb25UeXBlID0gXCJQT1BcIiAvKiBQb3AgKi8sXG4gIG5hdmlnYXRvcjogbmF2aWdhdG9yMixcbiAgc3RhdGljOiBzdGF0aWNQcm9wID0gZmFsc2Vcbn0pIHtcbiAgaW52YXJpYW50KFxuICAgICF1c2VJblJvdXRlckNvbnRleHQoKSxcbiAgICBgWW91IGNhbm5vdCByZW5kZXIgYSA8Um91dGVyPiBpbnNpZGUgYW5vdGhlciA8Um91dGVyPi4gWW91IHNob3VsZCBuZXZlciBoYXZlIG1vcmUgdGhhbiBvbmUgaW4geW91ciBhcHAuYFxuICApO1xuICBsZXQgYmFzZW5hbWUgPSBiYXNlbmFtZVByb3AucmVwbGFjZSgvXlxcLyovLCBcIi9cIik7XG4gIGxldCBuYXZpZ2F0aW9uQ29udGV4dCA9IFJlYWN0My51c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIG5hdmlnYXRvcjogbmF2aWdhdG9yMixcbiAgICAgIHN0YXRpYzogc3RhdGljUHJvcCxcbiAgICAgIGZ1dHVyZToge31cbiAgICB9KSxcbiAgICBbYmFzZW5hbWUsIG5hdmlnYXRvcjIsIHN0YXRpY1Byb3BdXG4gICk7XG4gIGlmICh0eXBlb2YgbG9jYXRpb25Qcm9wID09PSBcInN0cmluZ1wiKSB7XG4gICAgbG9jYXRpb25Qcm9wID0gcGFyc2VQYXRoKGxvY2F0aW9uUHJvcCk7XG4gIH1cbiAgbGV0IHtcbiAgICBwYXRobmFtZSA9IFwiL1wiLFxuICAgIHNlYXJjaCA9IFwiXCIsXG4gICAgaGFzaCA9IFwiXCIsXG4gICAgc3RhdGUgPSBudWxsLFxuICAgIGtleSA9IFwiZGVmYXVsdFwiXG4gIH0gPSBsb2NhdGlvblByb3A7XG4gIGxldCBsb2NhdGlvbkNvbnRleHQgPSBSZWFjdDMudXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IHRyYWlsaW5nUGF0aG5hbWUgPSBzdHJpcEJhc2VuYW1lKHBhdGhuYW1lLCBiYXNlbmFtZSk7XG4gICAgaWYgKHRyYWlsaW5nUGF0aG5hbWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBwYXRobmFtZTogdHJhaWxpbmdQYXRobmFtZSxcbiAgICAgICAgc2VhcmNoLFxuICAgICAgICBoYXNoLFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAga2V5XG4gICAgICB9LFxuICAgICAgbmF2aWdhdGlvblR5cGVcbiAgICB9O1xuICB9LCBbYmFzZW5hbWUsIHBhdGhuYW1lLCBzZWFyY2gsIGhhc2gsIHN0YXRlLCBrZXksIG5hdmlnYXRpb25UeXBlXSk7XG4gIHdhcm5pbmcoXG4gICAgbG9jYXRpb25Db250ZXh0ICE9IG51bGwsXG4gICAgYDxSb3V0ZXIgYmFzZW5hbWU9XCIke2Jhc2VuYW1lfVwiPiBpcyBub3QgYWJsZSB0byBtYXRjaCB0aGUgVVJMIFwiJHtwYXRobmFtZX0ke3NlYXJjaH0ke2hhc2h9XCIgYmVjYXVzZSBpdCBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBiYXNlbmFtZSwgc28gdGhlIDxSb3V0ZXI+IHdvbid0IHJlbmRlciBhbnl0aGluZy5gXG4gICk7XG4gIGlmIChsb2NhdGlvbkNvbnRleHQgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoTmF2aWdhdGlvbkNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IG5hdmlnYXRpb25Db250ZXh0IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDMuY3JlYXRlRWxlbWVudChMb2NhdGlvbkNvbnRleHQuUHJvdmlkZXIsIHsgY2hpbGRyZW4sIHZhbHVlOiBsb2NhdGlvbkNvbnRleHQgfSkpO1xufVxuZnVuY3Rpb24gUm91dGVzKHtcbiAgY2hpbGRyZW4sXG4gIGxvY2F0aW9uXG59KSB7XG4gIHJldHVybiB1c2VSb3V0ZXMoY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuKGNoaWxkcmVuKSwgbG9jYXRpb24pO1xufVxuZnVuY3Rpb24gQXdhaXQoe1xuICBjaGlsZHJlbixcbiAgZXJyb3JFbGVtZW50LFxuICByZXNvbHZlXG59KSB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoQXdhaXRFcnJvckJvdW5kYXJ5LCB7IHJlc29sdmUsIGVycm9yRWxlbWVudCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoUmVzb2x2ZUF3YWl0LCBudWxsLCBjaGlsZHJlbikpO1xufVxudmFyIEF3YWl0RXJyb3JCb3VuZGFyeSA9IGNsYXNzIGV4dGVuZHMgUmVhY3QzLkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7IGVycm9yOiBudWxsIH07XG4gIH1cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIHJldHVybiB7IGVycm9yIH07XG4gIH1cbiAgY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGVycm9ySW5mbykge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIjxBd2FpdD4gY2F1Z2h0IHRoZSBmb2xsb3dpbmcgZXJyb3IgZHVyaW5nIHJlbmRlclwiLFxuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckluZm9cbiAgICApO1xuICB9XG4gIHJlbmRlcigpIHtcbiAgICBsZXQgeyBjaGlsZHJlbiwgZXJyb3JFbGVtZW50LCByZXNvbHZlIH0gPSB0aGlzLnByb3BzO1xuICAgIGxldCBwcm9taXNlID0gbnVsbDtcbiAgICBsZXQgc3RhdHVzID0gMCAvKiBwZW5kaW5nICovO1xuICAgIGlmICghKHJlc29sdmUgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgc3RhdHVzID0gMSAvKiBzdWNjZXNzICovO1xuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb21pc2UsIFwiX3RyYWNrZWRcIiwgeyBnZXQ6ICgpID0+IHRydWUgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvbWlzZSwgXCJfZGF0YVwiLCB7IGdldDogKCkgPT4gcmVzb2x2ZSB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuZXJyb3IpIHtcbiAgICAgIHN0YXR1cyA9IDIgLyogZXJyb3IgKi87XG4gICAgICBsZXQgcmVuZGVyRXJyb3IgPSB0aGlzLnN0YXRlLmVycm9yO1xuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVqZWN0KCkuY2F0Y2goKCkgPT4ge1xuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvbWlzZSwgXCJfdHJhY2tlZFwiLCB7IGdldDogKCkgPT4gdHJ1ZSB9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9taXNlLCBcIl9lcnJvclwiLCB7IGdldDogKCkgPT4gcmVuZGVyRXJyb3IgfSk7XG4gICAgfSBlbHNlIGlmIChyZXNvbHZlLl90cmFja2VkKSB7XG4gICAgICBwcm9taXNlID0gcmVzb2x2ZTtcbiAgICAgIHN0YXR1cyA9IFwiX2Vycm9yXCIgaW4gcHJvbWlzZSA/IDIgLyogZXJyb3IgKi8gOiBcIl9kYXRhXCIgaW4gcHJvbWlzZSA/IDEgLyogc3VjY2VzcyAqLyA6IDAgLyogcGVuZGluZyAqLztcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdHVzID0gMCAvKiBwZW5kaW5nICovO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc29sdmUsIFwiX3RyYWNrZWRcIiwgeyBnZXQ6ICgpID0+IHRydWUgfSk7XG4gICAgICBwcm9taXNlID0gcmVzb2x2ZS50aGVuKFxuICAgICAgICAoZGF0YTIpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXNvbHZlLCBcIl9kYXRhXCIsIHsgZ2V0OiAoKSA9PiBkYXRhMiB9KSxcbiAgICAgICAgKGVycm9yKSA9PiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzb2x2ZSwgXCJfZXJyb3JcIiwgeyBnZXQ6ICgpID0+IGVycm9yIH0pXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoc3RhdHVzID09PSAyIC8qIGVycm9yICovICYmICFlcnJvckVsZW1lbnQpIHtcbiAgICAgIHRocm93IHByb21pc2UuX2Vycm9yO1xuICAgIH1cbiAgICBpZiAoc3RhdHVzID09PSAyIC8qIGVycm9yICovKSB7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KEF3YWl0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogcHJvbWlzZSwgY2hpbGRyZW46IGVycm9yRWxlbWVudCB9KTtcbiAgICB9XG4gICAgaWYgKHN0YXR1cyA9PT0gMSAvKiBzdWNjZXNzICovKSB7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KEF3YWl0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogcHJvbWlzZSwgY2hpbGRyZW4gfSk7XG4gICAgfVxuICAgIHRocm93IHByb21pc2U7XG4gIH1cbn07XG5mdW5jdGlvbiBSZXNvbHZlQXdhaXQoe1xuICBjaGlsZHJlblxufSkge1xuICBsZXQgZGF0YTIgPSB1c2VBc3luY1ZhbHVlKCk7XG4gIGxldCB0b1JlbmRlciA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gXCJmdW5jdGlvblwiID8gY2hpbGRyZW4oZGF0YTIpIDogY2hpbGRyZW47XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoUmVhY3QzLkZyYWdtZW50LCBudWxsLCB0b1JlbmRlcik7XG59XG5mdW5jdGlvbiBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4oY2hpbGRyZW4sIHBhcmVudFBhdGggPSBbXSkge1xuICBsZXQgcm91dGVzID0gW107XG4gIFJlYWN0My5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBpZiAoIVJlYWN0My5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgdHJlZVBhdGggPSBbLi4ucGFyZW50UGF0aCwgaW5kZXhdO1xuICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFJlYWN0My5GcmFnbWVudCkge1xuICAgICAgcm91dGVzLnB1c2guYXBwbHkoXG4gICAgICAgIHJvdXRlcyxcbiAgICAgICAgY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuKGVsZW1lbnQucHJvcHMuY2hpbGRyZW4sIHRyZWVQYXRoKVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaW52YXJpYW50KFxuICAgICAgZWxlbWVudC50eXBlID09PSBSb3V0ZSxcbiAgICAgIGBbJHt0eXBlb2YgZWxlbWVudC50eXBlID09PSBcInN0cmluZ1wiID8gZWxlbWVudC50eXBlIDogZWxlbWVudC50eXBlLm5hbWV9XSBpcyBub3QgYSA8Um91dGU+IGNvbXBvbmVudC4gQWxsIGNvbXBvbmVudCBjaGlsZHJlbiBvZiA8Um91dGVzPiBtdXN0IGJlIGEgPFJvdXRlPiBvciA8UmVhY3QuRnJhZ21lbnQ+YFxuICAgICk7XG4gICAgaW52YXJpYW50KFxuICAgICAgIWVsZW1lbnQucHJvcHMuaW5kZXggfHwgIWVsZW1lbnQucHJvcHMuY2hpbGRyZW4sXG4gICAgICBcIkFuIGluZGV4IHJvdXRlIGNhbm5vdCBoYXZlIGNoaWxkIHJvdXRlcy5cIlxuICAgICk7XG4gICAgbGV0IHJvdXRlID0ge1xuICAgICAgaWQ6IGVsZW1lbnQucHJvcHMuaWQgfHwgdHJlZVBhdGguam9pbihcIi1cIiksXG4gICAgICBjYXNlU2Vuc2l0aXZlOiBlbGVtZW50LnByb3BzLmNhc2VTZW5zaXRpdmUsXG4gICAgICBlbGVtZW50OiBlbGVtZW50LnByb3BzLmVsZW1lbnQsXG4gICAgICBDb21wb25lbnQ6IGVsZW1lbnQucHJvcHMuQ29tcG9uZW50LFxuICAgICAgaW5kZXg6IGVsZW1lbnQucHJvcHMuaW5kZXgsXG4gICAgICBwYXRoOiBlbGVtZW50LnByb3BzLnBhdGgsXG4gICAgICBsb2FkZXI6IGVsZW1lbnQucHJvcHMubG9hZGVyLFxuICAgICAgYWN0aW9uOiBlbGVtZW50LnByb3BzLmFjdGlvbixcbiAgICAgIGh5ZHJhdGVGYWxsYmFja0VsZW1lbnQ6IGVsZW1lbnQucHJvcHMuaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCxcbiAgICAgIEh5ZHJhdGVGYWxsYmFjazogZWxlbWVudC5wcm9wcy5IeWRyYXRlRmFsbGJhY2ssXG4gICAgICBlcnJvckVsZW1lbnQ6IGVsZW1lbnQucHJvcHMuZXJyb3JFbGVtZW50LFxuICAgICAgRXJyb3JCb3VuZGFyeTogZWxlbWVudC5wcm9wcy5FcnJvckJvdW5kYXJ5LFxuICAgICAgaGFzRXJyb3JCb3VuZGFyeTogZWxlbWVudC5wcm9wcy5oYXNFcnJvckJvdW5kYXJ5ID09PSB0cnVlIHx8IGVsZW1lbnQucHJvcHMuRXJyb3JCb3VuZGFyeSAhPSBudWxsIHx8IGVsZW1lbnQucHJvcHMuZXJyb3JFbGVtZW50ICE9IG51bGwsXG4gICAgICBzaG91bGRSZXZhbGlkYXRlOiBlbGVtZW50LnByb3BzLnNob3VsZFJldmFsaWRhdGUsXG4gICAgICBoYW5kbGU6IGVsZW1lbnQucHJvcHMuaGFuZGxlLFxuICAgICAgbGF6eTogZWxlbWVudC5wcm9wcy5sYXp5XG4gICAgfTtcbiAgICBpZiAoZWxlbWVudC5wcm9wcy5jaGlsZHJlbikge1xuICAgICAgcm91dGUuY2hpbGRyZW4gPSBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4oXG4gICAgICAgIGVsZW1lbnQucHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIHRyZWVQYXRoXG4gICAgICApO1xuICAgIH1cbiAgICByb3V0ZXMucHVzaChyb3V0ZSk7XG4gIH0pO1xuICByZXR1cm4gcm91dGVzO1xufVxudmFyIGNyZWF0ZVJvdXRlc0Zyb21FbGVtZW50cyA9IGNyZWF0ZVJvdXRlc0Zyb21DaGlsZHJlbjtcbmZ1bmN0aW9uIHJlbmRlck1hdGNoZXMobWF0Y2hlcykge1xuICByZXR1cm4gX3JlbmRlck1hdGNoZXMobWF0Y2hlcyk7XG59XG5cbi8vIGxpYi9kb20vbGliLnRzeFxuaW1wb3J0ICogYXMgUmVhY3QxMCBmcm9tIFwicmVhY3RcIjtcblxuLy8gbGliL2RvbS9kb20udHNcbnZhciBkZWZhdWx0TWV0aG9kID0gXCJnZXRcIjtcbnZhciBkZWZhdWx0RW5jVHlwZSA9IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCI7XG5mdW5jdGlvbiBpc0h0bWxFbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgdHlwZW9mIG9iamVjdC50YWdOYW1lID09PSBcInN0cmluZ1wiO1xufVxuZnVuY3Rpb24gaXNCdXR0b25FbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gaXNIdG1sRWxlbWVudChvYmplY3QpICYmIG9iamVjdC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiYnV0dG9uXCI7XG59XG5mdW5jdGlvbiBpc0Zvcm1FbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gaXNIdG1sRWxlbWVudChvYmplY3QpICYmIG9iamVjdC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiZm9ybVwiO1xufVxuZnVuY3Rpb24gaXNJbnB1dEVsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiBpc0h0bWxFbGVtZW50KG9iamVjdCkgJiYgb2JqZWN0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiO1xufVxuZnVuY3Rpb24gaXNNb2RpZmllZEV2ZW50KGV2ZW50KSB7XG4gIHJldHVybiAhIShldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5KTtcbn1cbmZ1bmN0aW9uIHNob3VsZFByb2Nlc3NMaW5rQ2xpY2soZXZlbnQsIHRhcmdldCkge1xuICByZXR1cm4gZXZlbnQuYnV0dG9uID09PSAwICYmIC8vIElnbm9yZSBldmVyeXRoaW5nIGJ1dCBsZWZ0IGNsaWNrc1xuICAoIXRhcmdldCB8fCB0YXJnZXQgPT09IFwiX3NlbGZcIikgJiYgLy8gTGV0IGJyb3dzZXIgaGFuZGxlIFwidGFyZ2V0PV9ibGFua1wiIGV0Yy5cbiAgIWlzTW9kaWZpZWRFdmVudChldmVudCk7XG59XG5mdW5jdGlvbiBjcmVhdGVTZWFyY2hQYXJhbXMoaW5pdCA9IFwiXCIpIHtcbiAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMoXG4gICAgdHlwZW9mIGluaXQgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheShpbml0KSB8fCBpbml0IGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zID8gaW5pdCA6IE9iamVjdC5rZXlzKGluaXQpLnJlZHVjZSgobWVtbzIsIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gaW5pdFtrZXldO1xuICAgICAgcmV0dXJuIG1lbW8yLmNvbmNhdChcbiAgICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5tYXAoKHYpID0+IFtrZXksIHZdKSA6IFtba2V5LCB2YWx1ZV1dXG4gICAgICApO1xuICAgIH0sIFtdKVxuICApO1xufVxuZnVuY3Rpb24gZ2V0U2VhcmNoUGFyYW1zRm9yTG9jYXRpb24obG9jYXRpb25TZWFyY2gsIGRlZmF1bHRTZWFyY2hQYXJhbXMpIHtcbiAgbGV0IHNlYXJjaFBhcmFtcyA9IGNyZWF0ZVNlYXJjaFBhcmFtcyhsb2NhdGlvblNlYXJjaCk7XG4gIGlmIChkZWZhdWx0U2VhcmNoUGFyYW1zKSB7XG4gICAgZGVmYXVsdFNlYXJjaFBhcmFtcy5mb3JFYWNoKChfLCBrZXkpID0+IHtcbiAgICAgIGlmICghc2VhcmNoUGFyYW1zLmhhcyhrZXkpKSB7XG4gICAgICAgIGRlZmF1bHRTZWFyY2hQYXJhbXMuZ2V0QWxsKGtleSkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICBzZWFyY2hQYXJhbXMuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gc2VhcmNoUGFyYW1zO1xufVxudmFyIF9mb3JtRGF0YVN1cHBvcnRzU3VibWl0dGVyID0gbnVsbDtcbmZ1bmN0aW9uIGlzRm9ybURhdGFTdWJtaXR0ZXJTdXBwb3J0ZWQoKSB7XG4gIGlmIChfZm9ybURhdGFTdXBwb3J0c1N1Ym1pdHRlciA9PT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBuZXcgRm9ybURhdGEoXG4gICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmb3JtXCIpLFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGlmIEZvcm1EYXRhIHN1cHBvcnRzIHRoZSBzdWJtaXR0ZXIgcGFyYW1ldGVyLCB0aGlzIHdpbGwgdGhyb3dcbiAgICAgICAgMFxuICAgICAgKTtcbiAgICAgIF9mb3JtRGF0YVN1cHBvcnRzU3VibWl0dGVyID0gZmFsc2U7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgX2Zvcm1EYXRhU3VwcG9ydHNTdWJtaXR0ZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gX2Zvcm1EYXRhU3VwcG9ydHNTdWJtaXR0ZXI7XG59XG52YXIgc3VwcG9ydGVkRm9ybUVuY1R5cGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1xuICBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLFxuICBcIm11bHRpcGFydC9mb3JtLWRhdGFcIixcbiAgXCJ0ZXh0L3BsYWluXCJcbl0pO1xuZnVuY3Rpb24gZ2V0Rm9ybUVuY1R5cGUoZW5jVHlwZSkge1xuICBpZiAoZW5jVHlwZSAhPSBudWxsICYmICFzdXBwb3J0ZWRGb3JtRW5jVHlwZXMuaGFzKGVuY1R5cGUpKSB7XG4gICAgd2FybmluZyhcbiAgICAgIGZhbHNlLFxuICAgICAgYFwiJHtlbmNUeXBlfVwiIGlzIG5vdCBhIHZhbGlkIFxcYGVuY1R5cGVcXGAgZm9yIFxcYDxGb3JtPlxcYC9cXGA8ZmV0Y2hlci5Gb3JtPlxcYCBhbmQgd2lsbCBkZWZhdWx0IHRvIFwiJHtkZWZhdWx0RW5jVHlwZX1cImBcbiAgICApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBlbmNUeXBlO1xufVxuZnVuY3Rpb24gZ2V0Rm9ybVN1Ym1pc3Npb25JbmZvKHRhcmdldCwgYmFzZW5hbWUpIHtcbiAgbGV0IG1ldGhvZDtcbiAgbGV0IGFjdGlvbjtcbiAgbGV0IGVuY1R5cGU7XG4gIGxldCBmb3JtRGF0YTtcbiAgbGV0IGJvZHk7XG4gIGlmIChpc0Zvcm1FbGVtZW50KHRhcmdldCkpIHtcbiAgICBsZXQgYXR0ciA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJhY3Rpb25cIik7XG4gICAgYWN0aW9uID0gYXR0ciA/IHN0cmlwQmFzZW5hbWUoYXR0ciwgYmFzZW5hbWUpIDogbnVsbDtcbiAgICBtZXRob2QgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKFwibWV0aG9kXCIpIHx8IGRlZmF1bHRNZXRob2Q7XG4gICAgZW5jVHlwZSA9IGdldEZvcm1FbmNUeXBlKHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJlbmN0eXBlXCIpKSB8fCBkZWZhdWx0RW5jVHlwZTtcbiAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSh0YXJnZXQpO1xuICB9IGVsc2UgaWYgKGlzQnV0dG9uRWxlbWVudCh0YXJnZXQpIHx8IGlzSW5wdXRFbGVtZW50KHRhcmdldCkgJiYgKHRhcmdldC50eXBlID09PSBcInN1Ym1pdFwiIHx8IHRhcmdldC50eXBlID09PSBcImltYWdlXCIpKSB7XG4gICAgbGV0IGZvcm0gPSB0YXJnZXQuZm9ybTtcbiAgICBpZiAoZm9ybSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW5ub3Qgc3VibWl0IGEgPGJ1dHRvbj4gb3IgPGlucHV0IHR5cGU9XCJzdWJtaXRcIj4gd2l0aG91dCBhIDxmb3JtPmBcbiAgICAgICk7XG4gICAgfVxuICAgIGxldCBhdHRyID0gdGFyZ2V0LmdldEF0dHJpYnV0ZShcImZvcm1hY3Rpb25cIikgfHwgZm9ybS5nZXRBdHRyaWJ1dGUoXCJhY3Rpb25cIik7XG4gICAgYWN0aW9uID0gYXR0ciA/IHN0cmlwQmFzZW5hbWUoYXR0ciwgYmFzZW5hbWUpIDogbnVsbDtcbiAgICBtZXRob2QgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKFwiZm9ybW1ldGhvZFwiKSB8fCBmb3JtLmdldEF0dHJpYnV0ZShcIm1ldGhvZFwiKSB8fCBkZWZhdWx0TWV0aG9kO1xuICAgIGVuY1R5cGUgPSBnZXRGb3JtRW5jVHlwZSh0YXJnZXQuZ2V0QXR0cmlidXRlKFwiZm9ybWVuY3R5cGVcIikpIHx8IGdldEZvcm1FbmNUeXBlKGZvcm0uZ2V0QXR0cmlidXRlKFwiZW5jdHlwZVwiKSkgfHwgZGVmYXVsdEVuY1R5cGU7XG4gICAgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoZm9ybSwgdGFyZ2V0KTtcbiAgICBpZiAoIWlzRm9ybURhdGFTdWJtaXR0ZXJTdXBwb3J0ZWQoKSkge1xuICAgICAgbGV0IHsgbmFtZSwgdHlwZSwgdmFsdWUgfSA9IHRhcmdldDtcbiAgICAgIGlmICh0eXBlID09PSBcImltYWdlXCIpIHtcbiAgICAgICAgbGV0IHByZWZpeCA9IG5hbWUgPyBgJHtuYW1lfS5gIDogXCJcIjtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGAke3ByZWZpeH14YCwgXCIwXCIpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYCR7cHJlZml4fXlgLCBcIjBcIik7XG4gICAgICB9IGVsc2UgaWYgKG5hbWUpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNIdG1sRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENhbm5vdCBzdWJtaXQgZWxlbWVudCB0aGF0IGlzIG5vdCA8Zm9ybT4sIDxidXR0b24+LCBvciA8aW5wdXQgdHlwZT1cInN1Ym1pdHxpbWFnZVwiPmBcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIG1ldGhvZCA9IGRlZmF1bHRNZXRob2Q7XG4gICAgYWN0aW9uID0gbnVsbDtcbiAgICBlbmNUeXBlID0gZGVmYXVsdEVuY1R5cGU7XG4gICAgYm9keSA9IHRhcmdldDtcbiAgfVxuICBpZiAoZm9ybURhdGEgJiYgZW5jVHlwZSA9PT0gXCJ0ZXh0L3BsYWluXCIpIHtcbiAgICBib2R5ID0gZm9ybURhdGE7XG4gICAgZm9ybURhdGEgPSB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIHsgYWN0aW9uLCBtZXRob2Q6IG1ldGhvZC50b0xvd2VyQ2FzZSgpLCBlbmNUeXBlLCBmb3JtRGF0YSwgYm9keSB9O1xufVxuXG4vLyBsaWIvZG9tL3Nzci9jb21wb25lbnRzLnRzeFxuaW1wb3J0ICogYXMgUmVhY3Q5IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBsaWIvZG9tL3Nzci9pbnZhcmlhbnQudHNcbmZ1bmN0aW9uIGludmFyaWFudDIodmFsdWUsIG1lc3NhZ2UpIHtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cblxuLy8gbGliL2RvbS9zc3Ivcm91dGVNb2R1bGVzLnRzXG5hc3luYyBmdW5jdGlvbiBsb2FkUm91dGVNb2R1bGUocm91dGUsIHJvdXRlTW9kdWxlc0NhY2hlKSB7XG4gIGlmIChyb3V0ZS5pZCBpbiByb3V0ZU1vZHVsZXNDYWNoZSkge1xuICAgIHJldHVybiByb3V0ZU1vZHVsZXNDYWNoZVtyb3V0ZS5pZF07XG4gIH1cbiAgdHJ5IHtcbiAgICBsZXQgcm91dGVNb2R1bGUgPSBhd2FpdCBpbXBvcnQoXG4gICAgICAvKiBAdml0ZS1pZ25vcmUgKi9cbiAgICAgIC8qIHdlYnBhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIHJvdXRlLm1vZHVsZVxuICAgICk7XG4gICAgcm91dGVNb2R1bGVzQ2FjaGVbcm91dGUuaWRdID0gcm91dGVNb2R1bGU7XG4gICAgcmV0dXJuIHJvdXRlTW9kdWxlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBgRXJyb3IgbG9hZGluZyByb3V0ZSBtb2R1bGUgXFxgJHtyb3V0ZS5tb2R1bGV9XFxgLCByZWxvYWRpbmcgcGFnZS4uLmBcbiAgICApO1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIGlmICh3aW5kb3cuX19yZWFjdFJvdXRlckNvbnRleHQgJiYgd2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LmlzU3BhTW9kZSAmJiAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgaW1wb3J0Lm1ldGEuaG90KSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7XG4gICAgfSk7XG4gIH1cbn1cblxuLy8gbGliL2RvbS9zc3IvbGlua3MudHNcbmZ1bmN0aW9uIGdldEtleWVkTGlua3NGb3JNYXRjaGVzKG1hdGNoZXMsIHJvdXRlTW9kdWxlcywgbWFuaWZlc3QpIHtcbiAgbGV0IGRlc2NyaXB0b3JzID0gbWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiB7XG4gICAgbGV0IG1vZHVsZSA9IHJvdXRlTW9kdWxlc1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgbGV0IHJvdXRlID0gbWFuaWZlc3Qucm91dGVzW21hdGNoLnJvdXRlLmlkXTtcbiAgICByZXR1cm4gW1xuICAgICAgcm91dGUgJiYgcm91dGUuY3NzID8gcm91dGUuY3NzLm1hcCgoaHJlZikgPT4gKHsgcmVsOiBcInN0eWxlc2hlZXRcIiwgaHJlZiB9KSkgOiBbXSxcbiAgICAgIG1vZHVsZT8ubGlua3M/LigpIHx8IFtdXG4gICAgXTtcbiAgfSkuZmxhdCgyKTtcbiAgbGV0IHByZWxvYWRzID0gZ2V0Q3VycmVudFBhZ2VNb2R1bGVQcmVsb2FkSHJlZnMobWF0Y2hlcywgbWFuaWZlc3QpO1xuICByZXR1cm4gZGVkdXBlTGlua0Rlc2NyaXB0b3JzKGRlc2NyaXB0b3JzLCBwcmVsb2Fkcyk7XG59XG5hc3luYyBmdW5jdGlvbiBwcmVmZXRjaFN0eWxlTGlua3Mocm91dGUsIHJvdXRlTW9kdWxlKSB7XG4gIGlmICghcm91dGUuY3NzICYmICFyb3V0ZU1vZHVsZS5saW5rcyB8fCAhaXNQcmVsb2FkU3VwcG9ydGVkKCkpIHJldHVybjtcbiAgbGV0IGRlc2NyaXB0b3JzID0gW107XG4gIGlmIChyb3V0ZS5jc3MpIHtcbiAgICBkZXNjcmlwdG9ycy5wdXNoKC4uLnJvdXRlLmNzcy5tYXAoKGhyZWYpID0+ICh7IHJlbDogXCJzdHlsZXNoZWV0XCIsIGhyZWYgfSkpKTtcbiAgfVxuICBpZiAocm91dGVNb2R1bGUubGlua3MpIHtcbiAgICBkZXNjcmlwdG9ycy5wdXNoKC4uLnJvdXRlTW9kdWxlLmxpbmtzKCkpO1xuICB9XG4gIGlmIChkZXNjcmlwdG9ycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgbGV0IHN0eWxlTGlua3MgPSBbXTtcbiAgZm9yIChsZXQgZGVzY3JpcHRvciBvZiBkZXNjcmlwdG9ycykge1xuICAgIGlmICghaXNQYWdlTGlua0Rlc2NyaXB0b3IoZGVzY3JpcHRvcikgJiYgZGVzY3JpcHRvci5yZWwgPT09IFwic3R5bGVzaGVldFwiKSB7XG4gICAgICBzdHlsZUxpbmtzLnB1c2goe1xuICAgICAgICAuLi5kZXNjcmlwdG9yLFxuICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICBhczogXCJzdHlsZVwiXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbGV0IG1hdGNoaW5nTGlua3MgPSBzdHlsZUxpbmtzLmZpbHRlcihcbiAgICAobGluaykgPT4gKCFsaW5rLm1lZGlhIHx8IHdpbmRvdy5tYXRjaE1lZGlhKGxpbmsubWVkaWEpLm1hdGNoZXMpICYmICFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBsaW5rW3JlbD1cInN0eWxlc2hlZXRcIl1baHJlZj1cIiR7bGluay5ocmVmfVwiXWApXG4gICk7XG4gIGF3YWl0IFByb21pc2UuYWxsKG1hdGNoaW5nTGlua3MubWFwKHByZWZldGNoU3R5bGVMaW5rKSk7XG59XG5hc3luYyBmdW5jdGlvbiBwcmVmZXRjaFN0eWxlTGluayhkZXNjcmlwdG9yKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gICAgT2JqZWN0LmFzc2lnbihsaW5rLCBkZXNjcmlwdG9yKTtcbiAgICBmdW5jdGlvbiByZW1vdmVMaW5rKCkge1xuICAgICAgaWYgKGRvY3VtZW50LmhlYWQuY29udGFpbnMobGluaykpIHtcbiAgICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGluay5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICByZW1vdmVMaW5rKCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfTtcbiAgICBsaW5rLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICByZW1vdmVMaW5rKCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfTtcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGlzUGFnZUxpbmtEZXNjcmlwdG9yKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgdHlwZW9mIG9iamVjdC5wYWdlID09PSBcInN0cmluZ1wiO1xufVxuZnVuY3Rpb24gaXNIdG1sTGlua0Rlc2NyaXB0b3Iob2JqZWN0KSB7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAob2JqZWN0LmhyZWYgPT0gbnVsbCkge1xuICAgIHJldHVybiBvYmplY3QucmVsID09PSBcInByZWxvYWRcIiAmJiB0eXBlb2Ygb2JqZWN0LmltYWdlU3JjU2V0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBvYmplY3QuaW1hZ2VTaXplcyA9PT0gXCJzdHJpbmdcIjtcbiAgfVxuICByZXR1cm4gdHlwZW9mIG9iamVjdC5yZWwgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIG9iamVjdC5ocmVmID09PSBcInN0cmluZ1wiO1xufVxuYXN5bmMgZnVuY3Rpb24gZ2V0S2V5ZWRQcmVmZXRjaExpbmtzKG1hdGNoZXMsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMpIHtcbiAgbGV0IGxpbmtzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgbWF0Y2hlcy5tYXAoYXN5bmMgKG1hdGNoKSA9PiB7XG4gICAgICBsZXQgcm91dGUgPSBtYW5pZmVzdC5yb3V0ZXNbbWF0Y2gucm91dGUuaWRdO1xuICAgICAgaWYgKHJvdXRlKSB7XG4gICAgICAgIGxldCBtb2QgPSBhd2FpdCBsb2FkUm91dGVNb2R1bGUocm91dGUsIHJvdXRlTW9kdWxlcyk7XG4gICAgICAgIHJldHVybiBtb2QubGlua3MgPyBtb2QubGlua3MoKSA6IFtdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pXG4gICk7XG4gIHJldHVybiBkZWR1cGVMaW5rRGVzY3JpcHRvcnMoXG4gICAgbGlua3MuZmxhdCgxKS5maWx0ZXIoaXNIdG1sTGlua0Rlc2NyaXB0b3IpLmZpbHRlcigobGluaykgPT4gbGluay5yZWwgPT09IFwic3R5bGVzaGVldFwiIHx8IGxpbmsucmVsID09PSBcInByZWxvYWRcIikubWFwKFxuICAgICAgKGxpbmspID0+IGxpbmsucmVsID09PSBcInN0eWxlc2hlZXRcIiA/IHsgLi4ubGluaywgcmVsOiBcInByZWZldGNoXCIsIGFzOiBcInN0eWxlXCIgfSA6IHsgLi4ubGluaywgcmVsOiBcInByZWZldGNoXCIgfVxuICAgIClcbiAgKTtcbn1cbmZ1bmN0aW9uIGdldE5ld01hdGNoZXNGb3JMaW5rcyhwYWdlLCBuZXh0TWF0Y2hlcywgY3VycmVudE1hdGNoZXMsIG1hbmlmZXN0LCBsb2NhdGlvbiwgbW9kZSkge1xuICBsZXQgaXNOZXcgPSAobWF0Y2gsIGluZGV4KSA9PiB7XG4gICAgaWYgKCFjdXJyZW50TWF0Y2hlc1tpbmRleF0pIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBtYXRjaC5yb3V0ZS5pZCAhPT0gY3VycmVudE1hdGNoZXNbaW5kZXhdLnJvdXRlLmlkO1xuICB9O1xuICBsZXQgbWF0Y2hQYXRoQ2hhbmdlZCA9IChtYXRjaCwgaW5kZXgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgLy8gcGFyYW0gY2hhbmdlLCAvdXNlcnMvMTIzIC0+IC91c2Vycy80NTZcbiAgICAgIGN1cnJlbnRNYXRjaGVzW2luZGV4XS5wYXRobmFtZSAhPT0gbWF0Y2gucGF0aG5hbWUgfHwgLy8gc3BsYXQgcGFyYW0gY2hhbmdlZCwgd2hpY2ggaXMgbm90IHByZXNlbnQgaW4gbWF0Y2gucGF0aFxuICAgICAgLy8gZS5nLiAvZmlsZXMvaW1hZ2VzL2F2YXRhci5qcGcgLT4gZmlsZXMvZmluYW5jZXMueGxzXG4gICAgICBjdXJyZW50TWF0Y2hlc1tpbmRleF0ucm91dGUucGF0aD8uZW5kc1dpdGgoXCIqXCIpICYmIGN1cnJlbnRNYXRjaGVzW2luZGV4XS5wYXJhbXNbXCIqXCJdICE9PSBtYXRjaC5wYXJhbXNbXCIqXCJdXG4gICAgKTtcbiAgfTtcbiAgaWYgKG1vZGUgPT09IFwiYXNzZXRzXCIpIHtcbiAgICByZXR1cm4gbmV4dE1hdGNoZXMuZmlsdGVyKFxuICAgICAgKG1hdGNoLCBpbmRleCkgPT4gaXNOZXcobWF0Y2gsIGluZGV4KSB8fCBtYXRjaFBhdGhDaGFuZ2VkKG1hdGNoLCBpbmRleClcbiAgICApO1xuICB9XG4gIGlmIChtb2RlID09PSBcImRhdGFcIikge1xuICAgIHJldHVybiBuZXh0TWF0Y2hlcy5maWx0ZXIoKG1hdGNoLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IG1hbmlmZXN0Um91dGUgPSBtYW5pZmVzdC5yb3V0ZXNbbWF0Y2gucm91dGUuaWRdO1xuICAgICAgaWYgKCFtYW5pZmVzdFJvdXRlIHx8ICFtYW5pZmVzdFJvdXRlLmhhc0xvYWRlcikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNOZXcobWF0Y2gsIGluZGV4KSB8fCBtYXRjaFBhdGhDaGFuZ2VkKG1hdGNoLCBpbmRleCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2gucm91dGUuc2hvdWxkUmV2YWxpZGF0ZSkge1xuICAgICAgICBsZXQgcm91dGVDaG9pY2UgPSBtYXRjaC5yb3V0ZS5zaG91bGRSZXZhbGlkYXRlKHtcbiAgICAgICAgICBjdXJyZW50VXJsOiBuZXcgVVJMKFxuICAgICAgICAgICAgbG9jYXRpb24ucGF0aG5hbWUgKyBsb2NhdGlvbi5zZWFyY2ggKyBsb2NhdGlvbi5oYXNoLFxuICAgICAgICAgICAgd2luZG93Lm9yaWdpblxuICAgICAgICAgICksXG4gICAgICAgICAgY3VycmVudFBhcmFtczogY3VycmVudE1hdGNoZXNbMF0/LnBhcmFtcyB8fCB7fSxcbiAgICAgICAgICBuZXh0VXJsOiBuZXcgVVJMKHBhZ2UsIHdpbmRvdy5vcmlnaW4pLFxuICAgICAgICAgIG5leHRQYXJhbXM6IG1hdGNoLnBhcmFtcyxcbiAgICAgICAgICBkZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHR5cGVvZiByb3V0ZUNob2ljZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICByZXR1cm4gcm91dGVDaG9pY2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBbXTtcbn1cbmZ1bmN0aW9uIGdldE1vZHVsZUxpbmtIcmVmcyhtYXRjaGVzLCBtYW5pZmVzdFBhdGNoKSB7XG4gIHJldHVybiBkZWR1cGVIcmVmcyhcbiAgICBtYXRjaGVzLm1hcCgobWF0Y2gpID0+IHtcbiAgICAgIGxldCByb3V0ZSA9IG1hbmlmZXN0UGF0Y2gucm91dGVzW21hdGNoLnJvdXRlLmlkXTtcbiAgICAgIGlmICghcm91dGUpIHJldHVybiBbXTtcbiAgICAgIGxldCBocmVmcyA9IFtyb3V0ZS5tb2R1bGVdO1xuICAgICAgaWYgKHJvdXRlLmltcG9ydHMpIHtcbiAgICAgICAgaHJlZnMgPSBocmVmcy5jb25jYXQocm91dGUuaW1wb3J0cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaHJlZnM7XG4gICAgfSkuZmxhdCgxKVxuICApO1xufVxuZnVuY3Rpb24gZ2V0Q3VycmVudFBhZ2VNb2R1bGVQcmVsb2FkSHJlZnMobWF0Y2hlcywgbWFuaWZlc3QpIHtcbiAgcmV0dXJuIGRlZHVwZUhyZWZzKFxuICAgIG1hdGNoZXMubWFwKChtYXRjaCkgPT4ge1xuICAgICAgbGV0IHJvdXRlID0gbWFuaWZlc3Qucm91dGVzW21hdGNoLnJvdXRlLmlkXTtcbiAgICAgIGlmICghcm91dGUpIHJldHVybiBbXTtcbiAgICAgIGxldCBocmVmcyA9IFtyb3V0ZS5tb2R1bGVdO1xuICAgICAgaWYgKHJvdXRlLmltcG9ydHMpIHtcbiAgICAgICAgaHJlZnMgPSBocmVmcy5jb25jYXQocm91dGUuaW1wb3J0cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaHJlZnM7XG4gICAgfSkuZmxhdCgxKVxuICApO1xufVxuZnVuY3Rpb24gZGVkdXBlSHJlZnMoaHJlZnMpIHtcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KGhyZWZzKV07XG59XG5mdW5jdGlvbiBzb3J0S2V5cyhvYmopIHtcbiAgbGV0IHNvcnRlZCA9IHt9O1xuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9iaikuc29ydCgpO1xuICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgIHNvcnRlZFtrZXldID0gb2JqW2tleV07XG4gIH1cbiAgcmV0dXJuIHNvcnRlZDtcbn1cbmZ1bmN0aW9uIGRlZHVwZUxpbmtEZXNjcmlwdG9ycyhkZXNjcmlwdG9ycywgcHJlbG9hZHMpIHtcbiAgbGV0IHNldCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBwcmVsb2Fkc1NldCA9IG5ldyBTZXQocHJlbG9hZHMpO1xuICByZXR1cm4gZGVzY3JpcHRvcnMucmVkdWNlKChkZWR1cGVkLCBkZXNjcmlwdG9yKSA9PiB7XG4gICAgbGV0IGFscmVhZHlNb2R1bGVQcmVsb2FkID0gcHJlbG9hZHMgJiYgIWlzUGFnZUxpbmtEZXNjcmlwdG9yKGRlc2NyaXB0b3IpICYmIGRlc2NyaXB0b3IuYXMgPT09IFwic2NyaXB0XCIgJiYgZGVzY3JpcHRvci5ocmVmICYmIHByZWxvYWRzU2V0LmhhcyhkZXNjcmlwdG9yLmhyZWYpO1xuICAgIGlmIChhbHJlYWR5TW9kdWxlUHJlbG9hZCkge1xuICAgICAgcmV0dXJuIGRlZHVwZWQ7XG4gICAgfVxuICAgIGxldCBrZXkgPSBKU09OLnN0cmluZ2lmeShzb3J0S2V5cyhkZXNjcmlwdG9yKSk7XG4gICAgaWYgKCFzZXQuaGFzKGtleSkpIHtcbiAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgIGRlZHVwZWQucHVzaCh7IGtleSwgbGluazogZGVzY3JpcHRvciB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZHVwZWQ7XG4gIH0sIFtdKTtcbn1cbnZhciBfaXNQcmVsb2FkU3VwcG9ydGVkO1xuZnVuY3Rpb24gaXNQcmVsb2FkU3VwcG9ydGVkKCkge1xuICBpZiAoX2lzUHJlbG9hZFN1cHBvcnRlZCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIF9pc1ByZWxvYWRTdXBwb3J0ZWQ7XG4gIH1cbiAgbGV0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gIF9pc1ByZWxvYWRTdXBwb3J0ZWQgPSBlbC5yZWxMaXN0LnN1cHBvcnRzKFwicHJlbG9hZFwiKTtcbiAgZWwgPSBudWxsO1xuICByZXR1cm4gX2lzUHJlbG9hZFN1cHBvcnRlZDtcbn1cblxuLy8gbGliL2RvbS9zc3IvbWFya3VwLnRzXG52YXIgRVNDQVBFX0xPT0tVUCA9IHtcbiAgXCImXCI6IFwiXFxcXHUwMDI2XCIsXG4gIFwiPlwiOiBcIlxcXFx1MDAzZVwiLFxuICBcIjxcIjogXCJcXFxcdTAwM2NcIixcbiAgXCJcXHUyMDI4XCI6IFwiXFxcXHUyMDI4XCIsXG4gIFwiXFx1MjAyOVwiOiBcIlxcXFx1MjAyOVwiXG59O1xudmFyIEVTQ0FQRV9SRUdFWCA9IC9bJj48XFx1MjAyOFxcdTIwMjldL2c7XG5mdW5jdGlvbiBlc2NhcGVIdG1sKGh0bWwpIHtcbiAgcmV0dXJuIGh0bWwucmVwbGFjZShFU0NBUEVfUkVHRVgsIChtYXRjaCkgPT4gRVNDQVBFX0xPT0tVUFttYXRjaF0pO1xufVxuZnVuY3Rpb24gY3JlYXRlSHRtbChodG1sKSB7XG4gIHJldHVybiB7IF9faHRtbDogaHRtbCB9O1xufVxuXG4vLyBsaWIvZG9tL3Nzci9zaW5nbGUtZmV0Y2gudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDQgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tIFwidHVyYm8tc3RyZWFtXCI7XG5cbi8vIGxpYi9kb20vc3NyL2RhdGEudHNcbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RJbml0KHJlcXVlc3QpIHtcbiAgbGV0IGluaXQgPSB7IHNpZ25hbDogcmVxdWVzdC5zaWduYWwgfTtcbiAgaWYgKHJlcXVlc3QubWV0aG9kICE9PSBcIkdFVFwiKSB7XG4gICAgaW5pdC5tZXRob2QgPSByZXF1ZXN0Lm1ldGhvZDtcbiAgICBsZXQgY29udGVudFR5cGUgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KFwiQ29udGVudC1UeXBlXCIpO1xuICAgIGlmIChjb250ZW50VHlwZSAmJiAvXFxiYXBwbGljYXRpb25cXC9qc29uXFxiLy50ZXN0KGNvbnRlbnRUeXBlKSkge1xuICAgICAgaW5pdC5oZWFkZXJzID0geyBcIkNvbnRlbnQtVHlwZVwiOiBjb250ZW50VHlwZSB9O1xuICAgICAgaW5pdC5ib2R5ID0gSlNPTi5zdHJpbmdpZnkoYXdhaXQgcmVxdWVzdC5qc29uKCkpO1xuICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgJiYgL1xcYnRleHRcXC9wbGFpblxcYi8udGVzdChjb250ZW50VHlwZSkpIHtcbiAgICAgIGluaXQuaGVhZGVycyA9IHsgXCJDb250ZW50LVR5cGVcIjogY29udGVudFR5cGUgfTtcbiAgICAgIGluaXQuYm9keSA9IGF3YWl0IHJlcXVlc3QudGV4dCgpO1xuICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgJiYgL1xcYmFwcGxpY2F0aW9uXFwveC13d3ctZm9ybS11cmxlbmNvZGVkXFxiLy50ZXN0KGNvbnRlbnRUeXBlKSkge1xuICAgICAgaW5pdC5ib2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhhd2FpdCByZXF1ZXN0LnRleHQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQuYm9keSA9IGF3YWl0IHJlcXVlc3QuZm9ybURhdGEoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluaXQ7XG59XG5cbi8vIGxpYi9kb20vc3NyL3NpbmdsZS1mZXRjaC50c3hcbnZhciBTaW5nbGVGZXRjaFJlZGlyZWN0U3ltYm9sID0gU3ltYm9sKFwiU2luZ2xlRmV0Y2hSZWRpcmVjdFwiKTtcbmZ1bmN0aW9uIFN0cmVhbVRyYW5zZmVyKHtcbiAgY29udGV4dCxcbiAgaWRlbnRpZmllcixcbiAgcmVhZGVyLFxuICB0ZXh0RGVjb2RlcixcbiAgbm9uY2Vcbn0pIHtcbiAgaWYgKCFjb250ZXh0LnJlbmRlck1ldGEgfHwgIWNvbnRleHQucmVuZGVyTWV0YS5kaWRSZW5kZXJTY3JpcHRzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCFjb250ZXh0LnJlbmRlck1ldGEuc3RyZWFtQ2FjaGUpIHtcbiAgICBjb250ZXh0LnJlbmRlck1ldGEuc3RyZWFtQ2FjaGUgPSB7fTtcbiAgfVxuICBsZXQgeyBzdHJlYW1DYWNoZSB9ID0gY29udGV4dC5yZW5kZXJNZXRhO1xuICBsZXQgcHJvbWlzZSA9IHN0cmVhbUNhY2hlW2lkZW50aWZpZXJdO1xuICBpZiAoIXByb21pc2UpIHtcbiAgICBwcm9taXNlID0gc3RyZWFtQ2FjaGVbaWRlbnRpZmllcl0gPSByZWFkZXIucmVhZCgpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgc3RyZWFtQ2FjaGVbaWRlbnRpZmllcl0ucmVzdWx0ID0ge1xuICAgICAgICBkb25lOiByZXN1bHQuZG9uZSxcbiAgICAgICAgdmFsdWU6IHRleHREZWNvZGVyLmRlY29kZShyZXN1bHQudmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgICB9O1xuICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICBzdHJlYW1DYWNoZVtpZGVudGlmaWVyXS5lcnJvciA9IGU7XG4gICAgfSk7XG4gIH1cbiAgaWYgKHByb21pc2UuZXJyb3IpIHtcbiAgICB0aHJvdyBwcm9taXNlLmVycm9yO1xuICB9XG4gIGlmIChwcm9taXNlLnJlc3VsdCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgcHJvbWlzZTtcbiAgfVxuICBsZXQgeyBkb25lLCB2YWx1ZSB9ID0gcHJvbWlzZS5yZXN1bHQ7XG4gIGxldCBzY3JpcHRUYWcgPSB2YWx1ZSA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDQuY3JlYXRlRWxlbWVudChcbiAgICBcInNjcmlwdFwiLFxuICAgIHtcbiAgICAgIG5vbmNlLFxuICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgX19odG1sOiBgd2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LnN0cmVhbUNvbnRyb2xsZXIuZW5xdWV1ZSgke2VzY2FwZUh0bWwoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gICAgICAgICl9KTtgXG4gICAgICB9XG4gICAgfVxuICApIDogbnVsbDtcbiAgaWYgKGRvbmUpIHtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0NC5jcmVhdGVFbGVtZW50KFJlYWN0NC5GcmFnbWVudCwgbnVsbCwgc2NyaXB0VGFnLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcInNjcmlwdFwiLFxuICAgICAge1xuICAgICAgICBub25jZSxcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICBfX2h0bWw6IGB3aW5kb3cuX19yZWFjdFJvdXRlckNvbnRleHQuc3RyZWFtQ29udHJvbGxlci5jbG9zZSgpO2BcbiAgICAgICAgfVxuICAgICAgfVxuICAgICkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q0LmNyZWF0ZUVsZW1lbnQoUmVhY3Q0LkZyYWdtZW50LCBudWxsLCBzY3JpcHRUYWcsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDQuY3JlYXRlRWxlbWVudChSZWFjdDQuU3VzcGVuc2UsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDQuY3JlYXRlRWxlbWVudChcbiAgICAgIFN0cmVhbVRyYW5zZmVyLFxuICAgICAge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyICsgMSxcbiAgICAgICAgcmVhZGVyLFxuICAgICAgICB0ZXh0RGVjb2RlcixcbiAgICAgICAgbm9uY2VcbiAgICAgIH1cbiAgICApKSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFNpbmdsZUZldGNoRGF0YVN0cmF0ZWd5KG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIGdldFJvdXRlcikge1xuICByZXR1cm4gYXN5bmMgKHsgcmVxdWVzdCwgbWF0Y2hlcywgZmV0Y2hlcktleSB9KSA9PiB7XG4gICAgaWYgKHJlcXVlc3QubWV0aG9kICE9PSBcIkdFVFwiKSB7XG4gICAgICByZXR1cm4gc2luZ2xlRmV0Y2hBY3Rpb25TdHJhdGVneShyZXF1ZXN0LCBtYXRjaGVzKTtcbiAgICB9XG4gICAgaWYgKGZldGNoZXJLZXkpIHtcbiAgICAgIHJldHVybiBzaW5nbGVGZXRjaExvYWRlckZldGNoZXJTdHJhdGVneShyZXF1ZXN0LCBtYXRjaGVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbmdsZUZldGNoTG9hZGVyTmF2aWdhdGlvblN0cmF0ZWd5KFxuICAgICAgbWFuaWZlc3QsXG4gICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICBnZXRSb3V0ZXIoKSxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtYXRjaGVzXG4gICAgKTtcbiAgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHNpbmdsZUZldGNoQWN0aW9uU3RyYXRlZ3kocmVxdWVzdCwgbWF0Y2hlcykge1xuICBsZXQgYWN0aW9uTWF0Y2ggPSBtYXRjaGVzLmZpbmQoKG0pID0+IG0uc2hvdWxkTG9hZCk7XG4gIGludmFyaWFudDIoYWN0aW9uTWF0Y2gsIFwiTm8gYWN0aW9uIG1hdGNoIGZvdW5kXCIpO1xuICBsZXQgYWN0aW9uU3RhdHVzID0gdm9pZCAwO1xuICBsZXQgcmVzdWx0ID0gYXdhaXQgYWN0aW9uTWF0Y2gucmVzb2x2ZShhc3luYyAoaGFuZGxlcikgPT4ge1xuICAgIGxldCByZXN1bHQyID0gYXdhaXQgaGFuZGxlcihhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgdXJsID0gc2luZ2xlRmV0Y2hVcmwocmVxdWVzdC51cmwpO1xuICAgICAgbGV0IGluaXQgPSBhd2FpdCBjcmVhdGVSZXF1ZXN0SW5pdChyZXF1ZXN0KTtcbiAgICAgIGxldCB7IGRhdGE6IGRhdGEyLCBzdGF0dXMgfSA9IGF3YWl0IGZldGNoQW5kRGVjb2RlKHVybCwgaW5pdCk7XG4gICAgICBhY3Rpb25TdGF0dXMgPSBzdGF0dXM7XG4gICAgICByZXR1cm4gdW53cmFwU2luZ2xlRmV0Y2hSZXN1bHQoXG4gICAgICAgIGRhdGEyLFxuICAgICAgICBhY3Rpb25NYXRjaC5yb3V0ZS5pZFxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0MjtcbiAgfSk7XG4gIGlmIChpc1Jlc3BvbnNlKHJlc3VsdC5yZXN1bHQpIHx8IGlzUm91dGVFcnJvclJlc3BvbnNlKHJlc3VsdC5yZXN1bHQpKSB7XG4gICAgcmV0dXJuIHsgW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTogcmVzdWx0IH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBbYWN0aW9uTWF0Y2gucm91dGUuaWRdOiB7XG4gICAgICB0eXBlOiByZXN1bHQudHlwZSxcbiAgICAgIHJlc3VsdDogZGF0YShyZXN1bHQucmVzdWx0LCBhY3Rpb25TdGF0dXMpXG4gICAgfVxuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gc2luZ2xlRmV0Y2hMb2FkZXJOYXZpZ2F0aW9uU3RyYXRlZ3kobWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgcm91dGVyLCByZXF1ZXN0LCBtYXRjaGVzKSB7XG4gIGxldCByb3V0ZXNQYXJhbXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgZm91bmRPcHRPdXRSb3V0ZSA9IGZhbHNlO1xuICBsZXQgcm91dGVEZmRzID0gbWF0Y2hlcy5tYXAoKCkgPT4gY3JlYXRlRGVmZXJyZWQyKCkpO1xuICBsZXQgcm91dGVzTG9hZGVkUHJvbWlzZSA9IFByb21pc2UuYWxsKHJvdXRlRGZkcy5tYXAoKGQpID0+IGQucHJvbWlzZSkpO1xuICBsZXQgc2luZ2xlRmV0Y2hEZmQgPSBjcmVhdGVEZWZlcnJlZDIoKTtcbiAgbGV0IHVybCA9IHN0cmlwSW5kZXhQYXJhbShzaW5nbGVGZXRjaFVybChyZXF1ZXN0LnVybCkpO1xuICBsZXQgaW5pdCA9IGF3YWl0IGNyZWF0ZVJlcXVlc3RJbml0KHJlcXVlc3QpO1xuICBsZXQgcmVzdWx0cyA9IHt9O1xuICBsZXQgcmVzb2x2ZVByb21pc2UgPSBQcm9taXNlLmFsbChcbiAgICBtYXRjaGVzLm1hcChcbiAgICAgIGFzeW5jIChtLCBpKSA9PiBtLnJlc29sdmUoYXN5bmMgKGhhbmRsZXIpID0+IHtcbiAgICAgICAgcm91dGVEZmRzW2ldLnJlc29sdmUoKTtcbiAgICAgICAgbGV0IG1hbmlmZXN0Um91dGUgPSBtYW5pZmVzdC5yb3V0ZXNbbS5yb3V0ZS5pZF07XG4gICAgICAgIGlmICghbS5zaG91bGRMb2FkKSB7XG4gICAgICAgICAgaWYgKCFyb3V0ZXIuc3RhdGUuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG0ucm91dGUuaWQgaW4gcm91dGVyLnN0YXRlLmxvYWRlckRhdGEgJiYgbWFuaWZlc3RSb3V0ZSAmJiBtYW5pZmVzdFJvdXRlLmhhc0xvYWRlciAmJiByb3V0ZU1vZHVsZXNbbS5yb3V0ZS5pZF0/LnNob3VsZFJldmFsaWRhdGUpIHtcbiAgICAgICAgICAgIGZvdW5kT3B0T3V0Um91dGUgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWFuaWZlc3RSb3V0ZSAmJiBtYW5pZmVzdFJvdXRlLmhhc0NsaWVudExvYWRlcikge1xuICAgICAgICAgIGlmIChtYW5pZmVzdFJvdXRlLmhhc0xvYWRlcikge1xuICAgICAgICAgICAgZm91bmRPcHRPdXRSb3V0ZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgZmV0Y2hTaW5nbGVMb2FkZXIoXG4gICAgICAgICAgICAgIGhhbmRsZXIsXG4gICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgaW5pdCxcbiAgICAgICAgICAgICAgbS5yb3V0ZS5pZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJlc3VsdHNbbS5yb3V0ZS5pZF0gPSB7IHR5cGU6IFwiZGF0YVwiLCByZXN1bHQgfTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXN1bHRzW20ucm91dGUuaWRdID0geyB0eXBlOiBcImVycm9yXCIsIHJlc3VsdDogZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hbmlmZXN0Um91dGUgJiYgbWFuaWZlc3RSb3V0ZS5oYXNMb2FkZXIpIHtcbiAgICAgICAgICByb3V0ZXNQYXJhbXMuYWRkKG0ucm91dGUuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGEyID0gYXdhaXQgc2luZ2xlRmV0Y2hEZmQucHJvbWlzZTtcbiAgICAgICAgICAgIHJldHVybiB1bndyYXBTaW5nbGVGZXRjaFJlc3VsdHMoZGF0YTIsIG0ucm91dGUuaWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlc3VsdHNbbS5yb3V0ZS5pZF0gPSB7XG4gICAgICAgICAgICB0eXBlOiBcImRhdGFcIixcbiAgICAgICAgICAgIHJlc3VsdFxuICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXN1bHRzW20ucm91dGUuaWRdID0ge1xuICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgICAgICAgcmVzdWx0OiBlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG4gIGF3YWl0IHJvdXRlc0xvYWRlZFByb21pc2U7XG4gIGlmICgoIXJvdXRlci5zdGF0ZS5pbml0aWFsaXplZCB8fCByb3V0ZXNQYXJhbXMuc2l6ZSA9PT0gMCkgJiYgIXdpbmRvdy5fX3JlYWN0Um91dGVySGRyQWN0aXZlKSB7XG4gICAgc2luZ2xlRmV0Y2hEZmQucmVzb2x2ZSh7fSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChmb3VuZE9wdE91dFJvdXRlICYmIHJvdXRlc1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChcbiAgICAgICAgICBcIl9yb3V0ZXNcIixcbiAgICAgICAgICBtYXRjaGVzLmZpbHRlcigobSkgPT4gcm91dGVzUGFyYW1zLmhhcyhtLnJvdXRlLmlkKSkubWFwKChtKSA9PiBtLnJvdXRlLmlkKS5qb2luKFwiLFwiKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgbGV0IGRhdGEyID0gYXdhaXQgZmV0Y2hBbmREZWNvZGUodXJsLCBpbml0KTtcbiAgICAgIHNpbmdsZUZldGNoRGZkLnJlc29sdmUoZGF0YTIuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc2luZ2xlRmV0Y2hEZmQucmVqZWN0KGUpO1xuICAgIH1cbiAgfVxuICBhd2FpdCByZXNvbHZlUHJvbWlzZTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5hc3luYyBmdW5jdGlvbiBzaW5nbGVGZXRjaExvYWRlckZldGNoZXJTdHJhdGVneShyZXF1ZXN0LCBtYXRjaGVzKSB7XG4gIGxldCBmZXRjaGVyTWF0Y2ggPSBtYXRjaGVzLmZpbmQoKG0pID0+IG0uc2hvdWxkTG9hZCk7XG4gIGludmFyaWFudDIoZmV0Y2hlck1hdGNoLCBcIk5vIGZldGNoZXIgbWF0Y2ggZm91bmRcIik7XG4gIGxldCByZXN1bHQgPSBhd2FpdCBmZXRjaGVyTWF0Y2gucmVzb2x2ZShhc3luYyAoaGFuZGxlcikgPT4ge1xuICAgIGxldCB1cmwgPSBzdHJpcEluZGV4UGFyYW0oc2luZ2xlRmV0Y2hVcmwocmVxdWVzdC51cmwpKTtcbiAgICBsZXQgaW5pdCA9IGF3YWl0IGNyZWF0ZVJlcXVlc3RJbml0KHJlcXVlc3QpO1xuICAgIHJldHVybiBmZXRjaFNpbmdsZUxvYWRlcihoYW5kbGVyLCB1cmwsIGluaXQsIGZldGNoZXJNYXRjaC5yb3V0ZS5pZCk7XG4gIH0pO1xuICByZXR1cm4geyBbZmV0Y2hlck1hdGNoLnJvdXRlLmlkXTogcmVzdWx0IH07XG59XG5mdW5jdGlvbiBmZXRjaFNpbmdsZUxvYWRlcihoYW5kbGVyLCB1cmwsIGluaXQsIHJvdXRlSWQpIHtcbiAgcmV0dXJuIGhhbmRsZXIoYXN5bmMgKCkgPT4ge1xuICAgIGxldCBzaW5nbGVMb2FkZXJVcmwgPSBuZXcgVVJMKHVybCk7XG4gICAgc2luZ2xlTG9hZGVyVXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJfcm91dGVzXCIsIHJvdXRlSWQpO1xuICAgIGxldCB7IGRhdGE6IGRhdGEyIH0gPSBhd2FpdCBmZXRjaEFuZERlY29kZShzaW5nbGVMb2FkZXJVcmwsIGluaXQpO1xuICAgIHJldHVybiB1bndyYXBTaW5nbGVGZXRjaFJlc3VsdHMoZGF0YTIsIHJvdXRlSWQpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHN0cmlwSW5kZXhQYXJhbSh1cmwpIHtcbiAgbGV0IGluZGV4VmFsdWVzID0gdXJsLnNlYXJjaFBhcmFtcy5nZXRBbGwoXCJpbmRleFwiKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoXCJpbmRleFwiKTtcbiAgbGV0IGluZGV4VmFsdWVzVG9LZWVwID0gW107XG4gIGZvciAobGV0IGluZGV4VmFsdWUgb2YgaW5kZXhWYWx1ZXMpIHtcbiAgICBpZiAoaW5kZXhWYWx1ZSkge1xuICAgICAgaW5kZXhWYWx1ZXNUb0tlZXAucHVzaChpbmRleFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgZm9yIChsZXQgdG9LZWVwIG9mIGluZGV4VmFsdWVzVG9LZWVwKSB7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB0b0tlZXApO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5mdW5jdGlvbiBzaW5nbGVGZXRjaFVybChyZXFVcmwpIHtcbiAgbGV0IHVybCA9IHR5cGVvZiByZXFVcmwgPT09IFwic3RyaW5nXCIgPyBuZXcgVVJMKFxuICAgIHJlcVVybCxcbiAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgZHVyaW5nIHRoZSBTU1IgZmxvdyB2aWEgUHJlZmV0Y2hQYWdlTGlua3NJbXBsIHNvXG4gICAgLy8gZG9uJ3QgYXNzdW1lIHdpbmRvdyBpcyBhdmFpbGFibGVcbiAgICB0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiID8gXCJzZXJ2ZXI6Ly9zaW5nbGVmZXRjaC9cIiA6IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5cbiAgKSA6IHJlcVVybDtcbiAgaWYgKHVybC5wYXRobmFtZSA9PT0gXCIvXCIpIHtcbiAgICB1cmwucGF0aG5hbWUgPSBcIl9yb290LmRhdGFcIjtcbiAgfSBlbHNlIHtcbiAgICB1cmwucGF0aG5hbWUgPSBgJHt1cmwucGF0aG5hbWUucmVwbGFjZSgvXFwvJC8sIFwiXCIpfS5kYXRhYDtcbiAgfVxuICByZXR1cm4gdXJsO1xufVxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBbmREZWNvZGUodXJsLCBpbml0KSB7XG4gIGxldCByZXMgPSBhd2FpdCBmZXRjaCh1cmwsIGluaXQpO1xuICBpZiAocmVzLnN0YXR1cyA9PT0gNDA0ICYmICFyZXMuaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJlc3BvbnNlXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yUmVzcG9uc2VJbXBsKDQwNCwgXCJOb3QgRm91bmRcIiwgdHJ1ZSk7XG4gIH1cbiAgaW52YXJpYW50MihyZXMuYm9keSwgXCJObyByZXNwb25zZSBib2R5IHRvIGRlY29kZVwiKTtcbiAgdHJ5IHtcbiAgICBsZXQgZGVjb2RlZCA9IGF3YWl0IGRlY29kZVZpYVR1cmJvU3RyZWFtKHJlcy5ib2R5LCB3aW5kb3cpO1xuICAgIHJldHVybiB7IHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogZGVjb2RlZC52YWx1ZSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGRlY29kZSB0dXJiby1zdHJlYW0gcmVzcG9uc2VcIik7XG4gIH1cbn1cbmZ1bmN0aW9uIGRlY29kZVZpYVR1cmJvU3RyZWFtKGJvZHksIGdsb2JhbDIpIHtcbiAgcmV0dXJuIGRlY29kZShib2R5LCB7XG4gICAgcGx1Z2luczogW1xuICAgICAgKHR5cGUsIC4uLnJlc3QpID0+IHtcbiAgICAgICAgaWYgKHR5cGUgPT09IFwiU2FuaXRpemVkRXJyb3JcIikge1xuICAgICAgICAgIGxldCBbbmFtZSwgbWVzc2FnZSwgc3RhY2tdID0gcmVzdDtcbiAgICAgICAgICBsZXQgQ29uc3RydWN0b3IgPSBFcnJvcjtcbiAgICAgICAgICBpZiAobmFtZSAmJiBuYW1lIGluIGdsb2JhbDIgJiYgdHlwZW9mIGdsb2JhbDJbbmFtZV0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgQ29uc3RydWN0b3IgPSBnbG9iYWwyW25hbWVdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZXJyb3IgPSBuZXcgQ29uc3RydWN0b3IobWVzc2FnZSk7XG4gICAgICAgICAgZXJyb3Iuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogZXJyb3IgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gXCJFcnJvclJlc3BvbnNlXCIpIHtcbiAgICAgICAgICBsZXQgW2RhdGEyLCBzdGF0dXMsIHN0YXR1c1RleHRdID0gcmVzdDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IG5ldyBFcnJvclJlc3BvbnNlSW1wbChzdGF0dXMsIHN0YXR1c1RleHQsIGRhdGEyKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09IFwiU2luZ2xlRmV0Y2hSZWRpcmVjdFwiKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHsgW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdOiByZXN0WzBdIH0gfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gXCJTaW5nbGVGZXRjaENsYXNzSW5zdGFuY2VcIikge1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiByZXN0WzBdIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09IFwiU2luZ2xlRmV0Y2hGYWxsYmFja1wiKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHZvaWQgMCB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9KTtcbn1cbmZ1bmN0aW9uIHVud3JhcFNpbmdsZUZldGNoUmVzdWx0cyhyZXN1bHRzLCByb3V0ZUlkKSB7XG4gIGxldCByZWRpcmVjdDIgPSByZXN1bHRzW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdO1xuICBpZiAocmVkaXJlY3QyKSB7XG4gICAgcmV0dXJuIHVud3JhcFNpbmdsZUZldGNoUmVzdWx0KHJlZGlyZWN0Miwgcm91dGVJZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHNbcm91dGVJZF0gIT09IHZvaWQgMCA/IHVud3JhcFNpbmdsZUZldGNoUmVzdWx0KHJlc3VsdHNbcm91dGVJZF0sIHJvdXRlSWQpIDogbnVsbDtcbn1cbmZ1bmN0aW9uIHVud3JhcFNpbmdsZUZldGNoUmVzdWx0KHJlc3VsdCwgcm91dGVJZCkge1xuICBpZiAoXCJlcnJvclwiIGluIHJlc3VsdCkge1xuICAgIHRocm93IHJlc3VsdC5lcnJvcjtcbiAgfSBlbHNlIGlmIChcInJlZGlyZWN0XCIgaW4gcmVzdWx0KSB7XG4gICAgbGV0IGhlYWRlcnMgPSB7fTtcbiAgICBpZiAocmVzdWx0LnJldmFsaWRhdGUpIHtcbiAgICAgIGhlYWRlcnNbXCJYLVJlbWl4LVJldmFsaWRhdGVcIl0gPSBcInllc1wiO1xuICAgIH1cbiAgICBpZiAocmVzdWx0LnJlbG9hZCkge1xuICAgICAgaGVhZGVyc1tcIlgtUmVtaXgtUmVsb2FkLURvY3VtZW50XCJdID0gXCJ5ZXNcIjtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5yZXBsYWNlKSB7XG4gICAgICBoZWFkZXJzW1wiWC1SZW1peC1SZXBsYWNlXCJdID0gXCJ5ZXNcIjtcbiAgICB9XG4gICAgcmV0dXJuIHJlZGlyZWN0KHJlc3VsdC5yZWRpcmVjdCwgeyBzdGF0dXM6IHJlc3VsdC5zdGF0dXMsIGhlYWRlcnMgfSk7XG4gIH0gZWxzZSBpZiAoXCJkYXRhXCIgaW4gcmVzdWx0KSB7XG4gICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm8gcmVzcG9uc2UgZm91bmQgZm9yIHJvdXRlSWQgXCIke3JvdXRlSWR9XCJgKTtcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRGVmZXJyZWQyKCkge1xuICBsZXQgcmVzb2x2ZTtcbiAgbGV0IHJlamVjdDtcbiAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcbiAgICByZXNvbHZlID0gYXN5bmMgKHZhbCkgPT4ge1xuICAgICAgcmVzKHZhbCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBwcm9taXNlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgIH07XG4gICAgcmVqZWN0ID0gYXN5bmMgKGVycm9yKSA9PiB7XG4gICAgICByZWooZXJyb3IpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcHJvbWlzZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBwcm9taXNlLFxuICAgIC8vQHRzLWlnbm9yZVxuICAgIHJlc29sdmUsXG4gICAgLy9AdHMtaWdub3JlXG4gICAgcmVqZWN0XG4gIH07XG59XG5cbi8vIGxpYi9kb20vc3NyL2ZvZy1vZi13YXIudHNcbmltcG9ydCAqIGFzIFJlYWN0OCBmcm9tIFwicmVhY3RcIjtcblxuLy8gbGliL2RvbS9zc3Ivcm91dGVzLnRzeFxuaW1wb3J0ICogYXMgUmVhY3Q3IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBsaWIvZG9tL3Nzci9lcnJvckJvdW5kYXJpZXMudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDUgZnJvbSBcInJlYWN0XCI7XG52YXIgUmVtaXhFcnJvckJvdW5kYXJ5ID0gY2xhc3MgZXh0ZW5kcyBSZWFjdDUuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHsgZXJyb3I6IHByb3BzLmVycm9yIHx8IG51bGwsIGxvY2F0aW9uOiBwcm9wcy5sb2NhdGlvbiB9O1xuICB9XG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3IpIHtcbiAgICByZXR1cm4geyBlcnJvciB9O1xuICB9XG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgaWYgKHN0YXRlLmxvY2F0aW9uICE9PSBwcm9wcy5sb2NhdGlvbikge1xuICAgICAgcmV0dXJuIHsgZXJyb3I6IHByb3BzLmVycm9yIHx8IG51bGwsIGxvY2F0aW9uOiBwcm9wcy5sb2NhdGlvbiB9O1xuICAgIH1cbiAgICByZXR1cm4geyBlcnJvcjogcHJvcHMuZXJyb3IgfHwgc3RhdGUuZXJyb3IsIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbiB9O1xuICB9XG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5lcnJvcikge1xuICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcbiAgICAgICAgUmVtaXhSb290RGVmYXVsdEVycm9yQm91bmRhcnksXG4gICAgICAgIHtcbiAgICAgICAgICBlcnJvcjogdGhpcy5zdGF0ZS5lcnJvcixcbiAgICAgICAgICBpc091dHNpZGVSZW1peEFwcDogdHJ1ZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICB9XG4gIH1cbn07XG5mdW5jdGlvbiBSZW1peFJvb3REZWZhdWx0RXJyb3JCb3VuZGFyeSh7XG4gIGVycm9yLFxuICBpc091dHNpZGVSZW1peEFwcFxufSkge1xuICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgbGV0IGhleURldmVsb3BlciA9IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcbiAgICBcInNjcmlwdFwiLFxuICAgIHtcbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgIF9faHRtbDogYFxuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBcIlxcdXsxRjRCRn0gSGV5IGRldmVsb3BlciBcXHV7MUY0NEJ9LiBZb3UgY2FuIHByb3ZpZGUgYSB3YXkgYmV0dGVyIFVYIHRoYW4gdGhpcyB3aGVuIHlvdXIgYXBwIHRocm93cyBlcnJvcnMuIENoZWNrIG91dCBodHRwczovL3JlbWl4LnJ1bi9ndWlkZXMvZXJyb3JzIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiXG4gICAgICAgICk7XG4gICAgICBgXG4gICAgICB9XG4gICAgfVxuICApO1xuICBpZiAoaXNSb3V0ZUVycm9yUmVzcG9uc2UoZXJyb3IpKSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChCb3VuZGFyeVNoZWxsLCB7IHRpdGxlOiBcIlVuaGFuZGxlZCBUaHJvd24gUmVzcG9uc2UhXCIgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwiaDFcIiwgeyBzdHlsZTogeyBmb250U2l6ZTogXCIyNHB4XCIgfSB9LCBlcnJvci5zdGF0dXMsIFwiIFwiLCBlcnJvci5zdGF0dXNUZXh0KSwgaGV5RGV2ZWxvcGVyKTtcbiAgfVxuICBsZXQgZXJyb3JJbnN0YW5jZTtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICBlcnJvckluc3RhbmNlID0gZXJyb3I7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGVycm9yU3RyaW5nID0gZXJyb3IgPT0gbnVsbCA/IFwiVW5rbm93biBFcnJvclwiIDogdHlwZW9mIGVycm9yID09PSBcIm9iamVjdFwiICYmIFwidG9TdHJpbmdcIiBpbiBlcnJvciA/IGVycm9yLnRvU3RyaW5nKCkgOiBKU09OLnN0cmluZ2lmeShlcnJvcik7XG4gICAgZXJyb3JJbnN0YW5jZSA9IG5ldyBFcnJvcihlcnJvclN0cmluZyk7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcbiAgICBCb3VuZGFyeVNoZWxsLFxuICAgIHtcbiAgICAgIHRpdGxlOiBcIkFwcGxpY2F0aW9uIEVycm9yIVwiLFxuICAgICAgaXNPdXRzaWRlUmVtaXhBcHBcbiAgICB9LFxuICAgIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcImgxXCIsIHsgc3R5bGU6IHsgZm9udFNpemU6IFwiMjRweFwiIH0gfSwgXCJBcHBsaWNhdGlvbiBFcnJvclwiKSxcbiAgICAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcInByZVwiLFxuICAgICAge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIHBhZGRpbmc6IFwiMnJlbVwiLFxuICAgICAgICAgIGJhY2tncm91bmQ6IFwiaHNsYSgxMCwgNTAlLCA1MCUsIDAuMSlcIixcbiAgICAgICAgICBjb2xvcjogXCJyZWRcIixcbiAgICAgICAgICBvdmVyZmxvdzogXCJhdXRvXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9ySW5zdGFuY2Uuc3RhY2tcbiAgICApLFxuICAgIGhleURldmVsb3BlclxuICApO1xufVxuZnVuY3Rpb24gQm91bmRhcnlTaGVsbCh7XG4gIHRpdGxlLFxuICByZW5kZXJTY3JpcHRzLFxuICBpc091dHNpZGVSZW1peEFwcCxcbiAgY2hpbGRyZW5cbn0pIHtcbiAgbGV0IHsgcm91dGVNb2R1bGVzIH0gPSB1c2VGcmFtZXdvcmtDb250ZXh0KCk7XG4gIGlmIChyb3V0ZU1vZHVsZXMucm9vdD8uTGF5b3V0ICYmICFpc091dHNpZGVSZW1peEFwcCkge1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwiaHRtbFwiLCB7IGxhbmc6IFwiZW5cIiB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXCJoZWFkXCIsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcIm1ldGFcIiwgeyBjaGFyU2V0OiBcInV0Zi04XCIgfSksIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcbiAgICBcIm1ldGFcIixcbiAgICB7XG4gICAgICBuYW1lOiBcInZpZXdwb3J0XCIsXG4gICAgICBjb250ZW50OiBcIndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEsdmlld3BvcnQtZml0PWNvdmVyXCJcbiAgICB9XG4gICksIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcInRpdGxlXCIsIG51bGwsIHRpdGxlKSksIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcImJvZHlcIiwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwibWFpblwiLCB7IHN0eWxlOiB7IGZvbnRGYW1pbHk6IFwic3lzdGVtLXVpLCBzYW5zLXNlcmlmXCIsIHBhZGRpbmc6IFwiMnJlbVwiIH0gfSwgY2hpbGRyZW4sIHJlbmRlclNjcmlwdHMgPyAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoU2NyaXB0cywgbnVsbCkgOiBudWxsKSkpO1xufVxuXG4vLyBsaWIvZG9tL3Nzci9mYWxsYmFjay50c3hcbmltcG9ydCAqIGFzIFJlYWN0NiBmcm9tIFwicmVhY3RcIjtcbmZ1bmN0aW9uIFJlbWl4Um9vdERlZmF1bHRIeWRyYXRlRmFsbGJhY2soKSB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q2LmNyZWF0ZUVsZW1lbnQoQm91bmRhcnlTaGVsbCwgeyB0aXRsZTogXCJMb2FkaW5nLi4uXCIsIHJlbmRlclNjcmlwdHM6IHRydWUgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0Ni5jcmVhdGVFbGVtZW50KFxuICAgIFwic2NyaXB0XCIsXG4gICAge1xuICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgX19odG1sOiBgXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiXFx1ezFGNEJGfSBIZXkgZGV2ZWxvcGVyIFxcdXsxRjQ0Qn0uIFlvdSBjYW4gcHJvdmlkZSBhIHdheSBiZXR0ZXIgVVggdGhhbiB0aGlzIFwiICtcbiAgICAgICAgICAgICAgICBcIndoZW4geW91ciBhcHAgaXMgbG9hZGluZyBKUyBtb2R1bGVzIGFuZC9vciBydW5uaW5nIFxcYGNsaWVudExvYWRlclxcYCBcIiArXG4gICAgICAgICAgICAgICAgXCJmdW5jdGlvbnMuIENoZWNrIG91dCBodHRwczovL3JlbWl4LnJ1bi9yb3V0ZS9oeWRyYXRlLWZhbGxiYWNrIFwiICtcbiAgICAgICAgICAgICAgICBcImZvciBtb3JlIGluZm9ybWF0aW9uLlwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBgXG4gICAgICB9XG4gICAgfVxuICApKTtcbn1cblxuLy8gbGliL2RvbS9zc3Ivcm91dGVzLnRzeFxuZnVuY3Rpb24gZ3JvdXBSb3V0ZXNCeVBhcmVudElkKG1hbmlmZXN0KSB7XG4gIGxldCByb3V0ZXMgPSB7fTtcbiAgT2JqZWN0LnZhbHVlcyhtYW5pZmVzdCkuZm9yRWFjaCgocm91dGUpID0+IHtcbiAgICBpZiAocm91dGUpIHtcbiAgICAgIGxldCBwYXJlbnRJZCA9IHJvdXRlLnBhcmVudElkIHx8IFwiXCI7XG4gICAgICBpZiAoIXJvdXRlc1twYXJlbnRJZF0pIHtcbiAgICAgICAgcm91dGVzW3BhcmVudElkXSA9IFtdO1xuICAgICAgfVxuICAgICAgcm91dGVzW3BhcmVudElkXS5wdXNoKHJvdXRlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm91dGVzO1xufVxuZnVuY3Rpb24gZ2V0Um91dGVDb21wb25lbnRzKHJvdXRlLCByb3V0ZU1vZHVsZSwgaXNTcGFNb2RlKSB7XG4gIGxldCBDb21wb25lbnQ0ID0gZ2V0Um91dGVNb2R1bGVDb21wb25lbnQocm91dGVNb2R1bGUpO1xuICBsZXQgSHlkcmF0ZUZhbGxiYWNrID0gcm91dGVNb2R1bGUuSHlkcmF0ZUZhbGxiYWNrICYmICghaXNTcGFNb2RlIHx8IHJvdXRlLmlkID09PSBcInJvb3RcIikgPyByb3V0ZU1vZHVsZS5IeWRyYXRlRmFsbGJhY2sgOiByb3V0ZS5pZCA9PT0gXCJyb290XCIgPyBSZW1peFJvb3REZWZhdWx0SHlkcmF0ZUZhbGxiYWNrIDogdm9pZCAwO1xuICBsZXQgRXJyb3JCb3VuZGFyeSA9IHJvdXRlTW9kdWxlLkVycm9yQm91bmRhcnkgPyByb3V0ZU1vZHVsZS5FcnJvckJvdW5kYXJ5IDogcm91dGUuaWQgPT09IFwicm9vdFwiID8gKCkgPT4gLyogQF9fUFVSRV9fICovIFJlYWN0Ny5jcmVhdGVFbGVtZW50KFJlbWl4Um9vdERlZmF1bHRFcnJvckJvdW5kYXJ5LCB7IGVycm9yOiB1c2VSb3V0ZUVycm9yKCkgfSkgOiB2b2lkIDA7XG4gIGlmIChyb3V0ZS5pZCA9PT0gXCJyb290XCIgJiYgcm91dGVNb2R1bGUuTGF5b3V0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkNvbXBvbmVudDQgPyB7XG4gICAgICAgIGVsZW1lbnQ6IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDcuY3JlYXRlRWxlbWVudChyb3V0ZU1vZHVsZS5MYXlvdXQsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDcuY3JlYXRlRWxlbWVudChDb21wb25lbnQ0LCBudWxsKSlcbiAgICAgIH0gOiB7IENvbXBvbmVudDogQ29tcG9uZW50NCB9LFxuICAgICAgLi4uRXJyb3JCb3VuZGFyeSA/IHtcbiAgICAgICAgZXJyb3JFbGVtZW50OiAvKiBAX19QVVJFX18gKi8gUmVhY3Q3LmNyZWF0ZUVsZW1lbnQocm91dGVNb2R1bGUuTGF5b3V0LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q3LmNyZWF0ZUVsZW1lbnQoRXJyb3JCb3VuZGFyeSwgbnVsbCkpXG4gICAgICB9IDogeyBFcnJvckJvdW5kYXJ5IH0sXG4gICAgICAuLi5IeWRyYXRlRmFsbGJhY2sgPyB7XG4gICAgICAgIGh5ZHJhdGVGYWxsYmFja0VsZW1lbnQ6IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDcuY3JlYXRlRWxlbWVudChyb3V0ZU1vZHVsZS5MYXlvdXQsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDcuY3JlYXRlRWxlbWVudChIeWRyYXRlRmFsbGJhY2ssIG51bGwpKVxuICAgICAgfSA6IHsgSHlkcmF0ZUZhbGxiYWNrIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiB7IENvbXBvbmVudDogQ29tcG9uZW50NCwgRXJyb3JCb3VuZGFyeSwgSHlkcmF0ZUZhbGxiYWNrIH07XG59XG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJSb3V0ZXMobWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgZnV0dXJlLCBpc1NwYU1vZGUsIHBhcmVudElkID0gXCJcIiwgcm91dGVzQnlQYXJlbnRJZCA9IGdyb3VwUm91dGVzQnlQYXJlbnRJZChtYW5pZmVzdCksIHNwYU1vZGVMYXp5UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh7IENvbXBvbmVudDogKCkgPT4gbnVsbCB9KSkge1xuICByZXR1cm4gKHJvdXRlc0J5UGFyZW50SWRbcGFyZW50SWRdIHx8IFtdKS5tYXAoKHJvdXRlKSA9PiB7XG4gICAgbGV0IHJvdXRlTW9kdWxlID0gcm91dGVNb2R1bGVzW3JvdXRlLmlkXTtcbiAgICBpbnZhcmlhbnQyKFxuICAgICAgcm91dGVNb2R1bGUsXG4gICAgICBcIk5vIGByb3V0ZU1vZHVsZWAgYXZhaWxhYmxlIHRvIGNyZWF0ZSBzZXJ2ZXIgcm91dGVzXCJcbiAgICApO1xuICAgIGxldCBkYXRhUm91dGUgPSB7XG4gICAgICAuLi5nZXRSb3V0ZUNvbXBvbmVudHMocm91dGUsIHJvdXRlTW9kdWxlLCBpc1NwYU1vZGUpLFxuICAgICAgY2FzZVNlbnNpdGl2ZTogcm91dGUuY2FzZVNlbnNpdGl2ZSxcbiAgICAgIGlkOiByb3V0ZS5pZCxcbiAgICAgIGluZGV4OiByb3V0ZS5pbmRleCxcbiAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICBoYW5kbGU6IHJvdXRlTW9kdWxlLmhhbmRsZSxcbiAgICAgIC8vIEZvciBTUEEgTW9kZSwgYWxsIHJvdXRlcyBhcmUgbGF6eSBleGNlcHQgcm9vdC4gIEhvd2V2ZXIgd2UgdGVsbCB0aGVcbiAgICAgIC8vIHJvdXRlciByb290IGlzIGFsc28gbGF6eSBoZXJlIHRvbyBzaW5jZSB3ZSBkb24ndCBuZWVkIGEgZnVsbFxuICAgICAgLy8gaW1wbGVtZW50YXRpb24gLSB3ZSBqdXN0IG5lZWQgYSBgbGF6eWAgcHJvcCB0byB0ZWxsIHRoZSBSUiByZW5kZXJpbmdcbiAgICAgIC8vIHdoZXJlIHRvIHN0b3Agd2hpY2ggaXMgYWx3YXlzIGF0IHRoZSByb290IHJvdXRlIGluIFNQQSBtb2RlXG4gICAgICBsYXp5OiBpc1NwYU1vZGUgPyAoKSA9PiBzcGFNb2RlTGF6eVByb21pc2UgOiB2b2lkIDAsXG4gICAgICAvLyBGb3IgcGFydGlhbCBoeWRyYXRpb24gcmVuZGVyaW5nLCB3ZSBuZWVkIHRvIGluZGljYXRlIHdoZW4gdGhlIHJvdXRlXG4gICAgICAvLyBoYXMgYSBsb2FkZXIvY2xpZW50TG9hZGVyLCBidXQgaXQgd29uJ3QgZXZlciBiZSBjYWxsZWQgZHVyaW5nIHRoZSBzdGF0aWNcbiAgICAgIC8vIHJlbmRlciwgc28ganVzdCBnaXZlIGl0IGEgbm8tb3AgZnVuY3Rpb24gc28gd2UgY2FuIHJlbmRlciBkb3duIHRvIHRoZVxuICAgICAgLy8gcHJvcGVyIGZhbGxiYWNrXG4gICAgICBsb2FkZXI6IHJvdXRlLmhhc0xvYWRlciB8fCByb3V0ZS5oYXNDbGllbnRMb2FkZXIgPyAoKSA9PiBudWxsIDogdm9pZCAwXG4gICAgICAvLyBXZSBkb24ndCBuZWVkIGFjdGlvbi9zaG91bGRSZXZhbGlkYXRlIG9uIHRoZXNlIHJvdXRlcyBzaW5jZSB0aGV5J3JlXG4gICAgICAvLyBmb3IgYSBzdGF0aWMgcmVuZGVyXG4gICAgfTtcbiAgICBsZXQgY2hpbGRyZW4gPSBjcmVhdGVTZXJ2ZXJSb3V0ZXMoXG4gICAgICBtYW5pZmVzdCxcbiAgICAgIHJvdXRlTW9kdWxlcyxcbiAgICAgIGZ1dHVyZSxcbiAgICAgIGlzU3BhTW9kZSxcbiAgICAgIHJvdXRlLmlkLFxuICAgICAgcm91dGVzQnlQYXJlbnRJZCxcbiAgICAgIHNwYU1vZGVMYXp5UHJvbWlzZVxuICAgICk7XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIGRhdGFSb3V0ZS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIHJldHVybiBkYXRhUm91dGU7XG4gIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50Um91dGVzV2l0aEhNUlJldmFsaWRhdGlvbk9wdE91dChuZWVkc1JldmFsaWRhdGlvbiwgbWFuaWZlc3QsIHJvdXRlTW9kdWxlc0NhY2hlLCBpbml0aWFsU3RhdGUsIGZ1dHVyZSwgaXNTcGFNb2RlKSB7XG4gIHJldHVybiBjcmVhdGVDbGllbnRSb3V0ZXMoXG4gICAgbWFuaWZlc3QsXG4gICAgcm91dGVNb2R1bGVzQ2FjaGUsXG4gICAgaW5pdGlhbFN0YXRlLFxuICAgIGlzU3BhTW9kZSxcbiAgICBcIlwiLFxuICAgIGdyb3VwUm91dGVzQnlQYXJlbnRJZChtYW5pZmVzdCksXG4gICAgbmVlZHNSZXZhbGlkYXRpb25cbiAgKTtcbn1cbmZ1bmN0aW9uIHByZXZlbnRJbnZhbGlkU2VydmVySGFuZGxlckNhbGwodHlwZSwgcm91dGUsIGlzU3BhTW9kZSkge1xuICBpZiAoaXNTcGFNb2RlKSB7XG4gICAgbGV0IGZuMiA9IHR5cGUgPT09IFwiYWN0aW9uXCIgPyBcInNlcnZlckFjdGlvbigpXCIgOiBcInNlcnZlckxvYWRlcigpXCI7XG4gICAgbGV0IG1zZzIgPSBgWW91IGNhbm5vdCBjYWxsICR7Zm4yfSBpbiBTUEEgTW9kZSAocm91dGVJZDogXCIke3JvdXRlLmlkfVwiKWA7XG4gICAgY29uc29sZS5lcnJvcihtc2cyKTtcbiAgICB0aHJvdyBuZXcgRXJyb3JSZXNwb25zZUltcGwoNDAwLCBcIkJhZCBSZXF1ZXN0XCIsIG5ldyBFcnJvcihtc2cyKSwgdHJ1ZSk7XG4gIH1cbiAgbGV0IGZuID0gdHlwZSA9PT0gXCJhY3Rpb25cIiA/IFwic2VydmVyQWN0aW9uKClcIiA6IFwic2VydmVyTG9hZGVyKClcIjtcbiAgbGV0IG1zZyA9IGBZb3UgYXJlIHRyeWluZyB0byBjYWxsICR7Zm59IG9uIGEgcm91dGUgdGhhdCBkb2VzIG5vdCBoYXZlIGEgc2VydmVyICR7dHlwZX0gKHJvdXRlSWQ6IFwiJHtyb3V0ZS5pZH1cIilgO1xuICBpZiAodHlwZSA9PT0gXCJsb2FkZXJcIiAmJiAhcm91dGUuaGFzTG9hZGVyIHx8IHR5cGUgPT09IFwiYWN0aW9uXCIgJiYgIXJvdXRlLmhhc0FjdGlvbikge1xuICAgIGNvbnNvbGUuZXJyb3IobXNnKTtcbiAgICB0aHJvdyBuZXcgRXJyb3JSZXNwb25zZUltcGwoNDAwLCBcIkJhZCBSZXF1ZXN0XCIsIG5ldyBFcnJvcihtc2cpLCB0cnVlKTtcbiAgfVxufVxuZnVuY3Rpb24gbm9BY3Rpb25EZWZpbmVkRXJyb3IodHlwZSwgcm91dGVJZCkge1xuICBsZXQgYXJ0aWNsZSA9IHR5cGUgPT09IFwiY2xpZW50QWN0aW9uXCIgPyBcImFcIiA6IFwiYW5cIjtcbiAgbGV0IG1zZyA9IGBSb3V0ZSBcIiR7cm91dGVJZH1cIiBkb2VzIG5vdCBoYXZlICR7YXJ0aWNsZX0gJHt0eXBlfSwgYnV0IHlvdSBhcmUgdHJ5aW5nIHRvIHN1Ym1pdCB0byBpdC4gVG8gZml4IHRoaXMsIHBsZWFzZSBhZGQgJHthcnRpY2xlfSBcXGAke3R5cGV9XFxgIGZ1bmN0aW9uIHRvIHRoZSByb3V0ZWA7XG4gIGNvbnNvbGUuZXJyb3IobXNnKTtcbiAgdGhyb3cgbmV3IEVycm9yUmVzcG9uc2VJbXBsKDQwNSwgXCJNZXRob2QgTm90IEFsbG93ZWRcIiwgbmV3IEVycm9yKG1zZyksIHRydWUpO1xufVxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50Um91dGVzKG1hbmlmZXN0LCByb3V0ZU1vZHVsZXNDYWNoZSwgaW5pdGlhbFN0YXRlLCBpc1NwYU1vZGUsIHBhcmVudElkID0gXCJcIiwgcm91dGVzQnlQYXJlbnRJZCA9IGdyb3VwUm91dGVzQnlQYXJlbnRJZChtYW5pZmVzdCksIG5lZWRzUmV2YWxpZGF0aW9uKSB7XG4gIHJldHVybiAocm91dGVzQnlQYXJlbnRJZFtwYXJlbnRJZF0gfHwgW10pLm1hcCgocm91dGUpID0+IHtcbiAgICBsZXQgcm91dGVNb2R1bGUgPSByb3V0ZU1vZHVsZXNDYWNoZVtyb3V0ZS5pZF07XG4gICAgZnVuY3Rpb24gZmV0Y2hTZXJ2ZXJIYW5kbGVyKHNpbmdsZUZldGNoKSB7XG4gICAgICBpbnZhcmlhbnQyKFxuICAgICAgICB0eXBlb2Ygc2luZ2xlRmV0Y2ggPT09IFwiZnVuY3Rpb25cIixcbiAgICAgICAgXCJObyBzaW5nbGUgZmV0Y2ggZnVuY3Rpb24gYXZhaWxhYmxlIGZvciByb3V0ZSBoYW5kbGVyXCJcbiAgICAgICk7XG4gICAgICByZXR1cm4gc2luZ2xlRmV0Y2goKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmV0Y2hTZXJ2ZXJMb2FkZXIoc2luZ2xlRmV0Y2gpIHtcbiAgICAgIGlmICghcm91dGUuaGFzTG9hZGVyKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICAgICAgcmV0dXJuIGZldGNoU2VydmVySGFuZGxlcihzaW5nbGVGZXRjaCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZldGNoU2VydmVyQWN0aW9uKHNpbmdsZUZldGNoKSB7XG4gICAgICBpZiAoIXJvdXRlLmhhc0FjdGlvbikge1xuICAgICAgICB0aHJvdyBub0FjdGlvbkRlZmluZWRFcnJvcihcImFjdGlvblwiLCByb3V0ZS5pZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJIYW5kbGVyKHNpbmdsZUZldGNoKTtcbiAgICB9XG4gICAgYXN5bmMgZnVuY3Rpb24gcHJlZmV0Y2hTdHlsZXNBbmRDYWxsSGFuZGxlcihoYW5kbGVyKSB7XG4gICAgICBsZXQgY2FjaGVkTW9kdWxlID0gcm91dGVNb2R1bGVzQ2FjaGVbcm91dGUuaWRdO1xuICAgICAgbGV0IGxpbmtQcmVmZXRjaFByb21pc2UgPSBjYWNoZWRNb2R1bGUgPyBwcmVmZXRjaFN0eWxlTGlua3Mocm91dGUsIGNhY2hlZE1vZHVsZSkgOiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVyKCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBhd2FpdCBsaW5rUHJlZmV0Y2hQcm9taXNlO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgZGF0YVJvdXRlID0ge1xuICAgICAgaWQ6IHJvdXRlLmlkLFxuICAgICAgaW5kZXg6IHJvdXRlLmluZGV4LFxuICAgICAgcGF0aDogcm91dGUucGF0aFxuICAgIH07XG4gICAgaWYgKHJvdXRlTW9kdWxlKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGRhdGFSb3V0ZSwge1xuICAgICAgICAuLi5kYXRhUm91dGUsXG4gICAgICAgIC4uLmdldFJvdXRlQ29tcG9uZW50cyhyb3V0ZSwgcm91dGVNb2R1bGUsIGlzU3BhTW9kZSksXG4gICAgICAgIGhhbmRsZTogcm91dGVNb2R1bGUuaGFuZGxlLFxuICAgICAgICBzaG91bGRSZXZhbGlkYXRlOiBnZXRTaG91bGRSZXZhbGlkYXRlRnVuY3Rpb24oXG4gICAgICAgICAgcm91dGVNb2R1bGUsXG4gICAgICAgICAgcm91dGUuaWQsXG4gICAgICAgICAgbmVlZHNSZXZhbGlkYXRpb25cbiAgICAgICAgKVxuICAgICAgfSk7XG4gICAgICBsZXQgaGFzSW5pdGlhbERhdGEgPSBpbml0aWFsU3RhdGUgJiYgaW5pdGlhbFN0YXRlLmxvYWRlckRhdGEgJiYgcm91dGUuaWQgaW4gaW5pdGlhbFN0YXRlLmxvYWRlckRhdGE7XG4gICAgICBsZXQgaW5pdGlhbERhdGEgPSBoYXNJbml0aWFsRGF0YSA/IGluaXRpYWxTdGF0ZT8ubG9hZGVyRGF0YT8uW3JvdXRlLmlkXSA6IHZvaWQgMDtcbiAgICAgIGxldCBoYXNJbml0aWFsRXJyb3IgPSBpbml0aWFsU3RhdGUgJiYgaW5pdGlhbFN0YXRlLmVycm9ycyAmJiByb3V0ZS5pZCBpbiBpbml0aWFsU3RhdGUuZXJyb3JzO1xuICAgICAgbGV0IGluaXRpYWxFcnJvciA9IGhhc0luaXRpYWxFcnJvciA/IGluaXRpYWxTdGF0ZT8uZXJyb3JzPy5bcm91dGUuaWRdIDogdm9pZCAwO1xuICAgICAgbGV0IGlzSHlkcmF0aW9uUmVxdWVzdCA9IG5lZWRzUmV2YWxpZGF0aW9uID09IG51bGwgJiYgKHJvdXRlTW9kdWxlLmNsaWVudExvYWRlcj8uaHlkcmF0ZSA9PT0gdHJ1ZSB8fCAhcm91dGUuaGFzTG9hZGVyKTtcbiAgICAgIGRhdGFSb3V0ZS5sb2FkZXIgPSBhc3luYyAoeyByZXF1ZXN0LCBwYXJhbXMgfSwgc2luZ2xlRmV0Y2gpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgcHJlZmV0Y2hTdHlsZXNBbmRDYWxsSGFuZGxlcihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpbnZhcmlhbnQyKFxuICAgICAgICAgICAgICByb3V0ZU1vZHVsZSxcbiAgICAgICAgICAgICAgXCJObyBgcm91dGVNb2R1bGVgIGF2YWlsYWJsZSBmb3IgY3JpdGljYWwtcm91dGUgbG9hZGVyXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIXJvdXRlTW9kdWxlLmNsaWVudExvYWRlcikge1xuICAgICAgICAgICAgICBpZiAoaXNTcGFNb2RlKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIGZldGNoU2VydmVyTG9hZGVyKHNpbmdsZUZldGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByb3V0ZU1vZHVsZS5jbGllbnRMb2FkZXIoe1xuICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgIGFzeW5jIHNlcnZlckxvYWRlcigpIHtcbiAgICAgICAgICAgICAgICBwcmV2ZW50SW52YWxpZFNlcnZlckhhbmRsZXJDYWxsKFwibG9hZGVyXCIsIHJvdXRlLCBpc1NwYU1vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChpc0h5ZHJhdGlvblJlcXVlc3QpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNJbml0aWFsRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5pdGlhbERhdGE7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoaGFzSW5pdGlhbEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGluaXRpYWxFcnJvcjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZldGNoU2VydmVyTG9hZGVyKHNpbmdsZUZldGNoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpc0h5ZHJhdGlvblJlcXVlc3QgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGRhdGFSb3V0ZS5sb2FkZXIuaHlkcmF0ZSA9IHNob3VsZEh5ZHJhdGVSb3V0ZUxvYWRlcihcbiAgICAgICAgcm91dGUsXG4gICAgICAgIHJvdXRlTW9kdWxlLFxuICAgICAgICBpc1NwYU1vZGVcbiAgICAgICk7XG4gICAgICBkYXRhUm91dGUuYWN0aW9uID0gKHsgcmVxdWVzdCwgcGFyYW1zIH0sIHNpbmdsZUZldGNoKSA9PiB7XG4gICAgICAgIHJldHVybiBwcmVmZXRjaFN0eWxlc0FuZENhbGxIYW5kbGVyKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpbnZhcmlhbnQyKFxuICAgICAgICAgICAgcm91dGVNb2R1bGUsXG4gICAgICAgICAgICBcIk5vIGByb3V0ZU1vZHVsZWAgYXZhaWxhYmxlIGZvciBjcml0aWNhbC1yb3V0ZSBhY3Rpb25cIlxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCFyb3V0ZU1vZHVsZS5jbGllbnRBY3Rpb24pIHtcbiAgICAgICAgICAgIGlmIChpc1NwYU1vZGUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbm9BY3Rpb25EZWZpbmVkRXJyb3IoXCJjbGllbnRBY3Rpb25cIiwgcm91dGUuaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZldGNoU2VydmVyQWN0aW9uKHNpbmdsZUZldGNoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJvdXRlTW9kdWxlLmNsaWVudEFjdGlvbih7XG4gICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgYXN5bmMgc2VydmVyQWN0aW9uKCkge1xuICAgICAgICAgICAgICBwcmV2ZW50SW52YWxpZFNlcnZlckhhbmRsZXJDYWxsKFwiYWN0aW9uXCIsIHJvdXRlLCBpc1NwYU1vZGUpO1xuICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJBY3Rpb24oc2luZ2xlRmV0Y2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghcm91dGUuaGFzQ2xpZW50TG9hZGVyKSB7XG4gICAgICAgIGRhdGFSb3V0ZS5sb2FkZXIgPSAoeyByZXF1ZXN0IH0sIHNpbmdsZUZldGNoKSA9PiBwcmVmZXRjaFN0eWxlc0FuZENhbGxIYW5kbGVyKCgpID0+IHtcbiAgICAgICAgICBpZiAoaXNTcGFNb2RlKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICAgICAgICAgIHJldHVybiBmZXRjaFNlcnZlckxvYWRlcihzaW5nbGVGZXRjaCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFyb3V0ZS5oYXNDbGllbnRBY3Rpb24pIHtcbiAgICAgICAgZGF0YVJvdXRlLmFjdGlvbiA9ICh7IHJlcXVlc3QgfSwgc2luZ2xlRmV0Y2gpID0+IHByZWZldGNoU3R5bGVzQW5kQ2FsbEhhbmRsZXIoKCkgPT4ge1xuICAgICAgICAgIGlmIChpc1NwYU1vZGUpIHtcbiAgICAgICAgICAgIHRocm93IG5vQWN0aW9uRGVmaW5lZEVycm9yKFwiY2xpZW50QWN0aW9uXCIsIHJvdXRlLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZldGNoU2VydmVyQWN0aW9uKHNpbmdsZUZldGNoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBkYXRhUm91dGUubGF6eSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgbGV0IG1vZCA9IGF3YWl0IGxvYWRSb3V0ZU1vZHVsZVdpdGhCbG9ja2luZ0xpbmtzKFxuICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgIHJvdXRlTW9kdWxlc0NhY2hlXG4gICAgICAgICk7XG4gICAgICAgIGxldCBsYXp5Um91dGUgPSB7IC4uLm1vZCB9O1xuICAgICAgICBpZiAobW9kLmNsaWVudExvYWRlcikge1xuICAgICAgICAgIGxldCBjbGllbnRMb2FkZXIgPSBtb2QuY2xpZW50TG9hZGVyO1xuICAgICAgICAgIGxhenlSb3V0ZS5sb2FkZXIgPSAoYXJncywgc2luZ2xlRmV0Y2gpID0+IGNsaWVudExvYWRlcih7XG4gICAgICAgICAgICAuLi5hcmdzLFxuICAgICAgICAgICAgYXN5bmMgc2VydmVyTG9hZGVyKCkge1xuICAgICAgICAgICAgICBwcmV2ZW50SW52YWxpZFNlcnZlckhhbmRsZXJDYWxsKFwibG9hZGVyXCIsIHJvdXRlLCBpc1NwYU1vZGUpO1xuICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJMb2FkZXIoc2luZ2xlRmV0Y2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb2QuY2xpZW50QWN0aW9uKSB7XG4gICAgICAgICAgbGV0IGNsaWVudEFjdGlvbiA9IG1vZC5jbGllbnRBY3Rpb247XG4gICAgICAgICAgbGF6eVJvdXRlLmFjdGlvbiA9IChhcmdzLCBzaW5nbGVGZXRjaCkgPT4gY2xpZW50QWN0aW9uKHtcbiAgICAgICAgICAgIC4uLmFyZ3MsXG4gICAgICAgICAgICBhc3luYyBzZXJ2ZXJBY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHByZXZlbnRJbnZhbGlkU2VydmVySGFuZGxlckNhbGwoXCJhY3Rpb25cIiwgcm91dGUsIGlzU3BhTW9kZSk7XG4gICAgICAgICAgICAgIHJldHVybiBmZXRjaFNlcnZlckFjdGlvbihzaW5nbGVGZXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5sYXp5Um91dGUubG9hZGVyID8geyBsb2FkZXI6IGxhenlSb3V0ZS5sb2FkZXIgfSA6IHt9LFxuICAgICAgICAgIC4uLmxhenlSb3V0ZS5hY3Rpb24gPyB7IGFjdGlvbjogbGF6eVJvdXRlLmFjdGlvbiB9IDoge30sXG4gICAgICAgICAgaGFzRXJyb3JCb3VuZGFyeTogbGF6eVJvdXRlLmhhc0Vycm9yQm91bmRhcnksXG4gICAgICAgICAgc2hvdWxkUmV2YWxpZGF0ZTogZ2V0U2hvdWxkUmV2YWxpZGF0ZUZ1bmN0aW9uKFxuICAgICAgICAgICAgbGF6eVJvdXRlLFxuICAgICAgICAgICAgcm91dGUuaWQsXG4gICAgICAgICAgICBuZWVkc1JldmFsaWRhdGlvblxuICAgICAgICAgICksXG4gICAgICAgICAgaGFuZGxlOiBsYXp5Um91dGUuaGFuZGxlLFxuICAgICAgICAgIC8vIE5vIG5lZWQgdG8gd3JhcCB0aGVzZSBpbiBsYXlvdXQgc2luY2UgdGhlIHJvb3Qgcm91dGUgaXMgbmV2ZXJcbiAgICAgICAgICAvLyBsb2FkZWQgdmlhIHJvdXRlLmxhenkoKVxuICAgICAgICAgIENvbXBvbmVudDogbGF6eVJvdXRlLkNvbXBvbmVudCxcbiAgICAgICAgICBFcnJvckJvdW5kYXJ5OiBsYXp5Um91dGUuRXJyb3JCb3VuZGFyeVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGNoaWxkcmVuID0gY3JlYXRlQ2xpZW50Um91dGVzKFxuICAgICAgbWFuaWZlc3QsXG4gICAgICByb3V0ZU1vZHVsZXNDYWNoZSxcbiAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgIGlzU3BhTW9kZSxcbiAgICAgIHJvdXRlLmlkLFxuICAgICAgcm91dGVzQnlQYXJlbnRJZCxcbiAgICAgIG5lZWRzUmV2YWxpZGF0aW9uXG4gICAgKTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMCkgZGF0YVJvdXRlLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgcmV0dXJuIGRhdGFSb3V0ZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBnZXRTaG91bGRSZXZhbGlkYXRlRnVuY3Rpb24ocm91dGUsIHJvdXRlSWQsIG5lZWRzUmV2YWxpZGF0aW9uKSB7XG4gIGlmIChuZWVkc1JldmFsaWRhdGlvbikge1xuICAgIHJldHVybiB3cmFwU2hvdWxkUmV2YWxpZGF0ZUZvckhkcihcbiAgICAgIHJvdXRlSWQsXG4gICAgICByb3V0ZS5zaG91bGRSZXZhbGlkYXRlLFxuICAgICAgbmVlZHNSZXZhbGlkYXRpb25cbiAgICApO1xuICB9XG4gIGlmIChyb3V0ZS5zaG91bGRSZXZhbGlkYXRlKSB7XG4gICAgbGV0IGZuID0gcm91dGUuc2hvdWxkUmV2YWxpZGF0ZTtcbiAgICByZXR1cm4gKG9wdHMpID0+IGZuKHsgLi4ub3B0cywgZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHJvdXRlLnNob3VsZFJldmFsaWRhdGU7XG59XG5mdW5jdGlvbiB3cmFwU2hvdWxkUmV2YWxpZGF0ZUZvckhkcihyb3V0ZUlkLCByb3V0ZVNob3VsZFJldmFsaWRhdGUsIG5lZWRzUmV2YWxpZGF0aW9uKSB7XG4gIGxldCBoYW5kbGVkUmV2YWxpZGF0aW9uID0gZmFsc2U7XG4gIHJldHVybiAoYXJnKSA9PiB7XG4gICAgaWYgKCFoYW5kbGVkUmV2YWxpZGF0aW9uKSB7XG4gICAgICBoYW5kbGVkUmV2YWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZWVkc1JldmFsaWRhdGlvbi5oYXMocm91dGVJZCk7XG4gICAgfVxuICAgIHJldHVybiByb3V0ZVNob3VsZFJldmFsaWRhdGUgPyByb3V0ZVNob3VsZFJldmFsaWRhdGUoYXJnKSA6IGFyZy5kZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTtcbiAgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGxvYWRSb3V0ZU1vZHVsZVdpdGhCbG9ja2luZ0xpbmtzKHJvdXRlLCByb3V0ZU1vZHVsZXMpIHtcbiAgbGV0IHJvdXRlTW9kdWxlID0gYXdhaXQgbG9hZFJvdXRlTW9kdWxlKHJvdXRlLCByb3V0ZU1vZHVsZXMpO1xuICBhd2FpdCBwcmVmZXRjaFN0eWxlTGlua3Mocm91dGUsIHJvdXRlTW9kdWxlKTtcbiAgcmV0dXJuIHtcbiAgICBDb21wb25lbnQ6IGdldFJvdXRlTW9kdWxlQ29tcG9uZW50KHJvdXRlTW9kdWxlKSxcbiAgICBFcnJvckJvdW5kYXJ5OiByb3V0ZU1vZHVsZS5FcnJvckJvdW5kYXJ5LFxuICAgIGNsaWVudEFjdGlvbjogcm91dGVNb2R1bGUuY2xpZW50QWN0aW9uLFxuICAgIGNsaWVudExvYWRlcjogcm91dGVNb2R1bGUuY2xpZW50TG9hZGVyLFxuICAgIGhhbmRsZTogcm91dGVNb2R1bGUuaGFuZGxlLFxuICAgIGxpbmtzOiByb3V0ZU1vZHVsZS5saW5rcyxcbiAgICBtZXRhOiByb3V0ZU1vZHVsZS5tZXRhLFxuICAgIHNob3VsZFJldmFsaWRhdGU6IHJvdXRlTW9kdWxlLnNob3VsZFJldmFsaWRhdGVcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJvdXRlTW9kdWxlQ29tcG9uZW50KHJvdXRlTW9kdWxlKSB7XG4gIGlmIChyb3V0ZU1vZHVsZS5kZWZhdWx0ID09IG51bGwpIHJldHVybiB2b2lkIDA7XG4gIGxldCBpc0VtcHR5T2JqZWN0ID0gdHlwZW9mIHJvdXRlTW9kdWxlLmRlZmF1bHQgPT09IFwib2JqZWN0XCIgJiYgT2JqZWN0LmtleXMocm91dGVNb2R1bGUuZGVmYXVsdCkubGVuZ3RoID09PSAwO1xuICBpZiAoIWlzRW1wdHlPYmplY3QpIHtcbiAgICByZXR1cm4gcm91dGVNb2R1bGUuZGVmYXVsdDtcbiAgfVxufVxuZnVuY3Rpb24gc2hvdWxkSHlkcmF0ZVJvdXRlTG9hZGVyKHJvdXRlLCByb3V0ZU1vZHVsZSwgaXNTcGFNb2RlKSB7XG4gIHJldHVybiBpc1NwYU1vZGUgJiYgcm91dGUuaWQgIT09IFwicm9vdFwiIHx8IHJvdXRlTW9kdWxlLmNsaWVudExvYWRlciAhPSBudWxsICYmIChyb3V0ZU1vZHVsZS5jbGllbnRMb2FkZXIuaHlkcmF0ZSA9PT0gdHJ1ZSB8fCByb3V0ZS5oYXNMb2FkZXIgIT09IHRydWUpO1xufVxuXG4vLyBsaWIvZG9tL3Nzci9mb2ctb2Ytd2FyLnRzXG52YXIgbmV4dFBhdGhzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbnZhciBkaXNjb3ZlcmVkUGF0aHNNYXhTaXplID0gMWUzO1xudmFyIGRpc2NvdmVyZWRQYXRocyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG52YXIgVVJMX0xJTUlUID0gNzY4MDtcbmZ1bmN0aW9uIGlzRm9nT2ZXYXJFbmFibGVkKGlzU3BhTW9kZSkge1xuICByZXR1cm4gIWlzU3BhTW9kZTtcbn1cbmZ1bmN0aW9uIGdldFBhcnRpYWxNYW5pZmVzdChtYW5pZmVzdCwgcm91dGVyKSB7XG4gIGxldCByb3V0ZUlkcyA9IG5ldyBTZXQocm91dGVyLnN0YXRlLm1hdGNoZXMubWFwKChtKSA9PiBtLnJvdXRlLmlkKSk7XG4gIGxldCBzZWdtZW50cyA9IHJvdXRlci5zdGF0ZS5sb2NhdGlvbi5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pO1xuICBsZXQgcGF0aHMgPSBbXCIvXCJdO1xuICBzZWdtZW50cy5wb3AoKTtcbiAgd2hpbGUgKHNlZ21lbnRzLmxlbmd0aCA+IDApIHtcbiAgICBwYXRocy5wdXNoKGAvJHtzZWdtZW50cy5qb2luKFwiL1wiKX1gKTtcbiAgICBzZWdtZW50cy5wb3AoKTtcbiAgfVxuICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhyb3V0ZXIucm91dGVzLCBwYXRoLCByb3V0ZXIuYmFzZW5hbWUpO1xuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICBtYXRjaGVzLmZvckVhY2goKG0pID0+IHJvdXRlSWRzLmFkZChtLnJvdXRlLmlkKSk7XG4gICAgfVxuICB9KTtcbiAgbGV0IGluaXRpYWxSb3V0ZXMgPSBbLi4ucm91dGVJZHNdLnJlZHVjZShcbiAgICAoYWNjLCBpZCkgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2lkXTogbWFuaWZlc3Qucm91dGVzW2lkXSB9KSxcbiAgICB7fVxuICApO1xuICByZXR1cm4ge1xuICAgIC4uLm1hbmlmZXN0LFxuICAgIHJvdXRlczogaW5pdGlhbFJvdXRlc1xuICB9O1xufVxuZnVuY3Rpb24gZ2V0UGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb25GdW5jdGlvbihtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCBpc1NwYU1vZGUsIGJhc2VuYW1lKSB7XG4gIGlmICghaXNGb2dPZldhckVuYWJsZWQoaXNTcGFNb2RlKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIGFzeW5jICh7IHBhdGgsIHBhdGNoIH0pID0+IHtcbiAgICBpZiAoZGlzY292ZXJlZFBhdGhzLmhhcyhwYXRoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCBmZXRjaEFuZEFwcGx5TWFuaWZlc3RQYXRjaGVzKFxuICAgICAgW3BhdGhdLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICBpc1NwYU1vZGUsXG4gICAgICBiYXNlbmFtZSxcbiAgICAgIHBhdGNoXG4gICAgKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIHVzZUZvZ09GV2FyRGlzY292ZXJ5KHJvdXRlciwgbWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgaXNTcGFNb2RlKSB7XG4gIFJlYWN0OC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNGb2dPZldhckVuYWJsZWQoaXNTcGFNb2RlKSB8fCBuYXZpZ2F0b3IuY29ubmVjdGlvbj8uc2F2ZURhdGEgPT09IHRydWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVnaXN0ZXJFbGVtZW50KGVsKSB7XG4gICAgICBsZXQgcGF0aCA9IGVsLnRhZ05hbWUgPT09IFwiRk9STVwiID8gZWwuZ2V0QXR0cmlidXRlKFwiYWN0aW9uXCIpIDogZWwuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKTtcbiAgICAgIGlmICghcGF0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgdXJsID0gbmV3IFVSTChwYXRoLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgICAgIGlmICghZGlzY292ZXJlZFBhdGhzLmhhcyh1cmwucGF0aG5hbWUpKSB7XG4gICAgICAgIG5leHRQYXRocy5hZGQodXJsLnBhdGhuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQYXRjaGVzKCkge1xuICAgICAgbGV0IGxhenlQYXRocyA9IEFycmF5LmZyb20obmV4dFBhdGhzLmtleXMoKSkuZmlsdGVyKChwYXRoKSA9PiB7XG4gICAgICAgIGlmIChkaXNjb3ZlcmVkUGF0aHMuaGFzKHBhdGgpKSB7XG4gICAgICAgICAgbmV4dFBhdGhzLmRlbGV0ZShwYXRoKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICAgIGlmIChsYXp5UGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZldGNoQW5kQXBwbHlNYW5pZmVzdFBhdGNoZXMoXG4gICAgICAgICAgbGF6eVBhdGhzLFxuICAgICAgICAgIG1hbmlmZXN0LFxuICAgICAgICAgIHJvdXRlTW9kdWxlcyxcbiAgICAgICAgICBpc1NwYU1vZGUsXG4gICAgICAgICAgcm91dGVyLmJhc2VuYW1lLFxuICAgICAgICAgIHJvdXRlci5wYXRjaFJvdXRlc1xuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGZldGNoIG1hbmlmZXN0IHBhdGNoZXNcIiwgZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbChcImFbZGF0YS1kaXNjb3Zlcl0sIGZvcm1bZGF0YS1kaXNjb3Zlcl1cIikuZm9yRWFjaCgoZWwpID0+IHJlZ2lzdGVyRWxlbWVudChlbCkpO1xuICAgIGZldGNoUGF0Y2hlcygpO1xuICAgIGxldCBkZWJvdW5jZWRGZXRjaFBhdGNoZXMgPSBkZWJvdW5jZShmZXRjaFBhdGNoZXMsIDEwMCk7XG4gICAgZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERTtcbiAgICB9XG4gICAgbGV0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHJlY29yZHMpID0+IHtcbiAgICAgIGxldCBlbGVtZW50cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgICByZWNvcmRzLmZvckVhY2goKHIpID0+IHtcbiAgICAgICAgW3IudGFyZ2V0LCAuLi5yLmFkZGVkTm9kZXNdLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAoIWlzRWxlbWVudChub2RlKSkgcmV0dXJuO1xuICAgICAgICAgIGlmIChub2RlLnRhZ05hbWUgPT09IFwiQVwiICYmIG5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YS1kaXNjb3ZlclwiKSkge1xuICAgICAgICAgICAgZWxlbWVudHMuYWRkKG5vZGUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS50YWdOYW1lID09PSBcIkZPUk1cIiAmJiBub2RlLmdldEF0dHJpYnV0ZShcImRhdGEtZGlzY292ZXJcIikpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLmFkZChub2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5vZGUudGFnTmFtZSAhPT0gXCJBXCIpIHtcbiAgICAgICAgICAgIG5vZGUucXVlcnlTZWxlY3RvckFsbChcImFbZGF0YS1kaXNjb3Zlcl0sIGZvcm1bZGF0YS1kaXNjb3Zlcl1cIikuZm9yRWFjaCgoZWwpID0+IGVsZW1lbnRzLmFkZChlbCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsKSA9PiByZWdpc3RlckVsZW1lbnQoZWwpKTtcbiAgICAgIGRlYm91bmNlZEZldGNoUGF0Y2hlcygpO1xuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogW1wiZGF0YS1kaXNjb3ZlclwiLCBcImhyZWZcIiwgXCJhY3Rpb25cIl1cbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9LCBbaXNTcGFNb2RlLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCByb3V0ZXJdKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQW5kQXBwbHlNYW5pZmVzdFBhdGNoZXMocGF0aHMsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIGlzU3BhTW9kZSwgYmFzZW5hbWUsIHBhdGNoUm91dGVzKSB7XG4gIGxldCBtYW5pZmVzdFBhdGggPSBgJHtiYXNlbmFtZSAhPSBudWxsID8gYmFzZW5hbWUgOiBcIi9cIn0vX19tYW5pZmVzdGAucmVwbGFjZShcbiAgICAvXFwvKy9nLFxuICAgIFwiL1wiXG4gICk7XG4gIGxldCB1cmwgPSBuZXcgVVJMKG1hbmlmZXN0UGF0aCwgd2luZG93LmxvY2F0aW9uLm9yaWdpbik7XG4gIHBhdGhzLnNvcnQoKS5mb3JFYWNoKChwYXRoKSA9PiB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcInBcIiwgcGF0aCkpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcInZlcnNpb25cIiwgbWFuaWZlc3QudmVyc2lvbik7XG4gIGlmICh1cmwudG9TdHJpbmcoKS5sZW5ndGggPiBVUkxfTElNSVQpIHtcbiAgICBuZXh0UGF0aHMuY2xlYXIoKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHJlcyA9IGF3YWl0IGZldGNoKHVybCk7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke3Jlcy5zdGF0dXN9ICR7cmVzLnN0YXR1c1RleHR9YCk7XG4gIH0gZWxzZSBpZiAocmVzLnN0YXR1cyA+PSA0MDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYXdhaXQgcmVzLnRleHQoKSk7XG4gIH1cbiAgbGV0IHNlcnZlclBhdGNoZXMgPSBhd2FpdCByZXMuanNvbigpO1xuICBsZXQga25vd25Sb3V0ZXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKG1hbmlmZXN0LnJvdXRlcykpO1xuICBsZXQgcGF0Y2hlcyA9IE9iamVjdC52YWx1ZXMoc2VydmVyUGF0Y2hlcykucmVkdWNlKChhY2MsIHJvdXRlKSA9PiB7XG4gICAgaWYgKHJvdXRlICYmICFrbm93blJvdXRlcy5oYXMocm91dGUuaWQpKSB7XG4gICAgICBhY2Nbcm91dGUuaWRdID0gcm91dGU7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgT2JqZWN0LmFzc2lnbihtYW5pZmVzdC5yb3V0ZXMsIHBhdGNoZXMpO1xuICBwYXRocy5mb3JFYWNoKChwKSA9PiBhZGRUb0ZpZm9RdWV1ZShwLCBkaXNjb3ZlcmVkUGF0aHMpKTtcbiAgbGV0IHBhcmVudElkcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIE9iamVjdC52YWx1ZXMocGF0Y2hlcykuZm9yRWFjaCgocGF0Y2gpID0+IHtcbiAgICBpZiAocGF0Y2ggJiYgKCFwYXRjaC5wYXJlbnRJZCB8fCAhcGF0Y2hlc1twYXRjaC5wYXJlbnRJZF0pKSB7XG4gICAgICBwYXJlbnRJZHMuYWRkKHBhdGNoLnBhcmVudElkKTtcbiAgICB9XG4gIH0pO1xuICBwYXJlbnRJZHMuZm9yRWFjaChcbiAgICAocGFyZW50SWQpID0+IHBhdGNoUm91dGVzKFxuICAgICAgcGFyZW50SWQgfHwgbnVsbCxcbiAgICAgIGNyZWF0ZUNsaWVudFJvdXRlcyhwYXRjaGVzLCByb3V0ZU1vZHVsZXMsIG51bGwsIGlzU3BhTW9kZSwgcGFyZW50SWQpXG4gICAgKVxuICApO1xufVxuZnVuY3Rpb24gYWRkVG9GaWZvUXVldWUocGF0aCwgcXVldWUpIHtcbiAgaWYgKHF1ZXVlLnNpemUgPj0gZGlzY292ZXJlZFBhdGhzTWF4U2l6ZSkge1xuICAgIGxldCBmaXJzdCA9IHF1ZXVlLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcbiAgICBxdWV1ZS5kZWxldGUoZmlyc3QpO1xuICB9XG4gIHF1ZXVlLmFkZChwYXRoKTtcbn1cbmZ1bmN0aW9uIGRlYm91bmNlKGNhbGxiYWNrLCB3YWl0KSB7XG4gIGxldCB0aW1lb3V0SWQ7XG4gIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICB0aW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBjYWxsYmFjayguLi5hcmdzKSwgd2FpdCk7XG4gIH07XG59XG5cbi8vIGxpYi9kb20vc3NyL2NvbXBvbmVudHMudHN4XG5mdW5jdGlvbiB1c2VEYXRhUm91dGVyQ29udGV4dDIoKSB7XG4gIGxldCBjb250ZXh0ID0gUmVhY3Q5LnVzZUNvbnRleHQoRGF0YVJvdXRlckNvbnRleHQpO1xuICBpbnZhcmlhbnQyKFxuICAgIGNvbnRleHQsXG4gICAgXCJZb3UgbXVzdCByZW5kZXIgdGhpcyBlbGVtZW50IGluc2lkZSBhIDxEYXRhUm91dGVyQ29udGV4dC5Qcm92aWRlcj4gZWxlbWVudFwiXG4gICk7XG4gIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gdXNlRGF0YVJvdXRlclN0YXRlQ29udGV4dCgpIHtcbiAgbGV0IGNvbnRleHQgPSBSZWFjdDkudXNlQ29udGV4dChEYXRhUm91dGVyU3RhdGVDb250ZXh0KTtcbiAgaW52YXJpYW50MihcbiAgICBjb250ZXh0LFxuICAgIFwiWW91IG11c3QgcmVuZGVyIHRoaXMgZWxlbWVudCBpbnNpZGUgYSA8RGF0YVJvdXRlclN0YXRlQ29udGV4dC5Qcm92aWRlcj4gZWxlbWVudFwiXG4gICk7XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIEZyYW1ld29ya0NvbnRleHQgPSBSZWFjdDkuY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuRnJhbWV3b3JrQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiRnJhbWV3b3JrQ29udGV4dFwiO1xuZnVuY3Rpb24gdXNlRnJhbWV3b3JrQ29udGV4dCgpIHtcbiAgbGV0IGNvbnRleHQgPSBSZWFjdDkudXNlQ29udGV4dChGcmFtZXdvcmtDb250ZXh0KTtcbiAgaW52YXJpYW50MihcbiAgICBjb250ZXh0LFxuICAgIFwiWW91IG11c3QgcmVuZGVyIHRoaXMgZWxlbWVudCBpbnNpZGUgYSA8SHlkcmF0ZWRSb3V0ZXI+IGVsZW1lbnRcIlxuICApO1xuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIHVzZVByZWZldGNoQmVoYXZpb3IocHJlZmV0Y2gsIHRoZWlyRWxlbWVudFByb3BzKSB7XG4gIGxldCBmcmFtZXdvcmtDb250ZXh0ID0gUmVhY3Q5LnVzZUNvbnRleHQoRnJhbWV3b3JrQ29udGV4dCk7XG4gIGxldCBbbWF5YmVQcmVmZXRjaCwgc2V0TWF5YmVQcmVmZXRjaF0gPSBSZWFjdDkudXNlU3RhdGUoZmFsc2UpO1xuICBsZXQgW3Nob3VsZFByZWZldGNoLCBzZXRTaG91bGRQcmVmZXRjaF0gPSBSZWFjdDkudXNlU3RhdGUoZmFsc2UpO1xuICBsZXQgeyBvbkZvY3VzLCBvbkJsdXIsIG9uTW91c2VFbnRlciwgb25Nb3VzZUxlYXZlLCBvblRvdWNoU3RhcnQgfSA9IHRoZWlyRWxlbWVudFByb3BzO1xuICBsZXQgcmVmID0gUmVhY3Q5LnVzZVJlZihudWxsKTtcbiAgUmVhY3Q5LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByZWZldGNoID09PSBcInJlbmRlclwiKSB7XG4gICAgICBzZXRTaG91bGRQcmVmZXRjaCh0cnVlKTtcbiAgICB9XG4gICAgaWYgKHByZWZldGNoID09PSBcInZpZXdwb3J0XCIpIHtcbiAgICAgIGxldCBjYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgICBzZXRTaG91bGRQcmVmZXRjaChlbnRyeS5pc0ludGVyc2VjdGluZyk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGxldCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgeyB0aHJlc2hvbGQ6IDAuNSB9KTtcbiAgICAgIGlmIChyZWYuY3VycmVudCkgb2JzZXJ2ZXIub2JzZXJ2ZShyZWYuY3VycmVudCk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW3ByZWZldGNoXSk7XG4gIFJlYWN0OS51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtYXliZVByZWZldGNoKSB7XG4gICAgICBsZXQgaWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2hvdWxkUHJlZmV0Y2godHJ1ZSk7XG4gICAgICB9LCAxMDApO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGlkKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbbWF5YmVQcmVmZXRjaF0pO1xuICBsZXQgc2V0SW50ZW50ID0gKCkgPT4ge1xuICAgIHNldE1heWJlUHJlZmV0Y2godHJ1ZSk7XG4gIH07XG4gIGxldCBjYW5jZWxJbnRlbnQgPSAoKSA9PiB7XG4gICAgc2V0TWF5YmVQcmVmZXRjaChmYWxzZSk7XG4gICAgc2V0U2hvdWxkUHJlZmV0Y2goZmFsc2UpO1xuICB9O1xuICBpZiAoIWZyYW1ld29ya0NvbnRleHQpIHtcbiAgICByZXR1cm4gW2ZhbHNlLCByZWYsIHt9XTtcbiAgfVxuICBpZiAocHJlZmV0Y2ggIT09IFwiaW50ZW50XCIpIHtcbiAgICByZXR1cm4gW3Nob3VsZFByZWZldGNoLCByZWYsIHt9XTtcbiAgfVxuICByZXR1cm4gW1xuICAgIHNob3VsZFByZWZldGNoLFxuICAgIHJlZixcbiAgICB7XG4gICAgICBvbkZvY3VzOiBjb21wb3NlRXZlbnRIYW5kbGVycyhvbkZvY3VzLCBzZXRJbnRlbnQpLFxuICAgICAgb25CbHVyOiBjb21wb3NlRXZlbnRIYW5kbGVycyhvbkJsdXIsIGNhbmNlbEludGVudCksXG4gICAgICBvbk1vdXNlRW50ZXI6IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uTW91c2VFbnRlciwgc2V0SW50ZW50KSxcbiAgICAgIG9uTW91c2VMZWF2ZTogY29tcG9zZUV2ZW50SGFuZGxlcnMob25Nb3VzZUxlYXZlLCBjYW5jZWxJbnRlbnQpLFxuICAgICAgb25Ub3VjaFN0YXJ0OiBjb21wb3NlRXZlbnRIYW5kbGVycyhvblRvdWNoU3RhcnQsIHNldEludGVudClcbiAgICB9XG4gIF07XG59XG5mdW5jdGlvbiBjb21wb3NlRXZlbnRIYW5kbGVycyh0aGVpckhhbmRsZXIsIG91ckhhbmRsZXIpIHtcbiAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgIHRoZWlySGFuZGxlciAmJiB0aGVpckhhbmRsZXIoZXZlbnQpO1xuICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgb3VySGFuZGxlcihldmVudCk7XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0QWN0aXZlTWF0Y2hlcyhtYXRjaGVzLCBlcnJvcnMsIGlzU3BhTW9kZSkge1xuICBpZiAoaXNTcGFNb2RlICYmICFpc0h5ZHJhdGVkKSB7XG4gICAgcmV0dXJuIFttYXRjaGVzWzBdXTtcbiAgfVxuICBpZiAoZXJyb3JzKSB7XG4gICAgbGV0IGVycm9ySWR4ID0gbWF0Y2hlcy5maW5kSW5kZXgoKG0pID0+IGVycm9yc1ttLnJvdXRlLmlkXSAhPT0gdm9pZCAwKTtcbiAgICByZXR1cm4gbWF0Y2hlcy5zbGljZSgwLCBlcnJvcklkeCArIDEpO1xuICB9XG4gIHJldHVybiBtYXRjaGVzO1xufVxuZnVuY3Rpb24gTGlua3MoKSB7XG4gIGxldCB7IGlzU3BhTW9kZSwgbWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgY3JpdGljYWxDc3MgfSA9IHVzZUZyYW1ld29ya0NvbnRleHQoKTtcbiAgbGV0IHsgZXJyb3JzLCBtYXRjaGVzOiByb3V0ZXJNYXRjaGVzIH0gPSB1c2VEYXRhUm91dGVyU3RhdGVDb250ZXh0KCk7XG4gIGxldCBtYXRjaGVzID0gZ2V0QWN0aXZlTWF0Y2hlcyhyb3V0ZXJNYXRjaGVzLCBlcnJvcnMsIGlzU3BhTW9kZSk7XG4gIGxldCBrZXllZExpbmtzID0gUmVhY3Q5LnVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0S2V5ZWRMaW5rc0Zvck1hdGNoZXMobWF0Y2hlcywgcm91dGVNb2R1bGVzLCBtYW5pZmVzdCksXG4gICAgW21hdGNoZXMsIHJvdXRlTW9kdWxlcywgbWFuaWZlc3RdXG4gICk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoUmVhY3Q5LkZyYWdtZW50LCBudWxsLCBjcml0aWNhbENzcyA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHsgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHsgX19odG1sOiBjcml0aWNhbENzcyB9IH0pIDogbnVsbCwga2V5ZWRMaW5rcy5tYXAoXG4gICAgKHsga2V5LCBsaW5rIH0pID0+IGlzUGFnZUxpbmtEZXNjcmlwdG9yKGxpbmspID8gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFByZWZldGNoUGFnZUxpbmtzLCB7IGtleSwgLi4ubGluayB9KSA6IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcImxpbmtcIiwgeyBrZXksIC4uLmxpbmsgfSlcbiAgKSk7XG59XG5mdW5jdGlvbiBQcmVmZXRjaFBhZ2VMaW5rcyh7XG4gIHBhZ2UsXG4gIC4uLmRhdGFMaW5rUHJvcHNcbn0pIHtcbiAgbGV0IHsgcm91dGVyIH0gPSB1c2VEYXRhUm91dGVyQ29udGV4dDIoKTtcbiAgbGV0IG1hdGNoZXMgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBtYXRjaFJvdXRlcyhyb3V0ZXIucm91dGVzLCBwYWdlLCByb3V0ZXIuYmFzZW5hbWUpLFxuICAgIFtyb3V0ZXIucm91dGVzLCBwYWdlLCByb3V0ZXIuYmFzZW5hbWVdXG4gICk7XG4gIGlmICghbWF0Y2hlcykge1xuICAgIGNvbnNvbGUud2FybihgVHJpZWQgdG8gcHJlZmV0Y2ggJHtwYWdlfSBidXQgbm8gcm91dGVzIG1hdGNoZWQuYCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChQcmVmZXRjaFBhZ2VMaW5rc0ltcGwsIHsgcGFnZSwgbWF0Y2hlcywgLi4uZGF0YUxpbmtQcm9wcyB9KTtcbn1cbmZ1bmN0aW9uIHVzZUtleWVkUHJlZmV0Y2hMaW5rcyhtYXRjaGVzKSB7XG4gIGxldCB7IG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMgfSA9IHVzZUZyYW1ld29ya0NvbnRleHQoKTtcbiAgbGV0IFtrZXllZFByZWZldGNoTGlua3MsIHNldEtleWVkUHJlZmV0Y2hMaW5rc10gPSBSZWFjdDkudXNlU3RhdGUoW10pO1xuICBSZWFjdDkudXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaW50ZXJydXB0ZWQgPSBmYWxzZTtcbiAgICB2b2lkIGdldEtleWVkUHJlZmV0Y2hMaW5rcyhtYXRjaGVzLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzKS50aGVuKFxuICAgICAgKGxpbmtzKSA9PiB7XG4gICAgICAgIGlmICghaW50ZXJydXB0ZWQpIHtcbiAgICAgICAgICBzZXRLZXllZFByZWZldGNoTGlua3MobGlua3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaW50ZXJydXB0ZWQgPSB0cnVlO1xuICAgIH07XG4gIH0sIFttYXRjaGVzLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzXSk7XG4gIHJldHVybiBrZXllZFByZWZldGNoTGlua3M7XG59XG5mdW5jdGlvbiBQcmVmZXRjaFBhZ2VMaW5rc0ltcGwoe1xuICBwYWdlLFxuICBtYXRjaGVzOiBuZXh0TWF0Y2hlcyxcbiAgLi4ubGlua1Byb3BzXG59KSB7XG4gIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCB7IG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMgfSA9IHVzZUZyYW1ld29ya0NvbnRleHQoKTtcbiAgbGV0IHsgbG9hZGVyRGF0YSwgbWF0Y2hlcyB9ID0gdXNlRGF0YVJvdXRlclN0YXRlQ29udGV4dCgpO1xuICBsZXQgbmV3TWF0Y2hlc0ZvckRhdGEgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBnZXROZXdNYXRjaGVzRm9yTGlua3MoXG4gICAgICBwYWdlLFxuICAgICAgbmV4dE1hdGNoZXMsXG4gICAgICBtYXRjaGVzLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIFwiZGF0YVwiXG4gICAgKSxcbiAgICBbcGFnZSwgbmV4dE1hdGNoZXMsIG1hdGNoZXMsIG1hbmlmZXN0LCBsb2NhdGlvbl1cbiAgKTtcbiAgbGV0IG5ld01hdGNoZXNGb3JBc3NldHMgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBnZXROZXdNYXRjaGVzRm9yTGlua3MoXG4gICAgICBwYWdlLFxuICAgICAgbmV4dE1hdGNoZXMsXG4gICAgICBtYXRjaGVzLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIFwiYXNzZXRzXCJcbiAgICApLFxuICAgIFtwYWdlLCBuZXh0TWF0Y2hlcywgbWF0Y2hlcywgbWFuaWZlc3QsIGxvY2F0aW9uXVxuICApO1xuICBsZXQgZGF0YUhyZWZzID0gUmVhY3Q5LnVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChwYWdlID09PSBsb2NhdGlvbi5wYXRobmFtZSArIGxvY2F0aW9uLnNlYXJjaCArIGxvY2F0aW9uLmhhc2gpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbGV0IHJvdXRlc1BhcmFtcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgbGV0IGZvdW5kT3B0T3V0Um91dGUgPSBmYWxzZTtcbiAgICBuZXh0TWF0Y2hlcy5mb3JFYWNoKChtKSA9PiB7XG4gICAgICBsZXQgbWFuaWZlc3RSb3V0ZSA9IG1hbmlmZXN0LnJvdXRlc1ttLnJvdXRlLmlkXTtcbiAgICAgIGlmICghbWFuaWZlc3RSb3V0ZSB8fCAhbWFuaWZlc3RSb3V0ZS5oYXNMb2FkZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFuZXdNYXRjaGVzRm9yRGF0YS5zb21lKChtMikgPT4gbTIucm91dGUuaWQgPT09IG0ucm91dGUuaWQpICYmIG0ucm91dGUuaWQgaW4gbG9hZGVyRGF0YSAmJiByb3V0ZU1vZHVsZXNbbS5yb3V0ZS5pZF0/LnNob3VsZFJldmFsaWRhdGUpIHtcbiAgICAgICAgZm91bmRPcHRPdXRSb3V0ZSA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKG1hbmlmZXN0Um91dGUuaGFzQ2xpZW50TG9hZGVyKSB7XG4gICAgICAgIGZvdW5kT3B0T3V0Um91dGUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm91dGVzUGFyYW1zLmFkZChtLnJvdXRlLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocm91dGVzUGFyYW1zLnNpemUgPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbGV0IHVybCA9IHNpbmdsZUZldGNoVXJsKHBhZ2UpO1xuICAgIGlmIChmb3VuZE9wdE91dFJvdXRlICYmIHJvdXRlc1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXG4gICAgICAgIFwiX3JvdXRlc1wiLFxuICAgICAgICBuZXh0TWF0Y2hlcy5maWx0ZXIoKG0pID0+IHJvdXRlc1BhcmFtcy5oYXMobS5yb3V0ZS5pZCkpLm1hcCgobSkgPT4gbS5yb3V0ZS5pZCkuam9pbihcIixcIilcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBbdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaF07XG4gIH0sIFtcbiAgICBsb2FkZXJEYXRhLFxuICAgIGxvY2F0aW9uLFxuICAgIG1hbmlmZXN0LFxuICAgIG5ld01hdGNoZXNGb3JEYXRhLFxuICAgIG5leHRNYXRjaGVzLFxuICAgIHBhZ2UsXG4gICAgcm91dGVNb2R1bGVzXG4gIF0pO1xuICBsZXQgbW9kdWxlSHJlZnMgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBnZXRNb2R1bGVMaW5rSHJlZnMobmV3TWF0Y2hlc0ZvckFzc2V0cywgbWFuaWZlc3QpLFxuICAgIFtuZXdNYXRjaGVzRm9yQXNzZXRzLCBtYW5pZmVzdF1cbiAgKTtcbiAgbGV0IGtleWVkUHJlZmV0Y2hMaW5rcyA9IHVzZUtleWVkUHJlZmV0Y2hMaW5rcyhuZXdNYXRjaGVzRm9yQXNzZXRzKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChSZWFjdDkuRnJhZ21lbnQsIG51bGwsIGRhdGFIcmVmcy5tYXAoKGhyZWYpID0+IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcImxpbmtcIiwgeyBrZXk6IGhyZWYsIHJlbDogXCJwcmVmZXRjaFwiLCBhczogXCJmZXRjaFwiLCBocmVmLCAuLi5saW5rUHJvcHMgfSkpLCBtb2R1bGVIcmVmcy5tYXAoKGhyZWYpID0+IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcImxpbmtcIiwgeyBrZXk6IGhyZWYsIHJlbDogXCJtb2R1bGVwcmVsb2FkXCIsIGhyZWYsIC4uLmxpbmtQcm9wcyB9KSksIGtleWVkUHJlZmV0Y2hMaW5rcy5tYXAoKHsga2V5LCBsaW5rIH0pID0+IChcbiAgICAvLyB0aGVzZSBkb24ndCBzcHJlYWQgYGxpbmtQcm9wc2AgYmVjYXVzZSB0aGV5IGFyZSBmdWxsIGxpbmsgZGVzY3JpcHRvcnNcbiAgICAvLyBhbHJlYWR5IHdpdGggdGhlaXIgb3duIHByb3BzXG4gICAgLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7IGtleSwgLi4ubGluayB9KVxuICApKSk7XG59XG5mdW5jdGlvbiBNZXRhKCkge1xuICBsZXQgeyBpc1NwYU1vZGUsIHJvdXRlTW9kdWxlcyB9ID0gdXNlRnJhbWV3b3JrQ29udGV4dCgpO1xuICBsZXQge1xuICAgIGVycm9ycyxcbiAgICBtYXRjaGVzOiByb3V0ZXJNYXRjaGVzLFxuICAgIGxvYWRlckRhdGFcbiAgfSA9IHVzZURhdGFSb3V0ZXJTdGF0ZUNvbnRleHQoKTtcbiAgbGV0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IF9tYXRjaGVzID0gZ2V0QWN0aXZlTWF0Y2hlcyhyb3V0ZXJNYXRjaGVzLCBlcnJvcnMsIGlzU3BhTW9kZSk7XG4gIGxldCBlcnJvciA9IG51bGw7XG4gIGlmIChlcnJvcnMpIHtcbiAgICBlcnJvciA9IGVycm9yc1tfbWF0Y2hlc1tfbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5pZF07XG4gIH1cbiAgbGV0IG1ldGEgPSBbXTtcbiAgbGV0IGxlYWZNZXRhID0gbnVsbDtcbiAgbGV0IG1hdGNoZXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBfbWF0Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBfbWF0Y2ggPSBfbWF0Y2hlc1tpXTtcbiAgICBsZXQgcm91dGVJZCA9IF9tYXRjaC5yb3V0ZS5pZDtcbiAgICBsZXQgZGF0YTIgPSBsb2FkZXJEYXRhW3JvdXRlSWRdO1xuICAgIGxldCBwYXJhbXMgPSBfbWF0Y2gucGFyYW1zO1xuICAgIGxldCByb3V0ZU1vZHVsZSA9IHJvdXRlTW9kdWxlc1tyb3V0ZUlkXTtcbiAgICBsZXQgcm91dGVNZXRhID0gW107XG4gICAgbGV0IG1hdGNoID0ge1xuICAgICAgaWQ6IHJvdXRlSWQsXG4gICAgICBkYXRhOiBkYXRhMixcbiAgICAgIG1ldGE6IFtdLFxuICAgICAgcGFyYW1zOiBfbWF0Y2gucGFyYW1zLFxuICAgICAgcGF0aG5hbWU6IF9tYXRjaC5wYXRobmFtZSxcbiAgICAgIGhhbmRsZTogX21hdGNoLnJvdXRlLmhhbmRsZSxcbiAgICAgIGVycm9yXG4gICAgfTtcbiAgICBtYXRjaGVzW2ldID0gbWF0Y2g7XG4gICAgaWYgKHJvdXRlTW9kdWxlPy5tZXRhKSB7XG4gICAgICByb3V0ZU1ldGEgPSB0eXBlb2Ygcm91dGVNb2R1bGUubWV0YSA9PT0gXCJmdW5jdGlvblwiID8gcm91dGVNb2R1bGUubWV0YSh7XG4gICAgICAgIGRhdGE6IGRhdGEyLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBlcnJvclxuICAgICAgfSkgOiBBcnJheS5pc0FycmF5KHJvdXRlTW9kdWxlLm1ldGEpID8gWy4uLnJvdXRlTW9kdWxlLm1ldGFdIDogcm91dGVNb2R1bGUubWV0YTtcbiAgICB9IGVsc2UgaWYgKGxlYWZNZXRhKSB7XG4gICAgICByb3V0ZU1ldGEgPSBbLi4ubGVhZk1ldGFdO1xuICAgIH1cbiAgICByb3V0ZU1ldGEgPSByb3V0ZU1ldGEgfHwgW107XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJvdXRlTWV0YSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUaGUgcm91dGUgYXQgXCIgKyBfbWF0Y2gucm91dGUucGF0aCArIFwiIHJldHVybnMgYW4gaW52YWxpZCB2YWx1ZS4gQWxsIHJvdXRlIG1ldGEgZnVuY3Rpb25zIG11c3QgcmV0dXJuIGFuIGFycmF5IG9mIG1ldGEgb2JqZWN0cy5cXG5cXG5UbyByZWZlcmVuY2UgdGhlIG1ldGEgZnVuY3Rpb24gQVBJLCBzZWUgaHR0cHM6Ly9yZW1peC5ydW4vcm91dGUvbWV0YVwiXG4gICAgICApO1xuICAgIH1cbiAgICBtYXRjaC5tZXRhID0gcm91dGVNZXRhO1xuICAgIG1hdGNoZXNbaV0gPSBtYXRjaDtcbiAgICBtZXRhID0gWy4uLnJvdXRlTWV0YV07XG4gICAgbGVhZk1ldGEgPSBtZXRhO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoUmVhY3Q5LkZyYWdtZW50LCBudWxsLCBtZXRhLmZsYXQoKS5tYXAoKG1ldGFQcm9wcykgPT4ge1xuICAgIGlmICghbWV0YVByb3BzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKFwidGFnTmFtZVwiIGluIG1ldGFQcm9wcykge1xuICAgICAgbGV0IHsgdGFnTmFtZSwgLi4ucmVzdCB9ID0gbWV0YVByb3BzO1xuICAgICAgaWYgKCFpc1ZhbGlkTWV0YVRhZyh0YWdOYW1lKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYEEgbWV0YSBvYmplY3QgdXNlcyBhbiBpbnZhbGlkIHRhZ05hbWU6ICR7dGFnTmFtZX0uIEV4cGVjdGVkIGVpdGhlciAnbGluaycgb3IgJ21ldGEnYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGxldCBDb21wID0gdGFnTmFtZTtcbiAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoQ29tcCwgeyBrZXk6IEpTT04uc3RyaW5naWZ5KHJlc3QpLCAuLi5yZXN0IH0pO1xuICAgIH1cbiAgICBpZiAoXCJ0aXRsZVwiIGluIG1ldGFQcm9wcykge1xuICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcInRpdGxlXCIsIHsga2V5OiBcInRpdGxlXCIgfSwgU3RyaW5nKG1ldGFQcm9wcy50aXRsZSkpO1xuICAgIH1cbiAgICBpZiAoXCJjaGFyc2V0XCIgaW4gbWV0YVByb3BzKSB7XG4gICAgICBtZXRhUHJvcHMuY2hhclNldCA/PyAobWV0YVByb3BzLmNoYXJTZXQgPSBtZXRhUHJvcHMuY2hhcnNldCk7XG4gICAgICBkZWxldGUgbWV0YVByb3BzLmNoYXJzZXQ7XG4gICAgfVxuICAgIGlmIChcImNoYXJTZXRcIiBpbiBtZXRhUHJvcHMgJiYgbWV0YVByb3BzLmNoYXJTZXQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBtZXRhUHJvcHMuY2hhclNldCA9PT0gXCJzdHJpbmdcIiA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcIm1ldGFcIiwgeyBrZXk6IFwiY2hhclNldFwiLCBjaGFyU2V0OiBtZXRhUHJvcHMuY2hhclNldCB9KSA6IG51bGw7XG4gICAgfVxuICAgIGlmIChcInNjcmlwdDpsZCtqc29uXCIgaW4gbWV0YVByb3BzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQganNvbiA9IEpTT04uc3RyaW5naWZ5KG1ldGFQcm9wc1tcInNjcmlwdDpsZCtqc29uXCJdKTtcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICBcInNjcmlwdFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogYHNjcmlwdDpsZCtqc29uOiR7anNvbn1gLFxuICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9sZCtqc29uXCIsXG4gICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogeyBfX2h0bWw6IGpzb24gfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcIm1ldGFcIiwgeyBrZXk6IEpTT04uc3RyaW5naWZ5KG1ldGFQcm9wcyksIC4uLm1ldGFQcm9wcyB9KTtcbiAgfSkpO1xufVxuZnVuY3Rpb24gaXNWYWxpZE1ldGFUYWcodGFnTmFtZSkge1xuICByZXR1cm4gdHlwZW9mIHRhZ05hbWUgPT09IFwic3RyaW5nXCIgJiYgL14obWV0YXxsaW5rKSQvLnRlc3QodGFnTmFtZSk7XG59XG52YXIgaXNIeWRyYXRlZCA9IGZhbHNlO1xuZnVuY3Rpb24gU2NyaXB0cyhwcm9wcykge1xuICBsZXQgeyBtYW5pZmVzdCwgc2VydmVySGFuZG9mZlN0cmluZywgaXNTcGFNb2RlLCByZW5kZXJNZXRhIH0gPSB1c2VGcmFtZXdvcmtDb250ZXh0KCk7XG4gIGxldCB7IHJvdXRlciwgc3RhdGljOiBpc1N0YXRpYywgc3RhdGljQ29udGV4dCB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQyKCk7XG4gIGxldCB7IG1hdGNoZXM6IHJvdXRlck1hdGNoZXMgfSA9IHVzZURhdGFSb3V0ZXJTdGF0ZUNvbnRleHQoKTtcbiAgbGV0IGVuYWJsZUZvZ09mV2FyID0gaXNGb2dPZldhckVuYWJsZWQoaXNTcGFNb2RlKTtcbiAgaWYgKHJlbmRlck1ldGEpIHtcbiAgICByZW5kZXJNZXRhLmRpZFJlbmRlclNjcmlwdHMgPSB0cnVlO1xuICB9XG4gIGxldCBtYXRjaGVzID0gZ2V0QWN0aXZlTWF0Y2hlcyhyb3V0ZXJNYXRjaGVzLCBudWxsLCBpc1NwYU1vZGUpO1xuICBSZWFjdDkudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc0h5ZHJhdGVkID0gdHJ1ZTtcbiAgfSwgW10pO1xuICBsZXQgaW5pdGlhbFNjcmlwdHMgPSBSZWFjdDkudXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IHN0cmVhbVNjcmlwdCA9IFwid2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LnN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQoY29udHJvbGxlcil7d2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LnN0cmVhbUNvbnRyb2xsZXIgPSBjb250cm9sbGVyO319KS5waXBlVGhyb3VnaChuZXcgVGV4dEVuY29kZXJTdHJlYW0oKSk7XCI7XG4gICAgbGV0IGNvbnRleHRTY3JpcHQgPSBzdGF0aWNDb250ZXh0ID8gYHdpbmRvdy5fX3JlYWN0Um91dGVyQ29udGV4dCA9ICR7c2VydmVySGFuZG9mZlN0cmluZ307JHtzdHJlYW1TY3JpcHR9YCA6IFwiIFwiO1xuICAgIGxldCByb3V0ZU1vZHVsZXNTY3JpcHQgPSAhaXNTdGF0aWMgPyBcIiBcIiA6IGAke21hbmlmZXN0Lmhtcj8ucnVudGltZSA/IGBpbXBvcnQgJHtKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5obXIucnVudGltZSl9O2AgOiBcIlwifSR7IWVuYWJsZUZvZ09mV2FyID8gYGltcG9ydCAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LnVybCl9YCA6IFwiXCJ9O1xuJHttYXRjaGVzLm1hcChcbiAgICAgIChtYXRjaCwgaW5kZXgpID0+IGBpbXBvcnQgKiBhcyByb3V0ZSR7aW5kZXh9IGZyb20gJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgbWFuaWZlc3Qucm91dGVzW21hdGNoLnJvdXRlLmlkXS5tb2R1bGVcbiAgICAgICl9O2BcbiAgICApLmpvaW4oXCJcXG5cIil9XG4gICR7ZW5hYmxlRm9nT2ZXYXIgPyAoXG4gICAgICAvLyBJbmxpbmUgYSBtaW5pbWFsIG1hbmlmZXN0IHdpdGggdGhlIFNTUiBtYXRjaGVzXG4gICAgICBgd2luZG93Ll9fcmVhY3RSb3V0ZXJNYW5pZmVzdCA9ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGdldFBhcnRpYWxNYW5pZmVzdChtYW5pZmVzdCwgcm91dGVyKSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMlxuICAgICAgKX07YFxuICAgICkgOiBcIlwifVxuICB3aW5kb3cuX19yZWFjdFJvdXRlclJvdXRlTW9kdWxlcyA9IHske21hdGNoZXMubWFwKChtYXRjaCwgaW5kZXgpID0+IGAke0pTT04uc3RyaW5naWZ5KG1hdGNoLnJvdXRlLmlkKX06cm91dGUke2luZGV4fWApLmpvaW4oXCIsXCIpfX07XG5cbmltcG9ydCgke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmVudHJ5Lm1vZHVsZSl9KTtgO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoUmVhY3Q5LkZyYWdtZW50LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcInNjcmlwdFwiLFxuICAgICAge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nOiB0cnVlLFxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogY3JlYXRlSHRtbChjb250ZXh0U2NyaXB0KSxcbiAgICAgICAgdHlwZTogdm9pZCAwXG4gICAgICB9XG4gICAgKSwgLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJzY3JpcHRcIixcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZzogdHJ1ZSxcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IGNyZWF0ZUh0bWwocm91dGVNb2R1bGVzU2NyaXB0KSxcbiAgICAgICAgdHlwZTogXCJtb2R1bGVcIixcbiAgICAgICAgYXN5bmM6IHRydWVcbiAgICAgIH1cbiAgICApKTtcbiAgfSwgW10pO1xuICBsZXQgcm91dGVQcmVsb2FkcyA9IG1hdGNoZXMubWFwKChtYXRjaCkgPT4ge1xuICAgIGxldCByb3V0ZSA9IG1hbmlmZXN0LnJvdXRlc1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgcmV0dXJuIHJvdXRlID8gKHJvdXRlLmltcG9ydHMgfHwgW10pLmNvbmNhdChbcm91dGUubW9kdWxlXSkgOiBbXTtcbiAgfSkuZmxhdCgxKTtcbiAgbGV0IHByZWxvYWRzID0gaXNIeWRyYXRlZCA/IFtdIDogbWFuaWZlc3QuZW50cnkuaW1wb3J0cy5jb25jYXQocm91dGVQcmVsb2Fkcyk7XG4gIHJldHVybiBpc0h5ZHJhdGVkID8gbnVsbCA6IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChSZWFjdDkuRnJhZ21lbnQsIG51bGwsICFlbmFibGVGb2dPZldhciA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcbiAgICBcImxpbmtcIixcbiAgICB7XG4gICAgICByZWw6IFwibW9kdWxlcHJlbG9hZFwiLFxuICAgICAgaHJlZjogbWFuaWZlc3QudXJsLFxuICAgICAgY3Jvc3NPcmlnaW46IHByb3BzLmNyb3NzT3JpZ2luXG4gICAgfVxuICApIDogbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFxuICAgIFwibGlua1wiLFxuICAgIHtcbiAgICAgIHJlbDogXCJtb2R1bGVwcmVsb2FkXCIsXG4gICAgICBocmVmOiBtYW5pZmVzdC5lbnRyeS5tb2R1bGUsXG4gICAgICBjcm9zc09yaWdpbjogcHJvcHMuY3Jvc3NPcmlnaW5cbiAgICB9XG4gICksIGRlZHVwZShwcmVsb2FkcykubWFwKChwYXRoKSA9PiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJsaW5rXCIsXG4gICAge1xuICAgICAga2V5OiBwYXRoLFxuICAgICAgcmVsOiBcIm1vZHVsZXByZWxvYWRcIixcbiAgICAgIGhyZWY6IHBhdGgsXG4gICAgICBjcm9zc09yaWdpbjogcHJvcHMuY3Jvc3NPcmlnaW5cbiAgICB9XG4gICkpLCBpbml0aWFsU2NyaXB0cyk7XG59XG5mdW5jdGlvbiBkZWR1cGUoYXJyYXkpIHtcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KGFycmF5KV07XG59XG5mdW5jdGlvbiBtZXJnZVJlZnMoLi4ucmVmcykge1xuICByZXR1cm4gKHZhbHVlKSA9PiB7XG4gICAgcmVmcy5mb3JFYWNoKChyZWYpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmVmKHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAocmVmICE9IG51bGwpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn1cblxuLy8gbGliL2RvbS9saWIudHN4XG52YXIgaXNCcm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygd2luZG93LmRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAhPT0gXCJ1bmRlZmluZWRcIjtcbnRyeSB7XG4gIGlmIChpc0Jyb3dzZXIpIHtcbiAgICB3aW5kb3cuX19yZWFjdFJvdXRlclZlcnNpb24gPSBcIjcuMC4yXCI7XG4gIH1cbn0gY2F0Y2ggKGUpIHtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUJyb3dzZXJSb3V0ZXIocm91dGVzLCBvcHRzKSB7XG4gIHJldHVybiBjcmVhdGVSb3V0ZXIoe1xuICAgIGJhc2VuYW1lOiBvcHRzPy5iYXNlbmFtZSxcbiAgICBmdXR1cmU6IG9wdHM/LmZ1dHVyZSxcbiAgICBoaXN0b3J5OiBjcmVhdGVCcm93c2VySGlzdG9yeSh7IHdpbmRvdzogb3B0cz8ud2luZG93IH0pLFxuICAgIGh5ZHJhdGlvbkRhdGE6IG9wdHM/Lmh5ZHJhdGlvbkRhdGEgfHwgcGFyc2VIeWRyYXRpb25EYXRhKCksXG4gICAgcm91dGVzLFxuICAgIG1hcFJvdXRlUHJvcGVydGllcyxcbiAgICBkYXRhU3RyYXRlZ3k6IG9wdHM/LmRhdGFTdHJhdGVneSxcbiAgICBwYXRjaFJvdXRlc09uTmF2aWdhdGlvbjogb3B0cz8ucGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb24sXG4gICAgd2luZG93OiBvcHRzPy53aW5kb3dcbiAgfSkuaW5pdGlhbGl6ZSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlSGFzaFJvdXRlcihyb3V0ZXMsIG9wdHMpIHtcbiAgcmV0dXJuIGNyZWF0ZVJvdXRlcih7XG4gICAgYmFzZW5hbWU6IG9wdHM/LmJhc2VuYW1lLFxuICAgIGZ1dHVyZTogb3B0cz8uZnV0dXJlLFxuICAgIGhpc3Rvcnk6IGNyZWF0ZUhhc2hIaXN0b3J5KHsgd2luZG93OiBvcHRzPy53aW5kb3cgfSksXG4gICAgaHlkcmF0aW9uRGF0YTogb3B0cz8uaHlkcmF0aW9uRGF0YSB8fCBwYXJzZUh5ZHJhdGlvbkRhdGEoKSxcbiAgICByb3V0ZXMsXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzLFxuICAgIGRhdGFTdHJhdGVneTogb3B0cz8uZGF0YVN0cmF0ZWd5LFxuICAgIHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uOiBvcHRzPy5wYXRjaFJvdXRlc09uTmF2aWdhdGlvbixcbiAgICB3aW5kb3c6IG9wdHM/LndpbmRvd1xuICB9KS5pbml0aWFsaXplKCk7XG59XG5mdW5jdGlvbiBwYXJzZUh5ZHJhdGlvbkRhdGEoKSB7XG4gIGxldCBzdGF0ZSA9IHdpbmRvdz8uX19zdGF0aWNSb3V0ZXJIeWRyYXRpb25EYXRhO1xuICBpZiAoc3RhdGUgJiYgc3RhdGUuZXJyb3JzKSB7XG4gICAgc3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGVycm9yczogZGVzZXJpYWxpemVFcnJvcnMoc3RhdGUuZXJyb3JzKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuZnVuY3Rpb24gZGVzZXJpYWxpemVFcnJvcnMoZXJyb3JzKSB7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gbnVsbDtcbiAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhlcnJvcnMpO1xuICBsZXQgc2VyaWFsaXplZCA9IHt9O1xuICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIGVudHJpZXMpIHtcbiAgICBpZiAodmFsICYmIHZhbC5fX3R5cGUgPT09IFwiUm91dGVFcnJvclJlc3BvbnNlXCIpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IG5ldyBFcnJvclJlc3BvbnNlSW1wbChcbiAgICAgICAgdmFsLnN0YXR1cyxcbiAgICAgICAgdmFsLnN0YXR1c1RleHQsXG4gICAgICAgIHZhbC5kYXRhLFxuICAgICAgICB2YWwuaW50ZXJuYWwgPT09IHRydWVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh2YWwgJiYgdmFsLl9fdHlwZSA9PT0gXCJFcnJvclwiKSB7XG4gICAgICBpZiAodmFsLl9fc3ViVHlwZSkge1xuICAgICAgICBsZXQgRXJyb3JDb25zdHJ1Y3RvciA9IHdpbmRvd1t2YWwuX19zdWJUeXBlXTtcbiAgICAgICAgaWYgKHR5cGVvZiBFcnJvckNvbnN0cnVjdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yQ29uc3RydWN0b3IodmFsLm1lc3NhZ2UpO1xuICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSBcIlwiO1xuICAgICAgICAgICAgc2VyaWFsaXplZFtrZXldID0gZXJyb3I7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlcmlhbGl6ZWRba2V5XSA9PSBudWxsKSB7XG4gICAgICAgIGxldCBlcnJvciA9IG5ldyBFcnJvcih2YWwubWVzc2FnZSk7XG4gICAgICAgIGVycm9yLnN0YWNrID0gXCJcIjtcbiAgICAgICAgc2VyaWFsaXplZFtrZXldID0gZXJyb3I7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNlcmlhbGl6ZWQ7XG59XG5mdW5jdGlvbiBCcm93c2VyUm91dGVyKHtcbiAgYmFzZW5hbWUsXG4gIGNoaWxkcmVuLFxuICB3aW5kb3c6IHdpbmRvdzJcbn0pIHtcbiAgbGV0IGhpc3RvcnlSZWYgPSBSZWFjdDEwLnVzZVJlZigpO1xuICBpZiAoaGlzdG9yeVJlZi5jdXJyZW50ID09IG51bGwpIHtcbiAgICBoaXN0b3J5UmVmLmN1cnJlbnQgPSBjcmVhdGVCcm93c2VySGlzdG9yeSh7IHdpbmRvdzogd2luZG93MiwgdjVDb21wYXQ6IHRydWUgfSk7XG4gIH1cbiAgbGV0IGhpc3RvcnkgPSBoaXN0b3J5UmVmLmN1cnJlbnQ7XG4gIGxldCBbc3RhdGUsIHNldFN0YXRlSW1wbF0gPSBSZWFjdDEwLnVzZVN0YXRlKHtcbiAgICBhY3Rpb246IGhpc3RvcnkuYWN0aW9uLFxuICAgIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uXG4gIH0pO1xuICBsZXQgc2V0U3RhdGUgPSBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIChuZXdTdGF0ZSkgPT4ge1xuICAgICAgUmVhY3QxMC5zdGFydFRyYW5zaXRpb24oKCkgPT4gc2V0U3RhdGVJbXBsKG5ld1N0YXRlKSk7XG4gICAgfSxcbiAgICBbc2V0U3RhdGVJbXBsXVxuICApO1xuICBSZWFjdDEwLnVzZUxheW91dEVmZmVjdCgoKSA9PiBoaXN0b3J5Lmxpc3RlbihzZXRTdGF0ZSksIFtoaXN0b3J5LCBzZXRTdGF0ZV0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChcbiAgICBSb3V0ZXIsXG4gICAge1xuICAgICAgYmFzZW5hbWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgIG5hdmlnYXRpb25UeXBlOiBzdGF0ZS5hY3Rpb24sXG4gICAgICBuYXZpZ2F0b3I6IGhpc3RvcnlcbiAgICB9XG4gICk7XG59XG5mdW5jdGlvbiBIYXNoUm91dGVyKHsgYmFzZW5hbWUsIGNoaWxkcmVuLCB3aW5kb3c6IHdpbmRvdzIgfSkge1xuICBsZXQgaGlzdG9yeVJlZiA9IFJlYWN0MTAudXNlUmVmKCk7XG4gIGlmIChoaXN0b3J5UmVmLmN1cnJlbnQgPT0gbnVsbCkge1xuICAgIGhpc3RvcnlSZWYuY3VycmVudCA9IGNyZWF0ZUhhc2hIaXN0b3J5KHsgd2luZG93OiB3aW5kb3cyLCB2NUNvbXBhdDogdHJ1ZSB9KTtcbiAgfVxuICBsZXQgaGlzdG9yeSA9IGhpc3RvcnlSZWYuY3VycmVudDtcbiAgbGV0IFtzdGF0ZSwgc2V0U3RhdGVJbXBsXSA9IFJlYWN0MTAudXNlU3RhdGUoe1xuICAgIGFjdGlvbjogaGlzdG9yeS5hY3Rpb24sXG4gICAgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb25cbiAgfSk7XG4gIGxldCBzZXRTdGF0ZSA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBSZWFjdDEwLnN0YXJ0VHJhbnNpdGlvbigoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICB9LFxuICAgIFtzZXRTdGF0ZUltcGxdXG4gICk7XG4gIFJlYWN0MTAudXNlTGF5b3V0RWZmZWN0KCgpID0+IGhpc3RvcnkubGlzdGVuKHNldFN0YXRlKSwgW2hpc3RvcnksIHNldFN0YXRlXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IHN0YXRlLmFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICAgIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIEhpc3RvcnlSb3V0ZXIoe1xuICBiYXNlbmFtZSxcbiAgY2hpbGRyZW4sXG4gIGhpc3Rvcnlcbn0pIHtcbiAgbGV0IFtzdGF0ZSwgc2V0U3RhdGVJbXBsXSA9IFJlYWN0MTAudXNlU3RhdGUoe1xuICAgIGFjdGlvbjogaGlzdG9yeS5hY3Rpb24sXG4gICAgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb25cbiAgfSk7XG4gIGxldCBzZXRTdGF0ZSA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBSZWFjdDEwLnN0YXJ0VHJhbnNpdGlvbigoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICB9LFxuICAgIFtzZXRTdGF0ZUltcGxdXG4gICk7XG4gIFJlYWN0MTAudXNlTGF5b3V0RWZmZWN0KCgpID0+IGhpc3RvcnkubGlzdGVuKHNldFN0YXRlKSwgW2hpc3RvcnksIHNldFN0YXRlXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IHN0YXRlLmFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICAgIH1cbiAgKTtcbn1cbkhpc3RvcnlSb3V0ZXIuZGlzcGxheU5hbWUgPSBcInVuc3RhYmxlX0hpc3RvcnlSb3V0ZXJcIjtcbnZhciBBQlNPTFVURV9VUkxfUkVHRVgyID0gL14oPzpbYS16XVthLXowLTkrLi1dKjp8XFwvXFwvKS9pO1xudmFyIExpbmsgPSBSZWFjdDEwLmZvcndhcmRSZWYoXG4gIGZ1bmN0aW9uIExpbmtXaXRoUmVmKHtcbiAgICBvbkNsaWNrLFxuICAgIGRpc2NvdmVyID0gXCJyZW5kZXJcIixcbiAgICBwcmVmZXRjaCA9IFwibm9uZVwiLFxuICAgIHJlbGF0aXZlLFxuICAgIHJlbG9hZERvY3VtZW50LFxuICAgIHJlcGxhY2U6IHJlcGxhY2UyLFxuICAgIHN0YXRlLFxuICAgIHRhcmdldCxcbiAgICB0byxcbiAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgdmlld1RyYW5zaXRpb24sXG4gICAgLi4ucmVzdFxuICB9LCBmb3J3YXJkZWRSZWYpIHtcbiAgICBsZXQgeyBiYXNlbmFtZSB9ID0gUmVhY3QxMC51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgICBsZXQgaXNBYnNvbHV0ZSA9IHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiAmJiBBQlNPTFVURV9VUkxfUkVHRVgyLnRlc3QodG8pO1xuICAgIGxldCBhYnNvbHV0ZUhyZWY7XG4gICAgbGV0IGlzRXh0ZXJuYWwgPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIHRvID09PSBcInN0cmluZ1wiICYmIGlzQWJzb2x1dGUpIHtcbiAgICAgIGFic29sdXRlSHJlZiA9IHRvO1xuICAgICAgaWYgKGlzQnJvd3Nlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxldCBjdXJyZW50VXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgICAgbGV0IHRhcmdldFVybCA9IHRvLnN0YXJ0c1dpdGgoXCIvL1wiKSA/IG5ldyBVUkwoY3VycmVudFVybC5wcm90b2NvbCArIHRvKSA6IG5ldyBVUkwodG8pO1xuICAgICAgICAgIGxldCBwYXRoID0gc3RyaXBCYXNlbmFtZSh0YXJnZXRVcmwucGF0aG5hbWUsIGJhc2VuYW1lKTtcbiAgICAgICAgICBpZiAodGFyZ2V0VXJsLm9yaWdpbiA9PT0gY3VycmVudFVybC5vcmlnaW4gJiYgcGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0byA9IHBhdGggKyB0YXJnZXRVcmwuc2VhcmNoICsgdGFyZ2V0VXJsLmhhc2g7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlzRXh0ZXJuYWwgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgIGA8TGluayB0bz1cIiR7dG99XCI+IGNvbnRhaW5zIGFuIGludmFsaWQgVVJMIHdoaWNoIHdpbGwgcHJvYmFibHkgYnJlYWsgd2hlbiBjbGlja2VkIC0gcGxlYXNlIHVwZGF0ZSB0byBhIHZhbGlkIFVSTCBwYXRoLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBocmVmID0gdXNlSHJlZih0bywgeyByZWxhdGl2ZSB9KTtcbiAgICBsZXQgW3Nob3VsZFByZWZldGNoLCBwcmVmZXRjaFJlZiwgcHJlZmV0Y2hIYW5kbGVyc10gPSB1c2VQcmVmZXRjaEJlaGF2aW9yKFxuICAgICAgcHJlZmV0Y2gsXG4gICAgICByZXN0XG4gICAgKTtcbiAgICBsZXQgaW50ZXJuYWxPbkNsaWNrID0gdXNlTGlua0NsaWNrSGFuZGxlcih0bywge1xuICAgICAgcmVwbGFjZTogcmVwbGFjZTIsXG4gICAgICBzdGF0ZSxcbiAgICAgIHRhcmdldCxcbiAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgIHJlbGF0aXZlLFxuICAgICAgdmlld1RyYW5zaXRpb25cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKG9uQ2xpY2spIG9uQ2xpY2soZXZlbnQpO1xuICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIGludGVybmFsT25DbGljayhldmVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBsaW5rID0gKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1oYXMtY29udGVudFxuICAgICAgLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChcbiAgICAgICAgXCJhXCIsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5yZXN0LFxuICAgICAgICAgIC4uLnByZWZldGNoSGFuZGxlcnMsXG4gICAgICAgICAgaHJlZjogYWJzb2x1dGVIcmVmIHx8IGhyZWYsXG4gICAgICAgICAgb25DbGljazogaXNFeHRlcm5hbCB8fCByZWxvYWREb2N1bWVudCA/IG9uQ2xpY2sgOiBoYW5kbGVDbGljayxcbiAgICAgICAgICByZWY6IG1lcmdlUmVmcyhmb3J3YXJkZWRSZWYsIHByZWZldGNoUmVmKSxcbiAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgXCJkYXRhLWRpc2NvdmVyXCI6ICFpc0Fic29sdXRlICYmIGRpc2NvdmVyID09PSBcInJlbmRlclwiID8gXCJ0cnVlXCIgOiB2b2lkIDBcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gICAgcmV0dXJuIHNob3VsZFByZWZldGNoICYmICFpc0Fic29sdXRlID8gLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChSZWFjdDEwLkZyYWdtZW50LCBudWxsLCBsaW5rLCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFByZWZldGNoUGFnZUxpbmtzLCB7IHBhZ2U6IGhyZWYgfSkpIDogbGluaztcbiAgfVxuKTtcbkxpbmsuZGlzcGxheU5hbWUgPSBcIkxpbmtcIjtcbnZhciBOYXZMaW5rID0gUmVhY3QxMC5mb3J3YXJkUmVmKFxuICBmdW5jdGlvbiBOYXZMaW5rV2l0aFJlZih7XG4gICAgXCJhcmlhLWN1cnJlbnRcIjogYXJpYUN1cnJlbnRQcm9wID0gXCJwYWdlXCIsXG4gICAgY2FzZVNlbnNpdGl2ZSA9IGZhbHNlLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lUHJvcCA9IFwiXCIsXG4gICAgZW5kID0gZmFsc2UsXG4gICAgc3R5bGU6IHN0eWxlUHJvcCxcbiAgICB0byxcbiAgICB2aWV3VHJhbnNpdGlvbixcbiAgICBjaGlsZHJlbixcbiAgICAuLi5yZXN0XG4gIH0sIHJlZikge1xuICAgIGxldCBwYXRoID0gdXNlUmVzb2x2ZWRQYXRoKHRvLCB7IHJlbGF0aXZlOiByZXN0LnJlbGF0aXZlIH0pO1xuICAgIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gICAgbGV0IHJvdXRlclN0YXRlID0gUmVhY3QxMC51c2VDb250ZXh0KERhdGFSb3V0ZXJTdGF0ZUNvbnRleHQpO1xuICAgIGxldCB7IG5hdmlnYXRvcjogbmF2aWdhdG9yMiwgYmFzZW5hbWUgfSA9IFJlYWN0MTAudXNlQ29udGV4dChOYXZpZ2F0aW9uQ29udGV4dCk7XG4gICAgbGV0IGlzVHJhbnNpdGlvbmluZyA9IHJvdXRlclN0YXRlICE9IG51bGwgJiYgLy8gQ29uZGl0aW9uYWwgdXNhZ2UgaXMgT0sgaGVyZSBiZWNhdXNlIHRoZSB1c2FnZSBvZiBhIGRhdGEgcm91dGVyIGlzIHN0YXRpY1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIHVzZVZpZXdUcmFuc2l0aW9uU3RhdGUocGF0aCkgJiYgdmlld1RyYW5zaXRpb24gPT09IHRydWU7XG4gICAgbGV0IHRvUGF0aG5hbWUgPSBuYXZpZ2F0b3IyLmVuY29kZUxvY2F0aW9uID8gbmF2aWdhdG9yMi5lbmNvZGVMb2NhdGlvbihwYXRoKS5wYXRobmFtZSA6IHBhdGgucGF0aG5hbWU7XG4gICAgbGV0IGxvY2F0aW9uUGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZTtcbiAgICBsZXQgbmV4dExvY2F0aW9uUGF0aG5hbWUgPSByb3V0ZXJTdGF0ZSAmJiByb3V0ZXJTdGF0ZS5uYXZpZ2F0aW9uICYmIHJvdXRlclN0YXRlLm5hdmlnYXRpb24ubG9jYXRpb24gPyByb3V0ZXJTdGF0ZS5uYXZpZ2F0aW9uLmxvY2F0aW9uLnBhdGhuYW1lIDogbnVsbDtcbiAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcbiAgICAgIGxvY2F0aW9uUGF0aG5hbWUgPSBsb2NhdGlvblBhdGhuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBuZXh0TG9jYXRpb25QYXRobmFtZSA9IG5leHRMb2NhdGlvblBhdGhuYW1lID8gbmV4dExvY2F0aW9uUGF0aG5hbWUudG9Mb3dlckNhc2UoKSA6IG51bGw7XG4gICAgICB0b1BhdGhuYW1lID0gdG9QYXRobmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAobmV4dExvY2F0aW9uUGF0aG5hbWUgJiYgYmFzZW5hbWUpIHtcbiAgICAgIG5leHRMb2NhdGlvblBhdGhuYW1lID0gc3RyaXBCYXNlbmFtZShuZXh0TG9jYXRpb25QYXRobmFtZSwgYmFzZW5hbWUpIHx8IG5leHRMb2NhdGlvblBhdGhuYW1lO1xuICAgIH1cbiAgICBjb25zdCBlbmRTbGFzaFBvc2l0aW9uID0gdG9QYXRobmFtZSAhPT0gXCIvXCIgJiYgdG9QYXRobmFtZS5lbmRzV2l0aChcIi9cIikgPyB0b1BhdGhuYW1lLmxlbmd0aCAtIDEgOiB0b1BhdGhuYW1lLmxlbmd0aDtcbiAgICBsZXQgaXNBY3RpdmUgPSBsb2NhdGlvblBhdGhuYW1lID09PSB0b1BhdGhuYW1lIHx8ICFlbmQgJiYgbG9jYXRpb25QYXRobmFtZS5zdGFydHNXaXRoKHRvUGF0aG5hbWUpICYmIGxvY2F0aW9uUGF0aG5hbWUuY2hhckF0KGVuZFNsYXNoUG9zaXRpb24pID09PSBcIi9cIjtcbiAgICBsZXQgaXNQZW5kaW5nID0gbmV4dExvY2F0aW9uUGF0aG5hbWUgIT0gbnVsbCAmJiAobmV4dExvY2F0aW9uUGF0aG5hbWUgPT09IHRvUGF0aG5hbWUgfHwgIWVuZCAmJiBuZXh0TG9jYXRpb25QYXRobmFtZS5zdGFydHNXaXRoKHRvUGF0aG5hbWUpICYmIG5leHRMb2NhdGlvblBhdGhuYW1lLmNoYXJBdCh0b1BhdGhuYW1lLmxlbmd0aCkgPT09IFwiL1wiKTtcbiAgICBsZXQgcmVuZGVyUHJvcHMgPSB7XG4gICAgICBpc0FjdGl2ZSxcbiAgICAgIGlzUGVuZGluZyxcbiAgICAgIGlzVHJhbnNpdGlvbmluZ1xuICAgIH07XG4gICAgbGV0IGFyaWFDdXJyZW50ID0gaXNBY3RpdmUgPyBhcmlhQ3VycmVudFByb3AgOiB2b2lkIDA7XG4gICAgbGV0IGNsYXNzTmFtZTtcbiAgICBpZiAodHlwZW9mIGNsYXNzTmFtZVByb3AgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lUHJvcChyZW5kZXJQcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzTmFtZSA9IFtcbiAgICAgICAgY2xhc3NOYW1lUHJvcCxcbiAgICAgICAgaXNBY3RpdmUgPyBcImFjdGl2ZVwiIDogbnVsbCxcbiAgICAgICAgaXNQZW5kaW5nID8gXCJwZW5kaW5nXCIgOiBudWxsLFxuICAgICAgICBpc1RyYW5zaXRpb25pbmcgPyBcInRyYW5zaXRpb25pbmdcIiA6IG51bGxcbiAgICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpO1xuICAgIH1cbiAgICBsZXQgc3R5bGUgPSB0eXBlb2Ygc3R5bGVQcm9wID09PSBcImZ1bmN0aW9uXCIgPyBzdHlsZVByb3AocmVuZGVyUHJvcHMpIDogc3R5bGVQcm9wO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgICAgTGluayxcbiAgICAgIHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgXCJhcmlhLWN1cnJlbnRcIjogYXJpYUN1cnJlbnQsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgcmVmLFxuICAgICAgICBzdHlsZSxcbiAgICAgICAgdG8sXG4gICAgICAgIHZpZXdUcmFuc2l0aW9uXG4gICAgICB9LFxuICAgICAgdHlwZW9mIGNoaWxkcmVuID09PSBcImZ1bmN0aW9uXCIgPyBjaGlsZHJlbihyZW5kZXJQcm9wcykgOiBjaGlsZHJlblxuICAgICk7XG4gIH1cbik7XG5OYXZMaW5rLmRpc3BsYXlOYW1lID0gXCJOYXZMaW5rXCI7XG52YXIgRm9ybSA9IFJlYWN0MTAuZm9yd2FyZFJlZihcbiAgKHtcbiAgICBkaXNjb3ZlciA9IFwicmVuZGVyXCIsXG4gICAgZmV0Y2hlcktleSxcbiAgICBuYXZpZ2F0ZSxcbiAgICByZWxvYWREb2N1bWVudCxcbiAgICByZXBsYWNlOiByZXBsYWNlMixcbiAgICBzdGF0ZSxcbiAgICBtZXRob2QgPSBkZWZhdWx0TWV0aG9kLFxuICAgIGFjdGlvbixcbiAgICBvblN1Ym1pdCxcbiAgICByZWxhdGl2ZSxcbiAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgdmlld1RyYW5zaXRpb24sXG4gICAgLi4ucHJvcHNcbiAgfSwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgbGV0IHN1Ym1pdCA9IHVzZVN1Ym1pdCgpO1xuICAgIGxldCBmb3JtQWN0aW9uID0gdXNlRm9ybUFjdGlvbihhY3Rpb24sIHsgcmVsYXRpdmUgfSk7XG4gICAgbGV0IGZvcm1NZXRob2QgPSBtZXRob2QudG9Mb3dlckNhc2UoKSA9PT0gXCJnZXRcIiA/IFwiZ2V0XCIgOiBcInBvc3RcIjtcbiAgICBsZXQgaXNBYnNvbHV0ZSA9IHR5cGVvZiBhY3Rpb24gPT09IFwic3RyaW5nXCIgJiYgQUJTT0xVVEVfVVJMX1JFR0VYMi50ZXN0KGFjdGlvbik7XG4gICAgbGV0IHN1Ym1pdEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgIG9uU3VibWl0ICYmIG9uU3VibWl0KGV2ZW50KTtcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgbGV0IHN1Ym1pdHRlciA9IGV2ZW50Lm5hdGl2ZUV2ZW50LnN1Ym1pdHRlcjtcbiAgICAgIGxldCBzdWJtaXRNZXRob2QgPSBzdWJtaXR0ZXI/LmdldEF0dHJpYnV0ZShcImZvcm1tZXRob2RcIikgfHwgbWV0aG9kO1xuICAgICAgc3VibWl0KHN1Ym1pdHRlciB8fCBldmVudC5jdXJyZW50VGFyZ2V0LCB7XG4gICAgICAgIGZldGNoZXJLZXksXG4gICAgICAgIG1ldGhvZDogc3VibWl0TWV0aG9kLFxuICAgICAgICBuYXZpZ2F0ZSxcbiAgICAgICAgcmVwbGFjZTogcmVwbGFjZTIsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICByZWxhdGl2ZSxcbiAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgICB2aWV3VHJhbnNpdGlvblxuICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChcbiAgICAgIFwiZm9ybVwiLFxuICAgICAge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgbWV0aG9kOiBmb3JtTWV0aG9kLFxuICAgICAgICBhY3Rpb246IGZvcm1BY3Rpb24sXG4gICAgICAgIG9uU3VibWl0OiByZWxvYWREb2N1bWVudCA/IG9uU3VibWl0IDogc3VibWl0SGFuZGxlcixcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIFwiZGF0YS1kaXNjb3ZlclwiOiAhaXNBYnNvbHV0ZSAmJiBkaXNjb3ZlciA9PT0gXCJyZW5kZXJcIiA/IFwidHJ1ZVwiIDogdm9pZCAwXG4gICAgICB9XG4gICAgKTtcbiAgfVxuKTtcbkZvcm0uZGlzcGxheU5hbWUgPSBcIkZvcm1cIjtcbmZ1bmN0aW9uIFNjcm9sbFJlc3RvcmF0aW9uKHtcbiAgZ2V0S2V5LFxuICBzdG9yYWdlS2V5LFxuICAuLi5wcm9wc1xufSkge1xuICBsZXQgcmVtaXhDb250ZXh0ID0gUmVhY3QxMC51c2VDb250ZXh0KEZyYW1ld29ya0NvbnRleHQpO1xuICBsZXQgeyBiYXNlbmFtZSB9ID0gUmVhY3QxMC51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IG1hdGNoZXMgPSB1c2VNYXRjaGVzKCk7XG4gIHVzZVNjcm9sbFJlc3RvcmF0aW9uKHsgZ2V0S2V5LCBzdG9yYWdlS2V5IH0pO1xuICBsZXQgc3NyS2V5ID0gUmVhY3QxMC51c2VNZW1vKFxuICAgICgpID0+IHtcbiAgICAgIGlmICghcmVtaXhDb250ZXh0IHx8ICFnZXRLZXkpIHJldHVybiBudWxsO1xuICAgICAgbGV0IHVzZXJLZXkgPSBnZXRTY3JvbGxSZXN0b3JhdGlvbktleShcbiAgICAgICAgbG9jYXRpb24sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGJhc2VuYW1lLFxuICAgICAgICBnZXRLZXlcbiAgICAgICk7XG4gICAgICByZXR1cm4gdXNlcktleSAhPT0gbG9jYXRpb24ua2V5ID8gdXNlcktleSA6IG51bGw7XG4gICAgfSxcbiAgICAvLyBOYWgsIHdlIG9ubHkgbmVlZCB0aGlzIHRoZSBmaXJzdCB0aW1lIGZvciB0aGUgU1NSIHJlbmRlclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICBbXVxuICApO1xuICBpZiAoIXJlbWl4Q29udGV4dCB8fCByZW1peENvbnRleHQuaXNTcGFNb2RlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgbGV0IHJlc3RvcmVTY3JvbGwgPSAoKHN0b3JhZ2VLZXkyLCByZXN0b3JlS2V5KSA9PiB7XG4gICAgaWYgKCF3aW5kb3cuaGlzdG9yeS5zdGF0ZSB8fCAhd2luZG93Lmhpc3Rvcnkuc3RhdGUua2V5KSB7XG4gICAgICBsZXQga2V5ID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzMikuc2xpY2UoMik7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoeyBrZXkgfSwgXCJcIik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsZXQgcG9zaXRpb25zID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHN0b3JhZ2VLZXkyKSB8fCBcInt9XCIpO1xuICAgICAgbGV0IHN0b3JlZFkgPSBwb3NpdGlvbnNbcmVzdG9yZUtleSB8fCB3aW5kb3cuaGlzdG9yeS5zdGF0ZS5rZXldO1xuICAgICAgaWYgKHR5cGVvZiBzdG9yZWRZID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBzdG9yZWRZKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHN0b3JhZ2VLZXkyKTtcbiAgICB9XG4gIH0pLnRvU3RyaW5nKCk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgIFwic2NyaXB0XCIsXG4gICAge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6IHRydWUsXG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICBfX2h0bWw6IGAoJHtyZXN0b3JlU2Nyb2xsfSkoJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBzdG9yYWdlS2V5IHx8IFNDUk9MTF9SRVNUT1JBVElPTl9TVE9SQUdFX0tFWVxuICAgICAgICApfSwgJHtKU09OLnN0cmluZ2lmeShzc3JLZXkpfSlgXG4gICAgICB9XG4gICAgfVxuICApO1xufVxuU2Nyb2xsUmVzdG9yYXRpb24uZGlzcGxheU5hbWUgPSBcIlNjcm9sbFJlc3RvcmF0aW9uXCI7XG5mdW5jdGlvbiBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yMihob29rTmFtZSkge1xuICByZXR1cm4gYCR7aG9va05hbWV9IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBkYXRhIHJvdXRlci4gIFNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9lbi9tYWluL3JvdXRlcnMvcGlja2luZy1hLXJvdXRlci5gO1xufVxuZnVuY3Rpb24gdXNlRGF0YVJvdXRlckNvbnRleHQzKGhvb2tOYW1lKSB7XG4gIGxldCBjdHggPSBSZWFjdDEwLnVzZUNvbnRleHQoRGF0YVJvdXRlckNvbnRleHQpO1xuICBpbnZhcmlhbnQoY3R4LCBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yMihob29rTmFtZSkpO1xuICByZXR1cm4gY3R4O1xufVxuZnVuY3Rpb24gdXNlRGF0YVJvdXRlclN0YXRlMihob29rTmFtZSkge1xuICBsZXQgc3RhdGUgPSBSZWFjdDEwLnVzZUNvbnRleHQoRGF0YVJvdXRlclN0YXRlQ29udGV4dCk7XG4gIGludmFyaWFudChzdGF0ZSwgZ2V0RGF0YVJvdXRlckNvbnNvbGVFcnJvcjIoaG9va05hbWUpKTtcbiAgcmV0dXJuIHN0YXRlO1xufVxuZnVuY3Rpb24gdXNlTGlua0NsaWNrSGFuZGxlcih0bywge1xuICB0YXJnZXQsXG4gIHJlcGxhY2U6IHJlcGxhY2VQcm9wLFxuICBzdGF0ZSxcbiAgcHJldmVudFNjcm9sbFJlc2V0LFxuICByZWxhdGl2ZSxcbiAgdmlld1RyYW5zaXRpb25cbn0gPSB7fSkge1xuICBsZXQgbmF2aWdhdGUgPSB1c2VOYXZpZ2F0ZSgpO1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgcGF0aCA9IHVzZVJlc29sdmVkUGF0aCh0bywgeyByZWxhdGl2ZSB9KTtcbiAgcmV0dXJuIFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoc2hvdWxkUHJvY2Vzc0xpbmtDbGljayhldmVudCwgdGFyZ2V0KSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBsZXQgcmVwbGFjZTIgPSByZXBsYWNlUHJvcCAhPT0gdm9pZCAwID8gcmVwbGFjZVByb3AgOiBjcmVhdGVQYXRoKGxvY2F0aW9uKSA9PT0gY3JlYXRlUGF0aChwYXRoKTtcbiAgICAgICAgbmF2aWdhdGUodG8sIHtcbiAgICAgICAgICByZXBsYWNlOiByZXBsYWNlMixcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgICAgcmVsYXRpdmUsXG4gICAgICAgICAgdmlld1RyYW5zaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBsb2NhdGlvbixcbiAgICAgIG5hdmlnYXRlLFxuICAgICAgcGF0aCxcbiAgICAgIHJlcGxhY2VQcm9wLFxuICAgICAgc3RhdGUsXG4gICAgICB0YXJnZXQsXG4gICAgICB0byxcbiAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgIHJlbGF0aXZlLFxuICAgICAgdmlld1RyYW5zaXRpb25cbiAgICBdXG4gICk7XG59XG5mdW5jdGlvbiB1c2VTZWFyY2hQYXJhbXMoZGVmYXVsdEluaXQpIHtcbiAgd2FybmluZyhcbiAgICB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zICE9PSBcInVuZGVmaW5lZFwiLFxuICAgIGBZb3UgY2Fubm90IHVzZSB0aGUgXFxgdXNlU2VhcmNoUGFyYW1zXFxgIGhvb2sgaW4gYSBicm93c2VyIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgVVJMU2VhcmNoUGFyYW1zIEFQSS4gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBJbnRlcm5ldCBFeHBsb3JlciAxMSwgd2UgcmVjb21tZW5kIHlvdSBsb2FkIGEgcG9seWZpbGwgc3VjaCBhcyBodHRwczovL2dpdGh1Yi5jb20vdW5nYXAvdXJsLXNlYXJjaC1wYXJhbXMuYFxuICApO1xuICBsZXQgZGVmYXVsdFNlYXJjaFBhcmFtc1JlZiA9IFJlYWN0MTAudXNlUmVmKGNyZWF0ZVNlYXJjaFBhcmFtcyhkZWZhdWx0SW5pdCkpO1xuICBsZXQgaGFzU2V0U2VhcmNoUGFyYW1zUmVmID0gUmVhY3QxMC51c2VSZWYoZmFsc2UpO1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgc2VhcmNoUGFyYW1zID0gUmVhY3QxMC51c2VNZW1vKFxuICAgICgpID0+IChcbiAgICAgIC8vIE9ubHkgbWVyZ2UgaW4gdGhlIGRlZmF1bHRzIGlmIHdlIGhhdmVuJ3QgeWV0IGNhbGxlZCBzZXRTZWFyY2hQYXJhbXMuXG4gICAgICAvLyBPbmNlIHdlIGNhbGwgdGhhdCB3ZSB3YW50IHRob3NlIHRvIHRha2UgcHJlY2VkZW5jZSwgb3RoZXJ3aXNlIHlvdSBjYW4ndFxuICAgICAgLy8gcmVtb3ZlIGEgcGFyYW0gd2l0aCBzZXRTZWFyY2hQYXJhbXMoe30pIGlmIGl0IGhhcyBhbiBpbml0aWFsIHZhbHVlXG4gICAgICBnZXRTZWFyY2hQYXJhbXNGb3JMb2NhdGlvbihcbiAgICAgICAgbG9jYXRpb24uc2VhcmNoLFxuICAgICAgICBoYXNTZXRTZWFyY2hQYXJhbXNSZWYuY3VycmVudCA/IG51bGwgOiBkZWZhdWx0U2VhcmNoUGFyYW1zUmVmLmN1cnJlbnRcbiAgICAgIClcbiAgICApLFxuICAgIFtsb2NhdGlvbi5zZWFyY2hdXG4gICk7XG4gIGxldCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XG4gIGxldCBzZXRTZWFyY2hQYXJhbXMgPSBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIChuZXh0SW5pdCwgbmF2aWdhdGVPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBuZXdTZWFyY2hQYXJhbXMgPSBjcmVhdGVTZWFyY2hQYXJhbXMoXG4gICAgICAgIHR5cGVvZiBuZXh0SW5pdCA9PT0gXCJmdW5jdGlvblwiID8gbmV4dEluaXQoc2VhcmNoUGFyYW1zKSA6IG5leHRJbml0XG4gICAgICApO1xuICAgICAgaGFzU2V0U2VhcmNoUGFyYW1zUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgbmF2aWdhdGUoXCI/XCIgKyBuZXdTZWFyY2hQYXJhbXMsIG5hdmlnYXRlT3B0aW9ucyk7XG4gICAgfSxcbiAgICBbbmF2aWdhdGUsIHNlYXJjaFBhcmFtc11cbiAgKTtcbiAgcmV0dXJuIFtzZWFyY2hQYXJhbXMsIHNldFNlYXJjaFBhcmFtc107XG59XG52YXIgZmV0Y2hlcklkID0gMDtcbnZhciBnZXRVbmlxdWVGZXRjaGVySWQgPSAoKSA9PiBgX18ke1N0cmluZygrK2ZldGNoZXJJZCl9X19gO1xuZnVuY3Rpb24gdXNlU3VibWl0KCkge1xuICBsZXQgeyByb3V0ZXIgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0MyhcInVzZVN1Ym1pdFwiIC8qIFVzZVN1Ym1pdCAqLyk7XG4gIGxldCB7IGJhc2VuYW1lIH0gPSBSZWFjdDEwLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICBsZXQgY3VycmVudFJvdXRlSWQgPSB1c2VSb3V0ZUlkKCk7XG4gIHJldHVybiBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh0YXJnZXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgbGV0IHsgYWN0aW9uLCBtZXRob2QsIGVuY1R5cGUsIGZvcm1EYXRhLCBib2R5IH0gPSBnZXRGb3JtU3VibWlzc2lvbkluZm8oXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgYmFzZW5hbWVcbiAgICAgICk7XG4gICAgICBpZiAob3B0aW9ucy5uYXZpZ2F0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgbGV0IGtleSA9IG9wdGlvbnMuZmV0Y2hlcktleSB8fCBnZXRVbmlxdWVGZXRjaGVySWQoKTtcbiAgICAgICAgYXdhaXQgcm91dGVyLmZldGNoKGtleSwgY3VycmVudFJvdXRlSWQsIG9wdGlvbnMuYWN0aW9uIHx8IGFjdGlvbiwge1xuICAgICAgICAgIHByZXZlbnRTY3JvbGxSZXNldDogb3B0aW9ucy5wcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgYm9keSxcbiAgICAgICAgICBmb3JtTWV0aG9kOiBvcHRpb25zLm1ldGhvZCB8fCBtZXRob2QsXG4gICAgICAgICAgZm9ybUVuY1R5cGU6IG9wdGlvbnMuZW5jVHlwZSB8fCBlbmNUeXBlLFxuICAgICAgICAgIGZsdXNoU3luYzogb3B0aW9ucy5mbHVzaFN5bmNcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCByb3V0ZXIubmF2aWdhdGUob3B0aW9ucy5hY3Rpb24gfHwgYWN0aW9uLCB7XG4gICAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0OiBvcHRpb25zLnByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGZvcm1NZXRob2Q6IG9wdGlvbnMubWV0aG9kIHx8IG1ldGhvZCxcbiAgICAgICAgICBmb3JtRW5jVHlwZTogb3B0aW9ucy5lbmNUeXBlIHx8IGVuY1R5cGUsXG4gICAgICAgICAgcmVwbGFjZTogb3B0aW9ucy5yZXBsYWNlLFxuICAgICAgICAgIHN0YXRlOiBvcHRpb25zLnN0YXRlLFxuICAgICAgICAgIGZyb21Sb3V0ZUlkOiBjdXJyZW50Um91dGVJZCxcbiAgICAgICAgICBmbHVzaFN5bmM6IG9wdGlvbnMuZmx1c2hTeW5jLFxuICAgICAgICAgIHZpZXdUcmFuc2l0aW9uOiBvcHRpb25zLnZpZXdUcmFuc2l0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3JvdXRlciwgYmFzZW5hbWUsIGN1cnJlbnRSb3V0ZUlkXVxuICApO1xufVxuZnVuY3Rpb24gdXNlRm9ybUFjdGlvbihhY3Rpb24sIHsgcmVsYXRpdmUgfSA9IHt9KSB7XG4gIGxldCB7IGJhc2VuYW1lIH0gPSBSZWFjdDEwLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICBsZXQgcm91dGVDb250ZXh0ID0gUmVhY3QxMC51c2VDb250ZXh0KFJvdXRlQ29udGV4dCk7XG4gIGludmFyaWFudChyb3V0ZUNvbnRleHQsIFwidXNlRm9ybUFjdGlvbiBtdXN0IGJlIHVzZWQgaW5zaWRlIGEgUm91dGVDb250ZXh0XCIpO1xuICBsZXQgW21hdGNoXSA9IHJvdXRlQ29udGV4dC5tYXRjaGVzLnNsaWNlKC0xKTtcbiAgbGV0IHBhdGggPSB7IC4uLnVzZVJlc29sdmVkUGF0aChhY3Rpb24gPyBhY3Rpb24gOiBcIi5cIiwgeyByZWxhdGl2ZSB9KSB9O1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBpZiAoYWN0aW9uID09IG51bGwpIHtcbiAgICBwYXRoLnNlYXJjaCA9IGxvY2F0aW9uLnNlYXJjaDtcbiAgICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXRoLnNlYXJjaCk7XG4gICAgbGV0IGluZGV4VmFsdWVzID0gcGFyYW1zLmdldEFsbChcImluZGV4XCIpO1xuICAgIGxldCBoYXNOYWtlZEluZGV4UGFyYW0gPSBpbmRleFZhbHVlcy5zb21lKCh2KSA9PiB2ID09PSBcIlwiKTtcbiAgICBpZiAoaGFzTmFrZWRJbmRleFBhcmFtKSB7XG4gICAgICBwYXJhbXMuZGVsZXRlKFwiaW5kZXhcIik7XG4gICAgICBpbmRleFZhbHVlcy5maWx0ZXIoKHYpID0+IHYpLmZvckVhY2goKHYpID0+IHBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB2KSk7XG4gICAgICBsZXQgcXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgIHBhdGguc2VhcmNoID0gcXMgPyBgPyR7cXN9YCA6IFwiXCI7XG4gICAgfVxuICB9XG4gIGlmICgoIWFjdGlvbiB8fCBhY3Rpb24gPT09IFwiLlwiKSAmJiBtYXRjaC5yb3V0ZS5pbmRleCkge1xuICAgIHBhdGguc2VhcmNoID0gcGF0aC5zZWFyY2ggPyBwYXRoLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgXCI/aW5kZXgmXCIpIDogXCI/aW5kZXhcIjtcbiAgfVxuICBpZiAoYmFzZW5hbWUgIT09IFwiL1wiKSB7XG4gICAgcGF0aC5wYXRobmFtZSA9IHBhdGgucGF0aG5hbWUgPT09IFwiL1wiID8gYmFzZW5hbWUgOiBqb2luUGF0aHMoW2Jhc2VuYW1lLCBwYXRoLnBhdGhuYW1lXSk7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVBhdGgocGF0aCk7XG59XG5mdW5jdGlvbiB1c2VGZXRjaGVyKHtcbiAga2V5XG59ID0ge30pIHtcbiAgbGV0IHsgcm91dGVyIH0gPSB1c2VEYXRhUm91dGVyQ29udGV4dDMoXCJ1c2VGZXRjaGVyXCIgLyogVXNlRmV0Y2hlciAqLyk7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZTIoXCJ1c2VGZXRjaGVyXCIgLyogVXNlRmV0Y2hlciAqLyk7XG4gIGxldCBmZXRjaGVyRGF0YSA9IFJlYWN0MTAudXNlQ29udGV4dChGZXRjaGVyc0NvbnRleHQpO1xuICBsZXQgcm91dGUgPSBSZWFjdDEwLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHJvdXRlSWQgPSByb3V0ZS5tYXRjaGVzW3JvdXRlLm1hdGNoZXMubGVuZ3RoIC0gMV0/LnJvdXRlLmlkO1xuICBpbnZhcmlhbnQoZmV0Y2hlckRhdGEsIGB1c2VGZXRjaGVyIG11c3QgYmUgdXNlZCBpbnNpZGUgYSBGZXRjaGVyc0NvbnRleHRgKTtcbiAgaW52YXJpYW50KHJvdXRlLCBgdXNlRmV0Y2hlciBtdXN0IGJlIHVzZWQgaW5zaWRlIGEgUm91dGVDb250ZXh0YCk7XG4gIGludmFyaWFudChcbiAgICByb3V0ZUlkICE9IG51bGwsXG4gICAgYHVzZUZldGNoZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiByb3V0ZXMgdGhhdCBjb250YWluIGEgdW5pcXVlIFwiaWRcImBcbiAgKTtcbiAgbGV0IGRlZmF1bHRLZXkgPSBSZWFjdDEwLnVzZUlkKCk7XG4gIGxldCBbZmV0Y2hlcktleSwgc2V0RmV0Y2hlcktleV0gPSBSZWFjdDEwLnVzZVN0YXRlKGtleSB8fCBkZWZhdWx0S2V5KTtcbiAgaWYgKGtleSAmJiBrZXkgIT09IGZldGNoZXJLZXkpIHtcbiAgICBzZXRGZXRjaGVyS2V5KGtleSk7XG4gIH1cbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJvdXRlci5nZXRGZXRjaGVyKGZldGNoZXJLZXkpO1xuICAgIHJldHVybiAoKSA9PiByb3V0ZXIuZGVsZXRlRmV0Y2hlcihmZXRjaGVyS2V5KTtcbiAgfSwgW3JvdXRlciwgZmV0Y2hlcktleV0pO1xuICBsZXQgbG9hZCA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGhyZWYsIG9wdHMpID0+IHtcbiAgICAgIGludmFyaWFudChyb3V0ZUlkLCBcIk5vIHJvdXRlSWQgYXZhaWxhYmxlIGZvciBmZXRjaGVyLmxvYWQoKVwiKTtcbiAgICAgIGF3YWl0IHJvdXRlci5mZXRjaChmZXRjaGVyS2V5LCByb3V0ZUlkLCBocmVmLCBvcHRzKTtcbiAgICB9LFxuICAgIFtmZXRjaGVyS2V5LCByb3V0ZUlkLCByb3V0ZXJdXG4gICk7XG4gIGxldCBzdWJtaXRJbXBsID0gdXNlU3VibWl0KCk7XG4gIGxldCBzdWJtaXQgPSBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh0YXJnZXQsIG9wdHMpID0+IHtcbiAgICAgIGF3YWl0IHN1Ym1pdEltcGwodGFyZ2V0LCB7XG4gICAgICAgIC4uLm9wdHMsXG4gICAgICAgIG5hdmlnYXRlOiBmYWxzZSxcbiAgICAgICAgZmV0Y2hlcktleVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbZmV0Y2hlcktleSwgc3VibWl0SW1wbF1cbiAgKTtcbiAgbGV0IEZldGNoZXJGb3JtID0gUmVhY3QxMC51c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgRmV0Y2hlckZvcm0yID0gUmVhY3QxMC5mb3J3YXJkUmVmKFxuICAgICAgKHByb3BzLCByZWYpID0+IHtcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEwLmNyZWF0ZUVsZW1lbnQoRm9ybSwgeyAuLi5wcm9wcywgbmF2aWdhdGU6IGZhbHNlLCBmZXRjaGVyS2V5LCByZWYgfSk7XG4gICAgICB9XG4gICAgKTtcbiAgICBGZXRjaGVyRm9ybTIuZGlzcGxheU5hbWUgPSBcImZldGNoZXIuRm9ybVwiO1xuICAgIHJldHVybiBGZXRjaGVyRm9ybTI7XG4gIH0sIFtmZXRjaGVyS2V5XSk7XG4gIGxldCBmZXRjaGVyID0gc3RhdGUuZmV0Y2hlcnMuZ2V0KGZldGNoZXJLZXkpIHx8IElETEVfRkVUQ0hFUjtcbiAgbGV0IGRhdGEyID0gZmV0Y2hlckRhdGEuZ2V0KGZldGNoZXJLZXkpO1xuICBsZXQgZmV0Y2hlcldpdGhDb21wb25lbnRzID0gUmVhY3QxMC51c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBGb3JtOiBGZXRjaGVyRm9ybSxcbiAgICAgIHN1Ym1pdCxcbiAgICAgIGxvYWQsXG4gICAgICAuLi5mZXRjaGVyLFxuICAgICAgZGF0YTogZGF0YTJcbiAgICB9KSxcbiAgICBbRmV0Y2hlckZvcm0sIHN1Ym1pdCwgbG9hZCwgZmV0Y2hlciwgZGF0YTJdXG4gICk7XG4gIHJldHVybiBmZXRjaGVyV2l0aENvbXBvbmVudHM7XG59XG5mdW5jdGlvbiB1c2VGZXRjaGVycygpIHtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlMihcInVzZUZldGNoZXJzXCIgLyogVXNlRmV0Y2hlcnMgKi8pO1xuICByZXR1cm4gQXJyYXkuZnJvbShzdGF0ZS5mZXRjaGVycy5lbnRyaWVzKCkpLm1hcCgoW2tleSwgZmV0Y2hlcl0pID0+ICh7XG4gICAgLi4uZmV0Y2hlcixcbiAgICBrZXlcbiAgfSkpO1xufVxudmFyIFNDUk9MTF9SRVNUT1JBVElPTl9TVE9SQUdFX0tFWSA9IFwicmVhY3Qtcm91dGVyLXNjcm9sbC1wb3NpdGlvbnNcIjtcbnZhciBzYXZlZFNjcm9sbFBvc2l0aW9ucyA9IHt9O1xuZnVuY3Rpb24gZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkobG9jYXRpb24sIG1hdGNoZXMsIGJhc2VuYW1lLCBnZXRLZXkpIHtcbiAgbGV0IGtleSA9IG51bGw7XG4gIGlmIChnZXRLZXkpIHtcbiAgICBpZiAoYmFzZW5hbWUgIT09IFwiL1wiKSB7XG4gICAgICBrZXkgPSBnZXRLZXkoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5sb2NhdGlvbixcbiAgICAgICAgICBwYXRobmFtZTogc3RyaXBCYXNlbmFtZShsb2NhdGlvbi5wYXRobmFtZSwgYmFzZW5hbWUpIHx8IGxvY2F0aW9uLnBhdGhuYW1lXG4gICAgICAgIH0sXG4gICAgICAgIG1hdGNoZXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleSA9IGdldEtleShsb2NhdGlvbiwgbWF0Y2hlcyk7XG4gICAgfVxuICB9XG4gIGlmIChrZXkgPT0gbnVsbCkge1xuICAgIGtleSA9IGxvY2F0aW9uLmtleTtcbiAgfVxuICByZXR1cm4ga2V5O1xufVxuZnVuY3Rpb24gdXNlU2Nyb2xsUmVzdG9yYXRpb24oe1xuICBnZXRLZXksXG4gIHN0b3JhZ2VLZXlcbn0gPSB7fSkge1xuICBsZXQgeyByb3V0ZXIgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0MyhcInVzZVNjcm9sbFJlc3RvcmF0aW9uXCIgLyogVXNlU2Nyb2xsUmVzdG9yYXRpb24gKi8pO1xuICBsZXQgeyByZXN0b3JlU2Nyb2xsUG9zaXRpb24sIHByZXZlbnRTY3JvbGxSZXNldCB9ID0gdXNlRGF0YVJvdXRlclN0YXRlMihcbiAgICBcInVzZVNjcm9sbFJlc3RvcmF0aW9uXCIgLyogVXNlU2Nyb2xsUmVzdG9yYXRpb24gKi9cbiAgKTtcbiAgbGV0IHsgYmFzZW5hbWUgfSA9IFJlYWN0MTAudXNlQ29udGV4dChOYXZpZ2F0aW9uQ29udGV4dCk7XG4gIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCBtYXRjaGVzID0gdXNlTWF0Y2hlcygpO1xuICBsZXQgbmF2aWdhdGlvbiA9IHVzZU5hdmlnYXRpb24oKTtcbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5oaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uID0gXCJtYW51YWxcIjtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb24gPSBcImF1dG9cIjtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHVzZVBhZ2VIaWRlKFxuICAgIFJlYWN0MTAudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKG5hdmlnYXRpb24uc3RhdGUgPT09IFwiaWRsZVwiKSB7XG4gICAgICAgIGxldCBrZXkgPSBnZXRTY3JvbGxSZXN0b3JhdGlvbktleShsb2NhdGlvbiwgbWF0Y2hlcywgYmFzZW5hbWUsIGdldEtleSk7XG4gICAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb25zW2tleV0gPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgc3RvcmFnZUtleSB8fCBTQ1JPTExfUkVTVE9SQVRJT05fU1RPUkFHRV9LRVksXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc2F2ZWRTY3JvbGxQb3NpdGlvbnMpXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIGBGYWlsZWQgdG8gc2F2ZSBzY3JvbGwgcG9zaXRpb25zIGluIHNlc3Npb25TdG9yYWdlLCA8U2Nyb2xsUmVzdG9yYXRpb24gLz4gd2lsbCBub3Qgd29yayBwcm9wZXJseSAoJHtlcnJvcn0pLmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5oaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uID0gXCJhdXRvXCI7XG4gICAgfSwgW25hdmlnYXRpb24uc3RhdGUsIGdldEtleSwgYmFzZW5hbWUsIGxvY2F0aW9uLCBtYXRjaGVzLCBzdG9yYWdlS2V5XSlcbiAgKTtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIFJlYWN0MTAudXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBzZXNzaW9uUG9zaXRpb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgICAgICBzdG9yYWdlS2V5IHx8IFNDUk9MTF9SRVNUT1JBVElPTl9TVE9SQUdFX0tFWVxuICAgICAgICApO1xuICAgICAgICBpZiAoc2Vzc2lvblBvc2l0aW9ucykge1xuICAgICAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb25zID0gSlNPTi5wYXJzZShzZXNzaW9uUG9zaXRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgIH0sIFtzdG9yYWdlS2V5XSk7XG4gICAgUmVhY3QxMC51c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgbGV0IGRpc2FibGVTY3JvbGxSZXN0b3JhdGlvbiA9IHJvdXRlcj8uZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24oXG4gICAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb25zLFxuICAgICAgICAoKSA9PiB3aW5kb3cuc2Nyb2xsWSxcbiAgICAgICAgZ2V0S2V5ID8gKGxvY2F0aW9uMiwgbWF0Y2hlczIpID0+IGdldFNjcm9sbFJlc3RvcmF0aW9uS2V5KGxvY2F0aW9uMiwgbWF0Y2hlczIsIGJhc2VuYW1lLCBnZXRLZXkpIDogdm9pZCAwXG4gICAgICApO1xuICAgICAgcmV0dXJuICgpID0+IGRpc2FibGVTY3JvbGxSZXN0b3JhdGlvbiAmJiBkaXNhYmxlU2Nyb2xsUmVzdG9yYXRpb24oKTtcbiAgICB9LCBbcm91dGVyLCBiYXNlbmFtZSwgZ2V0S2V5XSk7XG4gICAgUmVhY3QxMC51c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHJlc3RvcmVTY3JvbGxQb3NpdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiByZXN0b3JlU2Nyb2xsUG9zaXRpb24gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHJlc3RvcmVTY3JvbGxQb3NpdGlvbik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChsb2NhdGlvbi5oYXNoKSB7XG4gICAgICAgIGxldCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgIGRlY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5oYXNoLnNsaWNlKDEpKVxuICAgICAgICApO1xuICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICBlbC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByZXZlbnRTY3JvbGxSZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgfSwgW2xvY2F0aW9uLCByZXN0b3JlU2Nyb2xsUG9zaXRpb24sIHByZXZlbnRTY3JvbGxSZXNldF0pO1xuICB9XG59XG5mdW5jdGlvbiB1c2VCZWZvcmVVbmxvYWQoY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgbGV0IHsgY2FwdHVyZSB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBvcHRzID0gY2FwdHVyZSAhPSBudWxsID8geyBjYXB0dXJlIH0gOiB2b2lkIDA7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwgY2FsbGJhY2ssIG9wdHMpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCBjYWxsYmFjaywgb3B0cyk7XG4gICAgfTtcbiAgfSwgW2NhbGxiYWNrLCBjYXB0dXJlXSk7XG59XG5mdW5jdGlvbiB1c2VQYWdlSGlkZShjYWxsYmFjaywgb3B0aW9ucykge1xuICBsZXQgeyBjYXB0dXJlIH0gPSBvcHRpb25zIHx8IHt9O1xuICBSZWFjdDEwLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IG9wdHMgPSBjYXB0dXJlICE9IG51bGwgPyB7IGNhcHR1cmUgfSA6IHZvaWQgMDtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBhZ2VoaWRlXCIsIGNhbGxiYWNrLCBvcHRzKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwYWdlaGlkZVwiLCBjYWxsYmFjaywgb3B0cyk7XG4gICAgfTtcbiAgfSwgW2NhbGxiYWNrLCBjYXB0dXJlXSk7XG59XG5mdW5jdGlvbiB1c2VQcm9tcHQoe1xuICB3aGVuLFxuICBtZXNzYWdlXG59KSB7XG4gIGxldCBibG9ja2VyID0gdXNlQmxvY2tlcih3aGVuKTtcbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChibG9ja2VyLnN0YXRlID09PSBcImJsb2NrZWRcIikge1xuICAgICAgbGV0IHByb2NlZWQgPSB3aW5kb3cuY29uZmlybShtZXNzYWdlKTtcbiAgICAgIGlmIChwcm9jZWVkKSB7XG4gICAgICAgIHNldFRpbWVvdXQoYmxvY2tlci5wcm9jZWVkLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJsb2NrZXIucmVzZXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtibG9ja2VyLCBtZXNzYWdlXSk7XG4gIFJlYWN0MTAudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYmxvY2tlci5zdGF0ZSA9PT0gXCJibG9ja2VkXCIgJiYgIXdoZW4pIHtcbiAgICAgIGJsb2NrZXIucmVzZXQoKTtcbiAgICB9XG4gIH0sIFtibG9ja2VyLCB3aGVuXSk7XG59XG5mdW5jdGlvbiB1c2VWaWV3VHJhbnNpdGlvblN0YXRlKHRvLCBvcHRzID0ge30pIHtcbiAgbGV0IHZ0Q29udGV4dCA9IFJlYWN0MTAudXNlQ29udGV4dChWaWV3VHJhbnNpdGlvbkNvbnRleHQpO1xuICBpbnZhcmlhbnQoXG4gICAgdnRDb250ZXh0ICE9IG51bGwsXG4gICAgXCJgdXNlVmlld1RyYW5zaXRpb25TdGF0ZWAgbXVzdCBiZSB1c2VkIHdpdGhpbiBgcmVhY3Qtcm91dGVyLWRvbWAncyBgUm91dGVyUHJvdmlkZXJgLiAgRGlkIHlvdSBhY2NpZGVudGFsbHkgaW1wb3J0IGBSb3V0ZXJQcm92aWRlcmAgZnJvbSBgcmVhY3Qtcm91dGVyYD9cIlxuICApO1xuICBsZXQgeyBiYXNlbmFtZSB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQzKFxuICAgIFwidXNlVmlld1RyYW5zaXRpb25TdGF0ZVwiIC8qIHVzZVZpZXdUcmFuc2l0aW9uU3RhdGUgKi9cbiAgKTtcbiAgbGV0IHBhdGggPSB1c2VSZXNvbHZlZFBhdGgodG8sIHsgcmVsYXRpdmU6IG9wdHMucmVsYXRpdmUgfSk7XG4gIGlmICghdnRDb250ZXh0LmlzVHJhbnNpdGlvbmluZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBsZXQgY3VycmVudFBhdGggPSBzdHJpcEJhc2VuYW1lKHZ0Q29udGV4dC5jdXJyZW50TG9jYXRpb24ucGF0aG5hbWUsIGJhc2VuYW1lKSB8fCB2dENvbnRleHQuY3VycmVudExvY2F0aW9uLnBhdGhuYW1lO1xuICBsZXQgbmV4dFBhdGggPSBzdHJpcEJhc2VuYW1lKHZ0Q29udGV4dC5uZXh0TG9jYXRpb24ucGF0aG5hbWUsIGJhc2VuYW1lKSB8fCB2dENvbnRleHQubmV4dExvY2F0aW9uLnBhdGhuYW1lO1xuICByZXR1cm4gbWF0Y2hQYXRoKHBhdGgucGF0aG5hbWUsIG5leHRQYXRoKSAhPSBudWxsIHx8IG1hdGNoUGF0aChwYXRoLnBhdGhuYW1lLCBjdXJyZW50UGF0aCkgIT0gbnVsbDtcbn1cblxuLy8gbGliL2RvbS9zZXJ2ZXIudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDExIGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gU3RhdGljUm91dGVyKHtcbiAgYmFzZW5hbWUsXG4gIGNoaWxkcmVuLFxuICBsb2NhdGlvbjogbG9jYXRpb25Qcm9wID0gXCIvXCJcbn0pIHtcbiAgaWYgKHR5cGVvZiBsb2NhdGlvblByb3AgPT09IFwic3RyaW5nXCIpIHtcbiAgICBsb2NhdGlvblByb3AgPSBwYXJzZVBhdGgobG9jYXRpb25Qcm9wKTtcbiAgfVxuICBsZXQgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gIGxldCBsb2NhdGlvbiA9IHtcbiAgICBwYXRobmFtZTogbG9jYXRpb25Qcm9wLnBhdGhuYW1lIHx8IFwiL1wiLFxuICAgIHNlYXJjaDogbG9jYXRpb25Qcm9wLnNlYXJjaCB8fCBcIlwiLFxuICAgIGhhc2g6IGxvY2F0aW9uUHJvcC5oYXNoIHx8IFwiXCIsXG4gICAgc3RhdGU6IGxvY2F0aW9uUHJvcC5zdGF0ZSAhPSBudWxsID8gbG9jYXRpb25Qcm9wLnN0YXRlIDogbnVsbCxcbiAgICBrZXk6IGxvY2F0aW9uUHJvcC5rZXkgfHwgXCJkZWZhdWx0XCJcbiAgfTtcbiAgbGV0IHN0YXRpY05hdmlnYXRvciA9IGdldFN0YXRlbGVzc05hdmlnYXRvcigpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChcbiAgICBSb3V0ZXIsXG4gICAge1xuICAgICAgYmFzZW5hbWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IGFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogc3RhdGljTmF2aWdhdG9yLFxuICAgICAgc3RhdGljOiB0cnVlXG4gICAgfVxuICApO1xufVxuZnVuY3Rpb24gU3RhdGljUm91dGVyUHJvdmlkZXIoe1xuICBjb250ZXh0LFxuICByb3V0ZXIsXG4gIGh5ZHJhdGUgPSB0cnVlLFxuICBub25jZVxufSkge1xuICBpbnZhcmlhbnQoXG4gICAgcm91dGVyICYmIGNvbnRleHQsXG4gICAgXCJZb3UgbXVzdCBwcm92aWRlIGByb3V0ZXJgIGFuZCBgY29udGV4dGAgdG8gPFN0YXRpY1JvdXRlclByb3ZpZGVyPlwiXG4gICk7XG4gIGxldCBkYXRhUm91dGVyQ29udGV4dCA9IHtcbiAgICByb3V0ZXIsXG4gICAgbmF2aWdhdG9yOiBnZXRTdGF0ZWxlc3NOYXZpZ2F0b3IoKSxcbiAgICBzdGF0aWM6IHRydWUsXG4gICAgc3RhdGljQ29udGV4dDogY29udGV4dCxcbiAgICBiYXNlbmFtZTogY29udGV4dC5iYXNlbmFtZSB8fCBcIi9cIlxuICB9O1xuICBsZXQgZmV0Y2hlcnNDb250ZXh0ID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgbGV0IGh5ZHJhdGVTY3JpcHQgPSBcIlwiO1xuICBpZiAoaHlkcmF0ZSAhPT0gZmFsc2UpIHtcbiAgICBsZXQgZGF0YTIgPSB7XG4gICAgICBsb2FkZXJEYXRhOiBjb250ZXh0LmxvYWRlckRhdGEsXG4gICAgICBhY3Rpb25EYXRhOiBjb250ZXh0LmFjdGlvbkRhdGEsXG4gICAgICBlcnJvcnM6IHNlcmlhbGl6ZUVycm9ycyhjb250ZXh0LmVycm9ycylcbiAgICB9O1xuICAgIGxldCBqc29uID0gaHRtbEVzY2FwZShKU09OLnN0cmluZ2lmeShKU09OLnN0cmluZ2lmeShkYXRhMikpKTtcbiAgICBoeWRyYXRlU2NyaXB0ID0gYHdpbmRvdy5fX3N0YXRpY1JvdXRlckh5ZHJhdGlvbkRhdGEgPSBKU09OLnBhcnNlKCR7anNvbn0pO2A7XG4gIH1cbiAgbGV0IHsgc3RhdGUgfSA9IGRhdGFSb3V0ZXJDb250ZXh0LnJvdXRlcjtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoUmVhY3QxMS5GcmFnbWVudCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChEYXRhUm91dGVyQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZGF0YVJvdXRlckNvbnRleHQgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChEYXRhUm91dGVyU3RhdGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBzdGF0ZSB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMS5jcmVhdGVFbGVtZW50KEZldGNoZXJzQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZmV0Y2hlcnNDb250ZXh0IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoVmlld1RyYW5zaXRpb25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IGlzVHJhbnNpdGlvbmluZzogZmFsc2UgfSB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMS5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZTogZGF0YVJvdXRlckNvbnRleHQuYmFzZW5hbWUsXG4gICAgICBsb2NhdGlvbjogc3RhdGUubG9jYXRpb24sXG4gICAgICBuYXZpZ2F0aW9uVHlwZTogc3RhdGUuaGlzdG9yeUFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogZGF0YVJvdXRlckNvbnRleHQubmF2aWdhdG9yLFxuICAgICAgc3RhdGljOiBkYXRhUm91dGVyQ29udGV4dC5zdGF0aWNcbiAgICB9LFxuICAgIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBEYXRhUm91dGVzMixcbiAgICAgIHtcbiAgICAgICAgcm91dGVzOiByb3V0ZXIucm91dGVzLFxuICAgICAgICBmdXR1cmU6IHJvdXRlci5mdXR1cmUsXG4gICAgICAgIHN0YXRlXG4gICAgICB9XG4gICAgKVxuICApKSkpKSwgaHlkcmF0ZVNjcmlwdCA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJzY3JpcHRcIixcbiAgICB7XG4gICAgICBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6IHRydWUsXG4gICAgICBub25jZSxcbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7IF9faHRtbDogaHlkcmF0ZVNjcmlwdCB9XG4gICAgfVxuICApIDogbnVsbCk7XG59XG5mdW5jdGlvbiBEYXRhUm91dGVzMih7XG4gIHJvdXRlcyxcbiAgZnV0dXJlLFxuICBzdGF0ZVxufSkge1xuICByZXR1cm4gdXNlUm91dGVzSW1wbChyb3V0ZXMsIHZvaWQgMCwgc3RhdGUsIGZ1dHVyZSk7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVFcnJvcnMoZXJyb3JzKSB7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gbnVsbDtcbiAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhlcnJvcnMpO1xuICBsZXQgc2VyaWFsaXplZCA9IHt9O1xuICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIGVudHJpZXMpIHtcbiAgICBpZiAoaXNSb3V0ZUVycm9yUmVzcG9uc2UodmFsKSkge1xuICAgICAgc2VyaWFsaXplZFtrZXldID0geyAuLi52YWwsIF9fdHlwZTogXCJSb3V0ZUVycm9yUmVzcG9uc2VcIiB9O1xuICAgIH0gZWxzZSBpZiAodmFsIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IHtcbiAgICAgICAgbWVzc2FnZTogdmFsLm1lc3NhZ2UsXG4gICAgICAgIF9fdHlwZTogXCJFcnJvclwiLFxuICAgICAgICAvLyBJZiB0aGlzIGlzIGEgc3ViY2xhc3MgKGkuZS4sIFJlZmVyZW5jZUVycm9yKSwgc2VuZCB1cCB0aGUgdHlwZSBzbyB3ZVxuICAgICAgICAvLyBjYW4gcmUtY3JlYXRlIHRoZSBzYW1lIHR5cGUgZHVyaW5nIGh5ZHJhdGlvbi5cbiAgICAgICAgLi4udmFsLm5hbWUgIT09IFwiRXJyb3JcIiA/IHtcbiAgICAgICAgICBfX3N1YlR5cGU6IHZhbC5uYW1lXG4gICAgICAgIH0gOiB7fVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VyaWFsaXplZFtrZXldID0gdmFsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2VyaWFsaXplZDtcbn1cbmZ1bmN0aW9uIGdldFN0YXRlbGVzc05hdmlnYXRvcigpIHtcbiAgcmV0dXJuIHtcbiAgICBjcmVhdGVIcmVmLFxuICAgIGVuY29kZUxvY2F0aW9uLFxuICAgIHB1c2godG8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBjYW5ub3QgdXNlIG5hdmlnYXRvci5wdXNoKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LiBUaGlzIGVycm9yIHdhcyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB5b3UgZGlkIGEgXFxgbmF2aWdhdGUoJHtKU09OLnN0cmluZ2lmeSh0byl9KVxcYCBzb21ld2hlcmUgaW4geW91ciBhcHAuYFxuICAgICAgKTtcbiAgICB9LFxuICAgIHJlcGxhY2UodG8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBjYW5ub3QgdXNlIG5hdmlnYXRvci5yZXBsYWNlKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LiBUaGlzIGVycm9yIHdhcyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB5b3UgZGlkIGEgXFxgbmF2aWdhdGUoJHtKU09OLnN0cmluZ2lmeSh0byl9LCB7IHJlcGxhY2U6IHRydWUgfSlcXGAgc29tZXdoZXJlIGluIHlvdXIgYXBwLmBcbiAgICAgICk7XG4gICAgfSxcbiAgICBnbyhkZWx0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbm5vdCB1c2UgbmF2aWdhdG9yLmdvKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LiBUaGlzIGVycm9yIHdhcyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB5b3UgZGlkIGEgXFxgbmF2aWdhdGUoJHtkZWx0YX0pXFxgIHNvbWV3aGVyZSBpbiB5b3VyIGFwcC5gXG4gICAgICApO1xuICAgIH0sXG4gICAgYmFjaygpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBjYW5ub3QgdXNlIG5hdmlnYXRvci5iYWNrKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LmBcbiAgICAgICk7XG4gICAgfSxcbiAgICBmb3J3YXJkKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbm5vdCB1c2UgbmF2aWdhdG9yLmZvcndhcmQoKSBvbiB0aGUgc2VydmVyIGJlY2F1c2UgaXQgaXMgYSBzdGF0ZWxlc3MgZW52aXJvbm1lbnQuYFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNIYW5kbGVyMihyb3V0ZXMsIG9wdHMpIHtcbiAgcmV0dXJuIGNyZWF0ZVN0YXRpY0hhbmRsZXIocm91dGVzLCB7XG4gICAgLi4ub3B0cyxcbiAgICBtYXBSb3V0ZVByb3BlcnRpZXNcbiAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNSb3V0ZXIocm91dGVzLCBjb250ZXh0LCBvcHRzID0ge30pIHtcbiAgbGV0IG1hbmlmZXN0ID0ge307XG4gIGxldCBkYXRhUm91dGVzID0gY29udmVydFJvdXRlc1RvRGF0YVJvdXRlcyhcbiAgICByb3V0ZXMsXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzLFxuICAgIHZvaWQgMCxcbiAgICBtYW5pZmVzdFxuICApO1xuICBsZXQgbWF0Y2hlcyA9IGNvbnRleHQubWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiB7XG4gICAgbGV0IHJvdXRlID0gbWFuaWZlc3RbbWF0Y2gucm91dGUuaWRdIHx8IG1hdGNoLnJvdXRlO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5tYXRjaCxcbiAgICAgIHJvdXRlXG4gICAgfTtcbiAgfSk7XG4gIGxldCBtc2cgPSAobWV0aG9kKSA9PiBgWW91IGNhbm5vdCB1c2Ugcm91dGVyLiR7bWV0aG9kfSgpIG9uIHRoZSBzZXJ2ZXIgYmVjYXVzZSBpdCBpcyBhIHN0YXRlbGVzcyBlbnZpcm9ubWVudGA7XG4gIHJldHVybiB7XG4gICAgZ2V0IGJhc2VuYW1lKCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuYmFzZW5hbWU7XG4gICAgfSxcbiAgICBnZXQgZnV0dXJlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3B0cz8uZnV0dXJlXG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0IHN0YXRlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGlzdG9yeUFjdGlvbjogXCJQT1BcIiAvKiBQb3AgKi8sXG4gICAgICAgIGxvY2F0aW9uOiBjb250ZXh0LmxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBsb2FkZXJEYXRhOiBjb250ZXh0LmxvYWRlckRhdGEsXG4gICAgICAgIGFjdGlvbkRhdGE6IGNvbnRleHQuYWN0aW9uRGF0YSxcbiAgICAgICAgZXJyb3JzOiBjb250ZXh0LmVycm9ycyxcbiAgICAgICAgaW5pdGlhbGl6ZWQ6IHRydWUsXG4gICAgICAgIG5hdmlnYXRpb246IElETEVfTkFWSUdBVElPTixcbiAgICAgICAgcmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBudWxsLFxuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IGZhbHNlLFxuICAgICAgICByZXZhbGlkYXRpb246IFwiaWRsZVwiLFxuICAgICAgICBmZXRjaGVyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSxcbiAgICAgICAgYmxvY2tlcnM6IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKClcbiAgICAgIH07XG4gICAgfSxcbiAgICBnZXQgcm91dGVzKCkge1xuICAgICAgcmV0dXJuIGRhdGFSb3V0ZXM7XG4gICAgfSxcbiAgICBnZXQgd2luZG93KCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9LFxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICB0aHJvdyBtc2coXCJpbml0aWFsaXplXCIpO1xuICAgIH0sXG4gICAgc3Vic2NyaWJlKCkge1xuICAgICAgdGhyb3cgbXNnKFwic3Vic2NyaWJlXCIpO1xuICAgIH0sXG4gICAgZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24oKSB7XG4gICAgICB0aHJvdyBtc2coXCJlbmFibGVTY3JvbGxSZXN0b3JhdGlvblwiKTtcbiAgICB9LFxuICAgIG5hdmlnYXRlKCkge1xuICAgICAgdGhyb3cgbXNnKFwibmF2aWdhdGVcIik7XG4gICAgfSxcbiAgICBmZXRjaCgpIHtcbiAgICAgIHRocm93IG1zZyhcImZldGNoXCIpO1xuICAgIH0sXG4gICAgcmV2YWxpZGF0ZSgpIHtcbiAgICAgIHRocm93IG1zZyhcInJldmFsaWRhdGVcIik7XG4gICAgfSxcbiAgICBjcmVhdGVIcmVmLFxuICAgIGVuY29kZUxvY2F0aW9uLFxuICAgIGdldEZldGNoZXIoKSB7XG4gICAgICByZXR1cm4gSURMRV9GRVRDSEVSO1xuICAgIH0sXG4gICAgZGVsZXRlRmV0Y2hlcigpIHtcbiAgICAgIHRocm93IG1zZyhcImRlbGV0ZUZldGNoZXJcIik7XG4gICAgfSxcbiAgICBkaXNwb3NlKCkge1xuICAgICAgdGhyb3cgbXNnKFwiZGlzcG9zZVwiKTtcbiAgICB9LFxuICAgIGdldEJsb2NrZXIoKSB7XG4gICAgICByZXR1cm4gSURMRV9CTE9DS0VSO1xuICAgIH0sXG4gICAgZGVsZXRlQmxvY2tlcigpIHtcbiAgICAgIHRocm93IG1zZyhcImRlbGV0ZUJsb2NrZXJcIik7XG4gICAgfSxcbiAgICBwYXRjaFJvdXRlcygpIHtcbiAgICAgIHRocm93IG1zZyhcInBhdGNoUm91dGVzXCIpO1xuICAgIH0sXG4gICAgX2ludGVybmFsRmV0Y2hDb250cm9sbGVyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSxcbiAgICBfaW50ZXJuYWxTZXRSb3V0ZXMoKSB7XG4gICAgICB0aHJvdyBtc2coXCJfaW50ZXJuYWxTZXRSb3V0ZXNcIik7XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlSHJlZih0bykge1xuICByZXR1cm4gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gdG8gOiBjcmVhdGVQYXRoKHRvKTtcbn1cbmZ1bmN0aW9uIGVuY29kZUxvY2F0aW9uKHRvKSB7XG4gIGxldCBocmVmID0gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gdG8gOiBjcmVhdGVQYXRoKHRvKTtcbiAgaHJlZiA9IGhyZWYucmVwbGFjZSgvICQvLCBcIiUyMFwiKTtcbiAgbGV0IGVuY29kZWQgPSBBQlNPTFVURV9VUkxfUkVHRVgzLnRlc3QoaHJlZikgPyBuZXcgVVJMKGhyZWYpIDogbmV3IFVSTChocmVmLCBcImh0dHA6Ly9sb2NhbGhvc3RcIik7XG4gIHJldHVybiB7XG4gICAgcGF0aG5hbWU6IGVuY29kZWQucGF0aG5hbWUsXG4gICAgc2VhcmNoOiBlbmNvZGVkLnNlYXJjaCxcbiAgICBoYXNoOiBlbmNvZGVkLmhhc2hcbiAgfTtcbn1cbnZhciBBQlNPTFVURV9VUkxfUkVHRVgzID0gL14oPzpbYS16XVthLXowLTkrLi1dKjp8XFwvXFwvKS9pO1xudmFyIEVTQ0FQRV9MT09LVVAyID0ge1xuICBcIiZcIjogXCJcXFxcdTAwMjZcIixcbiAgXCI+XCI6IFwiXFxcXHUwMDNlXCIsXG4gIFwiPFwiOiBcIlxcXFx1MDAzY1wiLFxuICBcIlxcdTIwMjhcIjogXCJcXFxcdTIwMjhcIixcbiAgXCJcXHUyMDI5XCI6IFwiXFxcXHUyMDI5XCJcbn07XG52YXIgRVNDQVBFX1JFR0VYMiA9IC9bJj48XFx1MjAyOFxcdTIwMjldL2c7XG5mdW5jdGlvbiBodG1sRXNjYXBlKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoRVNDQVBFX1JFR0VYMiwgKG1hdGNoKSA9PiBFU0NBUEVfTE9PS1VQMlttYXRjaF0pO1xufVxuXG4vLyBsaWIvZG9tL3Nzci9zZXJ2ZXIudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDEyIGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gU2VydmVyUm91dGVyKHtcbiAgY29udGV4dCxcbiAgdXJsLFxuICBhYm9ydERlbGF5LFxuICBub25jZVxufSkge1xuICBpZiAodHlwZW9mIHVybCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHVybCA9IG5ldyBVUkwodXJsKTtcbiAgfVxuICBsZXQgeyBtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCBjcml0aWNhbENzcywgc2VydmVySGFuZG9mZlN0cmluZyB9ID0gY29udGV4dDtcbiAgbGV0IHJvdXRlcyA9IGNyZWF0ZVNlcnZlclJvdXRlcyhcbiAgICBtYW5pZmVzdC5yb3V0ZXMsXG4gICAgcm91dGVNb2R1bGVzLFxuICAgIGNvbnRleHQuZnV0dXJlLFxuICAgIGNvbnRleHQuaXNTcGFNb2RlXG4gICk7XG4gIGNvbnRleHQuc3RhdGljSGFuZGxlckNvbnRleHQubG9hZGVyRGF0YSA9IHtcbiAgICAuLi5jb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0LmxvYWRlckRhdGFcbiAgfTtcbiAgZm9yIChsZXQgbWF0Y2ggb2YgY29udGV4dC5zdGF0aWNIYW5kbGVyQ29udGV4dC5tYXRjaGVzKSB7XG4gICAgbGV0IHJvdXRlSWQgPSBtYXRjaC5yb3V0ZS5pZDtcbiAgICBsZXQgcm91dGUgPSByb3V0ZU1vZHVsZXNbcm91dGVJZF07XG4gICAgbGV0IG1hbmlmZXN0Um91dGUgPSBjb250ZXh0Lm1hbmlmZXN0LnJvdXRlc1tyb3V0ZUlkXTtcbiAgICBpZiAocm91dGUgJiYgbWFuaWZlc3RSb3V0ZSAmJiBzaG91bGRIeWRyYXRlUm91dGVMb2FkZXIobWFuaWZlc3RSb3V0ZSwgcm91dGUsIGNvbnRleHQuaXNTcGFNb2RlKSAmJiAocm91dGUuSHlkcmF0ZUZhbGxiYWNrIHx8ICFtYW5pZmVzdFJvdXRlLmhhc0xvYWRlcikpIHtcbiAgICAgIGRlbGV0ZSBjb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0LmxvYWRlckRhdGFbcm91dGVJZF07XG4gICAgfVxuICB9XG4gIGxldCByb3V0ZXIgPSBjcmVhdGVTdGF0aWNSb3V0ZXIocm91dGVzLCBjb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0KTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEyLmNyZWF0ZUVsZW1lbnQoUmVhY3QxMi5GcmFnbWVudCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0MTIuY3JlYXRlRWxlbWVudChcbiAgICBGcmFtZXdvcmtDb250ZXh0LlByb3ZpZGVyLFxuICAgIHtcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIG1hbmlmZXN0LFxuICAgICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICAgIGNyaXRpY2FsQ3NzLFxuICAgICAgICBzZXJ2ZXJIYW5kb2ZmU3RyaW5nLFxuICAgICAgICBmdXR1cmU6IGNvbnRleHQuZnV0dXJlLFxuICAgICAgICBpc1NwYU1vZGU6IGNvbnRleHQuaXNTcGFNb2RlLFxuICAgICAgICBzZXJpYWxpemVFcnJvcjogY29udGV4dC5zZXJpYWxpemVFcnJvcixcbiAgICAgICAgYWJvcnREZWxheSxcbiAgICAgICAgcmVuZGVyTWV0YTogY29udGV4dC5yZW5kZXJNZXRhXG4gICAgICB9XG4gICAgfSxcbiAgICAvKiBAX19QVVJFX18gKi8gUmVhY3QxMi5jcmVhdGVFbGVtZW50KFJlbWl4RXJyb3JCb3VuZGFyeSwgeyBsb2NhdGlvbjogcm91dGVyLnN0YXRlLmxvY2F0aW9uIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBTdGF0aWNSb3V0ZXJQcm92aWRlcixcbiAgICAgIHtcbiAgICAgICAgcm91dGVyLFxuICAgICAgICBjb250ZXh0OiBjb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0LFxuICAgICAgICBoeWRyYXRlOiBmYWxzZVxuICAgICAgfVxuICAgICkpXG4gICksIGNvbnRleHQuc2VydmVySGFuZG9mZlN0cmVhbSA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEyLmNyZWF0ZUVsZW1lbnQoUmVhY3QxMi5TdXNwZW5zZSwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0MTIuY3JlYXRlRWxlbWVudChcbiAgICBTdHJlYW1UcmFuc2ZlcixcbiAgICB7XG4gICAgICBjb250ZXh0LFxuICAgICAgaWRlbnRpZmllcjogMCxcbiAgICAgIHJlYWRlcjogY29udGV4dC5zZXJ2ZXJIYW5kb2ZmU3RyZWFtLmdldFJlYWRlcigpLFxuICAgICAgdGV4dERlY29kZXI6IG5ldyBUZXh0RGVjb2RlcigpLFxuICAgICAgbm9uY2VcbiAgICB9XG4gICkpIDogbnVsbCk7XG59XG5cbi8vIGxpYi9kb20vc3NyL3JvdXRlcy10ZXN0LXN0dWIudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDEzIGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gY3JlYXRlUm91dGVzU3R1Yihyb3V0ZXMsIGNvbnRleHQgPSB7fSkge1xuICByZXR1cm4gZnVuY3Rpb24gUm91dGVzVGVzdFN0dWIoe1xuICAgIGluaXRpYWxFbnRyaWVzLFxuICAgIGluaXRpYWxJbmRleCxcbiAgICBoeWRyYXRpb25EYXRhLFxuICAgIGZ1dHVyZVxuICB9KSB7XG4gICAgbGV0IHJvdXRlclJlZiA9IFJlYWN0MTMudXNlUmVmKCk7XG4gICAgbGV0IHJlbWl4Q29udGV4dFJlZiA9IFJlYWN0MTMudXNlUmVmKCk7XG4gICAgaWYgKHJvdXRlclJlZi5jdXJyZW50ID09IG51bGwpIHtcbiAgICAgIHJlbWl4Q29udGV4dFJlZi5jdXJyZW50ID0ge1xuICAgICAgICBmdXR1cmU6IHt9LFxuICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgIHJvdXRlczoge30sXG4gICAgICAgICAgZW50cnk6IHsgaW1wb3J0czogW10sIG1vZHVsZTogXCJcIiB9LFxuICAgICAgICAgIHVybDogXCJcIixcbiAgICAgICAgICB2ZXJzaW9uOiBcIlwiXG4gICAgICAgIH0sXG4gICAgICAgIHJvdXRlTW9kdWxlczoge30sXG4gICAgICAgIGlzU3BhTW9kZTogZmFsc2VcbiAgICAgIH07XG4gICAgICBsZXQgcGF0Y2hlZCA9IHByb2Nlc3NSb3V0ZXMoXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbG9hZGVyL2FjdGlvbiBjb250ZXh0IHR5cGVzIGRvbid0IG1hdGNoIDovXG4gICAgICAgIGNvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXMocm91dGVzLCAocikgPT4gciksXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHJlbWl4Q29udGV4dFJlZi5jdXJyZW50Lm1hbmlmZXN0LFxuICAgICAgICByZW1peENvbnRleHRSZWYuY3VycmVudC5yb3V0ZU1vZHVsZXNcbiAgICAgICk7XG4gICAgICByb3V0ZXJSZWYuY3VycmVudCA9IGNyZWF0ZU1lbW9yeVJvdXRlcihwYXRjaGVkLCB7XG4gICAgICAgIGluaXRpYWxFbnRyaWVzLFxuICAgICAgICBpbml0aWFsSW5kZXgsXG4gICAgICAgIGh5ZHJhdGlvbkRhdGFcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTMuY3JlYXRlRWxlbWVudChGcmFtZXdvcmtDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiByZW1peENvbnRleHRSZWYuY3VycmVudCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMy5jcmVhdGVFbGVtZW50KFJvdXRlclByb3ZpZGVyLCB7IHJvdXRlcjogcm91dGVyUmVmLmN1cnJlbnQgfSkpO1xuICB9O1xufVxuZnVuY3Rpb24gcHJvY2Vzc1JvdXRlcyhyb3V0ZXMsIGNvbnRleHQsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIHBhcmVudElkKSB7XG4gIHJldHVybiByb3V0ZXMubWFwKChyb3V0ZSkgPT4ge1xuICAgIGlmICghcm91dGUuaWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJFeHBlY3RlZCBhIHJvdXRlLmlkIGluIEByZW1peC1ydW4vdGVzdGluZyBwcm9jZXNzUm91dGVzKCkgZnVuY3Rpb25cIlxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IHsgbG9hZGVyLCBhY3Rpb24gfSA9IHJvdXRlO1xuICAgIGxldCBuZXdSb3V0ZSA9IHtcbiAgICAgIGlkOiByb3V0ZS5pZCxcbiAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICBpbmRleDogcm91dGUuaW5kZXgsXG4gICAgICBDb21wb25lbnQ6IHJvdXRlLkNvbXBvbmVudCxcbiAgICAgIEh5ZHJhdGVGYWxsYmFjazogcm91dGUuSHlkcmF0ZUZhbGxiYWNrLFxuICAgICAgRXJyb3JCb3VuZGFyeTogcm91dGUuRXJyb3JCb3VuZGFyeSxcbiAgICAgIGFjdGlvbjogYWN0aW9uID8gKGFyZ3MpID0+IGFjdGlvbih7IC4uLmFyZ3MsIGNvbnRleHQgfSkgOiB2b2lkIDAsXG4gICAgICBsb2FkZXI6IGxvYWRlciA/IChhcmdzKSA9PiBsb2FkZXIoeyAuLi5hcmdzLCBjb250ZXh0IH0pIDogdm9pZCAwLFxuICAgICAgaGFuZGxlOiByb3V0ZS5oYW5kbGUsXG4gICAgICBzaG91bGRSZXZhbGlkYXRlOiByb3V0ZS5zaG91bGRSZXZhbGlkYXRlXG4gICAgfTtcbiAgICBsZXQgZW50cnlSb3V0ZSA9IHtcbiAgICAgIGlkOiByb3V0ZS5pZCxcbiAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICBpbmRleDogcm91dGUuaW5kZXgsXG4gICAgICBwYXJlbnRJZCxcbiAgICAgIGhhc0FjdGlvbjogcm91dGUuYWN0aW9uICE9IG51bGwsXG4gICAgICBoYXNMb2FkZXI6IHJvdXRlLmxvYWRlciAhPSBudWxsLFxuICAgICAgLy8gV2hlbiB0ZXN0aW5nIHJvdXRlcywgeW91IHNob3VsZCBqdXN0IGJlIHN0dWJiaW5nIGxvYWRlci9hY3Rpb24sIG5vdFxuICAgICAgLy8gdHJ5aW5nIHRvIHJlLWltcGxlbWVudCB0aGUgZnVsbCBsb2FkZXIvY2xpZW50TG9hZGVyL1NTUi9oeWRyYXRpb24gZmxvdy5cbiAgICAgIC8vIFRoYXQgaXMgYmV0dGVyIHRlc3RlZCB2aWEgRTJFIHRlc3RzLlxuICAgICAgaGFzQ2xpZW50QWN0aW9uOiBmYWxzZSxcbiAgICAgIGhhc0NsaWVudExvYWRlcjogZmFsc2UsXG4gICAgICBoYXNFcnJvckJvdW5kYXJ5OiByb3V0ZS5FcnJvckJvdW5kYXJ5ICE9IG51bGwsXG4gICAgICBtb2R1bGU6IFwiYnVpbGQvc3R1Yi1wYXRoLXRvLW1vZHVsZS5qc1wiXG4gICAgICAvLyBhbnkgbmVlZCBmb3IgdGhpcz9cbiAgICB9O1xuICAgIG1hbmlmZXN0LnJvdXRlc1tuZXdSb3V0ZS5pZF0gPSBlbnRyeVJvdXRlO1xuICAgIHJvdXRlTW9kdWxlc1tyb3V0ZS5pZF0gPSB7XG4gICAgICBkZWZhdWx0OiByb3V0ZS5Db21wb25lbnQgfHwgT3V0bGV0LFxuICAgICAgRXJyb3JCb3VuZGFyeTogcm91dGUuRXJyb3JCb3VuZGFyeSB8fCB2b2lkIDAsXG4gICAgICBoYW5kbGU6IHJvdXRlLmhhbmRsZSxcbiAgICAgIGxpbmtzOiByb3V0ZS5saW5rcyxcbiAgICAgIG1ldGE6IHJvdXRlLm1ldGEsXG4gICAgICBzaG91bGRSZXZhbGlkYXRlOiByb3V0ZS5zaG91bGRSZXZhbGlkYXRlXG4gICAgfTtcbiAgICBpZiAocm91dGUuY2hpbGRyZW4pIHtcbiAgICAgIG5ld1JvdXRlLmNoaWxkcmVuID0gcHJvY2Vzc1JvdXRlcyhcbiAgICAgICAgcm91dGUuY2hpbGRyZW4sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIG1hbmlmZXN0LFxuICAgICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICAgIG5ld1JvdXRlLmlkXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3Um91dGU7XG4gIH0pO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvY29va2llcy50c1xuaW1wb3J0IHsgcGFyc2UsIHNlcmlhbGl6ZSB9IGZyb20gXCJjb29raWVcIjtcblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2NyeXB0by50c1xudmFyIGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbnZhciBzaWduID0gYXN5bmMgKHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgbGV0IGRhdGEyID0gZW5jb2Rlci5lbmNvZGUodmFsdWUpO1xuICBsZXQga2V5ID0gYXdhaXQgY3JlYXRlS2V5MihzZWNyZXQsIFtcInNpZ25cIl0pO1xuICBsZXQgc2lnbmF0dXJlID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5zaWduKFwiSE1BQ1wiLCBrZXksIGRhdGEyKTtcbiAgbGV0IGhhc2ggPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4ubmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKSkpLnJlcGxhY2UoXG4gICAgLz0rJC8sXG4gICAgXCJcIlxuICApO1xuICByZXR1cm4gdmFsdWUgKyBcIi5cIiArIGhhc2g7XG59O1xudmFyIHVuc2lnbiA9IGFzeW5jIChjb29raWUsIHNlY3JldCkgPT4ge1xuICBsZXQgaW5kZXggPSBjb29raWUubGFzdEluZGV4T2YoXCIuXCIpO1xuICBsZXQgdmFsdWUgPSBjb29raWUuc2xpY2UoMCwgaW5kZXgpO1xuICBsZXQgaGFzaCA9IGNvb2tpZS5zbGljZShpbmRleCArIDEpO1xuICBsZXQgZGF0YTIgPSBlbmNvZGVyLmVuY29kZSh2YWx1ZSk7XG4gIGxldCBrZXkgPSBhd2FpdCBjcmVhdGVLZXkyKHNlY3JldCwgW1widmVyaWZ5XCJdKTtcbiAgbGV0IHNpZ25hdHVyZSA9IGJ5dGVTdHJpbmdUb1VpbnQ4QXJyYXkoYXRvYihoYXNoKSk7XG4gIGxldCB2YWxpZCA9IGF3YWl0IGNyeXB0by5zdWJ0bGUudmVyaWZ5KFwiSE1BQ1wiLCBrZXksIHNpZ25hdHVyZSwgZGF0YTIpO1xuICByZXR1cm4gdmFsaWQgPyB2YWx1ZSA6IGZhbHNlO1xufTtcbnZhciBjcmVhdGVLZXkyID0gYXN5bmMgKHNlY3JldCwgdXNhZ2VzKSA9PiBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcbiAgXCJyYXdcIixcbiAgZW5jb2Rlci5lbmNvZGUoc2VjcmV0KSxcbiAgeyBuYW1lOiBcIkhNQUNcIiwgaGFzaDogXCJTSEEtMjU2XCIgfSxcbiAgZmFsc2UsXG4gIHVzYWdlc1xuKTtcbmZ1bmN0aW9uIGJ5dGVTdHJpbmdUb1VpbnQ4QXJyYXkoYnl0ZVN0cmluZykge1xuICBsZXQgYXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlU3RyaW5nLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZVN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgIGFycmF5W2ldID0gYnl0ZVN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2Nvb2tpZXMudHNcbnZhciBjcmVhdGVDb29raWUgPSAobmFtZSwgY29va2llT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGxldCB7IHNlY3JldHMgPSBbXSwgLi4ub3B0aW9ucyB9ID0ge1xuICAgIHBhdGg6IFwiL1wiLFxuICAgIHNhbWVTaXRlOiBcImxheFwiLFxuICAgIC4uLmNvb2tpZU9wdGlvbnNcbiAgfTtcbiAgd2Fybk9uY2VBYm91dEV4cGlyZXNDb29raWUobmFtZSwgb3B0aW9ucy5leHBpcmVzKTtcbiAgcmV0dXJuIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH0sXG4gICAgZ2V0IGlzU2lnbmVkKCkge1xuICAgICAgcmV0dXJuIHNlY3JldHMubGVuZ3RoID4gMDtcbiAgICB9LFxuICAgIGdldCBleHBpcmVzKCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvcHRpb25zLm1heEFnZSAhPT0gXCJ1bmRlZmluZWRcIiA/IG5ldyBEYXRlKERhdGUubm93KCkgKyBvcHRpb25zLm1heEFnZSAqIDFlMykgOiBvcHRpb25zLmV4cGlyZXM7XG4gICAgfSxcbiAgICBhc3luYyBwYXJzZShjb29raWVIZWFkZXIsIHBhcnNlT3B0aW9ucykge1xuICAgICAgaWYgKCFjb29raWVIZWFkZXIpIHJldHVybiBudWxsO1xuICAgICAgbGV0IGNvb2tpZXMgPSBwYXJzZShjb29raWVIZWFkZXIsIHsgLi4ub3B0aW9ucywgLi4ucGFyc2VPcHRpb25zIH0pO1xuICAgICAgaWYgKG5hbWUgaW4gY29va2llcykge1xuICAgICAgICBsZXQgdmFsdWUgPSBjb29raWVzW25hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlICE9PSBcIlwiKSB7XG4gICAgICAgICAgbGV0IGRlY29kZWQgPSBhd2FpdCBkZWNvZGVDb29raWVWYWx1ZSh2YWx1ZSwgc2VjcmV0cyk7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgc2VyaWFsaXplKHZhbHVlLCBzZXJpYWxpemVPcHRpb25zKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplKFxuICAgICAgICBuYW1lLFxuICAgICAgICB2YWx1ZSA9PT0gXCJcIiA/IFwiXCIgOiBhd2FpdCBlbmNvZGVDb29raWVWYWx1ZSh2YWx1ZSwgc2VjcmV0cyksXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIC4uLnNlcmlhbGl6ZU9wdGlvbnNcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH07XG59O1xudmFyIGlzQ29va2llID0gKG9iamVjdCkgPT4ge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgdHlwZW9mIG9iamVjdC5uYW1lID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBvYmplY3QuaXNTaWduZWQgPT09IFwiYm9vbGVhblwiICYmIHR5cGVvZiBvYmplY3QucGFyc2UgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqZWN0LnNlcmlhbGl6ZSA9PT0gXCJmdW5jdGlvblwiO1xufTtcbmFzeW5jIGZ1bmN0aW9uIGVuY29kZUNvb2tpZVZhbHVlKHZhbHVlLCBzZWNyZXRzKSB7XG4gIGxldCBlbmNvZGVkID0gZW5jb2RlRGF0YSh2YWx1ZSk7XG4gIGlmIChzZWNyZXRzLmxlbmd0aCA+IDApIHtcbiAgICBlbmNvZGVkID0gYXdhaXQgc2lnbihlbmNvZGVkLCBzZWNyZXRzWzBdKTtcbiAgfVxuICByZXR1cm4gZW5jb2RlZDtcbn1cbmFzeW5jIGZ1bmN0aW9uIGRlY29kZUNvb2tpZVZhbHVlKHZhbHVlLCBzZWNyZXRzKSB7XG4gIGlmIChzZWNyZXRzLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKGxldCBzZWNyZXQgb2Ygc2VjcmV0cykge1xuICAgICAgbGV0IHVuc2lnbmVkVmFsdWUgPSBhd2FpdCB1bnNpZ24odmFsdWUsIHNlY3JldCk7XG4gICAgICBpZiAodW5zaWduZWRWYWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGRlY29kZURhdGEodW5zaWduZWRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBkZWNvZGVEYXRhKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGVuY29kZURhdGEodmFsdWUpIHtcbiAgcmV0dXJuIGJ0b2EobXlVbmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkodmFsdWUpKSkpO1xufVxuZnVuY3Rpb24gZGVjb2RlRGF0YSh2YWx1ZSkge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChteUVzY2FwZShhdG9iKHZhbHVlKSkpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cbmZ1bmN0aW9uIG15RXNjYXBlKHZhbHVlKSB7XG4gIGxldCBzdHIgPSB2YWx1ZS50b1N0cmluZygpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgbGV0IGluZGV4ID0gMDtcbiAgbGV0IGNociwgY29kZTtcbiAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgIGNociA9IHN0ci5jaGFyQXQoaW5kZXgrKyk7XG4gICAgaWYgKC9bXFx3KitcXC0uL0BdLy5leGVjKGNocikpIHtcbiAgICAgIHJlc3VsdCArPSBjaHI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZGUgPSBjaHIuY2hhckNvZGVBdCgwKTtcbiAgICAgIGlmIChjb2RlIDwgMjU2KSB7XG4gICAgICAgIHJlc3VsdCArPSBcIiVcIiArIGhleChjb2RlLCAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBcIiV1XCIgKyBoZXgoY29kZSwgNCkudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGhleChjb2RlLCBsZW5ndGgpIHtcbiAgbGV0IHJlc3VsdCA9IGNvZGUudG9TdHJpbmcoMTYpO1xuICB3aGlsZSAocmVzdWx0Lmxlbmd0aCA8IGxlbmd0aCkgcmVzdWx0ID0gXCIwXCIgKyByZXN1bHQ7XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBteVVuZXNjYXBlKHZhbHVlKSB7XG4gIGxldCBzdHIgPSB2YWx1ZS50b1N0cmluZygpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgbGV0IGluZGV4ID0gMDtcbiAgbGV0IGNociwgcGFydDtcbiAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgIGNociA9IHN0ci5jaGFyQXQoaW5kZXgrKyk7XG4gICAgaWYgKGNociA9PT0gXCIlXCIpIHtcbiAgICAgIGlmIChzdHIuY2hhckF0KGluZGV4KSA9PT0gXCJ1XCIpIHtcbiAgICAgICAgcGFydCA9IHN0ci5zbGljZShpbmRleCArIDEsIGluZGV4ICsgNSk7XG4gICAgICAgIGlmICgvXltcXGRhLWZdezR9JC9pLmV4ZWMocGFydCkpIHtcbiAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChwYXJ0LCAxNikpO1xuICAgICAgICAgIGluZGV4ICs9IDU7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnQgPSBzdHIuc2xpY2UoaW5kZXgsIGluZGV4ICsgMik7XG4gICAgICAgIGlmICgvXltcXGRhLWZdezJ9JC9pLmV4ZWMocGFydCkpIHtcbiAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChwYXJ0LCAxNikpO1xuICAgICAgICAgIGluZGV4ICs9IDI7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0ICs9IGNocjtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gd2Fybk9uY2VBYm91dEV4cGlyZXNDb29raWUobmFtZSwgZXhwaXJlcykge1xuICB3YXJuT25jZShcbiAgICAhZXhwaXJlcyxcbiAgICBgVGhlIFwiJHtuYW1lfVwiIGNvb2tpZSBoYXMgYW4gXCJleHBpcmVzXCIgcHJvcGVydHkgc2V0LiBUaGlzIHdpbGwgY2F1c2UgdGhlIGV4cGlyZXMgdmFsdWUgdG8gbm90IGJlIHVwZGF0ZWQgd2hlbiB0aGUgc2Vzc2lvbiBpcyBjb21taXR0ZWQuIEluc3RlYWQsIHlvdSBzaG91bGQgc2V0IHRoZSBleHBpcmVzIHZhbHVlIHdoZW4gc2VyaWFsaXppbmcgdGhlIGNvb2tpZS4gWW91IGNhbiB1c2UgXFxgY29tbWl0U2Vzc2lvbihzZXNzaW9uLCB7IGV4cGlyZXMgfSlcXGAgaWYgdXNpbmcgYSBzZXNzaW9uIHN0b3JhZ2Ugb2JqZWN0LCBvciBcXGBjb29raWUuc2VyaWFsaXplKFwidmFsdWVcIiwgeyBleHBpcmVzIH0pXFxgIGlmIHlvdSdyZSB1c2luZyB0aGUgY29va2llIGRpcmVjdGx5LmBcbiAgKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2VudHJ5LnRzXG5mdW5jdGlvbiBjcmVhdGVFbnRyeVJvdXRlTW9kdWxlcyhtYW5pZmVzdCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMobWFuaWZlc3QpLnJlZHVjZSgobWVtbzIsIHJvdXRlSWQpID0+IHtcbiAgICBsZXQgcm91dGUgPSBtYW5pZmVzdFtyb3V0ZUlkXTtcbiAgICBpZiAocm91dGUpIHtcbiAgICAgIG1lbW8yW3JvdXRlSWRdID0gcm91dGUubW9kdWxlO1xuICAgIH1cbiAgICByZXR1cm4gbWVtbzI7XG4gIH0sIHt9KTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL21vZGUudHNcbnZhciBTZXJ2ZXJNb2RlID0gLyogQF9fUFVSRV9fICovICgoU2VydmVyTW9kZTIpID0+IHtcbiAgU2VydmVyTW9kZTJbXCJEZXZlbG9wbWVudFwiXSA9IFwiZGV2ZWxvcG1lbnRcIjtcbiAgU2VydmVyTW9kZTJbXCJQcm9kdWN0aW9uXCJdID0gXCJwcm9kdWN0aW9uXCI7XG4gIFNlcnZlck1vZGUyW1wiVGVzdFwiXSA9IFwidGVzdFwiO1xuICByZXR1cm4gU2VydmVyTW9kZTI7XG59KShTZXJ2ZXJNb2RlIHx8IHt9KTtcbmZ1bmN0aW9uIGlzU2VydmVyTW9kZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IFwiZGV2ZWxvcG1lbnRcIiAvKiBEZXZlbG9wbWVudCAqLyB8fCB2YWx1ZSA9PT0gXCJwcm9kdWN0aW9uXCIgLyogUHJvZHVjdGlvbiAqLyB8fCB2YWx1ZSA9PT0gXCJ0ZXN0XCIgLyogVGVzdCAqLztcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2Vycm9ycy50c1xuZnVuY3Rpb24gc2FuaXRpemVFcnJvcihlcnJvciwgc2VydmVyTW9kZSkge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiBzZXJ2ZXJNb2RlICE9PSBcImRldmVsb3BtZW50XCIgLyogRGV2ZWxvcG1lbnQgKi8pIHtcbiAgICBsZXQgc2FuaXRpemVkID0gbmV3IEVycm9yKFwiVW5leHBlY3RlZCBTZXJ2ZXIgRXJyb3JcIik7XG4gICAgc2FuaXRpemVkLnN0YWNrID0gdm9pZCAwO1xuICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gIH1cbiAgcmV0dXJuIGVycm9yO1xufVxuZnVuY3Rpb24gc2FuaXRpemVFcnJvcnMoZXJyb3JzLCBzZXJ2ZXJNb2RlKSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhlcnJvcnMpLnJlZHVjZSgoYWNjLCBbcm91dGVJZCwgZXJyb3JdKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtyb3V0ZUlkXTogc2FuaXRpemVFcnJvcihlcnJvciwgc2VydmVyTW9kZSkgfSk7XG4gIH0sIHt9KTtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZUVycm9yKGVycm9yLCBzZXJ2ZXJNb2RlKSB7XG4gIGxldCBzYW5pdGl6ZWQgPSBzYW5pdGl6ZUVycm9yKGVycm9yLCBzZXJ2ZXJNb2RlKTtcbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiBzYW5pdGl6ZWQubWVzc2FnZSxcbiAgICBzdGFjazogc2FuaXRpemVkLnN0YWNrXG4gIH07XG59XG5mdW5jdGlvbiBzZXJpYWxpemVFcnJvcnMyKGVycm9ycywgc2VydmVyTW9kZSkge1xuICBpZiAoIWVycm9ycykgcmV0dXJuIG51bGw7XG4gIGxldCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZXJyb3JzKTtcbiAgbGV0IHNlcmlhbGl6ZWQgPSB7fTtcbiAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiBlbnRyaWVzKSB7XG4gICAgaWYgKGlzUm91dGVFcnJvclJlc3BvbnNlKHZhbCkpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IHsgLi4udmFsLCBfX3R5cGU6IFwiUm91dGVFcnJvclJlc3BvbnNlXCIgfTtcbiAgICB9IGVsc2UgaWYgKHZhbCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBsZXQgc2FuaXRpemVkID0gc2FuaXRpemVFcnJvcih2YWwsIHNlcnZlck1vZGUpO1xuICAgICAgc2VyaWFsaXplZFtrZXldID0ge1xuICAgICAgICBtZXNzYWdlOiBzYW5pdGl6ZWQubWVzc2FnZSxcbiAgICAgICAgc3RhY2s6IHNhbml0aXplZC5zdGFjayxcbiAgICAgICAgX190eXBlOiBcIkVycm9yXCIsXG4gICAgICAgIC8vIElmIHRoaXMgaXMgYSBzdWJjbGFzcyAoaS5lLiwgUmVmZXJlbmNlRXJyb3IpLCBzZW5kIHVwIHRoZSB0eXBlIHNvIHdlXG4gICAgICAgIC8vIGNhbiByZS1jcmVhdGUgdGhlIHNhbWUgdHlwZSBkdXJpbmcgaHlkcmF0aW9uLiAgVGhpcyB3aWxsIG9ubHkgYXBwbHlcbiAgICAgICAgLy8gaW4gZGV2IG1vZGUgc2luY2UgYWxsIHByb2R1Y3Rpb24gZXJyb3JzIGFyZSBzYW5pdGl6ZWQgdG8gbm9ybWFsXG4gICAgICAgIC8vIEVycm9yIGluc3RhbmNlc1xuICAgICAgICAuLi5zYW5pdGl6ZWQubmFtZSAhPT0gXCJFcnJvclwiID8ge1xuICAgICAgICAgIF9fc3ViVHlwZTogc2FuaXRpemVkLm5hbWVcbiAgICAgICAgfSA6IHt9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXJpYWxpemVkW2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvcm91dGVNYXRjaGluZy50c1xuZnVuY3Rpb24gbWF0Y2hTZXJ2ZXJSb3V0ZXMocm91dGVzLCBwYXRobmFtZSwgYmFzZW5hbWUpIHtcbiAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhcbiAgICByb3V0ZXMsXG4gICAgcGF0aG5hbWUsXG4gICAgYmFzZW5hbWVcbiAgKTtcbiAgaWYgKCFtYXRjaGVzKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIG1hdGNoZXMubWFwKChtYXRjaCkgPT4gKHtcbiAgICBwYXJhbXM6IG1hdGNoLnBhcmFtcyxcbiAgICBwYXRobmFtZTogbWF0Y2gucGF0aG5hbWUsXG4gICAgcm91dGU6IG1hdGNoLnJvdXRlXG4gIH0pKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2RhdGEudHNcbmFzeW5jIGZ1bmN0aW9uIGNhbGxSb3V0ZUhhbmRsZXIoaGFuZGxlciwgYXJncykge1xuICBsZXQgcmVzdWx0ID0gYXdhaXQgaGFuZGxlcih7XG4gICAgcmVxdWVzdDogc3RyaXBSb3V0ZXNQYXJhbShzdHJpcEluZGV4UGFyYW0yKGFyZ3MucmVxdWVzdCkpLFxuICAgIHBhcmFtczogYXJncy5wYXJhbXMsXG4gICAgY29udGV4dDogYXJncy5jb250ZXh0XG4gIH0pO1xuICBpZiAoaXNEYXRhV2l0aFJlc3BvbnNlSW5pdChyZXN1bHQpICYmIHJlc3VsdC5pbml0ICYmIHJlc3VsdC5pbml0LnN0YXR1cyAmJiBpc1JlZGlyZWN0U3RhdHVzQ29kZShyZXN1bHQuaW5pdC5zdGF0dXMpKSB7XG4gICAgdGhyb3cgbmV3IFJlc3BvbnNlKG51bGwsIHJlc3VsdC5pbml0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gc3RyaXBJbmRleFBhcmFtMihyZXF1ZXN0KSB7XG4gIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgbGV0IGluZGV4VmFsdWVzID0gdXJsLnNlYXJjaFBhcmFtcy5nZXRBbGwoXCJpbmRleFwiKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoXCJpbmRleFwiKTtcbiAgbGV0IGluZGV4VmFsdWVzVG9LZWVwID0gW107XG4gIGZvciAobGV0IGluZGV4VmFsdWUgb2YgaW5kZXhWYWx1ZXMpIHtcbiAgICBpZiAoaW5kZXhWYWx1ZSkge1xuICAgICAgaW5kZXhWYWx1ZXNUb0tlZXAucHVzaChpbmRleFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgZm9yIChsZXQgdG9LZWVwIG9mIGluZGV4VmFsdWVzVG9LZWVwKSB7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB0b0tlZXApO1xuICB9XG4gIGxldCBpbml0ID0ge1xuICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgYm9keTogcmVxdWVzdC5ib2R5LFxuICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICBzaWduYWw6IHJlcXVlc3Quc2lnbmFsXG4gIH07XG4gIGlmIChpbml0LmJvZHkpIHtcbiAgICBpbml0LmR1cGxleCA9IFwiaGFsZlwiO1xuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdCh1cmwuaHJlZiwgaW5pdCk7XG59XG5mdW5jdGlvbiBzdHJpcFJvdXRlc1BhcmFtKHJlcXVlc3QpIHtcbiAgbGV0IHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZShcIl9yb3V0ZXNcIik7XG4gIGxldCBpbml0ID0ge1xuICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgYm9keTogcmVxdWVzdC5ib2R5LFxuICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICBzaWduYWw6IHJlcXVlc3Quc2lnbmFsXG4gIH07XG4gIGlmIChpbml0LmJvZHkpIHtcbiAgICBpbml0LmR1cGxleCA9IFwiaGFsZlwiO1xuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdCh1cmwuaHJlZiwgaW5pdCk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9pbnZhcmlhbnQudHNcbmZ1bmN0aW9uIGludmFyaWFudDModmFsdWUsIG1lc3NhZ2UpIHtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJUaGUgZm9sbG93aW5nIGVycm9yIGlzIGEgYnVnIGluIFJlYWN0IFJvdXRlcjsgcGxlYXNlIG9wZW4gYW4gaXNzdWUhIGh0dHBzOi8vZ2l0aHViLmNvbS9yZW1peC1ydW4vcmVhY3Qtcm91dGVyL2lzc3Vlcy9uZXcvY2hvb3NlXCJcbiAgICApO1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvcm91dGVzLnRzXG5mdW5jdGlvbiBncm91cFJvdXRlc0J5UGFyZW50SWQyKG1hbmlmZXN0KSB7XG4gIGxldCByb3V0ZXMgPSB7fTtcbiAgT2JqZWN0LnZhbHVlcyhtYW5pZmVzdCkuZm9yRWFjaCgocm91dGUpID0+IHtcbiAgICBpZiAocm91dGUpIHtcbiAgICAgIGxldCBwYXJlbnRJZCA9IHJvdXRlLnBhcmVudElkIHx8IFwiXCI7XG4gICAgICBpZiAoIXJvdXRlc1twYXJlbnRJZF0pIHtcbiAgICAgICAgcm91dGVzW3BhcmVudElkXSA9IFtdO1xuICAgICAgfVxuICAgICAgcm91dGVzW3BhcmVudElkXS5wdXNoKHJvdXRlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm91dGVzO1xufVxuZnVuY3Rpb24gY3JlYXRlUm91dGVzKG1hbmlmZXN0LCBwYXJlbnRJZCA9IFwiXCIsIHJvdXRlc0J5UGFyZW50SWQgPSBncm91cFJvdXRlc0J5UGFyZW50SWQyKG1hbmlmZXN0KSkge1xuICByZXR1cm4gKHJvdXRlc0J5UGFyZW50SWRbcGFyZW50SWRdIHx8IFtdKS5tYXAoKHJvdXRlKSA9PiAoe1xuICAgIC4uLnJvdXRlLFxuICAgIGNoaWxkcmVuOiBjcmVhdGVSb3V0ZXMobWFuaWZlc3QsIHJvdXRlLmlkLCByb3V0ZXNCeVBhcmVudElkKVxuICB9KSk7XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNIYW5kbGVyRGF0YVJvdXRlcyhtYW5pZmVzdCwgZnV0dXJlLCBwYXJlbnRJZCA9IFwiXCIsIHJvdXRlc0J5UGFyZW50SWQgPSBncm91cFJvdXRlc0J5UGFyZW50SWQyKG1hbmlmZXN0KSkge1xuICByZXR1cm4gKHJvdXRlc0J5UGFyZW50SWRbcGFyZW50SWRdIHx8IFtdKS5tYXAoKHJvdXRlKSA9PiB7XG4gICAgbGV0IGNvbW1vblJvdXRlID0ge1xuICAgICAgLy8gQWx3YXlzIGluY2x1ZGUgcm9vdCBkdWUgdG8gZGVmYXVsdCBib3VuZGFyaWVzXG4gICAgICBoYXNFcnJvckJvdW5kYXJ5OiByb3V0ZS5pZCA9PT0gXCJyb290XCIgfHwgcm91dGUubW9kdWxlLkVycm9yQm91bmRhcnkgIT0gbnVsbCxcbiAgICAgIGlkOiByb3V0ZS5pZCxcbiAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICAvLyBOZWVkIHRvIHVzZSBSUidzIHZlcnNpb24gaW4gdGhlIHBhcmFtIHR5cGVkIGhlcmUgdG8gcGVybWl0IHRoZSBvcHRpb25hbFxuICAgICAgLy8gY29udGV4dCBldmVuIHRob3VnaCB3ZSBrbm93IGl0J2xsIGFsd2F5cyBiZSBwcm92aWRlZCBpbiByZW1peFxuICAgICAgbG9hZGVyOiByb3V0ZS5tb2R1bGUubG9hZGVyID8gYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGFyZ3MucmVxdWVzdC5oZWFkZXJzLmhhcyhcIlgtUmVhY3QtUm91dGVyLVByZXJlbmRlci1EYXRhXCIpKSB7XG4gICAgICAgICAgY29uc3QgcHJlUmVuZGVyZWREYXRhID0gYXJncy5yZXF1ZXN0LmhlYWRlcnMuZ2V0KFxuICAgICAgICAgICAgXCJYLVJlYWN0LVJvdXRlci1QcmVyZW5kZXItRGF0YVwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgZW5jb2RlZCA9IHByZVJlbmRlcmVkRGF0YSA/IGRlY29kZVVSSShwcmVSZW5kZXJlZERhdGEpIDogcHJlUmVuZGVyZWREYXRhO1xuICAgICAgICAgIGludmFyaWFudDMoZW5jb2RlZCwgXCJNaXNzaW5nIHByZXJlbmRlcmVkIGRhdGEgZm9yIHJvdXRlXCIpO1xuICAgICAgICAgIGxldCB1aW50OGFycmF5ID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGVuY29kZWQpO1xuICAgICAgICAgIGxldCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICAgICAgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodWludDhhcnJheSk7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsZXQgZGVjb2RlZCA9IGF3YWl0IGRlY29kZVZpYVR1cmJvU3RyZWFtKHN0cmVhbSwgZ2xvYmFsKTtcbiAgICAgICAgICBsZXQgZGF0YTIgPSBkZWNvZGVkLnZhbHVlO1xuICAgICAgICAgIGludmFyaWFudDMoXG4gICAgICAgICAgICBkYXRhMiAmJiByb3V0ZS5pZCBpbiBkYXRhMixcbiAgICAgICAgICAgIFwiVW5hYmxlIHRvIGRlY29kZSBwcmVyZW5kZXJlZCBkYXRhXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCByZXN1bHQgPSBkYXRhMltyb3V0ZS5pZF07XG4gICAgICAgICAgaW52YXJpYW50MyhcImRhdGFcIiBpbiByZXN1bHQsIFwiVW5hYmxlIHRvIHByb2Nlc3MgcHJlcmVuZGVyZWQgZGF0YVwiKTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbCA9IGF3YWl0IGNhbGxSb3V0ZUhhbmRsZXIocm91dGUubW9kdWxlLmxvYWRlciwgYXJncyk7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9IDogdm9pZCAwLFxuICAgICAgYWN0aW9uOiByb3V0ZS5tb2R1bGUuYWN0aW9uID8gKGFyZ3MpID0+IGNhbGxSb3V0ZUhhbmRsZXIocm91dGUubW9kdWxlLmFjdGlvbiwgYXJncykgOiB2b2lkIDAsXG4gICAgICBoYW5kbGU6IHJvdXRlLm1vZHVsZS5oYW5kbGVcbiAgICB9O1xuICAgIHJldHVybiByb3V0ZS5pbmRleCA/IHtcbiAgICAgIGluZGV4OiB0cnVlLFxuICAgICAgLi4uY29tbW9uUm91dGVcbiAgICB9IDoge1xuICAgICAgY2FzZVNlbnNpdGl2ZTogcm91dGUuY2FzZVNlbnNpdGl2ZSxcbiAgICAgIGNoaWxkcmVuOiBjcmVhdGVTdGF0aWNIYW5kbGVyRGF0YVJvdXRlcyhcbiAgICAgICAgbWFuaWZlc3QsXG4gICAgICAgIGZ1dHVyZSxcbiAgICAgICAgcm91dGUuaWQsXG4gICAgICAgIHJvdXRlc0J5UGFyZW50SWRcbiAgICAgICksXG4gICAgICAuLi5jb21tb25Sb3V0ZVxuICAgIH07XG4gIH0pO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvbWFya3VwLnRzXG52YXIgRVNDQVBFX0xPT0tVUDMgPSB7XG4gIFwiJlwiOiBcIlxcXFx1MDAyNlwiLFxuICBcIj5cIjogXCJcXFxcdTAwM2VcIixcbiAgXCI8XCI6IFwiXFxcXHUwMDNjXCIsXG4gIFwiXFx1MjAyOFwiOiBcIlxcXFx1MjAyOFwiLFxuICBcIlxcdTIwMjlcIjogXCJcXFxcdTIwMjlcIlxufTtcbnZhciBFU0NBUEVfUkVHRVgzID0gL1smPjxcXHUyMDI4XFx1MjAyOV0vZztcbmZ1bmN0aW9uIGVzY2FwZUh0bWwyKGh0bWwpIHtcbiAgcmV0dXJuIGh0bWwucmVwbGFjZShFU0NBUEVfUkVHRVgzLCAobWF0Y2gpID0+IEVTQ0FQRV9MT09LVVAzW21hdGNoXSk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9zZXJ2ZXJIYW5kb2ZmLnRzXG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJIYW5kb2ZmU3RyaW5nKHNlcnZlckhhbmRvZmYpIHtcbiAgcmV0dXJuIGVzY2FwZUh0bWwyKEpTT04uc3RyaW5naWZ5KHNlcnZlckhhbmRvZmYpKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2Rldi50c1xudmFyIGdsb2JhbERldlNlcnZlckhvb2tzS2V5ID0gXCJfX3JlYWN0Um91dGVyRGV2U2VydmVySG9va3NcIjtcbmZ1bmN0aW9uIHNldERldlNlcnZlckhvb2tzKGRldlNlcnZlckhvb2tzKSB7XG4gIGdsb2JhbFRoaXNbZ2xvYmFsRGV2U2VydmVySG9va3NLZXldID0gZGV2U2VydmVySG9va3M7XG59XG5mdW5jdGlvbiBnZXREZXZTZXJ2ZXJIb29rcygpIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXNbZ2xvYmFsRGV2U2VydmVySG9va3NLZXldO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvc2luZ2xlLWZldGNoLnRzXG5pbXBvcnQgeyBlbmNvZGUgfSBmcm9tIFwidHVyYm8tc3RyZWFtXCI7XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9oZWFkZXJzLnRzXG5pbXBvcnQgeyBzcGxpdENvb2tpZXNTdHJpbmcgfSBmcm9tIFwic2V0LWNvb2tpZS1wYXJzZXJcIjtcbmZ1bmN0aW9uIGdldERvY3VtZW50SGVhZGVycyhidWlsZCwgY29udGV4dCkge1xuICBsZXQgYm91bmRhcnlJZHggPSBjb250ZXh0LmVycm9ycyA/IGNvbnRleHQubWF0Y2hlcy5maW5kSW5kZXgoKG0pID0+IGNvbnRleHQuZXJyb3JzW20ucm91dGUuaWRdKSA6IC0xO1xuICBsZXQgbWF0Y2hlcyA9IGJvdW5kYXJ5SWR4ID49IDAgPyBjb250ZXh0Lm1hdGNoZXMuc2xpY2UoMCwgYm91bmRhcnlJZHggKyAxKSA6IGNvbnRleHQubWF0Y2hlcztcbiAgbGV0IGVycm9ySGVhZGVycztcbiAgaWYgKGJvdW5kYXJ5SWR4ID49IDApIHtcbiAgICBsZXQgeyBhY3Rpb25IZWFkZXJzLCBhY3Rpb25EYXRhLCBsb2FkZXJIZWFkZXJzLCBsb2FkZXJEYXRhIH0gPSBjb250ZXh0O1xuICAgIGNvbnRleHQubWF0Y2hlcy5zbGljZShib3VuZGFyeUlkeCkuc29tZSgobWF0Y2gpID0+IHtcbiAgICAgIGxldCBpZCA9IG1hdGNoLnJvdXRlLmlkO1xuICAgICAgaWYgKGFjdGlvbkhlYWRlcnNbaWRdICYmICghYWN0aW9uRGF0YSB8fCAhYWN0aW9uRGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkpKSB7XG4gICAgICAgIGVycm9ySGVhZGVycyA9IGFjdGlvbkhlYWRlcnNbaWRdO1xuICAgICAgfSBlbHNlIGlmIChsb2FkZXJIZWFkZXJzW2lkXSAmJiAhbG9hZGVyRGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICAgICAgZXJyb3JIZWFkZXJzID0gbG9hZGVySGVhZGVyc1tpZF07XG4gICAgICB9XG4gICAgICByZXR1cm4gZXJyb3JIZWFkZXJzICE9IG51bGw7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXMucmVkdWNlKChwYXJlbnRIZWFkZXJzLCBtYXRjaCwgaWR4KSA9PiB7XG4gICAgbGV0IHsgaWQgfSA9IG1hdGNoLnJvdXRlO1xuICAgIGxldCByb3V0ZSA9IGJ1aWxkLnJvdXRlc1tpZF07XG4gICAgaW52YXJpYW50Myhyb3V0ZSwgYFJvdXRlIHdpdGggaWQgXCIke2lkfVwiIG5vdCBmb3VuZCBpbiBidWlsZGApO1xuICAgIGxldCByb3V0ZU1vZHVsZSA9IHJvdXRlLm1vZHVsZTtcbiAgICBsZXQgbG9hZGVySGVhZGVycyA9IGNvbnRleHQubG9hZGVySGVhZGVyc1tpZF0gfHwgbmV3IEhlYWRlcnMoKTtcbiAgICBsZXQgYWN0aW9uSGVhZGVycyA9IGNvbnRleHQuYWN0aW9uSGVhZGVyc1tpZF0gfHwgbmV3IEhlYWRlcnMoKTtcbiAgICBsZXQgaW5jbHVkZUVycm9ySGVhZGVycyA9IGVycm9ySGVhZGVycyAhPSBudWxsICYmIGlkeCA9PT0gbWF0Y2hlcy5sZW5ndGggLSAxO1xuICAgIGxldCBpbmNsdWRlRXJyb3JDb29raWVzID0gaW5jbHVkZUVycm9ySGVhZGVycyAmJiBlcnJvckhlYWRlcnMgIT09IGxvYWRlckhlYWRlcnMgJiYgZXJyb3JIZWFkZXJzICE9PSBhY3Rpb25IZWFkZXJzO1xuICAgIGlmIChyb3V0ZU1vZHVsZS5oZWFkZXJzID09IG51bGwpIHtcbiAgICAgIGxldCBoZWFkZXJzMiA9IG5ldyBIZWFkZXJzKHBhcmVudEhlYWRlcnMpO1xuICAgICAgaWYgKGluY2x1ZGVFcnJvckNvb2tpZXMpIHtcbiAgICAgICAgcHJlcGVuZENvb2tpZXMoZXJyb3JIZWFkZXJzLCBoZWFkZXJzMik7XG4gICAgICB9XG4gICAgICBwcmVwZW5kQ29va2llcyhhY3Rpb25IZWFkZXJzLCBoZWFkZXJzMik7XG4gICAgICBwcmVwZW5kQ29va2llcyhsb2FkZXJIZWFkZXJzLCBoZWFkZXJzMik7XG4gICAgICByZXR1cm4gaGVhZGVyczI7XG4gICAgfVxuICAgIGxldCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoXG4gICAgICByb3V0ZU1vZHVsZS5oZWFkZXJzID8gdHlwZW9mIHJvdXRlTW9kdWxlLmhlYWRlcnMgPT09IFwiZnVuY3Rpb25cIiA/IHJvdXRlTW9kdWxlLmhlYWRlcnMoe1xuICAgICAgICBsb2FkZXJIZWFkZXJzLFxuICAgICAgICBwYXJlbnRIZWFkZXJzLFxuICAgICAgICBhY3Rpb25IZWFkZXJzLFxuICAgICAgICBlcnJvckhlYWRlcnM6IGluY2x1ZGVFcnJvckhlYWRlcnMgPyBlcnJvckhlYWRlcnMgOiB2b2lkIDBcbiAgICAgIH0pIDogcm91dGVNb2R1bGUuaGVhZGVycyA6IHZvaWQgMFxuICAgICk7XG4gICAgaWYgKGluY2x1ZGVFcnJvckNvb2tpZXMpIHtcbiAgICAgIHByZXBlbmRDb29raWVzKGVycm9ySGVhZGVycywgaGVhZGVycyk7XG4gICAgfVxuICAgIHByZXBlbmRDb29raWVzKGFjdGlvbkhlYWRlcnMsIGhlYWRlcnMpO1xuICAgIHByZXBlbmRDb29raWVzKGxvYWRlckhlYWRlcnMsIGhlYWRlcnMpO1xuICAgIHByZXBlbmRDb29raWVzKHBhcmVudEhlYWRlcnMsIGhlYWRlcnMpO1xuICAgIHJldHVybiBoZWFkZXJzO1xuICB9LCBuZXcgSGVhZGVycygpKTtcbn1cbmZ1bmN0aW9uIHByZXBlbmRDb29raWVzKHBhcmVudEhlYWRlcnMsIGNoaWxkSGVhZGVycykge1xuICBsZXQgcGFyZW50U2V0Q29va2llU3RyaW5nID0gcGFyZW50SGVhZGVycy5nZXQoXCJTZXQtQ29va2llXCIpO1xuICBpZiAocGFyZW50U2V0Q29va2llU3RyaW5nKSB7XG4gICAgbGV0IGNvb2tpZXMgPSBzcGxpdENvb2tpZXNTdHJpbmcocGFyZW50U2V0Q29va2llU3RyaW5nKTtcbiAgICBjb29raWVzLmZvckVhY2goKGNvb2tpZSkgPT4ge1xuICAgICAgY2hpbGRIZWFkZXJzLmFwcGVuZChcIlNldC1Db29raWVcIiwgY29va2llKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvc2luZ2xlLWZldGNoLnRzXG52YXIgU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVUyA9IDIwMjtcbmZ1bmN0aW9uIGdldFNpbmdsZUZldGNoRGF0YVN0cmF0ZWd5Mih7XG4gIGlzQWN0aW9uRGF0YVJlcXVlc3QsXG4gIGxvYWRSb3V0ZUlkc1xufSA9IHt9KSB7XG4gIHJldHVybiBhc3luYyAoeyByZXF1ZXN0LCBtYXRjaGVzIH0pID0+IHtcbiAgICBpZiAoaXNBY3Rpb25EYXRhUmVxdWVzdCAmJiByZXF1ZXN0Lm1ldGhvZCA9PT0gXCJHRVRcIikge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBsZXQgbWF0Y2hlc1RvTG9hZCA9IGxvYWRSb3V0ZUlkcyA/IG1hdGNoZXMuZmlsdGVyKChtKSA9PiBsb2FkUm91dGVJZHMuaW5jbHVkZXMobS5yb3V0ZS5pZCkpIDogbWF0Y2hlcztcbiAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgbWF0Y2hlc1RvTG9hZC5tYXAoKG1hdGNoKSA9PiBtYXRjaC5yZXNvbHZlKCkpXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAoYWNjLCByZXN1bHQsIGkpID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFttYXRjaGVzVG9Mb2FkW2ldLnJvdXRlLmlkXTogcmVzdWx0IH0pLFxuICAgICAge31cbiAgICApO1xuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gc2luZ2xlRmV0Y2hBY3Rpb24oYnVpbGQsIHNlcnZlck1vZGUsIHN0YXRpY0hhbmRsZXIsIHJlcXVlc3QsIGhhbmRsZXJVcmwsIGxvYWRDb250ZXh0LCBoYW5kbGVFcnJvcikge1xuICB0cnkge1xuICAgIGxldCBoYW5kbGVyUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGhhbmRsZXJVcmwsIHtcbiAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICBib2R5OiByZXF1ZXN0LmJvZHksXG4gICAgICBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMsXG4gICAgICBzaWduYWw6IHJlcXVlc3Quc2lnbmFsLFxuICAgICAgLi4ucmVxdWVzdC5ib2R5ID8geyBkdXBsZXg6IFwiaGFsZlwiIH0gOiB2b2lkIDBcbiAgICB9KTtcbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgc3RhdGljSGFuZGxlci5xdWVyeShoYW5kbGVyUmVxdWVzdCwge1xuICAgICAgcmVxdWVzdENvbnRleHQ6IGxvYWRDb250ZXh0LFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmc6IHRydWUsXG4gICAgICBkYXRhU3RyYXRlZ3k6IGdldFNpbmdsZUZldGNoRGF0YVN0cmF0ZWd5Mih7XG4gICAgICAgIGlzQWN0aW9uRGF0YVJlcXVlc3Q6IHRydWVcbiAgICAgIH0pXG4gICAgfSk7XG4gICAgaWYgKGlzUmVzcG9uc2UocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0OiBnZXRTaW5nbGVGZXRjaFJlZGlyZWN0KFxuICAgICAgICAgIHJlc3VsdC5zdGF0dXMsXG4gICAgICAgICAgcmVzdWx0LmhlYWRlcnMsXG4gICAgICAgICAgYnVpbGQuYmFzZW5hbWVcbiAgICAgICAgKSxcbiAgICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnMsXG4gICAgICAgIHN0YXR1czogU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVU1xuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGNvbnRleHQgPSByZXN1bHQ7XG4gICAgbGV0IGhlYWRlcnMgPSBnZXREb2N1bWVudEhlYWRlcnMoYnVpbGQsIGNvbnRleHQpO1xuICAgIGlmIChpc1JlZGlyZWN0U3RhdHVzQ29kZShjb250ZXh0LnN0YXR1c0NvZGUpICYmIGhlYWRlcnMuaGFzKFwiTG9jYXRpb25cIikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlc3VsdDogZ2V0U2luZ2xlRmV0Y2hSZWRpcmVjdChcbiAgICAgICAgICBjb250ZXh0LnN0YXR1c0NvZGUsXG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICBidWlsZC5iYXNlbmFtZVxuICAgICAgICApLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICBzdGF0dXM6IFNJTkdMRV9GRVRDSF9SRURJUkVDVF9TVEFUVVNcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChjb250ZXh0LmVycm9ycykge1xuICAgICAgT2JqZWN0LnZhbHVlcyhjb250ZXh0LmVycm9ycykuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICAgIGlmICghaXNSb3V0ZUVycm9yUmVzcG9uc2UoZXJyKSB8fCBlcnIuZXJyb3IpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnRleHQuZXJyb3JzID0gc2FuaXRpemVFcnJvcnMoY29udGV4dC5lcnJvcnMsIHNlcnZlck1vZGUpO1xuICAgIH1cbiAgICBsZXQgc2luZ2xlRmV0Y2hSZXN1bHQ7XG4gICAgaWYgKGNvbnRleHQuZXJyb3JzKSB7XG4gICAgICBzaW5nbGVGZXRjaFJlc3VsdCA9IHsgZXJyb3I6IE9iamVjdC52YWx1ZXMoY29udGV4dC5lcnJvcnMpWzBdIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNpbmdsZUZldGNoUmVzdWx0ID0geyBkYXRhOiBPYmplY3QudmFsdWVzKGNvbnRleHQuYWN0aW9uRGF0YSB8fCB7fSlbMF0gfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3VsdDogc2luZ2xlRmV0Y2hSZXN1bHQsXG4gICAgICBoZWFkZXJzLFxuICAgICAgc3RhdHVzOiBjb250ZXh0LnN0YXR1c0NvZGVcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzdWx0OiB7IGVycm9yIH0sXG4gICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycygpLFxuICAgICAgc3RhdHVzOiA1MDBcbiAgICB9O1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiBzaW5nbGVGZXRjaExvYWRlcnMoYnVpbGQsIHNlcnZlck1vZGUsIHN0YXRpY0hhbmRsZXIsIHJlcXVlc3QsIGhhbmRsZXJVcmwsIGxvYWRDb250ZXh0LCBoYW5kbGVFcnJvcikge1xuICB0cnkge1xuICAgIGxldCBoYW5kbGVyUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGhhbmRsZXJVcmwsIHtcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICAgIHNpZ25hbDogcmVxdWVzdC5zaWduYWxcbiAgICB9KTtcbiAgICBsZXQgbG9hZFJvdXRlSWRzID0gbmV3IFVSTChyZXF1ZXN0LnVybCkuc2VhcmNoUGFyYW1zLmdldChcIl9yb3V0ZXNcIik/LnNwbGl0KFwiLFwiKSB8fCB2b2lkIDA7XG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHN0YXRpY0hhbmRsZXIucXVlcnkoaGFuZGxlclJlcXVlc3QsIHtcbiAgICAgIHJlcXVlc3RDb250ZXh0OiBsb2FkQ29udGV4dCxcbiAgICAgIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nOiB0cnVlLFxuICAgICAgZGF0YVN0cmF0ZWd5OiBnZXRTaW5nbGVGZXRjaERhdGFTdHJhdGVneTIoe1xuICAgICAgICBsb2FkUm91dGVJZHNcbiAgICAgIH0pXG4gICAgfSk7XG4gICAgaWYgKGlzUmVzcG9uc2UocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdOiBnZXRTaW5nbGVGZXRjaFJlZGlyZWN0KFxuICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyxcbiAgICAgICAgICAgIHJlc3VsdC5oZWFkZXJzLFxuICAgICAgICAgICAgYnVpbGQuYmFzZW5hbWVcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcnM6IHJlc3VsdC5oZWFkZXJzLFxuICAgICAgICBzdGF0dXM6IFNJTkdMRV9GRVRDSF9SRURJUkVDVF9TVEFUVVNcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBjb250ZXh0ID0gcmVzdWx0O1xuICAgIGxldCBoZWFkZXJzID0gZ2V0RG9jdW1lbnRIZWFkZXJzKGJ1aWxkLCBjb250ZXh0KTtcbiAgICBpZiAoaXNSZWRpcmVjdFN0YXR1c0NvZGUoY29udGV4dC5zdGF0dXNDb2RlKSAmJiBoZWFkZXJzLmhhcyhcIkxvY2F0aW9uXCIpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICBbU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbF06IGdldFNpbmdsZUZldGNoUmVkaXJlY3QoXG4gICAgICAgICAgICBjb250ZXh0LnN0YXR1c0NvZGUsXG4gICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgYnVpbGQuYmFzZW5hbWVcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHN0YXR1czogU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVU1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQuZXJyb3JzKSB7XG4gICAgICBPYmplY3QudmFsdWVzKGNvbnRleHQuZXJyb3JzKS5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgICAgaWYgKCFpc1JvdXRlRXJyb3JSZXNwb25zZShlcnIpIHx8IGVyci5lcnJvcikge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29udGV4dC5lcnJvcnMgPSBzYW5pdGl6ZUVycm9ycyhjb250ZXh0LmVycm9ycywgc2VydmVyTW9kZSk7XG4gICAgfVxuICAgIGxldCByZXN1bHRzID0ge307XG4gICAgbGV0IGxvYWRlZE1hdGNoZXMgPSBsb2FkUm91dGVJZHMgPyBjb250ZXh0Lm1hdGNoZXMuZmlsdGVyKFxuICAgICAgKG0pID0+IG0ucm91dGUubG9hZGVyICYmIGxvYWRSb3V0ZUlkcy5pbmNsdWRlcyhtLnJvdXRlLmlkKVxuICAgICkgOiBjb250ZXh0Lm1hdGNoZXM7XG4gICAgbG9hZGVkTWF0Y2hlcy5mb3JFYWNoKChtKSA9PiB7XG4gICAgICBsZXQgeyBpZCB9ID0gbS5yb3V0ZTtcbiAgICAgIGlmIChjb250ZXh0LmVycm9ycyAmJiBjb250ZXh0LmVycm9ycy5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICAgICAgcmVzdWx0c1tpZF0gPSB7IGVycm9yOiBjb250ZXh0LmVycm9yc1tpZF0gfTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5sb2FkZXJEYXRhLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgICByZXN1bHRzW2lkXSA9IHsgZGF0YTogY29udGV4dC5sb2FkZXJEYXRhW2lkXSB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICByZXN1bHQ6IHJlc3VsdHMsXG4gICAgICBoZWFkZXJzLFxuICAgICAgc3RhdHVzOiBjb250ZXh0LnN0YXR1c0NvZGVcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzdWx0OiB7IHJvb3Q6IHsgZXJyb3IgfSB9LFxuICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnMoKSxcbiAgICAgIHN0YXR1czogNTAwXG4gICAgfTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0U2luZ2xlRmV0Y2hSZWRpcmVjdChzdGF0dXMsIGhlYWRlcnMsIGJhc2VuYW1lKSB7XG4gIGxldCByZWRpcmVjdDIgPSBoZWFkZXJzLmdldChcIkxvY2F0aW9uXCIpO1xuICBpZiAoYmFzZW5hbWUpIHtcbiAgICByZWRpcmVjdDIgPSBzdHJpcEJhc2VuYW1lKHJlZGlyZWN0MiwgYmFzZW5hbWUpIHx8IHJlZGlyZWN0MjtcbiAgfVxuICByZXR1cm4ge1xuICAgIHJlZGlyZWN0OiByZWRpcmVjdDIsXG4gICAgc3RhdHVzLFxuICAgIHJldmFsaWRhdGU6IChcbiAgICAgIC8vIFRlY2huaWNhbGx5IFgtUmVtaXgtUmV2YWxpZGF0ZSBpc24ndCBuZWVkZWQgaGVyZSAtIHRoYXQgd2FzIGFuIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBkZXRhaWwgb2YgP19kYXRhIHJlcXVlc3RzIGFzIG91ciB3YXkgdG8gdGVsbCB0aGUgZnJvbnQgZW5kIHRvIHJldmFsaWRhdGUgd2hlblxuICAgICAgLy8gd2UgZGlkbid0IGhhdmUgYSByZXNwb25zZSBib2R5IHRvIGluY2x1ZGUgdGhhdCBpbmZvcm1hdGlvbiBpbi5cbiAgICAgIC8vIFdpdGggc2luZ2xlIGZldGNoLCB3ZSB0ZWxsIHRoZSBmcm9udCBlbmQgdmlhIHRoaXMgcmV2YWxpZGF0ZSBib29sZWFuIGZpZWxkLlxuICAgICAgLy8gSG93ZXZlciwgd2UncmUgcmVzcGVjdGluZyBpdCBmb3Igbm93IGJlY2F1c2UgaXQgbWF5IGJlIHNvbWV0aGluZyBmb2xrcyBoYXZlXG4gICAgICAvLyB1c2VkIGluIHRoZWlyIG93biByZXNwb25zZXNcbiAgICAgIC8vIFRPRE8odjMpOiBDb25zaWRlciByZW1vdmluZyBvciBtYWtpbmcgdGhpcyBvZmZpY2lhbCBwdWJsaWMgQVBJXG4gICAgICBoZWFkZXJzLmhhcyhcIlgtUmVtaXgtUmV2YWxpZGF0ZVwiKSB8fCBoZWFkZXJzLmhhcyhcIlNldC1Db29raWVcIilcbiAgICApLFxuICAgIHJlbG9hZDogaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJlbG9hZC1Eb2N1bWVudFwiKSxcbiAgICByZXBsYWNlOiBoZWFkZXJzLmhhcyhcIlgtUmVtaXgtUmVwbGFjZVwiKVxuICB9O1xufVxuZnVuY3Rpb24gZW5jb2RlVmlhVHVyYm9TdHJlYW0oZGF0YTIsIHJlcXVlc3RTaWduYWwsIHN0cmVhbVRpbWVvdXQsIHNlcnZlck1vZGUpIHtcbiAgbGV0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGxldCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICgpID0+IGNvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKFwiU2VydmVyIFRpbWVvdXRcIikpLFxuICAgIHR5cGVvZiBzdHJlYW1UaW1lb3V0ID09PSBcIm51bWJlclwiID8gc3RyZWFtVGltZW91dCA6IDQ5NTBcbiAgKTtcbiAgcmVxdWVzdFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpO1xuICByZXR1cm4gZW5jb2RlKGRhdGEyLCB7XG4gICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICBwbHVnaW5zOiBbXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBsZXQgeyBuYW1lLCBtZXNzYWdlLCBzdGFjayB9ID0gc2VydmVyTW9kZSA9PT0gXCJwcm9kdWN0aW9uXCIgLyogUHJvZHVjdGlvbiAqLyA/IHNhbml0aXplRXJyb3IodmFsdWUsIHNlcnZlck1vZGUpIDogdmFsdWU7XG4gICAgICAgICAgcmV0dXJuIFtcIlNhbml0aXplZEVycm9yXCIsIG5hbWUsIG1lc3NhZ2UsIHN0YWNrXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlSW1wbCkge1xuICAgICAgICAgIGxldCB7IGRhdGE6IGRhdGEzLCBzdGF0dXMsIHN0YXR1c1RleHQgfSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiBbXCJFcnJvclJlc3BvbnNlXCIsIGRhdGEzLCBzdGF0dXMsIHN0YXR1c1RleHRdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbCBpbiB2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBbXCJTaW5nbGVGZXRjaFJlZGlyZWN0XCIsIHZhbHVlW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0sXG4gICAgcG9zdFBsdWdpbnM6IFtcbiAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHJldHVybjtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBcIlNpbmdsZUZldGNoQ2xhc3NJbnN0YW5jZVwiLFxuICAgICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh2YWx1ZSkpXG4gICAgICAgIF07XG4gICAgICB9LFxuICAgICAgKCkgPT4gW1wiU2luZ2xlRmV0Y2hGYWxsYmFja1wiXVxuICAgIF1cbiAgfSk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9zZXJ2ZXIudHNcbmZ1bmN0aW9uIGRlcml2ZShidWlsZCwgbW9kZSkge1xuICBsZXQgcm91dGVzID0gY3JlYXRlUm91dGVzKGJ1aWxkLnJvdXRlcyk7XG4gIGxldCBkYXRhUm91dGVzID0gY3JlYXRlU3RhdGljSGFuZGxlckRhdGFSb3V0ZXMoYnVpbGQucm91dGVzLCBidWlsZC5mdXR1cmUpO1xuICBsZXQgc2VydmVyTW9kZSA9IGlzU2VydmVyTW9kZShtb2RlKSA/IG1vZGUgOiBcInByb2R1Y3Rpb25cIiAvKiBQcm9kdWN0aW9uICovO1xuICBsZXQgc3RhdGljSGFuZGxlciA9IGNyZWF0ZVN0YXRpY0hhbmRsZXIoZGF0YVJvdXRlcywge1xuICAgIGJhc2VuYW1lOiBidWlsZC5iYXNlbmFtZVxuICB9KTtcbiAgbGV0IGVycm9ySGFuZGxlciA9IGJ1aWxkLmVudHJ5Lm1vZHVsZS5oYW5kbGVFcnJvciB8fCAoKGVycm9yLCB7IHJlcXVlc3QgfSkgPT4ge1xuICAgIGlmIChzZXJ2ZXJNb2RlICE9PSBcInRlc3RcIiAvKiBUZXN0ICovICYmICFyZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRoaXMgaXMgXCJwcml2YXRlXCIgZnJvbSB1c2VycyBidXQgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZVxuICAgICAgICBpc1JvdXRlRXJyb3JSZXNwb25zZShlcnJvcikgJiYgZXJyb3IuZXJyb3IgPyBlcnJvci5lcnJvciA6IGVycm9yXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcm91dGVzLFxuICAgIGRhdGFSb3V0ZXMsXG4gICAgc2VydmVyTW9kZSxcbiAgICBzdGF0aWNIYW5kbGVyLFxuICAgIGVycm9ySGFuZGxlclxuICB9O1xufVxudmFyIGNyZWF0ZVJlcXVlc3RIYW5kbGVyID0gKGJ1aWxkLCBtb2RlKSA9PiB7XG4gIGxldCBfYnVpbGQ7XG4gIGxldCByb3V0ZXM7XG4gIGxldCBzZXJ2ZXJNb2RlO1xuICBsZXQgc3RhdGljSGFuZGxlcjtcbiAgbGV0IGVycm9ySGFuZGxlcjtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3RIYW5kbGVyKHJlcXVlc3QsIGxvYWRDb250ZXh0ID0ge30pIHtcbiAgICBfYnVpbGQgPSB0eXBlb2YgYnVpbGQgPT09IFwiZnVuY3Rpb25cIiA/IGF3YWl0IGJ1aWxkKCkgOiBidWlsZDtcbiAgICBpZiAodHlwZW9mIGJ1aWxkID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGxldCBkZXJpdmVkID0gZGVyaXZlKF9idWlsZCwgbW9kZSk7XG4gICAgICByb3V0ZXMgPSBkZXJpdmVkLnJvdXRlcztcbiAgICAgIHNlcnZlck1vZGUgPSBkZXJpdmVkLnNlcnZlck1vZGU7XG4gICAgICBzdGF0aWNIYW5kbGVyID0gZGVyaXZlZC5zdGF0aWNIYW5kbGVyO1xuICAgICAgZXJyb3JIYW5kbGVyID0gZGVyaXZlZC5lcnJvckhhbmRsZXI7XG4gICAgfSBlbHNlIGlmICghcm91dGVzIHx8ICFzZXJ2ZXJNb2RlIHx8ICFzdGF0aWNIYW5kbGVyIHx8ICFlcnJvckhhbmRsZXIpIHtcbiAgICAgIGxldCBkZXJpdmVkID0gZGVyaXZlKF9idWlsZCwgbW9kZSk7XG4gICAgICByb3V0ZXMgPSBkZXJpdmVkLnJvdXRlcztcbiAgICAgIHNlcnZlck1vZGUgPSBkZXJpdmVkLnNlcnZlck1vZGU7XG4gICAgICBzdGF0aWNIYW5kbGVyID0gZGVyaXZlZC5zdGF0aWNIYW5kbGVyO1xuICAgICAgZXJyb3JIYW5kbGVyID0gZGVyaXZlZC5lcnJvckhhbmRsZXI7XG4gICAgfVxuICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICBsZXQgcGFyYW1zID0ge307XG4gICAgbGV0IGhhbmRsZUVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBpZiAobW9kZSA9PT0gXCJkZXZlbG9wbWVudFwiIC8qIERldmVsb3BtZW50ICovKSB7XG4gICAgICAgIGdldERldlNlcnZlckhvb2tzKCk/LnByb2Nlc3NSZXF1ZXN0RXJyb3I/LihlcnJvcik7XG4gICAgICB9XG4gICAgICBlcnJvckhhbmRsZXIoZXJyb3IsIHtcbiAgICAgICAgY29udGV4dDogbG9hZENvbnRleHQsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgcmVxdWVzdFxuICAgICAgfSk7XG4gICAgfTtcbiAgICBsZXQgbWFuaWZlc3RVcmwgPSBgJHtfYnVpbGQuYmFzZW5hbWUgPz8gXCIvXCJ9L19fbWFuaWZlc3RgLnJlcGxhY2UoXG4gICAgICAvXFwvKy9nLFxuICAgICAgXCIvXCJcbiAgICApO1xuICAgIGlmICh1cmwucGF0aG5hbWUgPT09IG1hbmlmZXN0VXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQgcmVzID0gYXdhaXQgaGFuZGxlTWFuaWZlc3RSZXF1ZXN0KF9idWlsZCwgcm91dGVzLCB1cmwpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVFcnJvcihlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIlVua25vd24gU2VydmVyIEVycm9yXCIsIHsgc3RhdHVzOiA1MDAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBtYXRjaGVzID0gbWF0Y2hTZXJ2ZXJSb3V0ZXMocm91dGVzLCB1cmwucGF0aG5hbWUsIF9idWlsZC5iYXNlbmFtZSk7XG4gICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgbWF0Y2hlc1swXS5wYXJhbXMpO1xuICAgIH1cbiAgICBsZXQgcmVzcG9uc2U7XG4gICAgaWYgKHVybC5wYXRobmFtZS5lbmRzV2l0aChcIi5kYXRhXCIpKSB7XG4gICAgICBsZXQgaGFuZGxlclVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICAgICAgaGFuZGxlclVybC5wYXRobmFtZSA9IGhhbmRsZXJVcmwucGF0aG5hbWUucmVwbGFjZSgvXFwuZGF0YSQvLCBcIlwiKS5yZXBsYWNlKC9eXFwvX3Jvb3QkLywgXCIvXCIpO1xuICAgICAgbGV0IHNpbmdsZUZldGNoTWF0Y2hlcyA9IG1hdGNoU2VydmVyUm91dGVzKFxuICAgICAgICByb3V0ZXMsXG4gICAgICAgIGhhbmRsZXJVcmwucGF0aG5hbWUsXG4gICAgICAgIF9idWlsZC5iYXNlbmFtZVxuICAgICAgKTtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgaGFuZGxlU2luZ2xlRmV0Y2hSZXF1ZXN0KFxuICAgICAgICBzZXJ2ZXJNb2RlLFxuICAgICAgICBfYnVpbGQsXG4gICAgICAgIHN0YXRpY0hhbmRsZXIsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGhhbmRsZXJVcmwsXG4gICAgICAgIGxvYWRDb250ZXh0LFxuICAgICAgICBoYW5kbGVFcnJvclxuICAgICAgKTtcbiAgICAgIGlmIChfYnVpbGQuZW50cnkubW9kdWxlLmhhbmRsZURhdGFSZXF1ZXN0KSB7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgX2J1aWxkLmVudHJ5Lm1vZHVsZS5oYW5kbGVEYXRhUmVxdWVzdChyZXNwb25zZSwge1xuICAgICAgICAgIGNvbnRleHQ6IGxvYWRDb250ZXh0LFxuICAgICAgICAgIHBhcmFtczogc2luZ2xlRmV0Y2hNYXRjaGVzID8gc2luZ2xlRmV0Y2hNYXRjaGVzWzBdLnBhcmFtcyA6IHt9LFxuICAgICAgICAgIHJlcXVlc3RcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc1JlZGlyZWN0UmVzcG9uc2UocmVzcG9uc2UpKSB7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGdldFNpbmdsZUZldGNoUmVkaXJlY3QoXG4gICAgICAgICAgICByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgICAgX2J1aWxkLmJhc2VuYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAocmVxdWVzdC5tZXRob2QgPT09IFwiR0VUXCIpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdOiByZXN1bHRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICAgICAgaGVhZGVycy5zZXQoXCJDb250ZW50LVR5cGVcIiwgXCJ0ZXh0L3gtc2NyaXB0XCIpO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICAgICAgICBlbmNvZGVWaWFUdXJib1N0cmVhbShcbiAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICByZXF1ZXN0LnNpZ25hbCxcbiAgICAgICAgICAgICAgX2J1aWxkLmVudHJ5Lm1vZHVsZS5zdHJlYW1UaW1lb3V0LFxuICAgICAgICAgICAgICBzZXJ2ZXJNb2RlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0dXM6IFNJTkdMRV9GRVRDSF9SRURJUkVDVF9TVEFUVVMsXG4gICAgICAgICAgICAgIGhlYWRlcnNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtYXRjaGVzICYmIG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5tb2R1bGUuZGVmYXVsdCA9PSBudWxsICYmIG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5tb2R1bGUuRXJyb3JCb3VuZGFyeSA9PSBudWxsKSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGhhbmRsZVJlc291cmNlUmVxdWVzdChcbiAgICAgICAgc2VydmVyTW9kZSxcbiAgICAgICAgc3RhdGljSGFuZGxlcixcbiAgICAgICAgbWF0Y2hlcy5zbGljZSgtMSlbMF0ucm91dGUuaWQsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGxvYWRDb250ZXh0LFxuICAgICAgICBoYW5kbGVFcnJvclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNyaXRpY2FsQ3NzID0gbW9kZSA9PT0gXCJkZXZlbG9wbWVudFwiIC8qIERldmVsb3BtZW50ICovID8gYXdhaXQgZ2V0RGV2U2VydmVySG9va3MoKT8uZ2V0Q3JpdGljYWxDc3M/LihfYnVpbGQsIHVybC5wYXRobmFtZSkgOiB2b2lkIDA7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGhhbmRsZURvY3VtZW50UmVxdWVzdChcbiAgICAgICAgc2VydmVyTW9kZSxcbiAgICAgICAgX2J1aWxkLFxuICAgICAgICBzdGF0aWNIYW5kbGVyLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBsb2FkQ29udGV4dCxcbiAgICAgICAgaGFuZGxlRXJyb3IsXG4gICAgICAgIGNyaXRpY2FsQ3NzXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAocmVxdWVzdC5tZXRob2QgPT09IFwiSEVBRFwiKSB7XG4gICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtcbiAgICAgICAgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHRcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH07XG59O1xuYXN5bmMgZnVuY3Rpb24gaGFuZGxlTWFuaWZlc3RSZXF1ZXN0KGJ1aWxkLCByb3V0ZXMsIHVybCkge1xuICBsZXQgcGF0Y2hlcyA9IHt9O1xuICBpZiAodXJsLnNlYXJjaFBhcmFtcy5oYXMoXCJwXCIpKSB7XG4gICAgZm9yIChsZXQgcGF0aCBvZiB1cmwuc2VhcmNoUGFyYW1zLmdldEFsbChcInBcIikpIHtcbiAgICAgIGxldCBtYXRjaGVzID0gbWF0Y2hTZXJ2ZXJSb3V0ZXMocm91dGVzLCBwYXRoLCBidWlsZC5iYXNlbmFtZSk7XG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgICAgICAgbGV0IHJvdXRlSWQgPSBtYXRjaC5yb3V0ZS5pZDtcbiAgICAgICAgICBsZXQgcm91dGUgPSBidWlsZC5hc3NldHMucm91dGVzW3JvdXRlSWRdO1xuICAgICAgICAgIGlmIChyb3V0ZSkge1xuICAgICAgICAgICAgcGF0Y2hlc1tyb3V0ZUlkXSA9IHJvdXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gUmVzcG9uc2UuanNvbihwYXRjaGVzLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCwgaW1tdXRhYmxlXCJcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiSW52YWxpZCBSZXF1ZXN0XCIsIHsgc3RhdHVzOiA0MDAgfSk7XG59XG5hc3luYyBmdW5jdGlvbiBoYW5kbGVTaW5nbGVGZXRjaFJlcXVlc3Qoc2VydmVyTW9kZSwgYnVpbGQsIHN0YXRpY0hhbmRsZXIsIHJlcXVlc3QsIGhhbmRsZXJVcmwsIGxvYWRDb250ZXh0LCBoYW5kbGVFcnJvcikge1xuICBsZXQgeyByZXN1bHQsIGhlYWRlcnMsIHN0YXR1cyB9ID0gcmVxdWVzdC5tZXRob2QgIT09IFwiR0VUXCIgPyBhd2FpdCBzaW5nbGVGZXRjaEFjdGlvbihcbiAgICBidWlsZCxcbiAgICBzZXJ2ZXJNb2RlLFxuICAgIHN0YXRpY0hhbmRsZXIsXG4gICAgcmVxdWVzdCxcbiAgICBoYW5kbGVyVXJsLFxuICAgIGxvYWRDb250ZXh0LFxuICAgIGhhbmRsZUVycm9yXG4gICkgOiBhd2FpdCBzaW5nbGVGZXRjaExvYWRlcnMoXG4gICAgYnVpbGQsXG4gICAgc2VydmVyTW9kZSxcbiAgICBzdGF0aWNIYW5kbGVyLFxuICAgIHJlcXVlc3QsXG4gICAgaGFuZGxlclVybCxcbiAgICBsb2FkQ29udGV4dCxcbiAgICBoYW5kbGVFcnJvclxuICApO1xuICBsZXQgcmVzdWx0SGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlcnMpO1xuICByZXN1bHRIZWFkZXJzLnNldChcIlgtUmVtaXgtUmVzcG9uc2VcIiwgXCJ5ZXNcIik7XG4gIGlmIChzdGF0dXMgPT09IDMwNCkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwgeyBzdGF0dXM6IDMwNCwgaGVhZGVyczogcmVzdWx0SGVhZGVycyB9KTtcbiAgfVxuICByZXN1bHRIZWFkZXJzLnNldChcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQveC1zY3JpcHRcIik7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgZW5jb2RlVmlhVHVyYm9TdHJlYW0oXG4gICAgICByZXN1bHQsXG4gICAgICByZXF1ZXN0LnNpZ25hbCxcbiAgICAgIGJ1aWxkLmVudHJ5Lm1vZHVsZS5zdHJlYW1UaW1lb3V0LFxuICAgICAgc2VydmVyTW9kZVxuICAgICksXG4gICAge1xuICAgICAgc3RhdHVzOiBzdGF0dXMgfHwgMjAwLFxuICAgICAgaGVhZGVyczogcmVzdWx0SGVhZGVyc1xuICAgIH1cbiAgKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZURvY3VtZW50UmVxdWVzdChzZXJ2ZXJNb2RlLCBidWlsZCwgc3RhdGljSGFuZGxlciwgcmVxdWVzdCwgbG9hZENvbnRleHQsIGhhbmRsZUVycm9yLCBjcml0aWNhbENzcykge1xuICBsZXQgY29udGV4dDtcbiAgdHJ5IHtcbiAgICBjb250ZXh0ID0gYXdhaXQgc3RhdGljSGFuZGxlci5xdWVyeShyZXF1ZXN0LCB7XG4gICAgICByZXF1ZXN0Q29udGV4dDogbG9hZENvbnRleHRcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7IHN0YXR1czogNTAwIH0pO1xuICB9XG4gIGlmIChpc1Jlc3BvbnNlKGNvbnRleHQpKSB7XG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH1cbiAgbGV0IGhlYWRlcnMgPSBnZXREb2N1bWVudEhlYWRlcnMoYnVpbGQsIGNvbnRleHQpO1xuICBpZiAoY29udGV4dC5zdGF0dXNDb2RlID09PSAzMDQpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHsgc3RhdHVzOiAzMDQsIGhlYWRlcnMgfSk7XG4gIH1cbiAgaWYgKGNvbnRleHQuZXJyb3JzKSB7XG4gICAgT2JqZWN0LnZhbHVlcyhjb250ZXh0LmVycm9ycykuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICBpZiAoIWlzUm91dGVFcnJvclJlc3BvbnNlKGVycikgfHwgZXJyLmVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29udGV4dC5lcnJvcnMgPSBzYW5pdGl6ZUVycm9ycyhjb250ZXh0LmVycm9ycywgc2VydmVyTW9kZSk7XG4gIH1cbiAgbGV0IHN0YXRlID0ge1xuICAgIGxvYWRlckRhdGE6IGNvbnRleHQubG9hZGVyRGF0YSxcbiAgICBhY3Rpb25EYXRhOiBjb250ZXh0LmFjdGlvbkRhdGEsXG4gICAgZXJyb3JzOiBzZXJpYWxpemVFcnJvcnMyKGNvbnRleHQuZXJyb3JzLCBzZXJ2ZXJNb2RlKVxuICB9O1xuICBsZXQgZW50cnlDb250ZXh0ID0ge1xuICAgIG1hbmlmZXN0OiBidWlsZC5hc3NldHMsXG4gICAgcm91dGVNb2R1bGVzOiBjcmVhdGVFbnRyeVJvdXRlTW9kdWxlcyhidWlsZC5yb3V0ZXMpLFxuICAgIHN0YXRpY0hhbmRsZXJDb250ZXh0OiBjb250ZXh0LFxuICAgIGNyaXRpY2FsQ3NzLFxuICAgIHNlcnZlckhhbmRvZmZTdHJpbmc6IGNyZWF0ZVNlcnZlckhhbmRvZmZTdHJpbmcoe1xuICAgICAgYmFzZW5hbWU6IGJ1aWxkLmJhc2VuYW1lLFxuICAgICAgY3JpdGljYWxDc3MsXG4gICAgICBmdXR1cmU6IGJ1aWxkLmZ1dHVyZSxcbiAgICAgIGlzU3BhTW9kZTogYnVpbGQuaXNTcGFNb2RlXG4gICAgfSksXG4gICAgc2VydmVySGFuZG9mZlN0cmVhbTogZW5jb2RlVmlhVHVyYm9TdHJlYW0oXG4gICAgICBzdGF0ZSxcbiAgICAgIHJlcXVlc3Quc2lnbmFsLFxuICAgICAgYnVpbGQuZW50cnkubW9kdWxlLnN0cmVhbVRpbWVvdXQsXG4gICAgICBzZXJ2ZXJNb2RlXG4gICAgKSxcbiAgICByZW5kZXJNZXRhOiB7fSxcbiAgICBmdXR1cmU6IGJ1aWxkLmZ1dHVyZSxcbiAgICBpc1NwYU1vZGU6IGJ1aWxkLmlzU3BhTW9kZSxcbiAgICBzZXJpYWxpemVFcnJvcjogKGVycikgPT4gc2VyaWFsaXplRXJyb3IoZXJyLCBzZXJ2ZXJNb2RlKVxuICB9O1xuICBsZXQgaGFuZGxlRG9jdW1lbnRSZXF1ZXN0RnVuY3Rpb24gPSBidWlsZC5lbnRyeS5tb2R1bGUuZGVmYXVsdDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgaGFuZGxlRG9jdW1lbnRSZXF1ZXN0RnVuY3Rpb24oXG4gICAgICByZXF1ZXN0LFxuICAgICAgY29udGV4dC5zdGF0dXNDb2RlLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGVudHJ5Q29udGV4dCxcbiAgICAgIGxvYWRDb250ZXh0XG4gICAgKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgbGV0IGVycm9yRm9yU2Vjb25kUmVuZGVyID0gZXJyb3I7XG4gICAgaWYgKGlzUmVzcG9uc2UoZXJyb3IpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQgZGF0YTIgPSBhd2FpdCB1bndyYXBSZXNwb25zZShlcnJvcik7XG4gICAgICAgIGVycm9yRm9yU2Vjb25kUmVuZGVyID0gbmV3IEVycm9yUmVzcG9uc2VJbXBsKFxuICAgICAgICAgIGVycm9yLnN0YXR1cyxcbiAgICAgICAgICBlcnJvci5zdGF0dXNUZXh0LFxuICAgICAgICAgIGRhdGEyXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnRleHQgPSBnZXRTdGF0aWNDb250ZXh0RnJvbUVycm9yKFxuICAgICAgc3RhdGljSGFuZGxlci5kYXRhUm91dGVzLFxuICAgICAgY29udGV4dCxcbiAgICAgIGVycm9yRm9yU2Vjb25kUmVuZGVyXG4gICAgKTtcbiAgICBpZiAoY29udGV4dC5lcnJvcnMpIHtcbiAgICAgIGNvbnRleHQuZXJyb3JzID0gc2FuaXRpemVFcnJvcnMoY29udGV4dC5lcnJvcnMsIHNlcnZlck1vZGUpO1xuICAgIH1cbiAgICBsZXQgc3RhdGUyID0ge1xuICAgICAgbG9hZGVyRGF0YTogY29udGV4dC5sb2FkZXJEYXRhLFxuICAgICAgYWN0aW9uRGF0YTogY29udGV4dC5hY3Rpb25EYXRhLFxuICAgICAgZXJyb3JzOiBzZXJpYWxpemVFcnJvcnMyKGNvbnRleHQuZXJyb3JzLCBzZXJ2ZXJNb2RlKVxuICAgIH07XG4gICAgZW50cnlDb250ZXh0ID0ge1xuICAgICAgLi4uZW50cnlDb250ZXh0LFxuICAgICAgc3RhdGljSGFuZGxlckNvbnRleHQ6IGNvbnRleHQsXG4gICAgICBzZXJ2ZXJIYW5kb2ZmU3RyaW5nOiBjcmVhdGVTZXJ2ZXJIYW5kb2ZmU3RyaW5nKHtcbiAgICAgICAgYmFzZW5hbWU6IGJ1aWxkLmJhc2VuYW1lLFxuICAgICAgICBmdXR1cmU6IGJ1aWxkLmZ1dHVyZSxcbiAgICAgICAgaXNTcGFNb2RlOiBidWlsZC5pc1NwYU1vZGVcbiAgICAgIH0pLFxuICAgICAgc2VydmVySGFuZG9mZlN0cmVhbTogZW5jb2RlVmlhVHVyYm9TdHJlYW0oXG4gICAgICAgIHN0YXRlMixcbiAgICAgICAgcmVxdWVzdC5zaWduYWwsXG4gICAgICAgIGJ1aWxkLmVudHJ5Lm1vZHVsZS5zdHJlYW1UaW1lb3V0LFxuICAgICAgICBzZXJ2ZXJNb2RlXG4gICAgICApLFxuICAgICAgcmVuZGVyTWV0YToge31cbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgaGFuZGxlRG9jdW1lbnRSZXF1ZXN0RnVuY3Rpb24oXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGNvbnRleHQuc3RhdHVzQ29kZSxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgZW50cnlDb250ZXh0LFxuICAgICAgICBsb2FkQ29udGV4dFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcjIpIHtcbiAgICAgIGhhbmRsZUVycm9yKGVycm9yMik7XG4gICAgICByZXR1cm4gcmV0dXJuTGFzdFJlc29ydEVycm9yUmVzcG9uc2UoZXJyb3IyLCBzZXJ2ZXJNb2RlKTtcbiAgICB9XG4gIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZVJlc291cmNlUmVxdWVzdChzZXJ2ZXJNb2RlLCBzdGF0aWNIYW5kbGVyLCByb3V0ZUlkLCByZXF1ZXN0LCBsb2FkQ29udGV4dCwgaGFuZGxlRXJyb3IpIHtcbiAgdHJ5IHtcbiAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBzdGF0aWNIYW5kbGVyLnF1ZXJ5Um91dGUocmVxdWVzdCwge1xuICAgICAgcm91dGVJZCxcbiAgICAgIHJlcXVlc3RDb250ZXh0OiBsb2FkQ29udGV4dFxuICAgIH0pO1xuICAgIGludmFyaWFudDMoXG4gICAgICBpc1Jlc3BvbnNlKHJlc3BvbnNlKSxcbiAgICAgIFwiRXhwZWN0ZWQgYSBSZXNwb25zZSB0byBiZSByZXR1cm5lZCBmcm9tIHJlc291cmNlIHJvdXRlIGhhbmRsZXJcIlxuICAgICk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChpc1Jlc3BvbnNlKGVycm9yKSkge1xuICAgICAgZXJyb3IuaGVhZGVycy5zZXQoXCJYLVJlbWl4LUNhdGNoXCIsIFwieWVzXCIpO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cbiAgICBpZiAoaXNSb3V0ZUVycm9yUmVzcG9uc2UoZXJyb3IpKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVycm9yUmVzcG9uc2VUb0pzb24oZXJyb3IsIHNlcnZlck1vZGUpO1xuICAgIH1cbiAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIHJldHVybkxhc3RSZXNvcnRFcnJvclJlc3BvbnNlKGVycm9yLCBzZXJ2ZXJNb2RlKTtcbiAgfVxufVxuZnVuY3Rpb24gZXJyb3JSZXNwb25zZVRvSnNvbihlcnJvclJlc3BvbnNlLCBzZXJ2ZXJNb2RlKSB7XG4gIHJldHVybiBSZXNwb25zZS5qc29uKFxuICAgIHNlcmlhbGl6ZUVycm9yKFxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUaGlzIGlzIFwicHJpdmF0ZVwiIGZyb20gdXNlcnMgYnV0IGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2VcbiAgICAgIGVycm9yUmVzcG9uc2UuZXJyb3IgfHwgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBTZXJ2ZXIgRXJyb3JcIiksXG4gICAgICBzZXJ2ZXJNb2RlXG4gICAgKSxcbiAgICB7XG4gICAgICBzdGF0dXM6IGVycm9yUmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogZXJyb3JSZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIlgtUmVtaXgtRXJyb3JcIjogXCJ5ZXNcIlxuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIHJldHVybkxhc3RSZXNvcnRFcnJvclJlc3BvbnNlKGVycm9yLCBzZXJ2ZXJNb2RlKSB7XG4gIGxldCBtZXNzYWdlID0gXCJVbmV4cGVjdGVkIFNlcnZlciBFcnJvclwiO1xuICBpZiAoc2VydmVyTW9kZSAhPT0gXCJwcm9kdWN0aW9uXCIgLyogUHJvZHVjdGlvbiAqLykge1xuICAgIG1lc3NhZ2UgKz0gYFxuXG4ke1N0cmluZyhlcnJvcil9YDtcbiAgfVxuICByZXR1cm4gbmV3IFJlc3BvbnNlKG1lc3NhZ2UsIHtcbiAgICBzdGF0dXM6IDUwMCxcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcInRleHQvcGxhaW5cIlxuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiB1bndyYXBSZXNwb25zZShyZXNwb25zZSkge1xuICBsZXQgY29udGVudFR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKTtcbiAgcmV0dXJuIGNvbnRlbnRUeXBlICYmIC9cXGJhcHBsaWNhdGlvblxcL2pzb25cXGIvLnRlc3QoY29udGVudFR5cGUpID8gcmVzcG9uc2UuYm9keSA9PSBudWxsID8gbnVsbCA6IHJlc3BvbnNlLmpzb24oKSA6IHJlc3BvbnNlLnRleHQoKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL3Nlc3Npb25zLnRzXG5mdW5jdGlvbiBmbGFzaChuYW1lKSB7XG4gIHJldHVybiBgX19mbGFzaF8ke25hbWV9X19gO1xufVxudmFyIGNyZWF0ZVNlc3Npb24gPSAoaW5pdGlhbERhdGEgPSB7fSwgaWQgPSBcIlwiKSA9PiB7XG4gIGxldCBtYXAgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKGluaXRpYWxEYXRhKSk7XG4gIHJldHVybiB7XG4gICAgZ2V0IGlkKCkge1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH0sXG4gICAgZ2V0IGRhdGEoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKG1hcCk7XG4gICAgfSxcbiAgICBoYXMobmFtZSkge1xuICAgICAgcmV0dXJuIG1hcC5oYXMobmFtZSkgfHwgbWFwLmhhcyhmbGFzaChuYW1lKSk7XG4gICAgfSxcbiAgICBnZXQobmFtZSkge1xuICAgICAgaWYgKG1hcC5oYXMobmFtZSkpIHJldHVybiBtYXAuZ2V0KG5hbWUpO1xuICAgICAgbGV0IGZsYXNoTmFtZSA9IGZsYXNoKG5hbWUpO1xuICAgICAgaWYgKG1hcC5oYXMoZmxhc2hOYW1lKSkge1xuICAgICAgICBsZXQgdmFsdWUgPSBtYXAuZ2V0KGZsYXNoTmFtZSk7XG4gICAgICAgIG1hcC5kZWxldGUoZmxhc2hOYW1lKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9LFxuICAgIHNldChuYW1lLCB2YWx1ZSkge1xuICAgICAgbWFwLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgfSxcbiAgICBmbGFzaChuYW1lLCB2YWx1ZSkge1xuICAgICAgbWFwLnNldChmbGFzaChuYW1lKSwgdmFsdWUpO1xuICAgIH0sXG4gICAgdW5zZXQobmFtZSkge1xuICAgICAgbWFwLmRlbGV0ZShuYW1lKTtcbiAgICB9XG4gIH07XG59O1xudmFyIGlzU2Vzc2lvbiA9IChvYmplY3QpID0+IHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIHR5cGVvZiBvYmplY3QuaWQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIG9iamVjdC5kYXRhICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBvYmplY3QuaGFzID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIG9iamVjdC5nZXQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqZWN0LnNldCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBvYmplY3QuZmxhc2ggPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqZWN0LnVuc2V0ID09PSBcImZ1bmN0aW9uXCI7XG59O1xuZnVuY3Rpb24gY3JlYXRlU2Vzc2lvblN0b3JhZ2Uoe1xuICBjb29raWU6IGNvb2tpZUFyZyxcbiAgY3JlYXRlRGF0YSxcbiAgcmVhZERhdGEsXG4gIHVwZGF0ZURhdGEsXG4gIGRlbGV0ZURhdGFcbn0pIHtcbiAgbGV0IGNvb2tpZSA9IGlzQ29va2llKGNvb2tpZUFyZykgPyBjb29raWVBcmcgOiBjcmVhdGVDb29raWUoY29va2llQXJnPy5uYW1lIHx8IFwiX19zZXNzaW9uXCIsIGNvb2tpZUFyZyk7XG4gIHdhcm5PbmNlQWJvdXRTaWduaW5nU2Vzc2lvbkNvb2tpZShjb29raWUpO1xuICByZXR1cm4ge1xuICAgIGFzeW5jIGdldFNlc3Npb24oY29va2llSGVhZGVyLCBvcHRpb25zKSB7XG4gICAgICBsZXQgaWQgPSBjb29raWVIZWFkZXIgJiYgYXdhaXQgY29va2llLnBhcnNlKGNvb2tpZUhlYWRlciwgb3B0aW9ucyk7XG4gICAgICBsZXQgZGF0YTIgPSBpZCAmJiBhd2FpdCByZWFkRGF0YShpZCk7XG4gICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvbihkYXRhMiB8fCB7fSwgaWQgfHwgXCJcIik7XG4gICAgfSxcbiAgICBhc3luYyBjb21taXRTZXNzaW9uKHNlc3Npb24sIG9wdGlvbnMpIHtcbiAgICAgIGxldCB7IGlkLCBkYXRhOiBkYXRhMiB9ID0gc2Vzc2lvbjtcbiAgICAgIGxldCBleHBpcmVzID0gb3B0aW9ucz8ubWF4QWdlICE9IG51bGwgPyBuZXcgRGF0ZShEYXRlLm5vdygpICsgb3B0aW9ucy5tYXhBZ2UgKiAxZTMpIDogb3B0aW9ucz8uZXhwaXJlcyAhPSBudWxsID8gb3B0aW9ucy5leHBpcmVzIDogY29va2llLmV4cGlyZXM7XG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgYXdhaXQgdXBkYXRlRGF0YShpZCwgZGF0YTIsIGV4cGlyZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWQgPSBhd2FpdCBjcmVhdGVEYXRhKGRhdGEyLCBleHBpcmVzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb29raWUuc2VyaWFsaXplKGlkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGFzeW5jIGRlc3Ryb3lTZXNzaW9uKHNlc3Npb24sIG9wdGlvbnMpIHtcbiAgICAgIGF3YWl0IGRlbGV0ZURhdGEoc2Vzc2lvbi5pZCk7XG4gICAgICByZXR1cm4gY29va2llLnNlcmlhbGl6ZShcIlwiLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG1heEFnZTogdm9pZCAwLFxuICAgICAgICBleHBpcmVzOiAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoMClcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIHdhcm5PbmNlQWJvdXRTaWduaW5nU2Vzc2lvbkNvb2tpZShjb29raWUpIHtcbiAgd2Fybk9uY2UoXG4gICAgY29va2llLmlzU2lnbmVkLFxuICAgIGBUaGUgXCIke2Nvb2tpZS5uYW1lfVwiIGNvb2tpZSBpcyBub3Qgc2lnbmVkLCBidXQgc2Vzc2lvbiBjb29raWVzIHNob3VsZCBiZSBzaWduZWQgdG8gcHJldmVudCB0YW1wZXJpbmcgb24gdGhlIGNsaWVudCBiZWZvcmUgdGhleSBhcmUgc2VudCBiYWNrIHRvIHRoZSBzZXJ2ZXIuIFNlZSBodHRwczovL3JlbWl4LnJ1bi91dGlscy9jb29raWVzI3NpZ25pbmctY29va2llcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5gXG4gICk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9zZXNzaW9ucy9jb29raWVTdG9yYWdlLnRzXG5mdW5jdGlvbiBjcmVhdGVDb29raWVTZXNzaW9uU3RvcmFnZSh7IGNvb2tpZTogY29va2llQXJnIH0gPSB7fSkge1xuICBsZXQgY29va2llID0gaXNDb29raWUoY29va2llQXJnKSA/IGNvb2tpZUFyZyA6IGNyZWF0ZUNvb2tpZShjb29raWVBcmc/Lm5hbWUgfHwgXCJfX3Nlc3Npb25cIiwgY29va2llQXJnKTtcbiAgd2Fybk9uY2VBYm91dFNpZ25pbmdTZXNzaW9uQ29va2llKGNvb2tpZSk7XG4gIHJldHVybiB7XG4gICAgYXN5bmMgZ2V0U2Vzc2lvbihjb29raWVIZWFkZXIsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBjcmVhdGVTZXNzaW9uKFxuICAgICAgICBjb29raWVIZWFkZXIgJiYgYXdhaXQgY29va2llLnBhcnNlKGNvb2tpZUhlYWRlciwgb3B0aW9ucykgfHwge31cbiAgICAgICk7XG4gICAgfSxcbiAgICBhc3luYyBjb21taXRTZXNzaW9uKHNlc3Npb24sIG9wdGlvbnMpIHtcbiAgICAgIGxldCBzZXJpYWxpemVkQ29va2llID0gYXdhaXQgY29va2llLnNlcmlhbGl6ZShzZXNzaW9uLmRhdGEsIG9wdGlvbnMpO1xuICAgICAgaWYgKHNlcmlhbGl6ZWRDb29raWUubGVuZ3RoID4gNDA5Nikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJDb29raWUgbGVuZ3RoIHdpbGwgZXhjZWVkIGJyb3dzZXIgbWF4aW11bS4gTGVuZ3RoOiBcIiArIHNlcmlhbGl6ZWRDb29raWUubGVuZ3RoXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VyaWFsaXplZENvb2tpZTtcbiAgICB9LFxuICAgIGFzeW5jIGRlc3Ryb3lTZXNzaW9uKF9zZXNzaW9uLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gY29va2llLnNlcmlhbGl6ZShcIlwiLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG1heEFnZTogdm9pZCAwLFxuICAgICAgICBleHBpcmVzOiAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoMClcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL3Nlc3Npb25zL21lbW9yeVN0b3JhZ2UudHNcbmZ1bmN0aW9uIGNyZWF0ZU1lbW9yeVNlc3Npb25TdG9yYWdlKHsgY29va2llIH0gPSB7fSkge1xuICBsZXQgbWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgcmV0dXJuIGNyZWF0ZVNlc3Npb25TdG9yYWdlKHtcbiAgICBjb29raWUsXG4gICAgYXN5bmMgY3JlYXRlRGF0YShkYXRhMiwgZXhwaXJlcykge1xuICAgICAgbGV0IGlkID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDEwKTtcbiAgICAgIG1hcC5zZXQoaWQsIHsgZGF0YTogZGF0YTIsIGV4cGlyZXMgfSk7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSxcbiAgICBhc3luYyByZWFkRGF0YShpZCkge1xuICAgICAgaWYgKG1hcC5oYXMoaWQpKSB7XG4gICAgICAgIGxldCB7IGRhdGE6IGRhdGEyLCBleHBpcmVzIH0gPSBtYXAuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFleHBpcmVzIHx8IGV4cGlyZXMgPiAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkge1xuICAgICAgICAgIHJldHVybiBkYXRhMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXhwaXJlcykgbWFwLmRlbGV0ZShpZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIGFzeW5jIHVwZGF0ZURhdGEoaWQsIGRhdGEyLCBleHBpcmVzKSB7XG4gICAgICBtYXAuc2V0KGlkLCB7IGRhdGE6IGRhdGEyLCBleHBpcmVzIH0pO1xuICAgIH0sXG4gICAgYXN5bmMgZGVsZXRlRGF0YShpZCkge1xuICAgICAgbWFwLmRlbGV0ZShpZCk7XG4gICAgfVxuICB9KTtcbn1cblxuLy8gbGliL2RvbS9zc3IvZXJyb3JzLnRzXG5mdW5jdGlvbiBkZXNlcmlhbGl6ZUVycm9yczIoZXJyb3JzKSB7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gbnVsbDtcbiAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhlcnJvcnMpO1xuICBsZXQgc2VyaWFsaXplZCA9IHt9O1xuICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIGVudHJpZXMpIHtcbiAgICBpZiAodmFsICYmIHZhbC5fX3R5cGUgPT09IFwiUm91dGVFcnJvclJlc3BvbnNlXCIpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IG5ldyBFcnJvclJlc3BvbnNlSW1wbChcbiAgICAgICAgdmFsLnN0YXR1cyxcbiAgICAgICAgdmFsLnN0YXR1c1RleHQsXG4gICAgICAgIHZhbC5kYXRhLFxuICAgICAgICB2YWwuaW50ZXJuYWwgPT09IHRydWVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh2YWwgJiYgdmFsLl9fdHlwZSA9PT0gXCJFcnJvclwiKSB7XG4gICAgICBpZiAodmFsLl9fc3ViVHlwZSkge1xuICAgICAgICBsZXQgRXJyb3JDb25zdHJ1Y3RvciA9IHdpbmRvd1t2YWwuX19zdWJUeXBlXTtcbiAgICAgICAgaWYgKHR5cGVvZiBFcnJvckNvbnN0cnVjdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yQ29uc3RydWN0b3IodmFsLm1lc3NhZ2UpO1xuICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSB2YWwuc3RhY2s7XG4gICAgICAgICAgICBzZXJpYWxpemVkW2tleV0gPSBlcnJvcjtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc2VyaWFsaXplZFtrZXldID09IG51bGwpIHtcbiAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yKHZhbC5tZXNzYWdlKTtcbiAgICAgICAgZXJyb3Iuc3RhY2sgPSB2YWwuc3RhY2s7XG4gICAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IGVycm9yO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXJpYWxpemVkW2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuXG5leHBvcnQge1xuICBBY3Rpb24sXG4gIGNyZWF0ZUJyb3dzZXJIaXN0b3J5LFxuICBpbnZhcmlhbnQsXG4gIGNyZWF0ZVBhdGgsXG4gIHBhcnNlUGF0aCxcbiAgbWF0Y2hSb3V0ZXMsXG4gIGdlbmVyYXRlUGF0aCxcbiAgbWF0Y2hQYXRoLFxuICByZXNvbHZlUGF0aCxcbiAgZGF0YSxcbiAgcmVkaXJlY3QsXG4gIHJlZGlyZWN0RG9jdW1lbnQsXG4gIHJlcGxhY2UsXG4gIEVycm9yUmVzcG9uc2VJbXBsLFxuICBpc1JvdXRlRXJyb3JSZXNwb25zZSxcbiAgSURMRV9OQVZJR0FUSU9OLFxuICBJRExFX0ZFVENIRVIsXG4gIElETEVfQkxPQ0tFUixcbiAgY3JlYXRlUm91dGVyLFxuICBEYXRhUm91dGVyQ29udGV4dCxcbiAgRGF0YVJvdXRlclN0YXRlQ29udGV4dCxcbiAgVmlld1RyYW5zaXRpb25Db250ZXh0LFxuICBGZXRjaGVyc0NvbnRleHQsXG4gIE5hdmlnYXRpb25Db250ZXh0LFxuICBMb2NhdGlvbkNvbnRleHQsXG4gIFJvdXRlQ29udGV4dCxcbiAgdXNlSHJlZixcbiAgdXNlSW5Sb3V0ZXJDb250ZXh0LFxuICB1c2VMb2NhdGlvbixcbiAgdXNlTmF2aWdhdGlvblR5cGUsXG4gIHVzZU1hdGNoLFxuICB1c2VOYXZpZ2F0ZSxcbiAgdXNlT3V0bGV0Q29udGV4dCxcbiAgdXNlT3V0bGV0LFxuICB1c2VQYXJhbXMsXG4gIHVzZVJlc29sdmVkUGF0aCxcbiAgdXNlUm91dGVzLFxuICB1c2VOYXZpZ2F0aW9uLFxuICB1c2VSZXZhbGlkYXRvcixcbiAgdXNlTWF0Y2hlcyxcbiAgdXNlTG9hZGVyRGF0YSxcbiAgdXNlUm91dGVMb2FkZXJEYXRhLFxuICB1c2VBY3Rpb25EYXRhLFxuICB1c2VSb3V0ZUVycm9yLFxuICB1c2VBc3luY1ZhbHVlLFxuICB1c2VBc3luY0Vycm9yLFxuICB1c2VCbG9ja2VyLFxuICBtYXBSb3V0ZVByb3BlcnRpZXMsXG4gIGNyZWF0ZU1lbW9yeVJvdXRlcixcbiAgUm91dGVyUHJvdmlkZXIsXG4gIE1lbW9yeVJvdXRlcixcbiAgTmF2aWdhdGUsXG4gIE91dGxldCxcbiAgUm91dGUsXG4gIFJvdXRlcixcbiAgUm91dGVzLFxuICBBd2FpdCxcbiAgY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuLFxuICBjcmVhdGVSb3V0ZXNGcm9tRWxlbWVudHMsXG4gIHJlbmRlck1hdGNoZXMsXG4gIGNyZWF0ZVNlYXJjaFBhcmFtcyxcbiAgU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbCxcbiAgZ2V0U2luZ2xlRmV0Y2hEYXRhU3RyYXRlZ3ksXG4gIGRlY29kZVZpYVR1cmJvU3RyZWFtLFxuICBSZW1peEVycm9yQm91bmRhcnksXG4gIGNyZWF0ZUNsaWVudFJvdXRlc1dpdGhITVJSZXZhbGlkYXRpb25PcHRPdXQsXG4gIGNyZWF0ZUNsaWVudFJvdXRlcyxcbiAgc2hvdWxkSHlkcmF0ZVJvdXRlTG9hZGVyLFxuICBnZXRQYXRjaFJvdXRlc09uTmF2aWdhdGlvbkZ1bmN0aW9uLFxuICB1c2VGb2dPRldhckRpc2NvdmVyeSxcbiAgRnJhbWV3b3JrQ29udGV4dCxcbiAgTGlua3MsXG4gIFByZWZldGNoUGFnZUxpbmtzLFxuICBNZXRhLFxuICBTY3JpcHRzLFxuICBjcmVhdGVCcm93c2VyUm91dGVyLFxuICBjcmVhdGVIYXNoUm91dGVyLFxuICBCcm93c2VyUm91dGVyLFxuICBIYXNoUm91dGVyLFxuICBIaXN0b3J5Um91dGVyLFxuICBMaW5rLFxuICBOYXZMaW5rLFxuICBGb3JtLFxuICBTY3JvbGxSZXN0b3JhdGlvbixcbiAgdXNlTGlua0NsaWNrSGFuZGxlcixcbiAgdXNlU2VhcmNoUGFyYW1zLFxuICB1c2VTdWJtaXQsXG4gIHVzZUZvcm1BY3Rpb24sXG4gIHVzZUZldGNoZXIsXG4gIHVzZUZldGNoZXJzLFxuICB1c2VTY3JvbGxSZXN0b3JhdGlvbixcbiAgdXNlQmVmb3JlVW5sb2FkLFxuICB1c2VQcm9tcHQsXG4gIHVzZVZpZXdUcmFuc2l0aW9uU3RhdGUsXG4gIFN0YXRpY1JvdXRlcixcbiAgU3RhdGljUm91dGVyUHJvdmlkZXIsXG4gIGNyZWF0ZVN0YXRpY0hhbmRsZXIyIGFzIGNyZWF0ZVN0YXRpY0hhbmRsZXIsXG4gIGNyZWF0ZVN0YXRpY1JvdXRlcixcbiAgU2VydmVyUm91dGVyLFxuICBjcmVhdGVSb3V0ZXNTdHViLFxuICBjcmVhdGVDb29raWUsXG4gIGlzQ29va2llLFxuICBTZXJ2ZXJNb2RlLFxuICBzZXREZXZTZXJ2ZXJIb29rcyxcbiAgY3JlYXRlUmVxdWVzdEhhbmRsZXIsXG4gIGNyZWF0ZVNlc3Npb24sXG4gIGlzU2Vzc2lvbixcbiAgY3JlYXRlU2Vzc2lvblN0b3JhZ2UsXG4gIGNyZWF0ZUNvb2tpZVNlc3Npb25TdG9yYWdlLFxuICBjcmVhdGVNZW1vcnlTZXNzaW9uU3RvcmFnZSxcbiAgZGVzZXJpYWxpemVFcnJvcnMyIGFzIGRlc2VyaWFsaXplRXJyb3JzXG59O1xuIiwiaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IHtTaGlwcGluZ1NlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zaGlwcGluZ1wiXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi4vLi4vbW9kZWwvc2hvcFwiXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlXCJcbmltcG9ydCB7T3JkZXJTdGF0ZX0gZnJvbSBcIi4uLy4uL3N0YXRlL29yZGVyXCJcbmltcG9ydCB7T3JkZXJ9IGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEluZm9GaWVsZENvbXBvbmVudCA9ICh7c2hvcCwgb3JkZXJ9KSA9PiB7XG5cbiAgICBjb25zdCBbYmFza2V0RmllbGQxLCBzZXRCYXNrZXRGaWVsZDFdID0gdXNlU3RhdGU8c3RyaW5nPihcIlwiKTtcbiAgICBjb25zdCBbYmFza2V0RmllbGQyLCBzZXRCYXNrZXRGaWVsZDJdID0gdXNlU3RhdGU8c3RyaW5nPihcIlwiKTtcblxuICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldEJhc2tldEZpZWxkMShvcmRlci5iYXNrZXRGaWVsZDEpXG4gICAgICAgIHNldEJhc2tldEZpZWxkMihvcmRlci5iYXNrZXRGaWVsZDEpXG4gICAgfSwgW29yZGVyLmJhc2tldEZpZWxkMSwgb3JkZXIuYmFza2V0RmllbGQyXSlcblxuICAgIGNvbnN0IGNoYW5nZUJhc2tldEZpZWxkMSA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLmdldFZhbHVlKClcbiAgICAgICAgb3JkZXJPYmouYmFza2V0RmllbGQxID0gdmFsdWVcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXG4gICAgICAgIHNldEJhc2tldEZpZWxkMSh2YWx1ZSlcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2VCYXNrZXRGaWVsZDIgPSAodmFsdWUpID0+IHtcbiAgICAgICAgbGV0IG9yZGVyT2JqID0gb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS5nZXRWYWx1ZSgpXG4gICAgICAgIG9yZGVyT2JqLmJhc2tldEZpZWxkMiA9IHZhbHVlXG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxuICAgICAgICBzZXRCYXNrZXRGaWVsZDIodmFsdWUpXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImZsZXhcIn0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wiZmxleC0xXCJ9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleCBnYXAtMSc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiYmFza2V0RmllbGQxXCIgdmFsdWU9e2Jhc2tldEZpZWxkMX0gb25DaGFuZ2U9eyBlID0+IGNoYW5nZUJhc2tldEZpZWxkMShlLnRhcmdldC52YWx1ZSl9IGNsYXNzTmFtZT17XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCJ9IHBsYWNlaG9sZGVyPXtcIkluZm8gMVwifSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPntzaG9wLmJhc2tldEZpZWxkMX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJmbGV4LTFcIn0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4IGdhcC0xJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJiYXNrZXRGaWVsZDJcIiB2YWx1ZT17YmFza2V0RmllbGQyfSBvbkNoYW5nZT17ZSA9PiBjaGFuZ2VCYXNrZXRGaWVsZDIoZS50YXJnZXQudmFsdWUpfSAgY2xhc3NOYW1lPXtcImJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWdyYXktOTAwIHRleHQtc20gcm91bmRlZC1sZyBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBibG9jayB3LWZ1bGwgcC0yLjUgZGFyazpiZy1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS01MDAgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIn0gcGxhY2Vob2xkZXI9e1wiSW5mbyAyXCJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3Nob3AuYmFza2V0RmllbGQyfTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4pO1xufVxuXG5JbmZvRmllbGRDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbmZvRmllbGRDb21wb25lbnQ7XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQge09yZGVyfSBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIjtcclxuXHJcbmNvbnN0IE9yZGVyQWxpYXNDb21wb25lbnQgPSAoe29yZGVyfSkgPT4ge1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wibS0xIHAtMlwifT5cclxuICAgICAgICAgICAgPGg0Pk5SOiB7b3JkZXIuYWxpYXN9PC9oND5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7ICBcclxufVxyXG5cclxuT3JkZXJBbGlhc0NvbXBvbmVudC5wcm9wVHlwZXMgPSB7XHJcbiAgICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgT3JkZXJBbGlhc0NvbXBvbmVudDsiLCJpbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcbmltcG9ydCBDb250YWN0Q29tcG9uZW50IGZyb20gJy4uL2NvbnRhY3QvQ29udGFjdENvbXBvbmVudCdcbmltcG9ydCBUb3BCYXJDb21wb25lbnQgZnJvbSAnLi4vdG9wYmFyL1RvcEJhckNvbXBvbmVudCdcbmltcG9ydCBQb3NpdGlvbnNDb21wb25lbnQgZnJvbSAnLi4vcG9zaXRpb25zL1Bvc2l0aW9uc0NvbXBvbmVudCdcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQge09yZGVyfSBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxuaW1wb3J0IFBheW1lbnRDb21wb25lbnQgZnJvbSBcIi4uL3BheW1lbnQvUGF5bWVudENvbXBvbmVudFwiXG5pbXBvcnQgU2hpcHBpbmdDb21wb25lbnQgZnJvbSBcIi4uL3NoaXBwaW5nL1NoaXBwaW5nQ29tcG9uZW50XCJcbmltcG9ydCBCdXR0b25Db21wb25lbnQgZnJvbSBcIi4uL2J1dHRvbi9CdXR0b25Db21wb25lbnRcIlxuaW1wb3J0IHt1c2VQYXJhbXN9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCJcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2VcIlxuaW1wb3J0IHtPcmRlclN0YXRlfSBmcm9tIFwiLi4vLi4vc3RhdGUvb3JkZXJcIlxuaW1wb3J0IHtPcmRlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9vcmRlclwiXG5pbXBvcnQgSW5mb0ZpZWxkQ29tcG9uZW50IGZyb20gXCIuLi9pbmZvL0luZm9GaWVsZENvbXBvbmVudFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgT3JkZXJBbGlhc0NvbXBvbmVudCBmcm9tICcuLi9vcmRlci9PcmRlckFsaWFzQ29tcG9uZW50J1xuXG5jb25zdCBCYXNlQ29tcG9uZW50ID0gKHByb3BzKSA9PiB7XG5cbiAgICBjb25zdCBbc2hvcCwgc2V0U2hvcF0gPSB1c2VTdGF0ZTxTaG9wPihuZXcgU2hvcCgpKVxuICAgIGNvbnN0IFtvcmRlciwgc2V0T3JkZXJdID0gdXNlU3RhdGU8T3JkZXI+KG5ldyBPcmRlcigpKVxuXG4gICAgY29uc3Qgb3JkZXJfc3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuICAgIGNvbnN0IG9yZGVyU2VydmljZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU2VydmljZSlcbiAgICBjb25zdCBsb2FkT3JkZXIgPSBhc3luYyAodXVpZDogU3RyaW5nKSA9PiB7XG4gICAgICAgIG9yZGVyU2VydmljZS5nZXRPcmRlcih1dWlkKS50aGVuKChvcmRlck9iaikgPT4ge1xuICAgICAgICAgICAgb3JkZXJfc3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxuICAgICAgICAgICAgc2V0U2hvcChvcmRlck9iai5zaG9wKVxuICAgICAgICAgICAgc2V0T3JkZXIob3JkZXJPYmopXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgbGV0IHBhcmFtcyA9IHVzZVBhcmFtcygpXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZihwYXJhbXMudXVpZCkge1xuICAgICAgICAgICAgbG9hZE9yZGVyKHBhcmFtcy51dWlkKVxuICAgICAgICB9XG4gICAgfSwgW10pXG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8UmVhY3QuU3RyaWN0TW9kZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtbC0xIG10LTEgbXItMSc+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0xIG10LTEgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPE9yZGVyQWxpYXNDb21wb25lbnQgb3JkZXI9e29yZGVyfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25Db21wb25lbnQgbG9hZE9yZGVyPXtsb2FkT3JkZXJ9Lz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8VG9wQmFyQ29tcG9uZW50IHNob3A9e3Nob3B9IG9yZGVyPXtvcmRlcn0gY2hhbmdlPXtzZXRTaG9wfSAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSBtYi0xXCI+eyBzaG9wLmlkICE9IDAgJiYgPENvbnRhY3RDb21wb25lbnQgc2hvcD17c2hvcH0gb3JkZXI9e29yZGVyfSAvPiB9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj57IHNob3AuaWQgIT0gMCAmJiA8UG9zaXRpb25zQ29tcG9uZW50IHNob3A9e3Nob3B9IG9yZGVyPXtvcmRlcn0gLz4gfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSBtYi0xIGZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj57IHNob3AuaWQgIT0gMCAmJiA8UGF5bWVudENvbXBvbmVudCBzaG9wPXtzaG9wfSBvcmRlcj17b3JkZXJ9IC8+IH08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj57IHNob3AuaWQgIT0gMCAmJiA8U2hpcHBpbmdDb21wb25lbnQgc2hvcD17c2hvcH0gb3JkZXI9e29yZGVyfSAvPiB9PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgeyBzaG9wLmlkICE9IDAgJiYgPEluZm9GaWVsZENvbXBvbmVudCBzaG9wPXtzaG9wfSBvcmRlcj17b3JkZXJ9IC8+IH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L1JlYWN0LlN0cmljdE1vZGU+XG4gICAgKVxuICAgIFxufSBcblxuZXhwb3J0IGRlZmF1bHQgQmFzZUNvbXBvbmVudFxuIiwiaW1wb3J0ICogYXMgRXRhIGZyb20gJ2V0YSdcbmltcG9ydCB7IFRva2VuIH0gZnJvbSAnLi4vc2VydmljZXMvdG9rZW4nXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlXCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20vY2xpZW50J1xuaW1wb3J0IE5pY2VNb2RhbCBmcm9tIFwiQGViYXkvbmljZS1tb2RhbC1yZWFjdFwiXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tICcuLi9tb2R1bGVzL2Jhc2UvQmFzZUNvbXBvbmVudCdcbmltcG9ydCB7Um91dGUsIEhhc2hSb3V0ZXIgYXMgUm91dGVyLCBSb3V0ZXMsIHVzZVNlYXJjaFBhcmFtc30gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIlxuXG5leHBvcnQgY2xhc3MgQXBwIHtcbiAgICBwcml2YXRlIHNlYXJjaFBhcmFtczogYW55XG4gICAgcHJpdmF0ZSBzZXRTZWFyY2hQYXJhbXM6IGFueVxuXG5cbiAgICBjb25zdHJ1Y3Rvcihqd3Q6IFN0cmluZykge1xuICAgICAgICBsZXQgdG9rZW4gPSBjb250YWluZXIucmVzb2x2ZShUb2tlbilcbiAgICAgICAgY29uc29sZS5sb2coand0KVxuICAgICAgICB0b2tlbi5jdXJyZW50VG9rZW4gPSBqd3RcbiAgICAgICAgdG9rZW4uaW5pdCgpXG4gICAgfVxuXG4gICAgaW5pdCgpOiB2b2lkIHtcblxuICAgICAgICB0aGlzLmJ1aWxkVWkoKVxuICAgIH1cblxuICAgIGJ1aWxkVWkoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBSZWFjdERPTS5jcmVhdGVSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290JykpXG5cbiAgICAgICAgcm9vdC5yZW5kZXIoXG4gICAgICAgICAgICA8TmljZU1vZGFsLlByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDxSb3V0ZXI+XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9cIiBlbGVtZW50PXs8QmFzZUNvbXBvbmVudCAvPn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiLzp1dWlkXCIgZWxlbWVudD17PEJhc2VDb21wb25lbnQgLz59IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUm91dGVzPlxuICAgICAgICAgICAgICAgIDwvUm91dGVyPlxuICAgICAgICAgICAgPC9OaWNlTW9kYWwuUHJvdmlkZXI+XG4gICAgICAgIClcblxuICAgIH1cblxuICAgIHJ1bigpOiB2b2lkIHtcbiAgICAgICAgXG4gICAgXG4gICAgfVxufVxuIiwiaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiO1xuaW1wb3J0ICogYXMgJCBmcm9tIFwianF1ZXJ5XCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi9hcHAvYXBwXCI7XG5cbmRlY2xhcmUgdmFyIGp3dF90b2tlbjogU3RyaW5nO1xuXG5sZXQgYXBwID0gbmV3IEFwcChqd3RfdG9rZW4pO1xuYXBwLmluaXQoKTtcbmFwcC5ydW4oKTtcbiJdLCJuYW1lcyI6WyJSZWZsZWN0IiwiZ2xvYmFsIiwiXyIsImhhc093biIsIl9NYXAiLCJfU2V0IiwiX1dlYWtNYXAiLCJpIiwiTyIsIlAiLCJvd25LZXlzIiwic2V0IiwieCIsInRvU3RyaW5nXzEiLCJ5IiwiViIsImYiLCJwcm90b3R5cGUiLCJuZXh0IiwibWV0YWRhdGFSZWdpc3RyeSIsIm1ldGFkYXRhIiwiT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSIsIk9yZGluYXJ5SGFzT3duTWV0YWRhdGEiLCJPcmRpbmFyeUdldE93bk1ldGFkYXRhIiwiT3JkaW5hcnlPd25NZXRhZGF0YUtleXMiLCJrIiwiZSIsImRlZmluZU1ldGFkYXRhIiwiaGFzT3duTWV0YWRhdGEiLCJnZXRPd25NZXRhZGF0YSIsImdldE93bk1ldGFkYXRhS2V5cyIsImRlbGV0ZU1ldGFkYXRhIiwiTWFwSXRlcmF0b3IiLCJpbmRleCIsIk1hcCIsInNpemUiLCJnZXRWYWx1ZSIsIlNldCIsIldlYWtNYXAiLCJjcmVhdGUiLCJkYXRhIiwib2Zmc2V0IiwibCIsIm4iLCJwIiwicSIsInIiLCJ0IiwidSIsInYiLCJ3IiwieiIsIkEiLCJhIiwiQiIsIkMiLCJEIiwiRSIsImIiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsImQiLCJjIiwiaCIsImciLCJtIiwiTiIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiVyIsIlgiLCJyZWFjdE1vZHVsZSIsInJlcXVpcmUkJDAiLCJqc3hSdW50aW1lTW9kdWxlIiwiYmluZCIsImdldFByb3RvdHlwZU9mIiwiY2FjaGUiLCJ0eXBlIiwiaXNBcnJheSIsImlzQnVmZmVyIiwiaXNGdW5jdGlvbiIsImlzU3RyaW5nIiwiaXNOdW1iZXIiLCJpc09iamVjdCIsImlzUGxhaW5PYmplY3QiLCJ0cmltIiwibWVyZ2UiLCJpbmhlcml0cyIsImRlc2NyaXB0b3JzIiwiZmlsdGVyIiwicG9zaXRpb24iLCJtYXRjaGVzIiwiaGFzT3duUHJvcGVydHkiLCJyZWR1Y2VyIiwiZGVsaW1pdGVyIiwibm9vcCIsImxlbmd0aCIsInRva2VuIiwiY29uZmlnIiwidXRpbHMiLCJvcHRpb25zIiwiZW5jb2RlIiwibWF0Y2giLCJ0b1N0cmluZyIsIlVSTFNlYXJjaFBhcmFtcyIsIkZvcm1EYXRhIiwiQmxvYiIsInBsYXRmb3JtIiwiaXNGb3JtRGF0YSIsImlzRmlsZUxpc3QiLCJ0cmFuc2l0aW9uYWwiLCJsaW5lIiwiY2hhciIsInNlbGYiLCJmb3JtYXQiLCJ0cmFuc2Zvcm0iLCJ2YWxpZGF0ZVN0YXR1cyIsIm1pbiIsIm9yaWdpbiIsInNpZ25hbCIsImRvbmUiLCJyZXMiLCJhZGFwdGVycyIsInMiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdG9yIiwiaW5zdGFuY2UiLCJMaWZlY3ljbGUiLCJleHRlbmRTdGF0aWNzIiwiX19leHRlbmRzIiwiX192YWx1ZXMiLCJvIiwiX19yZWFkIiwiRGVsYXllZENvbnN0cnVjdG9yIiwiUmVnaXN0cnlCYXNlIiwiUmVnaXN0cnkiLCJSZXNvbHV0aW9uQ29udGV4dCIsIlByZVJlc29sdXRpb25JbnRlcmNlcHRvcnMiLCJQb3N0UmVzb2x1dGlvbkludGVyY2VwdG9ycyIsIkludGVyY2VwdG9ycyIsIkludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lciIsImZyb20iLCJfYSIsImdsb2JhbENvbnRhaW5lciIsIl9fZGVjb3JhdGVDbGFzcyIsInNjaGVkdWxlck1vZHVsZSIsInJlcXVpcmUkJDEiLCJhZSIsImJlIiwiY2UiLCJkZSIsImVlIiwiZmUiLCJnZSIsImhlIiwiaWUiLCJqZSIsImtlIiwibGUiLCJtZSIsIm5lIiwib2UiLCJwZSIsInFlIiwicmUiLCJzZSIsInRlIiwidWUiLCJ2ZSIsIndlIiwieGUiLCJ5ZSIsInplIiwiQWUiLCJCZSIsIkNlIiwiRGUiLCJFZSIsIkZlIiwiR2UiLCJIZSIsIkllIiwiSmUiLCJLZSIsIkxlIiwiTWUiLCJOZSIsIk9lIiwiUGUiLCJRZSIsIlJlIiwiU2UiLCJUZSIsIlVlIiwiVmUiLCJXZSIsIlhlIiwiWmUiLCIkZSIsIlkiLCJaIiwiT2siLCJyZWFjdERvbU1vZHVsZSIsIl9fYXNzaWduIiwiUmVhY3QiLCJfZSIsImhpZGUiLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlQ2FsbGJhY2siLCJhcmdzIiwidXNlTWVtbyIsInNob3ciLCJ1c2VSZWR1Y2VyIiwicHJvcFR5cGVzTW9kdWxlIiwiX3R5cGVvZiIsInRvUHJpbWl0aXZlIiwidG9Qcm9wZXJ0eUtleSIsIl9kZWZpbmVQcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwiYXJyYXlMaWtlVG9BcnJheSIsImFycmF5V2l0aEhvbGVzIiwiaXRlcmFibGVUb0FycmF5TGltaXQiLCJ1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIm5vbkl0ZXJhYmxlUmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwib2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsIl9leGNsdWRlZCIsIl9yZWYiLCJ1c2VTdGF0ZSIsIm9uQ2hhbmdlIiwidmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwiX2V4dGVuZHMiLCJzZXRQcm90b3R5cGVPZiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJhc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiYXJyYXlXaXRob3V0SG9sZXMiLCJpdGVyYWJsZVRvQXJyYXkiLCJub25JdGVyYWJsZVNwcmVhZCIsImlzRGV2ZWxvcG1lbnQiLCJTdHlsZVNoZWV0IiwiTVMiLCJNT1oiLCJXRUJLSVQiLCJDT01NRU5UIiwiUlVMRVNFVCIsIkRFQ0xBUkFUSU9OIiwiSU1QT1JUIiwiS0VZRlJBTUVTIiwiTEFZRVIiLCJhYnMiLCJhc3NpZ24iLCJoYXNoIiwiY2hhcmF0IiwicGF0dGVybiIsInJlcGxhY2UiLCJpbmRleG9mIiwic3Vic3RyIiwic3RybGVuIiwic2l6ZW9mIiwiYXBwZW5kIiwiY29tYmluZSIsImNvbHVtbiIsImNoYXJhY3RlciIsImNoYXJhY3RlcnMiLCJub2RlIiwiY29weSIsInByZXYiLCJwZWVrIiwiY2FyZXQiLCJzbGljZSIsImFsbG9jIiwiZGVhbGxvYyIsImRlbGltaXQiLCJ3aGl0ZXNwYWNlIiwiZXNjYXBpbmciLCJjb3VudCIsImNvbW1lbnRlciIsImlkZW50aWZpZXIiLCJjb21waWxlIiwicGFyc2UiLCJydWxlcyIsImNvbW1lbnQiLCJkZWNsYXJhdGlvbiIsInJ1bGVzZXQiLCJqIiwic2VyaWFsaXplIiwic3RyaW5naWZ5IiwibWlkZGxld2FyZSIsInJ1bGVzaGVldCIsIndlYWtNZW1vaXplIiwiaWRlbnRpZmllcldpdGhQb2ludFRyYWNraW5nIiwidG9SdWxlcyIsImdldFJ1bGVzIiwiY29tcGF0IiwicmVtb3ZlTGFiZWwiLCJwcmVmaXgiLCJwcmVmaXhlciIsImNyZWF0ZUNhY2hlIiwic3R5bGlzIiwicmVhY3RJc19wcm9kdWN0aW9uX21pbiIsInJlYWN0SXNNb2R1bGUiLCJyZWFjdElzIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJpc0Jyb3dzZXIiLCJjbGFzc05hbWVzIiwicmVnaXN0ZXJTdHlsZXMiLCJpbnNlcnRTdHlsZXMiLCJ1bml0bGVzc0tleXMiLCJpc0N1c3RvbVByb3BlcnR5IiwiaXNQcm9jZXNzYWJsZVZhbHVlIiwicHJvY2Vzc1N0eWxlVmFsdWUiLCJ1bml0bGVzcyIsImtleWZyYW1lcyIsImhhc2hTdHJpbmciLCJzeW5jRmFsbGJhY2siLCJ1c2VJbnNlcnRpb25FZmZlY3QiLCJSZWFjdC51c2VMYXlvdXRFZmZlY3QiLCJSZWFjdC5jcmVhdGVDb250ZXh0Iiwid2l0aEVtb3Rpb25DYWNoZSIsImZvcndhcmRSZWYiLCJyZWYiLCJ1c2VUaGVtZSIsIlJlYWN0LnVzZUNvbnRleHQiLCJnZXRUaGVtZSIsInRoZW1lIiwiVGhlbWVQcm92aWRlciIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiLCJSZWFjdC5mb3J3YXJkUmVmIiwiY3JlYXRlRW1vdGlvblByb3BzIiwiSW5zZXJ0aW9uIiwiUmVhY3QuRnJhZ21lbnQiLCJqc3giLCJFbW90aW9uIiwiUmVhY3QudXNlUmVmIiwiY2xhc3NuYW1lcyIsImNzcyIsImN4IiwiY29tcHV0ZVBvc2l0aW9uIiwiZGV0ZWN0T3ZlcmZsb3ciLCJhcnJvdyIsIm1heCIsImF1dG9QbGFjZW1lbnQiLCJhbGlnbm1lbnQiLCJmbGlwIiwicGxhY2VtZW50cyIsInNpZGVzIiwic2lkZSIsInBsYWNlbWVudCIsIm92ZXJmbG93IiwiaW5saW5lIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Iiwid2lkdGgiLCJoZWlnaHQiLCJzaGlmdCIsImxpbWl0U2hpZnQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0Q3NzRGltZW5zaW9ucyIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsIiQiLCJub09mZnNldHMiLCJnZXRWaXN1YWxPZmZzZXRzIiwic2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJnZXRIVE1MT2Zmc2V0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJnZXRDbGllbnRSZWN0cyIsImdldERvY3VtZW50UmVjdCIsImdldFZpZXdwb3J0UmVjdCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiZ2V0Q2xpcHBpbmdSZWN0IiwiZ2V0RGltZW5zaW9ucyIsImdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50IiwiaXNTdGF0aWNQb3NpdGlvbmVkIiwiZ2V0VHJ1ZU9mZnNldFBhcmVudCIsInBvbHlmaWxsIiwiZ2V0T2Zmc2V0UGFyZW50IiwiZ2V0RWxlbWVudFJlY3RzIiwiaXNSVEwiLCJvYnNlcnZlTW92ZSIsInRpbWVvdXRJZCIsImF1dG9VcGRhdGUiLCJvZmZzZXQkMSIsImF1dG9QbGFjZW1lbnQkMSIsInNoaWZ0JDEiLCJmbGlwJDEiLCJhcnJvdyQxIiwiY29tcHV0ZVBvc2l0aW9uJDEiLCJ1c2VMYXlvdXRFZmZlY3QiLCJjbGVhblZhbHVlIiwiY2xlYW5Db21tb25Qcm9wcyIsImdldFN0eWxlUHJvcHMiLCJyZW1vdmVQcm9wcyIsInByb3BlcnRpZXMiLCJfcmVmMiIsImNvbnRyb2xIZWlnaHQiLCJjb2VyY2VQbGFjZW1lbnQiLCJtZW51Q1NTIiwiX29iamVjdFNwcmVhZDIiLCJib3JkZXJSYWRpdXMiLCJzcGFjaW5nIiwiY29sb3JzIiwiTWVudVBsYWNlciIsInVzZVJlZiIsIk1lbnUiLCJtZW51TGlzdENTUyIsImJhc2VVbml0IiwiTWVudUxpc3QiLCJub3RpY2VDU1MiLCJOb09wdGlvbnNNZXNzYWdlIiwiTG9hZGluZ01lc3NhZ2UiLCJtZW51UG9ydGFsQ1NTIiwiTWVudVBvcnRhbCIsImNyZWF0ZVBvcnRhbCIsImNvbnRhaW5lckNTUyIsImlzRGlzYWJsZWQiLCJTZWxlY3RDb250YWluZXIiLCJ2YWx1ZUNvbnRhaW5lckNTUyIsIlZhbHVlQ29udGFpbmVyIiwiaW5kaWNhdG9yc0NvbnRhaW5lckNTUyIsIkluZGljYXRvcnNDb250YWluZXIiLCJTdmciLCJDcm9zc0ljb24iLCJEb3duQ2hldnJvbiIsImJhc2VDU1MiLCJEcm9wZG93bkluZGljYXRvciIsIkNsZWFySW5kaWNhdG9yIiwiaW5kaWNhdG9yU2VwYXJhdG9yQ1NTIiwiSW5kaWNhdG9yU2VwYXJhdG9yIiwibG9hZGluZ0luZGljYXRvckNTUyIsIkxvYWRpbmdEb3QiLCJjc3MkMiIsIkxvYWRpbmdJbmRpY2F0b3IiLCJDb250cm9sIiwiX2V4Y2x1ZGVkJDEiLCJncm91cENTUyIsIkdyb3VwIiwiZ3JvdXBIZWFkaW5nQ1NTIiwiR3JvdXBIZWFkaW5nIiwiaW5wdXRDU1MiLCJpbnB1dFN0eWxlIiwiaXNIaWRkZW4iLCJJbnB1dCIsIm11bHRpVmFsdWVDU1MiLCJtdWx0aVZhbHVlTGFiZWxDU1MiLCJtdWx0aVZhbHVlUmVtb3ZlQ1NTIiwiTXVsdGlWYWx1ZUdlbmVyaWMiLCJNdWx0aVZhbHVlIiwiY29tcG9uZW50cyIsIkxhYmVsIiwib3B0aW9uQ1NTIiwiT3B0aW9uIiwicGxhY2Vob2xkZXJDU1MiLCJQbGFjZWhvbGRlciIsIlNpbmdsZVZhbHVlIiwiZGVmYXVsdENvbXBvbmVudHMiLCJpc0VxdWFsIiwiQTExeVRleHQiLCJpc0FwcGxlRGV2aWNlIiwiZ2V0QXJyYXlJbmRleCIsIkxpdmVSZWdpb24iLCJnZXRPcHRpb25MYWJlbCIsImlzT3B0aW9uRGlzYWJsZWQiLCJzY3JlZW5SZWFkZXJTdGF0dXMiLCJhc09wdGlvbiIsIkZyYWdtZW50Iiwic3RyaXBEaWFjcml0aWNzIiwidHJpbVN0cmluZyIsImRlZmF1bHRTdHJpbmdpZnkiLCJjcmVhdGVGaWx0ZXIiLCJjYW5jZWxTY3JvbGwiLCJibHVyU2VsZWN0SW5wdXQiLCJ0YXJnZXRSZWYiLCJSZXF1aXJlZElucHV0Iiwib25Gb2N1cyIsImlzTWFjIiwiZm9ybWF0R3JvdXBMYWJlbCIsImdldE9wdGlvblZhbHVlIiwiY2F0ZWdvcml6ZWRPcHRpb24iLCJvcHRpb25JZCIsImdldEZvY3VzZWRPcHRpb25JZCIsInNob3VsZEhpZGVTZWxlY3RlZE9wdGlvbnMiLCJTZWxlY3QiLCJjdXN0b20iLCJpc0NsZWFyYWJsZSIsInJlcXVpcmVkIiwiTXVsdGlWYWx1ZUNvbnRhaW5lciIsIk11bHRpVmFsdWVMYWJlbCIsIk11bHRpVmFsdWVSZW1vdmUiLCJsb2FkaW5nTWVzc2FnZSIsIm5vT3B0aW9uc01lc3NhZ2UiLCJyZW5kZXIiLCJDb21wb25lbnQiLCJ1c2VMYXRlc3QiLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IiwiY29tcG9zZVJlZnNfMSIsImNvbXBvc2VSZWZzIiwic2xlZXAiLCJ1c2VTdGF0ZTIiLCJ1c2VDYWxsYmFjazIiLCJNZW51TGlzdDIiLCJ1c2VSZWYyIiwidXNlQ2FsbGJhY2szIiwidXNlRWZmZWN0MiIsInVzZU1lbW8yIiwiZGVmYXVsdENvbXBvbmVudHMyIiwianN4MiIsInV1aWR2NCIsIl9fc3ByZWFkQXJyYXkiLCJTdWJzY3JpcHRpb24iLCJTdWJzY3JpYmVyIiwiQ29uc3VtZXJPYnNlcnZlciIsIlNhZmVTdWJzY3JpYmVyIiwiT2JzZXJ2YWJsZSIsIm9ic2VydmFibGUiLCJTeW1ib2xfb2JzZXJ2YWJsZSIsIk9wZXJhdG9yU3Vic2NyaWJlciIsImVyciIsIlN1YmplY3QiLCJBbm9ueW1vdXNTdWJqZWN0IiwiQmVoYXZpb3JTdWJqZWN0IiwiQWN0aW9uIiwic2NoZWR1bGVyIiwiQXN5bmNBY3Rpb24iLCJTY2hlZHVsZXIiLCJBc3luY1NjaGVkdWxlciIsImF0dHIiLCJ0aXRsZSIsImNsYXNzR3JvdXAiLCJjbG9uZURlZXAiLCJjcmVhdGVDb250ZXh0IiwianN4cyIsIkNoaWxkcmVuIiwiY2xvbmVFbGVtZW50IiwiQmFzZUNvbXBvbmVudCIsImNyZWF0ZUVsZW1lbnQiLCJpc1ZhbGlkRWxlbWVudCIsIkJ1dHRvbiIsIml0ZW1zIiwiQnV0dG9uQ29tcG9uZW50IiwiYnV0dG9uVGhlbWUiLCJkZWJvdW5jZSIsImRlYm91bmNlTW9kdWxlIiwiX19kZWZQcm9wIiwiX19kZWZOb3JtYWxQcm9wIiwiX19wdWJsaWNGaWVsZCIsIlB1cmVDb21wb25lbnQiLCJhY3RpdmVFbGVtZW50IiwiY29udGFpbnMiLCJpc0luZXJ0IiwiaXNDb250ZW50RWRpdGFibGUiLCJnZXRDYW5kaWRhdGVzIiwiZ2V0Q2FuZGlkYXRlc0l0ZXJhdGl2ZWx5IiwiaGFzVGFiSW5kZXgiLCJnZXRUYWJJbmRleCIsImdldFNvcnRPcmRlclRhYkluZGV4Iiwic29ydE9yZGVyZWRUYWJiYWJsZXMiLCJpc0lucHV0IiwiaXNIaWRkZW5JbnB1dCIsImlzRGV0YWlsc1dpdGhTdW1tYXJ5IiwiZ2V0Q2hlY2tlZFJhZGlvIiwiaXNUYWJiYWJsZVJhZGlvIiwicXVlcnlSYWRpb3MiLCJpc1JhZGlvIiwiaXNOb25UYWJiYWJsZVJhZGlvIiwiaXNOb2RlQXR0YWNoZWQiLCJpc1plcm9BcmVhIiwiaXNEaXNhYmxlZEZyb21GaWVsZHNldCIsImlzTm9kZU1hdGNoaW5nU2VsZWN0b3JGb2N1c2FibGUiLCJpc05vZGVNYXRjaGluZ1NlbGVjdG9yVGFiYmFibGUiLCJpc1ZhbGlkU2hhZG93Um9vdFRhYmJhYmxlIiwic29ydEJ5T3JkZXIiLCJ0YWJiYWJsZSIsImlzVGFiYmFibGUiLCJ1c2VMYXRlc3RSZWYiLCJ1c2VGbG9hdGluZyIsIlJlYWN0LnVzZVN0YXRlIiwiUmVhY3QudXNlQ2FsbGJhY2siLCJSZWFjdERPTS5mbHVzaFN5bmMiLCJSZWFjdC51c2VNZW1vIiwiYXJyb3ckMiIsInJlZ2lzdGVyIiwidW5yZWdpc3RlciIsIm1hcCIsImluZGV4JDEiLCJSZWFjdC51c2VFZmZlY3QiLCJvbk9wZW5DaGFuZ2UiLCJvcGVuIiwiRm9jdXNHdWFyZCIsIlJlYWN0RE9NLmNyZWF0ZVBvcnRhbCIsIlZpc3VhbGx5SGlkZGVuRGlzbWlzcyIsImRvbVJlZmVyZW5jZSIsIkZsb2F0aW5nT3ZlcmxheSIsImlzSU9TIiwibGlzdFJlZiIsImluZGV4UmVmIiwiaXRlbSIsInByb3BzIiwiaXNJbnNpZGUiLCJfcmVmMyIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VJZCIsInNyYyIsIkxpc3RJdGVtIiwiQmFzZUJ1dHRvbiIsIlN5bWJvbCIsInJlcXVpcmUkJDIiLCJyZXF1aXJlJCQzIiwicmVxdWlyZSQkNCIsInJlcXVpcmUkJDUiLCJvdGhWYWx1ZSIsIlVpbnQ4QXJyYXkiLCJCdWZmZXIiLCJpc0xlbmd0aCIsImlzVHlwZWRBcnJheSIsIlByb21pc2UiLCJyZXF1aXJlJCQ2IiwicmVxdWlyZSQkNyIsImlzRXF1YWxXaXRoIiwibWVtb2l6ZSIsImpzb25wb2ludGVyIiwicmVxdWlyZSQkOCIsInJlcXVpcmUkJDkiLCJyZXF1aXJlJCQxMCIsInJlcXVpcmUkJDExIiwicmVxdWlyZSQkMTIiLCJyZXF1aXJlJCQxMyIsInJlcXVpcmUkJDE0IiwicmVxdWlyZSQkMTUiLCJyZXF1aXJlJCQxNiIsInJlcXVpcmUkJDE3IiwicmVxdWlyZSQkMTgiLCJyZXF1aXJlJCQxOSIsInJlcXVpcmUkJDIwIiwicmVxdWlyZSQkMjEiLCJrZXkiLCJpZGVudGl0eSIsIm9taXQiLCJoYXMiLCJjb2xsZWN0aW9uIiwicmVkdWNlIiwidGltZXMiLCJnZXQiLCJvYmplY3QiLCJmbGF0dGVuRGVlcCIsInVuaXEiLCJkZWZhdWx0cyIsImlzQm9vbGVhbiIsImNvbXBhcmUiLCJsaWIiLCJpc0ludGVnZXIiLCJmb3JFYWNoIiwibWVyZ2VTY2hlbWFzIiwiYWxsIiwidW5pcXVlSXRlbXMiLCJhbGxPZiIsInNjaGVtYXMiLCJjb21tb24iLCJtZXJnZWQiLCJrZXlzIiwibWVyZ2VyIiwidW5pb24iLCJhY2MiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsIm9uZU9mIiwiYW55T2YiLCJkZXBlbmRlbmNpZXMiLCJhbHRTY2hlbWFzIiwiQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmciLCJpc0VtcHR5IiwiJGlkIiwiaXNOaWwiLCJzZXRXaXRoIiwidGVtcGxhdGVzIiwiX2pzeCIsInRvUGF0aCIsIlRyYW5zbGF0YWJsZVN0cmluZyIsInRoaXMiLCJleHBvcnRzIiwidG9BcnJheSIsIkhFWERJRyQkIiwiUENUX0VOQ09ERUQkIiwiVU5SRVNFUlZFRCQkIiwic2xpY2VkVG9BcnJheSIsInRvQ29uc3VtYWJsZUFycmF5IiwiZmxvb3IiLCJ1Y3MyZW5jb2RlIiwiYmFzaWNUb0RpZ2l0IiwiZGlnaXRUb0Jhc2ljIiwiYWRhcHQiLCJkZWNvZGUiLCJ0b1VuaWNvZGUiLCJ0b0FTQ0lJIiwiYzIiLCJkZWNvZGVVbnJlc2VydmVkIiwiZmllbGRzIiwiYmFzZSIsInVjczJsZW5ndGgiLCJqb2luUGF0aHMiLCJ1dGlsIiwianNvblNjaGVtYVRyYXZlcnNlTW9kdWxlIiwicmVzb2x2ZVNjaGVtYSIsIml0IiwiJHNjaGVtYSIsIiRydWxlc0dyb3VwIiwiJHJ1bGUiLCJ2YWxpZGF0ZSIsIl9yb290IiwibG9jYWxSZWZzIiwiYmFzZUlkIiwicmVmVmFsIiwic2NoZW1hIiwia2V5d29yZCIsImNhY2hlTW9kdWxlIiwiQ2FjaGUiLCJVUkwiLCIkc2NoIiwicmVxdWlyZSQkMjIiLCJyZXF1aXJlJCQyMyIsImRhdGFUeXBlIiwiZGVmaW5pdGlvbiIsIkFqdiIsImFqdiIsImtleWVkRm9ybURhdGEiLCJmb3JtRGF0YSIsIndpZGdldHMiLCJTY2hlbWFGaWVsZCIsInJldHJpZXZlZE9wdGlvbnMiLCJzY2hlbWFVdGlscyIsIl9qc3hzIiwiU3RyaW5nRmllbGQiLCJlLmNyZWF0ZUVsZW1lbnQiLCJlLmNsb25lRWxlbWVudCIsInVuc2V0IiwiZGVzY3JpcHRpb24iLCJuYW1lIiwiRmllbGRUZW1wbGF0ZSIsIkZpZWxkSGVscFRlbXBsYXRlIiwiRmllbGRFcnJvclRlbXBsYXRlIiwiaWQiLCJfRnJhZ21lbnQiLCJfc2NoZW1hIiwiTXVsdGlTY2hlbWFGaWVsZCIsIkNvcHlCdXR0b24iLCJNb3ZlRG93bkJ1dHRvbiIsIk1vdmVVcEJ1dHRvbiIsIlJlbW92ZUJ1dHRvbiIsIkFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlIiwiQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZSIsIkFycmF5RmllbGRUaXRsZVRlbXBsYXRlIiwiQWRkQnV0dG9uIiwiUkVRVUlSRURfRklFTERfU1lNQk9MIiwiV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlIiwiQnV0dG9uVGVtcGxhdGVzIiwicmFuZ2UiLCJTZWxlY3RXaWRnZXQiLCJzdGF0ZSIsIkFsdERhdGVXaWRnZXQiLCJCYXNlSW5wdXRUZW1wbGF0ZSIsImRpc2FibGVkIiwiY3JlYXRlUmVmIiwiU3VibWl0QnV0dG9uIiwiRm9ybSIsImNvbnRhY3QiLCJQcm9wVHlwZXMuaW5zdGFuY2VPZiIsIlByb3BUeXBlcy5mdW5jIiwiZC5SVUxFU0VUIiwiZC5wcmVmaXhlciIsImQuc3RyaW5naWZ5IiwiZC5jb21waWxlIiwiZC5zZXJpYWxpemUiLCJkLm1pZGRsZXdhcmUiLCJkLnJ1bGVzaGVldCIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9hcnJheUxpa2VUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIl9zbGljZWRUb0FycmF5IiwidXNlU3RhdGVNYW5hZ2VyIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2RlZmluZVByb3BlcnRpZXMiLCJfY3JlYXRlQ2xhc3MiLCJfc2V0UHJvdG90eXBlT2YiLCJfaW5oZXJpdHMiLCJfZ2V0UHJvdG90eXBlT2YiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfY3JlYXRlU3VwZXIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCIsInJlYWN0IiwicmVhY3REb20iLCJfZXhjbHVkZWQkNCIsImFwcGx5UHJlZml4VG9OYW1lIiwiaXNEb2N1bWVudEVsZW1lbnQiLCJub3JtYWxpemVkSGVpZ2h0IiwiZ2V0U2Nyb2xsVG9wIiwic2Nyb2xsVG8iLCJnZXRTY3JvbGxQYXJlbnQiLCJlYXNlT3V0Q3ViaWMiLCJhbmltYXRlZFNjcm9sbFRvIiwic2Nyb2xsSW50b1ZpZXciLCJnZXRCb3VuZGluZ0NsaWVudE9iaiIsImlzVG91Y2hDYXBhYmxlIiwiaXNNb2JpbGVEZXZpY2UiLCJwYXNzaXZlT3B0aW9uQWNjZXNzZWQiLCJzdXBwb3J0c1Bhc3NpdmVFdmVudHMiLCJub3ROdWxsaXNoIiwidmFsdWVUZXJuYXJ5Iiwic2luZ2xlVmFsdWVBc1ZhbHVlIiwibXVsdGlWYWx1ZUFzVmFsdWUiLCJfZXhjbHVkZWQkMyIsIl9leGNsdWRlZDIkMSIsImdldE1lbnVQbGFjZW1lbnQiLCJhbGlnblRvQ29udHJvbCIsIlBvcnRhbFBsYWNlbWVudENvbnRleHQiLCJNZW51JDEiLCJub09wdGlvbnNNZXNzYWdlQ1NTIiwibG9hZGluZ01lc3NhZ2VDU1MiLCJfdGVtcGxhdGVPYmplY3QiLCJfZXhjbHVkZWQkMiIsIl9leGNsdWRlZDIiLCJkcm9wZG93bkluZGljYXRvckNTUyIsImNsZWFySW5kaWNhdG9yQ1NTIiwibG9hZGluZ0RvdEFuaW1hdGlvbnMiLCJjc3MkMSIsIkNvbnRyb2wkMSIsIkdyb3VwJDEiLCJjb250YWluZXJTdHlsZSIsInNwYWNpbmdTdHlsZSIsIklucHV0JDEiLCJNdWx0aVZhbHVlJDEiLCJPcHRpb24kMSIsIlBsYWNlaG9sZGVyJDEiLCJTaW5nbGVWYWx1ZSQxIiwibWVtb2l6ZU9uZSIsIkExMXlUZXh0JDEiLCJkZWZhdWx0QXJpYUxpdmVNZXNzYWdlcyIsImd1aWRhbmNlIiwib25GaWx0ZXIiLCJMaXZlUmVnaW9uJDEiLCJkaWFjcml0aWNzIiwiYW55RGlhY3JpdGljIiwiZGlhY3JpdGljVG9CYXNlIiwibWVtb2l6ZWRTdHJpcERpYWNyaXRpY3NGb3JJbnB1dCIsIkR1bW15SW5wdXQiLCJ1c2VTY3JvbGxDYXB0dXJlIiwiU1RZTEVfS0VZUyIsIkxPQ0tfU1RZTEVTIiwicHJldmVudFRvdWNoTW92ZSIsImFsbG93VG91Y2hNb3ZlIiwicHJldmVudEluZXJ0aWFTY3JvbGwiLCJpc1RvdWNoRGV2aWNlIiwiY2FuVXNlRE9NIiwiYWN0aXZlU2Nyb2xsTG9ja3MiLCJsaXN0ZW5lck9wdGlvbnMiLCJ1c2VTY3JvbGxMb2NrIiwiX3JlZjIkMSIsIlNjcm9sbE1hbmFnZXIiLCJSZXF1aXJlZElucHV0JDEiLCJ0ZXN0UGxhdGZvcm0iLCJpc0lQaG9uZSIsImlzSVBhZCIsImdldE9wdGlvbkxhYmVsJDEiLCJnZXRPcHRpb25WYWx1ZSQxIiwiZGVmYXVsdFN0eWxlcyIsIm1lbnVHdXR0ZXIiLCJkZWZhdWx0VGhlbWUiLCJkZWZhdWx0UHJvcHMiLCJ0b0NhdGVnb3JpemVkT3B0aW9uIiwiX2lzT3B0aW9uRGlzYWJsZWQiLCJfaXNPcHRpb25TZWxlY3RlZCIsImJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zIiwiaXNGb2N1c2FibGUiLCJidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zIiwiYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyIsImJ1aWxkRm9jdXNhYmxlT3B0aW9ucyIsIl9maWx0ZXJPcHRpb24iLCJnZXROZXh0Rm9jdXNlZFZhbHVlIiwiZ2V0TmV4dEZvY3VzZWRPcHRpb24iLCJpbnN0YW5jZUlkIiwiU3RhdGVNYW5hZ2VkU2VsZWN0IiwiU3RhdGVNYW5hZ2VkU2VsZWN0JDEiLCJyZWFjdFNlbGVjdF9janNNb2R1bGUiLCJzdHlsZWQiLCJjb250YWluZXIiLCJBZGRyZXNzTW9kYWwiLCJhZGRyZXNzIiwiUHJvcFR5cGVzLm51bWJlciIsIlByb3BUeXBlcy5zdHJpbmciLCJvcmRlciIsInJlYWN0U2VsZWN0QXN5bmNfY2pzTW9kdWxlIiwiQXN5bmNTZWxlY3QiLCJ1c2VEZWJvdW5jZSIsInVzZURlYm91bmNlZENhbGxiYWNrIiwiUHJvcFR5cGVzLmFycmF5IiwiaXNEYXRlIiwiUmVhY3QyLnVzZUNvbnRleHQiLCJSZWFjdDIudXNlTGF5b3V0RWZmZWN0IiwiUmVhY3QyLnVzZVJlZiIsIlJlYWN0Mi51c2VDYWxsYmFjayIsIlJlYWN0Mi5jcmVhdGVDb250ZXh0IiwiUmVhY3QyLnVzZU1lbW8iLCJSZWFjdDIuY3JlYXRlRWxlbWVudCIsIlJlYWN0Mi5GcmFnbWVudCIsIlJlYWN0Mi5Db21wb25lbnQiLCJtYXRjaGVzMiIsImdldENoaWxkcmVuIiwiUmVhY3QzLm1lbW8iLCJSZWFjdDMudXNlTWVtbyIsIlJlYWN0My5jcmVhdGVFbGVtZW50IiwiUmVhY3QzLkNoaWxkcmVuIiwiUmVhY3QzLmlzVmFsaWRFbGVtZW50IiwiUmVhY3QzLkZyYWdtZW50IiwiUmVhY3Q5LnVzZUNvbnRleHQiLCJSZWFjdDkuY3JlYXRlQ29udGV4dCIsIlJlYWN0OS51c2VTdGF0ZSIsIlJlYWN0OS51c2VSZWYiLCJSZWFjdDkudXNlRWZmZWN0IiwiUmVhY3Q5LnVzZU1lbW8iLCJSZWFjdDkuY3JlYXRlRWxlbWVudCIsIm0yIiwiUmVhY3Q5LkZyYWdtZW50IiwiUmVhY3QxMC51c2VSZWYiLCJSZWFjdDEwLnVzZVN0YXRlIiwiUmVhY3QxMC51c2VDYWxsYmFjayIsIlJlYWN0MTAuc3RhcnRUcmFuc2l0aW9uIiwiUmVhY3QxMC51c2VMYXlvdXRFZmZlY3QiLCJSZWFjdDEwLmNyZWF0ZUVsZW1lbnQiLCJSZWFjdDEwLmZvcndhcmRSZWYiLCJSZWFjdDEwLnVzZUNvbnRleHQiLCJSZWFjdDEwLkZyYWdtZW50IiwiUm91dGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsTUFBSUE7QUFDSixHQUFDLFNBQVVBLFVBQVM7QUFHaEIsS0FBQyxTQUFVLFNBQVM7QUFDaEIsVUFBSSxPQUFPLE9BQU8sZUFBZSxXQUFXLGFBQ3hDLE9BQU9DLG1CQUFXLFdBQVdBLGlCQUN6QixPQUFPLFNBQVMsV0FBVyxPQUN2QixPQUFPLFNBQVMsV0FBVyxPQUN2QixlQUFnQjtBQUNoQyxVQUFJLFdBQVcsYUFBYUQsUUFBTztBQUNuQyxVQUFJLE9BQU8sS0FBSyxZQUFZLGFBQWE7QUFDckMsbUJBQVcsYUFBYSxLQUFLLFNBQVMsUUFBUTtBQUFBLE1BQzFEO0FBQ1EsY0FBUSxVQUFVLElBQUk7QUFDdEIsVUFBSSxPQUFPLEtBQUssWUFBWSxhQUFhO0FBQ3JDLGFBQUssVUFBVUE7QUFBQSxNQUMzQjtBQUNRLGVBQVMsYUFBYSxRQUFRLFVBQVU7QUFDcEMsZUFBTyxTQUFVLEtBQUssT0FBTztBQUN6QixpQkFBTyxlQUFlLFFBQVEsS0FBSyxFQUFFLGNBQWMsTUFBTSxVQUFVLE1BQU0sTUFBWSxDQUFFO0FBQ3ZGLGNBQUk7QUFDQSxxQkFBUyxLQUFLLEtBQUs7QUFBQSxRQUMxQjtBQUFBLE1BQ2I7QUFDUSxlQUFTLGVBQWU7QUFDcEIsWUFBSTtBQUNBLGlCQUFPLFNBQVMsY0FBYyxFQUFHO0FBQUEsUUFDakQsU0FDbUJFLElBQUc7QUFBQSxRQUFBO0FBQUEsTUFDdEI7QUFDUSxlQUFTLG1CQUFtQjtBQUN4QixZQUFJO0FBQ0Esa0JBQVEsUUFBUSxNQUFNLGlDQUFpQztBQUFBLFFBQ3ZFLFNBQ21CQSxJQUFHO0FBQUEsUUFBQTtBQUFBLE1BQ3RCO0FBQ1EsZUFBUyxpQkFBaUI7QUFDdEIsZUFBTyxhQUFjLEtBQUksaUJBQWtCO0FBQUEsTUFDdkQ7QUFBQSxJQUNBLEdBQU8sU0FBVSxVQUFVLE1BQU07QUFDekIsVUFBSUMsVUFBUyxPQUFPLFVBQVU7QUFFOUIsVUFBSSxpQkFBaUIsT0FBTyxXQUFXO0FBQ3ZDLFVBQUksb0JBQW9CLGtCQUFrQixPQUFPLE9BQU8sZ0JBQWdCLGNBQWMsT0FBTyxjQUFjO0FBQzNHLFVBQUksaUJBQWlCLGtCQUFrQixPQUFPLE9BQU8sYUFBYSxjQUFjLE9BQU8sV0FBVztBQUNsRyxVQUFJLGlCQUFpQixPQUFPLE9BQU8sV0FBVztBQUM5QyxVQUFJLGdCQUFnQixFQUFFLFdBQVcsQ0FBRSxFQUFBLGFBQWM7QUFDakQsVUFBSSxZQUFZLENBQUMsa0JBQWtCLENBQUM7QUFDcEMsVUFBSSxVQUFVO0FBQUE7QUFBQSxRQUVWLFFBQVEsaUJBQ0YsV0FBWTtBQUFFLGlCQUFPLGVBQWUsdUJBQU8sT0FBTyxJQUFJLENBQUM7QUFBQSxRQUFFLElBQ3pELGdCQUNJLFdBQVk7QUFBRSxpQkFBTyxlQUFlLEVBQUUsV0FBVyxLQUFNLENBQUE7QUFBQSxRQUFFLElBQ3pELFdBQVk7QUFBRSxpQkFBTyxlQUFlLENBQUUsQ0FBQTtBQUFBLFFBQUk7QUFBQSxRQUNwRCxLQUFLLFlBQ0MsU0FBVSxLQUFLLEtBQUs7QUFBRSxpQkFBT0EsUUFBTyxLQUFLLEtBQUssR0FBRztBQUFBLFFBQUUsSUFDbkQsU0FBVSxLQUFLLEtBQUs7QUFBRSxpQkFBTyxPQUFPO0FBQUEsUUFBTTtBQUFBLFFBQ2hELEtBQUssWUFDQyxTQUFVLEtBQUssS0FBSztBQUFFLGlCQUFPQSxRQUFPLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLElBQUk7QUFBQSxRQUFVLElBQzFFLFNBQVUsS0FBSyxLQUFLO0FBQUUsaUJBQU8sSUFBSSxHQUFHO0FBQUEsUUFBSTtBQUFBLE1BQ2pEO0FBRUQsVUFBSSxvQkFBb0IsT0FBTyxlQUFlLFFBQVE7QUFDdEQsVUFBSUMsUUFBTyxPQUFPLFFBQVEsY0FBYyxPQUFPLElBQUksVUFBVSxZQUFZLGFBQWEsTUFBTSxrQkFBbUI7QUFDL0csVUFBSUMsUUFBTyxPQUFPLFFBQVEsY0FBYyxPQUFPLElBQUksVUFBVSxZQUFZLGFBQWEsTUFBTSxrQkFBbUI7QUFDL0csVUFBSUMsWUFBVyxPQUFPLFlBQVksYUFBYSxVQUFVLHNCQUF1QjtBQUNoRixVQUFJLGlCQUFpQixpQkFBaUIsT0FBTyxJQUFJLDRCQUE0QixJQUFJO0FBQ2pGLFVBQUksbUJBQW1CLDRCQUE2QjtBQUNwRCxVQUFJLG1CQUFtQix1QkFBdUIsZ0JBQWdCO0FBd0M5RCxlQUFTLFNBQVMsWUFBWSxRQUFRLGFBQWEsWUFBWTtBQUMzRCxZQUFJLENBQUMsWUFBWSxXQUFXLEdBQUc7QUFDM0IsY0FBSSxDQUFDLFFBQVEsVUFBVTtBQUNuQixrQkFBTSxJQUFJLFVBQVc7QUFDekIsY0FBSSxDQUFDLFNBQVMsTUFBTTtBQUNoQixrQkFBTSxJQUFJLFVBQVc7QUFDekIsY0FBSSxDQUFDLFNBQVMsVUFBVSxLQUFLLENBQUMsWUFBWSxVQUFVLEtBQUssQ0FBQyxPQUFPLFVBQVU7QUFDdkUsa0JBQU0sSUFBSSxVQUFXO0FBQ3pCLGNBQUksT0FBTyxVQUFVO0FBQ2pCLHlCQUFhO0FBQ2pCLHdCQUFjLGNBQWMsV0FBVztBQUN2QyxpQkFBTyxpQkFBaUIsWUFBWSxRQUFRLGFBQWEsVUFBVTtBQUFBLFFBQ25GLE9BQ2lCO0FBQ0QsY0FBSSxDQUFDLFFBQVEsVUFBVTtBQUNuQixrQkFBTSxJQUFJLFVBQVc7QUFDekIsY0FBSSxDQUFDLGNBQWMsTUFBTTtBQUNyQixrQkFBTSxJQUFJLFVBQVc7QUFDekIsaUJBQU8sb0JBQW9CLFlBQVksTUFBTTtBQUFBLFFBQzdEO0FBQUEsTUFDQTtBQUNRLGVBQVMsWUFBWSxRQUFRO0FBMkM3QixlQUFTLFNBQVMsYUFBYSxlQUFlO0FBQzFDLGlCQUFTLFVBQVUsUUFBUSxhQUFhO0FBQ3BDLGNBQUksQ0FBQyxTQUFTLE1BQU07QUFDaEIsa0JBQU0sSUFBSSxVQUFXO0FBQ3pCLGNBQUksQ0FBQyxZQUFZLFdBQVcsS0FBSyxDQUFDLGNBQWMsV0FBVztBQUN2RCxrQkFBTSxJQUFJLFVBQVc7QUFDekIsb0NBQTBCLGFBQWEsZUFBZSxRQUFRLFdBQVc7QUFBQSxRQUN6RjtBQUNZLGVBQU87QUFBQSxNQUNuQjtBQUNRLGVBQVMsWUFBWSxRQUFRO0FBd0M3QixlQUFTLGVBQWUsYUFBYSxlQUFlLFFBQVEsYUFBYTtBQUNyRSxZQUFJLENBQUMsU0FBUyxNQUFNO0FBQ2hCLGdCQUFNLElBQUksVUFBVztBQUN6QixZQUFJLENBQUMsWUFBWSxXQUFXO0FBQ3hCLHdCQUFjLGNBQWMsV0FBVztBQUMzQyxlQUFPLDBCQUEwQixhQUFhLGVBQWUsUUFBUSxXQUFXO0FBQUEsTUFDNUY7QUFDUSxlQUFTLGtCQUFrQixjQUFjO0FBbUN6QyxlQUFTLFlBQVksYUFBYSxRQUFRLGFBQWE7QUFDbkQsWUFBSSxDQUFDLFNBQVMsTUFBTTtBQUNoQixnQkFBTSxJQUFJLFVBQVc7QUFDekIsWUFBSSxDQUFDLFlBQVksV0FBVztBQUN4Qix3QkFBYyxjQUFjLFdBQVc7QUFDM0MsZUFBTyxvQkFBb0IsYUFBYSxRQUFRLFdBQVc7QUFBQSxNQUN2RTtBQUNRLGVBQVMsZUFBZSxXQUFXO0FBbUNuQyxlQUFTLGVBQWUsYUFBYSxRQUFRLGFBQWE7QUFDdEQsWUFBSSxDQUFDLFNBQVMsTUFBTTtBQUNoQixnQkFBTSxJQUFJLFVBQVc7QUFDekIsWUFBSSxDQUFDLFlBQVksV0FBVztBQUN4Qix3QkFBYyxjQUFjLFdBQVc7QUFDM0MsZUFBTyx1QkFBdUIsYUFBYSxRQUFRLFdBQVc7QUFBQSxNQUMxRTtBQUNRLGVBQVMsa0JBQWtCLGNBQWM7QUFtQ3pDLGVBQVMsWUFBWSxhQUFhLFFBQVEsYUFBYTtBQUNuRCxZQUFJLENBQUMsU0FBUyxNQUFNO0FBQ2hCLGdCQUFNLElBQUksVUFBVztBQUN6QixZQUFJLENBQUMsWUFBWSxXQUFXO0FBQ3hCLHdCQUFjLGNBQWMsV0FBVztBQUMzQyxlQUFPLG9CQUFvQixhQUFhLFFBQVEsV0FBVztBQUFBLE1BQ3ZFO0FBQ1EsZUFBUyxlQUFlLFdBQVc7QUFtQ25DLGVBQVMsZUFBZSxhQUFhLFFBQVEsYUFBYTtBQUN0RCxZQUFJLENBQUMsU0FBUyxNQUFNO0FBQ2hCLGdCQUFNLElBQUksVUFBVztBQUN6QixZQUFJLENBQUMsWUFBWSxXQUFXO0FBQ3hCLHdCQUFjLGNBQWMsV0FBVztBQUMzQyxlQUFPLHVCQUF1QixhQUFhLFFBQVEsV0FBVztBQUFBLE1BQzFFO0FBQ1EsZUFBUyxrQkFBa0IsY0FBYztBQWtDekMsZUFBUyxnQkFBZ0IsUUFBUSxhQUFhO0FBQzFDLFlBQUksQ0FBQyxTQUFTLE1BQU07QUFDaEIsZ0JBQU0sSUFBSSxVQUFXO0FBQ3pCLFlBQUksQ0FBQyxZQUFZLFdBQVc7QUFDeEIsd0JBQWMsY0FBYyxXQUFXO0FBQzNDLGVBQU8scUJBQXFCLFFBQVEsV0FBVztBQUFBLE1BQzNEO0FBQ1EsZUFBUyxtQkFBbUIsZUFBZTtBQWtDM0MsZUFBUyxtQkFBbUIsUUFBUSxhQUFhO0FBQzdDLFlBQUksQ0FBQyxTQUFTLE1BQU07QUFDaEIsZ0JBQU0sSUFBSSxVQUFXO0FBQ3pCLFlBQUksQ0FBQyxZQUFZLFdBQVc7QUFDeEIsd0JBQWMsY0FBYyxXQUFXO0FBQzNDLGVBQU8sd0JBQXdCLFFBQVEsV0FBVztBQUFBLE1BQzlEO0FBQ1EsZUFBUyxzQkFBc0Isa0JBQWtCO0FBbUNqRCxlQUFTLGVBQWUsYUFBYSxRQUFRLGFBQWE7QUFDdEQsWUFBSSxDQUFDLFNBQVMsTUFBTTtBQUNoQixnQkFBTSxJQUFJLFVBQVc7QUFDekIsWUFBSSxDQUFDLFlBQVksV0FBVztBQUN4Qix3QkFBYyxjQUFjLFdBQVc7QUFDM0MsWUFBSSxDQUFDLFNBQVMsTUFBTTtBQUNoQixnQkFBTSxJQUFJLFVBQVc7QUFDekIsWUFBSSxDQUFDLFlBQVksV0FBVztBQUN4Qix3QkFBYyxjQUFjLFdBQVc7QUFDM0MsWUFBSSxXQUFXO0FBQUEsVUFBb0I7QUFBQSxVQUFRO0FBQUE7QUFBQSxVQUF3QjtBQUFBLFFBQUs7QUFDeEUsWUFBSSxZQUFZLFFBQVE7QUFDcEIsaUJBQU87QUFDWCxlQUFPLFNBQVMsdUJBQXVCLGFBQWEsUUFBUSxXQUFXO0FBQUEsTUFDbkY7QUFDUSxlQUFTLGtCQUFrQixjQUFjO0FBQ3pDLGVBQVMsb0JBQW9CLFlBQVksUUFBUTtBQUM3QyxpQkFBU0MsS0FBSSxXQUFXLFNBQVMsR0FBR0EsTUFBSyxHQUFHLEVBQUVBLElBQUc7QUFDN0MsY0FBSSxZQUFZLFdBQVdBLEVBQUM7QUFDNUIsY0FBSSxZQUFZLFVBQVUsTUFBTTtBQUNoQyxjQUFJLENBQUMsWUFBWSxTQUFTLEtBQUssQ0FBQyxPQUFPLFNBQVMsR0FBRztBQUMvQyxnQkFBSSxDQUFDLGNBQWMsU0FBUztBQUN4QixvQkFBTSxJQUFJLFVBQVc7QUFDekIscUJBQVM7QUFBQSxVQUM3QjtBQUFBLFFBQ0E7QUFDWSxlQUFPO0FBQUEsTUFDbkI7QUFDUSxlQUFTLGlCQUFpQixZQUFZLFFBQVEsYUFBYSxZQUFZO0FBQ25FLGlCQUFTQSxLQUFJLFdBQVcsU0FBUyxHQUFHQSxNQUFLLEdBQUcsRUFBRUEsSUFBRztBQUM3QyxjQUFJLFlBQVksV0FBV0EsRUFBQztBQUM1QixjQUFJLFlBQVksVUFBVSxRQUFRLGFBQWEsVUFBVTtBQUN6RCxjQUFJLENBQUMsWUFBWSxTQUFTLEtBQUssQ0FBQyxPQUFPLFNBQVMsR0FBRztBQUMvQyxnQkFBSSxDQUFDLFNBQVMsU0FBUztBQUNuQixvQkFBTSxJQUFJLFVBQVc7QUFDekIseUJBQWE7QUFBQSxVQUNqQztBQUFBLFFBQ0E7QUFDWSxlQUFPO0FBQUEsTUFDbkI7QUFHUSxlQUFTLG9CQUFvQixhQUFhQyxJQUFHQyxJQUFHO0FBQzVDLFlBQUlOLFVBQVMsdUJBQXVCLGFBQWFLLElBQUdDLEVBQUM7QUFDckQsWUFBSU47QUFDQSxpQkFBTztBQUNYLFlBQUksU0FBUyx1QkFBdUJLLEVBQUM7QUFDckMsWUFBSSxDQUFDLE9BQU8sTUFBTTtBQUNkLGlCQUFPLG9CQUFvQixhQUFhLFFBQVFDLEVBQUM7QUFDckQsZUFBTztBQUFBLE1BQ25CO0FBR1EsZUFBUyx1QkFBdUIsYUFBYUQsSUFBR0MsSUFBRztBQUMvQyxZQUFJLFdBQVc7QUFBQSxVQUFvQkQ7QUFBQSxVQUFHQztBQUFBO0FBQUEsVUFBYztBQUFBLFFBQUs7QUFDekQsWUFBSSxZQUFZLFFBQVE7QUFDcEIsaUJBQU87QUFDWCxlQUFPLFVBQVUsU0FBUyx1QkFBdUIsYUFBYUQsSUFBR0MsRUFBQyxDQUFDO0FBQUEsTUFDL0U7QUFHUSxlQUFTLG9CQUFvQixhQUFhRCxJQUFHQyxJQUFHO0FBQzVDLFlBQUlOLFVBQVMsdUJBQXVCLGFBQWFLLElBQUdDLEVBQUM7QUFDckQsWUFBSU47QUFDQSxpQkFBTyx1QkFBdUIsYUFBYUssSUFBR0MsRUFBQztBQUNuRCxZQUFJLFNBQVMsdUJBQXVCRCxFQUFDO0FBQ3JDLFlBQUksQ0FBQyxPQUFPLE1BQU07QUFDZCxpQkFBTyxvQkFBb0IsYUFBYSxRQUFRQyxFQUFDO0FBQ3JELGVBQU87QUFBQSxNQUNuQjtBQUdRLGVBQVMsdUJBQXVCLGFBQWFELElBQUdDLElBQUc7QUFDL0MsWUFBSSxXQUFXO0FBQUEsVUFBb0JEO0FBQUEsVUFBR0M7QUFBQTtBQUFBLFVBQWM7QUFBQSxRQUFLO0FBQ3pELFlBQUksWUFBWSxRQUFRO0FBQ3BCO0FBQ0osZUFBTyxTQUFTLHVCQUF1QixhQUFhRCxJQUFHQyxFQUFDO0FBQUEsTUFDcEU7QUFHUSxlQUFTLDBCQUEwQixhQUFhLGVBQWVELElBQUdDLElBQUc7QUFDakUsWUFBSSxXQUFXO0FBQUEsVUFBb0JEO0FBQUEsVUFBR0M7QUFBQTtBQUFBLFVBQWM7QUFBQSxRQUFJO0FBQ3hELGlCQUFTLDBCQUEwQixhQUFhLGVBQWVELElBQUdDLEVBQUM7QUFBQSxNQUMvRTtBQUdRLGVBQVMscUJBQXFCRCxJQUFHQyxJQUFHO0FBQ2hDLFlBQUlDLFdBQVUsd0JBQXdCRixJQUFHQyxFQUFDO0FBQzFDLFlBQUksU0FBUyx1QkFBdUJELEVBQUM7QUFDckMsWUFBSSxXQUFXO0FBQ1gsaUJBQU9FO0FBQ1gsWUFBSSxhQUFhLHFCQUFxQixRQUFRRCxFQUFDO0FBQy9DLFlBQUksV0FBVyxVQUFVO0FBQ3JCLGlCQUFPQztBQUNYLFlBQUlBLFNBQVEsVUFBVTtBQUNsQixpQkFBTztBQUNYLFlBQUlDLE9BQU0sSUFBSU4sTUFBTTtBQUNwQixZQUFJLE9BQU8sQ0FBRTtBQUNiLGlCQUFTLEtBQUssR0FBRyxZQUFZSyxVQUFTLEtBQUssVUFBVSxRQUFRLE1BQU07QUFDL0QsY0FBSSxNQUFNLFVBQVUsRUFBRTtBQUN0QixjQUFJLFNBQVNDLEtBQUksSUFBSSxHQUFHO0FBQ3hCLGNBQUksQ0FBQyxRQUFRO0FBQ1QsWUFBQUEsS0FBSSxJQUFJLEdBQUc7QUFDWCxpQkFBSyxLQUFLLEdBQUc7QUFBQSxVQUNqQztBQUFBLFFBQ0E7QUFDWSxpQkFBUyxLQUFLLEdBQUcsZUFBZSxZQUFZLEtBQUssYUFBYSxRQUFRLE1BQU07QUFDeEUsY0FBSSxNQUFNLGFBQWEsRUFBRTtBQUN6QixjQUFJLFNBQVNBLEtBQUksSUFBSSxHQUFHO0FBQ3hCLGNBQUksQ0FBQyxRQUFRO0FBQ1QsWUFBQUEsS0FBSSxJQUFJLEdBQUc7QUFDWCxpQkFBSyxLQUFLLEdBQUc7QUFBQSxVQUNqQztBQUFBLFFBQ0E7QUFDWSxlQUFPO0FBQUEsTUFDbkI7QUFHUSxlQUFTLHdCQUF3QkgsSUFBR0MsSUFBRztBQUNuQyxZQUFJLFdBQVc7QUFBQSxVQUFvQkQ7QUFBQSxVQUFHQztBQUFBO0FBQUEsVUFBYztBQUFBLFFBQUs7QUFDekQsWUFBSSxDQUFDLFVBQVU7QUFDWCxpQkFBTyxDQUFFO0FBQUEsUUFDekI7QUFDWSxlQUFPLFNBQVMsd0JBQXdCRCxJQUFHQyxFQUFDO0FBQUEsTUFDeEQ7QUFHUSxlQUFTLEtBQUtHLElBQUc7QUFDYixZQUFJQSxPQUFNO0FBQ04saUJBQU87QUFDWCxnQkFBUSxPQUFPQSxJQUFDO0FBQUEsVUFDWixLQUFLO0FBQWEsbUJBQU87QUFBQSxVQUN6QixLQUFLO0FBQVcsbUJBQU87QUFBQSxVQUN2QixLQUFLO0FBQVUsbUJBQU87QUFBQSxVQUN0QixLQUFLO0FBQVUsbUJBQU87QUFBQSxVQUN0QixLQUFLO0FBQVUsbUJBQU87QUFBQSxVQUN0QixLQUFLO0FBQVUsbUJBQU9BLE9BQU0sT0FBTyxJQUFlO0FBQUEsVUFDbEQ7QUFBUyxtQkFBTztBQUFBLFFBQ2hDO0FBQUEsTUFDQTtBQUdRLGVBQVMsWUFBWUEsSUFBRztBQUNwQixlQUFPQSxPQUFNO0FBQUEsTUFDekI7QUFHUSxlQUFTLE9BQU9BLElBQUc7QUFDZixlQUFPQSxPQUFNO0FBQUEsTUFDekI7QUFHUSxlQUFTLFNBQVNBLElBQUc7QUFDakIsZUFBTyxPQUFPQSxPQUFNO0FBQUEsTUFDaEM7QUFHUSxlQUFTLFNBQVNBLElBQUc7QUFDakIsZUFBTyxPQUFPQSxPQUFNLFdBQVdBLE9BQU0sT0FBTyxPQUFPQSxPQUFNO0FBQUEsTUFDckU7QUFLUSxlQUFTLFlBQVksT0FBTyxlQUFlO0FBQ3ZDLGdCQUFRLEtBQUssS0FBSyxHQUFDO0FBQUEsVUFDZixLQUFLO0FBQW1CLG1CQUFPO0FBQUEsVUFDL0IsS0FBSztBQUFjLG1CQUFPO0FBQUEsVUFDMUIsS0FBSztBQUFpQixtQkFBTztBQUFBLFVBQzdCLEtBQUs7QUFBZ0IsbUJBQU87QUFBQSxVQUM1QixLQUFLO0FBQWdCLG1CQUFPO0FBQUEsVUFDNUIsS0FBSztBQUFnQixtQkFBTztBQUFBLFFBQzVDO0FBQ1ksWUFBSSxPQUEwQztBQUM5QyxZQUFJLGVBQWUsVUFBVSxPQUFPLGlCQUFpQjtBQUNyRCxZQUFJLGlCQUFpQixRQUFXO0FBQzVCLGNBQUksU0FBUyxhQUFhLEtBQUssT0FBTyxJQUFJO0FBQzFDLGNBQUksU0FBUyxNQUFNO0FBQ2Ysa0JBQU0sSUFBSSxVQUFXO0FBQ3pCLGlCQUFPO0FBQUEsUUFDdkI7QUFDWSxlQUFPLG9CQUFvQixLQUEyQztBQUFBLE1BQ2xGO0FBR1EsZUFBUyxvQkFBb0JKLElBQUcsTUFBTTtBQUNYLFlBQUEsU0FBQTtBQUFBO0FBQ25CLGNBQUlLLGNBQWFMLEdBQUU7QUFDbkIsY0FBSSxXQUFXSyxXQUFVLEdBQUc7QUFDeEIsZ0JBQUksU0FBU0EsWUFBVyxLQUFLTCxFQUFDO0FBQzlCLGdCQUFJLENBQUMsU0FBUyxNQUFNO0FBQ2hCLHFCQUFPO0FBQUEsVUFDL0I7QUFDZ0IsY0FBSSxVQUFVQSxHQUFFO0FBQ2hCLGNBQUksV0FBVyxPQUFPLEdBQUc7QUFDckIsZ0JBQUksU0FBUyxRQUFRLEtBQUtBLEVBQUM7QUFDM0IsZ0JBQUksQ0FBQyxTQUFTLE1BQU07QUFDaEIscUJBQU87QUFBQSxVQUMvQjtBQUFBLFFBQ0E7QUFlWSxjQUFNLElBQUksVUFBVztBQUFBLE1BQ2pDO0FBR1EsZUFBUyxVQUFVLFVBQVU7QUFDekIsZUFBTyxDQUFDLENBQUM7QUFBQSxNQUNyQjtBQUdRLGVBQVMsU0FBUyxVQUFVO0FBQ3hCLGVBQU8sS0FBSztBQUFBLE1BQ3hCO0FBR1EsZUFBUyxjQUFjLFVBQVU7QUFDN0IsWUFBSSxNQUFNLFlBQVksUUFBeUI7QUFDL0MsWUFBSSxTQUFTLEdBQUc7QUFDWixpQkFBTztBQUNYLGVBQU8sU0FBUyxHQUFHO0FBQUEsTUFDL0I7QUFLUSxlQUFTLFFBQVEsVUFBVTtBQUN2QixlQUFPLE1BQU0sVUFDUCxNQUFNLFFBQVEsUUFBUSxJQUN0QixvQkFBb0IsU0FDaEIsb0JBQW9CLFFBQ3BCLE9BQU8sVUFBVSxTQUFTLEtBQUssUUFBUSxNQUFNO0FBQUEsTUFDbkU7QUFHUSxlQUFTLFdBQVcsVUFBVTtBQUUxQixlQUFPLE9BQU8sYUFBYTtBQUFBLE1BQ3ZDO0FBR1EsZUFBUyxjQUFjLFVBQVU7QUFFN0IsZUFBTyxPQUFPLGFBQWE7QUFBQSxNQUN2QztBQUdRLGVBQVMsY0FBYyxVQUFVO0FBQzdCLGdCQUFRLEtBQUssUUFBUSxHQUFDO0FBQUEsVUFDbEIsS0FBSztBQUFnQixtQkFBTztBQUFBLFVBQzVCLEtBQUs7QUFBZ0IsbUJBQU87QUFBQSxVQUM1QjtBQUFTLG1CQUFPO0FBQUEsUUFDaEM7QUFBQSxNQUNBO0FBQ1EsZUFBUyxjQUFjSSxJQUFHRSxJQUFHO0FBQ3pCLGVBQU9GLE9BQU1FLE1BQUtGLE9BQU1BLE1BQUtFLE9BQU1BO0FBQUEsTUFDL0M7QUFLUSxlQUFTLFVBQVVDLElBQUdOLElBQUc7QUFDckIsWUFBSSxPQUFPTSxHQUFFTixFQUFDO0FBQ2QsWUFBSSxTQUFTLFVBQWEsU0FBUztBQUMvQixpQkFBTztBQUNYLFlBQUksQ0FBQyxXQUFXLElBQUk7QUFDaEIsZ0JBQU0sSUFBSSxVQUFXO0FBQ3pCLGVBQU87QUFBQSxNQUNuQjtBQUdRLGVBQVMsWUFBWSxLQUFLO0FBQ3RCLFlBQUksU0FBUyxVQUFVLEtBQUssY0FBYztBQUMxQyxZQUFJLENBQUMsV0FBVyxNQUFNO0FBQ2xCLGdCQUFNLElBQUksVUFBUztBQUN2QixZQUFJLFdBQVcsT0FBTyxLQUFLLEdBQUc7QUFDOUIsWUFBSSxDQUFDLFNBQVMsUUFBUTtBQUNsQixnQkFBTSxJQUFJLFVBQVc7QUFDekIsZUFBTztBQUFBLE1BQ25CO0FBR1EsZUFBUyxjQUFjLFlBQVk7QUFDL0IsZUFBTyxXQUFXO0FBQUEsTUFDOUI7QUFHUSxlQUFTLGFBQWEsVUFBVTtBQUM1QixZQUFJLFNBQVMsU0FBUyxLQUFNO0FBQzVCLGVBQU8sT0FBTyxPQUFPLFFBQVE7QUFBQSxNQUN6QztBQUdRLGVBQVMsY0FBYyxVQUFVO0FBQzdCLFlBQUlPLEtBQUksU0FBUyxRQUFRO0FBQ3pCLFlBQUlBO0FBQ0EsVUFBQUEsR0FBRSxLQUFLLFFBQVE7QUFBQSxNQUMvQjtBQUtRLGVBQVMsdUJBQXVCUixJQUFHO0FBQy9CLFlBQUksUUFBUSxPQUFPLGVBQWVBLEVBQUM7QUFDbkMsWUFBSSxPQUFPQSxPQUFNLGNBQWNBLE9BQU07QUFDakMsaUJBQU87QUFRWCxZQUFJLFVBQVU7QUFDVixpQkFBTztBQUVYLFlBQUlTLGFBQVlULEdBQUU7QUFDbEIsWUFBSSxpQkFBaUJTLGNBQWEsT0FBTyxlQUFlQSxVQUFTO0FBQ2pFLFlBQUksa0JBQWtCLFFBQVEsbUJBQW1CLE9BQU87QUFDcEQsaUJBQU87QUFFWCxZQUFJLGNBQWMsZUFBZTtBQUNqQyxZQUFJLE9BQU8sZ0JBQWdCO0FBQ3ZCLGlCQUFPO0FBRVgsWUFBSSxnQkFBZ0JUO0FBQ2hCLGlCQUFPO0FBRVgsZUFBTztBQUFBLE1BQ25CO0FBT1EsZUFBUyx5QkFBeUI7QUFDOUIsWUFBSTtBQUNKLFlBQUksQ0FBQyxZQUFZLGNBQWMsS0FDM0IsT0FBTyxLQUFLLFlBQVksZUFDeEIsRUFBRSxrQkFBa0IsS0FBSyxZQUN6QixPQUFPLEtBQUssUUFBUSxtQkFBbUIsWUFBWTtBQUVuRCxxQkFBVyx1QkFBdUIsS0FBSyxPQUFPO0FBQUEsUUFDOUQ7QUFDWSxZQUFJO0FBQ0osWUFBSTtBQUNKLFlBQUk7QUFDSixZQUFJLG9CQUFvQixJQUFJRixVQUFVO0FBQ3RDLFlBQUksV0FBVztBQUFBLFVBQ1g7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFFBQ0g7QUFDRCxlQUFPO0FBQ1AsaUJBQVMsaUJBQWlCLFVBQVU7QUFDaEMsY0FBSSxDQUFDLE9BQU8sYUFBYSxRQUFRLEdBQUc7QUFDaEMsa0JBQU0sSUFBSSxNQUFNLDJDQUEyQztBQUFBLFVBQy9FO0FBQ2dCLGtCQUFRLE1BQUk7QUFBQSxZQUNSLEtBQUssYUFBYTtBQUFVO0FBQUEsWUFDNUIsS0FBSyxZQUFZLEtBQUs7QUFDbEIsc0JBQVE7QUFDUjtBQUFBLFlBQ0osS0FBSyxVQUFVO0FBQVU7QUFBQSxZQUN6QixLQUFLLFlBQVksTUFBTTtBQUNuQix1QkFBUztBQUNUO0FBQUEsWUFDSixLQUFLLFdBQVc7QUFBVTtBQUFBLFlBQzFCO0FBQ0ksa0JBQUksU0FBUztBQUNULHVCQUFPLElBQUlELE1BQU07QUFDckIsbUJBQUssSUFBSSxRQUFRO0FBQ2pCO0FBQUEsVUFDeEI7QUFBQSxRQUNBO0FBQ1ksaUJBQVMsbUJBQW1CRyxJQUFHQyxJQUFHO0FBQzlCLGNBQUksQ0FBQyxZQUFZLEtBQUssR0FBRztBQUNyQixnQkFBSSxNQUFNLGNBQWNELElBQUdDLEVBQUM7QUFDeEIscUJBQU87QUFDWCxnQkFBSSxDQUFDLFlBQVksTUFBTSxHQUFHO0FBQ3RCLGtCQUFJLE9BQU8sY0FBY0QsSUFBR0MsRUFBQztBQUN6Qix1QkFBTztBQUNYLGtCQUFJLENBQUMsWUFBWSxJQUFJLEdBQUc7QUFDcEIsb0JBQUksV0FBVyxZQUFZLElBQUk7QUFDL0IsdUJBQU8sTUFBTTtBQUNULHNCQUFJUyxRQUFPLGFBQWEsUUFBUTtBQUNoQyxzQkFBSSxDQUFDQSxPQUFNO0FBQ1AsMkJBQU87QUFBQSxrQkFDM0M7QUFDZ0Msc0JBQUksV0FBVyxjQUFjQSxLQUFJO0FBQ2pDLHNCQUFJLFNBQVMsY0FBY1YsSUFBR0MsRUFBQyxHQUFHO0FBQzlCLGtDQUFjLFFBQVE7QUFDdEIsMkJBQU87QUFBQSxrQkFDM0M7QUFBQSxnQkFDQTtBQUFBLGNBQ0E7QUFBQSxZQUNBO0FBQUEsVUFDQTtBQUNnQixjQUFJLENBQUMsWUFBWSxRQUFRLEtBQUssU0FBUyxjQUFjRCxJQUFHQyxFQUFDLEdBQUc7QUFDeEQsbUJBQU87QUFBQSxVQUMzQjtBQUNnQixpQkFBTztBQUFBLFFBQ3ZCO0FBQ1ksaUJBQVMsWUFBWUQsSUFBR0MsSUFBRztBQUN2QixjQUFJLGNBQWMsa0JBQWtCLElBQUlELEVBQUM7QUFDekMsY0FBSTtBQUNKLGNBQUksQ0FBQyxZQUFZLFdBQVcsR0FBRztBQUMzQix1QkFBVyxZQUFZLElBQUlDLEVBQUM7QUFBQSxVQUNoRDtBQUNnQixjQUFJLENBQUMsWUFBWSxRQUFRLEdBQUc7QUFDeEIsbUJBQU87QUFBQSxVQUMzQjtBQUNnQixxQkFBVyxtQkFBbUJELElBQUdDLEVBQUM7QUFDbEMsY0FBSSxDQUFDLFlBQVksUUFBUSxHQUFHO0FBQ3hCLGdCQUFJLFlBQVksV0FBVyxHQUFHO0FBQzFCLDRCQUFjLElBQUlMLE1BQU07QUFDeEIsZ0NBQWtCLElBQUlJLElBQUcsV0FBVztBQUFBLFlBQzVEO0FBQ29CLHdCQUFZLElBQUlDLElBQUcsUUFBUTtBQUFBLFVBQy9DO0FBQ2dCLGlCQUFPO0FBQUEsUUFDdkI7QUFDWSxpQkFBUyxZQUFZLFVBQVU7QUFDM0IsY0FBSSxZQUFZLFFBQVE7QUFDcEIsa0JBQU0sSUFBSSxVQUFXO0FBQ3pCLGlCQUFPLFVBQVUsWUFBWSxXQUFXLFlBQVksQ0FBQyxZQUFZLElBQUksS0FBSyxLQUFLLElBQUksUUFBUTtBQUFBLFFBQzNHO0FBQ1ksaUJBQVMsWUFBWUQsSUFBR0MsSUFBRyxVQUFVO0FBQ2pDLGNBQUksQ0FBQyxZQUFZLFFBQVEsR0FBRztBQUN4QixrQkFBTSxJQUFJLE1BQU0sbUNBQW1DO0FBQUEsVUFDdkU7QUFDZ0IsY0FBSSxtQkFBbUIsWUFBWUQsSUFBR0MsRUFBQztBQUN2QyxjQUFJLHFCQUFxQixVQUFVO0FBQy9CLGdCQUFJLENBQUMsWUFBWSxnQkFBZ0IsR0FBRztBQUNoQyxxQkFBTztBQUFBLFlBQy9CO0FBQ29CLGdCQUFJLGNBQWMsa0JBQWtCLElBQUlELEVBQUM7QUFDekMsZ0JBQUksWUFBWSxXQUFXLEdBQUc7QUFDMUIsNEJBQWMsSUFBSUosTUFBTTtBQUN4QixnQ0FBa0IsSUFBSUksSUFBRyxXQUFXO0FBQUEsWUFDNUQ7QUFDb0Isd0JBQVksSUFBSUMsSUFBRyxRQUFRO0FBQUEsVUFDL0M7QUFDZ0IsaUJBQU87QUFBQSxRQUN2QjtBQUFBLE1BQ0E7QUFJUSxlQUFTLDhCQUE4QjtBQUNuQyxZQUFJVTtBQUNKLFlBQUksQ0FBQyxZQUFZLGNBQWMsS0FBSyxTQUFTLEtBQUssT0FBTyxLQUFLLE9BQU8sYUFBYSxLQUFLLE9BQU8sR0FBRztBQUM3RixVQUFBQSxvQkFBbUIsS0FBSyxRQUFRLGNBQWM7QUFBQSxRQUM5RDtBQUNZLFlBQUksWUFBWUEsaUJBQWdCLEdBQUc7QUFDL0IsVUFBQUEsb0JBQW1CLHVCQUF3QjtBQUFBLFFBQzNEO0FBQ1ksWUFBSSxDQUFDLFlBQVksY0FBYyxLQUFLLFNBQVMsS0FBSyxPQUFPLEtBQUssT0FBTyxhQUFhLEtBQUssT0FBTyxHQUFHO0FBQzdGLGlCQUFPLGVBQWUsS0FBSyxTQUFTLGdCQUFnQjtBQUFBLFlBQ2hELFlBQVk7QUFBQSxZQUNaLGNBQWM7QUFBQSxZQUNkLFVBQVU7QUFBQSxZQUNWLE9BQU9BO0FBQUEsVUFDM0IsQ0FBaUI7QUFBQSxRQUNqQjtBQUNZLGVBQU9BO0FBQUEsTUFDbkI7QUFDUSxlQUFTLHVCQUF1QixVQUFVO0FBR3RDLFlBQUlDLFlBQVcsSUFBSWQsVUFBVTtBQUM3QixZQUFJLFdBQVc7QUFBQSxVQUNYLGVBQWUsU0FBVUUsSUFBR0MsSUFBRztBQUMzQixnQkFBSSxpQkFBaUJXLFVBQVMsSUFBSVosRUFBQztBQUNuQyxnQkFBSSxZQUFZLGNBQWM7QUFDMUIscUJBQU87QUFDWCxtQkFBTyxlQUFlLElBQUlDLEVBQUM7QUFBQSxVQUM5QjtBQUFBLFVBQ0QsMkJBQTJCWTtBQUFBLFVBQzNCLHdCQUF3QkM7QUFBQSxVQUN4Qix3QkFBd0JDO0FBQUEsVUFDeEIseUJBQXlCQztBQUFBLFVBQ3pCO0FBQUEsUUFDSDtBQUNELHlCQUFpQixpQkFBaUIsUUFBUTtBQUMxQyxlQUFPO0FBQ1AsaUJBQVMsdUJBQXVCaEIsSUFBR0MsSUFBRyxRQUFRO0FBQzFDLGNBQUksaUJBQWlCVyxVQUFTLElBQUlaLEVBQUM7QUFDbkMsY0FBSSx3QkFBd0I7QUFDNUIsY0FBSSxZQUFZLGNBQWMsR0FBRztBQUM3QixnQkFBSSxDQUFDO0FBQ0QscUJBQU87QUFDWCw2QkFBaUIsSUFBSUosTUFBTTtBQUMzQixZQUFBZ0IsVUFBUyxJQUFJWixJQUFHLGNBQWM7QUFDOUIsb0NBQXdCO0FBQUEsVUFDNUM7QUFDZ0IsY0FBSSxjQUFjLGVBQWUsSUFBSUMsRUFBQztBQUN0QyxjQUFJLFlBQVksV0FBVyxHQUFHO0FBQzFCLGdCQUFJLENBQUM7QUFDRCxxQkFBTztBQUNYLDBCQUFjLElBQUlMLE1BQU07QUFDeEIsMkJBQWUsSUFBSUssSUFBRyxXQUFXO0FBQ2pDLGdCQUFJLENBQUMsU0FBUyxZQUFZRCxJQUFHQyxJQUFHLFFBQVEsR0FBRztBQUN2Qyw2QkFBZSxPQUFPQSxFQUFDO0FBQ3ZCLGtCQUFJLHVCQUF1QjtBQUN2QixnQkFBQVcsVUFBUyxPQUFPWixFQUFDO0FBQUEsY0FDN0M7QUFDd0Isb0JBQU0sSUFBSSxNQUFNLDRCQUE0QjtBQUFBLFlBQ3BFO0FBQUEsVUFDQTtBQUNnQixpQkFBTztBQUFBLFFBQ3ZCO0FBR1ksaUJBQVNjLHdCQUF1QixhQUFhZCxJQUFHQyxJQUFHO0FBQy9DLGNBQUksY0FBYztBQUFBLFlBQXVCRDtBQUFBLFlBQUdDO0FBQUE7QUFBQSxZQUFjO0FBQUEsVUFBSztBQUMvRCxjQUFJLFlBQVksV0FBVztBQUN2QixtQkFBTztBQUNYLGlCQUFPLFVBQVUsWUFBWSxJQUFJLFdBQVcsQ0FBQztBQUFBLFFBQzdEO0FBR1ksaUJBQVNjLHdCQUF1QixhQUFhZixJQUFHQyxJQUFHO0FBQy9DLGNBQUksY0FBYztBQUFBLFlBQXVCRDtBQUFBLFlBQUdDO0FBQUE7QUFBQSxZQUFjO0FBQUEsVUFBSztBQUMvRCxjQUFJLFlBQVksV0FBVztBQUN2QixtQkFBTztBQUNYLGlCQUFPLFlBQVksSUFBSSxXQUFXO0FBQUEsUUFDbEQ7QUFHWSxpQkFBU1ksMkJBQTBCLGFBQWEsZUFBZWIsSUFBR0MsSUFBRztBQUNqRSxjQUFJLGNBQWM7QUFBQSxZQUF1QkQ7QUFBQSxZQUFHQztBQUFBO0FBQUEsWUFBYztBQUFBLFVBQUk7QUFDOUQsc0JBQVksSUFBSSxhQUFhLGFBQWE7QUFBQSxRQUMxRDtBQUdZLGlCQUFTZSx5QkFBd0JoQixJQUFHQyxJQUFHO0FBQ25DLGNBQUksT0FBTyxDQUFFO0FBQ2IsY0FBSSxjQUFjO0FBQUEsWUFBdUJEO0FBQUEsWUFBR0M7QUFBQTtBQUFBLFlBQWM7QUFBQSxVQUFLO0FBQy9ELGNBQUksWUFBWSxXQUFXO0FBQ3ZCLG1CQUFPO0FBQ1gsY0FBSSxVQUFVLFlBQVksS0FBTTtBQUNoQyxjQUFJLFdBQVcsWUFBWSxPQUFPO0FBQ2xDLGNBQUlnQixLQUFJO0FBQ1IsaUJBQU8sTUFBTTtBQUNULGdCQUFJUCxRQUFPLGFBQWEsUUFBUTtBQUNoQyxnQkFBSSxDQUFDQSxPQUFNO0FBQ1AsbUJBQUssU0FBU087QUFDZCxxQkFBTztBQUFBLFlBQy9CO0FBQ29CLGdCQUFJLFlBQVksY0FBY1AsS0FBSTtBQUNsQyxnQkFBSTtBQUNBLG1CQUFLTyxFQUFDLElBQUk7QUFBQSxZQUNsQyxTQUMyQkMsSUFBRztBQUNOLGtCQUFJO0FBQ0EsOEJBQWMsUUFBUTtBQUFBLGNBQ2xELFVBQ2dDO0FBQ0osc0JBQU1BO0FBQUEsY0FDbEM7QUFBQSxZQUNBO0FBQ29CLFlBQUFEO0FBQUEsVUFDcEI7QUFBQSxRQUNBO0FBQ1ksaUJBQVMsdUJBQXVCLGFBQWFqQixJQUFHQyxJQUFHO0FBQy9DLGNBQUksY0FBYztBQUFBLFlBQXVCRDtBQUFBLFlBQUdDO0FBQUE7QUFBQSxZQUFjO0FBQUEsVUFBSztBQUMvRCxjQUFJLFlBQVksV0FBVztBQUN2QixtQkFBTztBQUNYLGNBQUksQ0FBQyxZQUFZLE9BQU8sV0FBVztBQUMvQixtQkFBTztBQUNYLGNBQUksWUFBWSxTQUFTLEdBQUc7QUFDeEIsZ0JBQUksaUJBQWlCVyxVQUFTLElBQUlaLEVBQUM7QUFDbkMsZ0JBQUksQ0FBQyxZQUFZLGNBQWMsR0FBRztBQUM5Qiw2QkFBZSxPQUFPQyxFQUFDO0FBQ3ZCLGtCQUFJLGVBQWUsU0FBUyxHQUFHO0FBQzNCLGdCQUFBVyxVQUFTLE9BQU8sY0FBYztBQUFBLGNBQzFEO0FBQUEsWUFDQTtBQUFBLFVBQ0E7QUFDZ0IsaUJBQU87QUFBQSxRQUN2QjtBQUFBLE1BQ0E7QUFDUSxlQUFTLHVCQUF1QixTQUFTO0FBQ3JDLFlBQUlPLGtCQUFpQixRQUFRLGdCQUFnQkMsa0JBQWlCLFFBQVEsZ0JBQWdCQyxrQkFBaUIsUUFBUSxnQkFBZ0JDLHNCQUFxQixRQUFRLG9CQUFvQkMsa0JBQWlCLFFBQVE7QUFDek0sWUFBSSxnQkFBZ0IsSUFBSXpCLFVBQVU7QUFDbEMsWUFBSSxXQUFXO0FBQUEsVUFDWCxlQUFlLFNBQVVFLElBQUdDLElBQUc7QUFDM0IsZ0JBQUksc0JBQXNCLGNBQWMsSUFBSUQsRUFBQztBQUM3QyxnQkFBSSxDQUFDLFlBQVksbUJBQW1CLEtBQUssb0JBQW9CLElBQUlDLEVBQUMsR0FBRztBQUNqRSxxQkFBTztBQUFBLFlBQy9CO0FBQ29CLGdCQUFJcUIsb0JBQW1CdEIsSUFBR0MsRUFBQyxFQUFFLFFBQVE7QUFDakMsa0JBQUksWUFBWSxtQkFBbUIsR0FBRztBQUNsQyxzQ0FBc0IsSUFBSUosTUFBTTtBQUNoQyw4QkFBYyxJQUFJRyxJQUFHLG1CQUFtQjtBQUFBLGNBQ3BFO0FBQ3dCLGtDQUFvQixJQUFJQyxFQUFDO0FBQ3pCLHFCQUFPO0FBQUEsWUFDL0I7QUFDb0IsbUJBQU87QUFBQSxVQUNWO0FBQUEsVUFDRCwyQkFBMkJrQjtBQUFBLFVBQzNCLHdCQUF3QkM7QUFBQSxVQUN4Qix3QkFBd0JDO0FBQUEsVUFDeEIseUJBQXlCQztBQUFBLFVBQ3pCLHdCQUF3QkM7QUFBQSxRQUMzQjtBQUNELGVBQU87QUFBQSxNQUNuQjtBQUtRLGVBQVMsb0JBQW9CdkIsSUFBR0MsSUFBRyxRQUFRO0FBQ3ZDLFlBQUkscUJBQXFCLGlCQUFpQixZQUFZRCxJQUFHQyxFQUFDO0FBQzFELFlBQUksQ0FBQyxZQUFZLGtCQUFrQixHQUFHO0FBQ2xDLGlCQUFPO0FBQUEsUUFDdkI7QUFDWSxZQUFJLFFBQVE7QUFDUixjQUFJLGlCQUFpQixZQUFZRCxJQUFHQyxJQUFHLGdCQUFnQixHQUFHO0FBQ3RELG1CQUFPO0FBQUEsVUFDM0I7QUFDZ0IsZ0JBQU0sSUFBSSxNQUFNLGdCQUFnQjtBQUFBLFFBQ2hEO0FBQ1ksZUFBTztBQUFBLE1BQ25CO0FBRVEsZUFBUyxvQkFBb0I7QUFDekIsWUFBSSxnQkFBZ0IsQ0FBRTtBQUN0QixZQUFJLGdCQUFnQixDQUFFO0FBQ3RCLFlBQUk7QUFBQTtBQUFBLFVBQTZCLFdBQVk7QUFDekMscUJBQVN1QixhQUFZLE1BQU0sUUFBUSxVQUFVO0FBQ3pDLG1CQUFLLFNBQVM7QUFDZCxtQkFBSyxRQUFRO0FBQ2IsbUJBQUssVUFBVTtBQUNmLG1CQUFLLFlBQVk7QUFBQSxZQUNyQztBQUNnQixZQUFBQSxhQUFZLFVBQVUsWUFBWSxJQUFJLFdBQVk7QUFBRSxxQkFBTztBQUFBLFlBQU87QUFDbEUsWUFBQUEsYUFBWSxVQUFVLGNBQWMsSUFBSSxXQUFZO0FBQUUscUJBQU87QUFBQSxZQUFPO0FBQ3BFLFlBQUFBLGFBQVksVUFBVSxPQUFPLFdBQVk7QUFDckMsa0JBQUlDLFNBQVEsS0FBSztBQUNqQixrQkFBSUEsVUFBUyxLQUFLQSxTQUFRLEtBQUssTUFBTSxRQUFRO0FBQ3pDLG9CQUFJLFNBQVMsS0FBSyxVQUFVLEtBQUssTUFBTUEsTUFBSyxHQUFHLEtBQUssUUFBUUEsTUFBSyxDQUFDO0FBQ2xFLG9CQUFJQSxTQUFRLEtBQUssS0FBSyxNQUFNLFFBQVE7QUFDaEMsdUJBQUssU0FBUztBQUNkLHVCQUFLLFFBQVE7QUFDYix1QkFBSyxVQUFVO0FBQUEsZ0JBQzNDLE9BQzZCO0FBQ0QsdUJBQUs7QUFBQSxnQkFDakM7QUFDd0IsdUJBQU8sRUFBRSxPQUFPLFFBQVEsTUFBTSxNQUFPO0FBQUEsY0FDN0Q7QUFDb0IscUJBQU8sRUFBRSxPQUFPLFFBQVcsTUFBTSxLQUFNO0FBQUEsWUFDMUM7QUFDRCxZQUFBRCxhQUFZLFVBQVUsUUFBUSxTQUFVLE9BQU87QUFDM0Msa0JBQUksS0FBSyxVQUFVLEdBQUc7QUFDbEIscUJBQUssU0FBUztBQUNkLHFCQUFLLFFBQVE7QUFDYixxQkFBSyxVQUFVO0FBQUEsY0FDdkM7QUFDb0Isb0JBQU07QUFBQSxZQUNUO0FBQ0QsWUFBQUEsYUFBWSxVQUFVLFNBQVMsU0FBVSxPQUFPO0FBQzVDLGtCQUFJLEtBQUssVUFBVSxHQUFHO0FBQ2xCLHFCQUFLLFNBQVM7QUFDZCxxQkFBSyxRQUFRO0FBQ2IscUJBQUssVUFBVTtBQUFBLGNBQ3ZDO0FBQ29CLHFCQUFPLEVBQUUsT0FBYyxNQUFNLEtBQU07QUFBQSxZQUN0QztBQUNELG1CQUFPQTtBQUFBLFVBQ3ZCOztBQUNZLFlBQUlFO0FBQUE7QUFBQSxVQUFxQixXQUFZO0FBQ2pDLHFCQUFTQSxPQUFNO0FBQ1gsbUJBQUssUUFBUSxDQUFFO0FBQ2YsbUJBQUssVUFBVSxDQUFFO0FBQ2pCLG1CQUFLLFlBQVk7QUFDakIsbUJBQUssY0FBYztBQUFBLFlBQ3ZDO0FBQ2dCLG1CQUFPLGVBQWVBLEtBQUksV0FBVyxRQUFRO0FBQUEsY0FDekMsS0FBSyxXQUFZO0FBQUUsdUJBQU8sS0FBSyxNQUFNO0FBQUEsY0FBUztBQUFBLGNBQzlDLFlBQVk7QUFBQSxjQUNaLGNBQWM7QUFBQSxZQUNsQyxDQUFpQjtBQUNELFlBQUFBLEtBQUksVUFBVSxNQUFNLFNBQVUsS0FBSztBQUFFLHFCQUFPLEtBQUs7QUFBQSxnQkFBTTtBQUFBO0FBQUEsZ0JBQWdCO0FBQUEsY0FBSyxLQUFLO0FBQUEsWUFBSTtBQUNyRixZQUFBQSxLQUFJLFVBQVUsTUFBTSxTQUFVLEtBQUs7QUFDL0Isa0JBQUlELFNBQVEsS0FBSztBQUFBLGdCQUFNO0FBQUE7QUFBQSxnQkFBZ0I7QUFBQSxjQUFLO0FBQzVDLHFCQUFPQSxVQUFTLElBQUksS0FBSyxRQUFRQSxNQUFLLElBQUk7QUFBQSxZQUM3QztBQUNELFlBQUFDLEtBQUksVUFBVSxNQUFNLFNBQVUsS0FBSyxPQUFPO0FBQ3RDLGtCQUFJRCxTQUFRLEtBQUs7QUFBQSxnQkFBTTtBQUFBO0FBQUEsZ0JBQWdCO0FBQUEsY0FBSTtBQUMzQyxtQkFBSyxRQUFRQSxNQUFLLElBQUk7QUFDdEIscUJBQU87QUFBQSxZQUNWO0FBQ0QsWUFBQUMsS0FBSSxVQUFVLFNBQVMsU0FBVSxLQUFLO0FBQ2xDLGtCQUFJRCxTQUFRLEtBQUs7QUFBQSxnQkFBTTtBQUFBO0FBQUEsZ0JBQWdCO0FBQUEsY0FBSztBQUM1QyxrQkFBSUEsVUFBUyxHQUFHO0FBQ1osb0JBQUlFLFFBQU8sS0FBSyxNQUFNO0FBQ3RCLHlCQUFTNUIsS0FBSTBCLFNBQVEsR0FBRzFCLEtBQUk0QixPQUFNNUIsTUFBSztBQUNuQyx1QkFBSyxNQUFNQSxLQUFJLENBQUMsSUFBSSxLQUFLLE1BQU1BLEVBQUM7QUFDaEMsdUJBQUssUUFBUUEsS0FBSSxDQUFDLElBQUksS0FBSyxRQUFRQSxFQUFDO0FBQUEsZ0JBQ2hFO0FBQ3dCLHFCQUFLLE1BQU07QUFDWCxxQkFBSyxRQUFRO0FBQ2Isb0JBQUksY0FBYyxLQUFLLEtBQUssU0FBUyxHQUFHO0FBQ3BDLHVCQUFLLFlBQVk7QUFDakIsdUJBQUssY0FBYztBQUFBLGdCQUMvQztBQUN3Qix1QkFBTztBQUFBLGNBQy9CO0FBQ29CLHFCQUFPO0FBQUEsWUFDVjtBQUNELFlBQUEyQixLQUFJLFVBQVUsUUFBUSxXQUFZO0FBQzlCLG1CQUFLLE1BQU0sU0FBUztBQUNwQixtQkFBSyxRQUFRLFNBQVM7QUFDdEIsbUJBQUssWUFBWTtBQUNqQixtQkFBSyxjQUFjO0FBQUEsWUFDdEI7QUFDRCxZQUFBQSxLQUFJLFVBQVUsT0FBTyxXQUFZO0FBQUUscUJBQU8sSUFBSSxZQUFZLEtBQUssT0FBTyxLQUFLLFNBQVMsTUFBTTtBQUFBLFlBQUk7QUFDOUYsWUFBQUEsS0FBSSxVQUFVLFNBQVMsV0FBWTtBQUFFLHFCQUFPLElBQUksWUFBWSxLQUFLLE9BQU8sS0FBSyxTQUFTRSxTQUFRO0FBQUEsWUFBSTtBQUNsRyxZQUFBRixLQUFJLFVBQVUsVUFBVSxXQUFZO0FBQUUscUJBQU8sSUFBSSxZQUFZLEtBQUssT0FBTyxLQUFLLFNBQVMsUUFBUTtBQUFBLFlBQUk7QUFDbkcsWUFBQUEsS0FBSSxVQUFVLFlBQVksSUFBSSxXQUFZO0FBQUUscUJBQU8sS0FBSyxRQUFPO0FBQUEsWUFBSztBQUNwRSxZQUFBQSxLQUFJLFVBQVUsY0FBYyxJQUFJLFdBQVk7QUFBRSxxQkFBTyxLQUFLLFFBQU87QUFBQSxZQUFLO0FBQ3RFLFlBQUFBLEtBQUksVUFBVSxRQUFRLFNBQVUsS0FBSyxRQUFRO0FBQ3pDLGtCQUFJLENBQUMsY0FBYyxLQUFLLFdBQVcsR0FBRyxHQUFHO0FBQ3JDLHFCQUFLLGNBQWM7QUFDbkIseUJBQVMzQixLQUFJLEdBQUdBLEtBQUksS0FBSyxNQUFNLFFBQVFBLE1BQUs7QUFDeEMsc0JBQUksY0FBYyxLQUFLLE1BQU1BLEVBQUMsR0FBRyxHQUFHLEdBQUc7QUFDbkMseUJBQUssY0FBY0E7QUFDbkI7QUFBQSxrQkFDaEM7QUFBQSxnQkFDQTtBQUFBLGNBQ0E7QUFDb0Isa0JBQUksS0FBSyxjQUFjLEtBQUssUUFBUTtBQUNoQyxxQkFBSyxjQUFjLEtBQUssTUFBTTtBQUM5QixxQkFBSyxNQUFNLEtBQUssR0FBRztBQUNuQixxQkFBSyxRQUFRLEtBQUssTUFBUztBQUFBLGNBQ25EO0FBQ29CLHFCQUFPLEtBQUs7QUFBQSxZQUNmO0FBQ0QsbUJBQU8yQjtBQUFBLFVBQ3ZCOztBQUNZLGVBQU9BO0FBQ1AsaUJBQVMsT0FBTyxLQUFLaEMsSUFBRztBQUNwQixpQkFBTztBQUFBLFFBQ3ZCO0FBQ1ksaUJBQVNrQyxVQUFTbEMsSUFBRyxPQUFPO0FBQ3hCLGlCQUFPO0FBQUEsUUFDdkI7QUFDWSxpQkFBUyxTQUFTLEtBQUssT0FBTztBQUMxQixpQkFBTyxDQUFDLEtBQUssS0FBSztBQUFBLFFBQ2xDO0FBQUEsTUFDQTtBQUVRLGVBQVMsb0JBQW9CO0FBQ3pCLFlBQUltQztBQUFBO0FBQUEsVUFBcUIsV0FBWTtBQUNqQyxxQkFBU0EsT0FBTTtBQUNYLG1CQUFLLE9BQU8sSUFBSWpDLE1BQU07QUFBQSxZQUMxQztBQUNnQixtQkFBTyxlQUFlaUMsS0FBSSxXQUFXLFFBQVE7QUFBQSxjQUN6QyxLQUFLLFdBQVk7QUFBRSx1QkFBTyxLQUFLLEtBQUs7QUFBQSxjQUFPO0FBQUEsY0FDM0MsWUFBWTtBQUFBLGNBQ1osY0FBYztBQUFBLFlBQ2xDLENBQWlCO0FBQ0QsWUFBQUEsS0FBSSxVQUFVLE1BQU0sU0FBVSxPQUFPO0FBQUUscUJBQU8sS0FBSyxLQUFLLElBQUksS0FBSztBQUFBLFlBQUk7QUFDckUsWUFBQUEsS0FBSSxVQUFVLE1BQU0sU0FBVSxPQUFPO0FBQUUscUJBQU8sS0FBSyxLQUFLLElBQUksT0FBTyxLQUFLLEdBQUc7QUFBQSxZQUFPO0FBQ2xGLFlBQUFBLEtBQUksVUFBVSxTQUFTLFNBQVUsT0FBTztBQUFFLHFCQUFPLEtBQUssS0FBSyxPQUFPLEtBQUs7QUFBQSxZQUFJO0FBQzNFLFlBQUFBLEtBQUksVUFBVSxRQUFRLFdBQVk7QUFBRSxtQkFBSyxLQUFLLE1BQUs7QUFBQSxZQUFLO0FBQ3hELFlBQUFBLEtBQUksVUFBVSxPQUFPLFdBQVk7QUFBRSxxQkFBTyxLQUFLLEtBQUssS0FBSTtBQUFBLFlBQUs7QUFDN0QsWUFBQUEsS0FBSSxVQUFVLFNBQVMsV0FBWTtBQUFFLHFCQUFPLEtBQUssS0FBSyxLQUFJO0FBQUEsWUFBSztBQUMvRCxZQUFBQSxLQUFJLFVBQVUsVUFBVSxXQUFZO0FBQUUscUJBQU8sS0FBSyxLQUFLLFFBQU87QUFBQSxZQUFLO0FBQ25FLFlBQUFBLEtBQUksVUFBVSxZQUFZLElBQUksV0FBWTtBQUFFLHFCQUFPLEtBQUssS0FBSTtBQUFBLFlBQUs7QUFDakUsWUFBQUEsS0FBSSxVQUFVLGNBQWMsSUFBSSxXQUFZO0FBQUUscUJBQU8sS0FBSyxLQUFJO0FBQUEsWUFBSztBQUNuRSxtQkFBT0E7QUFBQSxVQUN2Qjs7QUFDWSxlQUFPQTtBQUFBLE1BQ25CO0FBRVEsZUFBUyx3QkFBd0I7QUFDN0IsWUFBSSxZQUFZO0FBQ2hCLFlBQUksT0FBTyxRQUFRLE9BQVE7QUFDM0IsWUFBSSxVQUFVLGdCQUFpQjtBQUMvQjtBQUFBO0FBQUEsVUFBc0IsV0FBWTtBQUM5QixxQkFBU0MsV0FBVTtBQUNmLG1CQUFLLE9BQU8sZ0JBQWlCO0FBQUEsWUFDakQ7QUFDZ0IsWUFBQUEsU0FBUSxVQUFVLE1BQU0sU0FBVSxRQUFRO0FBQ3RDLGtCQUFJLFFBQVE7QUFBQSxnQkFBd0I7QUFBQTtBQUFBLGdCQUFtQjtBQUFBLGNBQUs7QUFDNUQscUJBQU8sVUFBVSxTQUFZLFFBQVEsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJO0FBQUEsWUFDaEU7QUFDRCxZQUFBQSxTQUFRLFVBQVUsTUFBTSxTQUFVLFFBQVE7QUFDdEMsa0JBQUksUUFBUTtBQUFBLGdCQUF3QjtBQUFBO0FBQUEsZ0JBQW1CO0FBQUEsY0FBSztBQUM1RCxxQkFBTyxVQUFVLFNBQVksUUFBUSxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUk7QUFBQSxZQUNoRTtBQUNELFlBQUFBLFNBQVEsVUFBVSxNQUFNLFNBQVUsUUFBUSxPQUFPO0FBQzdDLGtCQUFJLFFBQVE7QUFBQSxnQkFBd0I7QUFBQTtBQUFBLGdCQUFtQjtBQUFBLGNBQUk7QUFDM0Qsb0JBQU0sS0FBSyxJQUFJLElBQUk7QUFDbkIscUJBQU87QUFBQSxZQUNWO0FBQ0QsWUFBQUEsU0FBUSxVQUFVLFNBQVMsU0FBVSxRQUFRO0FBQ3pDLGtCQUFJLFFBQVE7QUFBQSxnQkFBd0I7QUFBQTtBQUFBLGdCQUFtQjtBQUFBLGNBQUs7QUFDNUQscUJBQU8sVUFBVSxTQUFZLE9BQU8sTUFBTSxLQUFLLElBQUksSUFBSTtBQUFBLFlBQzFEO0FBQ0QsWUFBQUEsU0FBUSxVQUFVLFFBQVEsV0FBWTtBQUVsQyxtQkFBSyxPQUFPLGdCQUFpQjtBQUFBLFlBQ2hDO0FBQ0QsbUJBQU9BO0FBQUEsVUFDdkIsRUFBZTtBQUFBO0FBQ0gsaUJBQVMsa0JBQWtCO0FBQ3ZCLGNBQUk7QUFDSjtBQUNJLGtCQUFNLGdCQUFnQixXQUFZO0FBQUEsaUJBQy9CLFFBQVEsSUFBSSxNQUFNLEdBQUc7QUFDNUIsZUFBSyxHQUFHLElBQUk7QUFDWixpQkFBTztBQUFBLFFBQ3ZCO0FBQ1ksaUJBQVMsd0JBQXdCLFFBQVFDLFNBQVE7QUFDN0MsY0FBSSxDQUFDcEMsUUFBTyxLQUFLLFFBQVEsT0FBTyxHQUFHO0FBQy9CLGdCQUFJLENBQUNvQztBQUNELHFCQUFPO0FBQ1gsbUJBQU8sZUFBZSxRQUFRLFNBQVMsRUFBRSxPQUFPLFFBQVEsT0FBTSxHQUFJO0FBQUEsVUFDdEY7QUFDZ0IsaUJBQU8sT0FBTyxPQUFPO0FBQUEsUUFDckM7QUFDWSxpQkFBUyxnQkFBZ0IsUUFBUUosT0FBTTtBQUNuQyxtQkFBUzVCLEtBQUksR0FBR0EsS0FBSTRCLE9BQU0sRUFBRTVCO0FBQ3hCLG1CQUFPQSxFQUFDLElBQUksS0FBSyxPQUFRLElBQUcsTUFBTztBQUN2QyxpQkFBTztBQUFBLFFBQ3ZCO0FBQ1ksaUJBQVMsZUFBZTRCLE9BQU07QUFDMUIsY0FBSSxPQUFPLGVBQWUsWUFBWTtBQUNsQyxnQkFBSSxRQUFRLElBQUksV0FBV0EsS0FBSTtBQUMvQixnQkFBSSxPQUFPLFdBQVcsYUFBYTtBQUMvQixxQkFBTyxnQkFBZ0IsS0FBSztBQUFBLFlBQ3BELFdBQzZCLE9BQU8sYUFBYSxhQUFhO0FBQ3RDLHVCQUFTLGdCQUFnQixLQUFLO0FBQUEsWUFDdEQsT0FDeUI7QUFDRCw4QkFBZ0IsT0FBT0EsS0FBSTtBQUFBLFlBQ25EO0FBQ29CLG1CQUFPO0FBQUEsVUFDM0I7QUFDZ0IsaUJBQU8sZ0JBQWdCLElBQUksTUFBTUEsS0FBSSxHQUFHQSxLQUFJO0FBQUEsUUFDNUQ7QUFDWSxpQkFBUyxhQUFhO0FBQ2xCLGNBQUlLLFFBQU8sZUFBZSxTQUFTO0FBRW5DLFVBQUFBLE1BQUssQ0FBQyxJQUFJQSxNQUFLLENBQUMsSUFBSSxLQUFPO0FBQzNCLFVBQUFBLE1BQUssQ0FBQyxJQUFJQSxNQUFLLENBQUMsSUFBSSxNQUFPO0FBQzNCLGNBQUksU0FBUztBQUNiLG1CQUFTQyxVQUFTLEdBQUdBLFVBQVMsV0FBVyxFQUFFQSxTQUFRO0FBQy9DLGdCQUFJLE9BQU9ELE1BQUtDLE9BQU07QUFDdEIsZ0JBQUlBLFlBQVcsS0FBS0EsWUFBVyxLQUFLQSxZQUFXO0FBQzNDLHdCQUFVO0FBQ2QsZ0JBQUksT0FBTztBQUNQLHdCQUFVO0FBQ2Qsc0JBQVUsS0FBSyxTQUFTLEVBQUUsRUFBRSxZQUFhO0FBQUEsVUFDN0Q7QUFDZ0IsaUJBQU87QUFBQSxRQUN2QjtBQUFBLE1BQ0E7QUFFUSxlQUFTLGVBQWUsS0FBSztBQUN6QixZQUFJLEtBQUs7QUFDVCxlQUFPLElBQUk7QUFDWCxlQUFPO0FBQUEsTUFDbkI7QUFBQSxJQUNBLENBQUs7QUFBQSxFQUNMLEdBQUd6QyxhQUFZQSxXQUFVLENBQUEsRUFBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNzNDZixNQUFJMEMsS0FBRSxPQUFPLElBQUksZUFBZSxHQUFFQyxLQUFFLE9BQU8sSUFBSSxjQUFjLEdBQUVDLEtBQUUsT0FBTyxJQUFJLGdCQUFnQixHQUFFQyxLQUFFLE9BQU8sSUFBSSxtQkFBbUIsR0FBRUMsS0FBRSxPQUFPLElBQUksZ0JBQWdCLEdBQUVDLEtBQUUsT0FBTyxJQUFJLGdCQUFnQixHQUFFQyxLQUFFLE9BQU8sSUFBSSxlQUFlLEdBQUVDLEtBQUUsT0FBTyxJQUFJLG1CQUFtQixHQUFFQyxLQUFFLE9BQU8sSUFBSSxnQkFBZ0IsR0FBRXRDLEtBQUUsT0FBTyxJQUFJLFlBQVksR0FBRUUsS0FBRSxPQUFPLElBQUksWUFBWSxHQUFFcUMsS0FBRSxPQUFPO0FBQVMsV0FBU0MsR0FBRUMsSUFBRTtBQUFDLFFBQUcsU0FBT0EsTUFBRyxhQUFXLE9BQU9BLEdBQUUsUUFBTztBQUFLLElBQUFBLEtBQUVGLE1BQUdFLEdBQUVGLEVBQUMsS0FBR0UsR0FBRSxZQUFZO0FBQUUsV0FBTSxlQUFhLE9BQU9BLEtBQUVBLEtBQUU7QUFBQSxFQUFJO0FBQzFlLE1BQUlDLEtBQUUsRUFBQyxXQUFVLFdBQVU7QUFBQyxXQUFNO0FBQUEsRUFBRSxHQUFFLG9CQUFtQixXQUFVO0FBQUEsS0FBRyxxQkFBb0IsV0FBVTtBQUFBLEtBQUcsaUJBQWdCLFdBQVU7QUFBQSxJQUFFLEdBQUVDLEtBQUUsT0FBTyxRQUFPQyxLQUFFO0FBQUcsV0FBU0MsR0FBRUosSUFBRUssSUFBRWhDLElBQUU7QUFBQyxTQUFLLFFBQU0yQjtBQUFFLFNBQUssVUFBUUs7QUFBRSxTQUFLLE9BQUtGO0FBQUUsU0FBSyxVQUFROUIsTUFBRzRCO0FBQUEsRUFBQztBQUFDLEVBQUFHLEdBQUUsVUFBVSxtQkFBaUIsQ0FBRTtBQUNyUSxFQUFBQSxHQUFFLFVBQVUsV0FBUyxTQUFTSixJQUFFSyxJQUFFO0FBQUMsUUFBRyxhQUFXLE9BQU9MLE1BQUcsZUFBYSxPQUFPQSxNQUFHLFFBQU1BLEdBQUUsT0FBTSxNQUFNLHVIQUF1SDtBQUFFLFNBQUssUUFBUSxnQkFBZ0IsTUFBS0EsSUFBRUssSUFBRSxVQUFVO0FBQUEsRUFBQztBQUFFLEVBQUFELEdBQUUsVUFBVSxjQUFZLFNBQVNKLElBQUU7QUFBQyxTQUFLLFFBQVEsbUJBQW1CLE1BQUtBLElBQUUsYUFBYTtBQUFBLEVBQUM7QUFBRSxXQUFTTSxLQUFHO0FBQUEsRUFBRTtBQUFBLEVBQUFBLEdBQUUsWUFBVUYsR0FBRTtBQUFVLFdBQVNHLEdBQUVQLElBQUVLLElBQUVoQyxJQUFFO0FBQUMsU0FBSyxRQUFNMkI7QUFBRSxTQUFLLFVBQVFLO0FBQUUsU0FBSyxPQUFLRjtBQUFFLFNBQUssVUFBUTlCLE1BQUc0QjtBQUFBLEVBQUM7QUFBQyxNQUFJTyxLQUFFRCxHQUFFLFlBQVUsSUFBSUQ7QUFDcmYsRUFBQUUsR0FBRSxjQUFZRDtBQUFFLEVBQUFMLEdBQUVNLElBQUVKLEdBQUUsU0FBUztBQUFFLEVBQUFJLEdBQUUsdUJBQXFCO0FBQUcsTUFBSUMsS0FBRSxNQUFNLFNBQVFDLEtBQUUsT0FBTyxVQUFVLGdCQUFlQyxLQUFFLEVBQUMsU0FBUSxLQUFJLEdBQUVDLEtBQUUsRUFBQyxLQUFJLE1BQUcsS0FBSSxNQUFHLFFBQU8sTUFBRyxVQUFTLEtBQUU7QUFDeEssV0FBU0MsR0FBRWIsSUFBRUssSUFBRWhDLElBQUU7QUFBQyxRQUFJeUMsSUFBRUMsS0FBRSxDQUFFLEdBQUMzQyxLQUFFLE1BQUs0QyxLQUFFO0FBQUssUUFBRyxRQUFNWCxHQUFFLE1BQUlTLE1BQUssV0FBU1QsR0FBRSxRQUFNVyxLQUFFWCxHQUFFLE1BQUssV0FBU0EsR0FBRSxRQUFNakMsS0FBRSxLQUFHaUMsR0FBRSxNQUFLQSxHQUFFLENBQUFLLEdBQUUsS0FBS0wsSUFBRVMsRUFBQyxLQUFHLENBQUNGLEdBQUUsZUFBZUUsRUFBQyxNQUFJQyxHQUFFRCxFQUFDLElBQUVULEdBQUVTLEVBQUM7QUFBRyxRQUFJRyxLQUFFLFVBQVUsU0FBTztBQUFFLFFBQUcsTUFBSUEsR0FBRSxDQUFBRixHQUFFLFdBQVMxQztBQUFBLGFBQVUsSUFBRTRDLElBQUU7QUFBQyxlQUFRdEQsS0FBRSxNQUFNc0QsRUFBQyxHQUFFQyxLQUFFLEdBQUVBLEtBQUVELElBQUVDLEtBQUksQ0FBQXZELEdBQUV1RCxFQUFDLElBQUUsVUFBVUEsS0FBRSxDQUFDO0FBQUUsTUFBQUgsR0FBRSxXQUFTcEQ7QUFBQSxJQUFDO0FBQUMsUUFBR3FDLE1BQUdBLEdBQUUsYUFBYSxNQUFJYyxNQUFLRyxLQUFFakIsR0FBRSxjQUFhaUIsR0FBRSxZQUFTRixHQUFFRCxFQUFDLE1BQUlDLEdBQUVELEVBQUMsSUFBRUcsR0FBRUgsRUFBQztBQUFHLFdBQU0sRUFBQyxVQUFTekIsSUFBRSxNQUFLVyxJQUFFLEtBQUk1QixJQUFFLEtBQUk0QyxJQUFFLE9BQU1ELElBQUUsUUFBT0osR0FBRSxRQUFPO0FBQUEsRUFBQztBQUM3YSxXQUFTUSxHQUFFbkIsSUFBRUssSUFBRTtBQUFDLFdBQU0sRUFBQyxVQUFTaEIsSUFBRSxNQUFLVyxHQUFFLE1BQUssS0FBSUssSUFBRSxLQUFJTCxHQUFFLEtBQUksT0FBTUEsR0FBRSxPQUFNLFFBQU9BLEdBQUUsT0FBTTtBQUFBLEVBQUM7QUFBQyxXQUFTN0MsR0FBRTZDLElBQUU7QUFBQyxXQUFNLGFBQVcsT0FBT0EsTUFBRyxTQUFPQSxNQUFHQSxHQUFFLGFBQVdYO0FBQUEsRUFBQztBQUFDLFdBQVMsT0FBT1csSUFBRTtBQUFDLFFBQUlLLEtBQUUsRUFBQyxLQUFJLE1BQUssS0FBSSxLQUFJO0FBQUUsV0FBTSxNQUFJTCxHQUFFLFFBQVEsU0FBUSxTQUFTQSxJQUFFO0FBQUMsYUFBT0ssR0FBRUwsRUFBQztBQUFBLElBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxNQUFJNUMsS0FBRTtBQUFPLFdBQVNnRSxHQUFFcEIsSUFBRUssSUFBRTtBQUFDLFdBQU0sYUFBVyxPQUFPTCxNQUFHLFNBQU9BLE1BQUcsUUFBTUEsR0FBRSxNQUFJLE9BQU8sS0FBR0EsR0FBRSxHQUFHLElBQUVLLEdBQUUsU0FBUyxFQUFFO0FBQUEsRUFBQztBQUMvVyxXQUFTZ0IsR0FBRXJCLElBQUVLLElBQUVoQyxJQUFFeUMsSUFBRUMsSUFBRTtBQUFDLFFBQUkzQyxLQUFFLE9BQU80QjtBQUFFLFFBQUcsZ0JBQWM1QixNQUFHLGNBQVlBLEdBQUUsQ0FBQTRCLEtBQUU7QUFBSyxRQUFJZ0IsS0FBRTtBQUFHLFFBQUcsU0FBT2hCLEdBQUUsQ0FBQWdCLEtBQUU7QUFBQSxRQUFRLFNBQU81QyxJQUFHO0FBQUEsTUFBQSxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQVMsUUFBQTRDLEtBQUU7QUFBRztBQUFBLE1BQU0sS0FBSztBQUFTLGdCQUFPaEIsR0FBRSxVQUFRO0FBQUEsVUFBRSxLQUFLWDtBQUFBLFVBQUUsS0FBS0M7QUFBRSxZQUFBMEIsS0FBRTtBQUFBLFFBQUU7QUFBQSxJQUFDO0FBQUMsUUFBR0EsR0FBRSxRQUFPQSxLQUFFaEIsSUFBRWUsS0FBRUEsR0FBRUMsRUFBQyxHQUFFaEIsS0FBRSxPQUFLYyxLQUFFLE1BQUlNLEdBQUVKLElBQUUsQ0FBQyxJQUFFRixJQUFFTCxHQUFFTSxFQUFDLEtBQUcxQyxLQUFFLElBQUcsUUFBTTJCLE9BQUkzQixLQUFFMkIsR0FBRSxRQUFRNUMsSUFBRSxLQUFLLElBQUUsTUFBS2lFLEdBQUVOLElBQUVWLElBQUVoQyxJQUFFLElBQUcsU0FBUzJCLElBQUU7QUFBQyxhQUFPQTtBQUFBLElBQUMsQ0FBQyxLQUFHLFFBQU1lLE9BQUk1RCxHQUFFNEQsRUFBQyxNQUFJQSxLQUFFSSxHQUFFSixJQUFFMUMsTUFBRyxDQUFDMEMsR0FBRSxPQUFLQyxNQUFHQSxHQUFFLFFBQU1ELEdBQUUsTUFBSSxNQUFJLEtBQUdBLEdBQUUsS0FBSyxRQUFRM0QsSUFBRSxLQUFLLElBQUUsT0FBSzRDLEVBQUMsSUFBR0ssR0FBRSxLQUFLVSxFQUFDLElBQUc7QUFBRSxJQUFBQyxLQUFFO0FBQUUsSUFBQUYsS0FBRSxPQUFLQSxLQUFFLE1BQUlBLEtBQUU7QUFBSSxRQUFHTCxHQUFFVCxFQUFDLEVBQUUsVUFBUWlCLEtBQUUsR0FBRUEsS0FBRWpCLEdBQUUsUUFBT2lCLE1BQUk7QUFBQyxNQUFBN0MsS0FDcmY0QixHQUFFaUIsRUFBQztBQUFFLFVBQUl0RCxLQUFFbUQsS0FBRU0sR0FBRWhELElBQUU2QyxFQUFDO0FBQUUsTUFBQUQsTUFBR0ssR0FBRWpELElBQUVpQyxJQUFFaEMsSUFBRVYsSUFBRW9ELEVBQUM7QUFBQSxJQUFDO0FBQUEsYUFBU3BELEtBQUVvQyxHQUFFQyxFQUFDLEdBQUUsZUFBYSxPQUFPckMsR0FBRSxNQUFJcUMsS0FBRXJDLEdBQUUsS0FBS3FDLEVBQUMsR0FBRWlCLEtBQUUsR0FBRSxFQUFFN0MsS0FBRTRCLEdBQUUsS0FBTSxHQUFFLE9BQU0sQ0FBQTVCLEtBQUVBLEdBQUUsT0FBTVQsS0FBRW1ELEtBQUVNLEdBQUVoRCxJQUFFNkMsSUFBRyxHQUFFRCxNQUFHSyxHQUFFakQsSUFBRWlDLElBQUVoQyxJQUFFVixJQUFFb0QsRUFBQztBQUFBLGFBQVUsYUFBVzNDLEdBQUUsT0FBTWlDLEtBQUUsT0FBT0wsRUFBQyxHQUFFLE1BQU0scURBQW1ELHNCQUFvQkssS0FBRSx1QkFBcUIsT0FBTyxLQUFLTCxFQUFDLEVBQUUsS0FBSyxJQUFJLElBQUUsTUFBSUssTUFBRywyRUFBMkU7QUFBRSxXQUFPVztBQUFBLEVBQUM7QUFDelosV0FBU00sR0FBRXRCLElBQUVLLElBQUVoQyxJQUFFO0FBQUMsUUFBRyxRQUFNMkIsR0FBRSxRQUFPQTtBQUFFLFFBQUljLEtBQUUsQ0FBQSxHQUFHQyxLQUFFO0FBQUUsSUFBQU0sR0FBRXJCLElBQUVjLElBQUUsSUFBRyxJQUFHLFNBQVNkLElBQUU7QUFBQyxhQUFPSyxHQUFFLEtBQUtoQyxJQUFFMkIsSUFBRWUsSUFBRztBQUFBLElBQUMsQ0FBQztBQUFFLFdBQU9EO0FBQUEsRUFBQztBQUFDLFdBQVNTLEdBQUV2QixJQUFFO0FBQUMsUUFBRyxPQUFLQSxHQUFFLFNBQVE7QUFBQyxVQUFJSyxLQUFFTCxHQUFFO0FBQVEsTUFBQUssS0FBRUEsR0FBQztBQUFHLE1BQUFBLEdBQUUsS0FBSyxTQUFTQSxJQUFFO0FBQUMsWUFBRyxNQUFJTCxHQUFFLFdBQVMsT0FBS0EsR0FBRSxRQUFRLENBQUFBLEdBQUUsVUFBUSxHQUFFQSxHQUFFLFVBQVFLO0FBQUEsTUFBQyxHQUFFLFNBQVNBLElBQUU7QUFBQyxZQUFHLE1BQUlMLEdBQUUsV0FBUyxPQUFLQSxHQUFFLFFBQVEsQ0FBQUEsR0FBRSxVQUFRLEdBQUVBLEdBQUUsVUFBUUs7QUFBQSxNQUFDLENBQUM7QUFBRSxhQUFLTCxHQUFFLFlBQVVBLEdBQUUsVUFBUSxHQUFFQSxHQUFFLFVBQVFLO0FBQUEsSUFBRTtBQUFDLFFBQUcsTUFBSUwsR0FBRSxRQUFRLFFBQU9BLEdBQUUsUUFBUTtBQUFRLFVBQU1BLEdBQUU7QUFBQSxFQUFRO0FBQzVaLE1BQUl3QixLQUFFLEVBQUMsU0FBUSxLQUFJLEdBQUU5RCxLQUFFLEVBQUMsWUFBVyxLQUFJLEdBQUUrRCxLQUFFLEVBQUMsd0JBQXVCRCxJQUFFLHlCQUF3QjlELElBQUUsbUJBQWtCaUQsR0FBQztBQUFFLFdBQVNlLEtBQUc7QUFBQyxVQUFNLE1BQU0sMERBQTBEO0FBQUEsRUFBRTtBQUN6TSx1QkFBQSxXQUFpQixFQUFDLEtBQUlKLElBQUUsU0FBUSxTQUFTdEIsSUFBRUssSUFBRWhDLElBQUU7QUFBQyxJQUFBaUQsR0FBRXRCLElBQUUsV0FBVTtBQUFDLE1BQUFLLEdBQUUsTUFBTSxNQUFLLFNBQVM7QUFBQSxJQUFDLEdBQUVoQyxFQUFDO0FBQUEsRUFBQyxHQUFFLE9BQU0sU0FBUzJCLElBQUU7QUFBQyxRQUFJSyxLQUFFO0FBQUUsSUFBQWlCLEdBQUV0QixJQUFFLFdBQVU7QUFBQyxNQUFBSztBQUFBLElBQUcsQ0FBQztBQUFFLFdBQU9BO0FBQUEsRUFBQyxHQUFFLFNBQVEsU0FBU0wsSUFBRTtBQUFDLFdBQU9zQixHQUFFdEIsSUFBRSxTQUFTQSxJQUFFO0FBQUMsYUFBT0E7QUFBQSxJQUFDLENBQUMsS0FBRyxDQUFBO0FBQUEsRUFBRSxHQUFFLE1BQUssU0FBU0EsSUFBRTtBQUFDLFFBQUcsQ0FBQzdDLEdBQUU2QyxFQUFDLEVBQUUsT0FBTSxNQUFNLHVFQUF1RTtBQUFFLFdBQU9BO0FBQUEsRUFBQyxFQUFDO0FBQUUsdUJBQWlCLFlBQUNJO0FBQUUsa0NBQWlCYjtBQUFFLHVCQUFBLFdBQWlCRTtBQUFFLHVCQUFBLGdCQUFzQmM7QUFBRSx1QkFBQSxhQUFtQmY7QUFBRSx1QkFBQSxXQUFpQks7QUFDbGMsdUJBQUEscURBQTJENEI7QUFBRSx1QkFBQSxNQUFZQztBQUNyRCx1QkFBQSxlQUFDLFNBQVMxQixJQUFFSyxJQUFFaEMsSUFBRTtBQUFDLFFBQUcsU0FBTzJCLE1BQUcsV0FBU0EsR0FBRSxPQUFNLE1BQU0sbUZBQWlGQSxLQUFFLEdBQUc7QUFBRSxRQUFJYyxLQUFFWixHQUFFLElBQUdGLEdBQUUsS0FBSyxHQUFFZSxLQUFFZixHQUFFLEtBQUk1QixLQUFFNEIsR0FBRSxLQUFJZ0IsS0FBRWhCLEdBQUU7QUFBTyxRQUFHLFFBQU1LLElBQUU7QUFBQyxpQkFBU0EsR0FBRSxRQUFNakMsS0FBRWlDLEdBQUUsS0FBSVcsS0FBRUwsR0FBRTtBQUFTLGlCQUFTTixHQUFFLFFBQU1VLEtBQUUsS0FBR1YsR0FBRTtBQUFLLFVBQUdMLEdBQUUsUUFBTUEsR0FBRSxLQUFLLGFBQWEsS0FBSWlCLEtBQUVqQixHQUFFLEtBQUs7QUFBYSxXQUFJckMsTUFBSzBDLEdBQUUsQ0FBQUssR0FBRSxLQUFLTCxJQUFFMUMsRUFBQyxLQUFHLENBQUNpRCxHQUFFLGVBQWVqRCxFQUFDLE1BQUltRCxHQUFFbkQsRUFBQyxJQUFFLFdBQVMwQyxHQUFFMUMsRUFBQyxLQUFHLFdBQVNzRCxLQUFFQSxHQUFFdEQsRUFBQyxJQUFFMEMsR0FBRTFDLEVBQUM7QUFBQSxJQUFFO0FBQUMsUUFBSUEsS0FBRSxVQUFVLFNBQU87QUFBRSxRQUFHLE1BQUlBLEdBQUUsQ0FBQW1ELEdBQUUsV0FBU3pDO0FBQUEsYUFBVSxJQUFFVixJQUFFO0FBQUMsTUFBQXNELEtBQUUsTUFBTXRELEVBQUM7QUFDdGYsZUFBUXVELEtBQUUsR0FBRUEsS0FBRXZELElBQUV1RCxLQUFJLENBQUFELEdBQUVDLEVBQUMsSUFBRSxVQUFVQSxLQUFFLENBQUM7QUFBRSxNQUFBSixHQUFFLFdBQVNHO0FBQUEsSUFBQztBQUFDLFdBQU0sRUFBQyxVQUFTNUIsSUFBRSxNQUFLVyxHQUFFLE1BQUssS0FBSWUsSUFBRSxLQUFJM0MsSUFBRSxPQUFNMEMsSUFBRSxRQUFPRSxHQUFDO0FBQUEsRUFBQztBQUFFLHVCQUFBLGdCQUFzQixTQUFTaEIsSUFBRTtBQUFDLElBQUFBLEtBQUUsRUFBQyxVQUFTTCxJQUFFLGVBQWNLLElBQUUsZ0JBQWVBLElBQUUsY0FBYSxHQUFFLFVBQVMsTUFBSyxVQUFTLE1BQUssZUFBYyxNQUFLLGFBQVksS0FBSTtBQUFFLElBQUFBLEdBQUUsV0FBUyxFQUFDLFVBQVNOLElBQUUsVUFBU00sR0FBQztBQUFFLFdBQU9BLEdBQUUsV0FBU0E7QUFBQSxFQUFDO0FBQUUsdUJBQUEsZ0JBQXNCYTtBQUFFLHVCQUFxQixnQkFBQyxTQUFTYixJQUFFO0FBQUMsUUFBSUssS0FBRVEsR0FBRSxLQUFLLE1BQUtiLEVBQUM7QUFBRSxJQUFBSyxHQUFFLE9BQUtMO0FBQUUsV0FBT0s7QUFBQSxFQUFDO0FBQUUsdUJBQUEsWUFBa0IsV0FBVTtBQUFDLFdBQU0sRUFBQyxTQUFRLEtBQUk7QUFBQSxFQUFDO0FBQzlkLHVCQUFBLGFBQW1CLFNBQVNMLElBQUU7QUFBQyxXQUFNLEVBQUMsVUFBU0osSUFBRSxRQUFPSSxHQUFDO0FBQUEsRUFBQztBQUFFLHVCQUFBLGlCQUF1QjdDO0FBQUUsdUJBQVksT0FBQyxTQUFTNkMsSUFBRTtBQUFDLFdBQU0sRUFBQyxVQUFTdkMsSUFBRSxVQUFTLEVBQUMsU0FBUSxJQUFHLFNBQVF1QyxHQUFDLEdBQUUsT0FBTXVCLEdBQUM7QUFBQSxFQUFDO0FBQUUsdUJBQUEsT0FBYSxTQUFTdkIsSUFBRUssSUFBRTtBQUFDLFdBQU0sRUFBQyxVQUFTOUMsSUFBRSxNQUFLeUMsSUFBRSxTQUFRLFdBQVNLLEtBQUUsT0FBS0EsR0FBQztBQUFBLEVBQUM7QUFBRSx1QkFBdUIsa0JBQUMsU0FBU0wsSUFBRTtBQUFDLFFBQUlLLEtBQUUzQyxHQUFFO0FBQVcsSUFBQUEsR0FBRSxhQUFXO0FBQUcsUUFBRztBQUFDLE1BQUFzQyxHQUFDO0FBQUEsSUFBRSxVQUFDO0FBQVEsTUFBQXRDLEdBQUUsYUFBVzJDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBRSx1QkFBQSxlQUFxQnFCO0FBQUUsdUJBQW1CLGNBQUMsU0FBUzFCLElBQUVLLElBQUU7QUFBQyxXQUFPbUIsR0FBRSxRQUFRLFlBQVl4QixJQUFFSyxFQUFDO0FBQUEsRUFBQztBQUFFLHVCQUFBLGFBQW1CLFNBQVNMLElBQUU7QUFBQyxXQUFPd0IsR0FBRSxRQUFRLFdBQVd4QixFQUFDO0FBQUEsRUFBQztBQUN0ZSx1QkFBQSxnQkFBQyxXQUFVO0FBQUEsRUFBQTtBQUFHLHVCQUFBLG1CQUF5QixTQUFTQSxJQUFFO0FBQUMsV0FBT3dCLEdBQUUsUUFBUSxpQkFBaUJ4QixFQUFDO0FBQUEsRUFBQztBQUFFLHVCQUFpQixZQUFDLFNBQVNBLElBQUVLLElBQUU7QUFBQyxXQUFPbUIsR0FBRSxRQUFRLFVBQVV4QixJQUFFSyxFQUFDO0FBQUEsRUFBQztBQUFFLHVCQUFhLFFBQUMsV0FBVTtBQUFDLFdBQU9tQixHQUFFLFFBQVEsTUFBSztBQUFBLEVBQUU7QUFBRSx1QkFBQSxzQkFBNEIsU0FBU3hCLElBQUVLLElBQUVoQyxJQUFFO0FBQUMsV0FBT21ELEdBQUUsUUFBUSxvQkFBb0J4QixJQUFFSyxJQUFFaEMsRUFBQztBQUFBLEVBQUM7QUFBRSx1QkFBQSxxQkFBMkIsU0FBUzJCLElBQUVLLElBQUU7QUFBQyxXQUFPbUIsR0FBRSxRQUFRLG1CQUFtQnhCLElBQUVLLEVBQUM7QUFBQSxFQUFDO0FBQUUsdUJBQUEsa0JBQXdCLFNBQVNMLElBQUVLLElBQUU7QUFBQyxXQUFPbUIsR0FBRSxRQUFRLGdCQUFnQnhCLElBQUVLLEVBQUM7QUFBQSxFQUFDO0FBQzFjLHVCQUFBLFVBQUMsU0FBU0wsSUFBRUssSUFBRTtBQUFDLFdBQU9tQixHQUFFLFFBQVEsUUFBUXhCLElBQUVLLEVBQUM7QUFBQSxFQUFDO0FBQUUsdUJBQWtCLGFBQUMsU0FBU0wsSUFBRUssSUFBRWhDLElBQUU7QUFBQyxXQUFPbUQsR0FBRSxRQUFRLFdBQVd4QixJQUFFSyxJQUFFaEMsRUFBQztBQUFBLEVBQUM7QUFBRSx1QkFBYyxTQUFDLFNBQVMyQixJQUFFO0FBQUMsV0FBT3dCLEdBQUUsUUFBUSxPQUFPeEIsRUFBQztBQUFBLEVBQUM7QUFBRSx1QkFBZ0IsV0FBQyxTQUFTQSxJQUFFO0FBQUMsV0FBT3dCLEdBQUUsUUFBUSxTQUFTeEIsRUFBQztBQUFBLEVBQUM7QUFBRSx1QkFBQSx1QkFBNkIsU0FBU0EsSUFBRUssSUFBRWhDLElBQUU7QUFBQyxXQUFPbUQsR0FBRSxRQUFRLHFCQUFxQnhCLElBQUVLLElBQUVoQyxFQUFDO0FBQUEsRUFBQztBQUFFLHVCQUFBLGdCQUFzQixXQUFVO0FBQUMsV0FBT21ELEdBQUUsUUFBUSxjQUFlO0FBQUEsRUFBQTtBQUFFLHVCQUFlLFVBQUM7Ozs7Ozs7QUN2QnpYO0FBQ2xDRyxVQUFBLFVBQVVDLDRCQUF1QztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FDTTdDLE1BQUlqRSxLQUFFaUUsYUFBZ0IsR0FBQ3hELEtBQUUsT0FBTyxJQUFJLGVBQWUsR0FBRWlCLEtBQUUsT0FBTyxJQUFJLGdCQUFnQixHQUFFNkIsS0FBRSxPQUFPLFVBQVUsZ0JBQWU1QixLQUFFM0IsR0FBRSxtREFBbUQsbUJBQWtCNEIsS0FBRSxFQUFDLEtBQUksTUFBRyxLQUFJLE1BQUcsUUFBTyxNQUFHLFVBQVMsS0FBRTtBQUNsUCxXQUFTQyxHQUFFdUIsSUFBRWYsSUFBRWlCLElBQUU7QUFBQyxRQUFJWixJQUFFUyxLQUFFLElBQUd6QyxLQUFFLE1BQUsyQyxLQUFFO0FBQUssZUFBU0MsT0FBSTVDLEtBQUUsS0FBRzRDO0FBQUcsZUFBU2pCLEdBQUUsUUFBTTNCLEtBQUUsS0FBRzJCLEdBQUU7QUFBSyxlQUFTQSxHQUFFLFFBQU1nQixLQUFFaEIsR0FBRTtBQUFLLFNBQUlLLE1BQUtMLEdBQUUsQ0FBQWtCLEdBQUUsS0FBS2xCLElBQUVLLEVBQUMsS0FBRyxDQUFDZCxHQUFFLGVBQWVjLEVBQUMsTUFBSVMsR0FBRVQsRUFBQyxJQUFFTCxHQUFFSyxFQUFDO0FBQUcsUUFBR1UsTUFBR0EsR0FBRSxhQUFhLE1BQUlWLE1BQUtMLEtBQUVlLEdBQUUsY0FBYWYsR0FBRSxZQUFTYyxHQUFFVCxFQUFDLE1BQUlTLEdBQUVULEVBQUMsSUFBRUwsR0FBRUssRUFBQztBQUFHLFdBQU0sRUFBQyxVQUFTakMsSUFBRSxNQUFLMkMsSUFBRSxLQUFJMUMsSUFBRSxLQUFJMkMsSUFBRSxPQUFNRixJQUFFLFFBQU94QixHQUFFLFFBQU87QUFBQSxFQUFDO0FBQUMsNENBQWlCRDtBQUFFLGlDQUFXLE1BQUNHO0FBQUUsaUNBQUEsT0FBYUE7Ozs7Ozs7QUNSL1Q7QUFDbENxQyxlQUFBLFVBQVVELHNDQUFtRDtBQUFBOzs7O0FDRHZELFNBQVNFLE9BQUssSUFBSSxTQUFTO0FBQ3hDLFNBQU8sU0FBUyxPQUFPO0FBQ3JCLFdBQU8sR0FBRyxNQUFNLFNBQVMsU0FBUztBQUFBLEVBQ25DO0FBQ0g7QUNBQSxNQUFNLEVBQUMsU0FBUSxJQUFJLE9BQU87QUFDMUIsTUFBTSxFQUFDQyxnQkFBQUEsaUJBQWMsSUFBSTtBQUV6QixNQUFNLFNBQVUsa0JBQUFDLFdBQVMsV0FBUztBQUM5QixRQUFNLE1BQU0sU0FBUyxLQUFLLEtBQUs7QUFDL0IsU0FBT0EsT0FBTSxHQUFHLE1BQU1BLE9BQU0sR0FBRyxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsRUFBRSxZQUFXO0FBQ25FLEdBQUcsdUJBQU8sT0FBTyxJQUFJLENBQUM7QUFFdEIsTUFBTSxhQUFhLENBQUNDLFVBQVM7QUFDM0IsRUFBQUEsUUFBT0EsTUFBSyxZQUFhO0FBQ3pCLFNBQU8sQ0FBQyxVQUFVLE9BQU8sS0FBSyxNQUFNQTtBQUN0QztBQUVBLE1BQU0sYUFBYSxDQUFBQSxVQUFRLFdBQVMsT0FBTyxVQUFVQTtBQVNyRCxNQUFNLEVBQUNDLFNBQUFBLFVBQU8sSUFBSTtBQVNsQixNQUFNLGNBQWMsV0FBVyxXQUFXO0FBUzFDLFNBQVNDLFdBQVMsS0FBSztBQUNyQixTQUFPLFFBQVEsUUFBUSxDQUFDLFlBQVksR0FBRyxLQUFLLElBQUksZ0JBQWdCLFFBQVEsQ0FBQyxZQUFZLElBQUksV0FBVyxLQUMvRkMsYUFBVyxJQUFJLFlBQVksUUFBUSxLQUFLLElBQUksWUFBWSxTQUFTLEdBQUc7QUFDM0U7QUFTQSxNQUFNLGdCQUFnQixXQUFXLGFBQWE7QUFVOUMsU0FBUyxrQkFBa0IsS0FBSztBQUM5QixNQUFJO0FBQ0osTUFBSyxPQUFPLGdCQUFnQixlQUFpQixZQUFZLFFBQVM7QUFDaEUsYUFBUyxZQUFZLE9BQU8sR0FBRztBQUFBLEVBQ25DLE9BQVM7QUFDTCxhQUFVLE9BQVMsSUFBSSxVQUFZLGNBQWMsSUFBSSxNQUFNO0FBQUEsRUFDL0Q7QUFDRSxTQUFPO0FBQ1Q7QUFTQSxNQUFNQyxhQUFXLFdBQVcsUUFBUTtBQVFwQyxNQUFNRCxlQUFhLFdBQVcsVUFBVTtBQVN4QyxNQUFNRSxhQUFXLFdBQVcsUUFBUTtBQVNwQyxNQUFNQyxhQUFXLENBQUMsVUFBVSxVQUFVLFFBQVEsT0FBTyxVQUFVO0FBUS9ELE1BQU0sWUFBWSxXQUFTLFVBQVUsUUFBUSxVQUFVO0FBU3ZELE1BQU1DLGtCQUFnQixDQUFDLFFBQVE7QUFDN0IsTUFBSSxPQUFPLEdBQUcsTUFBTSxVQUFVO0FBQzVCLFdBQU87QUFBQSxFQUNYO0FBRUUsUUFBTTVFLGFBQVltRSxpQkFBZSxHQUFHO0FBQ3BDLFVBQVFuRSxlQUFjLFFBQVFBLGVBQWMsT0FBTyxhQUFhLE9BQU8sZUFBZUEsVUFBUyxNQUFNLFNBQVMsRUFBRSxPQUFPLGVBQWUsUUFBUSxFQUFFLE9BQU8sWUFBWTtBQUNySztBQVNBLE1BQU0sU0FBUyxXQUFXLE1BQU07QUFTaEMsTUFBTSxTQUFTLFdBQVcsTUFBTTtBQVNoQyxNQUFNLFNBQVMsV0FBVyxNQUFNO0FBU2hDLE1BQU0sYUFBYSxXQUFXLFVBQVU7QUFTeEMsTUFBTSxXQUFXLENBQUMsUUFBUTJFLFdBQVMsR0FBRyxLQUFLSCxhQUFXLElBQUksSUFBSTtBQVM5RCxNQUFNLGFBQWEsQ0FBQyxVQUFVO0FBQzVCLE1BQUk7QUFDSixTQUFPLFVBQ0osT0FBTyxhQUFhLGNBQWMsaUJBQWlCLFlBQ2xEQSxhQUFXLE1BQU0sTUFBTSxPQUNwQixPQUFPLE9BQU8sS0FBSyxPQUFPO0FBQUEsRUFFMUIsU0FBUyxZQUFZQSxhQUFXLE1BQU0sUUFBUSxLQUFLLE1BQU0sU0FBUSxNQUFPO0FBSWpGO0FBU0EsTUFBTSxvQkFBb0IsV0FBVyxpQkFBaUI7QUFFdEQsTUFBTSxDQUFDLGtCQUFrQixXQUFXLFlBQVksU0FBUyxJQUFJLENBQUMsa0JBQWtCLFdBQVcsWUFBWSxTQUFTLEVBQUUsSUFBSSxVQUFVO0FBU2hJLE1BQU1LLFNBQU8sQ0FBQyxRQUFRLElBQUksT0FDeEIsSUFBSSxLQUFJLElBQUssSUFBSSxRQUFRLHNDQUFzQyxFQUFFO0FBaUJuRSxTQUFTLFFBQVEsS0FBSyxJQUFJLEVBQUMsYUFBYSxNQUFLLElBQUksSUFBSTtBQUVuRCxNQUFJLFFBQVEsUUFBUSxPQUFPLFFBQVEsYUFBYTtBQUM5QztBQUFBLEVBQ0o7QUFFRSxNQUFJdkY7QUFDSixNQUFJbUM7QUFHSixNQUFJLE9BQU8sUUFBUSxVQUFVO0FBRTNCLFVBQU0sQ0FBQyxHQUFHO0FBQUEsRUFDZDtBQUVFLE1BQUk2QyxVQUFRLEdBQUcsR0FBRztBQUVoQixTQUFLaEYsS0FBSSxHQUFHbUMsS0FBSSxJQUFJLFFBQVFuQyxLQUFJbUMsSUFBR25DLE1BQUs7QUFDdEMsU0FBRyxLQUFLLE1BQU0sSUFBSUEsRUFBQyxHQUFHQSxJQUFHLEdBQUc7QUFBQSxJQUNsQztBQUFBLEVBQ0EsT0FBUztBQUVMLFVBQU0sT0FBTyxhQUFhLE9BQU8sb0JBQW9CLEdBQUcsSUFBSSxPQUFPLEtBQUssR0FBRztBQUMzRSxVQUFNLE1BQU0sS0FBSztBQUNqQixRQUFJO0FBRUosU0FBS0EsS0FBSSxHQUFHQSxLQUFJLEtBQUtBLE1BQUs7QUFDeEIsWUFBTSxLQUFLQSxFQUFDO0FBQ1osU0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEdBQUcsS0FBSyxHQUFHO0FBQUEsSUFDdEM7QUFBQSxFQUNBO0FBQ0E7QUFFQSxTQUFTLFFBQVEsS0FBSyxLQUFLO0FBQ3pCLFFBQU0sSUFBSSxZQUFhO0FBQ3ZCLFFBQU0sT0FBTyxPQUFPLEtBQUssR0FBRztBQUM1QixNQUFJQSxLQUFJLEtBQUs7QUFDYixNQUFJO0FBQ0osU0FBT0EsT0FBTSxHQUFHO0FBQ2QsV0FBTyxLQUFLQSxFQUFDO0FBQ2IsUUFBSSxRQUFRLEtBQUssZUFBZTtBQUM5QixhQUFPO0FBQUEsSUFDYjtBQUFBLEVBQ0E7QUFDRSxTQUFPO0FBQ1Q7QUFFQSxNQUFNLFdBQVcsTUFBTTtBQUVyQixNQUFJLE9BQU8sZUFBZSxZQUFhLFFBQU87QUFDOUMsU0FBTyxPQUFPLFNBQVMsY0FBYyxPQUFRLE9BQU8sV0FBVyxjQUFjLFNBQVM7QUFDeEYsR0FBSTtBQUVKLE1BQU0sbUJBQW1CLENBQUMsWUFBWSxDQUFDLFlBQVksT0FBTyxLQUFLLFlBQVk7QUFvQjNFLFNBQVN3RixVQUFtQztBQUMxQyxRQUFNLEVBQUMsU0FBUSxJQUFJLGlCQUFpQixJQUFJLEtBQUssUUFBUSxDQUFFO0FBQ3ZELFFBQU0sU0FBUyxDQUFFO0FBQ2pCLFFBQU0sY0FBYyxDQUFDLEtBQUssUUFBUTtBQUNoQyxVQUFNLFlBQVksWUFBWSxRQUFRLFFBQVEsR0FBRyxLQUFLO0FBQ3RELFFBQUlGLGdCQUFjLE9BQU8sU0FBUyxDQUFDLEtBQUtBLGdCQUFjLEdBQUcsR0FBRztBQUMxRCxhQUFPLFNBQVMsSUFBSUUsUUFBTSxPQUFPLFNBQVMsR0FBRyxHQUFHO0FBQUEsSUFDdEQsV0FBZUYsZ0JBQWMsR0FBRyxHQUFHO0FBQzdCLGFBQU8sU0FBUyxJQUFJRSxRQUFNLENBQUEsR0FBSSxHQUFHO0FBQUEsSUFDdkMsV0FBZVIsVUFBUSxHQUFHLEdBQUc7QUFDdkIsYUFBTyxTQUFTLElBQUksSUFBSSxNQUFPO0FBQUEsSUFDckMsT0FBVztBQUNMLGFBQU8sU0FBUyxJQUFJO0FBQUEsSUFDMUI7QUFBQSxFQUNBO0FBRUUsV0FBU2hGLEtBQUksR0FBR21DLEtBQUksVUFBVSxRQUFRbkMsS0FBSW1DLElBQUduQyxNQUFLO0FBQ2hELGNBQVVBLEVBQUMsS0FBSyxRQUFRLFVBQVVBLEVBQUMsR0FBRyxXQUFXO0FBQUEsRUFDckQ7QUFDRSxTQUFPO0FBQ1Q7QUFZQSxNQUFNLFNBQVMsQ0FBQzhDLElBQUdLLElBQUcsU0FBUyxFQUFDLFdBQVUsSUFBRyxPQUFPO0FBQ2xELFVBQVFBLElBQUcsQ0FBQyxLQUFLLFFBQVE7QUFDdkIsUUFBSSxXQUFXK0IsYUFBVyxHQUFHLEdBQUc7QUFDOUIsTUFBQXBDLEdBQUUsR0FBRyxJQUFJOEIsT0FBSyxLQUFLLE9BQU87QUFBQSxJQUNoQyxPQUFXO0FBQ0wsTUFBQTlCLEdBQUUsR0FBRyxJQUFJO0FBQUEsSUFDZjtBQUFBLEVBQ0EsR0FBSyxFQUFDLFdBQVUsQ0FBQztBQUNmLFNBQU9BO0FBQ1Q7QUFTQSxNQUFNLFdBQVcsQ0FBQyxZQUFZO0FBQzVCLE1BQUksUUFBUSxXQUFXLENBQUMsTUFBTSxPQUFRO0FBQ3BDLGNBQVUsUUFBUSxNQUFNLENBQUM7QUFBQSxFQUM3QjtBQUNFLFNBQU87QUFDVDtBQVdBLE1BQU0yQyxhQUFXLENBQUMsYUFBYSxrQkFBa0IsT0FBT0MsaUJBQWdCO0FBQ3RFLGNBQVksWUFBWSxPQUFPLE9BQU8saUJBQWlCLFdBQVdBLFlBQVc7QUFDN0UsY0FBWSxVQUFVLGNBQWM7QUFDcEMsU0FBTyxlQUFlLGFBQWEsU0FBUztBQUFBLElBQzFDLE9BQU8saUJBQWlCO0FBQUEsRUFDNUIsQ0FBRztBQUNELFdBQVMsT0FBTyxPQUFPLFlBQVksV0FBVyxLQUFLO0FBQ3JEO0FBV0EsTUFBTSxlQUFlLENBQUMsV0FBVyxTQUFTQyxTQUFRLGVBQWU7QUFDL0QsTUFBSTtBQUNKLE1BQUkzRjtBQUNKLE1BQUk7QUFDSixRQUFNLFNBQVMsQ0FBRTtBQUVqQixZQUFVLFdBQVcsQ0FBRTtBQUV2QixNQUFJLGFBQWEsS0FBTSxRQUFPO0FBRTlCLEtBQUc7QUFDRCxZQUFRLE9BQU8sb0JBQW9CLFNBQVM7QUFDNUMsSUFBQUEsS0FBSSxNQUFNO0FBQ1YsV0FBT0EsT0FBTSxHQUFHO0FBQ2QsYUFBTyxNQUFNQSxFQUFDO0FBQ2QsV0FBSyxDQUFDLGNBQWMsV0FBVyxNQUFNLFdBQVcsT0FBTyxNQUFNLENBQUMsT0FBTyxJQUFJLEdBQUc7QUFDMUUsZ0JBQVEsSUFBSSxJQUFJLFVBQVUsSUFBSTtBQUM5QixlQUFPLElBQUksSUFBSTtBQUFBLE1BQ3ZCO0FBQUEsSUFDQTtBQUNJLGdCQUFZMkYsWUFBVyxTQUFTZCxpQkFBZSxTQUFTO0FBQUEsRUFDNUQsU0FBVyxjQUFjLENBQUNjLFdBQVVBLFFBQU8sV0FBVyxPQUFPLE1BQU0sY0FBYyxPQUFPO0FBRXRGLFNBQU87QUFDVDtBQVdBLE1BQU0sV0FBVyxDQUFDLEtBQUssY0FBY0MsY0FBYTtBQUNoRCxRQUFNLE9BQU8sR0FBRztBQUNoQixNQUFJQSxjQUFhLFVBQWFBLFlBQVcsSUFBSSxRQUFRO0FBQ25ELElBQUFBLFlBQVcsSUFBSTtBQUFBLEVBQ25CO0FBQ0UsRUFBQUEsYUFBWSxhQUFhO0FBQ3pCLFFBQU0sWUFBWSxJQUFJLFFBQVEsY0FBY0EsU0FBUTtBQUNwRCxTQUFPLGNBQWMsTUFBTSxjQUFjQTtBQUMzQztBQVVBLE1BQU0sVUFBVSxDQUFDLFVBQVU7QUFDekIsTUFBSSxDQUFDLE1BQU8sUUFBTztBQUNuQixNQUFJWixVQUFRLEtBQUssRUFBRyxRQUFPO0FBQzNCLE1BQUloRixLQUFJLE1BQU07QUFDZCxNQUFJLENBQUNvRixXQUFTcEYsRUFBQyxFQUFHLFFBQU87QUFDekIsUUFBTSxNQUFNLElBQUksTUFBTUEsRUFBQztBQUN2QixTQUFPQSxPQUFNLEdBQUc7QUFDZCxRQUFJQSxFQUFDLElBQUksTUFBTUEsRUFBQztBQUFBLEVBQ3BCO0FBQ0UsU0FBTztBQUNUO0FBV0EsTUFBTSxlQUFnQixpQ0FBYztBQUVsQyxTQUFPLFdBQVM7QUFDZCxXQUFPLGNBQWMsaUJBQWlCO0FBQUEsRUFDdkM7QUFDSCxHQUFHLE9BQU8sZUFBZSxlQUFlNkUsaUJBQWUsVUFBVSxDQUFDO0FBVWxFLE1BQU0sZUFBZSxDQUFDLEtBQUssT0FBTztBQUNoQyxRQUFNLFlBQVksT0FBTyxJQUFJLE9BQU8sUUFBUTtBQUU1QyxRQUFNLFdBQVcsVUFBVSxLQUFLLEdBQUc7QUFFbkMsTUFBSTtBQUVKLFVBQVEsU0FBUyxTQUFTLEtBQUksTUFBTyxDQUFDLE9BQU8sTUFBTTtBQUNqRCxVQUFNLE9BQU8sT0FBTztBQUNwQixPQUFHLEtBQUssS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUFBLEVBQ2pDO0FBQ0E7QUFVQSxNQUFNLFdBQVcsQ0FBQyxRQUFRLFFBQVE7QUFDaEMsTUFBSWdCO0FBQ0osUUFBTSxNQUFNLENBQUU7QUFFZCxVQUFRQSxXQUFVLE9BQU8sS0FBSyxHQUFHLE9BQU8sTUFBTTtBQUM1QyxRQUFJLEtBQUtBLFFBQU87QUFBQSxFQUNwQjtBQUVFLFNBQU87QUFDVDtBQUdBLE1BQU0sYUFBYSxXQUFXLGlCQUFpQjtBQUUvQyxNQUFNLGNBQWMsU0FBTztBQUN6QixTQUFPLElBQUksY0FBYztBQUFBLElBQVE7QUFBQSxJQUMvQixTQUFTLFNBQVM3QixJQUFHLElBQUksSUFBSTtBQUMzQixhQUFPLEdBQUcsWUFBVyxJQUFLO0FBQUEsSUFDaEM7QUFBQSxFQUNHO0FBQ0g7QUFHQSxNQUFNLGtCQUFrQixDQUFDLEVBQUMsZ0JBQUE4QixnQkFBYyxNQUFNLENBQUMsS0FBSyxTQUFTQSxnQkFBZSxLQUFLLEtBQUssSUFBSSxHQUFHLE9BQU8sU0FBUztBQVM3RyxNQUFNLFdBQVcsV0FBVyxRQUFRO0FBRXBDLE1BQU0sb0JBQW9CLENBQUMsS0FBS0MsYUFBWTtBQUMxQyxRQUFNTCxlQUFjLE9BQU8sMEJBQTBCLEdBQUc7QUFDeEQsUUFBTSxxQkFBcUIsQ0FBRTtBQUU3QixVQUFRQSxjQUFhLENBQUMsWUFBWSxTQUFTO0FBQ3pDLFFBQUk7QUFDSixTQUFLLE1BQU1LLFNBQVEsWUFBWSxNQUFNLEdBQUcsT0FBTyxPQUFPO0FBQ3BELHlCQUFtQixJQUFJLElBQUksT0FBTztBQUFBLElBQ3hDO0FBQUEsRUFDQSxDQUFHO0FBRUQsU0FBTyxpQkFBaUIsS0FBSyxrQkFBa0I7QUFDakQ7QUFPQSxNQUFNLGdCQUFnQixDQUFDLFFBQVE7QUFDN0Isb0JBQWtCLEtBQUssQ0FBQyxZQUFZLFNBQVM7QUFFM0MsUUFBSWIsYUFBVyxHQUFHLEtBQUssQ0FBQyxhQUFhLFVBQVUsUUFBUSxFQUFFLFFBQVEsSUFBSSxNQUFNLElBQUk7QUFDN0UsYUFBTztBQUFBLElBQ2I7QUFFSSxVQUFNLFFBQVEsSUFBSSxJQUFJO0FBRXRCLFFBQUksQ0FBQ0EsYUFBVyxLQUFLLEVBQUc7QUFFeEIsZUFBVyxhQUFhO0FBRXhCLFFBQUksY0FBYyxZQUFZO0FBQzVCLGlCQUFXLFdBQVc7QUFDdEI7QUFBQSxJQUNOO0FBRUksUUFBSSxDQUFDLFdBQVcsS0FBSztBQUNuQixpQkFBVyxNQUFNLE1BQU07QUFDckIsY0FBTSxNQUFNLHVDQUF3QyxPQUFPLEdBQUk7QUFBQSxNQUNoRTtBQUFBLElBQ1A7QUFBQSxFQUNBLENBQUc7QUFDSDtBQUVBLE1BQU0sY0FBYyxDQUFDLGVBQWVjLGVBQWM7QUFDaEQsUUFBTSxNQUFNLENBQUU7QUFFZCxRQUFNLFNBQVMsQ0FBQyxRQUFRO0FBQ3RCLFFBQUksUUFBUSxXQUFTO0FBQ25CLFVBQUksS0FBSyxJQUFJO0FBQUEsSUFDbkIsQ0FBSztBQUFBLEVBQ0w7QUFFRWhCLFlBQVEsYUFBYSxJQUFJLE9BQU8sYUFBYSxJQUFJLE9BQU8sT0FBTyxhQUFhLEVBQUUsTUFBTWdCLFVBQVMsQ0FBQztBQUU5RixTQUFPO0FBQ1Q7QUFFQSxNQUFNQyxTQUFPLE1BQU07QUFBQTtBQUVuQixNQUFNLGlCQUFpQixDQUFDLE9BQU8saUJBQWlCO0FBQzlDLFNBQU8sU0FBUyxRQUFRLE9BQU8sU0FBUyxRQUFRLENBQUMsS0FBSyxJQUFJLFFBQVE7QUFDcEU7QUFFQSxNQUFNLFFBQVE7QUFFZCxNQUFNLFFBQVE7QUFFZCxNQUFNLFdBQVc7QUFBQSxFQUNmO0FBQUEsRUFDQTtBQUFBLEVBQ0EsYUFBYSxRQUFRLE1BQU0sZ0JBQWdCO0FBQzdDO0FBRUEsTUFBTSxpQkFBaUIsQ0FBQ3JFLFFBQU8sSUFBSSxXQUFXLFNBQVMsZ0JBQWdCO0FBQ3JFLE1BQUksTUFBTTtBQUNWLFFBQU0sRUFBQyxRQUFBc0UsUUFBTSxJQUFJO0FBQ2pCLFNBQU90RSxTQUFRO0FBQ2IsV0FBTyxTQUFTLEtBQUssT0FBUSxJQUFHc0UsVUFBTyxDQUFDO0FBQUEsRUFDNUM7QUFFRSxTQUFPO0FBQ1Q7QUFTQSxTQUFTLG9CQUFvQixPQUFPO0FBQ2xDLFNBQU8sQ0FBQyxFQUFFLFNBQVNoQixhQUFXLE1BQU0sTUFBTSxLQUFLLE1BQU0sT0FBTyxXQUFXLE1BQU0sY0FBYyxNQUFNLE9BQU8sUUFBUTtBQUNsSDtBQUVBLE1BQU0sZUFBZSxDQUFDLFFBQVE7QUFDNUIsUUFBTSxRQUFRLElBQUksTUFBTSxFQUFFO0FBRTFCLFFBQU0sUUFBUSxDQUFDLFFBQVFsRixPQUFNO0FBRTNCLFFBQUlxRixXQUFTLE1BQU0sR0FBRztBQUNwQixVQUFJLE1BQU0sUUFBUSxNQUFNLEtBQUssR0FBRztBQUM5QjtBQUFBLE1BQ1I7QUFFTSxVQUFHLEVBQUUsWUFBWSxTQUFTO0FBQ3hCLGNBQU1yRixFQUFDLElBQUk7QUFDWCxjQUFNLFNBQVNnRixVQUFRLE1BQU0sSUFBSSxDQUFFLElBQUcsQ0FBRTtBQUV4QyxnQkFBUSxRQUFRLENBQUMsT0FBTyxRQUFRO0FBQzlCLGdCQUFNLGVBQWUsTUFBTSxPQUFPaEYsS0FBSSxDQUFDO0FBQ3ZDLFdBQUMsWUFBWSxZQUFZLE1BQU0sT0FBTyxHQUFHLElBQUk7QUFBQSxRQUN2RCxDQUFTO0FBRUQsY0FBTUEsRUFBQyxJQUFJO0FBRVgsZUFBTztBQUFBLE1BQ2Y7QUFBQSxJQUNBO0FBRUksV0FBTztBQUFBLEVBQ1g7QUFFRSxTQUFPLE1BQU0sS0FBSyxDQUFDO0FBQ3JCO0FBRUEsTUFBTSxZQUFZLFdBQVcsZUFBZTtBQUU1QyxNQUFNLGFBQWEsQ0FBQyxVQUNsQixVQUFVcUYsV0FBUyxLQUFLLEtBQUtILGFBQVcsS0FBSyxNQUFNQSxhQUFXLE1BQU0sSUFBSSxLQUFLQSxhQUFXLE1BQU0sS0FBSztBQUtyRyxNQUFNLGlCQUFpQixDQUFDLHVCQUF1Qix5QkFBeUI7QUFDdEUsTUFBSSx1QkFBdUI7QUFDekIsV0FBTztBQUFBLEVBQ1g7QUFFRSxTQUFPLHdCQUF3QixDQUFDaUIsUUFBTyxjQUFjO0FBQ25ELFlBQVEsaUJBQWlCLFdBQVcsQ0FBQyxFQUFDLFFBQVEsTUFBQWxFLE1BQUksTUFBTTtBQUN0RCxVQUFJLFdBQVcsV0FBV0EsVUFBU2tFLFFBQU87QUFDeEMsa0JBQVUsVUFBVSxVQUFVLFFBQVM7QUFBQSxNQUMvQztBQUFBLElBQ0ssR0FBRSxLQUFLO0FBRVIsV0FBTyxDQUFDLE9BQU87QUFDYixnQkFBVSxLQUFLLEVBQUU7QUFDakIsY0FBUSxZQUFZQSxRQUFPLEdBQUc7QUFBQSxJQUNwQztBQUFBLEVBQ0csR0FBRSxTQUFTLEtBQUssUUFBUSxJQUFJLENBQUUsQ0FBQSxJQUFJLENBQUMsT0FBTyxXQUFXLEVBQUU7QUFDMUQ7QUFBQSxFQUNFLE9BQU8saUJBQWlCO0FBQUEsRUFDeEJqQixhQUFXLFFBQVEsV0FBVztBQUNoQztBQUVBLE1BQU0sT0FBTyxPQUFPLG1CQUFtQixjQUNyQyxlQUFlLEtBQUssT0FBTyxJQUFNLE9BQU8sWUFBWSxlQUFlLFFBQVEsWUFBWTtBQUl6RixNQUFlLFVBQUE7QUFBQSxFQUNmLFNBQUVGO0FBQUFBLEVBQ0E7QUFBQSxFQUNGLFVBQUVDO0FBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDRixVQUFFRTtBQUFBQSxFQUNGLFVBQUVDO0FBQUFBLEVBQ0E7QUFBQSxFQUNGLFVBQUVDO0FBQUFBLEVBQ0YsZUFBRUM7QUFBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDRixZQUFFSjtBQUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0YsT0FBRU07QUFBQUEsRUFDQTtBQUFBLEVBQ0YsTUFBRUQ7QUFBQUEsRUFDQTtBQUFBLEVBQ0YsVUFBRUU7QUFBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQSxZQUFZO0FBQUE7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDRixNQUFFUTtBQUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0EsUUFBUTtBQUFBLEVBQ1I7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBLGNBQWM7QUFBQSxFQUNkO0FBQ0Y7QUN4dUJBLFNBQVMsV0FBVyxTQUFTLE1BQU1HLFNBQVEsU0FBUyxVQUFVO0FBQzVELFFBQU0sS0FBSyxJQUFJO0FBRWYsTUFBSSxNQUFNLG1CQUFtQjtBQUMzQixVQUFNLGtCQUFrQixNQUFNLEtBQUssV0FBVztBQUFBLEVBQ2xELE9BQVM7QUFDTCxTQUFLLFFBQVMsSUFBSSxNQUFPLEVBQUU7QUFBQSxFQUMvQjtBQUVFLE9BQUssVUFBVTtBQUNmLE9BQUssT0FBTztBQUNaLFdBQVMsS0FBSyxPQUFPO0FBQ3JCLEVBQUFBLFlBQVcsS0FBSyxTQUFTQTtBQUN6QixjQUFZLEtBQUssVUFBVTtBQUMzQixNQUFJLFVBQVU7QUFDWixTQUFLLFdBQVc7QUFDaEIsU0FBSyxTQUFTLFNBQVMsU0FBUyxTQUFTLFNBQVM7QUFBQSxFQUN0RDtBQUNBO0FBRUFDLFFBQU0sU0FBUyxZQUFZLE9BQU87QUFBQSxFQUNoQyxRQUFRLFNBQVMsU0FBUztBQUN4QixXQUFPO0FBQUE7QUFBQSxNQUVMLFNBQVMsS0FBSztBQUFBLE1BQ2QsTUFBTSxLQUFLO0FBQUE7QUFBQSxNQUVYLGFBQWEsS0FBSztBQUFBLE1BQ2xCLFFBQVEsS0FBSztBQUFBO0FBQUEsTUFFYixVQUFVLEtBQUs7QUFBQSxNQUNmLFlBQVksS0FBSztBQUFBLE1BQ2pCLGNBQWMsS0FBSztBQUFBLE1BQ25CLE9BQU8sS0FBSztBQUFBO0FBQUEsTUFFWixRQUFRQSxRQUFNLGFBQWEsS0FBSyxNQUFNO0FBQUEsTUFDdEMsTUFBTSxLQUFLO0FBQUEsTUFDWCxRQUFRLEtBQUs7QUFBQSxJQUNkO0FBQUEsRUFDTDtBQUNBLENBQUM7QUFFRCxNQUFNM0YsY0FBWSxXQUFXO0FBQzdCLE1BQU0sY0FBYyxDQUFFO0FBRXRCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFFRixFQUFFLFFBQVEsVUFBUTtBQUNoQixjQUFZLElBQUksSUFBSSxFQUFDLE9BQU8sS0FBSTtBQUNsQyxDQUFDO0FBRUQsT0FBTyxpQkFBaUIsWUFBWSxXQUFXO0FBQy9DLE9BQU8sZUFBZUEsYUFBVyxnQkFBZ0IsRUFBQyxPQUFPLEtBQUksQ0FBQztBQUc5RCxXQUFXLE9BQU8sQ0FBQyxPQUFPLE1BQU0wRixTQUFRLFNBQVMsVUFBVSxnQkFBZ0I7QUFDekUsUUFBTSxhQUFhLE9BQU8sT0FBTzFGLFdBQVM7QUFFMUMyRixVQUFNLGFBQWEsT0FBTyxZQUFZLFNBQVNWLFFBQU8sS0FBSztBQUN6RCxXQUFPLFFBQVEsTUFBTTtBQUFBLEVBQ3RCLEdBQUUsVUFBUTtBQUNULFdBQU8sU0FBUztBQUFBLEVBQ3BCLENBQUc7QUFFRCxhQUFXLEtBQUssWUFBWSxNQUFNLFNBQVMsTUFBTVMsU0FBUSxTQUFTLFFBQVE7QUFFMUUsYUFBVyxRQUFRO0FBRW5CLGFBQVcsT0FBTyxNQUFNO0FBRXhCLGlCQUFlLE9BQU8sT0FBTyxZQUFZLFdBQVc7QUFFcEQsU0FBTztBQUNUO0FDbkdBLE1BQUEsY0FBZTtBQ2FmLFNBQVMsWUFBWSxPQUFPO0FBQzFCLFNBQU9DLFFBQU0sY0FBYyxLQUFLLEtBQUtBLFFBQU0sUUFBUSxLQUFLO0FBQzFEO0FBU0EsU0FBUyxlQUFlLEtBQUs7QUFDM0IsU0FBT0EsUUFBTSxTQUFTLEtBQUssSUFBSSxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsSUFBSTtBQUN4RDtBQVdBLFNBQVMsVUFBVSxNQUFNLEtBQUssTUFBTTtBQUNsQyxNQUFJLENBQUMsS0FBTSxRQUFPO0FBQ2xCLFNBQU8sS0FBSyxPQUFPLEdBQUcsRUFBRSxJQUFJLFNBQVMsS0FBS0YsUUFBT25HLElBQUc7QUFFbEQsSUFBQW1HLFNBQVEsZUFBZUEsTUFBSztBQUM1QixXQUFPLENBQUMsUUFBUW5HLEtBQUksTUFBTW1HLFNBQVEsTUFBTUE7QUFBQSxFQUN6QyxDQUFBLEVBQUUsS0FBSyxPQUFPLE1BQU0sRUFBRTtBQUN6QjtBQVNBLFNBQVMsWUFBWSxLQUFLO0FBQ3hCLFNBQU9FLFFBQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVztBQUNwRDtBQUVBLE1BQU0sYUFBYUEsUUFBTSxhQUFhQSxTQUFPLENBQUUsR0FBRSxNQUFNLFNBQVMsT0FBTyxNQUFNO0FBQzNFLFNBQU8sV0FBVyxLQUFLLElBQUk7QUFDN0IsQ0FBQztBQXlCRCxTQUFTLFdBQVcsS0FBSyxVQUFVQyxVQUFTO0FBQzFDLE1BQUksQ0FBQ0QsUUFBTSxTQUFTLEdBQUcsR0FBRztBQUN4QixVQUFNLElBQUksVUFBVSwwQkFBMEI7QUFBQSxFQUNsRDtBQUdFLGFBQVcsWUFBWSxJQUF5QixTQUFXO0FBRzNELEVBQUFDLFdBQVVELFFBQU0sYUFBYUMsVUFBUztBQUFBLElBQ3BDLFlBQVk7QUFBQSxJQUNaLE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxFQUNWLEdBQUUsT0FBTyxTQUFTLFFBQVEsUUFBUSxRQUFRO0FBRXpDLFdBQU8sQ0FBQ0QsUUFBTSxZQUFZLE9BQU8sTUFBTSxDQUFDO0FBQUEsRUFDNUMsQ0FBRztBQUVELFFBQU0sYUFBYUMsU0FBUTtBQUUzQixRQUFNLFVBQVVBLFNBQVEsV0FBVztBQUNuQyxRQUFNLE9BQU9BLFNBQVE7QUFDckIsUUFBTSxVQUFVQSxTQUFRO0FBQ3hCLFFBQU0sUUFBUUEsU0FBUSxRQUFRLE9BQU8sU0FBUyxlQUFlO0FBQzdELFFBQU0sVUFBVSxTQUFTRCxRQUFNLG9CQUFvQixRQUFRO0FBRTNELE1BQUksQ0FBQ0EsUUFBTSxXQUFXLE9BQU8sR0FBRztBQUM5QixVQUFNLElBQUksVUFBVSw0QkFBNEI7QUFBQSxFQUNwRDtBQUVFLFdBQVMsYUFBYSxPQUFPO0FBQzNCLFFBQUksVUFBVSxLQUFNLFFBQU87QUFFM0IsUUFBSUEsUUFBTSxPQUFPLEtBQUssR0FBRztBQUN2QixhQUFPLE1BQU0sWUFBYTtBQUFBLElBQ2hDO0FBRUksUUFBSSxDQUFDLFdBQVdBLFFBQU0sT0FBTyxLQUFLLEdBQUc7QUFDbkMsWUFBTSxJQUFJLFdBQVcsOENBQThDO0FBQUEsSUFDekU7QUFFSSxRQUFJQSxRQUFNLGNBQWMsS0FBSyxLQUFLQSxRQUFNLGFBQWEsS0FBSyxHQUFHO0FBQzNELGFBQU8sV0FBVyxPQUFPLFNBQVMsYUFBYSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLEtBQUssS0FBSztBQUFBLElBQzFGO0FBRUksV0FBTztBQUFBLEVBQ1g7QUFZRSxXQUFTLGVBQWUsT0FBTyxLQUFLLE1BQU07QUFDeEMsUUFBSSxNQUFNO0FBRVYsUUFBSSxTQUFTLENBQUMsUUFBUSxPQUFPLFVBQVUsVUFBVTtBQUMvQyxVQUFJQSxRQUFNLFNBQVMsS0FBSyxJQUFJLEdBQUc7QUFFN0IsY0FBTSxhQUFhLE1BQU0sSUFBSSxNQUFNLEdBQUcsRUFBRTtBQUV4QyxnQkFBUSxLQUFLLFVBQVUsS0FBSztBQUFBLE1BQ3BDLFdBQ1NBLFFBQU0sUUFBUSxLQUFLLEtBQUssWUFBWSxLQUFLLE1BQ3hDQSxRQUFNLFdBQVcsS0FBSyxLQUFLQSxRQUFNLFNBQVMsS0FBSyxJQUFJLE9BQU8sTUFBTUEsUUFBTSxRQUFRLEtBQUssSUFDbEY7QUFFSCxjQUFNLGVBQWUsR0FBRztBQUV4QixZQUFJLFFBQVEsU0FBUyxLQUFLLElBQUkzRSxRQUFPO0FBQ25DLFlBQUUyRSxRQUFNLFlBQVksRUFBRSxLQUFLLE9BQU8sU0FBUyxTQUFTO0FBQUE7QUFBQSxZQUVsRCxZQUFZLE9BQU8sVUFBVSxDQUFDLEdBQUcsR0FBRzNFLFFBQU8sSUFBSSxJQUFLLFlBQVksT0FBTyxNQUFNLE1BQU07QUFBQSxZQUNuRixhQUFhLEVBQUU7QUFBQSxVQUNoQjtBQUFBLFFBQ1gsQ0FBUztBQUNELGVBQU87QUFBQSxNQUNmO0FBQUEsSUFDQTtBQUVJLFFBQUksWUFBWSxLQUFLLEdBQUc7QUFDdEIsYUFBTztBQUFBLElBQ2I7QUFFSSxhQUFTLE9BQU8sVUFBVSxNQUFNLEtBQUssSUFBSSxHQUFHLGFBQWEsS0FBSyxDQUFDO0FBRS9ELFdBQU87QUFBQSxFQUNYO0FBRUUsUUFBTSxRQUFRLENBQUU7QUFFaEIsUUFBTSxpQkFBaUIsT0FBTyxPQUFPLFlBQVk7QUFBQSxJQUMvQztBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDSixDQUFHO0FBRUQsV0FBUyxNQUFNLE9BQU8sTUFBTTtBQUMxQixRQUFJMkUsUUFBTSxZQUFZLEtBQUssRUFBRztBQUU5QixRQUFJLE1BQU0sUUFBUSxLQUFLLE1BQU0sSUFBSTtBQUMvQixZQUFNLE1BQU0sb0NBQW9DLEtBQUssS0FBSyxHQUFHLENBQUM7QUFBQSxJQUNwRTtBQUVJLFVBQU0sS0FBSyxLQUFLO0FBRWhCQSxZQUFNLFFBQVEsT0FBTyxTQUFTLEtBQUssSUFBSSxLQUFLO0FBQzFDLFlBQU0sU0FBUyxFQUFFQSxRQUFNLFlBQVksRUFBRSxLQUFLLE9BQU8sU0FBUyxRQUFRO0FBQUEsUUFDaEU7QUFBQSxRQUFVO0FBQUEsUUFBSUEsUUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLEtBQUksSUFBSztBQUFBLFFBQUs7QUFBQSxRQUFNO0FBQUEsTUFDN0Q7QUFFRCxVQUFJLFdBQVcsTUFBTTtBQUNuQixjQUFNLElBQUksT0FBTyxLQUFLLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQUEsTUFDakQ7QUFBQSxJQUNBLENBQUs7QUFFRCxVQUFNLElBQUs7QUFBQSxFQUNmO0FBRUUsTUFBSSxDQUFDQSxRQUFNLFNBQVMsR0FBRyxHQUFHO0FBQ3hCLFVBQU0sSUFBSSxVQUFVLHdCQUF3QjtBQUFBLEVBQ2hEO0FBRUUsUUFBTSxHQUFHO0FBRVQsU0FBTztBQUNUO0FDNU1BLFNBQVNFLFNBQU8sS0FBSztBQUNuQixRQUFNLFVBQVU7QUFBQSxJQUNkLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxFQUNSO0FBQ0QsU0FBTyxtQkFBbUIsR0FBRyxFQUFFLFFBQVEsb0JBQW9CLFNBQVMsU0FBU0MsUUFBTztBQUNsRixXQUFPLFFBQVFBLE1BQUs7QUFBQSxFQUN4QixDQUFHO0FBQ0g7QUFVQSxTQUFTLHFCQUFxQixRQUFRRixVQUFTO0FBQzdDLE9BQUssU0FBUyxDQUFFO0FBRWhCLFlBQVUsV0FBVyxRQUFRLE1BQU1BLFFBQU87QUFDNUM7QUFFQSxNQUFNLFlBQVkscUJBQXFCO0FBRXZDLFVBQVUsU0FBUyxTQUFTLE9BQU8sTUFBTSxPQUFPO0FBQzlDLE9BQUssT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7QUFDaEM7QUFFQSxVQUFVLFdBQVcsU0FBU0csVUFBUyxTQUFTO0FBQzlDLFFBQU0sVUFBVSxVQUFVLFNBQVMsT0FBTztBQUN4QyxXQUFPLFFBQVEsS0FBSyxNQUFNLE9BQU9GLFFBQU07QUFBQSxFQUMzQyxJQUFNQTtBQUVKLFNBQU8sS0FBSyxPQUFPLElBQUksU0FBUyxLQUFLLE1BQU07QUFDekMsV0FBTyxRQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQUEsRUFDbkQsR0FBSyxFQUFFLEVBQUUsS0FBSyxHQUFHO0FBQ2pCO0FDMUNBLFNBQVMsT0FBTyxLQUFLO0FBQ25CLFNBQU8sbUJBQW1CLEdBQUcsRUFDM0IsUUFBUSxTQUFTLEdBQUcsRUFDcEIsUUFBUSxRQUFRLEdBQUcsRUFDbkIsUUFBUSxTQUFTLEdBQUcsRUFDcEIsUUFBUSxRQUFRLEdBQUcsRUFDbkIsUUFBUSxTQUFTLEdBQUcsRUFDcEIsUUFBUSxTQUFTLEdBQUc7QUFDeEI7QUFXZSxTQUFTLFNBQVMsS0FBSyxRQUFRRCxVQUFTO0FBRXJELE1BQUksQ0FBQyxRQUFRO0FBQ1gsV0FBTztBQUFBLEVBQ1g7QUFFRSxRQUFNLFVBQVVBLFlBQVdBLFNBQVEsVUFBVTtBQUU3QyxNQUFJRCxRQUFNLFdBQVdDLFFBQU8sR0FBRztBQUM3QixJQUFBQSxXQUFVO0FBQUEsTUFDUixXQUFXQTtBQUFBLElBQ1o7QUFBQSxFQUNGO0FBRUQsUUFBTSxjQUFjQSxZQUFXQSxTQUFRO0FBRXZDLE1BQUk7QUFFSixNQUFJLGFBQWE7QUFDZix1QkFBbUIsWUFBWSxRQUFRQSxRQUFPO0FBQUEsRUFDbEQsT0FBUztBQUNMLHVCQUFtQkQsUUFBTSxrQkFBa0IsTUFBTSxJQUMvQyxPQUFPLFNBQVUsSUFDakIsSUFBSSxxQkFBcUIsUUFBUUMsUUFBTyxFQUFFLFNBQVMsT0FBTztBQUFBLEVBQ2hFO0FBRUUsTUFBSSxrQkFBa0I7QUFDcEIsVUFBTSxnQkFBZ0IsSUFBSSxRQUFRLEdBQUc7QUFFckMsUUFBSSxrQkFBa0IsSUFBSTtBQUN4QixZQUFNLElBQUksTUFBTSxHQUFHLGFBQWE7QUFBQSxJQUN0QztBQUNJLFlBQVEsSUFBSSxRQUFRLEdBQUcsTUFBTSxLQUFLLE1BQU0sT0FBTztBQUFBLEVBQ25EO0FBRUUsU0FBTztBQUNUO0FDaEVBLE1BQU0sbUJBQW1CO0FBQUEsRUFDdkIsY0FBYztBQUNaLFNBQUssV0FBVyxDQUFFO0FBQUEsRUFDdEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVRSxJQUFJLFdBQVcsVUFBVUEsVUFBUztBQUNoQyxTQUFLLFNBQVMsS0FBSztBQUFBLE1BQ2pCO0FBQUEsTUFDQTtBQUFBLE1BQ0EsYUFBYUEsV0FBVUEsU0FBUSxjQUFjO0FBQUEsTUFDN0MsU0FBU0EsV0FBVUEsU0FBUSxVQUFVO0FBQUEsSUFDM0MsQ0FBSztBQUNELFdBQU8sS0FBSyxTQUFTLFNBQVM7QUFBQSxFQUNsQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTRSxNQUFNLElBQUk7QUFDUixRQUFJLEtBQUssU0FBUyxFQUFFLEdBQUc7QUFDckIsV0FBSyxTQUFTLEVBQUUsSUFBSTtBQUFBLElBQzFCO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9FLFFBQVE7QUFDTixRQUFJLEtBQUssVUFBVTtBQUNqQixXQUFLLFdBQVcsQ0FBRTtBQUFBLElBQ3hCO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFZRSxRQUFRLElBQUk7QUFDVkQsWUFBTSxRQUFRLEtBQUssVUFBVSxTQUFTLGVBQWV2QyxJQUFHO0FBQ3RELFVBQUlBLE9BQU0sTUFBTTtBQUNkLFdBQUdBLEVBQUM7QUFBQSxNQUNaO0FBQUEsSUFDQSxDQUFLO0FBQUEsRUFDTDtBQUNBO0FDbEVBLE1BQWUsdUJBQUE7QUFBQSxFQUNiLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLHFCQUFxQjtBQUN2QjtBQ0hBLE1BQUEsb0JBQWUsT0FBTyxvQkFBb0IsY0FBYyxrQkFBa0I7QUNEMUUsTUFBQSxhQUFlLE9BQU8sYUFBYSxjQUFjLFdBQVc7QUNBNUQsTUFBQSxTQUFlLE9BQU8sU0FBUyxjQUFjLE9BQU87QUNFcEQsTUFBZSxhQUFBO0FBQUEsRUFDYixXQUFXO0FBQUEsRUFDWCxTQUFTO0FBQUEsSUFDWCxpQkFBSTRDO0FBQUFBLElBQ0osVUFBSUM7QUFBQUEsSUFDQUMsTUFBQUE7QUFBQUEsRUFDRDtBQUFBLEVBQ0QsV0FBVyxDQUFDLFFBQVEsU0FBUyxRQUFRLFFBQVEsT0FBTyxNQUFNO0FBQzVEO0FDWkEsTUFBTSxnQkFBZ0IsT0FBTyxXQUFXLGVBQWUsT0FBTyxhQUFhO0FBRTNFLE1BQU0sYUFBYSxPQUFPLGNBQWMsWUFBWSxhQUFhO0FBbUJqRSxNQUFNLHdCQUF3QixrQkFDM0IsQ0FBQyxjQUFjLENBQUMsZUFBZSxnQkFBZ0IsSUFBSSxFQUFFLFFBQVEsV0FBVyxPQUFPLElBQUk7QUFXdEYsTUFBTSxrQ0FBa0MsTUFBTTtBQUM1QyxTQUNFLE9BQU8sc0JBQXNCO0FBQUEsRUFFN0IsZ0JBQWdCLHFCQUNoQixPQUFPLEtBQUssa0JBQWtCO0FBRWxDLEdBQUk7QUFFSixNQUFNLFNBQVMsaUJBQWlCLE9BQU8sU0FBUyxRQUFROzs7Ozs7Ozs7QUN2Q3hELE1BQWUsYUFBQTtBQUFBLEVBQ2IsR0FBRztBQUFBLEVBQ0gsR0FBR0M7QUFDTDtBQ0FlLFNBQVMsaUJBQWlCNUUsT0FBTXFFLFVBQVM7QUFDdEQsU0FBTyxXQUFXckUsT0FBTSxJQUFJNEUsV0FBUyxRQUFRLGdCQUFpQixHQUFFLE9BQU8sT0FBTztBQUFBLElBQzVFLFNBQVMsU0FBUyxPQUFPLEtBQUssTUFBTSxTQUFTO0FBQzNDLFVBQUlBLFdBQVMsVUFBVVIsUUFBTSxTQUFTLEtBQUssR0FBRztBQUM1QyxhQUFLLE9BQU8sS0FBSyxNQUFNLFNBQVMsUUFBUSxDQUFDO0FBQ3pDLGVBQU87QUFBQSxNQUNmO0FBRU0sYUFBTyxRQUFRLGVBQWUsTUFBTSxNQUFNLFNBQVM7QUFBQSxJQUN6RDtBQUFBLEVBQ0csR0FBRUMsUUFBTyxDQUFDO0FBQ2I7QUNOQSxTQUFTLGNBQWMsTUFBTTtBQUszQixTQUFPRCxRQUFNLFNBQVMsaUJBQWlCLElBQUksRUFBRSxJQUFJLENBQUFHLFdBQVM7QUFDeEQsV0FBT0EsT0FBTSxDQUFDLE1BQU0sT0FBTyxLQUFLQSxPQUFNLENBQUMsS0FBS0EsT0FBTSxDQUFDO0FBQUEsRUFDdkQsQ0FBRztBQUNIO0FBU0EsU0FBUyxjQUFjLEtBQUs7QUFDMUIsUUFBTSxNQUFNLENBQUU7QUFDZCxRQUFNLE9BQU8sT0FBTyxLQUFLLEdBQUc7QUFDNUIsTUFBSXhHO0FBQ0osUUFBTSxNQUFNLEtBQUs7QUFDakIsTUFBSTtBQUNKLE9BQUtBLEtBQUksR0FBR0EsS0FBSSxLQUFLQSxNQUFLO0FBQ3hCLFVBQU0sS0FBS0EsRUFBQztBQUNaLFFBQUksR0FBRyxJQUFJLElBQUksR0FBRztBQUFBLEVBQ3RCO0FBQ0UsU0FBTztBQUNUO0FBU0EsU0FBUyxlQUFlLFVBQVU7QUFDaEMsV0FBUyxVQUFVLE1BQU0sT0FBTyxRQUFRMEIsUUFBTztBQUM3QyxRQUFJLE9BQU8sS0FBS0EsUUFBTztBQUV2QixRQUFJLFNBQVMsWUFBYSxRQUFPO0FBRWpDLFVBQU0sZUFBZSxPQUFPLFNBQVMsQ0FBQyxJQUFJO0FBQzFDLFVBQU0sU0FBU0EsVUFBUyxLQUFLO0FBQzdCLFdBQU8sQ0FBQyxRQUFRMkUsUUFBTSxRQUFRLE1BQU0sSUFBSSxPQUFPLFNBQVM7QUFFeEQsUUFBSSxRQUFRO0FBQ1YsVUFBSUEsUUFBTSxXQUFXLFFBQVEsSUFBSSxHQUFHO0FBQ2xDLGVBQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEdBQUcsS0FBSztBQUFBLE1BQzNDLE9BQWE7QUFDTCxlQUFPLElBQUksSUFBSTtBQUFBLE1BQ3ZCO0FBRU0sYUFBTyxDQUFDO0FBQUEsSUFDZDtBQUVJLFFBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDQSxRQUFNLFNBQVMsT0FBTyxJQUFJLENBQUMsR0FBRztBQUNsRCxhQUFPLElBQUksSUFBSSxDQUFFO0FBQUEsSUFDdkI7QUFFSSxVQUFNLFNBQVMsVUFBVSxNQUFNLE9BQU8sT0FBTyxJQUFJLEdBQUczRSxNQUFLO0FBRXpELFFBQUksVUFBVTJFLFFBQU0sUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHO0FBQ3pDLGFBQU8sSUFBSSxJQUFJLGNBQWMsT0FBTyxJQUFJLENBQUM7QUFBQSxJQUMvQztBQUVJLFdBQU8sQ0FBQztBQUFBLEVBQ1o7QUFFRSxNQUFJQSxRQUFNLFdBQVcsUUFBUSxLQUFLQSxRQUFNLFdBQVcsU0FBUyxPQUFPLEdBQUc7QUFDcEUsVUFBTSxNQUFNLENBQUU7QUFFZEEsWUFBTSxhQUFhLFVBQVUsQ0FBQyxNQUFNLFVBQVU7QUFDNUMsZ0JBQVUsY0FBYyxJQUFJLEdBQUcsT0FBTyxLQUFLLENBQUM7QUFBQSxJQUNsRCxDQUFLO0FBRUQsV0FBTztBQUFBLEVBQ1g7QUFFRSxTQUFPO0FBQ1Q7QUN4RUEsU0FBUyxnQkFBZ0IsVUFBVSxRQUFRLFNBQVM7QUFDbEQsTUFBSUEsUUFBTSxTQUFTLFFBQVEsR0FBRztBQUM1QixRQUFJO0FBQ0YsT0FBQyxVQUFVLEtBQUssT0FBTyxRQUFRO0FBQy9CLGFBQU9BLFFBQU0sS0FBSyxRQUFRO0FBQUEsSUFDM0IsU0FBUWxGLElBQUc7QUFDVixVQUFJQSxHQUFFLFNBQVMsZUFBZTtBQUM1QixjQUFNQTtBQUFBLE1BQ2Q7QUFBQSxJQUNBO0FBQUEsRUFDQTtBQUVFLFVBQW1CLEdBQUEsS0FBSyxXQUFXLFFBQVE7QUFDN0M7QUFFQSxNQUFNLFdBQVc7QUFBQSxFQUVmLGNBQWM7QUFBQSxFQUVkLFNBQVMsQ0FBQyxPQUFPLFFBQVEsT0FBTztBQUFBLEVBRWhDLGtCQUFrQixDQUFDLFNBQVMsaUJBQWlCYyxPQUFNLFNBQVM7QUFDMUQsVUFBTSxjQUFjLFFBQVEsZUFBYyxLQUFNO0FBQ2hELFVBQU0scUJBQXFCLFlBQVksUUFBUSxrQkFBa0IsSUFBSTtBQUNyRSxVQUFNLGtCQUFrQm9FLFFBQU0sU0FBU3BFLEtBQUk7QUFFM0MsUUFBSSxtQkFBbUJvRSxRQUFNLFdBQVdwRSxLQUFJLEdBQUc7QUFDN0MsTUFBQUEsUUFBTyxJQUFJLFNBQVNBLEtBQUk7QUFBQSxJQUM5QjtBQUVJLFVBQU02RSxjQUFhVCxRQUFNLFdBQVdwRSxLQUFJO0FBRXhDLFFBQUk2RSxhQUFZO0FBQ2QsYUFBTyxxQkFBcUIsS0FBSyxVQUFVLGVBQWU3RSxLQUFJLENBQUMsSUFBSUE7QUFBQSxJQUN6RTtBQUVJLFFBQUlvRSxRQUFNLGNBQWNwRSxLQUFJLEtBQzFCb0UsUUFBTSxTQUFTcEUsS0FBSSxLQUNuQm9FLFFBQU0sU0FBU3BFLEtBQUksS0FDbkJvRSxRQUFNLE9BQU9wRSxLQUFJLEtBQ2pCb0UsUUFBTSxPQUFPcEUsS0FBSSxLQUNqQm9FLFFBQU0saUJBQWlCcEUsS0FBSSxHQUMzQjtBQUNBLGFBQU9BO0FBQUEsSUFDYjtBQUNJLFFBQUlvRSxRQUFNLGtCQUFrQnBFLEtBQUksR0FBRztBQUNqQyxhQUFPQSxNQUFLO0FBQUEsSUFDbEI7QUFDSSxRQUFJb0UsUUFBTSxrQkFBa0JwRSxLQUFJLEdBQUc7QUFDakMsY0FBUSxlQUFlLG1EQUFtRCxLQUFLO0FBQy9FLGFBQU9BLE1BQUssU0FBVTtBQUFBLElBQzVCO0FBRUksUUFBSThFO0FBRUosUUFBSSxpQkFBaUI7QUFDbkIsVUFBSSxZQUFZLFFBQVEsbUNBQW1DLElBQUksSUFBSTtBQUNqRSxlQUFPLGlCQUFpQjlFLE9BQU0sS0FBSyxjQUFjLEVBQUUsU0FBVTtBQUFBLE1BQ3JFO0FBRU0sV0FBSzhFLGNBQWFWLFFBQU0sV0FBV3BFLEtBQUksTUFBTSxZQUFZLFFBQVEscUJBQXFCLElBQUksSUFBSTtBQUM1RixjQUFNLFlBQVksS0FBSyxPQUFPLEtBQUssSUFBSTtBQUV2QyxlQUFPO0FBQUEsVUFDTDhFLGNBQWEsRUFBQyxXQUFXOUUsTUFBSSxJQUFJQTtBQUFBLFVBQ2pDLGFBQWEsSUFBSSxVQUFXO0FBQUEsVUFDNUIsS0FBSztBQUFBLFFBQ047QUFBQSxNQUNUO0FBQUEsSUFDQTtBQUVJLFFBQUksbUJBQW1CLG9CQUFxQjtBQUMxQyxjQUFRLGVBQWUsb0JBQW9CLEtBQUs7QUFDaEQsYUFBTyxnQkFBZ0JBLEtBQUk7QUFBQSxJQUNqQztBQUVJLFdBQU9BO0FBQUEsRUFDWCxDQUFHO0FBQUEsRUFFRCxtQkFBbUIsQ0FBQyxTQUFTLGtCQUFrQkEsT0FBTTtBQUNuRCxVQUFNK0UsZ0JBQWUsS0FBSyxnQkFBZ0IsU0FBUztBQUNuRCxVQUFNLG9CQUFvQkEsaUJBQWdCQSxjQUFhO0FBQ3ZELFVBQU0sZ0JBQWdCLEtBQUssaUJBQWlCO0FBRTVDLFFBQUlYLFFBQU0sV0FBV3BFLEtBQUksS0FBS29FLFFBQU0saUJBQWlCcEUsS0FBSSxHQUFHO0FBQzFELGFBQU9BO0FBQUEsSUFDYjtBQUVJLFFBQUlBLFNBQVFvRSxRQUFNLFNBQVNwRSxLQUFJLE1BQU8scUJBQXFCLENBQUMsS0FBSyxnQkFBaUIsZ0JBQWdCO0FBQ2hHLFlBQU0sb0JBQW9CK0UsaUJBQWdCQSxjQUFhO0FBQ3ZELFlBQU0sb0JBQW9CLENBQUMscUJBQXFCO0FBRWhELFVBQUk7QUFDRixlQUFPLEtBQUssTUFBTS9FLEtBQUk7QUFBQSxNQUN2QixTQUFRZCxJQUFHO0FBQ1YsWUFBSSxtQkFBbUI7QUFDckIsY0FBSUEsR0FBRSxTQUFTLGVBQWU7QUFDNUIsa0JBQU0sV0FBVyxLQUFLQSxJQUFHLFdBQVcsa0JBQWtCLE1BQU0sTUFBTSxLQUFLLFFBQVE7QUFBQSxVQUMzRjtBQUNVLGdCQUFNQTtBQUFBLFFBQ2hCO0FBQUEsTUFDQTtBQUFBLElBQ0E7QUFFSSxXQUFPYztBQUFBLEVBQ1gsQ0FBRztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNRCxTQUFTO0FBQUEsRUFFVCxnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUVoQixrQkFBa0I7QUFBQSxFQUNsQixlQUFlO0FBQUEsRUFFZixLQUFLO0FBQUEsSUFDSCxVQUFVNEUsV0FBUyxRQUFRO0FBQUEsSUFDM0IsTUFBTUEsV0FBUyxRQUFRO0FBQUEsRUFDeEI7QUFBQSxFQUVELGdCQUFnQixTQUFTLGVBQWUsUUFBUTtBQUM5QyxXQUFPLFVBQVUsT0FBTyxTQUFTO0FBQUEsRUFDbEM7QUFBQSxFQUVELFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxNQUNOLFVBQVU7QUFBQSxNQUNWLGdCQUFnQjtBQUFBLElBQ3RCO0FBQUEsRUFDQTtBQUNBO0FBRUFSLFFBQU0sUUFBUSxDQUFDLFVBQVUsT0FBTyxRQUFRLFFBQVEsT0FBTyxPQUFPLEdBQUcsQ0FBQyxXQUFXO0FBQzNFLFdBQVMsUUFBUSxNQUFNLElBQUksQ0FBRTtBQUMvQixDQUFDO0FDeEpELE1BQU0sb0JBQW9CQSxRQUFNLFlBQVk7QUFBQSxFQUMxQztBQUFBLEVBQU87QUFBQSxFQUFpQjtBQUFBLEVBQWtCO0FBQUEsRUFBZ0I7QUFBQSxFQUMxRDtBQUFBLEVBQVc7QUFBQSxFQUFRO0FBQUEsRUFBUTtBQUFBLEVBQXFCO0FBQUEsRUFDaEQ7QUFBQSxFQUFpQjtBQUFBLEVBQVk7QUFBQSxFQUFnQjtBQUFBLEVBQzdDO0FBQUEsRUFBVztBQUFBLEVBQWU7QUFDNUIsQ0FBQztBQWdCRCxNQUFBLGVBQWUsZ0JBQWM7QUFDM0IsUUFBTSxTQUFTLENBQUU7QUFDakIsTUFBSTtBQUNKLE1BQUk7QUFDSixNQUFJckc7QUFFSixnQkFBYyxXQUFXLE1BQU0sSUFBSSxFQUFFLFFBQVEsU0FBUyxPQUFPaUgsT0FBTTtBQUNqRSxJQUFBakgsS0FBSWlILE1BQUssUUFBUSxHQUFHO0FBQ3BCLFVBQU1BLE1BQUssVUFBVSxHQUFHakgsRUFBQyxFQUFFLEtBQU0sRUFBQyxZQUFhO0FBQy9DLFVBQU1pSCxNQUFLLFVBQVVqSCxLQUFJLENBQUMsRUFBRSxLQUFNO0FBRWxDLFFBQUksQ0FBQyxPQUFRLE9BQU8sR0FBRyxLQUFLLGtCQUFrQixHQUFHLEdBQUk7QUFDbkQ7QUFBQSxJQUNOO0FBRUksUUFBSSxRQUFRLGNBQWM7QUFDeEIsVUFBSSxPQUFPLEdBQUcsR0FBRztBQUNmLGVBQU8sR0FBRyxFQUFFLEtBQUssR0FBRztBQUFBLE1BQzVCLE9BQWE7QUFDTCxlQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUc7QUFBQSxNQUMxQjtBQUFBLElBQ0EsT0FBVztBQUNMLGFBQU8sR0FBRyxJQUFJLE9BQU8sR0FBRyxJQUFJLE9BQU8sR0FBRyxJQUFJLE9BQU8sTUFBTTtBQUFBLElBQzdEO0FBQUEsRUFDQSxDQUFHO0FBRUQsU0FBTztBQUNUO0FDakRBLE1BQU0sYUFBYSxPQUFPLFdBQVc7QUFFckMsU0FBUyxnQkFBZ0IsUUFBUTtBQUMvQixTQUFPLFVBQVUsT0FBTyxNQUFNLEVBQUUsS0FBSSxFQUFHLFlBQWE7QUFDdEQ7QUFFQSxTQUFTLGVBQWUsT0FBTztBQUM3QixNQUFJLFVBQVUsU0FBUyxTQUFTLE1BQU07QUFDcEMsV0FBTztBQUFBLEVBQ1g7QUFFRSxTQUFPcUcsUUFBTSxRQUFRLEtBQUssSUFBSSxNQUFNLElBQUksY0FBYyxJQUFJLE9BQU8sS0FBSztBQUN4RTtBQUVBLFNBQVMsWUFBWSxLQUFLO0FBQ3hCLFFBQU0sU0FBUyx1QkFBTyxPQUFPLElBQUk7QUFDakMsUUFBTSxXQUFXO0FBQ2pCLE1BQUlHO0FBRUosU0FBUUEsU0FBUSxTQUFTLEtBQUssR0FBRyxHQUFJO0FBQ25DLFdBQU9BLE9BQU0sQ0FBQyxDQUFDLElBQUlBLE9BQU0sQ0FBQztBQUFBLEVBQzlCO0FBRUUsU0FBTztBQUNUO0FBRUEsTUFBTSxvQkFBb0IsQ0FBQyxRQUFRLGlDQUFpQyxLQUFLLElBQUksTUFBTTtBQUVuRixTQUFTLGlCQUFpQixTQUFTLE9BQU8sUUFBUWIsU0FBUSxvQkFBb0I7QUFDNUUsTUFBSVUsUUFBTSxXQUFXVixPQUFNLEdBQUc7QUFDNUIsV0FBT0EsUUFBTyxLQUFLLE1BQU0sT0FBTyxNQUFNO0FBQUEsRUFDMUM7QUFFRSxNQUFJLG9CQUFvQjtBQUN0QixZQUFRO0FBQUEsRUFDWjtBQUVFLE1BQUksQ0FBQ1UsUUFBTSxTQUFTLEtBQUssRUFBRztBQUU1QixNQUFJQSxRQUFNLFNBQVNWLE9BQU0sR0FBRztBQUMxQixXQUFPLE1BQU0sUUFBUUEsT0FBTSxNQUFNO0FBQUEsRUFDckM7QUFFRSxNQUFJVSxRQUFNLFNBQVNWLE9BQU0sR0FBRztBQUMxQixXQUFPQSxRQUFPLEtBQUssS0FBSztBQUFBLEVBQzVCO0FBQ0E7QUFFQSxTQUFTLGFBQWEsUUFBUTtBQUM1QixTQUFPLE9BQU8sS0FBSSxFQUNmLFlBQVcsRUFBRyxRQUFRLG1CQUFtQixDQUFDaEQsSUFBR3VFLE9BQU0sUUFBUTtBQUMxRCxXQUFPQSxNQUFLLFlBQVcsSUFBSztBQUFBLEVBQ2xDLENBQUs7QUFDTDtBQUVBLFNBQVMsZUFBZSxLQUFLLFFBQVE7QUFDbkMsUUFBTSxlQUFlYixRQUFNLFlBQVksTUFBTSxNQUFNO0FBRW5ELEdBQUMsT0FBTyxPQUFPLEtBQUssRUFBRSxRQUFRLGdCQUFjO0FBQzFDLFdBQU8sZUFBZSxLQUFLLGFBQWEsY0FBYztBQUFBLE1BQ3BELE9BQU8sU0FBUyxNQUFNLE1BQU0sTUFBTTtBQUNoQyxlQUFPLEtBQUssVUFBVSxFQUFFLEtBQUssTUFBTSxRQUFRLE1BQU0sTUFBTSxJQUFJO0FBQUEsTUFDNUQ7QUFBQSxNQUNELGNBQWM7QUFBQSxJQUNwQixDQUFLO0FBQUEsRUFDTCxDQUFHO0FBQ0g7QUFFQSxNQUFNLGFBQWE7QUFBQSxFQUNqQixZQUFZLFNBQVM7QUFDbkIsZUFBVyxLQUFLLElBQUksT0FBTztBQUFBLEVBQy9CO0FBQUEsRUFFRSxJQUFJLFFBQVEsZ0JBQWdCLFNBQVM7QUFDbkMsVUFBTWMsUUFBTztBQUViLGFBQVMsVUFBVSxRQUFRLFNBQVMsVUFBVTtBQUM1QyxZQUFNLFVBQVUsZ0JBQWdCLE9BQU87QUFFdkMsVUFBSSxDQUFDLFNBQVM7QUFDWixjQUFNLElBQUksTUFBTSx3Q0FBd0M7QUFBQSxNQUNoRTtBQUVNLFlBQU0sTUFBTWQsUUFBTSxRQUFRYyxPQUFNLE9BQU87QUFFdkMsVUFBRyxDQUFDLE9BQU9BLE1BQUssR0FBRyxNQUFNLFVBQWEsYUFBYSxRQUFTLGFBQWEsVUFBYUEsTUFBSyxHQUFHLE1BQU0sT0FBUTtBQUMxRyxRQUFBQSxNQUFLLE9BQU8sT0FBTyxJQUFJLGVBQWUsTUFBTTtBQUFBLE1BQ3BEO0FBQUEsSUFDQTtBQUVJLFVBQU0sYUFBYSxDQUFDLFNBQVMsYUFDM0JkLFFBQU0sUUFBUSxTQUFTLENBQUMsUUFBUSxZQUFZLFVBQVUsUUFBUSxTQUFTLFFBQVEsQ0FBQztBQUVsRixRQUFJQSxRQUFNLGNBQWMsTUFBTSxLQUFLLGtCQUFrQixLQUFLLGFBQWE7QUFDckUsaUJBQVcsUUFBUSxjQUFjO0FBQUEsSUFDbEMsV0FBU0EsUUFBTSxTQUFTLE1BQU0sTUFBTSxTQUFTLE9BQU8sV0FBVyxDQUFDLGtCQUFrQixNQUFNLEdBQUc7QUFDMUYsaUJBQVcsYUFBYSxNQUFNLEdBQUcsY0FBYztBQUFBLElBQ2hELFdBQVVBLFFBQU0sVUFBVSxNQUFNLEdBQUc7QUFDbEMsaUJBQVcsQ0FBQyxLQUFLLEtBQUssS0FBSyxPQUFPLFFBQU8sR0FBSTtBQUMzQyxrQkFBVSxPQUFPLEtBQUssT0FBTztBQUFBLE1BQ3JDO0FBQUEsSUFDQSxPQUFXO0FBQ0wsZ0JBQVUsUUFBUSxVQUFVLGdCQUFnQixRQUFRLE9BQU87QUFBQSxJQUNqRTtBQUVJLFdBQU87QUFBQSxFQUNYO0FBQUEsRUFFRSxJQUFJLFFBQVEsUUFBUTtBQUNsQixhQUFTLGdCQUFnQixNQUFNO0FBRS9CLFFBQUksUUFBUTtBQUNWLFlBQU0sTUFBTUEsUUFBTSxRQUFRLE1BQU0sTUFBTTtBQUV0QyxVQUFJLEtBQUs7QUFDUCxjQUFNLFFBQVEsS0FBSyxHQUFHO0FBRXRCLFlBQUksQ0FBQyxRQUFRO0FBQ1gsaUJBQU87QUFBQSxRQUNqQjtBQUVRLFlBQUksV0FBVyxNQUFNO0FBQ25CLGlCQUFPLFlBQVksS0FBSztBQUFBLFFBQ2xDO0FBRVEsWUFBSUEsUUFBTSxXQUFXLE1BQU0sR0FBRztBQUM1QixpQkFBTyxPQUFPLEtBQUssTUFBTSxPQUFPLEdBQUc7QUFBQSxRQUM3QztBQUVRLFlBQUlBLFFBQU0sU0FBUyxNQUFNLEdBQUc7QUFDMUIsaUJBQU8sT0FBTyxLQUFLLEtBQUs7QUFBQSxRQUNsQztBQUVRLGNBQU0sSUFBSSxVQUFVLHdDQUF3QztBQUFBLE1BQ3BFO0FBQUEsSUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUVFLElBQUksUUFBUSxTQUFTO0FBQ25CLGFBQVMsZ0JBQWdCLE1BQU07QUFFL0IsUUFBSSxRQUFRO0FBQ1YsWUFBTSxNQUFNQSxRQUFNLFFBQVEsTUFBTSxNQUFNO0FBRXRDLGFBQU8sQ0FBQyxFQUFFLE9BQU8sS0FBSyxHQUFHLE1BQU0sV0FBYyxDQUFDLFdBQVcsaUJBQWlCLE1BQU0sS0FBSyxHQUFHLEdBQUcsS0FBSyxPQUFPO0FBQUEsSUFDN0c7QUFFSSxXQUFPO0FBQUEsRUFDWDtBQUFBLEVBRUUsT0FBTyxRQUFRLFNBQVM7QUFDdEIsVUFBTWMsUUFBTztBQUNiLFFBQUksVUFBVTtBQUVkLGFBQVMsYUFBYSxTQUFTO0FBQzdCLGdCQUFVLGdCQUFnQixPQUFPO0FBRWpDLFVBQUksU0FBUztBQUNYLGNBQU0sTUFBTWQsUUFBTSxRQUFRYyxPQUFNLE9BQU87QUFFdkMsWUFBSSxRQUFRLENBQUMsV0FBVyxpQkFBaUJBLE9BQU1BLE1BQUssR0FBRyxHQUFHLEtBQUssT0FBTyxJQUFJO0FBQ3hFLGlCQUFPQSxNQUFLLEdBQUc7QUFFZixvQkFBVTtBQUFBLFFBQ3BCO0FBQUEsTUFDQTtBQUFBLElBQ0E7QUFFSSxRQUFJZCxRQUFNLFFBQVEsTUFBTSxHQUFHO0FBQ3pCLGFBQU8sUUFBUSxZQUFZO0FBQUEsSUFDakMsT0FBVztBQUNMLG1CQUFhLE1BQU07QUFBQSxJQUN6QjtBQUVJLFdBQU87QUFBQSxFQUNYO0FBQUEsRUFFRSxNQUFNLFNBQVM7QUFDYixVQUFNLE9BQU8sT0FBTyxLQUFLLElBQUk7QUFDN0IsUUFBSXJHLEtBQUksS0FBSztBQUNiLFFBQUksVUFBVTtBQUVkLFdBQU9BLE1BQUs7QUFDVixZQUFNLE1BQU0sS0FBS0EsRUFBQztBQUNsQixVQUFHLENBQUMsV0FBVyxpQkFBaUIsTUFBTSxLQUFLLEdBQUcsR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHO0FBQ3BFLGVBQU8sS0FBSyxHQUFHO0FBQ2Ysa0JBQVU7QUFBQSxNQUNsQjtBQUFBLElBQ0E7QUFFSSxXQUFPO0FBQUEsRUFDWDtBQUFBLEVBRUUsVUFBVW9ILFNBQVE7QUFDaEIsVUFBTUQsUUFBTztBQUNiLFVBQU0sVUFBVSxDQUFFO0FBRWxCZCxZQUFNLFFBQVEsTUFBTSxDQUFDLE9BQU8sV0FBVztBQUNyQyxZQUFNLE1BQU1BLFFBQU0sUUFBUSxTQUFTLE1BQU07QUFFekMsVUFBSSxLQUFLO0FBQ1AsUUFBQWMsTUFBSyxHQUFHLElBQUksZUFBZSxLQUFLO0FBQ2hDLGVBQU9BLE1BQUssTUFBTTtBQUNsQjtBQUFBLE1BQ1I7QUFFTSxZQUFNLGFBQWFDLFVBQVMsYUFBYSxNQUFNLElBQUksT0FBTyxNQUFNLEVBQUUsS0FBTTtBQUV4RSxVQUFJLGVBQWUsUUFBUTtBQUN6QixlQUFPRCxNQUFLLE1BQU07QUFBQSxNQUMxQjtBQUVNLE1BQUFBLE1BQUssVUFBVSxJQUFJLGVBQWUsS0FBSztBQUV2QyxjQUFRLFVBQVUsSUFBSTtBQUFBLElBQzVCLENBQUs7QUFFRCxXQUFPO0FBQUEsRUFDWDtBQUFBLEVBRUUsVUFBVSxTQUFTO0FBQ2pCLFdBQU8sS0FBSyxZQUFZLE9BQU8sTUFBTSxHQUFHLE9BQU87QUFBQSxFQUNuRDtBQUFBLEVBRUUsT0FBTyxXQUFXO0FBQ2hCLFVBQU0sTUFBTSx1QkFBTyxPQUFPLElBQUk7QUFFOUJkLFlBQU0sUUFBUSxNQUFNLENBQUMsT0FBTyxXQUFXO0FBQ3JDLGVBQVMsUUFBUSxVQUFVLFVBQVUsSUFBSSxNQUFNLElBQUksYUFBYUEsUUFBTSxRQUFRLEtBQUssSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJO0FBQUEsSUFDaEgsQ0FBSztBQUVELFdBQU87QUFBQSxFQUNYO0FBQUEsRUFFRSxDQUFDLE9BQU8sUUFBUSxJQUFJO0FBQ2xCLFdBQU8sT0FBTyxRQUFRLEtBQUssT0FBTSxDQUFFLEVBQUUsT0FBTyxRQUFRLEVBQUc7QUFBQSxFQUMzRDtBQUFBLEVBRUUsV0FBVztBQUNULFdBQU8sT0FBTyxRQUFRLEtBQUssT0FBUSxDQUFBLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxLQUFLLE1BQU0sU0FBUyxPQUFPLEtBQUssRUFBRSxLQUFLLElBQUk7QUFBQSxFQUNsRztBQUFBLEVBRUUsS0FBSyxPQUFPLFdBQVcsSUFBSTtBQUN6QixXQUFPO0FBQUEsRUFDWDtBQUFBLEVBRUUsT0FBTyxLQUFLLE9BQU87QUFDakIsV0FBTyxpQkFBaUIsT0FBTyxRQUFRLElBQUksS0FBSyxLQUFLO0FBQUEsRUFDekQ7QUFBQSxFQUVFLE9BQU8sT0FBTyxVQUFVLFNBQVM7QUFDL0IsVUFBTSxXQUFXLElBQUksS0FBSyxLQUFLO0FBRS9CLFlBQVEsUUFBUSxDQUFDLFdBQVcsU0FBUyxJQUFJLE1BQU0sQ0FBQztBQUVoRCxXQUFPO0FBQUEsRUFDWDtBQUFBLEVBRUUsT0FBTyxTQUFTLFFBQVE7QUFDdEIsVUFBTSxZQUFZLEtBQUssVUFBVSxJQUFLLEtBQUssVUFBVSxJQUFJO0FBQUEsTUFDdkQsV0FBVyxDQUFBO0FBQUEsSUFDakI7QUFFSSxVQUFNLFlBQVksVUFBVTtBQUM1QixVQUFNM0YsYUFBWSxLQUFLO0FBRXZCLGFBQVMsZUFBZSxTQUFTO0FBQy9CLFlBQU0sVUFBVSxnQkFBZ0IsT0FBTztBQUV2QyxVQUFJLENBQUMsVUFBVSxPQUFPLEdBQUc7QUFDdkIsdUJBQWVBLFlBQVcsT0FBTztBQUNqQyxrQkFBVSxPQUFPLElBQUk7QUFBQSxNQUM3QjtBQUFBLElBQ0E7QUFFSTJGLFlBQU0sUUFBUSxNQUFNLElBQUksT0FBTyxRQUFRLGNBQWMsSUFBSSxlQUFlLE1BQU07QUFFOUUsV0FBTztBQUFBLEVBQ1g7QUFDQTtBQUVBLGFBQWEsU0FBUyxDQUFDLGdCQUFnQixrQkFBa0IsVUFBVSxtQkFBbUIsY0FBYyxlQUFlLENBQUM7QUFHcEhBLFFBQU0sa0JBQWtCLGFBQWEsV0FBVyxDQUFDLEVBQUMsTUFBSyxHQUFHLFFBQVE7QUFDaEUsTUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFLFlBQVcsSUFBSyxJQUFJLE1BQU0sQ0FBQztBQUMvQyxTQUFPO0FBQUEsSUFDTCxLQUFLLE1BQU07QUFBQSxJQUNYLElBQUksYUFBYTtBQUNmLFdBQUssTUFBTSxJQUFJO0FBQUEsSUFDckI7QUFBQSxFQUNBO0FBQ0EsQ0FBQztBQUVEQSxRQUFNLGNBQWMsWUFBWTtBQzdSakIsU0FBUyxjQUFjLEtBQUssVUFBVTtBQUNuRCxRQUFNRCxVQUFTLFFBQVE7QUFDdkIsUUFBTSxVQUFVLFlBQVlBO0FBQzVCLFFBQU0sVUFBVSxhQUFhLEtBQUssUUFBUSxPQUFPO0FBQ2pELE1BQUluRSxRQUFPLFFBQVE7QUFFbkJvRSxVQUFNLFFBQVEsS0FBSyxTQUFTZ0IsV0FBVSxJQUFJO0FBQ3hDLElBQUFwRixRQUFPLEdBQUcsS0FBS21FLFNBQVFuRSxPQUFNLFFBQVEsVUFBUyxHQUFJLFdBQVcsU0FBUyxTQUFTLE1BQVM7QUFBQSxFQUM1RixDQUFHO0FBRUQsVUFBUSxVQUFXO0FBRW5CLFNBQU9BO0FBQ1Q7QUN6QmUsU0FBUyxTQUFTLE9BQU87QUFDdEMsU0FBTyxDQUFDLEVBQUUsU0FBUyxNQUFNO0FBQzNCO0FDVUEsU0FBUyxjQUFjLFNBQVNtRSxTQUFRLFNBQVM7QUFFL0MsYUFBVyxLQUFLLE1BQU0sV0FBVyxPQUFPLGFBQWEsU0FBUyxXQUFXLGNBQWNBLFNBQVEsT0FBTztBQUN0RyxPQUFLLE9BQU87QUFDZDtBQUVBQyxRQUFNLFNBQVMsZUFBZSxZQUFZO0FBQUEsRUFDeEMsWUFBWTtBQUNkLENBQUM7QUNUYyxTQUFTLE9BQU8sU0FBUyxRQUFRLFVBQVU7QUFDeEQsUUFBTWlCLGtCQUFpQixTQUFTLE9BQU87QUFDdkMsTUFBSSxDQUFDLFNBQVMsVUFBVSxDQUFDQSxtQkFBa0JBLGdCQUFlLFNBQVMsTUFBTSxHQUFHO0FBQzFFLFlBQVEsUUFBUTtBQUFBLEVBQ3BCLE9BQVM7QUFDTCxXQUFPLElBQUk7QUFBQSxNQUNULHFDQUFxQyxTQUFTO0FBQUEsTUFDOUMsQ0FBQyxXQUFXLGlCQUFpQixXQUFXLGdCQUFnQixFQUFFLEtBQUssTUFBTSxTQUFTLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFBQSxNQUMvRixTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVDtBQUFBLElBQ04sQ0FBSztBQUFBLEVBQ0w7QUFDQTtBQ3hCZSxTQUFTLGNBQWMsS0FBSztBQUN6QyxRQUFNZCxTQUFRLDRCQUE0QixLQUFLLEdBQUc7QUFDbEQsU0FBT0EsVUFBU0EsT0FBTSxDQUFDLEtBQUs7QUFDOUI7QUNHQSxTQUFTLFlBQVksY0FBY2UsTUFBSztBQUN0QyxpQkFBZSxnQkFBZ0I7QUFDL0IsUUFBTSxRQUFRLElBQUksTUFBTSxZQUFZO0FBQ3BDLFFBQU0sYUFBYSxJQUFJLE1BQU0sWUFBWTtBQUN6QyxNQUFJLE9BQU87QUFDWCxNQUFJLE9BQU87QUFDWCxNQUFJO0FBRUosRUFBQUEsT0FBTUEsU0FBUSxTQUFZQSxPQUFNO0FBRWhDLFNBQU8sU0FBUyxLQUFLLGFBQWE7QUFDaEMsVUFBTSxNQUFNLEtBQUssSUFBSztBQUV0QixVQUFNLFlBQVksV0FBVyxJQUFJO0FBRWpDLFFBQUksQ0FBQyxlQUFlO0FBQ2xCLHNCQUFnQjtBQUFBLElBQ3RCO0FBRUksVUFBTSxJQUFJLElBQUk7QUFDZCxlQUFXLElBQUksSUFBSTtBQUVuQixRQUFJdkgsS0FBSTtBQUNSLFFBQUksYUFBYTtBQUVqQixXQUFPQSxPQUFNLE1BQU07QUFDakIsb0JBQWMsTUFBTUEsSUFBRztBQUN2QixNQUFBQSxLQUFJQSxLQUFJO0FBQUEsSUFDZDtBQUVJLFlBQVEsT0FBTyxLQUFLO0FBRXBCLFFBQUksU0FBUyxNQUFNO0FBQ2pCLGNBQVEsT0FBTyxLQUFLO0FBQUEsSUFDMUI7QUFFSSxRQUFJLE1BQU0sZ0JBQWdCdUgsTUFBSztBQUM3QjtBQUFBLElBQ047QUFFSSxVQUFNLFNBQVMsYUFBYSxNQUFNO0FBRWxDLFdBQU8sU0FBUyxLQUFLLE1BQU0sYUFBYSxNQUFPLE1BQU0sSUFBSTtBQUFBLEVBQzFEO0FBQ0g7QUM5Q0EsU0FBUyxTQUFTLElBQUksTUFBTTtBQUMxQixNQUFJLFlBQVk7QUFDaEIsTUFBSSxZQUFZLE1BQU87QUFDdkIsTUFBSTtBQUNKLE1BQUk7QUFFSixRQUFNLFNBQVMsQ0FBQyxNQUFNLE1BQU0sS0FBSyxJQUFHLE1BQU87QUFDekMsZ0JBQVk7QUFDWixlQUFXO0FBQ1gsUUFBSSxPQUFPO0FBQ1QsbUJBQWEsS0FBSztBQUNsQixjQUFRO0FBQUEsSUFDZDtBQUNJLE9BQUcsTUFBTSxNQUFNLElBQUk7QUFBQSxFQUN2QjtBQUVFLFFBQU0sWUFBWSxJQUFJLFNBQVM7QUFDN0IsVUFBTSxNQUFNLEtBQUssSUFBSztBQUN0QixVQUFNLFNBQVMsTUFBTTtBQUNyQixRQUFLLFVBQVUsV0FBVztBQUN4QixhQUFPLE1BQU0sR0FBRztBQUFBLElBQ3RCLE9BQVc7QUFDTCxpQkFBVztBQUNYLFVBQUksQ0FBQyxPQUFPO0FBQ1YsZ0JBQVEsV0FBVyxNQUFNO0FBQ3ZCLGtCQUFRO0FBQ1IsaUJBQU8sUUFBUTtBQUFBLFFBQ3pCLEdBQVcsWUFBWSxNQUFNO0FBQUEsTUFDN0I7QUFBQSxJQUNBO0FBQUEsRUFDQTtBQUVFLFFBQU0sUUFBUSxNQUFNLFlBQVksT0FBTyxRQUFRO0FBRS9DLFNBQU8sQ0FBQyxXQUFXLEtBQUs7QUFDMUI7QUNyQ08sTUFBTSx1QkFBdUIsQ0FBQyxVQUFVLGtCQUFrQixPQUFPLE1BQU07QUFDNUUsTUFBSSxnQkFBZ0I7QUFDcEIsUUFBTSxlQUFlLFlBQVksSUFBSSxHQUFHO0FBRXhDLFNBQU8sU0FBUyxDQUFBcEcsT0FBSztBQUNuQixVQUFNLFNBQVNBLEdBQUU7QUFDakIsVUFBTSxRQUFRQSxHQUFFLG1CQUFtQkEsR0FBRSxRQUFRO0FBQzdDLFVBQU0sZ0JBQWdCLFNBQVM7QUFDL0IsVUFBTSxPQUFPLGFBQWEsYUFBYTtBQUN2QyxVQUFNLFVBQVUsVUFBVTtBQUUxQixvQkFBZ0I7QUFFaEIsVUFBTWMsUUFBTztBQUFBLE1BQ1g7QUFBQSxNQUNBO0FBQUEsTUFDQSxVQUFVLFFBQVMsU0FBUyxRQUFTO0FBQUEsTUFDckMsT0FBTztBQUFBLE1BQ1AsTUFBTSxPQUFPLE9BQU87QUFBQSxNQUNwQixXQUFXLFFBQVEsU0FBUyxXQUFXLFFBQVEsVUFBVSxPQUFPO0FBQUEsTUFDaEUsT0FBT2Q7QUFBQSxNQUNQLGtCQUFrQixTQUFTO0FBQUEsTUFDM0IsQ0FBQyxtQkFBbUIsYUFBYSxRQUFRLEdBQUc7QUFBQSxJQUM3QztBQUVELGFBQVNjLEtBQUk7QUFBQSxFQUNkLEdBQUUsSUFBSTtBQUNUO0FBRU8sTUFBTSx5QkFBeUIsQ0FBQyxPQUFPLGNBQWM7QUFDMUQsUUFBTSxtQkFBbUIsU0FBUztBQUVsQyxTQUFPLENBQUMsQ0FBQyxXQUFXLFVBQVUsQ0FBQyxFQUFFO0FBQUEsSUFDL0I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0osQ0FBRyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQ2xCO0FBRU8sTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLElBQUksU0FBU29FLFFBQU0sS0FBSyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUM7QUN6Qy9FLE1BQUEsa0JBQWVRLFdBQVMsd0JBQXlCLGtCQUFDVyxTQUFRLFdBQVcsQ0FBQyxRQUFRO0FBQzVFLFFBQU0sSUFBSSxJQUFJLEtBQUtYLFdBQVMsTUFBTTtBQUVsQyxTQUNFVyxRQUFPLGFBQWEsSUFBSSxZQUN4QkEsUUFBTyxTQUFTLElBQUksU0FDbkIsVUFBVUEsUUFBTyxTQUFTLElBQUk7QUFFbkM7QUFBQSxFQUNFLElBQUksSUFBSVgsV0FBUyxNQUFNO0FBQUEsRUFDdkJBLFdBQVMsYUFBYSxrQkFBa0IsS0FBS0EsV0FBUyxVQUFVLFNBQVM7QUFDM0UsSUFBSSxNQUFNO0FDVlYsTUFBZUEsVUFBQUEsV0FBUztBQUFBO0FBQUEsRUFHdEI7QUFBQSxJQUNFLE1BQU0sTUFBTSxPQUFPLFNBQVMsTUFBTSxRQUFRLFFBQVE7QUFDaEQsWUFBTSxTQUFTLENBQUMsT0FBTyxNQUFNLG1CQUFtQixLQUFLLENBQUM7QUFFdERSLGNBQU0sU0FBUyxPQUFPLEtBQUssT0FBTyxLQUFLLGFBQWEsSUFBSSxLQUFLLE9BQU8sRUFBRSxZQUFXLENBQUU7QUFFbkZBLGNBQU0sU0FBUyxJQUFJLEtBQUssT0FBTyxLQUFLLFVBQVUsSUFBSTtBQUVsREEsY0FBTSxTQUFTLE1BQU0sS0FBSyxPQUFPLEtBQUssWUFBWSxNQUFNO0FBRXhELGlCQUFXLFFBQVEsT0FBTyxLQUFLLFFBQVE7QUFFdkMsZUFBUyxTQUFTLE9BQU8sS0FBSyxJQUFJO0FBQUEsSUFDbkM7QUFBQSxJQUVELEtBQUssTUFBTTtBQUNULFlBQU1HLFNBQVEsU0FBUyxPQUFPLE1BQU0sSUFBSSxPQUFPLGVBQWUsT0FBTyxXQUFXLENBQUM7QUFDakYsYUFBUUEsU0FBUSxtQkFBbUJBLE9BQU0sQ0FBQyxDQUFDLElBQUk7QUFBQSxJQUNoRDtBQUFBLElBRUQsT0FBTyxNQUFNO0FBQ1gsV0FBSyxNQUFNLE1BQU0sSUFBSSxLQUFLLElBQUssSUFBRyxLQUFRO0FBQUEsSUFDaEQ7QUFBQSxFQUNBO0FBQUE7QUFBQTtBQUFBLEVBS0U7QUFBQSxJQUNFLFFBQVE7QUFBQSxJQUFFO0FBQUEsSUFDVixPQUFPO0FBQ0wsYUFBTztBQUFBLElBQ1I7QUFBQSxJQUNELFNBQVM7QUFBQSxJQUFBO0FBQUEsRUFDVjtBQUFBO0FDL0JZLFNBQVMsY0FBYyxLQUFLO0FBSXpDLFNBQU8sOEJBQThCLEtBQUssR0FBRztBQUMvQztBQ0plLFNBQVMsWUFBWSxTQUFTLGFBQWE7QUFDeEQsU0FBTyxjQUNILFFBQVEsUUFBUSxVQUFVLEVBQUUsSUFBSSxNQUFNLFlBQVksUUFBUSxRQUFRLEVBQUUsSUFDcEU7QUFDTjtBQ0NlLFNBQVMsY0FBYyxTQUFTLGNBQWM7QUFDM0QsTUFBSSxXQUFXLENBQUMsY0FBYyxZQUFZLEdBQUc7QUFDM0MsV0FBTyxZQUFZLFNBQVMsWUFBWTtBQUFBLEVBQzVDO0FBQ0UsU0FBTztBQUNUO0FDZkEsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLGlCQUFpQixlQUFlLEVBQUUsR0FBRyxNQUFLLElBQUs7QUFXbkUsU0FBUyxZQUFZLFNBQVMsU0FBUztBQUVwRCxZQUFVLFdBQVcsQ0FBRTtBQUN2QixRQUFNSixVQUFTLENBQUU7QUFFakIsV0FBUyxlQUFlLFFBQVEsUUFBUSxNQUFNLFVBQVU7QUFDdEQsUUFBSUMsUUFBTSxjQUFjLE1BQU0sS0FBS0EsUUFBTSxjQUFjLE1BQU0sR0FBRztBQUM5RCxhQUFPQSxRQUFNLE1BQU0sS0FBSyxFQUFDLFNBQVEsR0FBRyxRQUFRLE1BQU07QUFBQSxJQUNuRCxXQUFVQSxRQUFNLGNBQWMsTUFBTSxHQUFHO0FBQ3RDLGFBQU9BLFFBQU0sTUFBTSxDQUFFLEdBQUUsTUFBTTtBQUFBLElBQzlCLFdBQVVBLFFBQU0sUUFBUSxNQUFNLEdBQUc7QUFDaEMsYUFBTyxPQUFPLE1BQU87QUFBQSxJQUMzQjtBQUNJLFdBQU87QUFBQSxFQUNYO0FBR0UsV0FBUyxvQkFBb0J2RCxJQUFHSyxJQUFHLE1BQU8sVUFBVTtBQUNsRCxRQUFJLENBQUNrRCxRQUFNLFlBQVlsRCxFQUFDLEdBQUc7QUFDekIsYUFBTyxlQUFlTCxJQUFHSyxJQUFHLE1BQU8sUUFBUTtBQUFBLElBQzVDLFdBQVUsQ0FBQ2tELFFBQU0sWUFBWXZELEVBQUMsR0FBRztBQUNoQyxhQUFPLGVBQWUsUUFBV0EsSUFBRyxNQUFPLFFBQVE7QUFBQSxJQUN6RDtBQUFBLEVBQ0E7QUFHRSxXQUFTLGlCQUFpQkEsSUFBR0ssSUFBRztBQUM5QixRQUFJLENBQUNrRCxRQUFNLFlBQVlsRCxFQUFDLEdBQUc7QUFDekIsYUFBTyxlQUFlLFFBQVdBLEVBQUM7QUFBQSxJQUN4QztBQUFBLEVBQ0E7QUFHRSxXQUFTLGlCQUFpQkwsSUFBR0ssSUFBRztBQUM5QixRQUFJLENBQUNrRCxRQUFNLFlBQVlsRCxFQUFDLEdBQUc7QUFDekIsYUFBTyxlQUFlLFFBQVdBLEVBQUM7QUFBQSxJQUNuQyxXQUFVLENBQUNrRCxRQUFNLFlBQVl2RCxFQUFDLEdBQUc7QUFDaEMsYUFBTyxlQUFlLFFBQVdBLEVBQUM7QUFBQSxJQUN4QztBQUFBLEVBQ0E7QUFHRSxXQUFTLGdCQUFnQkEsSUFBR0ssSUFBRyxNQUFNO0FBQ25DLFFBQUksUUFBUSxTQUFTO0FBQ25CLGFBQU8sZUFBZUwsSUFBR0ssRUFBQztBQUFBLElBQ2hDLFdBQWUsUUFBUSxTQUFTO0FBQzFCLGFBQU8sZUFBZSxRQUFXTCxFQUFDO0FBQUEsSUFDeEM7QUFBQSxFQUNBO0FBRUUsUUFBTSxXQUFXO0FBQUEsSUFDZixLQUFLO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsSUFDVCxrQkFBa0I7QUFBQSxJQUNsQixtQkFBbUI7QUFBQSxJQUNuQixrQkFBa0I7QUFBQSxJQUNsQixTQUFTO0FBQUEsSUFDVCxnQkFBZ0I7QUFBQSxJQUNoQixpQkFBaUI7QUFBQSxJQUNqQixlQUFlO0FBQUEsSUFDZixTQUFTO0FBQUEsSUFDVCxjQUFjO0FBQUEsSUFDZCxnQkFBZ0I7QUFBQSxJQUNoQixnQkFBZ0I7QUFBQSxJQUNoQixrQkFBa0I7QUFBQSxJQUNsQixvQkFBb0I7QUFBQSxJQUNwQixZQUFZO0FBQUEsSUFDWixrQkFBa0I7QUFBQSxJQUNsQixlQUFlO0FBQUEsSUFDZixnQkFBZ0I7QUFBQSxJQUNoQixXQUFXO0FBQUEsSUFDWCxXQUFXO0FBQUEsSUFDWCxZQUFZO0FBQUEsSUFDWixhQUFhO0FBQUEsSUFDYixZQUFZO0FBQUEsSUFDWixrQkFBa0I7QUFBQSxJQUNsQixnQkFBZ0I7QUFBQSxJQUNoQixTQUFTLENBQUNBLElBQUdLLElBQUksU0FBUyxvQkFBb0IsZ0JBQWdCTCxFQUFDLEdBQUcsZ0JBQWdCSyxFQUFDLEdBQUUsTUFBTSxJQUFJO0FBQUEsRUFDaEc7QUFFRGtELFVBQU0sUUFBUSxPQUFPLEtBQUssT0FBTyxPQUFPLElBQUksU0FBUyxPQUFPLENBQUMsR0FBRyxTQUFTLG1CQUFtQixNQUFNO0FBQ2hHLFVBQU1iLFNBQVEsU0FBUyxJQUFJLEtBQUs7QUFDaEMsVUFBTSxjQUFjQSxPQUFNLFFBQVEsSUFBSSxHQUFHLFFBQVEsSUFBSSxHQUFHLElBQUk7QUFDNUQsSUFBQ2EsUUFBTSxZQUFZLFdBQVcsS0FBS2IsV0FBVSxvQkFBcUJZLFFBQU8sSUFBSSxJQUFJO0FBQUEsRUFDckYsQ0FBRztBQUVELFNBQU9BO0FBQ1Q7QUNoR0EsTUFBZSxnQkFBQSxDQUFDQSxZQUFXO0FBQ3pCLFFBQU0sWUFBWSxZQUFZLENBQUUsR0FBRUEsT0FBTTtBQUV4QyxNQUFJLEVBQUMsTUFBQW5FLE9BQU0sZUFBZSxnQkFBZ0IsZ0JBQWdCLFNBQVMsS0FBSSxJQUFJO0FBRTNFLFlBQVUsVUFBVSxVQUFVLGFBQWEsS0FBSyxPQUFPO0FBRXZELFlBQVUsTUFBTSxTQUFTLGNBQWMsVUFBVSxTQUFTLFVBQVUsR0FBRyxHQUFHbUUsUUFBTyxRQUFRQSxRQUFPLGdCQUFnQjtBQUdoSCxNQUFJLE1BQU07QUFDUixZQUFRO0FBQUEsTUFBSTtBQUFBLE1BQWlCLFdBQzNCLE1BQU0sS0FBSyxZQUFZLE1BQU0sT0FBTyxLQUFLLFdBQVcsU0FBUyxtQkFBbUIsS0FBSyxRQUFRLENBQUMsSUFBSSxHQUFHO0FBQUEsSUFDdEc7QUFBQSxFQUNMO0FBRUUsTUFBSTtBQUVKLE1BQUlDLFFBQU0sV0FBV3BFLEtBQUksR0FBRztBQUMxQixRQUFJNEUsV0FBUyx5QkFBeUJBLFdBQVMsZ0NBQWdDO0FBQzdFLGNBQVEsZUFBZSxNQUFTO0FBQUEsSUFDakMsWUFBVyxjQUFjLFFBQVEsZUFBYyxPQUFRLE9BQU87QUFFN0QsWUFBTSxDQUFDOUIsT0FBTSxHQUFHLE1BQU0sSUFBSSxjQUFjLFlBQVksTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFBb0IsV0FBU0EsT0FBTSxLQUFJLENBQUUsRUFBRSxPQUFPLE9BQU8sSUFBSSxDQUFFO0FBQzlHLGNBQVEsZUFBZSxDQUFDcEIsU0FBUSx1QkFBdUIsR0FBRyxNQUFNLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFBQSxJQUNsRjtBQUFBLEVBQ0E7QUFNRSxNQUFJOEIsV0FBUyx1QkFBdUI7QUFDbEMscUJBQWlCUixRQUFNLFdBQVcsYUFBYSxNQUFNLGdCQUFnQixjQUFjLFNBQVM7QUFFNUYsUUFBSSxpQkFBa0Isa0JBQWtCLFNBQVMsZ0JBQWdCLFVBQVUsR0FBRyxHQUFJO0FBRWhGLFlBQU0sWUFBWSxrQkFBa0Isa0JBQWtCLFFBQVEsS0FBSyxjQUFjO0FBRWpGLFVBQUksV0FBVztBQUNiLGdCQUFRLElBQUksZ0JBQWdCLFNBQVM7QUFBQSxNQUM3QztBQUFBLElBQ0E7QUFBQSxFQUNBO0FBRUUsU0FBTztBQUNUO0FDNUNBLE1BQU0sd0JBQXdCLE9BQU8sbUJBQW1CO0FBRXhELE1BQUEsYUFBZSx5QkFBeUIsU0FBVUQsU0FBUTtBQUN4RCxTQUFPLElBQUksUUFBUSxTQUFTLG1CQUFtQixTQUFTLFFBQVE7QUFDOUQsVUFBTSxVQUFVLGNBQWNBLE9BQU07QUFDcEMsUUFBSSxjQUFjLFFBQVE7QUFDMUIsVUFBTSxpQkFBaUIsYUFBYSxLQUFLLFFBQVEsT0FBTyxFQUFFLFVBQVc7QUFDckUsUUFBSSxFQUFDLGNBQWMsa0JBQWtCLG1CQUFrQixJQUFJO0FBQzNELFFBQUk7QUFDSixRQUFJLGlCQUFpQjtBQUNyQixRQUFJLGFBQWE7QUFFakIsYUFBUyxPQUFPO0FBQ2QscUJBQWUsWUFBVztBQUMxQix1QkFBaUIsY0FBYTtBQUU5QixjQUFRLGVBQWUsUUFBUSxZQUFZLFlBQVksVUFBVTtBQUVqRSxjQUFRLFVBQVUsUUFBUSxPQUFPLG9CQUFvQixTQUFTLFVBQVU7QUFBQSxJQUM5RTtBQUVJLFFBQUksVUFBVSxJQUFJLGVBQWdCO0FBRWxDLFlBQVEsS0FBSyxRQUFRLE9BQU8sWUFBVyxHQUFJLFFBQVEsS0FBSyxJQUFJO0FBRzVELFlBQVEsVUFBVSxRQUFRO0FBRTFCLGFBQVMsWUFBWTtBQUNuQixVQUFJLENBQUMsU0FBUztBQUNaO0FBQUEsTUFDUjtBQUVNLFlBQU0sa0JBQWtCLGFBQWE7QUFBQSxRQUNuQywyQkFBMkIsV0FBVyxRQUFRLHNCQUFxQjtBQUFBLE1BQ3BFO0FBQ0QsWUFBTSxlQUFlLENBQUMsZ0JBQWdCLGlCQUFpQixVQUFVLGlCQUFpQixTQUNoRixRQUFRLGVBQWUsUUFBUTtBQUNqQyxZQUFNLFdBQVc7QUFBQSxRQUNmLE1BQU07QUFBQSxRQUNOLFFBQVEsUUFBUTtBQUFBLFFBQ2hCLFlBQVksUUFBUTtBQUFBLFFBQ3BCLFNBQVM7QUFBQSxRQUNULFFBQUFBO0FBQUEsUUFDQTtBQUFBLE1BQ0Q7QUFFRCxhQUFPLFNBQVMsU0FBUyxPQUFPO0FBQzlCLGdCQUFRLEtBQUs7QUFDYixhQUFNO0FBQUEsTUFDZCxHQUFTLFNBQVMsUUFBUSxLQUFLO0FBQ3ZCLGVBQU8sR0FBRztBQUNWLGFBQU07QUFBQSxNQUNQLEdBQUUsUUFBUTtBQUdYLGdCQUFVO0FBQUEsSUFDaEI7QUFFSSxRQUFJLGVBQWUsU0FBUztBQUUxQixjQUFRLFlBQVk7QUFBQSxJQUMxQixPQUFXO0FBRUwsY0FBUSxxQkFBcUIsU0FBUyxhQUFhO0FBQ2pELFlBQUksQ0FBQyxXQUFXLFFBQVEsZUFBZSxHQUFHO0FBQ3hDO0FBQUEsUUFDVjtBQU1RLFlBQUksUUFBUSxXQUFXLEtBQUssRUFBRSxRQUFRLGVBQWUsUUFBUSxZQUFZLFFBQVEsT0FBTyxNQUFNLElBQUk7QUFDaEc7QUFBQSxRQUNWO0FBR1EsbUJBQVcsU0FBUztBQUFBLE1BQ3JCO0FBQUEsSUFDUDtBQUdJLFlBQVEsVUFBVSxTQUFTLGNBQWM7QUFDdkMsVUFBSSxDQUFDLFNBQVM7QUFDWjtBQUFBLE1BQ1I7QUFFTSxhQUFPLElBQUksV0FBVyxtQkFBbUIsV0FBVyxjQUFjQSxTQUFRLE9BQU8sQ0FBQztBQUdsRixnQkFBVTtBQUFBLElBQ1g7QUFHRCxZQUFRLFVBQVUsU0FBUyxjQUFjO0FBR3ZDLGFBQU8sSUFBSSxXQUFXLGlCQUFpQixXQUFXLGFBQWFBLFNBQVEsT0FBTyxDQUFDO0FBRy9FLGdCQUFVO0FBQUEsSUFDWDtBQUdELFlBQVEsWUFBWSxTQUFTLGdCQUFnQjtBQUMzQyxVQUFJLHNCQUFzQixRQUFRLFVBQVUsZ0JBQWdCLFFBQVEsVUFBVSxnQkFBZ0I7QUFDOUYsWUFBTVksZ0JBQWUsUUFBUSxnQkFBZ0I7QUFDN0MsVUFBSSxRQUFRLHFCQUFxQjtBQUMvQiw4QkFBc0IsUUFBUTtBQUFBLE1BQ3RDO0FBQ00sYUFBTyxJQUFJO0FBQUEsUUFDVDtBQUFBLFFBQ0FBLGNBQWEsc0JBQXNCLFdBQVcsWUFBWSxXQUFXO0FBQUEsUUFDckVaO0FBQUEsUUFDQTtBQUFBLE1BQU8sQ0FBQztBQUdWLGdCQUFVO0FBQUEsSUFDWDtBQUdELG9CQUFnQixVQUFhLGVBQWUsZUFBZSxJQUFJO0FBRy9ELFFBQUksc0JBQXNCLFNBQVM7QUFDakNDLGNBQU0sUUFBUSxlQUFlLE9BQVEsR0FBRSxTQUFTLGlCQUFpQixLQUFLLEtBQUs7QUFDekUsZ0JBQVEsaUJBQWlCLEtBQUssR0FBRztBQUFBLE1BQ3pDLENBQU87QUFBQSxJQUNQO0FBR0ksUUFBSSxDQUFDQSxRQUFNLFlBQVksUUFBUSxlQUFlLEdBQUc7QUFDL0MsY0FBUSxrQkFBa0IsQ0FBQyxDQUFDLFFBQVE7QUFBQSxJQUMxQztBQUdJLFFBQUksZ0JBQWdCLGlCQUFpQixRQUFRO0FBQzNDLGNBQVEsZUFBZSxRQUFRO0FBQUEsSUFDckM7QUFHSSxRQUFJLG9CQUFvQjtBQUN0QixNQUFDLENBQUMsbUJBQW1CLGFBQWEsSUFBSSxxQkFBcUIsb0JBQW9CLElBQUk7QUFDbkYsY0FBUSxpQkFBaUIsWUFBWSxpQkFBaUI7QUFBQSxJQUM1RDtBQUdJLFFBQUksb0JBQW9CLFFBQVEsUUFBUTtBQUN0QyxNQUFDLENBQUMsaUJBQWlCLFdBQVcsSUFBSSxxQkFBcUIsZ0JBQWdCO0FBRXZFLGNBQVEsT0FBTyxpQkFBaUIsWUFBWSxlQUFlO0FBRTNELGNBQVEsT0FBTyxpQkFBaUIsV0FBVyxXQUFXO0FBQUEsSUFDNUQ7QUFFSSxRQUFJLFFBQVEsZUFBZSxRQUFRLFFBQVE7QUFHekMsbUJBQWEsWUFBVTtBQUNyQixZQUFJLENBQUMsU0FBUztBQUNaO0FBQUEsUUFDVjtBQUNRLGVBQU8sQ0FBQyxVQUFVLE9BQU8sT0FBTyxJQUFJLGNBQWMsTUFBTUQsU0FBUSxPQUFPLElBQUksTUFBTTtBQUNqRixnQkFBUSxNQUFPO0FBQ2Ysa0JBQVU7QUFBQSxNQUNYO0FBRUQsY0FBUSxlQUFlLFFBQVEsWUFBWSxVQUFVLFVBQVU7QUFDL0QsVUFBSSxRQUFRLFFBQVE7QUFDbEIsZ0JBQVEsT0FBTyxVQUFVLFdBQVksSUFBRyxRQUFRLE9BQU8saUJBQWlCLFNBQVMsVUFBVTtBQUFBLE1BQ25HO0FBQUEsSUFDQTtBQUVJLFVBQU0sV0FBVyxjQUFjLFFBQVEsR0FBRztBQUUxQyxRQUFJLFlBQVlTLFdBQVMsVUFBVSxRQUFRLFFBQVEsTUFBTSxJQUFJO0FBQzNELGFBQU8sSUFBSSxXQUFXLDBCQUEwQixXQUFXLEtBQUssV0FBVyxpQkFBaUJULE9BQU0sQ0FBQztBQUNuRztBQUFBLElBQ047QUFJSSxZQUFRLEtBQUssZUFBZSxJQUFJO0FBQUEsRUFDcEMsQ0FBRztBQUNIO0FDaE1BLE1BQU0saUJBQWlCLENBQUMsU0FBUyxZQUFZO0FBQzNDLFFBQU0sRUFBQyxRQUFBRixRQUFNLElBQUssVUFBVSxVQUFVLFFBQVEsT0FBTyxPQUFPLElBQUk7QUFFaEUsTUFBSSxXQUFXQSxTQUFRO0FBQ3JCLFFBQUksYUFBYSxJQUFJLGdCQUFpQjtBQUV0QyxRQUFJO0FBRUosVUFBTSxVQUFVLFNBQVUsUUFBUTtBQUNoQyxVQUFJLENBQUMsU0FBUztBQUNaLGtCQUFVO0FBQ1Ysb0JBQWE7QUFDYixjQUFNLE1BQU0sa0JBQWtCLFFBQVEsU0FBUyxLQUFLO0FBQ3BELG1CQUFXLE1BQU0sZUFBZSxhQUFhLE1BQU0sSUFBSSxjQUFjLGVBQWUsUUFBUSxJQUFJLFVBQVUsR0FBRyxDQUFDO0FBQUEsTUFDdEg7QUFBQSxJQUNBO0FBRUksUUFBSSxRQUFRLFdBQVcsV0FBVyxNQUFNO0FBQ3RDLGNBQVE7QUFDUixjQUFRLElBQUksV0FBVyxXQUFXLE9BQU8sbUJBQW1CLFdBQVcsU0FBUyxDQUFDO0FBQUEsSUFDdkYsR0FBTyxPQUFPO0FBRVYsVUFBTSxjQUFjLE1BQU07QUFDeEIsVUFBSSxTQUFTO0FBQ1gsaUJBQVMsYUFBYSxLQUFLO0FBQzNCLGdCQUFRO0FBQ1IsZ0JBQVEsUUFBUSxDQUFBdUIsWUFBVTtBQUN4QixVQUFBQSxRQUFPLGNBQWNBLFFBQU8sWUFBWSxPQUFPLElBQUlBLFFBQU8sb0JBQW9CLFNBQVMsT0FBTztBQUFBLFFBQ3hHLENBQVM7QUFDRCxrQkFBVTtBQUFBLE1BQ2xCO0FBQUEsSUFDQTtBQUVJLFlBQVEsUUFBUSxDQUFDQSxZQUFXQSxRQUFPLGlCQUFpQixTQUFTLE9BQU8sQ0FBQztBQUVyRSxVQUFNLEVBQUMsT0FBTSxJQUFJO0FBRWpCLFdBQU8sY0FBYyxNQUFNcEIsUUFBTSxLQUFLLFdBQVc7QUFFakQsV0FBTztBQUFBLEVBQ1g7QUFDQTtBQzVDTyxNQUFNLGNBQWMsV0FBVyxPQUFPLFdBQVc7QUFDdEQsTUFBSSxNQUFNLE1BQU07QUFFaEIsTUFBa0IsTUFBTSxXQUFXO0FBQ2pDLFVBQU07QUFDTjtBQUFBLEVBQ0o7QUFFRSxNQUFJLE1BQU07QUFDVixNQUFJO0FBRUosU0FBTyxNQUFNLEtBQUs7QUFDaEIsVUFBTSxNQUFNO0FBQ1osVUFBTSxNQUFNLE1BQU0sS0FBSyxHQUFHO0FBQzFCLFVBQU07QUFBQSxFQUNWO0FBQ0E7QUFFTyxNQUFNLFlBQVksaUJBQWlCLFVBQVUsV0FBVztBQUM3RCxtQkFBaUIsU0FBUyxXQUFXLFFBQVEsR0FBRztBQUM5QyxXQUFPLFlBQVksT0FBTyxTQUFTO0FBQUEsRUFDdkM7QUFDQTtBQUVBLE1BQU0sYUFBYSxpQkFBaUIsUUFBUTtBQUMxQyxNQUFJLE9BQU8sT0FBTyxhQUFhLEdBQUc7QUFDaEMsV0FBTztBQUNQO0FBQUEsRUFDSjtBQUVFLFFBQU0sU0FBUyxPQUFPLFVBQVc7QUFDakMsTUFBSTtBQUNGLGVBQVM7QUFDUCxZQUFNLEVBQUMsTUFBTSxNQUFLLElBQUksTUFBTSxPQUFPLEtBQU07QUFDekMsVUFBSSxNQUFNO0FBQ1I7QUFBQSxNQUNSO0FBQ00sWUFBTTtBQUFBLElBQ1o7QUFBQSxFQUNBLFVBQVk7QUFDUixVQUFNLE9BQU8sT0FBUTtBQUFBLEVBQ3pCO0FBQ0E7QUFFTyxNQUFNLGNBQWMsQ0FBQyxRQUFRLFdBQVcsWUFBWSxhQUFhO0FBQ3RFLFFBQU0sV0FBVyxVQUFVLFFBQVEsU0FBUztBQUU1QyxNQUFJLFFBQVE7QUFDWixNQUFJO0FBQ0osTUFBSSxZQUFZLENBQUNsRixPQUFNO0FBQ3JCLFFBQUksQ0FBQyxNQUFNO0FBQ1QsYUFBTztBQUNQLGtCQUFZLFNBQVNBLEVBQUM7QUFBQSxJQUM1QjtBQUFBLEVBQ0E7QUFFRSxTQUFPLElBQUksZUFBZTtBQUFBLElBQ3hCLE1BQU0sS0FBSyxZQUFZO0FBQ3JCLFVBQUk7QUFDRixjQUFNLEVBQUMsTUFBQXVHLE9BQU0sTUFBSyxJQUFJLE1BQU0sU0FBUyxLQUFNO0FBRTNDLFlBQUlBLE9BQU07QUFDVCxvQkFBVztBQUNWLHFCQUFXLE1BQU87QUFDbEI7QUFBQSxRQUNWO0FBRVEsWUFBSSxNQUFNLE1BQU07QUFDaEIsWUFBSSxZQUFZO0FBQ2QsY0FBSSxjQUFjLFNBQVM7QUFDM0IscUJBQVcsV0FBVztBQUFBLFFBQ2hDO0FBQ1EsbUJBQVcsUUFBUSxJQUFJLFdBQVcsS0FBSyxDQUFDO0FBQUEsTUFDekMsU0FBUSxLQUFLO0FBQ1osa0JBQVUsR0FBRztBQUNiLGNBQU07QUFBQSxNQUNkO0FBQUEsSUFDSztBQUFBLElBQ0QsT0FBTyxRQUFRO0FBQ2IsZ0JBQVUsTUFBTTtBQUNoQixhQUFPLFNBQVMsT0FBUTtBQUFBLElBQzlCO0FBQUEsRUFDQSxHQUFLO0FBQUEsSUFDRCxlQUFlO0FBQUEsRUFDaEIsQ0FBQTtBQUNIO0FDNUVBLE1BQU0sbUJBQW1CLE9BQU8sVUFBVSxjQUFjLE9BQU8sWUFBWSxjQUFjLE9BQU8sYUFBYTtBQUM3RyxNQUFNLDRCQUE0QixvQkFBb0IsT0FBTyxtQkFBbUI7QUFHaEYsTUFBTSxhQUFhLHFCQUFxQixPQUFPLGdCQUFnQixhQUMxRCxrQkFBQyxZQUFZLENBQUMsUUFBUSxRQUFRLE9BQU8sR0FBRyxHQUFHLElBQUksYUFBYSxJQUM3RCxPQUFPLFFBQVEsSUFBSSxXQUFXLE1BQU0sSUFBSSxTQUFTLEdBQUcsRUFBRSxZQUFhLENBQUE7QUFHdkUsTUFBTSxPQUFPLENBQUMsT0FBTyxTQUFTO0FBQzVCLE1BQUk7QUFDRixXQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSTtBQUFBLEVBQ3BCLFNBQVF2RyxJQUFHO0FBQ1YsV0FBTztBQUFBLEVBQ1g7QUFDQTtBQUVBLE1BQU0sd0JBQXdCLDZCQUE2QixLQUFLLE1BQU07QUFDcEUsTUFBSSxpQkFBaUI7QUFFckIsUUFBTSxpQkFBaUIsSUFBSSxRQUFRMEYsV0FBUyxRQUFRO0FBQUEsSUFDbEQsTUFBTSxJQUFJLGVBQWdCO0FBQUEsSUFDMUIsUUFBUTtBQUFBLElBQ1IsSUFBSSxTQUFTO0FBQ1gsdUJBQWlCO0FBQ2pCLGFBQU87QUFBQSxJQUNSO0FBQUEsRUFDTCxDQUFHLEVBQUUsUUFBUSxJQUFJLGNBQWM7QUFFN0IsU0FBTyxrQkFBa0IsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxxQkFBcUIsS0FBSztBQUVoQyxNQUFNLHlCQUF5Qiw2QkFDN0IsS0FBSyxNQUFNUixRQUFNLGlCQUFpQixJQUFJLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQztBQUcxRCxNQUFNLFlBQVk7QUFBQSxFQUNoQixRQUFRLDJCQUEyQixDQUFDLFFBQVEsSUFBSTtBQUNsRDtBQUVBLHFCQUFzQixDQUFDLFFBQVE7QUFDN0IsR0FBQyxRQUFRLGVBQWUsUUFBUSxZQUFZLFFBQVEsRUFBRSxRQUFRLENBQUF0QixVQUFRO0FBQ3BFLEtBQUMsVUFBVUEsS0FBSSxNQUFNLFVBQVVBLEtBQUksSUFBSXNCLFFBQU0sV0FBVyxJQUFJdEIsS0FBSSxDQUFDLElBQUksQ0FBQzRDLFNBQVFBLEtBQUk1QyxLQUFJLEVBQUcsSUFDdkYsQ0FBQ3BGLElBQUd5RyxZQUFXO0FBQ2IsWUFBTSxJQUFJLFdBQVcsa0JBQWtCckIsS0FBSSxzQkFBc0IsV0FBVyxpQkFBaUJxQixPQUFNO0FBQUEsSUFDcEc7QUFBQSxFQUNQLENBQUc7QUFDSCxHQUFHLElBQUksVUFBUTtBQUVmLE1BQU0sZ0JBQWdCLE9BQU8sU0FBUztBQUNwQyxNQUFJLFFBQVEsTUFBTTtBQUNoQixXQUFPO0FBQUEsRUFDWDtBQUVFLE1BQUdDLFFBQU0sT0FBTyxJQUFJLEdBQUc7QUFDckIsV0FBTyxLQUFLO0FBQUEsRUFDaEI7QUFFRSxNQUFHQSxRQUFNLG9CQUFvQixJQUFJLEdBQUc7QUFDbEMsVUFBTSxXQUFXLElBQUksUUFBUVEsV0FBUyxRQUFRO0FBQUEsTUFDNUMsUUFBUTtBQUFBLE1BQ1I7QUFBQSxJQUNOLENBQUs7QUFDRCxZQUFRLE1BQU0sU0FBUyxZQUFXLEdBQUk7QUFBQSxFQUMxQztBQUVFLE1BQUdSLFFBQU0sa0JBQWtCLElBQUksS0FBS0EsUUFBTSxjQUFjLElBQUksR0FBRztBQUM3RCxXQUFPLEtBQUs7QUFBQSxFQUNoQjtBQUVFLE1BQUdBLFFBQU0sa0JBQWtCLElBQUksR0FBRztBQUNoQyxXQUFPLE9BQU87QUFBQSxFQUNsQjtBQUVFLE1BQUdBLFFBQU0sU0FBUyxJQUFJLEdBQUc7QUFDdkIsWUFBUSxNQUFNLFdBQVcsSUFBSSxHQUFHO0FBQUEsRUFDcEM7QUFDQTtBQUVBLE1BQU0sb0JBQW9CLE9BQU8sU0FBUyxTQUFTO0FBQ2pELFFBQU1ILFVBQVNHLFFBQU0sZUFBZSxRQUFRLGlCQUFnQixDQUFFO0FBRTlELFNBQU9ILFdBQVUsT0FBTyxjQUFjLElBQUksSUFBSUE7QUFDaEQ7QUFFQSxNQUFBLGVBQWUscUJBQXFCLE9BQU9FLFlBQVc7QUFDcEQsTUFBSTtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsSUFDQSxNQUFBbkU7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxrQkFBa0I7QUFBQSxJQUNsQjtBQUFBLEVBQ0osSUFBTSxjQUFjbUUsT0FBTTtBQUV4QixpQkFBZSxnQkFBZ0IsZUFBZSxJQUFJLFlBQWEsSUFBRztBQUVsRSxNQUFJLGlCQUFpQixlQUFlLENBQUMsUUFBUSxlQUFlLFlBQVksZUFBZSxHQUFHLE9BQU87QUFFakcsTUFBSTtBQUVKLFFBQU0sY0FBYyxrQkFBa0IsZUFBZSxnQkFBZ0IsTUFBTTtBQUN2RSxtQkFBZSxZQUFhO0FBQUEsRUFDbEM7QUFFRSxNQUFJO0FBRUosTUFBSTtBQUNGLFFBQ0Usb0JBQW9CLHlCQUF5QixXQUFXLFNBQVMsV0FBVyxXQUMzRSx1QkFBdUIsTUFBTSxrQkFBa0IsU0FBU25FLEtBQUksT0FBTyxHQUNwRTtBQUNBLFVBQUksV0FBVyxJQUFJLFFBQVEsS0FBSztBQUFBLFFBQzlCLFFBQVE7QUFBQSxRQUNSLE1BQU1BO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFDaEIsQ0FBTztBQUVELFVBQUk7QUFFSixVQUFJb0UsUUFBTSxXQUFXcEUsS0FBSSxNQUFNLG9CQUFvQixTQUFTLFFBQVEsSUFBSSxjQUFjLElBQUk7QUFDeEYsZ0JBQVEsZUFBZSxpQkFBaUI7QUFBQSxNQUNoRDtBQUVNLFVBQUksU0FBUyxNQUFNO0FBQ2pCLGNBQU0sQ0FBQyxZQUFZLEtBQUssSUFBSTtBQUFBLFVBQzFCO0FBQUEsVUFDQSxxQkFBcUIsZUFBZSxnQkFBZ0IsQ0FBQztBQUFBLFFBQ3REO0FBRUQsUUFBQUEsUUFBTyxZQUFZLFNBQVMsTUFBTSxvQkFBb0IsWUFBWSxLQUFLO0FBQUEsTUFDL0U7QUFBQSxJQUNBO0FBRUksUUFBSSxDQUFDb0UsUUFBTSxTQUFTLGVBQWUsR0FBRztBQUNwQyx3QkFBa0Isa0JBQWtCLFlBQVk7QUFBQSxJQUN0RDtBQUlJLFVBQU0seUJBQXlCLGlCQUFpQixRQUFRO0FBQ3hELGNBQVUsSUFBSSxRQUFRLEtBQUs7QUFBQSxNQUN6QixHQUFHO0FBQUEsTUFDSCxRQUFRO0FBQUEsTUFDUixRQUFRLE9BQU8sWUFBYTtBQUFBLE1BQzVCLFNBQVMsUUFBUSxVQUFXLEVBQUMsT0FBUTtBQUFBLE1BQ3JDLE1BQU1wRTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsYUFBYSx5QkFBeUIsa0JBQWtCO0FBQUEsSUFDOUQsQ0FBSztBQUVELFFBQUksV0FBVyxNQUFNLE1BQU0sT0FBTztBQUVsQyxVQUFNLG1CQUFtQiwyQkFBMkIsaUJBQWlCLFlBQVksaUJBQWlCO0FBRWxHLFFBQUksMkJBQTJCLHNCQUF1QixvQkFBb0IsY0FBZTtBQUN2RixZQUFNcUUsV0FBVSxDQUFFO0FBRWxCLE9BQUMsVUFBVSxjQUFjLFNBQVMsRUFBRSxRQUFRLFVBQVE7QUFDbEQsUUFBQUEsU0FBUSxJQUFJLElBQUksU0FBUyxJQUFJO0FBQUEsTUFDckMsQ0FBTztBQUVELFlBQU0sd0JBQXdCRCxRQUFNLGVBQWUsU0FBUyxRQUFRLElBQUksZ0JBQWdCLENBQUM7QUFFekYsWUFBTSxDQUFDLFlBQVksS0FBSyxJQUFJLHNCQUFzQjtBQUFBLFFBQ2hEO0FBQUEsUUFDQSxxQkFBcUIsZUFBZSxrQkFBa0IsR0FBRyxJQUFJO0FBQUEsTUFDckUsS0FBVyxDQUFFO0FBRVAsaUJBQVcsSUFBSTtBQUFBLFFBQ2IsWUFBWSxTQUFTLE1BQU0sb0JBQW9CLFlBQVksTUFBTTtBQUMvRCxtQkFBUyxNQUFPO0FBQ2hCLHlCQUFlLFlBQWE7QUFBQSxRQUN0QyxDQUFTO0FBQUEsUUFDREM7QUFBQSxNQUNEO0FBQUEsSUFDUDtBQUVJLG1CQUFlLGdCQUFnQjtBQUUvQixRQUFJLGVBQWUsTUFBTSxVQUFVRCxRQUFNLFFBQVEsV0FBVyxZQUFZLEtBQUssTUFBTSxFQUFFLFVBQVVELE9BQU07QUFFckcsS0FBQyxvQkFBb0IsZUFBZSxZQUFhO0FBRWpELFdBQU8sTUFBTSxJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFDNUMsYUFBTyxTQUFTLFFBQVE7QUFBQSxRQUN0QixNQUFNO0FBQUEsUUFDTixTQUFTLGFBQWEsS0FBSyxTQUFTLE9BQU87QUFBQSxRQUMzQyxRQUFRLFNBQVM7QUFBQSxRQUNqQixZQUFZLFNBQVM7QUFBQSxRQUNyQixRQUFBQTtBQUFBLFFBQ0E7QUFBQSxNQUNELENBQUE7QUFBQSxJQUNGLENBQUE7QUFBQSxFQUNGLFNBQVEsS0FBSztBQUNaLG1CQUFlLFlBQWE7QUFFNUIsUUFBSSxPQUFPLElBQUksU0FBUyxlQUFlLFNBQVMsS0FBSyxJQUFJLE9BQU8sR0FBRztBQUNqRSxZQUFNLE9BQU87QUFBQSxRQUNYLElBQUksV0FBVyxpQkFBaUIsV0FBVyxhQUFhQSxTQUFRLE9BQU87QUFBQSxRQUN2RTtBQUFBLFVBQ0UsT0FBTyxJQUFJLFNBQVM7QUFBQSxRQUM5QjtBQUFBLE1BQ0E7QUFBQSxJQUNBO0FBRUksVUFBTSxXQUFXLEtBQUssS0FBSyxPQUFPLElBQUksTUFBTUEsU0FBUSxPQUFPO0FBQUEsRUFDL0Q7QUFDQTtBQzVOQSxNQUFNLGdCQUFnQjtBQUFBLEVBQ3BCLE1BQU07QUFBQSxFQUNOLEtBQUs7QUFBQSxFQUNMLE9BQU87QUFDVDtBQUVBQyxRQUFNLFFBQVEsZUFBZSxDQUFDLElBQUksVUFBVTtBQUMxQyxNQUFJLElBQUk7QUFDTixRQUFJO0FBQ0YsYUFBTyxlQUFlLElBQUksUUFBUSxFQUFDLE1BQUssQ0FBQztBQUFBLElBQzFDLFNBQVFsRixJQUFHO0FBQUEsSUFFaEI7QUFDSSxXQUFPLGVBQWUsSUFBSSxlQUFlLEVBQUMsTUFBSyxDQUFDO0FBQUEsRUFDcEQ7QUFDQSxDQUFDO0FBRUQsTUFBTSxlQUFlLENBQUMsV0FBVyxLQUFLLE1BQU07QUFFNUMsTUFBTSxtQkFBbUIsQ0FBQyxZQUFZa0YsUUFBTSxXQUFXLE9BQU8sS0FBSyxZQUFZLFFBQVEsWUFBWTtBQUVuRyxNQUFlLFdBQUE7QUFBQSxFQUNiLFlBQVksQ0FBQ3VCLGNBQWE7QUFDeEIsSUFBQUEsWUFBV3ZCLFFBQU0sUUFBUXVCLFNBQVEsSUFBSUEsWUFBVyxDQUFDQSxTQUFRO0FBRXpELFVBQU0sRUFBQyxRQUFBMUIsUUFBTSxJQUFJMEI7QUFDakIsUUFBSTtBQUNKLFFBQUk7QUFFSixVQUFNLGtCQUFrQixDQUFFO0FBRTFCLGFBQVM1SCxLQUFJLEdBQUdBLEtBQUlrRyxTQUFRbEcsTUFBSztBQUMvQixzQkFBZ0I0SCxVQUFTNUgsRUFBQztBQUMxQixVQUFJO0FBRUosZ0JBQVU7QUFFVixVQUFJLENBQUMsaUJBQWlCLGFBQWEsR0FBRztBQUNwQyxrQkFBVSxlQUFlLEtBQUssT0FBTyxhQUFhLEdBQUcsYUFBYTtBQUVsRSxZQUFJLFlBQVksUUFBVztBQUN6QixnQkFBTSxJQUFJLFdBQVcsb0JBQW9CLEVBQUUsR0FBRztBQUFBLFFBQ3hEO0FBQUEsTUFDQTtBQUVNLFVBQUksU0FBUztBQUNYO0FBQUEsTUFDUjtBQUVNLHNCQUFnQixNQUFNLE1BQU1BLEVBQUMsSUFBSTtBQUFBLElBQ3ZDO0FBRUksUUFBSSxDQUFDLFNBQVM7QUFFWixZQUFNLFVBQVUsT0FBTyxRQUFRLGVBQWUsRUFDM0M7QUFBQSxRQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxXQUFXLEVBQUUsT0FDaEMsVUFBVSxRQUFRLHdDQUF3QztBQUFBLE1BQzVEO0FBRUgsVUFBSTZILEtBQUkzQixVQUNMLFFBQVEsU0FBUyxJQUFJLGNBQWMsUUFBUSxJQUFJLFlBQVksRUFBRSxLQUFLLElBQUksSUFBSSxNQUFNLGFBQWEsUUFBUSxDQUFDLENBQUMsSUFDeEc7QUFFRixZQUFNLElBQUk7QUFBQSxRQUNSLDBEQUEwRDJCO0FBQUEsUUFDMUQ7QUFBQSxNQUNEO0FBQUEsSUFDUDtBQUVJLFdBQU87QUFBQSxFQUNSO0FBQUEsRUFDRCxVQUFVO0FBQ1o7QUM5REEsU0FBUyw2QkFBNkJ6QixTQUFRO0FBQzVDLE1BQUlBLFFBQU8sYUFBYTtBQUN0QixJQUFBQSxRQUFPLFlBQVksaUJBQWtCO0FBQUEsRUFDekM7QUFFRSxNQUFJQSxRQUFPLFVBQVVBLFFBQU8sT0FBTyxTQUFTO0FBQzFDLFVBQU0sSUFBSSxjQUFjLE1BQU1BLE9BQU07QUFBQSxFQUN4QztBQUNBO0FBU2UsU0FBUyxnQkFBZ0JBLFNBQVE7QUFDOUMsK0JBQTZCQSxPQUFNO0FBRW5DLEVBQUFBLFFBQU8sVUFBVSxhQUFhLEtBQUtBLFFBQU8sT0FBTztBQUdqRCxFQUFBQSxRQUFPLE9BQU8sY0FBYztBQUFBLElBQzFCQTtBQUFBLElBQ0FBLFFBQU87QUFBQSxFQUNSO0FBRUQsTUFBSSxDQUFDLFFBQVEsT0FBTyxPQUFPLEVBQUUsUUFBUUEsUUFBTyxNQUFNLE1BQU0sSUFBSTtBQUMxRCxJQUFBQSxRQUFPLFFBQVEsZUFBZSxxQ0FBcUMsS0FBSztBQUFBLEVBQzVFO0FBRUUsUUFBTSxVQUFVLFNBQVMsV0FBV0EsUUFBTyxXQUFXLFNBQVMsT0FBTztBQUV0RSxTQUFPLFFBQVFBLE9BQU0sRUFBRSxLQUFLLFNBQVMsb0JBQW9CLFVBQVU7QUFDakUsaUNBQTZCQSxPQUFNO0FBR25DLGFBQVMsT0FBTyxjQUFjO0FBQUEsTUFDNUJBO0FBQUEsTUFDQUEsUUFBTztBQUFBLE1BQ1A7QUFBQSxJQUNEO0FBRUQsYUFBUyxVQUFVLGFBQWEsS0FBSyxTQUFTLE9BQU87QUFFckQsV0FBTztBQUFBLEVBQ1gsR0FBSyxTQUFTLG1CQUFtQixRQUFRO0FBQ3JDLFFBQUksQ0FBQyxTQUFTLE1BQU0sR0FBRztBQUNyQixtQ0FBNkJBLE9BQU07QUFHbkMsVUFBSSxVQUFVLE9BQU8sVUFBVTtBQUM3QixlQUFPLFNBQVMsT0FBTyxjQUFjO0FBQUEsVUFDbkNBO0FBQUEsVUFDQUEsUUFBTztBQUFBLFVBQ1AsT0FBTztBQUFBLFFBQ1I7QUFDRCxlQUFPLFNBQVMsVUFBVSxhQUFhLEtBQUssT0FBTyxTQUFTLE9BQU87QUFBQSxNQUMzRTtBQUFBLElBQ0E7QUFFSSxXQUFPLFFBQVEsT0FBTyxNQUFNO0FBQUEsRUFDaEMsQ0FBRztBQUNIO0FDaEZPLE1BQU0sVUFBVTtBQ0t2QixNQUFNMEIsZUFBYSxDQUFFO0FBR3JCLENBQUMsVUFBVSxXQUFXLFVBQVUsWUFBWSxVQUFVLFFBQVEsRUFBRSxRQUFRLENBQUMvQyxPQUFNL0UsT0FBTTtBQUNuRjhILGVBQVcvQyxLQUFJLElBQUksU0FBU2dELFdBQVUsT0FBTztBQUMzQyxXQUFPLE9BQU8sVUFBVWhELFNBQVEsT0FBTy9FLEtBQUksSUFBSSxPQUFPLE9BQU8rRTtBQUFBLEVBQzlEO0FBQ0gsQ0FBQztBQUVELE1BQU0scUJBQXFCLENBQUU7QUFXN0IrQyxhQUFXLGVBQWUsU0FBUyxhQUFhQyxZQUFXLFNBQVMsU0FBUztBQUMzRSxXQUFTLGNBQWMsS0FBSyxNQUFNO0FBQ2hDLFdBQU8sYUFBYSxVQUFVLDRCQUE2QixNQUFNLE1BQU8sUUFBUSxVQUFVLE9BQU8sVUFBVTtBQUFBLEVBQy9HO0FBR0UsU0FBTyxDQUFDLE9BQU8sS0FBSyxTQUFTO0FBQzNCLFFBQUlBLGVBQWMsT0FBTztBQUN2QixZQUFNLElBQUk7QUFBQSxRQUNSLGNBQWMsS0FBSyx1QkFBdUIsVUFBVSxTQUFTLFVBQVUsR0FBRztBQUFBLFFBQzFFLFdBQVc7QUFBQSxNQUNaO0FBQUEsSUFDUDtBQUVJLFFBQUksV0FBVyxDQUFDLG1CQUFtQixHQUFHLEdBQUc7QUFDdkMseUJBQW1CLEdBQUcsSUFBSTtBQUUxQixjQUFRO0FBQUEsUUFDTjtBQUFBLFVBQ0U7QUFBQSxVQUNBLGlDQUFpQyxVQUFVO0FBQUEsUUFDckQ7QUFBQSxNQUNPO0FBQUEsSUFDUDtBQUVJLFdBQU9BLGFBQVlBLFdBQVUsT0FBTyxLQUFLLElBQUksSUFBSTtBQUFBLEVBQ2xEO0FBQ0g7QUFFQUQsYUFBVyxXQUFXLFNBQVMsU0FBUyxpQkFBaUI7QUFDdkQsU0FBTyxDQUFDLE9BQU8sUUFBUTtBQUVyQixZQUFRLEtBQUssR0FBRyxHQUFHLCtCQUErQixlQUFlLEVBQUU7QUFDbkUsV0FBTztBQUFBLEVBQ1g7QUFDQTtBQVlBLFNBQVMsY0FBY3hCLFVBQVMsUUFBUSxjQUFjO0FBQ3BELE1BQUksT0FBT0EsYUFBWSxVQUFVO0FBQy9CLFVBQU0sSUFBSSxXQUFXLDZCQUE2QixXQUFXLG9CQUFvQjtBQUFBLEVBQ3JGO0FBQ0UsUUFBTSxPQUFPLE9BQU8sS0FBS0EsUUFBTztBQUNoQyxNQUFJdEcsS0FBSSxLQUFLO0FBQ2IsU0FBT0EsT0FBTSxHQUFHO0FBQ2QsVUFBTSxNQUFNLEtBQUtBLEVBQUM7QUFDbEIsVUFBTStILGFBQVksT0FBTyxHQUFHO0FBQzVCLFFBQUlBLFlBQVc7QUFDYixZQUFNLFFBQVF6QixTQUFRLEdBQUc7QUFDekIsWUFBTSxTQUFTLFVBQVUsVUFBYXlCLFdBQVUsT0FBTyxLQUFLekIsUUFBTztBQUNuRSxVQUFJLFdBQVcsTUFBTTtBQUNuQixjQUFNLElBQUksV0FBVyxZQUFZLE1BQU0sY0FBYyxRQUFRLFdBQVcsb0JBQW9CO0FBQUEsTUFDcEc7QUFDTTtBQUFBLElBQ047QUFDSSxRQUFJLGlCQUFpQixNQUFNO0FBQ3pCLFlBQU0sSUFBSSxXQUFXLG9CQUFvQixLQUFLLFdBQVcsY0FBYztBQUFBLElBQzdFO0FBQUEsRUFDQTtBQUNBO0FBRUEsTUFBZSxjQUFBO0FBQUEsRUFDYjtBQUFBLEVBQ0F3QixZQUFBQTtBQUNGO0FDdkZBLE1BQU0sYUFBYUMsWUFBVTtBQVM3QixNQUFNLE1BQU07QUFBQSxFQUNWLFlBQVksZ0JBQWdCO0FBQzFCLFNBQUssV0FBVztBQUNoQixTQUFLLGVBQWU7QUFBQSxNQUNsQixTQUFTLElBQUksbUJBQW9CO0FBQUEsTUFDakMsVUFBVSxJQUFJLG1CQUFrQjtBQUFBLElBQ2pDO0FBQUEsRUFDTDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVVFLE1BQU0sUUFBUSxhQUFhM0IsU0FBUTtBQUNqQyxRQUFJO0FBQ0YsYUFBTyxNQUFNLEtBQUssU0FBUyxhQUFhQSxPQUFNO0FBQUEsSUFDL0MsU0FBUSxLQUFLO0FBQ1osVUFBSSxlQUFlLE9BQU87QUFDeEIsWUFBSSxRQUFRLENBQUU7QUFFZCxjQUFNLG9CQUFvQixNQUFNLGtCQUFrQixLQUFLLElBQUssUUFBUSxJQUFJO0FBR3hFLGNBQU0sUUFBUSxNQUFNLFFBQVEsTUFBTSxNQUFNLFFBQVEsU0FBUyxFQUFFLElBQUk7QUFDL0QsWUFBSTtBQUNGLGNBQUksQ0FBQyxJQUFJLE9BQU87QUFDZCxnQkFBSSxRQUFRO0FBQUEsVUFFYixXQUFVLFNBQVMsQ0FBQyxPQUFPLElBQUksS0FBSyxFQUFFLFNBQVMsTUFBTSxRQUFRLGFBQWEsRUFBRSxDQUFDLEdBQUc7QUFDL0UsZ0JBQUksU0FBUyxPQUFPO0FBQUEsVUFDaEM7QUFBQSxRQUNTLFNBQVFqRixJQUFHO0FBQUEsUUFFcEI7QUFBQSxNQUNBO0FBRU0sWUFBTTtBQUFBLElBQ1o7QUFBQSxFQUNBO0FBQUEsRUFFRSxTQUFTLGFBQWFpRixTQUFRO0FBRzVCLFFBQUksT0FBTyxnQkFBZ0IsVUFBVTtBQUNuQyxNQUFBQSxVQUFTQSxXQUFVLENBQUU7QUFDckIsTUFBQUEsUUFBTyxNQUFNO0FBQUEsSUFDbkIsT0FBVztBQUNMLE1BQUFBLFVBQVMsZUFBZSxDQUFFO0FBQUEsSUFDaEM7QUFFSSxJQUFBQSxVQUFTLFlBQVksS0FBSyxVQUFVQSxPQUFNO0FBRTFDLFVBQU0sRUFBQyxjQUFBWSxlQUFjLGtCQUFrQixRQUFPLElBQUlaO0FBRWxELFFBQUlZLGtCQUFpQixRQUFXO0FBQzlCZSxrQkFBVSxjQUFjZixlQUFjO0FBQUEsUUFDcEMsbUJBQW1CLFdBQVcsYUFBYSxXQUFXLE9BQU87QUFBQSxRQUM3RCxtQkFBbUIsV0FBVyxhQUFhLFdBQVcsT0FBTztBQUFBLFFBQzdELHFCQUFxQixXQUFXLGFBQWEsV0FBVyxPQUFPO0FBQUEsTUFDaEUsR0FBRSxLQUFLO0FBQUEsSUFDZDtBQUVJLFFBQUksb0JBQW9CLE1BQU07QUFDNUIsVUFBSVgsUUFBTSxXQUFXLGdCQUFnQixHQUFHO0FBQ3RDLFFBQUFELFFBQU8sbUJBQW1CO0FBQUEsVUFDeEIsV0FBVztBQUFBLFFBQ3JCO0FBQUEsTUFDQSxPQUFhO0FBQ0wyQixvQkFBVSxjQUFjLGtCQUFrQjtBQUFBLFVBQ3hDLFFBQVEsV0FBVztBQUFBLFVBQ25CLFdBQVcsV0FBVztBQUFBLFFBQ3ZCLEdBQUUsSUFBSTtBQUFBLE1BQ2Y7QUFBQSxJQUNBO0FBRUlBLGdCQUFVLGNBQWMzQixTQUFRO0FBQUEsTUFDOUIsU0FBUyxXQUFXLFNBQVMsU0FBUztBQUFBLE1BQ3RDLGVBQWUsV0FBVyxTQUFTLGVBQWU7QUFBQSxJQUNuRCxHQUFFLElBQUk7QUFHUCxJQUFBQSxRQUFPLFVBQVVBLFFBQU8sVUFBVSxLQUFLLFNBQVMsVUFBVSxPQUFPLFlBQWE7QUFHOUUsUUFBSSxpQkFBaUIsV0FBV0MsUUFBTTtBQUFBLE1BQ3BDLFFBQVE7QUFBQSxNQUNSLFFBQVFELFFBQU8sTUFBTTtBQUFBLElBQ3RCO0FBRUQsZUFBV0MsUUFBTTtBQUFBLE1BQ2YsQ0FBQyxVQUFVLE9BQU8sUUFBUSxRQUFRLE9BQU8sU0FBUyxRQUFRO0FBQUEsTUFDMUQsQ0FBQyxXQUFXO0FBQ1YsZUFBTyxRQUFRLE1BQU07QUFBQSxNQUM3QjtBQUFBLElBQ0s7QUFFRCxJQUFBRCxRQUFPLFVBQVUsYUFBYSxPQUFPLGdCQUFnQixPQUFPO0FBRzVELFVBQU0sMEJBQTBCLENBQUU7QUFDbEMsUUFBSSxpQ0FBaUM7QUFDckMsU0FBSyxhQUFhLFFBQVEsUUFBUSxTQUFTLDJCQUEyQixhQUFhO0FBQ2pGLFVBQUksT0FBTyxZQUFZLFlBQVksY0FBYyxZQUFZLFFBQVFBLE9BQU0sTUFBTSxPQUFPO0FBQ3RGO0FBQUEsTUFDUjtBQUVNLHVDQUFpQyxrQ0FBa0MsWUFBWTtBQUUvRSw4QkFBd0IsUUFBUSxZQUFZLFdBQVcsWUFBWSxRQUFRO0FBQUEsSUFDakYsQ0FBSztBQUVELFVBQU0sMkJBQTJCLENBQUU7QUFDbkMsU0FBSyxhQUFhLFNBQVMsUUFBUSxTQUFTLHlCQUF5QixhQUFhO0FBQ2hGLCtCQUF5QixLQUFLLFlBQVksV0FBVyxZQUFZLFFBQVE7QUFBQSxJQUMvRSxDQUFLO0FBRUQsUUFBSTtBQUNKLFFBQUlwRyxLQUFJO0FBQ1IsUUFBSTtBQUVKLFFBQUksQ0FBQyxnQ0FBZ0M7QUFDbkMsWUFBTSxRQUFRLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxHQUFHLE1BQVM7QUFDcEQsWUFBTSxRQUFRLE1BQU0sT0FBTyx1QkFBdUI7QUFDbEQsWUFBTSxLQUFLLE1BQU0sT0FBTyx3QkFBd0I7QUFDaEQsWUFBTSxNQUFNO0FBRVosZ0JBQVUsUUFBUSxRQUFRb0csT0FBTTtBQUVoQyxhQUFPcEcsS0FBSSxLQUFLO0FBQ2Qsa0JBQVUsUUFBUSxLQUFLLE1BQU1BLElBQUcsR0FBRyxNQUFNQSxJQUFHLENBQUM7QUFBQSxNQUNyRDtBQUVNLGFBQU87QUFBQSxJQUNiO0FBRUksVUFBTSx3QkFBd0I7QUFFOUIsUUFBSSxZQUFZb0c7QUFFaEIsSUFBQXBHLEtBQUk7QUFFSixXQUFPQSxLQUFJLEtBQUs7QUFDZCxZQUFNLGNBQWMsd0JBQXdCQSxJQUFHO0FBQy9DLFlBQU0sYUFBYSx3QkFBd0JBLElBQUc7QUFDOUMsVUFBSTtBQUNGLG9CQUFZLFlBQVksU0FBUztBQUFBLE1BQ2xDLFNBQVEsT0FBTztBQUNkLG1CQUFXLEtBQUssTUFBTSxLQUFLO0FBQzNCO0FBQUEsTUFDUjtBQUFBLElBQ0E7QUFFSSxRQUFJO0FBQ0YsZ0JBQVUsZ0JBQWdCLEtBQUssTUFBTSxTQUFTO0FBQUEsSUFDL0MsU0FBUSxPQUFPO0FBQ2QsYUFBTyxRQUFRLE9BQU8sS0FBSztBQUFBLElBQ2pDO0FBRUksSUFBQUEsS0FBSTtBQUNKLFVBQU0seUJBQXlCO0FBRS9CLFdBQU9BLEtBQUksS0FBSztBQUNkLGdCQUFVLFFBQVEsS0FBSyx5QkFBeUJBLElBQUcsR0FBRyx5QkFBeUJBLElBQUcsQ0FBQztBQUFBLElBQ3pGO0FBRUksV0FBTztBQUFBLEVBQ1g7QUFBQSxFQUVFLE9BQU9vRyxTQUFRO0FBQ2IsSUFBQUEsVUFBUyxZQUFZLEtBQUssVUFBVUEsT0FBTTtBQUMxQyxVQUFNLFdBQVcsY0FBY0EsUUFBTyxTQUFTQSxRQUFPLEdBQUc7QUFDekQsV0FBTyxTQUFTLFVBQVVBLFFBQU8sUUFBUUEsUUFBTyxnQkFBZ0I7QUFBQSxFQUNwRTtBQUNBO0FBR0FDLFFBQU0sUUFBUSxDQUFDLFVBQVUsT0FBTyxRQUFRLFNBQVMsR0FBRyxTQUFTLG9CQUFvQixRQUFRO0FBRXZGLFFBQU0sVUFBVSxNQUFNLElBQUksU0FBUyxLQUFLRCxTQUFRO0FBQzlDLFdBQU8sS0FBSyxRQUFRLFlBQVlBLFdBQVUsQ0FBQSxHQUFJO0FBQUEsTUFDNUM7QUFBQSxNQUNBO0FBQUEsTUFDQSxPQUFPQSxXQUFVLElBQUk7QUFBQSxJQUMzQixDQUFLLENBQUM7QUFBQSxFQUNIO0FBQ0gsQ0FBQztBQUVEQyxRQUFNLFFBQVEsQ0FBQyxRQUFRLE9BQU8sT0FBTyxHQUFHLFNBQVMsc0JBQXNCLFFBQVE7QUFHN0UsV0FBUyxtQkFBbUIsUUFBUTtBQUNsQyxXQUFPLFNBQVMsV0FBVyxLQUFLcEUsT0FBTW1FLFNBQVE7QUFDNUMsYUFBTyxLQUFLLFFBQVEsWUFBWUEsV0FBVSxDQUFBLEdBQUk7QUFBQSxRQUM1QztBQUFBLFFBQ0EsU0FBUyxTQUFTO0FBQUEsVUFDaEIsZ0JBQWdCO0FBQUEsUUFDMUIsSUFBWSxDQUFFO0FBQUEsUUFDTjtBQUFBLFFBQ0EsTUFBQW5FO0FBQUEsTUFDUixDQUFPLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDTDtBQUVFLFFBQU0sVUFBVSxNQUFNLElBQUksbUJBQW9CO0FBRTlDLFFBQU0sVUFBVSxTQUFTLE1BQU0sSUFBSSxtQkFBbUIsSUFBSTtBQUM1RCxDQUFDO0FDM05ELE1BQU0sWUFBWTtBQUFBLEVBQ2hCLFlBQVksVUFBVTtBQUNwQixRQUFJLE9BQU8sYUFBYSxZQUFZO0FBQ2xDLFlBQU0sSUFBSSxVQUFVLDhCQUE4QjtBQUFBLElBQ3hEO0FBRUksUUFBSTtBQUVKLFNBQUssVUFBVSxJQUFJLFFBQVEsU0FBUyxnQkFBZ0IsU0FBUztBQUMzRCx1QkFBaUI7QUFBQSxJQUN2QixDQUFLO0FBRUQsVUFBTWtFLFNBQVE7QUFHZCxTQUFLLFFBQVEsS0FBSyxZQUFVO0FBQzFCLFVBQUksQ0FBQ0EsT0FBTSxXQUFZO0FBRXZCLFVBQUluRyxLQUFJbUcsT0FBTSxXQUFXO0FBRXpCLGFBQU9uRyxPQUFNLEdBQUc7QUFDZCxRQUFBbUcsT0FBTSxXQUFXbkcsRUFBQyxFQUFFLE1BQU07QUFBQSxNQUNsQztBQUNNLE1BQUFtRyxPQUFNLGFBQWE7QUFBQSxJQUN6QixDQUFLO0FBR0QsU0FBSyxRQUFRLE9BQU8saUJBQWU7QUFDakMsVUFBSTtBQUVKLFlBQU0sVUFBVSxJQUFJLFFBQVEsYUFBVztBQUNyQyxRQUFBQSxPQUFNLFVBQVUsT0FBTztBQUN2QixtQkFBVztBQUFBLE1BQ25CLENBQU8sRUFBRSxLQUFLLFdBQVc7QUFFbkIsY0FBUSxTQUFTLFNBQVMsU0FBUztBQUNqQyxRQUFBQSxPQUFNLFlBQVksUUFBUTtBQUFBLE1BQzNCO0FBRUQsYUFBTztBQUFBLElBQ1I7QUFFRCxhQUFTLFNBQVMsT0FBTyxTQUFTQyxTQUFRLFNBQVM7QUFDakQsVUFBSUQsT0FBTSxRQUFRO0FBRWhCO0FBQUEsTUFDUjtBQUVNLE1BQUFBLE9BQU0sU0FBUyxJQUFJLGNBQWMsU0FBU0MsU0FBUSxPQUFPO0FBQ3pELHFCQUFlRCxPQUFNLE1BQU07QUFBQSxJQUNqQyxDQUFLO0FBQUEsRUFDTDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0UsbUJBQW1CO0FBQ2pCLFFBQUksS0FBSyxRQUFRO0FBQ2YsWUFBTSxLQUFLO0FBQUEsSUFDakI7QUFBQSxFQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNRSxVQUFVLFVBQVU7QUFDbEIsUUFBSSxLQUFLLFFBQVE7QUFDZixlQUFTLEtBQUssTUFBTTtBQUNwQjtBQUFBLElBQ047QUFFSSxRQUFJLEtBQUssWUFBWTtBQUNuQixXQUFLLFdBQVcsS0FBSyxRQUFRO0FBQUEsSUFDbkMsT0FBVztBQUNMLFdBQUssYUFBYSxDQUFDLFFBQVE7QUFBQSxJQUNqQztBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1FLFlBQVksVUFBVTtBQUNwQixRQUFJLENBQUMsS0FBSyxZQUFZO0FBQ3BCO0FBQUEsSUFDTjtBQUNJLFVBQU16RSxTQUFRLEtBQUssV0FBVyxRQUFRLFFBQVE7QUFDOUMsUUFBSUEsV0FBVSxJQUFJO0FBQ2hCLFdBQUssV0FBVyxPQUFPQSxRQUFPLENBQUM7QUFBQSxJQUNyQztBQUFBLEVBQ0E7QUFBQSxFQUVFLGdCQUFnQjtBQUNkLFVBQU0sYUFBYSxJQUFJLGdCQUFpQjtBQUV4QyxVQUFNLFFBQVEsQ0FBQyxRQUFRO0FBQ3JCLGlCQUFXLE1BQU0sR0FBRztBQUFBLElBQ3JCO0FBRUQsU0FBSyxVQUFVLEtBQUs7QUFFcEIsZUFBVyxPQUFPLGNBQWMsTUFBTSxLQUFLLFlBQVksS0FBSztBQUU1RCxXQUFPLFdBQVc7QUFBQSxFQUN0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNRSxPQUFPLFNBQVM7QUFDZCxRQUFJO0FBQ0osVUFBTXlFLFNBQVEsSUFBSSxZQUFZLFNBQVMsU0FBU3RDLElBQUc7QUFDakQsZUFBU0E7QUFBQSxJQUNmLENBQUs7QUFDRCxXQUFPO0FBQUEsTUFDTCxPQUFBc0M7QUFBQSxNQUNBO0FBQUEsSUFDRDtBQUFBLEVBQ0w7QUFDQTtBQzdHZSxTQUFTLE9BQU8sVUFBVTtBQUN2QyxTQUFPLFNBQVMsS0FBSyxLQUFLO0FBQ3hCLFdBQU8sU0FBUyxNQUFNLE1BQU0sR0FBRztBQUFBLEVBQ2hDO0FBQ0g7QUNoQmUsU0FBUyxhQUFhLFNBQVM7QUFDNUMsU0FBT0UsUUFBTSxTQUFTLE9BQU8sS0FBTSxRQUFRLGlCQUFpQjtBQUM5RDtBQ2JBLE1BQU0saUJBQWlCO0FBQUEsRUFDckIsVUFBVTtBQUFBLEVBQ1Ysb0JBQW9CO0FBQUEsRUFDcEIsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osSUFBSTtBQUFBLEVBQ0osU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsNkJBQTZCO0FBQUEsRUFDN0IsV0FBVztBQUFBLEVBQ1gsY0FBYztBQUFBLEVBQ2QsZ0JBQWdCO0FBQUEsRUFDaEIsYUFBYTtBQUFBLEVBQ2IsaUJBQWlCO0FBQUEsRUFDakIsUUFBUTtBQUFBLEVBQ1IsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsaUJBQWlCO0FBQUEsRUFDakIsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1Ysa0JBQWtCO0FBQUEsRUFDbEIsZUFBZTtBQUFBLEVBQ2YsNkJBQTZCO0FBQUEsRUFDN0IsZ0JBQWdCO0FBQUEsRUFDaEIsVUFBVTtBQUFBLEVBQ1YsTUFBTTtBQUFBLEVBQ04sZ0JBQWdCO0FBQUEsRUFDaEIsb0JBQW9CO0FBQUEsRUFDcEIsaUJBQWlCO0FBQUEsRUFDakIsWUFBWTtBQUFBLEVBQ1osc0JBQXNCO0FBQUEsRUFDdEIscUJBQXFCO0FBQUEsRUFDckIsbUJBQW1CO0FBQUEsRUFDbkIsV0FBVztBQUFBLEVBQ1gsb0JBQW9CO0FBQUEsRUFDcEIscUJBQXFCO0FBQUEsRUFDckIsUUFBUTtBQUFBLEVBQ1Isa0JBQWtCO0FBQUEsRUFDbEIsVUFBVTtBQUFBLEVBQ1YsaUJBQWlCO0FBQUEsRUFDakIsc0JBQXNCO0FBQUEsRUFDdEIsaUJBQWlCO0FBQUEsRUFDakIsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsWUFBWTtBQUFBLEVBQ1osb0JBQW9CO0FBQUEsRUFDcEIsZ0JBQWdCO0FBQUEsRUFDaEIseUJBQXlCO0FBQUEsRUFDekIsdUJBQXVCO0FBQUEsRUFDdkIscUJBQXFCO0FBQUEsRUFDckIsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsK0JBQStCO0FBQ2pDO0FBRUEsT0FBTyxRQUFRLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQyxLQUFLLEtBQUssTUFBTTtBQUN2RCxpQkFBZSxLQUFLLElBQUk7QUFDMUIsQ0FBQztBQ3pDRCxTQUFTLGVBQWUsZUFBZTtBQUNyQyxRQUFNLFVBQVUsSUFBSSxNQUFNLGFBQWE7QUFDdkMsUUFBTTJCLFlBQVdwRCxPQUFLLE1BQU0sVUFBVSxTQUFTLE9BQU87QUFHdER5QixVQUFNLE9BQU8yQixXQUFVLE1BQU0sV0FBVyxTQUFTLEVBQUMsWUFBWSxLQUFJLENBQUM7QUFHbkUzQixVQUFNLE9BQU8yQixXQUFVLFNBQVMsTUFBTSxFQUFDLFlBQVksS0FBSSxDQUFDO0FBR3hELEVBQUFBLFVBQVMsU0FBUyxTQUFTaEcsUUFBTyxnQkFBZ0I7QUFDaEQsV0FBTyxlQUFlLFlBQVksZUFBZSxjQUFjLENBQUM7QUFBQSxFQUNqRTtBQUVELFNBQU9nRztBQUNUO0FBR0EsTUFBTSxRQUFRLGVBQWUsUUFBUTtBQUdyQyxNQUFNLFFBQVE7QUFHZCxNQUFNLGdCQUFnQjtBQUN0QixNQUFNLGNBQWM7QUFDcEIsTUFBTSxXQUFXO0FBQ2pCLE1BQU0sVUFBVTtBQUNoQixNQUFNLGFBQWE7QUFHbkIsTUFBTSxhQUFhO0FBR25CLE1BQU0sU0FBUyxNQUFNO0FBR3JCLE1BQU0sTUFBTSxTQUFTLElBQUksVUFBVTtBQUNqQyxTQUFPLFFBQVEsSUFBSSxRQUFRO0FBQzdCO0FBRUEsTUFBTSxTQUFTO0FBR2YsTUFBTSxlQUFlO0FBR3JCLE1BQU0sY0FBYztBQUVwQixNQUFNLGVBQWU7QUFFckIsTUFBTSxhQUFhLFdBQVMsZUFBZTNCLFFBQU0sV0FBVyxLQUFLLElBQUksSUFBSSxTQUFTLEtBQUssSUFBSSxLQUFLO0FBRWhHLE1BQU0sYUFBYSxTQUFTO0FBRTVCLE1BQU0saUJBQWlCO0FBRXZCLE1BQU0sVUFBVTtBQ3JGaEIsSUFBSTtBQUFBLENBQ0gsU0FBVTRCLFlBQVc7QUFDbEIsRUFBQUEsV0FBVUEsV0FBVSxXQUFXLElBQUksQ0FBQyxJQUFJO0FBQ3hDLEVBQUFBLFdBQVVBLFdBQVUsV0FBVyxJQUFJLENBQUMsSUFBSTtBQUN4QyxFQUFBQSxXQUFVQSxXQUFVLGtCQUFrQixJQUFJLENBQUMsSUFBSTtBQUMvQyxFQUFBQSxXQUFVQSxXQUFVLGlCQUFpQixJQUFJLENBQUMsSUFBSTtBQUNsRCxHQUFHLGNBQWMsWUFBWSxDQUFBLEVBQUc7QUFDaEMsTUFBQSxjQUFlO0FDUGY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdCQSxJQUFJQyxrQkFBZ0IsU0FBU3RFLElBQUdULElBQUc7QUFDL0IrRSxvQkFBZ0IsT0FBTyxrQkFDbEIsRUFBRSxXQUFXLENBQUEsZUFBZ0IsU0FBUyxTQUFVdEUsSUFBR1QsSUFBRztBQUFFLElBQUFTLEdBQUUsWUFBWVQ7QUFBQSxFQUFFLEtBQ3pFLFNBQVVTLElBQUdULElBQUc7QUFBRSxhQUFTZCxNQUFLYyxHQUFHLEtBQUlBLEdBQUUsZUFBZWQsRUFBQyxFQUFHLENBQUF1QixHQUFFdkIsRUFBQyxJQUFJYyxHQUFFZCxFQUFDO0FBQUE7QUFDMUUsU0FBTzZGLGdCQUFjdEUsSUFBR1QsRUFBQztBQUM3QjtBQUVPLFNBQVNnRixZQUFVdkUsSUFBR1QsSUFBRztBQUM1QitFLGtCQUFjdEUsSUFBR1QsRUFBQztBQUNsQixXQUFTLEtBQUs7QUFBRSxTQUFLLGNBQWNTO0FBQUEsRUFBSTtBQUN2QyxFQUFBQSxHQUFFLFlBQVlULE9BQU0sT0FBTyxPQUFPLE9BQU9BLEVBQUMsS0FBSyxHQUFHLFlBQVlBLEdBQUUsV0FBVyxJQUFJLEdBQUk7QUFDdkY7QUF3Q08sU0FBUyxVQUFVLFNBQVMsWUFBWWpELElBQUcsV0FBVztBQUN6RCxXQUFTLE1BQU0sT0FBTztBQUFFLFdBQU8saUJBQWlCQSxLQUFJLFFBQVEsSUFBSUEsR0FBRSxTQUFVLFNBQVM7QUFBRSxjQUFRLEtBQUs7QUFBQSxJQUFFLENBQUU7QUFBQSxFQUFJO0FBQzVHLFNBQU8sS0FBS0EsT0FBTUEsS0FBSSxVQUFVLFNBQVUsU0FBUyxRQUFRO0FBQ3ZELGFBQVMsVUFBVSxPQUFPO0FBQUUsVUFBSTtBQUFFLGFBQUssVUFBVSxLQUFLLEtBQUssQ0FBQztBQUFBLE1BQUUsU0FBVWlCLElBQUc7QUFBRSxlQUFPQSxFQUFDO0FBQUE7SUFBTTtBQUMzRixhQUFTLFNBQVMsT0FBTztBQUFFLFVBQUk7QUFBRSxhQUFLLFVBQVUsT0FBTyxFQUFFLEtBQUssQ0FBQztBQUFBLE1BQUksU0FBUUEsSUFBRztBQUFFLGVBQU9BLEVBQUM7QUFBQTtJQUFNO0FBQzlGLGFBQVMsS0FBSyxRQUFRO0FBQUUsYUFBTyxPQUFPLFFBQVEsT0FBTyxLQUFLLElBQUksTUFBTSxPQUFPLEtBQUssRUFBRSxLQUFLLFdBQVcsUUFBUTtBQUFBLElBQUk7QUFDOUcsVUFBTSxZQUFZLFVBQVUsTUFBTSxTQUF1QixDQUFFLENBQUEsR0FBRyxLQUFJLENBQUU7QUFBQSxFQUM1RSxDQUFLO0FBQ0w7QUFFTyxTQUFTLFlBQVksU0FBUyxNQUFNO0FBQ3ZDLE1BQUl4QixLQUFJLEVBQUUsT0FBTyxHQUFHLE1BQU0sV0FBVztBQUFFLFFBQUk2QyxHQUFFLENBQUMsSUFBSSxFQUFHLE9BQU1BLEdBQUUsQ0FBQztBQUFHLFdBQU9BLEdBQUUsQ0FBQztBQUFBLEVBQUksR0FBRSxNQUFNLENBQUUsR0FBRSxLQUFLLENBQUEsRUFBSSxHQUFFL0IsSUFBR0YsSUFBR2lDLElBQUd1QjtBQUMvRyxTQUFPQSxLQUFJLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FBRyxTQUFTLEtBQUssQ0FBQyxHQUFHLFVBQVUsS0FBSyxDQUFDLEVBQUcsR0FBRSxPQUFPLFdBQVcsZUFBZUEsR0FBRSxPQUFPLFFBQVEsSUFBSSxXQUFXO0FBQUUsV0FBTztBQUFBLEVBQU8sSUFBR0E7QUFDdkosV0FBUyxLQUFLM0IsSUFBRztBQUFFLFdBQU8sU0FBVU0sSUFBRztBQUFFLGFBQU8sS0FBSyxDQUFDTixJQUFHTSxFQUFDLENBQUM7QUFBQSxJQUFJO0FBQUEsRUFBRztBQUNsRSxXQUFTLEtBQUssSUFBSTtBQUNkLFFBQUlqQyxHQUFHLE9BQU0sSUFBSSxVQUFVLGlDQUFpQztBQUM1RCxXQUFPZCxHQUFHLEtBQUk7QUFDVixVQUFJYyxLQUFJLEdBQUdGLE9BQU1pQyxLQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUlqQyxHQUFFLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSUEsR0FBRSxPQUFPLE9BQU9pQyxLQUFJakMsR0FBRSxRQUFRLE1BQU1pQyxHQUFFLEtBQUtqQyxFQUFDLEdBQUcsS0FBS0EsR0FBRSxTQUFTLEVBQUVpQyxLQUFJQSxHQUFFLEtBQUtqQyxJQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBTSxRQUFPaUM7QUFDM0osVUFBSWpDLEtBQUksR0FBR2lDLEdBQUcsTUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUdBLEdBQUUsS0FBSztBQUN0QyxjQUFRLEdBQUcsQ0FBQyxHQUFDO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFBRyxLQUFLO0FBQUcsVUFBQUEsS0FBSTtBQUFJO0FBQUEsUUFDeEIsS0FBSztBQUFHLFVBQUE3QyxHQUFFO0FBQVMsaUJBQU8sRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLE1BQU0sTUFBSztBQUFBLFFBQ3JELEtBQUs7QUFBRyxVQUFBQSxHQUFFO0FBQVMsVUFBQVksS0FBSSxHQUFHLENBQUM7QUFBRyxlQUFLLENBQUMsQ0FBQztBQUFHO0FBQUEsUUFDeEMsS0FBSztBQUFHLGVBQUtaLEdBQUUsSUFBSTtBQUFPLFVBQUFBLEdBQUUsS0FBSyxJQUFHO0FBQUk7QUFBQSxRQUN4QztBQUNJLGNBQUksRUFBRTZDLEtBQUk3QyxHQUFFLE1BQU02QyxLQUFJQSxHQUFFLFNBQVMsS0FBS0EsR0FBRUEsR0FBRSxTQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLElBQUk7QUFBRSxZQUFBN0MsS0FBSTtBQUFHO0FBQUEsVUFBVztBQUM1RyxjQUFJLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQzZDLE1BQU0sR0FBRyxDQUFDLElBQUlBLEdBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJQSxHQUFFLENBQUMsSUFBSztBQUFFLFlBQUE3QyxHQUFFLFFBQVEsR0FBRyxDQUFDO0FBQUc7QUFBQSxVQUFRO0FBQ3RGLGNBQUksR0FBRyxDQUFDLE1BQU0sS0FBS0EsR0FBRSxRQUFRNkMsR0FBRSxDQUFDLEdBQUc7QUFBRSxZQUFBN0MsR0FBRSxRQUFRNkMsR0FBRSxDQUFDO0FBQUcsWUFBQUEsS0FBSTtBQUFJO0FBQUEsVUFBUTtBQUNyRSxjQUFJQSxNQUFLN0MsR0FBRSxRQUFRNkMsR0FBRSxDQUFDLEdBQUc7QUFBRSxZQUFBN0MsR0FBRSxRQUFRNkMsR0FBRSxDQUFDO0FBQUcsWUFBQTdDLEdBQUUsSUFBSSxLQUFLLEVBQUU7QUFBRztBQUFBLFVBQVE7QUFDbkUsY0FBSTZDLEdBQUUsQ0FBQyxFQUFHLENBQUE3QyxHQUFFLElBQUksSUFBRztBQUNuQixVQUFBQSxHQUFFLEtBQUssSUFBSztBQUFFO0FBQUEsTUFDckI7QUFDRCxXQUFLLEtBQUssS0FBSyxTQUFTQSxFQUFDO0FBQUEsSUFDNUIsU0FBUXdCLElBQUc7QUFBRSxXQUFLLENBQUMsR0FBR0EsRUFBQztBQUFHLE1BQUFaLEtBQUk7QUFBQSxJQUFFLFVBQVc7QUFBRSxNQUFBRSxLQUFJK0IsS0FBSTtBQUFBLElBQUk7QUFDMUQsUUFBSSxHQUFHLENBQUMsSUFBSSxFQUFHLE9BQU0sR0FBRyxDQUFDO0FBQUcsV0FBTyxFQUFFLE9BQU8sR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksUUFBUSxNQUFNO0VBQzdFO0FBQ0w7QUFXTyxTQUFTNEYsV0FBU0MsSUFBRztBQUN4QixNQUFJUixLQUFJLE9BQU8sV0FBVyxjQUFjLE9BQU8sVUFBVTdELEtBQUk2RCxNQUFLUSxHQUFFUixFQUFDLEdBQUc3SCxLQUFJO0FBQzVFLE1BQUlnRSxHQUFHLFFBQU9BLEdBQUUsS0FBS3FFLEVBQUM7QUFDdEIsTUFBSUEsTUFBSyxPQUFPQSxHQUFFLFdBQVcsU0FBVSxRQUFPO0FBQUEsSUFDMUMsTUFBTSxXQUFZO0FBQ2QsVUFBSUEsTUFBS3JJLE1BQUtxSSxHQUFFLE9BQVEsQ0FBQUEsS0FBSTtBQUM1QixhQUFPLEVBQUUsT0FBT0EsTUFBS0EsR0FBRXJJLElBQUcsR0FBRyxNQUFNLENBQUNxSTtJQUN2QztBQUFBLEVBQ1Q7QUFDSSxRQUFNLElBQUksVUFBVVIsS0FBSSw0QkFBNEIsaUNBQWlDO0FBQ3pGO0FBRU8sU0FBU1MsU0FBT0QsSUFBR2pHLElBQUc7QUFDekIsTUFBSTRCLEtBQUksT0FBTyxXQUFXLGNBQWNxRSxHQUFFLE9BQU8sUUFBUTtBQUN6RCxNQUFJLENBQUNyRSxHQUFHLFFBQU9xRTtBQUNmLE1BQUlySSxLQUFJZ0UsR0FBRSxLQUFLcUUsRUFBQyxHQUFHOUYsSUFBRyxLQUFLLENBQUUsR0FBRXBCO0FBQy9CLE1BQUk7QUFDQSxZQUFRaUIsT0FBTSxVQUFVQSxPQUFNLE1BQU0sRUFBRUcsS0FBSXZDLEdBQUUsS0FBTSxHQUFFLEtBQU0sSUFBRyxLQUFLdUMsR0FBRSxLQUFLO0FBQUEsRUFDNUUsU0FDTSxPQUFPO0FBQUUsSUFBQXBCLEtBQUksRUFBRSxNQUFjO0FBQUEsRUFBRyxVQUMvQjtBQUNKLFFBQUk7QUFDQSxVQUFJb0IsTUFBSyxDQUFDQSxHQUFFLFNBQVN5QixLQUFJaEUsR0FBRSxRQUFRLEdBQUksQ0FBQWdFLEdBQUUsS0FBS2hFLEVBQUM7QUFBQSxJQUNsRCxVQUNPO0FBQUUsVUFBSW1CLEdBQUcsT0FBTUEsR0FBRTtBQUFBLElBQVE7QUFBQSxFQUNwQztBQUNELFNBQU87QUFDWDtBQUVPLFNBQVMsV0FBVztBQUN2QixXQUFTLEtBQUssQ0FBQSxHQUFJbkIsS0FBSSxHQUFHQSxLQUFJLFVBQVUsUUFBUUE7QUFDM0MsU0FBSyxHQUFHLE9BQU9zSSxTQUFPLFVBQVV0SSxFQUFDLENBQUMsQ0FBQztBQUN2QyxTQUFPO0FBQ1g7QUNuSk8sSUFBSSwrQkFBK0I7QUFDbkMsU0FBUyxhQUFhLFFBQVE7QUFDakMsTUFBSSxTQUFTLFFBQVEsWUFBWSxxQkFBcUIsTUFBTSxLQUFLLENBQUU7QUFDbkUsTUFBSSxrQkFBa0IsUUFBUSxlQUFlLDhCQUE4QixNQUFNLEtBQUssQ0FBRTtBQUN4RixTQUFPLEtBQUssZUFBZSxFQUFFLFFBQVEsU0FBVSxLQUFLO0FBQ2hELFdBQU8sQ0FBQyxHQUFHLElBQUksZ0JBQWdCLEdBQUc7QUFBQSxFQUMxQyxDQUFLO0FBQ0QsU0FBTztBQUNYO0FDUk8sU0FBUyxnQkFBZ0IsVUFBVTtBQUN0QyxTQUFPLENBQUMsQ0FBQyxTQUFTO0FBQ3RCO0FDRk8sU0FBUyxrQkFBa0IsVUFBVTtBQUN4QyxTQUFPLENBQUMsQ0FBQyxTQUFTO0FBQ3RCO0FDREEsSUFBSSxxQkFBc0IsV0FBWTtBQUNsQyxXQUFTdUksb0JBQW1CLE1BQU07QUFDOUIsU0FBSyxPQUFPO0FBQ1osU0FBSyxpQkFBaUI7QUFBQSxNQUNsQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNIO0FBQUEsRUFDVDtBQUNJLEVBQUFBLG9CQUFtQixVQUFVLGNBQWMsU0FBVSxjQUFjO0FBQy9ELFFBQUksUUFBUTtBQUNaLFFBQUksU0FBUyxDQUFFO0FBQ2YsUUFBSSxPQUFPO0FBQ1gsUUFBSTtBQUNKLFFBQUksZ0JBQWdCLFdBQVk7QUFDNUIsVUFBSSxDQUFDLE1BQU07QUFDUCxnQkFBUSxhQUFhLE1BQU0sTUFBTTtBQUNqQyxlQUFPO0FBQUEsTUFDdkI7QUFDWSxhQUFPO0FBQUEsSUFDVjtBQUNELFdBQU8sSUFBSSxNQUFNLFFBQVEsS0FBSyxjQUFjLGFBQWEsQ0FBQztBQUFBLEVBQzdEO0FBQ0QsRUFBQUEsb0JBQW1CLFVBQVUsZ0JBQWdCLFNBQVUsZUFBZTtBQUNsRSxRQUFJLFVBQVUsQ0FBRTtBQUNoQixRQUFJLFVBQVUsU0FBVSxNQUFNO0FBQzFCLGNBQVEsSUFBSSxJQUFJLFdBQVk7QUFDeEIsWUFBSSxPQUFPLENBQUU7QUFDYixpQkFBUyxLQUFLLEdBQUcsS0FBSyxVQUFVLFFBQVEsTUFBTTtBQUMxQyxlQUFLLEVBQUUsSUFBSSxVQUFVLEVBQUU7QUFBQSxRQUMzQztBQUNnQixhQUFLLENBQUMsSUFBSSxjQUFlO0FBQ3pCLFlBQUksU0FBUyxRQUFRLElBQUk7QUFDekIsZUFBTyxPQUFPLE1BQU0sUUFBUSxTQUFTLElBQUksQ0FBQztBQUFBLE1BQzdDO0FBQUEsSUFDSjtBQUNELFNBQUssZUFBZSxRQUFRLE9BQU87QUFDbkMsV0FBTztBQUFBLEVBQ1Y7QUFDRCxTQUFPQTtBQUNYO0FDaERPLFNBQVMsY0FBY3BDLFFBQU87QUFDakMsU0FBTyxPQUFPQSxXQUFVLFlBQVksT0FBT0EsV0FBVTtBQUN6RDtBQUNPLFNBQVMsa0JBQWtCLFlBQVk7QUFDMUMsU0FBUSxPQUFPLGVBQWUsWUFDMUIsV0FBVyxjQUNYLGNBQWM7QUFDdEI7QUFDTyxTQUFTLHNCQUFzQixZQUFZO0FBQzlDLFNBQVEsT0FBTyxlQUFlLFlBQzFCLFdBQVcsY0FDWCxlQUFlO0FBQ3ZCO0FBQ08sU0FBUyxtQkFBbUJBLFFBQU87QUFDdEMsU0FBTyxPQUFPQSxXQUFVLGNBQWNBLGtCQUFpQjtBQUMzRDtBQ2hCTyxTQUFTLGdCQUFnQixVQUFVO0FBQ3RDLFNBQU8sQ0FBQyxDQUFDLFNBQVM7QUFDdEI7QUNGTyxTQUFTLGdCQUFnQixVQUFVO0FBQ3RDLFNBQU8sU0FBUyxZQUFZO0FBQ2hDO0FDRU8sU0FBUyxXQUFXLFVBQVU7QUFDakMsU0FBUSxnQkFBZ0IsUUFBUSxLQUM1QixnQkFBZ0IsUUFBUSxLQUN4QixnQkFBZ0IsUUFBUSxLQUN4QixrQkFBa0IsUUFBUTtBQUNsQztBQ1RBLElBQUksZUFBZ0IsV0FBWTtBQUM1QixXQUFTcUMsZ0JBQWU7QUFDcEIsU0FBSyxlQUFlLG9CQUFJLElBQUs7QUFBQSxFQUNyQztBQUNJLEVBQUFBLGNBQWEsVUFBVSxVQUFVLFdBQVk7QUFDekMsV0FBTyxLQUFLLGFBQWEsUUFBUztBQUFBLEVBQ3JDO0FBQ0QsRUFBQUEsY0FBYSxVQUFVLFNBQVMsU0FBVSxLQUFLO0FBQzNDLFNBQUssT0FBTyxHQUFHO0FBQ2YsV0FBTyxLQUFLLGFBQWEsSUFBSSxHQUFHO0FBQUEsRUFDbkM7QUFDRCxFQUFBQSxjQUFhLFVBQVUsTUFBTSxTQUFVLEtBQUs7QUFDeEMsU0FBSyxPQUFPLEdBQUc7QUFDZixRQUFJLFFBQVEsS0FBSyxhQUFhLElBQUksR0FBRztBQUNyQyxXQUFPLE1BQU0sTUFBTSxTQUFTLENBQUMsS0FBSztBQUFBLEVBQ3JDO0FBQ0QsRUFBQUEsY0FBYSxVQUFVLE1BQU0sU0FBVSxLQUFLLE9BQU87QUFDL0MsU0FBSyxPQUFPLEdBQUc7QUFDZixTQUFLLGFBQWEsSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLO0FBQUEsRUFDeEM7QUFDRCxFQUFBQSxjQUFhLFVBQVUsU0FBUyxTQUFVLEtBQUssT0FBTztBQUNsRCxTQUFLLGFBQWEsSUFBSSxLQUFLLEtBQUs7QUFBQSxFQUNuQztBQUNELEVBQUFBLGNBQWEsVUFBVSxNQUFNLFNBQVUsS0FBSztBQUN4QyxTQUFLLE9BQU8sR0FBRztBQUNmLFdBQU8sS0FBSyxhQUFhLElBQUksR0FBRyxFQUFFLFNBQVM7QUFBQSxFQUM5QztBQUNELEVBQUFBLGNBQWEsVUFBVSxRQUFRLFdBQVk7QUFDdkMsU0FBSyxhQUFhLE1BQU87QUFBQSxFQUM1QjtBQUNELEVBQUFBLGNBQWEsVUFBVSxTQUFTLFNBQVUsS0FBSztBQUMzQyxRQUFJLENBQUMsS0FBSyxhQUFhLElBQUksR0FBRyxHQUFHO0FBQzdCLFdBQUssYUFBYSxJQUFJLEtBQUssQ0FBQSxDQUFFO0FBQUEsSUFDekM7QUFBQSxFQUNLO0FBQ0QsU0FBT0E7QUFDWDtBQ2xDQSxJQUFJLFdBQVksU0FBVSxRQUFRO0FBQzlCTCxjQUFVTSxXQUFVLE1BQU07QUFDMUIsV0FBU0EsWUFBVztBQUNoQixXQUFPLFdBQVcsUUFBUSxPQUFPLE1BQU0sTUFBTSxTQUFTLEtBQUs7QUFBQSxFQUNuRTtBQUNJLFNBQU9BO0FBQ1gsRUFBRSxZQUFZO0FDUmQsSUFBSSxvQkFBcUIsMkJBQVk7QUFDakMsV0FBU0MscUJBQW9CO0FBQ3pCLFNBQUssb0JBQW9CLG9CQUFJLElBQUs7QUFBQSxFQUMxQztBQUNJLFNBQU9BO0FBQ1g7QUNKQSxTQUFTLGlCQUFpQixRQUFRLEtBQUs7QUFDbkMsTUFBSSxXQUFXLE1BQU07QUFDakIsV0FBTyxrQkFBa0I7QUFBQSxFQUNqQztBQUNJLE1BQUksVUFBVSxPQUFPLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFNO0FBQzNDLFNBQU8sTUFBTyxVQUFVLG9CQUFxQjtBQUNqRDtBQUNBLFNBQVMsb0JBQW9CLEtBQUt2SCxJQUFHLFFBQVE7QUFDekMsTUFBSSxXQUFXLFFBQVE7QUFBRSxhQUFTO0FBQUEsRUFBTztBQUN6QyxTQUFPLFNBQVMsQ0FBQyxHQUFHLEdBQUdBLEdBQUUsUUFBUSxNQUFNLElBQUksRUFBRSxJQUFJLFNBQVVnQixJQUFHO0FBQUUsV0FBTyxTQUFTQTtBQUFBLEVBQUUsQ0FBRSxDQUFDLEVBQUUsS0FBSyxJQUFJO0FBQ3BHO0FBQ08sU0FBUyxnQkFBZ0IsTUFBTSxVQUFVLE9BQU87QUFDbkQsTUFBSSxLQUFLbUcsU0FBTyxLQUFLLFNBQVUsRUFBQyxNQUFNLDBCQUEwQixLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsU0FBUyxPQUFPLFNBQVMsT0FBTztBQUN6SCxNQUFJLE1BQU0saUJBQWlCLFFBQVEsUUFBUTtBQUMzQyxTQUFPLG9CQUFvQixrQ0FBa0MsTUFBTSxVQUFXLEtBQUssT0FBTywwQkFBMkIsS0FBSztBQUM5SDtBQ2hCTyxTQUFTLGFBQWEsT0FBTztBQUNoQyxNQUFJLE9BQU8sTUFBTSxZQUFZO0FBQ3pCLFdBQU87QUFDWCxNQUFJLGFBQWEsTUFBTTtBQUN2QixNQUFJLFdBQVcsU0FBUyxHQUFHO0FBQ3ZCLFdBQU87QUFBQSxFQUNmO0FBQ0ksU0FBTztBQUNYO0FDTkEsSUFBSSw0QkFBNkIsU0FBVSxRQUFRO0FBQy9DSCxjQUFVUSw0QkFBMkIsTUFBTTtBQUMzQyxXQUFTQSw2QkFBNEI7QUFDakMsV0FBTyxXQUFXLFFBQVEsT0FBTyxNQUFNLE1BQU0sU0FBUyxLQUFLO0FBQUEsRUFDbkU7QUFDSSxTQUFPQTtBQUNYLEVBQUUsWUFBWTtBQUVkLElBQUksNkJBQThCLFNBQVUsUUFBUTtBQUNoRFIsY0FBVVMsNkJBQTRCLE1BQU07QUFDNUMsV0FBU0EsOEJBQTZCO0FBQ2xDLFdBQU8sV0FBVyxRQUFRLE9BQU8sTUFBTSxNQUFNLFNBQVMsS0FBSztBQUFBLEVBQ25FO0FBQ0ksU0FBT0E7QUFDWCxFQUFFLFlBQVk7QUFFZCxJQUFJLGVBQWdCLDJCQUFZO0FBQzVCLFdBQVNDLGdCQUFlO0FBQ3BCLFNBQUssZ0JBQWdCLElBQUksMEJBQTJCO0FBQ3BELFNBQUssaUJBQWlCLElBQUksMkJBQTRCO0FBQUEsRUFDOUQ7QUFDSSxTQUFPQTtBQUNYO0FDYk8sSUFBSSxXQUFXLG9CQUFJLElBQUs7QUFDL0IsSUFBSSw4QkFBK0IsV0FBWTtBQUMzQyxXQUFTQyw2QkFBNEIsUUFBUTtBQUN6QyxTQUFLLFNBQVM7QUFDZCxTQUFLLFlBQVksSUFBSSxTQUFVO0FBQy9CLFNBQUssZUFBZSxJQUFJLGFBQWM7QUFDdEMsU0FBSyxXQUFXO0FBQ2hCLFNBQUssY0FBYyxvQkFBSSxJQUFLO0FBQUEsRUFDcEM7QUFDSSxFQUFBQSw2QkFBNEIsVUFBVSxXQUFXLFNBQVUzQyxRQUFPLHVCQUF1QkcsVUFBUztBQUM5RixRQUFJQSxhQUFZLFFBQVE7QUFBRSxNQUFBQSxXQUFVLEVBQUUsV0FBVzJCLFlBQVU7SUFBWTtBQUN2RSxTQUFLLGtCQUFtQjtBQUN4QixRQUFJO0FBQ0osUUFBSSxDQUFDLFdBQVcscUJBQXFCLEdBQUc7QUFDcEMsaUJBQVcsRUFBRSxVQUFVLHNCQUF1QjtBQUFBLElBQzFELE9BQ2E7QUFDRCxpQkFBVztBQUFBLElBQ3ZCO0FBQ1EsUUFBSSxnQkFBZ0IsUUFBUSxHQUFHO0FBQzNCLFVBQUksT0FBTyxDQUFDOUIsTUFBSztBQUNqQixVQUFJLGdCQUFnQjtBQUNwQixhQUFPLGlCQUFpQixNQUFNO0FBQzFCLFlBQUksZUFBZSxjQUFjO0FBQ2pDLFlBQUksS0FBSyxTQUFTLFlBQVksR0FBRztBQUM3QixnQkFBTSxJQUFJLE1BQU0sd0NBQXdDLFNBQVMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDO0FBQUEsUUFDdkg7QUFDZ0IsYUFBSyxLQUFLLFlBQVk7QUFDdEIsWUFBSSxlQUFlLEtBQUssVUFBVSxJQUFJLFlBQVk7QUFDbEQsWUFBSSxnQkFBZ0IsZ0JBQWdCLGFBQWEsUUFBUSxHQUFHO0FBQ3hELDBCQUFnQixhQUFhO0FBQUEsUUFDakQsT0FDcUI7QUFDRCwwQkFBZ0I7QUFBQSxRQUNwQztBQUFBLE1BQ0E7QUFBQSxJQUNBO0FBQ1EsUUFBSUcsU0FBUSxjQUFjMkIsWUFBVSxhQUNoQzNCLFNBQVEsYUFBYTJCLFlBQVUsbUJBQy9CM0IsU0FBUSxhQUFhMkIsWUFBVSxrQkFBa0I7QUFDakQsVUFBSSxnQkFBZ0IsUUFBUSxLQUFLLGtCQUFrQixRQUFRLEdBQUc7QUFDMUQsY0FBTSxJQUFJLE1BQU0sMkJBQTRCQSxZQUFVM0IsU0FBUSxTQUFTLElBQUksMkNBQTRDO0FBQUEsTUFDdkk7QUFBQSxJQUNBO0FBQ1EsU0FBSyxVQUFVLElBQUlILFFBQU8sRUFBRSxVQUFvQixTQUFTRyxVQUFTO0FBQ2xFLFdBQU87QUFBQSxFQUNWO0FBQ0QsRUFBQXdDLDZCQUE0QixVQUFVLGVBQWUsU0FBVUMsT0FBTSxJQUFJO0FBQ3JFLFNBQUssa0JBQW1CO0FBQ3hCLFFBQUksY0FBYyxFQUFFLEdBQUc7QUFDbkIsYUFBTyxLQUFLLFNBQVNBLE9BQU07QUFBQSxRQUN2QixVQUFVO0FBQUEsTUFDMUIsQ0FBYTtBQUFBLElBQ2I7QUFDUSxXQUFPLEtBQUssU0FBU0EsT0FBTTtBQUFBLE1BQ3ZCLFVBQVU7QUFBQSxJQUN0QixDQUFTO0FBQUEsRUFDSjtBQUNELEVBQUFELDZCQUE0QixVQUFVLG1CQUFtQixTQUFVM0MsUUFBTzZCLFdBQVU7QUFDaEYsU0FBSyxrQkFBbUI7QUFDeEIsV0FBTyxLQUFLLFNBQVM3QixRQUFPO0FBQUEsTUFDeEIsVUFBVTZCO0FBQUEsSUFDdEIsQ0FBUztBQUFBLEVBQ0o7QUFDRCxFQUFBYyw2QkFBNEIsVUFBVSxvQkFBb0IsU0FBVUMsT0FBTSxJQUFJO0FBQzFFLFNBQUssa0JBQW1CO0FBQ3hCLFFBQUksY0FBY0EsS0FBSSxHQUFHO0FBQ3JCLFVBQUksY0FBYyxFQUFFLEdBQUc7QUFDbkIsZUFBTyxLQUFLLFNBQVNBLE9BQU07QUFBQSxVQUN2QixVQUFVO0FBQUEsUUFDYixHQUFFLEVBQUUsV0FBV2QsWUFBVSxXQUFXO0FBQUEsTUFDckQsV0FDcUIsSUFBSTtBQUNULGVBQU8sS0FBSyxTQUFTYyxPQUFNO0FBQUEsVUFDdkIsVUFBVTtBQUFBLFFBQ2IsR0FBRSxFQUFFLFdBQVdkLFlBQVUsV0FBVztBQUFBLE1BQ3JEO0FBQ1ksWUFBTSxJQUFJLE1BQU0saUVBQWlFO0FBQUEsSUFDN0Y7QUFDUSxRQUFJLFdBQVdjO0FBQ2YsUUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFLEdBQUc7QUFDMUIsaUJBQVc7QUFBQSxJQUN2QjtBQUNRLFdBQU8sS0FBSyxTQUFTQSxPQUFNO0FBQUEsTUFDdkI7QUFBQSxJQUNILEdBQUUsRUFBRSxXQUFXZCxZQUFVLFdBQVc7QUFBQSxFQUN4QztBQUNELEVBQUFhLDZCQUE0QixVQUFVLFVBQVUsU0FBVTNDLFFBQU8sU0FBUztBQUN0RSxRQUFJLFlBQVksUUFBUTtBQUFFLGdCQUFVLElBQUksa0JBQWlCO0FBQUEsSUFBRztBQUM1RCxTQUFLLGtCQUFtQjtBQUN4QixRQUFJLGVBQWUsS0FBSyxnQkFBZ0JBLE1BQUs7QUFDN0MsUUFBSSxDQUFDLGdCQUFnQixjQUFjQSxNQUFLLEdBQUc7QUFDdkMsWUFBTSxJQUFJLE1BQU0sMERBQTJEQSxPQUFNLFNBQVEsSUFBSyxHQUFJO0FBQUEsSUFDOUc7QUFDUSxTQUFLLGdDQUFnQ0EsUUFBTyxRQUFRO0FBQ3BELFFBQUksY0FBYztBQUNkLFVBQUksU0FBUyxLQUFLLG9CQUFvQixjQUFjLE9BQU87QUFDM0QsV0FBSyxpQ0FBaUNBLFFBQU8sUUFBUSxRQUFRO0FBQzdELGFBQU87QUFBQSxJQUNuQjtBQUNRLFFBQUksbUJBQW1CQSxNQUFLLEdBQUc7QUFDM0IsVUFBSSxTQUFTLEtBQUssVUFBVUEsUUFBTyxPQUFPO0FBQzFDLFdBQUssaUNBQWlDQSxRQUFPLFFBQVEsUUFBUTtBQUM3RCxhQUFPO0FBQUEsSUFDbkI7QUFDUSxVQUFNLElBQUksTUFBTSx3SEFBd0g7QUFBQSxFQUMzSTtBQUNELEVBQUEyQyw2QkFBNEIsVUFBVSxrQ0FBa0MsU0FBVTNDLFFBQU8sZ0JBQWdCO0FBQ3JHLFFBQUksS0FBSztBQUNULFFBQUksS0FBSyxhQUFhLGNBQWMsSUFBSUEsTUFBSyxHQUFHO0FBQzVDLFVBQUksd0JBQXdCLENBQUU7QUFDOUIsVUFBSTtBQUNBLGlCQUFTLEtBQUtpQyxXQUFTLEtBQUssYUFBYSxjQUFjLE9BQU9qQyxNQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsS0FBTSxHQUFFLENBQUMsR0FBRyxNQUFNLEtBQUssR0FBRyxRQUFRO0FBQzdHLGNBQUksY0FBYyxHQUFHO0FBQ3JCLGNBQUksWUFBWSxRQUFRLGFBQWEsUUFBUTtBQUN6QyxrQ0FBc0IsS0FBSyxXQUFXO0FBQUEsVUFDOUQ7QUFDb0Isc0JBQVksU0FBU0EsUUFBTyxjQUFjO0FBQUEsUUFDOUQ7QUFBQSxNQUNBLFNBQ21CLE9BQU87QUFBRSxjQUFNLEVBQUUsT0FBTyxNQUFLO0FBQUEsTUFBRyxVQUMvQjtBQUNKLFlBQUk7QUFDQSxjQUFJLE1BQU0sQ0FBQyxHQUFHLFNBQVMsS0FBSyxHQUFHLFFBQVMsSUFBRyxLQUFLLEVBQUU7QUFBQSxRQUN0RSxVQUN3QjtBQUFFLGNBQUksSUFBSyxPQUFNLElBQUk7QUFBQSxRQUFNO0FBQUEsTUFDbkQ7QUFDWSxXQUFLLGFBQWEsY0FBYyxPQUFPQSxRQUFPLHFCQUFxQjtBQUFBLElBQy9FO0FBQUEsRUFDSztBQUNELEVBQUEyQyw2QkFBNEIsVUFBVSxtQ0FBbUMsU0FBVTNDLFFBQU8sUUFBUSxnQkFBZ0I7QUFDOUcsUUFBSSxLQUFLO0FBQ1QsUUFBSSxLQUFLLGFBQWEsZUFBZSxJQUFJQSxNQUFLLEdBQUc7QUFDN0MsVUFBSSx3QkFBd0IsQ0FBRTtBQUM5QixVQUFJO0FBQ0EsaUJBQVMsS0FBS2lDLFdBQVMsS0FBSyxhQUFhLGVBQWUsT0FBT2pDLE1BQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxLQUFNLEdBQUUsQ0FBQyxHQUFHLE1BQU0sS0FBSyxHQUFHLFFBQVE7QUFDOUcsY0FBSSxjQUFjLEdBQUc7QUFDckIsY0FBSSxZQUFZLFFBQVEsYUFBYSxRQUFRO0FBQ3pDLGtDQUFzQixLQUFLLFdBQVc7QUFBQSxVQUM5RDtBQUNvQixzQkFBWSxTQUFTQSxRQUFPLFFBQVEsY0FBYztBQUFBLFFBQ3RFO0FBQUEsTUFDQSxTQUNtQixPQUFPO0FBQUUsY0FBTSxFQUFFLE9BQU8sTUFBSztBQUFBLE1BQUcsVUFDL0I7QUFDSixZQUFJO0FBQ0EsY0FBSSxNQUFNLENBQUMsR0FBRyxTQUFTLEtBQUssR0FBRyxRQUFTLElBQUcsS0FBSyxFQUFFO0FBQUEsUUFDdEUsVUFDd0I7QUFBRSxjQUFJLElBQUssT0FBTSxJQUFJO0FBQUEsUUFBTTtBQUFBLE1BQ25EO0FBQ1ksV0FBSyxhQUFhLGVBQWUsT0FBT0EsUUFBTyxxQkFBcUI7QUFBQSxJQUNoRjtBQUFBLEVBQ0s7QUFDRCxFQUFBMkMsNkJBQTRCLFVBQVUsc0JBQXNCLFNBQVUsY0FBYyxTQUFTO0FBQ3pGLFNBQUssa0JBQW1CO0FBQ3hCLFFBQUksYUFBYSxRQUFRLGNBQWNiLFlBQVUsb0JBQzdDLFFBQVEsa0JBQWtCLElBQUksWUFBWSxHQUFHO0FBQzdDLGFBQU8sUUFBUSxrQkFBa0IsSUFBSSxZQUFZO0FBQUEsSUFDN0Q7QUFDUSxRQUFJLGNBQWMsYUFBYSxRQUFRLGNBQWNBLFlBQVU7QUFDL0QsUUFBSSxvQkFBb0IsYUFBYSxRQUFRLGNBQWNBLFlBQVU7QUFDckUsUUFBSSxpQkFBaUIsZUFBZTtBQUNwQyxRQUFJO0FBQ0osUUFBSSxnQkFBZ0IsYUFBYSxRQUFRLEdBQUc7QUFDeEMsaUJBQVcsYUFBYSxTQUFTO0FBQUEsSUFDN0MsV0FDaUIsZ0JBQWdCLGFBQWEsUUFBUSxHQUFHO0FBQzdDLGlCQUFXLGlCQUNMLGFBQWEsYUFDVixhQUFhLFdBQVcsS0FBSyxRQUFRLGFBQWEsU0FBUyxVQUFVLE9BQU8sS0FDL0UsS0FBSyxRQUFRLGFBQWEsU0FBUyxVQUFVLE9BQU87QUFBQSxJQUN0RSxXQUNpQixnQkFBZ0IsYUFBYSxRQUFRLEdBQUc7QUFDN0MsaUJBQVcsaUJBQ0wsYUFBYSxhQUNWLGFBQWEsV0FBVyxLQUFLLFVBQVUsYUFBYSxTQUFTLFVBQVUsT0FBTyxLQUNqRixLQUFLLFVBQVUsYUFBYSxTQUFTLFVBQVUsT0FBTztBQUFBLElBQ3hFLFdBQ2lCLGtCQUFrQixhQUFhLFFBQVEsR0FBRztBQUMvQyxpQkFBVyxhQUFhLFNBQVMsV0FBVyxJQUFJO0FBQUEsSUFDNUQsT0FDYTtBQUNELGlCQUFXLEtBQUssVUFBVSxhQUFhLFVBQVUsT0FBTztBQUFBLElBQ3BFO0FBQ1EsUUFBSSxhQUFhLFFBQVEsY0FBY0EsWUFBVSxrQkFBa0I7QUFDL0QsY0FBUSxrQkFBa0IsSUFBSSxjQUFjLFFBQVE7QUFBQSxJQUNoRTtBQUNRLFdBQU87QUFBQSxFQUNWO0FBQ0QsRUFBQWEsNkJBQTRCLFVBQVUsYUFBYSxTQUFVM0MsUUFBTyxTQUFTO0FBQ3pFLFFBQUksUUFBUTtBQUNaLFFBQUksWUFBWSxRQUFRO0FBQUUsZ0JBQVUsSUFBSSxrQkFBaUI7QUFBQSxJQUFHO0FBQzVELFNBQUssa0JBQW1CO0FBQ3hCLFFBQUksZ0JBQWdCLEtBQUssb0JBQW9CQSxNQUFLO0FBQ2xELFFBQUksQ0FBQyxpQkFBaUIsY0FBY0EsTUFBSyxHQUFHO0FBQ3hDLFlBQU0sSUFBSSxNQUFNLDBEQUEyREEsT0FBTSxTQUFRLElBQUssR0FBSTtBQUFBLElBQzlHO0FBQ1EsU0FBSyxnQ0FBZ0NBLFFBQU8sS0FBSztBQUNqRCxRQUFJLGVBQWU7QUFDZixVQUFJLFdBQVcsY0FBYyxJQUFJLFNBQVUsTUFBTTtBQUM3QyxlQUFPLE1BQU0sb0JBQW9CLE1BQU0sT0FBTztBQUFBLE1BQzlELENBQWE7QUFDRCxXQUFLLGlDQUFpQ0EsUUFBTyxVQUFVLEtBQUs7QUFDNUQsYUFBTztBQUFBLElBQ25CO0FBQ1EsUUFBSSxTQUFTLENBQUMsS0FBSyxVQUFVQSxRQUFPLE9BQU8sQ0FBQztBQUM1QyxTQUFLLGlDQUFpQ0EsUUFBTyxRQUFRLEtBQUs7QUFDMUQsV0FBTztBQUFBLEVBQ1Y7QUFDRCxFQUFBMkMsNkJBQTRCLFVBQVUsZUFBZSxTQUFVM0MsUUFBTyxXQUFXO0FBQzdFLFFBQUksY0FBYyxRQUFRO0FBQUUsa0JBQVk7QUFBQSxJQUFNO0FBQzlDLFNBQUssa0JBQW1CO0FBQ3hCLFdBQVEsS0FBSyxVQUFVLElBQUlBLE1BQUssS0FDM0IsY0FDSSxLQUFLLFVBQVUsVUFDaEIsS0FBSyxPQUFPLGFBQWFBLFFBQU8sSUFBSTtBQUFBLEVBQy9DO0FBQ0QsRUFBQTJDLDZCQUE0QixVQUFVLFFBQVEsV0FBWTtBQUN0RCxTQUFLLGtCQUFtQjtBQUN4QixTQUFLLFVBQVUsTUFBTztBQUN0QixTQUFLLGFBQWEsY0FBYyxNQUFPO0FBQ3ZDLFNBQUssYUFBYSxlQUFlLE1BQU87QUFBQSxFQUMzQztBQUNELEVBQUFBLDZCQUE0QixVQUFVLGlCQUFpQixXQUFZO0FBQy9ELFFBQUksS0FBSztBQUNULFNBQUssa0JBQW1CO0FBQ3hCLFFBQUk7QUFDQSxlQUFTLEtBQUtWLFdBQVMsS0FBSyxVQUFVLFFBQVMsQ0FBQSxHQUFHLEtBQUssR0FBRyxLQUFJLEdBQUksQ0FBQyxHQUFHLE1BQU0sS0FBSyxHQUFHLFFBQVE7QUFDeEYsWUFBSSxLQUFLRSxTQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUduQyxTQUFRLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixHQUFHLENBQUM7QUFDakUsYUFBSyxVQUFVLE9BQU9BLFFBQU8sY0FDeEIsT0FBTyxTQUFVLGNBQWM7QUFBRSxpQkFBTyxDQUFDLGdCQUFnQixhQUFhLFFBQVE7QUFBQSxRQUFJLENBQUEsRUFDbEYsSUFBSSxTQUFVLGNBQWM7QUFDN0IsdUJBQWEsV0FBVztBQUN4QixpQkFBTztBQUFBLFFBQzNCLENBQWlCLENBQUM7QUFBQSxNQUNsQjtBQUFBLElBQ0EsU0FDZSxPQUFPO0FBQUUsWUFBTSxFQUFFLE9BQU8sTUFBSztBQUFBLElBQUcsVUFDL0I7QUFDSixVQUFJO0FBQ0EsWUFBSSxNQUFNLENBQUMsR0FBRyxTQUFTLEtBQUssR0FBRyxRQUFTLElBQUcsS0FBSyxFQUFFO0FBQUEsTUFDbEUsVUFDb0I7QUFBRSxZQUFJLElBQUssT0FBTSxJQUFJO0FBQUEsTUFBTTtBQUFBLElBQy9DO0FBQUEsRUFDSztBQUNELEVBQUEyQyw2QkFBNEIsVUFBVSx1QkFBdUIsV0FBWTtBQUNyRSxRQUFJLEtBQUs7QUFDVCxTQUFLLGtCQUFtQjtBQUN4QixRQUFJLGlCQUFpQixJQUFJQSw2QkFBNEIsSUFBSTtBQUN6RCxRQUFJO0FBQ0EsZUFBUyxLQUFLVixXQUFTLEtBQUssVUFBVSxRQUFTLENBQUEsR0FBRyxLQUFLLEdBQUcsS0FBSSxHQUFJLENBQUMsR0FBRyxNQUFNLEtBQUssR0FBRyxRQUFRO0FBQ3hGLFlBQUksS0FBS0UsU0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHbkMsU0FBUSxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsR0FBRyxDQUFDO0FBQ2pFLFlBQUksY0FBYyxLQUFLLFNBQVU2QyxLQUFJO0FBQ2pDLGNBQUkxQyxXQUFVMEMsSUFBRztBQUNqQixpQkFBTzFDLFNBQVEsY0FBYzJCLFlBQVU7QUFBQSxRQUMzRCxDQUFpQixHQUFHO0FBQ0EseUJBQWUsVUFBVSxPQUFPOUIsUUFBTyxjQUFjLElBQUksU0FBVSxjQUFjO0FBQzdFLGdCQUFJLGFBQWEsUUFBUSxjQUFjOEIsWUFBVSxpQkFBaUI7QUFDOUQscUJBQU87QUFBQSxnQkFDSCxVQUFVLGFBQWE7QUFBQSxnQkFDdkIsU0FBUyxhQUFhO0FBQUEsY0FDekI7QUFBQSxZQUM3QjtBQUN3QixtQkFBTztBQUFBLFVBQy9CLENBQXFCLENBQUM7QUFBQSxRQUN0QjtBQUFBLE1BQ0E7QUFBQSxJQUNBLFNBQ2UsT0FBTztBQUFFLFlBQU0sRUFBRSxPQUFPLE1BQUs7QUFBQSxJQUFHLFVBQy9CO0FBQ0osVUFBSTtBQUNBLFlBQUksTUFBTSxDQUFDLEdBQUcsU0FBUyxLQUFLLEdBQUcsUUFBUyxJQUFHLEtBQUssRUFBRTtBQUFBLE1BQ2xFLFVBQ29CO0FBQUUsWUFBSSxJQUFLLE9BQU0sSUFBSTtBQUFBLE1BQU07QUFBQSxJQUMvQztBQUNRLFdBQU87QUFBQSxFQUNWO0FBQ0QsRUFBQWEsNkJBQTRCLFVBQVUsbUJBQW1CLFNBQVUzQyxRQUFPLFVBQVVHLFVBQVM7QUFDekYsUUFBSUEsYUFBWSxRQUFRO0FBQUUsTUFBQUEsV0FBVSxFQUFFLFdBQVc7SUFBVztBQUM1RCxTQUFLLGFBQWEsY0FBYyxJQUFJSCxRQUFPO0FBQUEsTUFDdkM7QUFBQSxNQUNBLFNBQVNHO0FBQUEsSUFDckIsQ0FBUztBQUFBLEVBQ0o7QUFDRCxFQUFBd0MsNkJBQTRCLFVBQVUsa0JBQWtCLFNBQVUzQyxRQUFPLFVBQVVHLFVBQVM7QUFDeEYsUUFBSUEsYUFBWSxRQUFRO0FBQUUsTUFBQUEsV0FBVSxFQUFFLFdBQVc7SUFBVztBQUM1RCxTQUFLLGFBQWEsZUFBZSxJQUFJSCxRQUFPO0FBQUEsTUFDeEM7QUFBQSxNQUNBLFNBQVNHO0FBQUEsSUFDckIsQ0FBUztBQUFBLEVBQ0o7QUFDRCxFQUFBd0MsNkJBQTRCLFVBQVUsVUFBVSxXQUFZO0FBQ3hELFdBQU8sVUFBVSxNQUFNLFFBQVEsUUFBUSxXQUFZO0FBQy9DLFVBQUk7QUFDSixhQUFPLFlBQVksTUFBTSxTQUFVLElBQUk7QUFDbkMsZ0JBQVEsR0FBRyxPQUFLO0FBQUEsVUFDWixLQUFLO0FBQ0QsaUJBQUssV0FBVztBQUNoQix1QkFBVyxDQUFFO0FBQ2IsaUJBQUssWUFBWSxRQUFRLFNBQVUsWUFBWTtBQUMzQyxrQkFBSSxlQUFlLFdBQVcsUUFBUztBQUN2QyxrQkFBSSxjQUFjO0FBQ2QseUJBQVMsS0FBSyxZQUFZO0FBQUEsY0FDMUQ7QUFBQSxZQUNBLENBQXlCO0FBQ0QsbUJBQU8sQ0FBQyxHQUFHLFFBQVEsSUFBSSxRQUFRLENBQUM7QUFBQSxVQUNwQyxLQUFLO0FBQ0QsZUFBRyxLQUFNO0FBQ1QsbUJBQU8sQ0FBQyxDQUFDO0FBQUEsUUFDakM7QUFBQSxNQUNBLENBQWE7QUFBQSxJQUNiLENBQVM7QUFBQSxFQUNKO0FBQ0QsRUFBQUEsNkJBQTRCLFVBQVUsa0JBQWtCLFNBQVUzQyxRQUFPO0FBQ3JFLFFBQUksS0FBSyxhQUFhQSxNQUFLLEdBQUc7QUFDMUIsYUFBTyxLQUFLLFVBQVUsSUFBSUEsTUFBSztBQUFBLElBQzNDO0FBQ1EsUUFBSSxLQUFLLFFBQVE7QUFDYixhQUFPLEtBQUssT0FBTyxnQkFBZ0JBLE1BQUs7QUFBQSxJQUNwRDtBQUNRLFdBQU87QUFBQSxFQUNWO0FBQ0QsRUFBQTJDLDZCQUE0QixVQUFVLHNCQUFzQixTQUFVM0MsUUFBTztBQUN6RSxRQUFJLEtBQUssYUFBYUEsTUFBSyxHQUFHO0FBQzFCLGFBQU8sS0FBSyxVQUFVLE9BQU9BLE1BQUs7QUFBQSxJQUM5QztBQUNRLFFBQUksS0FBSyxRQUFRO0FBQ2IsYUFBTyxLQUFLLE9BQU8sb0JBQW9CQSxNQUFLO0FBQUEsSUFDeEQ7QUFDUSxXQUFPO0FBQUEsRUFDVjtBQUNELEVBQUEyQyw2QkFBNEIsVUFBVSxZQUFZLFNBQVUsTUFBTSxTQUFTO0FBQ3ZFLFFBQUksUUFBUTtBQUNaLFFBQUksZ0JBQWdCLG9CQUFvQjtBQUNwQyxhQUFPLEtBQUssWUFBWSxTQUFVLFFBQVE7QUFDdEMsZUFBTyxNQUFNLFFBQVEsUUFBUSxPQUFPO0FBQUEsTUFDcEQsQ0FBYTtBQUFBLElBQ2I7QUFDUSxRQUFJZCxZQUFZLFdBQVk7QUFDeEIsVUFBSSxZQUFZLFNBQVMsSUFBSSxJQUFJO0FBQ2pDLFVBQUksQ0FBQyxhQUFhLFVBQVUsV0FBVyxHQUFHO0FBQ3RDLFlBQUksS0FBSyxXQUFXLEdBQUc7QUFDbkIsaUJBQU8sSUFBSSxLQUFNO0FBQUEsUUFDckMsT0FDcUI7QUFDRCxnQkFBTSxJQUFJLE1BQU0sNkJBQThCLEtBQUssT0FBTyxHQUFJO0FBQUEsUUFDbEY7QUFBQSxNQUNBO0FBQ1ksVUFBSSxTQUFTLFVBQVUsSUFBSSxNQUFNLGNBQWMsU0FBUyxJQUFJLENBQUM7QUFDN0QsYUFBTyxLQUFLLEtBQUssS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBSTtBQUFBLElBQzVFLEVBQVk7QUFDSixRQUFJLGFBQWFBLFNBQVEsR0FBRztBQUN4QixXQUFLLFlBQVksSUFBSUEsU0FBUTtBQUFBLElBQ3pDO0FBQ1EsV0FBT0E7QUFBQSxFQUNWO0FBQ0QsRUFBQWMsNkJBQTRCLFVBQVUsZ0JBQWdCLFNBQVUsU0FBUyxNQUFNO0FBQzNFLFFBQUksUUFBUTtBQUNaLFdBQU8sU0FBVSxPQUFPLEtBQUs7QUFDekIsVUFBSSxJQUFJLElBQUk7QUFDWixVQUFJO0FBQ0EsWUFBSSxrQkFBa0IsS0FBSyxHQUFHO0FBQzFCLGNBQUksc0JBQXNCLEtBQUssR0FBRztBQUM5QixtQkFBTyxNQUFNLFlBQ04sS0FBSyxNQUFNLFFBQVEsTUFBTSxTQUFTLEdBQUcsVUFBVSxNQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sV0FBVyxNQUFNLEtBQUssQ0FBQyxHQUFHLE1BQU0sYUFBYSxDQUFDLEtBQUssS0FBSyxNQUFNLFFBQVEsTUFBTSxTQUFTLEdBQUcsVUFBVSxNQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sUUFBUSxNQUFNLE9BQU8sT0FBTyxDQUFDLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFBQSxVQUN4UixPQUN5QjtBQUNELG1CQUFPLE1BQU0sV0FDUCxNQUFNLFdBQVcsTUFBTSxLQUFLLElBQzVCLE1BQU0sUUFBUSxNQUFNLE9BQU8sT0FBTztBQUFBLFVBQ2hFO0FBQUEsUUFDQSxXQUN5QixzQkFBc0IsS0FBSyxHQUFHO0FBQ25DLGtCQUFRLEtBQUssTUFBTSxRQUFRLE1BQU0sV0FBVyxPQUFPLEdBQUcsVUFBVSxNQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sUUFBUSxNQUFNLE9BQU8sT0FBTyxDQUFDLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFBQSxRQUNsSztBQUNnQixlQUFPLE1BQU0sUUFBUSxPQUFPLE9BQU87QUFBQSxNQUNuRCxTQUNtQjNILElBQUc7QUFDTixjQUFNLElBQUksTUFBTSxnQkFBZ0IsTUFBTSxLQUFLQSxFQUFDLENBQUM7QUFBQSxNQUM3RDtBQUFBLElBQ1M7QUFBQSxFQUNKO0FBQ0QsRUFBQTJILDZCQUE0QixVQUFVLG9CQUFvQixXQUFZO0FBQ2xFLFFBQUksS0FBSyxVQUFVO0FBQ2YsWUFBTSxJQUFJLE1BQU0saUZBQWlGO0FBQUEsSUFDN0c7QUFBQSxFQUNLO0FBQ0QsU0FBT0E7QUFDWDtBQUNPLElBQUksV0FBVyxJQUFJLDRCQUE2QjtBQzNZdkQsU0FBUyxpQkFBaUI7QUFDdEIsU0FBTyxTQUFVLFFBQVE7QUFDckIsUUFBSSxZQUFZLGFBQWEsTUFBTTtBQUNuQyxXQUFRLFNBQVUsUUFBUTtBQUN0Qlgsa0JBQVUsU0FBUyxNQUFNO0FBQ3pCLGVBQVMsVUFBVTtBQUNmLFlBQUksT0FBTyxDQUFFO0FBQ2IsaUJBQVMsS0FBSyxHQUFHLEtBQUssVUFBVSxRQUFRLE1BQU07QUFDMUMsZUFBSyxFQUFFLElBQUksVUFBVSxFQUFFO0FBQUEsUUFDM0M7QUFDZ0IsZUFBTyxPQUFPLE1BQU0sTUFBTSxTQUFTLEtBQUssT0FBTyxVQUFVLE1BQU0sS0FBSyxNQUFNLEVBQUUsSUFBSSxTQUFVcEQsT0FBTXJELFFBQU87QUFDbkcsY0FBSSxJQUFJLElBQUk7QUFDWixjQUFJO0FBQ0EsZ0JBQUksa0JBQWtCcUQsS0FBSSxHQUFHO0FBQ3pCLGtCQUFJLHNCQUFzQkEsS0FBSSxHQUFHO0FBQzdCLHVCQUFPQSxNQUFLLFlBQ0wsS0FBS2tFLFNBQ0gsUUFBUWxFLE1BQUssU0FBUyxHQUFHLFVBQVUsTUFBTSxJQUFJLFNBQVMsQ0FBQ2tFLFNBQWdCLFdBQVdsRSxNQUFLLEtBQUssQ0FBQyxHQUFHQSxNQUFLLGFBQWEsQ0FBQyxLQUFLLEtBQUtrRSxTQUNqSSxRQUFRbEUsTUFBSyxTQUFTLEdBQUcsVUFBVSxNQUFNLElBQUksU0FBUyxDQUFDa0UsU0FBZ0IsUUFBUWxFLE1BQUssS0FBSyxDQUFDLEdBQUdBLE1BQUssYUFBYSxDQUFDO0FBQUEsY0FDckosT0FDaUM7QUFDRCx1QkFBT0EsTUFBSyxXQUNOa0UsU0FBZ0IsV0FBV2xFLE1BQUssS0FBSyxJQUNyQ2tFLFNBQWdCLFFBQVFsRSxNQUFLLEtBQUs7QUFBQSxjQUN4RTtBQUFBLFlBQ0EsV0FDaUMsc0JBQXNCQSxLQUFJLEdBQUc7QUFDbEMsc0JBQVEsS0FBS2tFLFNBQ1IsUUFBUWxFLE1BQUssU0FBUyxHQUFHLFVBQVUsTUFBTSxJQUFJLFNBQVMsQ0FBQ2tFLFNBQWdCLFFBQVFsRSxNQUFLLEtBQUssQ0FBQyxHQUFHQSxNQUFLLGFBQWEsQ0FBQztBQUFBLFlBQ2pKO0FBQ3dCLG1CQUFPa0UsU0FBZ0IsUUFBUWxFLEtBQUk7QUFBQSxVQUMzRCxTQUMyQjVELElBQUc7QUFDTixnQkFBSSxXQUFXTyxTQUFRLEtBQUs7QUFDNUIsa0JBQU0sSUFBSSxNQUFNLGdCQUFnQixRQUFRLFVBQVVQLEVBQUMsQ0FBQztBQUFBLFVBQzVFO0FBQUEsUUFDQSxDQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQUEsTUFDekI7QUFDWSxhQUFPO0FBQUEsSUFDVixFQUFDLE1BQU07QUFBQSxFQUNYO0FBQ0w7QUM1Q0EsU0FBUyxhQUFhO0FBQ2xCLFNBQU8sU0FBVSxRQUFRO0FBQ3JCLGFBQVMsSUFBSSxRQUFRLGFBQWEsTUFBTSxDQUFDO0FBQUEsRUFDNUM7QUFDTDtBQ0pBLFNBQVMsWUFBWTtBQUNqQixTQUFPLFNBQVUsUUFBUTtBQUNyQixlQUFVLEVBQUcsTUFBTTtBQUNuQjhILGFBQWdCLGtCQUFrQixNQUFNO0FBQUEsRUFDM0M7QUFDTDtBQ1BBLElBQUksT0FBTyxZQUFZLGVBQWUsQ0FBQyxRQUFRLGFBQWE7QUFDeEQsUUFBTSxJQUFJLE1BQU0sOEdBQWdIO0FBQ3BJOzs7Ozs7Ozs7OztBQ0VPLElBQU0sUUFBTixNQUFZO0FBQUEsRUFBWjtBQUNJO0FBQUE7QUFBQSxFQUVQLE9BQU87QUFDSCxnQkFBWSxNQUFNO0FBQ2QsV0FBSyxhQUFhO0FBQUEsSUFBQSxHQUNuQixJQUFFLEtBQUcsR0FBSTtBQUFBLEVBQUE7QUFBQSxFQUVoQixlQUFxQjtBQUNqQixVQUFNLElBQUksNkJBQTZCO0FBQUEsTUFDbkMsU0FBUztBQUFBLFFBQ0wsaUJBQWlCLFlBQVksS0FBSztBQUFBLE1BQUE7QUFBQSxJQUN0QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDZixXQUFBLGVBQWUsU0FBUyxLQUFLO0FBQUEsSUFBQSxDQUNyQztBQUFBLEVBQUE7QUFFVDtBQWpCYSxRQUFOQyxrQkFBQTtBQUFBLEVBRE4sVUFBVTtBQUFBLEdBQ0UsS0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNLQSxhQUFTekksR0FBRXFDLElBQUVLLElBQUU7QUFBQyxVQUFJVSxLQUFFZixHQUFFO0FBQU8sTUFBQUEsR0FBRSxLQUFLSyxFQUFDO0FBQUUsUUFBRSxRQUFLLElBQUVVLE1BQUc7QUFBQyxZQUFJRCxLQUFFQyxLQUFFLE1BQUksR0FBRTFDLEtBQUUyQixHQUFFYyxFQUFDO0FBQUUsWUFBRyxJQUFFRyxHQUFFNUMsSUFBRWdDLEVBQUMsRUFBRSxDQUFBTCxHQUFFYyxFQUFDLElBQUVULElBQUVMLEdBQUVlLEVBQUMsSUFBRTFDLElBQUUwQyxLQUFFRDtBQUFBLFlBQU8sT0FBTTtBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsYUFBU0UsR0FBRWhCLElBQUU7QUFBQyxhQUFPLE1BQUlBLEdBQUUsU0FBTyxPQUFLQSxHQUFFLENBQUM7QUFBQSxJQUFDO0FBQUMsYUFBUzVCLEdBQUU0QixJQUFFO0FBQUMsVUFBRyxNQUFJQSxHQUFFLE9BQU8sUUFBTztBQUFLLFVBQUlLLEtBQUVMLEdBQUUsQ0FBQyxHQUFFZSxLQUFFZixHQUFFO0FBQU0sVUFBR2UsT0FBSVYsSUFBRTtBQUFDLFFBQUFMLEdBQUUsQ0FBQyxJQUFFZTtBQUFFLFVBQUUsVUFBUUQsS0FBRSxHQUFFekMsS0FBRTJCLEdBQUUsUUFBT0gsS0FBRXhCLE9BQUksR0FBRXlDLEtBQUVqQixNQUFHO0FBQUMsY0FBSXFCLEtBQUUsS0FBR0osS0FBRSxLQUFHLEdBQUVaLEtBQUVGLEdBQUVrQixFQUFDLEdBQUU1QixLQUFFNEIsS0FBRSxHQUFFM0QsS0FBRXlDLEdBQUVWLEVBQUM7QUFBRSxjQUFHLElBQUUyQixHQUFFZixJQUFFYSxFQUFDLEVBQUUsQ0FBQXpCLEtBQUVqQixNQUFHLElBQUU0QyxHQUFFMUQsSUFBRTJDLEVBQUMsS0FBR0YsR0FBRWMsRUFBQyxJQUFFdkQsSUFBRXlDLEdBQUVWLEVBQUMsSUFBRXlCLElBQUVELEtBQUV4QixPQUFJVSxHQUFFYyxFQUFDLElBQUVaLElBQUVGLEdBQUVrQixFQUFDLElBQUVILElBQUVELEtBQUVJO0FBQUEsbUJBQVc1QixLQUFFakIsTUFBRyxJQUFFNEMsR0FBRTFELElBQUV3RCxFQUFDLEVBQUUsQ0FBQWYsR0FBRWMsRUFBQyxJQUFFdkQsSUFBRXlDLEdBQUVWLEVBQUMsSUFBRXlCLElBQUVELEtBQUV4QjtBQUFBLGNBQU8sT0FBTTtBQUFBLFFBQUM7QUFBQSxNQUFDO0FBQUMsYUFBT2U7QUFBQSxJQUFDO0FBQzNjLGFBQVNZLEdBQUVqQixJQUFFSyxJQUFFO0FBQUMsVUFBSVUsS0FBRWYsR0FBRSxZQUFVSyxHQUFFO0FBQVUsYUFBTyxNQUFJVSxLQUFFQSxLQUFFZixHQUFFLEtBQUdLLEdBQUU7QUFBQSxJQUFFO0FBQUMsUUFBRyxhQUFXLE9BQU8sZUFBYSxlQUFhLE9BQU8sWUFBWSxLQUFJO0FBQUMsVUFBSWhCLEtBQUU7QUFBWSxjQUFxQixlQUFBLFdBQVU7QUFBQyxlQUFPQSxHQUFFLElBQUs7QUFBQSxNQUFBO0FBQUEsSUFBQyxPQUFLO0FBQUMsVUFBSUUsS0FBRSxNQUFLQyxLQUFFRCxHQUFFO0FBQU0sY0FBQSxlQUFxQixXQUFVO0FBQUMsZUFBT0EsR0FBRSxJQUFHLElBQUdDO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBQyxRQUFJQyxLQUFFLElBQUdDLEtBQUUsQ0FBQSxHQUFHQyxLQUFFLEdBQUVDLEtBQUUsTUFBS25DLEtBQUUsR0FBRXFDLEtBQUUsT0FBR0MsS0FBRSxPQUFHRSxLQUFFLE9BQUdFLEtBQUUsZUFBYSxPQUFPLGFBQVcsYUFBVyxNQUFLQyxLQUFFLGVBQWEsT0FBTyxlQUFhLGVBQWEsTUFBS0UsS0FBRSxnQkFBYyxPQUFPLGVBQWEsZUFBYTtBQUMvZCxvQkFBYyxPQUFPLGFBQVcsV0FBUyxVQUFVLGNBQVksV0FBUyxVQUFVLFdBQVcsa0JBQWdCLFVBQVUsV0FBVyxlQUFlLEtBQUssVUFBVSxVQUFVO0FBQUUsYUFBU0MsR0FBRVAsSUFBRTtBQUFDLGVBQVFLLEtBQUVXLEdBQUV0QixFQUFDLEdBQUUsU0FBT1csTUFBRztBQUFDLFlBQUcsU0FBT0EsR0FBRSxTQUFTLENBQUFqQyxHQUFFc0IsRUFBQztBQUFBLGlCQUFVVyxHQUFFLGFBQVdMLEdBQUUsQ0FBQTVCLEdBQUVzQixFQUFDLEdBQUVXLEdBQUUsWUFBVUEsR0FBRSxnQkFBZTFDLEdBQUU4QixJQUFFWSxFQUFDO0FBQUEsWUFBTztBQUFNLFFBQUFBLEtBQUVXLEdBQUV0QixFQUFDO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBQyxhQUFTYyxHQUFFUixJQUFFO0FBQUMsTUFBQUMsS0FBRTtBQUFHLE1BQUFNLEdBQUVQLEVBQUM7QUFBRSxVQUFHLENBQUNELEdBQUUsS0FBRyxTQUFPaUIsR0FBRXZCLEVBQUMsRUFBRSxDQUFBTSxLQUFFLE1BQUdVLEdBQUVDLEVBQUM7QUFBQSxXQUFNO0FBQUMsWUFBSUwsS0FBRVcsR0FBRXRCLEVBQUM7QUFBRSxpQkFBT1csTUFBR00sR0FBRUgsSUFBRUgsR0FBRSxZQUFVTCxFQUFDO0FBQUEsTUFBQztBQUFBLElBQUM7QUFDcmEsYUFBU1UsR0FBRVYsSUFBRUssSUFBRTtBQUFDLE1BQUFOLEtBQUU7QUFBRyxNQUFBRSxPQUFJQSxLQUFFLE9BQUdHLEdBQUVRLEVBQUMsR0FBRUEsS0FBRTtBQUFJLE1BQUFkLEtBQUU7QUFBRyxVQUFJaUIsS0FBRXREO0FBQUUsVUFBRztBQUFDLFFBQUE4QyxHQUFFRixFQUFDO0FBQUUsYUFBSVQsS0FBRW9CLEdBQUV2QixFQUFDLEdBQUUsU0FBT0csT0FBSSxFQUFFQSxHQUFFLGlCQUFlUyxPQUFJTCxNQUFHLENBQUNhLEdBQUMsTUFBSztBQUFDLGNBQUlDLEtBQUVsQixHQUFFO0FBQVMsY0FBRyxlQUFhLE9BQU9rQixJQUFFO0FBQUMsWUFBQWxCLEdBQUUsV0FBUztBQUFLLFlBQUFuQyxLQUFFbUMsR0FBRTtBQUFjLGdCQUFJdkIsS0FBRXlDLEdBQUVsQixHQUFFLGtCQUFnQlMsRUFBQztBQUFFLFlBQUFBLEtBQUUsUUFBUSxhQUFZO0FBQUcsMkJBQWEsT0FBT2hDLEtBQUV1QixHQUFFLFdBQVN2QixLQUFFdUIsT0FBSW9CLEdBQUV2QixFQUFDLEtBQUdyQixHQUFFcUIsRUFBQztBQUFFLFlBQUFjLEdBQUVGLEVBQUM7QUFBQSxVQUFDLE1BQU0sQ0FBQWpDLEdBQUVxQixFQUFDO0FBQUUsVUFBQUcsS0FBRW9CLEdBQUV2QixFQUFDO0FBQUEsUUFBQztBQUFDLFlBQUcsU0FBT0csR0FBRSxLQUFJQyxLQUFFO0FBQUEsYUFBTztBQUFDLGNBQUlxQixLQUFFRixHQUFFdEIsRUFBQztBQUFFLG1CQUFPd0IsTUFBR1AsR0FBRUgsSUFBRVUsR0FBRSxZQUFVYixFQUFDO0FBQUUsVUFBQVIsS0FBRTtBQUFBLFFBQUU7QUFBQyxlQUFPQTtBQUFBLE1BQUMsVUFBQztBQUFRLFFBQUFELEtBQUUsTUFBS25DLEtBQUVzRCxJQUFFakIsS0FBRTtBQUFBLE1BQUU7QUFBQSxJQUFDO0FBQUMsUUFBSXFCLEtBQUUsT0FBR2hFLEtBQUUsTUFBS3lELEtBQUUsSUFBR3hELEtBQUUsR0FBRWdFLEtBQUU7QUFDdGMsYUFBU1AsS0FBRztBQUFDLGFBQU8sUUFBUSxhQUFjLElBQUNPLEtBQUVoRSxLQUFFLFFBQUc7QUFBQSxJQUFFO0FBQUMsYUFBU2lFLEtBQUc7QUFBQyxVQUFHLFNBQU9sRSxJQUFFO0FBQUMsWUFBSTZDLEtBQUUsUUFBUTtBQUFlLFFBQUFvQixLQUFFcEI7QUFBRSxZQUFJSyxLQUFFO0FBQUcsWUFBRztBQUFDLFVBQUFBLEtBQUVsRCxHQUFFLE1BQUc2QyxFQUFDO0FBQUEsUUFBQyxVQUFDO0FBQVEsVUFBQUssS0FBRWlCLEdBQUcsS0FBRUgsS0FBRSxPQUFHaEUsS0FBRTtBQUFBLFFBQUs7QUFBQSxNQUFDLE1BQU0sQ0FBQWdFLEtBQUU7QUFBQSxJQUFFO0FBQUMsUUFBSUc7QUFBRSxRQUFHLGVBQWEsT0FBT2hCLEdBQUUsQ0FBQWdCLEtBQUUsV0FBVTtBQUFDLE1BQUFoQixHQUFFZSxFQUFDO0FBQUEsSUFBQztBQUFBLGFBQVUsZ0JBQWMsT0FBTyxnQkFBZTtBQUFDLFVBQUlFLEtBQUUsSUFBSSxrQkFBZUMsS0FBRUQsR0FBRTtBQUFNLE1BQUFBLEdBQUUsTUFBTSxZQUFVRjtBQUFFLE1BQUFDLEtBQUUsV0FBVTtBQUFDLFFBQUFFLEdBQUUsWUFBWSxJQUFJO0FBQUEsTUFBQztBQUFBLElBQUMsTUFBTSxDQUFBRixLQUFFLFdBQVU7QUFBQyxNQUFBbkIsR0FBRWtCLElBQUUsQ0FBQztBQUFBLElBQUM7QUFBRSxhQUFTWixHQUFFVCxJQUFFO0FBQUMsTUFBQTdDLEtBQUU2QztBQUFFLE1BQUFtQixPQUFJQSxLQUFFLE1BQUdHLEdBQUM7QUFBQSxJQUFHO0FBQUMsYUFBU1gsR0FBRVgsSUFBRUssSUFBRTtBQUFDLE1BQUFPLEtBQUVULEdBQUUsV0FBVTtBQUFDLFFBQUFILEdBQUUsUUFBUSxjQUFjO0FBQUEsTUFBQyxHQUFFSyxFQUFDO0FBQUEsSUFBQztBQUM1ZCxZQUE4Qix3QkFBQTtBQUFFLFlBQW1DLDZCQUFBO0FBQUUsWUFBNkIsdUJBQUE7QUFBRSxZQUFnQywwQkFBQTtBQUFFLFlBQTJCLHFCQUFBO0FBQUssWUFBc0MsZ0NBQUE7QUFBRSxZQUFnQywwQkFBQSxTQUFTTCxJQUFFO0FBQUMsTUFBQUEsR0FBRSxXQUFTO0FBQUEsSUFBSTtBQUFFLHlDQUFtQyxXQUFVO0FBQUMsTUFBQUQsTUFBR0QsT0FBSUMsS0FBRSxNQUFHVSxHQUFFQyxFQUFDO0FBQUEsSUFBRTtBQUMxVSxZQUFnQywwQkFBQSxTQUFTVixJQUFFO0FBQUMsVUFBRUEsTUFBRyxNQUFJQSxLQUFFLFFBQVEsTUFBTSxpSEFBaUgsSUFBRTVDLEtBQUUsSUFBRTRDLEtBQUUsS0FBSyxNQUFNLE1BQUlBLEVBQUMsSUFBRTtBQUFBLElBQUM7QUFBRSxZQUF5QyxtQ0FBQSxXQUFVO0FBQUMsYUFBT3ZDO0FBQUEsSUFBQztBQUFFLFlBQXNDLGdDQUFBLFdBQVU7QUFBQyxhQUFPdUQsR0FBRXZCLEVBQUM7QUFBQSxJQUFDO0FBQUUsWUFBc0IsZ0JBQUEsU0FBU08sSUFBRTtBQUFDLGNBQU92QyxJQUFDO0FBQUEsUUFBRSxLQUFLO0FBQUEsUUFBRSxLQUFLO0FBQUEsUUFBRSxLQUFLO0FBQUUsY0FBSTRDLEtBQUU7QUFBRTtBQUFBLFFBQU07QUFBUSxVQUFBQSxLQUFFNUM7QUFBQSxNQUFDO0FBQUMsVUFBSXNELEtBQUV0RDtBQUFFLE1BQUFBLEtBQUU0QztBQUFFLFVBQUc7QUFBQyxlQUFPTCxHQUFDO0FBQUEsTUFBRSxVQUFDO0FBQVEsUUFBQXZDLEtBQUVzRDtBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUUsWUFBZ0MsMEJBQUEsV0FBVTtBQUFBLElBQUU7QUFDL2YsWUFBOEIsd0JBQUEsV0FBVTtBQUFBLElBQUE7QUFBRyxZQUFpQywyQkFBQSxTQUFTZixJQUFFSyxJQUFFO0FBQUMsY0FBT0wsSUFBQztBQUFBLFFBQUUsS0FBSztBQUFBLFFBQUUsS0FBSztBQUFBLFFBQUUsS0FBSztBQUFBLFFBQUUsS0FBSztBQUFBLFFBQUUsS0FBSztBQUFFO0FBQUEsUUFBTTtBQUFRLFVBQUFBLEtBQUU7QUFBQSxNQUFDO0FBQUMsVUFBSWUsS0FBRXREO0FBQUUsTUFBQUEsS0FBRXVDO0FBQUUsVUFBRztBQUFDLGVBQU9LLEdBQUM7QUFBQSxNQUFFLFVBQUM7QUFBUSxRQUFBNUMsS0FBRXNEO0FBQUEsTUFBQztBQUFBLElBQUM7QUFDaE0sWUFBa0MsNEJBQUEsU0FBU2YsSUFBRUssSUFBRVUsSUFBRTtBQUFDLFVBQUlELEtBQUUsUUFBUSxhQUFZO0FBQUcsbUJBQVcsT0FBT0MsTUFBRyxTQUFPQSxNQUFHQSxLQUFFQSxHQUFFLE9BQU1BLEtBQUUsYUFBVyxPQUFPQSxNQUFHLElBQUVBLEtBQUVELEtBQUVDLEtBQUVELE1BQUdDLEtBQUVEO0FBQUUsY0FBT2QsSUFBQztBQUFBLFFBQUUsS0FBSztBQUFFLGNBQUkzQixLQUFFO0FBQUc7QUFBQSxRQUFNLEtBQUs7QUFBRSxVQUFBQSxLQUFFO0FBQUk7QUFBQSxRQUFNLEtBQUs7QUFBRSxVQUFBQSxLQUFFO0FBQVc7QUFBQSxRQUFNLEtBQUs7QUFBRSxVQUFBQSxLQUFFO0FBQUk7QUFBQSxRQUFNO0FBQVEsVUFBQUEsS0FBRTtBQUFBLE1BQUc7QUFBQyxNQUFBQSxLQUFFMEMsS0FBRTFDO0FBQUUsTUFBQTJCLEtBQUUsRUFBQyxJQUFHTCxNQUFJLFVBQVNVLElBQUUsZUFBY0wsSUFBRSxXQUFVZSxJQUFFLGdCQUFlMUMsSUFBRSxXQUFVLEdBQUU7QUFBRSxNQUFBMEMsS0FBRUQsTUFBR2QsR0FBRSxZQUFVZSxJQUFFcEQsR0FBRStCLElBQUVNLEVBQUMsR0FBRSxTQUFPZ0IsR0FBRXZCLEVBQUMsS0FBR08sT0FBSWdCLEdBQUV0QixFQUFDLE1BQUlPLE1BQUdHLEdBQUVRLEVBQUMsR0FBRUEsS0FBRSxNQUFJWCxLQUFFLE1BQUdVLEdBQUVILElBQUVPLEtBQUVELEVBQUMsT0FBS2QsR0FBRSxZQUFVM0IsSUFBRVYsR0FBRThCLElBQUVPLEVBQUMsR0FBRUQsTUFBR0QsT0FBSUMsS0FBRSxNQUFHVSxHQUFFQyxFQUFDO0FBQUksYUFBT1Y7QUFBQSxJQUFDO0FBQ25lLFlBQUEsdUJBQTZCYTtBQUFFLFlBQUEsd0JBQThCLFNBQVNiLElBQUU7QUFBQyxVQUFJSyxLQUFFNUM7QUFBRSxhQUFPLFdBQVU7QUFBQyxZQUFJc0QsS0FBRXREO0FBQUUsUUFBQUEsS0FBRTRDO0FBQUUsWUFBRztBQUFDLGlCQUFPTCxHQUFFLE1BQU0sTUFBSyxTQUFTO0FBQUEsUUFBQyxVQUFDO0FBQVEsVUFBQXZDLEtBQUVzRDtBQUFBLFFBQUM7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFBOzs7Ozs7O0FDaEJwSDtBQUNsQ3NGLGNBQUEsVUFBVXpFLGdDQUEyQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FDU2pELE1BQUksS0FBR0EsZ0JBQWlCLEtBQUcwRSxpQkFBb0I7QUFBQyxXQUFTL0csR0FBRVMsSUFBRTtBQUFDLGFBQVFLLEtBQUUsMkRBQXlETCxJQUFFZSxLQUFFLEdBQUVBLEtBQUUsVUFBVSxRQUFPQSxLQUFJLENBQUFWLE1BQUcsYUFBVyxtQkFBbUIsVUFBVVUsRUFBQyxDQUFDO0FBQUUsV0FBTSwyQkFBeUJmLEtBQUUsYUFBV0ssS0FBRTtBQUFBLEVBQWdIO0FBQUMsTUFBSSxLQUFHLG9CQUFJLE9BQUksS0FBRyxDQUFFO0FBQUMsV0FBUyxHQUFHTCxJQUFFSyxJQUFFO0FBQUMsT0FBR0wsSUFBRUssRUFBQztBQUFFLE9BQUdMLEtBQUUsV0FBVUssRUFBQztBQUFBLEVBQUM7QUFDeGIsV0FBUyxHQUFHTCxJQUFFSyxJQUFFO0FBQUMsT0FBR0wsRUFBQyxJQUFFSztBQUFFLFNBQUlMLEtBQUUsR0FBRUEsS0FBRUssR0FBRSxRQUFPTCxLQUFJLElBQUcsSUFBSUssR0FBRUwsRUFBQyxDQUFDO0FBQUEsRUFBQztBQUM1RCxNQUFJLEtBQUcsRUFBRSxnQkFBYyxPQUFPLFVBQVEsZ0JBQWMsT0FBTyxPQUFPLFlBQVUsZ0JBQWMsT0FBTyxPQUFPLFNBQVMsZ0JBQWUsS0FBRyxPQUFPLFVBQVUsZ0JBQWUsS0FBRywrVkFBOFYsS0FDcGdCLElBQUcsS0FBRyxDQUFBO0FBQUcsV0FBUyxHQUFHQSxJQUFFO0FBQUMsUUFBRyxHQUFHLEtBQUssSUFBR0EsRUFBQyxFQUFFLFFBQU07QUFBRyxRQUFHLEdBQUcsS0FBSyxJQUFHQSxFQUFDLEVBQUUsUUFBTTtBQUFHLFFBQUcsR0FBRyxLQUFLQSxFQUFDLEVBQUUsUUFBTyxHQUFHQSxFQUFDLElBQUU7QUFBRyxPQUFHQSxFQUFDLElBQUU7QUFBRyxXQUFNO0FBQUEsRUFBRTtBQUFDLFdBQVMsR0FBR0EsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFFBQUcsU0FBT0MsTUFBRyxNQUFJQSxHQUFFLEtBQUssUUFBTTtBQUFHLFlBQU8sT0FBT1YsSUFBRztBQUFBLE1BQUEsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFTLGVBQU07QUFBQSxNQUFHLEtBQUs7QUFBVSxZQUFHUyxHQUFFLFFBQU07QUFBRyxZQUFHLFNBQU9DLEdBQUUsUUFBTSxDQUFDQSxHQUFFO0FBQWdCLFFBQUFmLEtBQUVBLEdBQUUsY0FBYyxNQUFNLEdBQUUsQ0FBQztBQUFFLGVBQU0sWUFBVUEsTUFBRyxZQUFVQTtBQUFBLE1BQUU7QUFBUSxlQUFNO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFDelgsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFO0FBQUMsUUFBRyxTQUFPVCxNQUFHLGdCQUFjLE9BQU9BLE1BQUcsR0FBR0wsSUFBRUssSUFBRVUsSUFBRUQsRUFBQyxFQUFFLFFBQU07QUFBRyxRQUFHQSxHQUFFLFFBQU07QUFBRyxRQUFHLFNBQU9DLEdBQUUsU0FBT0EsR0FBRSxNQUFNO0FBQUEsTUFBQSxLQUFLO0FBQUUsZUFBTSxDQUFDVjtBQUFBLE1BQUUsS0FBSztBQUFFLGVBQU0sVUFBS0E7QUFBQSxNQUFFLEtBQUs7QUFBRSxlQUFPLE1BQU1BLEVBQUM7QUFBQSxNQUFFLEtBQUs7QUFBRSxlQUFPLE1BQU1BLEVBQUMsS0FBRyxJQUFFQTtBQUFBLElBQUM7QUFBQyxXQUFNO0FBQUEsRUFBRTtBQUFDLFdBQVNULEdBQUVJLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFVixJQUFFc0QsSUFBRTtBQUFDLFNBQUssa0JBQWdCLE1BQUlaLE1BQUcsTUFBSUEsTUFBRyxNQUFJQTtBQUFFLFNBQUssZ0JBQWNTO0FBQUUsU0FBSyxxQkFBbUJ6QztBQUFFLFNBQUssa0JBQWdCMEM7QUFBRSxTQUFLLGVBQWFmO0FBQUUsU0FBSyxPQUFLSztBQUFFLFNBQUssY0FBWTFDO0FBQUUsU0FBSyxvQkFBa0JzRDtBQUFBLEVBQUM7QUFBQyxNQUFJbkIsS0FBRSxDQUFFO0FBQ3JiLHlJQUF1SSxNQUFNLEdBQUcsRUFBRSxRQUFRLFNBQVNFLElBQUU7QUFBQyxJQUFBRixHQUFFRSxFQUFDLElBQUUsSUFBSUosR0FBRUksSUFBRSxHQUFFLE9BQUdBLElBQUUsTUFBSyxPQUFHLEtBQUU7QUFBQSxFQUFDLENBQUM7QUFBRSxHQUFDLENBQUMsaUJBQWdCLGdCQUFnQixHQUFFLENBQUMsYUFBWSxPQUFPLEdBQUUsQ0FBQyxXQUFVLEtBQUssR0FBRSxDQUFDLGFBQVksWUFBWSxDQUFDLEVBQUUsUUFBUSxTQUFTQSxJQUFFO0FBQUMsUUFBSUssS0FBRUwsR0FBRSxDQUFDO0FBQUUsSUFBQUYsR0FBRU8sRUFBQyxJQUFFLElBQUlULEdBQUVTLElBQUUsR0FBRSxPQUFHTCxHQUFFLENBQUMsR0FBRSxNQUFLLE9BQUcsS0FBRTtBQUFBLEVBQUMsQ0FBQztBQUFFLEdBQUMsbUJBQWtCLGFBQVksY0FBYSxPQUFPLEVBQUUsUUFBUSxTQUFTQSxJQUFFO0FBQUMsSUFBQUYsR0FBRUUsRUFBQyxJQUFFLElBQUlKLEdBQUVJLElBQUUsR0FBRSxPQUFHQSxHQUFFLFlBQWEsR0FBQyxNQUFLLE9BQUcsS0FBRTtBQUFBLEVBQUMsQ0FBQztBQUMzZSxHQUFDLGVBQWMsNkJBQTRCLGFBQVksZUFBZSxFQUFFLFFBQVEsU0FBU0EsSUFBRTtBQUFDLElBQUFGLEdBQUVFLEVBQUMsSUFBRSxJQUFJSixHQUFFSSxJQUFFLEdBQUUsT0FBR0EsSUFBRSxNQUFLLE9BQUcsS0FBRTtBQUFBLEVBQUMsQ0FBQztBQUFFLGdQQUE4TyxNQUFNLEdBQUcsRUFBRSxRQUFRLFNBQVNBLElBQUU7QUFBQyxJQUFBRixHQUFFRSxFQUFDLElBQUUsSUFBSUosR0FBRUksSUFBRSxHQUFFLE9BQUdBLEdBQUUsWUFBVyxHQUFHLE1BQUssT0FBRyxLQUFFO0FBQUEsRUFBQyxDQUFDO0FBQ3piLEdBQUMsV0FBVSxZQUFXLFNBQVEsVUFBVSxFQUFFLFFBQVEsU0FBU0EsSUFBRTtBQUFDLElBQUFGLEdBQUVFLEVBQUMsSUFBRSxJQUFJSixHQUFFSSxJQUFFLEdBQUUsTUFBR0EsSUFBRSxNQUFLLE9BQUcsS0FBRTtBQUFBLEVBQUMsQ0FBQztBQUFFLEdBQUMsV0FBVSxVQUFVLEVBQUUsUUFBUSxTQUFTQSxJQUFFO0FBQUMsSUFBQUYsR0FBRUUsRUFBQyxJQUFFLElBQUlKLEdBQUVJLElBQUUsR0FBRSxPQUFHQSxJQUFFLE1BQUssT0FBRyxLQUFFO0FBQUEsRUFBQyxDQUFDO0FBQUUsR0FBQyxRQUFPLFFBQU8sUUFBTyxNQUFNLEVBQUUsUUFBUSxTQUFTQSxJQUFFO0FBQUMsSUFBQUYsR0FBRUUsRUFBQyxJQUFFLElBQUlKLEdBQUVJLElBQUUsR0FBRSxPQUFHQSxJQUFFLE1BQUssT0FBRyxLQUFFO0FBQUEsRUFBQyxDQUFDO0FBQUUsR0FBQyxXQUFVLE9BQU8sRUFBRSxRQUFRLFNBQVNBLElBQUU7QUFBQyxJQUFBRixHQUFFRSxFQUFDLElBQUUsSUFBSUosR0FBRUksSUFBRSxHQUFFLE9BQUdBLEdBQUUsWUFBYSxHQUFDLE1BQUssT0FBRyxLQUFFO0FBQUEsRUFBQyxDQUFDO0FBQUUsTUFBSSxLQUFHO0FBQWdCLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFdBQU9BLEdBQUUsQ0FBQyxFQUFFLFlBQWE7QUFBQSxFQUFBO0FBQ3haLDRqQ0FBMGpDLE1BQU0sR0FBRyxFQUFFLFFBQVEsU0FBU0EsSUFBRTtBQUFDLFFBQUlLLEtBQUVMLEdBQUU7QUFBQSxNQUFRO0FBQUEsTUFDem1DO0FBQUEsSUFBRTtBQUFFLElBQUFGLEdBQUVPLEVBQUMsSUFBRSxJQUFJVCxHQUFFUyxJQUFFLEdBQUUsT0FBR0wsSUFBRSxNQUFLLE9BQUcsS0FBRTtBQUFBLEVBQUMsQ0FBQztBQUFFLDZFQUEyRSxNQUFNLEdBQUcsRUFBRSxRQUFRLFNBQVNBLElBQUU7QUFBQyxRQUFJSyxLQUFFTCxHQUFFLFFBQVEsSUFBRyxFQUFFO0FBQUUsSUFBQUYsR0FBRU8sRUFBQyxJQUFFLElBQUlULEdBQUVTLElBQUUsR0FBRSxPQUFHTCxJQUFFLGdDQUErQixPQUFHLEtBQUU7QUFBQSxFQUFDLENBQUM7QUFBRSxHQUFDLFlBQVcsWUFBVyxXQUFXLEVBQUUsUUFBUSxTQUFTQSxJQUFFO0FBQUMsUUFBSUssS0FBRUwsR0FBRSxRQUFRLElBQUcsRUFBRTtBQUFFLElBQUFGLEdBQUVPLEVBQUMsSUFBRSxJQUFJVCxHQUFFUyxJQUFFLEdBQUUsT0FBR0wsSUFBRSx3Q0FBdUMsT0FBRyxLQUFFO0FBQUEsRUFBQyxDQUFDO0FBQUUsR0FBQyxZQUFXLGFBQWEsRUFBRSxRQUFRLFNBQVNBLElBQUU7QUFBQyxJQUFBRixHQUFFRSxFQUFDLElBQUUsSUFBSUosR0FBRUksSUFBRSxHQUFFLE9BQUdBLEdBQUUsWUFBVyxHQUFHLE1BQUssT0FBRyxLQUFFO0FBQUEsRUFBQyxDQUFDO0FBQ25kLEVBQUFGLEdBQUUsWUFBVSxJQUFJRixHQUFFLGFBQVksR0FBRSxPQUFHLGNBQWEsZ0NBQStCLE1BQUcsS0FBRTtBQUFFLEdBQUMsT0FBTSxRQUFPLFVBQVMsWUFBWSxFQUFFLFFBQVEsU0FBU0ksSUFBRTtBQUFDLElBQUFGLEdBQUVFLEVBQUMsSUFBRSxJQUFJSixHQUFFSSxJQUFFLEdBQUUsT0FBR0EsR0FBRSxlQUFjLE1BQUssTUFBRyxJQUFFO0FBQUEsRUFBQyxDQUFDO0FBQzdMLFdBQVMsR0FBR0EsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFFBQUl6QyxLQUFFeUIsR0FBRSxlQUFlTyxFQUFDLElBQUVQLEdBQUVPLEVBQUMsSUFBRTtBQUFLLFFBQUcsU0FBT2hDLEtBQUUsTUFBSUEsR0FBRSxPQUFLeUMsTUFBRyxFQUFFLElBQUVULEdBQUUsV0FBUyxRQUFNQSxHQUFFLENBQUMsS0FBRyxRQUFNQSxHQUFFLENBQUMsS0FBRyxRQUFNQSxHQUFFLENBQUMsS0FBRyxRQUFNQSxHQUFFLENBQUMsRUFBRSxJQUFHQSxJQUFFVSxJQUFFMUMsSUFBRXlDLEVBQUMsTUFBSUMsS0FBRSxPQUFNRCxNQUFHLFNBQU96QyxLQUFFLEdBQUdnQyxFQUFDLE1BQUksU0FBT1UsS0FBRWYsR0FBRSxnQkFBZ0JLLEVBQUMsSUFBRUwsR0FBRSxhQUFhSyxJQUFFLEtBQUdVLEVBQUMsS0FBRzFDLEdBQUUsa0JBQWdCMkIsR0FBRTNCLEdBQUUsWUFBWSxJQUFFLFNBQU8wQyxLQUFFLE1BQUkxQyxHQUFFLE9BQUssUUFBRyxLQUFHMEMsTUFBR1YsS0FBRWhDLEdBQUUsZUFBY3lDLEtBQUV6QyxHQUFFLG9CQUFtQixTQUFPMEMsS0FBRWYsR0FBRSxnQkFBZ0JLLEVBQUMsS0FBR2hDLEtBQUVBLEdBQUUsTUFBSzBDLEtBQUUsTUFBSTFDLE1BQUcsTUFBSUEsTUFBRyxTQUFLMEMsS0FBRSxLQUFHLEtBQUdBLElBQUVELEtBQUVkLEdBQUUsZUFBZWMsSUFBRVQsSUFBRVUsRUFBQyxJQUFFZixHQUFFLGFBQWFLLElBQUVVLEVBQUM7QUFBQSxFQUFHO0FBQ2pkLE1BQUksS0FBRyxHQUFHLG9EQUFtRCxLQUFHLE9BQU8sSUFBSSxlQUFlLEdBQUUsS0FBRyxPQUFPLElBQUksY0FBYyxHQUFFLEtBQUcsT0FBTyxJQUFJLGdCQUFnQixHQUFFLEtBQUcsT0FBTyxJQUFJLG1CQUFtQixHQUFFLEtBQUcsT0FBTyxJQUFJLGdCQUFnQixHQUFFLEtBQUcsT0FBTyxJQUFJLGdCQUFnQixHQUFFLEtBQUcsT0FBTyxJQUFJLGVBQWUsR0FBRSxLQUFHLE9BQU8sSUFBSSxtQkFBbUIsR0FBRSxLQUFHLE9BQU8sSUFBSSxnQkFBZ0IsR0FBRSxLQUFHLE9BQU8sSUFBSSxxQkFBcUIsR0FBRSxLQUFHLE9BQU8sSUFBSSxZQUFZLEdBQUUsS0FBRyxPQUFPLElBQUksWUFBWTtBQUMxYixNQUFJLEtBQUcsT0FBTyxJQUFJLGlCQUFpQjtBQUFpRyxNQUFJLEtBQUcsT0FBTztBQUFTLFdBQVMsR0FBR2YsSUFBRTtBQUFDLFFBQUcsU0FBT0EsTUFBRyxhQUFXLE9BQU9BLEdBQUUsUUFBTztBQUFLLElBQUFBLEtBQUUsTUFBSUEsR0FBRSxFQUFFLEtBQUdBLEdBQUUsWUFBWTtBQUFFLFdBQU0sZUFBYSxPQUFPQSxLQUFFQSxLQUFFO0FBQUEsRUFBSTtBQUFDLE1BQUlELEtBQUUsT0FBTyxRQUFPO0FBQUcsV0FBUyxHQUFHQyxJQUFFO0FBQUMsUUFBRyxXQUFTLEdBQUcsS0FBRztBQUFDLFlBQU0sTUFBTztBQUFBLElBQUMsU0FBT2UsSUFBRTtBQUFDLFVBQUlWLEtBQUVVLEdBQUUsTUFBTSxLQUFJLEVBQUcsTUFBTSxjQUFjO0FBQUUsV0FBR1YsTUFBR0EsR0FBRSxDQUFDLEtBQUc7QUFBQSxJQUFFO0FBQUMsV0FBTSxPQUFLLEtBQUdMO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRztBQUN6YixXQUFTLEdBQUdBLElBQUVLLElBQUU7QUFBQyxRQUFHLENBQUNMLE1BQUcsR0FBRyxRQUFNO0FBQUcsU0FBRztBQUFHLFFBQUllLEtBQUUsTUFBTTtBQUFrQixVQUFNLG9CQUFrQjtBQUFPLFFBQUc7QUFBQyxVQUFHVixHQUFFLEtBQUdBLEtBQUUsV0FBVTtBQUFDLGNBQU0sTUFBSztBQUFBLE1BQUcsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxTQUFRLEVBQUMsS0FBSSxXQUFVO0FBQUMsY0FBTSxNQUFLO0FBQUEsTUFBRyxFQUFDLENBQUMsR0FBRSxhQUFXLE9BQU8sV0FBUyxRQUFRLFdBQVU7QUFBQyxZQUFHO0FBQUMsa0JBQVEsVUFBVUEsSUFBRSxDQUFFLENBQUE7QUFBQSxRQUFDLFNBQU9oQixJQUFFO0FBQUMsY0FBSXlCLEtBQUV6QjtBQUFBLFFBQUM7QUFBQyxnQkFBUSxVQUFVVyxJQUFFLENBQUUsR0FBQ0ssRUFBQztBQUFBLE1BQUMsT0FBSztBQUFDLFlBQUc7QUFBQyxVQUFBQSxHQUFFLEtBQU07QUFBQSxRQUFBLFNBQU9oQixJQUFFO0FBQUMsVUFBQXlCLEtBQUV6QjtBQUFBLFFBQUM7QUFBQyxRQUFBVyxHQUFFLEtBQUtLLEdBQUUsU0FBUztBQUFBLE1BQUM7QUFBQSxXQUFLO0FBQUMsWUFBRztBQUFDLGdCQUFNLE1BQU87QUFBQSxRQUFDLFNBQU9oQixJQUFFO0FBQUMsVUFBQXlCLEtBQUV6QjtBQUFBLFFBQUM7QUFBQyxRQUFBVyxHQUFHO0FBQUEsTUFBQTtBQUFBLElBQUMsU0FBT1gsSUFBRTtBQUFDLFVBQUdBLE1BQUd5QixNQUFHLGFBQVcsT0FBT3pCLEdBQUUsT0FBTTtBQUFDLGlCQUFRaEIsS0FBRWdCLEdBQUUsTUFBTSxNQUFNLElBQUksR0FDdmYxQixLQUFFbUQsR0FBRSxNQUFNLE1BQU0sSUFBSSxHQUFFRyxLQUFFNUMsR0FBRSxTQUFPLEdBQUUyQyxLQUFFckQsR0FBRSxTQUFPLEdBQUUsS0FBR3NELE1BQUcsS0FBR0QsTUFBRzNDLEdBQUU0QyxFQUFDLE1BQUl0RCxHQUFFcUQsRUFBQyxJQUFHLENBQUFBO0FBQUksZUFBSyxLQUFHQyxNQUFHLEtBQUdELElBQUVDLE1BQUlELEtBQUksS0FBRzNDLEdBQUU0QyxFQUFDLE1BQUl0RCxHQUFFcUQsRUFBQyxHQUFFO0FBQUMsY0FBRyxNQUFJQyxNQUFHLE1BQUlELElBQUU7QUFBQztBQUFHLGtCQUFHQyxNQUFJRCxNQUFJLElBQUVBLE1BQUczQyxHQUFFNEMsRUFBQyxNQUFJdEQsR0FBRXFELEVBQUMsR0FBRTtBQUFDLG9CQUFJNUMsS0FBRSxPQUFLQyxHQUFFNEMsRUFBQyxFQUFFLFFBQVEsWUFBVyxNQUFNO0FBQUUsZ0JBQUFqQixHQUFFLGVBQWE1QixHQUFFLFNBQVMsYUFBYSxNQUFJQSxLQUFFQSxHQUFFLFFBQVEsZUFBYzRCLEdBQUUsV0FBVztBQUFHLHVCQUFPNUI7QUFBQSxjQUFDO0FBQUEsbUJBQU8sS0FBRzZDLE1BQUcsS0FBR0Q7QUFBQSxVQUFFO0FBQUM7QUFBQSxRQUFLO0FBQUEsTUFBQztBQUFBLElBQUMsVUFBQztBQUFRLFdBQUcsT0FBRyxNQUFNLG9CQUFrQkQ7QUFBQSxJQUFDO0FBQUMsWUFBT2YsS0FBRUEsS0FBRUEsR0FBRSxlQUFhQSxHQUFFLE9BQUssTUFBSSxHQUFHQSxFQUFDLElBQUU7QUFBQSxFQUFFO0FBQzlaLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFlBQU9BLEdBQUUsS0FBSztBQUFBLE1BQUEsS0FBSztBQUFFLGVBQU8sR0FBR0EsR0FBRSxJQUFJO0FBQUEsTUFBRSxLQUFLO0FBQUcsZUFBTyxHQUFHLE1BQU07QUFBQSxNQUFFLEtBQUs7QUFBRyxlQUFPLEdBQUcsVUFBVTtBQUFBLE1BQUUsS0FBSztBQUFHLGVBQU8sR0FBRyxjQUFjO0FBQUEsTUFBRSxLQUFLO0FBQUEsTUFBRSxLQUFLO0FBQUEsTUFBRSxLQUFLO0FBQUcsZUFBT0EsS0FBRSxHQUFHQSxHQUFFLE1BQUssS0FBRSxHQUFFQTtBQUFBLE1BQUUsS0FBSztBQUFHLGVBQU9BLEtBQUUsR0FBR0EsR0FBRSxLQUFLLFFBQU8sS0FBRSxHQUFFQTtBQUFBLE1BQUUsS0FBSztBQUFFLGVBQU9BLEtBQUUsR0FBR0EsR0FBRSxNQUFLLElBQUUsR0FBRUE7QUFBQSxNQUFFO0FBQVEsZUFBTTtBQUFBLElBQUU7QUFBQSxFQUFDO0FBQ3hSLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFFBQUcsUUFBTUEsR0FBRSxRQUFPO0FBQUssUUFBRyxlQUFhLE9BQU9BLEdBQUUsUUFBT0EsR0FBRSxlQUFhQSxHQUFFLFFBQU07QUFBSyxRQUFHLGFBQVcsT0FBT0EsR0FBRSxRQUFPQTtBQUFFLFlBQU9BLElBQUM7QUFBQSxNQUFFLEtBQUs7QUFBRyxlQUFNO0FBQUEsTUFBVyxLQUFLO0FBQUcsZUFBTTtBQUFBLE1BQVMsS0FBSztBQUFHLGVBQU07QUFBQSxNQUFXLEtBQUs7QUFBRyxlQUFNO0FBQUEsTUFBYSxLQUFLO0FBQUcsZUFBTTtBQUFBLE1BQVcsS0FBSztBQUFHLGVBQU07QUFBQSxJQUFjO0FBQUMsUUFBRyxhQUFXLE9BQU9BLEdBQUUsU0FBT0EsR0FBRSxVQUFRO0FBQUEsTUFBRSxLQUFLO0FBQUcsZ0JBQU9BLEdBQUUsZUFBYSxhQUFXO0FBQUEsTUFBWSxLQUFLO0FBQUcsZ0JBQU9BLEdBQUUsU0FBUyxlQUFhLGFBQVc7QUFBQSxNQUFZLEtBQUs7QUFBRyxZQUFJSyxLQUFFTCxHQUFFO0FBQU8sUUFBQUEsS0FBRUEsR0FBRTtBQUFZLFFBQUFBLE9BQUlBLEtBQUVLLEdBQUUsZUFDbGZBLEdBQUUsUUFBTSxJQUFHTCxLQUFFLE9BQUtBLEtBQUUsZ0JBQWNBLEtBQUUsTUFBSTtBQUFjLGVBQU9BO0FBQUEsTUFBRSxLQUFLO0FBQUcsZUFBT0ssS0FBRUwsR0FBRSxlQUFhLE1BQUssU0FBT0ssS0FBRUEsS0FBRSxHQUFHTCxHQUFFLElBQUksS0FBRztBQUFBLE1BQU8sS0FBSztBQUFHLFFBQUFLLEtBQUVMLEdBQUU7QUFBUyxRQUFBQSxLQUFFQSxHQUFFO0FBQU0sWUFBRztBQUFDLGlCQUFPLEdBQUdBLEdBQUVLLEVBQUMsQ0FBQztBQUFBLFFBQUMsU0FBT1UsSUFBRTtBQUFBLFFBQUU7QUFBQSxJQUFBO0FBQUMsV0FBTztBQUFBLEVBQUk7QUFDM00sV0FBUyxHQUFHZixJQUFFO0FBQUMsUUFBSUssS0FBRUwsR0FBRTtBQUFLLFlBQU9BLEdBQUUsS0FBSztBQUFBLE1BQUEsS0FBSztBQUFHLGVBQU07QUFBQSxNQUFRLEtBQUs7QUFBRSxnQkFBT0ssR0FBRSxlQUFhLGFBQVc7QUFBQSxNQUFZLEtBQUs7QUFBRyxnQkFBT0EsR0FBRSxTQUFTLGVBQWEsYUFBVztBQUFBLE1BQVksS0FBSztBQUFHLGVBQU07QUFBQSxNQUFxQixLQUFLO0FBQUcsZUFBT0wsS0FBRUssR0FBRSxRQUFPTCxLQUFFQSxHQUFFLGVBQWFBLEdBQUUsUUFBTSxJQUFHSyxHQUFFLGdCQUFjLE9BQUtMLEtBQUUsZ0JBQWNBLEtBQUUsTUFBSTtBQUFBLE1BQWMsS0FBSztBQUFFLGVBQU07QUFBQSxNQUFXLEtBQUs7QUFBRSxlQUFPSztBQUFBLE1BQUUsS0FBSztBQUFFLGVBQU07QUFBQSxNQUFTLEtBQUs7QUFBRSxlQUFNO0FBQUEsTUFBTyxLQUFLO0FBQUUsZUFBTTtBQUFBLE1BQU8sS0FBSztBQUFHLGVBQU8sR0FBR0EsRUFBQztBQUFBLE1BQUUsS0FBSztBQUFFLGVBQU9BLE9BQUksS0FBRyxlQUFhO0FBQUEsTUFBTyxLQUFLO0FBQUcsZUFBTTtBQUFBLE1BQ3RmLEtBQUs7QUFBRyxlQUFNO0FBQUEsTUFBVyxLQUFLO0FBQUcsZUFBTTtBQUFBLE1BQVEsS0FBSztBQUFHLGVBQU07QUFBQSxNQUFXLEtBQUs7QUFBRyxlQUFNO0FBQUEsTUFBZSxLQUFLO0FBQUcsZUFBTTtBQUFBLE1BQWdCLEtBQUs7QUFBQSxNQUFFLEtBQUs7QUFBQSxNQUFFLEtBQUs7QUFBQSxNQUFHLEtBQUs7QUFBQSxNQUFFLEtBQUs7QUFBQSxNQUFHLEtBQUs7QUFBRyxZQUFHLGVBQWEsT0FBT0EsR0FBRSxRQUFPQSxHQUFFLGVBQWFBLEdBQUUsUUFBTTtBQUFLLFlBQUcsYUFBVyxPQUFPQSxHQUFFLFFBQU9BO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFJO0FBQUMsV0FBUyxHQUFHTCxJQUFFO0FBQUMsWUFBTyxPQUFPQSxJQUFDO0FBQUEsTUFBRSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQVksZUFBT0E7QUFBQSxNQUFFLEtBQUs7QUFBUyxlQUFPQTtBQUFBLE1BQUU7QUFBUSxlQUFNO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFDcmEsV0FBUyxHQUFHQSxJQUFFO0FBQUMsUUFBSUssS0FBRUwsR0FBRTtBQUFLLFlBQU9BLEtBQUVBLEdBQUUsYUFBVyxZQUFVQSxHQUFFLFlBQVcsTUFBSyxlQUFhSyxNQUFHLFlBQVVBO0FBQUEsRUFBRTtBQUMxRyxXQUFTLEdBQUdMLElBQUU7QUFBQyxRQUFJSyxLQUFFLEdBQUdMLEVBQUMsSUFBRSxZQUFVLFNBQVFlLEtBQUUsT0FBTyx5QkFBeUJmLEdBQUUsWUFBWSxXQUFVSyxFQUFDLEdBQUVTLEtBQUUsS0FBR2QsR0FBRUssRUFBQztBQUFFLFFBQUcsQ0FBQ0wsR0FBRSxlQUFlSyxFQUFDLEtBQUcsZ0JBQWMsT0FBT1UsTUFBRyxlQUFhLE9BQU9BLEdBQUUsT0FBSyxlQUFhLE9BQU9BLEdBQUUsS0FBSTtBQUFDLFVBQUkxQyxLQUFFMEMsR0FBRSxLQUFJcEQsS0FBRW9ELEdBQUU7QUFBSSxhQUFPLGVBQWVmLElBQUVLLElBQUUsRUFBQyxjQUFhLE1BQUcsS0FBSSxXQUFVO0FBQUMsZUFBT2hDLEdBQUUsS0FBSyxJQUFJO0FBQUEsTUFBQyxHQUFFLEtBQUksU0FBUzJCLElBQUU7QUFBQyxRQUFBYyxLQUFFLEtBQUdkO0FBQUUsUUFBQXJDLEdBQUUsS0FBSyxNQUFLcUMsRUFBQztBQUFBLE1BQUMsRUFBQyxDQUFDO0FBQUUsYUFBTyxlQUFlQSxJQUFFSyxJQUFFLEVBQUMsWUFBV1UsR0FBRSxXQUFVLENBQUM7QUFBRSxhQUFNLEVBQUMsVUFBUyxXQUFVO0FBQUMsZUFBT0Q7QUFBQSxNQUFDLEdBQUUsVUFBUyxTQUFTZCxJQUFFO0FBQUMsUUFBQWMsS0FBRSxLQUFHZDtBQUFBLE1BQUMsR0FBRSxjQUFhLFdBQVU7QUFBQyxRQUFBQSxHQUFFLGdCQUN4ZjtBQUFLLGVBQU9BLEdBQUVLLEVBQUM7QUFBQSxNQUFDLEVBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0wsSUFBRTtBQUFDLElBQUFBLEdBQUUsa0JBQWdCQSxHQUFFLGdCQUFjLEdBQUdBLEVBQUM7QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHQSxJQUFFO0FBQUMsUUFBRyxDQUFDQSxHQUFFLFFBQU07QUFBRyxRQUFJSyxLQUFFTCxHQUFFO0FBQWMsUUFBRyxDQUFDSyxHQUFFLFFBQU07QUFBRyxRQUFJVSxLQUFFVixHQUFFO0FBQVcsUUFBSVMsS0FBRTtBQUFHLElBQUFkLE9BQUljLEtBQUUsR0FBR2QsRUFBQyxJQUFFQSxHQUFFLFVBQVEsU0FBTyxVQUFRQSxHQUFFO0FBQU8sSUFBQUEsS0FBRWM7QUFBRSxXQUFPZCxPQUFJZSxNQUFHVixHQUFFLFNBQVNMLEVBQUMsR0FBRSxRQUFJO0FBQUEsRUFBRTtBQUFDLFdBQVMsR0FBR0EsSUFBRTtBQUFDLElBQUFBLEtBQUVBLE9BQUksZ0JBQWMsT0FBTyxXQUFTLFdBQVM7QUFBUSxRQUFHLGdCQUFjLE9BQU9BLEdBQUUsUUFBTztBQUFLLFFBQUc7QUFBQyxhQUFPQSxHQUFFLGlCQUFlQSxHQUFFO0FBQUEsSUFBSSxTQUFPSyxJQUFFO0FBQUMsYUFBT0wsR0FBRTtBQUFBLElBQUk7QUFBQSxFQUFDO0FBQ3BhLFdBQVMsR0FBR0EsSUFBRUssSUFBRTtBQUFDLFFBQUlVLEtBQUVWLEdBQUU7QUFBUSxXQUFPTixHQUFFLENBQUUsR0FBQ00sSUFBRSxFQUFDLGdCQUFlLFFBQU8sY0FBYSxRQUFPLE9BQU0sUUFBTyxTQUFRLFFBQU1VLEtBQUVBLEtBQUVmLEdBQUUsY0FBYyxlQUFjLENBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRSxRQUFNVixHQUFFLGVBQWEsS0FBR0EsR0FBRSxjQUFhUyxLQUFFLFFBQU1ULEdBQUUsVUFBUUEsR0FBRSxVQUFRQSxHQUFFO0FBQWUsSUFBQVUsS0FBRSxHQUFHLFFBQU1WLEdBQUUsUUFBTUEsR0FBRSxRQUFNVSxFQUFDO0FBQUUsSUFBQWYsR0FBRSxnQkFBYyxFQUFDLGdCQUFlYyxJQUFFLGNBQWFDLElBQUUsWUFBVyxlQUFhVixHQUFFLFFBQU0sWUFBVUEsR0FBRSxPQUFLLFFBQU1BLEdBQUUsVUFBUSxRQUFNQSxHQUFFLE1BQUs7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHTCxJQUFFSyxJQUFFO0FBQUMsSUFBQUEsS0FBRUEsR0FBRTtBQUFRLFlBQU1BLE1BQUcsR0FBR0wsSUFBRSxXQUFVSyxJQUFFLEtBQUU7QUFBQSxFQUFDO0FBQzlkLFdBQVMsR0FBR0wsSUFBRUssSUFBRTtBQUFDLE9BQUdMLElBQUVLLEVBQUM7QUFBRSxRQUFJVSxLQUFFLEdBQUdWLEdBQUUsS0FBSyxHQUFFUyxLQUFFVCxHQUFFO0FBQUssUUFBRyxRQUFNVSxHQUFFLEtBQUcsYUFBV0QsSUFBRTtBQUFDLFVBQUcsTUFBSUMsTUFBRyxPQUFLZixHQUFFLFNBQU9BLEdBQUUsU0FBT2UsR0FBRSxDQUFBZixHQUFFLFFBQU0sS0FBR2U7QUFBQSxJQUFDLE1BQU0sQ0FBQWYsR0FBRSxVQUFRLEtBQUdlLE9BQUlmLEdBQUUsUUFBTSxLQUFHZTtBQUFBLGFBQVcsYUFBV0QsTUFBRyxZQUFVQSxJQUFFO0FBQUMsTUFBQWQsR0FBRSxnQkFBZ0IsT0FBTztBQUFFO0FBQUEsSUFBTTtBQUFDLElBQUFLLEdBQUUsZUFBZSxPQUFPLElBQUUsR0FBR0wsSUFBRUssR0FBRSxNQUFLVSxFQUFDLElBQUVWLEdBQUUsZUFBZSxjQUFjLEtBQUcsR0FBR0wsSUFBRUssR0FBRSxNQUFLLEdBQUdBLEdBQUUsWUFBWSxDQUFDO0FBQUUsWUFBTUEsR0FBRSxXQUFTLFFBQU1BLEdBQUUsbUJBQWlCTCxHQUFFLGlCQUFlLENBQUMsQ0FBQ0ssR0FBRTtBQUFBLEVBQWU7QUFDbGEsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBR1YsR0FBRSxlQUFlLE9BQU8sS0FBR0EsR0FBRSxlQUFlLGNBQWMsR0FBRTtBQUFDLFVBQUlTLEtBQUVULEdBQUU7QUFBSyxVQUFHLEVBQUUsYUFBV1MsTUFBRyxZQUFVQSxNQUFHLFdBQVNULEdBQUUsU0FBTyxTQUFPQSxHQUFFLE9BQU87QUFBTyxNQUFBQSxLQUFFLEtBQUdMLEdBQUUsY0FBYztBQUFhLE1BQUFlLE1BQUdWLE9BQUlMLEdBQUUsVUFBUUEsR0FBRSxRQUFNSztBQUFHLE1BQUFMLEdBQUUsZUFBYUs7QUFBQSxJQUFDO0FBQUMsSUFBQVUsS0FBRWYsR0FBRTtBQUFLLFdBQUtlLE9BQUlmLEdBQUUsT0FBSztBQUFJLElBQUFBLEdBQUUsaUJBQWUsQ0FBQyxDQUFDQSxHQUFFLGNBQWM7QUFBZSxXQUFLZSxPQUFJZixHQUFFLE9BQUtlO0FBQUEsRUFBRTtBQUN6VixXQUFTLEdBQUdmLElBQUVLLElBQUVVLElBQUU7QUFBQyxRQUFHLGFBQVdWLE1BQUcsR0FBR0wsR0FBRSxhQUFhLE1BQUlBLEdBQUUsU0FBTWUsS0FBRWYsR0FBRSxlQUFhLEtBQUdBLEdBQUUsY0FBYyxlQUFhQSxHQUFFLGlCQUFlLEtBQUdlLE9BQUlmLEdBQUUsZUFBYSxLQUFHZTtBQUFBLEVBQUU7QUFBQyxNQUFJLEtBQUcsTUFBTTtBQUM3SyxXQUFTLEdBQUdmLElBQUVLLElBQUVVLElBQUVELElBQUU7QUFBQyxJQUFBZCxLQUFFQSxHQUFFO0FBQVEsUUFBR0ssSUFBRTtBQUFDLE1BQUFBLEtBQUUsQ0FBQTtBQUFHLGVBQVFoQyxLQUFFLEdBQUVBLEtBQUUwQyxHQUFFLFFBQU8xQyxLQUFJLENBQUFnQyxHQUFFLE1BQUlVLEdBQUUxQyxFQUFDLENBQUMsSUFBRTtBQUFHLFdBQUkwQyxLQUFFLEdBQUVBLEtBQUVmLEdBQUUsUUFBT2UsS0FBSSxDQUFBMUMsS0FBRWdDLEdBQUUsZUFBZSxNQUFJTCxHQUFFZSxFQUFDLEVBQUUsS0FBSyxHQUFFZixHQUFFZSxFQUFDLEVBQUUsYUFBVzFDLE9BQUkyQixHQUFFZSxFQUFDLEVBQUUsV0FBUzFDLEtBQUdBLE1BQUd5QyxPQUFJZCxHQUFFZSxFQUFDLEVBQUUsa0JBQWdCO0FBQUEsSUFBRyxPQUFLO0FBQUMsTUFBQUEsS0FBRSxLQUFHLEdBQUdBLEVBQUM7QUFBRSxNQUFBVixLQUFFO0FBQUssV0FBSWhDLEtBQUUsR0FBRUEsS0FBRTJCLEdBQUUsUUFBTzNCLE1BQUk7QUFBQyxZQUFHMkIsR0FBRTNCLEVBQUMsRUFBRSxVQUFRMEMsSUFBRTtBQUFDLFVBQUFmLEdBQUUzQixFQUFDLEVBQUUsV0FBUztBQUFHLFVBQUF5QyxPQUFJZCxHQUFFM0IsRUFBQyxFQUFFLGtCQUFnQjtBQUFJO0FBQUEsUUFBTTtBQUFDLGlCQUFPZ0MsTUFBR0wsR0FBRTNCLEVBQUMsRUFBRSxhQUFXZ0MsS0FBRUwsR0FBRTNCLEVBQUM7QUFBQSxNQUFFO0FBQUMsZUFBT2dDLE9BQUlBLEdBQUUsV0FBUztBQUFBLElBQUc7QUFBQSxFQUFDO0FBQ3hZLFdBQVMsR0FBR0wsSUFBRUssSUFBRTtBQUFDLFFBQUcsUUFBTUEsR0FBRSx3QkFBd0IsT0FBTSxNQUFNZCxHQUFFLEVBQUUsQ0FBQztBQUFFLFdBQU9RLEdBQUUsQ0FBRSxHQUFDTSxJQUFFLEVBQUMsT0FBTSxRQUFPLGNBQWEsUUFBTyxVQUFTLEtBQUdMLEdBQUUsY0FBYyxhQUFZLENBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRVYsR0FBRTtBQUFNLFFBQUcsUUFBTVUsSUFBRTtBQUFDLE1BQUFBLEtBQUVWLEdBQUU7QUFBUyxNQUFBQSxLQUFFQSxHQUFFO0FBQWEsVUFBRyxRQUFNVSxJQUFFO0FBQUMsWUFBRyxRQUFNVixHQUFFLE9BQU0sTUFBTWQsR0FBRSxFQUFFLENBQUM7QUFBRSxZQUFHLEdBQUd3QixFQUFDLEdBQUU7QUFBQyxjQUFHLElBQUVBLEdBQUUsT0FBTyxPQUFNLE1BQU14QixHQUFFLEVBQUUsQ0FBQztBQUFFLFVBQUF3QixLQUFFQSxHQUFFLENBQUM7QUFBQSxRQUFDO0FBQUMsUUFBQVYsS0FBRVU7QUFBQSxNQUFDO0FBQUMsY0FBTVYsT0FBSUEsS0FBRTtBQUFJLE1BQUFVLEtBQUVWO0FBQUEsSUFBQztBQUFDLElBQUFMLEdBQUUsZ0JBQWMsRUFBQyxjQUFhLEdBQUdlLEVBQUMsRUFBQztBQUFBLEVBQUM7QUFDblksV0FBUyxHQUFHZixJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRSxHQUFHVixHQUFFLEtBQUssR0FBRVMsS0FBRSxHQUFHVCxHQUFFLFlBQVk7QUFBRSxZQUFNVSxPQUFJQSxLQUFFLEtBQUdBLElBQUVBLE9BQUlmLEdBQUUsVUFBUUEsR0FBRSxRQUFNZSxLQUFHLFFBQU1WLEdBQUUsZ0JBQWNMLEdBQUUsaUJBQWVlLE9BQUlmLEdBQUUsZUFBYWU7QUFBSSxZQUFNRCxPQUFJZCxHQUFFLGVBQWEsS0FBR2M7QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHZCxJQUFFO0FBQUMsUUFBSUssS0FBRUwsR0FBRTtBQUFZLElBQUFLLE9BQUlMLEdBQUUsY0FBYyxnQkFBYyxPQUFLSyxNQUFHLFNBQU9BLE9BQUlMLEdBQUUsUUFBTUs7QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHTCxJQUFFO0FBQUMsWUFBT0EsSUFBQztBQUFBLE1BQUUsS0FBSztBQUFNLGVBQU07QUFBQSxNQUE2QixLQUFLO0FBQU8sZUFBTTtBQUFBLE1BQXFDO0FBQVEsZUFBTTtBQUFBLElBQThCO0FBQUEsRUFBQztBQUM3YyxXQUFTLEdBQUdBLElBQUVLLElBQUU7QUFBQyxXQUFPLFFBQU1MLE1BQUcsbUNBQWlDQSxLQUFFLEdBQUdLLEVBQUMsSUFBRSxpQ0FBK0JMLE1BQUcsb0JBQWtCSyxLQUFFLGlDQUErQkw7QUFBQSxFQUFDO0FBQ2hLLE1BQUksSUFBRyxLQUFHLFNBQVNBLElBQUU7QUFBQyxXQUFNLGdCQUFjLE9BQU8sU0FBTyxNQUFNLDBCQUF3QixTQUFTSyxJQUFFVSxJQUFFRCxJQUFFekMsSUFBRTtBQUFDLFlBQU0sd0JBQXdCLFdBQVU7QUFBQyxlQUFPMkIsR0FBRUssSUFBRVUsSUFBRUQsSUFBRXpDLEVBQUM7QUFBQSxNQUFDLENBQUM7QUFBQSxJQUFDLElBQUUyQjtBQUFBLEVBQUMsRUFBRSxTQUFTQSxJQUFFSyxJQUFFO0FBQUMsUUFBRyxpQ0FBK0JMLEdBQUUsZ0JBQWMsZUFBY0EsR0FBRSxDQUFBQSxHQUFFLFlBQVVLO0FBQUEsU0FBTTtBQUFDLFdBQUcsTUFBSSxTQUFTLGNBQWMsS0FBSztBQUFFLFNBQUcsWUFBVSxVQUFRQSxHQUFFLFFBQU8sRUFBRyxTQUFVLElBQUM7QUFBUyxXQUFJQSxLQUFFLEdBQUcsWUFBV0wsR0FBRSxhQUFZLENBQUFBLEdBQUUsWUFBWUEsR0FBRSxVQUFVO0FBQUUsYUFBS0ssR0FBRSxhQUFZLENBQUFMLEdBQUUsWUFBWUssR0FBRSxVQUFVO0FBQUEsSUFBQztBQUFBLEVBQUMsQ0FBQztBQUNwZCxXQUFTLEdBQUdMLElBQUVLLElBQUU7QUFBQyxRQUFHQSxJQUFFO0FBQUMsVUFBSVUsS0FBRWYsR0FBRTtBQUFXLFVBQUdlLE1BQUdBLE9BQUlmLEdBQUUsYUFBVyxNQUFJZSxHQUFFLFVBQVM7QUFBQyxRQUFBQSxHQUFFLFlBQVVWO0FBQUU7QUFBQSxNQUFNO0FBQUEsSUFBQztBQUFDLElBQUFMLEdBQUUsY0FBWUs7QUFBQSxFQUFDO0FBQ3RILE1BQUksS0FBRztBQUFBLElBQUMseUJBQXdCO0FBQUEsSUFBRyxhQUFZO0FBQUEsSUFBRyxtQkFBa0I7QUFBQSxJQUFHLGtCQUFpQjtBQUFBLElBQUcsa0JBQWlCO0FBQUEsSUFBRyxTQUFRO0FBQUEsSUFBRyxjQUFhO0FBQUEsSUFBRyxpQkFBZ0I7QUFBQSxJQUFHLGFBQVk7QUFBQSxJQUFHLFNBQVE7QUFBQSxJQUFHLE1BQUs7QUFBQSxJQUFHLFVBQVM7QUFBQSxJQUFHLGNBQWE7QUFBQSxJQUFHLFlBQVc7QUFBQSxJQUFHLGNBQWE7QUFBQSxJQUFHLFdBQVU7QUFBQSxJQUFHLFVBQVM7QUFBQSxJQUFHLFNBQVE7QUFBQSxJQUFHLFlBQVc7QUFBQSxJQUFHLGFBQVk7QUFBQSxJQUFHLGNBQWE7QUFBQSxJQUFHLFlBQVc7QUFBQSxJQUFHLGVBQWM7QUFBQSxJQUFHLGdCQUFlO0FBQUEsSUFBRyxpQkFBZ0I7QUFBQSxJQUFHLFlBQVc7QUFBQSxJQUFHLFdBQVU7QUFBQSxJQUFHLFlBQVc7QUFBQSxJQUFHLFNBQVE7QUFBQSxJQUFHLE9BQU07QUFBQSxJQUFHLFNBQVE7QUFBQSxJQUFHLFNBQVE7QUFBQSxJQUFHLFFBQU87QUFBQSxJQUFHLFFBQU87QUFBQSxJQUNsZixNQUFLO0FBQUEsSUFBRyxhQUFZO0FBQUEsSUFBRyxjQUFhO0FBQUEsSUFBRyxhQUFZO0FBQUEsSUFBRyxpQkFBZ0I7QUFBQSxJQUFHLGtCQUFpQjtBQUFBLElBQUcsa0JBQWlCO0FBQUEsSUFBRyxlQUFjO0FBQUEsSUFBRyxhQUFZO0FBQUEsRUFBRSxHQUFFLEtBQUcsQ0FBQyxVQUFTLE1BQUssT0FBTSxHQUFHO0FBQUUsU0FBTyxLQUFLLEVBQUUsRUFBRSxRQUFRLFNBQVNMLElBQUU7QUFBQyxPQUFHLFFBQVEsU0FBU0ssSUFBRTtBQUFDLE1BQUFBLEtBQUVBLEtBQUVMLEdBQUUsT0FBTyxDQUFDLEVBQUUsZ0JBQWNBLEdBQUUsVUFBVSxDQUFDO0FBQUUsU0FBR0ssRUFBQyxJQUFFLEdBQUdMLEVBQUM7QUFBQSxJQUFDLENBQUM7QUFBQSxFQUFDLENBQUM7QUFBRSxXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUU7QUFBQyxXQUFPLFFBQU1WLE1BQUcsY0FBWSxPQUFPQSxNQUFHLE9BQUtBLEtBQUUsS0FBR1UsTUFBRyxhQUFXLE9BQU9WLE1BQUcsTUFBSUEsTUFBRyxHQUFHLGVBQWVMLEVBQUMsS0FBRyxHQUFHQSxFQUFDLEtBQUcsS0FBR0ssSUFBRyxTQUFPQSxLQUFFO0FBQUEsRUFBSTtBQUN6YixXQUFTLEdBQUdMLElBQUVLLElBQUU7QUFBQyxJQUFBTCxLQUFFQSxHQUFFO0FBQU0sYUFBUWUsTUFBS1YsR0FBRSxLQUFHQSxHQUFFLGVBQWVVLEVBQUMsR0FBRTtBQUFDLFVBQUlELEtBQUUsTUFBSUMsR0FBRSxRQUFRLElBQUksR0FBRTFDLEtBQUUsR0FBRzBDLElBQUVWLEdBQUVVLEVBQUMsR0FBRUQsRUFBQztBQUFFLGtCQUFVQyxPQUFJQSxLQUFFO0FBQVksTUFBQUQsS0FBRWQsR0FBRSxZQUFZZSxJQUFFMUMsRUFBQyxJQUFFMkIsR0FBRWUsRUFBQyxJQUFFMUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRzBCLEdBQUUsRUFBQyxVQUFTLEtBQUUsR0FBRSxFQUFDLE1BQUssTUFBRyxNQUFLLE1BQUcsSUFBRyxNQUFHLEtBQUksTUFBRyxPQUFNLE1BQUcsSUFBRyxNQUFHLEtBQUksTUFBRyxPQUFNLE1BQUcsUUFBTyxNQUFHLE1BQUssTUFBRyxNQUFLLE1BQUcsT0FBTSxNQUFHLFFBQU8sTUFBRyxPQUFNLE1BQUcsS0FBSSxLQUFFLENBQUM7QUFDclQsV0FBUyxHQUFHQyxJQUFFSyxJQUFFO0FBQUMsUUFBR0EsSUFBRTtBQUFDLFVBQUcsR0FBR0wsRUFBQyxNQUFJLFFBQU1LLEdBQUUsWUFBVSxRQUFNQSxHQUFFLHlCQUF5QixPQUFNLE1BQU1kLEdBQUUsS0FBSVMsRUFBQyxDQUFDO0FBQUUsVUFBRyxRQUFNSyxHQUFFLHlCQUF3QjtBQUFDLFlBQUcsUUFBTUEsR0FBRSxTQUFTLE9BQU0sTUFBTWQsR0FBRSxFQUFFLENBQUM7QUFBRSxZQUFHLGFBQVcsT0FBT2MsR0FBRSwyQkFBeUIsRUFBRSxZQUFXQSxHQUFFLHlCQUF5QixPQUFNLE1BQU1kLEdBQUUsRUFBRSxDQUFDO0FBQUEsTUFBRTtBQUFDLFVBQUcsUUFBTWMsR0FBRSxTQUFPLGFBQVcsT0FBT0EsR0FBRSxNQUFNLE9BQU0sTUFBTWQsR0FBRSxFQUFFLENBQUM7QUFBQSxJQUFFO0FBQUEsRUFBQztBQUNsVyxXQUFTLEdBQUdTLElBQUVLLElBQUU7QUFBQyxRQUFHLE9BQUtMLEdBQUUsUUFBUSxHQUFHLEVBQUUsUUFBTSxhQUFXLE9BQU9LLEdBQUU7QUFBRyxZQUFPTCxJQUFHO0FBQUEsTUFBQSxLQUFLO0FBQUEsTUFBaUIsS0FBSztBQUFBLE1BQWdCLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFnQixLQUFLO0FBQUEsTUFBZ0IsS0FBSztBQUFBLE1BQW1CLEtBQUs7QUFBQSxNQUFpQixLQUFLO0FBQWdCLGVBQU07QUFBQSxNQUFHO0FBQVEsZUFBTTtBQUFBLElBQUU7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHO0FBQUssV0FBUyxHQUFHQSxJQUFFO0FBQUMsSUFBQUEsS0FBRUEsR0FBRSxVQUFRQSxHQUFFLGNBQVk7QUFBTyxJQUFBQSxHQUFFLDRCQUEwQkEsS0FBRUEsR0FBRTtBQUF5QixXQUFPLE1BQUlBLEdBQUUsV0FBU0EsR0FBRSxhQUFXQTtBQUFBLEVBQUM7QUFBQyxNQUFJLEtBQUcsTUFBSyxLQUFHLE1BQUssS0FBRztBQUNwYyxXQUFTLEdBQUdBLElBQUU7QUFBQyxRQUFHQSxLQUFFLEdBQUdBLEVBQUMsR0FBRTtBQUFDLFVBQUcsZUFBYSxPQUFPLEdBQUcsT0FBTSxNQUFNVCxHQUFFLEdBQUcsQ0FBQztBQUFFLFVBQUljLEtBQUVMLEdBQUU7QUFBVSxNQUFBSyxPQUFJQSxLQUFFLEdBQUdBLEVBQUMsR0FBRSxHQUFHTCxHQUFFLFdBQVVBLEdBQUUsTUFBS0ssRUFBQztBQUFBLElBQUU7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHTCxJQUFFO0FBQUMsU0FBRyxLQUFHLEdBQUcsS0FBS0EsRUFBQyxJQUFFLEtBQUcsQ0FBQ0EsRUFBQyxJQUFFLEtBQUdBO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFDLFFBQUcsSUFBRztBQUFDLFVBQUlBLEtBQUUsSUFBR0ssS0FBRTtBQUFHLFdBQUcsS0FBRztBQUFLLFNBQUdMLEVBQUM7QUFBRSxVQUFHSyxHQUFFLE1BQUlMLEtBQUUsR0FBRUEsS0FBRUssR0FBRSxRQUFPTCxLQUFJLElBQUdLLEdBQUVMLEVBQUMsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFSyxJQUFFO0FBQUMsV0FBT0wsR0FBRUssRUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEtBQUk7QUFBQSxFQUFFO0FBQUEsTUFBSSxLQUFHO0FBQUcsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBRyxHQUFHLFFBQU9mLEdBQUVLLElBQUVVLEVBQUM7QUFBRSxTQUFHO0FBQUcsUUFBRztBQUFDLGFBQU8sR0FBR2YsSUFBRUssSUFBRVUsRUFBQztBQUFBLElBQUMsVUFBQztBQUFRLFVBQUcsS0FBRyxPQUFHLFNBQU8sTUFBSSxTQUFPLEdBQUcsSUFBSSxHQUFDLEdBQUU7QUFBQSxJQUFFO0FBQUEsRUFBQztBQUNoYixXQUFTLEdBQUdmLElBQUVLLElBQUU7QUFBQyxRQUFJVSxLQUFFZixHQUFFO0FBQVUsUUFBRyxTQUFPZSxHQUFFLFFBQU87QUFBSyxRQUFJRCxLQUFFLEdBQUdDLEVBQUM7QUFBRSxRQUFHLFNBQU9ELEdBQUUsUUFBTztBQUFLLElBQUFDLEtBQUVELEdBQUVULEVBQUM7QUFBRSxNQUFFLFNBQU9BLElBQUc7QUFBQSxNQUFBLEtBQUs7QUFBQSxNQUFVLEtBQUs7QUFBQSxNQUFpQixLQUFLO0FBQUEsTUFBZ0IsS0FBSztBQUFBLE1BQXVCLEtBQUs7QUFBQSxNQUFjLEtBQUs7QUFBQSxNQUFxQixLQUFLO0FBQUEsTUFBYyxLQUFLO0FBQUEsTUFBcUIsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQW1CLEtBQUs7QUFBZSxTQUFDUyxLQUFFLENBQUNBLEdBQUUsY0FBWWQsS0FBRUEsR0FBRSxNQUFLYyxLQUFFLEVBQUUsYUFBV2QsTUFBRyxZQUFVQSxNQUFHLGFBQVdBLE1BQUcsZUFBYUE7QUFBSSxRQUFBQSxLQUFFLENBQUNjO0FBQUUsY0FBTTtBQUFBLE1BQUU7QUFBUSxRQUFBZCxLQUFFO0FBQUEsSUFBRTtBQUFDLFFBQUdBLEdBQUUsUUFBTztBQUFLLFFBQUdlLE1BQUcsZUFDemUsT0FBT0EsR0FBRSxPQUFNLE1BQU14QixHQUFFLEtBQUljLElBQUUsT0FBT1UsRUFBQyxDQUFDO0FBQUUsV0FBT0E7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHO0FBQUcsTUFBRyxHQUFHLEtBQUc7QUFBQyxRQUFJLEtBQUcsQ0FBRTtBQUFDLFdBQU8sZUFBZSxJQUFHLFdBQVUsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFHO0FBQUEsSUFBRSxFQUFDLENBQUM7QUFBRSxXQUFPLGlCQUFpQixRQUFPLElBQUcsRUFBRTtBQUFFLFdBQU8sb0JBQW9CLFFBQU8sSUFBRyxFQUFFO0FBQUEsRUFBQyxTQUFPZixJQUFFO0FBQUMsU0FBRztBQUFBLEVBQUU7QUFBQyxXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFVixJQUFFc0QsSUFBRUQsSUFBRTVDLElBQUU7QUFBQyxRQUFJaUIsS0FBRSxNQUFNLFVBQVUsTUFBTSxLQUFLLFdBQVUsQ0FBQztBQUFFLFFBQUc7QUFBQyxNQUFBZ0IsR0FBRSxNQUFNVSxJQUFFMUIsRUFBQztBQUFBLElBQUMsU0FBTzZCLElBQUU7QUFBQyxXQUFLLFFBQVFBLEVBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxPQUFHLEtBQUcsTUFBSyxLQUFHLE9BQUcsS0FBRyxNQUFLLEtBQUcsRUFBQyxTQUFRLFNBQVNsQixJQUFFO0FBQUMsU0FBRztBQUFHLFNBQUdBO0FBQUEsRUFBQyxFQUFDO0FBQUUsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFekMsSUFBRVYsSUFBRXNELElBQUVELElBQUU1QyxJQUFFO0FBQUMsU0FBRztBQUFHLFNBQUc7QUFBSyxPQUFHLE1BQU0sSUFBRyxTQUFTO0FBQUEsRUFBQztBQUN6ZSxXQUFTLEdBQUc0QixJQUFFSyxJQUFFVSxJQUFFRCxJQUFFekMsSUFBRVYsSUFBRXNELElBQUVELElBQUU1QyxJQUFFO0FBQUMsT0FBRyxNQUFNLE1BQUssU0FBUztBQUFFLFFBQUcsSUFBRztBQUFDLFVBQUcsSUFBRztBQUFDLFlBQUlpQixLQUFFO0FBQUcsYUFBRztBQUFHLGFBQUc7QUFBQSxNQUFJLE1BQU0sT0FBTSxNQUFNRSxHQUFFLEdBQUcsQ0FBQztBQUFFLGFBQUssS0FBRyxNQUFHLEtBQUdGO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdXLElBQUU7QUFBQyxRQUFJSyxLQUFFTCxJQUFFZSxLQUFFZjtBQUFFLFFBQUdBLEdBQUUsVUFBVSxRQUFLSyxHQUFFLFNBQVEsQ0FBQUEsS0FBRUEsR0FBRTtBQUFBLFNBQVc7QUFBQyxNQUFBTCxLQUFFSztBQUFFO0FBQUcsUUFBQUEsS0FBRUwsSUFBRSxPQUFLSyxHQUFFLFFBQU0sVUFBUVUsS0FBRVYsR0FBRSxTQUFRTCxLQUFFSyxHQUFFO0FBQUEsYUFBYUw7QUFBQSxJQUFFO0FBQUMsV0FBTyxNQUFJSyxHQUFFLE1BQUlVLEtBQUU7QUFBQSxFQUFJO0FBQUMsV0FBUyxHQUFHZixJQUFFO0FBQUMsUUFBRyxPQUFLQSxHQUFFLEtBQUk7QUFBQyxVQUFJSyxLQUFFTCxHQUFFO0FBQWMsZUFBT0ssT0FBSUwsS0FBRUEsR0FBRSxXQUFVLFNBQU9BLE9BQUlLLEtBQUVMLEdBQUU7QUFBZ0IsVUFBRyxTQUFPSyxHQUFFLFFBQU9BLEdBQUU7QUFBQSxJQUFVO0FBQUMsV0FBTztBQUFBLEVBQUk7QUFBQyxXQUFTLEdBQUdMLElBQUU7QUFBQyxRQUFHLEdBQUdBLEVBQUMsTUFBSUEsR0FBRSxPQUFNLE1BQU1ULEdBQUUsR0FBRyxDQUFDO0FBQUEsRUFBRTtBQUNqZixXQUFTLEdBQUdTLElBQUU7QUFBQyxRQUFJSyxLQUFFTCxHQUFFO0FBQVUsUUFBRyxDQUFDSyxJQUFFO0FBQUMsTUFBQUEsS0FBRSxHQUFHTCxFQUFDO0FBQUUsVUFBRyxTQUFPSyxHQUFFLE9BQU0sTUFBTWQsR0FBRSxHQUFHLENBQUM7QUFBRSxhQUFPYyxPQUFJTCxLQUFFLE9BQUtBO0FBQUEsSUFBQztBQUFDLGFBQVFlLEtBQUVmLElBQUVjLEtBQUVULFFBQUk7QUFBQyxVQUFJaEMsS0FBRTBDLEdBQUU7QUFBTyxVQUFHLFNBQU8xQyxHQUFFO0FBQU0sVUFBSVYsS0FBRVUsR0FBRTtBQUFVLFVBQUcsU0FBT1YsSUFBRTtBQUFDLFFBQUFtRCxLQUFFekMsR0FBRTtBQUFPLFlBQUcsU0FBT3lDLElBQUU7QUFBQyxVQUFBQyxLQUFFRDtBQUFFO0FBQUEsUUFBUTtBQUFDO0FBQUEsTUFBSztBQUFDLFVBQUd6QyxHQUFFLFVBQVFWLEdBQUUsT0FBTTtBQUFDLGFBQUlBLEtBQUVVLEdBQUUsT0FBTVYsTUFBRztBQUFDLGNBQUdBLE9BQUlvRCxHQUFFLFFBQU8sR0FBRzFDLEVBQUMsR0FBRTJCO0FBQUUsY0FBR3JDLE9BQUltRCxHQUFFLFFBQU8sR0FBR3pDLEVBQUMsR0FBRWdDO0FBQUUsVUFBQTFDLEtBQUVBLEdBQUU7QUFBQSxRQUFPO0FBQUMsY0FBTSxNQUFNNEIsR0FBRSxHQUFHLENBQUM7QUFBQSxNQUFFO0FBQUMsVUFBR3dCLEdBQUUsV0FBU0QsR0FBRSxPQUFPLENBQUFDLEtBQUUxQyxJQUFFeUMsS0FBRW5EO0FBQUEsV0FBTTtBQUFDLGlCQUFRc0QsS0FBRSxPQUFHRCxLQUFFM0MsR0FBRSxPQUFNMkMsTUFBRztBQUFDLGNBQUdBLE9BQUlELElBQUU7QUFBQyxZQUFBRSxLQUFFO0FBQUcsWUFBQUYsS0FBRTFDO0FBQUUsWUFBQXlDLEtBQUVuRDtBQUFFO0FBQUEsVUFBSztBQUFDLGNBQUdxRCxPQUFJRixJQUFFO0FBQUMsWUFBQUcsS0FBRTtBQUFHLFlBQUFILEtBQUV6QztBQUFFLFlBQUEwQyxLQUFFcEQ7QUFBRTtBQUFBLFVBQUs7QUFBQyxVQUFBcUQsS0FBRUEsR0FBRTtBQUFBLFFBQU87QUFBQyxZQUFHLENBQUNDLElBQUU7QUFBQyxlQUFJRCxLQUFFckQsR0FBRSxPQUFNcUQsTUFBRztBQUFDLGdCQUFHQSxPQUM1ZkQsSUFBRTtBQUFDLGNBQUFFLEtBQUU7QUFBRyxjQUFBRixLQUFFcEQ7QUFBRSxjQUFBbUQsS0FBRXpDO0FBQUU7QUFBQSxZQUFLO0FBQUMsZ0JBQUcyQyxPQUFJRixJQUFFO0FBQUMsY0FBQUcsS0FBRTtBQUFHLGNBQUFILEtBQUVuRDtBQUFFLGNBQUFvRCxLQUFFMUM7QUFBRTtBQUFBLFlBQUs7QUFBQyxZQUFBMkMsS0FBRUEsR0FBRTtBQUFBLFVBQU87QUFBQyxjQUFHLENBQUNDLEdBQUUsT0FBTSxNQUFNMUIsR0FBRSxHQUFHLENBQUM7QUFBQSxRQUFFO0FBQUEsTUFBQztBQUFDLFVBQUd3QixHQUFFLGNBQVlELEdBQUUsT0FBTSxNQUFNdkIsR0FBRSxHQUFHLENBQUM7QUFBQSxJQUFFO0FBQUMsUUFBRyxNQUFJd0IsR0FBRSxJQUFJLE9BQU0sTUFBTXhCLEdBQUUsR0FBRyxDQUFDO0FBQUUsV0FBT3dCLEdBQUUsVUFBVSxZQUFVQSxLQUFFZixLQUFFSztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdMLElBQUU7QUFBQyxJQUFBQSxLQUFFLEdBQUdBLEVBQUM7QUFBRSxXQUFPLFNBQU9BLEtBQUUsR0FBR0EsRUFBQyxJQUFFO0FBQUEsRUFBSTtBQUFDLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFFBQUcsTUFBSUEsR0FBRSxPQUFLLE1BQUlBLEdBQUUsSUFBSSxRQUFPQTtBQUFFLFNBQUlBLEtBQUVBLEdBQUUsT0FBTSxTQUFPQSxNQUFHO0FBQUMsVUFBSUssS0FBRSxHQUFHTCxFQUFDO0FBQUUsVUFBRyxTQUFPSyxHQUFFLFFBQU9BO0FBQUUsTUFBQUwsS0FBRUEsR0FBRTtBQUFBLElBQU87QUFBQyxXQUFPO0FBQUEsRUFBSTtBQUMxWCxNQUFJLEtBQUcsR0FBRywyQkFBMEIsS0FBRyxHQUFHLHlCQUF3QixLQUFHLEdBQUcsc0JBQXFCLEtBQUcsR0FBRyx1QkFBc0JDLEtBQUUsR0FBRyxjQUFhLEtBQUcsR0FBRyxrQ0FBaUMsS0FBRyxHQUFHLDRCQUEyQixLQUFHLEdBQUcsK0JBQThCLEtBQUcsR0FBRyx5QkFBd0IsS0FBRyxHQUFHLHNCQUFxQixLQUFHLEdBQUcsdUJBQXNCLEtBQUcsTUFBSyxLQUFHO0FBQUssV0FBUyxHQUFHRCxJQUFFO0FBQUMsUUFBRyxNQUFJLGVBQWEsT0FBTyxHQUFHLGtCQUFrQixLQUFHO0FBQUMsU0FBRyxrQkFBa0IsSUFBR0EsSUFBRSxRQUFPLFNBQU9BLEdBQUUsUUFBUSxRQUFNLElBQUk7QUFBQSxJQUFDLFNBQU9LLElBQUU7QUFBQSxJQUFFO0FBQUEsRUFBQTtBQUN2ZSxNQUFJLEtBQUcsS0FBSyxRQUFNLEtBQUssUUFBTSxJQUFHLEtBQUcsS0FBSyxLQUFJLEtBQUcsS0FBSztBQUFJLFdBQVMsR0FBR0wsSUFBRTtBQUFDLElBQUFBLFFBQUs7QUFBRSxXQUFPLE1BQUlBLEtBQUUsS0FBRyxNQUFJLEdBQUdBLEVBQUMsSUFBRSxLQUFHLEtBQUc7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHLElBQUcsS0FBRztBQUM3SCxXQUFTLEdBQUdBLElBQUU7QUFBQyxZQUFPQSxLQUFFLENBQUNBLElBQUc7QUFBQSxNQUFBLEtBQUs7QUFBRSxlQUFPO0FBQUEsTUFBRSxLQUFLO0FBQUUsZUFBTztBQUFBLE1BQUUsS0FBSztBQUFFLGVBQU87QUFBQSxNQUFFLEtBQUs7QUFBRSxlQUFPO0FBQUEsTUFBRSxLQUFLO0FBQUcsZUFBTztBQUFBLE1BQUcsS0FBSztBQUFHLGVBQU87QUFBQSxNQUFHLEtBQUs7QUFBQSxNQUFHLEtBQUs7QUFBQSxNQUFJLEtBQUs7QUFBQSxNQUFJLEtBQUs7QUFBQSxNQUFJLEtBQUs7QUFBQSxNQUFLLEtBQUs7QUFBQSxNQUFLLEtBQUs7QUFBQSxNQUFLLEtBQUs7QUFBQSxNQUFLLEtBQUs7QUFBQSxNQUFNLEtBQUs7QUFBQSxNQUFNLEtBQUs7QUFBQSxNQUFNLEtBQUs7QUFBQSxNQUFPLEtBQUs7QUFBQSxNQUFPLEtBQUs7QUFBQSxNQUFPLEtBQUs7QUFBQSxNQUFRLEtBQUs7QUFBUSxlQUFPQSxLQUFFO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQVMsZUFBT0EsS0FBRTtBQUFBLE1BQVUsS0FBSztBQUFVLGVBQU87QUFBQSxNQUFVLEtBQUs7QUFBVSxlQUFPO0FBQUEsTUFBVSxLQUFLO0FBQVUsZUFBTztBQUFBLE1BQVUsS0FBSztBQUFXLGVBQU87QUFBQSxNQUN6Z0I7QUFBUSxlQUFPQTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRWYsR0FBRTtBQUFhLFFBQUcsTUFBSWUsR0FBRSxRQUFPO0FBQUUsUUFBSUQsS0FBRSxHQUFFekMsS0FBRTJCLEdBQUUsZ0JBQWVyQyxLQUFFcUMsR0FBRSxhQUFZaUIsS0FBRUYsS0FBRTtBQUFVLFFBQUcsTUFBSUUsSUFBRTtBQUFDLFVBQUlELEtBQUVDLEtBQUUsQ0FBQzVDO0FBQUUsWUFBSTJDLEtBQUVGLEtBQUUsR0FBR0UsRUFBQyxLQUFHckQsTUFBR3NELElBQUUsTUFBSXRELE9BQUltRCxLQUFFLEdBQUduRCxFQUFDO0FBQUEsSUFBRyxNQUFNLENBQUFzRCxLQUFFRixLQUFFLENBQUMxQyxJQUFFLE1BQUk0QyxLQUFFSCxLQUFFLEdBQUdHLEVBQUMsSUFBRSxNQUFJdEQsT0FBSW1ELEtBQUUsR0FBR25ELEVBQUM7QUFBRyxRQUFHLE1BQUltRCxHQUFFLFFBQU87QUFBRSxRQUFHLE1BQUlULE1BQUdBLE9BQUlTLE1BQUcsT0FBS1QsS0FBRWhDLFFBQUtBLEtBQUV5QyxLQUFFLENBQUNBLElBQUVuRCxLQUFFMEMsS0FBRSxDQUFDQSxJQUFFaEMsTUFBR1YsTUFBRyxPQUFLVSxNQUFHLE9BQUtWLEtBQUUsVUFBVSxRQUFPMEM7QUFBRSxXQUFLUyxLQUFFLE9BQUtBLE1BQUdDLEtBQUU7QUFBSSxJQUFBVixLQUFFTCxHQUFFO0FBQWUsUUFBRyxNQUFJSyxHQUFFLE1BQUlMLEtBQUVBLEdBQUUsZUFBY0ssTUFBR1MsSUFBRSxJQUFFVCxLQUFHLENBQUFVLEtBQUUsS0FBRyxHQUFHVixFQUFDLEdBQUVoQyxLQUFFLEtBQUcwQyxJQUFFRCxNQUFHZCxHQUFFZSxFQUFDLEdBQUVWLE1BQUcsQ0FBQ2hDO0FBQUUsV0FBT3lDO0FBQUEsRUFBQztBQUN2YyxXQUFTLEdBQUdkLElBQUVLLElBQUU7QUFBQyxZQUFPTCxJQUFHO0FBQUEsTUFBQSxLQUFLO0FBQUEsTUFBRSxLQUFLO0FBQUEsTUFBRSxLQUFLO0FBQUUsZUFBT0ssS0FBRTtBQUFBLE1BQUksS0FBSztBQUFBLE1BQUUsS0FBSztBQUFBLE1BQUcsS0FBSztBQUFBLE1BQUcsS0FBSztBQUFBLE1BQUcsS0FBSztBQUFBLE1BQUksS0FBSztBQUFBLE1BQUksS0FBSztBQUFBLE1BQUksS0FBSztBQUFBLE1BQUssS0FBSztBQUFBLE1BQUssS0FBSztBQUFBLE1BQUssS0FBSztBQUFBLE1BQUssS0FBSztBQUFBLE1BQU0sS0FBSztBQUFBLE1BQU0sS0FBSztBQUFBLE1BQU0sS0FBSztBQUFBLE1BQU8sS0FBSztBQUFBLE1BQU8sS0FBSztBQUFBLE1BQU8sS0FBSztBQUFBLE1BQVEsS0FBSztBQUFRLGVBQU9BLEtBQUU7QUFBQSxNQUFJLEtBQUs7QUFBQSxNQUFRLEtBQUs7QUFBQSxNQUFRLEtBQUs7QUFBQSxNQUFTLEtBQUs7QUFBQSxNQUFTLEtBQUs7QUFBUyxlQUFNO0FBQUEsTUFBRyxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQVcsZUFBTTtBQUFBLE1BQUc7QUFBUSxlQUFNO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFDL2EsV0FBUyxHQUFHTCxJQUFFSyxJQUFFO0FBQUMsYUFBUVUsS0FBRWYsR0FBRSxnQkFBZWMsS0FBRWQsR0FBRSxhQUFZM0IsS0FBRTJCLEdBQUUsaUJBQWdCckMsS0FBRXFDLEdBQUUsY0FBYSxJQUFFckMsTUFBRztBQUFDLFVBQUlzRCxLQUFFLEtBQUcsR0FBR3RELEVBQUMsR0FBRXFELEtBQUUsS0FBR0MsSUFBRTdDLEtBQUVDLEdBQUU0QyxFQUFDO0FBQUUsVUFBRyxPQUFLN0MsSUFBRTtBQUFDLFlBQUcsT0FBSzRDLEtBQUVELE9BQUksT0FBS0MsS0FBRUYsSUFBRyxDQUFBekMsR0FBRTRDLEVBQUMsSUFBRSxHQUFHRCxJQUFFWCxFQUFDO0FBQUEsTUFBQyxNQUFNLENBQUFqQyxNQUFHaUMsT0FBSUwsR0FBRSxnQkFBY2dCO0FBQUcsTUFBQXJELE1BQUcsQ0FBQ3FEO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdoQixJQUFFO0FBQUMsSUFBQUEsS0FBRUEsR0FBRSxlQUFhO0FBQVksV0FBTyxNQUFJQSxLQUFFQSxLQUFFQSxLQUFFLGFBQVcsYUFBVztBQUFBLEVBQUM7QUFBQyxXQUFTLEtBQUk7QUFBQyxRQUFJQSxLQUFFO0FBQUcsV0FBSztBQUFFLFdBQUssS0FBRyxhQUFXLEtBQUc7QUFBSSxXQUFPQTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdBLElBQUU7QUFBQyxhQUFRSyxLQUFFLElBQUdVLEtBQUUsR0FBRSxLQUFHQSxJQUFFQSxLQUFJLENBQUFWLEdBQUUsS0FBS0wsRUFBQztBQUFFLFdBQU9LO0FBQUEsRUFBQztBQUMzYSxXQUFTLEdBQUdMLElBQUVLLElBQUVVLElBQUU7QUFBQyxJQUFBZixHQUFFLGdCQUFjSztBQUFFLGtCQUFZQSxPQUFJTCxHQUFFLGlCQUFlLEdBQUVBLEdBQUUsY0FBWTtBQUFHLElBQUFBLEtBQUVBLEdBQUU7QUFBVyxJQUFBSyxLQUFFLEtBQUcsR0FBR0EsRUFBQztBQUFFLElBQUFMLEdBQUVLLEVBQUMsSUFBRVU7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHZixJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRWYsR0FBRSxlQUFhLENBQUNLO0FBQUUsSUFBQUwsR0FBRSxlQUFhSztBQUFFLElBQUFMLEdBQUUsaUJBQWU7QUFBRSxJQUFBQSxHQUFFLGNBQVk7QUFBRSxJQUFBQSxHQUFFLGdCQUFjSztBQUFFLElBQUFMLEdBQUUsb0JBQWtCSztBQUFFLElBQUFMLEdBQUUsa0JBQWdCSztBQUFFLElBQUFBLEtBQUVMLEdBQUU7QUFBYyxRQUFJYyxLQUFFZCxHQUFFO0FBQVcsU0FBSUEsS0FBRUEsR0FBRSxpQkFBZ0IsSUFBRWUsTUFBRztBQUFDLFVBQUkxQyxLQUFFLEtBQUcsR0FBRzBDLEVBQUMsR0FBRXBELEtBQUUsS0FBR1U7QUFBRSxNQUFBZ0MsR0FBRWhDLEVBQUMsSUFBRTtBQUFFLE1BQUF5QyxHQUFFekMsRUFBQyxJQUFFO0FBQUcsTUFBQTJCLEdBQUUzQixFQUFDLElBQUU7QUFBRyxNQUFBMEMsTUFBRyxDQUFDcEQ7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUN6WSxXQUFTLEdBQUdxQyxJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRWYsR0FBRSxrQkFBZ0JLO0FBQUUsU0FBSUwsS0FBRUEsR0FBRSxlQUFjZSxNQUFHO0FBQUMsVUFBSUQsS0FBRSxLQUFHLEdBQUdDLEVBQUMsR0FBRTFDLEtBQUUsS0FBR3lDO0FBQUUsTUFBQXpDLEtBQUVnQyxLQUFFTCxHQUFFYyxFQUFDLElBQUVULE9BQUlMLEdBQUVjLEVBQUMsS0FBR1Q7QUFBRyxNQUFBVSxNQUFHLENBQUMxQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsTUFBSTZCLEtBQUU7QUFBRSxXQUFTLEdBQUdGLElBQUU7QUFBQyxJQUFBQSxNQUFHLENBQUNBO0FBQUUsV0FBTyxJQUFFQSxLQUFFLElBQUVBLEtBQUUsT0FBS0EsS0FBRSxhQUFXLEtBQUcsWUFBVSxJQUFFO0FBQUEsRUFBQztBQUFDLE1BQUksSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEtBQUcsT0FBRyxLQUFHLENBQUUsR0FBQyxLQUFHLE1BQUssS0FBRyxNQUFLLEtBQUcsTUFBSyxLQUFHLG9CQUFJLE9BQUksS0FBRyxvQkFBSSxPQUFJLEtBQUcsQ0FBRSxHQUFDLEtBQUcsNlBBQTZQLE1BQU0sR0FBRztBQUNuaUIsV0FBUyxHQUFHQSxJQUFFSyxJQUFFO0FBQUMsWUFBT0wsSUFBRztBQUFBLE1BQUEsS0FBSztBQUFBLE1BQVUsS0FBSztBQUFXLGFBQUc7QUFBSztBQUFBLE1BQU0sS0FBSztBQUFBLE1BQVksS0FBSztBQUFZLGFBQUc7QUFBSztBQUFBLE1BQU0sS0FBSztBQUFBLE1BQVksS0FBSztBQUFXLGFBQUc7QUFBSztBQUFBLE1BQU0sS0FBSztBQUFBLE1BQWMsS0FBSztBQUFhLFdBQUcsT0FBT0ssR0FBRSxTQUFTO0FBQUU7QUFBQSxNQUFNLEtBQUs7QUFBQSxNQUFvQixLQUFLO0FBQXFCLFdBQUcsT0FBT0EsR0FBRSxTQUFTO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFDblQsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFekMsSUFBRVYsSUFBRTtBQUFDLFFBQUcsU0FBT3FDLE1BQUdBLEdBQUUsZ0JBQWNyQyxHQUFFLFFBQU9xQyxLQUFFLEVBQUMsV0FBVUssSUFBRSxjQUFhVSxJQUFFLGtCQUFpQkQsSUFBRSxhQUFZbkQsSUFBRSxrQkFBaUIsQ0FBQ1UsRUFBQyxFQUFDLEdBQUUsU0FBT2dDLE9BQUlBLEtBQUUsR0FBR0EsRUFBQyxHQUFFLFNBQU9BLE1BQUcsR0FBR0EsRUFBQyxJQUFHTDtBQUFFLElBQUFBLEdBQUUsb0JBQWtCYztBQUFFLElBQUFULEtBQUVMLEdBQUU7QUFBaUIsYUFBTzNCLE1BQUcsT0FBS2dDLEdBQUUsUUFBUWhDLEVBQUMsS0FBR2dDLEdBQUUsS0FBS2hDLEVBQUM7QUFBRSxXQUFPMkI7QUFBQSxFQUFDO0FBQ3BSLFdBQVMsR0FBR0EsSUFBRUssSUFBRVUsSUFBRUQsSUFBRXpDLElBQUU7QUFBQyxZQUFPZ0MsSUFBQztBQUFBLE1BQUUsS0FBSztBQUFVLGVBQU8sS0FBRyxHQUFHLElBQUdMLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxFQUFDLEdBQUU7QUFBQSxNQUFHLEtBQUs7QUFBWSxlQUFPLEtBQUcsR0FBRyxJQUFHMkIsSUFBRUssSUFBRVUsSUFBRUQsSUFBRXpDLEVBQUMsR0FBRTtBQUFBLE1BQUcsS0FBSztBQUFZLGVBQU8sS0FBRyxHQUFHLElBQUcyQixJQUFFSyxJQUFFVSxJQUFFRCxJQUFFekMsRUFBQyxHQUFFO0FBQUEsTUFBRyxLQUFLO0FBQWMsWUFBSVYsS0FBRVUsR0FBRTtBQUFVLFdBQUcsSUFBSVYsSUFBRSxHQUFHLEdBQUcsSUFBSUEsRUFBQyxLQUFHLE1BQUtxQyxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFekMsRUFBQyxDQUFDO0FBQUUsZUFBTTtBQUFBLE1BQUcsS0FBSztBQUFvQixlQUFPVixLQUFFVSxHQUFFLFdBQVUsR0FBRyxJQUFJVixJQUFFLEdBQUcsR0FBRyxJQUFJQSxFQUFDLEtBQUcsTUFBS3FDLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxFQUFDLENBQUMsR0FBRTtBQUFBLElBQUU7QUFBQyxXQUFNO0FBQUEsRUFBRTtBQUNuVyxXQUFTLEdBQUcyQixJQUFFO0FBQUMsUUFBSUssS0FBRSxHQUFHTCxHQUFFLE1BQU07QUFBRSxRQUFHLFNBQU9LLElBQUU7QUFBQyxVQUFJVSxLQUFFLEdBQUdWLEVBQUM7QUFBRSxVQUFHLFNBQU9VO0FBQUUsWUFBR1YsS0FBRVUsR0FBRSxLQUFJLE9BQUtWLElBQUU7QUFBQyxjQUFHQSxLQUFFLEdBQUdVLEVBQUMsR0FBRSxTQUFPVixJQUFFO0FBQUMsWUFBQUwsR0FBRSxZQUFVSztBQUFFLGVBQUdMLEdBQUUsVUFBUyxXQUFVO0FBQUMsaUJBQUdlLEVBQUM7QUFBQSxZQUFDLENBQUM7QUFBRTtBQUFBLFVBQU07QUFBQSxRQUFDLFdBQVMsTUFBSVYsTUFBR1UsR0FBRSxVQUFVLFFBQVEsY0FBYyxjQUFhO0FBQUMsVUFBQWYsR0FBRSxZQUFVLE1BQUllLEdBQUUsTUFBSUEsR0FBRSxVQUFVLGdCQUFjO0FBQUs7QUFBQSxRQUFNO0FBQUE7QUFBQSxJQUFDO0FBQUMsSUFBQWYsR0FBRSxZQUFVO0FBQUEsRUFBSTtBQUNsVCxXQUFTLEdBQUdBLElBQUU7QUFBQyxRQUFHLFNBQU9BLEdBQUUsVUFBVSxRQUFNO0FBQUcsYUFBUUssS0FBRUwsR0FBRSxrQkFBaUIsSUFBRUssR0FBRSxVQUFRO0FBQUMsVUFBSVUsS0FBRSxHQUFHZixHQUFFLGNBQWFBLEdBQUUsa0JBQWlCSyxHQUFFLENBQUMsR0FBRUwsR0FBRSxXQUFXO0FBQUUsVUFBRyxTQUFPZSxJQUFFO0FBQUMsUUFBQUEsS0FBRWYsR0FBRTtBQUFZLFlBQUljLEtBQUUsSUFBSUMsR0FBRSxZQUFZQSxHQUFFLE1BQUtBLEVBQUM7QUFBRSxhQUFHRDtBQUFFLFFBQUFDLEdBQUUsT0FBTyxjQUFjRCxFQUFDO0FBQUUsYUFBRztBQUFBLE1BQUksTUFBTSxRQUFPVCxLQUFFLEdBQUdVLEVBQUMsR0FBRSxTQUFPVixNQUFHLEdBQUdBLEVBQUMsR0FBRUwsR0FBRSxZQUFVZSxJQUFFO0FBQUcsTUFBQVYsR0FBRSxNQUFPO0FBQUEsSUFBQTtBQUFDLFdBQU07QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsT0FBR2YsRUFBQyxLQUFHZSxHQUFFLE9BQU9WLEVBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxLQUFJO0FBQUMsU0FBRztBQUFHLGFBQU8sTUFBSSxHQUFHLEVBQUUsTUFBSSxLQUFHO0FBQU0sYUFBTyxNQUFJLEdBQUcsRUFBRSxNQUFJLEtBQUc7QUFBTSxhQUFPLE1BQUksR0FBRyxFQUFFLE1BQUksS0FBRztBQUFNLE9BQUcsUUFBUSxFQUFFO0FBQUUsT0FBRyxRQUFRLEVBQUU7QUFBQSxFQUFDO0FBQ25mLFdBQVMsR0FBR0wsSUFBRUssSUFBRTtBQUFDLElBQUFMLEdBQUUsY0FBWUssT0FBSUwsR0FBRSxZQUFVLE1BQUssT0FBSyxLQUFHLE1BQUcsR0FBRywwQkFBMEIsR0FBRyx5QkFBd0IsRUFBRTtBQUFBLEVBQUc7QUFDNUgsV0FBUyxHQUFHQSxJQUFFO0FBQUMsYUFBU0ssR0FBRUEsSUFBRTtBQUFDLGFBQU8sR0FBR0EsSUFBRUwsRUFBQztBQUFBLElBQUM7QUFBQyxRQUFHLElBQUUsR0FBRyxRQUFPO0FBQUMsU0FBRyxHQUFHLENBQUMsR0FBRUEsRUFBQztBQUFFLGVBQVFlLEtBQUUsR0FBRUEsS0FBRSxHQUFHLFFBQU9BLE1BQUk7QUFBQyxZQUFJRCxLQUFFLEdBQUdDLEVBQUM7QUFBRSxRQUFBRCxHQUFFLGNBQVlkLE9BQUljLEdBQUUsWUFBVTtBQUFBLE1BQUs7QUFBQSxJQUFDO0FBQUMsYUFBTyxNQUFJLEdBQUcsSUFBR2QsRUFBQztBQUFFLGFBQU8sTUFBSSxHQUFHLElBQUdBLEVBQUM7QUFBRSxhQUFPLE1BQUksR0FBRyxJQUFHQSxFQUFDO0FBQUUsT0FBRyxRQUFRSyxFQUFDO0FBQUUsT0FBRyxRQUFRQSxFQUFDO0FBQUUsU0FBSVUsS0FBRSxHQUFFQSxLQUFFLEdBQUcsUUFBT0EsS0FBSSxDQUFBRCxLQUFFLEdBQUdDLEVBQUMsR0FBRUQsR0FBRSxjQUFZZCxPQUFJYyxHQUFFLFlBQVU7QUFBTSxXQUFLLElBQUUsR0FBRyxXQUFTQyxLQUFFLEdBQUcsQ0FBQyxHQUFFLFNBQU9BLEdBQUUsYUFBWSxJQUFHQSxFQUFDLEdBQUUsU0FBT0EsR0FBRSxhQUFXLEdBQUcsTUFBSztBQUFBLEVBQUU7QUFBQyxNQUFJLEtBQUcsR0FBRyx5QkFBd0IsS0FBRztBQUM1YSxXQUFTLEdBQUdmLElBQUVLLElBQUVVLElBQUVELElBQUU7QUFBQyxRQUFJekMsS0FBRTZCLElBQUV2QyxLQUFFLEdBQUc7QUFBVyxPQUFHLGFBQVc7QUFBSyxRQUFHO0FBQUMsTUFBQXVDLEtBQUUsR0FBRSxHQUFHRixJQUFFSyxJQUFFVSxJQUFFRCxFQUFDO0FBQUEsSUFBQyxVQUFDO0FBQVEsTUFBQVosS0FBRTdCLElBQUUsR0FBRyxhQUFXVjtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHcUMsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFFBQUl6QyxLQUFFNkIsSUFBRXZDLEtBQUUsR0FBRztBQUFXLE9BQUcsYUFBVztBQUFLLFFBQUc7QUFBQyxNQUFBdUMsS0FBRSxHQUFFLEdBQUdGLElBQUVLLElBQUVVLElBQUVELEVBQUM7QUFBQSxJQUFDLFVBQUM7QUFBUSxNQUFBWixLQUFFN0IsSUFBRSxHQUFHLGFBQVdWO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFDak8sV0FBUyxHQUFHcUMsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFFBQUcsSUFBRztBQUFDLFVBQUl6QyxLQUFFLEdBQUcyQixJQUFFSyxJQUFFVSxJQUFFRCxFQUFDO0FBQUUsVUFBRyxTQUFPekMsR0FBRSxJQUFHMkIsSUFBRUssSUFBRVMsSUFBRSxJQUFHQyxFQUFDLEdBQUUsR0FBR2YsSUFBRWMsRUFBQztBQUFBLGVBQVUsR0FBR3pDLElBQUUyQixJQUFFSyxJQUFFVSxJQUFFRCxFQUFDLEVBQUUsQ0FBQUEsR0FBRTtlQUEwQixHQUFHZCxJQUFFYyxFQUFDLEdBQUVULEtBQUUsS0FBRyxLQUFHLEdBQUcsUUFBUUwsRUFBQyxHQUFFO0FBQUMsZUFBSyxTQUFPM0IsTUFBRztBQUFDLGNBQUlWLEtBQUUsR0FBR1UsRUFBQztBQUFFLG1CQUFPVixNQUFHLEdBQUdBLEVBQUM7QUFBRSxVQUFBQSxLQUFFLEdBQUdxQyxJQUFFSyxJQUFFVSxJQUFFRCxFQUFDO0FBQUUsbUJBQU9uRCxNQUFHLEdBQUdxQyxJQUFFSyxJQUFFUyxJQUFFLElBQUdDLEVBQUM7QUFBRSxjQUFHcEQsT0FBSVUsR0FBRTtBQUFNLFVBQUFBLEtBQUVWO0FBQUEsUUFBQztBQUFDLGlCQUFPVSxNQUFHeUMsR0FBRTtNQUFpQixNQUFNLElBQUdkLElBQUVLLElBQUVTLElBQUUsTUFBS0MsRUFBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHO0FBQ3BVLFdBQVMsR0FBR2YsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFNBQUc7QUFBSyxJQUFBZCxLQUFFLEdBQUdjLEVBQUM7QUFBRSxJQUFBZCxLQUFFLEdBQUdBLEVBQUM7QUFBRSxRQUFHLFNBQU9BLEdBQUUsS0FBR0ssS0FBRSxHQUFHTCxFQUFDLEdBQUUsU0FBT0ssR0FBRSxDQUFBTCxLQUFFO0FBQUEsYUFBYWUsS0FBRVYsR0FBRSxLQUFJLE9BQUtVLElBQUU7QUFBQyxNQUFBZixLQUFFLEdBQUdLLEVBQUM7QUFBRSxVQUFHLFNBQU9MLEdBQUUsUUFBT0E7QUFBRSxNQUFBQSxLQUFFO0FBQUEsSUFBSSxXQUFTLE1BQUllLElBQUU7QUFBQyxVQUFHVixHQUFFLFVBQVUsUUFBUSxjQUFjLGFBQWEsUUFBTyxNQUFJQSxHQUFFLE1BQUlBLEdBQUUsVUFBVSxnQkFBYztBQUFLLE1BQUFMLEtBQUU7QUFBQSxJQUFJLE1BQU0sQ0FBQUssT0FBSUwsT0FBSUEsS0FBRTtBQUFNLFNBQUdBO0FBQUUsV0FBTztBQUFBLEVBQUk7QUFDN1MsV0FBUyxHQUFHQSxJQUFFO0FBQUMsWUFBT0EsSUFBRztBQUFBLE1BQUEsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQVEsS0FBSztBQUFBLE1BQVEsS0FBSztBQUFBLE1BQWMsS0FBSztBQUFBLE1BQU8sS0FBSztBQUFBLE1BQU0sS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVUsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQU8sS0FBSztBQUFBLE1BQVUsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVEsS0FBSztBQUFBLE1BQVUsS0FBSztBQUFBLE1BQVUsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVEsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQVUsS0FBSztBQUFBLE1BQVEsS0FBSztBQUFBLE1BQVEsS0FBSztBQUFBLE1BQU8sS0FBSztBQUFBLE1BQWdCLEtBQUs7QUFBQSxNQUFjLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFhLEtBQUs7QUFBQSxNQUFRLEtBQUs7QUFBQSxNQUFTLEtBQUs7QUFBQSxNQUFTLEtBQUs7QUFBQSxNQUFTLEtBQUs7QUFBQSxNQUFjLEtBQUs7QUFBQSxNQUFXLEtBQUs7QUFBQSxNQUFhLEtBQUs7QUFBQSxNQUFlLEtBQUs7QUFBQSxNQUFTLEtBQUs7QUFBQSxNQUFrQixLQUFLO0FBQUEsTUFBWSxLQUFLO0FBQUEsTUFBbUIsS0FBSztBQUFBLE1BQWlCLEtBQUs7QUFBQSxNQUFvQixLQUFLO0FBQUEsTUFBYSxLQUFLO0FBQUEsTUFBWSxLQUFLO0FBQUEsTUFBYyxLQUFLO0FBQUEsTUFBTyxLQUFLO0FBQUEsTUFBbUIsS0FBSztBQUFBLE1BQVEsS0FBSztBQUFBLE1BQWEsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFjLGVBQU87QUFBQSxNQUFFLEtBQUs7QUFBQSxNQUFPLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFXLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFXLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFXLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFjLEtBQUs7QUFBQSxNQUFhLEtBQUs7QUFBQSxNQUFjLEtBQUs7QUFBQSxNQUFTLEtBQUs7QUFBQSxNQUFTLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFRLEtBQUs7QUFBQSxNQUFhLEtBQUs7QUFBQSxNQUFhLEtBQUs7QUFBQSxNQUFlLEtBQUs7QUFBZSxlQUFPO0FBQUEsTUFDcHFDLEtBQUs7QUFBVSxnQkFBTyxHQUFFO1VBQUksS0FBSztBQUFHLG1CQUFPO0FBQUEsVUFBRSxLQUFLO0FBQUcsbUJBQU87QUFBQSxVQUFFLEtBQUs7QUFBQSxVQUFHLEtBQUs7QUFBRyxtQkFBTztBQUFBLFVBQUcsS0FBSztBQUFHLG1CQUFPO0FBQUEsVUFBVTtBQUFRLG1CQUFPO0FBQUEsUUFBRTtBQUFBLE1BQUM7QUFBUSxlQUFPO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFBQyxNQUFJLEtBQUcsTUFBSyxLQUFHLE1BQUssS0FBRztBQUFLLFdBQVMsS0FBSTtBQUFDLFFBQUcsR0FBRyxRQUFPO0FBQUcsUUFBSUEsSUFBRUssS0FBRSxJQUFHVSxLQUFFVixHQUFFLFFBQU9TLElBQUV6QyxLQUFFLFdBQVUsS0FBRyxHQUFHLFFBQU0sR0FBRyxhQUFZVixLQUFFVSxHQUFFO0FBQU8sU0FBSTJCLEtBQUUsR0FBRUEsS0FBRWUsTUFBR1YsR0FBRUwsRUFBQyxNQUFJM0IsR0FBRTJCLEVBQUMsR0FBRUEsS0FBSTtBQUFDLFFBQUlpQixLQUFFRixLQUFFZjtBQUFFLFNBQUljLEtBQUUsR0FBRUEsTUFBR0csTUFBR1osR0FBRVUsS0FBRUQsRUFBQyxNQUFJekMsR0FBRVYsS0FBRW1ELEVBQUMsR0FBRUEsS0FBSTtBQUFDLFdBQU8sS0FBR3pDLEdBQUUsTUFBTTJCLElBQUUsSUFBRWMsS0FBRSxJQUFFQSxLQUFFLE1BQU07QUFBQSxFQUFDO0FBQ3hZLFdBQVMsR0FBR2QsSUFBRTtBQUFDLFFBQUlLLEtBQUVMLEdBQUU7QUFBUSxrQkFBYUEsTUFBR0EsS0FBRUEsR0FBRSxVQUFTLE1BQUlBLE1BQUcsT0FBS0ssT0FBSUwsS0FBRSxPQUFLQSxLQUFFSztBQUFFLFdBQUtMLE9BQUlBLEtBQUU7QUFBSSxXQUFPLE1BQUlBLE1BQUcsT0FBS0EsS0FBRUEsS0FBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEtBQUk7QUFBQyxXQUFNO0FBQUEsRUFBRTtBQUFDLFdBQVMsS0FBSTtBQUFDLFdBQU07QUFBQSxFQUFFO0FBQzVLLFdBQVMsR0FBR0EsSUFBRTtBQUFDLGFBQVNLLEdBQUVBLElBQUVTLElBQUV6QyxJQUFFVixJQUFFc0QsSUFBRTtBQUFDLFdBQUssYUFBV1o7QUFBRSxXQUFLLGNBQVloQztBQUFFLFdBQUssT0FBS3lDO0FBQUUsV0FBSyxjQUFZbkQ7QUFBRSxXQUFLLFNBQU9zRDtBQUFFLFdBQUssZ0JBQWM7QUFBSyxlQUFRRixNQUFLZixHQUFFLENBQUFBLEdBQUUsZUFBZWUsRUFBQyxNQUFJVixLQUFFTCxHQUFFZSxFQUFDLEdBQUUsS0FBS0EsRUFBQyxJQUFFVixLQUFFQSxHQUFFMUMsRUFBQyxJQUFFQSxHQUFFb0QsRUFBQztBQUFHLFdBQUssc0JBQW9CLFFBQU1wRCxHQUFFLG1CQUFpQkEsR0FBRSxtQkFBaUIsVUFBS0EsR0FBRSxlQUFhLEtBQUc7QUFBRyxXQUFLLHVCQUFxQjtBQUFHLGFBQU87QUFBQSxJQUFJO0FBQUMsSUFBQW9DLEdBQUVNLEdBQUUsV0FBVSxFQUFDLGdCQUFlLFdBQVU7QUFBQyxXQUFLLG1CQUFpQjtBQUFHLFVBQUlMLEtBQUUsS0FBSztBQUFZLE1BQUFBLE9BQUlBLEdBQUUsaUJBQWVBLEdBQUUsbUJBQWlCLGNBQVksT0FBT0EsR0FBRSxnQkFDN2VBLEdBQUUsY0FBWSxRQUFJLEtBQUsscUJBQW1CO0FBQUEsSUFBRyxHQUFFLGlCQUFnQixXQUFVO0FBQUMsVUFBSUEsS0FBRSxLQUFLO0FBQVksTUFBQUEsT0FBSUEsR0FBRSxrQkFBZ0JBLEdBQUUsZ0JBQWlCLElBQUMsY0FBWSxPQUFPQSxHQUFFLGlCQUFlQSxHQUFFLGVBQWEsT0FBSSxLQUFLLHVCQUFxQjtBQUFBLElBQUcsR0FBRSxTQUFRLFdBQVU7QUFBQSxJQUFBLEdBQUcsY0FBYSxHQUFFLENBQUM7QUFBRSxXQUFPSztBQUFBLEVBQUM7QUFDalIsTUFBSSxLQUFHLEVBQUMsWUFBVyxHQUFFLFNBQVEsR0FBRSxZQUFXLEdBQUUsV0FBVSxTQUFTTCxJQUFFO0FBQUMsV0FBT0EsR0FBRSxhQUFXLEtBQUs7RUFBSyxHQUFFLGtCQUFpQixHQUFFLFdBQVUsRUFBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBR0QsR0FBRSxJQUFHLElBQUcsRUFBQyxNQUFLLEdBQUUsUUFBTyxFQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxHQUFFLElBQUcsSUFBRyxJQUFHLEtBQUdBLEdBQUUsQ0FBQSxHQUFHLElBQUcsRUFBQyxTQUFRLEdBQUUsU0FBUSxHQUFFLFNBQVEsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLE9BQU0sR0FBRSxTQUFRLEdBQUUsVUFBUyxHQUFFLFFBQU8sR0FBRSxTQUFRLEdBQUUsa0JBQWlCLElBQUcsUUFBTyxHQUFFLFNBQVEsR0FBRSxlQUFjLFNBQVNDLElBQUU7QUFBQyxXQUFPLFdBQVNBLEdBQUUsZ0JBQWNBLEdBQUUsZ0JBQWNBLEdBQUUsYUFBV0EsR0FBRSxZQUFVQSxHQUFFLGNBQVlBLEdBQUU7QUFBQSxFQUFhLEdBQUUsV0FBVSxTQUFTQSxJQUFFO0FBQUMsUUFBRyxlQUMzZUEsR0FBRSxRQUFPQSxHQUFFO0FBQVUsSUFBQUEsT0FBSSxPQUFLLE1BQUksZ0JBQWNBLEdBQUUsUUFBTSxLQUFHQSxHQUFFLFVBQVEsR0FBRyxTQUFRLEtBQUdBLEdBQUUsVUFBUSxHQUFHLFdBQVMsS0FBRyxLQUFHLEdBQUUsS0FBR0E7QUFBRyxXQUFPO0FBQUEsRUFBRSxHQUFFLFdBQVUsU0FBU0EsSUFBRTtBQUFDLFdBQU0sZUFBY0EsS0FBRUEsR0FBRSxZQUFVO0FBQUEsRUFBRSxFQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUdELEdBQUUsQ0FBRSxHQUFDLElBQUcsRUFBQyxjQUFhLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBR0EsR0FBRSxDQUFBLEdBQUcsSUFBRyxFQUFDLGVBQWMsRUFBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHQSxHQUFFLENBQUUsR0FBQyxJQUFHLEVBQUMsZUFBYyxHQUFFLGFBQVksR0FBRSxlQUFjLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBR0EsR0FBRSxJQUFHLElBQUcsRUFBQyxlQUFjLFNBQVNDLElBQUU7QUFBQyxXQUFNLG1CQUFrQkEsS0FBRUEsR0FBRSxnQkFBYyxPQUFPO0FBQUEsRUFBYSxFQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUdELEdBQUUsQ0FBRSxHQUFDLElBQUcsRUFBQyxNQUFLLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRztBQUFBLElBQUMsS0FBSTtBQUFBLElBQ3hmLFVBQVM7QUFBQSxJQUFJLE1BQUs7QUFBQSxJQUFZLElBQUc7QUFBQSxJQUFVLE9BQU07QUFBQSxJQUFhLE1BQUs7QUFBQSxJQUFZLEtBQUk7QUFBQSxJQUFTLEtBQUk7QUFBQSxJQUFLLE1BQUs7QUFBQSxJQUFjLE1BQUs7QUFBQSxJQUFjLFFBQU87QUFBQSxJQUFhLGlCQUFnQjtBQUFBLEVBQWMsR0FBRSxLQUFHO0FBQUEsSUFBQyxHQUFFO0FBQUEsSUFBWSxHQUFFO0FBQUEsSUFBTSxJQUFHO0FBQUEsSUFBUSxJQUFHO0FBQUEsSUFBUSxJQUFHO0FBQUEsSUFBUSxJQUFHO0FBQUEsSUFBVSxJQUFHO0FBQUEsSUFBTSxJQUFHO0FBQUEsSUFBUSxJQUFHO0FBQUEsSUFBVyxJQUFHO0FBQUEsSUFBUyxJQUFHO0FBQUEsSUFBSSxJQUFHO0FBQUEsSUFBUyxJQUFHO0FBQUEsSUFBVyxJQUFHO0FBQUEsSUFBTSxJQUFHO0FBQUEsSUFBTyxJQUFHO0FBQUEsSUFBWSxJQUFHO0FBQUEsSUFBVSxJQUFHO0FBQUEsSUFBYSxJQUFHO0FBQUEsSUFBWSxJQUFHO0FBQUEsSUFBUyxJQUFHO0FBQUEsSUFBUyxLQUFJO0FBQUEsSUFBSyxLQUFJO0FBQUEsSUFBSyxLQUFJO0FBQUEsSUFBSyxLQUFJO0FBQUEsSUFBSyxLQUFJO0FBQUEsSUFBSyxLQUFJO0FBQUEsSUFBSyxLQUFJO0FBQUEsSUFDdGYsS0FBSTtBQUFBLElBQUssS0FBSTtBQUFBLElBQUssS0FBSTtBQUFBLElBQU0sS0FBSTtBQUFBLElBQU0sS0FBSTtBQUFBLElBQU0sS0FBSTtBQUFBLElBQVUsS0FBSTtBQUFBLElBQWEsS0FBSTtBQUFBLEVBQU0sR0FBRSxLQUFHLEVBQUMsS0FBSSxVQUFTLFNBQVEsV0FBVSxNQUFLLFdBQVUsT0FBTSxXQUFVO0FBQUUsV0FBUyxHQUFHQyxJQUFFO0FBQUMsUUFBSUssS0FBRSxLQUFLO0FBQVksV0FBT0EsR0FBRSxtQkFBaUJBLEdBQUUsaUJBQWlCTCxFQUFDLEtBQUdBLEtBQUUsR0FBR0EsRUFBQyxLQUFHLENBQUMsQ0FBQ0ssR0FBRUwsRUFBQyxJQUFFO0FBQUEsRUFBRTtBQUFDLFdBQVMsS0FBSTtBQUFDLFdBQU87QUFBQSxFQUFFO0FBQ2hTLE1BQUksS0FBR0QsR0FBRSxDQUFBLEdBQUcsSUFBRyxFQUFDLEtBQUksU0FBU0MsSUFBRTtBQUFDLFFBQUdBLEdBQUUsS0FBSTtBQUFDLFVBQUlLLEtBQUUsR0FBR0wsR0FBRSxHQUFHLEtBQUdBLEdBQUU7QUFBSSxVQUFHLG1CQUFpQkssR0FBRSxRQUFPQTtBQUFBLElBQUM7QUFBQyxXQUFNLGVBQWFMLEdBQUUsUUFBTUEsS0FBRSxHQUFHQSxFQUFDLEdBQUUsT0FBS0EsS0FBRSxVQUFRLE9BQU8sYUFBYUEsRUFBQyxLQUFHLGNBQVlBLEdBQUUsUUFBTSxZQUFVQSxHQUFFLE9BQUssR0FBR0EsR0FBRSxPQUFPLEtBQUcsaUJBQWU7QUFBQSxFQUFFLEdBQUUsTUFBSyxHQUFFLFVBQVMsR0FBRSxTQUFRLEdBQUUsVUFBUyxHQUFFLFFBQU8sR0FBRSxTQUFRLEdBQUUsUUFBTyxHQUFFLFFBQU8sR0FBRSxrQkFBaUIsSUFBRyxVQUFTLFNBQVNBLElBQUU7QUFBQyxXQUFNLGVBQWFBLEdBQUUsT0FBSyxHQUFHQSxFQUFDLElBQUU7QUFBQSxFQUFDLEdBQUUsU0FBUSxTQUFTQSxJQUFFO0FBQUMsV0FBTSxjQUFZQSxHQUFFLFFBQU0sWUFBVUEsR0FBRSxPQUFLQSxHQUFFLFVBQVE7QUFBQSxFQUFDLEdBQUUsT0FBTSxTQUFTQSxJQUFFO0FBQUMsV0FBTSxlQUM3ZUEsR0FBRSxPQUFLLEdBQUdBLEVBQUMsSUFBRSxjQUFZQSxHQUFFLFFBQU0sWUFBVUEsR0FBRSxPQUFLQSxHQUFFLFVBQVE7QUFBQSxFQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBR0QsR0FBRSxDQUFBLEdBQUcsSUFBRyxFQUFDLFdBQVUsR0FBRSxPQUFNLEdBQUUsUUFBTyxHQUFFLFVBQVMsR0FBRSxvQkFBbUIsR0FBRSxPQUFNLEdBQUUsT0FBTSxHQUFFLE9BQU0sR0FBRSxhQUFZLEdBQUUsV0FBVSxFQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUdBLEdBQUUsQ0FBQSxHQUFHLElBQUcsRUFBQyxTQUFRLEdBQUUsZUFBYyxHQUFFLGdCQUFlLEdBQUUsUUFBTyxHQUFFLFNBQVEsR0FBRSxTQUFRLEdBQUUsVUFBUyxHQUFFLGtCQUFpQixHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUdBLEdBQUUsQ0FBQSxHQUFHLElBQUcsRUFBQyxjQUFhLEdBQUUsYUFBWSxHQUFFLGVBQWMsRUFBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHQSxHQUFFLENBQUEsR0FBRyxJQUFHO0FBQUEsSUFBQyxRQUFPLFNBQVNDLElBQUU7QUFBQyxhQUFNLFlBQVdBLEtBQUVBLEdBQUUsU0FBTyxpQkFBZ0JBLEtBQUUsQ0FBQ0EsR0FBRSxjQUFZO0FBQUEsSUFBQztBQUFBLElBQ25mLFFBQU8sU0FBU0EsSUFBRTtBQUFDLGFBQU0sWUFBV0EsS0FBRUEsR0FBRSxTQUFPLGlCQUFnQkEsS0FBRSxDQUFDQSxHQUFFLGNBQVksZ0JBQWVBLEtBQUUsQ0FBQ0EsR0FBRSxhQUFXO0FBQUEsSUFBQztBQUFBLElBQUUsUUFBTztBQUFBLElBQUUsV0FBVTtBQUFBLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRXVHLE1BQUcsTUFBSSxzQkFBcUIsUUFBT0MsTUFBRztBQUFLLFFBQUksa0JBQWlCLGFBQVdBLE1BQUcsU0FBUztBQUFjLE1BQUlDLE1BQUcsTUFBSSxlQUFjLFVBQVEsQ0FBQ0QsS0FBR0UsTUFBRyxPQUFLLENBQUNILE9BQUlDLE9BQUksSUFBRUEsT0FBSSxNQUFJQSxNQUFJRyxNQUFHLE9BQU8sYUFBYSxFQUFFLEdBQUVDLE1BQUc7QUFDMVcsV0FBU0MsSUFBRzdHLElBQUVLLElBQUU7QUFBQyxZQUFPTCxJQUFHO0FBQUEsTUFBQSxLQUFLO0FBQVEsZUFBTSxPQUFLLEdBQUcsUUFBUUssR0FBRSxPQUFPO0FBQUEsTUFBRSxLQUFLO0FBQVUsZUFBTyxRQUFNQSxHQUFFO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBWSxLQUFLO0FBQVcsZUFBTTtBQUFBLE1BQUc7QUFBUSxlQUFNO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTeUcsSUFBRzlHLElBQUU7QUFBQyxJQUFBQSxLQUFFQSxHQUFFO0FBQU8sV0FBTSxhQUFXLE9BQU9BLE1BQUcsVUFBU0EsS0FBRUEsR0FBRSxPQUFLO0FBQUEsRUFBSTtBQUFDLE1BQUkrRyxNQUFHO0FBQUcsV0FBU0MsSUFBR2hILElBQUVLLElBQUU7QUFBQyxZQUFPTCxJQUFDO0FBQUEsTUFBRSxLQUFLO0FBQWlCLGVBQU84RyxJQUFHekcsRUFBQztBQUFBLE1BQUUsS0FBSztBQUFXLFlBQUcsT0FBS0EsR0FBRSxNQUFNLFFBQU87QUFBSyxRQUFBdUcsTUFBRztBQUFHLGVBQU9EO0FBQUEsTUFBRyxLQUFLO0FBQVksZUFBTzNHLEtBQUVLLEdBQUUsTUFBS0wsT0FBSTJHLE9BQUlDLE1BQUcsT0FBSzVHO0FBQUEsTUFBRTtBQUFRLGVBQU87QUFBQSxJQUFJO0FBQUEsRUFBQztBQUNsZCxXQUFTaUgsSUFBR2pILElBQUVLLElBQUU7QUFBQyxRQUFHMEcsSUFBRyxRQUFNLHFCQUFtQi9HLE1BQUcsQ0FBQ3VHLE9BQUlNLElBQUc3RyxJQUFFSyxFQUFDLEtBQUdMLEtBQUUsR0FBSSxHQUFDLEtBQUcsS0FBRyxLQUFHLE1BQUsrRyxNQUFHLE9BQUcvRyxNQUFHO0FBQUssWUFBT0EsSUFBRztBQUFBLE1BQUEsS0FBSztBQUFRLGVBQU87QUFBQSxNQUFLLEtBQUs7QUFBVyxZQUFHLEVBQUVLLEdBQUUsV0FBU0EsR0FBRSxVQUFRQSxHQUFFLFlBQVVBLEdBQUUsV0FBU0EsR0FBRSxRQUFPO0FBQUMsY0FBR0EsR0FBRSxRQUFNLElBQUVBLEdBQUUsS0FBSyxPQUFPLFFBQU9BLEdBQUU7QUFBSyxjQUFHQSxHQUFFLE1BQU0sUUFBTyxPQUFPLGFBQWFBLEdBQUUsS0FBSztBQUFBLFFBQUM7QUFBQyxlQUFPO0FBQUEsTUFBSyxLQUFLO0FBQWlCLGVBQU9xRyxPQUFJLFNBQU9yRyxHQUFFLFNBQU8sT0FBS0EsR0FBRTtBQUFBLE1BQUs7QUFBUSxlQUFPO0FBQUEsSUFBSTtBQUFBLEVBQUM7QUFDdlksTUFBSTZHLE1BQUcsRUFBQyxPQUFNLE1BQUcsTUFBSyxNQUFHLFVBQVMsTUFBRyxrQkFBaUIsTUFBRyxPQUFNLE1BQUcsT0FBTSxNQUFHLFFBQU8sTUFBRyxVQUFTLE1BQUcsT0FBTSxNQUFHLFFBQU8sTUFBRyxLQUFJLE1BQUcsTUFBSyxNQUFHLE1BQUssTUFBRyxLQUFJLE1BQUcsTUFBSyxLQUFFO0FBQUUsV0FBU0MsSUFBR25ILElBQUU7QUFBQyxRQUFJSyxLQUFFTCxNQUFHQSxHQUFFLFlBQVVBLEdBQUUsU0FBUyxZQUFXO0FBQUcsV0FBTSxZQUFVSyxLQUFFLENBQUMsQ0FBQzZHLElBQUdsSCxHQUFFLElBQUksSUFBRSxlQUFhSyxLQUFFLE9BQUc7QUFBQSxFQUFFO0FBQUMsV0FBUytHLElBQUdwSCxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFO0FBQUMsT0FBR0EsRUFBQztBQUFFLElBQUFULEtBQUVnSCxJQUFHaEgsSUFBRSxVQUFVO0FBQUUsUUFBRUEsR0FBRSxXQUFTVSxLQUFFLElBQUksR0FBRyxZQUFXLFVBQVMsTUFBS0EsSUFBRUQsRUFBQyxHQUFFZCxHQUFFLEtBQUssRUFBQyxPQUFNZSxJQUFFLFdBQVVWLEdBQUMsQ0FBQztBQUFBLEVBQUU7QUFBQyxNQUFJaUgsTUFBRyxNQUFLQyxNQUFHO0FBQUssV0FBU0MsSUFBR3hILElBQUU7QUFBQyxJQUFBeUgsSUFBR3pILElBQUUsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTMEgsSUFBRzFILElBQUU7QUFBQyxRQUFJSyxLQUFFc0gsSUFBRzNILEVBQUM7QUFBRSxRQUFHLEdBQUdLLEVBQUMsRUFBRSxRQUFPTDtBQUFBLEVBQUM7QUFDcGUsV0FBUzRILElBQUc1SCxJQUFFSyxJQUFFO0FBQUMsUUFBRyxhQUFXTCxHQUFFLFFBQU9LO0FBQUEsRUFBQztBQUFDLE1BQUl3SCxNQUFHO0FBQUcsTUFBRyxJQUFHO0FBQUMsUUFBSUM7QUFBRyxRQUFHLElBQUc7QUFBQyxVQUFJQyxNQUFHLGFBQVk7QUFBUyxVQUFHLENBQUNBLEtBQUc7QUFBQyxZQUFJQyxNQUFHLFNBQVMsY0FBYyxLQUFLO0FBQUUsUUFBQUEsSUFBRyxhQUFhLFdBQVUsU0FBUztBQUFFLFFBQUFELE1BQUcsZUFBYSxPQUFPQyxJQUFHO0FBQUEsTUFBTztBQUFDLE1BQUFGLE1BQUdDO0FBQUEsSUFBRSxNQUFNLENBQUFELE1BQUc7QUFBRyxJQUFBRCxNQUFHQyxRQUFLLENBQUMsU0FBUyxnQkFBYyxJQUFFLFNBQVM7QUFBQSxFQUFhO0FBQUMsV0FBU0csTUFBSTtBQUFDLElBQUFYLFFBQUtBLElBQUcsWUFBWSxvQkFBbUJZLEdBQUUsR0FBRVgsTUFBR0QsTUFBRztBQUFBLEVBQUs7QUFBQyxXQUFTWSxJQUFHbEksSUFBRTtBQUFDLFFBQUcsWUFBVUEsR0FBRSxnQkFBYzBILElBQUdILEdBQUUsR0FBRTtBQUFDLFVBQUlsSCxLQUFFLENBQUU7QUFBQyxNQUFBK0csSUFBRy9HLElBQUVrSCxLQUFHdkgsSUFBRSxHQUFHQSxFQUFDLENBQUM7QUFBRSxTQUFHd0gsS0FBR25ILEVBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUMvYixXQUFTOEgsSUFBR25JLElBQUVLLElBQUVVLElBQUU7QUFBQyxrQkFBWWYsTUFBR2lJLE9BQUtYLE1BQUdqSCxJQUFFa0gsTUFBR3hHLElBQUV1RyxJQUFHLFlBQVksb0JBQW1CWSxHQUFFLEtBQUcsZUFBYWxJLE1BQUdpSSxJQUFFO0FBQUEsRUFBRTtBQUFDLFdBQVNHLElBQUdwSSxJQUFFO0FBQUMsUUFBRyxzQkFBb0JBLE1BQUcsWUFBVUEsTUFBRyxjQUFZQSxHQUFFLFFBQU8wSCxJQUFHSCxHQUFFO0FBQUEsRUFBQztBQUFDLFdBQVNjLElBQUdySSxJQUFFSyxJQUFFO0FBQUMsUUFBRyxZQUFVTCxHQUFFLFFBQU8wSCxJQUFHckgsRUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTaUksSUFBR3RJLElBQUVLLElBQUU7QUFBQyxRQUFHLFlBQVVMLE1BQUcsYUFBV0EsR0FBRSxRQUFPMEgsSUFBR3JILEVBQUM7QUFBQSxFQUFDO0FBQUMsV0FBU2tJLElBQUd2SSxJQUFFSyxJQUFFO0FBQUMsV0FBT0wsT0FBSUssT0FBSSxNQUFJTCxNQUFHLElBQUVBLE9BQUksSUFBRUssT0FBSUwsT0FBSUEsTUFBR0ssT0FBSUE7QUFBQSxFQUFDO0FBQUMsTUFBSW1JLE1BQUcsZUFBYSxPQUFPLE9BQU8sS0FBRyxPQUFPLEtBQUdEO0FBQ3RaLFdBQVNFLElBQUd6SSxJQUFFSyxJQUFFO0FBQUMsUUFBR21JLElBQUd4SSxJQUFFSyxFQUFDLEVBQUUsUUFBTTtBQUFHLFFBQUcsYUFBVyxPQUFPTCxNQUFHLFNBQU9BLE1BQUcsYUFBVyxPQUFPSyxNQUFHLFNBQU9BLEdBQUUsUUFBTTtBQUFHLFFBQUlVLEtBQUUsT0FBTyxLQUFLZixFQUFDLEdBQUVjLEtBQUUsT0FBTyxLQUFLVCxFQUFDO0FBQUUsUUFBR1UsR0FBRSxXQUFTRCxHQUFFLE9BQU8sUUFBTTtBQUFHLFNBQUlBLEtBQUUsR0FBRUEsS0FBRUMsR0FBRSxRQUFPRCxNQUFJO0FBQUMsVUFBSXpDLEtBQUUwQyxHQUFFRCxFQUFDO0FBQUUsVUFBRyxDQUFDLEdBQUcsS0FBS1QsSUFBRWhDLEVBQUMsS0FBRyxDQUFDbUssSUFBR3hJLEdBQUUzQixFQUFDLEdBQUVnQyxHQUFFaEMsRUFBQyxDQUFDLEVBQUUsUUFBTTtBQUFBLElBQUU7QUFBQyxXQUFNO0FBQUEsRUFBRTtBQUFDLFdBQVNxSyxJQUFHMUksSUFBRTtBQUFDLFdBQUtBLE1BQUdBLEdBQUUsYUFBWSxDQUFBQSxLQUFFQSxHQUFFO0FBQVcsV0FBT0E7QUFBQSxFQUFDO0FBQ3RVLFdBQVMySSxJQUFHM0ksSUFBRUssSUFBRTtBQUFDLFFBQUlVLEtBQUUySCxJQUFHMUksRUFBQztBQUFFLElBQUFBLEtBQUU7QUFBRSxhQUFRYyxJQUFFQyxNQUFHO0FBQUMsVUFBRyxNQUFJQSxHQUFFLFVBQVM7QUFBQyxRQUFBRCxLQUFFZCxLQUFFZSxHQUFFLFlBQVk7QUFBTyxZQUFHZixNQUFHSyxNQUFHUyxNQUFHVCxHQUFFLFFBQU0sRUFBQyxNQUFLVSxJQUFFLFFBQU9WLEtBQUVMLEdBQUM7QUFBRSxRQUFBQSxLQUFFYztBQUFBLE1BQUM7QUFBQyxTQUFFO0FBQUMsZUFBS0MsTUFBRztBQUFDLGNBQUdBLEdBQUUsYUFBWTtBQUFDLFlBQUFBLEtBQUVBLEdBQUU7QUFBWSxrQkFBTTtBQUFBLFVBQUM7QUFBQyxVQUFBQSxLQUFFQSxHQUFFO0FBQUEsUUFBVTtBQUFDLFFBQUFBLEtBQUU7QUFBQSxNQUFNO0FBQUMsTUFBQUEsS0FBRTJILElBQUczSCxFQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTNkgsSUFBRzVJLElBQUVLLElBQUU7QUFBQyxXQUFPTCxNQUFHSyxLQUFFTCxPQUFJSyxLQUFFLE9BQUdMLE1BQUcsTUFBSUEsR0FBRSxXQUFTLFFBQUdLLE1BQUcsTUFBSUEsR0FBRSxXQUFTdUksSUFBRzVJLElBQUVLLEdBQUUsVUFBVSxJQUFFLGNBQWFMLEtBQUVBLEdBQUUsU0FBU0ssRUFBQyxJQUFFTCxHQUFFLDBCQUF3QixDQUFDLEVBQUVBLEdBQUUsd0JBQXdCSyxFQUFDLElBQUUsTUFBSSxRQUFHO0FBQUEsRUFBRTtBQUM5WixXQUFTd0ksTUFBSTtBQUFDLGFBQVE3SSxLQUFFLFFBQU9LLEtBQUUsR0FBSSxHQUFDQSxjQUFhTCxHQUFFLHFCQUFtQjtBQUFDLFVBQUc7QUFBQyxZQUFJZSxLQUFFLGFBQVcsT0FBT1YsR0FBRSxjQUFjLFNBQVM7QUFBQSxNQUFJLFNBQU9TLElBQUU7QUFBQyxRQUFBQyxLQUFFO0FBQUEsTUFBRTtBQUFDLFVBQUdBLEdBQUUsQ0FBQWYsS0FBRUssR0FBRTtBQUFBLFVBQW1CO0FBQU0sTUFBQUEsS0FBRSxHQUFHTCxHQUFFLFFBQVE7QUFBQSxJQUFDO0FBQUMsV0FBT0s7QUFBQSxFQUFDO0FBQUMsV0FBU3lJLElBQUc5SSxJQUFFO0FBQUMsUUFBSUssS0FBRUwsTUFBR0EsR0FBRSxZQUFVQSxHQUFFLFNBQVMsWUFBVztBQUFHLFdBQU9LLE9BQUksWUFBVUEsT0FBSSxXQUFTTCxHQUFFLFFBQU0sYUFBV0EsR0FBRSxRQUFNLFVBQVFBLEdBQUUsUUFBTSxVQUFRQSxHQUFFLFFBQU0sZUFBYUEsR0FBRSxTQUFPLGVBQWFLLE1BQUcsV0FBU0wsR0FBRTtBQUFBLEVBQWdCO0FBQ3hhLFdBQVMrSSxJQUFHL0ksSUFBRTtBQUFDLFFBQUlLLEtBQUV3SSxJQUFFLEdBQUc5SCxLQUFFZixHQUFFLGFBQVljLEtBQUVkLEdBQUU7QUFBZSxRQUFHSyxPQUFJVSxNQUFHQSxNQUFHQSxHQUFFLGlCQUFlNkgsSUFBRzdILEdBQUUsY0FBYyxpQkFBZ0JBLEVBQUMsR0FBRTtBQUFDLFVBQUcsU0FBT0QsTUFBR2dJLElBQUcvSCxFQUFDO0FBQUUsWUFBR1YsS0FBRVMsR0FBRSxPQUFNZCxLQUFFYyxHQUFFLEtBQUksV0FBU2QsT0FBSUEsS0FBRUssS0FBRyxvQkFBbUJVLEdBQUUsQ0FBQUEsR0FBRSxpQkFBZVYsSUFBRVUsR0FBRSxlQUFhLEtBQUssSUFBSWYsSUFBRWUsR0FBRSxNQUFNLE1BQU07QUFBQSxpQkFBVWYsTUFBR0ssS0FBRVUsR0FBRSxpQkFBZSxhQUFXVixHQUFFLGVBQWEsUUFBT0wsR0FBRSxjQUFhO0FBQUMsVUFBQUEsS0FBRUEsR0FBRTtBQUFlLGNBQUkzQixLQUFFMEMsR0FBRSxZQUFZLFFBQU9wRCxLQUFFLEtBQUssSUFBSW1ELEdBQUUsT0FBTXpDLEVBQUM7QUFBRSxVQUFBeUMsS0FBRSxXQUFTQSxHQUFFLE1BQUluRCxLQUFFLEtBQUssSUFBSW1ELEdBQUUsS0FBSXpDLEVBQUM7QUFBRSxXQUFDMkIsR0FBRSxVQUFRckMsS0FBRW1ELE9BQUl6QyxLQUFFeUMsSUFBRUEsS0FBRW5ELElBQUVBLEtBQUVVO0FBQUcsVUFBQUEsS0FBRXNLLElBQUc1SCxJQUFFcEQsRUFBQztBQUFFLGNBQUlzRCxLQUFFMEg7QUFBQSxZQUFHNUg7QUFBQSxZQUN2ZkQ7QUFBQSxVQUFDO0FBQUUsVUFBQXpDLE1BQUc0QyxPQUFJLE1BQUlqQixHQUFFLGNBQVlBLEdBQUUsZUFBYTNCLEdBQUUsUUFBTTJCLEdBQUUsaUJBQWUzQixHQUFFLFVBQVEyQixHQUFFLGNBQVlpQixHQUFFLFFBQU1qQixHQUFFLGdCQUFjaUIsR0FBRSxZQUFVWixLQUFFQSxHQUFFLFlBQVcsR0FBR0EsR0FBRSxTQUFTaEMsR0FBRSxNQUFLQSxHQUFFLE1BQU0sR0FBRTJCLEdBQUUsZ0JBQWUsR0FBR3JDLEtBQUVtRCxNQUFHZCxHQUFFLFNBQVNLLEVBQUMsR0FBRUwsR0FBRSxPQUFPaUIsR0FBRSxNQUFLQSxHQUFFLE1BQU0sTUFBSVosR0FBRSxPQUFPWSxHQUFFLE1BQUtBLEdBQUUsTUFBTSxHQUFFakIsR0FBRSxTQUFTSyxFQUFDO0FBQUEsUUFBRztBQUFBO0FBQUMsTUFBQUEsS0FBRTtBQUFHLFdBQUlMLEtBQUVlLElBQUVmLEtBQUVBLEdBQUUsYUFBWSxPQUFJQSxHQUFFLFlBQVVLLEdBQUUsS0FBSyxFQUFDLFNBQVFMLElBQUUsTUFBS0EsR0FBRSxZQUFXLEtBQUlBLEdBQUUsVUFBUyxDQUFDO0FBQUUscUJBQWEsT0FBT2UsR0FBRSxTQUFPQSxHQUFFLE1BQU87QUFBQyxXQUFJQSxLQUFFLEdBQUVBLEtBQUVWLEdBQUUsUUFBT1UsS0FBSSxDQUFBZixLQUFFSyxHQUFFVSxFQUFDLEdBQUVmLEdBQUUsUUFBUSxhQUFXQSxHQUFFLE1BQUtBLEdBQUUsUUFBUSxZQUFVQSxHQUFFO0FBQUEsSUFBRztBQUFBLEVBQUM7QUFDemYsTUFBSWdKLE1BQUcsTUFBSSxrQkFBaUIsWUFBVSxNQUFJLFNBQVMsY0FBYUMsTUFBRyxNQUFLQyxNQUFHLE1BQUtDLE1BQUcsTUFBS0MsTUFBRztBQUMzRixXQUFTQyxJQUFHckosSUFBRUssSUFBRVUsSUFBRTtBQUFDLFFBQUlELEtBQUVDLEdBQUUsV0FBU0EsS0FBRUEsR0FBRSxXQUFTLE1BQUlBLEdBQUUsV0FBU0EsS0FBRUEsR0FBRTtBQUFjLElBQUFxSSxPQUFJLFFBQU1ILE9BQUlBLFFBQUssR0FBR25JLEVBQUMsTUFBSUEsS0FBRW1JLEtBQUcsb0JBQW1CbkksTUFBR2dJLElBQUdoSSxFQUFDLElBQUVBLEtBQUUsRUFBQyxPQUFNQSxHQUFFLGdCQUFlLEtBQUlBLEdBQUUsYUFBWSxLQUFHQSxNQUFHQSxHQUFFLGlCQUFlQSxHQUFFLGNBQWMsZUFBYSxRQUFRLGFBQWMsR0FBQ0EsS0FBRSxFQUFDLFlBQVdBLEdBQUUsWUFBVyxjQUFhQSxHQUFFLGNBQWEsV0FBVUEsR0FBRSxXQUFVLGFBQVlBLEdBQUUsWUFBVyxJQUFHcUksT0FBSVYsSUFBR1UsS0FBR3JJLEVBQUMsTUFBSXFJLE1BQUdySSxJQUFFQSxLQUFFdUcsSUFBRzZCLEtBQUcsVUFBVSxHQUFFLElBQUVwSSxHQUFFLFdBQVNULEtBQUUsSUFBSSxHQUFHLFlBQVcsVUFBUyxNQUFLQSxJQUFFVSxFQUFDLEdBQUVmLEdBQUUsS0FBSyxFQUFDLE9BQU1LLElBQUUsV0FBVVMsR0FBQyxDQUFDLEdBQUVULEdBQUUsU0FBTzRJO0FBQUEsRUFBSztBQUN0ZixXQUFTSyxJQUFHdEosSUFBRUssSUFBRTtBQUFDLFFBQUlVLEtBQUUsQ0FBRTtBQUFDLElBQUFBLEdBQUVmLEdBQUUsWUFBVyxDQUFFLElBQUVLLEdBQUUsWUFBYTtBQUFDLElBQUFVLEdBQUUsV0FBU2YsRUFBQyxJQUFFLFdBQVNLO0FBQUUsSUFBQVUsR0FBRSxRQUFNZixFQUFDLElBQUUsUUFBTUs7QUFBRSxXQUFPVTtBQUFBLEVBQUM7QUFBQyxNQUFJd0ksTUFBRyxFQUFDLGNBQWFELElBQUcsYUFBWSxjQUFjLEdBQUUsb0JBQW1CQSxJQUFHLGFBQVksb0JBQW9CLEdBQUUsZ0JBQWVBLElBQUcsYUFBWSxnQkFBZ0IsR0FBRSxlQUFjQSxJQUFHLGNBQWEsZUFBZSxFQUFDLEdBQUVFLE1BQUcsQ0FBRSxHQUFDLEtBQUcsQ0FBRTtBQUN6VSxTQUFLLEtBQUcsU0FBUyxjQUFjLEtBQUssRUFBRSxPQUFNLG9CQUFtQixXQUFTLE9BQU9ELElBQUcsYUFBYSxXQUFVLE9BQU9BLElBQUcsbUJBQW1CLFdBQVUsT0FBT0EsSUFBRyxlQUFlLFlBQVcscUJBQW9CLFVBQVEsT0FBT0EsSUFBRyxjQUFjO0FBQVksV0FBU0UsSUFBR3pKLElBQUU7QUFBQyxRQUFHd0osSUFBR3hKLEVBQUMsRUFBRSxRQUFPd0osSUFBR3hKLEVBQUM7QUFBRSxRQUFHLENBQUN1SixJQUFHdkosRUFBQyxFQUFFLFFBQU9BO0FBQUUsUUFBSUssS0FBRWtKLElBQUd2SixFQUFDLEdBQUVlO0FBQUUsU0FBSUEsTUFBS1YsR0FBRSxLQUFHQSxHQUFFLGVBQWVVLEVBQUMsS0FBR0EsTUFBSyxHQUFHLFFBQU95SSxJQUFHeEosRUFBQyxJQUFFSyxHQUFFVSxFQUFDO0FBQUUsV0FBT2Y7QUFBQSxFQUFDO0FBQUMsTUFBSTBKLE1BQUdELElBQUcsY0FBYyxHQUFFLEtBQUdBLElBQUcsb0JBQW9CLEdBQUUsS0FBR0EsSUFBRyxnQkFBZ0IsR0FBRSxLQUFHQSxJQUFHLGVBQWUsR0FBRSxLQUFHLG9CQUFJLE9BQUksS0FBRyxzbUJBQXNtQixNQUFNLEdBQUc7QUFDbG1DLFdBQVMsR0FBR3pKLElBQUVLLElBQUU7QUFBQyxPQUFHLElBQUlMLElBQUVLLEVBQUM7QUFBRSxPQUFHQSxJQUFFLENBQUNMLEVBQUMsQ0FBQztBQUFBLEVBQUM7QUFBQyxXQUFRLEtBQUcsR0FBRSxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsUUFBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxZQUFhLEdBQUMsS0FBRyxHQUFHLENBQUMsRUFBRSxZQUFhLElBQUMsR0FBRyxNQUFNLENBQUM7QUFBRSxPQUFHLElBQUcsT0FBSyxFQUFFO0FBQUEsRUFBQztBQUFDLEtBQUcwSixLQUFHLGdCQUFnQjtBQUFFLEtBQUcsSUFBRyxzQkFBc0I7QUFBRSxLQUFHLElBQUcsa0JBQWtCO0FBQUUsS0FBRyxZQUFXLGVBQWU7QUFBRSxLQUFHLFdBQVUsU0FBUztBQUFFLEtBQUcsWUFBVyxRQUFRO0FBQUUsS0FBRyxJQUFHLGlCQUFpQjtBQUFFLEtBQUcsZ0JBQWUsQ0FBQyxZQUFXLFdBQVcsQ0FBQztBQUFFLEtBQUcsZ0JBQWUsQ0FBQyxZQUFXLFdBQVcsQ0FBQztBQUFFLEtBQUcsa0JBQWlCLENBQUMsY0FBYSxhQUFhLENBQUM7QUFDM2QsS0FBRyxrQkFBaUIsQ0FBQyxjQUFhLGFBQWEsQ0FBQztBQUFFLEtBQUcsWUFBVyxvRUFBb0UsTUFBTSxHQUFHLENBQUM7QUFBRSxLQUFHLFlBQVcsdUZBQXVGLE1BQU0sR0FBRyxDQUFDO0FBQUUsS0FBRyxpQkFBZ0IsQ0FBQyxrQkFBaUIsWUFBVyxhQUFZLE9BQU8sQ0FBQztBQUFFLEtBQUcsb0JBQW1CLDJEQUEyRCxNQUFNLEdBQUcsQ0FBQztBQUFFLEtBQUcsc0JBQXFCLDZEQUE2RCxNQUFNLEdBQUcsQ0FBQztBQUNuZ0IsS0FBRyx1QkFBc0IsOERBQThELE1BQU0sR0FBRyxDQUFDO0FBQUUsTUFBSSxLQUFHLDZOQUE2TixNQUFNLEdBQUcsR0FBRSxLQUFHLElBQUksSUFBSSwwQ0FBMEMsTUFBTSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDNVosV0FBUyxHQUFHMUosSUFBRUssSUFBRVUsSUFBRTtBQUFDLFFBQUlELEtBQUVkLEdBQUUsUUFBTTtBQUFnQixJQUFBQSxHQUFFLGdCQUFjZTtBQUFFLE9BQUdELElBQUVULElBQUUsUUFBT0wsRUFBQztBQUFFLElBQUFBLEdBQUUsZ0JBQWM7QUFBQSxFQUFJO0FBQ3hHLFdBQVN5SCxJQUFHekgsSUFBRUssSUFBRTtBQUFDLElBQUFBLEtBQUUsT0FBS0EsS0FBRTtBQUFHLGFBQVFVLEtBQUUsR0FBRUEsS0FBRWYsR0FBRSxRQUFPZSxNQUFJO0FBQUMsVUFBSUQsS0FBRWQsR0FBRWUsRUFBQyxHQUFFMUMsS0FBRXlDLEdBQUU7QUFBTSxNQUFBQSxLQUFFQSxHQUFFO0FBQVUsU0FBRTtBQUFDLFlBQUluRCxLQUFFO0FBQU8sWUFBRzBDLEdBQUUsVUFBUVksS0FBRUgsR0FBRSxTQUFPLEdBQUUsS0FBR0csSUFBRUEsTUFBSTtBQUFDLGNBQUlELEtBQUVGLEdBQUVHLEVBQUMsR0FBRTdDLEtBQUU0QyxHQUFFLFVBQVMzQixLQUFFMkIsR0FBRTtBQUFjLFVBQUFBLEtBQUVBLEdBQUU7QUFBUyxjQUFHNUMsT0FBSVQsTUFBR1UsR0FBRSxxQkFBb0IsRUFBRyxPQUFNO0FBQUUsYUFBR0EsSUFBRTJDLElBQUUzQixFQUFDO0FBQUUsVUFBQTFCLEtBQUVTO0FBQUEsUUFBQztBQUFBLFlBQU0sTUFBSTZDLEtBQUUsR0FBRUEsS0FBRUgsR0FBRSxRQUFPRyxNQUFJO0FBQUMsVUFBQUQsS0FBRUYsR0FBRUcsRUFBQztBQUFFLFVBQUE3QyxLQUFFNEMsR0FBRTtBQUFTLFVBQUEzQixLQUFFMkIsR0FBRTtBQUFjLFVBQUFBLEtBQUVBLEdBQUU7QUFBUyxjQUFHNUMsT0FBSVQsTUFBR1UsR0FBRSxxQkFBc0IsRUFBQyxPQUFNO0FBQUUsYUFBR0EsSUFBRTJDLElBQUUzQixFQUFDO0FBQUUsVUFBQTFCLEtBQUVTO0FBQUEsUUFBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxHQUFHLE9BQU00QixLQUFFLElBQUcsS0FBRyxPQUFHLEtBQUcsTUFBS0E7QUFBQSxFQUFFO0FBQzVhLFdBQVNHLEdBQUVILElBQUVLLElBQUU7QUFBQyxRQUFJVSxLQUFFVixHQUFFLEVBQUU7QUFBRSxlQUFTVSxPQUFJQSxLQUFFVixHQUFFLEVBQUUsSUFBRSxvQkFBSTtBQUFLLFFBQUlTLEtBQUVkLEtBQUU7QUFBVyxJQUFBZSxHQUFFLElBQUlELEVBQUMsTUFBSSxHQUFHVCxJQUFFTCxJQUFFLEdBQUUsS0FBRSxHQUFFZSxHQUFFLElBQUlELEVBQUM7QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHZCxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBSUQsS0FBRTtBQUFFLElBQUFULE9BQUlTLE1BQUc7QUFBRyxPQUFHQyxJQUFFZixJQUFFYyxJQUFFVCxFQUFDO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxvQkFBa0IsS0FBSyxPQUFNLEVBQUcsU0FBUyxFQUFFLEVBQUUsTUFBTSxDQUFDO0FBQUUsV0FBUyxHQUFHTCxJQUFFO0FBQUMsUUFBRyxDQUFDQSxHQUFFLEVBQUUsR0FBRTtBQUFDLE1BQUFBLEdBQUUsRUFBRSxJQUFFO0FBQUcsU0FBRyxRQUFRLFNBQVNLLElBQUU7QUFBQyw4QkFBb0JBLE9BQUksR0FBRyxJQUFJQSxFQUFDLEtBQUcsR0FBR0EsSUFBRSxPQUFHTCxFQUFDLEdBQUUsR0FBR0ssSUFBRSxNQUFHTCxFQUFDO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSUssS0FBRSxNQUFJTCxHQUFFLFdBQVNBLEtBQUVBLEdBQUU7QUFBYyxlQUFPSyxNQUFHQSxHQUFFLEVBQUUsTUFBSUEsR0FBRSxFQUFFLElBQUUsTUFBRyxHQUFHLG1CQUFrQixPQUFHQSxFQUFDO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFDamIsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFO0FBQUMsWUFBTyxHQUFHVCxFQUFDLEdBQUc7QUFBQSxNQUFBLEtBQUs7QUFBRSxZQUFJaEMsS0FBRTtBQUFHO0FBQUEsTUFBTSxLQUFLO0FBQUUsUUFBQUEsS0FBRTtBQUFHO0FBQUEsTUFBTTtBQUFRLFFBQUFBLEtBQUU7QUFBQSxJQUFFO0FBQUMsSUFBQTBDLEtBQUUxQyxHQUFFLEtBQUssTUFBS2dDLElBQUVVLElBQUVmLEVBQUM7QUFBRSxJQUFBM0IsS0FBRTtBQUFPLEtBQUMsTUFBSSxpQkFBZWdDLE1BQUcsZ0JBQWNBLE1BQUcsWUFBVUEsT0FBSWhDLEtBQUU7QUFBSSxJQUFBeUMsS0FBRSxXQUFTekMsS0FBRTJCLEdBQUUsaUJBQWlCSyxJQUFFVSxJQUFFLEVBQUMsU0FBUSxNQUFHLFNBQVExQyxHQUFDLENBQUMsSUFBRTJCLEdBQUUsaUJBQWlCSyxJQUFFVSxJQUFFLElBQUUsSUFBRSxXQUFTMUMsS0FBRTJCLEdBQUUsaUJBQWlCSyxJQUFFVSxJQUFFLEVBQUMsU0FBUTFDLEdBQUMsQ0FBQyxJQUFFMkIsR0FBRSxpQkFBaUJLLElBQUVVLElBQUUsS0FBRTtBQUFBLEVBQUM7QUFDbFYsV0FBUyxHQUFHZixJQUFFSyxJQUFFVSxJQUFFRCxJQUFFekMsSUFBRTtBQUFDLFFBQUlWLEtBQUVtRDtBQUFFLFFBQUcsT0FBS1QsS0FBRSxNQUFJLE9BQUtBLEtBQUUsTUFBSSxTQUFPUyxHQUFFLEdBQUUsWUFBTztBQUFDLFVBQUcsU0FBT0EsR0FBRTtBQUFPLFVBQUlHLEtBQUVILEdBQUU7QUFBSSxVQUFHLE1BQUlHLE1BQUcsTUFBSUEsSUFBRTtBQUFDLFlBQUlELEtBQUVGLEdBQUUsVUFBVTtBQUFjLFlBQUdFLE9BQUkzQyxNQUFHLE1BQUkyQyxHQUFFLFlBQVVBLEdBQUUsZUFBYTNDLEdBQUU7QUFBTSxZQUFHLE1BQUk0QyxHQUFFLE1BQUlBLEtBQUVILEdBQUUsUUFBTyxTQUFPRyxNQUFHO0FBQUMsY0FBSTdDLEtBQUU2QyxHQUFFO0FBQUksY0FBRyxNQUFJN0MsTUFBRyxNQUFJQTtBQUFFLGdCQUFHQSxLQUFFNkMsR0FBRSxVQUFVLGVBQWM3QyxPQUFJQyxNQUFHLE1BQUlELEdBQUUsWUFBVUEsR0FBRSxlQUFhQyxHQUFFO0FBQUE7QUFBTyxVQUFBNEMsS0FBRUEsR0FBRTtBQUFBLFFBQU07QUFBQyxlQUFLLFNBQU9ELE1BQUc7QUFBQyxVQUFBQyxLQUFFLEdBQUdELEVBQUM7QUFBRSxjQUFHLFNBQU9DLEdBQUU7QUFBTyxVQUFBN0MsS0FBRTZDLEdBQUU7QUFBSSxjQUFHLE1BQUk3QyxNQUFHLE1BQUlBLElBQUU7QUFBQyxZQUFBMEMsS0FBRW5ELEtBQUVzRDtBQUFFLHFCQUFTO0FBQUEsVUFBQztBQUFDLFVBQUFELEtBQUVBLEdBQUU7QUFBQSxRQUFVO0FBQUEsTUFBQztBQUFDLE1BQUFGLEtBQUVBLEdBQUU7QUFBQSxJQUFNO0FBQUMsT0FBRyxXQUFVO0FBQUMsVUFBSUEsS0FBRW5ELElBQUVVLEtBQUUsR0FBRzBDLEVBQUMsR0FBRUUsS0FBRSxDQUFFO0FBQ3RmLFNBQUU7QUFBQyxZQUFJRCxLQUFFLEdBQUcsSUFBSWhCLEVBQUM7QUFBRSxZQUFHLFdBQVNnQixJQUFFO0FBQUMsY0FBSTVDLEtBQUUsSUFBR2tCLEtBQUVVO0FBQUUsa0JBQU9BLElBQUc7QUFBQSxZQUFBLEtBQUs7QUFBVyxrQkFBRyxNQUFJLEdBQUdlLEVBQUMsRUFBRSxPQUFNO0FBQUEsWUFBRSxLQUFLO0FBQUEsWUFBVSxLQUFLO0FBQVEsY0FBQTNDLEtBQUU7QUFBRztBQUFBLFlBQU0sS0FBSztBQUFVLGNBQUFrQixLQUFFO0FBQVEsY0FBQWxCLEtBQUU7QUFBRztBQUFBLFlBQU0sS0FBSztBQUFXLGNBQUFrQixLQUFFO0FBQU8sY0FBQWxCLEtBQUU7QUFBRztBQUFBLFlBQU0sS0FBSztBQUFBLFlBQWEsS0FBSztBQUFZLGNBQUFBLEtBQUU7QUFBRztBQUFBLFlBQU0sS0FBSztBQUFRLGtCQUFHLE1BQUkyQyxHQUFFLE9BQU8sT0FBTTtBQUFBLFlBQUUsS0FBSztBQUFBLFlBQVcsS0FBSztBQUFBLFlBQVcsS0FBSztBQUFBLFlBQVksS0FBSztBQUFBLFlBQVksS0FBSztBQUFBLFlBQVUsS0FBSztBQUFBLFlBQVcsS0FBSztBQUFBLFlBQVksS0FBSztBQUFjLGNBQUEzQyxLQUFFO0FBQUc7QUFBQSxZQUFNLEtBQUs7QUFBQSxZQUFPLEtBQUs7QUFBQSxZQUFVLEtBQUs7QUFBQSxZQUFZLEtBQUs7QUFBQSxZQUFXLEtBQUs7QUFBQSxZQUFZLEtBQUs7QUFBQSxZQUFXLEtBQUs7QUFBQSxZQUFZLEtBQUs7QUFBTyxjQUFBQSxLQUMxaUI7QUFBRztBQUFBLFlBQU0sS0FBSztBQUFBLFlBQWMsS0FBSztBQUFBLFlBQVcsS0FBSztBQUFBLFlBQVksS0FBSztBQUFhLGNBQUFBLEtBQUU7QUFBRztBQUFBLFlBQU0sS0FBS3NMO0FBQUEsWUFBRyxLQUFLO0FBQUEsWUFBRyxLQUFLO0FBQUcsY0FBQXRMLEtBQUU7QUFBRztBQUFBLFlBQU0sS0FBSztBQUFHLGNBQUFBLEtBQUU7QUFBRztBQUFBLFlBQU0sS0FBSztBQUFTLGNBQUFBLEtBQUU7QUFBRztBQUFBLFlBQU0sS0FBSztBQUFRLGNBQUFBLEtBQUU7QUFBRztBQUFBLFlBQU0sS0FBSztBQUFBLFlBQU8sS0FBSztBQUFBLFlBQU0sS0FBSztBQUFRLGNBQUFBLEtBQUU7QUFBRztBQUFBLFlBQU0sS0FBSztBQUFBLFlBQW9CLEtBQUs7QUFBQSxZQUFxQixLQUFLO0FBQUEsWUFBZ0IsS0FBSztBQUFBLFlBQWMsS0FBSztBQUFBLFlBQWMsS0FBSztBQUFBLFlBQWEsS0FBSztBQUFBLFlBQWMsS0FBSztBQUFZLGNBQUFBLEtBQUU7QUFBQSxVQUFFO0FBQUMsY0FBSXNCLEtBQUUsT0FBS1csS0FBRSxJQUFHSyxLQUFFLENBQUNoQixNQUFHLGFBQVdNLElBQUV6QyxLQUFFbUMsS0FBRSxTQUFPc0IsS0FBRUEsS0FBRSxZQUFVLE9BQUtBO0FBQUUsVUFBQXRCLEtBQUUsQ0FBRTtBQUFDLG1CQUFRRyxLQUFFaUIsSUFBRW5CLElBQUUsU0FDL2VFLE1BQUc7QUFBQyxZQUFBRixLQUFFRTtBQUFFLGdCQUFJUyxLQUFFWCxHQUFFO0FBQVUsa0JBQUlBLEdBQUUsT0FBSyxTQUFPVyxPQUFJWCxLQUFFVyxJQUFFLFNBQU8vQyxPQUFJK0MsS0FBRSxHQUFHVCxJQUFFdEMsRUFBQyxHQUFFLFFBQU0rQyxNQUFHWixHQUFFLEtBQUssR0FBR0csSUFBRVMsSUFBRVgsRUFBQyxDQUFDO0FBQUksZ0JBQUdlLEdBQUU7QUFBTSxZQUFBYixLQUFFQSxHQUFFO0FBQUEsVUFBTTtBQUFDLGNBQUVILEdBQUUsV0FBU3NCLEtBQUUsSUFBSTVDLEdBQUU0QyxJQUFFMUIsSUFBRSxNQUFLeUIsSUFBRTFDLEVBQUMsR0FBRTRDLEdBQUUsS0FBSyxFQUFDLE9BQU1ELElBQUUsV0FBVXRCLEdBQUMsQ0FBQztBQUFBLFFBQUU7QUFBQSxNQUFDO0FBQUMsVUFBRyxPQUFLVyxLQUFFLElBQUc7QUFBQyxXQUFFO0FBQUMsVUFBQVcsS0FBRSxnQkFBY2hCLE1BQUcsa0JBQWdCQTtBQUFFLFVBQUE1QixLQUFFLGVBQWE0QixNQUFHLGlCQUFlQTtBQUFFLGNBQUdnQixNQUFHRCxPQUFJLE9BQUt6QixLQUFFeUIsR0FBRSxpQkFBZUEsR0FBRSxpQkFBZSxHQUFHekIsRUFBQyxLQUFHQSxHQUFFLEVBQUUsR0FBRyxPQUFNO0FBQUUsY0FBR2xCLE1BQUc0QyxJQUFFO0FBQUMsWUFBQUEsS0FBRTNDLEdBQUUsV0FBU0EsS0FBRUEsTUFBRzJDLEtBQUUzQyxHQUFFLGlCQUFlMkMsR0FBRSxlQUFhQSxHQUFFLGVBQWE7QUFBTyxnQkFBRzVDLElBQUU7QUFBQyxrQkFBR2tCLEtBQUV5QixHQUFFLGlCQUFlQSxHQUFFLFdBQVUzQyxLQUFFMEMsSUFBRXhCLEtBQUVBLEtBQUUsR0FBR0EsRUFBQyxJQUFFLE1BQUssU0FDL2VBLE9BQUlvQixLQUFFLEdBQUdwQixFQUFDLEdBQUVBLE9BQUlvQixNQUFHLE1BQUlwQixHQUFFLE9BQUssTUFBSUEsR0FBRSxLQUFLLENBQUFBLEtBQUU7QUFBQSxZQUFJLE1BQU0sQ0FBQWxCLEtBQUUsTUFBS2tCLEtBQUV3QjtBQUFFLGdCQUFHMUMsT0FBSWtCLElBQUU7QUFBQyxjQUFBSSxLQUFFO0FBQUcsY0FBQVksS0FBRTtBQUFlLGNBQUEvQyxLQUFFO0FBQWUsY0FBQXNDLEtBQUU7QUFBUSxrQkFBRyxpQkFBZUcsTUFBRyxrQkFBZ0JBLEdBQUUsQ0FBQU4sS0FBRSxJQUFHWSxLQUFFLGtCQUFpQi9DLEtBQUUsa0JBQWlCc0MsS0FBRTtBQUFVLGNBQUFhLEtBQUUsUUFBTXRDLEtBQUU0QyxLQUFFMkcsSUFBR3ZKLEVBQUM7QUFBRSxjQUFBdUIsS0FBRSxRQUFNTCxLQUFFMEIsS0FBRTJHLElBQUdySSxFQUFDO0FBQUUsY0FBQTBCLEtBQUUsSUFBSXRCLEdBQUVZLElBQUVULEtBQUUsU0FBUXpCLElBQUUyQyxJQUFFMUMsRUFBQztBQUFFLGNBQUEyQyxHQUFFLFNBQU9OO0FBQUUsY0FBQU0sR0FBRSxnQkFBY3JCO0FBQUUsY0FBQVcsS0FBRTtBQUFLLGlCQUFHakMsRUFBQyxNQUFJeUMsT0FBSXBCLEtBQUUsSUFBSUEsR0FBRW5DLElBQUVzQyxLQUFFLFNBQVFQLElBQUV5QixJQUFFMUMsRUFBQyxHQUFFcUIsR0FBRSxTQUFPQyxJQUFFRCxHQUFFLGdCQUFjZ0IsSUFBRUosS0FBRVo7QUFBRyxjQUFBZ0IsS0FBRUo7QUFBRSxrQkFBR2xDLE1BQUdrQixHQUFFLElBQUU7QUFBQyxnQkFBQUksS0FBRXRCO0FBQUUsZ0JBQUFiLEtBQUUrQjtBQUFFLGdCQUFBTyxLQUFFO0FBQUUscUJBQUlGLEtBQUVELElBQUVDLElBQUVBLEtBQUUsR0FBR0EsRUFBQyxFQUFFLENBQUFFO0FBQUksZ0JBQUFGLEtBQUU7QUFBRSxxQkFBSVcsS0FBRS9DLElBQUUrQyxJQUFFQSxLQUFFLEdBQUdBLEVBQUMsRUFBRSxDQUFBWDtBQUFJLHVCQUFLLElBQUVFLEtBQUVGLEtBQUcsQ0FBQUQsS0FBRSxHQUFHQSxFQUFDLEdBQUVHO0FBQUksdUJBQUssSUFBRUYsS0FBRUUsS0FBRyxDQUFBdEMsS0FDcGYsR0FBR0EsRUFBQyxHQUFFb0M7QUFBSSx1QkFBS0UsUUFBSztBQUFDLHNCQUFHSCxPQUFJbkMsTUFBRyxTQUFPQSxNQUFHbUMsT0FBSW5DLEdBQUUsVUFBVSxPQUFNO0FBQUUsa0JBQUFtQyxLQUFFLEdBQUdBLEVBQUM7QUFBRSxrQkFBQW5DLEtBQUUsR0FBR0EsRUFBQztBQUFBLGdCQUFDO0FBQUMsZ0JBQUFtQyxLQUFFO0FBQUEsY0FBSTtBQUFBLGtCQUFNLENBQUFBLEtBQUU7QUFBSyx1QkFBT3RCLE1BQUcsR0FBRzZDLElBQUVELElBQUU1QyxJQUFFc0IsSUFBRSxLQUFFO0FBQUUsdUJBQU9KLE1BQUcsU0FBT29CLE1BQUcsR0FBR08sSUFBRVAsSUFBRXBCLElBQUVJLElBQUUsSUFBRTtBQUFBLFlBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQztBQUFDLFdBQUU7QUFBQyxVQUFBc0IsS0FBRUYsS0FBRTZHLElBQUc3RyxFQUFDLElBQUU7QUFBTyxVQUFBMUMsS0FBRTRDLEdBQUUsWUFBVUEsR0FBRSxTQUFTLFlBQVc7QUFBRyxjQUFHLGFBQVc1QyxNQUFHLFlBQVVBLE1BQUcsV0FBUzRDLEdBQUUsS0FBSyxLQUFJLEtBQUc0RztBQUFBLG1CQUFXVCxJQUFHbkcsRUFBQyxFQUFFLEtBQUc2RyxJQUFHLE1BQUdTO0FBQUEsZUFBTztBQUFDLGlCQUFHRjtBQUFHLGdCQUFJLEtBQUdEO0FBQUEsVUFBRTtBQUFBLGNBQUssRUFBQy9KLEtBQUU0QyxHQUFFLGFBQVcsWUFBVTVDLEdBQUUsWUFBYSxNQUFHLGVBQWE0QyxHQUFFLFFBQU0sWUFBVUEsR0FBRSxVQUFRLEtBQUdxSDtBQUFJLGNBQUcsT0FBSyxLQUFHLEdBQUdySSxJQUFFYyxFQUFDLElBQUc7QUFBQyxZQUFBc0csSUFBR25HLElBQUUsSUFBR0YsSUFBRTFDLEVBQUM7QUFBRSxrQkFBTTtBQUFBLFVBQUM7QUFBQyxnQkFBSSxHQUFHMkIsSUFBRWdCLElBQUVGLEVBQUM7QUFBRSx5QkFBYWQsT0FBSSxLQUFHZ0IsR0FBRSxrQkFDbGYsR0FBRyxjQUFZLGFBQVdBLEdBQUUsUUFBTSxHQUFHQSxJQUFFLFVBQVNBLEdBQUUsS0FBSztBQUFBLFFBQUM7QUFBQyxhQUFHRixLQUFFNkcsSUFBRzdHLEVBQUMsSUFBRTtBQUFPLGdCQUFPZCxJQUFDO0FBQUEsVUFBRSxLQUFLO0FBQVUsZ0JBQUdtSCxJQUFHLEVBQUUsS0FBRyxXQUFTLEdBQUcsZ0JBQWdCLENBQUE4QixNQUFHLElBQUdDLE1BQUdwSSxJQUFFcUksTUFBRztBQUFLO0FBQUEsVUFBTSxLQUFLO0FBQVcsWUFBQUEsTUFBR0QsTUFBR0QsTUFBRztBQUFLO0FBQUEsVUFBTSxLQUFLO0FBQVksWUFBQUcsTUFBRztBQUFHO0FBQUEsVUFBTSxLQUFLO0FBQUEsVUFBYyxLQUFLO0FBQUEsVUFBVSxLQUFLO0FBQVUsWUFBQUEsTUFBRztBQUFHLFlBQUFDLElBQUdwSSxJQUFFRixJQUFFMUMsRUFBQztBQUFFO0FBQUEsVUFBTSxLQUFLO0FBQWtCLGdCQUFHMkssSUFBRztBQUFBLFVBQU0sS0FBSztBQUFBLFVBQVUsS0FBSztBQUFRLFlBQUFLLElBQUdwSSxJQUFFRixJQUFFMUMsRUFBQztBQUFBLFFBQUM7QUFBQyxZQUFJO0FBQUcsWUFBR2tJLElBQUcsSUFBRTtBQUFDLGtCQUFPdkc7WUFBRyxLQUFLO0FBQW1CLGtCQUFJLEtBQUc7QUFBcUIsb0JBQU07QUFBQSxZQUFFLEtBQUs7QUFBaUIsbUJBQUc7QUFDcGUsb0JBQU07QUFBQSxZQUFFLEtBQUs7QUFBb0IsbUJBQUc7QUFBc0Isb0JBQU07QUFBQSxVQUFDO0FBQUMsZUFBRztBQUFBLFFBQU07QUFBQSxZQUFNLENBQUErRyxNQUFHRixJQUFHN0csSUFBRWUsRUFBQyxNQUFJLEtBQUcsc0JBQW9CLGNBQVlmLE1BQUcsUUFBTWUsR0FBRSxZQUFVLEtBQUc7QUFBc0IsZUFBSzJGLE9BQUksU0FBTzNGLEdBQUUsV0FBU2dHLE9BQUkseUJBQXVCLEtBQUcsdUJBQXFCLE1BQUlBLFFBQUssS0FBRyxHQUFJLE1BQUcsS0FBRzFJLElBQUUsS0FBRyxXQUFVLEtBQUcsR0FBRyxRQUFNLEdBQUcsYUFBWTBJLE1BQUcsUUFBSyxLQUFHTSxJQUFHdkcsSUFBRSxFQUFFLEdBQUUsSUFBRSxHQUFHLFdBQVMsS0FBRyxJQUFJLEdBQUcsSUFBR2QsSUFBRSxNQUFLZSxJQUFFMUMsRUFBQyxHQUFFNEMsR0FBRSxLQUFLLEVBQUMsT0FBTSxJQUFHLFdBQVUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLE9BQUssTUFBSSxLQUFHNkYsSUFBRy9GLEVBQUMsR0FBRSxTQUFPLE9BQUssR0FBRyxPQUFLO0FBQU8sWUFBRyxLQUFHMEYsTUFBR08sSUFBR2hILElBQUVlLEVBQUMsSUFBRWtHLElBQUdqSCxJQUFFZSxFQUFDLEVBQUUsQ0FBQUQsS0FBRXVHLElBQUd2RyxJQUFFLGVBQWUsR0FDMWYsSUFBRUEsR0FBRSxXQUFTekMsS0FBRSxJQUFJLEdBQUcsaUJBQWdCLGVBQWMsTUFBSzBDLElBQUUxQyxFQUFDLEdBQUU0QyxHQUFFLEtBQUssRUFBQyxPQUFNNUMsSUFBRSxXQUFVeUMsR0FBQyxDQUFDLEdBQUV6QyxHQUFFLE9BQUs7QUFBQSxNQUFHO0FBQUMsTUFBQW9KLElBQUd4RyxJQUFFWixFQUFDO0FBQUEsSUFBQyxDQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0wsSUFBRUssSUFBRVUsSUFBRTtBQUFDLFdBQU0sRUFBQyxVQUFTZixJQUFFLFVBQVNLLElBQUUsZUFBY1UsR0FBQztBQUFBLEVBQUM7QUFBQyxXQUFTc0csSUFBR3JILElBQUVLLElBQUU7QUFBQyxhQUFRVSxLQUFFVixLQUFFLFdBQVVTLEtBQUUsQ0FBRSxHQUFDLFNBQU9kLE1BQUc7QUFBQyxVQUFJM0IsS0FBRTJCLElBQUVyQyxLQUFFVSxHQUFFO0FBQVUsWUFBSUEsR0FBRSxPQUFLLFNBQU9WLE9BQUlVLEtBQUVWLElBQUVBLEtBQUUsR0FBR3FDLElBQUVlLEVBQUMsR0FBRSxRQUFNcEQsTUFBR21ELEdBQUUsUUFBUSxHQUFHZCxJQUFFckMsSUFBRVUsRUFBQyxDQUFDLEdBQUVWLEtBQUUsR0FBR3FDLElBQUVLLEVBQUMsR0FBRSxRQUFNMUMsTUFBR21ELEdBQUUsS0FBSyxHQUFHZCxJQUFFckMsSUFBRVUsRUFBQyxDQUFDO0FBQUcsTUFBQTJCLEtBQUVBLEdBQUU7QUFBQSxJQUFNO0FBQUMsV0FBT2M7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHZCxJQUFFO0FBQUMsUUFBRyxTQUFPQSxHQUFFLFFBQU87QUFBSztBQUFHLE1BQUFBLEtBQUVBLEdBQUU7QUFBQSxXQUFhQSxNQUFHLE1BQUlBLEdBQUU7QUFBSyxXQUFPQSxLQUFFQSxLQUFFO0FBQUEsRUFBSTtBQUNuZCxXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFO0FBQUMsYUFBUVYsS0FBRTBDLEdBQUUsWUFBV1ksS0FBRSxDQUFBLEdBQUcsU0FBT0YsTUFBR0EsT0FBSUQsTUFBRztBQUFDLFVBQUlFLEtBQUVELElBQUUzQyxLQUFFNEMsR0FBRSxXQUFVM0IsS0FBRTJCLEdBQUU7QUFBVSxVQUFHLFNBQU81QyxNQUFHQSxPQUFJMEMsR0FBRTtBQUFNLFlBQUlFLEdBQUUsT0FBSyxTQUFPM0IsT0FBSTJCLEtBQUUzQixJQUFFaEIsTUFBR0QsS0FBRSxHQUFHMkMsSUFBRXBELEVBQUMsR0FBRSxRQUFNUyxNQUFHNkMsR0FBRSxRQUFRLEdBQUdGLElBQUUzQyxJQUFFNEMsRUFBQyxDQUFDLEtBQUczQyxPQUFJRCxLQUFFLEdBQUcyQyxJQUFFcEQsRUFBQyxHQUFFLFFBQU1TLE1BQUc2QyxHQUFFLEtBQUssR0FBR0YsSUFBRTNDLElBQUU0QyxFQUFDLENBQUM7QUFBSSxNQUFBRCxLQUFFQSxHQUFFO0FBQUEsSUFBTTtBQUFDLFVBQUlFLEdBQUUsVUFBUWpCLEdBQUUsS0FBSyxFQUFDLE9BQU1LLElBQUUsV0FBVVksR0FBQyxDQUFDO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxVQUFTLEtBQUc7QUFBaUIsV0FBUyxHQUFHakIsSUFBRTtBQUFDLFlBQU8sYUFBVyxPQUFPQSxLQUFFQSxLQUFFLEtBQUdBLElBQUcsUUFBUSxJQUFHLElBQUksRUFBRSxRQUFRLElBQUcsRUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUU7QUFBQyxJQUFBVixLQUFFLEdBQUdBLEVBQUM7QUFBRSxRQUFHLEdBQUdMLEVBQUMsTUFBSUssTUFBR1UsR0FBRSxPQUFNLE1BQU14QixHQUFFLEdBQUcsQ0FBQztBQUFBLEVBQUU7QUFBQyxXQUFTLEtBQUk7QUFBQSxFQUFBO0FBQzdlLE1BQUksS0FBRyxNQUFLLEtBQUc7QUFBSyxXQUFTLEdBQUdTLElBQUVLLElBQUU7QUFBQyxXQUFNLGVBQWFMLE1BQUcsZUFBYUEsTUFBRyxhQUFXLE9BQU9LLEdBQUUsWUFBVSxhQUFXLE9BQU9BLEdBQUUsWUFBVSxhQUFXLE9BQU9BLEdBQUUsMkJBQXlCLFNBQU9BLEdBQUUsMkJBQXlCLFFBQU1BLEdBQUUsd0JBQXdCO0FBQUEsRUFBTTtBQUM1UCxNQUFJLEtBQUcsZUFBYSxPQUFPLGFBQVcsYUFBVyxRQUFPLEtBQUcsZUFBYSxPQUFPLGVBQWEsZUFBYSxRQUFPLEtBQUcsZUFBYSxPQUFPLFVBQVEsVUFBUSxRQUFPLEtBQUcsZUFBYSxPQUFPLGlCQUFlLGlCQUFlLGdCQUFjLE9BQU8sS0FBRyxTQUFTTCxJQUFFO0FBQUMsV0FBTyxHQUFHLFFBQVEsSUFBSSxFQUFFLEtBQUtBLEVBQUMsRUFBRSxNQUFNLEVBQUU7QUFBQSxFQUFDLElBQUU7QUFBRyxXQUFTLEdBQUdBLElBQUU7QUFBQyxlQUFXLFdBQVU7QUFBQyxZQUFNQTtBQUFBLElBQUUsQ0FBQztBQUFBLEVBQUM7QUFDcFYsV0FBUyxHQUFHQSxJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRVYsSUFBRVMsS0FBRTtBQUFFLE9BQUU7QUFBQyxVQUFJekMsS0FBRTBDLEdBQUU7QUFBWSxNQUFBZixHQUFFLFlBQVllLEVBQUM7QUFBRSxVQUFHMUMsTUFBRyxNQUFJQSxHQUFFLFNBQVMsS0FBRzBDLEtBQUUxQyxHQUFFLE1BQUssU0FBTzBDLElBQUU7QUFBQyxZQUFHLE1BQUlELElBQUU7QUFBQyxVQUFBZCxHQUFFLFlBQVkzQixFQUFDO0FBQUUsYUFBR2dDLEVBQUM7QUFBRTtBQUFBLFFBQU07QUFBQyxRQUFBUztBQUFBLE1BQUcsTUFBSyxTQUFNQyxNQUFHLFNBQU9BLE1BQUcsU0FBT0EsTUFBR0Q7QUFBSSxNQUFBQyxLQUFFMUM7QUFBQSxJQUFDLFNBQU8wQztBQUFHLE9BQUdWLEVBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHTCxJQUFFO0FBQUMsV0FBSyxRQUFNQSxJQUFFQSxLQUFFQSxHQUFFLGFBQVk7QUFBQyxVQUFJSyxLQUFFTCxHQUFFO0FBQVMsVUFBRyxNQUFJSyxNQUFHLE1BQUlBLEdBQUU7QUFBTSxVQUFHLE1BQUlBLElBQUU7QUFBQyxRQUFBQSxLQUFFTCxHQUFFO0FBQUssWUFBRyxRQUFNSyxNQUFHLFNBQU9BLE1BQUcsU0FBT0EsR0FBRTtBQUFNLFlBQUcsU0FBT0EsR0FBRSxRQUFPO0FBQUEsTUFBSTtBQUFBLElBQUM7QUFBQyxXQUFPTDtBQUFBLEVBQUM7QUFDalksV0FBUyxHQUFHQSxJQUFFO0FBQUMsSUFBQUEsS0FBRUEsR0FBRTtBQUFnQixhQUFRSyxLQUFFLEdBQUVMLE1BQUc7QUFBQyxVQUFHLE1BQUlBLEdBQUUsVUFBUztBQUFDLFlBQUllLEtBQUVmLEdBQUU7QUFBSyxZQUFHLFFBQU1lLE1BQUcsU0FBT0EsTUFBRyxTQUFPQSxJQUFFO0FBQUMsY0FBRyxNQUFJVixHQUFFLFFBQU9MO0FBQUUsVUFBQUs7QUFBQSxRQUFHLE1BQUssVUFBT1UsTUFBR1Y7QUFBQSxNQUFHO0FBQUMsTUFBQUwsS0FBRUEsR0FBRTtBQUFBLElBQWU7QUFBQyxXQUFPO0FBQUEsRUFBSTtBQUFDLE1BQUksS0FBRyxLQUFLLE9BQU0sRUFBRyxTQUFTLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRSxLQUFHLGtCQUFnQixJQUFHLEtBQUcsa0JBQWdCLElBQUcsS0FBRyxzQkFBb0IsSUFBRyxLQUFHLG1CQUFpQixJQUFHLEtBQUcsc0JBQW9CLElBQUcsS0FBRyxvQkFBa0I7QUFDbFgsV0FBUyxHQUFHQSxJQUFFO0FBQUMsUUFBSUssS0FBRUwsR0FBRSxFQUFFO0FBQUUsUUFBR0ssR0FBRSxRQUFPQTtBQUFFLGFBQVFVLEtBQUVmLEdBQUUsWUFBV2UsTUFBRztBQUFDLFVBQUdWLEtBQUVVLEdBQUUsRUFBRSxLQUFHQSxHQUFFLEVBQUUsR0FBRTtBQUFDLFFBQUFBLEtBQUVWLEdBQUU7QUFBVSxZQUFHLFNBQU9BLEdBQUUsU0FBTyxTQUFPVSxNQUFHLFNBQU9BLEdBQUUsTUFBTSxNQUFJZixLQUFFLEdBQUdBLEVBQUMsR0FBRSxTQUFPQSxNQUFHO0FBQUMsY0FBR2UsS0FBRWYsR0FBRSxFQUFFLEVBQUUsUUFBT2U7QUFBRSxVQUFBZixLQUFFLEdBQUdBLEVBQUM7QUFBQSxRQUFDO0FBQUMsZUFBT0s7QUFBQSxNQUFDO0FBQUMsTUFBQUwsS0FBRWU7QUFBRSxNQUFBQSxLQUFFZixHQUFFO0FBQUEsSUFBVTtBQUFDLFdBQU87QUFBQSxFQUFJO0FBQUMsV0FBUyxHQUFHQSxJQUFFO0FBQUMsSUFBQUEsS0FBRUEsR0FBRSxFQUFFLEtBQUdBLEdBQUUsRUFBRTtBQUFFLFdBQU0sQ0FBQ0EsTUFBRyxNQUFJQSxHQUFFLE9BQUssTUFBSUEsR0FBRSxPQUFLLE9BQUtBLEdBQUUsT0FBSyxNQUFJQSxHQUFFLE1BQUksT0FBS0E7QUFBQSxFQUFDO0FBQUMsV0FBUzJILElBQUczSCxJQUFFO0FBQUMsUUFBRyxNQUFJQSxHQUFFLE9BQUssTUFBSUEsR0FBRSxJQUFJLFFBQU9BLEdBQUU7QUFBVSxVQUFNLE1BQU1ULEdBQUUsRUFBRSxDQUFDO0FBQUEsRUFBRTtBQUFDLFdBQVMsR0FBR1MsSUFBRTtBQUFDLFdBQU9BLEdBQUUsRUFBRSxLQUFHO0FBQUEsRUFBSTtBQUFDLE1BQUksS0FBRyxDQUFBLEdBQUcsS0FBRztBQUFHLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFdBQU0sRUFBQyxTQUFRQSxHQUFDO0FBQUEsRUFBQztBQUN2ZSxXQUFTSSxHQUFFSixJQUFFO0FBQUMsUUFBRSxPQUFLQSxHQUFFLFVBQVEsR0FBRyxFQUFFLEdBQUUsR0FBRyxFQUFFLElBQUUsTUFBSztBQUFBLEVBQUs7QUFBQyxXQUFTTyxHQUFFUCxJQUFFSyxJQUFFO0FBQUM7QUFBSyxPQUFHLEVBQUUsSUFBRUwsR0FBRTtBQUFRLElBQUFBLEdBQUUsVUFBUUs7QUFBQSxFQUFDO0FBQUMsTUFBSSxLQUFHLElBQUdHLEtBQUUsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEtBQUUsR0FBRSxLQUFHO0FBQUcsV0FBUyxHQUFHUixJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRWYsR0FBRSxLQUFLO0FBQWEsUUFBRyxDQUFDZSxHQUFFLFFBQU87QUFBRyxRQUFJRCxLQUFFZCxHQUFFO0FBQVUsUUFBR2MsTUFBR0EsR0FBRSxnREFBOENULEdBQUUsUUFBT1MsR0FBRTtBQUEwQyxRQUFJekMsS0FBRSxDQUFBLEdBQUdWO0FBQUUsU0FBSUEsTUFBS29ELEdBQUUsQ0FBQTFDLEdBQUVWLEVBQUMsSUFBRTBDLEdBQUUxQyxFQUFDO0FBQUUsSUFBQW1ELE9BQUlkLEtBQUVBLEdBQUUsV0FBVUEsR0FBRSw4Q0FBNENLLElBQUVMLEdBQUUsNENBQTBDM0I7QUFBRyxXQUFPQTtBQUFBLEVBQUM7QUFDOWQsV0FBUyxHQUFHMkIsSUFBRTtBQUFDLElBQUFBLEtBQUVBLEdBQUU7QUFBa0IsV0FBTyxTQUFPQSxNQUFHLFdBQVNBO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFDLElBQUFJLEdBQUUsRUFBRTtBQUFFLElBQUFBLEdBQUVJLEVBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHUixJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBR1AsR0FBRSxZQUFVLEdBQUcsT0FBTSxNQUFNakIsR0FBRSxHQUFHLENBQUM7QUFBRSxJQUFBZ0IsR0FBRUMsSUFBRUgsRUFBQztBQUFFLElBQUFFLEdBQUUsSUFBR1EsRUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdmLElBQUVLLElBQUVVLElBQUU7QUFBQyxRQUFJRCxLQUFFZCxHQUFFO0FBQVUsSUFBQUssS0FBRUEsR0FBRTtBQUFrQixRQUFHLGVBQWEsT0FBT1MsR0FBRSxnQkFBZ0IsUUFBT0M7QUFBRSxJQUFBRCxLQUFFQSxHQUFFO0FBQWtCLGFBQVF6QyxNQUFLeUMsR0FBRSxLQUFHLEVBQUV6QyxNQUFLZ0MsSUFBRyxPQUFNLE1BQU1kLEdBQUUsS0FBSSxHQUFHUyxFQUFDLEtBQUcsV0FBVTNCLEVBQUMsQ0FBQztBQUFFLFdBQU8wQixHQUFFLENBQUUsR0FBQ2dCLElBQUVELEVBQUM7QUFBQSxFQUFDO0FBQ3hYLFdBQVMsR0FBR2QsSUFBRTtBQUFDLElBQUFBLE1BQUdBLEtBQUVBLEdBQUUsY0FBWUEsR0FBRSw2Q0FBMkM7QUFBRyxTQUFHUSxHQUFFO0FBQVEsSUFBQUQsR0FBRUMsSUFBRVIsRUFBQztBQUFFLElBQUFPLEdBQUUsSUFBRyxHQUFHLE9BQU87QUFBRSxXQUFNO0FBQUEsRUFBRTtBQUFDLFdBQVMsR0FBR1AsSUFBRUssSUFBRVUsSUFBRTtBQUFDLFFBQUlELEtBQUVkLEdBQUU7QUFBVSxRQUFHLENBQUNjLEdBQUUsT0FBTSxNQUFNdkIsR0FBRSxHQUFHLENBQUM7QUFBRSxJQUFBd0IsTUFBR2YsS0FBRSxHQUFHQSxJQUFFSyxJQUFFLEVBQUUsR0FBRVMsR0FBRSw0Q0FBMENkLElBQUVJLEdBQUUsRUFBRSxHQUFFQSxHQUFFSSxFQUFDLEdBQUVELEdBQUVDLElBQUVSLEVBQUMsS0FBR0ksR0FBRSxFQUFFO0FBQUUsSUFBQUcsR0FBRSxJQUFHUSxFQUFDO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxNQUFLLEtBQUcsT0FBRyxLQUFHO0FBQUcsV0FBUyxHQUFHZixJQUFFO0FBQUMsYUFBTyxLQUFHLEtBQUcsQ0FBQ0EsRUFBQyxJQUFFLEdBQUcsS0FBS0EsRUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdBLElBQUU7QUFBQyxTQUFHO0FBQUcsT0FBR0EsRUFBQztBQUFBLEVBQUM7QUFDM1gsV0FBUyxLQUFJO0FBQUMsUUFBRyxDQUFDLE1BQUksU0FBTyxJQUFHO0FBQUMsV0FBRztBQUFHLFVBQUlBLEtBQUUsR0FBRUssS0FBRUg7QUFBRSxVQUFHO0FBQUMsWUFBSWEsS0FBRTtBQUFHLGFBQUliLEtBQUUsR0FBRUYsS0FBRWUsR0FBRSxRQUFPZixNQUFJO0FBQUMsY0FBSWMsS0FBRUMsR0FBRWYsRUFBQztBQUFFO0FBQUcsWUFBQWMsS0FBRUEsR0FBRSxJQUFFO0FBQUEsaUJBQVEsU0FBT0E7QUFBQSxRQUFFO0FBQUMsYUFBRztBQUFLLGFBQUc7QUFBQSxNQUFFLFNBQU96QyxJQUFFO0FBQUMsY0FBTSxTQUFPLE9BQUssS0FBRyxHQUFHLE1BQU0yQixLQUFFLENBQUMsSUFBRyxHQUFHLElBQUcsRUFBRSxHQUFFM0I7QUFBQSxNQUFFLFVBQUM7QUFBUSxRQUFBNkIsS0FBRUcsSUFBRSxLQUFHO0FBQUEsTUFBRTtBQUFBLElBQUM7QUFBQyxXQUFPO0FBQUEsRUFBSTtBQUFDLE1BQUksS0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLE1BQUssS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUUsS0FBRyxNQUFLLEtBQUcsR0FBRSxLQUFHO0FBQUcsV0FBUyxHQUFHTCxJQUFFSyxJQUFFO0FBQUMsT0FBRyxJQUFJLElBQUU7QUFBRyxPQUFHLElBQUksSUFBRTtBQUFHLFNBQUdMO0FBQUUsU0FBR0s7QUFBQSxFQUFDO0FBQ2pWLFdBQVMsR0FBR0wsSUFBRUssSUFBRVUsSUFBRTtBQUFDLE9BQUcsSUFBSSxJQUFFO0FBQUcsT0FBRyxJQUFJLElBQUU7QUFBRyxPQUFHLElBQUksSUFBRTtBQUFHLFNBQUdmO0FBQUUsUUFBSWMsS0FBRTtBQUFHLElBQUFkLEtBQUU7QUFBRyxRQUFJM0IsS0FBRSxLQUFHLEdBQUd5QyxFQUFDLElBQUU7QUFBRSxJQUFBQSxNQUFHLEVBQUUsS0FBR3pDO0FBQUcsSUFBQTBDLE1BQUc7QUFBRSxRQUFJcEQsS0FBRSxLQUFHLEdBQUcwQyxFQUFDLElBQUVoQztBQUFFLFFBQUcsS0FBR1YsSUFBRTtBQUFDLFVBQUlzRCxLQUFFNUMsS0FBRUEsS0FBRTtBQUFFLE1BQUFWLE1BQUdtRCxNQUFHLEtBQUdHLE1BQUcsR0FBRyxTQUFTLEVBQUU7QUFBRSxNQUFBSCxPQUFJRztBQUFFLE1BQUE1QyxNQUFHNEM7QUFBRSxXQUFHLEtBQUcsS0FBRyxHQUFHWixFQUFDLElBQUVoQyxLQUFFMEMsTUFBRzFDLEtBQUV5QztBQUFFLFdBQUduRCxLQUFFcUM7QUFBQSxJQUFDLE1BQU0sTUFBRyxLQUFHckMsS0FBRW9ELE1BQUcxQyxLQUFFeUMsSUFBRSxLQUFHZDtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdBLElBQUU7QUFBQyxhQUFPQSxHQUFFLFdBQVMsR0FBR0EsSUFBRSxDQUFDLEdBQUUsR0FBR0EsSUFBRSxHQUFFLENBQUM7QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHQSxJQUFFO0FBQUMsV0FBS0EsT0FBSSxLQUFJLE1BQUcsR0FBRyxFQUFFLEVBQUUsR0FBRSxHQUFHLEVBQUUsSUFBRSxNQUFLLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRSxHQUFHLEVBQUUsSUFBRTtBQUFLLFdBQUtBLE9BQUksS0FBSSxNQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUUsR0FBRyxFQUFFLElBQUUsTUFBSyxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUUsR0FBRyxFQUFFLElBQUUsTUFBSyxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUUsR0FBRyxFQUFFLElBQUU7QUFBQSxFQUFJO0FBQUMsTUFBSSxLQUFHLE1BQUssS0FBRyxNQUFLUyxLQUFFLE9BQUcsS0FBRztBQUNqZSxXQUFTLEdBQUdULElBQUVLLElBQUU7QUFBQyxRQUFJVSxLQUFFLEdBQUcsR0FBRSxNQUFLLE1BQUssQ0FBQztBQUFFLElBQUFBLEdBQUUsY0FBWTtBQUFVLElBQUFBLEdBQUUsWUFBVVY7QUFBRSxJQUFBVSxHQUFFLFNBQU9mO0FBQUUsSUFBQUssS0FBRUwsR0FBRTtBQUFVLGFBQU9LLE1BQUdMLEdBQUUsWUFBVSxDQUFDZSxFQUFDLEdBQUVmLEdBQUUsU0FBTyxNQUFJSyxHQUFFLEtBQUtVLEVBQUM7QUFBQSxFQUFDO0FBQ3hKLFdBQVMsR0FBR2YsSUFBRUssSUFBRTtBQUFDLFlBQU9MLEdBQUUsS0FBSztBQUFBLE1BQUEsS0FBSztBQUFFLFlBQUllLEtBQUVmLEdBQUU7QUFBSyxRQUFBSyxLQUFFLE1BQUlBLEdBQUUsWUFBVVUsR0FBRSxZQUFhLE1BQUdWLEdBQUUsU0FBUyxZQUFhLElBQUMsT0FBS0E7QUFBRSxlQUFPLFNBQU9BLE1BQUdMLEdBQUUsWUFBVUssSUFBRSxLQUFHTCxJQUFFLEtBQUcsR0FBR0ssR0FBRSxVQUFVLEdBQUUsUUFBSTtBQUFBLE1BQUcsS0FBSztBQUFFLGVBQU9BLEtBQUUsT0FBS0wsR0FBRSxnQkFBYyxNQUFJSyxHQUFFLFdBQVMsT0FBS0EsSUFBRSxTQUFPQSxNQUFHTCxHQUFFLFlBQVVLLElBQUUsS0FBR0wsSUFBRSxLQUFHLE1BQUssUUFBSTtBQUFBLE1BQUcsS0FBSztBQUFHLGVBQU9LLEtBQUUsTUFBSUEsR0FBRSxXQUFTLE9BQUtBLElBQUUsU0FBT0EsTUFBR1UsS0FBRSxTQUFPLEtBQUcsRUFBQyxJQUFHLElBQUcsVUFBUyxHQUFFLElBQUUsTUFBS2YsR0FBRSxnQkFBYyxFQUFDLFlBQVdLLElBQUUsYUFBWVUsSUFBRSxXQUFVLFdBQVUsR0FBRUEsS0FBRSxHQUFHLElBQUcsTUFBSyxNQUFLLENBQUMsR0FBRUEsR0FBRSxZQUFVVixJQUFFVSxHQUFFLFNBQU9mLElBQUVBLEdBQUUsUUFBTWUsSUFBRSxLQUFHZixJQUFFLEtBQ2xmLE1BQUssUUFBSTtBQUFBLE1BQUc7QUFBUSxlQUFNO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdBLElBQUU7QUFBQyxXQUFPLE9BQUtBLEdBQUUsT0FBSyxNQUFJLE9BQUtBLEdBQUUsUUFBTTtBQUFBLEVBQUk7QUFBQyxXQUFTLEdBQUdBLElBQUU7QUFBQyxRQUFHUyxJQUFFO0FBQUMsVUFBSUosS0FBRTtBQUFHLFVBQUdBLElBQUU7QUFBQyxZQUFJVSxLQUFFVjtBQUFFLFlBQUcsQ0FBQyxHQUFHTCxJQUFFSyxFQUFDLEdBQUU7QUFBQyxjQUFHLEdBQUdMLEVBQUMsRUFBRSxPQUFNLE1BQU1ULEdBQUUsR0FBRyxDQUFDO0FBQUUsVUFBQWMsS0FBRSxHQUFHVSxHQUFFLFdBQVc7QUFBRSxjQUFJRCxLQUFFO0FBQUcsVUFBQVQsTUFBRyxHQUFHTCxJQUFFSyxFQUFDLElBQUUsR0FBR1MsSUFBRUMsRUFBQyxLQUFHZixHQUFFLFFBQU1BLEdBQUUsUUFBTSxRQUFNLEdBQUVTLEtBQUUsT0FBRyxLQUFHVDtBQUFBLFFBQUU7QUFBQSxNQUFDLE9BQUs7QUFBQyxZQUFHLEdBQUdBLEVBQUMsRUFBRSxPQUFNLE1BQU1ULEdBQUUsR0FBRyxDQUFDO0FBQUUsUUFBQVMsR0FBRSxRQUFNQSxHQUFFLFFBQU0sUUFBTTtBQUFFLFFBQUFTLEtBQUU7QUFBRyxhQUFHVDtBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFNBQUlBLEtBQUVBLEdBQUUsUUFBTyxTQUFPQSxNQUFHLE1BQUlBLEdBQUUsT0FBSyxNQUFJQSxHQUFFLE9BQUssT0FBS0EsR0FBRSxNQUFLLENBQUFBLEtBQUVBLEdBQUU7QUFBTyxTQUFHQTtBQUFBLEVBQUM7QUFDaGEsV0FBUyxHQUFHQSxJQUFFO0FBQUMsUUFBR0EsT0FBSSxHQUFHLFFBQU07QUFBRyxRQUFHLENBQUNTLEdBQUUsUUFBTyxHQUFHVCxFQUFDLEdBQUVTLEtBQUUsTUFBRztBQUFHLFFBQUlKO0FBQUUsS0FBQ0EsS0FBRSxNQUFJTCxHQUFFLFFBQU0sRUFBRUssS0FBRSxNQUFJTCxHQUFFLFNBQU9LLEtBQUVMLEdBQUUsTUFBS0ssS0FBRSxXQUFTQSxNQUFHLFdBQVNBLE1BQUcsQ0FBQyxHQUFHTCxHQUFFLE1BQUtBLEdBQUUsYUFBYTtBQUFHLFFBQUdLLE9BQUlBLEtBQUUsS0FBSTtBQUFDLFVBQUcsR0FBR0wsRUFBQyxFQUFFLE9BQU0sR0FBRSxHQUFHLE1BQU1ULEdBQUUsR0FBRyxDQUFDO0FBQUUsYUFBS2MsS0FBRyxJQUFHTCxJQUFFSyxFQUFDLEdBQUVBLEtBQUUsR0FBR0EsR0FBRSxXQUFXO0FBQUEsSUFBQztBQUFDLE9BQUdMLEVBQUM7QUFBRSxRQUFHLE9BQUtBLEdBQUUsS0FBSTtBQUFDLE1BQUFBLEtBQUVBLEdBQUU7QUFBYyxNQUFBQSxLQUFFLFNBQU9BLEtBQUVBLEdBQUUsYUFBVztBQUFLLFVBQUcsQ0FBQ0EsR0FBRSxPQUFNLE1BQU1ULEdBQUUsR0FBRyxDQUFDO0FBQUUsU0FBRTtBQUFDLFFBQUFTLEtBQUVBLEdBQUU7QUFBWSxhQUFJSyxLQUFFLEdBQUVMLE1BQUc7QUFBQyxjQUFHLE1BQUlBLEdBQUUsVUFBUztBQUFDLGdCQUFJZSxLQUFFZixHQUFFO0FBQUssZ0JBQUcsU0FBT2UsSUFBRTtBQUFDLGtCQUFHLE1BQUlWLElBQUU7QUFBQyxxQkFBRyxHQUFHTCxHQUFFLFdBQVc7QUFBRSxzQkFBTTtBQUFBLGNBQUM7QUFBQyxjQUFBSztBQUFBLFlBQUcsTUFBSyxTQUFNVSxNQUFHLFNBQU9BLE1BQUcsU0FBT0EsTUFBR1Y7QUFBQSxVQUFHO0FBQUMsVUFBQUwsS0FBRUEsR0FBRTtBQUFBLFFBQVc7QUFBQyxhQUNqZ0I7QUFBQSxNQUFJO0FBQUEsSUFBQyxNQUFNLE1BQUcsS0FBRyxHQUFHQSxHQUFFLFVBQVUsV0FBVyxJQUFFO0FBQUssV0FBTTtBQUFBLEVBQUU7QUFBQyxXQUFTLEtBQUk7QUFBQyxhQUFRQSxLQUFFLElBQUdBLEtBQUcsQ0FBQUEsS0FBRSxHQUFHQSxHQUFFLFdBQVc7QUFBQSxFQUFDO0FBQUMsV0FBUyxLQUFJO0FBQUMsU0FBRyxLQUFHO0FBQUssSUFBQVMsS0FBRTtBQUFBLEVBQUU7QUFBQyxXQUFTLEdBQUdULElBQUU7QUFBQyxhQUFPLEtBQUcsS0FBRyxDQUFDQSxFQUFDLElBQUUsR0FBRyxLQUFLQSxFQUFDO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxHQUFHO0FBQ2hNLFdBQVMsR0FBR0EsSUFBRUssSUFBRVUsSUFBRTtBQUFDLElBQUFmLEtBQUVlLEdBQUU7QUFBSSxRQUFHLFNBQU9mLE1BQUcsZUFBYSxPQUFPQSxNQUFHLGFBQVcsT0FBT0EsSUFBRTtBQUFDLFVBQUdlLEdBQUUsUUFBTztBQUFDLFFBQUFBLEtBQUVBLEdBQUU7QUFBTyxZQUFHQSxJQUFFO0FBQUMsY0FBRyxNQUFJQSxHQUFFLElBQUksT0FBTSxNQUFNeEIsR0FBRSxHQUFHLENBQUM7QUFBRSxjQUFJdUIsS0FBRUMsR0FBRTtBQUFBLFFBQVM7QUFBQyxZQUFHLENBQUNELEdBQUUsT0FBTSxNQUFNdkIsR0FBRSxLQUFJUyxFQUFDLENBQUM7QUFBRSxZQUFJM0IsS0FBRXlDLElBQUVuRCxLQUFFLEtBQUdxQztBQUFFLFlBQUcsU0FBT0ssTUFBRyxTQUFPQSxHQUFFLE9BQUssZUFBYSxPQUFPQSxHQUFFLE9BQUtBLEdBQUUsSUFBSSxlQUFhMUMsR0FBRSxRQUFPMEMsR0FBRTtBQUFJLFFBQUFBLEtBQUUsU0FBU0wsSUFBRTtBQUFDLGNBQUlLLEtBQUVoQyxHQUFFO0FBQUssbUJBQU8yQixLQUFFLE9BQU9LLEdBQUUxQyxFQUFDLElBQUUwQyxHQUFFMUMsRUFBQyxJQUFFcUM7QUFBQSxRQUFDO0FBQUUsUUFBQUssR0FBRSxhQUFXMUM7QUFBRSxlQUFPMEM7QUFBQSxNQUFDO0FBQUMsVUFBRyxhQUFXLE9BQU9MLEdBQUUsT0FBTSxNQUFNVCxHQUFFLEdBQUcsQ0FBQztBQUFFLFVBQUcsQ0FBQ3dCLEdBQUUsT0FBTyxPQUFNLE1BQU14QixHQUFFLEtBQUlTLEVBQUMsQ0FBQztBQUFBLElBQUU7QUFBQyxXQUFPQTtBQUFBLEVBQUM7QUFDL2MsV0FBUyxHQUFHQSxJQUFFSyxJQUFFO0FBQUMsSUFBQUwsS0FBRSxPQUFPLFVBQVUsU0FBUyxLQUFLSyxFQUFDO0FBQUUsVUFBTSxNQUFNZCxHQUFFLElBQUcsc0JBQW9CUyxLQUFFLHVCQUFxQixPQUFPLEtBQUtLLEVBQUMsRUFBRSxLQUFLLElBQUksSUFBRSxNQUFJTCxFQUFDLENBQUM7QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHQSxJQUFFO0FBQUMsUUFBSUssS0FBRUwsR0FBRTtBQUFNLFdBQU9LLEdBQUVMLEdBQUUsUUFBUTtBQUFBLEVBQUM7QUFDck0sV0FBUyxHQUFHQSxJQUFFO0FBQUMsYUFBU0ssR0FBRUEsSUFBRVUsSUFBRTtBQUFDLFVBQUdmLElBQUU7QUFBQyxZQUFJYyxLQUFFVCxHQUFFO0FBQVUsaUJBQU9TLE1BQUdULEdBQUUsWUFBVSxDQUFDVSxFQUFDLEdBQUVWLEdBQUUsU0FBTyxNQUFJUyxHQUFFLEtBQUtDLEVBQUM7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLGFBQVNBLEdBQUVBLElBQUVELElBQUU7QUFBQyxVQUFHLENBQUNkLEdBQUUsUUFBTztBQUFLLGFBQUssU0FBT2MsS0FBRyxDQUFBVCxHQUFFVSxJQUFFRCxFQUFDLEdBQUVBLEtBQUVBLEdBQUU7QUFBUSxhQUFPO0FBQUEsSUFBSTtBQUFDLGFBQVNBLEdBQUVkLElBQUVLLElBQUU7QUFBQyxXQUFJTCxLQUFFLG9CQUFJLE9BQUksU0FBT0ssS0FBRyxVQUFPQSxHQUFFLE1BQUlMLEdBQUUsSUFBSUssR0FBRSxLQUFJQSxFQUFDLElBQUVMLEdBQUUsSUFBSUssR0FBRSxPQUFNQSxFQUFDLEdBQUVBLEtBQUVBLEdBQUU7QUFBUSxhQUFPTDtBQUFBLElBQUM7QUFBQyxhQUFTM0IsR0FBRTJCLElBQUVLLElBQUU7QUFBQyxNQUFBTCxLQUFFLEdBQUdBLElBQUVLLEVBQUM7QUFBRSxNQUFBTCxHQUFFLFFBQU07QUFBRSxNQUFBQSxHQUFFLFVBQVE7QUFBSyxhQUFPQTtBQUFBLElBQUM7QUFBQyxhQUFTckMsR0FBRTBDLElBQUVVLElBQUVELElBQUU7QUFBQyxNQUFBVCxHQUFFLFFBQU1TO0FBQUUsVUFBRyxDQUFDZCxHQUFFLFFBQU9LLEdBQUUsU0FBTyxTQUFRVTtBQUFFLE1BQUFELEtBQUVULEdBQUU7QUFBVSxVQUFHLFNBQU9TLEdBQUUsUUFBT0EsS0FBRUEsR0FBRSxPQUFNQSxLQUFFQyxNQUFHVixHQUFFLFNBQU8sR0FBRVUsTUFBR0Q7QUFBRSxNQUFBVCxHQUFFLFNBQU87QUFBRSxhQUFPVTtBQUFBLElBQUM7QUFBQyxhQUFTRSxHQUFFWixJQUFFO0FBQUMsTUFBQUwsTUFDN2YsU0FBT0ssR0FBRSxjQUFZQSxHQUFFLFNBQU87QUFBRyxhQUFPQTtBQUFBLElBQUM7QUFBQyxhQUFTVyxHQUFFaEIsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFVBQUcsU0FBT1QsTUFBRyxNQUFJQSxHQUFFLElBQUksUUFBT0EsS0FBRSxHQUFHVSxJQUFFZixHQUFFLE1BQUtjLEVBQUMsR0FBRVQsR0FBRSxTQUFPTCxJQUFFSztBQUFFLE1BQUFBLEtBQUVoQyxHQUFFZ0MsSUFBRVUsRUFBQztBQUFFLE1BQUFWLEdBQUUsU0FBT0w7QUFBRSxhQUFPSztBQUFBLElBQUM7QUFBQyxhQUFTakMsR0FBRTRCLElBQUVLLElBQUVVLElBQUVELElBQUU7QUFBQyxVQUFJbkQsS0FBRW9ELEdBQUU7QUFBSyxVQUFHcEQsT0FBSSxHQUFHLFFBQU91RCxHQUFFbEIsSUFBRUssSUFBRVUsR0FBRSxNQUFNLFVBQVNELElBQUVDLEdBQUUsR0FBRztBQUFFLFVBQUcsU0FBT1YsT0FBSUEsR0FBRSxnQkFBYzFDLE1BQUcsYUFBVyxPQUFPQSxNQUFHLFNBQU9BLE1BQUdBLEdBQUUsYUFBVyxNQUFJLEdBQUdBLEVBQUMsTUFBSTBDLEdBQUUsTUFBTSxRQUFPUyxLQUFFekMsR0FBRWdDLElBQUVVLEdBQUUsS0FBSyxHQUFFRCxHQUFFLE1BQUksR0FBR2QsSUFBRUssSUFBRVUsRUFBQyxHQUFFRCxHQUFFLFNBQU9kLElBQUVjO0FBQUUsTUFBQUEsS0FBRSxHQUFHQyxHQUFFLE1BQUtBLEdBQUUsS0FBSUEsR0FBRSxPQUFNLE1BQUtmLEdBQUUsTUFBS2MsRUFBQztBQUFFLE1BQUFBLEdBQUUsTUFBSSxHQUFHZCxJQUFFSyxJQUFFVSxFQUFDO0FBQUUsTUFBQUQsR0FBRSxTQUFPZDtBQUFFLGFBQU9jO0FBQUEsSUFBQztBQUFDLGFBQVN6QixHQUFFVyxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFO0FBQUMsVUFBRyxTQUFPVCxNQUFHLE1BQUlBLEdBQUUsT0FDamZBLEdBQUUsVUFBVSxrQkFBZ0JVLEdBQUUsaUJBQWVWLEdBQUUsVUFBVSxtQkFBaUJVLEdBQUUsZUFBZSxRQUFPVixLQUFFLEdBQUdVLElBQUVmLEdBQUUsTUFBS2MsRUFBQyxHQUFFVCxHQUFFLFNBQU9MLElBQUVLO0FBQUUsTUFBQUEsS0FBRWhDLEdBQUVnQyxJQUFFVSxHQUFFLFlBQVUsQ0FBRSxDQUFBO0FBQUUsTUFBQVYsR0FBRSxTQUFPTDtBQUFFLGFBQU9LO0FBQUEsSUFBQztBQUFDLGFBQVNhLEdBQUVsQixJQUFFSyxJQUFFVSxJQUFFRCxJQUFFbkQsSUFBRTtBQUFDLFVBQUcsU0FBTzBDLE1BQUcsTUFBSUEsR0FBRSxJQUFJLFFBQU9BLEtBQUUsR0FBR1UsSUFBRWYsR0FBRSxNQUFLYyxJQUFFbkQsRUFBQyxHQUFFMEMsR0FBRSxTQUFPTCxJQUFFSztBQUFFLE1BQUFBLEtBQUVoQyxHQUFFZ0MsSUFBRVUsRUFBQztBQUFFLE1BQUFWLEdBQUUsU0FBT0w7QUFBRSxhQUFPSztBQUFBLElBQUM7QUFBQyxhQUFTYixHQUFFUSxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsVUFBRyxhQUFXLE9BQU9WLE1BQUcsT0FBS0EsTUFBRyxhQUFXLE9BQU9BLEdBQUUsUUFBT0EsS0FBRSxHQUFHLEtBQUdBLElBQUVMLEdBQUUsTUFBS2UsRUFBQyxHQUFFVixHQUFFLFNBQU9MLElBQUVLO0FBQUUsVUFBRyxhQUFXLE9BQU9BLE1BQUcsU0FBT0EsSUFBRTtBQUFDLGdCQUFPQSxHQUFFLFVBQVE7QUFBQSxVQUFFLEtBQUs7QUFBRyxtQkFBT1UsS0FBRSxHQUFHVixHQUFFLE1BQUtBLEdBQUUsS0FBSUEsR0FBRSxPQUFNLE1BQUtMLEdBQUUsTUFBS2UsRUFBQyxHQUNwZkEsR0FBRSxNQUFJLEdBQUdmLElBQUUsTUFBS0ssRUFBQyxHQUFFVSxHQUFFLFNBQU9mLElBQUVlO0FBQUEsVUFBRSxLQUFLO0FBQUcsbUJBQU9WLEtBQUUsR0FBR0EsSUFBRUwsR0FBRSxNQUFLZSxFQUFDLEdBQUVWLEdBQUUsU0FBT0wsSUFBRUs7QUFBQSxVQUFFLEtBQUs7QUFBRyxnQkFBSVMsS0FBRVQsR0FBRTtBQUFNLG1CQUFPYixHQUFFUSxJQUFFYyxHQUFFVCxHQUFFLFFBQVEsR0FBRVUsRUFBQztBQUFBLFFBQUM7QUFBQyxZQUFHLEdBQUdWLEVBQUMsS0FBRyxHQUFHQSxFQUFDLEVBQUUsUUFBT0EsS0FBRSxHQUFHQSxJQUFFTCxHQUFFLE1BQUtlLElBQUUsSUFBSSxHQUFFVixHQUFFLFNBQU9MLElBQUVLO0FBQUUsV0FBR0wsSUFBRUssRUFBQztBQUFBLE1BQUM7QUFBQyxhQUFPO0FBQUEsSUFBSTtBQUFDLGFBQVNaLEdBQUVPLElBQUVLLElBQUVVLElBQUVELElBQUU7QUFBQyxVQUFJekMsS0FBRSxTQUFPZ0MsS0FBRUEsR0FBRSxNQUFJO0FBQUssVUFBRyxhQUFXLE9BQU9VLE1BQUcsT0FBS0EsTUFBRyxhQUFXLE9BQU9BLEdBQUUsUUFBTyxTQUFPMUMsS0FBRSxPQUFLMkMsR0FBRWhCLElBQUVLLElBQUUsS0FBR1UsSUFBRUQsRUFBQztBQUFFLFVBQUcsYUFBVyxPQUFPQyxNQUFHLFNBQU9BLElBQUU7QUFBQyxnQkFBT0EsR0FBRSxVQUFRO0FBQUEsVUFBRSxLQUFLO0FBQUcsbUJBQU9BLEdBQUUsUUFBTTFDLEtBQUVELEdBQUU0QixJQUFFSyxJQUFFVSxJQUFFRCxFQUFDLElBQUU7QUFBQSxVQUFLLEtBQUs7QUFBRyxtQkFBT0MsR0FBRSxRQUFNMUMsS0FBRWdCLEdBQUVXLElBQUVLLElBQUVVLElBQUVELEVBQUMsSUFBRTtBQUFBLFVBQUssS0FBSztBQUFHLG1CQUFPekMsS0FBRTBDLEdBQUUsT0FBTXRCO0FBQUEsY0FBRU87QUFBQSxjQUNwZks7QUFBQSxjQUFFaEMsR0FBRTBDLEdBQUUsUUFBUTtBQUFBLGNBQUVEO0FBQUEsWUFBQztBQUFBLFFBQUM7QUFBQyxZQUFHLEdBQUdDLEVBQUMsS0FBRyxHQUFHQSxFQUFDLEVBQUUsUUFBTyxTQUFPMUMsS0FBRSxPQUFLNkMsR0FBRWxCLElBQUVLLElBQUVVLElBQUVELElBQUUsSUFBSTtBQUFFLFdBQUdkLElBQUVlLEVBQUM7QUFBQSxNQUFDO0FBQUMsYUFBTztBQUFBLElBQUk7QUFBQyxhQUFTdEQsR0FBRXVDLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFO0FBQUMsVUFBRyxhQUFXLE9BQU95QyxNQUFHLE9BQUtBLE1BQUcsYUFBVyxPQUFPQSxHQUFFLFFBQU9kLEtBQUVBLEdBQUUsSUFBSWUsRUFBQyxLQUFHLE1BQUtDLEdBQUVYLElBQUVMLElBQUUsS0FBR2MsSUFBRXpDLEVBQUM7QUFBRSxVQUFHLGFBQVcsT0FBT3lDLE1BQUcsU0FBT0EsSUFBRTtBQUFDLGdCQUFPQSxHQUFFLFVBQVE7QUFBQSxVQUFFLEtBQUs7QUFBRyxtQkFBT2QsS0FBRUEsR0FBRSxJQUFJLFNBQU9jLEdBQUUsTUFBSUMsS0FBRUQsR0FBRSxHQUFHLEtBQUcsTUFBSzFDLEdBQUVpQyxJQUFFTCxJQUFFYyxJQUFFekMsRUFBQztBQUFBLFVBQUUsS0FBSztBQUFHLG1CQUFPMkIsS0FBRUEsR0FBRSxJQUFJLFNBQU9jLEdBQUUsTUFBSUMsS0FBRUQsR0FBRSxHQUFHLEtBQUcsTUFBS3pCLEdBQUVnQixJQUFFTCxJQUFFYyxJQUFFekMsRUFBQztBQUFBLFVBQUUsS0FBSztBQUFHLGdCQUFJVixLQUFFbUQsR0FBRTtBQUFNLG1CQUFPckQsR0FBRXVDLElBQUVLLElBQUVVLElBQUVwRCxHQUFFbUQsR0FBRSxRQUFRLEdBQUV6QyxFQUFDO0FBQUEsUUFBQztBQUFDLFlBQUcsR0FBR3lDLEVBQUMsS0FBRyxHQUFHQSxFQUFDLEVBQUUsUUFBT2QsS0FBRUEsR0FBRSxJQUFJZSxFQUFDLEtBQUcsTUFBS0csR0FBRWIsSUFBRUwsSUFBRWMsSUFBRXpDLElBQUUsSUFBSTtBQUFFLFdBQUdnQyxJQUFFUyxFQUFDO0FBQUEsTUFBQztBQUFDLGFBQU87QUFBQSxJQUFJO0FBQzlmLGFBQVN4QixHQUFFakIsSUFBRTRDLElBQUVELElBQUU1QyxJQUFFO0FBQUMsZUFBUWlCLEtBQUUsTUFBSzZCLEtBQUUsTUFBS3ZCLEtBQUVzQixJQUFFcEIsS0FBRW9CLEtBQUUsR0FBRTFELEtBQUUsTUFBSyxTQUFPb0MsTUFBR0UsS0FBRW1CLEdBQUUsUUFBT25CLE1BQUk7QUFBQyxRQUFBRixHQUFFLFFBQU1FLE1BQUd0QyxLQUFFb0MsSUFBRUEsS0FBRSxRQUFNcEMsS0FBRW9DLEdBQUU7QUFBUSxZQUFJTCxLQUFFRyxHQUFFcEIsSUFBRXNCLElBQUVxQixHQUFFbkIsRUFBQyxHQUFFekIsRUFBQztBQUFFLFlBQUcsU0FBT2tCLElBQUU7QUFBQyxtQkFBT0ssT0FBSUEsS0FBRXBDO0FBQUc7QUFBQSxRQUFLO0FBQUMsUUFBQXlDLE1BQUdMLE1BQUcsU0FBT0wsR0FBRSxhQUFXZSxHQUFFaEMsSUFBRXNCLEVBQUM7QUFBRSxRQUFBc0IsS0FBRXRELEdBQUUyQixJQUFFMkIsSUFBRXBCLEVBQUM7QUFBRSxpQkFBT3FCLEtBQUU3QixLQUFFQyxLQUFFNEIsR0FBRSxVQUFRNUI7QUFBRSxRQUFBNEIsS0FBRTVCO0FBQUUsUUFBQUssS0FBRXBDO0FBQUEsTUFBQztBQUFDLFVBQUdzQyxPQUFJbUIsR0FBRSxPQUFPLFFBQU9ELEdBQUUxQyxJQUFFc0IsRUFBQyxHQUFFYyxNQUFHLEdBQUdwQyxJQUFFd0IsRUFBQyxHQUFFUjtBQUFFLFVBQUcsU0FBT00sSUFBRTtBQUFDLGVBQUtFLEtBQUVtQixHQUFFLFFBQU9uQixLQUFJLENBQUFGLEtBQUVILEdBQUVuQixJQUFFMkMsR0FBRW5CLEVBQUMsR0FBRXpCLEVBQUMsR0FBRSxTQUFPdUIsT0FBSXNCLEtBQUV0RCxHQUFFZ0MsSUFBRXNCLElBQUVwQixFQUFDLEdBQUUsU0FBT3FCLEtBQUU3QixLQUFFTSxLQUFFdUIsR0FBRSxVQUFRdkIsSUFBRXVCLEtBQUV2QjtBQUFHLFFBQUFjLE1BQUcsR0FBR3BDLElBQUV3QixFQUFDO0FBQUUsZUFBT1I7QUFBQSxNQUFDO0FBQUMsV0FBSU0sS0FBRW1CLEdBQUV6QyxJQUFFc0IsRUFBQyxHQUFFRSxLQUFFbUIsR0FBRSxRQUFPbkIsS0FBSSxDQUFBdEMsS0FBRUUsR0FBRWtDLElBQUV0QixJQUFFd0IsSUFBRW1CLEdBQUVuQixFQUFDLEdBQUV6QixFQUFDLEdBQUUsU0FBT2IsT0FBSXlDLE1BQUcsU0FBT3pDLEdBQUUsYUFBV29DLEdBQUUsT0FBTyxTQUN2ZnBDLEdBQUUsTUFBSXNDLEtBQUV0QyxHQUFFLEdBQUcsR0FBRTBELEtBQUV0RCxHQUFFSixJQUFFMEQsSUFBRXBCLEVBQUMsR0FBRSxTQUFPcUIsS0FBRTdCLEtBQUU5QixLQUFFMkQsR0FBRSxVQUFRM0QsSUFBRTJELEtBQUUzRDtBQUFHLE1BQUF5QyxNQUFHTCxHQUFFLFFBQVEsU0FBU0ssSUFBRTtBQUFDLGVBQU9LLEdBQUVoQyxJQUFFMkIsRUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLE1BQUFTLE1BQUcsR0FBR3BDLElBQUV3QixFQUFDO0FBQUUsYUFBT1I7QUFBQSxJQUFDO0FBQUMsYUFBU0ssR0FBRXJCLElBQUU0QyxJQUFFRCxJQUFFNUMsSUFBRTtBQUFDLFVBQUlpQixLQUFFLEdBQUcyQixFQUFDO0FBQUUsVUFBRyxlQUFhLE9BQU8zQixHQUFFLE9BQU0sTUFBTUUsR0FBRSxHQUFHLENBQUM7QUFBRSxNQUFBeUIsS0FBRTNCLEdBQUUsS0FBSzJCLEVBQUM7QUFBRSxVQUFHLFFBQU1BLEdBQUUsT0FBTSxNQUFNekIsR0FBRSxHQUFHLENBQUM7QUFBRSxlQUFRSSxLQUFFTixLQUFFLE1BQUs2QixLQUFFRCxJQUFFcEIsS0FBRW9CLEtBQUUsR0FBRTFELEtBQUUsTUFBSytCLEtBQUUwQixHQUFFLEtBQU0sR0FBQyxTQUFPRSxNQUFHLENBQUM1QixHQUFFLE1BQUtPLE1BQUlQLEtBQUUwQixHQUFFLEtBQU0sR0FBQztBQUFDLFFBQUFFLEdBQUUsUUFBTXJCLE1BQUd0QyxLQUFFMkQsSUFBRUEsS0FBRSxRQUFNM0QsS0FBRTJELEdBQUU7QUFBUSxZQUFJeEIsS0FBRUQsR0FBRXBCLElBQUU2QyxJQUFFNUIsR0FBRSxPQUFNbEIsRUFBQztBQUFFLFlBQUcsU0FBT3NCLElBQUU7QUFBQyxtQkFBT3dCLE9BQUlBLEtBQUUzRDtBQUFHO0FBQUEsUUFBSztBQUFDLFFBQUF5QyxNQUFHa0IsTUFBRyxTQUFPeEIsR0FBRSxhQUFXVyxHQUFFaEMsSUFBRTZDLEVBQUM7QUFBRSxRQUFBRCxLQUFFdEQsR0FBRStCLElBQUV1QixJQUFFcEIsRUFBQztBQUFFLGlCQUFPRixLQUFFTixLQUFFSyxLQUFFQyxHQUFFLFVBQVFEO0FBQUUsUUFBQUMsS0FBRUQ7QUFBRSxRQUFBd0IsS0FBRTNEO0FBQUEsTUFBQztBQUFDLFVBQUcrQixHQUFFLEtBQUssUUFBT3lCO0FBQUEsUUFBRTFDO0FBQUEsUUFDemY2QztBQUFBLE1BQUMsR0FBRVQsTUFBRyxHQUFHcEMsSUFBRXdCLEVBQUMsR0FBRVI7QUFBRSxVQUFHLFNBQU82QixJQUFFO0FBQUMsZUFBSyxDQUFDNUIsR0FBRSxNQUFLTyxNQUFJUCxLQUFFMEIsR0FBRSxLQUFJLEVBQUcsQ0FBQTFCLEtBQUVFLEdBQUVuQixJQUFFaUIsR0FBRSxPQUFNbEIsRUFBQyxHQUFFLFNBQU9rQixPQUFJMkIsS0FBRXRELEdBQUUyQixJQUFFMkIsSUFBRXBCLEVBQUMsR0FBRSxTQUFPRixLQUFFTixLQUFFQyxLQUFFSyxHQUFFLFVBQVFMLElBQUVLLEtBQUVMO0FBQUcsUUFBQW1CLE1BQUcsR0FBR3BDLElBQUV3QixFQUFDO0FBQUUsZUFBT1I7QUFBQSxNQUFDO0FBQUMsV0FBSTZCLEtBQUVKLEdBQUV6QyxJQUFFNkMsRUFBQyxHQUFFLENBQUM1QixHQUFFLE1BQUtPLE1BQUlQLEtBQUUwQixHQUFFLEtBQU0sRUFBQyxDQUFBMUIsS0FBRTdCLEdBQUV5RCxJQUFFN0MsSUFBRXdCLElBQUVQLEdBQUUsT0FBTWxCLEVBQUMsR0FBRSxTQUFPa0IsT0FBSVUsTUFBRyxTQUFPVixHQUFFLGFBQVc0QixHQUFFLE9BQU8sU0FBTzVCLEdBQUUsTUFBSU8sS0FBRVAsR0FBRSxHQUFHLEdBQUUyQixLQUFFdEQsR0FBRTJCLElBQUUyQixJQUFFcEIsRUFBQyxHQUFFLFNBQU9GLEtBQUVOLEtBQUVDLEtBQUVLLEdBQUUsVUFBUUwsSUFBRUssS0FBRUw7QUFBRyxNQUFBVSxNQUFHa0IsR0FBRSxRQUFRLFNBQVNsQixJQUFFO0FBQUMsZUFBT0ssR0FBRWhDLElBQUUyQixFQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsTUFBQVMsTUFBRyxHQUFHcEMsSUFBRXdCLEVBQUM7QUFBRSxhQUFPUjtBQUFBLElBQUM7QUFBQyxhQUFTcUIsR0FBRVYsSUFBRWMsSUFBRW5ELElBQUVxRCxJQUFFO0FBQUMsbUJBQVcsT0FBT3JELE1BQUcsU0FBT0EsTUFBR0EsR0FBRSxTQUFPLE1BQUksU0FBT0EsR0FBRSxRQUFNQSxLQUFFQSxHQUFFLE1BQU07QUFBVSxVQUFHLGFBQVcsT0FBT0EsTUFBRyxTQUFPQSxJQUFFO0FBQUMsZ0JBQU9BLEdBQUUsVUFBUTtBQUFBLFVBQUUsS0FBSztBQUFHLGVBQUU7QUFBQyx1QkFBUVMsS0FDN2hCVCxHQUFFLEtBQUkwQixLQUFFeUIsSUFBRSxTQUFPekIsTUFBRztBQUFDLG9CQUFHQSxHQUFFLFFBQU1qQixJQUFFO0FBQUMsa0JBQUFBLEtBQUVULEdBQUU7QUFBSyxzQkFBR1MsT0FBSSxJQUFHO0FBQUMsd0JBQUcsTUFBSWlCLEdBQUUsS0FBSTtBQUFDLHNCQUFBMEIsR0FBRWYsSUFBRVgsR0FBRSxPQUFPO0FBQUUsc0JBQUF5QixLQUFFekMsR0FBRWdCLElBQUUxQixHQUFFLE1BQU0sUUFBUTtBQUFFLHNCQUFBbUQsR0FBRSxTQUFPZDtBQUFFLHNCQUFBQSxLQUFFYztBQUFFLDRCQUFNO0FBQUEsb0JBQUM7QUFBQSxrQkFBQyxXQUFTekIsR0FBRSxnQkFBY2pCLE1BQUcsYUFBVyxPQUFPQSxNQUFHLFNBQU9BLE1BQUdBLEdBQUUsYUFBVyxNQUFJLEdBQUdBLEVBQUMsTUFBSWlCLEdBQUUsTUFBSztBQUFDLG9CQUFBMEIsR0FBRWYsSUFBRVgsR0FBRSxPQUFPO0FBQUUsb0JBQUF5QixLQUFFekMsR0FBRWdCLElBQUUxQixHQUFFLEtBQUs7QUFBRSxvQkFBQW1ELEdBQUUsTUFBSSxHQUFHZCxJQUFFWCxJQUFFMUIsRUFBQztBQUFFLG9CQUFBbUQsR0FBRSxTQUFPZDtBQUFFLG9CQUFBQSxLQUFFYztBQUFFLDBCQUFNO0FBQUEsa0JBQUM7QUFBQyxrQkFBQUMsR0FBRWYsSUFBRVgsRUFBQztBQUFFO0FBQUEsZ0JBQUssTUFBTSxDQUFBZ0IsR0FBRUwsSUFBRVgsRUFBQztBQUFFLGdCQUFBQSxLQUFFQSxHQUFFO0FBQUEsY0FBTztBQUFDLGNBQUExQixHQUFFLFNBQU8sTUFBSW1ELEtBQUUsR0FBR25ELEdBQUUsTUFBTSxVQUFTcUMsR0FBRSxNQUFLZ0IsSUFBRXJELEdBQUUsR0FBRyxHQUFFbUQsR0FBRSxTQUFPZCxJQUFFQSxLQUFFYyxPQUFJRSxLQUFFLEdBQUdyRCxHQUFFLE1BQUtBLEdBQUUsS0FBSUEsR0FBRSxPQUFNLE1BQUtxQyxHQUFFLE1BQUtnQixFQUFDLEdBQUVBLEdBQUUsTUFBSSxHQUFHaEIsSUFBRWMsSUFBRW5ELEVBQUMsR0FBRXFELEdBQUUsU0FBT2hCLElBQUVBLEtBQUVnQjtBQUFBLFlBQUU7QUFBQyxtQkFBT0MsR0FBRWpCLEVBQUM7QUFBQSxVQUFFLEtBQUs7QUFBRyxlQUFFO0FBQUMsbUJBQUlYLEtBQUUxQixHQUFFLEtBQUksU0FDemZtRCxNQUFHO0FBQUMsb0JBQUdBLEdBQUUsUUFBTXpCLEdBQUUsS0FBRyxNQUFJeUIsR0FBRSxPQUFLQSxHQUFFLFVBQVUsa0JBQWdCbkQsR0FBRSxpQkFBZW1ELEdBQUUsVUFBVSxtQkFBaUJuRCxHQUFFLGdCQUFlO0FBQUMsa0JBQUFvRCxHQUFFZixJQUFFYyxHQUFFLE9BQU87QUFBRSxrQkFBQUEsS0FBRXpDLEdBQUV5QyxJQUFFbkQsR0FBRSxZQUFVLENBQUEsQ0FBRTtBQUFFLGtCQUFBbUQsR0FBRSxTQUFPZDtBQUFFLGtCQUFBQSxLQUFFYztBQUFFLHdCQUFNO0FBQUEsZ0JBQUMsT0FBSztBQUFDLGtCQUFBQyxHQUFFZixJQUFFYyxFQUFDO0FBQUU7QUFBQSxnQkFBSztBQUFBLG9CQUFNLENBQUFULEdBQUVMLElBQUVjLEVBQUM7QUFBRSxnQkFBQUEsS0FBRUEsR0FBRTtBQUFBLGNBQU87QUFBQyxjQUFBQSxLQUFFLEdBQUduRCxJQUFFcUMsR0FBRSxNQUFLZ0IsRUFBQztBQUFFLGNBQUFGLEdBQUUsU0FBT2Q7QUFBRSxjQUFBQSxLQUFFYztBQUFBLFlBQUM7QUFBQyxtQkFBT0csR0FBRWpCLEVBQUM7QUFBQSxVQUFFLEtBQUs7QUFBRyxtQkFBT1gsS0FBRTFCLEdBQUUsT0FBTStDLEdBQUVWLElBQUVjLElBQUV6QixHQUFFMUIsR0FBRSxRQUFRLEdBQUVxRCxFQUFDO0FBQUEsUUFBQztBQUFDLFlBQUcsR0FBR3JELEVBQUMsRUFBRSxRQUFPMkIsR0FBRVUsSUFBRWMsSUFBRW5ELElBQUVxRCxFQUFDO0FBQUUsWUFBRyxHQUFHckQsRUFBQyxFQUFFLFFBQU8rQixHQUFFTSxJQUFFYyxJQUFFbkQsSUFBRXFELEVBQUM7QUFBRSxXQUFHaEIsSUFBRXJDLEVBQUM7QUFBQSxNQUFDO0FBQUMsYUFBTSxhQUFXLE9BQU9BLE1BQUcsT0FBS0EsTUFBRyxhQUFXLE9BQU9BLE1BQUdBLEtBQUUsS0FBR0EsSUFBRSxTQUFPbUQsTUFBRyxNQUFJQSxHQUFFLE9BQUtDLEdBQUVmLElBQUVjLEdBQUUsT0FBTyxHQUFFQSxLQUFFekMsR0FBRXlDLElBQUVuRCxFQUFDLEdBQUVtRCxHQUFFLFNBQU9kLElBQUVBLEtBQUVjLE9BQ25mQyxHQUFFZixJQUFFYyxFQUFDLEdBQUVBLEtBQUUsR0FBR25ELElBQUVxQyxHQUFFLE1BQUtnQixFQUFDLEdBQUVGLEdBQUUsU0FBT2QsSUFBRUEsS0FBRWMsS0FBR0csR0FBRWpCLEVBQUMsS0FBR2UsR0FBRWYsSUFBRWMsRUFBQztBQUFBLElBQUM7QUFBQyxXQUFPSjtBQUFBLEVBQUM7QUFBQyxNQUFJLEtBQUcsR0FBRyxJQUFFLEdBQUUsS0FBRyxHQUFHLEtBQUUsR0FBRSxLQUFHLEdBQUcsSUFBSSxHQUFFLEtBQUcsTUFBSyxLQUFHLE1BQUssS0FBRztBQUFLLFdBQVMsS0FBSTtBQUFDLFNBQUcsS0FBRyxLQUFHO0FBQUEsRUFBSTtBQUFDLFdBQVMsR0FBR1YsSUFBRTtBQUFDLFFBQUlLLEtBQUUsR0FBRztBQUFRLElBQUFELEdBQUUsRUFBRTtBQUFFLElBQUFKLEdBQUUsZ0JBQWNLO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0wsSUFBRUssSUFBRVUsSUFBRTtBQUFDLFdBQUssU0FBT2YsTUFBRztBQUFDLFVBQUljLEtBQUVkLEdBQUU7QUFBVSxPQUFDQSxHQUFFLGFBQVdLLFFBQUtBLE1BQUdMLEdBQUUsY0FBWUssSUFBRSxTQUFPUyxPQUFJQSxHQUFFLGNBQVlULE9BQUksU0FBT1MsT0FBSUEsR0FBRSxhQUFXVCxRQUFLQSxPQUFJUyxHQUFFLGNBQVlUO0FBQUcsVUFBR0wsT0FBSWUsR0FBRTtBQUFNLE1BQUFmLEtBQUVBLEdBQUU7QUFBQSxJQUFNO0FBQUEsRUFBQztBQUNuWixXQUFTLEdBQUdBLElBQUVLLElBQUU7QUFBQyxTQUFHTDtBQUFFLFNBQUcsS0FBRztBQUFLLElBQUFBLEtBQUVBLEdBQUU7QUFBYSxhQUFPQSxNQUFHLFNBQU9BLEdBQUUsaUJBQWUsT0FBS0EsR0FBRSxRQUFNSyxRQUFLLEtBQUcsT0FBSUwsR0FBRSxlQUFhO0FBQUEsRUFBSztBQUFDLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFFBQUlLLEtBQUVMLEdBQUU7QUFBYyxRQUFHLE9BQUtBLEdBQUUsS0FBR0EsS0FBRSxFQUFDLFNBQVFBLElBQUUsZUFBY0ssSUFBRSxNQUFLLEtBQUksR0FBRSxTQUFPLElBQUc7QUFBQyxVQUFHLFNBQU8sR0FBRyxPQUFNLE1BQU1kLEdBQUUsR0FBRyxDQUFDO0FBQUUsV0FBR1M7QUFBRSxTQUFHLGVBQWEsRUFBQyxPQUFNLEdBQUUsY0FBYUEsR0FBQztBQUFBLElBQUMsTUFBTSxNQUFHLEdBQUcsT0FBS0E7QUFBRSxXQUFPSztBQUFBLEVBQUM7QUFBQyxNQUFJLEtBQUc7QUFBSyxXQUFTLEdBQUdMLElBQUU7QUFBQyxhQUFPLEtBQUcsS0FBRyxDQUFDQSxFQUFDLElBQUUsR0FBRyxLQUFLQSxFQUFDO0FBQUEsRUFBQztBQUN2WSxXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUVELElBQUU7QUFBQyxRQUFJekMsS0FBRWdDLEdBQUU7QUFBWSxhQUFPaEMsTUFBRzBDLEdBQUUsT0FBS0EsSUFBRSxHQUFHVixFQUFDLE1BQUlVLEdBQUUsT0FBSzFDLEdBQUUsTUFBS0EsR0FBRSxPQUFLMEM7QUFBRyxJQUFBVixHQUFFLGNBQVlVO0FBQUUsV0FBTyxHQUFHZixJQUFFYyxFQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR2QsSUFBRUssSUFBRTtBQUFDLElBQUFMLEdBQUUsU0FBT0s7QUFBRSxRQUFJVSxLQUFFZixHQUFFO0FBQVUsYUFBT2UsT0FBSUEsR0FBRSxTQUFPVjtBQUFHLElBQUFVLEtBQUVmO0FBQUUsU0FBSUEsS0FBRUEsR0FBRSxRQUFPLFNBQU9BLEtBQUcsQ0FBQUEsR0FBRSxjQUFZSyxJQUFFVSxLQUFFZixHQUFFLFdBQVUsU0FBT2UsT0FBSUEsR0FBRSxjQUFZVixLQUFHVSxLQUFFZixJQUFFQSxLQUFFQSxHQUFFO0FBQU8sV0FBTyxNQUFJZSxHQUFFLE1BQUlBLEdBQUUsWUFBVTtBQUFBLEVBQUk7QUFBQyxNQUFJLEtBQUc7QUFBRyxXQUFTLEdBQUdmLElBQUU7QUFBQyxJQUFBQSxHQUFFLGNBQVksRUFBQyxXQUFVQSxHQUFFLGVBQWMsaUJBQWdCLE1BQUssZ0JBQWUsTUFBSyxRQUFPLEVBQUMsU0FBUSxNQUFLLGFBQVksTUFBSyxPQUFNLEVBQUMsR0FBRSxTQUFRLEtBQUk7QUFBQSxFQUFDO0FBQy9lLFdBQVMsR0FBR0EsSUFBRUssSUFBRTtBQUFDLElBQUFMLEtBQUVBLEdBQUU7QUFBWSxJQUFBSyxHQUFFLGdCQUFjTCxPQUFJSyxHQUFFLGNBQVksRUFBQyxXQUFVTCxHQUFFLFdBQVUsaUJBQWdCQSxHQUFFLGlCQUFnQixnQkFBZUEsR0FBRSxnQkFBZSxRQUFPQSxHQUFFLFFBQU8sU0FBUUEsR0FBRSxRQUFPO0FBQUEsRUFBRTtBQUFDLFdBQVMsR0FBR0EsSUFBRUssSUFBRTtBQUFDLFdBQU0sRUFBQyxXQUFVTCxJQUFFLE1BQUtLLElBQUUsS0FBSSxHQUFFLFNBQVEsTUFBSyxVQUFTLE1BQUssTUFBSyxLQUFJO0FBQUEsRUFBQztBQUN0UixXQUFTLEdBQUdMLElBQUVLLElBQUVVLElBQUU7QUFBQyxRQUFJRCxLQUFFZCxHQUFFO0FBQVksUUFBRyxTQUFPYyxHQUFFLFFBQU87QUFBSyxJQUFBQSxLQUFFQSxHQUFFO0FBQU8sUUFBRyxPQUFLSCxLQUFFLElBQUc7QUFBQyxVQUFJdEMsS0FBRXlDLEdBQUU7QUFBUSxlQUFPekMsS0FBRWdDLEdBQUUsT0FBS0EsTUFBR0EsR0FBRSxPQUFLaEMsR0FBRSxNQUFLQSxHQUFFLE9BQUtnQztBQUFHLE1BQUFTLEdBQUUsVUFBUVQ7QUFBRSxhQUFPLEdBQUdMLElBQUVlLEVBQUM7QUFBQSxJQUFDO0FBQUMsSUFBQTFDLEtBQUV5QyxHQUFFO0FBQVksYUFBT3pDLE1BQUdnQyxHQUFFLE9BQUtBLElBQUUsR0FBR1MsRUFBQyxNQUFJVCxHQUFFLE9BQUtoQyxHQUFFLE1BQUtBLEdBQUUsT0FBS2dDO0FBQUcsSUFBQVMsR0FBRSxjQUFZVDtBQUFFLFdBQU8sR0FBR0wsSUFBRWUsRUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdmLElBQUVLLElBQUVVLElBQUU7QUFBQyxJQUFBVixLQUFFQSxHQUFFO0FBQVksUUFBRyxTQUFPQSxPQUFJQSxLQUFFQSxHQUFFLFFBQU8sT0FBS1UsS0FBRSxXQUFVO0FBQUMsVUFBSUQsS0FBRVQsR0FBRTtBQUFNLE1BQUFTLE1BQUdkLEdBQUU7QUFBYSxNQUFBZSxNQUFHRDtBQUFFLE1BQUFULEdBQUUsUUFBTVU7QUFBRSxTQUFHZixJQUFFZSxFQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFDclosV0FBUyxHQUFHZixJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRWYsR0FBRSxhQUFZYyxLQUFFZCxHQUFFO0FBQVUsUUFBRyxTQUFPYyxPQUFJQSxLQUFFQSxHQUFFLGFBQVlDLE9BQUlELEtBQUc7QUFBQyxVQUFJekMsS0FBRSxNQUFLVixLQUFFO0FBQUssTUFBQW9ELEtBQUVBLEdBQUU7QUFBZ0IsVUFBRyxTQUFPQSxJQUFFO0FBQUMsV0FBRTtBQUFDLGNBQUlFLEtBQUUsRUFBQyxXQUFVRixHQUFFLFdBQVUsTUFBS0EsR0FBRSxNQUFLLEtBQUlBLEdBQUUsS0FBSSxTQUFRQSxHQUFFLFNBQVEsVUFBU0EsR0FBRSxVQUFTLE1BQUssS0FBSTtBQUFFLG1CQUFPcEQsS0FBRVUsS0FBRVYsS0FBRXNELEtBQUV0RCxLQUFFQSxHQUFFLE9BQUtzRDtBQUFFLFVBQUFGLEtBQUVBLEdBQUU7QUFBQSxRQUFJLFNBQU8sU0FBT0E7QUFBRyxpQkFBT3BELEtBQUVVLEtBQUVWLEtBQUUwQyxLQUFFMUMsS0FBRUEsR0FBRSxPQUFLMEM7QUFBQSxNQUFDLE1BQU0sQ0FBQWhDLEtBQUVWLEtBQUUwQztBQUFFLE1BQUFVLEtBQUUsRUFBQyxXQUFVRCxHQUFFLFdBQVUsaUJBQWdCekMsSUFBRSxnQkFBZVYsSUFBRSxRQUFPbUQsR0FBRSxRQUFPLFNBQVFBLEdBQUUsUUFBTztBQUFFLE1BQUFkLEdBQUUsY0FBWWU7QUFBRTtBQUFBLElBQU07QUFBQyxJQUFBZixLQUFFZSxHQUFFO0FBQWUsYUFBT2YsS0FBRWUsR0FBRSxrQkFBZ0JWLEtBQUVMLEdBQUUsT0FDbmZLO0FBQUUsSUFBQVUsR0FBRSxpQkFBZVY7QUFBQSxFQUFDO0FBQ3BCLFdBQVMsR0FBR0wsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFFBQUl6QyxLQUFFMkIsR0FBRTtBQUFZLFNBQUc7QUFBRyxRQUFJckMsS0FBRVUsR0FBRSxpQkFBZ0I0QyxLQUFFNUMsR0FBRSxnQkFBZTJDLEtBQUUzQyxHQUFFLE9BQU87QUFBUSxRQUFHLFNBQU8yQyxJQUFFO0FBQUMsTUFBQTNDLEdBQUUsT0FBTyxVQUFRO0FBQUssVUFBSUQsS0FBRTRDLElBQUUzQixLQUFFakIsR0FBRTtBQUFLLE1BQUFBLEdBQUUsT0FBSztBQUFLLGVBQU82QyxLQUFFdEQsS0FBRTBCLEtBQUU0QixHQUFFLE9BQUs1QjtBQUFFLE1BQUE0QixLQUFFN0M7QUFBRSxVQUFJOEMsS0FBRWxCLEdBQUU7QUFBVSxlQUFPa0IsT0FBSUEsS0FBRUEsR0FBRSxhQUFZRixLQUFFRSxHQUFFLGdCQUFlRixPQUFJQyxPQUFJLFNBQU9ELEtBQUVFLEdBQUUsa0JBQWdCN0IsS0FBRTJCLEdBQUUsT0FBSzNCLElBQUU2QixHQUFFLGlCQUFlOUM7QUFBQSxJQUFHO0FBQUMsUUFBRyxTQUFPVCxJQUFFO0FBQUMsVUFBSTZCLEtBQUVuQixHQUFFO0FBQVUsTUFBQTRDLEtBQUU7QUFBRSxNQUFBQyxLQUFFN0IsS0FBRWpCLEtBQUU7QUFBSyxNQUFBNEMsS0FBRXJEO0FBQUUsU0FBRTtBQUFDLFlBQUk4QixLQUFFdUIsR0FBRSxNQUFLdkQsS0FBRXVELEdBQUU7QUFBVSxhQUFJRixLQUFFckIsUUFBS0EsSUFBRTtBQUFDLG1CQUFPeUIsT0FBSUEsS0FBRUEsR0FBRSxPQUFLO0FBQUEsWUFBQyxXQUFVekQ7QUFBQSxZQUFFLE1BQUs7QUFBQSxZQUFFLEtBQUl1RCxHQUFFO0FBQUEsWUFBSSxTQUFRQSxHQUFFO0FBQUEsWUFBUSxVQUFTQSxHQUFFO0FBQUEsWUFDdmYsTUFBSztBQUFBLFVBQUk7QUFBRyxhQUFFO0FBQUMsZ0JBQUkxQixLQUFFVSxJQUFFTixLQUFFc0I7QUFBRSxZQUFBdkIsS0FBRVk7QUFBRSxZQUFBNUMsS0FBRXNEO0FBQUUsb0JBQU9yQixHQUFFLEtBQUs7QUFBQSxjQUFBLEtBQUs7QUFBRSxnQkFBQUosS0FBRUksR0FBRTtBQUFRLG9CQUFHLGVBQWEsT0FBT0osSUFBRTtBQUFDLGtCQUFBRSxLQUFFRixHQUFFLEtBQUs3QixJQUFFK0IsSUFBRUMsRUFBQztBQUFFLHdCQUFNO0FBQUEsZ0JBQUM7QUFBQyxnQkFBQUQsS0FBRUY7QUFBRSxzQkFBTTtBQUFBLGNBQUUsS0FBSztBQUFFLGdCQUFBQSxHQUFFLFFBQU1BLEdBQUUsUUFBTSxTQUFPO0FBQUEsY0FBSSxLQUFLO0FBQUUsZ0JBQUFBLEtBQUVJLEdBQUU7QUFBUSxnQkFBQUQsS0FBRSxlQUFhLE9BQU9ILEtBQUVBLEdBQUUsS0FBSzdCLElBQUUrQixJQUFFQyxFQUFDLElBQUVIO0FBQUUsb0JBQUcsU0FBT0csTUFBRyxXQUFTQSxHQUFFLE9BQU07QUFBRSxnQkFBQUQsS0FBRU8sR0FBRSxDQUFBLEdBQUdQLElBQUVDLEVBQUM7QUFBRSxzQkFBTTtBQUFBLGNBQUUsS0FBSztBQUFFLHFCQUFHO0FBQUEsWUFBRTtBQUFBLFVBQUM7QUFBQyxtQkFBT3VCLEdBQUUsWUFBVSxNQUFJQSxHQUFFLFNBQU9oQixHQUFFLFNBQU8sSUFBR1AsS0FBRXBCLEdBQUUsU0FBUSxTQUFPb0IsS0FBRXBCLEdBQUUsVUFBUSxDQUFDMkMsRUFBQyxJQUFFdkIsR0FBRSxLQUFLdUIsRUFBQztBQUFBLFFBQUUsTUFBTSxDQUFBdkQsS0FBRSxFQUFDLFdBQVVBLElBQUUsTUFBS2dDLElBQUUsS0FBSXVCLEdBQUUsS0FBSSxTQUFRQSxHQUFFLFNBQVEsVUFBU0EsR0FBRSxVQUFTLE1BQUssS0FBSSxHQUFFLFNBQU9FLE1BQUc3QixLQUFFNkIsS0FBRXpELElBQUVXLEtBQUVvQixNQUFHMEIsS0FBRUEsR0FBRSxPQUFLekQsSUFBRXdELE1BQUd4QjtBQUNwZixRQUFBdUIsS0FBRUEsR0FBRTtBQUFLLFlBQUcsU0FBT0EsR0FBRSxLQUFHQSxLQUFFM0MsR0FBRSxPQUFPLFNBQVEsU0FBTzJDLEdBQUU7QUFBQSxZQUFXLENBQUF2QixLQUFFdUIsSUFBRUEsS0FBRXZCLEdBQUUsTUFBS0EsR0FBRSxPQUFLLE1BQUtwQixHQUFFLGlCQUFlb0IsSUFBRXBCLEdBQUUsT0FBTyxVQUFRO0FBQUEsTUFBSSxTQUFPO0FBQUcsZUFBTzZDLE9BQUk5QyxLQUFFb0I7QUFBRyxNQUFBbkIsR0FBRSxZQUFVRDtBQUFFLE1BQUFDLEdBQUUsa0JBQWdCZ0I7QUFBRSxNQUFBaEIsR0FBRSxpQkFBZTZDO0FBQUUsTUFBQWIsS0FBRWhDLEdBQUUsT0FBTztBQUFZLFVBQUcsU0FBT2dDLElBQUU7QUFBQyxRQUFBaEMsS0FBRWdDO0FBQUU7QUFBRyxVQUFBWSxNQUFHNUMsR0FBRSxNQUFLQSxLQUFFQSxHQUFFO0FBQUEsZUFBV0EsT0FBSWdDO0FBQUEsTUFBRSxNQUFNLFVBQU8xQyxPQUFJVSxHQUFFLE9BQU8sUUFBTTtBQUFHLFlBQUk0QztBQUFFLE1BQUFqQixHQUFFLFFBQU1pQjtBQUFFLE1BQUFqQixHQUFFLGdCQUFjUjtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQzlWLFdBQVMsR0FBR1EsSUFBRUssSUFBRVUsSUFBRTtBQUFDLElBQUFmLEtBQUVLLEdBQUU7QUFBUSxJQUFBQSxHQUFFLFVBQVE7QUFBSyxRQUFHLFNBQU9MLEdBQUUsTUFBSUssS0FBRSxHQUFFQSxLQUFFTCxHQUFFLFFBQU9LLE1BQUk7QUFBQyxVQUFJUyxLQUFFZCxHQUFFSyxFQUFDLEdBQUVoQyxLQUFFeUMsR0FBRTtBQUFTLFVBQUcsU0FBT3pDLElBQUU7QUFBQyxRQUFBeUMsR0FBRSxXQUFTO0FBQUssUUFBQUEsS0FBRUM7QUFBRSxZQUFHLGVBQWEsT0FBTzFDLEdBQUUsT0FBTSxNQUFNa0IsR0FBRSxLQUFJbEIsRUFBQyxDQUFDO0FBQUUsUUFBQUEsR0FBRSxLQUFLeUMsRUFBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRTtBQUFFLFdBQVMsR0FBR2QsSUFBRTtBQUFDLFFBQUdBLE9BQUksR0FBRyxPQUFNLE1BQU1ULEdBQUUsR0FBRyxDQUFDO0FBQUUsV0FBT1M7QUFBQSxFQUFDO0FBQ25TLFdBQVMsR0FBR0EsSUFBRUssSUFBRTtBQUFDLElBQUFFLEdBQUUsSUFBR0YsRUFBQztBQUFFLElBQUFFLEdBQUUsSUFBR1AsRUFBQztBQUFFLElBQUFPLEdBQUUsSUFBRyxFQUFFO0FBQUUsSUFBQVAsS0FBRUssR0FBRTtBQUFTLFlBQU9MLElBQUM7QUFBQSxNQUFFLEtBQUs7QUFBQSxNQUFFLEtBQUs7QUFBRyxRQUFBSyxNQUFHQSxLQUFFQSxHQUFFLG1CQUFpQkEsR0FBRSxlQUFhLEdBQUcsTUFBSyxFQUFFO0FBQUU7QUFBQSxNQUFNO0FBQVEsUUFBQUwsS0FBRSxNQUFJQSxLQUFFSyxHQUFFLGFBQVdBLElBQUVBLEtBQUVMLEdBQUUsZ0JBQWMsTUFBS0EsS0FBRUEsR0FBRSxTQUFRSyxLQUFFLEdBQUdBLElBQUVMLEVBQUM7QUFBQSxJQUFDO0FBQUMsSUFBQUksR0FBRSxFQUFFO0FBQUUsSUFBQUcsR0FBRSxJQUFHRixFQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFDLElBQUFELEdBQUUsRUFBRTtBQUFFLElBQUFBLEdBQUUsRUFBRTtBQUFFLElBQUFBLEdBQUUsRUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdKLElBQUU7QUFBQyxPQUFHLEdBQUcsT0FBTztBQUFFLFFBQUlLLEtBQUUsR0FBRyxHQUFHLE9BQU87QUFBRSxRQUFJVSxLQUFFLEdBQUdWLElBQUVMLEdBQUUsSUFBSTtBQUFFLElBQUFLLE9BQUlVLE9BQUlSLEdBQUUsSUFBR1AsRUFBQyxHQUFFTyxHQUFFLElBQUdRLEVBQUM7QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHZixJQUFFO0FBQUMsT0FBRyxZQUFVQSxPQUFJSSxHQUFFLEVBQUUsR0FBRUEsR0FBRSxFQUFFO0FBQUEsRUFBRTtBQUFDLE1BQUlRLEtBQUUsR0FBRyxDQUFDO0FBQ3paLFdBQVMsR0FBR1osSUFBRTtBQUFDLGFBQVFLLEtBQUVMLElBQUUsU0FBT0ssTUFBRztBQUFDLFVBQUcsT0FBS0EsR0FBRSxLQUFJO0FBQUMsWUFBSVUsS0FBRVYsR0FBRTtBQUFjLFlBQUcsU0FBT1UsT0FBSUEsS0FBRUEsR0FBRSxZQUFXLFNBQU9BLE1BQUcsU0FBT0EsR0FBRSxRQUFNLFNBQU9BLEdBQUUsTUFBTSxRQUFPVjtBQUFBLE1BQUMsV0FBUyxPQUFLQSxHQUFFLE9BQUssV0FBU0EsR0FBRSxjQUFjLGFBQVk7QUFBQyxZQUFHLE9BQUtBLEdBQUUsUUFBTSxLQUFLLFFBQU9BO0FBQUEsTUFBQyxXQUFTLFNBQU9BLEdBQUUsT0FBTTtBQUFDLFFBQUFBLEdBQUUsTUFBTSxTQUFPQTtBQUFFLFFBQUFBLEtBQUVBLEdBQUU7QUFBTTtBQUFBLE1BQVE7QUFBQyxVQUFHQSxPQUFJTCxHQUFFO0FBQU0sYUFBSyxTQUFPSyxHQUFFLFdBQVM7QUFBQyxZQUFHLFNBQU9BLEdBQUUsVUFBUUEsR0FBRSxXQUFTTCxHQUFFLFFBQU87QUFBSyxRQUFBSyxLQUFFQSxHQUFFO0FBQUEsTUFBTTtBQUFDLE1BQUFBLEdBQUUsUUFBUSxTQUFPQSxHQUFFO0FBQU8sTUFBQUEsS0FBRUEsR0FBRTtBQUFBLElBQU87QUFBQyxXQUFPO0FBQUEsRUFBSTtBQUFDLE1BQUksS0FBRyxDQUFFO0FBQ3ZjLFdBQVMsS0FBSTtBQUFDLGFBQVFMLEtBQUUsR0FBRUEsS0FBRSxHQUFHLFFBQU9BLEtBQUksSUFBR0EsRUFBQyxFQUFFLGdDQUE4QjtBQUFLLE9BQUcsU0FBTztBQUFBLEVBQUM7QUFBQyxNQUFJLEtBQUcsR0FBRyx3QkFBdUIsS0FBRyxHQUFHLHlCQUF3QixLQUFHLEdBQUVhLEtBQUUsTUFBS00sS0FBRSxNQUFLaEUsS0FBRSxNQUFLLEtBQUcsT0FBRyxLQUFHLE9BQUcsS0FBRyxHQUFFLEtBQUc7QUFBRSxXQUFTQyxLQUFHO0FBQUMsVUFBTSxNQUFNbUMsR0FBRSxHQUFHLENBQUM7QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHUyxJQUFFSyxJQUFFO0FBQUMsUUFBRyxTQUFPQSxHQUFFLFFBQU07QUFBRyxhQUFRVSxLQUFFLEdBQUVBLEtBQUVWLEdBQUUsVUFBUVUsS0FBRWYsR0FBRSxRQUFPZSxLQUFJLEtBQUcsQ0FBQ3lILElBQUd4SSxHQUFFZSxFQUFDLEdBQUVWLEdBQUVVLEVBQUMsQ0FBQyxFQUFFLFFBQU07QUFBRyxXQUFNO0FBQUEsRUFBRTtBQUNoVyxXQUFTLEdBQUdmLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFVixJQUFFO0FBQUMsU0FBR0E7QUFBRSxJQUFBa0QsS0FBRVI7QUFBRSxJQUFBQSxHQUFFLGdCQUFjO0FBQUssSUFBQUEsR0FBRSxjQUFZO0FBQUssSUFBQUEsR0FBRSxRQUFNO0FBQUUsT0FBRyxVQUFRLFNBQU9MLE1BQUcsU0FBT0EsR0FBRSxnQkFBYyxLQUFHO0FBQUcsSUFBQUEsS0FBRWUsR0FBRUQsSUFBRXpDLEVBQUM7QUFBRSxRQUFHLElBQUc7QUFBQyxNQUFBVixLQUFFO0FBQUUsU0FBRTtBQUFDLGFBQUc7QUFBRyxhQUFHO0FBQUUsWUFBRyxNQUFJQSxHQUFFLE9BQU0sTUFBTTRCLEdBQUUsR0FBRyxDQUFDO0FBQUUsUUFBQTVCLE1BQUc7QUFBRSxRQUFBUixLQUFFZ0UsS0FBRTtBQUFLLFFBQUFkLEdBQUUsY0FBWTtBQUFLLFdBQUcsVUFBUTtBQUFHLFFBQUFMLEtBQUVlLEdBQUVELElBQUV6QyxFQUFDO0FBQUEsTUFBQyxTQUFPO0FBQUEsSUFBRztBQUFDLE9BQUcsVUFBUTtBQUFHLElBQUFnQyxLQUFFLFNBQU9jLE1BQUcsU0FBT0EsR0FBRTtBQUFLLFNBQUc7QUFBRSxJQUFBaEUsS0FBRWdFLEtBQUVOLEtBQUU7QUFBSyxTQUFHO0FBQUcsUUFBR1IsR0FBRSxPQUFNLE1BQU1kLEdBQUUsR0FBRyxDQUFDO0FBQUUsV0FBT1M7QUFBQSxFQUFDO0FBQUMsV0FBUyxLQUFJO0FBQUMsUUFBSUEsS0FBRSxNQUFJO0FBQUcsU0FBRztBQUFFLFdBQU9BO0FBQUEsRUFBQztBQUMvWSxXQUFTLEtBQUk7QUFBQyxRQUFJQSxLQUFFLEVBQUMsZUFBYyxNQUFLLFdBQVUsTUFBSyxXQUFVLE1BQUssT0FBTSxNQUFLLE1BQUssS0FBSTtBQUFFLGFBQU83QyxLQUFFMEQsR0FBRSxnQkFBYzFELEtBQUU2QyxLQUFFN0MsS0FBRUEsR0FBRSxPQUFLNkM7QUFBRSxXQUFPN0M7QUFBQSxFQUFDO0FBQUMsV0FBUyxLQUFJO0FBQUMsUUFBRyxTQUFPZ0UsSUFBRTtBQUFDLFVBQUluQixLQUFFYSxHQUFFO0FBQVUsTUFBQWIsS0FBRSxTQUFPQSxLQUFFQSxHQUFFLGdCQUFjO0FBQUEsSUFBSSxNQUFNLENBQUFBLEtBQUVtQixHQUFFO0FBQUssUUFBSWQsS0FBRSxTQUFPbEQsS0FBRTBELEdBQUUsZ0JBQWMxRCxHQUFFO0FBQUssUUFBRyxTQUFPa0QsR0FBRSxDQUFBbEQsS0FBRWtELElBQUVjLEtBQUVuQjtBQUFBLFNBQU07QUFBQyxVQUFHLFNBQU9BLEdBQUUsT0FBTSxNQUFNVCxHQUFFLEdBQUcsQ0FBQztBQUFFLE1BQUE0QixLQUFFbkI7QUFBRSxNQUFBQSxLQUFFLEVBQUMsZUFBY21CLEdBQUUsZUFBYyxXQUFVQSxHQUFFLFdBQVUsV0FBVUEsR0FBRSxXQUFVLE9BQU1BLEdBQUUsT0FBTSxNQUFLLEtBQUk7QUFBRSxlQUFPaEUsS0FBRTBELEdBQUUsZ0JBQWMxRCxLQUFFNkMsS0FBRTdDLEtBQUVBLEdBQUUsT0FBSzZDO0FBQUEsSUFBQztBQUFDLFdBQU83QztBQUFBLEVBQUM7QUFDamUsV0FBUyxHQUFHNkMsSUFBRUssSUFBRTtBQUFDLFdBQU0sZUFBYSxPQUFPQSxLQUFFQSxHQUFFTCxFQUFDLElBQUVLO0FBQUEsRUFBQztBQUNuRCxXQUFTLEdBQUdMLElBQUU7QUFBQyxRQUFJSyxLQUFFLEdBQUksR0FBQ1UsS0FBRVYsR0FBRTtBQUFNLFFBQUcsU0FBT1UsR0FBRSxPQUFNLE1BQU14QixHQUFFLEdBQUcsQ0FBQztBQUFFLElBQUF3QixHQUFFLHNCQUFvQmY7QUFBRSxRQUFJYyxLQUFFSyxJQUFFOUMsS0FBRXlDLEdBQUUsV0FBVW5ELEtBQUVvRCxHQUFFO0FBQVEsUUFBRyxTQUFPcEQsSUFBRTtBQUFDLFVBQUcsU0FBT1UsSUFBRTtBQUFDLFlBQUk0QyxLQUFFNUMsR0FBRTtBQUFLLFFBQUFBLEdBQUUsT0FBS1YsR0FBRTtBQUFLLFFBQUFBLEdBQUUsT0FBS3NEO0FBQUEsTUFBQztBQUFDLE1BQUFILEdBQUUsWUFBVXpDLEtBQUVWO0FBQUUsTUFBQW9ELEdBQUUsVUFBUTtBQUFBLElBQUk7QUFBQyxRQUFHLFNBQU8xQyxJQUFFO0FBQUMsTUFBQVYsS0FBRVUsR0FBRTtBQUFLLE1BQUF5QyxLQUFFQSxHQUFFO0FBQVUsVUFBSUUsS0FBRUMsS0FBRSxNQUFLN0MsS0FBRSxNQUFLaUIsS0FBRTFCO0FBQUUsU0FBRTtBQUFDLFlBQUl1RCxLQUFFN0IsR0FBRTtBQUFLLGFBQUksS0FBRzZCLFFBQUtBLEdBQUUsVUFBTzlDLE9BQUlBLEtBQUVBLEdBQUUsT0FBSyxFQUFDLE1BQUssR0FBRSxRQUFPaUIsR0FBRSxRQUFPLGVBQWNBLEdBQUUsZUFBYyxZQUFXQSxHQUFFLFlBQVcsTUFBSyxLQUFJLElBQUd5QixLQUFFekIsR0FBRSxnQkFBY0EsR0FBRSxhQUFXVyxHQUFFYyxJQUFFekIsR0FBRSxNQUFNO0FBQUEsYUFBTTtBQUFDLGNBQUlHLEtBQUU7QUFBQSxZQUFDLE1BQUswQjtBQUFBLFlBQUUsUUFBTzdCLEdBQUU7QUFBQSxZQUFPLGVBQWNBLEdBQUU7QUFBQSxZQUNuZ0IsWUFBV0EsR0FBRTtBQUFBLFlBQVcsTUFBSztBQUFBLFVBQUk7QUFBRSxtQkFBT2pCLE1BQUc0QyxLQUFFNUMsS0FBRW9CLElBQUV5QixLQUFFSCxNQUFHMUMsS0FBRUEsR0FBRSxPQUFLb0I7QUFBRSxVQUFBcUIsR0FBRSxTQUFPSztBQUFFLGdCQUFJQTtBQUFBLFFBQUM7QUFBQyxRQUFBN0IsS0FBRUEsR0FBRTtBQUFBLE1BQUksU0FBTyxTQUFPQSxNQUFHQSxPQUFJMUI7QUFBRyxlQUFPUyxLQUFFNkMsS0FBRUgsS0FBRTFDLEdBQUUsT0FBSzRDO0FBQUUsTUFBQXdILElBQUcxSCxJQUFFVCxHQUFFLGFBQWEsTUFBSSxLQUFHO0FBQUksTUFBQUEsR0FBRSxnQkFBY1M7QUFBRSxNQUFBVCxHQUFFLFlBQVVZO0FBQUUsTUFBQVosR0FBRSxZQUFVakM7QUFBRSxNQUFBMkMsR0FBRSxvQkFBa0JEO0FBQUEsSUFBQztBQUFDLElBQUFkLEtBQUVlLEdBQUU7QUFBWSxRQUFHLFNBQU9mLElBQUU7QUFBQyxNQUFBM0IsS0FBRTJCO0FBQUU7QUFBRyxRQUFBckMsS0FBRVUsR0FBRSxNQUFLd0MsR0FBRSxTQUFPbEQsSUFBRSxNQUFJQSxJQUFFVSxLQUFFQSxHQUFFO0FBQUEsYUFBV0EsT0FBSTJCO0FBQUEsSUFBRSxNQUFNLFVBQU8zQixPQUFJMEMsR0FBRSxRQUFNO0FBQUcsV0FBTSxDQUFDVixHQUFFLGVBQWNVLEdBQUUsUUFBUTtBQUFBLEVBQUM7QUFDOVgsV0FBUyxHQUFHZixJQUFFO0FBQUMsUUFBSUssS0FBRSxHQUFJLEdBQUNVLEtBQUVWLEdBQUU7QUFBTSxRQUFHLFNBQU9VLEdBQUUsT0FBTSxNQUFNeEIsR0FBRSxHQUFHLENBQUM7QUFBRSxJQUFBd0IsR0FBRSxzQkFBb0JmO0FBQUUsUUFBSWMsS0FBRUMsR0FBRSxVQUFTMUMsS0FBRTBDLEdBQUUsU0FBUXBELEtBQUUwQyxHQUFFO0FBQWMsUUFBRyxTQUFPaEMsSUFBRTtBQUFDLE1BQUEwQyxHQUFFLFVBQVE7QUFBSyxVQUFJRSxLQUFFNUMsS0FBRUEsR0FBRTtBQUFLO0FBQUcsUUFBQVYsS0FBRXFDLEdBQUVyQyxJQUFFc0QsR0FBRSxNQUFNLEdBQUVBLEtBQUVBLEdBQUU7QUFBQSxhQUFXQSxPQUFJNUM7QUFBRyxNQUFBbUssSUFBRzdLLElBQUUwQyxHQUFFLGFBQWEsTUFBSSxLQUFHO0FBQUksTUFBQUEsR0FBRSxnQkFBYzFDO0FBQUUsZUFBTzBDLEdBQUUsY0FBWUEsR0FBRSxZQUFVMUM7QUFBRyxNQUFBb0QsR0FBRSxvQkFBa0JwRDtBQUFBLElBQUM7QUFBQyxXQUFNLENBQUNBLElBQUVtRCxFQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFBLEVBQUE7QUFDblcsV0FBUyxHQUFHZCxJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRUYsSUFBRUMsS0FBRSxHQUFFLEdBQUd6QyxLQUFFZ0MsR0FBRyxHQUFDMUMsS0FBRSxDQUFDNkssSUFBRzFILEdBQUUsZUFBY3pDLEVBQUM7QUFBRSxJQUFBVixPQUFJbUQsR0FBRSxnQkFBY3pDLElBQUUsS0FBRztBQUFJLElBQUF5QyxLQUFFQSxHQUFFO0FBQU0sT0FBRyxHQUFHLEtBQUssTUFBS0MsSUFBRUQsSUFBRWQsRUFBQyxHQUFFLENBQUNBLEVBQUMsQ0FBQztBQUFFLFFBQUdjLEdBQUUsZ0JBQWNULE1BQUcxQyxNQUFHLFNBQU9SLE1BQUdBLEdBQUUsY0FBYyxNQUFJLEdBQUU7QUFBQyxNQUFBNEQsR0FBRSxTQUFPO0FBQUssU0FBRyxHQUFFLEdBQUcsS0FBSyxNQUFLQSxJQUFFRCxJQUFFekMsSUFBRWdDLEVBQUMsR0FBRSxRQUFPLElBQUk7QUFBRSxVQUFHLFNBQU9lLEdBQUUsT0FBTSxNQUFNN0IsR0FBRSxHQUFHLENBQUM7QUFBRSxhQUFLLEtBQUcsT0FBSyxHQUFHd0IsSUFBRVYsSUFBRWhDLEVBQUM7QUFBQSxJQUFDO0FBQUMsV0FBT0E7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHMkIsSUFBRUssSUFBRVUsSUFBRTtBQUFDLElBQUFmLEdBQUUsU0FBTztBQUFNLElBQUFBLEtBQUUsRUFBQyxhQUFZSyxJQUFFLE9BQU1VLEdBQUM7QUFBRSxJQUFBVixLQUFFUSxHQUFFO0FBQVksYUFBT1IsTUFBR0EsS0FBRSxFQUFDLFlBQVcsTUFBSyxRQUFPLEtBQUksR0FBRVEsR0FBRSxjQUFZUixJQUFFQSxHQUFFLFNBQU8sQ0FBQ0wsRUFBQyxNQUFJZSxLQUFFVixHQUFFLFFBQU8sU0FBT1UsS0FBRVYsR0FBRSxTQUFPLENBQUNMLEVBQUMsSUFBRWUsR0FBRSxLQUFLZixFQUFDO0FBQUEsRUFBRTtBQUNsZixXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUVELElBQUU7QUFBQyxJQUFBVCxHQUFFLFFBQU1VO0FBQUUsSUFBQVYsR0FBRSxjQUFZUztBQUFFLE9BQUdULEVBQUMsS0FBRyxHQUFHTCxFQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0EsSUFBRUssSUFBRVUsSUFBRTtBQUFDLFdBQU9BLEdBQUUsV0FBVTtBQUFDLFNBQUdWLEVBQUMsS0FBRyxHQUFHTCxFQUFDO0FBQUEsSUFBQyxDQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFFBQUlLLEtBQUVMLEdBQUU7QUFBWSxJQUFBQSxLQUFFQSxHQUFFO0FBQU0sUUFBRztBQUFDLFVBQUllLEtBQUVWLEdBQUM7QUFBRyxhQUFNLENBQUNtSSxJQUFHeEksSUFBRWUsRUFBQztBQUFBLElBQUMsU0FBT0QsSUFBRTtBQUFDLGFBQU07QUFBQSxJQUFFO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR2QsSUFBRTtBQUFDLFFBQUlLLEtBQUUsR0FBR0wsSUFBRSxDQUFDO0FBQUUsYUFBT0ssTUFBRyxHQUFHQSxJQUFFTCxJQUFFLEdBQUUsRUFBRTtBQUFBLEVBQUM7QUFDbFEsV0FBUyxHQUFHQSxJQUFFO0FBQUMsUUFBSUssS0FBRSxHQUFJO0FBQUMsbUJBQWEsT0FBT0wsT0FBSUEsS0FBRUEsR0FBQztBQUFJLElBQUFLLEdBQUUsZ0JBQWNBLEdBQUUsWUFBVUw7QUFBRSxJQUFBQSxLQUFFLEVBQUMsU0FBUSxNQUFLLGFBQVksTUFBSyxPQUFNLEdBQUUsVUFBUyxNQUFLLHFCQUFvQixJQUFHLG1CQUFrQkEsR0FBQztBQUFFLElBQUFLLEdBQUUsUUFBTUw7QUFBRSxJQUFBQSxLQUFFQSxHQUFFLFdBQVMsR0FBRyxLQUFLLE1BQUthLElBQUViLEVBQUM7QUFBRSxXQUFNLENBQUNLLEdBQUUsZUFBY0wsRUFBQztBQUFBLEVBQUM7QUFDNVAsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFO0FBQUMsSUFBQWQsS0FBRSxFQUFDLEtBQUlBLElBQUUsUUFBT0ssSUFBRSxTQUFRVSxJQUFFLE1BQUtELElBQUUsTUFBSyxLQUFJO0FBQUUsSUFBQVQsS0FBRVEsR0FBRTtBQUFZLGFBQU9SLE1BQUdBLEtBQUUsRUFBQyxZQUFXLE1BQUssUUFBTyxLQUFJLEdBQUVRLEdBQUUsY0FBWVIsSUFBRUEsR0FBRSxhQUFXTCxHQUFFLE9BQUtBLE9BQUllLEtBQUVWLEdBQUUsWUFBVyxTQUFPVSxLQUFFVixHQUFFLGFBQVdMLEdBQUUsT0FBS0EsTUFBR2MsS0FBRUMsR0FBRSxNQUFLQSxHQUFFLE9BQUtmLElBQUVBLEdBQUUsT0FBS2MsSUFBRVQsR0FBRSxhQUFXTDtBQUFJLFdBQU9BO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFDLFdBQU8sR0FBRSxFQUFHO0FBQUEsRUFBYTtBQUFDLFdBQVMsR0FBR0EsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFFBQUl6QyxLQUFFLEdBQUU7QUFBRyxJQUFBd0MsR0FBRSxTQUFPYjtBQUFFLElBQUEzQixHQUFFLGdCQUFjLEdBQUcsSUFBRWdDLElBQUVVLElBQUUsUUFBTyxXQUFTRCxLQUFFLE9BQUtBLEVBQUM7QUFBQSxFQUFDO0FBQzlZLFdBQVMsR0FBR2QsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFFBQUl6QyxLQUFFO0FBQUssSUFBQXlDLEtBQUUsV0FBU0EsS0FBRSxPQUFLQTtBQUFFLFFBQUluRCxLQUFFO0FBQU8sUUFBRyxTQUFPd0QsSUFBRTtBQUFDLFVBQUlGLEtBQUVFLEdBQUU7QUFBYyxNQUFBeEQsS0FBRXNELEdBQUU7QUFBUSxVQUFHLFNBQU9ILE1BQUcsR0FBR0EsSUFBRUcsR0FBRSxJQUFJLEdBQUU7QUFBQyxRQUFBNUMsR0FBRSxnQkFBYyxHQUFHZ0MsSUFBRVUsSUFBRXBELElBQUVtRCxFQUFDO0FBQUU7QUFBQSxNQUFNO0FBQUEsSUFBQztBQUFDLElBQUFELEdBQUUsU0FBT2I7QUFBRSxJQUFBM0IsR0FBRSxnQkFBYyxHQUFHLElBQUVnQyxJQUFFVSxJQUFFcEQsSUFBRW1ELEVBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHZCxJQUFFSyxJQUFFO0FBQUMsV0FBTyxHQUFHLFNBQVEsR0FBRUwsSUFBRUssRUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdMLElBQUVLLElBQUU7QUFBQyxXQUFPLEdBQUcsTUFBSyxHQUFFTCxJQUFFSyxFQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0wsSUFBRUssSUFBRTtBQUFDLFdBQU8sR0FBRyxHQUFFLEdBQUVMLElBQUVLLEVBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHTCxJQUFFSyxJQUFFO0FBQUMsV0FBTyxHQUFHLEdBQUUsR0FBRUwsSUFBRUssRUFBQztBQUFBLEVBQUM7QUFDaFgsV0FBUyxHQUFHTCxJQUFFSyxJQUFFO0FBQUMsUUFBRyxlQUFhLE9BQU9BLEdBQUUsUUFBT0wsS0FBRUEsR0FBQyxHQUFHSyxHQUFFTCxFQUFDLEdBQUUsV0FBVTtBQUFDLE1BQUFLLEdBQUUsSUFBSTtBQUFBLElBQUM7QUFBRSxRQUFHLFNBQU9BLE1BQUcsV0FBU0EsR0FBRSxRQUFPTCxLQUFFQSxHQUFHLEdBQUNLLEdBQUUsVUFBUUwsSUFBRSxXQUFVO0FBQUMsTUFBQUssR0FBRSxVQUFRO0FBQUEsSUFBSTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdMLElBQUVLLElBQUVVLElBQUU7QUFBQyxJQUFBQSxLQUFFLFNBQU9BLE1BQUcsV0FBU0EsS0FBRUEsR0FBRSxPQUFPLENBQUNmLEVBQUMsQ0FBQyxJQUFFO0FBQUssV0FBTyxHQUFHLEdBQUUsR0FBRSxHQUFHLEtBQUssTUFBS0ssSUFBRUwsRUFBQyxHQUFFZSxFQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFBLEVBQUE7QUFBRSxXQUFTLEdBQUdmLElBQUVLLElBQUU7QUFBQyxRQUFJVSxLQUFFO0FBQUssSUFBQVYsS0FBRSxXQUFTQSxLQUFFLE9BQUtBO0FBQUUsUUFBSVMsS0FBRUMsR0FBRTtBQUFjLFFBQUcsU0FBT0QsTUFBRyxTQUFPVCxNQUFHLEdBQUdBLElBQUVTLEdBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBT0EsR0FBRSxDQUFDO0FBQUUsSUFBQUMsR0FBRSxnQkFBYyxDQUFDZixJQUFFSyxFQUFDO0FBQUUsV0FBT0w7QUFBQSxFQUFDO0FBQzdaLFdBQVMsR0FBR0EsSUFBRUssSUFBRTtBQUFDLFFBQUlVLEtBQUU7QUFBSyxJQUFBVixLQUFFLFdBQVNBLEtBQUUsT0FBS0E7QUFBRSxRQUFJUyxLQUFFQyxHQUFFO0FBQWMsUUFBRyxTQUFPRCxNQUFHLFNBQU9ULE1BQUcsR0FBR0EsSUFBRVMsR0FBRSxDQUFDLENBQUMsRUFBRSxRQUFPQSxHQUFFLENBQUM7QUFBRSxJQUFBZCxLQUFFQSxHQUFDO0FBQUcsSUFBQWUsR0FBRSxnQkFBYyxDQUFDZixJQUFFSyxFQUFDO0FBQUUsV0FBT0w7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBRyxPQUFLLEtBQUcsSUFBSSxRQUFPZixHQUFFLGNBQVlBLEdBQUUsWUFBVSxPQUFHLEtBQUcsT0FBSUEsR0FBRSxnQkFBY2U7QUFBRSxJQUFBeUgsSUFBR3pILElBQUVWLEVBQUMsTUFBSVUsS0FBRSxHQUFFLEdBQUdGLEdBQUUsU0FBT0UsSUFBRSxNQUFJQSxJQUFFZixHQUFFLFlBQVU7QUFBSSxXQUFPSztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdMLElBQUVLLElBQUU7QUFBQyxRQUFJVSxLQUFFYjtBQUFFLElBQUFBLEtBQUUsTUFBSWEsTUFBRyxJQUFFQSxLQUFFQSxLQUFFO0FBQUUsSUFBQWYsR0FBRSxJQUFFO0FBQUUsUUFBSWMsS0FBRSxHQUFHO0FBQVcsT0FBRyxhQUFXLENBQUE7QUFBRyxRQUFHO0FBQUMsTUFBQWQsR0FBRSxLQUFFLEdBQUVLLEdBQUM7QUFBQSxJQUFFLFVBQUM7QUFBUSxNQUFBSCxLQUFFYSxJQUFFLEdBQUcsYUFBV0Q7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFDLFdBQU8sR0FBSSxFQUFDO0FBQUEsRUFBYTtBQUMxZCxXQUFTLEdBQUdkLElBQUVLLElBQUVVLElBQUU7QUFBQyxRQUFJRCxLQUFFLEdBQUdkLEVBQUM7QUFBRSxJQUFBZSxLQUFFLEVBQUMsTUFBS0QsSUFBRSxRQUFPQyxJQUFFLGVBQWMsT0FBRyxZQUFXLE1BQUssTUFBSyxLQUFJO0FBQUUsUUFBRyxHQUFHZixFQUFDLEVBQUUsSUFBR0ssSUFBRVUsRUFBQztBQUFBLGFBQVVBLEtBQUUsR0FBR2YsSUFBRUssSUFBRVUsSUFBRUQsRUFBQyxHQUFFLFNBQU9DLElBQUU7QUFBQyxVQUFJMUMsS0FBRWdELEdBQUc7QUFBQyxTQUFHTixJQUFFZixJQUFFYyxJQUFFekMsRUFBQztBQUFFLFNBQUcwQyxJQUFFVixJQUFFUyxFQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFDL0ssV0FBUyxHQUFHZCxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBSUQsS0FBRSxHQUFHZCxFQUFDLEdBQUUzQixLQUFFLEVBQUMsTUFBS3lDLElBQUUsUUFBT0MsSUFBRSxlQUFjLE9BQUcsWUFBVyxNQUFLLE1BQUssS0FBSTtBQUFFLFFBQUcsR0FBR2YsRUFBQyxFQUFFLElBQUdLLElBQUVoQyxFQUFDO0FBQUEsU0FBTTtBQUFDLFVBQUlWLEtBQUVxQyxHQUFFO0FBQVUsVUFBRyxNQUFJQSxHQUFFLFVBQVEsU0FBT3JDLE1BQUcsTUFBSUEsR0FBRSxXQUFTQSxLQUFFMEMsR0FBRSxxQkFBb0IsU0FBTzFDLElBQUcsS0FBRztBQUFDLFlBQUlzRCxLQUFFWixHQUFFLG1CQUFrQlcsS0FBRXJELEdBQUVzRCxJQUFFRixFQUFDO0FBQUUsUUFBQTFDLEdBQUUsZ0JBQWM7QUFBRyxRQUFBQSxHQUFFLGFBQVcyQztBQUFFLFlBQUd3SCxJQUFHeEgsSUFBRUMsRUFBQyxHQUFFO0FBQUMsY0FBSTdDLEtBQUVpQyxHQUFFO0FBQVksbUJBQU9qQyxNQUFHQyxHQUFFLE9BQUtBLElBQUUsR0FBR2dDLEVBQUMsTUFBSWhDLEdBQUUsT0FBS0QsR0FBRSxNQUFLQSxHQUFFLE9BQUtDO0FBQUcsVUFBQWdDLEdBQUUsY0FBWWhDO0FBQUU7QUFBQSxRQUFNO0FBQUEsTUFBQyxTQUFPZ0IsSUFBRTtBQUFBLE1BQUEsVUFBRTtBQUFBLE1BQU87QUFBRSxNQUFBMEIsS0FBRSxHQUFHZixJQUFFSyxJQUFFaEMsSUFBRXlDLEVBQUM7QUFBRSxlQUFPQyxPQUFJMUMsS0FBRWdELEdBQUcsR0FBQyxHQUFHTixJQUFFZixJQUFFYyxJQUFFekMsRUFBQyxHQUFFLEdBQUcwQyxJQUFFVixJQUFFUyxFQUFDO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFDL2MsV0FBUyxHQUFHZCxJQUFFO0FBQUMsUUFBSUssS0FBRUwsR0FBRTtBQUFVLFdBQU9BLE9BQUlhLE1BQUcsU0FBT1IsTUFBR0EsT0FBSVE7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHYixJQUFFSyxJQUFFO0FBQUMsU0FBRyxLQUFHO0FBQUcsUUFBSVUsS0FBRWYsR0FBRTtBQUFRLGFBQU9lLEtBQUVWLEdBQUUsT0FBS0EsTUFBR0EsR0FBRSxPQUFLVSxHQUFFLE1BQUtBLEdBQUUsT0FBS1Y7QUFBRyxJQUFBTCxHQUFFLFVBQVFLO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0wsSUFBRUssSUFBRVUsSUFBRTtBQUFDLFFBQUcsT0FBS0EsS0FBRSxVQUFTO0FBQUMsVUFBSUQsS0FBRVQsR0FBRTtBQUFNLE1BQUFTLE1BQUdkLEdBQUU7QUFBYSxNQUFBZSxNQUFHRDtBQUFFLE1BQUFULEdBQUUsUUFBTVU7QUFBRSxTQUFHZixJQUFFZSxFQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFDOVAsTUFBSSxLQUFHLEVBQUMsYUFBWSxJQUFHLGFBQVkzRCxJQUFFLFlBQVdBLElBQUUsV0FBVUEsSUFBRSxxQkFBb0JBLElBQUUsb0JBQW1CQSxJQUFFLGlCQUFnQkEsSUFBRSxTQUFRQSxJQUFFLFlBQVdBLElBQUUsUUFBT0EsSUFBRSxVQUFTQSxJQUFFLGVBQWNBLElBQUUsa0JBQWlCQSxJQUFFLGVBQWNBLElBQUUsa0JBQWlCQSxJQUFFLHNCQUFxQkEsSUFBRSxPQUFNQSxJQUFFLDBCQUF5QixNQUFFLEdBQUUsS0FBRyxFQUFDLGFBQVksSUFBRyxhQUFZLFNBQVM0QyxJQUFFSyxJQUFFO0FBQUMsT0FBSSxFQUFDLGdCQUFjLENBQUNMLElBQUUsV0FBU0ssS0FBRSxPQUFLQSxFQUFDO0FBQUUsV0FBT0w7QUFBQSxFQUFDLEdBQUUsWUFBVyxJQUFHLFdBQVUsSUFBRyxxQkFBb0IsU0FBU0EsSUFBRUssSUFBRVUsSUFBRTtBQUFDLElBQUFBLEtBQUUsU0FBT0EsTUFBRyxXQUFTQSxLQUFFQSxHQUFFLE9BQU8sQ0FBQ2YsRUFBQyxDQUFDLElBQUU7QUFBSyxXQUFPO0FBQUEsTUFBRztBQUFBLE1BQzNmO0FBQUEsTUFBRSxHQUFHLEtBQUssTUFBS0ssSUFBRUwsRUFBQztBQUFBLE1BQUVlO0FBQUEsSUFBQztBQUFBLEVBQUMsR0FBRSxpQkFBZ0IsU0FBU2YsSUFBRUssSUFBRTtBQUFDLFdBQU8sR0FBRyxTQUFRLEdBQUVMLElBQUVLLEVBQUM7QUFBQSxFQUFDLEdBQUUsb0JBQW1CLFNBQVNMLElBQUVLLElBQUU7QUFBQyxXQUFPLEdBQUcsR0FBRSxHQUFFTCxJQUFFSyxFQUFDO0FBQUEsRUFBQyxHQUFFLFNBQVEsU0FBU0wsSUFBRUssSUFBRTtBQUFDLFFBQUlVLEtBQUU7QUFBSyxJQUFBVixLQUFFLFdBQVNBLEtBQUUsT0FBS0E7QUFBRSxJQUFBTCxLQUFFQSxHQUFHO0FBQUMsSUFBQWUsR0FBRSxnQkFBYyxDQUFDZixJQUFFSyxFQUFDO0FBQUUsV0FBT0w7QUFBQSxFQUFDLEdBQUUsWUFBVyxTQUFTQSxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBSUQsS0FBRSxHQUFFO0FBQUcsSUFBQVQsS0FBRSxXQUFTVSxLQUFFQSxHQUFFVixFQUFDLElBQUVBO0FBQUUsSUFBQVMsR0FBRSxnQkFBY0EsR0FBRSxZQUFVVDtBQUFFLElBQUFMLEtBQUUsRUFBQyxTQUFRLE1BQUssYUFBWSxNQUFLLE9BQU0sR0FBRSxVQUFTLE1BQUsscUJBQW9CQSxJQUFFLG1CQUFrQkssR0FBQztBQUFFLElBQUFTLEdBQUUsUUFBTWQ7QUFBRSxJQUFBQSxLQUFFQSxHQUFFLFdBQVMsR0FBRyxLQUFLLE1BQUthLElBQUViLEVBQUM7QUFBRSxXQUFNLENBQUNjLEdBQUUsZUFBY2QsRUFBQztBQUFBLEVBQUMsR0FBRSxRQUFPLFNBQVNBLElBQUU7QUFBQyxRQUFJSyxLQUNyZjtBQUFLLElBQUFMLEtBQUUsRUFBQyxTQUFRQSxHQUFDO0FBQUUsV0FBT0ssR0FBRSxnQkFBY0w7QUFBQSxFQUFDLEdBQUUsVUFBUyxJQUFHLGVBQWMsSUFBRyxrQkFBaUIsU0FBU0EsSUFBRTtBQUFDLFdBQU8sR0FBSSxFQUFDLGdCQUFjQTtBQUFBLEVBQUMsR0FBRSxlQUFjLFdBQVU7QUFBQyxRQUFJQSxLQUFFLEdBQUcsS0FBRSxHQUFFSyxLQUFFTCxHQUFFLENBQUM7QUFBRSxJQUFBQSxLQUFFLEdBQUcsS0FBSyxNQUFLQSxHQUFFLENBQUMsQ0FBQztBQUFFLE9BQUUsRUFBRyxnQkFBY0E7QUFBRSxXQUFNLENBQUNLLElBQUVMLEVBQUM7QUFBQSxFQUFDLEdBQUUsa0JBQWlCLFdBQVU7QUFBQSxFQUFFLEdBQUMsc0JBQXFCLFNBQVNBLElBQUVLLElBQUVVLElBQUU7QUFBQyxRQUFJRCxLQUFFRCxJQUFFeEMsS0FBRSxHQUFJO0FBQUMsUUFBR29DLElBQUU7QUFBQyxVQUFHLFdBQVNNLEdBQUUsT0FBTSxNQUFNeEIsR0FBRSxHQUFHLENBQUM7QUFBRSxNQUFBd0IsS0FBRUEsR0FBRztBQUFBLElBQUEsT0FBSztBQUFDLE1BQUFBLEtBQUVWLEdBQUc7QUFBQyxVQUFHLFNBQU9lLEdBQUUsT0FBTSxNQUFNN0IsR0FBRSxHQUFHLENBQUM7QUFBRSxhQUFLLEtBQUcsT0FBSyxHQUFHdUIsSUFBRVQsSUFBRVUsRUFBQztBQUFBLElBQUM7QUFBQyxJQUFBMUMsR0FBRSxnQkFBYzBDO0FBQUUsUUFBSXBELEtBQUUsRUFBQyxPQUFNb0QsSUFBRSxhQUFZVixHQUFDO0FBQUUsSUFBQWhDLEdBQUUsUUFBTVY7QUFBRSxPQUFHLEdBQUc7QUFBQSxNQUFLO0FBQUEsTUFBS21EO0FBQUEsTUFDcGZuRDtBQUFBLE1BQUVxQztBQUFBLElBQUMsR0FBRSxDQUFDQSxFQUFDLENBQUM7QUFBRSxJQUFBYyxHQUFFLFNBQU87QUFBSyxPQUFHLEdBQUUsR0FBRyxLQUFLLE1BQUtBLElBQUVuRCxJQUFFb0QsSUFBRVYsRUFBQyxHQUFFLFFBQU8sSUFBSTtBQUFFLFdBQU9VO0FBQUEsRUFBQyxHQUFFLE9BQU0sV0FBVTtBQUFDLFFBQUlmLEtBQUUsR0FBSSxHQUFDSyxLQUFFZSxHQUFFO0FBQWlCLFFBQUdYLElBQUU7QUFBQyxVQUFJTSxLQUFFO0FBQUcsVUFBSUQsS0FBRTtBQUFHLE1BQUFDLE1BQUdELEtBQUUsRUFBRSxLQUFHLEtBQUcsR0FBR0EsRUFBQyxJQUFFLElBQUksU0FBUyxFQUFFLElBQUVDO0FBQUUsTUFBQVYsS0FBRSxNQUFJQSxLQUFFLE1BQUlVO0FBQUUsTUFBQUEsS0FBRTtBQUFLLFVBQUVBLE9BQUlWLE1BQUcsTUFBSVUsR0FBRSxTQUFTLEVBQUU7QUFBRyxNQUFBVixNQUFHO0FBQUEsSUFBRyxNQUFNLENBQUFVLEtBQUUsTUFBS1YsS0FBRSxNQUFJQSxLQUFFLE1BQUlVLEdBQUUsU0FBUyxFQUFFLElBQUU7QUFBSSxXQUFPZixHQUFFLGdCQUFjSztBQUFBLEVBQUMsR0FBRSwwQkFBeUIsTUFBRSxHQUFFLEtBQUc7QUFBQSxJQUFDLGFBQVk7QUFBQSxJQUFHLGFBQVk7QUFBQSxJQUFHLFlBQVc7QUFBQSxJQUFHLFdBQVU7QUFBQSxJQUFHLHFCQUFvQjtBQUFBLElBQUcsb0JBQW1CO0FBQUEsSUFBRyxpQkFBZ0I7QUFBQSxJQUFHLFNBQVE7QUFBQSxJQUFHLFlBQVc7QUFBQSxJQUFHLFFBQU87QUFBQSxJQUFHLFVBQVMsV0FBVTtBQUFDLGFBQU8sR0FBRyxFQUFFO0FBQUEsSUFBQztBQUFBLElBQ3JoQixlQUFjO0FBQUEsSUFBRyxrQkFBaUIsU0FBU0wsSUFBRTtBQUFDLFVBQUlLLEtBQUU7QUFBSyxhQUFPLEdBQUdBLElBQUVjLEdBQUUsZUFBY25CLEVBQUM7QUFBQSxJQUFDO0FBQUEsSUFBRSxlQUFjLFdBQVU7QUFBQyxVQUFJQSxLQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRUssS0FBRSxLQUFLO0FBQWMsYUFBTSxDQUFDTCxJQUFFSyxFQUFDO0FBQUEsSUFBQztBQUFBLElBQUUsa0JBQWlCO0FBQUEsSUFBRyxzQkFBcUI7QUFBQSxJQUFHLE9BQU07QUFBQSxJQUFHLDBCQUF5QjtBQUFBLEVBQUUsR0FBRSxLQUFHLEVBQUMsYUFBWSxJQUFHLGFBQVksSUFBRyxZQUFXLElBQUcsV0FBVSxJQUFHLHFCQUFvQixJQUFHLG9CQUFtQixJQUFHLGlCQUFnQixJQUFHLFNBQVEsSUFBRyxZQUFXLElBQUcsUUFBTyxJQUFHLFVBQVMsV0FBVTtBQUFDLFdBQU8sR0FBRyxFQUFFO0FBQUEsRUFBQyxHQUFFLGVBQWMsSUFBRyxrQkFBaUIsU0FBU0wsSUFBRTtBQUFDLFFBQUlLLEtBQUUsR0FBSTtBQUFDLFdBQU8sU0FDemZjLEtBQUVkLEdBQUUsZ0JBQWNMLEtBQUUsR0FBR0ssSUFBRWMsR0FBRSxlQUFjbkIsRUFBQztBQUFBLEVBQUMsR0FBRSxlQUFjLFdBQVU7QUFBQyxRQUFJQSxLQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRUssS0FBRSxLQUFLO0FBQWMsV0FBTSxDQUFDTCxJQUFFSyxFQUFDO0FBQUEsRUFBQyxHQUFFLGtCQUFpQixJQUFHLHNCQUFxQixJQUFHLE9BQU0sSUFBRywwQkFBeUIsTUFBRTtBQUFFLFdBQVMsR0FBR0wsSUFBRUssSUFBRTtBQUFDLFFBQUdMLE1BQUdBLEdBQUUsY0FBYTtBQUFDLE1BQUFLLEtBQUVOLEdBQUUsQ0FBQSxHQUFHTSxFQUFDO0FBQUUsTUFBQUwsS0FBRUEsR0FBRTtBQUFhLGVBQVFlLE1BQUtmLEdBQUUsWUFBU0ssR0FBRVUsRUFBQyxNQUFJVixHQUFFVSxFQUFDLElBQUVmLEdBQUVlLEVBQUM7QUFBRyxhQUFPVjtBQUFBLElBQUM7QUFBQyxXQUFPQTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdMLElBQUVLLElBQUVVLElBQUVELElBQUU7QUFBQyxJQUFBVCxLQUFFTCxHQUFFO0FBQWMsSUFBQWUsS0FBRUEsR0FBRUQsSUFBRVQsRUFBQztBQUFFLElBQUFVLEtBQUUsU0FBT0EsTUFBRyxXQUFTQSxLQUFFVixLQUFFTixHQUFFLENBQUUsR0FBQ00sSUFBRVUsRUFBQztBQUFFLElBQUFmLEdBQUUsZ0JBQWNlO0FBQUUsVUFBSWYsR0FBRSxVQUFRQSxHQUFFLFlBQVksWUFBVWU7QUFBQSxFQUFFO0FBQ3JkLE1BQUksS0FBRyxFQUFDLFdBQVUsU0FBU2YsSUFBRTtBQUFDLFlBQU9BLEtBQUVBLEdBQUUsbUJBQWlCLEdBQUdBLEVBQUMsTUFBSUEsS0FBRTtBQUFBLEVBQUUsR0FBRSxpQkFBZ0IsU0FBU0EsSUFBRUssSUFBRVUsSUFBRTtBQUFDLElBQUFmLEtBQUVBLEdBQUU7QUFBZ0IsUUFBSWMsS0FBRU8sR0FBRyxHQUFDaEQsS0FBRSxHQUFHMkIsRUFBQyxHQUFFckMsS0FBRSxHQUFHbUQsSUFBRXpDLEVBQUM7QUFBRSxJQUFBVixHQUFFLFVBQVEwQztBQUFFLGVBQVNVLE1BQUcsU0FBT0EsT0FBSXBELEdBQUUsV0FBU29EO0FBQUcsSUFBQVYsS0FBRSxHQUFHTCxJQUFFckMsSUFBRVUsRUFBQztBQUFFLGFBQU9nQyxPQUFJLEdBQUdBLElBQUVMLElBQUUzQixJQUFFeUMsRUFBQyxHQUFFLEdBQUdULElBQUVMLElBQUUzQixFQUFDO0FBQUEsRUFBRSxHQUFFLHFCQUFvQixTQUFTMkIsSUFBRUssSUFBRVUsSUFBRTtBQUFDLElBQUFmLEtBQUVBLEdBQUU7QUFBZ0IsUUFBSWMsS0FBRU8sR0FBQyxHQUFHaEQsS0FBRSxHQUFHMkIsRUFBQyxHQUFFckMsS0FBRSxHQUFHbUQsSUFBRXpDLEVBQUM7QUFBRSxJQUFBVixHQUFFLE1BQUk7QUFBRSxJQUFBQSxHQUFFLFVBQVEwQztBQUFFLGVBQVNVLE1BQUcsU0FBT0EsT0FBSXBELEdBQUUsV0FBU29EO0FBQUcsSUFBQVYsS0FBRSxHQUFHTCxJQUFFckMsSUFBRVUsRUFBQztBQUFFLGFBQU9nQyxPQUFJLEdBQUdBLElBQUVMLElBQUUzQixJQUFFeUMsRUFBQyxHQUFFLEdBQUdULElBQUVMLElBQUUzQixFQUFDO0FBQUEsRUFBRSxHQUFFLG9CQUFtQixTQUFTMkIsSUFBRUssSUFBRTtBQUFDLElBQUFMLEtBQUVBLEdBQUU7QUFBZ0IsUUFBSWUsS0FBRU0sR0FBRyxHQUFDUCxLQUNuZixHQUFHZCxFQUFDLEdBQUUzQixLQUFFLEdBQUcwQyxJQUFFRCxFQUFDO0FBQUUsSUFBQXpDLEdBQUUsTUFBSTtBQUFFLGVBQVNnQyxNQUFHLFNBQU9BLE9BQUloQyxHQUFFLFdBQVNnQztBQUFHLElBQUFBLEtBQUUsR0FBR0wsSUFBRTNCLElBQUV5QyxFQUFDO0FBQUUsYUFBT1QsT0FBSSxHQUFHQSxJQUFFTCxJQUFFYyxJQUFFQyxFQUFDLEdBQUUsR0FBR1YsSUFBRUwsSUFBRWMsRUFBQztBQUFBLEVBQUUsRUFBQztBQUFFLFdBQVMsR0FBR2QsSUFBRUssSUFBRVUsSUFBRUQsSUFBRXpDLElBQUVWLElBQUVzRCxJQUFFO0FBQUMsSUFBQWpCLEtBQUVBLEdBQUU7QUFBVSxXQUFNLGVBQWEsT0FBT0EsR0FBRSx3QkFBc0JBLEdBQUUsc0JBQXNCYyxJQUFFbkQsSUFBRXNELEVBQUMsSUFBRVosR0FBRSxhQUFXQSxHQUFFLFVBQVUsdUJBQXFCLENBQUNvSSxJQUFHMUgsSUFBRUQsRUFBQyxLQUFHLENBQUMySCxJQUFHcEssSUFBRVYsRUFBQyxJQUFFO0FBQUEsRUFBRTtBQUMxUyxXQUFTLEdBQUdxQyxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBSUQsS0FBRSxPQUFHekMsS0FBRTtBQUFHLFFBQUlWLEtBQUUwQyxHQUFFO0FBQVksaUJBQVcsT0FBTzFDLE1BQUcsU0FBT0EsS0FBRUEsS0FBRSxHQUFHQSxFQUFDLEtBQUdVLEtBQUUsR0FBR2dDLEVBQUMsSUFBRSxLQUFHRyxHQUFFLFNBQVFNLEtBQUVULEdBQUUsY0FBYTFDLE1BQUdtRCxLQUFFLFNBQU9BLE1BQUcsV0FBU0EsTUFBRyxHQUFHZCxJQUFFM0IsRUFBQyxJQUFFO0FBQUksSUFBQWdDLEtBQUUsSUFBSUEsR0FBRVUsSUFBRXBELEVBQUM7QUFBRSxJQUFBcUMsR0FBRSxnQkFBYyxTQUFPSyxHQUFFLFNBQU8sV0FBU0EsR0FBRSxRQUFNQSxHQUFFLFFBQU07QUFBSyxJQUFBQSxHQUFFLFVBQVE7QUFBRyxJQUFBTCxHQUFFLFlBQVVLO0FBQUUsSUFBQUEsR0FBRSxrQkFBZ0JMO0FBQUUsSUFBQWMsT0FBSWQsS0FBRUEsR0FBRSxXQUFVQSxHQUFFLDhDQUE0QzNCLElBQUUyQixHQUFFLDRDQUEwQ3JDO0FBQUcsV0FBTzBDO0FBQUEsRUFBQztBQUM1WixXQUFTLEdBQUdMLElBQUVLLElBQUVVLElBQUVELElBQUU7QUFBQyxJQUFBZCxLQUFFSyxHQUFFO0FBQU0sbUJBQWEsT0FBT0EsR0FBRSw2QkFBMkJBLEdBQUUsMEJBQTBCVSxJQUFFRCxFQUFDO0FBQUUsbUJBQWEsT0FBT1QsR0FBRSxvQ0FBa0NBLEdBQUUsaUNBQWlDVSxJQUFFRCxFQUFDO0FBQUUsSUFBQVQsR0FBRSxVQUFRTCxNQUFHLEdBQUcsb0JBQW9CSyxJQUFFQSxHQUFFLE9BQU0sSUFBSTtBQUFBLEVBQUM7QUFDcFEsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFO0FBQUMsUUFBSXpDLEtBQUUyQixHQUFFO0FBQVUsSUFBQTNCLEdBQUUsUUFBTTBDO0FBQUUsSUFBQTFDLEdBQUUsUUFBTTJCLEdBQUU7QUFBYyxJQUFBM0IsR0FBRSxPQUFLO0FBQUcsT0FBRzJCLEVBQUM7QUFBRSxRQUFJckMsS0FBRTBDLEdBQUU7QUFBWSxpQkFBVyxPQUFPMUMsTUFBRyxTQUFPQSxLQUFFVSxHQUFFLFVBQVEsR0FBR1YsRUFBQyxLQUFHQSxLQUFFLEdBQUcwQyxFQUFDLElBQUUsS0FBR0csR0FBRSxTQUFRbkMsR0FBRSxVQUFRLEdBQUcyQixJQUFFckMsRUFBQztBQUFHLElBQUFVLEdBQUUsUUFBTTJCLEdBQUU7QUFBYyxJQUFBckMsS0FBRTBDLEdBQUU7QUFBeUIsbUJBQWEsT0FBTzFDLE9BQUksR0FBR3FDLElBQUVLLElBQUUxQyxJQUFFb0QsRUFBQyxHQUFFMUMsR0FBRSxRQUFNMkIsR0FBRTtBQUFlLG1CQUFhLE9BQU9LLEdBQUUsNEJBQTBCLGVBQWEsT0FBT2hDLEdBQUUsMkJBQXlCLGVBQWEsT0FBT0EsR0FBRSw2QkFBMkIsZUFBYSxPQUFPQSxHQUFFLHVCQUFxQmdDLEtBQUVoQyxHQUFFLE9BQ3JmLGVBQWEsT0FBT0EsR0FBRSxzQkFBb0JBLEdBQUUsbUJBQW9CLEdBQUMsZUFBYSxPQUFPQSxHQUFFLDZCQUEyQkEsR0FBRSwwQkFBMkIsR0FBQ2dDLE9BQUloQyxHQUFFLFNBQU8sR0FBRyxvQkFBb0JBLElBQUVBLEdBQUUsT0FBTSxJQUFJLEdBQUUsR0FBRzJCLElBQUVlLElBQUUxQyxJQUFFeUMsRUFBQyxHQUFFekMsR0FBRSxRQUFNMkIsR0FBRTtBQUFlLG1CQUFhLE9BQU8zQixHQUFFLHNCQUFvQjJCLEdBQUUsU0FBTztBQUFBLEVBQVE7QUFBQyxXQUFTLEdBQUdBLElBQUVLLElBQUU7QUFBQyxRQUFHO0FBQUMsVUFBSVUsS0FBRSxJQUFHRCxLQUFFVDtBQUFFO0FBQUcsUUFBQVUsTUFBRyxHQUFHRCxFQUFDLEdBQUVBLEtBQUVBLEdBQUU7QUFBQSxhQUFhQTtBQUFHLFVBQUl6QyxLQUFFMEM7QUFBQSxJQUFDLFNBQU9wRCxJQUFFO0FBQUMsTUFBQVUsS0FBRSwrQkFBNkJWLEdBQUUsVUFBUSxPQUFLQSxHQUFFO0FBQUEsSUFBSztBQUFDLFdBQU0sRUFBQyxPQUFNcUMsSUFBRSxRQUFPSyxJQUFFLE9BQU1oQyxJQUFFLFFBQU8sS0FBSTtBQUFBLEVBQUM7QUFDMWQsV0FBUyxHQUFHMkIsSUFBRUssSUFBRVUsSUFBRTtBQUFDLFdBQU0sRUFBQyxPQUFNZixJQUFFLFFBQU8sTUFBSyxPQUFNLFFBQU1lLEtBQUVBLEtBQUUsTUFBSyxRQUFPLFFBQU1WLEtBQUVBLEtBQUUsS0FBSTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdMLElBQUVLLElBQUU7QUFBQyxRQUFHO0FBQUMsY0FBUSxNQUFNQSxHQUFFLEtBQUs7QUFBQSxJQUFDLFNBQU9VLElBQUU7QUFBQyxpQkFBVyxXQUFVO0FBQUMsY0FBTUE7QUFBQSxNQUFFLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxlQUFhLE9BQU8sVUFBUSxVQUFRO0FBQUksV0FBUyxHQUFHZixJQUFFSyxJQUFFVSxJQUFFO0FBQUMsSUFBQUEsS0FBRSxHQUFHLElBQUdBLEVBQUM7QUFBRSxJQUFBQSxHQUFFLE1BQUk7QUFBRSxJQUFBQSxHQUFFLFVBQVEsRUFBQyxTQUFRLEtBQUk7QUFBRSxRQUFJRCxLQUFFVCxHQUFFO0FBQU0sSUFBQVUsR0FBRSxXQUFTLFdBQVU7QUFBQyxhQUFLLEtBQUcsTUFBRyxLQUFHRDtBQUFHLFNBQUdkLElBQUVLLEVBQUM7QUFBQSxJQUFDO0FBQUUsV0FBT1U7QUFBQSxFQUFDO0FBQ3JXLFdBQVMsR0FBR2YsSUFBRUssSUFBRVUsSUFBRTtBQUFDLElBQUFBLEtBQUUsR0FBRyxJQUFHQSxFQUFDO0FBQUUsSUFBQUEsR0FBRSxNQUFJO0FBQUUsUUFBSUQsS0FBRWQsR0FBRSxLQUFLO0FBQXlCLFFBQUcsZUFBYSxPQUFPYyxJQUFFO0FBQUMsVUFBSXpDLEtBQUVnQyxHQUFFO0FBQU0sTUFBQVUsR0FBRSxVQUFRLFdBQVU7QUFBQyxlQUFPRCxHQUFFekMsRUFBQztBQUFBLE1BQUM7QUFBRSxNQUFBMEMsR0FBRSxXQUFTLFdBQVU7QUFBQyxXQUFHZixJQUFFSyxFQUFDO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBQyxRQUFJMUMsS0FBRXFDLEdBQUU7QUFBVSxhQUFPckMsTUFBRyxlQUFhLE9BQU9BLEdBQUUsc0JBQW9Cb0QsR0FBRSxXQUFTLFdBQVU7QUFBQyxTQUFHZixJQUFFSyxFQUFDO0FBQUUscUJBQWEsT0FBT1MsT0FBSSxTQUFPLEtBQUcsS0FBRyxvQkFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUUsR0FBRyxJQUFJLElBQUk7QUFBRyxVQUFJQyxLQUFFVixHQUFFO0FBQU0sV0FBSyxrQkFBa0JBLEdBQUUsT0FBTSxFQUFDLGdCQUFlLFNBQU9VLEtBQUVBLEtBQUUsR0FBRSxDQUFDO0FBQUEsSUFBQztBQUFHLFdBQU9BO0FBQUEsRUFBQztBQUNuYixXQUFTLEdBQUdmLElBQUVLLElBQUVVLElBQUU7QUFBQyxRQUFJRCxLQUFFZCxHQUFFO0FBQVUsUUFBRyxTQUFPYyxJQUFFO0FBQUMsTUFBQUEsS0FBRWQsR0FBRSxZQUFVLElBQUk7QUFBRyxVQUFJM0IsS0FBRSxvQkFBSTtBQUFJLE1BQUF5QyxHQUFFLElBQUlULElBQUVoQyxFQUFDO0FBQUEsSUFBQyxNQUFNLENBQUFBLEtBQUV5QyxHQUFFLElBQUlULEVBQUMsR0FBRSxXQUFTaEMsT0FBSUEsS0FBRSxvQkFBSSxPQUFJeUMsR0FBRSxJQUFJVCxJQUFFaEMsRUFBQztBQUFHLElBQUFBLEdBQUUsSUFBSTBDLEVBQUMsTUFBSTFDLEdBQUUsSUFBSTBDLEVBQUMsR0FBRWYsS0FBRSxHQUFHLEtBQUssTUFBS0EsSUFBRUssSUFBRVUsRUFBQyxHQUFFVixHQUFFLEtBQUtMLElBQUVBLEVBQUM7QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHQSxJQUFFO0FBQUMsT0FBRTtBQUFDLFVBQUlLO0FBQUUsVUFBR0EsS0FBRSxPQUFLTCxHQUFFLElBQUksQ0FBQUssS0FBRUwsR0FBRSxlQUFjSyxLQUFFLFNBQU9BLEtBQUUsU0FBT0EsR0FBRSxhQUFXLE9BQUcsUUFBRztBQUFHLFVBQUdBLEdBQUUsUUFBT0w7QUFBRSxNQUFBQSxLQUFFQSxHQUFFO0FBQUEsSUFBTSxTQUFPLFNBQU9BO0FBQUcsV0FBTztBQUFBLEVBQUk7QUFDaFcsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFekMsSUFBRTtBQUFDLFFBQUcsT0FBSzJCLEdBQUUsT0FBSyxHQUFHLFFBQU9BLE9BQUlLLEtBQUVMLEdBQUUsU0FBTyxTQUFPQSxHQUFFLFNBQU8sS0FBSWUsR0FBRSxTQUFPLFFBQU9BLEdBQUUsU0FBTyxRQUFPLE1BQUlBLEdBQUUsUUFBTSxTQUFPQSxHQUFFLFlBQVVBLEdBQUUsTUFBSSxNQUFJVixLQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUVBLEdBQUUsTUFBSSxHQUFFLEdBQUdVLElBQUVWLElBQUUsQ0FBQyxLQUFJVSxHQUFFLFNBQU8sSUFBR2Y7QUFBRSxJQUFBQSxHQUFFLFNBQU87QUFBTSxJQUFBQSxHQUFFLFFBQU0zQjtBQUFFLFdBQU8yQjtBQUFBLEVBQUM7QUFBQyxNQUFJLEtBQUcsR0FBRyxtQkFBa0IsS0FBRztBQUFHLFdBQVMsR0FBR0EsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLElBQUFULEdBQUUsUUFBTSxTQUFPTCxLQUFFLEdBQUdLLElBQUUsTUFBS1UsSUFBRUQsRUFBQyxJQUFFLEdBQUdULElBQUVMLEdBQUUsT0FBTWUsSUFBRUQsRUFBQztBQUFBLEVBQUM7QUFDblYsV0FBUyxHQUFHZCxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFekMsSUFBRTtBQUFDLElBQUEwQyxLQUFFQSxHQUFFO0FBQU8sUUFBSXBELEtBQUUwQyxHQUFFO0FBQUksT0FBR0EsSUFBRWhDLEVBQUM7QUFBRSxJQUFBeUMsS0FBRSxHQUFHZCxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFbkQsSUFBRVUsRUFBQztBQUFFLElBQUEwQyxLQUFFLEdBQUk7QUFBQyxRQUFHLFNBQU9mLE1BQUcsQ0FBQyxHQUFHLFFBQU9LLEdBQUUsY0FBWUwsR0FBRSxhQUFZSyxHQUFFLFNBQU8sT0FBTUwsR0FBRSxTQUFPLENBQUMzQixJQUFFLEdBQUcyQixJQUFFSyxJQUFFaEMsRUFBQztBQUFFLElBQUFvQyxNQUFHTSxNQUFHLEdBQUdWLEVBQUM7QUFBRSxJQUFBQSxHQUFFLFNBQU87QUFBRSxPQUFHTCxJQUFFSyxJQUFFUyxJQUFFekMsRUFBQztBQUFFLFdBQU9nQyxHQUFFO0FBQUEsRUFBSztBQUN6TixXQUFTLEdBQUdMLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFO0FBQUMsUUFBRyxTQUFPMkIsSUFBRTtBQUFDLFVBQUlyQyxLQUFFb0QsR0FBRTtBQUFLLFVBQUcsZUFBYSxPQUFPcEQsTUFBRyxDQUFDLEdBQUdBLEVBQUMsS0FBRyxXQUFTQSxHQUFFLGdCQUFjLFNBQU9vRCxHQUFFLFdBQVMsV0FBU0EsR0FBRSxhQUFhLFFBQU9WLEdBQUUsTUFBSSxJQUFHQSxHQUFFLE9BQUsxQyxJQUFFLEdBQUdxQyxJQUFFSyxJQUFFMUMsSUFBRW1ELElBQUV6QyxFQUFDO0FBQUUsTUFBQTJCLEtBQUUsR0FBR2UsR0FBRSxNQUFLLE1BQUtELElBQUVULElBQUVBLEdBQUUsTUFBS2hDLEVBQUM7QUFBRSxNQUFBMkIsR0FBRSxNQUFJSyxHQUFFO0FBQUksTUFBQUwsR0FBRSxTQUFPSztBQUFFLGFBQU9BLEdBQUUsUUFBTUw7QUFBQSxJQUFDO0FBQUMsSUFBQXJDLEtBQUVxQyxHQUFFO0FBQU0sUUFBRyxPQUFLQSxHQUFFLFFBQU0zQixLQUFHO0FBQUMsVUFBSTRDLEtBQUV0RCxHQUFFO0FBQWMsTUFBQW9ELEtBQUVBLEdBQUU7QUFBUSxNQUFBQSxLQUFFLFNBQU9BLEtBQUVBLEtBQUUwSDtBQUFHLFVBQUcxSCxHQUFFRSxJQUFFSCxFQUFDLEtBQUdkLEdBQUUsUUFBTUssR0FBRSxJQUFJLFFBQU8sR0FBR0wsSUFBRUssSUFBRWhDLEVBQUM7QUFBQSxJQUFDO0FBQUMsSUFBQWdDLEdBQUUsU0FBTztBQUFFLElBQUFMLEtBQUUsR0FBR3JDLElBQUVtRCxFQUFDO0FBQUUsSUFBQWQsR0FBRSxNQUFJSyxHQUFFO0FBQUksSUFBQUwsR0FBRSxTQUFPSztBQUFFLFdBQU9BLEdBQUUsUUFBTUw7QUFBQSxFQUFDO0FBQzFiLFdBQVMsR0FBR0EsSUFBRUssSUFBRVUsSUFBRUQsSUFBRXpDLElBQUU7QUFBQyxRQUFHLFNBQU8yQixJQUFFO0FBQUMsVUFBSXJDLEtBQUVxQyxHQUFFO0FBQWMsVUFBR3lJLElBQUc5SyxJQUFFbUQsRUFBQyxLQUFHZCxHQUFFLFFBQU1LLEdBQUUsSUFBSSxLQUFHLEtBQUcsT0FBR0EsR0FBRSxlQUFhUyxLQUFFbkQsSUFBRSxPQUFLcUMsR0FBRSxRQUFNM0IsSUFBRyxRQUFLMkIsR0FBRSxRQUFNLFlBQVUsS0FBRztBQUFBLFVBQVMsUUFBT0ssR0FBRSxRQUFNTCxHQUFFLE9BQU0sR0FBR0EsSUFBRUssSUFBRWhDLEVBQUM7QUFBQSxJQUFDO0FBQUMsV0FBTyxHQUFHMkIsSUFBRUssSUFBRVUsSUFBRUQsSUFBRXpDLEVBQUM7QUFBQSxFQUFDO0FBQ3hOLFdBQVMsR0FBRzJCLElBQUVLLElBQUVVLElBQUU7QUFBQyxRQUFJRCxLQUFFVCxHQUFFLGNBQWFoQyxLQUFFeUMsR0FBRSxVQUFTbkQsS0FBRSxTQUFPcUMsS0FBRUEsR0FBRSxnQkFBYztBQUFLLFFBQUcsYUFBV2MsR0FBRSxLQUFLLEtBQUcsT0FBS1QsR0FBRSxPQUFLLEdBQUcsQ0FBQUEsR0FBRSxnQkFBYyxFQUFDLFdBQVUsR0FBRSxXQUFVLE1BQUssYUFBWSxLQUFJLEdBQUVFLEdBQUUsSUFBRyxFQUFFLEdBQUUsTUFBSVE7QUFBQSxTQUFNO0FBQUMsVUFBRyxPQUFLQSxLQUFFLFlBQVksUUFBT2YsS0FBRSxTQUFPckMsS0FBRUEsR0FBRSxZQUFVb0QsS0FBRUEsSUFBRVYsR0FBRSxRQUFNQSxHQUFFLGFBQVcsWUFBV0EsR0FBRSxnQkFBYyxFQUFDLFdBQVVMLElBQUUsV0FBVSxNQUFLLGFBQVksS0FBSSxHQUFFSyxHQUFFLGNBQVksTUFBS0UsR0FBRSxJQUFHLEVBQUUsR0FBRSxNQUFJUCxJQUFFO0FBQUssTUFBQUssR0FBRSxnQkFBYyxFQUFDLFdBQVUsR0FBRSxXQUFVLE1BQUssYUFBWSxLQUFJO0FBQUUsTUFBQVMsS0FBRSxTQUFPbkQsS0FBRUEsR0FBRSxZQUFVb0Q7QUFBRSxNQUFBUixHQUFFLElBQUcsRUFBRTtBQUFFLFlBQUlPO0FBQUEsSUFBQztBQUFBLFFBQU0sVUFDdGZuRCxNQUFHbUQsS0FBRW5ELEdBQUUsWUFBVW9ELElBQUVWLEdBQUUsZ0JBQWMsUUFBTVMsS0FBRUMsSUFBRVIsR0FBRSxJQUFHLEVBQUUsR0FBRSxNQUFJTztBQUFFLE9BQUdkLElBQUVLLElBQUVoQyxJQUFFMEMsRUFBQztBQUFFLFdBQU9WLEdBQUU7QUFBQSxFQUFLO0FBQUMsV0FBUyxHQUFHTCxJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRVYsR0FBRTtBQUFJLFFBQUcsU0FBT0wsTUFBRyxTQUFPZSxNQUFHLFNBQU9mLE1BQUdBLEdBQUUsUUFBTWUsR0FBRSxDQUFBVixHQUFFLFNBQU8sS0FBSUEsR0FBRSxTQUFPO0FBQUEsRUFBTztBQUFDLFdBQVMsR0FBR0wsSUFBRUssSUFBRVUsSUFBRUQsSUFBRXpDLElBQUU7QUFBQyxRQUFJVixLQUFFLEdBQUdvRCxFQUFDLElBQUUsS0FBR1AsR0FBRTtBQUFRLElBQUE3QyxLQUFFLEdBQUcwQyxJQUFFMUMsRUFBQztBQUFFLE9BQUcwQyxJQUFFaEMsRUFBQztBQUFFLElBQUEwQyxLQUFFLEdBQUdmLElBQUVLLElBQUVVLElBQUVELElBQUVuRCxJQUFFVSxFQUFDO0FBQUUsSUFBQXlDLEtBQUU7QUFBSyxRQUFHLFNBQU9kLE1BQUcsQ0FBQyxHQUFHLFFBQU9LLEdBQUUsY0FBWUwsR0FBRSxhQUFZSyxHQUFFLFNBQU8sT0FBTUwsR0FBRSxTQUFPLENBQUMzQixJQUFFLEdBQUcyQixJQUFFSyxJQUFFaEMsRUFBQztBQUFFLElBQUFvQyxNQUFHSyxNQUFHLEdBQUdULEVBQUM7QUFBRSxJQUFBQSxHQUFFLFNBQU87QUFBRSxPQUFHTCxJQUFFSyxJQUFFVSxJQUFFMUMsRUFBQztBQUFFLFdBQU9nQyxHQUFFO0FBQUEsRUFBSztBQUNsYSxXQUFTLEdBQUdMLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFO0FBQUMsUUFBRyxHQUFHMEMsRUFBQyxHQUFFO0FBQUMsVUFBSXBELEtBQUU7QUFBRyxTQUFHMEMsRUFBQztBQUFBLElBQUMsTUFBTSxDQUFBMUMsS0FBRTtBQUFHLE9BQUcwQyxJQUFFaEMsRUFBQztBQUFFLFFBQUcsU0FBT2dDLEdBQUUsVUFBVSxJQUFHTCxJQUFFSyxFQUFDLEdBQUUsR0FBR0EsSUFBRVUsSUFBRUQsRUFBQyxHQUFFLEdBQUdULElBQUVVLElBQUVELElBQUV6QyxFQUFDLEdBQUV5QyxLQUFFO0FBQUEsYUFBVyxTQUFPZCxJQUFFO0FBQUMsVUFBSWlCLEtBQUVaLEdBQUUsV0FBVVcsS0FBRVgsR0FBRTtBQUFjLE1BQUFZLEdBQUUsUUFBTUQ7QUFBRSxVQUFJNUMsS0FBRTZDLEdBQUUsU0FBUTVCLEtBQUUwQixHQUFFO0FBQVksbUJBQVcsT0FBTzFCLE1BQUcsU0FBT0EsS0FBRUEsS0FBRSxHQUFHQSxFQUFDLEtBQUdBLEtBQUUsR0FBRzBCLEVBQUMsSUFBRSxLQUFHUCxHQUFFLFNBQVFuQixLQUFFLEdBQUdnQixJQUFFaEIsRUFBQztBQUFHLFVBQUk2QixLQUFFSCxHQUFFLDBCQUF5QnZCLEtBQUUsZUFBYSxPQUFPMEIsTUFBRyxlQUFhLE9BQU9ELEdBQUU7QUFBd0IsTUFBQXpCLE1BQUcsZUFBYSxPQUFPeUIsR0FBRSxvQ0FBa0MsZUFBYSxPQUFPQSxHQUFFLDhCQUMxZEQsT0FBSUYsTUFBRzFDLE9BQUlpQixPQUFJLEdBQUdnQixJQUFFWSxJQUFFSCxJQUFFekIsRUFBQztBQUFFLFdBQUc7QUFBRyxVQUFJSSxLQUFFWSxHQUFFO0FBQWMsTUFBQVksR0FBRSxRQUFNeEI7QUFBRSxTQUFHWSxJQUFFUyxJQUFFRyxJQUFFNUMsRUFBQztBQUFFLE1BQUFELEtBQUVpQyxHQUFFO0FBQWMsTUFBQVcsT0FBSUYsTUFBR3JCLE9BQUlyQixNQUFHLEdBQUcsV0FBUyxNQUFJLGVBQWEsT0FBTzhDLE9BQUksR0FBR2IsSUFBRVUsSUFBRUcsSUFBRUosRUFBQyxHQUFFMUMsS0FBRWlDLEdBQUUsaUJBQWdCVyxLQUFFLE1BQUksR0FBR1gsSUFBRVUsSUFBRUMsSUFBRUYsSUFBRXJCLElBQUVyQixJQUFFaUIsRUFBQyxNQUFJRyxNQUFHLGVBQWEsT0FBT3lCLEdBQUUsNkJBQTJCLGVBQWEsT0FBT0EsR0FBRSx1QkFBcUIsZUFBYSxPQUFPQSxHQUFFLHNCQUFvQkEsR0FBRSxtQkFBa0IsR0FBRyxlQUFhLE9BQU9BLEdBQUUsNkJBQTJCQSxHQUFFLDhCQUE2QixlQUFhLE9BQU9BLEdBQUUsc0JBQW9CWixHQUFFLFNBQU8sYUFDbGYsZUFBYSxPQUFPWSxHQUFFLHNCQUFvQlosR0FBRSxTQUFPLFVBQVNBLEdBQUUsZ0JBQWNTLElBQUVULEdBQUUsZ0JBQWNqQyxLQUFHNkMsR0FBRSxRQUFNSCxJQUFFRyxHQUFFLFFBQU03QyxJQUFFNkMsR0FBRSxVQUFRNUIsSUFBRXlCLEtBQUVFLE9BQUksZUFBYSxPQUFPQyxHQUFFLHNCQUFvQlosR0FBRSxTQUFPLFVBQVNTLEtBQUU7QUFBQSxJQUFHLE9BQUs7QUFBQyxNQUFBRyxLQUFFWixHQUFFO0FBQVUsU0FBR0wsSUFBRUssRUFBQztBQUFFLE1BQUFXLEtBQUVYLEdBQUU7QUFBYyxNQUFBaEIsS0FBRWdCLEdBQUUsU0FBT0EsR0FBRSxjQUFZVyxLQUFFLEdBQUdYLEdBQUUsTUFBS1csRUFBQztBQUFFLE1BQUFDLEdBQUUsUUFBTTVCO0FBQUUsTUFBQUcsS0FBRWEsR0FBRTtBQUFhLE1BQUFaLEtBQUV3QixHQUFFO0FBQVEsTUFBQTdDLEtBQUUyQyxHQUFFO0FBQVksbUJBQVcsT0FBTzNDLE1BQUcsU0FBT0EsS0FBRUEsS0FBRSxHQUFHQSxFQUFDLEtBQUdBLEtBQUUsR0FBRzJDLEVBQUMsSUFBRSxLQUFHUCxHQUFFLFNBQVFwQyxLQUFFLEdBQUdpQyxJQUFFakMsRUFBQztBQUFHLFVBQUlYLEtBQUVzRCxHQUFFO0FBQXlCLE9BQUNHLEtBQUUsZUFBYSxPQUFPekQsTUFBRyxlQUFhLE9BQU93RCxHQUFFLDRCQUM5ZSxlQUFhLE9BQU9BLEdBQUUsb0NBQWtDLGVBQWEsT0FBT0EsR0FBRSw4QkFBNEJELE9BQUl4QixNQUFHQyxPQUFJckIsT0FBSSxHQUFHaUMsSUFBRVksSUFBRUgsSUFBRTFDLEVBQUM7QUFBRSxXQUFHO0FBQUcsTUFBQXFCLEtBQUVZLEdBQUU7QUFBYyxNQUFBWSxHQUFFLFFBQU14QjtBQUFFLFNBQUdZLElBQUVTLElBQUVHLElBQUU1QyxFQUFDO0FBQUUsVUFBSWlCLEtBQUVlLEdBQUU7QUFBYyxNQUFBVyxPQUFJeEIsTUFBR0MsT0FBSUgsTUFBRyxHQUFHLFdBQVMsTUFBSSxlQUFhLE9BQU83QixPQUFJLEdBQUc0QyxJQUFFVSxJQUFFdEQsSUFBRXFELEVBQUMsR0FBRXhCLEtBQUVlLEdBQUUsaUJBQWdCaEIsS0FBRSxNQUFJLEdBQUdnQixJQUFFVSxJQUFFMUIsSUFBRXlCLElBQUVyQixJQUFFSCxJQUFFbEIsRUFBQyxLQUFHLFVBQUs4QyxNQUFHLGVBQWEsT0FBT0QsR0FBRSw4QkFBNEIsZUFBYSxPQUFPQSxHQUFFLHdCQUFzQixlQUFhLE9BQU9BLEdBQUUsdUJBQXFCQSxHQUFFLG9CQUFvQkgsSUFBRXhCLElBQUVsQixFQUFDLEdBQUUsZUFBYSxPQUFPNkMsR0FBRSw4QkFDNWZBLEdBQUUsMkJBQTJCSCxJQUFFeEIsSUFBRWxCLEVBQUMsSUFBRyxlQUFhLE9BQU82QyxHQUFFLHVCQUFxQlosR0FBRSxTQUFPLElBQUcsZUFBYSxPQUFPWSxHQUFFLDRCQUEwQlosR0FBRSxTQUFPLFVBQVEsZUFBYSxPQUFPWSxHQUFFLHNCQUFvQkQsT0FBSWhCLEdBQUUsaUJBQWVQLE9BQUlPLEdBQUUsa0JBQWdCSyxHQUFFLFNBQU8sSUFBRyxlQUFhLE9BQU9ZLEdBQUUsMkJBQXlCRCxPQUFJaEIsR0FBRSxpQkFBZVAsT0FBSU8sR0FBRSxrQkFBZ0JLLEdBQUUsU0FBTyxPQUFNQSxHQUFFLGdCQUFjUyxJQUFFVCxHQUFFLGdCQUFjZixLQUFHMkIsR0FBRSxRQUFNSCxJQUFFRyxHQUFFLFFBQU0zQixJQUFFMkIsR0FBRSxVQUFRN0MsSUFBRTBDLEtBQUV6QixPQUFJLGVBQWEsT0FBTzRCLEdBQUUsc0JBQW9CRCxPQUFJaEIsR0FBRSxpQkFBZVAsT0FDamZPLEdBQUUsa0JBQWdCSyxHQUFFLFNBQU8sSUFBRyxlQUFhLE9BQU9ZLEdBQUUsMkJBQXlCRCxPQUFJaEIsR0FBRSxpQkFBZVAsT0FBSU8sR0FBRSxrQkFBZ0JLLEdBQUUsU0FBTyxPQUFNUyxLQUFFO0FBQUEsSUFBRztBQUFDLFdBQU8sR0FBR2QsSUFBRUssSUFBRVUsSUFBRUQsSUFBRW5ELElBQUVVLEVBQUM7QUFBQSxFQUFDO0FBQ25LLFdBQVMsR0FBRzJCLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFVixJQUFFO0FBQUMsT0FBR3FDLElBQUVLLEVBQUM7QUFBRSxRQUFJWSxLQUFFLE9BQUtaLEdBQUUsUUFBTTtBQUFLLFFBQUcsQ0FBQ1MsTUFBRyxDQUFDRyxHQUFFLFFBQU81QyxNQUFHLEdBQUdnQyxJQUFFVSxJQUFFLEtBQUUsR0FBRSxHQUFHZixJQUFFSyxJQUFFMUMsRUFBQztBQUFFLElBQUFtRCxLQUFFVCxHQUFFO0FBQVUsT0FBRyxVQUFRQTtBQUFFLFFBQUlXLEtBQUVDLE1BQUcsZUFBYSxPQUFPRixHQUFFLDJCQUF5QixPQUFLRCxHQUFFLE9BQVE7QUFBQyxJQUFBVCxHQUFFLFNBQU87QUFBRSxhQUFPTCxNQUFHaUIsTUFBR1osR0FBRSxRQUFNLEdBQUdBLElBQUVMLEdBQUUsT0FBTSxNQUFLckMsRUFBQyxHQUFFMEMsR0FBRSxRQUFNLEdBQUdBLElBQUUsTUFBS1csSUFBRXJELEVBQUMsS0FBRyxHQUFHcUMsSUFBRUssSUFBRVcsSUFBRXJELEVBQUM7QUFBRSxJQUFBMEMsR0FBRSxnQkFBY1MsR0FBRTtBQUFNLElBQUF6QyxNQUFHLEdBQUdnQyxJQUFFVSxJQUFFLElBQUU7QUFBRSxXQUFPVixHQUFFO0FBQUEsRUFBSztBQUFDLFdBQVMsR0FBR0wsSUFBRTtBQUFDLFFBQUlLLEtBQUVMLEdBQUU7QUFBVSxJQUFBSyxHQUFFLGlCQUFlLEdBQUdMLElBQUVLLEdBQUUsZ0JBQWVBLEdBQUUsbUJBQWlCQSxHQUFFLE9BQU8sSUFBRUEsR0FBRSxXQUFTLEdBQUdMLElBQUVLLEdBQUUsU0FBUSxLQUFFO0FBQUUsT0FBR0wsSUFBRUssR0FBRSxhQUFhO0FBQUEsRUFBQztBQUM1ZSxXQUFTLEdBQUdMLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFO0FBQUMsT0FBRTtBQUFHLE9BQUdBLEVBQUM7QUFBRSxJQUFBZ0MsR0FBRSxTQUFPO0FBQUksT0FBR0wsSUFBRUssSUFBRVUsSUFBRUQsRUFBQztBQUFFLFdBQU9ULEdBQUU7QUFBQSxFQUFLO0FBQUMsTUFBSSxLQUFHLEVBQUMsWUFBVyxNQUFLLGFBQVksTUFBSyxXQUFVLEVBQUM7QUFBRSxXQUFTLEdBQUdMLElBQUU7QUFBQyxXQUFNLEVBQUMsV0FBVUEsSUFBRSxXQUFVLE1BQUssYUFBWSxLQUFJO0FBQUEsRUFBQztBQUNsTSxXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUU7QUFBQyxRQUFJRCxLQUFFVCxHQUFFLGNBQWFoQyxLQUFFdUMsR0FBRSxTQUFRakQsS0FBRSxPQUFHc0QsS0FBRSxPQUFLWixHQUFFLFFBQU0sTUFBS1c7QUFBRSxLQUFDQSxLQUFFQyxRQUFLRCxLQUFFLFNBQU9oQixNQUFHLFNBQU9BLEdBQUUsZ0JBQWMsUUFBRyxPQUFLM0IsS0FBRTtBQUFJLFFBQUcyQyxHQUFFLENBQUFyRCxLQUFFLE1BQUcwQyxHQUFFLFNBQU87QUFBQSxhQUFhLFNBQU9MLE1BQUcsU0FBT0EsR0FBRSxjQUFjLENBQUEzQixNQUFHO0FBQUUsSUFBQWtDLEdBQUVLLElBQUV2QyxLQUFFLENBQUM7QUFBRSxRQUFHLFNBQU8yQixJQUFFO0FBQUMsU0FBR0ssRUFBQztBQUFFLE1BQUFMLEtBQUVLLEdBQUU7QUFBYyxVQUFHLFNBQU9MLE9BQUlBLEtBQUVBLEdBQUUsWUFBVyxTQUFPQSxJQUFHLFFBQU8sT0FBS0ssR0FBRSxPQUFLLEtBQUdBLEdBQUUsUUFBTSxJQUFFLFNBQU9MLEdBQUUsT0FBS0ssR0FBRSxRQUFNLElBQUVBLEdBQUUsUUFBTSxZQUFXO0FBQUssTUFBQVksS0FBRUgsR0FBRTtBQUFTLE1BQUFkLEtBQUVjLEdBQUU7QUFBUyxhQUFPbkQsTUFBR21ELEtBQUVULEdBQUUsTUFBSzFDLEtBQUUwQyxHQUFFLE9BQU1ZLEtBQUUsRUFBQyxNQUFLLFVBQVMsVUFBU0EsR0FBQyxHQUFFLE9BQUtILEtBQUUsTUFBSSxTQUFPbkQsTUFBR0EsR0FBRSxhQUFXLEdBQUVBLEdBQUUsZUFDN2VzRCxNQUFHdEQsS0FBRSxHQUFHc0QsSUFBRUgsSUFBRSxHQUFFLElBQUksR0FBRWQsS0FBRSxHQUFHQSxJQUFFYyxJQUFFQyxJQUFFLElBQUksR0FBRXBELEdBQUUsU0FBTzBDLElBQUVMLEdBQUUsU0FBT0ssSUFBRTFDLEdBQUUsVUFBUXFDLElBQUVLLEdBQUUsUUFBTTFDLElBQUUwQyxHQUFFLE1BQU0sZ0JBQWMsR0FBR1UsRUFBQyxHQUFFVixHQUFFLGdCQUFjLElBQUdMLE1BQUcsR0FBR0ssSUFBRVksRUFBQztBQUFBLElBQUM7QUFBQyxJQUFBNUMsS0FBRTJCLEdBQUU7QUFBYyxRQUFHLFNBQU8zQixPQUFJMkMsS0FBRTNDLEdBQUUsWUFBVyxTQUFPMkMsSUFBRyxRQUFPLEdBQUdoQixJQUFFSyxJQUFFWSxJQUFFSCxJQUFFRSxJQUFFM0MsSUFBRTBDLEVBQUM7QUFBRSxRQUFHcEQsSUFBRTtBQUFDLE1BQUFBLEtBQUVtRCxHQUFFO0FBQVMsTUFBQUcsS0FBRVosR0FBRTtBQUFLLE1BQUFoQyxLQUFFMkIsR0FBRTtBQUFNLE1BQUFnQixLQUFFM0MsR0FBRTtBQUFRLFVBQUlELEtBQUUsRUFBQyxNQUFLLFVBQVMsVUFBUzBDLEdBQUUsU0FBUTtBQUFFLGFBQUtHLEtBQUUsTUFBSVosR0FBRSxVQUFRaEMsTUFBR3lDLEtBQUVULEdBQUUsT0FBTVMsR0FBRSxhQUFXLEdBQUVBLEdBQUUsZUFBYTFDLElBQUVpQyxHQUFFLFlBQVUsU0FBT1MsS0FBRSxHQUFHekMsSUFBRUQsRUFBQyxHQUFFMEMsR0FBRSxlQUFhekMsR0FBRSxlQUFhO0FBQVUsZUFBTzJDLEtBQUVyRCxLQUFFLEdBQUdxRCxJQUFFckQsRUFBQyxLQUFHQSxLQUFFLEdBQUdBLElBQUVzRCxJQUFFRixJQUFFLElBQUksR0FBRXBELEdBQUUsU0FBTztBQUFHLE1BQUFBLEdBQUUsU0FDbmYwQztBQUFFLE1BQUFTLEdBQUUsU0FBT1Q7QUFBRSxNQUFBUyxHQUFFLFVBQVFuRDtBQUFFLE1BQUEwQyxHQUFFLFFBQU1TO0FBQUUsTUFBQUEsS0FBRW5EO0FBQUUsTUFBQUEsS0FBRTBDLEdBQUU7QUFBTSxNQUFBWSxLQUFFakIsR0FBRSxNQUFNO0FBQWMsTUFBQWlCLEtBQUUsU0FBT0EsS0FBRSxHQUFHRixFQUFDLElBQUUsRUFBQyxXQUFVRSxHQUFFLFlBQVVGLElBQUUsV0FBVSxNQUFLLGFBQVlFLEdBQUUsWUFBVztBQUFFLE1BQUF0RCxHQUFFLGdCQUFjc0Q7QUFBRSxNQUFBdEQsR0FBRSxhQUFXcUMsR0FBRSxhQUFXLENBQUNlO0FBQUUsTUFBQVYsR0FBRSxnQkFBYztBQUFHLGFBQU9TO0FBQUEsSUFBQztBQUFDLElBQUFuRCxLQUFFcUMsR0FBRTtBQUFNLElBQUFBLEtBQUVyQyxHQUFFO0FBQVEsSUFBQW1ELEtBQUUsR0FBR25ELElBQUUsRUFBQyxNQUFLLFdBQVUsVUFBU21ELEdBQUUsU0FBUSxDQUFDO0FBQUUsV0FBS1QsR0FBRSxPQUFLLE9BQUtTLEdBQUUsUUFBTUM7QUFBRyxJQUFBRCxHQUFFLFNBQU9UO0FBQUUsSUFBQVMsR0FBRSxVQUFRO0FBQUssYUFBT2QsT0FBSWUsS0FBRVYsR0FBRSxXQUFVLFNBQU9VLE1BQUdWLEdBQUUsWUFBVSxDQUFDTCxFQUFDLEdBQUVLLEdBQUUsU0FBTyxNQUFJVSxHQUFFLEtBQUtmLEVBQUM7QUFBRyxJQUFBSyxHQUFFLFFBQU1TO0FBQUUsSUFBQVQsR0FBRSxnQkFBYztBQUFLLFdBQU9TO0FBQUEsRUFBQztBQUNuZCxXQUFTLEdBQUdkLElBQUVLLElBQUU7QUFBQyxJQUFBQSxLQUFFLEdBQUcsRUFBQyxNQUFLLFdBQVUsVUFBU0EsR0FBQyxHQUFFTCxHQUFFLE1BQUssR0FBRSxJQUFJO0FBQUUsSUFBQUssR0FBRSxTQUFPTDtBQUFFLFdBQU9BLEdBQUUsUUFBTUs7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFO0FBQUMsYUFBT0EsTUFBRyxHQUFHQSxFQUFDO0FBQUUsT0FBR1QsSUFBRUwsR0FBRSxPQUFNLE1BQUtlLEVBQUM7QUFBRSxJQUFBZixLQUFFLEdBQUdLLElBQUVBLEdBQUUsYUFBYSxRQUFRO0FBQUUsSUFBQUwsR0FBRSxTQUFPO0FBQUUsSUFBQUssR0FBRSxnQkFBYztBQUFLLFdBQU9MO0FBQUEsRUFBQztBQUMvTixXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFVixJQUFFc0QsSUFBRTtBQUFDLFFBQUdGLElBQUU7QUFBQyxVQUFHVixHQUFFLFFBQU0sSUFBSSxRQUFPQSxHQUFFLFNBQU8sTUFBS1MsS0FBRSxHQUFHLE1BQU12QixHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsR0FBR1MsSUFBRUssSUFBRVksSUFBRUgsRUFBQztBQUFFLFVBQUcsU0FBT1QsR0FBRSxjQUFjLFFBQU9BLEdBQUUsUUFBTUwsR0FBRSxPQUFNSyxHQUFFLFNBQU8sS0FBSTtBQUFLLE1BQUExQyxLQUFFbUQsR0FBRTtBQUFTLE1BQUF6QyxLQUFFZ0MsR0FBRTtBQUFLLE1BQUFTLEtBQUUsR0FBRyxFQUFDLE1BQUssV0FBVSxVQUFTQSxHQUFFLFNBQVEsR0FBRXpDLElBQUUsR0FBRSxJQUFJO0FBQUUsTUFBQVYsS0FBRSxHQUFHQSxJQUFFVSxJQUFFNEMsSUFBRSxJQUFJO0FBQUUsTUFBQXRELEdBQUUsU0FBTztBQUFFLE1BQUFtRCxHQUFFLFNBQU9UO0FBQUUsTUFBQTFDLEdBQUUsU0FBTzBDO0FBQUUsTUFBQVMsR0FBRSxVQUFRbkQ7QUFBRSxNQUFBMEMsR0FBRSxRQUFNUztBQUFFLGFBQUtULEdBQUUsT0FBSyxNQUFJLEdBQUdBLElBQUVMLEdBQUUsT0FBTSxNQUFLaUIsRUFBQztBQUFFLE1BQUFaLEdBQUUsTUFBTSxnQkFBYyxHQUFHWSxFQUFDO0FBQUUsTUFBQVosR0FBRSxnQkFBYztBQUFHLGFBQU8xQztBQUFBLElBQUM7QUFBQyxRQUFHLE9BQUswQyxHQUFFLE9BQUssR0FBRyxRQUFPLEdBQUdMLElBQUVLLElBQUVZLElBQUUsSUFBSTtBQUFFLFFBQUcsU0FBTzVDLEdBQUUsTUFBSztBQUFDLE1BQUF5QyxLQUFFekMsR0FBRSxlQUFhQSxHQUFFLFlBQVk7QUFDaGYsVUFBR3lDLEdBQUUsS0FBSUUsS0FBRUYsR0FBRTtBQUFLLE1BQUFBLEtBQUVFO0FBQUUsTUFBQXJELEtBQUUsTUFBTTRCLEdBQUUsR0FBRyxDQUFDO0FBQUUsTUFBQXVCLEtBQUUsR0FBR25ELElBQUVtRCxJQUFFLE1BQU07QUFBRSxhQUFPLEdBQUdkLElBQUVLLElBQUVZLElBQUVILEVBQUM7QUFBQSxJQUFDO0FBQUMsSUFBQUUsS0FBRSxPQUFLQyxLQUFFakIsR0FBRTtBQUFZLFFBQUcsTUFBSWdCLElBQUU7QUFBQyxNQUFBRixLQUFFTTtBQUFFLFVBQUcsU0FBT04sSUFBRTtBQUFDLGdCQUFPRyxLQUFFLENBQUNBLElBQUM7QUFBQSxVQUFFLEtBQUs7QUFBRSxZQUFBNUMsS0FBRTtBQUFFO0FBQUEsVUFBTSxLQUFLO0FBQUcsWUFBQUEsS0FBRTtBQUFFO0FBQUEsVUFBTSxLQUFLO0FBQUEsVUFBRyxLQUFLO0FBQUEsVUFBSSxLQUFLO0FBQUEsVUFBSSxLQUFLO0FBQUEsVUFBSSxLQUFLO0FBQUEsVUFBSyxLQUFLO0FBQUEsVUFBSyxLQUFLO0FBQUEsVUFBSyxLQUFLO0FBQUEsVUFBSyxLQUFLO0FBQUEsVUFBTSxLQUFLO0FBQUEsVUFBTSxLQUFLO0FBQUEsVUFBTSxLQUFLO0FBQUEsVUFBTyxLQUFLO0FBQUEsVUFBTyxLQUFLO0FBQUEsVUFBTyxLQUFLO0FBQUEsVUFBUSxLQUFLO0FBQUEsVUFBUSxLQUFLO0FBQUEsVUFBUSxLQUFLO0FBQUEsVUFBUSxLQUFLO0FBQUEsVUFBUyxLQUFLO0FBQUEsVUFBUyxLQUFLO0FBQVMsWUFBQUEsS0FBRTtBQUFHO0FBQUEsVUFBTSxLQUFLO0FBQVUsWUFBQUEsS0FBRTtBQUFVO0FBQUEsVUFBTTtBQUFRLFlBQUFBLEtBQUU7QUFBQSxRQUFDO0FBQUMsUUFBQUEsS0FBRSxPQUFLQSxNQUFHeUMsR0FBRSxpQkFBZUcsT0FBSSxJQUFFNUM7QUFDbmYsY0FBSUEsTUFBR0EsT0FBSVYsR0FBRSxjQUFZQSxHQUFFLFlBQVVVLElBQUUsR0FBRzJCLElBQUUzQixFQUFDLEdBQUUsR0FBR3lDLElBQUVkLElBQUUzQixJQUFFLEVBQUU7QUFBQSxNQUFFO0FBQUMsU0FBSTtBQUFDLE1BQUF5QyxLQUFFLEdBQUcsTUFBTXZCLEdBQUUsR0FBRyxDQUFDLENBQUM7QUFBRSxhQUFPLEdBQUdTLElBQUVLLElBQUVZLElBQUVILEVBQUM7QUFBQSxJQUFDO0FBQUMsUUFBRyxTQUFPekMsR0FBRSxLQUFLLFFBQU9nQyxHQUFFLFNBQU8sS0FBSUEsR0FBRSxRQUFNTCxHQUFFLE9BQU1LLEtBQUUsR0FBRyxLQUFLLE1BQUtMLEVBQUMsR0FBRTNCLEdBQUUsY0FBWWdDLElBQUU7QUFBSyxJQUFBTCxLQUFFckMsR0FBRTtBQUFZLFNBQUcsR0FBR1UsR0FBRSxXQUFXO0FBQUUsU0FBR2dDO0FBQUUsSUFBQUksS0FBRTtBQUFHLFNBQUc7QUFBSyxhQUFPVCxPQUFJLEdBQUcsSUFBSSxJQUFFLElBQUcsR0FBRyxJQUFJLElBQUUsSUFBRyxHQUFHLElBQUksSUFBRSxJQUFHLEtBQUdBLEdBQUUsSUFBRyxLQUFHQSxHQUFFLFVBQVMsS0FBR0s7QUFBRyxJQUFBQSxLQUFFLEdBQUdBLElBQUVTLEdBQUUsUUFBUTtBQUFFLElBQUFULEdBQUUsU0FBTztBQUFLLFdBQU9BO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0wsSUFBRUssSUFBRVUsSUFBRTtBQUFDLElBQUFmLEdBQUUsU0FBT0s7QUFBRSxRQUFJUyxLQUFFZCxHQUFFO0FBQVUsYUFBT2MsT0FBSUEsR0FBRSxTQUFPVDtBQUFHLE9BQUdMLEdBQUUsUUFBT0ssSUFBRVUsRUFBQztBQUFBLEVBQUM7QUFDeGMsV0FBUyxHQUFHZixJQUFFSyxJQUFFVSxJQUFFRCxJQUFFekMsSUFBRTtBQUFDLFFBQUlWLEtBQUVxQyxHQUFFO0FBQWMsYUFBT3JDLEtBQUVxQyxHQUFFLGdCQUFjLEVBQUMsYUFBWUssSUFBRSxXQUFVLE1BQUssb0JBQW1CLEdBQUUsTUFBS1MsSUFBRSxNQUFLQyxJQUFFLFVBQVMxQyxHQUFDLEtBQUdWLEdBQUUsY0FBWTBDLElBQUUxQyxHQUFFLFlBQVUsTUFBS0EsR0FBRSxxQkFBbUIsR0FBRUEsR0FBRSxPQUFLbUQsSUFBRW5ELEdBQUUsT0FBS29ELElBQUVwRCxHQUFFLFdBQVNVO0FBQUEsRUFBRTtBQUMzTyxXQUFTLEdBQUcyQixJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBSUQsS0FBRVQsR0FBRSxjQUFhaEMsS0FBRXlDLEdBQUUsYUFBWW5ELEtBQUVtRCxHQUFFO0FBQUssT0FBR2QsSUFBRUssSUFBRVMsR0FBRSxVQUFTQyxFQUFDO0FBQUUsSUFBQUQsS0FBRUYsR0FBRTtBQUFRLFFBQUcsT0FBS0UsS0FBRSxHQUFHLENBQUFBLEtBQUVBLEtBQUUsSUFBRSxHQUFFVCxHQUFFLFNBQU87QUFBQSxTQUFRO0FBQUMsVUFBRyxTQUFPTCxNQUFHLE9BQUtBLEdBQUUsUUFBTSxLQUFLLEdBQUUsTUFBSUEsS0FBRUssR0FBRSxPQUFNLFNBQU9MLE1BQUc7QUFBQyxZQUFHLE9BQUtBLEdBQUUsSUFBSSxVQUFPQSxHQUFFLGlCQUFlLEdBQUdBLElBQUVlLElBQUVWLEVBQUM7QUFBQSxpQkFBVSxPQUFLTCxHQUFFLElBQUksSUFBR0EsSUFBRWUsSUFBRVYsRUFBQztBQUFBLGlCQUFVLFNBQU9MLEdBQUUsT0FBTTtBQUFDLFVBQUFBLEdBQUUsTUFBTSxTQUFPQTtBQUFFLFVBQUFBLEtBQUVBLEdBQUU7QUFBTTtBQUFBLFFBQVE7QUFBQyxZQUFHQSxPQUFJSyxHQUFFLE9BQU07QUFBRSxlQUFLLFNBQU9MLEdBQUUsV0FBUztBQUFDLGNBQUcsU0FBT0EsR0FBRSxVQUFRQSxHQUFFLFdBQVNLLEdBQUUsT0FBTTtBQUFFLFVBQUFMLEtBQUVBLEdBQUU7QUFBQSxRQUFNO0FBQUMsUUFBQUEsR0FBRSxRQUFRLFNBQU9BLEdBQUU7QUFBTyxRQUFBQSxLQUFFQSxHQUFFO0FBQUEsTUFBTztBQUFDLE1BQUFjLE1BQUc7QUFBQSxJQUFDO0FBQUMsSUFBQVAsR0FBRUssSUFBRUUsRUFBQztBQUFFLFFBQUcsT0FBS1QsR0FBRSxPQUFLLEdBQUcsQ0FBQUEsR0FBRSxnQkFDL2U7QUFBQSxRQUFVLFNBQU9oQyxJQUFHO0FBQUEsTUFBQSxLQUFLO0FBQVcsUUFBQTBDLEtBQUVWLEdBQUU7QUFBTSxhQUFJaEMsS0FBRSxNQUFLLFNBQU8wQyxLQUFHLENBQUFmLEtBQUVlLEdBQUUsV0FBVSxTQUFPZixNQUFHLFNBQU8sR0FBR0EsRUFBQyxNQUFJM0IsS0FBRTBDLEtBQUdBLEtBQUVBLEdBQUU7QUFBUSxRQUFBQSxLQUFFMUM7QUFBRSxpQkFBTzBDLE1BQUcxQyxLQUFFZ0MsR0FBRSxPQUFNQSxHQUFFLFFBQU0sU0FBT2hDLEtBQUUwQyxHQUFFLFNBQVFBLEdBQUUsVUFBUTtBQUFNLFdBQUdWLElBQUUsT0FBR2hDLElBQUUwQyxJQUFFcEQsRUFBQztBQUFFO0FBQUEsTUFBTSxLQUFLO0FBQVksUUFBQW9ELEtBQUU7QUFBSyxRQUFBMUMsS0FBRWdDLEdBQUU7QUFBTSxhQUFJQSxHQUFFLFFBQU0sTUFBSyxTQUFPaEMsTUFBRztBQUFDLFVBQUEyQixLQUFFM0IsR0FBRTtBQUFVLGNBQUcsU0FBTzJCLE1BQUcsU0FBTyxHQUFHQSxFQUFDLEdBQUU7QUFBQyxZQUFBSyxHQUFFLFFBQU1oQztBQUFFO0FBQUEsVUFBSztBQUFDLFVBQUEyQixLQUFFM0IsR0FBRTtBQUFRLFVBQUFBLEdBQUUsVUFBUTBDO0FBQUUsVUFBQUEsS0FBRTFDO0FBQUUsVUFBQUEsS0FBRTJCO0FBQUEsUUFBQztBQUFDLFdBQUdLLElBQUUsTUFBR1UsSUFBRSxNQUFLcEQsRUFBQztBQUFFO0FBQUEsTUFBTSxLQUFLO0FBQVcsV0FBRzBDLElBQUUsT0FBRyxNQUFLLE1BQUssTUFBTTtBQUFFO0FBQUEsTUFBTTtBQUFRLFFBQUFBLEdBQUUsZ0JBQWM7QUFBQSxJQUFJO0FBQUMsV0FBT0EsR0FBRTtBQUFBLEVBQUs7QUFDN2QsV0FBUyxHQUFHTCxJQUFFSyxJQUFFO0FBQUMsV0FBS0EsR0FBRSxPQUFLLE1BQUksU0FBT0wsT0FBSUEsR0FBRSxZQUFVLE1BQUtLLEdBQUUsWUFBVSxNQUFLQSxHQUFFLFNBQU87QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsYUFBT2YsT0FBSUssR0FBRSxlQUFhTCxHQUFFO0FBQWMsVUFBSUssR0FBRTtBQUFNLFFBQUcsT0FBS1UsS0FBRVYsR0FBRSxZQUFZLFFBQU87QUFBSyxRQUFHLFNBQU9MLE1BQUdLLEdBQUUsVUFBUUwsR0FBRSxNQUFNLE9BQU0sTUFBTVQsR0FBRSxHQUFHLENBQUM7QUFBRSxRQUFHLFNBQU9jLEdBQUUsT0FBTTtBQUFDLE1BQUFMLEtBQUVLLEdBQUU7QUFBTSxNQUFBVSxLQUFFLEdBQUdmLElBQUVBLEdBQUUsWUFBWTtBQUFFLE1BQUFLLEdBQUUsUUFBTVU7QUFBRSxXQUFJQSxHQUFFLFNBQU9WLElBQUUsU0FBT0wsR0FBRSxVQUFTLENBQUFBLEtBQUVBLEdBQUUsU0FBUWUsS0FBRUEsR0FBRSxVQUFRLEdBQUdmLElBQUVBLEdBQUUsWUFBWSxHQUFFZSxHQUFFLFNBQU9WO0FBQUUsTUFBQVUsR0FBRSxVQUFRO0FBQUEsSUFBSTtBQUFDLFdBQU9WLEdBQUU7QUFBQSxFQUFLO0FBQzlhLFdBQVMsR0FBR0wsSUFBRUssSUFBRVUsSUFBRTtBQUFDLFlBQU9WLEdBQUUsS0FBSztBQUFBLE1BQUEsS0FBSztBQUFFLFdBQUdBLEVBQUM7QUFBRSxXQUFFO0FBQUc7QUFBQSxNQUFNLEtBQUs7QUFBRSxXQUFHQSxFQUFDO0FBQUU7QUFBQSxNQUFNLEtBQUs7QUFBRSxXQUFHQSxHQUFFLElBQUksS0FBRyxHQUFHQSxFQUFDO0FBQUU7QUFBQSxNQUFNLEtBQUs7QUFBRSxXQUFHQSxJQUFFQSxHQUFFLFVBQVUsYUFBYTtBQUFFO0FBQUEsTUFBTSxLQUFLO0FBQUcsWUFBSVMsS0FBRVQsR0FBRSxLQUFLLFVBQVNoQyxLQUFFZ0MsR0FBRSxjQUFjO0FBQU0sUUFBQUUsR0FBRSxJQUFHTyxHQUFFLGFBQWE7QUFBRSxRQUFBQSxHQUFFLGdCQUFjekM7QUFBRTtBQUFBLE1BQU0sS0FBSztBQUFHLFFBQUF5QyxLQUFFVCxHQUFFO0FBQWMsWUFBRyxTQUFPUyxJQUFFO0FBQUMsY0FBRyxTQUFPQSxHQUFFLFdBQVcsUUFBT1AsR0FBRUssSUFBRUEsR0FBRSxVQUFRLENBQUMsR0FBRVAsR0FBRSxTQUFPLEtBQUk7QUFBSyxjQUFHLE9BQUtVLEtBQUVWLEdBQUUsTUFBTSxZQUFZLFFBQU8sR0FBR0wsSUFBRUssSUFBRVUsRUFBQztBQUFFLFVBQUFSLEdBQUVLLElBQUVBLEdBQUUsVUFBUSxDQUFDO0FBQUUsVUFBQVosS0FBRSxHQUFHQSxJQUFFSyxJQUFFVSxFQUFDO0FBQUUsaUJBQU8sU0FBT2YsS0FBRUEsR0FBRSxVQUFRO0FBQUEsUUFBSTtBQUFDLFFBQUFPLEdBQUVLLElBQUVBLEdBQUUsVUFBUSxDQUFDO0FBQUU7QUFBQSxNQUFNLEtBQUs7QUFBRyxRQUFBRSxLQUFFLE9BQUtDLEtBQ3JmVixHQUFFO0FBQVksWUFBRyxPQUFLTCxHQUFFLFFBQU0sTUFBSztBQUFDLGNBQUdjLEdBQUUsUUFBTyxHQUFHZCxJQUFFSyxJQUFFVSxFQUFDO0FBQUUsVUFBQVYsR0FBRSxTQUFPO0FBQUEsUUFBRztBQUFDLFFBQUFoQyxLQUFFZ0MsR0FBRTtBQUFjLGlCQUFPaEMsT0FBSUEsR0FBRSxZQUFVLE1BQUtBLEdBQUUsT0FBSyxNQUFLQSxHQUFFLGFBQVc7QUFBTSxRQUFBa0MsR0FBRUssSUFBRUEsR0FBRSxPQUFPO0FBQUUsWUFBR0UsR0FBRTtBQUFBLFlBQVcsUUFBTztBQUFBLE1BQUssS0FBSztBQUFBLE1BQUcsS0FBSztBQUFHLGVBQU9ULEdBQUUsUUFBTSxHQUFFLEdBQUdMLElBQUVLLElBQUVVLEVBQUM7QUFBQSxJQUFDO0FBQUMsV0FBTyxHQUFHZixJQUFFSyxJQUFFVSxFQUFDO0FBQUEsRUFBQztBQUFDLE1BQUksSUFBRyxJQUFHLElBQUc7QUFDeFEsT0FBRyxTQUFTZixJQUFFSyxJQUFFO0FBQUMsYUFBUVUsS0FBRVYsR0FBRSxPQUFNLFNBQU9VLE1BQUc7QUFBQyxVQUFHLE1BQUlBLEdBQUUsT0FBSyxNQUFJQSxHQUFFLElBQUksQ0FBQWYsR0FBRSxZQUFZZSxHQUFFLFNBQVM7QUFBQSxlQUFVLE1BQUlBLEdBQUUsT0FBSyxTQUFPQSxHQUFFLE9BQU07QUFBQyxRQUFBQSxHQUFFLE1BQU0sU0FBT0E7QUFBRSxRQUFBQSxLQUFFQSxHQUFFO0FBQU07QUFBQSxNQUFRO0FBQUMsVUFBR0EsT0FBSVYsR0FBRTtBQUFNLGFBQUssU0FBT1UsR0FBRSxXQUFTO0FBQUMsWUFBRyxTQUFPQSxHQUFFLFVBQVFBLEdBQUUsV0FBU1YsR0FBRTtBQUFPLFFBQUFVLEtBQUVBLEdBQUU7QUFBQSxNQUFNO0FBQUMsTUFBQUEsR0FBRSxRQUFRLFNBQU9BLEdBQUU7QUFBTyxNQUFBQSxLQUFFQSxHQUFFO0FBQUEsSUFBTztBQUFBLEVBQUM7QUFBRSxPQUFHLFdBQVU7QUFBQSxFQUFFO0FBQ3pULE9BQUcsU0FBU2YsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFFBQUl6QyxLQUFFMkIsR0FBRTtBQUFjLFFBQUczQixPQUFJeUMsSUFBRTtBQUFDLE1BQUFkLEtBQUVLLEdBQUU7QUFBVSxTQUFHLEdBQUcsT0FBTztBQUFFLFVBQUkxQyxLQUFFO0FBQUssY0FBT29ELElBQUc7QUFBQSxRQUFBLEtBQUs7QUFBUSxVQUFBMUMsS0FBRSxHQUFHMkIsSUFBRTNCLEVBQUM7QUFBRSxVQUFBeUMsS0FBRSxHQUFHZCxJQUFFYyxFQUFDO0FBQUUsVUFBQW5ELEtBQUU7QUFBRztBQUFBLFFBQU0sS0FBSztBQUFTLFVBQUFVLEtBQUUwQixHQUFFLENBQUEsR0FBRzFCLElBQUUsRUFBQyxPQUFNLE9BQU0sQ0FBQztBQUFFLFVBQUF5QyxLQUFFZixHQUFFLENBQUEsR0FBR2UsSUFBRSxFQUFDLE9BQU0sT0FBTSxDQUFDO0FBQUUsVUFBQW5ELEtBQUUsQ0FBRTtBQUFDO0FBQUEsUUFBTSxLQUFLO0FBQVcsVUFBQVUsS0FBRSxHQUFHMkIsSUFBRTNCLEVBQUM7QUFBRSxVQUFBeUMsS0FBRSxHQUFHZCxJQUFFYyxFQUFDO0FBQUUsVUFBQW5ELEtBQUUsQ0FBRTtBQUFDO0FBQUEsUUFBTTtBQUFRLHlCQUFhLE9BQU9VLEdBQUUsV0FBUyxlQUFhLE9BQU95QyxHQUFFLFlBQVVkLEdBQUUsVUFBUTtBQUFBLE1BQUc7QUFBQyxTQUFHZSxJQUFFRCxFQUFDO0FBQUUsVUFBSUc7QUFBRSxNQUFBRixLQUFFO0FBQUssV0FBSTFCLE1BQUtoQixHQUFFLEtBQUcsQ0FBQ3lDLEdBQUUsZUFBZXpCLEVBQUMsS0FBR2hCLEdBQUUsZUFBZWdCLEVBQUMsS0FBRyxRQUFNaEIsR0FBRWdCLEVBQUMsRUFBRSxLQUFHLFlBQVVBLElBQUU7QUFBQyxZQUFJMkIsS0FBRTNDLEdBQUVnQixFQUFDO0FBQUUsYUFBSTRCLE1BQUtELEdBQUUsQ0FBQUEsR0FBRSxlQUFlQyxFQUFDLE1BQ2xmRixPQUFJQSxLQUFFLEtBQUlBLEdBQUVFLEVBQUMsSUFBRTtBQUFBLE1BQUcsTUFBSywrQkFBNEI1QixNQUFHLGVBQWFBLE1BQUcscUNBQW1DQSxNQUFHLCtCQUE2QkEsTUFBRyxnQkFBY0EsT0FBSSxHQUFHLGVBQWVBLEVBQUMsSUFBRTFCLE9BQUlBLEtBQUUsQ0FBQSxNQUFLQSxLQUFFQSxNQUFHLElBQUksS0FBSzBCLElBQUUsSUFBSTtBQUFHLFdBQUlBLE1BQUt5QixJQUFFO0FBQUMsWUFBSTFDLEtBQUUwQyxHQUFFekIsRUFBQztBQUFFLFFBQUEyQixLQUFFLFFBQU0zQyxLQUFFQSxHQUFFZ0IsRUFBQyxJQUFFO0FBQU8sWUFBR3lCLEdBQUUsZUFBZXpCLEVBQUMsS0FBR2pCLE9BQUk0QyxPQUFJLFFBQU01QyxNQUFHLFFBQU00QyxJQUFHLEtBQUcsWUFBVTNCLEdBQUUsS0FBRzJCLElBQUU7QUFBQyxlQUFJQyxNQUFLRCxHQUFFLEVBQUNBLEdBQUUsZUFBZUMsRUFBQyxLQUFHN0MsTUFBR0EsR0FBRSxlQUFlNkMsRUFBQyxNQUFJRixPQUFJQSxLQUFFLENBQUEsSUFBSUEsR0FBRUUsRUFBQyxJQUFFO0FBQUksZUFBSUEsTUFBSzdDLEdBQUUsQ0FBQUEsR0FBRSxlQUFlNkMsRUFBQyxLQUFHRCxHQUFFQyxFQUFDLE1BQUk3QyxHQUFFNkMsRUFBQyxNQUFJRixPQUFJQSxLQUFFLENBQUUsSUFBRUEsR0FBRUUsRUFBQyxJQUFFN0MsR0FBRTZDLEVBQUM7QUFBQSxRQUFFLE1BQU0sQ0FBQUYsT0FBSXBELE9BQUlBLEtBQUUsQ0FBRSxJQUFFQSxHQUFFO0FBQUEsVUFBSzBCO0FBQUEsVUFDcGYwQjtBQUFBLFFBQUMsSUFBR0EsS0FBRTNDO0FBQUEsWUFBTSwrQkFBNEJpQixNQUFHakIsS0FBRUEsS0FBRUEsR0FBRSxTQUFPLFFBQU80QyxLQUFFQSxLQUFFQSxHQUFFLFNBQU8sUUFBTyxRQUFNNUMsTUFBRzRDLE9BQUk1QyxPQUFJVCxLQUFFQSxNQUFHLENBQUEsR0FBSSxLQUFLMEIsSUFBRWpCLEVBQUMsS0FBRyxlQUFhaUIsS0FBRSxhQUFXLE9BQU9qQixNQUFHLGFBQVcsT0FBT0EsT0FBSVQsS0FBRUEsTUFBRyxDQUFBLEdBQUksS0FBSzBCLElBQUUsS0FBR2pCLEVBQUMsSUFBRSxxQ0FBbUNpQixNQUFHLCtCQUE2QkEsT0FBSSxHQUFHLGVBQWVBLEVBQUMsS0FBRyxRQUFNakIsTUFBRyxlQUFhaUIsTUFBR2MsR0FBRSxVQUFTSCxFQUFDLEdBQUVyQyxNQUFHcUQsT0FBSTVDLE9BQUlULEtBQUUsUUFBTUEsS0FBRUEsTUFBRyxDQUFBLEdBQUksS0FBSzBCLElBQUVqQixFQUFDO0FBQUEsTUFBRTtBQUFDLE1BQUEyQyxPQUFJcEQsS0FBRUEsTUFBRyxDQUFBLEdBQUksS0FBSyxTQUFRb0QsRUFBQztBQUFFLFVBQUkxQixLQUFFMUI7QUFBRSxVQUFHMEMsR0FBRSxjQUFZaEIsR0FBRSxDQUFBZ0IsR0FBRSxTQUFPO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBRSxPQUFHLFNBQVNMLElBQUVLLElBQUVVLElBQUVELElBQUU7QUFBQyxJQUFBQyxPQUFJRCxPQUFJVCxHQUFFLFNBQU87QUFBQSxFQUFFO0FBQ2hlLFdBQVMsR0FBR0wsSUFBRUssSUFBRTtBQUFDLFFBQUcsQ0FBQ0ksR0FBRSxTQUFPVCxHQUFFLFVBQVE7QUFBQSxNQUFFLEtBQUs7QUFBUyxRQUFBSyxLQUFFTCxHQUFFO0FBQUssaUJBQVFlLEtBQUUsTUFBSyxTQUFPVixLQUFHLFVBQU9BLEdBQUUsY0FBWVUsS0FBRVYsS0FBR0EsS0FBRUEsR0FBRTtBQUFRLGlCQUFPVSxLQUFFZixHQUFFLE9BQUssT0FBS2UsR0FBRSxVQUFRO0FBQUs7QUFBQSxNQUFNLEtBQUs7QUFBWSxRQUFBQSxLQUFFZixHQUFFO0FBQUssaUJBQVFjLEtBQUUsTUFBSyxTQUFPQyxLQUFHLFVBQU9BLEdBQUUsY0FBWUQsS0FBRUMsS0FBR0EsS0FBRUEsR0FBRTtBQUFRLGlCQUFPRCxLQUFFVCxNQUFHLFNBQU9MLEdBQUUsT0FBS0EsR0FBRSxPQUFLLE9BQUtBLEdBQUUsS0FBSyxVQUFRLE9BQUtjLEdBQUUsVUFBUTtBQUFBLElBQUk7QUFBQSxFQUFDO0FBQzVVLFdBQVNRLEdBQUV0QixJQUFFO0FBQUMsUUFBSUssS0FBRSxTQUFPTCxHQUFFLGFBQVdBLEdBQUUsVUFBVSxVQUFRQSxHQUFFLE9BQU1lLEtBQUUsR0FBRUQsS0FBRTtBQUFFLFFBQUdULEdBQUUsVUFBUWhDLEtBQUUyQixHQUFFLE9BQU0sU0FBTzNCLEtBQUcsQ0FBQTBDLE1BQUcxQyxHQUFFLFFBQU1BLEdBQUUsWUFBV3lDLE1BQUd6QyxHQUFFLGVBQWEsVUFBU3lDLE1BQUd6QyxHQUFFLFFBQU0sVUFBU0EsR0FBRSxTQUFPMkIsSUFBRTNCLEtBQUVBLEdBQUU7QUFBQSxRQUFhLE1BQUlBLEtBQUUyQixHQUFFLE9BQU0sU0FBTzNCLEtBQUcsQ0FBQTBDLE1BQUcxQyxHQUFFLFFBQU1BLEdBQUUsWUFBV3lDLE1BQUd6QyxHQUFFLGNBQWF5QyxNQUFHekMsR0FBRSxPQUFNQSxHQUFFLFNBQU8yQixJQUFFM0IsS0FBRUEsR0FBRTtBQUFRLElBQUEyQixHQUFFLGdCQUFjYztBQUFFLElBQUFkLEdBQUUsYUFBV2U7QUFBRSxXQUFPVjtBQUFBLEVBQUM7QUFDN1YsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBSUQsS0FBRVQsR0FBRTtBQUFhLE9BQUdBLEVBQUM7QUFBRSxZQUFPQSxHQUFFO01BQUssS0FBSztBQUFBLE1BQUUsS0FBSztBQUFBLE1BQUcsS0FBSztBQUFBLE1BQUcsS0FBSztBQUFBLE1BQUUsS0FBSztBQUFBLE1BQUcsS0FBSztBQUFBLE1BQUUsS0FBSztBQUFBLE1BQUUsS0FBSztBQUFBLE1BQUcsS0FBSztBQUFBLE1BQUUsS0FBSztBQUFHLGVBQU9pQixHQUFFakIsRUFBQyxHQUFFO0FBQUEsTUFBSyxLQUFLO0FBQUUsZUFBTyxHQUFHQSxHQUFFLElBQUksS0FBRyxHQUFFLEdBQUdpQixHQUFFakIsRUFBQyxHQUFFO0FBQUEsTUFBSyxLQUFLO0FBQUUsUUFBQVMsS0FBRVQsR0FBRTtBQUFVO0FBQUssUUFBQUQsR0FBRSxFQUFFO0FBQUUsUUFBQUEsR0FBRUksRUFBQztBQUFFLFdBQUk7QUFBQyxRQUFBTSxHQUFFLG1CQUFpQkEsR0FBRSxVQUFRQSxHQUFFLGdCQUFlQSxHQUFFLGlCQUFlO0FBQU0sWUFBRyxTQUFPZCxNQUFHLFNBQU9BLEdBQUUsTUFBTSxJQUFHSyxFQUFDLElBQUVBLEdBQUUsU0FBTyxJQUFFLFNBQU9MLE1BQUdBLEdBQUUsY0FBYyxnQkFBYyxPQUFLSyxHQUFFLFFBQU0sU0FBT0EsR0FBRSxTQUFPLE1BQUssU0FBTyxPQUFLLEdBQUcsRUFBRSxHQUFFLEtBQUc7QUFBTyxXQUFHTCxJQUFFSyxFQUFDO0FBQUUsUUFBQWlCLEdBQUVqQixFQUFDO0FBQUUsZUFBTztBQUFBLE1BQUssS0FBSztBQUFFLFdBQUdBLEVBQUM7QUFBRSxZQUFJaEMsS0FBRSxHQUFHLEdBQUcsT0FBTztBQUM3ZixRQUFBMEMsS0FBRVYsR0FBRTtBQUFLLFlBQUcsU0FBT0wsTUFBRyxRQUFNSyxHQUFFLFVBQVUsSUFBR0wsSUFBRUssSUFBRVUsSUFBRUQsSUFBRXpDLEVBQUMsR0FBRTJCLEdBQUUsUUFBTUssR0FBRSxRQUFNQSxHQUFFLFNBQU8sS0FBSUEsR0FBRSxTQUFPO0FBQUEsYUFBYTtBQUFDLGNBQUcsQ0FBQ1MsSUFBRTtBQUFDLGdCQUFHLFNBQU9ULEdBQUUsVUFBVSxPQUFNLE1BQU1kLEdBQUUsR0FBRyxDQUFDO0FBQUUsWUFBQStCLEdBQUVqQixFQUFDO0FBQUUsbUJBQU87QUFBQSxVQUFJO0FBQUMsVUFBQUwsS0FBRSxHQUFHLEdBQUcsT0FBTztBQUFFLGNBQUcsR0FBR0ssRUFBQyxHQUFFO0FBQUMsWUFBQVMsS0FBRVQsR0FBRTtBQUFVLFlBQUFVLEtBQUVWLEdBQUU7QUFBSyxnQkFBSTFDLEtBQUUwQyxHQUFFO0FBQWMsWUFBQVMsR0FBRSxFQUFFLElBQUVUO0FBQUUsWUFBQVMsR0FBRSxFQUFFLElBQUVuRDtBQUFFLFlBQUFxQyxLQUFFLE9BQUtLLEdBQUUsT0FBSztBQUFHLG9CQUFPVSxJQUFDO0FBQUEsY0FBRSxLQUFLO0FBQVMsZ0JBQUFaLEdBQUUsVUFBU1csRUFBQztBQUFFLGdCQUFBWCxHQUFFLFNBQVFXLEVBQUM7QUFBRTtBQUFBLGNBQU0sS0FBSztBQUFBLGNBQVMsS0FBSztBQUFBLGNBQVMsS0FBSztBQUFRLGdCQUFBWCxHQUFFLFFBQU9XLEVBQUM7QUFBRTtBQUFBLGNBQU0sS0FBSztBQUFBLGNBQVEsS0FBSztBQUFRLHFCQUFJekMsS0FBRSxHQUFFQSxLQUFFLEdBQUcsUUFBT0EsS0FBSSxDQUFBOEIsR0FBRSxHQUFHOUIsRUFBQyxHQUFFeUMsRUFBQztBQUFFO0FBQUEsY0FBTSxLQUFLO0FBQVMsZ0JBQUFYLEdBQUUsU0FBUVcsRUFBQztBQUFFO0FBQUEsY0FBTSxLQUFLO0FBQUEsY0FBTSxLQUFLO0FBQUEsY0FBUSxLQUFLO0FBQU8sZ0JBQUFYO0FBQUEsa0JBQUU7QUFBQSxrQkFDbmhCVztBQUFBLGdCQUFDO0FBQUUsZ0JBQUFYLEdBQUUsUUFBT1csRUFBQztBQUFFO0FBQUEsY0FBTSxLQUFLO0FBQVUsZ0JBQUFYLEdBQUUsVUFBU1csRUFBQztBQUFFO0FBQUEsY0FBTSxLQUFLO0FBQVEsbUJBQUdBLElBQUVuRCxFQUFDO0FBQUUsZ0JBQUF3QyxHQUFFLFdBQVVXLEVBQUM7QUFBRTtBQUFBLGNBQU0sS0FBSztBQUFTLGdCQUFBQSxHQUFFLGdCQUFjLEVBQUMsYUFBWSxDQUFDLENBQUNuRCxHQUFFLFNBQVE7QUFBRSxnQkFBQXdDLEdBQUUsV0FBVVcsRUFBQztBQUFFO0FBQUEsY0FBTSxLQUFLO0FBQVcsbUJBQUdBLElBQUVuRCxFQUFDLEdBQUV3QyxHQUFFLFdBQVVXLEVBQUM7QUFBQSxZQUFDO0FBQUMsZUFBR0MsSUFBRXBELEVBQUM7QUFBRSxZQUFBVSxLQUFFO0FBQUsscUJBQVE0QyxNQUFLdEQsR0FBRSxLQUFHQSxHQUFFLGVBQWVzRCxFQUFDLEdBQUU7QUFBQyxrQkFBSUQsS0FBRXJELEdBQUVzRCxFQUFDO0FBQUUsNkJBQWFBLEtBQUUsYUFBVyxPQUFPRCxLQUFFRixHQUFFLGdCQUFjRSxPQUFJLFNBQUtyRCxHQUFFLDRCQUEwQixHQUFHbUQsR0FBRSxhQUFZRSxJQUFFaEIsRUFBQyxHQUFFM0IsS0FBRSxDQUFDLFlBQVcyQyxFQUFDLEtBQUcsYUFBVyxPQUFPQSxNQUFHRixHQUFFLGdCQUFjLEtBQUdFLE9BQUksU0FBS3JELEdBQUUsNEJBQTBCO0FBQUEsZ0JBQUdtRCxHQUFFO0FBQUEsZ0JBQzFlRTtBQUFBLGdCQUFFaEI7QUFBQSxjQUFDLEdBQUUzQixLQUFFLENBQUMsWUFBVyxLQUFHMkMsRUFBQyxLQUFHLEdBQUcsZUFBZUMsRUFBQyxLQUFHLFFBQU1ELE1BQUcsZUFBYUMsTUFBR2QsR0FBRSxVQUFTVyxFQUFDO0FBQUEsWUFBQztBQUFDLG9CQUFPQztjQUFHLEtBQUs7QUFBUSxtQkFBR0QsRUFBQztBQUFFLG1CQUFHQSxJQUFFbkQsSUFBRSxJQUFFO0FBQUU7QUFBQSxjQUFNLEtBQUs7QUFBVyxtQkFBR21ELEVBQUM7QUFBRSxtQkFBR0EsRUFBQztBQUFFO0FBQUEsY0FBTSxLQUFLO0FBQUEsY0FBUyxLQUFLO0FBQVM7QUFBQSxjQUFNO0FBQVEsK0JBQWEsT0FBT25ELEdBQUUsWUFBVW1ELEdBQUUsVUFBUTtBQUFBLFlBQUc7QUFBQyxZQUFBQSxLQUFFekM7QUFBRSxZQUFBZ0MsR0FBRSxjQUFZUztBQUFFLHFCQUFPQSxPQUFJVCxHQUFFLFNBQU87QUFBQSxVQUFFLE9BQUs7QUFBQyxZQUFBWSxLQUFFLE1BQUk1QyxHQUFFLFdBQVNBLEtBQUVBLEdBQUU7QUFBYywrQ0FBaUMyQixPQUFJQSxLQUFFLEdBQUdlLEVBQUM7QUFBRywrQ0FBaUNmLEtBQUUsYUFBV2UsTUFBR2YsS0FBRWlCLEdBQUUsY0FBYyxLQUFLLEdBQUVqQixHQUFFLFlBQVUsc0JBQXVCQSxLQUFFQSxHQUFFLFlBQVlBLEdBQUUsVUFBVSxLQUN6Z0IsYUFBVyxPQUFPYyxHQUFFLEtBQUdkLEtBQUVpQixHQUFFLGNBQWNGLElBQUUsRUFBQyxJQUFHRCxHQUFFLEdBQUUsQ0FBQyxLQUFHZCxLQUFFaUIsR0FBRSxjQUFjRixFQUFDLEdBQUUsYUFBV0EsT0FBSUUsS0FBRWpCLElBQUVjLEdBQUUsV0FBU0csR0FBRSxXQUFTLE9BQUdILEdBQUUsU0FBT0csR0FBRSxPQUFLSCxHQUFFLFVBQVFkLEtBQUVpQixHQUFFLGdCQUFnQmpCLElBQUVlLEVBQUM7QUFBRSxZQUFBZixHQUFFLEVBQUUsSUFBRUs7QUFBRSxZQUFBTCxHQUFFLEVBQUUsSUFBRWM7QUFBRSxlQUFHZCxJQUFFSyxJQUFFLE9BQUcsS0FBRTtBQUFFLFlBQUFBLEdBQUUsWUFBVUw7QUFBRSxlQUFFO0FBQUMsY0FBQWlCLEtBQUUsR0FBR0YsSUFBRUQsRUFBQztBQUFFLHNCQUFPQyxJQUFHO0FBQUEsZ0JBQUEsS0FBSztBQUFTLGtCQUFBWixHQUFFLFVBQVNILEVBQUM7QUFBRSxrQkFBQUcsR0FBRSxTQUFRSCxFQUFDO0FBQUUsa0JBQUEzQixLQUFFeUM7QUFBRTtBQUFBLGdCQUFNLEtBQUs7QUFBQSxnQkFBUyxLQUFLO0FBQUEsZ0JBQVMsS0FBSztBQUFRLGtCQUFBWCxHQUFFLFFBQU9ILEVBQUM7QUFBRSxrQkFBQTNCLEtBQUV5QztBQUFFO0FBQUEsZ0JBQU0sS0FBSztBQUFBLGdCQUFRLEtBQUs7QUFBUSx1QkFBSXpDLEtBQUUsR0FBRUEsS0FBRSxHQUFHLFFBQU9BLEtBQUksQ0FBQThCLEdBQUUsR0FBRzlCLEVBQUMsR0FBRTJCLEVBQUM7QUFBRSxrQkFBQTNCLEtBQUV5QztBQUFFO0FBQUEsZ0JBQU0sS0FBSztBQUFTLGtCQUFBWCxHQUFFLFNBQVFILEVBQUM7QUFBRSxrQkFBQTNCLEtBQUV5QztBQUFFO0FBQUEsZ0JBQU0sS0FBSztBQUFBLGdCQUFNLEtBQUs7QUFBQSxnQkFBUSxLQUFLO0FBQU8sa0JBQUFYO0FBQUEsb0JBQUU7QUFBQSxvQkFDbGZIO0FBQUEsa0JBQUM7QUFBRSxrQkFBQUcsR0FBRSxRQUFPSCxFQUFDO0FBQUUsa0JBQUEzQixLQUFFeUM7QUFBRTtBQUFBLGdCQUFNLEtBQUs7QUFBVSxrQkFBQVgsR0FBRSxVQUFTSCxFQUFDO0FBQUUsa0JBQUEzQixLQUFFeUM7QUFBRTtBQUFBLGdCQUFNLEtBQUs7QUFBUSxxQkFBR2QsSUFBRWMsRUFBQztBQUFFLGtCQUFBekMsS0FBRSxHQUFHMkIsSUFBRWMsRUFBQztBQUFFLGtCQUFBWCxHQUFFLFdBQVVILEVBQUM7QUFBRTtBQUFBLGdCQUFNLEtBQUs7QUFBUyxrQkFBQTNCLEtBQUV5QztBQUFFO0FBQUEsZ0JBQU0sS0FBSztBQUFTLGtCQUFBZCxHQUFFLGdCQUFjLEVBQUMsYUFBWSxDQUFDLENBQUNjLEdBQUUsU0FBUTtBQUFFLGtCQUFBekMsS0FBRTBCLEdBQUUsQ0FBRSxHQUFDZSxJQUFFLEVBQUMsT0FBTSxPQUFNLENBQUM7QUFBRSxrQkFBQVgsR0FBRSxXQUFVSCxFQUFDO0FBQUU7QUFBQSxnQkFBTSxLQUFLO0FBQVcscUJBQUdBLElBQUVjLEVBQUM7QUFBRSxrQkFBQXpDLEtBQUUsR0FBRzJCLElBQUVjLEVBQUM7QUFBRSxrQkFBQVgsR0FBRSxXQUFVSCxFQUFDO0FBQUU7QUFBQSxnQkFBTTtBQUFRLGtCQUFBM0IsS0FBRXlDO0FBQUEsY0FBQztBQUFDLGlCQUFHQyxJQUFFMUMsRUFBQztBQUFFLGNBQUEyQyxLQUFFM0M7QUFBRSxtQkFBSVYsTUFBS3FELEdBQUUsS0FBR0EsR0FBRSxlQUFlckQsRUFBQyxHQUFFO0FBQUMsb0JBQUlTLEtBQUU0QyxHQUFFckQsRUFBQztBQUFFLDRCQUFVQSxLQUFFLEdBQUdxQyxJQUFFNUIsRUFBQyxJQUFFLDhCQUE0QlQsTUFBR1MsS0FBRUEsS0FBRUEsR0FBRSxTQUFPLFFBQU8sUUFBTUEsTUFBRyxHQUFHNEIsSUFBRTVCLEVBQUMsS0FBRyxlQUFhVCxLQUFFLGFBQVcsT0FBT1MsTUFBRyxlQUM3ZTJDLE1BQUcsT0FBSzNDLE9BQUksR0FBRzRCLElBQUU1QixFQUFDLElBQUUsYUFBVyxPQUFPQSxNQUFHLEdBQUc0QixJQUFFLEtBQUc1QixFQUFDLElBQUUscUNBQW1DVCxNQUFHLCtCQUE2QkEsTUFBRyxnQkFBY0EsT0FBSSxHQUFHLGVBQWVBLEVBQUMsSUFBRSxRQUFNUyxNQUFHLGVBQWFULE1BQUd3QyxHQUFFLFVBQVNILEVBQUMsSUFBRSxRQUFNNUIsTUFBRyxHQUFHNEIsSUFBRXJDLElBQUVTLElBQUU2QyxFQUFDO0FBQUEsY0FBRTtBQUFDLHNCQUFPRjtnQkFBRyxLQUFLO0FBQVEscUJBQUdmLEVBQUM7QUFBRSxxQkFBR0EsSUFBRWMsSUFBRSxLQUFFO0FBQUU7QUFBQSxnQkFBTSxLQUFLO0FBQVcscUJBQUdkLEVBQUM7QUFBRSxxQkFBR0EsRUFBQztBQUFFO0FBQUEsZ0JBQU0sS0FBSztBQUFTLDBCQUFNYyxHQUFFLFNBQU9kLEdBQUUsYUFBYSxTQUFRLEtBQUcsR0FBR2MsR0FBRSxLQUFLLENBQUM7QUFBRTtBQUFBLGdCQUFNLEtBQUs7QUFBUyxrQkFBQWQsR0FBRSxXQUFTLENBQUMsQ0FBQ2MsR0FBRTtBQUFTLGtCQUFBbkQsS0FBRW1ELEdBQUU7QUFBTSwwQkFBTW5ELEtBQUUsR0FBR3FDLElBQUUsQ0FBQyxDQUFDYyxHQUFFLFVBQVNuRCxJQUFFLEtBQUUsSUFBRSxRQUFNbUQsR0FBRSxnQkFBYztBQUFBLG9CQUFHZDtBQUFBLG9CQUFFLENBQUMsQ0FBQ2MsR0FBRTtBQUFBLG9CQUFTQSxHQUFFO0FBQUEsb0JBQ2xmO0FBQUEsa0JBQUU7QUFBRTtBQUFBLGdCQUFNO0FBQVEsaUNBQWEsT0FBT3pDLEdBQUUsWUFBVTJCLEdBQUUsVUFBUTtBQUFBLGNBQUc7QUFBQyxzQkFBT2UsSUFBQztBQUFBLGdCQUFFLEtBQUs7QUFBQSxnQkFBUyxLQUFLO0FBQUEsZ0JBQVEsS0FBSztBQUFBLGdCQUFTLEtBQUs7QUFBVyxrQkFBQUQsS0FBRSxDQUFDLENBQUNBLEdBQUU7QUFBVSx3QkFBTTtBQUFBLGdCQUFFLEtBQUs7QUFBTSxrQkFBQUEsS0FBRTtBQUFHLHdCQUFNO0FBQUEsZ0JBQUU7QUFBUSxrQkFBQUEsS0FBRTtBQUFBLGNBQUU7QUFBQSxZQUFDO0FBQUMsWUFBQUEsT0FBSVQsR0FBRSxTQUFPO0FBQUEsVUFBRTtBQUFDLG1CQUFPQSxHQUFFLFFBQU1BLEdBQUUsU0FBTyxLQUFJQSxHQUFFLFNBQU87QUFBQSxRQUFRO0FBQUMsUUFBQWlCLEdBQUVqQixFQUFDO0FBQUUsZUFBTztBQUFBLE1BQUssS0FBSztBQUFFLFlBQUdMLE1BQUcsUUFBTUssR0FBRSxVQUFVLElBQUdMLElBQUVLLElBQUVMLEdBQUUsZUFBY2MsRUFBQztBQUFBLGFBQU07QUFBQyxjQUFHLGFBQVcsT0FBT0EsTUFBRyxTQUFPVCxHQUFFLFVBQVUsT0FBTSxNQUFNZCxHQUFFLEdBQUcsQ0FBQztBQUFFLFVBQUF3QixLQUFFLEdBQUcsR0FBRyxPQUFPO0FBQUUsYUFBRyxHQUFHLE9BQU87QUFBRSxjQUFHLEdBQUdWLEVBQUMsR0FBRTtBQUFDLFlBQUFTLEtBQUVULEdBQUU7QUFBVSxZQUFBVSxLQUFFVixHQUFFO0FBQWMsWUFBQVMsR0FBRSxFQUFFLElBQUVUO0FBQUUsZ0JBQUcxQyxLQUFFbUQsR0FBRSxjQUFZQztBQUFFLGtCQUFHZixLQUN2ZixJQUFHLFNBQU9BLEdBQUUsU0FBT0EsR0FBRSxLQUFHO0FBQUEsZ0JBQUUsS0FBSztBQUFFLHFCQUFHYyxHQUFFLFdBQVVDLElBQUUsT0FBS2YsR0FBRSxPQUFLLEVBQUU7QUFBRTtBQUFBLGdCQUFNLEtBQUs7QUFBRSwyQkFBS0EsR0FBRSxjQUFjLDRCQUEwQixHQUFHYyxHQUFFLFdBQVVDLElBQUUsT0FBS2YsR0FBRSxPQUFLLEVBQUU7QUFBQSxjQUFDO0FBQUE7QUFBQyxZQUFBckMsT0FBSTBDLEdBQUUsU0FBTztBQUFBLFVBQUUsTUFBTSxDQUFBUyxNQUFHLE1BQUlDLEdBQUUsV0FBU0EsS0FBRUEsR0FBRSxlQUFlLGVBQWVELEVBQUMsR0FBRUEsR0FBRSxFQUFFLElBQUVULElBQUVBLEdBQUUsWUFBVVM7QUFBQSxRQUFDO0FBQUMsUUFBQVEsR0FBRWpCLEVBQUM7QUFBRSxlQUFPO0FBQUEsTUFBSyxLQUFLO0FBQUcsUUFBQUQsR0FBRVEsRUFBQztBQUFFLFFBQUFFLEtBQUVULEdBQUU7QUFBYyxZQUFHLFNBQU9MLE1BQUcsU0FBT0EsR0FBRSxpQkFBZSxTQUFPQSxHQUFFLGNBQWMsWUFBVztBQUFDLGNBQUdTLE1BQUcsU0FBTyxNQUFJLE9BQUtKLEdBQUUsT0FBSyxNQUFJLE9BQUtBLEdBQUUsUUFBTSxLQUFLLElBQUUsR0FBRyxHQUFJLEdBQUNBLEdBQUUsU0FBTyxPQUFNMUMsS0FBRTtBQUFBLG1CQUFXQSxLQUFFLEdBQUcwQyxFQUFDLEdBQUUsU0FBT1MsTUFBRyxTQUFPQSxHQUFFLFlBQVc7QUFBQyxnQkFBRyxTQUM1ZmQsSUFBRTtBQUFDLGtCQUFHLENBQUNyQyxHQUFFLE9BQU0sTUFBTTRCLEdBQUUsR0FBRyxDQUFDO0FBQUUsY0FBQTVCLEtBQUUwQyxHQUFFO0FBQWMsY0FBQTFDLEtBQUUsU0FBT0EsS0FBRUEsR0FBRSxhQUFXO0FBQUssa0JBQUcsQ0FBQ0EsR0FBRSxPQUFNLE1BQU00QixHQUFFLEdBQUcsQ0FBQztBQUFFLGNBQUE1QixHQUFFLEVBQUUsSUFBRTBDO0FBQUEsWUFBQyxNQUFNLElBQUUsR0FBRyxPQUFLQSxHQUFFLFFBQU0sU0FBT0EsR0FBRSxnQkFBYyxPQUFNQSxHQUFFLFNBQU87QUFBRSxZQUFBaUIsR0FBRWpCLEVBQUM7QUFBRSxZQUFBMUMsS0FBRTtBQUFBLFVBQUUsTUFBTSxVQUFPLE9BQUssR0FBRyxFQUFFLEdBQUUsS0FBRyxPQUFNQSxLQUFFO0FBQUcsY0FBRyxDQUFDQSxHQUFFLFFBQU8wQyxHQUFFLFFBQU0sUUFBTUEsS0FBRTtBQUFBLFFBQUk7QUFBQyxZQUFHLE9BQUtBLEdBQUUsUUFBTSxLQUFLLFFBQU9BLEdBQUUsUUFBTVUsSUFBRVY7QUFBRSxRQUFBUyxLQUFFLFNBQU9BO0FBQUUsUUFBQUEsUUFBSyxTQUFPZCxNQUFHLFNBQU9BLEdBQUUsa0JBQWdCYyxPQUFJVCxHQUFFLE1BQU0sU0FBTyxNQUFLLE9BQUtBLEdBQUUsT0FBSyxPQUFLLFNBQU9MLE1BQUcsT0FBS1ksR0FBRSxVQUFRLEtBQUcsTUFBSVcsT0FBSUEsS0FBRSxLQUFHLEdBQUk7QUFBRyxpQkFBT2xCLEdBQUUsZ0JBQWNBLEdBQUUsU0FBTztBQUFHLFFBQUFpQixHQUFFakIsRUFBQztBQUFFLGVBQU87QUFBQSxNQUFLLEtBQUs7QUFBRSxlQUFPLEdBQUksR0FDemYsR0FBR0wsSUFBRUssRUFBQyxHQUFFLFNBQU9MLE1BQUcsR0FBR0ssR0FBRSxVQUFVLGFBQWEsR0FBRWlCLEdBQUVqQixFQUFDLEdBQUU7QUFBQSxNQUFLLEtBQUs7QUFBRyxlQUFPLEdBQUdBLEdBQUUsS0FBSyxRQUFRLEdBQUVpQixHQUFFakIsRUFBQyxHQUFFO0FBQUEsTUFBSyxLQUFLO0FBQUcsZUFBTyxHQUFHQSxHQUFFLElBQUksS0FBRyxNQUFLaUIsR0FBRWpCLEVBQUMsR0FBRTtBQUFBLE1BQUssS0FBSztBQUFHLFFBQUFELEdBQUVRLEVBQUM7QUFBRSxRQUFBakQsS0FBRTBDLEdBQUU7QUFBYyxZQUFHLFNBQU8xQyxHQUFFLFFBQU8yRCxHQUFFakIsRUFBQyxHQUFFO0FBQUssUUFBQVMsS0FBRSxPQUFLVCxHQUFFLFFBQU07QUFBSyxRQUFBWSxLQUFFdEQsR0FBRTtBQUFVLFlBQUcsU0FBT3NELEdBQUUsS0FBR0gsR0FBRSxJQUFHbkQsSUFBRSxLQUFFO0FBQUEsYUFBTTtBQUFDLGNBQUcsTUFBSTRELE1BQUcsU0FBT3ZCLE1BQUcsT0FBS0EsR0FBRSxRQUFNLEtBQUssTUFBSUEsS0FBRUssR0FBRSxPQUFNLFNBQU9MLE1BQUc7QUFBQyxZQUFBaUIsS0FBRSxHQUFHakIsRUFBQztBQUFFLGdCQUFHLFNBQU9pQixJQUFFO0FBQUMsY0FBQVosR0FBRSxTQUFPO0FBQUksaUJBQUcxQyxJQUFFLEtBQUU7QUFBRSxjQUFBbUQsS0FBRUcsR0FBRTtBQUFZLHVCQUFPSCxPQUFJVCxHQUFFLGNBQVlTLElBQUVULEdBQUUsU0FBTztBQUFHLGNBQUFBLEdBQUUsZUFBYTtBQUFFLGNBQUFTLEtBQUVDO0FBQUUsbUJBQUlBLEtBQUVWLEdBQUUsT0FBTSxTQUFPVSxLQUFHLENBQUFwRCxLQUFFb0QsSUFBRWYsS0FBRWMsSUFBRW5ELEdBQUUsU0FBTyxVQUM3ZXNELEtBQUV0RCxHQUFFLFdBQVUsU0FBT3NELE1BQUd0RCxHQUFFLGFBQVcsR0FBRUEsR0FBRSxRQUFNcUMsSUFBRXJDLEdBQUUsUUFBTSxNQUFLQSxHQUFFLGVBQWEsR0FBRUEsR0FBRSxnQkFBYyxNQUFLQSxHQUFFLGdCQUFjLE1BQUtBLEdBQUUsY0FBWSxNQUFLQSxHQUFFLGVBQWEsTUFBS0EsR0FBRSxZQUFVLFNBQU9BLEdBQUUsYUFBV3NELEdBQUUsWUFBV3RELEdBQUUsUUFBTXNELEdBQUUsT0FBTXRELEdBQUUsUUFBTXNELEdBQUUsT0FBTXRELEdBQUUsZUFBYSxHQUFFQSxHQUFFLFlBQVUsTUFBS0EsR0FBRSxnQkFBY3NELEdBQUUsZUFBY3RELEdBQUUsZ0JBQWNzRCxHQUFFLGVBQWN0RCxHQUFFLGNBQVlzRCxHQUFFLGFBQVl0RCxHQUFFLE9BQUtzRCxHQUFFLE1BQUtqQixLQUFFaUIsR0FBRSxjQUFhdEQsR0FBRSxlQUFhLFNBQU9xQyxLQUFFLE9BQUssRUFBQyxPQUFNQSxHQUFFLE9BQU0sY0FBYUEsR0FBRSxhQUFZLElBQUdlLEtBQUVBLEdBQUU7QUFBUSxjQUFBUixHQUFFSyxJQUFFQSxHQUFFLFVBQVEsSUFBRSxDQUFDO0FBQUUscUJBQU9QLEdBQUU7QUFBQSxZQUFLO0FBQUMsWUFBQUwsS0FDbGdCQSxHQUFFO0FBQUEsVUFBTztBQUFDLG1CQUFPckMsR0FBRSxRQUFNc0MsR0FBRyxJQUFDLE9BQUtJLEdBQUUsU0FBTyxLQUFJUyxLQUFFLE1BQUcsR0FBR25ELElBQUUsS0FBRSxHQUFFMEMsR0FBRSxRQUFNO0FBQUEsUUFBUTtBQUFBLGFBQUs7QUFBQyxjQUFHLENBQUNTLEdBQUUsS0FBR2QsS0FBRSxHQUFHaUIsRUFBQyxHQUFFLFNBQU9qQixJQUFFO0FBQUMsZ0JBQUdLLEdBQUUsU0FBTyxLQUFJUyxLQUFFLE1BQUdDLEtBQUVmLEdBQUUsYUFBWSxTQUFPZSxPQUFJVixHQUFFLGNBQVlVLElBQUVWLEdBQUUsU0FBTyxJQUFHLEdBQUcxQyxJQUFFLElBQUUsR0FBRSxTQUFPQSxHQUFFLFFBQU0sYUFBV0EsR0FBRSxZQUFVLENBQUNzRCxHQUFFLGFBQVcsQ0FBQ1IsR0FBRSxRQUFPYSxHQUFFakIsRUFBQyxHQUFFO0FBQUEsVUFBSSxNQUFNLEtBQUVKLEdBQUMsSUFBR3RDLEdBQUUscUJBQW1CLE1BQUksZUFBYW9ELE9BQUlWLEdBQUUsU0FBTyxLQUFJUyxLQUFFLE1BQUcsR0FBR25ELElBQUUsS0FBRSxHQUFFMEMsR0FBRSxRQUFNO0FBQVMsVUFBQTFDLEdBQUUsZUFBYXNELEdBQUUsVUFBUVosR0FBRSxPQUFNQSxHQUFFLFFBQU1ZLE9BQUlGLEtBQUVwRCxHQUFFLE1BQUssU0FBT29ELEtBQUVBLEdBQUUsVUFBUUUsS0FBRVosR0FBRSxRQUFNWSxJQUFFdEQsR0FBRSxPQUFLc0Q7QUFBQSxRQUFFO0FBQUMsWUFBRyxTQUFPdEQsR0FBRSxLQUFLLFFBQU8wQyxLQUFFMUMsR0FBRSxNQUFLQSxHQUFFLFlBQzllMEMsSUFBRTFDLEdBQUUsT0FBSzBDLEdBQUUsU0FBUTFDLEdBQUUscUJBQW1Cc0MsTUFBSUksR0FBRSxVQUFRLE1BQUtVLEtBQUVILEdBQUUsU0FBUUwsR0FBRUssSUFBRUUsS0FBRUMsS0FBRSxJQUFFLElBQUVBLEtBQUUsQ0FBQyxHQUFFVjtBQUFFLFFBQUFpQixHQUFFakIsRUFBQztBQUFFLGVBQU87QUFBQSxNQUFLLEtBQUs7QUFBQSxNQUFHLEtBQUs7QUFBRyxlQUFPLEdBQUksR0FBQ1MsS0FBRSxTQUFPVCxHQUFFLGVBQWMsU0FBT0wsTUFBRyxTQUFPQSxHQUFFLGtCQUFnQmMsT0FBSVQsR0FBRSxTQUFPLE9BQU1TLE1BQUcsT0FBS1QsR0FBRSxPQUFLLEtBQUcsT0FBSyxLQUFHLGdCQUFjaUIsR0FBRWpCLEVBQUMsR0FBRUEsR0FBRSxlQUFhLE1BQUlBLEdBQUUsU0FBTyxTQUFPaUIsR0FBRWpCLEVBQUMsR0FBRTtBQUFBLE1BQUssS0FBSztBQUFHLGVBQU87QUFBQSxNQUFLLEtBQUs7QUFBRyxlQUFPO0FBQUEsSUFBSTtBQUFDLFVBQU0sTUFBTWQsR0FBRSxLQUFJYyxHQUFFLEdBQUcsQ0FBQztBQUFBLEVBQUU7QUFDbFgsV0FBUyxHQUFHTCxJQUFFSyxJQUFFO0FBQUMsT0FBR0EsRUFBQztBQUFFLFlBQU9BLEdBQUUsS0FBRztBQUFBLE1BQUUsS0FBSztBQUFFLGVBQU8sR0FBR0EsR0FBRSxJQUFJLEtBQUcsR0FBRSxHQUFHTCxLQUFFSyxHQUFFLE9BQU1MLEtBQUUsU0FBT0ssR0FBRSxRQUFNTCxLQUFFLFNBQU8sS0FBSUssTUFBRztBQUFBLE1BQUssS0FBSztBQUFFLGVBQU8sR0FBRSxHQUFHRCxHQUFFLEVBQUUsR0FBRUEsR0FBRUksRUFBQyxHQUFFLEdBQUUsR0FBR1IsS0FBRUssR0FBRSxPQUFNLE9BQUtMLEtBQUUsVUFBUSxPQUFLQSxLQUFFLFFBQU1LLEdBQUUsUUFBTUwsS0FBRSxTQUFPLEtBQUlLLE1BQUc7QUFBQSxNQUFLLEtBQUs7QUFBRSxlQUFPLEdBQUdBLEVBQUMsR0FBRTtBQUFBLE1BQUssS0FBSztBQUFHLFFBQUFELEdBQUVRLEVBQUM7QUFBRSxRQUFBWixLQUFFSyxHQUFFO0FBQWMsWUFBRyxTQUFPTCxNQUFHLFNBQU9BLEdBQUUsWUFBVztBQUFDLGNBQUcsU0FBT0ssR0FBRSxVQUFVLE9BQU0sTUFBTWQsR0FBRSxHQUFHLENBQUM7QUFBRSxhQUFJO0FBQUEsUUFBQTtBQUFDLFFBQUFTLEtBQUVLLEdBQUU7QUFBTSxlQUFPTCxLQUFFLFNBQU9LLEdBQUUsUUFBTUwsS0FBRSxTQUFPLEtBQUlLLE1BQUc7QUFBQSxNQUFLLEtBQUs7QUFBRyxlQUFPRCxHQUFFUSxFQUFDLEdBQUU7QUFBQSxNQUFLLEtBQUs7QUFBRSxlQUFPLEdBQUUsR0FBRztBQUFBLE1BQUssS0FBSztBQUFHLGVBQU8sR0FBR1AsR0FBRSxLQUFLLFFBQVEsR0FBRTtBQUFBLE1BQUssS0FBSztBQUFBLE1BQUcsS0FBSztBQUFHLGVBQU8sR0FBSSxHQUM5Z0I7QUFBQSxNQUFLLEtBQUs7QUFBRyxlQUFPO0FBQUEsTUFBSztBQUFRLGVBQU87QUFBQSxJQUFJO0FBQUEsRUFBQztBQUFDLE1BQUksS0FBRyxPQUFHbUIsS0FBRSxPQUFHLEtBQUcsZUFBYSxPQUFPLFVBQVEsVUFBUSxLQUFJOUQsS0FBRTtBQUFLLFdBQVMsR0FBR3NDLElBQUVLLElBQUU7QUFBQyxRQUFJVSxLQUFFZixHQUFFO0FBQUksUUFBRyxTQUFPZSxHQUFFLEtBQUcsZUFBYSxPQUFPQSxHQUFFLEtBQUc7QUFBQyxNQUFBQSxHQUFFLElBQUk7QUFBQSxJQUFDLFNBQU9ELElBQUU7QUFBQyxNQUFBVyxHQUFFekIsSUFBRUssSUFBRVMsRUFBQztBQUFBLElBQUM7QUFBQSxRQUFNLENBQUFDLEdBQUUsVUFBUTtBQUFBLEVBQUk7QUFBQyxXQUFTLEdBQUdmLElBQUVLLElBQUVVLElBQUU7QUFBQyxRQUFHO0FBQUMsTUFBQUEsR0FBQztBQUFBLElBQUUsU0FBT0QsSUFBRTtBQUFDLE1BQUFXLEdBQUV6QixJQUFFSyxJQUFFUyxFQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxNQUFJLEtBQUc7QUFDeFIsV0FBUyxHQUFHZCxJQUFFSyxJQUFFO0FBQUMsU0FBRztBQUFHLElBQUFMLEtBQUU2SSxJQUFJO0FBQUMsUUFBR0MsSUFBRzlJLEVBQUMsR0FBRTtBQUFDLFVBQUcsb0JBQW1CQSxHQUFFLEtBQUllLEtBQUUsRUFBQyxPQUFNZixHQUFFLGdCQUFlLEtBQUlBLEdBQUUsYUFBWTtBQUFBLFVBQU8sSUFBRTtBQUFDLFFBQUFlLE1BQUdBLEtBQUVmLEdBQUUsa0JBQWdCZSxHQUFFLGVBQWE7QUFBTyxZQUFJRCxLQUFFQyxHQUFFLGdCQUFjQSxHQUFFO0FBQWUsWUFBR0QsTUFBRyxNQUFJQSxHQUFFLFlBQVc7QUFBQyxVQUFBQyxLQUFFRCxHQUFFO0FBQVcsY0FBSXpDLEtBQUV5QyxHQUFFLGNBQWFuRCxLQUFFbUQsR0FBRTtBQUFVLFVBQUFBLEtBQUVBLEdBQUU7QUFBWSxjQUFHO0FBQUMsWUFBQUMsR0FBRSxVQUFTcEQsR0FBRTtBQUFBLFVBQVEsU0FBTzJDLElBQUU7QUFBQyxZQUFBUyxLQUFFO0FBQUssa0JBQU07QUFBQSxVQUFDO0FBQUMsY0FBSUUsS0FBRSxHQUFFRCxLQUFFLElBQUc1QyxLQUFFLElBQUdpQixLQUFFLEdBQUU2QixLQUFFLEdBQUUxQixLQUFFUSxJQUFFUCxLQUFFO0FBQUssWUFBRSxZQUFPO0FBQUMscUJBQVFoQyxRQUFJO0FBQUMsY0FBQStCLE9BQUl1QixNQUFHLE1BQUkxQyxNQUFHLE1BQUltQixHQUFFLGFBQVd3QixLQUFFQyxLQUFFNUM7QUFBRyxjQUFBbUIsT0FBSTdCLE1BQUcsTUFBSW1ELE1BQUcsTUFBSXRCLEdBQUUsYUFBV3BCLEtBQUU2QyxLQUFFSDtBQUFHLG9CQUFJdEIsR0FBRSxhQUFXeUIsTUFDbmZ6QixHQUFFLFVBQVU7QUFBUSxrQkFBRyxVQUFRL0IsS0FBRStCLEdBQUUsWUFBWTtBQUFNLGNBQUFDLEtBQUVEO0FBQUUsY0FBQUEsS0FBRS9CO0FBQUEsWUFBQztBQUFDLHVCQUFPO0FBQUMsa0JBQUcrQixPQUFJUSxHQUFFLE9BQU07QUFBRSxjQUFBUCxPQUFJc0IsTUFBRyxFQUFFMUIsT0FBSWhCLE9BQUkyQyxLQUFFQztBQUFHLGNBQUF4QixPQUFJOUIsTUFBRyxFQUFFdUQsT0FBSUosT0FBSTFDLEtBQUU2QztBQUFHLGtCQUFHLFVBQVF4RCxLQUFFK0IsR0FBRSxhQUFhO0FBQU0sY0FBQUEsS0FBRUM7QUFBRSxjQUFBQSxLQUFFRCxHQUFFO0FBQUEsWUFBVTtBQUFDLFlBQUFBLEtBQUUvQjtBQUFBLFVBQUM7QUFBQyxVQUFBc0QsS0FBRSxPQUFLQyxNQUFHLE9BQUs1QyxLQUFFLE9BQUssRUFBQyxPQUFNNEMsSUFBRSxLQUFJNUMsR0FBQztBQUFBLFFBQUMsTUFBTSxDQUFBMkMsS0FBRTtBQUFBLE1BQUk7QUFBQyxNQUFBQSxLQUFFQSxNQUFHLEVBQUMsT0FBTSxHQUFFLEtBQUksRUFBQztBQUFBLElBQUMsTUFBTSxDQUFBQSxLQUFFO0FBQUssU0FBRyxFQUFDLGFBQVlmLElBQUUsZ0JBQWVlLEdBQUM7QUFBRSxTQUFHO0FBQUcsU0FBSXJELEtBQUUyQyxJQUFFLFNBQU8zQyxLQUFHLEtBQUcyQyxLQUFFM0MsSUFBRXNDLEtBQUVLLEdBQUUsT0FBTSxPQUFLQSxHQUFFLGVBQWEsU0FBTyxTQUFPTCxHQUFFLENBQUFBLEdBQUUsU0FBT0ssSUFBRTNDLEtBQUVzQztBQUFBLFFBQU8sUUFBSyxTQUFPdEMsTUFBRztBQUFDLE1BQUEyQyxLQUFFM0M7QUFBRSxVQUFHO0FBQUMsWUFBSTRCLEtBQUVlLEdBQUU7QUFBVSxZQUFHLE9BQUtBLEdBQUUsUUFBTSxNQUFNLFNBQU9BLEdBQUUsS0FBRztBQUFBLFVBQUUsS0FBSztBQUFBLFVBQUUsS0FBSztBQUFBLFVBQUcsS0FBSztBQUFHO0FBQUEsVUFDeGYsS0FBSztBQUFFLGdCQUFHLFNBQU9mLElBQUU7QUFBQyxrQkFBSUksS0FBRUosR0FBRSxlQUFjb0IsS0FBRXBCLEdBQUUsZUFBYy9CLEtBQUU4QyxHQUFFLFdBQVVSLEtBQUV0QyxHQUFFLHdCQUF3QjhDLEdBQUUsZ0JBQWNBLEdBQUUsT0FBS1gsS0FBRSxHQUFHVyxHQUFFLE1BQUtYLEVBQUMsR0FBRWdCLEVBQUM7QUFBRSxjQUFBbkQsR0FBRSxzQ0FBb0NzQztBQUFBLFlBQUM7QUFBQztBQUFBLFVBQU0sS0FBSztBQUFFLGdCQUFJRixLQUFFVSxHQUFFLFVBQVU7QUFBYyxrQkFBSVYsR0FBRSxXQUFTQSxHQUFFLGNBQVksS0FBRyxNQUFJQSxHQUFFLFlBQVVBLEdBQUUsbUJBQWlCQSxHQUFFLFlBQVlBLEdBQUUsZUFBZTtBQUFFO0FBQUEsVUFBTSxLQUFLO0FBQUEsVUFBRSxLQUFLO0FBQUEsVUFBRSxLQUFLO0FBQUEsVUFBRSxLQUFLO0FBQUc7QUFBQSxVQUFNO0FBQVEsa0JBQU0sTUFBTUosR0FBRSxHQUFHLENBQUM7QUFBQSxRQUFFO0FBQUEsTUFBQyxTQUFPZSxJQUFFO0FBQUMsUUFBQW1CLEdBQUVwQixJQUFFQSxHQUFFLFFBQU9DLEVBQUM7QUFBQSxNQUFDO0FBQUMsTUFBQU4sS0FBRUssR0FBRTtBQUFRLFVBQUcsU0FBT0wsSUFBRTtBQUFDLFFBQUFBLEdBQUUsU0FBT0ssR0FBRTtBQUFPLFFBQUEzQyxLQUFFc0M7QUFBRTtBQUFBLE1BQUs7QUFBQyxNQUFBdEMsS0FBRTJDLEdBQUU7QUFBQSxJQUFNO0FBQUMsSUFBQWYsS0FBRTtBQUFHLFNBQUc7QUFBRyxXQUFPQTtBQUFBLEVBQUM7QUFDM2YsV0FBUyxHQUFHVSxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBSUQsS0FBRVQsR0FBRTtBQUFZLElBQUFTLEtBQUUsU0FBT0EsS0FBRUEsR0FBRSxhQUFXO0FBQUssUUFBRyxTQUFPQSxJQUFFO0FBQUMsVUFBSXpDLEtBQUV5QyxLQUFFQSxHQUFFO0FBQUssU0FBRTtBQUFDLGFBQUl6QyxHQUFFLE1BQUkyQixRQUFLQSxJQUFFO0FBQUMsY0FBSXJDLEtBQUVVLEdBQUU7QUFBUSxVQUFBQSxHQUFFLFVBQVE7QUFBTyxxQkFBU1YsTUFBRyxHQUFHMEMsSUFBRVUsSUFBRXBELEVBQUM7QUFBQSxRQUFDO0FBQUMsUUFBQVUsS0FBRUEsR0FBRTtBQUFBLE1BQUksU0FBT0EsT0FBSXlDO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdkLElBQUVLLElBQUU7QUFBQyxJQUFBQSxLQUFFQSxHQUFFO0FBQVksSUFBQUEsS0FBRSxTQUFPQSxLQUFFQSxHQUFFLGFBQVc7QUFBSyxRQUFHLFNBQU9BLElBQUU7QUFBQyxVQUFJVSxLQUFFVixLQUFFQSxHQUFFO0FBQUssU0FBRTtBQUFDLGFBQUlVLEdBQUUsTUFBSWYsUUFBS0EsSUFBRTtBQUFDLGNBQUljLEtBQUVDLEdBQUU7QUFBTyxVQUFBQSxHQUFFLFVBQVFEO1FBQUc7QUFBQyxRQUFBQyxLQUFFQSxHQUFFO0FBQUEsTUFBSSxTQUFPQSxPQUFJVjtBQUFBLElBQUU7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHTCxJQUFFO0FBQUMsUUFBSUssS0FBRUwsR0FBRTtBQUFJLFFBQUcsU0FBT0ssSUFBRTtBQUFDLFVBQUlVLEtBQUVmLEdBQUU7QUFBVSxjQUFPQSxHQUFFO1FBQUssS0FBSztBQUFFLFVBQUFBLEtBQUVlO0FBQUU7QUFBQSxRQUFNO0FBQVEsVUFBQWYsS0FBRWU7QUFBQSxNQUFDO0FBQUMscUJBQWEsT0FBT1YsS0FBRUEsR0FBRUwsRUFBQyxJQUFFSyxHQUFFLFVBQVFMO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFDbGYsV0FBUyxHQUFHQSxJQUFFO0FBQUMsUUFBSUssS0FBRUwsR0FBRTtBQUFVLGFBQU9LLE9BQUlMLEdBQUUsWUFBVSxNQUFLLEdBQUdLLEVBQUM7QUFBRyxJQUFBTCxHQUFFLFFBQU07QUFBSyxJQUFBQSxHQUFFLFlBQVU7QUFBSyxJQUFBQSxHQUFFLFVBQVE7QUFBSyxVQUFJQSxHQUFFLFFBQU1LLEtBQUVMLEdBQUUsV0FBVSxTQUFPSyxPQUFJLE9BQU9BLEdBQUUsRUFBRSxHQUFFLE9BQU9BLEdBQUUsRUFBRSxHQUFFLE9BQU9BLEdBQUUsRUFBRSxHQUFFLE9BQU9BLEdBQUUsRUFBRSxHQUFFLE9BQU9BLEdBQUUsRUFBRTtBQUFJLElBQUFMLEdBQUUsWUFBVTtBQUFLLElBQUFBLEdBQUUsU0FBTztBQUFLLElBQUFBLEdBQUUsZUFBYTtBQUFLLElBQUFBLEdBQUUsZ0JBQWM7QUFBSyxJQUFBQSxHQUFFLGdCQUFjO0FBQUssSUFBQUEsR0FBRSxlQUFhO0FBQUssSUFBQUEsR0FBRSxZQUFVO0FBQUssSUFBQUEsR0FBRSxjQUFZO0FBQUEsRUFBSTtBQUFDLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFdBQU8sTUFBSUEsR0FBRSxPQUFLLE1BQUlBLEdBQUUsT0FBSyxNQUFJQSxHQUFFO0FBQUEsRUFBRztBQUNuYSxXQUFTLEdBQUdBLElBQUU7QUFBQyxNQUFFLFlBQU87QUFBQyxhQUFLLFNBQU9BLEdBQUUsV0FBUztBQUFDLFlBQUcsU0FBT0EsR0FBRSxVQUFRLEdBQUdBLEdBQUUsTUFBTSxFQUFFLFFBQU87QUFBSyxRQUFBQSxLQUFFQSxHQUFFO0FBQUEsTUFBTTtBQUFDLE1BQUFBLEdBQUUsUUFBUSxTQUFPQSxHQUFFO0FBQU8sV0FBSUEsS0FBRUEsR0FBRSxTQUFRLE1BQUlBLEdBQUUsT0FBSyxNQUFJQSxHQUFFLE9BQUssT0FBS0EsR0FBRSxPQUFLO0FBQUMsWUFBR0EsR0FBRSxRQUFNLEVBQUUsVUFBUztBQUFFLFlBQUcsU0FBT0EsR0FBRSxTQUFPLE1BQUlBLEdBQUUsSUFBSSxVQUFTO0FBQUEsWUFBTyxDQUFBQSxHQUFFLE1BQU0sU0FBT0EsSUFBRUEsS0FBRUEsR0FBRTtBQUFBLE1BQUs7QUFBQyxVQUFHLEVBQUVBLEdBQUUsUUFBTSxHQUFHLFFBQU9BLEdBQUU7QUFBQSxJQUFTO0FBQUEsRUFBQztBQUN6VCxXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUU7QUFBQyxRQUFJRCxLQUFFZCxHQUFFO0FBQUksUUFBRyxNQUFJYyxNQUFHLE1BQUlBLEdBQUUsQ0FBQWQsS0FBRUEsR0FBRSxXQUFVSyxLQUFFLE1BQUlVLEdBQUUsV0FBU0EsR0FBRSxXQUFXLGFBQWFmLElBQUVLLEVBQUMsSUFBRVUsR0FBRSxhQUFhZixJQUFFSyxFQUFDLEtBQUcsTUFBSVUsR0FBRSxZQUFVVixLQUFFVSxHQUFFLFlBQVdWLEdBQUUsYUFBYUwsSUFBRWUsRUFBQyxNQUFJVixLQUFFVSxJQUFFVixHQUFFLFlBQVlMLEVBQUMsSUFBR2UsS0FBRUEsR0FBRSxxQkFBb0IsU0FBT0EsTUFBRyxXQUFTQSxNQUFHLFNBQU9WLEdBQUUsWUFBVUEsR0FBRSxVQUFRO0FBQUEsYUFBYSxNQUFJUyxPQUFJZCxLQUFFQSxHQUFFLE9BQU0sU0FBT0EsSUFBRyxNQUFJLEdBQUdBLElBQUVLLElBQUVVLEVBQUMsR0FBRWYsS0FBRUEsR0FBRSxTQUFRLFNBQU9BLEtBQUcsSUFBR0EsSUFBRUssSUFBRVUsRUFBQyxHQUFFZixLQUFFQSxHQUFFO0FBQUEsRUFBTztBQUMxWCxXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUU7QUFBQyxRQUFJRCxLQUFFZCxHQUFFO0FBQUksUUFBRyxNQUFJYyxNQUFHLE1BQUlBLEdBQUUsQ0FBQWQsS0FBRUEsR0FBRSxXQUFVSyxLQUFFVSxHQUFFLGFBQWFmLElBQUVLLEVBQUMsSUFBRVUsR0FBRSxZQUFZZixFQUFDO0FBQUEsYUFBVSxNQUFJYyxPQUFJZCxLQUFFQSxHQUFFLE9BQU0sU0FBT0EsSUFBRyxNQUFJLEdBQUdBLElBQUVLLElBQUVVLEVBQUMsR0FBRWYsS0FBRUEsR0FBRSxTQUFRLFNBQU9BLEtBQUcsSUFBR0EsSUFBRUssSUFBRVUsRUFBQyxHQUFFZixLQUFFQSxHQUFFO0FBQUEsRUFBTztBQUFDLE1BQUkwQixLQUFFLE1BQUssS0FBRztBQUFHLFdBQVMsR0FBRzFCLElBQUVLLElBQUVVLElBQUU7QUFBQyxTQUFJQSxLQUFFQSxHQUFFLE9BQU0sU0FBT0EsS0FBRyxJQUFHZixJQUFFSyxJQUFFVSxFQUFDLEdBQUVBLEtBQUVBLEdBQUU7QUFBQSxFQUFPO0FBQ25SLFdBQVMsR0FBR2YsSUFBRUssSUFBRVUsSUFBRTtBQUFDLFFBQUcsTUFBSSxlQUFhLE9BQU8sR0FBRyxxQkFBcUIsS0FBRztBQUFDLFNBQUcscUJBQXFCLElBQUdBLEVBQUM7QUFBQSxJQUFDLFNBQU9DLElBQUU7QUFBQSxJQUFBO0FBQUUsWUFBT0QsR0FBRTtNQUFLLEtBQUs7QUFBRSxRQUFBUyxNQUFHLEdBQUdULElBQUVWLEVBQUM7QUFBQSxNQUFFLEtBQUs7QUFBRSxZQUFJUyxLQUFFWSxJQUFFckQsS0FBRTtBQUFHLFFBQUFxRCxLQUFFO0FBQUssV0FBRzFCLElBQUVLLElBQUVVLEVBQUM7QUFBRSxRQUFBVyxLQUFFWjtBQUFFLGFBQUd6QztBQUFFLGlCQUFPcUQsT0FBSSxNQUFJMUIsS0FBRTBCLElBQUVYLEtBQUVBLEdBQUUsV0FBVSxNQUFJZixHQUFFLFdBQVNBLEdBQUUsV0FBVyxZQUFZZSxFQUFDLElBQUVmLEdBQUUsWUFBWWUsRUFBQyxLQUFHVyxHQUFFLFlBQVlYLEdBQUUsU0FBUztBQUFHO0FBQUEsTUFBTSxLQUFLO0FBQUcsaUJBQU9XLE9BQUksTUFBSTFCLEtBQUUwQixJQUFFWCxLQUFFQSxHQUFFLFdBQVUsTUFBSWYsR0FBRSxXQUFTLEdBQUdBLEdBQUUsWUFBV2UsRUFBQyxJQUFFLE1BQUlmLEdBQUUsWUFBVSxHQUFHQSxJQUFFZSxFQUFDLEdBQUUsR0FBR2YsRUFBQyxLQUFHLEdBQUcwQixJQUFFWCxHQUFFLFNBQVM7QUFBRztBQUFBLE1BQU0sS0FBSztBQUFFLFFBQUFELEtBQUVZO0FBQUUsUUFBQXJELEtBQUU7QUFBRyxRQUFBcUQsS0FBRVgsR0FBRSxVQUFVO0FBQWMsYUFBRztBQUNsZixXQUFHZixJQUFFSyxJQUFFVSxFQUFDO0FBQUUsUUFBQVcsS0FBRVo7QUFBRSxhQUFHekM7QUFBRTtBQUFBLE1BQU0sS0FBSztBQUFBLE1BQUUsS0FBSztBQUFBLE1BQUcsS0FBSztBQUFBLE1BQUcsS0FBSztBQUFHLFlBQUcsQ0FBQ21ELE9BQUlWLEtBQUVDLEdBQUUsYUFBWSxTQUFPRCxPQUFJQSxLQUFFQSxHQUFFLFlBQVcsU0FBT0EsTUFBSTtBQUFDLFVBQUF6QyxLQUFFeUMsS0FBRUEsR0FBRTtBQUFLLGFBQUU7QUFBQyxnQkFBSW5ELEtBQUVVLElBQUU0QyxLQUFFdEQsR0FBRTtBQUFRLFlBQUFBLEtBQUVBLEdBQUU7QUFBSSx1QkFBU3NELE9BQUksT0FBS3RELEtBQUUsS0FBRyxHQUFHb0QsSUFBRVYsSUFBRVksRUFBQyxJQUFFLE9BQUt0RCxLQUFFLE1BQUksR0FBR29ELElBQUVWLElBQUVZLEVBQUM7QUFBRyxZQUFBNUMsS0FBRUEsR0FBRTtBQUFBLFVBQUksU0FBT0EsT0FBSXlDO0FBQUEsUUFBRTtBQUFDLFdBQUdkLElBQUVLLElBQUVVLEVBQUM7QUFBRTtBQUFBLE1BQU0sS0FBSztBQUFFLFlBQUcsQ0FBQ1MsT0FBSSxHQUFHVCxJQUFFVixFQUFDLEdBQUVTLEtBQUVDLEdBQUUsV0FBVSxlQUFhLE9BQU9ELEdBQUUsc0JBQXNCLEtBQUc7QUFBQyxVQUFBQSxHQUFFLFFBQU1DLEdBQUUsZUFBY0QsR0FBRSxRQUFNQyxHQUFFLGVBQWNELEdBQUUscUJBQXNCO0FBQUEsUUFBQSxTQUFPRSxJQUFFO0FBQUMsVUFBQVMsR0FBRVYsSUFBRVYsSUFBRVcsRUFBQztBQUFBLFFBQUM7QUFBQyxXQUFHaEIsSUFBRUssSUFBRVUsRUFBQztBQUFFO0FBQUEsTUFBTSxLQUFLO0FBQUcsV0FBR2YsSUFBRUssSUFBRVUsRUFBQztBQUFFO0FBQUEsTUFBTSxLQUFLO0FBQUcsUUFBQUEsR0FBRSxPQUFLLEtBQUdTLE1BQUdWLEtBQUVVLE9BQUksU0FDaGZULEdBQUUsZUFBYyxHQUFHZixJQUFFSyxJQUFFVSxFQUFDLEdBQUVTLEtBQUVWLE1BQUcsR0FBR2QsSUFBRUssSUFBRVUsRUFBQztBQUFFO0FBQUEsTUFBTTtBQUFRLFdBQUdmLElBQUVLLElBQUVVLEVBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR2YsSUFBRTtBQUFDLFFBQUlLLEtBQUVMLEdBQUU7QUFBWSxRQUFHLFNBQU9LLElBQUU7QUFBQyxNQUFBTCxHQUFFLGNBQVk7QUFBSyxVQUFJZSxLQUFFZixHQUFFO0FBQVUsZUFBT2UsT0FBSUEsS0FBRWYsR0FBRSxZQUFVLElBQUk7QUFBSSxNQUFBSyxHQUFFLFFBQVEsU0FBU0EsSUFBRTtBQUFDLFlBQUlTLEtBQUUsR0FBRyxLQUFLLE1BQUtkLElBQUVLLEVBQUM7QUFBRSxRQUFBVSxHQUFFLElBQUlWLEVBQUMsTUFBSVUsR0FBRSxJQUFJVixFQUFDLEdBQUVBLEdBQUUsS0FBS1MsSUFBRUEsRUFBQztBQUFBLE1BQUUsQ0FBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQ3pRLFdBQVMsR0FBR2QsSUFBRUssSUFBRTtBQUFDLFFBQUlVLEtBQUVWLEdBQUU7QUFBVSxRQUFHLFNBQU9VLEdBQUUsVUFBUUQsS0FBRSxHQUFFQSxLQUFFQyxHQUFFLFFBQU9ELE1BQUk7QUFBQyxVQUFJekMsS0FBRTBDLEdBQUVELEVBQUM7QUFBRSxVQUFHO0FBQUMsWUFBSW5ELEtBQUVxQyxJQUFFaUIsS0FBRVosSUFBRVcsS0FBRUM7QUFBRSxVQUFFLFFBQUssU0FBT0QsTUFBRztBQUFDLGtCQUFPQSxHQUFFO1lBQUssS0FBSztBQUFFLGNBQUFVLEtBQUVWLEdBQUU7QUFBVSxtQkFBRztBQUFHLG9CQUFNO0FBQUEsWUFBRSxLQUFLO0FBQUUsY0FBQVUsS0FBRVYsR0FBRSxVQUFVO0FBQWMsbUJBQUc7QUFBRyxvQkFBTTtBQUFBLFlBQUUsS0FBSztBQUFFLGNBQUFVLEtBQUVWLEdBQUUsVUFBVTtBQUFjLG1CQUFHO0FBQUcsb0JBQU07QUFBQSxVQUFDO0FBQUMsVUFBQUEsS0FBRUEsR0FBRTtBQUFBLFFBQU07QUFBQyxZQUFHLFNBQU9VLEdBQUUsT0FBTSxNQUFNbkMsR0FBRSxHQUFHLENBQUM7QUFBRSxXQUFHNUIsSUFBRXNELElBQUU1QyxFQUFDO0FBQUUsUUFBQXFELEtBQUU7QUFBSyxhQUFHO0FBQUcsWUFBSXRELEtBQUVDLEdBQUU7QUFBVSxpQkFBT0QsT0FBSUEsR0FBRSxTQUFPO0FBQU0sUUFBQUMsR0FBRSxTQUFPO0FBQUEsTUFBSSxTQUFPZ0IsSUFBRTtBQUFDLFFBQUFvQyxHQUFFcEQsSUFBRWdDLElBQUVoQixFQUFDO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBQyxRQUFHZ0IsR0FBRSxlQUFhLE1BQU0sTUFBSUEsS0FBRUEsR0FBRSxPQUFNLFNBQU9BLEtBQUcsSUFBR0EsSUFBRUwsRUFBQyxHQUFFSyxLQUFFQSxHQUFFO0FBQUEsRUFBTztBQUNqZSxXQUFTLEdBQUdMLElBQUVLLElBQUU7QUFBQyxRQUFJVSxLQUFFZixHQUFFLFdBQVVjLEtBQUVkLEdBQUU7QUFBTSxZQUFPQSxHQUFFLEtBQUs7QUFBQSxNQUFBLEtBQUs7QUFBQSxNQUFFLEtBQUs7QUFBQSxNQUFHLEtBQUs7QUFBQSxNQUFHLEtBQUs7QUFBRyxXQUFHSyxJQUFFTCxFQUFDO0FBQUUsV0FBR0EsRUFBQztBQUFFLFlBQUdjLEtBQUUsR0FBRTtBQUFDLGNBQUc7QUFBQyxlQUFHLEdBQUVkLElBQUVBLEdBQUUsTUFBTSxHQUFFLEdBQUcsR0FBRUEsRUFBQztBQUFBLFVBQUMsU0FBT04sSUFBRTtBQUFDLFlBQUErQixHQUFFekIsSUFBRUEsR0FBRSxRQUFPTixFQUFDO0FBQUEsVUFBQztBQUFDLGNBQUc7QUFBQyxlQUFHLEdBQUVNLElBQUVBLEdBQUUsTUFBTTtBQUFBLFVBQUMsU0FBT04sSUFBRTtBQUFDLFlBQUErQixHQUFFekIsSUFBRUEsR0FBRSxRQUFPTixFQUFDO0FBQUEsVUFBQztBQUFBLFFBQUM7QUFBQztBQUFBLE1BQU0sS0FBSztBQUFFLFdBQUdXLElBQUVMLEVBQUM7QUFBRSxXQUFHQSxFQUFDO0FBQUUsUUFBQWMsS0FBRSxPQUFLLFNBQU9DLE1BQUcsR0FBR0EsSUFBRUEsR0FBRSxNQUFNO0FBQUU7QUFBQSxNQUFNLEtBQUs7QUFBRSxXQUFHVixJQUFFTCxFQUFDO0FBQUUsV0FBR0EsRUFBQztBQUFFLFFBQUFjLEtBQUUsT0FBSyxTQUFPQyxNQUFHLEdBQUdBLElBQUVBLEdBQUUsTUFBTTtBQUFFLFlBQUdmLEdBQUUsUUFBTSxJQUFHO0FBQUMsY0FBSTNCLEtBQUUyQixHQUFFO0FBQVUsY0FBRztBQUFDLGVBQUczQixJQUFFLEVBQUU7QUFBQSxVQUFDLFNBQU9xQixJQUFFO0FBQUMsWUFBQStCLEdBQUV6QixJQUFFQSxHQUFFLFFBQU9OLEVBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQztBQUFDLFlBQUdvQixLQUFFLE1BQUl6QyxLQUFFMkIsR0FBRSxXQUFVLFFBQU0zQixLQUFHO0FBQUMsY0FBSVYsS0FBRXFDLEdBQUUsZUFBY2lCLEtBQUUsU0FBT0YsS0FBRUEsR0FBRSxnQkFBY3BELElBQUVxRCxLQUFFaEIsR0FBRSxNQUFLNUIsS0FBRTRCLEdBQUU7QUFDcGYsVUFBQUEsR0FBRSxjQUFZO0FBQUssY0FBRyxTQUFPNUIsR0FBRSxLQUFHO0FBQUMsd0JBQVU0QyxNQUFHLFlBQVVyRCxHQUFFLFFBQU0sUUFBTUEsR0FBRSxRQUFNLEdBQUdVLElBQUVWLEVBQUM7QUFBRSxlQUFHcUQsSUFBRUMsRUFBQztBQUFFLGdCQUFJNUIsS0FBRSxHQUFHMkIsSUFBRXJELEVBQUM7QUFBRSxpQkFBSXNELEtBQUUsR0FBRUEsS0FBRTdDLEdBQUUsUUFBTzZDLE1BQUcsR0FBRTtBQUFDLGtCQUFJQyxLQUFFOUMsR0FBRTZDLEVBQUMsR0FBRXpCLEtBQUVwQixHQUFFNkMsS0FBRSxDQUFDO0FBQUUsMEJBQVVDLEtBQUUsR0FBRzdDLElBQUVtQixFQUFDLElBQUUsOEJBQTRCMEIsS0FBRSxHQUFHN0MsSUFBRW1CLEVBQUMsSUFBRSxlQUFhMEIsS0FBRSxHQUFHN0MsSUFBRW1CLEVBQUMsSUFBRSxHQUFHbkIsSUFBRTZDLElBQUUxQixJQUFFSCxFQUFDO0FBQUEsWUFBQztBQUFDLG9CQUFPMkIsSUFBQztBQUFBLGNBQUUsS0FBSztBQUFRLG1CQUFHM0MsSUFBRVYsRUFBQztBQUFFO0FBQUEsY0FBTSxLQUFLO0FBQVcsbUJBQUdVLElBQUVWLEVBQUM7QUFBRTtBQUFBLGNBQU0sS0FBSztBQUFTLG9CQUFJOEIsS0FBRXBCLEdBQUUsY0FBYztBQUFZLGdCQUFBQSxHQUFFLGNBQWMsY0FBWSxDQUFDLENBQUNWLEdBQUU7QUFBUyxvQkFBSUYsS0FBRUUsR0FBRTtBQUFNLHdCQUFNRixLQUFFLEdBQUdZLElBQUUsQ0FBQyxDQUFDVixHQUFFLFVBQVNGLElBQUUsS0FBRSxJQUFFZ0MsT0FBSSxDQUFDLENBQUM5QixHQUFFLGFBQVcsUUFBTUEsR0FBRSxlQUFhO0FBQUEsa0JBQUdVO0FBQUEsa0JBQUUsQ0FBQyxDQUFDVixHQUFFO0FBQUEsa0JBQ25mQSxHQUFFO0FBQUEsa0JBQWE7QUFBQSxnQkFBRSxJQUFFLEdBQUdVLElBQUUsQ0FBQyxDQUFDVixHQUFFLFVBQVNBLEdBQUUsV0FBUyxDQUFBLElBQUcsSUFBRyxLQUFFO0FBQUEsWUFBRTtBQUFDLFlBQUFVLEdBQUUsRUFBRSxJQUFFVjtBQUFBLFVBQUMsU0FBTytCLElBQUU7QUFBQyxZQUFBK0IsR0FBRXpCLElBQUVBLEdBQUUsUUFBT04sRUFBQztBQUFBLFVBQUM7QUFBQSxRQUFDO0FBQUM7QUFBQSxNQUFNLEtBQUs7QUFBRSxXQUFHVyxJQUFFTCxFQUFDO0FBQUUsV0FBR0EsRUFBQztBQUFFLFlBQUdjLEtBQUUsR0FBRTtBQUFDLGNBQUcsU0FBT2QsR0FBRSxVQUFVLE9BQU0sTUFBTVQsR0FBRSxHQUFHLENBQUM7QUFBRSxVQUFBbEIsS0FBRTJCLEdBQUU7QUFBVSxVQUFBckMsS0FBRXFDLEdBQUU7QUFBYyxjQUFHO0FBQUMsWUFBQTNCLEdBQUUsWUFBVVY7QUFBQSxVQUFDLFNBQU8rQixJQUFFO0FBQUMsWUFBQStCLEdBQUV6QixJQUFFQSxHQUFFLFFBQU9OLEVBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQztBQUFDO0FBQUEsTUFBTSxLQUFLO0FBQUUsV0FBR1csSUFBRUwsRUFBQztBQUFFLFdBQUdBLEVBQUM7QUFBRSxZQUFHYyxLQUFFLEtBQUcsU0FBT0MsTUFBR0EsR0FBRSxjQUFjLGFBQWEsS0FBRztBQUFDLGFBQUdWLEdBQUUsYUFBYTtBQUFBLFFBQUMsU0FBT1gsSUFBRTtBQUFDLFVBQUErQixHQUFFekIsSUFBRUEsR0FBRSxRQUFPTixFQUFDO0FBQUEsUUFBQztBQUFDO0FBQUEsTUFBTSxLQUFLO0FBQUUsV0FBR1csSUFBRUwsRUFBQztBQUFFLFdBQUdBLEVBQUM7QUFBRTtBQUFBLE1BQU0sS0FBSztBQUFHLFdBQUdLLElBQUVMLEVBQUM7QUFBRSxXQUFHQSxFQUFDO0FBQUUsUUFBQTNCLEtBQUUyQixHQUFFO0FBQU0sUUFBQTNCLEdBQUUsUUFBTSxTQUFPVixLQUFFLFNBQU9VLEdBQUUsZUFBY0EsR0FBRSxVQUFVLFdBQVNWLElBQUUsQ0FBQ0EsTUFDbGYsU0FBT1UsR0FBRSxhQUFXLFNBQU9BLEdBQUUsVUFBVSxrQkFBZ0IsS0FBRzRCLEdBQUc7QUFBRyxRQUFBYSxLQUFFLEtBQUcsR0FBR2QsRUFBQztBQUFFO0FBQUEsTUFBTSxLQUFLO0FBQUcsUUFBQWtCLEtBQUUsU0FBT0gsTUFBRyxTQUFPQSxHQUFFO0FBQWMsUUFBQWYsR0FBRSxPQUFLLEtBQUd3QixNQUFHbkMsS0FBRW1DLE9BQUlOLElBQUUsR0FBR2IsSUFBRUwsRUFBQyxHQUFFd0IsS0FBRW5DLE1BQUcsR0FBR2dCLElBQUVMLEVBQUM7QUFBRSxXQUFHQSxFQUFDO0FBQUUsWUFBR2MsS0FBRSxNQUFLO0FBQUMsVUFBQXpCLEtBQUUsU0FBT1csR0FBRTtBQUFjLGVBQUlBLEdBQUUsVUFBVSxXQUFTWCxPQUFJLENBQUM2QixNQUFHLE9BQUtsQixHQUFFLE9BQUssR0FBRyxNQUFJdEMsS0FBRXNDLElBQUVrQixLQUFFbEIsR0FBRSxPQUFNLFNBQU9rQixNQUFHO0FBQUMsaUJBQUkxQixLQUFFOUIsS0FBRXdELElBQUUsU0FBT3hELE1BQUc7QUFBQyxjQUFBK0IsS0FBRS9CO0FBQUUsY0FBQUQsS0FBRWdDLEdBQUU7QUFBTSxzQkFBT0EsR0FBRSxLQUFHO0FBQUEsZ0JBQUUsS0FBSztBQUFBLGdCQUFFLEtBQUs7QUFBQSxnQkFBRyxLQUFLO0FBQUEsZ0JBQUcsS0FBSztBQUFHLHFCQUFHLEdBQUVBLElBQUVBLEdBQUUsTUFBTTtBQUFFO0FBQUEsZ0JBQU0sS0FBSztBQUFFLHFCQUFHQSxJQUFFQSxHQUFFLE1BQU07QUFBRSxzQkFBSUgsS0FBRUcsR0FBRTtBQUFVLHNCQUFHLGVBQWEsT0FBT0gsR0FBRSxzQkFBcUI7QUFBQyxvQkFBQXdCLEtBQUVyQjtBQUFFLG9CQUFBc0IsS0FBRXRCLEdBQUU7QUFBTyx3QkFBRztBQUFDLHNCQUFBWSxLQUFFUyxJQUFFeEIsR0FBRSxRQUNwZmUsR0FBRSxlQUFjZixHQUFFLFFBQU1lLEdBQUUsZUFBY2YsR0FBRSxxQkFBb0I7QUFBQSxvQkFBRSxTQUFPSSxJQUFFO0FBQUMsc0JBQUErQixHQUFFWCxJQUFFQyxJQUFFckIsRUFBQztBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQztBQUFBLGdCQUFNLEtBQUs7QUFBRSxxQkFBR0QsSUFBRUEsR0FBRSxNQUFNO0FBQUU7QUFBQSxnQkFBTSxLQUFLO0FBQUcsc0JBQUcsU0FBT0EsR0FBRSxlQUFjO0FBQUMsdUJBQUdELEVBQUM7QUFBRTtBQUFBLGtCQUFRO0FBQUEsY0FBQztBQUFDLHVCQUFPL0IsTUFBR0EsR0FBRSxTQUFPZ0MsSUFBRS9CLEtBQUVELE1BQUcsR0FBRytCLEVBQUM7QUFBQSxZQUFDO0FBQUMsWUFBQTBCLEtBQUVBLEdBQUU7QUFBQSxVQUFPO0FBQUMsWUFBRSxNQUFJQSxLQUFFLE1BQUsxQixLQUFFUSxRQUFJO0FBQUMsZ0JBQUcsTUFBSVIsR0FBRSxLQUFJO0FBQUMsa0JBQUcsU0FBTzBCLElBQUU7QUFBQyxnQkFBQUEsS0FBRTFCO0FBQUUsb0JBQUc7QUFBQyxrQkFBQW5CLEtBQUVtQixHQUFFLFdBQVVILE1BQUcxQixLQUFFVSxHQUFFLE9BQU0sZUFBYSxPQUFPVixHQUFFLGNBQVlBLEdBQUUsWUFBWSxXQUFVLFFBQU8sV0FBVyxJQUFFQSxHQUFFLFVBQVEsV0FBU3FELEtBQUV4QixHQUFFLFdBQVVwQixLQUFFb0IsR0FBRSxjQUFjLE9BQU15QixLQUFFLFdBQVM3QyxNQUFHLFNBQU9BLE1BQUdBLEdBQUUsZUFBZSxTQUFTLElBQUVBLEdBQUUsVUFBUSxNQUFLNEMsR0FBRSxNQUFNLFVBQ3pmLEdBQUcsV0FBVUMsRUFBQztBQUFBLGdCQUFFLFNBQU92QixJQUFFO0FBQUMsa0JBQUErQixHQUFFekIsSUFBRUEsR0FBRSxRQUFPTixFQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQyxXQUFTLE1BQUlGLEdBQUUsS0FBSTtBQUFDLGtCQUFHLFNBQU8wQixHQUFFLEtBQUc7QUFBQyxnQkFBQTFCLEdBQUUsVUFBVSxZQUFVSCxLQUFFLEtBQUdHLEdBQUU7QUFBQSxjQUFhLFNBQU9FLElBQUU7QUFBQyxnQkFBQStCLEdBQUV6QixJQUFFQSxHQUFFLFFBQU9OLEVBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQyxZQUFVLE9BQUtGLEdBQUUsT0FBSyxPQUFLQSxHQUFFLE9BQUssU0FBT0EsR0FBRSxpQkFBZUEsT0FBSVEsT0FBSSxTQUFPUixHQUFFLE9BQU07QUFBQyxjQUFBQSxHQUFFLE1BQU0sU0FBT0E7QUFBRSxjQUFBQSxLQUFFQSxHQUFFO0FBQU07QUFBQSxZQUFRO0FBQUMsZ0JBQUdBLE9BQUlRLEdBQUUsT0FBTTtBQUFFLG1CQUFLLFNBQU9SLEdBQUUsV0FBUztBQUFDLGtCQUFHLFNBQU9BLEdBQUUsVUFBUUEsR0FBRSxXQUFTUSxHQUFFLE9BQU07QUFBRSxjQUFBa0IsT0FBSTFCLE9BQUkwQixLQUFFO0FBQU0sY0FBQTFCLEtBQUVBLEdBQUU7QUFBQSxZQUFNO0FBQUMsWUFBQTBCLE9BQUkxQixPQUFJMEIsS0FBRTtBQUFNLFlBQUExQixHQUFFLFFBQVEsU0FBT0EsR0FBRTtBQUFPLFlBQUFBLEtBQUVBLEdBQUU7QUFBQSxVQUFPO0FBQUEsUUFBQztBQUFDO0FBQUEsTUFBTSxLQUFLO0FBQUcsV0FBR2EsSUFBRUwsRUFBQztBQUFFLFdBQUdBLEVBQUM7QUFBRSxRQUFBYyxLQUFFLEtBQUcsR0FBR2QsRUFBQztBQUFFO0FBQUEsTUFBTSxLQUFLO0FBQUc7QUFBQSxNQUFNO0FBQVE7QUFBQSxVQUFHSztBQUFBLFVBQ25mTDtBQUFBLFFBQUMsR0FBRSxHQUFHQSxFQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdBLElBQUU7QUFBQyxRQUFJSyxLQUFFTCxHQUFFO0FBQU0sUUFBR0ssS0FBRSxHQUFFO0FBQUMsVUFBRztBQUFDLFdBQUU7QUFBQyxtQkFBUVUsS0FBRWYsR0FBRSxRQUFPLFNBQU9lLE1BQUc7QUFBQyxnQkFBRyxHQUFHQSxFQUFDLEdBQUU7QUFBQyxrQkFBSUQsS0FBRUM7QUFBRSxvQkFBTTtBQUFBLFlBQUM7QUFBQyxZQUFBQSxLQUFFQSxHQUFFO0FBQUEsVUFBTTtBQUFDLGdCQUFNLE1BQU14QixHQUFFLEdBQUcsQ0FBQztBQUFBLFFBQUU7QUFBQyxnQkFBT3VCLEdBQUUsS0FBRztBQUFBLFVBQUUsS0FBSztBQUFFLGdCQUFJekMsS0FBRXlDLEdBQUU7QUFBVSxZQUFBQSxHQUFFLFFBQU0sT0FBSyxHQUFHekMsSUFBRSxFQUFFLEdBQUV5QyxHQUFFLFNBQU87QUFBSyxnQkFBSW5ELEtBQUUsR0FBR3FDLEVBQUM7QUFBRSxlQUFHQSxJQUFFckMsSUFBRVUsRUFBQztBQUFFO0FBQUEsVUFBTSxLQUFLO0FBQUEsVUFBRSxLQUFLO0FBQUUsZ0JBQUk0QyxLQUFFSCxHQUFFLFVBQVUsZUFBY0UsS0FBRSxHQUFHaEIsRUFBQztBQUFFLGVBQUdBLElBQUVnQixJQUFFQyxFQUFDO0FBQUU7QUFBQSxVQUFNO0FBQVEsa0JBQU0sTUFBTTFCLEdBQUUsR0FBRyxDQUFDO0FBQUEsUUFBRTtBQUFBLE1BQUMsU0FBT25CLElBQUU7QUFBQyxRQUFBcUQsR0FBRXpCLElBQUVBLEdBQUUsUUFBTzVCLEVBQUM7QUFBQSxNQUFDO0FBQUMsTUFBQTRCLEdBQUUsU0FBTztBQUFBLElBQUU7QUFBQyxJQUFBSyxLQUFFLFNBQU9MLEdBQUUsU0FBTztBQUFBLEVBQU07QUFBQyxXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUU7QUFBQyxJQUFBckQsS0FBRXNDO0FBQUUsT0FBR0EsRUFBSztBQUFBLEVBQUM7QUFDdmIsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsYUFBUUQsS0FBRSxPQUFLZCxHQUFFLE9BQUssSUFBRyxTQUFPdEMsTUFBRztBQUFDLFVBQUlXLEtBQUVYLElBQUVDLEtBQUVVLEdBQUU7QUFBTSxVQUFHLE9BQUtBLEdBQUUsT0FBS3lDLElBQUU7QUFBQyxZQUFJRyxLQUFFLFNBQU81QyxHQUFFLGlCQUFlO0FBQUcsWUFBRyxDQUFDNEMsSUFBRTtBQUFDLGNBQUlELEtBQUUzQyxHQUFFLFdBQVVELEtBQUUsU0FBTzRDLE1BQUcsU0FBT0EsR0FBRSxpQkFBZVE7QUFBRSxVQUFBUixLQUFFO0FBQUcsY0FBSTNCLEtBQUVtQztBQUFFLGVBQUdQO0FBQUUsZUFBSU8sS0FBRXBELE9BQUksQ0FBQ2lCLEdBQUUsTUFBSTNCLEtBQUVXLElBQUUsU0FBT1gsS0FBRyxDQUFBdUQsS0FBRXZELElBQUVVLEtBQUU2QyxHQUFFLE9BQU0sT0FBS0EsR0FBRSxPQUFLLFNBQU9BLEdBQUUsZ0JBQWMsR0FBRzVDLEVBQUMsSUFBRSxTQUFPRCxNQUFHQSxHQUFFLFNBQU82QyxJQUFFdkQsS0FBRVUsTUFBRyxHQUFHQyxFQUFDO0FBQUUsaUJBQUssU0FBT1YsS0FBRyxDQUFBRCxLQUFFQyxJQUFFLEdBQUdBLEVBQUssR0FBRUEsS0FBRUEsR0FBRTtBQUFRLFVBQUFELEtBQUVXO0FBQUUsZUFBRzJDO0FBQUUsVUFBQVEsS0FBRW5DO0FBQUEsUUFBQztBQUFDLFdBQUdXLEVBQUs7QUFBQSxNQUFDLE1BQU0sUUFBSzNCLEdBQUUsZUFBYSxTQUFPLFNBQU9WLE1BQUdBLEdBQUUsU0FBT1UsSUFBRVgsS0FBRUMsTUFBRyxHQUFHcUMsRUFBSztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQ3ZjLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFdBQUssU0FBT3RDLE1BQUc7QUFBQyxVQUFJMkMsS0FBRTNDO0FBQUUsVUFBRyxPQUFLMkMsR0FBRSxRQUFNLE9BQU07QUFBQyxZQUFJVSxLQUFFVixHQUFFO0FBQVUsWUFBRztBQUFDLGNBQUcsT0FBS0EsR0FBRSxRQUFNLE1BQU0sU0FBT0EsR0FBRSxLQUFHO0FBQUEsWUFBRSxLQUFLO0FBQUEsWUFBRSxLQUFLO0FBQUEsWUFBRyxLQUFLO0FBQUcsY0FBQW1CLE1BQUcsR0FBRyxHQUFFbkIsRUFBQztBQUFFO0FBQUEsWUFBTSxLQUFLO0FBQUUsa0JBQUlTLEtBQUVULEdBQUU7QUFBVSxrQkFBR0EsR0FBRSxRQUFNLEtBQUcsQ0FBQ21CLEdBQUUsS0FBRyxTQUFPVCxHQUFFLENBQUFELEdBQUUsa0JBQW1CO0FBQUEsbUJBQUs7QUFBQyxvQkFBSXpDLEtBQUVnQyxHQUFFLGdCQUFjQSxHQUFFLE9BQUtVLEdBQUUsZ0JBQWMsR0FBR1YsR0FBRSxNQUFLVSxHQUFFLGFBQWE7QUFBRSxnQkFBQUQsR0FBRSxtQkFBbUJ6QyxJQUFFMEMsR0FBRSxlQUFjRCxHQUFFLG1DQUFtQztBQUFBLGNBQUM7QUFBQyxrQkFBSW5ELEtBQUUwQyxHQUFFO0FBQVksdUJBQU8xQyxNQUFHLEdBQUcwQyxJQUFFMUMsSUFBRW1ELEVBQUM7QUFBRTtBQUFBLFlBQU0sS0FBSztBQUFFLGtCQUFJRyxLQUFFWixHQUFFO0FBQVksa0JBQUcsU0FBT1ksSUFBRTtBQUFDLGdCQUFBRixLQUFFO0FBQUssb0JBQUcsU0FBT1YsR0FBRSxNQUFNLFNBQU9BLEdBQUUsTUFBTSxLQUFLO0FBQUEsa0JBQUEsS0FBSztBQUFFLG9CQUFBVSxLQUNqaEJWLEdBQUUsTUFBTTtBQUFVO0FBQUEsa0JBQU0sS0FBSztBQUFFLG9CQUFBVSxLQUFFVixHQUFFLE1BQU07QUFBQSxnQkFBUztBQUFDLG1CQUFHQSxJQUFFWSxJQUFFRixFQUFDO0FBQUEsY0FBQztBQUFDO0FBQUEsWUFBTSxLQUFLO0FBQUUsa0JBQUlDLEtBQUVYLEdBQUU7QUFBVSxrQkFBRyxTQUFPVSxNQUFHVixHQUFFLFFBQU0sR0FBRTtBQUFDLGdCQUFBVSxLQUFFQztBQUFFLG9CQUFJNUMsS0FBRWlDLEdBQUU7QUFBYyx3QkFBT0EsR0FBRSxNQUFNO0FBQUEsa0JBQUEsS0FBSztBQUFBLGtCQUFTLEtBQUs7QUFBQSxrQkFBUSxLQUFLO0FBQUEsa0JBQVMsS0FBSztBQUFXLG9CQUFBakMsR0FBRSxhQUFXMkMsR0FBRTtBQUFRO0FBQUEsa0JBQU0sS0FBSztBQUFNLG9CQUFBM0MsR0FBRSxRQUFNMkMsR0FBRSxNQUFJM0MsR0FBRTtBQUFBLGdCQUFJO0FBQUEsY0FBQztBQUFDO0FBQUEsWUFBTSxLQUFLO0FBQUU7QUFBQSxZQUFNLEtBQUs7QUFBRTtBQUFBLFlBQU0sS0FBSztBQUFHO0FBQUEsWUFBTSxLQUFLO0FBQUcsa0JBQUcsU0FBT2lDLEdBQUUsZUFBYztBQUFDLG9CQUFJaEIsS0FBRWdCLEdBQUU7QUFBVSxvQkFBRyxTQUFPaEIsSUFBRTtBQUFDLHNCQUFJNkIsS0FBRTdCLEdBQUU7QUFBYyxzQkFBRyxTQUFPNkIsSUFBRTtBQUFDLHdCQUFJMUIsS0FBRTBCLEdBQUU7QUFBVyw2QkFBTzFCLE1BQUcsR0FBR0EsRUFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUM7QUFBQSxZQUFNLEtBQUs7QUFBQSxZQUFHLEtBQUs7QUFBQSxZQUFHLEtBQUs7QUFBQSxZQUFHLEtBQUs7QUFBQSxZQUFHLEtBQUs7QUFBQSxZQUFHLEtBQUs7QUFBRztBQUFBLFlBQ2xnQjtBQUFRLG9CQUFNLE1BQU1ELEdBQUUsR0FBRyxDQUFDO0FBQUEsVUFBRTtBQUFDLFVBQUFpQyxNQUFHbkIsR0FBRSxRQUFNLE9BQUssR0FBR0EsRUFBQztBQUFBLFFBQUMsU0FBT1osSUFBRTtBQUFDLFVBQUFnQyxHQUFFcEIsSUFBRUEsR0FBRSxRQUFPWixFQUFDO0FBQUEsUUFBQztBQUFBLE1BQUM7QUFBQyxVQUFHWSxPQUFJTCxJQUFFO0FBQUMsUUFBQXRDLEtBQUU7QUFBSztBQUFBLE1BQUs7QUFBQyxNQUFBcUQsS0FBRVYsR0FBRTtBQUFRLFVBQUcsU0FBT1UsSUFBRTtBQUFDLFFBQUFBLEdBQUUsU0FBT1YsR0FBRTtBQUFPLFFBQUEzQyxLQUFFcUQ7QUFBRTtBQUFBLE1BQUs7QUFBQyxNQUFBckQsS0FBRTJDLEdBQUU7QUFBQSxJQUFNO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0wsSUFBRTtBQUFDLFdBQUssU0FBT3RDLE1BQUc7QUFBQyxVQUFJMkMsS0FBRTNDO0FBQUUsVUFBRzJDLE9BQUlMLElBQUU7QUFBQyxRQUFBdEMsS0FBRTtBQUFLO0FBQUEsTUFBSztBQUFDLFVBQUlxRCxLQUFFVixHQUFFO0FBQVEsVUFBRyxTQUFPVSxJQUFFO0FBQUMsUUFBQUEsR0FBRSxTQUFPVixHQUFFO0FBQU8sUUFBQTNDLEtBQUVxRDtBQUFFO0FBQUEsTUFBSztBQUFDLE1BQUFyRCxLQUFFMkMsR0FBRTtBQUFBLElBQU07QUFBQSxFQUFDO0FBQ3ZTLFdBQVMsR0FBR0wsSUFBRTtBQUFDLFdBQUssU0FBT3RDLE1BQUc7QUFBQyxVQUFJMkMsS0FBRTNDO0FBQUUsVUFBRztBQUFDLGdCQUFPMkMsR0FBRSxLQUFLO0FBQUEsVUFBQSxLQUFLO0FBQUEsVUFBRSxLQUFLO0FBQUEsVUFBRyxLQUFLO0FBQUcsZ0JBQUlVLEtBQUVWLEdBQUU7QUFBTyxnQkFBRztBQUFDLGlCQUFHLEdBQUVBLEVBQUM7QUFBQSxZQUFDLFNBQU9qQyxJQUFFO0FBQUMsY0FBQXFELEdBQUVwQixJQUFFVSxJQUFFM0MsRUFBQztBQUFBLFlBQUM7QUFBQztBQUFBLFVBQU0sS0FBSztBQUFFLGdCQUFJMEMsS0FBRVQsR0FBRTtBQUFVLGdCQUFHLGVBQWEsT0FBT1MsR0FBRSxtQkFBa0I7QUFBQyxrQkFBSXpDLEtBQUVnQyxHQUFFO0FBQU8sa0JBQUc7QUFBQyxnQkFBQVMsR0FBRSxrQkFBaUI7QUFBQSxjQUFFLFNBQU8xQyxJQUFFO0FBQUMsZ0JBQUFxRCxHQUFFcEIsSUFBRWhDLElBQUVELEVBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFJVCxLQUFFMEMsR0FBRTtBQUFPLGdCQUFHO0FBQUMsaUJBQUdBLEVBQUM7QUFBQSxZQUFDLFNBQU9qQyxJQUFFO0FBQUMsY0FBQXFELEdBQUVwQixJQUFFMUMsSUFBRVMsRUFBQztBQUFBLFlBQUM7QUFBQztBQUFBLFVBQU0sS0FBSztBQUFFLGdCQUFJNkMsS0FBRVosR0FBRTtBQUFPLGdCQUFHO0FBQUMsaUJBQUdBLEVBQUM7QUFBQSxZQUFDLFNBQU9qQyxJQUFFO0FBQUMsY0FBQXFELEdBQUVwQixJQUFFWSxJQUFFN0MsRUFBQztBQUFBLFlBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxTQUFPQSxJQUFFO0FBQUMsUUFBQXFELEdBQUVwQixJQUFFQSxHQUFFLFFBQU9qQyxFQUFDO0FBQUEsTUFBQztBQUFDLFVBQUdpQyxPQUFJTCxJQUFFO0FBQUMsUUFBQXRDLEtBQUU7QUFBSztBQUFBLE1BQUs7QUFBQyxVQUFJc0QsS0FBRVgsR0FBRTtBQUFRLFVBQUcsU0FBT1csSUFBRTtBQUFDLFFBQUFBLEdBQUUsU0FBT1gsR0FBRTtBQUFPLFFBQUEzQyxLQUFFc0Q7QUFBRTtBQUFBLE1BQUs7QUFBQyxNQUFBdEQsS0FBRTJDLEdBQUU7QUFBQSxJQUFNO0FBQUEsRUFBQztBQUM3ZCxNQUFJLEtBQUcsS0FBSyxNQUFLLEtBQUcsR0FBRyx3QkFBdUIsS0FBRyxHQUFHLG1CQUFrQixLQUFHLEdBQUcseUJBQXdCTSxLQUFFLEdBQUVTLEtBQUUsTUFBS3VJLEtBQUUsTUFBS0MsS0FBRSxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFckksS0FBRSxHQUFFLEtBQUcsTUFBSyxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLE1BQUssS0FBRyxNQUFLLEtBQUcsR0FBRSxLQUFHLFVBQVMsS0FBRyxNQUFLLEtBQUcsT0FBRyxLQUFHLE1BQUssS0FBRyxNQUFLLEtBQUcsT0FBRyxLQUFHLE1BQUssS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLE1BQUssS0FBRyxJQUFHLEtBQUc7QUFBRSxXQUFTRixLQUFHO0FBQUMsV0FBTyxPQUFLVixLQUFFLEtBQUdWLE9BQUksT0FBSyxLQUFHLEtBQUcsS0FBR0EsR0FBRztBQUFBLEVBQUE7QUFDaFUsV0FBUyxHQUFHRCxJQUFFO0FBQUMsUUFBRyxPQUFLQSxHQUFFLE9BQUssR0FBRyxRQUFPO0FBQUUsUUFBRyxPQUFLVyxLQUFFLE1BQUksTUFBSWlKLEdBQUUsUUFBT0EsS0FBRSxDQUFDQTtBQUFFLFFBQUcsU0FBTyxHQUFHLFdBQVcsUUFBTyxNQUFJLE9BQUssS0FBRyxPQUFNO0FBQUcsSUFBQTVKLEtBQUVFO0FBQUUsUUFBRyxNQUFJRixHQUFFLFFBQU9BO0FBQUUsSUFBQUEsS0FBRSxPQUFPO0FBQU0sSUFBQUEsS0FBRSxXQUFTQSxLQUFFLEtBQUcsR0FBR0EsR0FBRSxJQUFJO0FBQUUsV0FBT0E7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFO0FBQUMsUUFBRyxLQUFHLEdBQUcsT0FBTSxLQUFHLEdBQUUsS0FBRyxNQUFLLE1BQU12QixHQUFFLEdBQUcsQ0FBQztBQUFFLE9BQUdTLElBQUVlLElBQUVELEVBQUM7QUFBRSxRQUFHLE9BQUtILEtBQUUsTUFBSVgsT0FBSW9CLEdBQUUsQ0FBQXBCLE9BQUlvQixPQUFJLE9BQUtULEtBQUUsT0FBSyxNQUFJSSxLQUFHLE1BQUlRLE1BQUcsR0FBR3ZCLElBQUU0SixFQUFDLElBQUcsR0FBRzVKLElBQUVjLEVBQUMsR0FBRSxNQUFJQyxNQUFHLE1BQUlKLE1BQUcsT0FBS04sR0FBRSxPQUFLLE9BQUssS0FBR0osR0FBQyxJQUFHLEtBQUksTUFBSSxHQUFFO0FBQUEsRUFBRztBQUMxWSxXQUFTLEdBQUdELElBQUVLLElBQUU7QUFBQyxRQUFJVSxLQUFFZixHQUFFO0FBQWEsT0FBR0EsSUFBRUssRUFBQztBQUFFLFFBQUlTLEtBQUUsR0FBR2QsSUFBRUEsT0FBSW9CLEtBQUV3SSxLQUFFLENBQUM7QUFBRSxRQUFHLE1BQUk5SSxHQUFFLFVBQU9DLE1BQUcsR0FBR0EsRUFBQyxHQUFFZixHQUFFLGVBQWEsTUFBS0EsR0FBRSxtQkFBaUI7QUFBQSxhQUFVSyxLQUFFUyxLQUFFLENBQUNBLElBQUVkLEdBQUUscUJBQW1CSyxJQUFFO0FBQUMsY0FBTVUsTUFBRyxHQUFHQSxFQUFDO0FBQUUsVUFBRyxNQUFJVixHQUFFLE9BQUlMLEdBQUUsTUFBSSxHQUFHLEdBQUcsS0FBSyxNQUFLQSxFQUFDLENBQUMsSUFBRSxHQUFHLEdBQUcsS0FBSyxNQUFLQSxFQUFDLENBQUMsR0FBRSxHQUFHLFdBQVU7QUFBQyxlQUFLVyxLQUFFLE1BQUksR0FBSTtBQUFBLE1BQUEsQ0FBQyxHQUFFSSxLQUFFO0FBQUEsV0FBUztBQUFDLGdCQUFPLEdBQUdELEVBQUMsR0FBQztBQUFBLFVBQUUsS0FBSztBQUFFLFlBQUFDLEtBQUU7QUFBRztBQUFBLFVBQU0sS0FBSztBQUFFLFlBQUFBLEtBQUU7QUFBRztBQUFBLFVBQU0sS0FBSztBQUFHLFlBQUFBLEtBQUU7QUFBRztBQUFBLFVBQU0sS0FBSztBQUFVLFlBQUFBLEtBQUU7QUFBRztBQUFBLFVBQU07QUFBUSxZQUFBQSxLQUFFO0FBQUEsUUFBRTtBQUFDLFFBQUFBLEtBQUUsR0FBR0EsSUFBRSxHQUFHLEtBQUssTUFBS2YsRUFBQyxDQUFDO0FBQUEsTUFBQztBQUFDLE1BQUFBLEdBQUUsbUJBQWlCSztBQUFFLE1BQUFMLEdBQUUsZUFBYWU7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUM3YyxXQUFTLEdBQUdmLElBQUVLLElBQUU7QUFBQyxTQUFHO0FBQUcsU0FBRztBQUFFLFFBQUcsT0FBS00sS0FBRSxHQUFHLE9BQU0sTUFBTXBCLEdBQUUsR0FBRyxDQUFDO0FBQUUsUUFBSXdCLEtBQUVmLEdBQUU7QUFBYSxRQUFHLEdBQUksS0FBRUEsR0FBRSxpQkFBZWUsR0FBRSxRQUFPO0FBQUssUUFBSUQsS0FBRSxHQUFHZCxJQUFFQSxPQUFJb0IsS0FBRXdJLEtBQUUsQ0FBQztBQUFFLFFBQUcsTUFBSTlJLEdBQUUsUUFBTztBQUFLLFFBQUcsT0FBS0EsS0FBRSxPQUFLLE9BQUtBLEtBQUVkLEdBQUUsaUJBQWVLLEdBQUUsQ0FBQUEsS0FBRSxHQUFHTCxJQUFFYyxFQUFDO0FBQUEsU0FBTTtBQUFDLE1BQUFULEtBQUVTO0FBQUUsVUFBSXpDLEtBQUVzQztBQUFFLE1BQUFBLE1BQUc7QUFBRSxVQUFJaEQsS0FBRSxHQUFFO0FBQUcsVUFBR3lELE9BQUlwQixNQUFHNEosT0FBSXZKLEdBQUUsTUFBRyxNQUFLLEtBQUdKLEdBQUcsSUFBQyxLQUFJLEdBQUdELElBQUVLLEVBQUM7QUFBRTtBQUFHLFlBQUc7QUFBQyxhQUFJO0FBQUM7QUFBQSxRQUFLLFNBQU9XLElBQUU7QUFBQyxhQUFHaEIsSUFBRWdCLEVBQUM7QUFBQSxRQUFDO0FBQUEsYUFBTztBQUFHLFNBQUU7QUFBRyxTQUFHLFVBQVFyRDtBQUFFLE1BQUFnRCxLQUFFdEM7QUFBRSxlQUFPc0wsS0FBRXRKLEtBQUUsS0FBR2UsS0FBRSxNQUFLd0ksS0FBRSxHQUFFdkosS0FBRWtCO0FBQUEsSUFBRTtBQUFDLFFBQUcsTUFBSWxCLElBQUU7QUFBQyxZQUFJQSxPQUFJaEMsS0FBRSxHQUFHMkIsRUFBQyxHQUFFLE1BQUkzQixPQUFJeUMsS0FBRXpDLElBQUVnQyxLQUFFLEdBQUdMLElBQUUzQixFQUFDO0FBQUksVUFBRyxNQUFJZ0MsR0FBRSxPQUFNVSxLQUFFLElBQUcsR0FBR2YsSUFBRSxDQUFDLEdBQUUsR0FBR0EsSUFBRWMsRUFBQyxHQUFFLEdBQUdkLElBQUVDLEdBQUcsQ0FBQSxHQUFFYztBQUFFLFVBQUcsTUFBSVYsR0FBRSxJQUFHTCxJQUFFYyxFQUFDO0FBQUEsV0FDamY7QUFBQyxRQUFBekMsS0FBRTJCLEdBQUUsUUFBUTtBQUFVLFlBQUcsT0FBS2MsS0FBRSxPQUFLLENBQUMrSSxJQUFHeEwsRUFBQyxNQUFJZ0MsS0FBRSxHQUFHTCxJQUFFYyxFQUFDLEdBQUUsTUFBSVQsT0FBSTFDLEtBQUUsR0FBR3FDLEVBQUMsR0FBRSxNQUFJckMsT0FBSW1ELEtBQUVuRCxJQUFFMEMsS0FBRSxHQUFHTCxJQUFFckMsRUFBQyxLQUFJLE1BQUkwQyxJQUFHLE9BQU1VLEtBQUUsSUFBRyxHQUFHZixJQUFFLENBQUMsR0FBRSxHQUFHQSxJQUFFYyxFQUFDLEdBQUUsR0FBR2QsSUFBRUMsR0FBQyxDQUFFLEdBQUVjO0FBQUUsUUFBQWYsR0FBRSxlQUFhM0I7QUFBRSxRQUFBMkIsR0FBRSxnQkFBY2M7QUFBRSxnQkFBT1QsSUFBQztBQUFBLFVBQUUsS0FBSztBQUFBLFVBQUUsS0FBSztBQUFFLGtCQUFNLE1BQU1kLEdBQUUsR0FBRyxDQUFDO0FBQUEsVUFBRSxLQUFLO0FBQUUsZUFBR1MsSUFBRSxJQUFHLEVBQUU7QUFBRTtBQUFBLFVBQU0sS0FBSztBQUFFLGVBQUdBLElBQUVjLEVBQUM7QUFBRSxpQkFBSUEsS0FBRSxlQUFhQSxPQUFJVCxLQUFFLEtBQUcsTUFBSUosR0FBQyxHQUFHLEtBQUdJLEtBQUc7QUFBQyxrQkFBRyxNQUFJLEdBQUdMLElBQUUsQ0FBQyxFQUFFO0FBQU0sY0FBQTNCLEtBQUUyQixHQUFFO0FBQWUsbUJBQUkzQixLQUFFeUMsUUFBS0EsSUFBRTtBQUFDLGdCQUFBTyxHQUFDO0FBQUcsZ0JBQUFyQixHQUFFLGVBQWFBLEdBQUUsaUJBQWUzQjtBQUFFO0FBQUEsY0FBSztBQUFDLGNBQUEyQixHQUFFLGdCQUFjLEdBQUcsR0FBRyxLQUFLLE1BQUtBLElBQUUsSUFBRyxFQUFFLEdBQUVLLEVBQUM7QUFBRTtBQUFBLFlBQUs7QUFBQyxlQUFHTCxJQUFFLElBQUcsRUFBRTtBQUFFO0FBQUEsVUFBTSxLQUFLO0FBQUUsZUFBR0EsSUFBRWMsRUFBQztBQUFFLGlCQUFJQSxLQUFFLGFBQ2hmQSxHQUFFO0FBQU0sWUFBQVQsS0FBRUwsR0FBRTtBQUFXLGlCQUFJM0IsS0FBRSxJQUFHLElBQUV5QyxNQUFHO0FBQUMsa0JBQUlHLEtBQUUsS0FBRyxHQUFHSCxFQUFDO0FBQUUsY0FBQW5ELEtBQUUsS0FBR3NEO0FBQUUsY0FBQUEsS0FBRVosR0FBRVksRUFBQztBQUFFLGNBQUFBLEtBQUU1QyxPQUFJQSxLQUFFNEM7QUFBRyxjQUFBSCxNQUFHLENBQUNuRDtBQUFBLFlBQUM7QUFBQyxZQUFBbUQsS0FBRXpDO0FBQUUsWUFBQXlDLEtBQUViLE9BQUlhO0FBQUUsWUFBQUEsTUFBRyxNQUFJQSxLQUFFLE1BQUksTUFBSUEsS0FBRSxNQUFJLE9BQUtBLEtBQUUsT0FBSyxPQUFLQSxLQUFFLE9BQUssTUFBSUEsS0FBRSxNQUFJLE9BQUtBLEtBQUUsT0FBSyxPQUFLLEdBQUdBLEtBQUUsSUFBSSxLQUFHQTtBQUFFLGdCQUFHLEtBQUdBLElBQUU7QUFBQyxjQUFBZCxHQUFFLGdCQUFjLEdBQUcsR0FBRyxLQUFLLE1BQUtBLElBQUUsSUFBRyxFQUFFLEdBQUVjLEVBQUM7QUFBRTtBQUFBLFlBQUs7QUFBQyxlQUFHZCxJQUFFLElBQUcsRUFBRTtBQUFFO0FBQUEsVUFBTSxLQUFLO0FBQUUsZUFBR0EsSUFBRSxJQUFHLEVBQUU7QUFBRTtBQUFBLFVBQU07QUFBUSxrQkFBTSxNQUFNVCxHQUFFLEdBQUcsQ0FBQztBQUFBLFFBQUU7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLE9BQUdTLElBQUVDLElBQUc7QUFBRSxXQUFPRCxHQUFFLGlCQUFlZSxLQUFFLEdBQUcsS0FBSyxNQUFLZixFQUFDLElBQUU7QUFBQSxFQUFJO0FBQ3JYLFdBQVMsR0FBR0EsSUFBRUssSUFBRTtBQUFDLFFBQUlVLEtBQUU7QUFBRyxJQUFBZixHQUFFLFFBQVEsY0FBYyxpQkFBZSxHQUFHQSxJQUFFSyxFQUFDLEVBQUUsU0FBTztBQUFLLElBQUFMLEtBQUUsR0FBR0EsSUFBRUssRUFBQztBQUFFLFVBQUlMLE9BQUlLLEtBQUUsSUFBRyxLQUFHVSxJQUFFLFNBQU9WLE1BQUcsR0FBR0EsRUFBQztBQUFHLFdBQU9MO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0EsSUFBRTtBQUFDLGFBQU8sS0FBRyxLQUFHQSxLQUFFLEdBQUcsS0FBSyxNQUFNLElBQUdBLEVBQUM7QUFBQSxFQUFDO0FBQzVMLFdBQVM2SixJQUFHN0osSUFBRTtBQUFDLGFBQVFLLEtBQUVMLFFBQUk7QUFBQyxVQUFHSyxHQUFFLFFBQU0sT0FBTTtBQUFDLFlBQUlVLEtBQUVWLEdBQUU7QUFBWSxZQUFHLFNBQU9VLE9BQUlBLEtBQUVBLEdBQUUsUUFBTyxTQUFPQSxJQUFHLFVBQVFELEtBQUUsR0FBRUEsS0FBRUMsR0FBRSxRQUFPRCxNQUFJO0FBQUMsY0FBSXpDLEtBQUUwQyxHQUFFRCxFQUFDLEdBQUVuRCxLQUFFVSxHQUFFO0FBQVksVUFBQUEsS0FBRUEsR0FBRTtBQUFNLGNBQUc7QUFBQyxnQkFBRyxDQUFDbUssSUFBRzdLLEdBQUMsR0FBR1UsRUFBQyxFQUFFLFFBQU07QUFBQSxVQUFFLFNBQU80QyxJQUFFO0FBQUMsbUJBQU07QUFBQSxVQUFFO0FBQUEsUUFBQztBQUFBLE1BQUM7QUFBQyxNQUFBRixLQUFFVixHQUFFO0FBQU0sVUFBR0EsR0FBRSxlQUFhLFNBQU8sU0FBT1UsR0FBRSxDQUFBQSxHQUFFLFNBQU9WLElBQUVBLEtBQUVVO0FBQUEsV0FBTTtBQUFDLFlBQUdWLE9BQUlMLEdBQUU7QUFBTSxlQUFLLFNBQU9LLEdBQUUsV0FBUztBQUFDLGNBQUcsU0FBT0EsR0FBRSxVQUFRQSxHQUFFLFdBQVNMLEdBQUUsUUFBTTtBQUFHLFVBQUFLLEtBQUVBLEdBQUU7QUFBQSxRQUFNO0FBQUMsUUFBQUEsR0FBRSxRQUFRLFNBQU9BLEdBQUU7QUFBTyxRQUFBQSxLQUFFQSxHQUFFO0FBQUEsTUFBTztBQUFBLElBQUM7QUFBQyxXQUFNO0FBQUEsRUFBRTtBQUNsYSxXQUFTLEdBQUdMLElBQUVLLElBQUU7QUFBQyxJQUFBQSxNQUFHLENBQUM7QUFBRyxJQUFBQSxNQUFHLENBQUM7QUFBRyxJQUFBTCxHQUFFLGtCQUFnQks7QUFBRSxJQUFBTCxHQUFFLGVBQWEsQ0FBQ0s7QUFBRSxTQUFJTCxLQUFFQSxHQUFFLGlCQUFnQixJQUFFSyxNQUFHO0FBQUMsVUFBSVUsS0FBRSxLQUFHLEdBQUdWLEVBQUMsR0FBRVMsS0FBRSxLQUFHQztBQUFFLE1BQUFmLEdBQUVlLEVBQUMsSUFBRTtBQUFHLE1BQUFWLE1BQUcsQ0FBQ1M7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR2QsSUFBRTtBQUFDLFFBQUcsT0FBS1csS0FBRSxHQUFHLE9BQU0sTUFBTXBCLEdBQUUsR0FBRyxDQUFDO0FBQUUsT0FBRTtBQUFHLFFBQUljLEtBQUUsR0FBR0wsSUFBRSxDQUFDO0FBQUUsUUFBRyxPQUFLSyxLQUFFLEdBQUcsUUFBTyxHQUFHTCxJQUFFQyxHQUFDLENBQUUsR0FBRTtBQUFLLFFBQUljLEtBQUUsR0FBR2YsSUFBRUssRUFBQztBQUFFLFFBQUcsTUFBSUwsR0FBRSxPQUFLLE1BQUllLElBQUU7QUFBQyxVQUFJRCxLQUFFLEdBQUdkLEVBQUM7QUFBRSxZQUFJYyxPQUFJVCxLQUFFUyxJQUFFQyxLQUFFLEdBQUdmLElBQUVjLEVBQUM7QUFBQSxJQUFFO0FBQUMsUUFBRyxNQUFJQyxHQUFFLE9BQU1BLEtBQUUsSUFBRyxHQUFHZixJQUFFLENBQUMsR0FBRSxHQUFHQSxJQUFFSyxFQUFDLEdBQUUsR0FBR0wsSUFBRUMsR0FBQyxDQUFFLEdBQUVjO0FBQUUsUUFBRyxNQUFJQSxHQUFFLE9BQU0sTUFBTXhCLEdBQUUsR0FBRyxDQUFDO0FBQUUsSUFBQVMsR0FBRSxlQUFhQSxHQUFFLFFBQVE7QUFBVSxJQUFBQSxHQUFFLGdCQUFjSztBQUFFLE9BQUdMLElBQUUsSUFBRyxFQUFFO0FBQUUsT0FBR0EsSUFBRUMsR0FBQyxDQUFFO0FBQUUsV0FBTztBQUFBLEVBQUk7QUFDdmQsV0FBUyxHQUFHRCxJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRUo7QUFBRSxJQUFBQSxNQUFHO0FBQUUsUUFBRztBQUFDLGFBQU9YLEdBQUVLLEVBQUM7QUFBQSxJQUFDLFVBQUM7QUFBUSxNQUFBTSxLQUFFSSxJQUFFLE1BQUlKLE9BQUksS0FBR1YsR0FBQyxJQUFHLEtBQUksTUFBSSxHQUFJO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdELElBQUU7QUFBQyxhQUFPLE1BQUksTUFBSSxHQUFHLE9BQUssT0FBS1csS0FBRSxNQUFJLEdBQUU7QUFBRyxRQUFJTixLQUFFTTtBQUFFLElBQUFBLE1BQUc7QUFBRSxRQUFJSSxLQUFFLEdBQUcsWUFBV0QsS0FBRVo7QUFBRSxRQUFHO0FBQUMsVUFBRyxHQUFHLGFBQVcsTUFBS0EsS0FBRSxHQUFFRixHQUFFLFFBQU9BLEdBQUM7QUFBQSxJQUFFLFVBQUM7QUFBUSxNQUFBRSxLQUFFWSxJQUFFLEdBQUcsYUFBV0MsSUFBRUosS0FBRU4sSUFBRSxPQUFLTSxLQUFFLE1BQUk7SUFBSTtBQUFBLEVBQUM7QUFBQyxXQUFTLEtBQUk7QUFBQyxTQUFHLEdBQUc7QUFBUSxJQUFBUCxHQUFFLEVBQUU7QUFBQSxFQUFDO0FBQ2hULFdBQVMsR0FBR0osSUFBRUssSUFBRTtBQUFDLElBQUFMLEdBQUUsZUFBYTtBQUFLLElBQUFBLEdBQUUsZ0JBQWM7QUFBRSxRQUFJZSxLQUFFZixHQUFFO0FBQWMsV0FBS2UsT0FBSWYsR0FBRSxnQkFBYyxJQUFHLEdBQUdlLEVBQUM7QUFBRyxRQUFHLFNBQU80SSxHQUFFLE1BQUk1SSxLQUFFNEksR0FBRSxRQUFPLFNBQU81SSxNQUFHO0FBQUMsVUFBSUQsS0FBRUM7QUFBRSxTQUFHRCxFQUFDO0FBQUUsY0FBT0EsR0FBRSxLQUFHO0FBQUEsUUFBRSxLQUFLO0FBQUUsVUFBQUEsS0FBRUEsR0FBRSxLQUFLO0FBQWtCLG1CQUFPQSxNQUFHLFdBQVNBLE1BQUcsR0FBSTtBQUFDO0FBQUEsUUFBTSxLQUFLO0FBQUUsYUFBSTtBQUFDLFVBQUFWLEdBQUUsRUFBRTtBQUFFLFVBQUFBLEdBQUVJLEVBQUM7QUFBRSxhQUFJO0FBQUM7QUFBQSxRQUFNLEtBQUs7QUFBRSxhQUFHTSxFQUFDO0FBQUU7QUFBQSxRQUFNLEtBQUs7QUFBRSxhQUFFO0FBQUc7QUFBQSxRQUFNLEtBQUs7QUFBRyxVQUFBVixHQUFFUSxFQUFDO0FBQUU7QUFBQSxRQUFNLEtBQUs7QUFBRyxVQUFBUixHQUFFUSxFQUFDO0FBQUU7QUFBQSxRQUFNLEtBQUs7QUFBRyxhQUFHRSxHQUFFLEtBQUssUUFBUTtBQUFFO0FBQUEsUUFBTSxLQUFLO0FBQUEsUUFBRyxLQUFLO0FBQUcsYUFBSTtBQUFBLE1BQUE7QUFBQyxNQUFBQyxLQUFFQSxHQUFFO0FBQUEsSUFBTTtBQUFDLElBQUFLLEtBQUVwQjtBQUFFLElBQUEySixLQUFFM0osS0FBRSxHQUFHQSxHQUFFLFNBQVEsSUFBSTtBQUFFLElBQUE0SixLQUFFLEtBQUd2SjtBQUFFLElBQUFrQixLQUFFO0FBQUUsU0FBRztBQUFLLFNBQUcsS0FBRyxLQUFHO0FBQUUsU0FBRyxLQUFHO0FBQUssUUFBRyxTQUFPLElBQUc7QUFBQyxXQUFJbEIsS0FDMWYsR0FBRUEsS0FBRSxHQUFHLFFBQU9BLEtBQUksS0FBR1UsS0FBRSxHQUFHVixFQUFDLEdBQUVTLEtBQUVDLEdBQUUsYUFBWSxTQUFPRCxJQUFFO0FBQUMsUUFBQUMsR0FBRSxjQUFZO0FBQUssWUFBSTFDLEtBQUV5QyxHQUFFLE1BQUtuRCxLQUFFb0QsR0FBRTtBQUFRLFlBQUcsU0FBT3BELElBQUU7QUFBQyxjQUFJc0QsS0FBRXRELEdBQUU7QUFBSyxVQUFBQSxHQUFFLE9BQUtVO0FBQUUsVUFBQXlDLEdBQUUsT0FBS0c7QUFBQSxRQUFDO0FBQUMsUUFBQUYsR0FBRSxVQUFRRDtBQUFBLE1BQUM7QUFBQyxXQUFHO0FBQUEsSUFBSTtBQUFDLFdBQU9kO0FBQUEsRUFBQztBQUMzSyxXQUFTLEdBQUdBLElBQUVLLElBQUU7QUFBQyxPQUFFO0FBQUMsVUFBSVUsS0FBRTRJO0FBQUUsVUFBRztBQUFDLFdBQUk7QUFBQyxXQUFHLFVBQVE7QUFBRyxZQUFHLElBQUc7QUFBQyxtQkFBUTdJLEtBQUVELEdBQUUsZUFBYyxTQUFPQyxNQUFHO0FBQUMsZ0JBQUl6QyxLQUFFeUMsR0FBRTtBQUFNLHFCQUFPekMsT0FBSUEsR0FBRSxVQUFRO0FBQU0sWUFBQXlDLEtBQUVBLEdBQUU7QUFBQSxVQUFJO0FBQUMsZUFBRztBQUFBLFFBQUU7QUFBQyxhQUFHO0FBQUUsUUFBQTNELEtBQUVnRSxLQUFFTixLQUFFO0FBQUssYUFBRztBQUFHLGFBQUc7QUFBRSxXQUFHLFVBQVE7QUFBSyxZQUFHLFNBQU9FLE1BQUcsU0FBT0EsR0FBRSxRQUFPO0FBQUMsVUFBQVEsS0FBRTtBQUFFLGVBQUdsQjtBQUFFLFVBQUFzSixLQUFFO0FBQUs7QUFBQSxRQUFLO0FBQUMsV0FBRTtBQUFDLGNBQUloTSxLQUFFcUMsSUFBRWlCLEtBQUVGLEdBQUUsUUFBT0MsS0FBRUQsSUFBRTNDLEtBQUVpQztBQUFFLFVBQUFBLEtBQUV1SjtBQUFFLFVBQUE1SSxHQUFFLFNBQU87QUFBTSxjQUFHLFNBQU81QyxNQUFHLGFBQVcsT0FBT0EsTUFBRyxlQUFhLE9BQU9BLEdBQUUsTUFBSztBQUFDLGdCQUFJaUIsS0FBRWpCLElBQUU4QyxLQUFFRixJQUFFeEIsS0FBRTBCLEdBQUU7QUFBSSxnQkFBRyxPQUFLQSxHQUFFLE9BQUssT0FBSyxNQUFJMUIsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLEtBQUc7QUFBQyxrQkFBSUMsS0FBRXlCLEdBQUU7QUFBVSxjQUFBekIsTUFBR3lCLEdBQUUsY0FBWXpCLEdBQUUsYUFBWXlCLEdBQUUsZ0JBQWN6QixHQUFFLGVBQ3hleUIsR0FBRSxRQUFNekIsR0FBRSxVQUFReUIsR0FBRSxjQUFZLE1BQUtBLEdBQUUsZ0JBQWM7QUFBQSxZQUFLO0FBQUMsZ0JBQUl6RCxLQUFFLEdBQUd3RCxFQUFDO0FBQUUsZ0JBQUcsU0FBT3hELElBQUU7QUFBQyxjQUFBQSxHQUFFLFNBQU87QUFBSyxpQkFBR0EsSUFBRXdELElBQUVELElBQUVyRCxJQUFFMEMsRUFBQztBQUFFLGNBQUE1QyxHQUFFLE9BQUssS0FBRyxHQUFHRSxJQUFFMEIsSUFBRWdCLEVBQUM7QUFBRSxjQUFBQSxLQUFFNUM7QUFBRSxjQUFBVyxLQUFFaUI7QUFBRSxrQkFBSUMsS0FBRWUsR0FBRTtBQUFZLGtCQUFHLFNBQU9mLElBQUU7QUFBQyxvQkFBSUksS0FBRSxvQkFBSTtBQUFJLGdCQUFBQSxHQUFFLElBQUl0QixFQUFDO0FBQUUsZ0JBQUFpQyxHQUFFLGNBQVlYO0FBQUEsY0FBQyxNQUFNLENBQUFKLEdBQUUsSUFBSWxCLEVBQUM7QUFBRSxvQkFBTTtBQUFBLFlBQUMsT0FBSztBQUFDLGtCQUFHLE9BQUtpQyxLQUFFLElBQUc7QUFBQyxtQkFBRzFDLElBQUUwQixJQUFFZ0IsRUFBQztBQUFFLG1CQUFJO0FBQUMsc0JBQU07QUFBQSxjQUFDO0FBQUMsY0FBQWpDLEtBQUUsTUFBTW1CLEdBQUUsR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFBLFVBQUMsV0FBU2tCLE1BQUdPLEdBQUUsT0FBSyxHQUFFO0FBQUMsZ0JBQUlOLEtBQUUsR0FBR08sRUFBQztBQUFFLGdCQUFHLFNBQU9QLElBQUU7QUFBQyxxQkFBS0EsR0FBRSxRQUFNLFdBQVNBLEdBQUUsU0FBTztBQUFLLGlCQUFHQSxJQUFFTyxJQUFFRCxJQUFFckQsSUFBRTBDLEVBQUM7QUFBRSxpQkFBRyxHQUFHakMsSUFBRTRDLEVBQUMsQ0FBQztBQUFFLG9CQUFNO0FBQUEsWUFBQztBQUFBLFVBQUM7QUFBQyxVQUFBckQsS0FBRVMsS0FBRSxHQUFHQSxJQUFFNEMsRUFBQztBQUFFLGdCQUFJTyxPQUFJQSxLQUFFO0FBQUcsbUJBQU8sS0FBRyxLQUFHLENBQUM1RCxFQUFDLElBQUUsR0FBRyxLQUFLQSxFQUFDO0FBQUUsVUFBQUEsS0FBRXNEO0FBQUUsYUFBRTtBQUFDLG9CQUFPdEQsR0FBRSxLQUFHO0FBQUEsY0FBRSxLQUFLO0FBQUUsZ0JBQUFBLEdBQUUsU0FBTztBQUNwZixnQkFBQTBDLE1BQUcsQ0FBQ0E7QUFBRSxnQkFBQTFDLEdBQUUsU0FBTzBDO0FBQUUsb0JBQUk5QyxLQUFFLEdBQUdJLElBQUVTLElBQUVpQyxFQUFDO0FBQUUsbUJBQUcxQyxJQUFFSixFQUFDO0FBQUUsc0JBQU07QUFBQSxjQUFFLEtBQUs7QUFBRSxnQkFBQXlELEtBQUU1QztBQUFFLG9CQUFJeUIsS0FBRWxDLEdBQUUsTUFBS2dDLEtBQUVoQyxHQUFFO0FBQVUsb0JBQUcsT0FBS0EsR0FBRSxRQUFNLFNBQU8sZUFBYSxPQUFPa0MsR0FBRSw0QkFBMEIsU0FBT0YsTUFBRyxlQUFhLE9BQU9BLEdBQUUsc0JBQW9CLFNBQU8sTUFBSSxDQUFDLEdBQUcsSUFBSUEsRUFBQyxLQUFJO0FBQUMsa0JBQUFoQyxHQUFFLFNBQU87QUFBTSxrQkFBQTBDLE1BQUcsQ0FBQ0E7QUFBRSxrQkFBQTFDLEdBQUUsU0FBTzBDO0FBQUUsc0JBQUlDLEtBQUUsR0FBRzNDLElBQUVxRCxJQUFFWCxFQUFDO0FBQUUscUJBQUcxQyxJQUFFMkMsRUFBQztBQUFFLHdCQUFNO0FBQUEsZ0JBQUM7QUFBQSxZQUFDO0FBQUMsWUFBQTNDLEtBQUVBLEdBQUU7QUFBQSxVQUFNLFNBQU8sU0FBT0E7QUFBQSxRQUFFO0FBQUMsV0FBR29ELEVBQUM7QUFBQSxNQUFDLFNBQU8sSUFBRztBQUFDLFFBQUFWLEtBQUU7QUFBRyxRQUFBc0osT0FBSTVJLE1BQUcsU0FBT0EsT0FBSTRJLEtBQUU1SSxLQUFFQSxHQUFFO0FBQVE7QUFBQSxNQUFRO0FBQUM7QUFBQSxJQUFLLFNBQU87QUFBQSxFQUFFO0FBQUMsV0FBUyxLQUFJO0FBQUMsUUFBSWYsS0FBRSxHQUFHO0FBQVEsT0FBRyxVQUFRO0FBQUcsV0FBTyxTQUFPQSxLQUFFLEtBQUdBO0FBQUEsRUFBQztBQUNyZCxXQUFTLEtBQUk7QUFBQyxRQUFHLE1BQUl1QixNQUFHLE1BQUlBLE1BQUcsTUFBSUEsR0FBRSxDQUFBQSxLQUFFO0FBQUUsYUFBT0gsTUFBRyxPQUFLLEtBQUcsY0FBWSxPQUFLLEtBQUcsY0FBWSxHQUFHQSxJQUFFd0ksRUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUc1SixJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRUo7QUFBRSxJQUFBQSxNQUFHO0FBQUUsUUFBSUcsS0FBRSxHQUFJO0FBQUMsUUFBR00sT0FBSXBCLE1BQUc0SixPQUFJdkosR0FBRSxNQUFHLE1BQUssR0FBR0wsSUFBRUssRUFBQztBQUFFO0FBQUcsVUFBRztBQUFDLFdBQUU7QUFBRztBQUFBLE1BQUssU0FBT2hDLElBQUU7QUFBQyxXQUFHMkIsSUFBRTNCLEVBQUM7QUFBQSxNQUFDO0FBQUEsV0FBTztBQUFHLE9BQUU7QUFBRyxJQUFBc0MsS0FBRUk7QUFBRSxPQUFHLFVBQVFEO0FBQUUsUUFBRyxTQUFPNkksR0FBRSxPQUFNLE1BQU1wSyxHQUFFLEdBQUcsQ0FBQztBQUFFLElBQUE2QixLQUFFO0FBQUssSUFBQXdJLEtBQUU7QUFBRSxXQUFPckk7QUFBQSxFQUFDO0FBQUMsV0FBUyxLQUFJO0FBQUMsV0FBSyxTQUFPb0ksS0FBRyxJQUFHQSxFQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsS0FBSTtBQUFDLFdBQUssU0FBT0EsTUFBRyxDQUFDLEdBQUUsSUFBSSxJQUFHQSxFQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBRzNKLElBQUU7QUFBQyxRQUFJSyxLQUFFLEdBQUdMLEdBQUUsV0FBVUEsSUFBRSxFQUFFO0FBQUUsSUFBQUEsR0FBRSxnQkFBY0EsR0FBRTtBQUFhLGFBQU9LLEtBQUUsR0FBR0wsRUFBQyxJQUFFMkosS0FBRXRKO0FBQUUsT0FBRyxVQUFRO0FBQUEsRUFBSTtBQUMxZCxXQUFTLEdBQUdMLElBQUU7QUFBQyxRQUFJSyxLQUFFTDtBQUFFLE9BQUU7QUFBQyxVQUFJZSxLQUFFVixHQUFFO0FBQVUsTUFBQUwsS0FBRUssR0FBRTtBQUFPLFVBQUcsT0FBS0EsR0FBRSxRQUFNLFFBQU87QUFBQyxZQUFHVSxLQUFFLEdBQUdBLElBQUVWLElBQUUsRUFBRSxHQUFFLFNBQU9VLElBQUU7QUFBQyxVQUFBNEksS0FBRTVJO0FBQUU7QUFBQSxRQUFNO0FBQUEsTUFBQyxPQUFLO0FBQUMsUUFBQUEsS0FBRSxHQUFHQSxJQUFFVixFQUFDO0FBQUUsWUFBRyxTQUFPVSxJQUFFO0FBQUMsVUFBQUEsR0FBRSxTQUFPO0FBQU0sVUFBQTRJLEtBQUU1STtBQUFFO0FBQUEsUUFBTTtBQUFDLFlBQUcsU0FBT2YsR0FBRSxDQUFBQSxHQUFFLFNBQU8sT0FBTUEsR0FBRSxlQUFhLEdBQUVBLEdBQUUsWUFBVTtBQUFBLGFBQVM7QUFBQyxVQUFBdUIsS0FBRTtBQUFFLFVBQUFvSSxLQUFFO0FBQUs7QUFBQSxRQUFNO0FBQUEsTUFBQztBQUFDLE1BQUF0SixLQUFFQSxHQUFFO0FBQVEsVUFBRyxTQUFPQSxJQUFFO0FBQUMsUUFBQXNKLEtBQUV0SjtBQUFFO0FBQUEsTUFBTTtBQUFDLE1BQUFzSixLQUFFdEosS0FBRUw7QUFBQSxJQUFDLFNBQU8sU0FBT0s7QUFBRyxVQUFJa0IsT0FBSUEsS0FBRTtBQUFBLEVBQUU7QUFBQyxXQUFTLEdBQUd2QixJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBSUQsS0FBRVosSUFBRTdCLEtBQUUsR0FBRztBQUFXLFFBQUc7QUFBQyxTQUFHLGFBQVcsTUFBSzZCLEtBQUUsR0FBRSxHQUFHRixJQUFFSyxJQUFFVSxJQUFFRCxFQUFDO0FBQUEsSUFBQyxVQUFDO0FBQVEsU0FBRyxhQUFXekMsSUFBRTZCLEtBQUVZO0FBQUEsSUFBQztBQUFDLFdBQU87QUFBQSxFQUFJO0FBQ2hjLFdBQVMsR0FBR2QsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDO0FBQUc7V0FBVyxTQUFPO0FBQUksUUFBRyxPQUFLSCxLQUFFLEdBQUcsT0FBTSxNQUFNcEIsR0FBRSxHQUFHLENBQUM7QUFBRSxJQUFBd0IsS0FBRWYsR0FBRTtBQUFhLFFBQUkzQixLQUFFMkIsR0FBRTtBQUFjLFFBQUcsU0FBT2UsR0FBRSxRQUFPO0FBQUssSUFBQWYsR0FBRSxlQUFhO0FBQUssSUFBQUEsR0FBRSxnQkFBYztBQUFFLFFBQUdlLE9BQUlmLEdBQUUsUUFBUSxPQUFNLE1BQU1ULEdBQUUsR0FBRyxDQUFDO0FBQUUsSUFBQVMsR0FBRSxlQUFhO0FBQUssSUFBQUEsR0FBRSxtQkFBaUI7QUFBRSxRQUFJckMsS0FBRW9ELEdBQUUsUUFBTUEsR0FBRTtBQUFXLE9BQUdmLElBQUVyQyxFQUFDO0FBQUUsSUFBQXFDLE9BQUlvQixPQUFJdUksS0FBRXZJLEtBQUUsTUFBS3dJLEtBQUU7QUFBRyxXQUFLN0ksR0FBRSxlQUFhLFNBQU8sT0FBS0EsR0FBRSxRQUFNLFNBQU8sT0FBSyxLQUFHLE1BQUcsR0FBRyxJQUFHLFdBQVU7QUFBQyxTQUFJO0FBQUMsYUFBTztBQUFBLElBQUksQ0FBQztBQUFHLElBQUFwRCxLQUFFLE9BQUtvRCxHQUFFLFFBQU07QUFBTyxRQUFHLE9BQUtBLEdBQUUsZUFBYSxVQUFRcEQsSUFBRTtBQUFDLE1BQUFBLEtBQUUsR0FBRztBQUFXLFNBQUcsYUFBVztBQUNoZixVQUFJc0QsS0FBRWY7QUFBRSxNQUFBQSxLQUFFO0FBQUUsVUFBSWMsS0FBRUw7QUFBRSxNQUFBQSxNQUFHO0FBQUUsU0FBRyxVQUFRO0FBQUssU0FBR1gsSUFBRWUsRUFBQztBQUFFLFNBQUdBLElBQUVmLEVBQUM7QUFBRSxNQUFBK0ksSUFBRyxFQUFFO0FBQUUsV0FBRyxDQUFDLENBQUM7QUFBRyxXQUFHLEtBQUc7QUFBSyxNQUFBL0ksR0FBRSxVQUFRZTtBQUFFLFNBQUdBLEVBQUs7QUFBRSxTQUFFO0FBQUcsTUFBQUosS0FBRUs7QUFBRSxNQUFBZCxLQUFFZTtBQUFFLFNBQUcsYUFBV3REO0FBQUEsSUFBQyxNQUFNLENBQUFxQyxHQUFFLFVBQVFlO0FBQUUsV0FBSyxLQUFHLE9BQUcsS0FBR2YsSUFBRSxLQUFHM0I7QUFBRyxJQUFBVixLQUFFcUMsR0FBRTtBQUFhLFVBQUlyQyxPQUFJLEtBQUc7QUFBTSxPQUFHb0QsR0FBRSxTQUFXO0FBQUUsT0FBR2YsSUFBRUMsR0FBQyxDQUFFO0FBQUUsUUFBRyxTQUFPSSxHQUFFLE1BQUlTLEtBQUVkLEdBQUUsb0JBQW1CZSxLQUFFLEdBQUVBLEtBQUVWLEdBQUUsUUFBT1UsS0FBSSxDQUFBMUMsS0FBRWdDLEdBQUVVLEVBQUMsR0FBRUQsR0FBRXpDLEdBQUUsT0FBTSxFQUFDLGdCQUFlQSxHQUFFLE9BQU0sUUFBT0EsR0FBRSxPQUFNLENBQUM7QUFBRSxRQUFHLEdBQUcsT0FBTSxLQUFHLE9BQUcyQixLQUFFLElBQUcsS0FBRyxNQUFLQTtBQUFFLFdBQUssS0FBRyxNQUFJLE1BQUlBLEdBQUUsT0FBSyxHQUFJO0FBQUMsSUFBQXJDLEtBQUVxQyxHQUFFO0FBQWEsV0FBS3JDLEtBQUUsS0FBR3FDLE9BQUksS0FBRyxRQUFNLEtBQUcsR0FBRSxLQUFHQSxNQUFHLEtBQUc7QUFBRSxPQUFJO0FBQUMsV0FBTztBQUFBLEVBQUk7QUFDcmUsV0FBUyxLQUFJO0FBQUMsUUFBRyxTQUFPLElBQUc7QUFBQyxVQUFJQSxLQUFFLEdBQUcsRUFBRSxHQUFFSyxLQUFFLEdBQUcsWUFBV1UsS0FBRWI7QUFBRSxVQUFHO0FBQUMsV0FBRyxhQUFXO0FBQUssUUFBQUEsS0FBRSxLQUFHRixLQUFFLEtBQUdBO0FBQUUsWUFBRyxTQUFPLEdBQUcsS0FBSWMsS0FBRTtBQUFBLGFBQU87QUFBQyxVQUFBZCxLQUFFO0FBQUcsZUFBRztBQUFLLGVBQUc7QUFBRSxjQUFHLE9BQUtXLEtBQUUsR0FBRyxPQUFNLE1BQU1wQixHQUFFLEdBQUcsQ0FBQztBQUFFLGNBQUlsQixLQUFFc0M7QUFBRSxVQUFBQSxNQUFHO0FBQUUsZUFBSWpELEtBQUVzQyxHQUFFLFNBQVEsU0FBT3RDLE1BQUc7QUFBQyxnQkFBSUMsS0FBRUQsSUFBRXVELEtBQUV0RCxHQUFFO0FBQU0sZ0JBQUcsT0FBS0QsR0FBRSxRQUFNLEtBQUk7QUFBQyxrQkFBSXNELEtBQUVyRCxHQUFFO0FBQVUsa0JBQUcsU0FBT3FELElBQUU7QUFBQyx5QkFBUTVDLEtBQUUsR0FBRUEsS0FBRTRDLEdBQUUsUUFBTzVDLE1BQUk7QUFBQyxzQkFBSWlCLEtBQUUyQixHQUFFNUMsRUFBQztBQUFFLHVCQUFJVixLQUFFMkIsSUFBRSxTQUFPM0IsTUFBRztBQUFDLHdCQUFJd0QsS0FBRXhEO0FBQUUsNEJBQU93RCxHQUFFLEtBQUs7QUFBQSxzQkFBQSxLQUFLO0FBQUEsc0JBQUUsS0FBSztBQUFBLHNCQUFHLEtBQUs7QUFBRywyQkFBRyxHQUFFQSxJQUFFdkQsRUFBQztBQUFBLG9CQUFDO0FBQUMsd0JBQUk2QixLQUFFMEIsR0FBRTtBQUFNLHdCQUFHLFNBQU8xQixHQUFFLENBQUFBLEdBQUUsU0FBTzBCLElBQUV4RCxLQUFFOEI7QUFBQSx3QkFBTyxRQUFLLFNBQU85QixNQUFHO0FBQUMsc0JBQUF3RCxLQUFFeEQ7QUFBRSwwQkFBSStCLEtBQUV5QixHQUFFLFNBQVF6RCxLQUFFeUQsR0FBRTtBQUFPLHlCQUFHQSxFQUFDO0FBQUUsMEJBQUdBLE9BQ25mN0IsSUFBRTtBQUFDLHdCQUFBM0IsS0FBRTtBQUFLO0FBQUEsc0JBQUs7QUFBQywwQkFBRyxTQUFPK0IsSUFBRTtBQUFDLHdCQUFBQSxHQUFFLFNBQU9oQztBQUFFLHdCQUFBQyxLQUFFK0I7QUFBRTtBQUFBLHNCQUFLO0FBQUMsc0JBQUEvQixLQUFFRDtBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJNkIsS0FBRTNCLEdBQUU7QUFBVSxvQkFBRyxTQUFPMkIsSUFBRTtBQUFDLHNCQUFJSSxLQUFFSixHQUFFO0FBQU0sc0JBQUcsU0FBT0ksSUFBRTtBQUFDLG9CQUFBSixHQUFFLFFBQU07QUFBSyx1QkFBRTtBQUFDLDBCQUFJb0IsS0FBRWhCLEdBQUU7QUFBUSxzQkFBQUEsR0FBRSxVQUFRO0FBQUssc0JBQUFBLEtBQUVnQjtBQUFBLG9CQUFDLFNBQU8sU0FBT2hCO0FBQUEsa0JBQUU7QUFBQSxnQkFBQztBQUFDLGdCQUFBaEMsS0FBRUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFHLE9BQUtBLEdBQUUsZUFBYSxTQUFPLFNBQU9zRCxHQUFFLENBQUFBLEdBQUUsU0FBT3RELElBQUVELEtBQUV1RDtBQUFBLGdCQUFPLEdBQUUsUUFBSyxTQUFPdkQsTUFBRztBQUFDLGNBQUFDLEtBQUVEO0FBQUUsa0JBQUcsT0FBS0MsR0FBRSxRQUFNLE1BQU0sU0FBT0EsR0FBRSxLQUFHO0FBQUEsZ0JBQUUsS0FBSztBQUFBLGdCQUFFLEtBQUs7QUFBQSxnQkFBRyxLQUFLO0FBQUcscUJBQUcsR0FBRUEsSUFBRUEsR0FBRSxNQUFNO0FBQUEsY0FBQztBQUFDLGtCQUFJSixLQUFFSSxHQUFFO0FBQVEsa0JBQUcsU0FBT0osSUFBRTtBQUFDLGdCQUFBQSxHQUFFLFNBQU9JLEdBQUU7QUFBTyxnQkFBQUQsS0FBRUg7QUFBRSxzQkFBTTtBQUFBLGNBQUM7QUFBQyxjQUFBRyxLQUFFQyxHQUFFO0FBQUEsWUFBTTtBQUFBLFVBQUM7QUFBQyxjQUFJa0MsS0FBRUcsR0FBRTtBQUFRLGVBQUl0QyxLQUFFbUMsSUFBRSxTQUFPbkMsTUFBRztBQUFDLFlBQUF1RCxLQUFFdkQ7QUFBRSxnQkFBSWlDLEtBQUVzQixHQUFFO0FBQU0sZ0JBQUcsT0FBS0EsR0FBRSxlQUFhLFNBQU8sU0FDbGZ0QixHQUFFLENBQUFBLEdBQUUsU0FBT3NCLElBQUV2RCxLQUFFaUM7QUFBQSxnQkFBTyxHQUFFLE1BQUlzQixLQUFFcEIsSUFBRSxTQUFPbkMsTUFBRztBQUFDLGNBQUFzRCxLQUFFdEQ7QUFBRSxrQkFBRyxPQUFLc0QsR0FBRSxRQUFNLE1BQU0sS0FBRztBQUFDLHdCQUFPQSxHQUFFLEtBQUs7QUFBQSxrQkFBQSxLQUFLO0FBQUEsa0JBQUUsS0FBSztBQUFBLGtCQUFHLEtBQUs7QUFBRyx1QkFBRyxHQUFFQSxFQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDLFNBQU8sSUFBRztBQUFDLGdCQUFBUyxHQUFFVCxJQUFFQSxHQUFFLFFBQU8sRUFBRTtBQUFBLGNBQUM7QUFBQyxrQkFBR0EsT0FBSUMsSUFBRTtBQUFDLGdCQUFBdkQsS0FBRTtBQUFLLHNCQUFNO0FBQUEsY0FBQztBQUFDLGtCQUFJNEMsS0FBRVUsR0FBRTtBQUFRLGtCQUFHLFNBQU9WLElBQUU7QUFBQyxnQkFBQUEsR0FBRSxTQUFPVSxHQUFFO0FBQU8sZ0JBQUF0RCxLQUFFNEM7QUFBRSxzQkFBTTtBQUFBLGNBQUM7QUFBQyxjQUFBNUMsS0FBRXNELEdBQUU7QUFBQSxZQUFNO0FBQUEsVUFBQztBQUFDLFVBQUFMLEtBQUV0QztBQUFFLGFBQUk7QUFBQyxjQUFHLE1BQUksZUFBYSxPQUFPLEdBQUcsc0JBQXNCLEtBQUc7QUFBQyxlQUFHLHNCQUFzQixJQUFHMkIsRUFBQztBQUFBLFVBQUMsU0FBTyxJQUFHO0FBQUEsVUFBRTtBQUFBLFVBQUFjLEtBQUU7QUFBQSxRQUFFO0FBQUMsZUFBT0E7QUFBQSxNQUFDLFVBQUM7QUFBUSxRQUFBWixLQUFFYSxJQUFFLEdBQUcsYUFBV1Y7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLFdBQU07QUFBQSxFQUFFO0FBQUMsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsSUFBQVYsS0FBRSxHQUFHVSxJQUFFVixFQUFDO0FBQUUsSUFBQUEsS0FBRSxHQUFHTCxJQUFFSyxJQUFFLENBQUM7QUFBRSxJQUFBTCxLQUFFLEdBQUdBLElBQUVLLElBQUUsQ0FBQztBQUFFLElBQUFBLEtBQUVnQixHQUFDO0FBQUcsYUFBT3JCLE9BQUksR0FBR0EsSUFBRSxHQUFFSyxFQUFDLEdBQUUsR0FBR0wsSUFBRUssRUFBQztBQUFBLEVBQUU7QUFDemUsV0FBU29CLEdBQUV6QixJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBRyxNQUFJZixHQUFFLElBQUksSUFBR0EsSUFBRUEsSUFBRWUsRUFBQztBQUFBLFFBQU8sUUFBSyxTQUFPVixNQUFHO0FBQUMsVUFBRyxNQUFJQSxHQUFFLEtBQUk7QUFBQyxXQUFHQSxJQUFFTCxJQUFFZSxFQUFDO0FBQUU7QUFBQSxNQUFLLFdBQVMsTUFBSVYsR0FBRSxLQUFJO0FBQUMsWUFBSVMsS0FBRVQsR0FBRTtBQUFVLFlBQUcsZUFBYSxPQUFPQSxHQUFFLEtBQUssNEJBQTBCLGVBQWEsT0FBT1MsR0FBRSxzQkFBb0IsU0FBTyxNQUFJLENBQUMsR0FBRyxJQUFJQSxFQUFDLElBQUc7QUFBQyxVQUFBZCxLQUFFLEdBQUdlLElBQUVmLEVBQUM7QUFBRSxVQUFBQSxLQUFFLEdBQUdLLElBQUVMLElBQUUsQ0FBQztBQUFFLFVBQUFLLEtBQUUsR0FBR0EsSUFBRUwsSUFBRSxDQUFDO0FBQUUsVUFBQUEsS0FBRXFCLEdBQUM7QUFBRyxtQkFBT2hCLE9BQUksR0FBR0EsSUFBRSxHQUFFTCxFQUFDLEdBQUUsR0FBR0ssSUFBRUwsRUFBQztBQUFHO0FBQUEsUUFBSztBQUFBLE1BQUM7QUFBQyxNQUFBSyxLQUFFQSxHQUFFO0FBQUEsSUFBTTtBQUFBLEVBQUM7QUFDblYsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBSUQsS0FBRWQsR0FBRTtBQUFVLGFBQU9jLE1BQUdBLEdBQUUsT0FBT1QsRUFBQztBQUFFLElBQUFBLEtBQUVnQixHQUFHO0FBQUMsSUFBQXJCLEdBQUUsZUFBYUEsR0FBRSxpQkFBZWU7QUFBRSxJQUFBSyxPQUFJcEIsT0FBSTRKLEtBQUU3SSxRQUFLQSxPQUFJLE1BQUlRLE1BQUcsTUFBSUEsT0FBSXFJLEtBQUUsZUFBYUEsTUFBRyxNQUFJM0osR0FBRyxJQUFDLEtBQUcsR0FBR0QsSUFBRSxDQUFDLElBQUUsTUFBSWU7QUFBRyxPQUFHZixJQUFFSyxFQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR0wsSUFBRUssSUFBRTtBQUFDLFVBQUlBLE9BQUksT0FBS0wsR0FBRSxPQUFLLEtBQUdLLEtBQUUsS0FBR0EsS0FBRSxJQUFHLE9BQUssR0FBRSxPQUFLLEtBQUcsZUFBYSxLQUFHO0FBQVcsUUFBSVUsS0FBRU0sR0FBRztBQUFDLElBQUFyQixLQUFFLEdBQUdBLElBQUVLLEVBQUM7QUFBRSxhQUFPTCxPQUFJLEdBQUdBLElBQUVLLElBQUVVLEVBQUMsR0FBRSxHQUFHZixJQUFFZSxFQUFDO0FBQUEsRUFBRTtBQUFDLFdBQVMsR0FBR2YsSUFBRTtBQUFDLFFBQUlLLEtBQUVMLEdBQUUsZUFBY2UsS0FBRTtBQUFFLGFBQU9WLE9BQUlVLEtBQUVWLEdBQUU7QUFBVyxPQUFHTCxJQUFFZSxFQUFDO0FBQUEsRUFBQztBQUNqWixXQUFTLEdBQUdmLElBQUVLLElBQUU7QUFBQyxRQUFJVSxLQUFFO0FBQUUsWUFBT2YsR0FBRTtNQUFLLEtBQUs7QUFBRyxZQUFJYyxLQUFFZCxHQUFFO0FBQVUsWUFBSTNCLEtBQUUyQixHQUFFO0FBQWMsaUJBQU8zQixPQUFJMEMsS0FBRTFDLEdBQUU7QUFBVztBQUFBLE1BQU0sS0FBSztBQUFHLFFBQUF5QyxLQUFFZCxHQUFFO0FBQVU7QUFBQSxNQUFNO0FBQVEsY0FBTSxNQUFNVCxHQUFFLEdBQUcsQ0FBQztBQUFBLElBQUU7QUFBQyxhQUFPdUIsTUFBR0EsR0FBRSxPQUFPVCxFQUFDO0FBQUUsT0FBR0wsSUFBRWUsRUFBQztBQUFBLEVBQUM7QUFBQyxNQUFJO0FBQ2xOLE9BQUcsU0FBU2YsSUFBRUssSUFBRVUsSUFBRTtBQUFDLFFBQUcsU0FBT2YsR0FBRSxLQUFHQSxHQUFFLGtCQUFnQkssR0FBRSxnQkFBYyxHQUFHLFFBQVEsTUFBRztBQUFBLFNBQU87QUFBQyxVQUFHLE9BQUtMLEdBQUUsUUFBTWUsT0FBSSxPQUFLVixHQUFFLFFBQU0sS0FBSyxRQUFPLEtBQUcsT0FBRyxHQUFHTCxJQUFFSyxJQUFFVSxFQUFDO0FBQUUsV0FBRyxPQUFLZixHQUFFLFFBQU0sVUFBUSxPQUFHO0FBQUEsSUFBRTtBQUFBLFFBQU0sTUFBRyxPQUFHUyxNQUFHLE9BQUtKLEdBQUUsUUFBTSxZQUFVLEdBQUdBLElBQUUsSUFBR0EsR0FBRSxLQUFLO0FBQUUsSUFBQUEsR0FBRSxRQUFNO0FBQUUsWUFBT0EsR0FBRSxLQUFLO0FBQUEsTUFBQSxLQUFLO0FBQUUsWUFBSVMsS0FBRVQsR0FBRTtBQUFLLFdBQUdMLElBQUVLLEVBQUM7QUFBRSxRQUFBTCxLQUFFSyxHQUFFO0FBQWEsWUFBSWhDLEtBQUUsR0FBR2dDLElBQUVHLEdBQUUsT0FBTztBQUFFLFdBQUdILElBQUVVLEVBQUM7QUFBRSxRQUFBMUMsS0FBRSxHQUFHLE1BQUtnQyxJQUFFUyxJQUFFZCxJQUFFM0IsSUFBRTBDLEVBQUM7QUFBRSxZQUFJcEQsS0FBRSxHQUFJO0FBQUMsUUFBQTBDLEdBQUUsU0FBTztBQUFFLHFCQUFXLE9BQU9oQyxNQUFHLFNBQU9BLE1BQUcsZUFBYSxPQUFPQSxHQUFFLFVBQVEsV0FBU0EsR0FBRSxZQUFVZ0MsR0FBRSxNQUFJLEdBQUVBLEdBQUUsZ0JBQWMsTUFBS0EsR0FBRSxjQUMxZSxNQUFLLEdBQUdTLEVBQUMsS0FBR25ELEtBQUUsTUFBRyxHQUFHMEMsRUFBQyxLQUFHMUMsS0FBRSxPQUFHMEMsR0FBRSxnQkFBYyxTQUFPaEMsR0FBRSxTQUFPLFdBQVNBLEdBQUUsUUFBTUEsR0FBRSxRQUFNLE1BQUssR0FBR2dDLEVBQUMsR0FBRWhDLEdBQUUsVUFBUSxJQUFHZ0MsR0FBRSxZQUFVaEMsSUFBRUEsR0FBRSxrQkFBZ0JnQyxJQUFFLEdBQUdBLElBQUVTLElBQUVkLElBQUVlLEVBQUMsR0FBRVYsS0FBRSxHQUFHLE1BQUtBLElBQUVTLElBQUUsTUFBR25ELElBQUVvRCxFQUFDLE1BQUlWLEdBQUUsTUFBSSxHQUFFSSxNQUFHOUMsTUFBRyxHQUFHMEMsRUFBQyxHQUFFLEdBQUcsTUFBS0EsSUFBRWhDLElBQUUwQyxFQUFDLEdBQUVWLEtBQUVBLEdBQUU7QUFBTyxlQUFPQTtBQUFBLE1BQUUsS0FBSztBQUFHLFFBQUFTLEtBQUVULEdBQUU7QUFBWSxXQUFFO0FBQUMsYUFBR0wsSUFBRUssRUFBQztBQUFFLFVBQUFMLEtBQUVLLEdBQUU7QUFBYSxVQUFBaEMsS0FBRXlDLEdBQUU7QUFBTSxVQUFBQSxLQUFFekMsR0FBRXlDLEdBQUUsUUFBUTtBQUFFLFVBQUFULEdBQUUsT0FBS1M7QUFBRSxVQUFBekMsS0FBRWdDLEdBQUUsTUFBSSxHQUFHUyxFQUFDO0FBQUUsVUFBQWQsS0FBRSxHQUFHYyxJQUFFZCxFQUFDO0FBQUUsa0JBQU8zQixJQUFDO0FBQUEsWUFBRSxLQUFLO0FBQUUsY0FBQWdDLEtBQUUsR0FBRyxNQUFLQSxJQUFFUyxJQUFFZCxJQUFFZSxFQUFDO0FBQUUsb0JBQU07QUFBQSxZQUFFLEtBQUs7QUFBRSxjQUFBVixLQUFFLEdBQUcsTUFBS0EsSUFBRVMsSUFBRWQsSUFBRWUsRUFBQztBQUFFLG9CQUFNO0FBQUEsWUFBRSxLQUFLO0FBQUcsY0FBQVYsS0FBRSxHQUFHLE1BQUtBLElBQUVTLElBQUVkLElBQUVlLEVBQUM7QUFBRSxvQkFBTTtBQUFBLFlBQUUsS0FBSztBQUFHLGNBQUFWLEtBQUUsR0FBRyxNQUFLQSxJQUFFUyxJQUFFLEdBQUdBLEdBQUUsTUFBS2QsRUFBQyxHQUFFZSxFQUFDO0FBQUUsb0JBQU07QUFBQSxVQUFDO0FBQUMsZ0JBQU0sTUFBTXhCO0FBQUEsWUFBRTtBQUFBLFlBQ3ZnQnVCO0FBQUEsWUFBRTtBQUFBLFVBQUUsQ0FBQztBQUFBLFFBQUU7QUFBQyxlQUFPVDtBQUFBLE1BQUUsS0FBSztBQUFFLGVBQU9TLEtBQUVULEdBQUUsTUFBS2hDLEtBQUVnQyxHQUFFLGNBQWFoQyxLQUFFZ0MsR0FBRSxnQkFBY1MsS0FBRXpDLEtBQUUsR0FBR3lDLElBQUV6QyxFQUFDLEdBQUUsR0FBRzJCLElBQUVLLElBQUVTLElBQUV6QyxJQUFFMEMsRUFBQztBQUFBLE1BQUUsS0FBSztBQUFFLGVBQU9ELEtBQUVULEdBQUUsTUFBS2hDLEtBQUVnQyxHQUFFLGNBQWFoQyxLQUFFZ0MsR0FBRSxnQkFBY1MsS0FBRXpDLEtBQUUsR0FBR3lDLElBQUV6QyxFQUFDLEdBQUUsR0FBRzJCLElBQUVLLElBQUVTLElBQUV6QyxJQUFFMEMsRUFBQztBQUFBLE1BQUUsS0FBSztBQUFFLFdBQUU7QUFBQyxhQUFHVixFQUFDO0FBQUUsY0FBRyxTQUFPTCxHQUFFLE9BQU0sTUFBTVQsR0FBRSxHQUFHLENBQUM7QUFBRSxVQUFBdUIsS0FBRVQsR0FBRTtBQUFhLFVBQUExQyxLQUFFMEMsR0FBRTtBQUFjLFVBQUFoQyxLQUFFVixHQUFFO0FBQVEsYUFBR3FDLElBQUVLLEVBQUM7QUFBRSxhQUFHQSxJQUFFUyxJQUFFLE1BQUtDLEVBQUM7QUFBRSxjQUFJRSxLQUFFWixHQUFFO0FBQWMsVUFBQVMsS0FBRUcsR0FBRTtBQUFRLGNBQUd0RCxHQUFFLGFBQWEsS0FBR0EsS0FBRSxFQUFDLFNBQVFtRCxJQUFFLGNBQWEsT0FBRyxPQUFNRyxHQUFFLE9BQU0sMkJBQTBCQSxHQUFFLDJCQUEwQixhQUFZQSxHQUFFLFlBQVcsR0FBRVosR0FBRSxZQUFZLFlBQ2hmMUMsSUFBRTBDLEdBQUUsZ0JBQWMxQyxJQUFFMEMsR0FBRSxRQUFNLEtBQUk7QUFBQyxZQUFBaEMsS0FBRSxHQUFHLE1BQU1rQixHQUFFLEdBQUcsQ0FBQyxHQUFFYyxFQUFDO0FBQUUsWUFBQUEsS0FBRSxHQUFHTCxJQUFFSyxJQUFFUyxJQUFFQyxJQUFFMUMsRUFBQztBQUFFLGtCQUFNO0FBQUEsVUFBQyxXQUFTeUMsT0FBSXpDLElBQUU7QUFBQyxZQUFBQSxLQUFFLEdBQUcsTUFBTWtCLEdBQUUsR0FBRyxDQUFDLEdBQUVjLEVBQUM7QUFBRSxZQUFBQSxLQUFFLEdBQUdMLElBQUVLLElBQUVTLElBQUVDLElBQUUxQyxFQUFDO0FBQUUsa0JBQU07QUFBQSxVQUFDLE1BQU0sTUFBSSxLQUFHLEdBQUdnQyxHQUFFLFVBQVUsY0FBYyxVQUFVLEdBQUUsS0FBR0EsSUFBRUksS0FBRSxNQUFHLEtBQUcsTUFBS00sS0FBRSxHQUFHVixJQUFFLE1BQUtTLElBQUVDLEVBQUMsR0FBRVYsR0FBRSxRQUFNVSxJQUFFQSxLQUFHLENBQUFBLEdBQUUsUUFBTUEsR0FBRSxRQUFNLEtBQUcsTUFBS0EsS0FBRUEsR0FBRTtBQUFBLGVBQVk7QUFBQyxlQUFJO0FBQUMsZ0JBQUdELE9BQUl6QyxJQUFFO0FBQUMsY0FBQWdDLEtBQUUsR0FBR0wsSUFBRUssSUFBRVUsRUFBQztBQUFFLG9CQUFNO0FBQUEsWUFBQztBQUFDLGVBQUdmLElBQUVLLElBQUVTLElBQUVDLEVBQUM7QUFBQSxVQUFDO0FBQUMsVUFBQVYsS0FBRUEsR0FBRTtBQUFBLFFBQUs7QUFBQyxlQUFPQTtBQUFBLE1BQUUsS0FBSztBQUFFLGVBQU8sR0FBR0EsRUFBQyxHQUFFLFNBQU9MLE1BQUcsR0FBR0ssRUFBQyxHQUFFUyxLQUFFVCxHQUFFLE1BQUtoQyxLQUFFZ0MsR0FBRSxjQUFhMUMsS0FBRSxTQUFPcUMsS0FBRUEsR0FBRSxnQkFBYyxNQUFLaUIsS0FBRTVDLEdBQUUsVUFBUyxHQUFHeUMsSUFBRXpDLEVBQUMsSUFBRTRDLEtBQUUsT0FBSyxTQUFPdEQsTUFBRyxHQUFHbUQsSUFBRW5ELEVBQUMsTUFBSTBDLEdBQUUsU0FBTyxLQUNuZixHQUFHTCxJQUFFSyxFQUFDLEdBQUUsR0FBR0wsSUFBRUssSUFBRVksSUFBRUYsRUFBQyxHQUFFVixHQUFFO0FBQUEsTUFBTSxLQUFLO0FBQUUsZUFBTyxTQUFPTCxNQUFHLEdBQUdLLEVBQUMsR0FBRTtBQUFBLE1BQUssS0FBSztBQUFHLGVBQU8sR0FBR0wsSUFBRUssSUFBRVUsRUFBQztBQUFBLE1BQUUsS0FBSztBQUFFLGVBQU8sR0FBR1YsSUFBRUEsR0FBRSxVQUFVLGFBQWEsR0FBRVMsS0FBRVQsR0FBRSxjQUFhLFNBQU9MLEtBQUVLLEdBQUUsUUFBTSxHQUFHQSxJQUFFLE1BQUtTLElBQUVDLEVBQUMsSUFBRSxHQUFHZixJQUFFSyxJQUFFUyxJQUFFQyxFQUFDLEdBQUVWLEdBQUU7QUFBQSxNQUFNLEtBQUs7QUFBRyxlQUFPUyxLQUFFVCxHQUFFLE1BQUtoQyxLQUFFZ0MsR0FBRSxjQUFhaEMsS0FBRWdDLEdBQUUsZ0JBQWNTLEtBQUV6QyxLQUFFLEdBQUd5QyxJQUFFekMsRUFBQyxHQUFFLEdBQUcyQixJQUFFSyxJQUFFUyxJQUFFekMsSUFBRTBDLEVBQUM7QUFBQSxNQUFFLEtBQUs7QUFBRSxlQUFPLEdBQUdmLElBQUVLLElBQUVBLEdBQUUsY0FBYVUsRUFBQyxHQUFFVixHQUFFO0FBQUEsTUFBTSxLQUFLO0FBQUUsZUFBTyxHQUFHTCxJQUFFSyxJQUFFQSxHQUFFLGFBQWEsVUFBU1UsRUFBQyxHQUFFVixHQUFFO0FBQUEsTUFBTSxLQUFLO0FBQUcsZUFBTyxHQUFHTCxJQUFFSyxJQUFFQSxHQUFFLGFBQWEsVUFBU1UsRUFBQyxHQUFFVixHQUFFO0FBQUEsTUFBTSxLQUFLO0FBQUcsV0FBRTtBQUFDLFVBQUFTLEtBQUVULEdBQUUsS0FBSztBQUFTLFVBQUFoQyxLQUFFZ0MsR0FBRTtBQUFhLFVBQUExQyxLQUFFMEMsR0FBRTtBQUNsZixVQUFBWSxLQUFFNUMsR0FBRTtBQUFNLFVBQUFrQyxHQUFFLElBQUdPLEdBQUUsYUFBYTtBQUFFLFVBQUFBLEdBQUUsZ0JBQWNHO0FBQUUsY0FBRyxTQUFPdEQsR0FBRSxLQUFHNkssSUFBRzdLLEdBQUUsT0FBTXNELEVBQUMsR0FBRTtBQUFDLGdCQUFHdEQsR0FBRSxhQUFXVSxHQUFFLFlBQVUsQ0FBQyxHQUFHLFNBQVE7QUFBQyxjQUFBZ0MsS0FBRSxHQUFHTCxJQUFFSyxJQUFFVSxFQUFDO0FBQUUsb0JBQU07QUFBQSxZQUFDO0FBQUEsVUFBQyxNQUFNLE1BQUlwRCxLQUFFMEMsR0FBRSxPQUFNLFNBQU8xQyxPQUFJQSxHQUFFLFNBQU8wQyxLQUFHLFNBQU8xQyxNQUFHO0FBQUMsZ0JBQUlxRCxLQUFFckQsR0FBRTtBQUFhLGdCQUFHLFNBQU9xRCxJQUFFO0FBQUMsY0FBQUMsS0FBRXRELEdBQUU7QUFBTSx1QkFBUVMsS0FBRTRDLEdBQUUsY0FBYSxTQUFPNUMsTUFBRztBQUFDLG9CQUFHQSxHQUFFLFlBQVUwQyxJQUFFO0FBQUMsc0JBQUcsTUFBSW5ELEdBQUUsS0FBSTtBQUFDLG9CQUFBUyxLQUFFLEdBQUcsSUFBRzJDLEtBQUUsQ0FBQ0EsRUFBQztBQUFFLG9CQUFBM0MsR0FBRSxNQUFJO0FBQUUsd0JBQUlpQixLQUFFMUIsR0FBRTtBQUFZLHdCQUFHLFNBQU8wQixJQUFFO0FBQUMsc0JBQUFBLEtBQUVBLEdBQUU7QUFBTywwQkFBSTZCLEtBQUU3QixHQUFFO0FBQVEsK0JBQU82QixLQUFFOUMsR0FBRSxPQUFLQSxNQUFHQSxHQUFFLE9BQUs4QyxHQUFFLE1BQUtBLEdBQUUsT0FBSzlDO0FBQUcsc0JBQUFpQixHQUFFLFVBQVFqQjtBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQyxrQkFBQVQsR0FBRSxTQUFPb0Q7QUFBRSxrQkFBQTNDLEtBQUVULEdBQUU7QUFBVSwyQkFBT1MsT0FBSUEsR0FBRSxTQUFPMkM7QUFBRztBQUFBLG9CQUFHcEQsR0FBRTtBQUFBLG9CQUNsZm9EO0FBQUEsb0JBQUVWO0FBQUEsa0JBQUM7QUFBRSxrQkFBQVcsR0FBRSxTQUFPRDtBQUFFO0FBQUEsZ0JBQUs7QUFBQyxnQkFBQTNDLEtBQUVBLEdBQUU7QUFBQSxjQUFJO0FBQUEsWUFBQyxXQUFTLE9BQUtULEdBQUUsSUFBSSxDQUFBc0QsS0FBRXRELEdBQUUsU0FBTzBDLEdBQUUsT0FBSyxPQUFLMUMsR0FBRTtBQUFBLHFCQUFjLE9BQUtBLEdBQUUsS0FBSTtBQUFDLGNBQUFzRCxLQUFFdEQsR0FBRTtBQUFPLGtCQUFHLFNBQU9zRCxHQUFFLE9BQU0sTUFBTTFCLEdBQUUsR0FBRyxDQUFDO0FBQUUsY0FBQTBCLEdBQUUsU0FBT0Y7QUFBRSxjQUFBQyxLQUFFQyxHQUFFO0FBQVUsdUJBQU9ELE9BQUlBLEdBQUUsU0FBT0Q7QUFBRyxpQkFBR0UsSUFBRUYsSUFBRVYsRUFBQztBQUFFLGNBQUFZLEtBQUV0RCxHQUFFO0FBQUEsWUFBTyxNQUFNLENBQUFzRCxLQUFFdEQsR0FBRTtBQUFNLGdCQUFHLFNBQU9zRCxHQUFFLENBQUFBLEdBQUUsU0FBT3REO0FBQUEsZ0JBQU8sTUFBSXNELEtBQUV0RCxJQUFFLFNBQU9zRCxNQUFHO0FBQUMsa0JBQUdBLE9BQUlaLElBQUU7QUFBQyxnQkFBQVksS0FBRTtBQUFLO0FBQUEsY0FBSztBQUFDLGNBQUF0RCxLQUFFc0QsR0FBRTtBQUFRLGtCQUFHLFNBQU90RCxJQUFFO0FBQUMsZ0JBQUFBLEdBQUUsU0FBT3NELEdBQUU7QUFBTyxnQkFBQUEsS0FBRXREO0FBQUU7QUFBQSxjQUFLO0FBQUMsY0FBQXNELEtBQUVBLEdBQUU7QUFBQSxZQUFNO0FBQUMsWUFBQXRELEtBQUVzRDtBQUFBLFVBQUM7QUFBQyxhQUFHakIsSUFBRUssSUFBRWhDLEdBQUUsVUFBUzBDLEVBQUM7QUFBRSxVQUFBVixLQUFFQSxHQUFFO0FBQUEsUUFBSztBQUFDLGVBQU9BO0FBQUEsTUFBRSxLQUFLO0FBQUUsZUFBT2hDLEtBQUVnQyxHQUFFLE1BQUtTLEtBQUVULEdBQUUsYUFBYSxVQUFTLEdBQUdBLElBQUVVLEVBQUMsR0FBRTFDLEtBQUUsR0FBR0EsRUFBQyxHQUFFeUMsS0FBRUEsR0FBRXpDLEVBQUMsR0FBRWdDLEdBQUUsU0FBTyxHQUFFLEdBQUdMLElBQUVLLElBQUVTLElBQUVDLEVBQUMsR0FDcmZWLEdBQUU7QUFBQSxNQUFNLEtBQUs7QUFBRyxlQUFPUyxLQUFFVCxHQUFFLE1BQUtoQyxLQUFFLEdBQUd5QyxJQUFFVCxHQUFFLFlBQVksR0FBRWhDLEtBQUUsR0FBR3lDLEdBQUUsTUFBS3pDLEVBQUMsR0FBRSxHQUFHMkIsSUFBRUssSUFBRVMsSUFBRXpDLElBQUUwQyxFQUFDO0FBQUEsTUFBRSxLQUFLO0FBQUcsZUFBTyxHQUFHZixJQUFFSyxJQUFFQSxHQUFFLE1BQUtBLEdBQUUsY0FBYVUsRUFBQztBQUFBLE1BQUUsS0FBSztBQUFHLGVBQU9ELEtBQUVULEdBQUUsTUFBS2hDLEtBQUVnQyxHQUFFLGNBQWFoQyxLQUFFZ0MsR0FBRSxnQkFBY1MsS0FBRXpDLEtBQUUsR0FBR3lDLElBQUV6QyxFQUFDLEdBQUUsR0FBRzJCLElBQUVLLEVBQUMsR0FBRUEsR0FBRSxNQUFJLEdBQUUsR0FBR1MsRUFBQyxLQUFHZCxLQUFFLE1BQUcsR0FBR0ssRUFBQyxLQUFHTCxLQUFFLE9BQUcsR0FBR0ssSUFBRVUsRUFBQyxHQUFFLEdBQUdWLElBQUVTLElBQUV6QyxFQUFDLEdBQUUsR0FBR2dDLElBQUVTLElBQUV6QyxJQUFFMEMsRUFBQyxHQUFFLEdBQUcsTUFBS1YsSUFBRVMsSUFBRSxNQUFHZCxJQUFFZSxFQUFDO0FBQUEsTUFBRSxLQUFLO0FBQUcsZUFBTyxHQUFHZixJQUFFSyxJQUFFVSxFQUFDO0FBQUEsTUFBRSxLQUFLO0FBQUcsZUFBTyxHQUFHZixJQUFFSyxJQUFFVSxFQUFDO0FBQUEsSUFBQztBQUFDLFVBQU0sTUFBTXhCLEdBQUUsS0FBSWMsR0FBRSxHQUFHLENBQUM7QUFBQSxFQUFFO0FBQUUsV0FBUyxHQUFHTCxJQUFFSyxJQUFFO0FBQUMsV0FBTyxHQUFHTCxJQUFFSyxFQUFDO0FBQUEsRUFBQztBQUNqWixXQUFTLEdBQUdMLElBQUVLLElBQUVVLElBQUVELElBQUU7QUFBQyxTQUFLLE1BQUlkO0FBQUUsU0FBSyxNQUFJZTtBQUFFLFNBQUssVUFBUSxLQUFLLFFBQU0sS0FBSyxTQUFPLEtBQUssWUFBVSxLQUFLLE9BQUssS0FBSyxjQUFZO0FBQUssU0FBSyxRQUFNO0FBQUUsU0FBSyxNQUFJO0FBQUssU0FBSyxlQUFhVjtBQUFFLFNBQUssZUFBYSxLQUFLLGdCQUFjLEtBQUssY0FBWSxLQUFLLGdCQUFjO0FBQUssU0FBSyxPQUFLUztBQUFFLFNBQUssZUFBYSxLQUFLLFFBQU07QUFBRSxTQUFLLFlBQVU7QUFBSyxTQUFLLGFBQVcsS0FBSyxRQUFNO0FBQUUsU0FBSyxZQUFVO0FBQUEsRUFBSTtBQUFDLFdBQVMsR0FBR2QsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFdBQU8sSUFBSSxHQUFHZCxJQUFFSyxJQUFFVSxJQUFFRCxFQUFDO0FBQUEsRUFBQztBQUFDLFdBQVMsR0FBR2QsSUFBRTtBQUFDLElBQUFBLEtBQUVBLEdBQUU7QUFBVSxXQUFNLEVBQUUsQ0FBQ0EsTUFBRyxDQUFDQSxHQUFFO0FBQUEsRUFBaUI7QUFDcGQsV0FBUyxHQUFHQSxJQUFFO0FBQUMsUUFBRyxlQUFhLE9BQU9BLEdBQUUsUUFBTyxHQUFHQSxFQUFDLElBQUUsSUFBRTtBQUFFLFFBQUcsV0FBU0EsTUFBRyxTQUFPQSxJQUFFO0FBQUMsTUFBQUEsS0FBRUEsR0FBRTtBQUFTLFVBQUdBLE9BQUksR0FBRyxRQUFPO0FBQUcsVUFBR0EsT0FBSSxHQUFHLFFBQU87QUFBQSxJQUFFO0FBQUMsV0FBTztBQUFBLEVBQUM7QUFDL0ksV0FBUyxHQUFHQSxJQUFFSyxJQUFFO0FBQUMsUUFBSVUsS0FBRWYsR0FBRTtBQUFVLGFBQU9lLE1BQUdBLEtBQUUsR0FBR2YsR0FBRSxLQUFJSyxJQUFFTCxHQUFFLEtBQUlBLEdBQUUsSUFBSSxHQUFFZSxHQUFFLGNBQVlmLEdBQUUsYUFBWWUsR0FBRSxPQUFLZixHQUFFLE1BQUtlLEdBQUUsWUFBVWYsR0FBRSxXQUFVZSxHQUFFLFlBQVVmLElBQUVBLEdBQUUsWUFBVWUsT0FBSUEsR0FBRSxlQUFhVixJQUFFVSxHQUFFLE9BQUtmLEdBQUUsTUFBS2UsR0FBRSxRQUFNLEdBQUVBLEdBQUUsZUFBYSxHQUFFQSxHQUFFLFlBQVU7QUFBTSxJQUFBQSxHQUFFLFFBQU1mLEdBQUUsUUFBTTtBQUFTLElBQUFlLEdBQUUsYUFBV2YsR0FBRTtBQUFXLElBQUFlLEdBQUUsUUFBTWYsR0FBRTtBQUFNLElBQUFlLEdBQUUsUUFBTWYsR0FBRTtBQUFNLElBQUFlLEdBQUUsZ0JBQWNmLEdBQUU7QUFBYyxJQUFBZSxHQUFFLGdCQUFjZixHQUFFO0FBQWMsSUFBQWUsR0FBRSxjQUFZZixHQUFFO0FBQVksSUFBQUssS0FBRUwsR0FBRTtBQUFhLElBQUFlLEdBQUUsZUFBYSxTQUFPVixLQUFFLE9BQUssRUFBQyxPQUFNQSxHQUFFLE9BQU0sY0FBYUEsR0FBRSxhQUFZO0FBQzNmLElBQUFVLEdBQUUsVUFBUWYsR0FBRTtBQUFRLElBQUFlLEdBQUUsUUFBTWYsR0FBRTtBQUFNLElBQUFlLEdBQUUsTUFBSWYsR0FBRTtBQUFJLFdBQU9lO0FBQUEsRUFBQztBQUN4RCxXQUFTLEdBQUdmLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFVixJQUFFO0FBQUMsUUFBSXNELEtBQUU7QUFBRSxJQUFBSCxLQUFFZDtBQUFFLFFBQUcsZUFBYSxPQUFPQSxHQUFFLElBQUdBLEVBQUMsTUFBSWlCLEtBQUU7QUFBQSxhQUFXLGFBQVcsT0FBT2pCLEdBQUUsQ0FBQWlCLEtBQUU7QUFBQSxRQUFPLEdBQUUsU0FBT2pCLElBQUM7QUFBQSxNQUFFLEtBQUs7QUFBRyxlQUFPLEdBQUdlLEdBQUUsVUFBUzFDLElBQUVWLElBQUUwQyxFQUFDO0FBQUEsTUFBRSxLQUFLO0FBQUcsUUFBQVksS0FBRTtBQUFFLFFBQUE1QyxNQUFHO0FBQUU7QUFBQSxNQUFNLEtBQUs7QUFBRyxlQUFPMkIsS0FBRSxHQUFHLElBQUdlLElBQUVWLElBQUVoQyxLQUFFLENBQUMsR0FBRTJCLEdBQUUsY0FBWSxJQUFHQSxHQUFFLFFBQU1yQyxJQUFFcUM7QUFBQSxNQUFFLEtBQUs7QUFBRyxlQUFPQSxLQUFFLEdBQUcsSUFBR2UsSUFBRVYsSUFBRWhDLEVBQUMsR0FBRTJCLEdBQUUsY0FBWSxJQUFHQSxHQUFFLFFBQU1yQyxJQUFFcUM7QUFBQSxNQUFFLEtBQUs7QUFBRyxlQUFPQSxLQUFFLEdBQUcsSUFBR2UsSUFBRVYsSUFBRWhDLEVBQUMsR0FBRTJCLEdBQUUsY0FBWSxJQUFHQSxHQUFFLFFBQU1yQyxJQUFFcUM7QUFBQSxNQUFFLEtBQUs7QUFBRyxlQUFPLEdBQUdlLElBQUUxQyxJQUFFVixJQUFFMEMsRUFBQztBQUFBLE1BQUU7QUFBUSxZQUFHLGFBQVcsT0FBT0wsTUFBRyxTQUFPQSxHQUFFLFNBQU9BLEdBQUUsVUFBVTtBQUFBLFVBQUEsS0FBSztBQUFHLFlBQUFpQixLQUFFO0FBQUcsa0JBQU07QUFBQSxVQUFFLEtBQUs7QUFBRyxZQUFBQSxLQUFFO0FBQUUsa0JBQU07QUFBQSxVQUFFLEtBQUs7QUFBRyxZQUFBQSxLQUFFO0FBQ3BmLGtCQUFNO0FBQUEsVUFBRSxLQUFLO0FBQUcsWUFBQUEsS0FBRTtBQUFHLGtCQUFNO0FBQUEsVUFBRSxLQUFLO0FBQUcsWUFBQUEsS0FBRTtBQUFHLFlBQUFILEtBQUU7QUFBSyxrQkFBTTtBQUFBLFFBQUM7QUFBQyxjQUFNLE1BQU12QixHQUFFLEtBQUksUUFBTVMsS0FBRUEsS0FBRSxPQUFPQSxJQUFFLEVBQUUsQ0FBQztBQUFBLElBQUU7QUFBQyxJQUFBSyxLQUFFLEdBQUdZLElBQUVGLElBQUVWLElBQUVoQyxFQUFDO0FBQUUsSUFBQWdDLEdBQUUsY0FBWUw7QUFBRSxJQUFBSyxHQUFFLE9BQUtTO0FBQUUsSUFBQVQsR0FBRSxRQUFNMUM7QUFBRSxXQUFPMEM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFO0FBQUMsSUFBQWQsS0FBRSxHQUFHLEdBQUVBLElBQUVjLElBQUVULEVBQUM7QUFBRSxJQUFBTCxHQUFFLFFBQU1lO0FBQUUsV0FBT2Y7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFO0FBQUMsSUFBQWQsS0FBRSxHQUFHLElBQUdBLElBQUVjLElBQUVULEVBQUM7QUFBRSxJQUFBTCxHQUFFLGNBQVk7QUFBRyxJQUFBQSxHQUFFLFFBQU1lO0FBQUUsSUFBQWYsR0FBRSxZQUFVLEVBQUMsVUFBUyxNQUFFO0FBQUUsV0FBT0E7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsSUFBQWYsS0FBRSxHQUFHLEdBQUVBLElBQUUsTUFBS0ssRUFBQztBQUFFLElBQUFMLEdBQUUsUUFBTWU7QUFBRSxXQUFPZjtBQUFBLEVBQUM7QUFDNVcsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsSUFBQVYsS0FBRSxHQUFHLEdBQUUsU0FBT0wsR0FBRSxXQUFTQSxHQUFFLFdBQVMsQ0FBQSxHQUFHQSxHQUFFLEtBQUlLLEVBQUM7QUFBRSxJQUFBQSxHQUFFLFFBQU1VO0FBQUUsSUFBQVYsR0FBRSxZQUFVLEVBQUMsZUFBY0wsR0FBRSxlQUFjLGlCQUFnQixNQUFLLGdCQUFlQSxHQUFFLGVBQWM7QUFBRSxXQUFPSztBQUFBLEVBQUM7QUFDdEwsV0FBUyxHQUFHTCxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFekMsSUFBRTtBQUFDLFNBQUssTUFBSWdDO0FBQUUsU0FBSyxnQkFBY0w7QUFBRSxTQUFLLGVBQWEsS0FBSyxZQUFVLEtBQUssVUFBUSxLQUFLLGtCQUFnQjtBQUFLLFNBQUssZ0JBQWM7QUFBRyxTQUFLLGVBQWEsS0FBSyxpQkFBZSxLQUFLLFVBQVE7QUFBSyxTQUFLLG1CQUFpQjtBQUFFLFNBQUssYUFBVyxHQUFHLENBQUM7QUFBRSxTQUFLLGtCQUFnQixHQUFHLEVBQUU7QUFBRSxTQUFLLGlCQUFlLEtBQUssZ0JBQWMsS0FBSyxtQkFBaUIsS0FBSyxlQUFhLEtBQUssY0FBWSxLQUFLLGlCQUFlLEtBQUssZUFBYTtBQUFFLFNBQUssZ0JBQWMsR0FBRyxDQUFDO0FBQUUsU0FBSyxtQkFBaUJjO0FBQUUsU0FBSyxxQkFBbUJ6QztBQUFFLFNBQUssa0NBQy9lO0FBQUEsRUFBSTtBQUFDLFdBQVMsR0FBRzJCLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFVixJQUFFc0QsSUFBRUQsSUFBRTVDLElBQUU7QUFBQyxJQUFBNEIsS0FBRSxJQUFJLEdBQUdBLElBQUVLLElBQUVVLElBQUVDLElBQUU1QyxFQUFDO0FBQUUsVUFBSWlDLE1BQUdBLEtBQUUsR0FBRSxTQUFLMUMsT0FBSTBDLE1BQUcsTUFBSUEsS0FBRTtBQUFFLElBQUExQyxLQUFFLEdBQUcsR0FBRSxNQUFLLE1BQUswQyxFQUFDO0FBQUUsSUFBQUwsR0FBRSxVQUFRckM7QUFBRSxJQUFBQSxHQUFFLFlBQVVxQztBQUFFLElBQUFyQyxHQUFFLGdCQUFjLEVBQUMsU0FBUW1ELElBQUUsY0FBYUMsSUFBRSxPQUFNLE1BQUssYUFBWSxNQUFLLDJCQUEwQixLQUFJO0FBQUUsT0FBR3BELEVBQUM7QUFBRSxXQUFPcUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBSUQsS0FBRSxJQUFFLFVBQVUsVUFBUSxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFO0FBQUssV0FBTSxFQUFDLFVBQVMsSUFBRyxLQUFJLFFBQU1BLEtBQUUsT0FBSyxLQUFHQSxJQUFFLFVBQVNkLElBQUUsZUFBY0ssSUFBRSxnQkFBZVUsR0FBQztBQUFBLEVBQUM7QUFDcGEsV0FBUyxHQUFHZixJQUFFO0FBQUMsUUFBRyxDQUFDQSxHQUFFLFFBQU87QUFBRyxJQUFBQSxLQUFFQSxHQUFFO0FBQWdCLE9BQUU7QUFBQyxVQUFHLEdBQUdBLEVBQUMsTUFBSUEsTUFBRyxNQUFJQSxHQUFFLElBQUksT0FBTSxNQUFNVCxHQUFFLEdBQUcsQ0FBQztBQUFFLFVBQUljLEtBQUVMO0FBQUUsU0FBRTtBQUFDLGdCQUFPSyxHQUFFLEtBQUc7QUFBQSxVQUFFLEtBQUs7QUFBRSxZQUFBQSxLQUFFQSxHQUFFLFVBQVU7QUFBUSxrQkFBTTtBQUFBLFVBQUUsS0FBSztBQUFFLGdCQUFHLEdBQUdBLEdBQUUsSUFBSSxHQUFFO0FBQUMsY0FBQUEsS0FBRUEsR0FBRSxVQUFVO0FBQTBDLG9CQUFNO0FBQUEsWUFBQztBQUFBLFFBQUM7QUFBQyxRQUFBQSxLQUFFQSxHQUFFO0FBQUEsTUFBTSxTQUFPLFNBQU9BO0FBQUcsWUFBTSxNQUFNZCxHQUFFLEdBQUcsQ0FBQztBQUFBLElBQUU7QUFBQyxRQUFHLE1BQUlTLEdBQUUsS0FBSTtBQUFDLFVBQUllLEtBQUVmLEdBQUU7QUFBSyxVQUFHLEdBQUdlLEVBQUMsRUFBRSxRQUFPLEdBQUdmLElBQUVlLElBQUVWLEVBQUM7QUFBQSxJQUFDO0FBQUMsV0FBT0E7QUFBQSxFQUFDO0FBQ3BXLFdBQVMsR0FBR0wsSUFBRUssSUFBRVUsSUFBRUQsSUFBRXpDLElBQUVWLElBQUVzRCxJQUFFRCxJQUFFNUMsSUFBRTtBQUFDLElBQUE0QixLQUFFLEdBQUdlLElBQUVELElBQUUsTUFBR2QsSUFBRTNCLElBQUVWLElBQUVzRCxJQUFFRCxJQUFFNUMsRUFBQztBQUFFLElBQUE0QixHQUFFLFVBQVEsR0FBRyxJQUFJO0FBQUUsSUFBQWUsS0FBRWYsR0FBRTtBQUFRLElBQUFjLEtBQUVPLEdBQUc7QUFBQyxJQUFBaEQsS0FBRSxHQUFHMEMsRUFBQztBQUFFLElBQUFwRCxLQUFFLEdBQUdtRCxJQUFFekMsRUFBQztBQUFFLElBQUFWLEdBQUUsV0FBUyxXQUFTMEMsTUFBRyxTQUFPQSxLQUFFQSxLQUFFO0FBQUssT0FBR1UsSUFBRXBELElBQUVVLEVBQUM7QUFBRSxJQUFBMkIsR0FBRSxRQUFRLFFBQU0zQjtBQUFFLE9BQUcyQixJQUFFM0IsSUFBRXlDLEVBQUM7QUFBRSxPQUFHZCxJQUFFYyxFQUFDO0FBQUUsV0FBT2Q7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFSyxJQUFFVSxJQUFFRCxJQUFFO0FBQUMsUUFBSXpDLEtBQUVnQyxHQUFFLFNBQVExQyxLQUFFMEQsR0FBRyxHQUFDSixLQUFFLEdBQUc1QyxFQUFDO0FBQUUsSUFBQTBDLEtBQUUsR0FBR0EsRUFBQztBQUFFLGFBQU9WLEdBQUUsVUFBUUEsR0FBRSxVQUFRVSxLQUFFVixHQUFFLGlCQUFlVTtBQUFFLElBQUFWLEtBQUUsR0FBRzFDLElBQUVzRCxFQUFDO0FBQUUsSUFBQVosR0FBRSxVQUFRLEVBQUMsU0FBUUwsR0FBQztBQUFFLElBQUFjLEtBQUUsV0FBU0EsS0FBRSxPQUFLQTtBQUFFLGFBQU9BLE9BQUlULEdBQUUsV0FBU1M7QUFBRyxJQUFBZCxLQUFFLEdBQUczQixJQUFFZ0MsSUFBRVksRUFBQztBQUFFLGFBQU9qQixPQUFJLEdBQUdBLElBQUUzQixJQUFFNEMsSUFBRXRELEVBQUMsR0FBRSxHQUFHcUMsSUFBRTNCLElBQUU0QyxFQUFDO0FBQUcsV0FBT0E7QUFBQSxFQUFDO0FBQzNiLFdBQVMsR0FBR2pCLElBQUU7QUFBQyxJQUFBQSxLQUFFQSxHQUFFO0FBQVEsUUFBRyxDQUFDQSxHQUFFLE1BQU0sUUFBTztBQUFLLFlBQU9BLEdBQUUsTUFBTSxLQUFLO0FBQUEsTUFBQSxLQUFLO0FBQUUsZUFBT0EsR0FBRSxNQUFNO0FBQUEsTUFBVTtBQUFRLGVBQU9BLEdBQUUsTUFBTTtBQUFBLElBQVM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFSyxJQUFFO0FBQUMsSUFBQUwsS0FBRUEsR0FBRTtBQUFjLFFBQUcsU0FBT0EsTUFBRyxTQUFPQSxHQUFFLFlBQVc7QUFBQyxVQUFJZSxLQUFFZixHQUFFO0FBQVUsTUFBQUEsR0FBRSxZQUFVLE1BQUllLE1BQUdBLEtBQUVWLEtBQUVVLEtBQUVWO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTLEdBQUdMLElBQUVLLElBQUU7QUFBQyxPQUFHTCxJQUFFSyxFQUFDO0FBQUUsS0FBQ0wsS0FBRUEsR0FBRSxjQUFZLEdBQUdBLElBQUVLLEVBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxLQUFJO0FBQUMsV0FBTztBQUFBLEVBQUk7QUFBQyxNQUFJLEtBQUcsZUFBYSxPQUFPLGNBQVksY0FBWSxTQUFTTCxJQUFFO0FBQUMsWUFBUSxNQUFNQSxFQUFDO0FBQUEsRUFBQztBQUFFLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFNBQUssZ0JBQWNBO0FBQUEsRUFBQztBQUM1YixLQUFHLFVBQVUsU0FBTyxHQUFHLFVBQVUsU0FBTyxTQUFTQSxJQUFFO0FBQUMsUUFBSUssS0FBRSxLQUFLO0FBQWMsUUFBRyxTQUFPQSxHQUFFLE9BQU0sTUFBTWQsR0FBRSxHQUFHLENBQUM7QUFBRSxPQUFHUyxJQUFFSyxJQUFFLE1BQUssSUFBSTtBQUFBLEVBQUM7QUFBRSxLQUFHLFVBQVUsVUFBUSxHQUFHLFVBQVUsVUFBUSxXQUFVO0FBQUMsUUFBSUwsS0FBRSxLQUFLO0FBQWMsUUFBRyxTQUFPQSxJQUFFO0FBQUMsV0FBSyxnQkFBYztBQUFLLFVBQUlLLEtBQUVMLEdBQUU7QUFBYyxTQUFHLFdBQVU7QUFBQyxXQUFHLE1BQUtBLElBQUUsTUFBSyxJQUFJO0FBQUEsTUFBQyxDQUFDO0FBQUUsTUFBQUssR0FBRSxFQUFFLElBQUU7QUFBQSxJQUFJO0FBQUEsRUFBQztBQUFFLFdBQVMsR0FBR0wsSUFBRTtBQUFDLFNBQUssZ0JBQWNBO0FBQUEsRUFBQztBQUM5VixLQUFHLFVBQVUsNkJBQTJCLFNBQVNBLElBQUU7QUFBQyxRQUFHQSxJQUFFO0FBQUMsVUFBSUssS0FBRSxHQUFJO0FBQUMsTUFBQUwsS0FBRSxFQUFDLFdBQVUsTUFBSyxRQUFPQSxJQUFFLFVBQVNLLEdBQUM7QUFBRSxlQUFRVSxLQUFFLEdBQUVBLEtBQUUsR0FBRyxVQUFRLE1BQUlWLE1BQUdBLEtBQUUsR0FBR1UsRUFBQyxFQUFFLFVBQVNBLEtBQUk7QUFBQyxTQUFHLE9BQU9BLElBQUUsR0FBRWYsRUFBQztBQUFFLFlBQUllLE1BQUcsR0FBR2YsRUFBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUUsV0FBUyxHQUFHQSxJQUFFO0FBQUMsV0FBTSxFQUFFLENBQUNBLE1BQUcsTUFBSUEsR0FBRSxZQUFVLE1BQUlBLEdBQUUsWUFBVSxPQUFLQSxHQUFFO0FBQUEsRUFBUztBQUFDLFdBQVMsR0FBR0EsSUFBRTtBQUFDLFdBQU0sRUFBRSxDQUFDQSxNQUFHLE1BQUlBLEdBQUUsWUFBVSxNQUFJQSxHQUFFLFlBQVUsT0FBS0EsR0FBRSxhQUFXLE1BQUlBLEdBQUUsWUFBVSxtQ0FBaUNBLEdBQUU7QUFBQSxFQUFXO0FBQUMsV0FBUyxLQUFJO0FBQUEsRUFBQTtBQUN2YSxXQUFTLEdBQUdBLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFO0FBQUMsUUFBR0EsSUFBRTtBQUFDLFVBQUcsZUFBYSxPQUFPeUMsSUFBRTtBQUFDLFlBQUluRCxLQUFFbUQ7QUFBRSxRQUFBQSxLQUFFLFdBQVU7QUFBQyxjQUFJZCxLQUFFLEdBQUdpQixFQUFDO0FBQUUsVUFBQXRELEdBQUUsS0FBS3FDLEVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQztBQUFDLFVBQUlpQixLQUFFLEdBQUdaLElBQUVTLElBQUVkLElBQUUsR0FBRSxNQUFLLE9BQUcsT0FBRyxJQUFHLEVBQUU7QUFBRSxNQUFBQSxHQUFFLHNCQUFvQmlCO0FBQUUsTUFBQWpCLEdBQUUsRUFBRSxJQUFFaUIsR0FBRTtBQUFRLFNBQUcsTUFBSWpCLEdBQUUsV0FBU0EsR0FBRSxhQUFXQSxFQUFDO0FBQUUsU0FBRTtBQUFHLGFBQU9pQjtBQUFBLElBQUM7QUFBQyxXQUFLNUMsS0FBRTJCLEdBQUUsWUFBVyxDQUFBQSxHQUFFLFlBQVkzQixFQUFDO0FBQUUsUUFBRyxlQUFhLE9BQU95QyxJQUFFO0FBQUMsVUFBSUUsS0FBRUY7QUFBRSxNQUFBQSxLQUFFLFdBQVU7QUFBQyxZQUFJZCxLQUFFLEdBQUc1QixFQUFDO0FBQUUsUUFBQTRDLEdBQUUsS0FBS2hCLEVBQUM7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFDLFFBQUk1QixLQUFFLEdBQUc0QixJQUFFLEdBQUUsT0FBRyxNQUFLLE1BQUssT0FBRyxPQUFHLElBQUcsRUFBRTtBQUFFLElBQUFBLEdBQUUsc0JBQW9CNUI7QUFBRSxJQUFBNEIsR0FBRSxFQUFFLElBQUU1QixHQUFFO0FBQVEsT0FBRyxNQUFJNEIsR0FBRSxXQUFTQSxHQUFFLGFBQVdBLEVBQUM7QUFBRSxPQUFHLFdBQVU7QUFBQyxTQUFHSyxJQUFFakMsSUFBRTJDLElBQUVELEVBQUM7QUFBQSxJQUFDLENBQUM7QUFBRSxXQUFPMUM7QUFBQSxFQUFDO0FBQzlkLFdBQVMsR0FBRzRCLElBQUVLLElBQUVVLElBQUVELElBQUV6QyxJQUFFO0FBQUMsUUFBSVYsS0FBRW9ELEdBQUU7QUFBb0IsUUFBR3BELElBQUU7QUFBQyxVQUFJc0QsS0FBRXREO0FBQUUsVUFBRyxlQUFhLE9BQU9VLElBQUU7QUFBQyxZQUFJMkMsS0FBRTNDO0FBQUUsUUFBQUEsS0FBRSxXQUFVO0FBQUMsY0FBSTJCLEtBQUUsR0FBR2lCLEVBQUM7QUFBRSxVQUFBRCxHQUFFLEtBQUtoQixFQUFDO0FBQUEsUUFBQztBQUFBLE1BQUM7QUFBQyxTQUFHSyxJQUFFWSxJQUFFakIsSUFBRTNCLEVBQUM7QUFBQSxJQUFDLE1BQU0sQ0FBQTRDLEtBQUUsR0FBR0YsSUFBRVYsSUFBRUwsSUFBRTNCLElBQUV5QyxFQUFDO0FBQUUsV0FBTyxHQUFHRyxFQUFDO0FBQUEsRUFBQztBQUFDLE9BQUcsU0FBU2pCLElBQUU7QUFBQyxZQUFPQSxHQUFFLEtBQUs7QUFBQSxNQUFBLEtBQUs7QUFBRSxZQUFJSyxLQUFFTCxHQUFFO0FBQVUsWUFBR0ssR0FBRSxRQUFRLGNBQWMsY0FBYTtBQUFDLGNBQUlVLEtBQUUsR0FBR1YsR0FBRSxZQUFZO0FBQUUsZ0JBQUlVLE9BQUksR0FBR1YsSUFBRVUsS0FBRSxDQUFDLEdBQUUsR0FBR1YsSUFBRUosR0FBRyxDQUFBLEdBQUUsT0FBS1UsS0FBRSxPQUFLLEtBQUdWLEdBQUcsSUFBQyxLQUFJLEdBQUk7QUFBQSxRQUFFO0FBQUM7QUFBQSxNQUFNLEtBQUs7QUFBRyxXQUFHLFdBQVU7QUFBQyxjQUFJSSxLQUFFLEdBQUdMLElBQUUsQ0FBQztBQUFFLGNBQUcsU0FBT0ssSUFBRTtBQUFDLGdCQUFJVSxLQUFFTSxHQUFDO0FBQUcsZUFBR2hCLElBQUVMLElBQUUsR0FBRWUsRUFBQztBQUFBLFVBQUM7QUFBQSxRQUFDLENBQUMsR0FBRSxHQUFHZixJQUFFLENBQUM7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUMvYixPQUFHLFNBQVNBLElBQUU7QUFBQyxRQUFHLE9BQUtBLEdBQUUsS0FBSTtBQUFDLFVBQUlLLEtBQUUsR0FBR0wsSUFBRSxTQUFTO0FBQUUsVUFBRyxTQUFPSyxJQUFFO0FBQUMsWUFBSVUsS0FBRU0sR0FBQztBQUFHLFdBQUdoQixJQUFFTCxJQUFFLFdBQVVlLEVBQUM7QUFBQSxNQUFDO0FBQUMsU0FBR2YsSUFBRSxTQUFTO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBRSxPQUFHLFNBQVNBLElBQUU7QUFBQyxRQUFHLE9BQUtBLEdBQUUsS0FBSTtBQUFDLFVBQUlLLEtBQUUsR0FBR0wsRUFBQyxHQUFFZSxLQUFFLEdBQUdmLElBQUVLLEVBQUM7QUFBRSxVQUFHLFNBQU9VLElBQUU7QUFBQyxZQUFJRCxLQUFFTyxHQUFDO0FBQUcsV0FBR04sSUFBRWYsSUFBRUssSUFBRVMsRUFBQztBQUFBLE1BQUM7QUFBQyxTQUFHZCxJQUFFSyxFQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBRSxPQUFHLFdBQVU7QUFBQyxXQUFPSDtBQUFBLEVBQUM7QUFBRSxPQUFHLFNBQVNGLElBQUVLLElBQUU7QUFBQyxRQUFJVSxLQUFFYjtBQUFFLFFBQUc7QUFBQyxhQUFPQSxLQUFFRixJQUFFSyxHQUFHO0FBQUEsSUFBQSxVQUFDO0FBQVEsTUFBQUgsS0FBRWE7QUFBQSxJQUFDO0FBQUEsRUFBQztBQUNsUyxPQUFHLFNBQVNmLElBQUVLLElBQUVVLElBQUU7QUFBQyxZQUFPVixJQUFDO0FBQUEsTUFBRSxLQUFLO0FBQVEsV0FBR0wsSUFBRWUsRUFBQztBQUFFLFFBQUFWLEtBQUVVLEdBQUU7QUFBSyxZQUFHLFlBQVVBLEdBQUUsUUFBTSxRQUFNVixJQUFFO0FBQUMsZUFBSVUsS0FBRWYsSUFBRWUsR0FBRSxhQUFZLENBQUFBLEtBQUVBLEdBQUU7QUFBVyxVQUFBQSxLQUFFQSxHQUFFLGlCQUFpQixnQkFBYyxLQUFLLFVBQVUsS0FBR1YsRUFBQyxJQUFFLGlCQUFpQjtBQUFFLGVBQUlBLEtBQUUsR0FBRUEsS0FBRVUsR0FBRSxRQUFPVixNQUFJO0FBQUMsZ0JBQUlTLEtBQUVDLEdBQUVWLEVBQUM7QUFBRSxnQkFBR1MsT0FBSWQsTUFBR2MsR0FBRSxTQUFPZCxHQUFFLE1BQUs7QUFBQyxrQkFBSTNCLEtBQUUsR0FBR3lDLEVBQUM7QUFBRSxrQkFBRyxDQUFDekMsR0FBRSxPQUFNLE1BQU1rQixHQUFFLEVBQUUsQ0FBQztBQUFFLGlCQUFHdUIsRUFBQztBQUFFLGlCQUFHQSxJQUFFekMsRUFBQztBQUFBLFlBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQztBQUFDO0FBQUEsTUFBTSxLQUFLO0FBQVcsV0FBRzJCLElBQUVlLEVBQUM7QUFBRTtBQUFBLE1BQU0sS0FBSztBQUFTLFFBQUFWLEtBQUVVLEdBQUUsT0FBTSxRQUFNVixNQUFHLEdBQUdMLElBQUUsQ0FBQyxDQUFDZSxHQUFFLFVBQVNWLElBQUUsS0FBRTtBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUUsT0FBRztBQUFHLE9BQUc7QUFDcGEsTUFBSSxLQUFHLEVBQUMsdUJBQXNCLE9BQUcsUUFBTyxDQUFDLElBQUdzSCxLQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsRUFBQyxHQUFFLEtBQUcsRUFBQyx5QkFBd0IsSUFBRyxZQUFXLEdBQUUsU0FBUSxVQUFTLHFCQUFvQixZQUFXO0FBQ3pKLE1BQUksS0FBRyxFQUFDLFlBQVcsR0FBRyxZQUFXLFNBQVEsR0FBRyxTQUFRLHFCQUFvQixHQUFHLHFCQUFvQixnQkFBZSxHQUFHLGdCQUFlLG1CQUFrQixNQUFLLDZCQUE0QixNQUFLLDZCQUE0QixNQUFLLGVBQWMsTUFBSyx5QkFBd0IsTUFBSyx5QkFBd0IsTUFBSyxpQkFBZ0IsTUFBSyxvQkFBbUIsTUFBSyxnQkFBZSxNQUFLLHNCQUFxQixHQUFHLHdCQUF1Qix5QkFBd0IsU0FBUzNILElBQUU7QUFBQyxJQUFBQSxLQUFFLEdBQUdBLEVBQUM7QUFBRSxXQUFPLFNBQU9BLEtBQUUsT0FBS0EsR0FBRTtBQUFBLEVBQVMsR0FBRSx5QkFBd0IsR0FBRywyQkFDL2YsSUFBRyw2QkFBNEIsTUFBSyxpQkFBZ0IsTUFBSyxjQUFhLE1BQUssbUJBQWtCLE1BQUssaUJBQWdCLE1BQUssbUJBQWtCLGtDQUFpQztBQUFFLE1BQUcsZ0JBQWMsT0FBTyxnQ0FBK0I7QUFBQyxRQUFJLEtBQUc7QUFBK0IsUUFBRyxDQUFDLEdBQUcsY0FBWSxHQUFHLGNBQWMsS0FBRztBQUFDLFdBQUcsR0FBRyxPQUFPLEVBQUUsR0FBRSxLQUFHO0FBQUEsSUFBRSxTQUFPQSxJQUFFO0FBQUE7RUFBRTtBQUFDLDBCQUFBLHFEQUEyRDtBQUMzWCwwQkFBQSxlQUFDLFNBQVNBLElBQUVLLElBQUU7QUFBQyxRQUFJVSxLQUFFLElBQUUsVUFBVSxVQUFRLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUU7QUFBSyxRQUFHLENBQUMsR0FBR1YsRUFBQyxFQUFFLE9BQU0sTUFBTWQsR0FBRSxHQUFHLENBQUM7QUFBRSxXQUFPLEdBQUdTLElBQUVLLElBQUUsTUFBS1UsRUFBQztBQUFBLEVBQUM7QUFBRSwwQkFBQSxhQUFtQixTQUFTZixJQUFFSyxJQUFFO0FBQUMsUUFBRyxDQUFDLEdBQUdMLEVBQUMsRUFBRSxPQUFNLE1BQU1ULEdBQUUsR0FBRyxDQUFDO0FBQUUsUUFBSXdCLEtBQUUsT0FBR0QsS0FBRSxJQUFHekMsS0FBRTtBQUFHLGFBQU9nQyxNQUFHLFdBQVNBLE9BQUksU0FBS0EsR0FBRSx3QkFBc0JVLEtBQUUsT0FBSSxXQUFTVixHQUFFLHFCQUFtQlMsS0FBRVQsR0FBRSxtQkFBa0IsV0FBU0EsR0FBRSx1QkFBcUJoQyxLQUFFZ0MsR0FBRTtBQUFxQixJQUFBQSxLQUFFLEdBQUdMLElBQUUsR0FBRSxPQUFHLE1BQUssTUFBS2UsSUFBRSxPQUFHRCxJQUFFekMsRUFBQztBQUFFLElBQUEyQixHQUFFLEVBQUUsSUFBRUssR0FBRTtBQUFRLE9BQUcsTUFBSUwsR0FBRSxXQUFTQSxHQUFFLGFBQVdBLEVBQUM7QUFBRSxXQUFPLElBQUksR0FBR0ssRUFBQztBQUFBLEVBQUM7QUFDcmYsMEJBQUEsY0FBb0IsU0FBU0wsSUFBRTtBQUFDLFFBQUcsUUFBTUEsR0FBRSxRQUFPO0FBQUssUUFBRyxNQUFJQSxHQUFFLFNBQVMsUUFBT0E7QUFBRSxRQUFJSyxLQUFFTCxHQUFFO0FBQWdCLFFBQUcsV0FBU0ssSUFBRTtBQUFDLFVBQUcsZUFBYSxPQUFPTCxHQUFFLE9BQU8sT0FBTSxNQUFNVCxHQUFFLEdBQUcsQ0FBQztBQUFFLE1BQUFTLEtBQUUsT0FBTyxLQUFLQSxFQUFDLEVBQUUsS0FBSyxHQUFHO0FBQUUsWUFBTSxNQUFNVCxHQUFFLEtBQUlTLEVBQUMsQ0FBQztBQUFBLElBQUU7QUFBQyxJQUFBQSxLQUFFLEdBQUdLLEVBQUM7QUFBRSxJQUFBTCxLQUFFLFNBQU9BLEtBQUUsT0FBS0EsR0FBRTtBQUFVLFdBQU9BO0FBQUEsRUFBQztBQUFFLDBCQUFpQixZQUFDLFNBQVNBLElBQUU7QUFBQyxXQUFPLEdBQUdBLEVBQUM7QUFBQSxFQUFDO0FBQUUsMEJBQWUsVUFBQyxTQUFTQSxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBRyxDQUFDLEdBQUdWLEVBQUMsRUFBRSxPQUFNLE1BQU1kLEdBQUUsR0FBRyxDQUFDO0FBQUUsV0FBTyxHQUFHLE1BQUtTLElBQUVLLElBQUUsTUFBR1UsRUFBQztBQUFBLEVBQUM7QUFDNVgsMEJBQUEsY0FBQyxTQUFTZixJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBRyxDQUFDLEdBQUdmLEVBQUMsRUFBRSxPQUFNLE1BQU1ULEdBQUUsR0FBRyxDQUFDO0FBQUUsUUFBSXVCLEtBQUUsUUFBTUMsTUFBR0EsR0FBRSxtQkFBaUIsTUFBSzFDLEtBQUUsT0FBR1YsS0FBRSxJQUFHc0QsS0FBRTtBQUFHLGFBQU9GLE1BQUcsV0FBU0EsT0FBSSxTQUFLQSxHQUFFLHdCQUFzQjFDLEtBQUUsT0FBSSxXQUFTMEMsR0FBRSxxQkFBbUJwRCxLQUFFb0QsR0FBRSxtQkFBa0IsV0FBU0EsR0FBRSx1QkFBcUJFLEtBQUVGLEdBQUU7QUFBcUIsSUFBQVYsS0FBRSxHQUFHQSxJQUFFLE1BQUtMLElBQUUsR0FBRSxRQUFNZSxLQUFFQSxLQUFFLE1BQUsxQyxJQUFFLE9BQUdWLElBQUVzRCxFQUFDO0FBQUUsSUFBQWpCLEdBQUUsRUFBRSxJQUFFSyxHQUFFO0FBQVEsT0FBR0wsRUFBQztBQUFFLFFBQUdjLEdBQUUsTUFBSWQsS0FBRSxHQUFFQSxLQUFFYyxHQUFFLFFBQU9kLEtBQUksQ0FBQWUsS0FBRUQsR0FBRWQsRUFBQyxHQUFFM0IsS0FBRTBDLEdBQUUsYUFBWTFDLEtBQUVBLEdBQUUwQyxHQUFFLE9BQU8sR0FBRSxRQUFNVixHQUFFLGtDQUFnQ0EsR0FBRSxrQ0FBZ0MsQ0FBQ1UsSUFBRTFDLEVBQUMsSUFBRWdDLEdBQUUsZ0NBQWdDO0FBQUEsTUFBS1U7QUFBQSxNQUN2aEIxQztBQUFBLElBQUM7QUFBRSxXQUFPLElBQUksR0FBR2dDLEVBQUM7QUFBQSxFQUFDO0FBQUUsMEJBQUEsU0FBZSxTQUFTTCxJQUFFSyxJQUFFVSxJQUFFO0FBQUMsUUFBRyxDQUFDLEdBQUdWLEVBQUMsRUFBRSxPQUFNLE1BQU1kLEdBQUUsR0FBRyxDQUFDO0FBQUUsV0FBTyxHQUFHLE1BQUtTLElBQUVLLElBQUUsT0FBR1UsRUFBQztBQUFBLEVBQUM7QUFBRSwwQkFBQSx5QkFBK0IsU0FBU2YsSUFBRTtBQUFDLFFBQUcsQ0FBQyxHQUFHQSxFQUFDLEVBQUUsT0FBTSxNQUFNVCxHQUFFLEVBQUUsQ0FBQztBQUFFLFdBQU9TLEdBQUUsdUJBQXFCLEdBQUcsV0FBVTtBQUFDLFNBQUcsTUFBSyxNQUFLQSxJQUFFLE9BQUcsV0FBVTtBQUFDLFFBQUFBLEdBQUUsc0JBQW9CO0FBQUssUUFBQUEsR0FBRSxFQUFFLElBQUU7QUFBQSxNQUFJLENBQUM7QUFBQSxJQUFDLENBQUMsR0FBRSxRQUFJO0FBQUEsRUFBRTtBQUFFLDBCQUErQiwwQkFBQztBQUMvVSwwQkFBQSxzQ0FBNEMsU0FBU0EsSUFBRUssSUFBRVUsSUFBRUQsSUFBRTtBQUFDLFFBQUcsQ0FBQyxHQUFHQyxFQUFDLEVBQUUsT0FBTSxNQUFNeEIsR0FBRSxHQUFHLENBQUM7QUFBRSxRQUFHLFFBQU1TLE1BQUcsV0FBU0EsR0FBRSxnQkFBZ0IsT0FBTSxNQUFNVCxHQUFFLEVBQUUsQ0FBQztBQUFFLFdBQU8sR0FBR1MsSUFBRUssSUFBRVUsSUFBRSxPQUFHRCxFQUFDO0FBQUEsRUFBQztBQUFFLDBCQUFBLFVBQWdCOzs7Ozs7O0FDL1Q3TCxXQUFTLFdBQVc7QUFFbEIsUUFDRSxPQUFPLG1DQUFtQyxlQUMxQyxPQUFPLCtCQUErQixhQUFhLFlBQ25EO0FBQ0E7QUFBQSxJQUFBO0FBWUUsUUFBQTtBQUVGLHFDQUErQixTQUFTLFFBQVE7QUFBQSxhQUN6QyxLQUFLO0FBR1osY0FBUSxNQUFNLEdBQUc7QUFBQSxJQUFBO0FBQUEsRUFFckI7QUFFMkM7QUFHaEMsYUFBQTtBQUNGZ0osYUFBQSxVQUFVbEksK0JBQTJDO0FBQUE7Ozs7Ozs7QUNoQzlELE1BQUlWLEtBQUlVLGdCQUFtQjtBQUNnQjtBQUN6Qyx3QkFBcUJWLEdBQUU7QUFDdkIseUJBQXNCQSxHQUFFO0FBQUE7Ozs7Ozs7Ozs7O0FDRTFCLElBQUk2SSxhQUFzQyxXQUFZO0FBQ2xEQSxlQUFXLE9BQU8sVUFBVSxTQUFTckssSUFBRztBQUNwQyxhQUFTcUYsSUFBRzdILEtBQUksR0FBR29DLEtBQUksVUFBVSxRQUFRcEMsS0FBSW9DLElBQUdwQyxNQUFLO0FBQ2pELE1BQUE2SCxLQUFJLFVBQVU3SCxFQUFDO0FBQ2YsZUFBU3FDLE1BQUt3RixHQUFHLEtBQUksT0FBTyxVQUFVLGVBQWUsS0FBS0EsSUFBR3hGLEVBQUM7QUFDMUQsUUFBQUcsR0FBRUgsRUFBQyxJQUFJd0YsR0FBRXhGLEVBQUM7QUFBQSxJQUMxQjtBQUNRLFdBQU9HO0FBQUEsRUFDVjtBQUNELFNBQU9xSyxXQUFTLE1BQU0sTUFBTSxTQUFTO0FBQ3pDO0FBQ0EsSUFBSSxTQUFrQyxTQUFVaEYsSUFBRzFHLElBQUc7QUFDbEQsTUFBSXFCLEtBQUksQ0FBRTtBQUNWLFdBQVNILE1BQUt3RixHQUFHLEtBQUksT0FBTyxVQUFVLGVBQWUsS0FBS0EsSUFBR3hGLEVBQUMsS0FBS2xCLEdBQUUsUUFBUWtCLEVBQUMsSUFBSTtBQUM5RSxJQUFBRyxHQUFFSCxFQUFDLElBQUl3RixHQUFFeEYsRUFBQztBQUNkLE1BQUl3RixNQUFLLFFBQVEsT0FBTyxPQUFPLDBCQUEwQjtBQUNyRCxhQUFTN0gsS0FBSSxHQUFHcUMsS0FBSSxPQUFPLHNCQUFzQndGLEVBQUMsR0FBRzdILEtBQUlxQyxHQUFFLFFBQVFyQyxNQUFLO0FBQ3BFLFVBQUltQixHQUFFLFFBQVFrQixHQUFFckMsRUFBQyxDQUFDLElBQUksS0FBSyxPQUFPLFVBQVUscUJBQXFCLEtBQUs2SCxJQUFHeEYsR0FBRXJDLEVBQUMsQ0FBQztBQUN6RSxRQUFBd0MsR0FBRUgsR0FBRXJDLEVBQUMsQ0FBQyxJQUFJNkgsR0FBRXhGLEdBQUVyQyxFQUFDLENBQUM7QUFBQSxJQUNoQztBQUNJLFNBQU93QztBQUNYO0FBTUEsSUFBSSxhQUFhLE9BQU8sYUFBYTtBQUNyQyxJQUFJLGVBQWUsQ0FBRTtBQUNkLElBQUksbUJBQW1Cc0ssUUFBTSxjQUFjLFlBQVk7QUFDOUQsSUFBSSxxQkFBcUJBLFFBQU0sY0FBYyxJQUFJO0FBQ2pELElBQUksaUJBQWlCLENBQUU7QUFDdkIsSUFBSSxrQkFBa0IsQ0FBRTtBQUN4QixJQUFJLFVBQVU7QUFDZCxJQUFJLFdBQVcsV0FBWTtBQUN2QixRQUFNLElBQUksTUFBTSw4RUFBOEU7QUFDbEc7QUFDQSxJQUFJLFNBQVMsV0FBWTtBQUFFLFNBQU8saUJBQWlCO0FBQVk7QUFFeEQsSUFBSSxVQUFVLFNBQVUsT0FBTyxRQUFRO0FBQzFDLE1BQUksSUFBSSxJQUFJO0FBQ1osTUFBSSxVQUFVLFFBQVE7QUFBRSxZQUFRO0FBQUEsRUFBYTtBQUM3QyxVQUFRLE9BQU8sTUFBSTtBQUFBLElBQ2YsS0FBSyxtQkFBbUI7QUFDcEIsVUFBSSxLQUFLLE9BQU8sU0FBUyxVQUFVLEdBQUcsU0FBUyxPQUFPLEdBQUc7QUFDekQsYUFBT0QsV0FBU0EsV0FBUyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUEsR0FBSSxHQUFHLE9BQU8sSUFBSUEsV0FBU0EsV0FBUyxDQUFBLEdBQUksTUFBTSxPQUFPLENBQUMsR0FBRztBQUFBLFFBQUUsSUFBSTtBQUFBLFFBQVM7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQUkvRyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsT0FBTztBQUFBLFFBQUcsY0FBYyxDQUFDLGdCQUFnQixPQUFPO0FBQUEsT0FBRyxHQUFHLEdBQUk7QUFBQSxJQUNyRztBQUFBLElBQ1EsS0FBSyxtQkFBbUI7QUFDcEIsVUFBSSxVQUFVLE9BQU8sUUFBUTtBQUM3QixVQUFJLENBQUMsTUFBTSxPQUFPO0FBQ2QsZUFBTztBQUNYLGFBQU9BLFdBQVNBLFdBQVMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFBLEdBQUksR0FBRyxPQUFPLElBQUlBLFdBQVNBLFdBQVMsQ0FBQSxHQUFJLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxTQUFTLE9BQU8sR0FBRyxHQUFJO0FBQUEsSUFDekk7QUFBQSxJQUNRLEtBQUsscUJBQXFCO0FBQ3RCLFVBQUksVUFBVSxPQUFPLFFBQVE7QUFDN0IsVUFBSSxXQUFXQSxXQUFTLENBQUUsR0FBRSxLQUFLO0FBQ2pDLGFBQU8sU0FBUyxPQUFPO0FBQ3ZCLGFBQU87QUFBQSxJQUNuQjtBQUFBLElBQ1EsS0FBSyx3QkFBd0I7QUFDekIsVUFBSUUsTUFBSyxPQUFPLFNBQVMsVUFBVUEsSUFBRyxTQUFTLFFBQVFBLElBQUc7QUFDMUQsYUFBT0YsV0FBU0EsV0FBUyxDQUFFLEdBQUUsS0FBSyxJQUFJLEtBQUssQ0FBRSxHQUFFLEdBQUcsT0FBTyxJQUFJQSxXQUFTQSxXQUFTLENBQUEsR0FBSSxNQUFNLE9BQU8sQ0FBQyxHQUFHLEtBQUssR0FBRyxHQUFJO0FBQUEsSUFDNUg7QUFBQSxJQUNRO0FBQ0ksYUFBTztBQUFBLEVBQ25CO0FBQ0E7QUFFQSxTQUFTLFNBQVMsU0FBUztBQUN2QixNQUFJO0FBQ0osVUFBUSxLQUFLLGVBQWUsT0FBTyxPQUFPLFFBQVEsT0FBTyxTQUFTLFNBQVMsR0FBRztBQUNsRjtBQUVBLFNBQVMsVUFBVSxTQUFTLE1BQU07QUFDOUIsU0FBTztBQUFBLElBQ0gsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLE1BQ0w7QUFBQSxNQUNBO0FBQUEsSUFDSDtBQUFBLEVBQ0o7QUFDTDtBQUVBLFNBQVMsY0FBYyxTQUFTLE9BQU87QUFDbkMsU0FBTztBQUFBLElBQ0gsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLE1BQ0w7QUFBQSxNQUNBO0FBQUEsSUFDSDtBQUFBLEVBQ0o7QUFDTDtBQUVBLFNBQVMsVUFBVSxTQUFTO0FBQ3hCLFNBQU87QUFBQSxJQUNILE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxNQUNMO0FBQUEsSUFDSDtBQUFBLEVBQ0o7QUFDTDtBQUVBLFNBQVMsWUFBWSxTQUFTO0FBQzFCLFNBQU87QUFBQSxJQUNILE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxNQUNMO0FBQUEsSUFDSDtBQUFBLEVBQ0o7QUFDTDtBQUNBLElBQUksaUJBQWlCLENBQUU7QUFDdkIsSUFBSSxxQkFBcUIsQ0FBRTtBQUMzQixJQUFJLGFBQWEsU0FBVSxPQUFPO0FBQzlCLE1BQUksT0FBTyxVQUFVO0FBQ2pCLFdBQU87QUFDWCxNQUFJLENBQUMsTUFBTSxVQUFVLEdBQUc7QUFDcEIsVUFBTSxVQUFVLElBQUksT0FBUTtBQUFBLEVBQ3BDO0FBQ0ksU0FBTyxNQUFNLFVBQVU7QUFDM0I7QUFFTyxTQUFTLEtBQUssT0FBTyxNQUFNO0FBQzlCLE1BQUksVUFBVSxXQUFXLEtBQUs7QUFDOUIsTUFBSSxPQUFPLFVBQVUsWUFBWSxDQUFDLGVBQWUsT0FBTyxHQUFHO0FBQ3ZELGFBQVMsU0FBUyxLQUFLO0FBQUEsRUFDL0I7QUFDSSxXQUFTLFVBQVUsU0FBUyxJQUFJLENBQUM7QUFDakMsTUFBSSxDQUFDLGVBQWUsT0FBTyxHQUFHO0FBRTFCLFFBQUk7QUFFSixRQUFJO0FBQ0osUUFBSSxVQUFVLElBQUksUUFBUSxTQUFVLFNBQVMsUUFBUTtBQUNqRCxxQkFBZTtBQUNmLG9CQUFjO0FBQUEsSUFDMUIsQ0FBUztBQUNELG1CQUFlLE9BQU8sSUFBSTtBQUFBLE1BQ3RCLFNBQVM7QUFBQSxNQUNULFFBQVE7QUFBQSxNQUNSO0FBQUEsSUFDSDtBQUFBLEVBQ1Q7QUFDSSxTQUFPLGVBQWUsT0FBTyxFQUFFO0FBQ25DO0FBRU8sU0FBU0csT0FBSyxPQUFPO0FBQ3hCLE1BQUksVUFBVSxXQUFXLEtBQUs7QUFDOUIsV0FBUyxVQUFVLE9BQU8sQ0FBQztBQUUzQixTQUFPLGVBQWUsT0FBTztBQUM3QixNQUFJLENBQUMsbUJBQW1CLE9BQU8sR0FBRztBQUU5QixRQUFJO0FBRUosUUFBSTtBQUNKLFFBQUksVUFBVSxJQUFJLFFBQVEsU0FBVSxTQUFTLFFBQVE7QUFDakQscUJBQWU7QUFDZixvQkFBYztBQUFBLElBQzFCLENBQVM7QUFDRCx1QkFBbUIsT0FBTyxJQUFJO0FBQUEsTUFDMUIsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLE1BQ1I7QUFBQSxJQUNIO0FBQUEsRUFDVDtBQUNJLFNBQU8sbUJBQW1CLE9BQU8sRUFBRTtBQUN2QztBQUNPLElBQUksU0FBUyxTQUFVLE9BQU87QUFDakMsTUFBSSxVQUFVLFdBQVcsS0FBSztBQUM5QixXQUFTLFlBQVksT0FBTyxDQUFDO0FBQzdCLFNBQU8sZUFBZSxPQUFPO0FBQzdCLFNBQU8sbUJBQW1CLE9BQU87QUFDckM7QUFDQSxJQUFJLFdBQVcsU0FBVSxTQUFTLE9BQU87QUFDckMsV0FBUyxjQUFjLFNBQVMsS0FBSyxDQUFDO0FBQzFDO0FBRU8sU0FBUyxTQUFTLE9BQU8sTUFBTTtBQUNsQyxNQUFJLFNBQVNDLGFBQVUsV0FBQyxnQkFBZ0I7QUFDeEMsTUFBSSxpQkFBaUJBLGFBQVUsV0FBQyxrQkFBa0I7QUFDbEQsTUFBSSxVQUFVO0FBQ2QsTUFBSSxpQkFBaUIsU0FBUyxPQUFPLFVBQVU7QUFDL0MsTUFBSSxDQUFDLE9BQU87QUFDUixjQUFVO0FBQUEsRUFDbEIsT0FDUztBQUNELGNBQVUsV0FBVyxLQUFLO0FBQUEsRUFDbEM7QUFFSSxNQUFJLENBQUM7QUFDRCxVQUFNLElBQUksTUFBTSwwQ0FBMEM7QUFDOUQsTUFBSSxNQUFNO0FBRVZDLGVBQUFBLFVBQVUsV0FBWTtBQUNsQixRQUFJLGtCQUFrQixDQUFDLGVBQWUsR0FBRyxHQUFHO0FBQ3hDLGVBQVMsS0FBSyxPQUFPLElBQUk7QUFBQSxJQUNyQztBQUFBLEVBQ0ssR0FBRSxDQUFDLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxDQUFDO0FBQ3JDLE1BQUksWUFBWSxPQUFPLEdBQUc7QUFDMUIsTUFBSSxlQUFlQyxhQUFBQSxZQUFZLFNBQVVDLE9BQU07QUFBRSxXQUFPLEtBQUssS0FBS0EsS0FBSTtBQUFBLEtBQU0sQ0FBQyxHQUFHLENBQUM7QUFDakYsTUFBSSxlQUFlRCx5QkFBWSxXQUFZO0FBQUUsV0FBT0gsT0FBSyxHQUFHO0FBQUEsRUFBRSxHQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3ZFLE1BQUksaUJBQWlCRyx5QkFBWSxXQUFZO0FBQUUsV0FBTyxPQUFPLEdBQUc7QUFBQSxFQUFFLEdBQUksQ0FBQyxHQUFHLENBQUM7QUFDM0UsTUFBSSxrQkFBa0JBLHlCQUFZLFNBQVVDLE9BQU07QUFDOUMsUUFBSTtBQUNKLEtBQUMsS0FBSyxlQUFlLEdBQUcsT0FBTyxRQUFRLE9BQU8sU0FBUyxTQUFTLEdBQUcsUUFBUUEsS0FBSTtBQUMvRSxXQUFPLGVBQWUsR0FBRztBQUFBLEVBQ2pDLEdBQU8sQ0FBQyxHQUFHLENBQUM7QUFDUixNQUFJLGlCQUFpQkQseUJBQVksU0FBVUMsT0FBTTtBQUM3QyxRQUFJO0FBQ0osS0FBQyxLQUFLLGVBQWUsR0FBRyxPQUFPLFFBQVEsT0FBTyxTQUFTLFNBQVMsR0FBRyxPQUFPQSxLQUFJO0FBQzlFLFdBQU8sZUFBZSxHQUFHO0FBQUEsRUFDakMsR0FBTyxDQUFDLEdBQUcsQ0FBQztBQUNSLE1BQUksY0FBY0QseUJBQVksU0FBVUMsT0FBTTtBQUMxQyxRQUFJO0FBQ0osS0FBQyxLQUFLLG1CQUFtQixHQUFHLE9BQU8sUUFBUSxPQUFPLFNBQVMsU0FBUyxHQUFHLFFBQVFBLEtBQUk7QUFDbkYsV0FBTyxtQkFBbUIsR0FBRztBQUFBLEVBQ3JDLEdBQU8sQ0FBQyxHQUFHLENBQUM7QUFDUixTQUFPQyxhQUFBQSxRQUFRLFdBQVk7QUFBRSxXQUFRO0FBQUEsTUFDakMsSUFBSTtBQUFBLE1BQ0osTUFBTSxjQUFjLFFBQVEsY0FBYyxTQUFTLFNBQVMsVUFBVTtBQUFBLE1BQ3RFLFNBQVMsQ0FBQyxFQUFFLGNBQWMsUUFBUSxjQUFjLFNBQVMsU0FBUyxVQUFVO0FBQUEsTUFDNUUsYUFBYSxDQUFDLEVBQUUsY0FBYyxRQUFRLGNBQWMsU0FBUyxTQUFTLFVBQVU7QUFBQSxNQUNoRixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsTUFDUixTQUFTO0FBQUEsTUFDVCxRQUFRO0FBQUEsTUFDUjtBQUFBLElBQ0g7QUFBQSxLQUFNO0FBQUEsSUFDSDtBQUFBLElBQ0EsY0FBYyxRQUFRLGNBQWMsU0FBUyxTQUFTLFVBQVU7QUFBQSxJQUNoRSxjQUFjLFFBQVEsY0FBYyxTQUFTLFNBQVMsVUFBVTtBQUFBLElBQ2hFLGNBQWMsUUFBUSxjQUFjLFNBQVMsU0FBUyxVQUFVO0FBQUEsSUFDaEU7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ1IsQ0FBSztBQUNMO0FBQ08sSUFBSSxTQUFTLFNBQVUsTUFBTTtBQUNoQyxTQUFPLFNBQVUsSUFBSTtBQUNqQixRQUFJO0FBQ0osUUFBSSxpQkFBaUIsR0FBRyxnQkFBZ0IsY0FBYyxHQUFHLGFBQWEsS0FBSyxHQUFHLElBQUksUUFBUSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsZUFBZSxJQUFJLENBQUM7QUFDNUksUUFBSSxLQUFLLFNBQVMsRUFBRSxHQUFHLE9BQU8sR0FBRyxNQUFNQyxRQUFPLEdBQUc7QUFFakQsUUFBSSxTQUFTTCxhQUFVLFdBQUMsZ0JBQWdCO0FBQ3hDLFFBQUksY0FBYyxDQUFDLENBQUMsT0FBTyxFQUFFO0FBQzdCQyxpQkFBQUEsVUFBVSxXQUFZO0FBRWxCLFVBQUksZ0JBQWdCO0FBQ2hCLFFBQUFJLE1BQU07QUFBQSxNQUN0QjtBQUNZLHNCQUFnQixFQUFFLElBQUk7QUFDdEIsYUFBTyxXQUFZO0FBQ2YsZUFBTyxnQkFBZ0IsRUFBRTtBQUFBLE1BQzVCO0FBQUEsSUFDSixHQUFFLENBQUMsSUFBSUEsT0FBTSxjQUFjLENBQUM7QUFDN0JKLGlCQUFBQSxVQUFVLFdBQVk7QUFDbEIsVUFBSTtBQUNBLGlCQUFTLElBQUksRUFBRSxhQUFhLEtBQUksQ0FBRTtBQUFBLElBQ2xELEdBQVcsQ0FBQyxJQUFJLFdBQVcsQ0FBQztBQUNwQixRQUFJLGdCQUFnQixLQUFLLE9BQU8sRUFBRSxPQUFPLFFBQVEsT0FBTyxTQUFTLFNBQVMsR0FBRztBQUk3RUEsaUJBQUFBLFVBQVUsV0FBWTtBQUNsQixVQUFJLGNBQWM7QUFFZCxRQUFBSSxNQUFLLElBQUk7QUFBQSxNQUN6QjtBQUFBLElBQ1MsR0FBRSxDQUFDLGNBQWMsTUFBTUEsS0FBSSxDQUFDO0FBQzdCLFFBQUksQ0FBQztBQUNELGFBQU87QUFDWCxXQUFRUixRQUFNO0FBQUEsTUFBYyxtQkFBbUI7QUFBQSxNQUFVLEVBQUUsT0FBTyxHQUFJO0FBQUEsTUFDbEVBLFFBQU0sY0FBYyxNQUFNRCxXQUFTLENBQUEsR0FBSSxPQUFPLElBQUksQ0FBQztBQUFBLElBQUM7QUFBQSxFQUMzRDtBQUNMO0FBRU8sSUFBSSxXQUFXLFNBQVUsSUFBSSxNQUFNLE9BQU87QUFDN0MsTUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHO0FBQ3JCLG1CQUFlLEVBQUUsSUFBSSxFQUFFLE1BQVksTUFBYztBQUFBLEVBQ3pELE9BQ1M7QUFDRCxtQkFBZSxFQUFFLEVBQUUsUUFBUTtBQUFBLEVBQ25DO0FBQ0E7QUFLTyxJQUFJLGFBQWEsU0FBVSxJQUFJO0FBQ2xDLFNBQU8sZUFBZSxFQUFFO0FBQzVCO0FBR0EsSUFBSSx1QkFBdUIsV0FBWTtBQUNuQyxNQUFJLFNBQVNJLGFBQVUsV0FBQyxnQkFBZ0I7QUFDeEMsTUFBSSxrQkFBa0IsT0FBTyxLQUFLLE1BQU0sRUFBRSxPQUFPLFNBQVUsSUFBSTtBQUFFLFdBQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRTtBQUFBLEVBQUUsQ0FBRTtBQUN2RixrQkFBZ0IsUUFBUSxTQUFVLElBQUk7QUFDbEMsUUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsR0FBRztBQUM3QyxjQUFRLEtBQUssNEJBQTRCLEtBQUssbUVBQW1FO0FBQ2pIO0FBQUEsSUFDWjtBQUFBLEVBQ0EsQ0FBSztBQUNELE1BQUksV0FBVyxnQkFDVixPQUFPLFNBQVUsSUFBSTtBQUFFLFdBQU8sZUFBZSxFQUFFO0FBQUEsRUFBSSxDQUFBLEVBQ25ELElBQUksU0FBVSxJQUFJO0FBQUUsV0FBUUosV0FBUyxFQUFFLEdBQU0sR0FBSSxlQUFlLEVBQUUsQ0FBQztBQUFBLEVBQUcsQ0FBRTtBQUM3RSxTQUFRQyxRQUFNLGNBQWNBLFFBQU0sVUFBVSxNQUFNLFNBQVMsSUFBSSxTQUFVdEssSUFBRztBQUFFLFdBQVFzSyxRQUFNLGNBQWN0SyxHQUFFLE1BQU1xSyxXQUFTLEVBQUUsS0FBS3JLLEdBQUUsSUFBSSxJQUFJQSxHQUFFLEdBQUUsR0FBSUEsR0FBRSxLQUFLLENBQUM7QUFBQSxFQUFLLENBQUEsQ0FBQztBQUN0SztBQUNBLElBQUksdUJBQXVCLFNBQVUsSUFBSTtBQUNyQyxNQUFJLFdBQVcsR0FBRztBQUNsQixNQUFJLE1BQU0rSyxhQUFBQSxXQUFXLFNBQVMsWUFBWTtBQUMxQyxNQUFJLFNBQVMsSUFBSSxDQUFDO0FBQ2xCLGFBQVcsSUFBSSxDQUFDO0FBQ2hCLFNBQVFULFFBQU07QUFBQSxJQUFjLGlCQUFpQjtBQUFBLElBQVUsRUFBRSxPQUFPLE9BQVE7QUFBQSxJQUNwRTtBQUFBLElBQ0FBLFFBQU0sY0FBYyxzQkFBc0IsSUFBSTtBQUFBLEVBQUM7QUFDdkQ7QUFDTyxJQUFJLFdBQVcsU0FBVSxJQUFJO0FBQ2hDLE1BQUksV0FBVyxHQUFHLFVBQVUsZ0JBQWdCLEdBQUcsVUFBVSxjQUFjLEdBQUc7QUFDMUUsTUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWE7QUFDaEMsV0FBT0EsUUFBTSxjQUFjLHNCQUFzQixNQUFNLFFBQVE7QUFBQSxFQUN2RTtBQUNJLGFBQVc7QUFDWCxTQUFRQSxRQUFNO0FBQUEsSUFBYyxpQkFBaUI7QUFBQSxJQUFVLEVBQUUsT0FBTyxZQUFhO0FBQUEsSUFDekU7QUFBQSxJQUNBQSxRQUFNLGNBQWMsc0JBQXNCLElBQUk7QUFBQSxFQUFDO0FBQ3ZEO0FBT08sSUFBSSxXQUFXLFNBQVUsSUFBSTtBQUNoQyxNQUFJLEtBQUssR0FBRyxJQUFJLFlBQVksR0FBRztBQUMvQkksZUFBQUEsVUFBVSxXQUFZO0FBQ2xCLGFBQVMsSUFBSSxTQUFTO0FBQ3RCLFdBQU8sV0FBWTtBQUNmLGlCQUFXLEVBQUU7QUFBQSxJQUNoQjtBQUFBLEVBQ1QsR0FBTyxDQUFDLElBQUksU0FBUyxDQUFDO0FBQ2xCLFNBQU87QUFDWDtBQVlPLElBQUksY0FBYyxTQUFVLElBQUk7QUFDbkMsTUFBSTtBQUNKLE1BQUksUUFBUSxHQUFHLE9BQU8sS0FBSyxHQUFHLFNBQVMsVUFBVSxPQUFPLFNBQVMsQ0FBRSxJQUFHLElBQUksWUFBWSxPQUFPLElBQUksQ0FBQyxTQUFTLFNBQVMsQ0FBQztBQUNySCxNQUFJLE1BQU1HLGFBQUFBLFFBQVEsV0FBWTtBQUFFLFdBQU8sT0FBUTtBQUFBLEVBQUcsR0FBRSxFQUFFO0FBQ3RELE1BQUksWUFBWSxPQUFPLFVBQVUsWUFBWSxLQUFLLGVBQWUsS0FBSyxPQUFPLFFBQVEsT0FBTyxTQUFTLFNBQVMsR0FBRyxPQUFPO0FBQ3hILE1BQUksQ0FBQyxTQUFTO0FBQ1YsVUFBTSxJQUFJLE1BQU0sNENBQTRDO0FBQUEsRUFDcEU7QUFDSSxNQUFJLENBQUMsV0FBVztBQUNaLFVBQU0sSUFBSSxNQUFNLDRCQUE0QixRQUFRLDRCQUE0QjtBQUFBLEVBQ3hGO0FBQ0ksVUFBUSxPQUFPRix5QkFBWSxTQUFVLE1BQU07QUFBRSxXQUFPLEtBQUssS0FBSyxJQUFJO0FBQUEsS0FBTSxDQUFDLEdBQUcsQ0FBQztBQUM3RSxVQUFRLE9BQU9BLGFBQVcsWUFBQyxXQUFZO0FBQUUsV0FBT0gsT0FBSyxHQUFHO0FBQUEsRUFBRSxHQUFJLENBQUMsR0FBRyxDQUFDO0FBQ25FLFNBQU9GLFFBQU0sY0FBYyxXQUFXRCxXQUFTLEVBQUUsSUFBSSxPQUFPLFNBQVMsQ0FBQztBQUMxRTtBQUNPLElBQUksWUFBWSxTQUFVLE9BQU87QUFDcEMsU0FBTztBQUFBLElBQ0gsU0FBUyxNQUFNO0FBQUEsSUFDZixNQUFNLFdBQVk7QUFBRSxhQUFPLE1BQU0sS0FBTTtBQUFBLElBQUc7QUFBQSxJQUMxQyxVQUFVLFdBQVk7QUFBRSxhQUFPLE1BQU0sS0FBTTtBQUFBLElBQUc7QUFBQSxJQUM5QyxZQUFZLFdBQVk7QUFFcEIsWUFBTSxZQUFhO0FBQ25CLFVBQUksQ0FBQyxNQUFNO0FBQ1AsY0FBTSxPQUFRO0FBQUEsSUFDckI7QUFBQSxFQUNKO0FBQ0w7QUFVTyxJQUFJLGFBQWEsU0FBVSxPQUFPO0FBQ3JDLFNBQU87QUFBQSxJQUNILFNBQVMsTUFBTTtBQUFBLElBQ2YsU0FBUyxXQUFZO0FBQUUsYUFBTyxNQUFNLEtBQU07QUFBQSxJQUFHO0FBQUEsSUFDN0Msb0JBQW9CLFNBQVVuSyxJQUFHO0FBQzdCLFVBQUksQ0FBQ0EsSUFBRztBQUNKLGNBQU0sWUFBYTtBQUFBLE1BQ25DO0FBQ1ksT0FBQ0EsTUFBSyxDQUFDLE1BQU0sZUFBZSxNQUFNLE9BQVE7QUFBQSxJQUM3QztBQUFBLEVBQ0o7QUFDTDtBQVNPLElBQUksWUFBWSxTQUFVLE9BQU87QUFDcEMsU0FBTztBQUFBLElBQ0gsTUFBTSxNQUFNO0FBQUEsSUFDWixTQUFTLFdBQVk7QUFBRSxhQUFPLE1BQU0sS0FBTTtBQUFBLElBQUc7QUFBQSxJQUM3QyxVQUFVLFdBQVk7QUFDbEIsWUFBTSxZQUFhO0FBQ25CLE9BQUMsTUFBTSxlQUFlLE1BQU0sT0FBUTtBQUFBLElBQ3ZDO0FBQUEsRUFDSjtBQUNMO0FBYU8sSUFBSSxrQkFBa0IsU0FBVSxPQUFPO0FBQzFDLFNBQU87QUFBQSxJQUNILE1BQU0sTUFBTTtBQUFBLElBQ1osUUFBUSxXQUFZO0FBQUUsYUFBTyxNQUFNLEtBQU07QUFBQSxJQUFHO0FBQUEsSUFDNUMsVUFBVSxXQUFZO0FBQ2xCLFlBQU0sWUFBYTtBQUNuQixPQUFDLE1BQU0sZUFBZSxNQUFNLE9BQVE7QUFBQSxJQUN2QztBQUFBLEVBQ0o7QUFDTDtBQUNBLElBQUksWUFBWTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQSxNQUFNc0s7QUFBQUEsRUFDTjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNKO0FDemRPLE1BQU0sS0FBSztBQUFBLEVBQVg7QUFDSCw4QkFBYTtBQUNiLGdDQUFlO0FBQ2YsZ0NBQWU7QUFDZix3Q0FBdUI7QUFDdkIsd0NBQXVCO0FBQ3ZCLDJDQUEwQjtBQUMxQiwyQ0FBMEI7QUFBQTtBQUFBLEVBRTFCLGNBQWMsTUFBVztBQUNoQixTQUFBLEtBQUssS0FBSyxLQUFLO0FBQ2YsU0FBQSxPQUFPLEtBQUssS0FBSztBQUNqQixTQUFBLE9BQU8sS0FBSyxLQUFLO0FBQ2pCLFNBQUEsZUFBZSxLQUFLLEtBQUs7QUFDekIsU0FBQSxlQUFlLEtBQUssS0FBSztBQUN6QixTQUFBLGtCQUFrQixLQUFLLEtBQUs7QUFDNUIsU0FBQSxrQkFBa0IsS0FBSyxLQUFLO0FBQUEsRUFBQTtBQUV6Qzs7Ozs7OztBQ1ZBLE1BQUksdUJBQXVCO0FBRTNCLDJCQUFpQjs7Ozs7Ozs7QUNGakIsTUFBSSx1QkFBNER0SSw0Q0FBQTtBQUVoRSxXQUFTLGdCQUFnQjtBQUFBLEVBQUE7QUFDekIsV0FBUyx5QkFBeUI7QUFBQSxFQUFBO0FBQ2xDLHlCQUF1QixvQkFBb0I7QUFFM0MsNkJBQWlCLFdBQVc7QUFDMUIsYUFBUyxLQUFLLE9BQU8sVUFBVSxlQUFlLFVBQVUsY0FBYyxRQUFRO0FBQzVFLFVBQUksV0FBVyxzQkFBc0I7QUFFbkM7QUFBQSxNQUNOO0FBQ0ksVUFBSSxNQUFNLElBQUk7QUFBQSxRQUNaO0FBQUEsTUFHRDtBQUNELFVBQUksT0FBTztBQUNYLFlBQU07QUFBQTtBQUVSLFNBQUssYUFBYTtBQUNsQixhQUFTLFVBQVU7QUFDakIsYUFBTztBQUFBLElBRVg7QUFFRSxRQUFJLGlCQUFpQjtBQUFBLE1BQ25CLE9BQU87QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxNQUNSLFFBQVE7QUFBQSxNQUNSLFFBQVE7QUFBQSxNQUNSLFFBQVE7QUFBQSxNQUVSLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxNQUNULGFBQWE7QUFBQSxNQUNiLFlBQVk7QUFBQSxNQUNaLE1BQU07QUFBQSxNQUNOLFVBQVU7QUFBQSxNQUNWLE9BQU87QUFBQSxNQUNQLFdBQVc7QUFBQSxNQUNYLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxNQUVQLGdCQUFnQjtBQUFBLE1BQ2hCLG1CQUFtQjtBQUFBLElBQ3BCO0FBRUQsbUJBQWUsWUFBWTtBQUUzQixXQUFPO0FBQUEsRUFDUjs7Ozs7OztBQ2xETTtBQUdFOEksY0FBQSxVQUFVOUksa0RBQXNDO0FBQUEsRUFDekQ7Ozs7QUNsQkEsU0FBUytJLFVBQVFwRixJQUFHO0FBQ2xCO0FBRUEsU0FBT29GLFlBQVUsY0FBYyxPQUFPLFVBQVUsWUFBWSxPQUFPLE9BQU8sV0FBVyxTQUFVcEYsSUFBRztBQUNoRyxXQUFPLE9BQU9BO0FBQUEsRUFDZixJQUFHLFNBQVVBLElBQUc7QUFDZixXQUFPQSxNQUFLLGNBQWMsT0FBTyxVQUFVQSxHQUFFLGdCQUFnQixVQUFVQSxPQUFNLE9BQU8sWUFBWSxXQUFXLE9BQU9BO0FBQUEsRUFDdEgsR0FBS29GLFVBQVFwRixFQUFDO0FBQ2Q7QUNQQSxTQUFTcUYsY0FBWWxMLElBQUdELElBQUc7QUFDekIsTUFBSSxZQUFZa0wsVUFBUWpMLEVBQUMsS0FBSyxDQUFDQSxHQUFHLFFBQU9BO0FBQ3pDLE1BQUlyQixLQUFJcUIsR0FBRSxPQUFPLFdBQVc7QUFDNUIsTUFBSSxXQUFXckIsSUFBRztBQUNoQixRQUFJbkIsS0FBSW1CLEdBQUUsS0FBS3FCLElBQUdELE1BQUssU0FBUztBQUNoQyxRQUFJLFlBQVlrTCxVQUFRek4sRUFBQyxFQUFHLFFBQU9BO0FBQ25DLFVBQU0sSUFBSSxVQUFVLDhDQUE4QztBQUFBLEVBQ3RFO0FBQ0UsVUFBUSxhQUFhdUMsS0FBSSxTQUFTLFFBQVFDLEVBQUM7QUFDN0M7QUNSQSxTQUFTbUwsZ0JBQWNuTCxJQUFHO0FBQ3hCLE1BQUl4QyxLQUFJME4sY0FBWWxMLElBQUcsUUFBUTtBQUMvQixTQUFPLFlBQVlpTCxVQUFRek4sRUFBQyxJQUFJQSxLQUFJQSxLQUFJO0FBQzFDO0FDSkEsU0FBUzROLGtCQUFnQnpNLElBQUdvQixJQUFHQyxJQUFHO0FBQ2hDLFVBQVFELEtBQUlvTCxnQkFBY3BMLEVBQUMsTUFBTXBCLEtBQUksT0FBTyxlQUFlQSxJQUFHb0IsSUFBRztBQUFBLElBQy9ELE9BQU9DO0FBQUEsSUFDUCxZQUFZO0FBQUEsSUFDWixjQUFjO0FBQUEsSUFDZCxVQUFVO0FBQUEsRUFDWCxDQUFBLElBQUlyQixHQUFFb0IsRUFBQyxJQUFJQyxJQUFHckI7QUFDakI7QUNQQSxTQUFTaEIsVUFBUWdCLElBQUdvQixJQUFHO0FBQ3JCLE1BQUlDLEtBQUksT0FBTyxLQUFLckIsRUFBQztBQUNyQixNQUFJLE9BQU8sdUJBQXVCO0FBQ2hDLFFBQUlrSCxLQUFJLE9BQU8sc0JBQXNCbEgsRUFBQztBQUN0QyxJQUFBb0IsT0FBTThGLEtBQUlBLEdBQUUsT0FBTyxTQUFVOUYsSUFBRztBQUM5QixhQUFPLE9BQU8seUJBQXlCcEIsSUFBR29CLEVBQUMsRUFBRTtBQUFBLElBQ25ELENBQUssSUFBSUMsR0FBRSxLQUFLLE1BQU1BLElBQUc2RixFQUFDO0FBQUEsRUFDMUI7QUFDRSxTQUFPN0Y7QUFDVDtBQUNBLFNBQVMsZUFBZXJCLElBQUc7QUFDekIsV0FBU29CLEtBQUksR0FBR0EsS0FBSSxVQUFVLFFBQVFBLE1BQUs7QUFDekMsUUFBSUMsS0FBSSxRQUFRLFVBQVVELEVBQUMsSUFBSSxVQUFVQSxFQUFDLElBQUksQ0FBRTtBQUNoRCxJQUFBQSxLQUFJLElBQUlwQyxVQUFRLE9BQU9xQyxFQUFDLEdBQUcsSUFBRSxFQUFFLFFBQVEsU0FBVUQsSUFBRztBQUNsRHNMLHdCQUFlMU0sSUFBR29CLElBQUdDLEdBQUVELEVBQUMsQ0FBQztBQUFBLElBQy9CLENBQUssSUFBSSxPQUFPLDRCQUE0QixPQUFPLGlCQUFpQnBCLElBQUcsT0FBTywwQkFBMEJxQixFQUFDLENBQUMsSUFBSXJDLFVBQVEsT0FBT3FDLEVBQUMsQ0FBQyxFQUFFLFFBQVEsU0FBVUQsSUFBRztBQUNoSixhQUFPLGVBQWVwQixJQUFHb0IsSUFBRyxPQUFPLHlCQUF5QkMsSUFBR0QsRUFBQyxDQUFDO0FBQUEsSUFDdkUsQ0FBSztBQUFBLEVBQ0w7QUFDRSxTQUFPcEI7QUFDVDtBQ3JCQSxTQUFTLGdCQUFnQm9CLElBQUc7QUFDMUIsTUFBSSxNQUFNLFFBQVFBLEVBQUMsRUFBRyxRQUFPQTtBQUMvQjtBQ0ZBLFNBQVMsc0JBQXNCQSxJQUFHSixJQUFHO0FBQ25DLE1BQUlLLEtBQUksUUFBUUQsS0FBSSxPQUFPLGVBQWUsT0FBTyxVQUFVQSxHQUFFLE9BQU8sUUFBUSxLQUFLQSxHQUFFLFlBQVk7QUFDL0YsTUFBSSxRQUFRQyxJQUFHO0FBQ2IsUUFBSXJCLElBQ0ZpQixJQUNBcEMsSUFDQXlDLElBQ0FLLEtBQUksQ0FBRSxHQUNOckMsS0FBSSxNQUNKNEgsS0FBSTtBQUNOLFFBQUk7QUFDRixVQUFJckksTUFBS3dDLEtBQUlBLEdBQUUsS0FBS0QsRUFBQyxHQUFHLE1BQU0sTUFBTUosSUFBRztBQUNyQyxZQUFJLE9BQU9LLEVBQUMsTUFBTUEsR0FBRztBQUNyQixRQUFBL0IsS0FBSTtBQUFBLE1BQ1osTUFBYSxRQUFPLEVBQUVBLE1BQUtVLEtBQUluQixHQUFFLEtBQUt3QyxFQUFDLEdBQUcsVUFBVU0sR0FBRSxLQUFLM0IsR0FBRSxLQUFLLEdBQUcyQixHQUFFLFdBQVdYLEtBQUkxQixLQUFJLEtBQUc7QUFBQSxJQUN4RixTQUFROEIsSUFBRztBQUNWLE1BQUE4RixLQUFJLE1BQUlqRyxLQUFJRztBQUFBLElBQ2xCLFVBQWM7QUFDUixVQUFJO0FBQ0YsWUFBSSxDQUFDOUIsTUFBSyxRQUFRK0IsR0FBRSxRQUFRLE1BQU1DLEtBQUlELEdBQUUsUUFBUSxFQUFDLEdBQUksT0FBT0MsRUFBQyxNQUFNQSxJQUFJO0FBQUEsTUFDL0UsVUFBZ0I7QUFDUixZQUFJNEYsR0FBRyxPQUFNakc7QUFBQSxNQUNyQjtBQUFBLElBQ0E7QUFDSSxXQUFPVTtBQUFBLEVBQ1g7QUFDQTtBQzFCQSxTQUFTLGtCQUFrQlAsSUFBR08sSUFBRztBQUMvQixHQUFDLFFBQVFBLE1BQUtBLEtBQUlQLEdBQUUsWUFBWU8sS0FBSVAsR0FBRTtBQUN0QyxXQUFTcEIsS0FBSSxHQUFHaUIsS0FBSSxNQUFNVSxFQUFDLEdBQUczQixLQUFJMkIsSUFBRzNCLEtBQUssQ0FBQWlCLEdBQUVqQixFQUFDLElBQUlvQixHQUFFcEIsRUFBQztBQUNwRCxTQUFPaUI7QUFDVDtBQ0hBLFNBQVMsNEJBQTRCRyxJQUFHTyxJQUFHO0FBQ3pDLE1BQUlQLElBQUc7QUFDTCxRQUFJLFlBQVksT0FBT0EsR0FBRyxRQUFPdUwsa0JBQWlCdkwsSUFBR08sRUFBQztBQUN0RCxRQUFJTixLQUFJLEdBQUcsU0FBUyxLQUFLRCxFQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUU7QUFDdkMsV0FBTyxhQUFhQyxNQUFLRCxHQUFFLGdCQUFnQkMsS0FBSUQsR0FBRSxZQUFZLE9BQU8sVUFBVUMsTUFBSyxVQUFVQSxLQUFJLE1BQU0sS0FBS0QsRUFBQyxJQUFJLGdCQUFnQkMsTUFBSywyQ0FBMkMsS0FBS0EsRUFBQyxJQUFJc0wsa0JBQWlCdkwsSUFBR08sRUFBQyxJQUFJO0FBQUEsRUFDeE47QUFDQTtBQ1BBLFNBQVMsbUJBQW1CO0FBQzFCLFFBQU0sSUFBSSxVQUFVLDJJQUEySTtBQUNqSztBQ0VBLFNBQVMsZUFBZVAsSUFBR3BCLElBQUc7QUFDNUIsU0FBTzRNLGdCQUFleEwsRUFBQyxLQUFLeUwsc0JBQXFCekwsSUFBR3BCLEVBQUMsS0FBSzhNLDRCQUEyQjFMLElBQUdwQixFQUFDLEtBQUsrTSxpQkFBaUI7QUFDakg7QUNOQSxTQUFTQyxnQ0FBOEI1TCxJQUFHcEIsSUFBRztBQUMzQyxNQUFJLFFBQVFvQixHQUFHLFFBQU8sQ0FBRTtBQUN4QixNQUFJQyxLQUFJLENBQUU7QUFDVixXQUFTSixNQUFLRyxHQUFHLEtBQUksQ0FBQSxFQUFHLGVBQWUsS0FBS0EsSUFBR0gsRUFBQyxHQUFHO0FBQ2pELFFBQUlqQixHQUFFLFNBQVNpQixFQUFDLEVBQUc7QUFDbkIsSUFBQUksR0FBRUosRUFBQyxJQUFJRyxHQUFFSCxFQUFDO0FBQUEsRUFDZDtBQUNFLFNBQU9JO0FBQ1Q7QUNQQSxTQUFTNEwsMkJBQXlCak4sSUFBR3FCLElBQUc7QUFDdEMsTUFBSSxRQUFRckIsR0FBRyxRQUFPLENBQUU7QUFDeEIsTUFBSWtILElBQ0Y5RixJQUNBdkMsS0FBSXFPLGdDQUE2QmxOLElBQUdxQixFQUFDO0FBQ3ZDLE1BQUksT0FBTyx1QkFBdUI7QUFDaEMsUUFBSXFGLEtBQUksT0FBTyxzQkFBc0IxRyxFQUFDO0FBQ3RDLFNBQUtvQixLQUFJLEdBQUdBLEtBQUlzRixHQUFFLFFBQVF0RixLQUFLLENBQUE4RixLQUFJUixHQUFFdEYsRUFBQyxHQUFHQyxHQUFFLFNBQVM2RixFQUFDLEtBQUssQ0FBRSxFQUFDLHFCQUFxQixLQUFLbEgsSUFBR2tILEVBQUMsTUFBTXJJLEdBQUVxSSxFQUFDLElBQUlsSCxHQUFFa0gsRUFBQztBQUFBLEVBQy9HO0FBQ0UsU0FBT3JJO0FBQ1Q7QUNOQSxJQUFJc08sY0FBWSxDQUFDLHFCQUFxQixxQkFBcUIsZ0JBQWdCLGNBQWMsY0FBYyxZQUFZLGlCQUFpQixlQUFlLGNBQWMsT0FBTztBQUN4SyxTQUFTLGdCQUFnQkMsT0FBTTtBQUM3QixNQUFJLHdCQUF3QkEsTUFBSyxtQkFDL0Isb0JBQW9CLDBCQUEwQixTQUFTLEtBQUssdUJBQzVELHdCQUF3QkEsTUFBSyxtQkFDN0Isb0JBQW9CLDBCQUEwQixTQUFTLFFBQVEsdUJBQy9ELG9CQUFvQkEsTUFBSyxjQUN6QixlQUFlLHNCQUFzQixTQUFTLE9BQU8sbUJBQ3JELGtCQUFrQkEsTUFBSyxZQUN2QixrQkFBa0JBLE1BQUssWUFDdkIsZ0JBQWdCQSxNQUFLLFVBQ3JCLHFCQUFxQkEsTUFBSyxlQUMxQixtQkFBbUJBLE1BQUssYUFDeEIsa0JBQWtCQSxNQUFLLFlBQ3ZCLGFBQWFBLE1BQUssT0FDbEIsa0JBQWtCSCwyQkFBeUJHLE9BQU1ELFdBQVM7QUFDNUQsTUFBSSxZQUFZRSxhQUFBQSxTQUFTLG9CQUFvQixTQUFZLGtCQUFrQixpQkFBaUIsR0FDMUYsYUFBYSxlQUFlLFdBQVcsQ0FBQyxHQUN4QyxrQkFBa0IsV0FBVyxDQUFDLEdBQzlCLHFCQUFxQixXQUFXLENBQUM7QUFDbkMsTUFBSSxhQUFhQSxhQUFBQSxTQUFTLG9CQUFvQixTQUFZLGtCQUFrQixpQkFBaUIsR0FDM0YsYUFBYSxlQUFlLFlBQVksQ0FBQyxHQUN6QyxrQkFBa0IsV0FBVyxDQUFDLEdBQzlCLHFCQUFxQixXQUFXLENBQUM7QUFDbkMsTUFBSSxhQUFhQSxhQUFBQSxTQUFTLGVBQWUsU0FBWSxhQUFhLFlBQVksR0FDNUUsYUFBYSxlQUFlLFlBQVksQ0FBQyxHQUN6QyxhQUFhLFdBQVcsQ0FBQyxHQUN6QixnQkFBZ0IsV0FBVyxDQUFDO0FBQzlCLE1BQUlDLFlBQVd0QixhQUFBQSxZQUFZLFNBQVV1QixRQUFPLFlBQVk7QUFDdEQsUUFBSSxPQUFPLGtCQUFrQixZQUFZO0FBQ3ZDLG9CQUFjQSxRQUFPLFVBQVU7QUFBQSxJQUNyQztBQUNJLGtCQUFjQSxNQUFLO0FBQUEsRUFDdkIsR0FBSyxDQUFDLGFBQWEsQ0FBQztBQUNsQixNQUFJLGdCQUFnQnZCLGFBQUFBLFlBQVksU0FBVXVCLFFBQU8sWUFBWTtBQUMzRCxRQUFJO0FBQ0osUUFBSSxPQUFPLHVCQUF1QixZQUFZO0FBQzVDLGlCQUFXLG1CQUFtQkEsUUFBTyxVQUFVO0FBQUEsSUFDckQ7QUFDSSx1QkFBbUIsYUFBYSxTQUFZLFdBQVdBLE1BQUs7QUFBQSxFQUNoRSxHQUFLLENBQUMsa0JBQWtCLENBQUM7QUFDdkIsTUFBSSxhQUFhdkIsYUFBQUEsWUFBWSxXQUFZO0FBQ3ZDLFFBQUksT0FBTyxvQkFBb0IsWUFBWTtBQUN6QyxzQkFBaUI7QUFBQSxJQUN2QjtBQUNJLHVCQUFtQixJQUFJO0FBQUEsRUFDM0IsR0FBSyxDQUFDLGVBQWUsQ0FBQztBQUNwQixNQUFJLGNBQWNBLGFBQUFBLFlBQVksV0FBWTtBQUN4QyxRQUFJLE9BQU8scUJBQXFCLFlBQVk7QUFDMUMsdUJBQWtCO0FBQUEsSUFDeEI7QUFDSSx1QkFBbUIsS0FBSztBQUFBLEVBQzVCLEdBQUssQ0FBQyxnQkFBZ0IsQ0FBQztBQUNyQixNQUFJLGFBQWEsb0JBQW9CLFNBQVksa0JBQWtCO0FBQ25FLE1BQUksYUFBYSxvQkFBb0IsU0FBWSxrQkFBa0I7QUFDbkUsTUFBSSxRQUFRLGVBQWUsU0FBWSxhQUFhO0FBQ3BELFNBQU93QixlQUFjQSxlQUFjLENBQUUsR0FBRSxlQUFlLEdBQUcsQ0FBQSxHQUFJO0FBQUEsSUFDM0Q7QUFBQSxJQUNBO0FBQUEsSUFDQSxVQUFVRjtBQUFBLElBQ1Y7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNKLENBQUc7QUFDSDtBQ3RFQSxTQUFTRyxhQUFXO0FBQ2xCLFNBQU9BLGFBQVcsT0FBTyxTQUFTLE9BQU8sT0FBTyxLQUFJLElBQUssU0FBVXhNLElBQUc7QUFDcEUsYUFBU2pCLEtBQUksR0FBR0EsS0FBSSxVQUFVLFFBQVFBLE1BQUs7QUFDekMsVUFBSXFCLEtBQUksVUFBVXJCLEVBQUM7QUFDbkIsZUFBU29CLE1BQUtDLEdBQUcsRUFBQyxDQUFFLEdBQUUsZUFBZSxLQUFLQSxJQUFHRCxFQUFDLE1BQU1ILEdBQUVHLEVBQUMsSUFBSUMsR0FBRUQsRUFBQztBQUFBLElBQ3BFO0FBQ0ksV0FBT0g7QUFBQSxFQUNSLEdBQUV3TSxXQUFTLE1BQU0sTUFBTSxTQUFTO0FBQ25DO0FDUkEsU0FBUyxnQkFBZ0I5TCxJQUFHVixJQUFHO0FBQzdCLE1BQUksRUFBRVUsY0FBYVYsSUFBSSxPQUFNLElBQUksVUFBVSxtQ0FBbUM7QUFDaEY7QUNEQSxTQUFTLGtCQUFrQmpCLElBQUdvQixJQUFHO0FBQy9CLFdBQVNDLEtBQUksR0FBR0EsS0FBSUQsR0FBRSxRQUFRQyxNQUFLO0FBQ2pDLFFBQUk2RixLQUFJOUYsR0FBRUMsRUFBQztBQUNYLElBQUE2RixHQUFFLGFBQWFBLEdBQUUsY0FBYyxPQUFJQSxHQUFFLGVBQWUsTUFBSSxXQUFXQSxPQUFNQSxHQUFFLFdBQVcsT0FBSyxPQUFPLGVBQWVsSCxJQUFHd00sZ0JBQWN0RixHQUFFLEdBQUcsR0FBR0EsRUFBQztBQUFBLEVBQy9JO0FBQ0E7QUFDQSxTQUFTLGFBQWFsSCxJQUFHb0IsSUFBR0MsSUFBRztBQUM3QixTQUFPRCxNQUFLLGtCQUFrQnBCLEdBQUUsV0FBV29CLEVBQUMsR0FBR0MsTUFBSyxrQkFBa0JyQixJQUFHcUIsRUFBQyxHQUFHLE9BQU8sZUFBZXJCLElBQUcsYUFBYTtBQUFBLElBQ2pILFVBQVU7QUFBQSxFQUNYLENBQUEsR0FBR0E7QUFDTjtBQ1hBLFNBQVMsZ0JBQWdCcUIsSUFBR3JCLElBQUc7QUFDN0IsU0FBTyxrQkFBa0IsT0FBTyxpQkFBaUIsT0FBTyxlQUFlLEtBQU0sSUFBRyxTQUFVcUIsSUFBR3JCLElBQUc7QUFDOUYsV0FBT3FCLEdBQUUsWUFBWXJCLElBQUdxQjtBQUFBLEVBQzVCLEdBQUssZ0JBQWdCQSxJQUFHckIsRUFBQztBQUN6QjtBQ0hBLFNBQVMsVUFBVXFCLElBQUdyQixJQUFHO0FBQ3ZCLE1BQUksY0FBYyxPQUFPQSxNQUFLLFNBQVNBLEdBQUcsT0FBTSxJQUFJLFVBQVUsb0RBQW9EO0FBQ2xILEVBQUFxQixHQUFFLFlBQVksT0FBTyxPQUFPckIsTUFBS0EsR0FBRSxXQUFXO0FBQUEsSUFDNUMsYUFBYTtBQUFBLE1BQ1gsT0FBT3FCO0FBQUEsTUFDUCxVQUFVO0FBQUEsTUFDVixjQUFjO0FBQUEsSUFDcEI7QUFBQSxFQUNHLENBQUEsR0FBRyxPQUFPLGVBQWVBLElBQUcsYUFBYTtBQUFBLElBQ3hDLFVBQVU7QUFBQSxFQUNYLENBQUEsR0FBR3JCLE1BQUswTixnQkFBZXJNLElBQUdyQixFQUFDO0FBQzlCO0FDWkEsU0FBUyxnQkFBZ0JxQixJQUFHO0FBQzFCLFNBQU8sa0JBQWtCLE9BQU8saUJBQWlCLE9BQU8sZUFBZSxLQUFJLElBQUssU0FBVUEsSUFBRztBQUMzRixXQUFPQSxHQUFFLGFBQWEsT0FBTyxlQUFlQSxFQUFDO0FBQUEsRUFDakQsR0FBSyxnQkFBZ0JBLEVBQUM7QUFDdEI7QUNKQSxTQUFTLDRCQUE0QjtBQUNuQyxNQUFJO0FBQ0YsUUFBSUEsS0FBSSxDQUFDLFFBQVEsVUFBVSxRQUFRLEtBQUssUUFBUSxVQUFVLFNBQVMsSUFBSSxXQUFZO0FBQUEsSUFBRSxDQUFBLENBQUM7QUFBQSxFQUN2RixTQUFRQSxJQUFHO0FBQUEsRUFBQTtBQUNaLFVBQVEsNEJBQTRCLFNBQVNzTSw2QkFBNEI7QUFDdkUsV0FBTyxDQUFDLENBQUN0TTtBQUFBLEVBQ2IsR0FBTTtBQUNOO0FDUEEsU0FBUyx1QkFBdUJyQixJQUFHO0FBQ2pDLE1BQUksV0FBV0EsR0FBRyxPQUFNLElBQUksZUFBZSwyREFBMkQ7QUFDdEcsU0FBT0E7QUFDVDtBQ0RBLFNBQVMsMkJBQTJCcUIsSUFBR3JCLElBQUc7QUFDeEMsTUFBSUEsT0FBTSxZQUFZc00sVUFBUXRNLEVBQUMsS0FBSyxjQUFjLE9BQU9BLElBQUksUUFBT0E7QUFDcEUsTUFBSSxXQUFXQSxHQUFHLE9BQU0sSUFBSSxVQUFVLDBEQUEwRDtBQUNoRyxTQUFPNE4sdUJBQXNCdk0sRUFBQztBQUNoQztBQ0hBLFNBQVMsYUFBYUEsSUFBRztBQUN2QixNQUFJRCxLQUFJeU0sMEJBQTBCO0FBQ2xDLFNBQU8sV0FBWTtBQUNqQixRQUFJN04sSUFDRmtILEtBQUl4RCxnQkFBZXJDLEVBQUM7QUFDdEIsUUFBSUQsSUFBRztBQUNMLFVBQUlzRixLQUFJaEQsZ0JBQWUsSUFBSSxFQUFFO0FBQzdCLE1BQUExRCxLQUFJLFFBQVEsVUFBVWtILElBQUcsV0FBV1IsRUFBQztBQUFBLElBQ3RDLE1BQU0sQ0FBQTFHLEtBQUlrSCxHQUFFLE1BQU0sTUFBTSxTQUFTO0FBQ2xDLFdBQU80RywyQkFBMEIsTUFBTTlOLEVBQUM7QUFBQSxFQUN6QztBQUNIO0FDYkEsU0FBUyxtQkFBbUJvQixJQUFHO0FBQzdCLE1BQUksTUFBTSxRQUFRQSxFQUFDLEVBQUcsUUFBT3VMLGtCQUFpQnZMLEVBQUM7QUFDakQ7QUNIQSxTQUFTLGlCQUFpQkEsSUFBRztBQUMzQixNQUFJLGVBQWUsT0FBTyxVQUFVLFFBQVFBLEdBQUUsT0FBTyxRQUFRLEtBQUssUUFBUUEsR0FBRSxZQUFZLEVBQUcsUUFBTyxNQUFNLEtBQUtBLEVBQUM7QUFDaEg7QUNGQSxTQUFTLHFCQUFxQjtBQUM1QixRQUFNLElBQUksVUFBVSxzSUFBc0k7QUFDNUo7QUNFQSxTQUFTLG1CQUFtQkEsSUFBRztBQUM3QixTQUFPMk0sbUJBQWtCM00sRUFBQyxLQUFLNE0saUJBQWdCNU0sRUFBQyxLQUFLMEwsNEJBQTJCMUwsRUFBQyxLQUFLNk0sbUJBQW1CO0FBQzNHO0FDTkEsSUFBSUMsa0JBQWdCO0FBeUJwQixTQUFTLFlBQVksS0FBSztBQUN4QixNQUFJLElBQUksT0FBTztBQUNiLFdBQU8sSUFBSTtBQUFBLEVBQ1o7QUFLRCxXQUFTclAsS0FBSSxHQUFHQSxLQUFJLFNBQVMsWUFBWSxRQUFRQSxNQUFLO0FBQ3BELFFBQUksU0FBUyxZQUFZQSxFQUFDLEVBQUUsY0FBYyxLQUFLO0FBQzdDLGFBQU8sU0FBUyxZQUFZQSxFQUFDO0FBQUEsSUFDbkM7QUFBQSxFQUNHO0FBSUQsU0FBTztBQUNUO0FBRUEsU0FBUyxtQkFBbUJzRyxVQUFTO0FBQ25DLE1BQUksTUFBTSxTQUFTLGNBQWMsT0FBTztBQUN4QyxNQUFJLGFBQWEsZ0JBQWdCQSxTQUFRLEdBQUc7QUFFNUMsTUFBSUEsU0FBUSxVQUFVLFFBQVc7QUFDL0IsUUFBSSxhQUFhLFNBQVNBLFNBQVEsS0FBSztBQUFBLEVBQzNDO0FBRUUsTUFBSSxZQUFZLFNBQVMsZUFBZSxFQUFFLENBQUM7QUFDM0MsTUFBSSxhQUFhLFVBQVUsRUFBRTtBQUM3QixTQUFPO0FBQ1Q7QUFFQSxJQUFJLGFBQTBCLDJCQUFZO0FBRXhDLFdBQVNnSixZQUFXaEosVUFBUztBQUMzQixRQUFJLFFBQVE7QUFFWixTQUFLLGFBQWEsU0FBVSxLQUFLO0FBQy9CLFVBQUk7QUFFSixVQUFJLE1BQU0sS0FBSyxXQUFXLEdBQUc7QUFDM0IsWUFBSSxNQUFNLGdCQUFnQjtBQUN4QixtQkFBUyxNQUFNLGVBQWU7QUFBQSxRQUN4QyxXQUFtQixNQUFNLFNBQVM7QUFDeEIsbUJBQVMsTUFBTSxVQUFVO0FBQUEsUUFDbkMsT0FBZTtBQUNMLG1CQUFTLE1BQU07QUFBQSxRQUN6QjtBQUFBLE1BQ0EsT0FBYTtBQUNMLGlCQUFTLE1BQU0sS0FBSyxNQUFNLEtBQUssU0FBUyxDQUFDLEVBQUU7QUFBQSxNQUNuRDtBQUVNLFlBQU0sVUFBVSxhQUFhLEtBQUssTUFBTTtBQUV4QyxZQUFNLEtBQUssS0FBSyxHQUFHO0FBQUEsSUFDcEI7QUFFRCxTQUFLLFdBQVdBLFNBQVEsV0FBVyxTQUFZLENBQUMrSSxrQkFBZ0IvSSxTQUFRO0FBQ3hFLFNBQUssT0FBTyxDQUFFO0FBQ2QsU0FBSyxNQUFNO0FBQ1gsU0FBSyxRQUFRQSxTQUFRO0FBRXJCLFNBQUssTUFBTUEsU0FBUTtBQUNuQixTQUFLLFlBQVlBLFNBQVE7QUFDekIsU0FBSyxVQUFVQSxTQUFRO0FBQ3ZCLFNBQUssaUJBQWlCQSxTQUFRO0FBQzlCLFNBQUssU0FBUztBQUFBLEVBQ2xCO0FBRUUsTUFBSSxTQUFTZ0osWUFBVztBQUV4QixTQUFPLFVBQVUsU0FBUyxRQUFRLE9BQU87QUFDdkMsVUFBTSxRQUFRLEtBQUssVUFBVTtBQUFBLEVBQzlCO0FBRUQsU0FBTyxTQUFTLFNBQVMsT0FBTyxNQUFNO0FBSXBDLFFBQUksS0FBSyxPQUFPLEtBQUssV0FBVyxPQUFRLE9BQU8sR0FBRztBQUNoRCxXQUFLLFdBQVcsbUJBQW1CLElBQUksQ0FBQztBQUFBLElBQzlDO0FBRUksUUFBSSxNQUFNLEtBQUssS0FBSyxLQUFLLEtBQUssU0FBUyxDQUFDO0FBRXhDLFFBQUksS0FBSyxVQUFVO0FBQ2pCLFVBQUksUUFBUSxZQUFZLEdBQUc7QUFFM0IsVUFBSTtBQUdGLGNBQU0sV0FBVyxNQUFNLE1BQU0sU0FBUyxNQUFNO0FBQUEsTUFDN0MsU0FBUW5PLElBQUc7QUFBQSxNQUNsQjtBQUFBLElBQ0EsT0FBVztBQUNMLFVBQUksWUFBWSxTQUFTLGVBQWUsSUFBSSxDQUFDO0FBQUEsSUFDbkQ7QUFFSSxTQUFLO0FBQUEsRUFDTjtBQUVELFNBQU8sUUFBUSxTQUFTLFFBQVE7QUFDOUIsU0FBSyxLQUFLLFFBQVEsU0FBVSxLQUFLO0FBQy9CLFVBQUk7QUFFSixjQUFRLGtCQUFrQixJQUFJLGVBQWUsT0FBTyxTQUFTLGdCQUFnQixZQUFZLEdBQUc7QUFBQSxJQUNsRyxDQUFLO0FBQ0QsU0FBSyxPQUFPLENBQUU7QUFDZCxTQUFLLE1BQU07QUFBQSxFQUNaO0FBRUQsU0FBT21PO0FBQ1QsRUFBRztBQ3pJSSxJQUFJQyxPQUFLO0FBQ1QsSUFBSUMsUUFBTTtBQUNWLElBQUlDLFdBQVM7QUFFYixJQUFJQyxZQUFVO0FBQ2QsSUFBSUMsWUFBVTtBQUNkLElBQUlDLGdCQUFjO0FBSWxCLElBQUlDLFdBQVM7QUFNYixJQUFJQyxjQUFZO0FBSWhCLElBQUlDLFVBQVE7QUNoQlosSUFBSUMsUUFBTSxLQUFLO0FBTWYsSUFBSWpILFNBQU8sT0FBTztBQU1sQixJQUFJa0gsV0FBUyxPQUFPO0FBT3BCLFNBQVNDLE9BQU0sT0FBT2hLLFNBQVE7QUFDcEMsU0FBT2lLLFNBQU8sT0FBTyxDQUFDLElBQUksUUFBWWpLLFdBQVUsSUFBS2lLLFNBQU8sT0FBTyxDQUFDLE1BQU0sSUFBS0EsU0FBTyxPQUFPLENBQUMsTUFBTSxJQUFLQSxTQUFPLE9BQU8sQ0FBQyxNQUFNLElBQUtBLFNBQU8sT0FBTyxDQUFDLElBQUk7QUFDdko7QUFNTyxTQUFTNUssT0FBTSxPQUFPO0FBQzVCLFNBQU8sTUFBTSxLQUFJO0FBQ2xCO0FBT08sU0FBU2lCLFFBQU8sT0FBTzRKLFVBQVM7QUFDdEMsVUFBUSxRQUFRQSxTQUFRLEtBQUssS0FBSyxLQUFLLE1BQU0sQ0FBQyxJQUFJO0FBQ25EO0FBUU8sU0FBU0MsVUFBUyxPQUFPRCxVQUFTLGFBQWE7QUFDckQsU0FBTyxNQUFNLFFBQVFBLFVBQVMsV0FBVztBQUMxQztBQU9PLFNBQVNFLFVBQVMsT0FBTyxRQUFRO0FBQ3ZDLFNBQU8sTUFBTSxRQUFRLE1BQU07QUFDNUI7QUFPTyxTQUFTSCxTQUFRLE9BQU96TyxRQUFPO0FBQ3JDLFNBQU8sTUFBTSxXQUFXQSxNQUFLLElBQUk7QUFDbEM7QUFRTyxTQUFTNk8sU0FBUSxPQUFPLE9BQU8sS0FBSztBQUMxQyxTQUFPLE1BQU0sTUFBTSxPQUFPLEdBQUc7QUFDOUI7QUFNTyxTQUFTQyxTQUFRLE9BQU87QUFDOUIsU0FBTyxNQUFNO0FBQ2Q7QUFNTyxTQUFTQyxTQUFRLE9BQU87QUFDOUIsU0FBTyxNQUFNO0FBQ2Q7QUFPTyxTQUFTQyxTQUFRLE9BQU8sT0FBTztBQUNyQyxTQUFPLE1BQU0sS0FBSyxLQUFLLEdBQUc7QUFDM0I7QUFPTyxTQUFTQyxVQUFTLE9BQU8sVUFBVTtBQUN6QyxTQUFPLE1BQU0sSUFBSSxRQUFRLEVBQUUsS0FBSyxFQUFFO0FBQ25DO0FDaEhPLElBQUkxSixTQUFPO0FBQ1gsSUFBSTJKLFdBQVM7QUFDYixJQUFJMUssV0FBUztBQUNiLElBQUlOLGFBQVc7QUFDZixJQUFJaUwsY0FBWTtBQUNoQixJQUFJQyxlQUFhO0FBV2pCLFNBQVNDLE9BQU0sT0FBTyxNQUFNLFFBQVFoTSxPQUFNLE9BQU8sVUFBVW1CLFNBQVE7QUFDekUsU0FBTyxFQUFDLE9BQWMsTUFBWSxRQUFnQixNQUFNbkIsT0FBTSxPQUFjLFVBQW9CLE1BQU1rQyxRQUFNLFFBQVEySixVQUFRLFFBQVExSyxTQUFRLFFBQVEsR0FBRTtBQUN2SjtBQU9PLFNBQVM4SyxPQUFNLE1BQU0sT0FBTztBQUNsQyxTQUFPZixTQUFPYyxPQUFLLElBQUksTUFBTSxNQUFNLElBQUksTUFBTSxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUMsUUFBUSxDQUFDLEtBQUssT0FBTSxHQUFHLEtBQUs7QUFDM0Y7QUFLTyxTQUFTN0osU0FBUTtBQUN2QixTQUFPMko7QUFDUjtBQUtPLFNBQVNJLFNBQVE7QUFDdkJKLGdCQUFZakwsYUFBVyxJQUFJdUssU0FBT1csY0FBWSxFQUFFbEwsVUFBUSxJQUFJO0FBRTVELE1BQUlnTCxZQUFVQyxnQkFBYztBQUMzQkQsZUFBUyxHQUFHM0o7QUFFYixTQUFPNEo7QUFDUjtBQUtPLFNBQVNsUSxTQUFRO0FBQ3ZCa1EsZ0JBQVlqTCxhQUFXTSxXQUFTaUssU0FBT1csY0FBWWxMLFlBQVUsSUFBSTtBQUVqRSxNQUFJZ0wsWUFBVUMsZ0JBQWM7QUFDM0JELGVBQVMsR0FBRzNKO0FBRWIsU0FBTzRKO0FBQ1I7QUFLTyxTQUFTSyxTQUFRO0FBQ3ZCLFNBQU9mLFNBQU9XLGNBQVlsTCxVQUFRO0FBQ25DO0FBS08sU0FBU3VMLFVBQVM7QUFDeEIsU0FBT3ZMO0FBQ1I7QUFPTyxTQUFTd0wsUUFBTyxPQUFPLEtBQUs7QUFDbEMsU0FBT2IsU0FBT08sY0FBWSxPQUFPLEdBQUc7QUFDckM7QUFNTyxTQUFTM0ssUUFBT3BCLE9BQU07QUFDNUIsVUFBUUEsT0FBSTtBQUFBO0FBQUEsSUFFWCxLQUFLO0FBQUEsSUFBRyxLQUFLO0FBQUEsSUFBRyxLQUFLO0FBQUEsSUFBSSxLQUFLO0FBQUEsSUFBSSxLQUFLO0FBQ3RDLGFBQU87QUFBQTtBQUFBLElBRVIsS0FBSztBQUFBLElBQUksS0FBSztBQUFBLElBQUksS0FBSztBQUFBLElBQUksS0FBSztBQUFBLElBQUksS0FBSztBQUFBLElBQUksS0FBSztBQUFBLElBQUksS0FBSztBQUFBO0FBQUEsSUFFM0QsS0FBSztBQUFBLElBQUksS0FBSztBQUFBLElBQUssS0FBSztBQUN2QixhQUFPO0FBQUE7QUFBQSxJQUVSLEtBQUs7QUFDSixhQUFPO0FBQUE7QUFBQSxJQUVSLEtBQUs7QUFBQSxJQUFJLEtBQUs7QUFBQSxJQUFJLEtBQUs7QUFBQSxJQUFJLEtBQUs7QUFDL0IsYUFBTztBQUFBO0FBQUEsSUFFUixLQUFLO0FBQUEsSUFBSSxLQUFLO0FBQ2IsYUFBTztBQUFBLEVBQ1Y7QUFFQyxTQUFPO0FBQ1I7QUFNTyxTQUFTc00sUUFBTyxPQUFPO0FBQzdCLFNBQU9wSyxTQUFPMkosV0FBUyxHQUFHMUssV0FBU3NLLFNBQU9NLGVBQWEsS0FBSyxHQUFHbEwsYUFBVyxHQUFHLENBQUE7QUFDOUU7QUFNTyxTQUFTMEwsVUFBUyxPQUFPO0FBQy9CLFNBQU9SLGVBQWEsSUFBSTtBQUN6QjtBQU1PLFNBQVNTLFVBQVN4TSxPQUFNO0FBQzlCLFNBQU9RLE9BQUs2TCxRQUFNeEwsYUFBVyxHQUFHSSxZQUFVakIsVUFBUyxLQUFLQSxRQUFPLElBQUlBLFVBQVMsS0FBS0EsUUFBTyxJQUFJQSxLQUFJLENBQUMsQ0FBQztBQUNuRztBQWNPLFNBQVN5TSxhQUFZek0sT0FBTTtBQUNqQyxTQUFPOEwsY0FBWUssT0FBTTtBQUN4QixRQUFJTCxjQUFZO0FBQ2ZsUSxhQUFJO0FBQUE7QUFFSjtBQUVGLFNBQU93RixRQUFNcEIsS0FBSSxJQUFJLEtBQUtvQixRQUFNMEssV0FBUyxJQUFJLElBQUksS0FBSztBQUN2RDtBQXdCTyxTQUFTWSxXQUFVL1AsUUFBT2dRLFFBQU87QUFDdkMsU0FBTyxFQUFFQSxVQUFTL1EsT0FBTTtBQUV2QixRQUFJa1EsY0FBWSxNQUFNQSxjQUFZLE9BQVFBLGNBQVksTUFBTUEsY0FBWSxNQUFRQSxjQUFZLE1BQU1BLGNBQVk7QUFDN0c7QUFFRixTQUFPTyxRQUFNMVAsUUFBT3lQLFFBQUssS0FBTU8sU0FBUSxLQUFLUixZQUFVLE1BQU12USxPQUFJLEtBQU0sR0FBRztBQUMxRTtBQU1PLFNBQVNxRixZQUFXakIsT0FBTTtBQUNoQyxTQUFPcEUsT0FBTTtBQUNaLFlBQVFrUSxhQUFTO0FBQUE7QUFBQSxNQUVoQixLQUFLOUw7QUFDSixlQUFPYTtBQUFBQTtBQUFBQSxNQUVSLEtBQUs7QUFBQSxNQUFJLEtBQUs7QUFDYixZQUFJYixVQUFTLE1BQU1BLFVBQVM7QUFDM0JpQixzQkFBVTZLLFdBQVM7QUFDcEI7QUFBQTtBQUFBLE1BRUQsS0FBSztBQUNKLFlBQUk5TCxVQUFTO0FBQ1ppQixzQkFBVWpCLEtBQUk7QUFDZjtBQUFBO0FBQUEsTUFFRCxLQUFLO0FBQ0pwRSxlQUFJO0FBQ0o7QUFBQSxJQUNKO0FBRUMsU0FBT2lGO0FBQ1I7QUFPTyxTQUFTK0wsWUFBVzVNLE9BQU1yRCxRQUFPO0FBQ3ZDLFNBQU9mLE9BQU07QUFFWixRQUFJb0UsUUFBTzhMLGdCQUFjLEtBQUs7QUFDN0I7QUFBQSxhQUVROUwsUUFBTzhMLGdCQUFjLEtBQUssTUFBTUssT0FBTSxNQUFLO0FBQ25EO0FBRUYsU0FBTyxPQUFPRSxRQUFNMVAsUUFBT2tFLGFBQVcsQ0FBQyxJQUFJLE1BQU1tRCxPQUFLaEUsVUFBUyxLQUFLQSxRQUFPcEUsT0FBTSxDQUFBO0FBQ2xGO0FBTU8sU0FBU2lSLGFBQVlsUSxRQUFPO0FBQ2xDLFNBQU8sQ0FBQ3lFLFFBQU0rSyxRQUFNO0FBQ25CdlEsV0FBSTtBQUVMLFNBQU95USxRQUFNMVAsUUFBT2tFLFVBQVE7QUFDN0I7QUM3T08sU0FBU2lNLFVBQVMsT0FBTztBQUMvQixTQUFPUCxVQUFRUSxRQUFNLElBQUksTUFBTSxNQUFNLE1BQU0sQ0FBQyxFQUFFLEdBQUcsUUFBUVQsUUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDdEY7QUFjTyxTQUFTUyxRQUFPLE9BQU8sTUFBTSxRQUFRLE1BQU1DLFFBQU8sVUFBVSxRQUFRLFFBQVEsY0FBYztBQUNoRyxNQUFJclEsU0FBUTtBQUNaLE1BQUlRLFVBQVM7QUFDYixNQUFJZ0UsVUFBUztBQUNiLE1BQUksU0FBUztBQUNiLE1BQUksV0FBVztBQUNmLE1BQUksV0FBVztBQUNmLE1BQUksV0FBVztBQUNmLE1BQUksV0FBVztBQUNmLE1BQUksWUFBWTtBQUNoQixNQUFJMkssYUFBWTtBQUNoQixNQUFJOUwsUUFBTztBQUNYLE1BQUksUUFBUWdOO0FBQ1osTUFBSSxXQUFXO0FBQ2YsTUFBSSxZQUFZO0FBQ2hCLE1BQUlqQixjQUFhL0w7QUFFakIsU0FBTztBQUNOLFlBQVEsV0FBVzhMLFlBQVdBLGFBQVlsUSxPQUFNLEdBQUE7QUFBQTtBQUFBLE1BRS9DLEtBQUs7QUFDSixZQUFJLFlBQVksT0FBT3dQLFNBQU9XLGFBQVk1SyxVQUFTLENBQUMsS0FBSyxJQUFJO0FBQzVELGNBQUlvSyxVQUFRUSxlQUFjVCxVQUFRa0IsVUFBUVYsVUFBUyxHQUFHLEtBQUssS0FBSyxHQUFHLEtBQUssS0FBSztBQUM1RSx3QkFBWTtBQUNiO0FBQUEsUUFDTDtBQUFBO0FBQUEsTUFFRyxLQUFLO0FBQUEsTUFBSSxLQUFLO0FBQUEsTUFBSSxLQUFLO0FBQ3RCLFFBQUFDLGVBQWNTLFVBQVFWLFVBQVM7QUFDL0I7QUFBQTtBQUFBLE1BRUQsS0FBSztBQUFBLE1BQUcsS0FBSztBQUFBLE1BQUksS0FBSztBQUFBLE1BQUksS0FBSztBQUM5QixRQUFBQyxlQUFjVSxhQUFXLFFBQVE7QUFDakM7QUFBQTtBQUFBLE1BRUQsS0FBSztBQUNKLFFBQUFWLGVBQWNXLFdBQVNOLFFBQU8sSUFBRyxHQUFHLENBQUM7QUFDckM7QUFBQTtBQUFBLE1BRUQsS0FBSztBQUNKLGdCQUFRRCxPQUFNLEdBQUE7QUFBQSxVQUNiLEtBQUs7QUFBQSxVQUFJLEtBQUs7QUFDYlIscUJBQU9zQixVQUFRTCxZQUFVaFIsT0FBTSxHQUFFd1EsUUFBSyxDQUFFLEdBQUcsTUFBTSxNQUFNLEdBQUcsWUFBWTtBQUN0RTtBQUFBLFVBQ0Q7QUFDQyxZQUFBTCxlQUFjO0FBQUEsUUFDcEI7QUFDSTtBQUFBO0FBQUEsTUFFRCxLQUFLLE1BQU07QUFDVixlQUFPcFAsUUFBTyxJQUFJOE8sU0FBT00sV0FBVSxJQUFJO0FBQUE7QUFBQSxNQUV4QyxLQUFLLE1BQU07QUFBQSxNQUFVLEtBQUs7QUFBQSxNQUFJLEtBQUs7QUFDbEMsZ0JBQVFELFlBQVM7QUFBQTtBQUFBLFVBRWhCLEtBQUs7QUFBQSxVQUFHLEtBQUs7QUFBSyx1QkFBVztBQUFBO0FBQUEsVUFFN0IsS0FBSyxLQUFLM087QUFBUSxnQkFBSSxhQUFhLEdBQUksQ0FBQTRPLGNBQWFULFVBQVFTLGFBQVksT0FBTyxFQUFFO0FBQ2hGLGdCQUFJLFdBQVcsS0FBTU4sU0FBT00sV0FBVSxJQUFJNUs7QUFDekN3Syx1QkFBTyxXQUFXLEtBQUt1QixjQUFZbkIsY0FBYSxLQUFLLE1BQU0sUUFBUTVLLFVBQVMsQ0FBQyxJQUFJK0wsY0FBWTVCLFVBQVFTLGFBQVksS0FBSyxFQUFFLElBQUksS0FBSyxNQUFNLFFBQVE1SyxVQUFTLENBQUMsR0FBRyxZQUFZO0FBQ3pLO0FBQUE7QUFBQSxVQUVELEtBQUs7QUFBSSxZQUFBNEssZUFBYztBQUFBO0FBQUEsVUFFdkI7QUFDQ0oscUJBQU8sWUFBWXdCLFVBQVFwQixhQUFZLE1BQU0sUUFBUXBQLFFBQU9RLFNBQVE2UCxRQUFPLFFBQVFoTixPQUFNLFFBQVEsQ0FBQSxHQUFJLFdBQVcsQ0FBRSxHQUFFbUIsT0FBTSxHQUFHLFFBQVE7QUFFckksZ0JBQUkySyxlQUFjO0FBQ2pCLGtCQUFJM08sWUFBVztBQUNkNFAsd0JBQU1oQixhQUFZLE1BQU0sV0FBVyxXQUFXLE9BQU8sVUFBVTVLLFNBQVEsUUFBUSxRQUFRO0FBQUE7QUFFdkYsd0JBQVEsV0FBVyxNQUFNaUssU0FBT1csYUFBWSxDQUFDLE1BQU0sTUFBTSxNQUFNLFFBQU07QUFBQTtBQUFBLGtCQUVwRSxLQUFLO0FBQUEsa0JBQUssS0FBSztBQUFBLGtCQUFLLEtBQUs7QUFBQSxrQkFBSyxLQUFLO0FBQ2xDZ0IsNEJBQU0sT0FBTyxXQUFXLFdBQVcsUUFBUXBCLFNBQU93QixVQUFRLE9BQU8sV0FBVyxXQUFXLEdBQUcsR0FBR0gsUUFBTyxRQUFRaE4sT0FBTWdOLFFBQU8sUUFBUSxJQUFJN0wsT0FBTSxHQUFHLFFBQVEsR0FBRzZMLFFBQU8sVUFBVTdMLFNBQVEsUUFBUSxPQUFPLFFBQVEsUUFBUTtBQUNqTjtBQUFBLGtCQUNEO0FBQ0M0TCw0QkFBTWhCLGFBQVksV0FBVyxXQUFXLFdBQVcsQ0FBQyxFQUFFLEdBQUcsVUFBVSxHQUFHLFFBQVEsUUFBUTtBQUFBLGdCQUNoRztBQUFBLFFBQ0E7QUFFSSxRQUFBcFAsU0FBUVEsVUFBUyxXQUFXLEdBQUcsV0FBVyxZQUFZLEdBQUc2QyxRQUFPK0wsY0FBYSxJQUFJNUssVUFBUztBQUMxRjtBQUFBO0FBQUEsTUFFRCxLQUFLO0FBQ0osUUFBQUEsVUFBUyxJQUFJc0ssU0FBT00sV0FBVSxHQUFHLFdBQVc7QUFBQSxNQUM3QztBQUNDLFlBQUksV0FBVztBQUNkLGNBQUlELGNBQWE7QUFDaEIsY0FBRTtBQUFBLG1CQUNNQSxjQUFhLE9BQU8sY0FBYyxLQUFLSSxPQUFJLEtBQU07QUFDekQ7QUFBQTtBQUVGLGdCQUFRSCxlQUFjL0gsT0FBSzhILFVBQVMsR0FBR0EsYUFBWSxVQUFRO0FBQUE7QUFBQSxVQUUxRCxLQUFLO0FBQ0osd0JBQVkzTyxVQUFTLElBQUksS0FBSzRPLGVBQWMsTUFBTTtBQUNsRDtBQUFBO0FBQUEsVUFFRCxLQUFLO0FBQ0osbUJBQU9wUCxRQUFPLEtBQUs4TyxTQUFPTSxXQUFVLElBQUksS0FBSyxXQUFXLFlBQVk7QUFDcEU7QUFBQTtBQUFBLFVBRUQsS0FBSztBQUVKLGdCQUFJSSxPQUFNLE1BQUs7QUFDZCxjQUFBSixlQUFjUyxVQUFRNVEsT0FBTSxDQUFBO0FBRTdCLHFCQUFTdVEsT0FBSSxHQUFJaFAsVUFBU2dFLFVBQVNzSyxTQUFPekwsUUFBTytMLGVBQWNjLGFBQVdULFFBQU8sQ0FBQSxDQUFDLEdBQUdOO0FBQ3JGO0FBQUE7QUFBQSxVQUVELEtBQUs7QUFDSixnQkFBSSxhQUFhLE1BQU1MLFNBQU9NLFdBQVUsS0FBSztBQUM1Qyx5QkFBVztBQUFBLFFBQ2xCO0FBQUEsSUFDQTtBQUVDLFNBQU87QUFDUjtBQWdCTyxTQUFTb0IsVUFBUyxPQUFPLE1BQU0sUUFBUXhRLFFBQU9RLFNBQVE2UCxRQUFPLFFBQVFoTixPQUFNLE9BQU8sVUFBVW1CLFNBQVE7QUFDMUcsTUFBSSxPQUFPaEUsVUFBUztBQUNwQixNQUFJLE9BQU9BLFlBQVcsSUFBSTZQLFNBQVEsQ0FBQyxFQUFFO0FBQ3JDLE1BQUluUSxRQUFPNk8sU0FBTyxJQUFJO0FBRXRCLFdBQVN6USxLQUFJLEdBQUdtUyxLQUFJLEdBQUdqUixLQUFJLEdBQUdsQixLQUFJMEIsUUFBTyxFQUFFMUI7QUFDMUMsYUFBU0ssS0FBSSxHQUFHRSxLQUFJZ1EsU0FBTyxPQUFPLE9BQU8sR0FBRyxPQUFPUCxNQUFJbUMsS0FBSSxPQUFPblMsRUFBQyxDQUFDLENBQUMsR0FBRzRDLEtBQUksT0FBT3ZDLEtBQUl1QixPQUFNLEVBQUV2QjtBQUM5RixVQUFJdUMsS0FBSTJDLE9BQUs0TSxLQUFJLElBQUksS0FBSzlSLEVBQUMsSUFBSSxNQUFNRSxLQUFJOFAsVUFBUTlQLElBQUcsUUFBUSxLQUFLRixFQUFDLENBQUMsQ0FBQztBQUNuRSxjQUFNYSxJQUFHLElBQUkwQjtBQUVoQixTQUFPbU8sT0FBSyxPQUFPLE1BQU0sUUFBUTdPLFlBQVcsSUFBSXlOLFlBQVU1SyxPQUFNLE9BQU8sVUFBVW1CLE9BQU07QUFDeEY7QUFRTyxTQUFTOEwsVUFBUyxPQUFPLE1BQU0sUUFBUTtBQUM3QyxTQUFPakIsT0FBSyxPQUFPLE1BQU0sUUFBUXJCLFdBQVMzRyxPQUFLN0IsT0FBSSxDQUFFLEdBQUdxSixTQUFPLE9BQU8sR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNoRjtBQVNPLFNBQVMwQixjQUFhLE9BQU8sTUFBTSxRQUFRL0wsU0FBUTtBQUN6RCxTQUFPNkssT0FBSyxPQUFPLE1BQU0sUUFBUW5CLGVBQWFXLFNBQU8sT0FBTyxHQUFHckssT0FBTSxHQUFHcUssU0FBTyxPQUFPckssVUFBUyxHQUFHLEVBQUUsR0FBR0EsT0FBTTtBQUM5RztBQ3RMTyxTQUFTa00sWUFBVyxVQUFVLFVBQVU7QUFDOUMsTUFBSSxTQUFTO0FBQ2IsTUFBSWxNLFVBQVN1SyxTQUFPLFFBQVE7QUFFNUIsV0FBU3pRLEtBQUksR0FBR0EsS0FBSWtHLFNBQVFsRztBQUMzQixjQUFVLFNBQVMsU0FBU0EsRUFBQyxHQUFHQSxJQUFHLFVBQVUsUUFBUSxLQUFLO0FBRTNELFNBQU87QUFDUjtBQVNPLFNBQVNxUyxZQUFXLFNBQVMzUSxRQUFPLFVBQVUsVUFBVTtBQUM5RCxVQUFRLFFBQVEsTUFBSTtBQUFBLElBQ25CLEtBQUtxTztBQUFPLFVBQUksUUFBUSxTQUFTLE9BQVE7QUFBQSxJQUN6QyxLQUFLRjtBQUFBQSxJQUFRLEtBQUtEO0FBQWEsYUFBTyxRQUFRLFNBQVMsUUFBUSxVQUFVLFFBQVE7QUFBQSxJQUNqRixLQUFLRjtBQUFTLGFBQU87QUFBQSxJQUNyQixLQUFLSTtBQUFXLGFBQU8sUUFBUSxTQUFTLFFBQVEsUUFBUSxNQUFNc0MsWUFBVSxRQUFRLFVBQVUsUUFBUSxJQUFJO0FBQUEsSUFDdEcsS0FBS3pDO0FBQVMsY0FBUSxRQUFRLFFBQVEsTUFBTSxLQUFLLEdBQUc7QUFBQSxFQUN0RDtBQUVDLFNBQU9hLFNBQU8sV0FBVzRCLFlBQVUsUUFBUSxVQUFVLFFBQVEsQ0FBQyxJQUFJLFFBQVEsU0FBUyxRQUFRLFFBQVEsTUFBTSxXQUFXLE1BQU07QUFDM0g7QUN6Qk8sU0FBU0UsYUFBWSxZQUFZO0FBQ3ZDLE1BQUlwTSxVQUFTdUssU0FBTyxVQUFVO0FBRTlCLFNBQU8sU0FBVSxTQUFTL08sUUFBTyxVQUFVLFVBQVU7QUFDcEQsUUFBSSxTQUFTO0FBRWIsYUFBUzFCLEtBQUksR0FBR0EsS0FBSWtHLFNBQVFsRztBQUMzQixnQkFBVSxXQUFXQSxFQUFDLEVBQUUsU0FBUzBCLFFBQU8sVUFBVSxRQUFRLEtBQUs7QUFFaEUsV0FBTztBQUFBLEVBQ1Q7QUFDQTtBQU1PLFNBQVM2USxZQUFXLFVBQVU7QUFDcEMsU0FBTyxTQUFVLFNBQVM7QUFDekIsUUFBSSxDQUFDLFFBQVE7QUFDWixVQUFJLFVBQVUsUUFBUTtBQUNyQixpQkFBUyxPQUFPO0FBQUE7QUFBQSxFQUNwQjtBQUNBO0FDakNBLElBQUksY0FBYyxTQUFTQyxhQUFZLE1BQU07QUFDM0MsTUFBSTFOLFNBQVEsb0JBQUksUUFBUztBQUN6QixTQUFPLFNBQVUsS0FBSztBQUNwQixRQUFJQSxPQUFNLElBQUksR0FBRyxHQUFHO0FBR2xCLGFBQU9BLE9BQU0sSUFBSSxHQUFHO0FBQUEsSUFDMUI7QUFFSSxRQUFJLE1BQU0sS0FBSyxHQUFHO0FBQ2xCLElBQUFBLE9BQU0sSUFBSSxLQUFLLEdBQUc7QUFDbEIsV0FBTztBQUFBLEVBQ1I7QUFDSDtBQ2JBLFNBQVMsUUFBUSxJQUFJO0FBQ25CLE1BQUlBLFNBQVEsdUJBQU8sT0FBTyxJQUFJO0FBQzlCLFNBQU8sU0FBVSxLQUFLO0FBQ3BCLFFBQUlBLE9BQU0sR0FBRyxNQUFNLE9BQVcsQ0FBQUEsT0FBTSxHQUFHLElBQUksR0FBRyxHQUFHO0FBQ2pELFdBQU9BLE9BQU0sR0FBRztBQUFBLEVBQ2pCO0FBQ0g7QUNEQSxJQUFJLDhCQUE4QixTQUFTMk4sNkJBQTRCLE9BQU8sUUFBUS9RLFFBQU87QUFDM0YsTUFBSSxXQUFXO0FBQ2YsTUFBSW1QLGFBQVk7QUFFaEIsU0FBTyxNQUFNO0FBQ1gsZUFBV0E7QUFDWCxJQUFBQSxhQUFZSyxPQUFJO0FBRWhCLFFBQUksYUFBYSxNQUFNTCxlQUFjLElBQUk7QUFDdkMsYUFBT25QLE1BQUssSUFBSTtBQUFBLElBQ3RCO0FBRUksUUFBSXlFLFFBQU0wSyxVQUFTLEdBQUc7QUFDcEI7QUFBQSxJQUNOO0FBRUlsUSxXQUFNO0FBQUEsRUFDVjtBQUVFLFNBQU95USxRQUFNLE9BQU94TCxVQUFRO0FBQzlCO0FBRUEsSUFBSSxVQUFVLFNBQVM4TSxTQUFRLFFBQVEsUUFBUTtBQUU3QyxNQUFJaFIsU0FBUTtBQUNaLE1BQUltUCxhQUFZO0FBRWhCLEtBQUc7QUFDRCxZQUFRMUssUUFBTTBLLFVBQVMsR0FBQztBQUFBLE1BQ3RCLEtBQUs7QUFFSCxZQUFJQSxlQUFjLE1BQU1LLE9BQUksTUFBTyxJQUFJO0FBS3JDLGlCQUFPeFAsTUFBSyxJQUFJO0FBQUEsUUFDMUI7QUFFUSxlQUFPQSxNQUFLLEtBQUssNEJBQTRCa0UsYUFBVyxHQUFHLFFBQVFsRSxNQUFLO0FBQ3hFO0FBQUEsTUFFRixLQUFLO0FBQ0gsZUFBT0EsTUFBSyxLQUFLNlAsVUFBUVYsVUFBUztBQUNsQztBQUFBLE1BRUYsS0FBSztBQUVILFlBQUlBLGVBQWMsSUFBSTtBQUVwQixpQkFBTyxFQUFFblAsTUFBSyxJQUFJd1AsT0FBSSxNQUFPLEtBQUssUUFBUTtBQUMxQyxpQkFBT3hQLE1BQUssSUFBSSxPQUFPQSxNQUFLLEVBQUU7QUFDOUI7QUFBQSxRQUNWO0FBQUE7QUFBQSxNQUlNO0FBQ0UsZUFBT0EsTUFBSyxLQUFLcUgsT0FBSzhILFVBQVM7QUFBQSxJQUN2QztBQUFBLEVBQ0EsU0FBV0EsYUFBWWxRLE9BQU07QUFFM0IsU0FBTztBQUNUO0FBRUEsSUFBSSxXQUFXLFNBQVNnUyxVQUFTLE9BQU8sUUFBUTtBQUM5QyxTQUFPckIsVUFBUSxRQUFRRCxRQUFNLEtBQUssR0FBRyxNQUFNLENBQUM7QUFDOUM7QUFHQSxJQUFJLGdCQUErQixvQkFBSSxRQUFTO0FBQ2hELElBQUksU0FBUyxTQUFTdUIsUUFBTyxTQUFTO0FBQ3BDLE1BQUksUUFBUSxTQUFTLFVBQVUsQ0FBQyxRQUFRO0FBQUE7QUFBQSxFQUV4QyxRQUFRLFNBQVMsR0FBRztBQUNsQjtBQUFBLEVBQ0o7QUFFRSxNQUFJLFFBQVEsUUFBUTtBQUNwQixNQUFJLFNBQVMsUUFBUTtBQUNyQixNQUFJLGlCQUFpQixRQUFRLFdBQVcsT0FBTyxVQUFVLFFBQVEsU0FBUyxPQUFPO0FBRWpGLFNBQU8sT0FBTyxTQUFTLFFBQVE7QUFDN0IsYUFBUyxPQUFPO0FBQ2hCLFFBQUksQ0FBQyxPQUFRO0FBQUEsRUFDZDtBQUdELE1BQUksUUFBUSxNQUFNLFdBQVcsS0FBSyxNQUFNLFdBQVcsQ0FBQyxNQUFNLE1BRXZELENBQUMsY0FBYyxJQUFJLE1BQU0sR0FBRztBQUM3QjtBQUFBLEVBQ0Q7QUFJRCxNQUFJLGdCQUFnQjtBQUNsQjtBQUFBLEVBQ0o7QUFFRSxnQkFBYyxJQUFJLFNBQVMsSUFBSTtBQUMvQixNQUFJLFNBQVMsQ0FBRTtBQUNmLE1BQUliLFNBQVEsU0FBUyxPQUFPLE1BQU07QUFDbEMsTUFBSSxjQUFjLE9BQU87QUFFekIsV0FBUy9SLEtBQUksR0FBR2tCLEtBQUksR0FBR2xCLEtBQUkrUixPQUFNLFFBQVEvUixNQUFLO0FBQzVDLGFBQVNtUyxLQUFJLEdBQUdBLEtBQUksWUFBWSxRQUFRQSxNQUFLalIsTUFBSztBQUNoRCxjQUFRLE1BQU1BLEVBQUMsSUFBSSxPQUFPbEIsRUFBQyxJQUFJK1IsT0FBTS9SLEVBQUMsRUFBRSxRQUFRLFFBQVEsWUFBWW1TLEVBQUMsQ0FBQyxJQUFJLFlBQVlBLEVBQUMsSUFBSSxNQUFNSixPQUFNL1IsRUFBQztBQUFBLElBQzlHO0FBQUEsRUFDQTtBQUNBO0FBQ0EsSUFBSSxjQUFjLFNBQVM2UyxhQUFZLFNBQVM7QUFDOUMsTUFBSSxRQUFRLFNBQVMsUUFBUTtBQUMzQixRQUFJLFFBQVEsUUFBUTtBQUVwQjtBQUFBO0FBQUEsTUFDQSxNQUFNLFdBQVcsQ0FBQyxNQUFNO0FBQUEsTUFDeEIsTUFBTSxXQUFXLENBQUMsTUFBTTtBQUFBLE1BQUk7QUFFMUIsY0FBUSxRQUFRLElBQUk7QUFDcEIsY0FBUSxRQUFRO0FBQUEsSUFDdEI7QUFBQSxFQUNBO0FBQ0E7QUFJQSxTQUFTQyxTQUFPLE9BQU81TSxTQUFRO0FBQzdCLFVBQVFnSyxPQUFLLE9BQU9oSyxPQUFNLEdBQUM7QUFBQTtBQUFBLElBRXpCLEtBQUs7QUFDSCxhQUFPdUosV0FBUyxXQUFXLFFBQVE7QUFBQTtBQUFBLElBR3JDLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQTtBQUFBLElBRUwsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBO0FBQUEsSUFFTCxLQUFLO0FBQUEsSUFDTCxLQUFLO0FBQUEsSUFDTCxLQUFLO0FBQUEsSUFDTCxLQUFLO0FBQUEsSUFDTCxLQUFLO0FBQUEsSUFDTCxLQUFLO0FBQUE7QUFBQSxJQUVMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFDSCxhQUFPQSxXQUFTLFFBQVE7QUFBQTtBQUFBLElBRzFCLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFDSCxhQUFPQSxXQUFTLFFBQVFELFFBQU0sUUFBUUQsT0FBSyxRQUFRO0FBQUE7QUFBQSxJQUdyRCxLQUFLO0FBQUEsSUFDTCxLQUFLO0FBQ0gsYUFBT0UsV0FBUyxRQUFRRixPQUFLLFFBQVE7QUFBQTtBQUFBLElBR3ZDLEtBQUs7QUFDSCxhQUFPRSxXQUFTLFFBQVFGLE9BQUssVUFBVSxRQUFRO0FBQUE7QUFBQSxJQUdqRCxLQUFLO0FBQ0gsYUFBT0UsV0FBUyxRQUFRWSxVQUFRLE9BQU8sa0JBQWtCWixXQUFTLGFBQWFGLE9BQUssV0FBVyxJQUFJO0FBQUE7QUFBQSxJQUdyRyxLQUFLO0FBQ0gsYUFBT0UsV0FBUyxRQUFRRixPQUFLLGVBQWVjLFVBQVEsT0FBTyxlQUFlLEVBQUUsSUFBSTtBQUFBO0FBQUEsSUFHbEYsS0FBSztBQUNILGFBQU9aLFdBQVMsUUFBUUYsT0FBSyxtQkFBbUJjLFVBQVEsT0FBTyw2QkFBNkIsRUFBRSxJQUFJO0FBQUE7QUFBQSxJQUdwRyxLQUFLO0FBQ0gsYUFBT1osV0FBUyxRQUFRRixPQUFLYyxVQUFRLE9BQU8sVUFBVSxVQUFVLElBQUk7QUFBQTtBQUFBLElBR3RFLEtBQUs7QUFDSCxhQUFPWixXQUFTLFFBQVFGLE9BQUtjLFVBQVEsT0FBTyxTQUFTLGdCQUFnQixJQUFJO0FBQUE7QUFBQSxJQUczRSxLQUFLO0FBQ0gsYUFBT1osV0FBUyxTQUFTWSxVQUFRLE9BQU8sU0FBUyxFQUFFLElBQUlaLFdBQVMsUUFBUUYsT0FBS2MsVUFBUSxPQUFPLFFBQVEsVUFBVSxJQUFJO0FBQUE7QUFBQSxJQUdwSCxLQUFLO0FBQ0gsYUFBT1osV0FBU1ksVUFBUSxPQUFPLHNCQUFzQixPQUFPWixXQUFTLElBQUksSUFBSTtBQUFBO0FBQUEsSUFHL0UsS0FBSztBQUNILGFBQU9ZLFVBQVFBLFVBQVFBLFVBQVEsT0FBTyxnQkFBZ0JaLFdBQVMsSUFBSSxHQUFHLGVBQWVBLFdBQVMsSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJO0FBQUE7QUFBQSxJQUdwSCxLQUFLO0FBQUEsSUFDTCxLQUFLO0FBQ0gsYUFBT1ksVUFBUSxPQUFPLHFCQUFxQlosV0FBUyxRQUFhO0FBQUE7QUFBQSxJQUduRSxLQUFLO0FBQ0gsYUFBT1ksVUFBUUEsVUFBUSxPQUFPLHFCQUFxQlosV0FBUyxnQkFBZ0JGLE9BQUssY0FBYyxHQUFHLGNBQWMsU0FBUyxJQUFJRSxXQUFTLFFBQVE7QUFBQTtBQUFBLElBR2hKLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFDSCxhQUFPWSxVQUFRLE9BQU8sbUJBQW1CWixXQUFTLE1BQU0sSUFBSTtBQUFBO0FBQUEsSUFHOUQsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUVILFVBQUllLFNBQU8sS0FBSyxJQUFJLElBQUl0SyxVQUFTLEVBQUcsU0FBUWlLLFNBQU8sT0FBT2pLLFVBQVMsQ0FBQyxHQUFDO0FBQUE7QUFBQSxRQUVuRSxLQUFLO0FBRUgsY0FBSWlLLFNBQU8sT0FBT2pLLFVBQVMsQ0FBQyxNQUFNLEdBQUk7QUFBQTtBQUFBLFFBR3hDLEtBQUs7QUFDSCxpQkFBT21LLFVBQVEsT0FBTyxvQkFBb0IsT0FBT1osV0FBUyxZQUFpQkQsU0FBT1csU0FBTyxPQUFPakssVUFBUyxDQUFDLEtBQUssTUFBTSxPQUFPLFFBQVEsSUFBSTtBQUFBO0FBQUEsUUFHMUksS0FBSztBQUNILGlCQUFPLENBQUNvSyxVQUFRLE9BQU8sU0FBUyxJQUFJd0MsU0FBT3pDLFVBQVEsT0FBTyxXQUFXLGdCQUFnQixHQUFHbkssT0FBTSxJQUFJLFFBQVE7QUFBQSxNQUNwSDtBQUNNO0FBQUE7QUFBQSxJQUdGLEtBQUs7QUFFSCxVQUFJaUssU0FBTyxPQUFPakssVUFBUyxDQUFDLE1BQU0sSUFBSztBQUFBO0FBQUEsSUFHekMsS0FBSztBQUNILGNBQVFpSyxTQUFPLE9BQU9LLFNBQU8sS0FBSyxJQUFJLEtBQUssQ0FBQ0YsVUFBUSxPQUFPLFlBQVksS0FBSyxHQUFHLEdBQUM7QUFBQTtBQUFBLFFBRTlFLEtBQUs7QUFDSCxpQkFBT0QsVUFBUSxPQUFPLEtBQUssTUFBTVosUUFBTSxJQUFJO0FBQUE7QUFBQSxRQUc3QyxLQUFLO0FBQ0gsaUJBQU9ZLFVBQVEsT0FBTyx5QkFBeUIsT0FBT1osWUFBVVUsU0FBTyxPQUFPLEVBQUUsTUFBTSxLQUFLLFlBQVksTUFBTSxZQUFpQlYsV0FBUyxXQUFnQkYsT0FBSyxTQUFTLElBQUk7QUFBQSxNQUNuTDtBQUVNO0FBQUE7QUFBQSxJQUdGLEtBQUs7QUFDSCxjQUFRWSxTQUFPLE9BQU9qSyxVQUFTLEVBQUUsR0FBQztBQUFBO0FBQUEsUUFFaEMsS0FBSztBQUNILGlCQUFPdUosV0FBUyxRQUFRRixPQUFLYyxVQUFRLE9BQU8sc0JBQXNCLElBQUksSUFBSTtBQUFBO0FBQUEsUUFHNUUsS0FBSztBQUNILGlCQUFPWixXQUFTLFFBQVFGLE9BQUtjLFVBQVEsT0FBTyxzQkFBc0IsT0FBTyxJQUFJO0FBQUE7QUFBQSxRQUcvRSxLQUFLO0FBQ0gsaUJBQU9aLFdBQVMsUUFBUUYsT0FBS2MsVUFBUSxPQUFPLHNCQUFzQixJQUFJLElBQUk7QUFBQSxNQUNwRjtBQUVNLGFBQU9aLFdBQVMsUUFBUUYsT0FBSyxRQUFRO0FBQUEsRUFDM0M7QUFFRSxTQUFPO0FBQ1Q7QUFFQSxJQUFJd0QsYUFBVyxTQUFTLFNBQVMsU0FBU3JSLFFBQU8sVUFBVSxVQUFVO0FBQ25FLE1BQUksUUFBUSxTQUFTO0FBQUksUUFBSSxDQUFDLFFBQVEsUUFBUSxFQUFHLFNBQVEsUUFBUSxNQUFJO0FBQUEsTUFDbkUsS0FBS2tPO0FBQ0gsZ0JBQVEsUUFBUSxJQUFJa0QsU0FBTyxRQUFRLE9BQU8sUUFBUSxNQUFNO0FBQ3hEO0FBQUEsTUFFRixLQUFLaEQ7QUFDSCxlQUFPc0MsWUFBVSxDQUFDcEIsT0FBSyxTQUFTO0FBQUEsVUFDOUIsT0FBT1gsVUFBUSxRQUFRLE9BQU8sS0FBSyxNQUFNWixRQUFNO0FBQUEsUUFDdkQsQ0FBTyxDQUFDLEdBQUcsUUFBUTtBQUFBLE1BRWYsS0FBS0U7QUFDSCxZQUFJLFFBQVEsT0FBUSxRQUFPZ0IsVUFBUSxRQUFRLE9BQU8sU0FBVSxPQUFPO0FBQ2pFLGtCQUFRbkssUUFBTSxPQUFPLHVCQUF1QixHQUFDO0FBQUE7QUFBQSxZQUUzQyxLQUFLO0FBQUEsWUFDTCxLQUFLO0FBQ0gscUJBQU80TCxZQUFVLENBQUNwQixPQUFLLFNBQVM7QUFBQSxnQkFDOUIsT0FBTyxDQUFDWCxVQUFRLE9BQU8sZUFBZSxNQUFNYixRQUFNLElBQUksQ0FBQztBQUFBLGNBQ3JFLENBQWEsQ0FBQyxHQUFHLFFBQVE7QUFBQTtBQUFBLFlBR2YsS0FBSztBQUNILHFCQUFPNEMsWUFBVSxDQUFDcEIsT0FBSyxTQUFTO0FBQUEsZ0JBQzlCLE9BQU8sQ0FBQ1gsVUFBUSxPQUFPLGNBQWMsTUFBTVosV0FBUyxVQUFVLENBQUM7QUFBQSxjQUM3RSxDQUFhLEdBQUd1QixPQUFLLFNBQVM7QUFBQSxnQkFDaEIsT0FBTyxDQUFDWCxVQUFRLE9BQU8sY0FBYyxNQUFNYixRQUFNLElBQUksQ0FBQztBQUFBLGNBQ3BFLENBQWEsR0FBR3dCLE9BQUssU0FBUztBQUFBLGdCQUNoQixPQUFPLENBQUNYLFVBQVEsT0FBTyxjQUFjZCxPQUFLLFVBQVUsQ0FBQztBQUFBLGNBQ25FLENBQWEsQ0FBQyxHQUFHLFFBQVE7QUFBQSxVQUN6QjtBQUVRLGlCQUFPO0FBQUEsUUFDZixDQUFPO0FBQUEsSUFDUDtBQUFBO0FBQ0E7QUFFQSxJQUFJLHVCQUF1QixDQUFDd0QsVUFBUTtBQUVwQyxJQUFJLGNBQWMsU0FBU0MsYUFBWTFNLFVBQVM7QUFDOUMsTUFBSSxNQUFNQSxTQUFRO0FBRWxCLE1BQUksUUFBUSxPQUFPO0FBQ2pCLFFBQUksWUFBWSxTQUFTLGlCQUFpQixtQ0FBbUM7QUFLN0UsVUFBTSxVQUFVLFFBQVEsS0FBSyxXQUFXLFNBQVV5SyxPQUFNO0FBT3RELFVBQUksdUJBQXVCQSxNQUFLLGFBQWEsY0FBYztBQUUzRCxVQUFJLHFCQUFxQixRQUFRLEdBQUcsTUFBTSxJQUFJO0FBQzVDO0FBQUEsTUFDUjtBQUVNLGVBQVMsS0FBSyxZQUFZQSxLQUFJO0FBQzlCLE1BQUFBLE1BQUssYUFBYSxVQUFVLEVBQUU7QUFBQSxJQUNwQyxDQUFLO0FBQUEsRUFDTDtBQUVFLE1BQUksZ0JBQWdCekssU0FBUSxpQkFBaUI7QUFFN0MsTUFBSSxXQUFXLENBQUU7QUFDakIsTUFBSTtBQUNKLE1BQUksaUJBQWlCLENBQUU7QUFFdkI7QUFDRSxnQkFBWUEsU0FBUSxhQUFhLFNBQVM7QUFDMUMsVUFBTSxVQUFVLFFBQVE7QUFBQTtBQUFBO0FBQUEsTUFFeEIsU0FBUyxpQkFBaUIsMEJBQTJCLE1BQU0sS0FBTTtBQUFBLE1BQUcsU0FBVXlLLE9BQU07QUFDbEYsWUFBSSxTQUFTQSxNQUFLLGFBQWEsY0FBYyxFQUFFLE1BQU0sR0FBRztBQUV4RCxpQkFBUy9RLEtBQUksR0FBR0EsS0FBSSxPQUFPLFFBQVFBLE1BQUs7QUFDdEMsbUJBQVMsT0FBT0EsRUFBQyxDQUFDLElBQUk7QUFBQSxRQUM5QjtBQUVNLHVCQUFlLEtBQUsrUSxLQUFJO0FBQUEsTUFDOUI7QUFBQSxJQUFLO0FBQUEsRUFDTDtBQUVFLE1BQUk7QUFFSixNQUFJLHFCQUFxQixDQUFDLFFBQVEsV0FBVztBQUU3QztBQUNFLFFBQUk7QUFDSixRQUFJLG9CQUFvQixDQUFDc0IsYUFBV0UsWUFBVSxTQUFVLE1BQU07QUFDNUQsbUJBQWEsT0FBTyxJQUFJO0FBQUEsSUFDOUIsQ0FBSyxDQUFDO0FBQ0YsUUFBSSxhQUFhRCxhQUFXLG1CQUFtQixPQUFPLGVBQWUsaUJBQWlCLENBQUM7QUFFdkYsUUFBSSxTQUFTLFNBQVNXLFFBQU8sUUFBUTtBQUNuQyxhQUFPYixZQUFVUCxVQUFRLE1BQU0sR0FBRyxVQUFVO0FBQUEsSUFDN0M7QUFFRCxjQUFVLFNBQVMsT0FBTyxVQUFVLFlBQVksT0FBTyxhQUFhO0FBQ2xFLHFCQUFlO0FBRWYsYUFBTyxXQUFXLFdBQVcsTUFBTSxXQUFXLFNBQVMsTUFBTSxXQUFXLE1BQU07QUFFOUUsVUFBSSxhQUFhO0FBQ2YsUUFBQS9NLE9BQU0sU0FBUyxXQUFXLElBQUksSUFBSTtBQUFBLE1BQzFDO0FBQUEsSUFDSztBQUFBLEVBQ0w7QUFFRSxNQUFJQSxTQUFRO0FBQUEsSUFDVjtBQUFBLElBQ0EsT0FBTyxJQUFJLFdBQVc7QUFBQSxNQUNwQjtBQUFBLE1BQ0E7QUFBQSxNQUNBLE9BQU93QixTQUFRO0FBQUEsTUFDZixRQUFRQSxTQUFRO0FBQUEsTUFDaEIsU0FBU0EsU0FBUTtBQUFBLE1BQ2pCLGdCQUFnQkEsU0FBUTtBQUFBLElBQzlCLENBQUs7QUFBQSxJQUNELE9BQU9BLFNBQVE7QUFBQSxJQUNmO0FBQUEsSUFDQSxZQUFZLENBQUU7QUFBQSxJQUNkLFFBQVE7QUFBQSxFQUNUO0FBQ0QsRUFBQXhCLE9BQU0sTUFBTSxRQUFRLGNBQWM7QUFDbEMsU0FBT0E7QUFDVDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFhYSxNQUFJM0IsS0FBRSxlQUFhLE9BQU8sVUFBUSxPQUFPLEtBQUlVLEtBQUVWLEtBQUUsT0FBTyxJQUFJLGVBQWUsSUFBRSxPQUFNUyxLQUFFVCxLQUFFLE9BQU8sSUFBSSxjQUFjLElBQUUsT0FBTWhDLEtBQUVnQyxLQUFFLE9BQU8sSUFBSSxnQkFBZ0IsSUFBRSxPQUFNMUMsS0FBRTBDLEtBQUUsT0FBTyxJQUFJLG1CQUFtQixJQUFFLE9BQU1ZLEtBQUVaLEtBQUUsT0FBTyxJQUFJLGdCQUFnQixJQUFFLE9BQU1XLEtBQUVYLEtBQUUsT0FBTyxJQUFJLGdCQUFnQixJQUFFLE9BQU1qQyxLQUFFaUMsS0FBRSxPQUFPLElBQUksZUFBZSxJQUFFLE9BQU1oQixLQUFFZ0IsS0FBRSxPQUFPLElBQUksa0JBQWtCLElBQUUsT0FBTWEsS0FBRWIsS0FBRSxPQUFPLElBQUksdUJBQXVCLElBQUUsT0FBTWYsS0FBRWUsS0FBRSxPQUFPLElBQUksbUJBQW1CLElBQUUsT0FBTWQsS0FBRWMsS0FBRSxPQUFPLElBQUksZ0JBQWdCLElBQUUsT0FBTWIsS0FBRWEsS0FDcGYsT0FBTyxJQUFJLHFCQUFxQixJQUFFLE9BQU1aLEtBQUVZLEtBQUUsT0FBTyxJQUFJLFlBQVksSUFBRSxPQUFNWCxLQUFFVyxLQUFFLE9BQU8sSUFBSSxZQUFZLElBQUUsT0FBTVQsS0FBRVMsS0FBRSxPQUFPLElBQUksYUFBYSxJQUFFLE9BQU1SLEtBQUVRLEtBQUUsT0FBTyxJQUFJLG1CQUFtQixJQUFFLE9BQU05QyxLQUFFOEMsS0FBRSxPQUFPLElBQUksaUJBQWlCLElBQUUsT0FBTTVDLEtBQUU0QyxLQUFFLE9BQU8sSUFBSSxhQUFhLElBQUU7QUFDbFEsV0FBU1AsR0FBRUUsSUFBRTtBQUFDLFFBQUcsYUFBVyxPQUFPQSxNQUFHLFNBQU9BLElBQUU7QUFBQyxVQUFJTCxLQUFFSyxHQUFFO0FBQVMsY0FBT0wsSUFBRztBQUFBLFFBQUEsS0FBS29CO0FBQUUsa0JBQU9mLEtBQUVBLEdBQUUsTUFBS0EsSUFBQztBQUFBLFlBQUUsS0FBS1g7QUFBQSxZQUFFLEtBQUs2QjtBQUFBLFlBQUUsS0FBSzdDO0FBQUEsWUFBRSxLQUFLNEM7QUFBQSxZQUFFLEtBQUt0RDtBQUFBLFlBQUUsS0FBSzRCO0FBQUUscUJBQU9TO0FBQUEsWUFBRTtBQUFRLHNCQUFPQSxLQUFFQSxNQUFHQSxHQUFFLFVBQVNBLElBQUM7QUFBQSxnQkFBRSxLQUFLNUI7QUFBQSxnQkFBRSxLQUFLa0I7QUFBQSxnQkFBRSxLQUFLSTtBQUFBLGdCQUFFLEtBQUtEO0FBQUEsZ0JBQUUsS0FBS3VCO0FBQUUseUJBQU9oQjtBQUFBLGdCQUFFO0FBQVEseUJBQU9MO0FBQUEsY0FBQztBQUFBLFVBQUM7QUFBQSxRQUFDLEtBQUttQjtBQUFFLGlCQUFPbkI7QUFBQSxNQUFDO0FBQUEsSUFBQztBQUFBLEVBQUM7QUFBQyxXQUFTSSxHQUFFQyxJQUFFO0FBQUMsV0FBT0YsR0FBRUUsRUFBQyxNQUFJa0I7QUFBQSxFQUFDO0FBQUNrUCwyQkFBaUIsWUFBQy9RO0FBQUUrUSwyQkFBQSxpQkFBdUJsUDtBQUFFa1AsMkJBQXVCLGtCQUFDaFM7QUFBRWdTLDZDQUF3QnBQO0FBQUVvUCwyQkFBQSxVQUFnQnJQO0FBQUVxUCwyQkFBa0IsYUFBQzlRO0FBQUU4USwyQkFBQSxXQUFpQi9SO0FBQUUrUiwyQkFBWSxPQUFDMVE7QUFBRTBRLGtDQUFhM1E7QUFBRTJRLDJCQUFBLFNBQWV0UDtBQUNoZnNQLDJCQUFBLFdBQWlCblA7QUFBRW1QLDJCQUFBLGFBQW1CelM7QUFBRXlTLDJCQUFBLFdBQWlCN1E7QUFBRTZRLDJCQUFBLGNBQW9CLFNBQVNwUSxJQUFFO0FBQUMsV0FBT0QsR0FBRUMsRUFBQyxLQUFHRixHQUFFRSxFQUFDLE1BQUlYO0FBQUEsRUFBQztBQUFFK1EsMkJBQXdCLG1CQUFDclE7QUFBRXFRLDJCQUF5QixvQkFBQyxTQUFTcFEsSUFBRTtBQUFDLFdBQU9GLEdBQUVFLEVBQUMsTUFBSTVCO0FBQUEsRUFBQztBQUFFZ1MsMkJBQXlCLG9CQUFDLFNBQVNwUSxJQUFFO0FBQUMsV0FBT0YsR0FBRUUsRUFBQyxNQUFJZ0I7QUFBQSxFQUFDO0FBQUVvUCwyQkFBaUIsWUFBQyxTQUFTcFEsSUFBRTtBQUFDLFdBQU0sYUFBVyxPQUFPQSxNQUFHLFNBQU9BLE1BQUdBLEdBQUUsYUFBV2U7QUFBQSxFQUFDO0FBQUVxUCwyQkFBb0IsZUFBQyxTQUFTcFEsSUFBRTtBQUFDLFdBQU9GLEdBQUVFLEVBQUMsTUFBSVY7QUFBQSxFQUFDO0FBQUU4USwyQkFBa0IsYUFBQyxTQUFTcFEsSUFBRTtBQUFDLFdBQU9GLEdBQUVFLEVBQUMsTUFBSTNCO0FBQUEsRUFBQztBQUFFK1IsMkJBQWMsU0FBQyxTQUFTcFEsSUFBRTtBQUFDLFdBQU9GLEdBQUVFLEVBQUMsTUFBSU47QUFBQSxFQUFDO0FBQzFkMFEsMkJBQUEsU0FBZSxTQUFTcFEsSUFBRTtBQUFDLFdBQU9GLEdBQUVFLEVBQUMsTUFBSVA7QUFBQSxFQUFDO0FBQUUyUSxzQ0FBaUIsU0FBU3BRLElBQUU7QUFBQyxXQUFPRixHQUFFRSxFQUFDLE1BQUljO0FBQUEsRUFBQztBQUFFc1AsMkJBQWtCLGFBQUMsU0FBU3BRLElBQUU7QUFBQyxXQUFPRixHQUFFRSxFQUFDLE1BQUlpQjtBQUFBLEVBQUM7QUFBRW1QLDJCQUFBLGVBQXFCLFNBQVNwUSxJQUFFO0FBQUMsV0FBT0YsR0FBRUUsRUFBQyxNQUFJckM7QUFBQSxFQUFDO0FBQUV5UywyQkFBa0IsYUFBQyxTQUFTcFEsSUFBRTtBQUFDLFdBQU9GLEdBQUVFLEVBQUMsTUFBSVQ7QUFBQSxFQUFDO0FBQ2hONlEsMkJBQUEscUJBQUMsU0FBU3BRLElBQUU7QUFBQyxXQUFNLGFBQVcsT0FBT0EsTUFBRyxlQUFhLE9BQU9BLE1BQUdBLE9BQUkzQixNQUFHMkIsT0FBSWtCLE1BQUdsQixPQUFJaUIsTUFBR2pCLE9BQUlyQyxNQUFHcUMsT0FBSVQsTUFBR1MsT0FBSVIsTUFBRyxhQUFXLE9BQU9RLE1BQUcsU0FBT0EsT0FBSUEsR0FBRSxhQUFXTixNQUFHTSxHQUFFLGFBQVdQLE1BQUdPLEdBQUUsYUFBV2dCLE1BQUdoQixHQUFFLGFBQVc1QixNQUFHNEIsR0FBRSxhQUFXVixNQUFHVSxHQUFFLGFBQVdILE1BQUdHLEdBQUUsYUFBV3pDLE1BQUd5QyxHQUFFLGFBQVd2QyxNQUFHdUMsR0FBRSxhQUFXSjtBQUFBLEVBQUU7QUFBRXdRLDJCQUFjLFNBQUN0UTs7Ozs7OztBQ1p4UjtBQUNsQ3VRLGNBQUEsVUFBVXpPLGdDQUEwQztBQUFBOzs7Ozs7OztBQ0Q3RCxNQUFJME8sV0FBVTFPLGlCQUFtQjtBQU1qQyxNQUFJLGdCQUFnQjtBQUFBLElBQ2xCLG1CQUFtQjtBQUFBLElBQ25CLGFBQWE7QUFBQSxJQUNiLGNBQWM7QUFBQSxJQUNkLGNBQWM7QUFBQSxJQUNkLGFBQWE7QUFBQSxJQUNiLGlCQUFpQjtBQUFBLElBQ2pCLDBCQUEwQjtBQUFBLElBQzFCLDBCQUEwQjtBQUFBLElBQzFCLFFBQVE7QUFBQSxJQUNSLFdBQVc7QUFBQSxJQUNYLE1BQU07QUFBQSxFQUNQO0FBQ0QsTUFBSSxnQkFBZ0I7QUFBQSxJQUNsQixNQUFNO0FBQUEsSUFDTixRQUFRO0FBQUEsSUFDUixXQUFXO0FBQUEsSUFDWCxRQUFRO0FBQUEsSUFDUixRQUFRO0FBQUEsSUFDUixXQUFXO0FBQUEsSUFDWCxPQUFPO0FBQUEsRUFDUjtBQUNELE1BQUksc0JBQXNCO0FBQUEsSUFDeEIsWUFBWTtBQUFBLElBQ1osUUFBUTtBQUFBLElBQ1IsY0FBYztBQUFBLElBQ2QsYUFBYTtBQUFBLElBQ2IsV0FBVztBQUFBLEVBQ1o7QUFDRCxNQUFJLGVBQWU7QUFBQSxJQUNqQixZQUFZO0FBQUEsSUFDWixTQUFTO0FBQUEsSUFDVCxjQUFjO0FBQUEsSUFDZCxhQUFhO0FBQUEsSUFDYixXQUFXO0FBQUEsSUFDWCxNQUFNO0FBQUEsRUFDUDtBQUNELE1BQUksZUFBZSxDQUFFO0FBQ3JCLGVBQWEwTyxTQUFRLFVBQVUsSUFBSTtBQUNuQyxlQUFhQSxTQUFRLElBQUksSUFBSTtBQUU3QixXQUFTLFdBQVcsV0FBVztBQUU3QixRQUFJQSxTQUFRLE9BQU8sU0FBUyxHQUFHO0FBQzdCLGFBQU87QUFBQSxJQUNSO0FBR0QsV0FBTyxhQUFhLFVBQVUsVUFBVSxDQUFDLEtBQUs7QUFBQSxFQUNoRDtBQUVBLE1BQUl2RixrQkFBaUIsT0FBTztBQUM1QixNQUFJLHNCQUFzQixPQUFPO0FBQ2pDLE1BQUksd0JBQXdCLE9BQU87QUFDbkMsTUFBSSwyQkFBMkIsT0FBTztBQUN0QyxNQUFJaEosa0JBQWlCLE9BQU87QUFDNUIsTUFBSSxrQkFBa0IsT0FBTztBQUM3QixXQUFTd08sc0JBQXFCLGlCQUFpQixpQkFBaUIsV0FBVztBQUN6RSxRQUFJLE9BQU8sb0JBQW9CLFVBQVU7QUFFdkMsVUFBSSxpQkFBaUI7QUFDbkIsWUFBSSxxQkFBcUJ4TyxnQkFBZSxlQUFlO0FBRXZELFlBQUksc0JBQXNCLHVCQUF1QixpQkFBaUI7QUFDaEUsVUFBQXdPLHNCQUFxQixpQkFBaUIsb0JBQW9CLFNBQVM7QUFBQSxRQUMzRTtBQUFBLE1BQ0E7QUFFSSxVQUFJLE9BQU8sb0JBQW9CLGVBQWU7QUFFOUMsVUFBSSx1QkFBdUI7QUFDekIsZUFBTyxLQUFLLE9BQU8sc0JBQXNCLGVBQWUsQ0FBQztBQUFBLE1BQy9EO0FBRUksVUFBSSxnQkFBZ0IsV0FBVyxlQUFlO0FBQzlDLFVBQUksZ0JBQWdCLFdBQVcsZUFBZTtBQUU5QyxlQUFTclQsS0FBSSxHQUFHQSxLQUFJLEtBQUssUUFBUSxFQUFFQSxJQUFHO0FBQ3BDLFlBQUksTUFBTSxLQUFLQSxFQUFDO0FBRWhCLFlBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxFQUFFLGFBQWEsVUFBVSxHQUFHLE1BQU0sRUFBRSxpQkFBaUIsY0FBYyxHQUFHLE1BQU0sRUFBRSxpQkFBaUIsY0FBYyxHQUFHLElBQUk7QUFDN0ksY0FBSSxhQUFhLHlCQUF5QixpQkFBaUIsR0FBRztBQUU5RCxjQUFJO0FBRUYsWUFBQTZOLGdCQUFlLGlCQUFpQixLQUFLLFVBQVU7QUFBQSxVQUNoRCxTQUFRMU0sSUFBRztBQUFBLFVBQUE7QUFBQSxRQUNwQjtBQUFBLE1BQ0E7QUFBQSxJQUNBO0FBRUUsV0FBTztBQUFBLEVBQ1Q7QUFFQSw2QkFBaUJrUzs7Ozs7QUNoR2pCLElBQUksdUJBQXdCLFNBQVUsaUJBQWlCLGlCQUFpQjtBQUN0RSxTQUFPLHVCQUF1QixpQkFBaUIsZUFBZTtBQUNoRTtBQ1JBLElBQUlDLGNBQVk7QUFFaEIsU0FBUyxvQkFBb0IsWUFBWSxrQkFBa0JDLGFBQVk7QUFDckUsTUFBSSxlQUFlO0FBQ25CLEVBQUFBLFlBQVcsTUFBTSxHQUFHLEVBQUUsUUFBUSxTQUFVLFdBQVc7QUFDakQsUUFBSSxXQUFXLFNBQVMsTUFBTSxRQUFXO0FBQ3ZDLHVCQUFpQixLQUFLLFdBQVcsU0FBUyxJQUFJLEdBQUc7QUFBQSxJQUNsRCxXQUFVLFdBQVc7QUFDcEIsc0JBQWdCLFlBQVk7QUFBQSxJQUNsQztBQUFBLEVBQ0EsQ0FBRztBQUNELFNBQU87QUFDVDtBQUNBLElBQUksaUJBQWlCLFNBQVNDLGdCQUFlMU8sUUFBTyxZQUFZLGFBQWE7QUFDM0UsTUFBSSxZQUFZQSxPQUFNLE1BQU0sTUFBTSxXQUFXO0FBRTdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBS0MsZ0JBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFJakJ3TyxnQkFBYyxVQUFXeE8sT0FBTSxXQUFXLFNBQVMsTUFBTTtBQUFBLElBQVc7QUFDbEUsSUFBQUEsT0FBTSxXQUFXLFNBQVMsSUFBSSxXQUFXO0FBQUEsRUFDN0M7QUFDQTtBQUNBLElBQUksZUFBZSxTQUFTMk8sY0FBYTNPLFFBQU8sWUFBWSxhQUFhO0FBQ3ZFLGlCQUFlQSxRQUFPLFlBQVksV0FBVztBQUM3QyxNQUFJLFlBQVlBLE9BQU0sTUFBTSxNQUFNLFdBQVc7QUFFN0MsTUFBSUEsT0FBTSxTQUFTLFdBQVcsSUFBSSxNQUFNLFFBQVc7QUFDakQsUUFBSSxVQUFVO0FBRWQsT0FBRztBQUNELE1BQUFBLE9BQU0sT0FBTyxlQUFlLFVBQVUsTUFBTSxZQUFZLElBQUksU0FBU0EsT0FBTSxPQUFPLElBQUk7QUFFdEYsZ0JBQVUsUUFBUTtBQUFBLElBQ25CLFNBQVEsWUFBWTtBQUFBLEVBQ3pCO0FBQ0E7QUN2Q0EsU0FBUyxRQUFRLEtBQUs7QUFNcEIsTUFBSWhCLEtBQUk7QUFFUixNQUFJNUMsSUFDQWxCLEtBQUksR0FDSixNQUFNLElBQUk7QUFFZCxTQUFPLE9BQU8sR0FBRyxFQUFFQSxJQUFHLE9BQU8sR0FBRztBQUM5QixJQUFBa0IsS0FBSSxJQUFJLFdBQVdsQixFQUFDLElBQUksT0FBUSxJQUFJLFdBQVcsRUFBRUEsRUFBQyxJQUFJLFFBQVMsS0FBSyxJQUFJLFdBQVcsRUFBRUEsRUFBQyxJQUFJLFFBQVMsTUFBTSxJQUFJLFdBQVcsRUFBRUEsRUFBQyxJQUFJLFFBQVM7QUFDeEksSUFBQWtCO0FBQUEsS0FFQ0EsS0FBSSxTQUFVLGVBQWVBLE9BQU0sTUFBTSxTQUFVO0FBQ3BELElBQUFBO0FBQUEsSUFFQUEsT0FBTTtBQUNOLElBQUE0QztBQUFBLEtBRUM1QyxLQUFJLFNBQVUsZUFBZUEsT0FBTSxNQUFNLFNBQVU7QUFBQSxLQUVuRDRDLEtBQUksU0FBVSxlQUFlQSxPQUFNLE1BQU0sU0FBVTtBQUFBLEVBQ3JEO0FBR0QsVUFBUSxLQUFHO0FBQUEsSUFDVCxLQUFLO0FBQ0gsTUFBQUEsT0FBTSxJQUFJLFdBQVc5RCxLQUFJLENBQUMsSUFBSSxRQUFTO0FBQUEsSUFFekMsS0FBSztBQUNILE1BQUE4RCxPQUFNLElBQUksV0FBVzlELEtBQUksQ0FBQyxJQUFJLFFBQVM7QUFBQSxJQUV6QyxLQUFLO0FBQ0gsTUFBQThELE1BQUssSUFBSSxXQUFXOUQsRUFBQyxJQUFJO0FBQ3pCLE1BQUE4RDtBQUFBLE9BRUNBLEtBQUksU0FBVSxlQUFlQSxPQUFNLE1BQU0sU0FBVTtBQUFBLEVBQ3ZEO0FBSUQsRUFBQUEsTUFBS0EsT0FBTTtBQUNYLEVBQUFBO0FBQUEsR0FFQ0EsS0FBSSxTQUFVLGVBQWVBLE9BQU0sTUFBTSxTQUFVO0FBQ3BELFdBQVNBLEtBQUlBLE9BQU0sUUFBUSxHQUFHLFNBQVMsRUFBRTtBQUMzQztBQ3BEQSxJQUFJNFAsaUJBQWU7QUFBQSxFQUNqQix5QkFBeUI7QUFBQSxFQUN6QixhQUFhO0FBQUEsRUFDYixtQkFBbUI7QUFBQSxFQUNuQixrQkFBa0I7QUFBQSxFQUNsQixrQkFBa0I7QUFBQSxFQUNsQixTQUFTO0FBQUEsRUFDVCxjQUFjO0FBQUEsRUFDZCxpQkFBaUI7QUFBQSxFQUNqQixhQUFhO0FBQUEsRUFDYixTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixjQUFjO0FBQUEsRUFDZCxZQUFZO0FBQUEsRUFDWixjQUFjO0FBQUEsRUFDZCxXQUFXO0FBQUEsRUFDWCxTQUFTO0FBQUEsRUFDVCxZQUFZO0FBQUEsRUFDWixhQUFhO0FBQUEsRUFDYixjQUFjO0FBQUEsRUFDZCxZQUFZO0FBQUEsRUFDWixlQUFlO0FBQUEsRUFDZixnQkFBZ0I7QUFBQSxFQUNoQixpQkFBaUI7QUFBQSxFQUNqQixXQUFXO0FBQUEsRUFDWCxlQUFlO0FBQUEsRUFDZixjQUFjO0FBQUEsRUFDZCxrQkFBa0I7QUFBQSxFQUNsQixZQUFZO0FBQUEsRUFDWixZQUFZO0FBQUEsRUFDWixTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixpQkFBaUI7QUFBQTtBQUFBLEVBRWpCLGFBQWE7QUFBQSxFQUNiLGNBQWM7QUFBQSxFQUNkLGFBQWE7QUFBQSxFQUNiLGlCQUFpQjtBQUFBLEVBQ2pCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGVBQWU7QUFBQSxFQUNmLGFBQWE7QUFDZjtBQzdDQSxJQUFJckUsa0JBQWdCO0FBRXBCLElBQUksaUJBQWlCO0FBQ3JCLElBQUksaUJBQWlCO0FBRXJCLElBQUksbUJBQW1CLFNBQVNzRSxrQkFBaUIsVUFBVTtBQUN6RCxTQUFPLFNBQVMsV0FBVyxDQUFDLE1BQU07QUFDcEM7QUFFQSxJQUFJLHFCQUFxQixTQUFTQyxvQkFBbUIsT0FBTztBQUMxRCxTQUFPLFNBQVMsUUFBUSxPQUFPLFVBQVU7QUFDM0M7QUFFQSxJQUFJLG1CQUFrQyx3QkFBUSxTQUFVLFdBQVc7QUFDakUsU0FBTyxpQkFBaUIsU0FBUyxJQUFJLFlBQVksVUFBVSxRQUFRLGdCQUFnQixLQUFLLEVBQUUsWUFBYTtBQUN6RyxDQUFDO0FBRUQsSUFBSSxvQkFBb0IsU0FBU0MsbUJBQWtCLEtBQUssT0FBTztBQUM3RCxVQUFRLEtBQUc7QUFBQSxJQUNULEtBQUs7QUFBQSxJQUNMLEtBQUssaUJBQ0g7QUFDRSxVQUFJLE9BQU8sVUFBVSxVQUFVO0FBQzdCLGVBQU8sTUFBTSxRQUFRLGdCQUFnQixTQUFVck4sUUFBTyxJQUFJLElBQUk7QUFDNUQsbUJBQVM7QUFBQSxZQUNQLE1BQU07QUFBQSxZQUNOLFFBQVE7QUFBQSxZQUNSLE1BQU07QUFBQSxVQUNQO0FBQ0QsaUJBQU87QUFBQSxRQUNuQixDQUFXO0FBQUEsTUFDWDtBQUFBLElBQ0E7QUFBQSxFQUNBO0FBRUUsTUFBSXNOLGVBQVMsR0FBRyxNQUFNLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLE9BQU8sVUFBVSxZQUFZLFVBQVUsR0FBRztBQUM3RixXQUFPLFFBQVE7QUFBQSxFQUNuQjtBQUVFLFNBQU87QUFDVDtBQUVBLElBQUksNkJBQTZCO0FBRWpDLFNBQVMsb0JBQW9CLGFBQWEsWUFBWSxlQUFlO0FBQ25FLE1BQUksaUJBQWlCLE1BQU07QUFDekIsV0FBTztBQUFBLEVBQ1g7QUFFRSxNQUFJLG9CQUFvQjtBQUV4QixNQUFJLGtCQUFrQixxQkFBcUIsUUFBVztBQUVwRCxXQUFPO0FBQUEsRUFDWDtBQUVFLFVBQVEsT0FBTyxlQUFhO0FBQUEsSUFDMUIsS0FBSyxXQUNIO0FBQ0UsYUFBTztBQUFBLElBQ2Y7QUFBQSxJQUVJLEtBQUssVUFDSDtBQUNFLFVBQUlDLGFBQVk7QUFFaEIsVUFBSUEsV0FBVSxTQUFTLEdBQUc7QUFDeEIsaUJBQVM7QUFBQSxVQUNQLE1BQU1BLFdBQVU7QUFBQSxVQUNoQixRQUFRQSxXQUFVO0FBQUEsVUFDbEIsTUFBTTtBQUFBLFFBQ1A7QUFDRCxlQUFPQSxXQUFVO0FBQUEsTUFDM0I7QUFFUSxVQUFJLG1CQUFtQjtBQUV2QixVQUFJLGlCQUFpQixXQUFXLFFBQVc7QUFDekMsWUFBSXBULFFBQU8saUJBQWlCO0FBRTVCLFlBQUlBLFVBQVMsUUFBVztBQUd0QixpQkFBT0EsVUFBUyxRQUFXO0FBQ3pCLHFCQUFTO0FBQUEsY0FDUCxNQUFNQSxNQUFLO0FBQUEsY0FDWCxRQUFRQSxNQUFLO0FBQUEsY0FDYixNQUFNO0FBQUEsWUFDUDtBQUNELFlBQUFBLFFBQU9BLE1BQUs7QUFBQSxVQUMxQjtBQUFBLFFBQ0E7QUFFVSxZQUFJLFNBQVMsaUJBQWlCLFNBQVM7QUFDdkMsZUFBTztBQUFBLE1BQ2pCO0FBRVEsYUFBTyx1QkFBdUIsYUFBYSxZQUFZLGFBQWE7QUFBQSxJQUM1RTtBQUFBLElBRUksS0FBSyxZQUNIO0FBQ0UsVUFBSSxnQkFBZ0IsUUFBVztBQUM3QixZQUFJLGlCQUFpQjtBQUNyQixZQUFJLFNBQVMsY0FBYyxXQUFXO0FBQ3RDLGlCQUFTO0FBQ1QsZUFBTyxvQkFBb0IsYUFBYSxZQUFZLE1BQU07QUFBQSxNQUNwRTtBQUVRO0FBQUEsSUFDUjtBQUFBLEVBQ0c7QUFHRCxNQUFJLFdBQVc7QUFFZixNQUFJLGNBQWMsTUFBTTtBQUN0QixXQUFPO0FBQUEsRUFDWDtBQUVFLE1BQUksU0FBUyxXQUFXLFFBQVE7QUFDaEMsU0FBTyxXQUFXLFNBQVksU0FBUztBQUN6QztBQUVBLFNBQVMsdUJBQXVCLGFBQWEsWUFBWSxLQUFLO0FBQzVELE1BQUksU0FBUztBQUViLE1BQUksTUFBTSxRQUFRLEdBQUcsR0FBRztBQUN0QixhQUFTWCxLQUFJLEdBQUdBLEtBQUksSUFBSSxRQUFRQSxNQUFLO0FBQ25DLGdCQUFVLG9CQUFvQixhQUFhLFlBQVksSUFBSUEsRUFBQyxDQUFDLElBQUk7QUFBQSxJQUN2RTtBQUFBLEVBQ0EsT0FBUztBQUNMLGFBQVMsT0FBTyxLQUFLO0FBQ25CLFVBQUksUUFBUSxJQUFJLEdBQUc7QUFFbkIsVUFBSSxPQUFPLFVBQVUsVUFBVTtBQUM3QixZQUFJLFdBQVc7QUFFZixZQUFJLGNBQWMsUUFBUSxXQUFXLFFBQVEsTUFBTSxRQUFXO0FBQzVELG9CQUFVLE1BQU0sTUFBTSxXQUFXLFFBQVEsSUFBSTtBQUFBLFFBQ3ZELFdBQW1CLG1CQUFtQixRQUFRLEdBQUc7QUFDdkMsb0JBQVUsaUJBQWlCLEdBQUcsSUFBSSxNQUFNLGtCQUFrQixLQUFLLFFBQVEsSUFBSTtBQUFBLFFBQ3JGO0FBQUEsTUFDQSxPQUFhO0FBQ0wsWUFBSSxRQUFRLDJCQUEyQnFQLGlCQUFlO0FBQ3BELGdCQUFNLElBQUksTUFBTSwwQkFBMEI7QUFBQSxRQUNwRDtBQUVRLFlBQUksTUFBTSxRQUFRLEtBQUssS0FBSyxPQUFPLE1BQU0sQ0FBQyxNQUFNLGFBQWEsY0FBYyxRQUFRLFdBQVcsTUFBTSxDQUFDLENBQUMsTUFBTSxTQUFZO0FBQ3RILG1CQUFTLEtBQUssR0FBRyxLQUFLLE1BQU0sUUFBUSxNQUFNO0FBQ3hDLGdCQUFJLG1CQUFtQixNQUFNLEVBQUUsQ0FBQyxHQUFHO0FBQ2pDLHdCQUFVLGlCQUFpQixHQUFHLElBQUksTUFBTSxrQkFBa0IsS0FBSyxNQUFNLEVBQUUsQ0FBQyxJQUFJO0FBQUEsWUFDMUY7QUFBQSxVQUNBO0FBQUEsUUFDQSxPQUFlO0FBQ0wsY0FBSSxlQUFlLG9CQUFvQixhQUFhLFlBQVksS0FBSztBQUVyRSxrQkFBUSxLQUFHO0FBQUEsWUFDVCxLQUFLO0FBQUEsWUFDTCxLQUFLLGlCQUNIO0FBQ0Usd0JBQVUsaUJBQWlCLEdBQUcsSUFBSSxNQUFNLGVBQWU7QUFDdkQ7QUFBQSxZQUNoQjtBQUFBLFlBRVksU0FDRTtBQUVFLHdCQUFVLE1BQU0sTUFBTSxlQUFlO0FBQUEsWUFDckQ7QUFBQSxVQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNBO0FBQUEsRUFDQTtBQUVFLFNBQU87QUFDVDtBQUVBLElBQUksZUFBZTtBQUduQixJQUFJO0FBQ0osU0FBUyxnQkFBZ0IsTUFBTSxZQUFZLGFBQWE7QUFDdEQsTUFBSSxLQUFLLFdBQVcsS0FBSyxPQUFPLEtBQUssQ0FBQyxNQUFNLFlBQVksS0FBSyxDQUFDLE1BQU0sUUFBUSxLQUFLLENBQUMsRUFBRSxXQUFXLFFBQVc7QUFDeEcsV0FBTyxLQUFLLENBQUM7QUFBQSxFQUNqQjtBQUVFLE1BQUksYUFBYTtBQUNqQixNQUFJLFNBQVM7QUFDYixXQUFTO0FBQ1QsTUFBSSxVQUFVLEtBQUssQ0FBQztBQUVwQixNQUFJLFdBQVcsUUFBUSxRQUFRLFFBQVEsUUFBVztBQUNoRCxpQkFBYTtBQUNiLGNBQVUsb0JBQW9CLGFBQWEsWUFBWSxPQUFPO0FBQUEsRUFDbEUsT0FBUztBQUNMLFFBQUksdUJBQXVCO0FBRTNCLGNBQVUscUJBQXFCLENBQUM7QUFBQSxFQUNqQztBQUdELFdBQVNyUCxLQUFJLEdBQUdBLEtBQUksS0FBSyxRQUFRQSxNQUFLO0FBQ3BDLGNBQVUsb0JBQW9CLGFBQWEsWUFBWSxLQUFLQSxFQUFDLENBQUM7QUFFOUQsUUFBSSxZQUFZO0FBQ2QsVUFBSSxxQkFBcUI7QUFFekIsZ0JBQVUsbUJBQW1CQSxFQUFDO0FBQUEsSUFDcEM7QUFBQSxFQUNHO0FBR0QsZUFBYSxZQUFZO0FBQ3pCLE1BQUksaUJBQWlCO0FBQ3JCLE1BQUl3RztBQUVKLFVBQVFBLFNBQVEsYUFBYSxLQUFLLE1BQU0sT0FBTyxNQUFNO0FBQ25ELHNCQUFrQixNQUFNQSxPQUFNLENBQUM7QUFBQSxFQUNuQztBQUVFLE1BQUksT0FBT3dOLFFBQVcsTUFBTSxJQUFJO0FBRWhDLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQTtBQUFBLElBQ0EsTUFBTTtBQUFBLEVBQ1A7QUFDSDtBQ3ZPQSxJQUFJLGVBQWUsU0FBU0MsY0FBYWpTLFNBQVE7QUFDL0MsU0FBT0EsUUFBUTtBQUNqQjtBQUVBLElBQUlrUyx1QkFBcUJwSCxRQUFNLG9CQUF5QixJQUFJQSxRQUFNLG9CQUF5QixJQUFJO0FBQy9GLElBQUksMkNBQTJDb0gsd0JBQXNCO0FBQ3JFLElBQUksdUNBQXVDQSx3QkFBc0JDLGFBQXFCO0FDRXRGLElBQUksZ0JBQWdCO0FBRXBCLElBQUksc0JBQXFDQyw2QkFBbUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU01RCxPQUFPLGdCQUFnQixjQUE2Qiw0QkFBWTtBQUFBLElBQzlELEtBQUs7QUFBQSxFQUNQLENBQUMsSUFBSTtBQUFJO0FBRVQsSUFBSSxnQkFBZ0Isb0JBQW9CO0FBQ3hDLElBQUksMkJBQTJCLFNBQVMsa0JBQWtCO0FBQ3hELFNBQU9uSCxhQUFBQSxXQUFXLG1CQUFtQjtBQUN2QztBQUVBLElBQUksbUJBQW1CLFNBQVNvSCxrQkFBaUIsTUFBTTtBQUNyRCxTQUFvQkMsNkJBQVUsV0FBQyxTQUFVLE9BQU9DLE1BQUs7QUFFbkQsUUFBSXpQLFNBQVFtSSxhQUFVLFdBQUMsbUJBQW1CO0FBQzFDLFdBQU8sS0FBSyxPQUFPbkksUUFBT3lQLElBQUc7QUFBQSxFQUNqQyxDQUFHO0FBQ0g7QUFFQSxJQUFJLGVBQThCSCw2QkFBbUIsY0FBQyxFQUFFO0FBRXhELElBQUksV0FBVyxTQUFTSSxZQUFXO0FBQ2pDLFNBQU9DLGFBQUFBLFdBQWlCLFlBQVk7QUFDdEM7QUFFQSxJQUFJQyxhQUFXLFNBQVMsU0FBUyxZQUFZQyxRQUFPO0FBQ2xELE1BQUksT0FBT0EsV0FBVSxZQUFZO0FBQy9CLFFBQUksY0FBY0EsT0FBTSxVQUFVO0FBRWxDLFdBQU87QUFBQSxFQUNYO0FBRUUsU0FBTy9GLFdBQVMsQ0FBQSxHQUFJLFlBQVkrRixNQUFLO0FBQ3ZDO0FBRUEsSUFBSSx1QkFBc0MsNEJBQVksU0FBVSxZQUFZO0FBQzFFLFNBQU8sWUFBWSxTQUFVQSxRQUFPO0FBQ2xDLFdBQU9ELFdBQVMsWUFBWUMsTUFBSztBQUFBLEVBQ3JDLENBQUc7QUFDSCxDQUFDO0FBQ0QsSUFBSSxnQkFBZ0IsU0FBU0MsZUFBYyxPQUFPO0FBQ2hELE1BQUlELFNBQVFGLGFBQWdCLFdBQUMsWUFBWTtBQUV6QyxNQUFJLE1BQU0sVUFBVUUsUUFBTztBQUN6QixJQUFBQSxTQUFRLHFCQUFxQkEsTUFBSyxFQUFFLE1BQU0sS0FBSztBQUFBLEVBQ25EO0FBRUUsU0FBb0JFLDZCQUFtQixjQUFDLGFBQWEsVUFBVTtBQUFBLElBQzdELE9BQU9GO0FBQUEsRUFDWCxHQUFLLE1BQU0sUUFBUTtBQUNuQjtBQUNBLFNBQVMsVUFBVSxXQUFXO0FBQzVCLE1BQUksZ0JBQWdCLFVBQVUsZUFBZSxVQUFVLFFBQVE7QUFDL0QsTUFBSSxZQUF5QkcsNkJBQWdCLFdBQUMsU0FBUyxPQUFPLE9BQU9QLE1BQUs7QUFDeEUsUUFBSUksU0FBUUYsYUFBZ0IsV0FBQyxZQUFZO0FBQ3pDLFdBQW9CSSw2QkFBbUIsY0FBQyxXQUFXakcsV0FBUztBQUFBLE1BQzFELE9BQU8rRjtBQUFBLE1BQ1AsS0FBS0o7QUFBQSxJQUNOLEdBQUUsS0FBSyxDQUFDO0FBQUEsRUFDYixDQUFHO0FBQ0QsWUFBVSxjQUFjLGVBQWUsZ0JBQWdCO0FBQ3ZELFNBQU8scUJBQXFCLFdBQVcsU0FBUztBQUNsRDtBQUVBLElBQUksU0FBUyxDQUFFLEVBQUM7QUFFaEIsSUFBSSxlQUFlO0FBQ25CLElBQUkscUJBQXFCLFNBQVNRLG9CQUFtQmhRLE9BQU0sT0FBTztBQUVoRSxNQUFJLFdBQVcsQ0FBRTtBQUVqQixXQUFTLFFBQVEsT0FBTztBQUN0QixRQUFJLE9BQU8sS0FBSyxPQUFPLElBQUksR0FBRztBQUM1QixlQUFTLElBQUksSUFBSSxNQUFNLElBQUk7QUFBQSxJQUNqQztBQUFBLEVBQ0E7QUFFRSxXQUFTLFlBQVksSUFBSUE7QUFFekIsU0FBTztBQUNUO0FBRUEsSUFBSWlRLGNBQVksU0FBUyxVQUFVekcsT0FBTTtBQUN2QyxNQUFJekosU0FBUXlKLE1BQUssT0FDYixhQUFhQSxNQUFLLFlBQ2xCLGNBQWNBLE1BQUs7QUFDdkIsaUJBQWV6SixRQUFPLFlBQVksV0FBVztBQUM3QywyQ0FBeUMsV0FBWTtBQUNuRCxXQUFPLGFBQWFBLFFBQU8sWUFBWSxXQUFXO0FBQUEsRUFDdEQsQ0FBRztBQUVELFNBQU87QUFDVDtBQUVBLElBQUksVUFBeUIsaUNBQWlCLFNBQVUsT0FBT0EsUUFBT3lQLE1BQUs7QUFDekUsTUFBSSxVQUFVLE1BQU07QUFJcEIsTUFBSSxPQUFPLFlBQVksWUFBWXpQLE9BQU0sV0FBVyxPQUFPLE1BQU0sUUFBVztBQUMxRSxjQUFVQSxPQUFNLFdBQVcsT0FBTztBQUFBLEVBQ3RDO0FBRUUsTUFBSSxtQkFBbUIsTUFBTSxZQUFZO0FBQ3pDLE1BQUksbUJBQW1CLENBQUMsT0FBTztBQUMvQixNQUFJLFlBQVk7QUFFaEIsTUFBSSxPQUFPLE1BQU0sY0FBYyxVQUFVO0FBQ3ZDLGdCQUFZLG9CQUFvQkEsT0FBTSxZQUFZLGtCQUFrQixNQUFNLFNBQVM7QUFBQSxFQUN2RixXQUFhLE1BQU0sYUFBYSxNQUFNO0FBQ2xDLGdCQUFZLE1BQU0sWUFBWTtBQUFBLEVBQ2xDO0FBRUUsTUFBSSxhQUFhLGdCQUFnQixrQkFBa0IsUUFBVzJQLGFBQUFBLFdBQWlCLFlBQVksQ0FBQztBQUU1RixlQUFhM1AsT0FBTSxNQUFNLE1BQU0sV0FBVztBQUMxQyxNQUFJLFdBQVcsQ0FBRTtBQUVqQixXQUFTLFNBQVMsT0FBTztBQUN2QixRQUFJLE9BQU8sS0FBSyxPQUFPLEtBQUssS0FBSyxVQUFVLFNBQVMsVUFBVSxnQkFBaUIsQ0FBQyxlQUFpQjtBQUMvRixlQUFTLEtBQUssSUFBSSxNQUFNLEtBQUs7QUFBQSxJQUNuQztBQUFBLEVBQ0E7QUFFRSxXQUFTLFlBQVk7QUFFckIsTUFBSXlQLE1BQUs7QUFDUCxhQUFTLE1BQU1BO0FBQUEsRUFDbkI7QUFFRSxTQUFvQk0sNkJBQW1CLGNBQUNJLGFBQWMsVUFBRSxNQUFtQkosNkJBQUFBLGNBQW9CRyxhQUFXO0FBQUEsSUFDeEcsT0FBT2xRO0FBQUEsSUFDUDtBQUFBLElBQ0EsYUFBYSxPQUFPLHFCQUFxQjtBQUFBLEVBQzFDLENBQUEsR0FBZ0IrUCw2QkFBbUIsY0FBQyxrQkFBa0IsUUFBUSxDQUFDO0FBQ2xFLENBQUM7QUFFRCxJQUFJLFlBQVk7QUM3SWhCLElBQUksTUFBTSxTQUFTSyxLQUFJblEsT0FBTSxPQUFPO0FBRWxDLE1BQUksT0FBTztBQUVYLE1BQUksU0FBUyxRQUFRLENBQUMsT0FBTyxLQUFLLE9BQU8sS0FBSyxHQUFHO0FBQy9DLFdBQU84UCwyQkFBb0IsTUFBTSxRQUFXLElBQUk7QUFBQSxFQUNwRDtBQUVFLE1BQUksYUFBYSxLQUFLO0FBQ3RCLE1BQUksd0JBQXdCLElBQUksTUFBTSxVQUFVO0FBQ2hELHdCQUFzQixDQUFDLElBQUlNO0FBQzNCLHdCQUFzQixDQUFDLElBQUksbUJBQW1CcFEsT0FBTSxLQUFLO0FBRXpELFdBQVMvRSxLQUFJLEdBQUdBLEtBQUksWUFBWUEsTUFBSztBQUNuQywwQkFBc0JBLEVBQUMsSUFBSSxLQUFLQSxFQUFDO0FBQUEsRUFDckM7QUFFRSxTQUFPNlUsMkJBQW9CLE1BQU0sTUFBTSxxQkFBcUI7QUFDOUQ7QUFBQSxDQUVDLFNBQVUsTUFBTTtBQUNmLE1BQUk7QUFFSixFQUFDLDBCQUFVLE1BQU07QUFBQSxLQUFJLFFBQVEsTUFBTSxLQUFLLFFBQVEsS0FBSyxNQUFNLENBQUEsR0FBSTtBQUNqRSxHQUFHLFFBQVEsTUFBTSxDQUFBLEVBQUc7QUFLcEIsSUFBSSxTQUF3QixpQ0FBaUIsU0FBVSxPQUFPL1AsUUFBTztBQUVuRSxNQUFJLFNBQVMsTUFBTTtBQUNuQixNQUFJLGFBQWEsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLFFBQVcyUCxhQUFBQSxXQUFpQixZQUFZLENBQUM7QUFNcEYsTUFBSSxXQUFXVyxhQUFBQSxPQUFjO0FBQzdCLHVDQUFxQyxXQUFZO0FBQy9DLFFBQUksTUFBTXRRLE9BQU0sTUFBTTtBQUV0QixRQUFJLFFBQVEsSUFBSUEsT0FBTSxNQUFNLFlBQVk7QUFBQSxNQUN0QztBQUFBLE1BQ0EsT0FBT0EsT0FBTSxNQUFNO0FBQUEsTUFDbkIsV0FBV0EsT0FBTSxNQUFNO0FBQUEsTUFDdkIsUUFBUUEsT0FBTSxNQUFNO0FBQUEsSUFDMUIsQ0FBSztBQUNELFFBQUksY0FBYztBQUNsQixRQUFJaU0sUUFBTyxTQUFTLGNBQWMseUJBQTBCLE1BQU0sTUFBTSxXQUFXLE9BQU8sSUFBSztBQUUvRixRQUFJak0sT0FBTSxNQUFNLEtBQUssUUFBUTtBQUMzQixZQUFNLFNBQVNBLE9BQU0sTUFBTSxLQUFLLENBQUM7QUFBQSxJQUN2QztBQUVJLFFBQUlpTSxVQUFTLE1BQU07QUFDakIsb0JBQWM7QUFFZCxNQUFBQSxNQUFLLGFBQWEsZ0JBQWdCLEdBQUc7QUFDckMsWUFBTSxRQUFRLENBQUNBLEtBQUksQ0FBQztBQUFBLElBQzFCO0FBRUksYUFBUyxVQUFVLENBQUMsT0FBTyxXQUFXO0FBQ3RDLFdBQU8sV0FBWTtBQUNqQixZQUFNLE1BQU87QUFBQSxJQUNkO0FBQUEsRUFDTCxHQUFLLENBQUNqTSxNQUFLLENBQUM7QUFDVix1Q0FBcUMsV0FBWTtBQUMvQyxRQUFJLGtCQUFrQixTQUFTO0FBQy9CLFFBQUksUUFBUSxnQkFBZ0IsQ0FBQyxHQUN6QixjQUFjLGdCQUFnQixDQUFDO0FBRW5DLFFBQUksYUFBYTtBQUNmLHNCQUFnQixDQUFDLElBQUk7QUFDckI7QUFBQSxJQUNOO0FBRUksUUFBSSxXQUFXLFNBQVMsUUFBVztBQUVqQyxtQkFBYUEsUUFBTyxXQUFXLE1BQU0sSUFBSTtBQUFBLElBQy9DO0FBRUksUUFBSSxNQUFNLEtBQUssUUFBUTtBQUVyQixVQUFJLFVBQVUsTUFBTSxLQUFLLE1BQU0sS0FBSyxTQUFTLENBQUMsRUFBRTtBQUNoRCxZQUFNLFNBQVM7QUFDZixZQUFNLE1BQU87QUFBQSxJQUNuQjtBQUVJLElBQUFBLE9BQU0sT0FBTyxJQUFJLFlBQVksT0FBTyxLQUFLO0FBQUEsRUFDMUMsR0FBRSxDQUFDQSxRQUFPLFdBQVcsSUFBSSxDQUFDO0FBQzNCLFNBQU87QUFDVCxDQUFDO0FBRUQsU0FBUyxNQUFNO0FBQ2IsV0FBUyxPQUFPLFVBQVUsUUFBUSxPQUFPLElBQUksTUFBTSxJQUFJLEdBQUcsT0FBTyxHQUFHLE9BQU8sTUFBTSxRQUFRO0FBQ3ZGLFNBQUssSUFBSSxJQUFJLFVBQVUsSUFBSTtBQUFBLEVBQy9CO0FBRUUsU0FBTyxnQkFBZ0IsSUFBSTtBQUM3QjtBQUVBLFNBQVMsWUFBWTtBQUNuQixNQUFJLGFBQWEsSUFBSSxNQUFNLFFBQVEsU0FBUztBQUM1QyxNQUFJLE9BQU8sZUFBZSxXQUFXO0FBQ3JDLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxRQUFRLGdCQUFnQixPQUFPLE1BQU0sV0FBVyxTQUFTO0FBQUEsSUFDekQsTUFBTTtBQUFBLElBQ04sVUFBVSxTQUFTMkIsWUFBVztBQUM1QixhQUFPLFVBQVUsS0FBSyxPQUFPLE1BQU0sS0FBSyxTQUFTO0FBQUEsSUFDdkQ7QUFBQSxFQUNHO0FBQ0g7QUFFQSxJQUFJNE8sZUFBYSxTQUFTLFdBQVcsTUFBTTtBQUN6QyxNQUFJLE1BQU0sS0FBSztBQUNmLE1BQUlyVixLQUFJO0FBQ1IsTUFBSSxNQUFNO0FBRVYsU0FBT0EsS0FBSSxLQUFLQSxNQUFLO0FBQ25CLFFBQUksTUFBTSxLQUFLQSxFQUFDO0FBQ2hCLFFBQUksT0FBTyxLQUFNO0FBQ2pCLFFBQUksUUFBUTtBQUVaLFlBQVEsT0FBTyxLQUFHO0FBQUEsTUFDaEIsS0FBSztBQUNIO0FBQUEsTUFFRixLQUFLLFVBQ0g7QUFDRSxZQUFJLE1BQU0sUUFBUSxHQUFHLEdBQUc7QUFDdEIsa0JBQVEsV0FBVyxHQUFHO0FBQUEsUUFDbEMsT0FBaUI7QUFFTCxrQkFBUTtBQUVSLG1CQUFTa0IsTUFBSyxLQUFLO0FBQ2pCLGdCQUFJLElBQUlBLEVBQUMsS0FBS0EsSUFBRztBQUNmLHdCQUFVLFNBQVM7QUFDbkIsdUJBQVNBO0FBQUEsWUFDekI7QUFBQSxVQUNBO0FBQUEsUUFDQTtBQUVVO0FBQUEsTUFDVjtBQUFBLE1BRU0sU0FDRTtBQUNFLGdCQUFRO0FBQUEsTUFDbEI7QUFBQSxJQUNBO0FBRUksUUFBSSxPQUFPO0FBQ1QsY0FBUSxPQUFPO0FBQ2YsYUFBTztBQUFBLElBQ2I7QUFBQSxFQUNBO0FBRUUsU0FBTztBQUNUO0FBRUEsU0FBU3NFLFFBQU0sWUFBWThQLE1BQUssV0FBVztBQUN6QyxNQUFJLG1CQUFtQixDQUFFO0FBQ3pCLE1BQUksZUFBZSxvQkFBb0IsWUFBWSxrQkFBa0IsU0FBUztBQUU5RSxNQUFJLGlCQUFpQixTQUFTLEdBQUc7QUFDL0IsV0FBTztBQUFBLEVBQ1g7QUFFRSxTQUFPLGVBQWVBLEtBQUksZ0JBQWdCO0FBQzVDO0FBRUEsSUFBSU4sYUFBWSxTQUFTQSxXQUFVekcsT0FBTTtBQUN2QyxNQUFJekosU0FBUXlKLE1BQUssT0FDYixnQkFBZ0JBLE1BQUs7QUFDekIsMkNBQXlDLFdBQVk7QUFFbkQsYUFBU3ZPLEtBQUksR0FBR0EsS0FBSSxjQUFjLFFBQVFBLE1BQUs7QUFDN0MsbUJBQWE4RSxRQUFPLGNBQWM5RSxFQUFDLEdBQUcsS0FBSztBQUFBLElBQ2pEO0FBQUEsRUFDQSxDQUFHO0FBRUQsU0FBTztBQUNUO0FBRUEsSUFBSSxhQUE0QixpQ0FBaUIsU0FBVSxPQUFPOEUsUUFBTztBQUN2RSxNQUFJLGNBQWM7QUFDbEIsTUFBSSxnQkFBZ0IsQ0FBRTtBQUV0QixNQUFJd1EsT0FBTSxTQUFTQSxPQUFNO0FBQ3ZCLFFBQUksZUFBZSxlQUFlO0FBQ2hDLFlBQU0sSUFBSSxNQUFNLG9DQUFvQztBQUFBLElBQzFEO0FBRUksYUFBUyxPQUFPLFVBQVUsUUFBUSxPQUFPLElBQUksTUFBTSxJQUFJLEdBQUcsT0FBTyxHQUFHLE9BQU8sTUFBTSxRQUFRO0FBQ3ZGLFdBQUssSUFBSSxJQUFJLFVBQVUsSUFBSTtBQUFBLElBQ2pDO0FBRUksUUFBSSxhQUFhLGdCQUFnQixNQUFNeFEsT0FBTSxVQUFVO0FBQ3ZELGtCQUFjLEtBQUssVUFBVTtBQUU3QixtQkFBZUEsUUFBTyxZQUFZLEtBQUs7QUFDdkMsV0FBT0EsT0FBTSxNQUFNLE1BQU0sV0FBVztBQUFBLEVBQ3JDO0FBRUQsTUFBSSxLQUFLLFNBQVN5USxNQUFLO0FBQ3JCLFFBQUksZUFBZSxlQUFlO0FBQ2hDLFlBQU0sSUFBSSxNQUFNLG1DQUFtQztBQUFBLElBQ3pEO0FBRUksYUFBUyxRQUFRLFVBQVUsUUFBUSxPQUFPLElBQUksTUFBTSxLQUFLLEdBQUcsUUFBUSxHQUFHLFFBQVEsT0FBTyxTQUFTO0FBQzdGLFdBQUssS0FBSyxJQUFJLFVBQVUsS0FBSztBQUFBLElBQ25DO0FBRUksV0FBTy9QLFFBQU1WLE9BQU0sWUFBWXdRLE1BQUtELGFBQVcsSUFBSSxDQUFDO0FBQUEsRUFDckQ7QUFFRCxNQUFJLFVBQVU7QUFBQSxJQUNaLEtBQUtDO0FBQUEsSUFDTDtBQUFBLElBQ0EsT0FBT2IsYUFBZ0IsV0FBQyxZQUFZO0FBQUEsRUFDckM7QUFDRCxNQUFJLE1BQU0sTUFBTSxTQUFTLE9BQU87QUFDaEMsZ0JBQWM7QUFDZCxTQUFvQkksNkJBQW1CLGNBQUNJLGFBQWMsVUFBRSxNQUFtQkosNkJBQUFBLGNBQW9CRyxZQUFXO0FBQUEsSUFDeEcsT0FBT2xRO0FBQUEsSUFDUDtBQUFBLEVBQ0QsQ0FBQSxHQUFHLEdBQUc7QUFDVCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsUEQsU0FBUyx1QkFBdUIzRCxJQUFHcUIsSUFBRztBQUNwQyxTQUFPQSxPQUFNQSxLQUFJckIsR0FBRSxNQUFNLENBQUMsSUFBSSxPQUFPLE9BQU8sT0FBTyxpQkFBaUJBLElBQUc7QUFBQSxJQUNyRSxLQUFLO0FBQUEsTUFDSCxPQUFPLE9BQU8sT0FBT3FCLEVBQUM7QUFBQSxJQUM1QjtBQUFBLEVBQ0EsQ0FBRyxDQUFDO0FBQ0o7O0FDREEsTUFBTSxRQUFRLENBQUMsT0FBTyxTQUFTLFVBQVUsTUFBTTtBQUMvQyxNQUFNLGFBQWEsQ0FBQyxTQUFTLEtBQUs7QUFDbEMsTUFBTSxhQUEwQixzQkFBTSxPQUFPLENBQUMsS0FBSyxTQUFTLElBQUksT0FBTyxNQUFNLE9BQU8sTUFBTSxXQUFXLENBQUMsR0FBRyxPQUFPLE1BQU0sV0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFO0FBQ3hJLE1BQU0sTUFBTSxLQUFLO0FBQ2pCLE1BQU0sTUFBTSxLQUFLO0FBQ2pCLE1BQU0sUUFBUSxLQUFLO0FBQ25CLE1BQU0sUUFBUSxLQUFLO0FBQ25CLE1BQU0sZUFBZSxDQUFBRSxRQUFNO0FBQUEsRUFDekIsR0FBR0E7QUFBQSxFQUNILEdBQUdBO0FBQ0w7QUFDQSxNQUFNLGtCQUFrQjtBQUFBLEVBQ3RCLE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLEtBQUs7QUFDUDtBQUNBLE1BQU0sdUJBQXVCO0FBQUEsRUFDM0IsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUNQO0FBQ0EsU0FBUyxNQUFNLE9BQU8sT0FBTyxLQUFLO0FBQ2hDLFNBQU8sSUFBSSxPQUFPLElBQUksT0FBTyxHQUFHLENBQUM7QUFDbkM7QUFDQSxTQUFTLFNBQVMsT0FBTyxPQUFPO0FBQzlCLFNBQU8sT0FBTyxVQUFVLGFBQWEsTUFBTSxLQUFLLElBQUk7QUFDdEQ7QUFDQSxTQUFTLFFBQVEsV0FBVztBQUMxQixTQUFPLFVBQVUsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUMvQjtBQUNBLFNBQVMsYUFBYSxXQUFXO0FBQy9CLFNBQU8sVUFBVSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQy9CO0FBQ0EsU0FBUyxnQkFBZ0IsTUFBTTtBQUM3QixTQUFPLFNBQVMsTUFBTSxNQUFNO0FBQzlCO0FBQ0EsU0FBUyxjQUFjLE1BQU07QUFDM0IsU0FBTyxTQUFTLE1BQU0sV0FBVztBQUNuQztBQUNBLFNBQVMsWUFBWSxXQUFXO0FBQzlCLFNBQU8sQ0FBQyxPQUFPLFFBQVEsRUFBRSxTQUFTLFFBQVEsU0FBUyxDQUFDLElBQUksTUFBTTtBQUNoRTtBQUNBLFNBQVMsaUJBQWlCLFdBQVc7QUFDbkMsU0FBTyxnQkFBZ0IsWUFBWSxTQUFTLENBQUM7QUFDL0M7QUFDQSxTQUFTLGtCQUFrQixXQUFXLE9BQU8sS0FBSztBQUNoRCxNQUFJLFFBQVEsUUFBUTtBQUNsQixVQUFNO0FBQUEsRUFDVjtBQUNFLFFBQU0sWUFBWSxhQUFhLFNBQVM7QUFDeEMsUUFBTSxnQkFBZ0IsaUJBQWlCLFNBQVM7QUFDaEQsUUFBTXdELFVBQVMsY0FBYyxhQUFhO0FBQzFDLE1BQUksb0JBQW9CLGtCQUFrQixNQUFNLGVBQWUsTUFBTSxRQUFRLFdBQVcsVUFBVSxTQUFTLGNBQWMsVUFBVSxXQUFXO0FBQzlJLE1BQUksTUFBTSxVQUFVQSxPQUFNLElBQUksTUFBTSxTQUFTQSxPQUFNLEdBQUc7QUFDcEQsd0JBQW9CLHFCQUFxQixpQkFBaUI7QUFBQSxFQUM5RDtBQUNFLFNBQU8sQ0FBQyxtQkFBbUIscUJBQXFCLGlCQUFpQixDQUFDO0FBQ3BFO0FBQ0EsU0FBUyxzQkFBc0IsV0FBVztBQUN4QyxRQUFNLG9CQUFvQixxQkFBcUIsU0FBUztBQUN4RCxTQUFPLENBQUMsOEJBQThCLFNBQVMsR0FBRyxtQkFBbUIsOEJBQThCLGlCQUFpQixDQUFDO0FBQ3ZIO0FBQ0EsU0FBUyw4QkFBOEIsV0FBVztBQUNoRCxTQUFPLFVBQVUsUUFBUSxjQUFjLGVBQWEscUJBQXFCLFNBQVMsQ0FBQztBQUNyRjtBQUNBLFNBQVMsWUFBWSxNQUFNLFNBQVMsS0FBSztBQUN2QyxRQUFNLEtBQUssQ0FBQyxRQUFRLE9BQU87QUFDM0IsUUFBTSxLQUFLLENBQUMsU0FBUyxNQUFNO0FBQzNCLFFBQU0sS0FBSyxDQUFDLE9BQU8sUUFBUTtBQUMzQixRQUFNLEtBQUssQ0FBQyxVQUFVLEtBQUs7QUFDM0IsVUFBUSxNQUFJO0FBQUEsSUFDVixLQUFLO0FBQUEsSUFDTCxLQUFLO0FBQ0gsVUFBSSxJQUFLLFFBQU8sVUFBVSxLQUFLO0FBQy9CLGFBQU8sVUFBVSxLQUFLO0FBQUEsSUFDeEIsS0FBSztBQUFBLElBQ0wsS0FBSztBQUNILGFBQU8sVUFBVSxLQUFLO0FBQUEsSUFDeEI7QUFDRSxhQUFPLENBQUU7QUFBQSxFQUNmO0FBQ0E7QUFDQSxTQUFTLDBCQUEwQixXQUFXLGVBQWUsV0FBVyxLQUFLO0FBQzNFLFFBQU0sWUFBWSxhQUFhLFNBQVM7QUFDeEMsTUFBSSxPQUFPLFlBQVksUUFBUSxTQUFTLEdBQUcsY0FBYyxTQUFTLEdBQUc7QUFDckUsTUFBSSxXQUFXO0FBQ2IsV0FBTyxLQUFLLElBQUksVUFBUSxPQUFPLE1BQU0sU0FBUztBQUM5QyxRQUFJLGVBQWU7QUFDakIsYUFBTyxLQUFLLE9BQU8sS0FBSyxJQUFJLDZCQUE2QixDQUFDO0FBQUEsSUFDaEU7QUFBQSxFQUNBO0FBQ0UsU0FBTztBQUNUO0FBQ0EsU0FBUyxxQkFBcUIsV0FBVztBQUN2QyxTQUFPLFVBQVUsUUFBUSwwQkFBMEIsVUFBUSxnQkFBZ0IsSUFBSSxDQUFDO0FBQ2xGO0FBQ0EsU0FBUyxvQkFBb0IsU0FBUztBQUNwQyxTQUFPO0FBQUEsSUFDTCxLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsSUFDUCxRQUFRO0FBQUEsSUFDUixNQUFNO0FBQUEsSUFDTixHQUFHO0FBQUEsRUFDSjtBQUNIO0FBQ0EsU0FBUyxpQkFBaUIsU0FBUztBQUNqQyxTQUFPLE9BQU8sWUFBWSxXQUFXLG9CQUFvQixPQUFPLElBQUk7QUFBQSxJQUNsRSxLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsSUFDUCxRQUFRO0FBQUEsSUFDUixNQUFNO0FBQUEsRUFDUDtBQUNIO0FBQ0EsU0FBUyxpQkFBaUIsTUFBTTtBQUM5QixRQUFNO0FBQUEsSUFDSixHQUFBN0Y7QUFBQSxJQUNBLEdBQUFFO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNKLElBQU07QUFDSixTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0E7QUFBQSxJQUNBLEtBQUtBO0FBQUEsSUFDTCxNQUFNRjtBQUFBLElBQ04sT0FBT0EsS0FBSTtBQUFBLElBQ1gsUUFBUUUsS0FBSTtBQUFBLElBQ1osR0FBQUY7QUFBQSxJQUNBLEdBQUFFO0FBQUEsRUFDRDtBQUNIO0FDcElBLFNBQVMsMkJBQTJCZ08sT0FBTSxXQUFXLEtBQUs7QUFDeEQsTUFBSTtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsRUFDSixJQUFNQTtBQUNKLFFBQU0sV0FBVyxZQUFZLFNBQVM7QUFDdEMsUUFBTSxnQkFBZ0IsaUJBQWlCLFNBQVM7QUFDaEQsUUFBTSxjQUFjLGNBQWMsYUFBYTtBQUMvQyxRQUFNLE9BQU8sUUFBUSxTQUFTO0FBQzlCLFFBQU0sYUFBYSxhQUFhO0FBQ2hDLFFBQU0sVUFBVSxVQUFVLElBQUksVUFBVSxRQUFRLElBQUksU0FBUyxRQUFRO0FBQ3JFLFFBQU0sVUFBVSxVQUFVLElBQUksVUFBVSxTQUFTLElBQUksU0FBUyxTQUFTO0FBQ3ZFLFFBQU0sY0FBYyxVQUFVLFdBQVcsSUFBSSxJQUFJLFNBQVMsV0FBVyxJQUFJO0FBQ3pFLE1BQUk7QUFDSixVQUFRLE1BQUk7QUFBQSxJQUNWLEtBQUs7QUFDSCxlQUFTO0FBQUEsUUFDUCxHQUFHO0FBQUEsUUFDSCxHQUFHLFVBQVUsSUFBSSxTQUFTO0FBQUEsTUFDM0I7QUFDRDtBQUFBLElBQ0YsS0FBSztBQUNILGVBQVM7QUFBQSxRQUNQLEdBQUc7QUFBQSxRQUNILEdBQUcsVUFBVSxJQUFJLFVBQVU7QUFBQSxNQUM1QjtBQUNEO0FBQUEsSUFDRixLQUFLO0FBQ0gsZUFBUztBQUFBLFFBQ1AsR0FBRyxVQUFVLElBQUksVUFBVTtBQUFBLFFBQzNCLEdBQUc7QUFBQSxNQUNKO0FBQ0Q7QUFBQSxJQUNGLEtBQUs7QUFDSCxlQUFTO0FBQUEsUUFDUCxHQUFHLFVBQVUsSUFBSSxTQUFTO0FBQUEsUUFDMUIsR0FBRztBQUFBLE1BQ0o7QUFDRDtBQUFBLElBQ0Y7QUFDRSxlQUFTO0FBQUEsUUFDUCxHQUFHLFVBQVU7QUFBQSxRQUNiLEdBQUcsVUFBVTtBQUFBLE1BQ2Q7QUFBQSxFQUNQO0FBQ0UsVUFBUSxhQUFhLFNBQVMsR0FBQztBQUFBLElBQzdCLEtBQUs7QUFDSCxhQUFPLGFBQWEsS0FBSyxlQUFlLE9BQU8sYUFBYSxLQUFLO0FBQ2pFO0FBQUEsSUFDRixLQUFLO0FBQ0gsYUFBTyxhQUFhLEtBQUssZUFBZSxPQUFPLGFBQWEsS0FBSztBQUNqRTtBQUFBLEVBQ047QUFDRSxTQUFPO0FBQ1Q7QUFTQSxNQUFNaUgsb0JBQWtCLE9BQU8sV0FBVyxVQUFVcFAsWUFBVztBQUM3RCxRQUFNO0FBQUEsSUFDSixZQUFZO0FBQUEsSUFDWixXQUFXO0FBQUEsSUFDWCxZQUFBa00sY0FBYSxDQUFFO0FBQUEsSUFDZixVQUFBekw7QUFBQSxFQUNKLElBQU1UO0FBQ0osUUFBTSxrQkFBa0JrTSxZQUFXLE9BQU8sT0FBTztBQUNqRCxRQUFNLE1BQU0sT0FBT3pMLFVBQVMsU0FBUyxPQUFPLFNBQVNBLFVBQVMsTUFBTSxRQUFRO0FBQzVFLE1BQUksUUFBUSxNQUFNQSxVQUFTLGdCQUFnQjtBQUFBLElBQ3pDO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNKLENBQUc7QUFDRCxNQUFJO0FBQUEsSUFDRixHQUFBeEc7QUFBQSxJQUNBLEdBQUFFO0FBQUEsRUFDRCxJQUFHLDJCQUEyQixPQUFPLFdBQVcsR0FBRztBQUNwRCxNQUFJLG9CQUFvQjtBQUN4QixNQUFJLGlCQUFpQixDQUFFO0FBQ3ZCLE1BQUksYUFBYTtBQUNqQixXQUFTUCxLQUFJLEdBQUdBLEtBQUksZ0JBQWdCLFFBQVFBLE1BQUs7QUFDL0MsVUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsSUFDTixJQUFRLGdCQUFnQkEsRUFBQztBQUNyQixVQUFNO0FBQUEsTUFDSixHQUFHO0FBQUEsTUFDSCxHQUFHO0FBQUEsTUFDSCxNQUFBaUM7QUFBQSxNQUNBO0FBQUEsSUFDRCxJQUFHLE1BQU0sR0FBRztBQUFBLE1BQ1gsR0FBQTVCO0FBQUEsTUFDQSxHQUFBRTtBQUFBLE1BQ0Esa0JBQWtCO0FBQUEsTUFDbEIsV0FBVztBQUFBLE1BQ1g7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0EsVUFBQXNHO0FBQUEsTUFDQSxVQUFVO0FBQUEsUUFDUjtBQUFBLFFBQ0E7QUFBQSxNQUNSO0FBQUEsSUFDQSxDQUFLO0FBQ0QsSUFBQXhHLEtBQUksU0FBUyxPQUFPLFFBQVFBO0FBQzVCLElBQUFFLEtBQUksU0FBUyxPQUFPLFFBQVFBO0FBQzVCLHFCQUFpQjtBQUFBLE1BQ2YsR0FBRztBQUFBLE1BQ0gsQ0FBQyxJQUFJLEdBQUc7QUFBQSxRQUNOLEdBQUcsZUFBZSxJQUFJO0FBQUEsUUFDdEIsR0FBRzBCO0FBQUEsTUFDWDtBQUFBLElBQ0s7QUFDRCxRQUFJLFNBQVMsY0FBYyxJQUFJO0FBQzdCO0FBQ0EsVUFBSSxPQUFPLFVBQVUsVUFBVTtBQUM3QixZQUFJLE1BQU0sV0FBVztBQUNuQiw4QkFBb0IsTUFBTTtBQUFBLFFBQ3BDO0FBQ1EsWUFBSSxNQUFNLE9BQU87QUFDZixrQkFBUSxNQUFNLFVBQVUsT0FBTyxNQUFNNEUsVUFBUyxnQkFBZ0I7QUFBQSxZQUM1RDtBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsVUFDWixDQUFXLElBQUksTUFBTTtBQUFBLFFBQ3JCO0FBQ1EsU0FBQztBQUFBLFVBQ0MsR0FBQXhHO0FBQUEsVUFDQSxHQUFBRTtBQUFBLFFBQ0QsSUFBRywyQkFBMkIsT0FBTyxtQkFBbUIsR0FBRztBQUFBLE1BQ3BFO0FBQ00sTUFBQVAsS0FBSTtBQUFBLElBQ1Y7QUFBQSxFQUNBO0FBQ0UsU0FBTztBQUFBLElBQ0wsR0FBQUs7QUFBQSxJQUNBLEdBQUFFO0FBQUEsSUFDQSxXQUFXO0FBQUEsSUFDWDtBQUFBLElBQ0E7QUFBQSxFQUNEO0FBQ0g7QUFVQSxlQUFla1YsaUJBQWUsT0FBT25QLFVBQVM7QUFDNUMsTUFBSTtBQUNKLE1BQUlBLGFBQVksUUFBUTtBQUN0QixJQUFBQSxXQUFVLENBQUU7QUFBQSxFQUNoQjtBQUNFLFFBQU07QUFBQSxJQUNKLEdBQUFqRztBQUFBLElBQ0EsR0FBQUU7QUFBQSxJQUNBLFVBQUFzRztBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0osSUFBTTtBQUNKLFFBQU07QUFBQSxJQUNKLFdBQVc7QUFBQSxJQUNYLGVBQWU7QUFBQSxJQUNmLGlCQUFpQjtBQUFBLElBQ2pCLGNBQWM7QUFBQSxJQUNkLFVBQVU7QUFBQSxFQUNkLElBQU0sU0FBU1AsVUFBUyxLQUFLO0FBQzNCLFFBQU0sZ0JBQWdCLGlCQUFpQixPQUFPO0FBQzlDLFFBQU0sYUFBYSxtQkFBbUIsYUFBYSxjQUFjO0FBQ2pFLFFBQU0sVUFBVSxTQUFTLGNBQWMsYUFBYSxjQUFjO0FBQ2xFLFFBQU0scUJBQXFCLGlCQUFpQixNQUFNTyxVQUFTLGdCQUFnQjtBQUFBLElBQ3pFLFdBQVcsd0JBQXdCLE9BQU9BLFVBQVMsYUFBYSxPQUFPLFNBQVNBLFVBQVMsVUFBVSxPQUFPLE9BQU8sT0FBTyx3QkFBd0IsUUFBUSxVQUFVLFFBQVEsa0JBQW1CLE9BQU9BLFVBQVMsc0JBQXNCLE9BQU8sU0FBU0EsVUFBUyxtQkFBbUIsU0FBUyxRQUFRO0FBQUEsSUFDaFM7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0osQ0FBRyxDQUFDO0FBQ0YsUUFBTSxPQUFPLG1CQUFtQixhQUFhO0FBQUEsSUFDM0MsR0FBQXhHO0FBQUEsSUFDQSxHQUFBRTtBQUFBLElBQ0EsT0FBTyxNQUFNLFNBQVM7QUFBQSxJQUN0QixRQUFRLE1BQU0sU0FBUztBQUFBLEVBQ3hCLElBQUcsTUFBTTtBQUNWLFFBQU0sZUFBZSxPQUFPc0csVUFBUyxtQkFBbUIsT0FBTyxTQUFTQSxVQUFTLGdCQUFnQixTQUFTLFFBQVE7QUFDbEgsUUFBTSxjQUFlLE9BQU9BLFVBQVMsYUFBYSxPQUFPLFNBQVNBLFVBQVMsVUFBVSxZQUFZLEtBQU8sT0FBT0EsVUFBUyxZQUFZLE9BQU8sU0FBU0EsVUFBUyxTQUFTLFlBQVksTUFBTztBQUFBLElBQ3ZMLEdBQUc7QUFBQSxJQUNILEdBQUc7QUFBQSxFQUNQLElBQU07QUFBQSxJQUNGLEdBQUc7QUFBQSxJQUNILEdBQUc7QUFBQSxFQUNKO0FBQ0QsUUFBTSxvQkFBb0IsaUJBQWlCQSxVQUFTLHdEQUF3RCxNQUFNQSxVQUFTLHNEQUFzRDtBQUFBLElBQy9LO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRCxDQUFBLElBQUksSUFBSTtBQUNULFNBQU87QUFBQSxJQUNMLE1BQU0sbUJBQW1CLE1BQU0sa0JBQWtCLE1BQU0sY0FBYyxPQUFPLFlBQVk7QUFBQSxJQUN4RixTQUFTLGtCQUFrQixTQUFTLG1CQUFtQixTQUFTLGNBQWMsVUFBVSxZQUFZO0FBQUEsSUFDcEcsT0FBTyxtQkFBbUIsT0FBTyxrQkFBa0IsT0FBTyxjQUFjLFFBQVEsWUFBWTtBQUFBLElBQzVGLFFBQVEsa0JBQWtCLFFBQVEsbUJBQW1CLFFBQVEsY0FBYyxTQUFTLFlBQVk7QUFBQSxFQUNqRztBQUNIO0FBT0EsTUFBTTZPLFVBQVEsQ0FBQXBQLGNBQVk7QUFBQSxFQUN4QixNQUFNO0FBQUEsRUFDTixTQUFBQTtBQUFBLEVBQ0EsTUFBTSxHQUFHLE9BQU87QUFDZCxVQUFNO0FBQUEsTUFDSixHQUFBakc7QUFBQSxNQUNBLEdBQUFFO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBLFVBQUFzRztBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDTixJQUFRO0FBRUosVUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBLFVBQVU7QUFBQSxJQUNYLElBQUcsU0FBU1AsVUFBUyxLQUFLLEtBQUssQ0FBRTtBQUNsQyxRQUFJLFdBQVcsTUFBTTtBQUNuQixhQUFPLENBQUU7QUFBQSxJQUNmO0FBQ0ksVUFBTSxnQkFBZ0IsaUJBQWlCLE9BQU87QUFDOUMsVUFBTSxTQUFTO0FBQUEsTUFDYixHQUFBakc7QUFBQSxNQUNBLEdBQUFFO0FBQUEsSUFDRDtBQUNELFVBQU0sT0FBTyxpQkFBaUIsU0FBUztBQUN2QyxVQUFNMkYsVUFBUyxjQUFjLElBQUk7QUFDakMsVUFBTSxrQkFBa0IsTUFBTVcsVUFBUyxjQUFjLE9BQU87QUFDNUQsVUFBTSxVQUFVLFNBQVM7QUFDekIsVUFBTSxVQUFVLFVBQVUsUUFBUTtBQUNsQyxVQUFNLFVBQVUsVUFBVSxXQUFXO0FBQ3JDLFVBQU0sYUFBYSxVQUFVLGlCQUFpQjtBQUM5QyxVQUFNLFVBQVUsTUFBTSxVQUFVWCxPQUFNLElBQUksTUFBTSxVQUFVLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxNQUFNLFNBQVNBLE9BQU07QUFDdEcsVUFBTSxZQUFZLE9BQU8sSUFBSSxJQUFJLE1BQU0sVUFBVSxJQUFJO0FBQ3JELFVBQU0sb0JBQW9CLE9BQU9XLFVBQVMsbUJBQW1CLE9BQU8sU0FBU0EsVUFBUyxnQkFBZ0IsT0FBTztBQUM3RyxRQUFJLGFBQWEsb0JBQW9CLGtCQUFrQixVQUFVLElBQUk7QUFHckUsUUFBSSxDQUFDLGNBQWMsQ0FBRSxPQUFPQSxVQUFTLGFBQWEsT0FBTyxTQUFTQSxVQUFTLFVBQVUsaUJBQWlCLElBQUs7QUFDekcsbUJBQWEsU0FBUyxTQUFTLFVBQVUsS0FBSyxNQUFNLFNBQVNYLE9BQU07QUFBQSxJQUN6RTtBQUNJLFVBQU0sb0JBQW9CLFVBQVUsSUFBSSxZQUFZO0FBSXBELFVBQU0seUJBQXlCLGFBQWEsSUFBSSxnQkFBZ0JBLE9BQU0sSUFBSSxJQUFJO0FBQzlFLFVBQU0sYUFBYSxJQUFJLGNBQWMsT0FBTyxHQUFHLHNCQUFzQjtBQUNyRSxVQUFNLGFBQWEsSUFBSSxjQUFjLE9BQU8sR0FBRyxzQkFBc0I7QUFJckUsVUFBTSxRQUFRO0FBQ2QsVUFBTXlQLE9BQU0sYUFBYSxnQkFBZ0J6UCxPQUFNLElBQUk7QUFDbkQsVUFBTSxTQUFTLGFBQWEsSUFBSSxnQkFBZ0JBLE9BQU0sSUFBSSxJQUFJO0FBQzlELFVBQU1oRSxVQUFTLE1BQU0sT0FBTyxRQUFReVQsSUFBRztBQU12QyxVQUFNLGtCQUFrQixDQUFDLGVBQWUsU0FBUyxhQUFhLFNBQVMsS0FBSyxRQUFRLFdBQVd6VCxXQUFVLE1BQU0sVUFBVWdFLE9BQU0sSUFBSSxLQUFLLFNBQVMsUUFBUSxhQUFhLGNBQWMsZ0JBQWdCQSxPQUFNLElBQUksSUFBSTtBQUNsTixVQUFNLGtCQUFrQixrQkFBa0IsU0FBUyxRQUFRLFNBQVMsUUFBUSxTQUFTeVAsT0FBTTtBQUMzRixXQUFPO0FBQUEsTUFDTCxDQUFDLElBQUksR0FBRyxPQUFPLElBQUksSUFBSTtBQUFBLE1BQ3ZCLE1BQU07QUFBQSxRQUNKLENBQUMsSUFBSSxHQUFHelQ7QUFBQSxRQUNSLGNBQWMsU0FBU0EsVUFBUztBQUFBLFFBQ2hDLEdBQUksbUJBQW1CO0FBQUEsVUFDckI7QUFBQSxRQUNEO0FBQUEsTUFDRjtBQUFBLE1BQ0QsT0FBTztBQUFBLElBQ1I7QUFBQSxFQUNMO0FBQ0E7QUFFQSxTQUFTLGlCQUFpQixXQUFXLGVBQWUsbUJBQW1CO0FBQ3JFLFFBQU0scUNBQXFDLFlBQVksQ0FBQyxHQUFHLGtCQUFrQixPQUFPLGVBQWEsYUFBYSxTQUFTLE1BQU0sU0FBUyxHQUFHLEdBQUcsa0JBQWtCLE9BQU8sZUFBYSxhQUFhLFNBQVMsTUFBTSxTQUFTLENBQUMsSUFBSSxrQkFBa0IsT0FBTyxlQUFhLFFBQVEsU0FBUyxNQUFNLFNBQVM7QUFDbFMsU0FBTyxtQ0FBbUMsT0FBTyxlQUFhO0FBQzVELFFBQUksV0FBVztBQUNiLGFBQU8sYUFBYSxTQUFTLE1BQU0sY0FBYyxnQkFBZ0IsOEJBQThCLFNBQVMsTUFBTSxZQUFZO0FBQUEsSUFDaEk7QUFDSSxXQUFPO0FBQUEsRUFDWCxDQUFHO0FBQ0g7QUFPQSxNQUFNMFQsa0JBQWdCLFNBQVV0UCxVQUFTO0FBQ3ZDLE1BQUlBLGFBQVksUUFBUTtBQUN0QixJQUFBQSxXQUFVLENBQUU7QUFBQSxFQUNoQjtBQUNFLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLFNBQUFBO0FBQUEsSUFDQSxNQUFNLEdBQUcsT0FBTztBQUNkLFVBQUksdUJBQXVCLHdCQUF3QjtBQUNuRCxZQUFNO0FBQUEsUUFDSjtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQSxVQUFBTztBQUFBLFFBQ0E7QUFBQSxNQUNSLElBQVU7QUFDSixZQUFNO0FBQUEsUUFDSixZQUFZO0FBQUEsUUFDWjtBQUFBLFFBQ0Esb0JBQW9CO0FBQUEsUUFDcEIsZ0JBQWdCO0FBQUEsUUFDaEIsR0FBRztBQUFBLE1BQ1gsSUFBVSxTQUFTUCxVQUFTLEtBQUs7QUFDM0IsWUFBTSxlQUFlLGNBQWMsVUFBYSxzQkFBc0IsYUFBYSxpQkFBaUIsYUFBYSxNQUFNLGVBQWUsaUJBQWlCLElBQUk7QUFDM0osWUFBTSxXQUFXLE1BQU1tUCxpQkFBZSxPQUFPLHFCQUFxQjtBQUNsRSxZQUFNLGlCQUFpQix3QkFBd0IsZUFBZSxrQkFBa0IsT0FBTyxTQUFTLHNCQUFzQixVQUFVO0FBQ2hJLFlBQU0sbUJBQW1CLGFBQWEsWUFBWTtBQUNsRCxVQUFJLG9CQUFvQixNQUFNO0FBQzVCLGVBQU8sQ0FBRTtBQUFBLE1BQ2pCO0FBQ00sWUFBTSxpQkFBaUIsa0JBQWtCLGtCQUFrQixPQUFPLE9BQU81TyxVQUFTLFNBQVMsT0FBTyxTQUFTQSxVQUFTLE1BQU0sU0FBUyxRQUFRLEVBQUU7QUFHN0ksVUFBSSxjQUFjLGtCQUFrQjtBQUNsQyxlQUFPO0FBQUEsVUFDTCxPQUFPO0FBQUEsWUFDTCxXQUFXLGFBQWEsQ0FBQztBQUFBLFVBQ3JDO0FBQUEsUUFDUztBQUFBLE1BQ1Q7QUFDTSxZQUFNLG1CQUFtQixDQUFDLFNBQVMsUUFBUSxnQkFBZ0IsQ0FBQyxHQUFHLFNBQVMsZUFBZSxDQUFDLENBQUMsR0FBRyxTQUFTLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDdkgsWUFBTSxlQUFlLENBQUMsS0FBTSx5QkFBeUIsZUFBZSxrQkFBa0IsT0FBTyxTQUFTLHVCQUF1QixjQUFjLENBQUUsR0FBRztBQUFBLFFBQzlJLFdBQVc7QUFBQSxRQUNYLFdBQVc7QUFBQSxNQUNuQixDQUFPO0FBQ0QsWUFBTSxnQkFBZ0IsYUFBYSxlQUFlLENBQUM7QUFHbkQsVUFBSSxlQUFlO0FBQ2pCLGVBQU87QUFBQSxVQUNMLE1BQU07QUFBQSxZQUNKLE9BQU8sZUFBZTtBQUFBLFlBQ3RCLFdBQVc7QUFBQSxVQUNaO0FBQUEsVUFDRCxPQUFPO0FBQUEsWUFDTCxXQUFXO0FBQUEsVUFDdkI7QUFBQSxRQUNTO0FBQUEsTUFDVDtBQUNNLFlBQU0sOEJBQThCLGFBQWEsSUFBSSxDQUFBakQsT0FBSztBQUN4RCxjQUFNaVMsYUFBWSxhQUFhalMsR0FBRSxTQUFTO0FBQzFDLGVBQU8sQ0FBQ0EsR0FBRSxXQUFXaVMsY0FBYTtBQUFBO0FBQUEsVUFFbENqUyxHQUFFLFVBQVUsTUFBTSxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBS2xCLE9BQU0sTUFBTUEsSUFBRyxDQUFDO0FBQUE7QUFBQTtBQUFBLFVBRXJEa0IsR0FBRSxVQUFVLENBQUM7QUFBQSxXQUFHQSxHQUFFLFNBQVM7QUFBQSxNQUNuQyxDQUFPLEVBQUUsS0FBSyxDQUFDZCxJQUFHSyxPQUFNTCxHQUFFLENBQUMsSUFBSUssR0FBRSxDQUFDLENBQUM7QUFDN0IsWUFBTSw4QkFBOEIsNEJBQTRCLE9BQU8sQ0FBQVMsT0FBS0EsR0FBRSxDQUFDLEVBQUU7QUFBQSxRQUFNO0FBQUE7QUFBQTtBQUFBLFFBR3ZGLGFBQWFBLEdBQUUsQ0FBQyxDQUFDLElBQUksSUFBSTtBQUFBLE1BQUMsRUFBRSxNQUFNLENBQUFsQixPQUFLQSxNQUFLLENBQUMsQ0FBQztBQUM5QyxZQUFNLG1CQUFtQix3QkFBd0IsNEJBQTRCLENBQUMsTUFBTSxPQUFPLFNBQVMsc0JBQXNCLENBQUMsTUFBTSw0QkFBNEIsQ0FBQyxFQUFFLENBQUM7QUFDakssVUFBSSxtQkFBbUIsV0FBVztBQUNoQyxlQUFPO0FBQUEsVUFDTCxNQUFNO0FBQUEsWUFDSixPQUFPLGVBQWU7QUFBQSxZQUN0QixXQUFXO0FBQUEsVUFDWjtBQUFBLFVBQ0QsT0FBTztBQUFBLFlBQ0wsV0FBVztBQUFBLFVBQ3ZCO0FBQUEsUUFDUztBQUFBLE1BQ1Q7QUFDTSxhQUFPLENBQUU7QUFBQSxJQUNmO0FBQUEsRUFDRztBQUNIO0FBUUEsTUFBTW9ULFNBQU8sU0FBVXhQLFVBQVM7QUFDOUIsTUFBSUEsYUFBWSxRQUFRO0FBQ3RCLElBQUFBLFdBQVUsQ0FBRTtBQUFBLEVBQ2hCO0FBQ0UsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sU0FBQUE7QUFBQSxJQUNBLE1BQU0sR0FBRyxPQUFPO0FBQ2QsVUFBSSx1QkFBdUI7QUFDM0IsWUFBTTtBQUFBLFFBQ0o7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBLFVBQUFPO0FBQUEsUUFDQTtBQUFBLE1BQ1IsSUFBVTtBQUNKLFlBQU07QUFBQSxRQUNKLFVBQVUsZ0JBQWdCO0FBQUEsUUFDMUIsV0FBVyxpQkFBaUI7QUFBQSxRQUM1QixvQkFBb0I7QUFBQSxRQUNwQixtQkFBbUI7QUFBQSxRQUNuQiw0QkFBNEI7QUFBQSxRQUM1QixnQkFBZ0I7QUFBQSxRQUNoQixHQUFHO0FBQUEsTUFDWCxJQUFVLFNBQVNQLFVBQVMsS0FBSztBQU0zQixXQUFLLHdCQUF3QixlQUFlLFVBQVUsUUFBUSxzQkFBc0IsaUJBQWlCO0FBQ25HLGVBQU8sQ0FBRTtBQUFBLE1BQ2pCO0FBQ00sWUFBTSxPQUFPLFFBQVEsU0FBUztBQUM5QixZQUFNLGtCQUFrQixZQUFZLGdCQUFnQjtBQUNwRCxZQUFNLGtCQUFrQixRQUFRLGdCQUFnQixNQUFNO0FBQ3RELFlBQU0sTUFBTSxPQUFPTyxVQUFTLFNBQVMsT0FBTyxTQUFTQSxVQUFTLE1BQU0sU0FBUyxRQUFRO0FBQ3JGLFlBQU0scUJBQXFCLGdDQUFnQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsZ0JBQWdCLENBQUMsSUFBSSxzQkFBc0IsZ0JBQWdCO0FBQ2hMLFlBQU0sK0JBQStCLDhCQUE4QjtBQUNuRSxVQUFJLENBQUMsK0JBQStCLDhCQUE4QjtBQUNoRSwyQkFBbUIsS0FBSyxHQUFHLDBCQUEwQixrQkFBa0IsZUFBZSwyQkFBMkIsR0FBRyxDQUFDO0FBQUEsTUFDN0g7QUFDTSxZQUFNa1AsY0FBYSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQjtBQUMzRCxZQUFNLFdBQVcsTUFBTU4saUJBQWUsT0FBTyxxQkFBcUI7QUFDbEUsWUFBTSxZQUFZLENBQUU7QUFDcEIsVUFBSSxrQkFBa0IsdUJBQXVCLGVBQWUsU0FBUyxPQUFPLFNBQVMscUJBQXFCLGNBQWMsQ0FBRTtBQUMxSCxVQUFJLGVBQWU7QUFDakIsa0JBQVUsS0FBSyxTQUFTLElBQUksQ0FBQztBQUFBLE1BQ3JDO0FBQ00sVUFBSSxnQkFBZ0I7QUFDbEIsY0FBTU8sU0FBUSxrQkFBa0IsV0FBVyxPQUFPLEdBQUc7QUFDckQsa0JBQVUsS0FBSyxTQUFTQSxPQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVNBLE9BQU0sQ0FBQyxDQUFDLENBQUM7QUFBQSxNQUM3RDtBQUNNLHNCQUFnQixDQUFDLEdBQUcsZUFBZTtBQUFBLFFBQ2pDO0FBQUEsUUFDQTtBQUFBLE1BQ1IsQ0FBTztBQUdELFVBQUksQ0FBQyxVQUFVLE1BQU0sQ0FBQUMsVUFBUUEsU0FBUSxDQUFDLEdBQUc7QUFDdkMsWUFBSSx1QkFBdUI7QUFDM0IsY0FBTSxlQUFlLHdCQUF3QixlQUFlLFNBQVMsT0FBTyxTQUFTLHNCQUFzQixVQUFVLEtBQUs7QUFDMUgsY0FBTSxnQkFBZ0JGLFlBQVcsU0FBUztBQUMxQyxZQUFJLGVBQWU7QUFFakIsaUJBQU87QUFBQSxZQUNMLE1BQU07QUFBQSxjQUNKLE9BQU87QUFBQSxjQUNQLFdBQVc7QUFBQSxZQUNaO0FBQUEsWUFDRCxPQUFPO0FBQUEsY0FDTCxXQUFXO0FBQUEsWUFDekI7QUFBQSxVQUNXO0FBQUEsUUFDWDtBQUlRLFlBQUksa0JBQWtCLHdCQUF3QixjQUFjLE9BQU8sQ0FBQW5TLE9BQUtBLEdBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQ2QsSUFBR0ssT0FBTUwsR0FBRSxVQUFVLENBQUMsSUFBSUssR0FBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxPQUFPLFNBQVMsc0JBQXNCO0FBRzFMLFlBQUksQ0FBQyxnQkFBZ0I7QUFDbkIsa0JBQVEsa0JBQWdCO0FBQUEsWUFDdEIsS0FBSyxXQUNIO0FBQ0Usa0JBQUk7QUFDSixvQkFBTStTLGNBQWEseUJBQXlCLGNBQWMsT0FBTyxDQUFBdFMsT0FBSztBQUNwRSxvQkFBSSw4QkFBOEI7QUFDaEMsd0JBQU0sa0JBQWtCLFlBQVlBLEdBQUUsU0FBUztBQUMvQyx5QkFBTyxvQkFBb0I7QUFBQTtBQUFBLGtCQUczQixvQkFBb0I7QUFBQSxnQkFDeEM7QUFDa0IsdUJBQU87QUFBQSxjQUN6QixDQUFpQixFQUFFLElBQUksQ0FBQUEsT0FBSyxDQUFDQSxHQUFFLFdBQVdBLEdBQUUsVUFBVSxPQUFPLENBQUF1UyxjQUFZQSxZQUFXLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBS0EsY0FBYSxNQUFNQSxXQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDclQsSUFBR0ssT0FBTUwsR0FBRSxDQUFDLElBQUlLLEdBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLE9BQU8sU0FBUyx1QkFBdUIsQ0FBQztBQUNqTSxrQkFBSStTLFlBQVc7QUFDYixpQ0FBaUJBO0FBQUEsY0FDbkM7QUFDZ0I7QUFBQSxZQUNoQjtBQUFBLFlBQ1ksS0FBSztBQUNILCtCQUFpQjtBQUNqQjtBQUFBLFVBQ2Q7QUFBQSxRQUNBO0FBQ1EsWUFBSSxjQUFjLGdCQUFnQjtBQUNoQyxpQkFBTztBQUFBLFlBQ0wsT0FBTztBQUFBLGNBQ0wsV0FBVztBQUFBLFlBQ3pCO0FBQUEsVUFDVztBQUFBLFFBQ1g7QUFBQSxNQUNBO0FBQ00sYUFBTyxDQUFFO0FBQUEsSUFDZjtBQUFBLEVBQ0c7QUFDSDtBQUVBLFNBQVMsZUFBZSxVQUFVLE1BQU07QUFDdEMsU0FBTztBQUFBLElBQ0wsS0FBSyxTQUFTLE1BQU0sS0FBSztBQUFBLElBQ3pCLE9BQU8sU0FBUyxRQUFRLEtBQUs7QUFBQSxJQUM3QixRQUFRLFNBQVMsU0FBUyxLQUFLO0FBQUEsSUFDL0IsTUFBTSxTQUFTLE9BQU8sS0FBSztBQUFBLEVBQzVCO0FBQ0g7QUFDQSxTQUFTLHNCQUFzQixVQUFVO0FBQ3ZDLFNBQU8sTUFBTSxLQUFLLFVBQVEsU0FBUyxJQUFJLEtBQUssQ0FBQztBQUMvQztBQU1BLE1BQU1sSixTQUFPLFNBQVUxRyxVQUFTO0FBQzlCLE1BQUlBLGFBQVksUUFBUTtBQUN0QixJQUFBQSxXQUFVLENBQUU7QUFBQSxFQUNoQjtBQUNFLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLFNBQUFBO0FBQUEsSUFDQSxNQUFNLEdBQUcsT0FBTztBQUNkLFlBQU07QUFBQSxRQUNKO0FBQUEsTUFDUixJQUFVO0FBQ0osWUFBTTtBQUFBLFFBQ0osV0FBVztBQUFBLFFBQ1gsR0FBRztBQUFBLE1BQ1gsSUFBVSxTQUFTQSxVQUFTLEtBQUs7QUFDM0IsY0FBUSxVQUFRO0FBQUEsUUFDZCxLQUFLLG1CQUNIO0FBQ0UsZ0JBQU0sV0FBVyxNQUFNbVAsaUJBQWUsT0FBTztBQUFBLFlBQzNDLEdBQUc7QUFBQSxZQUNILGdCQUFnQjtBQUFBLFVBQzlCLENBQWE7QUFDRCxnQkFBTSxVQUFVLGVBQWUsVUFBVSxNQUFNLFNBQVM7QUFDeEQsaUJBQU87QUFBQSxZQUNMLE1BQU07QUFBQSxjQUNKLHdCQUF3QjtBQUFBLGNBQ3hCLGlCQUFpQixzQkFBc0IsT0FBTztBQUFBLFlBQzlEO0FBQUEsVUFDYTtBQUFBLFFBQ2I7QUFBQSxRQUNRLEtBQUssV0FDSDtBQUNFLGdCQUFNLFdBQVcsTUFBTUEsaUJBQWUsT0FBTztBQUFBLFlBQzNDLEdBQUc7QUFBQSxZQUNILGFBQWE7QUFBQSxVQUMzQixDQUFhO0FBQ0QsZ0JBQU0sVUFBVSxlQUFlLFVBQVUsTUFBTSxRQUFRO0FBQ3ZELGlCQUFPO0FBQUEsWUFDTCxNQUFNO0FBQUEsY0FDSixnQkFBZ0I7QUFBQSxjQUNoQixTQUFTLHNCQUFzQixPQUFPO0FBQUEsWUFDdEQ7QUFBQSxVQUNhO0FBQUEsUUFDYjtBQUFBLFFBQ1EsU0FDRTtBQUNFLGlCQUFPLENBQUU7QUFBQSxRQUNyQjtBQUFBLE1BQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRztBQUNIO0FBRUEsU0FBUyxnQkFBZ0IsT0FBTztBQUM5QixRQUFNLE9BQU8sSUFBSSxHQUFHLE1BQU0sSUFBSSxVQUFRLEtBQUssSUFBSSxDQUFDO0FBQ2hELFFBQU0sT0FBTyxJQUFJLEdBQUcsTUFBTSxJQUFJLFVBQVEsS0FBSyxHQUFHLENBQUM7QUFDL0MsUUFBTSxPQUFPLElBQUksR0FBRyxNQUFNLElBQUksVUFBUSxLQUFLLEtBQUssQ0FBQztBQUNqRCxRQUFNLE9BQU8sSUFBSSxHQUFHLE1BQU0sSUFBSSxVQUFRLEtBQUssTUFBTSxDQUFDO0FBQ2xELFNBQU87QUFBQSxJQUNMLEdBQUc7QUFBQSxJQUNILEdBQUc7QUFBQSxJQUNILE9BQU8sT0FBTztBQUFBLElBQ2QsUUFBUSxPQUFPO0FBQUEsRUFDaEI7QUFDSDtBQUNBLFNBQVMsZUFBZSxPQUFPO0FBQzdCLFFBQU0sY0FBYyxNQUFNLE1BQUssRUFBRyxLQUFLLENBQUMzUyxJQUFHSyxPQUFNTCxHQUFFLElBQUlLLEdBQUUsQ0FBQztBQUMxRCxRQUFNLFNBQVMsQ0FBRTtBQUNqQixNQUFJLFdBQVc7QUFDZixXQUFTbkQsS0FBSSxHQUFHQSxLQUFJLFlBQVksUUFBUUEsTUFBSztBQUMzQyxVQUFNLE9BQU8sWUFBWUEsRUFBQztBQUMxQixRQUFJLENBQUMsWUFBWSxLQUFLLElBQUksU0FBUyxJQUFJLFNBQVMsU0FBUyxHQUFHO0FBQzFELGFBQU8sS0FBSyxDQUFDLElBQUksQ0FBQztBQUFBLElBQ3hCLE9BQVc7QUFDTCxhQUFPLE9BQU8sU0FBUyxDQUFDLEVBQUUsS0FBSyxJQUFJO0FBQUEsSUFDekM7QUFDSSxlQUFXO0FBQUEsRUFDZjtBQUNFLFNBQU8sT0FBTyxJQUFJLFVBQVEsaUJBQWlCLGdCQUFnQixJQUFJLENBQUMsQ0FBQztBQUNuRTtBQU1BLE1BQU1vVyxXQUFTLFNBQVU5UCxVQUFTO0FBQ2hDLE1BQUlBLGFBQVksUUFBUTtBQUN0QixJQUFBQSxXQUFVLENBQUU7QUFBQSxFQUNoQjtBQUNFLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLFNBQUFBO0FBQUEsSUFDQSxNQUFNLEdBQUcsT0FBTztBQUNkLFlBQU07QUFBQSxRQUNKO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBLFVBQUFPO0FBQUEsUUFDQTtBQUFBLE1BQ1IsSUFBVTtBQUlKLFlBQU07QUFBQSxRQUNKLFVBQVU7QUFBQSxRQUNWLEdBQUF4RztBQUFBLFFBQ0EsR0FBQUU7QUFBQSxNQUNSLElBQVUsU0FBUytGLFVBQVMsS0FBSztBQUMzQixZQUFNLG9CQUFvQixNQUFNLEtBQU0sT0FBT08sVUFBUyxrQkFBa0IsT0FBTyxTQUFTQSxVQUFTLGVBQWUsU0FBUyxTQUFTLE1BQU8sRUFBRTtBQUMzSSxZQUFNLGNBQWMsZUFBZSxpQkFBaUI7QUFDcEQsWUFBTSxXQUFXLGlCQUFpQixnQkFBZ0IsaUJBQWlCLENBQUM7QUFDcEUsWUFBTSxnQkFBZ0IsaUJBQWlCLE9BQU87QUFDOUMsZUFBU3dQLHlCQUF3QjtBQUUvQixZQUFJLFlBQVksV0FBVyxLQUFLLFlBQVksQ0FBQyxFQUFFLE9BQU8sWUFBWSxDQUFDLEVBQUUsU0FBU2hXLE1BQUssUUFBUUUsTUFBSyxNQUFNO0FBRXBHLGlCQUFPLFlBQVksS0FBSyxVQUFRRixLQUFJLEtBQUssT0FBTyxjQUFjLFFBQVFBLEtBQUksS0FBSyxRQUFRLGNBQWMsU0FBU0UsS0FBSSxLQUFLLE1BQU0sY0FBYyxPQUFPQSxLQUFJLEtBQUssU0FBUyxjQUFjLE1BQU0sS0FBSztBQUFBLFFBQ3ZNO0FBR1EsWUFBSSxZQUFZLFVBQVUsR0FBRztBQUMzQixjQUFJLFlBQVksU0FBUyxNQUFNLEtBQUs7QUFDbEMsa0JBQU0sWUFBWSxZQUFZLENBQUM7QUFDL0Isa0JBQU0sV0FBVyxZQUFZLFlBQVksU0FBUyxDQUFDO0FBQ25ELGtCQUFNLFFBQVEsUUFBUSxTQUFTLE1BQU07QUFDckMsa0JBQU0rVixPQUFNLFVBQVU7QUFDdEIsa0JBQU1DLFVBQVMsU0FBUztBQUN4QixrQkFBTUMsUUFBTyxRQUFRLFVBQVUsT0FBTyxTQUFTO0FBQy9DLGtCQUFNQyxTQUFRLFFBQVEsVUFBVSxRQUFRLFNBQVM7QUFDakQsa0JBQU1DLFNBQVFELFNBQVFEO0FBQ3RCLGtCQUFNRyxVQUFTSixVQUFTRDtBQUN4QixtQkFBTztBQUFBLGNBQ0wsS0FBQUE7QUFBQSxjQUNBLFFBQUFDO0FBQUEsY0FDQSxNQUFBQztBQUFBLGNBQ0EsT0FBQUM7QUFBQSxjQUNBLE9BQUFDO0FBQUEsY0FDQSxRQUFBQztBQUFBLGNBQ0EsR0FBR0g7QUFBQSxjQUNILEdBQUdGO0FBQUEsWUFDSjtBQUFBLFVBQ2I7QUFDVSxnQkFBTSxhQUFhLFFBQVEsU0FBUyxNQUFNO0FBQzFDLGdCQUFNLFdBQVcsSUFBSSxHQUFHLFlBQVksSUFBSSxVQUFRLEtBQUssS0FBSyxDQUFDO0FBQzNELGdCQUFNLFVBQVUsSUFBSSxHQUFHLFlBQVksSUFBSSxVQUFRLEtBQUssSUFBSSxDQUFDO0FBQ3pELGdCQUFNLGVBQWUsWUFBWSxPQUFPLFVBQVEsYUFBYSxLQUFLLFNBQVMsVUFBVSxLQUFLLFVBQVUsUUFBUTtBQUM1RyxnQkFBTSxNQUFNLGFBQWEsQ0FBQyxFQUFFO0FBQzVCLGdCQUFNLFNBQVMsYUFBYSxhQUFhLFNBQVMsQ0FBQyxFQUFFO0FBQ3JELGdCQUFNLE9BQU87QUFDYixnQkFBTSxRQUFRO0FBQ2QsZ0JBQU0sUUFBUSxRQUFRO0FBQ3RCLGdCQUFNLFNBQVMsU0FBUztBQUN4QixpQkFBTztBQUFBLFlBQ0w7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLFlBQ0EsR0FBRztBQUFBLFlBQ0gsR0FBRztBQUFBLFVBQ0o7QUFBQSxRQUNYO0FBQ1EsZUFBTztBQUFBLE1BQ2Y7QUFDTSxZQUFNLGFBQWEsTUFBTXpQLFVBQVMsZ0JBQWdCO0FBQUEsUUFDaEQsV0FBVztBQUFBLFVBQ1QsdUJBQUF3UDtBQUFBLFFBQ0Q7QUFBQSxRQUNELFVBQVUsU0FBUztBQUFBLFFBQ25CO0FBQUEsTUFDUixDQUFPO0FBQ0QsVUFBSSxNQUFNLFVBQVUsTUFBTSxXQUFXLFVBQVUsS0FBSyxNQUFNLFVBQVUsTUFBTSxXQUFXLFVBQVUsS0FBSyxNQUFNLFVBQVUsVUFBVSxXQUFXLFVBQVUsU0FBUyxNQUFNLFVBQVUsV0FBVyxXQUFXLFVBQVUsUUFBUTtBQUNsTixlQUFPO0FBQUEsVUFDTCxPQUFPO0FBQUEsWUFDTCxPQUFPO0FBQUEsVUFDbkI7QUFBQSxRQUNTO0FBQUEsTUFDVDtBQUNNLGFBQU8sQ0FBRTtBQUFBLElBQ2Y7QUFBQSxFQUNHO0FBQ0g7QUFLQSxlQUFlLHFCQUFxQixPQUFPL1AsVUFBUztBQUNsRCxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0EsVUFBQU87QUFBQSxJQUNBO0FBQUEsRUFDSixJQUFNO0FBQ0osUUFBTSxNQUFNLE9BQU9BLFVBQVMsU0FBUyxPQUFPLFNBQVNBLFVBQVMsTUFBTSxTQUFTLFFBQVE7QUFDckYsUUFBTSxPQUFPLFFBQVEsU0FBUztBQUM5QixRQUFNLFlBQVksYUFBYSxTQUFTO0FBQ3hDLFFBQU0sYUFBYSxZQUFZLFNBQVMsTUFBTTtBQUM5QyxRQUFNLGdCQUFnQixDQUFDLFFBQVEsS0FBSyxFQUFFLFNBQVMsSUFBSSxJQUFJLEtBQUs7QUFDNUQsUUFBTSxpQkFBaUIsT0FBTyxhQUFhLEtBQUs7QUFDaEQsUUFBTSxXQUFXLFNBQVNQLFVBQVMsS0FBSztBQUd4QyxNQUFJO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDSixJQUFNLE9BQU8sYUFBYSxXQUFXO0FBQUEsSUFDakMsVUFBVTtBQUFBLElBQ1YsV0FBVztBQUFBLElBQ1gsZUFBZTtBQUFBLEVBQ25CLElBQU07QUFBQSxJQUNGLFVBQVU7QUFBQSxJQUNWLFdBQVc7QUFBQSxJQUNYLGVBQWU7QUFBQSxJQUNmLEdBQUc7QUFBQSxFQUNKO0FBQ0QsTUFBSSxhQUFhLE9BQU8sa0JBQWtCLFVBQVU7QUFDbEQsZ0JBQVksY0FBYyxRQUFRLGdCQUFnQixLQUFLO0FBQUEsRUFDM0Q7QUFDRSxTQUFPLGFBQWE7QUFBQSxJQUNsQixHQUFHLFlBQVk7QUFBQSxJQUNmLEdBQUcsV0FBVztBQUFBLEVBQ2xCLElBQU07QUFBQSxJQUNGLEdBQUcsV0FBVztBQUFBLElBQ2QsR0FBRyxZQUFZO0FBQUEsRUFDaEI7QUFDSDtBQVNBLE1BQU1wRSxXQUFTLFNBQVVvRSxVQUFTO0FBQ2hDLE1BQUlBLGFBQVksUUFBUTtBQUN0QixJQUFBQSxXQUFVO0FBQUEsRUFDZDtBQUNFLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLFNBQUFBO0FBQUEsSUFDQSxNQUFNLEdBQUcsT0FBTztBQUNkLFVBQUksdUJBQXVCO0FBQzNCLFlBQU07QUFBQSxRQUNKLEdBQUFqRztBQUFBLFFBQ0EsR0FBQUU7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ1IsSUFBVTtBQUNKLFlBQU0sYUFBYSxNQUFNLHFCQUFxQixPQUFPK0YsUUFBTztBQUk1RCxVQUFJLGdCQUFnQix3QkFBd0IsZUFBZSxXQUFXLE9BQU8sU0FBUyxzQkFBc0IsZUFBZSx3QkFBd0IsZUFBZSxVQUFVLFFBQVEsc0JBQXNCLGlCQUFpQjtBQUN6TixlQUFPLENBQUU7QUFBQSxNQUNqQjtBQUNNLGFBQU87QUFBQSxRQUNMLEdBQUdqRyxLQUFJLFdBQVc7QUFBQSxRQUNsQixHQUFHRSxLQUFJLFdBQVc7QUFBQSxRQUNsQixNQUFNO0FBQUEsVUFDSixHQUFHO0FBQUEsVUFDSDtBQUFBLFFBQ1Y7QUFBQSxNQUNPO0FBQUEsSUFDUDtBQUFBLEVBQ0c7QUFDSDtBQU9BLE1BQU1xVyxVQUFRLFNBQVV0USxVQUFTO0FBQy9CLE1BQUlBLGFBQVksUUFBUTtBQUN0QixJQUFBQSxXQUFVLENBQUU7QUFBQSxFQUNoQjtBQUNFLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLFNBQUFBO0FBQUEsSUFDQSxNQUFNLEdBQUcsT0FBTztBQUNkLFlBQU07QUFBQSxRQUNKLEdBQUFqRztBQUFBLFFBQ0EsR0FBQUU7QUFBQSxRQUNBO0FBQUEsTUFDUixJQUFVO0FBQ0osWUFBTTtBQUFBLFFBQ0osVUFBVSxnQkFBZ0I7QUFBQSxRQUMxQixXQUFXLGlCQUFpQjtBQUFBLFFBQzVCLFVBQVU7QUFBQSxVQUNSLElBQUksQ0FBQWdPLFVBQVE7QUFDVixnQkFBSTtBQUFBLGNBQ0YsR0FBQWxPO0FBQUEsY0FDQSxHQUFBRTtBQUFBLFlBQ2QsSUFBZ0JnTztBQUNKLG1CQUFPO0FBQUEsY0FDTCxHQUFBbE87QUFBQSxjQUNBLEdBQUFFO0FBQUEsWUFDRDtBQUFBLFVBQ2I7QUFBQSxRQUNTO0FBQUEsUUFDRCxHQUFHO0FBQUEsTUFDWCxJQUFVLFNBQVMrRixVQUFTLEtBQUs7QUFDM0IsWUFBTSxTQUFTO0FBQUEsUUFDYixHQUFBakc7QUFBQSxRQUNBLEdBQUFFO0FBQUEsTUFDRDtBQUNELFlBQU0sV0FBVyxNQUFNa1YsaUJBQWUsT0FBTyxxQkFBcUI7QUFDbEUsWUFBTSxZQUFZLFlBQVksUUFBUSxTQUFTLENBQUM7QUFDaEQsWUFBTSxXQUFXLGdCQUFnQixTQUFTO0FBQzFDLFVBQUksZ0JBQWdCLE9BQU8sUUFBUTtBQUNuQyxVQUFJLGlCQUFpQixPQUFPLFNBQVM7QUFDckMsVUFBSSxlQUFlO0FBQ2pCLGNBQU0sVUFBVSxhQUFhLE1BQU0sUUFBUTtBQUMzQyxjQUFNLFVBQVUsYUFBYSxNQUFNLFdBQVc7QUFDOUMsY0FBTWxPLE9BQU0sZ0JBQWdCLFNBQVMsT0FBTztBQUM1QyxjQUFNb08sT0FBTSxnQkFBZ0IsU0FBUyxPQUFPO0FBQzVDLHdCQUFnQixNQUFNcE8sTUFBSyxlQUFlb08sSUFBRztBQUFBLE1BQ3JEO0FBQ00sVUFBSSxnQkFBZ0I7QUFDbEIsY0FBTSxVQUFVLGNBQWMsTUFBTSxRQUFRO0FBQzVDLGNBQU0sVUFBVSxjQUFjLE1BQU0sV0FBVztBQUMvQyxjQUFNcE8sT0FBTSxpQkFBaUIsU0FBUyxPQUFPO0FBQzdDLGNBQU1vTyxPQUFNLGlCQUFpQixTQUFTLE9BQU87QUFDN0MseUJBQWlCLE1BQU1wTyxNQUFLLGdCQUFnQm9PLElBQUc7QUFBQSxNQUN2RDtBQUNNLFlBQU0sZ0JBQWdCLFFBQVEsR0FBRztBQUFBLFFBQy9CLEdBQUc7QUFBQSxRQUNILENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDWixDQUFDLFNBQVMsR0FBRztBQUFBLE1BQ3JCLENBQU87QUFDRCxhQUFPO0FBQUEsUUFDTCxHQUFHO0FBQUEsUUFDSCxNQUFNO0FBQUEsVUFDSixHQUFHLGNBQWMsSUFBSXRWO0FBQUEsVUFDckIsR0FBRyxjQUFjLElBQUlFO0FBQUEsUUFDL0I7QUFBQSxNQUNPO0FBQUEsSUFDUDtBQUFBLEVBQ0c7QUFDSDtBQUlBLE1BQU1zVyxlQUFhLFNBQVV2USxVQUFTO0FBQ3BDLE1BQUlBLGFBQVksUUFBUTtBQUN0QixJQUFBQSxXQUFVLENBQUU7QUFBQSxFQUNoQjtBQUNFLFNBQU87QUFBQSxJQUNMLFNBQUFBO0FBQUEsSUFDQSxHQUFHLE9BQU87QUFDUixZQUFNO0FBQUEsUUFDSixHQUFBakc7QUFBQSxRQUNBLEdBQUFFO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDUixJQUFVO0FBQ0osWUFBTTtBQUFBLFFBQ0osUUFBQTJCLFVBQVM7QUFBQSxRQUNULFVBQVUsZ0JBQWdCO0FBQUEsUUFDMUIsV0FBVyxpQkFBaUI7QUFBQSxNQUNwQyxJQUFVLFNBQVNvRSxVQUFTLEtBQUs7QUFDM0IsWUFBTSxTQUFTO0FBQUEsUUFDYixHQUFBakc7QUFBQSxRQUNBLEdBQUFFO0FBQUEsTUFDRDtBQUNELFlBQU0sWUFBWSxZQUFZLFNBQVM7QUFDdkMsWUFBTSxXQUFXLGdCQUFnQixTQUFTO0FBQzFDLFVBQUksZ0JBQWdCLE9BQU8sUUFBUTtBQUNuQyxVQUFJLGlCQUFpQixPQUFPLFNBQVM7QUFDckMsWUFBTSxZQUFZLFNBQVMyQixTQUFRLEtBQUs7QUFDeEMsWUFBTSxpQkFBaUIsT0FBTyxjQUFjLFdBQVc7QUFBQSxRQUNyRCxVQUFVO0FBQUEsUUFDVixXQUFXO0FBQUEsTUFDbkIsSUFBVTtBQUFBLFFBQ0YsVUFBVTtBQUFBLFFBQ1YsV0FBVztBQUFBLFFBQ1gsR0FBRztBQUFBLE1BQ0o7QUFDRCxVQUFJLGVBQWU7QUFDakIsY0FBTSxNQUFNLGFBQWEsTUFBTSxXQUFXO0FBQzFDLGNBQU0sV0FBVyxNQUFNLFVBQVUsUUFBUSxJQUFJLE1BQU0sU0FBUyxHQUFHLElBQUksZUFBZTtBQUNsRixjQUFNLFdBQVcsTUFBTSxVQUFVLFFBQVEsSUFBSSxNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWU7QUFDbkYsWUFBSSxnQkFBZ0IsVUFBVTtBQUM1QiwwQkFBZ0I7QUFBQSxRQUMxQixXQUFtQixnQkFBZ0IsVUFBVTtBQUNuQywwQkFBZ0I7QUFBQSxRQUMxQjtBQUFBLE1BQ0E7QUFDTSxVQUFJLGdCQUFnQjtBQUNsQixZQUFJLHVCQUF1QjtBQUMzQixjQUFNLE1BQU0sYUFBYSxNQUFNLFVBQVU7QUFDekMsY0FBTSxlQUFlLENBQUMsT0FBTyxNQUFNLEVBQUUsU0FBUyxRQUFRLFNBQVMsQ0FBQztBQUNoRSxjQUFNLFdBQVcsTUFBTSxVQUFVLFNBQVMsSUFBSSxNQUFNLFNBQVMsR0FBRyxLQUFLLGlCQUFpQix3QkFBd0IsZUFBZSxXQUFXLE9BQU8sU0FBUyxzQkFBc0IsU0FBUyxNQUFNLElBQUksTUFBTSxlQUFlLElBQUksZUFBZTtBQUN6TyxjQUFNLFdBQVcsTUFBTSxVQUFVLFNBQVMsSUFBSSxNQUFNLFVBQVUsR0FBRyxLQUFLLGVBQWUsTUFBTSx5QkFBeUIsZUFBZSxXQUFXLE9BQU8sU0FBUyx1QkFBdUIsU0FBUyxNQUFNLE1BQU0sZUFBZSxlQUFlLFlBQVk7QUFDcFAsWUFBSSxpQkFBaUIsVUFBVTtBQUM3QiwyQkFBaUI7QUFBQSxRQUMzQixXQUFtQixpQkFBaUIsVUFBVTtBQUNwQywyQkFBaUI7QUFBQSxRQUMzQjtBQUFBLE1BQ0E7QUFDTSxhQUFPO0FBQUEsUUFDTCxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ1osQ0FBQyxTQUFTLEdBQUc7QUFBQSxNQUNkO0FBQUEsSUFDUDtBQUFBLEVBQ0c7QUFDSDtBQVFBLE1BQU1OLFNBQU8sU0FBVTBFLFVBQVM7QUFDOUIsTUFBSUEsYUFBWSxRQUFRO0FBQ3RCLElBQUFBLFdBQVUsQ0FBRTtBQUFBLEVBQ2hCO0FBQ0UsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sU0FBQUE7QUFBQSxJQUNBLE1BQU0sR0FBRyxPQUFPO0FBQ2QsWUFBTTtBQUFBLFFBQ0o7QUFBQSxRQUNBO0FBQUEsUUFDQSxVQUFBTztBQUFBLFFBQ0E7QUFBQSxNQUNSLElBQVU7QUFDSixZQUFNO0FBQUEsUUFDSixRQUFRLE1BQU07QUFBQSxRQUFFO0FBQUEsUUFDaEIsR0FBRztBQUFBLE1BQ1gsSUFBVSxTQUFTUCxVQUFTLEtBQUs7QUFDM0IsWUFBTSxXQUFXLE1BQU1tUCxpQkFBZSxPQUFPLHFCQUFxQjtBQUNsRSxZQUFNLE9BQU8sUUFBUSxTQUFTO0FBQzlCLFlBQU0sWUFBWSxhQUFhLFNBQVM7QUFDeEMsWUFBTSxVQUFVLFlBQVksU0FBUyxNQUFNO0FBQzNDLFlBQU07QUFBQSxRQUNKO0FBQUEsUUFDQTtBQUFBLE1BQ0QsSUFBRyxNQUFNO0FBQ1YsVUFBSTtBQUNKLFVBQUk7QUFDSixVQUFJLFNBQVMsU0FBUyxTQUFTLFVBQVU7QUFDdkMscUJBQWE7QUFDYixvQkFBWSxlQUFnQixPQUFPNU8sVUFBUyxTQUFTLE9BQU8sU0FBU0EsVUFBUyxNQUFNLFNBQVMsUUFBUSxLQUFNLFVBQVUsU0FBUyxTQUFTO0FBQUEsTUFDL0ksT0FBYTtBQUNMLG9CQUFZO0FBQ1oscUJBQWEsY0FBYyxRQUFRLFFBQVE7QUFBQSxNQUNuRDtBQUNNLFlBQU0sd0JBQXdCLFNBQVMsU0FBUyxNQUFNLFNBQVM7QUFDL0QsWUFBTSx1QkFBdUIsUUFBUSxTQUFTLE9BQU8sU0FBUztBQUM5RCxZQUFNLDBCQUEwQixJQUFJLFNBQVMsU0FBUyxVQUFVLEdBQUcscUJBQXFCO0FBQ3hGLFlBQU0seUJBQXlCLElBQUksUUFBUSxTQUFTLFNBQVMsR0FBRyxvQkFBb0I7QUFDcEYsWUFBTSxVQUFVLENBQUMsTUFBTSxlQUFlO0FBQ3RDLFVBQUksa0JBQWtCO0FBQ3RCLFVBQUksaUJBQWlCO0FBQ3JCLFVBQUksU0FBUztBQUNYLHlCQUFpQixhQUFhLFVBQVUsSUFBSSx3QkFBd0Isb0JBQW9CLElBQUk7QUFBQSxNQUNwRyxPQUFhO0FBQ0wsMEJBQWtCLGFBQWEsVUFBVSxJQUFJLHlCQUF5QixxQkFBcUIsSUFBSTtBQUFBLE1BQ3ZHO0FBQ00sVUFBSSxXQUFXLENBQUMsV0FBVztBQUN6QixjQUFNLE9BQU8sSUFBSSxTQUFTLE1BQU0sQ0FBQztBQUNqQyxjQUFNLE9BQU8sSUFBSSxTQUFTLE9BQU8sQ0FBQztBQUNsQyxjQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUssQ0FBQztBQUNoQyxjQUFNLE9BQU8sSUFBSSxTQUFTLFFBQVEsQ0FBQztBQUNuQyxZQUFJLFNBQVM7QUFDWCwyQkFBaUIsUUFBUSxLQUFLLFNBQVMsS0FBSyxTQUFTLElBQUksT0FBTyxPQUFPLElBQUksU0FBUyxNQUFNLFNBQVMsS0FBSztBQUFBLFFBQ2xILE9BQWU7QUFDTCw0QkFBa0IsU0FBUyxLQUFLLFNBQVMsS0FBSyxTQUFTLElBQUksT0FBTyxPQUFPLElBQUksU0FBUyxLQUFLLFNBQVMsTUFBTTtBQUFBLFFBQ3BIO0FBQUEsTUFDQTtBQUNNLFlBQU0sTUFBTTtBQUFBLFFBQ1YsR0FBRztBQUFBLFFBQ0g7QUFBQSxRQUNBO0FBQUEsTUFDUixDQUFPO0FBQ0QsWUFBTSxpQkFBaUIsTUFBTUEsVUFBUyxjQUFjLFNBQVMsUUFBUTtBQUNyRSxVQUFJLFVBQVUsZUFBZSxTQUFTLFdBQVcsZUFBZSxRQUFRO0FBQ3RFLGVBQU87QUFBQSxVQUNMLE9BQU87QUFBQSxZQUNMLE9BQU87QUFBQSxVQUNuQjtBQUFBLFFBQ1M7QUFBQSxNQUNUO0FBQ00sYUFBTyxDQUFFO0FBQUEsSUFDZjtBQUFBLEVBQ0c7QUFDSDtBQ3pnQ0EsU0FBUyxZQUFZO0FBQ25CLFNBQU8sT0FBTyxXQUFXO0FBQzNCO0FBQ0EsU0FBUyxZQUFZa0ssT0FBTTtBQUN6QixNQUFJLE9BQU9BLEtBQUksR0FBRztBQUNoQixZQUFRQSxNQUFLLFlBQVksSUFBSSxZQUFhO0FBQUEsRUFDOUM7QUFJRSxTQUFPO0FBQ1Q7QUFDQSxTQUFTLFVBQVVBLE9BQU07QUFDdkIsTUFBSTtBQUNKLFVBQVFBLFNBQVEsU0FBUyxzQkFBc0JBLE1BQUssa0JBQWtCLE9BQU8sU0FBUyxvQkFBb0IsZ0JBQWdCO0FBQzVIO0FBQ0EsU0FBUyxtQkFBbUJBLE9BQU07QUFDaEMsTUFBSXhDO0FBQ0osVUFBUUEsU0FBUSxPQUFPd0MsS0FBSSxJQUFJQSxNQUFLLGdCQUFnQkEsTUFBSyxhQUFhLE9BQU8sYUFBYSxPQUFPLFNBQVN4QyxNQUFLO0FBQ2pIO0FBQ0EsU0FBUyxPQUFPLE9BQU87QUFDckIsTUFBSSxDQUFDLFVBQVMsR0FBSTtBQUNoQixXQUFPO0FBQUEsRUFDWDtBQUNFLFNBQU8saUJBQWlCLFFBQVEsaUJBQWlCLFVBQVUsS0FBSyxFQUFFO0FBQ3BFO0FBQ0EsU0FBUyxVQUFVLE9BQU87QUFDeEIsTUFBSSxDQUFDLFVBQVMsR0FBSTtBQUNoQixXQUFPO0FBQUEsRUFDWDtBQUNFLFNBQU8saUJBQWlCLFdBQVcsaUJBQWlCLFVBQVUsS0FBSyxFQUFFO0FBQ3ZFO0FBQ0EsU0FBUyxjQUFjLE9BQU87QUFDNUIsTUFBSSxDQUFDLFVBQVMsR0FBSTtBQUNoQixXQUFPO0FBQUEsRUFDWDtBQUNFLFNBQU8saUJBQWlCLGVBQWUsaUJBQWlCLFVBQVUsS0FBSyxFQUFFO0FBQzNFO0FBQ0EsU0FBUyxhQUFhLE9BQU87QUFDM0IsTUFBSSxDQUFDLFVBQVMsS0FBTSxPQUFPLGVBQWUsYUFBYTtBQUNyRCxXQUFPO0FBQUEsRUFDWDtBQUNFLFNBQU8saUJBQWlCLGNBQWMsaUJBQWlCLFVBQVUsS0FBSyxFQUFFO0FBQzFFO0FBQ0EsU0FBUyxrQkFBa0IsU0FBUztBQUNsQyxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0osSUFBTXVJLG1CQUFpQixPQUFPO0FBQzVCLFNBQU8sa0NBQWtDLEtBQUssV0FBVyxZQUFZLFNBQVMsS0FBSyxDQUFDLENBQUMsVUFBVSxVQUFVLEVBQUUsU0FBUyxPQUFPO0FBQzdIO0FBQ0EsU0FBUyxlQUFlLFNBQVM7QUFDL0IsU0FBTyxDQUFDLFNBQVMsTUFBTSxJQUFJLEVBQUUsU0FBUyxZQUFZLE9BQU8sQ0FBQztBQUM1RDtBQUNBLFNBQVMsV0FBVyxTQUFTO0FBQzNCLFNBQU8sQ0FBQyxpQkFBaUIsUUFBUSxFQUFFLEtBQUssY0FBWTtBQUNsRCxRQUFJO0FBQ0YsYUFBTyxRQUFRLFFBQVEsUUFBUTtBQUFBLElBQ2hDLFNBQVEzVixJQUFHO0FBQ1YsYUFBTztBQUFBLElBQ2I7QUFBQSxFQUNBLENBQUc7QUFDSDtBQUNBLFNBQVMsa0JBQWtCLGNBQWM7QUFDdkMsUUFBTSxTQUFTLFNBQVU7QUFDekIsUUFBTW1VLE9BQU0sVUFBVSxZQUFZLElBQUl3QixtQkFBaUIsWUFBWSxJQUFJO0FBR3ZFLFNBQU94QixLQUFJLGNBQWMsVUFBVUEsS0FBSSxnQkFBZ0IsV0FBV0EsS0FBSSxnQkFBZ0JBLEtBQUksa0JBQWtCLFdBQVcsVUFBVSxDQUFDLFdBQVdBLEtBQUksaUJBQWlCQSxLQUFJLG1CQUFtQixTQUFTLFVBQVUsQ0FBQyxXQUFXQSxLQUFJLFNBQVNBLEtBQUksV0FBVyxTQUFTLFVBQVUsQ0FBQyxhQUFhLGVBQWUsUUFBUSxFQUFFLEtBQUssWUFBVUEsS0FBSSxjQUFjLElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsVUFBVSxVQUFVLFNBQVMsRUFBRSxLQUFLLFlBQVVBLEtBQUksV0FBVyxJQUFJLFNBQVMsS0FBSyxDQUFDO0FBQ25jO0FBQ0EsU0FBUyxtQkFBbUIsU0FBUztBQUNuQyxNQUFJLGNBQWMsY0FBYyxPQUFPO0FBQ3ZDLFNBQU8sY0FBYyxXQUFXLEtBQUssQ0FBQyxzQkFBc0IsV0FBVyxHQUFHO0FBQ3hFLFFBQUksa0JBQWtCLFdBQVcsR0FBRztBQUNsQyxhQUFPO0FBQUEsSUFDYixXQUFlLFdBQVcsV0FBVyxHQUFHO0FBQ2xDLGFBQU87QUFBQSxJQUNiO0FBQ0ksa0JBQWMsY0FBYyxXQUFXO0FBQUEsRUFDM0M7QUFDRSxTQUFPO0FBQ1Q7QUFDQSxTQUFTLFdBQVc7QUFDbEIsTUFBSSxPQUFPLFFBQVEsZUFBZSxDQUFDLElBQUksU0FBVSxRQUFPO0FBQ3hELFNBQU8sSUFBSSxTQUFTLDJCQUEyQixNQUFNO0FBQ3ZEO0FBQ0EsU0FBUyxzQkFBc0J2RSxPQUFNO0FBQ25DLFNBQU8sQ0FBQyxRQUFRLFFBQVEsV0FBVyxFQUFFLFNBQVMsWUFBWUEsS0FBSSxDQUFDO0FBQ2pFO0FBQ0EsU0FBUytGLG1CQUFpQixTQUFTO0FBQ2pDLFNBQU8sVUFBVSxPQUFPLEVBQUUsaUJBQWlCLE9BQU87QUFDcEQ7QUFDQSxTQUFTLGNBQWMsU0FBUztBQUM5QixNQUFJLFVBQVUsT0FBTyxHQUFHO0FBQ3RCLFdBQU87QUFBQSxNQUNMLFlBQVksUUFBUTtBQUFBLE1BQ3BCLFdBQVcsUUFBUTtBQUFBLElBQ3BCO0FBQUEsRUFDTDtBQUNFLFNBQU87QUFBQSxJQUNMLFlBQVksUUFBUTtBQUFBLElBQ3BCLFdBQVcsUUFBUTtBQUFBLEVBQ3BCO0FBQ0g7QUFDQSxTQUFTLGNBQWMvRixPQUFNO0FBQzNCLE1BQUksWUFBWUEsS0FBSSxNQUFNLFFBQVE7QUFDaEMsV0FBT0E7QUFBQSxFQUNYO0FBQ0UsUUFBTTtBQUFBO0FBQUEsSUFFTkEsTUFBSztBQUFBLElBRUxBLE1BQUs7QUFBQSxJQUVMLGFBQWFBLEtBQUksS0FBS0EsTUFBSztBQUFBLElBRTNCLG1CQUFtQkEsS0FBSTtBQUFBO0FBQ3ZCLFNBQU8sYUFBYSxNQUFNLElBQUksT0FBTyxPQUFPO0FBQzlDO0FBQ0EsU0FBUywyQkFBMkJBLE9BQU07QUFDeEMsUUFBTSxhQUFhLGNBQWNBLEtBQUk7QUFDckMsTUFBSSxzQkFBc0IsVUFBVSxHQUFHO0FBQ3JDLFdBQU9BLE1BQUssZ0JBQWdCQSxNQUFLLGNBQWMsT0FBT0EsTUFBSztBQUFBLEVBQy9EO0FBQ0UsTUFBSSxjQUFjLFVBQVUsS0FBSyxrQkFBa0IsVUFBVSxHQUFHO0FBQzlELFdBQU87QUFBQSxFQUNYO0FBQ0UsU0FBTywyQkFBMkIsVUFBVTtBQUM5QztBQUNBLFNBQVMscUJBQXFCQSxPQUFNLE1BQU0saUJBQWlCO0FBQ3pELE1BQUk7QUFDSixNQUFJLFNBQVMsUUFBUTtBQUNuQixXQUFPLENBQUU7QUFBQSxFQUNiO0FBQ0UsTUFBSSxvQkFBb0IsUUFBUTtBQUM5QixzQkFBa0I7QUFBQSxFQUN0QjtBQUNFLFFBQU0scUJBQXFCLDJCQUEyQkEsS0FBSTtBQUMxRCxRQUFNLFNBQVMseUJBQXlCLHVCQUF1QkEsTUFBSyxrQkFBa0IsT0FBTyxTQUFTLHFCQUFxQjtBQUMzSCxRQUFNLE1BQU0sVUFBVSxrQkFBa0I7QUFDeEMsTUFBSSxRQUFRO0FBQ1YsVUFBTSxlQUFlLGdCQUFnQixHQUFHO0FBQ3hDLFdBQU8sS0FBSyxPQUFPLEtBQUssSUFBSSxrQkFBa0IsQ0FBRSxHQUFFLGtCQUFrQixrQkFBa0IsSUFBSSxxQkFBcUIsQ0FBRSxHQUFFLGdCQUFnQixrQkFBa0IscUJBQXFCLFlBQVksSUFBSSxFQUFFO0FBQUEsRUFDaE07QUFDRSxTQUFPLEtBQUssT0FBTyxvQkFBb0IscUJBQXFCLG9CQUFvQixDQUFBLEdBQUksZUFBZSxDQUFDO0FBQ3RHO0FBQ0EsU0FBUyxnQkFBZ0IsS0FBSztBQUM1QixTQUFPLElBQUksVUFBVSxPQUFPLGVBQWUsSUFBSSxNQUFNLElBQUksSUFBSSxlQUFlO0FBQzlFO0FDakpBLFNBQVNnRyxtQkFBaUIsU0FBUztBQUNqQyxRQUFNekIsT0FBTXdCLG1CQUFpQixPQUFPO0FBR3BDLE1BQUksUUFBUSxXQUFXeEIsS0FBSSxLQUFLLEtBQUs7QUFDckMsTUFBSSxTQUFTLFdBQVdBLEtBQUksTUFBTSxLQUFLO0FBQ3ZDLFFBQU0sWUFBWSxjQUFjLE9BQU87QUFDdkMsUUFBTSxjQUFjLFlBQVksUUFBUSxjQUFjO0FBQ3RELFFBQU0sZUFBZSxZQUFZLFFBQVEsZUFBZTtBQUN4RCxRQUFNLGlCQUFpQixNQUFNLEtBQUssTUFBTSxlQUFlLE1BQU0sTUFBTSxNQUFNO0FBQ3pFLE1BQUksZ0JBQWdCO0FBQ2xCLFlBQVE7QUFDUixhQUFTO0FBQUEsRUFDYjtBQUNFLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBRztBQUFBLEVBQ0o7QUFDSDtBQUVBLFNBQVMwQixnQkFBYyxTQUFTO0FBQzlCLFNBQU8sQ0FBQyxVQUFVLE9BQU8sSUFBSSxRQUFRLGlCQUFpQjtBQUN4RDtBQUVBLFNBQVNDLFdBQVMsU0FBUztBQUN6QixRQUFNLGFBQWFELGdCQUFjLE9BQU87QUFDeEMsTUFBSSxDQUFDLGNBQWMsVUFBVSxHQUFHO0FBQzlCLFdBQU8sYUFBYSxDQUFDO0FBQUEsRUFDekI7QUFDRSxRQUFNLE9BQU8sV0FBVyxzQkFBdUI7QUFDL0MsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFBRTtBQUFBLEVBQ0osSUFBTUgsbUJBQWlCLFVBQVU7QUFDL0IsTUFBSTFXLE1BQUs2VyxLQUFJLE1BQU0sS0FBSyxLQUFLLElBQUksS0FBSyxTQUFTO0FBQy9DLE1BQUkzVyxNQUFLMlcsS0FBSSxNQUFNLEtBQUssTUFBTSxJQUFJLEtBQUssVUFBVTtBQUlqRCxNQUFJLENBQUM3VyxNQUFLLENBQUMsT0FBTyxTQUFTQSxFQUFDLEdBQUc7QUFDN0IsSUFBQUEsS0FBSTtBQUFBLEVBQ1I7QUFDRSxNQUFJLENBQUNFLE1BQUssQ0FBQyxPQUFPLFNBQVNBLEVBQUMsR0FBRztBQUM3QixJQUFBQSxLQUFJO0FBQUEsRUFDUjtBQUNFLFNBQU87QUFBQSxJQUNMLEdBQUFGO0FBQUEsSUFDQSxHQUFBRTtBQUFBLEVBQ0Q7QUFDSDtBQUVBLE1BQU00VyxjQUF5Qiw2QkFBYSxDQUFDO0FBQzdDLFNBQVNDLG1CQUFpQixTQUFTO0FBQ2pDLFFBQU0sTUFBTSxVQUFVLE9BQU87QUFDN0IsTUFBSSxDQUFDLFNBQVEsS0FBTSxDQUFDLElBQUksZ0JBQWdCO0FBQ3RDLFdBQU9EO0FBQUFBLEVBQ1g7QUFDRSxTQUFPO0FBQUEsSUFDTCxHQUFHLElBQUksZUFBZTtBQUFBLElBQ3RCLEdBQUcsSUFBSSxlQUFlO0FBQUEsRUFDdkI7QUFDSDtBQUNBLFNBQVNFLHlCQUF1QixTQUFTLFNBQVMsc0JBQXNCO0FBQ3RFLE1BQUksWUFBWSxRQUFRO0FBQ3RCLGNBQVU7QUFBQSxFQUNkO0FBQ0UsTUFBSSxDQUFDLHdCQUF3QixXQUFXLHlCQUF5QixVQUFVLE9BQU8sR0FBRztBQUNuRixXQUFPO0FBQUEsRUFDWDtBQUNFLFNBQU87QUFDVDtBQUVBLFNBQVNoQix3QkFBc0IsU0FBUyxjQUFjLGlCQUFpQixjQUFjO0FBQ25GLE1BQUksaUJBQWlCLFFBQVE7QUFDM0IsbUJBQWU7QUFBQSxFQUNuQjtBQUNFLE1BQUksb0JBQW9CLFFBQVE7QUFDOUIsc0JBQWtCO0FBQUEsRUFDdEI7QUFDRSxRQUFNLGFBQWEsUUFBUSxzQkFBdUI7QUFDbEQsUUFBTSxhQUFhVyxnQkFBYyxPQUFPO0FBQ3hDLE1BQUksUUFBUSxhQUFhLENBQUM7QUFDMUIsTUFBSSxjQUFjO0FBQ2hCLFFBQUksY0FBYztBQUNoQixVQUFJLFVBQVUsWUFBWSxHQUFHO0FBQzNCLGdCQUFRQyxXQUFTLFlBQVk7QUFBQSxNQUNyQztBQUFBLElBQ0EsT0FBVztBQUNMLGNBQVFBLFdBQVMsT0FBTztBQUFBLElBQzlCO0FBQUEsRUFDQTtBQUNFLFFBQU0sZ0JBQWdCSSx5QkFBdUIsWUFBWSxpQkFBaUIsWUFBWSxJQUFJRCxtQkFBaUIsVUFBVSxJQUFJLGFBQWEsQ0FBQztBQUN2SSxNQUFJL1csTUFBSyxXQUFXLE9BQU8sY0FBYyxLQUFLLE1BQU07QUFDcEQsTUFBSUUsTUFBSyxXQUFXLE1BQU0sY0FBYyxLQUFLLE1BQU07QUFDbkQsTUFBSSxRQUFRLFdBQVcsUUFBUSxNQUFNO0FBQ3JDLE1BQUksU0FBUyxXQUFXLFNBQVMsTUFBTTtBQUN2QyxNQUFJLFlBQVk7QUFDZCxVQUFNLE1BQU0sVUFBVSxVQUFVO0FBQ2hDLFVBQU0sWUFBWSxnQkFBZ0IsVUFBVSxZQUFZLElBQUksVUFBVSxZQUFZLElBQUk7QUFDdEYsUUFBSSxhQUFhO0FBQ2pCLFFBQUksZ0JBQWdCLGdCQUFnQixVQUFVO0FBQzlDLFdBQU8saUJBQWlCLGdCQUFnQixjQUFjLFlBQVk7QUFDaEUsWUFBTSxjQUFjMFcsV0FBUyxhQUFhO0FBQzFDLFlBQU0sYUFBYSxjQUFjLHNCQUF1QjtBQUN4RCxZQUFNM0IsT0FBTXdCLG1CQUFpQixhQUFhO0FBQzFDLFlBQU0sT0FBTyxXQUFXLFFBQVEsY0FBYyxhQUFhLFdBQVd4QixLQUFJLFdBQVcsS0FBSyxZQUFZO0FBQ3RHLFlBQU0sTUFBTSxXQUFXLE9BQU8sY0FBYyxZQUFZLFdBQVdBLEtBQUksVUFBVSxLQUFLLFlBQVk7QUFDbEcsTUFBQWpWLE1BQUssWUFBWTtBQUNqQixNQUFBRSxNQUFLLFlBQVk7QUFDakIsZUFBUyxZQUFZO0FBQ3JCLGdCQUFVLFlBQVk7QUFDdEIsTUFBQUYsTUFBSztBQUNMLE1BQUFFLE1BQUs7QUFDTCxtQkFBYSxVQUFVLGFBQWE7QUFDcEMsc0JBQWdCLGdCQUFnQixVQUFVO0FBQUEsSUFDaEQ7QUFBQSxFQUNBO0FBQ0UsU0FBTyxpQkFBaUI7QUFBQSxJQUN0QjtBQUFBLElBQ0E7QUFBQSxJQUNBLEdBQUFGO0FBQUEsSUFDQSxHQUFBRTtBQUFBLEVBQ0osQ0FBRztBQUNIO0FBSUEsU0FBUytXLHNCQUFvQixTQUFTLE1BQU07QUFDMUMsUUFBTSxhQUFhLGNBQWMsT0FBTyxFQUFFO0FBQzFDLE1BQUksQ0FBQyxNQUFNO0FBQ1QsV0FBT2pCLHdCQUFzQixtQkFBbUIsT0FBTyxDQUFDLEVBQUUsT0FBTztBQUFBLEVBQ3JFO0FBQ0UsU0FBTyxLQUFLLE9BQU87QUFDckI7QUFFQSxTQUFTa0IsZ0JBQWMsaUJBQWlCLFFBQVEsa0JBQWtCO0FBQ2hFLE1BQUkscUJBQXFCLFFBQVE7QUFDL0IsdUJBQW1CO0FBQUEsRUFDdkI7QUFDRSxRQUFNLFdBQVcsZ0JBQWdCLHNCQUF1QjtBQUN4RCxRQUFNbFgsS0FBSSxTQUFTLE9BQU8sT0FBTyxjQUFjLG1CQUFtQjtBQUFBO0FBQUEsSUFFbEVpWCxzQkFBb0IsaUJBQWlCLFFBQVE7QUFBQTtBQUM3QyxRQUFNL1csS0FBSSxTQUFTLE1BQU0sT0FBTztBQUNoQyxTQUFPO0FBQUEsSUFDTCxHQUFBRjtBQUFBLElBQ0EsR0FBQUU7QUFBQSxFQUNEO0FBQ0g7QUFFQSxTQUFTaVgsd0RBQXNEakosT0FBTTtBQUNuRSxNQUFJO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0osSUFBTUE7QUFDSixRQUFNLFVBQVUsYUFBYTtBQUM3QixRQUFNLGtCQUFrQixtQkFBbUIsWUFBWTtBQUN2RCxRQUFNLFdBQVcsV0FBVyxXQUFXLFNBQVMsUUFBUSxJQUFJO0FBQzVELE1BQUksaUJBQWlCLG1CQUFtQixZQUFZLFNBQVM7QUFDM0QsV0FBTztBQUFBLEVBQ1g7QUFDRSxNQUFJLFNBQVM7QUFBQSxJQUNYLFlBQVk7QUFBQSxJQUNaLFdBQVc7QUFBQSxFQUNaO0FBQ0QsTUFBSSxRQUFRLGFBQWEsQ0FBQztBQUMxQixRQUFNLFVBQVUsYUFBYSxDQUFDO0FBQzlCLFFBQU0sMEJBQTBCLGNBQWMsWUFBWTtBQUMxRCxNQUFJLDJCQUEyQixDQUFDLDJCQUEyQixDQUFDLFNBQVM7QUFDbkUsUUFBSSxZQUFZLFlBQVksTUFBTSxVQUFVLGtCQUFrQixlQUFlLEdBQUc7QUFDOUUsZUFBUyxjQUFjLFlBQVk7QUFBQSxJQUN6QztBQUNJLFFBQUksY0FBYyxZQUFZLEdBQUc7QUFDL0IsWUFBTSxhQUFhOEgsd0JBQXNCLFlBQVk7QUFDckQsY0FBUVksV0FBUyxZQUFZO0FBQzdCLGNBQVEsSUFBSSxXQUFXLElBQUksYUFBYTtBQUN4QyxjQUFRLElBQUksV0FBVyxJQUFJLGFBQWE7QUFBQSxJQUM5QztBQUFBLEVBQ0E7QUFDRSxRQUFNLGFBQWEsbUJBQW1CLENBQUMsMkJBQTJCLENBQUMsVUFBVU0sZ0JBQWMsaUJBQWlCLFFBQVEsSUFBSSxJQUFJLGFBQWEsQ0FBQztBQUMxSSxTQUFPO0FBQUEsSUFDTCxPQUFPLEtBQUssUUFBUSxNQUFNO0FBQUEsSUFDMUIsUUFBUSxLQUFLLFNBQVMsTUFBTTtBQUFBLElBQzVCLEdBQUcsS0FBSyxJQUFJLE1BQU0sSUFBSSxPQUFPLGFBQWEsTUFBTSxJQUFJLFFBQVEsSUFBSSxXQUFXO0FBQUEsSUFDM0UsR0FBRyxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sWUFBWSxNQUFNLElBQUksUUFBUSxJQUFJLFdBQVc7QUFBQSxFQUMzRTtBQUNIO0FBRUEsU0FBU0UsaUJBQWUsU0FBUztBQUMvQixTQUFPLE1BQU0sS0FBSyxRQUFRLGVBQWMsQ0FBRTtBQUM1QztBQUlBLFNBQVNDLGtCQUFnQixTQUFTO0FBQ2hDLFFBQU0sT0FBTyxtQkFBbUIsT0FBTztBQUN2QyxRQUFNLFNBQVMsY0FBYyxPQUFPO0FBQ3BDLFFBQU0sT0FBTyxRQUFRLGNBQWM7QUFDbkMsUUFBTSxRQUFRLElBQUksS0FBSyxhQUFhLEtBQUssYUFBYSxLQUFLLGFBQWEsS0FBSyxXQUFXO0FBQ3hGLFFBQU0sU0FBUyxJQUFJLEtBQUssY0FBYyxLQUFLLGNBQWMsS0FBSyxjQUFjLEtBQUssWUFBWTtBQUM3RixNQUFJclgsS0FBSSxDQUFDLE9BQU8sYUFBYWlYLHNCQUFvQixPQUFPO0FBQ3hELFFBQU0vVyxLQUFJLENBQUMsT0FBTztBQUNsQixNQUFJdVcsbUJBQWlCLElBQUksRUFBRSxjQUFjLE9BQU87QUFDOUMsSUFBQXpXLE1BQUssSUFBSSxLQUFLLGFBQWEsS0FBSyxXQUFXLElBQUk7QUFBQSxFQUNuRDtBQUNFLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBQUE7QUFBQSxJQUNBLEdBQUFFO0FBQUEsRUFDRDtBQUNIO0FBRUEsU0FBU29YLGtCQUFnQixTQUFTLFVBQVU7QUFDMUMsUUFBTSxNQUFNLFVBQVUsT0FBTztBQUM3QixRQUFNLE9BQU8sbUJBQW1CLE9BQU87QUFDdkMsUUFBTSxpQkFBaUIsSUFBSTtBQUMzQixNQUFJLFFBQVEsS0FBSztBQUNqQixNQUFJLFNBQVMsS0FBSztBQUNsQixNQUFJdFgsS0FBSTtBQUNSLE1BQUlFLEtBQUk7QUFDUixNQUFJLGdCQUFnQjtBQUNsQixZQUFRLGVBQWU7QUFDdkIsYUFBUyxlQUFlO0FBQ3hCLFVBQU0sc0JBQXNCLFNBQVU7QUFDdEMsUUFBSSxDQUFDLHVCQUF1Qix1QkFBdUIsYUFBYSxTQUFTO0FBQ3ZFLE1BQUFGLEtBQUksZUFBZTtBQUNuQixNQUFBRSxLQUFJLGVBQWU7QUFBQSxJQUN6QjtBQUFBLEVBQ0E7QUFDRSxTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0E7QUFBQSxJQUNBLEdBQUFGO0FBQUEsSUFDQSxHQUFBRTtBQUFBLEVBQ0Q7QUFDSDtBQUdBLFNBQVNxWCw2QkFBMkIsU0FBUyxVQUFVO0FBQ3JELFFBQU0sYUFBYXZCLHdCQUFzQixTQUFTLE1BQU0sYUFBYSxPQUFPO0FBQzVFLFFBQU0sTUFBTSxXQUFXLE1BQU0sUUFBUTtBQUNyQyxRQUFNLE9BQU8sV0FBVyxPQUFPLFFBQVE7QUFDdkMsUUFBTSxRQUFRLGNBQWMsT0FBTyxJQUFJWSxXQUFTLE9BQU8sSUFBSSxhQUFhLENBQUM7QUFDekUsUUFBTSxRQUFRLFFBQVEsY0FBYyxNQUFNO0FBQzFDLFFBQU0sU0FBUyxRQUFRLGVBQWUsTUFBTTtBQUM1QyxRQUFNNVcsS0FBSSxPQUFPLE1BQU07QUFDdkIsUUFBTUUsS0FBSSxNQUFNLE1BQU07QUFDdEIsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFBRjtBQUFBLElBQ0EsR0FBQUU7QUFBQSxFQUNEO0FBQ0g7QUFDQSxTQUFTc1gsb0NBQWtDLFNBQVMsa0JBQWtCLFVBQVU7QUFDOUUsTUFBSTtBQUNKLE1BQUkscUJBQXFCLFlBQVk7QUFDbkMsV0FBT0Ysa0JBQWdCLFNBQVMsUUFBUTtBQUFBLEVBQzVDLFdBQWEscUJBQXFCLFlBQVk7QUFDMUMsV0FBT0Qsa0JBQWdCLG1CQUFtQixPQUFPLENBQUM7QUFBQSxFQUN0RCxXQUFhLFVBQVUsZ0JBQWdCLEdBQUc7QUFDdEMsV0FBT0UsNkJBQTJCLGtCQUFrQixRQUFRO0FBQUEsRUFDaEUsT0FBUztBQUNMLFVBQU0sZ0JBQWdCUixtQkFBaUIsT0FBTztBQUM5QyxXQUFPO0FBQUEsTUFDTCxHQUFHLGlCQUFpQixJQUFJLGNBQWM7QUFBQSxNQUN0QyxHQUFHLGlCQUFpQixJQUFJLGNBQWM7QUFBQSxNQUN0QyxPQUFPLGlCQUFpQjtBQUFBLE1BQ3hCLFFBQVEsaUJBQWlCO0FBQUEsSUFDMUI7QUFBQSxFQUNMO0FBQ0UsU0FBTyxpQkFBaUIsSUFBSTtBQUM5QjtBQUNBLFNBQVNVLDJCQUF5QixTQUFTLFVBQVU7QUFDbkQsUUFBTSxhQUFhLGNBQWMsT0FBTztBQUN4QyxNQUFJLGVBQWUsWUFBWSxDQUFDLFVBQVUsVUFBVSxLQUFLLHNCQUFzQixVQUFVLEdBQUc7QUFDMUYsV0FBTztBQUFBLEVBQ1g7QUFDRSxTQUFPaEIsbUJBQWlCLFVBQVUsRUFBRSxhQUFhLFdBQVdnQiwyQkFBeUIsWUFBWSxRQUFRO0FBQzNHO0FBS0EsU0FBU0MsOEJBQTRCLFNBQVNqVCxRQUFPO0FBQ25ELFFBQU0sZUFBZUEsT0FBTSxJQUFJLE9BQU87QUFDdEMsTUFBSSxjQUFjO0FBQ2hCLFdBQU87QUFBQSxFQUNYO0FBQ0UsTUFBSSxTQUFTLHFCQUFxQixTQUFTLENBQUUsR0FBRSxLQUFLLEVBQUUsT0FBTyxRQUFNLFVBQVUsRUFBRSxLQUFLLFlBQVksRUFBRSxNQUFNLE1BQU07QUFDOUcsTUFBSSxzQ0FBc0M7QUFDMUMsUUFBTSxpQkFBaUJnUyxtQkFBaUIsT0FBTyxFQUFFLGFBQWE7QUFDOUQsTUFBSSxjQUFjLGlCQUFpQixjQUFjLE9BQU8sSUFBSTtBQUc1RCxTQUFPLFVBQVUsV0FBVyxLQUFLLENBQUMsc0JBQXNCLFdBQVcsR0FBRztBQUNwRSxVQUFNLGdCQUFnQkEsbUJBQWlCLFdBQVc7QUFDbEQsVUFBTSwwQkFBMEIsa0JBQWtCLFdBQVc7QUFDN0QsUUFBSSxDQUFDLDJCQUEyQixjQUFjLGFBQWEsU0FBUztBQUNsRSw0Q0FBc0M7QUFBQSxJQUM1QztBQUNJLFVBQU0sd0JBQXdCLGlCQUFpQixDQUFDLDJCQUEyQixDQUFDLHNDQUFzQyxDQUFDLDJCQUEyQixjQUFjLGFBQWEsWUFBWSxDQUFDLENBQUMsdUNBQXVDLENBQUMsWUFBWSxPQUFPLEVBQUUsU0FBUyxvQ0FBb0MsUUFBUSxLQUFLLGtCQUFrQixXQUFXLEtBQUssQ0FBQywyQkFBMkJnQiwyQkFBeUIsU0FBUyxXQUFXO0FBQ3paLFFBQUksdUJBQXVCO0FBRXpCLGVBQVMsT0FBTyxPQUFPLGNBQVksYUFBYSxXQUFXO0FBQUEsSUFDakUsT0FBVztBQUVMLDRDQUFzQztBQUFBLElBQzVDO0FBQ0ksa0JBQWMsY0FBYyxXQUFXO0FBQUEsRUFDM0M7QUFDRSxFQUFBaFQsT0FBTSxJQUFJLFNBQVMsTUFBTTtBQUN6QixTQUFPO0FBQ1Q7QUFJQSxTQUFTa1Qsa0JBQWdCekosT0FBTTtBQUM3QixNQUFJO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0osSUFBTUE7QUFDSixRQUFNLDJCQUEyQixhQUFhLHNCQUFzQixXQUFXLE9BQU8sSUFBSSxDQUFFLElBQUd3Siw4QkFBNEIsU0FBUyxLQUFLLEVBQUUsSUFBSSxDQUFBLEVBQUcsT0FBTyxRQUFRO0FBQ2pLLFFBQU0sb0JBQW9CLENBQUMsR0FBRywwQkFBMEIsWUFBWTtBQUNwRSxRQUFNLHdCQUF3QixrQkFBa0IsQ0FBQztBQUNqRCxRQUFNLGVBQWUsa0JBQWtCLE9BQU8sQ0FBQyxTQUFTLHFCQUFxQjtBQUMzRSxVQUFNLE9BQU9GLG9DQUFrQyxTQUFTLGtCQUFrQixRQUFRO0FBQ2xGLFlBQVEsTUFBTSxJQUFJLEtBQUssS0FBSyxRQUFRLEdBQUc7QUFDdkMsWUFBUSxRQUFRLElBQUksS0FBSyxPQUFPLFFBQVEsS0FBSztBQUM3QyxZQUFRLFNBQVMsSUFBSSxLQUFLLFFBQVEsUUFBUSxNQUFNO0FBQ2hELFlBQVEsT0FBTyxJQUFJLEtBQUssTUFBTSxRQUFRLElBQUk7QUFDMUMsV0FBTztBQUFBLEVBQ1IsR0FBRUEsb0NBQWtDLFNBQVMsdUJBQXVCLFFBQVEsQ0FBQztBQUM5RSxTQUFPO0FBQUEsSUFDTCxPQUFPLGFBQWEsUUFBUSxhQUFhO0FBQUEsSUFDekMsUUFBUSxhQUFhLFNBQVMsYUFBYTtBQUFBLElBQzNDLEdBQUcsYUFBYTtBQUFBLElBQ2hCLEdBQUcsYUFBYTtBQUFBLEVBQ2pCO0FBQ0g7QUFFQSxTQUFTSSxnQkFBYyxTQUFTO0FBQzlCLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLEVBQ0osSUFBTWxCLG1CQUFpQixPQUFPO0FBQzVCLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQTtBQUFBLEVBQ0Q7QUFDSDtBQUVBLFNBQVNtQixnQ0FBOEIsU0FBUyxjQUFjLFVBQVU7QUFDdEUsUUFBTSwwQkFBMEIsY0FBYyxZQUFZO0FBQzFELFFBQU0sa0JBQWtCLG1CQUFtQixZQUFZO0FBQ3ZELFFBQU0sVUFBVSxhQUFhO0FBQzdCLFFBQU0sT0FBTzdCLHdCQUFzQixTQUFTLE1BQU0sU0FBUyxZQUFZO0FBQ3ZFLE1BQUksU0FBUztBQUFBLElBQ1gsWUFBWTtBQUFBLElBQ1osV0FBVztBQUFBLEVBQ1o7QUFDRCxRQUFNLFVBQVUsYUFBYSxDQUFDO0FBQzlCLE1BQUksMkJBQTJCLENBQUMsMkJBQTJCLENBQUMsU0FBUztBQUNuRSxRQUFJLFlBQVksWUFBWSxNQUFNLFVBQVUsa0JBQWtCLGVBQWUsR0FBRztBQUM5RSxlQUFTLGNBQWMsWUFBWTtBQUFBLElBQ3pDO0FBQ0ksUUFBSSx5QkFBeUI7QUFDM0IsWUFBTSxhQUFhQSx3QkFBc0IsY0FBYyxNQUFNLFNBQVMsWUFBWTtBQUNsRixjQUFRLElBQUksV0FBVyxJQUFJLGFBQWE7QUFDeEMsY0FBUSxJQUFJLFdBQVcsSUFBSSxhQUFhO0FBQUEsSUFDekMsV0FBVSxpQkFBaUI7QUFHMUIsY0FBUSxJQUFJaUIsc0JBQW9CLGVBQWU7QUFBQSxJQUNyRDtBQUFBLEVBQ0E7QUFDRSxRQUFNLGFBQWEsbUJBQW1CLENBQUMsMkJBQTJCLENBQUMsVUFBVUMsZ0JBQWMsaUJBQWlCLE1BQU0sSUFBSSxhQUFhLENBQUM7QUFDcEksUUFBTWxYLEtBQUksS0FBSyxPQUFPLE9BQU8sYUFBYSxRQUFRLElBQUksV0FBVztBQUNqRSxRQUFNRSxLQUFJLEtBQUssTUFBTSxPQUFPLFlBQVksUUFBUSxJQUFJLFdBQVc7QUFDL0QsU0FBTztBQUFBLElBQ0wsR0FBQUY7QUFBQSxJQUNBLEdBQUFFO0FBQUEsSUFDQSxPQUFPLEtBQUs7QUFBQSxJQUNaLFFBQVEsS0FBSztBQUFBLEVBQ2Q7QUFDSDtBQUVBLFNBQVM0WCxxQkFBbUIsU0FBUztBQUNuQyxTQUFPckIsbUJBQWlCLE9BQU8sRUFBRSxhQUFhO0FBQ2hEO0FBRUEsU0FBU3NCLHNCQUFvQixTQUFTQyxXQUFVO0FBQzlDLE1BQUksQ0FBQyxjQUFjLE9BQU8sS0FBS3ZCLG1CQUFpQixPQUFPLEVBQUUsYUFBYSxTQUFTO0FBQzdFLFdBQU87QUFBQSxFQUNYO0FBQ0UsTUFBSXVCLFdBQVU7QUFDWixXQUFPQSxVQUFTLE9BQU87QUFBQSxFQUMzQjtBQUNFLE1BQUksa0JBQWtCLFFBQVE7QUFNOUIsTUFBSSxtQkFBbUIsT0FBTyxNQUFNLGlCQUFpQjtBQUNuRCxzQkFBa0IsZ0JBQWdCLGNBQWM7QUFBQSxFQUNwRDtBQUNFLFNBQU87QUFDVDtBQUlBLFNBQVNDLGtCQUFnQixTQUFTRCxXQUFVO0FBQzFDLFFBQU0sTUFBTSxVQUFVLE9BQU87QUFDN0IsTUFBSSxXQUFXLE9BQU8sR0FBRztBQUN2QixXQUFPO0FBQUEsRUFDWDtBQUNFLE1BQUksQ0FBQyxjQUFjLE9BQU8sR0FBRztBQUMzQixRQUFJLGtCQUFrQixjQUFjLE9BQU87QUFDM0MsV0FBTyxtQkFBbUIsQ0FBQyxzQkFBc0IsZUFBZSxHQUFHO0FBQ2pFLFVBQUksVUFBVSxlQUFlLEtBQUssQ0FBQ0YscUJBQW1CLGVBQWUsR0FBRztBQUN0RSxlQUFPO0FBQUEsTUFDZjtBQUNNLHdCQUFrQixjQUFjLGVBQWU7QUFBQSxJQUNyRDtBQUNJLFdBQU87QUFBQSxFQUNYO0FBQ0UsTUFBSSxlQUFlQyxzQkFBb0IsU0FBU0MsU0FBUTtBQUN4RCxTQUFPLGdCQUFnQixlQUFlLFlBQVksS0FBS0YscUJBQW1CLFlBQVksR0FBRztBQUN2RixtQkFBZUMsc0JBQW9CLGNBQWNDLFNBQVE7QUFBQSxFQUM3RDtBQUNFLE1BQUksZ0JBQWdCLHNCQUFzQixZQUFZLEtBQUtGLHFCQUFtQixZQUFZLEtBQUssQ0FBQyxrQkFBa0IsWUFBWSxHQUFHO0FBQy9ILFdBQU87QUFBQSxFQUNYO0FBQ0UsU0FBTyxnQkFBZ0IsbUJBQW1CLE9BQU8sS0FBSztBQUN4RDtBQUVBLE1BQU1JLG9CQUFrQixlQUFnQnRXLE9BQU07QUFDNUMsUUFBTSxvQkFBb0IsS0FBSyxtQkFBbUJxVztBQUNsRCxRQUFNLGtCQUFrQixLQUFLO0FBQzdCLFFBQU0scUJBQXFCLE1BQU0sZ0JBQWdCclcsTUFBSyxRQUFRO0FBQzlELFNBQU87QUFBQSxJQUNMLFdBQVdpVyxnQ0FBOEJqVyxNQUFLLFdBQVcsTUFBTSxrQkFBa0JBLE1BQUssUUFBUSxHQUFHQSxNQUFLLFFBQVE7QUFBQSxJQUM5RyxVQUFVO0FBQUEsTUFDUixHQUFHO0FBQUEsTUFDSCxHQUFHO0FBQUEsTUFDSCxPQUFPLG1CQUFtQjtBQUFBLE1BQzFCLFFBQVEsbUJBQW1CO0FBQUEsSUFDakM7QUFBQSxFQUNHO0FBQ0g7QUFFQSxTQUFTdVcsUUFBTSxTQUFTO0FBQ3RCLFNBQU8xQixtQkFBaUIsT0FBTyxFQUFFLGNBQWM7QUFDakQ7QUFFQSxNQUFNalEsYUFBVztBQUFBLEVBQ2pCLHVEQUFFMlE7QUFBQUEsRUFDQTtBQUFBLEVBQ0YsaUJBQUVRO0FBQUFBLEVBQ0YsaUJBQUVNO0FBQUFBLEVBQ0YsaUJBQUVDO0FBQUFBLEVBQ0YsZ0JBQUVkO0FBQUFBLEVBQ0YsZUFBRVE7QUFBQUEsRUFDRixVQUFFaEI7QUFBQUEsRUFDQTtBQUFBLEVBQ0F1QixPQUFBQTtBQUNGO0FBR0EsU0FBU0MsY0FBWSxTQUFTLFFBQVE7QUFDcEMsTUFBSSxLQUFLO0FBQ1QsTUFBSUM7QUFDSixRQUFNLE9BQU8sbUJBQW1CLE9BQU87QUFDdkMsV0FBUyxVQUFVO0FBQ2pCLFFBQUk7QUFDSixpQkFBYUEsVUFBUztBQUN0QixLQUFDLE1BQU0sT0FBTyxRQUFRLElBQUksV0FBWTtBQUN0QyxTQUFLO0FBQUEsRUFDVDtBQUNFLFdBQVMsUUFBUSxNQUFNLFdBQVc7QUFDaEMsUUFBSSxTQUFTLFFBQVE7QUFDbkIsYUFBTztBQUFBLElBQ2I7QUFDSSxRQUFJLGNBQWMsUUFBUTtBQUN4QixrQkFBWTtBQUFBLElBQ2xCO0FBQ0ksWUFBUztBQUNULFVBQU07QUFBQSxNQUNKO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDTixJQUFRLFFBQVEsc0JBQXVCO0FBQ25DLFFBQUksQ0FBQyxNQUFNO0FBQ1QsYUFBUTtBQUFBLElBQ2Q7QUFDSSxRQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7QUFDckI7QUFBQSxJQUNOO0FBQ0ksVUFBTSxXQUFXLE1BQU0sR0FBRztBQUMxQixVQUFNLGFBQWEsTUFBTSxLQUFLLGVBQWUsT0FBTyxNQUFNO0FBQzFELFVBQU0sY0FBYyxNQUFNLEtBQUssZ0JBQWdCLE1BQU0sT0FBTztBQUM1RCxVQUFNLFlBQVksTUFBTSxJQUFJO0FBQzVCLFVBQU0sYUFBYSxDQUFDLFdBQVcsUUFBUSxDQUFDLGFBQWEsUUFBUSxDQUFDLGNBQWMsUUFBUSxDQUFDLFlBQVk7QUFDakcsVUFBTXBTLFdBQVU7QUFBQSxNQUNkO0FBQUEsTUFDQSxXQUFXLElBQUksR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUs7QUFBQSxJQUN6QztBQUNELFFBQUksZ0JBQWdCO0FBQ3BCLGFBQVMsY0FBYyxTQUFTO0FBQzlCLFlBQU0sUUFBUSxRQUFRLENBQUMsRUFBRTtBQUN6QixVQUFJLFVBQVUsV0FBVztBQUN2QixZQUFJLENBQUMsZUFBZTtBQUNsQixpQkFBTyxRQUFTO0FBQUEsUUFDMUI7QUFDUSxZQUFJLENBQUMsT0FBTztBQUdWLFVBQUFvUyxhQUFZLFdBQVcsTUFBTTtBQUMzQixvQkFBUSxPQUFPLElBQUk7QUFBQSxVQUNwQixHQUFFLEdBQUk7QUFBQSxRQUNqQixPQUFlO0FBQ0wsa0JBQVEsT0FBTyxLQUFLO0FBQUEsUUFDOUI7QUFBQSxNQUNBO0FBQ00sc0JBQWdCO0FBQUEsSUFDdEI7QUFJSSxRQUFJO0FBQ0YsV0FBSyxJQUFJLHFCQUFxQixlQUFlO0FBQUEsUUFDM0MsR0FBR3BTO0FBQUE7QUFBQSxRQUVILE1BQU0sS0FBSztBQUFBLE1BQ25CLENBQU87QUFBQSxJQUNGLFNBQVFuRixJQUFHO0FBQ1YsV0FBSyxJQUFJLHFCQUFxQixlQUFlbUYsUUFBTztBQUFBLElBQzFEO0FBQ0ksT0FBRyxRQUFRLE9BQU87QUFBQSxFQUN0QjtBQUNFLFVBQVEsSUFBSTtBQUNaLFNBQU87QUFDVDtBQVVBLFNBQVNxUyxhQUFXLFdBQVcsVUFBVSxRQUFRclMsVUFBUztBQUN4RCxNQUFJQSxhQUFZLFFBQVE7QUFDdEIsSUFBQUEsV0FBVSxDQUFFO0FBQUEsRUFDaEI7QUFDRSxRQUFNO0FBQUEsSUFDSixpQkFBaUI7QUFBQSxJQUNqQixpQkFBaUI7QUFBQSxJQUNqQixnQkFBZ0IsT0FBTyxtQkFBbUI7QUFBQSxJQUMxQyxjQUFjLE9BQU8seUJBQXlCO0FBQUEsSUFDOUMsaUJBQWlCO0FBQUEsRUFDckIsSUFBTUE7QUFDSixRQUFNLGNBQWMwUSxnQkFBYyxTQUFTO0FBQzNDLFFBQU0sWUFBWSxrQkFBa0IsaUJBQWlCLENBQUMsR0FBSSxjQUFjLHFCQUFxQixXQUFXLElBQUksQ0FBRSxHQUFHLEdBQUcscUJBQXFCLFFBQVEsQ0FBQyxJQUFJLENBQUU7QUFDeEosWUFBVSxRQUFRLGNBQVk7QUFDNUIsc0JBQWtCLFNBQVMsaUJBQWlCLFVBQVUsUUFBUTtBQUFBLE1BQzVELFNBQVM7QUFBQSxJQUNmLENBQUs7QUFDRCxzQkFBa0IsU0FBUyxpQkFBaUIsVUFBVSxNQUFNO0FBQUEsRUFDaEUsQ0FBRztBQUNELFFBQU0sWUFBWSxlQUFlLGNBQWN5QixjQUFZLGFBQWEsTUFBTSxJQUFJO0FBQ2xGLE1BQUksaUJBQWlCO0FBQ3JCLE1BQUksaUJBQWlCO0FBQ3JCLE1BQUksZUFBZTtBQUNqQixxQkFBaUIsSUFBSSxlQUFlLENBQUFsSyxVQUFRO0FBQzFDLFVBQUksQ0FBQyxVQUFVLElBQUlBO0FBQ25CLFVBQUksY0FBYyxXQUFXLFdBQVcsZUFBZSxnQkFBZ0I7QUFHckUsdUJBQWUsVUFBVSxRQUFRO0FBQ2pDLDZCQUFxQixjQUFjO0FBQ25DLHlCQUFpQixzQkFBc0IsTUFBTTtBQUMzQyxjQUFJO0FBQ0osV0FBQyxrQkFBa0IsbUJBQW1CLFFBQVEsZ0JBQWdCLFFBQVEsUUFBUTtBQUFBLFFBQ3hGLENBQVM7QUFBQSxNQUNUO0FBQ00sYUFBUTtBQUFBLElBQ2QsQ0FBSztBQUNELFFBQUksZUFBZSxDQUFDLGdCQUFnQjtBQUNsQyxxQkFBZSxRQUFRLFdBQVc7QUFBQSxJQUN4QztBQUNJLG1CQUFlLFFBQVEsUUFBUTtBQUFBLEVBQ25DO0FBQ0UsTUFBSTtBQUNKLE1BQUksY0FBYyxpQkFBaUI4SCx3QkFBc0IsU0FBUyxJQUFJO0FBQ3RFLE1BQUksZ0JBQWdCO0FBQ2xCLGNBQVc7QUFBQSxFQUNmO0FBQ0UsV0FBUyxZQUFZO0FBQ25CLFVBQU0sY0FBY0Esd0JBQXNCLFNBQVM7QUFDbkQsUUFBSSxnQkFBZ0IsWUFBWSxNQUFNLFlBQVksS0FBSyxZQUFZLE1BQU0sWUFBWSxLQUFLLFlBQVksVUFBVSxZQUFZLFNBQVMsWUFBWSxXQUFXLFlBQVksU0FBUztBQUMvSyxhQUFRO0FBQUEsSUFDZDtBQUNJLGtCQUFjO0FBQ2QsY0FBVSxzQkFBc0IsU0FBUztBQUFBLEVBQzdDO0FBQ0UsU0FBUTtBQUNSLFNBQU8sTUFBTTtBQUNYLFFBQUk7QUFDSixjQUFVLFFBQVEsY0FBWTtBQUM1Qix3QkFBa0IsU0FBUyxvQkFBb0IsVUFBVSxNQUFNO0FBQy9ELHdCQUFrQixTQUFTLG9CQUFvQixVQUFVLE1BQU07QUFBQSxJQUNyRSxDQUFLO0FBQ0QsaUJBQWEsUUFBUSxVQUFXO0FBQ2hDLEtBQUMsbUJBQW1CLG1CQUFtQixRQUFRLGlCQUFpQixXQUFZO0FBQzVFLHFCQUFpQjtBQUNqQixRQUFJLGdCQUFnQjtBQUNsQiwyQkFBcUIsT0FBTztBQUFBLElBQ2xDO0FBQUEsRUFDRztBQUNIO0FBbUJBLE1BQU1uVSxXQUFTMFc7QUFRZixNQUFNaEQsa0JBQWdCaUQ7QUFPdEIsTUFBTWpDLFVBQVFrQztBQVFkLE1BQU1oRCxTQUFPaUQ7QUFzQmIsTUFBTXJELFVBQVFzRDtBQWtCZCxNQUFNeEQsb0JBQWtCLENBQUMsV0FBVyxVQUFVbFAsYUFBWTtBQUl4RCxRQUFNeEIsU0FBUSxvQkFBSSxJQUFLO0FBQ3ZCLFFBQU0sZ0JBQWdCO0FBQUEsSUFDeEIsVUFBSStCO0FBQUFBLElBQ0EsR0FBR1A7QUFBQSxFQUNKO0FBQ0QsUUFBTSxvQkFBb0I7QUFBQSxJQUN4QixHQUFHLGNBQWM7QUFBQSxJQUNqQixJQUFJeEI7QUFBQSxFQUNMO0FBQ0QsU0FBT21VLGtCQUFrQixXQUFXLFVBQVU7QUFBQSxJQUM1QyxHQUFHO0FBQUEsSUFDSCxVQUFVO0FBQUEsRUFDZCxDQUFHO0FBQ0g7QUM1dEJBLElBQUl2WCxVQUFRd1gsYUFBZTs7Ozs7QUNXM0IsSUFBSSxjQUFjLENBQUMsYUFBYSxjQUFjLE1BQU0sYUFBYSxpQkFBaUIsWUFBWSxZQUFZLFdBQVcsU0FBUyxXQUFXLGdCQUFnQixlQUFlLFlBQVksT0FBTztBQUszTCxJQUFJalQsU0FBTyxTQUFTQSxRQUFPO0FBQUM7QUFlNUIsU0FBUyxrQkFBa0I2TSxTQUFRLE1BQU07QUFDdkMsTUFBSSxDQUFDLE1BQU07QUFDRixXQUFBQTtBQUFBLEVBQ0UsV0FBQSxLQUFLLENBQUMsTUFBTSxLQUFLO0FBQzFCLFdBQU9BLFVBQVM7QUFBQSxFQUFBLE9BQ1g7QUFDTCxXQUFPQSxVQUFTLE9BQU87QUFBQSxFQUFBO0FBRTNCO0FBQ0EsU0FBUyxXQUFXQSxTQUFRLE9BQU87QUFDakMsV0FBUyxPQUFPLFVBQVUsUUFBUSxnQkFBZ0IsSUFBSSxNQUFNLE9BQU8sSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxPQUFPLE1BQU0sUUFBUTtBQUNuSCxrQkFBYyxPQUFPLENBQUMsSUFBSSxVQUFVLElBQUk7QUFBQSxFQUFBO0FBRTFDLE1BQUksTUFBTSxDQUFBLEVBQUcsT0FBTyxhQUFhO0FBQ2pDLE1BQUksU0FBU0EsU0FBUTtBQUNuQixhQUFTLE9BQU8sT0FBTztBQUNyQixVQUFJLE1BQU0sZUFBZSxHQUFHLEtBQUssTUFBTSxHQUFHLEdBQUc7QUFDM0MsWUFBSSxLQUFLLEdBQUcsT0FBTyxrQkFBa0JBLFNBQVEsR0FBRyxDQUFDLENBQUM7QUFBQSxNQUFBO0FBQUEsSUFDcEQ7QUFBQSxFQUNGO0FBRUssU0FBQSxJQUFJLE9BQU8sU0FBVTlTLElBQUc7QUFDdEIsV0FBQUE7QUFBQSxFQUFBLENBQ1IsRUFBRSxJQUFJLFNBQVVBLElBQUc7QUFDWCxXQUFBLE9BQU9BLEVBQUMsRUFBRSxLQUFLO0FBQUEsRUFBQSxDQUN2QixFQUFFLEtBQUssR0FBRztBQUNiO0FBS0EsSUFBSSxhQUFhLFNBQVNtWixZQUFXLE9BQU87QUFDMUMsTUFBSSxRQUFRLEtBQUssRUFBVSxRQUFBLE1BQU0sT0FBTyxPQUFPO0FBQzNDLE1BQUExTCxVQUFRLEtBQUssTUFBTSxZQUFZLFVBQVUsS0FBTSxRQUFPLENBQUMsS0FBSztBQUNoRSxTQUFPLENBQUM7QUFDVjtBQU1BLElBQUksbUJBQW1CLFNBQVMyTCxrQkFBaUIsT0FBTztBQUVoRCxRQUFBO0FBQ0UsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNBLFFBQUE7QUFDQSxRQUFBO0FBQ0EsUUFBQTtBQUNGLE1BQUEsYUFBYWhMLDJCQUF5QixPQUFPLFdBQVc7QUFDdkQsU0FBQU8sZUFBYyxDQUFDLEdBQUcsVUFBVTtBQUNyQztBQU1BLElBQUksZ0JBQWdCLFNBQVMwSyxlQUFjLE9BQU8sTUFBTSxpQkFBaUI7QUFDbkUsTUFBQSxLQUFLLE1BQU0sSUFDYixZQUFZLE1BQU0sV0FDbEIsZ0JBQWdCLE1BQU0sZUFDdEIsWUFBWSxNQUFNO0FBQ2IsU0FBQTtBQUFBLElBQ0wsS0FBSyxVQUFVLE1BQU0sS0FBSztBQUFBLElBQzFCLFdBQVcsR0FBRyxvQkFBb0IsUUFBUSxvQkFBb0IsU0FBUyxrQkFBa0IsQ0FBSSxHQUFBLGNBQWMsTUFBTSxLQUFLLEdBQUcsU0FBUztBQUFBLEVBQ3BJO0FBQ0Y7QUFrQkEsU0FBUyxrQkFBa0IsSUFBSTtBQUN0QixTQUFBLENBQUMsU0FBUyxpQkFBaUIsU0FBUyxNQUFNLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSTtBQUN6RTtBQUtBLFNBQVMsaUJBQWlCLElBQUk7QUFDeEIsTUFBQSxrQkFBa0IsRUFBRSxHQUFHO0FBQ3pCLFdBQU8sT0FBTztBQUFBLEVBQUE7QUFFaEIsU0FBTyxHQUFHO0FBQ1o7QUFLQSxTQUFTLGFBQWEsSUFBSTtBQUNwQixNQUFBLGtCQUFrQixFQUFFLEdBQUc7QUFDekIsV0FBTyxPQUFPO0FBQUEsRUFBQTtBQUVoQixTQUFPLEdBQUc7QUFDWjtBQUNBLFNBQVMsU0FBUyxJQUFJLEtBQUs7QUFFckIsTUFBQSxrQkFBa0IsRUFBRSxHQUFHO0FBQ2xCLFdBQUEsU0FBUyxHQUFHLEdBQUc7QUFDdEI7QUFBQSxFQUFBO0FBRUYsS0FBRyxZQUFZO0FBQ2pCO0FBS0EsU0FBUyxnQkFBZ0IsU0FBUztBQUM1QixNQUFBLFFBQVEsaUJBQWlCLE9BQU87QUFDaEMsTUFBQSxzQkFBc0IsTUFBTSxhQUFhO0FBQzdDLE1BQUksYUFBYTtBQUNqQixNQUFJLE1BQU0sYUFBYSxRQUFTLFFBQU8sU0FBUztBQUNoRCxXQUFTLFNBQVMsU0FBUyxTQUFTLE9BQU8saUJBQWdCO0FBQ3pELFlBQVEsaUJBQWlCLE1BQU07QUFDM0IsUUFBQSx1QkFBdUIsTUFBTSxhQUFhLFVBQVU7QUFDdEQ7QUFBQSxJQUFBO0FBRUUsUUFBQSxXQUFXLEtBQUssTUFBTSxXQUFXLE1BQU0sWUFBWSxNQUFNLFNBQVMsR0FBRztBQUNoRSxhQUFBO0FBQUEsSUFBQTtBQUFBLEVBQ1Q7QUFFRixTQUFPLFNBQVM7QUFDbEI7QUFXQSxTQUFTLGFBQWE3VyxJQUFHVyxJQUFHVSxJQUFHRCxJQUFHO0FBQ2hDLFNBQU9DLE9BQU1yQixLQUFJQSxLQUFJb0IsS0FBSSxLQUFLcEIsS0FBSUEsS0FBSSxLQUFLVztBQUM3QztBQUNBLFNBQVMsaUJBQWlCLFNBQVMsSUFBSTtBQUNqQyxNQUFBLFdBQVcsVUFBVSxTQUFTLEtBQUssVUFBVSxDQUFDLE1BQU0sU0FBWSxVQUFVLENBQUMsSUFBSTtBQUMvRSxNQUFBLFdBQVcsVUFBVSxTQUFTLEtBQUssVUFBVSxDQUFDLE1BQU0sU0FBWSxVQUFVLENBQUMsSUFBSThDO0FBQy9FLE1BQUEsUUFBUSxhQUFhLE9BQU87QUFDaEMsTUFBSSxTQUFTLEtBQUs7QUFDbEIsTUFBSSxZQUFZO0FBQ2hCLE1BQUksY0FBYztBQUNsQixXQUFTLGdCQUFnQjtBQUNSLG1CQUFBO0FBQ2YsUUFBSSxNQUFNLGFBQWEsYUFBYSxPQUFPLFFBQVEsUUFBUTtBQUMzRCxhQUFTLFNBQVMsR0FBRztBQUNyQixRQUFJLGNBQWMsVUFBVTtBQUMxQixhQUFPLHNCQUFzQixhQUFhO0FBQUEsSUFBQSxPQUNyQztBQUNMLGVBQVMsT0FBTztBQUFBLElBQUE7QUFBQSxFQUNsQjtBQUVZLGdCQUFBO0FBQ2hCO0FBS0EsU0FBUyxlQUFlLFFBQVEsV0FBVztBQUNyQyxNQUFBLFdBQVcsT0FBTyxzQkFBc0I7QUFDeEMsTUFBQSxjQUFjLFVBQVUsc0JBQXNCO0FBQzlDLE1BQUEsYUFBYSxVQUFVLGVBQWU7QUFDMUMsTUFBSSxZQUFZLFNBQVMsYUFBYSxTQUFTLFFBQVE7QUFDckQsYUFBUyxRQUFRLEtBQUssSUFBSSxVQUFVLFlBQVksVUFBVSxlQUFlLE9BQU8sZUFBZSxZQUFZLE9BQU8sWUFBWSxDQUFDO0FBQUEsRUFDdEgsV0FBQSxZQUFZLE1BQU0sYUFBYSxTQUFTLEtBQUs7QUFDdEQsYUFBUyxRQUFRLEtBQUssSUFBSSxVQUFVLFlBQVksWUFBWSxDQUFDLENBQUM7QUFBQSxFQUFBO0FBRWxFO0FBT0EsU0FBUyxxQkFBcUIsU0FBUztBQUNqQyxNQUFBLE9BQU8sUUFBUSxzQkFBc0I7QUFDbEMsU0FBQTtBQUFBLElBQ0wsUUFBUSxLQUFLO0FBQUEsSUFDYixRQUFRLEtBQUs7QUFBQSxJQUNiLE1BQU0sS0FBSztBQUFBLElBQ1gsT0FBTyxLQUFLO0FBQUEsSUFDWixLQUFLLEtBQUs7QUFBQSxJQUNWLE9BQU8sS0FBSztBQUFBLEVBQ2Q7QUFDRjtBQU1BLFNBQVMsaUJBQWlCO0FBQ3BCLE1BQUE7QUFDRixhQUFTLFlBQVksWUFBWTtBQUMxQixXQUFBO0FBQUEsV0FDQTlFLElBQUc7QUFDSCxXQUFBO0FBQUEsRUFBQTtBQUVYO0FBTUEsU0FBUyxpQkFBaUI7QUFDcEIsTUFBQTtBQUNLLFdBQUEsaUVBQWlFLEtBQUssVUFBVSxTQUFTO0FBQUEsV0FDekZBLElBQUc7QUFDSCxXQUFBO0FBQUEsRUFBQTtBQUVYO0FBT0EsSUFBSSx3QkFBd0I7QUFDNUIsSUFBSSxVQUFVO0FBQUEsRUFDWixJQUFJLFVBQVU7QUFDWixXQUFPLHdCQUF3QjtBQUFBLEVBQUE7QUFFbkM7QUFFQSxJQUFJd0IsTUFBSSxPQUFPLFdBQVcsY0FBYyxTQUFTLENBQUM7QUFDbEQsSUFBSUEsSUFBRSxvQkFBb0JBLElBQUUscUJBQXFCO0FBQzdDQSxNQUFBLGlCQUFpQixLQUFLc0QsUUFBTSxPQUFPO0FBQ25DdEQsTUFBQSxvQkFBb0IsS0FBS3NELFFBQU0sS0FBSztBQUN4QztBQUNBLElBQUksd0JBQXdCO0FBQzVCLFNBQVMsV0FBVyxNQUFNO0FBQ3hCLFNBQU8sUUFBUTtBQUNqQjtBQUNBLFNBQVMsUUFBUSxLQUFLO0FBQ2IsU0FBQSxNQUFNLFFBQVEsR0FBRztBQUMxQjtBQUNBLFNBQVMsYUFBYSxTQUFTLFlBQVksYUFBYTtBQUN0RCxTQUFPLFVBQVUsYUFBYTtBQUNoQztBQUNBLFNBQVMsbUJBQW1CLGFBQWE7QUFDaEMsU0FBQTtBQUNUO0FBQ0EsU0FBUyxrQkFBa0IsWUFBWTtBQUM5QixTQUFBO0FBQ1Q7QUFDQSxJQUFJLGNBQWMsU0FBU3FULGFBQVksVUFBVTtBQUMvQyxXQUFTLFFBQVEsVUFBVSxRQUFRQyxjQUFhLElBQUksTUFBTSxRQUFRLElBQUksUUFBUSxJQUFJLENBQUMsR0FBRyxRQUFRLEdBQUcsUUFBUSxPQUFPLFNBQVM7QUFDdkgsSUFBQUEsWUFBVyxRQUFRLENBQUMsSUFBSSxVQUFVLEtBQUs7QUFBQSxFQUFBO0FBRXpDLE1BQUksV0FBVyxPQUFPLFFBQVEsUUFBUSxFQUFFLE9BQU8sU0FBVWhMLE9BQU07QUFDN0QsUUFBSWlMLFNBQVEsZUFBZWpMLE9BQU0sQ0FBQyxHQUNoQyxNQUFNaUwsT0FBTSxDQUFDO0FBQ1IsV0FBQSxDQUFDRCxZQUFXLFNBQVMsR0FBRztBQUFBLEVBQUEsQ0FDaEM7QUFDRCxTQUFPLFNBQVMsT0FBTyxTQUFVLFVBQVUsT0FBTztBQUM1QyxRQUFBLFFBQVEsZUFBZSxPQUFPLENBQUMsR0FDakMsTUFBTSxNQUFNLENBQUMsR0FDYixNQUFNLE1BQU0sQ0FBQztBQUNmLGFBQVMsR0FBRyxJQUFJO0FBQ1QsV0FBQTtBQUFBLEVBQ1QsR0FBRyxFQUFFO0FBQ1A7QUFFQSxJQUFJLGNBQWMsQ0FBQyxZQUFZLFlBQVksR0FDekMsZUFBZSxDQUFDLFlBQVksWUFBWTtBQUMxQyxTQUFTLGlCQUFpQmhMLE9BQU07QUFDOUIsTUFBSSxxQkFBcUJBLE1BQUssV0FDNUIsU0FBU0EsTUFBSyxRQUNkLFlBQVlBLE1BQUssV0FDakIscUJBQXFCQSxNQUFLLFdBQzFCLGVBQWVBLE1BQUssY0FDcEIsa0JBQWtCQSxNQUFLLGlCQUN2QmtMLGlCQUFnQmxMLE1BQUs7QUFDbkIsTUFBQSxlQUFlLGdCQUFnQixNQUFNO0FBQ3pDLE1BQUksZUFBZTtBQUFBLElBQ2pCLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxFQUNiO0FBR0EsTUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLGFBQXFCLFFBQUE7QUFJNUMsTUFBSSx3QkFBd0IsYUFBYSxzQkFBc0IsR0FDN0QsZUFBZSxzQkFBc0I7QUFDbkMsTUFBQSx3QkFBd0IsT0FBTyxzQkFDakMsR0FBQSxhQUFhLHNCQUFzQixRQUNuQyxhQUFhLHNCQUFzQixRQUNuQyxVQUFVLHNCQUFzQjtBQUNsQyxNQUFJLHdCQUF3QixPQUFPLGFBQWEsc0JBQXNCLEdBQ3BFLGVBQWUsc0JBQXNCO0FBQ3ZDLE1BQUksYUFBYSxrQkFBa0IsT0FBTyxjQUFjLGlCQUFpQixZQUFZO0FBQ2pGLE1BQUEsWUFBWSxhQUFhLFlBQVk7QUFDekMsTUFBSSxlQUFlLFNBQVMsaUJBQWlCLE1BQU0sRUFBRSxjQUFjLEVBQUU7QUFDckUsTUFBSSxZQUFZLFNBQVMsaUJBQWlCLE1BQU0sRUFBRSxXQUFXLEVBQUU7QUFDL0QsTUFBSSxpQkFBaUIsZUFBZTtBQUNwQyxNQUFJLGlCQUFpQixhQUFhO0FBQ2xDLE1BQUksbUJBQW1CLGlCQUFpQjtBQUNwQyxNQUFBLG1CQUFtQixlQUFlLFlBQVk7QUFDOUMsTUFBQSxhQUFhLGFBQWEsYUFBYSxZQUFZO0FBQ25ELE1BQUEsV0FBVyxZQUFZLFVBQVU7QUFDckMsTUFBSSxpQkFBaUI7QUFDckIsVUFBUSxvQkFBb0I7QUFBQSxJQUMxQixLQUFLO0FBQUEsSUFDTCxLQUFLO0FBRUgsVUFBSSxrQkFBa0IsWUFBWTtBQUN6QixlQUFBO0FBQUEsVUFDTCxXQUFXO0FBQUEsVUFDWCxXQUFXO0FBQUEsUUFDYjtBQUFBLE1BQUE7QUFJRSxVQUFBLG9CQUFvQixjQUFjLENBQUMsaUJBQWlCO0FBQ3RELFlBQUksY0FBYztBQUNDLDJCQUFBLGNBQWMsWUFBWSxjQUFjO0FBQUEsUUFBQTtBQUVwRCxlQUFBO0FBQUEsVUFDTCxXQUFXO0FBQUEsVUFDWCxXQUFXO0FBQUEsUUFDYjtBQUFBLE1BQUE7QUFJRixVQUFJLENBQUMsbUJBQW1CLG9CQUFvQixhQUFhLG1CQUFtQixrQkFBa0IsV0FBVztBQUN2RyxZQUFJLGNBQWM7QUFDQywyQkFBQSxjQUFjLFlBQVksY0FBYztBQUFBLFFBQUE7QUFLM0QsWUFBSSxvQkFBb0Isa0JBQWtCLGlCQUFpQixlQUFlLG1CQUFtQjtBQUN0RixlQUFBO0FBQUEsVUFDTCxXQUFXO0FBQUEsVUFDWCxXQUFXO0FBQUEsUUFDYjtBQUFBLE1BQUE7QUFNRSxVQUFBLHVCQUF1QixVQUFVLGlCQUFpQjtBQUVwRCxZQUFJLHFCQUFxQjtBQUNyQixZQUFBLGFBQWEsa0JBQWtCLGlCQUFpQjtBQUNwRCxZQUFJLGNBQWMsV0FBVztBQUMzQiwrQkFBcUIsS0FBSyxJQUFJLGFBQWEsZUFBZWtMLGdCQUFlLGtCQUFrQjtBQUFBLFFBQUE7QUFFdEYsZUFBQTtBQUFBLFVBQ0wsV0FBVztBQUFBLFVBQ1gsV0FBVztBQUFBLFFBQ2I7QUFBQSxNQUFBO0FBSUYsVUFBSSx1QkFBdUIsVUFBVTtBQUNuQyxZQUFJLGNBQWM7QUFDaEIsbUJBQVMsY0FBYyxVQUFVO0FBQUEsUUFBQTtBQUU1QixlQUFBO0FBQUEsVUFDTCxXQUFXO0FBQUEsVUFDWCxXQUFXO0FBQUEsUUFDYjtBQUFBLE1BQUE7QUFFRjtBQUFBLElBQ0YsS0FBSztBQUVILFVBQUksa0JBQWtCLFlBQVk7QUFDekIsZUFBQTtBQUFBLFVBQ0wsV0FBVztBQUFBLFVBQ1gsV0FBVztBQUFBLFFBQ2I7QUFBQSxNQUFBO0FBSUUsVUFBQSxvQkFBb0IsY0FBYyxDQUFDLGlCQUFpQjtBQUN0RCxZQUFJLGNBQWM7QUFDQywyQkFBQSxjQUFjLFVBQVUsY0FBYztBQUFBLFFBQUE7QUFFbEQsZUFBQTtBQUFBLFVBQ0wsV0FBVztBQUFBLFVBQ1gsV0FBVztBQUFBLFFBQ2I7QUFBQSxNQUFBO0FBSUYsVUFBSSxDQUFDLG1CQUFtQixvQkFBb0IsYUFBYSxtQkFBbUIsa0JBQWtCLFdBQVc7QUFDdkcsWUFBSSxzQkFBc0I7QUFJMUIsWUFBSSxDQUFDLG1CQUFtQixvQkFBb0IsYUFBYSxtQkFBbUIsa0JBQWtCLFdBQVc7QUFDakYsZ0NBQUEsa0JBQWtCLGlCQUFpQixZQUFZLG1CQUFtQjtBQUFBLFFBQUE7QUFFMUYsWUFBSSxjQUFjO0FBQ0MsMkJBQUEsY0FBYyxVQUFVLGNBQWM7QUFBQSxRQUFBO0FBRWxELGVBQUE7QUFBQSxVQUNMLFdBQVc7QUFBQSxVQUNYLFdBQVc7QUFBQSxRQUNiO0FBQUEsTUFBQTtBQU1LLGFBQUE7QUFBQSxRQUNMLFdBQVc7QUFBQSxRQUNYLFdBQVc7QUFBQSxNQUNiO0FBQUEsSUFDRjtBQUNFLFlBQU0sSUFBSSxNQUFNLCtCQUFnQyxPQUFPLG9CQUFvQixJQUFLLENBQUM7QUFBQSxFQUFBO0FBRTlFLFNBQUE7QUFDVDtBQUtBLFNBQVMsZUFBZSxXQUFXO0FBQ2pDLE1BQUkscUJBQXFCO0FBQUEsSUFDdkIsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLEVBQ1A7QUFDTyxTQUFBLFlBQVksbUJBQW1CLFNBQVMsSUFBSTtBQUNyRDtBQUNBLElBQUksa0JBQWtCLFNBQVNDLGlCQUFnQnJYLElBQUc7QUFDekMsU0FBQUEsT0FBTSxTQUFTLFdBQVdBO0FBQ25DO0FBQ0EsSUFBSSxVQUFVLFNBQVNzWCxTQUFRSCxRQUFPLFVBQVU7QUFDMUMsTUFBQUk7QUFDSixNQUFJLFlBQVlKLE9BQU0sV0FDcEIsY0FBY0EsT0FBTSxPQUNwQkssZ0JBQWUsWUFBWSxjQUMzQkMsV0FBVSxZQUFZLFNBQ3RCQyxVQUFTLFlBQVk7QUFDdkIsU0FBT3BMLGdCQUFlaUwsbUJBQWlCO0FBQUEsSUFDckMsT0FBTztBQUFBLEVBQ1QsR0FBR2hNLGtCQUFnQmdNLGtCQUFnQixlQUFlLFNBQVMsR0FBRyxNQUFNLEdBQUdoTSxrQkFBZ0JnTSxrQkFBZ0IsWUFBWSxVQUFVLEdBQUdoTSxrQkFBZ0JnTSxrQkFBZ0IsU0FBUyxNQUFNLEdBQUdoTSxrQkFBZ0JnTSxrQkFBZ0IsVUFBVSxDQUFDLEdBQUdBLG1CQUFpQixXQUFXLENBQUEsSUFBSztBQUFBLElBQy9QLGlCQUFpQkcsUUFBTztBQUFBLElBQ3hCLGNBQUFGO0FBQUEsSUFDQSxXQUFXO0FBQUEsSUFDWCxjQUFjQyxTQUFRO0FBQUEsSUFDdEIsV0FBV0EsU0FBUTtBQUFBLEVBQUEsQ0FDcEI7QUFDSDtBQUNBLElBQUksb0VBQW9ELElBQUk7QUFHNUQsSUFBSSxhQUFhLFNBQVNFLFlBQVcsT0FBTztBQUMxQyxNQUFJLFdBQVcsTUFBTSxVQUNuQixnQkFBZ0IsTUFBTSxlQUN0QixnQkFBZ0IsTUFBTSxlQUN0QixnQkFBZ0IsTUFBTSxlQUN0QixlQUFlLE1BQU0sY0FDckIsMkJBQTJCLE1BQU0sMEJBQ2pDckYsU0FBUSxNQUFNO0FBQ2hCLE1BQUksUUFBUTFILGFBQUFBLFdBQVcsc0JBQXNCLEtBQUssQ0FBQSxHQUNoRCxxQkFBcUIsTUFBTTtBQUN6QixNQUFBc0gsT0FBTTBGLG9CQUFPLElBQUk7QUFDckIsTUFBSSxZQUFZekwsYUFBQUEsU0FBUyxhQUFhLEdBQ3BDLGFBQWEsZUFBZSxXQUFXLENBQUMsR0FDeEMsWUFBWSxXQUFXLENBQUMsR0FDeEIsZUFBZSxXQUFXLENBQUM7QUFDN0IsTUFBSSxhQUFhQSxhQUFBQSxTQUFTLElBQUksR0FDNUIsYUFBYSxlQUFlLFlBQVksQ0FBQyxHQUN6QyxZQUFZLFdBQVcsQ0FBQyxHQUN4QixlQUFlLFdBQVcsQ0FBQztBQUN6QixNQUFBaUwsaUJBQWdCOUUsT0FBTSxRQUFRO0FBQ2xDdUUsVUFBZ0IsV0FBWTtBQUMxQixRQUFJLFNBQVMzRSxLQUFJO0FBQ2pCLFFBQUksQ0FBQyxPQUFRO0FBR2IsUUFBSSxrQkFBa0IsaUJBQWlCO0FBQ25DLFFBQUEsZUFBZSw0QkFBNEIsQ0FBQztBQUNoRCxRQUFJLFFBQVEsaUJBQWlCO0FBQUEsTUFDM0IsV0FBVztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLFdBQVc7QUFBQSxNQUNYO0FBQUEsTUFDQTtBQUFBLE1BQ0EsZUFBQWtGO0FBQUEsSUFBQSxDQUNEO0FBQ0QsaUJBQWEsTUFBTSxTQUFTO0FBQzVCLGlCQUFhLE1BQU0sU0FBUztBQUM1QiwyQkFBdUIsUUFBUSx1QkFBdUIsU0FBUyxTQUFTLG1CQUFtQixNQUFNLFNBQVM7QUFBQSxFQUFBLEdBQ3pHLENBQUMsZUFBZSxlQUFlLGNBQWMsMEJBQTBCLGVBQWUsb0JBQW9CQSxjQUFhLENBQUM7QUFDM0gsU0FBTyxTQUFTO0FBQUEsSUFDZCxLQUFBbEY7QUFBQSxJQUNBLGFBQWE1RixlQUFjQSxlQUFjLElBQUksS0FBSyxHQUFHLENBQUEsR0FBSTtBQUFBLE1BQ3ZELFdBQVcsYUFBYSxnQkFBZ0IsYUFBYTtBQUFBLE1BQ3JEO0FBQUEsSUFDRCxDQUFBO0FBQUEsRUFBQSxDQUNGO0FBQ0g7QUFDQSxJQUFJLE9BQU8sU0FBU3VMLE1BQUssT0FBTztBQUM5QixNQUFJLFdBQVcsTUFBTSxVQUNuQixXQUFXLE1BQU0sVUFDakIsYUFBYSxNQUFNO0FBQ3JCLFNBQU8sSUFBSSxPQUFPdEwsV0FBUyxDQUFJLEdBQUEsY0FBYyxPQUFPLFFBQVE7QUFBQSxJQUMxRCxNQUFNO0FBQUEsRUFBQSxDQUNQLEdBQUc7QUFBQSxJQUNGLEtBQUs7QUFBQSxFQUFBLEdBQ0osVUFBVSxHQUFHLFFBQVE7QUFDMUI7QUFDQSxJQUFJLFNBQVM7QUFNYixJQUFJLGNBQWMsU0FBU3VMLGFBQVksT0FBTyxVQUFVO0FBQ3RELE1BQUksWUFBWSxNQUFNLFdBQ3BCQyxZQUFXLE1BQU0sTUFBTSxRQUFRO0FBQ2pDLFNBQU96TCxlQUFjO0FBQUEsSUFDbkI7QUFBQSxJQUNBLFdBQVc7QUFBQSxJQUNYLFVBQVU7QUFBQTtBQUFBLElBRVYseUJBQXlCO0FBQUEsRUFBQSxHQUN4QixXQUFXLENBQUEsSUFBSztBQUFBLElBQ2pCLGVBQWV5TDtBQUFBLElBQ2YsWUFBWUE7QUFBQSxFQUFBLENBQ2I7QUFDSDtBQUNBLElBQUlDLGFBQVcsU0FBU0EsVUFBUyxPQUFPO0FBQ2xDLE1BQUEsV0FBVyxNQUFNLFVBQ25CLGFBQWEsTUFBTSxZQUNuQixXQUFXLE1BQU0sVUFDakIsVUFBVSxNQUFNO0FBQ2xCLFNBQU8sSUFBSSxPQUFPekwsV0FBUyxDQUFJLEdBQUEsY0FBYyxPQUFPLFlBQVk7QUFBQSxJQUM5RCxhQUFhO0FBQUEsSUFDYix1QkFBdUI7QUFBQSxFQUFBLENBQ3hCLEdBQUc7QUFBQSxJQUNGLEtBQUs7QUFBQSxFQUFBLEdBQ0osVUFBVSxHQUFHLFFBQVE7QUFDMUI7QUFNQSxJQUFJLFlBQVksU0FBUzBMLFdBQVUsT0FBTyxVQUFVO0FBQzlDLE1BQUEsY0FBYyxNQUFNLE9BQ3RCRixZQUFXLFlBQVksUUFBUSxVQUMvQkwsVUFBUyxZQUFZO0FBQ3ZCLFNBQU9wTCxlQUFjO0FBQUEsSUFDbkIsV0FBVztBQUFBLEVBQUEsR0FDVixXQUFXLENBQUEsSUFBSztBQUFBLElBQ2pCLE9BQU9vTCxRQUFPO0FBQUEsSUFDZCxTQUFTLEdBQUcsT0FBT0ssWUFBVyxHQUFHLEtBQUssRUFBRSxPQUFPQSxZQUFXLEdBQUcsSUFBSTtBQUFBLEVBQUEsQ0FDbEU7QUFDSDtBQUNBLElBQUksc0JBQXNCO0FBQzFCLElBQUksb0JBQW9CO0FBQ3hCLElBQUksbUJBQW1CLFNBQVNHLGtCQUFpQixPQUFPO0FBQ3RELE1BQUksaUJBQWlCLE1BQU0sVUFDekIsV0FBVyxtQkFBbUIsU0FBUyxlQUFlLGdCQUN0RCxhQUFhLE1BQU0sWUFDbkIsWUFBWW5NLDJCQUF5QixPQUFPLFdBQVc7QUFDekQsU0FBTyxJQUFJLE9BQU9RLFdBQVMsSUFBSSxjQUFjRCxlQUFjQSxlQUFjLENBQUEsR0FBSSxTQUFTLEdBQUcsQ0FBQSxHQUFJO0FBQUEsSUFDM0Y7QUFBQSxJQUNBO0FBQUEsRUFDRCxDQUFBLEdBQUcsb0JBQW9CO0FBQUEsSUFDdEIsZUFBZTtBQUFBLElBQ2YsMkJBQTJCO0FBQUEsRUFBQSxDQUM1QixHQUFHLFVBQVUsR0FBRyxRQUFRO0FBQzNCO0FBQ0EsSUFBSSxpQkFBaUIsU0FBUzZMLGdCQUFlLE9BQU87QUFDbEQsTUFBSSxpQkFBaUIsTUFBTSxVQUN6QixXQUFXLG1CQUFtQixTQUFTLGVBQWUsZ0JBQ3RELGFBQWEsTUFBTSxZQUNuQixZQUFZcE0sMkJBQXlCLE9BQU8sWUFBWTtBQUMxRCxTQUFPLElBQUksT0FBT1EsV0FBUyxJQUFJLGNBQWNELGVBQWNBLGVBQWMsQ0FBQSxHQUFJLFNBQVMsR0FBRyxDQUFBLEdBQUk7QUFBQSxJQUMzRjtBQUFBLElBQ0E7QUFBQSxFQUNELENBQUEsR0FBRyxrQkFBa0I7QUFBQSxJQUNwQixlQUFlO0FBQUEsSUFDZix3QkFBd0I7QUFBQSxFQUFBLENBQ3pCLEdBQUcsVUFBVSxHQUFHLFFBQVE7QUFDM0I7QUFNQSxJQUFJLGdCQUFnQixTQUFTOEwsZUFBYyxPQUFPO0FBQ2hELE1BQUksT0FBTyxNQUFNLE1BQ2Z2WSxVQUFTLE1BQU0sUUFDZjBELFlBQVcsTUFBTTtBQUNaLFNBQUE7QUFBQSxJQUNMLE1BQU0sS0FBSztBQUFBLElBQ1gsVUFBQUE7QUFBQSxJQUNBLEtBQUsxRDtBQUFBLElBQ0wsT0FBTyxLQUFLO0FBQUEsSUFDWixRQUFRO0FBQUEsRUFDVjtBQUNGO0FBQ0EsSUFBSSxhQUFhLFNBQVN3WSxZQUFXLE9BQU87QUFDMUMsTUFBSSxXQUFXLE1BQU0sVUFDbkIsV0FBVyxNQUFNLFVBQ2pCLGlCQUFpQixNQUFNLGdCQUN2QixhQUFhLE1BQU0sWUFDbkIsZ0JBQWdCLE1BQU0sZUFDdEIsZUFBZSxNQUFNO0FBQ25CLE1BQUEsZ0JBQWdCVCxvQkFBTyxJQUFJO0FBQzNCLE1BQUEsYUFBYUEsb0JBQU8sSUFBSTtBQUM1QixNQUFJLGFBQWF6TCxhQUFBQSxTQUFTLGdCQUFnQixhQUFhLENBQUMsR0FDdEQsYUFBYSxlQUFlLFlBQVksQ0FBQyxHQUN6QyxZQUFZLFdBQVcsQ0FBQyxHQUN4QixxQkFBcUIsV0FBVyxDQUFDO0FBQy9CLE1BQUEseUJBQXlCbkIsYUFBQUEsUUFBUSxXQUFZO0FBQ3hDLFdBQUE7QUFBQSxNQUNMO0FBQUEsSUFDRjtBQUFBLEVBQ0YsR0FBRyxFQUFFO0FBQ0wsTUFBSSxhQUFhbUIsYUFBQUEsU0FBUyxJQUFJLEdBQzVCLGFBQWEsZUFBZSxZQUFZLENBQUMsR0FDekMsbUJBQW1CLFdBQVcsQ0FBQyxHQUMvQixzQkFBc0IsV0FBVyxDQUFDO0FBQ2hDLE1BQUEseUJBQXlCckIsYUFBQUEsWUFBWSxXQUFZO0FBQ25ELFFBQUksQ0FBQyxlQUFnQjtBQUNqQixRQUFBLE9BQU8scUJBQXFCLGNBQWM7QUFDOUMsUUFBSSxpQkFBaUIsaUJBQWlCLFVBQVUsSUFBSSxPQUFPO0FBQ3ZELFFBQUFqTCxVQUFTLEtBQUssU0FBUyxJQUFJO0FBQzNCLFFBQUFBLGFBQVkscUJBQXFCLFFBQVEscUJBQXFCLFNBQVMsU0FBUyxpQkFBaUIsV0FBVyxLQUFLLFVBQVUscUJBQXFCLFFBQVEscUJBQXFCLFNBQVMsU0FBUyxpQkFBaUIsS0FBSyxTQUFTLEtBQUssV0FBVyxxQkFBcUIsUUFBUSxxQkFBcUIsU0FBUyxTQUFTLGlCQUFpQixLQUFLLFFBQVE7QUFDOVQsMEJBQUE7QUFBQSxRQUNsQixRQUFBQTtBQUFBLFFBQ0E7QUFBQSxNQUFBLENBQ0Q7QUFBQSxJQUFBO0FBQUEsRUFDSCxHQUNDLENBQUMsZ0JBQWdCLGNBQWMsV0FBVyxxQkFBcUIsUUFBUSxxQkFBcUIsU0FBUyxTQUFTLGlCQUFpQixRQUFRLHFCQUFxQixRQUFRLHFCQUFxQixTQUFTLFNBQVMsaUJBQWlCLEtBQUssTUFBTSxxQkFBcUIsUUFBUSxxQkFBcUIsU0FBUyxTQUFTLGlCQUFpQixLQUFLLEtBQUssQ0FBQztBQUMxVWdYLFVBQWdCLFdBQVk7QUFDSCwyQkFBQTtBQUFBLEVBQUEsR0FDdEIsQ0FBQyxzQkFBc0IsQ0FBQztBQUN2QixNQUFBLGdCQUFnQi9MLGFBQUFBLFlBQVksV0FBWTtBQUN0QyxRQUFBLE9BQU8sV0FBVyxZQUFZLFlBQVk7QUFDNUMsaUJBQVcsUUFBUTtBQUNuQixpQkFBVyxVQUFVO0FBQUEsSUFBQTtBQUVuQixRQUFBLGtCQUFrQixjQUFjLFNBQVM7QUFDM0MsaUJBQVcsVUFBVXdMLGFBQVcsZ0JBQWdCLGNBQWMsU0FBUyx3QkFBd0I7QUFBQSxRQUM3RixlQUFlLG9CQUFvQjtBQUFBLE1BQUEsQ0FDcEM7QUFBQSxJQUFBO0FBQUEsRUFDSCxHQUNDLENBQUMsZ0JBQWdCLHNCQUFzQixDQUFDO0FBQzNDTyxVQUFnQixXQUFZO0FBQ1osa0JBQUE7QUFBQSxFQUFBLEdBQ2IsQ0FBQyxhQUFhLENBQUM7QUFDZCxNQUFBLHVCQUF1Qi9MLHlCQUFZLFNBQVUsbUJBQW1CO0FBQ2xFLGtCQUFjLFVBQVU7QUFDVixrQkFBQTtBQUFBLEVBQUEsR0FDYixDQUFDLGFBQWEsQ0FBQztBQUdsQixNQUFJLENBQUMsWUFBWSxpQkFBaUIsV0FBVyxDQUFDLGlCQUF5QixRQUFBO0FBR25FLE1BQUEsY0FBYyxJQUFJLE9BQU95QixXQUFTO0FBQUEsSUFDcEMsS0FBSztBQUFBLEVBQUEsR0FDSixjQUFjRCxlQUFjQSxlQUFjLENBQUEsR0FBSSxLQUFLLEdBQUcsSUFBSTtBQUFBLElBQzNELFFBQVEsaUJBQWlCO0FBQUEsSUFDekIsVUFBVTtBQUFBLElBQ1YsTUFBTSxpQkFBaUI7QUFBQSxFQUN4QixDQUFBLEdBQUcsY0FBYztBQUFBLElBQ2hCLGVBQWU7QUFBQSxFQUFBLENBQ2hCLEdBQUcsVUFBVSxHQUFHLFFBQVE7QUFDbEIsU0FBQSxJQUFJLHVCQUF1QixVQUFVO0FBQUEsSUFDMUMsT0FBTztBQUFBLEtBQ04sV0FBd0JnTSxnQ0FBQSxhQUFhLGFBQWEsUUFBUSxJQUFJLFdBQVc7QUFDOUU7QUFNQSxJQUFJLGVBQWUsU0FBU0MsY0FBYXJNLE9BQU07QUFDN0MsTUFBSXNNLGNBQWF0TSxNQUFLLFlBQ3BCLFFBQVFBLE1BQUs7QUFDUixTQUFBO0FBQUEsSUFDTCxPQUFPO0FBQUEsSUFDUCxXQUFXLFFBQVEsUUFBUTtBQUFBLElBQzNCLGVBQWVzTSxjQUFhLFNBQVM7QUFBQTtBQUFBLElBRXJDLFVBQVU7QUFBQSxFQUNaO0FBQ0Y7QUFDQSxJQUFJLGtCQUFrQixTQUFTQyxpQkFBZ0IsT0FBTztBQUNoRCxNQUFBLFdBQVcsTUFBTSxVQUNuQixhQUFhLE1BQU0sWUFDbkJELGNBQWEsTUFBTSxZQUNuQixRQUFRLE1BQU07QUFDaEIsU0FBTyxJQUFJLE9BQU9qTSxXQUFTLENBQUksR0FBQSxjQUFjLE9BQU8sYUFBYTtBQUFBLElBQy9ELGlCQUFpQmlNO0FBQUEsSUFDakIsWUFBWTtBQUFBLEVBQUEsQ0FDYixHQUFHLFVBQVUsR0FBRyxRQUFRO0FBQzNCO0FBTUEsSUFBSSxvQkFBb0IsU0FBU0UsbUJBQWtCdkIsUUFBTyxVQUFVO0FBQ2xFLE1BQUlNLFdBQVVOLE9BQU0sTUFBTSxTQUN4QixVQUFVQSxPQUFNLFNBQ2hCLFdBQVdBLE9BQU0sVUFDakIsMkJBQTJCQSxPQUFNLFlBQVk7QUFDL0MsU0FBTzdLLGVBQWM7QUFBQSxJQUNuQixZQUFZO0FBQUEsSUFDWixTQUFTLFdBQVcsWUFBWSwyQkFBMkIsU0FBUztBQUFBLElBQ3BFLE1BQU07QUFBQSxJQUNOLFVBQVU7QUFBQSxJQUNWLHlCQUF5QjtBQUFBLElBQ3pCLFVBQVU7QUFBQSxJQUNWLFVBQVU7QUFBQSxFQUFBLEdBQ1QsV0FBVyxDQUFBLElBQUs7QUFBQSxJQUNqQixTQUFTLEdBQUcsT0FBT21MLFNBQVEsV0FBVyxHQUFHLEtBQUssRUFBRSxPQUFPQSxTQUFRLFdBQVcsR0FBRyxJQUFJO0FBQUEsRUFBQSxDQUNsRjtBQUNIO0FBQ0EsSUFBSSxpQkFBaUIsU0FBU2tCLGdCQUFlLE9BQU87QUFDOUMsTUFBQSxXQUFXLE1BQU0sVUFDbkIsYUFBYSxNQUFNLFlBQ25CLFVBQVUsTUFBTSxTQUNoQixXQUFXLE1BQU07QUFDbkIsU0FBTyxJQUFJLE9BQU9wTSxXQUFTLENBQUksR0FBQSxjQUFjLE9BQU8sa0JBQWtCO0FBQUEsSUFDcEUsbUJBQW1CO0FBQUEsSUFDbkIsNkJBQTZCO0FBQUEsSUFDN0IsOEJBQThCO0FBQUEsRUFBQSxDQUMvQixHQUFHLFVBQVUsR0FBRyxRQUFRO0FBQzNCO0FBTUEsSUFBSSx5QkFBeUIsU0FBU3FNLDBCQUF5QjtBQUN0RCxTQUFBO0FBQUEsSUFDTCxZQUFZO0FBQUEsSUFDWixXQUFXO0FBQUEsSUFDWCxTQUFTO0FBQUEsSUFDVCxZQUFZO0FBQUEsRUFDZDtBQUNGO0FBQ0EsSUFBSSxzQkFBc0IsU0FBU0MscUJBQW9CLE9BQU87QUFDNUQsTUFBSSxXQUFXLE1BQU0sVUFDbkIsYUFBYSxNQUFNO0FBQ3JCLFNBQU8sSUFBSSxPQUFPdE0sV0FBUyxDQUFJLEdBQUEsY0FBYyxPQUFPLHVCQUF1QjtBQUFBLElBQ3pFLFlBQVk7QUFBQSxFQUFBLENBQ2IsR0FBRyxVQUFVLEdBQUcsUUFBUTtBQUMzQjtBQUVBLElBQUk7QUFDSixJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQ3ZCLGFBQWEsQ0FBQyxjQUFjLFNBQVMsTUFBTTtBQU03QyxJQUFJNEssVUFBZ0Q7QUFBQSxFQUNsRCxNQUFNO0FBQUEsRUFDTixRQUFRO0FBQ1Y7QUFNQSxJQUFJLE1BQU0sU0FBUzJCLEtBQUk1TSxPQUFNO0FBQzNCLE1BQUkzTSxRQUFPMk0sTUFBSyxNQUNkLFFBQVFILDJCQUF5QkcsT0FBTSxXQUFXO0FBQzdDLFNBQUEsSUFBSSxPQUFPSyxXQUFTO0FBQUEsSUFDekIsUUFBUWhOO0FBQUEsSUFDUixPQUFPQTtBQUFBLElBQ1AsU0FBUztBQUFBLElBQ1QsZUFBZTtBQUFBLElBQ2YsV0FBVztBQUFBLElBQ1gsS0FBSzRYO0FBQUFBLEVBQ1AsR0FBRyxLQUFLLENBQUM7QUFDWDtBQUNBLElBQUksWUFBWSxTQUFTNEIsV0FBVSxPQUFPO0FBQ2pDLFNBQUEsSUFBSSxLQUFLeE0sV0FBUztBQUFBLElBQ3ZCLE1BQU07QUFBQSxFQUFBLEdBQ0wsS0FBSyxHQUFHLElBQUksUUFBUTtBQUFBLElBQ3JCLEdBQUc7QUFBQSxFQUFBLENBQ0osQ0FBQztBQUNKO0FBQ0EsSUFBSSxjQUFjLFNBQVN5TSxhQUFZLE9BQU87QUFDckMsU0FBQSxJQUFJLEtBQUt6TSxXQUFTO0FBQUEsSUFDdkIsTUFBTTtBQUFBLEVBQUEsR0FDTCxLQUFLLEdBQUcsSUFBSSxRQUFRO0FBQUEsSUFDckIsR0FBRztBQUFBLEVBQUEsQ0FDSixDQUFDO0FBQ0o7QUFNQSxJQUFJLFVBQVUsU0FBUzBNLFNBQVEsT0FBTyxVQUFVO0FBQzFDLE1BQUEsWUFBWSxNQUFNLFdBQ3BCLGNBQWMsTUFBTSxPQUNwQmxCLFlBQVcsWUFBWSxRQUFRLFVBQy9CTCxVQUFTLFlBQVk7QUFDdkIsU0FBT3BMLGVBQWM7QUFBQSxJQUNuQixPQUFPO0FBQUEsSUFDUCxTQUFTO0FBQUEsSUFDVCxZQUFZO0FBQUEsRUFBQSxHQUNYLFdBQVcsQ0FBQSxJQUFLO0FBQUEsSUFDakIsT0FBTyxZQUFZb0wsUUFBTyxZQUFZQSxRQUFPO0FBQUEsSUFDN0MsU0FBU0ssWUFBVztBQUFBLElBQ3BCLFVBQVU7QUFBQSxNQUNSLE9BQU8sWUFBWUwsUUFBTyxZQUFZQSxRQUFPO0FBQUEsSUFBQTtBQUFBLEVBQy9DLENBQ0Q7QUFDSDtBQUNBLElBQUksdUJBQXVCO0FBQzNCLElBQUksb0JBQW9CLFNBQVN3QixtQkFBa0IsT0FBTztBQUN4RCxNQUFJLFdBQVcsTUFBTSxVQUNuQixhQUFhLE1BQU07QUFDckIsU0FBTyxJQUFJLE9BQU8zTSxXQUFTLENBQUksR0FBQSxjQUFjLE9BQU8scUJBQXFCO0FBQUEsSUFDdkUsV0FBVztBQUFBLElBQ1gsc0JBQXNCO0FBQUEsRUFBQSxDQUN2QixHQUFHLFVBQVUsR0FBRyxZQUFZLElBQUksYUFBYSxJQUFJLENBQUM7QUFDckQ7QUFDQSxJQUFJLG9CQUFvQjtBQUN4QixJQUFJLGlCQUFpQixTQUFTNE0sZ0JBQWUsT0FBTztBQUNsRCxNQUFJLFdBQVcsTUFBTSxVQUNuQixhQUFhLE1BQU07QUFDckIsU0FBTyxJQUFJLE9BQU81TSxXQUFTLENBQUksR0FBQSxjQUFjLE9BQU8sa0JBQWtCO0FBQUEsSUFDcEUsV0FBVztBQUFBLElBQ1gsbUJBQW1CO0FBQUEsRUFBQSxDQUNwQixHQUFHLFVBQVUsR0FBRyxZQUFZLElBQUksV0FBVyxJQUFJLENBQUM7QUFDbkQ7QUFNQSxJQUFJLHdCQUF3QixTQUFTNk0sdUJBQXNCLE9BQU8sVUFBVTtBQUN0RSxNQUFBWixjQUFhLE1BQU0sWUFDckIsY0FBYyxNQUFNLE9BQ3BCVCxZQUFXLFlBQVksUUFBUSxVQUMvQkwsVUFBUyxZQUFZO0FBQ3ZCLFNBQU9wTCxlQUFjO0FBQUEsSUFDbkIsT0FBTztBQUFBLElBQ1AsV0FBVztBQUFBLElBQ1gsT0FBTztBQUFBLEVBQUEsR0FDTixXQUFXLENBQUEsSUFBSztBQUFBLElBQ2pCLGlCQUFpQmtNLGNBQWFkLFFBQU8sWUFBWUEsUUFBTztBQUFBLElBQ3hELGNBQWNLLFlBQVc7QUFBQSxJQUN6QixXQUFXQSxZQUFXO0FBQUEsRUFBQSxDQUN2QjtBQUNIO0FBQ0EsSUFBSSxxQkFBcUIsU0FBU3NCLG9CQUFtQixPQUFPO0FBQzFELE1BQUksYUFBYSxNQUFNO0FBQ2hCLFNBQUEsSUFBSSxRQUFROU0sV0FBUyxDQUFBLEdBQUksWUFBWSxjQUFjLE9BQU8sc0JBQXNCO0FBQUEsSUFDckYsdUJBQXVCO0FBQUEsRUFDeEIsQ0FBQSxDQUFDLENBQUM7QUFDTDtBQU1BLElBQUksdUJBQXVCLFVBQVUsb0JBQW9CLGtCQUFrQix1QkFBdUIsQ0FBQyw0REFBNEQsQ0FBQyxFQUFFO0FBQ2xLLElBQUksc0JBQXNCLFNBQVMrTSxxQkFBb0IsT0FBTyxVQUFVO0FBQ3RFLE1BQUksWUFBWSxNQUFNLFdBQ3BCL1osUUFBTyxNQUFNLE1BQ2IsY0FBYyxNQUFNLE9BQ3BCbVksVUFBUyxZQUFZLFFBQ3JCSyxZQUFXLFlBQVksUUFBUTtBQUNqQyxTQUFPekwsZUFBYztBQUFBLElBQ25CLE9BQU87QUFBQSxJQUNQLFNBQVM7QUFBQSxJQUNULFlBQVk7QUFBQSxJQUNaLFdBQVc7QUFBQSxJQUNYLFVBQVUvTTtBQUFBLElBQ1YsWUFBWTtBQUFBLElBQ1osYUFBYUE7QUFBQSxJQUNiLFdBQVc7QUFBQSxJQUNYLGVBQWU7QUFBQSxFQUFBLEdBQ2QsV0FBVyxDQUFBLElBQUs7QUFBQSxJQUNqQixPQUFPLFlBQVltWSxRQUFPLFlBQVlBLFFBQU87QUFBQSxJQUM3QyxTQUFTSyxZQUFXO0FBQUEsRUFBQSxDQUNyQjtBQUNIO0FBQ0EsSUFBSSxhQUFhLFNBQVN3QixZQUFXLE9BQU87QUFDMUMsTUFBSSxRQUFRLE1BQU0sT0FDaEIxWixVQUFTLE1BQU07QUFDakIsU0FBTyxJQUFJLFFBQVE7QUFBQSxJQUNqQixLQUF3QjJaLG9CQUFBO0FBQUEsTUFDdEIsV0FBVyxHQUFHLE9BQU8sc0JBQXNCLGtCQUFrQixFQUFFLE9BQU8sT0FBTyxjQUFjO0FBQUEsTUFDM0YsaUJBQWlCO0FBQUEsTUFDakIsY0FBYztBQUFBLE1BQ2QsU0FBUztBQUFBLE1BQ1QsWUFBWTNaLFVBQVMsUUFBUTtBQUFBLE1BQzdCLFFBQVE7QUFBQSxNQUNSLGVBQWU7QUFBQSxNQUNmLE9BQU87QUFBQSxJQUFBLEdBQ2tDLElBQW1FLEVBQTBtVztBQUFBLEVBQUEsQ0FDenRXO0FBQ0g7QUFDQSxJQUFJLG1CQUFtQixTQUFTNFosa0JBQWlCLE9BQU87QUFDdEQsTUFBSSxhQUFhLE1BQU0sWUFDckIsUUFBUSxNQUFNLE9BQ2QsYUFBYSxNQUFNLE1BQ25CbGEsUUFBTyxlQUFlLFNBQVMsSUFBSSxZQUNuQyxZQUFZd00sMkJBQXlCLE9BQU8sVUFBVTtBQUN4RCxTQUFPLElBQUksT0FBT1EsV0FBUyxJQUFJLGNBQWNELGVBQWNBLGVBQWMsQ0FBQSxHQUFJLFNBQVMsR0FBRyxDQUFBLEdBQUk7QUFBQSxJQUMzRjtBQUFBLElBQ0E7QUFBQSxJQUNBLE1BQUEvTTtBQUFBLEVBQ0QsQ0FBQSxHQUFHLG9CQUFvQjtBQUFBLElBQ3RCLFdBQVc7QUFBQSxJQUNYLHFCQUFxQjtBQUFBLEVBQ3RCLENBQUEsR0FBRyxVQUFVLEdBQUcsSUFBSSxZQUFZO0FBQUEsSUFDL0IsT0FBTztBQUFBLElBQ1AsUUFBUTtBQUFBLEVBQUEsQ0FDVCxHQUFHLElBQUksWUFBWTtBQUFBLElBQ2xCLE9BQU87QUFBQSxJQUNQLFFBQVE7QUFBQSxFQUFBLENBQ1QsR0FBRyxJQUFJLFlBQVk7QUFBQSxJQUNsQixPQUFPO0FBQUEsSUFDUCxRQUFRLENBQUM7QUFBQSxFQUFBLENBQ1YsQ0FBQztBQUNKO0FBRUEsSUFBSSxRQUFRLFNBQVMwVCxLQUFJL0csT0FBTSxVQUFVO0FBQ3ZDLE1BQUlzTSxjQUFhdE0sTUFBSyxZQUNwQixZQUFZQSxNQUFLLFdBQ2pCLGFBQWFBLE1BQUssT0FDbEJ3TCxVQUFTLFdBQVcsUUFDcEJGLGdCQUFlLFdBQVcsY0FDMUJDLFdBQVUsV0FBVztBQUN2QixTQUFPbkwsZUFBYztBQUFBLElBQ25CLE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxJQUNaLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxJQUNWLGdCQUFnQjtBQUFBLElBQ2hCLFdBQVdtTCxTQUFRO0FBQUEsSUFDbkIsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLElBQ1YsWUFBWTtBQUFBLEVBQUEsR0FDWCxXQUFXLENBQUEsSUFBSztBQUFBLElBQ2pCLGlCQUFpQmUsY0FBYWQsUUFBTyxXQUFXQSxRQUFPO0FBQUEsSUFDdkQsYUFBYWMsY0FBYWQsUUFBTyxZQUFZLFlBQVlBLFFBQU8sVUFBVUEsUUFBTztBQUFBLElBQ2pGLGNBQUFGO0FBQUEsSUFDQSxhQUFhO0FBQUEsSUFDYixhQUFhO0FBQUEsSUFDYixXQUFXLFlBQVksYUFBYSxPQUFPRSxRQUFPLE9BQU8sSUFBSTtBQUFBLElBQzdELFdBQVc7QUFBQSxNQUNULGFBQWEsWUFBWUEsUUFBTyxVQUFVQSxRQUFPO0FBQUEsSUFBQTtBQUFBLEVBQ25ELENBQ0Q7QUFDSDtBQUNBLElBQUksVUFBVSxTQUFTZ0MsU0FBUSxPQUFPO0FBQ3BDLE1BQUksV0FBVyxNQUFNLFVBQ25CbEIsY0FBYSxNQUFNLFlBQ25CLFlBQVksTUFBTSxXQUNsQixXQUFXLE1BQU0sVUFDakIsYUFBYSxNQUFNLFlBQ25CLGFBQWEsTUFBTTtBQUNkLFNBQUEsSUFBSSxPQUFPak0sV0FBUztBQUFBLElBQ3pCLEtBQUs7QUFBQSxFQUFBLEdBQ0osY0FBYyxPQUFPLFdBQVc7QUFBQSxJQUNqQyxTQUFTO0FBQUEsSUFDVCx3QkFBd0JpTTtBQUFBLElBQ3hCLHVCQUF1QjtBQUFBLElBQ3ZCLHlCQUF5QjtBQUFBLEVBQzFCLENBQUEsR0FBRyxZQUFZO0FBQUEsSUFDZCxpQkFBaUJBLGVBQWM7QUFBQSxFQUNoQyxDQUFBLEdBQUcsUUFBUTtBQUNkO0FBQ0EsSUFBSSxZQUFZO0FBRWhCLElBQUltQixnQkFBYyxDQUFDLE1BQU07QUFDekIsSUFBSSxXQUFXLFNBQVNDLFVBQVMxTixPQUFNLFVBQVU7QUFDM0MsTUFBQXVMLFdBQVV2TCxNQUFLLE1BQU07QUFDbEIsU0FBQSxXQUFXLENBQUEsSUFBSztBQUFBLElBQ3JCLGVBQWV1TCxTQUFRLFdBQVc7QUFBQSxJQUNsQyxZQUFZQSxTQUFRLFdBQVc7QUFBQSxFQUNqQztBQUNGO0FBQ0EsSUFBSSxRQUFRLFNBQVNvQyxPQUFNLE9BQU87QUFDaEMsTUFBSSxXQUFXLE1BQU0sVUFDbkIsS0FBSyxNQUFNLElBQ1gsWUFBWSxNQUFNLFdBQ2xCLGdCQUFnQixNQUFNLGVBQ3RCLFVBQVUsTUFBTSxTQUNoQixlQUFlLE1BQU0sY0FDckIsYUFBYSxNQUFNLFlBQ25CLFFBQVEsTUFBTSxPQUNkdkgsU0FBUSxNQUFNLE9BQ2QsY0FBYyxNQUFNO0FBQ3RCLFNBQU8sSUFBSSxPQUFPL0YsV0FBUyxDQUFJLEdBQUEsY0FBYyxPQUFPLFNBQVM7QUFBQSxJQUMzRCxPQUFPO0FBQUEsRUFBQSxDQUNSLEdBQUcsVUFBVSxHQUFHLElBQUksU0FBU0EsV0FBUyxDQUFDLEdBQUcsY0FBYztBQUFBLElBQ3ZEO0FBQUEsSUFDQSxPQUFBK0Y7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUFBLENBQ0QsR0FBRyxLQUFLLEdBQUcsSUFBSSxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ3hDO0FBQ0EsSUFBSSxrQkFBa0IsU0FBU3dILGlCQUFnQjNDLFFBQU8sVUFBVTtBQUM5RCxNQUFJLGNBQWNBLE9BQU0sT0FDdEJPLFVBQVMsWUFBWSxRQUNyQkQsV0FBVSxZQUFZO0FBQ3hCLFNBQU9uTCxlQUFjO0FBQUEsSUFDbkIsT0FBTztBQUFBLElBQ1AsUUFBUTtBQUFBLElBQ1IsU0FBUztBQUFBLEVBQUEsR0FDUixXQUFXLENBQUEsSUFBSztBQUFBLElBQ2pCLE9BQU9vTCxRQUFPO0FBQUEsSUFDZCxVQUFVO0FBQUEsSUFDVixZQUFZO0FBQUEsSUFDWixjQUFjO0FBQUEsSUFDZCxhQUFhRCxTQUFRLFdBQVc7QUFBQSxJQUNoQyxjQUFjQSxTQUFRLFdBQVc7QUFBQSxJQUNqQyxlQUFlO0FBQUEsRUFBQSxDQUNoQjtBQUNIO0FBQ0EsSUFBSSxlQUFlLFNBQVNzQyxjQUFhLE9BQU87QUFDMUMsTUFBQSxvQkFBb0IsaUJBQWlCLEtBQUs7QUFDMUIsb0JBQUE7QUFDZCxNQUFBLGFBQWFoTywyQkFBeUIsbUJBQW1CNE4sYUFBVztBQUMxRSxTQUFPLElBQUksT0FBT3BOLFdBQVMsQ0FBSSxHQUFBLGNBQWMsT0FBTyxnQkFBZ0I7QUFBQSxJQUNsRSxpQkFBaUI7QUFBQSxFQUFBLENBQ2xCLEdBQUcsVUFBVSxDQUFDO0FBQ2pCO0FBQ0EsSUFBSSxVQUFVO0FBRWQsSUFBSU4sY0FBWSxDQUFDLFlBQVksY0FBYyxZQUFZLGdCQUFnQjtBQUN2RSxJQUFJLFdBQVcsU0FBUytOLFVBQVM5TixPQUFNLFVBQVU7QUFDL0MsTUFBSXNNLGNBQWF0TSxNQUFLLFlBQ3BCLFFBQVFBLE1BQUssT0FDYixhQUFhQSxNQUFLLE9BQ2xCdUwsV0FBVSxXQUFXLFNBQ3JCQyxVQUFTLFdBQVc7QUFDdEIsU0FBT3BMLGVBQWNBLGVBQWM7QUFBQSxJQUNqQyxZQUFZa00sY0FBYSxXQUFXO0FBQUE7QUFBQTtBQUFBLElBR3BDLFdBQVcsUUFBUSxrQkFBa0I7QUFBQSxFQUFBLEdBQ3BDLGNBQWMsR0FBRyxXQUFXLEtBQUs7QUFBQSxJQUNsQyxRQUFRZixTQUFRLFdBQVc7QUFBQSxJQUMzQixlQUFlQSxTQUFRLFdBQVc7QUFBQSxJQUNsQyxZQUFZQSxTQUFRLFdBQVc7QUFBQSxJQUMvQixPQUFPQyxRQUFPO0FBQUEsRUFBQSxDQUNmO0FBQ0g7QUFDQSxJQUFJLGVBQWU7QUFBQSxFQUNqQixVQUFVO0FBQUEsRUFDVixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxTQUFTO0FBQ1g7QUFDQSxJQUFJLGlCQUFpQjtBQUFBLEVBQ25CLE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQSxFQUNULFVBQVU7QUFBQSxFQUNWLHFCQUFxQjtBQUFBLEVBQ3JCLFdBQVdwTCxlQUFjO0FBQUEsSUFDdkIsU0FBUztBQUFBLElBQ1QsWUFBWTtBQUFBLElBQ1osWUFBWTtBQUFBLEVBQUEsR0FDWCxZQUFZO0FBQ2pCO0FBQ0EsSUFBSSxhQUFhLFNBQVMyTixZQUFXQyxXQUFVO0FBQzdDLFNBQU81TixlQUFjO0FBQUEsSUFDbkIsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsWUFBWTtBQUFBLElBQ1osU0FBUzROLFlBQVcsSUFBSTtBQUFBLElBQ3hCLE9BQU87QUFBQSxLQUNOLFlBQVk7QUFDakI7QUFDQSxJQUFJLFFBQVEsU0FBU0MsT0FBTSxPQUFPO0FBQ2hDLE1BQUksS0FBSyxNQUFNLElBQ2IsUUFBUSxNQUFNO0FBQ2hCLE1BQUksb0JBQW9CLGlCQUFpQixLQUFLLEdBQzVDLFdBQVcsa0JBQWtCLFVBQzdCM0IsY0FBYSxrQkFBa0IsWUFDL0IwQixZQUFXLGtCQUFrQixVQUM3QixpQkFBaUIsa0JBQWtCLGdCQUNuQyxhQUFhbk8sMkJBQXlCLG1CQUFtQkUsV0FBUztBQUNwRSxTQUFPLElBQUksT0FBT00sV0FBUyxDQUFJLEdBQUEsY0FBYyxPQUFPLFNBQVM7QUFBQSxJQUMzRCxtQkFBbUI7QUFBQSxFQUFBLENBQ3BCLEdBQUc7QUFBQSxJQUNGLGNBQWMsU0FBUztBQUFBLEVBQUEsQ0FDeEIsR0FBRyxJQUFJLFNBQVNBLFdBQVM7QUFBQSxJQUN4QixXQUFXLEdBQUc7QUFBQSxNQUNaLE9BQU87QUFBQSxPQUNOLGNBQWM7QUFBQSxJQUNqQixLQUFLO0FBQUEsSUFDTCxPQUFPLFdBQVcyTixTQUFRO0FBQUEsSUFDMUIsVUFBVTFCO0FBQUEsRUFBQSxHQUNULFVBQVUsQ0FBQyxDQUFDO0FBQ2pCO0FBQ0EsSUFBSSxVQUFVO0FBRWQsSUFBSSxnQkFBZ0IsU0FBUzRCLGVBQWNsTyxPQUFNLFVBQVU7QUFDckQsTUFBQSxhQUFhQSxNQUFLLE9BQ3BCdUwsV0FBVSxXQUFXLFNBQ3JCRCxnQkFBZSxXQUFXLGNBQzFCRSxVQUFTLFdBQVc7QUFDdEIsU0FBT3BMLGVBQWM7QUFBQSxJQUNuQixPQUFPO0FBQUEsSUFDUCxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFBQSxHQUNULFdBQVcsQ0FBQSxJQUFLO0FBQUEsSUFDakIsaUJBQWlCb0wsUUFBTztBQUFBLElBQ3hCLGNBQWNGLGdCQUFlO0FBQUEsSUFDN0IsUUFBUUMsU0FBUSxXQUFXO0FBQUEsRUFBQSxDQUM1QjtBQUNIO0FBQ0EsSUFBSSxxQkFBcUIsU0FBUzRDLG9CQUFtQmxELFFBQU8sVUFBVTtBQUNoRSxNQUFBLGNBQWNBLE9BQU0sT0FDdEJLLGdCQUFlLFlBQVksY0FDM0JFLFVBQVMsWUFBWSxRQUNyQixtQkFBbUJQLE9BQU07QUFDM0IsU0FBTzdLLGVBQWM7QUFBQSxJQUNuQixVQUFVO0FBQUEsSUFDVixjQUFjLG9CQUFvQixxQkFBcUIsU0FBWSxhQUFhO0FBQUEsSUFDaEYsWUFBWTtBQUFBLEVBQUEsR0FDWCxXQUFXLENBQUEsSUFBSztBQUFBLElBQ2pCLGNBQWNrTCxnQkFBZTtBQUFBLElBQzdCLE9BQU9FLFFBQU87QUFBQSxJQUNkLFVBQVU7QUFBQSxJQUNWLFNBQVM7QUFBQSxJQUNULGFBQWE7QUFBQSxFQUFBLENBQ2Q7QUFDSDtBQUNBLElBQUksc0JBQXNCLFNBQVM0QyxxQkFBb0IsT0FBTyxVQUFVO0FBQ3RFLE1BQUksY0FBYyxNQUFNLE9BQ3RCN0MsV0FBVSxZQUFZLFNBQ3RCRCxnQkFBZSxZQUFZLGNBQzNCRSxVQUFTLFlBQVksUUFDckIsWUFBWSxNQUFNO0FBQ3BCLFNBQU9wTCxlQUFjO0FBQUEsSUFDbkIsWUFBWTtBQUFBLElBQ1osU0FBUztBQUFBLEVBQUEsR0FDUixXQUFXLENBQUEsSUFBSztBQUFBLElBQ2pCLGNBQWNrTCxnQkFBZTtBQUFBLElBQzdCLGlCQUFpQixZQUFZRSxRQUFPLGNBQWM7QUFBQSxJQUNsRCxhQUFhRCxTQUFRO0FBQUEsSUFDckIsY0FBY0EsU0FBUTtBQUFBLElBQ3RCLFVBQVU7QUFBQSxNQUNSLGlCQUFpQkMsUUFBTztBQUFBLE1BQ3hCLE9BQU9BLFFBQU87QUFBQSxJQUFBO0FBQUEsRUFDaEIsQ0FDRDtBQUNIO0FBQ0EsSUFBSSxvQkFBb0IsU0FBUzZDLG1CQUFrQixPQUFPO0FBQ3hELE1BQUksV0FBVyxNQUFNLFVBQ25CLGFBQWEsTUFBTTtBQUNkLFNBQUEsSUFBSSxPQUFPLFlBQVksUUFBUTtBQUN4QztBQUNBLElBQUksc0JBQXNCO0FBQzFCLElBQUksa0JBQWtCO0FBQ3RCLFNBQVMsaUJBQWlCLE9BQU87QUFDL0IsTUFBSSxXQUFXLE1BQU0sVUFDbkIsYUFBYSxNQUFNO0FBQ2QsU0FBQSxJQUFJLE9BQU9oTyxXQUFTO0FBQUEsSUFDekIsTUFBTTtBQUFBLEVBQ0wsR0FBQSxVQUFVLEdBQUcsWUFBWSxJQUFJLFdBQVc7QUFBQSxJQUN6QyxNQUFNO0FBQUEsRUFBQSxDQUNQLENBQUM7QUFDSjtBQUNBLElBQUksYUFBYSxTQUFTaU8sWUFBVyxPQUFPO0FBQzFDLE1BQUksV0FBVyxNQUFNLFVBQ25CQyxjQUFhLE1BQU0sWUFDbkI3YSxRQUFPLE1BQU0sTUFDYixhQUFhLE1BQU0sWUFDbkI0WSxjQUFhLE1BQU0sWUFDbkJ2QixlQUFjLE1BQU0sYUFDcEIsY0FBYyxNQUFNO0FBQ3RCLE1BQUksWUFBWXdELFlBQVcsV0FDekJDLFNBQVFELFlBQVcsT0FDbkIsU0FBU0EsWUFBVztBQUN0QixTQUFPLElBQUksV0FBVztBQUFBLElBQ3BCLE1BQUE3YTtBQUFBLElBQ0EsWUFBWTBNLGVBQWNBLGVBQWMsQ0FBSSxHQUFBLGNBQWMsT0FBTyxjQUFjO0FBQUEsTUFDN0UsZUFBZTtBQUFBLE1BQ2YsNEJBQTRCa007QUFBQSxJQUFBLENBQzdCLENBQUMsR0FBRyxVQUFVO0FBQUEsSUFDZjtBQUFBLEVBQUEsR0FDQyxJQUFJa0MsUUFBTztBQUFBLElBQ1osTUFBQTlhO0FBQUEsSUFDQSxZQUFZME0sZUFBYyxDQUFBLEdBQUksY0FBYyxPQUFPLG1CQUFtQjtBQUFBLE1BQ3BFLHNCQUFzQjtBQUFBLElBQUEsQ0FDdkIsQ0FBQztBQUFBLElBQ0Y7QUFBQSxFQUFBLEdBQ0MsUUFBUSxHQUFHLElBQUksUUFBUTtBQUFBLElBQ3hCLE1BQUExTTtBQUFBLElBQ0EsWUFBWTBNLGVBQWNBLGVBQWMsQ0FBSSxHQUFBLGNBQWMsT0FBTyxvQkFBb0I7QUFBQSxNQUNuRix1QkFBdUI7QUFBQSxJQUFBLENBQ3hCLENBQUMsR0FBRyxDQUFBLEdBQUk7QUFBQSxNQUNQLGNBQWMsVUFBVSxPQUFPLFlBQVksUUFBUTtBQUFBLE9BQ2xEMkssWUFBVztBQUFBLElBQ2Q7QUFBQSxFQUFBLENBQ0QsQ0FBQztBQUNKO0FBQ0EsSUFBSSxlQUFlO0FBRW5CLElBQUksWUFBWSxTQUFTMEQsV0FBVXpPLE9BQU0sVUFBVTtBQUNqRCxNQUFJc00sY0FBYXRNLE1BQUssWUFDcEIsWUFBWUEsTUFBSyxXQUNqQixhQUFhQSxNQUFLLFlBQ2xCLGFBQWFBLE1BQUssT0FDbEJ1TCxXQUFVLFdBQVcsU0FDckJDLFVBQVMsV0FBVztBQUN0QixTQUFPcEwsZUFBYztBQUFBLElBQ25CLE9BQU87QUFBQSxJQUNQLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxJQUNWLE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxJQUNaLHlCQUF5QjtBQUFBLEVBQUEsR0FDeEIsV0FBVyxDQUFBLElBQUs7QUFBQSxJQUNqQixpQkFBaUIsYUFBYW9MLFFBQU8sVUFBVSxZQUFZQSxRQUFPLFlBQVk7QUFBQSxJQUM5RSxPQUFPYyxjQUFhZCxRQUFPLFlBQVksYUFBYUEsUUFBTyxXQUFXO0FBQUEsSUFDdEUsU0FBUyxHQUFHLE9BQU9ELFNBQVEsV0FBVyxHQUFHLEtBQUssRUFBRSxPQUFPQSxTQUFRLFdBQVcsR0FBRyxJQUFJO0FBQUE7QUFBQSxJQUVqRixXQUFXO0FBQUEsTUFDVCxpQkFBaUIsQ0FBQ2UsY0FBYSxhQUFhZCxRQUFPLFVBQVVBLFFBQU8sWUFBWTtBQUFBLElBQUE7QUFBQSxFQUNsRixDQUNEO0FBQ0g7QUFDQSxJQUFJLFNBQVMsU0FBU2tELFFBQU8sT0FBTztBQUNsQyxNQUFJLFdBQVcsTUFBTSxVQUNuQnBDLGNBQWEsTUFBTSxZQUNuQixZQUFZLE1BQU0sV0FDbEIsYUFBYSxNQUFNLFlBQ25CLFdBQVcsTUFBTSxVQUNqQixhQUFhLE1BQU07QUFDckIsU0FBTyxJQUFJLE9BQU9qTSxXQUFTLENBQUksR0FBQSxjQUFjLE9BQU8sVUFBVTtBQUFBLElBQzVELFFBQVE7QUFBQSxJQUNSLHVCQUF1QmlNO0FBQUEsSUFDdkIsc0JBQXNCO0FBQUEsSUFDdEIsdUJBQXVCO0FBQUEsRUFBQSxDQUN4QixHQUFHO0FBQUEsSUFDRixLQUFLO0FBQUEsSUFDTCxpQkFBaUJBO0FBQUEsRUFBQSxHQUNoQixVQUFVLEdBQUcsUUFBUTtBQUMxQjtBQUNBLElBQUksV0FBVztBQUVmLElBQUksaUJBQWlCLFNBQVNxQyxnQkFBZTNPLE9BQU0sVUFBVTtBQUMzRCxNQUFJLGFBQWFBLE1BQUssT0FDcEJ1TCxXQUFVLFdBQVcsU0FDckJDLFVBQVMsV0FBVztBQUN0QixTQUFPcEwsZUFBYztBQUFBLElBQ25CLE9BQU87QUFBQSxJQUNQLFVBQVU7QUFBQSxFQUFBLEdBQ1QsV0FBVyxDQUFBLElBQUs7QUFBQSxJQUNqQixPQUFPb0wsUUFBTztBQUFBLElBQ2QsWUFBWUQsU0FBUSxXQUFXO0FBQUEsSUFDL0IsYUFBYUEsU0FBUSxXQUFXO0FBQUEsRUFBQSxDQUNqQztBQUNIO0FBQ0EsSUFBSSxjQUFjLFNBQVNxRCxhQUFZLE9BQU87QUFDNUMsTUFBSSxXQUFXLE1BQU0sVUFDbkIsYUFBYSxNQUFNO0FBQ3JCLFNBQU8sSUFBSSxPQUFPdk8sV0FBUyxDQUFJLEdBQUEsY0FBYyxPQUFPLGVBQWU7QUFBQSxJQUNqRSxhQUFhO0FBQUEsRUFBQSxDQUNkLEdBQUcsVUFBVSxHQUFHLFFBQVE7QUFDM0I7QUFDQSxJQUFJLGdCQUFnQjtBQUVwQixJQUFJMEcsUUFBTSxTQUFTQSxLQUFJL0csT0FBTSxVQUFVO0FBQ2pDLE1BQUFzTSxjQUFhdE0sTUFBSyxZQUNwQixhQUFhQSxNQUFLLE9BQ2xCdUwsV0FBVSxXQUFXLFNBQ3JCQyxVQUFTLFdBQVc7QUFDdEIsU0FBT3BMLGVBQWM7QUFBQSxJQUNuQixPQUFPO0FBQUEsSUFDUCxVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixjQUFjO0FBQUEsSUFDZCxZQUFZO0FBQUEsRUFBQSxHQUNYLFdBQVcsQ0FBQSxJQUFLO0FBQUEsSUFDakIsT0FBT2tNLGNBQWFkLFFBQU8sWUFBWUEsUUFBTztBQUFBLElBQzlDLFlBQVlELFNBQVEsV0FBVztBQUFBLElBQy9CLGFBQWFBLFNBQVEsV0FBVztBQUFBLEVBQUEsQ0FDakM7QUFDSDtBQUNBLElBQUksY0FBYyxTQUFTc0QsYUFBWSxPQUFPO0FBQzVDLE1BQUksV0FBVyxNQUFNLFVBQ25CdkMsY0FBYSxNQUFNLFlBQ25CLGFBQWEsTUFBTTtBQUNyQixTQUFPLElBQUksT0FBT2pNLFdBQVMsQ0FBSSxHQUFBLGNBQWMsT0FBTyxlQUFlO0FBQUEsSUFDakUsZ0JBQWdCO0FBQUEsSUFDaEIsNkJBQTZCaU07QUFBQSxFQUFBLENBQzlCLEdBQUcsVUFBVSxHQUFHLFFBQVE7QUFDM0I7QUFDQSxJQUFJLGdCQUFnQjtBQUVwQixJQUFJLGFBQWE7QUFBQSxFQUNmO0FBQUEsRUFDQSxTQUFTO0FBQUEsRUFDVDtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQSxPQUFPO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQSxPQUFPO0FBQUEsRUFDUDtBQUFBLEVBQ0EsTUFBTTtBQUFBLEVBQUEsVUFDTlI7QUFBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQSxZQUFZO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQSxRQUFRO0FBQUEsRUFDUixhQUFhO0FBQUEsRUFDYjtBQUFBLEVBQ0EsYUFBYTtBQUFBLEVBQ2I7QUFDRjtBQUNBLElBQUksb0JBQW9CLFNBQVNnRCxtQkFBa0IsT0FBTztBQUN4RCxTQUFPMU8sZUFBY0EsZUFBYyxDQUFBLEdBQUksVUFBVSxHQUFHLE1BQU0sVUFBVTtBQUN0RTtBQ2gzQ0EsSUFBSSxZQUFZLE9BQU8sU0FDbkIsU0FBUyxTQUFTLE9BQU87QUFDckIsU0FBTyxPQUFPLFVBQVUsWUFBWSxVQUFVO0FBQ2pEO0FBQ0wsU0FBUzJPLFVBQVEsT0FBTyxRQUFRO0FBQzVCLE1BQUksVUFBVSxRQUFRO0FBQ2xCLFdBQU87QUFBQSxFQUNmO0FBQ0ksTUFBSSxVQUFVLEtBQUssS0FBSyxVQUFVLE1BQU0sR0FBRztBQUN2QyxXQUFPO0FBQUEsRUFDZjtBQUNJLFNBQU87QUFDWDtBQUNBLFNBQVMsZUFBZSxXQUFXLFlBQVk7QUFDM0MsTUFBSSxVQUFVLFdBQVcsV0FBVyxRQUFRO0FBQ3hDLFdBQU87QUFBQSxFQUNmO0FBQ0ksV0FBU3RkLEtBQUksR0FBR0EsS0FBSSxVQUFVLFFBQVFBLE1BQUs7QUFDdkMsUUFBSSxDQUFDc2QsVUFBUSxVQUFVdGQsRUFBQyxHQUFHLFdBQVdBLEVBQUMsQ0FBQyxHQUFHO0FBQ3ZDLGFBQU87QUFBQSxJQUNuQjtBQUFBLEVBQ0E7QUFDSSxTQUFPO0FBQ1g7QUFFQSxTQUFTLFdBQVcsVUFBVXNkLFVBQVM7QUFDbkMsTUFBSUEsYUFBWSxRQUFRO0FBQUUsSUFBQUEsV0FBVTtBQUFBLEVBQWU7QUFDbkQsTUFBSXhZLFNBQVE7QUFDWixXQUFTLFdBQVc7QUFDaEIsUUFBSSxVQUFVLENBQUU7QUFDaEIsYUFBUyxLQUFLLEdBQUcsS0FBSyxVQUFVLFFBQVEsTUFBTTtBQUMxQyxjQUFRLEVBQUUsSUFBSSxVQUFVLEVBQUU7QUFBQSxJQUN0QztBQUNRLFFBQUlBLFVBQVNBLE9BQU0sYUFBYSxRQUFRd1ksU0FBUSxTQUFTeFksT0FBTSxRQUFRLEdBQUc7QUFDdEUsYUFBT0EsT0FBTTtBQUFBLElBQ3pCO0FBQ1EsUUFBSSxhQUFhLFNBQVMsTUFBTSxNQUFNLE9BQU87QUFDN0MsSUFBQUEsU0FBUTtBQUFBLE1BQ0o7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxJQUNiO0FBQ0QsV0FBTztBQUFBLEVBQ2Y7QUFDSSxXQUFTLFFBQVEsU0FBUyxRQUFRO0FBQzlCLElBQUFBLFNBQVE7QUFBQSxFQUNYO0FBQ0QsU0FBTztBQUNYOzs7OztBQy9CQSxJQUFJLE9BQStDO0FBQUEsRUFDakQsTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUNWO0FBTUEsSUFBSSxXQUFXLFNBQVN5WSxVQUFTLE9BQU87QUFDL0IsU0FBQSxJQUFJLFFBQVEzTyxXQUFTO0FBQUEsSUFDMUIsS0FBSztBQUFBLEVBQ1AsR0FBRyxLQUFLLENBQUM7QUFDWDtBQUNBLElBQUksYUFBYTtBQUVqQixJQUFJLDBCQUEwQjtBQUFBLEVBQzVCLFVBQVUsU0FBUyxTQUFTLE9BQU87QUFDakMsUUFBSSxlQUFlLE1BQU0sY0FDdkIsVUFBVSxNQUFNLFNBQ2hCLGtCQUFrQixNQUFNLGlCQUN4QixVQUFVLE1BQU0sU0FDaEIsaUJBQWlCLE1BQU07QUFDekIsWUFBUSxTQUFTO0FBQUEsTUFDZixLQUFLO0FBQ0gsZUFBTyx1SEFBdUgsT0FBTyxrQkFBa0IsdURBQXVELElBQUksR0FBRztBQUFBLE1BQ3ZOLEtBQUs7QUFDSCxlQUFPLGlCQUFpQixHQUFHLE9BQU8sTUFBTSxZQUFZLEtBQUssVUFBVSxjQUFjLEVBQUUsT0FBTyxlQUFlLHlCQUF5QixJQUFJLGlDQUFpQyxFQUFFLE9BQU8sVUFBVSx5Q0FBeUMsRUFBRSxJQUFJO0FBQUEsTUFDM08sS0FBSztBQUNJLGVBQUE7QUFBQSxNQUNUO0FBQ1MsZUFBQTtBQUFBLElBQUE7QUFBQSxFQUViO0FBQUEsRUFDQSxVQUFVLFNBQVMsU0FBUyxPQUFPO0FBQ2pDLFFBQUksU0FBUyxNQUFNLFFBQ2pCLGVBQWUsTUFBTSxPQUNyQixRQUFRLGlCQUFpQixTQUFTLEtBQUssY0FDdkMsU0FBUyxNQUFNLFFBQ2ZpTSxjQUFhLE1BQU07QUFDckIsWUFBUSxRQUFRO0FBQUEsTUFDZCxLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQ0ksZUFBQSxVQUFVLE9BQU8sT0FBTyxlQUFlO0FBQUEsTUFDaEQsS0FBSztBQUNJLGVBQUE7QUFBQSxNQUNULEtBQUs7QUFDSCxlQUFPLFNBQVMsT0FBTyxPQUFPLFNBQVMsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLE9BQU8sT0FBTyxLQUFLLEdBQUcsR0FBRyxhQUFhO0FBQUEsTUFDbEcsS0FBSztBQUNJLGVBQUFBLGNBQWEsVUFBVSxPQUFPLE9BQU8sc0NBQXNDLElBQUksVUFBVSxPQUFPLE9BQU8sYUFBYTtBQUFBLE1BQzdIO0FBQ1MsZUFBQTtBQUFBLElBQUE7QUFBQSxFQUViO0FBQUEsRUFDQSxTQUFTLFNBQVMsUUFBUSxPQUFPO0FBQzNCLFFBQUEsVUFBVSxNQUFNLFNBQ2xCLFVBQVUsTUFBTSxTQUNoQnZVLFdBQVUsTUFBTSxTQUNoQixnQkFBZ0IsTUFBTSxPQUN0QixRQUFRLGtCQUFrQixTQUFTLEtBQUssZUFDeEMsY0FBYyxNQUFNLGFBQ3BCdVUsY0FBYSxNQUFNLFlBQ25CLGFBQWEsTUFBTSxZQUNuQjJDLGlCQUFnQixNQUFNO0FBQ3hCLFFBQUksZ0JBQWdCLFNBQVNDLGVBQWMsS0FBSyxNQUFNO0FBQ3BELGFBQU8sT0FBTyxJQUFJLFNBQVMsR0FBRyxPQUFPLElBQUksUUFBUSxJQUFJLElBQUksR0FBRyxNQUFNLEVBQUUsT0FBTyxJQUFJLE1BQU0sSUFBSTtBQUFBLElBQzNGO0FBQ0ksUUFBQSxZQUFZLFdBQVcsYUFBYTtBQUMvQixhQUFBLFNBQVMsT0FBTyxPQUFPLFlBQVksRUFBRSxPQUFPLGNBQWMsYUFBYSxPQUFPLEdBQUcsR0FBRztBQUFBLElBQUE7QUFFekYsUUFBQSxZQUFZLFVBQVVELGdCQUFlO0FBQ25DLFVBQUEsV0FBVzNDLGNBQWEsY0FBYztBQUN0QyxVQUFBLFNBQVMsR0FBRyxPQUFPLGFBQWEsY0FBYyxFQUFFLEVBQUUsT0FBTyxRQUFRO0FBQ3JFLGFBQU8sR0FBRyxPQUFPLEtBQUssRUFBRSxPQUFPLFFBQVEsSUFBSSxFQUFFLE9BQU8sY0FBY3ZVLFVBQVMsT0FBTyxHQUFHLEdBQUc7QUFBQSxJQUFBO0FBRW5GLFdBQUE7QUFBQSxFQUNUO0FBQUEsRUFDQSxVQUFVLFNBQVMsU0FBUyxPQUFPO0FBQ2pDLFFBQUksYUFBYSxNQUFNLFlBQ3JCLGlCQUFpQixNQUFNO0FBQ2xCLFdBQUEsR0FBRyxPQUFPLGNBQWMsRUFBRSxPQUFPLGFBQWEsc0JBQXNCLGFBQWEsSUFBSSxHQUFHO0FBQUEsRUFBQTtBQUVuRztBQUVBLElBQUksYUFBYSxTQUFTb1gsWUFBVyxPQUFPO0FBQ3RDLE1BQUEsZ0JBQWdCLE1BQU0sZUFDeEIsZ0JBQWdCLE1BQU0sZUFDdEIsZUFBZSxNQUFNLGNBQ3JCLG1CQUFtQixNQUFNLGtCQUN6QixZQUFZLE1BQU0sV0FDbEIsY0FBYyxNQUFNLGFBQ3BCLGNBQWMsTUFBTSxhQUNwQixLQUFLLE1BQU0sSUFDWEYsaUJBQWdCLE1BQU07QUFDeEIsTUFBSSxtQkFBbUIsWUFBWSxrQkFDakNHLGtCQUFpQixZQUFZLGdCQUM3QixhQUFhLFlBQVksWUFDekIsVUFBVSxZQUFZLFNBQ3RCQyxvQkFBbUIsWUFBWSxrQkFDL0IsZUFBZSxZQUFZLGNBQzNCLGFBQWEsWUFBWSxZQUN6QnRYLFdBQVUsWUFBWSxTQUN0QnVYLHNCQUFxQixZQUFZLG9CQUNqQyxrQkFBa0IsWUFBWSxpQkFDOUIsWUFBWSxZQUFZO0FBQ3RCLE1BQUEsWUFBWSxZQUFZLFlBQVk7QUFDcEMsTUFBQSxXQUFXLFlBQVksV0FBVztBQUdsQyxNQUFBLFdBQVd4USxhQUFBQSxRQUFRLFdBQVk7QUFDMUIsV0FBQXNCLGVBQWNBLGVBQWMsQ0FBQSxHQUFJLHVCQUF1QixHQUFHLG9CQUFvQixFQUFFO0FBQUEsRUFBQSxHQUN0RixDQUFDLGdCQUFnQixDQUFDO0FBR2pCLE1BQUEsZUFBZXRCLGFBQUFBLFFBQVEsV0FBWTtBQUNyQyxRQUFJLFVBQVU7QUFDVixRQUFBLGlCQUFpQixTQUFTLFVBQVU7QUFDdEMsVUFBSSxTQUFTLGNBQWMsUUFDekIsa0JBQWtCLGNBQWMsU0FDaEMsZUFBZSxjQUFjLGNBQzdCLGdCQUFnQixjQUFjLGVBQzlCLFFBQVEsY0FBYztBQUVwQixVQUFBLFdBQVcsU0FBU3lRLFVBQVMsS0FBSztBQUNwQyxlQUFPLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxNQUFNO0FBQUEsTUFDckM7QUFHQSxVQUFJLFdBQVcsZ0JBQWdCLFVBQVUsU0FBUyxLQUFLO0FBQ3ZELFVBQUksUUFBUSxXQUFXSCxnQkFBZSxRQUFRLElBQUk7QUFHOUMsVUFBQSxnQkFBZ0IsbUJBQW1CLGlCQUFpQjtBQUN4RCxVQUFJLFNBQVMsZ0JBQWdCLGNBQWMsSUFBSUEsZUFBYyxJQUFJLENBQUM7QUFDbEUsVUFBSSxnQkFBZ0JoUCxlQUFjO0FBQUE7QUFBQTtBQUFBLFFBR2hDLFlBQVksWUFBWWlQLGtCQUFpQixVQUFVLFdBQVc7QUFBQSxRQUM5RDtBQUFBLFFBQ0E7QUFBQSxTQUNDLGFBQWE7QUFDTixnQkFBQSxTQUFTLFNBQVMsYUFBYTtBQUFBLElBQUE7QUFFcEMsV0FBQTtBQUFBLEVBQUEsR0FDTixDQUFDLGVBQWUsVUFBVUEsbUJBQWtCLGFBQWFELGVBQWMsQ0FBQztBQUN2RSxNQUFBLGNBQWN0USxhQUFBQSxRQUFRLFdBQVk7QUFDcEMsUUFBSSxXQUFXO0FBQ2YsUUFBSSxVQUFVLGlCQUFpQjtBQUMvQixRQUFJLGFBQWEsQ0FBQyxFQUFFLGlCQUFpQixlQUFlLFlBQVksU0FBUyxhQUFhO0FBQ2xGLFFBQUEsV0FBVyxTQUFTLFNBQVM7QUFDL0IsVUFBSSxlQUFlO0FBQUEsUUFDakI7QUFBQSxRQUNBLE9BQU9zUSxnQkFBZSxPQUFPO0FBQUEsUUFDN0IsWUFBWUMsa0JBQWlCLFNBQVMsV0FBVztBQUFBLFFBQ2pEO0FBQUEsUUFDQSxTQUFTO0FBQUEsUUFDVCxTQUFTLFlBQVksZ0JBQWdCLFNBQVM7QUFBQSxRQUM5QztBQUFBLFFBQ0EsZUFBZUo7QUFBQUEsTUFDakI7QUFDVyxpQkFBQSxTQUFTLFFBQVEsWUFBWTtBQUFBLElBQUE7QUFFbkMsV0FBQTtBQUFBLEVBQUEsR0FDTixDQUFDLGVBQWUsY0FBY0csaUJBQWdCQyxtQkFBa0IsVUFBVSxrQkFBa0IsYUFBYUosY0FBYSxDQUFDO0FBQ3RILE1BQUEsY0FBY25RLGFBQUFBLFFBQVEsV0FBWTtBQUNwQyxRQUFJLGFBQWE7QUFDakIsUUFBSSxjQUFjL0csU0FBUSxVQUFVLENBQUMsYUFBYSxTQUFTLFVBQVU7QUFDbkUsVUFBSSxpQkFBaUJ1WCxvQkFBbUI7QUFBQSxRQUN0QyxPQUFPLGlCQUFpQjtBQUFBLE1BQUEsQ0FDekI7QUFDRCxtQkFBYSxTQUFTLFNBQVM7QUFBQSxRQUM3QjtBQUFBLFFBQ0E7QUFBQSxNQUFBLENBQ0Q7QUFBQSxJQUFBO0FBRUksV0FBQTtBQUFBLEVBQUEsR0FDTixDQUFDLGtCQUFrQixZQUFZLFlBQVksVUFBVXZYLFVBQVN1WCxxQkFBb0IsU0FBUyxDQUFDO0FBQy9GLE1BQUksa0JBQWtCLGtCQUFrQixRQUFRLGtCQUFrQixTQUFTLFNBQVMsY0FBYyxZQUFZO0FBQzFHLE1BQUEsZUFBZXhRLGFBQUFBLFFBQVEsV0FBWTtBQUNyQyxRQUFJLGNBQWM7QUFDbEIsUUFBSSxTQUFTLFVBQVU7QUFDckIsVUFBSSxVQUFVLGVBQWUsVUFBVSxhQUFhLFNBQVM7QUFDN0Qsb0JBQWMsU0FBUyxTQUFTO0FBQUEsUUFDOUIsY0FBYztBQUFBLFFBQ2Q7QUFBQSxRQUNBLFlBQVksaUJBQWlCdVEsa0JBQWlCLGVBQWUsV0FBVztBQUFBLFFBQ3hFO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFBQSxDQUNEO0FBQUEsSUFBQTtBQUVJLFdBQUE7QUFBQSxFQUNOLEdBQUEsQ0FBQyxXQUFXLGVBQWUsY0FBYyxTQUFTQSxtQkFBa0IsY0FBYyxZQUFZLFVBQVUsYUFBYSxpQkFBaUIsY0FBYyxDQUFDO0FBQ3hKLE1BQUksbUJBQW1CLElBQUlHLGFBQUFBLFVBQVUsTUFBTSxJQUFJLFFBQVE7QUFBQSxJQUNyRCxJQUFJO0FBQUEsRUFBQSxHQUNILFlBQVksR0FBRyxJQUFJLFFBQVE7QUFBQSxJQUM1QixJQUFJO0FBQUEsRUFBQSxHQUNILFdBQVcsR0FBRyxJQUFJLFFBQVE7QUFBQSxJQUMzQixJQUFJO0FBQUEsRUFBQSxHQUNILFdBQVcsR0FBRyxJQUFJLFFBQVE7QUFBQSxJQUMzQixJQUFJO0FBQUEsRUFDTixHQUFHLFlBQVksQ0FBQztBQUNoQixTQUFPLElBQUlBLGFBQUEsVUFBVSxNQUFNLElBQUksWUFBWTtBQUFBLElBQ3pDO0FBQUEsRUFDQyxHQUFBLGtCQUFrQixnQkFBZ0IsR0FBRyxJQUFJLFlBQVk7QUFBQSxJQUN0RCxhQUFhO0FBQUEsSUFDYixlQUFlO0FBQUEsSUFDZixpQkFBaUI7QUFBQSxJQUNqQixNQUFNO0FBQUEsRUFDTCxHQUFBLGFBQWEsQ0FBQyxrQkFBa0IsZ0JBQWdCLENBQUM7QUFDdEQ7QUFDQSxJQUFJLGVBQWU7QUFFbkIsSUFBSSxhQUFhLENBQUM7QUFBQSxFQUNoQixNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNY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QSxNQU1ELEdBQUcsQ0FBQztBQUFBLFFBQ0YsR0FBRyxDQUFDLE9BQU87QUFBQSxNQUNuQixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELElBQUksQ0FBQztBQUFBLFFBQ0gsSUFBSSxDQUFDLE9BQU87QUFBQSxNQUNwQixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELElBQUksQ0FBQztBQUFBLFFBQ0gsSUFBSSxDQUFDLE9BQU87QUFBQSxNQUNwQixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELElBQUksQ0FBQztBQUFBLFFBQ0gsSUFBSSxDQUFDLE9BQU87QUFBQSxNQUNwQixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELElBQUksQ0FBQztBQUFBLFFBQ0gsSUFBSSxDQUFDLE9BQU87QUFBQSxNQUNwQixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELElBQUksQ0FBQztBQUFBLFFBQ0gsSUFBSSxDQUFDLE9BQU87QUFBQSxNQUNwQixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELElBQUksQ0FBQztBQUFBLFFBQ0gsSUFBSSxDQUFDLE9BQU87QUFBQSxNQUNwQixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELElBQUksQ0FBQztBQUFBLFFBQ0gsSUFBSSxDQUFDLE9BQU87QUFBQSxNQUNwQixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELElBQUksQ0FBQztBQUFBLFFBQ0gsSUFBSSxDQUFDLE9BQU87QUFBQSxNQUNwQixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELEdBQUcsQ0FBQztBQUFBLFFBQ0YsR0FBRyxDQUFDLE1BQU07QUFBQSxNQUNsQixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELElBQUksQ0FBQztBQUFBLFFBQ0gsSUFBSSxDQUFDLE1BQU07QUFBQSxNQUNuQixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELElB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LFFBQ1osYUFBYSx3QkFBdUI7QUFBQSxNQUM1QyxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELGFBQWEsQ0FBQztBQUFBLFFBQ1osYUFBYSx3QkFBdUI7QUFBQSxNQUM1QyxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELGFBQWEsQ0FBQztBQUFBLFFBQ1osYUFBYSx3QkFBdUI7QUFBQSxNQUM1QyxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELGFBQWEsQ0FBQztBQUFBLFFBQ1osYUFBYSx3QkFBdUI7QUFBQSxNQUM1QyxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELGFBQWEsQ0FBQztBQUFBLFFBQ1osYUFBYSx3QkFBdUI7QUFBQSxNQUM1QyxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELGFBQWEsQ0FBQztBQUFBLFFBQ1osYUFBYSx3QkFBdUI7QUFBQSxNQUM1QyxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELGFBQWEsQ0FBQztBQUFBLFFBQ1osYUFBYSx3QkFBdUI7QUFBQSxNQUM1QyxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELFlBQVksQ0FBQztBQUFBLFFBQ1gsWUFBWSx3QkFBdUI7QUFBQSxNQUMzQyxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELGFBQWEsQ0FBQztBQUFBLFFBQ1osYUFBYSx3QkFBdUI7QUFBQSxNQUM1QyxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELGFBQWEsQ0FBQztBQUFBLFFBQ1osYUFBYSx3QkFBdUI7QUFBQSxNQUM1QyxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELGFBQWEsQ0FBQztBQUFBLFFBQ1osYUFBYSx3QkFBdUI7QUFBQSxNQUM1QyxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtELGFBQWEsQ0FBQztBQUFBLFFBQ1osYUFBYSx3QkFBdUI7QUFBQSxNQUM1QyxDQUFPO0FBQUE7QUFB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LFFBQVE7QUFBQSxRQUNOLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxNQUNMO0FBQUEsTUFDRCxVQUFVO0FBQUEsUUFDUixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsTUFDTDtBQUFBLE1BQ0QsVUFBVTtBQUFBLFFBQ1IsSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLE1BQ1o7QUFBQSxJQUNLO0FBQUEsSUFDRCxTQUFTO0FBQUEsTUFDUCxRQUFRO0FBQUEsUUFDTixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsTUFDTDtBQUFBLE1BQ0QsVUFBVTtBQUFBLFFBQ1IsSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLE1BQ0w7QUFBQSxNQUNELFVBQVU7QUFBQSxRQUNSLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxNQUNaO0FBQUEsSUFDSztBQUFBLElBQ0QsT0FBTztBQUFBLE1BQ0wsUUFBUTtBQUFBLFFBQ04sSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLE1BQ0w7QUFBQSxNQUNELFVBQVU7QUFBQSxRQUNSLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxNQUNMO0FBQUEsTUFDRCxVQUFVO0FBQUEsUUFDUixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsTUFDWjtBQUFBLElBQ0E7QUFBQSxFQUNHO0FBQUEsRUFDRCxPQUFPO0FBQUEsSUFDTCxTQUFTO0FBQUEsTUFDUCxRQUFRO0FBQUEsUUFDTixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsTUFDTDtBQUFBLE1BQ0QsVUFBVTtBQUFBLFFBQ1IsSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLE1BQ0w7QUFBQSxNQUNELFVBQVU7QUFBQSxRQUNSLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxNQUNaO0FBQUEsSUFDSztBQUFBLElBQ0QsU0FBUztBQUFBLE1BQ1AsUUFBUTtBQUFBLFFBQ04sSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLE1BQ0w7QUFBQSxNQUNELFVBQVU7QUFBQSxRQUNSLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxNQUNMO0FBQUEsTUFDRCxVQUFV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O0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxDQUFDO0FBQ0QsTUFBSUMsZ0JB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QUNKLENBQUE7QUFHUjtBQ3ZETyxNQUFNLElBQUk7QUFBQSxFQUtiLFlBQVksS0FBYTtBQUpqQjtBQUNBO0FBSUEsUUFBQS9PLFNBQVFveUIsU0FBVSxRQUFRLEtBQUs7QUFDbkMsWUFBUSxJQUFJLEdBQUc7QUFDZixJQUFBcHlCLE9BQU0sZUFBZTtBQUNyQixJQUFBQSxPQUFNLEtBQUs7QUFBQSxFQUFBO0FBQUEsRUFHZixPQUFhO0FBRVQsU0FBSyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBR2pCLFVBQVU7QUFDTixVQUFNLE9BQU8sU0FBUyxXQUFXLFNBQVMsZUFBZSxNQUFNLENBQUM7QUFFM0QsU0FBQTtBQUFBLDRDQUNBLFVBQVUsVUFBVixFQUNHLFVBQUMrTyxrQ0FBQSxJQUFBb21CLFlBQUEsRUFDRyxpREFBQyxRQUNHLEVBQUEsVUFBQTtBQUFBLFFBQUFwbUIsc0NBQUMsU0FBTSxNQUFLLEtBQUksU0FBU0Esc0NBQUMsZ0JBQWMsQ0FBQSxHQUFJO0FBQUEsOENBQzNDLE9BQU0sRUFBQSxNQUFLLFVBQVMsU0FBU0Esa0NBQUEsSUFBQyxpQkFBYyxFQUFJLENBQUE7QUFBQSxNQUFBLEVBQ3JELENBQUEsRUFDSixDQUFBLEVBQ0osQ0FBQTtBQUFBLElBQ0o7QUFBQSxFQUFBO0FBQUEsRUFJSixNQUFZO0FBQUEsRUFBQTtBQUloQjtBQ3hDQSxJQUFJLE1BQU0sSUFBSSxJQUFJLFNBQVM7QUFDM0IsSUFBSSxLQUFLO0FBQ1QsSUFBSSxJQUFJOyIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc2LDc3LDc4LDc5LDgwLDgxLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyNywxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTQsMTU1LDE1NiwxNTcsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzg0LDM4NSwzODYsMzg3LDM4OCwzODksMzkwLDM5MSwzOTIsMzkzLDM5NCwzOTUsMzk2LDM5NywzOTgsMzk5LDQwMCw0MDEsNDAyLDQwMyw0MDQsNDA1LDQwNiw0MDcsNDA4LDQwOSw0MTAsNDExLDQxMiw0MTMsNDE0LDQxNSw0MTYsNDE3LDQxOCw0MTksNDIwLDQyMSw0MjIsNDIzLDQyNCw0MjUsNDI2LDQyNyw0MjgsNDI5LDQzMCw0MzEsNDMyLDQzMyw0MzQsNDM1LDQzNiw0MzcsNDM4LDQzOSw0NDAsNDQxLDQ0Miw0NDMsNDQ0LDQ0NSw0NDYsNDQ3LDQ0OCw0NDksNDUwLDQ1MSw0NTIsNDUzLDQ1NCw0NTUsNDU2LDQ1Nyw0NTgsNDU5LDQ2MCw0NjEsNDYyLDQ2Myw0NjQsNDY1LDQ2Niw0NjcsNDY4LDQ2OSw0NzAsNDcxLDQ3Miw0NzMsNDc0LDQ3NSw0NzYsNDc3LDQ3OCw0NzksNDgwLDQ4MSw0ODIsNDgzLDQ4NCw0ODUsNDg2LDQ4Nyw0ODgsNDg5LDQ5MCw0OTEsNDkyLDQ5Myw0OTQsNDk1LDQ5Niw0OTcsNDk4LDQ5OSw1MDAsNTAxLDUwMiw1MDMsNTA0LDUwNSw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MTIsNTEzLDUxNCw1MTUsNTE2LDUxNyw1MTgsNTE5LDUyMCw1MjEsNTIyLDUyMyw1MjQsNTI1LDUyNiw1MjcsNTI4LDUyOSw1MzAsNTMxLDUzMiw1MzMsNTM0LDUzNSw1MzYsNTM3LDUzOCw1MzksNTQwLDU0MSw1NDIsNTQzLDU0NCw1NDUsNTQ2LDU0Nyw1NDgsNTQ5LDU1MCw1NTEsNTUyLDU1Myw1NTQsNTU1LDU1Niw1NTcsNTU4LDU1OSw1NjAsNTYxLDU2Miw1NjMsNTY0LDU2NSw1NjYsNTY3LDU2OCw1NjksNTcwLDU3MSw1NzIsNTczLDU3NCw1NzUsNTc2LDU3Nyw1NzgsNTc5LDU4MCw1ODEsNTgyLDU4Myw1ODQsNTg1LDU4Niw1ODcsNTg4LDU4OSw1OTAsNTkxLDU5Miw1OTMsNTk0LDU5NSw1OTYsNTk3LDU5OCw1OTksNjAwLDYwMSw2MDIsNjAzLDYwNCw2MDUsNjA2LDYwNyw2MDgsNjA5LDYxMCw2MTEsNjEyLDYxMyw2MTQsNjE1LDYxNiw2MTcsNjE4LDYxOSw2MjAsNjIxLDYyMiw2MjMsNjI0LDYyNSw2MjYsNjI3LDYyOCw2MjksNjMwLDYzMSw2MzIsNjMzLDYzNCw2MzUsNjM2LDYzNyw2MzgsNjM5LDY0MCw2NDEsNjQyLDY0Myw2NDQsNjQ1LDY0Niw2NDcsNjQ4LDY0OSw2NTAsNjUxLDY1Miw2NTMsNjU0LDY1NSw2NTYsNjU3LDY1OCw2NTksNjYwLDY2MSw2NjIsNjYzLDY2NCw2NjUsNjY2LDY2Nyw2NjgsNjY5LDY3MCw2NzEsNjcyLDY3Myw2NzQsNjc1LDY3Niw2NzcsNjc4LDY3OSw2ODAsNjgxLDY4Miw2ODMsNjg0LDY4NSw2ODYsNjg3LDY4OCw2ODksNjkwLDY5MSw2OTIsNjkzLDY5NCw2OTUsNjk2LDY5Nyw2OTgsNjk5LDcwMCw3MDEsNzAyLDcwMyw3MDQsNzA1LDcwNiw3MDcsNzA4LDcwOSw3MTAsNzExLDcxMiw3MTMsNzE0LDcxNSw3MTYsNzE3LDcxOCw3MTksNzIwLDcyMSw3MjIsNzIzLDcyNCw3MjUsNzI2LDcyNyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw3MzQsNzM1LDczNiw3MzcsNzM4LDczOSw3NDAsNzQxLDc0Miw3NDMsNzQ0LDc0NSw3NDYsNzQ3LDc0OCw3NDksNzUwLDc1MSw3NTIsNzUzLDc1NCw3NTUsNzU2LDc1Nyw3NTgsNzU5LDc2MCw3NjEsNzYyLDc2Myw3NjQsNzY1LDc2Niw3NjcsNzY4LDc2OSw3NzAsNzcxLDc3Miw3NzMsNzc0LDc3NSw3NzYsNzc3LDc3OCw3NzksNzgwLDc4MSw3ODIsNzgzLDc4NCw3ODUsNzg2LDc4Nyw3ODgsNzg5LDc5MCw3OTEsNzkyLDc5Myw3OTQsNzk1LDc5Niw3OTcsNzk4LDc5OSw4MDAsODAxLDgwMiw4MDMsODA0LDgwNSw4MDYsODEyLDgxMyw4MTQsODE1LDgxNiw4MTcsODE4LDgxOSw4MjAsODIxLDgyMiw4MjMsODI0LDgyNSw4MjYsODI3LDgyOCw4MjksODMwLDgzMSw4MzIsODMzLDgzNCw4MzUsODM2LDgzNyw4MzgsODM5LDg0MCw4NDEsODQyLDg0Myw4NDQsODQ1LDg0Niw4NDcsODQ4LDg0OSw4NTAsODUxLDg1Miw4NTMsODU0LDg1NSw4NTYsODc2LDg3Nyw4NzgsODc5LDg4Miw4OTUsODk2XX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVmbGVjdC1tZXRhZGF0YUAwLjIuMi9ub2RlX21vZHVsZXMvcmVmbGVjdC1tZXRhZGF0YS9SZWZsZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdEAxOC4zLjEvbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3RAMTguMy4xL25vZGVfbW9kdWxlcy9yZWFjdC9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3RAMTguMy4xL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0QDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3V0aWxzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3NFcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL251bGwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b0Zvcm1EYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvQXhpb3NVUkxTZWFyY2hQYXJhbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9idWlsZFVSTC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL1VSTFNlYXJjaFBhcmFtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9wbGF0Zm9ybS9icm93c2VyL2NsYXNzZXMvRm9ybURhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL0Jsb2IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9wbGF0Zm9ybS9jb21tb24vdXRpbHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b1VSTEVuY29kZWRGb3JtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvZm9ybURhdGFUb0pTT04uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZUhlYWRlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvc0hlYWRlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS90cmFuc2Zvcm1EYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3NldHRsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlUHJvdG9jb2wuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcGVlZG9tZXRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3Rocm90dGxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcHJvZ3Jlc3NFdmVudFJlZHVjZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc1VSTFNhbWVPcmlnaW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL21lcmdlQ29uZmlnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcmVzb2x2ZUNvbmZpZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9hZGFwdGVycy94aHIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21wb3NlU2lnbmFscy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3RyYWNrU3RyZWFtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL2ZldGNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL2FkYXB0ZXJzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2Vudi9kYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvc3ByZWFkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvSHR0cFN0YXR1c0NvZGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlLW5lb0A1LjEuMC9ub2RlX21vZHVsZXMvdHN5cmluZ2UtbmVvL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy90b2tlbi50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc2NoZWR1bGVyQDAuMjMuMi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3NjaGVkdWxlckAwLjIzLjIvbm9kZV9tb2R1bGVzL3NjaGVkdWxlci9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtZG9tQDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWRvbUAxOC4zLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtZG9tQDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2NsaWVudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGViYXkrbmljZS1tb2RhbC1yZWFjdEAxLjIuMTMvbm9kZV9tb2R1bGVzL0BlYmF5L25pY2UtbW9kYWwtcmVhY3QvbGliL2VzbS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvc2hvcC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcHJvcC10eXBlc0AxNS44LjEvbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9wcm9wLXR5cGVzQDE1LjguMS9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3Byb3AtdHlwZXNAMTUuOC4xL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlMaWtlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L3VzZVN0YXRlTWFuYWdlci03ZTFlODQ4OS5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRob3V0SG9sZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbitzaGVldEAxLjQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vc2hlZXQvZGlzdC9lbW90aW9uLXNoZWV0LmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMi4wL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL0VudW0uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjIuMC9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9VdGlsaXR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVG9rZW5pemVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvUGFyc2VyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvU2VyaWFsaXplci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMi4wL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL01pZGRsZXdhcmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3dlYWstbWVtb2l6ZUAwLjQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vd2Vhay1tZW1vaXplL2Rpc3QvZW1vdGlvbi13ZWFrLW1lbW9pemUuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbittZW1vaXplQDAuOS4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9tZW1vaXplL2Rpc3QvZW1vdGlvbi1tZW1vaXplLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rY2FjaGVAMTEuMTQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vY2FjaGUvZGlzdC9lbW90aW9uLWNhY2hlLmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pc0AxNi4xMy4xL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWlzQDE2LjEzLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9ob2lzdC1ub24tcmVhY3Qtc3RhdGljc0AzLjMuMi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvZGlzdC9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy5janMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3JlYWN0QDExLjE0LjAvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rdXRpbHNAMS40LjIvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3V0aWxzL2Rpc3QvZW1vdGlvbi11dGlscy5icm93c2VyLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24raGFzaEAwLjkuMi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vaGFzaC9kaXN0L2Vtb3Rpb24taGFzaC5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3VuaXRsZXNzQDAuMTAuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdW5pdGxlc3MvZGlzdC9lbW90aW9uLXVuaXRsZXNzLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rc2VyaWFsaXplQDEuMy4zL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9zZXJpYWxpemUvZGlzdC9lbW90aW9uLXNlcmlhbGl6ZS5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzQDEuMi4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcy9kaXN0L2Vtb3Rpb24tdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MuYnJvd3Nlci5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3JlYWN0QDExLjE0LjAvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L2Rpc3QvZW1vdGlvbi1lbGVtZW50LWYwZGU5NjhlLmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbityZWFjdEAxMS4xNC4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9yZWFjdC9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdGFnZ2VkVGVtcGxhdGVMaXRlcmFsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdEAxOS4wLjAvbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdEAxOS4wLjAvbm9kZV9tb2R1bGVzL3JlYWN0L2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1kb21AMTkuMC4wL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1kb21AMTkuMC4wL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BmbG9hdGluZy11aSt1dGlsc0AwLjIuOC9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrY29yZUAxLjYuNi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGZsb2F0aW5nLXVpK3V0aWxzQDAuMi44L25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5kb20ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrZG9tQDEuNi4xMi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3RAMS4yLjAvbm9kZV9tb2R1bGVzL3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QvZGlzdC91c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0LmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L2luZGV4LTY0MWVlNWI4LmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbWVtb2l6ZS1vbmVANi4wLjAvbm9kZV9tb2R1bGVzL21lbW9pemUtb25lL2Rpc3QvbWVtb2l6ZS1vbmUuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L1NlbGVjdC1hYWIwMjdmMy5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvcmVhY3Qtc2VsZWN0LmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHZ0YWl0cyt1c2UtbGF6eS1yZWZAMC4xLjMvbm9kZV9tb2R1bGVzL0B2dGFpdHMvdXNlLWxhenktcmVmL2Rpc3QvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3VzZS1pcy1tb3VudGVkLXJlZkAxLjUuMC9ub2RlX21vZHVsZXMvdXNlLWlzLW1vdW50ZWQtcmVmL2Rpc3QvdXNlLWlzLW1vdW50ZWQtcmVmLmVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91c2UtbGF0ZXN0QDEuMy4wL25vZGVfbW9kdWxlcy91c2UtbGF0ZXN0L2Rpc3QvdXNlLWxhdGVzdC5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2tydXN0eWtyYWJAMS4xLjAvbm9kZV9tb2R1bGVzL2tydXN0eWtyYWIvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3NsZWVwLXByb21pc2VAOS4xLjAvbm9kZV9tb2R1bGVzL3NsZWVwLXByb21pc2UvYnVpbGQvZXNtLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHNlem5hbStjb21wb3NlLXJlYWN0LXJlZnNAMS4wLjYvbm9kZV9tb2R1bGVzL0BzZXpuYW0vY29tcG9zZS1yZWFjdC1yZWZzL2NvbXBvc2VSZWZzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVAMC43Ljcvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZS9kaXN0L2VzbS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvY29udGFjdC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvY29udGFjdC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdXVpZEAxMS4wLjMvbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9zdHJpbmdpZnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3V1aWRAMTEuMC4zL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvcm5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91dWlkQDExLjAuMy9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL25hdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdXVpZEAxMS4wLjMvbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92NC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvYWNjb3VudC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvYWRkcmVzcy50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvcHJvZHVjdC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvcHJpY2UudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL3Bvcy50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvcGF5bWVudC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvc2hpcHBpbmcudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL29yZGVyLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c2xpYkAyLjguMS9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9pc0Z1bmN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL2NyZWF0ZUVycm9yQ2xhc3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvVW5zdWJzY3JpcHRpb25FcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9hcnJSZW1vdmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL1N1YnNjcmlwdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvY29uZmlnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9zY2hlZHVsZXIvdGltZW91dFByb3ZpZGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL3JlcG9ydFVuaGFuZGxlZEVycm9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL25vb3AuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvZXJyb3JDb250ZXh0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9TdWJzY3JpYmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9zeW1ib2wvb2JzZXJ2YWJsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9pZGVudGl0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9waXBlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9PYnNlcnZhYmxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL2xpZnQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL29wZXJhdG9ycy9PcGVyYXRvclN1YnNjcmliZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL1N1YmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL0JlaGF2aW9yU3ViamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc2NoZWR1bGVyL2RhdGVUaW1lc3RhbXBQcm92aWRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc2NoZWR1bGVyL0FjdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc2NoZWR1bGVyL2ludGVydmFsUHJvdmlkZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3NjaGVkdWxlci9Bc3luY0FjdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvU2NoZWR1bGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9zY2hlZHVsZXIvQXN5bmNTY2hlZHVsZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3NjaGVkdWxlci9hc3luYy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvb3BlcmF0b3JzL2RlYm91bmNlVGltZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc3RhdGUvb3JkZXIudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3ByZWFjdEAxMC4yNS4zL25vZGVfbW9kdWxlcy9wcmVhY3QvZGlzdC9wcmVhY3QubW9kdWxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pY29uc0A1LjIuMS9ub2RlX21vZHVsZXMvcmVhY3QtaWNvbnMvbGliL2ljb25Db250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtaWNvbnNANS4yLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL2xpYi9pY29uQmFzZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWljb25zQDUuMi4xL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9oaS9pbmRleC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RhaWx3aW5kLW1lcmdlQDIuNC4wL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9kaXN0L2J1bmRsZS1tanMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2hlbHBlcnMvaXMtb2JqZWN0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9oZWxwZXJzL2Nsb25lLWRlZXAubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQWNjb3JkaW9uL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0FsZXJ0L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0F2YXRhci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CYWRnZS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CbG9ja3F1b3RlL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0JyZWFkY3J1bWIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQnV0dG9uL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0NhcmQvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2Fyb3VzZWwvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2hlY2tib3gvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2xpcGJvYXJkL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhcmtUaGVtZVRvZ2dsZS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXRlcGlja2VyL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RyYXdlci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ecm9wZG93bi90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9GaWxlSW5wdXQvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRmxvYXRpbmdMYWJlbC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Gb290ZXIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSGVscGVyVGV4dC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IUi90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9LYmQvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTGFiZWwvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTGlzdC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9MaXN0R3JvdXAvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTmF2YmFyL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01lZ2FNZW51L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01vZGFsL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1BhZ2luYXRpb24vdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUG9wb3Zlci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Qcm9ncmVzcy90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYWRpby90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYW5nZVNsaWRlci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYXRpbmcvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2VsZWN0L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NpZGViYXIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU3Bpbm5lci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJzL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RleHRhcmVhL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RleHRJbnB1dC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub2FzdC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub2dnbGVTd2l0Y2gvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVG9vbHRpcC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0FjY29yZGlvbi9BY2NvcmRpb25QYW5lbENvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQWNjb3JkaW9uL0FjY29yZGlvbkNvbnRlbnQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQWNjb3JkaW9uL0FjY29yZGlvblBhbmVsLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0FjY29yZGlvbi9BY2NvcmRpb25UaXRsZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BY2NvcmRpb24vQWNjb3JkaW9uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0F2YXRhci9BdmF0YXJHcm91cC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BdmF0YXIvQXZhdGFyR3JvdXBDb3VudGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0F2YXRhci9BdmF0YXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQmFkZ2UvQmFkZ2UubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0J1dHRvbi9CdXR0b25CYXNlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0J1dHRvbi9CdXR0b25Hcm91cC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CdXR0b24vQnV0dG9uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Jhbm5lci9CYW5uZXJDb2xsYXBzZUJ1dHRvbi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CYW5uZXIvQmFubmVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0JyZWFkY3J1bWIvQnJlYWRjcnVtYkl0ZW0ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQnJlYWRjcnVtYi9CcmVhZGNydW1iLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vY2xhc3NuYW1lc0AyLjUuMS9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZGVib3VuY2VAMi4xLjAvbm9kZV9tb2R1bGVzL2RlYm91bmNlL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2hlbHBlcnMvZHJhZy1zY3JvbGwvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2hlY2tib3gvQ2hlY2tib3gubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrcmVhY3RAMC4yNi4yMS9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3JlYWN0L2Rpc3QvZmxvYXRpbmctdWkucmVhY3QudXRpbHMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90YWJiYWJsZUA2LjIuMC9ub2RlX21vZHVsZXMvdGFiYmFibGUvZGlzdC9pbmRleC5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BmbG9hdGluZy11aStyZWFjdC1kb21AMi4xLjIvbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9yZWFjdC1kb20vZGlzdC9mbG9hdGluZy11aS5yZWFjdC1kb20ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrcmVhY3RAMC4yNi4yMS9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3JlYWN0L2Rpc3QvZmxvYXRpbmctdWkucmVhY3QubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRmxvYXRpbmcvaGVscGVycy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vaG9va3MvdXNlLWZsb2F0aW5nLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zsb2F0aW5nL0Zsb2F0aW5nLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1Rvb2x0aXAvVG9vbHRpcC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWljb25zQDUuMi4xL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9mYTYvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2xpcGJvYXJkL2hlbHBlcnMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2xpcGJvYXJkL0NsaXBib2FyZFdpdGhJY29uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0NsaXBib2FyZC9DbGlwYm9hcmRXaXRoSWNvblRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2xpcGJvYXJkL0NsaXBib2FyZC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IZWxwZXJUZXh0L0hlbHBlclRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGV4dElucHV0L1RleHRJbnB1dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXRlcGlja2VyL0RhdGVwaWNrZXJDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhdGVwaWNrZXIvaGVscGVycy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXRlcGlja2VyL1ZpZXdzL0RheXMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRGF0ZXBpY2tlci9WaWV3cy9EZWNhZGVzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhdGVwaWNrZXIvVmlld3MvTW9udGhzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhdGVwaWNrZXIvVmlld3MvWWVhcnMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRGF0ZXBpY2tlci9EYXRlcGlja2VyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RyYXdlci9EcmF3ZXJDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtaWNvbnNANS4yLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL21kL2luZGV4Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RyYXdlci9EcmF3ZXJIZWFkZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJhd2VyL0RyYXdlckl0ZW1zLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RyYXdlci9EcmF3ZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd25Db250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duRGl2aWRlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bkhlYWRlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bkl0ZW0ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRmlsZUlucHV0L0ZpbGVJbnB1dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9GbG9hdGluZ0xhYmVsL0Zsb2F0aW5nTGFiZWwubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3RlckJyYW5kLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zvb3Rlci9Gb290ZXJDb3B5cmlnaHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3RlckRpdmlkZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3Rlckljb24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3RlckxpbmsubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3RlckxpbmtHcm91cC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Gb290ZXIvRm9vdGVyVGl0bGUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3Rlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IUi9IUkljb24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSFIvSFJTcXVhcmUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSFIvSFJUZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0hSL0hSVHJpbW1lZC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IUi9IUi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9MaXN0L0xpc3RJdGVtLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0xpc3QvTGlzdC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9MaXN0R3JvdXAvTGlzdEdyb3VwSXRlbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9MaXN0R3JvdXAvTGlzdEdyb3VwLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL05hdmJhci9OYXZiYXJDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL05hdmJhci9OYXZiYXJCcmFuZC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9OYXZiYXIvTmF2YmFyQ29sbGFwc2UubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTmF2YmFyL05hdmJhckxpbmsubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pY29uc0A1LjIuMS9ub2RlX21vZHVsZXMvcmVhY3QtaWNvbnMvZmEvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTmF2YmFyL05hdmJhclRvZ2dsZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9OYXZiYXIvTmF2YmFyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01lZ2FNZW51L01lZ2FNZW51RHJvcGRvd24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTWVnYU1lbnUvTWVnYU1lbnVEcm9wZG93blRvZ2dsZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9NZWdhTWVudS9NZWdhTWVudS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Nb2RhbC9Nb2RhbENvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTW9kYWwvTW9kYWxCb2R5Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01vZGFsL01vZGFsRm9vdGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01vZGFsL01vZGFsSGVhZGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01vZGFsL01vZGFsLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1BhZ2luYXRpb24vaGVscGVycy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9QYWdpbmF0aW9uL1BhZ2luYXRpb25CdXR0b24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUGFnaW5hdGlvbi9QYWdpbmF0aW9uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhZGlvL1JhZGlvLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhbmdlU2xpZGVyL1JhbmdlU2xpZGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhdGluZy9SYXRpbmdBZHZhbmNlZC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYXRpbmcvUmF0aW5nQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYXRpbmcvUmF0aW5nU3Rhci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYXRpbmcvUmF0aW5nLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NlbGVjdC9TZWxlY3QubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFyQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJJdGVtQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJDb2xsYXBzZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJDVEEubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFySXRlbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJJdGVtR3JvdXAubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFySXRlbXMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFyTG9nby5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvVGFibGVCb2R5Q29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZUNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvVGFibGVCb2R5Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlQ2VsbC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZUhlYWRDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlSGVhZC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZUhlYWRDZWxsLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlUm93Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYnMvVGFiSXRlbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJzL1RhYnMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGV4dGFyZWEvVGV4dGFyZWEubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVDb250ZW50Q29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZUJvZHkubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lSXRlbUNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVDb250ZW50Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lSXRlbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZVBvaW50Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lVGltZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZVRpdGxlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RvYXN0L1RvYXN0Q29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub2FzdC9Ub2FzdFRvZ2dsZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub2FzdC9Ub2FzdC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub2dnbGVTd2l0Y2gvVG9nZ2xlU3dpdGNoLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9iYXNlL0J1dHRvbi50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2lzT2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9hbGxvd0FkZGl0aW9uYWxJdGVtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvYXNOdW1iZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2NvbnN0YW50cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0VWlPcHRpb25zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9jYW5FeHBhbmQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Jvb3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N5bWJvbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UmF3VGFnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldFRhZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlckFyZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UHJvdG90eXBlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1BsYWluT2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9jcmVhdGVFcnJvckhhbmRsZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUNsZWFyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NvY0luZGV4T2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZURlbGV0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlR2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZVNldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fTGlzdENhY2hlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0NsZWFyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0RlbGV0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tHZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrSGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcmVKc0RhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzTWFza2VkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUNyZWF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaENsZWFyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoRGVsZXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoR2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoSGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19IYXNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUNsZWFyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hcERhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlRGVsZXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVIYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tTZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N0YWNrLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUFkZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVIYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldENhY2hlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NhY2hlSGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEFycmF5cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fVWludDhBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxCeVRhZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlQdXNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRBbGxLZXlzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUZpbHRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJGYWxzZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0J1ZmZlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuYXJ5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19ub2RlVXRpbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1R5cGVkQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TGlrZUtleXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0RhdGFWaWV3LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1dlYWtNYXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFRhZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWxEZWVwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VxdWFsV2l0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZGVlcEVxdWFscy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N5bWJvbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVtb2l6ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWVtb2l6ZUNhcHBlZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9QYXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheU1hcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRvU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0UGF0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9LZXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRW1wdHkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb25wb2ludGVyQDUuMC4xL25vZGVfbW9kdWxlcy9qc29ucG9pbnRlci9qc29ucG9pbnRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlFYWNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnblZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weU9iamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5c0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5c0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXNJbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnbkluLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUJ1ZmZlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weUFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9scy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0U3ltYm9sc0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9sc0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzSW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVJlZ0V4cC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVTeW1ib2wuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lQnlUYWcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VDcmVhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZU9iamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTWFwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTWFwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNTZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VDbG9uZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9sYXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2xpY2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3BhcmVudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuc2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jdXN0b21PbWl0Q2xvbmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzRmxhdHRlbmFibGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2ZsYXR0ZW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FwcGx5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyUmVzdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9jb25zdGFudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pZGVudGl0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNldFRvU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zaG9ydE91dC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9TdHJpbmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZsYXRSZXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL29taXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2ZpbmRTY2hlbWFEZWZpbml0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNQYXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2hhcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc051bWJlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N0cmluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlSZWR1Y2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUJhc2VGb3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3JPd24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUJhc2VFYWNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRWFjaC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTWF0Y2guanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzU3RyaWN0Q29tcGFyYWJsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWF0Y2hEYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VIYXNJbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9oYXNJbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXNQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHlEZWVwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3Byb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXRlcmF0ZWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSZWR1Y2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvcmVkdWNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0RnVuY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RyaW1tZWRFbmRJbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRyaW0uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9GaW5pdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9JbnRlZ2VyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RpbWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9nZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9nZXRNYXRjaGluZ09wdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL2dldEZpcnN0TWF0Y2hpbmdPcHRpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNFcXVhbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9zZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdHJhbnNmb3JtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlT2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zYWZlR2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGxhaW5PYmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNZXJnZURlZXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNZXJnZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVJlc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSXRlcmF0ZWVDYWxsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9tZXJnZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9mbGF0dGVuRGVlcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZpbmRJbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmFOLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpY3RJbmRleE9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSW5kZXhPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlc1dpdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvbm9vcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5pcS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC91bmlxLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2Nsb25lRGVlcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNvcnRCeS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29tcGFyZUFzY2VuZGluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29tcGFyZU11bHRpcGxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlT3JkZXJCeS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9zb3J0QnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdW5pcVdpdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVmYXVsdHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJbnRlcnNlY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nhc3RBcnJheUxpa2VPYmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaW50ZXJzZWN0aW9uV2l0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Jvb2xlYW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb24tc2NoZW1hLWNvbXBhcmVAMC4yLjIvbm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLWNvbXBhcmUvc3JjL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby92YWxpZGF0ZS5pby1hcnJheUAxLjAuNi9ub2RlX21vZHVsZXMvdmFsaWRhdGUuaW8tYXJyYXkvbGliL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby92YWxpZGF0ZS5pby1udW1iZXJAMS4wLjMvbm9kZV9tb2R1bGVzL3ZhbGlkYXRlLmlvLW51bWJlci9saWIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3ZhbGlkYXRlLmlvLWludGVnZXJAMS4wLjUvbm9kZV9tb2R1bGVzL3ZhbGlkYXRlLmlvLWludGVnZXIvbGliL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby92YWxpZGF0ZS5pby1pbnRlZ2VyLWFycmF5QDEuMC4wL25vZGVfbW9kdWxlcy92YWxpZGF0ZS5pby1pbnRlZ2VyLWFycmF5L2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdmFsaWRhdGUuaW8tZnVuY3Rpb25AMS4wLjIvbm9kZV9tb2R1bGVzL3ZhbGlkYXRlLmlvLWZ1bmN0aW9uL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vY29tcHV0ZS1nY2RAMS4yLjEvbm9kZV9tb2R1bGVzL2NvbXB1dGUtZ2NkL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vY29tcHV0ZS1sY21AMS4xLjIvbm9kZV9tb2R1bGVzL2NvbXB1dGUtbGNtL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3VzdG9tRGVmYXVsdHNNZXJnZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9tZXJnZVdpdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVmYXVsdHNEZWVwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2ludGVyc2VjdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUluZGV4T2ZXaXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHVsbEFsbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9wdWxsQWxsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2ZvckVhY2guanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VEaWZmZXJlbmNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3dpdGhvdXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mQDAuOC4xL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZi9zcmMvY29tbW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZkAwLjguMS9ub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2Yvc3JjL2NvbXBsZXgtcmVzb2x2ZXJzL3Byb3BlcnRpZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mQDAuOC4xL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZi9zcmMvY29tcGxleC1yZXNvbHZlcnMvaXRlbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mQDAuOC4xL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZi9zcmMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2d1ZXNzVHlwZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC91bmlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0U2NoZW1hVHlwZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvbWVyZ2VTY2hlbWFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvcmV0cmlldmVTY2hlbWEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9nZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2lzRml4ZWRJdGVtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvbWVyZ2VPYmplY3RzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9pc0NvbnN0YW50LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvaXNTZWxlY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9pc011bHRpU2VsZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvZ2V0RGVmYXVsdEZvcm1TdGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvaXNDdXN0b21XaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9pc0ZpbGVzQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9nZXREaXNwbGF5TGFiZWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9tZXJnZVZhbGlkYXRpb25EYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvdG9JZFNjaGVtYS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL3RvUGF0aFNjaGVtYS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvY3JlYXRlU2NoZW1hVXRpbHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2RhdGFVUkl0b0Jsb2IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3BhZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZGF0ZVJhbmdlT3B0aW9ucy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvcmVwbGFjZVN0cmluZ1BhcmFtZXRlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2VuZ2xpc2hTdHJpbmdUcmFuc2xhdG9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9lbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2VudW1PcHRpb25zRGVzZWxlY3RWYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZW51bU9wdGlvbnNJc1NlbGVjdGVkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9lbnVtT3B0aW9uc0luZGV4Rm9yVmFsdWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNOaWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2VudW1PcHRpb25zU2VsZWN0VmFsdWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvc2V0V2l0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvRXJyb3JTY2hlbWFCdWlsZGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9nZXREYXRlRWxlbWVudFByb3BzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9yYW5nZVNwZWMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldElucHV0UHJvcHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldFN1Ym1pdEJ1dHRvbk9wdGlvbnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldFRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pc0AxOC4zLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtaXNAMTguMy4xL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0V2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9oYXNXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2lkR2VuZXJhdG9ycy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvbGFiZWxWYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvbG9jYWxUb1VUQy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvdG9Db25zdGFudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvb3B0aW9uc0xpc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL29yZGVyUHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvcGFyc2VEYXRlU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWFSZXF1aXJlc1RydWVWYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2hvdWxkUmVuZGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi90b0RhdGVTdHJpbmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3RvRXJyb3JMaXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGF0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvdG9FcnJvclNjaGVtYS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvdW53cmFwRXJyb3JIYW5kbGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi91dGNUb0xvY2FsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi92YWxpZGF0aW9uRGF0YU1lcmdlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi93aXRoSWRSZWZQcmVmaXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2VudW1zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91cmktanNANC40LjEvbm9kZV9tb2R1bGVzL3VyaS1qcy9kaXN0L2VzNS91cmkuYWxsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mYXN0LWRlZXAtZXF1YWxAMy4xLjMvbm9kZV9tb2R1bGVzL2Zhc3QtZGVlcC1lcXVhbC9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3VjczJsZW5ndGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS91dGlsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvc2NoZW1hX29iai5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vanNvbi1zY2hlbWEtdHJhdmVyc2VAMC40LjEvbm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXRyYXZlcnNlL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvcmVzb2x2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL2Vycm9yX2NsYXNzZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zhc3QtanNvbi1zdGFibGUtc3RyaW5naWZ5QDIuMS4wL25vZGVfbW9kdWxlcy9mYXN0LWpzb24tc3RhYmxlLXN0cmluZ2lmeS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy92YWxpZGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NhY2hlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvZm9ybWF0cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9yZWYuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvYWxsT2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvYW55T2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvY29tbWVudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9jb25zdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9jb250YWlucy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9kZXBlbmRlbmNpZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvZW51bS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9mb3JtYXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvaWYuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvaXRlbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvX2xpbWl0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL19saW1pdEl0ZW1zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL19saW1pdExlbmd0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9fbGltaXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL211bHRpcGxlT2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvbm90LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL29uZU9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL3BhdHRlcm4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvcHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9wcm9wZXJ0eU5hbWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL3JlcXVpcmVkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL3VuaXF1ZUl0ZW1zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvcnVsZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZGF0YS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL2FzeW5jLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2N1c3RvbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kZWZpbml0aW9uX3NjaGVtYS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9rZXl3b3JkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2Fqdi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdmFsaWRhdG9yLWFqdjZANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi92YWxpZGF0b3ItYWp2Ni9saWIvY3JlYXRlQWp2SW5zdGFuY2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3ZhbGlkYXRvci1hanY2QDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdmFsaWRhdG9yLWFqdjYvbGliL3ZhbGlkYXRvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdmFsaWRhdG9yLWFqdjZANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi92YWxpZGF0b3ItYWp2Ni9saWIvY3VzdG9taXplVmFsaWRhdG9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit2YWxpZGF0b3ItYWp2NkA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3ZhbGlkYXRvci1hanY2L2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2tCeS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2suanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvcGljay5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbmFub2lkQDMuMy44L25vZGVfbW9kdWxlcy9uYW5vaWQvaW5kZXguYnJvd3Nlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvZmllbGRzL0FycmF5RmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9Cb29sZWFuRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9NdWx0aVNjaGVtYUZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvTnVtYmVyRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL21hcmtkb3duLXRvLWpzeEA3LjcuMi9ub2RlX21vZHVsZXMvbWFya2Rvd24tdG8tanN4L2Rpc3QvaW5kZXgubW9kZXJuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3Vuc2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvT2JqZWN0RmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9TY2hlbWFGaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvZmllbGRzL1N0cmluZ0ZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvTnVsbEZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9BcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0FycmF5RmllbGRJdGVtVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9BcnJheUZpZWxkVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9BcnJheUZpZWxkVGl0bGVUZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0Jhc2VJbnB1dFRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvQnV0dG9uVGVtcGxhdGVzL1N1Ym1pdEJ1dHRvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0J1dHRvblRlbXBsYXRlcy9JY29uQnV0dG9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvQnV0dG9uVGVtcGxhdGVzL0FkZEJ1dHRvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0J1dHRvblRlbXBsYXRlcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0Rlc2NyaXB0aW9uRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9FcnJvckxpc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9GaWVsZFRlbXBsYXRlL0xhYmVsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvRmllbGRUZW1wbGF0ZS9GaWVsZFRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvRmllbGRFcnJvclRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvRmllbGRIZWxwVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9PYmplY3RGaWVsZFRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvVGl0bGVGaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL1Vuc3VwcG9ydGVkRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9XcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9BbHREYXRlV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0FsdERhdGVUaW1lV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0NoZWNrYm94V2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0NoZWNrYm94ZXNXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvQ29sb3JXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvRGF0ZVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9EYXRlVGltZVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9FbWFpbFdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9GaWxlV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0hpZGRlbldpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9QYXNzd29yZFdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9SYWRpb1dpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9SYW5nZVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9TZWxlY3RXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvVGV4dGFyZWFXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvVGV4dFdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9UaW1lV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL1VSTFdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9VcERvd25XaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9nZXREZWZhdWx0UmVnaXN0cnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL0Zvcm0uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL2NvdW50cnkudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL2NvdW50cnkudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9Db250YWN0TW9kYWwudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9hZGRyZXNzLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NvbnRhY3QvQ29udGFjdE1vZGFsQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdHNsaWJAMi42LjIvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjMuMi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9FbnVtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4zLjIvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVXRpbGl0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMy4yL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1Rva2VuaXplci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMy4yL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1BhcnNlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMy4yL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1ByZWZpeGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4zLjIvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvU2VyaWFsaXplci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMy4yL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL01pZGRsZXdhcmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3VuaXRsZXNzQDAuOC4xL25vZGVfbW9kdWxlcy9AZW1vdGlvbi91bml0bGVzcy9kaXN0L2Vtb3Rpb24tdW5pdGxlc3MuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsZWQtY29tcG9uZW50c0A2LjEuMTMvbm9kZV9tb2R1bGVzL3N0eWxlZC1jb21wb25lbnRzL2Rpc3Qvc3R5bGVkLWNvbXBvbmVudHMuYnJvd3Nlci5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1ByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhIb2xlcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlMaWtlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVSZXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC91c2VTdGF0ZU1hbmFnZXItY2UyMzA2MWMuY2pzLnByb2QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NldFByb3RvdHlwZU9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVTdXBlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGZsb2F0aW5nLXVpK2RvbUAxLjYuMTIvbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20uZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L2luZGV4LTY2NWM0ZWQ4LmNqcy5wcm9kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L1NlbGVjdC0zNmQxNWY5My5janMucHJvZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC9yZWFjdC1zZWxlY3QuY2pzLnByb2QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvcmVhY3Qtc2VsZWN0LmNqcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC9yZWFjdC1zZWxlY3QuY2pzLmRlZmF1bHQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvYmFzZS9TZWxlY3RMYWJlbC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9Db250YWN0U2VsZWN0LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9jb250YWN0L0FkZHJlc3NNb2RhbC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9BZGRyZXNzTW9kYWxDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NvbnRhY3QvQWRkcmVzc0RldGFpbC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9BZGRyZXNzU2VsZWN0LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvYWNjb3VudC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9hY2NvdW50L0FjY291bnRTZWxlY3RDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NvbnRhY3QvQ29udGFjdENvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvdHlwZS9UeXBlU2VsZWN0Q29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvc2hvcC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9zaG9wL1Nob3BTZWxlY3RDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2RyYWZ0L0RyYWZ0Q29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvb3JkZXIudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvYmFzZS9DdXJyZW5jeS50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY2FsYy9DYWxjQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy90b3BiYXIvVG9wQmFyQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvcHJvZHVjdEdyb3VwLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9wcm9kdWN0Z3JvdXAudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvdXNlQXN5bmMtYmU2NTlhNTcuY2pzLnByb2QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2FzeW5jL2Rpc3QvcmVhY3Qtc2VsZWN0LWFzeW5jLmNqcy5wcm9kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9hc3luYy9kaXN0L3JlYWN0LXNlbGVjdC1hc3luYy5janMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2FzeW5jL2Rpc3QvcmVhY3Qtc2VsZWN0LWFzeW5jLmNqcy5kZWZhdWx0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Byb2R1Y3QvUHJvZHVjdEdyb3VwU2VsZWN0LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvcHJvZHVjdC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdXNlLWRlYm91bmNlQDEwLjAuNC9ub2RlX21vZHVsZXMvdXNlLWRlYm91bmNlL2Rpc3QvaW5kZXgubW9kdWxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Byb2R1Y3QvUHJvZHVjdFNlbGVjdC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvcHJvZHVjdC9Qcm9kdWN0Rm9ybS50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvcG9zaXRpb25zL0FkZFBvc2l0aW9uQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wb3NpdGlvbnMvRWRpdFBvc2l0aW9uQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wb3NpdGlvbnMvUG9zQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wb3NpdGlvbnMvSXRlbXNDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Bvc2l0aW9ucy9Qb3NpdGlvbnNDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9wYXltZW50LnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3BheW1lbnQvUGF5bWVudENvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL3NoaXBwaW5nLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3NoaXBwaW5nL1NoaXBwaW5nQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9idXR0b24vQnV0dG9uQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vY29va2llQDEuMC4yL25vZGVfbW9kdWxlcy9jb29raWUvZGlzdC9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtcm91dGVyQDcuMS4wL25vZGVfbW9kdWxlcy9yZWFjdC1yb3V0ZXIvZGlzdC9kZXZlbG9wbWVudC9jaHVuay1XM0haSkxVUS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvaW5mby9JbmZvRmllbGRDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL29yZGVyL09yZGVyQWxpYXNDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2Jhc2UvQmFzZUNvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL2FwcC9hcHAudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tYWluLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoQykgTWljcm9zb2Z0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxuV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSxcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXG5cblNlZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbnZhciBSZWZsZWN0O1xuKGZ1bmN0aW9uIChSZWZsZWN0KSB7XG4gICAgLy8gTWV0YWRhdGEgUHJvcG9zYWxcbiAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhL1xuICAgIChmdW5jdGlvbiAoZmFjdG9yeSkge1xuICAgICAgICB2YXIgcm9vdCA9IHR5cGVvZiBnbG9iYWxUaGlzID09PSBcIm9iamVjdFwiID8gZ2xvYmFsVGhpcyA6XG4gICAgICAgICAgICB0eXBlb2YgZ2xvYmFsID09PSBcIm9iamVjdFwiID8gZ2xvYmFsIDpcbiAgICAgICAgICAgICAgICB0eXBlb2Ygc2VsZiA9PT0gXCJvYmplY3RcIiA/IHNlbGYgOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcyA9PT0gXCJvYmplY3RcIiA/IHRoaXMgOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2xvcHB5TW9kZVRoaXMoKTtcbiAgICAgICAgdmFyIGV4cG9ydGVyID0gbWFrZUV4cG9ydGVyKFJlZmxlY3QpO1xuICAgICAgICBpZiAodHlwZW9mIHJvb3QuUmVmbGVjdCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgZXhwb3J0ZXIgPSBtYWtlRXhwb3J0ZXIocm9vdC5SZWZsZWN0LCBleHBvcnRlcik7XG4gICAgICAgIH1cbiAgICAgICAgZmFjdG9yeShleHBvcnRlciwgcm9vdCk7XG4gICAgICAgIGlmICh0eXBlb2Ygcm9vdC5SZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICByb290LlJlZmxlY3QgPSBSZWZsZWN0O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG1ha2VFeHBvcnRlcih0YXJnZXQsIHByZXZpb3VzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHsgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91cylcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZ1bmN0aW9uVGhpcygpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKFwicmV0dXJuIHRoaXM7XCIpKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykgeyB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaW5kaXJlY3RFdmFsVGhpcygpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh2b2lkIDAsIGV2YWwpKFwiKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSkoKVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChfKSB7IH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzbG9wcHlNb2RlVGhpcygpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvblRoaXMoKSB8fCBpbmRpcmVjdEV2YWxUaGlzKCk7XG4gICAgICAgIH1cbiAgICB9KShmdW5jdGlvbiAoZXhwb3J0ZXIsIHJvb3QpIHtcbiAgICAgICAgdmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG4gICAgICAgIC8vIGZlYXR1cmUgdGVzdCBmb3IgU3ltYm9sIHN1cHBvcnRcbiAgICAgICAgdmFyIHN1cHBvcnRzU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB2YXIgdG9QcmltaXRpdmVTeW1ib2wgPSBzdXBwb3J0c1N5bWJvbCAmJiB0eXBlb2YgU3ltYm9sLnRvUHJpbWl0aXZlICE9PSBcInVuZGVmaW5lZFwiID8gU3ltYm9sLnRvUHJpbWl0aXZlIDogXCJAQHRvUHJpbWl0aXZlXCI7XG4gICAgICAgIHZhciBpdGVyYXRvclN5bWJvbCA9IHN1cHBvcnRzU3ltYm9sICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgIT09IFwidW5kZWZpbmVkXCIgPyBTeW1ib2wuaXRlcmF0b3IgOiBcIkBAaXRlcmF0b3JcIjtcbiAgICAgICAgdmFyIHN1cHBvcnRzQ3JlYXRlID0gdHlwZW9mIE9iamVjdC5jcmVhdGUgPT09IFwiZnVuY3Rpb25cIjsgLy8gZmVhdHVyZSB0ZXN0IGZvciBPYmplY3QuY3JlYXRlIHN1cHBvcnRcbiAgICAgICAgdmFyIHN1cHBvcnRzUHJvdG8gPSB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5OyAvLyBmZWF0dXJlIHRlc3QgZm9yIF9fcHJvdG9fXyBzdXBwb3J0XG4gICAgICAgIHZhciBkb3duTGV2ZWwgPSAhc3VwcG9ydHNDcmVhdGUgJiYgIXN1cHBvcnRzUHJvdG87XG4gICAgICAgIHZhciBIYXNoTWFwID0ge1xuICAgICAgICAgICAgLy8gY3JlYXRlIGFuIG9iamVjdCBpbiBkaWN0aW9uYXJ5IG1vZGUgKGEuay5hLiBcInNsb3dcIiBtb2RlIGluIHY4KVxuICAgICAgICAgICAgY3JlYXRlOiBzdXBwb3J0c0NyZWF0ZVxuICAgICAgICAgICAgICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gTWFrZURpY3Rpb25hcnkoT2JqZWN0LmNyZWF0ZShudWxsKSk7IH1cbiAgICAgICAgICAgICAgICA6IHN1cHBvcnRzUHJvdG9cbiAgICAgICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBNYWtlRGljdGlvbmFyeSh7IF9fcHJvdG9fXzogbnVsbCB9KTsgfVxuICAgICAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1ha2VEaWN0aW9uYXJ5KHt9KTsgfSxcbiAgICAgICAgICAgIGhhczogZG93bkxldmVsXG4gICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAobWFwLCBrZXkpIHsgcmV0dXJuIGhhc093bi5jYWxsKG1hcCwga2V5KTsgfVxuICAgICAgICAgICAgICAgIDogZnVuY3Rpb24gKG1hcCwga2V5KSB7IHJldHVybiBrZXkgaW4gbWFwOyB9LFxuICAgICAgICAgICAgZ2V0OiBkb3duTGV2ZWxcbiAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gaGFzT3duLmNhbGwobWFwLCBrZXkpID8gbWFwW2tleV0gOiB1bmRlZmluZWQ7IH1cbiAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gbWFwW2tleV07IH0sXG4gICAgICAgIH07XG4gICAgICAgIC8vIExvYWQgZ2xvYmFsIG9yIHNoaW0gdmVyc2lvbnMgb2YgTWFwLCBTZXQsIGFuZCBXZWFrTWFwXG4gICAgICAgIHZhciBmdW5jdGlvblByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihGdW5jdGlvbik7XG4gICAgICAgIHZhciBfTWFwID0gdHlwZW9mIE1hcCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBNYXAucHJvdG90eXBlLmVudHJpZXMgPT09IFwiZnVuY3Rpb25cIiA/IE1hcCA6IENyZWF0ZU1hcFBvbHlmaWxsKCk7XG4gICAgICAgIHZhciBfU2V0ID0gdHlwZW9mIFNldCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTZXQucHJvdG90eXBlLmVudHJpZXMgPT09IFwiZnVuY3Rpb25cIiA/IFNldCA6IENyZWF0ZVNldFBvbHlmaWxsKCk7XG4gICAgICAgIHZhciBfV2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSBcImZ1bmN0aW9uXCIgPyBXZWFrTWFwIDogQ3JlYXRlV2Vha01hcFBvbHlmaWxsKCk7XG4gICAgICAgIHZhciByZWdpc3RyeVN5bWJvbCA9IHN1cHBvcnRzU3ltYm9sID8gU3ltYm9sLmZvcihcIkByZWZsZWN0LW1ldGFkYXRhOnJlZ2lzdHJ5XCIpIDogdW5kZWZpbmVkO1xuICAgICAgICB2YXIgbWV0YWRhdGFSZWdpc3RyeSA9IEdldE9yQ3JlYXRlTWV0YWRhdGFSZWdpc3RyeSgpO1xuICAgICAgICB2YXIgbWV0YWRhdGFQcm92aWRlciA9IENyZWF0ZU1ldGFkYXRhUHJvdmlkZXIobWV0YWRhdGFSZWdpc3RyeSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBcHBsaWVzIGEgc2V0IG9mIGRlY29yYXRvcnMgdG8gYSBwcm9wZXJ0eSBvZiBhIHRhcmdldCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSBkZWNvcmF0b3JzIEFuIGFycmF5IG9mIGRlY29yYXRvcnMuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgdG8gZGVjb3JhdGUuXG4gICAgICAgICAqIEBwYXJhbSBhdHRyaWJ1dGVzIChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSB0YXJnZXQga2V5LlxuICAgICAgICAgKiBAcmVtYXJrcyBEZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluIHJldmVyc2Ugb3JkZXIuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIEV4YW1wbGUgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIsXG4gICAgICAgICAqICAgICAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIsXG4gICAgICAgICAqICAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIikpKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgIFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9yc0FycmF5LCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIixcbiAgICAgICAgICogICAgICAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIikpKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJc0FycmF5KGRlY29yYXRvcnMpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChhdHRyaWJ1dGVzKSAmJiAhSXNVbmRlZmluZWQoYXR0cmlidXRlcykgJiYgIUlzTnVsbChhdHRyaWJ1dGVzKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmIChJc051bGwoYXR0cmlidXRlcykpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gRGVjb3JhdGVQcm9wZXJ0eShkZWNvcmF0b3JzLCB0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghSXNBcnJheShkZWNvcmF0b3JzKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNDb25zdHJ1Y3Rvcih0YXJnZXQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIERlY29yYXRlQ29uc3RydWN0b3IoZGVjb3JhdG9ycywgdGFyZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImRlY29yYXRlXCIsIGRlY29yYXRlKTtcbiAgICAgICAgLy8gNC4xLjIgUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSlcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jcmVmbGVjdC5tZXRhZGF0YVxuICAgICAgICAvKipcbiAgICAgICAgICogQSBkZWZhdWx0IG1ldGFkYXRhIGRlY29yYXRvciBmYWN0b3J5IHRoYXQgY2FuIGJlIHVzZWQgb24gYSBjbGFzcywgY2xhc3MgbWVtYmVyLCBvciBwYXJhbWV0ZXIuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBUaGUga2V5IGZvciB0aGUgbWV0YWRhdGEgZW50cnkuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YVZhbHVlIFRoZSB2YWx1ZSBmb3IgdGhlIG1ldGFkYXRhIGVudHJ5LlxuICAgICAgICAgKiBAcmV0dXJucyBBIGRlY29yYXRvciBmdW5jdGlvbi5cbiAgICAgICAgICogQHJlbWFya3NcbiAgICAgICAgICogSWYgYG1ldGFkYXRhS2V5YCBpcyBhbHJlYWR5IGRlZmluZWQgZm9yIHRoZSB0YXJnZXQgYW5kIHRhcmdldCBrZXksIHRoZVxuICAgICAgICAgKiBtZXRhZGF0YVZhbHVlIGZvciB0aGF0IGtleSB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvciwgVHlwZVNjcmlwdCBvbmx5KVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlLCBUeXBlU2NyaXB0IG9ubHkpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgICAgIHByb3BlcnR5O1xuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZCgpIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZCgpIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGRlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkgJiYgIUlzUHJvcGVydHlLZXkocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVjb3JhdG9yO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwibWV0YWRhdGFcIiwgbWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVmaW5lIGEgdW5pcXVlIG1ldGFkYXRhIGVudHJ5IG9uIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhVmFsdWUgQSB2YWx1ZSB0aGF0IGNvbnRhaW5zIGF0dGFjaGVkIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRvIGRlZmluZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGRlY29yYXRvciBmYWN0b3J5IGFzIG1ldGFkYXRhLXByb2R1Y2luZyBhbm5vdGF0aW9uLlxuICAgICAgICAgKiAgICAgZnVuY3Rpb24gTXlBbm5vdGF0aW9uKG9wdGlvbnMpOiBEZWNvcmF0b3Ige1xuICAgICAgICAgKiAgICAgICAgIHJldHVybiAodGFyZ2V0LCBrZXk/KSA9PiBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgb3B0aW9ucywgdGFyZ2V0LCBrZXkpO1xuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZGVmaW5lTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZGVmaW5lTWV0YWRhdGFcIiwgZGVmaW5lTWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgdGFyZ2V0IG9iamVjdCBvciBpdHMgcHJvdG90eXBlIGNoYWluIGhhcyB0aGUgcHJvdmlkZWQgbWV0YWRhdGEga2V5IGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBtZXRhZGF0YSBrZXkgd2FzIGRlZmluZWQgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbjsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gaGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5SGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiaGFzTWV0YWRhdGFcIiwgaGFzTWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgdGFyZ2V0IG9iamVjdCBoYXMgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWV0YWRhdGEga2V5IHdhcyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0OyBvdGhlcndpc2UsIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBoYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJoYXNPd25NZXRhZGF0YVwiLCBoYXNPd25NZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBvbiB0aGUgdGFyZ2V0IG9iamVjdCBvciBpdHMgcHJvdG90eXBlIGNoYWluLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIFRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIG1ldGFkYXRhIGtleSBpZiBmb3VuZDsgb3RoZXJ3aXNlLCBgdW5kZWZpbmVkYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImdldE1ldGFkYXRhXCIsIGdldE1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIG1ldGFkYXRhIHZhbHVlIGZvciB0aGUgcHJvdmlkZWQgbWV0YWRhdGEga2V5IG9uIHRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIFRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIG1ldGFkYXRhIGtleSBpZiBmb3VuZDsgb3RoZXJ3aXNlLCBgdW5kZWZpbmVkYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImdldE93bk1ldGFkYXRhXCIsIGdldE93bk1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIG1ldGFkYXRhIGtleXMgZGVmaW5lZCBvbiB0aGUgdGFyZ2V0IG9iamVjdCBvciBpdHMgcHJvdG90eXBlIGNoYWluLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB1bmlxdWUgbWV0YWRhdGEga2V5cy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRNZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlNZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRNZXRhZGF0YUtleXNcIiwgZ2V0TWV0YWRhdGFLZXlzKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIHVuaXF1ZSBtZXRhZGF0YSBrZXlzIGRlZmluZWQgb24gdGhlIHRhcmdldCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHVuaXF1ZSBtZXRhZGF0YSBrZXlzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImdldE93bk1ldGFkYXRhS2V5c1wiLCBnZXRPd25NZXRhZGF0YUtleXMpO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVsZXRlcyB0aGUgbWV0YWRhdGEgZW50cnkgZnJvbSB0aGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBwcm92aWRlZCBrZXkuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBtZXRhZGF0YSBlbnRyeSB3YXMgZm91bmQgYW5kIGRlbGV0ZWQ7IG90aGVyd2lzZSwgZmFsc2UuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBkZWxldGVNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IEdldE1ldGFkYXRhUHJvdmlkZXIodGFyZ2V0LCBwcm9wZXJ0eUtleSwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQocHJvdmlkZXIpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlci5PcmRpbmFyeURlbGV0ZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImRlbGV0ZU1ldGFkYXRhXCIsIGRlbGV0ZU1ldGFkYXRhKTtcbiAgICAgICAgZnVuY3Rpb24gRGVjb3JhdGVDb25zdHJ1Y3RvcihkZWNvcmF0b3JzLCB0YXJnZXQpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRlZCA9IGRlY29yYXRvcih0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoZGVjb3JhdGVkKSAmJiAhSXNOdWxsKGRlY29yYXRlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc0NvbnN0cnVjdG9yKGRlY29yYXRlZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IGRlY29yYXRlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIERlY29yYXRlUHJvcGVydHkoZGVjb3JhdG9ycywgdGFyZ2V0LCBwcm9wZXJ0eUtleSwgZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGVjb3JhdG9yID0gZGVjb3JhdG9yc1tpXTtcbiAgICAgICAgICAgICAgICB2YXIgZGVjb3JhdGVkID0gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIGRlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoZGVjb3JhdGVkKSAmJiAhSXNOdWxsKGRlY29yYXRlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChkZWNvcmF0ZWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yID0gZGVjb3JhdGVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4xLjEgT3JkaW5hcnlIYXNNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnloYXNtZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgaGFzT3duID0gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgICAgICBpZiAoaGFzT3duKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmVudCA9IE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTyk7XG4gICAgICAgICAgICBpZiAoIUlzTnVsbChwYXJlbnQpKVxuICAgICAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4yLjEgT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnloYXNvd25tZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBHZXRNZXRhZGF0YVByb3ZpZGVyKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHByb3ZpZGVyKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gVG9Cb29sZWFuKHByb3ZpZGVyLk9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuMy4xIE9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5Z2V0bWV0YWRhdGFcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlHZXRNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkge1xuICAgICAgICAgICAgdmFyIGhhc093biA9IE9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICAgICAgICAgICAgaWYgKGhhc093bilcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgICAgICB2YXIgcGFyZW50ID0gT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmICghSXNOdWxsKHBhcmVudCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCk7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS40LjEgT3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlnZXRvd25tZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBHZXRNZXRhZGF0YVByb3ZpZGVyKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHByb3ZpZGVyKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuT3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjUuMSBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlLCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWRlZmluZW93bm1ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IEdldE1ldGFkYXRhUHJvdmlkZXIoTywgUCwgLypDcmVhdGUqLyB0cnVlKTtcbiAgICAgICAgICAgIHByb3ZpZGVyLk9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS42LjEgT3JkaW5hcnlNZXRhZGF0YUtleXMoTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnltZXRhZGF0YWtleXNcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlNZXRhZGF0YUtleXMoTywgUCkge1xuICAgICAgICAgICAgdmFyIG93bktleXMgPSBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKTtcbiAgICAgICAgICAgIHZhciBwYXJlbnQgPSBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pO1xuICAgICAgICAgICAgaWYgKHBhcmVudCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gb3duS2V5cztcbiAgICAgICAgICAgIHZhciBwYXJlbnRLZXlzID0gT3JkaW5hcnlNZXRhZGF0YUtleXMocGFyZW50LCBQKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnRLZXlzLmxlbmd0aCA8PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBvd25LZXlzO1xuICAgICAgICAgICAgaWYgKG93bktleXMubGVuZ3RoIDw9IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudEtleXM7XG4gICAgICAgICAgICB2YXIgc2V0ID0gbmV3IF9TZXQoKTtcbiAgICAgICAgICAgIHZhciBrZXlzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIG93bktleXNfMSA9IG93bktleXM7IF9pIDwgb3duS2V5c18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBvd25LZXlzXzFbX2ldO1xuICAgICAgICAgICAgICAgIHZhciBoYXNLZXkgPSBzZXQuaGFzKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBfYSA9IDAsIHBhcmVudEtleXNfMSA9IHBhcmVudEtleXM7IF9hIDwgcGFyZW50S2V5c18xLmxlbmd0aDsgX2ErKykge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBwYXJlbnRLZXlzXzFbX2FdO1xuICAgICAgICAgICAgICAgIHZhciBoYXNLZXkgPSBzZXQuaGFzKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNy4xIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5b3dubWV0YWRhdGFrZXlzXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApIHtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IEdldE1ldGFkYXRhUHJvdmlkZXIoTywgUCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIXByb3ZpZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyLk9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApO1xuICAgICAgICB9XG4gICAgICAgIC8vIDYgRUNNQVNjcmlwdCBEYXRhIFR5cGVzIGFuZCBWYWx1ZXNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1kYXRhLXR5cGVzLWFuZC12YWx1ZXNcbiAgICAgICAgZnVuY3Rpb24gVHlwZSh4KSB7XG4gICAgICAgICAgICBpZiAoeCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAvKiBOdWxsICovO1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgeCkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjogcmV0dXJuIDAgLyogVW5kZWZpbmVkICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6IHJldHVybiAyIC8qIEJvb2xlYW4gKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOiByZXR1cm4gMyAvKiBTdHJpbmcgKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcInN5bWJvbFwiOiByZXR1cm4gNCAvKiBTeW1ib2wgKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOiByZXR1cm4gNSAvKiBOdW1iZXIgKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOiByZXR1cm4geCA9PT0gbnVsbCA/IDEgLyogTnVsbCAqLyA6IDYgLyogT2JqZWN0ICovO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiA2IC8qIE9iamVjdCAqLztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuMSBUaGUgVW5kZWZpbmVkIFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcy11bmRlZmluZWQtdHlwZVxuICAgICAgICBmdW5jdGlvbiBJc1VuZGVmaW5lZCh4KSB7XG4gICAgICAgICAgICByZXR1cm4geCA9PT0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIDYuMS4yIFRoZSBOdWxsIFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcy1udWxsLXR5cGVcbiAgICAgICAgZnVuY3Rpb24gSXNOdWxsKHgpIHtcbiAgICAgICAgICAgIHJldHVybiB4ID09PSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vIDYuMS41IFRoZSBTeW1ib2wgVHlwZVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzLXN5bWJvbC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzU3ltYm9sKHgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIjtcbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuNyBUaGUgT2JqZWN0IFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LXR5cGVcbiAgICAgICAgZnVuY3Rpb24gSXNPYmplY3QoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiID8geCAhPT0gbnVsbCA6IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xIFR5cGUgQ29udmVyc2lvblxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10eXBlLWNvbnZlcnNpb25cbiAgICAgICAgLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG4gICAgICAgIGZ1bmN0aW9uIFRvUHJpbWl0aXZlKGlucHV0LCBQcmVmZXJyZWRUeXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKFR5cGUoaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwIC8qIFVuZGVmaW5lZCAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgMSAvKiBOdWxsICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSAyIC8qIEJvb2xlYW4gKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDMgLyogU3RyaW5nICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSA0IC8qIFN5bWJvbCAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgNSAvKiBOdW1iZXIgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBoaW50ID0gUHJlZmVycmVkVHlwZSA9PT0gMyAvKiBTdHJpbmcgKi8gPyBcInN0cmluZ1wiIDogUHJlZmVycmVkVHlwZSA9PT0gNSAvKiBOdW1iZXIgKi8gPyBcIm51bWJlclwiIDogXCJkZWZhdWx0XCI7XG4gICAgICAgICAgICB2YXIgZXhvdGljVG9QcmltID0gR2V0TWV0aG9kKGlucHV0LCB0b1ByaW1pdGl2ZVN5bWJvbCk7XG4gICAgICAgICAgICBpZiAoZXhvdGljVG9QcmltICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZXhvdGljVG9QcmltLmNhbGwoaW5wdXQsIGhpbnQpO1xuICAgICAgICAgICAgICAgIGlmIChJc09iamVjdChyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBoaW50ID09PSBcImRlZmF1bHRcIiA/IFwibnVtYmVyXCIgOiBoaW50KTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMS4xIE9yZGluYXJ5VG9QcmltaXRpdmUoTywgaGludClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeVRvUHJpbWl0aXZlKE8sIGhpbnQpIHtcbiAgICAgICAgICAgIGlmIChoaW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvU3RyaW5nXzEgPSBPLnRvU3RyaW5nO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHRvU3RyaW5nXzEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0b1N0cmluZ18xLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZU9mID0gTy52YWx1ZU9mO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHZhbHVlT2YpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB2YWx1ZU9mLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlT2YgPSBPLnZhbHVlT2Y7XG4gICAgICAgICAgICAgICAgaWYgKElzQ2FsbGFibGUodmFsdWVPZikpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlT2YuY2FsbChPKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHRvU3RyaW5nXzIgPSBPLnRvU3RyaW5nO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHRvU3RyaW5nXzIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0b1N0cmluZ18yLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMS4yIFRvQm9vbGVhbihhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLzIwMTYvI3NlYy10b2Jvb2xlYW5cbiAgICAgICAgZnVuY3Rpb24gVG9Cb29sZWFuKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gISFhcmd1bWVudDtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMTIgVG9TdHJpbmcoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvc3RyaW5nXG4gICAgICAgIGZ1bmN0aW9uIFRvU3RyaW5nKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIiArIGFyZ3VtZW50O1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMS4xNCBUb1Byb3BlcnR5S2V5KGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3Byb3BlcnR5a2V5XG4gICAgICAgIGZ1bmN0aW9uIFRvUHJvcGVydHlLZXkoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBUb1ByaW1pdGl2ZShhcmd1bWVudCwgMyAvKiBTdHJpbmcgKi8pO1xuICAgICAgICAgICAgaWYgKElzU3ltYm9sKGtleSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIHJldHVybiBUb1N0cmluZyhrZXkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMiBUZXN0aW5nIGFuZCBDb21wYXJpc29uIE9wZXJhdGlvbnNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdGVzdGluZy1hbmQtY29tcGFyaXNvbi1vcGVyYXRpb25zXG4gICAgICAgIC8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzYXJyYXlcbiAgICAgICAgZnVuY3Rpb24gSXNBcnJheShhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXlcbiAgICAgICAgICAgICAgICA/IEFycmF5LmlzQXJyYXkoYXJndW1lbnQpXG4gICAgICAgICAgICAgICAgOiBhcmd1bWVudCBpbnN0YW5jZW9mIE9iamVjdFxuICAgICAgICAgICAgICAgICAgICA/IGFyZ3VtZW50IGluc3RhbmNlb2YgQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpID09PSBcIltvYmplY3QgQXJyYXldXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4yLjMgSXNDYWxsYWJsZShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxuICAgICAgICBmdW5jdGlvbiBJc0NhbGxhYmxlKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gYXMgd2UgY2Fubm90IGNoZWNrIGZvciBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2QuXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4yLjQgSXNDb25zdHJ1Y3Rvcihhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNjb25zdHJ1Y3RvclxuICAgICAgICBmdW5jdGlvbiBJc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gYXMgd2UgY2Fubm90IGNoZWNrIGZvciBbW0NvbnN0cnVjdF1dIGludGVybmFsIG1ldGhvZC5cbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT09IFwiZnVuY3Rpb25cIjtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjIuNyBJc1Byb3BlcnR5S2V5KGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc3Byb3BlcnR5a2V5XG4gICAgICAgIGZ1bmN0aW9uIElzUHJvcGVydHlLZXkoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoVHlwZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDMgLyogU3RyaW5nICovOiByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDQgLyogU3ltYm9sICovOiByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gU2FtZVZhbHVlWmVybyh4LCB5KSB7XG4gICAgICAgICAgICByZXR1cm4geCA9PT0geSB8fCB4ICE9PSB4ICYmIHkgIT09IHk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4zIE9wZXJhdGlvbnMgb24gT2JqZWN0c1xuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcGVyYXRpb25zLW9uLW9iamVjdHNcbiAgICAgICAgLy8gNy4zLjkgR2V0TWV0aG9kKFYsIFApXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxuICAgICAgICBmdW5jdGlvbiBHZXRNZXRob2QoViwgUCkge1xuICAgICAgICAgICAgdmFyIGZ1bmMgPSBWW1BdO1xuICAgICAgICAgICAgaWYgKGZ1bmMgPT09IHVuZGVmaW5lZCB8fCBmdW5jID09PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoIUlzQ2FsbGFibGUoZnVuYykpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40IE9wZXJhdGlvbnMgb24gSXRlcmF0b3IgT2JqZWN0c1xuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcGVyYXRpb25zLW9uLWl0ZXJhdG9yLW9iamVjdHNcbiAgICAgICAgZnVuY3Rpb24gR2V0SXRlcmF0b3Iob2JqKSB7XG4gICAgICAgICAgICB2YXIgbWV0aG9kID0gR2V0TWV0aG9kKG9iaiwgaXRlcmF0b3JTeW1ib2wpO1xuICAgICAgICAgICAgaWYgKCFJc0NhbGxhYmxlKG1ldGhvZCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpOyAvLyBmcm9tIENhbGxcbiAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IG1ldGhvZC5jYWxsKG9iaik7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KGl0ZXJhdG9yKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40LjQgSXRlcmF0b3JWYWx1ZShpdGVyUmVzdWx0KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvMjAxNi8jc2VjLWl0ZXJhdG9ydmFsdWVcbiAgICAgICAgZnVuY3Rpb24gSXRlcmF0b3JWYWx1ZShpdGVyUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlclJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjQuNSBJdGVyYXRvclN0ZXAoaXRlcmF0b3IpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWl0ZXJhdG9yc3RlcFxuICAgICAgICBmdW5jdGlvbiBJdGVyYXRvclN0ZXAoaXRlcmF0b3IpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyBmYWxzZSA6IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pdGVyYXRvcmNsb3NlXG4gICAgICAgIGZ1bmN0aW9uIEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IpIHtcbiAgICAgICAgICAgIHZhciBmID0gaXRlcmF0b3JbXCJyZXR1cm5cIl07XG4gICAgICAgICAgICBpZiAoZilcbiAgICAgICAgICAgICAgICBmLmNhbGwoaXRlcmF0b3IpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDkuMSBPcmRpbmFyeSBPYmplY3QgSW50ZXJuYWwgTWV0aG9kcyBhbmQgSW50ZXJuYWwgU2xvdHNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnktb2JqZWN0LWludGVybmFsLW1ldGhvZHMtYW5kLWludGVybmFsLXNsb3RzXG4gICAgICAgIC8vIDkuMS4xLjEgT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeWdldHByb3RvdHlwZW9mXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTykge1xuICAgICAgICAgICAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBPICE9PSBcImZ1bmN0aW9uXCIgfHwgTyA9PT0gZnVuY3Rpb25Qcm90b3R5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHNldCBfX3Byb3RvX18gaW4gRVM1LCBhcyBpdCdzIG5vbi1zdGFuZGFyZC5cbiAgICAgICAgICAgIC8vIFRyeSB0byBkZXRlcm1pbmUgdGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IuIENvbXBhdGlibGUgaW1wbGVtZW50YXRpb25zXG4gICAgICAgICAgICAvLyBtdXN0IGVpdGhlciBzZXQgX19wcm90b19fIG9uIGEgc3ViY2xhc3MgY29uc3RydWN0b3IgdG8gdGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IsXG4gICAgICAgICAgICAvLyBvciBlbnN1cmUgZWFjaCBjbGFzcyBoYXMgYSB2YWxpZCBgY29uc3RydWN0b3JgIHByb3BlcnR5IG9uIGl0cyBwcm90b3R5cGUgdGhhdFxuICAgICAgICAgICAgLy8gcG9pbnRzIGJhY2sgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgRnVuY3Rpb24uW1tQcm90b3R5cGVdXSwgdGhlbiB0aGlzIGlzIGRlZmluYXRlbHkgaW5oZXJpdGVkLlxuICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgY2FzZSB3aGVuIGluIEVTNiBvciB3aGVuIHVzaW5nIF9fcHJvdG9fXyBpbiBhIGNvbXBhdGlibGUgYnJvd3Nlci5cbiAgICAgICAgICAgIGlmIChwcm90byAhPT0gZnVuY3Rpb25Qcm90b3R5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gSWYgdGhlIHN1cGVyIHByb3RvdHlwZSBpcyBPYmplY3QucHJvdG90eXBlLCBudWxsLCBvciB1bmRlZmluZWQsIHRoZW4gd2UgY2Fubm90IGRldGVybWluZSB0aGUgaGVyaXRhZ2UuXG4gICAgICAgICAgICB2YXIgcHJvdG90eXBlID0gTy5wcm90b3R5cGU7XG4gICAgICAgICAgICB2YXIgcHJvdG90eXBlUHJvdG8gPSBwcm90b3R5cGUgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvdHlwZSk7XG4gICAgICAgICAgICBpZiAocHJvdG90eXBlUHJvdG8gPT0gbnVsbCB8fCBwcm90b3R5cGVQcm90byA9PT0gT2JqZWN0LnByb3RvdHlwZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvdG87XG4gICAgICAgICAgICAvLyBJZiB0aGUgY29uc3RydWN0b3Igd2FzIG5vdCBhIGZ1bmN0aW9uLCB0aGVuIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgdmFyIGNvbnN0cnVjdG9yID0gcHJvdG90eXBlUHJvdG8uY29uc3RydWN0b3I7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnN0cnVjdG9yICE9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBzb21lIGtpbmQgb2Ygc2VsZi1yZWZlcmVuY2UsIHRoZW4gd2UgY2Fubm90IGRldGVybWluZSB0aGUgaGVyaXRhZ2UuXG4gICAgICAgICAgICBpZiAoY29uc3RydWN0b3IgPT09IE8pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIHByZXR0eSBnb29kIGd1ZXNzIGF0IHRoZSBoZXJpdGFnZS5cbiAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgICAgICAgfVxuICAgICAgICAvLyBHbG9iYWwgbWV0YWRhdGEgcmVnaXN0cnlcbiAgICAgICAgLy8gLSBBbGxvd3MgYGltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcImAgYW5kIGBpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhL25vLWNvbmZsaWN0XCJgIHRvIGludGVyb3BlcmF0ZS5cbiAgICAgICAgLy8gLSBVc2VzIGlzb2xhdGVkIG1ldGFkYXRhIGlmIGBSZWZsZWN0YCBpcyBmcm96ZW4gYmVmb3JlIHRoZSByZWdpc3RyeSBjYW4gYmUgaW5zdGFsbGVkLlxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlcyBhIHJlZ2lzdHJ5IHVzZWQgdG8gYWxsb3cgbXVsdGlwbGUgYHJlZmxlY3QtbWV0YWRhdGFgIHByb3ZpZGVycy5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIENyZWF0ZU1ldGFkYXRhUmVnaXN0cnkoKSB7XG4gICAgICAgICAgICB2YXIgZmFsbGJhY2s7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHJlZ2lzdHJ5U3ltYm9sKSAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiByb290LlJlZmxlY3QgIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICAgICAgICAgICAgICAhKHJlZ2lzdHJ5U3ltYm9sIGluIHJvb3QuUmVmbGVjdCkgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2Ygcm9vdC5SZWZsZWN0LmRlZmluZU1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAvLyBpbnRlcm9wZXJhdGUgd2l0aCBvbGRlciB2ZXJzaW9uIG9mIGByZWZsZWN0LW1ldGFkYXRhYCB0aGF0IGRpZCBub3Qgc3VwcG9ydCBhIHJlZ2lzdHJ5LlxuICAgICAgICAgICAgICAgIGZhbGxiYWNrID0gQ3JlYXRlRmFsbGJhY2tQcm92aWRlcihyb290LlJlZmxlY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGZpcnN0O1xuICAgICAgICAgICAgdmFyIHNlY29uZDtcbiAgICAgICAgICAgIHZhciByZXN0O1xuICAgICAgICAgICAgdmFyIHRhcmdldFByb3ZpZGVyTWFwID0gbmV3IF9XZWFrTWFwKCk7XG4gICAgICAgICAgICB2YXIgcmVnaXN0cnkgPSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJQcm92aWRlcjogcmVnaXN0ZXJQcm92aWRlcixcbiAgICAgICAgICAgICAgICBnZXRQcm92aWRlcjogZ2V0UHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgc2V0UHJvdmlkZXI6IHNldFByb3ZpZGVyLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiByZWdpc3RyeTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlZ2lzdGVyUHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdC5pc0V4dGVuc2libGUocmVnaXN0cnkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBhZGQgcHJvdmlkZXIgdG8gYSBmcm96ZW4gcmVnaXN0cnkuXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBmYWxsYmFjayA9PT0gcHJvdmlkZXI6IGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIElzVW5kZWZpbmVkKGZpcnN0KTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gcHJvdmlkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBmaXJzdCA9PT0gcHJvdmlkZXI6IGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIElzVW5kZWZpbmVkKHNlY29uZCk6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmQgPSBwcm92aWRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlY29uZCA9PT0gcHJvdmlkZXI6IGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3QgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0ID0gbmV3IF9TZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3QuYWRkKHByb3ZpZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFByb3ZpZGVyTm9DYWNoZShPLCBQKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChmaXJzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0LmlzUHJvdmlkZXJGb3IoTywgUCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3Q7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoc2Vjb25kKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlY29uZC5pc1Byb3ZpZGVyRm9yKE8sIFApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocmVzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBHZXRJdGVyYXRvcihyZXN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IEl0ZXJhdG9yU3RlcChpdGVyYXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBJdGVyYXRvclZhbHVlKG5leHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXIuaXNQcm92aWRlckZvcihPLCBQKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3JDbG9zZShpdGVyYXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChmYWxsYmFjaykgJiYgZmFsbGJhY2suaXNQcm92aWRlckZvcihPLCBQKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRQcm92aWRlcihPLCBQKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3ZpZGVyTWFwID0gdGFyZ2V0UHJvdmlkZXJNYXAuZ2V0KE8pO1xuICAgICAgICAgICAgICAgIHZhciBwcm92aWRlcjtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3ZpZGVyTWFwKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlciA9IHByb3ZpZGVyTWFwLmdldChQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm92aWRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm92aWRlciA9IGdldFByb3ZpZGVyTm9DYWNoZShPLCBQKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3ZpZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQocHJvdmlkZXJNYXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlck1hcCA9IG5ldyBfTWFwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm92aWRlck1hcC5zZXQoTywgcHJvdmlkZXJNYXApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyTWFwLnNldChQLCBwcm92aWRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm92aWRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhc1Byb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHByb3ZpZGVyKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdCA9PT0gcHJvdmlkZXIgfHwgc2Vjb25kID09PSBwcm92aWRlciB8fCAhSXNVbmRlZmluZWQocmVzdCkgJiYgcmVzdC5oYXMocHJvdmlkZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gc2V0UHJvdmlkZXIoTywgUCwgcHJvdmlkZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3ZpZGVyKHByb3ZpZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRhZGF0YSBwcm92aWRlciBub3QgcmVnaXN0ZXJlZC5cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBleGlzdGluZ1Byb3ZpZGVyID0gZ2V0UHJvdmlkZXIoTywgUCk7XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nUHJvdmlkZXIgIT09IHByb3ZpZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoZXhpc3RpbmdQcm92aWRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJvdmlkZXJNYXAgPSB0YXJnZXRQcm92aWRlck1hcC5nZXQoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChwcm92aWRlck1hcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyTWFwID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3ZpZGVyTWFwLnNldChPLCBwcm92aWRlck1hcCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJNYXAuc2V0KFAsIHByb3ZpZGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgb3IgY3JlYXRlcyB0aGUgc2hhcmVkIHJlZ2lzdHJ5IG9mIG1ldGFkYXRhIHByb3ZpZGVycy5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIEdldE9yQ3JlYXRlTWV0YWRhdGFSZWdpc3RyeSgpIHtcbiAgICAgICAgICAgIHZhciBtZXRhZGF0YVJlZ2lzdHJ5O1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChyZWdpc3RyeVN5bWJvbCkgJiYgSXNPYmplY3Qocm9vdC5SZWZsZWN0KSAmJiBPYmplY3QuaXNFeHRlbnNpYmxlKHJvb3QuUmVmbGVjdCkpIHtcbiAgICAgICAgICAgICAgICBtZXRhZGF0YVJlZ2lzdHJ5ID0gcm9vdC5SZWZsZWN0W3JlZ2lzdHJ5U3ltYm9sXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YVJlZ2lzdHJ5KSkge1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhUmVnaXN0cnkgPSBDcmVhdGVNZXRhZGF0YVJlZ2lzdHJ5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHJlZ2lzdHJ5U3ltYm9sKSAmJiBJc09iamVjdChyb290LlJlZmxlY3QpICYmIE9iamVjdC5pc0V4dGVuc2libGUocm9vdC5SZWZsZWN0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyb290LlJlZmxlY3QsIHJlZ2lzdHJ5U3ltYm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBtZXRhZGF0YVJlZ2lzdHJ5XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWV0YWRhdGFSZWdpc3RyeTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVNZXRhZGF0YVByb3ZpZGVyKHJlZ2lzdHJ5KSB7XG4gICAgICAgICAgICAvLyBbW01ldGFkYXRhXV0gaW50ZXJuYWwgc2xvdFxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnktb2JqZWN0LWludGVybmFsLW1ldGhvZHMtYW5kLWludGVybmFsLXNsb3RzXG4gICAgICAgICAgICB2YXIgbWV0YWRhdGEgPSBuZXcgX1dlYWtNYXAoKTtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IHtcbiAgICAgICAgICAgICAgICBpc1Byb3ZpZGVyRm9yOiBmdW5jdGlvbiAoTywgUCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBtZXRhZGF0YS5nZXQoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZCh0YXJnZXRNZXRhZGF0YSkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRNZXRhZGF0YS5oYXMoUCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhOiBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5SGFzT3duTWV0YWRhdGE6IE9yZGluYXJ5SGFzT3duTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlHZXRPd25NZXRhZGF0YTogT3JkaW5hcnlHZXRPd25NZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeU93bk1ldGFkYXRhS2V5czogT3JkaW5hcnlPd25NZXRhZGF0YUtleXMsXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlEZWxldGVNZXRhZGF0YTogT3JkaW5hcnlEZWxldGVNZXRhZGF0YSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBtZXRhZGF0YVJlZ2lzdHJ5LnJlZ2lzdGVyUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyO1xuICAgICAgICAgICAgZnVuY3Rpb24gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCBDcmVhdGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBtZXRhZGF0YS5nZXQoTyk7XG4gICAgICAgICAgICAgICAgdmFyIGNyZWF0ZWRUYXJnZXRNZXRhZGF0YSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZCh0YXJnZXRNZXRhZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFDcmVhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRNZXRhZGF0YSA9IG5ldyBfTWFwKCk7XG4gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLnNldChPLCB0YXJnZXRNZXRhZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRUYXJnZXRNZXRhZGF0YSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IHRhcmdldE1ldGFkYXRhLmdldChQKTtcbiAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFNYXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghQ3JlYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFNYXAgPSBuZXcgX01hcCgpO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRNZXRhZGF0YS5zZXQoUCwgbWV0YWRhdGFNYXApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZ2lzdHJ5LnNldFByb3ZpZGVyKE8sIFAsIHByb3ZpZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TWV0YWRhdGEuZGVsZXRlKFApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRUYXJnZXRNZXRhZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRlbGV0ZShPKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIHByb3ZpZGVyIGZvciB0YXJnZXQuXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YU1hcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIDMuMS4yLjEgT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5aGFzb3dubWV0YWRhdGFcbiAgICAgICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9Cb29sZWFuKG1ldGFkYXRhTWFwLmhhcyhNZXRhZGF0YUtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gMy4xLjQuMSBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlnZXRvd25tZXRhZGF0YVxuICAgICAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkge1xuICAgICAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0YWRhdGFNYXAuZ2V0KE1ldGFkYXRhS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIDMuMS41LjEgT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUClcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5ZGVmaW5lb3dubWV0YWRhdGFcbiAgICAgICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApIHtcbiAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFNYXAuc2V0KE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIDMuMS43LjEgT3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUClcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5b3dubWV0YWRhdGFrZXlzXG4gICAgICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleXMgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICAgICAgICAgIHZhciBrZXlzT2JqID0gbWV0YWRhdGFNYXAua2V5cygpO1xuICAgICAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IEdldEl0ZXJhdG9yKGtleXNPYmopO1xuICAgICAgICAgICAgICAgIHZhciBrID0gMDtcbiAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IEl0ZXJhdG9yU3RlcChpdGVyYXRvcik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5cy5sZW5ndGggPSBrO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRWYWx1ZSA9IEl0ZXJhdG9yVmFsdWUobmV4dCk7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzW2tdID0gbmV4dFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBrKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlEZWxldGVNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkge1xuICAgICAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICghbWV0YWRhdGFNYXAuZGVsZXRlKE1ldGFkYXRhS2V5KSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChtZXRhZGF0YU1hcC5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXRNZXRhZGF0YSA9IG1ldGFkYXRhLmdldChPKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZCh0YXJnZXRNZXRhZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE1ldGFkYXRhLmRlbGV0ZShQKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRNZXRhZGF0YS5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVsZXRlKHRhcmdldE1ldGFkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVGYWxsYmFja1Byb3ZpZGVyKHJlZmxlY3QpIHtcbiAgICAgICAgICAgIHZhciBkZWZpbmVNZXRhZGF0YSA9IHJlZmxlY3QuZGVmaW5lTWV0YWRhdGEsIGhhc093bk1ldGFkYXRhID0gcmVmbGVjdC5oYXNPd25NZXRhZGF0YSwgZ2V0T3duTWV0YWRhdGEgPSByZWZsZWN0LmdldE93bk1ldGFkYXRhLCBnZXRPd25NZXRhZGF0YUtleXMgPSByZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cywgZGVsZXRlTWV0YWRhdGEgPSByZWZsZWN0LmRlbGV0ZU1ldGFkYXRhO1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhT3duZXIgPSBuZXcgX1dlYWtNYXAoKTtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IHtcbiAgICAgICAgICAgICAgICBpc1Byb3ZpZGVyRm9yOiBmdW5jdGlvbiAoTywgUCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGFQcm9wZXJ0eVNldCA9IG1ldGFkYXRhT3duZXIuZ2V0KE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKG1ldGFkYXRhUHJvcGVydHlTZXQpICYmIG1ldGFkYXRhUHJvcGVydHlTZXQuaGFzKFApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0T3duTWV0YWRhdGFLZXlzKE8sIFApLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhUHJvcGVydHlTZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFQcm9wZXJ0eVNldCA9IG5ldyBfU2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFPd25lci5zZXQoTywgbWV0YWRhdGFQcm9wZXJ0eVNldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YVByb3BlcnR5U2V0LmFkZChQKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGE6IGRlZmluZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5SGFzT3duTWV0YWRhdGE6IGhhc093bk1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5R2V0T3duTWV0YWRhdGE6IGdldE93bk1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzOiBnZXRPd25NZXRhZGF0YUtleXMsXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlEZWxldGVNZXRhZGF0YTogZGVsZXRlTWV0YWRhdGEsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSBwcm92aWRlciBmb3IgYW4gb2JqZWN0LiBJZiB0aGUgb2JqZWN0IGhhcyBubyBtZXRhZGF0YSBwcm92aWRlciBhbmQgdGhpcyBpcyBmb3IgYSBjcmVhdGUgb3BlcmF0aW9uLFxuICAgICAgICAgKiB0aGVuIHRoaXMgbW9kdWxlJ3MgbWV0YWRhdGEgcHJvdmlkZXIgaXMgYXNzaWduZWQgdG8gdGhlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIEdldE1ldGFkYXRhUHJvdmlkZXIoTywgUCwgQ3JlYXRlKSB7XG4gICAgICAgICAgICB2YXIgcmVnaXN0ZXJlZFByb3ZpZGVyID0gbWV0YWRhdGFSZWdpc3RyeS5nZXRQcm92aWRlcihPLCBQKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocmVnaXN0ZXJlZFByb3ZpZGVyKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWdpc3RlcmVkUHJvdmlkZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQ3JlYXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhUmVnaXN0cnkuc2V0UHJvdmlkZXIoTywgUCwgbWV0YWRhdGFQcm92aWRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhUHJvdmlkZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgc3RhdGUuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBuYWl2ZSBNYXAgc2hpbVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVNYXBQb2x5ZmlsbCgpIHtcbiAgICAgICAgICAgIHZhciBjYWNoZVNlbnRpbmVsID0ge307XG4gICAgICAgICAgICB2YXIgYXJyYXlTZW50aW5lbCA9IFtdO1xuICAgICAgICAgICAgdmFyIE1hcEl0ZXJhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE1hcEl0ZXJhdG9yKGtleXMsIHZhbHVlcywgc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0ga2V5cztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gdmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBNYXBJdGVyYXRvci5wcm90b3R5cGVbXCJAQGl0ZXJhdG9yXCJdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcbiAgICAgICAgICAgICAgICBNYXBJdGVyYXRvci5wcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcbiAgICAgICAgICAgICAgICBNYXBJdGVyYXRvci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5faW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5fa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9zZWxlY3Rvcih0aGlzLl9rZXlzW2luZGV4XSwgdGhpcy5fdmFsdWVzW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggKyAxID49IHRoaXMuX2tleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiByZXN1bHQsIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlLnRocm93ID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlLnJldHVybiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXBJdGVyYXRvcjtcbiAgICAgICAgICAgIH0oKSk7XG4gICAgICAgICAgICB2YXIgTWFwID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE1hcCgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVLZXkgPSBjYWNoZVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gLTI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNYXAucHJvdG90eXBlLCBcInNpemVcIiwge1xuICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2tleXMubGVuZ3RoOyB9LFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIGZhbHNlKSA+PSAwOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kKGtleSwgLyppbnNlcnQqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCA+PSAwID8gdGhpcy5fdmFsdWVzW2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZChrZXksIC8qaW5zZXJ0Ki8gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlc1tpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZChrZXksIC8qaW5zZXJ0Ki8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpemUgPSB0aGlzLl9rZXlzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBpbmRleCArIDE7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzW2kgLSAxXSA9IHRoaXMuX2tleXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzW2kgLSAxXSA9IHRoaXMuX3ZhbHVlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMubGVuZ3RoLS07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMubGVuZ3RoLS07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoU2FtZVZhbHVlWmVybyhrZXksIHRoaXMuX2NhY2hlS2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlS2V5ID0gY2FjaGVTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gLTI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUtleSA9IGNhY2hlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlSW5kZXggPSAtMjtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBNYXBJdGVyYXRvcih0aGlzLl9rZXlzLCB0aGlzLl92YWx1ZXMsIGdldEtleSk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgTWFwSXRlcmF0b3IodGhpcy5fa2V5cywgdGhpcy5fdmFsdWVzLCBnZXRWYWx1ZSk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IE1hcEl0ZXJhdG9yKHRoaXMuX2tleXMsIHRoaXMuX3ZhbHVlcywgZ2V0RW50cnkpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGVbXCJAQGl0ZXJhdG9yXCJdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmVudHJpZXMoKTsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLl9maW5kID0gZnVuY3Rpb24gKGtleSwgaW5zZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghU2FtZVZhbHVlWmVybyh0aGlzLl9jYWNoZUtleSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9rZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNhbWVWYWx1ZVplcm8odGhpcy5fa2V5c1tpXSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jYWNoZUluZGV4IDwgMCAmJiBpbnNlcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlSW5kZXggPSB0aGlzLl9rZXlzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2godW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVJbmRleDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXA7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgcmV0dXJuIE1hcDtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldEtleShrZXksIF8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VmFsdWUoXywgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRFbnRyeShrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtrZXksIHZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBuYWl2ZSBTZXQgc2hpbVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVTZXRQb2x5ZmlsbCgpIHtcbiAgICAgICAgICAgIHZhciBTZXQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gU2V0KCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYXAgPSBuZXcgX01hcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU2V0LnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9tYXAuc2l6ZTsgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHRoaXMuX21hcC5oYXModmFsdWUpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9tYXAuc2V0KHZhbHVlLCB2YWx1ZSksIHRoaXM7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHRoaXMuX21hcC5kZWxldGUodmFsdWUpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7IHRoaXMuX21hcC5jbGVhcigpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21hcC5rZXlzKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9tYXAua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21hcC5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZVtcIkBAaXRlcmF0b3JcIl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmtleXMoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBTZXQ7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgcmV0dXJuIFNldDtcbiAgICAgICAgfVxuICAgICAgICAvLyBuYWl2ZSBXZWFrTWFwIHNoaW1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlV2Vha01hcFBvbHlmaWxsKCkge1xuICAgICAgICAgICAgdmFyIFVVSURfU0laRSA9IDE2O1xuICAgICAgICAgICAgdmFyIGtleXMgPSBIYXNoTWFwLmNyZWF0ZSgpO1xuICAgICAgICAgICAgdmFyIHJvb3RLZXkgPSBDcmVhdGVVbmlxdWVLZXkoKTtcbiAgICAgICAgICAgIHJldHVybiAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gV2Vha01hcCgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5ID0gQ3JlYXRlVW5pcXVlS2V5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gR2V0T3JDcmVhdGVXZWFrTWFwVGFibGUodGFyZ2V0LCAvKmNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlICE9PSB1bmRlZmluZWQgPyBIYXNoTWFwLmhhcyh0YWJsZSwgdGhpcy5fa2V5KSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGUgIT09IHVuZGVmaW5lZCA/IEhhc2hNYXAuZ2V0KHRhYmxlLCB0aGlzLl9rZXkpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKHRhcmdldCwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gR2V0T3JDcmVhdGVXZWFrTWFwVGFibGUodGFyZ2V0LCAvKmNyZWF0ZSovIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0YWJsZVt0aGlzLl9rZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGUgIT09IHVuZGVmaW5lZCA/IGRlbGV0ZSB0YWJsZVt0aGlzLl9rZXldIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogbm90IGEgcmVhbCBjbGVhciwganVzdCBtYWtlcyB0aGUgcHJldmlvdXMgZGF0YSB1bnJlYWNoYWJsZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXkgPSBDcmVhdGVVbmlxdWVLZXkoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBXZWFrTWFwO1xuICAgICAgICAgICAgfSgpKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIENyZWF0ZVVuaXF1ZUtleSgpIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5O1xuICAgICAgICAgICAgICAgIGRvXG4gICAgICAgICAgICAgICAgICAgIGtleSA9IFwiQEBXZWFrTWFwQEBcIiArIENyZWF0ZVVVSUQoKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoSGFzaE1hcC5oYXMoa2V5cywga2V5KSk7XG4gICAgICAgICAgICAgICAga2V5c1trZXldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gR2V0T3JDcmVhdGVXZWFrTWFwVGFibGUodGFyZ2V0LCBjcmVhdGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc093bi5jYWxsKHRhcmdldCwgcm9vdEtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjcmVhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCByb290S2V5LCB7IHZhbHVlOiBIYXNoTWFwLmNyZWF0ZSgpIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Jvb3RLZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gRmlsbFJhbmRvbUJ5dGVzKGJ1ZmZlciwgc2l6ZSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgKytpKVxuICAgICAgICAgICAgICAgICAgICBidWZmZXJbaV0gPSBNYXRoLnJhbmRvbSgpICogMHhmZiB8IDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIEdlblJhbmRvbUJ5dGVzKHNpemUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShzaXplKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnlwdG8gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyYXkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBtc0NyeXB0byAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGxSYW5kb21CeXRlcyhhcnJheSwgc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsbFJhbmRvbUJ5dGVzKG5ldyBBcnJheShzaXplKSwgc2l6ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBDcmVhdGVVVUlEKCkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gR2VuUmFuZG9tQnl0ZXMoVVVJRF9TSVpFKTtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIHJhbmRvbSAtIFJGQyA0MTIyIMKnIDQuNFxuICAgICAgICAgICAgICAgIGRhdGFbNl0gPSBkYXRhWzZdICYgMHg0ZiB8IDB4NDA7XG4gICAgICAgICAgICAgICAgZGF0YVs4XSA9IGRhdGFbOF0gJiAweGJmIHwgMHg4MDtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBVVUlEX1NJWkU7ICsrb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBieXRlID0gZGF0YVtvZmZzZXRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID09PSA0IHx8IG9mZnNldCA9PT0gNiB8fCBvZmZzZXQgPT09IDgpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCItXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChieXRlIDwgMTYpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCIwXCI7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBieXRlLnRvU3RyaW5nKDE2KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHVzZXMgYSBoZXVyaXN0aWMgdXNlZCBieSB2OCBhbmQgY2hha3JhIHRvIGZvcmNlIGFuIG9iamVjdCBpbnRvIGRpY3Rpb25hcnkgbW9kZS5cbiAgICAgICAgZnVuY3Rpb24gTWFrZURpY3Rpb25hcnkob2JqKSB7XG4gICAgICAgICAgICBvYmouX18gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBkZWxldGUgb2JqLl9fO1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuICAgIH0pO1xufSkoUmVmbGVjdCB8fCAoUmVmbGVjdCA9IHt9KSk7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGw9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbj1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLHA9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLHI9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLHQ9U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLHU9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksdj1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksdz1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIikseD1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSx5PVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLHo9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIEEoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPXomJmFbel18fGFbXCJAQGl0ZXJhdG9yXCJdO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH1cbnZhciBCPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxDPU9iamVjdC5hc3NpZ24sRD17fTtmdW5jdGlvbiBFKGEsYixlKXt0aGlzLnByb3BzPWE7dGhpcy5jb250ZXh0PWI7dGhpcy5yZWZzPUQ7dGhpcy51cGRhdGVyPWV8fEJ9RS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fTtcbkUucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGEsYil7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmbnVsbCE9YSl0aHJvdyBFcnJvcihcInNldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLlwiKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsYSxiLFwic2V0U3RhdGVcIil9O0UucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxhLFwiZm9yY2VVcGRhdGVcIil9O2Z1bmN0aW9uIEYoKXt9Ri5wcm90b3R5cGU9RS5wcm90b3R5cGU7ZnVuY3Rpb24gRyhhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1EO3RoaXMudXBkYXRlcj1lfHxCfXZhciBIPUcucHJvdG90eXBlPW5ldyBGO1xuSC5jb25zdHJ1Y3Rvcj1HO0MoSCxFLnByb3RvdHlwZSk7SC5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgST1BcnJheS5pc0FycmF5LEo9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxLPXtjdXJyZW50Om51bGx9LEw9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIE0oYSxiLGUpe3ZhciBkLGM9e30saz1udWxsLGg9bnVsbDtpZihudWxsIT1iKWZvcihkIGluIHZvaWQgMCE9PWIucmVmJiYoaD1iLnJlZiksdm9pZCAwIT09Yi5rZXkmJihrPVwiXCIrYi5rZXkpLGIpSi5jYWxsKGIsZCkmJiFMLmhhc093blByb3BlcnR5KGQpJiYoY1tkXT1iW2RdKTt2YXIgZz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWcpYy5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxnKXtmb3IodmFyIGY9QXJyYXkoZyksbT0wO208ZzttKyspZlttXT1hcmd1bWVudHNbbSsyXTtjLmNoaWxkcmVuPWZ9aWYoYSYmYS5kZWZhdWx0UHJvcHMpZm9yKGQgaW4gZz1hLmRlZmF1bHRQcm9wcyxnKXZvaWQgMD09PWNbZF0mJihjW2RdPWdbZF0pO3JldHVybnskJHR5cGVvZjpsLHR5cGU6YSxrZXk6ayxyZWY6aCxwcm9wczpjLF9vd25lcjpLLmN1cnJlbnR9fVxuZnVuY3Rpb24gTihhLGIpe3JldHVybnskJHR5cGVvZjpsLHR5cGU6YS50eXBlLGtleTpiLHJlZjphLnJlZixwcm9wczphLnByb3BzLF9vd25lcjphLl9vd25lcn19ZnVuY3Rpb24gTyhhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09bH1mdW5jdGlvbiBlc2NhcGUoYSl7dmFyIGI9e1wiPVwiOlwiPTBcIixcIjpcIjpcIj0yXCJ9O3JldHVyblwiJFwiK2EucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfSl9dmFyIFA9L1xcLysvZztmdW5jdGlvbiBRKGEsYil7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmbnVsbCE9YS5rZXk/ZXNjYXBlKFwiXCIrYS5rZXkpOmIudG9TdHJpbmcoMzYpfVxuZnVuY3Rpb24gUihhLGIsZSxkLGMpe3ZhciBrPXR5cGVvZiBhO2lmKFwidW5kZWZpbmVkXCI9PT1rfHxcImJvb2xlYW5cIj09PWspYT1udWxsO3ZhciBoPSExO2lmKG51bGw9PT1hKWg9ITA7ZWxzZSBzd2l0Y2goayl7Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJudW1iZXJcIjpoPSEwO2JyZWFrO2Nhc2UgXCJvYmplY3RcIjpzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBsOmNhc2UgbjpoPSEwfX1pZihoKXJldHVybiBoPWEsYz1jKGgpLGE9XCJcIj09PWQ/XCIuXCIrUShoLDApOmQsSShjKT8oZT1cIlwiLG51bGwhPWEmJihlPWEucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSxSKGMsYixlLFwiXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KSk6bnVsbCE9YyYmKE8oYykmJihjPU4oYyxlKyghYy5rZXl8fGgmJmgua2V5PT09Yy5rZXk/XCJcIjooXCJcIitjLmtleSkucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSthKSksYi5wdXNoKGMpKSwxO2g9MDtkPVwiXCI9PT1kP1wiLlwiOmQrXCI6XCI7aWYoSShhKSlmb3IodmFyIGc9MDtnPGEubGVuZ3RoO2crKyl7az1cbmFbZ107dmFyIGY9ZCtRKGssZyk7aCs9UihrLGIsZSxmLGMpfWVsc2UgaWYoZj1BKGEpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmKWZvcihhPWYuY2FsbChhKSxnPTA7IShrPWEubmV4dCgpKS5kb25lOylrPWsudmFsdWUsZj1kK1EoayxnKyspLGgrPVIoayxiLGUsZixjKTtlbHNlIGlmKFwib2JqZWN0XCI9PT1rKXRocm93IGI9U3RyaW5nKGEpLEVycm9yKFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIisoXCJbb2JqZWN0IE9iamVjdF1cIj09PWI/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhhKS5qb2luKFwiLCBcIikrXCJ9XCI6YikrXCIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuXCIpO3JldHVybiBofVxuZnVuY3Rpb24gUyhhLGIsZSl7aWYobnVsbD09YSlyZXR1cm4gYTt2YXIgZD1bXSxjPTA7UihhLGQsXCJcIixcIlwiLGZ1bmN0aW9uKGEpe3JldHVybiBiLmNhbGwoZSxhLGMrKyl9KTtyZXR1cm4gZH1mdW5jdGlvbiBUKGEpe2lmKC0xPT09YS5fc3RhdHVzKXt2YXIgYj1hLl9yZXN1bHQ7Yj1iKCk7Yi50aGVuKGZ1bmN0aW9uKGIpe2lmKDA9PT1hLl9zdGF0dXN8fC0xPT09YS5fc3RhdHVzKWEuX3N0YXR1cz0xLGEuX3Jlc3VsdD1ifSxmdW5jdGlvbihiKXtpZigwPT09YS5fc3RhdHVzfHwtMT09PWEuX3N0YXR1cylhLl9zdGF0dXM9MixhLl9yZXN1bHQ9Yn0pOy0xPT09YS5fc3RhdHVzJiYoYS5fc3RhdHVzPTAsYS5fcmVzdWx0PWIpfWlmKDE9PT1hLl9zdGF0dXMpcmV0dXJuIGEuX3Jlc3VsdC5kZWZhdWx0O3Rocm93IGEuX3Jlc3VsdDt9XG52YXIgVT17Y3VycmVudDpudWxsfSxWPXt0cmFuc2l0aW9uOm51bGx9LFc9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6VSxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzpWLFJlYWN0Q3VycmVudE93bmVyOkt9O2Z1bmN0aW9uIFgoKXt0aHJvdyBFcnJvcihcImFjdCguLi4pIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuXCIpO31cbmV4cG9ydHMuQ2hpbGRyZW49e21hcDpTLGZvckVhY2g6ZnVuY3Rpb24oYSxiLGUpe1MoYSxmdW5jdGlvbigpe2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlKX0sY291bnQ6ZnVuY3Rpb24oYSl7dmFyIGI9MDtTKGEsZnVuY3Rpb24oKXtiKyt9KTtyZXR1cm4gYn0sdG9BcnJheTpmdW5jdGlvbihhKXtyZXR1cm4gUyhhLGZ1bmN0aW9uKGEpe3JldHVybiBhfSl8fFtdfSxvbmx5OmZ1bmN0aW9uKGEpe2lmKCFPKGEpKXRocm93IEVycm9yKFwiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuXCIpO3JldHVybiBhfX07ZXhwb3J0cy5Db21wb25lbnQ9RTtleHBvcnRzLkZyYWdtZW50PXA7ZXhwb3J0cy5Qcm9maWxlcj1yO2V4cG9ydHMuUHVyZUNvbXBvbmVudD1HO2V4cG9ydHMuU3RyaWN0TW9kZT1xO2V4cG9ydHMuU3VzcGVuc2U9dztcbmV4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9VztleHBvcnRzLmFjdD1YO1xuZXhwb3J0cy5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oYSxiLGUpe2lmKG51bGw9PT1hfHx2b2lkIDA9PT1hKXRocm93IEVycm9yKFwiUmVhY3QuY2xvbmVFbGVtZW50KC4uLik6IFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgUmVhY3QgZWxlbWVudCwgYnV0IHlvdSBwYXNzZWQgXCIrYStcIi5cIik7dmFyIGQ9Qyh7fSxhLnByb3BzKSxjPWEua2V5LGs9YS5yZWYsaD1hLl9vd25lcjtpZihudWxsIT1iKXt2b2lkIDAhPT1iLnJlZiYmKGs9Yi5yZWYsaD1LLmN1cnJlbnQpO3ZvaWQgMCE9PWIua2V5JiYoYz1cIlwiK2Iua2V5KTtpZihhLnR5cGUmJmEudHlwZS5kZWZhdWx0UHJvcHMpdmFyIGc9YS50eXBlLmRlZmF1bHRQcm9wcztmb3IoZiBpbiBiKUouY2FsbChiLGYpJiYhTC5oYXNPd25Qcm9wZXJ0eShmKSYmKGRbZl09dm9pZCAwPT09YltmXSYmdm9pZCAwIT09Zz9nW2ZdOmJbZl0pfXZhciBmPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09ZilkLmNoaWxkcmVuPWU7ZWxzZSBpZigxPGYpe2c9QXJyYXkoZik7XG5mb3IodmFyIG09MDttPGY7bSsrKWdbbV09YXJndW1lbnRzW20rMl07ZC5jaGlsZHJlbj1nfXJldHVybnskJHR5cGVvZjpsLHR5cGU6YS50eXBlLGtleTpjLHJlZjprLHByb3BzOmQsX293bmVyOmh9fTtleHBvcnRzLmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oYSl7YT17JCR0eXBlb2Y6dSxfY3VycmVudFZhbHVlOmEsX2N1cnJlbnRWYWx1ZTI6YSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGwsX2RlZmF1bHRWYWx1ZTpudWxsLF9nbG9iYWxOYW1lOm51bGx9O2EuUHJvdmlkZXI9eyQkdHlwZW9mOnQsX2NvbnRleHQ6YX07cmV0dXJuIGEuQ29uc3VtZXI9YX07ZXhwb3J0cy5jcmVhdGVFbGVtZW50PU07ZXhwb3J0cy5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGEpe3ZhciBiPU0uYmluZChudWxsLGEpO2IudHlwZT1hO3JldHVybiBifTtleHBvcnRzLmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fTtcbmV4cG9ydHMuZm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6dixyZW5kZXI6YX19O2V4cG9ydHMuaXNWYWxpZEVsZW1lbnQ9TztleHBvcnRzLmxhenk9ZnVuY3Rpb24oYSl7cmV0dXJueyQkdHlwZW9mOnksX3BheWxvYWQ6e19zdGF0dXM6LTEsX3Jlc3VsdDphfSxfaW5pdDpUfX07ZXhwb3J0cy5tZW1vPWZ1bmN0aW9uKGEsYil7cmV0dXJueyQkdHlwZW9mOngsdHlwZTphLGNvbXBhcmU6dm9pZCAwPT09Yj9udWxsOmJ9fTtleHBvcnRzLnN0YXJ0VHJhbnNpdGlvbj1mdW5jdGlvbihhKXt2YXIgYj1WLnRyYW5zaXRpb247Vi50cmFuc2l0aW9uPXt9O3RyeXthKCl9ZmluYWxseXtWLnRyYW5zaXRpb249Yn19O2V4cG9ydHMudW5zdGFibGVfYWN0PVg7ZXhwb3J0cy51c2VDYWxsYmFjaz1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlQ2FsbGJhY2soYSxiKX07ZXhwb3J0cy51c2VDb250ZXh0PWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlQ29udGV4dChhKX07XG5leHBvcnRzLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9O2V4cG9ydHMudXNlRGVmZXJyZWRWYWx1ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZURlZmVycmVkVmFsdWUoYSl9O2V4cG9ydHMudXNlRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VFZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VJZD1mdW5jdGlvbigpe3JldHVybiBVLmN1cnJlbnQudXNlSWQoKX07ZXhwb3J0cy51c2VJbXBlcmF0aXZlSGFuZGxlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZUltcGVyYXRpdmVIYW5kbGUoYSxiLGUpfTtleHBvcnRzLnVzZUluc2VydGlvbkVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlSW5zZXJ0aW9uRWZmZWN0KGEsYil9O2V4cG9ydHMudXNlTGF5b3V0RWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VMYXlvdXRFZmZlY3QoYSxiKX07XG5leHBvcnRzLnVzZU1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZU1lbW8oYSxiKX07ZXhwb3J0cy51c2VSZWR1Y2VyPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZHVjZXIoYSxiLGUpfTtleHBvcnRzLnVzZVJlZj1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZihhKX07ZXhwb3J0cy51c2VTdGF0ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN0YXRlKGEpfTtleHBvcnRzLnVzZVN5bmNFeHRlcm5hbFN0b3JlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN5bmNFeHRlcm5hbFN0b3JlKGEsYixlKX07ZXhwb3J0cy51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIFUuY3VycmVudC51c2VUcmFuc2l0aW9uKCl9O2V4cG9ydHMudmVyc2lvbj1cIjE4LjMuMVwiO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJpbmQoZm4sIHRoaXNBcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGFyZ3VtZW50cyk7XG4gIH07XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBiaW5kIGZyb20gJy4vaGVscGVycy9iaW5kLmpzJztcblxuLy8gdXRpbHMgaXMgYSBsaWJyYXJ5IG9mIGdlbmVyaWMgaGVscGVyIGZ1bmN0aW9ucyBub24tc3BlY2lmaWMgdG8gYXhpb3NcblxuY29uc3Qge3RvU3RyaW5nfSA9IE9iamVjdC5wcm90b3R5cGU7XG5jb25zdCB7Z2V0UHJvdG90eXBlT2Z9ID0gT2JqZWN0O1xuXG5jb25zdCBraW5kT2YgPSAoY2FjaGUgPT4gdGhpbmcgPT4ge1xuICAgIGNvbnN0IHN0ciA9IHRvU3RyaW5nLmNhbGwodGhpbmcpO1xuICAgIHJldHVybiBjYWNoZVtzdHJdIHx8IChjYWNoZVtzdHJdID0gc3RyLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpKTtcbn0pKE9iamVjdC5jcmVhdGUobnVsbCkpO1xuXG5jb25zdCBraW5kT2ZUZXN0ID0gKHR5cGUpID0+IHtcbiAgdHlwZSA9IHR5cGUudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuICh0aGluZykgPT4ga2luZE9mKHRoaW5nKSA9PT0gdHlwZVxufVxuXG5jb25zdCB0eXBlT2ZUZXN0ID0gdHlwZSA9PiB0aGluZyA9PiB0eXBlb2YgdGhpbmcgPT09IHR5cGU7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXksIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCB7aXNBcnJheX0gPSBBcnJheTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyB1bmRlZmluZWRcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1VuZGVmaW5lZCA9IHR5cGVPZlRlc3QoJ3VuZGVmaW5lZCcpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQnVmZmVyXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQnVmZmVyKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwpICYmIHZhbC5jb25zdHJ1Y3RvciAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsLmNvbnN0cnVjdG9yKVxuICAgICYmIGlzRnVuY3Rpb24odmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKSAmJiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIodmFsKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0FycmF5QnVmZmVyID0ga2luZE9mVGVzdCgnQXJyYXlCdWZmZXInKTtcblxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsKSB7XG4gIGxldCByZXN1bHQ7XG4gIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykgJiYgKEFycmF5QnVmZmVyLmlzVmlldykpIHtcbiAgICByZXN1bHQgPSBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSAodmFsKSAmJiAodmFsLmJ1ZmZlcikgJiYgKGlzQXJyYXlCdWZmZXIodmFsLmJ1ZmZlcikpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJpbmdcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyaW5nLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNTdHJpbmcgPSB0eXBlT2ZUZXN0KCdzdHJpbmcnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRnVuY3Rpb24sIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Z1bmN0aW9uID0gdHlwZU9mVGVzdCgnZnVuY3Rpb24nKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIE51bWJlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc051bWJlciA9IHR5cGVPZlRlc3QoJ251bWJlcicpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7Kn0gdGhpbmcgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc09iamVjdCA9ICh0aGluZykgPT4gdGhpbmcgIT09IG51bGwgJiYgdHlwZW9mIHRoaW5nID09PSAnb2JqZWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJvb2xlYW5cbiAqXG4gKiBAcGFyYW0geyp9IHRoaW5nIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJvb2xlYW4sIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Jvb2xlYW4gPSB0aGluZyA9PiB0aGluZyA9PT0gdHJ1ZSB8fCB0aGluZyA9PT0gZmFsc2U7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNQbGFpbk9iamVjdCA9ICh2YWwpID0+IHtcbiAgaWYgKGtpbmRPZih2YWwpICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKHZhbCk7XG4gIHJldHVybiAocHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZSB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG90eXBlKSA9PT0gbnVsbCkgJiYgIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gdmFsKSAmJiAhKFN5bWJvbC5pdGVyYXRvciBpbiB2YWwpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRGF0ZVxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBEYXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNEYXRlID0ga2luZE9mVGVzdCgnRGF0ZScpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGaWxlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNGaWxlID0ga2luZE9mVGVzdCgnRmlsZScpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQmxvYlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCbG9iLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNCbG9iID0ga2luZE9mVGVzdCgnQmxvYicpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZUxpc3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzRmlsZUxpc3QgPSBraW5kT2ZUZXN0KCdGaWxlTGlzdCcpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyZWFtXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmVhbSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzU3RyZWFtID0gKHZhbCkgPT4gaXNPYmplY3QodmFsKSAmJiBpc0Z1bmN0aW9uKHZhbC5waXBlKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZvcm1EYXRhXG4gKlxuICogQHBhcmFtIHsqfSB0aGluZyBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEZvcm1EYXRhLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNGb3JtRGF0YSA9ICh0aGluZykgPT4ge1xuICBsZXQga2luZDtcbiAgcmV0dXJuIHRoaW5nICYmIChcbiAgICAodHlwZW9mIEZvcm1EYXRhID09PSAnZnVuY3Rpb24nICYmIHRoaW5nIGluc3RhbmNlb2YgRm9ybURhdGEpIHx8IChcbiAgICAgIGlzRnVuY3Rpb24odGhpbmcuYXBwZW5kKSAmJiAoXG4gICAgICAgIChraW5kID0ga2luZE9mKHRoaW5nKSkgPT09ICdmb3JtZGF0YScgfHxcbiAgICAgICAgLy8gZGV0ZWN0IGZvcm0tZGF0YSBpbnN0YW5jZVxuICAgICAgICAoa2luZCA9PT0gJ29iamVjdCcgJiYgaXNGdW5jdGlvbih0aGluZy50b1N0cmluZykgJiYgdGhpbmcudG9TdHJpbmcoKSA9PT0gJ1tvYmplY3QgRm9ybURhdGFdJylcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzVVJMU2VhcmNoUGFyYW1zID0ga2luZE9mVGVzdCgnVVJMU2VhcmNoUGFyYW1zJyk7XG5cbmNvbnN0IFtpc1JlYWRhYmxlU3RyZWFtLCBpc1JlcXVlc3QsIGlzUmVzcG9uc2UsIGlzSGVhZGVyc10gPSBbJ1JlYWRhYmxlU3RyZWFtJywgJ1JlcXVlc3QnLCAnUmVzcG9uc2UnLCAnSGVhZGVycyddLm1hcChraW5kT2ZUZXN0KTtcblxuLyoqXG4gKiBUcmltIGV4Y2VzcyB3aGl0ZXNwYWNlIG9mZiB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBTdHJpbmcgdG8gdHJpbVxuICpcbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBTdHJpbmcgZnJlZWQgb2YgZXhjZXNzIHdoaXRlc3BhY2VcbiAqL1xuY29uc3QgdHJpbSA9IChzdHIpID0+IHN0ci50cmltID9cbiAgc3RyLnRyaW0oKSA6IHN0ci5yZXBsYWNlKC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZywgJycpO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXG4gKlxuICogQHBhcmFtIHtCb29sZWFufSBbYWxsT3duS2V5cyA9IGZhbHNlXVxuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaChvYmosIGZuLCB7YWxsT3duS2V5cyA9IGZhbHNlfSA9IHt9KSB7XG4gIC8vIERvbid0IGJvdGhlciBpZiBubyB2YWx1ZSBwcm92aWRlZFxuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IGk7XG4gIGxldCBsO1xuXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yIChpID0gMCwgbCA9IG9iai5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2ldLCBpLCBvYmopO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgb2JqZWN0IGtleXNcbiAgICBjb25zdCBrZXlzID0gYWxsT3duS2V5cyA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikgOiBPYmplY3Qua2V5cyhvYmopO1xuICAgIGNvbnN0IGxlbiA9IGtleXMubGVuZ3RoO1xuICAgIGxldCBrZXk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtrZXldLCBrZXksIG9iaik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRLZXkob2JqLCBrZXkpIHtcbiAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICBsZXQgaSA9IGtleXMubGVuZ3RoO1xuICBsZXQgX2tleTtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICBfa2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoa2V5ID09PSBfa2V5LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHJldHVybiBfa2V5O1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuY29uc3QgX2dsb2JhbCA9ICgoKSA9PiB7XG4gIC8qZXNsaW50IG5vLXVuZGVmOjAqL1xuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgIT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBnbG9iYWxUaGlzO1xuICByZXR1cm4gdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogZ2xvYmFsKVxufSkoKTtcblxuY29uc3QgaXNDb250ZXh0RGVmaW5lZCA9IChjb250ZXh0KSA9PiAhaXNVbmRlZmluZWQoY29udGV4dCkgJiYgY29udGV4dCAhPT0gX2dsb2JhbDtcblxuLyoqXG4gKiBBY2NlcHRzIHZhcmFyZ3MgZXhwZWN0aW5nIGVhY2ggYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0LCB0aGVuXG4gKiBpbW11dGFibHkgbWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2ggb2JqZWN0IGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBXaGVuIG11bHRpcGxlIG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBrZXkgdGhlIGxhdGVyIG9iamVjdCBpblxuICogdGhlIGFyZ3VtZW50cyBsaXN0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIHZhciByZXN1bHQgPSBtZXJnZSh7Zm9vOiAxMjN9LCB7Zm9vOiA0NTZ9KTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdC5mb28pOyAvLyBvdXRwdXRzIDQ1NlxuICogYGBgXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iajEgT2JqZWN0IHRvIG1lcmdlXG4gKlxuICogQHJldHVybnMge09iamVjdH0gUmVzdWx0IG9mIGFsbCBtZXJnZSBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIG1lcmdlKC8qIG9iajEsIG9iajIsIG9iajMsIC4uLiAqLykge1xuICBjb25zdCB7Y2FzZWxlc3N9ID0gaXNDb250ZXh0RGVmaW5lZCh0aGlzKSAmJiB0aGlzIHx8IHt9O1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgY29uc3QgYXNzaWduVmFsdWUgPSAodmFsLCBrZXkpID0+IHtcbiAgICBjb25zdCB0YXJnZXRLZXkgPSBjYXNlbGVzcyAmJiBmaW5kS2V5KHJlc3VsdCwga2V5KSB8fCBrZXk7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QocmVzdWx0W3RhcmdldEtleV0pICYmIGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSBtZXJnZShyZXN1bHRbdGFyZ2V0S2V5XSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSBtZXJnZSh7fSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsKSkge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSB2YWwuc2xpY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYXJndW1lbnRzW2ldICYmIGZvckVhY2goYXJndW1lbnRzW2ldLCBhc3NpZ25WYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBFeHRlbmRzIG9iamVjdCBhIGJ5IG11dGFibHkgYWRkaW5nIHRvIGl0IHRoZSBwcm9wZXJ0aWVzIG9mIG9iamVjdCBiLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhIFRoZSBvYmplY3QgdG8gYmUgZXh0ZW5kZWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBiIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cbiAqIEBwYXJhbSB7T2JqZWN0fSB0aGlzQXJnIFRoZSBvYmplY3QgdG8gYmluZCBmdW5jdGlvbiB0b1xuICpcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW2FsbE93bktleXNdXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIHZhbHVlIG9mIG9iamVjdCBhXG4gKi9cbmNvbnN0IGV4dGVuZCA9IChhLCBiLCB0aGlzQXJnLCB7YWxsT3duS2V5c309IHt9KSA9PiB7XG4gIGZvckVhY2goYiwgKHZhbCwga2V5KSA9PiB7XG4gICAgaWYgKHRoaXNBcmcgJiYgaXNGdW5jdGlvbih2YWwpKSB7XG4gICAgICBhW2tleV0gPSBiaW5kKHZhbCwgdGhpc0FyZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFba2V5XSA9IHZhbDtcbiAgICB9XG4gIH0sIHthbGxPd25LZXlzfSk7XG4gIHJldHVybiBhO1xufVxuXG4vKipcbiAqIFJlbW92ZSBieXRlIG9yZGVyIG1hcmtlci4gVGhpcyBjYXRjaGVzIEVGIEJCIEJGICh0aGUgVVRGLTggQk9NKVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IHdpdGggQk9NXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gY29udGVudCB2YWx1ZSB3aXRob3V0IEJPTVxuICovXG5jb25zdCBzdHJpcEJPTSA9IChjb250ZW50KSA9PiB7XG4gIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlclxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHN1cGVyQ29uc3RydWN0b3JcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcHJvcHNdXG4gKiBAcGFyYW0ge29iamVjdH0gW2Rlc2NyaXB0b3JzXVxuICpcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5jb25zdCBpbmhlcml0cyA9IChjb25zdHJ1Y3Rvciwgc3VwZXJDb25zdHJ1Y3RvciwgcHJvcHMsIGRlc2NyaXB0b3JzKSA9PiB7XG4gIGNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIGRlc2NyaXB0b3JzKTtcbiAgY29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3RvciwgJ3N1cGVyJywge1xuICAgIHZhbHVlOiBzdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZVxuICB9KTtcbiAgcHJvcHMgJiYgT2JqZWN0LmFzc2lnbihjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3BzKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIG9iamVjdCB3aXRoIGRlZXAgcHJvdG90eXBlIGNoYWluIHRvIGEgZmxhdCBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2VPYmogc291cmNlIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IFtkZXN0T2JqXVxuICogQHBhcmFtIHtGdW5jdGlvbnxCb29sZWFufSBbZmlsdGVyXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3Byb3BGaWx0ZXJdXG4gKlxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuY29uc3QgdG9GbGF0T2JqZWN0ID0gKHNvdXJjZU9iaiwgZGVzdE9iaiwgZmlsdGVyLCBwcm9wRmlsdGVyKSA9PiB7XG4gIGxldCBwcm9wcztcbiAgbGV0IGk7XG4gIGxldCBwcm9wO1xuICBjb25zdCBtZXJnZWQgPSB7fTtcblxuICBkZXN0T2JqID0gZGVzdE9iaiB8fCB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVxLW51bGwsZXFlcWVxXG4gIGlmIChzb3VyY2VPYmogPT0gbnVsbCkgcmV0dXJuIGRlc3RPYmo7XG5cbiAgZG8ge1xuICAgIHByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc291cmNlT2JqKTtcbiAgICBpID0gcHJvcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICBwcm9wID0gcHJvcHNbaV07XG4gICAgICBpZiAoKCFwcm9wRmlsdGVyIHx8IHByb3BGaWx0ZXIocHJvcCwgc291cmNlT2JqLCBkZXN0T2JqKSkgJiYgIW1lcmdlZFtwcm9wXSkge1xuICAgICAgICBkZXN0T2JqW3Byb3BdID0gc291cmNlT2JqW3Byb3BdO1xuICAgICAgICBtZXJnZWRbcHJvcF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3VyY2VPYmogPSBmaWx0ZXIgIT09IGZhbHNlICYmIGdldFByb3RvdHlwZU9mKHNvdXJjZU9iaik7XG4gIH0gd2hpbGUgKHNvdXJjZU9iaiAmJiAoIWZpbHRlciB8fCBmaWx0ZXIoc291cmNlT2JqLCBkZXN0T2JqKSkgJiYgc291cmNlT2JqICE9PSBPYmplY3QucHJvdG90eXBlKTtcblxuICByZXR1cm4gZGVzdE9iajtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIG9mIGEgc3BlY2lmaWVkIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWFyY2hTdHJpbmdcbiAqIEBwYXJhbSB7TnVtYmVyfSBbcG9zaXRpb249IDBdXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmNvbnN0IGVuZHNXaXRoID0gKHN0ciwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbikgPT4ge1xuICBzdHIgPSBTdHJpbmcoc3RyKTtcbiAgaWYgKHBvc2l0aW9uID09PSB1bmRlZmluZWQgfHwgcG9zaXRpb24gPiBzdHIubGVuZ3RoKSB7XG4gICAgcG9zaXRpb24gPSBzdHIubGVuZ3RoO1xuICB9XG4gIHBvc2l0aW9uIC09IHNlYXJjaFN0cmluZy5sZW5ndGg7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHN0ci5pbmRleE9mKHNlYXJjaFN0cmluZywgcG9zaXRpb24pO1xuICByZXR1cm4gbGFzdEluZGV4ICE9PSAtMSAmJiBsYXN0SW5kZXggPT09IHBvc2l0aW9uO1xufVxuXG5cbi8qKlxuICogUmV0dXJucyBuZXcgYXJyYXkgZnJvbSBhcnJheSBsaWtlIG9iamVjdCBvciBudWxsIGlmIGZhaWxlZFxuICpcbiAqIEBwYXJhbSB7Kn0gW3RoaW5nXVxuICpcbiAqIEByZXR1cm5zIHs/QXJyYXl9XG4gKi9cbmNvbnN0IHRvQXJyYXkgPSAodGhpbmcpID0+IHtcbiAgaWYgKCF0aGluZykgcmV0dXJuIG51bGw7XG4gIGlmIChpc0FycmF5KHRoaW5nKSkgcmV0dXJuIHRoaW5nO1xuICBsZXQgaSA9IHRoaW5nLmxlbmd0aDtcbiAgaWYgKCFpc051bWJlcihpKSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGFyciA9IG5ldyBBcnJheShpKTtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICBhcnJbaV0gPSB0aGluZ1tpXTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vKipcbiAqIENoZWNraW5nIGlmIHRoZSBVaW50OEFycmF5IGV4aXN0cyBhbmQgaWYgaXQgZG9lcywgaXQgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIHRoZVxuICogdGhpbmcgcGFzc2VkIGluIGlzIGFuIGluc3RhbmNlIG9mIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcGFyYW0ge1R5cGVkQXJyYXl9XG4gKlxuICogQHJldHVybnMge0FycmF5fVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuY29uc3QgaXNUeXBlZEFycmF5ID0gKFR5cGVkQXJyYXkgPT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICByZXR1cm4gdGhpbmcgPT4ge1xuICAgIHJldHVybiBUeXBlZEFycmF5ICYmIHRoaW5nIGluc3RhbmNlb2YgVHlwZWRBcnJheTtcbiAgfTtcbn0pKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiBnZXRQcm90b3R5cGVPZihVaW50OEFycmF5KSk7XG5cbi8qKlxuICogRm9yIGVhY2ggZW50cnkgaW4gdGhlIG9iamVjdCwgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUga2V5IGFuZCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdDxhbnksIGFueT59IG9iaiAtIFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBlbnRyeS5cbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuY29uc3QgZm9yRWFjaEVudHJ5ID0gKG9iaiwgZm4pID0+IHtcbiAgY29uc3QgZ2VuZXJhdG9yID0gb2JqICYmIG9ialtTeW1ib2wuaXRlcmF0b3JdO1xuXG4gIGNvbnN0IGl0ZXJhdG9yID0gZ2VuZXJhdG9yLmNhbGwob2JqKTtcblxuICBsZXQgcmVzdWx0O1xuXG4gIHdoaWxlICgocmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpKSAmJiAhcmVzdWx0LmRvbmUpIHtcbiAgICBjb25zdCBwYWlyID0gcmVzdWx0LnZhbHVlO1xuICAgIGZuLmNhbGwob2JqLCBwYWlyWzBdLCBwYWlyWzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIEl0IHRha2VzIGEgcmVndWxhciBleHByZXNzaW9uIGFuZCBhIHN0cmluZywgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHRoZSBtYXRjaGVzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlZ0V4cCAtIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggYWdhaW5zdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgc3RyaW5nIHRvIHNlYXJjaC5cbiAqXG4gKiBAcmV0dXJucyB7QXJyYXk8Ym9vbGVhbj59XG4gKi9cbmNvbnN0IG1hdGNoQWxsID0gKHJlZ0V4cCwgc3RyKSA9PiB7XG4gIGxldCBtYXRjaGVzO1xuICBjb25zdCBhcnIgPSBbXTtcblxuICB3aGlsZSAoKG1hdGNoZXMgPSByZWdFeHAuZXhlYyhzdHIpKSAhPT0gbnVsbCkge1xuICAgIGFyci5wdXNoKG1hdGNoZXMpO1xuICB9XG5cbiAgcmV0dXJuIGFycjtcbn1cblxuLyogQ2hlY2tpbmcgaWYgdGhlIGtpbmRPZlRlc3QgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gcGFzc2VkIGFuIEhUTUxGb3JtRWxlbWVudC4gKi9cbmNvbnN0IGlzSFRNTEZvcm0gPSBraW5kT2ZUZXN0KCdIVE1MRm9ybUVsZW1lbnQnKTtcblxuY29uc3QgdG9DYW1lbENhc2UgPSBzdHIgPT4ge1xuICByZXR1cm4gc3RyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXFxzXShbYS16XFxkXSkoXFx3KikvZyxcbiAgICBmdW5jdGlvbiByZXBsYWNlcihtLCBwMSwgcDIpIHtcbiAgICAgIHJldHVybiBwMS50b1VwcGVyQ2FzZSgpICsgcDI7XG4gICAgfVxuICApO1xufTtcblxuLyogQ3JlYXRpbmcgYSBmdW5jdGlvbiB0aGF0IHdpbGwgY2hlY2sgaWYgYW4gb2JqZWN0IGhhcyBhIHByb3BlcnR5LiAqL1xuY29uc3QgaGFzT3duUHJvcGVydHkgPSAoKHtoYXNPd25Qcm9wZXJ0eX0pID0+IChvYmosIHByb3ApID0+IGhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkoT2JqZWN0LnByb3RvdHlwZSk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBSZWdFeHAgb2JqZWN0XG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1JlZ0V4cCA9IGtpbmRPZlRlc3QoJ1JlZ0V4cCcpO1xuXG5jb25zdCByZWR1Y2VEZXNjcmlwdG9ycyA9IChvYmosIHJlZHVjZXIpID0+IHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvYmopO1xuICBjb25zdCByZWR1Y2VkRGVzY3JpcHRvcnMgPSB7fTtcblxuICBmb3JFYWNoKGRlc2NyaXB0b3JzLCAoZGVzY3JpcHRvciwgbmFtZSkgPT4ge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKChyZXQgPSByZWR1Y2VyKGRlc2NyaXB0b3IsIG5hbWUsIG9iaikpICE9PSBmYWxzZSkge1xuICAgICAgcmVkdWNlZERlc2NyaXB0b3JzW25hbWVdID0gcmV0IHx8IGRlc2NyaXB0b3I7XG4gICAgfVxuICB9KTtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvYmosIHJlZHVjZWREZXNjcmlwdG9ycyk7XG59XG5cbi8qKlxuICogTWFrZXMgYWxsIG1ldGhvZHMgcmVhZC1vbmx5XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKi9cblxuY29uc3QgZnJlZXplTWV0aG9kcyA9IChvYmopID0+IHtcbiAgcmVkdWNlRGVzY3JpcHRvcnMob2JqLCAoZGVzY3JpcHRvciwgbmFtZSkgPT4ge1xuICAgIC8vIHNraXAgcmVzdHJpY3RlZCBwcm9wcyBpbiBzdHJpY3QgbW9kZVxuICAgIGlmIChpc0Z1bmN0aW9uKG9iaikgJiYgWydhcmd1bWVudHMnLCAnY2FsbGVyJywgJ2NhbGxlZSddLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBvYmpbbmFtZV07XG5cbiAgICBpZiAoIWlzRnVuY3Rpb24odmFsdWUpKSByZXR1cm47XG5cbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBmYWxzZTtcblxuICAgIGlmICgnd3JpdGFibGUnIGluIGRlc2NyaXB0b3IpIHtcbiAgICAgIGRlc2NyaXB0b3Iud3JpdGFibGUgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWRlc2NyaXB0b3Iuc2V0KSB7XG4gICAgICBkZXNjcmlwdG9yLnNldCA9ICgpID0+IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0NhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kIFxcJycgKyBuYW1lICsgJ1xcJycpO1xuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuXG5jb25zdCB0b09iamVjdFNldCA9IChhcnJheU9yU3RyaW5nLCBkZWxpbWl0ZXIpID0+IHtcbiAgY29uc3Qgb2JqID0ge307XG5cbiAgY29uc3QgZGVmaW5lID0gKGFycikgPT4ge1xuICAgIGFyci5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgIG9ialt2YWx1ZV0gPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgaXNBcnJheShhcnJheU9yU3RyaW5nKSA/IGRlZmluZShhcnJheU9yU3RyaW5nKSA6IGRlZmluZShTdHJpbmcoYXJyYXlPclN0cmluZykuc3BsaXQoZGVsaW1pdGVyKSk7XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbmNvbnN0IHRvRmluaXRlTnVtYmVyID0gKHZhbHVlLCBkZWZhdWx0VmFsdWUpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlID0gK3ZhbHVlKSA/IHZhbHVlIDogZGVmYXVsdFZhbHVlO1xufVxuXG5jb25zdCBBTFBIQSA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidcblxuY29uc3QgRElHSVQgPSAnMDEyMzQ1Njc4OSc7XG5cbmNvbnN0IEFMUEhBQkVUID0ge1xuICBESUdJVCxcbiAgQUxQSEEsXG4gIEFMUEhBX0RJR0lUOiBBTFBIQSArIEFMUEhBLnRvVXBwZXJDYXNlKCkgKyBESUdJVFxufVxuXG5jb25zdCBnZW5lcmF0ZVN0cmluZyA9IChzaXplID0gMTYsIGFscGhhYmV0ID0gQUxQSEFCRVQuQUxQSEFfRElHSVQpID0+IHtcbiAgbGV0IHN0ciA9ICcnO1xuICBjb25zdCB7bGVuZ3RofSA9IGFscGhhYmV0O1xuICB3aGlsZSAoc2l6ZS0tKSB7XG4gICAgc3RyICs9IGFscGhhYmV0W01hdGgucmFuZG9tKCkgKiBsZW5ndGh8MF1cbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogSWYgdGhlIHRoaW5nIGlzIGEgRm9ybURhdGEgb2JqZWN0LCByZXR1cm4gdHJ1ZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHRoaW5nIC0gVGhlIHRoaW5nIHRvIGNoZWNrLlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1NwZWNDb21wbGlhbnRGb3JtKHRoaW5nKSB7XG4gIHJldHVybiAhISh0aGluZyAmJiBpc0Z1bmN0aW9uKHRoaW5nLmFwcGVuZCkgJiYgdGhpbmdbU3ltYm9sLnRvU3RyaW5nVGFnXSA9PT0gJ0Zvcm1EYXRhJyAmJiB0aGluZ1tTeW1ib2wuaXRlcmF0b3JdKTtcbn1cblxuY29uc3QgdG9KU09OT2JqZWN0ID0gKG9iaikgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBBcnJheSgxMCk7XG5cbiAgY29uc3QgdmlzaXQgPSAoc291cmNlLCBpKSA9PiB7XG5cbiAgICBpZiAoaXNPYmplY3Qoc291cmNlKSkge1xuICAgICAgaWYgKHN0YWNrLmluZGV4T2Yoc291cmNlKSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYoISgndG9KU09OJyBpbiBzb3VyY2UpKSB7XG4gICAgICAgIHN0YWNrW2ldID0gc291cmNlO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBpc0FycmF5KHNvdXJjZSkgPyBbXSA6IHt9O1xuXG4gICAgICAgIGZvckVhY2goc291cmNlLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlZHVjZWRWYWx1ZSA9IHZpc2l0KHZhbHVlLCBpICsgMSk7XG4gICAgICAgICAgIWlzVW5kZWZpbmVkKHJlZHVjZWRWYWx1ZSkgJiYgKHRhcmdldFtrZXldID0gcmVkdWNlZFZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3RhY2tbaV0gPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgcmV0dXJuIHZpc2l0KG9iaiwgMCk7XG59XG5cbmNvbnN0IGlzQXN5bmNGbiA9IGtpbmRPZlRlc3QoJ0FzeW5jRnVuY3Rpb24nKTtcblxuY29uc3QgaXNUaGVuYWJsZSA9ICh0aGluZykgPT5cbiAgdGhpbmcgJiYgKGlzT2JqZWN0KHRoaW5nKSB8fCBpc0Z1bmN0aW9uKHRoaW5nKSkgJiYgaXNGdW5jdGlvbih0aGluZy50aGVuKSAmJiBpc0Z1bmN0aW9uKHRoaW5nLmNhdGNoKTtcblxuLy8gb3JpZ2luYWwgY29kZVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0RpZ2l0YWxCcmFpbkpTL0F4aW9zUHJvbWlzZS9ibG9iLzE2ZGVhYjEzNzEwZWMwOTc3OTkyMjEzMWYzZmE1OTU0MzIwZjgzYWIvbGliL3V0aWxzLmpzI0wxMS1MMzRcblxuY29uc3QgX3NldEltbWVkaWF0ZSA9ICgoc2V0SW1tZWRpYXRlU3VwcG9ydGVkLCBwb3N0TWVzc2FnZVN1cHBvcnRlZCkgPT4ge1xuICBpZiAoc2V0SW1tZWRpYXRlU3VwcG9ydGVkKSB7XG4gICAgcmV0dXJuIHNldEltbWVkaWF0ZTtcbiAgfVxuXG4gIHJldHVybiBwb3N0TWVzc2FnZVN1cHBvcnRlZCA/ICgodG9rZW4sIGNhbGxiYWNrcykgPT4ge1xuICAgIF9nbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgKHtzb3VyY2UsIGRhdGF9KSA9PiB7XG4gICAgICBpZiAoc291cmNlID09PSBfZ2xvYmFsICYmIGRhdGEgPT09IHRva2VuKSB7XG4gICAgICAgIGNhbGxiYWNrcy5sZW5ndGggJiYgY2FsbGJhY2tzLnNoaWZ0KCkoKTtcbiAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG5cbiAgICByZXR1cm4gKGNiKSA9PiB7XG4gICAgICBjYWxsYmFja3MucHVzaChjYik7XG4gICAgICBfZ2xvYmFsLnBvc3RNZXNzYWdlKHRva2VuLCBcIipcIik7XG4gICAgfVxuICB9KShgYXhpb3NAJHtNYXRoLnJhbmRvbSgpfWAsIFtdKSA6IChjYikgPT4gc2V0VGltZW91dChjYik7XG59KShcbiAgdHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gJ2Z1bmN0aW9uJyxcbiAgaXNGdW5jdGlvbihfZ2xvYmFsLnBvc3RNZXNzYWdlKVxuKTtcblxuY29uc3QgYXNhcCA9IHR5cGVvZiBxdWV1ZU1pY3JvdGFzayAhPT0gJ3VuZGVmaW5lZCcgP1xuICBxdWV1ZU1pY3JvdGFzay5iaW5kKF9nbG9iYWwpIDogKCB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5uZXh0VGljayB8fCBfc2V0SW1tZWRpYXRlKTtcblxuLy8gKioqKioqKioqKioqKioqKioqKioqXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaXNBcnJheSxcbiAgaXNBcnJheUJ1ZmZlcixcbiAgaXNCdWZmZXIsXG4gIGlzRm9ybURhdGEsXG4gIGlzQXJyYXlCdWZmZXJWaWV3LFxuICBpc1N0cmluZyxcbiAgaXNOdW1iZXIsXG4gIGlzQm9vbGVhbixcbiAgaXNPYmplY3QsXG4gIGlzUGxhaW5PYmplY3QsXG4gIGlzUmVhZGFibGVTdHJlYW0sXG4gIGlzUmVxdWVzdCxcbiAgaXNSZXNwb25zZSxcbiAgaXNIZWFkZXJzLFxuICBpc1VuZGVmaW5lZCxcbiAgaXNEYXRlLFxuICBpc0ZpbGUsXG4gIGlzQmxvYixcbiAgaXNSZWdFeHAsXG4gIGlzRnVuY3Rpb24sXG4gIGlzU3RyZWFtLFxuICBpc1VSTFNlYXJjaFBhcmFtcyxcbiAgaXNUeXBlZEFycmF5LFxuICBpc0ZpbGVMaXN0LFxuICBmb3JFYWNoLFxuICBtZXJnZSxcbiAgZXh0ZW5kLFxuICB0cmltLFxuICBzdHJpcEJPTSxcbiAgaW5oZXJpdHMsXG4gIHRvRmxhdE9iamVjdCxcbiAga2luZE9mLFxuICBraW5kT2ZUZXN0LFxuICBlbmRzV2l0aCxcbiAgdG9BcnJheSxcbiAgZm9yRWFjaEVudHJ5LFxuICBtYXRjaEFsbCxcbiAgaXNIVE1MRm9ybSxcbiAgaGFzT3duUHJvcGVydHksXG4gIGhhc093blByb3A6IGhhc093blByb3BlcnR5LCAvLyBhbiBhbGlhcyB0byBhdm9pZCBFU0xpbnQgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIGRldGVjdGlvblxuICByZWR1Y2VEZXNjcmlwdG9ycyxcbiAgZnJlZXplTWV0aG9kcyxcbiAgdG9PYmplY3RTZXQsXG4gIHRvQ2FtZWxDYXNlLFxuICBub29wLFxuICB0b0Zpbml0ZU51bWJlcixcbiAgZmluZEtleSxcbiAgZ2xvYmFsOiBfZ2xvYmFsLFxuICBpc0NvbnRleHREZWZpbmVkLFxuICBBTFBIQUJFVCxcbiAgZ2VuZXJhdGVTdHJpbmcsXG4gIGlzU3BlY0NvbXBsaWFudEZvcm0sXG4gIHRvSlNPTk9iamVjdCxcbiAgaXNBc3luY0ZuLFxuICBpc1RoZW5hYmxlLFxuICBzZXRJbW1lZGlhdGU6IF9zZXRJbW1lZGlhdGUsXG4gIGFzYXBcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlLCBjb25maWcsIGVycm9yIGNvZGUsIHJlcXVlc3QgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbY29uZmlnXSBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5mdW5jdGlvbiBBeGlvc0Vycm9yKG1lc3NhZ2UsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgRXJyb3IuY2FsbCh0aGlzKTtcblxuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnN0YWNrID0gKG5ldyBFcnJvcigpKS5zdGFjaztcbiAgfVxuXG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gIHRoaXMubmFtZSA9ICdBeGlvc0Vycm9yJztcbiAgY29kZSAmJiAodGhpcy5jb2RlID0gY29kZSk7XG4gIGNvbmZpZyAmJiAodGhpcy5jb25maWcgPSBjb25maWcpO1xuICByZXF1ZXN0ICYmICh0aGlzLnJlcXVlc3QgPSByZXF1ZXN0KTtcbiAgaWYgKHJlc3BvbnNlKSB7XG4gICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICAgIHRoaXMuc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzID8gcmVzcG9uc2Uuc3RhdHVzIDogbnVsbDtcbiAgfVxufVxuXG51dGlscy5pbmhlcml0cyhBeGlvc0Vycm9yLCBFcnJvciwge1xuICB0b0pTT046IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gU3RhbmRhcmRcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIC8vIE1pY3Jvc29mdFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBudW1iZXI6IHRoaXMubnVtYmVyLFxuICAgICAgLy8gTW96aWxsYVxuICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZU5hbWUsXG4gICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG4gICAgICBjb2x1bW5OdW1iZXI6IHRoaXMuY29sdW1uTnVtYmVyLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICAvLyBBeGlvc1xuICAgICAgY29uZmlnOiB1dGlscy50b0pTT05PYmplY3QodGhpcy5jb25maWcpLFxuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1c1xuICAgIH07XG4gIH1cbn0pO1xuXG5jb25zdCBwcm90b3R5cGUgPSBBeGlvc0Vycm9yLnByb3RvdHlwZTtcbmNvbnN0IGRlc2NyaXB0b3JzID0ge307XG5cbltcbiAgJ0VSUl9CQURfT1BUSU9OX1ZBTFVFJyxcbiAgJ0VSUl9CQURfT1BUSU9OJyxcbiAgJ0VDT05OQUJPUlRFRCcsXG4gICdFVElNRURPVVQnLFxuICAnRVJSX05FVFdPUksnLFxuICAnRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUycsXG4gICdFUlJfREVQUkVDQVRFRCcsXG4gICdFUlJfQkFEX1JFU1BPTlNFJyxcbiAgJ0VSUl9CQURfUkVRVUVTVCcsXG4gICdFUlJfQ0FOQ0VMRUQnLFxuICAnRVJSX05PVF9TVVBQT1JUJyxcbiAgJ0VSUl9JTlZBTElEX1VSTCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5dLmZvckVhY2goY29kZSA9PiB7XG4gIGRlc2NyaXB0b3JzW2NvZGVdID0ge3ZhbHVlOiBjb2RlfTtcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhBeGlvc0Vycm9yLCBkZXNjcmlwdG9ycyk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCAnaXNBeGlvc0Vycm9yJywge3ZhbHVlOiB0cnVlfSk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5BeGlvc0Vycm9yLmZyb20gPSAoZXJyb3IsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UsIGN1c3RvbVByb3BzKSA9PiB7XG4gIGNvbnN0IGF4aW9zRXJyb3IgPSBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSk7XG5cbiAgdXRpbHMudG9GbGF0T2JqZWN0KGVycm9yLCBheGlvc0Vycm9yLCBmdW5jdGlvbiBmaWx0ZXIob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAhPT0gRXJyb3IucHJvdG90eXBlO1xuICB9LCBwcm9wID0+IHtcbiAgICByZXR1cm4gcHJvcCAhPT0gJ2lzQXhpb3NFcnJvcic7XG4gIH0pO1xuXG4gIEF4aW9zRXJyb3IuY2FsbChheGlvc0Vycm9yLCBlcnJvci5tZXNzYWdlLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlKTtcblxuICBheGlvc0Vycm9yLmNhdXNlID0gZXJyb3I7XG5cbiAgYXhpb3NFcnJvci5uYW1lID0gZXJyb3IubmFtZTtcblxuICBjdXN0b21Qcm9wcyAmJiBPYmplY3QuYXNzaWduKGF4aW9zRXJyb3IsIGN1c3RvbVByb3BzKTtcblxuICByZXR1cm4gYXhpb3NFcnJvcjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF4aW9zRXJyb3I7XG4iLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RyaWN0XG5leHBvcnQgZGVmYXVsdCBudWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi4vY29yZS9BeGlvc0Vycm9yLmpzJztcbi8vIHRlbXBvcmFyeSBob3RmaXggdG8gYXZvaWQgY2lyY3VsYXIgcmVmZXJlbmNlcyB1bnRpbCBBeGlvc1VSTFNlYXJjaFBhcmFtcyBpcyByZWZhY3RvcmVkXG5pbXBvcnQgUGxhdGZvcm1Gb3JtRGF0YSBmcm9tICcuLi9wbGF0Zm9ybS9ub2RlL2NsYXNzZXMvRm9ybURhdGEuanMnO1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHRoaW5nIGlzIGEgYXJyYXkgb3IganMgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aGluZyAtIFRoZSBvYmplY3Qgb3IgYXJyYXkgdG8gYmUgdmlzaXRlZC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNWaXNpdGFibGUodGhpbmcpIHtcbiAgcmV0dXJuIHV0aWxzLmlzUGxhaW5PYmplY3QodGhpbmcpIHx8IHV0aWxzLmlzQXJyYXkodGhpbmcpO1xufVxuXG4vKipcbiAqIEl0IHJlbW92ZXMgdGhlIGJyYWNrZXRzIGZyb20gdGhlIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBwYXJhbWV0ZXIuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gdGhlIGtleSB3aXRob3V0IHRoZSBicmFja2V0cy5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQnJhY2tldHMoa2V5KSB7XG4gIHJldHVybiB1dGlscy5lbmRzV2l0aChrZXksICdbXScpID8ga2V5LnNsaWNlKDAsIC0yKSA6IGtleTtcbn1cblxuLyoqXG4gKiBJdCB0YWtlcyBhIHBhdGgsIGEga2V5LCBhbmQgYSBib29sZWFuLCBhbmQgcmV0dXJucyBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIGN1cnJlbnQga2V5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgb2YgdGhlIGN1cnJlbnQgb2JqZWN0IGJlaW5nIGl0ZXJhdGVkIG92ZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gZG90cyAtIElmIHRydWUsIHRoZSBrZXkgd2lsbCBiZSByZW5kZXJlZCB3aXRoIGRvdHMgaW5zdGVhZCBvZiBicmFja2V0cy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcGF0aCB0byB0aGUgY3VycmVudCBrZXkuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlcktleShwYXRoLCBrZXksIGRvdHMpIHtcbiAgaWYgKCFwYXRoKSByZXR1cm4ga2V5O1xuICByZXR1cm4gcGF0aC5jb25jYXQoa2V5KS5tYXAoZnVuY3Rpb24gZWFjaCh0b2tlbiwgaSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIHRva2VuID0gcmVtb3ZlQnJhY2tldHModG9rZW4pO1xuICAgIHJldHVybiAhZG90cyAmJiBpID8gJ1snICsgdG9rZW4gKyAnXScgOiB0b2tlbjtcbiAgfSkuam9pbihkb3RzID8gJy4nIDogJycpO1xufVxuXG4vKipcbiAqIElmIHRoZSBhcnJheSBpcyBhbiBhcnJheSBhbmQgbm9uZSBvZiBpdHMgZWxlbWVudHMgYXJlIHZpc2l0YWJsZSwgdGhlbiBpdCdzIGEgZmxhdCBhcnJheS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PGFueT59IGFyciAtIFRoZSBhcnJheSB0byBjaGVja1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0ZsYXRBcnJheShhcnIpIHtcbiAgcmV0dXJuIHV0aWxzLmlzQXJyYXkoYXJyKSAmJiAhYXJyLnNvbWUoaXNWaXNpdGFibGUpO1xufVxuXG5jb25zdCBwcmVkaWNhdGVzID0gdXRpbHMudG9GbGF0T2JqZWN0KHV0aWxzLCB7fSwgbnVsbCwgZnVuY3Rpb24gZmlsdGVyKHByb3ApIHtcbiAgcmV0dXJuIC9eaXNbQS1aXS8udGVzdChwcm9wKTtcbn0pO1xuXG4vKipcbiAqIENvbnZlcnQgYSBkYXRhIG9iamVjdCB0byBGb3JtRGF0YVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEBwYXJhbSB7P09iamVjdH0gW2Zvcm1EYXRhXVxuICogQHBhcmFtIHs/T2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRpb25zLnZpc2l0b3JdXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLm1ldGFUb2tlbnMgPSB0cnVlXVxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5kb3RzID0gZmFsc2VdXG4gKiBAcGFyYW0gez9Cb29sZWFufSBbb3B0aW9ucy5pbmRleGVzID0gZmFsc2VdXG4gKlxuICogQHJldHVybnMge09iamVjdH1cbiAqKi9cblxuLyoqXG4gKiBJdCBjb252ZXJ0cyBhbiBvYmplY3QgaW50byBhIEZvcm1EYXRhIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0PGFueSwgYW55Pn0gb2JqIC0gVGhlIG9iamVjdCB0byBjb252ZXJ0IHRvIGZvcm0gZGF0YS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtRGF0YSAtIFRoZSBGb3JtRGF0YSBvYmplY3QgdG8gYXBwZW5kIHRvLlxuICogQHBhcmFtIHtPYmplY3Q8c3RyaW5nLCBhbnk+fSBvcHRpb25zXG4gKlxuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gdG9Gb3JtRGF0YShvYmosIGZvcm1EYXRhLCBvcHRpb25zKSB7XG4gIGlmICghdXRpbHMuaXNPYmplY3Qob2JqKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RhcmdldCBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGZvcm1EYXRhID0gZm9ybURhdGEgfHwgbmV3IChQbGF0Zm9ybUZvcm1EYXRhIHx8IEZvcm1EYXRhKSgpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBvcHRpb25zID0gdXRpbHMudG9GbGF0T2JqZWN0KG9wdGlvbnMsIHtcbiAgICBtZXRhVG9rZW5zOiB0cnVlLFxuICAgIGRvdHM6IGZhbHNlLFxuICAgIGluZGV4ZXM6IGZhbHNlXG4gIH0sIGZhbHNlLCBmdW5jdGlvbiBkZWZpbmVkKG9wdGlvbiwgc291cmNlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVxLW51bGwsZXFlcWVxXG4gICAgcmV0dXJuICF1dGlscy5pc1VuZGVmaW5lZChzb3VyY2Vbb3B0aW9uXSk7XG4gIH0pO1xuXG4gIGNvbnN0IG1ldGFUb2tlbnMgPSBvcHRpb25zLm1ldGFUb2tlbnM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBjb25zdCB2aXNpdG9yID0gb3B0aW9ucy52aXNpdG9yIHx8IGRlZmF1bHRWaXNpdG9yO1xuICBjb25zdCBkb3RzID0gb3B0aW9ucy5kb3RzO1xuICBjb25zdCBpbmRleGVzID0gb3B0aW9ucy5pbmRleGVzO1xuICBjb25zdCBfQmxvYiA9IG9wdGlvbnMuQmxvYiB8fCB0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCcgJiYgQmxvYjtcbiAgY29uc3QgdXNlQmxvYiA9IF9CbG9iICYmIHV0aWxzLmlzU3BlY0NvbXBsaWFudEZvcm0oZm9ybURhdGEpO1xuXG4gIGlmICghdXRpbHMuaXNGdW5jdGlvbih2aXNpdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Zpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBmdW5jdGlvbiBjb252ZXJ0VmFsdWUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiAnJztcblxuICAgIGlmICh1dGlscy5pc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUudG9JU09TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoIXVzZUJsb2IgJiYgdXRpbHMuaXNCbG9iKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ0Jsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXIodmFsdWUpIHx8IHV0aWxzLmlzVHlwZWRBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB1c2VCbG9iICYmIHR5cGVvZiBCbG9iID09PSAnZnVuY3Rpb24nID8gbmV3IEJsb2IoW3ZhbHVlXSkgOiBCdWZmZXIuZnJvbSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgdmlzaXRvci5cbiAgICpcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IGtleVxuICAgKiBAcGFyYW0ge0FycmF5PFN0cmluZ3xOdW1iZXI+fSBwYXRoXG4gICAqIEB0aGlzIHtGb3JtRGF0YX1cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHJldHVybiB0cnVlIHRvIHZpc2l0IHRoZSBlYWNoIHByb3Agb2YgdGhlIHZhbHVlIHJlY3Vyc2l2ZWx5XG4gICAqL1xuICBmdW5jdGlvbiBkZWZhdWx0VmlzaXRvcih2YWx1ZSwga2V5LCBwYXRoKSB7XG4gICAgbGV0IGFyciA9IHZhbHVlO1xuXG4gICAgaWYgKHZhbHVlICYmICFwYXRoICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICh1dGlscy5lbmRzV2l0aChrZXksICd7fScpKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBrZXkgPSBtZXRhVG9rZW5zID8ga2V5IDoga2V5LnNsaWNlKDAsIC0yKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgKHV0aWxzLmlzQXJyYXkodmFsdWUpICYmIGlzRmxhdEFycmF5KHZhbHVlKSkgfHxcbiAgICAgICAgKCh1dGlscy5pc0ZpbGVMaXN0KHZhbHVlKSB8fCB1dGlscy5lbmRzV2l0aChrZXksICdbXScpKSAmJiAoYXJyID0gdXRpbHMudG9BcnJheSh2YWx1ZSkpXG4gICAgICAgICkpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGtleSA9IHJlbW92ZUJyYWNrZXRzKGtleSk7XG5cbiAgICAgICAgYXJyLmZvckVhY2goZnVuY3Rpb24gZWFjaChlbCwgaW5kZXgpIHtcbiAgICAgICAgICAhKHV0aWxzLmlzVW5kZWZpbmVkKGVsKSB8fCBlbCA9PT0gbnVsbCkgJiYgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5lc3RlZC10ZXJuYXJ5XG4gICAgICAgICAgICBpbmRleGVzID09PSB0cnVlID8gcmVuZGVyS2V5KFtrZXldLCBpbmRleCwgZG90cykgOiAoaW5kZXhlcyA9PT0gbnVsbCA/IGtleSA6IGtleSArICdbXScpLFxuICAgICAgICAgICAgY29udmVydFZhbHVlKGVsKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzVmlzaXRhYmxlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZm9ybURhdGEuYXBwZW5kKHJlbmRlcktleShwYXRoLCBrZXksIGRvdHMpLCBjb252ZXJ0VmFsdWUodmFsdWUpKTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHN0YWNrID0gW107XG5cbiAgY29uc3QgZXhwb3NlZEhlbHBlcnMgPSBPYmplY3QuYXNzaWduKHByZWRpY2F0ZXMsIHtcbiAgICBkZWZhdWx0VmlzaXRvcixcbiAgICBjb252ZXJ0VmFsdWUsXG4gICAgaXNWaXNpdGFibGVcbiAgfSk7XG5cbiAgZnVuY3Rpb24gYnVpbGQodmFsdWUsIHBhdGgpIHtcbiAgICBpZiAodXRpbHMuaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm47XG5cbiAgICBpZiAoc3RhY2suaW5kZXhPZih2YWx1ZSkgIT09IC0xKSB7XG4gICAgICB0aHJvdyBFcnJvcignQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICcgKyBwYXRoLmpvaW4oJy4nKSk7XG4gICAgfVxuXG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG5cbiAgICB1dGlscy5mb3JFYWNoKHZhbHVlLCBmdW5jdGlvbiBlYWNoKGVsLCBrZXkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9ICEodXRpbHMuaXNVbmRlZmluZWQoZWwpIHx8IGVsID09PSBudWxsKSAmJiB2aXNpdG9yLmNhbGwoXG4gICAgICAgIGZvcm1EYXRhLCBlbCwgdXRpbHMuaXNTdHJpbmcoa2V5KSA/IGtleS50cmltKCkgOiBrZXksIHBhdGgsIGV4cG9zZWRIZWxwZXJzXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgIGJ1aWxkKGVsLCBwYXRoID8gcGF0aC5jb25jYXQoa2V5KSA6IFtrZXldKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0YWNrLnBvcCgpO1xuICB9XG5cbiAgaWYgKCF1dGlscy5pc09iamVjdChvYmopKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGF0YSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9XG5cbiAgYnVpbGQob2JqKTtcblxuICByZXR1cm4gZm9ybURhdGE7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvRm9ybURhdGE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0b0Zvcm1EYXRhIGZyb20gJy4vdG9Gb3JtRGF0YS5qcyc7XG5cbi8qKlxuICogSXQgZW5jb2RlcyBhIHN0cmluZyBieSByZXBsYWNpbmcgYWxsIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGluIHRoZSB1bnJlc2VydmVkIHNldCB3aXRoXG4gKiB0aGVpciBwZXJjZW50LWVuY29kZWQgZXF1aXZhbGVudHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIHN0cmluZyB0byBlbmNvZGUuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGVuY29kZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBlbmNvZGUoc3RyKSB7XG4gIGNvbnN0IGNoYXJNYXAgPSB7XG4gICAgJyEnOiAnJTIxJyxcbiAgICBcIidcIjogJyUyNycsXG4gICAgJygnOiAnJTI4JyxcbiAgICAnKSc6ICclMjknLFxuICAgICd+JzogJyU3RScsXG4gICAgJyUyMCc6ICcrJyxcbiAgICAnJTAwJzogJ1xceDAwJ1xuICB9O1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHN0cikucmVwbGFjZSgvWyEnKCl+XXwlMjB8JTAwL2csIGZ1bmN0aW9uIHJlcGxhY2VyKG1hdGNoKSB7XG4gICAgcmV0dXJuIGNoYXJNYXBbbWF0Y2hdO1xuICB9KTtcbn1cblxuLyoqXG4gKiBJdCB0YWtlcyBhIHBhcmFtcyBvYmplY3QgYW5kIGNvbnZlcnRzIGl0IHRvIGEgRm9ybURhdGEgb2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3Q8c3RyaW5nLCBhbnk+fSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byBiZSBjb252ZXJ0ZWQgdG8gYSBGb3JtRGF0YSBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdDxzdHJpbmcsIGFueT59IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QgcGFzc2VkIHRvIHRoZSBBeGlvcyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gQXhpb3NVUkxTZWFyY2hQYXJhbXMocGFyYW1zLCBvcHRpb25zKSB7XG4gIHRoaXMuX3BhaXJzID0gW107XG5cbiAgcGFyYW1zICYmIHRvRm9ybURhdGEocGFyYW1zLCB0aGlzLCBvcHRpb25zKTtcbn1cblxuY29uc3QgcHJvdG90eXBlID0gQXhpb3NVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xuXG5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gYXBwZW5kKG5hbWUsIHZhbHVlKSB7XG4gIHRoaXMuX3BhaXJzLnB1c2goW25hbWUsIHZhbHVlXSk7XG59O1xuXG5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyhlbmNvZGVyKSB7XG4gIGNvbnN0IF9lbmNvZGUgPSBlbmNvZGVyID8gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZW5jb2Rlci5jYWxsKHRoaXMsIHZhbHVlLCBlbmNvZGUpO1xuICB9IDogZW5jb2RlO1xuXG4gIHJldHVybiB0aGlzLl9wYWlycy5tYXAoZnVuY3Rpb24gZWFjaChwYWlyKSB7XG4gICAgcmV0dXJuIF9lbmNvZGUocGFpclswXSkgKyAnPScgKyBfZW5jb2RlKHBhaXJbMV0pO1xuICB9LCAnJykuam9pbignJicpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXhpb3NVUkxTZWFyY2hQYXJhbXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgQXhpb3NVUkxTZWFyY2hQYXJhbXMgZnJvbSAnLi4vaGVscGVycy9BeGlvc1VSTFNlYXJjaFBhcmFtcy5qcyc7XG5cbi8qKlxuICogSXQgcmVwbGFjZXMgYWxsIGluc3RhbmNlcyBvZiB0aGUgY2hhcmFjdGVycyBgOmAsIGAkYCwgYCxgLCBgK2AsIGBbYCwgYW5kIGBdYCB3aXRoIHRoZWlyXG4gKiBVUkkgZW5jb2RlZCBjb3VudGVycGFydHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIFRoZSB2YWx1ZSB0byBiZSBlbmNvZGVkLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbmNvZGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBlbmNvZGUodmFsKSB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsKS5cbiAgICByZXBsYWNlKC8lM0EvZ2ksICc6JykuXG4gICAgcmVwbGFjZSgvJTI0L2csICckJykuXG4gICAgcmVwbGFjZSgvJTJDL2dpLCAnLCcpLlxuICAgIHJlcGxhY2UoLyUyMC9nLCAnKycpLlxuICAgIHJlcGxhY2UoLyU1Qi9naSwgJ1snKS5cbiAgICByZXBsYWNlKC8lNUQvZ2ksICddJyk7XG59XG5cbi8qKlxuICogQnVpbGQgYSBVUkwgYnkgYXBwZW5kaW5nIHBhcmFtcyB0byB0aGUgZW5kXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgYmFzZSBvZiB0aGUgdXJsIChlLmcuLCBodHRwOi8vd3d3Lmdvb2dsZS5jb20pXG4gKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gVGhlIHBhcmFtcyB0byBiZSBhcHBlbmRlZFxuICogQHBhcmFtIHs/KG9iamVjdHxGdW5jdGlvbil9IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIHVybFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZFVSTCh1cmwsIHBhcmFtcywgb3B0aW9ucykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgaWYgKCFwYXJhbXMpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG4gIFxuICBjb25zdCBfZW5jb2RlID0gb3B0aW9ucyAmJiBvcHRpb25zLmVuY29kZSB8fCBlbmNvZGU7XG5cbiAgaWYgKHV0aWxzLmlzRnVuY3Rpb24ob3B0aW9ucykpIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgc2VyaWFsaXplOiBvcHRpb25zXG4gICAgfTtcbiAgfSBcblxuICBjb25zdCBzZXJpYWxpemVGbiA9IG9wdGlvbnMgJiYgb3B0aW9ucy5zZXJpYWxpemU7XG5cbiAgbGV0IHNlcmlhbGl6ZWRQYXJhbXM7XG5cbiAgaWYgKHNlcmlhbGl6ZUZuKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHNlcmlhbGl6ZUZuKHBhcmFtcywgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykgP1xuICAgICAgcGFyYW1zLnRvU3RyaW5nKCkgOlxuICAgICAgbmV3IEF4aW9zVVJMU2VhcmNoUGFyYW1zKHBhcmFtcywgb3B0aW9ucykudG9TdHJpbmcoX2VuY29kZSk7XG4gIH1cblxuICBpZiAoc2VyaWFsaXplZFBhcmFtcykge1xuICAgIGNvbnN0IGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZihcIiNcIik7XG5cbiAgICBpZiAoaGFzaG1hcmtJbmRleCAhPT0gLTEpIHtcbiAgICAgIHVybCA9IHVybC5zbGljZSgwLCBoYXNobWFya0luZGV4KTtcbiAgICB9XG4gICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyBzZXJpYWxpemVkUGFyYW1zO1xuICB9XG5cbiAgcmV0dXJuIHVybDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuXG5jbGFzcyBJbnRlcmNlcHRvck1hbmFnZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmhhbmRsZXJzID0gW107XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IGludGVyY2VwdG9yIHRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdWxmaWxsZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgdGhlbmAgZm9yIGEgYFByb21pc2VgXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHJlamVjdGAgZm9yIGEgYFByb21pc2VgXG4gICAqXG4gICAqIEByZXR1cm4ge051bWJlcn0gQW4gSUQgdXNlZCB0byByZW1vdmUgaW50ZXJjZXB0b3IgbGF0ZXJcbiAgICovXG4gIHVzZShmdWxmaWxsZWQsIHJlamVjdGVkLCBvcHRpb25zKSB7XG4gICAgdGhpcy5oYW5kbGVycy5wdXNoKHtcbiAgICAgIGZ1bGZpbGxlZCxcbiAgICAgIHJlamVjdGVkLFxuICAgICAgc3luY2hyb25vdXM6IG9wdGlvbnMgPyBvcHRpb25zLnN5bmNocm9ub3VzIDogZmFsc2UsXG4gICAgICBydW5XaGVuOiBvcHRpb25zID8gb3B0aW9ucy5ydW5XaGVuIDogbnVsbFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmhhbmRsZXJzLmxlbmd0aCAtIDE7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGludGVyY2VwdG9yIGZyb20gdGhlIHN0YWNrXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBpZCBUaGUgSUQgdGhhdCB3YXMgcmV0dXJuZWQgYnkgYHVzZWBcbiAgICpcbiAgICogQHJldHVybnMge0Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaW50ZXJjZXB0b3Igd2FzIHJlbW92ZWQsIGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAqL1xuICBlamVjdChpZCkge1xuICAgIGlmICh0aGlzLmhhbmRsZXJzW2lkXSkge1xuICAgICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgaW50ZXJjZXB0b3JzIGZyb20gdGhlIHN0YWNrXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgaWYgKHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgIHRoaXMuaGFuZGxlcnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSXRlcmF0ZSBvdmVyIGFsbCB0aGUgcmVnaXN0ZXJlZCBpbnRlcmNlcHRvcnNcbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3Igc2tpcHBpbmcgb3ZlciBhbnlcbiAgICogaW50ZXJjZXB0b3JzIHRoYXQgbWF5IGhhdmUgYmVjb21lIGBudWxsYCBjYWxsaW5nIGBlamVjdGAuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGludGVyY2VwdG9yXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZm9yRWFjaChmbikge1xuICAgIHV0aWxzLmZvckVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24gZm9yRWFjaEhhbmRsZXIoaCkge1xuICAgICAgaWYgKGggIT09IG51bGwpIHtcbiAgICAgICAgZm4oaCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSW50ZXJjZXB0b3JNYW5hZ2VyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNpbGVudEpTT05QYXJzaW5nOiB0cnVlLFxuICBmb3JjZWRKU09OUGFyc2luZzogdHJ1ZSxcbiAgY2xhcmlmeVRpbWVvdXRFcnJvcjogZmFsc2Vcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBBeGlvc1VSTFNlYXJjaFBhcmFtcyBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL0F4aW9zVVJMU2VhcmNoUGFyYW1zLmpzJztcbmV4cG9ydCBkZWZhdWx0IHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMgIT09ICd1bmRlZmluZWQnID8gVVJMU2VhcmNoUGFyYW1zIDogQXhpb3NVUkxTZWFyY2hQYXJhbXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IHR5cGVvZiBGb3JtRGF0YSAhPT0gJ3VuZGVmaW5lZCcgPyBGb3JtRGF0YSA6IG51bGw7XG4iLCIndXNlIHN0cmljdCdcblxuZXhwb3J0IGRlZmF1bHQgdHlwZW9mIEJsb2IgIT09ICd1bmRlZmluZWQnID8gQmxvYiA6IG51bGxcbiIsImltcG9ydCBVUkxTZWFyY2hQYXJhbXMgZnJvbSAnLi9jbGFzc2VzL1VSTFNlYXJjaFBhcmFtcy5qcydcbmltcG9ydCBGb3JtRGF0YSBmcm9tICcuL2NsYXNzZXMvRm9ybURhdGEuanMnXG5pbXBvcnQgQmxvYiBmcm9tICcuL2NsYXNzZXMvQmxvYi5qcydcblxuZXhwb3J0IGRlZmF1bHQge1xuICBpc0Jyb3dzZXI6IHRydWUsXG4gIGNsYXNzZXM6IHtcbiAgICBVUkxTZWFyY2hQYXJhbXMsXG4gICAgRm9ybURhdGEsXG4gICAgQmxvYlxuICB9LFxuICBwcm90b2NvbHM6IFsnaHR0cCcsICdodHRwcycsICdmaWxlJywgJ2Jsb2InLCAndXJsJywgJ2RhdGEnXVxufTtcbiIsImNvbnN0IGhhc0Jyb3dzZXJFbnYgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xuXG5jb25zdCBfbmF2aWdhdG9yID0gdHlwZW9mIG5hdmlnYXRvciA9PT0gJ29iamVjdCcgJiYgbmF2aWdhdG9yIHx8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnRcbiAqXG4gKiBUaGlzIGFsbG93cyBheGlvcyB0byBydW4gaW4gYSB3ZWIgd29ya2VyLCBhbmQgcmVhY3QtbmF0aXZlLlxuICogQm90aCBlbnZpcm9ubWVudHMgc3VwcG9ydCBYTUxIdHRwUmVxdWVzdCwgYnV0IG5vdCBmdWxseSBzdGFuZGFyZCBnbG9iYWxzLlxuICpcbiAqIHdlYiB3b3JrZXJzOlxuICogIHR5cGVvZiB3aW5kb3cgLT4gdW5kZWZpbmVkXG4gKiAgdHlwZW9mIGRvY3VtZW50IC0+IHVuZGVmaW5lZFxuICpcbiAqIHJlYWN0LW5hdGl2ZTpcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnUmVhY3ROYXRpdmUnXG4gKiBuYXRpdmVzY3JpcHRcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnTmF0aXZlU2NyaXB0JyBvciAnTlMnXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmNvbnN0IGhhc1N0YW5kYXJkQnJvd3NlckVudiA9IGhhc0Jyb3dzZXJFbnYgJiZcbiAgKCFfbmF2aWdhdG9yIHx8IFsnUmVhY3ROYXRpdmUnLCAnTmF0aXZlU2NyaXB0JywgJ05TJ10uaW5kZXhPZihfbmF2aWdhdG9yLnByb2R1Y3QpIDwgMCk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIHdlYldvcmtlciBlbnZpcm9ubWVudFxuICpcbiAqIEFsdGhvdWdoIHRoZSBgaXNTdGFuZGFyZEJyb3dzZXJFbnZgIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdFxuICogYGFsbG93cyBheGlvcyB0byBydW4gaW4gYSB3ZWIgd29ya2VyYCwgdGhlIFdlYldvcmtlciB3aWxsIHN0aWxsIGJlXG4gKiBmaWx0ZXJlZCBvdXQgZHVlIHRvIGl0cyBqdWRnbWVudCBzdGFuZGFyZFxuICogYHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdgLlxuICogVGhpcyBsZWFkcyB0byBhIHByb2JsZW0gd2hlbiBheGlvcyBwb3N0IGBGb3JtRGF0YWAgaW4gd2ViV29ya2VyXG4gKi9cbmNvbnN0IGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudiA9ICgoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSAmJlxuICAgIHR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHMgPT09ICdmdW5jdGlvbidcbiAgKTtcbn0pKCk7XG5cbmNvbnN0IG9yaWdpbiA9IGhhc0Jyb3dzZXJFbnYgJiYgd2luZG93LmxvY2F0aW9uLmhyZWYgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnO1xuXG5leHBvcnQge1xuICBoYXNCcm93c2VyRW52LFxuICBoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYsXG4gIGhhc1N0YW5kYXJkQnJvd3NlckVudixcbiAgX25hdmlnYXRvciBhcyBuYXZpZ2F0b3IsXG4gIG9yaWdpblxufVxuIiwiaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4vbm9kZS9pbmRleC5qcyc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL2NvbW1vbi91dGlscy5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLi4udXRpbHMsXG4gIC4uLnBsYXRmb3JtXG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgdG9Gb3JtRGF0YSBmcm9tICcuL3RvRm9ybURhdGEuanMnO1xuaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4uL3BsYXRmb3JtL2luZGV4LmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9VUkxFbmNvZGVkRm9ybShkYXRhLCBvcHRpb25zKSB7XG4gIHJldHVybiB0b0Zvcm1EYXRhKGRhdGEsIG5ldyBwbGF0Zm9ybS5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcygpLCBPYmplY3QuYXNzaWduKHtcbiAgICB2aXNpdG9yOiBmdW5jdGlvbih2YWx1ZSwga2V5LCBwYXRoLCBoZWxwZXJzKSB7XG4gICAgICBpZiAocGxhdGZvcm0uaXNOb2RlICYmIHV0aWxzLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgICB0aGlzLmFwcGVuZChrZXksIHZhbHVlLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGhlbHBlcnMuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH0sIG9wdGlvbnMpKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcblxuLyoqXG4gKiBJdCB0YWtlcyBhIHN0cmluZyBsaWtlIGBmb29beF1beV1bel1gIGFuZCByZXR1cm5zIGFuIGFycmF5IGxpa2UgYFsnZm9vJywgJ3gnLCAneScsICd6J11cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKlxuICogQHJldHVybnMgQW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqL1xuZnVuY3Rpb24gcGFyc2VQcm9wUGF0aChuYW1lKSB7XG4gIC8vIGZvb1t4XVt5XVt6XVxuICAvLyBmb28ueC55LnpcbiAgLy8gZm9vLXgteS16XG4gIC8vIGZvbyB4IHkgelxuICByZXR1cm4gdXRpbHMubWF0Y2hBbGwoL1xcdyt8XFxbKFxcdyopXS9nLCBuYW1lKS5tYXAobWF0Y2ggPT4ge1xuICAgIHJldHVybiBtYXRjaFswXSA9PT0gJ1tdJyA/ICcnIDogbWF0Y2hbMV0gfHwgbWF0Y2hbMF07XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gYXJyYXkgdG8gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8YW55Pn0gYXJyIC0gVGhlIGFycmF5IHRvIGNvbnZlcnQgdG8gYW4gb2JqZWN0LlxuICpcbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleXMgYW5kIHZhbHVlcyBhcyB0aGUgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5VG9PYmplY3QoYXJyKSB7XG4gIGNvbnN0IG9iaiA9IHt9O1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYXJyKTtcbiAgbGV0IGk7XG4gIGNvbnN0IGxlbiA9IGtleXMubGVuZ3RoO1xuICBsZXQga2V5O1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBrZXkgPSBrZXlzW2ldO1xuICAgIG9ialtrZXldID0gYXJyW2tleV07XG4gIH1cbiAgcmV0dXJuIG9iajtcbn1cblxuLyoqXG4gKiBJdCB0YWtlcyBhIEZvcm1EYXRhIG9iamVjdCBhbmQgcmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1EYXRhIFRoZSBGb3JtRGF0YSBvYmplY3QgdG8gY29udmVydCB0byBKU09OLlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3Q8c3RyaW5nLCBhbnk+IHwgbnVsbH0gVGhlIGNvbnZlcnRlZCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGZvcm1EYXRhVG9KU09OKGZvcm1EYXRhKSB7XG4gIGZ1bmN0aW9uIGJ1aWxkUGF0aChwYXRoLCB2YWx1ZSwgdGFyZ2V0LCBpbmRleCkge1xuICAgIGxldCBuYW1lID0gcGF0aFtpbmRleCsrXTtcblxuICAgIGlmIChuYW1lID09PSAnX19wcm90b19fJykgcmV0dXJuIHRydWU7XG5cbiAgICBjb25zdCBpc051bWVyaWNLZXkgPSBOdW1iZXIuaXNGaW5pdGUoK25hbWUpO1xuICAgIGNvbnN0IGlzTGFzdCA9IGluZGV4ID49IHBhdGgubGVuZ3RoO1xuICAgIG5hbWUgPSAhbmFtZSAmJiB1dGlscy5pc0FycmF5KHRhcmdldCkgPyB0YXJnZXQubGVuZ3RoIDogbmFtZTtcblxuICAgIGlmIChpc0xhc3QpIHtcbiAgICAgIGlmICh1dGlscy5oYXNPd25Qcm9wKHRhcmdldCwgbmFtZSkpIHtcbiAgICAgICAgdGFyZ2V0W25hbWVdID0gW3RhcmdldFtuYW1lXSwgdmFsdWVdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0W25hbWVdID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAhaXNOdW1lcmljS2V5O1xuICAgIH1cblxuICAgIGlmICghdGFyZ2V0W25hbWVdIHx8ICF1dGlscy5pc09iamVjdCh0YXJnZXRbbmFtZV0pKSB7XG4gICAgICB0YXJnZXRbbmFtZV0gPSBbXTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBidWlsZFBhdGgocGF0aCwgdmFsdWUsIHRhcmdldFtuYW1lXSwgaW5kZXgpO1xuXG4gICAgaWYgKHJlc3VsdCAmJiB1dGlscy5pc0FycmF5KHRhcmdldFtuYW1lXSkpIHtcbiAgICAgIHRhcmdldFtuYW1lXSA9IGFycmF5VG9PYmplY3QodGFyZ2V0W25hbWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gIWlzTnVtZXJpY0tleTtcbiAgfVxuXG4gIGlmICh1dGlscy5pc0Zvcm1EYXRhKGZvcm1EYXRhKSAmJiB1dGlscy5pc0Z1bmN0aW9uKGZvcm1EYXRhLmVudHJpZXMpKSB7XG4gICAgY29uc3Qgb2JqID0ge307XG5cbiAgICB1dGlscy5mb3JFYWNoRW50cnkoZm9ybURhdGEsIChuYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgYnVpbGRQYXRoKHBhcnNlUHJvcFBhdGgobmFtZSksIHZhbHVlLCBvYmosIDApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmb3JtRGF0YVRvSlNPTjtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4uL2NvcmUvQXhpb3NFcnJvci5qcyc7XG5pbXBvcnQgdHJhbnNpdGlvbmFsRGVmYXVsdHMgZnJvbSAnLi90cmFuc2l0aW9uYWwuanMnO1xuaW1wb3J0IHRvRm9ybURhdGEgZnJvbSAnLi4vaGVscGVycy90b0Zvcm1EYXRhLmpzJztcbmltcG9ydCB0b1VSTEVuY29kZWRGb3JtIGZyb20gJy4uL2hlbHBlcnMvdG9VUkxFbmNvZGVkRm9ybS5qcyc7XG5pbXBvcnQgcGxhdGZvcm0gZnJvbSAnLi4vcGxhdGZvcm0vaW5kZXguanMnO1xuaW1wb3J0IGZvcm1EYXRhVG9KU09OIGZyb20gJy4uL2hlbHBlcnMvZm9ybURhdGFUb0pTT04uanMnO1xuXG4vKipcbiAqIEl0IHRha2VzIGEgc3RyaW5nLCB0cmllcyB0byBwYXJzZSBpdCwgYW5kIGlmIGl0IGZhaWxzLCBpdCByZXR1cm5zIHRoZSBzdHJpbmdpZmllZCB2ZXJzaW9uXG4gKiBvZiB0aGUgaW5wdXRcbiAqXG4gKiBAcGFyYW0ge2FueX0gcmF3VmFsdWUgLSBUaGUgdmFsdWUgdG8gYmUgc3RyaW5naWZpZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJzZXIgLSBBIGZ1bmN0aW9uIHRoYXQgcGFyc2VzIGEgc3RyaW5nIGludG8gYSBKYXZhU2NyaXB0IG9iamVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVuY29kZXIgLSBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSB2YWx1ZSBhbmQgcmV0dXJucyBhIHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHN0cmluZ2lmaWVkIHZlcnNpb24gb2YgdGhlIHJhd1ZhbHVlLlxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlTYWZlbHkocmF3VmFsdWUsIHBhcnNlciwgZW5jb2Rlcikge1xuICBpZiAodXRpbHMuaXNTdHJpbmcocmF3VmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIChwYXJzZXIgfHwgSlNPTi5wYXJzZSkocmF3VmFsdWUpO1xuICAgICAgcmV0dXJuIHV0aWxzLnRyaW0ocmF3VmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLm5hbWUgIT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGVuY29kZXIgfHwgSlNPTi5zdHJpbmdpZnkpKHJhd1ZhbHVlKTtcbn1cblxuY29uc3QgZGVmYXVsdHMgPSB7XG5cbiAgdHJhbnNpdGlvbmFsOiB0cmFuc2l0aW9uYWxEZWZhdWx0cyxcblxuICBhZGFwdGVyOiBbJ3hocicsICdodHRwJywgJ2ZldGNoJ10sXG5cbiAgdHJhbnNmb3JtUmVxdWVzdDogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlcXVlc3QoZGF0YSwgaGVhZGVycykge1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gaGVhZGVycy5nZXRDb250ZW50VHlwZSgpIHx8ICcnO1xuICAgIGNvbnN0IGhhc0pTT05Db250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSA+IC0xO1xuICAgIGNvbnN0IGlzT2JqZWN0UGF5bG9hZCA9IHV0aWxzLmlzT2JqZWN0KGRhdGEpO1xuXG4gICAgaWYgKGlzT2JqZWN0UGF5bG9hZCAmJiB1dGlscy5pc0hUTUxGb3JtKGRhdGEpKSB7XG4gICAgICBkYXRhID0gbmV3IEZvcm1EYXRhKGRhdGEpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRm9ybURhdGEgPSB1dGlscy5pc0Zvcm1EYXRhKGRhdGEpO1xuXG4gICAgaWYgKGlzRm9ybURhdGEpIHtcbiAgICAgIHJldHVybiBoYXNKU09OQ29udGVudFR5cGUgPyBKU09OLnN0cmluZ2lmeShmb3JtRGF0YVRvSlNPTihkYXRhKSkgOiBkYXRhO1xuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0J1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNTdHJlYW0oZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzRmlsZShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCbG9iKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc1JlYWRhYmxlU3RyZWFtKGRhdGEpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGRhdGEpKSB7XG4gICAgICByZXR1cm4gZGF0YS5idWZmZXI7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhkYXRhKSkge1xuICAgICAgaGVhZGVycy5zZXRDb250ZW50VHlwZSgnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnLCBmYWxzZSk7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCBpc0ZpbGVMaXN0O1xuXG4gICAgaWYgKGlzT2JqZWN0UGF5bG9hZCkge1xuICAgICAgaWYgKGNvbnRlbnRUeXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRvVVJMRW5jb2RlZEZvcm0oZGF0YSwgdGhpcy5mb3JtU2VyaWFsaXplcikudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKChpc0ZpbGVMaXN0ID0gdXRpbHMuaXNGaWxlTGlzdChkYXRhKSkgfHwgY29udGVudFR5cGUuaW5kZXhPZignbXVsdGlwYXJ0L2Zvcm0tZGF0YScpID4gLTEpIHtcbiAgICAgICAgY29uc3QgX0Zvcm1EYXRhID0gdGhpcy5lbnYgJiYgdGhpcy5lbnYuRm9ybURhdGE7XG5cbiAgICAgICAgcmV0dXJuIHRvRm9ybURhdGEoXG4gICAgICAgICAgaXNGaWxlTGlzdCA/IHsnZmlsZXNbXSc6IGRhdGF9IDogZGF0YSxcbiAgICAgICAgICBfRm9ybURhdGEgJiYgbmV3IF9Gb3JtRGF0YSgpLFxuICAgICAgICAgIHRoaXMuZm9ybVNlcmlhbGl6ZXJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3RQYXlsb2FkIHx8IGhhc0pTT05Db250ZW50VHlwZSApIHtcbiAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ2FwcGxpY2F0aW9uL2pzb24nLCBmYWxzZSk7XG4gICAgICByZXR1cm4gc3RyaW5naWZ5U2FmZWx5KGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlc3BvbnNlKGRhdGEpIHtcbiAgICBjb25zdCB0cmFuc2l0aW9uYWwgPSB0aGlzLnRyYW5zaXRpb25hbCB8fCBkZWZhdWx0cy50cmFuc2l0aW9uYWw7XG4gICAgY29uc3QgZm9yY2VkSlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLmZvcmNlZEpTT05QYXJzaW5nO1xuICAgIGNvbnN0IEpTT05SZXF1ZXN0ZWQgPSB0aGlzLnJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nO1xuXG4gICAgaWYgKHV0aWxzLmlzUmVzcG9uc2UoZGF0YSkgfHwgdXRpbHMuaXNSZWFkYWJsZVN0cmVhbShkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEgJiYgdXRpbHMuaXNTdHJpbmcoZGF0YSkgJiYgKChmb3JjZWRKU09OUGFyc2luZyAmJiAhdGhpcy5yZXNwb25zZVR5cGUpIHx8IEpTT05SZXF1ZXN0ZWQpKSB7XG4gICAgICBjb25zdCBzaWxlbnRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuc2lsZW50SlNPTlBhcnNpbmc7XG4gICAgICBjb25zdCBzdHJpY3RKU09OUGFyc2luZyA9ICFzaWxlbnRKU09OUGFyc2luZyAmJiBKU09OUmVxdWVzdGVkO1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHN0cmljdEpTT05QYXJzaW5nKSB7XG4gICAgICAgICAgaWYgKGUubmFtZSA9PT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICAgICAgdGhyb3cgQXhpb3NFcnJvci5mcm9tKGUsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVNQT05TRSwgdGhpcywgbnVsbCwgdGhpcy5yZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgLyoqXG4gICAqIEEgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gYWJvcnQgYSByZXF1ZXN0LiBJZiBzZXQgdG8gMCAoZGVmYXVsdCkgYVxuICAgKiB0aW1lb3V0IGlzIG5vdCBjcmVhdGVkLlxuICAgKi9cbiAgdGltZW91dDogMCxcblxuICB4c3JmQ29va2llTmFtZTogJ1hTUkYtVE9LRU4nLFxuICB4c3JmSGVhZGVyTmFtZTogJ1gtWFNSRi1UT0tFTicsXG5cbiAgbWF4Q29udGVudExlbmd0aDogLTEsXG4gIG1heEJvZHlMZW5ndGg6IC0xLFxuXG4gIGVudjoge1xuICAgIEZvcm1EYXRhOiBwbGF0Zm9ybS5jbGFzc2VzLkZvcm1EYXRhLFxuICAgIEJsb2I6IHBsYXRmb3JtLmNsYXNzZXMuQmxvYlxuICB9LFxuXG4gIHZhbGlkYXRlU3RhdHVzOiBmdW5jdGlvbiB2YWxpZGF0ZVN0YXR1cyhzdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG4gIH0sXG5cbiAgaGVhZGVyczoge1xuICAgIGNvbW1vbjoge1xuICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonLFxuICAgICAgJ0NvbnRlbnQtVHlwZSc6IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxufTtcblxudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCddLCAobWV0aG9kKSA9PiB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHt9O1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5cbi8vIFJhd0F4aW9zSGVhZGVycyB3aG9zZSBkdXBsaWNhdGVzIGFyZSBpZ25vcmVkIGJ5IG5vZGVcbi8vIGMuZi4gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9tZXNzYWdlX2hlYWRlcnNcbmNvbnN0IGlnbm9yZUR1cGxpY2F0ZU9mID0gdXRpbHMudG9PYmplY3RTZXQoW1xuICAnYWdlJywgJ2F1dGhvcml6YXRpb24nLCAnY29udGVudC1sZW5ndGgnLCAnY29udGVudC10eXBlJywgJ2V0YWcnLFxuICAnZXhwaXJlcycsICdmcm9tJywgJ2hvc3QnLCAnaWYtbW9kaWZpZWQtc2luY2UnLCAnaWYtdW5tb2RpZmllZC1zaW5jZScsXG4gICdsYXN0LW1vZGlmaWVkJywgJ2xvY2F0aW9uJywgJ21heC1mb3J3YXJkcycsICdwcm94eS1hdXRob3JpemF0aW9uJyxcbiAgJ3JlZmVyZXInLCAncmV0cnktYWZ0ZXInLCAndXNlci1hZ2VudCdcbl0pO1xuXG4vKipcbiAqIFBhcnNlIGhlYWRlcnMgaW50byBhbiBvYmplY3RcbiAqXG4gKiBgYGBcbiAqIERhdGU6IFdlZCwgMjcgQXVnIDIwMTQgMDg6NTg6NDkgR01UXG4gKiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cbiAqIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcbiAqIFRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcmF3SGVhZGVycyBIZWFkZXJzIG5lZWRpbmcgdG8gYmUgcGFyc2VkXG4gKlxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcbiAqL1xuZXhwb3J0IGRlZmF1bHQgcmF3SGVhZGVycyA9PiB7XG4gIGNvbnN0IHBhcnNlZCA9IHt9O1xuICBsZXQga2V5O1xuICBsZXQgdmFsO1xuICBsZXQgaTtcblxuICByYXdIZWFkZXJzICYmIHJhd0hlYWRlcnMuc3BsaXQoJ1xcbicpLmZvckVhY2goZnVuY3Rpb24gcGFyc2VyKGxpbmUpIHtcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAga2V5ID0gbGluZS5zdWJzdHJpbmcoMCwgaSkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsID0gbGluZS5zdWJzdHJpbmcoaSArIDEpLnRyaW0oKTtcblxuICAgIGlmICgha2V5IHx8IChwYXJzZWRba2V5XSAmJiBpZ25vcmVEdXBsaWNhdGVPZltrZXldKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICdzZXQtY29va2llJykge1xuICAgICAgaWYgKHBhcnNlZFtrZXldKSB7XG4gICAgICAgIHBhcnNlZFtrZXldLnB1c2godmFsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gW3ZhbF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCBwYXJzZUhlYWRlcnMgZnJvbSAnLi4vaGVscGVycy9wYXJzZUhlYWRlcnMuanMnO1xuXG5jb25zdCAkaW50ZXJuYWxzID0gU3ltYm9sKCdpbnRlcm5hbHMnKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplSGVhZGVyKGhlYWRlcikge1xuICByZXR1cm4gaGVhZGVyICYmIFN0cmluZyhoZWFkZXIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdXRpbHMuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5tYXAobm9ybWFsaXplVmFsdWUpIDogU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUb2tlbnMoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGNvbnN0IHRva2Vuc1JFID0gLyhbXlxccyw7PV0rKVxccyooPzo9XFxzKihbXiw7XSspKT8vZztcbiAgbGV0IG1hdGNoO1xuXG4gIHdoaWxlICgobWF0Y2ggPSB0b2tlbnNSRS5leGVjKHN0cikpKSB7XG4gICAgdG9rZW5zW21hdGNoWzFdXSA9IG1hdGNoWzJdO1xuICB9XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cblxuY29uc3QgaXNWYWxpZEhlYWRlck5hbWUgPSAoc3RyKSA9PiAvXlstX2EtekEtWjAtOV5gfH4sISMkJSYnKisuXSskLy50ZXN0KHN0ci50cmltKCkpO1xuXG5mdW5jdGlvbiBtYXRjaEhlYWRlclZhbHVlKGNvbnRleHQsIHZhbHVlLCBoZWFkZXIsIGZpbHRlciwgaXNIZWFkZXJOYW1lRmlsdGVyKSB7XG4gIGlmICh1dGlscy5pc0Z1bmN0aW9uKGZpbHRlcikpIHtcbiAgICByZXR1cm4gZmlsdGVyLmNhbGwodGhpcywgdmFsdWUsIGhlYWRlcik7XG4gIH1cblxuICBpZiAoaXNIZWFkZXJOYW1lRmlsdGVyKSB7XG4gICAgdmFsdWUgPSBoZWFkZXI7XG4gIH1cblxuICBpZiAoIXV0aWxzLmlzU3RyaW5nKHZhbHVlKSkgcmV0dXJuO1xuXG4gIGlmICh1dGlscy5pc1N0cmluZyhmaWx0ZXIpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmluZGV4T2YoZmlsdGVyKSAhPT0gLTE7XG4gIH1cblxuICBpZiAodXRpbHMuaXNSZWdFeHAoZmlsdGVyKSkge1xuICAgIHJldHVybiBmaWx0ZXIudGVzdCh2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0SGVhZGVyKGhlYWRlcikge1xuICByZXR1cm4gaGVhZGVyLnRyaW0oKVxuICAgIC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbYS16XFxkXSkoXFx3KikvZywgKHcsIGNoYXIsIHN0cikgPT4ge1xuICAgICAgcmV0dXJuIGNoYXIudG9VcHBlckNhc2UoKSArIHN0cjtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gYnVpbGRBY2Nlc3NvcnMob2JqLCBoZWFkZXIpIHtcbiAgY29uc3QgYWNjZXNzb3JOYW1lID0gdXRpbHMudG9DYW1lbENhc2UoJyAnICsgaGVhZGVyKTtcblxuICBbJ2dldCcsICdzZXQnLCAnaGFzJ10uZm9yRWFjaChtZXRob2ROYW1lID0+IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBtZXRob2ROYW1lICsgYWNjZXNzb3JOYW1lLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24oYXJnMSwgYXJnMiwgYXJnMykge1xuICAgICAgICByZXR1cm4gdGhpc1ttZXRob2ROYW1lXS5jYWxsKHRoaXMsIGhlYWRlciwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gICAgICB9LFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0pO1xufVxuXG5jbGFzcyBBeGlvc0hlYWRlcnMge1xuICBjb25zdHJ1Y3RvcihoZWFkZXJzKSB7XG4gICAgaGVhZGVycyAmJiB0aGlzLnNldChoZWFkZXJzKTtcbiAgfVxuXG4gIHNldChoZWFkZXIsIHZhbHVlT3JSZXdyaXRlLCByZXdyaXRlKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBzZXRIZWFkZXIoX3ZhbHVlLCBfaGVhZGVyLCBfcmV3cml0ZSkge1xuICAgICAgY29uc3QgbEhlYWRlciA9IG5vcm1hbGl6ZUhlYWRlcihfaGVhZGVyKTtcblxuICAgICAgaWYgKCFsSGVhZGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaGVhZGVyIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleShzZWxmLCBsSGVhZGVyKTtcblxuICAgICAgaWYoIWtleSB8fCBzZWxmW2tleV0gPT09IHVuZGVmaW5lZCB8fCBfcmV3cml0ZSA9PT0gdHJ1ZSB8fCAoX3Jld3JpdGUgPT09IHVuZGVmaW5lZCAmJiBzZWxmW2tleV0gIT09IGZhbHNlKSkge1xuICAgICAgICBzZWxmW2tleSB8fCBfaGVhZGVyXSA9IG5vcm1hbGl6ZVZhbHVlKF92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0SGVhZGVycyA9IChoZWFkZXJzLCBfcmV3cml0ZSkgPT5cbiAgICAgIHV0aWxzLmZvckVhY2goaGVhZGVycywgKF92YWx1ZSwgX2hlYWRlcikgPT4gc2V0SGVhZGVyKF92YWx1ZSwgX2hlYWRlciwgX3Jld3JpdGUpKTtcblxuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KGhlYWRlcikgfHwgaGVhZGVyIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcikge1xuICAgICAgc2V0SGVhZGVycyhoZWFkZXIsIHZhbHVlT3JSZXdyaXRlKVxuICAgIH0gZWxzZSBpZih1dGlscy5pc1N0cmluZyhoZWFkZXIpICYmIChoZWFkZXIgPSBoZWFkZXIudHJpbSgpKSAmJiAhaXNWYWxpZEhlYWRlck5hbWUoaGVhZGVyKSkge1xuICAgICAgc2V0SGVhZGVycyhwYXJzZUhlYWRlcnMoaGVhZGVyKSwgdmFsdWVPclJld3JpdGUpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNIZWFkZXJzKGhlYWRlcikpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGhlYWRlci5lbnRyaWVzKCkpIHtcbiAgICAgICAgc2V0SGVhZGVyKHZhbHVlLCBrZXksIHJld3JpdGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXIgIT0gbnVsbCAmJiBzZXRIZWFkZXIodmFsdWVPclJld3JpdGUsIGhlYWRlciwgcmV3cml0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQoaGVhZGVyLCBwYXJzZXIpIHtcbiAgICBoZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoaGVhZGVyKTtcblxuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkodGhpcywgaGVhZGVyKTtcblxuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXNba2V5XTtcblxuICAgICAgICBpZiAoIXBhcnNlcikge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJzZXIgPT09IHRydWUpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VUb2tlbnModmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHV0aWxzLmlzRnVuY3Rpb24ocGFyc2VyKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZXIuY2FsbCh0aGlzLCB2YWx1ZSwga2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1dGlscy5pc1JlZ0V4cChwYXJzZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlci5leGVjKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BhcnNlciBtdXN0IGJlIGJvb2xlYW58cmVnZXhwfGZ1bmN0aW9uJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFzKGhlYWRlciwgbWF0Y2hlcikge1xuICAgIGhlYWRlciA9IG5vcm1hbGl6ZUhlYWRlcihoZWFkZXIpO1xuXG4gICAgaWYgKGhlYWRlcikge1xuICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleSh0aGlzLCBoZWFkZXIpO1xuXG4gICAgICByZXR1cm4gISEoa2V5ICYmIHRoaXNba2V5XSAhPT0gdW5kZWZpbmVkICYmICghbWF0Y2hlciB8fCBtYXRjaEhlYWRlclZhbHVlKHRoaXMsIHRoaXNba2V5XSwga2V5LCBtYXRjaGVyKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGRlbGV0ZShoZWFkZXIsIG1hdGNoZXIpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlO1xuXG4gICAgZnVuY3Rpb24gZGVsZXRlSGVhZGVyKF9oZWFkZXIpIHtcbiAgICAgIF9oZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoX2hlYWRlcik7XG5cbiAgICAgIGlmIChfaGVhZGVyKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkoc2VsZiwgX2hlYWRlcik7XG5cbiAgICAgICAgaWYgKGtleSAmJiAoIW1hdGNoZXIgfHwgbWF0Y2hIZWFkZXJWYWx1ZShzZWxmLCBzZWxmW2tleV0sIGtleSwgbWF0Y2hlcikpKSB7XG4gICAgICAgICAgZGVsZXRlIHNlbGZba2V5XTtcblxuICAgICAgICAgIGRlbGV0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQXJyYXkoaGVhZGVyKSkge1xuICAgICAgaGVhZGVyLmZvckVhY2goZGVsZXRlSGVhZGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlSGVhZGVyKGhlYWRlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZWQ7XG4gIH1cblxuICBjbGVhcihtYXRjaGVyKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMpO1xuICAgIGxldCBpID0ga2V5cy5sZW5ndGg7XG4gICAgbGV0IGRlbGV0ZWQgPSBmYWxzZTtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZighbWF0Y2hlciB8fCBtYXRjaEhlYWRlclZhbHVlKHRoaXMsIHRoaXNba2V5XSwga2V5LCBtYXRjaGVyLCB0cnVlKSkge1xuICAgICAgICBkZWxldGUgdGhpc1trZXldO1xuICAgICAgICBkZWxldGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZDtcbiAgfVxuXG4gIG5vcm1hbGl6ZShmb3JtYXQpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBoZWFkZXJzID0ge307XG5cbiAgICB1dGlscy5mb3JFYWNoKHRoaXMsICh2YWx1ZSwgaGVhZGVyKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KGhlYWRlcnMsIGhlYWRlcik7XG5cbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgc2VsZltrZXldID0gbm9ybWFsaXplVmFsdWUodmFsdWUpO1xuICAgICAgICBkZWxldGUgc2VsZltoZWFkZXJdO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBmb3JtYXQgPyBmb3JtYXRIZWFkZXIoaGVhZGVyKSA6IFN0cmluZyhoZWFkZXIpLnRyaW0oKTtcblxuICAgICAgaWYgKG5vcm1hbGl6ZWQgIT09IGhlYWRlcikge1xuICAgICAgICBkZWxldGUgc2VsZltoZWFkZXJdO1xuICAgICAgfVxuXG4gICAgICBzZWxmW25vcm1hbGl6ZWRdID0gbm9ybWFsaXplVmFsdWUodmFsdWUpO1xuXG4gICAgICBoZWFkZXJzW25vcm1hbGl6ZWRdID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY29uY2F0KC4uLnRhcmdldHMpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jb25jYXQodGhpcywgLi4udGFyZ2V0cyk7XG4gIH1cblxuICB0b0pTT04oYXNTdHJpbmdzKSB7XG4gICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIHV0aWxzLmZvckVhY2godGhpcywgKHZhbHVlLCBoZWFkZXIpID0+IHtcbiAgICAgIHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT09IGZhbHNlICYmIChvYmpbaGVhZGVyXSA9IGFzU3RyaW5ncyAmJiB1dGlscy5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmpvaW4oJywgJykgOiB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKS5tYXAoKFtoZWFkZXIsIHZhbHVlXSkgPT4gaGVhZGVyICsgJzogJyArIHZhbHVlKS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0F4aW9zSGVhZGVycyc7XG4gIH1cblxuICBzdGF0aWMgZnJvbSh0aGluZykge1xuICAgIHJldHVybiB0aGluZyBpbnN0YW5jZW9mIHRoaXMgPyB0aGluZyA6IG5ldyB0aGlzKHRoaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyBjb25jYXQoZmlyc3QsIC4uLnRhcmdldHMpIHtcbiAgICBjb25zdCBjb21wdXRlZCA9IG5ldyB0aGlzKGZpcnN0KTtcblxuICAgIHRhcmdldHMuZm9yRWFjaCgodGFyZ2V0KSA9PiBjb21wdXRlZC5zZXQodGFyZ2V0KSk7XG5cbiAgICByZXR1cm4gY29tcHV0ZWQ7XG4gIH1cblxuICBzdGF0aWMgYWNjZXNzb3IoaGVhZGVyKSB7XG4gICAgY29uc3QgaW50ZXJuYWxzID0gdGhpc1skaW50ZXJuYWxzXSA9ICh0aGlzWyRpbnRlcm5hbHNdID0ge1xuICAgICAgYWNjZXNzb3JzOiB7fVxuICAgIH0pO1xuXG4gICAgY29uc3QgYWNjZXNzb3JzID0gaW50ZXJuYWxzLmFjY2Vzc29ycztcbiAgICBjb25zdCBwcm90b3R5cGUgPSB0aGlzLnByb3RvdHlwZTtcblxuICAgIGZ1bmN0aW9uIGRlZmluZUFjY2Vzc29yKF9oZWFkZXIpIHtcbiAgICAgIGNvbnN0IGxIZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoX2hlYWRlcik7XG5cbiAgICAgIGlmICghYWNjZXNzb3JzW2xIZWFkZXJdKSB7XG4gICAgICAgIGJ1aWxkQWNjZXNzb3JzKHByb3RvdHlwZSwgX2hlYWRlcik7XG4gICAgICAgIGFjY2Vzc29yc1tsSGVhZGVyXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdXRpbHMuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyLmZvckVhY2goZGVmaW5lQWNjZXNzb3IpIDogZGVmaW5lQWNjZXNzb3IoaGVhZGVyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbkF4aW9zSGVhZGVycy5hY2Nlc3NvcihbJ0NvbnRlbnQtVHlwZScsICdDb250ZW50LUxlbmd0aCcsICdBY2NlcHQnLCAnQWNjZXB0LUVuY29kaW5nJywgJ1VzZXItQWdlbnQnLCAnQXV0aG9yaXphdGlvbiddKTtcblxuLy8gcmVzZXJ2ZWQgbmFtZXMgaG90Zml4XG51dGlscy5yZWR1Y2VEZXNjcmlwdG9ycyhBeGlvc0hlYWRlcnMucHJvdG90eXBlLCAoe3ZhbHVlfSwga2V5KSA9PiB7XG4gIGxldCBtYXBwZWQgPSBrZXlbMF0udG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTsgLy8gbWFwIGBzZXRgID0+IGBTZXRgXG4gIHJldHVybiB7XG4gICAgZ2V0OiAoKSA9PiB2YWx1ZSxcbiAgICBzZXQoaGVhZGVyVmFsdWUpIHtcbiAgICAgIHRoaXNbbWFwcGVkXSA9IGhlYWRlclZhbHVlO1xuICAgIH1cbiAgfVxufSk7XG5cbnV0aWxzLmZyZWV6ZU1ldGhvZHMoQXhpb3NIZWFkZXJzKTtcblxuZXhwb3J0IGRlZmF1bHQgQXhpb3NIZWFkZXJzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi4vZGVmYXVsdHMvaW5kZXguanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tICcuLi9jb3JlL0F4aW9zSGVhZGVycy5qcyc7XG5cbi8qKlxuICogVHJhbnNmb3JtIHRoZSBkYXRhIGZvciBhIHJlcXVlc3Qgb3IgYSByZXNwb25zZVxuICpcbiAqIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb259IGZucyBBIHNpbmdsZSBmdW5jdGlvbiBvciBBcnJheSBvZiBmdW5jdGlvbnNcbiAqIEBwYXJhbSB7P09iamVjdH0gcmVzcG9uc2UgVGhlIHJlc3BvbnNlIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHsqfSBUaGUgcmVzdWx0aW5nIHRyYW5zZm9ybWVkIGRhdGFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShmbnMsIHJlc3BvbnNlKSB7XG4gIGNvbnN0IGNvbmZpZyA9IHRoaXMgfHwgZGVmYXVsdHM7XG4gIGNvbnN0IGNvbnRleHQgPSByZXNwb25zZSB8fCBjb25maWc7XG4gIGNvbnN0IGhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShjb250ZXh0LmhlYWRlcnMpO1xuICBsZXQgZGF0YSA9IGNvbnRleHQuZGF0YTtcblxuICB1dGlscy5mb3JFYWNoKGZucywgZnVuY3Rpb24gdHJhbnNmb3JtKGZuKSB7XG4gICAgZGF0YSA9IGZuLmNhbGwoY29uZmlnLCBkYXRhLCBoZWFkZXJzLm5vcm1hbGl6ZSgpLCByZXNwb25zZSA/IHJlc3BvbnNlLnN0YXR1cyA6IHVuZGVmaW5lZCk7XG4gIH0pO1xuXG4gIGhlYWRlcnMubm9ybWFsaXplKCk7XG5cbiAgcmV0dXJuIGRhdGE7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQ2FuY2VsKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZS5fX0NBTkNFTF9fKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi4vY29yZS9BeGlvc0Vycm9yLmpzJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5cbi8qKlxuICogQSBgQ2FuY2VsZWRFcnJvcmAgaXMgYW4gb2JqZWN0IHRoYXQgaXMgdGhyb3duIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGNhbmNlbGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nPX0gbWVzc2FnZSBUaGUgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0PX0gY29uZmlnIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge09iamVjdD19IHJlcXVlc3QgVGhlIHJlcXVlc3QuXG4gKlxuICogQHJldHVybnMge0NhbmNlbGVkRXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5mdW5jdGlvbiBDYW5jZWxlZEVycm9yKG1lc3NhZ2UsIGNvbmZpZywgcmVxdWVzdCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXEtbnVsbCxlcWVxZXFcbiAgQXhpb3NFcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UgPT0gbnVsbCA/ICdjYW5jZWxlZCcgOiBtZXNzYWdlLCBBeGlvc0Vycm9yLkVSUl9DQU5DRUxFRCwgY29uZmlnLCByZXF1ZXN0KTtcbiAgdGhpcy5uYW1lID0gJ0NhbmNlbGVkRXJyb3InO1xufVxuXG51dGlscy5pbmhlcml0cyhDYW5jZWxlZEVycm9yLCBBeGlvc0Vycm9yLCB7XG4gIF9fQ0FOQ0VMX186IHRydWVcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBDYW5jZWxlZEVycm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuL0F4aW9zRXJyb3IuanMnO1xuXG4vKipcbiAqIFJlc29sdmUgb3IgcmVqZWN0IGEgUHJvbWlzZSBiYXNlZCBvbiByZXNwb25zZSBzdGF0dXMuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVzb2x2ZSBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3QgQSBmdW5jdGlvbiB0aGF0IHJlamVjdHMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzcG9uc2UgVGhlIHJlc3BvbnNlLlxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSByZXNwb25zZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpIHtcbiAgY29uc3QgdmFsaWRhdGVTdGF0dXMgPSByZXNwb25zZS5jb25maWcudmFsaWRhdGVTdGF0dXM7XG4gIGlmICghcmVzcG9uc2Uuc3RhdHVzIHx8ICF2YWxpZGF0ZVN0YXR1cyB8fCB2YWxpZGF0ZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMpKSB7XG4gICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKFxuICAgICAgJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIFtBeGlvc0Vycm9yLkVSUl9CQURfUkVRVUVTVCwgQXhpb3NFcnJvci5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKHJlc3BvbnNlLnN0YXR1cyAvIDEwMCkgLSA0XSxcbiAgICAgIHJlc3BvbnNlLmNvbmZpZyxcbiAgICAgIHJlc3BvbnNlLnJlcXVlc3QsXG4gICAgICByZXNwb25zZVxuICAgICkpO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlUHJvdG9jb2wodXJsKSB7XG4gIGNvbnN0IG1hdGNoID0gL14oWy0rXFx3XXsxLDI1fSkoOj9cXC9cXC98OikvLmV4ZWModXJsKTtcbiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdIHx8ICcnO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENhbGN1bGF0ZSBkYXRhIG1heFJhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbc2FtcGxlc0NvdW50PSAxMF1cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbWluPSAxMDAwXVxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBzcGVlZG9tZXRlcihzYW1wbGVzQ291bnQsIG1pbikge1xuICBzYW1wbGVzQ291bnQgPSBzYW1wbGVzQ291bnQgfHwgMTA7XG4gIGNvbnN0IGJ5dGVzID0gbmV3IEFycmF5KHNhbXBsZXNDb3VudCk7XG4gIGNvbnN0IHRpbWVzdGFtcHMgPSBuZXcgQXJyYXkoc2FtcGxlc0NvdW50KTtcbiAgbGV0IGhlYWQgPSAwO1xuICBsZXQgdGFpbCA9IDA7XG4gIGxldCBmaXJzdFNhbXBsZVRTO1xuXG4gIG1pbiA9IG1pbiAhPT0gdW5kZWZpbmVkID8gbWluIDogMTAwMDtcblxuICByZXR1cm4gZnVuY3Rpb24gcHVzaChjaHVua0xlbmd0aCkge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICBjb25zdCBzdGFydGVkQXQgPSB0aW1lc3RhbXBzW3RhaWxdO1xuXG4gICAgaWYgKCFmaXJzdFNhbXBsZVRTKSB7XG4gICAgICBmaXJzdFNhbXBsZVRTID0gbm93O1xuICAgIH1cblxuICAgIGJ5dGVzW2hlYWRdID0gY2h1bmtMZW5ndGg7XG4gICAgdGltZXN0YW1wc1toZWFkXSA9IG5vdztcblxuICAgIGxldCBpID0gdGFpbDtcbiAgICBsZXQgYnl0ZXNDb3VudCA9IDA7XG5cbiAgICB3aGlsZSAoaSAhPT0gaGVhZCkge1xuICAgICAgYnl0ZXNDb3VudCArPSBieXRlc1tpKytdO1xuICAgICAgaSA9IGkgJSBzYW1wbGVzQ291bnQ7XG4gICAgfVxuXG4gICAgaGVhZCA9IChoZWFkICsgMSkgJSBzYW1wbGVzQ291bnQ7XG5cbiAgICBpZiAoaGVhZCA9PT0gdGFpbCkge1xuICAgICAgdGFpbCA9ICh0YWlsICsgMSkgJSBzYW1wbGVzQ291bnQ7XG4gICAgfVxuXG4gICAgaWYgKG5vdyAtIGZpcnN0U2FtcGxlVFMgPCBtaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXNzZWQgPSBzdGFydGVkQXQgJiYgbm93IC0gc3RhcnRlZEF0O1xuXG4gICAgcmV0dXJuIHBhc3NlZCA/IE1hdGgucm91bmQoYnl0ZXNDb3VudCAqIDEwMDAgLyBwYXNzZWQpIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBzcGVlZG9tZXRlcjtcbiIsIi8qKlxuICogVGhyb3R0bGUgZGVjb3JhdG9yXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHBhcmFtIHtOdW1iZXJ9IGZyZXFcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiB0aHJvdHRsZShmbiwgZnJlcSkge1xuICBsZXQgdGltZXN0YW1wID0gMDtcbiAgbGV0IHRocmVzaG9sZCA9IDEwMDAgLyBmcmVxO1xuICBsZXQgbGFzdEFyZ3M7XG4gIGxldCB0aW1lcjtcblxuICBjb25zdCBpbnZva2UgPSAoYXJncywgbm93ID0gRGF0ZS5ub3coKSkgPT4ge1xuICAgIHRpbWVzdGFtcCA9IG5vdztcbiAgICBsYXN0QXJncyA9IG51bGw7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSBudWxsO1xuICAgIH1cbiAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcbiAgfVxuXG4gIGNvbnN0IHRocm90dGxlZCA9ICguLi5hcmdzKSA9PiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBwYXNzZWQgPSBub3cgLSB0aW1lc3RhbXA7XG4gICAgaWYgKCBwYXNzZWQgPj0gdGhyZXNob2xkKSB7XG4gICAgICBpbnZva2UoYXJncywgbm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFzdEFyZ3MgPSBhcmdzO1xuICAgICAgaWYgKCF0aW1lcikge1xuICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRpbWVyID0gbnVsbDtcbiAgICAgICAgICBpbnZva2UobGFzdEFyZ3MpXG4gICAgICAgIH0sIHRocmVzaG9sZCAtIHBhc3NlZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZmx1c2ggPSAoKSA9PiBsYXN0QXJncyAmJiBpbnZva2UobGFzdEFyZ3MpO1xuXG4gIHJldHVybiBbdGhyb3R0bGVkLCBmbHVzaF07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRocm90dGxlO1xuIiwiaW1wb3J0IHNwZWVkb21ldGVyIGZyb20gXCIuL3NwZWVkb21ldGVyLmpzXCI7XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSBcIi4vdGhyb3R0bGUuanNcIjtcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IGNvbnN0IHByb2dyZXNzRXZlbnRSZWR1Y2VyID0gKGxpc3RlbmVyLCBpc0Rvd25sb2FkU3RyZWFtLCBmcmVxID0gMykgPT4ge1xuICBsZXQgYnl0ZXNOb3RpZmllZCA9IDA7XG4gIGNvbnN0IF9zcGVlZG9tZXRlciA9IHNwZWVkb21ldGVyKDUwLCAyNTApO1xuXG4gIHJldHVybiB0aHJvdHRsZShlID0+IHtcbiAgICBjb25zdCBsb2FkZWQgPSBlLmxvYWRlZDtcbiAgICBjb25zdCB0b3RhbCA9IGUubGVuZ3RoQ29tcHV0YWJsZSA/IGUudG90YWwgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcHJvZ3Jlc3NCeXRlcyA9IGxvYWRlZCAtIGJ5dGVzTm90aWZpZWQ7XG4gICAgY29uc3QgcmF0ZSA9IF9zcGVlZG9tZXRlcihwcm9ncmVzc0J5dGVzKTtcbiAgICBjb25zdCBpblJhbmdlID0gbG9hZGVkIDw9IHRvdGFsO1xuXG4gICAgYnl0ZXNOb3RpZmllZCA9IGxvYWRlZDtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBsb2FkZWQsXG4gICAgICB0b3RhbCxcbiAgICAgIHByb2dyZXNzOiB0b3RhbCA/IChsb2FkZWQgLyB0b3RhbCkgOiB1bmRlZmluZWQsXG4gICAgICBieXRlczogcHJvZ3Jlc3NCeXRlcyxcbiAgICAgIHJhdGU6IHJhdGUgPyByYXRlIDogdW5kZWZpbmVkLFxuICAgICAgZXN0aW1hdGVkOiByYXRlICYmIHRvdGFsICYmIGluUmFuZ2UgPyAodG90YWwgLSBsb2FkZWQpIC8gcmF0ZSA6IHVuZGVmaW5lZCxcbiAgICAgIGV2ZW50OiBlLFxuICAgICAgbGVuZ3RoQ29tcHV0YWJsZTogdG90YWwgIT0gbnVsbCxcbiAgICAgIFtpc0Rvd25sb2FkU3RyZWFtID8gJ2Rvd25sb2FkJyA6ICd1cGxvYWQnXTogdHJ1ZVxuICAgIH07XG5cbiAgICBsaXN0ZW5lcihkYXRhKTtcbiAgfSwgZnJlcSk7XG59XG5cbmV4cG9ydCBjb25zdCBwcm9ncmVzc0V2ZW50RGVjb3JhdG9yID0gKHRvdGFsLCB0aHJvdHRsZWQpID0+IHtcbiAgY29uc3QgbGVuZ3RoQ29tcHV0YWJsZSA9IHRvdGFsICE9IG51bGw7XG5cbiAgcmV0dXJuIFsobG9hZGVkKSA9PiB0aHJvdHRsZWRbMF0oe1xuICAgIGxlbmd0aENvbXB1dGFibGUsXG4gICAgdG90YWwsXG4gICAgbG9hZGVkXG4gIH0pLCB0aHJvdHRsZWRbMV1dO1xufVxuXG5leHBvcnQgY29uc3QgYXN5bmNEZWNvcmF0b3IgPSAoZm4pID0+ICguLi5hcmdzKSA9PiB1dGlscy5hc2FwKCgpID0+IGZuKC4uLmFyZ3MpKTtcbiIsImltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudiA/ICgob3JpZ2luLCBpc01TSUUpID0+ICh1cmwpID0+IHtcbiAgdXJsID0gbmV3IFVSTCh1cmwsIHBsYXRmb3JtLm9yaWdpbik7XG5cbiAgcmV0dXJuIChcbiAgICBvcmlnaW4ucHJvdG9jb2wgPT09IHVybC5wcm90b2NvbCAmJlxuICAgIG9yaWdpbi5ob3N0ID09PSB1cmwuaG9zdCAmJlxuICAgIChpc01TSUUgfHwgb3JpZ2luLnBvcnQgPT09IHVybC5wb3J0KVxuICApO1xufSkoXG4gIG5ldyBVUkwocGxhdGZvcm0ub3JpZ2luKSxcbiAgcGxhdGZvcm0ubmF2aWdhdG9yICYmIC8obXNpZXx0cmlkZW50KS9pLnRlc3QocGxhdGZvcm0ubmF2aWdhdG9yLnVzZXJBZ2VudClcbikgOiAoKSA9PiB0cnVlO1xuIiwiaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4uL3BsYXRmb3JtL2luZGV4LmpzJztcblxuZXhwb3J0IGRlZmF1bHQgcGxhdGZvcm0uaGFzU3RhbmRhcmRCcm93c2VyRW52ID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgc3VwcG9ydCBkb2N1bWVudC5jb29raWVcbiAge1xuICAgIHdyaXRlKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSkge1xuICAgICAgY29uc3QgY29va2llID0gW25hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpXTtcblxuICAgICAgdXRpbHMuaXNOdW1iZXIoZXhwaXJlcykgJiYgY29va2llLnB1c2goJ2V4cGlyZXM9JyArIG5ldyBEYXRlKGV4cGlyZXMpLnRvR01UU3RyaW5nKCkpO1xuXG4gICAgICB1dGlscy5pc1N0cmluZyhwYXRoKSAmJiBjb29raWUucHVzaCgncGF0aD0nICsgcGF0aCk7XG5cbiAgICAgIHV0aWxzLmlzU3RyaW5nKGRvbWFpbikgJiYgY29va2llLnB1c2goJ2RvbWFpbj0nICsgZG9tYWluKTtcblxuICAgICAgc2VjdXJlID09PSB0cnVlICYmIGNvb2tpZS5wdXNoKCdzZWN1cmUnKTtcblxuICAgICAgZG9jdW1lbnQuY29va2llID0gY29va2llLmpvaW4oJzsgJyk7XG4gICAgfSxcblxuICAgIHJlYWQobmFtZSkge1xuICAgICAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58O1xcXFxzKikoJyArIG5hbWUgKyAnKT0oW147XSopJykpO1xuICAgICAgcmV0dXJuIChtYXRjaCA/IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFszXSkgOiBudWxsKTtcbiAgICB9LFxuXG4gICAgcmVtb3ZlKG5hbWUpIHtcbiAgICAgIHRoaXMud3JpdGUobmFtZSwgJycsIERhdGUubm93KCkgLSA4NjQwMDAwMCk7XG4gICAgfVxuICB9XG5cbiAgOlxuXG4gIC8vIE5vbi1zdGFuZGFyZCBicm93c2VyIGVudiAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAge1xuICAgIHdyaXRlKCkge30sXG4gICAgcmVhZCgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgcmVtb3ZlKCkge31cbiAgfTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0Fic29sdXRlVVJMKHVybCkge1xuICAvLyBBIFVSTCBpcyBjb25zaWRlcmVkIGFic29sdXRlIGlmIGl0IGJlZ2lucyB3aXRoIFwiPHNjaGVtZT46Ly9cIiBvciBcIi8vXCIgKHByb3RvY29sLXJlbGF0aXZlIFVSTCkuXG4gIC8vIFJGQyAzOTg2IGRlZmluZXMgc2NoZW1lIG5hbWUgYXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGJlZ2lubmluZyB3aXRoIGEgbGV0dGVyIGFuZCBmb2xsb3dlZFxuICAvLyBieSBhbnkgY29tYmluYXRpb24gb2YgbGV0dGVycywgZGlnaXRzLCBwbHVzLCBwZXJpb2QsIG9yIGh5cGhlbi5cbiAgcmV0dXJuIC9eKFthLXpdW2EtelxcZCtcXC0uXSo6KT9cXC9cXC8vaS50ZXN0KHVybCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgVVJMXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlbGF0aXZlVVJMKSB7XG4gIHJldHVybiByZWxhdGl2ZVVSTFxuICAgID8gYmFzZVVSTC5yZXBsYWNlKC9cXC8/XFwvJC8sICcnKSArICcvJyArIHJlbGF0aXZlVVJMLnJlcGxhY2UoL15cXC8rLywgJycpXG4gICAgOiBiYXNlVVJMO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgaXNBYnNvbHV0ZVVSTCBmcm9tICcuLi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwuanMnO1xuaW1wb3J0IGNvbWJpbmVVUkxzIGZyb20gJy4uL2hlbHBlcnMvY29tYmluZVVSTHMuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgYmFzZVVSTCB3aXRoIHRoZSByZXF1ZXN0ZWRVUkwsXG4gKiBvbmx5IHdoZW4gdGhlIHJlcXVlc3RlZFVSTCBpcyBub3QgYWxyZWFkeSBhbiBhYnNvbHV0ZSBVUkwuXG4gKiBJZiB0aGUgcmVxdWVzdFVSTCBpcyBhYnNvbHV0ZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXF1ZXN0ZWRVUkwgdW50b3VjaGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3RlZFVSTCBBYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwgdG8gY29tYmluZVxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBmdWxsIHBhdGhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRGdWxsUGF0aChiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpIHtcbiAgaWYgKGJhc2VVUkwgJiYgIWlzQWJzb2x1dGVVUkwocmVxdWVzdGVkVVJMKSkge1xuICAgIHJldHVybiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpO1xuICB9XG4gIHJldHVybiByZXF1ZXN0ZWRVUkw7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gXCIuL0F4aW9zSGVhZGVycy5qc1wiO1xuXG5jb25zdCBoZWFkZXJzVG9PYmplY3QgPSAodGhpbmcpID0+IHRoaW5nIGluc3RhbmNlb2YgQXhpb3NIZWFkZXJzID8geyAuLi50aGluZyB9IDogdGhpbmc7XG5cbi8qKlxuICogQ29uZmlnLXNwZWNpZmljIG1lcmdlLWZ1bmN0aW9uIHdoaWNoIGNyZWF0ZXMgYSBuZXcgY29uZmlnLW9iamVjdFxuICogYnkgbWVyZ2luZyB0d28gY29uZmlndXJhdGlvbiBvYmplY3RzIHRvZ2V0aGVyLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcxXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IE5ldyBvYmplY3QgcmVzdWx0aW5nIGZyb20gbWVyZ2luZyBjb25maWcyIHRvIGNvbmZpZzFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VDb25maWcoY29uZmlnMSwgY29uZmlnMikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgY29uZmlnMiA9IGNvbmZpZzIgfHwge307XG4gIGNvbnN0IGNvbmZpZyA9IHt9O1xuXG4gIGZ1bmN0aW9uIGdldE1lcmdlZFZhbHVlKHRhcmdldCwgc291cmNlLCBwcm9wLCBjYXNlbGVzcykge1xuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHRhcmdldCkgJiYgdXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2UuY2FsbCh7Y2FzZWxlc3N9LCB0YXJnZXQsIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh7fSwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZS5zbGljZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGVlcFByb3BlcnRpZXMoYSwgYiwgcHJvcCAsIGNhc2VsZXNzKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChiKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGEsIGIsIHByb3AgLCBjYXNlbGVzcyk7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGEsIHByb3AgLCBjYXNlbGVzcyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIoYSwgYikge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYikpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBkZWZhdWx0VG9Db25maWcyKGEsIGIpIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGIpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBiKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChhKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGlyZWN0S2V5cyhhLCBiLCBwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGEsIGIpO1xuICAgIH0gZWxzZSBpZiAocHJvcCBpbiBjb25maWcxKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBhKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtZXJnZU1hcCA9IHtcbiAgICB1cmw6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgbWV0aG9kOiB2YWx1ZUZyb21Db25maWcyLFxuICAgIGRhdGE6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgYmFzZVVSTDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0cmFuc2Zvcm1SZXF1ZXN0OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHRyYW5zZm9ybVJlc3BvbnNlOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHBhcmFtc1NlcmlhbGl6ZXI6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdGltZW91dDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0aW1lb3V0TWVzc2FnZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB3aXRoQ3JlZGVudGlhbHM6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgd2l0aFhTUkZUb2tlbjogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBhZGFwdGVyOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHJlc3BvbnNlVHlwZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB4c3JmQ29va2llTmFtZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB4c3JmSGVhZGVyTmFtZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBvblVwbG9hZFByb2dyZXNzOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIG9uRG93bmxvYWRQcm9ncmVzczogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBkZWNvbXByZXNzOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIG1heENvbnRlbnRMZW5ndGg6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgbWF4Qm9keUxlbmd0aDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBiZWZvcmVSZWRpcmVjdDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0cmFuc3BvcnQ6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgaHR0cEFnZW50OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGh0dHBzQWdlbnQ6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgY2FuY2VsVG9rZW46IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgc29ja2V0UGF0aDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICByZXNwb25zZUVuY29kaW5nOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHZhbGlkYXRlU3RhdHVzOiBtZXJnZURpcmVjdEtleXMsXG4gICAgaGVhZGVyczogKGEsIGIgLCBwcm9wKSA9PiBtZXJnZURlZXBQcm9wZXJ0aWVzKGhlYWRlcnNUb09iamVjdChhKSwgaGVhZGVyc1RvT2JqZWN0KGIpLHByb3AsIHRydWUpXG4gIH07XG5cbiAgdXRpbHMuZm9yRWFjaChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCBjb25maWcxLCBjb25maWcyKSksIGZ1bmN0aW9uIGNvbXB1dGVDb25maWdWYWx1ZShwcm9wKSB7XG4gICAgY29uc3QgbWVyZ2UgPSBtZXJnZU1hcFtwcm9wXSB8fCBtZXJnZURlZXBQcm9wZXJ0aWVzO1xuICAgIGNvbnN0IGNvbmZpZ1ZhbHVlID0gbWVyZ2UoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSwgcHJvcCk7XG4gICAgKHV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZ1ZhbHVlKSAmJiBtZXJnZSAhPT0gbWVyZ2VEaXJlY3RLZXlzKSB8fCAoY29uZmlnW3Byb3BdID0gY29uZmlnVmFsdWUpO1xuICB9KTtcblxuICByZXR1cm4gY29uZmlnO1xufVxuIiwiaW1wb3J0IHBsYXRmb3JtIGZyb20gXCIuLi9wbGF0Zm9ybS9pbmRleC5qc1wiO1xuaW1wb3J0IHV0aWxzIGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IGlzVVJMU2FtZU9yaWdpbiBmcm9tIFwiLi9pc1VSTFNhbWVPcmlnaW4uanNcIjtcbmltcG9ydCBjb29raWVzIGZyb20gXCIuL2Nvb2tpZXMuanNcIjtcbmltcG9ydCBidWlsZEZ1bGxQYXRoIGZyb20gXCIuLi9jb3JlL2J1aWxkRnVsbFBhdGguanNcIjtcbmltcG9ydCBtZXJnZUNvbmZpZyBmcm9tIFwiLi4vY29yZS9tZXJnZUNvbmZpZy5qc1wiO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tIFwiLi4vY29yZS9BeGlvc0hlYWRlcnMuanNcIjtcbmltcG9ydCBidWlsZFVSTCBmcm9tIFwiLi9idWlsZFVSTC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IG5ld0NvbmZpZyA9IG1lcmdlQ29uZmlnKHt9LCBjb25maWcpO1xuXG4gIGxldCB7ZGF0YSwgd2l0aFhTUkZUb2tlbiwgeHNyZkhlYWRlck5hbWUsIHhzcmZDb29raWVOYW1lLCBoZWFkZXJzLCBhdXRofSA9IG5ld0NvbmZpZztcblxuICBuZXdDb25maWcuaGVhZGVycyA9IGhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShoZWFkZXJzKTtcblxuICBuZXdDb25maWcudXJsID0gYnVpbGRVUkwoYnVpbGRGdWxsUGF0aChuZXdDb25maWcuYmFzZVVSTCwgbmV3Q29uZmlnLnVybCksIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKTtcblxuICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gIGlmIChhdXRoKSB7XG4gICAgaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArXG4gICAgICBidG9hKChhdXRoLnVzZXJuYW1lIHx8ICcnKSArICc6JyArIChhdXRoLnBhc3N3b3JkID8gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGF1dGgucGFzc3dvcmQpKSA6ICcnKSlcbiAgICApO1xuICB9XG5cbiAgbGV0IGNvbnRlbnRUeXBlO1xuXG4gIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpKSB7XG4gICAgaWYgKHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudiB8fCBwbGF0Zm9ybS5oYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpIHtcbiAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUodW5kZWZpbmVkKTsgLy8gTGV0IHRoZSBicm93c2VyIHNldCBpdFxuICAgIH0gZWxzZSBpZiAoKGNvbnRlbnRUeXBlID0gaGVhZGVycy5nZXRDb250ZW50VHlwZSgpKSAhPT0gZmFsc2UpIHtcbiAgICAgIC8vIGZpeCBzZW1pY29sb24gZHVwbGljYXRpb24gaXNzdWUgZm9yIFJlYWN0TmF0aXZlIEZvcm1EYXRhIGltcGxlbWVudGF0aW9uXG4gICAgICBjb25zdCBbdHlwZSwgLi4udG9rZW5zXSA9IGNvbnRlbnRUeXBlID8gY29udGVudFR5cGUuc3BsaXQoJzsnKS5tYXAodG9rZW4gPT4gdG9rZW4udHJpbSgpKS5maWx0ZXIoQm9vbGVhbikgOiBbXTtcbiAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoW3R5cGUgfHwgJ211bHRpcGFydC9mb3JtLWRhdGEnLCAuLi50b2tlbnNdLmpvaW4oJzsgJykpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCB4c3JmIGhlYWRlclxuICAvLyBUaGlzIGlzIG9ubHkgZG9uZSBpZiBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudC5cbiAgLy8gU3BlY2lmaWNhbGx5IG5vdCBpZiB3ZSdyZSBpbiBhIHdlYiB3b3JrZXIsIG9yIHJlYWN0LW5hdGl2ZS5cblxuICBpZiAocGxhdGZvcm0uaGFzU3RhbmRhcmRCcm93c2VyRW52KSB7XG4gICAgd2l0aFhTUkZUb2tlbiAmJiB1dGlscy5pc0Z1bmN0aW9uKHdpdGhYU1JGVG9rZW4pICYmICh3aXRoWFNSRlRva2VuID0gd2l0aFhTUkZUb2tlbihuZXdDb25maWcpKTtcblxuICAgIGlmICh3aXRoWFNSRlRva2VuIHx8ICh3aXRoWFNSRlRva2VuICE9PSBmYWxzZSAmJiBpc1VSTFNhbWVPcmlnaW4obmV3Q29uZmlnLnVybCkpKSB7XG4gICAgICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgICAgIGNvbnN0IHhzcmZWYWx1ZSA9IHhzcmZIZWFkZXJOYW1lICYmIHhzcmZDb29raWVOYW1lICYmIGNvb2tpZXMucmVhZCh4c3JmQ29va2llTmFtZSk7XG5cbiAgICAgIGlmICh4c3JmVmFsdWUpIHtcbiAgICAgICAgaGVhZGVycy5zZXQoeHNyZkhlYWRlck5hbWUsIHhzcmZWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0NvbmZpZztcbn1cblxuIiwiaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuaW1wb3J0IHNldHRsZSBmcm9tICcuLy4uL2NvcmUvc2V0dGxlLmpzJztcbmltcG9ydCB0cmFuc2l0aW9uYWxEZWZhdWx0cyBmcm9tICcuLi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi4vY29yZS9BeGlvc0Vycm9yLmpzJztcbmltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gJy4uL2NhbmNlbC9DYW5jZWxlZEVycm9yLmpzJztcbmltcG9ydCBwYXJzZVByb3RvY29sIGZyb20gJy4uL2hlbHBlcnMvcGFyc2VQcm90b2NvbC5qcyc7XG5pbXBvcnQgcGxhdGZvcm0gZnJvbSAnLi4vcGxhdGZvcm0vaW5kZXguanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tICcuLi9jb3JlL0F4aW9zSGVhZGVycy5qcyc7XG5pbXBvcnQge3Byb2dyZXNzRXZlbnRSZWR1Y2VyfSBmcm9tICcuLi9oZWxwZXJzL3Byb2dyZXNzRXZlbnRSZWR1Y2VyLmpzJztcbmltcG9ydCByZXNvbHZlQ29uZmlnIGZyb20gXCIuLi9oZWxwZXJzL3Jlc29sdmVDb25maWcuanNcIjtcblxuY29uc3QgaXNYSFJBZGFwdGVyU3VwcG9ydGVkID0gdHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJztcblxuZXhwb3J0IGRlZmF1bHQgaXNYSFJBZGFwdGVyU3VwcG9ydGVkICYmIGZ1bmN0aW9uIChjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIGRpc3BhdGNoWGhyUmVxdWVzdChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBjb25zdCBfY29uZmlnID0gcmVzb2x2ZUNvbmZpZyhjb25maWcpO1xuICAgIGxldCByZXF1ZXN0RGF0YSA9IF9jb25maWcuZGF0YTtcbiAgICBjb25zdCByZXF1ZXN0SGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKF9jb25maWcuaGVhZGVycykubm9ybWFsaXplKCk7XG4gICAgbGV0IHtyZXNwb25zZVR5cGUsIG9uVXBsb2FkUHJvZ3Jlc3MsIG9uRG93bmxvYWRQcm9ncmVzc30gPSBfY29uZmlnO1xuICAgIGxldCBvbkNhbmNlbGVkO1xuICAgIGxldCB1cGxvYWRUaHJvdHRsZWQsIGRvd25sb2FkVGhyb3R0bGVkO1xuICAgIGxldCBmbHVzaFVwbG9hZCwgZmx1c2hEb3dubG9hZDtcblxuICAgIGZ1bmN0aW9uIGRvbmUoKSB7XG4gICAgICBmbHVzaFVwbG9hZCAmJiBmbHVzaFVwbG9hZCgpOyAvLyBmbHVzaCBldmVudHNcbiAgICAgIGZsdXNoRG93bmxvYWQgJiYgZmx1c2hEb3dubG9hZCgpOyAvLyBmbHVzaCBldmVudHNcblxuICAgICAgX2NvbmZpZy5jYW5jZWxUb2tlbiAmJiBfY29uZmlnLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuXG4gICAgICBfY29uZmlnLnNpZ25hbCAmJiBfY29uZmlnLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgIH1cblxuICAgIGxldCByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbiAgICByZXF1ZXN0Lm9wZW4oX2NvbmZpZy5tZXRob2QudG9VcHBlckNhc2UoKSwgX2NvbmZpZy51cmwsIHRydWUpO1xuXG4gICAgLy8gU2V0IHRoZSByZXF1ZXN0IHRpbWVvdXQgaW4gTVNcbiAgICByZXF1ZXN0LnRpbWVvdXQgPSBfY29uZmlnLnRpbWVvdXQ7XG5cbiAgICBmdW5jdGlvbiBvbmxvYWRlbmQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gUHJlcGFyZSB0aGUgcmVzcG9uc2VcbiAgICAgIGNvbnN0IHJlc3BvbnNlSGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKFxuICAgICAgICAnZ2V0QWxsUmVzcG9uc2VIZWFkZXJzJyBpbiByZXF1ZXN0ICYmIHJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKClcbiAgICAgICk7XG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSAhcmVzcG9uc2VUeXBlIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ3RleHQnIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nID9cbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVRleHQgOiByZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgc3RhdHVzOiByZXF1ZXN0LnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVxdWVzdC5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgc2V0dGxlKGZ1bmN0aW9uIF9yZXNvbHZlKHZhbHVlKSB7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCBmdW5jdGlvbiBfcmVqZWN0KGVycikge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgcmVzcG9uc2UpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoJ29ubG9hZGVuZCcgaW4gcmVxdWVzdCkge1xuICAgICAgLy8gVXNlIG9ubG9hZGVuZCBpZiBhdmFpbGFibGVcbiAgICAgIHJlcXVlc3Qub25sb2FkZW5kID0gb25sb2FkZW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMaXN0ZW4gZm9yIHJlYWR5IHN0YXRlIHRvIGVtdWxhdGUgb25sb2FkZW5kXG4gICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCB8fCByZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgcmVxdWVzdCBlcnJvcmVkIG91dCBhbmQgd2UgZGlkbid0IGdldCBhIHJlc3BvbnNlLCB0aGlzIHdpbGwgYmVcbiAgICAgICAgLy8gaGFuZGxlZCBieSBvbmVycm9yIGluc3RlYWRcbiAgICAgICAgLy8gV2l0aCBvbmUgZXhjZXB0aW9uOiByZXF1ZXN0IHRoYXQgdXNpbmcgZmlsZTogcHJvdG9jb2wsIG1vc3QgYnJvd3NlcnNcbiAgICAgICAgLy8gd2lsbCByZXR1cm4gc3RhdHVzIGFzIDAgZXZlbiB0aG91Z2ggaXQncyBhIHN1Y2Nlc3NmdWwgcmVxdWVzdFxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDAgJiYgIShyZXF1ZXN0LnJlc3BvbnNlVVJMICYmIHJlcXVlc3QucmVzcG9uc2VVUkwuaW5kZXhPZignZmlsZTonKSA9PT0gMCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVhZHlzdGF0ZSBoYW5kbGVyIGlzIGNhbGxpbmcgYmVmb3JlIG9uZXJyb3Igb3Igb250aW1lb3V0IGhhbmRsZXJzLFxuICAgICAgICAvLyBzbyB3ZSBzaG91bGQgY2FsbCBvbmxvYWRlbmQgb24gdGhlIG5leHQgJ3RpY2snXG4gICAgICAgIHNldFRpbWVvdXQob25sb2FkZW5kKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGJyb3dzZXIgcmVxdWVzdCBjYW5jZWxsYXRpb24gKGFzIG9wcG9zZWQgdG8gYSBtYW51YWwgY2FuY2VsbGF0aW9uKVxuICAgIHJlcXVlc3Qub25hYm9ydCA9IGZ1bmN0aW9uIGhhbmRsZUFib3J0KCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdSZXF1ZXN0IGFib3J0ZWQnLCBBeGlvc0Vycm9yLkVDT05OQUJPUlRFRCwgY29uZmlnLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgbG93IGxldmVsIG5ldHdvcmsgZXJyb3JzXG4gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gaGFuZGxlRXJyb3IoKSB7XG4gICAgICAvLyBSZWFsIGVycm9ycyBhcmUgaGlkZGVuIGZyb20gdXMgYnkgdGhlIGJyb3dzZXJcbiAgICAgIC8vIG9uZXJyb3Igc2hvdWxkIG9ubHkgZmlyZSBpZiBpdCdzIGEgbmV0d29yayBlcnJvclxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdOZXR3b3JrIEVycm9yJywgQXhpb3NFcnJvci5FUlJfTkVUV09SSywgY29uZmlnLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgdGltZW91dFxuICAgIHJlcXVlc3Qub250aW1lb3V0ID0gZnVuY3Rpb24gaGFuZGxlVGltZW91dCgpIHtcbiAgICAgIGxldCB0aW1lb3V0RXJyb3JNZXNzYWdlID0gX2NvbmZpZy50aW1lb3V0ID8gJ3RpbWVvdXQgb2YgJyArIF9jb25maWcudGltZW91dCArICdtcyBleGNlZWRlZCcgOiAndGltZW91dCBleGNlZWRlZCc7XG4gICAgICBjb25zdCB0cmFuc2l0aW9uYWwgPSBfY29uZmlnLnRyYW5zaXRpb25hbCB8fCB0cmFuc2l0aW9uYWxEZWZhdWx0cztcbiAgICAgIGlmIChfY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSA9IF9jb25maWcudGltZW91dEVycm9yTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSxcbiAgICAgICAgdHJhbnNpdGlvbmFsLmNsYXJpZnlUaW1lb3V0RXJyb3IgPyBBeGlvc0Vycm9yLkVUSU1FRE9VVCA6IEF4aW9zRXJyb3IuRUNPTk5BQk9SVEVELFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIFJlbW92ZSBDb250ZW50LVR5cGUgaWYgZGF0YSBpcyB1bmRlZmluZWRcbiAgICByZXF1ZXN0RGF0YSA9PT0gdW5kZWZpbmVkICYmIHJlcXVlc3RIZWFkZXJzLnNldENvbnRlbnRUeXBlKG51bGwpO1xuXG4gICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcbiAgICBpZiAoJ3NldFJlcXVlc3RIZWFkZXInIGluIHJlcXVlc3QpIHtcbiAgICAgIHV0aWxzLmZvckVhY2gocmVxdWVzdEhlYWRlcnMudG9KU09OKCksIGZ1bmN0aW9uIHNldFJlcXVlc3RIZWFkZXIodmFsLCBrZXkpIHtcbiAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGtleSwgdmFsKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRoQ3JlZGVudGlhbHMgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKF9jb25maWcud2l0aENyZWRlbnRpYWxzKSkge1xuICAgICAgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSAhIV9jb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAocmVzcG9uc2VUeXBlICYmIHJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XG4gICAgICByZXF1ZXN0LnJlc3BvbnNlVHlwZSA9IF9jb25maWcucmVzcG9uc2VUeXBlO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBwcm9ncmVzcyBpZiBuZWVkZWRcbiAgICBpZiAob25Eb3dubG9hZFByb2dyZXNzKSB7XG4gICAgICAoW2Rvd25sb2FkVGhyb3R0bGVkLCBmbHVzaERvd25sb2FkXSA9IHByb2dyZXNzRXZlbnRSZWR1Y2VyKG9uRG93bmxvYWRQcm9ncmVzcywgdHJ1ZSkpO1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGRvd25sb2FkVGhyb3R0bGVkKTtcbiAgICB9XG5cbiAgICAvLyBOb3QgYWxsIGJyb3dzZXJzIHN1cHBvcnQgdXBsb2FkIGV2ZW50c1xuICAgIGlmIChvblVwbG9hZFByb2dyZXNzICYmIHJlcXVlc3QudXBsb2FkKSB7XG4gICAgICAoW3VwbG9hZFRocm90dGxlZCwgZmx1c2hVcGxvYWRdID0gcHJvZ3Jlc3NFdmVudFJlZHVjZXIob25VcGxvYWRQcm9ncmVzcykpO1xuXG4gICAgICByZXF1ZXN0LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHVwbG9hZFRocm90dGxlZCk7XG5cbiAgICAgIHJlcXVlc3QudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCBmbHVzaFVwbG9hZCk7XG4gICAgfVxuXG4gICAgaWYgKF9jb25maWcuY2FuY2VsVG9rZW4gfHwgX2NvbmZpZy5zaWduYWwpIHtcbiAgICAgIC8vIEhhbmRsZSBjYW5jZWxsYXRpb25cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBvbkNhbmNlbGVkID0gY2FuY2VsID0+IHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlamVjdCghY2FuY2VsIHx8IGNhbmNlbC50eXBlID8gbmV3IENhbmNlbGVkRXJyb3IobnVsbCwgY29uZmlnLCByZXF1ZXN0KSA6IGNhbmNlbCk7XG4gICAgICAgIHJlcXVlc3QuYWJvcnQoKTtcbiAgICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgICB9O1xuXG4gICAgICBfY29uZmlnLmNhbmNlbFRva2VuICYmIF9jb25maWcuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuICAgICAgaWYgKF9jb25maWcuc2lnbmFsKSB7XG4gICAgICAgIF9jb25maWcuc2lnbmFsLmFib3J0ZWQgPyBvbkNhbmNlbGVkKCkgOiBfY29uZmlnLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHByb3RvY29sID0gcGFyc2VQcm90b2NvbChfY29uZmlnLnVybCk7XG5cbiAgICBpZiAocHJvdG9jb2wgJiYgcGxhdGZvcm0ucHJvdG9jb2xzLmluZGV4T2YocHJvdG9jb2wpID09PSAtMSkge1xuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdVbnN1cHBvcnRlZCBwcm90b2NvbCAnICsgcHJvdG9jb2wgKyAnOicsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVFVRVNULCBjb25maWcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cblxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcbiAgICByZXF1ZXN0LnNlbmQocmVxdWVzdERhdGEgfHwgbnVsbCk7XG4gIH0pO1xufVxuIiwiaW1wb3J0IENhbmNlbGVkRXJyb3IgZnJvbSBcIi4uL2NhbmNlbC9DYW5jZWxlZEVycm9yLmpzXCI7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tIFwiLi4vY29yZS9BeGlvc0Vycm9yLmpzXCI7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuXG5jb25zdCBjb21wb3NlU2lnbmFscyA9IChzaWduYWxzLCB0aW1lb3V0KSA9PiB7XG4gIGNvbnN0IHtsZW5ndGh9ID0gKHNpZ25hbHMgPSBzaWduYWxzID8gc2lnbmFscy5maWx0ZXIoQm9vbGVhbikgOiBbXSk7XG5cbiAgaWYgKHRpbWVvdXQgfHwgbGVuZ3RoKSB7XG4gICAgbGV0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICBsZXQgYWJvcnRlZDtcblxuICAgIGNvbnN0IG9uYWJvcnQgPSBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICBpZiAoIWFib3J0ZWQpIHtcbiAgICAgICAgYWJvcnRlZCA9IHRydWU7XG4gICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGNvbnN0IGVyciA9IHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yID8gcmVhc29uIDogdGhpcy5yZWFzb247XG4gICAgICAgIGNvbnRyb2xsZXIuYWJvcnQoZXJyIGluc3RhbmNlb2YgQXhpb3NFcnJvciA/IGVyciA6IG5ldyBDYW5jZWxlZEVycm9yKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBlcnIpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdGltZXIgPSB0aW1lb3V0ICYmIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGltZXIgPSBudWxsO1xuICAgICAgb25hYm9ydChuZXcgQXhpb3NFcnJvcihgdGltZW91dCAke3RpbWVvdXR9IG9mIG1zIGV4Y2VlZGVkYCwgQXhpb3NFcnJvci5FVElNRURPVVQpKVxuICAgIH0sIHRpbWVvdXQpXG5cbiAgICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IHtcbiAgICAgIGlmIChzaWduYWxzKSB7XG4gICAgICAgIHRpbWVyICYmIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIHRpbWVyID0gbnVsbDtcbiAgICAgICAgc2lnbmFscy5mb3JFYWNoKHNpZ25hbCA9PiB7XG4gICAgICAgICAgc2lnbmFsLnVuc3Vic2NyaWJlID8gc2lnbmFsLnVuc3Vic2NyaWJlKG9uYWJvcnQpIDogc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25hYm9ydCk7XG4gICAgICAgIH0pO1xuICAgICAgICBzaWduYWxzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzaWduYWxzLmZvckVhY2goKHNpZ25hbCkgPT4gc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25hYm9ydCkpO1xuXG4gICAgY29uc3Qge3NpZ25hbH0gPSBjb250cm9sbGVyO1xuXG4gICAgc2lnbmFsLnVuc3Vic2NyaWJlID0gKCkgPT4gdXRpbHMuYXNhcCh1bnN1YnNjcmliZSk7XG5cbiAgICByZXR1cm4gc2lnbmFsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2VTaWduYWxzO1xuIiwiXG5leHBvcnQgY29uc3Qgc3RyZWFtQ2h1bmsgPSBmdW5jdGlvbiogKGNodW5rLCBjaHVua1NpemUpIHtcbiAgbGV0IGxlbiA9IGNodW5rLmJ5dGVMZW5ndGg7XG5cbiAgaWYgKCFjaHVua1NpemUgfHwgbGVuIDwgY2h1bmtTaXplKSB7XG4gICAgeWllbGQgY2h1bms7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IHBvcyA9IDA7XG4gIGxldCBlbmQ7XG5cbiAgd2hpbGUgKHBvcyA8IGxlbikge1xuICAgIGVuZCA9IHBvcyArIGNodW5rU2l6ZTtcbiAgICB5aWVsZCBjaHVuay5zbGljZShwb3MsIGVuZCk7XG4gICAgcG9zID0gZW5kO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCByZWFkQnl0ZXMgPSBhc3luYyBmdW5jdGlvbiogKGl0ZXJhYmxlLCBjaHVua1NpemUpIHtcbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiByZWFkU3RyZWFtKGl0ZXJhYmxlKSkge1xuICAgIHlpZWxkKiBzdHJlYW1DaHVuayhjaHVuaywgY2h1bmtTaXplKTtcbiAgfVxufVxuXG5jb25zdCByZWFkU3RyZWFtID0gYXN5bmMgZnVuY3Rpb24qIChzdHJlYW0pIHtcbiAgaWYgKHN0cmVhbVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pIHtcbiAgICB5aWVsZCogc3RyZWFtO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgdHJ5IHtcbiAgICBmb3IgKDs7KSB7XG4gICAgICBjb25zdCB7ZG9uZSwgdmFsdWV9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgeWllbGQgdmFsdWU7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHJlYWRlci5jYW5jZWwoKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdHJhY2tTdHJlYW0gPSAoc3RyZWFtLCBjaHVua1NpemUsIG9uUHJvZ3Jlc3MsIG9uRmluaXNoKSA9PiB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gcmVhZEJ5dGVzKHN0cmVhbSwgY2h1bmtTaXplKTtcblxuICBsZXQgYnl0ZXMgPSAwO1xuICBsZXQgZG9uZTtcbiAgbGV0IF9vbkZpbmlzaCA9IChlKSA9PiB7XG4gICAgaWYgKCFkb25lKSB7XG4gICAgICBkb25lID0gdHJ1ZTtcbiAgICAgIG9uRmluaXNoICYmIG9uRmluaXNoKGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgIGFzeW5jIHB1bGwoY29udHJvbGxlcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qge2RvbmUsIHZhbHVlfSA9IGF3YWl0IGl0ZXJhdG9yLm5leHQoKTtcblxuICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgX29uRmluaXNoKCk7XG4gICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsZW4gPSB2YWx1ZS5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAob25Qcm9ncmVzcykge1xuICAgICAgICAgIGxldCBsb2FkZWRCeXRlcyA9IGJ5dGVzICs9IGxlbjtcbiAgICAgICAgICBvblByb2dyZXNzKGxvYWRlZEJ5dGVzKTtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkodmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfb25GaW5pc2goZXJyKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2FuY2VsKHJlYXNvbikge1xuICAgICAgX29uRmluaXNoKHJlYXNvbik7XG4gICAgICByZXR1cm4gaXRlcmF0b3IucmV0dXJuKCk7XG4gICAgfVxuICB9LCB7XG4gICAgaGlnaFdhdGVyTWFyazogMlxuICB9KVxufVxuIiwiaW1wb3J0IHBsYXRmb3JtIGZyb20gXCIuLi9wbGF0Zm9ybS9pbmRleC5qc1wiO1xuaW1wb3J0IHV0aWxzIGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSBcIi4uL2NvcmUvQXhpb3NFcnJvci5qc1wiO1xuaW1wb3J0IGNvbXBvc2VTaWduYWxzIGZyb20gXCIuLi9oZWxwZXJzL2NvbXBvc2VTaWduYWxzLmpzXCI7XG5pbXBvcnQge3RyYWNrU3RyZWFtfSBmcm9tIFwiLi4vaGVscGVycy90cmFja1N0cmVhbS5qc1wiO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tIFwiLi4vY29yZS9BeGlvc0hlYWRlcnMuanNcIjtcbmltcG9ydCB7cHJvZ3Jlc3NFdmVudFJlZHVjZXIsIHByb2dyZXNzRXZlbnREZWNvcmF0b3IsIGFzeW5jRGVjb3JhdG9yfSBmcm9tIFwiLi4vaGVscGVycy9wcm9ncmVzc0V2ZW50UmVkdWNlci5qc1wiO1xuaW1wb3J0IHJlc29sdmVDb25maWcgZnJvbSBcIi4uL2hlbHBlcnMvcmVzb2x2ZUNvbmZpZy5qc1wiO1xuaW1wb3J0IHNldHRsZSBmcm9tIFwiLi4vY29yZS9zZXR0bGUuanNcIjtcblxuY29uc3QgaXNGZXRjaFN1cHBvcnRlZCA9IHR5cGVvZiBmZXRjaCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgUmVxdWVzdCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgUmVzcG9uc2UgPT09ICdmdW5jdGlvbic7XG5jb25zdCBpc1JlYWRhYmxlU3RyZWFtU3VwcG9ydGVkID0gaXNGZXRjaFN1cHBvcnRlZCAmJiB0eXBlb2YgUmVhZGFibGVTdHJlYW0gPT09ICdmdW5jdGlvbic7XG5cbi8vIHVzZWQgb25seSBpbnNpZGUgdGhlIGZldGNoIGFkYXB0ZXJcbmNvbnN0IGVuY29kZVRleHQgPSBpc0ZldGNoU3VwcG9ydGVkICYmICh0eXBlb2YgVGV4dEVuY29kZXIgPT09ICdmdW5jdGlvbicgP1xuICAgICgoZW5jb2RlcikgPT4gKHN0cikgPT4gZW5jb2Rlci5lbmNvZGUoc3RyKSkobmV3IFRleHRFbmNvZGVyKCkpIDpcbiAgICBhc3luYyAoc3RyKSA9PiBuZXcgVWludDhBcnJheShhd2FpdCBuZXcgUmVzcG9uc2Uoc3RyKS5hcnJheUJ1ZmZlcigpKVxuKTtcblxuY29uc3QgdGVzdCA9IChmbiwgLi4uYXJncykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiAhIWZuKC4uLmFyZ3MpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuY29uc3Qgc3VwcG9ydHNSZXF1ZXN0U3RyZWFtID0gaXNSZWFkYWJsZVN0cmVhbVN1cHBvcnRlZCAmJiB0ZXN0KCgpID0+IHtcbiAgbGV0IGR1cGxleEFjY2Vzc2VkID0gZmFsc2U7XG5cbiAgY29uc3QgaGFzQ29udGVudFR5cGUgPSBuZXcgUmVxdWVzdChwbGF0Zm9ybS5vcmlnaW4sIHtcbiAgICBib2R5OiBuZXcgUmVhZGFibGVTdHJlYW0oKSxcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBnZXQgZHVwbGV4KCkge1xuICAgICAgZHVwbGV4QWNjZXNzZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuICdoYWxmJztcbiAgICB9LFxuICB9KS5oZWFkZXJzLmhhcygnQ29udGVudC1UeXBlJyk7XG5cbiAgcmV0dXJuIGR1cGxleEFjY2Vzc2VkICYmICFoYXNDb250ZW50VHlwZTtcbn0pO1xuXG5jb25zdCBERUZBVUxUX0NIVU5LX1NJWkUgPSA2NCAqIDEwMjQ7XG5cbmNvbnN0IHN1cHBvcnRzUmVzcG9uc2VTdHJlYW0gPSBpc1JlYWRhYmxlU3RyZWFtU3VwcG9ydGVkICYmXG4gIHRlc3QoKCkgPT4gdXRpbHMuaXNSZWFkYWJsZVN0cmVhbShuZXcgUmVzcG9uc2UoJycpLmJvZHkpKTtcblxuXG5jb25zdCByZXNvbHZlcnMgPSB7XG4gIHN0cmVhbTogc3VwcG9ydHNSZXNwb25zZVN0cmVhbSAmJiAoKHJlcykgPT4gcmVzLmJvZHkpXG59O1xuXG5pc0ZldGNoU3VwcG9ydGVkICYmICgoKHJlcykgPT4ge1xuICBbJ3RleHQnLCAnYXJyYXlCdWZmZXInLCAnYmxvYicsICdmb3JtRGF0YScsICdzdHJlYW0nXS5mb3JFYWNoKHR5cGUgPT4ge1xuICAgICFyZXNvbHZlcnNbdHlwZV0gJiYgKHJlc29sdmVyc1t0eXBlXSA9IHV0aWxzLmlzRnVuY3Rpb24ocmVzW3R5cGVdKSA/IChyZXMpID0+IHJlc1t0eXBlXSgpIDpcbiAgICAgIChfLCBjb25maWcpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoYFJlc3BvbnNlIHR5cGUgJyR7dHlwZX0nIGlzIG5vdCBzdXBwb3J0ZWRgLCBBeGlvc0Vycm9yLkVSUl9OT1RfU1VQUE9SVCwgY29uZmlnKTtcbiAgICAgIH0pXG4gIH0pO1xufSkobmV3IFJlc3BvbnNlKSk7XG5cbmNvbnN0IGdldEJvZHlMZW5ndGggPSBhc3luYyAoYm9keSkgPT4ge1xuICBpZiAoYm9keSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZih1dGlscy5pc0Jsb2IoYm9keSkpIHtcbiAgICByZXR1cm4gYm9keS5zaXplO1xuICB9XG5cbiAgaWYodXRpbHMuaXNTcGVjQ29tcGxpYW50Rm9ybShib2R5KSkge1xuICAgIGNvbnN0IF9yZXF1ZXN0ID0gbmV3IFJlcXVlc3QocGxhdGZvcm0ub3JpZ2luLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHksXG4gICAgfSk7XG4gICAgcmV0dXJuIChhd2FpdCBfcmVxdWVzdC5hcnJheUJ1ZmZlcigpKS5ieXRlTGVuZ3RoO1xuICB9XG5cbiAgaWYodXRpbHMuaXNBcnJheUJ1ZmZlclZpZXcoYm9keSkgfHwgdXRpbHMuaXNBcnJheUJ1ZmZlcihib2R5KSkge1xuICAgIHJldHVybiBib2R5LmJ5dGVMZW5ndGg7XG4gIH1cblxuICBpZih1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhib2R5KSkge1xuICAgIGJvZHkgPSBib2R5ICsgJyc7XG4gIH1cblxuICBpZih1dGlscy5pc1N0cmluZyhib2R5KSkge1xuICAgIHJldHVybiAoYXdhaXQgZW5jb2RlVGV4dChib2R5KSkuYnl0ZUxlbmd0aDtcbiAgfVxufVxuXG5jb25zdCByZXNvbHZlQm9keUxlbmd0aCA9IGFzeW5jIChoZWFkZXJzLCBib2R5KSA9PiB7XG4gIGNvbnN0IGxlbmd0aCA9IHV0aWxzLnRvRmluaXRlTnVtYmVyKGhlYWRlcnMuZ2V0Q29udGVudExlbmd0aCgpKTtcblxuICByZXR1cm4gbGVuZ3RoID09IG51bGwgPyBnZXRCb2R5TGVuZ3RoKGJvZHkpIDogbGVuZ3RoO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0ZldGNoU3VwcG9ydGVkICYmIChhc3luYyAoY29uZmlnKSA9PiB7XG4gIGxldCB7XG4gICAgdXJsLFxuICAgIG1ldGhvZCxcbiAgICBkYXRhLFxuICAgIHNpZ25hbCxcbiAgICBjYW5jZWxUb2tlbixcbiAgICB0aW1lb3V0LFxuICAgIG9uRG93bmxvYWRQcm9ncmVzcyxcbiAgICBvblVwbG9hZFByb2dyZXNzLFxuICAgIHJlc3BvbnNlVHlwZSxcbiAgICBoZWFkZXJzLFxuICAgIHdpdGhDcmVkZW50aWFscyA9ICdzYW1lLW9yaWdpbicsXG4gICAgZmV0Y2hPcHRpb25zXG4gIH0gPSByZXNvbHZlQ29uZmlnKGNvbmZpZyk7XG5cbiAgcmVzcG9uc2VUeXBlID0gcmVzcG9uc2VUeXBlID8gKHJlc3BvbnNlVHlwZSArICcnKS50b0xvd2VyQ2FzZSgpIDogJ3RleHQnO1xuXG4gIGxldCBjb21wb3NlZFNpZ25hbCA9IGNvbXBvc2VTaWduYWxzKFtzaWduYWwsIGNhbmNlbFRva2VuICYmIGNhbmNlbFRva2VuLnRvQWJvcnRTaWduYWwoKV0sIHRpbWVvdXQpO1xuXG4gIGxldCByZXF1ZXN0O1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlID0gY29tcG9zZWRTaWduYWwgJiYgY29tcG9zZWRTaWduYWwudW5zdWJzY3JpYmUgJiYgKCgpID0+IHtcbiAgICAgIGNvbXBvc2VkU2lnbmFsLnVuc3Vic2NyaWJlKCk7XG4gIH0pO1xuXG4gIGxldCByZXF1ZXN0Q29udGVudExlbmd0aDtcblxuICB0cnkge1xuICAgIGlmIChcbiAgICAgIG9uVXBsb2FkUHJvZ3Jlc3MgJiYgc3VwcG9ydHNSZXF1ZXN0U3RyZWFtICYmIG1ldGhvZCAhPT0gJ2dldCcgJiYgbWV0aG9kICE9PSAnaGVhZCcgJiZcbiAgICAgIChyZXF1ZXN0Q29udGVudExlbmd0aCA9IGF3YWl0IHJlc29sdmVCb2R5TGVuZ3RoKGhlYWRlcnMsIGRhdGEpKSAhPT0gMFxuICAgICkge1xuICAgICAgbGV0IF9yZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5OiBkYXRhLFxuICAgICAgICBkdXBsZXg6IFwiaGFsZlwiXG4gICAgICB9KTtcblxuICAgICAgbGV0IGNvbnRlbnRUeXBlSGVhZGVyO1xuXG4gICAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShkYXRhKSAmJiAoY29udGVudFR5cGVIZWFkZXIgPSBfcmVxdWVzdC5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpKSB7XG4gICAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoY29udGVudFR5cGVIZWFkZXIpXG4gICAgICB9XG5cbiAgICAgIGlmIChfcmVxdWVzdC5ib2R5KSB7XG4gICAgICAgIGNvbnN0IFtvblByb2dyZXNzLCBmbHVzaF0gPSBwcm9ncmVzc0V2ZW50RGVjb3JhdG9yKFxuICAgICAgICAgIHJlcXVlc3RDb250ZW50TGVuZ3RoLFxuICAgICAgICAgIHByb2dyZXNzRXZlbnRSZWR1Y2VyKGFzeW5jRGVjb3JhdG9yKG9uVXBsb2FkUHJvZ3Jlc3MpKVxuICAgICAgICApO1xuXG4gICAgICAgIGRhdGEgPSB0cmFja1N0cmVhbShfcmVxdWVzdC5ib2R5LCBERUZBVUxUX0NIVU5LX1NJWkUsIG9uUHJvZ3Jlc3MsIGZsdXNoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXV0aWxzLmlzU3RyaW5nKHdpdGhDcmVkZW50aWFscykpIHtcbiAgICAgIHdpdGhDcmVkZW50aWFscyA9IHdpdGhDcmVkZW50aWFscyA/ICdpbmNsdWRlJyA6ICdvbWl0JztcbiAgICB9XG5cbiAgICAvLyBDbG91ZGZsYXJlIFdvcmtlcnMgdGhyb3dzIHdoZW4gY3JlZGVudGlhbHMgYXJlIGRlZmluZWRcbiAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nsb3VkZmxhcmUvd29ya2VyZC9pc3N1ZXMvOTAyXG4gICAgY29uc3QgaXNDcmVkZW50aWFsc1N1cHBvcnRlZCA9IFwiY3JlZGVudGlhbHNcIiBpbiBSZXF1ZXN0LnByb3RvdHlwZTtcbiAgICByZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAuLi5mZXRjaE9wdGlvbnMsXG4gICAgICBzaWduYWw6IGNvbXBvc2VkU2lnbmFsLFxuICAgICAgbWV0aG9kOiBtZXRob2QudG9VcHBlckNhc2UoKSxcbiAgICAgIGhlYWRlcnM6IGhlYWRlcnMubm9ybWFsaXplKCkudG9KU09OKCksXG4gICAgICBib2R5OiBkYXRhLFxuICAgICAgZHVwbGV4OiBcImhhbGZcIixcbiAgICAgIGNyZWRlbnRpYWxzOiBpc0NyZWRlbnRpYWxzU3VwcG9ydGVkID8gd2l0aENyZWRlbnRpYWxzIDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXF1ZXN0KTtcblxuICAgIGNvbnN0IGlzU3RyZWFtUmVzcG9uc2UgPSBzdXBwb3J0c1Jlc3BvbnNlU3RyZWFtICYmIChyZXNwb25zZVR5cGUgPT09ICdzdHJlYW0nIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ3Jlc3BvbnNlJyk7XG5cbiAgICBpZiAoc3VwcG9ydHNSZXNwb25zZVN0cmVhbSAmJiAob25Eb3dubG9hZFByb2dyZXNzIHx8IChpc1N0cmVhbVJlc3BvbnNlICYmIHVuc3Vic2NyaWJlKSkpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7fTtcblxuICAgICAgWydzdGF0dXMnLCAnc3RhdHVzVGV4dCcsICdoZWFkZXJzJ10uZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgb3B0aW9uc1twcm9wXSA9IHJlc3BvbnNlW3Byb3BdO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlQ29udGVudExlbmd0aCA9IHV0aWxzLnRvRmluaXRlTnVtYmVyKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LWxlbmd0aCcpKTtcblxuICAgICAgY29uc3QgW29uUHJvZ3Jlc3MsIGZsdXNoXSA9IG9uRG93bmxvYWRQcm9ncmVzcyAmJiBwcm9ncmVzc0V2ZW50RGVjb3JhdG9yKFxuICAgICAgICByZXNwb25zZUNvbnRlbnRMZW5ndGgsXG4gICAgICAgIHByb2dyZXNzRXZlbnRSZWR1Y2VyKGFzeW5jRGVjb3JhdG9yKG9uRG93bmxvYWRQcm9ncmVzcyksIHRydWUpXG4gICAgICApIHx8IFtdO1xuXG4gICAgICByZXNwb25zZSA9IG5ldyBSZXNwb25zZShcbiAgICAgICAgdHJhY2tTdHJlYW0ocmVzcG9uc2UuYm9keSwgREVGQVVMVF9DSFVOS19TSVpFLCBvblByb2dyZXNzLCAoKSA9PiB7XG4gICAgICAgICAgZmx1c2ggJiYgZmx1c2goKTtcbiAgICAgICAgICB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuICAgICAgICB9KSxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXNwb25zZVR5cGUgPSByZXNwb25zZVR5cGUgfHwgJ3RleHQnO1xuXG4gICAgbGV0IHJlc3BvbnNlRGF0YSA9IGF3YWl0IHJlc29sdmVyc1t1dGlscy5maW5kS2V5KHJlc29sdmVycywgcmVzcG9uc2VUeXBlKSB8fCAndGV4dCddKHJlc3BvbnNlLCBjb25maWcpO1xuXG4gICAgIWlzU3RyZWFtUmVzcG9uc2UgJiYgdW5zdWJzY3JpYmUgJiYgdW5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB7XG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgaGVhZGVyczogQXhpb3NIZWFkZXJzLmZyb20ocmVzcG9uc2UuaGVhZGVycyksXG4gICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcXVlc3RcbiAgICAgIH0pXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdW5zdWJzY3JpYmUgJiYgdW5zdWJzY3JpYmUoKTtcblxuICAgIGlmIChlcnIgJiYgZXJyLm5hbWUgPT09ICdUeXBlRXJyb3InICYmIC9mZXRjaC9pLnRlc3QoZXJyLm1lc3NhZ2UpKSB7XG4gICAgICB0aHJvdyBPYmplY3QuYXNzaWduKFxuICAgICAgICBuZXcgQXhpb3NFcnJvcignTmV0d29yayBFcnJvcicsIEF4aW9zRXJyb3IuRVJSX05FVFdPUkssIGNvbmZpZywgcmVxdWVzdCksXG4gICAgICAgIHtcbiAgICAgICAgICBjYXVzZTogZXJyLmNhdXNlIHx8IGVyclxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuXG4gICAgdGhyb3cgQXhpb3NFcnJvci5mcm9tKGVyciwgZXJyICYmIGVyci5jb2RlLCBjb25maWcsIHJlcXVlc3QpO1xuICB9XG59KTtcblxuXG4iLCJpbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IGh0dHBBZGFwdGVyIGZyb20gJy4vaHR0cC5qcyc7XG5pbXBvcnQgeGhyQWRhcHRlciBmcm9tICcuL3hoci5qcyc7XG5pbXBvcnQgZmV0Y2hBZGFwdGVyIGZyb20gJy4vZmV0Y2guanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSBcIi4uL2NvcmUvQXhpb3NFcnJvci5qc1wiO1xuXG5jb25zdCBrbm93bkFkYXB0ZXJzID0ge1xuICBodHRwOiBodHRwQWRhcHRlcixcbiAgeGhyOiB4aHJBZGFwdGVyLFxuICBmZXRjaDogZmV0Y2hBZGFwdGVyXG59XG5cbnV0aWxzLmZvckVhY2goa25vd25BZGFwdGVycywgKGZuLCB2YWx1ZSkgPT4ge1xuICBpZiAoZm4pIHtcbiAgICB0cnkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCAnbmFtZScsIHt2YWx1ZX0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sICdhZGFwdGVyTmFtZScsIHt2YWx1ZX0pO1xuICB9XG59KTtcblxuY29uc3QgcmVuZGVyUmVhc29uID0gKHJlYXNvbikgPT4gYC0gJHtyZWFzb259YDtcblxuY29uc3QgaXNSZXNvbHZlZEhhbmRsZSA9IChhZGFwdGVyKSA9PiB1dGlscy5pc0Z1bmN0aW9uKGFkYXB0ZXIpIHx8IGFkYXB0ZXIgPT09IG51bGwgfHwgYWRhcHRlciA9PT0gZmFsc2U7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0QWRhcHRlcjogKGFkYXB0ZXJzKSA9PiB7XG4gICAgYWRhcHRlcnMgPSB1dGlscy5pc0FycmF5KGFkYXB0ZXJzKSA/IGFkYXB0ZXJzIDogW2FkYXB0ZXJzXTtcblxuICAgIGNvbnN0IHtsZW5ndGh9ID0gYWRhcHRlcnM7XG4gICAgbGV0IG5hbWVPckFkYXB0ZXI7XG4gICAgbGV0IGFkYXB0ZXI7XG5cbiAgICBjb25zdCByZWplY3RlZFJlYXNvbnMgPSB7fTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIG5hbWVPckFkYXB0ZXIgPSBhZGFwdGVyc1tpXTtcbiAgICAgIGxldCBpZDtcblxuICAgICAgYWRhcHRlciA9IG5hbWVPckFkYXB0ZXI7XG5cbiAgICAgIGlmICghaXNSZXNvbHZlZEhhbmRsZShuYW1lT3JBZGFwdGVyKSkge1xuICAgICAgICBhZGFwdGVyID0ga25vd25BZGFwdGVyc1soaWQgPSBTdHJpbmcobmFtZU9yQWRhcHRlcikpLnRvTG93ZXJDYXNlKCldO1xuXG4gICAgICAgIGlmIChhZGFwdGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihgVW5rbm93biBhZGFwdGVyICcke2lkfSdgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWRhcHRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmVqZWN0ZWRSZWFzb25zW2lkIHx8ICcjJyArIGldID0gYWRhcHRlcjtcbiAgICB9XG5cbiAgICBpZiAoIWFkYXB0ZXIpIHtcblxuICAgICAgY29uc3QgcmVhc29ucyA9IE9iamVjdC5lbnRyaWVzKHJlamVjdGVkUmVhc29ucylcbiAgICAgICAgLm1hcCgoW2lkLCBzdGF0ZV0pID0+IGBhZGFwdGVyICR7aWR9IGAgK1xuICAgICAgICAgIChzdGF0ZSA9PT0gZmFsc2UgPyAnaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQnIDogJ2lzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkJylcbiAgICAgICAgKTtcblxuICAgICAgbGV0IHMgPSBsZW5ndGggP1xuICAgICAgICAocmVhc29ucy5sZW5ndGggPiAxID8gJ3NpbmNlIDpcXG4nICsgcmVhc29ucy5tYXAocmVuZGVyUmVhc29uKS5qb2luKCdcXG4nKSA6ICcgJyArIHJlbmRlclJlYXNvbihyZWFzb25zWzBdKSkgOlxuICAgICAgICAnYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQnO1xuXG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgYFRoZXJlIGlzIG5vIHN1aXRhYmxlIGFkYXB0ZXIgdG8gZGlzcGF0Y2ggdGhlIHJlcXVlc3QgYCArIHMsXG4gICAgICAgICdFUlJfTk9UX1NVUFBPUlQnXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBhZGFwdGVyO1xuICB9LFxuICBhZGFwdGVyczoga25vd25BZGFwdGVyc1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHJhbnNmb3JtRGF0YSBmcm9tICcuL3RyYW5zZm9ybURhdGEuanMnO1xuaW1wb3J0IGlzQ2FuY2VsIGZyb20gJy4uL2NhbmNlbC9pc0NhbmNlbC5qcyc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi4vZGVmYXVsdHMvaW5kZXguanMnO1xuaW1wb3J0IENhbmNlbGVkRXJyb3IgZnJvbSAnLi4vY2FuY2VsL0NhbmNlbGVkRXJyb3IuanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tICcuLi9jb3JlL0F4aW9zSGVhZGVycy5qcyc7XG5pbXBvcnQgYWRhcHRlcnMgZnJvbSBcIi4uL2FkYXB0ZXJzL2FkYXB0ZXJzLmpzXCI7XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGVkRXJyb3JgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpIHtcbiAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgIGNvbmZpZy5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCk7XG4gIH1cblxuICBpZiAoY29uZmlnLnNpZ25hbCAmJiBjb25maWcuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICB0aHJvdyBuZXcgQ2FuY2VsZWRFcnJvcihudWxsLCBjb25maWcpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgYWRhcHRlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnIFRoZSBjb25maWcgdGhhdCBpcyB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdFxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgUHJvbWlzZSB0byBiZSBmdWxmaWxsZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlzcGF0Y2hSZXF1ZXN0KGNvbmZpZykge1xuICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgY29uZmlnLmhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShjb25maWcuaGVhZGVycyk7XG5cbiAgLy8gVHJhbnNmb3JtIHJlcXVlc3QgZGF0YVxuICBjb25maWcuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICBjb25maWcsXG4gICAgY29uZmlnLnRyYW5zZm9ybVJlcXVlc3RcbiAgKTtcblxuICBpZiAoWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLmluZGV4T2YoY29uZmlnLm1ldGhvZCkgIT09IC0xKSB7XG4gICAgY29uZmlnLmhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsIGZhbHNlKTtcbiAgfVxuXG4gIGNvbnN0IGFkYXB0ZXIgPSBhZGFwdGVycy5nZXRBZGFwdGVyKGNvbmZpZy5hZGFwdGVyIHx8IGRlZmF1bHRzLmFkYXB0ZXIpO1xuXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgY29uZmlnLFxuICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlLFxuICAgICAgcmVzcG9uc2VcbiAgICApO1xuXG4gICAgcmVzcG9uc2UuaGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKHJlc3BvbnNlLmhlYWRlcnMpO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9LCBmdW5jdGlvbiBvbkFkYXB0ZXJSZWplY3Rpb24ocmVhc29uKSB7XG4gICAgaWYgKCFpc0NhbmNlbChyZWFzb24pKSB7XG4gICAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgICBpZiAocmVhc29uICYmIHJlYXNvbi5yZXNwb25zZSkge1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlLFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZVxuICAgICAgICApO1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59XG4iLCJleHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiMS43LjlcIjsiLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7VkVSU0lPTn0gZnJvbSAnLi4vZW52L2RhdGEuanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi4vY29yZS9BeGlvc0Vycm9yLmpzJztcblxuY29uc3QgdmFsaWRhdG9ycyA9IHt9O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuWydvYmplY3QnLCAnYm9vbGVhbicsICdudW1iZXInLCAnZnVuY3Rpb24nLCAnc3RyaW5nJywgJ3N5bWJvbCddLmZvckVhY2goKHR5cGUsIGkpID0+IHtcbiAgdmFsaWRhdG9yc1t0eXBlXSA9IGZ1bmN0aW9uIHZhbGlkYXRvcih0aGluZykge1xuICAgIHJldHVybiB0eXBlb2YgdGhpbmcgPT09IHR5cGUgfHwgJ2EnICsgKGkgPCAxID8gJ24gJyA6ICcgJykgKyB0eXBlO1xuICB9O1xufSk7XG5cbmNvbnN0IGRlcHJlY2F0ZWRXYXJuaW5ncyA9IHt9O1xuXG4vKipcbiAqIFRyYW5zaXRpb25hbCBvcHRpb24gdmFsaWRhdG9yXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbnxib29sZWFuP30gdmFsaWRhdG9yIC0gc2V0IHRvIGZhbHNlIGlmIHRoZSB0cmFuc2l0aW9uYWwgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWRcbiAqIEBwYXJhbSB7c3RyaW5nP30gdmVyc2lvbiAtIGRlcHJlY2F0ZWQgdmVyc2lvbiAvIHJlbW92ZWQgc2luY2UgdmVyc2lvblxuICogQHBhcmFtIHtzdHJpbmc/fSBtZXNzYWdlIC0gc29tZSBtZXNzYWdlIHdpdGggYWRkaXRpb25hbCBpbmZvXG4gKlxuICogQHJldHVybnMge2Z1bmN0aW9ufVxuICovXG52YWxpZGF0b3JzLnRyYW5zaXRpb25hbCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25hbCh2YWxpZGF0b3IsIHZlcnNpb24sIG1lc3NhZ2UpIHtcbiAgZnVuY3Rpb24gZm9ybWF0TWVzc2FnZShvcHQsIGRlc2MpIHtcbiAgICByZXR1cm4gJ1tBeGlvcyB2JyArIFZFUlNJT04gKyAnXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFxcJycgKyBvcHQgKyAnXFwnJyArIGRlc2MgKyAobWVzc2FnZSA/ICcuICcgKyBtZXNzYWdlIDogJycpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuICh2YWx1ZSwgb3B0LCBvcHRzKSA9PiB7XG4gICAgaWYgKHZhbGlkYXRvciA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICBmb3JtYXRNZXNzYWdlKG9wdCwgJyBoYXMgYmVlbiByZW1vdmVkJyArICh2ZXJzaW9uID8gJyBpbiAnICsgdmVyc2lvbiA6ICcnKSksXG4gICAgICAgIEF4aW9zRXJyb3IuRVJSX0RFUFJFQ0FURURcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHZlcnNpb24gJiYgIWRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdKSB7XG4gICAgICBkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSA9IHRydWU7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBmb3JtYXRNZXNzYWdlKFxuICAgICAgICAgIG9wdCxcbiAgICAgICAgICAnIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdicgKyB2ZXJzaW9uICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSdcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdG9yID8gdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdHMpIDogdHJ1ZTtcbiAgfTtcbn07XG5cbnZhbGlkYXRvcnMuc3BlbGxpbmcgPSBmdW5jdGlvbiBzcGVsbGluZyhjb3JyZWN0U3BlbGxpbmcpIHtcbiAgcmV0dXJuICh2YWx1ZSwgb3B0KSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLndhcm4oYCR7b3B0fSBpcyBsaWtlbHkgYSBtaXNzcGVsbGluZyBvZiAke2NvcnJlY3RTcGVsbGluZ31gKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBBc3NlcnQgb2JqZWN0J3MgcHJvcGVydGllcyB0eXBlXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWFcbiAqIEBwYXJhbSB7Ym9vbGVhbj99IGFsbG93VW5rbm93blxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cblxuZnVuY3Rpb24gYXNzZXJ0T3B0aW9ucyhvcHRpb25zLCBzY2hlbWEsIGFsbG93VW5rbm93bikge1xuICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnLCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtcbiAgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob3B0aW9ucyk7XG4gIGxldCBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgY29uc3Qgb3B0ID0ga2V5c1tpXTtcbiAgICBjb25zdCB2YWxpZGF0b3IgPSBzY2hlbWFbb3B0XTtcbiAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9wdGlvbnNbb3B0XTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignb3B0aW9uICcgKyBvcHQgKyAnIG11c3QgYmUgJyArIHJlc3VsdCwgQXhpb3NFcnJvci5FUlJfQkFEX09QVElPTl9WQUxVRSk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGFsbG93VW5rbm93biAhPT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ1Vua25vd24gb3B0aW9uICcgKyBvcHQsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT04pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFzc2VydE9wdGlvbnMsXG4gIHZhbGlkYXRvcnNcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLy4uL3V0aWxzLmpzJztcbmltcG9ydCBidWlsZFVSTCBmcm9tICcuLi9oZWxwZXJzL2J1aWxkVVJMLmpzJztcbmltcG9ydCBJbnRlcmNlcHRvck1hbmFnZXIgZnJvbSAnLi9JbnRlcmNlcHRvck1hbmFnZXIuanMnO1xuaW1wb3J0IGRpc3BhdGNoUmVxdWVzdCBmcm9tICcuL2Rpc3BhdGNoUmVxdWVzdC5qcyc7XG5pbXBvcnQgbWVyZ2VDb25maWcgZnJvbSAnLi9tZXJnZUNvbmZpZy5qcyc7XG5pbXBvcnQgYnVpbGRGdWxsUGF0aCBmcm9tICcuL2J1aWxkRnVsbFBhdGguanMnO1xuaW1wb3J0IHZhbGlkYXRvciBmcm9tICcuLi9oZWxwZXJzL3ZhbGlkYXRvci5qcyc7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gJy4vQXhpb3NIZWFkZXJzLmpzJztcblxuY29uc3QgdmFsaWRhdG9ycyA9IHZhbGlkYXRvci52YWxpZGF0b3JzO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnN0YW5jZUNvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICpcbiAqIEByZXR1cm4ge0F4aW9zfSBBIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICovXG5jbGFzcyBBeGlvcyB7XG4gIGNvbnN0cnVjdG9yKGluc3RhbmNlQ29uZmlnKSB7XG4gICAgdGhpcy5kZWZhdWx0cyA9IGluc3RhbmNlQ29uZmlnO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzID0ge1xuICAgICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgICAgcmVzcG9uc2U6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggYSByZXF1ZXN0XG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gY29uZmlnT3JVcmwgVGhlIGNvbmZpZyBzcGVjaWZpYyBmb3IgdGhpcyByZXF1ZXN0IChtZXJnZWQgd2l0aCB0aGlzLmRlZmF1bHRzKVxuICAgKiBAcGFyYW0gez9PYmplY3R9IGNvbmZpZ1xuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gICAqL1xuICBhc3luYyByZXF1ZXN0KGNvbmZpZ09yVXJsLCBjb25maWcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3JlcXVlc3QoY29uZmlnT3JVcmwsIGNvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgbGV0IGR1bW15ID0ge307XG5cbiAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShkdW1teSkgOiAoZHVtbXkgPSBuZXcgRXJyb3IoKSk7XG5cbiAgICAgICAgLy8gc2xpY2Ugb2ZmIHRoZSBFcnJvcjogLi4uIGxpbmVcbiAgICAgICAgY29uc3Qgc3RhY2sgPSBkdW1teS5zdGFjayA/IGR1bW15LnN0YWNrLnJlcGxhY2UoL14uK1xcbi8sICcnKSA6ICcnO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICghZXJyLnN0YWNrKSB7XG4gICAgICAgICAgICBlcnIuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgICAgIC8vIG1hdGNoIHdpdGhvdXQgdGhlIDIgdG9wIHN0YWNrIGxpbmVzXG4gICAgICAgICAgfSBlbHNlIGlmIChzdGFjayAmJiAhU3RyaW5nKGVyci5zdGFjaykuZW5kc1dpdGgoc3RhY2sucmVwbGFjZSgvXi4rXFxuLitcXG4vLCAnJykpKSB7XG4gICAgICAgICAgICBlcnIuc3RhY2sgKz0gJ1xcbicgKyBzdGFja1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGlnbm9yZSB0aGUgY2FzZSB3aGVyZSBcInN0YWNrXCIgaXMgYW4gdW4td3JpdGFibGUgcHJvcGVydHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgX3JlcXVlc3QoY29uZmlnT3JVcmwsIGNvbmZpZykge1xuICAgIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAgIC8vIEFsbG93IGZvciBheGlvcygnZXhhbXBsZS91cmwnWywgY29uZmlnXSkgYSBsYSBmZXRjaCBBUElcbiAgICBpZiAodHlwZW9mIGNvbmZpZ09yVXJsID09PSAnc3RyaW5nJykge1xuICAgICAgY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICAgICAgY29uZmlnLnVybCA9IGNvbmZpZ09yVXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcgPSBjb25maWdPclVybCB8fCB7fTtcbiAgICB9XG5cbiAgICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuXG4gICAgY29uc3Qge3RyYW5zaXRpb25hbCwgcGFyYW1zU2VyaWFsaXplciwgaGVhZGVyc30gPSBjb25maWc7XG5cbiAgICBpZiAodHJhbnNpdGlvbmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbGlkYXRvci5hc3NlcnRPcHRpb25zKHRyYW5zaXRpb25hbCwge1xuICAgICAgICBzaWxlbnRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcbiAgICAgICAgZm9yY2VkSlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXG4gICAgICAgIGNsYXJpZnlUaW1lb3V0RXJyb3I6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbilcbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zU2VyaWFsaXplciAhPSBudWxsKSB7XG4gICAgICBpZiAodXRpbHMuaXNGdW5jdGlvbihwYXJhbXNTZXJpYWxpemVyKSkge1xuICAgICAgICBjb25maWcucGFyYW1zU2VyaWFsaXplciA9IHtcbiAgICAgICAgICBzZXJpYWxpemU6IHBhcmFtc1NlcmlhbGl6ZXJcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnMocGFyYW1zU2VyaWFsaXplciwge1xuICAgICAgICAgIGVuY29kZTogdmFsaWRhdG9ycy5mdW5jdGlvbixcbiAgICAgICAgICBzZXJpYWxpemU6IHZhbGlkYXRvcnMuZnVuY3Rpb25cbiAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnMoY29uZmlnLCB7XG4gICAgICBiYXNlVXJsOiB2YWxpZGF0b3JzLnNwZWxsaW5nKCdiYXNlVVJMJyksXG4gICAgICB3aXRoWHNyZlRva2VuOiB2YWxpZGF0b3JzLnNwZWxsaW5nKCd3aXRoWFNSRlRva2VuJylcbiAgICB9LCB0cnVlKTtcblxuICAgIC8vIFNldCBjb25maWcubWV0aG9kXG4gICAgY29uZmlnLm1ldGhvZCA9IChjb25maWcubWV0aG9kIHx8IHRoaXMuZGVmYXVsdHMubWV0aG9kIHx8ICdnZXQnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgLy8gRmxhdHRlbiBoZWFkZXJzXG4gICAgbGV0IGNvbnRleHRIZWFkZXJzID0gaGVhZGVycyAmJiB1dGlscy5tZXJnZShcbiAgICAgIGhlYWRlcnMuY29tbW9uLFxuICAgICAgaGVhZGVyc1tjb25maWcubWV0aG9kXVxuICAgICk7XG5cbiAgICBoZWFkZXJzICYmIHV0aWxzLmZvckVhY2goXG4gICAgICBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdjb21tb24nXSxcbiAgICAgIChtZXRob2QpID0+IHtcbiAgICAgICAgZGVsZXRlIGhlYWRlcnNbbWV0aG9kXTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uZmlnLmhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuY29uY2F0KGNvbnRleHRIZWFkZXJzLCBoZWFkZXJzKTtcblxuICAgIC8vIGZpbHRlciBvdXQgc2tpcHBlZCBpbnRlcmNlcHRvcnNcbiAgICBjb25zdCByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICAgIGxldCBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSB0cnVlO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbiB1bnNoaWZ0UmVxdWVzdEludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgICAgaWYgKHR5cGVvZiBpbnRlcmNlcHRvci5ydW5XaGVuID09PSAnZnVuY3Rpb24nICYmIGludGVyY2VwdG9yLnJ1bldoZW4oY29uZmlnKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgJiYgaW50ZXJjZXB0b3Iuc3luY2hyb25vdXM7XG5cbiAgICAgIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnVuc2hpZnQoaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgICAgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gICAgfSk7XG5cbiAgICBsZXQgcHJvbWlzZTtcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGxlbjtcblxuICAgIGlmICghc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzKSB7XG4gICAgICBjb25zdCBjaGFpbiA9IFtkaXNwYXRjaFJlcXVlc3QuYmluZCh0aGlzKSwgdW5kZWZpbmVkXTtcbiAgICAgIGNoYWluLnVuc2hpZnQuYXBwbHkoY2hhaW4sIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluKTtcbiAgICAgIGNoYWluLnB1c2guYXBwbHkoY2hhaW4sIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbik7XG4gICAgICBsZW4gPSBjaGFpbi5sZW5ndGg7XG5cbiAgICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcblxuICAgICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihjaGFpbltpKytdLCBjaGFpbltpKytdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgbGVuID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoO1xuXG4gICAgbGV0IG5ld0NvbmZpZyA9IGNvbmZpZztcblxuICAgIGkgPSAwO1xuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIGNvbnN0IG9uRnVsZmlsbGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW5baSsrXTtcbiAgICAgIGNvbnN0IG9uUmVqZWN0ZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbltpKytdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3Q29uZmlnID0gb25GdWxmaWxsZWQobmV3Q29uZmlnKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG9uUmVqZWN0ZWQuY2FsbCh0aGlzLCBlcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBwcm9taXNlID0gZGlzcGF0Y2hSZXF1ZXN0LmNhbGwodGhpcywgbmV3Q29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICBpID0gMDtcbiAgICBsZW4gPSByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4ocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluW2krK10sIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbltpKytdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIGdldFVyaShjb25maWcpIHtcbiAgICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG4gICAgcmV0dXJuIGJ1aWxkVVJMKGZ1bGxQYXRoLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplcik7XG4gIH1cbn1cblxuLy8gUHJvdmlkZSBhbGlhc2VzIGZvciBzdXBwb3J0ZWQgcmVxdWVzdCBtZXRob2RzXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ29wdGlvbnMnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2QsXG4gICAgICB1cmwsXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG5cbiAgZnVuY3Rpb24gZ2VuZXJhdGVIVFRQTWV0aG9kKGlzRm9ybSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBodHRwTWV0aG9kKHVybCwgZGF0YSwgY29uZmlnKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgICBtZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IGlzRm9ybSA/IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnXG4gICAgICAgIH0gOiB7fSxcbiAgICAgICAgdXJsLFxuICAgICAgICBkYXRhXG4gICAgICB9KSk7XG4gICAgfTtcbiAgfVxuXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZ2VuZXJhdGVIVFRQTWV0aG9kKCk7XG5cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZCArICdGb3JtJ10gPSBnZW5lcmF0ZUhUVFBNZXRob2QodHJ1ZSk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgQXhpb3M7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gJy4vQ2FuY2VsZWRFcnJvci5qcyc7XG5cbi8qKlxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBleGVjdXRvciBUaGUgZXhlY3V0b3IgZnVuY3Rpb24uXG4gKlxuICogQHJldHVybnMge0NhbmNlbFRva2VufVxuICovXG5jbGFzcyBDYW5jZWxUb2tlbiB7XG4gIGNvbnN0cnVjdG9yKGV4ZWN1dG9yKSB7XG4gICAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIGxldCByZXNvbHZlUHJvbWlzZTtcblxuICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VFeGVjdXRvcihyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlUHJvbWlzZSA9IHJlc29sdmU7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b2tlbiA9IHRoaXM7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHRoaXMucHJvbWlzZS50aGVuKGNhbmNlbCA9PiB7XG4gICAgICBpZiAoIXRva2VuLl9saXN0ZW5lcnMpIHJldHVybjtcblxuICAgICAgbGV0IGkgPSB0b2tlbi5fbGlzdGVuZXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgdG9rZW4uX2xpc3RlbmVyc1tpXShjYW5jZWwpO1xuICAgICAgfVxuICAgICAgdG9rZW4uX2xpc3RlbmVycyA9IG51bGw7XG4gICAgfSk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHRoaXMucHJvbWlzZS50aGVuID0gb25mdWxmaWxsZWQgPT4ge1xuICAgICAgbGV0IF9yZXNvbHZlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgdG9rZW4uc3Vic2NyaWJlKHJlc29sdmUpO1xuICAgICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB9KS50aGVuKG9uZnVsZmlsbGVkKTtcblxuICAgICAgcHJvbWlzZS5jYW5jZWwgPSBmdW5jdGlvbiByZWplY3QoKSB7XG4gICAgICAgIHRva2VuLnVuc3Vic2NyaWJlKF9yZXNvbHZlKTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG5cbiAgICBleGVjdXRvcihmdW5jdGlvbiBjYW5jZWwobWVzc2FnZSwgY29uZmlnLCByZXF1ZXN0KSB7XG4gICAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAgIC8vIENhbmNlbGxhdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRva2VuLnJlYXNvbiA9IG5ldyBDYW5jZWxlZEVycm9yKG1lc3NhZ2UsIGNvbmZpZywgcmVxdWVzdCk7XG4gICAgICByZXNvbHZlUHJvbWlzZSh0b2tlbi5yZWFzb24pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93cyBhIGBDYW5jZWxlZEVycm9yYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICAgKi9cbiAgdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICAgIHRocm93IHRoaXMucmVhc29uO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIGNhbmNlbCBzaWduYWxcbiAgICovXG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgICBsaXN0ZW5lcih0aGlzLnJlYXNvbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xpc3RlbmVycykge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMgPSBbbGlzdGVuZXJdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN1YnNjcmliZSBmcm9tIHRoZSBjYW5jZWwgc2lnbmFsXG4gICAqL1xuXG4gIHVuc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgdG9BYm9ydFNpZ25hbCgpIHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgY29uc3QgYWJvcnQgPSAoZXJyKSA9PiB7XG4gICAgICBjb250cm9sbGVyLmFib3J0KGVycik7XG4gICAgfTtcblxuICAgIHRoaXMuc3Vic2NyaWJlKGFib3J0KTtcblxuICAgIGNvbnRyb2xsZXIuc2lnbmFsLnVuc3Vic2NyaWJlID0gKCkgPT4gdGhpcy51bnN1YnNjcmliZShhYm9ydCk7XG5cbiAgICByZXR1cm4gY29udHJvbGxlci5zaWduYWw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICAgKiBjYW5jZWxzIHRoZSBgQ2FuY2VsVG9rZW5gLlxuICAgKi9cbiAgc3RhdGljIHNvdXJjZSgpIHtcbiAgICBsZXQgY2FuY2VsO1xuICAgIGNvbnN0IHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcbiAgICAgIGNhbmNlbCA9IGM7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRva2VuLFxuICAgICAgY2FuY2VsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDYW5jZWxUb2tlbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxuICpcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXG4gKlxuICogIGBgYGpzXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKlxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzcHJlYWQoY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoYXJyKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFycik7XG4gIH07XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLy4uL3V0aWxzLmpzJztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zXG4gKlxuICogQHBhcmFtIHsqfSBwYXlsb2FkIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNBeGlvc0Vycm9yKHBheWxvYWQpIHtcbiAgcmV0dXJuIHV0aWxzLmlzT2JqZWN0KHBheWxvYWQpICYmIChwYXlsb2FkLmlzQXhpb3NFcnJvciA9PT0gdHJ1ZSk7XG59XG4iLCJjb25zdCBIdHRwU3RhdHVzQ29kZSA9IHtcbiAgQ29udGludWU6IDEwMCxcbiAgU3dpdGNoaW5nUHJvdG9jb2xzOiAxMDEsXG4gIFByb2Nlc3Npbmc6IDEwMixcbiAgRWFybHlIaW50czogMTAzLFxuICBPazogMjAwLFxuICBDcmVhdGVkOiAyMDEsXG4gIEFjY2VwdGVkOiAyMDIsXG4gIE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjogMjAzLFxuICBOb0NvbnRlbnQ6IDIwNCxcbiAgUmVzZXRDb250ZW50OiAyMDUsXG4gIFBhcnRpYWxDb250ZW50OiAyMDYsXG4gIE11bHRpU3RhdHVzOiAyMDcsXG4gIEFscmVhZHlSZXBvcnRlZDogMjA4LFxuICBJbVVzZWQ6IDIyNixcbiAgTXVsdGlwbGVDaG9pY2VzOiAzMDAsXG4gIE1vdmVkUGVybWFuZW50bHk6IDMwMSxcbiAgRm91bmQ6IDMwMixcbiAgU2VlT3RoZXI6IDMwMyxcbiAgTm90TW9kaWZpZWQ6IDMwNCxcbiAgVXNlUHJveHk6IDMwNSxcbiAgVW51c2VkOiAzMDYsXG4gIFRlbXBvcmFyeVJlZGlyZWN0OiAzMDcsXG4gIFBlcm1hbmVudFJlZGlyZWN0OiAzMDgsXG4gIEJhZFJlcXVlc3Q6IDQwMCxcbiAgVW5hdXRob3JpemVkOiA0MDEsXG4gIFBheW1lbnRSZXF1aXJlZDogNDAyLFxuICBGb3JiaWRkZW46IDQwMyxcbiAgTm90Rm91bmQ6IDQwNCxcbiAgTWV0aG9kTm90QWxsb3dlZDogNDA1LFxuICBOb3RBY2NlcHRhYmxlOiA0MDYsXG4gIFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDogNDA3LFxuICBSZXF1ZXN0VGltZW91dDogNDA4LFxuICBDb25mbGljdDogNDA5LFxuICBHb25lOiA0MTAsXG4gIExlbmd0aFJlcXVpcmVkOiA0MTEsXG4gIFByZWNvbmRpdGlvbkZhaWxlZDogNDEyLFxuICBQYXlsb2FkVG9vTGFyZ2U6IDQxMyxcbiAgVXJpVG9vTG9uZzogNDE0LFxuICBVbnN1cHBvcnRlZE1lZGlhVHlwZTogNDE1LFxuICBSYW5nZU5vdFNhdGlzZmlhYmxlOiA0MTYsXG4gIEV4cGVjdGF0aW9uRmFpbGVkOiA0MTcsXG4gIEltQVRlYXBvdDogNDE4LFxuICBNaXNkaXJlY3RlZFJlcXVlc3Q6IDQyMSxcbiAgVW5wcm9jZXNzYWJsZUVudGl0eTogNDIyLFxuICBMb2NrZWQ6IDQyMyxcbiAgRmFpbGVkRGVwZW5kZW5jeTogNDI0LFxuICBUb29FYXJseTogNDI1LFxuICBVcGdyYWRlUmVxdWlyZWQ6IDQyNixcbiAgUHJlY29uZGl0aW9uUmVxdWlyZWQ6IDQyOCxcbiAgVG9vTWFueVJlcXVlc3RzOiA0MjksXG4gIFJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTogNDMxLFxuICBVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczogNDUxLFxuICBJbnRlcm5hbFNlcnZlckVycm9yOiA1MDAsXG4gIE5vdEltcGxlbWVudGVkOiA1MDEsXG4gIEJhZEdhdGV3YXk6IDUwMixcbiAgU2VydmljZVVuYXZhaWxhYmxlOiA1MDMsXG4gIEdhdGV3YXlUaW1lb3V0OiA1MDQsXG4gIEh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOiA1MDUsXG4gIFZhcmlhbnRBbHNvTmVnb3RpYXRlczogNTA2LFxuICBJbnN1ZmZpY2llbnRTdG9yYWdlOiA1MDcsXG4gIExvb3BEZXRlY3RlZDogNTA4LFxuICBOb3RFeHRlbmRlZDogNTEwLFxuICBOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDogNTExLFxufTtcblxuT2JqZWN0LmVudHJpZXMoSHR0cFN0YXR1c0NvZGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICBIdHRwU3RhdHVzQ29kZVt2YWx1ZV0gPSBrZXk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgSHR0cFN0YXR1c0NvZGU7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzLmpzJztcbmltcG9ydCBiaW5kIGZyb20gJy4vaGVscGVycy9iaW5kLmpzJztcbmltcG9ydCBBeGlvcyBmcm9tICcuL2NvcmUvQXhpb3MuanMnO1xuaW1wb3J0IG1lcmdlQ29uZmlnIGZyb20gJy4vY29yZS9tZXJnZUNvbmZpZy5qcyc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi9kZWZhdWx0cy9pbmRleC5qcyc7XG5pbXBvcnQgZm9ybURhdGFUb0pTT04gZnJvbSAnLi9oZWxwZXJzL2Zvcm1EYXRhVG9KU09OLmpzJztcbmltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gJy4vY2FuY2VsL0NhbmNlbGVkRXJyb3IuanMnO1xuaW1wb3J0IENhbmNlbFRva2VuIGZyb20gJy4vY2FuY2VsL0NhbmNlbFRva2VuLmpzJztcbmltcG9ydCBpc0NhbmNlbCBmcm9tICcuL2NhbmNlbC9pc0NhbmNlbC5qcyc7XG5pbXBvcnQge1ZFUlNJT059IGZyb20gJy4vZW52L2RhdGEuanMnO1xuaW1wb3J0IHRvRm9ybURhdGEgZnJvbSAnLi9oZWxwZXJzL3RvRm9ybURhdGEuanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuaW1wb3J0IHNwcmVhZCBmcm9tICcuL2hlbHBlcnMvc3ByZWFkLmpzJztcbmltcG9ydCBpc0F4aW9zRXJyb3IgZnJvbSAnLi9oZWxwZXJzL2lzQXhpb3NFcnJvci5qcyc7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gXCIuL2NvcmUvQXhpb3NIZWFkZXJzLmpzXCI7XG5pbXBvcnQgYWRhcHRlcnMgZnJvbSAnLi9hZGFwdGVycy9hZGFwdGVycy5qcyc7XG5pbXBvcnQgSHR0cFN0YXR1c0NvZGUgZnJvbSAnLi9oZWxwZXJzL0h0dHBTdGF0dXNDb2RlLmpzJztcblxuLyoqXG4gKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmYXVsdENvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICpcbiAqIEByZXR1cm5zIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdENvbmZpZykge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IEF4aW9zKGRlZmF1bHRDb25maWcpO1xuICBjb25zdCBpbnN0YW5jZSA9IGJpbmQoQXhpb3MucHJvdG90eXBlLnJlcXVlc3QsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgYXhpb3MucHJvdG90eXBlIHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgQXhpb3MucHJvdG90eXBlLCBjb250ZXh0LCB7YWxsT3duS2V5czogdHJ1ZX0pO1xuXG4gIC8vIENvcHkgY29udGV4dCB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIGNvbnRleHQsIG51bGwsIHthbGxPd25LZXlzOiB0cnVlfSk7XG5cbiAgLy8gRmFjdG9yeSBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlc1xuICBpbnN0YW5jZS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaW5zdGFuY2VDb25maWcpIHtcbiAgICByZXR1cm4gY3JlYXRlSW5zdGFuY2UobWVyZ2VDb25maWcoZGVmYXVsdENvbmZpZywgaW5zdGFuY2VDb25maWcpKTtcbiAgfTtcblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbi8vIENyZWF0ZSB0aGUgZGVmYXVsdCBpbnN0YW5jZSB0byBiZSBleHBvcnRlZFxuY29uc3QgYXhpb3MgPSBjcmVhdGVJbnN0YW5jZShkZWZhdWx0cyk7XG5cbi8vIEV4cG9zZSBBeGlvcyBjbGFzcyB0byBhbGxvdyBjbGFzcyBpbmhlcml0YW5jZVxuYXhpb3MuQXhpb3MgPSBBeGlvcztcblxuLy8gRXhwb3NlIENhbmNlbCAmIENhbmNlbFRva2VuXG5heGlvcy5DYW5jZWxlZEVycm9yID0gQ2FuY2VsZWRFcnJvcjtcbmF4aW9zLkNhbmNlbFRva2VuID0gQ2FuY2VsVG9rZW47XG5heGlvcy5pc0NhbmNlbCA9IGlzQ2FuY2VsO1xuYXhpb3MuVkVSU0lPTiA9IFZFUlNJT047XG5heGlvcy50b0Zvcm1EYXRhID0gdG9Gb3JtRGF0YTtcblxuLy8gRXhwb3NlIEF4aW9zRXJyb3IgY2xhc3NcbmF4aW9zLkF4aW9zRXJyb3IgPSBBeGlvc0Vycm9yO1xuXG4vLyBhbGlhcyBmb3IgQ2FuY2VsZWRFcnJvciBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuYXhpb3MuQ2FuY2VsID0gYXhpb3MuQ2FuY2VsZWRFcnJvcjtcblxuLy8gRXhwb3NlIGFsbC9zcHJlYWRcbmF4aW9zLmFsbCA9IGZ1bmN0aW9uIGFsbChwcm9taXNlcykge1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufTtcblxuYXhpb3Muc3ByZWFkID0gc3ByZWFkO1xuXG4vLyBFeHBvc2UgaXNBeGlvc0Vycm9yXG5heGlvcy5pc0F4aW9zRXJyb3IgPSBpc0F4aW9zRXJyb3I7XG5cbi8vIEV4cG9zZSBtZXJnZUNvbmZpZ1xuYXhpb3MubWVyZ2VDb25maWcgPSBtZXJnZUNvbmZpZztcblxuYXhpb3MuQXhpb3NIZWFkZXJzID0gQXhpb3NIZWFkZXJzO1xuXG5heGlvcy5mb3JtVG9KU09OID0gdGhpbmcgPT4gZm9ybURhdGFUb0pTT04odXRpbHMuaXNIVE1MRm9ybSh0aGluZykgPyBuZXcgRm9ybURhdGEodGhpbmcpIDogdGhpbmcpO1xuXG5heGlvcy5nZXRBZGFwdGVyID0gYWRhcHRlcnMuZ2V0QWRhcHRlcjtcblxuYXhpb3MuSHR0cFN0YXR1c0NvZGUgPSBIdHRwU3RhdHVzQ29kZTtcblxuYXhpb3MuZGVmYXVsdCA9IGF4aW9zO1xuXG4vLyB0aGlzIG1vZHVsZSBzaG91bGQgb25seSBoYXZlIGEgZGVmYXVsdCBleHBvcnRcbmV4cG9ydCBkZWZhdWx0IGF4aW9zXG4iLCJmdW5jdGlvbiBmb3JtYXREZXBlbmRlbmN5KHBhcmFtcywgaWR4KSB7XG4gIGlmIChwYXJhbXMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gYGF0IHBvc2l0aW9uICMke2lkeH1gO1xuICB9XG4gIGNvbnN0IGFyZ05hbWUgPSBwYXJhbXMuc3BsaXQoXCIsXCIpW2lkeF0udHJpbSgpO1xuICByZXR1cm4gYFwiJHthcmdOYW1lfVwiIGF0IHBvc2l0aW9uICMke2lkeH1gO1xufVxuZnVuY3Rpb24gY29tcG9zZUVycm9yTWVzc2FnZShtc2csIGUsIGluZGVudCA9IFwiICAgIFwiKSB7XG4gIHJldHVybiBbbXNnLCAuLi5lLm1lc3NhZ2Uuc3BsaXQoXCJcXG5cIikubWFwKChsKSA9PiBpbmRlbnQgKyBsKV0uam9pbihcIlxcblwiKTtcbn1cbmZ1bmN0aW9uIGZvcm1hdEVycm9yQ3RvcihjdG9yLCBwYXJhbUlkeCwgZXJyb3IpIHtcbiAgY29uc3QgWywgcGFyYW1zID0gbnVsbF0gPSBjdG9yLnRvU3RyaW5nKCkubWF0Y2goL2NvbnN0cnVjdG9yXFwoKFtcXHcsIF0rKVxcKS8pIHx8IFtdO1xuICBjb25zdCBkZXAgPSBmb3JtYXREZXBlbmRlbmN5KHBhcmFtcywgcGFyYW1JZHgpO1xuICByZXR1cm4gY29tcG9zZUVycm9yTWVzc2FnZShcbiAgICBgQ2Fubm90IGluamVjdCB0aGUgZGVwZW5kZW5jeSAke2RlcH0gb2YgXCIke2N0b3IubmFtZX1cIiBjb25zdHJ1Y3Rvci4gUmVhc29uOmAsXG4gICAgZXJyb3JcbiAgKTtcbn1cblxuY2xhc3MgUmVnaXN0cnlCYXNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fcmVnaXN0cnlNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICB9XG4gIHRva2VucygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9yZWdpc3RyeU1hcC5rZXlzKCkpO1xuICB9XG4gIGVudHJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5TWFwLmVudHJpZXMoKTtcbiAgfVxuICBnZXRBbGwoa2V5KSB7XG4gICAgdGhpcy5lbnN1cmUoa2V5KTtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnlNYXAuZ2V0KGtleSk7XG4gIH1cbiAgZ2V0KGtleSkge1xuICAgIHRoaXMuZW5zdXJlKGtleSk7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9yZWdpc3RyeU1hcC5nZXQoa2V5KTtcbiAgICByZXR1cm4gdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0gfHwgbnVsbDtcbiAgfVxuICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHRoaXMuZW5zdXJlKGtleSk7XG4gICAgdGhpcy5fcmVnaXN0cnlNYXAuZ2V0KGtleSkucHVzaCh2YWx1ZSk7XG4gIH1cbiAgc2V0QWxsKGtleSwgdmFsdWUpIHtcbiAgICB0aGlzLl9yZWdpc3RyeU1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gIH1cbiAgaGFzKGtleSkge1xuICAgIHRoaXMuZW5zdXJlKGtleSk7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5TWFwLmdldChrZXkpLmxlbmd0aCA+IDA7XG4gIH1cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5fcmVnaXN0cnlNYXAuY2xlYXIoKTtcbiAgfVxuICBkZWxldGUoa2V5KSB7XG4gICAgdGhpcy5fcmVnaXN0cnlNYXAuZGVsZXRlKGtleSk7XG4gIH1cbiAgZW5zdXJlKGtleSkge1xuICAgIGlmICghdGhpcy5fcmVnaXN0cnlNYXAuaGFzKGtleSkpIHtcbiAgICAgIHRoaXMuX3JlZ2lzdHJ5TWFwLnNldChrZXksIFtdKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgUG9zdFJlZ2lzdHJhdGlvbkludGVyY2VwdG9ycyBleHRlbmRzIFJlZ2lzdHJ5QmFzZSB7XG59XG5jbGFzcyBQcmVSZXNvbHV0aW9uSW50ZXJjZXB0b3JzIGV4dGVuZHMgUmVnaXN0cnlCYXNlIHtcbn1cbmNsYXNzIFBvc3RSZXNvbHV0aW9uSW50ZXJjZXB0b3JzIGV4dGVuZHMgUmVnaXN0cnlCYXNlIHtcbn1cbmNsYXNzIEludGVyY2VwdG9ycyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucG9zdFJlZ2lzdHJhdGlvbiA9IG5ldyBQb3N0UmVnaXN0cmF0aW9uSW50ZXJjZXB0b3JzKCk7XG4gICAgdGhpcy5wcmVSZXNvbHV0aW9uID0gbmV3IFByZVJlc29sdXRpb25JbnRlcmNlcHRvcnMoKTtcbiAgICB0aGlzLnBvc3RSZXNvbHV0aW9uID0gbmV3IFBvc3RSZXNvbHV0aW9uSW50ZXJjZXB0b3JzKCk7XG4gIH1cbn1cblxuY2xhc3MgRGVsYXllZENvbnN0cnVjdG9yIHtcbiAgY29uc3RydWN0b3Iod3JhcCkge1xuICAgIHRoaXMud3JhcCA9IHdyYXA7XG4gICAgdGhpcy5yZWZsZWN0TWV0aG9kcyA9IFtcbiAgICAgIFwiZ2V0XCIsXG4gICAgICBcImdldFByb3RvdHlwZU9mXCIsXG4gICAgICBcInNldFByb3RvdHlwZU9mXCIsXG4gICAgICBcImdldE93blByb3BlcnR5RGVzY3JpcHRvclwiLFxuICAgICAgXCJkZWZpbmVQcm9wZXJ0eVwiLFxuICAgICAgXCJoYXNcIixcbiAgICAgIFwic2V0XCIsXG4gICAgICBcImRlbGV0ZVByb3BlcnR5XCIsXG4gICAgICBcImFwcGx5XCIsXG4gICAgICBcImNvbnN0cnVjdFwiLFxuICAgICAgXCJvd25LZXlzXCJcbiAgICBdO1xuICB9XG4gIGNyZWF0ZVByb3h5KGNyZWF0ZU9iamVjdCkge1xuICAgIGNvbnN0IHRhcmdldCA9IHt9O1xuICAgIGxldCBpbml0ID0gZmFsc2U7XG4gICAgbGV0IHZhbHVlO1xuICAgIGNvbnN0IGRlbGF5ZWRPYmplY3QgPSAoKSA9PiB7XG4gICAgICBpZiAoIWluaXQpIHtcbiAgICAgICAgdmFsdWUgPSBjcmVhdGVPYmplY3QodGhpcy53cmFwKCkpO1xuICAgICAgICBpbml0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBuZXcgUHJveHkodGFyZ2V0LCB0aGlzLmNyZWF0ZUhhbmRsZXIoZGVsYXllZE9iamVjdCkpO1xuICB9XG4gIGNyZWF0ZUhhbmRsZXIoZGVsYXllZE9iamVjdCkge1xuICAgIGNvbnN0IGhhbmRsZXIgPSB7fTtcbiAgICBjb25zdCBpbnN0YWxsID0gKG5hbWUpID0+IHtcbiAgICAgIGhhbmRsZXJbbmFtZV0gPSAoLi4uYXJncykgPT4ge1xuICAgICAgICBhcmdzWzBdID0gZGVsYXllZE9iamVjdCgpO1xuICAgICAgICBjb25zdCBtZXRob2QgPSBSZWZsZWN0W25hbWVdO1xuICAgICAgICByZXR1cm4gbWV0aG9kKC4uLmFyZ3MpO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHRoaXMucmVmbGVjdE1ldGhvZHMuZm9yRWFjaChpbnN0YWxsKTtcbiAgICByZXR1cm4gaGFuZGxlcjtcbiAgfVxufVxuZnVuY3Rpb24gZGVsYXkod3JhcHBlZENvbnN0cnVjdG9yKSB7XG4gIGlmICh0eXBlb2Ygd3JhcHBlZENvbnN0cnVjdG9yID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiQXR0ZW1wdCB0byBgZGVsYXlgIHVuZGVmaW5lZC4gQ29uc3RydWN0b3IgbXVzdCBiZSB3cmFwcGVkIGluIGEgY2FsbGJhY2tcIlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIG5ldyBEZWxheWVkQ29uc3RydWN0b3Iod3JhcHBlZENvbnN0cnVjdG9yKTtcbn1cblxuZnVuY3Rpb24gaXNDbGFzc1Byb3ZpZGVyKHByb3ZpZGVyKSB7XG4gIHJldHVybiBCb29sZWFuKHByb3ZpZGVyLnVzZUNsYXNzKTtcbn1cblxuZnVuY3Rpb24gaXNGYWN0b3J5UHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgcmV0dXJuIEJvb2xlYW4ocHJvdmlkZXIudXNlRmFjdG9yeSk7XG59XG5cbmZ1bmN0aW9uIGlzTm9ybWFsVG9rZW4odG9rZW4pIHtcbiAgcmV0dXJuIHR5cGVvZiB0b2tlbiA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdG9rZW4gPT09IFwic3ltYm9sXCI7XG59XG5mdW5jdGlvbiBpc1Rva2VuRGVzY3JpcHRvcihkZXNjcmlwdG9yKSB7XG4gIHJldHVybiB0eXBlb2YgZGVzY3JpcHRvciA9PT0gXCJvYmplY3RcIiAmJiBcInRva2VuXCIgaW4gZGVzY3JpcHRvciAmJiBcIm11bHRpcGxlXCIgaW4gZGVzY3JpcHRvcjtcbn1cbmZ1bmN0aW9uIGlzVHJhbnNmb3JtRGVzY3JpcHRvcihkZXNjcmlwdG9yKSB7XG4gIHJldHVybiB0eXBlb2YgZGVzY3JpcHRvciA9PT0gXCJvYmplY3RcIiAmJiBcInRva2VuXCIgaW4gZGVzY3JpcHRvciAmJiBcInRyYW5zZm9ybVwiIGluIGRlc2NyaXB0b3I7XG59XG5mdW5jdGlvbiBpc0NvbnN0cnVjdG9yVG9rZW4odG9rZW4pIHtcbiAgcmV0dXJuIHR5cGVvZiB0b2tlbiA9PT0gXCJmdW5jdGlvblwiIHx8IHRva2VuIGluc3RhbmNlb2YgRGVsYXllZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiBpc1Rva2VuUHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgcmV0dXJuIEJvb2xlYW4ocHJvdmlkZXIudXNlVG9rZW4pO1xufVxuXG5mdW5jdGlvbiBpc1ZhbHVlUHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm92aWRlciwgXCJ1c2VWYWx1ZVwiKTtcbn1cblxuZnVuY3Rpb24gaXNQcm92aWRlcihwcm92aWRlcikge1xuICByZXR1cm4gaXNDbGFzc1Byb3ZpZGVyKHByb3ZpZGVyKSB8fCBpc1ZhbHVlUHJvdmlkZXIocHJvdmlkZXIpIHx8IGlzVG9rZW5Qcm92aWRlcihwcm92aWRlcikgfHwgaXNGYWN0b3J5UHJvdmlkZXIocHJvdmlkZXIpO1xufVxuXG5jb25zdCBJTkpFQ1RJT05fVE9LRU5fTUVUQURBVEFfS0VZID0gXCJpbmplY3Rpb25Ub2tlbnNcIjtcbmNvbnN0IFBBUkFNX0lORk9TX01FVEFEQVRBX0tFWSA9IFwicGFyYW1JbmZvc1wiO1xuZnVuY3Rpb24gZ2V0UGFyYW1JbmZvKHRhcmdldCkge1xuICBjb25zdCBwYXJhbXMgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiZGVzaWduOnBhcmFtdHlwZXNcIiwgdGFyZ2V0KSB8fCBbXTtcbiAgY29uc3QgaW5qZWN0aW9uVG9rZW5zID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShJTkpFQ1RJT05fVE9LRU5fTUVUQURBVEFfS0VZLCB0YXJnZXQpIHx8IHt9O1xuICBPYmplY3Qua2V5cyhpbmplY3Rpb25Ub2tlbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIHBhcmFtc1tOdW1iZXIoa2V5KV0gPSBpbmplY3Rpb25Ub2tlbnNba2V5XTtcbiAgfSk7XG4gIHJldHVybiBwYXJhbXM7XG59XG5mdW5jdGlvbiBkZWZpbmVJbmplY3Rpb25Ub2tlbk1ldGFkYXRhKGRhdGEsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24odGFyZ2V0LCBfcHJvcGVydHlLZXksIHBhcmFtZXRlckluZGV4KSB7XG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKElOSkVDVElPTl9UT0tFTl9NRVRBREFUQV9LRVksIHRhcmdldCkgfHwge307XG4gICAgZGVzY3JpcHRvcnNbcGFyYW1ldGVySW5kZXhdID0gdHJhbnNmb3JtID8ge1xuICAgICAgdG9rZW46IGRhdGEsXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zZm9ybS50cmFuc2Zvcm1Ub2tlbixcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgICB0cmFuc2Zvcm1BcmdzOiB0cmFuc2Zvcm0uYXJncyA/PyBbXVxuICAgIH0gOiBkYXRhO1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoSU5KRUNUSU9OX1RPS0VOX01FVEFEQVRBX0tFWSwgZGVzY3JpcHRvcnMsIHRhcmdldCk7XG4gIH07XG59XG5cbmNsYXNzIFJlZ2lzdHJ5IGV4dGVuZHMgUmVnaXN0cnlCYXNlIHtcbn1cblxuY2xhc3MgUmVzb2x1dGlvbkNvbnRleHQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNjb3BlZFJlc29sdXRpb25zID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0Rpc3Bvc2FibGUodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoIShcImRpc3Bvc2VcIiBpbiB2YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZS5kaXNwb3NlICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgZGlzcG9zZUZuID0gdmFsdWUuZGlzcG9zZTtcbiAgaWYgKGRpc3Bvc2VGbi5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG52YXIgTGlmZWN5Y2xlID0gLyogQF9fUFVSRV9fICovICgoTGlmZWN5Y2xlMikgPT4ge1xuICBMaWZlY3ljbGUyW0xpZmVjeWNsZTJbXCJUcmFuc2llbnRcIl0gPSAwXSA9IFwiVHJhbnNpZW50XCI7XG4gIExpZmVjeWNsZTJbTGlmZWN5Y2xlMltcIlNpbmdsZXRvblwiXSA9IDFdID0gXCJTaW5nbGV0b25cIjtcbiAgTGlmZWN5Y2xlMltMaWZlY3ljbGUyW1wiUmVzb2x1dGlvblNjb3BlZFwiXSA9IDJdID0gXCJSZXNvbHV0aW9uU2NvcGVkXCI7XG4gIExpZmVjeWNsZTJbTGlmZWN5Y2xlMltcIkNvbnRhaW5lclNjb3BlZFwiXSA9IDNdID0gXCJDb250YWluZXJTY29wZWRcIjtcbiAgcmV0dXJuIExpZmVjeWNsZTI7XG59KShMaWZlY3ljbGUgfHwge30pO1xuXG5jbGFzcyBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQpIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLl9yZWdpc3RyeSA9IG5ldyBSZWdpc3RyeSgpO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzID0gbmV3IEludGVyY2VwdG9ycygpO1xuICAgIHRoaXMuZGlzcG9zZWQgPSBmYWxzZTtcbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgfVxuICByZWdpc3Rlcih0b2tlbiwgcHJvdmlkZXJPckNvbnN0cnVjdG9yLCBvcHRpb25zID0geyBsaWZlY3ljbGU6IExpZmVjeWNsZS5UcmFuc2llbnQgfSkge1xuICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICBsZXQgcHJvdmlkZXI7XG4gICAgaWYgKCFpc1Byb3ZpZGVyKHByb3ZpZGVyT3JDb25zdHJ1Y3RvcikpIHtcbiAgICAgIHByb3ZpZGVyID0geyB1c2VDbGFzczogcHJvdmlkZXJPckNvbnN0cnVjdG9yIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3ZpZGVyID0gcHJvdmlkZXJPckNvbnN0cnVjdG9yO1xuICAgIH1cbiAgICBpZiAoaXNUb2tlblByb3ZpZGVyKHByb3ZpZGVyKSkge1xuICAgICAgY29uc3QgcGF0aCA9IFt0b2tlbl07XG4gICAgICBsZXQgdG9rZW5Qcm92aWRlciA9IHByb3ZpZGVyO1xuICAgICAgd2hpbGUgKHRva2VuUHJvdmlkZXIgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBjdXJyZW50VG9rZW4gPSB0b2tlblByb3ZpZGVyLnVzZVRva2VuO1xuICAgICAgICBpZiAocGF0aC5pbmNsdWRlcyhjdXJyZW50VG9rZW4pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFRva2VuIHJlZ2lzdHJhdGlvbiBjeWNsZSBkZXRlY3RlZCEgJHtbLi4ucGF0aCwgY3VycmVudFRva2VuXS5qb2luKFxuICAgICAgICAgICAgICBcIiAtPiBcIlxuICAgICAgICAgICAgKX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBwYXRoLnB1c2goY3VycmVudFRva2VuKTtcbiAgICAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5fcmVnaXN0cnkuZ2V0KGN1cnJlbnRUb2tlbik7XG4gICAgICAgIGlmIChyZWdpc3RyYXRpb24gJiYgaXNUb2tlblByb3ZpZGVyKHJlZ2lzdHJhdGlvbi5wcm92aWRlcikpIHtcbiAgICAgICAgICB0b2tlblByb3ZpZGVyID0gcmVnaXN0cmF0aW9uLnByb3ZpZGVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRva2VuUHJvdmlkZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgob3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5TaW5nbGV0b24gfHwgb3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5Db250YWluZXJTY29wZWQgfHwgb3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5SZXNvbHV0aW9uU2NvcGVkKSAmJiAoaXNWYWx1ZVByb3ZpZGVyKHByb3ZpZGVyKSB8fCBpc0ZhY3RvcnlQcm92aWRlcihwcm92aWRlcikpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW5ub3QgdXNlIGxpZmVjeWNsZSBcIiR7TGlmZWN5Y2xlW29wdGlvbnMubGlmZWN5Y2xlXX1cIiB3aXRoIFZhbHVlUHJvdmlkZXJzIG9yIEZhY3RvcnlQcm92aWRlcnNgXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9yZWdpc3RyeS5zZXQodG9rZW4sIHsgcHJvdmlkZXIsIG9wdGlvbnMgfSk7XG4gICAgdGhpcy5leGVjdXRlUG9zdFJlZ2lzdHJhdGlvbkludGVyY2VwdG9yKHRva2VuKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICByZWdpc3RlclR5cGUoZnJvbSwgdG8pIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgaWYgKGlzTm9ybWFsVG9rZW4odG8pKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3Rlcihmcm9tLCB7XG4gICAgICAgIHVzZVRva2VuOiB0b1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyKGZyb20sIHtcbiAgICAgIHVzZUNsYXNzOiB0b1xuICAgIH0pO1xuICB9XG4gIHJlZ2lzdGVySW5zdGFuY2UodG9rZW4sIGluc3RhbmNlMikge1xuICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3Rlcih0b2tlbiwge1xuICAgICAgdXNlVmFsdWU6IGluc3RhbmNlMlxuICAgIH0pO1xuICB9XG4gIHJlZ2lzdGVyU2luZ2xldG9uKGZyb20sIHRvKSB7XG4gICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgIGlmIChpc05vcm1hbFRva2VuKGZyb20pKSB7XG4gICAgICBpZiAoaXNOb3JtYWxUb2tlbih0bykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0ZXIoXG4gICAgICAgICAgZnJvbSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB1c2VUb2tlbjogdG9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgbGlmZWN5Y2xlOiBMaWZlY3ljbGUuU2luZ2xldG9uIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0bykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RlcihcbiAgICAgICAgICBmcm9tLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVzZUNsYXNzOiB0b1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBsaWZlY3ljbGU6IExpZmVjeWNsZS5TaW5nbGV0b24gfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ2Fubm90IHJlZ2lzdGVyIGEgdHlwZSBuYW1lIGFzIGEgc2luZ2xldG9uIHdpdGhvdXQgYSBcInRvXCIgdG9rZW4nXG4gICAgICApO1xuICAgIH1cbiAgICBsZXQgdXNlQ2xhc3MgPSBmcm9tO1xuICAgIGlmICh0byAmJiAhaXNOb3JtYWxUb2tlbih0bykpIHtcbiAgICAgIHVzZUNsYXNzID0gdG87XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyKFxuICAgICAgZnJvbSxcbiAgICAgIHtcbiAgICAgICAgdXNlQ2xhc3NcbiAgICAgIH0sXG4gICAgICB7IGxpZmVjeWNsZTogTGlmZWN5Y2xlLlNpbmdsZXRvbiB9XG4gICAgKTtcbiAgfVxuICByZXNvbHZlKHRva2VuLCBjb250ZXh0ID0gbmV3IFJlc29sdXRpb25Db250ZXh0KCkpIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgY29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5nZXRSZWdpc3RyYXRpb24odG9rZW4pO1xuICAgIGlmICghcmVnaXN0cmF0aW9uICYmIGlzTm9ybWFsVG9rZW4odG9rZW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBdHRlbXB0ZWQgdG8gcmVzb2x2ZSB1bnJlZ2lzdGVyZWQgZGVwZW5kZW5jeSB0b2tlbjogXCIke3Rva2VuLnRvU3RyaW5nKCl9XCJgXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmV4ZWN1dGVQcmVSZXNvbHV0aW9uSW50ZXJjZXB0b3IodG9rZW4sIFwiU2luZ2xlXCIpO1xuICAgIGlmIChyZWdpc3RyYXRpb24pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucmVzb2x2ZVJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb24sIGNvbnRleHQpO1xuICAgICAgdGhpcy5leGVjdXRlUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgcmVzdWx0LCBcIlNpbmdsZVwiKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGlmIChpc0NvbnN0cnVjdG9yVG9rZW4odG9rZW4pKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNvbnN0cnVjdCh0b2tlbiwgY29udGV4dCk7XG4gICAgICB0aGlzLmV4ZWN1dGVQb3N0UmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCByZXN1bHQsIFwiU2luZ2xlXCIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJBdHRlbXB0ZWQgdG8gY29uc3RydWN0IGFuIHVuZGVmaW5lZCBjb25zdHJ1Y3Rvci4gQ291bGQgbWVhbiBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgcHJvYmxlbS4gVHJ5IHVzaW5nIGBkZWxheWAgZnVuY3Rpb24uXCJcbiAgICApO1xuICB9XG4gIGV4ZWN1dGVQb3N0UmVnaXN0cmF0aW9uSW50ZXJjZXB0b3IodG9rZW4pIHtcbiAgICBpZiAodGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlZ2lzdHJhdGlvbi5oYXModG9rZW4pKSB7XG4gICAgICBjb25zdCByZW1haW5pbmdJbnRlcmNlcHRvcnMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgaW50ZXJjZXB0b3Igb2YgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlZ2lzdHJhdGlvbi5nZXRBbGwodG9rZW4pKSB7XG4gICAgICAgIGlmIChpbnRlcmNlcHRvci5vcHRpb25zLmZyZXF1ZW5jeSAhPT0gXCJPbmNlXCIpIHtcbiAgICAgICAgICByZW1haW5pbmdJbnRlcmNlcHRvcnMucHVzaChpbnRlcmNlcHRvcik7XG4gICAgICAgIH1cbiAgICAgICAgaW50ZXJjZXB0b3IuY2FsbGJhY2sodG9rZW4pO1xuICAgICAgfVxuICAgICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlZ2lzdHJhdGlvbi5zZXRBbGwodG9rZW4sIHJlbWFpbmluZ0ludGVyY2VwdG9ycyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmludGVyY2VwdG9ycy5wb3N0QW55UmVnaXN0cmF0aW9uKSB7XG4gICAgICB0aGlzLmludGVyY2VwdG9ycy5wb3N0QW55UmVnaXN0cmF0aW9uKHRva2VuKTtcbiAgICB9XG4gIH1cbiAgZXhlY3V0ZVByZVJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgcmVzb2x1dGlvblR5cGUpIHtcbiAgICBpZiAodGhpcy5pbnRlcmNlcHRvcnMucHJlUmVzb2x1dGlvbi5oYXModG9rZW4pKSB7XG4gICAgICBjb25zdCByZW1haW5pbmdJbnRlcmNlcHRvcnMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgaW50ZXJjZXB0b3Igb2YgdGhpcy5pbnRlcmNlcHRvcnMucHJlUmVzb2x1dGlvbi5nZXRBbGwodG9rZW4pKSB7XG4gICAgICAgIGlmIChpbnRlcmNlcHRvci5vcHRpb25zLmZyZXF1ZW5jeSAhPT0gXCJPbmNlXCIpIHtcbiAgICAgICAgICByZW1haW5pbmdJbnRlcmNlcHRvcnMucHVzaChpbnRlcmNlcHRvcik7XG4gICAgICAgIH1cbiAgICAgICAgaW50ZXJjZXB0b3IuY2FsbGJhY2sodG9rZW4sIHJlc29sdXRpb25UeXBlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW50ZXJjZXB0b3JzLnByZVJlc29sdXRpb24uc2V0QWxsKHRva2VuLCByZW1haW5pbmdJbnRlcmNlcHRvcnMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbnRlcmNlcHRvcnMucHJlQW55UmVzb2x1dGlvbikge1xuICAgICAgdGhpcy5pbnRlcmNlcHRvcnMucHJlQW55UmVzb2x1dGlvbih0b2tlbiwgcmVzb2x1dGlvblR5cGUpO1xuICAgIH1cbiAgfVxuICBleGVjdXRlUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgcmVzdWx0LCByZXNvbHV0aW9uVHlwZSkge1xuICAgIGlmICh0aGlzLmludGVyY2VwdG9ycy5wb3N0UmVzb2x1dGlvbi5oYXModG9rZW4pKSB7XG4gICAgICBjb25zdCByZW1haW5pbmdJbnRlcmNlcHRvcnMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgaW50ZXJjZXB0b3Igb2YgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlc29sdXRpb24uZ2V0QWxsKFxuICAgICAgICB0b2tlblxuICAgICAgKSkge1xuICAgICAgICBpZiAoaW50ZXJjZXB0b3Iub3B0aW9ucy5mcmVxdWVuY3kgIT09IFwiT25jZVwiKSB7XG4gICAgICAgICAgcmVtYWluaW5nSW50ZXJjZXB0b3JzLnB1c2goaW50ZXJjZXB0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGludGVyY2VwdG9yLmNhbGxiYWNrKHRva2VuLCByZXN1bHQsIHJlc29sdXRpb25UeXBlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RSZXNvbHV0aW9uLnNldEFsbCh0b2tlbiwgcmVtYWluaW5nSW50ZXJjZXB0b3JzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RBbnlSZXNvbHV0aW9uKSB7XG4gICAgICB0aGlzLmludGVyY2VwdG9ycy5wb3N0QW55UmVzb2x1dGlvbih0b2tlbiwgcmVzdWx0LCByZXNvbHV0aW9uVHlwZSk7XG4gICAgfVxuICB9XG4gIHJlc29sdmVSZWdpc3RyYXRpb24ocmVnaXN0cmF0aW9uLCBjb250ZXh0KSB7XG4gICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgIGlmIChyZWdpc3RyYXRpb24ub3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5SZXNvbHV0aW9uU2NvcGVkICYmIGNvbnRleHQuc2NvcGVkUmVzb2x1dGlvbnMuaGFzKHJlZ2lzdHJhdGlvbikpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LnNjb3BlZFJlc29sdXRpb25zLmdldChyZWdpc3RyYXRpb24pO1xuICAgIH1cbiAgICBjb25zdCBpc1NpbmdsZXRvbiA9IHJlZ2lzdHJhdGlvbi5vcHRpb25zLmxpZmVjeWNsZSA9PT0gTGlmZWN5Y2xlLlNpbmdsZXRvbjtcbiAgICBjb25zdCBpc0NvbnRhaW5lclNjb3BlZCA9IHJlZ2lzdHJhdGlvbi5vcHRpb25zLmxpZmVjeWNsZSA9PT0gTGlmZWN5Y2xlLkNvbnRhaW5lclNjb3BlZDtcbiAgICBjb25zdCByZXR1cm5JbnN0YW5jZSA9IGlzU2luZ2xldG9uIHx8IGlzQ29udGFpbmVyU2NvcGVkO1xuICAgIGxldCBuZXdSZXNvbHV0aW9uID0gdHJ1ZTtcbiAgICBsZXQgcmVzb2x2ZWQ7XG4gICAgaWYgKGlzVmFsdWVQcm92aWRlcihyZWdpc3RyYXRpb24ucHJvdmlkZXIpKSB7XG4gICAgICByZXNvbHZlZCA9IHJlZ2lzdHJhdGlvbi5wcm92aWRlci51c2VWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9rZW5Qcm92aWRlcihyZWdpc3RyYXRpb24ucHJvdmlkZXIpKSB7XG4gICAgICBuZXdSZXNvbHV0aW9uID0gcmV0dXJuSW5zdGFuY2U7XG4gICAgICByZXNvbHZlZCA9IHJldHVybkluc3RhbmNlID8gcmVnaXN0cmF0aW9uLmluc3RhbmNlIHx8IChyZWdpc3RyYXRpb24uaW5zdGFuY2UgPSB0aGlzLnJlc29sdmUoXG4gICAgICAgIHJlZ2lzdHJhdGlvbi5wcm92aWRlci51c2VUb2tlbixcbiAgICAgICAgY29udGV4dFxuICAgICAgKSkgOiB0aGlzLnJlc29sdmUocmVnaXN0cmF0aW9uLnByb3ZpZGVyLnVzZVRva2VuLCBjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKGlzQ2xhc3NQcm92aWRlcihyZWdpc3RyYXRpb24ucHJvdmlkZXIpKSB7XG4gICAgICBuZXdSZXNvbHV0aW9uID0gcmV0dXJuSW5zdGFuY2U7XG4gICAgICByZXNvbHZlZCA9IHJldHVybkluc3RhbmNlID8gcmVnaXN0cmF0aW9uLmluc3RhbmNlIHx8IChyZWdpc3RyYXRpb24uaW5zdGFuY2UgPSB0aGlzLmNvbnN0cnVjdChcbiAgICAgICAgcmVnaXN0cmF0aW9uLnByb3ZpZGVyLnVzZUNsYXNzLFxuICAgICAgICBjb250ZXh0XG4gICAgICApKSA6IHRoaXMuY29uc3RydWN0KHJlZ2lzdHJhdGlvbi5wcm92aWRlci51c2VDbGFzcywgY29udGV4dCk7XG4gICAgfSBlbHNlIGlmIChpc0ZhY3RvcnlQcm92aWRlcihyZWdpc3RyYXRpb24ucHJvdmlkZXIpKSB7XG4gICAgICByZXNvbHZlZCA9IHJlZ2lzdHJhdGlvbi5wcm92aWRlci51c2VGYWN0b3J5KHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdSZXNvbHV0aW9uID0gZmFsc2U7XG4gICAgICByZXNvbHZlZCA9IHRoaXMuY29uc3RydWN0KHJlZ2lzdHJhdGlvbi5wcm92aWRlciwgY29udGV4dCk7XG4gICAgfVxuICAgIGlmIChyZWdpc3RyYXRpb24ub3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5SZXNvbHV0aW9uU2NvcGVkKSB7XG4gICAgICBjb250ZXh0LnNjb3BlZFJlc29sdXRpb25zLnNldChyZWdpc3RyYXRpb24sIHJlc29sdmVkKTtcbiAgICB9XG4gICAgaWYgKG5ld1Jlc29sdXRpb24gJiYgaXNEaXNwb3NhYmxlKHJlc29sdmVkKSkge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQocmVzb2x2ZWQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gIH1cbiAgcmVzb2x2ZUFsbCh0b2tlbiwgY29udGV4dCA9IG5ldyBSZXNvbHV0aW9uQ29udGV4dCgpKSB7XG4gICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbnMgPSB0aGlzLmdldEFsbFJlZ2lzdHJhdGlvbnModG9rZW4pO1xuICAgIGlmICghcmVnaXN0cmF0aW9ucyAmJiBpc05vcm1hbFRva2VuKHRva2VuKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQXR0ZW1wdGVkIHRvIHJlc29sdmUgdW5yZWdpc3RlcmVkIGRlcGVuZGVuY3kgdG9rZW46IFwiJHt0b2tlbi50b1N0cmluZygpfVwiYFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5leGVjdXRlUHJlUmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCBcIkFsbFwiKTtcbiAgICBpZiAocmVnaXN0cmF0aW9ucykge1xuICAgICAgY29uc3QgcmVzdWx0MiA9IHJlZ2lzdHJhdGlvbnMubWFwKFxuICAgICAgICAoaXRlbSkgPT4gdGhpcy5yZXNvbHZlUmVnaXN0cmF0aW9uKGl0ZW0sIGNvbnRleHQpXG4gICAgICApO1xuICAgICAgdGhpcy5leGVjdXRlUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgcmVzdWx0MiwgXCJBbGxcIik7XG4gICAgICByZXR1cm4gcmVzdWx0MjtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gW3RoaXMuY29uc3RydWN0KHRva2VuLCBjb250ZXh0KV07XG4gICAgdGhpcy5leGVjdXRlUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgcmVzdWx0LCBcIkFsbFwiKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHJlZ2lzdGVyZWRUb2tlbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5LnRva2VucygpO1xuICB9XG4gIGlzUmVnaXN0ZXJlZCh0b2tlbiwgcmVjdXJzaXZlID0gZmFsc2UpIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5Lmhhcyh0b2tlbikgfHwgKChyZWN1cnNpdmUgJiYgdGhpcy5wYXJlbnQ/LmlzUmVnaXN0ZXJlZCh0b2tlbiwgdHJ1ZSkpID8/IGZhbHNlKTtcbiAgfVxuICByZXNldCgpIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgdGhpcy5fcmVnaXN0cnkuY2xlYXIoKTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5wcmVSZXNvbHV0aW9uLmNsZWFyKCk7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlc29sdXRpb24uY2xlYXIoKTtcbiAgfVxuICB1bnJlZ2lzdGVyQWxsKCkge1xuICAgIHRoaXMuX3JlZ2lzdHJ5LmNsZWFyKCk7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucHJlUmVzb2x1dGlvbi5jbGVhcigpO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RSZXNvbHV0aW9uLmNsZWFyKCk7XG4gIH1cbiAgdW5yZWdpc3Rlcih0b2tlbikge1xuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IHRoaXMuZ2V0UmVnaXN0cmF0aW9uKHRva2VuKTtcbiAgICBpZiAoIXJlZ2lzdHJhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQXR0ZW1wdGVkIHRvIGRlbGV0ZSB1bnJlZ2lzdGVyZWQgZGVwZW5kZW5jeSB0b2tlbjogXCIke3Rva2VuLnRvU3RyaW5nKCl9XCJgXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9yZWdpc3RyeS5kZWxldGUodG9rZW4pO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnByZVJlc29sdXRpb24uZGVsZXRlKHRva2VuKTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5wb3N0UmVzb2x1dGlvbi5kZWxldGUodG9rZW4pO1xuICB9XG4gIGNsZWFySW5zdGFuY2VzKCkge1xuICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICBmb3IgKGNvbnN0IFt0b2tlbiwgcmVnaXN0cmF0aW9uc10gb2YgdGhpcy5fcmVnaXN0cnkuZW50cmllcygpKSB7XG4gICAgICB0aGlzLl9yZWdpc3RyeS5zZXRBbGwoXG4gICAgICAgIHRva2VuLFxuICAgICAgICByZWdpc3RyYXRpb25zLmZpbHRlcigocmVnaXN0cmF0aW9uKSA9PiAhaXNWYWx1ZVByb3ZpZGVyKHJlZ2lzdHJhdGlvbi5wcm92aWRlcikpLm1hcCgocmVnaXN0cmF0aW9uKSA9PiB7XG4gICAgICAgICAgcmVnaXN0cmF0aW9uLmluc3RhbmNlID0gdm9pZCAwO1xuICAgICAgICAgIHJldHVybiByZWdpc3RyYXRpb247XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBjcmVhdGVDaGlsZENvbnRhaW5lcigpIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgY29uc3QgY2hpbGRDb250YWluZXIgPSBuZXcgSW50ZXJuYWxEZXBlbmRlbmN5Q29udGFpbmVyKHRoaXMpO1xuICAgIGZvciAoY29uc3QgW3Rva2VuLCByZWdpc3RyYXRpb25zXSBvZiB0aGlzLl9yZWdpc3RyeS5lbnRyaWVzKCkpIHtcbiAgICAgIGlmIChyZWdpc3RyYXRpb25zLnNvbWUoXG4gICAgICAgICh7IG9wdGlvbnMgfSkgPT4gb3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5Db250YWluZXJTY29wZWRcbiAgICAgICkpIHtcbiAgICAgICAgY2hpbGRDb250YWluZXIuX3JlZ2lzdHJ5LnNldEFsbChcbiAgICAgICAgICB0b2tlbixcbiAgICAgICAgICByZWdpc3RyYXRpb25zLm1hcCgocmVnaXN0cmF0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uLm9wdGlvbnMubGlmZWN5Y2xlID09PSBMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZXI6IHJlZ2lzdHJhdGlvbi5wcm92aWRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiByZWdpc3RyYXRpb24ub3B0aW9uc1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbjtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hpbGRDb250YWluZXI7XG4gIH1cbiAgYWZ0ZXJSZWdpc3RyYXRpb24odG9rZW4sIGNhbGxiYWNrLCBvcHRpb25zID0geyBmcmVxdWVuY3k6IFwiQWx3YXlzXCIgfSkge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RSZWdpc3RyYXRpb24uc2V0KHRva2VuLCB7XG4gICAgICBjYWxsYmFjayxcbiAgICAgIG9wdGlvbnNcbiAgICB9KTtcbiAgfVxuICBhZnRlckFueVJlZ2lzdHJhdGlvbihjYWxsYmFjaykge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RBbnlSZWdpc3RyYXRpb24gPSBjYWxsYmFjaztcbiAgfVxuICBiZWZvcmVSZXNvbHV0aW9uKHRva2VuLCBjYWxsYmFjaywgb3B0aW9ucyA9IHsgZnJlcXVlbmN5OiBcIkFsd2F5c1wiIH0pIHtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5wcmVSZXNvbHV0aW9uLnNldCh0b2tlbiwge1xuICAgICAgY2FsbGJhY2ssXG4gICAgICBvcHRpb25zXG4gICAgfSk7XG4gIH1cbiAgYmVmb3JlQW55UmVzb2x1dGlvbihjYWxsYmFjaykge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnByZUFueVJlc29sdXRpb24gPSBjYWxsYmFjaztcbiAgfVxuICBhZnRlclJlc29sdXRpb24odG9rZW4sIGNhbGxiYWNrLCBvcHRpb25zID0geyBmcmVxdWVuY3k6IFwiQWx3YXlzXCIgfSkge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RSZXNvbHV0aW9uLnNldCh0b2tlbiwge1xuICAgICAgY2FsbGJhY2ssXG4gICAgICBvcHRpb25zXG4gICAgfSk7XG4gIH1cbiAgYWZ0ZXJBbnlSZXNvbHV0aW9uKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdEFueVJlc29sdXRpb24gPSBjYWxsYmFjaztcbiAgfVxuICBhc3luYyBkaXNwb3NlKCkge1xuICAgIHRoaXMuZGlzcG9zZWQgPSB0cnVlO1xuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgdGhpcy5kaXNwb3NhYmxlcy5mb3JFYWNoKChkaXNwb3NhYmxlKSA9PiB7XG4gICAgICBjb25zdCBtYXliZVByb21pc2UgPSBkaXNwb3NhYmxlLmRpc3Bvc2UoKTtcbiAgICAgIGlmIChtYXliZVByb21pc2UpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChtYXliZVByb21pc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgfVxuICBnZXRSZWdpc3RyYXRpb24odG9rZW4pIHtcbiAgICBpZiAodGhpcy5pc1JlZ2lzdGVyZWQodG9rZW4pKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnkuZ2V0KHRva2VuKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0UmVnaXN0cmF0aW9uKHRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgZ2V0QWxsUmVnaXN0cmF0aW9ucyh0b2tlbikge1xuICAgIGlmICh0aGlzLmlzUmVnaXN0ZXJlZCh0b2tlbikpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZWdpc3RyeS5nZXRBbGwodG9rZW4pO1xuICAgIH1cbiAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRBbGxSZWdpc3RyYXRpb25zKHRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3RydWN0KGN0b3IsIGNvbnRleHQpIHtcbiAgICBpZiAoY3RvciBpbnN0YW5jZW9mIERlbGF5ZWRDb25zdHJ1Y3Rvcikge1xuICAgICAgcmV0dXJuIGN0b3IuY3JlYXRlUHJveHkoXG4gICAgICAgICh0YXJnZXQpID0+IHRoaXMucmVzb2x2ZSh0YXJnZXQsIGNvbnRleHQpXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBpbnN0YW5jZTIgPSAoKCkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1JbmZvID0gUmVmbGVjdC5nZXRNZXRhZGF0YShQQVJBTV9JTkZPU19NRVRBREFUQV9LRVksIGN0b3IpO1xuICAgICAgaWYgKCFwYXJhbUluZm8gfHwgcGFyYW1JbmZvLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoY3Rvci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbmV3IGN0b3IoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFR5cGVJbmZvIG5vdCBrbm93biBmb3IgXCIke2N0b3IubmFtZX1cImApO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFyYW1zID0gcGFyYW1JbmZvLm1hcCh0aGlzLnJlc29sdmVQYXJhbXMoY29udGV4dCwgY3RvcikpO1xuICAgICAgcmV0dXJuIG5ldyBjdG9yKC4uLnBhcmFtcyk7XG4gICAgfSkoKTtcbiAgICBpZiAoaXNEaXNwb3NhYmxlKGluc3RhbmNlMikpIHtcbiAgICAgIHRoaXMuZGlzcG9zYWJsZXMuYWRkKGluc3RhbmNlMik7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTI7XG4gIH1cbiAgcmVzb2x2ZVBhcmFtcyhjb250ZXh0LCBjdG9yKSB7XG4gICAgcmV0dXJuIChwYXJhbSwgaWR4KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoaXNUb2tlbkRlc2NyaXB0b3IocGFyYW0pKSB7XG4gICAgICAgICAgaWYgKGlzVHJhbnNmb3JtRGVzY3JpcHRvcihwYXJhbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJhbS5tdWx0aXBsZSA/IHRoaXMucmVzb2x2ZShwYXJhbS50cmFuc2Zvcm0pLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlQWxsKHBhcmFtLnRva2VuKSxcbiAgICAgICAgICAgICAgLi4ucGFyYW0udHJhbnNmb3JtQXJnc1xuICAgICAgICAgICAgKSA6IHRoaXMucmVzb2x2ZShwYXJhbS50cmFuc2Zvcm0pLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlKHBhcmFtLnRva2VuLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgLi4ucGFyYW0udHJhbnNmb3JtQXJnc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHBhcmFtLm11bHRpcGxlID8gdGhpcy5yZXNvbHZlQWxsKHBhcmFtLnRva2VuKSA6IHRoaXMucmVzb2x2ZShwYXJhbS50b2tlbiwgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVHJhbnNmb3JtRGVzY3JpcHRvcihwYXJhbSkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlKHBhcmFtLnRyYW5zZm9ybSwgY29udGV4dCkudHJhbnNmb3JtKFxuICAgICAgICAgICAgdGhpcy5yZXNvbHZlKHBhcmFtLnRva2VuLCBjb250ZXh0KSxcbiAgICAgICAgICAgIC4uLnBhcmFtLnRyYW5zZm9ybUFyZ3NcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmUocGFyYW0sIGNvbnRleHQpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdEVycm9yQ3RvcihjdG9yLCBpZHgsIGVycm9yKSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICBlbnN1cmVOb3REaXNwb3NlZCgpIHtcbiAgICBpZiAodGhpcy5kaXNwb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlRoaXMgY29udGFpbmVyIGhhcyBiZWVuIGRpc3Bvc2VkLCB5b3UgY2Fubm90IGludGVyYWN0IHdpdGggYSBkaXNwb3NlZCBjb250YWluZXJcIlxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbmNvbnN0IGluc3RhbmNlID0gbmV3IEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lcigpO1xuXG5mdW5jdGlvbiBhdXRvSW5qZWN0YWJsZSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRhcmdldCkge1xuICAgIGNvbnN0IHBhcmFtSW5mbyA9IGdldFBhcmFtSW5mbyh0YXJnZXQpO1xuICAgIHJldHVybiBjbGFzcyBleHRlbmRzIHRhcmdldCB7XG4gICAgICBjb25zdHJ1Y3RvciguLi5hcmdzKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgIC4uLmFyZ3MuY29uY2F0KFxuICAgICAgICAgICAgcGFyYW1JbmZvLnNsaWNlKGFyZ3MubGVuZ3RoKS5tYXAoKHR5cGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVG9rZW5EZXNjcmlwdG9yKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1EZXNjcmlwdG9yKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlLm11bHRpcGxlID8gaW5zdGFuY2UucmVzb2x2ZSh0eXBlLnRyYW5zZm9ybSkudHJhbnNmb3JtKFxuICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlc29sdmVBbGwodHlwZS50b2tlbiksXG4gICAgICAgICAgICAgICAgICAgICAgLi4udHlwZS50cmFuc2Zvcm1BcmdzXG4gICAgICAgICAgICAgICAgICAgICkgOiBpbnN0YW5jZS5yZXNvbHZlKHR5cGUudHJhbnNmb3JtKS50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UucmVzb2x2ZSh0eXBlLnRva2VuKSxcbiAgICAgICAgICAgICAgICAgICAgICAuLi50eXBlLnRyYW5zZm9ybUFyZ3NcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlLm11bHRpcGxlID8gaW5zdGFuY2UucmVzb2x2ZUFsbCh0eXBlLnRva2VuKSA6IGluc3RhbmNlLnJlc29sdmUodHlwZS50b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc1RyYW5zZm9ybURlc2NyaXB0b3IodHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5yZXNvbHZlKHR5cGUudHJhbnNmb3JtKS50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlc29sdmUodHlwZS50b2tlbiksXG4gICAgICAgICAgICAgICAgICAgIC4uLnR5cGUudHJhbnNmb3JtQXJnc1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlc29sdmUodHlwZSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJnSW5kZXggPSBpbmRleCArIGFyZ3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgIGZvcm1hdEVycm9yQ3Rvcih0YXJnZXQsIGFyZ0luZGV4LCBlcnJvcilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbmplY3QodG9rZW4pIHtcbiAgcmV0dXJuIGRlZmluZUluamVjdGlvblRva2VuTWV0YWRhdGEodG9rZW4pO1xufVxuXG5mdW5jdGlvbiBpbmplY3RBbGwodG9rZW4pIHtcbiAgY29uc3QgZGF0YSA9IHsgdG9rZW4sIG11bHRpcGxlOiB0cnVlIH07XG4gIHJldHVybiBkZWZpbmVJbmplY3Rpb25Ub2tlbk1ldGFkYXRhKGRhdGEpO1xufVxuXG5mdW5jdGlvbiBpbmplY3RBbGxXaXRoVHJhbnNmb3JtKHRva2VuLCB0cmFuc2Zvcm1lciwgLi4uYXJncykge1xuICBjb25zdCBkYXRhID0ge1xuICAgIHRva2VuLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtZXIsXG4gICAgdHJhbnNmb3JtQXJnczogYXJnc1xuICB9O1xuICByZXR1cm4gZGVmaW5lSW5qZWN0aW9uVG9rZW5NZXRhZGF0YShkYXRhKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0V2l0aFRyYW5zZm9ybSh0b2tlbiwgdHJhbnNmb3JtZXIsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGRlZmluZUluamVjdGlvblRva2VuTWV0YWRhdGEodG9rZW4sIHtcbiAgICB0cmFuc2Zvcm1Ub2tlbjogdHJhbnNmb3JtZXIsXG4gICAgYXJnc1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0YWJsZSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRhcmdldCkge1xuICAgIGNvbnN0IHBhcmFtSW5mbyA9IGdldFBhcmFtSW5mbyh0YXJnZXQpO1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoUEFSQU1fSU5GT1NfTUVUQURBVEFfS0VZLCBwYXJhbUluZm8sIHRhcmdldCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdHJ5KHJlZ2lzdHJhdGlvbnMgPSBbXSkge1xuICByZXR1cm4gZnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgcmVnaXN0cmF0aW9ucy5mb3JFYWNoKFxuICAgICAgKHsgdG9rZW4sIG9wdGlvbnMsIC4uLnByb3ZpZGVyIH0pID0+IGluc3RhbmNlLnJlZ2lzdGVyKHRva2VuLCBwcm92aWRlciwgb3B0aW9ucylcbiAgICApO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHNjb3BlZChsaWZlY3ljbGUsIHRva2VuKSB7XG4gIHJldHVybiBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICBpbmplY3RhYmxlKCkodGFyZ2V0KTtcbiAgICBpbnN0YW5jZS5yZWdpc3Rlcih0b2tlbiB8fCB0YXJnZXQsIHRhcmdldCwge1xuICAgICAgbGlmZWN5Y2xlXG4gICAgfSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHNpbmdsZXRvbigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRhcmdldCkge1xuICAgIGluamVjdGFibGUoKSh0YXJnZXQpO1xuICAgIGluc3RhbmNlLnJlZ2lzdGVyU2luZ2xldG9uKHRhcmdldCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluc3RhbmNlQ2FjaGluZ0ZhY3RvcnkoZmFjdG9yeUZ1bmMpIHtcbiAgbGV0IGluc3RhbmNlO1xuICByZXR1cm4gKGRlcGVuZGVuY3lDb250YWluZXIpID0+IHtcbiAgICBpZiAoaW5zdGFuY2UgPT0gbnVsbCkge1xuICAgICAgaW5zdGFuY2UgPSBmYWN0b3J5RnVuYyhkZXBlbmRlbmN5Q29udGFpbmVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbnN0YW5jZVBlckNvbnRhaW5lckNhY2hpbmdGYWN0b3J5KGZhY3RvcnlGdW5jKSB7XG4gIGNvbnN0IGNhY2hlID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG4gIHJldHVybiAoZGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xuICAgIGxldCBpbnN0YW5jZSA9IGNhY2hlLmdldChkZXBlbmRlbmN5Q29udGFpbmVyKTtcbiAgICBpZiAoaW5zdGFuY2UgPT0gbnVsbCkge1xuICAgICAgaW5zdGFuY2UgPSBmYWN0b3J5RnVuYyhkZXBlbmRlbmN5Q29udGFpbmVyKTtcbiAgICAgIGNhY2hlLnNldChkZXBlbmRlbmN5Q29udGFpbmVyLCBpbnN0YW5jZSk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHJlZGljYXRlQXdhcmVDbGFzc0ZhY3RvcnkocHJlZGljYXRlLCB0cnVlQ29uc3RydWN0b3IsIGZhbHNlQ29uc3RydWN0b3IsIHVzZUNhY2hpbmcgPSB0cnVlKSB7XG4gIGxldCBpbnN0YW5jZTtcbiAgbGV0IHByZXZpb3VzUHJlZGljYXRlO1xuICByZXR1cm4gKGRlcGVuZGVuY3lDb250YWluZXIpID0+IHtcbiAgICBjb25zdCBjdXJyZW50UHJlZGljYXRlID0gcHJlZGljYXRlKGRlcGVuZGVuY3lDb250YWluZXIpO1xuICAgIGlmICghdXNlQ2FjaGluZyB8fCBwcmV2aW91c1ByZWRpY2F0ZSAhPT0gY3VycmVudFByZWRpY2F0ZSkge1xuICAgICAgaWYgKHByZXZpb3VzUHJlZGljYXRlID0gY3VycmVudFByZWRpY2F0ZSkge1xuICAgICAgICBpbnN0YW5jZSA9IGRlcGVuZGVuY3lDb250YWluZXIucmVzb2x2ZSh0cnVlQ29uc3RydWN0b3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdGFuY2UgPSBkZXBlbmRlbmN5Q29udGFpbmVyLnJlc29sdmUoZmFsc2VDb25zdHJ1Y3Rvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcbn1cblxuaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmdldE1ldGFkYXRhKSB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgdHN5cmluZ2UtbmVvIHJlcXVpcmVzIGEgcmVmbGVjdCBwb2x5ZmlsbC4gUGxlYXNlIGFkZCAnaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiJyB0byB0aGUgdG9wIG9mIHlvdXIgZW50cnkgcG9pbnQuYFxuICApO1xufVxuXG5leHBvcnQgeyBMaWZlY3ljbGUsIGF1dG9JbmplY3RhYmxlLCBpbnN0YW5jZSBhcyBjb250YWluZXIsIGRlbGF5LCBpbmplY3QsIGluamVjdEFsbCwgaW5qZWN0QWxsV2l0aFRyYW5zZm9ybSwgaW5qZWN0V2l0aFRyYW5zZm9ybSwgaW5qZWN0YWJsZSwgaW5zdGFuY2VDYWNoaW5nRmFjdG9yeSwgaW5zdGFuY2VQZXJDb250YWluZXJDYWNoaW5nRmFjdG9yeSwgaXNDbGFzc1Byb3ZpZGVyLCBpc0ZhY3RvcnlQcm92aWRlciwgaXNOb3JtYWxUb2tlbiwgaXNUb2tlblByb3ZpZGVyLCBpc1ZhbHVlUHJvdmlkZXIsIHByZWRpY2F0ZUF3YXJlQ2xhc3NGYWN0b3J5LCByZWdpc3RyeSwgc2NvcGVkLCBzaW5nbGV0b24gfTtcbiIsImltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIlxuaW1wb3J0IHtzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuXG5Ac2luZ2xldG9uKClcbmNsYXNzIFRva2VuIHtcbiAgICBwdWJsaWMgY3VycmVudFRva2VuOlN0cmluZ1xuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4oKVxuICAgICAgICB9LCAyKjYwKjEwMDApXG4gICAgfVxuICAgIHJlZnJlc2hUb2tlbigpOiB2b2lkIHtcbiAgICAgICAgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvY29udGFjdC9yZWZyZXNoJywge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy5jdXJyZW50VG9rZW5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSByZXNwb25zZS5kYXRhLnRva2VuXG4gICAgICAgIH0pXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUb2tlblxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0JztmdW5jdGlvbiBmKGEsYil7dmFyIGM9YS5sZW5ndGg7YS5wdXNoKGIpO2E6Zm9yKDswPGM7KXt2YXIgZD1jLTE+Pj4xLGU9YVtkXTtpZigwPGcoZSxiKSlhW2RdPWIsYVtjXT1lLGM9ZDtlbHNlIGJyZWFrIGF9fWZ1bmN0aW9uIGgoYSl7cmV0dXJuIDA9PT1hLmxlbmd0aD9udWxsOmFbMF19ZnVuY3Rpb24gayhhKXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGI9YVswXSxjPWEucG9wKCk7aWYoYyE9PWIpe2FbMF09YzthOmZvcih2YXIgZD0wLGU9YS5sZW5ndGgsdz1lPj4+MTtkPHc7KXt2YXIgbT0yKihkKzEpLTEsQz1hW21dLG49bSsxLHg9YVtuXTtpZigwPmcoQyxjKSluPGUmJjA+Zyh4LEMpPyhhW2RdPXgsYVtuXT1jLGQ9bik6KGFbZF09QyxhW21dPWMsZD1tKTtlbHNlIGlmKG48ZSYmMD5nKHgsYykpYVtkXT14LGFbbl09YyxkPW47ZWxzZSBicmVhayBhfX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGcoYSxiKXt2YXIgYz1hLnNvcnRJbmRleC1iLnNvcnRJbmRleDtyZXR1cm4gMCE9PWM/YzphLmlkLWIuaWR9aWYoXCJvYmplY3RcIj09PXR5cGVvZiBwZXJmb3JtYW5jZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdyl7dmFyIGw9cGVyZm9ybWFuY2U7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gbC5ub3coKX19ZWxzZXt2YXIgcD1EYXRlLHE9cC5ub3coKTtleHBvcnRzLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBwLm5vdygpLXF9fXZhciByPVtdLHQ9W10sdT0xLHY9bnVsbCx5PTMsej0hMSxBPSExLEI9ITEsRD1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om51bGwsRT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpudWxsLEY9XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBzZXRJbW1lZGlhdGU/c2V0SW1tZWRpYXRlOm51bGw7XG5cInVuZGVmaW5lZFwiIT09dHlwZW9mIG5hdmlnYXRvciYmdm9pZCAwIT09bmF2aWdhdG9yLnNjaGVkdWxpbmcmJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nJiZuYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZy5iaW5kKG5hdmlnYXRvci5zY2hlZHVsaW5nKTtmdW5jdGlvbiBHKGEpe2Zvcih2YXIgYj1oKHQpO251bGwhPT1iOyl7aWYobnVsbD09PWIuY2FsbGJhY2spayh0KTtlbHNlIGlmKGIuc3RhcnRUaW1lPD1hKWsodCksYi5zb3J0SW5kZXg9Yi5leHBpcmF0aW9uVGltZSxmKHIsYik7ZWxzZSBicmVhaztiPWgodCl9fWZ1bmN0aW9uIEgoYSl7Qj0hMTtHKGEpO2lmKCFBKWlmKG51bGwhPT1oKHIpKUE9ITAsSShKKTtlbHNle3ZhciBiPWgodCk7bnVsbCE9PWImJksoSCxiLnN0YXJ0VGltZS1hKX19XG5mdW5jdGlvbiBKKGEsYil7QT0hMTtCJiYoQj0hMSxFKEwpLEw9LTEpO3o9ITA7dmFyIGM9eTt0cnl7RyhiKTtmb3Iodj1oKHIpO251bGwhPT12JiYoISh2LmV4cGlyYXRpb25UaW1lPmIpfHxhJiYhTSgpKTspe3ZhciBkPXYuY2FsbGJhY2s7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3YuY2FsbGJhY2s9bnVsbDt5PXYucHJpb3JpdHlMZXZlbDt2YXIgZT1kKHYuZXhwaXJhdGlvblRpbWU8PWIpO2I9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZT92LmNhbGxiYWNrPWU6dj09PWgocikmJmsocik7RyhiKX1lbHNlIGsocik7dj1oKHIpfWlmKG51bGwhPT12KXZhciB3PSEwO2Vsc2V7dmFyIG09aCh0KTtudWxsIT09bSYmSyhILG0uc3RhcnRUaW1lLWIpO3c9ITF9cmV0dXJuIHd9ZmluYWxseXt2PW51bGwseT1jLHo9ITF9fXZhciBOPSExLE89bnVsbCxMPS0xLFA9NSxRPS0xO1xuZnVuY3Rpb24gTSgpe3JldHVybiBleHBvcnRzLnVuc3RhYmxlX25vdygpLVE8UD8hMTohMH1mdW5jdGlvbiBSKCl7aWYobnVsbCE9PU8pe3ZhciBhPWV4cG9ydHMudW5zdGFibGVfbm93KCk7UT1hO3ZhciBiPSEwO3RyeXtiPU8oITAsYSl9ZmluYWxseXtiP1MoKTooTj0hMSxPPW51bGwpfX1lbHNlIE49ITF9dmFyIFM7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIEYpUz1mdW5jdGlvbigpe0YoUil9O2Vsc2UgaWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCl7dmFyIFQ9bmV3IE1lc3NhZ2VDaGFubmVsLFU9VC5wb3J0MjtULnBvcnQxLm9ubWVzc2FnZT1SO1M9ZnVuY3Rpb24oKXtVLnBvc3RNZXNzYWdlKG51bGwpfX1lbHNlIFM9ZnVuY3Rpb24oKXtEKFIsMCl9O2Z1bmN0aW9uIEkoYSl7Tz1hO058fChOPSEwLFMoKSl9ZnVuY3Rpb24gSyhhLGIpe0w9RChmdW5jdGlvbigpe2EoZXhwb3J0cy51bnN0YWJsZV9ub3coKSl9LGIpfVxuZXhwb3J0cy51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NTtleHBvcnRzLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTE7ZXhwb3J0cy51bnN0YWJsZV9Mb3dQcmlvcml0eT00O2V4cG9ydHMudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MztleHBvcnRzLnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsO2V4cG9ydHMudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9MjtleHBvcnRzLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKGEpe2EuY2FsbGJhY2s9bnVsbH07ZXhwb3J0cy51bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbj1mdW5jdGlvbigpe0F8fHp8fChBPSEwLEkoSikpfTtcbmV4cG9ydHMudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oYSl7MD5hfHwxMjU8YT9jb25zb2xlLmVycm9yKFwiZm9yY2VGcmFtZVJhdGUgdGFrZXMgYSBwb3NpdGl2ZSBpbnQgYmV0d2VlbiAwIGFuZCAxMjUsIGZvcmNpbmcgZnJhbWUgcmF0ZXMgaGlnaGVyIHRoYW4gMTI1IGZwcyBpcyBub3Qgc3VwcG9ydGVkXCIpOlA9MDxhP01hdGguZmxvb3IoMUUzL2EpOjV9O2V4cG9ydHMudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4geX07ZXhwb3J0cy51bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZT1mdW5jdGlvbigpe3JldHVybiBoKHIpfTtleHBvcnRzLnVuc3RhYmxlX25leHQ9ZnVuY3Rpb24oYSl7c3dpdGNoKHkpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBiPTM7YnJlYWs7ZGVmYXVsdDpiPXl9dmFyIGM9eTt5PWI7dHJ5e3JldHVybiBhKCl9ZmluYWxseXt5PWN9fTtleHBvcnRzLnVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7fTtcbmV4cG9ydHMudW5zdGFibGVfcmVxdWVzdFBhaW50PWZ1bmN0aW9uKCl7fTtleHBvcnRzLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eT1mdW5jdGlvbihhLGIpe3N3aXRjaChhKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6YT0zfXZhciBjPXk7eT1hO3RyeXtyZXR1cm4gYigpfWZpbmFsbHl7eT1jfX07XG5leHBvcnRzLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yz8oYz1jLmRlbGF5LGM9XCJudW1iZXJcIj09PXR5cGVvZiBjJiYwPGM/ZCtjOmQpOmM9ZDtzd2l0Y2goYSl7Y2FzZSAxOnZhciBlPS0xO2JyZWFrO2Nhc2UgMjplPTI1MDticmVhaztjYXNlIDU6ZT0xMDczNzQxODIzO2JyZWFrO2Nhc2UgNDplPTFFNDticmVhaztkZWZhdWx0OmU9NUUzfWU9YytlO2E9e2lkOnUrKyxjYWxsYmFjazpiLHByaW9yaXR5TGV2ZWw6YSxzdGFydFRpbWU6YyxleHBpcmF0aW9uVGltZTplLHNvcnRJbmRleDotMX07Yz5kPyhhLnNvcnRJbmRleD1jLGYodCxhKSxudWxsPT09aChyKSYmYT09PWgodCkmJihCPyhFKEwpLEw9LTEpOkI9ITAsSyhILGMtZCkpKTooYS5zb3J0SW5kZXg9ZSxmKHIsYSksQXx8enx8KEE9ITAsSShKKSkpO3JldHVybiBhfTtcbmV4cG9ydHMudW5zdGFibGVfc2hvdWxkWWllbGQ9TTtleHBvcnRzLnVuc3RhYmxlX3dyYXBDYWxsYmFjaz1mdW5jdGlvbihhKXt2YXIgYj15O3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXt5PWN9fX07XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbi8qXG4gTW9kZXJuaXpyIDMuMC4wcHJlIChDdXN0b20gQnVpbGQpIHwgTUlUXG4qL1xuJ3VzZSBzdHJpY3QnO3ZhciBhYT1yZXF1aXJlKFwicmVhY3RcIiksY2E9cmVxdWlyZShcInNjaGVkdWxlclwiKTtmdW5jdGlvbiBwKGEpe2Zvcih2YXIgYj1cImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PVwiK2EsYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYis9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbY10pO3JldHVyblwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2ErXCI7IHZpc2l0IFwiK2IrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwifXZhciBkYT1uZXcgU2V0LGVhPXt9O2Z1bmN0aW9uIGZhKGEsYil7aGEoYSxiKTtoYShhK1wiQ2FwdHVyZVwiLGIpfVxuZnVuY3Rpb24gaGEoYSxiKXtlYVthXT1iO2ZvcihhPTA7YTxiLmxlbmd0aDthKyspZGEuYWRkKGJbYV0pfVxudmFyIGlhPSEoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3d8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50fHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSxqYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGthPS9eWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXVs6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRFxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwXSokLyxsYT1cbnt9LG1hPXt9O2Z1bmN0aW9uIG9hKGEpe2lmKGphLmNhbGwobWEsYSkpcmV0dXJuITA7aWYoamEuY2FsbChsYSxhKSlyZXR1cm4hMTtpZihrYS50ZXN0KGEpKXJldHVybiBtYVthXT0hMDtsYVthXT0hMDtyZXR1cm4hMX1mdW5jdGlvbiBwYShhLGIsYyxkKXtpZihudWxsIT09YyYmMD09PWMudHlwZSlyZXR1cm4hMTtzd2l0Y2godHlwZW9mIGIpe2Nhc2UgXCJmdW5jdGlvblwiOmNhc2UgXCJzeW1ib2xcIjpyZXR1cm4hMDtjYXNlIFwiYm9vbGVhblwiOmlmKGQpcmV0dXJuITE7aWYobnVsbCE9PWMpcmV0dXJuIWMuYWNjZXB0c0Jvb2xlYW5zO2E9YS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSk7cmV0dXJuXCJkYXRhLVwiIT09YSYmXCJhcmlhLVwiIT09YTtkZWZhdWx0OnJldHVybiExfX1cbmZ1bmN0aW9uIHFhKGEsYixjLGQpe2lmKG51bGw9PT1ifHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIGJ8fHBhKGEsYixjLGQpKXJldHVybiEwO2lmKGQpcmV0dXJuITE7aWYobnVsbCE9PWMpc3dpdGNoKGMudHlwZSl7Y2FzZSAzOnJldHVybiFiO2Nhc2UgNDpyZXR1cm4hMT09PWI7Y2FzZSA1OnJldHVybiBpc05hTihiKTtjYXNlIDY6cmV0dXJuIGlzTmFOKGIpfHwxPmJ9cmV0dXJuITF9ZnVuY3Rpb24gdihhLGIsYyxkLGUsZixnKXt0aGlzLmFjY2VwdHNCb29sZWFucz0yPT09Ynx8Mz09PWJ8fDQ9PT1iO3RoaXMuYXR0cmlidXRlTmFtZT1kO3RoaXMuYXR0cmlidXRlTmFtZXNwYWNlPWU7dGhpcy5tdXN0VXNlUHJvcGVydHk9Yzt0aGlzLnByb3BlcnR5TmFtZT1hO3RoaXMudHlwZT1iO3RoaXMuc2FuaXRpemVVUkw9Zjt0aGlzLnJlbW92ZUVtcHR5U3RyaW5nPWd9dmFyIHo9e307XG5cImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwwLCExLGEsbnVsbCwhMSwhMSl9KTtbW1wiYWNjZXB0Q2hhcnNldFwiLFwiYWNjZXB0LWNoYXJzZXRcIl0sW1wiY2xhc3NOYW1lXCIsXCJjbGFzc1wiXSxbXCJodG1sRm9yXCIsXCJmb3JcIl0sW1wiaHR0cEVxdWl2XCIsXCJodHRwLWVxdWl2XCJdXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWFbMF07eltiXT1uZXcgdihiLDEsITEsYVsxXSxudWxsLCExLCExKX0pO1tcImNvbnRlbnRFZGl0YWJsZVwiLFwiZHJhZ2dhYmxlXCIsXCJzcGVsbENoZWNrXCIsXCJ2YWx1ZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwyLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuW1wiYXV0b1JldmVyc2VcIixcImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcIixcImZvY3VzYWJsZVwiLFwicHJlc2VydmVBbHBoYVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwyLCExLGEsbnVsbCwhMSwhMSl9KTtcImFsbG93RnVsbFNjcmVlbiBhc3luYyBhdXRvRm9jdXMgYXV0b1BsYXkgY29udHJvbHMgZGVmYXVsdCBkZWZlciBkaXNhYmxlZCBkaXNhYmxlUGljdHVyZUluUGljdHVyZSBkaXNhYmxlUmVtb3RlUGxheWJhY2sgZm9ybU5vVmFsaWRhdGUgaGlkZGVuIGxvb3Agbm9Nb2R1bGUgbm9WYWxpZGF0ZSBvcGVuIHBsYXlzSW5saW5lIHJlYWRPbmx5IHJlcXVpcmVkIHJldmVyc2VkIHNjb3BlZCBzZWFtbGVzcyBpdGVtU2NvcGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMywhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbltcImNoZWNrZWRcIixcIm11bHRpcGxlXCIsXCJtdXRlZFwiLFwic2VsZWN0ZWRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMywhMCxhLG51bGwsITEsITEpfSk7W1wiY2FwdHVyZVwiLFwiZG93bmxvYWRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNCwhMSxhLG51bGwsITEsITEpfSk7W1wiY29sc1wiLFwicm93c1wiLFwic2l6ZVwiLFwic3BhblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw2LCExLGEsbnVsbCwhMSwhMSl9KTtbXCJyb3dTcGFuXCIsXCJzdGFydFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw1LCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO3ZhciByYT0vW1xcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIHNhKGEpe3JldHVybiBhWzFdLnRvVXBwZXJDYXNlKCl9XG5cImFjY2VudC1oZWlnaHQgYWxpZ25tZW50LWJhc2VsaW5lIGFyYWJpYy1mb3JtIGJhc2VsaW5lLXNoaWZ0IGNhcC1oZWlnaHQgY2xpcC1wYXRoIGNsaXAtcnVsZSBjb2xvci1pbnRlcnBvbGF0aW9uIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyBjb2xvci1wcm9maWxlIGNvbG9yLXJlbmRlcmluZyBkb21pbmFudC1iYXNlbGluZSBlbmFibGUtYmFja2dyb3VuZCBmaWxsLW9wYWNpdHkgZmlsbC1ydWxlIGZsb29kLWNvbG9yIGZsb29kLW9wYWNpdHkgZm9udC1mYW1pbHkgZm9udC1zaXplIGZvbnQtc2l6ZS1hZGp1c3QgZm9udC1zdHJldGNoIGZvbnQtc3R5bGUgZm9udC12YXJpYW50IGZvbnQtd2VpZ2h0IGdseXBoLW5hbWUgZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCBnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCBob3Jpei1hZHYteCBob3Jpei1vcmlnaW4teCBpbWFnZS1yZW5kZXJpbmcgbGV0dGVyLXNwYWNpbmcgbGlnaHRpbmctY29sb3IgbWFya2VyLWVuZCBtYXJrZXItbWlkIG1hcmtlci1zdGFydCBvdmVybGluZS1wb3NpdGlvbiBvdmVybGluZS10aGlja25lc3MgcGFpbnQtb3JkZXIgcGFub3NlLTEgcG9pbnRlci1ldmVudHMgcmVuZGVyaW5nLWludGVudCBzaGFwZS1yZW5kZXJpbmcgc3RvcC1jb2xvciBzdG9wLW9wYWNpdHkgc3RyaWtldGhyb3VnaC1wb3NpdGlvbiBzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyBzdHJva2UtZGFzaGFycmF5IHN0cm9rZS1kYXNob2Zmc2V0IHN0cm9rZS1saW5lY2FwIHN0cm9rZS1saW5lam9pbiBzdHJva2UtbWl0ZXJsaW1pdCBzdHJva2Utb3BhY2l0eSBzdHJva2Utd2lkdGggdGV4dC1hbmNob3IgdGV4dC1kZWNvcmF0aW9uIHRleHQtcmVuZGVyaW5nIHVuZGVybGluZS1wb3NpdGlvbiB1bmRlcmxpbmUtdGhpY2tuZXNzIHVuaWNvZGUtYmlkaSB1bmljb2RlLXJhbmdlIHVuaXRzLXBlci1lbSB2LWFscGhhYmV0aWMgdi1oYW5naW5nIHYtaWRlb2dyYXBoaWMgdi1tYXRoZW1hdGljYWwgdmVjdG9yLWVmZmVjdCB2ZXJ0LWFkdi15IHZlcnQtb3JpZ2luLXggdmVydC1vcmlnaW4teSB3b3JkLXNwYWNpbmcgd3JpdGluZy1tb2RlIHhtbG5zOnhsaW5rIHgtaGVpZ2h0XCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLFxuc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsbnVsbCwhMSwhMSl9KTtcInhsaW5rOmFjdHVhdGUgeGxpbms6YXJjcm9sZSB4bGluazpyb2xlIHhsaW5rOnNob3cgeGxpbms6dGl0bGUgeGxpbms6dHlwZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxzYSk7eltiXT1uZXcgdihiLDEsITEsYSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMSwhMSl9KTtbXCJ4bWw6YmFzZVwiLFwieG1sOmxhbmdcIixcInhtbDpzcGFjZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxzYSk7eltiXT1uZXcgdihiLDEsITEsYSxcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLCExLCExKX0pO1tcInRhYkluZGV4XCIsXCJjcm9zc09yaWdpblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuei54bGlua0hyZWY9bmV3IHYoXCJ4bGlua0hyZWZcIiwxLCExLFwieGxpbms6aHJlZlwiLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCEwLCExKTtbXCJzcmNcIixcImhyZWZcIixcImFjdGlvblwiLFwiZm9ybUFjdGlvblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCEwLCEwKX0pO1xuZnVuY3Rpb24gdGEoYSxiLGMsZCl7dmFyIGU9ei5oYXNPd25Qcm9wZXJ0eShiKT96W2JdOm51bGw7aWYobnVsbCE9PWU/MCE9PWUudHlwZTpkfHwhKDI8Yi5sZW5ndGgpfHxcIm9cIiE9PWJbMF0mJlwiT1wiIT09YlswXXx8XCJuXCIhPT1iWzFdJiZcIk5cIiE9PWJbMV0pcWEoYixjLGUsZCkmJihjPW51bGwpLGR8fG51bGw9PT1lP29hKGIpJiYobnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6YS5zZXRBdHRyaWJ1dGUoYixcIlwiK2MpKTplLm11c3RVc2VQcm9wZXJ0eT9hW2UucHJvcGVydHlOYW1lXT1udWxsPT09Yz8zPT09ZS50eXBlPyExOlwiXCI6YzooYj1lLmF0dHJpYnV0ZU5hbWUsZD1lLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09Yz9hLnJlbW92ZUF0dHJpYnV0ZShiKTooZT1lLnR5cGUsYz0zPT09ZXx8ND09PWUmJiEwPT09Yz9cIlwiOlwiXCIrYyxkP2Euc2V0QXR0cmlidXRlTlMoZCxiLGMpOmEuc2V0QXR0cmlidXRlKGIsYykpKX1cbnZhciB1YT1hYS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCx2YT1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSx3YT1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLHlhPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSx6YT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksQWE9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLEJhPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSxDYT1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxEYT1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksRWE9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLEZhPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLEdhPVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLEhhPVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTtTeW1ib2wuZm9yKFwicmVhY3QuZGVidWdfdHJhY2VfbW9kZVwiKTtcbnZhciBJYT1TeW1ib2wuZm9yKFwicmVhY3Qub2Zmc2NyZWVuXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5sZWdhY3lfaGlkZGVuXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5jYWNoZVwiKTtTeW1ib2wuZm9yKFwicmVhY3QudHJhY2luZ19tYXJrZXJcIik7dmFyIEphPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBLYShhKXtpZihudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBhKXJldHVybiBudWxsO2E9SmEmJmFbSmFdfHxhW1wiQEBpdGVyYXRvclwiXTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYT9hOm51bGx9dmFyIEE9T2JqZWN0LmFzc2lnbixMYTtmdW5jdGlvbiBNYShhKXtpZih2b2lkIDA9PT1MYSl0cnl7dGhyb3cgRXJyb3IoKTt9Y2F0Y2goYyl7dmFyIGI9Yy5zdGFjay50cmltKCkubWF0Y2goL1xcbiggKihhdCApPykvKTtMYT1iJiZiWzFdfHxcIlwifXJldHVyblwiXFxuXCIrTGErYX12YXIgTmE9ITE7XG5mdW5jdGlvbiBPYShhLGIpe2lmKCFhfHxOYSlyZXR1cm5cIlwiO05hPSEwO3ZhciBjPUVycm9yLnByZXBhcmVTdGFja1RyYWNlO0Vycm9yLnByZXBhcmVTdGFja1RyYWNlPXZvaWQgMDt0cnl7aWYoYilpZihiPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKTt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLnByb3RvdHlwZSxcInByb3BzXCIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCk7fX0pLFwib2JqZWN0XCI9PT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5jb25zdHJ1Y3Qpe3RyeXtSZWZsZWN0LmNvbnN0cnVjdChiLFtdKX1jYXRjaChsKXt2YXIgZD1sfVJlZmxlY3QuY29uc3RydWN0KGEsW10sYil9ZWxzZXt0cnl7Yi5jYWxsKCl9Y2F0Y2gobCl7ZD1sfWEuY2FsbChiLnByb3RvdHlwZSl9ZWxzZXt0cnl7dGhyb3cgRXJyb3IoKTt9Y2F0Y2gobCl7ZD1sfWEoKX19Y2F0Y2gobCl7aWYobCYmZCYmXCJzdHJpbmdcIj09PXR5cGVvZiBsLnN0YWNrKXtmb3IodmFyIGU9bC5zdGFjay5zcGxpdChcIlxcblwiKSxcbmY9ZC5zdGFjay5zcGxpdChcIlxcblwiKSxnPWUubGVuZ3RoLTEsaD1mLmxlbmd0aC0xOzE8PWcmJjA8PWgmJmVbZ10hPT1mW2hdOyloLS07Zm9yKDsxPD1nJiYwPD1oO2ctLSxoLS0paWYoZVtnXSE9PWZbaF0pe2lmKDEhPT1nfHwxIT09aCl7ZG8gaWYoZy0tLGgtLSwwPmh8fGVbZ10hPT1mW2hdKXt2YXIgaz1cIlxcblwiK2VbZ10ucmVwbGFjZShcIiBhdCBuZXcgXCIsXCIgYXQgXCIpO2EuZGlzcGxheU5hbWUmJmsuaW5jbHVkZXMoXCI8YW5vbnltb3VzPlwiKSYmKGs9ay5yZXBsYWNlKFwiPGFub255bW91cz5cIixhLmRpc3BsYXlOYW1lKSk7cmV0dXJuIGt9d2hpbGUoMTw9ZyYmMDw9aCl9YnJlYWt9fX1maW5hbGx5e05hPSExLEVycm9yLnByZXBhcmVTdGFja1RyYWNlPWN9cmV0dXJuKGE9YT9hLmRpc3BsYXlOYW1lfHxhLm5hbWU6XCJcIik/TWEoYSk6XCJcIn1cbmZ1bmN0aW9uIFBhKGEpe3N3aXRjaChhLnRhZyl7Y2FzZSA1OnJldHVybiBNYShhLnR5cGUpO2Nhc2UgMTY6cmV0dXJuIE1hKFwiTGF6eVwiKTtjYXNlIDEzOnJldHVybiBNYShcIlN1c3BlbnNlXCIpO2Nhc2UgMTk6cmV0dXJuIE1hKFwiU3VzcGVuc2VMaXN0XCIpO2Nhc2UgMDpjYXNlIDI6Y2FzZSAxNTpyZXR1cm4gYT1PYShhLnR5cGUsITEpLGE7Y2FzZSAxMTpyZXR1cm4gYT1PYShhLnR5cGUucmVuZGVyLCExKSxhO2Nhc2UgMTpyZXR1cm4gYT1PYShhLnR5cGUsITApLGE7ZGVmYXVsdDpyZXR1cm5cIlwifX1cbmZ1bmN0aW9uIFFhKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGEuZGlzcGxheU5hbWV8fGEubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuIGE7c3dpdGNoKGEpe2Nhc2UgeWE6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2Ugd2E6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIEFhOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIHphOnJldHVyblwiU3RyaWN0TW9kZVwiO2Nhc2UgRWE6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgRmE6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIn1pZihcIm9iamVjdFwiPT09dHlwZW9mIGEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgQ2E6cmV0dXJuKGEuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Db25zdW1lclwiO2Nhc2UgQmE6cmV0dXJuKGEuX2NvbnRleHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Qcm92aWRlclwiO2Nhc2UgRGE6dmFyIGI9YS5yZW5kZXI7YT1hLmRpc3BsYXlOYW1lO2F8fChhPWIuZGlzcGxheU5hbWV8fFxuYi5uYW1lfHxcIlwiLGE9XCJcIiE9PWE/XCJGb3J3YXJkUmVmKFwiK2ErXCIpXCI6XCJGb3J3YXJkUmVmXCIpO3JldHVybiBhO2Nhc2UgR2E6cmV0dXJuIGI9YS5kaXNwbGF5TmFtZXx8bnVsbCxudWxsIT09Yj9iOlFhKGEudHlwZSl8fFwiTWVtb1wiO2Nhc2UgSGE6Yj1hLl9wYXlsb2FkO2E9YS5faW5pdDt0cnl7cmV0dXJuIFFhKGEoYikpfWNhdGNoKGMpe319cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBSYShhKXt2YXIgYj1hLnR5cGU7c3dpdGNoKGEudGFnKXtjYXNlIDI0OnJldHVyblwiQ2FjaGVcIjtjYXNlIDk6cmV0dXJuKGIuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Db25zdW1lclwiO2Nhc2UgMTA6cmV0dXJuKGIuX2NvbnRleHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Qcm92aWRlclwiO2Nhc2UgMTg6cmV0dXJuXCJEZWh5ZHJhdGVkRnJhZ21lbnRcIjtjYXNlIDExOnJldHVybiBhPWIucmVuZGVyLGE9YS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxcIlwiLGIuZGlzcGxheU5hbWV8fChcIlwiIT09YT9cIkZvcndhcmRSZWYoXCIrYStcIilcIjpcIkZvcndhcmRSZWZcIik7Y2FzZSA3OnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIDU6cmV0dXJuIGI7Y2FzZSA0OnJldHVyblwiUG9ydGFsXCI7Y2FzZSAzOnJldHVyblwiUm9vdFwiO2Nhc2UgNjpyZXR1cm5cIlRleHRcIjtjYXNlIDE2OnJldHVybiBRYShiKTtjYXNlIDg6cmV0dXJuIGI9PT16YT9cIlN0cmljdE1vZGVcIjpcIk1vZGVcIjtjYXNlIDIyOnJldHVyblwiT2Zmc2NyZWVuXCI7XG5jYXNlIDEyOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIDIxOnJldHVyblwiU2NvcGVcIjtjYXNlIDEzOnJldHVyblwiU3VzcGVuc2VcIjtjYXNlIDE5OnJldHVyblwiU3VzcGVuc2VMaXN0XCI7Y2FzZSAyNTpyZXR1cm5cIlRyYWNpbmdNYXJrZXJcIjtjYXNlIDE6Y2FzZSAwOmNhc2UgMTc6Y2FzZSAyOmNhc2UgMTQ6Y2FzZSAxNTppZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYilyZXR1cm4gYi5kaXNwbGF5TmFtZXx8Yi5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYilyZXR1cm4gYn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBTYShhKXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgXCJib29sZWFuXCI6Y2FzZSBcIm51bWJlclwiOmNhc2UgXCJzdHJpbmdcIjpjYXNlIFwidW5kZWZpbmVkXCI6cmV0dXJuIGE7Y2FzZSBcIm9iamVjdFwiOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuXCJcIn19XG5mdW5jdGlvbiBUYShhKXt2YXIgYj1hLnR5cGU7cmV0dXJuKGE9YS5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWEudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWJ8fFwicmFkaW9cIj09PWIpfVxuZnVuY3Rpb24gVWEoYSl7dmFyIGI9VGEoYSk/XCJjaGVja2VkXCI6XCJ2YWx1ZVwiLGM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxiKSxkPVwiXCIrYVtiXTtpZighYS5oYXNPd25Qcm9wZXJ0eShiKSYmXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5nZXQmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBjLnNldCl7dmFyIGU9Yy5nZXQsZj1jLnNldDtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGEpe2Q9XCJcIithO2YuY2FsbCh0aGlzLGEpfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2VudW1lcmFibGU6Yy5lbnVtZXJhYmxlfSk7cmV0dXJue2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LHNldFZhbHVlOmZ1bmN0aW9uKGEpe2Q9XCJcIithfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXthLl92YWx1ZVRyYWNrZXI9XG5udWxsO2RlbGV0ZSBhW2JdfX19fWZ1bmN0aW9uIFZhKGEpe2EuX3ZhbHVlVHJhY2tlcnx8KGEuX3ZhbHVlVHJhY2tlcj1VYShhKSl9ZnVuY3Rpb24gV2EoYSl7aWYoIWEpcmV0dXJuITE7dmFyIGI9YS5fdmFsdWVUcmFja2VyO2lmKCFiKXJldHVybiEwO3ZhciBjPWIuZ2V0VmFsdWUoKTt2YXIgZD1cIlwiO2EmJihkPVRhKGEpP2EuY2hlY2tlZD9cInRydWVcIjpcImZhbHNlXCI6YS52YWx1ZSk7YT1kO3JldHVybiBhIT09Yz8oYi5zZXRWYWx1ZShhKSwhMCk6ITF9ZnVuY3Rpb24gWGEoYSl7YT1hfHwoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDApO2lmKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGEuYWN0aXZlRWxlbWVudHx8YS5ib2R5fWNhdGNoKGIpe3JldHVybiBhLmJvZHl9fVxuZnVuY3Rpb24gWWEoYSxiKXt2YXIgYz1iLmNoZWNrZWQ7cmV0dXJuIEEoe30sYix7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6dm9pZCAwLGNoZWNrZWQ6bnVsbCE9Yz9jOmEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZH0pfWZ1bmN0aW9uIFphKGEsYil7dmFyIGM9bnVsbD09Yi5kZWZhdWx0VmFsdWU/XCJcIjpiLmRlZmF1bHRWYWx1ZSxkPW51bGwhPWIuY2hlY2tlZD9iLmNoZWNrZWQ6Yi5kZWZhdWx0Q2hlY2tlZDtjPVNhKG51bGwhPWIudmFsdWU/Yi52YWx1ZTpjKTthLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOmQsaW5pdGlhbFZhbHVlOmMsY29udHJvbGxlZDpcImNoZWNrYm94XCI9PT1iLnR5cGV8fFwicmFkaW9cIj09PWIudHlwZT9udWxsIT1iLmNoZWNrZWQ6bnVsbCE9Yi52YWx1ZX19ZnVuY3Rpb24gYWIoYSxiKXtiPWIuY2hlY2tlZDtudWxsIT1iJiZ0YShhLFwiY2hlY2tlZFwiLGIsITEpfVxuZnVuY3Rpb24gYmIoYSxiKXthYihhLGIpO3ZhciBjPVNhKGIudmFsdWUpLGQ9Yi50eXBlO2lmKG51bGwhPWMpaWYoXCJudW1iZXJcIj09PWQpe2lmKDA9PT1jJiZcIlwiPT09YS52YWx1ZXx8YS52YWx1ZSE9YylhLnZhbHVlPVwiXCIrY31lbHNlIGEudmFsdWUhPT1cIlwiK2MmJihhLnZhbHVlPVwiXCIrYyk7ZWxzZSBpZihcInN1Ym1pdFwiPT09ZHx8XCJyZXNldFwiPT09ZCl7YS5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTtyZXR1cm59Yi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpP2NiKGEsYi50eXBlLGMpOmIuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikmJmNiKGEsYi50eXBlLFNhKGIuZGVmYXVsdFZhbHVlKSk7bnVsbD09Yi5jaGVja2VkJiZudWxsIT1iLmRlZmF1bHRDaGVja2VkJiYoYS5kZWZhdWx0Q2hlY2tlZD0hIWIuZGVmYXVsdENoZWNrZWQpfVxuZnVuY3Rpb24gZGIoYSxiLGMpe2lmKGIuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKXx8Yi5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSl7dmFyIGQ9Yi50eXBlO2lmKCEoXCJzdWJtaXRcIiE9PWQmJlwicmVzZXRcIiE9PWR8fHZvaWQgMCE9PWIudmFsdWUmJm51bGwhPT1iLnZhbHVlKSlyZXR1cm47Yj1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7Y3x8Yj09PWEudmFsdWV8fChhLnZhbHVlPWIpO2EuZGVmYXVsdFZhbHVlPWJ9Yz1hLm5hbWU7XCJcIiE9PWMmJihhLm5hbWU9XCJcIik7YS5kZWZhdWx0Q2hlY2tlZD0hIWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZDtcIlwiIT09YyYmKGEubmFtZT1jKX1cbmZ1bmN0aW9uIGNiKGEsYixjKXtpZihcIm51bWJlclwiIT09Ynx8WGEoYS5vd25lckRvY3VtZW50KSE9PWEpbnVsbD09Yz9hLmRlZmF1bHRWYWx1ZT1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU6YS5kZWZhdWx0VmFsdWUhPT1cIlwiK2MmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2MpfXZhciBlYj1BcnJheS5pc0FycmF5O1xuZnVuY3Rpb24gZmIoYSxiLGMsZCl7YT1hLm9wdGlvbnM7aWYoYil7Yj17fTtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyliW1wiJFwiK2NbZV1dPSEwO2ZvcihjPTA7YzxhLmxlbmd0aDtjKyspZT1iLmhhc093blByb3BlcnR5KFwiJFwiK2FbY10udmFsdWUpLGFbY10uc2VsZWN0ZWQhPT1lJiYoYVtjXS5zZWxlY3RlZD1lKSxlJiZkJiYoYVtjXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Yz1cIlwiK1NhKGMpO2I9bnVsbDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXtpZihhW2VdLnZhbHVlPT09Yyl7YVtlXS5zZWxlY3RlZD0hMDtkJiYoYVtlXS5kZWZhdWx0U2VsZWN0ZWQ9ITApO3JldHVybn1udWxsIT09Ynx8YVtlXS5kaXNhYmxlZHx8KGI9YVtlXSl9bnVsbCE9PWImJihiLnNlbGVjdGVkPSEwKX19XG5mdW5jdGlvbiBnYihhLGIpe2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpdGhyb3cgRXJyb3IocCg5MSkpO3JldHVybiBBKHt9LGIse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOlwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0pfWZ1bmN0aW9uIGhiKGEsYil7dmFyIGM9Yi52YWx1ZTtpZihudWxsPT1jKXtjPWIuY2hpbGRyZW47Yj1iLmRlZmF1bHRWYWx1ZTtpZihudWxsIT1jKXtpZihudWxsIT1iKXRocm93IEVycm9yKHAoOTIpKTtpZihlYihjKSl7aWYoMTxjLmxlbmd0aCl0aHJvdyBFcnJvcihwKDkzKSk7Yz1jWzBdfWI9Y31udWxsPT1iJiYoYj1cIlwiKTtjPWJ9YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6U2EoYyl9fVxuZnVuY3Rpb24gaWIoYSxiKXt2YXIgYz1TYShiLnZhbHVlKSxkPVNhKGIuZGVmYXVsdFZhbHVlKTtudWxsIT1jJiYoYz1cIlwiK2MsYyE9PWEudmFsdWUmJihhLnZhbHVlPWMpLG51bGw9PWIuZGVmYXVsdFZhbHVlJiZhLmRlZmF1bHRWYWx1ZSE9PWMmJihhLmRlZmF1bHRWYWx1ZT1jKSk7bnVsbCE9ZCYmKGEuZGVmYXVsdFZhbHVlPVwiXCIrZCl9ZnVuY3Rpb24gamIoYSl7dmFyIGI9YS50ZXh0Q29udGVudDtiPT09YS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSYmXCJcIiE9PWImJm51bGwhPT1iJiYoYS52YWx1ZT1iKX1mdW5jdGlvbiBrYihhKXtzd2l0Y2goYSl7Y2FzZSBcInN2Z1wiOnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtjYXNlIFwibWF0aFwiOnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiO2RlZmF1bHQ6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJ9fVxuZnVuY3Rpb24gbGIoYSxiKXtyZXR1cm4gbnVsbD09YXx8XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hP2tiKGIpOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj09PWEmJlwiZm9yZWlnbk9iamVjdFwiPT09Yj9cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIjphfVxudmFyIG1iLG5iPWZ1bmN0aW9uKGEpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKGIsYyxkLGUpe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGEoYixjLGQsZSl9KX06YX0oZnVuY3Rpb24oYSxiKXtpZihcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIhPT1hLm5hbWVzcGFjZVVSSXx8XCJpbm5lckhUTUxcImluIGEpYS5pbm5lckhUTUw9YjtlbHNle21iPW1ifHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO21iLmlubmVySFRNTD1cIjxzdmc+XCIrYi52YWx1ZU9mKCkudG9TdHJpbmcoKStcIjwvc3ZnPlwiO2ZvcihiPW1iLmZpcnN0Q2hpbGQ7YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7Zm9yKDtiLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQoYi5maXJzdENoaWxkKX19KTtcbmZ1bmN0aW9uIG9iKGEsYil7aWYoYil7dmFyIGM9YS5maXJzdENoaWxkO2lmKGMmJmM9PT1hLmxhc3RDaGlsZCYmMz09PWMubm9kZVR5cGUpe2Mubm9kZVZhbHVlPWI7cmV0dXJufX1hLnRleHRDb250ZW50PWJ9XG52YXIgcGI9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGFzcGVjdFJhdGlvOiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsY29sdW1uczohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZEFyZWE6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCxcbnpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0scWI9W1wiV2Via2l0XCIsXCJtc1wiLFwiTW96XCIsXCJPXCJdO09iamVjdC5rZXlzKHBiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3FiLmZvckVhY2goZnVuY3Rpb24oYil7Yj1iK2EuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHJpbmcoMSk7cGJbYl09cGJbYV19KX0pO2Z1bmN0aW9uIHJiKGEsYixjKXtyZXR1cm4gbnVsbD09Ynx8XCJib29sZWFuXCI9PT10eXBlb2YgYnx8XCJcIj09PWI/XCJcIjpjfHxcIm51bWJlclwiIT09dHlwZW9mIGJ8fDA9PT1ifHxwYi5oYXNPd25Qcm9wZXJ0eShhKSYmcGJbYV0/KFwiXCIrYikudHJpbSgpOmIrXCJweFwifVxuZnVuY3Rpb24gc2IoYSxiKXthPWEuc3R5bGU7Zm9yKHZhciBjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIGQ9MD09PWMuaW5kZXhPZihcIi0tXCIpLGU9cmIoYyxiW2NdLGQpO1wiZmxvYXRcIj09PWMmJihjPVwiY3NzRmxvYXRcIik7ZD9hLnNldFByb3BlcnR5KGMsZSk6YVtjXT1lfX12YXIgdGI9QSh7bWVudWl0ZW06ITB9LHthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9KTtcbmZ1bmN0aW9uIHViKGEsYil7aWYoYil7aWYodGJbYV0mJihudWxsIT1iLmNoaWxkcmVufHxudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihwKDEzNyxhKSk7aWYobnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCl7aWYobnVsbCE9Yi5jaGlsZHJlbil0aHJvdyBFcnJvcihwKDYwKSk7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MfHwhKFwiX19odG1sXCJpbiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihwKDYxKSk7fWlmKG51bGwhPWIuc3R5bGUmJlwib2JqZWN0XCIhPT10eXBlb2YgYi5zdHlsZSl0aHJvdyBFcnJvcihwKDYyKSk7fX1cbmZ1bmN0aW9uIHZiKGEsYil7aWYoLTE9PT1hLmluZGV4T2YoXCItXCIpKXJldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYi5pcztzd2l0Y2goYSl7Y2FzZSBcImFubm90YXRpb24teG1sXCI6Y2FzZSBcImNvbG9yLXByb2ZpbGVcIjpjYXNlIFwiZm9udC1mYWNlXCI6Y2FzZSBcImZvbnQtZmFjZS1zcmNcIjpjYXNlIFwiZm9udC1mYWNlLXVyaVwiOmNhc2UgXCJmb250LWZhY2UtZm9ybWF0XCI6Y2FzZSBcImZvbnQtZmFjZS1uYW1lXCI6Y2FzZSBcIm1pc3NpbmctZ2x5cGhcIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX12YXIgd2I9bnVsbDtmdW5jdGlvbiB4YihhKXthPWEudGFyZ2V0fHxhLnNyY0VsZW1lbnR8fHdpbmRvdzthLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYoYT1hLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KTtyZXR1cm4gMz09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmF9dmFyIHliPW51bGwsemI9bnVsbCxBYj1udWxsO1xuZnVuY3Rpb24gQmIoYSl7aWYoYT1DYihhKSl7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIHliKXRocm93IEVycm9yKHAoMjgwKSk7dmFyIGI9YS5zdGF0ZU5vZGU7YiYmKGI9RGIoYikseWIoYS5zdGF0ZU5vZGUsYS50eXBlLGIpKX19ZnVuY3Rpb24gRWIoYSl7emI/QWI/QWIucHVzaChhKTpBYj1bYV06emI9YX1mdW5jdGlvbiBGYigpe2lmKHpiKXt2YXIgYT16YixiPUFiO0FiPXpiPW51bGw7QmIoYSk7aWYoYilmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKUJiKGJbYV0pfX1mdW5jdGlvbiBHYihhLGIpe3JldHVybiBhKGIpfWZ1bmN0aW9uIEhiKCl7fXZhciBJYj0hMTtmdW5jdGlvbiBKYihhLGIsYyl7aWYoSWIpcmV0dXJuIGEoYixjKTtJYj0hMDt0cnl7cmV0dXJuIEdiKGEsYixjKX1maW5hbGx5e2lmKEliPSExLG51bGwhPT16Ynx8bnVsbCE9PUFiKUhiKCksRmIoKX19XG5mdW5jdGlvbiBLYihhLGIpe3ZhciBjPWEuc3RhdGVOb2RlO2lmKG51bGw9PT1jKXJldHVybiBudWxsO3ZhciBkPURiKGMpO2lmKG51bGw9PT1kKXJldHVybiBudWxsO2M9ZFtiXTthOnN3aXRjaChiKXtjYXNlIFwib25DbGlja1wiOmNhc2UgXCJvbkNsaWNrQ2FwdHVyZVwiOmNhc2UgXCJvbkRvdWJsZUNsaWNrXCI6Y2FzZSBcIm9uRG91YmxlQ2xpY2tDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VEb3duXCI6Y2FzZSBcIm9uTW91c2VEb3duQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlTW92ZVwiOmNhc2UgXCJvbk1vdXNlTW92ZUNhcHR1cmVcIjpjYXNlIFwib25Nb3VzZVVwXCI6Y2FzZSBcIm9uTW91c2VVcENhcHR1cmVcIjpjYXNlIFwib25Nb3VzZUVudGVyXCI6KGQ9IWQuZGlzYWJsZWQpfHwoYT1hLnR5cGUsZD0hKFwiYnV0dG9uXCI9PT1hfHxcImlucHV0XCI9PT1hfHxcInNlbGVjdFwiPT09YXx8XCJ0ZXh0YXJlYVwiPT09YSkpO2E9IWQ7YnJlYWsgYTtkZWZhdWx0OmE9ITF9aWYoYSlyZXR1cm4gbnVsbDtpZihjJiZcImZ1bmN0aW9uXCIhPT1cbnR5cGVvZiBjKXRocm93IEVycm9yKHAoMjMxLGIsdHlwZW9mIGMpKTtyZXR1cm4gY312YXIgTGI9ITE7aWYoaWEpdHJ5e3ZhciBNYj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTWIsXCJwYXNzaXZlXCIse2dldDpmdW5jdGlvbigpe0xiPSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidGVzdFwiLE1iLE1iKTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIixNYixNYil9Y2F0Y2goYSl7TGI9ITF9ZnVuY3Rpb24gTmIoYSxiLGMsZCxlLGYsZyxoLGspe3ZhciBsPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKTt0cnl7Yi5hcHBseShjLGwpfWNhdGNoKG0pe3RoaXMub25FcnJvcihtKX19dmFyIE9iPSExLFBiPW51bGwsUWI9ITEsUmI9bnVsbCxTYj17b25FcnJvcjpmdW5jdGlvbihhKXtPYj0hMDtQYj1hfX07ZnVuY3Rpb24gVGIoYSxiLGMsZCxlLGYsZyxoLGspe09iPSExO1BiPW51bGw7TmIuYXBwbHkoU2IsYXJndW1lbnRzKX1cbmZ1bmN0aW9uIFViKGEsYixjLGQsZSxmLGcsaCxrKXtUYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoT2Ipe2lmKE9iKXt2YXIgbD1QYjtPYj0hMTtQYj1udWxsfWVsc2UgdGhyb3cgRXJyb3IocCgxOTgpKTtRYnx8KFFiPSEwLFJiPWwpfX1mdW5jdGlvbiBWYihhKXt2YXIgYj1hLGM9YTtpZihhLmFsdGVybmF0ZSlmb3IoO2IucmV0dXJuOyliPWIucmV0dXJuO2Vsc2V7YT1iO2RvIGI9YSwwIT09KGIuZmxhZ3MmNDA5OCkmJihjPWIucmV0dXJuKSxhPWIucmV0dXJuO3doaWxlKGEpfXJldHVybiAzPT09Yi50YWc/YzpudWxsfWZ1bmN0aW9uIFdiKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09YiYmKGE9YS5hbHRlcm5hdGUsbnVsbCE9PWEmJihiPWEubWVtb2l6ZWRTdGF0ZSkpO2lmKG51bGwhPT1iKXJldHVybiBiLmRlaHlkcmF0ZWR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gWGIoYSl7aWYoVmIoYSkhPT1hKXRocm93IEVycm9yKHAoMTg4KSk7fVxuZnVuY3Rpb24gWWIoYSl7dmFyIGI9YS5hbHRlcm5hdGU7aWYoIWIpe2I9VmIoYSk7aWYobnVsbD09PWIpdGhyb3cgRXJyb3IocCgxODgpKTtyZXR1cm4gYiE9PWE/bnVsbDphfWZvcih2YXIgYz1hLGQ9Yjs7KXt2YXIgZT1jLnJldHVybjtpZihudWxsPT09ZSlicmVhazt2YXIgZj1lLmFsdGVybmF0ZTtpZihudWxsPT09Zil7ZD1lLnJldHVybjtpZihudWxsIT09ZCl7Yz1kO2NvbnRpbnVlfWJyZWFrfWlmKGUuY2hpbGQ9PT1mLmNoaWxkKXtmb3IoZj1lLmNoaWxkO2Y7KXtpZihmPT09YylyZXR1cm4gWGIoZSksYTtpZihmPT09ZClyZXR1cm4gWGIoZSksYjtmPWYuc2libGluZ310aHJvdyBFcnJvcihwKDE4OCkpO31pZihjLnJldHVybiE9PWQucmV0dXJuKWM9ZSxkPWY7ZWxzZXtmb3IodmFyIGc9ITEsaD1lLmNoaWxkO2g7KXtpZihoPT09Yyl7Zz0hMDtjPWU7ZD1mO2JyZWFrfWlmKGg9PT1kKXtnPSEwO2Q9ZTtjPWY7YnJlYWt9aD1oLnNpYmxpbmd9aWYoIWcpe2ZvcihoPWYuY2hpbGQ7aDspe2lmKGg9PT1cbmMpe2c9ITA7Yz1mO2Q9ZTticmVha31pZihoPT09ZCl7Zz0hMDtkPWY7Yz1lO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXRocm93IEVycm9yKHAoMTg5KSk7fX1pZihjLmFsdGVybmF0ZSE9PWQpdGhyb3cgRXJyb3IocCgxOTApKTt9aWYoMyE9PWMudGFnKXRocm93IEVycm9yKHAoMTg4KSk7cmV0dXJuIGMuc3RhdGVOb2RlLmN1cnJlbnQ9PT1jP2E6Yn1mdW5jdGlvbiBaYihhKXthPVliKGEpO3JldHVybiBudWxsIT09YT8kYihhKTpudWxsfWZ1bmN0aW9uICRiKGEpe2lmKDU9PT1hLnRhZ3x8Nj09PWEudGFnKXJldHVybiBhO2ZvcihhPWEuY2hpbGQ7bnVsbCE9PWE7KXt2YXIgYj0kYihhKTtpZihudWxsIT09YilyZXR1cm4gYjthPWEuc2libGluZ31yZXR1cm4gbnVsbH1cbnZhciBhYz1jYS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLGJjPWNhLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLGNjPWNhLnVuc3RhYmxlX3Nob3VsZFlpZWxkLGRjPWNhLnVuc3RhYmxlX3JlcXVlc3RQYWludCxCPWNhLnVuc3RhYmxlX25vdyxlYz1jYS51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCxmYz1jYS51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxnYz1jYS51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxoYz1jYS51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxpYz1jYS51bnN0YWJsZV9Mb3dQcmlvcml0eSxqYz1jYS51bnN0YWJsZV9JZGxlUHJpb3JpdHksa2M9bnVsbCxsYz1udWxsO2Z1bmN0aW9uIG1jKGEpe2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Db21taXRGaWJlclJvb3QpdHJ5e2xjLm9uQ29tbWl0RmliZXJSb290KGtjLGEsdm9pZCAwLDEyOD09PShhLmN1cnJlbnQuZmxhZ3MmMTI4KSl9Y2F0Y2goYil7fX1cbnZhciBvYz1NYXRoLmNsejMyP01hdGguY2x6MzI6bmMscGM9TWF0aC5sb2cscWM9TWF0aC5MTjI7ZnVuY3Rpb24gbmMoYSl7YT4+Pj0wO3JldHVybiAwPT09YT8zMjozMS0ocGMoYSkvcWN8MCl8MH12YXIgcmM9NjQsc2M9NDE5NDMwNDtcbmZ1bmN0aW9uIHRjKGEpe3N3aXRjaChhJi1hKXtjYXNlIDE6cmV0dXJuIDE7Y2FzZSAyOnJldHVybiAyO2Nhc2UgNDpyZXR1cm4gNDtjYXNlIDg6cmV0dXJuIDg7Y2FzZSAxNjpyZXR1cm4gMTY7Y2FzZSAzMjpyZXR1cm4gMzI7Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gYSY0MTk0MjQwO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuIGEmMTMwMDIzNDI0O2Nhc2UgMTM0MjE3NzI4OnJldHVybiAxMzQyMTc3Mjg7Y2FzZSAyNjg0MzU0NTY6cmV0dXJuIDI2ODQzNTQ1NjtjYXNlIDUzNjg3MDkxMjpyZXR1cm4gNTM2ODcwOTEyO2Nhc2UgMTA3Mzc0MTgyNDpyZXR1cm4gMTA3Mzc0MTgyNDtcbmRlZmF1bHQ6cmV0dXJuIGF9fWZ1bmN0aW9uIHVjKGEsYil7dmFyIGM9YS5wZW5kaW5nTGFuZXM7aWYoMD09PWMpcmV0dXJuIDA7dmFyIGQ9MCxlPWEuc3VzcGVuZGVkTGFuZXMsZj1hLnBpbmdlZExhbmVzLGc9YyYyNjg0MzU0NTU7aWYoMCE9PWcpe3ZhciBoPWcmfmU7MCE9PWg/ZD10YyhoKTooZiY9ZywwIT09ZiYmKGQ9dGMoZikpKX1lbHNlIGc9YyZ+ZSwwIT09Zz9kPXRjKGcpOjAhPT1mJiYoZD10YyhmKSk7aWYoMD09PWQpcmV0dXJuIDA7aWYoMCE9PWImJmIhPT1kJiYwPT09KGImZSkmJihlPWQmLWQsZj1iJi1iLGU+PWZ8fDE2PT09ZSYmMCE9PShmJjQxOTQyNDApKSlyZXR1cm4gYjswIT09KGQmNCkmJihkfD1jJjE2KTtiPWEuZW50YW5nbGVkTGFuZXM7aWYoMCE9PWIpZm9yKGE9YS5lbnRhbmdsZW1lbnRzLGImPWQ7MDxiOyljPTMxLW9jKGIpLGU9MTw8YyxkfD1hW2NdLGImPX5lO3JldHVybiBkfVxuZnVuY3Rpb24gdmMoYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIGIrMjUwO2Nhc2UgODpjYXNlIDE2OmNhc2UgMzI6Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gYis1RTM7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4tMTtjYXNlIDEzNDIxNzcyODpjYXNlIDI2ODQzNTQ1NjpjYXNlIDUzNjg3MDkxMjpjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuLTE7ZGVmYXVsdDpyZXR1cm4tMX19XG5mdW5jdGlvbiB3YyhhLGIpe2Zvcih2YXIgYz1hLnN1c3BlbmRlZExhbmVzLGQ9YS5waW5nZWRMYW5lcyxlPWEuZXhwaXJhdGlvblRpbWVzLGY9YS5wZW5kaW5nTGFuZXM7MDxmOyl7dmFyIGc9MzEtb2MoZiksaD0xPDxnLGs9ZVtnXTtpZigtMT09PWspe2lmKDA9PT0oaCZjKXx8MCE9PShoJmQpKWVbZ109dmMoaCxiKX1lbHNlIGs8PWImJihhLmV4cGlyZWRMYW5lc3w9aCk7ZiY9fmh9fWZ1bmN0aW9uIHhjKGEpe2E9YS5wZW5kaW5nTGFuZXMmLTEwNzM3NDE4MjU7cmV0dXJuIDAhPT1hP2E6YSYxMDczNzQxODI0PzEwNzM3NDE4MjQ6MH1mdW5jdGlvbiB5Yygpe3ZhciBhPXJjO3JjPDw9MTswPT09KHJjJjQxOTQyNDApJiYocmM9NjQpO3JldHVybiBhfWZ1bmN0aW9uIHpjKGEpe2Zvcih2YXIgYj1bXSxjPTA7MzE+YztjKyspYi5wdXNoKGEpO3JldHVybiBifVxuZnVuY3Rpb24gQWMoYSxiLGMpe2EucGVuZGluZ0xhbmVzfD1iOzUzNjg3MDkxMiE9PWImJihhLnN1c3BlbmRlZExhbmVzPTAsYS5waW5nZWRMYW5lcz0wKTthPWEuZXZlbnRUaW1lcztiPTMxLW9jKGIpO2FbYl09Y31mdW5jdGlvbiBCYyhhLGIpe3ZhciBjPWEucGVuZGluZ0xhbmVzJn5iO2EucGVuZGluZ0xhbmVzPWI7YS5zdXNwZW5kZWRMYW5lcz0wO2EucGluZ2VkTGFuZXM9MDthLmV4cGlyZWRMYW5lcyY9YjthLm11dGFibGVSZWFkTGFuZXMmPWI7YS5lbnRhbmdsZWRMYW5lcyY9YjtiPWEuZW50YW5nbGVtZW50czt2YXIgZD1hLmV2ZW50VGltZXM7Zm9yKGE9YS5leHBpcmF0aW9uVGltZXM7MDxjOyl7dmFyIGU9MzEtb2MoYyksZj0xPDxlO2JbZV09MDtkW2VdPS0xO2FbZV09LTE7YyY9fmZ9fVxuZnVuY3Rpb24gQ2MoYSxiKXt2YXIgYz1hLmVudGFuZ2xlZExhbmVzfD1iO2ZvcihhPWEuZW50YW5nbGVtZW50cztjOyl7dmFyIGQ9MzEtb2MoYyksZT0xPDxkO2UmYnxhW2RdJmImJihhW2RdfD1iKTtjJj1+ZX19dmFyIEM9MDtmdW5jdGlvbiBEYyhhKXthJj0tYTtyZXR1cm4gMTxhPzQ8YT8wIT09KGEmMjY4NDM1NDU1KT8xNjo1MzY4NzA5MTI6NDoxfXZhciBFYyxGYyxHYyxIYyxJYyxKYz0hMSxLYz1bXSxMYz1udWxsLE1jPW51bGwsTmM9bnVsbCxPYz1uZXcgTWFwLFBjPW5ldyBNYXAsUWM9W10sUmM9XCJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXQgc3VibWl0XCIuc3BsaXQoXCIgXCIpO1xuZnVuY3Rpb24gU2MoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImZvY3VzaW5cIjpjYXNlIFwiZm9jdXNvdXRcIjpMYz1udWxsO2JyZWFrO2Nhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6TWM9bnVsbDticmVhaztjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcIm1vdXNlb3V0XCI6TmM9bnVsbDticmVhaztjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwicG9pbnRlcm91dFwiOk9jLmRlbGV0ZShiLnBvaW50ZXJJZCk7YnJlYWs7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiOlBjLmRlbGV0ZShiLnBvaW50ZXJJZCl9fVxuZnVuY3Rpb24gVGMoYSxiLGMsZCxlLGYpe2lmKG51bGw9PT1hfHxhLm5hdGl2ZUV2ZW50IT09ZilyZXR1cm4gYT17YmxvY2tlZE9uOmIsZG9tRXZlbnROYW1lOmMsZXZlbnRTeXN0ZW1GbGFnczpkLG5hdGl2ZUV2ZW50OmYsdGFyZ2V0Q29udGFpbmVyczpbZV19LG51bGwhPT1iJiYoYj1DYihiKSxudWxsIT09YiYmRmMoYikpLGE7YS5ldmVudFN5c3RlbUZsYWdzfD1kO2I9YS50YXJnZXRDb250YWluZXJzO251bGwhPT1lJiYtMT09PWIuaW5kZXhPZihlKSYmYi5wdXNoKGUpO3JldHVybiBhfVxuZnVuY3Rpb24gVWMoYSxiLGMsZCxlKXtzd2l0Y2goYil7Y2FzZSBcImZvY3VzaW5cIjpyZXR1cm4gTGM9VGMoTGMsYSxiLGMsZCxlKSwhMDtjYXNlIFwiZHJhZ2VudGVyXCI6cmV0dXJuIE1jPVRjKE1jLGEsYixjLGQsZSksITA7Y2FzZSBcIm1vdXNlb3ZlclwiOnJldHVybiBOYz1UYyhOYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJwb2ludGVyb3ZlclwiOnZhciBmPWUucG9pbnRlcklkO09jLnNldChmLFRjKE9jLmdldChmKXx8bnVsbCxhLGIsYyxkLGUpKTtyZXR1cm4hMDtjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpyZXR1cm4gZj1lLnBvaW50ZXJJZCxQYy5zZXQoZixUYyhQYy5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSksITB9cmV0dXJuITF9XG5mdW5jdGlvbiBWYyhhKXt2YXIgYj1XYyhhLnRhcmdldCk7aWYobnVsbCE9PWIpe3ZhciBjPVZiKGIpO2lmKG51bGwhPT1jKWlmKGI9Yy50YWcsMTM9PT1iKXtpZihiPVdiKGMpLG51bGwhPT1iKXthLmJsb2NrZWRPbj1iO0ljKGEucHJpb3JpdHksZnVuY3Rpb24oKXtHYyhjKX0pO3JldHVybn19ZWxzZSBpZigzPT09YiYmYy5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7YS5ibG9ja2VkT249Mz09PWMudGFnP2Muc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtyZXR1cm59fWEuYmxvY2tlZE9uPW51bGx9XG5mdW5jdGlvbiBYYyhhKXtpZihudWxsIT09YS5ibG9ja2VkT24pcmV0dXJuITE7Zm9yKHZhciBiPWEudGFyZ2V0Q29udGFpbmVyczswPGIubGVuZ3RoOyl7dmFyIGM9WWMoYS5kb21FdmVudE5hbWUsYS5ldmVudFN5c3RlbUZsYWdzLGJbMF0sYS5uYXRpdmVFdmVudCk7aWYobnVsbD09PWMpe2M9YS5uYXRpdmVFdmVudDt2YXIgZD1uZXcgYy5jb25zdHJ1Y3RvcihjLnR5cGUsYyk7d2I9ZDtjLnRhcmdldC5kaXNwYXRjaEV2ZW50KGQpO3diPW51bGx9ZWxzZSByZXR1cm4gYj1DYihjKSxudWxsIT09YiYmRmMoYiksYS5ibG9ja2VkT249YywhMTtiLnNoaWZ0KCl9cmV0dXJuITB9ZnVuY3Rpb24gWmMoYSxiLGMpe1hjKGEpJiZjLmRlbGV0ZShiKX1mdW5jdGlvbiAkYygpe0pjPSExO251bGwhPT1MYyYmWGMoTGMpJiYoTGM9bnVsbCk7bnVsbCE9PU1jJiZYYyhNYykmJihNYz1udWxsKTtudWxsIT09TmMmJlhjKE5jKSYmKE5jPW51bGwpO09jLmZvckVhY2goWmMpO1BjLmZvckVhY2goWmMpfVxuZnVuY3Rpb24gYWQoYSxiKXthLmJsb2NrZWRPbj09PWImJihhLmJsb2NrZWRPbj1udWxsLEpjfHwoSmM9ITAsY2EudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhjYS51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSwkYykpKX1cbmZ1bmN0aW9uIGJkKGEpe2Z1bmN0aW9uIGIoYil7cmV0dXJuIGFkKGIsYSl9aWYoMDxLYy5sZW5ndGgpe2FkKEtjWzBdLGEpO2Zvcih2YXIgYz0xO2M8S2MubGVuZ3RoO2MrKyl7dmFyIGQ9S2NbY107ZC5ibG9ja2VkT249PT1hJiYoZC5ibG9ja2VkT249bnVsbCl9fW51bGwhPT1MYyYmYWQoTGMsYSk7bnVsbCE9PU1jJiZhZChNYyxhKTtudWxsIT09TmMmJmFkKE5jLGEpO09jLmZvckVhY2goYik7UGMuZm9yRWFjaChiKTtmb3IoYz0wO2M8UWMubGVuZ3RoO2MrKylkPVFjW2NdLGQuYmxvY2tlZE9uPT09YSYmKGQuYmxvY2tlZE9uPW51bGwpO2Zvcig7MDxRYy5sZW5ndGgmJihjPVFjWzBdLG51bGw9PT1jLmJsb2NrZWRPbik7KVZjKGMpLG51bGw9PT1jLmJsb2NrZWRPbiYmUWMuc2hpZnQoKX12YXIgY2Q9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsZGQ9ITA7XG5mdW5jdGlvbiBlZChhLGIsYyxkKXt2YXIgZT1DLGY9Y2QudHJhbnNpdGlvbjtjZC50cmFuc2l0aW9uPW51bGw7dHJ5e0M9MSxmZChhLGIsYyxkKX1maW5hbGx5e0M9ZSxjZC50cmFuc2l0aW9uPWZ9fWZ1bmN0aW9uIGdkKGEsYixjLGQpe3ZhciBlPUMsZj1jZC50cmFuc2l0aW9uO2NkLnRyYW5zaXRpb249bnVsbDt0cnl7Qz00LGZkKGEsYixjLGQpfWZpbmFsbHl7Qz1lLGNkLnRyYW5zaXRpb249Zn19XG5mdW5jdGlvbiBmZChhLGIsYyxkKXtpZihkZCl7dmFyIGU9WWMoYSxiLGMsZCk7aWYobnVsbD09PWUpaGQoYSxiLGQsaWQsYyksU2MoYSxkKTtlbHNlIGlmKFVjKGUsYSxiLGMsZCkpZC5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKFNjKGEsZCksYiY0JiYtMTxSYy5pbmRleE9mKGEpKXtmb3IoO251bGwhPT1lOyl7dmFyIGY9Q2IoZSk7bnVsbCE9PWYmJkVjKGYpO2Y9WWMoYSxiLGMsZCk7bnVsbD09PWYmJmhkKGEsYixkLGlkLGMpO2lmKGY9PT1lKWJyZWFrO2U9Zn1udWxsIT09ZSYmZC5zdG9wUHJvcGFnYXRpb24oKX1lbHNlIGhkKGEsYixkLG51bGwsYyl9fXZhciBpZD1udWxsO1xuZnVuY3Rpb24gWWMoYSxiLGMsZCl7aWQ9bnVsbDthPXhiKGQpO2E9V2MoYSk7aWYobnVsbCE9PWEpaWYoYj1WYihhKSxudWxsPT09YilhPW51bGw7ZWxzZSBpZihjPWIudGFnLDEzPT09Yyl7YT1XYihiKTtpZihudWxsIT09YSlyZXR1cm4gYTthPW51bGx9ZWxzZSBpZigzPT09Yyl7aWYoYi5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZClyZXR1cm4gMz09PWIudGFnP2Iuc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDthPW51bGx9ZWxzZSBiIT09YSYmKGE9bnVsbCk7aWQ9YTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGpkKGEpe3N3aXRjaChhKXtjYXNlIFwiY2FuY2VsXCI6Y2FzZSBcImNsaWNrXCI6Y2FzZSBcImNsb3NlXCI6Y2FzZSBcImNvbnRleHRtZW51XCI6Y2FzZSBcImNvcHlcIjpjYXNlIFwiY3V0XCI6Y2FzZSBcImF1eGNsaWNrXCI6Y2FzZSBcImRibGNsaWNrXCI6Y2FzZSBcImRyYWdlbmRcIjpjYXNlIFwiZHJhZ3N0YXJ0XCI6Y2FzZSBcImRyb3BcIjpjYXNlIFwiZm9jdXNpblwiOmNhc2UgXCJmb2N1c291dFwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJpbnZhbGlkXCI6Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5cHJlc3NcIjpjYXNlIFwia2V5dXBcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwicGFzdGVcIjpjYXNlIFwicGF1c2VcIjpjYXNlIFwicGxheVwiOmNhc2UgXCJwb2ludGVyY2FuY2VsXCI6Y2FzZSBcInBvaW50ZXJkb3duXCI6Y2FzZSBcInBvaW50ZXJ1cFwiOmNhc2UgXCJyYXRlY2hhbmdlXCI6Y2FzZSBcInJlc2V0XCI6Y2FzZSBcInJlc2l6ZVwiOmNhc2UgXCJzZWVrZWRcIjpjYXNlIFwic3VibWl0XCI6Y2FzZSBcInRvdWNoY2FuY2VsXCI6Y2FzZSBcInRvdWNoZW5kXCI6Y2FzZSBcInRvdWNoc3RhcnRcIjpjYXNlIFwidm9sdW1lY2hhbmdlXCI6Y2FzZSBcImNoYW5nZVwiOmNhc2UgXCJzZWxlY3Rpb25jaGFuZ2VcIjpjYXNlIFwidGV4dElucHV0XCI6Y2FzZSBcImNvbXBvc2l0aW9uc3RhcnRcIjpjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpjYXNlIFwiY29tcG9zaXRpb251cGRhdGVcIjpjYXNlIFwiYmVmb3JlYmx1clwiOmNhc2UgXCJhZnRlcmJsdXJcIjpjYXNlIFwiYmVmb3JlaW5wdXRcIjpjYXNlIFwiYmx1clwiOmNhc2UgXCJmdWxsc2NyZWVuY2hhbmdlXCI6Y2FzZSBcImZvY3VzXCI6Y2FzZSBcImhhc2hjaGFuZ2VcIjpjYXNlIFwicG9wc3RhdGVcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInNlbGVjdHN0YXJ0XCI6cmV0dXJuIDE7Y2FzZSBcImRyYWdcIjpjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdleGl0XCI6Y2FzZSBcImRyYWdsZWF2ZVwiOmNhc2UgXCJkcmFnb3ZlclwiOmNhc2UgXCJtb3VzZW1vdmVcIjpjYXNlIFwibW91c2VvdXRcIjpjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcInBvaW50ZXJtb3ZlXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwic2Nyb2xsXCI6Y2FzZSBcInRvZ2dsZVwiOmNhc2UgXCJ0b3VjaG1vdmVcIjpjYXNlIFwid2hlZWxcIjpjYXNlIFwibW91c2VlbnRlclwiOmNhc2UgXCJtb3VzZWxlYXZlXCI6Y2FzZSBcInBvaW50ZXJlbnRlclwiOmNhc2UgXCJwb2ludGVybGVhdmVcIjpyZXR1cm4gNDtcbmNhc2UgXCJtZXNzYWdlXCI6c3dpdGNoKGVjKCkpe2Nhc2UgZmM6cmV0dXJuIDE7Y2FzZSBnYzpyZXR1cm4gNDtjYXNlIGhjOmNhc2UgaWM6cmV0dXJuIDE2O2Nhc2UgamM6cmV0dXJuIDUzNjg3MDkxMjtkZWZhdWx0OnJldHVybiAxNn1kZWZhdWx0OnJldHVybiAxNn19dmFyIGtkPW51bGwsbGQ9bnVsbCxtZD1udWxsO2Z1bmN0aW9uIG5kKCl7aWYobWQpcmV0dXJuIG1kO3ZhciBhLGI9bGQsYz1iLmxlbmd0aCxkLGU9XCJ2YWx1ZVwiaW4ga2Q/a2QudmFsdWU6a2QudGV4dENvbnRlbnQsZj1lLmxlbmd0aDtmb3IoYT0wO2E8YyYmYlthXT09PWVbYV07YSsrKTt2YXIgZz1jLWE7Zm9yKGQ9MTtkPD1nJiZiW2MtZF09PT1lW2YtZF07ZCsrKTtyZXR1cm4gbWQ9ZS5zbGljZShhLDE8ZD8xLWQ6dm9pZCAwKX1cbmZ1bmN0aW9uIG9kKGEpe3ZhciBiPWEua2V5Q29kZTtcImNoYXJDb2RlXCJpbiBhPyhhPWEuY2hhckNvZGUsMD09PWEmJjEzPT09YiYmKGE9MTMpKTphPWI7MTA9PT1hJiYoYT0xMyk7cmV0dXJuIDMyPD1hfHwxMz09PWE/YTowfWZ1bmN0aW9uIHBkKCl7cmV0dXJuITB9ZnVuY3Rpb24gcWQoKXtyZXR1cm4hMX1cbmZ1bmN0aW9uIHJkKGEpe2Z1bmN0aW9uIGIoYixkLGUsZixnKXt0aGlzLl9yZWFjdE5hbWU9Yjt0aGlzLl90YXJnZXRJbnN0PWU7dGhpcy50eXBlPWQ7dGhpcy5uYXRpdmVFdmVudD1mO3RoaXMudGFyZ2V0PWc7dGhpcy5jdXJyZW50VGFyZ2V0PW51bGw7Zm9yKHZhciBjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmKGI9YVtjXSx0aGlzW2NdPWI/YihmKTpmW2NdKTt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD0obnVsbCE9Zi5kZWZhdWx0UHJldmVudGVkP2YuZGVmYXVsdFByZXZlbnRlZDohMT09PWYucmV0dXJuVmFsdWUpP3BkOnFkO3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9cWQ7cmV0dXJuIHRoaXN9QShiLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGE9dGhpcy5uYXRpdmVFdmVudDthJiYoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6XCJ1bmtub3duXCIhPT10eXBlb2YgYS5yZXR1cm5WYWx1ZSYmXG4oYS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9cGQpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnN0b3BQcm9wYWdhdGlvbj9hLnN0b3BQcm9wYWdhdGlvbigpOlwidW5rbm93blwiIT09dHlwZW9mIGEuY2FuY2VsQnViYmxlJiYoYS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9cGQpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7fSxpc1BlcnNpc3RlbnQ6cGR9KTtyZXR1cm4gYn1cbnZhciBzZD17ZXZlbnRQaGFzZTowLGJ1YmJsZXM6MCxjYW5jZWxhYmxlOjAsdGltZVN0YW1wOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDowLGlzVHJ1c3RlZDowfSx0ZD1yZChzZCksdWQ9QSh7fSxzZCx7dmlldzowLGRldGFpbDowfSksdmQ9cmQodWQpLHdkLHhkLHlkLEFkPUEoe30sdWQse3NjcmVlblg6MCxzY3JlZW5ZOjAsY2xpZW50WDowLGNsaWVudFk6MCxwYWdlWDowLHBhZ2VZOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLGdldE1vZGlmaWVyU3RhdGU6emQsYnV0dG9uOjAsYnV0dG9uczowLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWEucmVsYXRlZFRhcmdldD9hLmZyb21FbGVtZW50PT09YS5zcmNFbGVtZW50P2EudG9FbGVtZW50OmEuZnJvbUVsZW1lbnQ6YS5yZWxhdGVkVGFyZ2V0fSxtb3ZlbWVudFg6ZnVuY3Rpb24oYSl7aWYoXCJtb3ZlbWVudFhcImluXG5hKXJldHVybiBhLm1vdmVtZW50WDthIT09eWQmJih5ZCYmXCJtb3VzZW1vdmVcIj09PWEudHlwZT8od2Q9YS5zY3JlZW5YLXlkLnNjcmVlblgseGQ9YS5zY3JlZW5ZLXlkLnNjcmVlblkpOnhkPXdkPTAseWQ9YSk7cmV0dXJuIHdkfSxtb3ZlbWVudFk6ZnVuY3Rpb24oYSl7cmV0dXJuXCJtb3ZlbWVudFlcImluIGE/YS5tb3ZlbWVudFk6eGR9fSksQmQ9cmQoQWQpLENkPUEoe30sQWQse2RhdGFUcmFuc2ZlcjowfSksRGQ9cmQoQ2QpLEVkPUEoe30sdWQse3JlbGF0ZWRUYXJnZXQ6MH0pLEZkPXJkKEVkKSxHZD1BKHt9LHNkLHthbmltYXRpb25OYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxIZD1yZChHZCksSWQ9QSh7fSxzZCx7Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihhKXtyZXR1cm5cImNsaXBib2FyZERhdGFcImluIGE/YS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pLEpkPXJkKElkKSxLZD1BKHt9LHNkLHtkYXRhOjB9KSxMZD1yZChLZCksTWQ9e0VzYzpcIkVzY2FwZVwiLFxuU3BhY2ViYXI6XCIgXCIsTGVmdDpcIkFycm93TGVmdFwiLFVwOlwiQXJyb3dVcFwiLFJpZ2h0OlwiQXJyb3dSaWdodFwiLERvd246XCJBcnJvd0Rvd25cIixEZWw6XCJEZWxldGVcIixXaW46XCJPU1wiLE1lbnU6XCJDb250ZXh0TWVudVwiLEFwcHM6XCJDb250ZXh0TWVudVwiLFNjcm9sbDpcIlNjcm9sbExvY2tcIixNb3pQcmludGFibGVLZXk6XCJVbmlkZW50aWZpZWRcIn0sTmQ9ezg6XCJCYWNrc3BhY2VcIiw5OlwiVGFiXCIsMTI6XCJDbGVhclwiLDEzOlwiRW50ZXJcIiwxNjpcIlNoaWZ0XCIsMTc6XCJDb250cm9sXCIsMTg6XCJBbHRcIiwxOTpcIlBhdXNlXCIsMjA6XCJDYXBzTG9ja1wiLDI3OlwiRXNjYXBlXCIsMzI6XCIgXCIsMzM6XCJQYWdlVXBcIiwzNDpcIlBhZ2VEb3duXCIsMzU6XCJFbmRcIiwzNjpcIkhvbWVcIiwzNzpcIkFycm93TGVmdFwiLDM4OlwiQXJyb3dVcFwiLDM5OlwiQXJyb3dSaWdodFwiLDQwOlwiQXJyb3dEb3duXCIsNDU6XCJJbnNlcnRcIiw0NjpcIkRlbGV0ZVwiLDExMjpcIkYxXCIsMTEzOlwiRjJcIiwxMTQ6XCJGM1wiLDExNTpcIkY0XCIsMTE2OlwiRjVcIiwxMTc6XCJGNlwiLDExODpcIkY3XCIsXG4xMTk6XCJGOFwiLDEyMDpcIkY5XCIsMTIxOlwiRjEwXCIsMTIyOlwiRjExXCIsMTIzOlwiRjEyXCIsMTQ0OlwiTnVtTG9ja1wiLDE0NTpcIlNjcm9sbExvY2tcIiwyMjQ6XCJNZXRhXCJ9LE9kPXtBbHQ6XCJhbHRLZXlcIixDb250cm9sOlwiY3RybEtleVwiLE1ldGE6XCJtZXRhS2V5XCIsU2hpZnQ6XCJzaGlmdEtleVwifTtmdW5jdGlvbiBQZChhKXt2YXIgYj10aGlzLm5hdGl2ZUV2ZW50O3JldHVybiBiLmdldE1vZGlmaWVyU3RhdGU/Yi5nZXRNb2RpZmllclN0YXRlKGEpOihhPU9kW2FdKT8hIWJbYV06ITF9ZnVuY3Rpb24gemQoKXtyZXR1cm4gUGR9XG52YXIgUWQ9QSh7fSx1ZCx7a2V5OmZ1bmN0aW9uKGEpe2lmKGEua2V5KXt2YXIgYj1NZFthLmtleV18fGEua2V5O2lmKFwiVW5pZGVudGlmaWVkXCIhPT1iKXJldHVybiBifXJldHVyblwia2V5cHJlc3NcIj09PWEudHlwZT8oYT1vZChhKSwxMz09PWE/XCJFbnRlclwiOlN0cmluZy5mcm9tQ2hhckNvZGUoYSkpOlwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/TmRbYS5rZXlDb2RlXXx8XCJVbmlkZW50aWZpZWRcIjpcIlwifSxjb2RlOjAsbG9jYXRpb246MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAscmVwZWF0OjAsbG9jYWxlOjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZCxjaGFyQ29kZTpmdW5jdGlvbihhKXtyZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/b2QoYSk6MH0sa2V5Q29kZTpmdW5jdGlvbihhKXtyZXR1cm5cImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP2Eua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihhKXtyZXR1cm5cImtleXByZXNzXCI9PT1cbmEudHlwZT9vZChhKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP2Eua2V5Q29kZTowfX0pLFJkPXJkKFFkKSxTZD1BKHt9LEFkLHtwb2ludGVySWQ6MCx3aWR0aDowLGhlaWdodDowLHByZXNzdXJlOjAsdGFuZ2VudGlhbFByZXNzdXJlOjAsdGlsdFg6MCx0aWx0WTowLHR3aXN0OjAscG9pbnRlclR5cGU6MCxpc1ByaW1hcnk6MH0pLFRkPXJkKFNkKSxVZD1BKHt9LHVkLHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6emR9KSxWZD1yZChVZCksV2Q9QSh7fSxzZCx7cHJvcGVydHlOYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxYZD1yZChXZCksWWQ9QSh7fSxBZCx7ZGVsdGFYOmZ1bmN0aW9uKGEpe3JldHVyblwiZGVsdGFYXCJpbiBhP2EuZGVsdGFYOlwid2hlZWxEZWx0YVhcImluIGE/LWEud2hlZWxEZWx0YVg6MH0sXG5kZWx0YVk6ZnVuY3Rpb24oYSl7cmV0dXJuXCJkZWx0YVlcImluIGE/YS5kZWx0YVk6XCJ3aGVlbERlbHRhWVwiaW4gYT8tYS53aGVlbERlbHRhWTpcIndoZWVsRGVsdGFcImluIGE/LWEud2hlZWxEZWx0YTowfSxkZWx0YVo6MCxkZWx0YU1vZGU6MH0pLFpkPXJkKFlkKSwkZD1bOSwxMywyNywzMl0sYWU9aWEmJlwiQ29tcG9zaXRpb25FdmVudFwiaW4gd2luZG93LGJlPW51bGw7aWEmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmKGJlPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIGNlPWlhJiZcIlRleHRFdmVudFwiaW4gd2luZG93JiYhYmUsZGU9aWEmJighYWV8fGJlJiY4PGJlJiYxMT49YmUpLGVlPVN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLGZlPSExO1xuZnVuY3Rpb24gZ2UoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImtleXVwXCI6cmV0dXJuLTEhPT0kZC5pbmRleE9mKGIua2V5Q29kZSk7Y2FzZSBcImtleWRvd25cIjpyZXR1cm4gMjI5IT09Yi5rZXlDb2RlO2Nhc2UgXCJrZXlwcmVzc1wiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwiZm9jdXNvdXRcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBoZShhKXthPWEuZGV0YWlsO3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmXCJkYXRhXCJpbiBhP2EuZGF0YTpudWxsfXZhciBpZT0hMTtmdW5jdGlvbiBqZShhLGIpe3N3aXRjaChhKXtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gaGUoYik7Y2FzZSBcImtleXByZXNzXCI6aWYoMzIhPT1iLndoaWNoKXJldHVybiBudWxsO2ZlPSEwO3JldHVybiBlZTtjYXNlIFwidGV4dElucHV0XCI6cmV0dXJuIGE9Yi5kYXRhLGE9PT1lZSYmZmU/bnVsbDphO2RlZmF1bHQ6cmV0dXJuIG51bGx9fVxuZnVuY3Rpb24ga2UoYSxiKXtpZihpZSlyZXR1cm5cImNvbXBvc2l0aW9uZW5kXCI9PT1hfHwhYWUmJmdlKGEsYik/KGE9bmQoKSxtZD1sZD1rZD1udWxsLGllPSExLGEpOm51bGw7c3dpdGNoKGEpe2Nhc2UgXCJwYXN0ZVwiOnJldHVybiBudWxsO2Nhc2UgXCJrZXlwcmVzc1wiOmlmKCEoYi5jdHJsS2V5fHxiLmFsdEtleXx8Yi5tZXRhS2V5KXx8Yi5jdHJsS2V5JiZiLmFsdEtleSl7aWYoYi5jaGFyJiYxPGIuY2hhci5sZW5ndGgpcmV0dXJuIGIuY2hhcjtpZihiLndoaWNoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGIud2hpY2gpfXJldHVybiBudWxsO2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBkZSYmXCJrb1wiIT09Yi5sb2NhbGU/bnVsbDpiLmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19XG52YXIgbGU9e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsXCJkYXRldGltZS1sb2NhbFwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH07ZnVuY3Rpb24gbWUoYSl7dmFyIGI9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVyblwiaW5wdXRcIj09PWI/ISFsZVthLnR5cGVdOlwidGV4dGFyZWFcIj09PWI/ITA6ITF9ZnVuY3Rpb24gbmUoYSxiLGMsZCl7RWIoZCk7Yj1vZShiLFwib25DaGFuZ2VcIik7MDxiLmxlbmd0aCYmKGM9bmV3IHRkKFwib25DaGFuZ2VcIixcImNoYW5nZVwiLG51bGwsYyxkKSxhLnB1c2goe2V2ZW50OmMsbGlzdGVuZXJzOmJ9KSl9dmFyIHBlPW51bGwscWU9bnVsbDtmdW5jdGlvbiByZShhKXtzZShhLDApfWZ1bmN0aW9uIHRlKGEpe3ZhciBiPXVlKGEpO2lmKFdhKGIpKXJldHVybiBhfVxuZnVuY3Rpb24gdmUoYSxiKXtpZihcImNoYW5nZVwiPT09YSlyZXR1cm4gYn12YXIgd2U9ITE7aWYoaWEpe3ZhciB4ZTtpZihpYSl7dmFyIHllPVwib25pbnB1dFwiaW4gZG9jdW1lbnQ7aWYoIXllKXt2YXIgemU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt6ZS5zZXRBdHRyaWJ1dGUoXCJvbmlucHV0XCIsXCJyZXR1cm47XCIpO3llPVwiZnVuY3Rpb25cIj09PXR5cGVvZiB6ZS5vbmlucHV0fXhlPXllfWVsc2UgeGU9ITE7d2U9eGUmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSl9ZnVuY3Rpb24gQWUoKXtwZSYmKHBlLmRldGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLEJlKSxxZT1wZT1udWxsKX1mdW5jdGlvbiBCZShhKXtpZihcInZhbHVlXCI9PT1hLnByb3BlcnR5TmFtZSYmdGUocWUpKXt2YXIgYj1bXTtuZShiLHFlLGEseGIoYSkpO0piKHJlLGIpfX1cbmZ1bmN0aW9uIENlKGEsYixjKXtcImZvY3VzaW5cIj09PWE/KEFlKCkscGU9YixxZT1jLHBlLmF0dGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLEJlKSk6XCJmb2N1c291dFwiPT09YSYmQWUoKX1mdW5jdGlvbiBEZShhKXtpZihcInNlbGVjdGlvbmNoYW5nZVwiPT09YXx8XCJrZXl1cFwiPT09YXx8XCJrZXlkb3duXCI9PT1hKXJldHVybiB0ZShxZSl9ZnVuY3Rpb24gRWUoYSxiKXtpZihcImNsaWNrXCI9PT1hKXJldHVybiB0ZShiKX1mdW5jdGlvbiBGZShhLGIpe2lmKFwiaW5wdXRcIj09PWF8fFwiY2hhbmdlXCI9PT1hKXJldHVybiB0ZShiKX1mdW5jdGlvbiBHZShhLGIpe3JldHVybiBhPT09YiYmKDAhPT1hfHwxL2E9PT0xL2IpfHxhIT09YSYmYiE9PWJ9dmFyIEhlPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOkdlO1xuZnVuY3Rpb24gSWUoYSxiKXtpZihIZShhLGIpKXJldHVybiEwO2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYXx8bnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYnx8bnVsbD09PWIpcmV0dXJuITE7dmFyIGM9T2JqZWN0LmtleXMoYSksZD1PYmplY3Qua2V5cyhiKTtpZihjLmxlbmd0aCE9PWQubGVuZ3RoKXJldHVybiExO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF07aWYoIWphLmNhbGwoYixlKXx8IUhlKGFbZV0sYltlXSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gSmUoYSl7Zm9yKDthJiZhLmZpcnN0Q2hpbGQ7KWE9YS5maXJzdENoaWxkO3JldHVybiBhfVxuZnVuY3Rpb24gS2UoYSxiKXt2YXIgYz1KZShhKTthPTA7Zm9yKHZhciBkO2M7KXtpZigzPT09Yy5ub2RlVHlwZSl7ZD1hK2MudGV4dENvbnRlbnQubGVuZ3RoO2lmKGE8PWImJmQ+PWIpcmV0dXJue25vZGU6YyxvZmZzZXQ6Yi1hfTthPWR9YTp7Zm9yKDtjOyl7aWYoYy5uZXh0U2libGluZyl7Yz1jLm5leHRTaWJsaW5nO2JyZWFrIGF9Yz1jLnBhcmVudE5vZGV9Yz12b2lkIDB9Yz1KZShjKX19ZnVuY3Rpb24gTGUoYSxiKXtyZXR1cm4gYSYmYj9hPT09Yj8hMDphJiYzPT09YS5ub2RlVHlwZT8hMTpiJiYzPT09Yi5ub2RlVHlwZT9MZShhLGIucGFyZW50Tm9kZSk6XCJjb250YWluc1wiaW4gYT9hLmNvbnRhaW5zKGIpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNik6ITE6ITF9XG5mdW5jdGlvbiBNZSgpe2Zvcih2YXIgYT13aW5kb3csYj1YYSgpO2IgaW5zdGFuY2VvZiBhLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciBjPVwic3RyaW5nXCI9PT10eXBlb2YgYi5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWZ9Y2F0Y2goZCl7Yz0hMX1pZihjKWE9Yi5jb250ZW50V2luZG93O2Vsc2UgYnJlYWs7Yj1YYShhLmRvY3VtZW50KX1yZXR1cm4gYn1mdW5jdGlvbiBOZShhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGImJihcImlucHV0XCI9PT1iJiYoXCJ0ZXh0XCI9PT1hLnR5cGV8fFwic2VhcmNoXCI9PT1hLnR5cGV8fFwidGVsXCI9PT1hLnR5cGV8fFwidXJsXCI9PT1hLnR5cGV8fFwicGFzc3dvcmRcIj09PWEudHlwZSl8fFwidGV4dGFyZWFcIj09PWJ8fFwidHJ1ZVwiPT09YS5jb250ZW50RWRpdGFibGUpfVxuZnVuY3Rpb24gT2UoYSl7dmFyIGI9TWUoKSxjPWEuZm9jdXNlZEVsZW0sZD1hLnNlbGVjdGlvblJhbmdlO2lmKGIhPT1jJiZjJiZjLm93bmVyRG9jdW1lbnQmJkxlKGMub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYykpe2lmKG51bGwhPT1kJiZOZShjKSlpZihiPWQuc3RhcnQsYT1kLmVuZCx2b2lkIDA9PT1hJiYoYT1iKSxcInNlbGVjdGlvblN0YXJ0XCJpbiBjKWMuc2VsZWN0aW9uU3RhcnQ9YixjLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihhLGMudmFsdWUubGVuZ3RoKTtlbHNlIGlmKGE9KGI9Yy5vd25lckRvY3VtZW50fHxkb2N1bWVudCkmJmIuZGVmYXVsdFZpZXd8fHdpbmRvdyxhLmdldFNlbGVjdGlvbil7YT1hLmdldFNlbGVjdGlvbigpO3ZhciBlPWMudGV4dENvbnRlbnQubGVuZ3RoLGY9TWF0aC5taW4oZC5zdGFydCxlKTtkPXZvaWQgMD09PWQuZW5kP2Y6TWF0aC5taW4oZC5lbmQsZSk7IWEuZXh0ZW5kJiZmPmQmJihlPWQsZD1mLGY9ZSk7ZT1LZShjLGYpO3ZhciBnPUtlKGMsXG5kKTtlJiZnJiYoMSE9PWEucmFuZ2VDb3VudHx8YS5hbmNob3JOb2RlIT09ZS5ub2RlfHxhLmFuY2hvck9mZnNldCE9PWUub2Zmc2V0fHxhLmZvY3VzTm9kZSE9PWcubm9kZXx8YS5mb2N1c09mZnNldCE9PWcub2Zmc2V0KSYmKGI9Yi5jcmVhdGVSYW5nZSgpLGIuc2V0U3RhcnQoZS5ub2RlLGUub2Zmc2V0KSxhLnJlbW92ZUFsbFJhbmdlcygpLGY+ZD8oYS5hZGRSYW5nZShiKSxhLmV4dGVuZChnLm5vZGUsZy5vZmZzZXQpKTooYi5zZXRFbmQoZy5ub2RlLGcub2Zmc2V0KSxhLmFkZFJhbmdlKGIpKSl9Yj1bXTtmb3IoYT1jO2E9YS5wYXJlbnROb2RlOykxPT09YS5ub2RlVHlwZSYmYi5wdXNoKHtlbGVtZW50OmEsbGVmdDphLnNjcm9sbExlZnQsdG9wOmEuc2Nyb2xsVG9wfSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGMuZm9jdXMmJmMuZm9jdXMoKTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWE9YltjXSxhLmVsZW1lbnQuc2Nyb2xsTGVmdD1hLmxlZnQsYS5lbGVtZW50LnNjcm9sbFRvcD1hLnRvcH19XG52YXIgUGU9aWEmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmMTE+PWRvY3VtZW50LmRvY3VtZW50TW9kZSxRZT1udWxsLFJlPW51bGwsU2U9bnVsbCxUZT0hMTtcbmZ1bmN0aW9uIFVlKGEsYixjKXt2YXIgZD1jLndpbmRvdz09PWM/Yy5kb2N1bWVudDo5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudDtUZXx8bnVsbD09UWV8fFFlIT09WGEoZCl8fChkPVFlLFwic2VsZWN0aW9uU3RhcnRcImluIGQmJk5lKGQpP2Q9e3N0YXJ0OmQuc2VsZWN0aW9uU3RhcnQsZW5kOmQuc2VsZWN0aW9uRW5kfTooZD0oZC5vd25lckRvY3VtZW50JiZkLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uKCksZD17YW5jaG9yTm9kZTpkLmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OmQuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpkLmZvY3VzTm9kZSxmb2N1c09mZnNldDpkLmZvY3VzT2Zmc2V0fSksU2UmJkllKFNlLGQpfHwoU2U9ZCxkPW9lKFJlLFwib25TZWxlY3RcIiksMDxkLmxlbmd0aCYmKGI9bmV3IHRkKFwib25TZWxlY3RcIixcInNlbGVjdFwiLG51bGwsYixjKSxhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmR9KSxiLnRhcmdldD1RZSkpKX1cbmZ1bmN0aW9uIFZlKGEsYil7dmFyIGM9e307Y1thLnRvTG93ZXJDYXNlKCldPWIudG9Mb3dlckNhc2UoKTtjW1wiV2Via2l0XCIrYV09XCJ3ZWJraXRcIitiO2NbXCJNb3pcIithXT1cIm1velwiK2I7cmV0dXJuIGN9dmFyIFdlPXthbmltYXRpb25lbmQ6VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkVuZFwiKSxhbmltYXRpb25pdGVyYXRpb246VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkl0ZXJhdGlvblwiKSxhbmltYXRpb25zdGFydDpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uU3RhcnRcIiksdHJhbnNpdGlvbmVuZDpWZShcIlRyYW5zaXRpb25cIixcIlRyYW5zaXRpb25FbmRcIil9LFhlPXt9LFllPXt9O1xuaWEmJihZZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLnN0eWxlLFwiQW5pbWF0aW9uRXZlbnRcImluIHdpbmRvd3x8KGRlbGV0ZSBXZS5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBXZS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBXZS5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLFwiVHJhbnNpdGlvbkV2ZW50XCJpbiB3aW5kb3d8fGRlbGV0ZSBXZS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO2Z1bmN0aW9uIFplKGEpe2lmKFhlW2FdKXJldHVybiBYZVthXTtpZighV2VbYV0pcmV0dXJuIGE7dmFyIGI9V2VbYV0sYztmb3IoYyBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoYykmJmMgaW4gWWUpcmV0dXJuIFhlW2FdPWJbY107cmV0dXJuIGF9dmFyICRlPVplKFwiYW5pbWF0aW9uZW5kXCIpLGFmPVplKFwiYW5pbWF0aW9uaXRlcmF0aW9uXCIpLGJmPVplKFwiYW5pbWF0aW9uc3RhcnRcIiksY2Y9WmUoXCJ0cmFuc2l0aW9uZW5kXCIpLGRmPW5ldyBNYXAsZWY9XCJhYm9ydCBhdXhDbGljayBjYW5jZWwgY2FuUGxheSBjYW5QbGF5VGhyb3VnaCBjbGljayBjbG9zZSBjb250ZXh0TWVudSBjb3B5IGN1dCBkcmFnIGRyYWdFbmQgZHJhZ0VudGVyIGRyYWdFeGl0IGRyYWdMZWF2ZSBkcmFnT3ZlciBkcmFnU3RhcnQgZHJvcCBkdXJhdGlvbkNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBnb3RQb2ludGVyQ2FwdHVyZSBpbnB1dCBpbnZhbGlkIGtleURvd24ga2V5UHJlc3Mga2V5VXAgbG9hZCBsb2FkZWREYXRhIGxvYWRlZE1ldGFkYXRhIGxvYWRTdGFydCBsb3N0UG9pbnRlckNhcHR1cmUgbW91c2VEb3duIG1vdXNlTW92ZSBtb3VzZU91dCBtb3VzZU92ZXIgbW91c2VVcCBwYXN0ZSBwYXVzZSBwbGF5IHBsYXlpbmcgcG9pbnRlckNhbmNlbCBwb2ludGVyRG93biBwb2ludGVyTW92ZSBwb2ludGVyT3V0IHBvaW50ZXJPdmVyIHBvaW50ZXJVcCBwcm9ncmVzcyByYXRlQ2hhbmdlIHJlc2V0IHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1Ym1pdCBzdXNwZW5kIHRpbWVVcGRhdGUgdG91Y2hDYW5jZWwgdG91Y2hFbmQgdG91Y2hTdGFydCB2b2x1bWVDaGFuZ2Ugc2Nyb2xsIHRvZ2dsZSB0b3VjaE1vdmUgd2FpdGluZyB3aGVlbFwiLnNwbGl0KFwiIFwiKTtcbmZ1bmN0aW9uIGZmKGEsYil7ZGYuc2V0KGEsYik7ZmEoYixbYV0pfWZvcih2YXIgZ2Y9MDtnZjxlZi5sZW5ndGg7Z2YrKyl7dmFyIGhmPWVmW2dmXSxqZj1oZi50b0xvd2VyQ2FzZSgpLGtmPWhmWzBdLnRvVXBwZXJDYXNlKCkraGYuc2xpY2UoMSk7ZmYoamYsXCJvblwiK2tmKX1mZigkZSxcIm9uQW5pbWF0aW9uRW5kXCIpO2ZmKGFmLFwib25BbmltYXRpb25JdGVyYXRpb25cIik7ZmYoYmYsXCJvbkFuaW1hdGlvblN0YXJ0XCIpO2ZmKFwiZGJsY2xpY2tcIixcIm9uRG91YmxlQ2xpY2tcIik7ZmYoXCJmb2N1c2luXCIsXCJvbkZvY3VzXCIpO2ZmKFwiZm9jdXNvdXRcIixcIm9uQmx1clwiKTtmZihjZixcIm9uVHJhbnNpdGlvbkVuZFwiKTtoYShcIm9uTW91c2VFbnRlclwiLFtcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl0pO2hhKFwib25Nb3VzZUxlYXZlXCIsW1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXSk7aGEoXCJvblBvaW50ZXJFbnRlclwiLFtcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdKTtcbmhhKFwib25Qb2ludGVyTGVhdmVcIixbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXSk7ZmEoXCJvbkNoYW5nZVwiLFwiY2hhbmdlIGNsaWNrIGZvY3VzaW4gZm9jdXNvdXQgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIikpO2ZhKFwib25TZWxlY3RcIixcImZvY3Vzb3V0IGNvbnRleHRtZW51IGRyYWdlbmQgZm9jdXNpbiBrZXlkb3duIGtleXVwIG1vdXNlZG93biBtb3VzZXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvbkJlZm9yZUlucHV0XCIsW1wiY29tcG9zaXRpb25lbmRcIixcImtleXByZXNzXCIsXCJ0ZXh0SW5wdXRcIixcInBhc3RlXCJdKTtmYShcIm9uQ29tcG9zaXRpb25FbmRcIixcImNvbXBvc2l0aW9uZW5kIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uQ29tcG9zaXRpb25TdGFydFwiLFwiY29tcG9zaXRpb25zdGFydCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7XG5mYShcIm9uQ29tcG9zaXRpb25VcGRhdGVcIixcImNvbXBvc2l0aW9udXBkYXRlIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTt2YXIgbGY9XCJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZ1wiLnNwbGl0KFwiIFwiKSxtZj1uZXcgU2V0KFwiY2FuY2VsIGNsb3NlIGludmFsaWQgbG9hZCBzY3JvbGwgdG9nZ2xlXCIuc3BsaXQoXCIgXCIpLmNvbmNhdChsZikpO1xuZnVuY3Rpb24gbmYoYSxiLGMpe3ZhciBkPWEudHlwZXx8XCJ1bmtub3duLWV2ZW50XCI7YS5jdXJyZW50VGFyZ2V0PWM7VWIoZCxiLHZvaWQgMCxhKTthLmN1cnJlbnRUYXJnZXQ9bnVsbH1cbmZ1bmN0aW9uIHNlKGEsYil7Yj0wIT09KGImNCk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY10sZT1kLmV2ZW50O2Q9ZC5saXN0ZW5lcnM7YTp7dmFyIGY9dm9pZCAwO2lmKGIpZm9yKHZhciBnPWQubGVuZ3RoLTE7MDw9ZztnLS0pe3ZhciBoPWRbZ10saz1oLmluc3RhbmNlLGw9aC5jdXJyZW50VGFyZ2V0O2g9aC5saXN0ZW5lcjtpZihrIT09ZiYmZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGE7bmYoZSxoLGwpO2Y9a31lbHNlIGZvcihnPTA7ZzxkLmxlbmd0aDtnKyspe2g9ZFtnXTtrPWguaW5zdGFuY2U7bD1oLmN1cnJlbnRUYXJnZXQ7aD1oLmxpc3RlbmVyO2lmKGshPT1mJiZlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgYTtuZihlLGgsbCk7Zj1rfX19aWYoUWIpdGhyb3cgYT1SYixRYj0hMSxSYj1udWxsLGE7fVxuZnVuY3Rpb24gRChhLGIpe3ZhciBjPWJbb2ZdO3ZvaWQgMD09PWMmJihjPWJbb2ZdPW5ldyBTZXQpO3ZhciBkPWErXCJfX2J1YmJsZVwiO2MuaGFzKGQpfHwocGYoYixhLDIsITEpLGMuYWRkKGQpKX1mdW5jdGlvbiBxZihhLGIsYyl7dmFyIGQ9MDtiJiYoZHw9NCk7cGYoYyxhLGQsYil9dmFyIHJmPVwiX3JlYWN0TGlzdGVuaW5nXCIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7ZnVuY3Rpb24gc2YoYSl7aWYoIWFbcmZdKXthW3JmXT0hMDtkYS5mb3JFYWNoKGZ1bmN0aW9uKGIpe1wic2VsZWN0aW9uY2hhbmdlXCIhPT1iJiYobWYuaGFzKGIpfHxxZihiLCExLGEpLHFmKGIsITAsYSkpfSk7dmFyIGI9OT09PWEubm9kZVR5cGU/YTphLm93bmVyRG9jdW1lbnQ7bnVsbD09PWJ8fGJbcmZdfHwoYltyZl09ITAscWYoXCJzZWxlY3Rpb25jaGFuZ2VcIiwhMSxiKSl9fVxuZnVuY3Rpb24gcGYoYSxiLGMsZCl7c3dpdGNoKGpkKGIpKXtjYXNlIDE6dmFyIGU9ZWQ7YnJlYWs7Y2FzZSA0OmU9Z2Q7YnJlYWs7ZGVmYXVsdDplPWZkfWM9ZS5iaW5kKG51bGwsYixjLGEpO2U9dm9pZCAwOyFMYnx8XCJ0b3VjaHN0YXJ0XCIhPT1iJiZcInRvdWNobW92ZVwiIT09YiYmXCJ3aGVlbFwiIT09Ynx8KGU9ITApO2Q/dm9pZCAwIT09ZT9hLmFkZEV2ZW50TGlzdGVuZXIoYixjLHtjYXB0dXJlOiEwLHBhc3NpdmU6ZX0pOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITApOnZvaWQgMCE9PWU/YS5hZGRFdmVudExpc3RlbmVyKGIsYyx7cGFzc2l2ZTplfSk6YS5hZGRFdmVudExpc3RlbmVyKGIsYywhMSl9XG5mdW5jdGlvbiBoZChhLGIsYyxkLGUpe3ZhciBmPWQ7aWYoMD09PShiJjEpJiYwPT09KGImMikmJm51bGwhPT1kKWE6Zm9yKDs7KXtpZihudWxsPT09ZClyZXR1cm47dmFyIGc9ZC50YWc7aWYoMz09PWd8fDQ9PT1nKXt2YXIgaD1kLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO2lmKGg9PT1lfHw4PT09aC5ub2RlVHlwZSYmaC5wYXJlbnROb2RlPT09ZSlicmVhaztpZig0PT09Zylmb3IoZz1kLnJldHVybjtudWxsIT09Zzspe3ZhciBrPWcudGFnO2lmKDM9PT1rfHw0PT09aylpZihrPWcuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8saz09PWV8fDg9PT1rLm5vZGVUeXBlJiZrLnBhcmVudE5vZGU9PT1lKXJldHVybjtnPWcucmV0dXJufWZvcig7bnVsbCE9PWg7KXtnPVdjKGgpO2lmKG51bGw9PT1nKXJldHVybjtrPWcudGFnO2lmKDU9PT1rfHw2PT09ayl7ZD1mPWc7Y29udGludWUgYX1oPWgucGFyZW50Tm9kZX19ZD1kLnJldHVybn1KYihmdW5jdGlvbigpe3ZhciBkPWYsZT14YihjKSxnPVtdO1xuYTp7dmFyIGg9ZGYuZ2V0KGEpO2lmKHZvaWQgMCE9PWgpe3ZhciBrPXRkLG49YTtzd2l0Y2goYSl7Y2FzZSBcImtleXByZXNzXCI6aWYoMD09PW9kKGMpKWJyZWFrIGE7Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5dXBcIjprPVJkO2JyZWFrO2Nhc2UgXCJmb2N1c2luXCI6bj1cImZvY3VzXCI7az1GZDticmVhaztjYXNlIFwiZm9jdXNvdXRcIjpuPVwiYmx1clwiO2s9RmQ7YnJlYWs7Y2FzZSBcImJlZm9yZWJsdXJcIjpjYXNlIFwiYWZ0ZXJibHVyXCI6az1GZDticmVhaztjYXNlIFwiY2xpY2tcIjppZigyPT09Yy5idXR0b24pYnJlYWsgYTtjYXNlIFwiYXV4Y2xpY2tcIjpjYXNlIFwiZGJsY2xpY2tcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcIm1vdXNlbW92ZVwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcIm1vdXNlb3V0XCI6Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJjb250ZXh0bWVudVwiOms9QmQ7YnJlYWs7Y2FzZSBcImRyYWdcIjpjYXNlIFwiZHJhZ2VuZFwiOmNhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2V4aXRcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6Y2FzZSBcImRyYWdvdmVyXCI6Y2FzZSBcImRyYWdzdGFydFwiOmNhc2UgXCJkcm9wXCI6az1cbkRkO2JyZWFrO2Nhc2UgXCJ0b3VjaGNhbmNlbFwiOmNhc2UgXCJ0b3VjaGVuZFwiOmNhc2UgXCJ0b3VjaG1vdmVcIjpjYXNlIFwidG91Y2hzdGFydFwiOms9VmQ7YnJlYWs7Y2FzZSAkZTpjYXNlIGFmOmNhc2UgYmY6az1IZDticmVhaztjYXNlIGNmOms9WGQ7YnJlYWs7Y2FzZSBcInNjcm9sbFwiOms9dmQ7YnJlYWs7Y2FzZSBcIndoZWVsXCI6az1aZDticmVhaztjYXNlIFwiY29weVwiOmNhc2UgXCJjdXRcIjpjYXNlIFwicGFzdGVcIjprPUpkO2JyZWFrO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwicG9pbnRlcmNhbmNlbFwiOmNhc2UgXCJwb2ludGVyZG93blwiOmNhc2UgXCJwb2ludGVybW92ZVwiOmNhc2UgXCJwb2ludGVyb3V0XCI6Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInBvaW50ZXJ1cFwiOms9VGR9dmFyIHQ9MCE9PShiJjQpLEo9IXQmJlwic2Nyb2xsXCI9PT1hLHg9dD9udWxsIT09aD9oK1wiQ2FwdHVyZVwiOm51bGw6aDt0PVtdO2Zvcih2YXIgdz1kLHU7bnVsbCE9PVxudzspe3U9dzt2YXIgRj11LnN0YXRlTm9kZTs1PT09dS50YWcmJm51bGwhPT1GJiYodT1GLG51bGwhPT14JiYoRj1LYih3LHgpLG51bGwhPUYmJnQucHVzaCh0Zih3LEYsdSkpKSk7aWYoSilicmVhazt3PXcucmV0dXJufTA8dC5sZW5ndGgmJihoPW5ldyBrKGgsbixudWxsLGMsZSksZy5wdXNoKHtldmVudDpoLGxpc3RlbmVyczp0fSkpfX1pZigwPT09KGImNykpe2E6e2g9XCJtb3VzZW92ZXJcIj09PWF8fFwicG9pbnRlcm92ZXJcIj09PWE7az1cIm1vdXNlb3V0XCI9PT1hfHxcInBvaW50ZXJvdXRcIj09PWE7aWYoaCYmYyE9PXdiJiYobj1jLnJlbGF0ZWRUYXJnZXR8fGMuZnJvbUVsZW1lbnQpJiYoV2Mobil8fG5bdWZdKSlicmVhayBhO2lmKGt8fGgpe2g9ZS53aW5kb3c9PT1lP2U6KGg9ZS5vd25lckRvY3VtZW50KT9oLmRlZmF1bHRWaWV3fHxoLnBhcmVudFdpbmRvdzp3aW5kb3c7aWYoayl7aWYobj1jLnJlbGF0ZWRUYXJnZXR8fGMudG9FbGVtZW50LGs9ZCxuPW4/V2Mobik6bnVsbCxudWxsIT09XG5uJiYoSj1WYihuKSxuIT09Snx8NSE9PW4udGFnJiY2IT09bi50YWcpKW49bnVsbH1lbHNlIGs9bnVsbCxuPWQ7aWYoayE9PW4pe3Q9QmQ7Rj1cIm9uTW91c2VMZWF2ZVwiO3g9XCJvbk1vdXNlRW50ZXJcIjt3PVwibW91c2VcIjtpZihcInBvaW50ZXJvdXRcIj09PWF8fFwicG9pbnRlcm92ZXJcIj09PWEpdD1UZCxGPVwib25Qb2ludGVyTGVhdmVcIix4PVwib25Qb2ludGVyRW50ZXJcIix3PVwicG9pbnRlclwiO0o9bnVsbD09az9oOnVlKGspO3U9bnVsbD09bj9oOnVlKG4pO2g9bmV3IHQoRix3K1wibGVhdmVcIixrLGMsZSk7aC50YXJnZXQ9SjtoLnJlbGF0ZWRUYXJnZXQ9dTtGPW51bGw7V2MoZSk9PT1kJiYodD1uZXcgdCh4LHcrXCJlbnRlclwiLG4sYyxlKSx0LnRhcmdldD11LHQucmVsYXRlZFRhcmdldD1KLEY9dCk7Sj1GO2lmKGsmJm4pYjp7dD1rO3g9bjt3PTA7Zm9yKHU9dDt1O3U9dmYodSkpdysrO3U9MDtmb3IoRj14O0Y7Rj12ZihGKSl1Kys7Zm9yKDswPHctdTspdD12Zih0KSx3LS07Zm9yKDswPHUtdzspeD1cbnZmKHgpLHUtLTtmb3IoO3ctLTspe2lmKHQ9PT14fHxudWxsIT09eCYmdD09PXguYWx0ZXJuYXRlKWJyZWFrIGI7dD12Zih0KTt4PXZmKHgpfXQ9bnVsbH1lbHNlIHQ9bnVsbDtudWxsIT09ayYmd2YoZyxoLGssdCwhMSk7bnVsbCE9PW4mJm51bGwhPT1KJiZ3ZihnLEosbix0LCEwKX19fWE6e2g9ZD91ZShkKTp3aW5kb3c7az1oLm5vZGVOYW1lJiZoLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoXCJzZWxlY3RcIj09PWt8fFwiaW5wdXRcIj09PWsmJlwiZmlsZVwiPT09aC50eXBlKXZhciBuYT12ZTtlbHNlIGlmKG1lKGgpKWlmKHdlKW5hPUZlO2Vsc2V7bmE9RGU7dmFyIHhhPUNlfWVsc2Uoaz1oLm5vZGVOYW1lKSYmXCJpbnB1dFwiPT09ay50b0xvd2VyQ2FzZSgpJiYoXCJjaGVja2JveFwiPT09aC50eXBlfHxcInJhZGlvXCI9PT1oLnR5cGUpJiYobmE9RWUpO2lmKG5hJiYobmE9bmEoYSxkKSkpe25lKGcsbmEsYyxlKTticmVhayBhfXhhJiZ4YShhLGgsZCk7XCJmb2N1c291dFwiPT09YSYmKHhhPWguX3dyYXBwZXJTdGF0ZSkmJlxueGEuY29udHJvbGxlZCYmXCJudW1iZXJcIj09PWgudHlwZSYmY2IoaCxcIm51bWJlclwiLGgudmFsdWUpfXhhPWQ/dWUoZCk6d2luZG93O3N3aXRjaChhKXtjYXNlIFwiZm9jdXNpblwiOmlmKG1lKHhhKXx8XCJ0cnVlXCI9PT14YS5jb250ZW50RWRpdGFibGUpUWU9eGEsUmU9ZCxTZT1udWxsO2JyZWFrO2Nhc2UgXCJmb2N1c291dFwiOlNlPVJlPVFlPW51bGw7YnJlYWs7Y2FzZSBcIm1vdXNlZG93blwiOlRlPSEwO2JyZWFrO2Nhc2UgXCJjb250ZXh0bWVudVwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcImRyYWdlbmRcIjpUZT0hMTtVZShnLGMsZSk7YnJlYWs7Y2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOmlmKFBlKWJyZWFrO2Nhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXVwXCI6VWUoZyxjLGUpfXZhciAkYTtpZihhZSliOntzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uc3RhcnRcIjp2YXIgYmE9XCJvbkNvbXBvc2l0aW9uU3RhcnRcIjticmVhayBiO2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOmJhPVwib25Db21wb3NpdGlvbkVuZFwiO1xuYnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb251cGRhdGVcIjpiYT1cIm9uQ29tcG9zaXRpb25VcGRhdGVcIjticmVhayBifWJhPXZvaWQgMH1lbHNlIGllP2dlKGEsYykmJihiYT1cIm9uQ29tcG9zaXRpb25FbmRcIik6XCJrZXlkb3duXCI9PT1hJiYyMjk9PT1jLmtleUNvZGUmJihiYT1cIm9uQ29tcG9zaXRpb25TdGFydFwiKTtiYSYmKGRlJiZcImtvXCIhPT1jLmxvY2FsZSYmKGllfHxcIm9uQ29tcG9zaXRpb25TdGFydFwiIT09YmE/XCJvbkNvbXBvc2l0aW9uRW5kXCI9PT1iYSYmaWUmJigkYT1uZCgpKTooa2Q9ZSxsZD1cInZhbHVlXCJpbiBrZD9rZC52YWx1ZTprZC50ZXh0Q29udGVudCxpZT0hMCkpLHhhPW9lKGQsYmEpLDA8eGEubGVuZ3RoJiYoYmE9bmV3IExkKGJhLGEsbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6YmEsbGlzdGVuZXJzOnhhfSksJGE/YmEuZGF0YT0kYTooJGE9aGUoYyksbnVsbCE9PSRhJiYoYmEuZGF0YT0kYSkpKSk7aWYoJGE9Y2U/amUoYSxjKTprZShhLGMpKWQ9b2UoZCxcIm9uQmVmb3JlSW5wdXRcIiksXG4wPGQubGVuZ3RoJiYoZT1uZXcgTGQoXCJvbkJlZm9yZUlucHV0XCIsXCJiZWZvcmVpbnB1dFwiLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmUsbGlzdGVuZXJzOmR9KSxlLmRhdGE9JGEpfXNlKGcsYil9KX1mdW5jdGlvbiB0ZihhLGIsYyl7cmV0dXJue2luc3RhbmNlOmEsbGlzdGVuZXI6YixjdXJyZW50VGFyZ2V0OmN9fWZ1bmN0aW9uIG9lKGEsYil7Zm9yKHZhciBjPWIrXCJDYXB0dXJlXCIsZD1bXTtudWxsIT09YTspe3ZhciBlPWEsZj1lLnN0YXRlTm9kZTs1PT09ZS50YWcmJm51bGwhPT1mJiYoZT1mLGY9S2IoYSxjKSxudWxsIT1mJiZkLnVuc2hpZnQodGYoYSxmLGUpKSxmPUtiKGEsYiksbnVsbCE9ZiYmZC5wdXNoKHRmKGEsZixlKSkpO2E9YS5yZXR1cm59cmV0dXJuIGR9ZnVuY3Rpb24gdmYoYSl7aWYobnVsbD09PWEpcmV0dXJuIG51bGw7ZG8gYT1hLnJldHVybjt3aGlsZShhJiY1IT09YS50YWcpO3JldHVybiBhP2E6bnVsbH1cbmZ1bmN0aW9uIHdmKGEsYixjLGQsZSl7Zm9yKHZhciBmPWIuX3JlYWN0TmFtZSxnPVtdO251bGwhPT1jJiZjIT09ZDspe3ZhciBoPWMsaz1oLmFsdGVybmF0ZSxsPWguc3RhdGVOb2RlO2lmKG51bGwhPT1rJiZrPT09ZClicmVhazs1PT09aC50YWcmJm51bGwhPT1sJiYoaD1sLGU/KGs9S2IoYyxmKSxudWxsIT1rJiZnLnVuc2hpZnQodGYoYyxrLGgpKSk6ZXx8KGs9S2IoYyxmKSxudWxsIT1rJiZnLnB1c2godGYoYyxrLGgpKSkpO2M9Yy5yZXR1cm59MCE9PWcubGVuZ3RoJiZhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmd9KX12YXIgeGY9L1xcclxcbj8vZyx5Zj0vXFx1MDAwMHxcXHVGRkZEL2c7ZnVuY3Rpb24gemYoYSl7cmV0dXJuKFwic3RyaW5nXCI9PT10eXBlb2YgYT9hOlwiXCIrYSkucmVwbGFjZSh4ZixcIlxcblwiKS5yZXBsYWNlKHlmLFwiXCIpfWZ1bmN0aW9uIEFmKGEsYixjKXtiPXpmKGIpO2lmKHpmKGEpIT09YiYmYyl0aHJvdyBFcnJvcihwKDQyNSkpO31mdW5jdGlvbiBCZigpe31cbnZhciBDZj1udWxsLERmPW51bGw7ZnVuY3Rpb24gRWYoYSxiKXtyZXR1cm5cInRleHRhcmVhXCI9PT1hfHxcIm5vc2NyaXB0XCI9PT1hfHxcInN0cmluZ1wiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwibnVtYmVyXCI9PT10eXBlb2YgYi5jaGlsZHJlbnx8XCJvYmplY3RcIj09PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT09Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWx9XG52YXIgRmY9XCJmdW5jdGlvblwiPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDp2b2lkIDAsR2Y9XCJmdW5jdGlvblwiPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6dm9pZCAwLEhmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBQcm9taXNlP1Byb21pc2U6dm9pZCAwLEpmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBxdWV1ZU1pY3JvdGFzaz9xdWV1ZU1pY3JvdGFzazpcInVuZGVmaW5lZFwiIT09dHlwZW9mIEhmP2Z1bmN0aW9uKGEpe3JldHVybiBIZi5yZXNvbHZlKG51bGwpLnRoZW4oYSkuY2F0Y2goSWYpfTpGZjtmdW5jdGlvbiBJZihhKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYTt9KX1cbmZ1bmN0aW9uIEtmKGEsYil7dmFyIGM9YixkPTA7ZG97dmFyIGU9Yy5uZXh0U2libGluZzthLnJlbW92ZUNoaWxkKGMpO2lmKGUmJjg9PT1lLm5vZGVUeXBlKWlmKGM9ZS5kYXRhLFwiLyRcIj09PWMpe2lmKDA9PT1kKXthLnJlbW92ZUNoaWxkKGUpO2JkKGIpO3JldHVybn1kLS19ZWxzZVwiJFwiIT09YyYmXCIkP1wiIT09YyYmXCIkIVwiIT09Y3x8ZCsrO2M9ZX13aGlsZShjKTtiZChiKX1mdW5jdGlvbiBMZihhKXtmb3IoO251bGwhPWE7YT1hLm5leHRTaWJsaW5nKXt2YXIgYj1hLm5vZGVUeXBlO2lmKDE9PT1ifHwzPT09YilicmVhaztpZig4PT09Yil7Yj1hLmRhdGE7aWYoXCIkXCI9PT1ifHxcIiQhXCI9PT1ifHxcIiQ/XCI9PT1iKWJyZWFrO2lmKFwiLyRcIj09PWIpcmV0dXJuIG51bGx9fXJldHVybiBhfVxuZnVuY3Rpb24gTWYoYSl7YT1hLnByZXZpb3VzU2libGluZztmb3IodmFyIGI9MDthOyl7aWYoOD09PWEubm9kZVR5cGUpe3ZhciBjPWEuZGF0YTtpZihcIiRcIj09PWN8fFwiJCFcIj09PWN8fFwiJD9cIj09PWMpe2lmKDA9PT1iKXJldHVybiBhO2ItLX1lbHNlXCIvJFwiPT09YyYmYisrfWE9YS5wcmV2aW91c1NpYmxpbmd9cmV0dXJuIG51bGx9dmFyIE5mPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLE9mPVwiX19yZWFjdEZpYmVyJFwiK05mLFBmPVwiX19yZWFjdFByb3BzJFwiK05mLHVmPVwiX19yZWFjdENvbnRhaW5lciRcIitOZixvZj1cIl9fcmVhY3RFdmVudHMkXCIrTmYsUWY9XCJfX3JlYWN0TGlzdGVuZXJzJFwiK05mLFJmPVwiX19yZWFjdEhhbmRsZXMkXCIrTmY7XG5mdW5jdGlvbiBXYyhhKXt2YXIgYj1hW09mXTtpZihiKXJldHVybiBiO2Zvcih2YXIgYz1hLnBhcmVudE5vZGU7Yzspe2lmKGI9Y1t1Zl18fGNbT2ZdKXtjPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1iLmNoaWxkfHxudWxsIT09YyYmbnVsbCE9PWMuY2hpbGQpZm9yKGE9TWYoYSk7bnVsbCE9PWE7KXtpZihjPWFbT2ZdKXJldHVybiBjO2E9TWYoYSl9cmV0dXJuIGJ9YT1jO2M9YS5wYXJlbnROb2RlfXJldHVybiBudWxsfWZ1bmN0aW9uIENiKGEpe2E9YVtPZl18fGFbdWZdO3JldHVybiFhfHw1IT09YS50YWcmJjYhPT1hLnRhZyYmMTMhPT1hLnRhZyYmMyE9PWEudGFnP251bGw6YX1mdW5jdGlvbiB1ZShhKXtpZig1PT09YS50YWd8fDY9PT1hLnRhZylyZXR1cm4gYS5zdGF0ZU5vZGU7dGhyb3cgRXJyb3IocCgzMykpO31mdW5jdGlvbiBEYihhKXtyZXR1cm4gYVtQZl18fG51bGx9dmFyIFNmPVtdLFRmPS0xO2Z1bmN0aW9uIFVmKGEpe3JldHVybntjdXJyZW50OmF9fVxuZnVuY3Rpb24gRShhKXswPlRmfHwoYS5jdXJyZW50PVNmW1RmXSxTZltUZl09bnVsbCxUZi0tKX1mdW5jdGlvbiBHKGEsYil7VGYrKztTZltUZl09YS5jdXJyZW50O2EuY3VycmVudD1ifXZhciBWZj17fSxIPVVmKFZmKSxXZj1VZighMSksWGY9VmY7ZnVuY3Rpb24gWWYoYSxiKXt2YXIgYz1hLnR5cGUuY29udGV4dFR5cGVzO2lmKCFjKXJldHVybiBWZjt2YXIgZD1hLnN0YXRlTm9kZTtpZihkJiZkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9PT1iKXJldHVybiBkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0O3ZhciBlPXt9LGY7Zm9yKGYgaW4gYyllW2ZdPWJbZl07ZCYmKGE9YS5zdGF0ZU5vZGUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PWIsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1lKTtyZXR1cm4gZX1cbmZ1bmN0aW9uIFpmKGEpe2E9YS5jaGlsZENvbnRleHRUeXBlcztyZXR1cm4gbnVsbCE9PWEmJnZvaWQgMCE9PWF9ZnVuY3Rpb24gJGYoKXtFKFdmKTtFKEgpfWZ1bmN0aW9uIGFnKGEsYixjKXtpZihILmN1cnJlbnQhPT1WZil0aHJvdyBFcnJvcihwKDE2OCkpO0coSCxiKTtHKFdmLGMpfWZ1bmN0aW9uIGJnKGEsYixjKXt2YXIgZD1hLnN0YXRlTm9kZTtiPWIuY2hpbGRDb250ZXh0VHlwZXM7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGQuZ2V0Q2hpbGRDb250ZXh0KXJldHVybiBjO2Q9ZC5nZXRDaGlsZENvbnRleHQoKTtmb3IodmFyIGUgaW4gZClpZighKGUgaW4gYikpdGhyb3cgRXJyb3IocCgxMDgsUmEoYSl8fFwiVW5rbm93blwiLGUpKTtyZXR1cm4gQSh7fSxjLGQpfVxuZnVuY3Rpb24gY2coYSl7YT0oYT1hLnN0YXRlTm9kZSkmJmEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHR8fFZmO1hmPUguY3VycmVudDtHKEgsYSk7RyhXZixXZi5jdXJyZW50KTtyZXR1cm4hMH1mdW5jdGlvbiBkZyhhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7aWYoIWQpdGhyb3cgRXJyb3IocCgxNjkpKTtjPyhhPWJnKGEsYixYZiksZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dD1hLEUoV2YpLEUoSCksRyhILGEpKTpFKFdmKTtHKFdmLGMpfXZhciBlZz1udWxsLGZnPSExLGdnPSExO2Z1bmN0aW9uIGhnKGEpe251bGw9PT1lZz9lZz1bYV06ZWcucHVzaChhKX1mdW5jdGlvbiBpZyhhKXtmZz0hMDtoZyhhKX1cbmZ1bmN0aW9uIGpnKCl7aWYoIWdnJiZudWxsIT09ZWcpe2dnPSEwO3ZhciBhPTAsYj1DO3RyeXt2YXIgYz1lZztmb3IoQz0xO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZD1jW2FdO2RvIGQ9ZCghMCk7d2hpbGUobnVsbCE9PWQpfWVnPW51bGw7Zmc9ITF9Y2F0Y2goZSl7dGhyb3cgbnVsbCE9PWVnJiYoZWc9ZWcuc2xpY2UoYSsxKSksYWMoZmMsamcpLGU7fWZpbmFsbHl7Qz1iLGdnPSExfX1yZXR1cm4gbnVsbH12YXIga2c9W10sbGc9MCxtZz1udWxsLG5nPTAsb2c9W10scGc9MCxxZz1udWxsLHJnPTEsc2c9XCJcIjtmdW5jdGlvbiB0ZyhhLGIpe2tnW2xnKytdPW5nO2tnW2xnKytdPW1nO21nPWE7bmc9Yn1cbmZ1bmN0aW9uIHVnKGEsYixjKXtvZ1twZysrXT1yZztvZ1twZysrXT1zZztvZ1twZysrXT1xZztxZz1hO3ZhciBkPXJnO2E9c2c7dmFyIGU9MzItb2MoZCktMTtkJj1+KDE8PGUpO2MrPTE7dmFyIGY9MzItb2MoYikrZTtpZigzMDxmKXt2YXIgZz1lLWUlNTtmPShkJigxPDxnKS0xKS50b1N0cmluZygzMik7ZD4+PWc7ZS09ZztyZz0xPDwzMi1vYyhiKStlfGM8PGV8ZDtzZz1mK2F9ZWxzZSByZz0xPDxmfGM8PGV8ZCxzZz1hfWZ1bmN0aW9uIHZnKGEpe251bGwhPT1hLnJldHVybiYmKHRnKGEsMSksdWcoYSwxLDApKX1mdW5jdGlvbiB3ZyhhKXtmb3IoO2E9PT1tZzspbWc9a2dbLS1sZ10sa2dbbGddPW51bGwsbmc9a2dbLS1sZ10sa2dbbGddPW51bGw7Zm9yKDthPT09cWc7KXFnPW9nWy0tcGddLG9nW3BnXT1udWxsLHNnPW9nWy0tcGddLG9nW3BnXT1udWxsLHJnPW9nWy0tcGddLG9nW3BnXT1udWxsfXZhciB4Zz1udWxsLHlnPW51bGwsST0hMSx6Zz1udWxsO1xuZnVuY3Rpb24gQWcoYSxiKXt2YXIgYz1CZyg1LG51bGwsbnVsbCwwKTtjLmVsZW1lbnRUeXBlPVwiREVMRVRFRFwiO2Muc3RhdGVOb2RlPWI7Yy5yZXR1cm49YTtiPWEuZGVsZXRpb25zO251bGw9PT1iPyhhLmRlbGV0aW9ucz1bY10sYS5mbGFnc3w9MTYpOmIucHVzaChjKX1cbmZ1bmN0aW9uIENnKGEsYil7c3dpdGNoKGEudGFnKXtjYXNlIDU6dmFyIGM9YS50eXBlO2I9MSE9PWIubm9kZVR5cGV8fGMudG9Mb3dlckNhc2UoKSE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKT9udWxsOmI7cmV0dXJuIG51bGwhPT1iPyhhLnN0YXRlTm9kZT1iLHhnPWEseWc9TGYoYi5maXJzdENoaWxkKSwhMCk6ITE7Y2FzZSA2OnJldHVybiBiPVwiXCI9PT1hLnBlbmRpbmdQcm9wc3x8MyE9PWIubm9kZVR5cGU/bnVsbDpiLG51bGwhPT1iPyhhLnN0YXRlTm9kZT1iLHhnPWEseWc9bnVsbCwhMCk6ITE7Y2FzZSAxMzpyZXR1cm4gYj04IT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI/KGM9bnVsbCE9PXFnP3tpZDpyZyxvdmVyZmxvdzpzZ306bnVsbCxhLm1lbW9pemVkU3RhdGU9e2RlaHlkcmF0ZWQ6Yix0cmVlQ29udGV4dDpjLHJldHJ5TGFuZToxMDczNzQxODI0fSxjPUJnKDE4LG51bGwsbnVsbCwwKSxjLnN0YXRlTm9kZT1iLGMucmV0dXJuPWEsYS5jaGlsZD1jLHhnPWEseWc9XG5udWxsLCEwKTohMTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBEZyhhKXtyZXR1cm4gMCE9PShhLm1vZGUmMSkmJjA9PT0oYS5mbGFncyYxMjgpfWZ1bmN0aW9uIEVnKGEpe2lmKEkpe3ZhciBiPXlnO2lmKGIpe3ZhciBjPWI7aWYoIUNnKGEsYikpe2lmKERnKGEpKXRocm93IEVycm9yKHAoNDE4KSk7Yj1MZihjLm5leHRTaWJsaW5nKTt2YXIgZD14ZztiJiZDZyhhLGIpP0FnKGQsYyk6KGEuZmxhZ3M9YS5mbGFncyYtNDA5N3wyLEk9ITEseGc9YSl9fWVsc2V7aWYoRGcoYSkpdGhyb3cgRXJyb3IocCg0MTgpKTthLmZsYWdzPWEuZmxhZ3MmLTQwOTd8MjtJPSExO3hnPWF9fX1mdW5jdGlvbiBGZyhhKXtmb3IoYT1hLnJldHVybjtudWxsIT09YSYmNSE9PWEudGFnJiYzIT09YS50YWcmJjEzIT09YS50YWc7KWE9YS5yZXR1cm47eGc9YX1cbmZ1bmN0aW9uIEdnKGEpe2lmKGEhPT14ZylyZXR1cm4hMTtpZighSSlyZXR1cm4gRmcoYSksST0hMCwhMTt2YXIgYjsoYj0zIT09YS50YWcpJiYhKGI9NSE9PWEudGFnKSYmKGI9YS50eXBlLGI9XCJoZWFkXCIhPT1iJiZcImJvZHlcIiE9PWImJiFFZihhLnR5cGUsYS5tZW1vaXplZFByb3BzKSk7aWYoYiYmKGI9eWcpKXtpZihEZyhhKSl0aHJvdyBIZygpLEVycm9yKHAoNDE4KSk7Zm9yKDtiOylBZyhhLGIpLGI9TGYoYi5uZXh0U2libGluZyl9RmcoYSk7aWYoMTM9PT1hLnRhZyl7YT1hLm1lbW9pemVkU3RhdGU7YT1udWxsIT09YT9hLmRlaHlkcmF0ZWQ6bnVsbDtpZighYSl0aHJvdyBFcnJvcihwKDMxNykpO2E6e2E9YS5uZXh0U2libGluZztmb3IoYj0wO2E7KXtpZig4PT09YS5ub2RlVHlwZSl7dmFyIGM9YS5kYXRhO2lmKFwiLyRcIj09PWMpe2lmKDA9PT1iKXt5Zz1MZihhLm5leHRTaWJsaW5nKTticmVhayBhfWItLX1lbHNlXCIkXCIhPT1jJiZcIiQhXCIhPT1jJiZcIiQ/XCIhPT1jfHxiKyt9YT1hLm5leHRTaWJsaW5nfXlnPVxubnVsbH19ZWxzZSB5Zz14Zz9MZihhLnN0YXRlTm9kZS5uZXh0U2libGluZyk6bnVsbDtyZXR1cm4hMH1mdW5jdGlvbiBIZygpe2Zvcih2YXIgYT15ZzthOylhPUxmKGEubmV4dFNpYmxpbmcpfWZ1bmN0aW9uIElnKCl7eWc9eGc9bnVsbDtJPSExfWZ1bmN0aW9uIEpnKGEpe251bGw9PT16Zz96Zz1bYV06emcucHVzaChhKX12YXIgS2c9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWc7XG5mdW5jdGlvbiBMZyhhLGIsYyl7YT1jLnJlZjtpZihudWxsIT09YSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGEmJlwib2JqZWN0XCIhPT10eXBlb2YgYSl7aWYoYy5fb3duZXIpe2M9Yy5fb3duZXI7aWYoYyl7aWYoMSE9PWMudGFnKXRocm93IEVycm9yKHAoMzA5KSk7dmFyIGQ9Yy5zdGF0ZU5vZGV9aWYoIWQpdGhyb3cgRXJyb3IocCgxNDcsYSkpO3ZhciBlPWQsZj1cIlwiK2E7aWYobnVsbCE9PWImJm51bGwhPT1iLnJlZiYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGIucmVmJiZiLnJlZi5fc3RyaW5nUmVmPT09ZilyZXR1cm4gYi5yZWY7Yj1mdW5jdGlvbihhKXt2YXIgYj1lLnJlZnM7bnVsbD09PWE/ZGVsZXRlIGJbZl06YltmXT1hfTtiLl9zdHJpbmdSZWY9ZjtyZXR1cm4gYn1pZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IocCgyODQpKTtpZighYy5fb3duZXIpdGhyb3cgRXJyb3IocCgyOTAsYSkpO31yZXR1cm4gYX1cbmZ1bmN0aW9uIE1nKGEsYil7YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYik7dGhyb3cgRXJyb3IocCgzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09YT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGIpLmpvaW4oXCIsIFwiKStcIn1cIjphKSk7fWZ1bmN0aW9uIE5nKGEpe3ZhciBiPWEuX2luaXQ7cmV0dXJuIGIoYS5fcGF5bG9hZCl9XG5mdW5jdGlvbiBPZyhhKXtmdW5jdGlvbiBiKGIsYyl7aWYoYSl7dmFyIGQ9Yi5kZWxldGlvbnM7bnVsbD09PWQ/KGIuZGVsZXRpb25zPVtjXSxiLmZsYWdzfD0xNik6ZC5wdXNoKGMpfX1mdW5jdGlvbiBjKGMsZCl7aWYoIWEpcmV0dXJuIG51bGw7Zm9yKDtudWxsIT09ZDspYihjLGQpLGQ9ZC5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIGQoYSxiKXtmb3IoYT1uZXcgTWFwO251bGwhPT1iOyludWxsIT09Yi5rZXk/YS5zZXQoYi5rZXksYik6YS5zZXQoYi5pbmRleCxiKSxiPWIuc2libGluZztyZXR1cm4gYX1mdW5jdGlvbiBlKGEsYil7YT1QZyhhLGIpO2EuaW5kZXg9MDthLnNpYmxpbmc9bnVsbDtyZXR1cm4gYX1mdW5jdGlvbiBmKGIsYyxkKXtiLmluZGV4PWQ7aWYoIWEpcmV0dXJuIGIuZmxhZ3N8PTEwNDg1NzYsYztkPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1kKXJldHVybiBkPWQuaW5kZXgsZDxjPyhiLmZsYWdzfD0yLGMpOmQ7Yi5mbGFnc3w9MjtyZXR1cm4gY31mdW5jdGlvbiBnKGIpe2EmJlxubnVsbD09PWIuYWx0ZXJuYXRlJiYoYi5mbGFnc3w9Mik7cmV0dXJuIGJ9ZnVuY3Rpb24gaChhLGIsYyxkKXtpZihudWxsPT09Ynx8NiE9PWIudGFnKXJldHVybiBiPVFnKGMsYS5tb2RlLGQpLGIucmV0dXJuPWEsYjtiPWUoYixjKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIGsoYSxiLGMsZCl7dmFyIGY9Yy50eXBlO2lmKGY9PT15YSlyZXR1cm4gbShhLGIsYy5wcm9wcy5jaGlsZHJlbixkLGMua2V5KTtpZihudWxsIT09YiYmKGIuZWxlbWVudFR5cGU9PT1mfHxcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLiQkdHlwZW9mPT09SGEmJk5nKGYpPT09Yi50eXBlKSlyZXR1cm4gZD1lKGIsYy5wcm9wcyksZC5yZWY9TGcoYSxiLGMpLGQucmV0dXJuPWEsZDtkPVJnKGMudHlwZSxjLmtleSxjLnByb3BzLG51bGwsYS5tb2RlLGQpO2QucmVmPUxnKGEsYixjKTtkLnJldHVybj1hO3JldHVybiBkfWZ1bmN0aW9uIGwoYSxiLGMsZCl7aWYobnVsbD09PWJ8fDQhPT1iLnRhZ3x8XG5iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09Yy5jb250YWluZXJJbmZvfHxiLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PWMuaW1wbGVtZW50YXRpb24pcmV0dXJuIGI9U2coYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMuY2hpbGRyZW58fFtdKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIG0oYSxiLGMsZCxmKXtpZihudWxsPT09Ynx8NyE9PWIudGFnKXJldHVybiBiPVRnKGMsYS5tb2RlLGQsZiksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gcShhLGIsYyl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiJiZcIlwiIT09Ynx8XCJudW1iZXJcIj09PXR5cGVvZiBiKXJldHVybiBiPVFnKFwiXCIrYixhLm1vZGUsYyksYi5yZXR1cm49YSxiO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYiYmbnVsbCE9PWIpe3N3aXRjaChiLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBjPVJnKGIudHlwZSxiLmtleSxiLnByb3BzLG51bGwsYS5tb2RlLGMpLFxuYy5yZWY9TGcoYSxudWxsLGIpLGMucmV0dXJuPWEsYztjYXNlIHdhOnJldHVybiBiPVNnKGIsYS5tb2RlLGMpLGIucmV0dXJuPWEsYjtjYXNlIEhhOnZhciBkPWIuX2luaXQ7cmV0dXJuIHEoYSxkKGIuX3BheWxvYWQpLGMpfWlmKGViKGIpfHxLYShiKSlyZXR1cm4gYj1UZyhiLGEubW9kZSxjLG51bGwpLGIucmV0dXJuPWEsYjtNZyhhLGIpfXJldHVybiBudWxsfWZ1bmN0aW9uIHIoYSxiLGMsZCl7dmFyIGU9bnVsbCE9PWI/Yi5rZXk6bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGMmJlwiXCIhPT1jfHxcIm51bWJlclwiPT09dHlwZW9mIGMpcmV0dXJuIG51bGwhPT1lP251bGw6aChhLGIsXCJcIitjLGQpO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWMpe3N3aXRjaChjLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBjLmtleT09PWU/ayhhLGIsYyxkKTpudWxsO2Nhc2Ugd2E6cmV0dXJuIGMua2V5PT09ZT9sKGEsYixjLGQpOm51bGw7Y2FzZSBIYTpyZXR1cm4gZT1jLl9pbml0LHIoYSxcbmIsZShjLl9wYXlsb2FkKSxkKX1pZihlYihjKXx8S2EoYykpcmV0dXJuIG51bGwhPT1lP251bGw6bShhLGIsYyxkLG51bGwpO01nKGEsYyl9cmV0dXJuIG51bGx9ZnVuY3Rpb24geShhLGIsYyxkLGUpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgZCYmXCJcIiE9PWR8fFwibnVtYmVyXCI9PT10eXBlb2YgZClyZXR1cm4gYT1hLmdldChjKXx8bnVsbCxoKGIsYSxcIlwiK2QsZSk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBkJiZudWxsIT09ZCl7c3dpdGNoKGQuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLGsoYixhLGQsZSk7Y2FzZSB3YTpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsbChiLGEsZCxlKTtjYXNlIEhhOnZhciBmPWQuX2luaXQ7cmV0dXJuIHkoYSxiLGMsZihkLl9wYXlsb2FkKSxlKX1pZihlYihkKXx8S2EoZCkpcmV0dXJuIGE9YS5nZXQoYyl8fG51bGwsbShiLGEsZCxlLG51bGwpO01nKGIsZCl9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBuKGUsZyxoLGspe2Zvcih2YXIgbD1udWxsLG09bnVsbCx1PWcsdz1nPTAseD1udWxsO251bGwhPT11JiZ3PGgubGVuZ3RoO3crKyl7dS5pbmRleD53Pyh4PXUsdT1udWxsKTp4PXUuc2libGluZzt2YXIgbj1yKGUsdSxoW3ddLGspO2lmKG51bGw9PT1uKXtudWxsPT09dSYmKHU9eCk7YnJlYWt9YSYmdSYmbnVsbD09PW4uYWx0ZXJuYXRlJiZiKGUsdSk7Zz1mKG4sZyx3KTtudWxsPT09bT9sPW46bS5zaWJsaW5nPW47bT1uO3U9eH1pZih3PT09aC5sZW5ndGgpcmV0dXJuIGMoZSx1KSxJJiZ0ZyhlLHcpLGw7aWYobnVsbD09PXUpe2Zvcig7dzxoLmxlbmd0aDt3KyspdT1xKGUsaFt3XSxrKSxudWxsIT09dSYmKGc9Zih1LGcsdyksbnVsbD09PW0/bD11Om0uc2libGluZz11LG09dSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mb3IodT1kKGUsdSk7dzxoLmxlbmd0aDt3KyspeD15KHUsZSx3LGhbd10sayksbnVsbCE9PXgmJihhJiZudWxsIT09eC5hbHRlcm5hdGUmJnUuZGVsZXRlKG51bGw9PT1cbngua2V5P3c6eC5rZXkpLGc9Zih4LGcsdyksbnVsbD09PW0/bD14Om0uc2libGluZz14LG09eCk7YSYmdS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiKGUsYSl9KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZ1bmN0aW9uIHQoZSxnLGgsayl7dmFyIGw9S2EoaCk7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGwpdGhyb3cgRXJyb3IocCgxNTApKTtoPWwuY2FsbChoKTtpZihudWxsPT1oKXRocm93IEVycm9yKHAoMTUxKSk7Zm9yKHZhciB1PWw9bnVsbCxtPWcsdz1nPTAseD1udWxsLG49aC5uZXh0KCk7bnVsbCE9PW0mJiFuLmRvbmU7dysrLG49aC5uZXh0KCkpe20uaW5kZXg+dz8oeD1tLG09bnVsbCk6eD1tLnNpYmxpbmc7dmFyIHQ9cihlLG0sbi52YWx1ZSxrKTtpZihudWxsPT09dCl7bnVsbD09PW0mJihtPXgpO2JyZWFrfWEmJm0mJm51bGw9PT10LmFsdGVybmF0ZSYmYihlLG0pO2c9Zih0LGcsdyk7bnVsbD09PXU/bD10OnUuc2libGluZz10O3U9dDttPXh9aWYobi5kb25lKXJldHVybiBjKGUsXG5tKSxJJiZ0ZyhlLHcpLGw7aWYobnVsbD09PW0pe2Zvcig7IW4uZG9uZTt3Kyssbj1oLm5leHQoKSluPXEoZSxuLnZhbHVlLGspLG51bGwhPT1uJiYoZz1mKG4sZyx3KSxudWxsPT09dT9sPW46dS5zaWJsaW5nPW4sdT1uKTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZvcihtPWQoZSxtKTshbi5kb25lO3crKyxuPWgubmV4dCgpKW49eShtLGUsdyxuLnZhbHVlLGspLG51bGwhPT1uJiYoYSYmbnVsbCE9PW4uYWx0ZXJuYXRlJiZtLmRlbGV0ZShudWxsPT09bi5rZXk/dzpuLmtleSksZz1mKG4sZyx3KSxudWxsPT09dT9sPW46dS5zaWJsaW5nPW4sdT1uKTthJiZtLmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO0kmJnRnKGUsdyk7cmV0dXJuIGx9ZnVuY3Rpb24gSihhLGQsZixoKXtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLnR5cGU9PT15YSYmbnVsbD09PWYua2V5JiYoZj1mLnByb3BzLmNoaWxkcmVuKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mKXtzd2l0Y2goZi4kJHR5cGVvZil7Y2FzZSB2YTphOntmb3IodmFyIGs9XG5mLmtleSxsPWQ7bnVsbCE9PWw7KXtpZihsLmtleT09PWspe2s9Zi50eXBlO2lmKGs9PT15YSl7aWYoNz09PWwudGFnKXtjKGEsbC5zaWJsaW5nKTtkPWUobCxmLnByb3BzLmNoaWxkcmVuKTtkLnJldHVybj1hO2E9ZDticmVhayBhfX1lbHNlIGlmKGwuZWxlbWVudFR5cGU9PT1rfHxcIm9iamVjdFwiPT09dHlwZW9mIGsmJm51bGwhPT1rJiZrLiQkdHlwZW9mPT09SGEmJk5nKGspPT09bC50eXBlKXtjKGEsbC5zaWJsaW5nKTtkPWUobCxmLnByb3BzKTtkLnJlZj1MZyhhLGwsZik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1jKGEsbCk7YnJlYWt9ZWxzZSBiKGEsbCk7bD1sLnNpYmxpbmd9Zi50eXBlPT09eWE/KGQ9VGcoZi5wcm9wcy5jaGlsZHJlbixhLm1vZGUsaCxmLmtleSksZC5yZXR1cm49YSxhPWQpOihoPVJnKGYudHlwZSxmLmtleSxmLnByb3BzLG51bGwsYS5tb2RlLGgpLGgucmVmPUxnKGEsZCxmKSxoLnJldHVybj1hLGE9aCl9cmV0dXJuIGcoYSk7Y2FzZSB3YTphOntmb3IobD1mLmtleTtudWxsIT09XG5kOyl7aWYoZC5rZXk9PT1sKWlmKDQ9PT1kLnRhZyYmZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PWYuY29udGFpbmVySW5mbyYmZC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb249PT1mLmltcGxlbWVudGF0aW9uKXtjKGEsZC5zaWJsaW5nKTtkPWUoZCxmLmNoaWxkcmVufHxbXSk7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1lbHNle2MoYSxkKTticmVha31lbHNlIGIoYSxkKTtkPWQuc2libGluZ31kPVNnKGYsYS5tb2RlLGgpO2QucmV0dXJuPWE7YT1kfXJldHVybiBnKGEpO2Nhc2UgSGE6cmV0dXJuIGw9Zi5faW5pdCxKKGEsZCxsKGYuX3BheWxvYWQpLGgpfWlmKGViKGYpKXJldHVybiBuKGEsZCxmLGgpO2lmKEthKGYpKXJldHVybiB0KGEsZCxmLGgpO01nKGEsZil9cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBmJiZcIlwiIT09Znx8XCJudW1iZXJcIj09PXR5cGVvZiBmPyhmPVwiXCIrZixudWxsIT09ZCYmNj09PWQudGFnPyhjKGEsZC5zaWJsaW5nKSxkPWUoZCxmKSxkLnJldHVybj1hLGE9ZCk6XG4oYyhhLGQpLGQ9UWcoZixhLm1vZGUsaCksZC5yZXR1cm49YSxhPWQpLGcoYSkpOmMoYSxkKX1yZXR1cm4gSn12YXIgVWc9T2coITApLFZnPU9nKCExKSxXZz1VZihudWxsKSxYZz1udWxsLFlnPW51bGwsWmc9bnVsbDtmdW5jdGlvbiAkZygpe1pnPVlnPVhnPW51bGx9ZnVuY3Rpb24gYWgoYSl7dmFyIGI9V2cuY3VycmVudDtFKFdnKTthLl9jdXJyZW50VmFsdWU9Yn1mdW5jdGlvbiBiaChhLGIsYyl7Zm9yKDtudWxsIT09YTspe3ZhciBkPWEuYWx0ZXJuYXRlOyhhLmNoaWxkTGFuZXMmYikhPT1iPyhhLmNoaWxkTGFuZXN8PWIsbnVsbCE9PWQmJihkLmNoaWxkTGFuZXN8PWIpKTpudWxsIT09ZCYmKGQuY2hpbGRMYW5lcyZiKSE9PWImJihkLmNoaWxkTGFuZXN8PWIpO2lmKGE9PT1jKWJyZWFrO2E9YS5yZXR1cm59fVxuZnVuY3Rpb24gY2goYSxiKXtYZz1hO1pnPVlnPW51bGw7YT1hLmRlcGVuZGVuY2llcztudWxsIT09YSYmbnVsbCE9PWEuZmlyc3RDb250ZXh0JiYoMCE9PShhLmxhbmVzJmIpJiYoZGg9ITApLGEuZmlyc3RDb250ZXh0PW51bGwpfWZ1bmN0aW9uIGVoKGEpe3ZhciBiPWEuX2N1cnJlbnRWYWx1ZTtpZihaZyE9PWEpaWYoYT17Y29udGV4dDphLG1lbW9pemVkVmFsdWU6YixuZXh0Om51bGx9LG51bGw9PT1ZZyl7aWYobnVsbD09PVhnKXRocm93IEVycm9yKHAoMzA4KSk7WWc9YTtYZy5kZXBlbmRlbmNpZXM9e2xhbmVzOjAsZmlyc3RDb250ZXh0OmF9fWVsc2UgWWc9WWcubmV4dD1hO3JldHVybiBifXZhciBmaD1udWxsO2Z1bmN0aW9uIGdoKGEpe251bGw9PT1maD9maD1bYV06ZmgucHVzaChhKX1cbmZ1bmN0aW9uIGhoKGEsYixjLGQpe3ZhciBlPWIuaW50ZXJsZWF2ZWQ7bnVsbD09PWU/KGMubmV4dD1jLGdoKGIpKTooYy5uZXh0PWUubmV4dCxlLm5leHQ9Yyk7Yi5pbnRlcmxlYXZlZD1jO3JldHVybiBpaChhLGQpfWZ1bmN0aW9uIGloKGEsYil7YS5sYW5lc3w9Yjt2YXIgYz1hLmFsdGVybmF0ZTtudWxsIT09YyYmKGMubGFuZXN8PWIpO2M9YTtmb3IoYT1hLnJldHVybjtudWxsIT09YTspYS5jaGlsZExhbmVzfD1iLGM9YS5hbHRlcm5hdGUsbnVsbCE9PWMmJihjLmNoaWxkTGFuZXN8PWIpLGM9YSxhPWEucmV0dXJuO3JldHVybiAzPT09Yy50YWc/Yy5zdGF0ZU5vZGU6bnVsbH12YXIgamg9ITE7ZnVuY3Rpb24ga2goYSl7YS51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEubWVtb2l6ZWRTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6bnVsbCxsYXN0QmFzZVVwZGF0ZTpudWxsLHNoYXJlZDp7cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MH0sZWZmZWN0czpudWxsfX1cbmZ1bmN0aW9uIGxoKGEsYil7YT1hLnVwZGF0ZVF1ZXVlO2IudXBkYXRlUXVldWU9PT1hJiYoYi51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTphLmZpcnN0QmFzZVVwZGF0ZSxsYXN0QmFzZVVwZGF0ZTphLmxhc3RCYXNlVXBkYXRlLHNoYXJlZDphLnNoYXJlZCxlZmZlY3RzOmEuZWZmZWN0c30pfWZ1bmN0aW9uIG1oKGEsYil7cmV0dXJue2V2ZW50VGltZTphLGxhbmU6Yix0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fVxuZnVuY3Rpb24gbmgoYSxiLGMpe3ZhciBkPWEudXBkYXRlUXVldWU7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7ZD1kLnNoYXJlZDtpZigwIT09KEsmMikpe3ZhciBlPWQucGVuZGluZztudWxsPT09ZT9iLm5leHQ9YjooYi5uZXh0PWUubmV4dCxlLm5leHQ9Yik7ZC5wZW5kaW5nPWI7cmV0dXJuIGloKGEsYyl9ZT1kLmludGVybGVhdmVkO251bGw9PT1lPyhiLm5leHQ9YixnaChkKSk6KGIubmV4dD1lLm5leHQsZS5uZXh0PWIpO2QuaW50ZXJsZWF2ZWQ9YjtyZXR1cm4gaWgoYSxjKX1mdW5jdGlvbiBvaChhLGIsYyl7Yj1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iJiYoYj1iLnNoYXJlZCwwIT09KGMmNDE5NDI0MCkpKXt2YXIgZD1iLmxhbmVzO2QmPWEucGVuZGluZ0xhbmVzO2N8PWQ7Yi5sYW5lcz1jO0NjKGEsYyl9fVxuZnVuY3Rpb24gcGgoYSxiKXt2YXIgYz1hLnVwZGF0ZVF1ZXVlLGQ9YS5hbHRlcm5hdGU7aWYobnVsbCE9PWQmJihkPWQudXBkYXRlUXVldWUsYz09PWQpKXt2YXIgZT1udWxsLGY9bnVsbDtjPWMuZmlyc3RCYXNlVXBkYXRlO2lmKG51bGwhPT1jKXtkb3t2YXIgZz17ZXZlbnRUaW1lOmMuZXZlbnRUaW1lLGxhbmU6Yy5sYW5lLHRhZzpjLnRhZyxwYXlsb2FkOmMucGF5bG9hZCxjYWxsYmFjazpjLmNhbGxiYWNrLG5leHQ6bnVsbH07bnVsbD09PWY/ZT1mPWc6Zj1mLm5leHQ9ZztjPWMubmV4dH13aGlsZShudWxsIT09Yyk7bnVsbD09PWY/ZT1mPWI6Zj1mLm5leHQ9Yn1lbHNlIGU9Zj1iO2M9e2Jhc2VTdGF0ZTpkLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6ZSxsYXN0QmFzZVVwZGF0ZTpmLHNoYXJlZDpkLnNoYXJlZCxlZmZlY3RzOmQuZWZmZWN0c307YS51cGRhdGVRdWV1ZT1jO3JldHVybn1hPWMubGFzdEJhc2VVcGRhdGU7bnVsbD09PWE/Yy5maXJzdEJhc2VVcGRhdGU9YjphLm5leHQ9XG5iO2MubGFzdEJhc2VVcGRhdGU9Yn1cbmZ1bmN0aW9uIHFoKGEsYixjLGQpe3ZhciBlPWEudXBkYXRlUXVldWU7amg9ITE7dmFyIGY9ZS5maXJzdEJhc2VVcGRhdGUsZz1lLmxhc3RCYXNlVXBkYXRlLGg9ZS5zaGFyZWQucGVuZGluZztpZihudWxsIT09aCl7ZS5zaGFyZWQucGVuZGluZz1udWxsO3ZhciBrPWgsbD1rLm5leHQ7ay5uZXh0PW51bGw7bnVsbD09PWc/Zj1sOmcubmV4dD1sO2c9azt2YXIgbT1hLmFsdGVybmF0ZTtudWxsIT09bSYmKG09bS51cGRhdGVRdWV1ZSxoPW0ubGFzdEJhc2VVcGRhdGUsaCE9PWcmJihudWxsPT09aD9tLmZpcnN0QmFzZVVwZGF0ZT1sOmgubmV4dD1sLG0ubGFzdEJhc2VVcGRhdGU9aykpfWlmKG51bGwhPT1mKXt2YXIgcT1lLmJhc2VTdGF0ZTtnPTA7bT1sPWs9bnVsbDtoPWY7ZG97dmFyIHI9aC5sYW5lLHk9aC5ldmVudFRpbWU7aWYoKGQmcik9PT1yKXtudWxsIT09bSYmKG09bS5uZXh0PXtldmVudFRpbWU6eSxsYW5lOjAsdGFnOmgudGFnLHBheWxvYWQ6aC5wYXlsb2FkLGNhbGxiYWNrOmguY2FsbGJhY2ssXG5uZXh0Om51bGx9KTthOnt2YXIgbj1hLHQ9aDtyPWI7eT1jO3N3aXRjaCh0LnRhZyl7Y2FzZSAxOm49dC5wYXlsb2FkO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuKXtxPW4uY2FsbCh5LHEscik7YnJlYWsgYX1xPW47YnJlYWsgYTtjYXNlIDM6bi5mbGFncz1uLmZsYWdzJi02NTUzN3wxMjg7Y2FzZSAwOm49dC5wYXlsb2FkO3I9XCJmdW5jdGlvblwiPT09dHlwZW9mIG4/bi5jYWxsKHkscSxyKTpuO2lmKG51bGw9PT1yfHx2b2lkIDA9PT1yKWJyZWFrIGE7cT1BKHt9LHEscik7YnJlYWsgYTtjYXNlIDI6amg9ITB9fW51bGwhPT1oLmNhbGxiYWNrJiYwIT09aC5sYW5lJiYoYS5mbGFnc3w9NjQscj1lLmVmZmVjdHMsbnVsbD09PXI/ZS5lZmZlY3RzPVtoXTpyLnB1c2goaCkpfWVsc2UgeT17ZXZlbnRUaW1lOnksbGFuZTpyLHRhZzpoLnRhZyxwYXlsb2FkOmgucGF5bG9hZCxjYWxsYmFjazpoLmNhbGxiYWNrLG5leHQ6bnVsbH0sbnVsbD09PW0/KGw9bT15LGs9cSk6bT1tLm5leHQ9eSxnfD1yO1xuaD1oLm5leHQ7aWYobnVsbD09PWgpaWYoaD1lLnNoYXJlZC5wZW5kaW5nLG51bGw9PT1oKWJyZWFrO2Vsc2Ugcj1oLGg9ci5uZXh0LHIubmV4dD1udWxsLGUubGFzdEJhc2VVcGRhdGU9cixlLnNoYXJlZC5wZW5kaW5nPW51bGx9d2hpbGUoMSk7bnVsbD09PW0mJihrPXEpO2UuYmFzZVN0YXRlPWs7ZS5maXJzdEJhc2VVcGRhdGU9bDtlLmxhc3RCYXNlVXBkYXRlPW07Yj1lLnNoYXJlZC5pbnRlcmxlYXZlZDtpZihudWxsIT09Yil7ZT1iO2RvIGd8PWUubGFuZSxlPWUubmV4dDt3aGlsZShlIT09Yil9ZWxzZSBudWxsPT09ZiYmKGUuc2hhcmVkLmxhbmVzPTApO3JofD1nO2EubGFuZXM9ZzthLm1lbW9pemVkU3RhdGU9cX19XG5mdW5jdGlvbiBzaChhLGIsYyl7YT1iLmVmZmVjdHM7Yi5lZmZlY3RzPW51bGw7aWYobnVsbCE9PWEpZm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGQ9YVtiXSxlPWQuY2FsbGJhY2s7aWYobnVsbCE9PWUpe2QuY2FsbGJhY2s9bnVsbDtkPWM7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGUpdGhyb3cgRXJyb3IocCgxOTEsZSkpO2UuY2FsbChkKX19fXZhciB0aD17fSx1aD1VZih0aCksdmg9VWYodGgpLHdoPVVmKHRoKTtmdW5jdGlvbiB4aChhKXtpZihhPT09dGgpdGhyb3cgRXJyb3IocCgxNzQpKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHloKGEsYil7Ryh3aCxiKTtHKHZoLGEpO0codWgsdGgpO2E9Yi5ub2RlVHlwZTtzd2l0Y2goYSl7Y2FzZSA5OmNhc2UgMTE6Yj0oYj1iLmRvY3VtZW50RWxlbWVudCk/Yi5uYW1lc3BhY2VVUkk6bGIobnVsbCxcIlwiKTticmVhaztkZWZhdWx0OmE9OD09PWE/Yi5wYXJlbnROb2RlOmIsYj1hLm5hbWVzcGFjZVVSSXx8bnVsbCxhPWEudGFnTmFtZSxiPWxiKGIsYSl9RSh1aCk7Ryh1aCxiKX1mdW5jdGlvbiB6aCgpe0UodWgpO0UodmgpO0Uod2gpfWZ1bmN0aW9uIEFoKGEpe3hoKHdoLmN1cnJlbnQpO3ZhciBiPXhoKHVoLmN1cnJlbnQpO3ZhciBjPWxiKGIsYS50eXBlKTtiIT09YyYmKEcodmgsYSksRyh1aCxjKSl9ZnVuY3Rpb24gQmgoYSl7dmguY3VycmVudD09PWEmJihFKHVoKSxFKHZoKSl9dmFyIEw9VWYoMCk7XG5mdW5jdGlvbiBDaChhKXtmb3IodmFyIGI9YTtudWxsIT09Yjspe2lmKDEzPT09Yi50YWcpe3ZhciBjPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YyYmKGM9Yy5kZWh5ZHJhdGVkLG51bGw9PT1jfHxcIiQ/XCI9PT1jLmRhdGF8fFwiJCFcIj09PWMuZGF0YSkpcmV0dXJuIGJ9ZWxzZSBpZigxOT09PWIudGFnJiZ2b2lkIDAhPT1iLm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXIpe2lmKDAhPT0oYi5mbGFncyYxMjgpKXJldHVybiBifWVsc2UgaWYobnVsbCE9PWIuY2hpbGQpe2IuY2hpbGQucmV0dXJuPWI7Yj1iLmNoaWxkO2NvbnRpbnVlfWlmKGI9PT1hKWJyZWFrO2Zvcig7bnVsbD09PWIuc2libGluZzspe2lmKG51bGw9PT1iLnJldHVybnx8Yi5yZXR1cm49PT1hKXJldHVybiBudWxsO2I9Yi5yZXR1cm59Yi5zaWJsaW5nLnJldHVybj1iLnJldHVybjtiPWIuc2libGluZ31yZXR1cm4gbnVsbH12YXIgRGg9W107XG5mdW5jdGlvbiBFaCgpe2Zvcih2YXIgYT0wO2E8RGgubGVuZ3RoO2ErKylEaFthXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeT1udWxsO0RoLmxlbmd0aD0wfXZhciBGaD11YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLEdoPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLEhoPTAsTT1udWxsLE49bnVsbCxPPW51bGwsSWg9ITEsSmg9ITEsS2g9MCxMaD0wO2Z1bmN0aW9uIFAoKXt0aHJvdyBFcnJvcihwKDMyMSkpO31mdW5jdGlvbiBNaChhLGIpe2lmKG51bGw9PT1iKXJldHVybiExO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGgmJmM8YS5sZW5ndGg7YysrKWlmKCFIZShhW2NdLGJbY10pKXJldHVybiExO3JldHVybiEwfVxuZnVuY3Rpb24gTmgoYSxiLGMsZCxlLGYpe0hoPWY7TT1iO2IubWVtb2l6ZWRTdGF0ZT1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtiLmxhbmVzPTA7RmguY3VycmVudD1udWxsPT09YXx8bnVsbD09PWEubWVtb2l6ZWRTdGF0ZT9PaDpQaDthPWMoZCxlKTtpZihKaCl7Zj0wO2Rve0poPSExO0toPTA7aWYoMjU8PWYpdGhyb3cgRXJyb3IocCgzMDEpKTtmKz0xO089Tj1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtGaC5jdXJyZW50PVFoO2E9YyhkLGUpfXdoaWxlKEpoKX1GaC5jdXJyZW50PVJoO2I9bnVsbCE9PU4mJm51bGwhPT1OLm5leHQ7SGg9MDtPPU49TT1udWxsO0loPSExO2lmKGIpdGhyb3cgRXJyb3IocCgzMDApKTtyZXR1cm4gYX1mdW5jdGlvbiBTaCgpe3ZhciBhPTAhPT1LaDtLaD0wO3JldHVybiBhfVxuZnVuY3Rpb24gVGgoKXt2YXIgYT17bWVtb2l6ZWRTdGF0ZTpudWxsLGJhc2VTdGF0ZTpudWxsLGJhc2VRdWV1ZTpudWxsLHF1ZXVlOm51bGwsbmV4dDpudWxsfTtudWxsPT09Tz9NLm1lbW9pemVkU3RhdGU9Tz1hOk89Ty5uZXh0PWE7cmV0dXJuIE99ZnVuY3Rpb24gVWgoKXtpZihudWxsPT09Til7dmFyIGE9TS5hbHRlcm5hdGU7YT1udWxsIT09YT9hLm1lbW9pemVkU3RhdGU6bnVsbH1lbHNlIGE9Ti5uZXh0O3ZhciBiPW51bGw9PT1PP00ubWVtb2l6ZWRTdGF0ZTpPLm5leHQ7aWYobnVsbCE9PWIpTz1iLE49YTtlbHNle2lmKG51bGw9PT1hKXRocm93IEVycm9yKHAoMzEwKSk7Tj1hO2E9e21lbW9pemVkU3RhdGU6Ti5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpOLmJhc2VTdGF0ZSxiYXNlUXVldWU6Ti5iYXNlUXVldWUscXVldWU6Ti5xdWV1ZSxuZXh0Om51bGx9O251bGw9PT1PP00ubWVtb2l6ZWRTdGF0ZT1PPWE6Tz1PLm5leHQ9YX1yZXR1cm4gT31cbmZ1bmN0aW9uIFZoKGEsYil7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGI/YihhKTpifVxuZnVuY3Rpb24gV2goYSl7dmFyIGI9VWgoKSxjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IocCgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1OLGU9ZC5iYXNlUXVldWUsZj1jLnBlbmRpbmc7aWYobnVsbCE9PWYpe2lmKG51bGwhPT1lKXt2YXIgZz1lLm5leHQ7ZS5uZXh0PWYubmV4dDtmLm5leHQ9Z31kLmJhc2VRdWV1ZT1lPWY7Yy5wZW5kaW5nPW51bGx9aWYobnVsbCE9PWUpe2Y9ZS5uZXh0O2Q9ZC5iYXNlU3RhdGU7dmFyIGg9Zz1udWxsLGs9bnVsbCxsPWY7ZG97dmFyIG09bC5sYW5lO2lmKChIaCZtKT09PW0pbnVsbCE9PWsmJihrPWsubmV4dD17bGFuZTowLGFjdGlvbjpsLmFjdGlvbixoYXNFYWdlclN0YXRlOmwuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOmwuZWFnZXJTdGF0ZSxuZXh0Om51bGx9KSxkPWwuaGFzRWFnZXJTdGF0ZT9sLmVhZ2VyU3RhdGU6YShkLGwuYWN0aW9uKTtlbHNle3ZhciBxPXtsYW5lOm0sYWN0aW9uOmwuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6bC5oYXNFYWdlclN0YXRlLFxuZWFnZXJTdGF0ZTpsLmVhZ2VyU3RhdGUsbmV4dDpudWxsfTtudWxsPT09az8oaD1rPXEsZz1kKTprPWsubmV4dD1xO00ubGFuZXN8PW07cmh8PW19bD1sLm5leHR9d2hpbGUobnVsbCE9PWwmJmwhPT1mKTtudWxsPT09az9nPWQ6ay5uZXh0PWg7SGUoZCxiLm1lbW9pemVkU3RhdGUpfHwoZGg9ITApO2IubWVtb2l6ZWRTdGF0ZT1kO2IuYmFzZVN0YXRlPWc7Yi5iYXNlUXVldWU9aztjLmxhc3RSZW5kZXJlZFN0YXRlPWR9YT1jLmludGVybGVhdmVkO2lmKG51bGwhPT1hKXtlPWE7ZG8gZj1lLmxhbmUsTS5sYW5lc3w9ZixyaHw9ZixlPWUubmV4dDt3aGlsZShlIT09YSl9ZWxzZSBudWxsPT09ZSYmKGMubGFuZXM9MCk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxjLmRpc3BhdGNoXX1cbmZ1bmN0aW9uIFhoKGEpe3ZhciBiPVVoKCksYz1iLnF1ZXVlO2lmKG51bGw9PT1jKXRocm93IEVycm9yKHAoMzExKSk7Yy5sYXN0UmVuZGVyZWRSZWR1Y2VyPWE7dmFyIGQ9Yy5kaXNwYXRjaCxlPWMucGVuZGluZyxmPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZSl7Yy5wZW5kaW5nPW51bGw7dmFyIGc9ZT1lLm5leHQ7ZG8gZj1hKGYsZy5hY3Rpb24pLGc9Zy5uZXh0O3doaWxlKGchPT1lKTtIZShmLGIubWVtb2l6ZWRTdGF0ZSl8fChkaD0hMCk7Yi5tZW1vaXplZFN0YXRlPWY7bnVsbD09PWIuYmFzZVF1ZXVlJiYoYi5iYXNlU3RhdGU9Zik7Yy5sYXN0UmVuZGVyZWRTdGF0ZT1mfXJldHVybltmLGRdfWZ1bmN0aW9uIFloKCl7fVxuZnVuY3Rpb24gWmgoYSxiKXt2YXIgYz1NLGQ9VWgoKSxlPWIoKSxmPSFIZShkLm1lbW9pemVkU3RhdGUsZSk7ZiYmKGQubWVtb2l6ZWRTdGF0ZT1lLGRoPSEwKTtkPWQucXVldWU7JGgoYWkuYmluZChudWxsLGMsZCxhKSxbYV0pO2lmKGQuZ2V0U25hcHNob3QhPT1ifHxmfHxudWxsIT09TyYmTy5tZW1vaXplZFN0YXRlLnRhZyYxKXtjLmZsYWdzfD0yMDQ4O2JpKDksY2kuYmluZChudWxsLGMsZCxlLGIpLHZvaWQgMCxudWxsKTtpZihudWxsPT09USl0aHJvdyBFcnJvcihwKDM0OSkpOzAhPT0oSGgmMzApfHxkaShjLGIsZSl9cmV0dXJuIGV9ZnVuY3Rpb24gZGkoYSxiLGMpe2EuZmxhZ3N8PTE2Mzg0O2E9e2dldFNuYXBzaG90OmIsdmFsdWU6Y307Yj1NLnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LE0udXBkYXRlUXVldWU9YixiLnN0b3Jlcz1bYV0pOihjPWIuc3RvcmVzLG51bGw9PT1jP2Iuc3RvcmVzPVthXTpjLnB1c2goYSkpfVxuZnVuY3Rpb24gY2koYSxiLGMsZCl7Yi52YWx1ZT1jO2IuZ2V0U25hcHNob3Q9ZDtlaShiKSYmZmkoYSl9ZnVuY3Rpb24gYWkoYSxiLGMpe3JldHVybiBjKGZ1bmN0aW9uKCl7ZWkoYikmJmZpKGEpfSl9ZnVuY3Rpb24gZWkoYSl7dmFyIGI9YS5nZXRTbmFwc2hvdDthPWEudmFsdWU7dHJ5e3ZhciBjPWIoKTtyZXR1cm4hSGUoYSxjKX1jYXRjaChkKXtyZXR1cm4hMH19ZnVuY3Rpb24gZmkoYSl7dmFyIGI9aWgoYSwxKTtudWxsIT09YiYmZ2koYixhLDEsLTEpfVxuZnVuY3Rpb24gaGkoYSl7dmFyIGI9VGgoKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSYmKGE9YSgpKTtiLm1lbW9pemVkU3RhdGU9Yi5iYXNlU3RhdGU9YTthPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjpWaCxsYXN0UmVuZGVyZWRTdGF0ZTphfTtiLnF1ZXVlPWE7YT1hLmRpc3BhdGNoPWlpLmJpbmQobnVsbCxNLGEpO3JldHVybltiLm1lbW9pemVkU3RhdGUsYV19XG5mdW5jdGlvbiBiaShhLGIsYyxkKXthPXt0YWc6YSxjcmVhdGU6YixkZXN0cm95OmMsZGVwczpkLG5leHQ6bnVsbH07Yj1NLnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LE0udXBkYXRlUXVldWU9YixiLmxhc3RFZmZlY3Q9YS5uZXh0PWEpOihjPWIubGFzdEVmZmVjdCxudWxsPT09Yz9iLmxhc3RFZmZlY3Q9YS5uZXh0PWE6KGQ9Yy5uZXh0LGMubmV4dD1hLGEubmV4dD1kLGIubGFzdEVmZmVjdD1hKSk7cmV0dXJuIGF9ZnVuY3Rpb24gamkoKXtyZXR1cm4gVWgoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIGtpKGEsYixjLGQpe3ZhciBlPVRoKCk7TS5mbGFnc3w9YTtlLm1lbW9pemVkU3RhdGU9YmkoMXxiLGMsdm9pZCAwLHZvaWQgMD09PWQ/bnVsbDpkKX1cbmZ1bmN0aW9uIGxpKGEsYixjLGQpe3ZhciBlPVVoKCk7ZD12b2lkIDA9PT1kP251bGw6ZDt2YXIgZj12b2lkIDA7aWYobnVsbCE9PU4pe3ZhciBnPU4ubWVtb2l6ZWRTdGF0ZTtmPWcuZGVzdHJveTtpZihudWxsIT09ZCYmTWgoZCxnLmRlcHMpKXtlLm1lbW9pemVkU3RhdGU9YmkoYixjLGYsZCk7cmV0dXJufX1NLmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1iaSgxfGIsYyxmLGQpfWZ1bmN0aW9uIG1pKGEsYil7cmV0dXJuIGtpKDgzOTA2NTYsOCxhLGIpfWZ1bmN0aW9uICRoKGEsYil7cmV0dXJuIGxpKDIwNDgsOCxhLGIpfWZ1bmN0aW9uIG5pKGEsYil7cmV0dXJuIGxpKDQsMixhLGIpfWZ1bmN0aW9uIG9pKGEsYil7cmV0dXJuIGxpKDQsNCxhLGIpfVxuZnVuY3Rpb24gcGkoYSxiKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYilyZXR1cm4gYT1hKCksYihhKSxmdW5jdGlvbigpe2IobnVsbCl9O2lmKG51bGwhPT1iJiZ2b2lkIDAhPT1iKXJldHVybiBhPWEoKSxiLmN1cnJlbnQ9YSxmdW5jdGlvbigpe2IuY3VycmVudD1udWxsfX1mdW5jdGlvbiBxaShhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIGxpKDQsNCxwaS5iaW5kKG51bGwsYixhKSxjKX1mdW5jdGlvbiByaSgpe31mdW5jdGlvbiBzaShhLGIpe3ZhciBjPVVoKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZNaChiLGRbMV0pKXJldHVybiBkWzBdO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHRpKGEsYil7dmFyIGM9VWgoKTtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBkPWMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCYmbnVsbCE9PWImJk1oKGIsZFsxXSkpcmV0dXJuIGRbMF07YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfWZ1bmN0aW9uIHVpKGEsYixjKXtpZigwPT09KEhoJjIxKSlyZXR1cm4gYS5iYXNlU3RhdGUmJihhLmJhc2VTdGF0ZT0hMSxkaD0hMCksYS5tZW1vaXplZFN0YXRlPWM7SGUoYyxiKXx8KGM9eWMoKSxNLmxhbmVzfD1jLHJofD1jLGEuYmFzZVN0YXRlPSEwKTtyZXR1cm4gYn1mdW5jdGlvbiB2aShhLGIpe3ZhciBjPUM7Qz0wIT09YyYmND5jP2M6NDthKCEwKTt2YXIgZD1HaC50cmFuc2l0aW9uO0doLnRyYW5zaXRpb249e307dHJ5e2EoITEpLGIoKX1maW5hbGx5e0M9YyxHaC50cmFuc2l0aW9uPWR9fWZ1bmN0aW9uIHdpKCl7cmV0dXJuIFVoKCkubWVtb2l6ZWRTdGF0ZX1cbmZ1bmN0aW9uIHhpKGEsYixjKXt2YXIgZD15aShhKTtjPXtsYW5lOmQsYWN0aW9uOmMsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZih6aShhKSlBaShiLGMpO2Vsc2UgaWYoYz1oaChhLGIsYyxkKSxudWxsIT09Yyl7dmFyIGU9UigpO2dpKGMsYSxkLGUpO0JpKGMsYixkKX19XG5mdW5jdGlvbiBpaShhLGIsYyl7dmFyIGQ9eWkoYSksZT17bGFuZTpkLGFjdGlvbjpjLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07aWYoemkoYSkpQWkoYixlKTtlbHNle3ZhciBmPWEuYWx0ZXJuYXRlO2lmKDA9PT1hLmxhbmVzJiYobnVsbD09PWZ8fDA9PT1mLmxhbmVzKSYmKGY9Yi5sYXN0UmVuZGVyZWRSZWR1Y2VyLG51bGwhPT1mKSl0cnl7dmFyIGc9Yi5sYXN0UmVuZGVyZWRTdGF0ZSxoPWYoZyxjKTtlLmhhc0VhZ2VyU3RhdGU9ITA7ZS5lYWdlclN0YXRlPWg7aWYoSGUoaCxnKSl7dmFyIGs9Yi5pbnRlcmxlYXZlZDtudWxsPT09az8oZS5uZXh0PWUsZ2goYikpOihlLm5leHQ9ay5uZXh0LGsubmV4dD1lKTtiLmludGVybGVhdmVkPWU7cmV0dXJufX1jYXRjaChsKXt9ZmluYWxseXt9Yz1oaChhLGIsZSxkKTtudWxsIT09YyYmKGU9UigpLGdpKGMsYSxkLGUpLEJpKGMsYixkKSl9fVxuZnVuY3Rpb24gemkoYSl7dmFyIGI9YS5hbHRlcm5hdGU7cmV0dXJuIGE9PT1NfHxudWxsIT09YiYmYj09PU19ZnVuY3Rpb24gQWkoYSxiKXtKaD1JaD0hMDt2YXIgYz1hLnBlbmRpbmc7bnVsbD09PWM/Yi5uZXh0PWI6KGIubmV4dD1jLm5leHQsYy5uZXh0PWIpO2EucGVuZGluZz1ifWZ1bmN0aW9uIEJpKGEsYixjKXtpZigwIT09KGMmNDE5NDI0MCkpe3ZhciBkPWIubGFuZXM7ZCY9YS5wZW5kaW5nTGFuZXM7Y3w9ZDtiLmxhbmVzPWM7Q2MoYSxjKX19XG52YXIgUmg9e3JlYWRDb250ZXh0OmVoLHVzZUNhbGxiYWNrOlAsdXNlQ29udGV4dDpQLHVzZUVmZmVjdDpQLHVzZUltcGVyYXRpdmVIYW5kbGU6UCx1c2VJbnNlcnRpb25FZmZlY3Q6UCx1c2VMYXlvdXRFZmZlY3Q6UCx1c2VNZW1vOlAsdXNlUmVkdWNlcjpQLHVzZVJlZjpQLHVzZVN0YXRlOlAsdXNlRGVidWdWYWx1ZTpQLHVzZURlZmVycmVkVmFsdWU6UCx1c2VUcmFuc2l0aW9uOlAsdXNlTXV0YWJsZVNvdXJjZTpQLHVzZVN5bmNFeHRlcm5hbFN0b3JlOlAsdXNlSWQ6UCx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LE9oPXtyZWFkQ29udGV4dDplaCx1c2VDYWxsYmFjazpmdW5jdGlvbihhLGIpe1RoKCkubWVtb2l6ZWRTdGF0ZT1bYSx2b2lkIDA9PT1iP251bGw6Yl07cmV0dXJuIGF9LHVzZUNvbnRleHQ6ZWgsdXNlRWZmZWN0Om1pLHVzZUltcGVyYXRpdmVIYW5kbGU6ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiBraSg0MTk0MzA4LFxuNCxwaS5iaW5kKG51bGwsYixhKSxjKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGtpKDQxOTQzMDgsNCxhLGIpfSx1c2VJbnNlcnRpb25FZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4ga2koNCwyLGEsYil9LHVzZU1lbW86ZnVuY3Rpb24oYSxiKXt2YXIgYz1UaCgpO2I9dm9pZCAwPT09Yj9udWxsOmI7YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1UaCgpO2I9dm9pZCAwIT09Yz9jKGIpOmI7ZC5tZW1vaXplZFN0YXRlPWQuYmFzZVN0YXRlPWI7YT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6YSxsYXN0UmVuZGVyZWRTdGF0ZTpifTtkLnF1ZXVlPWE7YT1hLmRpc3BhdGNoPXhpLmJpbmQobnVsbCxNLGEpO3JldHVybltkLm1lbW9pemVkU3RhdGUsYV19LHVzZVJlZjpmdW5jdGlvbihhKXt2YXIgYj1cblRoKCk7YT17Y3VycmVudDphfTtyZXR1cm4gYi5tZW1vaXplZFN0YXRlPWF9LHVzZVN0YXRlOmhpLHVzZURlYnVnVmFsdWU6cmksdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gVGgoKS5tZW1vaXplZFN0YXRlPWF9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1oaSghMSksYj1hWzBdO2E9dmkuYmluZChudWxsLGFbMV0pO1RoKCkubWVtb2l6ZWRTdGF0ZT1hO3JldHVybltiLGFdfSx1c2VNdXRhYmxlU291cmNlOmZ1bmN0aW9uKCl7fSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9TSxlPVRoKCk7aWYoSSl7aWYodm9pZCAwPT09Yyl0aHJvdyBFcnJvcihwKDQwNykpO2M9YygpfWVsc2V7Yz1iKCk7aWYobnVsbD09PVEpdGhyb3cgRXJyb3IocCgzNDkpKTswIT09KEhoJjMwKXx8ZGkoZCxiLGMpfWUubWVtb2l6ZWRTdGF0ZT1jO3ZhciBmPXt2YWx1ZTpjLGdldFNuYXBzaG90OmJ9O2UucXVldWU9ZjttaShhaS5iaW5kKG51bGwsZCxcbmYsYSksW2FdKTtkLmZsYWdzfD0yMDQ4O2JpKDksY2kuYmluZChudWxsLGQsZixjLGIpLHZvaWQgMCxudWxsKTtyZXR1cm4gY30sdXNlSWQ6ZnVuY3Rpb24oKXt2YXIgYT1UaCgpLGI9US5pZGVudGlmaWVyUHJlZml4O2lmKEkpe3ZhciBjPXNnO3ZhciBkPXJnO2M9KGQmfigxPDwzMi1vYyhkKS0xKSkudG9TdHJpbmcoMzIpK2M7Yj1cIjpcIitiK1wiUlwiK2M7Yz1LaCsrOzA8YyYmKGIrPVwiSFwiK2MudG9TdHJpbmcoMzIpKTtiKz1cIjpcIn1lbHNlIGM9TGgrKyxiPVwiOlwiK2IrXCJyXCIrYy50b1N0cmluZygzMikrXCI6XCI7cmV0dXJuIGEubWVtb2l6ZWRTdGF0ZT1ifSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LFBoPXtyZWFkQ29udGV4dDplaCx1c2VDYWxsYmFjazpzaSx1c2VDb250ZXh0OmVoLHVzZUVmZmVjdDokaCx1c2VJbXBlcmF0aXZlSGFuZGxlOnFpLHVzZUluc2VydGlvbkVmZmVjdDpuaSx1c2VMYXlvdXRFZmZlY3Q6b2ksdXNlTWVtbzp0aSx1c2VSZWR1Y2VyOldoLHVzZVJlZjpqaSx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBXaChWaCl9LFxudXNlRGVidWdWYWx1ZTpyaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPVVoKCk7cmV0dXJuIHVpKGIsTi5tZW1vaXplZFN0YXRlLGEpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9V2goVmgpWzBdLGI9VWgoKS5tZW1vaXplZFN0YXRlO3JldHVyblthLGJdfSx1c2VNdXRhYmxlU291cmNlOlloLHVzZVN5bmNFeHRlcm5hbFN0b3JlOlpoLHVzZUlkOndpLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sUWg9e3JlYWRDb250ZXh0OmVoLHVzZUNhbGxiYWNrOnNpLHVzZUNvbnRleHQ6ZWgsdXNlRWZmZWN0OiRoLHVzZUltcGVyYXRpdmVIYW5kbGU6cWksdXNlSW5zZXJ0aW9uRWZmZWN0Om5pLHVzZUxheW91dEVmZmVjdDpvaSx1c2VNZW1vOnRpLHVzZVJlZHVjZXI6WGgsdXNlUmVmOmppLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIFhoKFZoKX0sdXNlRGVidWdWYWx1ZTpyaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPVVoKCk7cmV0dXJuIG51bGw9PT1cbk4/Yi5tZW1vaXplZFN0YXRlPWE6dWkoYixOLm1lbW9pemVkU3RhdGUsYSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1YaChWaClbMF0sYj1VaCgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6WWgsdXNlU3luY0V4dGVybmFsU3RvcmU6WmgsdXNlSWQ6d2ksdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfTtmdW5jdGlvbiBDaShhLGIpe2lmKGEmJmEuZGVmYXVsdFByb3BzKXtiPUEoe30sYik7YT1hLmRlZmF1bHRQcm9wcztmb3IodmFyIGMgaW4gYSl2b2lkIDA9PT1iW2NdJiYoYltjXT1hW2NdKTtyZXR1cm4gYn1yZXR1cm4gYn1mdW5jdGlvbiBEaShhLGIsYyxkKXtiPWEubWVtb2l6ZWRTdGF0ZTtjPWMoZCxiKTtjPW51bGw9PT1jfHx2b2lkIDA9PT1jP2I6QSh7fSxiLGMpO2EubWVtb2l6ZWRTdGF0ZT1jOzA9PT1hLmxhbmVzJiYoYS51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9Yyl9XG52YXIgRWk9e2lzTW91bnRlZDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLl9yZWFjdEludGVybmFscyk/VmIoYSk9PT1hOiExfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGQ9UigpLGU9eWkoYSksZj1taChkLGUpO2YucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZi5jYWxsYmFjaz1jKTtiPW5oKGEsZixlKTtudWxsIT09YiYmKGdpKGIsYSxlLGQpLG9oKGIsYSxlKSl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGQ9UigpLGU9eWkoYSksZj1taChkLGUpO2YudGFnPTE7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO2I9bmgoYSxmLGUpO251bGwhPT1iJiYoZ2koYixhLGUsZCksb2goYixhLGUpKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGEsYil7YT1hLl9yZWFjdEludGVybmFsczt2YXIgYz1SKCksZD1cbnlpKGEpLGU9bWgoYyxkKTtlLnRhZz0yO3ZvaWQgMCE9PWImJm51bGwhPT1iJiYoZS5jYWxsYmFjaz1iKTtiPW5oKGEsZSxkKTtudWxsIT09YiYmKGdpKGIsYSxkLGMpLG9oKGIsYSxkKSl9fTtmdW5jdGlvbiBGaShhLGIsYyxkLGUsZixnKXthPWEuc3RhdGVOb2RlO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnNob3VsZENvbXBvbmVudFVwZGF0ZT9hLnNob3VsZENvbXBvbmVudFVwZGF0ZShkLGYsZyk6Yi5wcm90b3R5cGUmJmIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PyFJZShjLGQpfHwhSWUoZSxmKTohMH1cbmZ1bmN0aW9uIEdpKGEsYixjKXt2YXIgZD0hMSxlPVZmO3ZhciBmPWIuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zj9mPWVoKGYpOihlPVpmKGIpP1hmOkguY3VycmVudCxkPWIuY29udGV4dFR5cGVzLGY9KGQ9bnVsbCE9PWQmJnZvaWQgMCE9PWQpP1lmKGEsZSk6VmYpO2I9bmV3IGIoYyxmKTthLm1lbW9pemVkU3RhdGU9bnVsbCE9PWIuc3RhdGUmJnZvaWQgMCE9PWIuc3RhdGU/Yi5zdGF0ZTpudWxsO2IudXBkYXRlcj1FaTthLnN0YXRlTm9kZT1iO2IuX3JlYWN0SW50ZXJuYWxzPWE7ZCYmKGE9YS5zdGF0ZU5vZGUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PWUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1mKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEhpKGEsYixjLGQpe2E9Yi5zdGF0ZTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO2Iuc3RhdGUhPT1hJiZFaS5lbnF1ZXVlUmVwbGFjZVN0YXRlKGIsYi5zdGF0ZSxudWxsKX1cbmZ1bmN0aW9uIElpKGEsYixjLGQpe3ZhciBlPWEuc3RhdGVOb2RlO2UucHJvcHM9YztlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtlLnJlZnM9e307a2goYSk7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2UuY29udGV4dD1laChmKTooZj1aZihiKT9YZjpILmN1cnJlbnQsZS5jb250ZXh0PVlmKGEsZikpO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2Y9Yi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJihEaShhLGIsZixjKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50fHwoYj1lLnN0YXRlLFxuXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50JiZlLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLGIhPT1lLnN0YXRlJiZFaS5lbnF1ZXVlUmVwbGFjZVN0YXRlKGUsZS5zdGF0ZSxudWxsKSxxaChhLGMsZSxkKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50RGlkTW91bnQmJihhLmZsYWdzfD00MTk0MzA4KX1mdW5jdGlvbiBKaShhLGIpe3RyeXt2YXIgYz1cIlwiLGQ9YjtkbyBjKz1QYShkKSxkPWQucmV0dXJuO3doaWxlKGQpO3ZhciBlPWN9Y2F0Y2goZil7ZT1cIlxcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6IFwiK2YubWVzc2FnZStcIlxcblwiK2Yuc3RhY2t9cmV0dXJue3ZhbHVlOmEsc291cmNlOmIsc3RhY2s6ZSxkaWdlc3Q6bnVsbH19XG5mdW5jdGlvbiBLaShhLGIsYyl7cmV0dXJue3ZhbHVlOmEsc291cmNlOm51bGwsc3RhY2s6bnVsbCE9Yz9jOm51bGwsZGlnZXN0Om51bGwhPWI/YjpudWxsfX1mdW5jdGlvbiBMaShhLGIpe3RyeXtjb25zb2xlLmVycm9yKGIudmFsdWUpfWNhdGNoKGMpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBjO30pfX12YXIgTWk9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtNYXA/V2Vha01hcDpNYXA7ZnVuY3Rpb24gTmkoYSxiLGMpe2M9bWgoLTEsYyk7Yy50YWc9MztjLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH07dmFyIGQ9Yi52YWx1ZTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7T2l8fChPaT0hMCxQaT1kKTtMaShhLGIpfTtyZXR1cm4gY31cbmZ1bmN0aW9uIFFpKGEsYixjKXtjPW1oKC0xLGMpO2MudGFnPTM7dmFyIGQ9YS50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGU9Yi52YWx1ZTtjLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZChlKX07Yy5jYWxsYmFjaz1mdW5jdGlvbigpe0xpKGEsYil9fXZhciBmPWEuc3RhdGVOb2RlO251bGwhPT1mJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5jb21wb25lbnREaWRDYXRjaCYmKGMuY2FsbGJhY2s9ZnVuY3Rpb24oKXtMaShhLGIpO1wiZnVuY3Rpb25cIiE9PXR5cGVvZiBkJiYobnVsbD09PVJpP1JpPW5ldyBTZXQoW3RoaXNdKTpSaS5hZGQodGhpcykpO3ZhciBjPWIuc3RhY2s7dGhpcy5jb21wb25lbnREaWRDYXRjaChiLnZhbHVlLHtjb21wb25lbnRTdGFjazpudWxsIT09Yz9jOlwiXCJ9KX0pO3JldHVybiBjfVxuZnVuY3Rpb24gU2koYSxiLGMpe3ZhciBkPWEucGluZ0NhY2hlO2lmKG51bGw9PT1kKXtkPWEucGluZ0NhY2hlPW5ldyBNaTt2YXIgZT1uZXcgU2V0O2Quc2V0KGIsZSl9ZWxzZSBlPWQuZ2V0KGIpLHZvaWQgMD09PWUmJihlPW5ldyBTZXQsZC5zZXQoYixlKSk7ZS5oYXMoYyl8fChlLmFkZChjKSxhPVRpLmJpbmQobnVsbCxhLGIsYyksYi50aGVuKGEsYSkpfWZ1bmN0aW9uIFVpKGEpe2Rve3ZhciBiO2lmKGI9MTM9PT1hLnRhZyliPWEubWVtb2l6ZWRTdGF0ZSxiPW51bGwhPT1iP251bGwhPT1iLmRlaHlkcmF0ZWQ/ITA6ITE6ITA7aWYoYilyZXR1cm4gYTthPWEucmV0dXJufXdoaWxlKG51bGwhPT1hKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFZpKGEsYixjLGQsZSl7aWYoMD09PShhLm1vZGUmMSkpcmV0dXJuIGE9PT1iP2EuZmxhZ3N8PTY1NTM2OihhLmZsYWdzfD0xMjgsYy5mbGFnc3w9MTMxMDcyLGMuZmxhZ3MmPS01MjgwNSwxPT09Yy50YWcmJihudWxsPT09Yy5hbHRlcm5hdGU/Yy50YWc9MTc6KGI9bWgoLTEsMSksYi50YWc9MixuaChjLGIsMSkpKSxjLmxhbmVzfD0xKSxhO2EuZmxhZ3N8PTY1NTM2O2EubGFuZXM9ZTtyZXR1cm4gYX12YXIgV2k9dWEuUmVhY3RDdXJyZW50T3duZXIsZGg9ITE7ZnVuY3Rpb24gWGkoYSxiLGMsZCl7Yi5jaGlsZD1udWxsPT09YT9WZyhiLG51bGwsYyxkKTpVZyhiLGEuY2hpbGQsYyxkKX1cbmZ1bmN0aW9uIFlpKGEsYixjLGQsZSl7Yz1jLnJlbmRlcjt2YXIgZj1iLnJlZjtjaChiLGUpO2Q9TmgoYSxiLGMsZCxmLGUpO2M9U2goKTtpZihudWxsIT09YSYmIWRoKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTIwNTMsYS5sYW5lcyY9fmUsWmkoYSxiLGUpO0kmJmMmJnZnKGIpO2IuZmxhZ3N8PTE7WGkoYSxiLGQsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiAkaShhLGIsYyxkLGUpe2lmKG51bGw9PT1hKXt2YXIgZj1jLnR5cGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJiFhaihmKSYmdm9pZCAwPT09Zi5kZWZhdWx0UHJvcHMmJm51bGw9PT1jLmNvbXBhcmUmJnZvaWQgMD09PWMuZGVmYXVsdFByb3BzKXJldHVybiBiLnRhZz0xNSxiLnR5cGU9ZixiaihhLGIsZixkLGUpO2E9UmcoYy50eXBlLG51bGwsZCxiLGIubW9kZSxlKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9Zj1hLmNoaWxkO2lmKDA9PT0oYS5sYW5lcyZlKSl7dmFyIGc9Zi5tZW1vaXplZFByb3BzO2M9Yy5jb21wYXJlO2M9bnVsbCE9PWM/YzpJZTtpZihjKGcsZCkmJmEucmVmPT09Yi5yZWYpcmV0dXJuIFppKGEsYixlKX1iLmZsYWdzfD0xO2E9UGcoZixkKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9XG5mdW5jdGlvbiBiaihhLGIsYyxkLGUpe2lmKG51bGwhPT1hKXt2YXIgZj1hLm1lbW9pemVkUHJvcHM7aWYoSWUoZixkKSYmYS5yZWY9PT1iLnJlZilpZihkaD0hMSxiLnBlbmRpbmdQcm9wcz1kPWYsMCE9PShhLmxhbmVzJmUpKTAhPT0oYS5mbGFncyYxMzEwNzIpJiYoZGg9ITApO2Vsc2UgcmV0dXJuIGIubGFuZXM9YS5sYW5lcyxaaShhLGIsZSl9cmV0dXJuIGNqKGEsYixjLGQsZSl9XG5mdW5jdGlvbiBkaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1kLmNoaWxkcmVuLGY9bnVsbCE9PWE/YS5tZW1vaXplZFN0YXRlOm51bGw7aWYoXCJoaWRkZW5cIj09PWQubW9kZSlpZigwPT09KGIubW9kZSYxKSliLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LEcoZWosZmopLGZqfD1jO2Vsc2V7aWYoMD09PShjJjEwNzM3NDE4MjQpKXJldHVybiBhPW51bGwhPT1mP2YuYmFzZUxhbmVzfGM6YyxiLmxhbmVzPWIuY2hpbGRMYW5lcz0xMDczNzQxODI0LGIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOmEsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sYi51cGRhdGVRdWV1ZT1udWxsLEcoZWosZmopLGZqfD1hLG51bGw7Yi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfTtkPW51bGwhPT1mP2YuYmFzZUxhbmVzOmM7Ryhlaixmaik7Zmp8PWR9ZWxzZSBudWxsIT09XG5mPyhkPWYuYmFzZUxhbmVzfGMsYi5tZW1vaXplZFN0YXRlPW51bGwpOmQ9YyxHKGVqLGZqKSxmanw9ZDtYaShhLGIsZSxjKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBnaihhLGIpe3ZhciBjPWIucmVmO2lmKG51bGw9PT1hJiZudWxsIT09Y3x8bnVsbCE9PWEmJmEucmVmIT09YyliLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mn1mdW5jdGlvbiBjaihhLGIsYyxkLGUpe3ZhciBmPVpmKGMpP1hmOkguY3VycmVudDtmPVlmKGIsZik7Y2goYixlKTtjPU5oKGEsYixjLGQsZixlKTtkPVNoKCk7aWYobnVsbCE9PWEmJiFkaClyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZmxhZ3MmPS0yMDUzLGEubGFuZXMmPX5lLFppKGEsYixlKTtJJiZkJiZ2ZyhiKTtiLmZsYWdzfD0xO1hpKGEsYixjLGUpO3JldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gaGooYSxiLGMsZCxlKXtpZihaZihjKSl7dmFyIGY9ITA7Y2coYil9ZWxzZSBmPSExO2NoKGIsZSk7aWYobnVsbD09PWIuc3RhdGVOb2RlKWlqKGEsYiksR2koYixjLGQpLElpKGIsYyxkLGUpLGQ9ITA7ZWxzZSBpZihudWxsPT09YSl7dmFyIGc9Yi5zdGF0ZU5vZGUsaD1iLm1lbW9pemVkUHJvcHM7Zy5wcm9wcz1oO3ZhciBrPWcuY29udGV4dCxsPWMuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBsJiZudWxsIT09bD9sPWVoKGwpOihsPVpmKGMpP1hmOkguY3VycmVudCxsPVlmKGIsbCkpO3ZhciBtPWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLHE9XCJmdW5jdGlvblwiPT09dHlwZW9mIG18fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlO3F8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHxcbihoIT09ZHx8ayE9PWwpJiZIaShiLGcsZCxsKTtqaD0hMTt2YXIgcj1iLm1lbW9pemVkU3RhdGU7Zy5zdGF0ZT1yO3FoKGIsZCxnLGUpO2s9Yi5tZW1vaXplZFN0YXRlO2ghPT1kfHxyIT09a3x8V2YuY3VycmVudHx8amg/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBtJiYoRGkoYixjLG0sZCksaz1iLm1lbW9pemVkU3RhdGUpLChoPWpofHxGaShiLGMsaCxkLHIsayxsKSk/KHF8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudHx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudCYmZy5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSk6XG4oXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSxiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9ayksZy5wcm9wcz1kLGcuc3RhdGU9ayxnLmNvbnRleHQ9bCxkPWgpOihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpLGQ9ITEpfWVsc2V7Zz1iLnN0YXRlTm9kZTtsaChhLGIpO2g9Yi5tZW1vaXplZFByb3BzO2w9Yi50eXBlPT09Yi5lbGVtZW50VHlwZT9oOkNpKGIudHlwZSxoKTtnLnByb3BzPWw7cT1iLnBlbmRpbmdQcm9wcztyPWcuY29udGV4dDtrPWMuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBrJiZudWxsIT09az9rPWVoKGspOihrPVpmKGMpP1hmOkguY3VycmVudCxrPVlmKGIsaykpO3ZhciB5PWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyhtPVwiZnVuY3Rpb25cIj09PXR5cGVvZiB5fHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSl8fFxuXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChoIT09cXx8ciE9PWspJiZIaShiLGcsZCxrKTtqaD0hMTtyPWIubWVtb2l6ZWRTdGF0ZTtnLnN0YXRlPXI7cWgoYixkLGcsZSk7dmFyIG49Yi5tZW1vaXplZFN0YXRlO2ghPT1xfHxyIT09bnx8V2YuY3VycmVudHx8amg/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiB5JiYoRGkoYixjLHksZCksbj1iLm1lbW9pemVkU3RhdGUpLChsPWpofHxGaShiLGMsbCxkLHIsbixrKXx8ITEpPyhtfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZXx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxVcGRhdGUmJmcuY29tcG9uZW50V2lsbFVwZGF0ZShkLG4sayksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJlxuZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShkLG4saykpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZSYmKGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYoYi5mbGFnc3w9MTAyNCkpOihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTEwMjQpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT1uKSxnLnByb3BzPWQsZy5zdGF0ZT1uLGcuY29udGV4dD1rLGQ9bCk6KFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PVxuYS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD0xMDI0KSxkPSExKX1yZXR1cm4gamooYSxiLGMsZCxmLGUpfVxuZnVuY3Rpb24gamooYSxiLGMsZCxlLGYpe2dqKGEsYik7dmFyIGc9MCE9PShiLmZsYWdzJjEyOCk7aWYoIWQmJiFnKXJldHVybiBlJiZkZyhiLGMsITEpLFppKGEsYixmKTtkPWIuc3RhdGVOb2RlO1dpLmN1cnJlbnQ9Yjt2YXIgaD1nJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I/bnVsbDpkLnJlbmRlcigpO2IuZmxhZ3N8PTE7bnVsbCE9PWEmJmc/KGIuY2hpbGQ9VWcoYixhLmNoaWxkLG51bGwsZiksYi5jaGlsZD1VZyhiLG51bGwsaCxmKSk6WGkoYSxiLGgsZik7Yi5tZW1vaXplZFN0YXRlPWQuc3RhdGU7ZSYmZGcoYixjLCEwKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBraihhKXt2YXIgYj1hLnN0YXRlTm9kZTtiLnBlbmRpbmdDb250ZXh0P2FnKGEsYi5wZW5kaW5nQ29udGV4dCxiLnBlbmRpbmdDb250ZXh0IT09Yi5jb250ZXh0KTpiLmNvbnRleHQmJmFnKGEsYi5jb250ZXh0LCExKTt5aChhLGIuY29udGFpbmVySW5mbyl9XG5mdW5jdGlvbiBsaihhLGIsYyxkLGUpe0lnKCk7SmcoZSk7Yi5mbGFnc3w9MjU2O1hpKGEsYixjLGQpO3JldHVybiBiLmNoaWxkfXZhciBtaj17ZGVoeWRyYXRlZDpudWxsLHRyZWVDb250ZXh0Om51bGwscmV0cnlMYW5lOjB9O2Z1bmN0aW9uIG5qKGEpe3JldHVybntiYXNlTGFuZXM6YSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfX1cbmZ1bmN0aW9uIG9qKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPUwuY3VycmVudCxmPSExLGc9MCE9PShiLmZsYWdzJjEyOCksaDsoaD1nKXx8KGg9bnVsbCE9PWEmJm51bGw9PT1hLm1lbW9pemVkU3RhdGU/ITE6MCE9PShlJjIpKTtpZihoKWY9ITAsYi5mbGFncyY9LTEyOTtlbHNlIGlmKG51bGw9PT1hfHxudWxsIT09YS5tZW1vaXplZFN0YXRlKWV8PTE7RyhMLGUmMSk7aWYobnVsbD09PWEpe0VnKGIpO2E9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiYoYT1hLmRlaHlkcmF0ZWQsbnVsbCE9PWEpKXJldHVybiAwPT09KGIubW9kZSYxKT9iLmxhbmVzPTE6XCIkIVwiPT09YS5kYXRhP2IubGFuZXM9ODpiLmxhbmVzPTEwNzM3NDE4MjQsbnVsbDtnPWQuY2hpbGRyZW47YT1kLmZhbGxiYWNrO3JldHVybiBmPyhkPWIubW9kZSxmPWIuY2hpbGQsZz17bW9kZTpcImhpZGRlblwiLGNoaWxkcmVuOmd9LDA9PT0oZCYxKSYmbnVsbCE9PWY/KGYuY2hpbGRMYW5lcz0wLGYucGVuZGluZ1Byb3BzPVxuZyk6Zj1waihnLGQsMCxudWxsKSxhPVRnKGEsZCxjLG51bGwpLGYucmV0dXJuPWIsYS5yZXR1cm49YixmLnNpYmxpbmc9YSxiLmNoaWxkPWYsYi5jaGlsZC5tZW1vaXplZFN0YXRlPW5qKGMpLGIubWVtb2l6ZWRTdGF0ZT1taixhKTpxaihiLGcpfWU9YS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lJiYoaD1lLmRlaHlkcmF0ZWQsbnVsbCE9PWgpKXJldHVybiByaihhLGIsZyxkLGgsZSxjKTtpZihmKXtmPWQuZmFsbGJhY2s7Zz1iLm1vZGU7ZT1hLmNoaWxkO2g9ZS5zaWJsaW5nO3ZhciBrPXttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn07MD09PShnJjEpJiZiLmNoaWxkIT09ZT8oZD1iLmNoaWxkLGQuY2hpbGRMYW5lcz0wLGQucGVuZGluZ1Byb3BzPWssYi5kZWxldGlvbnM9bnVsbCk6KGQ9UGcoZSxrKSxkLnN1YnRyZWVGbGFncz1lLnN1YnRyZWVGbGFncyYxNDY4MDA2NCk7bnVsbCE9PWg/Zj1QZyhoLGYpOihmPVRnKGYsZyxjLG51bGwpLGYuZmxhZ3N8PTIpO2YucmV0dXJuPVxuYjtkLnJldHVybj1iO2Quc2libGluZz1mO2IuY2hpbGQ9ZDtkPWY7Zj1iLmNoaWxkO2c9YS5jaGlsZC5tZW1vaXplZFN0YXRlO2c9bnVsbD09PWc/bmooYyk6e2Jhc2VMYW5lczpnLmJhc2VMYW5lc3xjLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOmcudHJhbnNpdGlvbnN9O2YubWVtb2l6ZWRTdGF0ZT1nO2YuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXMmfmM7Yi5tZW1vaXplZFN0YXRlPW1qO3JldHVybiBkfWY9YS5jaGlsZDthPWYuc2libGluZztkPVBnKGYse21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn0pOzA9PT0oYi5tb2RlJjEpJiYoZC5sYW5lcz1jKTtkLnJldHVybj1iO2Quc2libGluZz1udWxsO251bGwhPT1hJiYoYz1iLmRlbGV0aW9ucyxudWxsPT09Yz8oYi5kZWxldGlvbnM9W2FdLGIuZmxhZ3N8PTE2KTpjLnB1c2goYSkpO2IuY2hpbGQ9ZDtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gZH1cbmZ1bmN0aW9uIHFqKGEsYil7Yj1waih7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpifSxhLm1vZGUsMCxudWxsKTtiLnJldHVybj1hO3JldHVybiBhLmNoaWxkPWJ9ZnVuY3Rpb24gc2ooYSxiLGMsZCl7bnVsbCE9PWQmJkpnKGQpO1VnKGIsYS5jaGlsZCxudWxsLGMpO2E9cWooYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbik7YS5mbGFnc3w9MjtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gYX1cbmZ1bmN0aW9uIHJqKGEsYixjLGQsZSxmLGcpe2lmKGMpe2lmKGIuZmxhZ3MmMjU2KXJldHVybiBiLmZsYWdzJj0tMjU3LGQ9S2koRXJyb3IocCg0MjIpKSksc2ooYSxiLGcsZCk7aWYobnVsbCE9PWIubWVtb2l6ZWRTdGF0ZSlyZXR1cm4gYi5jaGlsZD1hLmNoaWxkLGIuZmxhZ3N8PTEyOCxudWxsO2Y9ZC5mYWxsYmFjaztlPWIubW9kZTtkPXBqKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmQuY2hpbGRyZW59LGUsMCxudWxsKTtmPVRnKGYsZSxnLG51bGwpO2YuZmxhZ3N8PTI7ZC5yZXR1cm49YjtmLnJldHVybj1iO2Quc2libGluZz1mO2IuY2hpbGQ9ZDswIT09KGIubW9kZSYxKSYmVWcoYixhLmNoaWxkLG51bGwsZyk7Yi5jaGlsZC5tZW1vaXplZFN0YXRlPW5qKGcpO2IubWVtb2l6ZWRTdGF0ZT1tajtyZXR1cm4gZn1pZigwPT09KGIubW9kZSYxKSlyZXR1cm4gc2ooYSxiLGcsbnVsbCk7aWYoXCIkIVwiPT09ZS5kYXRhKXtkPWUubmV4dFNpYmxpbmcmJmUubmV4dFNpYmxpbmcuZGF0YXNldDtcbmlmKGQpdmFyIGg9ZC5kZ3N0O2Q9aDtmPUVycm9yKHAoNDE5KSk7ZD1LaShmLGQsdm9pZCAwKTtyZXR1cm4gc2ooYSxiLGcsZCl9aD0wIT09KGcmYS5jaGlsZExhbmVzKTtpZihkaHx8aCl7ZD1RO2lmKG51bGwhPT1kKXtzd2l0Y2goZyYtZyl7Y2FzZSA0OmU9MjticmVhaztjYXNlIDE2OmU9ODticmVhaztjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOmNhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6ZT0zMjticmVhaztjYXNlIDUzNjg3MDkxMjplPTI2ODQzNTQ1NjticmVhaztkZWZhdWx0OmU9MH1lPTAhPT0oZSYoZC5zdXNwZW5kZWRMYW5lc3xnKSk/MDplO1xuMCE9PWUmJmUhPT1mLnJldHJ5TGFuZSYmKGYucmV0cnlMYW5lPWUsaWgoYSxlKSxnaShkLGEsZSwtMSkpfXRqKCk7ZD1LaShFcnJvcihwKDQyMSkpKTtyZXR1cm4gc2ooYSxiLGcsZCl9aWYoXCIkP1wiPT09ZS5kYXRhKXJldHVybiBiLmZsYWdzfD0xMjgsYi5jaGlsZD1hLmNoaWxkLGI9dWouYmluZChudWxsLGEpLGUuX3JlYWN0UmV0cnk9YixudWxsO2E9Zi50cmVlQ29udGV4dDt5Zz1MZihlLm5leHRTaWJsaW5nKTt4Zz1iO0k9ITA7emc9bnVsbDtudWxsIT09YSYmKG9nW3BnKytdPXJnLG9nW3BnKytdPXNnLG9nW3BnKytdPXFnLHJnPWEuaWQsc2c9YS5vdmVyZmxvdyxxZz1iKTtiPXFqKGIsZC5jaGlsZHJlbik7Yi5mbGFnc3w9NDA5NjtyZXR1cm4gYn1mdW5jdGlvbiB2aihhLGIsYyl7YS5sYW5lc3w9Yjt2YXIgZD1hLmFsdGVybmF0ZTtudWxsIT09ZCYmKGQubGFuZXN8PWIpO2JoKGEucmV0dXJuLGIsYyl9XG5mdW5jdGlvbiB3aihhLGIsYyxkLGUpe3ZhciBmPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09Zj9hLm1lbW9pemVkU3RhdGU9e2lzQmFja3dhcmRzOmIscmVuZGVyaW5nOm51bGwscmVuZGVyaW5nU3RhcnRUaW1lOjAsbGFzdDpkLHRhaWw6Yyx0YWlsTW9kZTplfTooZi5pc0JhY2t3YXJkcz1iLGYucmVuZGVyaW5nPW51bGwsZi5yZW5kZXJpbmdTdGFydFRpbWU9MCxmLmxhc3Q9ZCxmLnRhaWw9YyxmLnRhaWxNb2RlPWUpfVxuZnVuY3Rpb24geGooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9ZC5yZXZlYWxPcmRlcixmPWQudGFpbDtYaShhLGIsZC5jaGlsZHJlbixjKTtkPUwuY3VycmVudDtpZigwIT09KGQmMikpZD1kJjF8MixiLmZsYWdzfD0xMjg7ZWxzZXtpZihudWxsIT09YSYmMCE9PShhLmZsYWdzJjEyOCkpYTpmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7aWYoMTM9PT1hLnRhZyludWxsIT09YS5tZW1vaXplZFN0YXRlJiZ2aihhLGMsYik7ZWxzZSBpZigxOT09PWEudGFnKXZqKGEsYyxiKTtlbHNlIGlmKG51bGwhPT1hLmNoaWxkKXthLmNoaWxkLnJldHVybj1hO2E9YS5jaGlsZDtjb250aW51ZX1pZihhPT09YilicmVhayBhO2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8YS5yZXR1cm49PT1iKWJyZWFrIGE7YT1hLnJldHVybn1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuO2E9YS5zaWJsaW5nfWQmPTF9RyhMLGQpO2lmKDA9PT0oYi5tb2RlJjEpKWIubWVtb2l6ZWRTdGF0ZT1cbm51bGw7ZWxzZSBzd2l0Y2goZSl7Y2FzZSBcImZvcndhcmRzXCI6Yz1iLmNoaWxkO2ZvcihlPW51bGw7bnVsbCE9PWM7KWE9Yy5hbHRlcm5hdGUsbnVsbCE9PWEmJm51bGw9PT1DaChhKSYmKGU9YyksYz1jLnNpYmxpbmc7Yz1lO251bGw9PT1jPyhlPWIuY2hpbGQsYi5jaGlsZD1udWxsKTooZT1jLnNpYmxpbmcsYy5zaWJsaW5nPW51bGwpO3dqKGIsITEsZSxjLGYpO2JyZWFrO2Nhc2UgXCJiYWNrd2FyZHNcIjpjPW51bGw7ZT1iLmNoaWxkO2ZvcihiLmNoaWxkPW51bGw7bnVsbCE9PWU7KXthPWUuYWx0ZXJuYXRlO2lmKG51bGwhPT1hJiZudWxsPT09Q2goYSkpe2IuY2hpbGQ9ZTticmVha31hPWUuc2libGluZztlLnNpYmxpbmc9YztjPWU7ZT1hfXdqKGIsITAsYyxudWxsLGYpO2JyZWFrO2Nhc2UgXCJ0b2dldGhlclwiOndqKGIsITEsbnVsbCxudWxsLHZvaWQgMCk7YnJlYWs7ZGVmYXVsdDpiLm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGlqKGEsYil7MD09PShiLm1vZGUmMSkmJm51bGwhPT1hJiYoYS5hbHRlcm5hdGU9bnVsbCxiLmFsdGVybmF0ZT1udWxsLGIuZmxhZ3N8PTIpfWZ1bmN0aW9uIFppKGEsYixjKXtudWxsIT09YSYmKGIuZGVwZW5kZW5jaWVzPWEuZGVwZW5kZW5jaWVzKTtyaHw9Yi5sYW5lcztpZigwPT09KGMmYi5jaGlsZExhbmVzKSlyZXR1cm4gbnVsbDtpZihudWxsIT09YSYmYi5jaGlsZCE9PWEuY2hpbGQpdGhyb3cgRXJyb3IocCgxNTMpKTtpZihudWxsIT09Yi5jaGlsZCl7YT1iLmNoaWxkO2M9UGcoYSxhLnBlbmRpbmdQcm9wcyk7Yi5jaGlsZD1jO2ZvcihjLnJldHVybj1iO251bGwhPT1hLnNpYmxpbmc7KWE9YS5zaWJsaW5nLGM9Yy5zaWJsaW5nPVBnKGEsYS5wZW5kaW5nUHJvcHMpLGMucmV0dXJuPWI7Yy5zaWJsaW5nPW51bGx9cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiB5aihhLGIsYyl7c3dpdGNoKGIudGFnKXtjYXNlIDM6a2ooYik7SWcoKTticmVhaztjYXNlIDU6QWgoYik7YnJlYWs7Y2FzZSAxOlpmKGIudHlwZSkmJmNnKGIpO2JyZWFrO2Nhc2UgNDp5aChiLGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6dmFyIGQ9Yi50eXBlLl9jb250ZXh0LGU9Yi5tZW1vaXplZFByb3BzLnZhbHVlO0coV2csZC5fY3VycmVudFZhbHVlKTtkLl9jdXJyZW50VmFsdWU9ZTticmVhaztjYXNlIDEzOmQ9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kKXtpZihudWxsIT09ZC5kZWh5ZHJhdGVkKXJldHVybiBHKEwsTC5jdXJyZW50JjEpLGIuZmxhZ3N8PTEyOCxudWxsO2lmKDAhPT0oYyZiLmNoaWxkLmNoaWxkTGFuZXMpKXJldHVybiBvaihhLGIsYyk7RyhMLEwuY3VycmVudCYxKTthPVppKGEsYixjKTtyZXR1cm4gbnVsbCE9PWE/YS5zaWJsaW5nOm51bGx9RyhMLEwuY3VycmVudCYxKTticmVhaztjYXNlIDE5OmQ9MCE9PShjJlxuYi5jaGlsZExhbmVzKTtpZigwIT09KGEuZmxhZ3MmMTI4KSl7aWYoZClyZXR1cm4geGooYSxiLGMpO2IuZmxhZ3N8PTEyOH1lPWIubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZSYmKGUucmVuZGVyaW5nPW51bGwsZS50YWlsPW51bGwsZS5sYXN0RWZmZWN0PW51bGwpO0coTCxMLmN1cnJlbnQpO2lmKGQpYnJlYWs7ZWxzZSByZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIGIubGFuZXM9MCxkaihhLGIsYyl9cmV0dXJuIFppKGEsYixjKX12YXIgemosQWosQmosQ2o7XG56aj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1iLmNoaWxkO251bGwhPT1jOyl7aWYoNT09PWMudGFnfHw2PT09Yy50YWcpYS5hcHBlbmRDaGlsZChjLnN0YXRlTm9kZSk7ZWxzZSBpZig0IT09Yy50YWcmJm51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YilicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09Yy5yZXR1cm58fGMucmV0dXJuPT09YilyZXR1cm47Yz1jLnJldHVybn1jLnNpYmxpbmcucmV0dXJuPWMucmV0dXJuO2M9Yy5zaWJsaW5nfX07QWo9ZnVuY3Rpb24oKXt9O1xuQmo9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5tZW1vaXplZFByb3BzO2lmKGUhPT1kKXthPWIuc3RhdGVOb2RlO3hoKHVoLmN1cnJlbnQpO3ZhciBmPW51bGw7c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOmU9WWEoYSxlKTtkPVlhKGEsZCk7Zj1bXTticmVhaztjYXNlIFwic2VsZWN0XCI6ZT1BKHt9LGUse3ZhbHVlOnZvaWQgMH0pO2Q9QSh7fSxkLHt2YWx1ZTp2b2lkIDB9KTtmPVtdO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmU9Z2IoYSxlKTtkPWdiKGEsZCk7Zj1bXTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLm9uQ2xpY2smJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLm9uQ2xpY2smJihhLm9uY2xpY2s9QmYpfXViKGMsZCk7dmFyIGc7Yz1udWxsO2ZvcihsIGluIGUpaWYoIWQuaGFzT3duUHJvcGVydHkobCkmJmUuaGFzT3duUHJvcGVydHkobCkmJm51bGwhPWVbbF0paWYoXCJzdHlsZVwiPT09bCl7dmFyIGg9ZVtsXTtmb3IoZyBpbiBoKWguaGFzT3duUHJvcGVydHkoZykmJlxuKGN8fChjPXt9KSxjW2ddPVwiXCIpfWVsc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCIhPT1sJiZcImNoaWxkcmVuXCIhPT1sJiZcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09bCYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWwmJlwiYXV0b0ZvY3VzXCIhPT1sJiYoZWEuaGFzT3duUHJvcGVydHkobCk/Znx8KGY9W10pOihmPWZ8fFtdKS5wdXNoKGwsbnVsbCkpO2ZvcihsIGluIGQpe3ZhciBrPWRbbF07aD1udWxsIT1lP2VbbF06dm9pZCAwO2lmKGQuaGFzT3duUHJvcGVydHkobCkmJmshPT1oJiYobnVsbCE9a3x8bnVsbCE9aCkpaWYoXCJzdHlsZVwiPT09bClpZihoKXtmb3IoZyBpbiBoKSFoLmhhc093blByb3BlcnR5KGcpfHxrJiZrLmhhc093blByb3BlcnR5KGcpfHwoY3x8KGM9e30pLGNbZ109XCJcIik7Zm9yKGcgaW4gaylrLmhhc093blByb3BlcnR5KGcpJiZoW2ddIT09a1tnXSYmKGN8fChjPXt9KSxjW2ddPWtbZ10pfWVsc2UgY3x8KGZ8fChmPVtdKSxmLnB1c2gobCxcbmMpKSxjPWs7ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWw/KGs9az9rLl9faHRtbDp2b2lkIDAsaD1oP2guX19odG1sOnZvaWQgMCxudWxsIT1rJiZoIT09ayYmKGY9Znx8W10pLnB1c2gobCxrKSk6XCJjaGlsZHJlblwiPT09bD9cInN0cmluZ1wiIT09dHlwZW9mIGsmJlwibnVtYmVyXCIhPT10eXBlb2Yga3x8KGY9Znx8W10pLnB1c2gobCxcIlwiK2spOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1sJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09bCYmKGVhLmhhc093blByb3BlcnR5KGwpPyhudWxsIT1rJiZcIm9uU2Nyb2xsXCI9PT1sJiZEKFwic2Nyb2xsXCIsYSksZnx8aD09PWt8fChmPVtdKSk6KGY9Znx8W10pLnB1c2gobCxrKSl9YyYmKGY9Znx8W10pLnB1c2goXCJzdHlsZVwiLGMpO3ZhciBsPWY7aWYoYi51cGRhdGVRdWV1ZT1sKWIuZmxhZ3N8PTR9fTtDaj1mdW5jdGlvbihhLGIsYyxkKXtjIT09ZCYmKGIuZmxhZ3N8PTQpfTtcbmZ1bmN0aW9uIERqKGEsYil7aWYoIUkpc3dpdGNoKGEudGFpbE1vZGUpe2Nhc2UgXCJoaWRkZW5cIjpiPWEudGFpbDtmb3IodmFyIGM9bnVsbDtudWxsIT09YjspbnVsbCE9PWIuYWx0ZXJuYXRlJiYoYz1iKSxiPWIuc2libGluZztudWxsPT09Yz9hLnRhaWw9bnVsbDpjLnNpYmxpbmc9bnVsbDticmVhaztjYXNlIFwiY29sbGFwc2VkXCI6Yz1hLnRhaWw7Zm9yKHZhciBkPW51bGw7bnVsbCE9PWM7KW51bGwhPT1jLmFsdGVybmF0ZSYmKGQ9YyksYz1jLnNpYmxpbmc7bnVsbD09PWQ/Ynx8bnVsbD09PWEudGFpbD9hLnRhaWw9bnVsbDphLnRhaWwuc2libGluZz1udWxsOmQuc2libGluZz1udWxsfX1cbmZ1bmN0aW9uIFMoYSl7dmFyIGI9bnVsbCE9PWEuYWx0ZXJuYXRlJiZhLmFsdGVybmF0ZS5jaGlsZD09PWEuY2hpbGQsYz0wLGQ9MDtpZihiKWZvcih2YXIgZT1hLmNoaWxkO251bGwhPT1lOyljfD1lLmxhbmVzfGUuY2hpbGRMYW5lcyxkfD1lLnN1YnRyZWVGbGFncyYxNDY4MDA2NCxkfD1lLmZsYWdzJjE0NjgwMDY0LGUucmV0dXJuPWEsZT1lLnNpYmxpbmc7ZWxzZSBmb3IoZT1hLmNoaWxkO251bGwhPT1lOyljfD1lLmxhbmVzfGUuY2hpbGRMYW5lcyxkfD1lLnN1YnRyZWVGbGFncyxkfD1lLmZsYWdzLGUucmV0dXJuPWEsZT1lLnNpYmxpbmc7YS5zdWJ0cmVlRmxhZ3N8PWQ7YS5jaGlsZExhbmVzPWM7cmV0dXJuIGJ9XG5mdW5jdGlvbiBFaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHM7d2coYik7c3dpdGNoKGIudGFnKXtjYXNlIDI6Y2FzZSAxNjpjYXNlIDE1OmNhc2UgMDpjYXNlIDExOmNhc2UgNzpjYXNlIDg6Y2FzZSAxMjpjYXNlIDk6Y2FzZSAxNDpyZXR1cm4gUyhiKSxudWxsO2Nhc2UgMTpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxTKGIpLG51bGw7Y2FzZSAzOmQ9Yi5zdGF0ZU5vZGU7emgoKTtFKFdmKTtFKEgpO0VoKCk7ZC5wZW5kaW5nQ29udGV4dCYmKGQuY29udGV4dD1kLnBlbmRpbmdDb250ZXh0LGQucGVuZGluZ0NvbnRleHQ9bnVsbCk7aWYobnVsbD09PWF8fG51bGw9PT1hLmNoaWxkKUdnKGIpP2IuZmxhZ3N8PTQ6bnVsbD09PWF8fGEubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJjA9PT0oYi5mbGFncyYyNTYpfHwoYi5mbGFnc3w9MTAyNCxudWxsIT09emcmJihGaih6Zyksemc9bnVsbCkpO0FqKGEsYik7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDU6QmgoYik7dmFyIGU9eGgod2guY3VycmVudCk7XG5jPWIudHlwZTtpZihudWxsIT09YSYmbnVsbCE9Yi5zdGF0ZU5vZGUpQmooYSxiLGMsZCxlKSxhLnJlZiE9PWIucmVmJiYoYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTIpO2Vsc2V7aWYoIWQpe2lmKG51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2NikpO1MoYik7cmV0dXJuIG51bGx9YT14aCh1aC5jdXJyZW50KTtpZihHZyhiKSl7ZD1iLnN0YXRlTm9kZTtjPWIudHlwZTt2YXIgZj1iLm1lbW9pemVkUHJvcHM7ZFtPZl09YjtkW1BmXT1mO2E9MCE9PShiLm1vZGUmMSk7c3dpdGNoKGMpe2Nhc2UgXCJkaWFsb2dcIjpEKFwiY2FuY2VsXCIsZCk7RChcImNsb3NlXCIsZCk7YnJlYWs7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpEKFwibG9hZFwiLGQpO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihlPTA7ZTxsZi5sZW5ndGg7ZSsrKUQobGZbZV0sZCk7YnJlYWs7Y2FzZSBcInNvdXJjZVwiOkQoXCJlcnJvclwiLGQpO2JyZWFrO2Nhc2UgXCJpbWdcIjpjYXNlIFwiaW1hZ2VcIjpjYXNlIFwibGlua1wiOkQoXCJlcnJvclwiLFxuZCk7RChcImxvYWRcIixkKTticmVhaztjYXNlIFwiZGV0YWlsc1wiOkQoXCJ0b2dnbGVcIixkKTticmVhaztjYXNlIFwiaW5wdXRcIjpaYShkLGYpO0QoXCJpbnZhbGlkXCIsZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmQuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFmLm11bHRpcGxlfTtEKFwiaW52YWxpZFwiLGQpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmhiKGQsZiksRChcImludmFsaWRcIixkKX11YihjLGYpO2U9bnVsbDtmb3IodmFyIGcgaW4gZilpZihmLmhhc093blByb3BlcnR5KGcpKXt2YXIgaD1mW2ddO1wiY2hpbGRyZW5cIj09PWc/XCJzdHJpbmdcIj09PXR5cGVvZiBoP2QudGV4dENvbnRlbnQhPT1oJiYoITAhPT1mLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC50ZXh0Q29udGVudCxoLGEpLGU9W1wiY2hpbGRyZW5cIixoXSk6XCJudW1iZXJcIj09PXR5cGVvZiBoJiZkLnRleHRDb250ZW50IT09XCJcIitoJiYoITAhPT1mLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC50ZXh0Q29udGVudCxcbmgsYSksZT1bXCJjaGlsZHJlblwiLFwiXCIraF0pOmVhLmhhc093blByb3BlcnR5KGcpJiZudWxsIT1oJiZcIm9uU2Nyb2xsXCI9PT1nJiZEKFwic2Nyb2xsXCIsZCl9c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOlZhKGQpO2RiKGQsZiwhMCk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6VmEoZCk7amIoZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJvcHRpb25cIjpicmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLm9uQ2xpY2smJihkLm9uY2xpY2s9QmYpfWQ9ZTtiLnVwZGF0ZVF1ZXVlPWQ7bnVsbCE9PWQmJihiLmZsYWdzfD00KX1lbHNle2c9OT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnQ7XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hJiYoYT1rYihjKSk7XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hP1wic2NyaXB0XCI9PT1jPyhhPWcuY3JlYXRlRWxlbWVudChcImRpdlwiKSxhLmlubmVySFRNTD1cIjxzY3JpcHQ+XFx4M2Mvc2NyaXB0PlwiLGE9YS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpKTpcblwic3RyaW5nXCI9PT10eXBlb2YgZC5pcz9hPWcuY3JlYXRlRWxlbWVudChjLHtpczpkLmlzfSk6KGE9Zy5jcmVhdGVFbGVtZW50KGMpLFwic2VsZWN0XCI9PT1jJiYoZz1hLGQubXVsdGlwbGU/Zy5tdWx0aXBsZT0hMDpkLnNpemUmJihnLnNpemU9ZC5zaXplKSkpOmE9Zy5jcmVhdGVFbGVtZW50TlMoYSxjKTthW09mXT1iO2FbUGZdPWQ7emooYSxiLCExLCExKTtiLnN0YXRlTm9kZT1hO2E6e2c9dmIoYyxkKTtzd2l0Y2goYyl7Y2FzZSBcImRpYWxvZ1wiOkQoXCJjYW5jZWxcIixhKTtEKFwiY2xvc2VcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpEKFwibG9hZFwiLGEpO2U9ZDticmVhaztjYXNlIFwidmlkZW9cIjpjYXNlIFwiYXVkaW9cIjpmb3IoZT0wO2U8bGYubGVuZ3RoO2UrKylEKGxmW2VdLGEpO2U9ZDticmVhaztjYXNlIFwic291cmNlXCI6RChcImVycm9yXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpbWdcIjpjYXNlIFwiaW1hZ2VcIjpjYXNlIFwibGlua1wiOkQoXCJlcnJvclwiLFxuYSk7RChcImxvYWRcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImRldGFpbHNcIjpEKFwidG9nZ2xlXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOlphKGEsZCk7ZT1ZYShhLGQpO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7Y2FzZSBcIm9wdGlvblwiOmU9ZDticmVhaztjYXNlIFwic2VsZWN0XCI6YS5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWQubXVsdGlwbGV9O2U9QSh7fSxkLHt2YWx1ZTp2b2lkIDB9KTtEKFwiaW52YWxpZFwiLGEpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmhiKGEsZCk7ZT1nYihhLGQpO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7ZGVmYXVsdDplPWR9dWIoYyxlKTtoPWU7Zm9yKGYgaW4gaClpZihoLmhhc093blByb3BlcnR5KGYpKXt2YXIgaz1oW2ZdO1wic3R5bGVcIj09PWY/c2IoYSxrKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1mPyhrPWs/ay5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJm5iKGEsaykpOlwiY2hpbGRyZW5cIj09PWY/XCJzdHJpbmdcIj09PXR5cGVvZiBrPyhcInRleHRhcmVhXCIhPT1cbmN8fFwiXCIhPT1rKSYmb2IoYSxrKTpcIm51bWJlclwiPT09dHlwZW9mIGsmJm9iKGEsXCJcIitrKTpcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09ZiYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWYmJlwiYXV0b0ZvY3VzXCIhPT1mJiYoZWEuaGFzT3duUHJvcGVydHkoZik/bnVsbCE9ayYmXCJvblNjcm9sbFwiPT09ZiYmRChcInNjcm9sbFwiLGEpOm51bGwhPWsmJnRhKGEsZixrLGcpKX1zd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6VmEoYSk7ZGIoYSxkLCExKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpWYShhKTtqYihhKTticmVhaztjYXNlIFwib3B0aW9uXCI6bnVsbCE9ZC52YWx1ZSYmYS5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLFwiXCIrU2EoZC52YWx1ZSkpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjphLm11bHRpcGxlPSEhZC5tdWx0aXBsZTtmPWQudmFsdWU7bnVsbCE9Zj9mYihhLCEhZC5tdWx0aXBsZSxmLCExKTpudWxsIT1kLmRlZmF1bHRWYWx1ZSYmZmIoYSwhIWQubXVsdGlwbGUsZC5kZWZhdWx0VmFsdWUsXG4hMCk7YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5vbkNsaWNrJiYoYS5vbmNsaWNrPUJmKX1zd2l0Y2goYyl7Y2FzZSBcImJ1dHRvblwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwidGV4dGFyZWFcIjpkPSEhZC5hdXRvRm9jdXM7YnJlYWsgYTtjYXNlIFwiaW1nXCI6ZD0hMDticmVhayBhO2RlZmF1bHQ6ZD0hMX19ZCYmKGIuZmxhZ3N8PTQpfW51bGwhPT1iLnJlZiYmKGIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyKX1TKGIpO3JldHVybiBudWxsO2Nhc2UgNjppZihhJiZudWxsIT1iLnN0YXRlTm9kZSlDaihhLGIsYS5tZW1vaXplZFByb3BzLGQpO2Vsc2V7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBkJiZudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjYpKTtjPXhoKHdoLmN1cnJlbnQpO3hoKHVoLmN1cnJlbnQpO2lmKEdnKGIpKXtkPWIuc3RhdGVOb2RlO2M9Yi5tZW1vaXplZFByb3BzO2RbT2ZdPWI7aWYoZj1kLm5vZGVWYWx1ZSE9PWMpaWYoYT1cbnhnLG51bGwhPT1hKXN3aXRjaChhLnRhZyl7Y2FzZSAzOkFmKGQubm9kZVZhbHVlLGMsMCE9PShhLm1vZGUmMSkpO2JyZWFrO2Nhc2UgNTohMCE9PWEubWVtb2l6ZWRQcm9wcy5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkFmKGQubm9kZVZhbHVlLGMsMCE9PShhLm1vZGUmMSkpfWYmJihiLmZsYWdzfD00KX1lbHNlIGQ9KDk9PT1jLm5vZGVUeXBlP2M6Yy5vd25lckRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShkKSxkW09mXT1iLGIuc3RhdGVOb2RlPWR9UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDEzOkUoTCk7ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUuZGVoeWRyYXRlZCl7aWYoSSYmbnVsbCE9PXlnJiYwIT09KGIubW9kZSYxKSYmMD09PShiLmZsYWdzJjEyOCkpSGcoKSxJZygpLGIuZmxhZ3N8PTk4NTYwLGY9ITE7ZWxzZSBpZihmPUdnKGIpLG51bGwhPT1kJiZudWxsIT09ZC5kZWh5ZHJhdGVkKXtpZihudWxsPT09XG5hKXtpZighZil0aHJvdyBFcnJvcihwKDMxOCkpO2Y9Yi5tZW1vaXplZFN0YXRlO2Y9bnVsbCE9PWY/Zi5kZWh5ZHJhdGVkOm51bGw7aWYoIWYpdGhyb3cgRXJyb3IocCgzMTcpKTtmW09mXT1ifWVsc2UgSWcoKSwwPT09KGIuZmxhZ3MmMTI4KSYmKGIubWVtb2l6ZWRTdGF0ZT1udWxsKSxiLmZsYWdzfD00O1MoYik7Zj0hMX1lbHNlIG51bGwhPT16ZyYmKEZqKHpnKSx6Zz1udWxsKSxmPSEwO2lmKCFmKXJldHVybiBiLmZsYWdzJjY1NTM2P2I6bnVsbH1pZigwIT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gYi5sYW5lcz1jLGI7ZD1udWxsIT09ZDtkIT09KG51bGwhPT1hJiZudWxsIT09YS5tZW1vaXplZFN0YXRlKSYmZCYmKGIuY2hpbGQuZmxhZ3N8PTgxOTIsMCE9PShiLm1vZGUmMSkmJihudWxsPT09YXx8MCE9PShMLmN1cnJlbnQmMSk/MD09PVQmJihUPTMpOnRqKCkpKTtudWxsIT09Yi51cGRhdGVRdWV1ZSYmKGIuZmxhZ3N8PTQpO1MoYik7cmV0dXJuIG51bGw7Y2FzZSA0OnJldHVybiB6aCgpLFxuQWooYSxiKSxudWxsPT09YSYmc2YoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksUyhiKSxudWxsO2Nhc2UgMTA6cmV0dXJuIGFoKGIudHlwZS5fY29udGV4dCksUyhiKSxudWxsO2Nhc2UgMTc6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksUyhiKSxudWxsO2Nhc2UgMTk6RShMKTtmPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09ZilyZXR1cm4gUyhiKSxudWxsO2Q9MCE9PShiLmZsYWdzJjEyOCk7Zz1mLnJlbmRlcmluZztpZihudWxsPT09ZylpZihkKURqKGYsITEpO2Vsc2V7aWYoMCE9PVR8fG51bGwhPT1hJiYwIT09KGEuZmxhZ3MmMTI4KSlmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7Zz1DaChhKTtpZihudWxsIT09Zyl7Yi5mbGFnc3w9MTI4O0RqKGYsITEpO2Q9Zy51cGRhdGVRdWV1ZTtudWxsIT09ZCYmKGIudXBkYXRlUXVldWU9ZCxiLmZsYWdzfD00KTtiLnN1YnRyZWVGbGFncz0wO2Q9Yztmb3IoYz1iLmNoaWxkO251bGwhPT1jOylmPWMsYT1kLGYuZmxhZ3MmPTE0NjgwMDY2LFxuZz1mLmFsdGVybmF0ZSxudWxsPT09Zz8oZi5jaGlsZExhbmVzPTAsZi5sYW5lcz1hLGYuY2hpbGQ9bnVsbCxmLnN1YnRyZWVGbGFncz0wLGYubWVtb2l6ZWRQcm9wcz1udWxsLGYubWVtb2l6ZWRTdGF0ZT1udWxsLGYudXBkYXRlUXVldWU9bnVsbCxmLmRlcGVuZGVuY2llcz1udWxsLGYuc3RhdGVOb2RlPW51bGwpOihmLmNoaWxkTGFuZXM9Zy5jaGlsZExhbmVzLGYubGFuZXM9Zy5sYW5lcyxmLmNoaWxkPWcuY2hpbGQsZi5zdWJ0cmVlRmxhZ3M9MCxmLmRlbGV0aW9ucz1udWxsLGYubWVtb2l6ZWRQcm9wcz1nLm1lbW9pemVkUHJvcHMsZi5tZW1vaXplZFN0YXRlPWcubWVtb2l6ZWRTdGF0ZSxmLnVwZGF0ZVF1ZXVlPWcudXBkYXRlUXVldWUsZi50eXBlPWcudHlwZSxhPWcuZGVwZW5kZW5jaWVzLGYuZGVwZW5kZW5jaWVzPW51bGw9PT1hP251bGw6e2xhbmVzOmEubGFuZXMsZmlyc3RDb250ZXh0OmEuZmlyc3RDb250ZXh0fSksYz1jLnNpYmxpbmc7RyhMLEwuY3VycmVudCYxfDIpO3JldHVybiBiLmNoaWxkfWE9XG5hLnNpYmxpbmd9bnVsbCE9PWYudGFpbCYmQigpPkdqJiYoYi5mbGFnc3w9MTI4LGQ9ITAsRGooZiwhMSksYi5sYW5lcz00MTk0MzA0KX1lbHNle2lmKCFkKWlmKGE9Q2goZyksbnVsbCE9PWEpe2lmKGIuZmxhZ3N8PTEyOCxkPSEwLGM9YS51cGRhdGVRdWV1ZSxudWxsIT09YyYmKGIudXBkYXRlUXVldWU9YyxiLmZsYWdzfD00KSxEaihmLCEwKSxudWxsPT09Zi50YWlsJiZcImhpZGRlblwiPT09Zi50YWlsTW9kZSYmIWcuYWx0ZXJuYXRlJiYhSSlyZXR1cm4gUyhiKSxudWxsfWVsc2UgMipCKCktZi5yZW5kZXJpbmdTdGFydFRpbWU+R2omJjEwNzM3NDE4MjQhPT1jJiYoYi5mbGFnc3w9MTI4LGQ9ITAsRGooZiwhMSksYi5sYW5lcz00MTk0MzA0KTtmLmlzQmFja3dhcmRzPyhnLnNpYmxpbmc9Yi5jaGlsZCxiLmNoaWxkPWcpOihjPWYubGFzdCxudWxsIT09Yz9jLnNpYmxpbmc9ZzpiLmNoaWxkPWcsZi5sYXN0PWcpfWlmKG51bGwhPT1mLnRhaWwpcmV0dXJuIGI9Zi50YWlsLGYucmVuZGVyaW5nPVxuYixmLnRhaWw9Yi5zaWJsaW5nLGYucmVuZGVyaW5nU3RhcnRUaW1lPUIoKSxiLnNpYmxpbmc9bnVsbCxjPUwuY3VycmVudCxHKEwsZD9jJjF8MjpjJjEpLGI7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIEhqKCksZD1udWxsIT09Yi5tZW1vaXplZFN0YXRlLG51bGwhPT1hJiZudWxsIT09YS5tZW1vaXplZFN0YXRlIT09ZCYmKGIuZmxhZ3N8PTgxOTIpLGQmJjAhPT0oYi5tb2RlJjEpPzAhPT0oZmomMTA3Mzc0MTgyNCkmJihTKGIpLGIuc3VidHJlZUZsYWdzJjYmJihiLmZsYWdzfD04MTkyKSk6UyhiKSxudWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7Y2FzZSAyNTpyZXR1cm4gbnVsbH10aHJvdyBFcnJvcihwKDE1NixiLnRhZykpO31cbmZ1bmN0aW9uIElqKGEsYil7d2coYik7c3dpdGNoKGIudGFnKXtjYXNlIDE6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksYT1iLmZsYWdzLGEmNjU1MzY/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSAzOnJldHVybiB6aCgpLEUoV2YpLEUoSCksRWgoKSxhPWIuZmxhZ3MsMCE9PShhJjY1NTM2KSYmMD09PShhJjEyOCk/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSA1OnJldHVybiBCaChiKSxudWxsO2Nhc2UgMTM6RShMKTthPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YSYmbnVsbCE9PWEuZGVoeWRyYXRlZCl7aWYobnVsbD09PWIuYWx0ZXJuYXRlKXRocm93IEVycm9yKHAoMzQwKSk7SWcoKX1hPWIuZmxhZ3M7cmV0dXJuIGEmNjU1MzY/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSAxOTpyZXR1cm4gRShMKSxudWxsO2Nhc2UgNDpyZXR1cm4gemgoKSxudWxsO2Nhc2UgMTA6cmV0dXJuIGFoKGIudHlwZS5fY29udGV4dCksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIEhqKCksXG5udWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIEpqPSExLFU9ITEsS2o9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtTZXQ/V2Vha1NldDpTZXQsVj1udWxsO2Z1bmN0aW9uIExqKGEsYil7dmFyIGM9YS5yZWY7aWYobnVsbCE9PWMpaWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGMpdHJ5e2MobnVsbCl9Y2F0Y2goZCl7VyhhLGIsZCl9ZWxzZSBjLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBNaihhLGIsYyl7dHJ5e2MoKX1jYXRjaChkKXtXKGEsYixkKX19dmFyIE5qPSExO1xuZnVuY3Rpb24gT2ooYSxiKXtDZj1kZDthPU1lKCk7aWYoTmUoYSkpe2lmKFwic2VsZWN0aW9uU3RhcnRcImluIGEpdmFyIGM9e3N0YXJ0OmEuc2VsZWN0aW9uU3RhcnQsZW5kOmEuc2VsZWN0aW9uRW5kfTtlbHNlIGE6e2M9KGM9YS5vd25lckRvY3VtZW50KSYmYy5kZWZhdWx0Vmlld3x8d2luZG93O3ZhciBkPWMuZ2V0U2VsZWN0aW9uJiZjLmdldFNlbGVjdGlvbigpO2lmKGQmJjAhPT1kLnJhbmdlQ291bnQpe2M9ZC5hbmNob3JOb2RlO3ZhciBlPWQuYW5jaG9yT2Zmc2V0LGY9ZC5mb2N1c05vZGU7ZD1kLmZvY3VzT2Zmc2V0O3RyeXtjLm5vZGVUeXBlLGYubm9kZVR5cGV9Y2F0Y2goRil7Yz1udWxsO2JyZWFrIGF9dmFyIGc9MCxoPS0xLGs9LTEsbD0wLG09MCxxPWEscj1udWxsO2I6Zm9yKDs7KXtmb3IodmFyIHk7Oyl7cSE9PWN8fDAhPT1lJiYzIT09cS5ub2RlVHlwZXx8KGg9ZytlKTtxIT09Znx8MCE9PWQmJjMhPT1xLm5vZGVUeXBlfHwoaz1nK2QpOzM9PT1xLm5vZGVUeXBlJiYoZys9XG5xLm5vZGVWYWx1ZS5sZW5ndGgpO2lmKG51bGw9PT0oeT1xLmZpcnN0Q2hpbGQpKWJyZWFrO3I9cTtxPXl9Zm9yKDs7KXtpZihxPT09YSlicmVhayBiO3I9PT1jJiYrK2w9PT1lJiYoaD1nKTtyPT09ZiYmKyttPT09ZCYmKGs9Zyk7aWYobnVsbCE9PSh5PXEubmV4dFNpYmxpbmcpKWJyZWFrO3E9cjtyPXEucGFyZW50Tm9kZX1xPXl9Yz0tMT09PWh8fC0xPT09az9udWxsOntzdGFydDpoLGVuZDprfX1lbHNlIGM9bnVsbH1jPWN8fHtzdGFydDowLGVuZDowfX1lbHNlIGM9bnVsbDtEZj17Zm9jdXNlZEVsZW06YSxzZWxlY3Rpb25SYW5nZTpjfTtkZD0hMTtmb3IoVj1iO251bGwhPT1WOylpZihiPVYsYT1iLmNoaWxkLDAhPT0oYi5zdWJ0cmVlRmxhZ3MmMTAyOCkmJm51bGwhPT1hKWEucmV0dXJuPWIsVj1hO2Vsc2UgZm9yKDtudWxsIT09Vjspe2I9Vjt0cnl7dmFyIG49Yi5hbHRlcm5hdGU7aWYoMCE9PShiLmZsYWdzJjEwMjQpKXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpicmVhaztcbmNhc2UgMTppZihudWxsIT09bil7dmFyIHQ9bi5tZW1vaXplZFByb3BzLEo9bi5tZW1vaXplZFN0YXRlLHg9Yi5zdGF0ZU5vZGUsdz14LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKGIuZWxlbWVudFR5cGU9PT1iLnR5cGU/dDpDaShiLnR5cGUsdCksSik7eC5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZT13fWJyZWFrO2Nhc2UgMzp2YXIgdT1iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOzE9PT11Lm5vZGVUeXBlP3UudGV4dENvbnRlbnQ9XCJcIjo5PT09dS5ub2RlVHlwZSYmdS5kb2N1bWVudEVsZW1lbnQmJnUucmVtb3ZlQ2hpbGQodS5kb2N1bWVudEVsZW1lbnQpO2JyZWFrO2Nhc2UgNTpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MykpO319Y2F0Y2goRil7VyhiLGIucmV0dXJuLEYpfWE9Yi5zaWJsaW5nO2lmKG51bGwhPT1hKXthLnJldHVybj1iLnJldHVybjtWPWE7YnJlYWt9Vj1iLnJldHVybn1uPU5qO05qPSExO3JldHVybiBufVxuZnVuY3Rpb24gUGooYSxiLGMpe3ZhciBkPWIudXBkYXRlUXVldWU7ZD1udWxsIT09ZD9kLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09ZCl7dmFyIGU9ZD1kLm5leHQ7ZG97aWYoKGUudGFnJmEpPT09YSl7dmFyIGY9ZS5kZXN0cm95O2UuZGVzdHJveT12b2lkIDA7dm9pZCAwIT09ZiYmTWooYixjLGYpfWU9ZS5uZXh0fXdoaWxlKGUhPT1kKX19ZnVuY3Rpb24gUWooYSxiKXtiPWIudXBkYXRlUXVldWU7Yj1udWxsIT09Yj9iLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09Yil7dmFyIGM9Yj1iLm5leHQ7ZG97aWYoKGMudGFnJmEpPT09YSl7dmFyIGQ9Yy5jcmVhdGU7Yy5kZXN0cm95PWQoKX1jPWMubmV4dH13aGlsZShjIT09Yil9fWZ1bmN0aW9uIFJqKGEpe3ZhciBiPWEucmVmO2lmKG51bGwhPT1iKXt2YXIgYz1hLnN0YXRlTm9kZTtzd2l0Y2goYS50YWcpe2Nhc2UgNTphPWM7YnJlYWs7ZGVmYXVsdDphPWN9XCJmdW5jdGlvblwiPT09dHlwZW9mIGI/YihhKTpiLmN1cnJlbnQ9YX19XG5mdW5jdGlvbiBTaihhKXt2YXIgYj1hLmFsdGVybmF0ZTtudWxsIT09YiYmKGEuYWx0ZXJuYXRlPW51bGwsU2ooYikpO2EuY2hpbGQ9bnVsbDthLmRlbGV0aW9ucz1udWxsO2Euc2libGluZz1udWxsOzU9PT1hLnRhZyYmKGI9YS5zdGF0ZU5vZGUsbnVsbCE9PWImJihkZWxldGUgYltPZl0sZGVsZXRlIGJbUGZdLGRlbGV0ZSBiW29mXSxkZWxldGUgYltRZl0sZGVsZXRlIGJbUmZdKSk7YS5zdGF0ZU5vZGU9bnVsbDthLnJldHVybj1udWxsO2EuZGVwZW5kZW5jaWVzPW51bGw7YS5tZW1vaXplZFByb3BzPW51bGw7YS5tZW1vaXplZFN0YXRlPW51bGw7YS5wZW5kaW5nUHJvcHM9bnVsbDthLnN0YXRlTm9kZT1udWxsO2EudXBkYXRlUXVldWU9bnVsbH1mdW5jdGlvbiBUaihhKXtyZXR1cm4gNT09PWEudGFnfHwzPT09YS50YWd8fDQ9PT1hLnRhZ31cbmZ1bmN0aW9uIFVqKGEpe2E6Zm9yKDs7KXtmb3IoO251bGw9PT1hLnNpYmxpbmc7KXtpZihudWxsPT09YS5yZXR1cm58fFRqKGEucmV0dXJuKSlyZXR1cm4gbnVsbDthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47Zm9yKGE9YS5zaWJsaW5nOzUhPT1hLnRhZyYmNiE9PWEudGFnJiYxOCE9PWEudGFnOyl7aWYoYS5mbGFncyYyKWNvbnRpbnVlIGE7aWYobnVsbD09PWEuY2hpbGR8fDQ9PT1hLnRhZyljb250aW51ZSBhO2Vsc2UgYS5jaGlsZC5yZXR1cm49YSxhPWEuY2hpbGR9aWYoIShhLmZsYWdzJjIpKXJldHVybiBhLnN0YXRlTm9kZX19XG5mdW5jdGlvbiBWaihhLGIsYyl7dmFyIGQ9YS50YWc7aWYoNT09PWR8fDY9PT1kKWE9YS5zdGF0ZU5vZGUsYj84PT09Yy5ub2RlVHlwZT9jLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYik6Yy5pbnNlcnRCZWZvcmUoYSxiKTooOD09PWMubm9kZVR5cGU/KGI9Yy5wYXJlbnROb2RlLGIuaW5zZXJ0QmVmb3JlKGEsYykpOihiPWMsYi5hcHBlbmRDaGlsZChhKSksYz1jLl9yZWFjdFJvb3RDb250YWluZXIsbnVsbCE9PWMmJnZvaWQgMCE9PWN8fG51bGwhPT1iLm9uY2xpY2t8fChiLm9uY2xpY2s9QmYpKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoVmooYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylWaihhLGIsYyksYT1hLnNpYmxpbmd9XG5mdW5jdGlvbiBXaihhLGIsYyl7dmFyIGQ9YS50YWc7aWYoNT09PWR8fDY9PT1kKWE9YS5zdGF0ZU5vZGUsYj9jLmluc2VydEJlZm9yZShhLGIpOmMuYXBwZW5kQ2hpbGQoYSk7ZWxzZSBpZig0IT09ZCYmKGE9YS5jaGlsZCxudWxsIT09YSkpZm9yKFdqKGEsYixjKSxhPWEuc2libGluZztudWxsIT09YTspV2ooYSxiLGMpLGE9YS5zaWJsaW5nfXZhciBYPW51bGwsWGo9ITE7ZnVuY3Rpb24gWWooYSxiLGMpe2ZvcihjPWMuY2hpbGQ7bnVsbCE9PWM7KVpqKGEsYixjKSxjPWMuc2libGluZ31cbmZ1bmN0aW9uIFpqKGEsYixjKXtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uQ29tbWl0RmliZXJVbm1vdW50KXRyeXtsYy5vbkNvbW1pdEZpYmVyVW5tb3VudChrYyxjKX1jYXRjaChoKXt9c3dpdGNoKGMudGFnKXtjYXNlIDU6VXx8TGooYyxiKTtjYXNlIDY6dmFyIGQ9WCxlPVhqO1g9bnVsbDtZaihhLGIsYyk7WD1kO1hqPWU7bnVsbCE9PVgmJihYaj8oYT1YLGM9Yy5zdGF0ZU5vZGUsOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpOmEucmVtb3ZlQ2hpbGQoYykpOlgucmVtb3ZlQ2hpbGQoYy5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDE4Om51bGwhPT1YJiYoWGo/KGE9WCxjPWMuc3RhdGVOb2RlLDg9PT1hLm5vZGVUeXBlP0tmKGEucGFyZW50Tm9kZSxjKToxPT09YS5ub2RlVHlwZSYmS2YoYSxjKSxiZChhKSk6S2YoWCxjLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgNDpkPVg7ZT1YajtYPWMuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WGo9ITA7XG5ZaihhLGIsYyk7WD1kO1hqPWU7YnJlYWs7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmlmKCFVJiYoZD1jLnVwZGF0ZVF1ZXVlLG51bGwhPT1kJiYoZD1kLmxhc3RFZmZlY3QsbnVsbCE9PWQpKSl7ZT1kPWQubmV4dDtkb3t2YXIgZj1lLGc9Zi5kZXN0cm95O2Y9Zi50YWc7dm9pZCAwIT09ZyYmKDAhPT0oZiYyKT9NaihjLGIsZyk6MCE9PShmJjQpJiZNaihjLGIsZykpO2U9ZS5uZXh0fXdoaWxlKGUhPT1kKX1ZaihhLGIsYyk7YnJlYWs7Y2FzZSAxOmlmKCFVJiYoTGooYyxiKSxkPWMuc3RhdGVOb2RlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudFdpbGxVbm1vdW50KSl0cnl7ZC5wcm9wcz1jLm1lbW9pemVkUHJvcHMsZC5zdGF0ZT1jLm1lbW9pemVkU3RhdGUsZC5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKGgpe1coYyxiLGgpfVlqKGEsYixjKTticmVhaztjYXNlIDIxOllqKGEsYixjKTticmVhaztjYXNlIDIyOmMubW9kZSYxPyhVPShkPVUpfHxudWxsIT09XG5jLm1lbW9pemVkU3RhdGUsWWooYSxiLGMpLFU9ZCk6WWooYSxiLGMpO2JyZWFrO2RlZmF1bHQ6WWooYSxiLGMpfX1mdW5jdGlvbiBhayhhKXt2YXIgYj1hLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iKXthLnVwZGF0ZVF1ZXVlPW51bGw7dmFyIGM9YS5zdGF0ZU5vZGU7bnVsbD09PWMmJihjPWEuc3RhdGVOb2RlPW5ldyBLaik7Yi5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPWJrLmJpbmQobnVsbCxhLGIpO2MuaGFzKGIpfHwoYy5hZGQoYiksYi50aGVuKGQsZCkpfSl9fVxuZnVuY3Rpb24gY2soYSxiKXt2YXIgYz1iLmRlbGV0aW9ucztpZihudWxsIT09Yylmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTt0cnl7dmFyIGY9YSxnPWIsaD1nO2E6Zm9yKDtudWxsIT09aDspe3N3aXRjaChoLnRhZyl7Y2FzZSA1Olg9aC5zdGF0ZU5vZGU7WGo9ITE7YnJlYWsgYTtjYXNlIDM6WD1oLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1hqPSEwO2JyZWFrIGE7Y2FzZSA0Olg9aC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztYaj0hMDticmVhayBhfWg9aC5yZXR1cm59aWYobnVsbD09PVgpdGhyb3cgRXJyb3IocCgxNjApKTtaaihmLGcsZSk7WD1udWxsO1hqPSExO3ZhciBrPWUuYWx0ZXJuYXRlO251bGwhPT1rJiYoay5yZXR1cm49bnVsbCk7ZS5yZXR1cm49bnVsbH1jYXRjaChsKXtXKGUsYixsKX19aWYoYi5zdWJ0cmVlRmxhZ3MmMTI4NTQpZm9yKGI9Yi5jaGlsZDtudWxsIT09YjspZGsoYixhKSxiPWIuc2libGluZ31cbmZ1bmN0aW9uIGRrKGEsYil7dmFyIGM9YS5hbHRlcm5hdGUsZD1hLmZsYWdzO3N3aXRjaChhLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmNrKGIsYSk7ZWsoYSk7aWYoZCY0KXt0cnl7UGooMyxhLGEucmV0dXJuKSxRaigzLGEpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX10cnl7UGooNSxhLGEucmV0dXJuKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMTpjayhiLGEpO2VrKGEpO2QmNTEyJiZudWxsIT09YyYmTGooYyxjLnJldHVybik7YnJlYWs7Y2FzZSA1OmNrKGIsYSk7ZWsoYSk7ZCY1MTImJm51bGwhPT1jJiZMaihjLGMucmV0dXJuKTtpZihhLmZsYWdzJjMyKXt2YXIgZT1hLnN0YXRlTm9kZTt0cnl7b2IoZSxcIlwiKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWlmKGQmNCYmKGU9YS5zdGF0ZU5vZGUsbnVsbCE9ZSkpe3ZhciBmPWEubWVtb2l6ZWRQcm9wcyxnPW51bGwhPT1jP2MubWVtb2l6ZWRQcm9wczpmLGg9YS50eXBlLGs9YS51cGRhdGVRdWV1ZTtcbmEudXBkYXRlUXVldWU9bnVsbDtpZihudWxsIT09ayl0cnl7XCJpbnB1dFwiPT09aCYmXCJyYWRpb1wiPT09Zi50eXBlJiZudWxsIT1mLm5hbWUmJmFiKGUsZik7dmIoaCxnKTt2YXIgbD12YihoLGYpO2ZvcihnPTA7ZzxrLmxlbmd0aDtnKz0yKXt2YXIgbT1rW2ddLHE9a1tnKzFdO1wic3R5bGVcIj09PW0/c2IoZSxxKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1tP25iKGUscSk6XCJjaGlsZHJlblwiPT09bT9vYihlLHEpOnRhKGUsbSxxLGwpfXN3aXRjaChoKXtjYXNlIFwiaW5wdXRcIjpiYihlLGYpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmliKGUsZik7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOnZhciByPWUuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtlLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9ISFmLm11bHRpcGxlO3ZhciB5PWYudmFsdWU7bnVsbCE9eT9mYihlLCEhZi5tdWx0aXBsZSx5LCExKTpyIT09ISFmLm11bHRpcGxlJiYobnVsbCE9Zi5kZWZhdWx0VmFsdWU/ZmIoZSwhIWYubXVsdGlwbGUsXG5mLmRlZmF1bHRWYWx1ZSwhMCk6ZmIoZSwhIWYubXVsdGlwbGUsZi5tdWx0aXBsZT9bXTpcIlwiLCExKSl9ZVtQZl09Zn1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgNjpjayhiLGEpO2VrKGEpO2lmKGQmNCl7aWYobnVsbD09PWEuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTYyKSk7ZT1hLnN0YXRlTm9kZTtmPWEubWVtb2l6ZWRQcm9wczt0cnl7ZS5ub2RlVmFsdWU9Zn1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMzpjayhiLGEpO2VrKGEpO2lmKGQmNCYmbnVsbCE9PWMmJmMubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpdHJ5e2JkKGIuY29udGFpbmVySW5mbyl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfWJyZWFrO2Nhc2UgNDpjayhiLGEpO2VrKGEpO2JyZWFrO2Nhc2UgMTM6Y2soYixhKTtlayhhKTtlPWEuY2hpbGQ7ZS5mbGFncyY4MTkyJiYoZj1udWxsIT09ZS5tZW1vaXplZFN0YXRlLGUuc3RhdGVOb2RlLmlzSGlkZGVuPWYsIWZ8fFxubnVsbCE9PWUuYWx0ZXJuYXRlJiZudWxsIT09ZS5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZXx8KGZrPUIoKSkpO2QmNCYmYWsoYSk7YnJlYWs7Y2FzZSAyMjptPW51bGwhPT1jJiZudWxsIT09Yy5tZW1vaXplZFN0YXRlO2EubW9kZSYxPyhVPShsPVUpfHxtLGNrKGIsYSksVT1sKTpjayhiLGEpO2VrKGEpO2lmKGQmODE5Mil7bD1udWxsIT09YS5tZW1vaXplZFN0YXRlO2lmKChhLnN0YXRlTm9kZS5pc0hpZGRlbj1sKSYmIW0mJjAhPT0oYS5tb2RlJjEpKWZvcihWPWEsbT1hLmNoaWxkO251bGwhPT1tOyl7Zm9yKHE9Vj1tO251bGwhPT1WOyl7cj1WO3k9ci5jaGlsZDtzd2l0Y2goci50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpQaig0LHIsci5yZXR1cm4pO2JyZWFrO2Nhc2UgMTpMaihyLHIucmV0dXJuKTt2YXIgbj1yLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygbi5jb21wb25lbnRXaWxsVW5tb3VudCl7ZD1yO2M9ci5yZXR1cm47dHJ5e2I9ZCxuLnByb3BzPVxuYi5tZW1vaXplZFByb3BzLG4uc3RhdGU9Yi5tZW1vaXplZFN0YXRlLG4uY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaCh0KXtXKGQsYyx0KX19YnJlYWs7Y2FzZSA1OkxqKHIsci5yZXR1cm4pO2JyZWFrO2Nhc2UgMjI6aWYobnVsbCE9PXIubWVtb2l6ZWRTdGF0ZSl7Z2socSk7Y29udGludWV9fW51bGwhPT15Pyh5LnJldHVybj1yLFY9eSk6Z2socSl9bT1tLnNpYmxpbmd9YTpmb3IobT1udWxsLHE9YTs7KXtpZig1PT09cS50YWcpe2lmKG51bGw9PT1tKXttPXE7dHJ5e2U9cS5zdGF0ZU5vZGUsbD8oZj1lLnN0eWxlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLnNldFByb3BlcnR5P2Yuc2V0UHJvcGVydHkoXCJkaXNwbGF5XCIsXCJub25lXCIsXCJpbXBvcnRhbnRcIik6Zi5kaXNwbGF5PVwibm9uZVwiKTooaD1xLnN0YXRlTm9kZSxrPXEubWVtb2l6ZWRQcm9wcy5zdHlsZSxnPXZvaWQgMCE9PWsmJm51bGwhPT1rJiZrLmhhc093blByb3BlcnR5KFwiZGlzcGxheVwiKT9rLmRpc3BsYXk6bnVsbCxoLnN0eWxlLmRpc3BsYXk9XG5yYihcImRpc3BsYXlcIixnKSl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX19ZWxzZSBpZig2PT09cS50YWcpe2lmKG51bGw9PT1tKXRyeXtxLnN0YXRlTm9kZS5ub2RlVmFsdWU9bD9cIlwiOnEubWVtb2l6ZWRQcm9wc31jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWVsc2UgaWYoKDIyIT09cS50YWcmJjIzIT09cS50YWd8fG51bGw9PT1xLm1lbW9pemVkU3RhdGV8fHE9PT1hKSYmbnVsbCE9PXEuY2hpbGQpe3EuY2hpbGQucmV0dXJuPXE7cT1xLmNoaWxkO2NvbnRpbnVlfWlmKHE9PT1hKWJyZWFrIGE7Zm9yKDtudWxsPT09cS5zaWJsaW5nOyl7aWYobnVsbD09PXEucmV0dXJufHxxLnJldHVybj09PWEpYnJlYWsgYTttPT09cSYmKG09bnVsbCk7cT1xLnJldHVybn1tPT09cSYmKG09bnVsbCk7cS5zaWJsaW5nLnJldHVybj1xLnJldHVybjtxPXEuc2libGluZ319YnJlYWs7Y2FzZSAxOTpjayhiLGEpO2VrKGEpO2QmNCYmYWsoYSk7YnJlYWs7Y2FzZSAyMTpicmVhaztkZWZhdWx0OmNrKGIsXG5hKSxlayhhKX19ZnVuY3Rpb24gZWsoYSl7dmFyIGI9YS5mbGFncztpZihiJjIpe3RyeXthOntmb3IodmFyIGM9YS5yZXR1cm47bnVsbCE9PWM7KXtpZihUaihjKSl7dmFyIGQ9YzticmVhayBhfWM9Yy5yZXR1cm59dGhyb3cgRXJyb3IocCgxNjApKTt9c3dpdGNoKGQudGFnKXtjYXNlIDU6dmFyIGU9ZC5zdGF0ZU5vZGU7ZC5mbGFncyYzMiYmKG9iKGUsXCJcIiksZC5mbGFncyY9LTMzKTt2YXIgZj1VaihhKTtXaihhLGYsZSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDp2YXIgZz1kLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGg9VWooYSk7VmooYSxoLGcpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjEpKTt9fWNhdGNoKGspe1coYSxhLnJldHVybixrKX1hLmZsYWdzJj0tM31iJjQwOTYmJihhLmZsYWdzJj0tNDA5Nyl9ZnVuY3Rpb24gaGsoYSxiLGMpe1Y9YTtpayhhLGIsYyl9XG5mdW5jdGlvbiBpayhhLGIsYyl7Zm9yKHZhciBkPTAhPT0oYS5tb2RlJjEpO251bGwhPT1WOyl7dmFyIGU9VixmPWUuY2hpbGQ7aWYoMjI9PT1lLnRhZyYmZCl7dmFyIGc9bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZXx8Smo7aWYoIWcpe3ZhciBoPWUuYWx0ZXJuYXRlLGs9bnVsbCE9PWgmJm51bGwhPT1oLm1lbW9pemVkU3RhdGV8fFU7aD1Kajt2YXIgbD1VO0pqPWc7aWYoKFU9aykmJiFsKWZvcihWPWU7bnVsbCE9PVY7KWc9VixrPWcuY2hpbGQsMjI9PT1nLnRhZyYmbnVsbCE9PWcubWVtb2l6ZWRTdGF0ZT9qayhlKTpudWxsIT09az8oay5yZXR1cm49ZyxWPWspOmprKGUpO2Zvcig7bnVsbCE9PWY7KVY9ZixpayhmLGIsYyksZj1mLnNpYmxpbmc7Vj1lO0pqPWg7VT1sfWtrKGEsYixjKX1lbHNlIDAhPT0oZS5zdWJ0cmVlRmxhZ3MmODc3MikmJm51bGwhPT1mPyhmLnJldHVybj1lLFY9Zik6a2soYSxiLGMpfX1cbmZ1bmN0aW9uIGtrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO2lmKDAhPT0oYi5mbGFncyY4NzcyKSl7dmFyIGM9Yi5hbHRlcm5hdGU7dHJ5e2lmKDAhPT0oYi5mbGFncyY4NzcyKSlzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6VXx8UWooNSxiKTticmVhaztjYXNlIDE6dmFyIGQ9Yi5zdGF0ZU5vZGU7aWYoYi5mbGFncyY0JiYhVSlpZihudWxsPT09YylkLmNvbXBvbmVudERpZE1vdW50KCk7ZWxzZXt2YXIgZT1iLmVsZW1lbnRUeXBlPT09Yi50eXBlP2MubWVtb2l6ZWRQcm9wczpDaShiLnR5cGUsYy5tZW1vaXplZFByb3BzKTtkLmNvbXBvbmVudERpZFVwZGF0ZShlLGMubWVtb2l6ZWRTdGF0ZSxkLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlKX12YXIgZj1iLnVwZGF0ZVF1ZXVlO251bGwhPT1mJiZzaChiLGYsZCk7YnJlYWs7Y2FzZSAzOnZhciBnPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWcpe2M9bnVsbDtpZihudWxsIT09Yi5jaGlsZClzd2l0Y2goYi5jaGlsZC50YWcpe2Nhc2UgNTpjPVxuYi5jaGlsZC5zdGF0ZU5vZGU7YnJlYWs7Y2FzZSAxOmM9Yi5jaGlsZC5zdGF0ZU5vZGV9c2goYixnLGMpfWJyZWFrO2Nhc2UgNTp2YXIgaD1iLnN0YXRlTm9kZTtpZihudWxsPT09YyYmYi5mbGFncyY0KXtjPWg7dmFyIGs9Yi5tZW1vaXplZFByb3BzO3N3aXRjaChiLnR5cGUpe2Nhc2UgXCJidXR0b25cIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInRleHRhcmVhXCI6ay5hdXRvRm9jdXMmJmMuZm9jdXMoKTticmVhaztjYXNlIFwiaW1nXCI6ay5zcmMmJihjLnNyYz1rLnNyYyl9fWJyZWFrO2Nhc2UgNjpicmVhaztjYXNlIDQ6YnJlYWs7Y2FzZSAxMjpicmVhaztjYXNlIDEzOmlmKG51bGw9PT1iLm1lbW9pemVkU3RhdGUpe3ZhciBsPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1sKXt2YXIgbT1sLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PW0pe3ZhciBxPW0uZGVoeWRyYXRlZDtudWxsIT09cSYmYmQocSl9fX1icmVhaztjYXNlIDE5OmNhc2UgMTc6Y2FzZSAyMTpjYXNlIDIyOmNhc2UgMjM6Y2FzZSAyNTpicmVhaztcbmRlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjMpKTt9VXx8Yi5mbGFncyY1MTImJlJqKGIpfWNhdGNoKHIpe1coYixiLnJldHVybixyKX19aWYoYj09PWEpe1Y9bnVsbDticmVha31jPWIuc2libGluZztpZihudWxsIT09Yyl7Yy5yZXR1cm49Yi5yZXR1cm47Vj1jO2JyZWFrfVY9Yi5yZXR1cm59fWZ1bmN0aW9uIGdrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO2lmKGI9PT1hKXtWPW51bGw7YnJlYWt9dmFyIGM9Yi5zaWJsaW5nO2lmKG51bGwhPT1jKXtjLnJldHVybj1iLnJldHVybjtWPWM7YnJlYWt9Vj1iLnJldHVybn19XG5mdW5jdGlvbiBqayhhKXtmb3IoO251bGwhPT1WOyl7dmFyIGI9Vjt0cnl7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OnZhciBjPWIucmV0dXJuO3RyeXtRaig0LGIpfWNhdGNoKGspe1coYixjLGspfWJyZWFrO2Nhc2UgMTp2YXIgZD1iLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRNb3VudCl7dmFyIGU9Yi5yZXR1cm47dHJ5e2QuY29tcG9uZW50RGlkTW91bnQoKX1jYXRjaChrKXtXKGIsZSxrKX19dmFyIGY9Yi5yZXR1cm47dHJ5e1JqKGIpfWNhdGNoKGspe1coYixmLGspfWJyZWFrO2Nhc2UgNTp2YXIgZz1iLnJldHVybjt0cnl7UmooYil9Y2F0Y2goayl7VyhiLGcsayl9fX1jYXRjaChrKXtXKGIsYi5yZXR1cm4sayl9aWYoYj09PWEpe1Y9bnVsbDticmVha312YXIgaD1iLnNpYmxpbmc7aWYobnVsbCE9PWgpe2gucmV0dXJuPWIucmV0dXJuO1Y9aDticmVha31WPWIucmV0dXJufX1cbnZhciBsaz1NYXRoLmNlaWwsbWs9dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixuaz11YS5SZWFjdEN1cnJlbnRPd25lcixvaz11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxLPTAsUT1udWxsLFk9bnVsbCxaPTAsZmo9MCxlaj1VZigwKSxUPTAscGs9bnVsbCxyaD0wLHFrPTAscms9MCxzaz1udWxsLHRrPW51bGwsZms9MCxHaj1JbmZpbml0eSx1az1udWxsLE9pPSExLFBpPW51bGwsUmk9bnVsbCx2az0hMSx3az1udWxsLHhrPTAseWs9MCx6az1udWxsLEFrPS0xLEJrPTA7ZnVuY3Rpb24gUigpe3JldHVybiAwIT09KEsmNik/QigpOi0xIT09QWs/QWs6QWs9QigpfVxuZnVuY3Rpb24geWkoYSl7aWYoMD09PShhLm1vZGUmMSkpcmV0dXJuIDE7aWYoMCE9PShLJjIpJiYwIT09WilyZXR1cm4gWiYtWjtpZihudWxsIT09S2cudHJhbnNpdGlvbilyZXR1cm4gMD09PUJrJiYoQms9eWMoKSksQms7YT1DO2lmKDAhPT1hKXJldHVybiBhO2E9d2luZG93LmV2ZW50O2E9dm9pZCAwPT09YT8xNjpqZChhLnR5cGUpO3JldHVybiBhfWZ1bmN0aW9uIGdpKGEsYixjLGQpe2lmKDUwPHlrKXRocm93IHlrPTAsems9bnVsbCxFcnJvcihwKDE4NSkpO0FjKGEsYyxkKTtpZigwPT09KEsmMil8fGEhPT1RKWE9PT1RJiYoMD09PShLJjIpJiYocWt8PWMpLDQ9PT1UJiZDayhhLFopKSxEayhhLGQpLDE9PT1jJiYwPT09SyYmMD09PShiLm1vZGUmMSkmJihHaj1CKCkrNTAwLGZnJiZqZygpKX1cbmZ1bmN0aW9uIERrKGEsYil7dmFyIGM9YS5jYWxsYmFja05vZGU7d2MoYSxiKTt2YXIgZD11YyhhLGE9PT1RP1o6MCk7aWYoMD09PWQpbnVsbCE9PWMmJmJjKGMpLGEuY2FsbGJhY2tOb2RlPW51bGwsYS5jYWxsYmFja1ByaW9yaXR5PTA7ZWxzZSBpZihiPWQmLWQsYS5jYWxsYmFja1ByaW9yaXR5IT09Yil7bnVsbCE9YyYmYmMoYyk7aWYoMT09PWIpMD09PWEudGFnP2lnKEVrLmJpbmQobnVsbCxhKSk6aGcoRWsuYmluZChudWxsLGEpKSxKZihmdW5jdGlvbigpezA9PT0oSyY2KSYmamcoKX0pLGM9bnVsbDtlbHNle3N3aXRjaChEYyhkKSl7Y2FzZSAxOmM9ZmM7YnJlYWs7Y2FzZSA0OmM9Z2M7YnJlYWs7Y2FzZSAxNjpjPWhjO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOmM9amM7YnJlYWs7ZGVmYXVsdDpjPWhjfWM9RmsoYyxHay5iaW5kKG51bGwsYSkpfWEuY2FsbGJhY2tQcmlvcml0eT1iO2EuY2FsbGJhY2tOb2RlPWN9fVxuZnVuY3Rpb24gR2soYSxiKXtBaz0tMTtCaz0wO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO3ZhciBjPWEuY2FsbGJhY2tOb2RlO2lmKEhrKCkmJmEuY2FsbGJhY2tOb2RlIT09YylyZXR1cm4gbnVsbDt2YXIgZD11YyhhLGE9PT1RP1o6MCk7aWYoMD09PWQpcmV0dXJuIG51bGw7aWYoMCE9PShkJjMwKXx8MCE9PShkJmEuZXhwaXJlZExhbmVzKXx8YiliPUlrKGEsZCk7ZWxzZXtiPWQ7dmFyIGU9SztLfD0yO3ZhciBmPUprKCk7aWYoUSE9PWF8fFohPT1iKXVrPW51bGwsR2o9QigpKzUwMCxLayhhLGIpO2RvIHRyeXtMaygpO2JyZWFrfWNhdGNoKGgpe01rKGEsaCl9d2hpbGUoMSk7JGcoKTttay5jdXJyZW50PWY7Sz1lO251bGwhPT1ZP2I9MDooUT1udWxsLFo9MCxiPVQpfWlmKDAhPT1iKXsyPT09YiYmKGU9eGMoYSksMCE9PWUmJihkPWUsYj1OayhhLGUpKSk7aWYoMT09PWIpdGhyb3cgYz1wayxLayhhLDApLENrKGEsZCksRGsoYSxCKCkpLGM7aWYoNj09PWIpQ2soYSxkKTtcbmVsc2V7ZT1hLmN1cnJlbnQuYWx0ZXJuYXRlO2lmKDA9PT0oZCYzMCkmJiFPayhlKSYmKGI9SWsoYSxkKSwyPT09YiYmKGY9eGMoYSksMCE9PWYmJihkPWYsYj1OayhhLGYpKSksMT09PWIpKXRocm93IGM9cGssS2soYSwwKSxDayhhLGQpLERrKGEsQigpKSxjO2EuZmluaXNoZWRXb3JrPWU7YS5maW5pc2hlZExhbmVzPWQ7c3dpdGNoKGIpe2Nhc2UgMDpjYXNlIDE6dGhyb3cgRXJyb3IocCgzNDUpKTtjYXNlIDI6UGsoYSx0ayx1ayk7YnJlYWs7Y2FzZSAzOkNrKGEsZCk7aWYoKGQmMTMwMDIzNDI0KT09PWQmJihiPWZrKzUwMC1CKCksMTA8Yikpe2lmKDAhPT11YyhhLDApKWJyZWFrO2U9YS5zdXNwZW5kZWRMYW5lcztpZigoZSZkKSE9PWQpe1IoKTthLnBpbmdlZExhbmVzfD1hLnN1c3BlbmRlZExhbmVzJmU7YnJlYWt9YS50aW1lb3V0SGFuZGxlPUZmKFBrLmJpbmQobnVsbCxhLHRrLHVrKSxiKTticmVha31QayhhLHRrLHVrKTticmVhaztjYXNlIDQ6Q2soYSxkKTtpZigoZCY0MTk0MjQwKT09PVxuZClicmVhaztiPWEuZXZlbnRUaW1lcztmb3IoZT0tMTswPGQ7KXt2YXIgZz0zMS1vYyhkKTtmPTE8PGc7Zz1iW2ddO2c+ZSYmKGU9Zyk7ZCY9fmZ9ZD1lO2Q9QigpLWQ7ZD0oMTIwPmQ/MTIwOjQ4MD5kPzQ4MDoxMDgwPmQ/MTA4MDoxOTIwPmQ/MTkyMDozRTM+ZD8zRTM6NDMyMD5kPzQzMjA6MTk2MCpsayhkLzE5NjApKS1kO2lmKDEwPGQpe2EudGltZW91dEhhbmRsZT1GZihQay5iaW5kKG51bGwsYSx0ayx1ayksZCk7YnJlYWt9UGsoYSx0ayx1ayk7YnJlYWs7Y2FzZSA1OlBrKGEsdGssdWspO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgzMjkpKTt9fX1EayhhLEIoKSk7cmV0dXJuIGEuY2FsbGJhY2tOb2RlPT09Yz9Hay5iaW5kKG51bGwsYSk6bnVsbH1cbmZ1bmN0aW9uIE5rKGEsYil7dmFyIGM9c2s7YS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYoS2soYSxiKS5mbGFnc3w9MjU2KTthPUlrKGEsYik7MiE9PWEmJihiPXRrLHRrPWMsbnVsbCE9PWImJkZqKGIpKTtyZXR1cm4gYX1mdW5jdGlvbiBGaihhKXtudWxsPT09dGs/dGs9YTp0ay5wdXNoLmFwcGx5KHRrLGEpfVxuZnVuY3Rpb24gT2soYSl7Zm9yKHZhciBiPWE7Oyl7aWYoYi5mbGFncyYxNjM4NCl7dmFyIGM9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09YyYmKGM9Yy5zdG9yZXMsbnVsbCE9PWMpKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdLGY9ZS5nZXRTbmFwc2hvdDtlPWUudmFsdWU7dHJ5e2lmKCFIZShmKCksZSkpcmV0dXJuITF9Y2F0Y2goZyl7cmV0dXJuITF9fX1jPWIuY2hpbGQ7aWYoYi5zdWJ0cmVlRmxhZ3MmMTYzODQmJm51bGwhPT1jKWMucmV0dXJuPWIsYj1jO2Vsc2V7aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuITA7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfX1yZXR1cm4hMH1cbmZ1bmN0aW9uIENrKGEsYil7YiY9fnJrO2ImPX5xazthLnN1c3BlbmRlZExhbmVzfD1iO2EucGluZ2VkTGFuZXMmPX5iO2ZvcihhPWEuZXhwaXJhdGlvblRpbWVzOzA8Yjspe3ZhciBjPTMxLW9jKGIpLGQ9MTw8YzthW2NdPS0xO2ImPX5kfX1mdW5jdGlvbiBFayhhKXtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTtIaygpO3ZhciBiPXVjKGEsMCk7aWYoMD09PShiJjEpKXJldHVybiBEayhhLEIoKSksbnVsbDt2YXIgYz1JayhhLGIpO2lmKDAhPT1hLnRhZyYmMj09PWMpe3ZhciBkPXhjKGEpOzAhPT1kJiYoYj1kLGM9TmsoYSxkKSl9aWYoMT09PWMpdGhyb3cgYz1wayxLayhhLDApLENrKGEsYiksRGsoYSxCKCkpLGM7aWYoNj09PWMpdGhyb3cgRXJyb3IocCgzNDUpKTthLmZpbmlzaGVkV29yaz1hLmN1cnJlbnQuYWx0ZXJuYXRlO2EuZmluaXNoZWRMYW5lcz1iO1BrKGEsdGssdWspO0RrKGEsQigpKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFFrKGEsYil7dmFyIGM9SztLfD0xO3RyeXtyZXR1cm4gYShiKX1maW5hbGx5e0s9YywwPT09SyYmKEdqPUIoKSs1MDAsZmcmJmpnKCkpfX1mdW5jdGlvbiBSayhhKXtudWxsIT09d2smJjA9PT13ay50YWcmJjA9PT0oSyY2KSYmSGsoKTt2YXIgYj1LO0t8PTE7dmFyIGM9b2sudHJhbnNpdGlvbixkPUM7dHJ5e2lmKG9rLnRyYW5zaXRpb249bnVsbCxDPTEsYSlyZXR1cm4gYSgpfWZpbmFsbHl7Qz1kLG9rLnRyYW5zaXRpb249YyxLPWIsMD09PShLJjYpJiZqZygpfX1mdW5jdGlvbiBIaigpe2ZqPWVqLmN1cnJlbnQ7RShlail9XG5mdW5jdGlvbiBLayhhLGIpe2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZExhbmVzPTA7dmFyIGM9YS50aW1lb3V0SGFuZGxlOy0xIT09YyYmKGEudGltZW91dEhhbmRsZT0tMSxHZihjKSk7aWYobnVsbCE9PVkpZm9yKGM9WS5yZXR1cm47bnVsbCE9PWM7KXt2YXIgZD1jO3dnKGQpO3N3aXRjaChkLnRhZyl7Y2FzZSAxOmQ9ZC50eXBlLmNoaWxkQ29udGV4dFR5cGVzO251bGwhPT1kJiZ2b2lkIDAhPT1kJiYkZigpO2JyZWFrO2Nhc2UgMzp6aCgpO0UoV2YpO0UoSCk7RWgoKTticmVhaztjYXNlIDU6QmgoZCk7YnJlYWs7Y2FzZSA0OnpoKCk7YnJlYWs7Y2FzZSAxMzpFKEwpO2JyZWFrO2Nhc2UgMTk6RShMKTticmVhaztjYXNlIDEwOmFoKGQudHlwZS5fY29udGV4dCk7YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOkhqKCl9Yz1jLnJldHVybn1RPWE7WT1hPVBnKGEuY3VycmVudCxudWxsKTtaPWZqPWI7VD0wO3BrPW51bGw7cms9cWs9cmg9MDt0az1zaz1udWxsO2lmKG51bGwhPT1maCl7Zm9yKGI9XG4wO2I8ZmgubGVuZ3RoO2IrKylpZihjPWZoW2JdLGQ9Yy5pbnRlcmxlYXZlZCxudWxsIT09ZCl7Yy5pbnRlcmxlYXZlZD1udWxsO3ZhciBlPWQubmV4dCxmPWMucGVuZGluZztpZihudWxsIT09Zil7dmFyIGc9Zi5uZXh0O2YubmV4dD1lO2QubmV4dD1nfWMucGVuZGluZz1kfWZoPW51bGx9cmV0dXJuIGF9XG5mdW5jdGlvbiBNayhhLGIpe2Rve3ZhciBjPVk7dHJ5eyRnKCk7RmguY3VycmVudD1SaDtpZihJaCl7Zm9yKHZhciBkPU0ubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZDspe3ZhciBlPWQucXVldWU7bnVsbCE9PWUmJihlLnBlbmRpbmc9bnVsbCk7ZD1kLm5leHR9SWg9ITF9SGg9MDtPPU49TT1udWxsO0poPSExO0toPTA7bmsuY3VycmVudD1udWxsO2lmKG51bGw9PT1jfHxudWxsPT09Yy5yZXR1cm4pe1Q9MTtwaz1iO1k9bnVsbDticmVha31hOnt2YXIgZj1hLGc9Yy5yZXR1cm4saD1jLGs9YjtiPVo7aC5mbGFnc3w9MzI3Njg7aWYobnVsbCE9PWsmJlwib2JqZWN0XCI9PT10eXBlb2YgayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGsudGhlbil7dmFyIGw9ayxtPWgscT1tLnRhZztpZigwPT09KG0ubW9kZSYxKSYmKDA9PT1xfHwxMT09PXF8fDE1PT09cSkpe3ZhciByPW0uYWx0ZXJuYXRlO3I/KG0udXBkYXRlUXVldWU9ci51cGRhdGVRdWV1ZSxtLm1lbW9pemVkU3RhdGU9ci5tZW1vaXplZFN0YXRlLFxubS5sYW5lcz1yLmxhbmVzKToobS51cGRhdGVRdWV1ZT1udWxsLG0ubWVtb2l6ZWRTdGF0ZT1udWxsKX12YXIgeT1VaShnKTtpZihudWxsIT09eSl7eS5mbGFncyY9LTI1NztWaSh5LGcsaCxmLGIpO3kubW9kZSYxJiZTaShmLGwsYik7Yj15O2s9bDt2YXIgbj1iLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1uKXt2YXIgdD1uZXcgU2V0O3QuYWRkKGspO2IudXBkYXRlUXVldWU9dH1lbHNlIG4uYWRkKGspO2JyZWFrIGF9ZWxzZXtpZigwPT09KGImMSkpe1NpKGYsbCxiKTt0aigpO2JyZWFrIGF9az1FcnJvcihwKDQyNikpfX1lbHNlIGlmKEkmJmgubW9kZSYxKXt2YXIgSj1VaShnKTtpZihudWxsIT09Sil7MD09PShKLmZsYWdzJjY1NTM2KSYmKEouZmxhZ3N8PTI1Nik7VmkoSixnLGgsZixiKTtKZyhKaShrLGgpKTticmVhayBhfX1mPWs9SmkoayxoKTs0IT09VCYmKFQ9Mik7bnVsbD09PXNrP3NrPVtmXTpzay5wdXNoKGYpO2Y9Zztkb3tzd2l0Y2goZi50YWcpe2Nhc2UgMzpmLmZsYWdzfD02NTUzNjtcbmImPS1iO2YubGFuZXN8PWI7dmFyIHg9TmkoZixrLGIpO3BoKGYseCk7YnJlYWsgYTtjYXNlIDE6aD1rO3ZhciB3PWYudHlwZSx1PWYuc3RhdGVOb2RlO2lmKDA9PT0oZi5mbGFncyYxMjgpJiYoXCJmdW5jdGlvblwiPT09dHlwZW9mIHcuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxudWxsIT09dSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHUuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09Uml8fCFSaS5oYXModSkpKSl7Zi5mbGFnc3w9NjU1MzY7YiY9LWI7Zi5sYW5lc3w9Yjt2YXIgRj1RaShmLGgsYik7cGgoZixGKTticmVhayBhfX1mPWYucmV0dXJufXdoaWxlKG51bGwhPT1mKX1TayhjKX1jYXRjaChuYSl7Yj1uYTtZPT09YyYmbnVsbCE9PWMmJihZPWM9Yy5yZXR1cm4pO2NvbnRpbnVlfWJyZWFrfXdoaWxlKDEpfWZ1bmN0aW9uIEprKCl7dmFyIGE9bWsuY3VycmVudDttay5jdXJyZW50PVJoO3JldHVybiBudWxsPT09YT9SaDphfVxuZnVuY3Rpb24gdGooKXtpZigwPT09VHx8Mz09PVR8fDI9PT1UKVQ9NDtudWxsPT09UXx8MD09PShyaCYyNjg0MzU0NTUpJiYwPT09KHFrJjI2ODQzNTQ1NSl8fENrKFEsWil9ZnVuY3Rpb24gSWsoYSxiKXt2YXIgYz1LO0t8PTI7dmFyIGQ9SmsoKTtpZihRIT09YXx8WiE9PWIpdWs9bnVsbCxLayhhLGIpO2RvIHRyeXtUaygpO2JyZWFrfWNhdGNoKGUpe01rKGEsZSl9d2hpbGUoMSk7JGcoKTtLPWM7bWsuY3VycmVudD1kO2lmKG51bGwhPT1ZKXRocm93IEVycm9yKHAoMjYxKSk7UT1udWxsO1o9MDtyZXR1cm4gVH1mdW5jdGlvbiBUaygpe2Zvcig7bnVsbCE9PVk7KVVrKFkpfWZ1bmN0aW9uIExrKCl7Zm9yKDtudWxsIT09WSYmIWNjKCk7KVVrKFkpfWZ1bmN0aW9uIFVrKGEpe3ZhciBiPVZrKGEuYWx0ZXJuYXRlLGEsZmopO2EubWVtb2l6ZWRQcm9wcz1hLnBlbmRpbmdQcm9wcztudWxsPT09Yj9TayhhKTpZPWI7bmsuY3VycmVudD1udWxsfVxuZnVuY3Rpb24gU2soYSl7dmFyIGI9YTtkb3t2YXIgYz1iLmFsdGVybmF0ZTthPWIucmV0dXJuO2lmKDA9PT0oYi5mbGFncyYzMjc2OCkpe2lmKGM9RWooYyxiLGZqKSxudWxsIT09Yyl7WT1jO3JldHVybn19ZWxzZXtjPUlqKGMsYik7aWYobnVsbCE9PWMpe2MuZmxhZ3MmPTMyNzY3O1k9YztyZXR1cm59aWYobnVsbCE9PWEpYS5mbGFnc3w9MzI3NjgsYS5zdWJ0cmVlRmxhZ3M9MCxhLmRlbGV0aW9ucz1udWxsO2Vsc2V7VD02O1k9bnVsbDtyZXR1cm59fWI9Yi5zaWJsaW5nO2lmKG51bGwhPT1iKXtZPWI7cmV0dXJufVk9Yj1hfXdoaWxlKG51bGwhPT1iKTswPT09VCYmKFQ9NSl9ZnVuY3Rpb24gUGsoYSxiLGMpe3ZhciBkPUMsZT1vay50cmFuc2l0aW9uO3RyeXtvay50cmFuc2l0aW9uPW51bGwsQz0xLFdrKGEsYixjLGQpfWZpbmFsbHl7b2sudHJhbnNpdGlvbj1lLEM9ZH1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFdrKGEsYixjLGQpe2RvIEhrKCk7d2hpbGUobnVsbCE9PXdrKTtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTtjPWEuZmluaXNoZWRXb3JrO3ZhciBlPWEuZmluaXNoZWRMYW5lcztpZihudWxsPT09YylyZXR1cm4gbnVsbDthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO2lmKGM9PT1hLmN1cnJlbnQpdGhyb3cgRXJyb3IocCgxNzcpKTthLmNhbGxiYWNrTm9kZT1udWxsO2EuY2FsbGJhY2tQcmlvcml0eT0wO3ZhciBmPWMubGFuZXN8Yy5jaGlsZExhbmVzO0JjKGEsZik7YT09PVEmJihZPVE9bnVsbCxaPTApOzA9PT0oYy5zdWJ0cmVlRmxhZ3MmMjA2NCkmJjA9PT0oYy5mbGFncyYyMDY0KXx8dmt8fCh2az0hMCxGayhoYyxmdW5jdGlvbigpe0hrKCk7cmV0dXJuIG51bGx9KSk7Zj0wIT09KGMuZmxhZ3MmMTU5OTApO2lmKDAhPT0oYy5zdWJ0cmVlRmxhZ3MmMTU5OTApfHxmKXtmPW9rLnRyYW5zaXRpb247b2sudHJhbnNpdGlvbj1udWxsO1xudmFyIGc9QztDPTE7dmFyIGg9SztLfD00O25rLmN1cnJlbnQ9bnVsbDtPaihhLGMpO2RrKGMsYSk7T2UoRGYpO2RkPSEhQ2Y7RGY9Q2Y9bnVsbDthLmN1cnJlbnQ9YztoayhjLGEsZSk7ZGMoKTtLPWg7Qz1nO29rLnRyYW5zaXRpb249Zn1lbHNlIGEuY3VycmVudD1jO3ZrJiYodms9ITEsd2s9YSx4az1lKTtmPWEucGVuZGluZ0xhbmVzOzA9PT1mJiYoUmk9bnVsbCk7bWMoYy5zdGF0ZU5vZGUsZCk7RGsoYSxCKCkpO2lmKG51bGwhPT1iKWZvcihkPWEub25SZWNvdmVyYWJsZUVycm9yLGM9MDtjPGIubGVuZ3RoO2MrKyllPWJbY10sZChlLnZhbHVlLHtjb21wb25lbnRTdGFjazplLnN0YWNrLGRpZ2VzdDplLmRpZ2VzdH0pO2lmKE9pKXRocm93IE9pPSExLGE9UGksUGk9bnVsbCxhOzAhPT0oeGsmMSkmJjAhPT1hLnRhZyYmSGsoKTtmPWEucGVuZGluZ0xhbmVzOzAhPT0oZiYxKT9hPT09ems/eWsrKzooeWs9MCx6az1hKTp5az0wO2pnKCk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBIaygpe2lmKG51bGwhPT13ayl7dmFyIGE9RGMoeGspLGI9b2sudHJhbnNpdGlvbixjPUM7dHJ5e29rLnRyYW5zaXRpb249bnVsbDtDPTE2PmE/MTY6YTtpZihudWxsPT09d2spdmFyIGQ9ITE7ZWxzZXthPXdrO3drPW51bGw7eGs9MDtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMzEpKTt2YXIgZT1LO0t8PTQ7Zm9yKFY9YS5jdXJyZW50O251bGwhPT1WOyl7dmFyIGY9VixnPWYuY2hpbGQ7aWYoMCE9PShWLmZsYWdzJjE2KSl7dmFyIGg9Zi5kZWxldGlvbnM7aWYobnVsbCE9PWgpe2Zvcih2YXIgaz0wO2s8aC5sZW5ndGg7aysrKXt2YXIgbD1oW2tdO2ZvcihWPWw7bnVsbCE9PVY7KXt2YXIgbT1WO3N3aXRjaChtLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpQaig4LG0sZil9dmFyIHE9bS5jaGlsZDtpZihudWxsIT09cSlxLnJldHVybj1tLFY9cTtlbHNlIGZvcig7bnVsbCE9PVY7KXttPVY7dmFyIHI9bS5zaWJsaW5nLHk9bS5yZXR1cm47U2oobSk7aWYobT09PVxubCl7Vj1udWxsO2JyZWFrfWlmKG51bGwhPT1yKXtyLnJldHVybj15O1Y9cjticmVha31WPXl9fX12YXIgbj1mLmFsdGVybmF0ZTtpZihudWxsIT09bil7dmFyIHQ9bi5jaGlsZDtpZihudWxsIT09dCl7bi5jaGlsZD1udWxsO2Rve3ZhciBKPXQuc2libGluZzt0LnNpYmxpbmc9bnVsbDt0PUp9d2hpbGUobnVsbCE9PXQpfX1WPWZ9fWlmKDAhPT0oZi5zdWJ0cmVlRmxhZ3MmMjA2NCkmJm51bGwhPT1nKWcucmV0dXJuPWYsVj1nO2Vsc2UgYjpmb3IoO251bGwhPT1WOyl7Zj1WO2lmKDAhPT0oZi5mbGFncyYyMDQ4KSlzd2l0Y2goZi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6UGooOSxmLGYucmV0dXJuKX12YXIgeD1mLnNpYmxpbmc7aWYobnVsbCE9PXgpe3gucmV0dXJuPWYucmV0dXJuO1Y9eDticmVhayBifVY9Zi5yZXR1cm59fXZhciB3PWEuY3VycmVudDtmb3IoVj13O251bGwhPT1WOyl7Zz1WO3ZhciB1PWcuY2hpbGQ7aWYoMCE9PShnLnN1YnRyZWVGbGFncyYyMDY0KSYmbnVsbCE9PVxudSl1LnJldHVybj1nLFY9dTtlbHNlIGI6Zm9yKGc9dztudWxsIT09Vjspe2g9VjtpZigwIT09KGguZmxhZ3MmMjA0OCkpdHJ5e3N3aXRjaChoLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpRaig5LGgpfX1jYXRjaChuYSl7VyhoLGgucmV0dXJuLG5hKX1pZihoPT09Zyl7Vj1udWxsO2JyZWFrIGJ9dmFyIEY9aC5zaWJsaW5nO2lmKG51bGwhPT1GKXtGLnJldHVybj1oLnJldHVybjtWPUY7YnJlYWsgYn1WPWgucmV0dXJufX1LPWU7amcoKTtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uUG9zdENvbW1pdEZpYmVyUm9vdCl0cnl7bGMub25Qb3N0Q29tbWl0RmliZXJSb290KGtjLGEpfWNhdGNoKG5hKXt9ZD0hMH1yZXR1cm4gZH1maW5hbGx5e0M9Yyxvay50cmFuc2l0aW9uPWJ9fXJldHVybiExfWZ1bmN0aW9uIFhrKGEsYixjKXtiPUppKGMsYik7Yj1OaShhLGIsMSk7YT1uaChhLGIsMSk7Yj1SKCk7bnVsbCE9PWEmJihBYyhhLDEsYiksRGsoYSxiKSl9XG5mdW5jdGlvbiBXKGEsYixjKXtpZigzPT09YS50YWcpWGsoYSxhLGMpO2Vsc2UgZm9yKDtudWxsIT09Yjspe2lmKDM9PT1iLnRhZyl7WGsoYixhLGMpO2JyZWFrfWVsc2UgaWYoMT09PWIudGFnKXt2YXIgZD1iLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09Uml8fCFSaS5oYXMoZCkpKXthPUppKGMsYSk7YT1RaShiLGEsMSk7Yj1uaChiLGEsMSk7YT1SKCk7bnVsbCE9PWImJihBYyhiLDEsYSksRGsoYixhKSk7YnJlYWt9fWI9Yi5yZXR1cm59fVxuZnVuY3Rpb24gVGkoYSxiLGMpe3ZhciBkPWEucGluZ0NhY2hlO251bGwhPT1kJiZkLmRlbGV0ZShiKTtiPVIoKTthLnBpbmdlZExhbmVzfD1hLnN1c3BlbmRlZExhbmVzJmM7UT09PWEmJihaJmMpPT09YyYmKDQ9PT1UfHwzPT09VCYmKFomMTMwMDIzNDI0KT09PVomJjUwMD5CKCktZms/S2soYSwwKTpya3w9Yyk7RGsoYSxiKX1mdW5jdGlvbiBZayhhLGIpezA9PT1iJiYoMD09PShhLm1vZGUmMSk/Yj0xOihiPXNjLHNjPDw9MSwwPT09KHNjJjEzMDAyMzQyNCkmJihzYz00MTk0MzA0KSkpO3ZhciBjPVIoKTthPWloKGEsYik7bnVsbCE9PWEmJihBYyhhLGIsYyksRGsoYSxjKSl9ZnVuY3Rpb24gdWooYSl7dmFyIGI9YS5tZW1vaXplZFN0YXRlLGM9MDtudWxsIT09YiYmKGM9Yi5yZXRyeUxhbmUpO1lrKGEsYyl9XG5mdW5jdGlvbiBiayhhLGIpe3ZhciBjPTA7c3dpdGNoKGEudGFnKXtjYXNlIDEzOnZhciBkPWEuc3RhdGVOb2RlO3ZhciBlPWEubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZSYmKGM9ZS5yZXRyeUxhbmUpO2JyZWFrO2Nhc2UgMTk6ZD1hLnN0YXRlTm9kZTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMzE0KSk7fW51bGwhPT1kJiZkLmRlbGV0ZShiKTtZayhhLGMpfXZhciBWaztcblZrPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsIT09YSlpZihhLm1lbW9pemVkUHJvcHMhPT1iLnBlbmRpbmdQcm9wc3x8V2YuY3VycmVudClkaD0hMDtlbHNle2lmKDA9PT0oYS5sYW5lcyZjKSYmMD09PShiLmZsYWdzJjEyOCkpcmV0dXJuIGRoPSExLHlqKGEsYixjKTtkaD0wIT09KGEuZmxhZ3MmMTMxMDcyKT8hMDohMX1lbHNlIGRoPSExLEkmJjAhPT0oYi5mbGFncyYxMDQ4NTc2KSYmdWcoYixuZyxiLmluZGV4KTtiLmxhbmVzPTA7c3dpdGNoKGIudGFnKXtjYXNlIDI6dmFyIGQ9Yi50eXBlO2lqKGEsYik7YT1iLnBlbmRpbmdQcm9wczt2YXIgZT1ZZihiLEguY3VycmVudCk7Y2goYixjKTtlPU5oKG51bGwsYixkLGEsZSxjKTt2YXIgZj1TaCgpO2IuZmxhZ3N8PTE7XCJvYmplY3RcIj09PXR5cGVvZiBlJiZudWxsIT09ZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGUucmVuZGVyJiZ2b2lkIDA9PT1lLiQkdHlwZW9mPyhiLnRhZz0xLGIubWVtb2l6ZWRTdGF0ZT1udWxsLGIudXBkYXRlUXVldWU9XG5udWxsLFpmKGQpPyhmPSEwLGNnKGIpKTpmPSExLGIubWVtb2l6ZWRTdGF0ZT1udWxsIT09ZS5zdGF0ZSYmdm9pZCAwIT09ZS5zdGF0ZT9lLnN0YXRlOm51bGwsa2goYiksZS51cGRhdGVyPUVpLGIuc3RhdGVOb2RlPWUsZS5fcmVhY3RJbnRlcm5hbHM9YixJaShiLGQsYSxjKSxiPWpqKG51bGwsYixkLCEwLGYsYykpOihiLnRhZz0wLEkmJmYmJnZnKGIpLFhpKG51bGwsYixlLGMpLGI9Yi5jaGlsZCk7cmV0dXJuIGI7Y2FzZSAxNjpkPWIuZWxlbWVudFR5cGU7YTp7aWooYSxiKTthPWIucGVuZGluZ1Byb3BzO2U9ZC5faW5pdDtkPWUoZC5fcGF5bG9hZCk7Yi50eXBlPWQ7ZT1iLnRhZz1aayhkKTthPUNpKGQsYSk7c3dpdGNoKGUpe2Nhc2UgMDpiPWNqKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDE6Yj1oaihudWxsLGIsZCxhLGMpO2JyZWFrIGE7Y2FzZSAxMTpiPVlpKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDE0OmI9JGkobnVsbCxiLGQsQ2koZC50eXBlLGEpLGMpO2JyZWFrIGF9dGhyb3cgRXJyb3IocCgzMDYsXG5kLFwiXCIpKTt9cmV0dXJuIGI7Y2FzZSAwOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpDaShkLGUpLGNqKGEsYixkLGUsYyk7Y2FzZSAxOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpDaShkLGUpLGhqKGEsYixkLGUsYyk7Y2FzZSAzOmE6e2tqKGIpO2lmKG51bGw9PT1hKXRocm93IEVycm9yKHAoMzg3KSk7ZD1iLnBlbmRpbmdQcm9wcztmPWIubWVtb2l6ZWRTdGF0ZTtlPWYuZWxlbWVudDtsaChhLGIpO3FoKGIsZCxudWxsLGMpO3ZhciBnPWIubWVtb2l6ZWRTdGF0ZTtkPWcuZWxlbWVudDtpZihmLmlzRGVoeWRyYXRlZClpZihmPXtlbGVtZW50OmQsaXNEZWh5ZHJhdGVkOiExLGNhY2hlOmcuY2FjaGUscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczpnLnBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXMsdHJhbnNpdGlvbnM6Zy50cmFuc2l0aW9uc30sYi51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9XG5mLGIubWVtb2l6ZWRTdGF0ZT1mLGIuZmxhZ3MmMjU2KXtlPUppKEVycm9yKHAoNDIzKSksYik7Yj1saihhLGIsZCxjLGUpO2JyZWFrIGF9ZWxzZSBpZihkIT09ZSl7ZT1KaShFcnJvcihwKDQyNCkpLGIpO2I9bGooYSxiLGQsYyxlKTticmVhayBhfWVsc2UgZm9yKHlnPUxmKGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8uZmlyc3RDaGlsZCkseGc9YixJPSEwLHpnPW51bGwsYz1WZyhiLG51bGwsZCxjKSxiLmNoaWxkPWM7YzspYy5mbGFncz1jLmZsYWdzJi0zfDQwOTYsYz1jLnNpYmxpbmc7ZWxzZXtJZygpO2lmKGQ9PT1lKXtiPVppKGEsYixjKTticmVhayBhfVhpKGEsYixkLGMpfWI9Yi5jaGlsZH1yZXR1cm4gYjtjYXNlIDU6cmV0dXJuIEFoKGIpLG51bGw9PT1hJiZFZyhiKSxkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGY9bnVsbCE9PWE/YS5tZW1vaXplZFByb3BzOm51bGwsZz1lLmNoaWxkcmVuLEVmKGQsZSk/Zz1udWxsOm51bGwhPT1mJiZFZihkLGYpJiYoYi5mbGFnc3w9MzIpLFxuZ2ooYSxiKSxYaShhLGIsZyxjKSxiLmNoaWxkO2Nhc2UgNjpyZXR1cm4gbnVsbD09PWEmJkVnKGIpLG51bGw7Y2FzZSAxMzpyZXR1cm4gb2ooYSxiLGMpO2Nhc2UgNDpyZXR1cm4geWgoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxkPWIucGVuZGluZ1Byb3BzLG51bGw9PT1hP2IuY2hpbGQ9VWcoYixudWxsLGQsYyk6WGkoYSxiLGQsYyksYi5jaGlsZDtjYXNlIDExOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpDaShkLGUpLFlpKGEsYixkLGUsYyk7Y2FzZSA3OnJldHVybiBYaShhLGIsYi5wZW5kaW5nUHJvcHMsYyksYi5jaGlsZDtjYXNlIDg6cmV0dXJuIFhpKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTI6cmV0dXJuIFhpKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTA6YTp7ZD1iLnR5cGUuX2NvbnRleHQ7ZT1iLnBlbmRpbmdQcm9wcztmPWIubWVtb2l6ZWRQcm9wcztcbmc9ZS52YWx1ZTtHKFdnLGQuX2N1cnJlbnRWYWx1ZSk7ZC5fY3VycmVudFZhbHVlPWc7aWYobnVsbCE9PWYpaWYoSGUoZi52YWx1ZSxnKSl7aWYoZi5jaGlsZHJlbj09PWUuY2hpbGRyZW4mJiFXZi5jdXJyZW50KXtiPVppKGEsYixjKTticmVhayBhfX1lbHNlIGZvcihmPWIuY2hpbGQsbnVsbCE9PWYmJihmLnJldHVybj1iKTtudWxsIT09Zjspe3ZhciBoPWYuZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1oKXtnPWYuY2hpbGQ7Zm9yKHZhciBrPWguZmlyc3RDb250ZXh0O251bGwhPT1rOyl7aWYoay5jb250ZXh0PT09ZCl7aWYoMT09PWYudGFnKXtrPW1oKC0xLGMmLWMpO2sudGFnPTI7dmFyIGw9Zi51cGRhdGVRdWV1ZTtpZihudWxsIT09bCl7bD1sLnNoYXJlZDt2YXIgbT1sLnBlbmRpbmc7bnVsbD09PW0/ay5uZXh0PWs6KGsubmV4dD1tLm5leHQsbS5uZXh0PWspO2wucGVuZGluZz1rfX1mLmxhbmVzfD1jO2s9Zi5hbHRlcm5hdGU7bnVsbCE9PWsmJihrLmxhbmVzfD1jKTtiaChmLnJldHVybixcbmMsYik7aC5sYW5lc3w9YzticmVha31rPWsubmV4dH19ZWxzZSBpZigxMD09PWYudGFnKWc9Zi50eXBlPT09Yi50eXBlP251bGw6Zi5jaGlsZDtlbHNlIGlmKDE4PT09Zi50YWcpe2c9Zi5yZXR1cm47aWYobnVsbD09PWcpdGhyb3cgRXJyb3IocCgzNDEpKTtnLmxhbmVzfD1jO2g9Zy5hbHRlcm5hdGU7bnVsbCE9PWgmJihoLmxhbmVzfD1jKTtiaChnLGMsYik7Zz1mLnNpYmxpbmd9ZWxzZSBnPWYuY2hpbGQ7aWYobnVsbCE9PWcpZy5yZXR1cm49ZjtlbHNlIGZvcihnPWY7bnVsbCE9PWc7KXtpZihnPT09Yil7Zz1udWxsO2JyZWFrfWY9Zy5zaWJsaW5nO2lmKG51bGwhPT1mKXtmLnJldHVybj1nLnJldHVybjtnPWY7YnJlYWt9Zz1nLnJldHVybn1mPWd9WGkoYSxiLGUuY2hpbGRyZW4sYyk7Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgOTpyZXR1cm4gZT1iLnR5cGUsZD1iLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjaChiLGMpLGU9ZWgoZSksZD1kKGUpLGIuZmxhZ3N8PTEsWGkoYSxiLGQsYyksXG5iLmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGQ9Yi50eXBlLGU9Q2koZCxiLnBlbmRpbmdQcm9wcyksZT1DaShkLnR5cGUsZSksJGkoYSxiLGQsZSxjKTtjYXNlIDE1OnJldHVybiBiaihhLGIsYi50eXBlLGIucGVuZGluZ1Byb3BzLGMpO2Nhc2UgMTc6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkNpKGQsZSksaWooYSxiKSxiLnRhZz0xLFpmKGQpPyhhPSEwLGNnKGIpKTphPSExLGNoKGIsYyksR2koYixkLGUpLElpKGIsZCxlLGMpLGpqKG51bGwsYixkLCEwLGEsYyk7Y2FzZSAxOTpyZXR1cm4geGooYSxiLGMpO2Nhc2UgMjI6cmV0dXJuIGRqKGEsYixjKX10aHJvdyBFcnJvcihwKDE1NixiLnRhZykpO307ZnVuY3Rpb24gRmsoYSxiKXtyZXR1cm4gYWMoYSxiKX1cbmZ1bmN0aW9uICRrKGEsYixjLGQpe3RoaXMudGFnPWE7dGhpcy5rZXk9Yzt0aGlzLnNpYmxpbmc9dGhpcy5jaGlsZD10aGlzLnJldHVybj10aGlzLnN0YXRlTm9kZT10aGlzLnR5cGU9dGhpcy5lbGVtZW50VHlwZT1udWxsO3RoaXMuaW5kZXg9MDt0aGlzLnJlZj1udWxsO3RoaXMucGVuZGluZ1Byb3BzPWI7dGhpcy5kZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGw7dGhpcy5tb2RlPWQ7dGhpcy5zdWJ0cmVlRmxhZ3M9dGhpcy5mbGFncz0wO3RoaXMuZGVsZXRpb25zPW51bGw7dGhpcy5jaGlsZExhbmVzPXRoaXMubGFuZXM9MDt0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIEJnKGEsYixjLGQpe3JldHVybiBuZXcgJGsoYSxiLGMsZCl9ZnVuY3Rpb24gYWooYSl7YT1hLnByb3RvdHlwZTtyZXR1cm4hKCFhfHwhYS5pc1JlYWN0Q29tcG9uZW50KX1cbmZ1bmN0aW9uIFprKGEpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBhaihhKT8xOjA7aWYodm9pZCAwIT09YSYmbnVsbCE9PWEpe2E9YS4kJHR5cGVvZjtpZihhPT09RGEpcmV0dXJuIDExO2lmKGE9PT1HYSlyZXR1cm4gMTR9cmV0dXJuIDJ9XG5mdW5jdGlvbiBQZyhhLGIpe3ZhciBjPWEuYWx0ZXJuYXRlO251bGw9PT1jPyhjPUJnKGEudGFnLGIsYS5rZXksYS5tb2RlKSxjLmVsZW1lbnRUeXBlPWEuZWxlbWVudFR5cGUsYy50eXBlPWEudHlwZSxjLnN0YXRlTm9kZT1hLnN0YXRlTm9kZSxjLmFsdGVybmF0ZT1hLGEuYWx0ZXJuYXRlPWMpOihjLnBlbmRpbmdQcm9wcz1iLGMudHlwZT1hLnR5cGUsYy5mbGFncz0wLGMuc3VidHJlZUZsYWdzPTAsYy5kZWxldGlvbnM9bnVsbCk7Yy5mbGFncz1hLmZsYWdzJjE0NjgwMDY0O2MuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXM7Yy5sYW5lcz1hLmxhbmVzO2MuY2hpbGQ9YS5jaGlsZDtjLm1lbW9pemVkUHJvcHM9YS5tZW1vaXplZFByb3BzO2MubWVtb2l6ZWRTdGF0ZT1hLm1lbW9pemVkU3RhdGU7Yy51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlO2I9YS5kZXBlbmRlbmNpZXM7Yy5kZXBlbmRlbmNpZXM9bnVsbD09PWI/bnVsbDp7bGFuZXM6Yi5sYW5lcyxmaXJzdENvbnRleHQ6Yi5maXJzdENvbnRleHR9O1xuYy5zaWJsaW5nPWEuc2libGluZztjLmluZGV4PWEuaW5kZXg7Yy5yZWY9YS5yZWY7cmV0dXJuIGN9XG5mdW5jdGlvbiBSZyhhLGIsYyxkLGUsZil7dmFyIGc9MjtkPWE7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpYWooYSkmJihnPTEpO2Vsc2UgaWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKWc9NTtlbHNlIGE6c3dpdGNoKGEpe2Nhc2UgeWE6cmV0dXJuIFRnKGMuY2hpbGRyZW4sZSxmLGIpO2Nhc2UgemE6Zz04O2V8PTg7YnJlYWs7Y2FzZSBBYTpyZXR1cm4gYT1CZygxMixjLGIsZXwyKSxhLmVsZW1lbnRUeXBlPUFhLGEubGFuZXM9ZixhO2Nhc2UgRWE6cmV0dXJuIGE9QmcoMTMsYyxiLGUpLGEuZWxlbWVudFR5cGU9RWEsYS5sYW5lcz1mLGE7Y2FzZSBGYTpyZXR1cm4gYT1CZygxOSxjLGIsZSksYS5lbGVtZW50VHlwZT1GYSxhLmxhbmVzPWYsYTtjYXNlIElhOnJldHVybiBwaihjLGUsZixiKTtkZWZhdWx0OmlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgQmE6Zz0xMDticmVhayBhO2Nhc2UgQ2E6Zz05O2JyZWFrIGE7Y2FzZSBEYTpnPTExO1xuYnJlYWsgYTtjYXNlIEdhOmc9MTQ7YnJlYWsgYTtjYXNlIEhhOmc9MTY7ZD1udWxsO2JyZWFrIGF9dGhyb3cgRXJyb3IocCgxMzAsbnVsbD09YT9hOnR5cGVvZiBhLFwiXCIpKTt9Yj1CZyhnLGMsYixlKTtiLmVsZW1lbnRUeXBlPWE7Yi50eXBlPWQ7Yi5sYW5lcz1mO3JldHVybiBifWZ1bmN0aW9uIFRnKGEsYixjLGQpe2E9QmcoNyxhLGQsYik7YS5sYW5lcz1jO3JldHVybiBhfWZ1bmN0aW9uIHBqKGEsYixjLGQpe2E9QmcoMjIsYSxkLGIpO2EuZWxlbWVudFR5cGU9SWE7YS5sYW5lcz1jO2Euc3RhdGVOb2RlPXtpc0hpZGRlbjohMX07cmV0dXJuIGF9ZnVuY3Rpb24gUWcoYSxiLGMpe2E9QmcoNixhLG51bGwsYik7YS5sYW5lcz1jO3JldHVybiBhfVxuZnVuY3Rpb24gU2coYSxiLGMpe2I9QmcoNCxudWxsIT09YS5jaGlsZHJlbj9hLmNoaWxkcmVuOltdLGEua2V5LGIpO2IubGFuZXM9YztiLnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzphLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246YS5pbXBsZW1lbnRhdGlvbn07cmV0dXJuIGJ9XG5mdW5jdGlvbiBhbChhLGIsYyxkLGUpe3RoaXMudGFnPWI7dGhpcy5jb250YWluZXJJbmZvPWE7dGhpcy5maW5pc2hlZFdvcms9dGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGw7dGhpcy50aW1lb3V0SGFuZGxlPS0xO3RoaXMuY2FsbGJhY2tOb2RlPXRoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGw7dGhpcy5jYWxsYmFja1ByaW9yaXR5PTA7dGhpcy5ldmVudFRpbWVzPXpjKDApO3RoaXMuZXhwaXJhdGlvblRpbWVzPXpjKC0xKTt0aGlzLmVudGFuZ2xlZExhbmVzPXRoaXMuZmluaXNoZWRMYW5lcz10aGlzLm11dGFibGVSZWFkTGFuZXM9dGhpcy5leHBpcmVkTGFuZXM9dGhpcy5waW5nZWRMYW5lcz10aGlzLnN1c3BlbmRlZExhbmVzPXRoaXMucGVuZGluZ0xhbmVzPTA7dGhpcy5lbnRhbmdsZW1lbnRzPXpjKDApO3RoaXMuaWRlbnRpZmllclByZWZpeD1kO3RoaXMub25SZWNvdmVyYWJsZUVycm9yPWU7dGhpcy5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVxubnVsbH1mdW5jdGlvbiBibChhLGIsYyxkLGUsZixnLGgsayl7YT1uZXcgYWwoYSxiLGMsaCxrKTsxPT09Yj8oYj0xLCEwPT09ZiYmKGJ8PTgpKTpiPTA7Zj1CZygzLG51bGwsbnVsbCxiKTthLmN1cnJlbnQ9ZjtmLnN0YXRlTm9kZT1hO2YubWVtb2l6ZWRTdGF0ZT17ZWxlbWVudDpkLGlzRGVoeWRyYXRlZDpjLGNhY2hlOm51bGwsdHJhbnNpdGlvbnM6bnVsbCxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOm51bGx9O2toKGYpO3JldHVybiBhfWZ1bmN0aW9uIGNsKGEsYixjKXt2YXIgZD0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDtyZXR1cm57JCR0eXBlb2Y6d2Esa2V5Om51bGw9PWQ/bnVsbDpcIlwiK2QsY2hpbGRyZW46YSxjb250YWluZXJJbmZvOmIsaW1wbGVtZW50YXRpb246Y319XG5mdW5jdGlvbiBkbChhKXtpZighYSlyZXR1cm4gVmY7YT1hLl9yZWFjdEludGVybmFsczthOntpZihWYihhKSE9PWF8fDEhPT1hLnRhZyl0aHJvdyBFcnJvcihwKDE3MCkpO3ZhciBiPWE7ZG97c3dpdGNoKGIudGFnKXtjYXNlIDM6Yj1iLnN0YXRlTm9kZS5jb250ZXh0O2JyZWFrIGE7Y2FzZSAxOmlmKFpmKGIudHlwZSkpe2I9Yi5zdGF0ZU5vZGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ7YnJlYWsgYX19Yj1iLnJldHVybn13aGlsZShudWxsIT09Yik7dGhyb3cgRXJyb3IocCgxNzEpKTt9aWYoMT09PWEudGFnKXt2YXIgYz1hLnR5cGU7aWYoWmYoYykpcmV0dXJuIGJnKGEsYyxiKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGVsKGEsYixjLGQsZSxmLGcsaCxrKXthPWJsKGMsZCwhMCxhLGUsZixnLGgsayk7YS5jb250ZXh0PWRsKG51bGwpO2M9YS5jdXJyZW50O2Q9UigpO2U9eWkoYyk7Zj1taChkLGUpO2YuY2FsbGJhY2s9dm9pZCAwIT09YiYmbnVsbCE9PWI/YjpudWxsO25oKGMsZixlKTthLmN1cnJlbnQubGFuZXM9ZTtBYyhhLGUsZCk7RGsoYSxkKTtyZXR1cm4gYX1mdW5jdGlvbiBmbChhLGIsYyxkKXt2YXIgZT1iLmN1cnJlbnQsZj1SKCksZz15aShlKTtjPWRsKGMpO251bGw9PT1iLmNvbnRleHQ/Yi5jb250ZXh0PWM6Yi5wZW5kaW5nQ29udGV4dD1jO2I9bWgoZixnKTtiLnBheWxvYWQ9e2VsZW1lbnQ6YX07ZD12b2lkIDA9PT1kP251bGw6ZDtudWxsIT09ZCYmKGIuY2FsbGJhY2s9ZCk7YT1uaChlLGIsZyk7bnVsbCE9PWEmJihnaShhLGUsZyxmKSxvaChhLGUsZykpO3JldHVybiBnfVxuZnVuY3Rpb24gZ2woYSl7YT1hLmN1cnJlbnQ7aWYoIWEuY2hpbGQpcmV0dXJuIG51bGw7c3dpdGNoKGEuY2hpbGQudGFnKXtjYXNlIDU6cmV0dXJuIGEuY2hpbGQuc3RhdGVOb2RlO2RlZmF1bHQ6cmV0dXJuIGEuY2hpbGQuc3RhdGVOb2RlfX1mdW5jdGlvbiBobChhLGIpe2E9YS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiZudWxsIT09YS5kZWh5ZHJhdGVkKXt2YXIgYz1hLnJldHJ5TGFuZTthLnJldHJ5TGFuZT0wIT09YyYmYzxiP2M6Yn19ZnVuY3Rpb24gaWwoYSxiKXtobChhLGIpOyhhPWEuYWx0ZXJuYXRlKSYmaGwoYSxiKX1mdW5jdGlvbiBqbCgpe3JldHVybiBudWxsfXZhciBrbD1cImZ1bmN0aW9uXCI9PT10eXBlb2YgcmVwb3J0RXJyb3I/cmVwb3J0RXJyb3I6ZnVuY3Rpb24oYSl7Y29uc29sZS5lcnJvcihhKX07ZnVuY3Rpb24gbGwoYSl7dGhpcy5faW50ZXJuYWxSb290PWF9XG5tbC5wcm90b3R5cGUucmVuZGVyPWxsLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGw9PT1iKXRocm93IEVycm9yKHAoNDA5KSk7ZmwoYSxiLG51bGwsbnVsbCl9O21sLnByb3RvdHlwZS51bm1vdW50PWxsLnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGwhPT1hKXt0aGlzLl9pbnRlcm5hbFJvb3Q9bnVsbDt2YXIgYj1hLmNvbnRhaW5lckluZm87UmsoZnVuY3Rpb24oKXtmbChudWxsLGEsbnVsbCxudWxsKX0pO2JbdWZdPW51bGx9fTtmdW5jdGlvbiBtbChhKXt0aGlzLl9pbnRlcm5hbFJvb3Q9YX1cbm1sLnByb3RvdHlwZS51bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbj1mdW5jdGlvbihhKXtpZihhKXt2YXIgYj1IYygpO2E9e2Jsb2NrZWRPbjpudWxsLHRhcmdldDphLHByaW9yaXR5OmJ9O2Zvcih2YXIgYz0wO2M8UWMubGVuZ3RoJiYwIT09YiYmYjxRY1tjXS5wcmlvcml0eTtjKyspO1FjLnNwbGljZShjLDAsYSk7MD09PWMmJlZjKGEpfX07ZnVuY3Rpb24gbmwoYSl7cmV0dXJuISghYXx8MSE9PWEubm9kZVR5cGUmJjkhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGUpfWZ1bmN0aW9uIG9sKGEpe3JldHVybiEoIWF8fDEhPT1hLm5vZGVUeXBlJiY5IT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlJiYoOCE9PWEubm9kZVR5cGV8fFwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlIFwiIT09YS5ub2RlVmFsdWUpKX1mdW5jdGlvbiBwbCgpe31cbmZ1bmN0aW9uIHFsKGEsYixjLGQsZSl7aWYoZSl7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBmPWQ7ZD1mdW5jdGlvbigpe3ZhciBhPWdsKGcpO2YuY2FsbChhKX19dmFyIGc9ZWwoYixkLGEsMCxudWxsLCExLCExLFwiXCIscGwpO2EuX3JlYWN0Um9vdENvbnRhaW5lcj1nO2FbdWZdPWcuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7UmsoKTtyZXR1cm4gZ31mb3IoO2U9YS5sYXN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoZSk7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBoPWQ7ZD1mdW5jdGlvbigpe3ZhciBhPWdsKGspO2guY2FsbChhKX19dmFyIGs9YmwoYSwwLCExLG51bGwsbnVsbCwhMSwhMSxcIlwiLHBsKTthLl9yZWFjdFJvb3RDb250YWluZXI9azthW3VmXT1rLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO1JrKGZ1bmN0aW9uKCl7ZmwoYixrLGMsZCl9KTtyZXR1cm4ga31cbmZ1bmN0aW9uIHJsKGEsYixjLGQsZSl7dmFyIGY9Yy5fcmVhY3RSb290Q29udGFpbmVyO2lmKGYpe3ZhciBnPWY7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGUpe3ZhciBoPWU7ZT1mdW5jdGlvbigpe3ZhciBhPWdsKGcpO2guY2FsbChhKX19ZmwoYixnLGEsZSl9ZWxzZSBnPXFsKGMsYixhLGUsZCk7cmV0dXJuIGdsKGcpfUVjPWZ1bmN0aW9uKGEpe3N3aXRjaChhLnRhZyl7Y2FzZSAzOnZhciBiPWEuc3RhdGVOb2RlO2lmKGIuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7dmFyIGM9dGMoYi5wZW5kaW5nTGFuZXMpOzAhPT1jJiYoQ2MoYixjfDEpLERrKGIsQigpKSwwPT09KEsmNikmJihHaj1CKCkrNTAwLGpnKCkpKX1icmVhaztjYXNlIDEzOlJrKGZ1bmN0aW9uKCl7dmFyIGI9aWgoYSwxKTtpZihudWxsIT09Yil7dmFyIGM9UigpO2dpKGIsYSwxLGMpfX0pLGlsKGEsMSl9fTtcbkZjPWZ1bmN0aW9uKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPWloKGEsMTM0MjE3NzI4KTtpZihudWxsIT09Yil7dmFyIGM9UigpO2dpKGIsYSwxMzQyMTc3MjgsYyl9aWwoYSwxMzQyMTc3MjgpfX07R2M9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9eWkoYSksYz1paChhLGIpO2lmKG51bGwhPT1jKXt2YXIgZD1SKCk7Z2koYyxhLGIsZCl9aWwoYSxiKX19O0hjPWZ1bmN0aW9uKCl7cmV0dXJuIEN9O0ljPWZ1bmN0aW9uKGEsYil7dmFyIGM9Qzt0cnl7cmV0dXJuIEM9YSxiKCl9ZmluYWxseXtDPWN9fTtcbnliPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYil7Y2FzZSBcImlucHV0XCI6YmIoYSxjKTtiPWMubmFtZTtpZihcInJhZGlvXCI9PT1jLnR5cGUmJm51bGwhPWIpe2ZvcihjPWE7Yy5wYXJlbnROb2RlOyljPWMucGFyZW50Tm9kZTtjPWMucXVlcnlTZWxlY3RvckFsbChcImlucHV0W25hbWU9XCIrSlNPTi5zdHJpbmdpZnkoXCJcIitiKSsnXVt0eXBlPVwicmFkaW9cIl0nKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKXt2YXIgZD1jW2JdO2lmKGQhPT1hJiZkLmZvcm09PT1hLmZvcm0pe3ZhciBlPURiKGQpO2lmKCFlKXRocm93IEVycm9yKHAoOTApKTtXYShkKTtiYihkLGUpfX19YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aWIoYSxjKTticmVhaztjYXNlIFwic2VsZWN0XCI6Yj1jLnZhbHVlLG51bGwhPWImJmZiKGEsISFjLm11bHRpcGxlLGIsITEpfX07R2I9UWs7SGI9Ums7XG52YXIgc2w9e3VzaW5nQ2xpZW50RW50cnlQb2ludDohMSxFdmVudHM6W0NiLHVlLERiLEViLEZiLFFrXX0sdGw9e2ZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOldjLGJ1bmRsZVR5cGU6MCx2ZXJzaW9uOlwiMTguMy4xXCIscmVuZGVyZXJQYWNrYWdlTmFtZTpcInJlYWN0LWRvbVwifTtcbnZhciB1bD17YnVuZGxlVHlwZTp0bC5idW5kbGVUeXBlLHZlcnNpb246dGwudmVyc2lvbixyZW5kZXJlclBhY2thZ2VOYW1lOnRsLnJlbmRlcmVyUGFja2FnZU5hbWUscmVuZGVyZXJDb25maWc6dGwucmVuZGVyZXJDb25maWcsb3ZlcnJpZGVIb29rU3RhdGU6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZVJlbmFtZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzOm51bGwsb3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzUmVuYW1lUGF0aDpudWxsLHNldEVycm9ySGFuZGxlcjpudWxsLHNldFN1c3BlbnNlSGFuZGxlcjpudWxsLHNjaGVkdWxlVXBkYXRlOm51bGwsY3VycmVudERpc3BhdGNoZXJSZWY6dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixmaW5kSG9zdEluc3RhbmNlQnlGaWJlcjpmdW5jdGlvbihhKXthPVpiKGEpO3JldHVybiBudWxsPT09YT9udWxsOmEuc3RhdGVOb2RlfSxmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTp0bC5maW5kRmliZXJCeUhvc3RJbnN0YW5jZXx8XG5qbCxmaW5kSG9zdEluc3RhbmNlc0ZvclJlZnJlc2g6bnVsbCxzY2hlZHVsZVJlZnJlc2g6bnVsbCxzY2hlZHVsZVJvb3Q6bnVsbCxzZXRSZWZyZXNoSGFuZGxlcjpudWxsLGdldEN1cnJlbnRGaWJlcjpudWxsLHJlY29uY2lsZXJWZXJzaW9uOlwiMTguMy4xLW5leHQtZjEzMzhmODA4MC0yMDI0MDQyNlwifTtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyl7dmFyIHZsPV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZighdmwuaXNEaXNhYmxlZCYmdmwuc3VwcG9ydHNGaWJlcil0cnl7a2M9dmwuaW5qZWN0KHVsKSxsYz12bH1jYXRjaChhKXt9fWV4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9c2w7XG5leHBvcnRzLmNyZWF0ZVBvcnRhbD1mdW5jdGlvbihhLGIpe3ZhciBjPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKCFubChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBjbChhLGIsbnVsbCxjKX07ZXhwb3J0cy5jcmVhdGVSb290PWZ1bmN0aW9uKGEsYil7aWYoIW5sKGEpKXRocm93IEVycm9yKHAoMjk5KSk7dmFyIGM9ITEsZD1cIlwiLGU9a2w7bnVsbCE9PWImJnZvaWQgMCE9PWImJighMD09PWIudW5zdGFibGVfc3RyaWN0TW9kZSYmKGM9ITApLHZvaWQgMCE9PWIuaWRlbnRpZmllclByZWZpeCYmKGQ9Yi5pZGVudGlmaWVyUHJlZml4KSx2b2lkIDAhPT1iLm9uUmVjb3ZlcmFibGVFcnJvciYmKGU9Yi5vblJlY292ZXJhYmxlRXJyb3IpKTtiPWJsKGEsMSwhMSxudWxsLG51bGwsYywhMSxkLGUpO2FbdWZdPWIuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7cmV0dXJuIG5ldyBsbChiKX07XG5leHBvcnRzLmZpbmRET01Ob2RlPWZ1bmN0aW9uKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoMT09PWEubm9kZVR5cGUpcmV0dXJuIGE7dmFyIGI9YS5fcmVhY3RJbnRlcm5hbHM7aWYodm9pZCAwPT09Yil7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEucmVuZGVyKXRocm93IEVycm9yKHAoMTg4KSk7YT1PYmplY3Qua2V5cyhhKS5qb2luKFwiLFwiKTt0aHJvdyBFcnJvcihwKDI2OCxhKSk7fWE9WmIoYik7YT1udWxsPT09YT9udWxsOmEuc3RhdGVOb2RlO3JldHVybiBhfTtleHBvcnRzLmZsdXNoU3luYz1mdW5jdGlvbihhKXtyZXR1cm4gUmsoYSl9O2V4cG9ydHMuaHlkcmF0ZT1mdW5jdGlvbihhLGIsYyl7aWYoIW9sKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIHJsKG51bGwsYSxiLCEwLGMpfTtcbmV4cG9ydHMuaHlkcmF0ZVJvb3Q9ZnVuY3Rpb24oYSxiLGMpe2lmKCFubChhKSl0aHJvdyBFcnJvcihwKDQwNSkpO3ZhciBkPW51bGwhPWMmJmMuaHlkcmF0ZWRTb3VyY2VzfHxudWxsLGU9ITEsZj1cIlwiLGc9a2w7bnVsbCE9PWMmJnZvaWQgMCE9PWMmJighMD09PWMudW5zdGFibGVfc3RyaWN0TW9kZSYmKGU9ITApLHZvaWQgMCE9PWMuaWRlbnRpZmllclByZWZpeCYmKGY9Yy5pZGVudGlmaWVyUHJlZml4KSx2b2lkIDAhPT1jLm9uUmVjb3ZlcmFibGVFcnJvciYmKGc9Yy5vblJlY292ZXJhYmxlRXJyb3IpKTtiPWVsKGIsbnVsbCxhLDEsbnVsbCE9Yz9jOm51bGwsZSwhMSxmLGcpO2FbdWZdPWIuY3VycmVudDtzZihhKTtpZihkKWZvcihhPTA7YTxkLmxlbmd0aDthKyspYz1kW2FdLGU9Yy5fZ2V0VmVyc2lvbixlPWUoYy5fc291cmNlKSxudWxsPT1iLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE/Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVtjLGVdOmIubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YS5wdXNoKGMsXG5lKTtyZXR1cm4gbmV3IG1sKGIpfTtleHBvcnRzLnJlbmRlcj1mdW5jdGlvbihhLGIsYyl7aWYoIW9sKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIHJsKG51bGwsYSxiLCExLGMpfTtleHBvcnRzLnVubW91bnRDb21wb25lbnRBdE5vZGU9ZnVuY3Rpb24oYSl7aWYoIW9sKGEpKXRocm93IEVycm9yKHAoNDApKTtyZXR1cm4gYS5fcmVhY3RSb290Q29udGFpbmVyPyhSayhmdW5jdGlvbigpe3JsKG51bGwsbnVsbCxhLCExLGZ1bmN0aW9uKCl7YS5fcmVhY3RSb290Q29udGFpbmVyPW51bGw7YVt1Zl09bnVsbH0pfSksITApOiExfTtleHBvcnRzLnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzPVFrO1xuZXhwb3J0cy51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihhLGIsYyxkKXtpZighb2woYykpdGhyb3cgRXJyb3IocCgyMDApKTtpZihudWxsPT1hfHx2b2lkIDA9PT1hLl9yZWFjdEludGVybmFscyl0aHJvdyBFcnJvcihwKDM4KSk7cmV0dXJuIHJsKGEsYixjLCExLGQpfTtleHBvcnRzLnZlcnNpb249XCIxOC4zLjEtbmV4dC1mMTMzOGY4MDgwLTIwMjQwNDI2XCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGNoZWNrRENFKCkge1xuICAvKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG4gIGlmIChcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fID09PSAndW5kZWZpbmVkJyB8fFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UgIT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkXG4gICAgLy8gaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBjb25kaXRpb24gaXMgdHJ1ZSBvbmx5IGluIGRldmVsb3BtZW50LlxuICAgIC8vIFRoZXJlZm9yZSBpZiB0aGUgYnJhbmNoIGlzIHN0aWxsIGhlcmUsIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3YXNuJ3RcbiAgICAvLyBwcm9wZXJseSBhcHBsaWVkLlxuICAgIC8vIERvbid0IGNoYW5nZSB0aGUgbWVzc2FnZS4gUmVhY3QgRGV2VG9vbHMgcmVsaWVzIG9uIGl0LiBBbHNvIG1ha2Ugc3VyZVxuICAgIC8vIHRoaXMgbWVzc2FnZSBkb2Vzbid0IG9jY3VyIGVsc2V3aGVyZSBpbiB0aGlzIGZ1bmN0aW9uLCBvciBpdCB3aWxsIGNhdXNlXG4gICAgLy8gYSBmYWxzZSBwb3NpdGl2ZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ15fXicpO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNvZGUgYWJvdmUgaGFzIGJlZW4gZGVhZCBjb2RlIGVsaW1pbmF0ZWQgKERDRSdkKS5cbiAgICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoY2hlY2tEQ0UpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBEZXZUb29scyBzaG91bGRuJ3QgY3Jhc2ggUmVhY3QsIG5vIG1hdHRlciB3aGF0LlxuICAgIC8vIFdlIHNob3VsZCBzdGlsbCByZXBvcnQgaW4gY2FzZSB3ZSBicmVhayB0aGlzIGNvZGUuXG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8vIERDRSBjaGVjayBzaG91bGQgaGFwcGVuIGJlZm9yZSBSZWFjdERPTSBidW5kbGUgZXhlY3V0ZXMgc28gdGhhdFxuICAvLyBEZXZUb29scyBjYW4gcmVwb3J0IGJhZCBtaW5pZmljYXRpb24gZHVyaW5nIGluamVjdGlvbi5cbiAgY2hlY2tEQ0UoKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBtID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBtLmNyZWF0ZVJvb3Q7XG4gIGV4cG9ydHMuaHlkcmF0ZVJvb3QgPSBtLmh5ZHJhdGVSb290O1xufSBlbHNlIHtcbiAgdmFyIGkgPSBtLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBmdW5jdGlvbihjLCBvKSB7XG4gICAgaS51c2luZ0NsaWVudEVudHJ5UG9pbnQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbS5jcmVhdGVSb290KGMsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgZXhwb3J0cy5oeWRyYXRlUm9vdCA9IGZ1bmN0aW9uKGMsIGgsIG8pIHtcbiAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBtLmh5ZHJhdGVSb290KGMsIGgsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbn1cbiIsIi8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IDIwMjEgZUJheSBJbmMuXG5cbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZVxuICogbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIG9yIGF0XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVC5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyoqXG4gKiBAbW9kdWxlIE5pY2VNb2RhbFxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VSZWR1Y2VyLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xudmFyIHN5bU1vZGFsSWQgPSBTeW1ib2woJ05pY2VNb2RhbElkJyk7XG52YXIgaW5pdGlhbFN0YXRlID0ge307XG5leHBvcnQgdmFyIE5pY2VNb2RhbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KGluaXRpYWxTdGF0ZSk7XG52YXIgTmljZU1vZGFsSWRDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbnZhciBNT0RBTF9SRUdJU1RSWSA9IHt9O1xudmFyIEFMUkVBRFlfTU9VTlRFRCA9IHt9O1xudmFyIHVpZFNlZWQgPSAwO1xudmFyIGRpc3BhdGNoID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gZGlzcGF0Y2ggbWV0aG9kIGRldGVjdGVkLCBkaWQgeW91IGVtYmVkIHlvdXIgYXBwIHdpdGggTmljZU1vZGFsLlByb3ZpZGVyPycpO1xufTtcbnZhciBnZXRVaWQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBcIl9uaWNlX21vZGFsX1wiICsgdWlkU2VlZCsrOyB9O1xuLy8gTW9kYWwgcmVkdWNlciB1c2VkIGluIHVzZVJlZHVjZXIgaG9vay5cbmV4cG9ydCB2YXIgcmVkdWNlciA9IGZ1bmN0aW9uIChzdGF0ZSwgYWN0aW9uKSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgaWYgKHN0YXRlID09PSB2b2lkIDApIHsgc3RhdGUgPSBpbml0aWFsU3RhdGU7IH1cbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ25pY2UtbW9kYWwvc2hvdyc6IHtcbiAgICAgICAgICAgIHZhciBfZCA9IGFjdGlvbi5wYXlsb2FkLCBtb2RhbElkID0gX2QubW9kYWxJZCwgYXJncyA9IF9kLmFyZ3M7XG4gICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgKF9hID0ge30sIF9hW21vZGFsSWRdID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlW21vZGFsSWRdKSwgeyBpZDogbW9kYWxJZCwgYXJnczogYXJncywgXG4gICAgICAgICAgICAgICAgLy8gSWYgbW9kYWwgaXMgbm90IG1vdW50ZWQsIG1vdW50IGl0IGZpcnN0IHRoZW4gbWFrZSBpdCB2aXNpYmxlLlxuICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGxvZ2ljIGluc2lkZSBIT0Mgd3JhcHBlciB0byBtYWtlIGl0IHZpc2libGUgYWZ0ZXIgaXRzIGZpcnN0IG1vdW50LlxuICAgICAgICAgICAgICAgIC8vIFRoaXMgbWVjaGFuaXNtIGVuc3VyZXMgdGhlIGVudGVyaW5nIHRyYW5zaXRpb24uXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogISFBTFJFQURZX01PVU5URURbbW9kYWxJZF0sIGRlbGF5VmlzaWJsZTogIUFMUkVBRFlfTU9VTlRFRFttb2RhbElkXSB9KSwgX2EpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICduaWNlLW1vZGFsL2hpZGUnOiB7XG4gICAgICAgICAgICB2YXIgbW9kYWxJZCA9IGFjdGlvbi5wYXlsb2FkLm1vZGFsSWQ7XG4gICAgICAgICAgICBpZiAoIXN0YXRlW21vZGFsSWRdKVxuICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCAoX2IgPSB7fSwgX2JbbW9kYWxJZF0gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGVbbW9kYWxJZF0pLCB7IHZpc2libGU6IGZhbHNlIH0pLCBfYikpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ25pY2UtbW9kYWwvcmVtb3ZlJzoge1xuICAgICAgICAgICAgdmFyIG1vZGFsSWQgPSBhY3Rpb24ucGF5bG9hZC5tb2RhbElkO1xuICAgICAgICAgICAgdmFyIG5ld1N0YXRlID0gX19hc3NpZ24oe30sIHN0YXRlKTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdTdGF0ZVttb2RhbElkXTtcbiAgICAgICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICduaWNlLW1vZGFsL3NldC1mbGFncyc6IHtcbiAgICAgICAgICAgIHZhciBfZSA9IGFjdGlvbi5wYXlsb2FkLCBtb2RhbElkID0gX2UubW9kYWxJZCwgZmxhZ3MgPSBfZS5mbGFncztcbiAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCAoX2MgPSB7fSwgX2NbbW9kYWxJZF0gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGVbbW9kYWxJZF0pLCBmbGFncyksIF9jKSk7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG59O1xuLy8gR2V0IG1vZGFsIGNvbXBvbmVudCBieSBtb2RhbCBpZFxuZnVuY3Rpb24gZ2V0TW9kYWwobW9kYWxJZCkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gTU9EQUxfUkVHSVNUUllbbW9kYWxJZF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb21wO1xufVxuLy8gYWN0aW9uIGNyZWF0b3IgdG8gc2hvdyBhIG1vZGFsXG5mdW5jdGlvbiBzaG93TW9kYWwobW9kYWxJZCwgYXJncykge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICduaWNlLW1vZGFsL3Nob3cnLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBtb2RhbElkOiBtb2RhbElkLFxuICAgICAgICAgICAgYXJnczogYXJncyxcbiAgICAgICAgfSxcbiAgICB9O1xufVxuLy8gYWN0aW9uIGNyZWF0b3IgdG8gc2V0IGZsYWdzIG9mIGEgbW9kYWxcbmZ1bmN0aW9uIHNldE1vZGFsRmxhZ3MobW9kYWxJZCwgZmxhZ3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnbmljZS1tb2RhbC9zZXQtZmxhZ3MnLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBtb2RhbElkOiBtb2RhbElkLFxuICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB9LFxuICAgIH07XG59XG4vLyBhY3Rpb24gY3JlYXRvciB0byBoaWRlIGEgbW9kYWxcbmZ1bmN0aW9uIGhpZGVNb2RhbChtb2RhbElkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ25pY2UtbW9kYWwvaGlkZScsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIG1vZGFsSWQ6IG1vZGFsSWQsXG4gICAgICAgIH0sXG4gICAgfTtcbn1cbi8vIGFjdGlvbiBjcmVhdG9yIHRvIHJlbW92ZSBhIG1vZGFsXG5mdW5jdGlvbiByZW1vdmVNb2RhbChtb2RhbElkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ25pY2UtbW9kYWwvcmVtb3ZlJyxcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgbW9kYWxJZDogbW9kYWxJZCxcbiAgICAgICAgfSxcbiAgICB9O1xufVxudmFyIG1vZGFsQ2FsbGJhY2tzID0ge307XG52YXIgaGlkZU1vZGFsQ2FsbGJhY2tzID0ge307XG52YXIgZ2V0TW9kYWxJZCA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIGlmICh0eXBlb2YgbW9kYWwgPT09ICdzdHJpbmcnKVxuICAgICAgICByZXR1cm4gbW9kYWw7XG4gICAgaWYgKCFtb2RhbFtzeW1Nb2RhbElkXSkge1xuICAgICAgICBtb2RhbFtzeW1Nb2RhbElkXSA9IGdldFVpZCgpO1xuICAgIH1cbiAgICByZXR1cm4gbW9kYWxbc3ltTW9kYWxJZF07XG59O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbmV4cG9ydCBmdW5jdGlvbiBzaG93KG1vZGFsLCBhcmdzKSB7XG4gICAgdmFyIG1vZGFsSWQgPSBnZXRNb2RhbElkKG1vZGFsKTtcbiAgICBpZiAodHlwZW9mIG1vZGFsICE9PSAnc3RyaW5nJyAmJiAhTU9EQUxfUkVHSVNUUllbbW9kYWxJZF0pIHtcbiAgICAgICAgcmVnaXN0ZXIobW9kYWxJZCwgbW9kYWwpO1xuICAgIH1cbiAgICBkaXNwYXRjaChzaG93TW9kYWwobW9kYWxJZCwgYXJncykpO1xuICAgIGlmICghbW9kYWxDYWxsYmFja3NbbW9kYWxJZF0pIHtcbiAgICAgICAgLy8gYCFgIHRlbGwgdHMgdGhhdCB0aGVSZXNvbHZlIHdpbGwgYmUgd3JpdHRlbiBiZWZvcmUgaXQgaXMgdXNlZFxuICAgICAgICB2YXIgdGhlUmVzb2x2ZV8xO1xuICAgICAgICAvLyBgIWAgdGVsbCB0cyB0aGF0IHRoZVJlc29sdmUgd2lsbCBiZSB3cml0dGVuIGJlZm9yZSBpdCBpcyB1c2VkXG4gICAgICAgIHZhciB0aGVSZWplY3RfMTtcbiAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB0aGVSZXNvbHZlXzEgPSByZXNvbHZlO1xuICAgICAgICAgICAgdGhlUmVqZWN0XzEgPSByZWplY3Q7XG4gICAgICAgIH0pO1xuICAgICAgICBtb2RhbENhbGxiYWNrc1ttb2RhbElkXSA9IHtcbiAgICAgICAgICAgIHJlc29sdmU6IHRoZVJlc29sdmVfMSxcbiAgICAgICAgICAgIHJlamVjdDogdGhlUmVqZWN0XzEsXG4gICAgICAgICAgICBwcm9taXNlOiBwcm9taXNlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbW9kYWxDYWxsYmFja3NbbW9kYWxJZF0ucHJvbWlzZTtcbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG5leHBvcnQgZnVuY3Rpb24gaGlkZShtb2RhbCkge1xuICAgIHZhciBtb2RhbElkID0gZ2V0TW9kYWxJZChtb2RhbCk7XG4gICAgZGlzcGF0Y2goaGlkZU1vZGFsKG1vZGFsSWQpKTtcbiAgICAvLyBTaG91bGQgYWxzbyBkZWxldGUgdGhlIGNhbGxiYWNrIGZvciBtb2RhbC5yZXNvbHZlICMzNVxuICAgIGRlbGV0ZSBtb2RhbENhbGxiYWNrc1ttb2RhbElkXTtcbiAgICBpZiAoIWhpZGVNb2RhbENhbGxiYWNrc1ttb2RhbElkXSkge1xuICAgICAgICAvLyBgIWAgdGVsbCB0cyB0aGF0IHRoZVJlc29sdmUgd2lsbCBiZSB3cml0dGVuIGJlZm9yZSBpdCBpcyB1c2VkXG4gICAgICAgIHZhciB0aGVSZXNvbHZlXzI7XG4gICAgICAgIC8vIGAhYCB0ZWxsIHRzIHRoYXQgdGhlUmVzb2x2ZSB3aWxsIGJlIHdyaXR0ZW4gYmVmb3JlIGl0IGlzIHVzZWRcbiAgICAgICAgdmFyIHRoZVJlamVjdF8yO1xuICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHRoZVJlc29sdmVfMiA9IHJlc29sdmU7XG4gICAgICAgICAgICB0aGVSZWplY3RfMiA9IHJlamVjdDtcbiAgICAgICAgfSk7XG4gICAgICAgIGhpZGVNb2RhbENhbGxiYWNrc1ttb2RhbElkXSA9IHtcbiAgICAgICAgICAgIHJlc29sdmU6IHRoZVJlc29sdmVfMixcbiAgICAgICAgICAgIHJlamVjdDogdGhlUmVqZWN0XzIsXG4gICAgICAgICAgICBwcm9taXNlOiBwcm9taXNlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gaGlkZU1vZGFsQ2FsbGJhY2tzW21vZGFsSWRdLnByb21pc2U7XG59XG5leHBvcnQgdmFyIHJlbW92ZSA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIHZhciBtb2RhbElkID0gZ2V0TW9kYWxJZChtb2RhbCk7XG4gICAgZGlzcGF0Y2gocmVtb3ZlTW9kYWwobW9kYWxJZCkpO1xuICAgIGRlbGV0ZSBtb2RhbENhbGxiYWNrc1ttb2RhbElkXTtcbiAgICBkZWxldGUgaGlkZU1vZGFsQ2FsbGJhY2tzW21vZGFsSWRdO1xufTtcbnZhciBzZXRGbGFncyA9IGZ1bmN0aW9uIChtb2RhbElkLCBmbGFncykge1xuICAgIGRpc3BhdGNoKHNldE1vZGFsRmxhZ3MobW9kYWxJZCwgZmxhZ3MpKTtcbn07XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1vZGFsKG1vZGFsLCBhcmdzKSB7XG4gICAgdmFyIG1vZGFscyA9IHVzZUNvbnRleHQoTmljZU1vZGFsQ29udGV4dCk7XG4gICAgdmFyIGNvbnRleHRNb2RhbElkID0gdXNlQ29udGV4dChOaWNlTW9kYWxJZENvbnRleHQpO1xuICAgIHZhciBtb2RhbElkID0gbnVsbDtcbiAgICB2YXIgaXNVc2VDb21wb25lbnQgPSBtb2RhbCAmJiB0eXBlb2YgbW9kYWwgIT09ICdzdHJpbmcnO1xuICAgIGlmICghbW9kYWwpIHtcbiAgICAgICAgbW9kYWxJZCA9IGNvbnRleHRNb2RhbElkO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbW9kYWxJZCA9IGdldE1vZGFsSWQobW9kYWwpO1xuICAgIH1cbiAgICAvLyBPbmx5IGlmIGNvbnRleHRNb2RhbElkIGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIW1vZGFsSWQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gbW9kYWwgaWQgZm91bmQgaW4gTmljZU1vZGFsLnVzZU1vZGFsLicpO1xuICAgIHZhciBtaWQgPSBtb2RhbElkO1xuICAgIC8vIElmIHVzZSBhIGNvbXBvbmVudCBkaXJlY3RseSwgcmVnaXN0ZXIgaXQuXG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzVXNlQ29tcG9uZW50ICYmICFNT0RBTF9SRUdJU1RSWVttaWRdKSB7XG4gICAgICAgICAgICByZWdpc3RlcihtaWQsIG1vZGFsLCBhcmdzKTtcbiAgICAgICAgfVxuICAgIH0sIFtpc1VzZUNvbXBvbmVudCwgbWlkLCBtb2RhbCwgYXJnc10pO1xuICAgIHZhciBtb2RhbEluZm8gPSBtb2RhbHNbbWlkXTtcbiAgICB2YXIgc2hvd0NhbGxiYWNrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGFyZ3MpIHsgcmV0dXJuIHNob3cobWlkLCBhcmdzKTsgfSwgW21pZF0pO1xuICAgIHZhciBoaWRlQ2FsbGJhY2sgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7IHJldHVybiBoaWRlKG1pZCk7IH0sIFttaWRdKTtcbiAgICB2YXIgcmVtb3ZlQ2FsbGJhY2sgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7IHJldHVybiByZW1vdmUobWlkKTsgfSwgW21pZF0pO1xuICAgIHZhciByZXNvbHZlQ2FsbGJhY2sgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoYXJncykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIChfYSA9IG1vZGFsQ2FsbGJhY2tzW21pZF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXNvbHZlKGFyZ3MpO1xuICAgICAgICBkZWxldGUgbW9kYWxDYWxsYmFja3NbbWlkXTtcbiAgICB9LCBbbWlkXSk7XG4gICAgdmFyIHJlamVjdENhbGxiYWNrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAoX2EgPSBtb2RhbENhbGxiYWNrc1ttaWRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVqZWN0KGFyZ3MpO1xuICAgICAgICBkZWxldGUgbW9kYWxDYWxsYmFja3NbbWlkXTtcbiAgICB9LCBbbWlkXSk7XG4gICAgdmFyIHJlc29sdmVIaWRlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAoX2EgPSBoaWRlTW9kYWxDYWxsYmFja3NbbWlkXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlc29sdmUoYXJncyk7XG4gICAgICAgIGRlbGV0ZSBoaWRlTW9kYWxDYWxsYmFja3NbbWlkXTtcbiAgICB9LCBbbWlkXSk7XG4gICAgcmV0dXJuIHVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgaWQ6IG1pZCxcbiAgICAgICAgYXJnczogbW9kYWxJbmZvID09PSBudWxsIHx8IG1vZGFsSW5mbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbW9kYWxJbmZvLmFyZ3MsXG4gICAgICAgIHZpc2libGU6ICEhKG1vZGFsSW5mbyA9PT0gbnVsbCB8fCBtb2RhbEluZm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vZGFsSW5mby52aXNpYmxlKSxcbiAgICAgICAga2VlcE1vdW50ZWQ6ICEhKG1vZGFsSW5mbyA9PT0gbnVsbCB8fCBtb2RhbEluZm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vZGFsSW5mby5rZWVwTW91bnRlZCksXG4gICAgICAgIHNob3c6IHNob3dDYWxsYmFjayxcbiAgICAgICAgaGlkZTogaGlkZUNhbGxiYWNrLFxuICAgICAgICByZW1vdmU6IHJlbW92ZUNhbGxiYWNrLFxuICAgICAgICByZXNvbHZlOiByZXNvbHZlQ2FsbGJhY2ssXG4gICAgICAgIHJlamVjdDogcmVqZWN0Q2FsbGJhY2ssXG4gICAgICAgIHJlc29sdmVIaWRlOiByZXNvbHZlSGlkZSxcbiAgICB9KTsgfSwgW1xuICAgICAgICBtaWQsXG4gICAgICAgIG1vZGFsSW5mbyA9PT0gbnVsbCB8fCBtb2RhbEluZm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vZGFsSW5mby5hcmdzLFxuICAgICAgICBtb2RhbEluZm8gPT09IG51bGwgfHwgbW9kYWxJbmZvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtb2RhbEluZm8udmlzaWJsZSxcbiAgICAgICAgbW9kYWxJbmZvID09PSBudWxsIHx8IG1vZGFsSW5mbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbW9kYWxJbmZvLmtlZXBNb3VudGVkLFxuICAgICAgICBzaG93Q2FsbGJhY2ssXG4gICAgICAgIGhpZGVDYWxsYmFjayxcbiAgICAgICAgcmVtb3ZlQ2FsbGJhY2ssXG4gICAgICAgIHJlc29sdmVDYWxsYmFjayxcbiAgICAgICAgcmVqZWN0Q2FsbGJhY2ssXG4gICAgICAgIHJlc29sdmVIaWRlLFxuICAgIF0pO1xufVxuZXhwb3J0IHZhciBjcmVhdGUgPSBmdW5jdGlvbiAoQ29tcCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIF9iO1xuICAgICAgICB2YXIgZGVmYXVsdFZpc2libGUgPSBfYS5kZWZhdWx0VmlzaWJsZSwga2VlcE1vdW50ZWQgPSBfYS5rZWVwTW91bnRlZCwgaWQgPSBfYS5pZCwgcHJvcHMgPSBfX3Jlc3QoX2EsIFtcImRlZmF1bHRWaXNpYmxlXCIsIFwia2VlcE1vdW50ZWRcIiwgXCJpZFwiXSk7XG4gICAgICAgIHZhciBfYyA9IHVzZU1vZGFsKGlkKSwgYXJncyA9IF9jLmFyZ3MsIHNob3cgPSBfYy5zaG93O1xuICAgICAgICAvLyBJZiB0aGVyZSdzIG1vZGFsIHN0YXRlLCB0aGVuIHNob3VsZCBtb3VudCBpdC5cbiAgICAgICAgdmFyIG1vZGFscyA9IHVzZUNvbnRleHQoTmljZU1vZGFsQ29udGV4dCk7XG4gICAgICAgIHZhciBzaG91bGRNb3VudCA9ICEhbW9kYWxzW2lkXTtcbiAgICAgICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIElmIGRlZmF1bHRWaXNpYmxlLCBzaG93IGl0IGFmdGVyIG1vdW50ZWQuXG4gICAgICAgICAgICBpZiAoZGVmYXVsdFZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzaG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBBTFJFQURZX01PVU5URURbaWRdID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIEFMUkVBRFlfTU9VTlRFRFtpZF07XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCBbaWQsIHNob3csIGRlZmF1bHRWaXNpYmxlXSk7XG4gICAgICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoa2VlcE1vdW50ZWQpXG4gICAgICAgICAgICAgICAgc2V0RmxhZ3MoaWQsIHsga2VlcE1vdW50ZWQ6IHRydWUgfSk7XG4gICAgICAgIH0sIFtpZCwga2VlcE1vdW50ZWRdKTtcbiAgICAgICAgdmFyIGRlbGF5VmlzaWJsZSA9IChfYiA9IG1vZGFsc1tpZF0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5kZWxheVZpc2libGU7XG4gICAgICAgIC8vIElmIG1vZGFsLnNob3cgaXMgY2FsbGVkXG4gICAgICAgIC8vICAxLiBJZiBtb2RhbCB3YXMgbW91bnRlZCwgc2hvdWxkIG1ha2UgaXQgdmlzaWJsZSBkaXJlY3RseVxuICAgICAgICAvLyAgMi4gSWYgbW9kYWwgaGFzIG5vdCBiZWVuIG1vdW50ZWQsIHNob3VsZCBtb3VudCBpdCBmaXJzdCwgdGhlbiBtYWtlIGl0IHZpc2libGVcbiAgICAgICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChkZWxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAvLyBkZWxheVZpc2libGU6IGZhbHNlID0+IHRydWUsIGl0IG1lYW5zIHRoZSBtb2RhbC5zaG93KCkgaXMgY2FsbGVkLCBzaG91bGQgc2hvdyBpdC5cbiAgICAgICAgICAgICAgICBzaG93KGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbZGVsYXlWaXNpYmxlLCBhcmdzLCBzaG93XSk7XG4gICAgICAgIGlmICghc2hvdWxkTW91bnQpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KE5pY2VNb2RhbElkQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogaWQgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcCwgX19hc3NpZ24oe30sIHByb3BzLCBhcmdzKSkpKTtcbiAgICB9O1xufTtcbi8vIEFsbCByZWdpc3RlcmVkIG1vZGFscyB3aWxsIGJlIHJlbmRlcmVkIGluIG1vZGFsIHBsYWNlaG9sZGVyXG5leHBvcnQgdmFyIHJlZ2lzdGVyID0gZnVuY3Rpb24gKGlkLCBjb21wLCBwcm9wcykge1xuICAgIGlmICghTU9EQUxfUkVHSVNUUllbaWRdKSB7XG4gICAgICAgIE1PREFMX1JFR0lTVFJZW2lkXSA9IHsgY29tcDogY29tcCwgcHJvcHM6IHByb3BzIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBNT0RBTF9SRUdJU1RSWVtpZF0ucHJvcHMgPSBwcm9wcztcbiAgICB9XG59O1xuLyoqXG4gKiBVbnJlZ2lzdGVyIGEgbW9kYWwuXG4gKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIG1vZGFsLlxuICovXG5leHBvcnQgdmFyIHVucmVnaXN0ZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICBkZWxldGUgTU9EQUxfUkVHSVNUUllbaWRdO1xufTtcbi8vIFRoZSBwbGFjZWhvbGRlciBjb21wb25lbnQgaXMgdXNlZCB0byBhdXRvIHJlbmRlciBtb2RhbHMgd2hlbiBjYWxsIG1vZGFsLnNob3coKVxuLy8gV2hlbiBtb2RhbC5zaG93KCkgaXMgY2FsbGVkLCBpdCBtZWFucyB0aGVyZSd2ZSBiZWVuIG1vZGFsIGluZm9cbnZhciBOaWNlTW9kYWxQbGFjZWhvbGRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbW9kYWxzID0gdXNlQ29udGV4dChOaWNlTW9kYWxDb250ZXh0KTtcbiAgICB2YXIgdmlzaWJsZU1vZGFsSWRzID0gT2JqZWN0LmtleXMobW9kYWxzKS5maWx0ZXIoZnVuY3Rpb24gKGlkKSB7IHJldHVybiAhIW1vZGFsc1tpZF07IH0pO1xuICAgIHZpc2libGVNb2RhbElkcy5mb3JFYWNoKGZ1bmN0aW9uIChpZCkge1xuICAgICAgICBpZiAoIU1PREFMX1JFR0lTVFJZW2lkXSAmJiAhQUxSRUFEWV9NT1VOVEVEW2lkXSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiTm8gbW9kYWwgZm91bmQgZm9yIGlkOiBcIiArIGlkICsgXCIuIFBsZWFzZSBjaGVjayB0aGUgaWQgb3IgaWYgaXQgaXMgcmVnaXN0ZXJlZCBvciBkZWNsYXJlZCB2aWEgSlNYLlwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHZhciB0b1JlbmRlciA9IHZpc2libGVNb2RhbElkc1xuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gTU9EQUxfUkVHSVNUUllbaWRdOyB9KVxuICAgICAgICAubWFwKGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gKF9fYXNzaWduKHsgaWQ6IGlkIH0sIE1PREFMX1JFR0lTVFJZW2lkXSkpOyB9KTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIHRvUmVuZGVyLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQodC5jb21wLCBfX2Fzc2lnbih7IGtleTogdC5pZCwgaWQ6IHQuaWQgfSwgdC5wcm9wcykpKTsgfSkpKTtcbn07XG52YXIgSW5uZXJDb250ZXh0UHJvdmlkZXIgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBfYS5jaGlsZHJlbjtcbiAgICB2YXIgYXJyID0gdXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuICAgIHZhciBtb2RhbHMgPSBhcnJbMF07XG4gICAgZGlzcGF0Y2ggPSBhcnJbMV07XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KE5pY2VNb2RhbENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IG1vZGFscyB9LFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChOaWNlTW9kYWxQbGFjZWhvbGRlciwgbnVsbCkpKTtcbn07XG5leHBvcnQgdmFyIFByb3ZpZGVyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sIGdpdmVuRGlzcGF0Y2ggPSBfYS5kaXNwYXRjaCwgZ2l2ZW5Nb2RhbHMgPSBfYS5tb2RhbHM7XG4gICAgaWYgKCFnaXZlbkRpc3BhdGNoIHx8ICFnaXZlbk1vZGFscykge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChJbm5lckNvbnRleHRQcm92aWRlciwgbnVsbCwgY2hpbGRyZW4pO1xuICAgIH1cbiAgICBkaXNwYXRjaCA9IGdpdmVuRGlzcGF0Y2g7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KE5pY2VNb2RhbENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGdpdmVuTW9kYWxzIH0sXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KE5pY2VNb2RhbFBsYWNlaG9sZGVyLCBudWxsKSkpO1xufTtcbi8qKlxuICogRGVjbGFyYXRpdmUgd2F5IHRvIHJlZ2lzdGVyIGEgbW9kYWwuXG4gKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIG1vZGFsLlxuICogQHBhcmFtIGNvbXBvbmVudCAtIFRoZSBtb2RhbCBDb21wb25lbnQuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgdmFyIE1vZGFsRGVmID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGlkID0gX2EuaWQsIGNvbXBvbmVudCA9IF9hLmNvbXBvbmVudDtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICByZWdpc3RlcihpZCwgY29tcG9uZW50KTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVucmVnaXN0ZXIoaWQpO1xuICAgICAgICB9O1xuICAgIH0sIFtpZCwgY29tcG9uZW50XSk7XG4gICAgcmV0dXJuIG51bGw7XG59O1xuLyoqXG4gKiBBIHBsYWNlIGhvbGRlciBhbGxvd3MgdG8gYmluZCBwcm9wcyB0byBhIG1vZGFsLlxuICogSXQgYXNzaWducyBzaG93L2hpZGUgbWV0aG9kcyB0byBoYW5kbGVyIG9iamVjdCB0byBzaG93L2hpZGUgdGhlIG1vZGFsLlxuICpcbiAqIENvbXBhcmluZyB0byB1c2UgdGhlIDxNeU5pY2VNb2RhbCBpZD0uLi8+IGRpcmVjdGx5LCB0aGlzIGFwcHJvYWNoIGFsbG93cyB1c2UgcmVnaXN0ZXJlZCBtb2RhbCBpZCB0byBmaW5kIHRoZSBtb2RhbCBjb21wb25lbnQuXG4gKiBBbHNvIGl0IGF2b2lkcyB0byBjcmVhdGUgdW5pcXVlIGlkIGZvciBNeU5pY2VNb2RhbC5cbiAqXG4gKiBAcGFyYW0gbW9kYWwgLSBUaGUgbW9kYWwgaWQgcmVnaXN0ZXJlZCBvciBhIG1vZGFsIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBoYW5kbGVyIC0gVGhlIGhhbmRsZXIgb2JqZWN0IHRvIGNvbnRyb2wgdGhlIG1vZGFsLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IHZhciBNb2RhbEhvbGRlciA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBfYjtcbiAgICB2YXIgbW9kYWwgPSBfYS5tb2RhbCwgX2MgPSBfYS5oYW5kbGVyLCBoYW5kbGVyID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsIHJlc3RQcm9wcyA9IF9fcmVzdChfYSwgW1wibW9kYWxcIiwgXCJoYW5kbGVyXCJdKTtcbiAgICB2YXIgbWlkID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7IHJldHVybiBnZXRVaWQoKTsgfSwgW10pO1xuICAgIHZhciBNb2RhbENvbXAgPSB0eXBlb2YgbW9kYWwgPT09ICdzdHJpbmcnID8gKF9iID0gTU9EQUxfUkVHSVNUUllbbW9kYWxdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY29tcCA6IG1vZGFsO1xuICAgIGlmICghaGFuZGxlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGhhbmRsZXIgZm91bmQgaW4gTmljZU1vZGFsLk1vZGFsSG9sZGVyLicpO1xuICAgIH1cbiAgICBpZiAoIU1vZGFsQ29tcCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBtb2RhbCBmb3VuZCBmb3IgaWQ6IFwiICsgbW9kYWwgKyBcIiBpbiBOaWNlTW9kYWwuTW9kYWxIb2xkZXIuXCIpO1xuICAgIH1cbiAgICBoYW5kbGVyLnNob3cgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoYXJncykgeyByZXR1cm4gc2hvdyhtaWQsIGFyZ3MpOyB9LCBbbWlkXSk7XG4gICAgaGFuZGxlci5oaWRlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkgeyByZXR1cm4gaGlkZShtaWQpOyB9LCBbbWlkXSk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTW9kYWxDb21wLCBfX2Fzc2lnbih7IGlkOiBtaWQgfSwgcmVzdFByb3BzKSk7XG59O1xuZXhwb3J0IHZhciBhbnRkTW9kYWwgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB2aXNpYmxlOiBtb2RhbC52aXNpYmxlLFxuICAgICAgICBvbk9rOiBmdW5jdGlvbiAoKSB7IHJldHVybiBtb2RhbC5oaWRlKCk7IH0sXG4gICAgICAgIG9uQ2FuY2VsOiBmdW5jdGlvbiAoKSB7IHJldHVybiBtb2RhbC5oaWRlKCk7IH0sXG4gICAgICAgIGFmdGVyQ2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gcmVzb2x2ZSBiZWZvcmUgcmVtb3ZlXG4gICAgICAgICAgICBtb2RhbC5yZXNvbHZlSGlkZSgpO1xuICAgICAgICAgICAgaWYgKCFtb2RhbC5rZWVwTW91bnRlZClcbiAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbmV4cG9ydCB2YXIgYW50ZE1vZGFsVjUgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICB2YXIgX2EgPSBhbnRkTW9kYWwobW9kYWwpLCBvbk9rID0gX2Eub25Paywgb25DYW5jZWwgPSBfYS5vbkNhbmNlbCwgYWZ0ZXJDbG9zZSA9IF9hLmFmdGVyQ2xvc2U7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb3BlbjogbW9kYWwudmlzaWJsZSxcbiAgICAgICAgb25Pazogb25PayxcbiAgICAgICAgb25DYW5jZWw6IG9uQ2FuY2VsLFxuICAgICAgICBhZnRlckNsb3NlOiBhZnRlckNsb3NlLFxuICAgIH07XG59O1xuZXhwb3J0IHZhciBhbnRkRHJhd2VyID0gZnVuY3Rpb24gKG1vZGFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmlzaWJsZTogbW9kYWwudmlzaWJsZSxcbiAgICAgICAgb25DbG9zZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gbW9kYWwuaGlkZSgpOyB9LFxuICAgICAgICBhZnRlclZpc2libGVDaGFuZ2U6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICBpZiAoIXYpIHtcbiAgICAgICAgICAgICAgICBtb2RhbC5yZXNvbHZlSGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgIXYgJiYgIW1vZGFsLmtlZXBNb3VudGVkICYmIG1vZGFsLnJlbW92ZSgpO1xuICAgICAgICB9LFxuICAgIH07XG59O1xuZXhwb3J0IHZhciBhbnRkRHJhd2VyVjUgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICB2YXIgX2EgPSBhbnRkRHJhd2VyKG1vZGFsKSwgb25DbG9zZSA9IF9hLm9uQ2xvc2UsIGFmdGVyT3BlbkNoYW5nZSA9IF9hLmFmdGVyVmlzaWJsZUNoYW5nZTtcbiAgICByZXR1cm4ge1xuICAgICAgICBvcGVuOiBtb2RhbC52aXNpYmxlLFxuICAgICAgICBvbkNsb3NlOiBvbkNsb3NlLFxuICAgICAgICBhZnRlck9wZW5DaGFuZ2U6IGFmdGVyT3BlbkNoYW5nZSxcbiAgICB9O1xufTtcbmV4cG9ydCB2YXIgbXVpRGlhbG9nID0gZnVuY3Rpb24gKG1vZGFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb3BlbjogbW9kYWwudmlzaWJsZSxcbiAgICAgICAgb25DbG9zZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gbW9kYWwuaGlkZSgpOyB9LFxuICAgICAgICBvbkV4aXRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbW9kYWwucmVzb2x2ZUhpZGUoKTtcbiAgICAgICAgICAgICFtb2RhbC5rZWVwTW91bnRlZCAmJiBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbmV4cG9ydCB2YXIgbXVpRGlhbG9nVjUgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBvcGVuOiBtb2RhbC52aXNpYmxlLFxuICAgICAgICBvbkNsb3NlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBtb2RhbC5oaWRlKCk7IH0sXG4gICAgICAgIFRyYW5zaXRpb25Qcm9wczoge1xuICAgICAgICAgICAgb25FeGl0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBtb2RhbC5yZXNvbHZlSGlkZSgpO1xuICAgICAgICAgICAgICAgICFtb2RhbC5rZWVwTW91bnRlZCAmJiBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfTtcbn07XG5leHBvcnQgdmFyIGJvb3RzdHJhcERpYWxvZyA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHNob3c6IG1vZGFsLnZpc2libGUsXG4gICAgICAgIG9uSGlkZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gbW9kYWwuaGlkZSgpOyB9LFxuICAgICAgICBvbkV4aXRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbW9kYWwucmVzb2x2ZUhpZGUoKTtcbiAgICAgICAgICAgICFtb2RhbC5rZWVwTW91bnRlZCAmJiBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbnZhciBOaWNlTW9kYWwgPSB7XG4gICAgUHJvdmlkZXI6IFByb3ZpZGVyLFxuICAgIE1vZGFsRGVmOiBNb2RhbERlZixcbiAgICBNb2RhbEhvbGRlcjogTW9kYWxIb2xkZXIsXG4gICAgTmljZU1vZGFsQ29udGV4dDogTmljZU1vZGFsQ29udGV4dCxcbiAgICBjcmVhdGU6IGNyZWF0ZSxcbiAgICByZWdpc3RlcjogcmVnaXN0ZXIsXG4gICAgZ2V0TW9kYWw6IGdldE1vZGFsLFxuICAgIHNob3c6IHNob3csXG4gICAgaGlkZTogaGlkZSxcbiAgICByZW1vdmU6IHJlbW92ZSxcbiAgICB1c2VNb2RhbDogdXNlTW9kYWwsXG4gICAgcmVkdWNlcjogcmVkdWNlcixcbiAgICBhbnRkTW9kYWw6IGFudGRNb2RhbCxcbiAgICBhbnRkRHJhd2VyOiBhbnRkRHJhd2VyLFxuICAgIG11aURpYWxvZzogbXVpRGlhbG9nLFxuICAgIGJvb3RzdHJhcERpYWxvZzogYm9vdHN0cmFwRGlhbG9nLFxufTtcbmV4cG9ydCBkZWZhdWx0IE5pY2VNb2RhbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIlxuZXhwb3J0IGNsYXNzIFNob3Age1xuICAgIGlkOiBudW1iZXIgPSAwXG4gICAgbmFtZTogc3RyaW5nID0gXCJcIlxuICAgIHV1aWQ6IHN0cmluZyA9IFwiXCJcbiAgICBiYXNrZXRGaWVsZDE6IHN0cmluZyA9IFwiXCJcbiAgICBiYXNrZXRGaWVsZDI6IHN0cmluZyA9IFwiXCJcbiAgICBiYXNrZXRQb3NGaWVsZDE6IHN0cmluZyA9IFwiXCJcbiAgICBiYXNrZXRQb3NGaWVsZDI6IHN0cmluZyA9IFwiXCJcblxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuaWQgPSBpdGVtLnNob3AuaWRcbiAgICAgICAgdGhpcy5uYW1lID0gaXRlbS5zaG9wLm5hbWVcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS5zaG9wLnV1aWRcbiAgICAgICAgdGhpcy5iYXNrZXRGaWVsZDEgPSBpdGVtLnNob3AuYmFza2V0RmllbGQxXG4gICAgICAgIHRoaXMuYmFza2V0RmllbGQyID0gaXRlbS5zaG9wLmJhc2tldEZpZWxkMlxuICAgICAgICB0aGlzLmJhc2tldFBvc0ZpZWxkMSA9IGl0ZW0uc2hvcC5iYXNrZXRQb3NGaWVsZDFcbiAgICAgICAgdGhpcy5iYXNrZXRQb3NGaWVsZDIgPSBpdGVtLnNob3AuYmFza2V0UG9zRmllbGQyXG4gICAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgX3R5cGVvZihvKTtcbn1cbmV4cG9ydCB7IF90eXBlb2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbmV4cG9ydCB7IHRvUHJpbWl0aXZlIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCB0b1ByaW1pdGl2ZSBmcm9tIFwiLi90b1ByaW1pdGl2ZS5qc1wiO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5leHBvcnQgeyB0b1Byb3BlcnR5S2V5IGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxuZXhwb3J0IHsgX2RlZmluZVByb3BlcnR5IGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgZGVmaW5lUHJvcGVydHkgZnJvbSBcIi4vZGVmaW5lUHJvcGVydHkuanNcIjtcbmZ1bmN0aW9uIG93bktleXMoZSwgcikge1xuICB2YXIgdCA9IE9iamVjdC5rZXlzKGUpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtcbiAgICByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7XG4gICAgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkMihlKSB7XG4gIGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7XG4gICAgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9O1xuICAgIHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTtcbiAgICB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZTtcbn1cbmV4cG9ydCB7IF9vYmplY3RTcHJlYWQyIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIHI7XG59XG5leHBvcnQgeyBfYXJyYXlXaXRoSG9sZXMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmV4cG9ydCB7IF9pdGVyYWJsZVRvQXJyYXlMaW1pdCBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkge1xuICAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7XG4gIGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdO1xuICByZXR1cm4gbjtcbn1cbmV4cG9ydCB7IF9hcnJheUxpa2VUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkge1xuICBpZiAocikge1xuICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiByKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyLCBhKTtcbiAgICB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpO1xuICAgIHJldHVybiBcIk9iamVjdFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcIk1hcFwiID09PSB0IHx8IFwiU2V0XCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXCJBcmd1bWVudHNcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IGFycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7XG4gIH1cbn1cbmV4cG9ydCB7IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbmV4cG9ydCB7IF9ub25JdGVyYWJsZVJlc3QgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheVdpdGhIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheUxpbWl0IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVJlc3QgZnJvbSBcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCI7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbmV4cG9ydCB7IF9zbGljZWRUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShyLCBlKSB7XG4gIGlmIChudWxsID09IHIpIHJldHVybiB7fTtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgbiBpbiByKSBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChyLCBuKSkge1xuICAgIGlmIChlLmluY2x1ZGVzKG4pKSBjb250aW51ZTtcbiAgICB0W25dID0gcltuXTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbmV4cG9ydCB7IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCI7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoZSwgdCkge1xuICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307XG4gIHZhciBvLFxuICAgIHIsXG4gICAgaSA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoZSwgdCk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIGZvciAociA9IDA7IHIgPCBzLmxlbmd0aDsgcisrKSBvID0gc1tyXSwgdC5pbmNsdWRlcyhvKSB8fCB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsIG8pICYmIChpW29dID0gZVtvXSk7XG4gIH1cbiAgcmV0dXJuIGk7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDInO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXknO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJkZWZhdWx0SW5wdXRWYWx1ZVwiLCBcImRlZmF1bHRNZW51SXNPcGVuXCIsIFwiZGVmYXVsdFZhbHVlXCIsIFwiaW5wdXRWYWx1ZVwiLCBcIm1lbnVJc09wZW5cIiwgXCJvbkNoYW5nZVwiLCBcIm9uSW5wdXRDaGFuZ2VcIiwgXCJvbk1lbnVDbG9zZVwiLCBcIm9uTWVudU9wZW5cIiwgXCJ2YWx1ZVwiXTtcbmZ1bmN0aW9uIHVzZVN0YXRlTWFuYWdlcihfcmVmKSB7XG4gIHZhciBfcmVmJGRlZmF1bHRJbnB1dFZhbHUgPSBfcmVmLmRlZmF1bHRJbnB1dFZhbHVlLFxuICAgIGRlZmF1bHRJbnB1dFZhbHVlID0gX3JlZiRkZWZhdWx0SW5wdXRWYWx1ID09PSB2b2lkIDAgPyAnJyA6IF9yZWYkZGVmYXVsdElucHV0VmFsdSxcbiAgICBfcmVmJGRlZmF1bHRNZW51SXNPcGUgPSBfcmVmLmRlZmF1bHRNZW51SXNPcGVuLFxuICAgIGRlZmF1bHRNZW51SXNPcGVuID0gX3JlZiRkZWZhdWx0TWVudUlzT3BlID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkZGVmYXVsdE1lbnVJc09wZSxcbiAgICBfcmVmJGRlZmF1bHRWYWx1ZSA9IF9yZWYuZGVmYXVsdFZhbHVlLFxuICAgIGRlZmF1bHRWYWx1ZSA9IF9yZWYkZGVmYXVsdFZhbHVlID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRkZWZhdWx0VmFsdWUsXG4gICAgcHJvcHNJbnB1dFZhbHVlID0gX3JlZi5pbnB1dFZhbHVlLFxuICAgIHByb3BzTWVudUlzT3BlbiA9IF9yZWYubWVudUlzT3BlbixcbiAgICBwcm9wc09uQ2hhbmdlID0gX3JlZi5vbkNoYW5nZSxcbiAgICBwcm9wc09uSW5wdXRDaGFuZ2UgPSBfcmVmLm9uSW5wdXRDaGFuZ2UsXG4gICAgcHJvcHNPbk1lbnVDbG9zZSA9IF9yZWYub25NZW51Q2xvc2UsXG4gICAgcHJvcHNPbk1lbnVPcGVuID0gX3JlZi5vbk1lbnVPcGVuLFxuICAgIHByb3BzVmFsdWUgPSBfcmVmLnZhbHVlLFxuICAgIHJlc3RTZWxlY3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQpO1xuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUocHJvcHNJbnB1dFZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm9wc0lucHV0VmFsdWUgOiBkZWZhdWx0SW5wdXRWYWx1ZSksXG4gICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgc3RhdGVJbnB1dFZhbHVlID0gX3VzZVN0YXRlMlswXSxcbiAgICBzZXRTdGF0ZUlucHV0VmFsdWUgPSBfdXNlU3RhdGUyWzFdO1xuICB2YXIgX3VzZVN0YXRlMyA9IHVzZVN0YXRlKHByb3BzTWVudUlzT3BlbiAhPT0gdW5kZWZpbmVkID8gcHJvcHNNZW51SXNPcGVuIDogZGVmYXVsdE1lbnVJc09wZW4pLFxuICAgIF91c2VTdGF0ZTQgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUzLCAyKSxcbiAgICBzdGF0ZU1lbnVJc09wZW4gPSBfdXNlU3RhdGU0WzBdLFxuICAgIHNldFN0YXRlTWVudUlzT3BlbiA9IF91c2VTdGF0ZTRbMV07XG4gIHZhciBfdXNlU3RhdGU1ID0gdXNlU3RhdGUocHJvcHNWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNWYWx1ZSA6IGRlZmF1bHRWYWx1ZSksXG4gICAgX3VzZVN0YXRlNiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTUsIDIpLFxuICAgIHN0YXRlVmFsdWUgPSBfdXNlU3RhdGU2WzBdLFxuICAgIHNldFN0YXRlVmFsdWUgPSBfdXNlU3RhdGU2WzFdO1xuICB2YXIgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAodmFsdWUsIGFjdGlvbk1ldGEpIHtcbiAgICBpZiAodHlwZW9mIHByb3BzT25DaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BzT25DaGFuZ2UodmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cbiAgICBzZXRTdGF0ZVZhbHVlKHZhbHVlKTtcbiAgfSwgW3Byb3BzT25DaGFuZ2VdKTtcbiAgdmFyIG9uSW5wdXRDaGFuZ2UgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAodmFsdWUsIGFjdGlvbk1ldGEpIHtcbiAgICB2YXIgbmV3VmFsdWU7XG4gICAgaWYgKHR5cGVvZiBwcm9wc09uSW5wdXRDaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG5ld1ZhbHVlID0gcHJvcHNPbklucHV0Q2hhbmdlKHZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9XG4gICAgc2V0U3RhdGVJbnB1dFZhbHVlKG5ld1ZhbHVlICE9PSB1bmRlZmluZWQgPyBuZXdWYWx1ZSA6IHZhbHVlKTtcbiAgfSwgW3Byb3BzT25JbnB1dENoYW5nZV0pO1xuICB2YXIgb25NZW51T3BlbiA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHByb3BzT25NZW51T3BlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcHNPbk1lbnVPcGVuKCk7XG4gICAgfVxuICAgIHNldFN0YXRlTWVudUlzT3Blbih0cnVlKTtcbiAgfSwgW3Byb3BzT25NZW51T3Blbl0pO1xuICB2YXIgb25NZW51Q2xvc2UgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wc09uTWVudUNsb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wc09uTWVudUNsb3NlKCk7XG4gICAgfVxuICAgIHNldFN0YXRlTWVudUlzT3BlbihmYWxzZSk7XG4gIH0sIFtwcm9wc09uTWVudUNsb3NlXSk7XG4gIHZhciBpbnB1dFZhbHVlID0gcHJvcHNJbnB1dFZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm9wc0lucHV0VmFsdWUgOiBzdGF0ZUlucHV0VmFsdWU7XG4gIHZhciBtZW51SXNPcGVuID0gcHJvcHNNZW51SXNPcGVuICE9PSB1bmRlZmluZWQgPyBwcm9wc01lbnVJc09wZW4gOiBzdGF0ZU1lbnVJc09wZW47XG4gIHZhciB2YWx1ZSA9IHByb3BzVmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzVmFsdWUgOiBzdGF0ZVZhbHVlO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0U2VsZWN0UHJvcHMpLCB7fSwge1xuICAgIGlucHV0VmFsdWU6IGlucHV0VmFsdWUsXG4gICAgbWVudUlzT3BlbjogbWVudUlzT3BlbixcbiAgICBvbkNoYW5nZTogb25DaGFuZ2UsXG4gICAgb25JbnB1dENoYW5nZTogb25JbnB1dENoYW5nZSxcbiAgICBvbk1lbnVDbG9zZTogb25NZW51Q2xvc2UsXG4gICAgb25NZW51T3Blbjogb25NZW51T3BlbixcbiAgICB2YWx1ZTogdmFsdWVcbiAgfSk7XG59XG5cbmV4cG9ydCB7IHVzZVN0YXRlTWFuYWdlciBhcyB1IH07XG4iLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgcmV0dXJuIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKG4pIHtcbiAgICBmb3IgKHZhciBlID0gMTsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKykge1xuICAgICAgdmFyIHQgPSBhcmd1bWVudHNbZV07XG4gICAgICBmb3IgKHZhciByIGluIHQpICh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LCByKSAmJiAobltyXSA9IHRbcl0pO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSwgX2V4dGVuZHMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn1cbmV4cG9ydCB7IF9leHRlbmRzIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xuICBpZiAoIShhIGluc3RhbmNlb2YgbikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG59XG5leHBvcnQgeyBfY2xhc3NDYWxsQ2hlY2sgYXMgZGVmYXVsdCB9OyIsImltcG9ydCB0b1Byb3BlcnR5S2V5IGZyb20gXCIuL3RvUHJvcGVydHlLZXkuanNcIjtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpIHtcbiAgZm9yICh2YXIgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSB7XG4gICAgdmFyIG8gPSByW3RdO1xuICAgIG8uZW51bWVyYWJsZSA9IG8uZW51bWVyYWJsZSB8fCAhMSwgby5jb25maWd1cmFibGUgPSAhMCwgXCJ2YWx1ZVwiIGluIG8gJiYgKG8ud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0b1Byb3BlcnR5S2V5KG8ua2V5KSwgbyk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhlLCByLCB0KSB7XG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGU7XG59XG5leHBvcnQgeyBfY3JlYXRlQ2xhc3MgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5leHBvcnQgeyBfc2V0UHJvdG90eXBlT2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZnVuY3Rpb24gX2luaGVyaXRzKHQsIGUpIHtcbiAgaWYgKFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgZSAmJiBudWxsICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlICYmIGUucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiB0LFxuICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH1cbiAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlICYmIHNldFByb3RvdHlwZU9mKHQsIGUpO1xufVxuZXhwb3J0IHsgX2luaGVyaXRzIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxuZXhwb3J0IHsgX2dldFByb3RvdHlwZU9mIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICB0cnkge1xuICAgIHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgfSBjYXRjaCAodCkge31cbiAgcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgICByZXR1cm4gISF0O1xuICB9KSgpO1xufVxuZXhwb3J0IHsgX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5leHBvcnQgeyBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCI7XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBlKSB7XG4gIGlmIChlICYmIChcIm9iamVjdFwiID09IF90eXBlb2YoZSkgfHwgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlKSkgcmV0dXJuIGU7XG4gIGlmICh2b2lkIDAgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZCh0KTtcbn1cbmV4cG9ydCB7IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgZ2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vZ2V0UHJvdG90eXBlT2YuanNcIjtcbmltcG9ydCBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgZnJvbSBcIi4vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzXCI7XG5pbXBvcnQgcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiLi9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXCI7XG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIodCkge1xuICB2YXIgciA9IGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBlLFxuICAgICAgbyA9IGdldFByb3RvdHlwZU9mKHQpO1xuICAgIGlmIChyKSB7XG4gICAgICB2YXIgcyA9IGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yO1xuICAgICAgZSA9IFJlZmxlY3QuY29uc3RydWN0KG8sIGFyZ3VtZW50cywgcyk7XG4gICAgfSBlbHNlIGUgPSBvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgZSk7XG4gIH07XG59XG5leHBvcnQgeyBfY3JlYXRlU3VwZXIgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyKTtcbn1cbmV4cG9ydCB7IF9hcnJheVdpdGhvdXRIb2xlcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5leHBvcnQgeyBfaXRlcmFibGVUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuZXhwb3J0IHsgX25vbkl0ZXJhYmxlU3ByZWFkIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlXaXRob3V0SG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVNwcmVhZCBmcm9tIFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxuZXhwb3J0IHsgX3RvQ29uc3VtYWJsZUFycmF5IGFzIGRlZmF1bHQgfTsiLCJ2YXIgaXNEZXZlbG9wbWVudCA9IGZhbHNlO1xuXG4vKlxuXG5CYXNlZCBvZmYgZ2xhbW9yJ3MgU3R5bGVTaGVldCwgdGhhbmtzIFN1bmlsIOKdpO+4j1xuXG5oaWdoIHBlcmZvcm1hbmNlIFN0eWxlU2hlZXQgZm9yIGNzcy1pbi1qcyBzeXN0ZW1zXG5cbi0gdXNlcyBtdWx0aXBsZSBzdHlsZSB0YWdzIGJlaGluZCB0aGUgc2NlbmVzIGZvciBtaWxsaW9ucyBvZiBydWxlc1xuLSB1c2VzIGBpbnNlcnRSdWxlYCBmb3IgYXBwZW5kaW5nIGluIHByb2R1Y3Rpb24gZm9yICptdWNoKiBmYXN0ZXIgcGVyZm9ybWFuY2VcblxuLy8gdXNhZ2VcblxuaW1wb3J0IHsgU3R5bGVTaGVldCB9IGZyb20gJ0BlbW90aW9uL3NoZWV0J1xuXG5sZXQgc3R5bGVTaGVldCA9IG5ldyBTdHlsZVNoZWV0KHsga2V5OiAnJywgY29udGFpbmVyOiBkb2N1bWVudC5oZWFkIH0pXG5cbnN0eWxlU2hlZXQuaW5zZXJ0KCcjYm94IHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9Jylcbi0gYXBwZW5kcyBhIGNzcyBydWxlIGludG8gdGhlIHN0eWxlc2hlZXRcblxuc3R5bGVTaGVldC5mbHVzaCgpXG4tIGVtcHRpZXMgdGhlIHN0eWxlc2hlZXQgb2YgYWxsIGl0cyBjb250ZW50c1xuXG4qL1xuXG5mdW5jdGlvbiBzaGVldEZvclRhZyh0YWcpIHtcbiAgaWYgKHRhZy5zaGVldCkge1xuICAgIHJldHVybiB0YWcuc2hlZXQ7XG4gIH0gLy8gdGhpcyB3ZWlyZG5lc3MgYnJvdWdodCB0byB5b3UgYnkgZmlyZWZveFxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGRvY3VtZW50LnN0eWxlU2hlZXRzW2ldLm93bmVyTm9kZSA9PT0gdGFnKSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuc3R5bGVTaGVldHNbaV07XG4gICAgfVxuICB9IC8vIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsd2F5cyByZXR1cm4gd2l0aCBhIHZhbHVlXG4gIC8vIFRTIGNhbid0IHVuZGVyc3RhbmQgaXQgdGhvdWdoIHNvIHdlIG1ha2UgaXQgc3RvcCBjb21wbGFpbmluZyBoZXJlXG5cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgdGFnLnNldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJywgb3B0aW9ucy5rZXkpO1xuXG4gIGlmIChvcHRpb25zLm5vbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICB0YWcuc2V0QXR0cmlidXRlKCdub25jZScsIG9wdGlvbnMubm9uY2UpO1xuICB9XG5cbiAgdGFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKSk7XG4gIHRhZy5zZXRBdHRyaWJ1dGUoJ2RhdGEtcycsICcnKTtcbiAgcmV0dXJuIHRhZztcbn1cblxudmFyIFN0eWxlU2hlZXQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvLyBVc2luZyBOb2RlIGluc3RlYWQgb2YgSFRNTEVsZW1lbnQgc2luY2UgY29udGFpbmVyIG1heSBiZSBhIFNoYWRvd1Jvb3RcbiAgZnVuY3Rpb24gU3R5bGVTaGVldChvcHRpb25zKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuX2luc2VydFRhZyA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgICAgIHZhciBiZWZvcmU7XG5cbiAgICAgIGlmIChfdGhpcy50YWdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoX3RoaXMuaW5zZXJ0aW9uUG9pbnQpIHtcbiAgICAgICAgICBiZWZvcmUgPSBfdGhpcy5pbnNlcnRpb25Qb2ludC5uZXh0U2libGluZztcbiAgICAgICAgfSBlbHNlIGlmIChfdGhpcy5wcmVwZW5kKSB7XG4gICAgICAgICAgYmVmb3JlID0gX3RoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmVmb3JlID0gX3RoaXMuYmVmb3JlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiZWZvcmUgPSBfdGhpcy50YWdzW190aGlzLnRhZ3MubGVuZ3RoIC0gMV0ubmV4dFNpYmxpbmc7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGFnLCBiZWZvcmUpO1xuXG4gICAgICBfdGhpcy50YWdzLnB1c2godGFnKTtcbiAgICB9O1xuXG4gICAgdGhpcy5pc1NwZWVkeSA9IG9wdGlvbnMuc3BlZWR5ID09PSB1bmRlZmluZWQgPyAhaXNEZXZlbG9wbWVudCA6IG9wdGlvbnMuc3BlZWR5O1xuICAgIHRoaXMudGFncyA9IFtdO1xuICAgIHRoaXMuY3RyID0gMDtcbiAgICB0aGlzLm5vbmNlID0gb3B0aW9ucy5ub25jZTsgLy8ga2V5IGlzIHRoZSB2YWx1ZSBvZiB0aGUgZGF0YS1lbW90aW9uIGF0dHJpYnV0ZSwgaXQncyB1c2VkIHRvIGlkZW50aWZ5IGRpZmZlcmVudCBzaGVldHNcblxuICAgIHRoaXMua2V5ID0gb3B0aW9ucy5rZXk7XG4gICAgdGhpcy5jb250YWluZXIgPSBvcHRpb25zLmNvbnRhaW5lcjtcbiAgICB0aGlzLnByZXBlbmQgPSBvcHRpb25zLnByZXBlbmQ7XG4gICAgdGhpcy5pbnNlcnRpb25Qb2ludCA9IG9wdGlvbnMuaW5zZXJ0aW9uUG9pbnQ7XG4gICAgdGhpcy5iZWZvcmUgPSBudWxsO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IFN0eWxlU2hlZXQucHJvdG90eXBlO1xuXG4gIF9wcm90by5oeWRyYXRlID0gZnVuY3Rpb24gaHlkcmF0ZShub2Rlcykge1xuICAgIG5vZGVzLmZvckVhY2godGhpcy5faW5zZXJ0VGFnKTtcbiAgfTtcblxuICBfcHJvdG8uaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0KHJ1bGUpIHtcbiAgICAvLyB0aGUgbWF4IGxlbmd0aCBpcyBob3cgbWFueSBydWxlcyB3ZSBoYXZlIHBlciBzdHlsZSB0YWcsIGl0J3MgNjUwMDAgaW4gc3BlZWR5IG1vZGVcbiAgICAvLyBpdCdzIDEgaW4gZGV2IGJlY2F1c2Ugd2UgaW5zZXJ0IHNvdXJjZSBtYXBzIHRoYXQgbWFwIGEgc2luZ2xlIHJ1bGUgdG8gYSBsb2NhdGlvblxuICAgIC8vIGFuZCB5b3UgY2FuIG9ubHkgaGF2ZSBvbmUgc291cmNlIG1hcCBwZXIgc3R5bGUgdGFnXG4gICAgaWYgKHRoaXMuY3RyICUgKHRoaXMuaXNTcGVlZHkgPyA2NTAwMCA6IDEpID09PSAwKSB7XG4gICAgICB0aGlzLl9pbnNlcnRUYWcoY3JlYXRlU3R5bGVFbGVtZW50KHRoaXMpKTtcbiAgICB9XG5cbiAgICB2YXIgdGFnID0gdGhpcy50YWdzW3RoaXMudGFncy5sZW5ndGggLSAxXTtcblxuICAgIGlmICh0aGlzLmlzU3BlZWR5KSB7XG4gICAgICB2YXIgc2hlZXQgPSBzaGVldEZvclRhZyh0YWcpO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyB0aGlzIGlzIHRoZSB1bHRyYWZhc3QgdmVyc2lvbiwgd29ya3MgYWNyb3NzIGJyb3dzZXJzXG4gICAgICAgIC8vIHRoZSBiaWcgZHJhd2JhY2sgaXMgdGhhdCB0aGUgY3NzIHdvbid0IGJlIGVkaXRhYmxlIGluIGRldnRvb2xzXG4gICAgICAgIHNoZWV0Lmluc2VydFJ1bGUocnVsZSwgc2hlZXQuY3NzUnVsZXMubGVuZ3RoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJ1bGUpKTtcbiAgICB9XG5cbiAgICB0aGlzLmN0cisrO1xuICB9O1xuXG4gIF9wcm90by5mbHVzaCA9IGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgIHRoaXMudGFncy5mb3JFYWNoKGZ1bmN0aW9uICh0YWcpIHtcbiAgICAgIHZhciBfdGFnJHBhcmVudE5vZGU7XG5cbiAgICAgIHJldHVybiAoX3RhZyRwYXJlbnROb2RlID0gdGFnLnBhcmVudE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfdGFnJHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGFnKTtcbiAgICB9KTtcbiAgICB0aGlzLnRhZ3MgPSBbXTtcbiAgICB0aGlzLmN0ciA9IDA7XG4gIH07XG5cbiAgcmV0dXJuIFN0eWxlU2hlZXQ7XG59KCk7XG5cbmV4cG9ydCB7IFN0eWxlU2hlZXQgfTtcbiIsImV4cG9ydCB2YXIgTVMgPSAnLW1zLSdcbmV4cG9ydCB2YXIgTU9aID0gJy1tb3otJ1xuZXhwb3J0IHZhciBXRUJLSVQgPSAnLXdlYmtpdC0nXG5cbmV4cG9ydCB2YXIgQ09NTUVOVCA9ICdjb21tJ1xuZXhwb3J0IHZhciBSVUxFU0VUID0gJ3J1bGUnXG5leHBvcnQgdmFyIERFQ0xBUkFUSU9OID0gJ2RlY2wnXG5cbmV4cG9ydCB2YXIgUEFHRSA9ICdAcGFnZSdcbmV4cG9ydCB2YXIgTUVESUEgPSAnQG1lZGlhJ1xuZXhwb3J0IHZhciBJTVBPUlQgPSAnQGltcG9ydCdcbmV4cG9ydCB2YXIgQ0hBUlNFVCA9ICdAY2hhcnNldCdcbmV4cG9ydCB2YXIgVklFV1BPUlQgPSAnQHZpZXdwb3J0J1xuZXhwb3J0IHZhciBTVVBQT1JUUyA9ICdAc3VwcG9ydHMnXG5leHBvcnQgdmFyIERPQ1VNRU5UID0gJ0Bkb2N1bWVudCdcbmV4cG9ydCB2YXIgTkFNRVNQQUNFID0gJ0BuYW1lc3BhY2UnXG5leHBvcnQgdmFyIEtFWUZSQU1FUyA9ICdAa2V5ZnJhbWVzJ1xuZXhwb3J0IHZhciBGT05UX0ZBQ0UgPSAnQGZvbnQtZmFjZSdcbmV4cG9ydCB2YXIgQ09VTlRFUl9TVFlMRSA9ICdAY291bnRlci1zdHlsZSdcbmV4cG9ydCB2YXIgRk9OVF9GRUFUVVJFX1ZBTFVFUyA9ICdAZm9udC1mZWF0dXJlLXZhbHVlcydcbmV4cG9ydCB2YXIgTEFZRVIgPSAnQGxheWVyJ1xuIiwiLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IHZhciBhYnMgPSBNYXRoLmFic1xuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgdmFyIGZyb20gPSBTdHJpbmcuZnJvbUNoYXJDb2RlXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCB2YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaCAodmFsdWUsIGxlbmd0aCkge1xuXHRyZXR1cm4gY2hhcmF0KHZhbHVlLCAwKSBeIDQ1ID8gKCgoKCgoKGxlbmd0aCA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMCkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAxKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDIpKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMykgOiAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcGF0dGVyblxuICogQHJldHVybiB7c3RyaW5nP31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoICh2YWx1ZSwgcGF0dGVybikge1xuXHRyZXR1cm4gKHZhbHVlID0gcGF0dGVybi5leGVjKHZhbHVlKSkgPyB2YWx1ZVswXSA6IHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0geyhzdHJpbmd8UmVnRXhwKX0gcGF0dGVyblxuICogQHBhcmFtIHtzdHJpbmd9IHJlcGxhY2VtZW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlICh2YWx1ZSwgcGF0dGVybiwgcmVwbGFjZW1lbnQpIHtcblx0cmV0dXJuIHZhbHVlLnJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleG9mICh2YWx1ZSwgc2VhcmNoKSB7XG5cdHJldHVybiB2YWx1ZS5pbmRleE9mKHNlYXJjaClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhcmF0ICh2YWx1ZSwgaW5kZXgpIHtcblx0cmV0dXJuIHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpIHwgMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdHIgKHZhbHVlLCBiZWdpbiwgZW5kKSB7XG5cdHJldHVybiB2YWx1ZS5zbGljZShiZWdpbiwgZW5kKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RybGVuICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUubGVuZ3RoXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpemVvZiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLmxlbmd0aFxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHthbnlbXX0gYXJyYXlcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZCAodmFsdWUsIGFycmF5KSB7XG5cdHJldHVybiBhcnJheS5wdXNoKHZhbHVlKSwgdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcnJheVxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmUgKGFycmF5LCBjYWxsYmFjaykge1xuXHRyZXR1cm4gYXJyYXkubWFwKGNhbGxiYWNrKS5qb2luKCcnKVxufVxuIiwiaW1wb3J0IHtmcm9tLCB0cmltLCBjaGFyYXQsIHN0cmxlbiwgc3Vic3RyLCBhcHBlbmQsIGFzc2lnbn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuXG5leHBvcnQgdmFyIGxpbmUgPSAxXG5leHBvcnQgdmFyIGNvbHVtbiA9IDFcbmV4cG9ydCB2YXIgbGVuZ3RoID0gMFxuZXhwb3J0IHZhciBwb3NpdGlvbiA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVyID0gMFxuZXhwb3J0IHZhciBjaGFyYWN0ZXJzID0gJydcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3QgfCBudWxsfSBwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgc3RyaW5nfSBwcm9wc1xuICogQHBhcmFtIHtvYmplY3RbXSB8IHN0cmluZ30gY2hpbGRyZW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGUgKHZhbHVlLCByb290LCBwYXJlbnQsIHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoKSB7XG5cdHJldHVybiB7dmFsdWU6IHZhbHVlLCByb290OiByb290LCBwYXJlbnQ6IHBhcmVudCwgdHlwZTogdHlwZSwgcHJvcHM6IHByb3BzLCBjaGlsZHJlbjogY2hpbGRyZW4sIGxpbmU6IGxpbmUsIGNvbHVtbjogY29sdW1uLCBsZW5ndGg6IGxlbmd0aCwgcmV0dXJuOiAnJ31cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3B5IChyb290LCBwcm9wcykge1xuXHRyZXR1cm4gYXNzaWduKG5vZGUoJycsIG51bGwsIG51bGwsICcnLCBudWxsLCBudWxsLCAwKSwgcm9vdCwge2xlbmd0aDogLXJvb3QubGVuZ3RofSwgcHJvcHMpXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhciAoKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmV2ICgpIHtcblx0Y2hhcmFjdGVyID0gcG9zaXRpb24gPiAwID8gY2hhcmF0KGNoYXJhY3RlcnMsIC0tcG9zaXRpb24pIDogMFxuXG5cdGlmIChjb2x1bW4tLSwgY2hhcmFjdGVyID09PSAxMClcblx0XHRjb2x1bW4gPSAxLCBsaW5lLS1cblxuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dCAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uIDwgbGVuZ3RoID8gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKyspIDogMFxuXG5cdGlmIChjb2x1bW4rKywgY2hhcmFjdGVyID09PSAxMClcblx0XHRjb2x1bW4gPSAxLCBsaW5lKytcblxuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGVlayAoKSB7XG5cdHJldHVybiBjaGFyYXQoY2hhcmFjdGVycywgcG9zaXRpb24pXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FyZXQgKCkge1xuXHRyZXR1cm4gcG9zaXRpb25cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gYmVnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlIChiZWdpbiwgZW5kKSB7XG5cdHJldHVybiBzdWJzdHIoY2hhcmFjdGVycywgYmVnaW4sIGVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW4gKHR5cGUpIHtcblx0c3dpdGNoICh0eXBlKSB7XG5cdFx0Ly8gXFwwIFxcdCBcXG4gXFxyIFxccyB3aGl0ZXNwYWNlIHRva2VuXG5cdFx0Y2FzZSAwOiBjYXNlIDk6IGNhc2UgMTA6IGNhc2UgMTM6IGNhc2UgMzI6XG5cdFx0XHRyZXR1cm4gNVxuXHRcdC8vICEgKyAsIC8gPiBAIH4gaXNvbGF0ZSB0b2tlblxuXHRcdGNhc2UgMzM6IGNhc2UgNDM6IGNhc2UgNDQ6IGNhc2UgNDc6IGNhc2UgNjI6IGNhc2UgNjQ6IGNhc2UgMTI2OlxuXHRcdC8vIDsgeyB9IGJyZWFrcG9pbnQgdG9rZW5cblx0XHRjYXNlIDU5OiBjYXNlIDEyMzogY2FzZSAxMjU6XG5cdFx0XHRyZXR1cm4gNFxuXHRcdC8vIDogYWNjb21wYW5pZWQgdG9rZW5cblx0XHRjYXNlIDU4OlxuXHRcdFx0cmV0dXJuIDNcblx0XHQvLyBcIiAnICggWyBvcGVuaW5nIGRlbGltaXQgdG9rZW5cblx0XHRjYXNlIDM0OiBjYXNlIDM5OiBjYXNlIDQwOiBjYXNlIDkxOlxuXHRcdFx0cmV0dXJuIDJcblx0XHQvLyApIF0gY2xvc2luZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSA0MTogY2FzZSA5Mzpcblx0XHRcdHJldHVybiAxXG5cdH1cblxuXHRyZXR1cm4gMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbGxvYyAodmFsdWUpIHtcblx0cmV0dXJuIGxpbmUgPSBjb2x1bW4gPSAxLCBsZW5ndGggPSBzdHJsZW4oY2hhcmFjdGVycyA9IHZhbHVlKSwgcG9zaXRpb24gPSAwLCBbXVxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHJldHVybiB7YW55fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVhbGxvYyAodmFsdWUpIHtcblx0cmV0dXJuIGNoYXJhY3RlcnMgPSAnJywgdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsaW1pdCAodHlwZSkge1xuXHRyZXR1cm4gdHJpbShzbGljZShwb3NpdGlvbiAtIDEsIGRlbGltaXRlcih0eXBlID09PSA5MSA/IHR5cGUgKyAyIDogdHlwZSA9PT0gNDAgPyB0eXBlICsgMSA6IHR5cGUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemUgKHZhbHVlKSB7XG5cdHJldHVybiBkZWFsbG9jKHRva2VuaXplcihhbGxvYyh2YWx1ZSkpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aGl0ZXNwYWNlICh0eXBlKSB7XG5cdHdoaWxlIChjaGFyYWN0ZXIgPSBwZWVrKCkpXG5cdFx0aWYgKGNoYXJhY3RlciA8IDMzKVxuXHRcdFx0bmV4dCgpXG5cdFx0ZWxzZVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gdG9rZW4odHlwZSkgPiAyIHx8IHRva2VuKGNoYXJhY3RlcikgPiAzID8gJycgOiAnICdcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBjaGlsZHJlblxuICogQHJldHVybiB7c3RyaW5nW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbml6ZXIgKGNoaWxkcmVuKSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0c3dpdGNoICh0b2tlbihjaGFyYWN0ZXIpKSB7XG5cdFx0XHRjYXNlIDA6IGFwcGVuZChpZGVudGlmaWVyKHBvc2l0aW9uIC0gMSksIGNoaWxkcmVuKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAyOiBhcHBlbmQoZGVsaW1pdChjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGRlZmF1bHQ6IGFwcGVuZChmcm9tKGNoYXJhY3RlciksIGNoaWxkcmVuKVxuXHRcdH1cblxuXHRyZXR1cm4gY2hpbGRyZW5cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBpbmcgKGluZGV4LCBjb3VudCkge1xuXHR3aGlsZSAoLS1jb3VudCAmJiBuZXh0KCkpXG5cdFx0Ly8gbm90IDAtOSBBLUYgYS1mXG5cdFx0aWYgKGNoYXJhY3RlciA8IDQ4IHx8IGNoYXJhY3RlciA+IDEwMiB8fCAoY2hhcmFjdGVyID4gNTcgJiYgY2hhcmFjdGVyIDwgNjUpIHx8IChjaGFyYWN0ZXIgPiA3MCAmJiBjaGFyYWN0ZXIgPCA5NykpXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiBzbGljZShpbmRleCwgY2FyZXQoKSArIChjb3VudCA8IDYgJiYgcGVlaygpID09IDMyICYmIG5leHQoKSA9PSAzMikpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXRlciAodHlwZSkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHQvLyBdICkgXCIgJ1xuXHRcdFx0Y2FzZSB0eXBlOlxuXHRcdFx0XHRyZXR1cm4gcG9zaXRpb25cblx0XHRcdC8vIFwiICdcblx0XHRcdGNhc2UgMzQ6IGNhc2UgMzk6XG5cdFx0XHRcdGlmICh0eXBlICE9PSAzNCAmJiB0eXBlICE9PSAzOSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIoY2hhcmFjdGVyKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gKFxuXHRcdFx0Y2FzZSA0MDpcblx0XHRcdFx0aWYgKHR5cGUgPT09IDQxKVxuXHRcdFx0XHRcdGRlbGltaXRlcih0eXBlKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFxcblx0XHRcdGNhc2UgOTI6XG5cdFx0XHRcdG5leHQoKVxuXHRcdFx0XHRicmVha1xuXHRcdH1cblxuXHRyZXR1cm4gcG9zaXRpb25cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21tZW50ZXIgKHR5cGUsIGluZGV4KSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0Ly8gLy9cblx0XHRpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDcgKyAxMClcblx0XHRcdGJyZWFrXG5cdFx0Ly8gLypcblx0XHRlbHNlIGlmICh0eXBlICsgY2hhcmFjdGVyID09PSA0MiArIDQyICYmIHBlZWsoKSA9PT0gNDcpXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiAnLyonICsgc2xpY2UoaW5kZXgsIHBvc2l0aW9uIC0gMSkgKyAnKicgKyBmcm9tKHR5cGUgPT09IDQ3ID8gdHlwZSA6IG5leHQoKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZpZXIgKGluZGV4KSB7XG5cdHdoaWxlICghdG9rZW4ocGVlaygpKSlcblx0XHRuZXh0KClcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIHBvc2l0aW9uKVxufVxuIiwiaW1wb3J0IHtDT01NRU5ULCBSVUxFU0VULCBERUNMQVJBVElPTn0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHthYnMsIGNoYXJhdCwgdHJpbSwgZnJvbSwgc2l6ZW9mLCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCByZXBsYWNlLCBpbmRleG9mfSBmcm9tICcuL1V0aWxpdHkuanMnXG5pbXBvcnQge25vZGUsIGNoYXIsIHByZXYsIG5leHQsIHBlZWssIGNhcmV0LCBhbGxvYywgZGVhbGxvYywgZGVsaW1pdCwgd2hpdGVzcGFjZSwgZXNjYXBpbmcsIGlkZW50aWZpZXIsIGNvbW1lbnRlcn0gZnJvbSAnLi9Ub2tlbml6ZXIuanMnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtvYmplY3RbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGUgKHZhbHVlKSB7XG5cdHJldHVybiBkZWFsbG9jKHBhcnNlKCcnLCBudWxsLCBudWxsLCBudWxsLCBbJyddLCB2YWx1ZSA9IGFsbG9jKHZhbHVlKSwgMCwgWzBdLCB2YWx1ZSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc2V0c1xuICogQHBhcmFtIHtudW1iZXJbXX0gcHNldWRvXG4gKiBAcGFyYW0ge251bWJlcltdfSBwb2ludHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGRlY2xhcmF0aW9uc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UgKHZhbHVlLCByb290LCBwYXJlbnQsIHJ1bGUsIHJ1bGVzLCBydWxlc2V0cywgcHNldWRvLCBwb2ludHMsIGRlY2xhcmF0aW9ucykge1xuXHR2YXIgaW5kZXggPSAwXG5cdHZhciBvZmZzZXQgPSAwXG5cdHZhciBsZW5ndGggPSBwc2V1ZG9cblx0dmFyIGF0cnVsZSA9IDBcblx0dmFyIHByb3BlcnR5ID0gMFxuXHR2YXIgcHJldmlvdXMgPSAwXG5cdHZhciB2YXJpYWJsZSA9IDFcblx0dmFyIHNjYW5uaW5nID0gMVxuXHR2YXIgYW1wZXJzYW5kID0gMVxuXHR2YXIgY2hhcmFjdGVyID0gMFxuXHR2YXIgdHlwZSA9ICcnXG5cdHZhciBwcm9wcyA9IHJ1bGVzXG5cdHZhciBjaGlsZHJlbiA9IHJ1bGVzZXRzXG5cdHZhciByZWZlcmVuY2UgPSBydWxlXG5cdHZhciBjaGFyYWN0ZXJzID0gdHlwZVxuXG5cdHdoaWxlIChzY2FubmluZylcblx0XHRzd2l0Y2ggKHByZXZpb3VzID0gY2hhcmFjdGVyLCBjaGFyYWN0ZXIgPSBuZXh0KCkpIHtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmIChwcmV2aW91cyAhPSAxMDggJiYgY2hhcmF0KGNoYXJhY3RlcnMsIGxlbmd0aCAtIDEpID09IDU4KSB7XG5cdFx0XHRcdFx0aWYgKGluZGV4b2YoY2hhcmFjdGVycyArPSByZXBsYWNlKGRlbGltaXQoY2hhcmFjdGVyKSwgJyYnLCAnJlxcZicpLCAnJlxcZicpICE9IC0xKVxuXHRcdFx0XHRcdFx0YW1wZXJzYW5kID0gLTFcblx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHR9XG5cdFx0XHQvLyBcIiAnIFtcblx0XHRcdGNhc2UgMzQ6IGNhc2UgMzk6IGNhc2UgOTE6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gZGVsaW1pdChjaGFyYWN0ZXIpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXHQgXFxuIFxcciBcXHNcblx0XHRcdGNhc2UgOTogY2FzZSAxMDogY2FzZSAxMzogY2FzZSAzMjpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSB3aGl0ZXNwYWNlKHByZXZpb3VzKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFxcblx0XHRcdGNhc2UgOTI6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gZXNjYXBpbmcoY2FyZXQoKSAtIDEsIDcpXG5cdFx0XHRcdGNvbnRpbnVlXG5cdFx0XHQvLyAvXG5cdFx0XHRjYXNlIDQ3OlxuXHRcdFx0XHRzd2l0Y2ggKHBlZWsoKSkge1xuXHRcdFx0XHRcdGNhc2UgNDI6IGNhc2UgNDc6XG5cdFx0XHRcdFx0XHRhcHBlbmQoY29tbWVudChjb21tZW50ZXIobmV4dCgpLCBjYXJldCgpKSwgcm9vdCwgcGFyZW50KSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0Y2hhcmFjdGVycyArPSAnLydcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8ge1xuXHRcdFx0Y2FzZSAxMjMgKiB2YXJpYWJsZTpcblx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gc3RybGVuKGNoYXJhY3RlcnMpICogYW1wZXJzYW5kXG5cdFx0XHQvLyB9IDsgXFwwXG5cdFx0XHRjYXNlIDEyNSAqIHZhcmlhYmxlOiBjYXNlIDU5OiBjYXNlIDA6XG5cdFx0XHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHRcdFx0Ly8gXFwwIH1cblx0XHRcdFx0XHRjYXNlIDA6IGNhc2UgMTI1OiBzY2FubmluZyA9IDBcblx0XHRcdFx0XHQvLyA7XG5cdFx0XHRcdFx0Y2FzZSA1OSArIG9mZnNldDogaWYgKGFtcGVyc2FuZCA9PSAtMSkgY2hhcmFjdGVycyA9IHJlcGxhY2UoY2hhcmFjdGVycywgL1xcZi9nLCAnJylcblx0XHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA+IDAgJiYgKHN0cmxlbihjaGFyYWN0ZXJzKSAtIGxlbmd0aCkpXG5cdFx0XHRcdFx0XHRcdGFwcGVuZChwcm9wZXJ0eSA+IDMyID8gZGVjbGFyYXRpb24oY2hhcmFjdGVycyArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAxKSA6IGRlY2xhcmF0aW9uKHJlcGxhY2UoY2hhcmFjdGVycywgJyAnLCAnJykgKyAnOycsIHJ1bGUsIHBhcmVudCwgbGVuZ3RoIC0gMiksIGRlY2xhcmF0aW9ucylcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gQCA7XG5cdFx0XHRcdFx0Y2FzZSA1OTogY2hhcmFjdGVycyArPSAnOydcblx0XHRcdFx0XHQvLyB7IHJ1bGUvYXQtcnVsZVxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRhcHBlbmQocmVmZXJlbmNlID0gcnVsZXNldChjaGFyYWN0ZXJzLCByb290LCBwYXJlbnQsIGluZGV4LCBvZmZzZXQsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHByb3BzID0gW10sIGNoaWxkcmVuID0gW10sIGxlbmd0aCksIHJ1bGVzZXRzKVxuXG5cdFx0XHRcdFx0XHRpZiAoY2hhcmFjdGVyID09PSAxMjMpXG5cdFx0XHRcdFx0XHRcdGlmIChvZmZzZXQgPT09IDApXG5cdFx0XHRcdFx0XHRcdFx0cGFyc2UoY2hhcmFjdGVycywgcm9vdCwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHByb3BzLCBydWxlc2V0cywgbGVuZ3RoLCBwb2ludHMsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChhdHJ1bGUgPT09IDk5ICYmIGNoYXJhdChjaGFyYWN0ZXJzLCAzKSA9PT0gMTEwID8gMTAwIDogYXRydWxlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBkIGwgbSBzXG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDEwMDogY2FzZSAxMDg6IGNhc2UgMTA5OiBjYXNlIDExNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyc2UodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBydWxlICYmIGFwcGVuZChydWxlc2V0KHZhbHVlLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgMCwgMCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcnVsZXMsIHByb3BzID0gW10sIGxlbmd0aCksIGNoaWxkcmVuKSwgcnVsZXMsIGNoaWxkcmVuLCBsZW5ndGgsIHBvaW50cywgcnVsZSA/IHByb3BzIDogY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBbJyddLCBjaGlsZHJlbiwgMCwgcG9pbnRzLCBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbmRleCA9IG9mZnNldCA9IHByb3BlcnR5ID0gMCwgdmFyaWFibGUgPSBhbXBlcnNhbmQgPSAxLCB0eXBlID0gY2hhcmFjdGVycyA9ICcnLCBsZW5ndGggPSBwc2V1ZG9cblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIDpcblx0XHRcdGNhc2UgNTg6XG5cdFx0XHRcdGxlbmd0aCA9IDEgKyBzdHJsZW4oY2hhcmFjdGVycyksIHByb3BlcnR5ID0gcHJldmlvdXNcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmICh2YXJpYWJsZSA8IDEpXG5cdFx0XHRcdFx0aWYgKGNoYXJhY3RlciA9PSAxMjMpXG5cdFx0XHRcdFx0XHQtLXZhcmlhYmxlXG5cdFx0XHRcdFx0ZWxzZSBpZiAoY2hhcmFjdGVyID09IDEyNSAmJiB2YXJpYWJsZSsrID09IDAgJiYgcHJldigpID09IDEyNSlcblx0XHRcdFx0XHRcdGNvbnRpbnVlXG5cblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXJzICs9IGZyb20oY2hhcmFjdGVyKSwgY2hhcmFjdGVyICogdmFyaWFibGUpIHtcblx0XHRcdFx0XHQvLyAmXG5cdFx0XHRcdFx0Y2FzZSAzODpcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IG9mZnNldCA+IDAgPyAxIDogKGNoYXJhY3RlcnMgKz0gJ1xcZicsIC0xKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAsXG5cdFx0XHRcdFx0Y2FzZSA0NDpcblx0XHRcdFx0XHRcdHBvaW50c1tpbmRleCsrXSA9IChzdHJsZW4oY2hhcmFjdGVycykgLSAxKSAqIGFtcGVyc2FuZCwgYW1wZXJzYW5kID0gMVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAXG5cdFx0XHRcdFx0Y2FzZSA2NDpcblx0XHRcdFx0XHRcdC8vIC1cblx0XHRcdFx0XHRcdGlmIChwZWVrKCkgPT09IDQ1KVxuXHRcdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQobmV4dCgpKVxuXG5cdFx0XHRcdFx0XHRhdHJ1bGUgPSBwZWVrKCksIG9mZnNldCA9IGxlbmd0aCA9IHN0cmxlbih0eXBlID0gY2hhcmFjdGVycyArPSBpZGVudGlmaWVyKGNhcmV0KCkpKSwgY2hhcmFjdGVyKytcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdGNhc2UgNDU6XG5cdFx0XHRcdFx0XHRpZiAocHJldmlvdXMgPT09IDQ1ICYmIHN0cmxlbihjaGFyYWN0ZXJzKSA9PSAyKVxuXHRcdFx0XHRcdFx0XHR2YXJpYWJsZSA9IDBcblx0XHRcdFx0fVxuXHRcdH1cblxuXHRyZXR1cm4gcnVsZXNldHNcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydWxlc2V0ICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBpbmRleCwgb2Zmc2V0LCBydWxlcywgcG9pbnRzLCB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aCkge1xuXHR2YXIgcG9zdCA9IG9mZnNldCAtIDFcblx0dmFyIHJ1bGUgPSBvZmZzZXQgPT09IDAgPyBydWxlcyA6IFsnJ11cblx0dmFyIHNpemUgPSBzaXplb2YocnVsZSlcblxuXHRmb3IgKHZhciBpID0gMCwgaiA9IDAsIGsgPSAwOyBpIDwgaW5kZXg7ICsraSlcblx0XHRmb3IgKHZhciB4ID0gMCwgeSA9IHN1YnN0cih2YWx1ZSwgcG9zdCArIDEsIHBvc3QgPSBhYnMoaiA9IHBvaW50c1tpXSkpLCB6ID0gdmFsdWU7IHggPCBzaXplOyArK3gpXG5cdFx0XHRpZiAoeiA9IHRyaW0oaiA+IDAgPyBydWxlW3hdICsgJyAnICsgeSA6IHJlcGxhY2UoeSwgLyZcXGYvZywgcnVsZVt4XSkpKVxuXHRcdFx0XHRwcm9wc1trKytdID0gelxuXG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIG9mZnNldCA9PT0gMCA/IFJVTEVTRVQgOiB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudCAodmFsdWUsIHJvb3QsIHBhcmVudCkge1xuXHRyZXR1cm4gbm9kZSh2YWx1ZSwgcm9vdCwgcGFyZW50LCBDT01NRU5ULCBmcm9tKGNoYXIoKSksIHN1YnN0cih2YWx1ZSwgMiwgLTIpLCAwKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAodmFsdWUsIHJvb3QsIHBhcmVudCwgbGVuZ3RoKSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIERFQ0xBUkFUSU9OLCBzdWJzdHIodmFsdWUsIDAsIGxlbmd0aCksIHN1YnN0cih2YWx1ZSwgbGVuZ3RoICsgMSwgLTEpLCBsZW5ndGgpXG59XG4iLCJpbXBvcnQge0lNUE9SVCwgTEFZRVIsIENPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OLCBLRVlGUkFNRVN9IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7c3RybGVuLCBzaXplb2Z9IGZyb20gJy4vVXRpbGl0eS5qcydcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHZhciBvdXRwdXQgPSAnJ1xuXHR2YXIgbGVuZ3RoID0gc2l6ZW9mKGNoaWxkcmVuKVxuXG5cdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspXG5cdFx0b3V0cHV0ICs9IGNhbGxiYWNrKGNoaWxkcmVuW2ldLCBpLCBjaGlsZHJlbiwgY2FsbGJhY2spIHx8ICcnXG5cblx0cmV0dXJuIG91dHB1dFxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5IChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBMQVlFUjogaWYgKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKSBicmVha1xuXHRcdGNhc2UgSU1QT1JUOiBjYXNlIERFQ0xBUkFUSU9OOiByZXR1cm4gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnJldHVybiB8fCBlbGVtZW50LnZhbHVlXG5cdFx0Y2FzZSBDT01NRU5UOiByZXR1cm4gJydcblx0XHRjYXNlIEtFWUZSQU1FUzogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykgKyAnfSdcblx0XHRjYXNlIFJVTEVTRVQ6IGVsZW1lbnQudmFsdWUgPSBlbGVtZW50LnByb3BzLmpvaW4oJywnKVxuXHR9XG5cblx0cmV0dXJuIHN0cmxlbihjaGlsZHJlbiA9IHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykpID8gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnZhbHVlICsgJ3snICsgY2hpbGRyZW4gKyAnfScgOiAnJ1xufVxuIiwiaW1wb3J0IHtNUywgTU9aLCBXRUJLSVQsIFJVTEVTRVQsIEtFWUZSQU1FUywgREVDTEFSQVRJT059IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7bWF0Y2gsIGNoYXJhdCwgc3Vic3RyLCBzdHJsZW4sIHNpemVvZiwgcmVwbGFjZSwgY29tYmluZX0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuaW1wb3J0IHtjb3B5LCB0b2tlbml6ZX0gZnJvbSAnLi9Ub2tlbml6ZXIuanMnXG5pbXBvcnQge3NlcmlhbGl6ZX0gZnJvbSAnLi9TZXJpYWxpemVyLmpzJ1xuaW1wb3J0IHtwcmVmaXh9IGZyb20gJy4vUHJlZml4ZXIuanMnXG5cbi8qKlxuICogQHBhcmFtIHtmdW5jdGlvbltdfSBjb2xsZWN0aW9uXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1pZGRsZXdhcmUgKGNvbGxlY3Rpb24pIHtcblx0dmFyIGxlbmd0aCA9IHNpemVvZihjb2xsZWN0aW9uKVxuXG5cdHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRcdHZhciBvdXRwdXQgPSAnJ1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKylcblx0XHRcdG91dHB1dCArPSBjb2xsZWN0aW9uW2ldKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHx8ICcnXG5cblx0XHRyZXR1cm4gb3V0cHV0XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydWxlc2hlZXQgKGNhbGxiYWNrKSB7XG5cdHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCkge1xuXHRcdGlmICghZWxlbWVudC5yb290KVxuXHRcdFx0aWYgKGVsZW1lbnQgPSBlbGVtZW50LnJldHVybilcblx0XHRcdFx0Y2FsbGJhY2soZWxlbWVudClcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4ZXIgKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcblx0aWYgKGVsZW1lbnQubGVuZ3RoID4gLTEpXG5cdFx0aWYgKCFlbGVtZW50LnJldHVybilcblx0XHRcdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0XHRcdGNhc2UgREVDTEFSQVRJT046IGVsZW1lbnQucmV0dXJuID0gcHJlZml4KGVsZW1lbnQudmFsdWUsIGVsZW1lbnQubGVuZ3RoLCBjaGlsZHJlbilcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0Y2FzZSBLRVlGUkFNRVM6XG5cdFx0XHRcdFx0cmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7dmFsdWU6IHJlcGxhY2UoZWxlbWVudC52YWx1ZSwgJ0AnLCAnQCcgKyBXRUJLSVQpfSldLCBjYWxsYmFjaylcblx0XHRcdFx0Y2FzZSBSVUxFU0VUOlxuXHRcdFx0XHRcdGlmIChlbGVtZW50Lmxlbmd0aClcblx0XHRcdFx0XHRcdHJldHVybiBjb21iaW5lKGVsZW1lbnQucHJvcHMsIGZ1bmN0aW9uICh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKG1hdGNoKHZhbHVlLCAvKDo6cGxhY1xcdyt8OnJlYWQtXFx3KykvKSkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIDpyZWFkLShvbmx5fHdyaXRlKVxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJzpyZWFkLW9ubHknOiBjYXNlICc6cmVhZC13cml0ZSc6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHJlYWQtXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV19KV0sIGNhbGxiYWNrKVxuXHRcdFx0XHRcdFx0XHRcdC8vIDpwbGFjZWhvbGRlclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJzo6cGxhY2Vob2xkZXInOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNlcmlhbGl6ZShbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgJzonICsgV0VCS0lUICsgJ2lucHV0LSQxJyldfSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgJzonICsgTU9aICsgJyQxJyldfSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgTVMgKyAnaW5wdXQtJDEnKV19KVxuXHRcdFx0XHRcdFx0XHRcdFx0XSwgY2FsbGJhY2spXG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gJydcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hbWVzcGFjZSAoZWxlbWVudCkge1xuXHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdGNhc2UgUlVMRVNFVDpcblx0XHRcdGVsZW1lbnQucHJvcHMgPSBlbGVtZW50LnByb3BzLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcblx0XHRcdFx0cmV0dXJuIGNvbWJpbmUodG9rZW5pemUodmFsdWUpLCBmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBjaGlsZHJlbikge1xuXHRcdFx0XHRcdHN3aXRjaCAoY2hhcmF0KHZhbHVlLCAwKSkge1xuXHRcdFx0XHRcdFx0Ly8gXFxmXG5cdFx0XHRcdFx0XHRjYXNlIDEyOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc3Vic3RyKHZhbHVlLCAxLCBzdHJsZW4odmFsdWUpKVxuXHRcdFx0XHRcdFx0Ly8gXFwwICggKyA+IH5cblx0XHRcdFx0XHRcdGNhc2UgMDogY2FzZSA0MDogY2FzZSA0MzogY2FzZSA2MjogY2FzZSAxMjY6XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0XHRcdFx0Ly8gOlxuXHRcdFx0XHRcdFx0Y2FzZSA1ODpcblx0XHRcdFx0XHRcdFx0aWYgKGNoaWxkcmVuWysraW5kZXhdID09PSAnZ2xvYmFsJylcblx0XHRcdFx0XHRcdFx0XHRjaGlsZHJlbltpbmRleF0gPSAnJywgY2hpbGRyZW5bKytpbmRleF0gPSAnXFxmJyArIHN1YnN0cihjaGlsZHJlbltpbmRleF0sIGluZGV4ID0gMSwgLTEpXG5cdFx0XHRcdFx0XHQvLyBcXHNcblx0XHRcdFx0XHRcdGNhc2UgMzI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpbmRleCA9PT0gMSA/ICcnIDogdmFsdWVcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoaW5kZXgpIHtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6IGVsZW1lbnQgPSB2YWx1ZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNpemVvZihjaGlsZHJlbikgPiAxID8gJycgOiB2YWx1ZVxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgaW5kZXggPSBzaXplb2YoY2hpbGRyZW4pIC0gMTogY2FzZSAyOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGluZGV4ID09PSAyID8gdmFsdWUgKyBlbGVtZW50ICsgZWxlbWVudCA6IHZhbHVlICsgZWxlbWVudFxuXHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdH1cbn1cbiIsInZhciB3ZWFrTWVtb2l6ZSA9IGZ1bmN0aW9uIHdlYWtNZW1vaXplKGZ1bmMpIHtcbiAgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICBpZiAoY2FjaGUuaGFzKGFyZykpIHtcbiAgICAgIC8vIFVzZSBub24tbnVsbCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBqdXN0IGNoZWNrZWQgdGhhdCB0aGUgY2FjaGUgYGhhc2AgaXRcbiAgICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlbW92ZSBgdW5kZWZpbmVkYCBmcm9tIHRoZSByZXR1cm4gdmFsdWVcbiAgICAgIHJldHVybiBjYWNoZS5nZXQoYXJnKTtcbiAgICB9XG5cbiAgICB2YXIgcmV0ID0gZnVuYyhhcmcpO1xuICAgIGNhY2hlLnNldChhcmcsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbn07XG5cbmV4cG9ydCB7IHdlYWtNZW1vaXplIGFzIGRlZmF1bHQgfTtcbiIsImZ1bmN0aW9uIG1lbW9pemUoZm4pIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICBpZiAoY2FjaGVbYXJnXSA9PT0gdW5kZWZpbmVkKSBjYWNoZVthcmddID0gZm4oYXJnKTtcbiAgICByZXR1cm4gY2FjaGVbYXJnXTtcbiAgfTtcbn1cblxuZXhwb3J0IHsgbWVtb2l6ZSBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgeyBTdHlsZVNoZWV0IH0gZnJvbSAnQGVtb3Rpb24vc2hlZXQnO1xuaW1wb3J0IHsgZGVhbGxvYywgYWxsb2MsIG5leHQsIHRva2VuLCBmcm9tLCBwZWVrLCBkZWxpbWl0LCBzbGljZSwgcG9zaXRpb24sIFJVTEVTRVQsIGNvbWJpbmUsIG1hdGNoLCBzZXJpYWxpemUsIGNvcHksIHJlcGxhY2UsIFdFQktJVCwgTU9aLCBNUywgS0VZRlJBTUVTLCBERUNMQVJBVElPTiwgaGFzaCwgY2hhcmF0LCBzdHJsZW4sIGluZGV4b2YsIHN0cmluZ2lmeSwgcnVsZXNoZWV0LCBtaWRkbGV3YXJlLCBjb21waWxlIH0gZnJvbSAnc3R5bGlzJztcbmltcG9ydCAnQGVtb3Rpb24vd2Vhay1tZW1vaXplJztcbmltcG9ydCAnQGVtb3Rpb24vbWVtb2l6ZSc7XG5cbnZhciBpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmcgPSBmdW5jdGlvbiBpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmcoYmVnaW4sIHBvaW50cywgaW5kZXgpIHtcbiAgdmFyIHByZXZpb3VzID0gMDtcbiAgdmFyIGNoYXJhY3RlciA9IDA7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBwcmV2aW91cyA9IGNoYXJhY3RlcjtcbiAgICBjaGFyYWN0ZXIgPSBwZWVrKCk7IC8vICZcXGZcblxuICAgIGlmIChwcmV2aW91cyA9PT0gMzggJiYgY2hhcmFjdGVyID09PSAxMikge1xuICAgICAgcG9pbnRzW2luZGV4XSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuKGNoYXJhY3RlcikpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIG5leHQoKTtcbiAgfVxuXG4gIHJldHVybiBzbGljZShiZWdpbiwgcG9zaXRpb24pO1xufTtcblxudmFyIHRvUnVsZXMgPSBmdW5jdGlvbiB0b1J1bGVzKHBhcnNlZCwgcG9pbnRzKSB7XG4gIC8vIHByZXRlbmQgd2UndmUgc3RhcnRlZCB3aXRoIGEgY29tbWFcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBjaGFyYWN0ZXIgPSA0NDtcblxuICBkbyB7XG4gICAgc3dpdGNoICh0b2tlbihjaGFyYWN0ZXIpKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIC8vICZcXGZcbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gMzggJiYgcGVlaygpID09PSAxMikge1xuICAgICAgICAgIC8vIHRoaXMgaXMgbm90IDEwMCUgY29ycmVjdCwgd2UgZG9uJ3QgYWNjb3VudCBmb3IgbGl0ZXJhbCBzZXF1ZW5jZXMgaGVyZSAtIGxpa2UgZm9yIGV4YW1wbGUgcXVvdGVkIHN0cmluZ3NcbiAgICAgICAgICAvLyBzdHlsaXMgaW5zZXJ0cyBcXGYgYWZ0ZXIgJiB0byBrbm93IHdoZW4gJiB3aGVyZSBpdCBzaG91bGQgcmVwbGFjZSB0aGlzIHNlcXVlbmNlIHdpdGggdGhlIGNvbnRleHQgc2VsZWN0b3JcbiAgICAgICAgICAvLyBhbmQgd2hlbiBpdCBzaG91bGQganVzdCBjb25jYXRlbmF0ZSB0aGUgb3V0ZXIgYW5kIGlubmVyIHNlbGVjdG9yc1xuICAgICAgICAgIC8vIGl0J3MgdmVyeSB1bmxpa2VseSBmb3IgdGhpcyBzZXF1ZW5jZSB0byBhY3R1YWxseSBhcHBlYXIgaW4gYSBkaWZmZXJlbnQgY29udGV4dCwgc28gd2UganVzdCBsZXZlcmFnZSB0aGlzIGZhY3QgaGVyZVxuICAgICAgICAgIHBvaW50c1tpbmRleF0gPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyc2VkW2luZGV4XSArPSBpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmcocG9zaXRpb24gLSAxLCBwb2ludHMsIGluZGV4KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcGFyc2VkW2luZGV4XSArPSBkZWxpbWl0KGNoYXJhY3Rlcik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDQ6XG4gICAgICAgIC8vIGNvbW1hXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IDQ0KSB7XG4gICAgICAgICAgLy8gY29sb25cbiAgICAgICAgICBwYXJzZWRbKytpbmRleF0gPSBwZWVrKCkgPT09IDU4ID8gJyZcXGYnIDogJyc7XG4gICAgICAgICAgcG9pbnRzW2luZGV4XSA9IHBhcnNlZFtpbmRleF0ubGVuZ3RoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIC8vIGZhbGx0aHJvdWdoXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHBhcnNlZFtpbmRleF0gKz0gZnJvbShjaGFyYWN0ZXIpO1xuICAgIH1cbiAgfSB3aGlsZSAoY2hhcmFjdGVyID0gbmV4dCgpKTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcblxudmFyIGdldFJ1bGVzID0gZnVuY3Rpb24gZ2V0UnVsZXModmFsdWUsIHBvaW50cykge1xuICByZXR1cm4gZGVhbGxvYyh0b1J1bGVzKGFsbG9jKHZhbHVlKSwgcG9pbnRzKSk7XG59OyAvLyBXZWFrU2V0IHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlhdGUsIGJ1dCBvbmx5IFdlYWtNYXAgaXMgc3VwcG9ydGVkIGluIElFMTFcblxuXG52YXIgZml4ZWRFbGVtZW50cyA9IC8qICNfX1BVUkVfXyAqL25ldyBXZWFrTWFwKCk7XG52YXIgY29tcGF0ID0gZnVuY3Rpb24gY29tcGF0KGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQudHlwZSAhPT0gJ3J1bGUnIHx8ICFlbGVtZW50LnBhcmVudCB8fCAvLyBwb3NpdGl2ZSAubGVuZ3RoIGluZGljYXRlcyB0aGF0IHRoaXMgcnVsZSBjb250YWlucyBwc2V1ZG9cbiAgLy8gbmVnYXRpdmUgLmxlbmd0aCBpbmRpY2F0ZXMgdGhhdCB0aGlzIHJ1bGUgaGFzIGJlZW4gYWxyZWFkeSBwcmVmaXhlZFxuICBlbGVtZW50Lmxlbmd0aCA8IDEpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgdmFsdWUgPSBlbGVtZW50LnZhbHVlO1xuICB2YXIgcGFyZW50ID0gZWxlbWVudC5wYXJlbnQ7XG4gIHZhciBpc0ltcGxpY2l0UnVsZSA9IGVsZW1lbnQuY29sdW1uID09PSBwYXJlbnQuY29sdW1uICYmIGVsZW1lbnQubGluZSA9PT0gcGFyZW50LmxpbmU7XG5cbiAgd2hpbGUgKHBhcmVudC50eXBlICE9PSAncnVsZScpIHtcbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgIGlmICghcGFyZW50KSByZXR1cm47XG4gIH0gLy8gc2hvcnQtY2lyY3VpdCBmb3IgdGhlIHNpbXBsZXN0IGNhc2VcblxuXG4gIGlmIChlbGVtZW50LnByb3BzLmxlbmd0aCA9PT0gMSAmJiB2YWx1ZS5jaGFyQ29kZUF0KDApICE9PSA1OFxuICAvKiBjb2xvbiAqL1xuICAmJiAhZml4ZWRFbGVtZW50cy5nZXQocGFyZW50KSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBpZiB0aGlzIGlzIGFuIGltcGxpY2l0bHkgaW5zZXJ0ZWQgcnVsZSAodGhlIG9uZSBlYWdlcmx5IGluc2VydGVkIGF0IHRoZSBlYWNoIG5ldyBuZXN0ZWQgbGV2ZWwpXG4gIC8vIHRoZW4gdGhlIHByb3BzIGhhcyBhbHJlYWR5IGJlZW4gbWFuaXB1bGF0ZWQgYmVmb3JlaGFuZCBhcyB0aGV5IHRoYXQgYXJyYXkgaXMgc2hhcmVkIGJldHdlZW4gaXQgYW5kIGl0cyBcInJ1bGUgcGFyZW50XCJcblxuXG4gIGlmIChpc0ltcGxpY2l0UnVsZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZpeGVkRWxlbWVudHMuc2V0KGVsZW1lbnQsIHRydWUpO1xuICB2YXIgcG9pbnRzID0gW107XG4gIHZhciBydWxlcyA9IGdldFJ1bGVzKHZhbHVlLCBwb2ludHMpO1xuICB2YXIgcGFyZW50UnVsZXMgPSBwYXJlbnQucHJvcHM7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGsgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBhcmVudFJ1bGVzLmxlbmd0aDsgaisrLCBrKyspIHtcbiAgICAgIGVsZW1lbnQucHJvcHNba10gPSBwb2ludHNbaV0gPyBydWxlc1tpXS5yZXBsYWNlKC8mXFxmL2csIHBhcmVudFJ1bGVzW2pdKSA6IHBhcmVudFJ1bGVzW2pdICsgXCIgXCIgKyBydWxlc1tpXTtcbiAgICB9XG4gIH1cbn07XG52YXIgcmVtb3ZlTGFiZWwgPSBmdW5jdGlvbiByZW1vdmVMYWJlbChlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50LnR5cGUgPT09ICdkZWNsJykge1xuICAgIHZhciB2YWx1ZSA9IGVsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAoIC8vIGNoYXJjb2RlIGZvciBsXG4gICAgdmFsdWUuY2hhckNvZGVBdCgwKSA9PT0gMTA4ICYmIC8vIGNoYXJjb2RlIGZvciBiXG4gICAgdmFsdWUuY2hhckNvZGVBdCgyKSA9PT0gOTgpIHtcbiAgICAgIC8vIHRoaXMgaWdub3JlcyBsYWJlbFxuICAgICAgZWxlbWVudFtcInJldHVyblwiXSA9ICcnO1xuICAgICAgZWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxufTtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tZmFsbHRocm91Z2ggKi9cblxuZnVuY3Rpb24gcHJlZml4KHZhbHVlLCBsZW5ndGgpIHtcbiAgc3dpdGNoIChoYXNoKHZhbHVlLCBsZW5ndGgpKSB7XG4gICAgLy8gY29sb3ItYWRqdXN0XG4gICAgY2FzZSA1MTAzOlxuICAgICAgcmV0dXJuIFdFQktJVCArICdwcmludC0nICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBhbmltYXRpb24sIGFuaW1hdGlvbi0oZGVsYXl8ZGlyZWN0aW9ufGR1cmF0aW9ufGZpbGwtbW9kZXxpdGVyYXRpb24tY291bnR8bmFtZXxwbGF5LXN0YXRlfHRpbWluZy1mdW5jdGlvbilcblxuICAgIGNhc2UgNTczNzpcbiAgICBjYXNlIDQyMDE6XG4gICAgY2FzZSAzMTc3OlxuICAgIGNhc2UgMzQzMzpcbiAgICBjYXNlIDE2NDE6XG4gICAgY2FzZSA0NDU3OlxuICAgIGNhc2UgMjkyMTogLy8gdGV4dC1kZWNvcmF0aW9uLCBmaWx0ZXIsIGNsaXAtcGF0aCwgYmFja2ZhY2UtdmlzaWJpbGl0eSwgY29sdW1uLCBib3gtZGVjb3JhdGlvbi1icmVha1xuXG4gICAgY2FzZSA1NTcyOlxuICAgIGNhc2UgNjM1NjpcbiAgICBjYXNlIDU4NDQ6XG4gICAgY2FzZSAzMTkxOlxuICAgIGNhc2UgNjY0NTpcbiAgICBjYXNlIDMwMDU6IC8vIG1hc2ssIG1hc2staW1hZ2UsIG1hc2stKG1vZGV8Y2xpcHxzaXplKSwgbWFzay0ocmVwZWF0fG9yaWdpbiksIG1hc2stcG9zaXRpb24sIG1hc2stY29tcG9zaXRlLFxuXG4gICAgY2FzZSA2MzkxOlxuICAgIGNhc2UgNTg3OTpcbiAgICBjYXNlIDU2MjM6XG4gICAgY2FzZSA2MTM1OlxuICAgIGNhc2UgNDU5OTpcbiAgICBjYXNlIDQ4NTU6IC8vIGJhY2tncm91bmQtY2xpcCwgY29sdW1ucywgY29sdW1uLShjb3VudHxmaWxsfGdhcHxydWxlfHJ1bGUtY29sb3J8cnVsZS1zdHlsZXxydWxlLXdpZHRofHNwYW58d2lkdGgpXG5cbiAgICBjYXNlIDQyMTU6XG4gICAgY2FzZSA2Mzg5OlxuICAgIGNhc2UgNTEwOTpcbiAgICBjYXNlIDUzNjU6XG4gICAgY2FzZSA1NjIxOlxuICAgIGNhc2UgMzgyOTpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGFwcGVhcmFuY2UsIHVzZXItc2VsZWN0LCB0cmFuc2Zvcm0sIGh5cGhlbnMsIHRleHQtc2l6ZS1hZGp1c3RcblxuICAgIGNhc2UgNTM0OTpcbiAgICBjYXNlIDQyNDY6XG4gICAgY2FzZSA0ODEwOlxuICAgIGNhc2UgNjk2ODpcbiAgICBjYXNlIDI3NTY6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNT1ogKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LCBmbGV4LWRpcmVjdGlvblxuXG4gICAgY2FzZSA2ODI4OlxuICAgIGNhc2UgNDI2ODpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBvcmRlclxuXG4gICAgY2FzZSA2MTY1OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC0nICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBhbGlnbi1pdGVtc1xuXG4gICAgY2FzZSA1MTg3OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgcmVwbGFjZSh2YWx1ZSwgLyhcXHcrKS4rKDpbXl0rKS8sIFdFQktJVCArICdib3gtJDEkMicgKyBNUyArICdmbGV4LSQxJDInKSArIHZhbHVlO1xuICAgIC8vIGFsaWduLXNlbGZcblxuICAgIGNhc2UgNTQ0MzpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgJ2ZsZXgtaXRlbS0nICsgcmVwbGFjZSh2YWx1ZSwgL2ZsZXgtfC1zZWxmLywgJycpICsgdmFsdWU7XG4gICAgLy8gYWxpZ24tY29udGVudFxuXG4gICAgY2FzZSA0Njc1OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC1saW5lLXBhY2snICsgcmVwbGFjZSh2YWx1ZSwgL2FsaWduLWNvbnRlbnR8ZmxleC18LXNlbGYvLCAnJykgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LXNocmlua1xuXG4gICAgY2FzZSA1NTQ4OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAnc2hyaW5rJywgJ25lZ2F0aXZlJykgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LWJhc2lzXG5cbiAgICBjYXNlIDUyOTI6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdiYXNpcycsICdwcmVmZXJyZWQtc2l6ZScpICsgdmFsdWU7XG4gICAgLy8gZmxleC1ncm93XG5cbiAgICBjYXNlIDYwNjA6XG4gICAgICByZXR1cm4gV0VCS0lUICsgJ2JveC0nICsgcmVwbGFjZSh2YWx1ZSwgJy1ncm93JywgJycpICsgV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdncm93JywgJ3Bvc2l0aXZlJykgKyB2YWx1ZTtcbiAgICAvLyB0cmFuc2l0aW9uXG5cbiAgICBjYXNlIDQ1NTQ6XG4gICAgICByZXR1cm4gV0VCS0lUICsgcmVwbGFjZSh2YWx1ZSwgLyhbXi1dKSh0cmFuc2Zvcm0pL2csICckMScgKyBXRUJLSVQgKyAnJDInKSArIHZhbHVlO1xuICAgIC8vIGN1cnNvclxuXG4gICAgY2FzZSA2MTg3OlxuICAgICAgcmV0dXJuIHJlcGxhY2UocmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKHpvb20tfGdyYWIpLywgV0VCS0lUICsgJyQxJyksIC8oaW1hZ2Utc2V0KS8sIFdFQktJVCArICckMScpLCB2YWx1ZSwgJycpICsgdmFsdWU7XG4gICAgLy8gYmFja2dyb3VuZCwgYmFja2dyb3VuZC1pbWFnZVxuXG4gICAgY2FzZSA1NDk1OlxuICAgIGNhc2UgMzk1OTpcbiAgICAgIHJldHVybiByZXBsYWNlKHZhbHVlLCAvKGltYWdlLXNldFxcKFteXSopLywgV0VCS0lUICsgJyQxJyArICckYCQxJyk7XG4gICAgLy8ganVzdGlmeS1jb250ZW50XG5cbiAgICBjYXNlIDQ5Njg6XG4gICAgICByZXR1cm4gcmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKC4rOikoZmxleC0pPyguKikvLCBXRUJLSVQgKyAnYm94LXBhY2s6JDMnICsgTVMgKyAnZmxleC1wYWNrOiQzJyksIC9zListYlteO10rLywgJ2p1c3RpZnknKSArIFdFQktJVCArIHZhbHVlICsgdmFsdWU7XG4gICAgLy8gKG1hcmdpbnxwYWRkaW5nKS1pbmxpbmUtKHN0YXJ0fGVuZClcblxuICAgIGNhc2UgNDA5NTpcbiAgICBjYXNlIDM1ODM6XG4gICAgY2FzZSA0MDY4OlxuICAgIGNhc2UgMjUzMjpcbiAgICAgIHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rKS1pbmxpbmUoLispLywgV0VCS0lUICsgJyQxJDInKSArIHZhbHVlO1xuICAgIC8vIChtaW58bWF4KT8od2lkdGh8aGVpZ2h0fGlubGluZS1zaXplfGJsb2NrLXNpemUpXG5cbiAgICBjYXNlIDgxMTY6XG4gICAgY2FzZSA3MDU5OlxuICAgIGNhc2UgNTc1MzpcbiAgICBjYXNlIDU1MzU6XG4gICAgY2FzZSA1NDQ1OlxuICAgIGNhc2UgNTcwMTpcbiAgICBjYXNlIDQ5MzM6XG4gICAgY2FzZSA0Njc3OlxuICAgIGNhc2UgNTUzMzpcbiAgICBjYXNlIDU3ODk6XG4gICAgY2FzZSA1MDIxOlxuICAgIGNhc2UgNDc2NTpcbiAgICAgIC8vIHN0cmV0Y2gsIG1heC1jb250ZW50LCBtaW4tY29udGVudCwgZmlsbC1hdmFpbGFibGVcbiAgICAgIGlmIChzdHJsZW4odmFsdWUpIC0gMSAtIGxlbmd0aCA+IDYpIHN3aXRjaCAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyAxKSkge1xuICAgICAgICAvLyAobSlheC1jb250ZW50LCAobSlpbi1jb250ZW50XG4gICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgIC8vIC1cbiAgICAgICAgICBpZiAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyA0KSAhPT0gNDUpIGJyZWFrO1xuICAgICAgICAvLyAoZilpbGwtYXZhaWxhYmxlLCAoZilpdC1jb250ZW50XG5cbiAgICAgICAgY2FzZSAxMDI6XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLis6KSguKyktKFteXSspLywgJyQxJyArIFdFQktJVCArICckMi0kMycgKyAnJDEnICsgTU9aICsgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMykgPT0gMTA4ID8gJyQzJyA6ICckMi0kMycpKSArIHZhbHVlO1xuICAgICAgICAvLyAocyl0cmV0Y2hcblxuICAgICAgICBjYXNlIDExNTpcbiAgICAgICAgICByZXR1cm4gfmluZGV4b2YodmFsdWUsICdzdHJldGNoJykgPyBwcmVmaXgocmVwbGFjZSh2YWx1ZSwgJ3N0cmV0Y2gnLCAnZmlsbC1hdmFpbGFibGUnKSwgbGVuZ3RoKSArIHZhbHVlIDogdmFsdWU7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICAvLyBwb3NpdGlvbjogc3RpY2t5XG5cbiAgICBjYXNlIDQ5NDk6XG4gICAgICAvLyAocyl0aWNreT9cbiAgICAgIGlmIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDEpICE9PSAxMTUpIGJyZWFrO1xuICAgIC8vIGRpc3BsYXk6IChmbGV4fGlubGluZS1mbGV4KVxuXG4gICAgY2FzZSA2NDQ0OlxuICAgICAgc3dpdGNoIChjaGFyYXQodmFsdWUsIHN0cmxlbih2YWx1ZSkgLSAzIC0gKH5pbmRleG9mKHZhbHVlLCAnIWltcG9ydGFudCcpICYmIDEwKSkpIHtcbiAgICAgICAgLy8gc3RpYyhrKXlcbiAgICAgICAgY2FzZSAxMDc6XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsICc6JywgJzonICsgV0VCS0lUKSArIHZhbHVlO1xuICAgICAgICAvLyAoaW5saW5lLSk/ZmwoZSl4XG5cbiAgICAgICAgY2FzZSAxMDE6XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLis6KShbXjshXSspKDt8IS4rKT8vLCAnJDEnICsgV0VCS0lUICsgKGNoYXJhdCh2YWx1ZSwgMTQpID09PSA0NSA/ICdpbmxpbmUtJyA6ICcnKSArICdib3gkMycgKyAnJDEnICsgV0VCS0lUICsgJyQyJDMnICsgJyQxJyArIE1TICsgJyQyYm94JDMnKSArIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICAvLyB3cml0aW5nLW1vZGVcblxuICAgIGNhc2UgNTkzNjpcbiAgICAgIHN3aXRjaCAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyAxMSkpIHtcbiAgICAgICAgLy8gdmVydGljYWwtbChyKVxuICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsIC9bc3ZoXVxcdystW3RibHJdezJ9LywgJ3RiJykgKyB2YWx1ZTtcbiAgICAgICAgLy8gdmVydGljYWwtcihsKVxuXG4gICAgICAgIGNhc2UgMTA4OlxuICAgICAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAndGItcmwnKSArIHZhbHVlO1xuICAgICAgICAvLyBob3Jpem9udGFsKC0pdGJcblxuICAgICAgICBjYXNlIDQ1OlxuICAgICAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAnbHInKSArIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHZhbHVlICsgdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBwcmVmaXhlciA9IGZ1bmN0aW9uIHByZWZpeGVyKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcbiAgaWYgKGVsZW1lbnQubGVuZ3RoID4gLTEpIGlmICghZWxlbWVudFtcInJldHVyblwiXSkgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICBjYXNlIERFQ0xBUkFUSU9OOlxuICAgICAgZWxlbWVudFtcInJldHVyblwiXSA9IHByZWZpeChlbGVtZW50LnZhbHVlLCBlbGVtZW50Lmxlbmd0aCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgS0VZRlJBTUVTOlxuICAgICAgcmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7XG4gICAgICAgIHZhbHVlOiByZXBsYWNlKGVsZW1lbnQudmFsdWUsICdAJywgJ0AnICsgV0VCS0lUKVxuICAgICAgfSldLCBjYWxsYmFjayk7XG5cbiAgICBjYXNlIFJVTEVTRVQ6XG4gICAgICBpZiAoZWxlbWVudC5sZW5ndGgpIHJldHVybiBjb21iaW5lKGVsZW1lbnQucHJvcHMsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBzd2l0Y2ggKG1hdGNoKHZhbHVlLCAvKDo6cGxhY1xcdyt8OnJlYWQtXFx3KykvKSkge1xuICAgICAgICAgIC8vIDpyZWFkLShvbmx5fHdyaXRlKVxuICAgICAgICAgIGNhc2UgJzpyZWFkLW9ubHknOlxuICAgICAgICAgIGNhc2UgJzpyZWFkLXdyaXRlJzpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHJlYWQtXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV1cbiAgICAgICAgICAgIH0pXSwgY2FsbGJhY2spO1xuICAgICAgICAgIC8vIDpwbGFjZWhvbGRlclxuXG4gICAgICAgICAgY2FzZSAnOjpwbGFjZWhvbGRlcic6XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgcHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBXRUJLSVQgKyAnaW5wdXQtJDEnKV1cbiAgICAgICAgICAgIH0pLCBjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgcHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV1cbiAgICAgICAgICAgIH0pLCBjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgcHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCBNUyArICdpbnB1dC0kMScpXVxuICAgICAgICAgICAgfSldLCBjYWxsYmFjayk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9KTtcbiAgfVxufTtcblxudmFyIGRlZmF1bHRTdHlsaXNQbHVnaW5zID0gW3ByZWZpeGVyXTtcblxudmFyIGNyZWF0ZUNhY2hlID0gZnVuY3Rpb24gY3JlYXRlQ2FjaGUob3B0aW9ucykge1xuICB2YXIga2V5ID0gb3B0aW9ucy5rZXk7XG5cbiAgaWYgKGtleSA9PT0gJ2NzcycpIHtcbiAgICB2YXIgc3NyU3R5bGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW2RhdGEtZW1vdGlvbl06bm90KFtkYXRhLXNdKVwiKTsgLy8gZ2V0IFNTUmVkIHN0eWxlcyBvdXQgb2YgdGhlIHdheSBvZiBSZWFjdCdzIGh5ZHJhdGlvblxuICAgIC8vIGRvY3VtZW50LmhlYWQgaXMgYSBzYWZlIHBsYWNlIHRvIG1vdmUgdGhlbSB0byh0aG91Z2ggbm90ZSBkb2N1bWVudC5oZWFkIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgbGFzdCBwbGFjZSB0aGV5IHdpbGwgYmUpXG4gICAgLy8gbm90ZSB0aGlzIHZlcnkgdmVyeSBpbnRlbnRpb25hbGx5IHRhcmdldHMgYWxsIHN0eWxlIGVsZW1lbnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGtleSB0byBlbnN1cmVcbiAgICAvLyB0aGF0IGNyZWF0aW5nIGEgY2FjaGUgd29ya3MgaW5zaWRlIG9mIHJlbmRlciBvZiBhIFJlYWN0IGNvbXBvbmVudFxuXG4gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChzc3JTdHlsZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAvLyB3ZSB3YW50IHRvIG9ubHkgbW92ZSBlbGVtZW50cyB3aGljaCBoYXZlIGEgc3BhY2UgaW4gdGhlIGRhdGEtZW1vdGlvbiBhdHRyaWJ1dGUgdmFsdWVcbiAgICAgIC8vIGJlY2F1c2UgdGhhdCBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBhbiBFbW90aW9uIDExIHNlcnZlci1zaWRlIHJlbmRlcmVkIHN0eWxlIGVsZW1lbnRzXG4gICAgICAvLyB3aGlsZSB3ZSB3aWxsIGFscmVhZHkgaWdub3JlIEVtb3Rpb24gMTEgY2xpZW50LXNpZGUgaW5zZXJ0ZWQgc3R5bGVzIGJlY2F1c2Ugb2YgdGhlIDpub3QoW2RhdGEtc10pIHBhcnQgaW4gdGhlIHNlbGVjdG9yXG4gICAgICAvLyBFbW90aW9uIDEwIGNsaWVudC1zaWRlIGluc2VydGVkIHN0eWxlcyBkaWQgbm90IGhhdmUgZGF0YS1zIChidXQgaW1wb3J0YW50bHkgZGlkIG5vdCBoYXZlIGEgc3BhY2UgaW4gdGhlaXIgZGF0YS1lbW90aW9uIGF0dHJpYnV0ZXMpXG4gICAgICAvLyBzbyBjaGVja2luZyBmb3IgdGhlIHNwYWNlIGVuc3VyZXMgdGhhdCBsb2FkaW5nIEVtb3Rpb24gMTEgYWZ0ZXIgRW1vdGlvbiAxMCBoYXMgaW5zZXJ0ZWQgc29tZSBzdHlsZXNcbiAgICAgIC8vIHdpbGwgbm90IHJlc3VsdCBpbiB0aGUgRW1vdGlvbiAxMCBzdHlsZXMgYmVpbmcgZGVzdHJveWVkXG4gICAgICB2YXIgZGF0YUVtb3Rpb25BdHRyaWJ1dGUgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJyk7XG5cbiAgICAgIGlmIChkYXRhRW1vdGlvbkF0dHJpYnV0ZS5pbmRleE9mKCcgJykgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLXMnLCAnJyk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgc3R5bGlzUGx1Z2lucyA9IG9wdGlvbnMuc3R5bGlzUGx1Z2lucyB8fCBkZWZhdWx0U3R5bGlzUGx1Z2lucztcblxuICB2YXIgaW5zZXJ0ZWQgPSB7fTtcbiAgdmFyIGNvbnRhaW5lcjtcbiAgdmFyIG5vZGVzVG9IeWRyYXRlID0gW107XG5cbiAge1xuICAgIGNvbnRhaW5lciA9IG9wdGlvbnMuY29udGFpbmVyIHx8IGRvY3VtZW50LmhlYWQ7XG4gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCggLy8gdGhpcyBtZWFucyB3ZSB3aWxsIGlnbm9yZSBlbGVtZW50cyB3aGljaCBkb24ndCBoYXZlIGEgc3BhY2UgaW4gdGhlbSB3aGljaFxuICAgIC8vIG1lYW5zIHRoYXQgdGhlIHN0eWxlIGVsZW1lbnRzIHdlJ3JlIGxvb2tpbmcgYXQgYXJlIG9ubHkgRW1vdGlvbiAxMSBzZXJ2ZXItcmVuZGVyZWQgc3R5bGUgZWxlbWVudHNcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVbZGF0YS1lbW90aW9uXj1cXFwiXCIgKyBrZXkgKyBcIiBcXFwiXVwiKSwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBhdHRyaWIgPSBub2RlLmdldEF0dHJpYnV0ZShcImRhdGEtZW1vdGlvblwiKS5zcGxpdCgnICcpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGF0dHJpYi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpbnNlcnRlZFthdHRyaWJbaV1dID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgbm9kZXNUb0h5ZHJhdGUucHVzaChub2RlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBfaW5zZXJ0O1xuXG4gIHZhciBvbW5pcHJlc2VudFBsdWdpbnMgPSBbY29tcGF0LCByZW1vdmVMYWJlbF07XG5cbiAge1xuICAgIHZhciBjdXJyZW50U2hlZXQ7XG4gICAgdmFyIGZpbmFsaXppbmdQbHVnaW5zID0gW3N0cmluZ2lmeSwgcnVsZXNoZWV0KGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICBjdXJyZW50U2hlZXQuaW5zZXJ0KHJ1bGUpO1xuICAgIH0pXTtcbiAgICB2YXIgc2VyaWFsaXplciA9IG1pZGRsZXdhcmUob21uaXByZXNlbnRQbHVnaW5zLmNvbmNhdChzdHlsaXNQbHVnaW5zLCBmaW5hbGl6aW5nUGx1Z2lucykpO1xuXG4gICAgdmFyIHN0eWxpcyA9IGZ1bmN0aW9uIHN0eWxpcyhzdHlsZXMpIHtcbiAgICAgIHJldHVybiBzZXJpYWxpemUoY29tcGlsZShzdHlsZXMpLCBzZXJpYWxpemVyKTtcbiAgICB9O1xuXG4gICAgX2luc2VydCA9IGZ1bmN0aW9uIGluc2VydChzZWxlY3Rvciwgc2VyaWFsaXplZCwgc2hlZXQsIHNob3VsZENhY2hlKSB7XG4gICAgICBjdXJyZW50U2hlZXQgPSBzaGVldDtcblxuICAgICAgc3R5bGlzKHNlbGVjdG9yID8gc2VsZWN0b3IgKyBcIntcIiArIHNlcmlhbGl6ZWQuc3R5bGVzICsgXCJ9XCIgOiBzZXJpYWxpemVkLnN0eWxlcyk7XG5cbiAgICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgICBjYWNoZS5pbnNlcnRlZFtzZXJpYWxpemVkLm5hbWVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgdmFyIGNhY2hlID0ge1xuICAgIGtleToga2V5LFxuICAgIHNoZWV0OiBuZXcgU3R5bGVTaGVldCh7XG4gICAgICBrZXk6IGtleSxcbiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgICAgbm9uY2U6IG9wdGlvbnMubm9uY2UsXG4gICAgICBzcGVlZHk6IG9wdGlvbnMuc3BlZWR5LFxuICAgICAgcHJlcGVuZDogb3B0aW9ucy5wcmVwZW5kLFxuICAgICAgaW5zZXJ0aW9uUG9pbnQ6IG9wdGlvbnMuaW5zZXJ0aW9uUG9pbnRcbiAgICB9KSxcbiAgICBub25jZTogb3B0aW9ucy5ub25jZSxcbiAgICBpbnNlcnRlZDogaW5zZXJ0ZWQsXG4gICAgcmVnaXN0ZXJlZDoge30sXG4gICAgaW5zZXJ0OiBfaW5zZXJ0XG4gIH07XG4gIGNhY2hlLnNoZWV0Lmh5ZHJhdGUobm9kZXNUb0h5ZHJhdGUpO1xuICByZXR1cm4gY2FjaGU7XG59O1xuXG5leHBvcnQgeyBjcmVhdGVDYWNoZSBhcyBkZWZhdWx0IH07XG4iLCIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO3ZhciBiPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsYz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLGQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGU9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsZj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxnPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksaz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGw9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYXN5bmNfbW9kZVwiKTo2MDExMSxtPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxuPWI/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHA9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMscT1iP1xuU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAscj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LHQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNix2PWI/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLHc9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcseD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgseT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtcbmZ1bmN0aW9uIHooYSl7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSl7dmFyIHU9YS4kJHR5cGVvZjtzd2l0Y2godSl7Y2FzZSBjOnN3aXRjaChhPWEudHlwZSxhKXtjYXNlIGw6Y2FzZSBtOmNhc2UgZTpjYXNlIGc6Y2FzZSBmOmNhc2UgcDpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgbjpjYXNlIHQ6Y2FzZSByOmNhc2UgaDpyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB1fX1jYXNlIGQ6cmV0dXJuIHV9fX1mdW5jdGlvbiBBKGEpe3JldHVybiB6KGEpPT09bX1leHBvcnRzLkFzeW5jTW9kZT1sO2V4cG9ydHMuQ29uY3VycmVudE1vZGU9bTtleHBvcnRzLkNvbnRleHRDb25zdW1lcj1rO2V4cG9ydHMuQ29udGV4dFByb3ZpZGVyPWg7ZXhwb3J0cy5FbGVtZW50PWM7ZXhwb3J0cy5Gb3J3YXJkUmVmPW47ZXhwb3J0cy5GcmFnbWVudD1lO2V4cG9ydHMuTGF6eT10O2V4cG9ydHMuTWVtbz1yO2V4cG9ydHMuUG9ydGFsPWQ7XG5leHBvcnRzLlByb2ZpbGVyPWc7ZXhwb3J0cy5TdHJpY3RNb2RlPWY7ZXhwb3J0cy5TdXNwZW5zZT1wO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIEEoYSl8fHooYSk9PT1sfTtleHBvcnRzLmlzQ29uY3VycmVudE1vZGU9QTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09a307ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWh9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1jfTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PW59O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWV9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09dH07XG5leHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXJ9O2V4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1kfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1nfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWZ9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXB9O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWV8fGE9PT1tfHxhPT09Z3x8YT09PWZ8fGE9PT1wfHxhPT09cXx8XCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmKGEuJCR0eXBlb2Y9PT10fHxhLiQkdHlwZW9mPT09cnx8YS4kJHR5cGVvZj09PWh8fGEuJCR0eXBlb2Y9PT1rfHxhLiQkdHlwZW9mPT09bnx8YS4kJHR5cGVvZj09PXd8fGEuJCR0eXBlb2Y9PT14fHxhLiQkdHlwZW9mPT09eXx8YS4kJHR5cGVvZj09PXYpfTtleHBvcnRzLnR5cGVPZj16O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciByZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28hIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xudmFyIFJFQUNUX1NUQVRJQ1MgPSB7XG4gIGNoaWxkQ29udGV4dFR5cGVzOiB0cnVlLFxuICBjb250ZXh0VHlwZTogdHJ1ZSxcbiAgY29udGV4dFR5cGVzOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBnZXREZWZhdWx0UHJvcHM6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiB0cnVlLFxuICBtaXhpbnM6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBLTk9XTl9TVEFUSUNTID0ge1xuICBuYW1lOiB0cnVlLFxuICBsZW5ndGg6IHRydWUsXG4gIHByb3RvdHlwZTogdHJ1ZSxcbiAgY2FsbGVyOiB0cnVlLFxuICBjYWxsZWU6IHRydWUsXG4gIGFyZ3VtZW50czogdHJ1ZSxcbiAgYXJpdHk6IHRydWVcbn07XG52YXIgRk9SV0FSRF9SRUZfU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgcmVuZGVyOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWVcbn07XG52YXIgTUVNT19TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICBjb21wYXJlOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgVFlQRV9TVEFUSUNTID0ge307XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5Gb3J3YXJkUmVmXSA9IEZPUldBUkRfUkVGX1NUQVRJQ1M7XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5NZW1vXSA9IE1FTU9fU1RBVElDUztcblxuZnVuY3Rpb24gZ2V0U3RhdGljcyhjb21wb25lbnQpIHtcbiAgLy8gUmVhY3QgdjE2LjExIGFuZCBiZWxvd1xuICBpZiAocmVhY3RJcy5pc01lbW8oY29tcG9uZW50KSkge1xuICAgIHJldHVybiBNRU1PX1NUQVRJQ1M7XG4gIH0gLy8gUmVhY3QgdjE2LjEyIGFuZCBhYm92ZVxuXG5cbiAgcmV0dXJuIFRZUEVfU1RBVElDU1tjb21wb25lbnRbJyQkdHlwZW9mJ11dIHx8IFJFQUNUX1NUQVRJQ1M7XG59XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xudmFyIG9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG5mdW5jdGlvbiBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCwgYmxhY2tsaXN0KSB7XG4gIGlmICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGhvaXN0IG92ZXIgc3RyaW5nIChodG1sKSBjb21wb25lbnRzXG4gICAgaWYgKG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgdmFyIGluaGVyaXRlZENvbXBvbmVudCA9IGdldFByb3RvdHlwZU9mKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICAgIGlmIChpbmhlcml0ZWRDb21wb25lbnQgJiYgaW5oZXJpdGVkQ29tcG9uZW50ICE9PSBvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgICAgaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBpbmhlcml0ZWRDb21wb25lbnQsIGJsYWNrbGlzdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZUNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIHZhciB0YXJnZXRTdGF0aWNzID0gZ2V0U3RhdGljcyh0YXJnZXRDb21wb25lbnQpO1xuICAgIHZhciBzb3VyY2VTdGF0aWNzID0gZ2V0U3RhdGljcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKCFLTk9XTl9TVEFUSUNTW2tleV0gJiYgIShibGFja2xpc3QgJiYgYmxhY2tsaXN0W2tleV0pICYmICEoc291cmNlU3RhdGljcyAmJiBzb3VyY2VTdGF0aWNzW2tleV0pICYmICEodGFyZ2V0U3RhdGljcyAmJiB0YXJnZXRTdGF0aWNzW2tleV0pKSB7XG4gICAgICAgIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZUNvbXBvbmVudCwga2V5KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEF2b2lkIGZhaWx1cmVzIGZyb20gcmVhZC1vbmx5IHByb3BlcnRpZXNcbiAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXRDb21wb25lbnQsIGtleSwgZGVzY3JpcHRvcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBob2lzdE5vblJlYWN0U3RhdGljcztcbiIsImltcG9ydCBob2lzdE5vblJlYWN0U3RhdGljcyQxIGZyb20gJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcblxuLy8gdGhpcyBmaWxlIGlzb2xhdGVzIHRoaXMgcGFja2FnZSB0aGF0IGlzIG5vdCB0cmVlLXNoYWtlYWJsZVxuLy8gYW5kIGlmIHRoaXMgbW9kdWxlIGRvZXNuJ3QgYWN0dWFsbHkgY29udGFpbiBhbnkgbG9naWMgb2YgaXRzIG93blxuLy8gdGhlbiBSb2xsdXAganVzdCB1c2UgJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJyBkaXJlY3RseSBpbiBvdGhlciBjaHVua3NcblxudmFyIGhvaXN0Tm9uUmVhY3RTdGF0aWNzID0gKGZ1bmN0aW9uICh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCkge1xuICByZXR1cm4gaG9pc3ROb25SZWFjdFN0YXRpY3MkMSh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCk7XG59KTtcblxuZXhwb3J0IHsgaG9pc3ROb25SZWFjdFN0YXRpY3MgYXMgZGVmYXVsdCB9O1xuIiwidmFyIGlzQnJvd3NlciA9IHRydWU7XG5cbmZ1bmN0aW9uIGdldFJlZ2lzdGVyZWRTdHlsZXMocmVnaXN0ZXJlZCwgcmVnaXN0ZXJlZFN0eWxlcywgY2xhc3NOYW1lcykge1xuICB2YXIgcmF3Q2xhc3NOYW1lID0gJyc7XG4gIGNsYXNzTmFtZXMuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICBpZiAocmVnaXN0ZXJlZFtjbGFzc05hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlZ2lzdGVyZWRTdHlsZXMucHVzaChyZWdpc3RlcmVkW2NsYXNzTmFtZV0gKyBcIjtcIik7XG4gICAgfSBlbHNlIGlmIChjbGFzc05hbWUpIHtcbiAgICAgIHJhd0NsYXNzTmFtZSArPSBjbGFzc05hbWUgKyBcIiBcIjtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmF3Q2xhc3NOYW1lO1xufVxudmFyIHJlZ2lzdGVyU3R5bGVzID0gZnVuY3Rpb24gcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKSB7XG4gIHZhciBjbGFzc05hbWUgPSBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcblxuICBpZiAoIC8vIHdlIG9ubHkgbmVlZCB0byBhZGQgdGhlIHN0eWxlcyB0byB0aGUgcmVnaXN0ZXJlZCBjYWNoZSBpZiB0aGVcbiAgLy8gY2xhc3MgbmFtZSBjb3VsZCBiZSB1c2VkIGZ1cnRoZXIgZG93blxuICAvLyB0aGUgdHJlZSBidXQgaWYgaXQncyBhIHN0cmluZyB0YWcsIHdlIGtub3cgaXQgd29uJ3RcbiAgLy8gc28gd2UgZG9uJ3QgaGF2ZSB0byBhZGQgaXQgdG8gcmVnaXN0ZXJlZCBjYWNoZS5cbiAgLy8gdGhpcyBpbXByb3ZlcyBtZW1vcnkgdXNhZ2Ugc2luY2Ugd2UgY2FuIGF2b2lkIHN0b3JpbmcgdGhlIHdob2xlIHN0eWxlIHN0cmluZ1xuICAoaXNTdHJpbmdUYWcgPT09IGZhbHNlIHx8IC8vIHdlIG5lZWQgdG8gYWx3YXlzIHN0b3JlIGl0IGlmIHdlJ3JlIGluIGNvbXBhdCBtb2RlIGFuZFxuICAvLyBpbiBub2RlIHNpbmNlIGVtb3Rpb24tc2VydmVyIHJlbGllcyBvbiB3aGV0aGVyIGEgc3R5bGUgaXMgaW5cbiAgLy8gdGhlIHJlZ2lzdGVyZWQgY2FjaGUgdG8ga25vdyB3aGV0aGVyIGEgc3R5bGUgaXMgZ2xvYmFsIG9yIG5vdFxuICAvLyBhbHNvLCBub3RlIHRoYXQgdGhpcyBjaGVjayB3aWxsIGJlIGRlYWQgY29kZSBlbGltaW5hdGVkIGluIHRoZSBicm93c2VyXG4gIGlzQnJvd3NlciA9PT0gZmFsc2UgKSAmJiBjYWNoZS5yZWdpc3RlcmVkW2NsYXNzTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgIGNhY2hlLnJlZ2lzdGVyZWRbY2xhc3NOYW1lXSA9IHNlcmlhbGl6ZWQuc3R5bGVzO1xuICB9XG59O1xudmFyIGluc2VydFN0eWxlcyA9IGZ1bmN0aW9uIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpIHtcbiAgcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKTtcbiAgdmFyIGNsYXNzTmFtZSA9IGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuXG4gIGlmIChjYWNoZS5pbnNlcnRlZFtzZXJpYWxpemVkLm5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgY3VycmVudCA9IHNlcmlhbGl6ZWQ7XG5cbiAgICBkbyB7XG4gICAgICBjYWNoZS5pbnNlcnQoc2VyaWFsaXplZCA9PT0gY3VycmVudCA/IFwiLlwiICsgY2xhc3NOYW1lIDogJycsIGN1cnJlbnQsIGNhY2hlLnNoZWV0LCB0cnVlKTtcblxuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9IHdoaWxlIChjdXJyZW50ICE9PSB1bmRlZmluZWQpO1xuICB9XG59O1xuXG5leHBvcnQgeyBnZXRSZWdpc3RlcmVkU3R5bGVzLCBpbnNlcnRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzIH07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2dhcnljb3VydC9tdXJtdXJoYXNoLWpzXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYWFwcGxlYnkvc21oYXNoZXIvYmxvYi82MWEwNTMwZjI4Mjc3ZjJlODUwYmZjMzk2MDBjZTYxZDAyYjUxOGRlL3NyYy9NdXJtdXJIYXNoMi5jcHAjTDM3LUw4NlxuZnVuY3Rpb24gbXVybXVyMihzdHIpIHtcbiAgLy8gJ20nIGFuZCAncicgYXJlIG1peGluZyBjb25zdGFudHMgZ2VuZXJhdGVkIG9mZmxpbmUuXG4gIC8vIFRoZXkncmUgbm90IHJlYWxseSAnbWFnaWMnLCB0aGV5IGp1c3QgaGFwcGVuIHRvIHdvcmsgd2VsbC5cbiAgLy8gY29uc3QgbSA9IDB4NWJkMWU5OTU7XG4gIC8vIGNvbnN0IHIgPSAyNDtcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgaGFzaFxuICB2YXIgaCA9IDA7IC8vIE1peCA0IGJ5dGVzIGF0IGEgdGltZSBpbnRvIHRoZSBoYXNoXG5cbiAgdmFyIGssXG4gICAgICBpID0gMCxcbiAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XG5cbiAgZm9yICg7IGxlbiA+PSA0OyArK2ksIGxlbiAtPSA0KSB7XG4gICAgayA9IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhmZiB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHhmZikgPDwgOCB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHhmZikgPDwgMTYgfCAoc3RyLmNoYXJDb2RlQXQoKytpKSAmIDB4ZmYpIDw8IDI0O1xuICAgIGsgPVxuICAgIC8qIE1hdGguaW11bChrLCBtKTogKi9cbiAgICAoayAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChrID4+PiAxNikgKiAweGU5OTUgPDwgMTYpO1xuICAgIGsgXj1cbiAgICAvKiBrID4+PiByOiAqL1xuICAgIGsgPj4+IDI0O1xuICAgIGggPVxuICAgIC8qIE1hdGguaW11bChrLCBtKTogKi9cbiAgICAoayAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChrID4+PiAxNikgKiAweGU5OTUgPDwgMTYpIF5cbiAgICAvKiBNYXRoLmltdWwoaCwgbSk6ICovXG4gICAgKGggJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoaCA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgfSAvLyBIYW5kbGUgdGhlIGxhc3QgZmV3IGJ5dGVzIG9mIHRoZSBpbnB1dCBhcnJheVxuXG5cbiAgc3dpdGNoIChsZW4pIHtcbiAgICBjYXNlIDM6XG4gICAgICBoIF49IChzdHIuY2hhckNvZGVBdChpICsgMikgJiAweGZmKSA8PCAxNjtcblxuICAgIGNhc2UgMjpcbiAgICAgIGggXj0gKHN0ci5jaGFyQ29kZUF0KGkgKyAxKSAmIDB4ZmYpIDw8IDg7XG5cbiAgICBjYXNlIDE6XG4gICAgICBoIF49IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhmZjtcbiAgICAgIGggPVxuICAgICAgLyogTWF0aC5pbXVsKGgsIG0pOiAqL1xuICAgICAgKGggJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoaCA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgfSAvLyBEbyBhIGZldyBmaW5hbCBtaXhlcyBvZiB0aGUgaGFzaCB0byBlbnN1cmUgdGhlIGxhc3QgZmV3XG4gIC8vIGJ5dGVzIGFyZSB3ZWxsLWluY29ycG9yYXRlZC5cblxuXG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPVxuICAvKiBNYXRoLmltdWwoaCwgbSk6ICovXG4gIChoICYgMHhmZmZmKSAqIDB4NWJkMWU5OTUgKyAoKGggPj4+IDE2KSAqIDB4ZTk5NSA8PCAxNik7XG4gIHJldHVybiAoKGggXiBoID4+PiAxNSkgPj4+IDApLnRvU3RyaW5nKDM2KTtcbn1cblxuZXhwb3J0IHsgbXVybXVyMiBhcyBkZWZhdWx0IH07XG4iLCJ2YXIgdW5pdGxlc3NLZXlzID0ge1xuICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogMSxcbiAgYXNwZWN0UmF0aW86IDEsXG4gIGJvcmRlckltYWdlT3V0c2V0OiAxLFxuICBib3JkZXJJbWFnZVNsaWNlOiAxLFxuICBib3JkZXJJbWFnZVdpZHRoOiAxLFxuICBib3hGbGV4OiAxLFxuICBib3hGbGV4R3JvdXA6IDEsXG4gIGJveE9yZGluYWxHcm91cDogMSxcbiAgY29sdW1uQ291bnQ6IDEsXG4gIGNvbHVtbnM6IDEsXG4gIGZsZXg6IDEsXG4gIGZsZXhHcm93OiAxLFxuICBmbGV4UG9zaXRpdmU6IDEsXG4gIGZsZXhTaHJpbms6IDEsXG4gIGZsZXhOZWdhdGl2ZTogMSxcbiAgZmxleE9yZGVyOiAxLFxuICBncmlkUm93OiAxLFxuICBncmlkUm93RW5kOiAxLFxuICBncmlkUm93U3BhbjogMSxcbiAgZ3JpZFJvd1N0YXJ0OiAxLFxuICBncmlkQ29sdW1uOiAxLFxuICBncmlkQ29sdW1uRW5kOiAxLFxuICBncmlkQ29sdW1uU3BhbjogMSxcbiAgZ3JpZENvbHVtblN0YXJ0OiAxLFxuICBtc0dyaWRSb3c6IDEsXG4gIG1zR3JpZFJvd1NwYW46IDEsXG4gIG1zR3JpZENvbHVtbjogMSxcbiAgbXNHcmlkQ29sdW1uU3BhbjogMSxcbiAgZm9udFdlaWdodDogMSxcbiAgbGluZUhlaWdodDogMSxcbiAgb3BhY2l0eTogMSxcbiAgb3JkZXI6IDEsXG4gIG9ycGhhbnM6IDEsXG4gIHNjYWxlOiAxLFxuICB0YWJTaXplOiAxLFxuICB3aWRvd3M6IDEsXG4gIHpJbmRleDogMSxcbiAgem9vbTogMSxcbiAgV2Via2l0TGluZUNsYW1wOiAxLFxuICAvLyBTVkctcmVsYXRlZCBwcm9wZXJ0aWVzXG4gIGZpbGxPcGFjaXR5OiAxLFxuICBmbG9vZE9wYWNpdHk6IDEsXG4gIHN0b3BPcGFjaXR5OiAxLFxuICBzdHJva2VEYXNoYXJyYXk6IDEsXG4gIHN0cm9rZURhc2hvZmZzZXQ6IDEsXG4gIHN0cm9rZU1pdGVybGltaXQ6IDEsXG4gIHN0cm9rZU9wYWNpdHk6IDEsXG4gIHN0cm9rZVdpZHRoOiAxXG59O1xuXG5leHBvcnQgeyB1bml0bGVzc0tleXMgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IGhhc2hTdHJpbmcgZnJvbSAnQGVtb3Rpb24vaGFzaCc7XG5pbXBvcnQgdW5pdGxlc3MgZnJvbSAnQGVtb3Rpb24vdW5pdGxlc3MnO1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnQGVtb3Rpb24vbWVtb2l6ZSc7XG5cbnZhciBpc0RldmVsb3BtZW50ID0gZmFsc2U7XG5cbnZhciBoeXBoZW5hdGVSZWdleCA9IC9bQS1aXXxebXMvZztcbnZhciBhbmltYXRpb25SZWdleCA9IC9fRU1PXyhbXl9dKz8pXyhbXl0qPylfRU1PXy9nO1xuXG52YXIgaXNDdXN0b21Qcm9wZXJ0eSA9IGZ1bmN0aW9uIGlzQ3VzdG9tUHJvcGVydHkocHJvcGVydHkpIHtcbiAgcmV0dXJuIHByb3BlcnR5LmNoYXJDb2RlQXQoMSkgPT09IDQ1O1xufTtcblxudmFyIGlzUHJvY2Vzc2FibGVWYWx1ZSA9IGZ1bmN0aW9uIGlzUHJvY2Vzc2FibGVWYWx1ZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJztcbn07XG5cbnZhciBwcm9jZXNzU3R5bGVOYW1lID0gLyogI19fUFVSRV9fICovbWVtb2l6ZShmdW5jdGlvbiAoc3R5bGVOYW1lKSB7XG4gIHJldHVybiBpc0N1c3RvbVByb3BlcnR5KHN0eWxlTmFtZSkgPyBzdHlsZU5hbWUgOiBzdHlsZU5hbWUucmVwbGFjZShoeXBoZW5hdGVSZWdleCwgJy0kJicpLnRvTG93ZXJDYXNlKCk7XG59KTtcblxudmFyIHByb2Nlc3NTdHlsZVZhbHVlID0gZnVuY3Rpb24gcHJvY2Vzc1N0eWxlVmFsdWUoa2V5LCB2YWx1ZSkge1xuICBzd2l0Y2ggKGtleSkge1xuICAgIGNhc2UgJ2FuaW1hdGlvbic6XG4gICAgY2FzZSAnYW5pbWF0aW9uTmFtZSc6XG4gICAgICB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoYW5pbWF0aW9uUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCwgcDEsIHAyKSB7XG4gICAgICAgICAgICBjdXJzb3IgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IHAxLFxuICAgICAgICAgICAgICBzdHlsZXM6IHAyLFxuICAgICAgICAgICAgICBuZXh0OiBjdXJzb3JcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gcDE7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIGlmICh1bml0bGVzc1trZXldICE9PSAxICYmICFpc0N1c3RvbVByb3BlcnR5KGtleSkgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB2YWx1ZSArICdweCc7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG52YXIgbm9Db21wb25lbnRTZWxlY3Rvck1lc3NhZ2UgPSAnQ29tcG9uZW50IHNlbGVjdG9ycyBjYW4gb25seSBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggJyArICdAZW1vdGlvbi9iYWJlbC1wbHVnaW4sIHRoZSBzd2MgRW1vdGlvbiBwbHVnaW4sIG9yIGFub3RoZXIgRW1vdGlvbi1hd2FyZSAnICsgJ2NvbXBpbGVyIHRyYW5zZm9ybS4nO1xuXG5mdW5jdGlvbiBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBpbnRlcnBvbGF0aW9uKSB7XG4gIGlmIChpbnRlcnBvbGF0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICB2YXIgY29tcG9uZW50U2VsZWN0b3IgPSBpbnRlcnBvbGF0aW9uO1xuXG4gIGlmIChjb21wb25lbnRTZWxlY3Rvci5fX2Vtb3Rpb25fc3R5bGVzICE9PSB1bmRlZmluZWQpIHtcblxuICAgIHJldHVybiBjb21wb25lbnRTZWxlY3RvcjtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZW9mIGludGVycG9sYXRpb24pIHtcbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIHtcbiAgICAgICAgdmFyIGtleWZyYW1lcyA9IGludGVycG9sYXRpb247XG5cbiAgICAgICAgaWYgKGtleWZyYW1lcy5hbmltID09PSAxKSB7XG4gICAgICAgICAgY3Vyc29yID0ge1xuICAgICAgICAgICAgbmFtZToga2V5ZnJhbWVzLm5hbWUsXG4gICAgICAgICAgICBzdHlsZXM6IGtleWZyYW1lcy5zdHlsZXMsXG4gICAgICAgICAgICBuZXh0OiBjdXJzb3JcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBrZXlmcmFtZXMubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzZXJpYWxpemVkU3R5bGVzID0gaW50ZXJwb2xhdGlvbjtcblxuICAgICAgICBpZiAoc2VyaWFsaXplZFN0eWxlcy5zdHlsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciBuZXh0ID0gc2VyaWFsaXplZFN0eWxlcy5uZXh0O1xuXG4gICAgICAgICAgaWYgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gbm90IHRoZSBtb3N0IGVmZmljaWVudCB0aGluZyBldmVyIGJ1dCB0aGlzIGlzIGEgcHJldHR5IHJhcmUgY2FzZVxuICAgICAgICAgICAgLy8gYW5kIHRoZXJlIHdpbGwgYmUgdmVyeSBmZXcgaXRlcmF0aW9ucyBvZiB0aGlzIGdlbmVyYWxseVxuICAgICAgICAgICAgd2hpbGUgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjdXJzb3IgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogbmV4dC5uYW1lLFxuICAgICAgICAgICAgICAgIHN0eWxlczogbmV4dC5zdHlsZXMsXG4gICAgICAgICAgICAgICAgbmV4dDogY3Vyc29yXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIG5leHQgPSBuZXh0Lm5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHN0eWxlcyA9IHNlcmlhbGl6ZWRTdHlsZXMuc3R5bGVzICsgXCI7XCI7XG4gICAgICAgICAgcmV0dXJuIHN0eWxlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjcmVhdGVTdHJpbmdGcm9tT2JqZWN0KG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBpbnRlcnBvbGF0aW9uKTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgIHtcbiAgICAgICAgaWYgKG1lcmdlZFByb3BzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YXIgcHJldmlvdXNDdXJzb3IgPSBjdXJzb3I7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGludGVycG9sYXRpb24obWVyZ2VkUHJvcHMpO1xuICAgICAgICAgIGN1cnNvciA9IHByZXZpb3VzQ3Vyc29yO1xuICAgICAgICAgIHJldHVybiBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCByZXN1bHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gIH0gLy8gZmluYWxpemUgc3RyaW5nIHZhbHVlcyAocmVndWxhciBzdHJpbmdzIGFuZCBmdW5jdGlvbnMgaW50ZXJwb2xhdGVkIGludG8gY3NzIGNhbGxzKVxuXG5cbiAgdmFyIGFzU3RyaW5nID0gaW50ZXJwb2xhdGlvbjtcblxuICBpZiAocmVnaXN0ZXJlZCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGFzU3RyaW5nO1xuICB9XG5cbiAgdmFyIGNhY2hlZCA9IHJlZ2lzdGVyZWRbYXNTdHJpbmddO1xuICByZXR1cm4gY2FjaGVkICE9PSB1bmRlZmluZWQgPyBjYWNoZWQgOiBhc1N0cmluZztcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3RyaW5nRnJvbU9iamVjdChtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgb2JqKSB7XG4gIHZhciBzdHJpbmcgPSAnJztcblxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgIHN0cmluZyArPSBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBvYmpbaV0pICsgXCI7XCI7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB2YXIgYXNTdHJpbmcgPSB2YWx1ZTtcblxuICAgICAgICBpZiAocmVnaXN0ZXJlZCAhPSBudWxsICYmIHJlZ2lzdGVyZWRbYXNTdHJpbmddICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdHJpbmcgKz0ga2V5ICsgXCJ7XCIgKyByZWdpc3RlcmVkW2FzU3RyaW5nXSArIFwifVwiO1xuICAgICAgICB9IGVsc2UgaWYgKGlzUHJvY2Vzc2FibGVWYWx1ZShhc1N0cmluZykpIHtcbiAgICAgICAgICBzdHJpbmcgKz0gcHJvY2Vzc1N0eWxlTmFtZShrZXkpICsgXCI6XCIgKyBwcm9jZXNzU3R5bGVWYWx1ZShrZXksIGFzU3RyaW5nKSArIFwiO1wiO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoa2V5ID09PSAnTk9fQ09NUE9ORU5UX1NFTEVDVE9SJyAmJiBpc0RldmVsb3BtZW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG5vQ29tcG9uZW50U2VsZWN0b3JNZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB0eXBlb2YgdmFsdWVbMF0gPT09ICdzdHJpbmcnICYmIChyZWdpc3RlcmVkID09IG51bGwgfHwgcmVnaXN0ZXJlZFt2YWx1ZVswXV0gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgdmFsdWUubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBpZiAoaXNQcm9jZXNzYWJsZVZhbHVlKHZhbHVlW19pXSkpIHtcbiAgICAgICAgICAgICAgc3RyaW5nICs9IHByb2Nlc3NTdHlsZU5hbWUoa2V5KSArIFwiOlwiICsgcHJvY2Vzc1N0eWxlVmFsdWUoa2V5LCB2YWx1ZVtfaV0pICsgXCI7XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBpbnRlcnBvbGF0ZWQgPSBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCB2YWx1ZSk7XG5cbiAgICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnYW5pbWF0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ2FuaW1hdGlvbk5hbWUnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHByb2Nlc3NTdHlsZU5hbWUoa2V5KSArIFwiOlwiICsgaW50ZXJwb2xhdGVkICsgXCI7XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IGtleSArIFwie1wiICsgaW50ZXJwb2xhdGVkICsgXCJ9XCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG52YXIgbGFiZWxQYXR0ZXJuID0gL2xhYmVsOlxccyooW15cXHM7e10rKVxccyooO3wkKS9nOyAvLyB0aGlzIGlzIHRoZSBjdXJzb3IgZm9yIGtleWZyYW1lc1xuLy8ga2V5ZnJhbWVzIGFyZSBzdG9yZWQgb24gdGhlIFNlcmlhbGl6ZWRTdHlsZXMgb2JqZWN0IGFzIGEgbGlua2VkIGxpc3RcblxudmFyIGN1cnNvcjtcbmZ1bmN0aW9uIHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCByZWdpc3RlcmVkLCBtZXJnZWRQcm9wcykge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGFyZ3NbMF0gPT09ICdvYmplY3QnICYmIGFyZ3NbMF0gIT09IG51bGwgJiYgYXJnc1swXS5zdHlsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBhcmdzWzBdO1xuICB9XG5cbiAgdmFyIHN0cmluZ01vZGUgPSB0cnVlO1xuICB2YXIgc3R5bGVzID0gJyc7XG4gIGN1cnNvciA9IHVuZGVmaW5lZDtcbiAgdmFyIHN0cmluZ3MgPSBhcmdzWzBdO1xuXG4gIGlmIChzdHJpbmdzID09IG51bGwgfHwgc3RyaW5ncy5yYXcgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0cmluZ01vZGUgPSBmYWxzZTtcbiAgICBzdHlsZXMgKz0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgc3RyaW5ncyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGFzVGVtcGxhdGVTdHJpbmdzQXJyID0gc3RyaW5ncztcblxuICAgIHN0eWxlcyArPSBhc1RlbXBsYXRlU3RyaW5nc0FyclswXTtcbiAgfSAvLyB3ZSBzdGFydCBhdCAxIHNpbmNlIHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCB0aGUgZmlyc3QgYXJnXG5cblxuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBzdHlsZXMgKz0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgYXJnc1tpXSk7XG5cbiAgICBpZiAoc3RyaW5nTW9kZSkge1xuICAgICAgdmFyIHRlbXBsYXRlU3RyaW5nc0FyciA9IHN0cmluZ3M7XG5cbiAgICAgIHN0eWxlcyArPSB0ZW1wbGF0ZVN0cmluZ3NBcnJbaV07XG4gICAgfVxuICB9IC8vIHVzaW5nIGEgZ2xvYmFsIHJlZ2V4IHdpdGggLmV4ZWMgaXMgc3RhdGVmdWwgc28gbGFzdEluZGV4IGhhcyB0byBiZSByZXNldCBlYWNoIHRpbWVcblxuXG4gIGxhYmVsUGF0dGVybi5sYXN0SW5kZXggPSAwO1xuICB2YXIgaWRlbnRpZmllck5hbWUgPSAnJztcbiAgdmFyIG1hdGNoOyAvLyBodHRwczovL2VzYmVuY2guY29tL2JlbmNoLzViODA5YzJjZjI5NDk4MDBhMGY2MWZiNVxuXG4gIHdoaWxlICgobWF0Y2ggPSBsYWJlbFBhdHRlcm4uZXhlYyhzdHlsZXMpKSAhPT0gbnVsbCkge1xuICAgIGlkZW50aWZpZXJOYW1lICs9ICctJyArIG1hdGNoWzFdO1xuICB9XG5cbiAgdmFyIG5hbWUgPSBoYXNoU3RyaW5nKHN0eWxlcykgKyBpZGVudGlmaWVyTmFtZTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBzdHlsZXMsXG4gICAgbmV4dDogY3Vyc29yXG4gIH07XG59XG5cbmV4cG9ydCB7IHNlcmlhbGl6ZVN0eWxlcyB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG52YXIgc3luY0ZhbGxiYWNrID0gZnVuY3Rpb24gc3luY0ZhbGxiYWNrKGNyZWF0ZSkge1xuICByZXR1cm4gY3JlYXRlKCk7XG59O1xuXG52YXIgdXNlSW5zZXJ0aW9uRWZmZWN0ID0gUmVhY3RbJ3VzZUluc2VydGlvbicgKyAnRWZmZWN0J10gPyBSZWFjdFsndXNlSW5zZXJ0aW9uJyArICdFZmZlY3QnXSA6IGZhbHNlO1xudmFyIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgPSB1c2VJbnNlcnRpb25FZmZlY3QgfHwgc3luY0ZhbGxiYWNrO1xudmFyIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayA9IHVzZUluc2VydGlvbkVmZmVjdCB8fCBSZWFjdC51c2VMYXlvdXRFZmZlY3Q7XG5cbmV4cG9ydCB7IHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2ssIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjcmVhdGVDYWNoZSBmcm9tICdAZW1vdGlvbi9jYWNoZSc7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcyc7XG5pbXBvcnQgd2Vha01lbW9pemUgZnJvbSAnQGVtb3Rpb24vd2Vhay1tZW1vaXplJztcbmltcG9ydCBob2lzdE5vblJlYWN0U3RhdGljcyBmcm9tICcuLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0IHsgZ2V0UmVnaXN0ZXJlZFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMsIGluc2VydFN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3V0aWxzJztcbmltcG9ydCB7IHNlcmlhbGl6ZVN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3NlcmlhbGl6ZSc7XG5pbXBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIH0gZnJvbSAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuXG52YXIgaXNEZXZlbG9wbWVudCA9IGZhbHNlO1xuXG52YXIgRW1vdGlvbkNhY2hlQ29udGV4dCA9IC8qICNfX1BVUkVfXyAqL1JlYWN0LmNyZWF0ZUNvbnRleHQoIC8vIHdlJ3JlIGRvaW5nIHRoaXMgdG8gYXZvaWQgcHJlY29uc3RydWN0J3MgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIGluIHRoaXMgb25lIGNhc2Vcbi8vIGJlY2F1c2UgdGhpcyBtb2R1bGUgaXMgcHJpbWFyaWx5IGludGVuZGVkIGZvciB0aGUgYnJvd3NlciBhbmQgbm9kZVxuLy8gYnV0IGl0J3MgYWxzbyByZXF1aXJlZCBpbiByZWFjdCBuYXRpdmUgYW5kIHNpbWlsYXIgZW52aXJvbm1lbnRzIHNvbWV0aW1lc1xuLy8gYW5kIHdlIGNvdWxkIGhhdmUgYSBzcGVjaWFsIGJ1aWxkIGp1c3QgZm9yIHRoYXRcbi8vIGJ1dCB0aGlzIGlzIG11Y2ggZWFzaWVyIGFuZCB0aGUgbmF0aXZlIHBhY2thZ2VzXG4vLyBtaWdodCB1c2UgYSBkaWZmZXJlbnQgdGhlbWUgY29udGV4dCBpbiB0aGUgZnV0dXJlIGFueXdheVxudHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyA/IC8qICNfX1BVUkVfXyAqL2NyZWF0ZUNhY2hlKHtcbiAga2V5OiAnY3NzJ1xufSkgOiBudWxsKTtcblxudmFyIENhY2hlUHJvdmlkZXIgPSBFbW90aW9uQ2FjaGVDb250ZXh0LlByb3ZpZGVyO1xudmFyIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSA9IGZ1bmN0aW9uIHVzZUVtb3Rpb25DYWNoZSgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoRW1vdGlvbkNhY2hlQ29udGV4dCk7XG59O1xuXG52YXIgd2l0aEVtb3Rpb25DYWNoZSA9IGZ1bmN0aW9uIHdpdGhFbW90aW9uQ2FjaGUoZnVuYykge1xuICByZXR1cm4gLyojX19QVVJFX18qL2ZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgICAvLyB0aGUgY2FjaGUgd2lsbCBuZXZlciBiZSBudWxsIGluIHRoZSBicm93c2VyXG4gICAgdmFyIGNhY2hlID0gdXNlQ29udGV4dChFbW90aW9uQ2FjaGVDb250ZXh0KTtcbiAgICByZXR1cm4gZnVuYyhwcm9wcywgY2FjaGUsIHJlZik7XG4gIH0pO1xufTtcblxudmFyIFRoZW1lQ29udGV4dCA9IC8qICNfX1BVUkVfXyAqL1JlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuXG52YXIgdXNlVGhlbWUgPSBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbn07XG5cbnZhciBnZXRUaGVtZSA9IGZ1bmN0aW9uIGdldFRoZW1lKG91dGVyVGhlbWUsIHRoZW1lKSB7XG4gIGlmICh0eXBlb2YgdGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgbWVyZ2VkVGhlbWUgPSB0aGVtZShvdXRlclRoZW1lKTtcblxuICAgIHJldHVybiBtZXJnZWRUaGVtZTtcbiAgfVxuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0ZXJUaGVtZSwgdGhlbWUpO1xufTtcblxudmFyIGNyZWF0ZUNhY2hlV2l0aFRoZW1lID0gLyogI19fUFVSRV9fICovd2Vha01lbW9pemUoZnVuY3Rpb24gKG91dGVyVGhlbWUpIHtcbiAgcmV0dXJuIHdlYWtNZW1vaXplKGZ1bmN0aW9uICh0aGVtZSkge1xuICAgIHJldHVybiBnZXRUaGVtZShvdXRlclRoZW1lLCB0aGVtZSk7XG4gIH0pO1xufSk7XG52YXIgVGhlbWVQcm92aWRlciA9IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIocHJvcHMpIHtcbiAgdmFyIHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuXG4gIGlmIChwcm9wcy50aGVtZSAhPT0gdGhlbWUpIHtcbiAgICB0aGVtZSA9IGNyZWF0ZUNhY2hlV2l0aFRoZW1lKHRoZW1lKShwcm9wcy50aGVtZSk7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGhlbWVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IHRoZW1lXG4gIH0sIHByb3BzLmNoaWxkcmVuKTtcbn07XG5mdW5jdGlvbiB3aXRoVGhlbWUoQ29tcG9uZW50KSB7XG4gIHZhciBjb21wb25lbnROYW1lID0gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xuICB2YXIgV2l0aFRoZW1lID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gcmVuZGVyKHByb3BzLCByZWYpIHtcbiAgICB2YXIgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbXBvbmVudCwgX2V4dGVuZHMoe1xuICAgICAgdGhlbWU6IHRoZW1lLFxuICAgICAgcmVmOiByZWZcbiAgICB9LCBwcm9wcykpO1xuICB9KTtcbiAgV2l0aFRoZW1lLmRpc3BsYXlOYW1lID0gXCJXaXRoVGhlbWUoXCIgKyBjb21wb25lbnROYW1lICsgXCIpXCI7XG4gIHJldHVybiBob2lzdE5vblJlYWN0U3RhdGljcyhXaXRoVGhlbWUsIENvbXBvbmVudCk7XG59XG5cbnZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIHR5cGVQcm9wTmFtZSA9ICdfX0VNT1RJT05fVFlQRV9QTEVBU0VfRE9fTk9UX1VTRV9fJztcbnZhciBjcmVhdGVFbW90aW9uUHJvcHMgPSBmdW5jdGlvbiBjcmVhdGVFbW90aW9uUHJvcHModHlwZSwgcHJvcHMpIHtcblxuICB2YXIgbmV3UHJvcHMgPSB7fTtcblxuICBmb3IgKHZhciBfa2V5IGluIHByb3BzKSB7XG4gICAgaWYgKGhhc093bi5jYWxsKHByb3BzLCBfa2V5KSkge1xuICAgICAgbmV3UHJvcHNbX2tleV0gPSBwcm9wc1tfa2V5XTtcbiAgICB9XG4gIH1cblxuICBuZXdQcm9wc1t0eXBlUHJvcE5hbWVdID0gdHlwZTsgLy8gUnVudGltZSBsYWJlbGluZyBpcyBhbiBvcHQtaW4gZmVhdHVyZSBiZWNhdXNlOlxuXG4gIHJldHVybiBuZXdQcm9wcztcbn07XG5cbnZhciBJbnNlcnRpb24gPSBmdW5jdGlvbiBJbnNlcnRpb24oX3JlZikge1xuICB2YXIgY2FjaGUgPSBfcmVmLmNhY2hlLFxuICAgICAgc2VyaWFsaXplZCA9IF9yZWYuc2VyaWFsaXplZCxcbiAgICAgIGlzU3RyaW5nVGFnID0gX3JlZi5pc1N0cmluZ1RhZztcbiAgcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpO1xuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBFbW90aW9uID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlLCByZWYpIHtcbiAgdmFyIGNzc1Byb3AgPSBwcm9wcy5jc3M7IC8vIHNvIHRoYXQgdXNpbmcgYGNzc2AgZnJvbSBgZW1vdGlvbmAgYW5kIHBhc3NpbmcgdGhlIHJlc3VsdCB0byB0aGUgY3NzIHByb3Agd29ya3NcbiAgLy8gbm90IHBhc3NpbmcgdGhlIHJlZ2lzdGVyZWQgY2FjaGUgdG8gc2VyaWFsaXplU3R5bGVzIGJlY2F1c2UgaXQgd291bGRcbiAgLy8gbWFrZSBjZXJ0YWluIGJhYmVsIG9wdGltaXNhdGlvbnMgbm90IHBvc3NpYmxlXG5cbiAgaWYgKHR5cGVvZiBjc3NQcm9wID09PSAnc3RyaW5nJyAmJiBjYWNoZS5yZWdpc3RlcmVkW2Nzc1Byb3BdICE9PSB1bmRlZmluZWQpIHtcbiAgICBjc3NQcm9wID0gY2FjaGUucmVnaXN0ZXJlZFtjc3NQcm9wXTtcbiAgfVxuXG4gIHZhciBXcmFwcGVkQ29tcG9uZW50ID0gcHJvcHNbdHlwZVByb3BOYW1lXTtcbiAgdmFyIHJlZ2lzdGVyZWRTdHlsZXMgPSBbY3NzUHJvcF07XG4gIHZhciBjbGFzc05hbWUgPSAnJztcblxuICBpZiAodHlwZW9mIHByb3BzLmNsYXNzTmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjbGFzc05hbWUgPSBnZXRSZWdpc3RlcmVkU3R5bGVzKGNhY2hlLnJlZ2lzdGVyZWQsIHJlZ2lzdGVyZWRTdHlsZXMsIHByb3BzLmNsYXNzTmFtZSk7XG4gIH0gZWxzZSBpZiAocHJvcHMuY2xhc3NOYW1lICE9IG51bGwpIHtcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUgKyBcIiBcIjtcbiAgfVxuXG4gIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKHJlZ2lzdGVyZWRTdHlsZXMsIHVuZGVmaW5lZCwgUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpKTtcblxuICBjbGFzc05hbWUgKz0gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG4gIHZhciBuZXdQcm9wcyA9IHt9O1xuXG4gIGZvciAodmFyIF9rZXkyIGluIHByb3BzKSB7XG4gICAgaWYgKGhhc093bi5jYWxsKHByb3BzLCBfa2V5MikgJiYgX2tleTIgIT09ICdjc3MnICYmIF9rZXkyICE9PSB0eXBlUHJvcE5hbWUgJiYgKCFpc0RldmVsb3BtZW50ICkpIHtcbiAgICAgIG5ld1Byb3BzW19rZXkyXSA9IHByb3BzW19rZXkyXTtcbiAgICB9XG4gIH1cblxuICBuZXdQcm9wcy5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG5cbiAgaWYgKHJlZikge1xuICAgIG5ld1Byb3BzLnJlZiA9IHJlZjtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSW5zZXJ0aW9uLCB7XG4gICAgY2FjaGU6IGNhY2hlLFxuICAgIHNlcmlhbGl6ZWQ6IHNlcmlhbGl6ZWQsXG4gICAgaXNTdHJpbmdUYWc6IHR5cGVvZiBXcmFwcGVkQ29tcG9uZW50ID09PSAnc3RyaW5nJ1xuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoV3JhcHBlZENvbXBvbmVudCwgbmV3UHJvcHMpKTtcbn0pO1xuXG52YXIgRW1vdGlvbiQxID0gRW1vdGlvbjtcblxuZXhwb3J0IHsgQ2FjaGVQcm92aWRlciBhcyBDLCBFbW90aW9uJDEgYXMgRSwgVGhlbWVDb250ZXh0IGFzIFQsIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSBhcyBfLCBUaGVtZVByb3ZpZGVyIGFzIGEsIHdpdGhUaGVtZSBhcyBiLCBjcmVhdGVFbW90aW9uUHJvcHMgYXMgYywgaGFzT3duIGFzIGgsIGlzRGV2ZWxvcG1lbnQgYXMgaSwgdXNlVGhlbWUgYXMgdSwgd2l0aEVtb3Rpb25DYWNoZSBhcyB3IH07XG4iLCJpbXBvcnQgeyBoIGFzIGhhc093biwgRSBhcyBFbW90aW9uLCBjIGFzIGNyZWF0ZUVtb3Rpb25Qcm9wcywgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBUIGFzIFRoZW1lQ29udGV4dCwgaSBhcyBpc0RldmVsb3BtZW50IH0gZnJvbSAnLi9lbW90aW9uLWVsZW1lbnQtZjBkZTk2OGUuYnJvd3Nlci5lc20uanMnO1xuZXhwb3J0IHsgQyBhcyBDYWNoZVByb3ZpZGVyLCBUIGFzIFRoZW1lQ29udGV4dCwgYSBhcyBUaGVtZVByb3ZpZGVyLCBfIGFzIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSwgdSBhcyB1c2VUaGVtZSwgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBiIGFzIHdpdGhUaGVtZSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWYwZGU5NjhlLmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGluc2VydFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMsIGdldFJlZ2lzdGVyZWRTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi91dGlscyc7XG5pbXBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2ssIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgfSBmcm9tICdAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcyc7XG5pbXBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi9zZXJpYWxpemUnO1xuaW1wb3J0ICdAZW1vdGlvbi9jYWNoZSc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgJ0BlbW90aW9uL3dlYWstbWVtb2l6ZSc7XG5pbXBvcnQgJy4uL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcblxudmFyIGpzeCA9IGZ1bmN0aW9uIGpzeCh0eXBlLCBwcm9wcykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChwcm9wcyA9PSBudWxsIHx8ICFoYXNPd24uY2FsbChwcm9wcywgJ2NzcycpKSB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgfVxuXG4gIHZhciBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHZhciBjcmVhdGVFbGVtZW50QXJnQXJyYXkgPSBuZXcgQXJyYXkoYXJnc0xlbmd0aCk7XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVswXSA9IEVtb3Rpb247XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVsxXSA9IGNyZWF0ZUVtb3Rpb25Qcm9wcyh0eXBlLCBwcm9wcyk7XG5cbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHtcbiAgICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbaV0gPSBhcmdzW2ldO1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkobnVsbCwgY3JlYXRlRWxlbWVudEFyZ0FycmF5KTtcbn07XG5cbihmdW5jdGlvbiAoX2pzeCkge1xuICB2YXIgSlNYO1xuXG4gIChmdW5jdGlvbiAoX0pTWCkge30pKEpTWCB8fCAoSlNYID0gX2pzeC5KU1ggfHwgKF9qc3guSlNYID0ge30pKSk7XG59KShqc3ggfHwgKGpzeCA9IHt9KSk7XG5cbi8vIGluaXRpYWwgcmVuZGVyIGZyb20gYnJvd3NlciwgaW5zZXJ0QmVmb3JlIGNvbnRleHQuc2hlZXQudGFnc1swXSBvciBpZiBhIHN0eWxlIGhhc24ndCBiZWVuIGluc2VydGVkIHRoZXJlIHlldCwgYXBwZW5kQ2hpbGRcbi8vIGluaXRpYWwgY2xpZW50LXNpZGUgcmVuZGVyIGZyb20gU1NSLCB1c2UgcGxhY2Ugb2YgaHlkcmF0aW5nIHRhZ1xuXG52YXIgR2xvYmFsID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG5cbiAgdmFyIHN0eWxlcyA9IHByb3BzLnN0eWxlcztcbiAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoW3N0eWxlc10sIHVuZGVmaW5lZCwgUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpKTtcbiAgLy8gYnV0IGl0IGlzIGJhc2VkIG9uIGEgY29uc3RhbnQgdGhhdCB3aWxsIG5ldmVyIGNoYW5nZSBhdCBydW50aW1lXG4gIC8vIGl0J3MgZWZmZWN0aXZlbHkgbGlrZSBoYXZpbmcgdHdvIGltcGxlbWVudGF0aW9ucyBhbmQgc3dpdGNoaW5nIHRoZW0gb3V0XG4gIC8vIHNvIGl0J3Mgbm90IGFjdHVhbGx5IGJyZWFraW5nIGFueXRoaW5nXG5cblxuICB2YXIgc2hlZXRSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIga2V5ID0gY2FjaGUua2V5ICsgXCItZ2xvYmFsXCI7IC8vIHVzZSBjYXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW90aW9uLWpzL2Vtb3Rpb24vaXNzdWVzLzI2NzVcblxuICAgIHZhciBzaGVldCA9IG5ldyBjYWNoZS5zaGVldC5jb25zdHJ1Y3Rvcih7XG4gICAgICBrZXk6IGtleSxcbiAgICAgIG5vbmNlOiBjYWNoZS5zaGVldC5ub25jZSxcbiAgICAgIGNvbnRhaW5lcjogY2FjaGUuc2hlZXQuY29udGFpbmVyLFxuICAgICAgc3BlZWR5OiBjYWNoZS5zaGVldC5pc1NwZWVkeVxuICAgIH0pO1xuICAgIHZhciByZWh5ZHJhdGluZyA9IGZhbHNlO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcInN0eWxlW2RhdGEtZW1vdGlvbj1cXFwiXCIgKyBrZXkgKyBcIiBcIiArIHNlcmlhbGl6ZWQubmFtZSArIFwiXFxcIl1cIik7XG5cbiAgICBpZiAoY2FjaGUuc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIHNoZWV0LmJlZm9yZSA9IGNhY2hlLnNoZWV0LnRhZ3NbMF07XG4gICAgfVxuXG4gICAgaWYgKG5vZGUgIT09IG51bGwpIHtcbiAgICAgIHJlaHlkcmF0aW5nID0gdHJ1ZTsgLy8gY2xlYXIgdGhlIGhhc2ggc28gdGhpcyBub2RlIHdvbid0IGJlIHJlY29nbml6YWJsZSBhcyByZWh5ZHJhdGFibGUgYnkgb3RoZXIgPEdsb2JhbC8+c1xuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJywga2V5KTtcbiAgICAgIHNoZWV0Lmh5ZHJhdGUoW25vZGVdKTtcbiAgICB9XG5cbiAgICBzaGVldFJlZi5jdXJyZW50ID0gW3NoZWV0LCByZWh5ZHJhdGluZ107XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNoZWV0LmZsdXNoKCk7XG4gICAgfTtcbiAgfSwgW2NhY2hlXSk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNoZWV0UmVmQ3VycmVudCA9IHNoZWV0UmVmLmN1cnJlbnQ7XG4gICAgdmFyIHNoZWV0ID0gc2hlZXRSZWZDdXJyZW50WzBdLFxuICAgICAgICByZWh5ZHJhdGluZyA9IHNoZWV0UmVmQ3VycmVudFsxXTtcblxuICAgIGlmIChyZWh5ZHJhdGluZykge1xuICAgICAgc2hlZXRSZWZDdXJyZW50WzFdID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlcmlhbGl6ZWQubmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBpbnNlcnQga2V5ZnJhbWVzXG4gICAgICBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQubmV4dCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHNoZWV0LnRhZ3MubGVuZ3RoKSB7XG4gICAgICAvLyBpZiB0aGlzIGRvZXNuJ3QgZXhpc3QgdGhlbiBpdCB3aWxsIGJlIG51bGwgc28gdGhlIHN0eWxlIGVsZW1lbnQgd2lsbCBiZSBhcHBlbmRlZFxuICAgICAgdmFyIGVsZW1lbnQgPSBzaGVldC50YWdzW3NoZWV0LnRhZ3MubGVuZ3RoIC0gMV0ubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgc2hlZXQuYmVmb3JlID0gZWxlbWVudDtcbiAgICAgIHNoZWV0LmZsdXNoKCk7XG4gICAgfVxuXG4gICAgY2FjaGUuaW5zZXJ0KFwiXCIsIHNlcmlhbGl6ZWQsIHNoZWV0LCBmYWxzZSk7XG4gIH0sIFtjYWNoZSwgc2VyaWFsaXplZC5uYW1lXSk7XG4gIHJldHVybiBudWxsO1xufSk7XG5cbmZ1bmN0aW9uIGNzcygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBzZXJpYWxpemVTdHlsZXMoYXJncyk7XG59XG5cbmZ1bmN0aW9uIGtleWZyYW1lcygpIHtcbiAgdmFyIGluc2VydGFibGUgPSBjc3MuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICB2YXIgbmFtZSA9IFwiYW5pbWF0aW9uLVwiICsgaW5zZXJ0YWJsZS5uYW1lO1xuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBcIkBrZXlmcmFtZXMgXCIgKyBuYW1lICsgXCJ7XCIgKyBpbnNlcnRhYmxlLnN0eWxlcyArIFwifVwiLFxuICAgIGFuaW06IDEsXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiX0VNT19cIiArIHRoaXMubmFtZSArIFwiX1wiICsgdGhpcy5zdHlsZXMgKyBcIl9FTU9fXCI7XG4gICAgfVxuICB9O1xufVxuXG52YXIgY2xhc3NuYW1lcyA9IGZ1bmN0aW9uIGNsYXNzbmFtZXMoYXJncykge1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIGNscyA9ICcnO1xuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYXJnID0gYXJnc1tpXTtcbiAgICBpZiAoYXJnID09IG51bGwpIGNvbnRpbnVlO1xuICAgIHZhciB0b0FkZCA9IHZvaWQgMDtcblxuICAgIHN3aXRjaCAodHlwZW9mIGFyZykge1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICAgICAgdG9BZGQgPSBjbGFzc25hbWVzKGFyZyk7XG4gICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgdG9BZGQgPSAnJztcblxuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBhcmcpIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ1trXSAmJiBrKSB7XG4gICAgICAgICAgICAgICAgdG9BZGQgJiYgKHRvQWRkICs9ICcgJyk7XG4gICAgICAgICAgICAgICAgdG9BZGQgKz0gaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHtcbiAgICAgICAgICB0b0FkZCA9IGFyZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0b0FkZCkge1xuICAgICAgY2xzICYmIChjbHMgKz0gJyAnKTtcbiAgICAgIGNscyArPSB0b0FkZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xzO1xufTtcblxuZnVuY3Rpb24gbWVyZ2UocmVnaXN0ZXJlZCwgY3NzLCBjbGFzc05hbWUpIHtcbiAgdmFyIHJlZ2lzdGVyZWRTdHlsZXMgPSBbXTtcbiAgdmFyIHJhd0NsYXNzTmFtZSA9IGdldFJlZ2lzdGVyZWRTdHlsZXMocmVnaXN0ZXJlZCwgcmVnaXN0ZXJlZFN0eWxlcywgY2xhc3NOYW1lKTtcblxuICBpZiAocmVnaXN0ZXJlZFN0eWxlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIHJldHVybiByYXdDbGFzc05hbWUgKyBjc3MocmVnaXN0ZXJlZFN0eWxlcyk7XG59XG5cbnZhciBJbnNlcnRpb24gPSBmdW5jdGlvbiBJbnNlcnRpb24oX3JlZikge1xuICB2YXIgY2FjaGUgPSBfcmVmLmNhY2hlLFxuICAgICAgc2VyaWFsaXplZEFyciA9IF9yZWYuc2VyaWFsaXplZEFycjtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcmlhbGl6ZWRBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZEFycltpXSwgZmFsc2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG52YXIgQ2xhc3NOYW1lcyA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSkge1xuICB2YXIgaGFzUmVuZGVyZWQgPSBmYWxzZTtcbiAgdmFyIHNlcmlhbGl6ZWRBcnIgPSBbXTtcblxuICB2YXIgY3NzID0gZnVuY3Rpb24gY3NzKCkge1xuICAgIGlmIChoYXNSZW5kZXJlZCAmJiBpc0RldmVsb3BtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NzcyBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoYXJncywgY2FjaGUucmVnaXN0ZXJlZCk7XG4gICAgc2VyaWFsaXplZEFyci5wdXNoKHNlcmlhbGl6ZWQpOyAvLyByZWdpc3RyYXRpb24gaGFzIHRvIGhhcHBlbiBoZXJlIGFzIHRoZSByZXN1bHQgb2YgdGhpcyBtaWdodCBnZXQgY29uc3VtZWQgYnkgYGN4YFxuXG4gICAgcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGZhbHNlKTtcbiAgICByZXR1cm4gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG4gIH07XG5cbiAgdmFyIGN4ID0gZnVuY3Rpb24gY3goKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIGlzRGV2ZWxvcG1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3ggY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVuZGVyJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlKGNhY2hlLnJlZ2lzdGVyZWQsIGNzcywgY2xhc3NuYW1lcyhhcmdzKSk7XG4gIH07XG5cbiAgdmFyIGNvbnRlbnQgPSB7XG4gICAgY3NzOiBjc3MsXG4gICAgY3g6IGN4LFxuICAgIHRoZW1lOiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dClcbiAgfTtcbiAgdmFyIGVsZSA9IHByb3BzLmNoaWxkcmVuKGNvbnRlbnQpO1xuICBoYXNSZW5kZXJlZCA9IHRydWU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSW5zZXJ0aW9uLCB7XG4gICAgY2FjaGU6IGNhY2hlLFxuICAgIHNlcmlhbGl6ZWRBcnI6IHNlcmlhbGl6ZWRBcnJcbiAgfSksIGVsZSk7XG59KTtcblxuZXhwb3J0IHsgQ2xhc3NOYW1lcywgR2xvYmFsLCBqc3ggYXMgY3JlYXRlRWxlbWVudCwgY3NzLCBqc3gsIGtleWZyYW1lcyB9O1xuIiwiZnVuY3Rpb24gX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbChlLCB0KSB7XG4gIHJldHVybiB0IHx8ICh0ID0gZS5zbGljZSgwKSksIE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwge1xuICAgIHJhdzoge1xuICAgICAgdmFsdWU6IE9iamVjdC5mcmVlemUodClcbiAgICB9XG4gIH0pKTtcbn1cbmV4cG9ydCB7IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwgYXMgZGVmYXVsdCB9OyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LnByb2R1Y3Rpb24uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudFwiKSxcbiAgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLFxuICBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLFxuICBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLFxuICBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLFxuICBSRUFDVF9DT05TVU1FUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmNvbnN1bWVyXCIpLFxuICBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxcbiAgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxcbiAgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxcbiAgUkVBQ1RfTUVNT19UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIiksXG4gIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLFxuICBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgPSBTeW1ib2wuaXRlcmF0b3I7XG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgaWYgKG51bGwgPT09IG1heWJlSXRlcmFibGUgfHwgXCJvYmplY3RcIiAhPT0gdHlwZW9mIG1heWJlSXRlcmFibGUpIHJldHVybiBudWxsO1xuICBtYXliZUl0ZXJhYmxlID1cbiAgICAoTUFZQkVfSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbTUFZQkVfSVRFUkFUT1JfU1lNQk9MXSkgfHxcbiAgICBtYXliZUl0ZXJhYmxlW1wiQEBpdGVyYXRvclwiXTtcbiAgcmV0dXJuIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIG1heWJlSXRlcmFibGUgPyBtYXliZUl0ZXJhYmxlIDogbnVsbDtcbn1cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcbiAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAhMTtcbiAgICB9LFxuICAgIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKCkge30sXG4gICAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKCkge30sXG4gICAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAoKSB7fVxuICB9LFxuICBhc3NpZ24gPSBPYmplY3QuYXNzaWduLFxuICBlbXB0eU9iamVjdCA9IHt9O1xuZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG5Db21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcbkNvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAocGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuICBpZiAoXG4gICAgXCJvYmplY3RcIiAhPT0gdHlwZW9mIHBhcnRpYWxTdGF0ZSAmJlxuICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHBhcnRpYWxTdGF0ZSAmJlxuICAgIG51bGwgIT0gcGFydGlhbFN0YXRlXG4gIClcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIFwidGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuXCJcbiAgICApO1xuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsIHBhcnRpYWxTdGF0ZSwgY2FsbGJhY2ssIFwic2V0U3RhdGVcIik7XG59O1xuQ29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsIGNhbGxiYWNrLCBcImZvcmNlVXBkYXRlXCIpO1xufTtcbmZ1bmN0aW9uIENvbXBvbmVudER1bW15KCkge31cbkNvbXBvbmVudER1bW15LnByb3RvdHlwZSA9IENvbXBvbmVudC5wcm90b3R5cGU7XG5mdW5jdGlvbiBQdXJlQ29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG52YXIgcHVyZUNvbXBvbmVudFByb3RvdHlwZSA9IChQdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnREdW1teSgpKTtcbnB1cmVDb21wb25lbnRQcm90b3R5cGUuY29uc3RydWN0b3IgPSBQdXJlQ29tcG9uZW50O1xuYXNzaWduKHB1cmVDb21wb25lbnRQcm90b3R5cGUsIENvbXBvbmVudC5wcm90b3R5cGUpO1xucHVyZUNvbXBvbmVudFByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCA9ICEwO1xudmFyIGlzQXJyYXlJbXBsID0gQXJyYXkuaXNBcnJheSxcbiAgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPSB7IEg6IG51bGwsIEE6IG51bGwsIFQ6IG51bGwsIFM6IG51bGwgfSxcbiAgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZnVuY3Rpb24gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgc2VsZiA9IHByb3BzLnJlZjtcbiAgcmV0dXJuIHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuICAgIHR5cGU6IHR5cGUsXG4gICAga2V5OiBrZXksXG4gICAgcmVmOiB2b2lkIDAgIT09IHNlbGYgPyBzZWxmIDogbnVsbCxcbiAgICBwcm9wczogcHJvcHNcbiAgfTtcbn1cbmZ1bmN0aW9uIGNsb25lQW5kUmVwbGFjZUtleShvbGRFbGVtZW50LCBuZXdLZXkpIHtcbiAgcmV0dXJuIFJlYWN0RWxlbWVudChcbiAgICBvbGRFbGVtZW50LnR5cGUsXG4gICAgbmV3S2V5LFxuICAgIHZvaWQgMCxcbiAgICB2b2lkIDAsXG4gICAgdm9pZCAwLFxuICAgIG9sZEVsZW1lbnQucHJvcHNcbiAgKTtcbn1cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gKFxuICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBvYmplY3QgJiZcbiAgICBudWxsICE9PSBvYmplY3QgJiZcbiAgICBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRVxuICApO1xufVxuZnVuY3Rpb24gZXNjYXBlKGtleSkge1xuICB2YXIgZXNjYXBlckxvb2t1cCA9IHsgXCI9XCI6IFwiPTBcIiwgXCI6XCI6IFwiPTJcIiB9O1xuICByZXR1cm4gKFxuICAgIFwiJFwiICtcbiAgICBrZXkucmVwbGFjZSgvWz06XS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTtcbiAgICB9KVxuICApO1xufVxudmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0gL1xcLysvZztcbmZ1bmN0aW9uIGdldEVsZW1lbnRLZXkoZWxlbWVudCwgaW5kZXgpIHtcbiAgcmV0dXJuIFwib2JqZWN0XCIgPT09IHR5cGVvZiBlbGVtZW50ICYmIG51bGwgIT09IGVsZW1lbnQgJiYgbnVsbCAhPSBlbGVtZW50LmtleVxuICAgID8gZXNjYXBlKFwiXCIgKyBlbGVtZW50LmtleSlcbiAgICA6IGluZGV4LnRvU3RyaW5nKDM2KTtcbn1cbmZ1bmN0aW9uIG5vb3AkMSgpIHt9XG5mdW5jdGlvbiByZXNvbHZlVGhlbmFibGUodGhlbmFibGUpIHtcbiAgc3dpdGNoICh0aGVuYWJsZS5zdGF0dXMpIHtcbiAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICByZXR1cm4gdGhlbmFibGUudmFsdWU7XG4gICAgY2FzZSBcInJlamVjdGVkXCI6XG4gICAgICB0aHJvdyB0aGVuYWJsZS5yZWFzb247XG4gICAgZGVmYXVsdDpcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIChcInN0cmluZ1wiID09PSB0eXBlb2YgdGhlbmFibGUuc3RhdHVzXG4gICAgICAgICAgPyB0aGVuYWJsZS50aGVuKG5vb3AkMSwgbm9vcCQxKVxuICAgICAgICAgIDogKCh0aGVuYWJsZS5zdGF0dXMgPSBcInBlbmRpbmdcIiksXG4gICAgICAgICAgICB0aGVuYWJsZS50aGVuKFxuICAgICAgICAgICAgICBmdW5jdGlvbiAoZnVsZmlsbGVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBcInBlbmRpbmdcIiA9PT0gdGhlbmFibGUuc3RhdHVzICYmXG4gICAgICAgICAgICAgICAgICAoKHRoZW5hYmxlLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCIpLFxuICAgICAgICAgICAgICAgICAgKHRoZW5hYmxlLnZhbHVlID0gZnVsZmlsbGVkVmFsdWUpKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgXCJwZW5kaW5nXCIgPT09IHRoZW5hYmxlLnN0YXR1cyAmJlxuICAgICAgICAgICAgICAgICAgKCh0aGVuYWJsZS5zdGF0dXMgPSBcInJlamVjdGVkXCIpLCAodGhlbmFibGUucmVhc29uID0gZXJyb3IpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKSksXG4gICAgICAgIHRoZW5hYmxlLnN0YXR1cylcbiAgICAgICkge1xuICAgICAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICAgICAgcmV0dXJuIHRoZW5hYmxlLnZhbHVlO1xuICAgICAgICBjYXNlIFwicmVqZWN0ZWRcIjpcbiAgICAgICAgICB0aHJvdyB0aGVuYWJsZS5yZWFzb247XG4gICAgICB9XG4gIH1cbiAgdGhyb3cgdGhlbmFibGU7XG59XG5mdW5jdGlvbiBtYXBJbnRvQXJyYXkoY2hpbGRyZW4sIGFycmF5LCBlc2NhcGVkUHJlZml4LCBuYW1lU29GYXIsIGNhbGxiYWNrKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xuICBpZiAoXCJ1bmRlZmluZWRcIiA9PT0gdHlwZSB8fCBcImJvb2xlYW5cIiA9PT0gdHlwZSkgY2hpbGRyZW4gPSBudWxsO1xuICB2YXIgaW52b2tlQ2FsbGJhY2sgPSAhMTtcbiAgaWYgKG51bGwgPT09IGNoaWxkcmVuKSBpbnZva2VDYWxsYmFjayA9ICEwO1xuICBlbHNlXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIGludm9rZUNhbGxiYWNrID0gITA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICBzd2l0Y2ggKGNoaWxkcmVuLiQkdHlwZW9mKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgICAgIGludm9rZUNhbGxiYWNrID0gITA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChpbnZva2VDYWxsYmFjayA9IGNoaWxkcmVuLl9pbml0KSxcbiAgICAgICAgICAgICAgbWFwSW50b0FycmF5KFxuICAgICAgICAgICAgICAgIGludm9rZUNhbGxiYWNrKGNoaWxkcmVuLl9wYXlsb2FkKSxcbiAgICAgICAgICAgICAgICBhcnJheSxcbiAgICAgICAgICAgICAgICBlc2NhcGVkUHJlZml4LFxuICAgICAgICAgICAgICAgIG5hbWVTb0ZhcixcbiAgICAgICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICBpZiAoaW52b2tlQ2FsbGJhY2spXG4gICAgcmV0dXJuIChcbiAgICAgIChjYWxsYmFjayA9IGNhbGxiYWNrKGNoaWxkcmVuKSksXG4gICAgICAoaW52b2tlQ2FsbGJhY2sgPVxuICAgICAgICBcIlwiID09PSBuYW1lU29GYXIgPyBcIi5cIiArIGdldEVsZW1lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKSxcbiAgICAgIGlzQXJyYXlJbXBsKGNhbGxiYWNrKVxuICAgICAgICA/ICgoZXNjYXBlZFByZWZpeCA9IFwiXCIpLFxuICAgICAgICAgIG51bGwgIT0gaW52b2tlQ2FsbGJhY2sgJiZcbiAgICAgICAgICAgIChlc2NhcGVkUHJlZml4ID1cbiAgICAgICAgICAgICAgaW52b2tlQ2FsbGJhY2sucmVwbGFjZSh1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCwgXCIkJi9cIikgKyBcIi9cIiksXG4gICAgICAgICAgbWFwSW50b0FycmF5KGNhbGxiYWNrLCBhcnJheSwgZXNjYXBlZFByZWZpeCwgXCJcIiwgZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICAgIH0pKVxuICAgICAgICA6IG51bGwgIT0gY2FsbGJhY2sgJiZcbiAgICAgICAgICAoaXNWYWxpZEVsZW1lbnQoY2FsbGJhY2spICYmXG4gICAgICAgICAgICAoY2FsbGJhY2sgPSBjbG9uZUFuZFJlcGxhY2VLZXkoXG4gICAgICAgICAgICAgIGNhbGxiYWNrLFxuICAgICAgICAgICAgICBlc2NhcGVkUHJlZml4ICtcbiAgICAgICAgICAgICAgICAobnVsbCA9PSBjYWxsYmFjay5rZXkgfHxcbiAgICAgICAgICAgICAgICAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ua2V5ID09PSBjYWxsYmFjay5rZXkpXG4gICAgICAgICAgICAgICAgICA/IFwiXCJcbiAgICAgICAgICAgICAgICAgIDogKFwiXCIgKyBjYWxsYmFjay5rZXkpLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgdXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsXG4gICAgICAgICAgICAgICAgICAgICAgXCIkJi9cIlxuICAgICAgICAgICAgICAgICAgICApICsgXCIvXCIpICtcbiAgICAgICAgICAgICAgICBpbnZva2VDYWxsYmFja1xuICAgICAgICAgICAgKSksXG4gICAgICAgICAgYXJyYXkucHVzaChjYWxsYmFjaykpLFxuICAgICAgMVxuICAgICk7XG4gIGludm9rZUNhbGxiYWNrID0gMDtcbiAgdmFyIG5leHROYW1lUHJlZml4ID0gXCJcIiA9PT0gbmFtZVNvRmFyID8gXCIuXCIgOiBuYW1lU29GYXIgKyBcIjpcIjtcbiAgaWYgKGlzQXJyYXlJbXBsKGNoaWxkcmVuKSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxuICAgICAgKG5hbWVTb0ZhciA9IGNoaWxkcmVuW2ldKSxcbiAgICAgICAgKHR5cGUgPSBuZXh0TmFtZVByZWZpeCArIGdldEVsZW1lbnRLZXkobmFtZVNvRmFyLCBpKSksXG4gICAgICAgIChpbnZva2VDYWxsYmFjayArPSBtYXBJbnRvQXJyYXkoXG4gICAgICAgICAgbmFtZVNvRmFyLFxuICAgICAgICAgIGFycmF5LFxuICAgICAgICAgIGVzY2FwZWRQcmVmaXgsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApKTtcbiAgZWxzZSBpZiAoKChpID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbikpLCBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpKSlcbiAgICBmb3IgKFxuICAgICAgY2hpbGRyZW4gPSBpLmNhbGwoY2hpbGRyZW4pLCBpID0gMDtcbiAgICAgICEobmFtZVNvRmFyID0gY2hpbGRyZW4ubmV4dCgpKS5kb25lO1xuXG4gICAgKVxuICAgICAgKG5hbWVTb0ZhciA9IG5hbWVTb0Zhci52YWx1ZSksXG4gICAgICAgICh0eXBlID0gbmV4dE5hbWVQcmVmaXggKyBnZXRFbGVtZW50S2V5KG5hbWVTb0ZhciwgaSsrKSksXG4gICAgICAgIChpbnZva2VDYWxsYmFjayArPSBtYXBJbnRvQXJyYXkoXG4gICAgICAgICAgbmFtZVNvRmFyLFxuICAgICAgICAgIGFycmF5LFxuICAgICAgICAgIGVzY2FwZWRQcmVmaXgsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApKTtcbiAgZWxzZSBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZSkge1xuICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjaGlsZHJlbi50aGVuKVxuICAgICAgcmV0dXJuIG1hcEludG9BcnJheShcbiAgICAgICAgcmVzb2x2ZVRoZW5hYmxlKGNoaWxkcmVuKSxcbiAgICAgICAgYXJyYXksXG4gICAgICAgIGVzY2FwZWRQcmVmaXgsXG4gICAgICAgIG5hbWVTb0ZhcixcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICk7XG4gICAgYXJyYXkgPSBTdHJpbmcoY2hpbGRyZW4pO1xuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6IFwiICtcbiAgICAgICAgKFwiW29iamVjdCBPYmplY3RdXCIgPT09IGFycmF5XG4gICAgICAgICAgPyBcIm9iamVjdCB3aXRoIGtleXMge1wiICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oXCIsIFwiKSArIFwifVwiXG4gICAgICAgICAgOiBhcnJheSkgK1xuICAgICAgICBcIikuIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgaW5zdGVhZC5cIlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGludm9rZUNhbGxiYWNrO1xufVxuZnVuY3Rpb24gbWFwQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmMsIGNvbnRleHQpIHtcbiAgaWYgKG51bGwgPT0gY2hpbGRyZW4pIHJldHVybiBjaGlsZHJlbjtcbiAgdmFyIHJlc3VsdCA9IFtdLFxuICAgIGNvdW50ID0gMDtcbiAgbWFwSW50b0FycmF5KGNoaWxkcmVuLCByZXN1bHQsIFwiXCIsIFwiXCIsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBmdW5jLmNhbGwoY29udGV4dCwgY2hpbGQsIGNvdW50KyspO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGxhenlJbml0aWFsaXplcihwYXlsb2FkKSB7XG4gIGlmICgtMSA9PT0gcGF5bG9hZC5fc3RhdHVzKSB7XG4gICAgdmFyIGN0b3IgPSBwYXlsb2FkLl9yZXN1bHQ7XG4gICAgY3RvciA9IGN0b3IoKTtcbiAgICBjdG9yLnRoZW4oXG4gICAgICBmdW5jdGlvbiAobW9kdWxlT2JqZWN0KSB7XG4gICAgICAgIGlmICgwID09PSBwYXlsb2FkLl9zdGF0dXMgfHwgLTEgPT09IHBheWxvYWQuX3N0YXR1cylcbiAgICAgICAgICAocGF5bG9hZC5fc3RhdHVzID0gMSksIChwYXlsb2FkLl9yZXN1bHQgPSBtb2R1bGVPYmplY3QpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBpZiAoMCA9PT0gcGF5bG9hZC5fc3RhdHVzIHx8IC0xID09PSBwYXlsb2FkLl9zdGF0dXMpXG4gICAgICAgICAgKHBheWxvYWQuX3N0YXR1cyA9IDIpLCAocGF5bG9hZC5fcmVzdWx0ID0gZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gICAgLTEgPT09IHBheWxvYWQuX3N0YXR1cyAmJiAoKHBheWxvYWQuX3N0YXR1cyA9IDApLCAocGF5bG9hZC5fcmVzdWx0ID0gY3RvcikpO1xuICB9XG4gIGlmICgxID09PSBwYXlsb2FkLl9zdGF0dXMpIHJldHVybiBwYXlsb2FkLl9yZXN1bHQuZGVmYXVsdDtcbiAgdGhyb3cgcGF5bG9hZC5fcmVzdWx0O1xufVxudmFyIHJlcG9ydEdsb2JhbEVycm9yID1cbiAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmVwb3J0RXJyb3JcbiAgICA/IHJlcG9ydEVycm9yXG4gICAgOiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB3aW5kb3cgJiZcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB3aW5kb3cuRXJyb3JFdmVudFxuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgZXZlbnQgPSBuZXcgd2luZG93LkVycm9yRXZlbnQoXCJlcnJvclwiLCB7XG4gICAgICAgICAgICBidWJibGVzOiAhMCxcbiAgICAgICAgICAgIGNhbmNlbGFibGU6ICEwLFxuICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIGVycm9yICYmXG4gICAgICAgICAgICAgIG51bGwgIT09IGVycm9yICYmXG4gICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBlcnJvci5tZXNzYWdlXG4gICAgICAgICAgICAgICAgPyBTdHJpbmcoZXJyb3IubWVzc2FnZSlcbiAgICAgICAgICAgICAgICA6IFN0cmluZyhlcnJvciksXG4gICAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoIXdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KSkgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBwcm9jZXNzICYmXG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcHJvY2Vzcy5lbWl0XG4gICAgICAgICkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdChcInVuY2F1Z2h0RXhjZXB0aW9uXCIsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9O1xuZnVuY3Rpb24gbm9vcCgpIHt9XG5leHBvcnRzLkNoaWxkcmVuID0ge1xuICBtYXA6IG1hcENoaWxkcmVuLFxuICBmb3JFYWNoOiBmdW5jdGlvbiAoY2hpbGRyZW4sIGZvckVhY2hGdW5jLCBmb3JFYWNoQ29udGV4dCkge1xuICAgIG1hcENoaWxkcmVuKFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvckVhY2hGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgZm9yRWFjaENvbnRleHRcbiAgICApO1xuICB9LFxuICBjb3VudDogZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgdmFyIG4gPSAwO1xuICAgIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAoKSB7XG4gICAgICBuKys7XG4gICAgfSk7XG4gICAgcmV0dXJuIG47XG4gIH0sXG4gIHRvQXJyYXk6IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuICAgIHJldHVybiAoXG4gICAgICBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgIH0pIHx8IFtdXG4gICAgKTtcbiAgfSxcbiAgb25seTogZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgaWYgKCFpc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpXG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgXCJSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZC5cIlxuICAgICAgKTtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbn07XG5leHBvcnRzLkNvbXBvbmVudCA9IENvbXBvbmVudDtcbmV4cG9ydHMuRnJhZ21lbnQgPSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xuZXhwb3J0cy5Qcm9maWxlciA9IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG5leHBvcnRzLlB1cmVDb21wb25lbnQgPSBQdXJlQ29tcG9uZW50O1xuZXhwb3J0cy5TdHJpY3RNb2RlID0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbmV4cG9ydHMuU3VzcGVuc2UgPSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xuZXhwb3J0cy5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUgPVxuICBSZWFjdFNoYXJlZEludGVybmFscztcbmV4cG9ydHMuYWN0ID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBFcnJvcihcImFjdCguLi4pIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuXCIpO1xufTtcbmV4cG9ydHMuY2FjaGUgPSBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZm4uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5leHBvcnRzLmNsb25lRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIGlmIChudWxsID09PSBlbGVtZW50IHx8IHZvaWQgMCA9PT0gZWxlbWVudClcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIFwiVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCBcIiArIGVsZW1lbnQgKyBcIi5cIlxuICAgICk7XG4gIHZhciBwcm9wcyA9IGFzc2lnbih7fSwgZWxlbWVudC5wcm9wcyksXG4gICAga2V5ID0gZWxlbWVudC5rZXksXG4gICAgb3duZXIgPSB2b2lkIDA7XG4gIGlmIChudWxsICE9IGNvbmZpZylcbiAgICBmb3IgKHByb3BOYW1lIGluICh2b2lkIDAgIT09IGNvbmZpZy5yZWYgJiYgKG93bmVyID0gdm9pZCAwKSxcbiAgICB2b2lkIDAgIT09IGNvbmZpZy5rZXkgJiYgKGtleSA9IFwiXCIgKyBjb25maWcua2V5KSxcbiAgICBjb25maWcpKVxuICAgICAgIWhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgfHxcbiAgICAgICAgXCJrZXlcIiA9PT0gcHJvcE5hbWUgfHxcbiAgICAgICAgXCJfX3NlbGZcIiA9PT0gcHJvcE5hbWUgfHxcbiAgICAgICAgXCJfX3NvdXJjZVwiID09PSBwcm9wTmFtZSB8fFxuICAgICAgICAoXCJyZWZcIiA9PT0gcHJvcE5hbWUgJiYgdm9pZCAwID09PSBjb25maWcucmVmKSB8fFxuICAgICAgICAocHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXSk7XG4gIHZhciBwcm9wTmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuICBpZiAoMSA9PT0gcHJvcE5hbWUpIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIGVsc2UgaWYgKDEgPCBwcm9wTmFtZSkge1xuICAgIGZvciAodmFyIGNoaWxkQXJyYXkgPSBBcnJheShwcm9wTmFtZSksIGkgPSAwOyBpIDwgcHJvcE5hbWU7IGkrKylcbiAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxuICByZXR1cm4gUmVhY3RFbGVtZW50KGVsZW1lbnQudHlwZSwga2V5LCB2b2lkIDAsIHZvaWQgMCwgb3duZXIsIHByb3BzKTtcbn07XG5leHBvcnRzLmNyZWF0ZUNvbnRleHQgPSBmdW5jdGlvbiAoZGVmYXVsdFZhbHVlKSB7XG4gIGRlZmF1bHRWYWx1ZSA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfQ09OVEVYVF9UWVBFLFxuICAgIF9jdXJyZW50VmFsdWU6IGRlZmF1bHRWYWx1ZSxcbiAgICBfY3VycmVudFZhbHVlMjogZGVmYXVsdFZhbHVlLFxuICAgIF90aHJlYWRDb3VudDogMCxcbiAgICBQcm92aWRlcjogbnVsbCxcbiAgICBDb25zdW1lcjogbnVsbFxuICB9O1xuICBkZWZhdWx0VmFsdWUuUHJvdmlkZXIgPSBkZWZhdWx0VmFsdWU7XG4gIGRlZmF1bHRWYWx1ZS5Db25zdW1lciA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfQ09OU1VNRVJfVFlQRSxcbiAgICBfY29udGV4dDogZGVmYXVsdFZhbHVlXG4gIH07XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuZXhwb3J0cy5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGNvbmZpZywgY2hpbGRyZW4pIHtcbiAgdmFyIHByb3BOYW1lLFxuICAgIHByb3BzID0ge30sXG4gICAga2V5ID0gbnVsbDtcbiAgaWYgKG51bGwgIT0gY29uZmlnKVxuICAgIGZvciAocHJvcE5hbWUgaW4gKHZvaWQgMCAhPT0gY29uZmlnLmtleSAmJiAoa2V5ID0gXCJcIiArIGNvbmZpZy5rZXkpLCBjb25maWcpKVxuICAgICAgaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJlxuICAgICAgICBcImtleVwiICE9PSBwcm9wTmFtZSAmJlxuICAgICAgICBcIl9fc2VsZlwiICE9PSBwcm9wTmFtZSAmJlxuICAgICAgICBcIl9fc291cmNlXCIgIT09IHByb3BOYW1lICYmXG4gICAgICAgIChwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdKTtcbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmICgxID09PSBjaGlsZHJlbkxlbmd0aCkgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgZWxzZSBpZiAoMSA8IGNoaWxkcmVuTGVuZ3RoKSB7XG4gICAgZm9yICh2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKSwgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKVxuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKVxuICAgIGZvciAocHJvcE5hbWUgaW4gKChjaGlsZHJlbkxlbmd0aCA9IHR5cGUuZGVmYXVsdFByb3BzKSwgY2hpbGRyZW5MZW5ndGgpKVxuICAgICAgdm9pZCAwID09PSBwcm9wc1twcm9wTmFtZV0gJiZcbiAgICAgICAgKHByb3BzW3Byb3BOYW1lXSA9IGNoaWxkcmVuTGVuZ3RoW3Byb3BOYW1lXSk7XG4gIHJldHVybiBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCB2b2lkIDAsIHZvaWQgMCwgbnVsbCwgcHJvcHMpO1xufTtcbmV4cG9ydHMuY3JlYXRlUmVmID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4geyBjdXJyZW50OiBudWxsIH07XG59O1xuZXhwb3J0cy5mb3J3YXJkUmVmID0gZnVuY3Rpb24gKHJlbmRlcikge1xuICByZXR1cm4geyAkJHR5cGVvZjogUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSwgcmVuZGVyOiByZW5kZXIgfTtcbn07XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50ID0gaXNWYWxpZEVsZW1lbnQ7XG5leHBvcnRzLmxhenkgPSBmdW5jdGlvbiAoY3Rvcikge1xuICByZXR1cm4ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9MQVpZX1RZUEUsXG4gICAgX3BheWxvYWQ6IHsgX3N0YXR1czogLTEsIF9yZXN1bHQ6IGN0b3IgfSxcbiAgICBfaW5pdDogbGF6eUluaXRpYWxpemVyXG4gIH07XG59O1xuZXhwb3J0cy5tZW1vID0gZnVuY3Rpb24gKHR5cGUsIGNvbXBhcmUpIHtcbiAgcmV0dXJuIHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfTUVNT19UWVBFLFxuICAgIHR5cGU6IHR5cGUsXG4gICAgY29tcGFyZTogdm9pZCAwID09PSBjb21wYXJlID8gbnVsbCA6IGNvbXBhcmVcbiAgfTtcbn07XG5leHBvcnRzLnN0YXJ0VHJhbnNpdGlvbiA9IGZ1bmN0aW9uIChzY29wZSkge1xuICB2YXIgcHJldlRyYW5zaXRpb24gPSBSZWFjdFNoYXJlZEludGVybmFscy5ULFxuICAgIGN1cnJlbnRUcmFuc2l0aW9uID0ge307XG4gIFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBjdXJyZW50VHJhbnNpdGlvbjtcbiAgdHJ5IHtcbiAgICB2YXIgcmV0dXJuVmFsdWUgPSBzY29wZSgpLFxuICAgICAgb25TdGFydFRyYW5zaXRpb25GaW5pc2ggPSBSZWFjdFNoYXJlZEludGVybmFscy5TO1xuICAgIG51bGwgIT09IG9uU3RhcnRUcmFuc2l0aW9uRmluaXNoICYmXG4gICAgICBvblN0YXJ0VHJhbnNpdGlvbkZpbmlzaChjdXJyZW50VHJhbnNpdGlvbiwgcmV0dXJuVmFsdWUpO1xuICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiByZXR1cm5WYWx1ZSAmJlxuICAgICAgbnVsbCAhPT0gcmV0dXJuVmFsdWUgJiZcbiAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJldHVyblZhbHVlLnRoZW4gJiZcbiAgICAgIHJldHVyblZhbHVlLnRoZW4obm9vcCwgcmVwb3J0R2xvYmFsRXJyb3IpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcG9ydEdsb2JhbEVycm9yKGVycm9yKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBSZWFjdFNoYXJlZEludGVybmFscy5UID0gcHJldlRyYW5zaXRpb247XG4gIH1cbn07XG5leHBvcnRzLnVuc3RhYmxlX3VzZUNhY2hlUmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlQ2FjaGVSZWZyZXNoKCk7XG59O1xuZXhwb3J0cy51c2UgPSBmdW5jdGlvbiAodXNhYmxlKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZSh1c2FibGUpO1xufTtcbmV4cG9ydHMudXNlQWN0aW9uU3RhdGUgPSBmdW5jdGlvbiAoYWN0aW9uLCBpbml0aWFsU3RhdGUsIHBlcm1hbGluaykge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VBY3Rpb25TdGF0ZShhY3Rpb24sIGluaXRpYWxTdGF0ZSwgcGVybWFsaW5rKTtcbn07XG5leHBvcnRzLnVzZUNhbGxiYWNrID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBkZXBzKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZUNhbGxiYWNrKGNhbGxiYWNrLCBkZXBzKTtcbn07XG5leHBvcnRzLnVzZUNvbnRleHQgPSBmdW5jdGlvbiAoQ29udGV4dCkge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VDb250ZXh0KENvbnRleHQpO1xufTtcbmV4cG9ydHMudXNlRGVidWdWYWx1ZSA9IGZ1bmN0aW9uICgpIHt9O1xuZXhwb3J0cy51c2VEZWZlcnJlZFZhbHVlID0gZnVuY3Rpb24gKHZhbHVlLCBpbml0aWFsVmFsdWUpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlRGVmZXJyZWRWYWx1ZSh2YWx1ZSwgaW5pdGlhbFZhbHVlKTtcbn07XG5leHBvcnRzLnVzZUVmZmVjdCA9IGZ1bmN0aW9uIChjcmVhdGUsIGRlcHMpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlRWZmZWN0KGNyZWF0ZSwgZGVwcyk7XG59O1xuZXhwb3J0cy51c2VJZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlSWQoKTtcbn07XG5leHBvcnRzLnVzZUltcGVyYXRpdmVIYW5kbGUgPSBmdW5jdGlvbiAocmVmLCBjcmVhdGUsIGRlcHMpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGNyZWF0ZSwgZGVwcyk7XG59O1xuZXhwb3J0cy51c2VJbnNlcnRpb25FZmZlY3QgPSBmdW5jdGlvbiAoY3JlYXRlLCBkZXBzKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZUluc2VydGlvbkVmZmVjdChjcmVhdGUsIGRlcHMpO1xufTtcbmV4cG9ydHMudXNlTGF5b3V0RWZmZWN0ID0gZnVuY3Rpb24gKGNyZWF0ZSwgZGVwcykge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VMYXlvdXRFZmZlY3QoY3JlYXRlLCBkZXBzKTtcbn07XG5leHBvcnRzLnVzZU1lbW8gPSBmdW5jdGlvbiAoY3JlYXRlLCBkZXBzKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZU1lbW8oY3JlYXRlLCBkZXBzKTtcbn07XG5leHBvcnRzLnVzZU9wdGltaXN0aWMgPSBmdW5jdGlvbiAocGFzc3Rocm91Z2gsIHJlZHVjZXIpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlT3B0aW1pc3RpYyhwYXNzdGhyb3VnaCwgcmVkdWNlcik7XG59O1xuZXhwb3J0cy51c2VSZWR1Y2VyID0gZnVuY3Rpb24gKHJlZHVjZXIsIGluaXRpYWxBcmcsIGluaXQpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsQXJnLCBpbml0KTtcbn07XG5leHBvcnRzLnVzZVJlZiA9IGZ1bmN0aW9uIChpbml0aWFsVmFsdWUpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlUmVmKGluaXRpYWxWYWx1ZSk7XG59O1xuZXhwb3J0cy51c2VTdGF0ZSA9IGZ1bmN0aW9uIChpbml0aWFsU3RhdGUpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlU3RhdGUoaW5pdGlhbFN0YXRlKTtcbn07XG5leHBvcnRzLnVzZVN5bmNFeHRlcm5hbFN0b3JlID0gZnVuY3Rpb24gKFxuICBzdWJzY3JpYmUsXG4gIGdldFNuYXBzaG90LFxuICBnZXRTZXJ2ZXJTbmFwc2hvdFxuKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZVN5bmNFeHRlcm5hbFN0b3JlKFxuICAgIHN1YnNjcmliZSxcbiAgICBnZXRTbmFwc2hvdCxcbiAgICBnZXRTZXJ2ZXJTbmFwc2hvdFxuICApO1xufTtcbmV4cG9ydHMudXNlVHJhbnNpdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlVHJhbnNpdGlvbigpO1xufTtcbmV4cG9ydHMudmVyc2lvbiA9IFwiMTkuMC4wXCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtZG9tLnByb2R1Y3Rpb24uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xuZnVuY3Rpb24gZm9ybWF0UHJvZEVycm9yTWVzc2FnZShjb2RlKSB7XG4gIHZhciB1cmwgPSBcImh0dHBzOi8vcmVhY3QuZGV2L2Vycm9ycy9cIiArIGNvZGU7XG4gIGlmICgxIDwgYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIHVybCArPSBcIj9hcmdzW109XCIgKyBlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzWzFdKTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICAgIHVybCArPSBcIiZhcmdzW109XCIgKyBlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2ldKTtcbiAgfVxuICByZXR1cm4gKFxuICAgIFwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiICtcbiAgICBjb2RlICtcbiAgICBcIjsgdmlzaXQgXCIgK1xuICAgIHVybCArXG4gICAgXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwiXG4gICk7XG59XG5mdW5jdGlvbiBub29wKCkge31cbnZhciBJbnRlcm5hbHMgPSB7XG4gICAgZDoge1xuICAgICAgZjogbm9vcCxcbiAgICAgIHI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg1MjIpKTtcbiAgICAgIH0sXG4gICAgICBEOiBub29wLFxuICAgICAgQzogbm9vcCxcbiAgICAgIEw6IG5vb3AsXG4gICAgICBtOiBub29wLFxuICAgICAgWDogbm9vcCxcbiAgICAgIFM6IG5vb3AsXG4gICAgICBNOiBub29wXG4gICAgfSxcbiAgICBwOiAwLFxuICAgIGZpbmRET01Ob2RlOiBudWxsXG4gIH0sXG4gIFJFQUNUX1BPUlRBTF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTtcbmZ1bmN0aW9uIGNyZWF0ZVBvcnRhbCQxKGNoaWxkcmVuLCBjb250YWluZXJJbmZvLCBpbXBsZW1lbnRhdGlvbikge1xuICB2YXIga2V5ID1cbiAgICAzIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1szXSA/IGFyZ3VtZW50c1szXSA6IG51bGw7XG4gIHJldHVybiB7XG4gICAgJCR0eXBlb2Y6IFJFQUNUX1BPUlRBTF9UWVBFLFxuICAgIGtleTogbnVsbCA9PSBrZXkgPyBudWxsIDogXCJcIiArIGtleSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgY29udGFpbmVySW5mbzogY29udGFpbmVySW5mbyxcbiAgICBpbXBsZW1lbnRhdGlvbjogaW1wbGVtZW50YXRpb25cbiAgfTtcbn1cbnZhciBSZWFjdFNoYXJlZEludGVybmFscyA9XG4gIFJlYWN0Ll9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERTtcbmZ1bmN0aW9uIGdldENyb3NzT3JpZ2luU3RyaW5nQXMoYXMsIGlucHV0KSB7XG4gIGlmIChcImZvbnRcIiA9PT0gYXMpIHJldHVybiBcIlwiO1xuICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGlucHV0KVxuICAgIHJldHVybiBcInVzZS1jcmVkZW50aWFsc1wiID09PSBpbnB1dCA/IGlucHV0IDogXCJcIjtcbn1cbmV4cG9ydHMuX19ET01fSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFID1cbiAgSW50ZXJuYWxzO1xuZXhwb3J0cy5jcmVhdGVQb3J0YWwgPSBmdW5jdGlvbiAoY2hpbGRyZW4sIGNvbnRhaW5lcikge1xuICB2YXIga2V5ID1cbiAgICAyIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IG51bGw7XG4gIGlmIChcbiAgICAhY29udGFpbmVyIHx8XG4gICAgKDEgIT09IGNvbnRhaW5lci5ub2RlVHlwZSAmJlxuICAgICAgOSAhPT0gY29udGFpbmVyLm5vZGVUeXBlICYmXG4gICAgICAxMSAhPT0gY29udGFpbmVyLm5vZGVUeXBlKVxuICApXG4gICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgyOTkpKTtcbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbCQxKGNoaWxkcmVuLCBjb250YWluZXIsIG51bGwsIGtleSk7XG59O1xuZXhwb3J0cy5mbHVzaFN5bmMgPSBmdW5jdGlvbiAoZm4pIHtcbiAgdmFyIHByZXZpb3VzVHJhbnNpdGlvbiA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQsXG4gICAgcHJldmlvdXNVcGRhdGVQcmlvcml0eSA9IEludGVybmFscy5wO1xuICB0cnkge1xuICAgIGlmICgoKFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBudWxsKSwgKEludGVybmFscy5wID0gMiksIGZuKSkgcmV0dXJuIGZuKCk7XG4gIH0gZmluYWxseSB7XG4gICAgKFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBwcmV2aW91c1RyYW5zaXRpb24pLFxuICAgICAgKEludGVybmFscy5wID0gcHJldmlvdXNVcGRhdGVQcmlvcml0eSksXG4gICAgICBJbnRlcm5hbHMuZC5mKCk7XG4gIH1cbn07XG5leHBvcnRzLnByZWNvbm5lY3QgPSBmdW5jdGlvbiAoaHJlZiwgb3B0aW9ucykge1xuICBcInN0cmluZ1wiID09PSB0eXBlb2YgaHJlZiAmJlxuICAgIChvcHRpb25zXG4gICAgICA/ICgob3B0aW9ucyA9IG9wdGlvbnMuY3Jvc3NPcmlnaW4pLFxuICAgICAgICAob3B0aW9ucyA9XG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnNcbiAgICAgICAgICAgID8gXCJ1c2UtY3JlZGVudGlhbHNcIiA9PT0gb3B0aW9uc1xuICAgICAgICAgICAgICA/IG9wdGlvbnNcbiAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgICA6IHZvaWQgMCkpXG4gICAgICA6IChvcHRpb25zID0gbnVsbCksXG4gICAgSW50ZXJuYWxzLmQuQyhocmVmLCBvcHRpb25zKSk7XG59O1xuZXhwb3J0cy5wcmVmZXRjaEROUyA9IGZ1bmN0aW9uIChocmVmKSB7XG4gIFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmICYmIEludGVybmFscy5kLkQoaHJlZik7XG59O1xuZXhwb3J0cy5wcmVpbml0ID0gZnVuY3Rpb24gKGhyZWYsIG9wdGlvbnMpIHtcbiAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmICYmIG9wdGlvbnMgJiYgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuYXMpIHtcbiAgICB2YXIgYXMgPSBvcHRpb25zLmFzLFxuICAgICAgY3Jvc3NPcmlnaW4gPSBnZXRDcm9zc09yaWdpblN0cmluZ0FzKGFzLCBvcHRpb25zLmNyb3NzT3JpZ2luKSxcbiAgICAgIGludGVncml0eSA9XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmludGVncml0eSA/IG9wdGlvbnMuaW50ZWdyaXR5IDogdm9pZCAwLFxuICAgICAgZmV0Y2hQcmlvcml0eSA9XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmZldGNoUHJpb3JpdHlcbiAgICAgICAgICA/IG9wdGlvbnMuZmV0Y2hQcmlvcml0eVxuICAgICAgICAgIDogdm9pZCAwO1xuICAgIFwic3R5bGVcIiA9PT0gYXNcbiAgICAgID8gSW50ZXJuYWxzLmQuUyhcbiAgICAgICAgICBocmVmLFxuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLnByZWNlZGVuY2UgPyBvcHRpb25zLnByZWNlZGVuY2UgOiB2b2lkIDAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luLFxuICAgICAgICAgICAgaW50ZWdyaXR5OiBpbnRlZ3JpdHksXG4gICAgICAgICAgICBmZXRjaFByaW9yaXR5OiBmZXRjaFByaW9yaXR5XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICA6IFwic2NyaXB0XCIgPT09IGFzICYmXG4gICAgICAgIEludGVybmFscy5kLlgoaHJlZiwge1xuICAgICAgICAgIGNyb3NzT3JpZ2luOiBjcm9zc09yaWdpbixcbiAgICAgICAgICBpbnRlZ3JpdHk6IGludGVncml0eSxcbiAgICAgICAgICBmZXRjaFByaW9yaXR5OiBmZXRjaFByaW9yaXR5LFxuICAgICAgICAgIG5vbmNlOiBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5ub25jZSA/IG9wdGlvbnMubm9uY2UgOiB2b2lkIDBcbiAgICAgICAgfSk7XG4gIH1cbn07XG5leHBvcnRzLnByZWluaXRNb2R1bGUgPSBmdW5jdGlvbiAoaHJlZiwgb3B0aW9ucykge1xuICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGhyZWYpXG4gICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiBvcHRpb25zICYmIG51bGwgIT09IG9wdGlvbnMpIHtcbiAgICAgIGlmIChudWxsID09IG9wdGlvbnMuYXMgfHwgXCJzY3JpcHRcIiA9PT0gb3B0aW9ucy5hcykge1xuICAgICAgICB2YXIgY3Jvc3NPcmlnaW4gPSBnZXRDcm9zc09yaWdpblN0cmluZ0FzKFxuICAgICAgICAgIG9wdGlvbnMuYXMsXG4gICAgICAgICAgb3B0aW9ucy5jcm9zc09yaWdpblxuICAgICAgICApO1xuICAgICAgICBJbnRlcm5hbHMuZC5NKGhyZWYsIHtcbiAgICAgICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgaW50ZWdyaXR5OlxuICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuaW50ZWdyaXR5ID8gb3B0aW9ucy5pbnRlZ3JpdHkgOiB2b2lkIDAsXG4gICAgICAgICAgbm9uY2U6IFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLm5vbmNlID8gb3B0aW9ucy5ub25jZSA6IHZvaWQgMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgbnVsbCA9PSBvcHRpb25zICYmIEludGVybmFscy5kLk0oaHJlZik7XG59O1xuZXhwb3J0cy5wcmVsb2FkID0gZnVuY3Rpb24gKGhyZWYsIG9wdGlvbnMpIHtcbiAgaWYgKFxuICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmICYmXG4gICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG9wdGlvbnMgJiZcbiAgICBudWxsICE9PSBvcHRpb25zICYmXG4gICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuYXNcbiAgKSB7XG4gICAgdmFyIGFzID0gb3B0aW9ucy5hcyxcbiAgICAgIGNyb3NzT3JpZ2luID0gZ2V0Q3Jvc3NPcmlnaW5TdHJpbmdBcyhhcywgb3B0aW9ucy5jcm9zc09yaWdpbik7XG4gICAgSW50ZXJuYWxzLmQuTChocmVmLCBhcywge1xuICAgICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luLFxuICAgICAgaW50ZWdyaXR5OlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5pbnRlZ3JpdHkgPyBvcHRpb25zLmludGVncml0eSA6IHZvaWQgMCxcbiAgICAgIG5vbmNlOiBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5ub25jZSA/IG9wdGlvbnMubm9uY2UgOiB2b2lkIDAsXG4gICAgICB0eXBlOiBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy50eXBlID8gb3B0aW9ucy50eXBlIDogdm9pZCAwLFxuICAgICAgZmV0Y2hQcmlvcml0eTpcbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuZmV0Y2hQcmlvcml0eVxuICAgICAgICAgID8gb3B0aW9ucy5mZXRjaFByaW9yaXR5XG4gICAgICAgICAgOiB2b2lkIDAsXG4gICAgICByZWZlcnJlclBvbGljeTpcbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMucmVmZXJyZXJQb2xpY3lcbiAgICAgICAgICA/IG9wdGlvbnMucmVmZXJyZXJQb2xpY3lcbiAgICAgICAgICA6IHZvaWQgMCxcbiAgICAgIGltYWdlU3JjU2V0OlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5pbWFnZVNyY1NldCA/IG9wdGlvbnMuaW1hZ2VTcmNTZXQgOiB2b2lkIDAsXG4gICAgICBpbWFnZVNpemVzOlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5pbWFnZVNpemVzID8gb3B0aW9ucy5pbWFnZVNpemVzIDogdm9pZCAwLFxuICAgICAgbWVkaWE6IFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLm1lZGlhID8gb3B0aW9ucy5tZWRpYSA6IHZvaWQgMFxuICAgIH0pO1xuICB9XG59O1xuZXhwb3J0cy5wcmVsb2FkTW9kdWxlID0gZnVuY3Rpb24gKGhyZWYsIG9wdGlvbnMpIHtcbiAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmKVxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICB2YXIgY3Jvc3NPcmlnaW4gPSBnZXRDcm9zc09yaWdpblN0cmluZ0FzKG9wdGlvbnMuYXMsIG9wdGlvbnMuY3Jvc3NPcmlnaW4pO1xuICAgICAgSW50ZXJuYWxzLmQubShocmVmLCB7XG4gICAgICAgIGFzOlxuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmFzICYmIFwic2NyaXB0XCIgIT09IG9wdGlvbnMuYXNcbiAgICAgICAgICAgID8gb3B0aW9ucy5hc1xuICAgICAgICAgICAgOiB2b2lkIDAsXG4gICAgICAgIGNyb3NzT3JpZ2luOiBjcm9zc09yaWdpbixcbiAgICAgICAgaW50ZWdyaXR5OlxuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmludGVncml0eSA/IG9wdGlvbnMuaW50ZWdyaXR5IDogdm9pZCAwXG4gICAgICB9KTtcbiAgICB9IGVsc2UgSW50ZXJuYWxzLmQubShocmVmKTtcbn07XG5leHBvcnRzLnJlcXVlc3RGb3JtUmVzZXQgPSBmdW5jdGlvbiAoZm9ybSkge1xuICBJbnRlcm5hbHMuZC5yKGZvcm0pO1xufTtcbmV4cG9ydHMudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMgPSBmdW5jdGlvbiAoZm4sIGEpIHtcbiAgcmV0dXJuIGZuKGEpO1xufTtcbmV4cG9ydHMudXNlRm9ybVN0YXRlID0gZnVuY3Rpb24gKGFjdGlvbiwgaW5pdGlhbFN0YXRlLCBwZXJtYWxpbmspIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlRm9ybVN0YXRlKGFjdGlvbiwgaW5pdGlhbFN0YXRlLCBwZXJtYWxpbmspO1xufTtcbmV4cG9ydHMudXNlRm9ybVN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlSG9zdFRyYW5zaXRpb25TdGF0dXMoKTtcbn07XG5leHBvcnRzLnZlcnNpb24gPSBcIjE5LjAuMFwiO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBjaGVja0RDRSgpIHtcbiAgLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuICBpZiAoXG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFRoaXMgYnJhbmNoIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZFxuICAgIC8vIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgY29uZGl0aW9uIGlzIHRydWUgb25seSBpbiBkZXZlbG9wbWVudC5cbiAgICAvLyBUaGVyZWZvcmUgaWYgdGhlIGJyYW5jaCBpcyBzdGlsbCBoZXJlLCBkZWFkIGNvZGUgZWxpbWluYXRpb24gd2Fzbid0XG4gICAgLy8gcHJvcGVybHkgYXBwbGllZC5cbiAgICAvLyBEb24ndCBjaGFuZ2UgdGhlIG1lc3NhZ2UuIFJlYWN0IERldlRvb2xzIHJlbGllcyBvbiBpdC4gQWxzbyBtYWtlIHN1cmVcbiAgICAvLyB0aGlzIG1lc3NhZ2UgZG9lc24ndCBvY2N1ciBlbHNld2hlcmUgaW4gdGhpcyBmdW5jdGlvbiwgb3IgaXQgd2lsbCBjYXVzZVxuICAgIC8vIGEgZmFsc2UgcG9zaXRpdmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdeX14nKTtcbiAgfVxuICB0cnkge1xuICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjb2RlIGFib3ZlIGhhcyBiZWVuIGRlYWQgY29kZSBlbGltaW5hdGVkIChEQ0UnZCkuXG4gICAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGNoZWNrRENFKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gRGV2VG9vbHMgc2hvdWxkbid0IGNyYXNoIFJlYWN0LCBubyBtYXR0ZXIgd2hhdC5cbiAgICAvLyBXZSBzaG91bGQgc3RpbGwgcmVwb3J0IGluIGNhc2Ugd2UgYnJlYWsgdGhpcyBjb2RlLlxuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAvLyBEQ0UgY2hlY2sgc2hvdWxkIGhhcHBlbiBiZWZvcmUgUmVhY3RET00gYnVuZGxlIGV4ZWN1dGVzIHNvIHRoYXRcbiAgLy8gRGV2VG9vbHMgY2FuIHJlcG9ydCBiYWQgbWluaWZpY2F0aW9uIGR1cmluZyBpbmplY3Rpb24uXG4gIGNoZWNrRENFKCk7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEN1c3RvbSBwb3NpdGlvbmluZyByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92aXJ0dWFsLWVsZW1lbnRzXG4gKi9cblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxpZ25tZW50cyA9IFsnc3RhcnQnLCAnZW5kJ107XG5jb25zdCBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMF0sIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMV0pLCBbXSk7XG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3QgY3JlYXRlQ29vcmRzID0gdiA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGNsYW1wKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IHJlY3Q7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICBsZWZ0OiB4LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5leHBvcnQgeyBhbGlnbm1lbnRzLCBjbGFtcCwgY3JlYXRlQ29vcmRzLCBldmFsdWF0ZSwgZXhwYW5kUGFkZGluZ09iamVjdCwgZmxvb3IsIGdldEFsaWdubWVudCwgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldEF4aXNMZW5ndGgsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlQXhpcywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldFBhZGRpbmdPYmplY3QsIGdldFNpZGUsIGdldFNpZGVBeGlzLCBtYXgsIG1pbiwgcGxhY2VtZW50cywgcmVjdFRvQ2xpZW50UmVjdCwgcm91bmQsIHNpZGVzIH07XG4iLCJpbXBvcnQgeyBnZXRTaWRlQXhpcywgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QXhpc0xlbmd0aCwgZ2V0U2lkZSwgZ2V0QWxpZ25tZW50LCBldmFsdWF0ZSwgZ2V0UGFkZGluZ09iamVjdCwgcmVjdFRvQ2xpZW50UmVjdCwgbWluLCBjbGFtcCwgcGxhY2VtZW50cywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBzaWRlcywgbWF4LCBnZXRPcHBvc2l0ZUF4aXMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuZXhwb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBzaWRlQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWduTGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IHNpZGVBeGlzID09PSAneSc7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0cy5mbG9hdGluZy53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3RzLmZsb2F0aW5nLmhlaWdodFxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWlkZGxld2FyZURhdGFcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IGNsYW1wKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUbyBlbnN1cmUgYHNoaWZ0KClgIGNvbnRpbnVlcyB0byB0YWtlIGFjdGlvbixcbiAgICAvLyBhIHNpbmdsZSByZXNldCBpcyBwZXJmb3JtZWQgd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4IDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gKyBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldCAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uKHNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgcmVzZXQ6IHNob3VsZEFkZE9mZnNldFxuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzJDEgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gcGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgYWxpZ25tZW50U2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50cyQxWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMF1dLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1sxXV1dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAgICAgLy8gSWYgYSByZXNldCBieSB0aGUgYXJyb3cgd2FzIGNhdXNlZCBkdWUgdG8gYW4gYWxpZ25tZW50IG9mZnNldCBiZWluZ1xuICAgICAgLy8gYWRkZWQsIHdlIHNob3VsZCBza2lwIGFueSBsb2dpYyBub3cgc2luY2UgYGZsaXAoKWAgaGFzIGFscmVhZHkgZG9uZSBpdHNcbiAgICAgIC8vIHdvcmsuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI1NDkjaXNzdWVjb21tZW50LTE3MTk2MDE2NDNcbiAgICAgIGlmICgoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaW5pdGlhbFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoaW5pdGlhbFBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZSc7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVzWzBdXSwgb3ZlcmZsb3dbc2lkZXNbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlcjIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyBkaXJlY3Rpb25zIGZhdm9yaW5nIGdyZWF0ZXIgd2lkdGguXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gJ3knO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSkubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlcjJbMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8vIEZvciB0eXBlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCB0aGUgYE9mZnNldE9wdGlvbnNgIHR5cGUgd2FzIGFsc29cbi8vIERlcml2YWJsZS5cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogMCxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbCxcbiAgICAuLi5yYXdWYWx1ZVxuICB9O1xuICBpZiAoYWxpZ25tZW50ICYmIHR5cGVvZiBhbGlnbm1lbnRBeGlzID09PSAnbnVtYmVyJykge1xuICAgIGNyb3NzQXhpcyA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyBhbGlnbm1lbnRBeGlzICogLTEgOiBhbGlnbm1lbnRBeGlzO1xuICB9XG4gIHJldHVybiBpc1ZlcnRpY2FsID8ge1xuICAgIHg6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpLFxuICAgIHk6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aVxuICB9IDoge1xuICAgIHg6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aSxcbiAgICB5OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aVxuICB9O1xufVxuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkYXJyb3c7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGRpZmZDb29yZHMgPSBhd2FpdCBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucyk7XG5cbiAgICAgIC8vIElmIHRoZSBwbGFjZW1lbnQgaXMgdGhlIHNhbWUgYW5kIHRoZSBhcnJvdyBjYXVzZWQgYW4gYWxpZ25tZW50IG9mZnNldFxuICAgICAgLy8gdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgcG9zaXRpb25pbmcgY29vcmRpbmF0ZXMuXG4gICAgICBpZiAocGxhY2VtZW50ID09PSAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZS5wbGFjZW1lbnQpICYmIChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5kaWZmQ29vcmRzLFxuICAgICAgICAgIHBsYWNlbWVudFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2hpZnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBsaW1pdGVyID0ge1xuICAgICAgICAgIGZuOiBfcmVmID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH0gPSBfcmVmO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IG1haW5BeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IG1haW5BeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWFpbkF4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBtYWluQXhpc0Nvb3JkID0gY2xhbXAobWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gY2xhbXAobWluLCBjcm9zc0F4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpbWl0ZWRDb29yZHMgPSBsaW1pdGVyLmZuKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5saW1pdGVkQ29vcmRzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgeDogbGltaXRlZENvb3Jkcy54IC0geCxcbiAgICAgICAgICB5OiBsaW1pdGVkQ29vcmRzLnkgLSB5XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBvZmZzZXQgPSAwLFxuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGNvbnN0IHJhd09mZnNldCA9IGV2YWx1YXRlKG9mZnNldCwgc3RhdGUpO1xuICAgICAgY29uc3QgY29tcHV0ZWRPZmZzZXQgPSB0eXBlb2YgcmF3T2Zmc2V0ID09PSAnbnVtYmVyJyA/IHtcbiAgICAgICAgbWFpbkF4aXM6IHJhd09mZnNldCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwXG4gICAgICB9IDoge1xuICAgICAgICBtYWluQXhpczogMCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwLFxuICAgICAgICAuLi5yYXdPZmZzZXRcbiAgICAgIH07XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dIC0gY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGlmIChtYWluQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAobWFpbkF4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJG9mZnNlMjtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICAgICAgY29uc3QgaXNPcmlnaW5TaWRlID0gWyd0b3AnLCAnbGVmdCddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgKGlzT3JpZ2luU2lkZSA/ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlW2Nyb3NzQXhpc10pIHx8IDAgOiAwKSArIChpc09yaWdpblNpZGUgPyAwIDogY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzKTtcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dICsgKGlzT3JpZ2luU2lkZSA/IDAgOiAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZTIgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UyW2Nyb3NzQXhpc10pIHx8IDApIC0gKGlzT3JpZ2luU2lkZSA/IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyA6IDApO1xuICAgICAgICBpZiAoY3Jvc3NBeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAoY3Jvc3NBeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpemUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFwcGx5ID0gKCkgPT4ge30sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc1lBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knO1xuICAgICAgY29uc3Qge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICB9ID0gcmVjdHMuZmxvYXRpbmc7XG4gICAgICBsZXQgaGVpZ2h0U2lkZTtcbiAgICAgIGxldCB3aWR0aFNpZGU7XG4gICAgICBpZiAoc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IHNpZGU7XG4gICAgICAgIHdpZHRoU2lkZSA9IGFsaWdubWVudCA9PT0gKChhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpID8gJ3N0YXJ0JyA6ICdlbmQnKSA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aWR0aFNpZGUgPSBzaWRlO1xuICAgICAgICBoZWlnaHRTaWRlID0gYWxpZ25tZW50ID09PSAnZW5kJyA/ICd0b3AnIDogJ2JvdHRvbSc7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCA9IHdpZHRoIC0gb3ZlcmZsb3cubGVmdCAtIG92ZXJmbG93LnJpZ2h0O1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBtaW4oaGVpZ2h0IC0gb3ZlcmZsb3dbaGVpZ2h0U2lkZV0sIG1heGltdW1DbGlwcGluZ0hlaWdodCk7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoID0gbWluKHdpZHRoIC0gb3ZlcmZsb3dbd2lkdGhTaWRlXSwgbWF4aW11bUNsaXBwaW5nV2lkdGgpO1xuICAgICAgY29uc3Qgbm9TaGlmdCA9ICFzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdDtcbiAgICAgIGxldCBhdmFpbGFibGVIZWlnaHQgPSBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodDtcbiAgICAgIGxldCBhdmFpbGFibGVXaWR0aCA9IG92ZXJmbG93QXZhaWxhYmxlV2lkdGg7XG4gICAgICBpZiAoaXNZQXhpcykge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IGFsaWdubWVudCB8fCBub1NoaWZ0ID8gbWluKG92ZXJmbG93QXZhaWxhYmxlV2lkdGgsIG1heGltdW1DbGlwcGluZ1dpZHRoKSA6IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gYWxpZ25tZW50IHx8IG5vU2hpZnQgPyBtaW4ob3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQsIG1heGltdW1DbGlwcGluZ0hlaWdodCkgOiBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobm9TaGlmdCAmJiAhYWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBtYXgob3ZlcmZsb3cubGVmdCwgMCk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBtYXgob3ZlcmZsb3cucmlnaHQsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gbWF4KG92ZXJmbG93LnRvcCwgMCk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBtYXgob3ZlcmZsb3cuYm90dG9tLCAwKTtcbiAgICAgICAgaWYgKGlzWUF4aXMpIHtcbiAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gMiAqICh4TWluICE9PSAwIHx8IHhNYXggIT09IDAgPyB4TWluICsgeE1heCA6IG1heChvdmVyZmxvdy5sZWZ0LCBvdmVyZmxvdy5yaWdodCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIDIgKiAoeU1pbiAhPT0gMCB8fCB5TWF4ICE9PSAwID8geU1pbiArIHlNYXggOiBtYXgob3ZlcmZsb3cudG9wLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHkoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGgsXG4gICAgICAgIGF2YWlsYWJsZUhlaWdodFxuICAgICAgfSk7XG4gICAgICBjb25zdCBuZXh0RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgaWYgKHdpZHRoICE9PSBuZXh0RGltZW5zaW9ucy53aWR0aCB8fCBoZWlnaHQgIT09IG5leHREaW1lbnNpb25zLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHNoaWZ0LCBzaXplIH07XG4iLCJmdW5jdGlvbiBoYXNXaW5kb3coKSB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cbmZ1bmN0aW9uIGdldE5vZGVOYW1lKG5vZGUpIHtcbiAgaWYgKGlzTm9kZShub2RlKSkge1xuICAgIHJldHVybiAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICAvLyBNb2NrZWQgbm9kZXMgaW4gdGVzdGluZyBlbnZpcm9ubWVudHMgbWF5IG5vdCBiZSBpbnN0YW5jZXMgb2YgTm9kZS4gQnlcbiAgLy8gcmV0dXJuaW5nIGAjZG9jdW1lbnRgIGFuIGluZmluaXRlIGxvb3Agd29uJ3Qgb2NjdXIuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjMxN1xuICByZXR1cm4gJyNkb2N1bWVudCc7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuIChub2RlID09IG51bGwgfHwgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICB2YXIgX3JlZjtcbiAgcmV0dXJuIChfcmVmID0gKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZWYuZG9jdW1lbnRFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgTm9kZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkgfHwgdHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLlNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVsnaW5saW5lJywgJ2NvbnRlbnRzJ10uaW5jbHVkZXMoZGlzcGxheSk7XG59XG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpO1xufVxuZnVuY3Rpb24gaXNUb3BMYXllcihlbGVtZW50KSB7XG4gIHJldHVybiBbJzpwb3BvdmVyLW9wZW4nLCAnOm1vZGFsJ10uc29tZShzZWxlY3RvciA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudE9yQ3NzKSB7XG4gIGNvbnN0IHdlYmtpdCA9IGlzV2ViS2l0KCk7XG4gIGNvbnN0IGNzcyA9IGlzRWxlbWVudChlbGVtZW50T3JDc3MpID8gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50T3JDc3MpIDogZWxlbWVudE9yQ3NzO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHJldHVybiBjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgKGNzcy5jb250YWluZXJUeXBlID8gY3NzLmNvbnRhaW5lclR5cGUgIT09ICdub3JtYWwnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5iYWNrZHJvcEZpbHRlciA/IGNzcy5iYWNrZHJvcEZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAobmV4dFJlZlJlY3QueCAhPT0gcHJldlJlZlJlY3QueCB8fCBuZXh0UmVmUmVjdC55ICE9PSBwcmV2UmVmUmVjdC55IHx8IG5leHRSZWZSZWN0LndpZHRoICE9PSBwcmV2UmVmUmVjdC53aWR0aCB8fCBuZXh0UmVmUmVjdC5oZWlnaHQgIT09IHByZXZSZWZSZWN0LmhlaWdodCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyMjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICBjbGVhbnVwSW8gPT0gbnVsbCB8fCBjbGVhbnVwSW8oKTtcbiAgICAoX3Jlc2l6ZU9ic2VydmVyMiA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlcjIuZGlzY29ubmVjdCgpO1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmNvbnN0IGRldGVjdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3ckMTtcblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gYXV0b1BsYWNlbWVudCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBzaGlmdCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZsaXAkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gc2l6ZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGhpZGUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBhcnJvdyQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBpbmxpbmUkMTtcblxuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGxpbWl0U2hpZnQkMTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfTtcbiIsImltcG9ydCB7IHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxudmFyIGluZGV4ID0gdXNlTGF5b3V0RWZmZWN0IDtcblxuZXhwb3J0IHsgaW5kZXggYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMic7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcyc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcywgY3NzIGFzIGNzcyQyIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXknO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5pbXBvcnQgX3R5cGVvZiBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YnO1xuaW1wb3J0IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdGFnZ2VkVGVtcGxhdGVMaXRlcmFsJztcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHknO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlQ2FsbGJhY2ssIGNyZWF0ZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgYXV0b1VwZGF0ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHVzZUxheW91dEVmZmVjdCBmcm9tICd1c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0JztcblxudmFyIF9leGNsdWRlZCQ0ID0gW1wiY2xhc3NOYW1lXCIsIFwiY2xlYXJWYWx1ZVwiLCBcImN4XCIsIFwiZ2V0U3R5bGVzXCIsIFwiZ2V0Q2xhc3NOYW1lc1wiLCBcImdldFZhbHVlXCIsIFwiaGFzVmFsdWVcIiwgXCJpc011bHRpXCIsIFwiaXNSdGxcIiwgXCJvcHRpb25zXCIsIFwic2VsZWN0T3B0aW9uXCIsIFwic2VsZWN0UHJvcHNcIiwgXCJzZXRWYWx1ZVwiLCBcInRoZW1lXCJdO1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOTyBPUFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBub29wID0gZnVuY3Rpb24gbm9vcCgpIHt9O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENsYXNzIE5hbWUgUHJlZml4ZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29tcG9uZW50IHN0YXRlIGZvciBzdHlsaW5nIHdpdGggY2xhc3MgbmFtZXMuXG5cbiBFeHBlY3RzIGFuIGFycmF5IG9mIHN0cmluZ3MgT1IgYSBzdHJpbmcvb2JqZWN0IHBhaXI6XG4gLSBjbGFzc05hbWUoWydjb21wJywgJ2NvbXAtYXJnJywgJ2NvbXAtYXJnLTInXSlcbiAgIEByZXR1cm5zICdyZWFjdC1zZWxlY3RfX2NvbXAgcmVhY3Qtc2VsZWN0X19jb21wLWFyZyByZWFjdC1zZWxlY3RfX2NvbXAtYXJnLTInXG4gLSBjbGFzc05hbWUoJ2NvbXAnLCB7IHNvbWU6IHRydWUsIHN0YXRlOiBmYWxzZSB9KVxuICAgQHJldHVybnMgJ3JlYWN0LXNlbGVjdF9fY29tcCByZWFjdC1zZWxlY3RfX2NvbXAtLXNvbWUnXG4qL1xuZnVuY3Rpb24gYXBwbHlQcmVmaXhUb05hbWUocHJlZml4LCBuYW1lKSB7XG4gIGlmICghbmFtZSkge1xuICAgIHJldHVybiBwcmVmaXg7XG4gIH0gZWxzZSBpZiAobmFtZVswXSA9PT0gJy0nKSB7XG4gICAgcmV0dXJuIHByZWZpeCArIG5hbWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHByZWZpeCArICdfXycgKyBuYW1lO1xuICB9XG59XG5mdW5jdGlvbiBjbGFzc05hbWVzKHByZWZpeCwgc3RhdGUpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGNsYXNzTmFtZUxpc3QgPSBuZXcgQXJyYXkoX2xlbiA+IDIgPyBfbGVuIC0gMiA6IDApLCBfa2V5ID0gMjsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGNsYXNzTmFtZUxpc3RbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG4gIHZhciBhcnIgPSBbXS5jb25jYXQoY2xhc3NOYW1lTGlzdCk7XG4gIGlmIChzdGF0ZSAmJiBwcmVmaXgpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gc3RhdGUpIHtcbiAgICAgIGlmIChzdGF0ZS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHN0YXRlW2tleV0pIHtcbiAgICAgICAgYXJyLnB1c2goXCJcIi5jb25jYXQoYXBwbHlQcmVmaXhUb05hbWUocHJlZml4LCBrZXkpKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGk7XG4gIH0pLm1hcChmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBTdHJpbmcoaSkudHJpbSgpO1xuICB9KS5qb2luKCcgJyk7XG59XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENsZWFuIFZhbHVlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGNsZWFuVmFsdWUgPSBmdW5jdGlvbiBjbGVhblZhbHVlKHZhbHVlKSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmZpbHRlcihCb29sZWFuKTtcbiAgaWYgKF90eXBlb2YodmFsdWUpID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkgcmV0dXJuIFt2YWx1ZV07XG4gIHJldHVybiBbXTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ2xlYW4gQ29tbW9uIFByb3BzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGNsZWFuQ29tbW9uUHJvcHMgPSBmdW5jdGlvbiBjbGVhbkNvbW1vblByb3BzKHByb3BzKSB7XG4gIC8vY2xhc3NOYW1lXG4gIHByb3BzLmNsYXNzTmFtZTtcbiAgICBwcm9wcy5jbGVhclZhbHVlO1xuICAgIHByb3BzLmN4O1xuICAgIHByb3BzLmdldFN0eWxlcztcbiAgICBwcm9wcy5nZXRDbGFzc05hbWVzO1xuICAgIHByb3BzLmdldFZhbHVlO1xuICAgIHByb3BzLmhhc1ZhbHVlO1xuICAgIHByb3BzLmlzTXVsdGk7XG4gICAgcHJvcHMuaXNSdGw7XG4gICAgcHJvcHMub3B0aW9ucztcbiAgICBwcm9wcy5zZWxlY3RPcHRpb247XG4gICAgcHJvcHMuc2VsZWN0UHJvcHM7XG4gICAgcHJvcHMuc2V0VmFsdWU7XG4gICAgcHJvcHMudGhlbWU7XG4gICAgdmFyIGlubmVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCQ0KTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe30sIGlubmVyUHJvcHMpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHZXQgU3R5bGUgUHJvcHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgZ2V0U3R5bGVQcm9wcyA9IGZ1bmN0aW9uIGdldFN0eWxlUHJvcHMocHJvcHMsIG5hbWUsIGNsYXNzTmFtZXNTdGF0ZSkge1xuICB2YXIgY3ggPSBwcm9wcy5jeCxcbiAgICBnZXRTdHlsZXMgPSBwcm9wcy5nZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lcyA9IHByb3BzLmdldENsYXNzTmFtZXMsXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICByZXR1cm4ge1xuICAgIGNzczogZ2V0U3R5bGVzKG5hbWUsIHByb3BzKSxcbiAgICBjbGFzc05hbWU6IGN4KGNsYXNzTmFtZXNTdGF0ZSAhPT0gbnVsbCAmJiBjbGFzc05hbWVzU3RhdGUgIT09IHZvaWQgMCA/IGNsYXNzTmFtZXNTdGF0ZSA6IHt9LCBnZXRDbGFzc05hbWVzKG5hbWUsIHByb3BzKSwgY2xhc3NOYW1lKVxuICB9O1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIYW5kbGUgSW5wdXQgQ2hhbmdlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gaGFuZGxlSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwgYWN0aW9uTWV0YSwgb25JbnB1dENoYW5nZSkge1xuICBpZiAob25JbnB1dENoYW5nZSkge1xuICAgIHZhciBfbmV3VmFsdWUgPSBvbklucHV0Q2hhbmdlKGlucHV0VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIGlmICh0eXBlb2YgX25ld1ZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIF9uZXdWYWx1ZTtcbiAgfVxuICByZXR1cm4gaW5wdXRWYWx1ZTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY3JvbGwgSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGlzRG9jdW1lbnRFbGVtZW50KGVsKSB7XG4gIHJldHVybiBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC5ib2R5LCB3aW5kb3ddLmluZGV4T2YoZWwpID4gLTE7XG59XG5cbi8vIE5vcm1hbGl6ZWQgU2Nyb2xsIFRvcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZWRIZWlnaHQoZWwpIHtcbiAgaWYgKGlzRG9jdW1lbnRFbGVtZW50KGVsKSkge1xuICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIGVsLmNsaWVudEhlaWdodDtcbn1cblxuLy8gTm9ybWFsaXplZCBzY3JvbGxUbyAmIHNjcm9sbFRvcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGdldFNjcm9sbFRvcChlbCkge1xuICBpZiAoaXNEb2N1bWVudEVsZW1lbnQoZWwpKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgfVxuICByZXR1cm4gZWwuc2Nyb2xsVG9wO1xufVxuZnVuY3Rpb24gc2Nyb2xsVG8oZWwsIHRvcCkge1xuICAvLyB3aXRoIGEgc2Nyb2xsIGRpc3RhbmNlLCB3ZSBwZXJmb3JtIHNjcm9sbCBvbiB0aGUgZWxlbWVudFxuICBpZiAoaXNEb2N1bWVudEVsZW1lbnQoZWwpKSB7XG4gICAgd2luZG93LnNjcm9sbFRvKDAsIHRvcCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsLnNjcm9sbFRvcCA9IHRvcDtcbn1cblxuLy8gR2V0IFNjcm9sbCBQYXJlbnRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICB2YXIgZXhjbHVkZVN0YXRpY1BhcmVudCA9IHN0eWxlLnBvc2l0aW9uID09PSAnYWJzb2x1dGUnO1xuICB2YXIgb3ZlcmZsb3dSeCA9IC8oYXV0b3xzY3JvbGwpLztcbiAgaWYgKHN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICBmb3IgKHZhciBwYXJlbnQgPSBlbGVtZW50OyBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudDspIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICBpZiAoZXhjbHVkZVN0YXRpY1BhcmVudCAmJiBzdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAob3ZlcmZsb3dSeC50ZXN0KHN0eWxlLm92ZXJmbG93ICsgc3R5bGUub3ZlcmZsb3dZICsgc3R5bGUub3ZlcmZsb3dYKSkge1xuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbn1cblxuLy8gQW5pbWF0ZWQgU2Nyb2xsIFRvXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gIEBwYXJhbSB0OiB0aW1lIChlbGFwc2VkKVxuICBAcGFyYW0gYjogaW5pdGlhbCB2YWx1ZVxuICBAcGFyYW0gYzogYW1vdW50IG9mIGNoYW5nZVxuICBAcGFyYW0gZDogZHVyYXRpb25cbiovXG5mdW5jdGlvbiBlYXNlT3V0Q3ViaWModCwgYiwgYywgZCkge1xuICByZXR1cm4gYyAqICgodCA9IHQgLyBkIC0gMSkgKiB0ICogdCArIDEpICsgYjtcbn1cbmZ1bmN0aW9uIGFuaW1hdGVkU2Nyb2xsVG8oZWxlbWVudCwgdG8pIHtcbiAgdmFyIGR1cmF0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAyMDA7XG4gIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogbm9vcDtcbiAgdmFyIHN0YXJ0ID0gZ2V0U2Nyb2xsVG9wKGVsZW1lbnQpO1xuICB2YXIgY2hhbmdlID0gdG8gLSBzdGFydDtcbiAgdmFyIGluY3JlbWVudCA9IDEwO1xuICB2YXIgY3VycmVudFRpbWUgPSAwO1xuICBmdW5jdGlvbiBhbmltYXRlU2Nyb2xsKCkge1xuICAgIGN1cnJlbnRUaW1lICs9IGluY3JlbWVudDtcbiAgICB2YXIgdmFsID0gZWFzZU91dEN1YmljKGN1cnJlbnRUaW1lLCBzdGFydCwgY2hhbmdlLCBkdXJhdGlvbik7XG4gICAgc2Nyb2xsVG8oZWxlbWVudCwgdmFsKTtcbiAgICBpZiAoY3VycmVudFRpbWUgPCBkdXJhdGlvbikge1xuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlU2Nyb2xsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGFuaW1hdGVTY3JvbGwoKTtcbn1cblxuLy8gU2Nyb2xsIEludG8gVmlld1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KG1lbnVFbCwgZm9jdXNlZEVsKSB7XG4gIHZhciBtZW51UmVjdCA9IG1lbnVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIGZvY3VzZWRSZWN0ID0gZm9jdXNlZEVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgb3ZlclNjcm9sbCA9IGZvY3VzZWRFbC5vZmZzZXRIZWlnaHQgLyAzO1xuICBpZiAoZm9jdXNlZFJlY3QuYm90dG9tICsgb3ZlclNjcm9sbCA+IG1lbnVSZWN0LmJvdHRvbSkge1xuICAgIHNjcm9sbFRvKG1lbnVFbCwgTWF0aC5taW4oZm9jdXNlZEVsLm9mZnNldFRvcCArIGZvY3VzZWRFbC5jbGllbnRIZWlnaHQgLSBtZW51RWwub2Zmc2V0SGVpZ2h0ICsgb3ZlclNjcm9sbCwgbWVudUVsLnNjcm9sbEhlaWdodCkpO1xuICB9IGVsc2UgaWYgKGZvY3VzZWRSZWN0LnRvcCAtIG92ZXJTY3JvbGwgPCBtZW51UmVjdC50b3ApIHtcbiAgICBzY3JvbGxUbyhtZW51RWwsIE1hdGgubWF4KGZvY3VzZWRFbC5vZmZzZXRUb3AgLSBvdmVyU2Nyb2xsLCAwKSk7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHZXQgYm91bmRpbmcgY2xpZW50IG9iamVjdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIGNhbm5vdCBnZXQga2V5cyB1c2luZyBhcnJheSBub3RhdGlvbiB3aXRoIERPTVJlY3RcbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50T2JqKGVsZW1lbnQpIHtcbiAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICByZXR1cm4ge1xuICAgIGJvdHRvbTogcmVjdC5ib3R0b20sXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCxcbiAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgcmlnaHQ6IHJlY3QucmlnaHQsXG4gICAgdG9wOiByZWN0LnRvcCxcbiAgICB3aWR0aDogcmVjdC53aWR0aFxuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRvdWNoIENhcGFiaWxpdHkgRGV0ZWN0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBpc1RvdWNoQ2FwYWJsZSgpIHtcbiAgdHJ5IHtcbiAgICBkb2N1bWVudC5jcmVhdGVFdmVudCgnVG91Y2hFdmVudCcpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIERldmljZSBEZXRlY3RvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGlzTW9iaWxlRGV2aWNlKCkge1xuICB0cnkge1xuICAgIHJldHVybiAvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXNzaXZlIEV2ZW50IERldGVjdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3JhZmdyYXBoL2RldGVjdC1pdC9ibG9iL21haW4vc3JjL2luZGV4LnRzI0wxOS1MMzZcbnZhciBwYXNzaXZlT3B0aW9uQWNjZXNzZWQgPSBmYWxzZTtcbnZhciBvcHRpb25zID0ge1xuICBnZXQgcGFzc2l2ZSgpIHtcbiAgICByZXR1cm4gcGFzc2l2ZU9wdGlvbkFjY2Vzc2VkID0gdHJ1ZTtcbiAgfVxufTtcbi8vIGNoZWNrIGZvciBTU1JcbnZhciB3ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fTtcbmlmICh3LmFkZEV2ZW50TGlzdGVuZXIgJiYgdy5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gIHcuYWRkRXZlbnRMaXN0ZW5lcigncCcsIG5vb3AsIG9wdGlvbnMpO1xuICB3LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3AnLCBub29wLCBmYWxzZSk7XG59XG52YXIgc3VwcG9ydHNQYXNzaXZlRXZlbnRzID0gcGFzc2l2ZU9wdGlvbkFjY2Vzc2VkO1xuZnVuY3Rpb24gbm90TnVsbGlzaChpdGVtKSB7XG4gIHJldHVybiBpdGVtICE9IG51bGw7XG59XG5mdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpO1xufVxuZnVuY3Rpb24gdmFsdWVUZXJuYXJ5KGlzTXVsdGksIG11bHRpVmFsdWUsIHNpbmdsZVZhbHVlKSB7XG4gIHJldHVybiBpc011bHRpID8gbXVsdGlWYWx1ZSA6IHNpbmdsZVZhbHVlO1xufVxuZnVuY3Rpb24gc2luZ2xlVmFsdWVBc1ZhbHVlKHNpbmdsZVZhbHVlKSB7XG4gIHJldHVybiBzaW5nbGVWYWx1ZTtcbn1cbmZ1bmN0aW9uIG11bHRpVmFsdWVBc1ZhbHVlKG11bHRpVmFsdWUpIHtcbiAgcmV0dXJuIG11bHRpVmFsdWU7XG59XG52YXIgcmVtb3ZlUHJvcHMgPSBmdW5jdGlvbiByZW1vdmVQcm9wcyhwcm9wc09iaikge1xuICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIHByb3BlcnRpZXMgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgIHByb3BlcnRpZXNbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gIH1cbiAgdmFyIHByb3BzTWFwID0gT2JqZWN0LmVudHJpZXMocHJvcHNPYmopLmZpbHRlcihmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBfcmVmMiA9IF9zbGljZWRUb0FycmF5KF9yZWYsIDEpLFxuICAgICAga2V5ID0gX3JlZjJbMF07XG4gICAgcmV0dXJuICFwcm9wZXJ0aWVzLmluY2x1ZGVzKGtleSk7XG4gIH0pO1xuICByZXR1cm4gcHJvcHNNYXAucmVkdWNlKGZ1bmN0aW9uIChuZXdQcm9wcywgX3JlZjMpIHtcbiAgICB2YXIgX3JlZjQgPSBfc2xpY2VkVG9BcnJheShfcmVmMywgMiksXG4gICAgICBrZXkgPSBfcmVmNFswXSxcbiAgICAgIHZhbCA9IF9yZWY0WzFdO1xuICAgIG5ld1Byb3BzW2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIG5ld1Byb3BzO1xuICB9LCB7fSk7XG59O1xuXG52YXIgX2V4Y2x1ZGVkJDMgPSBbXCJjaGlsZHJlblwiLCBcImlubmVyUHJvcHNcIl0sXG4gIF9leGNsdWRlZDIkMSA9IFtcImNoaWxkcmVuXCIsIFwiaW5uZXJQcm9wc1wiXTtcbmZ1bmN0aW9uIGdldE1lbnVQbGFjZW1lbnQoX3JlZikge1xuICB2YXIgcHJlZmVycmVkTWF4SGVpZ2h0ID0gX3JlZi5tYXhIZWlnaHQsXG4gICAgbWVudUVsID0gX3JlZi5tZW51RWwsXG4gICAgbWluSGVpZ2h0ID0gX3JlZi5taW5IZWlnaHQsXG4gICAgcHJlZmVycmVkUGxhY2VtZW50ID0gX3JlZi5wbGFjZW1lbnQsXG4gICAgc2hvdWxkU2Nyb2xsID0gX3JlZi5zaG91bGRTY3JvbGwsXG4gICAgaXNGaXhlZFBvc2l0aW9uID0gX3JlZi5pc0ZpeGVkUG9zaXRpb24sXG4gICAgY29udHJvbEhlaWdodCA9IF9yZWYuY29udHJvbEhlaWdodDtcbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChtZW51RWwpO1xuICB2YXIgZGVmYXVsdFN0YXRlID0ge1xuICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgfTtcblxuICAvLyBzb21ldGhpbmcgd2VudCB3cm9uZywgcmV0dXJuIGRlZmF1bHQgc3RhdGVcbiAgaWYgKCFtZW51RWwgfHwgIW1lbnVFbC5vZmZzZXRQYXJlbnQpIHJldHVybiBkZWZhdWx0U3RhdGU7XG5cbiAgLy8gd2UgY2FuJ3QgdHJ1c3QgYHNjcm9sbFBhcmVudC5zY3JvbGxIZWlnaHRgIC0tPiBpdCBtYXkgaW5jcmVhc2Ugd2hlblxuICAvLyB0aGUgbWVudSBpcyByZW5kZXJlZFxuICB2YXIgX3Njcm9sbFBhcmVudCRnZXRCb3VuID0gc2Nyb2xsUGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIHNjcm9sbEhlaWdodCA9IF9zY3JvbGxQYXJlbnQkZ2V0Qm91bi5oZWlnaHQ7XG4gIHZhciBfbWVudUVsJGdldEJvdW5kaW5nQ2wgPSBtZW51RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgbWVudUJvdHRvbSA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC5ib3R0b20sXG4gICAgbWVudUhlaWdodCA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC5oZWlnaHQsXG4gICAgbWVudVRvcCA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC50b3A7XG4gIHZhciBfbWVudUVsJG9mZnNldFBhcmVudCQgPSBtZW51RWwub2Zmc2V0UGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIGNvbnRhaW5lclRvcCA9IF9tZW51RWwkb2Zmc2V0UGFyZW50JC50b3A7XG4gIHZhciB2aWV3SGVpZ2h0ID0gaXNGaXhlZFBvc2l0aW9uID8gd2luZG93LmlubmVySGVpZ2h0IDogbm9ybWFsaXplZEhlaWdodChzY3JvbGxQYXJlbnQpO1xuICB2YXIgc2Nyb2xsVG9wID0gZ2V0U2Nyb2xsVG9wKHNjcm9sbFBhcmVudCk7XG4gIHZhciBtYXJnaW5Cb3R0b20gPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKG1lbnVFbCkubWFyZ2luQm90dG9tLCAxMCk7XG4gIHZhciBtYXJnaW5Ub3AgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKG1lbnVFbCkubWFyZ2luVG9wLCAxMCk7XG4gIHZhciB2aWV3U3BhY2VBYm92ZSA9IGNvbnRhaW5lclRvcCAtIG1hcmdpblRvcDtcbiAgdmFyIHZpZXdTcGFjZUJlbG93ID0gdmlld0hlaWdodCAtIG1lbnVUb3A7XG4gIHZhciBzY3JvbGxTcGFjZUFib3ZlID0gdmlld1NwYWNlQWJvdmUgKyBzY3JvbGxUb3A7XG4gIHZhciBzY3JvbGxTcGFjZUJlbG93ID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gbWVudVRvcDtcbiAgdmFyIHNjcm9sbERvd24gPSBtZW51Qm90dG9tIC0gdmlld0hlaWdodCArIHNjcm9sbFRvcCArIG1hcmdpbkJvdHRvbTtcbiAgdmFyIHNjcm9sbFVwID0gc2Nyb2xsVG9wICsgbWVudVRvcCAtIG1hcmdpblRvcDtcbiAgdmFyIHNjcm9sbER1cmF0aW9uID0gMTYwO1xuICBzd2l0Y2ggKHByZWZlcnJlZFBsYWNlbWVudCkge1xuICAgIGNhc2UgJ2F1dG8nOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAvLyAxOiB0aGUgbWVudSB3aWxsIGZpdCwgZG8gbm90aGluZ1xuICAgICAgaWYgKHZpZXdTcGFjZUJlbG93ID49IG1lbnVIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDI6IHRoZSBtZW51IHdpbGwgZml0LCBpZiBzY3JvbGxlZFxuICAgICAgaWYgKHNjcm9sbFNwYWNlQmVsb3cgPj0gbWVudUhlaWdodCAmJiAhaXNGaXhlZFBvc2l0aW9uKSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsRG93biwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAzOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgY29uc3RyYWluZWRcbiAgICAgIGlmICghaXNGaXhlZFBvc2l0aW9uICYmIHNjcm9sbFNwYWNlQmVsb3cgPj0gbWluSGVpZ2h0IHx8IGlzRml4ZWRQb3NpdGlvbiAmJiB2aWV3U3BhY2VCZWxvdyA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxEb3duLCBzY3JvbGxEdXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3ZSB3YW50IHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUgbWVudSBhcyBwb3NzaWJsZSB0byB0aGUgdXNlcixcbiAgICAgICAgLy8gc28gZ2l2ZSB0aGVtIHdoYXRldmVyIGlzIGF2YWlsYWJsZSBiZWxvdyByYXRoZXIgdGhhbiB0aGUgbWluSGVpZ2h0LlxuICAgICAgICB2YXIgY29uc3RyYWluZWRIZWlnaHQgPSBpc0ZpeGVkUG9zaXRpb24gPyB2aWV3U3BhY2VCZWxvdyAtIG1hcmdpbkJvdHRvbSA6IHNjcm9sbFNwYWNlQmVsb3cgLSBtYXJnaW5Cb3R0b207XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IGNvbnN0cmFpbmVkSGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIEZvcmtlZCBiZXZpb3VyIHdoZW4gdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlIGJlbG93XG5cbiAgICAgIC8vIEFVVE86IGZsaXAgdGhlIG1lbnUsIHJlbmRlciBhYm92ZVxuICAgICAgaWYgKHByZWZlcnJlZFBsYWNlbWVudCA9PT0gJ2F1dG8nIHx8IGlzRml4ZWRQb3NpdGlvbikge1xuICAgICAgICAvLyBtYXkgbmVlZCB0byBiZSBjb25zdHJhaW5lZCBhZnRlciBmbGlwcGluZ1xuICAgICAgICB2YXIgX2NvbnN0cmFpbmVkSGVpZ2h0ID0gcHJlZmVycmVkTWF4SGVpZ2h0O1xuICAgICAgICB2YXIgc3BhY2VBYm92ZSA9IGlzRml4ZWRQb3NpdGlvbiA/IHZpZXdTcGFjZUFib3ZlIDogc2Nyb2xsU3BhY2VBYm92ZTtcbiAgICAgICAgaWYgKHNwYWNlQWJvdmUgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgICAgX2NvbnN0cmFpbmVkSGVpZ2h0ID0gTWF0aC5taW4oc3BhY2VBYm92ZSAtIG1hcmdpbkJvdHRvbSAtIGNvbnRyb2xIZWlnaHQsIHByZWZlcnJlZE1heEhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgIG1heEhlaWdodDogX2NvbnN0cmFpbmVkSGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEJPVFRPTTogYWxsb3cgYnJvd3NlciB0byBpbmNyZWFzZSBzY3JvbGxhYmxlIGFyZWEgYW5kIGltbWVkaWF0ZWx5IHNldCBzY3JvbGxcbiAgICAgIGlmIChwcmVmZXJyZWRQbGFjZW1lbnQgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBzY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbERvd24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIC8vIDE6IHRoZSBtZW51IHdpbGwgZml0LCBkbyBub3RoaW5nXG4gICAgICBpZiAodmlld1NwYWNlQWJvdmUgPj0gbWVudUhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMjogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIHNjcm9sbGVkXG4gICAgICBpZiAoc2Nyb2xsU3BhY2VBYm92ZSA+PSBtZW51SGVpZ2h0ICYmICFpc0ZpeGVkUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxVcCwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAzOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgY29uc3RyYWluZWRcbiAgICAgIGlmICghaXNGaXhlZFBvc2l0aW9uICYmIHNjcm9sbFNwYWNlQWJvdmUgPj0gbWluSGVpZ2h0IHx8IGlzRml4ZWRQb3NpdGlvbiAmJiB2aWV3U3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgdmFyIF9jb25zdHJhaW5lZEhlaWdodDIgPSBwcmVmZXJyZWRNYXhIZWlnaHQ7XG5cbiAgICAgICAgLy8gd2Ugd2FudCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlIG1lbnUgYXMgcG9zc2libGUgdG8gdGhlIHVzZXIsXG4gICAgICAgIC8vIHNvIGdpdmUgdGhlbSB3aGF0ZXZlciBpcyBhdmFpbGFibGUgYmVsb3cgcmF0aGVyIHRoYW4gdGhlIG1pbkhlaWdodC5cbiAgICAgICAgaWYgKCFpc0ZpeGVkUG9zaXRpb24gJiYgc2Nyb2xsU3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQgfHwgaXNGaXhlZFBvc2l0aW9uICYmIHZpZXdTcGFjZUFib3ZlID49IG1pbkhlaWdodCkge1xuICAgICAgICAgIF9jb25zdHJhaW5lZEhlaWdodDIgPSBpc0ZpeGVkUG9zaXRpb24gPyB2aWV3U3BhY2VBYm92ZSAtIG1hcmdpblRvcCA6IHNjcm9sbFNwYWNlQWJvdmUgLSBtYXJnaW5Ub3A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxVcCwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IF9jb25zdHJhaW5lZEhlaWdodDJcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gbm90IGVub3VnaCBzcGFjZSwgdGhlIGJyb3dzZXIgV0lMTCBOT1QgaW5jcmVhc2Ugc2Nyb2xsYWJsZSBhcmVhIHdoZW5cbiAgICAgIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZCBlbGVtZW50IHJlbmRlcmVkIGFib3ZlIHRoZSB2aWV3cG9ydCAob25seSBiZWxvdykuXG4gICAgICAvLyBGbGlwIHRoZSBtZW51LCByZW5kZXIgYmVsb3dcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHBsYWNlbWVudCBwcm92aWRlZCBcXFwiXCIuY29uY2F0KHByZWZlcnJlZFBsYWNlbWVudCwgXCJcXFwiLlwiKSk7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRTdGF0ZTtcbn1cblxuLy8gTWVudSBDb21wb25lbnRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBhbGlnblRvQ29udHJvbChwbGFjZW1lbnQpIHtcbiAgdmFyIHBsYWNlbWVudFRvQ1NTUHJvcCA9IHtcbiAgICBib3R0b206ICd0b3AnLFxuICAgIHRvcDogJ2JvdHRvbSdcbiAgfTtcbiAgcmV0dXJuIHBsYWNlbWVudCA/IHBsYWNlbWVudFRvQ1NTUHJvcFtwbGFjZW1lbnRdIDogJ2JvdHRvbSc7XG59XG52YXIgY29lcmNlUGxhY2VtZW50ID0gZnVuY3Rpb24gY29lcmNlUGxhY2VtZW50KHApIHtcbiAgcmV0dXJuIHAgPT09ICdhdXRvJyA/ICdib3R0b20nIDogcDtcbn07XG52YXIgbWVudUNTUyA9IGZ1bmN0aW9uIG1lbnVDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBfb2JqZWN0U3ByZWFkMjtcbiAgdmFyIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICBfcmVmMiR0aGVtZSA9IF9yZWYyLnRoZW1lLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYyJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBzcGFjaW5nID0gX3JlZjIkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKChfb2JqZWN0U3ByZWFkMiA9IHtcbiAgICBsYWJlbDogJ21lbnUnXG4gIH0sIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgYWxpZ25Ub0NvbnRyb2wocGxhY2VtZW50KSwgJzEwMCUnKSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBcInBvc2l0aW9uXCIsICdhYnNvbHV0ZScpLCBfZGVmaW5lUHJvcGVydHkoX29iamVjdFNwcmVhZDIsIFwid2lkdGhcIiwgJzEwMCUnKSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBcInpJbmRleFwiLCAxKSwgX29iamVjdFNwcmVhZDIpLCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLm5ldXRyYWwwLFxuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICAgIGJveFNoYWRvdzogJzAgMCAwIDFweCBoc2xhKDAsIDAlLCAwJSwgMC4xKSwgMCA0cHggMTFweCBoc2xhKDAsIDAlLCAwJSwgMC4xKScsXG4gICAgbWFyZ2luQm90dG9tOiBzcGFjaW5nLm1lbnVHdXR0ZXIsXG4gICAgbWFyZ2luVG9wOiBzcGFjaW5nLm1lbnVHdXR0ZXJcbiAgfSk7XG59O1xudmFyIFBvcnRhbFBsYWNlbWVudENvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dChudWxsKTtcblxuLy8gTk9URTogaW50ZXJuYWwgb25seVxudmFyIE1lbnVQbGFjZXIgPSBmdW5jdGlvbiBNZW51UGxhY2VyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIG1pbk1lbnVIZWlnaHQgPSBwcm9wcy5taW5NZW51SGVpZ2h0LFxuICAgIG1heE1lbnVIZWlnaHQgPSBwcm9wcy5tYXhNZW51SGVpZ2h0LFxuICAgIG1lbnVQbGFjZW1lbnQgPSBwcm9wcy5tZW51UGxhY2VtZW50LFxuICAgIG1lbnVQb3NpdGlvbiA9IHByb3BzLm1lbnVQb3NpdGlvbixcbiAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBwcm9wcy5tZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcsXG4gICAgdGhlbWUgPSBwcm9wcy50aGVtZTtcbiAgdmFyIF9yZWYzID0gdXNlQ29udGV4dChQb3J0YWxQbGFjZW1lbnRDb250ZXh0KSB8fCB7fSxcbiAgICBzZXRQb3J0YWxQbGFjZW1lbnQgPSBfcmVmMy5zZXRQb3J0YWxQbGFjZW1lbnQ7XG4gIHZhciByZWYgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShtYXhNZW51SGVpZ2h0KSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICBtYXhIZWlnaHQgPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldE1heEhlaWdodCA9IF91c2VTdGF0ZTJbMV07XG4gIHZhciBfdXNlU3RhdGUzID0gdXNlU3RhdGUobnVsbCksXG4gICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgIHBsYWNlbWVudCA9IF91c2VTdGF0ZTRbMF0sXG4gICAgc2V0UGxhY2VtZW50ID0gX3VzZVN0YXRlNFsxXTtcbiAgdmFyIGNvbnRyb2xIZWlnaHQgPSB0aGVtZS5zcGFjaW5nLmNvbnRyb2xIZWlnaHQ7XG4gIHVzZUxheW91dEVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1lbnVFbCA9IHJlZi5jdXJyZW50O1xuICAgIGlmICghbWVudUVsKSByZXR1cm47XG5cbiAgICAvLyBETyBOT1Qgc2Nyb2xsIGlmIHBvc2l0aW9uIGlzIGZpeGVkXG4gICAgdmFyIGlzRml4ZWRQb3NpdGlvbiA9IG1lbnVQb3NpdGlvbiA9PT0gJ2ZpeGVkJztcbiAgICB2YXIgc2hvdWxkU2Nyb2xsID0gbWVudVNob3VsZFNjcm9sbEludG9WaWV3ICYmICFpc0ZpeGVkUG9zaXRpb247XG4gICAgdmFyIHN0YXRlID0gZ2V0TWVudVBsYWNlbWVudCh7XG4gICAgICBtYXhIZWlnaHQ6IG1heE1lbnVIZWlnaHQsXG4gICAgICBtZW51RWw6IG1lbnVFbCxcbiAgICAgIG1pbkhlaWdodDogbWluTWVudUhlaWdodCxcbiAgICAgIHBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgIHNob3VsZFNjcm9sbDogc2hvdWxkU2Nyb2xsLFxuICAgICAgaXNGaXhlZFBvc2l0aW9uOiBpc0ZpeGVkUG9zaXRpb24sXG4gICAgICBjb250cm9sSGVpZ2h0OiBjb250cm9sSGVpZ2h0XG4gICAgfSk7XG4gICAgc2V0TWF4SGVpZ2h0KHN0YXRlLm1heEhlaWdodCk7XG4gICAgc2V0UGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gICAgc2V0UG9ydGFsUGxhY2VtZW50ID09PSBudWxsIHx8IHNldFBvcnRhbFBsYWNlbWVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2V0UG9ydGFsUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIH0sIFttYXhNZW51SGVpZ2h0LCBtZW51UGxhY2VtZW50LCBtZW51UG9zaXRpb24sIG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldywgbWluTWVudUhlaWdodCwgc2V0UG9ydGFsUGxhY2VtZW50LCBjb250cm9sSGVpZ2h0XSk7XG4gIHJldHVybiBjaGlsZHJlbih7XG4gICAgcmVmOiByZWYsXG4gICAgcGxhY2VyUHJvcHM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQgfHwgY29lcmNlUGxhY2VtZW50KG1lbnVQbGFjZW1lbnQpLFxuICAgICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHRcbiAgICB9KVxuICB9KTtcbn07XG52YXIgTWVudSA9IGZ1bmN0aW9uIE1lbnUocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJSZWYgPSBwcm9wcy5pbm5lclJlZixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ21lbnUnLCB7XG4gICAgbWVudTogdHJ1ZVxuICB9KSwge1xuICAgIHJlZjogaW5uZXJSZWZcbiAgfSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgTWVudSQxID0gTWVudTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IExpc3Rcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbWVudUxpc3RDU1MgPSBmdW5jdGlvbiBtZW51TGlzdENTUyhfcmVmNCwgdW5zdHlsZWQpIHtcbiAgdmFyIG1heEhlaWdodCA9IF9yZWY0Lm1heEhlaWdodCxcbiAgICBiYXNlVW5pdCA9IF9yZWY0LnRoZW1lLnNwYWNpbmcuYmFzZVVuaXQ7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCxcbiAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAvLyByZXF1aXJlZCBmb3Igb2Zmc2V0W0hlaWdodCwgVG9wXSA+IGtleWJvYXJkIHNjcm9sbFxuICAgIFdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOiAndG91Y2gnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgcGFkZGluZ0JvdHRvbTogYmFzZVVuaXQsXG4gICAgcGFkZGluZ1RvcDogYmFzZVVuaXRcbiAgfSk7XG59O1xudmFyIE1lbnVMaXN0ID0gZnVuY3Rpb24gTWVudUxpc3QocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgaW5uZXJSZWYgPSBwcm9wcy5pbm5lclJlZixcbiAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ21lbnVMaXN0Jywge1xuICAgICdtZW51LWxpc3QnOiB0cnVlLFxuICAgICdtZW51LWxpc3QtLWlzLW11bHRpJzogaXNNdWx0aVxuICB9KSwge1xuICAgIHJlZjogaW5uZXJSZWZcbiAgfSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVudSBOb3RpY2VzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIG5vdGljZUNTUyA9IGZ1bmN0aW9uIG5vdGljZUNTUyhfcmVmNSwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWY1JHRoZW1lID0gX3JlZjUudGhlbWUsXG4gICAgYmFzZVVuaXQgPSBfcmVmNSR0aGVtZS5zcGFjaW5nLmJhc2VVbml0LFxuICAgIGNvbG9ycyA9IF9yZWY1JHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw0MCxcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChiYXNlVW5pdCAqIDIsIFwicHggXCIpLmNvbmNhdChiYXNlVW5pdCAqIDMsIFwicHhcIilcbiAgfSk7XG59O1xudmFyIG5vT3B0aW9uc01lc3NhZ2VDU1MgPSBub3RpY2VDU1M7XG52YXIgbG9hZGluZ01lc3NhZ2VDU1MgPSBub3RpY2VDU1M7XG52YXIgTm9PcHRpb25zTWVzc2FnZSA9IGZ1bmN0aW9uIE5vT3B0aW9uc01lc3NhZ2UoX3JlZjYpIHtcbiAgdmFyIF9yZWY2JGNoaWxkcmVuID0gX3JlZjYuY2hpbGRyZW4sXG4gICAgY2hpbGRyZW4gPSBfcmVmNiRjaGlsZHJlbiA9PT0gdm9pZCAwID8gJ05vIG9wdGlvbnMnIDogX3JlZjYkY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IF9yZWY2LmlubmVyUHJvcHMsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY2LCBfZXhjbHVkZWQkMyk7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0UHJvcHMpLCB7fSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICBpbm5lclByb3BzOiBpbm5lclByb3BzXG4gIH0pLCAnbm9PcHRpb25zTWVzc2FnZScsIHtcbiAgICAnbWVudS1ub3RpY2UnOiB0cnVlLFxuICAgICdtZW51LW5vdGljZS0tbm8tb3B0aW9ucyc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIExvYWRpbmdNZXNzYWdlID0gZnVuY3Rpb24gTG9hZGluZ01lc3NhZ2UoX3JlZjcpIHtcbiAgdmFyIF9yZWY3JGNoaWxkcmVuID0gX3JlZjcuY2hpbGRyZW4sXG4gICAgY2hpbGRyZW4gPSBfcmVmNyRjaGlsZHJlbiA9PT0gdm9pZCAwID8gJ0xvYWRpbmcuLi4nIDogX3JlZjckY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IF9yZWY3LmlubmVyUHJvcHMsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY3LCBfZXhjbHVkZWQyJDEpO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdFByb3BzKSwge30sIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wczogaW5uZXJQcm9wc1xuICB9KSwgJ2xvYWRpbmdNZXNzYWdlJywge1xuICAgICdtZW51LW5vdGljZSc6IHRydWUsXG4gICAgJ21lbnUtbm90aWNlLS1sb2FkaW5nJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVudSBQb3J0YWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbWVudVBvcnRhbENTUyA9IGZ1bmN0aW9uIG1lbnVQb3J0YWxDU1MoX3JlZjgpIHtcbiAgdmFyIHJlY3QgPSBfcmVmOC5yZWN0LFxuICAgIG9mZnNldCA9IF9yZWY4Lm9mZnNldCxcbiAgICBwb3NpdGlvbiA9IF9yZWY4LnBvc2l0aW9uO1xuICByZXR1cm4ge1xuICAgIGxlZnQ6IHJlY3QubGVmdCxcbiAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgdG9wOiBvZmZzZXQsXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgekluZGV4OiAxXG4gIH07XG59O1xudmFyIE1lbnVQb3J0YWwgPSBmdW5jdGlvbiBNZW51UG9ydGFsKHByb3BzKSB7XG4gIHZhciBhcHBlbmRUbyA9IHByb3BzLmFwcGVuZFRvLFxuICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgY29udHJvbEVsZW1lbnQgPSBwcm9wcy5jb250cm9sRWxlbWVudCxcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBtZW51UGxhY2VtZW50ID0gcHJvcHMubWVudVBsYWNlbWVudCxcbiAgICBtZW51UG9zaXRpb24gPSBwcm9wcy5tZW51UG9zaXRpb247XG4gIHZhciBtZW51UG9ydGFsUmVmID0gdXNlUmVmKG51bGwpO1xuICB2YXIgY2xlYW51cFJlZiA9IHVzZVJlZihudWxsKTtcbiAgdmFyIF91c2VTdGF0ZTUgPSB1c2VTdGF0ZShjb2VyY2VQbGFjZW1lbnQobWVudVBsYWNlbWVudCkpLFxuICAgIF91c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU1LCAyKSxcbiAgICBwbGFjZW1lbnQgPSBfdXNlU3RhdGU2WzBdLFxuICAgIHNldFBvcnRhbFBsYWNlbWVudCA9IF91c2VTdGF0ZTZbMV07XG4gIHZhciBwb3J0YWxQbGFjZW1lbnRDb250ZXh0ID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNldFBvcnRhbFBsYWNlbWVudDogc2V0UG9ydGFsUGxhY2VtZW50XG4gICAgfTtcbiAgfSwgW10pO1xuICB2YXIgX3VzZVN0YXRlNyA9IHVzZVN0YXRlKG51bGwpLFxuICAgIF91c2VTdGF0ZTggPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU3LCAyKSxcbiAgICBjb21wdXRlZFBvc2l0aW9uID0gX3VzZVN0YXRlOFswXSxcbiAgICBzZXRDb21wdXRlZFBvc2l0aW9uID0gX3VzZVN0YXRlOFsxXTtcbiAgdmFyIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb24gPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFjb250cm9sRWxlbWVudCkgcmV0dXJuO1xuICAgIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRPYmooY29udHJvbEVsZW1lbnQpO1xuICAgIHZhciBzY3JvbGxEaXN0YW5jZSA9IG1lbnVQb3NpdGlvbiA9PT0gJ2ZpeGVkJyA/IDAgOiB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgdmFyIG9mZnNldCA9IHJlY3RbcGxhY2VtZW50XSArIHNjcm9sbERpc3RhbmNlO1xuICAgIGlmIChvZmZzZXQgIT09IChjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ub2Zmc2V0KSB8fCByZWN0LmxlZnQgIT09IChjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC5sZWZ0KSB8fCByZWN0LndpZHRoICE9PSAoY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLnJlY3Qud2lkdGgpKSB7XG4gICAgICBzZXRDb21wdXRlZFBvc2l0aW9uKHtcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgIHJlY3Q6IHJlY3RcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2NvbnRyb2xFbGVtZW50LCBtZW51UG9zaXRpb24sIHBsYWNlbWVudCwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLm9mZnNldCwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLnJlY3QubGVmdCwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLnJlY3Qud2lkdGhdKTtcbiAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICB1cGRhdGVDb21wdXRlZFBvc2l0aW9uKCk7XG4gIH0sIFt1cGRhdGVDb21wdXRlZFBvc2l0aW9uXSk7XG4gIHZhciBydW5BdXRvVXBkYXRlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgY2xlYW51cFJlZi5jdXJyZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjbGVhbnVwUmVmLmN1cnJlbnQoKTtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICAgIGlmIChjb250cm9sRWxlbWVudCAmJiBtZW51UG9ydGFsUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IGF1dG9VcGRhdGUoY29udHJvbEVsZW1lbnQsIG1lbnVQb3J0YWxSZWYuY3VycmVudCwgdXBkYXRlQ29tcHV0ZWRQb3NpdGlvbiwge1xuICAgICAgICBlbGVtZW50UmVzaXplOiAnUmVzaXplT2JzZXJ2ZXInIGluIHdpbmRvd1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY29udHJvbEVsZW1lbnQsIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb25dKTtcbiAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBydW5BdXRvVXBkYXRlKCk7XG4gIH0sIFtydW5BdXRvVXBkYXRlXSk7XG4gIHZhciBzZXRNZW51UG9ydGFsRWxlbWVudCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChtZW51UG9ydGFsRWxlbWVudCkge1xuICAgIG1lbnVQb3J0YWxSZWYuY3VycmVudCA9IG1lbnVQb3J0YWxFbGVtZW50O1xuICAgIHJ1bkF1dG9VcGRhdGUoKTtcbiAgfSwgW3J1bkF1dG9VcGRhdGVdKTtcblxuICAvLyBiYWlsIGVhcmx5IGlmIHJlcXVpcmVkIGVsZW1lbnRzIGFyZW4ndCBwcmVzZW50XG4gIGlmICghYXBwZW5kVG8gJiYgbWVudVBvc2l0aW9uICE9PSAnZml4ZWQnIHx8ICFjb21wdXRlZFBvc2l0aW9uKSByZXR1cm4gbnVsbDtcblxuICAvLyBzYW1lIHdyYXBwZXIgZWxlbWVudCB3aGV0aGVyIGZpeGVkIG9yIHBvcnRhbGxlZFxuICB2YXIgbWVudVdyYXBwZXIgPSBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogc2V0TWVudVBvcnRhbEVsZW1lbnRcbiAgfSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwge30sIHtcbiAgICBvZmZzZXQ6IGNvbXB1dGVkUG9zaXRpb24ub2Zmc2V0LFxuICAgIHBvc2l0aW9uOiBtZW51UG9zaXRpb24sXG4gICAgcmVjdDogY29tcHV0ZWRQb3NpdGlvbi5yZWN0XG4gIH0pLCAnbWVudVBvcnRhbCcsIHtcbiAgICAnbWVudS1wb3J0YWwnOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xuICByZXR1cm4ganN4KFBvcnRhbFBsYWNlbWVudENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogcG9ydGFsUGxhY2VtZW50Q29udGV4dFxuICB9LCBhcHBlbmRUbyA/IC8qI19fUFVSRV9fKi9jcmVhdGVQb3J0YWwobWVudVdyYXBwZXIsIGFwcGVuZFRvKSA6IG1lbnVXcmFwcGVyKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUm9vdCBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgY29udGFpbmVyQ1NTID0gZnVuY3Rpb24gY29udGFpbmVyQ1NTKF9yZWYpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgaXNSdGwgPSBfcmVmLmlzUnRsO1xuICByZXR1cm4ge1xuICAgIGxhYmVsOiAnY29udGFpbmVyJyxcbiAgICBkaXJlY3Rpb246IGlzUnRsID8gJ3J0bCcgOiB1bmRlZmluZWQsXG4gICAgcG9pbnRlckV2ZW50czogaXNEaXNhYmxlZCA/ICdub25lJyA6IHVuZGVmaW5lZCxcbiAgICAvLyBjYW5jZWwgbW91c2UgZXZlbnRzIHdoZW4gZGlzYWJsZWRcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJ1xuICB9O1xufTtcbnZhciBTZWxlY3RDb250YWluZXIgPSBmdW5jdGlvbiBTZWxlY3RDb250YWluZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgaXNSdGwgPSBwcm9wcy5pc1J0bDtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NvbnRhaW5lcicsIHtcbiAgICAnLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWQsXG4gICAgJy0taXMtcnRsJzogaXNSdGxcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZhbHVlIENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciB2YWx1ZUNvbnRhaW5lckNTUyA9IGZ1bmN0aW9uIHZhbHVlQ29udGFpbmVyQ1NTKF9yZWYyLCB1bnN0eWxlZCkge1xuICB2YXIgc3BhY2luZyA9IF9yZWYyLnRoZW1lLnNwYWNpbmcsXG4gICAgaXNNdWx0aSA9IF9yZWYyLmlzTXVsdGksXG4gICAgaGFzVmFsdWUgPSBfcmVmMi5oYXNWYWx1ZSxcbiAgICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUgPSBfcmVmMi5zZWxlY3RQcm9wcy5jb250cm9sU2hvdWxkUmVuZGVyVmFsdWU7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBkaXNwbGF5OiBpc011bHRpICYmIGhhc1ZhbHVlICYmIGNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSA/ICdmbGV4JyA6ICdncmlkJyxcbiAgICBmbGV4OiAxLFxuICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgV2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6ICd0b3VjaCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgcGFkZGluZzogXCJcIi5jb25jYXQoc3BhY2luZy5iYXNlVW5pdCAvIDIsIFwicHggXCIpLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0ICogMiwgXCJweFwiKVxuICB9KTtcbn07XG52YXIgVmFsdWVDb250YWluZXIgPSBmdW5jdGlvbiBWYWx1ZUNvbnRhaW5lcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aSxcbiAgICBoYXNWYWx1ZSA9IHByb3BzLmhhc1ZhbHVlO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAndmFsdWVDb250YWluZXInLCB7XG4gICAgJ3ZhbHVlLWNvbnRhaW5lcic6IHRydWUsXG4gICAgJ3ZhbHVlLWNvbnRhaW5lci0taXMtbXVsdGknOiBpc011bHRpLFxuICAgICd2YWx1ZS1jb250YWluZXItLWhhcy12YWx1ZSc6IGhhc1ZhbHVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJbmRpY2F0b3IgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGluZGljYXRvcnNDb250YWluZXJDU1MgPSBmdW5jdGlvbiBpbmRpY2F0b3JzQ29udGFpbmVyQ1NTKCkge1xuICByZXR1cm4ge1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4U2hyaW5rOiAwXG4gIH07XG59O1xudmFyIEluZGljYXRvcnNDb250YWluZXIgPSBmdW5jdGlvbiBJbmRpY2F0b3JzQ29udGFpbmVyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yc0NvbnRhaW5lcicsIHtcbiAgICBpbmRpY2F0b3JzOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxudmFyIF90ZW1wbGF0ZU9iamVjdDtcbnZhciBfZXhjbHVkZWQkMiA9IFtcInNpemVcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJpbm5lclByb3BzXCIsIFwiaXNSdGxcIiwgXCJzaXplXCJdO1xuZnVuY3Rpb24gX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX18oKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxudmFyIF9yZWYyID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8ge1xuICBuYW1lOiBcIjhtbWtjZ1wiLFxuICBzdHlsZXM6IFwiZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Q29sb3I7bGluZS1oZWlnaHQ6MTtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZS13aWR0aDowXCJcbn0gOiB7XG4gIG5hbWU6IFwidGo1YmRlLVN2Z1wiLFxuICBzdHlsZXM6IFwiZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Q29sb3I7bGluZS1oZWlnaHQ6MTtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZS13aWR0aDowO2xhYmVsOlN2ZztcIixcbiAgbWFwOiBcIi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR2xqWVhSdmNuTXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVhsQ1NTSXNJbVpwYkdVaU9pSnBibVJwWTJGMGIzSnpMblJ6ZUNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaUJBYW5ONElHcHplQ0FxTDF4dWFXMXdiM0owSUhzZ1NsTllMQ0JTWldGamRFNXZaR1VnZlNCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdleUJxYzNnc0lHdGxlV1p5WVcxbGN5QjlJR1p5YjIwZ0owQmxiVzkwYVc5dUwzSmxZV04wSnp0Y2JseHVhVzF3YjNKMElIdGNiaUFnUTI5dGJXOXVVSEp2Y0hOQmJtUkRiR0Z6YzA1aGJXVXNYRzRnSUVOVFUwOWlhbVZqZEZkcGRHaE1ZV0psYkN4Y2JpQWdSM0p2ZFhCQ1lYTmxMRnh1ZlNCbWNtOXRJQ2N1TGk5MGVYQmxjeWM3WEc1cGJYQnZjblFnZXlCblpYUlRkSGxzWlZCeWIzQnpJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmk4dklFUnliM0JrYjNkdUlDWWdRMnhsWVhJZ1NXTnZibk5jYmk4dklEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh1WEc1amIyNXpkQ0JUZG1jZ1BTQW9lMXh1SUNCemFYcGxMRnh1SUNBdUxpNXdjbTl3YzF4dWZUb2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkemRtY25YU0FtSUhzZ2MybDZaVG9nYm5WdFltVnlJSDBwSUQwK0lDaGNiaUFnUEhOMloxeHVJQ0FnSUdobGFXZG9kRDE3YzJsNlpYMWNiaUFnSUNCM2FXUjBhRDE3YzJsNlpYMWNiaUFnSUNCMmFXVjNRbTk0UFZ3aU1DQXdJREl3SURJd1hDSmNiaUFnSUNCaGNtbGhMV2hwWkdSbGJqMWNJblJ5ZFdWY0lseHVJQ0FnSUdadlkzVnpZV0pzWlQxY0ltWmhiSE5sWENKY2JpQWdJQ0JqYzNNOWUzdGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnWm1sc2JEb2dKMk4xY25KbGJuUkRiMnh2Y2ljc1hHNGdJQ0FnSUNCc2FXNWxTR1ZwWjJoME9pQXhMRnh1SUNBZ0lDQWdjM1J5YjJ0bE9pQW5ZM1Z5Y21WdWRFTnZiRzl5Snl4Y2JpQWdJQ0FnSUhOMGNtOXJaVmRwWkhSb09pQXdMRnh1SUNBZ0lIMTlYRzRnSUNBZ2V5NHVMbkJ5YjNCemZWeHVJQ0F2UGx4dUtUdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1EzSnZjM05KWTI5dVVISnZjSE1nUFNCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKM04yWnlkZElDWWdleUJ6YVhwbFB6b2diblZ0WW1WeUlIMDdYRzVsZUhCdmNuUWdZMjl1YzNRZ1EzSnZjM05KWTI5dUlEMGdLSEJ5YjNCek9pQkRjbTl6YzBsamIyNVFjbTl3Y3lrZ1BUNGdLRnh1SUNBOFUzWm5JSE5wZW1VOWV6SXdmU0I3TGk0dWNISnZjSE45UGx4dUlDQWdJRHh3WVhSb0lHUTlYQ0pOTVRRdU16UTRJREUwTGpnME9XTXRNQzQwTmprZ01DNDBOamt0TVM0eU1qa2dNQzQwTmprdE1TNDJPVGNnTUd3dE1pNDJOVEV0TXk0d016QXRNaTQyTlRFZ015NHdNamxqTFRBdU5EWTVJREF1TkRZNUxURXVNakk1SURBdU5EWTVMVEV1TmprM0lEQXRNQzQwTmprdE1DNDBOamt0TUM0ME5qa3RNUzR5TWprZ01DMHhMalk1TjJ3eUxqYzFPQzB6TGpFMUxUSXVOelU1TFRNdU1UVXlZeTB3TGpRMk9TMHdMalEyT1Mwd0xqUTJPUzB4TGpJeU9DQXdMVEV1TmprM2N6RXVNakk0TFRBdU5EWTVJREV1TmprM0lEQnNNaTQyTlRJZ015NHdNekVnTWk0Mk5URXRNeTR3TXpGak1DNDBOamt0TUM0ME5qa2dNUzR5TWpndE1DNDBOamtnTVM0Mk9UY2dNSE13TGpRMk9TQXhMakl5T1NBd0lERXVOamszYkMweUxqYzFPQ0F6TGpFMU1pQXlMamMxT0NBekxqRTFZekF1TkRZNUlEQXVORFk1SURBdU5EWTVJREV1TWpJNUlEQWdNUzQyT1RoNlhDSWdMejVjYmlBZ1BDOVRkbWMrWEc0cE8xeHVaWGh3YjNKMElIUjVjR1VnUkc5M2JrTm9aWFp5YjI1UWNtOXdjeUE5SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25jM1puSjEwZ0ppQjdJSE5wZW1VL09pQnVkVzFpWlhJZ2ZUdGNibVY0Y0c5eWRDQmpiMjV6ZENCRWIzZHVRMmhsZG5KdmJpQTlJQ2h3Y205d2N6b2dSRzkzYmtOb1pYWnliMjVRY205d2N5a2dQVDRnS0Z4dUlDQThVM1puSUhOcGVtVTllekl3ZlNCN0xpNHVjSEp2Y0hOOVBseHVJQ0FnSUR4d1lYUm9JR1E5WENKTk5DNDFNVFlnTnk0MU5EaGpNQzQwTXpZdE1DNDBORFlnTVM0d05ETXRNQzQwT0RFZ01TNDFOellnTUd3ekxqa3dPQ0F6TGpjME55QXpMamt3T0MwekxqYzBOMk13TGpVek15MHdMalE0TVNBeExqRTBNUzB3TGpRME5pQXhMalUzTkNBd0lEQXVORE0ySURBdU5EUTFJREF1TkRBNElERXVNVGszSURBZ01TNDJNVFV0TUM0ME1EWWdNQzQwTVRndE5DNDJPVFVnTkM0MU1ESXROQzQyT1RVZ05DNDFNREl0TUM0eU1UY2dNQzR5TWpNdE1DNDFNRElnTUM0ek16VXRNQzQzT0RjZ01DNHpNelZ6TFRBdU5UY3RNQzR4TVRJdE1DNDNPRGt0TUM0ek16VmpNQ0F3TFRRdU1qZzNMVFF1TURnMExUUXVOamsxTFRRdU5UQXljeTB3TGpRek5pMHhMakUzSURBdE1TNDJNVFY2WENJZ0x6NWNiaUFnUEM5VGRtYytYRzRwTzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRVJ5YjNCa2IzZHVJQ1lnUTJ4bFlYSWdRblYwZEc5dWMxeHVMeThnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVhHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdSSEp2Y0dSdmQyNUpibVJwWTJGMGIzSlFjbTl3Y3p4Y2JpQWdUM0IwYVc5dUlEMGdkVzVyYm05M2JpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNGdQU0JpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtJRDBnUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0Z1pYaDBaVzVrY3lCRGIyMXRiMjVRY205d2MwRnVaRU5zWVhOelRtRnRaVHhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BpQjdYRzRnSUM4cUtpQlVhR1VnWTJocGJHUnlaVzRnZEc4Z1ltVWdjbVZ1WkdWeVpXUWdhVzV6YVdSbElIUm9aU0JwYm1ScFkyRjBiM0l1SUNvdlhHNGdJR05vYVd4a2NtVnVQem9nVW1WaFkzUk9iMlJsTzF4dUlDQXZLaW9nVUhKdmNITWdkR2hoZENCM2FXeHNJR0psSUhCaGMzTmxaQ0J2YmlCMGJ5QjBhR1VnWTJocGJHUnlaVzR1SUNvdlhHNGdJR2x1Ym1WeVVISnZjSE02SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25aR2wySjEwN1hHNGdJQzhxS2lCVWFHVWdabTlqZFhObFpDQnpkR0YwWlNCdlppQjBhR1VnYzJWc1pXTjBMaUFxTDF4dUlDQnBjMFp2WTNWelpXUTZJR0p2YjJ4bFlXNDdYRzRnSUdselJHbHpZV0pzWldRNklHSnZiMnhsWVc0N1hHNTlYRzVjYm1OdmJuTjBJR0poYzJWRFUxTWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9YRzRnSUh0Y2JpQWdJQ0JwYzBadlkzVnpaV1FzWEc0Z0lDQWdkR2hsYldVNklIdGNiaUFnSUNBZ0lITndZV05wYm1jNklIc2dZbUZ6WlZWdWFYUWdmU3hjYmlBZ0lDQWdJR052Ykc5eWN5eGNiaUFnSUNCOUxGeHVJQ0I5T2x4dUlDQWdJSHdnUkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pRY205d2N6eFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGx4dUlDQWdJSHdnUTJ4bFlYSkpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMmx1WkdsallYUnZja052Ym5SaGFXNWxjaWNzWEc0Z0lHUnBjM0JzWVhrNklDZG1iR1Y0Snl4Y2JpQWdkSEpoYm5OcGRHbHZiam9nSjJOdmJHOXlJREUxTUcxekp5eGNiaUFnTGk0dUtIVnVjM1I1YkdWa1hHNGdJQ0FnUHlCN2ZWeHVJQ0FnSURvZ2UxeHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ2FYTkdiMk4xYzJWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3Mk1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJR0poYzJWVmJtbDBJQ29nTWl4Y2JpQWdJQ0FnSUNBZ0p6cG9iM1psY2ljNklIdGNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dhWE5HYjJOMWMyVmtJRDhnWTI5c2IzSnpMbTVsZFhSeVlXdzRNQ0E2SUdOdmJHOXljeTV1WlhWMGNtRnNOREFzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCOUtTeGNibjBwTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pEVTFNZ1BTQmlZWE5sUTFOVE8xeHVaWGh3YjNKMElHTnZibk4wSUVSeWIzQmtiM2R1U1c1a2FXTmhkRzl5SUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0Z4dUlDQndjbTl3Y3pvZ1JISnZjR1J2ZDI1SmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblpISnZjR1J2ZDI1SmJtUnBZMkYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJR2x1WkdsallYUnZjam9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdKMlJ5YjNCa2IzZHVMV2x1WkdsallYUnZjaWM2SUhSeWRXVXNYRzRnSUNBZ0lDQjlLWDFjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUQ1Y2JpQWdJQ0FnSUh0amFHbHNaSEpsYmlCOGZDQThSRzkzYmtOb1pYWnliMjRnTHo1OVhHNGdJQ0FnUEM5a2FYWStYRzRnSUNrN1hHNTlPMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVOc1pXRnlTVzVrYVdOaGRHOXlVSEp2Y0hNOFhHNGdJRTl3ZEdsdmJpQTlJSFZ1YTI1dmQyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVJRDBnWW05dmJHVmhiaXhjYmlBZ1IzSnZkWEFnWlhoMFpXNWtjeUJIY205MWNFSmhjMlU4VDNCMGFXOXVQaUE5SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0lHVjRkR1Z1WkhNZ1EyOXRiVzl1VUhKdmNITkJibVJEYkdGemMwNWhiV1U4VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENGdlMXh1SUNBdktpb2dWR2hsSUdOb2FXeGtjbVZ1SUhSdklHSmxJSEpsYm1SbGNtVmtJR2x1YzJsa1pTQjBhR1VnYVc1a2FXTmhkRzl5TGlBcUwxeHVJQ0JqYUdsc1pISmxiajg2SUZKbFlXTjBUbTlrWlR0Y2JpQWdMeW9xSUZCeWIzQnpJSFJvWVhRZ2QybHNiQ0JpWlNCd1lYTnpaV1FnYjI0Z2RHOGdkR2hsSUdOb2FXeGtjbVZ1TGlBcUwxeHVJQ0JwYm01bGNsQnliM0J6T2lCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKMlJwZGlkZE8xeHVJQ0F2S2lvZ1ZHaGxJR1p2WTNWelpXUWdjM1JoZEdVZ2IyWWdkR2hsSUhObGJHVmpkQzRnS2k5Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWTJ4bFlYSkpibVJwWTJGMGIzSkRVMU1nUFNCaVlYTmxRMU5UTzF4dVpYaHdiM0owSUdOdmJuTjBJRU5zWldGeVNXNWthV05oZEc5eUlEMGdQRnh1SUNCUGNIUnBiMjRzWEc0Z0lFbHpUWFZzZEdrZ1pYaDBaVzVrY3lCaWIyOXNaV0Z1TEZ4dUlDQkhjbTkxY0NCbGVIUmxibVJ6SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0tGeHVJQ0J3Y205d2N6b2dRMnhsWVhKSmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblkyeGxZWEpKYm1ScFkyRjBiM0luTENCN1hHNGdJQ0FnSUNBZ0lHbHVaR2xqWVhSdmNqb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0oyTnNaV0Z5TFdsdVpHbGpZWFJ2Y2ljNklIUnlkV1VzWEc0Z0lDQWdJQ0I5S1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lIdGphR2xzWkhKbGJpQjhmQ0E4UTNKdmMzTkpZMjl1SUM4K2ZWeHVJQ0FnSUR3dlpHbDJQbHh1SUNBcE8xeHVmVHRjYmx4dUx5OGdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0dkx5QlRaWEJoY21GMGIzSmNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRWx1WkdsallYUnZjbE5sY0dGeVlYUnZjbEJ5YjNCelBGeHVJQ0JQY0hScGIyNGdQU0IxYm10dWIzZHVMRnh1SUNCSmMwMTFiSFJwSUdWNGRHVnVaSE1nWW05dmJHVmhiaUE5SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajRnUFNCSGNtOTFjRUpoYzJVOFQzQjBhVzl1UGx4dVBpQmxlSFJsYm1SeklFTnZiVzF2YmxCeWIzQnpRVzVrUTJ4aGMzTk9ZVzFsUEU5d2RHbHZiaXdnU1hOTmRXeDBhU3dnUjNKdmRYQStJSHRjYmlBZ2FYTkVhWE5oWW14bFpEb2dZbTl2YkdWaGJqdGNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBibTVsY2xCeWIzQnpQem9nU2xOWUxrbHVkSEpwYm5OcFkwVnNaVzFsYm5Seld5ZHpjR0Z1SjEwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnBibVJwWTJGMGIzSlRaWEJoY21GMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwUnBjMkZpYkdWa0xGeHVJQ0FnSUhSb1pXMWxPaUI3WEc0Z0lDQWdJQ0J6Y0dGamFXNW5PaUI3SUdKaGMyVlZibWwwSUgwc1hHNGdJQ0FnSUNCamIyeHZjbk1zWEc0Z0lDQWdmU3hjYmlBZ2ZUb2dTVzVrYVdOaGRHOXlVMlZ3WVhKaGRHOXlVSEp2Y0hNOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDRzWEc0Z0lIVnVjM1I1YkdWa09pQmliMjlzWldGdVhHNHBPaUJEVTFOUFltcGxZM1JYYVhSb1RHRmlaV3dnUFQ0Z0tIdGNiaUFnYkdGaVpXdzZJQ2RwYm1ScFkyRjBiM0pUWlhCaGNtRjBiM0luTEZ4dUlDQmhiR2xuYmxObGJHWTZJQ2R6ZEhKbGRHTm9KeXhjYmlBZ2QybGtkR2c2SURFc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1ltRmphMmR5YjNWdVpFTnZiRzl5T2lCcGMwUnBjMkZpYkdWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3eE1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJRzFoY21kcGJrSnZkSFJ2YlRvZ1ltRnpaVlZ1YVhRZ0tpQXlMRnh1SUNBZ0lDQWdJQ0J0WVhKbmFXNVViM0E2SUdKaGMyVlZibWwwSUNvZ01peGNiaUFnSUNBZ0lIMHBMRnh1ZlNrN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCSmJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJZ1BTQThYRzRnSUU5d2RHbHZiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0b1hHNGdJSEJ5YjNCek9pQkpibVJwWTJGMGIzSlRaWEJoY21GMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQbHh1S1NBOVBpQjdYRzRnSUdOdmJuTjBJSHNnYVc1dVpYSlFjbTl3Y3lCOUlEMGdjSEp2Y0hNN1hHNGdJSEpsZEhWeWJpQW9YRzRnSUNBZ1BITndZVzVjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb2NISnZjSE1zSUNkcGJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJQ2RwYm1ScFkyRjBiM0l0YzJWd1lYSmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJSDBwZlZ4dUlDQWdJQzgrWEc0Z0lDazdYRzU5TzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRXh2WVdScGJtZGNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVqYjI1emRDQnNiMkZrYVc1blJHOTBRVzVwYldGMGFXOXVjeUE5SUd0bGVXWnlZVzFsYzJCY2JpQWdNQ1VzSURnd0pTd2dNVEF3SlNCN0lHOXdZV05wZEhrNklEQTdJSDFjYmlBZ05EQWxJSHNnYjNCaFkybDBlVG9nTVRzZ2ZWeHVZRHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJR3h2WVdScGJtZEpibVJwWTJGMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwWnZZM1Z6WldRc1hHNGdJQ0FnYzJsNlpTeGNiaUFnSUNCMGFHVnRaVG9nZTF4dUlDQWdJQ0FnWTI5c2IzSnpMRnh1SUNBZ0lDQWdjM0JoWTJsdVp6b2dleUJpWVhObFZXNXBkQ0I5TEZ4dUlDQWdJSDBzWEc0Z0lIMDZJRXh2WVdScGJtZEpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMnh2WVdScGJtZEpibVJwWTJGMGIzSW5MRnh1SUNCa2FYTndiR0Y1T2lBblpteGxlQ2NzWEc0Z0lIUnlZVzV6YVhScGIyNDZJQ2RqYjJ4dmNpQXhOVEJ0Y3ljc1hHNGdJR0ZzYVdkdVUyVnNaam9nSjJObGJuUmxjaWNzWEc0Z0lHWnZiblJUYVhwbE9pQnphWHBsTEZ4dUlDQnNhVzVsU0dWcFoyaDBPaUF4TEZ4dUlDQnRZWEpuYVc1U2FXZG9kRG9nYzJsNlpTeGNiaUFnZEdWNGRFRnNhV2R1T2lBblkyVnVkR1Z5Snl4Y2JpQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0oyMXBaR1JzWlNjc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUdselJtOWpkWE5sWkNBL0lHTnZiRzl5Y3k1dVpYVjBjbUZzTmpBZ09pQmpiMnh2Y25NdWJtVjFkSEpoYkRJd0xGeHVJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQmlZWE5sVlc1cGRDQXFJRElzWEc0Z0lDQWdJQ0I5S1N4Y2JuMHBPMXh1WEc1cGJuUmxjbVpoWTJVZ1RHOWhaR2x1WjBSdmRGQnliM0J6SUh0Y2JpQWdaR1ZzWVhrNklHNTFiV0psY2p0Y2JpQWdiMlptYzJWME9pQmliMjlzWldGdU8xeHVmVnh1WTI5dWMzUWdURzloWkdsdVowUnZkQ0E5SUNoN0lHUmxiR0Y1TENCdlptWnpaWFFnZlRvZ1RHOWhaR2x1WjBSdmRGQnliM0J6S1NBOVBpQW9YRzRnSUR4emNHRnVYRzRnSUNBZ1kzTnpQWHQ3WEc0Z0lDQWdJQ0JoYm1sdFlYUnBiMjQ2SUdBa2UyeHZZV1JwYm1kRWIzUkJibWx0WVhScGIyNXpmU0F4Y3lCbFlYTmxMV2x1TFc5MWRDQWtlMlJsYkdGNWZXMXpJR2x1Wm1sdWFYUmxPMkFzWEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrUTI5c2IzSTZJQ2RqZFhKeVpXNTBRMjlzYjNJbkxGeHVJQ0FnSUNBZ1ltOXlaR1Z5VW1Ga2FYVnpPaUFuTVdWdEp5eGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnYldGeVoybHVUR1ZtZERvZ2IyWm1jMlYwSUQ4Z0p6RmxiU2NnT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNCb1pXbG5hSFE2SUNjeFpXMG5MRnh1SUNBZ0lDQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0ozUnZjQ2NzWEc0Z0lDQWdJQ0IzYVdSMGFEb2dKekZsYlNjc1hHNGdJQ0FnZlgxY2JpQWdMejVjYmlrN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdURzloWkdsdVowbHVaR2xqWVhSdmNsQnliM0J6UEZ4dUlDQlBjSFJwYjI0Z1BTQjFibXR1YjNkdUxGeHVJQ0JKYzAxMWJIUnBJR1Y0ZEdWdVpITWdZbTl2YkdWaGJpQTlJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNGdQU0JIY205MWNFSmhjMlU4VDNCMGFXOXVQbHh1UGlCbGVIUmxibVJ6SUVOdmJXMXZibEJ5YjNCelFXNWtRMnhoYzNOT1lXMWxQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0lIdGNiaUFnTHlvcUlGQnliM0J6SUhSb1lYUWdkMmxzYkNCaVpTQndZWE56WldRZ2IyNGdkRzhnZEdobElHTm9hV3hrY21WdUxpQXFMMXh1SUNCcGJtNWxjbEJ5YjNCek9pQktVMWd1U1c1MGNtbHVjMmxqUld4bGJXVnVkSE5iSjJScGRpZGRPMXh1SUNBdktpb2dWR2hsSUdadlkzVnpaV1FnYzNSaGRHVWdiMllnZEdobElITmxiR1ZqZEM0Z0tpOWNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBjMFJwYzJGaWJHVmtPaUJpYjI5c1pXRnVPMXh1SUNBdktpb2dVMlYwSUhOcGVtVWdiMllnZEdobElHTnZiblJoYVc1bGNpNGdLaTljYmlBZ2MybDZaVG9nYm5WdFltVnlPMXh1ZlZ4dVpYaHdiM0owSUdOdmJuTjBJRXh2WVdScGJtZEpibVJwWTJGMGIzSWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9lMXh1SUNCcGJtNWxjbEJ5YjNCekxGeHVJQ0JwYzFKMGJDeGNiaUFnYzJsNlpTQTlJRFFzWEc0Z0lDNHVMbkpsYzNSUWNtOXdjMXh1ZlRvZ1RHOWhaR2x1WjBsdVpHbGpZWFJ2Y2xCeWIzQnpQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0tTQTlQaUI3WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEdScGRseHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb1hHNGdJQ0FnSUNBZ0lIc2dMaTR1Y21WemRGQnliM0J6TENCcGJtNWxjbEJ5YjNCekxDQnBjMUowYkN3Z2MybDZaU0I5TEZ4dUlDQWdJQ0FnSUNBbmJHOWhaR2x1WjBsdVpHbGpZWFJ2Y2ljc1hHNGdJQ0FnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdJQ0JwYm1ScFkyRjBiM0k2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnSjJ4dllXUnBibWN0YVc1a2FXTmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnS1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lEeE1iMkZrYVc1blJHOTBJR1JsYkdGNVBYc3dmU0J2Wm1aelpYUTllMmx6VW5Sc2ZTQXZQbHh1SUNBZ0lDQWdQRXh2WVdScGJtZEViM1FnWkdWc1lYazllekUyTUgwZ2IyWm1jMlYwSUM4K1hHNGdJQ0FnSUNBOFRHOWhaR2x1WjBSdmRDQmtaV3hoZVQxN016SXdmU0J2Wm1aelpYUTlleUZwYzFKMGJIMGdMejVjYmlBZ0lDQThMMlJwZGo1Y2JpQWdLVHRjYm4wN1hHNGlYWDA9ICovXCIsXG4gIHRvU3RyaW5nOiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfX1xufTtcbnZhciBTdmcgPSBmdW5jdGlvbiBTdmcoX3JlZikge1xuICB2YXIgc2l6ZSA9IF9yZWYuc2l6ZSxcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQkMik7XG4gIHJldHVybiBqc3goXCJzdmdcIiwgX2V4dGVuZHMoe1xuICAgIGhlaWdodDogc2l6ZSxcbiAgICB3aWR0aDogc2l6ZSxcbiAgICB2aWV3Qm94OiBcIjAgMCAyMCAyMFwiLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgZm9jdXNhYmxlOiBcImZhbHNlXCIsXG4gICAgY3NzOiBfcmVmMlxuICB9LCBwcm9wcykpO1xufTtcbnZhciBDcm9zc0ljb24gPSBmdW5jdGlvbiBDcm9zc0ljb24ocHJvcHMpIHtcbiAgcmV0dXJuIGpzeChTdmcsIF9leHRlbmRzKHtcbiAgICBzaXplOiAyMFxuICB9LCBwcm9wcyksIGpzeChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiXG4gIH0pKTtcbn07XG52YXIgRG93bkNoZXZyb24gPSBmdW5jdGlvbiBEb3duQ2hldnJvbihwcm9wcykge1xuICByZXR1cm4ganN4KFN2ZywgX2V4dGVuZHMoe1xuICAgIHNpemU6IDIwXG4gIH0sIHByb3BzKSwganN4KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCJcbiAgfSkpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgYmFzZUNTUyA9IGZ1bmN0aW9uIGJhc2VDU1MoX3JlZjMsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0ZvY3VzZWQgPSBfcmVmMy5pc0ZvY3VzZWQsXG4gICAgX3JlZjMkdGhlbWUgPSBfcmVmMy50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWYzJHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjMkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgICAnOmhvdmVyJzoge1xuICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwXG4gICAgfVxuICB9KTtcbn07XG52YXIgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xudmFyIERyb3Bkb3duSW5kaWNhdG9yID0gZnVuY3Rpb24gRHJvcGRvd25JbmRpY2F0b3IocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdkcm9wZG93bkluZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2Ryb3Bkb3duLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCBqc3goRG93bkNoZXZyb24sIG51bGwpKTtcbn07XG52YXIgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xudmFyIENsZWFySW5kaWNhdG9yID0gZnVuY3Rpb24gQ2xlYXJJbmRpY2F0b3IocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjbGVhckluZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCBqc3goQ3Jvc3NJY29uLCBudWxsKSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlcGFyYXRvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSBmdW5jdGlvbiBpbmRpY2F0b3JTZXBhcmF0b3JDU1MoX3JlZjQsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZjQuaXNEaXNhYmxlZCxcbiAgICBfcmVmNCR0aGVtZSA9IF9yZWY0LnRoZW1lLFxuICAgIGJhc2VVbml0ID0gX3JlZjQkdGhlbWUuc3BhY2luZy5iYXNlVW5pdCxcbiAgICBjb2xvcnMgPSBfcmVmNCR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gICAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gICAgd2lkdGg6IDFcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBtYXJnaW5Cb3R0b206IGJhc2VVbml0ICogMixcbiAgICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMlxuICB9KTtcbn07XG52YXIgSW5kaWNhdG9yU2VwYXJhdG9yID0gZnVuY3Rpb24gSW5kaWNhdG9yU2VwYXJhdG9yKHByb3BzKSB7XG4gIHZhciBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcInNwYW5cIiwgX2V4dGVuZHMoe30sIGlubmVyUHJvcHMsIGdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JTZXBhcmF0b3InLCB7XG4gICAgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlXG4gIH0pKSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXMoX3RlbXBsYXRlT2JqZWN0IHx8IChfdGVtcGxhdGVPYmplY3QgPSBfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsKFtcIlxcbiAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cXG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cXG5cIl0pKSk7XG52YXIgbG9hZGluZ0luZGljYXRvckNTUyA9IGZ1bmN0aW9uIGxvYWRpbmdJbmRpY2F0b3JDU1MoX3JlZjUsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0ZvY3VzZWQgPSBfcmVmNS5pc0ZvY3VzZWQsXG4gICAgc2l6ZSA9IF9yZWY1LnNpemUsXG4gICAgX3JlZjUkdGhlbWUgPSBfcmVmNS50aGVtZSxcbiAgICBjb2xvcnMgPSBfcmVmNSR0aGVtZS5jb2xvcnMsXG4gICAgYmFzZVVuaXQgPSBfcmVmNSR0aGVtZS5zcGFjaW5nLmJhc2VVbml0O1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICAgIGZvbnRTaXplOiBzaXplLFxuICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDJcbiAgfSk7XG59O1xudmFyIExvYWRpbmdEb3QgPSBmdW5jdGlvbiBMb2FkaW5nRG90KF9yZWY2KSB7XG4gIHZhciBkZWxheSA9IF9yZWY2LmRlbGF5LFxuICAgIG9mZnNldCA9IF9yZWY2Lm9mZnNldDtcbiAgcmV0dXJuIGpzeChcInNwYW5cIiwge1xuICAgIGNzczogLyojX19QVVJFX18qL2NzcyQyKHtcbiAgICAgIGFuaW1hdGlvbjogXCJcIi5jb25jYXQobG9hZGluZ0RvdEFuaW1hdGlvbnMsIFwiIDFzIGVhc2UtaW4tb3V0IFwiKS5jb25jYXQoZGVsYXksIFwibXMgaW5maW5pdGU7XCIpLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzFlbScsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIG1hcmdpbkxlZnQ6IG9mZnNldCA/ICcxZW0nIDogdW5kZWZpbmVkLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nXG4gICAgfSwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJcIiA6IFwiO2xhYmVsOkxvYWRpbmdEb3Q7XCIsIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IFwiXCIgOiBcIi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR2xqWVhSdmNuTXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVcxUlNTSXNJbVpwYkdVaU9pSnBibVJwWTJGMGIzSnpMblJ6ZUNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaUJBYW5ONElHcHplQ0FxTDF4dWFXMXdiM0owSUhzZ1NsTllMQ0JTWldGamRFNXZaR1VnZlNCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdleUJxYzNnc0lHdGxlV1p5WVcxbGN5QjlJR1p5YjIwZ0owQmxiVzkwYVc5dUwzSmxZV04wSnp0Y2JseHVhVzF3YjNKMElIdGNiaUFnUTI5dGJXOXVVSEp2Y0hOQmJtUkRiR0Z6YzA1aGJXVXNYRzRnSUVOVFUwOWlhbVZqZEZkcGRHaE1ZV0psYkN4Y2JpQWdSM0p2ZFhCQ1lYTmxMRnh1ZlNCbWNtOXRJQ2N1TGk5MGVYQmxjeWM3WEc1cGJYQnZjblFnZXlCblpYUlRkSGxzWlZCeWIzQnpJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmk4dklFUnliM0JrYjNkdUlDWWdRMnhsWVhJZ1NXTnZibk5jYmk4dklEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh1WEc1amIyNXpkQ0JUZG1jZ1BTQW9lMXh1SUNCemFYcGxMRnh1SUNBdUxpNXdjbTl3YzF4dWZUb2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkemRtY25YU0FtSUhzZ2MybDZaVG9nYm5WdFltVnlJSDBwSUQwK0lDaGNiaUFnUEhOMloxeHVJQ0FnSUdobGFXZG9kRDE3YzJsNlpYMWNiaUFnSUNCM2FXUjBhRDE3YzJsNlpYMWNiaUFnSUNCMmFXVjNRbTk0UFZ3aU1DQXdJREl3SURJd1hDSmNiaUFnSUNCaGNtbGhMV2hwWkdSbGJqMWNJblJ5ZFdWY0lseHVJQ0FnSUdadlkzVnpZV0pzWlQxY0ltWmhiSE5sWENKY2JpQWdJQ0JqYzNNOWUzdGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnWm1sc2JEb2dKMk4xY25KbGJuUkRiMnh2Y2ljc1hHNGdJQ0FnSUNCc2FXNWxTR1ZwWjJoME9pQXhMRnh1SUNBZ0lDQWdjM1J5YjJ0bE9pQW5ZM1Z5Y21WdWRFTnZiRzl5Snl4Y2JpQWdJQ0FnSUhOMGNtOXJaVmRwWkhSb09pQXdMRnh1SUNBZ0lIMTlYRzRnSUNBZ2V5NHVMbkJ5YjNCemZWeHVJQ0F2UGx4dUtUdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1EzSnZjM05KWTI5dVVISnZjSE1nUFNCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKM04yWnlkZElDWWdleUJ6YVhwbFB6b2diblZ0WW1WeUlIMDdYRzVsZUhCdmNuUWdZMjl1YzNRZ1EzSnZjM05KWTI5dUlEMGdLSEJ5YjNCek9pQkRjbTl6YzBsamIyNVFjbTl3Y3lrZ1BUNGdLRnh1SUNBOFUzWm5JSE5wZW1VOWV6SXdmU0I3TGk0dWNISnZjSE45UGx4dUlDQWdJRHh3WVhSb0lHUTlYQ0pOTVRRdU16UTRJREUwTGpnME9XTXRNQzQwTmprZ01DNDBOamt0TVM0eU1qa2dNQzQwTmprdE1TNDJPVGNnTUd3dE1pNDJOVEV0TXk0d016QXRNaTQyTlRFZ015NHdNamxqTFRBdU5EWTVJREF1TkRZNUxURXVNakk1SURBdU5EWTVMVEV1TmprM0lEQXRNQzQwTmprdE1DNDBOamt0TUM0ME5qa3RNUzR5TWprZ01DMHhMalk1TjJ3eUxqYzFPQzB6TGpFMUxUSXVOelU1TFRNdU1UVXlZeTB3TGpRMk9TMHdMalEyT1Mwd0xqUTJPUzB4TGpJeU9DQXdMVEV1TmprM2N6RXVNakk0TFRBdU5EWTVJREV1TmprM0lEQnNNaTQyTlRJZ015NHdNekVnTWk0Mk5URXRNeTR3TXpGak1DNDBOamt0TUM0ME5qa2dNUzR5TWpndE1DNDBOamtnTVM0Mk9UY2dNSE13TGpRMk9TQXhMakl5T1NBd0lERXVOamszYkMweUxqYzFPQ0F6TGpFMU1pQXlMamMxT0NBekxqRTFZekF1TkRZNUlEQXVORFk1SURBdU5EWTVJREV1TWpJNUlEQWdNUzQyT1RoNlhDSWdMejVjYmlBZ1BDOVRkbWMrWEc0cE8xeHVaWGh3YjNKMElIUjVjR1VnUkc5M2JrTm9aWFp5YjI1UWNtOXdjeUE5SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25jM1puSjEwZ0ppQjdJSE5wZW1VL09pQnVkVzFpWlhJZ2ZUdGNibVY0Y0c5eWRDQmpiMjV6ZENCRWIzZHVRMmhsZG5KdmJpQTlJQ2h3Y205d2N6b2dSRzkzYmtOb1pYWnliMjVRY205d2N5a2dQVDRnS0Z4dUlDQThVM1puSUhOcGVtVTllekl3ZlNCN0xpNHVjSEp2Y0hOOVBseHVJQ0FnSUR4d1lYUm9JR1E5WENKTk5DNDFNVFlnTnk0MU5EaGpNQzQwTXpZdE1DNDBORFlnTVM0d05ETXRNQzQwT0RFZ01TNDFOellnTUd3ekxqa3dPQ0F6TGpjME55QXpMamt3T0MwekxqYzBOMk13TGpVek15MHdMalE0TVNBeExqRTBNUzB3TGpRME5pQXhMalUzTkNBd0lEQXVORE0ySURBdU5EUTFJREF1TkRBNElERXVNVGszSURBZ01TNDJNVFV0TUM0ME1EWWdNQzQwTVRndE5DNDJPVFVnTkM0MU1ESXROQzQyT1RVZ05DNDFNREl0TUM0eU1UY2dNQzR5TWpNdE1DNDFNRElnTUM0ek16VXRNQzQzT0RjZ01DNHpNelZ6TFRBdU5UY3RNQzR4TVRJdE1DNDNPRGt0TUM0ek16VmpNQ0F3TFRRdU1qZzNMVFF1TURnMExUUXVOamsxTFRRdU5UQXljeTB3TGpRek5pMHhMakUzSURBdE1TNDJNVFY2WENJZ0x6NWNiaUFnUEM5VGRtYytYRzRwTzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRVJ5YjNCa2IzZHVJQ1lnUTJ4bFlYSWdRblYwZEc5dWMxeHVMeThnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVhHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdSSEp2Y0dSdmQyNUpibVJwWTJGMGIzSlFjbTl3Y3p4Y2JpQWdUM0IwYVc5dUlEMGdkVzVyYm05M2JpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNGdQU0JpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtJRDBnUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0Z1pYaDBaVzVrY3lCRGIyMXRiMjVRY205d2MwRnVaRU5zWVhOelRtRnRaVHhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BpQjdYRzRnSUM4cUtpQlVhR1VnWTJocGJHUnlaVzRnZEc4Z1ltVWdjbVZ1WkdWeVpXUWdhVzV6YVdSbElIUm9aU0JwYm1ScFkyRjBiM0l1SUNvdlhHNGdJR05vYVd4a2NtVnVQem9nVW1WaFkzUk9iMlJsTzF4dUlDQXZLaW9nVUhKdmNITWdkR2hoZENCM2FXeHNJR0psSUhCaGMzTmxaQ0J2YmlCMGJ5QjBhR1VnWTJocGJHUnlaVzR1SUNvdlhHNGdJR2x1Ym1WeVVISnZjSE02SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25aR2wySjEwN1hHNGdJQzhxS2lCVWFHVWdabTlqZFhObFpDQnpkR0YwWlNCdlppQjBhR1VnYzJWc1pXTjBMaUFxTDF4dUlDQnBjMFp2WTNWelpXUTZJR0p2YjJ4bFlXNDdYRzRnSUdselJHbHpZV0pzWldRNklHSnZiMnhsWVc0N1hHNTlYRzVjYm1OdmJuTjBJR0poYzJWRFUxTWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9YRzRnSUh0Y2JpQWdJQ0JwYzBadlkzVnpaV1FzWEc0Z0lDQWdkR2hsYldVNklIdGNiaUFnSUNBZ0lITndZV05wYm1jNklIc2dZbUZ6WlZWdWFYUWdmU3hjYmlBZ0lDQWdJR052Ykc5eWN5eGNiaUFnSUNCOUxGeHVJQ0I5T2x4dUlDQWdJSHdnUkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pRY205d2N6eFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGx4dUlDQWdJSHdnUTJ4bFlYSkpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMmx1WkdsallYUnZja052Ym5SaGFXNWxjaWNzWEc0Z0lHUnBjM0JzWVhrNklDZG1iR1Y0Snl4Y2JpQWdkSEpoYm5OcGRHbHZiam9nSjJOdmJHOXlJREUxTUcxekp5eGNiaUFnTGk0dUtIVnVjM1I1YkdWa1hHNGdJQ0FnUHlCN2ZWeHVJQ0FnSURvZ2UxeHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ2FYTkdiMk4xYzJWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3Mk1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJR0poYzJWVmJtbDBJQ29nTWl4Y2JpQWdJQ0FnSUNBZ0p6cG9iM1psY2ljNklIdGNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dhWE5HYjJOMWMyVmtJRDhnWTI5c2IzSnpMbTVsZFhSeVlXdzRNQ0E2SUdOdmJHOXljeTV1WlhWMGNtRnNOREFzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCOUtTeGNibjBwTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pEVTFNZ1BTQmlZWE5sUTFOVE8xeHVaWGh3YjNKMElHTnZibk4wSUVSeWIzQmtiM2R1U1c1a2FXTmhkRzl5SUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0Z4dUlDQndjbTl3Y3pvZ1JISnZjR1J2ZDI1SmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblpISnZjR1J2ZDI1SmJtUnBZMkYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJR2x1WkdsallYUnZjam9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdKMlJ5YjNCa2IzZHVMV2x1WkdsallYUnZjaWM2SUhSeWRXVXNYRzRnSUNBZ0lDQjlLWDFjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUQ1Y2JpQWdJQ0FnSUh0amFHbHNaSEpsYmlCOGZDQThSRzkzYmtOb1pYWnliMjRnTHo1OVhHNGdJQ0FnUEM5a2FYWStYRzRnSUNrN1hHNTlPMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVOc1pXRnlTVzVrYVdOaGRHOXlVSEp2Y0hNOFhHNGdJRTl3ZEdsdmJpQTlJSFZ1YTI1dmQyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVJRDBnWW05dmJHVmhiaXhjYmlBZ1IzSnZkWEFnWlhoMFpXNWtjeUJIY205MWNFSmhjMlU4VDNCMGFXOXVQaUE5SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0lHVjRkR1Z1WkhNZ1EyOXRiVzl1VUhKdmNITkJibVJEYkdGemMwNWhiV1U4VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENGdlMXh1SUNBdktpb2dWR2hsSUdOb2FXeGtjbVZ1SUhSdklHSmxJSEpsYm1SbGNtVmtJR2x1YzJsa1pTQjBhR1VnYVc1a2FXTmhkRzl5TGlBcUwxeHVJQ0JqYUdsc1pISmxiajg2SUZKbFlXTjBUbTlrWlR0Y2JpQWdMeW9xSUZCeWIzQnpJSFJvWVhRZ2QybHNiQ0JpWlNCd1lYTnpaV1FnYjI0Z2RHOGdkR2hsSUdOb2FXeGtjbVZ1TGlBcUwxeHVJQ0JwYm01bGNsQnliM0J6T2lCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKMlJwZGlkZE8xeHVJQ0F2S2lvZ1ZHaGxJR1p2WTNWelpXUWdjM1JoZEdVZ2IyWWdkR2hsSUhObGJHVmpkQzRnS2k5Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWTJ4bFlYSkpibVJwWTJGMGIzSkRVMU1nUFNCaVlYTmxRMU5UTzF4dVpYaHdiM0owSUdOdmJuTjBJRU5zWldGeVNXNWthV05oZEc5eUlEMGdQRnh1SUNCUGNIUnBiMjRzWEc0Z0lFbHpUWFZzZEdrZ1pYaDBaVzVrY3lCaWIyOXNaV0Z1TEZ4dUlDQkhjbTkxY0NCbGVIUmxibVJ6SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0tGeHVJQ0J3Y205d2N6b2dRMnhsWVhKSmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblkyeGxZWEpKYm1ScFkyRjBiM0luTENCN1hHNGdJQ0FnSUNBZ0lHbHVaR2xqWVhSdmNqb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0oyTnNaV0Z5TFdsdVpHbGpZWFJ2Y2ljNklIUnlkV1VzWEc0Z0lDQWdJQ0I5S1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lIdGphR2xzWkhKbGJpQjhmQ0E4UTNKdmMzTkpZMjl1SUM4K2ZWeHVJQ0FnSUR3dlpHbDJQbHh1SUNBcE8xeHVmVHRjYmx4dUx5OGdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0dkx5QlRaWEJoY21GMGIzSmNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRWx1WkdsallYUnZjbE5sY0dGeVlYUnZjbEJ5YjNCelBGeHVJQ0JQY0hScGIyNGdQU0IxYm10dWIzZHVMRnh1SUNCSmMwMTFiSFJwSUdWNGRHVnVaSE1nWW05dmJHVmhiaUE5SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajRnUFNCSGNtOTFjRUpoYzJVOFQzQjBhVzl1UGx4dVBpQmxlSFJsYm1SeklFTnZiVzF2YmxCeWIzQnpRVzVrUTJ4aGMzTk9ZVzFsUEU5d2RHbHZiaXdnU1hOTmRXeDBhU3dnUjNKdmRYQStJSHRjYmlBZ2FYTkVhWE5oWW14bFpEb2dZbTl2YkdWaGJqdGNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBibTVsY2xCeWIzQnpQem9nU2xOWUxrbHVkSEpwYm5OcFkwVnNaVzFsYm5Seld5ZHpjR0Z1SjEwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnBibVJwWTJGMGIzSlRaWEJoY21GMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwUnBjMkZpYkdWa0xGeHVJQ0FnSUhSb1pXMWxPaUI3WEc0Z0lDQWdJQ0J6Y0dGamFXNW5PaUI3SUdKaGMyVlZibWwwSUgwc1hHNGdJQ0FnSUNCamIyeHZjbk1zWEc0Z0lDQWdmU3hjYmlBZ2ZUb2dTVzVrYVdOaGRHOXlVMlZ3WVhKaGRHOXlVSEp2Y0hNOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDRzWEc0Z0lIVnVjM1I1YkdWa09pQmliMjlzWldGdVhHNHBPaUJEVTFOUFltcGxZM1JYYVhSb1RHRmlaV3dnUFQ0Z0tIdGNiaUFnYkdGaVpXdzZJQ2RwYm1ScFkyRjBiM0pUWlhCaGNtRjBiM0luTEZ4dUlDQmhiR2xuYmxObGJHWTZJQ2R6ZEhKbGRHTm9KeXhjYmlBZ2QybGtkR2c2SURFc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1ltRmphMmR5YjNWdVpFTnZiRzl5T2lCcGMwUnBjMkZpYkdWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3eE1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJRzFoY21kcGJrSnZkSFJ2YlRvZ1ltRnpaVlZ1YVhRZ0tpQXlMRnh1SUNBZ0lDQWdJQ0J0WVhKbmFXNVViM0E2SUdKaGMyVlZibWwwSUNvZ01peGNiaUFnSUNBZ0lIMHBMRnh1ZlNrN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCSmJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJZ1BTQThYRzRnSUU5d2RHbHZiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0b1hHNGdJSEJ5YjNCek9pQkpibVJwWTJGMGIzSlRaWEJoY21GMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQbHh1S1NBOVBpQjdYRzRnSUdOdmJuTjBJSHNnYVc1dVpYSlFjbTl3Y3lCOUlEMGdjSEp2Y0hNN1hHNGdJSEpsZEhWeWJpQW9YRzRnSUNBZ1BITndZVzVjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb2NISnZjSE1zSUNkcGJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJQ2RwYm1ScFkyRjBiM0l0YzJWd1lYSmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJSDBwZlZ4dUlDQWdJQzgrWEc0Z0lDazdYRzU5TzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRXh2WVdScGJtZGNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVqYjI1emRDQnNiMkZrYVc1blJHOTBRVzVwYldGMGFXOXVjeUE5SUd0bGVXWnlZVzFsYzJCY2JpQWdNQ1VzSURnd0pTd2dNVEF3SlNCN0lHOXdZV05wZEhrNklEQTdJSDFjYmlBZ05EQWxJSHNnYjNCaFkybDBlVG9nTVRzZ2ZWeHVZRHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJR3h2WVdScGJtZEpibVJwWTJGMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwWnZZM1Z6WldRc1hHNGdJQ0FnYzJsNlpTeGNiaUFnSUNCMGFHVnRaVG9nZTF4dUlDQWdJQ0FnWTI5c2IzSnpMRnh1SUNBZ0lDQWdjM0JoWTJsdVp6b2dleUJpWVhObFZXNXBkQ0I5TEZ4dUlDQWdJSDBzWEc0Z0lIMDZJRXh2WVdScGJtZEpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMnh2WVdScGJtZEpibVJwWTJGMGIzSW5MRnh1SUNCa2FYTndiR0Y1T2lBblpteGxlQ2NzWEc0Z0lIUnlZVzV6YVhScGIyNDZJQ2RqYjJ4dmNpQXhOVEJ0Y3ljc1hHNGdJR0ZzYVdkdVUyVnNaam9nSjJObGJuUmxjaWNzWEc0Z0lHWnZiblJUYVhwbE9pQnphWHBsTEZ4dUlDQnNhVzVsU0dWcFoyaDBPaUF4TEZ4dUlDQnRZWEpuYVc1U2FXZG9kRG9nYzJsNlpTeGNiaUFnZEdWNGRFRnNhV2R1T2lBblkyVnVkR1Z5Snl4Y2JpQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0oyMXBaR1JzWlNjc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUdselJtOWpkWE5sWkNBL0lHTnZiRzl5Y3k1dVpYVjBjbUZzTmpBZ09pQmpiMnh2Y25NdWJtVjFkSEpoYkRJd0xGeHVJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQmlZWE5sVlc1cGRDQXFJRElzWEc0Z0lDQWdJQ0I5S1N4Y2JuMHBPMXh1WEc1cGJuUmxjbVpoWTJVZ1RHOWhaR2x1WjBSdmRGQnliM0J6SUh0Y2JpQWdaR1ZzWVhrNklHNTFiV0psY2p0Y2JpQWdiMlptYzJWME9pQmliMjlzWldGdU8xeHVmVnh1WTI5dWMzUWdURzloWkdsdVowUnZkQ0E5SUNoN0lHUmxiR0Y1TENCdlptWnpaWFFnZlRvZ1RHOWhaR2x1WjBSdmRGQnliM0J6S1NBOVBpQW9YRzRnSUR4emNHRnVYRzRnSUNBZ1kzTnpQWHQ3WEc0Z0lDQWdJQ0JoYm1sdFlYUnBiMjQ2SUdBa2UyeHZZV1JwYm1kRWIzUkJibWx0WVhScGIyNXpmU0F4Y3lCbFlYTmxMV2x1TFc5MWRDQWtlMlJsYkdGNWZXMXpJR2x1Wm1sdWFYUmxPMkFzWEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrUTI5c2IzSTZJQ2RqZFhKeVpXNTBRMjlzYjNJbkxGeHVJQ0FnSUNBZ1ltOXlaR1Z5VW1Ga2FYVnpPaUFuTVdWdEp5eGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnYldGeVoybHVUR1ZtZERvZ2IyWm1jMlYwSUQ4Z0p6RmxiU2NnT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNCb1pXbG5hSFE2SUNjeFpXMG5MRnh1SUNBZ0lDQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0ozUnZjQ2NzWEc0Z0lDQWdJQ0IzYVdSMGFEb2dKekZsYlNjc1hHNGdJQ0FnZlgxY2JpQWdMejVjYmlrN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdURzloWkdsdVowbHVaR2xqWVhSdmNsQnliM0J6UEZ4dUlDQlBjSFJwYjI0Z1BTQjFibXR1YjNkdUxGeHVJQ0JKYzAxMWJIUnBJR1Y0ZEdWdVpITWdZbTl2YkdWaGJpQTlJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNGdQU0JIY205MWNFSmhjMlU4VDNCMGFXOXVQbHh1UGlCbGVIUmxibVJ6SUVOdmJXMXZibEJ5YjNCelFXNWtRMnhoYzNOT1lXMWxQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0lIdGNiaUFnTHlvcUlGQnliM0J6SUhSb1lYUWdkMmxzYkNCaVpTQndZWE56WldRZ2IyNGdkRzhnZEdobElHTm9hV3hrY21WdUxpQXFMMXh1SUNCcGJtNWxjbEJ5YjNCek9pQktVMWd1U1c1MGNtbHVjMmxqUld4bGJXVnVkSE5iSjJScGRpZGRPMXh1SUNBdktpb2dWR2hsSUdadlkzVnpaV1FnYzNSaGRHVWdiMllnZEdobElITmxiR1ZqZEM0Z0tpOWNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBjMFJwYzJGaWJHVmtPaUJpYjI5c1pXRnVPMXh1SUNBdktpb2dVMlYwSUhOcGVtVWdiMllnZEdobElHTnZiblJoYVc1bGNpNGdLaTljYmlBZ2MybDZaVG9nYm5WdFltVnlPMXh1ZlZ4dVpYaHdiM0owSUdOdmJuTjBJRXh2WVdScGJtZEpibVJwWTJGMGIzSWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9lMXh1SUNCcGJtNWxjbEJ5YjNCekxGeHVJQ0JwYzFKMGJDeGNiaUFnYzJsNlpTQTlJRFFzWEc0Z0lDNHVMbkpsYzNSUWNtOXdjMXh1ZlRvZ1RHOWhaR2x1WjBsdVpHbGpZWFJ2Y2xCeWIzQnpQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0tTQTlQaUI3WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEdScGRseHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb1hHNGdJQ0FnSUNBZ0lIc2dMaTR1Y21WemRGQnliM0J6TENCcGJtNWxjbEJ5YjNCekxDQnBjMUowYkN3Z2MybDZaU0I5TEZ4dUlDQWdJQ0FnSUNBbmJHOWhaR2x1WjBsdVpHbGpZWFJ2Y2ljc1hHNGdJQ0FnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdJQ0JwYm1ScFkyRjBiM0k2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnSjJ4dllXUnBibWN0YVc1a2FXTmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnS1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lEeE1iMkZrYVc1blJHOTBJR1JsYkdGNVBYc3dmU0J2Wm1aelpYUTllMmx6VW5Sc2ZTQXZQbHh1SUNBZ0lDQWdQRXh2WVdScGJtZEViM1FnWkdWc1lYazllekUyTUgwZ2IyWm1jMlYwSUM4K1hHNGdJQ0FnSUNBOFRHOWhaR2x1WjBSdmRDQmtaV3hoZVQxN016SXdmU0J2Wm1aelpYUTlleUZwYzFKMGJIMGdMejVjYmlBZ0lDQThMMlJwZGo1Y2JpQWdLVHRjYm4wN1hHNGlYWDA9ICovXCIpXG4gIH0pO1xufTtcbnZhciBMb2FkaW5nSW5kaWNhdG9yID0gZnVuY3Rpb24gTG9hZGluZ0luZGljYXRvcihfcmVmNykge1xuICB2YXIgaW5uZXJQcm9wcyA9IF9yZWY3LmlubmVyUHJvcHMsXG4gICAgaXNSdGwgPSBfcmVmNy5pc1J0bCxcbiAgICBfcmVmNyRzaXplID0gX3JlZjcuc2l6ZSxcbiAgICBzaXplID0gX3JlZjckc2l6ZSA9PT0gdm9pZCAwID8gNCA6IF9yZWY3JHNpemUsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY3LCBfZXhjbHVkZWQyKTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICBpc1J0bDogaXNSdGwsXG4gICAgc2l6ZTogc2l6ZVxuICB9KSwgJ2xvYWRpbmdJbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBqc3goTG9hZGluZ0RvdCwge1xuICAgIGRlbGF5OiAwLFxuICAgIG9mZnNldDogaXNSdGxcbiAgfSksIGpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDE2MCxcbiAgICBvZmZzZXQ6IHRydWVcbiAgfSksIGpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDMyMCxcbiAgICBvZmZzZXQ6ICFpc1J0bFxuICB9KSk7XG59O1xuXG52YXIgY3NzJDEgPSBmdW5jdGlvbiBjc3MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gX3JlZi5pc0ZvY3VzZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnMsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZiR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnY29udHJvbCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtaW5IZWlnaHQ6IHNwYWNpbmcuY29udHJvbEhlaWdodCxcbiAgICBvdXRsaW5lOiAnMCAhaW1wb3J0YW50JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0cmFuc2l0aW9uOiAnYWxsIDEwMG1zJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsNSA6IGNvbG9ycy5uZXV0cmFsMCxcbiAgICBib3JkZXJDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBpc0ZvY3VzZWQgPyBjb2xvcnMucHJpbWFyeSA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgYm94U2hhZG93OiBpc0ZvY3VzZWQgPyBcIjAgMCAwIDFweCBcIi5jb25jYXQoY29sb3JzLnByaW1hcnkpIDogdW5kZWZpbmVkLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgYm9yZGVyQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5wcmltYXJ5IDogY29sb3JzLm5ldXRyYWwzMFxuICAgIH1cbiAgfSk7XG59O1xudmFyIENvbnRyb2wgPSBmdW5jdGlvbiBDb250cm9sKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIG1lbnVJc09wZW4gPSBwcm9wcy5tZW51SXNPcGVuO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICByZWY6IGlubmVyUmVmXG4gIH0sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjb250cm9sJywge1xuICAgIGNvbnRyb2w6IHRydWUsXG4gICAgJ2NvbnRyb2wtLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnY29udHJvbC0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnY29udHJvbC0tbWVudS1pcy1vcGVuJzogbWVudUlzT3BlblxuICB9KSwgaW5uZXJQcm9wcywge1xuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkIHx8IHVuZGVmaW5lZFxuICB9KSwgY2hpbGRyZW4pO1xufTtcbnZhciBDb250cm9sJDEgPSBDb250cm9sO1xuXG52YXIgX2V4Y2x1ZGVkJDEgPSBbXCJkYXRhXCJdO1xudmFyIGdyb3VwQ1NTID0gZnVuY3Rpb24gZ3JvdXBDU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIHNwYWNpbmcgPSBfcmVmLnRoZW1lLnNwYWNpbmc7XG4gIHJldHVybiB1bnN0eWxlZCA/IHt9IDoge1xuICAgIHBhZGRpbmdCb3R0b206IHNwYWNpbmcuYmFzZVVuaXQgKiAyLFxuICAgIHBhZGRpbmdUb3A6IHNwYWNpbmcuYmFzZVVuaXQgKiAyXG4gIH07XG59O1xudmFyIEdyb3VwID0gZnVuY3Rpb24gR3JvdXAocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgY3ggPSBwcm9wcy5jeCxcbiAgICBnZXRTdHlsZXMgPSBwcm9wcy5nZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lcyA9IHByb3BzLmdldENsYXNzTmFtZXMsXG4gICAgSGVhZGluZyA9IHByb3BzLkhlYWRpbmcsXG4gICAgaGVhZGluZ1Byb3BzID0gcHJvcHMuaGVhZGluZ1Byb3BzLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGxhYmVsID0gcHJvcHMubGFiZWwsXG4gICAgdGhlbWUgPSBwcm9wcy50aGVtZSxcbiAgICBzZWxlY3RQcm9wcyA9IHByb3BzLnNlbGVjdFByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnZ3JvdXAnLCB7XG4gICAgZ3JvdXA6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBqc3goSGVhZGluZywgX2V4dGVuZHMoe30sIGhlYWRpbmdQcm9wcywge1xuICAgIHNlbGVjdFByb3BzOiBzZWxlY3RQcm9wcyxcbiAgICB0aGVtZTogdGhlbWUsXG4gICAgZ2V0U3R5bGVzOiBnZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICBjeDogY3hcbiAgfSksIGxhYmVsKSwganN4KFwiZGl2XCIsIG51bGwsIGNoaWxkcmVuKSk7XG59O1xudmFyIGdyb3VwSGVhZGluZ0NTUyA9IGZ1bmN0aW9uIGdyb3VwSGVhZGluZ0NTUyhfcmVmMiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWYyJHRoZW1lID0gX3JlZjIudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZjIkdGhlbWUuY29sb3JzLFxuICAgIHNwYWNpbmcgPSBfcmVmMiR0aGVtZS5zcGFjaW5nO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdncm91cCcsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2Jsb2NrJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgIGZvbnRTaXplOiAnNzUlJyxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgbWFyZ2luQm90dG9tOiAnMC4yNWVtJyxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCAqIDMsXG4gICAgcGFkZGluZ1JpZ2h0OiBzcGFjaW5nLmJhc2VVbml0ICogMyxcbiAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJ1xuICB9KTtcbn07XG52YXIgR3JvdXBIZWFkaW5nID0gZnVuY3Rpb24gR3JvdXBIZWFkaW5nKHByb3BzKSB7XG4gIHZhciBfY2xlYW5Db21tb25Qcm9wcyA9IGNsZWFuQ29tbW9uUHJvcHMocHJvcHMpO1xuICAgIF9jbGVhbkNvbW1vblByb3BzLmRhdGE7XG4gICAgdmFyIGlubmVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX2NsZWFuQ29tbW9uUHJvcHMsIF9leGNsdWRlZCQxKTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2dyb3VwSGVhZGluZycsIHtcbiAgICAnZ3JvdXAtaGVhZGluZyc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpKTtcbn07XG52YXIgR3JvdXAkMSA9IEdyb3VwO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiaW5uZXJSZWZcIiwgXCJpc0Rpc2FibGVkXCIsIFwiaXNIaWRkZW5cIiwgXCJpbnB1dENsYXNzTmFtZVwiXTtcbnZhciBpbnB1dENTUyA9IGZ1bmN0aW9uIGlucHV0Q1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIHZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICB2aXNpYmlsaXR5OiBpc0Rpc2FibGVkID8gJ2hpZGRlbicgOiAndmlzaWJsZScsXG4gICAgLy8gZm9yY2UgY3NzIHRvIHJlY29tcHV0ZSB3aGVuIHZhbHVlIGNoYW5nZSBkdWUgdG8gQGVtb3Rpb24gYnVnLlxuICAgIC8vIFdlIGNhbiByZW1vdmUgaXQgd2hlbmV2ZXIgdGhlIGJ1ZyBpcyBmaXhlZC5cbiAgICB0cmFuc2Zvcm06IHZhbHVlID8gJ3RyYW5zbGF0ZVooMCknIDogJydcbiAgfSwgY29udGFpbmVyU3R5bGUpLCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIG1hcmdpbjogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ1RvcDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODBcbiAgfSk7XG59O1xudmFyIHNwYWNpbmdTdHlsZSA9IHtcbiAgZ3JpZEFyZWE6ICcxIC8gMicsXG4gIGZvbnQ6ICdpbmhlcml0JyxcbiAgbWluV2lkdGg6ICcycHgnLFxuICBib3JkZXI6IDAsXG4gIG1hcmdpbjogMCxcbiAgb3V0bGluZTogMCxcbiAgcGFkZGluZzogMFxufTtcbnZhciBjb250YWluZXJTdHlsZSA9IHtcbiAgZmxleDogJzEgMSBhdXRvJyxcbiAgZGlzcGxheTogJ2lubGluZS1ncmlkJyxcbiAgZ3JpZEFyZWE6ICcxIC8gMSAvIDIgLyAzJyxcbiAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJzAgbWluLWNvbnRlbnQnLFxuICAnJjphZnRlcic6IF9vYmplY3RTcHJlYWQoe1xuICAgIGNvbnRlbnQ6ICdhdHRyKGRhdGEtdmFsdWUpIFwiIFwiJyxcbiAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICB3aGl0ZVNwYWNlOiAncHJlJ1xuICB9LCBzcGFjaW5nU3R5bGUpXG59O1xudmFyIGlucHV0U3R5bGUgPSBmdW5jdGlvbiBpbnB1dFN0eWxlKGlzSGlkZGVuKSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2lucHV0JyxcbiAgICBjb2xvcjogJ2luaGVyaXQnLFxuICAgIGJhY2tncm91bmQ6IDAsXG4gICAgb3BhY2l0eTogaXNIaWRkZW4gPyAwIDogMSxcbiAgICB3aWR0aDogJzEwMCUnXG4gIH0sIHNwYWNpbmdTdHlsZSk7XG59O1xudmFyIElucHV0ID0gZnVuY3Rpb24gSW5wdXQocHJvcHMpIHtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgdmFsdWUgPSBwcm9wcy52YWx1ZTtcbiAgdmFyIF9jbGVhbkNvbW1vblByb3BzID0gY2xlYW5Db21tb25Qcm9wcyhwcm9wcyksXG4gICAgaW5uZXJSZWYgPSBfY2xlYW5Db21tb25Qcm9wcy5pbm5lclJlZixcbiAgICBpc0Rpc2FibGVkID0gX2NsZWFuQ29tbW9uUHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc0hpZGRlbiA9IF9jbGVhbkNvbW1vblByb3BzLmlzSGlkZGVuLFxuICAgIGlucHV0Q2xhc3NOYW1lID0gX2NsZWFuQ29tbW9uUHJvcHMuaW5wdXRDbGFzc05hbWUsXG4gICAgaW5uZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfY2xlYW5Db21tb25Qcm9wcywgX2V4Y2x1ZGVkKTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2lucHV0Jywge1xuICAgICdpbnB1dC1jb250YWluZXInOiB0cnVlXG4gIH0pLCB7XG4gICAgXCJkYXRhLXZhbHVlXCI6IHZhbHVlIHx8ICcnXG4gIH0pLCBqc3goXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjeCh7XG4gICAgICBpbnB1dDogdHJ1ZVxuICAgIH0sIGlucHV0Q2xhc3NOYW1lKSxcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIHN0eWxlOiBpbnB1dFN0eWxlKGlzSGlkZGVuKSxcbiAgICBkaXNhYmxlZDogaXNEaXNhYmxlZFxuICB9LCBpbm5lclByb3BzKSkpO1xufTtcbnZhciBJbnB1dCQxID0gSW5wdXQ7XG5cbnZhciBtdWx0aVZhbHVlQ1NTID0gZnVuY3Rpb24gbXVsdGlWYWx1ZUNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnbXVsdGlWYWx1ZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIG1pbldpZHRoOiAwXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcnMubmV1dHJhbDEwLFxuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBtYXJnaW46IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBtdWx0aVZhbHVlTGFiZWxDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlTGFiZWxDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmMiR0aGVtZSA9IF9yZWYyLnRoZW1lLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYyJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnMsXG4gICAgY3JvcFdpdGhFbGxpcHNpcyA9IF9yZWYyLmNyb3BXaXRoRWxsaXBzaXM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiBjcm9wV2l0aEVsbGlwc2lzIHx8IGNyb3BXaXRoRWxsaXBzaXMgPT09IHVuZGVmaW5lZCA/ICdlbGxpcHNpcycgOiB1bmRlZmluZWQsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgZm9udFNpemU6ICc4NSUnLFxuICAgIHBhZGRpbmc6IDMsXG4gICAgcGFkZGluZ0xlZnQ6IDZcbiAgfSk7XG59O1xudmFyIG11bHRpVmFsdWVSZW1vdmVDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlUmVtb3ZlQ1NTKF9yZWYzLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjMkdGhlbWUgPSBfcmVmMy50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZjMkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmMyR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgY29sb3JzID0gX3JlZjMkdGhlbWUuY29sb3JzLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYzLmlzRm9jdXNlZDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4J1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5kYW5nZXJMaWdodCA6IHVuZGVmaW5lZCxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCxcbiAgICBwYWRkaW5nUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQsXG4gICAgJzpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLmRhbmdlckxpZ2h0LFxuICAgICAgY29sb3I6IGNvbG9ycy5kYW5nZXJcbiAgICB9XG4gIH0pO1xufTtcbnZhciBNdWx0aVZhbHVlR2VuZXJpYyA9IGZ1bmN0aW9uIE11bHRpVmFsdWVHZW5lcmljKF9yZWY0KSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWY0LmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBfcmVmNC5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIGlubmVyUHJvcHMsIGNoaWxkcmVuKTtcbn07XG52YXIgTXVsdGlWYWx1ZUNvbnRhaW5lciA9IE11bHRpVmFsdWVHZW5lcmljO1xudmFyIE11bHRpVmFsdWVMYWJlbCA9IE11bHRpVmFsdWVHZW5lcmljO1xuZnVuY3Rpb24gTXVsdGlWYWx1ZVJlbW92ZShfcmVmNSkge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmNS5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjUuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcm9sZTogXCJidXR0b25cIlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwganN4KENyb3NzSWNvbiwge1xuICAgIHNpemU6IDE0XG4gIH0pKTtcbn1cbnZhciBNdWx0aVZhbHVlID0gZnVuY3Rpb24gTXVsdGlWYWx1ZShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb21wb25lbnRzID0gcHJvcHMuY29tcG9uZW50cyxcbiAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICByZW1vdmVQcm9wcyA9IHByb3BzLnJlbW92ZVByb3BzLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHM7XG4gIHZhciBDb250YWluZXIgPSBjb21wb25lbnRzLkNvbnRhaW5lcixcbiAgICBMYWJlbCA9IGNvbXBvbmVudHMuTGFiZWwsXG4gICAgUmVtb3ZlID0gY29tcG9uZW50cy5SZW1vdmU7XG4gIHJldHVybiBqc3goQ29udGFpbmVyLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtdWx0aVZhbHVlJywge1xuICAgICAgJ211bHRpLXZhbHVlJzogdHJ1ZSxcbiAgICAgICdtdWx0aS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gICAgfSkpLCBpbm5lclByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSwganN4KExhYmVsLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZUxhYmVsJywge1xuICAgICAgJ211bHRpLXZhbHVlX19sYWJlbCc6IHRydWVcbiAgICB9KSksXG4gICAgc2VsZWN0UHJvcHM6IHNlbGVjdFByb3BzXG4gIH0sIGNoaWxkcmVuKSwganN4KFJlbW92ZSwge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgaW5uZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZVJlbW92ZScsIHtcbiAgICAgICdtdWx0aS12YWx1ZV9fcmVtb3ZlJzogdHJ1ZVxuICAgIH0pKSwge30sIHtcbiAgICAgICdhcmlhLWxhYmVsJzogXCJSZW1vdmUgXCIuY29uY2F0KGNoaWxkcmVuIHx8ICdvcHRpb24nKVxuICAgIH0sIHJlbW92ZVByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSkpO1xufTtcbnZhciBNdWx0aVZhbHVlJDEgPSBNdWx0aVZhbHVlO1xuXG52YXIgb3B0aW9uQ1NTID0gZnVuY3Rpb24gb3B0aW9uQ1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYuaXNGb2N1c2VkLFxuICAgIGlzU2VsZWN0ZWQgPSBfcmVmLmlzU2VsZWN0ZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnb3B0aW9uJyxcbiAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6ICdyZ2JhKDAsIDAsIDAsIDApJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNTZWxlY3RlZCA/IGNvbG9ycy5wcmltYXJ5IDogaXNGb2N1c2VkID8gY29sb3JzLnByaW1hcnkyNSA6ICd0cmFuc3BhcmVudCcsXG4gICAgY29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDIwIDogaXNTZWxlY3RlZCA/IGNvbG9ycy5uZXV0cmFsMCA6ICdpbmhlcml0JyxcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0ICogMiwgXCJweCBcIikuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAzLCBcInB4XCIpLFxuICAgIC8vIHByb3ZpZGUgc29tZSBhZmZvcmRhbmNlIG9uIHRvdWNoIGRldmljZXNcbiAgICAnOmFjdGl2ZSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogIWlzRGlzYWJsZWQgPyBpc1NlbGVjdGVkID8gY29sb3JzLnByaW1hcnkgOiBjb2xvcnMucHJpbWFyeTUwIDogdW5kZWZpbmVkXG4gICAgfVxuICB9KTtcbn07XG52YXIgT3B0aW9uID0gZnVuY3Rpb24gT3B0aW9uKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpc1NlbGVjdGVkID0gcHJvcHMuaXNTZWxlY3RlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnb3B0aW9uJywge1xuICAgIG9wdGlvbjogdHJ1ZSxcbiAgICAnb3B0aW9uLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWQsXG4gICAgJ29wdGlvbi0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnb3B0aW9uLS1pcy1zZWxlY3RlZCc6IGlzU2VsZWN0ZWRcbiAgfSksIHtcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkXG4gIH0sIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIE9wdGlvbiQxID0gT3B0aW9uO1xuXG52YXIgcGxhY2Vob2xkZXJDU1MgPSBmdW5jdGlvbiBwbGFjZWhvbGRlckNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAncGxhY2Vob2xkZXInLFxuICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMydcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw1MCxcbiAgICBtYXJnaW5MZWZ0OiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBtYXJnaW5SaWdodDogc3BhY2luZy5iYXNlVW5pdCAvIDJcbiAgfSk7XG59O1xudmFyIFBsYWNlaG9sZGVyID0gZnVuY3Rpb24gUGxhY2Vob2xkZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdwbGFjZWhvbGRlcicsIHtcbiAgICBwbGFjZWhvbGRlcjogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgUGxhY2Vob2xkZXIkMSA9IFBsYWNlaG9sZGVyO1xuXG52YXIgY3NzID0gZnVuY3Rpb24gY3NzKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ3NpbmdsZVZhbHVlJyxcbiAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWw0MCA6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgbWFyZ2luTGVmdDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgbWFyZ2luUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSA9IGZ1bmN0aW9uIFNpbmdsZVZhbHVlKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnc2luZ2xlVmFsdWUnLCB7XG4gICAgJ3NpbmdsZS12YWx1ZSc6IHRydWUsXG4gICAgJ3NpbmdsZS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSQxID0gU2luZ2xlVmFsdWU7XG5cbnZhciBjb21wb25lbnRzID0ge1xuICBDbGVhckluZGljYXRvcjogQ2xlYXJJbmRpY2F0b3IsXG4gIENvbnRyb2w6IENvbnRyb2wkMSxcbiAgRHJvcGRvd25JbmRpY2F0b3I6IERyb3Bkb3duSW5kaWNhdG9yLFxuICBEb3duQ2hldnJvbjogRG93bkNoZXZyb24sXG4gIENyb3NzSWNvbjogQ3Jvc3NJY29uLFxuICBHcm91cDogR3JvdXAkMSxcbiAgR3JvdXBIZWFkaW5nOiBHcm91cEhlYWRpbmcsXG4gIEluZGljYXRvcnNDb250YWluZXI6IEluZGljYXRvcnNDb250YWluZXIsXG4gIEluZGljYXRvclNlcGFyYXRvcjogSW5kaWNhdG9yU2VwYXJhdG9yLFxuICBJbnB1dDogSW5wdXQkMSxcbiAgTG9hZGluZ0luZGljYXRvcjogTG9hZGluZ0luZGljYXRvcixcbiAgTWVudTogTWVudSQxLFxuICBNZW51TGlzdDogTWVudUxpc3QsXG4gIE1lbnVQb3J0YWw6IE1lbnVQb3J0YWwsXG4gIExvYWRpbmdNZXNzYWdlOiBMb2FkaW5nTWVzc2FnZSxcbiAgTm9PcHRpb25zTWVzc2FnZTogTm9PcHRpb25zTWVzc2FnZSxcbiAgTXVsdGlWYWx1ZTogTXVsdGlWYWx1ZSQxLFxuICBNdWx0aVZhbHVlQ29udGFpbmVyOiBNdWx0aVZhbHVlQ29udGFpbmVyLFxuICBNdWx0aVZhbHVlTGFiZWw6IE11bHRpVmFsdWVMYWJlbCxcbiAgTXVsdGlWYWx1ZVJlbW92ZTogTXVsdGlWYWx1ZVJlbW92ZSxcbiAgT3B0aW9uOiBPcHRpb24kMSxcbiAgUGxhY2Vob2xkZXI6IFBsYWNlaG9sZGVyJDEsXG4gIFNlbGVjdENvbnRhaW5lcjogU2VsZWN0Q29udGFpbmVyLFxuICBTaW5nbGVWYWx1ZTogU2luZ2xlVmFsdWUkMSxcbiAgVmFsdWVDb250YWluZXI6IFZhbHVlQ29udGFpbmVyXG59O1xudmFyIGRlZmF1bHRDb21wb25lbnRzID0gZnVuY3Rpb24gZGVmYXVsdENvbXBvbmVudHMocHJvcHMpIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29tcG9uZW50cyksIHByb3BzLmNvbXBvbmVudHMpO1xufTtcblxuZXhwb3J0IHsgaXNNb2JpbGVEZXZpY2UgYXMgQSwgbXVsdGlWYWx1ZUFzVmFsdWUgYXMgQiwgc2luZ2xlVmFsdWVBc1ZhbHVlIGFzIEMsIHZhbHVlVGVybmFyeSBhcyBELCBjbGFzc05hbWVzIGFzIEUsIGRlZmF1bHRDb21wb25lbnRzIGFzIEYsIGlzRG9jdW1lbnRFbGVtZW50IGFzIEcsIGNsZWFuVmFsdWUgYXMgSCwgc2Nyb2xsSW50b1ZpZXcgYXMgSSwgbm9vcCBhcyBKLCBub3ROdWxsaXNoIGFzIEssIGhhbmRsZUlucHV0Q2hhbmdlIGFzIEwsIE1lbnVQbGFjZXIgYXMgTSwgY2xlYXJJbmRpY2F0b3JDU1MgYXMgYSwgY29udGFpbmVyQ1NTIGFzIGIsIGNvbXBvbmVudHMgYXMgYywgY3NzJDEgYXMgZCwgZHJvcGRvd25JbmRpY2F0b3JDU1MgYXMgZSwgZ3JvdXBIZWFkaW5nQ1NTIGFzIGYsIGdyb3VwQ1NTIGFzIGcsIGluZGljYXRvclNlcGFyYXRvckNTUyBhcyBoLCBpbmRpY2F0b3JzQ29udGFpbmVyQ1NTIGFzIGksIGlucHV0Q1NTIGFzIGosIGxvYWRpbmdNZXNzYWdlQ1NTIGFzIGssIGxvYWRpbmdJbmRpY2F0b3JDU1MgYXMgbCwgbWVudUNTUyBhcyBtLCBtZW51TGlzdENTUyBhcyBuLCBtZW51UG9ydGFsQ1NTIGFzIG8sIG11bHRpVmFsdWVDU1MgYXMgcCwgbXVsdGlWYWx1ZUxhYmVsQ1NTIGFzIHEsIHJlbW92ZVByb3BzIGFzIHIsIHN1cHBvcnRzUGFzc2l2ZUV2ZW50cyBhcyBzLCBtdWx0aVZhbHVlUmVtb3ZlQ1NTIGFzIHQsIG5vT3B0aW9uc01lc3NhZ2VDU1MgYXMgdSwgb3B0aW9uQ1NTIGFzIHYsIHBsYWNlaG9sZGVyQ1NTIGFzIHcsIGNzcyBhcyB4LCB2YWx1ZUNvbnRhaW5lckNTUyBhcyB5LCBpc1RvdWNoQ2FwYWJsZSBhcyB6IH07XG4iLCJ2YXIgc2FmZUlzTmFOID0gTnVtYmVyLmlzTmFOIHx8XG4gICAgZnVuY3Rpb24gcG9ueWZpbGwodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IHZhbHVlO1xuICAgIH07XG5mdW5jdGlvbiBpc0VxdWFsKGZpcnN0LCBzZWNvbmQpIHtcbiAgICBpZiAoZmlyc3QgPT09IHNlY29uZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHNhZmVJc05hTihmaXJzdCkgJiYgc2FmZUlzTmFOKHNlY29uZCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGFyZUlucHV0c0VxdWFsKG5ld0lucHV0cywgbGFzdElucHV0cykge1xuICAgIGlmIChuZXdJbnB1dHMubGVuZ3RoICE9PSBsYXN0SW5wdXRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3SW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaXNFcXVhbChuZXdJbnB1dHNbaV0sIGxhc3RJbnB1dHNbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIG1lbW9pemVPbmUocmVzdWx0Rm4sIGlzRXF1YWwpIHtcbiAgICBpZiAoaXNFcXVhbCA9PT0gdm9pZCAwKSB7IGlzRXF1YWwgPSBhcmVJbnB1dHNFcXVhbDsgfVxuICAgIHZhciBjYWNoZSA9IG51bGw7XG4gICAgZnVuY3Rpb24gbWVtb2l6ZWQoKSB7XG4gICAgICAgIHZhciBuZXdBcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBuZXdBcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhY2hlICYmIGNhY2hlLmxhc3RUaGlzID09PSB0aGlzICYmIGlzRXF1YWwobmV3QXJncywgY2FjaGUubGFzdEFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGUubGFzdFJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGFzdFJlc3VsdCA9IHJlc3VsdEZuLmFwcGx5KHRoaXMsIG5ld0FyZ3MpO1xuICAgICAgICBjYWNoZSA9IHtcbiAgICAgICAgICAgIGxhc3RSZXN1bHQ6IGxhc3RSZXN1bHQsXG4gICAgICAgICAgICBsYXN0QXJnczogbmV3QXJncyxcbiAgICAgICAgICAgIGxhc3RUaGlzOiB0aGlzLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDtcbiAgICB9XG4gICAgbWVtb2l6ZWQuY2xlYXIgPSBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgY2FjaGUgPSBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG5leHBvcnQgeyBtZW1vaXplT25lIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDInO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjayc7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzJztcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHMnO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlcic7XG5pbXBvcnQgX3RvQ29uc3VtYWJsZUFycmF5IGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZU1lbW8sIEZyYWdtZW50LCB1c2VSZWYsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHIgYXMgcmVtb3ZlUHJvcHMsIHMgYXMgc3VwcG9ydHNQYXNzaXZlRXZlbnRzLCBhIGFzIGNsZWFySW5kaWNhdG9yQ1NTLCBiIGFzIGNvbnRhaW5lckNTUywgZCBhcyBjc3MkMSwgZSBhcyBkcm9wZG93bkluZGljYXRvckNTUywgZyBhcyBncm91cENTUywgZiBhcyBncm91cEhlYWRpbmdDU1MsIGkgYXMgaW5kaWNhdG9yc0NvbnRhaW5lckNTUywgaCBhcyBpbmRpY2F0b3JTZXBhcmF0b3JDU1MsIGogYXMgaW5wdXRDU1MsIGwgYXMgbG9hZGluZ0luZGljYXRvckNTUywgayBhcyBsb2FkaW5nTWVzc2FnZUNTUywgbSBhcyBtZW51Q1NTLCBuIGFzIG1lbnVMaXN0Q1NTLCBvIGFzIG1lbnVQb3J0YWxDU1MsIHAgYXMgbXVsdGlWYWx1ZUNTUywgcSBhcyBtdWx0aVZhbHVlTGFiZWxDU1MsIHQgYXMgbXVsdGlWYWx1ZVJlbW92ZUNTUywgdSBhcyBub09wdGlvbnNNZXNzYWdlQ1NTLCB2IGFzIG9wdGlvbkNTUywgdyBhcyBwbGFjZWhvbGRlckNTUywgeCBhcyBjc3MkMiwgeSBhcyB2YWx1ZUNvbnRhaW5lckNTUywgeiBhcyBpc1RvdWNoQ2FwYWJsZSwgQSBhcyBpc01vYmlsZURldmljZSwgQiBhcyBtdWx0aVZhbHVlQXNWYWx1ZSwgQyBhcyBzaW5nbGVWYWx1ZUFzVmFsdWUsIEQgYXMgdmFsdWVUZXJuYXJ5LCBFIGFzIGNsYXNzTmFtZXMsIEYgYXMgZGVmYXVsdENvbXBvbmVudHMsIEcgYXMgaXNEb2N1bWVudEVsZW1lbnQsIEggYXMgY2xlYW5WYWx1ZSwgSSBhcyBzY3JvbGxJbnRvVmlldywgSiBhcyBub29wLCBNIGFzIE1lbnVQbGFjZXIsIEsgYXMgbm90TnVsbGlzaCB9IGZyb20gJy4vaW5kZXgtNjQxZWU1YjguZXNtLmpzJztcbmltcG9ydCB7IGpzeCwgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IG1lbW9pemVPbmUgZnJvbSAnbWVtb2l6ZS1vbmUnO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fJDIoKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxuXG4vLyBBc3Npc3RpdmUgdGV4dCB0byBkZXNjcmliZSB2aXN1YWwgZWxlbWVudHMuIEhpZGRlbiBmb3Igc2lnaHRlZCB1c2Vycy5cbnZhciBfcmVmID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8ge1xuICBuYW1lOiBcIjdwZzBjai1hMTF5VGV4dFwiLFxuICBzdHlsZXM6IFwibGFiZWw6YTExeVRleHQ7ei1pbmRleDo5OTk5O2JvcmRlcjowO2NsaXA6cmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO2hlaWdodDoxcHg7d2lkdGg6MXB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwXCJcbn0gOiB7XG4gIG5hbWU6IFwiMWY0M2F2ei1hMTF5VGV4dC1BMTF5VGV4dFwiLFxuICBzdHlsZXM6IFwibGFiZWw6YTExeVRleHQ7ei1pbmRleDo5OTk5O2JvcmRlcjowO2NsaXA6cmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO2hlaWdodDoxcHg7d2lkdGg6MXB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwO2xhYmVsOkExMXlUZXh0O1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWtFeE1YbFVaWGgwTG5SemVDSmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRlBTU0lzSW1acGJHVWlPaUpCTVRGNVZHVjRkQzUwYzNnaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaW9nUUdwemVDQnFjM2dnS2k5Y2JtbHRjRzl5ZENCN0lFcFRXQ0I5SUdaeWIyMGdKM0psWVdOMEp6dGNibWx0Y0c5eWRDQjdJR3B6ZUNCOUlHWnliMjBnSjBCbGJXOTBhVzl1TDNKbFlXTjBKenRjYmx4dUx5OGdRWE56YVhOMGFYWmxJSFJsZUhRZ2RHOGdaR1Z6WTNKcFltVWdkbWx6ZFdGc0lHVnNaVzFsYm5SekxpQklhV1JrWlc0Z1ptOXlJSE5wWjJoMFpXUWdkWE5sY25NdVhHNWpiMjV6ZENCQk1URjVWR1Y0ZENBOUlDaHdjbTl3Y3pvZ1NsTllMa2x1ZEhKcGJuTnBZMFZzWlcxbGJuUnpXeWR6Y0dGdUoxMHBJRDArSUNoY2JpQWdQSE53WVc1Y2JpQWdJQ0JqYzNNOWUzdGNiaUFnSUNBZ0lHeGhZbVZzT2lBbllURXhlVlJsZUhRbkxGeHVJQ0FnSUNBZ2VrbHVaR1Y0T2lBNU9UazVMRnh1SUNBZ0lDQWdZbTl5WkdWeU9pQXdMRnh1SUNBZ0lDQWdZMnhwY0RvZ0ozSmxZM1FvTVhCNExDQXhjSGdzSURGd2VDd2dNWEI0S1Njc1hHNGdJQ0FnSUNCb1pXbG5hSFE2SURFc1hHNGdJQ0FnSUNCM2FXUjBhRG9nTVN4Y2JpQWdJQ0FnSUhCdmMybDBhVzl1T2lBbllXSnpiMngxZEdVbkxGeHVJQ0FnSUNBZ2IzWmxjbVpzYjNjNklDZG9hV1JrWlc0bkxGeHVJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01DeGNiaUFnSUNBZ0lIZG9hWFJsVTNCaFkyVTZJQ2R1YjNkeVlYQW5MRnh1SUNBZ0lIMTlYRzRnSUNBZ2V5NHVMbkJ5YjNCemZWeHVJQ0F2UGx4dUtUdGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdRVEV4ZVZSbGVIUTdYRzRpWFgwPSAqL1wiLFxuICB0b1N0cmluZzogX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX18kMlxufTtcbnZhciBBMTF5VGV4dCA9IGZ1bmN0aW9uIEExMXlUZXh0KHByb3BzKSB7XG4gIHJldHVybiBqc3goXCJzcGFuXCIsIF9leHRlbmRzKHtcbiAgICBjc3M6IF9yZWZcbiAgfSwgcHJvcHMpKTtcbn07XG52YXIgQTExeVRleHQkMSA9IEExMXlUZXh0O1xuXG52YXIgZGVmYXVsdEFyaWFMaXZlTWVzc2FnZXMgPSB7XG4gIGd1aWRhbmNlOiBmdW5jdGlvbiBndWlkYW5jZShwcm9wcykge1xuICAgIHZhciBpc1NlYXJjaGFibGUgPSBwcm9wcy5pc1NlYXJjaGFibGUsXG4gICAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aSxcbiAgICAgIHRhYlNlbGVjdHNWYWx1ZSA9IHByb3BzLnRhYlNlbGVjdHNWYWx1ZSxcbiAgICAgIGNvbnRleHQgPSBwcm9wcy5jb250ZXh0LFxuICAgICAgaXNJbml0aWFsRm9jdXMgPSBwcm9wcy5pc0luaXRpYWxGb2N1cztcbiAgICBzd2l0Y2ggKGNvbnRleHQpIHtcbiAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICByZXR1cm4gXCJVc2UgVXAgYW5kIERvd24gdG8gY2hvb3NlIG9wdGlvbnMsIHByZXNzIEVudGVyIHRvIHNlbGVjdCB0aGUgY3VycmVudGx5IGZvY3VzZWQgb3B0aW9uLCBwcmVzcyBFc2NhcGUgdG8gZXhpdCB0aGUgbWVudVwiLmNvbmNhdCh0YWJTZWxlY3RzVmFsdWUgPyAnLCBwcmVzcyBUYWIgdG8gc2VsZWN0IHRoZSBvcHRpb24gYW5kIGV4aXQgdGhlIG1lbnUnIDogJycsIFwiLlwiKTtcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgcmV0dXJuIGlzSW5pdGlhbEZvY3VzID8gXCJcIi5jb25jYXQocHJvcHNbJ2FyaWEtbGFiZWwnXSB8fCAnU2VsZWN0JywgXCIgaXMgZm9jdXNlZCBcIikuY29uY2F0KGlzU2VhcmNoYWJsZSA/ICcsdHlwZSB0byByZWZpbmUgbGlzdCcgOiAnJywgXCIsIHByZXNzIERvd24gdG8gb3BlbiB0aGUgbWVudSwgXCIpLmNvbmNhdChpc011bHRpID8gJyBwcmVzcyBsZWZ0IHRvIGZvY3VzIHNlbGVjdGVkIHZhbHVlcycgOiAnJykgOiAnJztcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgcmV0dXJuICdVc2UgbGVmdCBhbmQgcmlnaHQgdG8gdG9nZ2xlIGJldHdlZW4gZm9jdXNlZCB2YWx1ZXMsIHByZXNzIEJhY2tzcGFjZSB0byByZW1vdmUgdGhlIGN1cnJlbnRseSBmb2N1c2VkIHZhbHVlJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH0sXG4gIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcm9wcykge1xuICAgIHZhciBhY3Rpb24gPSBwcm9wcy5hY3Rpb24sXG4gICAgICBfcHJvcHMkbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICAgIGxhYmVsID0gX3Byb3BzJGxhYmVsID09PSB2b2lkIDAgPyAnJyA6IF9wcm9wcyRsYWJlbCxcbiAgICAgIGxhYmVscyA9IHByb3BzLmxhYmVscyxcbiAgICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkO1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdkZXNlbGVjdC1vcHRpb24nOlxuICAgICAgY2FzZSAncG9wLXZhbHVlJzpcbiAgICAgIGNhc2UgJ3JlbW92ZS12YWx1ZSc6XG4gICAgICAgIHJldHVybiBcIm9wdGlvbiBcIi5jb25jYXQobGFiZWwsIFwiLCBkZXNlbGVjdGVkLlwiKTtcbiAgICAgIGNhc2UgJ2NsZWFyJzpcbiAgICAgICAgcmV0dXJuICdBbGwgc2VsZWN0ZWQgb3B0aW9ucyBoYXZlIGJlZW4gY2xlYXJlZC4nO1xuICAgICAgY2FzZSAnaW5pdGlhbC1pbnB1dC1mb2N1cyc6XG4gICAgICAgIHJldHVybiBcIm9wdGlvblwiLmNvbmNhdChsYWJlbHMubGVuZ3RoID4gMSA/ICdzJyA6ICcnLCBcIiBcIikuY29uY2F0KGxhYmVscy5qb2luKCcsJyksIFwiLCBzZWxlY3RlZC5cIik7XG4gICAgICBjYXNlICdzZWxlY3Qtb3B0aW9uJzpcbiAgICAgICAgcmV0dXJuIGlzRGlzYWJsZWQgPyBcIm9wdGlvbiBcIi5jb25jYXQobGFiZWwsIFwiIGlzIGRpc2FibGVkLiBTZWxlY3QgYW5vdGhlciBvcHRpb24uXCIpIDogXCJvcHRpb24gXCIuY29uY2F0KGxhYmVsLCBcIiwgc2VsZWN0ZWQuXCIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfSxcbiAgb25Gb2N1czogZnVuY3Rpb24gb25Gb2N1cyhwcm9wcykge1xuICAgIHZhciBjb250ZXh0ID0gcHJvcHMuY29udGV4dCxcbiAgICAgIGZvY3VzZWQgPSBwcm9wcy5mb2N1c2VkLFxuICAgICAgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnMsXG4gICAgICBfcHJvcHMkbGFiZWwyID0gcHJvcHMubGFiZWwsXG4gICAgICBsYWJlbCA9IF9wcm9wcyRsYWJlbDIgPT09IHZvaWQgMCA/ICcnIDogX3Byb3BzJGxhYmVsMixcbiAgICAgIHNlbGVjdFZhbHVlID0gcHJvcHMuc2VsZWN0VmFsdWUsXG4gICAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICAgIGlzU2VsZWN0ZWQgPSBwcm9wcy5pc1NlbGVjdGVkLFxuICAgICAgaXNBcHBsZURldmljZSA9IHByb3BzLmlzQXBwbGVEZXZpY2U7XG4gICAgdmFyIGdldEFycmF5SW5kZXggPSBmdW5jdGlvbiBnZXRBcnJheUluZGV4KGFyciwgaXRlbSkge1xuICAgICAgcmV0dXJuIGFyciAmJiBhcnIubGVuZ3RoID8gXCJcIi5jb25jYXQoYXJyLmluZGV4T2YoaXRlbSkgKyAxLCBcIiBvZiBcIikuY29uY2F0KGFyci5sZW5ndGgpIDogJyc7XG4gICAgfTtcbiAgICBpZiAoY29udGV4dCA9PT0gJ3ZhbHVlJyAmJiBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIFwidmFsdWUgXCIuY29uY2F0KGxhYmVsLCBcIiBmb2N1c2VkLCBcIikuY29uY2F0KGdldEFycmF5SW5kZXgoc2VsZWN0VmFsdWUsIGZvY3VzZWQpLCBcIi5cIik7XG4gICAgfVxuICAgIGlmIChjb250ZXh0ID09PSAnbWVudScgJiYgaXNBcHBsZURldmljZSkge1xuICAgICAgdmFyIGRpc2FibGVkID0gaXNEaXNhYmxlZCA/ICcgZGlzYWJsZWQnIDogJyc7XG4gICAgICB2YXIgc3RhdHVzID0gXCJcIi5jb25jYXQoaXNTZWxlY3RlZCA/ICcgc2VsZWN0ZWQnIDogJycpLmNvbmNhdChkaXNhYmxlZCk7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQobGFiZWwpLmNvbmNhdChzdGF0dXMsIFwiLCBcIikuY29uY2F0KGdldEFycmF5SW5kZXgob3B0aW9ucywgZm9jdXNlZCksIFwiLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9LFxuICBvbkZpbHRlcjogZnVuY3Rpb24gb25GaWx0ZXIocHJvcHMpIHtcbiAgICB2YXIgaW5wdXRWYWx1ZSA9IHByb3BzLmlucHV0VmFsdWUsXG4gICAgICByZXN1bHRzTWVzc2FnZSA9IHByb3BzLnJlc3VsdHNNZXNzYWdlO1xuICAgIHJldHVybiBcIlwiLmNvbmNhdChyZXN1bHRzTWVzc2FnZSkuY29uY2F0KGlucHV0VmFsdWUgPyAnIGZvciBzZWFyY2ggdGVybSAnICsgaW5wdXRWYWx1ZSA6ICcnLCBcIi5cIik7XG4gIH1cbn07XG5cbnZhciBMaXZlUmVnaW9uID0gZnVuY3Rpb24gTGl2ZVJlZ2lvbihwcm9wcykge1xuICB2YXIgYXJpYVNlbGVjdGlvbiA9IHByb3BzLmFyaWFTZWxlY3Rpb24sXG4gICAgZm9jdXNlZE9wdGlvbiA9IHByb3BzLmZvY3VzZWRPcHRpb24sXG4gICAgZm9jdXNlZFZhbHVlID0gcHJvcHMuZm9jdXNlZFZhbHVlLFxuICAgIGZvY3VzYWJsZU9wdGlvbnMgPSBwcm9wcy5mb2N1c2FibGVPcHRpb25zLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBzZWxlY3RWYWx1ZSA9IHByb3BzLnNlbGVjdFZhbHVlLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHMsXG4gICAgaWQgPSBwcm9wcy5pZCxcbiAgICBpc0FwcGxlRGV2aWNlID0gcHJvcHMuaXNBcHBsZURldmljZTtcbiAgdmFyIGFyaWFMaXZlTWVzc2FnZXMgPSBzZWxlY3RQcm9wcy5hcmlhTGl2ZU1lc3NhZ2VzLFxuICAgIGdldE9wdGlvbkxhYmVsID0gc2VsZWN0UHJvcHMuZ2V0T3B0aW9uTGFiZWwsXG4gICAgaW5wdXRWYWx1ZSA9IHNlbGVjdFByb3BzLmlucHV0VmFsdWUsXG4gICAgaXNNdWx0aSA9IHNlbGVjdFByb3BzLmlzTXVsdGksXG4gICAgaXNPcHRpb25EaXNhYmxlZCA9IHNlbGVjdFByb3BzLmlzT3B0aW9uRGlzYWJsZWQsXG4gICAgaXNTZWFyY2hhYmxlID0gc2VsZWN0UHJvcHMuaXNTZWFyY2hhYmxlLFxuICAgIG1lbnVJc09wZW4gPSBzZWxlY3RQcm9wcy5tZW51SXNPcGVuLFxuICAgIG9wdGlvbnMgPSBzZWxlY3RQcm9wcy5vcHRpb25zLFxuICAgIHNjcmVlblJlYWRlclN0YXR1cyA9IHNlbGVjdFByb3BzLnNjcmVlblJlYWRlclN0YXR1cyxcbiAgICB0YWJTZWxlY3RzVmFsdWUgPSBzZWxlY3RQcm9wcy50YWJTZWxlY3RzVmFsdWUsXG4gICAgaXNMb2FkaW5nID0gc2VsZWN0UHJvcHMuaXNMb2FkaW5nO1xuICB2YXIgYXJpYUxhYmVsID0gc2VsZWN0UHJvcHNbJ2FyaWEtbGFiZWwnXTtcbiAgdmFyIGFyaWFMaXZlID0gc2VsZWN0UHJvcHNbJ2FyaWEtbGl2ZSddO1xuXG4gIC8vIFVwZGF0ZSBhcmlhIGxpdmUgbWVzc2FnZSBjb25maWd1cmF0aW9uIHdoZW4gcHJvcCBjaGFuZ2VzXG4gIHZhciBtZXNzYWdlcyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRBcmlhTGl2ZU1lc3NhZ2VzKSwgYXJpYUxpdmVNZXNzYWdlcyB8fCB7fSk7XG4gIH0sIFthcmlhTGl2ZU1lc3NhZ2VzXSk7XG5cbiAgLy8gVXBkYXRlIGFyaWEgbGl2ZSBzZWxlY3RlZCBvcHRpb24gd2hlbiBwcm9wIGNoYW5nZXNcbiAgdmFyIGFyaWFTZWxlY3RlZCA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBtZXNzYWdlID0gJyc7XG4gICAgaWYgKGFyaWFTZWxlY3Rpb24gJiYgbWVzc2FnZXMub25DaGFuZ2UpIHtcbiAgICAgIHZhciBvcHRpb24gPSBhcmlhU2VsZWN0aW9uLm9wdGlvbixcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zID0gYXJpYVNlbGVjdGlvbi5vcHRpb25zLFxuICAgICAgICByZW1vdmVkVmFsdWUgPSBhcmlhU2VsZWN0aW9uLnJlbW92ZWRWYWx1ZSxcbiAgICAgICAgcmVtb3ZlZFZhbHVlcyA9IGFyaWFTZWxlY3Rpb24ucmVtb3ZlZFZhbHVlcyxcbiAgICAgICAgdmFsdWUgPSBhcmlhU2VsZWN0aW9uLnZhbHVlO1xuICAgICAgLy8gc2VsZWN0LW9wdGlvbiB3aGVuICFpc011bHRpIGRvZXMgbm90IHJldHVybiBvcHRpb24gc28gd2UgYXNzdW1lIHNlbGVjdGVkIG9wdGlvbiBpcyB2YWx1ZVxuICAgICAgdmFyIGFzT3B0aW9uID0gZnVuY3Rpb24gYXNPcHRpb24odmFsKSB7XG4gICAgICAgIHJldHVybiAhQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsIDogbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIC8vIElmIHRoZXJlIGlzIGp1c3Qgb25lIGl0ZW0gZnJvbSB0aGUgYWN0aW9uIHRoZW4gZ2V0IGl0cyBsYWJlbFxuICAgICAgdmFyIHNlbGVjdGVkID0gcmVtb3ZlZFZhbHVlIHx8IG9wdGlvbiB8fCBhc09wdGlvbih2YWx1ZSk7XG4gICAgICB2YXIgbGFiZWwgPSBzZWxlY3RlZCA/IGdldE9wdGlvbkxhYmVsKHNlbGVjdGVkKSA6ICcnO1xuXG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgaXRlbXMgZnJvbSB0aGUgYWN0aW9uIHRoZW4gcmV0dXJuIGFuIGFycmF5IG9mIGxhYmVsc1xuICAgICAgdmFyIG11bHRpU2VsZWN0ZWQgPSBzZWxlY3RlZE9wdGlvbnMgfHwgcmVtb3ZlZFZhbHVlcyB8fCB1bmRlZmluZWQ7XG4gICAgICB2YXIgbGFiZWxzID0gbXVsdGlTZWxlY3RlZCA/IG11bHRpU2VsZWN0ZWQubWFwKGdldE9wdGlvbkxhYmVsKSA6IFtdO1xuICAgICAgdmFyIG9uQ2hhbmdlUHJvcHMgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgLy8gbXVsdGlTZWxlY3RlZCBpdGVtcyBhcmUgdXN1YWxseSBpdGVtcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHNlbGVjdGVkXG4gICAgICAgIC8vIG9yIHNldCBieSB0aGUgdXNlciBhcyBhIGRlZmF1bHQgdmFsdWUgc28gd2UgYXNzdW1lIHRoZXkgYXJlIG5vdCBkaXNhYmxlZFxuICAgICAgICBpc0Rpc2FibGVkOiBzZWxlY3RlZCAmJiBpc09wdGlvbkRpc2FibGVkKHNlbGVjdGVkLCBzZWxlY3RWYWx1ZSksXG4gICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgbGFiZWxzOiBsYWJlbHNcbiAgICAgIH0sIGFyaWFTZWxlY3Rpb24pO1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VzLm9uQ2hhbmdlKG9uQ2hhbmdlUHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSwgW2FyaWFTZWxlY3Rpb24sIG1lc3NhZ2VzLCBpc09wdGlvbkRpc2FibGVkLCBzZWxlY3RWYWx1ZSwgZ2V0T3B0aW9uTGFiZWxdKTtcbiAgdmFyIGFyaWFGb2N1c2VkID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGZvY3VzTXNnID0gJyc7XG4gICAgdmFyIGZvY3VzZWQgPSBmb2N1c2VkT3B0aW9uIHx8IGZvY3VzZWRWYWx1ZTtcbiAgICB2YXIgaXNTZWxlY3RlZCA9ICEhKGZvY3VzZWRPcHRpb24gJiYgc2VsZWN0VmFsdWUgJiYgc2VsZWN0VmFsdWUuaW5jbHVkZXMoZm9jdXNlZE9wdGlvbikpO1xuICAgIGlmIChmb2N1c2VkICYmIG1lc3NhZ2VzLm9uRm9jdXMpIHtcbiAgICAgIHZhciBvbkZvY3VzUHJvcHMgPSB7XG4gICAgICAgIGZvY3VzZWQ6IGZvY3VzZWQsXG4gICAgICAgIGxhYmVsOiBnZXRPcHRpb25MYWJlbChmb2N1c2VkKSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNPcHRpb25EaXNhYmxlZChmb2N1c2VkLCBzZWxlY3RWYWx1ZSksXG4gICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgIG9wdGlvbnM6IGZvY3VzYWJsZU9wdGlvbnMsXG4gICAgICAgIGNvbnRleHQ6IGZvY3VzZWQgPT09IGZvY3VzZWRPcHRpb24gPyAnbWVudScgOiAndmFsdWUnLFxuICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgIGlzQXBwbGVEZXZpY2U6IGlzQXBwbGVEZXZpY2VcbiAgICAgIH07XG4gICAgICBmb2N1c01zZyA9IG1lc3NhZ2VzLm9uRm9jdXMob25Gb2N1c1Byb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvY3VzTXNnO1xuICB9LCBbZm9jdXNlZE9wdGlvbiwgZm9jdXNlZFZhbHVlLCBnZXRPcHRpb25MYWJlbCwgaXNPcHRpb25EaXNhYmxlZCwgbWVzc2FnZXMsIGZvY3VzYWJsZU9wdGlvbnMsIHNlbGVjdFZhbHVlLCBpc0FwcGxlRGV2aWNlXSk7XG4gIHZhciBhcmlhUmVzdWx0cyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHRzTXNnID0gJyc7XG4gICAgaWYgKG1lbnVJc09wZW4gJiYgb3B0aW9ucy5sZW5ndGggJiYgIWlzTG9hZGluZyAmJiBtZXNzYWdlcy5vbkZpbHRlcikge1xuICAgICAgdmFyIHJlc3VsdHNNZXNzYWdlID0gc2NyZWVuUmVhZGVyU3RhdHVzKHtcbiAgICAgICAgY291bnQ6IGZvY3VzYWJsZU9wdGlvbnMubGVuZ3RoXG4gICAgICB9KTtcbiAgICAgIHJlc3VsdHNNc2cgPSBtZXNzYWdlcy5vbkZpbHRlcih7XG4gICAgICAgIGlucHV0VmFsdWU6IGlucHV0VmFsdWUsXG4gICAgICAgIHJlc3VsdHNNZXNzYWdlOiByZXN1bHRzTWVzc2FnZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzTXNnO1xuICB9LCBbZm9jdXNhYmxlT3B0aW9ucywgaW5wdXRWYWx1ZSwgbWVudUlzT3BlbiwgbWVzc2FnZXMsIG9wdGlvbnMsIHNjcmVlblJlYWRlclN0YXR1cywgaXNMb2FkaW5nXSk7XG4gIHZhciBpc0luaXRpYWxGb2N1cyA9IChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnO1xuICB2YXIgYXJpYUd1aWRhbmNlID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGd1aWRhbmNlTXNnID0gJyc7XG4gICAgaWYgKG1lc3NhZ2VzLmd1aWRhbmNlKSB7XG4gICAgICB2YXIgY29udGV4dCA9IGZvY3VzZWRWYWx1ZSA/ICd2YWx1ZScgOiBtZW51SXNPcGVuID8gJ21lbnUnIDogJ2lucHV0JztcbiAgICAgIGd1aWRhbmNlTXNnID0gbWVzc2FnZXMuZ3VpZGFuY2Uoe1xuICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgaXNEaXNhYmxlZDogZm9jdXNlZE9wdGlvbiAmJiBpc09wdGlvbkRpc2FibGVkKGZvY3VzZWRPcHRpb24sIHNlbGVjdFZhbHVlKSxcbiAgICAgICAgaXNNdWx0aTogaXNNdWx0aSxcbiAgICAgICAgaXNTZWFyY2hhYmxlOiBpc1NlYXJjaGFibGUsXG4gICAgICAgIHRhYlNlbGVjdHNWYWx1ZTogdGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgICBpc0luaXRpYWxGb2N1czogaXNJbml0aWFsRm9jdXNcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ3VpZGFuY2VNc2c7XG4gIH0sIFthcmlhTGFiZWwsIGZvY3VzZWRPcHRpb24sIGZvY3VzZWRWYWx1ZSwgaXNNdWx0aSwgaXNPcHRpb25EaXNhYmxlZCwgaXNTZWFyY2hhYmxlLCBtZW51SXNPcGVuLCBtZXNzYWdlcywgc2VsZWN0VmFsdWUsIHRhYlNlbGVjdHNWYWx1ZSwgaXNJbml0aWFsRm9jdXNdKTtcbiAgdmFyIFNjcmVlblJlYWRlclRleHQgPSBqc3goRnJhZ21lbnQsIG51bGwsIGpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtc2VsZWN0aW9uXCJcbiAgfSwgYXJpYVNlbGVjdGVkKSwganN4KFwic3BhblwiLCB7XG4gICAgaWQ6IFwiYXJpYS1mb2N1c2VkXCJcbiAgfSwgYXJpYUZvY3VzZWQpLCBqc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLXJlc3VsdHNcIlxuICB9LCBhcmlhUmVzdWx0cyksIGpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtZ3VpZGFuY2VcIlxuICB9LCBhcmlhR3VpZGFuY2UpKTtcbiAgcmV0dXJuIGpzeChGcmFnbWVudCwgbnVsbCwganN4KEExMXlUZXh0JDEsIHtcbiAgICBpZDogaWRcbiAgfSwgaXNJbml0aWFsRm9jdXMgJiYgU2NyZWVuUmVhZGVyVGV4dCksIGpzeChBMTF5VGV4dCQxLCB7XG4gICAgXCJhcmlhLWxpdmVcIjogYXJpYUxpdmUsXG4gICAgXCJhcmlhLWF0b21pY1wiOiBcImZhbHNlXCIsXG4gICAgXCJhcmlhLXJlbGV2YW50XCI6IFwiYWRkaXRpb25zIHRleHRcIixcbiAgICByb2xlOiBcImxvZ1wiXG4gIH0sIGlzRm9jdXNlZCAmJiAhaXNJbml0aWFsRm9jdXMgJiYgU2NyZWVuUmVhZGVyVGV4dCkpO1xufTtcbnZhciBMaXZlUmVnaW9uJDEgPSBMaXZlUmVnaW9uO1xuXG52YXIgZGlhY3JpdGljcyA9IFt7XG4gIGJhc2U6ICdBJyxcbiAgbGV0dGVyczogXCJBXFx1MjRCNlxcdUZGMjFcXHhDMFxceEMxXFx4QzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx4QzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxceEM0XFx1MDFERVxcdTFFQTJcXHhDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCJcbn0sIHtcbiAgYmFzZTogJ0FBJyxcbiAgbGV0dGVyczogXCJcXHVBNzMyXCJcbn0sIHtcbiAgYmFzZTogJ0FFJyxcbiAgbGV0dGVyczogXCJcXHhDNlxcdTAxRkNcXHUwMUUyXCJcbn0sIHtcbiAgYmFzZTogJ0FPJyxcbiAgbGV0dGVyczogXCJcXHVBNzM0XCJcbn0sIHtcbiAgYmFzZTogJ0FVJyxcbiAgbGV0dGVyczogXCJcXHVBNzM2XCJcbn0sIHtcbiAgYmFzZTogJ0FWJyxcbiAgbGV0dGVyczogXCJcXHVBNzM4XFx1QTczQVwiXG59LCB7XG4gIGJhc2U6ICdBWScsXG4gIGxldHRlcnM6IFwiXFx1QTczQ1wiXG59LCB7XG4gIGJhc2U6ICdCJyxcbiAgbGV0dGVyczogXCJCXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MlxcdTAxODFcIlxufSwge1xuICBiYXNlOiAnQycsXG4gIGxldHRlcnM6IFwiQ1xcdTI0QjhcXHVGRjIzXFx1MDEwNlxcdTAxMDhcXHUwMTBBXFx1MDEwQ1xceEM3XFx1MUUwOFxcdTAxODdcXHUwMjNCXFx1QTczRVwiXG59LCB7XG4gIGJhc2U6ICdEJyxcbiAgbGV0dGVyczogXCJEXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QlxcdTAxOEFcXHUwMTg5XFx1QTc3OVwiXG59LCB7XG4gIGJhc2U6ICdEWicsXG4gIGxldHRlcnM6IFwiXFx1MDFGMVxcdTAxQzRcIlxufSwge1xuICBiYXNlOiAnRHonLFxuICBsZXR0ZXJzOiBcIlxcdTAxRjJcXHUwMUM1XCJcbn0sIHtcbiAgYmFzZTogJ0UnLFxuICBsZXR0ZXJzOiBcIkVcXHUyNEJBXFx1RkYyNVxceEM4XFx4QzlcXHhDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHhDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcIlxufSwge1xuICBiYXNlOiAnRicsXG4gIGxldHRlcnM6IFwiRlxcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCJcbn0sIHtcbiAgYmFzZTogJ0cnLFxuICBsZXR0ZXJzOiBcIkdcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVwiXG59LCB7XG4gIGJhc2U6ICdIJyxcbiAgbGV0dGVyczogXCJIXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiXG59LCB7XG4gIGJhc2U6ICdJJyxcbiAgbGV0dGVyczogXCJJXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIlxufSwge1xuICBiYXNlOiAnSicsXG4gIGxldHRlcnM6IFwiSlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcIlxufSwge1xuICBiYXNlOiAnSycsXG4gIGxldHRlcnM6IFwiS1xcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIlxufSwge1xuICBiYXNlOiAnTCcsXG4gIGxldHRlcnM6IFwiTFxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCJcbn0sIHtcbiAgYmFzZTogJ0xKJyxcbiAgbGV0dGVyczogXCJcXHUwMUM3XCJcbn0sIHtcbiAgYmFzZTogJ0xqJyxcbiAgbGV0dGVyczogXCJcXHUwMUM4XCJcbn0sIHtcbiAgYmFzZTogJ00nLFxuICBsZXR0ZXJzOiBcIk1cXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXCJcbn0sIHtcbiAgYmFzZTogJ04nLFxuICBsZXR0ZXJzOiBcIk5cXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMjIwXFx1MDE5RFxcdUE3OTBcXHVBN0E0XCJcbn0sIHtcbiAgYmFzZTogJ05KJyxcbiAgbGV0dGVyczogXCJcXHUwMUNBXCJcbn0sIHtcbiAgYmFzZTogJ05qJyxcbiAgbGV0dGVyczogXCJcXHUwMUNCXCJcbn0sIHtcbiAgYmFzZTogJ08nLFxuICBsZXR0ZXJzOiBcIk9cXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIlxufSwge1xuICBiYXNlOiAnT0knLFxuICBsZXR0ZXJzOiBcIlxcdTAxQTJcIlxufSwge1xuICBiYXNlOiAnT08nLFxuICBsZXR0ZXJzOiBcIlxcdUE3NEVcIlxufSwge1xuICBiYXNlOiAnT1UnLFxuICBsZXR0ZXJzOiBcIlxcdTAyMjJcIlxufSwge1xuICBiYXNlOiAnUCcsXG4gIGxldHRlcnM6IFwiUFxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiXG59LCB7XG4gIGJhc2U6ICdRJyxcbiAgbGV0dGVyczogXCJRXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIlxufSwge1xuICBiYXNlOiAnUicsXG4gIGxldHRlcnM6IFwiUlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIlxufSwge1xuICBiYXNlOiAnUycsXG4gIGxldHRlcnM6IFwiU1xcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIlxufSwge1xuICBiYXNlOiAnVCcsXG4gIGxldHRlcnM6IFwiVFxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCJcbn0sIHtcbiAgYmFzZTogJ1RaJyxcbiAgbGV0dGVyczogXCJcXHVBNzI4XCJcbn0sIHtcbiAgYmFzZTogJ1UnLFxuICBsZXR0ZXJzOiBcIlVcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCJcbn0sIHtcbiAgYmFzZTogJ1YnLFxuICBsZXR0ZXJzOiBcIlZcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCJcbn0sIHtcbiAgYmFzZTogJ1ZZJyxcbiAgbGV0dGVyczogXCJcXHVBNzYwXCJcbn0sIHtcbiAgYmFzZTogJ1cnLFxuICBsZXR0ZXJzOiBcIldcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIlxufSwge1xuICBiYXNlOiAnWCcsXG4gIGxldHRlcnM6IFwiWFxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIlxufSwge1xuICBiYXNlOiAnWScsXG4gIGxldHRlcnM6IFwiWVxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiXG59LCB7XG4gIGJhc2U6ICdaJyxcbiAgbGV0dGVyczogXCJaXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiXG59LCB7XG4gIGJhc2U6ICdhJyxcbiAgbGV0dGVyczogXCJhXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx4RTBcXHhFMVxceEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxceEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHhFNFxcdTAxREZcXHUxRUEzXFx4RTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFwiXG59LCB7XG4gIGJhc2U6ICdhYScsXG4gIGxldHRlcnM6IFwiXFx1QTczM1wiXG59LCB7XG4gIGJhc2U6ICdhZScsXG4gIGxldHRlcnM6IFwiXFx4RTZcXHUwMUZEXFx1MDFFM1wiXG59LCB7XG4gIGJhc2U6ICdhbycsXG4gIGxldHRlcnM6IFwiXFx1QTczNVwiXG59LCB7XG4gIGJhc2U6ICdhdScsXG4gIGxldHRlcnM6IFwiXFx1QTczN1wiXG59LCB7XG4gIGJhc2U6ICdhdicsXG4gIGxldHRlcnM6IFwiXFx1QTczOVxcdUE3M0JcIlxufSwge1xuICBiYXNlOiAnYXknLFxuICBsZXR0ZXJzOiBcIlxcdUE3M0RcIlxufSwge1xuICBiYXNlOiAnYicsXG4gIGxldHRlcnM6IFwiYlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXCJcbn0sIHtcbiAgYmFzZTogJ2MnLFxuICBsZXR0ZXJzOiBcImNcXHUyNEQyXFx1RkY0M1xcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHhFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCJcbn0sIHtcbiAgYmFzZTogJ2QnLFxuICBsZXR0ZXJzOiBcImRcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHVBNzdBXCJcbn0sIHtcbiAgYmFzZTogJ2R6JyxcbiAgbGV0dGVyczogXCJcXHUwMUYzXFx1MDFDNlwiXG59LCB7XG4gIGJhc2U6ICdlJyxcbiAgbGV0dGVyczogXCJlXFx1MjRENFxcdUZGNDVcXHhFOFxceEU5XFx4RUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx4RUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMjVCXFx1MDFERFwiXG59LCB7XG4gIGJhc2U6ICdmJyxcbiAgbGV0dGVyczogXCJmXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlxcdUE3N0NcIlxufSwge1xuICBiYXNlOiAnZycsXG4gIGxldHRlcnM6IFwiZ1xcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdTFENzlcXHVBNzdGXCJcbn0sIHtcbiAgYmFzZTogJ2gnLFxuICBsZXR0ZXJzOiBcImhcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiXG59LCB7XG4gIGJhc2U6ICdodicsXG4gIGxldHRlcnM6IFwiXFx1MDE5NVwiXG59LCB7XG4gIGJhc2U6ICdpJyxcbiAgbGV0dGVyczogXCJpXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIlxufSwge1xuICBiYXNlOiAnaicsXG4gIGxldHRlcnM6IFwialxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCJcbn0sIHtcbiAgYmFzZTogJ2snLFxuICBsZXR0ZXJzOiBcImtcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCJcbn0sIHtcbiAgYmFzZTogJ2wnLFxuICBsZXR0ZXJzOiBcImxcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcIlxufSwge1xuICBiYXNlOiAnbGonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQzlcIlxufSwge1xuICBiYXNlOiAnbScsXG4gIGxldHRlcnM6IFwibVxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIlxufSwge1xuICBiYXNlOiAnbicsXG4gIGxldHRlcnM6IFwiblxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XCJcbn0sIHtcbiAgYmFzZTogJ25qJyxcbiAgbGV0dGVyczogXCJcXHUwMUNDXCJcbn0sIHtcbiAgYmFzZTogJ28nLFxuICBsZXR0ZXJzOiBcIm9cXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdTAyNTRcXHVBNzRCXFx1QTc0RFxcdTAyNzVcIlxufSwge1xuICBiYXNlOiAnb2knLFxuICBsZXR0ZXJzOiBcIlxcdTAxQTNcIlxufSwge1xuICBiYXNlOiAnb3UnLFxuICBsZXR0ZXJzOiBcIlxcdTAyMjNcIlxufSwge1xuICBiYXNlOiAnb28nLFxuICBsZXR0ZXJzOiBcIlxcdUE3NEZcIlxufSwge1xuICBiYXNlOiAncCcsXG4gIGxldHRlcnM6IFwicFxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVwiXG59LCB7XG4gIGJhc2U6ICdxJyxcbiAgbGV0dGVyczogXCJxXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIlxufSwge1xuICBiYXNlOiAncicsXG4gIGxldHRlcnM6IFwiclxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIlxufSwge1xuICBiYXNlOiAncycsXG4gIGxldHRlcnM6IFwic1xcdTI0RTJcXHVGRjUzXFx4REZcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlwiXG59LCB7XG4gIGJhc2U6ICd0JyxcbiAgbGV0dGVyczogXCJ0XFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCJcbn0sIHtcbiAgYmFzZTogJ3R6JyxcbiAgbGV0dGVyczogXCJcXHVBNzI5XCJcbn0sIHtcbiAgYmFzZTogJ3UnLFxuICBsZXR0ZXJzOiBcInVcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCJcbn0sIHtcbiAgYmFzZTogJ3YnLFxuICBsZXR0ZXJzOiBcInZcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCJcbn0sIHtcbiAgYmFzZTogJ3Z5JyxcbiAgbGV0dGVyczogXCJcXHVBNzYxXCJcbn0sIHtcbiAgYmFzZTogJ3cnLFxuICBsZXR0ZXJzOiBcIndcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCJcbn0sIHtcbiAgYmFzZTogJ3gnLFxuICBsZXR0ZXJzOiBcInhcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCJcbn0sIHtcbiAgYmFzZTogJ3knLFxuICBsZXR0ZXJzOiBcInlcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiXG59LCB7XG4gIGJhc2U6ICd6JyxcbiAgbGV0dGVyczogXCJ6XFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiXG59XTtcbnZhciBhbnlEaWFjcml0aWMgPSBuZXcgUmVnRXhwKCdbJyArIGRpYWNyaXRpY3MubWFwKGZ1bmN0aW9uIChkKSB7XG4gIHJldHVybiBkLmxldHRlcnM7XG59KS5qb2luKCcnKSArICddJywgJ2cnKTtcbnZhciBkaWFjcml0aWNUb0Jhc2UgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgZGlhY3JpdGljcy5sZW5ndGg7IGkrKykge1xuICB2YXIgZGlhY3JpdGljID0gZGlhY3JpdGljc1tpXTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBkaWFjcml0aWMubGV0dGVycy5sZW5ndGg7IGorKykge1xuICAgIGRpYWNyaXRpY1RvQmFzZVtkaWFjcml0aWMubGV0dGVyc1tqXV0gPSBkaWFjcml0aWMuYmFzZTtcbiAgfVxufVxudmFyIHN0cmlwRGlhY3JpdGljcyA9IGZ1bmN0aW9uIHN0cmlwRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGFueURpYWNyaXRpYywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY1RvQmFzZVttYXRjaF07XG4gIH0pO1xufTtcblxudmFyIG1lbW9pemVkU3RyaXBEaWFjcml0aWNzRm9ySW5wdXQgPSBtZW1vaXplT25lKHN0cmlwRGlhY3JpdGljcyk7XG52YXIgdHJpbVN0cmluZyA9IGZ1bmN0aW9uIHRyaW1TdHJpbmcoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xufTtcbnZhciBkZWZhdWx0U3RyaW5naWZ5ID0gZnVuY3Rpb24gZGVmYXVsdFN0cmluZ2lmeShvcHRpb24pIHtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KG9wdGlvbi5sYWJlbCwgXCIgXCIpLmNvbmNhdChvcHRpb24udmFsdWUpO1xufTtcbnZhciBjcmVhdGVGaWx0ZXIgPSBmdW5jdGlvbiBjcmVhdGVGaWx0ZXIoY29uZmlnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAob3B0aW9uLCByYXdJbnB1dCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgIGlmIChvcHRpb24uZGF0YS5fX2lzTmV3X18pIHJldHVybiB0cnVlO1xuICAgIHZhciBfaWdub3JlQ2FzZSRpZ25vcmVBY2MgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgaWdub3JlQ2FzZTogdHJ1ZSxcbiAgICAgICAgaWdub3JlQWNjZW50czogdHJ1ZSxcbiAgICAgICAgc3RyaW5naWZ5OiBkZWZhdWx0U3RyaW5naWZ5LFxuICAgICAgICB0cmltOiB0cnVlLFxuICAgICAgICBtYXRjaEZyb206ICdhbnknXG4gICAgICB9LCBjb25maWcpLFxuICAgICAgaWdub3JlQ2FzZSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy5pZ25vcmVDYXNlLFxuICAgICAgaWdub3JlQWNjZW50cyA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy5pZ25vcmVBY2NlbnRzLFxuICAgICAgc3RyaW5naWZ5ID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLnN0cmluZ2lmeSxcbiAgICAgIHRyaW0gPSBfaWdub3JlQ2FzZSRpZ25vcmVBY2MudHJpbSxcbiAgICAgIG1hdGNoRnJvbSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy5tYXRjaEZyb207XG4gICAgdmFyIGlucHV0ID0gdHJpbSA/IHRyaW1TdHJpbmcocmF3SW5wdXQpIDogcmF3SW5wdXQ7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHRyaW0gPyB0cmltU3RyaW5nKHN0cmluZ2lmeShvcHRpb24pKSA6IHN0cmluZ2lmeShvcHRpb24pO1xuICAgIGlmIChpZ25vcmVDYXNlKSB7XG4gICAgICBpbnB1dCA9IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgaWYgKGlnbm9yZUFjY2VudHMpIHtcbiAgICAgIGlucHV0ID0gbWVtb2l6ZWRTdHJpcERpYWNyaXRpY3NGb3JJbnB1dChpbnB1dCk7XG4gICAgICBjYW5kaWRhdGUgPSBzdHJpcERpYWNyaXRpY3MoY2FuZGlkYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoRnJvbSA9PT0gJ3N0YXJ0JyA/IGNhbmRpZGF0ZS5zdWJzdHIoMCwgaW5wdXQubGVuZ3RoKSA9PT0gaW5wdXQgOiBjYW5kaWRhdGUuaW5kZXhPZihpbnB1dCkgPiAtMTtcbiAgfTtcbn07XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJpbm5lclJlZlwiXTtcbmZ1bmN0aW9uIER1bW15SW5wdXQoX3JlZikge1xuICB2YXIgaW5uZXJSZWYgPSBfcmVmLmlubmVyUmVmLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIC8vIFJlbW92ZSBhbmltYXRpb24gcHJvcHMgbm90IG1lYW50IGZvciBIVE1MIGVsZW1lbnRzXG4gIHZhciBmaWx0ZXJlZFByb3BzID0gcmVtb3ZlUHJvcHMocHJvcHMsICdvbkV4aXRlZCcsICdpbicsICdlbnRlcicsICdleGl0JywgJ2FwcGVhcicpO1xuICByZXR1cm4ganN4KFwiaW5wdXRcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogaW5uZXJSZWZcbiAgfSwgZmlsdGVyZWRQcm9wcywge1xuICAgIGNzczogLyojX19QVVJFX18qL2Nzcyh7XG4gICAgICBsYWJlbDogJ2R1bW15SW5wdXQnLFxuICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgIGJhY2tncm91bmQ6IDAsXG4gICAgICBib3JkZXI6IDAsXG4gICAgICAvLyBpbXBvcnRhbnQhIHRoaXMgaGlkZXMgdGhlIGZsYXNoaW5nIGN1cnNvclxuICAgICAgY2FyZXRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgICAgb3V0bGluZTogMCxcbiAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgd2lkdGg6IDEsXG4gICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIGRlc2t0b3BcbiAgICAgIGNvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBtb2JpbGUgd2hpbHN0IG1haW50YWluaW5nIFwic2Nyb2xsIGludG8gdmlld1wiIGJlaGF2aW91clxuICAgICAgbGVmdDogLTEwMCxcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKC4wMSknXG4gICAgfSwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJcIiA6IFwiO2xhYmVsOkR1bW15SW5wdXQ7XCIsIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IFwiXCIgOiBcIi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklrUjFiVzE1U1c1d2RYUXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVhsQ1RTSXNJbVpwYkdVaU9pSkVkVzF0ZVVsdWNIVjBMblJ6ZUNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaUJBYW5ONElHcHplQ0FxTDF4dWFXMXdiM0owSUhzZ1NsTllMQ0JTWldZZ2ZTQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZXlCcWMzZ2dmU0JtY205dElDZEFaVzF2ZEdsdmJpOXlaV0ZqZENjN1hHNXBiWEJ2Y25RZ2V5QnlaVzF2ZG1WUWNtOXdjeUI5SUdaeWIyMGdKeTR1TDNWMGFXeHpKenRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnWm5WdVkzUnBiMjRnUkhWdGJYbEpibkIxZENoN1hHNGdJR2x1Ym1WeVVtVm1MRnh1SUNBdUxpNXdjbTl3YzF4dWZUb2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkcGJuQjFkQ2RkSUNZZ2UxeHVJQ0J5WldGa2IyNXNlU0JwYm01bGNsSmxaam9nVW1WbVBFaFVUVXhKYm5CMWRFVnNaVzFsYm5RK08xeHVmU2tnZTF4dUlDQXZMeUJTWlcxdmRtVWdZVzVwYldGMGFXOXVJSEJ5YjNCeklHNXZkQ0J0WldGdWRDQm1iM0lnU0ZSTlRDQmxiR1Z0Wlc1MGMxeHVJQ0JqYjI1emRDQm1hV3gwWlhKbFpGQnliM0J6SUQwZ2NtVnRiM1psVUhKdmNITW9YRzRnSUNBZ2NISnZjSE1zWEc0Z0lDQWdKMjl1UlhocGRHVmtKeXhjYmlBZ0lDQW5hVzRuTEZ4dUlDQWdJQ2RsYm5SbGNpY3NYRzRnSUNBZ0oyVjRhWFFuTEZ4dUlDQWdJQ2RoY0hCbFlYSW5YRzRnSUNrN1hHNWNiaUFnY21WMGRYSnVJQ2hjYmlBZ0lDQThhVzV3ZFhSY2JpQWdJQ0FnSUhKbFpqMTdhVzV1WlhKU1pXWjlYRzRnSUNBZ0lDQjdMaTR1Wm1sc2RHVnlaV1JRY205d2MzMWNiaUFnSUNBZ0lHTnpjejE3ZTF4dUlDQWdJQ0FnSUNCc1lXSmxiRG9nSjJSMWJXMTVTVzV3ZFhRbkxGeHVJQ0FnSUNBZ0lDQXZMeUJuWlhRZ2NtbGtJRzltSUdGdWVTQmtaV1poZFd4MElITjBlV3hsYzF4dUlDQWdJQ0FnSUNCaVlXTnJaM0p2ZFc1a09pQXdMRnh1SUNBZ0lDQWdJQ0JpYjNKa1pYSTZJREFzWEc0Z0lDQWdJQ0FnSUM4dklHbHRjRzl5ZEdGdWRDRWdkR2hwY3lCb2FXUmxjeUIwYUdVZ1pteGhjMmhwYm1jZ1kzVnljMjl5WEc0Z0lDQWdJQ0FnSUdOaGNtVjBRMjlzYjNJNklDZDBjbUZ1YzNCaGNtVnVkQ2NzWEc0Z0lDQWdJQ0FnSUdadmJuUlRhWHBsT2lBbmFXNW9aWEpwZENjc1hHNGdJQ0FnSUNBZ0lHZHlhV1JCY21WaE9pQW5NU0F2SURFZ0x5QXlJQzhnTXljc1hHNGdJQ0FnSUNBZ0lHOTFkR3hwYm1VNklEQXNYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJREFzWEc0Z0lDQWdJQ0FnSUM4dklHbHRjRzl5ZEdGdWRDRWdkMmwwYUc5MWRDQmdkMmxrZEdoZ0lHSnliM2R6WlhKeklIZHZiaWQwSUdGc2JHOTNJR1p2WTNWelhHNGdJQ0FnSUNBZ0lIZHBaSFJvT2lBeExGeHVYRzRnSUNBZ0lDQWdJQzh2SUhKbGJXOTJaU0JqZFhKemIzSWdiMjRnWkdWemEzUnZjRnh1SUNBZ0lDQWdJQ0JqYjJ4dmNqb2dKM1J5WVc1emNHRnlaVzUwSnl4Y2JseHVJQ0FnSUNBZ0lDQXZMeUJ5WlcxdmRtVWdZM1Z5YzI5eUlHOXVJRzF2WW1sc1pTQjNhR2xzYzNRZ2JXRnBiblJoYVc1cGJtY2dYQ0p6WTNKdmJHd2dhVzUwYnlCMmFXVjNYQ0lnWW1Wb1lYWnBiM1Z5WEc0Z0lDQWdJQ0FnSUd4bFpuUTZJQzB4TURBc1hHNGdJQ0FnSUNBZ0lHOXdZV05wZEhrNklEQXNYRzRnSUNBZ0lDQWdJSEJ2YzJsMGFXOXVPaUFuY21Wc1lYUnBkbVVuTEZ4dUlDQWdJQ0FnSUNCMGNtRnVjMlp2Y20wNklDZHpZMkZzWlNndU1ERXBKeXhjYmlBZ0lDQWdJSDE5WEc0Z0lDQWdMejVjYmlBZ0tUdGNibjFjYmlKZGZRPT0gKi9cIilcbiAgfSkpO1xufVxuXG52YXIgY2FuY2VsU2Nyb2xsID0gZnVuY3Rpb24gY2FuY2VsU2Nyb2xsKGV2ZW50KSB7XG4gIGlmIChldmVudC5jYW5jZWxhYmxlKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbn07XG5mdW5jdGlvbiB1c2VTY3JvbGxDYXB0dXJlKF9yZWYpIHtcbiAgdmFyIGlzRW5hYmxlZCA9IF9yZWYuaXNFbmFibGVkLFxuICAgIG9uQm90dG9tQXJyaXZlID0gX3JlZi5vbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlID0gX3JlZi5vbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlID0gX3JlZi5vblRvcEFycml2ZSxcbiAgICBvblRvcExlYXZlID0gX3JlZi5vblRvcExlYXZlO1xuICB2YXIgaXNCb3R0b20gPSB1c2VSZWYoZmFsc2UpO1xuICB2YXIgaXNUb3AgPSB1c2VSZWYoZmFsc2UpO1xuICB2YXIgdG91Y2hTdGFydCA9IHVzZVJlZigwKTtcbiAgdmFyIHNjcm9sbFRhcmdldCA9IHVzZVJlZihudWxsKTtcbiAgdmFyIGhhbmRsZUV2ZW50RGVsdGEgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQsIGRlbHRhKSB7XG4gICAgaWYgKHNjcm9sbFRhcmdldC5jdXJyZW50ID09PSBudWxsKSByZXR1cm47XG4gICAgdmFyIF9zY3JvbGxUYXJnZXQkY3VycmVudCA9IHNjcm9sbFRhcmdldC5jdXJyZW50LFxuICAgICAgc2Nyb2xsVG9wID0gX3Njcm9sbFRhcmdldCRjdXJyZW50LnNjcm9sbFRvcCxcbiAgICAgIHNjcm9sbEhlaWdodCA9IF9zY3JvbGxUYXJnZXQkY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQgPSBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQuY2xpZW50SGVpZ2h0O1xuICAgIHZhciB0YXJnZXQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICB2YXIgaXNEZWx0YVBvc2l0aXZlID0gZGVsdGEgPiAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGwgPSBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgLSBzY3JvbGxUb3A7XG4gICAgdmFyIHNob3VsZENhbmNlbFNjcm9sbCA9IGZhbHNlO1xuXG4gICAgLy8gcmVzZXQgYm90dG9tL3RvcCBmbGFnc1xuICAgIGlmIChhdmFpbGFibGVTY3JvbGwgPiBkZWx0YSAmJiBpc0JvdHRvbS5jdXJyZW50KSB7XG4gICAgICBpZiAob25Cb3R0b21MZWF2ZSkgb25Cb3R0b21MZWF2ZShldmVudCk7XG4gICAgICBpc0JvdHRvbS5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpc0RlbHRhUG9zaXRpdmUgJiYgaXNUb3AuY3VycmVudCkge1xuICAgICAgaWYgKG9uVG9wTGVhdmUpIG9uVG9wTGVhdmUoZXZlbnQpO1xuICAgICAgaXNUb3AuY3VycmVudCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGJvdHRvbSBsaW1pdFxuICAgIGlmIChpc0RlbHRhUG9zaXRpdmUgJiYgZGVsdGEgPiBhdmFpbGFibGVTY3JvbGwpIHtcbiAgICAgIGlmIChvbkJvdHRvbUFycml2ZSAmJiAhaXNCb3R0b20uY3VycmVudCkge1xuICAgICAgICBvbkJvdHRvbUFycml2ZShldmVudCk7XG4gICAgICB9XG4gICAgICB0YXJnZXQuc2Nyb2xsVG9wID0gc2Nyb2xsSGVpZ2h0O1xuICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIGlzQm90dG9tLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAvLyB0b3AgbGltaXRcbiAgICB9IGVsc2UgaWYgKCFpc0RlbHRhUG9zaXRpdmUgJiYgLWRlbHRhID4gc2Nyb2xsVG9wKSB7XG4gICAgICBpZiAob25Ub3BBcnJpdmUgJiYgIWlzVG9wLmN1cnJlbnQpIHtcbiAgICAgICAgb25Ub3BBcnJpdmUoZXZlbnQpO1xuICAgICAgfVxuICAgICAgdGFyZ2V0LnNjcm9sbFRvcCA9IDA7XG4gICAgICBzaG91bGRDYW5jZWxTY3JvbGwgPSB0cnVlO1xuICAgICAgaXNUb3AuY3VycmVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gY2FuY2VsIHNjcm9sbFxuICAgIGlmIChzaG91bGRDYW5jZWxTY3JvbGwpIHtcbiAgICAgIGNhbmNlbFNjcm9sbChldmVudCk7XG4gICAgfVxuICB9LCBbb25Cb3R0b21BcnJpdmUsIG9uQm90dG9tTGVhdmUsIG9uVG9wQXJyaXZlLCBvblRvcExlYXZlXSk7XG4gIHZhciBvbldoZWVsID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaGFuZGxlRXZlbnREZWx0YShldmVudCwgZXZlbnQuZGVsdGFZKTtcbiAgfSwgW2hhbmRsZUV2ZW50RGVsdGFdKTtcbiAgdmFyIG9uVG91Y2hTdGFydCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIHNldCB0b3VjaCBzdGFydCBzbyB3ZSBjYW4gY2FsY3VsYXRlIHRvdWNobW92ZSBkZWx0YVxuICAgIHRvdWNoU3RhcnQuY3VycmVudCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk7XG4gIH0sIFtdKTtcbiAgdmFyIG9uVG91Y2hNb3ZlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIGRlbHRhWSA9IHRvdWNoU3RhcnQuY3VycmVudCAtIGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk7XG4gICAgaGFuZGxlRXZlbnREZWx0YShldmVudCwgZGVsdGFZKTtcbiAgfSwgW2hhbmRsZUV2ZW50RGVsdGFdKTtcbiAgdmFyIHN0YXJ0TGlzdGVuaW5nID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGVsKSB7XG4gICAgLy8gYmFpbCBlYXJseSBpZiBubyBlbGVtZW50IGlzIGF2YWlsYWJsZSB0byBhdHRhY2ggdG9cbiAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgdmFyIG5vdFBhc3NpdmUgPSBzdXBwb3J0c1Bhc3NpdmVFdmVudHMgPyB7XG4gICAgICBwYXNzaXZlOiBmYWxzZVxuICAgIH0gOiBmYWxzZTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwsIG5vdFBhc3NpdmUpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIG5vdFBhc3NpdmUpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlLCBub3RQYXNzaXZlKTtcbiAgfSwgW29uVG91Y2hNb3ZlLCBvblRvdWNoU3RhcnQsIG9uV2hlZWxdKTtcbiAgdmFyIHN0b3BMaXN0ZW5pbmcgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZWwpIHtcbiAgICAvLyBiYWlsIGVhcmx5IGlmIG5vIGVsZW1lbnQgaXMgYXZhaWxhYmxlIHRvIGRldGFjaCBmcm9tXG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCwgZmFsc2UpO1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIGZhbHNlKTtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgZmFsc2UpO1xuICB9LCBbb25Ub3VjaE1vdmUsIG9uVG91Y2hTdGFydCwgb25XaGVlbF0pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm47XG4gICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICBzdGFydExpc3RlbmluZyhlbGVtZW50KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc3RvcExpc3RlbmluZyhlbGVtZW50KTtcbiAgICB9O1xuICB9LCBbaXNFbmFibGVkLCBzdGFydExpc3RlbmluZywgc3RvcExpc3RlbmluZ10pO1xuICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBzY3JvbGxUYXJnZXQuY3VycmVudCA9IGVsZW1lbnQ7XG4gIH07XG59XG5cbnZhciBTVFlMRV9LRVlTID0gWydib3hTaXppbmcnLCAnaGVpZ2h0JywgJ292ZXJmbG93JywgJ3BhZGRpbmdSaWdodCcsICdwb3NpdGlvbiddO1xudmFyIExPQ0tfU1RZTEVTID0ge1xuICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgLy8gYWNjb3VudCBmb3IgcG9zc2libGUgZGVjbGFyYXRpb24gYHdpZHRoOiAxMDAlO2Agb24gYm9keVxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBoZWlnaHQ6ICcxMDAlJ1xufTtcbmZ1bmN0aW9uIHByZXZlbnRUb3VjaE1vdmUoZSkge1xuICBpZiAoZS5jYW5jZWxhYmxlKSBlLnByZXZlbnREZWZhdWx0KCk7XG59XG5mdW5jdGlvbiBhbGxvd1RvdWNoTW92ZShlKSB7XG4gIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG59XG5mdW5jdGlvbiBwcmV2ZW50SW5lcnRpYVNjcm9sbCgpIHtcbiAgdmFyIHRvcCA9IHRoaXMuc2Nyb2xsVG9wO1xuICB2YXIgdG90YWxTY3JvbGwgPSB0aGlzLnNjcm9sbEhlaWdodDtcbiAgdmFyIGN1cnJlbnRTY3JvbGwgPSB0b3AgKyB0aGlzLm9mZnNldEhlaWdodDtcbiAgaWYgKHRvcCA9PT0gMCkge1xuICAgIHRoaXMuc2Nyb2xsVG9wID0gMTtcbiAgfSBlbHNlIGlmIChjdXJyZW50U2Nyb2xsID09PSB0b3RhbFNjcm9sbCkge1xuICAgIHRoaXMuc2Nyb2xsVG9wID0gdG9wIC0gMTtcbiAgfVxufVxuXG4vLyBgb250b3VjaHN0YXJ0YCBjaGVjayB3b3JrcyBvbiBtb3N0IGJyb3dzZXJzXG4vLyBgbWF4VG91Y2hQb2ludHNgIHdvcmtzIG9uIElFMTAvMTEgYW5kIFN1cmZhY2VcbmZ1bmN0aW9uIGlzVG91Y2hEZXZpY2UoKSB7XG4gIHJldHVybiAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzO1xufVxudmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG52YXIgYWN0aXZlU2Nyb2xsTG9ja3MgPSAwO1xudmFyIGxpc3RlbmVyT3B0aW9ucyA9IHtcbiAgY2FwdHVyZTogZmFsc2UsXG4gIHBhc3NpdmU6IGZhbHNlXG59O1xuZnVuY3Rpb24gdXNlU2Nyb2xsTG9jayhfcmVmKSB7XG4gIHZhciBpc0VuYWJsZWQgPSBfcmVmLmlzRW5hYmxlZCxcbiAgICBfcmVmJGFjY291bnRGb3JTY3JvbGwgPSBfcmVmLmFjY291bnRGb3JTY3JvbGxiYXJzLFxuICAgIGFjY291bnRGb3JTY3JvbGxiYXJzID0gX3JlZiRhY2NvdW50Rm9yU2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRhY2NvdW50Rm9yU2Nyb2xsO1xuICB2YXIgb3JpZ2luYWxTdHlsZXMgPSB1c2VSZWYoe30pO1xuICB2YXIgc2Nyb2xsVGFyZ2V0ID0gdXNlUmVmKG51bGwpO1xuICB2YXIgYWRkU2Nyb2xsTG9jayA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgIGlmICghY2FuVXNlRE9NKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmJvZHk7XG4gICAgdmFyIHRhcmdldFN0eWxlID0gdGFyZ2V0ICYmIHRhcmdldC5zdHlsZTtcbiAgICBpZiAoYWNjb3VudEZvclNjcm9sbGJhcnMpIHtcbiAgICAgIC8vIHN0b3JlIGFueSBzdHlsZXMgYWxyZWFkeSBhcHBsaWVkIHRvIHRoZSBib2R5XG4gICAgICBTVFlMRV9LRVlTLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gdGFyZ2V0U3R5bGUgJiYgdGFyZ2V0U3R5bGVba2V5XTtcbiAgICAgICAgb3JpZ2luYWxTdHlsZXMuY3VycmVudFtrZXldID0gdmFsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gYXBwbHkgdGhlIGxvY2sgc3R5bGVzIGFuZCBwYWRkaW5nIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHNjcm9sbCBsb2NrXG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzICYmIGFjdGl2ZVNjcm9sbExvY2tzIDwgMSkge1xuICAgICAgdmFyIGN1cnJlbnRQYWRkaW5nID0gcGFyc2VJbnQob3JpZ2luYWxTdHlsZXMuY3VycmVudC5wYWRkaW5nUmlnaHQsIDEwKSB8fCAwO1xuICAgICAgdmFyIGNsaWVudFdpZHRoID0gZG9jdW1lbnQuYm9keSA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAwO1xuICAgICAgdmFyIGFkanVzdGVkUGFkZGluZyA9IHdpbmRvdy5pbm5lcldpZHRoIC0gY2xpZW50V2lkdGggKyBjdXJyZW50UGFkZGluZyB8fCAwO1xuICAgICAgT2JqZWN0LmtleXMoTE9DS19TVFlMRVMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gTE9DS19TVFlMRVNba2V5XTtcbiAgICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgICAgdGFyZ2V0U3R5bGVba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAodGFyZ2V0U3R5bGUpIHtcbiAgICAgICAgdGFyZ2V0U3R5bGUucGFkZGluZ1JpZ2h0ID0gXCJcIi5jb25jYXQoYWRqdXN0ZWRQYWRkaW5nLCBcInB4XCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFjY291bnQgZm9yIHRvdWNoIGRldmljZXNcbiAgICBpZiAodGFyZ2V0ICYmIGlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgLy8gTW9iaWxlIFNhZmFyaSBpZ25vcmVzIHsgb3ZlcmZsb3c6IGhpZGRlbiB9IGRlY2xhcmF0aW9uIG9uIHRoZSBib2R5LlxuICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnRUb3VjaE1vdmUsIGxpc3RlbmVyT3B0aW9ucyk7XG5cbiAgICAgIC8vIEFsbG93IHNjcm9sbCBvbiBwcm92aWRlZCB0YXJnZXRcbiAgICAgIGlmICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgcHJldmVudEluZXJ0aWFTY3JvbGwsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGFsbG93VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGluY3JlbWVudCBhY3RpdmUgc2Nyb2xsIGxvY2tzXG4gICAgYWN0aXZlU2Nyb2xsTG9ja3MgKz0gMTtcbiAgfSwgW2FjY291bnRGb3JTY3JvbGxiYXJzXSk7XG4gIHZhciByZW1vdmVTY3JvbGxMb2NrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHRvdWNoU2Nyb2xsVGFyZ2V0KSB7XG4gICAgaWYgKCFjYW5Vc2VET00pIHJldHVybjtcbiAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgdGFyZ2V0U3R5bGUgPSB0YXJnZXQgJiYgdGFyZ2V0LnN0eWxlO1xuXG4gICAgLy8gc2FmZWx5IGRlY3JlbWVudCBhY3RpdmUgc2Nyb2xsIGxvY2tzXG4gICAgYWN0aXZlU2Nyb2xsTG9ja3MgPSBNYXRoLm1heChhY3RpdmVTY3JvbGxMb2NrcyAtIDEsIDApO1xuXG4gICAgLy8gcmVhcHBseSBvcmlnaW5hbCBib2R5IHN0eWxlcywgaWYgYW55XG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzICYmIGFjdGl2ZVNjcm9sbExvY2tzIDwgMSkge1xuICAgICAgU1RZTEVfS0VZUy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IG9yaWdpbmFsU3R5bGVzLmN1cnJlbnRba2V5XTtcbiAgICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgICAgdGFyZ2V0U3R5bGVba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIHRvdWNoIGxpc3RlbmVyc1xuICAgIGlmICh0YXJnZXQgJiYgaXNUb3VjaERldmljZSgpKSB7XG4gICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgcHJldmVudFRvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIGlmICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgcHJldmVudEluZXJ0aWFTY3JvbGwsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGFsbG93VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2FjY291bnRGb3JTY3JvbGxiYXJzXSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFpc0VuYWJsZWQpIHJldHVybjtcbiAgICB2YXIgZWxlbWVudCA9IHNjcm9sbFRhcmdldC5jdXJyZW50O1xuICAgIGFkZFNjcm9sbExvY2soZWxlbWVudCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlbW92ZVNjcm9sbExvY2soZWxlbWVudCk7XG4gICAgfTtcbiAgfSwgW2lzRW5hYmxlZCwgYWRkU2Nyb2xsTG9jaywgcmVtb3ZlU2Nyb2xsTG9ja10pO1xuICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBzY3JvbGxUYXJnZXQuY3VycmVudCA9IGVsZW1lbnQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fJDEoKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxudmFyIGJsdXJTZWxlY3RJbnB1dCA9IGZ1bmN0aW9uIGJsdXJTZWxlY3RJbnB1dChldmVudCkge1xuICB2YXIgZWxlbWVudCA9IGV2ZW50LnRhcmdldDtcbiAgcmV0dXJuIGVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbn07XG52YXIgX3JlZjIkMSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgbmFtZTogXCIxa2ZkYjBlXCIsXG4gIHN0eWxlczogXCJwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MDt0b3A6MFwiXG59IDoge1xuICBuYW1lOiBcImJwOGN1YS1TY3JvbGxNYW5hZ2VyXCIsXG4gIHN0eWxlczogXCJwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MDt0b3A6MDtsYWJlbDpTY3JvbGxNYW5hZ2VyO1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWxOamNtOXNiRTFoYm1GblpYSXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVc5RVZTSXNJbVpwYkdVaU9pSlRZM0p2Ykd4TllXNWhaMlZ5TG5SemVDSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2lCQWFuTjRJR3B6ZUNBcUwxeHVhVzF3YjNKMElIc2dhbk40SUgwZ1puSnZiU0FuUUdWdGIzUnBiMjR2Y21WaFkzUW5PMXh1YVcxd2IzSjBJSHNnUm5KaFoyMWxiblFzSUZKbFlXTjBSV3hsYldWdWRDd2dVbVZtUTJGc2JHSmhZMnNzSUUxdmRYTmxSWFpsYm5RZ2ZTQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZFhObFUyTnliMnhzUTJGd2RIVnlaU0JtY205dElDY3VMM1Z6WlZOamNtOXNiRU5oY0hSMWNtVW5PMXh1YVcxd2IzSjBJSFZ6WlZOamNtOXNiRXh2WTJzZ1puSnZiU0FuTGk5MWMyVlRZM0p2Ykd4TWIyTnJKenRjYmx4dWFXNTBaWEptWVdObElGQnliM0J6SUh0Y2JpQWdjbVZoWkc5dWJIa2dZMmhwYkdSeVpXNDZJQ2h5WldZNklGSmxaa05oYkd4aVlXTnJQRWhVVFV4RmJHVnRaVzUwUGlrZ1BUNGdVbVZoWTNSRmJHVnRaVzUwTzF4dUlDQnlaV0ZrYjI1c2VTQnNiMk5yUlc1aFlteGxaRG9nWW05dmJHVmhianRjYmlBZ2NtVmhaRzl1YkhrZ1kyRndkSFZ5WlVWdVlXSnNaV1E2SUdKdmIyeGxZVzQ3WEc0Z0lISmxZV1J2Ym14NUlHOXVRbTkwZEc5dFFYSnlhWFpsUHpvZ0tHVjJaVzUwT2lCWGFHVmxiRVYyWlc1MElId2dWRzkxWTJoRmRtVnVkQ2tnUFQ0Z2RtOXBaRHRjYmlBZ2NtVmhaRzl1YkhrZ2IyNUNiM1IwYjIxTVpXRjJaVDg2SUNobGRtVnVkRG9nVjJobFpXeEZkbVZ1ZENCOElGUnZkV05vUlhabGJuUXBJRDArSUhadmFXUTdYRzRnSUhKbFlXUnZibXg1SUc5dVZHOXdRWEp5YVhabFB6b2dLR1YyWlc1ME9pQlhhR1ZsYkVWMlpXNTBJSHdnVkc5MVkyaEZkbVZ1ZENrZ1BUNGdkbTlwWkR0Y2JpQWdjbVZoWkc5dWJIa2diMjVVYjNCTVpXRjJaVDg2SUNobGRtVnVkRG9nVjJobFpXeEZkbVZ1ZENCOElGUnZkV05vUlhabGJuUXBJRDArSUhadmFXUTdYRzU5WEc1Y2JtTnZibk4wSUdKc2RYSlRaV3hsWTNSSmJuQjFkQ0E5SUNobGRtVnVkRG9nVFc5MWMyVkZkbVZ1ZER4SVZFMU1SR2wyUld4bGJXVnVkRDRwSUQwK0lIdGNiaUFnWTI5dWMzUWdaV3hsYldWdWRDQTlJR1YyWlc1MExuUmhjbWRsZENCaGN5QklWRTFNUkdsMlJXeGxiV1Z1ZER0Y2JpQWdjbVYwZFhKdUlDaGNiaUFnSUNCbGJHVnRaVzUwTG05M2JtVnlSRzlqZFcxbGJuUXVZV04wYVhabFJXeGxiV1Z1ZENBbUpseHVJQ0FnSUNobGJHVnRaVzUwTG05M2JtVnlSRzlqZFcxbGJuUXVZV04wYVhabFJXeGxiV1Z1ZENCaGN5QklWRTFNUld4bGJXVnVkQ2t1WW14MWNpZ3BYRzRnSUNrN1hHNTlPMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaUJUWTNKdmJHeE5ZVzVoWjJWeUtIdGNiaUFnWTJocGJHUnlaVzRzWEc0Z0lHeHZZMnRGYm1GaWJHVmtMRnh1SUNCallYQjBkWEpsUlc1aFlteGxaQ0E5SUhSeWRXVXNYRzRnSUc5dVFtOTBkRzl0UVhKeWFYWmxMRnh1SUNCdmJrSnZkSFJ2YlV4bFlYWmxMRnh1SUNCdmJsUnZjRUZ5Y21sMlpTeGNiaUFnYjI1VWIzQk1aV0YyWlN4Y2JuMDZJRkJ5YjNCektTQjdYRzRnSUdOdmJuTjBJSE5sZEZOamNtOXNiRU5oY0hSMWNtVlVZWEpuWlhRZ1BTQjFjMlZUWTNKdmJHeERZWEIwZFhKbEtIdGNiaUFnSUNCcGMwVnVZV0pzWldRNklHTmhjSFIxY21WRmJtRmliR1ZrTEZ4dUlDQWdJRzl1UW05MGRHOXRRWEp5YVhabExGeHVJQ0FnSUc5dVFtOTBkRzl0VEdWaGRtVXNYRzRnSUNBZ2IyNVViM0JCY25KcGRtVXNYRzRnSUNBZ2IyNVViM0JNWldGMlpTeGNiaUFnZlNrN1hHNGdJR052Ym5OMElITmxkRk5qY205c2JFeHZZMnRVWVhKblpYUWdQU0IxYzJWVFkzSnZiR3hNYjJOcktIc2dhWE5GYm1GaWJHVmtPaUJzYjJOclJXNWhZbXhsWkNCOUtUdGNibHh1SUNCamIyNXpkQ0IwWVhKblpYUlNaV1k2SUZKbFprTmhiR3hpWVdOclBFaFVUVXhGYkdWdFpXNTBQaUE5SUNobGJHVnRaVzUwS1NBOVBpQjdYRzRnSUNBZ2MyVjBVMk55YjJ4c1EyRndkSFZ5WlZSaGNtZGxkQ2hsYkdWdFpXNTBLVHRjYmlBZ0lDQnpaWFJUWTNKdmJHeE1iMk5yVkdGeVoyVjBLR1ZzWlcxbGJuUXBPMXh1SUNCOU8xeHVYRzRnSUhKbGRIVnliaUFvWEc0Z0lDQWdQRVp5WVdkdFpXNTBQbHh1SUNBZ0lDQWdlMnh2WTJ0RmJtRmliR1ZrSUNZbUlDaGNiaUFnSUNBZ0lDQWdQR1JwZGx4dUlDQWdJQ0FnSUNBZ0lHOXVRMnhwWTJzOWUySnNkWEpUWld4bFkzUkpibkIxZEgxY2JpQWdJQ0FnSUNBZ0lDQmpjM005ZTNzZ2NHOXphWFJwYjI0NklDZG1hWGhsWkNjc0lHeGxablE2SURBc0lHSnZkSFJ2YlRvZ01Dd2djbWxuYUhRNklEQXNJSFJ2Y0RvZ01DQjlmVnh1SUNBZ0lDQWdJQ0F2UGx4dUlDQWdJQ0FnS1gxY2JpQWdJQ0FnSUh0amFHbHNaSEpsYmloMFlYSm5aWFJTWldZcGZWeHVJQ0FnSUR3dlJuSmhaMjFsYm5RK1hHNGdJQ2s3WEc1OVhHNGlYWDA9ICovXCIsXG4gIHRvU3RyaW5nOiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfXyQxXG59O1xuZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcihfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgbG9ja0VuYWJsZWQgPSBfcmVmLmxvY2tFbmFibGVkLFxuICAgIF9yZWYkY2FwdHVyZUVuYWJsZWQgPSBfcmVmLmNhcHR1cmVFbmFibGVkLFxuICAgIGNhcHR1cmVFbmFibGVkID0gX3JlZiRjYXB0dXJlRW5hYmxlZCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkY2FwdHVyZUVuYWJsZWQsXG4gICAgb25Cb3R0b21BcnJpdmUgPSBfcmVmLm9uQm90dG9tQXJyaXZlLFxuICAgIG9uQm90dG9tTGVhdmUgPSBfcmVmLm9uQm90dG9tTGVhdmUsXG4gICAgb25Ub3BBcnJpdmUgPSBfcmVmLm9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUgPSBfcmVmLm9uVG9wTGVhdmU7XG4gIHZhciBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZTogb25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZTogb25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZTogb25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZTogb25Ub3BMZWF2ZVxuICB9KTtcbiAgdmFyIHNldFNjcm9sbExvY2tUYXJnZXQgPSB1c2VTY3JvbGxMb2NrKHtcbiAgICBpc0VuYWJsZWQ6IGxvY2tFbmFibGVkXG4gIH0pO1xuICB2YXIgdGFyZ2V0UmVmID0gZnVuY3Rpb24gdGFyZ2V0UmVmKGVsZW1lbnQpIHtcbiAgICBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0KGVsZW1lbnQpO1xuICAgIHNldFNjcm9sbExvY2tUYXJnZXQoZWxlbWVudCk7XG4gIH07XG4gIHJldHVybiBqc3goRnJhZ21lbnQsIG51bGwsIGxvY2tFbmFibGVkICYmIGpzeChcImRpdlwiLCB7XG4gICAgb25DbGljazogYmx1clNlbGVjdElucHV0LFxuICAgIGNzczogX3JlZjIkMVxuICB9KSwgY2hpbGRyZW4odGFyZ2V0UmVmKSk7XG59XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fKCkgeyByZXR1cm4gXCJZb3UgaGF2ZSB0cmllZCB0byBzdHJpbmdpZnkgb2JqZWN0IHJldHVybmVkIGZyb20gYGNzc2AgZnVuY3Rpb24uIEl0IGlzbid0IHN1cHBvc2VkIHRvIGJlIHVzZWQgZGlyZWN0bHkgKGUuZy4gYXMgdmFsdWUgb2YgdGhlIGBjbGFzc05hbWVgIHByb3ApLCBidXQgcmF0aGVyIGhhbmRlZCB0byBlbW90aW9uIHNvIGl0IGNhbiBoYW5kbGUgaXQgKGUuZy4gYXMgdmFsdWUgb2YgYGNzc2AgcHJvcCkuXCI7IH1cbnZhciBfcmVmMiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgbmFtZTogXCIxYTBybzRuLXJlcXVpcmVkSW5wdXRcIixcbiAgc3R5bGVzOiBcImxhYmVsOnJlcXVpcmVkSW5wdXQ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7d2lkdGg6MTAwJVwiXG59IDoge1xuICBuYW1lOiBcIjVra3hiMi1yZXF1aXJlZElucHV0LVJlcXVpcmVkSW5wdXRcIixcbiAgc3R5bGVzOiBcImxhYmVsOnJlcXVpcmVkSW5wdXQ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7d2lkdGg6MTAwJTtsYWJlbDpSZXF1aXJlZElucHV0O1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWxKbGNYVnBjbVZrU1c1d2RYUXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVdOSklpd2labWxzWlNJNklsSmxjWFZwY21Wa1NXNXdkWFF1ZEhONElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xSUVCcWMzZ2dhbk40SUNvdlhHNXBiWEJ2Y25RZ2V5QkdiMk4xYzBWMlpXNTBTR0Z1Wkd4bGNpd2dSblZ1WTNScGIyNURiMjF3YjI1bGJuUWdmU0JtY205dElDZHlaV0ZqZENjN1hHNXBiWEJ2Y25RZ2V5QnFjM2dnZlNCbWNtOXRJQ2RBWlcxdmRHbHZiaTl5WldGamRDYzdYRzVjYm1OdmJuTjBJRkpsY1hWcGNtVmtTVzV3ZFhRNklFWjFibU4wYVc5dVEyOXRjRzl1Wlc1MFBIdGNiaUFnY21WaFpHOXViSGtnYm1GdFpUODZJSE4wY21sdVp6dGNiaUFnY21WaFpHOXViSGtnYjI1R2IyTjFjem9nUm05amRYTkZkbVZ1ZEVoaGJtUnNaWEk4U0ZSTlRFbHVjSFYwUld4bGJXVnVkRDQ3WEc1OVBpQTlJQ2g3SUc1aGJXVXNJRzl1Um05amRYTWdmU2tnUFQ0Z0tGeHVJQ0E4YVc1d2RYUmNiaUFnSUNCeVpYRjFhWEpsWkZ4dUlDQWdJRzVoYldVOWUyNWhiV1Y5WEc0Z0lDQWdkR0ZpU1c1a1pYZzlleTB4ZlZ4dUlDQWdJR0Z5YVdFdGFHbGtaR1Z1UFZ3aWRISjFaVndpWEc0Z0lDQWdiMjVHYjJOMWN6MTdiMjVHYjJOMWMzMWNiaUFnSUNCamMzTTllM3RjYmlBZ0lDQWdJR3hoWW1Wc09pQW5jbVZ4ZFdseVpXUkpibkIxZENjc1hHNGdJQ0FnSUNCdmNHRmphWFI1T2lBd0xGeHVJQ0FnSUNBZ2NHOXBiblJsY2tWMlpXNTBjem9nSjI1dmJtVW5MRnh1SUNBZ0lDQWdjRzl6YVhScGIyNDZJQ2RoWW5OdmJIVjBaU2NzWEc0Z0lDQWdJQ0JpYjNSMGIyMDZJREFzWEc0Z0lDQWdJQ0JzWldaME9pQXdMRnh1SUNBZ0lDQWdjbWxuYUhRNklEQXNYRzRnSUNBZ0lDQjNhV1IwYURvZ0p6RXdNQ1VuTEZ4dUlDQWdJSDE5WEc0Z0lDQWdMeThnVUhKbGRtVnVkQ0JnVTNkcGRHTm9hVzVuSUdaeWIyMGdkVzVqYjI1MGNtOXNiR1ZrSUhSdklHTnZiblJ5YjJ4c1pXUmdJR1Z5Y205eVhHNGdJQ0FnZG1Gc2RXVTlYQ0pjSWx4dUlDQWdJRzl1UTJoaGJtZGxQWHNvS1NBOVBpQjdmWDFjYmlBZ0x6NWNiaWs3WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUZKbGNYVnBjbVZrU1c1d2RYUTdYRzRpWFgwPSAqL1wiLFxuICB0b1N0cmluZzogX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX19cbn07XG52YXIgUmVxdWlyZWRJbnB1dCA9IGZ1bmN0aW9uIFJlcXVpcmVkSW5wdXQoX3JlZikge1xuICB2YXIgbmFtZSA9IF9yZWYubmFtZSxcbiAgICBvbkZvY3VzID0gX3JlZi5vbkZvY3VzO1xuICByZXR1cm4ganN4KFwiaW5wdXRcIiwge1xuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGFiSW5kZXg6IC0xLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgb25Gb2N1czogb25Gb2N1cyxcbiAgICBjc3M6IF9yZWYyXG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgLFxuICAgIHZhbHVlOiBcIlwiLFxuICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHt9XG4gIH0pO1xufTtcbnZhciBSZXF1aXJlZElucHV0JDEgPSBSZXF1aXJlZElucHV0O1xuXG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cInVzZXItYWdlbnQtZGF0YS10eXBlc1wiIC8+XG5cbmZ1bmN0aW9uIHRlc3RQbGF0Zm9ybShyZSkge1xuICB2YXIgX3dpbmRvdyRuYXZpZ2F0b3IkdXNlO1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lm5hdmlnYXRvciAhPSBudWxsID8gcmUudGVzdCgoKF93aW5kb3ckbmF2aWdhdG9yJHVzZSA9IHdpbmRvdy5uYXZpZ2F0b3JbJ3VzZXJBZ2VudERhdGEnXSkgPT09IG51bGwgfHwgX3dpbmRvdyRuYXZpZ2F0b3IkdXNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfd2luZG93JG5hdmlnYXRvciR1c2UucGxhdGZvcm0pIHx8IHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0pIDogZmFsc2U7XG59XG5mdW5jdGlvbiBpc0lQaG9uZSgpIHtcbiAgcmV0dXJuIHRlc3RQbGF0Zm9ybSgvXmlQaG9uZS9pKTtcbn1cbmZ1bmN0aW9uIGlzTWFjKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eTWFjL2kpO1xufVxuZnVuY3Rpb24gaXNJUGFkKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eaVBhZC9pKSB8fFxuICAvLyBpUGFkT1MgMTMgbGllcyBhbmQgc2F5cyBpdCdzIGEgTWFjLCBidXQgd2UgY2FuIGRpc3Rpbmd1aXNoIGJ5IGRldGVjdGluZyB0b3VjaCBzdXBwb3J0LlxuICBpc01hYygpICYmIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDE7XG59XG5mdW5jdGlvbiBpc0lPUygpIHtcbiAgcmV0dXJuIGlzSVBob25lKCkgfHwgaXNJUGFkKCk7XG59XG5mdW5jdGlvbiBpc0FwcGxlRGV2aWNlKCkge1xuICByZXR1cm4gaXNNYWMoKSB8fCBpc0lPUygpO1xufVxuXG52YXIgZm9ybWF0R3JvdXBMYWJlbCA9IGZ1bmN0aW9uIGZvcm1hdEdyb3VwTGFiZWwoZ3JvdXApIHtcbiAgcmV0dXJuIGdyb3VwLmxhYmVsO1xufTtcbnZhciBnZXRPcHRpb25MYWJlbCQxID0gZnVuY3Rpb24gZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSB7XG4gIHJldHVybiBvcHRpb24ubGFiZWw7XG59O1xudmFyIGdldE9wdGlvblZhbHVlJDEgPSBmdW5jdGlvbiBnZXRPcHRpb25WYWx1ZShvcHRpb24pIHtcbiAgcmV0dXJuIG9wdGlvbi52YWx1ZTtcbn07XG52YXIgaXNPcHRpb25EaXNhYmxlZCA9IGZ1bmN0aW9uIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSB7XG4gIHJldHVybiAhIW9wdGlvbi5pc0Rpc2FibGVkO1xufTtcblxudmFyIGRlZmF1bHRTdHlsZXMgPSB7XG4gIGNsZWFySW5kaWNhdG9yOiBjbGVhckluZGljYXRvckNTUyxcbiAgY29udGFpbmVyOiBjb250YWluZXJDU1MsXG4gIGNvbnRyb2w6IGNzcyQxLFxuICBkcm9wZG93bkluZGljYXRvcjogZHJvcGRvd25JbmRpY2F0b3JDU1MsXG4gIGdyb3VwOiBncm91cENTUyxcbiAgZ3JvdXBIZWFkaW5nOiBncm91cEhlYWRpbmdDU1MsXG4gIGluZGljYXRvcnNDb250YWluZXI6IGluZGljYXRvcnNDb250YWluZXJDU1MsXG4gIGluZGljYXRvclNlcGFyYXRvcjogaW5kaWNhdG9yU2VwYXJhdG9yQ1NTLFxuICBpbnB1dDogaW5wdXRDU1MsXG4gIGxvYWRpbmdJbmRpY2F0b3I6IGxvYWRpbmdJbmRpY2F0b3JDU1MsXG4gIGxvYWRpbmdNZXNzYWdlOiBsb2FkaW5nTWVzc2FnZUNTUyxcbiAgbWVudTogbWVudUNTUyxcbiAgbWVudUxpc3Q6IG1lbnVMaXN0Q1NTLFxuICBtZW51UG9ydGFsOiBtZW51UG9ydGFsQ1NTLFxuICBtdWx0aVZhbHVlOiBtdWx0aVZhbHVlQ1NTLFxuICBtdWx0aVZhbHVlTGFiZWw6IG11bHRpVmFsdWVMYWJlbENTUyxcbiAgbXVsdGlWYWx1ZVJlbW92ZTogbXVsdGlWYWx1ZVJlbW92ZUNTUyxcbiAgbm9PcHRpb25zTWVzc2FnZTogbm9PcHRpb25zTWVzc2FnZUNTUyxcbiAgb3B0aW9uOiBvcHRpb25DU1MsXG4gIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlckNTUyxcbiAgc2luZ2xlVmFsdWU6IGNzcyQyLFxuICB2YWx1ZUNvbnRhaW5lcjogdmFsdWVDb250YWluZXJDU1Ncbn07XG4vLyBNZXJnZSBVdGlsaXR5XG4vLyBBbGxvd3MgY29uc3VtZXJzIHRvIGV4dGVuZCBhIGJhc2UgU2VsZWN0IHdpdGggYWRkaXRpb25hbCBzdHlsZXNcblxuZnVuY3Rpb24gbWVyZ2VTdHlsZXMoc291cmNlKSB7XG4gIHZhciB0YXJnZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAvLyBpbml0aWFsaXplIHdpdGggc291cmNlIHN0eWxlc1xuICB2YXIgc3R5bGVzID0gX29iamVjdFNwcmVhZCh7fSwgc291cmNlKTtcblxuICAvLyBtYXNzYWdlIGluIHRhcmdldCBzdHlsZXNcbiAgT2JqZWN0LmtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlBc1N0cmluZykge1xuICAgIHZhciBrZXkgPSBrZXlBc1N0cmluZztcbiAgICBpZiAoc291cmNlW2tleV0pIHtcbiAgICAgIHN0eWxlc1trZXldID0gZnVuY3Rpb24gKHJzQ3NzLCBwcm9wcykge1xuICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0oc291cmNlW2tleV0ocnNDc3MsIHByb3BzKSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzW2tleV0gPSB0YXJnZXRba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3R5bGVzO1xufVxuXG52YXIgY29sb3JzID0ge1xuICBwcmltYXJ5OiAnIzI2ODRGRicsXG4gIHByaW1hcnk3NTogJyM0QzlBRkYnLFxuICBwcmltYXJ5NTA6ICcjQjJENEZGJyxcbiAgcHJpbWFyeTI1OiAnI0RFRUJGRicsXG4gIGRhbmdlcjogJyNERTM1MEInLFxuICBkYW5nZXJMaWdodDogJyNGRkJEQUQnLFxuICBuZXV0cmFsMDogJ2hzbCgwLCAwJSwgMTAwJSknLFxuICBuZXV0cmFsNTogJ2hzbCgwLCAwJSwgOTUlKScsXG4gIG5ldXRyYWwxMDogJ2hzbCgwLCAwJSwgOTAlKScsXG4gIG5ldXRyYWwyMDogJ2hzbCgwLCAwJSwgODAlKScsXG4gIG5ldXRyYWwzMDogJ2hzbCgwLCAwJSwgNzAlKScsXG4gIG5ldXRyYWw0MDogJ2hzbCgwLCAwJSwgNjAlKScsXG4gIG5ldXRyYWw1MDogJ2hzbCgwLCAwJSwgNTAlKScsXG4gIG5ldXRyYWw2MDogJ2hzbCgwLCAwJSwgNDAlKScsXG4gIG5ldXRyYWw3MDogJ2hzbCgwLCAwJSwgMzAlKScsXG4gIG5ldXRyYWw4MDogJ2hzbCgwLCAwJSwgMjAlKScsXG4gIG5ldXRyYWw5MDogJ2hzbCgwLCAwJSwgMTAlKSdcbn07XG52YXIgYm9yZGVyUmFkaXVzID0gNDtcbi8vIFVzZWQgdG8gY2FsY3VsYXRlIGNvbnNpc3RlbnQgbWFyZ2luL3BhZGRpbmcgb24gZWxlbWVudHNcbnZhciBiYXNlVW5pdCA9IDQ7XG4vLyBUaGUgbWluaW11bSBoZWlnaHQgb2YgdGhlIGNvbnRyb2xcbnZhciBjb250cm9sSGVpZ2h0ID0gMzg7XG4vLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRyb2wgYW5kIG1lbnUgKi9cbnZhciBtZW51R3V0dGVyID0gYmFzZVVuaXQgKiAyO1xudmFyIHNwYWNpbmcgPSB7XG4gIGJhc2VVbml0OiBiYXNlVW5pdCxcbiAgY29udHJvbEhlaWdodDogY29udHJvbEhlaWdodCxcbiAgbWVudUd1dHRlcjogbWVudUd1dHRlclxufTtcbnZhciBkZWZhdWx0VGhlbWUgPSB7XG4gIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICBjb2xvcnM6IGNvbG9ycyxcbiAgc3BhY2luZzogc3BhY2luZ1xufTtcblxudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgJ2FyaWEtbGl2ZSc6ICdwb2xpdGUnLFxuICBiYWNrc3BhY2VSZW1vdmVzVmFsdWU6IHRydWUsXG4gIGJsdXJJbnB1dE9uU2VsZWN0OiBpc1RvdWNoQ2FwYWJsZSgpLFxuICBjYXB0dXJlTWVudVNjcm9sbDogIWlzVG91Y2hDYXBhYmxlKCksXG4gIGNsYXNzTmFtZXM6IHt9LFxuICBjbG9zZU1lbnVPblNlbGVjdDogdHJ1ZSxcbiAgY2xvc2VNZW51T25TY3JvbGw6IGZhbHNlLFxuICBjb21wb25lbnRzOiB7fSxcbiAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlOiB0cnVlLFxuICBlc2NhcGVDbGVhcnNWYWx1ZTogZmFsc2UsXG4gIGZpbHRlck9wdGlvbjogY3JlYXRlRmlsdGVyKCksXG4gIGZvcm1hdEdyb3VwTGFiZWw6IGZvcm1hdEdyb3VwTGFiZWwsXG4gIGdldE9wdGlvbkxhYmVsOiBnZXRPcHRpb25MYWJlbCQxLFxuICBnZXRPcHRpb25WYWx1ZTogZ2V0T3B0aW9uVmFsdWUkMSxcbiAgaXNEaXNhYmxlZDogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIGlzTXVsdGk6IGZhbHNlLFxuICBpc1J0bDogZmFsc2UsXG4gIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgaXNPcHRpb25EaXNhYmxlZDogaXNPcHRpb25EaXNhYmxlZCxcbiAgbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIGxvYWRpbmdNZXNzYWdlKCkge1xuICAgIHJldHVybiAnTG9hZGluZy4uLic7XG4gIH0sXG4gIG1heE1lbnVIZWlnaHQ6IDMwMCxcbiAgbWluTWVudUhlaWdodDogMTQwLFxuICBtZW51SXNPcGVuOiBmYWxzZSxcbiAgbWVudVBsYWNlbWVudDogJ2JvdHRvbScsXG4gIG1lbnVQb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgbWVudVNob3VsZEJsb2NrU2Nyb2xsOiBmYWxzZSxcbiAgbWVudVNob3VsZFNjcm9sbEludG9WaWV3OiAhaXNNb2JpbGVEZXZpY2UoKSxcbiAgbm9PcHRpb25zTWVzc2FnZTogZnVuY3Rpb24gbm9PcHRpb25zTWVzc2FnZSgpIHtcbiAgICByZXR1cm4gJ05vIG9wdGlvbnMnO1xuICB9LFxuICBvcGVuTWVudU9uRm9jdXM6IGZhbHNlLFxuICBvcGVuTWVudU9uQ2xpY2s6IHRydWUsXG4gIG9wdGlvbnM6IFtdLFxuICBwYWdlU2l6ZTogNSxcbiAgcGxhY2Vob2xkZXI6ICdTZWxlY3QuLi4nLFxuICBzY3JlZW5SZWFkZXJTdGF0dXM6IGZ1bmN0aW9uIHNjcmVlblJlYWRlclN0YXR1cyhfcmVmKSB7XG4gICAgdmFyIGNvdW50ID0gX3JlZi5jb3VudDtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoY291bnQsIFwiIHJlc3VsdFwiKS5jb25jYXQoY291bnQgIT09IDEgPyAncycgOiAnJywgXCIgYXZhaWxhYmxlXCIpO1xuICB9LFxuICBzdHlsZXM6IHt9LFxuICB0YWJJbmRleDogMCxcbiAgdGFiU2VsZWN0c1ZhbHVlOiB0cnVlLFxuICB1bnN0eWxlZDogZmFsc2Vcbn07XG5mdW5jdGlvbiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBpbmRleCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9pc09wdGlvbkRpc2FibGVkKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlKTtcbiAgdmFyIGlzU2VsZWN0ZWQgPSBfaXNPcHRpb25TZWxlY3RlZChwcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIHZhciBsYWJlbCA9IGdldE9wdGlvbkxhYmVsKHByb3BzLCBvcHRpb24pO1xuICB2YXIgdmFsdWUgPSBnZXRPcHRpb25WYWx1ZShwcm9wcywgb3B0aW9uKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnb3B0aW9uJyxcbiAgICBkYXRhOiBvcHRpb24sXG4gICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgIGxhYmVsOiBsYWJlbCxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgaW5kZXg6IGluZGV4XG4gIH07XG59XG5mdW5jdGlvbiBidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChncm91cE9yT3B0aW9uLCBncm91cE9yT3B0aW9uSW5kZXgpIHtcbiAgICBpZiAoJ29wdGlvbnMnIGluIGdyb3VwT3JPcHRpb24pIHtcbiAgICAgIHZhciBjYXRlZ29yaXplZE9wdGlvbnMgPSBncm91cE9yT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIG9wdGlvbkluZGV4KSB7XG4gICAgICAgIHJldHVybiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBvcHRpb25JbmRleCk7XG4gICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBpc0ZvY3VzYWJsZShwcm9wcywgY2F0ZWdvcml6ZWRPcHRpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gY2F0ZWdvcml6ZWRPcHRpb25zLmxlbmd0aCA+IDAgPyB7XG4gICAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICAgIGRhdGE6IGdyb3VwT3JPcHRpb24sXG4gICAgICAgIG9wdGlvbnM6IGNhdGVnb3JpemVkT3B0aW9ucyxcbiAgICAgICAgaW5kZXg6IGdyb3VwT3JPcHRpb25JbmRleFxuICAgICAgfSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIGNhdGVnb3JpemVkT3B0aW9uID0gdG9DYXRlZ29yaXplZE9wdGlvbihwcm9wcywgZ3JvdXBPck9wdGlvbiwgc2VsZWN0VmFsdWUsIGdyb3VwT3JPcHRpb25JbmRleCk7XG4gICAgcmV0dXJuIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikgPyBjYXRlZ29yaXplZE9wdGlvbiA6IHVuZGVmaW5lZDtcbiAgfSkuZmlsdGVyKG5vdE51bGxpc2gpO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhjYXRlZ29yaXplZE9wdGlvbnMpIHtcbiAgcmV0dXJuIGNhdGVnb3JpemVkT3B0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKG9wdGlvbnNBY2N1bXVsYXRvciwgY2F0ZWdvcml6ZWRPcHRpb24pIHtcbiAgICBpZiAoY2F0ZWdvcml6ZWRPcHRpb24udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2guYXBwbHkob3B0aW9uc0FjY3VtdWxhdG9yLCBfdG9Db25zdW1hYmxlQXJyYXkoY2F0ZWdvcml6ZWRPcHRpb24ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uLmRhdGE7XG4gICAgICB9KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zQWNjdW11bGF0b3IucHVzaChjYXRlZ29yaXplZE9wdGlvbi5kYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhjYXRlZ29yaXplZE9wdGlvbnMsIG9wdGlvbklkKSB7XG4gIHJldHVybiBjYXRlZ29yaXplZE9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChvcHRpb25zQWNjdW11bGF0b3IsIGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgaWYgKGNhdGVnb3JpemVkT3B0aW9uLnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgIG9wdGlvbnNBY2N1bXVsYXRvci5wdXNoLmFwcGx5KG9wdGlvbnNBY2N1bXVsYXRvciwgX3RvQ29uc3VtYWJsZUFycmF5KGNhdGVnb3JpemVkT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiBvcHRpb24uZGF0YSxcbiAgICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KVxuICAgICAgICB9O1xuICAgICAgfSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2goe1xuICAgICAgICBkYXRhOiBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkge1xuICByZXR1cm4gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikge1xuICB2YXIgX3Byb3BzJGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgIGlucHV0VmFsdWUgPSBfcHJvcHMkaW5wdXRWYWx1ZSA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkaW5wdXRWYWx1ZTtcbiAgdmFyIGRhdGEgPSBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgIGlzU2VsZWN0ZWQgPSBjYXRlZ29yaXplZE9wdGlvbi5pc1NlbGVjdGVkLFxuICAgIGxhYmVsID0gY2F0ZWdvcml6ZWRPcHRpb24ubGFiZWwsXG4gICAgdmFsdWUgPSBjYXRlZ29yaXplZE9wdGlvbi52YWx1ZTtcbiAgcmV0dXJuICghc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykgfHwgIWlzU2VsZWN0ZWQpICYmIF9maWx0ZXJPcHRpb24ocHJvcHMsIHtcbiAgICBsYWJlbDogbGFiZWwsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIGRhdGE6IGRhdGFcbiAgfSwgaW5wdXRWYWx1ZSk7XG59XG5mdW5jdGlvbiBnZXROZXh0Rm9jdXNlZFZhbHVlKHN0YXRlLCBuZXh0U2VsZWN0VmFsdWUpIHtcbiAgdmFyIGZvY3VzZWRWYWx1ZSA9IHN0YXRlLmZvY3VzZWRWYWx1ZSxcbiAgICBsYXN0U2VsZWN0VmFsdWUgPSBzdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgdmFyIGxhc3RGb2N1c2VkSW5kZXggPSBsYXN0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICBpZiAobGFzdEZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgdmFyIG5leHRGb2N1c2VkSW5kZXggPSBuZXh0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICAgIGlmIChuZXh0Rm9jdXNlZEluZGV4ID4gLTEpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkIHZhbHVlIGlzIHN0aWxsIGluIHRoZSBzZWxlY3RWYWx1ZSwgcmV0dXJuIGl0XG4gICAgICByZXR1cm4gZm9jdXNlZFZhbHVlO1xuICAgIH0gZWxzZSBpZiAobGFzdEZvY3VzZWRJbmRleCA8IG5leHRTZWxlY3RWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkVmFsdWUgaXMgbm90IHByZXNlbnQgaW4gdGhlIG5leHQgc2VsZWN0VmFsdWUgYXJyYXkgYnlcbiAgICAgIC8vIHJlZmVyZW5jZSwgc28gcmV0dXJuIHRoZSBuZXcgdmFsdWUgYXQgdGhlIHNhbWUgaW5kZXhcbiAgICAgIHJldHVybiBuZXh0U2VsZWN0VmFsdWVbbGFzdEZvY3VzZWRJbmRleF07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RGb2N1c2VkT3B0aW9uID0gc3RhdGUuZm9jdXNlZE9wdGlvbjtcbiAgcmV0dXJuIGxhc3RGb2N1c2VkT3B0aW9uICYmIG9wdGlvbnMuaW5kZXhPZihsYXN0Rm9jdXNlZE9wdGlvbikgPiAtMSA/IGxhc3RGb2N1c2VkT3B0aW9uIDogb3B0aW9uc1swXTtcbn1cbnZhciBnZXRGb2N1c2VkT3B0aW9uSWQgPSBmdW5jdGlvbiBnZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzZWRPcHRpb24pIHtcbiAgdmFyIF9mb2N1c2FibGVPcHRpb25zV2l0aDtcbiAgdmFyIGZvY3VzZWRPcHRpb25JZCA9IChfZm9jdXNhYmxlT3B0aW9uc1dpdGggPSBmb2N1c2FibGVPcHRpb25zV2l0aElkcy5maW5kKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmRhdGEgPT09IGZvY3VzZWRPcHRpb247XG4gIH0pKSA9PT0gbnVsbCB8fCBfZm9jdXNhYmxlT3B0aW9uc1dpdGggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mb2N1c2FibGVPcHRpb25zV2l0aC5pZDtcbiAgcmV0dXJuIGZvY3VzZWRPcHRpb25JZCB8fCBudWxsO1xufTtcbnZhciBnZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIGdldE9wdGlvbkxhYmVsKHByb3BzLCBkYXRhKSB7XG4gIHJldHVybiBwcm9wcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbn07XG52YXIgZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiBnZXRPcHRpb25WYWx1ZShwcm9wcywgZGF0YSkge1xuICByZXR1cm4gcHJvcHMuZ2V0T3B0aW9uVmFsdWUoZGF0YSk7XG59O1xuZnVuY3Rpb24gX2lzT3B0aW9uRGlzYWJsZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9wcy5pc09wdGlvbkRpc2FibGVkID09PSAnZnVuY3Rpb24nID8gcHJvcHMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24sIHNlbGVjdFZhbHVlKSA6IGZhbHNlO1xufVxuZnVuY3Rpb24gX2lzT3B0aW9uU2VsZWN0ZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgaWYgKHNlbGVjdFZhbHVlLmluZGV4T2Yob3B0aW9uKSA+IC0xKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiBwcm9wcy5pc09wdGlvblNlbGVjdGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb3BzLmlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZSA9IGdldE9wdGlvblZhbHVlKHByb3BzLCBvcHRpb24pO1xuICByZXR1cm4gc2VsZWN0VmFsdWUuc29tZShmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBnZXRPcHRpb25WYWx1ZShwcm9wcywgaSkgPT09IGNhbmRpZGF0ZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBfZmlsdGVyT3B0aW9uKHByb3BzLCBvcHRpb24sIGlucHV0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLmZpbHRlck9wdGlvbiA/IHByb3BzLmZpbHRlck9wdGlvbihvcHRpb24sIGlucHV0VmFsdWUpIDogdHJ1ZTtcbn1cbnZhciBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zID0gZnVuY3Rpb24gc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykge1xuICB2YXIgaGlkZVNlbGVjdGVkT3B0aW9ucyA9IHByb3BzLmhpZGVTZWxlY3RlZE9wdGlvbnMsXG4gICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGk7XG4gIGlmIChoaWRlU2VsZWN0ZWRPcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICByZXR1cm4gaGlkZVNlbGVjdGVkT3B0aW9ucztcbn07XG52YXIgaW5zdGFuY2VJZCA9IDE7XG52YXIgU2VsZWN0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTZWxlY3QsIF9Db21wb25lbnQpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNlbGVjdCk7XG4gIC8vIE1pc2MuIEluc3RhbmNlIFByb3BlcnRpZXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gVE9ET1xuXG4gIC8vIFJlZnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGZ1bmN0aW9uIFNlbGVjdChfcHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNlbGVjdCk7XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBfcHJvcHMpO1xuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgYXJpYVNlbGVjdGlvbjogbnVsbCxcbiAgICAgIGZvY3VzZWRPcHRpb246IG51bGwsXG4gICAgICBmb2N1c2VkT3B0aW9uSWQ6IG51bGwsXG4gICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogW10sXG4gICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICBpbnB1dElzSGlkZGVuOiBmYWxzZSxcbiAgICAgIGlzRm9jdXNlZDogZmFsc2UsXG4gICAgICBzZWxlY3RWYWx1ZTogW10sXG4gICAgICBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZTogZmFsc2UsXG4gICAgICBwcmV2V2FzRm9jdXNlZDogZmFsc2UsXG4gICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZQcm9wczogdW5kZWZpbmVkLFxuICAgICAgaW5zdGFuY2VQcmVmaXg6ICcnXG4gICAgfTtcbiAgICBfdGhpcy5ibG9ja09wdGlvbkhvdmVyID0gZmFsc2U7XG4gICAgX3RoaXMuaXNDb21wb3NpbmcgPSBmYWxzZTtcbiAgICBfdGhpcy5jb21tb25Qcm9wcyA9IHZvaWQgMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hZID0gMDtcbiAgICBfdGhpcy5vcGVuQWZ0ZXJGb2N1cyA9IGZhbHNlO1xuICAgIF90aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSB2b2lkIDA7XG4gICAgX3RoaXMuaXNBcHBsZURldmljZSA9IGlzQXBwbGVEZXZpY2UoKTtcbiAgICBfdGhpcy5jb250cm9sUmVmID0gbnVsbDtcbiAgICBfdGhpcy5nZXRDb250cm9sUmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMuY29udHJvbFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzZWRPcHRpb25SZWYgPSBudWxsO1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25SZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5mb2N1c2VkT3B0aW9uUmVmID0gcmVmO1xuICAgIH07XG4gICAgX3RoaXMubWVudUxpc3RSZWYgPSBudWxsO1xuICAgIF90aGlzLmdldE1lbnVMaXN0UmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMubWVudUxpc3RSZWYgPSByZWY7XG4gICAgfTtcbiAgICBfdGhpcy5pbnB1dFJlZiA9IG51bGw7XG4gICAgX3RoaXMuZ2V0SW5wdXRSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5pbnB1dFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzID0gX3RoaXMuZm9jdXNJbnB1dDtcbiAgICBfdGhpcy5ibHVyID0gX3RoaXMuYmx1cklucHV0O1xuICAgIF90aGlzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgb25DaGFuZ2UgPSBfdGhpcyRwcm9wcy5vbkNoYW5nZSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzLm5hbWU7XG4gICAgICBhY3Rpb25NZXRhLm5hbWUgPSBuYW1lO1xuICAgICAgX3RoaXMuYXJpYU9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9O1xuICAgIF90aGlzLnNldFZhbHVlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb24sIG9wdGlvbikge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICBjbG9zZU1lbnVPblNlbGVjdCA9IF90aGlzJHByb3BzMi5jbG9zZU1lbnVPblNlbGVjdCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMi5pc011bHRpLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHMyLmlucHV0VmFsdWU7XG4gICAgICBfdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ3NldC12YWx1ZScsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIGlmIChjbG9zZU1lbnVPblNlbGVjdCkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIC8vIHdoZW4gdGhlIHNlbGVjdCB2YWx1ZSBzaG91bGQgY2hhbmdlLCB3ZSBzaG91bGQgcmVzZXQgZm9jdXNlZFZhbHVlXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlLCB7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBvcHRpb246IG9wdGlvblxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5zZWxlY3RPcHRpb24gPSBmdW5jdGlvbiAobmV3VmFsdWUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgYmx1cklucHV0T25TZWxlY3QgPSBfdGhpcyRwcm9wczMuYmx1cklucHV0T25TZWxlY3QsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMy5uYW1lO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZGVzZWxlY3RlZCA9IGlzTXVsdGkgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChuZXdWYWx1ZSwgc2VsZWN0VmFsdWUpO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSBfdGhpcy5pc09wdGlvbkRpc2FibGVkKG5ld1ZhbHVlLCBzZWxlY3RWYWx1ZSk7XG4gICAgICBpZiAoZGVzZWxlY3RlZCkge1xuICAgICAgICB2YXIgY2FuZGlkYXRlID0gX3RoaXMuZ2V0T3B0aW9uVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICBfdGhpcy5zZXRWYWx1ZShtdWx0aVZhbHVlQXNWYWx1ZShzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZ2V0T3B0aW9uVmFsdWUoaSkgIT09IGNhbmRpZGF0ZTtcbiAgICAgICAgfSkpLCAnZGVzZWxlY3Qtb3B0aW9uJywgbmV3VmFsdWUpO1xuICAgICAgfSBlbHNlIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgICAvLyBTZWxlY3Qgb3B0aW9uIGlmIG9wdGlvbiBpcyBub3QgZGlzYWJsZWRcbiAgICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShtdWx0aVZhbHVlQXNWYWx1ZShbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHNlbGVjdFZhbHVlKSwgW25ld1ZhbHVlXSkpLCAnc2VsZWN0LW9wdGlvbicsIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShzaW5nbGVWYWx1ZUFzVmFsdWUobmV3VmFsdWUpLCAnc2VsZWN0LW9wdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5hcmlhT25DaGFuZ2Uoc2luZ2xlVmFsdWVBc1ZhbHVlKG5ld1ZhbHVlKSwge1xuICAgICAgICAgIGFjdGlvbjogJ3NlbGVjdC1vcHRpb24nLFxuICAgICAgICAgIG9wdGlvbjogbmV3VmFsdWUsXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGJsdXJJbnB1dE9uU2VsZWN0KSB7XG4gICAgICAgIF90aGlzLmJsdXJJbnB1dCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMucmVtb3ZlVmFsdWUgPSBmdW5jdGlvbiAocmVtb3ZlZFZhbHVlKSB7XG4gICAgICB2YXIgaXNNdWx0aSA9IF90aGlzLnByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBjYW5kaWRhdGUgPSBfdGhpcy5nZXRPcHRpb25WYWx1ZShyZW1vdmVkVmFsdWUpO1xuICAgICAgdmFyIG5ld1ZhbHVlQXJyYXkgPSBzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmdldE9wdGlvblZhbHVlKGkpICE9PSBjYW5kaWRhdGU7XG4gICAgICB9KTtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IHZhbHVlVGVybmFyeShpc011bHRpLCBuZXdWYWx1ZUFycmF5LCBuZXdWYWx1ZUFycmF5WzBdIHx8IG51bGwpO1xuICAgICAgX3RoaXMub25DaGFuZ2UobmV3VmFsdWUsIHtcbiAgICAgICAgYWN0aW9uOiAncmVtb3ZlLXZhbHVlJyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlOiByZW1vdmVkVmFsdWVcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH07XG4gICAgX3RoaXMuY2xlYXJWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgICAgX3RoaXMub25DaGFuZ2UodmFsdWVUZXJuYXJ5KF90aGlzLnByb3BzLmlzTXVsdGksIFtdLCBudWxsKSwge1xuICAgICAgICBhY3Rpb246ICdjbGVhcicsXG4gICAgICAgIHJlbW92ZWRWYWx1ZXM6IHNlbGVjdFZhbHVlXG4gICAgICB9KTtcbiAgICB9O1xuICAgIF90aGlzLnBvcFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGlzTXVsdGkgPSBfdGhpcy5wcm9wcy5pc011bHRpO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgbGFzdFNlbGVjdGVkVmFsdWUgPSBzZWxlY3RWYWx1ZVtzZWxlY3RWYWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgIHZhciBuZXdWYWx1ZUFycmF5ID0gc2VsZWN0VmFsdWUuc2xpY2UoMCwgc2VsZWN0VmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICB2YXIgbmV3VmFsdWUgPSB2YWx1ZVRlcm5hcnkoaXNNdWx0aSwgbmV3VmFsdWVBcnJheSwgbmV3VmFsdWVBcnJheVswXSB8fCBudWxsKTtcbiAgICAgIGlmIChsYXN0U2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICBfdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSwge1xuICAgICAgICAgIGFjdGlvbjogJ3BvcC12YWx1ZScsXG4gICAgICAgICAgcmVtb3ZlZFZhbHVlOiBsYXN0U2VsZWN0ZWRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25JZCA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICByZXR1cm4gZ2V0Rm9jdXNlZE9wdGlvbklkKF90aGlzLnN0YXRlLmZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkRm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMoYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlKSwgX3RoaXMuZ2V0RWxlbWVudElkKCdvcHRpb24nKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICB9O1xuICAgIF90aGlzLmN4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xhc3NOYW1lcy5hcHBseSh2b2lkIDAsIFtfdGhpcy5wcm9wcy5jbGFzc05hbWVQcmVmaXhdLmNvbmNhdChhcmdzKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICByZXR1cm4gZ2V0T3B0aW9uTGFiZWwoX3RoaXMucHJvcHMsIGRhdGEpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgcmV0dXJuIGdldE9wdGlvblZhbHVlKF90aGlzLnByb3BzLCBkYXRhKTtcbiAgICB9O1xuICAgIF90aGlzLmdldFN0eWxlcyA9IGZ1bmN0aW9uIChrZXksIHByb3BzKSB7XG4gICAgICB2YXIgdW5zdHlsZWQgPSBfdGhpcy5wcm9wcy51bnN0eWxlZDtcbiAgICAgIHZhciBiYXNlID0gZGVmYXVsdFN0eWxlc1trZXldKHByb3BzLCB1bnN0eWxlZCk7XG4gICAgICBiYXNlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICAgIHZhciBjdXN0b20gPSBfdGhpcy5wcm9wcy5zdHlsZXNba2V5XTtcbiAgICAgIHJldHVybiBjdXN0b20gPyBjdXN0b20oYmFzZSwgcHJvcHMpIDogYmFzZTtcbiAgICB9O1xuICAgIF90aGlzLmdldENsYXNzTmFtZXMgPSBmdW5jdGlvbiAoa2V5LCBwcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzJGNsYXNzTmFtZSwgX3RoaXMkcHJvcHMkY2xhc3NOYW1lMjtcbiAgICAgIHJldHVybiAoX3RoaXMkcHJvcHMkY2xhc3NOYW1lID0gKF90aGlzJHByb3BzJGNsYXNzTmFtZTIgPSBfdGhpcy5wcm9wcy5jbGFzc05hbWVzKVtrZXldKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGNsYXNzTmFtZS5jYWxsKF90aGlzJHByb3BzJGNsYXNzTmFtZTIsIHByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEVsZW1lbnRJZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQoX3RoaXMuc3RhdGUuaW5zdGFuY2VQcmVmaXgsIFwiLVwiKS5jb25jYXQoZWxlbWVudCk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDb21wb25lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRDb21wb25lbnRzKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDYXRlZ29yaXplZE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMubWVudUlzT3BlbiA/IF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5tZW51SXNPcGVuID8gX3RoaXMuYnVpbGRGb2N1c2FibGVPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmFyaWFPbkNoYW5nZSA9IGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBhcmlhU2VsZWN0aW9uOiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfSwgYWN0aW9uTWV0YSlcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25NZW51TW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uTWVudU1vdXNlTW92ZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciA9IGZhbHNlO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sTW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAvLyBFdmVudCBjYXB0dXJlZCBieSBkcm9wZG93biBpbmRpY2F0b3JcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcGVuTWVudU9uQ2xpY2sgPSBfdGhpcy5wcm9wcy5vcGVuTWVudU9uQ2xpY2s7XG4gICAgICBpZiAoIV90aGlzLnN0YXRlLmlzRm9jdXNlZCkge1xuICAgICAgICBpZiAob3Blbk1lbnVPbkNsaWNrKSB7XG4gICAgICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH0gZWxzZSBpZiAoIV90aGlzLnByb3BzLm1lbnVJc09wZW4pIHtcbiAgICAgICAgaWYgKG9wZW5NZW51T25DbGljaykge1xuICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF90aGlzLnByb3BzLmlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNC5pc011bHRpLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM0Lm1lbnVJc09wZW47XG4gICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLm9wZW5BZnRlckZvY3VzID0gZmFsc2U7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RvdWNoZW5kJykge1xuICAgICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uU2Nyb2xsID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAodHlwZW9mIF90aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGlzRG9jdW1lbnRFbGVtZW50KGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICBfdGhpcy5wcm9wcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBfdGhpcy5wcm9wcy5jbG9zZU1lbnVPblNjcm9sbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAoX3RoaXMucHJvcHMuY2xvc2VNZW51T25TY3JvbGwoZXZlbnQpKSB7XG4gICAgICAgICAgX3RoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvblN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuaXNDb21wb3NpbmcgPSB0cnVlO1xuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvbkVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmlzQ29tcG9zaW5nID0gZmFsc2U7XG4gICAgfTtcbiAgICBfdGhpcy5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgIHZhciB0b3VjaGVzID0gX3JlZjIudG91Y2hlcztcbiAgICAgIHZhciB0b3VjaCA9IHRvdWNoZXMgJiYgdG91Y2hlcy5pdGVtKDApO1xuICAgICAgaWYgKCF0b3VjaCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gdG91Y2guY2xpZW50WDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSB0b3VjaC5jbGllbnRZO1xuICAgICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hNb3ZlID0gZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IF9yZWYzLnRvdWNoZXM7XG4gICAgICB2YXIgdG91Y2ggPSB0b3VjaGVzICYmIHRvdWNoZXMuaXRlbSgwKTtcbiAgICAgIGlmICghdG91Y2gpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGRlbHRhWCA9IE1hdGguYWJzKHRvdWNoLmNsaWVudFggLSBfdGhpcy5pbml0aWFsVG91Y2hYKTtcbiAgICAgIHZhciBkZWx0YVkgPSBNYXRoLmFicyh0b3VjaC5jbGllbnRZIC0gX3RoaXMuaW5pdGlhbFRvdWNoWSk7XG4gICAgICB2YXIgbW92ZVRocmVzaG9sZCA9IDU7XG4gICAgICBfdGhpcy51c2VySXNEcmFnZ2luZyA9IGRlbHRhWCA+IG1vdmVUaHJlc2hvbGQgfHwgZGVsdGFZID4gbW92ZVRocmVzaG9sZDtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgICAvLyBjbG9zZSB0aGUgbWVudSBpZiB0aGUgdXNlciB0YXBzIG91dHNpZGVcbiAgICAgIC8vIHdlJ3JlIGNoZWNraW5nIG9uIGV2ZW50LnRhcmdldCBoZXJlIGluc3RlYWQgb2YgZXZlbnQuY3VycmVudFRhcmdldCwgYmVjYXVzZSB3ZSB3YW50IHRvIGFzc2VydCBpbmZvcm1hdGlvblxuICAgICAgLy8gb24gZXZlbnRzIG9uIGNoaWxkIGVsZW1lbnRzLCBub3QgdGhlIGRvY3VtZW50ICh3aGljaCB3ZSd2ZSBhdHRhY2hlZCB0aGlzIGhhbmRsZXIgdG8pLlxuICAgICAgaWYgKF90aGlzLmNvbnRyb2xSZWYgJiYgIV90aGlzLmNvbnRyb2xSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiBfdGhpcy5tZW51TGlzdFJlZiAmJiAhX3RoaXMubWVudUxpc3RSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICBfdGhpcy5ibHVySW5wdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzZXQgbW92ZSB2YXJzXG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSAwO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuICAgICAgX3RoaXMub25Db250cm9sTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkNsZWFySW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLmhhbmRsZUlucHV0Q2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgdmFyIGlucHV0VmFsdWUgPSBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwge1xuICAgICAgICBhY3Rpb246ICdpbnB1dC1jaGFuZ2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogcHJldklucHV0VmFsdWVcbiAgICAgIH0pO1xuICAgICAgaWYgKCFfdGhpcy5wcm9wcy5tZW51SXNPcGVuKSB7XG4gICAgICAgIF90aGlzLm9uTWVudU9wZW4oKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRGb2N1cyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25Gb2N1cyhldmVudCk7XG4gICAgICB9XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBpZiAoX3RoaXMub3BlbkFmdGVyRm9jdXMgfHwgX3RoaXMucHJvcHMub3Blbk1lbnVPbkZvY3VzKSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRCbHVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgaWYgKF90aGlzLm1lbnVMaXN0UmVmICYmIF90aGlzLm1lbnVMaXN0UmVmLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIF90aGlzLmlucHV0UmVmLmZvY3VzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25CbHVyKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgYWN0aW9uOiAnaW5wdXQtYmx1cicsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBwcmV2SW5wdXRWYWx1ZVxuICAgICAgfSk7XG4gICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25PcHRpb25Ib3ZlciA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICBpZiAoX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciB8fCBfdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uID09PSBmb2N1c2VkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcHRpb25zID0gX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb25JbmRleCA9IG9wdGlvbnMuaW5kZXhPZihmb2N1c2VkT3B0aW9uKTtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiBmb2N1c2VkT3B0aW9uSW5kZXggPiAtMSA/IF90aGlzLmdldEZvY3VzZWRPcHRpb25JZChmb2N1c2VkT3B0aW9uKSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMuc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLm9uVmFsdWVJbnB1dEZvY3VzID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBfdGhpcy5mb2N1cygpO1xuICAgIH07XG4gICAgX3RoaXMub25LZXlEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczUuaXNNdWx0aSxcbiAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlID0gX3RoaXMkcHJvcHM1LmJhY2tzcGFjZVJlbW92ZXNWYWx1ZSxcbiAgICAgICAgZXNjYXBlQ2xlYXJzVmFsdWUgPSBfdGhpcyRwcm9wczUuZXNjYXBlQ2xlYXJzVmFsdWUsXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczUuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNDbGVhcmFibGUgPSBfdGhpcyRwcm9wczUuaXNDbGVhcmFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczUuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNS5tZW51SXNPcGVuLFxuICAgICAgICBvbktleURvd24gPSBfdGhpcyRwcm9wczUub25LZXlEb3duLFxuICAgICAgICB0YWJTZWxlY3RzVmFsdWUgPSBfdGhpcyRwcm9wczUudGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgICBvcGVuTWVudU9uRm9jdXMgPSBfdGhpcyRwcm9wczUub3Blbk1lbnVPbkZvY3VzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gX3RoaXMuc3RhdGUsXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZS5mb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZS5mb2N1c2VkVmFsdWUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKHR5cGVvZiBvbktleURvd24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25LZXlEb3duKGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQmxvY2sgb3B0aW9uIGhvdmVyIGV2ZW50cyB3aGVuIHRoZSB1c2VyIGhhcyBqdXN0IHByZXNzZWQgYSBrZXlcbiAgICAgIF90aGlzLmJsb2NrT3B0aW9uSG92ZXIgPSB0cnVlO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICBpZiAoIWlzTXVsdGkgfHwgaW5wdXRWYWx1ZSkgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzVmFsdWUoJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgIGlmICghaXNNdWx0aSB8fCBpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNWYWx1ZSgnbmV4dCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgIGlmIChpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgaWYgKGZvY3VzZWRWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMucmVtb3ZlVmFsdWUoZm9jdXNlZFZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFiYWNrc3BhY2VSZW1vdmVzVmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChpc011bHRpKSB7XG4gICAgICAgICAgICAgIF90aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2xlYXJhYmxlKSB7XG4gICAgICAgICAgICAgIF90aGlzLmNsZWFyVmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgaWYgKF90aGlzLmlzQ29tcG9zaW5nKSByZXR1cm47XG4gICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8ICFtZW51SXNPcGVuIHx8ICF0YWJTZWxlY3RzVmFsdWUgfHwgIWZvY3VzZWRPcHRpb24gfHxcbiAgICAgICAgICAvLyBkb24ndCBjYXB0dXJlIHRoZSBldmVudCBpZiB0aGUgbWVudSBvcGVucyBvbiBmb2N1cyBhbmQgdGhlIGZvY3VzZWRcbiAgICAgICAgICAvLyBvcHRpb24gaXMgYWxyZWFkeSBzZWxlY3RlZDsgaXQgYnJlYWtzIHRoZSBmbG93IG9mIG5hdmlnYXRpb25cbiAgICAgICAgICBvcGVuTWVudU9uRm9jdXMgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChmb2N1c2VkT3B0aW9uLCBzZWxlY3RWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDIyOSkge1xuICAgICAgICAgICAgLy8gaWdub3JlIHRoZSBrZXlkb3duIGV2ZW50IGZyb20gYW4gSW5wdXQgTWV0aG9kIEVkaXRvcihJTUUpXG4gICAgICAgICAgICAvLyByZWYuIGh0dHBzOi8vd3d3LnczLm9yZy9UUi91aWV2ZW50cy8jZGV0ZXJtaW5lLWtleWRvd24ta2V5dXAta2V5Q29kZVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHJldHVybjtcbiAgICAgICAgICAgIGlmIChfdGhpcy5pc0NvbXBvc2luZykgcmV0dXJuO1xuICAgICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgICAgICAgYWN0aW9uOiAnbWVudS1jbG9zZScsXG4gICAgICAgICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uTWVudUNsb3NlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0NsZWFyYWJsZSAmJiBlc2NhcGVDbGVhcnNWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgLy8gc3BhY2VcbiAgICAgICAgICBpZiAoaW5wdXRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZm9jdXNlZE9wdGlvbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLnNlbGVjdE9wdGlvbihmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgaWYgKG1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCd1cCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5vcGVuTWVudSgnbGFzdCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ2Rvd24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdldXAnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdlZG93bicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignZmlyc3QnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignbGFzdCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcbiAgICBfdGhpcy5zdGF0ZS5pbnN0YW5jZVByZWZpeCA9ICdyZWFjdC1zZWxlY3QtJyArIChfdGhpcy5wcm9wcy5pbnN0YW5jZUlkIHx8ICsraW5zdGFuY2VJZCk7XG4gICAgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUgPSBjbGVhblZhbHVlKF9wcm9wcy52YWx1ZSk7XG4gICAgLy8gU2V0IGZvY3VzZWRPcHRpb24gaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gaW5pdCAoZS5nLiBkZWZhdWx0TWVudUlzT3BlbilcbiAgICBpZiAoX3Byb3BzLm1lbnVJc09wZW4gJiYgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUubGVuZ3RoKSB7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBfdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zV2l0aElkcygpO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSBfdGhpcy5idWlsZEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIHZhciBvcHRpb25JbmRleCA9IGZvY3VzYWJsZU9wdGlvbnMuaW5kZXhPZihfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZVswXSk7XG4gICAgICBfdGhpcy5zdGF0ZS5mb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiA9IGZvY3VzYWJsZU9wdGlvbnNbb3B0aW9uSW5kZXhdO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2FibGVPcHRpb25zW29wdGlvbkluZGV4XSk7XG4gICAgfVxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU2VsZWN0LCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMuc3RhcnRMaXN0ZW5pbmdDb21wb3NpdGlvbigpO1xuICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgLy8gTGlzdGVuIHRvIGFsbCBzY3JvbGwgZXZlbnRzLCBhbmQgZmlsdGVyIHRoZW0gb3V0IGluc2lkZSBvZiAnb25TY3JvbGwnXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTY3JvbGwgZm9jdXNlZE9wdGlvbiBpbnRvIHZpZXcgaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gbW91bnQgKGUuZy4gZGVmYXVsdE1lbnVJc09wZW4pXG4gICAgICBpZiAodGhpcy5wcm9wcy5tZW51SXNPcGVuICYmIHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiAmJiB0aGlzLm1lbnVMaXN0UmVmICYmIHRoaXMuZm9jdXNlZE9wdGlvblJlZikge1xuICAgICAgICBzY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczYuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNi5tZW51SXNPcGVuO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKFxuICAgICAgLy8gZW5zdXJlIGZvY3VzIGlzIHJlc3RvcmVkIGNvcnJlY3RseSB3aGVuIHRoZSBjb250cm9sIGJlY29tZXMgZW5hYmxlZFxuICAgICAgaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkIHx8XG4gICAgICAvLyBlbnN1cmUgZm9jdXMgaXMgb24gdGhlIElucHV0IHdoZW4gdGhlIG1lbnUgb3BlbnNcbiAgICAgIGlzRm9jdXNlZCAmJiBtZW51SXNPcGVuICYmICFwcmV2UHJvcHMubWVudUlzT3Blbikge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0ZvY3VzZWQgJiYgaXNEaXNhYmxlZCAmJiAhcHJldlByb3BzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGJsdXJyZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbW1hdGljYWxseSBkaXNhYmxlZCB3aGlsZSBmb2N1c2VkXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGZhbHNlXG4gICAgICAgIH0sIHRoaXMub25NZW51Q2xvc2UpO1xuICAgICAgfSBlbHNlIGlmICghaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkICYmIHRoaXMuaW5wdXRSZWYgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGZvY3VzZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbWF0aWNhbGx5IHJlLWVuYWJsZWQgd2hpbGUgZm9jdXNlZCAoRmlyZWZveClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gc2Nyb2xsIHRoZSBmb2N1c2VkIG9wdGlvbiBpbnRvIHZpZXcgaWYgbmVjZXNzYXJ5XG4gICAgICBpZiAodGhpcy5tZW51TGlzdFJlZiAmJiB0aGlzLmZvY3VzZWRPcHRpb25SZWYgJiYgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSkge1xuICAgICAgICBzY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nQ29tcG9zaXRpb24oKTtcbiAgICAgIHRoaXMuc3RvcExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENvbnN1bWVyIEhhbmRsZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIH0sIHtcbiAgICBrZXk6IFwib25NZW51T3BlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbk1lbnVPcGVuKCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1lbnVPcGVuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uTWVudUNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ21lbnUtY2xvc2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogdGhpcy5wcm9wcy5pbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25JbnB1dENoYW5nZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbklucHV0Q2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB0aGlzLnByb3BzLm9uSW5wdXRDaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE1ldGhvZHNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJmb2N1c0lucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvY3VzSW5wdXQoKSB7XG4gICAgICBpZiAoIXRoaXMuaW5wdXRSZWYpIHJldHVybjtcbiAgICAgIHRoaXMuaW5wdXRSZWYuZm9jdXMoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmx1cklucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJsdXJJbnB1dCgpIHtcbiAgICAgIGlmICghdGhpcy5pbnB1dFJlZikgcmV0dXJuO1xuICAgICAgdGhpcy5pbnB1dFJlZi5ibHVyKCk7XG4gICAgfVxuXG4gICAgLy8gYWxpYXNlZCBmb3IgY29uc3VtZXJzXG4gIH0sIHtcbiAgICBrZXk6IFwib3Blbk1lbnVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb3Blbk1lbnUoZm9jdXNPcHRpb24pIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlMiA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUyLnNlbGVjdFZhbHVlLFxuICAgICAgICBpc0ZvY3VzZWQgPSBfdGhpcyRzdGF0ZTIuaXNGb2N1c2VkO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSB0aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIG9wZW5BdEluZGV4ID0gZm9jdXNPcHRpb24gPT09ICdmaXJzdCcgPyAwIDogZm9jdXNhYmxlT3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSBmb2N1c2FibGVPcHRpb25zLmluZGV4T2Yoc2VsZWN0VmFsdWVbMF0pO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgb3BlbkF0SW5kZXggPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIG9ubHkgc2Nyb2xsIGlmIHRoZSBtZW51IGlzbid0IGFscmVhZHkgb3BlblxuICAgICAgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSA9ICEoaXNGb2N1c2VkICYmIHRoaXMubWVudUxpc3RSZWYpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0sXG4gICAgICAgIGZvY3VzZWRPcHRpb25JZDogdGhpcy5nZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0pXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIub25NZW51T3BlbigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvY3VzVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNWYWx1ZShkaXJlY3Rpb24pIHtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTMgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlMy5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGUzLmZvY3VzZWRWYWx1ZTtcblxuICAgICAgLy8gT25seSBtdWx0aXNlbGVjdHMgc3VwcG9ydCB2YWx1ZSBmb2N1c2luZ1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHJldHVybjtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBudWxsXG4gICAgICB9KTtcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBzZWxlY3RWYWx1ZS5pbmRleE9mKGZvY3VzZWRWYWx1ZSk7XG4gICAgICBpZiAoIWZvY3VzZWRWYWx1ZSkge1xuICAgICAgICBmb2N1c2VkSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBzZWxlY3RWYWx1ZS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG5leHRGb2N1cyA9IC0xO1xuICAgICAgaWYgKCFzZWxlY3RWYWx1ZS5sZW5ndGgpIHJldHVybjtcbiAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAvLyBkb24ndCBjeWNsZSBmcm9tIHRoZSBzdGFydCB0byB0aGUgZW5kXG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9jdXNlZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgLy8gaWYgbm90aGluZyBpcyBmb2N1c2VkLCBmb2N1cyB0aGUgbGFzdCB2YWx1ZSBmaXJzdFxuICAgICAgICAgICAgbmV4dEZvY3VzID0gbGFzdEluZGV4O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbmV4dCc6XG4gICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA+IC0xICYmIGZvY3VzZWRJbmRleCA8IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgbmV4dEZvY3VzID0gZm9jdXNlZEluZGV4ICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbjogbmV4dEZvY3VzICE9PSAtMSxcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBzZWxlY3RWYWx1ZVtuZXh0Rm9jdXNdXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9jdXNPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNPcHRpb24oKSB7XG4gICAgICB2YXIgZGlyZWN0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnZmlyc3QnO1xuICAgICAgdmFyIHBhZ2VTaXplID0gdGhpcy5wcm9wcy5wYWdlU2l6ZTtcbiAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uO1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLmdldEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIGlmICghb3B0aW9ucy5sZW5ndGgpIHJldHVybjtcbiAgICAgIHZhciBuZXh0Rm9jdXMgPSAwOyAvLyBoYW5kbGVzICdmaXJzdCdcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBvcHRpb25zLmluZGV4T2YoZm9jdXNlZE9wdGlvbik7XG4gICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHtcbiAgICAgICAgZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICB9XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCA+IDAgPyBmb2N1c2VkSW5kZXggLSAxIDogb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSAoZm9jdXNlZEluZGV4ICsgMSkgJSBvcHRpb25zLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncGFnZXVwJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA8IDApIG5leHRGb2N1cyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggKyBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA+IG9wdGlvbnMubGVuZ3RoIC0gMSkgbmV4dEZvY3VzID0gb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsYXN0Jykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBvcHRpb25zW25leHRGb2N1c10sXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiB0aGlzLmdldEZvY3VzZWRPcHRpb25JZChvcHRpb25zW25leHRGb2N1c10pXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGhlbWVcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBHZXR0ZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBmdW5jdGlvbiBnZXRUaGVtZSgpIHtcbiAgICAgIC8vIFVzZSB0aGUgZGVmYXVsdCB0aGVtZSBpZiB0aGVyZSBhcmUgbm8gY3VzdG9taXNhdGlvbnMuXG4gICAgICBpZiAoIXRoaXMucHJvcHMudGhlbWUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRUaGVtZTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSB0aGVtZSBwcm9wIGlzIGEgZnVuY3Rpb24sIGFzc3VtZSB0aGUgZnVuY3Rpb25cbiAgICAgIC8vIGtub3dzIGhvdyB0byBtZXJnZSB0aGUgcGFzc2VkLWluIGRlZmF1bHQgdGhlbWUgd2l0aFxuICAgICAgLy8gaXRzIG93biBtb2RpZmljYXRpb25zLlxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnRoZW1lKGRlZmF1bHRUaGVtZSk7XG4gICAgICB9XG4gICAgICAvLyBPdGhlcndpc2UsIGlmIGEgcGxhaW4gdGhlbWUgb2JqZWN0IHdhcyBwYXNzZWQgaW4sXG4gICAgICAvLyBvdmVybGF5IGl0IHdpdGggdGhlIGRlZmF1bHQgdGhlbWUuXG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0VGhlbWUpLCB0aGlzLnByb3BzLnRoZW1lKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tbW9uUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29tbW9uUHJvcHMoKSB7XG4gICAgICB2YXIgY2xlYXJWYWx1ZSA9IHRoaXMuY2xlYXJWYWx1ZSxcbiAgICAgICAgY3ggPSB0aGlzLmN4LFxuICAgICAgICBnZXRTdHlsZXMgPSB0aGlzLmdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lcyA9IHRoaXMuZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWUgPSB0aGlzLmdldFZhbHVlLFxuICAgICAgICBzZWxlY3RPcHRpb24gPSB0aGlzLnNlbGVjdE9wdGlvbixcbiAgICAgICAgc2V0VmFsdWUgPSB0aGlzLnNldFZhbHVlLFxuICAgICAgICBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICB2YXIgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGksXG4gICAgICAgIGlzUnRsID0gcHJvcHMuaXNSdGwsXG4gICAgICAgIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zO1xuICAgICAgdmFyIGhhc1ZhbHVlID0gdGhpcy5oYXNWYWx1ZSgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXJWYWx1ZTogY2xlYXJWYWx1ZSxcbiAgICAgICAgY3g6IGN4LFxuICAgICAgICBnZXRTdHlsZXM6IGdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWU6IGdldFZhbHVlLFxuICAgICAgICBoYXNWYWx1ZTogaGFzVmFsdWUsXG4gICAgICAgIGlzTXVsdGk6IGlzTXVsdGksXG4gICAgICAgIGlzUnRsOiBpc1J0bCxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgc2VsZWN0T3B0aW9uOiBzZWxlY3RPcHRpb24sXG4gICAgICAgIHNlbGVjdFByb3BzOiBwcm9wcyxcbiAgICAgICAgc2V0VmFsdWU6IHNldFZhbHVlLFxuICAgICAgICB0aGVtZTogdGhpcy5nZXRUaGVtZSgpXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNWYWx1ZSgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICByZXR1cm4gc2VsZWN0VmFsdWUubGVuZ3RoID4gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzT3B0aW9uc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNPcHRpb25zKCkge1xuICAgICAgcmV0dXJuICEhdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zKCkubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc0NsZWFyYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0NsZWFyYWJsZSgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0NsZWFyYWJsZSA9IF90aGlzJHByb3BzNy5pc0NsZWFyYWJsZSxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNy5pc011bHRpO1xuXG4gICAgICAvLyBzaW5nbGUgc2VsZWN0LCBieSBkZWZhdWx0LCBJUyBOT1QgY2xlYXJhYmxlXG4gICAgICAvLyBtdWx0aSBzZWxlY3QsIGJ5IGRlZmF1bHQsIElTIGNsZWFyYWJsZVxuICAgICAgaWYgKGlzQ2xlYXJhYmxlID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICAgICAgcmV0dXJuIGlzQ2xlYXJhYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvbkRpc2FibGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvbkRpc2FibGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvblNlbGVjdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvblNlbGVjdGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaWx0ZXJPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlsdGVyT3B0aW9uKG9wdGlvbiwgaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9maWx0ZXJPcHRpb24odGhpcy5wcm9wcywgb3B0aW9uLCBpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0T3B0aW9uTGFiZWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9ybWF0T3B0aW9uTGFiZWwoZGF0YSwgY29udGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBfaW5wdXRWYWx1ZSA9IHRoaXMucHJvcHMuaW5wdXRWYWx1ZTtcbiAgICAgICAgdmFyIF9zZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsKGRhdGEsIHtcbiAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgIGlucHV0VmFsdWU6IF9pbnB1dFZhbHVlLFxuICAgICAgICAgIHNlbGVjdFZhbHVlOiBfc2VsZWN0VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0R3JvdXBMYWJlbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXRHcm91cExhYmVsKGRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdEdyb3VwTGFiZWwoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTW91c2UgSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ29tcG9zaXRpb24gSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nQ29tcG9zaXRpb24oKSB7XG4gICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0JywgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQsIGZhbHNlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdDb21wb3NpdGlvbigpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJywgdGhpcy5vbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVG91Y2ggSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nVG9Ub3VjaCgpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLm9uVG91Y2hTdGFydCwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLm9uVG91Y2hNb3ZlLCBmYWxzZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN0b3BMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdUb1RvdWNoKCkge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0KTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5vblRvdWNoTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySW5wdXRcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBSZW5kZXJlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBmdW5jdGlvbiByZW5kZXJJbnB1dCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczggPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM4LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzU2VhcmNoYWJsZSA9IF90aGlzJHByb3BzOC5pc1NlYXJjaGFibGUsXG4gICAgICAgIGlucHV0SWQgPSBfdGhpcyRwcm9wczguaW5wdXRJZCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOC5pbnB1dFZhbHVlLFxuICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzOC50YWJJbmRleCxcbiAgICAgICAgZm9ybSA9IF90aGlzJHByb3BzOC5mb3JtLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM4Lm1lbnVJc09wZW4sXG4gICAgICAgIHJlcXVpcmVkID0gX3RoaXMkcHJvcHM4LnJlcXVpcmVkO1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgSW5wdXQgPSBfdGhpcyRnZXRDb21wb25lbnRzLklucHV0O1xuICAgICAgdmFyIF90aGlzJHN0YXRlNCA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW4gPSBfdGhpcyRzdGF0ZTQuaW5wdXRJc0hpZGRlbixcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IF90aGlzJHN0YXRlNC5hcmlhU2VsZWN0aW9uO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpZCA9IGlucHV0SWQgfHwgdGhpcy5nZXRFbGVtZW50SWQoJ2lucHV0Jyk7XG5cbiAgICAgIC8vIGFyaWEgYXR0cmlidXRlcyBtYWtlcyB0aGUgSlNYIFwibm9pc3lcIiwgc2VwYXJhdGVkIGZvciBjbGFyaXR5XG4gICAgICB2YXIgYXJpYUF0dHJpYnV0ZXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdsaXN0JyxcbiAgICAgICAgJ2FyaWEtZXhwYW5kZWQnOiBtZW51SXNPcGVuLFxuICAgICAgICAnYXJpYS1oYXNwb3B1cCc6IHRydWUsXG4gICAgICAgICdhcmlhLWVycm9ybWVzc2FnZSc6IHRoaXMucHJvcHNbJ2FyaWEtZXJyb3JtZXNzYWdlJ10sXG4gICAgICAgICdhcmlhLWludmFsaWQnOiB0aGlzLnByb3BzWydhcmlhLWludmFsaWQnXSxcbiAgICAgICAgJ2FyaWEtbGFiZWwnOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsJ10sXG4gICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsbGVkYnknXSxcbiAgICAgICAgJ2FyaWEtcmVxdWlyZWQnOiByZXF1aXJlZCxcbiAgICAgICAgcm9sZTogJ2NvbWJvYm94JyxcbiAgICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IHRoaXMuaXNBcHBsZURldmljZSA/IHVuZGVmaW5lZCA6IHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkIHx8ICcnXG4gICAgICB9LCBtZW51SXNPcGVuICYmIHtcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnOiB0aGlzLmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICB9KSwgIWlzU2VhcmNoYWJsZSAmJiB7XG4gICAgICAgICdhcmlhLXJlYWRvbmx5JzogdHJ1ZVxuICAgICAgfSksIHRoaXMuaGFzVmFsdWUoKSA/IChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnICYmIHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgnbGl2ZS1yZWdpb24nKVxuICAgICAgfSA6IHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgncGxhY2Vob2xkZXInKVxuICAgICAgfSk7XG4gICAgICBpZiAoIWlzU2VhcmNoYWJsZSkge1xuICAgICAgICAvLyB1c2UgYSBkdW1teSBpbnB1dCB0byBtYWludGFpbiBmb2N1cy9ibHVyIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KER1bW15SW5wdXQsIF9leHRlbmRzKHtcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgaW5uZXJSZWY6IHRoaXMuZ2V0SW5wdXRSZWYsXG4gICAgICAgICAgb25CbHVyOiB0aGlzLm9uSW5wdXRCbHVyLFxuICAgICAgICAgIG9uQ2hhbmdlOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6IHRoaXMub25JbnB1dEZvY3VzLFxuICAgICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgICAgICBpbnB1dE1vZGU6IFwibm9uZVwiLFxuICAgICAgICAgIGZvcm06IGZvcm0sXG4gICAgICAgICAgdmFsdWU6IFwiXCJcbiAgICAgICAgfSwgYXJpYUF0dHJpYnV0ZXMpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGF1dG9DYXBpdGFsaXplOiBcIm5vbmVcIixcbiAgICAgICAgYXV0b0NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICBhdXRvQ29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRJbnB1dFJlZixcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNIaWRkZW46IGlucHV0SXNIaWRkZW4sXG4gICAgICAgIG9uQmx1cjogdGhpcy5vbklucHV0Qmx1cixcbiAgICAgICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UsXG4gICAgICAgIG9uRm9jdXM6IHRoaXMub25JbnB1dEZvY3VzLFxuICAgICAgICBzcGVsbENoZWNrOiBcImZhbHNlXCIsXG4gICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgICAgZm9ybTogZm9ybSxcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9LCBhcmlhQXR0cmlidXRlcykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJQbGFjZWhvbGRlck9yVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czIgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgTXVsdGlWYWx1ZSA9IF90aGlzJGdldENvbXBvbmVudHMyLk11bHRpVmFsdWUsXG4gICAgICAgIE11bHRpVmFsdWVDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlQ29udGFpbmVyLFxuICAgICAgICBNdWx0aVZhbHVlTGFiZWwgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgIE11bHRpVmFsdWVSZW1vdmUgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlUmVtb3ZlLFxuICAgICAgICBTaW5nbGVWYWx1ZSA9IF90aGlzJGdldENvbXBvbmVudHMyLlNpbmdsZVZhbHVlLFxuICAgICAgICBQbGFjZWhvbGRlciA9IF90aGlzJGdldENvbXBvbmVudHMyLlBsYWNlaG9sZGVyO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczkgPSB0aGlzLnByb3BzLFxuICAgICAgICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUgPSBfdGhpcyRwcm9wczkuY29udHJvbFNob3VsZFJlbmRlclZhbHVlLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM5LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczkuaXNNdWx0aSxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOS5pbnB1dFZhbHVlLFxuICAgICAgICBwbGFjZWhvbGRlciA9IF90aGlzJHByb3BzOS5wbGFjZWhvbGRlcjtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTUgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlNS5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU1LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU1LmlzRm9jdXNlZDtcbiAgICAgIGlmICghdGhpcy5oYXNWYWx1ZSgpIHx8ICFjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0VmFsdWUgPyBudWxsIDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGxhY2Vob2xkZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgIGtleTogXCJwbGFjZWhvbGRlclwiLFxuICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgICAgaWQ6IHRoaXMuZ2V0RWxlbWVudElkKCdwbGFjZWhvbGRlcicpXG4gICAgICAgICAgfVxuICAgICAgICB9KSwgcGxhY2Vob2xkZXIpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpbmRleCkge1xuICAgICAgICAgIHZhciBpc09wdGlvbkZvY3VzZWQgPSBvcHQgPT09IGZvY3VzZWRWYWx1ZTtcbiAgICAgICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoX3RoaXMzLmdldE9wdGlvbkxhYmVsKG9wdCksIFwiLVwiKS5jb25jYXQoX3RoaXMzLmdldE9wdGlvblZhbHVlKG9wdCkpO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChNdWx0aVZhbHVlLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgICAgQ29udGFpbmVyOiBNdWx0aVZhbHVlQ29udGFpbmVyLFxuICAgICAgICAgICAgICBMYWJlbDogTXVsdGlWYWx1ZUxhYmVsLFxuICAgICAgICAgICAgICBSZW1vdmU6IE11bHRpVmFsdWVSZW1vdmVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc0ZvY3VzZWQ6IGlzT3B0aW9uRm9jdXNlZCxcbiAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgIHJlbW92ZVByb3BzOiB7XG4gICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5yZW1vdmVWYWx1ZShvcHQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvblRvdWNoRW5kOiBmdW5jdGlvbiBvblRvdWNoRW5kKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczMucmVtb3ZlVmFsdWUob3B0KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25Nb3VzZURvd246IGZ1bmN0aW9uIG9uTW91c2VEb3duKGUpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRhOiBvcHRcbiAgICAgICAgICB9KSwgX3RoaXMzLmZvcm1hdE9wdGlvbkxhYmVsKG9wdCwgJ3ZhbHVlJykpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dFZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIHNpbmdsZVZhbHVlID0gc2VsZWN0VmFsdWVbMF07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2luZ2xlVmFsdWUsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBkYXRhOiBzaW5nbGVWYWx1ZSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMuZm9ybWF0T3B0aW9uTGFiZWwoc2luZ2xlVmFsdWUsICd2YWx1ZScpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQ2xlYXJJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2xlYXJJbmRpY2F0b3IoKSB7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgQ2xlYXJJbmRpY2F0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzMy5DbGVhckluZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczEwLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTAuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCF0aGlzLmlzQ2xlYXJhYmxlKCkgfHwgIUNsZWFySW5kaWNhdG9yIHx8IGlzRGlzYWJsZWQgfHwgIXRoaXMuaGFzVmFsdWUoKSB8fCBpc0xvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25DbGVhckluZGljYXRvck1vdXNlRG93bixcbiAgICAgICAgb25Ub3VjaEVuZDogdGhpcy5vbkNsZWFySW5kaWNhdG9yVG91Y2hFbmQsXG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhckluZGljYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckxvYWRpbmdJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTG9hZGluZ0luZGljYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNCA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBMb2FkaW5nSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czQuTG9hZGluZ0luZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMSA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczExLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTEuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCFMb2FkaW5nSW5kaWNhdG9yIHx8ICFpc0xvYWRpbmcpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGlubmVyUHJvcHMgPSB7XG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMb2FkaW5nSW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckluZGljYXRvclNlcGFyYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNSA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBEcm9wZG93bkluZGljYXRvciA9IF90aGlzJGdldENvbXBvbmVudHM1LkRyb3Bkb3duSW5kaWNhdG9yLFxuICAgICAgICBJbmRpY2F0b3JTZXBhcmF0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzNS5JbmRpY2F0b3JTZXBhcmF0b3I7XG5cbiAgICAgIC8vIHNlcGFyYXRvciBkb2Vzbid0IG1ha2Ugc2Vuc2Ugd2l0aG91dCB0aGUgZHJvcGRvd24gaW5kaWNhdG9yXG4gICAgICBpZiAoIURyb3Bkb3duSW5kaWNhdG9yIHx8ICFJbmRpY2F0b3JTZXBhcmF0b3IpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpc0Rpc2FibGVkID0gdGhpcy5wcm9wcy5pc0Rpc2FibGVkO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluZGljYXRvclNlcGFyYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckRyb3Bkb3duSW5kaWNhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckRyb3Bkb3duSW5kaWNhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM2ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIERyb3Bkb3duSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czYuRHJvcGRvd25JbmRpY2F0b3I7XG4gICAgICBpZiAoIURyb3Bkb3duSW5kaWNhdG9yKSByZXR1cm4gbnVsbDtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgaXNEaXNhYmxlZCA9IHRoaXMucHJvcHMuaXNEaXNhYmxlZDtcbiAgICAgIHZhciBpc0ZvY3VzZWQgPSB0aGlzLnN0YXRlLmlzRm9jdXNlZDtcbiAgICAgIHZhciBpbm5lclByb3BzID0ge1xuICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duLFxuICAgICAgICBvblRvdWNoRW5kOiB0aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCxcbiAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KERyb3Bkb3duSW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTWVudVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJNZW51KCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czcgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgR3JvdXAgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Hcm91cCxcbiAgICAgICAgR3JvdXBIZWFkaW5nID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuR3JvdXBIZWFkaW5nLFxuICAgICAgICBNZW51ID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTWVudSxcbiAgICAgICAgTWVudUxpc3QgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5NZW51TGlzdCxcbiAgICAgICAgTWVudVBvcnRhbCA9IF90aGlzJGdldENvbXBvbmVudHM3Lk1lbnVQb3J0YWwsXG4gICAgICAgIExvYWRpbmdNZXNzYWdlID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTG9hZGluZ01lc3NhZ2UsXG4gICAgICAgIE5vT3B0aW9uc01lc3NhZ2UgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Ob09wdGlvbnNNZXNzYWdlLFxuICAgICAgICBPcHRpb24gPSBfdGhpcyRnZXRDb21wb25lbnRzNy5PcHRpb247XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb24gPSB0aGlzLnN0YXRlLmZvY3VzZWRPcHRpb247XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNhcHR1cmVNZW51U2Nyb2xsID0gX3RoaXMkcHJvcHMxMi5jYXB0dXJlTWVudVNjcm9sbCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzMTIuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNMb2FkaW5nID0gX3RoaXMkcHJvcHMxMi5pc0xvYWRpbmcsXG4gICAgICAgIGxvYWRpbmdNZXNzYWdlID0gX3RoaXMkcHJvcHMxMi5sb2FkaW5nTWVzc2FnZSxcbiAgICAgICAgbWluTWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWluTWVudUhlaWdodCxcbiAgICAgICAgbWF4TWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWF4TWVudUhlaWdodCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzMTIubWVudUlzT3BlbixcbiAgICAgICAgbWVudVBsYWNlbWVudCA9IF90aGlzJHByb3BzMTIubWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uID0gX3RoaXMkcHJvcHMxMi5tZW51UG9zaXRpb24sXG4gICAgICAgIG1lbnVQb3J0YWxUYXJnZXQgPSBfdGhpcyRwcm9wczEyLm1lbnVQb3J0YWxUYXJnZXQsXG4gICAgICAgIG1lbnVTaG91bGRCbG9ja1Njcm9sbCA9IF90aGlzJHByb3BzMTIubWVudVNob3VsZEJsb2NrU2Nyb2xsLFxuICAgICAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBfdGhpcyRwcm9wczEyLm1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyxcbiAgICAgICAgbm9PcHRpb25zTWVzc2FnZSA9IF90aGlzJHByb3BzMTIubm9PcHRpb25zTWVzc2FnZSxcbiAgICAgICAgb25NZW51U2Nyb2xsVG9Ub3AgPSBfdGhpcyRwcm9wczEyLm9uTWVudVNjcm9sbFRvVG9wLFxuICAgICAgICBvbk1lbnVTY3JvbGxUb0JvdHRvbSA9IF90aGlzJHByb3BzMTIub25NZW51U2Nyb2xsVG9Cb3R0b207XG4gICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybiBudWxsO1xuXG4gICAgICAvLyBUT0RPOiBJbnRlcm5hbCBPcHRpb24gVHlwZSBoZXJlXG4gICAgICB2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKHByb3BzLCBpZCkge1xuICAgICAgICB2YXIgdHlwZSA9IHByb3BzLnR5cGUsXG4gICAgICAgICAgZGF0YSA9IHByb3BzLmRhdGEsXG4gICAgICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTZWxlY3RlZCA9IHByb3BzLmlzU2VsZWN0ZWQsXG4gICAgICAgICAgbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlO1xuICAgICAgICB2YXIgaXNGb2N1c2VkID0gZm9jdXNlZE9wdGlvbiA9PT0gZGF0YTtcbiAgICAgICAgdmFyIG9uSG92ZXIgPSBpc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQub25PcHRpb25Ib3ZlcihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9uU2VsZWN0ID0gaXNEaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXM0LnNlbGVjdE9wdGlvbihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9wdGlvbklkID0gXCJcIi5jb25jYXQoX3RoaXM0LmdldEVsZW1lbnRJZCgnb3B0aW9uJyksIFwiLVwiKS5jb25jYXQoaWQpO1xuICAgICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgICBpZDogb3B0aW9uSWQsXG4gICAgICAgICAgb25DbGljazogb25TZWxlY3QsXG4gICAgICAgICAgb25Nb3VzZU1vdmU6IG9uSG92ZXIsXG4gICAgICAgICAgb25Nb3VzZU92ZXI6IG9uSG92ZXIsXG4gICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogX3RoaXM0LmlzQXBwbGVEZXZpY2UgPyB1bmRlZmluZWQgOiBpc1NlbGVjdGVkIC8vIGlzIG5vdCBzdXBwb3J0ZWQgb24gQXBwbGUgZGV2aWNlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChPcHRpb24sIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgICAga2V5OiBvcHRpb25JZCxcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgICAgaW5uZXJSZWY6IGlzRm9jdXNlZCA/IF90aGlzNC5nZXRGb2N1c2VkT3B0aW9uUmVmIDogdW5kZWZpbmVkXG4gICAgICAgIH0pLCBfdGhpczQuZm9ybWF0T3B0aW9uTGFiZWwocHJvcHMuZGF0YSwgJ21lbnUnKSk7XG4gICAgICB9O1xuICAgICAgdmFyIG1lbnVVSTtcbiAgICAgIGlmICh0aGlzLmhhc09wdGlvbnMoKSkge1xuICAgICAgICBtZW51VUkgPSB0aGlzLmdldENhdGVnb3JpemVkT3B0aW9ucygpLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgIHZhciBfZGF0YSA9IGl0ZW0uZGF0YSxcbiAgICAgICAgICAgICAgb3B0aW9ucyA9IGl0ZW0ub3B0aW9ucyxcbiAgICAgICAgICAgICAgZ3JvdXBJbmRleCA9IGl0ZW0uaW5kZXg7XG4gICAgICAgICAgICB2YXIgZ3JvdXBJZCA9IFwiXCIuY29uY2F0KF90aGlzNC5nZXRFbGVtZW50SWQoJ2dyb3VwJyksIFwiLVwiKS5jb25jYXQoZ3JvdXBJbmRleCk7XG4gICAgICAgICAgICB2YXIgaGVhZGluZ0lkID0gXCJcIi5jb25jYXQoZ3JvdXBJZCwgXCItaGVhZGluZ1wiKTtcbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChHcm91cCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgICAgIGtleTogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgZGF0YTogX2RhdGEsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgICAgICAgIEhlYWRpbmc6IEdyb3VwSGVhZGluZyxcbiAgICAgICAgICAgICAgaGVhZGluZ1Byb3BzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IGhlYWRpbmdJZCxcbiAgICAgICAgICAgICAgICBkYXRhOiBpdGVtLmRhdGFcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbGFiZWw6IF90aGlzNC5mb3JtYXRHcm91cExhYmVsKGl0ZW0uZGF0YSlcbiAgICAgICAgICAgIH0pLCBpdGVtLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihvcHRpb24sIFwiXCIuY29uY2F0KGdyb3VwSW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdvcHRpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyKGl0ZW0sIFwiXCIuY29uY2F0KGl0ZW0uaW5kZXgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBsb2FkaW5nTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICBtZW51VUkgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMb2FkaW5nTWVzc2FnZSwgY29tbW9uUHJvcHMsIG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF9tZXNzYWdlID0gbm9PcHRpb25zTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKF9tZXNzYWdlID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbWVudVVJID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTm9PcHRpb25zTWVzc2FnZSwgY29tbW9uUHJvcHMsIF9tZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHZhciBtZW51UGxhY2VtZW50UHJvcHMgPSB7XG4gICAgICAgIG1pbk1lbnVIZWlnaHQ6IG1pbk1lbnVIZWlnaHQsXG4gICAgICAgIG1heE1lbnVIZWlnaHQ6IG1heE1lbnVIZWlnaHQsXG4gICAgICAgIG1lbnVQbGFjZW1lbnQ6IG1lbnVQbGFjZW1lbnQsXG4gICAgICAgIG1lbnVQb3NpdGlvbjogbWVudVBvc2l0aW9uLFxuICAgICAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXc6IG1lbnVTaG91bGRTY3JvbGxJbnRvVmlld1xuICAgICAgfTtcbiAgICAgIHZhciBtZW51RWxlbWVudCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVQbGFjZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywgbWVudVBsYWNlbWVudFByb3BzKSwgZnVuY3Rpb24gKF9yZWY0KSB7XG4gICAgICAgIHZhciByZWYgPSBfcmVmNC5yZWYsXG4gICAgICAgICAgX3JlZjQkcGxhY2VyUHJvcHMgPSBfcmVmNC5wbGFjZXJQcm9wcyxcbiAgICAgICAgICBwbGFjZW1lbnQgPSBfcmVmNCRwbGFjZXJQcm9wcy5wbGFjZW1lbnQsXG4gICAgICAgICAgbWF4SGVpZ2h0ID0gX3JlZjQkcGxhY2VyUHJvcHMubWF4SGVpZ2h0O1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVudSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCBtZW51UGxhY2VtZW50UHJvcHMsIHtcbiAgICAgICAgICBpbm5lclJlZjogcmVmLFxuICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgIG9uTW91c2VEb3duOiBfdGhpczQub25NZW51TW91c2VEb3duLFxuICAgICAgICAgICAgb25Nb3VzZU1vdmU6IF90aGlzNC5vbk1lbnVNb3VzZU1vdmVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTY3JvbGxNYW5hZ2VyLCB7XG4gICAgICAgICAgY2FwdHVyZUVuYWJsZWQ6IGNhcHR1cmVNZW51U2Nyb2xsLFxuICAgICAgICAgIG9uVG9wQXJyaXZlOiBvbk1lbnVTY3JvbGxUb1RvcCxcbiAgICAgICAgICBvbkJvdHRvbUFycml2ZTogb25NZW51U2Nyb2xsVG9Cb3R0b20sXG4gICAgICAgICAgbG9ja0VuYWJsZWQ6IG1lbnVTaG91bGRCbG9ja1Njcm9sbFxuICAgICAgICB9LCBmdW5jdGlvbiAoc2Nyb2xsVGFyZ2V0UmVmKSB7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVMaXN0LCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgICAgIGlubmVyUmVmOiBmdW5jdGlvbiBpbm5lclJlZihpbnN0YW5jZSkge1xuICAgICAgICAgICAgICBfdGhpczQuZ2V0TWVudUxpc3RSZWYoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICBzY3JvbGxUYXJnZXRSZWYoaW5zdGFuY2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgICAgcm9sZTogJ2xpc3Rib3gnLFxuICAgICAgICAgICAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiBjb21tb25Qcm9wcy5pc011bHRpLFxuICAgICAgICAgICAgICBpZDogX3RoaXM0LmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCxcbiAgICAgICAgICAgIGZvY3VzZWRPcHRpb246IGZvY3VzZWRPcHRpb25cbiAgICAgICAgICB9KSwgbWVudVVJKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIHBvc2l0aW9uaW5nIGJlaGF2aW91ciBpcyBhbG1vc3QgaWRlbnRpY2FsIGZvciBwb3J0YWxsZWQgYW5kIGZpeGVkLFxuICAgICAgLy8gc28gd2UgdXNlIHRoZSBzYW1lIGNvbXBvbmVudC4gdGhlIGFjdHVhbCBwb3J0YWxsaW5nIGxvZ2ljIGlzIGZvcmtlZFxuICAgICAgLy8gd2l0aGluIHRoZSBjb21wb25lbnQgYmFzZWQgb24gYG1lbnVQb3NpdGlvbmBcbiAgICAgIHJldHVybiBtZW51UG9ydGFsVGFyZ2V0IHx8IG1lbnVQb3NpdGlvbiA9PT0gJ2ZpeGVkJyA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVQb3J0YWwsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBhcHBlbmRUbzogbWVudVBvcnRhbFRhcmdldCxcbiAgICAgICAgY29udHJvbEVsZW1lbnQ6IHRoaXMuY29udHJvbFJlZixcbiAgICAgICAgbWVudVBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uOiBtZW51UG9zaXRpb25cbiAgICAgIH0pLCBtZW51RWxlbWVudCkgOiBtZW51RWxlbWVudDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyRm9ybUZpZWxkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckZvcm1GaWVsZCgpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTMgPSB0aGlzLnByb3BzLFxuICAgICAgICBkZWxpbWl0ZXIgPSBfdGhpcyRwcm9wczEzLmRlbGltaXRlcixcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzMTMuaXNEaXNhYmxlZCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMTMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMTMubmFtZSxcbiAgICAgICAgcmVxdWlyZWQgPSBfdGhpcyRwcm9wczEzLnJlcXVpcmVkO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAhdGhpcy5oYXNWYWx1ZSgpICYmICFpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZXF1aXJlZElucHV0JDEsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIG9uRm9jdXM6IHRoaXMub25WYWx1ZUlucHV0Rm9jdXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIW5hbWUgfHwgaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgaWYgKGRlbGltaXRlcikge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0KSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXM1LmdldE9wdGlvblZhbHVlKG9wdCk7XG4gICAgICAgICAgfSkuam9pbihkZWxpbWl0ZXIpO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGlucHV0ID0gc2VsZWN0VmFsdWUubGVuZ3RoID4gMCA/IHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpKSB7XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGtleTogXCJpLVwiLmNvbmNhdChpKSxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgICAgdmFsdWU6IF90aGlzNS5nZXRPcHRpb25WYWx1ZShvcHQpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSA6IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICB2YWx1ZTogXCJcIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLCBpbnB1dCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfdmFsdWUgPSBzZWxlY3RWYWx1ZVswXSA/IHRoaXMuZ2V0T3B0aW9uVmFsdWUoc2VsZWN0VmFsdWVbMF0pIDogJyc7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgdmFsdWU6IF92YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTGl2ZVJlZ2lvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJMaXZlUmVnaW9uKCkge1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTYgPSB0aGlzLnN0YXRlLFxuICAgICAgICBhcmlhU2VsZWN0aW9uID0gX3RoaXMkc3RhdGU2LmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZTYuZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU2LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU2LmlzRm9jdXNlZCxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTYuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IHRoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExpdmVSZWdpb24kMSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlkOiB0aGlzLmdldEVsZW1lbnRJZCgnbGl2ZS1yZWdpb24nKSxcbiAgICAgICAgYXJpYVNlbGVjdGlvbjogYXJpYVNlbGVjdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBmb2N1c2VkVmFsdWUsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkLFxuICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgIGZvY3VzYWJsZU9wdGlvbnM6IGZvY3VzYWJsZU9wdGlvbnMsXG4gICAgICAgIGlzQXBwbGVEZXZpY2U6IHRoaXMuaXNBcHBsZURldmljZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM4ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIENvbnRyb2wgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5Db250cm9sLFxuICAgICAgICBJbmRpY2F0b3JzQ29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguSW5kaWNhdG9yc0NvbnRhaW5lcixcbiAgICAgICAgU2VsZWN0Q29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguU2VsZWN0Q29udGFpbmVyLFxuICAgICAgICBWYWx1ZUNvbnRhaW5lciA9IF90aGlzJGdldENvbXBvbmVudHM4LlZhbHVlQ29udGFpbmVyO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTQgPSB0aGlzLnByb3BzLFxuICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczE0LmNsYXNzTmFtZSxcbiAgICAgICAgaWQgPSBfdGhpcyRwcm9wczE0LmlkLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHMxNC5pc0Rpc2FibGVkLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHMxNC5tZW51SXNPcGVuO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcyA9IHRoaXMuZ2V0Q29tbW9uUHJvcHMoKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTZWxlY3RDb250YWluZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBvbktleURvd246IHRoaXMub25LZXlEb3duXG4gICAgICAgIH0sXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSwgdGhpcy5yZW5kZXJMaXZlUmVnaW9uKCksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbnRyb2wsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRDb250cm9sUmVmLFxuICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25Db250cm9sTW91c2VEb3duLFxuICAgICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMub25Db250cm9sVG91Y2hFbmRcbiAgICAgICAgfSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW5cbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChWYWx1ZUNvbnRhaW5lciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgICAgIH0pLCB0aGlzLnJlbmRlclBsYWNlaG9sZGVyT3JWYWx1ZSgpLCB0aGlzLnJlbmRlcklucHV0KCkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbmRpY2F0b3JzQ29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMucmVuZGVyQ2xlYXJJbmRpY2F0b3IoKSwgdGhpcy5yZW5kZXJMb2FkaW5nSW5kaWNhdG9yKCksIHRoaXMucmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yKCksIHRoaXMucmVuZGVyRHJvcGRvd25JbmRpY2F0b3IoKSkpLCB0aGlzLnJlbmRlck1lbnUoKSwgdGhpcy5yZW5kZXJGb3JtRmllbGQoKSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICAgIHZhciBwcmV2UHJvcHMgPSBzdGF0ZS5wcmV2UHJvcHMsXG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlID0gc3RhdGUuY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSA9IHN0YXRlLmlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSxcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IHN0YXRlLmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGlzRm9jdXNlZCA9IHN0YXRlLmlzRm9jdXNlZCxcbiAgICAgICAgcHJldldhc0ZvY3VzZWQgPSBzdGF0ZS5wcmV2V2FzRm9jdXNlZCxcbiAgICAgICAgaW5zdGFuY2VQcmVmaXggPSBzdGF0ZS5pbnN0YW5jZVByZWZpeDtcbiAgICAgIHZhciBvcHRpb25zID0gcHJvcHMub3B0aW9ucyxcbiAgICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgICAgbWVudUlzT3BlbiA9IHByb3BzLm1lbnVJc09wZW4sXG4gICAgICAgIGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgICAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aTtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IGNsZWFuVmFsdWUodmFsdWUpO1xuICAgICAgdmFyIG5ld01lbnVPcHRpb25zU3RhdGUgPSB7fTtcbiAgICAgIGlmIChwcmV2UHJvcHMgJiYgKHZhbHVlICE9PSBwcmV2UHJvcHMudmFsdWUgfHwgb3B0aW9ucyAhPT0gcHJldlByb3BzLm9wdGlvbnMgfHwgbWVudUlzT3BlbiAhPT0gcHJldlByb3BzLm1lbnVJc09wZW4gfHwgaW5wdXRWYWx1ZSAhPT0gcHJldlByb3BzLmlucHV0VmFsdWUpKSB7XG4gICAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zID0gbWVudUlzT3BlbiA/IGJ1aWxkRm9jdXNhYmxlT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIDogW107XG4gICAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IG1lbnVJc09wZW4gPyBidWlsZEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzKGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSksIFwiXCIuY29uY2F0KGluc3RhbmNlUHJlZml4LCBcIi1vcHRpb25cIikpIDogW107XG4gICAgICAgIHZhciBmb2N1c2VkVmFsdWUgPSBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZSA/IGdldE5leHRGb2N1c2VkVmFsdWUoc3RhdGUsIHNlbGVjdFZhbHVlKSA6IG51bGw7XG4gICAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIGZvY3VzYWJsZU9wdGlvbnMpO1xuICAgICAgICB2YXIgZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgbmV3TWVudU9wdGlvbnNTdGF0ZSA9IHtcbiAgICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgICBmb2N1c2VkT3B0aW9uSWQ6IGZvY3VzZWRPcHRpb25JZCxcbiAgICAgICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsXG4gICAgICAgICAgZm9jdXNlZFZhbHVlOiBmb2N1c2VkVmFsdWUsXG4gICAgICAgICAgY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGU6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBzb21lIHVwZGF0ZXMgc2hvdWxkIHRvZ2dsZSB0aGUgc3RhdGUgb2YgdGhlIGlucHV0IHZpc2liaWxpdHlcbiAgICAgIHZhciBuZXdJbnB1dElzSGlkZGVuU3RhdGUgPSBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUgIT0gbnVsbCAmJiBwcm9wcyAhPT0gcHJldlByb3BzID8ge1xuICAgICAgICBpbnB1dElzSGlkZGVuOiBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogdW5kZWZpbmVkXG4gICAgICB9IDoge307XG4gICAgICB2YXIgbmV3QXJpYVNlbGVjdGlvbiA9IGFyaWFTZWxlY3Rpb247XG4gICAgICB2YXIgaGFzS2VwdEZvY3VzID0gaXNGb2N1c2VkICYmIHByZXZXYXNGb2N1c2VkO1xuICAgICAgaWYgKGlzRm9jdXNlZCAmJiAhaGFzS2VwdEZvY3VzKSB7XG4gICAgICAgIC8vIElmIGB2YWx1ZWAgb3IgYGRlZmF1bHRWYWx1ZWAgcHJvcHMgYXJlIG5vdCBlbXB0eSB0aGVuIGFubm91bmNlIHRoZW1cbiAgICAgICAgLy8gd2hlbiB0aGUgU2VsZWN0IGlzIGluaXRpYWxseSBmb2N1c2VkXG4gICAgICAgIG5ld0FyaWFTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlVGVybmFyeShpc011bHRpLCBzZWxlY3RWYWx1ZSwgc2VsZWN0VmFsdWVbMF0gfHwgbnVsbCksXG4gICAgICAgICAgb3B0aW9uczogc2VsZWN0VmFsdWUsXG4gICAgICAgICAgYWN0aW9uOiAnaW5pdGlhbC1pbnB1dC1mb2N1cydcbiAgICAgICAgfTtcbiAgICAgICAgaGFzS2VwdEZvY3VzID0gIXByZXZXYXNGb2N1c2VkO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgJ2luaXRpYWwtaW5wdXQtZm9jdXMnIGFjdGlvbiBoYXMgYmVlbiBzZXQgYWxyZWFkeVxuICAgICAgLy8gdGhlbiByZXNldCB0aGUgYXJpYVNlbGVjdGlvbiB0byBudWxsXG4gICAgICBpZiAoKGFyaWFTZWxlY3Rpb24gPT09IG51bGwgfHwgYXJpYVNlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJpYVNlbGVjdGlvbi5hY3Rpb24pID09PSAnaW5pdGlhbC1pbnB1dC1mb2N1cycpIHtcbiAgICAgICAgbmV3QXJpYVNlbGVjdGlvbiA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG5ld01lbnVPcHRpb25zU3RhdGUpLCBuZXdJbnB1dElzSGlkZGVuU3RhdGUpLCB7fSwge1xuICAgICAgICBwcmV2UHJvcHM6IHByb3BzLFxuICAgICAgICBhcmlhU2VsZWN0aW9uOiBuZXdBcmlhU2VsZWN0aW9uLFxuICAgICAgICBwcmV2V2FzRm9jdXNlZDogaGFzS2VwdEZvY3VzXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNlbGVjdDtcbn0oQ29tcG9uZW50KTtcblNlbGVjdC5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbmV4cG9ydCB7IFNlbGVjdCBhcyBTLCBkZWZhdWx0UHJvcHMgYXMgYSwgZ2V0T3B0aW9uTGFiZWwkMSBhcyBiLCBjcmVhdGVGaWx0ZXIgYXMgYywgZGVmYXVsdFRoZW1lIGFzIGQsIGdldE9wdGlvblZhbHVlJDEgYXMgZywgbWVyZ2VTdHlsZXMgYXMgbSB9O1xuIiwiaW1wb3J0IHsgdSBhcyB1c2VTdGF0ZU1hbmFnZXIgfSBmcm9tICcuL3VzZVN0YXRlTWFuYWdlci03ZTFlODQ4OS5lc20uanMnO1xuZXhwb3J0IHsgdSBhcyB1c2VTdGF0ZU1hbmFnZXIgfSBmcm9tICcuL3VzZVN0YXRlTWFuYWdlci03ZTFlODQ4OS5lc20uanMnO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFMgYXMgU2VsZWN0IH0gZnJvbSAnLi9TZWxlY3QtYWFiMDI3ZjMuZXNtLmpzJztcbmV4cG9ydCB7IGMgYXMgY3JlYXRlRmlsdGVyLCBkIGFzIGRlZmF1bHRUaGVtZSwgbSBhcyBtZXJnZVN0eWxlcyB9IGZyb20gJy4vU2VsZWN0LWFhYjAyN2YzLmVzbS5qcyc7XG5pbXBvcnQgeyBDYWNoZVByb3ZpZGVyIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IGNyZWF0ZUNhY2hlIGZyb20gJ0BlbW90aW9uL2NhY2hlJztcbmV4cG9ydCB7IGMgYXMgY29tcG9uZW50cyB9IGZyb20gJy4vaW5kZXgtNjQxZWU1YjguZXNtLmpzJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5JztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cyc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXInO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5JztcbmltcG9ydCAnbWVtb2l6ZS1vbmUnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZic7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdGFnZ2VkVGVtcGxhdGVMaXRlcmFsJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eSc7XG5pbXBvcnQgJ3JlYWN0LWRvbSc7XG5pbXBvcnQgJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0ICd1c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0JztcblxudmFyIFN0YXRlTWFuYWdlZFNlbGVjdCA9IC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBiYXNlU2VsZWN0UHJvcHMgPSB1c2VTdGF0ZU1hbmFnZXIocHJvcHMpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2VsZWN0LCBfZXh0ZW5kcyh7XG4gICAgcmVmOiByZWZcbiAgfSwgYmFzZVNlbGVjdFByb3BzKSk7XG59KTtcbnZhciBTdGF0ZU1hbmFnZWRTZWxlY3QkMSA9IFN0YXRlTWFuYWdlZFNlbGVjdDtcblxudmFyIE5vbmNlUHJvdmlkZXIgPSAoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIG5vbmNlID0gX3JlZi5ub25jZSxcbiAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgY2FjaGVLZXkgPSBfcmVmLmNhY2hlS2V5O1xuICB2YXIgZW1vdGlvbkNhY2hlID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNhY2hlKHtcbiAgICAgIGtleTogY2FjaGVLZXksXG4gICAgICBub25jZTogbm9uY2VcbiAgICB9KTtcbiAgfSwgW2NhY2hlS2V5LCBub25jZV0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2FjaGVQcm92aWRlciwge1xuICAgIHZhbHVlOiBlbW90aW9uQ2FjaGVcbiAgfSwgY2hpbGRyZW4pO1xufSk7XG5cbmV4cG9ydCB7IE5vbmNlUHJvdmlkZXIsIFN0YXRlTWFuYWdlZFNlbGVjdCQxIGFzIGRlZmF1bHQgfTtcbiIsIi8vIHNyYy9pbmRleC50c1xuaW1wb3J0IHsgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG52YXIgRU1QVFlfVkFMVUUgPSBTeW1ib2woXCJ1c2VMYXp5UmVmIGVtcHR5IHZhbHVlXCIpO1xudmFyIHVzZUxhenlSZWYgPSAoaW5pdCkgPT4ge1xuICBjb25zdCByZXN1bHRSZWYgPSB1c2VSZWYoRU1QVFlfVkFMVUUpO1xuICBpZiAocmVzdWx0UmVmLmN1cnJlbnQgPT09IEVNUFRZX1ZBTFVFKSB7XG4gICAgcmVzdWx0UmVmLmN1cnJlbnQgPSBpbml0KCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFJlZjtcbn07XG5leHBvcnQge1xuICBFTVBUWV9WQUxVRSxcbiAgdXNlTGF6eVJlZlxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCB7IHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG5mdW5jdGlvbiB1c2VJc01vdW50ZWRSZWYoKSB7XHJcbiAgICB2YXIgaXNNb3VudGVkUmVmID0gdXNlUmVmKGZhbHNlKTtcclxuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gZmFsc2U7XHJcbiAgICAgICAgfTtcclxuICAgIH0sIFtdKTtcclxuICAgIHJldHVybiBpc01vdW50ZWRSZWY7XHJcbn1cblxuZXhwb3J0IHsgdXNlSXNNb3VudGVkUmVmIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZS1pcy1tb3VudGVkLXJlZi5lcy5qcy5tYXBcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCBmcm9tICd1c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0JztcblxudmFyIHVzZUxhdGVzdCA9IGZ1bmN0aW9uIHVzZUxhdGVzdCh2YWx1ZSkge1xuICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKHZhbHVlKTtcbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZWY7XG59O1xuXG5leHBvcnQgeyB1c2VMYXRlc3QgYXMgZGVmYXVsdCB9O1xuIiwiLy8gc3JjL29wdGlvbl9yZXN1bHQudHNcbmZ1bmN0aW9uIE9rKHJlc3VsdCkge1xuICBjb25zdCBzZWxmID0ge1xuICAgIGlzT2s6ICgpID0+IHRydWUsXG4gICAgaXNPa0FuZDogKGZuKSA9PiBmbihyZXN1bHQpLFxuICAgIGlzRXJyOiAoKSA9PiBmYWxzZSxcbiAgICBpc0VyckFuZDogKCkgPT4gZmFsc2UsXG4gICAgb2s6ICgpID0+IFNvbWUocmVzdWx0KSxcbiAgICBlcnI6ICgpID0+IE5vbmUoKSxcbiAgICBtYXA6IChmbikgPT4gT2soZm4ocmVzdWx0KSksXG4gICAgbWFwT3I6IChfLCBmbikgPT4gZm4ocmVzdWx0KSxcbiAgICBtYXBPckVsc2U6IChfLCBmbikgPT4gZm4ocmVzdWx0KSxcbiAgICBtYXBFcnI6ICgpID0+IE9rKHJlc3VsdCksXG4gICAgZXhwZWN0OiAoKSA9PiByZXN1bHQsXG4gICAgZXhwZWN0RXJyOiAobXNnKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9LFxuICAgIHVud3JhcDogKCkgPT4gcmVzdWx0LFxuICAgIHVud3JhcEVycjogKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Jlc3VsdH1gKTtcbiAgICB9LFxuICAgIHVud3JhcE9yOiAoKSA9PiByZXN1bHQsXG4gICAgdW53cmFwT3JFbHNlOiAoKSA9PiByZXN1bHQsXG4gICAgYW5kOiAocmVzKSA9PiByZXMsXG4gICAgYW5kVGhlbjogKGdldFJlcykgPT4gZ2V0UmVzKHJlc3VsdCksXG4gICAgb3I6ICgpID0+IE9rKHJlc3VsdCksXG4gICAgb3JFbHNlOiAoKSA9PiBPayhyZXN1bHQpXG4gIH07XG4gIHJldHVybiBzZWxmO1xufVxuZnVuY3Rpb24gRXJyKGVycikge1xuICBjb25zdCBzZWxmID0ge1xuICAgIGlzT2s6ICgpID0+IGZhbHNlLFxuICAgIGlzT2tBbmQ6ICgpID0+IGZhbHNlLFxuICAgIGlzRXJyOiAoKSA9PiB0cnVlLFxuICAgIGlzRXJyQW5kOiAoZm4pID0+IGZuKGVyciksXG4gICAgb2s6ICgpID0+IE5vbmUoKSxcbiAgICBlcnI6ICgpID0+IFNvbWUoZXJyKSxcbiAgICBtYXA6ICgpID0+IEVycihlcnIpLFxuICAgIG1hcE9yOiAoZGVmYXVsdFZhbHVlKSA9PiBkZWZhdWx0VmFsdWUsXG4gICAgbWFwT3JFbHNlOiAoZ2V0RGVmYXVsdFZhbHVlKSA9PiBnZXREZWZhdWx0VmFsdWUoZXJyKSxcbiAgICBtYXBFcnI6IChmbikgPT4gRXJyKGZuKGVycikpLFxuICAgIGV4cGVjdDogKG1zZykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgfSxcbiAgICBleHBlY3RFcnI6ICgpID0+IGVycixcbiAgICB1bndyYXA6ICgpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlcnJ9YCk7XG4gICAgfSxcbiAgICB1bndyYXBFcnI6ICgpID0+IGVycixcbiAgICB1bndyYXBPcjogKGRlZmF1bHRWYWx1ZSkgPT4gZGVmYXVsdFZhbHVlLFxuICAgIHVud3JhcE9yRWxzZTogKGdldERlZmF1bHRWYWx1ZSkgPT4gZ2V0RGVmYXVsdFZhbHVlKGVyciksXG4gICAgYW5kOiAoKSA9PiBFcnIoZXJyKSxcbiAgICBhbmRUaGVuOiAoKSA9PiBFcnIoZXJyKSxcbiAgICBvcjogKHJlcykgPT4gcmVzLFxuICAgIG9yRWxzZTogKGdldFJlcykgPT4gZ2V0UmVzKGVycilcbiAgfTtcbiAgcmV0dXJuIHNlbGY7XG59XG5mdW5jdGlvbiBOb25lKCkge1xuICBjb25zdCBzZWxmID0ge1xuICAgIGFuZDogKCkgPT4gTm9uZSgpLFxuICAgIGFuZFRoZW46ICgpID0+IE5vbmUoKSxcbiAgICBleHBlY3Q6IChtc2cpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH0sXG4gICAgZmlsdGVyOiAoKSA9PiBzZWxmLFxuICAgIGlzU29tZTogKCkgPT4gZmFsc2UsXG4gICAgaXNTb21lQW5kOiAoKSA9PiBmYWxzZSxcbiAgICBpc05vbmU6ICgpID0+IHRydWUsXG4gICAgbWFwOiAoKSA9PiBOb25lKCksXG4gICAgbWFwT3I6IChkZWZhdWx0VmFsdWUpID0+IGRlZmF1bHRWYWx1ZSxcbiAgICBtYXBPckVsc2U6IChnZXREZWZhdWx0VmFsdWUpID0+IGdldERlZmF1bHRWYWx1ZSgpLFxuICAgIG9rT3I6IChlcnIpID0+IEVycihlcnIpLFxuICAgIG9rT3JFbHNlOiAoZ2V0RXJyKSA9PiBFcnIoZ2V0RXJyKCkpLFxuICAgIG9yOiAob3B0KSA9PiBvcHQsXG4gICAgb3JFbHNlOiAoZm4pID0+IGZuKCksXG4gICAgdW53cmFwOiAoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwYW5pYyEgY2FsbCBgdW53cmFwYCBvbiBhIGBOb25lYCB2YWx1ZVwiKTtcbiAgICB9LFxuICAgIHVud3JhcE9yOiAoZGVmYXVsdFZhbHVlKSA9PiBkZWZhdWx0VmFsdWUsXG4gICAgdW53cmFwT3JFbHNlOiAoZ2V0RGVmYXVsdFZhbHVlKSA9PiBnZXREZWZhdWx0VmFsdWUoKSxcbiAgICB4b3I6IChvcHQpID0+IHtcbiAgICAgIGlmIChvcHQuaXNTb21lKCkpIHtcbiAgICAgICAgcmV0dXJuIG9wdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHNlbGY7XG59XG5mdW5jdGlvbiBTb21lKHZhbHVlKSB7XG4gIGNvbnN0IHNlbGYgPSB7XG4gICAgYW5kOiAob3B0KSA9PiBvcHQsXG4gICAgYW5kVGhlbjogKGZuKSA9PiBmbih2YWx1ZSksXG4gICAgZXhwZWN0OiAoKSA9PiB2YWx1ZSxcbiAgICBmaWx0ZXI6IChmbikgPT4ge1xuICAgICAgaWYgKGZuKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gc2VsZjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBOb25lKCk7XG4gICAgfSxcbiAgICBpc1NvbWU6ICgpID0+IHRydWUsXG4gICAgaXNTb21lQW5kOiAoZm4pID0+IGZuKHZhbHVlKSxcbiAgICBpc05vbmU6ICgpID0+IGZhbHNlLFxuICAgIG1hcDogKGZuKSA9PiBTb21lKGZuKHZhbHVlKSksXG4gICAgbWFwT3I6IChfLCBmbikgPT4gZm4odmFsdWUpLFxuICAgIG1hcE9yRWxzZTogKF8sIGZuKSA9PiBmbih2YWx1ZSksXG4gICAgb2tPcjogKCkgPT4gT2sodmFsdWUpLFxuICAgIG9rT3JFbHNlOiAoKSA9PiBPayh2YWx1ZSksXG4gICAgb3I6ICgpID0+IHNlbGYsXG4gICAgb3JFbHNlOiAoKSA9PiBzZWxmLFxuICAgIHVud3JhcDogKCkgPT4gdmFsdWUsXG4gICAgdW53cmFwT3I6ICgpID0+IHZhbHVlLFxuICAgIHVud3JhcE9yRWxzZTogKCkgPT4gdmFsdWUsXG4gICAgeG9yOiAob3B0KSA9PiB7XG4gICAgICBpZiAob3B0LmlzTm9uZSgpKSB7XG4gICAgICAgIHJldHVybiBzZWxmO1xuICAgICAgfVxuICAgICAgcmV0dXJuIE5vbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBzZWxmO1xufVxuXG4vLyBzcmMvdG9fb3B0aW9uLnRzXG5mdW5jdGlvbiB0b09wdGlvbihhcmcpIHtcbiAgaWYgKGFyZyA9PT0gbnVsbCB8fCBhcmcgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBOb25lKCk7XG4gIH1cbiAgcmV0dXJuIFNvbWUoYXJnKTtcbn1cblxuLy8gc3JjL2dldF9yZXN1bHQudHNcbmZ1bmN0aW9uIGdldFJlc3VsdChwcm9taXNlKSB7XG4gIHJldHVybiBwcm9taXNlLnRoZW4oXG4gICAgKHJlc3BvbnNlKSA9PiBPayhyZXNwb25zZSksXG4gICAgKGVycikgPT4gRXJyKGVycilcbiAgKTtcbn1cblxuLy8gc3JjL3Vud3JhcC50c1xuZnVuY3Rpb24gdW53cmFwKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwYW5pYyEgY2FsbCBcXGB1bndyYXBcXGAgb24gYSBcXGAke3ZhbHVlfVxcYCB2YWx1ZWApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLy8gc3JjL3Vud3JhcF9vci50c1xuZnVuY3Rpb24gdW53cmFwT3IodmFsdWUsIGRlZmF1bHRWYWx1ZSkge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBzcmMvdW53cmFwX29yX2Vsc2UudHNcbmZ1bmN0aW9uIHVud3JhcE9yRWxzZSh2YWx1ZSwgZ2V0RGVmYXVsdFZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGdldERlZmF1bHRWYWx1ZSgpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLy8gc3JjL3RyeV9jYXRjaC50c1xuZnVuY3Rpb24gdHJ5Q2F0Y2goZm4pIHtcbiAgbGV0IHJlc3VsdDtcbiAgdHJ5IHtcbiAgICByZXN1bHQgPSBmbigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIEVycihlKTtcbiAgfVxuICByZXR1cm4gT2socmVzdWx0KTtcbn1cbmV4cG9ydCB7XG4gIEVycixcbiAgTm9uZSxcbiAgT2ssXG4gIFNvbWUsXG4gIGdldFJlc3VsdCxcbiAgdG9PcHRpb24sXG4gIHRyeUNhdGNoLFxuICB1bndyYXAsXG4gIHVud3JhcE9yLFxuICB1bndyYXBPckVsc2Vcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwIiwidmFyIGU9c2V0VGltZW91dDtmdW5jdGlvbiB0KHQsbil7dmFyIHU9bi51c2VDYWNoZWRTZXRUaW1lb3V0P2U6c2V0VGltZW91dDtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3UoZSx0KX0pKX1mdW5jdGlvbiBuKGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSx1PW4udXNlQ2FjaGVkU2V0VGltZW91dCxyPXQoZSx7dXNlQ2FjaGVkU2V0VGltZW91dDp1fSk7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gci50aGVuKChmdW5jdGlvbigpe3JldHVybiBlfSkpfXJldHVybiBvLnRoZW49ZnVuY3Rpb24oKXtyZXR1cm4gci50aGVuLmFwcGx5KHIsYXJndW1lbnRzKX0sby5jYXRjaD1Qcm9taXNlLnJlc29sdmUoKS5jYXRjaCxvfWV4cG9ydCBkZWZhdWx0IG47XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIGNvbXBvc2VSZWZzKCkge1xuICAgIHZhciByZWZzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgcmVmc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICBpZiAocmVmcy5sZW5ndGggPT09IDIpIHsgLy8gbWljcm8tb3B0aW1pemUgdGhlIGhvdCBwYXRoXG4gICAgICAgIHJldHVybiBjb21wb3NlVHdvUmVmcyhyZWZzWzBdLCByZWZzWzFdKSB8fCBudWxsO1xuICAgIH1cbiAgICB2YXIgY29tcG9zZWRSZWYgPSByZWZzLnNsaWNlKDEpLnJlZHVjZShmdW5jdGlvbiAoc2VtaUNvbWJpbmVkUmVmLCByZWZUb0luY2x1ZGUpIHsgcmV0dXJuIGNvbXBvc2VUd29SZWZzKHNlbWlDb21iaW5lZFJlZiwgcmVmVG9JbmNsdWRlKTsgfSwgcmVmc1swXSk7XG4gICAgcmV0dXJuIGNvbXBvc2VkUmVmIHx8IG51bGw7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBjb21wb3NlUmVmcztcbnZhciBjb21wb3NlZFJlZkNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uIGNvbXBvc2VUd29SZWZzKHJlZjEsIHJlZjIpIHtcbiAgICBpZiAocmVmMSAmJiByZWYyKSB7XG4gICAgICAgIHZhciByZWYxQ2FjaGUgPSBjb21wb3NlZFJlZkNhY2hlLmdldChyZWYxKSB8fCBuZXcgV2Vha01hcCgpO1xuICAgICAgICBjb21wb3NlZFJlZkNhY2hlLnNldChyZWYxLCByZWYxQ2FjaGUpO1xuICAgICAgICB2YXIgY29tcG9zZWRSZWYgPSByZWYxQ2FjaGUuZ2V0KHJlZjIpIHx8IChmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHVwZGF0ZVJlZihyZWYxLCBpbnN0YW5jZSk7XG4gICAgICAgICAgICB1cGRhdGVSZWYocmVmMiwgaW5zdGFuY2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVmMUNhY2hlLnNldChyZWYyLCBjb21wb3NlZFJlZik7XG4gICAgICAgIHJldHVybiBjb21wb3NlZFJlZjtcbiAgICB9XG4gICAgaWYgKCFyZWYxKSB7XG4gICAgICAgIHJldHVybiByZWYyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlZjE7XG4gICAgfVxufVxuZnVuY3Rpb24gdXBkYXRlUmVmKHJlZiwgaW5zdGFuY2UpIHtcbiAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZWYoaW5zdGFuY2UpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSBpbnN0YW5jZTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb21wb3NlUmVmcy5qcy5tYXAiLCIvLyBzcmMvaW5kZXgudHNcbmltcG9ydCBTZWxlY3QgZnJvbSBcInJlYWN0LXNlbGVjdFwiO1xuXG4vLyBzcmMvdXNlQXN5bmNQYWdpbmF0ZS50c1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgYXMgdXNlQ2FsbGJhY2syLCB1c2VTdGF0ZSBhcyB1c2VTdGF0ZTIgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gc3JjL3VzZUFzeW5jUGFnaW5hdGVCYXNlLnRzXG5pbXBvcnQgeyB1c2VMYXp5UmVmIH0gZnJvbSBcIkB2dGFpdHMvdXNlLWxhenktcmVmXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdXNlSXNNb3VudGVkUmVmIGZyb20gXCJ1c2UtaXMtbW91bnRlZC1yZWZcIjtcbmltcG9ydCB1c2VMYXRlc3QgZnJvbSBcInVzZS1sYXRlc3RcIjtcblxuLy8gc3JjL2RlZmF1bHRSZWR1Y2VPcHRpb25zLnRzXG52YXIgZGVmYXVsdFJlZHVjZU9wdGlvbnMgPSAocHJldk9wdGlvbnMsIGxvYWRlZE9wdGlvbnMpID0+IFsuLi5wcmV2T3B0aW9ucywgLi4ubG9hZGVkT3B0aW9uc107XG5cbi8vIHNyYy9kZWZhdWx0U2hvdWxkTG9hZE1vcmUudHNcbnZhciBBVkFJTEFCTEVfREVMVEEgPSAxMDtcbnZhciBkZWZhdWx0U2hvdWxkTG9hZE1vcmUgPSAoc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQsIHNjcm9sbFRvcCkgPT4ge1xuICBjb25zdCBib3R0b21Cb3JkZXIgPSBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgLSBBVkFJTEFCTEVfREVMVEE7XG4gIHJldHVybiBib3R0b21Cb3JkZXIgPCBzY3JvbGxUb3A7XG59O1xuXG4vLyBzcmMvZ2V0SW5pdGlhbENhY2hlLnRzXG52YXIgZ2V0SW5pdGlhbENhY2hlID0gKHBhcmFtcykgPT4gKHtcbiAgaXNGaXJzdExvYWQ6IHRydWUsXG4gIG9wdGlvbnM6IFtdLFxuICBoYXNNb3JlOiB0cnVlLFxuICBpc0xvYWRpbmc6IGZhbHNlLFxuICBsb2NrZWRVbnRpbDogMCxcbiAgYWRkaXRpb25hbDogcGFyYW1zLmFkZGl0aW9uYWxcbn0pO1xuXG4vLyBzcmMvZ2V0SW5pdGlhbE9wdGlvbnNDYWNoZS50c1xudmFyIGdldEluaXRpYWxPcHRpb25zQ2FjaGUgPSAoe1xuICBvcHRpb25zLFxuICBkZWZhdWx0T3B0aW9ucyxcbiAgYWRkaXRpb25hbCxcbiAgZGVmYXVsdEFkZGl0aW9uYWxcbn0pID0+IHtcbiAgY29uc3QgaW5pdGlhbE9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucyA9PT0gdHJ1ZSA/IG51bGwgOiBBcnJheS5pc0FycmF5KGRlZmF1bHRPcHRpb25zKSA/IGRlZmF1bHRPcHRpb25zIDogb3B0aW9ucztcbiAgaWYgKGluaXRpYWxPcHRpb25zKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiXCI6IHtcbiAgICAgICAgaXNGaXJzdExvYWQ6IGZhbHNlLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBvcHRpb25zOiBpbml0aWFsT3B0aW9ucyxcbiAgICAgICAgaGFzTW9yZTogdHJ1ZSxcbiAgICAgICAgbG9ja2VkVW50aWw6IDAsXG4gICAgICAgIGFkZGl0aW9uYWw6IGRlZmF1bHRBZGRpdGlvbmFsIHx8IGFkZGl0aW9uYWxcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiB7fTtcbn07XG5cbi8vIHNyYy9yZXF1ZXN0T3B0aW9ucy50c1xuaW1wb3J0IHsgZ2V0UmVzdWx0IH0gZnJvbSBcImtydXN0eWtyYWJcIjtcbmltcG9ydCBzbGVlcCBmcm9tIFwic2xlZXAtcHJvbWlzZVwiO1xuXG4vLyBzcmMvdmFsaWRhdGVSZXNwb25zZS50c1xudmFyIGVycm9yVGV4dCA9ICdbcmVhY3Qtc2VsZWN0LWFzeW5jLXBhZ2luYXRlXSByZXNwb25zZSBvZiBcImxvYWRPcHRpb25zXCIgc2hvdWxkIGJlIGFuIG9iamVjdCB3aXRoIFwib3B0aW9uc1wiIHByb3AsIHdoaWNoIGNvbnRhaW5zIGFycmF5IG9mIG9wdGlvbnMuJztcbnZhciBjaGVja0lzUmVzcG9uc2UgPSAocmVzcG9uc2UpID0+IHtcbiAgaWYgKCFyZXNwb25zZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCB7IG9wdGlvbnMsIGhhc01vcmUgfSA9IHJlc3BvbnNlO1xuICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBoYXNNb3JlICE9PSBcImJvb2xlYW5cIiAmJiB0eXBlb2YgaGFzTW9yZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgdmFsaWRhdGVSZXNwb25zZSA9IChyZXNwb25zZSkgPT4ge1xuICBpZiAoIWNoZWNrSXNSZXNwb25zZShyZXNwb25zZSkpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yVGV4dCwgXCJSZWNlaXZlZDpcIiwgcmVzcG9uc2UpO1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvclRleHQpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL3JlcXVlc3RPcHRpb25zLnRzXG52YXIgcmVxdWVzdE9wdGlvbnMgPSBhc3luYyAoY2FsbGVyLCBwYXJhbXNSZWYsIG9wdGlvbnNDYWNoZVJlZiwgZGVib3VuY2VUaW1lb3V0LCBzZXRPcHRpb25zQ2FjaGUsIHJlZHVjZU9wdGlvbnMsIGlzTW91bnRlZFJlZikgPT4ge1xuICBjb25zdCBjdXJyZW50SW5wdXRWYWx1ZSA9IHBhcmFtc1JlZi5jdXJyZW50LmlucHV0VmFsdWU7XG4gIGNvbnN0IGlzQ2FjaGVFbXB0eSA9ICFvcHRpb25zQ2FjaGVSZWYuY3VycmVudFtjdXJyZW50SW5wdXRWYWx1ZV07XG4gIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gaXNDYWNoZUVtcHR5ID8gZ2V0SW5pdGlhbENhY2hlKHBhcmFtc1JlZi5jdXJyZW50KSA6IG9wdGlvbnNDYWNoZVJlZi5jdXJyZW50W2N1cnJlbnRJbnB1dFZhbHVlXTtcbiAgaWYgKGN1cnJlbnRPcHRpb25zLmlzTG9hZGluZyB8fCAhY3VycmVudE9wdGlvbnMuaGFzTW9yZSB8fCBjdXJyZW50T3B0aW9ucy5sb2NrZWRVbnRpbCA+IERhdGUubm93KCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc2V0T3B0aW9uc0NhY2hlKFxuICAgIChwcmV2T3B0aW9uc0NhY2hlKSA9PiAoe1xuICAgICAgLi4ucHJldk9wdGlvbnNDYWNoZSxcbiAgICAgIFtjdXJyZW50SW5wdXRWYWx1ZV06IHtcbiAgICAgICAgLi4uY3VycmVudE9wdGlvbnMsXG4gICAgICAgIGlzTG9hZGluZzogdHJ1ZVxuICAgICAgfVxuICAgIH0pXG4gICk7XG4gIGlmIChkZWJvdW5jZVRpbWVvdXQgPiAwICYmIGNhbGxlciA9PT0gXCJpbnB1dC1jaGFuZ2VcIikge1xuICAgIGF3YWl0IHNsZWVwKGRlYm91bmNlVGltZW91dCk7XG4gICAgY29uc3QgbmV3SW5wdXRWYWx1ZSA9IHBhcmFtc1JlZi5jdXJyZW50LmlucHV0VmFsdWU7XG4gICAgaWYgKGN1cnJlbnRJbnB1dFZhbHVlICE9PSBuZXdJbnB1dFZhbHVlKSB7XG4gICAgICBzZXRPcHRpb25zQ2FjaGUoKHByZXZPcHRpb25zQ2FjaGUpID0+IHtcbiAgICAgICAgaWYgKGlzQ2FjaGVFbXB0eSkge1xuICAgICAgICAgIGNvbnN0IHsgW2N1cnJlbnRJbnB1dFZhbHVlXTogaXRlbUZvckRlbGV0ZSwgLi4ucmVzdENhY2hlIH0gPSBwcmV2T3B0aW9uc0NhY2hlO1xuICAgICAgICAgIHJldHVybiByZXN0Q2FjaGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2T3B0aW9uc0NhY2hlLFxuICAgICAgICAgIFtjdXJyZW50SW5wdXRWYWx1ZV06IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRPcHRpb25zLFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBjb25zdCB7IGxvYWRPcHRpb25zLCByZWxvYWRPbkVycm9yVGltZW91dCA9IDAgfSA9IHBhcmFtc1JlZi5jdXJyZW50O1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRSZXN1bHQoXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihcbiAgICAgICgpID0+IGxvYWRPcHRpb25zKFxuICAgICAgICBjdXJyZW50SW5wdXRWYWx1ZSxcbiAgICAgICAgY3VycmVudE9wdGlvbnMub3B0aW9ucyxcbiAgICAgICAgY3VycmVudE9wdGlvbnMuYWRkaXRpb25hbFxuICAgICAgKVxuICAgIClcbiAgKTtcbiAgaWYgKCFpc01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocmVzdWx0LmlzRXJyKCkpIHtcbiAgICBzZXRPcHRpb25zQ2FjaGUoKHByZXZPcHRpb25zQ2FjaGUpID0+ICh7XG4gICAgICAuLi5wcmV2T3B0aW9uc0NhY2hlLFxuICAgICAgW2N1cnJlbnRJbnB1dFZhbHVlXToge1xuICAgICAgICAuLi5jdXJyZW50T3B0aW9ucyxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgbG9ja2VkVW50aWw6IERhdGUubm93KCkgKyByZWxvYWRPbkVycm9yVGltZW91dFxuICAgICAgfVxuICAgIH0pKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgcmVzcG9uc2UgPSByZXN1bHQudW53cmFwKCk7XG4gIGlmICh2YWxpZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgaGFzTW9yZSB9ID0gcmVzcG9uc2U7XG4gICAgY29uc3QgbmV3QWRkaXRpb25hbCA9IE9iamVjdC5oYXNPd24ocmVzcG9uc2UsIFwiYWRkaXRpb25hbFwiKSA/IHJlc3BvbnNlLmFkZGl0aW9uYWwgOiBjdXJyZW50T3B0aW9ucy5hZGRpdGlvbmFsO1xuICAgIHNldE9wdGlvbnNDYWNoZSgocHJldk9wdGlvbnNDYWNoZSkgPT4gKHtcbiAgICAgIC4uLnByZXZPcHRpb25zQ2FjaGUsXG4gICAgICBbY3VycmVudElucHV0VmFsdWVdOiB7XG4gICAgICAgIC4uLmN1cnJlbnRPcHRpb25zLFxuICAgICAgICBvcHRpb25zOiByZWR1Y2VPcHRpb25zKGN1cnJlbnRPcHRpb25zLm9wdGlvbnMsIG9wdGlvbnMsIG5ld0FkZGl0aW9uYWwpLFxuICAgICAgICBoYXNNb3JlOiAhIWhhc01vcmUsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGlzRmlyc3RMb2FkOiBmYWxzZSxcbiAgICAgICAgYWRkaXRpb25hbDogbmV3QWRkaXRpb25hbFxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxufTtcblxuLy8gc3JjL3VzZUFzeW5jUGFnaW5hdGVCYXNlLnRzXG52YXIgaW5jcmVhc2VTdGF0ZUlkID0gKHByZXZTdGF0ZUlkKSA9PiBwcmV2U3RhdGVJZCArIDE7XG52YXIgdXNlQXN5bmNQYWdpbmF0ZUJhc2UgPSAocGFyYW1zLCBkZXBzID0gW10pID0+IHtcbiAgY29uc3Qge1xuICAgIGRlZmF1bHRPcHRpb25zLFxuICAgIGxvYWRPcHRpb25zT25NZW51T3BlbiA9IHRydWUsXG4gICAgZGVib3VuY2VUaW1lb3V0ID0gMCxcbiAgICBpbnB1dFZhbHVlLFxuICAgIG1lbnVJc09wZW4sXG4gICAgZmlsdGVyT3B0aW9uID0gbnVsbCxcbiAgICByZWR1Y2VPcHRpb25zID0gZGVmYXVsdFJlZHVjZU9wdGlvbnMsXG4gICAgc2hvdWxkTG9hZE1vcmUgPSBkZWZhdWx0U2hvdWxkTG9hZE1vcmVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgaXNNb3VudGVkUmVmID0gdXNlSXNNb3VudGVkUmVmKCk7XG4gIGNvbnN0IHJlZHVjZU9wdGlvbnNSZWYgPSB1c2VMYXRlc3QocmVkdWNlT3B0aW9ucyk7XG4gIGNvbnN0IGxvYWRPcHRpb25zT25NZW51T3BlblJlZiA9IHVzZUxhdGVzdChsb2FkT3B0aW9uc09uTWVudU9wZW4pO1xuICBjb25zdCBpc0luaXRSZWYgPSB1c2VSZWYodHJ1ZSk7XG4gIGNvbnN0IHBhcmFtc1JlZiA9IHVzZVJlZihwYXJhbXMpO1xuICBwYXJhbXNSZWYuY3VycmVudCA9IHBhcmFtcztcbiAgY29uc3QgW19zdGF0ZUlkLCBzZXRTdGF0ZUlkXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBvcHRpb25zQ2FjaGVSZWYgPSB1c2VMYXp5UmVmKCgpID0+IGdldEluaXRpYWxPcHRpb25zQ2FjaGUocGFyYW1zKSk7XG4gIGNvbnN0IGNhbGxSZXF1ZXN0T3B0aW9uc1JlZiA9IHVzZUxhdGVzdChcbiAgICAoY2FsbGVyKSA9PiB7XG4gICAgICByZXF1ZXN0T3B0aW9ucyhcbiAgICAgICAgY2FsbGVyLFxuICAgICAgICBwYXJhbXNSZWYsXG4gICAgICAgIG9wdGlvbnNDYWNoZVJlZixcbiAgICAgICAgZGVib3VuY2VUaW1lb3V0LFxuICAgICAgICAocmVkdWNlU3RhdGUpID0+IHtcbiAgICAgICAgICBvcHRpb25zQ2FjaGVSZWYuY3VycmVudCA9IHJlZHVjZVN0YXRlKG9wdGlvbnNDYWNoZVJlZi5jdXJyZW50KTtcbiAgICAgICAgICBpZiAoaXNNb3VudGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNldFN0YXRlSWQoaW5jcmVhc2VTdGF0ZUlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlZHVjZU9wdGlvbnNSZWYuY3VycmVudCxcbiAgICAgICAgaXNNb3VudGVkUmVmXG4gICAgICApO1xuICAgIH1cbiAgKTtcbiAgY29uc3QgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50SW5wdXRWYWx1ZSA9IHBhcmFtc1JlZi5jdXJyZW50LmlucHV0VmFsdWU7XG4gICAgY29uc3QgY3VycmVudE9wdGlvbnMyID0gb3B0aW9uc0NhY2hlUmVmLmN1cnJlbnRbY3VycmVudElucHV0VmFsdWVdO1xuICAgIGlmIChjdXJyZW50T3B0aW9uczIpIHtcbiAgICAgIGNhbGxSZXF1ZXN0T3B0aW9uc1JlZi5jdXJyZW50KFwibWVudS1zY3JvbGxcIik7XG4gICAgfVxuICB9LCBbY2FsbFJlcXVlc3RPcHRpb25zUmVmLCBvcHRpb25zQ2FjaGVSZWZdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNJbml0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzSW5pdFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnNDYWNoZVJlZi5jdXJyZW50ID0ge307XG4gICAgICBzZXRTdGF0ZUlkKGluY3JlYXNlU3RhdGVJZCk7XG4gICAgfVxuICAgIGlmIChkZWZhdWx0T3B0aW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgY2FsbFJlcXVlc3RPcHRpb25zUmVmLmN1cnJlbnQoXCJhdXRvbG9hZFwiKTtcbiAgICB9XG4gIH0sIGRlcHMpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZW51SXNPcGVuICYmICFvcHRpb25zQ2FjaGVSZWYuY3VycmVudFtpbnB1dFZhbHVlXSkge1xuICAgICAgY2FsbFJlcXVlc3RPcHRpb25zUmVmLmN1cnJlbnQoXCJpbnB1dC1jaGFuZ2VcIik7XG4gICAgfVxuICB9LCBbY2FsbFJlcXVlc3RPcHRpb25zUmVmLCBpbnB1dFZhbHVlLCBtZW51SXNPcGVuLCBvcHRpb25zQ2FjaGVSZWZdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobWVudUlzT3BlbiAmJiAhb3B0aW9uc0NhY2hlUmVmLmN1cnJlbnRbXCJcIl0gJiYgbG9hZE9wdGlvbnNPbk1lbnVPcGVuUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNhbGxSZXF1ZXN0T3B0aW9uc1JlZi5jdXJyZW50KFwibWVudS10b2dnbGVcIik7XG4gICAgfVxuICB9LCBbXG4gICAgY2FsbFJlcXVlc3RPcHRpb25zUmVmLFxuICAgIGxvYWRPcHRpb25zT25NZW51T3BlblJlZixcbiAgICBtZW51SXNPcGVuLFxuICAgIG9wdGlvbnNDYWNoZVJlZlxuICBdKTtcbiAgY29uc3QgY3VycmVudE9wdGlvbnMgPSBvcHRpb25zQ2FjaGVSZWYuY3VycmVudFtpbnB1dFZhbHVlXSB8fCBnZXRJbml0aWFsQ2FjaGUocGFyYW1zKTtcbiAgcmV0dXJuIHtcbiAgICBoYW5kbGVTY3JvbGxlZFRvQm90dG9tLFxuICAgIHNob3VsZExvYWRNb3JlLFxuICAgIGZpbHRlck9wdGlvbixcbiAgICBpc0xvYWRpbmc6IGN1cnJlbnRPcHRpb25zLmlzTG9hZGluZyB8fCBjdXJyZW50T3B0aW9ucy5sb2NrZWRVbnRpbCA+IERhdGUubm93KCksXG4gICAgaXNGaXJzdExvYWQ6IGN1cnJlbnRPcHRpb25zLmlzRmlyc3RMb2FkLFxuICAgIG9wdGlvbnM6IGN1cnJlbnRPcHRpb25zLm9wdGlvbnNcbiAgfTtcbn07XG5cbi8vIHNyYy91c2VBc3luY1BhZ2luYXRlLnRzXG52YXIgdXNlQXN5bmNQYWdpbmF0ZSA9IChwYXJhbXMsIGRlcHMgPSBbXSkgPT4ge1xuICBjb25zdCB7XG4gICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVBhcmFtLFxuICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW5QYXJhbSxcbiAgICBkZWZhdWx0SW5wdXRWYWx1ZTogZGVmYXVsdElucHV0VmFsdWVQYXJhbSxcbiAgICBkZWZhdWx0TWVudUlzT3BlbjogZGVmYXVsdE1lbnVJc09wZW5QYXJhbSxcbiAgICBvbklucHV0Q2hhbmdlOiBvbklucHV0Q2hhbmdlUGFyYW0sXG4gICAgb25NZW51Q2xvc2U6IG9uTWVudUNsb3NlUGFyYW0sXG4gICAgb25NZW51T3Blbjogb25NZW51T3BlblBhcmFtXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IFtpbnB1dFZhbHVlU3RhdGUsIHNldElucHV0VmFsdWVdID0gdXNlU3RhdGUyKFxuICAgIGRlZmF1bHRJbnB1dFZhbHVlUGFyYW0gfHwgXCJcIlxuICApO1xuICBjb25zdCBbbWVudUlzT3BlblN0YXRlLCBzZXRNZW51SXNPcGVuXSA9IHVzZVN0YXRlMighIWRlZmF1bHRNZW51SXNPcGVuUGFyYW0pO1xuICBjb25zdCBpbnB1dFZhbHVlID0gdHlwZW9mIGlucHV0VmFsdWVQYXJhbSA9PT0gXCJzdHJpbmdcIiA/IGlucHV0VmFsdWVQYXJhbSA6IGlucHV0VmFsdWVTdGF0ZTtcbiAgY29uc3QgbWVudUlzT3BlbiA9IHR5cGVvZiBtZW51SXNPcGVuUGFyYW0gPT09IFwiYm9vbGVhblwiID8gbWVudUlzT3BlblBhcmFtIDogbWVudUlzT3BlblN0YXRlO1xuICBjb25zdCBvbklucHV0Q2hhbmdlID0gdXNlQ2FsbGJhY2syKFxuICAgIChuZXh0SW5wdXRWYWx1ZSwgYWN0aW9uTWV0YSkgPT4ge1xuICAgICAgaWYgKG9uSW5wdXRDaGFuZ2VQYXJhbSkge1xuICAgICAgICBvbklucHV0Q2hhbmdlUGFyYW0obmV4dElucHV0VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgICAgfVxuICAgICAgc2V0SW5wdXRWYWx1ZShuZXh0SW5wdXRWYWx1ZSk7XG4gICAgfSxcbiAgICBbb25JbnB1dENoYW5nZVBhcmFtXVxuICApO1xuICBjb25zdCBvbk1lbnVDbG9zZSA9IHVzZUNhbGxiYWNrMigoKSA9PiB7XG4gICAgaWYgKG9uTWVudUNsb3NlUGFyYW0pIHtcbiAgICAgIG9uTWVudUNsb3NlUGFyYW0oKTtcbiAgICB9XG4gICAgc2V0TWVudUlzT3BlbihmYWxzZSk7XG4gIH0sIFtvbk1lbnVDbG9zZVBhcmFtXSk7XG4gIGNvbnN0IG9uTWVudU9wZW4gPSB1c2VDYWxsYmFjazIoKCkgPT4ge1xuICAgIGlmIChvbk1lbnVPcGVuUGFyYW0pIHtcbiAgICAgIG9uTWVudU9wZW5QYXJhbSgpO1xuICAgIH1cbiAgICBzZXRNZW51SXNPcGVuKHRydWUpO1xuICB9LCBbb25NZW51T3BlblBhcmFtXSk7XG4gIGNvbnN0IGJhc2VSZXN1bHQgPSB1c2VBc3luY1BhZ2luYXRlQmFzZShcbiAgICB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBpbnB1dFZhbHVlLFxuICAgICAgbWVudUlzT3BlblxuICAgIH0sXG4gICAgZGVwc1xuICApO1xuICByZXR1cm4ge1xuICAgIC4uLmJhc2VSZXN1bHQsXG4gICAgaW5wdXRWYWx1ZSxcbiAgICBtZW51SXNPcGVuLFxuICAgIG9uSW5wdXRDaGFuZ2UsXG4gICAgb25NZW51Q2xvc2UsXG4gICAgb25NZW51T3BlblxuICB9O1xufTtcblxuLy8gc3JjL3VzZUNvbXBvbmVudHMudHNcbmltcG9ydCB7IHVzZU1lbW8gYXMgdXNlTWVtbzIgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbXBvbmVudHMgYXMgZGVmYXVsdENvbXBvbmVudHMgfSBmcm9tIFwicmVhY3Qtc2VsZWN0XCI7XG5cbi8vIHNyYy93cmFwTWVudUxpc3QudHN4XG5pbXBvcnQgY29tcG9zZVJlZnMgZnJvbSBcIkBzZXpuYW0vY29tcG9zZS1yZWFjdC1yZWZzXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayBhcyB1c2VDYWxsYmFjazMsIHVzZUVmZmVjdCBhcyB1c2VFZmZlY3QyLCB1c2VNZW1vLCB1c2VSZWYgYXMgdXNlUmVmMiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsganN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG52YXIgQ0hFQ0tfVElNRU9VVCA9IDMwMDtcbmZ1bmN0aW9uIHdyYXBNZW51TGlzdChNZW51TGlzdDIpIHtcbiAgZnVuY3Rpb24gV3JhcHBlZE1lbnVMaXN0KHByb3BzKSB7XG4gICAgY29uc3QgeyBzZWxlY3RQcm9wcywgaW5uZXJSZWYgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbSwgc2hvdWxkTG9hZE1vcmUgfSA9IHNlbGVjdFByb3BzO1xuICAgIGNvbnN0IGNoZWNrVGltZW91dFJlZiA9IHVzZVJlZjIobnVsbCk7XG4gICAgY29uc3QgbWVudUxpc3RSZWYgPSB1c2VSZWYyKG51bGwpO1xuICAgIGNvbnN0IHNob3VsZEhhbmRsZSA9IHVzZUNhbGxiYWNrMygoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IG1lbnVMaXN0UmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gZWw7XG4gICAgICByZXR1cm4gc2hvdWxkTG9hZE1vcmUoc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQsIHNjcm9sbFRvcCk7XG4gICAgfSwgW3Nob3VsZExvYWRNb3JlXSk7XG4gICAgY29uc3QgY2hlY2tBbmRIYW5kbGUgPSB1c2VDYWxsYmFjazMoKCkgPT4ge1xuICAgICAgaWYgKHNob3VsZEhhbmRsZSgpKSB7XG4gICAgICAgIGlmIChoYW5kbGVTY3JvbGxlZFRvQm90dG9tKSB7XG4gICAgICAgICAgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW3Nob3VsZEhhbmRsZSwgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbV0pO1xuICAgIGNvbnN0IHNldENoZWNrQW5kSGFuZGxlVGltZW91dCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gKCkgPT4ge1xuICAgICAgICBjaGVja0FuZEhhbmRsZSgpO1xuICAgICAgICBjaGVja1RpbWVvdXRSZWYuY3VycmVudCA9IHNldFRpbWVvdXQocmVzLCBDSEVDS19USU1FT1VUKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0sIFtjaGVja0FuZEhhbmRsZV0pO1xuICAgIHVzZUVmZmVjdDIoKCkgPT4ge1xuICAgICAgc2V0Q2hlY2tBbmRIYW5kbGVUaW1lb3V0KCk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoY2hlY2tUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoY2hlY2tUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIE1lbnVMaXN0MixcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGlubmVyUmVmOiBjb21wb3NlUmVmcyhpbm5lclJlZiwgbWVudUxpc3RSZWYpXG4gICAgICB9XG4gICAgKTtcbiAgfVxuICByZXR1cm4gV3JhcHBlZE1lbnVMaXN0O1xufVxuXG4vLyBzcmMvdXNlQ29tcG9uZW50cy50c1xudmFyIE1lbnVMaXN0ID0gd3JhcE1lbnVMaXN0KFxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGZpeCB0eXBlc1xuICBkZWZhdWx0Q29tcG9uZW50cy5NZW51TGlzdFxuKTtcbnZhciB1c2VDb21wb25lbnRzID0gKGNvbXBvbmVudHMpID0+IHVzZU1lbW8yKFxuICAoKSA9PiAoe1xuICAgIE1lbnVMaXN0LFxuICAgIC4uLmNvbXBvbmVudHNcbiAgfSksXG4gIFtjb21wb25lbnRzXVxuKTtcblxuLy8gc3JjL3dpdGhBc3luY1BhZ2luYXRlLnRzeFxuaW1wb3J0IHsganN4IGFzIGpzeDIgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbnZhciBkZWZhdWx0Q2FjaGVVbmlxcyA9IFtdO1xudmFyIGRlZmF1bHRDb21wb25lbnRzMiA9IHt9O1xuZnVuY3Rpb24gd2l0aEFzeW5jUGFnaW5hdGUoU2VsZWN0Q29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIFdpdGhBc3luY1BhZ2luYXRlKHByb3BzKSB7XG4gICAgY29uc3Qge1xuICAgICAgY29tcG9uZW50cyA9IGRlZmF1bHRDb21wb25lbnRzMixcbiAgICAgIHNlbGVjdFJlZiA9IHZvaWQgMCxcbiAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nUHJvcCxcbiAgICAgIGNhY2hlVW5pcXMgPSBkZWZhdWx0Q2FjaGVVbmlxcyxcbiAgICAgIC4uLnJlc3RcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3QgYXN5bmNQYWdpbmF0ZVByb3BzID0gdXNlQXN5bmNQYWdpbmF0ZShyZXN0LCBjYWNoZVVuaXFzKTtcbiAgICBjb25zdCBwcm9jZXNzZWRDb21wb25lbnRzID0gdXNlQ29tcG9uZW50cyhcbiAgICAgIGNvbXBvbmVudHNcbiAgICApO1xuICAgIGNvbnN0IGlzTG9hZGluZyA9IHR5cGVvZiBpc0xvYWRpbmdQcm9wID09PSBcImJvb2xlYW5cIiA/IGlzTG9hZGluZ1Byb3AgOiBhc3luY1BhZ2luYXRlUHJvcHMuaXNMb2FkaW5nO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4MihcbiAgICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIC4uLmFzeW5jUGFnaW5hdGVQcm9wcyxcbiAgICAgICAgaXNMb2FkaW5nLFxuICAgICAgICBjb21wb25lbnRzOiBwcm9jZXNzZWRDb21wb25lbnRzLFxuICAgICAgICByZWY6IHNlbGVjdFJlZlxuICAgICAgfVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIFdpdGhBc3luY1BhZ2luYXRlO1xufVxuXG4vLyBzcmMvcmVkdWNlR3JvdXBlZE9wdGlvbnMudHNcbnZhciBjaGVja0dyb3VwID0gKGdyb3VwKSA9PiB7XG4gIGlmICghZ3JvdXApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgeyBsYWJlbCwgb3B0aW9ucyB9ID0gZ3JvdXA7XG4gIGlmICh0eXBlb2YgbGFiZWwgIT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGxhYmVsICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgcmVkdWNlR3JvdXBlZE9wdGlvbnMgPSAocHJldk9wdGlvbnMsIGxvYWRlZE9wdGlvbnMpID0+IHtcbiAgY29uc3QgcmVzID0gcHJldk9wdGlvbnMuc2xpY2UoKTtcbiAgY29uc3QgbWFwTGFiZWxUb0luZGV4ID0ge307XG4gIGxldCBwcmV2T3B0aW9uc0luZGV4ID0gMDtcbiAgY29uc3QgcHJldk9wdGlvbnNMZW5ndGggPSBwcmV2T3B0aW9ucy5sZW5ndGg7XG4gIGZvciAoY29uc3Qgb3B0aW9uT3JHcm91cCBvZiBsb2FkZWRPcHRpb25zKSB7XG4gICAgY29uc3QgZ3JvdXAgPSBjaGVja0dyb3VwKG9wdGlvbk9yR3JvdXApID8gb3B0aW9uT3JHcm91cCA6IHtcbiAgICAgIG9wdGlvbnM6IFtvcHRpb25Pckdyb3VwXVxuICAgIH07XG4gICAgY29uc3QgeyBsYWJlbCA9IFwiXCIgfSA9IGdyb3VwO1xuICAgIGxldCBncm91cEluZGV4ID0gbWFwTGFiZWxUb0luZGV4W2xhYmVsXTtcbiAgICBpZiAodHlwZW9mIGdyb3VwSW5kZXggIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGZvciAoOyBwcmV2T3B0aW9uc0luZGV4IDwgcHJldk9wdGlvbnNMZW5ndGggJiYgdHlwZW9mIG1hcExhYmVsVG9JbmRleFtsYWJlbF0gIT09IFwibnVtYmVyXCI7ICsrcHJldk9wdGlvbnNJbmRleCkge1xuICAgICAgICBjb25zdCBwcmV2R3JvdXAgPSBwcmV2T3B0aW9uc1twcmV2T3B0aW9uc0luZGV4XTtcbiAgICAgICAgaWYgKGNoZWNrR3JvdXAocHJldkdyb3VwKSkge1xuICAgICAgICAgIG1hcExhYmVsVG9JbmRleFtwcmV2R3JvdXAubGFiZWwgfHwgXCJcIl0gPSBwcmV2T3B0aW9uc0luZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBncm91cEluZGV4ID0gbWFwTGFiZWxUb0luZGV4W2xhYmVsXTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBncm91cEluZGV4ICE9PSBcIm51bWJlclwiKSB7XG4gICAgICBtYXBMYWJlbFRvSW5kZXhbbGFiZWxdID0gcmVzLmxlbmd0aDtcbiAgICAgIHJlcy5wdXNoKGdyb3VwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzW2dyb3VwSW5kZXhdID0ge1xuICAgICAgICAuLi5yZXNbZ3JvdXBJbmRleF0sXG4gICAgICAgIG9wdGlvbnM6IFsuLi5yZXNbZ3JvdXBJbmRleF0ub3B0aW9ucywgLi4uZ3JvdXAub3B0aW9uc11cbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59O1xuXG4vLyBzcmMvaW5kZXgudHNcbnZhciBBc3luY1BhZ2luYXRlID0gd2l0aEFzeW5jUGFnaW5hdGUoU2VsZWN0KTtcbmV4cG9ydCB7XG4gIEFzeW5jUGFnaW5hdGUsXG4gIGNoZWNrSXNSZXNwb25zZSxcbiAgcmVkdWNlR3JvdXBlZE9wdGlvbnMsXG4gIHVzZUFzeW5jUGFnaW5hdGUsXG4gIHVzZUFzeW5jUGFnaW5hdGVCYXNlLFxuICB1c2VDb21wb25lbnRzLFxuICB2YWxpZGF0ZVJlc3BvbnNlLFxuICB3aXRoQXN5bmNQYWdpbmF0ZSxcbiAgd3JhcE1lbnVMaXN0XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi9zaG9wXCJcblxuZXhwb3J0IGNsYXNzIExheW91dGVyRGF0YSB7XG4gICAgZmlyc3RuYW1lOiBzdHJpbmdcbiAgICBjb21wYW55OiBzdHJpbmdcbiAgICBsYXN0bmFtZTogc3RyaW5nXG4gICAgc3RyZWV0OiBzdHJpbmdcbiAgICBob3VzZU51bWJlcjogc3RyaW5nXG4gICAgemlwOiBzdHJpbmdcbiAgICBjaXR5OiBzdHJpbmdcbiAgICBwaG9uZTogc3RyaW5nXG4gICAgY291bnRyeTogc3RyaW5nXG4gICAgdXN0aWQ6IHN0cmluZ1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZmlyc3RuYW1lID0gXCJcIlxuICAgICAgICB0aGlzLmNvbXBhbnkgPSBcIlwiXG4gICAgICAgIHRoaXMubGFzdG5hbWUgPSBcIlwiXG4gICAgICAgIHRoaXMuc3RyZWV0ID0gXCJcIlxuICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gXCJcIlxuICAgICAgICB0aGlzLnppcCA9IFwiXCJcbiAgICAgICAgdGhpcy5jaXR5ID0gXCJcIlxuICAgICAgICB0aGlzLnBob25lID0gXCJcIlxuICAgICAgICB0aGlzLmNvdW50cnkgPSBcIlwiXG4gICAgICAgIHRoaXMudXN0aWQgPSBcIlwiXG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbnRhY3Qge1xuICAgIHVpZDogbnVtYmVyXG4gICAgdXNlcm5hbWU6IHN0cmluZ1xuICAgIGVtYWlsOiBzdHJpbmdcbiAgICBwYXNzd29yZDogc3RyaW5nXG4gICAgdXVpZDogc3RyaW5nXG4gICAgc2hvcHM6IFNob3BbXVxuICAgIGxheW91dGVyX2RhdGE6IExheW91dGVyRGF0YVxuXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51aWQgPSAwXG4gICAgICAgIHRoaXMudXVpZCA9IFwiXCJcbiAgICAgICAgdGhpcy51c2VybmFtZSA9IFwiXCJcbiAgICAgICAgdGhpcy5lbWFpbCA9IFwiXCJcbiAgICAgICAgdGhpcy5wYXNzd29yZCA9IFwiXCJcbiAgICAgICAgdGhpcy5zaG9wcyA9IFtdXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YSA9IG5ldyBMYXlvdXRlckRhdGEoKVxuICAgIH1cblxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMudWlkID0gaXRlbS5jb250YWN0LnVpZFxuICAgICAgICB0aGlzLnV1aWQgPSBpdGVtLmNvbnRhY3QudXVpZFxuICAgICAgICB0aGlzLmVtYWlsID0gaXRlbS5jb250YWN0LmVtYWlsXG4gICAgICAgIHRoaXMudXNlcm5hbWUgPSBpdGVtLmNvbnRhY3QudXNlcm5hbWVcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmZpcnN0bmFtZSA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLmZpcnN0bmFtZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuY29tcGFueSA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLmNvbXBhbnlcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmxhc3RuYW1lID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEubGFzdG5hbWVcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLnN0cmVldCA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLnN0cmVldFxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuaG91c2VOdW1iZXIgPSBpdGVtLmNvbnRhY3QubGF5b3V0ZXJfZGF0YS5ob3VzZU51bWJlclxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuemlwID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEuemlwXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5jaXR5ID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEuY2l0eVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEucGhvbmUgPSBpdGVtLmNvbnRhY3QubGF5b3V0ZXJfZGF0YS5waG9uZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuY291bnRyeSA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLmNvdW50cnlcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLnVzdGlkID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEudXN0aWRcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Gb3JtRGF0YShmb3JtZGF0YTogYW55LCBzaG9wOiBTaG9wID0gbnVsbCkge1xuXG4gICAgICAgIHRoaXMuZW1haWwgPSBmb3JtZGF0YS5lbWFpbFxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuY29tcGFueSA9IGZvcm1kYXRhLmNvbXBhbnlcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmZpcnN0bmFtZSA9IGZvcm1kYXRhLmZpcnN0bmFtZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEubGFzdG5hbWUgPSBmb3JtZGF0YS5sYXN0bmFtZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuc3RyZWV0ID0gZm9ybWRhdGEuc3RyZWV0XG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5ob3VzZU51bWJlciA9IGZvcm1kYXRhLmhvdXNlTnVtYmVyXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS56aXAgPSBmb3JtZGF0YS56aXBcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmNpdHkgPSBmb3JtZGF0YS5jaXR5XG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5waG9uZSA9IGZvcm1kYXRhLnBob25lXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5jb3VudHJ5ID0gZm9ybWRhdGEuY291bnRyeVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEudXN0aWQgPSBmb3JtZGF0YS51c3RpZFxuICAgICAgICBpZihzaG9wKSB7XG4gICAgICAgICAgICB0aGlzLnNob3BzLnB1c2goc2hvcClcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbnRhY3QgfSBmcm9tIFwiLi4vbW9kZWwvY29udGFjdFwiO1xuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gXCIuLi9tb2RlbC9hZGRyZXNzXCI7XG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uL21vZGVsL3Nob3BcIjtcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgQ29udGFjdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuPzogVG9rZW4pIHt9XG5cbiAgYXN5bmMgY3JlYXRlQ29udGFjdChjb250YWN0OiBDb250YWN0KTogUHJvbWlzZTxDb250YWN0PiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL2NvbnRhY3QvY3JlYXRlJywgeydjb250YWN0JzogY29udGFjdH0gLHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUNvbnRhY3QoY29udGFjdDogQ29udGFjdCk6IFByb21pc2U8Q29udGFjdD4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLnB1dCgnL2FwcHMvYXBpL2NvbnRhY3QvdXBkYXRlLycgKyBjb250YWN0LnV1aWQsIHsnY29udGFjdCc6IGNvbnRhY3R9ICx7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICB9XG4gICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRDb250YWN0cyhzZWFyY2hRdWVyeTogU3RyaW5nLCBwYWdlOiBOdW1iZXIsIHNob3A6IFNob3ApOiBQcm9taXNlPENvbnRhY3RbXT4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL2NvbnRhY3QvYWxsYnlzaG9wLycgKyBzaG9wLnV1aWQgKyAnP3Rlcm09JyArIHNlYXJjaFF1ZXJ5ICsgJyZwYWdlPScgKyBwYWdlLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBsZXQgY29udGFjdCA9IG5ldyBDb250YWN0O1xuICAgICAgICAgIGNvbnRhY3QucGFyc2VGcm9tSnNvbih7Y29udGFjdDogaXRlbX0pO1xuICAgICAgICAgIHJldHVybiBjb250YWN0O1xuICAgICAgICB9KVxuICAgIFxuICAgIH0pO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29udGFjdFNlcnZpY2VcbiIsImltcG9ydCB2YWxpZGF0ZSBmcm9tICcuL3ZhbGlkYXRlLmpzJztcbmNvbnN0IGJ5dGVUb0hleCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgIGJ5dGVUb0hleC5wdXNoKChpICsgMHgxMDApLnRvU3RyaW5nKDE2KS5zbGljZSgxKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdW5zYWZlU3RyaW5naWZ5KGFyciwgb2Zmc2V0ID0gMCkge1xuICAgIHJldHVybiAoYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAwXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDFdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMl1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAzXV0gK1xuICAgICAgICAnLScgK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDRdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNV1dICtcbiAgICAgICAgJy0nICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA2XV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDddXSArXG4gICAgICAgICctJyArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgOF1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA5XV0gK1xuICAgICAgICAnLScgK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDEwXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDExXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDEyXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDEzXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDE0XV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDE1XV0pLnRvTG93ZXJDYXNlKCk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnkoYXJyLCBvZmZzZXQgPSAwKSB7XG4gICAgY29uc3QgdXVpZCA9IHVuc2FmZVN0cmluZ2lmeShhcnIsIG9mZnNldCk7XG4gICAgaWYgKCF2YWxpZGF0ZSh1dWlkKSkge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ1N0cmluZ2lmaWVkIFVVSUQgaXMgaW52YWxpZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdXVpZDtcbn1cbmV4cG9ydCBkZWZhdWx0IHN0cmluZ2lmeTtcbiIsImxldCBnZXRSYW5kb21WYWx1ZXM7XG5jb25zdCBybmRzOCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJuZygpIHtcbiAgICBpZiAoIWdldFJhbmRvbVZhbHVlcykge1xuICAgICAgICBpZiAodHlwZW9mIGNyeXB0byA9PT0gJ3VuZGVmaW5lZCcgfHwgIWNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY3J5cHRvLmdldFJhbmRvbVZhbHVlcygpIG5vdCBzdXBwb3J0ZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQjZ2V0cmFuZG9tdmFsdWVzLW5vdC1zdXBwb3J0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRSYW5kb21WYWx1ZXMgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQoY3J5cHRvKTtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcyhybmRzOCk7XG59XG4iLCJjb25zdCByYW5kb21VVUlEID0gdHlwZW9mIGNyeXB0byAhPT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvLnJhbmRvbVVVSUQgJiYgY3J5cHRvLnJhbmRvbVVVSUQuYmluZChjcnlwdG8pO1xuZXhwb3J0IGRlZmF1bHQgeyByYW5kb21VVUlEIH07XG4iLCJpbXBvcnQgbmF0aXZlIGZyb20gJy4vbmF0aXZlLmpzJztcbmltcG9ydCBybmcgZnJvbSAnLi9ybmcuanMnO1xuaW1wb3J0IHsgdW5zYWZlU3RyaW5naWZ5IH0gZnJvbSAnLi9zdHJpbmdpZnkuanMnO1xuZnVuY3Rpb24gdjQob3B0aW9ucywgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAobmF0aXZlLnJhbmRvbVVVSUQgJiYgIWJ1ZiAmJiAhb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmF0aXZlLnJhbmRvbVVVSUQoKTtcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgY29uc3Qgcm5kcyA9IG9wdGlvbnMucmFuZG9tIHx8IChvcHRpb25zLnJuZyB8fCBybmcpKCk7XG4gICAgcm5kc1s2XSA9IChybmRzWzZdICYgMHgwZikgfCAweDQwO1xuICAgIHJuZHNbOF0gPSAocm5kc1s4XSAmIDB4M2YpIHwgMHg4MDtcbiAgICBpZiAoYnVmKSB7XG4gICAgICAgIG9mZnNldCA9IG9mZnNldCB8fCAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgICAgICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHJuZHNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgcmV0dXJuIHVuc2FmZVN0cmluZ2lmeShybmRzKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHY0O1xuIiwiaW1wb3J0IHt2NCBhcyB1dWlkdjR9IGZyb20gJ3V1aWQnXG5cbmV4cG9ydCBjbGFzcyBBY2NvdW50IHtcbiAgICB1aWQ6IE51bWJlclxuICAgIGFwcGVuZGl4OiBTdHJpbmdcbiAgICB0aXRsZTogU3RyaW5nXG4gICAgdXVpZDogU3RyaW5nXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51aWQgPSAwXG4gICAgICAgIHRoaXMudXVpZCA9IFwiXCJcbiAgICAgICAgdGhpcy5hcHBlbmRpeCA9IFwiXCJcbiAgICAgICAgdGhpcy50aXRsZSA9IFwiXCJcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnVpZCA9IGl0ZW0uYWNjb3VudC51aWRcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS5hY2NvdW50LnV1aWRcbiAgICAgICAgdGhpcy50aXRsZSA9IGl0ZW0uYWNjb3VudC50aXRsZVxuICAgICAgICB0aGlzLmFwcGVuZGl4ID0gaXRlbS5hY2NvdW50LmFwcGVuZGl4XG4gICAgfVxufSIsImltcG9ydCB7djQgYXMgdXVpZHY0fSBmcm9tICd1dWlkJ1xuaW1wb3J0IHtDb250YWN0fSBmcm9tIFwiLi9jb250YWN0XCJcbmltcG9ydCB7U2hvcH0gZnJvbSBcIi4vc2hvcFwiXG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzIHtcbiAgICB1aWQ6IE51bWJlclxuICAgIHV1aWQ6IFN0cmluZ1xuICAgIGZpcnN0bmFtZTogU3RyaW5nXG4gICAgbGFzdG5hbWU6IFN0cmluZ1xuICAgIHN0cmVldDogU3RyaW5nXG4gICAgaG91c2VOdW1iZXI6IFN0cmluZ1xuICAgIHppcDogU3RyaW5nXG4gICAgY29tcGFueTogU3RyaW5nXG4gICAgY29tcGFueTI6IFN0cmluZ1xuICAgIHBob25lOiBTdHJpbmdcbiAgICBjb3VudHJ5OiBTdHJpbmdcbiAgICB1c3RpZDogU3RyaW5nXG4gICAgY2l0eTogU3RyaW5nXG4gICAgZW1haWw6IFN0cmluZ1xuICAgIGNvbnRhY3Q6IENvbnRhY3RcbiAgICB0eXBlOiBOdW1iZXJcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnVpZCA9IDBcbiAgICAgICAgdGhpcy51dWlkID0gXCJcIlxuICAgICAgICB0aGlzLmZpcnN0bmFtZSA9IFwiXCJcbiAgICAgICAgdGhpcy5sYXN0bmFtZSA9IFwiXCJcbiAgICAgICAgdGhpcy5zdHJlZXQgPSBcIlwiXG4gICAgICAgIHRoaXMuaG91c2VOdW1iZXIgPSBcIlwiXG4gICAgICAgIHRoaXMuemlwID0gXCJcIlxuICAgICAgICB0aGlzLmNvbXBhbnkgPSBcIlwiXG4gICAgICAgIHRoaXMuY29tcGFueTIgPSBcIlwiXG4gICAgICAgIHRoaXMuY2l0eSA9IFwiXCJcbiAgICAgICAgdGhpcy5lbWFpbCA9IFwiXCJcbiAgICAgICAgdGhpcy5jb3VudHJ5ID0gXCJcIlxuICAgICAgICB0aGlzLnVzdGlkID0gXCJcIlxuICAgICAgICB0aGlzLmNvbnRhY3QgPSBuZXcgQ29udGFjdCgpXG4gICAgICAgIHRoaXMudHlwZSA9IDBcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnVpZCA9IGl0ZW0udWlkXG4gICAgICAgIHRoaXMudXVpZCA9IGl0ZW0udXVpZFxuICAgICAgICB0aGlzLmZpcnN0bmFtZSA9IGl0ZW0uZmlyc3RuYW1lXG4gICAgICAgIHRoaXMubGFzdG5hbWUgPSBpdGVtLmxhc3RuYW1lXG4gICAgICAgIHRoaXMuc3RyZWV0ID0gaXRlbS5zdHJlZXRcbiAgICAgICAgdGhpcy5ob3VzZU51bWJlciA9IGl0ZW0uaG91c2VOdW1iZXJcbiAgICAgICAgdGhpcy56aXAgPSBpdGVtLnppcFxuICAgICAgICB0aGlzLmNvbXBhbnkgPSBpdGVtLmNvbXBhbnlcbiAgICAgICAgdGhpcy5jb21wYW55MiA9IGl0ZW0uY29tcGFueTJcbiAgICAgICAgdGhpcy5waG9uZSA9IGl0ZW0ucGhvbmVcbiAgICAgICAgdGhpcy5jaXR5ID0gaXRlbS5jaXR5XG4gICAgICAgIHRoaXMuZW1haWwgPSBpdGVtLmVtYWlsXG4gICAgICAgIHRoaXMudHlwZSA9IGl0ZW0udHlwZVxuICAgICAgICB0aGlzLmNvdW50cnkgPSBpdGVtLmNvdW50cnlcbiAgICAgICAgdGhpcy51c3RpZCA9IGl0ZW0udXN0aWRcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Gb3JtRGF0YShmb3JtZGF0YTogYW55KSB7XG5cbiAgICAgICAgdGhpcy5lbWFpbCA9IGZvcm1kYXRhLmVtYWlsXG4gICAgICAgIHRoaXMuY29tcGFueSA9IGZvcm1kYXRhLmNvbXBhbnlcbiAgICAgICAgdGhpcy5maXJzdG5hbWUgPSBmb3JtZGF0YS5maXJzdG5hbWVcbiAgICAgICAgdGhpcy5sYXN0bmFtZSA9IGZvcm1kYXRhLmxhc3RuYW1lXG4gICAgICAgIHRoaXMuc3RyZWV0ID0gZm9ybWRhdGEuc3RyZWV0XG4gICAgICAgIHRoaXMuaG91c2VOdW1iZXIgPSBmb3JtZGF0YS5ob3VzZU51bWJlclxuICAgICAgICB0aGlzLnppcCA9IGZvcm1kYXRhLnppcFxuICAgICAgICB0aGlzLmNpdHkgPSBmb3JtZGF0YS5jaXR5XG4gICAgICAgIHRoaXMucGhvbmUgPSBmb3JtZGF0YS5waG9uZVxuICAgICAgICB0aGlzLmNvdW50cnkgPSBmb3JtZGF0YS5jb3VudHJ5XG4gICAgICAgIHRoaXMudXN0aWQgPSBmb3JtZGF0YS51c3RpZFxuICAgIH1cbn0iLCJpbnRlcmZhY2UgUGFyYW0ge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXJcbn1cblxuZXhwb3J0IGNsYXNzIFNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdCB7XG4gICAgcGFyYW1zOiBBcnJheTxQYXJhbT4gPSBbXVxuICAgIHR5cDogTnVtYmVyID0gMFxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy50eXAgPSBpdGVtLnR5cFxuICAgICAgICB0aGlzLnBhcmFtcyA9IGl0ZW0ucGFyYW1zXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZHVjdCB7XG4gICAgaWQ6IE51bWJlciA9IDBcbiAgICB0aXRsZTogU3RyaW5nID0gXCJcIlxuICAgIHV1aWQ6IFN0cmluZyA9IFwiXCJcbiAgICBzcGVjaWFsUHJvZHVjdFR5cGVPYmplY3Q6IFNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdCA9IG5ldyBTcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QoKVxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy5pZCA9IGl0ZW0uaWRcbiAgICAgICAgdGhpcy50aXRsZSA9IGl0ZW0udGl0bGVcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS51dWlkXG4gICAgICAgIHRoaXMuc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnBhcnNlRnJvbUpzb24oaXRlbS5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QpXG4gICAgfVxufSIsImV4cG9ydCBjbGFzcyBQcmljZSB7XHJcbiAgICBuZXQ6IG51bWJlciA9IDBcclxuICAgIHZhdDogbnVtYmVyID0gMFxyXG4gICAgZ3Jvc3M6IG51bWJlciA9IDBcclxuXHJcbiAgICBhbGxOZXQ6IG51bWJlciA9IDBcclxuICAgIGFsbFZhdDogbnVtYmVyID0gMFxyXG4gICAgYWxsR3Jvc3M6IG51bWJlciA9IDBcclxuXHJcbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xyXG4gICAgICAgIHRoaXMubmV0ID0gaXRlbS5uZXRcclxuICAgICAgICB0aGlzLnZhdCA9IGl0ZW0udmF0XHJcbiAgICAgICAgdGhpcy5ncm9zcyA9IGl0ZW0uZ3Jvc3NcclxuICAgICAgICB0aGlzLmFsbE5ldCA9IGl0ZW0uYWxsTmV0XHJcbiAgICAgICAgdGhpcy5hbGxWYXQgPSBpdGVtLmFsbFZhdFxyXG4gICAgICAgIHRoaXMuYWxsR3Jvc3MgPSBpdGVtLmFsbEdyb3NzXHJcbiAgICB9XHJcbn0iLCJpbXBvcnQge3Y0IGFzIHV1aWR2NH0gZnJvbSAndXVpZCdcclxuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi9wcm9kdWN0XCJcclxuaW1wb3J0IHtQcmljZX0gZnJvbSBcIi4vcHJpY2VcIlxyXG5cclxuZXhwb3J0IGNsYXNzIFBvcyB7XHJcbiAgICB1dWlkOiBTdHJpbmcgPSBcIlwiXHJcbiAgICBwcm9kdWN0OiBQcm9kdWN0ID0gbmV3IFByb2R1Y3QoKVxyXG4gICAgc3RhdHVzOiBOdW1iZXIgPSAxMFxyXG4gICAgY291bnQ6IE51bWJlciA9IDFcclxuICAgIHByaWNlOiBQcmljZSA9IG5ldyBQcmljZSgpXHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy51dWlkID0gdXVpZHY0KClcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xyXG4gICAgICAgIHRoaXMuY291bnQgPSBpdGVtLnByaWNlLmNvdW50XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBpdGVtLnN0YXR1c1xyXG4gICAgICAgIHRoaXMudXVpZCA9IGl0ZW0udXVpZFxyXG4gICAgICAgIHRoaXMucHJpY2UucGFyc2VGcm9tSnNvbihpdGVtLnByaWNlKVxyXG4gICAgICAgIHRoaXMucHJvZHVjdC5wYXJzZUZyb21Kc29uKGl0ZW0ucHJvZHVjdClcclxuICAgIH1cclxufSIsImV4cG9ydCBjbGFzcyBQYXltZW50IHtcbiAgICB1aWQ6IE51bWJlciA9IDBcbiAgICB0aXRsZTogU3RyaW5nID0gXCJcIlxuICAgIHV1aWQ6IFN0cmluZyA9IFwiXCJcblxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMudWlkID0gaXRlbS5wYXltZW50LnVpZFxuICAgICAgICB0aGlzLnRpdGxlID0gaXRlbS5wYXltZW50LnRpdGxlXG4gICAgICAgIHRoaXMudXVpZCA9IFN0cmluZyhpdGVtLnBheW1lbnQudXVpZClcbiAgICB9XG59IiwiXG5leHBvcnQgY2xhc3MgU2hpcHBpbmcge1xuICAgIHVpZDogTnVtYmVyID0gMFxuICAgIHRpdGxlOiBTdHJpbmcgPSBcIlwiXG4gICAgdXVpZDogU3RyaW5nID0gXCJcIlxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy51aWQgPSBpdGVtLnNoaXBwaW5nLnVpZFxuICAgICAgICB0aGlzLnRpdGxlID0gaXRlbS5zaGlwcGluZy50aXRsZVxuICAgICAgICB0aGlzLnV1aWQgPSBTdHJpbmcoaXRlbS5zaGlwcGluZy51dWlkKVxuICAgIH1cbn0iLCJpbXBvcnQge3Y0IGFzIHV1aWR2NH0gZnJvbSAndXVpZCdcbmltcG9ydCB7Q29udGFjdH0gZnJvbSBcIi4vY29udGFjdFwiXG5pbXBvcnQge0FjY291bnR9IGZyb20gXCIuL2FjY291bnRcIlxuaW1wb3J0IHtBZGRyZXNzfSBmcm9tIFwiLi9hZGRyZXNzXCJcbmltcG9ydCB7UG9zfSBmcm9tIFwiLi9wb3NcIlxuaW1wb3J0IHtQYXltZW50fSBmcm9tIFwiLi9wYXltZW50XCJcbmltcG9ydCB7U2hpcHBpbmd9IGZyb20gXCIuL3NoaXBwaW5nXCJcbmltcG9ydCB7U2hvcH0gZnJvbSBcIi4vc2hvcFwiXG5cbmNsYXNzIE9yZGVyIHtcblxuICAgIGFsaWFzOiBTdHJpbmdcbiAgICB1dWlkOiBTdHJpbmdcbiAgICBkcmFmdDogQm9vbGVhblxuICAgIHNhdmVkOiBib29sZWFuXG5cbiAgICBjb250YWN0OiBDb250YWN0ID0gbmV3IENvbnRhY3QoKVxuICAgIGFjY291bnQ6IEFjY291bnQgPSBuZXcgQWNjb3VudCgpXG4gICAgZGVsaXZlcnlBZGRyZXNzOiBBZGRyZXNzID0gbmV3IEFkZHJlc3MoKVxuICAgIHNlbmRlckFkZHJlc3M6IEFkZHJlc3MgPSBuZXcgQWRkcmVzcygpXG4gICAgaW52b2ljZUFkZHJlc3M6IEFkZHJlc3MgPSBuZXcgQWRkcmVzcygpXG5cbiAgICBwb3NpdGlvbnM6IEFycmF5PFBvcz4gPSBbXVxuXG4gICAgcGF5bWVudDogUGF5bWVudCA9IG5ldyBQYXltZW50KClcbiAgICBzaGlwcGluZzogU2hpcHBpbmcgPSBuZXcgU2hpcHBpbmcoKVxuXG4gICAgYmFza2V0RmllbGQxOiBTdHJpbmdcbiAgICBiYXNrZXRGaWVsZDI6IFN0cmluZ1xuXG4gICAgdHlwZTogTnVtYmVyXG4gICAgc2hvcDogU2hvcCA9IG5ldyBTaG9wKClcblxuICAgIG5ldDogbnVtYmVyXG4gICAgdmF0OiBudW1iZXJcbiAgICBncm9zczogbnVtYmVyXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51dWlkID0gdXVpZHY0KClcbiAgICAgICAgdGhpcy5iYXNrZXRGaWVsZDEgPSBcIlwiXG4gICAgICAgIHRoaXMuYmFza2V0RmllbGQyID0gXCJcIlxuICAgICAgICB0aGlzLmRyYWZ0ID0gdHJ1ZVxuICAgICAgICB0aGlzLnNhdmVkID0gZmFsc2VcbiAgICB9XG5cbiAgICBhZGRQb3NpdGlvbihwb3M6IFBvcykge1xuICAgICAgICB0aGlzLnBvc2l0aW9ucy5wdXNoKHBvcylcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnNob3AucGFyc2VGcm9tSnNvbihpdGVtKVxuICAgICAgICB0aGlzLmNvbnRhY3QucGFyc2VGcm9tSnNvbihpdGVtKVxuICAgICAgICB0aGlzLmFjY291bnQucGFyc2VGcm9tSnNvbihpdGVtKVxuICAgICAgICB0aGlzLnNoaXBwaW5nLnBhcnNlRnJvbUpzb24oaXRlbSlcbiAgICAgICAgdGhpcy5wYXltZW50LnBhcnNlRnJvbUpzb24oaXRlbSlcbiAgICAgICAgdGhpcy5pbnZvaWNlQWRkcmVzcy5wYXJzZUZyb21Kc29uKGl0ZW0uaW52b2ljZUFkZHJlc3MpXG4gICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzLnBhcnNlRnJvbUpzb24oaXRlbS5kZWxpdmVyeUFkZHJlc3MpXG4gICAgICAgIHRoaXMuc2VuZGVyQWRkcmVzcy5wYXJzZUZyb21Kc29uKGl0ZW0uc2VuZGVyQWRkcmVzcylcbiAgICAgICAgdGhpcy5hbGlhcyA9IGl0ZW0uYWxpYXNcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS51dWlkXG4gICAgICAgIHRoaXMudHlwZSA9IGl0ZW0udHlwZVxuICAgICAgICB0aGlzLmRyYWZ0ID0gaXRlbS5kcmFmdFxuICAgICAgICB0aGlzLnNhdmVkID0gdHJ1ZVxuICAgICAgICB0aGlzLmJhc2tldEZpZWxkMSA9IGl0ZW0uYmFza2V0RmllbGQxXG4gICAgICAgIHRoaXMuYmFza2V0RmllbGQyID0gaXRlbS5iYXNrZXRGaWVsZDJcblxuICAgICAgICBpdGVtLnBvc2l0aW9ucy5tYXAoKGUpID0+IHtcbiAgICAgICAgICAgIGxldCBwb3MgPSBuZXcgUG9zKClcbiAgICAgICAgICAgIHBvcy5wYXJzZUZyb21Kc29uKGUpXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucy5wdXNoKHBvcylcbiAgICAgICAgfSlcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyXG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXG5cbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xuICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xuICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xufVxuXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XG4gICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgICByZXR1cm4gdDtcbiAgfVxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgdFtwXSA9IHNbcF07XG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgfVxuICByZXR1cm4gdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcbiAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19lc0RlY29yYXRlKGN0b3IsIGRlc2NyaXB0b3JJbiwgZGVjb3JhdG9ycywgY29udGV4dEluLCBpbml0aWFsaXplcnMsIGV4dHJhSW5pdGlhbGl6ZXJzKSB7XG4gIGZ1bmN0aW9uIGFjY2VwdChmKSB7IGlmIChmICE9PSB2b2lkIDAgJiYgdHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bmN0aW9uIGV4cGVjdGVkXCIpOyByZXR1cm4gZjsgfVxuICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xuICB2YXIgdGFyZ2V0ID0gIWRlc2NyaXB0b3JJbiAmJiBjdG9yID8gY29udGV4dEluW1wic3RhdGljXCJdID8gY3RvciA6IGN0b3IucHJvdG90eXBlIDogbnVsbDtcbiAgdmFyIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ySW4gfHwgKHRhcmdldCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSkgOiB7fSk7XG4gIHZhciBfLCBkb25lID0gZmFsc2U7XG4gIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgY29udGV4dCA9IHt9O1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbi5hY2Nlc3MpIGNvbnRleHQuYWNjZXNzW3BdID0gY29udGV4dEluLmFjY2Vzc1twXTtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZikgeyBpZiAoZG9uZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07XG4gICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcbiAgICAgIGlmIChraW5kID09PSBcImFjY2Vzc29yXCIpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuZ2V0KSkgZGVzY3JpcHRvci5nZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5zZXQpKSBkZXNjcmlwdG9yLnNldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKF8gPSBhY2NlcHQocmVzdWx0KSkge1xuICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgICAgIGVsc2UgZGVzY3JpcHRvcltrZXldID0gXztcbiAgICAgIH1cbiAgfVxuICBpZiAodGFyZ2V0KSBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSwgZGVzY3JpcHRvcik7XG4gIGRvbmUgPSB0cnVlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHtcbiAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlhbGl6ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7XG4gIH1cbiAgcmV0dXJuIHVzZVZhbHVlID8gdmFsdWUgOiB2b2lkIDA7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19wcm9wS2V5KHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcInN5bWJvbFwiID8geCA6IFwiXCIuY29uY2F0KHgpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fc2V0RnVuY3Rpb25OYW1lKGYsIG5hbWUsIHByZWZpeCkge1xuICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwgXCJuYW1lXCIsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogcHJlZml4ID8gXCJcIi5jb25jYXQocHJlZml4LCBcIiBcIiwgbmFtZSkgOiBuYW1lIH0pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcbiAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZyA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBJdGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSk7XG4gIHJldHVybiBnLm5leHQgPSB2ZXJiKDApLCBnW1widGhyb3dcIl0gPSB2ZXJiKDEpLCBnW1wicmV0dXJuXCJdID0gdmVyYigyKSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICB9XG59XG5cbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICBvW2syXSA9IG1ba107XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XG4gIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcbiAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcbiAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIW0pIHJldHVybiBvO1xuICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgdHJ5IHtcbiAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICB9XG4gIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgfVxuICByZXR1cm4gYXI7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xuICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcbiAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XG4gIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxuICAgICAgICAgIHJba10gPSBhW2pdO1xuICByZXR1cm4gcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcbiAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XG4gIHJldHVybiBpID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEFzeW5jSXRlcmF0b3IgPT09IFwiZnVuY3Rpb25cIiA/IEFzeW5jSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSksIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiwgYXdhaXRSZXR1cm4pLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIGF3YWl0UmV0dXJuKGYpIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodikudGhlbihmLCByZWplY3QpOyB9OyB9XG4gIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpZiAoZ1tuXSkgeyBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyBpZiAoZikgaVtuXSA9IGYoaVtuXSk7IH0gfVxuICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XG4gIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxuICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XG4gIHZhciBpLCBwO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xuICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICByZXR1cm4gY29va2VkO1xufTtcblxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcbiAgb1tcImRlZmF1bHRcIl0gPSB2O1xufTtcblxudmFyIG93bktleXMgPSBmdW5jdGlvbihvKSB7XG4gIG93bktleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiAobykge1xuICAgIHZhciBhciA9IFtdO1xuICAgIGZvciAodmFyIGsgaW4gbykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBrKSkgYXJbYXIubGVuZ3RoXSA9IGs7XG4gICAgcmV0dXJuIGFyO1xuICB9O1xuICByZXR1cm4gb3duS2V5cyhvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XG4gIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrID0gb3duS2V5cyhtb2QpLCBpID0gMDsgaSA8IGsubGVuZ3RoOyBpKyspIGlmIChrW2ldICE9PSBcImRlZmF1bHRcIikgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrW2ldKTtcbiAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcbiAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcbiAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XG4gIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcbiAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XG4gIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xuICBpZiAocmVjZWl2ZXIgPT09IG51bGwgfHwgKHR5cGVvZiByZWNlaXZlciAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjZWl2ZXIgIT09IFwiZnVuY3Rpb25cIikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgdXNlICdpbicgb3BlcmF0b3Igb24gbm9uLW9iamVjdFwiKTtcbiAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgPT09IHN0YXRlIDogc3RhdGUuaGFzKHJlY2VpdmVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlKGVudiwgdmFsdWUsIGFzeW5jKSB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZC5cIik7XG4gICAgdmFyIGRpc3Bvc2UsIGlubmVyO1xuICAgIGlmIChhc3luYykge1xuICAgICAgaWYgKCFTeW1ib2wuYXN5bmNEaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jRGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmFzeW5jRGlzcG9zZV07XG4gICAgfVxuICAgIGlmIChkaXNwb3NlID09PSB2b2lkIDApIHtcbiAgICAgIGlmICghU3ltYm9sLmRpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuZGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmRpc3Bvc2VdO1xuICAgICAgaWYgKGFzeW5jKSBpbm5lciA9IGRpc3Bvc2U7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGlzcG9zZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IG5vdCBkaXNwb3NhYmxlLlwiKTtcbiAgICBpZiAoaW5uZXIpIGRpc3Bvc2UgPSBmdW5jdGlvbigpIHsgdHJ5IHsgaW5uZXIuY2FsbCh0aGlzKTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7IH0gfTtcbiAgICBlbnYuc3RhY2sucHVzaCh7IHZhbHVlOiB2YWx1ZSwgZGlzcG9zZTogZGlzcG9zZSwgYXN5bmM6IGFzeW5jIH0pO1xuICB9XG4gIGVsc2UgaWYgKGFzeW5jKSB7XG4gICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XG4gIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGlzcG9zZVJlc291cmNlcyhlbnYpIHtcbiAgZnVuY3Rpb24gZmFpbChlKSB7XG4gICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xuICAgIGVudi5oYXNFcnJvciA9IHRydWU7XG4gIH1cbiAgdmFyIHIsIHMgPSAwO1xuICBmdW5jdGlvbiBuZXh0KCkge1xuICAgIHdoaWxlIChyID0gZW52LnN0YWNrLnBvcCgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIXIuYXN5bmMgJiYgcyA9PT0gMSkgcmV0dXJuIHMgPSAwLCBlbnYuc3RhY2sucHVzaChyKSwgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihuZXh0KTtcbiAgICAgICAgaWYgKHIuZGlzcG9zZSkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSByLmRpc3Bvc2UuY2FsbChyLnZhbHVlKTtcbiAgICAgICAgICBpZiAoci5hc3luYykgcmV0dXJuIHMgfD0gMiwgUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihuZXh0LCBmdW5jdGlvbihlKSB7IGZhaWwoZSk7IHJldHVybiBuZXh0KCk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgcyB8PSAxO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgZmFpbChlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHMgPT09IDEpIHJldHVybiBlbnYuaGFzRXJyb3IgPyBQcm9taXNlLnJlamVjdChlbnYuZXJyb3IpIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgaWYgKGVudi5oYXNFcnJvcikgdGhyb3cgZW52LmVycm9yO1xuICB9XG4gIHJldHVybiBuZXh0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Jld3JpdGVSZWxhdGl2ZUltcG9ydEV4dGVuc2lvbihwYXRoLCBwcmVzZXJ2ZUpzeCkge1xuICBpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIgJiYgL15cXC5cXC4/XFwvLy50ZXN0KHBhdGgpKSB7XG4gICAgICByZXR1cm4gcGF0aC5yZXBsYWNlKC9cXC4odHN4KSR8KCg/OlxcLmQpPykoKD86XFwuW14uL10rPyk/KVxcLihbY21dPyl0cyQvaSwgZnVuY3Rpb24gKG0sIHRzeCwgZCwgZXh0LCBjbSkge1xuICAgICAgICAgIHJldHVybiB0c3ggPyBwcmVzZXJ2ZUpzeCA/IFwiLmpzeFwiIDogXCIuanNcIiA6IGQgJiYgKCFleHQgfHwgIWNtKSA/IG0gOiAoZCArIGV4dCArIFwiLlwiICsgY20udG9Mb3dlckNhc2UoKSArIFwianNcIik7XG4gICAgICB9KTtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBfX2V4dGVuZHMsXG4gIF9fYXNzaWduLFxuICBfX3Jlc3QsXG4gIF9fZGVjb3JhdGUsXG4gIF9fcGFyYW0sXG4gIF9fZXNEZWNvcmF0ZSxcbiAgX19ydW5Jbml0aWFsaXplcnMsXG4gIF9fcHJvcEtleSxcbiAgX19zZXRGdW5jdGlvbk5hbWUsXG4gIF9fbWV0YWRhdGEsXG4gIF9fYXdhaXRlcixcbiAgX19nZW5lcmF0b3IsXG4gIF9fY3JlYXRlQmluZGluZyxcbiAgX19leHBvcnRTdGFyLFxuICBfX3ZhbHVlcyxcbiAgX19yZWFkLFxuICBfX3NwcmVhZCxcbiAgX19zcHJlYWRBcnJheXMsXG4gIF9fc3ByZWFkQXJyYXksXG4gIF9fYXdhaXQsXG4gIF9fYXN5bmNHZW5lcmF0b3IsXG4gIF9fYXN5bmNEZWxlZ2F0b3IsXG4gIF9fYXN5bmNWYWx1ZXMsXG4gIF9fbWFrZVRlbXBsYXRlT2JqZWN0LFxuICBfX2ltcG9ydFN0YXIsXG4gIF9faW1wb3J0RGVmYXVsdCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxuICBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZSxcbiAgX19kaXNwb3NlUmVzb3VyY2VzLFxuICBfX3Jld3JpdGVSZWxhdGl2ZUltcG9ydEV4dGVuc2lvbixcbn07XG4iLCJleHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc0Z1bmN0aW9uLmpzLm1hcCIsImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFcnJvckNsYXNzKGNyZWF0ZUltcGwpIHtcbiAgICB2YXIgX3N1cGVyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gICAgICAgIEVycm9yLmNhbGwoaW5zdGFuY2UpO1xuICAgICAgICBpbnN0YW5jZS5zdGFjayA9IG5ldyBFcnJvcigpLnN0YWNrO1xuICAgIH07XG4gICAgdmFyIGN0b3JGdW5jID0gY3JlYXRlSW1wbChfc3VwZXIpO1xuICAgIGN0b3JGdW5jLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbiAgICBjdG9yRnVuYy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yRnVuYztcbiAgICByZXR1cm4gY3RvckZ1bmM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVFcnJvckNsYXNzLmpzLm1hcCIsImltcG9ydCB7IGNyZWF0ZUVycm9yQ2xhc3MgfSBmcm9tICcuL2NyZWF0ZUVycm9yQ2xhc3MnO1xuZXhwb3J0IHZhciBVbnN1YnNjcmlwdGlvbkVycm9yID0gY3JlYXRlRXJyb3JDbGFzcyhmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIFVuc3Vic2NyaXB0aW9uRXJyb3JJbXBsKGVycm9ycykge1xuICAgICAgICBfc3VwZXIodGhpcyk7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGVycm9yc1xuICAgICAgICAgICAgPyBlcnJvcnMubGVuZ3RoICsgXCIgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcXG5cIiArIGVycm9ycy5tYXAoZnVuY3Rpb24gKGVyciwgaSkgeyByZXR1cm4gaSArIDEgKyBcIikgXCIgKyBlcnIudG9TdHJpbmcoKTsgfSkuam9pbignXFxuICAnKVxuICAgICAgICAgICAgOiAnJztcbiAgICAgICAgdGhpcy5uYW1lID0gJ1Vuc3Vic2NyaXB0aW9uRXJyb3InO1xuICAgICAgICB0aGlzLmVycm9ycyA9IGVycm9ycztcbiAgICB9O1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1VbnN1YnNjcmlwdGlvbkVycm9yLmpzLm1hcCIsImV4cG9ydCBmdW5jdGlvbiBhcnJSZW1vdmUoYXJyLCBpdGVtKSB7XG4gICAgaWYgKGFycikge1xuICAgICAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgMCA8PSBpbmRleCAmJiBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcnJSZW1vdmUuanMubWFwIiwiaW1wb3J0IHsgX19yZWFkLCBfX3NwcmVhZEFycmF5LCBfX3ZhbHVlcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4vdXRpbC9pc0Z1bmN0aW9uJztcbmltcG9ydCB7IFVuc3Vic2NyaXB0aW9uRXJyb3IgfSBmcm9tICcuL3V0aWwvVW5zdWJzY3JpcHRpb25FcnJvcic7XG5pbXBvcnQgeyBhcnJSZW1vdmUgfSBmcm9tICcuL3V0aWwvYXJyUmVtb3ZlJztcbnZhciBTdWJzY3JpcHRpb24gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN1YnNjcmlwdGlvbihpbml0aWFsVGVhcmRvd24pIHtcbiAgICAgICAgdGhpcy5pbml0aWFsVGVhcmRvd24gPSBpbml0aWFsVGVhcmRvd247XG4gICAgICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICAgIH1cbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICAgICAgdmFyIGVycm9ycztcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgICAgICBpZiAoX3BhcmVudGFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9wYXJlbnRhZ2VfMSA9IF9fdmFsdWVzKF9wYXJlbnRhZ2UpLCBfcGFyZW50YWdlXzFfMSA9IF9wYXJlbnRhZ2VfMS5uZXh0KCk7ICFfcGFyZW50YWdlXzFfMS5kb25lOyBfcGFyZW50YWdlXzFfMSA9IF9wYXJlbnRhZ2VfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50XzEgPSBfcGFyZW50YWdlXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfMS5yZW1vdmUodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfcGFyZW50YWdlXzFfMSAmJiAhX3BhcmVudGFnZV8xXzEuZG9uZSAmJiAoX2EgPSBfcGFyZW50YWdlXzEucmV0dXJuKSkgX2EuY2FsbChfcGFyZW50YWdlXzEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfcGFyZW50YWdlLnJlbW92ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaW5pdGlhbEZpbmFsaXplciA9IHRoaXMuaW5pdGlhbFRlYXJkb3duO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oaW5pdGlhbEZpbmFsaXplcikpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpbml0aWFsRmluYWxpemVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGUgaW5zdGFuY2VvZiBVbnN1YnNjcmlwdGlvbkVycm9yID8gZS5lcnJvcnMgOiBbZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9maW5hbGl6ZXJzID0gdGhpcy5fZmluYWxpemVycztcbiAgICAgICAgICAgIGlmIChfZmluYWxpemVycykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9maW5hbGl6ZXJzXzEgPSBfX3ZhbHVlcyhfZmluYWxpemVycyksIF9maW5hbGl6ZXJzXzFfMSA9IF9maW5hbGl6ZXJzXzEubmV4dCgpOyAhX2ZpbmFsaXplcnNfMV8xLmRvbmU7IF9maW5hbGl6ZXJzXzFfMSA9IF9maW5hbGl6ZXJzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmluYWxpemVyID0gX2ZpbmFsaXplcnNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjRmluYWxpemVyKGZpbmFsaXplcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZXJyb3JzICE9PSBudWxsICYmIGVycm9ycyAhPT0gdm9pZCAwID8gZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIFVuc3Vic2NyaXB0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoZXJyb3JzKSksIF9fcmVhZChlcnIuZXJyb3JzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9maW5hbGl6ZXJzXzFfMSAmJiAhX2ZpbmFsaXplcnNfMV8xLmRvbmUgJiYgKF9iID0gX2ZpbmFsaXplcnNfMS5yZXR1cm4pKSBfYi5jYWxsKF9maW5hbGl6ZXJzXzEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3Vic2NyaXB0aW9uRXJyb3IoZXJyb3JzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodGVhcmRvd24pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodGVhcmRvd24gJiYgdGVhcmRvd24gIT09IHRoaXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgIGV4ZWNGaW5hbGl6ZXIodGVhcmRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRlYXJkb3duIGluc3RhbmNlb2YgU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZWFyZG93bi5jbG9zZWQgfHwgdGVhcmRvd24uX2hhc1BhcmVudCh0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRlYXJkb3duLl9hZGRQYXJlbnQodGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICh0aGlzLl9maW5hbGl6ZXJzID0gKF9hID0gdGhpcy5fZmluYWxpemVycykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogW10pLnB1c2godGVhcmRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLl9oYXNQYXJlbnQgPSBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgIHZhciBfcGFyZW50YWdlID0gdGhpcy5fcGFyZW50YWdlO1xuICAgICAgICByZXR1cm4gX3BhcmVudGFnZSA9PT0gcGFyZW50IHx8IChBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpICYmIF9wYXJlbnRhZ2UuaW5jbHVkZXMocGFyZW50KSk7XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLl9hZGRQYXJlbnQgPSBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgIHZhciBfcGFyZW50YWdlID0gdGhpcy5fcGFyZW50YWdlO1xuICAgICAgICB0aGlzLl9wYXJlbnRhZ2UgPSBBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpID8gKF9wYXJlbnRhZ2UucHVzaChwYXJlbnQpLCBfcGFyZW50YWdlKSA6IF9wYXJlbnRhZ2UgPyBbX3BhcmVudGFnZSwgcGFyZW50XSA6IHBhcmVudDtcbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX3JlbW92ZVBhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIGlmIChfcGFyZW50YWdlID09PSBwYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfcGFyZW50YWdlKSkge1xuICAgICAgICAgICAgYXJyUmVtb3ZlKF9wYXJlbnRhZ2UsIHBhcmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKHRlYXJkb3duKSB7XG4gICAgICAgIHZhciBfZmluYWxpemVycyA9IHRoaXMuX2ZpbmFsaXplcnM7XG4gICAgICAgIF9maW5hbGl6ZXJzICYmIGFyclJlbW92ZShfZmluYWxpemVycywgdGVhcmRvd24pO1xuICAgICAgICBpZiAodGVhcmRvd24gaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRlYXJkb3duLl9yZW1vdmVQYXJlbnQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5FTVBUWSA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbXB0eSA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgZW1wdHkuY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGVtcHR5O1xuICAgIH0pKCk7XG4gICAgcmV0dXJuIFN1YnNjcmlwdGlvbjtcbn0oKSk7XG5leHBvcnQgeyBTdWJzY3JpcHRpb24gfTtcbmV4cG9ydCB2YXIgRU1QVFlfU1VCU0NSSVBUSU9OID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3Vic2NyaXB0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbiB8fFxuICAgICAgICAodmFsdWUgJiYgJ2Nsb3NlZCcgaW4gdmFsdWUgJiYgaXNGdW5jdGlvbih2YWx1ZS5yZW1vdmUpICYmIGlzRnVuY3Rpb24odmFsdWUuYWRkKSAmJiBpc0Z1bmN0aW9uKHZhbHVlLnVuc3Vic2NyaWJlKSkpO1xufVxuZnVuY3Rpb24gZXhlY0ZpbmFsaXplcihmaW5hbGl6ZXIpIHtcbiAgICBpZiAoaXNGdW5jdGlvbihmaW5hbGl6ZXIpKSB7XG4gICAgICAgIGZpbmFsaXplcigpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZmluYWxpemVyLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3Vic2NyaXB0aW9uLmpzLm1hcCIsImV4cG9ydCB2YXIgY29uZmlnID0ge1xuICAgIG9uVW5oYW5kbGVkRXJyb3I6IG51bGwsXG4gICAgb25TdG9wcGVkTm90aWZpY2F0aW9uOiBudWxsLFxuICAgIFByb21pc2U6IHVuZGVmaW5lZCxcbiAgICB1c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nOiBmYWxzZSxcbiAgICB1c2VEZXByZWNhdGVkTmV4dENvbnRleHQ6IGZhbHNlLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbmZpZy5qcy5tYXAiLCJpbXBvcnQgeyBfX3JlYWQsIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmV4cG9ydCB2YXIgdGltZW91dFByb3ZpZGVyID0ge1xuICAgIHNldFRpbWVvdXQ6IGZ1bmN0aW9uIChoYW5kbGVyLCB0aW1lb3V0KSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IHRpbWVvdXRQcm92aWRlci5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlID09PSBudWxsIHx8IGRlbGVnYXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWxlZ2F0ZS5zZXRUaW1lb3V0KSB7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuc2V0VGltZW91dC5hcHBseShkZWxlZ2F0ZSwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0LmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgIH0sXG4gICAgY2xlYXJUaW1lb3V0OiBmdW5jdGlvbiAoaGFuZGxlKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IHRpbWVvdXRQcm92aWRlci5kZWxlZ2F0ZTtcbiAgICAgICAgcmV0dXJuICgoZGVsZWdhdGUgPT09IG51bGwgfHwgZGVsZWdhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlbGVnYXRlLmNsZWFyVGltZW91dCkgfHwgY2xlYXJUaW1lb3V0KShoYW5kbGUpO1xuICAgIH0sXG4gICAgZGVsZWdhdGU6IHVuZGVmaW5lZCxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aW1lb3V0UHJvdmlkZXIuanMubWFwIiwiaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IHRpbWVvdXRQcm92aWRlciB9IGZyb20gJy4uL3NjaGVkdWxlci90aW1lb3V0UHJvdmlkZXInO1xuZXhwb3J0IGZ1bmN0aW9uIHJlcG9ydFVuaGFuZGxlZEVycm9yKGVycikge1xuICAgIHRpbWVvdXRQcm92aWRlci5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG9uVW5oYW5kbGVkRXJyb3IgPSBjb25maWcub25VbmhhbmRsZWRFcnJvcjtcbiAgICAgICAgaWYgKG9uVW5oYW5kbGVkRXJyb3IpIHtcbiAgICAgICAgICAgIG9uVW5oYW5kbGVkRXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVwb3J0VW5oYW5kbGVkRXJyb3IuanMubWFwIiwiZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKSB7IH1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vb3AuanMubWFwIiwiaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbnZhciBjb250ZXh0ID0gbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBlcnJvckNvbnRleHQoY2IpIHtcbiAgICBpZiAoY29uZmlnLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcpIHtcbiAgICAgICAgdmFyIGlzUm9vdCA9ICFjb250ZXh0O1xuICAgICAgICBpZiAoaXNSb290KSB7XG4gICAgICAgICAgICBjb250ZXh0ID0geyBlcnJvclRocm93bjogZmFsc2UsIGVycm9yOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgICAgY2IoKTtcbiAgICAgICAgaWYgKGlzUm9vdCkge1xuICAgICAgICAgICAgdmFyIF9hID0gY29udGV4dCwgZXJyb3JUaHJvd24gPSBfYS5lcnJvclRocm93biwgZXJyb3IgPSBfYS5lcnJvcjtcbiAgICAgICAgICAgIGNvbnRleHQgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNiKCk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGNhcHR1cmVFcnJvcihlcnIpIHtcbiAgICBpZiAoY29uZmlnLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcgJiYgY29udGV4dCkge1xuICAgICAgICBjb250ZXh0LmVycm9yVGhyb3duID0gdHJ1ZTtcbiAgICAgICAgY29udGV4dC5lcnJvciA9IGVycjtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lcnJvckNvbnRleHQuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi91dGlsL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHsgaXNTdWJzY3JpcHRpb24sIFN1YnNjcmlwdGlvbiB9IGZyb20gJy4vU3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IHJlcG9ydFVuaGFuZGxlZEVycm9yIH0gZnJvbSAnLi91dGlsL3JlcG9ydFVuaGFuZGxlZEVycm9yJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuL3V0aWwvbm9vcCc7XG5pbXBvcnQgeyBuZXh0Tm90aWZpY2F0aW9uLCBlcnJvck5vdGlmaWNhdGlvbiwgQ09NUExFVEVfTk9USUZJQ0FUSU9OIH0gZnJvbSAnLi9Ob3RpZmljYXRpb25GYWN0b3JpZXMnO1xuaW1wb3J0IHsgdGltZW91dFByb3ZpZGVyIH0gZnJvbSAnLi9zY2hlZHVsZXIvdGltZW91dFByb3ZpZGVyJztcbmltcG9ydCB7IGNhcHR1cmVFcnJvciB9IGZyb20gJy4vdXRpbC9lcnJvckNvbnRleHQnO1xudmFyIFN1YnNjcmliZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTdWJzY3JpYmVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFN1YnNjcmliZXIoZGVzdGluYXRpb24pIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuaXNTdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIGlmIChkZXN0aW5hdGlvbikge1xuICAgICAgICAgICAgX3RoaXMuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcbiAgICAgICAgICAgIGlmIChpc1N1YnNjcmlwdGlvbihkZXN0aW5hdGlvbikpIHtcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoX3RoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgX3RoaXMuZGVzdGluYXRpb24gPSBFTVBUWV9PQlNFUlZFUjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFN1YnNjcmliZXIuY3JlYXRlID0gZnVuY3Rpb24gKG5leHQsIGVycm9yLCBjb21wbGV0ZSkge1xuICAgICAgICByZXR1cm4gbmV3IFNhZmVTdWJzY3JpYmVyKG5leHQsIGVycm9yLCBjb21wbGV0ZSk7XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgaGFuZGxlU3RvcHBlZE5vdGlmaWNhdGlvbihuZXh0Tm90aWZpY2F0aW9uKHZhbHVlKSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uZXh0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgaGFuZGxlU3RvcHBlZE5vdGlmaWNhdGlvbihlcnJvck5vdGlmaWNhdGlvbihlcnIpLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yKGVycik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BwZWROb3RpZmljYXRpb24oQ09NUExFVEVfTk9USUZJQ0FUSU9OLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICBfc3VwZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuX25leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi5uZXh0KHZhbHVlKTtcbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLl9lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuX2NvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gU3Vic2NyaWJlcjtcbn0oU3Vic2NyaXB0aW9uKSk7XG5leHBvcnQgeyBTdWJzY3JpYmVyIH07XG52YXIgX2JpbmQgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZDtcbmZ1bmN0aW9uIGJpbmQoZm4sIHRoaXNBcmcpIHtcbiAgICByZXR1cm4gX2JpbmQuY2FsbChmbiwgdGhpc0FyZyk7XG59XG52YXIgQ29uc3VtZXJPYnNlcnZlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQ29uc3VtZXJPYnNlcnZlcihwYXJ0aWFsT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5wYXJ0aWFsT2JzZXJ2ZXIgPSBwYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgfVxuICAgIENvbnN1bWVyT2JzZXJ2ZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxPYnNlcnZlciA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgICAgICBpZiAocGFydGlhbE9ic2VydmVyLm5leHQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyLm5leHQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBDb25zdW1lck9ic2VydmVyLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxPYnNlcnZlciA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgICAgICBpZiAocGFydGlhbE9ic2VydmVyLmVycm9yKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlci5lcnJvcihlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ29uc3VtZXJPYnNlcnZlci5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsT2JzZXJ2ZXIgPSB0aGlzLnBhcnRpYWxPYnNlcnZlcjtcbiAgICAgICAgaWYgKHBhcnRpYWxPYnNlcnZlci5jb21wbGV0ZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGhhbmRsZVVuaGFuZGxlZEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIENvbnN1bWVyT2JzZXJ2ZXI7XG59KCkpO1xudmFyIFNhZmVTdWJzY3JpYmVyID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU2FmZVN1YnNjcmliZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU2FmZVN1YnNjcmliZXIob2JzZXJ2ZXJPck5leHQsIGVycm9yLCBjb21wbGV0ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihvYnNlcnZlck9yTmV4dCkgfHwgIW9ic2VydmVyT3JOZXh0KSB7XG4gICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIgPSB7XG4gICAgICAgICAgICAgICAgbmV4dDogKG9ic2VydmVyT3JOZXh0ICE9PSBudWxsICYmIG9ic2VydmVyT3JOZXh0ICE9PSB2b2lkIDAgPyBvYnNlcnZlck9yTmV4dCA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yICE9PSBudWxsICYmIGVycm9yICE9PSB2b2lkIDAgPyBlcnJvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogY29tcGxldGUgIT09IG51bGwgJiYgY29tcGxldGUgIT09IHZvaWQgMCA/IGNvbXBsZXRlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0XzE7XG4gICAgICAgICAgICBpZiAoX3RoaXMgJiYgY29uZmlnLnVzZURlcHJlY2F0ZWROZXh0Q29udGV4dCkge1xuICAgICAgICAgICAgICAgIGNvbnRleHRfMSA9IE9iamVjdC5jcmVhdGUob2JzZXJ2ZXJPck5leHQpO1xuICAgICAgICAgICAgICAgIGNvbnRleHRfMS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLnVuc3Vic2NyaWJlKCk7IH07XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyID0ge1xuICAgICAgICAgICAgICAgICAgICBuZXh0OiBvYnNlcnZlck9yTmV4dC5uZXh0ICYmIGJpbmQob2JzZXJ2ZXJPck5leHQubmV4dCwgY29udGV4dF8xKSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IG9ic2VydmVyT3JOZXh0LmVycm9yICYmIGJpbmQob2JzZXJ2ZXJPck5leHQuZXJyb3IsIGNvbnRleHRfMSksXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBvYnNlcnZlck9yTmV4dC5jb21wbGV0ZSAmJiBiaW5kKG9ic2VydmVyT3JOZXh0LmNvbXBsZXRlLCBjb250ZXh0XzEpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIgPSBvYnNlcnZlck9yTmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IG5ldyBDb25zdW1lck9ic2VydmVyKHBhcnRpYWxPYnNlcnZlcik7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIFNhZmVTdWJzY3JpYmVyO1xufShTdWJzY3JpYmVyKSk7XG5leHBvcnQgeyBTYWZlU3Vic2NyaWJlciB9O1xuZnVuY3Rpb24gaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAoY29uZmlnLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcpIHtcbiAgICAgICAgY2FwdHVyZUVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlcG9ydFVuaGFuZGxlZEVycm9yKGVycm9yKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZWZhdWx0RXJyb3JIYW5kbGVyKGVycikge1xuICAgIHRocm93IGVycjtcbn1cbmZ1bmN0aW9uIGhhbmRsZVN0b3BwZWROb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBzdWJzY3JpYmVyKSB7XG4gICAgdmFyIG9uU3RvcHBlZE5vdGlmaWNhdGlvbiA9IGNvbmZpZy5vblN0b3BwZWROb3RpZmljYXRpb247XG4gICAgb25TdG9wcGVkTm90aWZpY2F0aW9uICYmIHRpbWVvdXRQcm92aWRlci5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uU3RvcHBlZE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIHN1YnNjcmliZXIpOyB9KTtcbn1cbmV4cG9ydCB2YXIgRU1QVFlfT0JTRVJWRVIgPSB7XG4gICAgY2xvc2VkOiB0cnVlLFxuICAgIG5leHQ6IG5vb3AsXG4gICAgZXJyb3I6IGRlZmF1bHRFcnJvckhhbmRsZXIsXG4gICAgY29tcGxldGU6IG5vb3AsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3Vic2NyaWJlci5qcy5tYXAiLCJleHBvcnQgdmFyIG9ic2VydmFibGUgPSAoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLm9ic2VydmFibGUpIHx8ICdAQG9ic2VydmFibGUnOyB9KSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b2JzZXJ2YWJsZS5qcy5tYXAiLCJleHBvcnQgZnVuY3Rpb24gaWRlbnRpdHkoeCkge1xuICAgIHJldHVybiB4O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aWRlbnRpdHkuanMubWFwIiwiaW1wb3J0IHsgaWRlbnRpdHkgfSBmcm9tICcuL2lkZW50aXR5JztcbmV4cG9ydCBmdW5jdGlvbiBwaXBlKCkge1xuICAgIHZhciBmbnMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBmbnNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIHBpcGVGcm9tQXJyYXkoZm5zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwaXBlRnJvbUFycmF5KGZucykge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICB9XG4gICAgaWYgKGZucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGZuc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBpcGVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBmbnMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBmbikgeyByZXR1cm4gZm4ocHJldik7IH0sIGlucHV0KTtcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGlwZS5qcy5tYXAiLCJpbXBvcnQgeyBTYWZlU3Vic2NyaWJlciwgU3Vic2NyaWJlciB9IGZyb20gJy4vU3Vic2NyaWJlcic7XG5pbXBvcnQgeyBpc1N1YnNjcmlwdGlvbiB9IGZyb20gJy4vU3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IG9ic2VydmFibGUgYXMgU3ltYm9sX29ic2VydmFibGUgfSBmcm9tICcuL3N5bWJvbC9vYnNlcnZhYmxlJztcbmltcG9ydCB7IHBpcGVGcm9tQXJyYXkgfSBmcm9tICcuL3V0aWwvcGlwZSc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi91dGlsL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHsgZXJyb3JDb250ZXh0IH0gZnJvbSAnLi91dGlsL2Vycm9yQ29udGV4dCc7XG52YXIgT2JzZXJ2YWJsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT2JzZXJ2YWJsZShzdWJzY3JpYmUpIHtcbiAgICAgICAgaWYgKHN1YnNjcmliZSkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaWJlID0gc3Vic2NyaWJlO1xuICAgICAgICB9XG4gICAgfVxuICAgIE9ic2VydmFibGUucHJvdG90eXBlLmxpZnQgPSBmdW5jdGlvbiAob3BlcmF0b3IpIHtcbiAgICAgICAgdmFyIG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgpO1xuICAgICAgICBvYnNlcnZhYmxlLnNvdXJjZSA9IHRoaXM7XG4gICAgICAgIG9ic2VydmFibGUub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGU7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiAob2JzZXJ2ZXJPck5leHQsIGVycm9yLCBjb21wbGV0ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgc3Vic2NyaWJlciA9IGlzU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCkgPyBvYnNlcnZlck9yTmV4dCA6IG5ldyBTYWZlU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLCBvcGVyYXRvciA9IF9hLm9wZXJhdG9yLCBzb3VyY2UgPSBfYS5zb3VyY2U7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmFkZChvcGVyYXRvclxuICAgICAgICAgICAgICAgID9cbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IuY2FsbChzdWJzY3JpYmVyLCBzb3VyY2UpXG4gICAgICAgICAgICAgICAgOiBzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3N1YnNjcmliZShzdWJzY3JpYmVyKVxuICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fdHJ5U3Vic2NyaWJlKHN1YnNjcmliZXIpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdWJzY3JpYmVyO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuX3RyeVN1YnNjcmliZSA9IGZ1bmN0aW9uIChzaW5rKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3Vic2NyaWJlKHNpbmspO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHNpbmsuZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChuZXh0LCBwcm9taXNlQ3Rvcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBwcm9taXNlQ3RvciA9IGdldFByb21pc2VDdG9yKHByb21pc2VDdG9yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBwcm9taXNlQ3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgc3Vic2NyaWJlciA9IG5ldyBTYWZlU3Vic2NyaWJlcih7XG4gICAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IHJlamVjdCxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogcmVzb2x2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3RoaXMuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLl9zdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlW1N5bWJvbF9vYnNlcnZhYmxlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb3BlcmF0aW9ucyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgb3BlcmF0aW9uc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwaXBlRnJvbUFycmF5KG9wZXJhdGlvbnMpKHRoaXMpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUudG9Qcm9taXNlID0gZnVuY3Rpb24gKHByb21pc2VDdG9yKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHByb21pc2VDdG9yID0gZ2V0UHJvbWlzZUN0b3IocHJvbWlzZUN0b3IpO1xuICAgICAgICByZXR1cm4gbmV3IHByb21pc2VDdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZTtcbiAgICAgICAgICAgIF90aGlzLnN1YnNjcmliZShmdW5jdGlvbiAoeCkgeyByZXR1cm4gKHZhbHVlID0geCk7IH0sIGZ1bmN0aW9uIChlcnIpIHsgcmV0dXJuIHJlamVjdChlcnIpOyB9LCBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlKHZhbHVlKTsgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5jcmVhdGUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlKSB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmUpO1xuICAgIH07XG4gICAgcmV0dXJuIE9ic2VydmFibGU7XG59KCkpO1xuZXhwb3J0IHsgT2JzZXJ2YWJsZSB9O1xuZnVuY3Rpb24gZ2V0UHJvbWlzZUN0b3IocHJvbWlzZUN0b3IpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IHByb21pc2VDdG9yICE9PSBudWxsICYmIHByb21pc2VDdG9yICE9PSB2b2lkIDAgPyBwcm9taXNlQ3RvciA6IGNvbmZpZy5Qcm9taXNlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBQcm9taXNlO1xufVxuZnVuY3Rpb24gaXNPYnNlcnZlcih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiBpc0Z1bmN0aW9uKHZhbHVlLm5leHQpICYmIGlzRnVuY3Rpb24odmFsdWUuZXJyb3IpICYmIGlzRnVuY3Rpb24odmFsdWUuY29tcGxldGUpO1xufVxuZnVuY3Rpb24gaXNTdWJzY3JpYmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIFN1YnNjcmliZXIpIHx8IChpc09ic2VydmVyKHZhbHVlKSAmJiBpc1N1YnNjcmlwdGlvbih2YWx1ZSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T2JzZXJ2YWJsZS5qcy5tYXAiLCJpbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi9pc0Z1bmN0aW9uJztcbmV4cG9ydCBmdW5jdGlvbiBoYXNMaWZ0KHNvdXJjZSkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKHNvdXJjZSA9PT0gbnVsbCB8fCBzb3VyY2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNvdXJjZS5saWZ0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBvcGVyYXRlKGluaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgICBpZiAoaGFzTGlmdChzb3VyY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlLmxpZnQoZnVuY3Rpb24gKGxpZnRlZFNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbml0KGxpZnRlZFNvdXJjZSwgdGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1VuYWJsZSB0byBsaWZ0IHVua25vd24gT2JzZXJ2YWJsZSB0eXBlJyk7XG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpZnQuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBTdWJzY3JpYmVyIH0gZnJvbSAnLi4vU3Vic2NyaWJlcic7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT3BlcmF0b3JTdWJzY3JpYmVyKGRlc3RpbmF0aW9uLCBvbk5leHQsIG9uQ29tcGxldGUsIG9uRXJyb3IsIG9uRmluYWxpemUpIHtcbiAgICByZXR1cm4gbmV3IE9wZXJhdG9yU3Vic2NyaWJlcihkZXN0aW5hdGlvbiwgb25OZXh0LCBvbkNvbXBsZXRlLCBvbkVycm9yLCBvbkZpbmFsaXplKTtcbn1cbnZhciBPcGVyYXRvclN1YnNjcmliZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhPcGVyYXRvclN1YnNjcmliZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gT3BlcmF0b3JTdWJzY3JpYmVyKGRlc3RpbmF0aW9uLCBvbk5leHQsIG9uQ29tcGxldGUsIG9uRXJyb3IsIG9uRmluYWxpemUsIHNob3VsZFVuc3Vic2NyaWJlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGRlc3RpbmF0aW9uKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5vbkZpbmFsaXplID0gb25GaW5hbGl6ZTtcbiAgICAgICAgX3RoaXMuc2hvdWxkVW5zdWJzY3JpYmUgPSBzaG91bGRVbnN1YnNjcmliZTtcbiAgICAgICAgX3RoaXMuX25leHQgPSBvbk5leHRcbiAgICAgICAgICAgID8gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgb25OZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogX3N1cGVyLnByb3RvdHlwZS5fbmV4dDtcbiAgICAgICAgX3RoaXMuX2Vycm9yID0gb25FcnJvclxuICAgICAgICAgICAgPyBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBfc3VwZXIucHJvdG90eXBlLl9lcnJvcjtcbiAgICAgICAgX3RoaXMuX2NvbXBsZXRlID0gb25Db21wbGV0ZVxuICAgICAgICAgICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBfc3VwZXIucHJvdG90eXBlLl9jb21wbGV0ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPcGVyYXRvclN1YnNjcmliZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghdGhpcy5zaG91bGRVbnN1YnNjcmliZSB8fCB0aGlzLnNob3VsZFVuc3Vic2NyaWJlKCkpIHtcbiAgICAgICAgICAgIHZhciBjbG9zZWRfMSA9IHRoaXMuY2xvc2VkO1xuICAgICAgICAgICAgX3N1cGVyLnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgIWNsb3NlZF8xICYmICgoX2EgPSB0aGlzLm9uRmluYWxpemUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHRoaXMpKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIE9wZXJhdG9yU3Vic2NyaWJlcjtcbn0oU3Vic2NyaWJlcikpO1xuZXhwb3J0IHsgT3BlcmF0b3JTdWJzY3JpYmVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1PcGVyYXRvclN1YnNjcmliZXIuanMubWFwIiwiaW1wb3J0IHsgY3JlYXRlRXJyb3JDbGFzcyB9IGZyb20gJy4vY3JlYXRlRXJyb3JDbGFzcyc7XG5leHBvcnQgdmFyIE9iamVjdFVuc3Vic2NyaWJlZEVycm9yID0gY3JlYXRlRXJyb3JDbGFzcyhmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIE9iamVjdFVuc3Vic2NyaWJlZEVycm9ySW1wbCgpIHtcbiAgICAgICAgX3N1cGVyKHRoaXMpO1xuICAgICAgICB0aGlzLm5hbWUgPSAnT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3InO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSAnb2JqZWN0IHVuc3Vic2NyaWJlZCc7XG4gICAgfTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzLCBfX3ZhbHVlcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJy4vT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIEVNUFRZX1NVQlNDUklQVElPTiB9IGZyb20gJy4vU3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IE9iamVjdFVuc3Vic2NyaWJlZEVycm9yIH0gZnJvbSAnLi91dGlsL09iamVjdFVuc3Vic2NyaWJlZEVycm9yJztcbmltcG9ydCB7IGFyclJlbW92ZSB9IGZyb20gJy4vdXRpbC9hcnJSZW1vdmUnO1xuaW1wb3J0IHsgZXJyb3JDb250ZXh0IH0gZnJvbSAnLi91dGlsL2Vycm9yQ29udGV4dCc7XG52YXIgU3ViamVjdCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFN1YmplY3QsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3ViamVjdCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgICAgICBfdGhpcy5vYnNlcnZlcnMgPSBbXTtcbiAgICAgICAgX3RoaXMuaXNTdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIF90aGlzLnRocm93bkVycm9yID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBTdWJqZWN0LnByb3RvdHlwZS5saWZ0ID0gZnVuY3Rpb24gKG9wZXJhdG9yKSB7XG4gICAgICAgIHZhciBzdWJqZWN0ID0gbmV3IEFub255bW91c1N1YmplY3QodGhpcywgdGhpcyk7XG4gICAgICAgIHN1YmplY3Qub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgcmV0dXJuIHN1YmplY3Q7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5fdGhyb3dJZkNsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBlcnJvckNvbnRleHQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgICAgICBfdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICAgICAgaWYgKCFfdGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIV90aGlzLmN1cnJlbnRPYnNlcnZlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuY3VycmVudE9ic2VydmVycyA9IEFycmF5LmZyb20oX3RoaXMub2JzZXJ2ZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9ic2VydmVyID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGVycm9yQ29udGV4dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICAgICAgaWYgKCFfdGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5oYXNFcnJvciA9IF90aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgX3RoaXMudGhyb3duRXJyb3IgPSBlcnI7XG4gICAgICAgICAgICAgICAgdmFyIG9ic2VydmVycyA9IF90aGlzLm9ic2VydmVycztcbiAgICAgICAgICAgICAgICB3aGlsZSAob2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMuc2hpZnQoKS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgICAgICBpZiAoIV90aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgICAgIF90aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIG9ic2VydmVycyA9IF90aGlzLm9ic2VydmVycztcbiAgICAgICAgICAgICAgICB3aGlsZSAob2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMuc2hpZnQoKS5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXJzID0gdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdWJqZWN0LnByb3RvdHlwZSwgXCJvYnNlcnZlZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuICgoX2EgPSB0aGlzLm9ic2VydmVycykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgPiAwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX3RyeVN1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHRoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5wcm90b3R5cGUuX3RyeVN1YnNjcmliZS5jYWxsKHRoaXMsIHN1YnNjcmliZXIpO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHRoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgdGhpcy5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyhzdWJzY3JpYmVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubmVyU3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX2lubmVyU3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hID0gdGhpcywgaGFzRXJyb3IgPSBfYS5oYXNFcnJvciwgaXNTdG9wcGVkID0gX2EuaXNTdG9wcGVkLCBvYnNlcnZlcnMgPSBfYS5vYnNlcnZlcnM7XG4gICAgICAgIGlmIChoYXNFcnJvciB8fCBpc1N0b3BwZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWV9TVUJTQ1JJUFRJT047XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICAgICAgb2JzZXJ2ZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgICAgICAgICAgYXJyUmVtb3ZlKG9ic2VydmVycywgc3Vic2NyaWJlcik7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBoYXNFcnJvciA9IF9hLmhhc0Vycm9yLCB0aHJvd25FcnJvciA9IF9hLnRocm93bkVycm9yLCBpc1N0b3BwZWQgPSBfYS5pc1N0b3BwZWQ7XG4gICAgICAgIGlmIChoYXNFcnJvcikge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcih0aHJvd25FcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLmFzT2JzZXJ2YWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgpO1xuICAgICAgICBvYnNlcnZhYmxlLnNvdXJjZSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICAgIH07XG4gICAgU3ViamVjdC5jcmVhdGUgPSBmdW5jdGlvbiAoZGVzdGluYXRpb24sIHNvdXJjZSkge1xuICAgICAgICByZXR1cm4gbmV3IEFub255bW91c1N1YmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSk7XG4gICAgfTtcbiAgICByZXR1cm4gU3ViamVjdDtcbn0oT2JzZXJ2YWJsZSkpO1xuZXhwb3J0IHsgU3ViamVjdCB9O1xudmFyIEFub255bW91c1N1YmplY3QgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBbm9ueW1vdXNTdWJqZWN0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFub255bW91c1N1YmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICBfdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmV4dCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIHZhbHVlKTtcbiAgICB9O1xuICAgIEFub255bW91c1N1YmplY3QucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZXJyb3IpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBlcnIpO1xuICAgIH07XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMuZGVzdGluYXRpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb21wbGV0ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpO1xuICAgIH07XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1YnNjcmliZShzdWJzY3JpYmVyKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogRU1QVFlfU1VCU0NSSVBUSU9OO1xuICAgIH07XG4gICAgcmV0dXJuIEFub255bW91c1N1YmplY3Q7XG59KFN1YmplY3QpKTtcbmV4cG9ydCB7IEFub255bW91c1N1YmplY3QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN1YmplY3QuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAnLi9TdWJqZWN0JztcbnZhciBCZWhhdmlvclN1YmplY3QgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhCZWhhdmlvclN1YmplY3QsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQmVoYXZpb3JTdWJqZWN0KF92YWx1ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5fdmFsdWUgPSBfdmFsdWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJlaGF2aW9yU3ViamVjdC5wcm90b3R5cGUsIFwidmFsdWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBCZWhhdmlvclN1YmplY3QucHJvdG90eXBlLl9zdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgc3Vic2NyaXB0aW9uID0gX3N1cGVyLnByb3RvdHlwZS5fc3Vic2NyaWJlLmNhbGwodGhpcywgc3Vic2NyaWJlcik7XG4gICAgICAgICFzdWJzY3JpcHRpb24uY2xvc2VkICYmIHN1YnNjcmliZXIubmV4dCh0aGlzLl92YWx1ZSk7XG4gICAgICAgIHJldHVybiBzdWJzY3JpcHRpb247XG4gICAgfTtcbiAgICBCZWhhdmlvclN1YmplY3QucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBoYXNFcnJvciA9IF9hLmhhc0Vycm9yLCB0aHJvd25FcnJvciA9IF9hLnRocm93bkVycm9yLCBfdmFsdWUgPSBfYS5fdmFsdWU7XG4gICAgICAgIGlmIChoYXNFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdGhyb3duRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICByZXR1cm4gX3ZhbHVlO1xuICAgIH07XG4gICAgQmVoYXZpb3JTdWJqZWN0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUubmV4dC5jYWxsKHRoaXMsICh0aGlzLl92YWx1ZSA9IHZhbHVlKSk7XG4gICAgfTtcbiAgICByZXR1cm4gQmVoYXZpb3JTdWJqZWN0O1xufShTdWJqZWN0KSk7XG5leHBvcnQgeyBCZWhhdmlvclN1YmplY3QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJlaGF2aW9yU3ViamVjdC5qcy5tYXAiLCJleHBvcnQgdmFyIGRhdGVUaW1lc3RhbXBQcm92aWRlciA9IHtcbiAgICBub3c6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChkYXRlVGltZXN0YW1wUHJvdmlkZXIuZGVsZWdhdGUgfHwgRGF0ZSkubm93KCk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGVUaW1lc3RhbXBQcm92aWRlci5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJy4uL1N1YnNjcmlwdGlvbic7XG52YXIgQWN0aW9uID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQWN0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFjdGlvbihzY2hlZHVsZXIsIHdvcmspIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgfVxuICAgIEFjdGlvbi5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbiAoc3RhdGUsIGRlbGF5KSB7XG4gICAgICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBBY3Rpb247XG59KFN1YnNjcmlwdGlvbikpO1xuZXhwb3J0IHsgQWN0aW9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY3Rpb24uanMubWFwIiwiaW1wb3J0IHsgX19yZWFkLCBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5leHBvcnQgdmFyIGludGVydmFsUHJvdmlkZXIgPSB7XG4gICAgc2V0SW50ZXJ2YWw6IGZ1bmN0aW9uIChoYW5kbGVyLCB0aW1lb3V0KSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IGludGVydmFsUHJvdmlkZXIuZGVsZWdhdGU7XG4gICAgICAgIGlmIChkZWxlZ2F0ZSA9PT0gbnVsbCB8fCBkZWxlZ2F0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVsZWdhdGUuc2V0SW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5zZXRJbnRlcnZhbC5hcHBseShkZWxlZ2F0ZSwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXRJbnRlcnZhbC5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW2hhbmRsZXIsIHRpbWVvdXRdLCBfX3JlYWQoYXJncykpKTtcbiAgICB9LFxuICAgIGNsZWFySW50ZXJ2YWw6IGZ1bmN0aW9uIChoYW5kbGUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gaW50ZXJ2YWxQcm92aWRlci5kZWxlZ2F0ZTtcbiAgICAgICAgcmV0dXJuICgoZGVsZWdhdGUgPT09IG51bGwgfHwgZGVsZWdhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlbGVnYXRlLmNsZWFySW50ZXJ2YWwpIHx8IGNsZWFySW50ZXJ2YWwpKGhhbmRsZSk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludGVydmFsUHJvdmlkZXIuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL0FjdGlvbic7XG5pbXBvcnQgeyBpbnRlcnZhbFByb3ZpZGVyIH0gZnJvbSAnLi9pbnRlcnZhbFByb3ZpZGVyJztcbmltcG9ydCB7IGFyclJlbW92ZSB9IGZyb20gJy4uL3V0aWwvYXJyUmVtb3ZlJztcbnZhciBBc3luY0FjdGlvbiA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFzeW5jQWN0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFzeW5jQWN0aW9uKHNjaGVkdWxlciwgd29yaykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBzY2hlZHVsZXIsIHdvcmspIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjtcbiAgICAgICAgX3RoaXMud29yayA9IHdvcms7XG4gICAgICAgIF90aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBBc3luY0FjdGlvbi5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbiAoc3RhdGUsIGRlbGF5KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgICAgICB2YXIgaWQgPSB0aGlzLmlkO1xuICAgICAgICB2YXIgc2NoZWR1bGVyID0gdGhpcy5zY2hlZHVsZXI7XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZChzY2hlZHVsZXIsIGlkLCBkZWxheSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wZW5kaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kZWxheSA9IGRlbGF5O1xuICAgICAgICB0aGlzLmlkID0gKF9hID0gdGhpcy5pZCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5yZXF1ZXN0QXN5bmNJZChzY2hlZHVsZXIsIHRoaXMuaWQsIGRlbGF5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBBc3luY0FjdGlvbi5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQgPSBmdW5jdGlvbiAoc2NoZWR1bGVyLCBfaWQsIGRlbGF5KSB7XG4gICAgICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgICAgICByZXR1cm4gaW50ZXJ2YWxQcm92aWRlci5zZXRJbnRlcnZhbChzY2hlZHVsZXIuZmx1c2guYmluZChzY2hlZHVsZXIsIHRoaXMpLCBkZWxheSk7XG4gICAgfTtcbiAgICBBc3luY0FjdGlvbi5wcm90b3R5cGUucmVjeWNsZUFzeW5jSWQgPSBmdW5jdGlvbiAoX3NjaGVkdWxlciwgaWQsIGRlbGF5KSB7XG4gICAgICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgICAgICBpZiAoZGVsYXkgIT0gbnVsbCAmJiB0aGlzLmRlbGF5ID09PSBkZWxheSAmJiB0aGlzLnBlbmRpbmcgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gaWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICAgIGludGVydmFsUHJvdmlkZXIuY2xlYXJJbnRlcnZhbChpZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKHN0YXRlLCBkZWxheSkge1xuICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoJ2V4ZWN1dGluZyBhIGNhbmNlbGxlZCBhY3Rpb24nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdmFyIGVycm9yID0gdGhpcy5fZXhlY3V0ZShzdGF0ZSwgZGVsYXkpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnBlbmRpbmcgPT09IGZhbHNlICYmIHRoaXMuaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQodGhpcy5zY2hlZHVsZXIsIHRoaXMuaWQsIG51bGwpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBBc3luY0FjdGlvbi5wcm90b3R5cGUuX2V4ZWN1dGUgPSBmdW5jdGlvbiAoc3RhdGUsIF9kZWxheSkge1xuICAgICAgICB2YXIgZXJyb3JlZCA9IGZhbHNlO1xuICAgICAgICB2YXIgZXJyb3JWYWx1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMud29yayhzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGVycm9yZWQgPSB0cnVlO1xuICAgICAgICAgICAgZXJyb3JWYWx1ZSA9IGUgPyBlIDogbmV3IEVycm9yKCdTY2hlZHVsZWQgYWN0aW9uIHRocmV3IGZhbHN5IGVycm9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yZWQpIHtcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHJldHVybiBlcnJvclZhbHVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBBc3luY0FjdGlvbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGlkID0gX2EuaWQsIHNjaGVkdWxlciA9IF9hLnNjaGVkdWxlcjtcbiAgICAgICAgICAgIHZhciBhY3Rpb25zID0gc2NoZWR1bGVyLmFjdGlvbnM7XG4gICAgICAgICAgICB0aGlzLndvcmsgPSB0aGlzLnN0YXRlID0gdGhpcy5zY2hlZHVsZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBhcnJSZW1vdmUoYWN0aW9ucywgdGhpcyk7XG4gICAgICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKHNjaGVkdWxlciwgaWQsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kZWxheSA9IG51bGw7XG4gICAgICAgICAgICBfc3VwZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBBc3luY0FjdGlvbjtcbn0oQWN0aW9uKSk7XG5leHBvcnQgeyBBc3luY0FjdGlvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXN5bmNBY3Rpb24uanMubWFwIiwiaW1wb3J0IHsgZGF0ZVRpbWVzdGFtcFByb3ZpZGVyIH0gZnJvbSAnLi9zY2hlZHVsZXIvZGF0ZVRpbWVzdGFtcFByb3ZpZGVyJztcbnZhciBTY2hlZHVsZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNjaGVkdWxlcihzY2hlZHVsZXJBY3Rpb25DdG9yLCBub3cpIHtcbiAgICAgICAgaWYgKG5vdyA9PT0gdm9pZCAwKSB7IG5vdyA9IFNjaGVkdWxlci5ub3c7IH1cbiAgICAgICAgdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yID0gc2NoZWR1bGVyQWN0aW9uQ3RvcjtcbiAgICAgICAgdGhpcy5ub3cgPSBub3c7XG4gICAgfVxuICAgIFNjaGVkdWxlci5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbiAod29yaywgZGVsYXksIHN0YXRlKSB7XG4gICAgICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgICAgICByZXR1cm4gbmV3IHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcih0aGlzLCB3b3JrKS5zY2hlZHVsZShzdGF0ZSwgZGVsYXkpO1xuICAgIH07XG4gICAgU2NoZWR1bGVyLm5vdyA9IGRhdGVUaW1lc3RhbXBQcm92aWRlci5ub3c7XG4gICAgcmV0dXJuIFNjaGVkdWxlcjtcbn0oKSk7XG5leHBvcnQgeyBTY2hlZHVsZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNjaGVkdWxlci5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IFNjaGVkdWxlciB9IGZyb20gJy4uL1NjaGVkdWxlcic7XG52YXIgQXN5bmNTY2hlZHVsZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBc3luY1NjaGVkdWxlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBc3luY1NjaGVkdWxlcihTY2hlZHVsZXJBY3Rpb24sIG5vdykge1xuICAgICAgICBpZiAobm93ID09PSB2b2lkIDApIHsgbm93ID0gU2NoZWR1bGVyLm5vdzsgfVxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBTY2hlZHVsZXJBY3Rpb24sIG5vdykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuYWN0aW9ucyA9IFtdO1xuICAgICAgICBfdGhpcy5fYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQXN5bmNTY2hlZHVsZXIucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24gKGFjdGlvbikge1xuICAgICAgICB2YXIgYWN0aW9ucyA9IHRoaXMuYWN0aW9ucztcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yO1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAoKGVycm9yID0gYWN0aW9uLmV4ZWN1dGUoYWN0aW9uLnN0YXRlLCBhY3Rpb24uZGVsYXkpKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlICgoYWN0aW9uID0gYWN0aW9ucy5zaGlmdCgpKSk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHdoaWxlICgoYWN0aW9uID0gYWN0aW9ucy5zaGlmdCgpKSkge1xuICAgICAgICAgICAgICAgIGFjdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBBc3luY1NjaGVkdWxlcjtcbn0oU2NoZWR1bGVyKSk7XG5leHBvcnQgeyBBc3luY1NjaGVkdWxlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXN5bmNTY2hlZHVsZXIuanMubWFwIiwiaW1wb3J0IHsgQXN5bmNBY3Rpb24gfSBmcm9tICcuL0FzeW5jQWN0aW9uJztcbmltcG9ydCB7IEFzeW5jU2NoZWR1bGVyIH0gZnJvbSAnLi9Bc3luY1NjaGVkdWxlcic7XG5leHBvcnQgdmFyIGFzeW5jU2NoZWR1bGVyID0gbmV3IEFzeW5jU2NoZWR1bGVyKEFzeW5jQWN0aW9uKTtcbmV4cG9ydCB2YXIgYXN5bmMgPSBhc3luY1NjaGVkdWxlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFzeW5jLmpzLm1hcCIsImltcG9ydCB7IGFzeW5jU2NoZWR1bGVyIH0gZnJvbSAnLi4vc2NoZWR1bGVyL2FzeW5jJztcbmltcG9ydCB7IG9wZXJhdGUgfSBmcm9tICcuLi91dGlsL2xpZnQnO1xuaW1wb3J0IHsgY3JlYXRlT3BlcmF0b3JTdWJzY3JpYmVyIH0gZnJvbSAnLi9PcGVyYXRvclN1YnNjcmliZXInO1xuZXhwb3J0IGZ1bmN0aW9uIGRlYm91bmNlVGltZShkdWVUaW1lLCBzY2hlZHVsZXIpIHtcbiAgICBpZiAoc2NoZWR1bGVyID09PSB2b2lkIDApIHsgc2NoZWR1bGVyID0gYXN5bmNTY2hlZHVsZXI7IH1cbiAgICByZXR1cm4gb3BlcmF0ZShmdW5jdGlvbiAoc291cmNlLCBzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBhY3RpdmVUYXNrID0gbnVsbDtcbiAgICAgICAgdmFyIGxhc3RWYWx1ZSA9IG51bGw7XG4gICAgICAgIHZhciBsYXN0VGltZSA9IG51bGw7XG4gICAgICAgIHZhciBlbWl0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZVRhc2spIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYXNrLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgYWN0aXZlVGFzayA9IG51bGw7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gbGFzdFZhbHVlO1xuICAgICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gZW1pdFdoZW5JZGxlKCkge1xuICAgICAgICAgICAgdmFyIHRhcmdldFRpbWUgPSBsYXN0VGltZSArIGR1ZVRpbWU7XG4gICAgICAgICAgICB2YXIgbm93ID0gc2NoZWR1bGVyLm5vdygpO1xuICAgICAgICAgICAgaWYgKG5vdyA8IHRhcmdldFRpbWUpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYXNrID0gdGhpcy5zY2hlZHVsZSh1bmRlZmluZWQsIHRhcmdldFRpbWUgLSBub3cpO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuYWRkKGFjdGl2ZVRhc2spO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2Uuc3Vic2NyaWJlKGNyZWF0ZU9wZXJhdG9yU3Vic2NyaWJlcihzdWJzY3JpYmVyLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGxhc3RWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgbGFzdFRpbWUgPSBzY2hlZHVsZXIubm93KCk7XG4gICAgICAgICAgICBpZiAoIWFjdGl2ZVRhc2spIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYXNrID0gc2NoZWR1bGVyLnNjaGVkdWxlKGVtaXRXaGVuSWRsZSwgZHVlVGltZSk7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5hZGQoYWN0aXZlVGFzayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVtaXQoKTtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSwgdW5kZWZpbmVkLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsYXN0VmFsdWUgPSBhY3RpdmVUYXNrID0gbnVsbDtcbiAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVib3VuY2VUaW1lLmpzLm1hcCIsImltcG9ydCB7c2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCBPcmRlciBmcm9tIFwiLi4vbW9kZWwvb3JkZXJcIlxuaW1wb3J0IHtvYnNlcnZlT2JqZWN0fSBmcm9tIFwiLi4vbGliL29iLW9iXCJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSBcInJ4anNcIlxuXG5Ac2luZ2xldG9uKClcbmNsYXNzIE9yZGVyU3RhdGUge1xuXG4gICAgb3JkZXJzOiBBcnJheTxPcmRlcj5cbiAgICBwcml2YXRlIGN1cnJlbnRPcmRlcjogQmVoYXZpb3JTdWJqZWN0PE9yZGVyPlxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudE9yZGVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPcmRlcj4obmV3IE9yZGVyKCkpXG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudE9yZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50T3JkZXJcbiAgICB9XG5cbiAgICBzZXRDdXJyZW50T3JkZXIob3JkZXI6IE9yZGVyKSB7XG4gICAgICAgIHRoaXMuY3VycmVudE9yZGVyLm5leHQob3JkZXIpXG4gICAgfVxuXG4gICAgZ2V0T3JkZXIodXVpZDogU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9yZGVycy5tYXAoKGUpID0+IGUudXVpZCA9PSB1dWlkKVxuICAgIH1cblxuICAgIHVwZGF0ZU9yZGVyKG9yZGVyOiBPcmRlcikge1xuICAgICAgICB0aGlzLm9yZGVycy5wdXNoKG9yZGVyKVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdGF0ZVxuIiwidmFyIG4sbCx1LHQsaSxyLG8sZSxmLGMscyxhLGgscD17fSx2PVtdLHk9L2FjaXR8ZXgoPzpzfGd8bnxwfCQpfHJwaHxncmlkfG93c3xtbmN8bnR3fGluZVtjaF18em9vfF5vcmR8aXRlcmEvaSxkPUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gdyhuLGwpe2Zvcih2YXIgdSBpbiBsKW5bdV09bFt1XTtyZXR1cm4gbn1mdW5jdGlvbiBfKG4pe24mJm4ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pfWZ1bmN0aW9uIGcobCx1LHQpe3ZhciBpLHIsbyxlPXt9O2ZvcihvIGluIHUpXCJrZXlcIj09bz9pPXVbb106XCJyZWZcIj09bz9yPXVbb106ZVtvXT11W29dO2lmKGFyZ3VtZW50cy5sZW5ndGg+MiYmKGUuY2hpbGRyZW49YXJndW1lbnRzLmxlbmd0aD4zP24uY2FsbChhcmd1bWVudHMsMik6dCksXCJmdW5jdGlvblwiPT10eXBlb2YgbCYmbnVsbCE9bC5kZWZhdWx0UHJvcHMpZm9yKG8gaW4gbC5kZWZhdWx0UHJvcHMpdm9pZCAwPT09ZVtvXSYmKGVbb109bC5kZWZhdWx0UHJvcHNbb10pO3JldHVybiBtKGwsZSxpLHIsbnVsbCl9ZnVuY3Rpb24gbShuLHQsaSxyLG8pe3ZhciBlPXt0eXBlOm4scHJvcHM6dCxrZXk6aSxyZWY6cixfX2s6bnVsbCxfXzpudWxsLF9fYjowLF9fZTpudWxsLF9fYzpudWxsLGNvbnN0cnVjdG9yOnZvaWQgMCxfX3Y6bnVsbD09bz8rK3U6byxfX2k6LTEsX191OjB9O3JldHVybiBudWxsPT1vJiZudWxsIT1sLnZub2RlJiZsLnZub2RlKGUpLGV9ZnVuY3Rpb24gYigpe3JldHVybntjdXJyZW50Om51bGx9fWZ1bmN0aW9uIGsobil7cmV0dXJuIG4uY2hpbGRyZW59ZnVuY3Rpb24geChuLGwpe3RoaXMucHJvcHM9bix0aGlzLmNvbnRleHQ9bH1mdW5jdGlvbiBDKG4sbCl7aWYobnVsbD09bClyZXR1cm4gbi5fXz9DKG4uX18sbi5fX2krMSk6bnVsbDtmb3IodmFyIHU7bDxuLl9fay5sZW5ndGg7bCsrKWlmKG51bGwhPSh1PW4uX19rW2xdKSYmbnVsbCE9dS5fX2UpcmV0dXJuIHUuX19lO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIG4udHlwZT9DKG4pOm51bGx9ZnVuY3Rpb24gUyhuKXt2YXIgbCx1O2lmKG51bGwhPShuPW4uX18pJiZudWxsIT1uLl9fYyl7Zm9yKG4uX19lPW4uX19jLmJhc2U9bnVsbCxsPTA7bDxuLl9fay5sZW5ndGg7bCsrKWlmKG51bGwhPSh1PW4uX19rW2xdKSYmbnVsbCE9dS5fX2Upe24uX19lPW4uX19jLmJhc2U9dS5fX2U7YnJlYWt9cmV0dXJuIFMobil9fWZ1bmN0aW9uIE0obil7KCFuLl9fZCYmKG4uX19kPSEwKSYmaS5wdXNoKG4pJiYhUC5fX3IrK3x8ciE9PWwuZGVib3VuY2VSZW5kZXJpbmcpJiYoKHI9bC5kZWJvdW5jZVJlbmRlcmluZyl8fG8pKFApfWZ1bmN0aW9uIFAoKXt2YXIgbix1LHQscixvLGYsYyxzO2ZvcihpLnNvcnQoZSk7bj1pLnNoaWZ0KCk7KW4uX19kJiYodT1pLmxlbmd0aCxyPXZvaWQgMCxmPShvPSh0PW4pLl9fdikuX19lLGM9W10scz1bXSx0Ll9fUCYmKChyPXcoe30sbykpLl9fdj1vLl9fdisxLGwudm5vZGUmJmwudm5vZGUociksaih0Ll9fUCxyLG8sdC5fX24sdC5fX1AubmFtZXNwYWNlVVJJLDMyJm8uX191P1tmXTpudWxsLGMsbnVsbD09Zj9DKG8pOmYsISEoMzImby5fX3UpLHMpLHIuX192PW8uX192LHIuX18uX19rW3IuX19pXT1yLHooYyxyLHMpLHIuX19lIT1mJiZTKHIpKSxpLmxlbmd0aD51JiZpLnNvcnQoZSkpO1AuX19yPTB9ZnVuY3Rpb24gJChuLGwsdSx0LGkscixvLGUsZixjLHMpe3ZhciBhLGgseSxkLHcsXyxnPXQmJnQuX19rfHx2LG09bC5sZW5ndGg7Zm9yKGY9SSh1LGwsZyxmLG0pLGE9MDthPG07YSsrKW51bGwhPSh5PXUuX19rW2FdKSYmKGg9LTE9PT15Ll9faT9wOmdbeS5fX2ldfHxwLHkuX19pPWEsXz1qKG4seSxoLGkscixvLGUsZixjLHMpLGQ9eS5fX2UseS5yZWYmJmgucmVmIT15LnJlZiYmKGgucmVmJiZWKGgucmVmLG51bGwseSkscy5wdXNoKHkucmVmLHkuX19jfHxkLHkpKSxudWxsPT13JiZudWxsIT1kJiYodz1kKSw0JnkuX191fHxoLl9faz09PXkuX19rP2Y9QSh5LGYsbik6XCJmdW5jdGlvblwiPT10eXBlb2YgeS50eXBlJiZ2b2lkIDAhPT1fP2Y9XzpkJiYoZj1kLm5leHRTaWJsaW5nKSx5Ll9fdSY9LTcpO3JldHVybiB1Ll9fZT13LGZ9ZnVuY3Rpb24gSShuLGwsdSx0LGkpe3ZhciByLG8sZSxmLGMscz11Lmxlbmd0aCxhPXMsaD0wO2ZvcihuLl9faz1uZXcgQXJyYXkoaSkscj0wO3I8aTtyKyspbnVsbCE9KG89bFtyXSkmJlwiYm9vbGVhblwiIT10eXBlb2YgbyYmXCJmdW5jdGlvblwiIT10eXBlb2Ygbz8oZj1yK2gsKG89bi5fX2tbcl09XCJzdHJpbmdcIj09dHlwZW9mIG98fFwibnVtYmVyXCI9PXR5cGVvZiBvfHxcImJpZ2ludFwiPT10eXBlb2Ygb3x8by5jb25zdHJ1Y3Rvcj09U3RyaW5nP20obnVsbCxvLG51bGwsbnVsbCxudWxsKTpkKG8pP20oayx7Y2hpbGRyZW46b30sbnVsbCxudWxsLG51bGwpOnZvaWQgMD09PW8uY29uc3RydWN0b3ImJm8uX19iPjA/bShvLnR5cGUsby5wcm9wcyxvLmtleSxvLnJlZj9vLnJlZjpudWxsLG8uX192KTpvKS5fXz1uLG8uX19iPW4uX19iKzEsZT1udWxsLC0xIT09KGM9by5fX2k9TChvLHUsZixhKSkmJihhLS0sKGU9dVtjXSkmJihlLl9fdXw9MikpLG51bGw9PWV8fG51bGw9PT1lLl9fdj8oLTE9PWMmJmgtLSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBvLnR5cGUmJihvLl9fdXw9NCkpOmMhPWYmJihjPT1mLTE/aC0tOmM9PWYrMT9oKys6KGM+Zj9oLS06aCsrLG8uX191fD00KSkpOm4uX19rW3JdPW51bGw7aWYoYSlmb3Iocj0wO3I8cztyKyspbnVsbCE9KGU9dVtyXSkmJjA9PSgyJmUuX191KSYmKGUuX19lPT10JiYodD1DKGUpKSxxKGUsZSkpO3JldHVybiB0fWZ1bmN0aW9uIEEobixsLHUpe3ZhciB0LGk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbi50eXBlKXtmb3IodD1uLl9fayxpPTA7dCYmaTx0Lmxlbmd0aDtpKyspdFtpXSYmKHRbaV0uX189bixsPUEodFtpXSxsLHUpKTtyZXR1cm4gbH1uLl9fZSE9bCYmKGwmJm4udHlwZSYmIXUuY29udGFpbnMobCkmJihsPUMobikpLHUuaW5zZXJ0QmVmb3JlKG4uX19lLGx8fG51bGwpLGw9bi5fX2UpO2Rve2w9bCYmbC5uZXh0U2libGluZ313aGlsZShudWxsIT1sJiY4PT1sLm5vZGVUeXBlKTtyZXR1cm4gbH1mdW5jdGlvbiBIKG4sbCl7cmV0dXJuIGw9bHx8W10sbnVsbD09bnx8XCJib29sZWFuXCI9PXR5cGVvZiBufHwoZChuKT9uLnNvbWUoZnVuY3Rpb24obil7SChuLGwpfSk6bC5wdXNoKG4pKSxsfWZ1bmN0aW9uIEwobixsLHUsdCl7dmFyIGkscixvPW4ua2V5LGU9bi50eXBlLGY9bFt1XTtpZihudWxsPT09Znx8ZiYmbz09Zi5rZXkmJmU9PT1mLnR5cGUmJjA9PSgyJmYuX191KSlyZXR1cm4gdTtpZih0PihudWxsIT1mJiYwPT0oMiZmLl9fdSk/MTowKSlmb3IoaT11LTEscj11KzE7aT49MHx8cjxsLmxlbmd0aDspe2lmKGk+PTApe2lmKChmPWxbaV0pJiYwPT0oMiZmLl9fdSkmJm89PWYua2V5JiZlPT09Zi50eXBlKXJldHVybiBpO2ktLX1pZihyPGwubGVuZ3RoKXtpZigoZj1sW3JdKSYmMD09KDImZi5fX3UpJiZvPT1mLmtleSYmZT09PWYudHlwZSlyZXR1cm4gcjtyKyt9fXJldHVybi0xfWZ1bmN0aW9uIFQobixsLHUpe1wiLVwiPT1sWzBdP24uc2V0UHJvcGVydHkobCxudWxsPT11P1wiXCI6dSk6bltsXT1udWxsPT11P1wiXCI6XCJudW1iZXJcIiE9dHlwZW9mIHV8fHkudGVzdChsKT91OnUrXCJweFwifWZ1bmN0aW9uIEYobixsLHUsdCxpKXt2YXIgcjtuOmlmKFwic3R5bGVcIj09bClpZihcInN0cmluZ1wiPT10eXBlb2YgdSluLnN0eWxlLmNzc1RleHQ9dTtlbHNle2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0JiYobi5zdHlsZS5jc3NUZXh0PXQ9XCJcIiksdClmb3IobCBpbiB0KXUmJmwgaW4gdXx8VChuLnN0eWxlLGwsXCJcIik7aWYodSlmb3IobCBpbiB1KXQmJnVbbF09PT10W2xdfHxUKG4uc3R5bGUsbCx1W2xdKX1lbHNlIGlmKFwib1wiPT1sWzBdJiZcIm5cIj09bFsxXSlyPWwhPShsPWwucmVwbGFjZShmLFwiJDFcIikpLGw9bC50b0xvd2VyQ2FzZSgpaW4gbnx8XCJvbkZvY3VzT3V0XCI9PWx8fFwib25Gb2N1c0luXCI9PWw/bC50b0xvd2VyQ2FzZSgpLnNsaWNlKDIpOmwuc2xpY2UoMiksbi5sfHwobi5sPXt9KSxuLmxbbCtyXT11LHU/dD91LnU9dC51Oih1LnU9YyxuLmFkZEV2ZW50TGlzdGVuZXIobCxyP2E6cyxyKSk6bi5yZW1vdmVFdmVudExpc3RlbmVyKGwscj9hOnMscik7ZWxzZXtpZihcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI9PWkpbD1sLnJlcGxhY2UoL3hsaW5rKEh8OmgpLyxcImhcIikucmVwbGFjZSgvc05hbWUkLyxcInNcIik7ZWxzZSBpZihcIndpZHRoXCIhPWwmJlwiaGVpZ2h0XCIhPWwmJlwiaHJlZlwiIT1sJiZcImxpc3RcIiE9bCYmXCJmb3JtXCIhPWwmJlwidGFiSW5kZXhcIiE9bCYmXCJkb3dubG9hZFwiIT1sJiZcInJvd1NwYW5cIiE9bCYmXCJjb2xTcGFuXCIhPWwmJlwicm9sZVwiIT1sJiZcInBvcG92ZXJcIiE9bCYmbCBpbiBuKXRyeXtuW2xdPW51bGw9PXU/XCJcIjp1O2JyZWFrIG59Y2F0Y2gobil7fVwiZnVuY3Rpb25cIj09dHlwZW9mIHV8fChudWxsPT11fHwhMT09PXUmJlwiLVwiIT1sWzRdP24ucmVtb3ZlQXR0cmlidXRlKGwpOm4uc2V0QXR0cmlidXRlKGwsXCJwb3BvdmVyXCI9PWwmJjE9PXU/XCJcIjp1KSl9fWZ1bmN0aW9uIE8obil7cmV0dXJuIGZ1bmN0aW9uKHUpe2lmKHRoaXMubCl7dmFyIHQ9dGhpcy5sW3UudHlwZStuXTtpZihudWxsPT11LnQpdS50PWMrKztlbHNlIGlmKHUudDx0LnUpcmV0dXJuO3JldHVybiB0KGwuZXZlbnQ/bC5ldmVudCh1KTp1KX19fWZ1bmN0aW9uIGoobix1LHQsaSxyLG8sZSxmLGMscyl7dmFyIGEsaCxwLHYseSxnLG0sYixDLFMsTSxQLEksQSxILEwsVCxGPXUudHlwZTtpZih2b2lkIDAhPT11LmNvbnN0cnVjdG9yKXJldHVybiBudWxsOzEyOCZ0Ll9fdSYmKGM9ISEoMzImdC5fX3UpLG89W2Y9dS5fX2U9dC5fX2VdKSwoYT1sLl9fYikmJmEodSk7bjppZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBGKXRyeXtpZihiPXUucHJvcHMsQz1cInByb3RvdHlwZVwiaW4gRiYmRi5wcm90b3R5cGUucmVuZGVyLFM9KGE9Ri5jb250ZXh0VHlwZSkmJmlbYS5fX2NdLE09YT9TP1MucHJvcHMudmFsdWU6YS5fXzppLHQuX19jP209KGg9dS5fX2M9dC5fX2MpLl9fPWguX19FOihDP3UuX19jPWg9bmV3IEYoYixNKToodS5fX2M9aD1uZXcgeChiLE0pLGguY29uc3RydWN0b3I9RixoLnJlbmRlcj1CKSxTJiZTLnN1YihoKSxoLnByb3BzPWIsaC5zdGF0ZXx8KGguc3RhdGU9e30pLGguY29udGV4dD1NLGguX19uPWkscD1oLl9fZD0hMCxoLl9faD1bXSxoLl9zYj1bXSksQyYmbnVsbD09aC5fX3MmJihoLl9fcz1oLnN0YXRlKSxDJiZudWxsIT1GLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmKGguX19zPT1oLnN0YXRlJiYoaC5fX3M9dyh7fSxoLl9fcykpLHcoaC5fX3MsRi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoYixoLl9fcykpKSx2PWgucHJvcHMseT1oLnN0YXRlLGguX192PXUscClDJiZudWxsPT1GLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmbnVsbCE9aC5jb21wb25lbnRXaWxsTW91bnQmJmguY29tcG9uZW50V2lsbE1vdW50KCksQyYmbnVsbCE9aC5jb21wb25lbnREaWRNb3VudCYmaC5fX2gucHVzaChoLmNvbXBvbmVudERpZE1vdW50KTtlbHNle2lmKEMmJm51bGw9PUYuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiZiIT09diYmbnVsbCE9aC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZoLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYixNKSwhaC5fX2UmJihudWxsIT1oLnNob3VsZENvbXBvbmVudFVwZGF0ZSYmITE9PT1oLnNob3VsZENvbXBvbmVudFVwZGF0ZShiLGguX19zLE0pfHx1Ll9fdj09dC5fX3YpKXtmb3IodS5fX3YhPXQuX192JiYoaC5wcm9wcz1iLGguc3RhdGU9aC5fX3MsaC5fX2Q9ITEpLHUuX19lPXQuX19lLHUuX19rPXQuX19rLHUuX19rLnNvbWUoZnVuY3Rpb24obil7biYmKG4uX189dSl9KSxQPTA7UDxoLl9zYi5sZW5ndGg7UCsrKWguX19oLnB1c2goaC5fc2JbUF0pO2guX3NiPVtdLGguX19oLmxlbmd0aCYmZS5wdXNoKGgpO2JyZWFrIG59bnVsbCE9aC5jb21wb25lbnRXaWxsVXBkYXRlJiZoLmNvbXBvbmVudFdpbGxVcGRhdGUoYixoLl9fcyxNKSxDJiZudWxsIT1oLmNvbXBvbmVudERpZFVwZGF0ZSYmaC5fX2gucHVzaChmdW5jdGlvbigpe2guY29tcG9uZW50RGlkVXBkYXRlKHYseSxnKX0pfWlmKGguY29udGV4dD1NLGgucHJvcHM9YixoLl9fUD1uLGguX19lPSExLEk9bC5fX3IsQT0wLEMpe2ZvcihoLnN0YXRlPWguX19zLGguX19kPSExLEkmJkkodSksYT1oLnJlbmRlcihoLnByb3BzLGguc3RhdGUsaC5jb250ZXh0KSxIPTA7SDxoLl9zYi5sZW5ndGg7SCsrKWguX19oLnB1c2goaC5fc2JbSF0pO2guX3NiPVtdfWVsc2UgZG97aC5fX2Q9ITEsSSYmSSh1KSxhPWgucmVuZGVyKGgucHJvcHMsaC5zdGF0ZSxoLmNvbnRleHQpLGguc3RhdGU9aC5fX3N9d2hpbGUoaC5fX2QmJisrQTwyNSk7aC5zdGF0ZT1oLl9fcyxudWxsIT1oLmdldENoaWxkQ29udGV4dCYmKGk9dyh3KHt9LGkpLGguZ2V0Q2hpbGRDb250ZXh0KCkpKSxDJiYhcCYmbnVsbCE9aC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSYmKGc9aC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSh2LHkpKSxmPSQobixkKEw9bnVsbCE9YSYmYS50eXBlPT09ayYmbnVsbD09YS5rZXk/YS5wcm9wcy5jaGlsZHJlbjphKT9MOltMXSx1LHQsaSxyLG8sZSxmLGMscyksaC5iYXNlPXUuX19lLHUuX191Jj0tMTYxLGguX19oLmxlbmd0aCYmZS5wdXNoKGgpLG0mJihoLl9fRT1oLl9fPW51bGwpfWNhdGNoKG4pe2lmKHUuX192PW51bGwsY3x8bnVsbCE9bylpZihuLnRoZW4pe2Zvcih1Ll9fdXw9Yz8xNjA6MTI4O2YmJjg9PWYubm9kZVR5cGUmJmYubmV4dFNpYmxpbmc7KWY9Zi5uZXh0U2libGluZztvW28uaW5kZXhPZihmKV09bnVsbCx1Ll9fZT1mfWVsc2UgZm9yKFQ9by5sZW5ndGg7VC0tOylfKG9bVF0pO2Vsc2UgdS5fX2U9dC5fX2UsdS5fX2s9dC5fX2s7bC5fX2Uobix1LHQpfWVsc2UgbnVsbD09byYmdS5fX3Y9PXQuX192Pyh1Ll9faz10Ll9fayx1Ll9fZT10Ll9fZSk6Zj11Ll9fZT1OKHQuX19lLHUsdCxpLHIsbyxlLGMscyk7cmV0dXJuKGE9bC5kaWZmZWQpJiZhKHUpLDEyOCZ1Ll9fdT92b2lkIDA6Zn1mdW5jdGlvbiB6KG4sdSx0KXtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKylWKHRbaV0sdFsrK2ldLHRbKytpXSk7bC5fX2MmJmwuX19jKHUsbiksbi5zb21lKGZ1bmN0aW9uKHUpe3RyeXtuPXUuX19oLHUuX19oPVtdLG4uc29tZShmdW5jdGlvbihuKXtuLmNhbGwodSl9KX1jYXRjaChuKXtsLl9fZShuLHUuX192KX19KX1mdW5jdGlvbiBOKHUsdCxpLHIsbyxlLGYsYyxzKXt2YXIgYSxoLHYseSx3LGcsbSxiPWkucHJvcHMsaz10LnByb3BzLHg9dC50eXBlO2lmKFwic3ZnXCI9PXg/bz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI6XCJtYXRoXCI9PXg/bz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIjpvfHwobz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIiksbnVsbCE9ZSlmb3IoYT0wO2E8ZS5sZW5ndGg7YSsrKWlmKCh3PWVbYV0pJiZcInNldEF0dHJpYnV0ZVwiaW4gdz09ISF4JiYoeD93LmxvY2FsTmFtZT09eDozPT13Lm5vZGVUeXBlKSl7dT13LGVbYV09bnVsbDticmVha31pZihudWxsPT11KXtpZihudWxsPT14KXJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShrKTt1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvLHgsay5pcyYmayksYyYmKGwuX19tJiZsLl9fbSh0LGUpLGM9ITEpLGU9bnVsbH1pZihudWxsPT09eCliPT09a3x8YyYmdS5kYXRhPT09a3x8KHUuZGF0YT1rKTtlbHNle2lmKGU9ZSYmbi5jYWxsKHUuY2hpbGROb2RlcyksYj1pLnByb3BzfHxwLCFjJiZudWxsIT1lKWZvcihiPXt9LGE9MDthPHUuYXR0cmlidXRlcy5sZW5ndGg7YSsrKWJbKHc9dS5hdHRyaWJ1dGVzW2FdKS5uYW1lXT13LnZhbHVlO2ZvcihhIGluIGIpaWYodz1iW2FdLFwiY2hpbGRyZW5cIj09YSk7ZWxzZSBpZihcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PWEpdj13O2Vsc2UgaWYoIShhIGluIGspKXtpZihcInZhbHVlXCI9PWEmJlwiZGVmYXVsdFZhbHVlXCJpbiBrfHxcImNoZWNrZWRcIj09YSYmXCJkZWZhdWx0Q2hlY2tlZFwiaW4gayljb250aW51ZTtGKHUsYSxudWxsLHcsbyl9Zm9yKGEgaW4gayl3PWtbYV0sXCJjaGlsZHJlblwiPT1hP3k9dzpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PWE/aD13OlwidmFsdWVcIj09YT9nPXc6XCJjaGVja2VkXCI9PWE/bT13OmMmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHd8fGJbYV09PT13fHxGKHUsYSx3LGJbYV0sbyk7aWYoaCljfHx2JiYoaC5fX2h0bWw9PT12Ll9faHRtbHx8aC5fX2h0bWw9PT11LmlubmVySFRNTCl8fCh1LmlubmVySFRNTD1oLl9faHRtbCksdC5fX2s9W107ZWxzZSBpZih2JiYodS5pbm5lckhUTUw9XCJcIiksJCh1LGQoeSk/eTpbeV0sdCxpLHIsXCJmb3JlaWduT2JqZWN0XCI9PXg/XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI6byxlLGYsZT9lWzBdOmkuX19rJiZDKGksMCksYyxzKSxudWxsIT1lKWZvcihhPWUubGVuZ3RoO2EtLTspXyhlW2FdKTtjfHwoYT1cInZhbHVlXCIsXCJwcm9ncmVzc1wiPT14JiZudWxsPT1nP3UucmVtb3ZlQXR0cmlidXRlKFwidmFsdWVcIik6dm9pZCAwIT09ZyYmKGchPT11W2FdfHxcInByb2dyZXNzXCI9PXgmJiFnfHxcIm9wdGlvblwiPT14JiZnIT09YlthXSkmJkYodSxhLGcsYlthXSxvKSxhPVwiY2hlY2tlZFwiLHZvaWQgMCE9PW0mJm0hPT11W2FdJiZGKHUsYSxtLGJbYV0sbykpfXJldHVybiB1fWZ1bmN0aW9uIFYobix1LHQpe3RyeXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuKXt2YXIgaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBuLl9fdTtpJiZuLl9fdSgpLGkmJm51bGw9PXV8fChuLl9fdT1uKHUpKX1lbHNlIG4uY3VycmVudD11fWNhdGNoKG4pe2wuX19lKG4sdCl9fWZ1bmN0aW9uIHEobix1LHQpe3ZhciBpLHI7aWYobC51bm1vdW50JiZsLnVubW91bnQobiksKGk9bi5yZWYpJiYoaS5jdXJyZW50JiZpLmN1cnJlbnQhPT1uLl9fZXx8VihpLG51bGwsdSkpLG51bGwhPShpPW4uX19jKSl7aWYoaS5jb21wb25lbnRXaWxsVW5tb3VudCl0cnl7aS5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKG4pe2wuX19lKG4sdSl9aS5iYXNlPWkuX19QPW51bGx9aWYoaT1uLl9faylmb3Iocj0wO3I8aS5sZW5ndGg7cisrKWlbcl0mJnEoaVtyXSx1LHR8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4udHlwZSk7dHx8XyhuLl9fZSksbi5fX2M9bi5fXz1uLl9fZT12b2lkIDB9ZnVuY3Rpb24gQihuLGwsdSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3Iobix1KX1mdW5jdGlvbiBEKHUsdCxpKXt2YXIgcixvLGUsZjt0PT1kb2N1bWVudCYmKHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSxsLl9fJiZsLl9fKHUsdCksbz0ocj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBpKT9udWxsOmkmJmkuX19rfHx0Ll9fayxlPVtdLGY9W10saih0LHU9KCFyJiZpfHx0KS5fX2s9ZyhrLG51bGwsW3VdKSxvfHxwLHAsdC5uYW1lc3BhY2VVUkksIXImJmk/W2ldOm8/bnVsbDp0LmZpcnN0Q2hpbGQ/bi5jYWxsKHQuY2hpbGROb2Rlcyk6bnVsbCxlLCFyJiZpP2k6bz9vLl9fZTp0LmZpcnN0Q2hpbGQscixmKSx6KGUsdSxmKX1mdW5jdGlvbiBFKG4sbCl7RChuLGwsRSl9ZnVuY3Rpb24gRyhsLHUsdCl7dmFyIGkscixvLGUsZj13KHt9LGwucHJvcHMpO2ZvcihvIGluIGwudHlwZSYmbC50eXBlLmRlZmF1bHRQcm9wcyYmKGU9bC50eXBlLmRlZmF1bHRQcm9wcyksdSlcImtleVwiPT1vP2k9dVtvXTpcInJlZlwiPT1vP3I9dVtvXTpmW29dPXZvaWQgMD09PXVbb10mJnZvaWQgMCE9PWU/ZVtvXTp1W29dO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjImJihmLmNoaWxkcmVuPWFyZ3VtZW50cy5sZW5ndGg+Mz9uLmNhbGwoYXJndW1lbnRzLDIpOnQpLG0obC50eXBlLGYsaXx8bC5rZXkscnx8bC5yZWYsbnVsbCl9ZnVuY3Rpb24gSihuLGwpe3ZhciB1PXtfX2M6bD1cIl9fY0NcIitoKyssX186bixDb25zdW1lcjpmdW5jdGlvbihuLGwpe3JldHVybiBuLmNoaWxkcmVuKGwpfSxQcm92aWRlcjpmdW5jdGlvbihuKXt2YXIgdSx0O3JldHVybiB0aGlzLmdldENoaWxkQ29udGV4dHx8KHU9bmV3IFNldCwodD17fSlbbF09dGhpcyx0aGlzLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiB0fSx0aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dT1udWxsfSx0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihuKXt0aGlzLnByb3BzLnZhbHVlIT09bi52YWx1ZSYmdS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24uX19lPSEwLE0obil9KX0sdGhpcy5zdWI9ZnVuY3Rpb24obil7dS5hZGQobik7dmFyIGw9bi5jb21wb25lbnRXaWxsVW5tb3VudDtuLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dSYmdS5kZWxldGUobiksbCYmbC5jYWxsKG4pfX0pLG4uY2hpbGRyZW59fTtyZXR1cm4gdS5Qcm92aWRlci5fXz11LkNvbnN1bWVyLmNvbnRleHRUeXBlPXV9bj12LnNsaWNlLGw9e19fZTpmdW5jdGlvbihuLGwsdSx0KXtmb3IodmFyIGkscixvO2w9bC5fXzspaWYoKGk9bC5fX2MpJiYhaS5fXyl0cnl7aWYoKHI9aS5jb25zdHJ1Y3RvcikmJm51bGwhPXIuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yJiYoaS5zZXRTdGF0ZShyLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihuKSksbz1pLl9fZCksbnVsbCE9aS5jb21wb25lbnREaWRDYXRjaCYmKGkuY29tcG9uZW50RGlkQ2F0Y2gobix0fHx7fSksbz1pLl9fZCksbylyZXR1cm4gaS5fX0U9aX1jYXRjaChsKXtuPWx9dGhyb3cgbn19LHU9MCx0PWZ1bmN0aW9uKG4pe3JldHVybiBudWxsIT1uJiZudWxsPT1uLmNvbnN0cnVjdG9yfSx4LnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihuLGwpe3ZhciB1O3U9bnVsbCE9dGhpcy5fX3MmJnRoaXMuX19zIT09dGhpcy5zdGF0ZT90aGlzLl9fczp0aGlzLl9fcz13KHt9LHRoaXMuc3RhdGUpLFwiZnVuY3Rpb25cIj09dHlwZW9mIG4mJihuPW4odyh7fSx1KSx0aGlzLnByb3BzKSksbiYmdyh1LG4pLG51bGwhPW4mJnRoaXMuX192JiYobCYmdGhpcy5fc2IucHVzaChsKSxNKHRoaXMpKX0seC5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24obil7dGhpcy5fX3YmJih0aGlzLl9fZT0hMCxuJiZ0aGlzLl9faC5wdXNoKG4pLE0odGhpcykpfSx4LnByb3RvdHlwZS5yZW5kZXI9ayxpPVtdLG89XCJmdW5jdGlvblwiPT10eXBlb2YgUHJvbWlzZT9Qcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpOnNldFRpbWVvdXQsZT1mdW5jdGlvbihuLGwpe3JldHVybiBuLl9fdi5fX2ItbC5fX3YuX19ifSxQLl9fcj0wLGY9LyhQb2ludGVyQ2FwdHVyZSkkfENhcHR1cmUkL2ksYz0wLHM9TyghMSksYT1PKCEwKSxoPTA7ZXhwb3J0e3ggYXMgQ29tcG9uZW50LGsgYXMgRnJhZ21lbnQsRyBhcyBjbG9uZUVsZW1lbnQsSiBhcyBjcmVhdGVDb250ZXh0LGcgYXMgY3JlYXRlRWxlbWVudCxiIGFzIGNyZWF0ZVJlZixnIGFzIGgsRSBhcyBoeWRyYXRlLHQgYXMgaXNWYWxpZEVsZW1lbnQsbCBhcyBvcHRpb25zLEQgYXMgcmVuZGVyLEggYXMgdG9DaGlsZEFycmF5fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXByZWFjdC5tb2R1bGUuanMubWFwXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgdmFyIERlZmF1bHRDb250ZXh0ID0ge1xuICBjb2xvcjogdW5kZWZpbmVkLFxuICBzaXplOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBzdHlsZTogdW5kZWZpbmVkLFxuICBhdHRyOiB1bmRlZmluZWRcbn07XG5leHBvcnQgdmFyIEljb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChEZWZhdWx0Q29udGV4dCk7IiwidmFyIF9leGNsdWRlZCA9IFtcImF0dHJcIiwgXCJzaXplXCIsIFwidGl0bGVcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSB0eXBlb2YgaSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gdHlwZW9mIHQgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gdHlwZW9mIGkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgSWNvbkNvbnRleHQsIERlZmF1bHRDb250ZXh0IH0gZnJvbSBcIi4vaWNvbkNvbnRleHQubWpzXCI7XG5mdW5jdGlvbiBUcmVlMkVsZW1lbnQodHJlZSkge1xuICByZXR1cm4gdHJlZSAmJiB0cmVlLm1hcCgobm9kZSwgaSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQobm9kZS50YWcsIF9vYmplY3RTcHJlYWQoe1xuICAgIGtleTogaVxuICB9LCBub2RlLmF0dHIpLCBUcmVlMkVsZW1lbnQobm9kZS5jaGlsZCkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBHZW5JY29uKGRhdGEpIHtcbiAgcmV0dXJuIHByb3BzID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEljb25CYXNlLCBfZXh0ZW5kcyh7XG4gICAgYXR0cjogX29iamVjdFNwcmVhZCh7fSwgZGF0YS5hdHRyKVxuICB9LCBwcm9wcyksIFRyZWUyRWxlbWVudChkYXRhLmNoaWxkKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gSWNvbkJhc2UocHJvcHMpIHtcbiAgdmFyIGVsZW0gPSBjb25mID0+IHtcbiAgICB2YXIge1xuICAgICAgICBhdHRyLFxuICAgICAgICBzaXplLFxuICAgICAgICB0aXRsZVxuICAgICAgfSA9IHByb3BzLFxuICAgICAgc3ZnUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCk7XG4gICAgdmFyIGNvbXB1dGVkU2l6ZSA9IHNpemUgfHwgY29uZi5zaXplIHx8IFwiMWVtXCI7XG4gICAgdmFyIGNsYXNzTmFtZTtcbiAgICBpZiAoY29uZi5jbGFzc05hbWUpIGNsYXNzTmFtZSA9IGNvbmYuY2xhc3NOYW1lO1xuICAgIGlmIChwcm9wcy5jbGFzc05hbWUpIGNsYXNzTmFtZSA9IChjbGFzc05hbWUgPyBjbGFzc05hbWUgKyBcIiBcIiA6IFwiXCIpICsgcHJvcHMuY2xhc3NOYW1lO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICBmaWxsOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgc3Ryb2tlV2lkdGg6IFwiMFwiXG4gICAgfSwgY29uZi5hdHRyLCBhdHRyLCBzdmdQcm9wcywge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICBzdHlsZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgY29sb3I6IHByb3BzLmNvbG9yIHx8IGNvbmYuY29sb3JcbiAgICAgIH0sIGNvbmYuc3R5bGUpLCBwcm9wcy5zdHlsZSksXG4gICAgICBoZWlnaHQ6IGNvbXB1dGVkU2l6ZSxcbiAgICAgIHdpZHRoOiBjb21wdXRlZFNpemUsXG4gICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgfSksIHRpdGxlICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGl0bGVcIiwgbnVsbCwgdGl0bGUpLCBwcm9wcy5jaGlsZHJlbik7XG4gIH07XG4gIHJldHVybiBJY29uQ29udGV4dCAhPT0gdW5kZWZpbmVkID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkNvbnRleHQuQ29uc3VtZXIsIG51bGwsIGNvbmYgPT4gZWxlbShjb25mKSkgOiBlbGVtKERlZmF1bHRDb250ZXh0KTtcbn0iLCIvLyBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURURcbmltcG9ydCB7IEdlbkljb24gfSBmcm9tICcuLi9saWIvaW5kZXgubWpzJztcbmV4cG9ydCBmdW5jdGlvbiBIaUFjYWRlbWljQ2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4zOTQgMi4wOGExIDEgMCAwMC0uNzg4IDBsLTcgM2ExIDEgMCAwMDAgMS44NEw1LjI1IDguMDUxYS45OTkuOTk5IDAgMDEuMzU2LS4yNTdsNC0xLjcxNGExIDEgMCAxMS43ODggMS44MzhMNy42NjcgOS4wODhsMS45NC44MzFhMSAxIDAgMDAuNzg3IDBsNy0zYTEgMSAwIDAwMC0xLjgzOGwtNy0zek0zLjMxIDkuMzk3TDUgMTAuMTJ2NC4xMDJhOC45NjkgOC45NjkgMCAwMC0xLjA1LS4xNzQgMSAxIDAgMDEtLjg5LS44OSAxMS4xMTUgMTEuMTE1IDAgMDEuMjUtMy43NjJ6TTkuMyAxNi41NzNBOS4wMjYgOS4wMjYgMCAwMDcgMTQuOTM1di0zLjk1N2wxLjgxOC43OGEzIDMgMCAwMDIuMzY0IDBsNS41MDgtMi4zNjFhMTEuMDI2IDExLjAyNiAwIDAxLjI1IDMuNzYyIDEgMSAwIDAxLS44OS44OSA4Ljk2OCA4Ljk2OCAwIDAwLTUuMzUgMi41MjQgMSAxIDAgMDEtMS40IDB6TTYgMThhMSAxIDAgMDAxLTF2LTIuMDY1YTguOTM1IDguOTM1IDAgMDAtMi0uNzEyVjE3YTEgMSAwIDAwMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBZGp1c3RtZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0YTEgMSAwIDAwLTIgMHY3LjI2OGEyIDIgMCAwMDAgMy40NjRWMTZhMSAxIDAgMTAyIDB2LTEuMjY4YTIgMiAwIDAwMC0zLjQ2NFY0ek0xMSA0YTEgMSAwIDEwLTIgMHYxLjI2OGEyIDIgMCAwMDAgMy40NjRWMTZhMSAxIDAgMTAyIDBWOC43MzJhMiAyIDAgMDAwLTMuNDY0VjR6TTE2IDNhMSAxIDAgMDExIDF2Ny4yNjhhMiAyIDAgMDEwIDMuNDY0VjE2YTEgMSAwIDExLTIgMHYtMS4yNjhhMiAyIDAgMDEwLTMuNDY0VjRhMSAxIDAgMDExLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFubm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xOCAxM1Y1YTIgMiAwIDAwLTItMkg0YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyaDNsMyAzIDMtM2gzYTIgMiAwIDAwMi0yek01IDdhMSAxIDAgMDExLTFoOGExIDEgMCAxMTAgMkg2YTEgMSAwIDAxLTEtMXptMSAzYTEgMSAwIDEwMCAyaDNhMSAxIDAgMTAwLTJINnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgM2EyIDIgMCAxMDAgNGgxMmEyIDIgMCAxMDAtNEg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA4aDE0djdhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjh6bTUgM2ExIDEgMCAwMTEtMWgyYTEgMSAwIDExMCAySDlhMSAxIDAgMDEtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xMWExIDEgMCAxMC0yIDB2My41ODZMNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQgMGwzLTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTEgMTAuNTg2Vjd6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd0NpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0uNzA3LTEwLjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNGwtMyAzYTEgMSAwIDAwMCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNC0xLjQxNEw5LjQxNCAxMUgxM2ExIDEgMCAxMDAtMkg5LjQxNGwxLjI5My0xLjI5M3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93Q2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjcwNy04LjcwN2wtMy0zYTEgMSAwIDAwLTEuNDE0IDEuNDE0TDEwLjU4NiA5SDdhMSAxIDAgMTAwIDJoMy41ODZsLTEuMjkzIDEuMjkzYTEgMSAwIDEwMS40MTQgMS40MTRsMy0zYTEgMSAwIDAwMC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93Q2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjcwNy04LjcwN2wtMy0zYTEgMSAwIDAwLTEuNDE0IDBsLTMgM2ExIDEgMCAwMDEuNDE0IDEuNDE0TDkgOS40MTRWMTNhMSAxIDAgMTAyIDBWOS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2LjcwNyAxMC4yOTNhMSAxIDAgMDEwIDEuNDE0bC02IDZhMSAxIDAgMDEtMS40MTQgMGwtNi02YTEgMSAwIDExMS40MTQtMS40MTRMOSAxNC41ODZWM2ExIDEgMCAwMTIgMHYxMS41ODZsNC4yOTMtNC4yOTNhMSAxIDAgMDExLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS43MDcgMTYuNzA3YTEgMSAwIDAxLTEuNDE0IDBsLTYtNmExIDEgMCAwMTAtMS40MTRsNi02YTEgMSAwIDAxMS40MTQgMS40MTRMNS40MTQgOUgxN2ExIDEgMCAxMTAgMkg1LjQxNGw0LjI5MyA0LjI5M2ExIDEgMCAwMTAgMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd05hcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNC43MDcgMTIuMjkzYTEgMSAwIDAxMCAxLjQxNGwtNCA0YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAxMTEuNDE0LTEuNDE0TDkgMTQuNTg2VjNhMSAxIDAgMDEyIDB2MTEuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93TmFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcuNzA3IDE0LjcwN2ExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDEuNDE0TDUuNDE0IDlIMTdhMSAxIDAgMTEwIDJINS40MTRsMi4yOTMgMi4yOTNhMSAxIDAgMDEwIDEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dOYXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyLjI5MyA1LjI5M2ExIDEgMCAwMTEuNDE0IDBsNCA0YTEgMSAwIDAxMCAxLjQxNGwtNCA0YTEgMSAwIDAxLTEuNDE0LTEuNDE0TDE0LjU4NiAxMUgzYTEgMSAwIDExMC0yaDExLjU4NmwtMi4yOTMtMi4yOTNhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dOYXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuMjkzIDcuNzA3YTEgMSAwIDAxMC0xLjQxNGw0LTRhMSAxIDAgMDExLjQxNCAwbDQgNGExIDEgMCAwMS0xLjQxNCAxLjQxNEwxMSA1LjQxNFYxN2ExIDEgMCAxMS0yIDBWNS40MTRMNi43MDcgNy43MDdhMSAxIDAgMDEtMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC4yOTMgMy4yOTNhMSAxIDAgMDExLjQxNCAwbDYgNmExIDEgMCAwMTAgMS40MTRsLTYgNmExIDEgMCAwMS0xLjQxNC0xLjQxNEwxNC41ODYgMTFIM2ExIDEgMCAxMTAtMmgxMS41ODZsLTQuMjkzLTQuMjkzYTEgMSAwIDAxMC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93U21Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQuNzA3IDEwLjI5M2ExIDEgMCAwMTAgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMTExLjQxNC0xLjQxNEw5IDEyLjU4NlY1YTEgMSAwIDAxMiAwdjcuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93U21MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS43MDcgMTQuNzA3YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTAtMS40MTRsNC00YTEgMSAwIDAxMS40MTQgMS40MTRMNy40MTQgOUgxNWExIDEgMCAxMTAgMkg3LjQxNGwyLjI5MyAyLjI5M2ExIDEgMCAwMTAgMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd1NtUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC4yOTMgNS4yOTNhMSAxIDAgMDExLjQxNCAwbDQgNGExIDEgMCAwMTAgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNC0xLjQxNEwxMi41ODYgMTFINWExIDEgMCAxMTAtMmg3LjU4NmwtMi4yOTMtMi4yOTNhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dTbVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNS4yOTMgOS43MDdhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDBsNCA0YTEgMSAwIDAxLTEuNDE0IDEuNDE0TDExIDcuNDE0VjE1YTEgMSAwIDExLTIgMFY3LjQxNEw2LjcwNyA5LjcwN2ExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuMjkzIDkuNzA3YTEgMSAwIDAxMC0xLjQxNGw2LTZhMSAxIDAgMDExLjQxNCAwbDYgNmExIDEgMCAwMS0xLjQxNCAxLjQxNEwxMSA1LjQxNFYxN2ExIDEgMCAxMS0yIDBWNS40MTRMNC43MDcgOS43MDdhMSAxIDAgMDEtMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93c0V4cGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgNGExIDEgMCAwMTEtMWg0YTEgMSAwIDAxMCAySDYuNDE0bDIuMjkzIDIuMjkzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDUgNi40MTRWOGExIDEgMCAwMS0yIDBWNHptOSAxYTEgMSAwIDExMC0yaDRhMSAxIDAgMDExIDF2NGExIDEgMCAxMS0yIDBWNi40MTRsLTIuMjkzIDIuMjkzYTEgMSAwIDExLTEuNDE0LTEuNDE0TDEzLjU4NiA1SDEyem0tOSA3YTEgMSAwIDExMiAwdjEuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMS40MTRMNi40MTQgMTVIOGExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXYtNHptMTMtMWExIDEgMCAwMTEgMXY0YTEgMSAwIDAxLTEgMWgtNGExIDEgMCAxMTAtMmgxLjU4NmwtMi4yOTMtMi4yOTNhMSAxIDAgMDExLjQxNC0xLjQxNEwxNSAxMy41ODZWMTJhMSAxIDAgMDExLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBdFN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE0LjI0MyA1Ljc1N2E2IDYgMCAxMC0uOTg2IDkuMjg0IDEgMSAwIDExMS4wODcgMS42NzhBOCA4IDAgMTExOCAxMGEzIDMgMCAwMS00LjggMi40MDFBNCA0IDAgMTExNCAxMGExIDEgMCAxMDIgMGMwLTEuNTM3LS41ODYtMy4wNy0xLjc1Ny00LjI0M3pNMTIgMTBhMiAyIDAgMTAtNCAwIDIgMiAwIDAwNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi43MDcgNC44NzlBMyAzIDAgMDE4LjgyOCA0SDE1YTMgMyAwIDAxMyAzdjZhMyAzIDAgMDEtMyAzSDguODI4YTMgMyAwIDAxLTIuMTItLjg3OWwtNC40MTUtNC40MTRhMSAxIDAgMDEwLTEuNDE0bDQuNDE0LTQuNDE0em00IDIuNDE0YTEgMSAwIDAwLTEuNDE0IDEuNDE0TDEwLjU4NiAxMGwtMS4yOTMgMS4yOTNhMSAxIDAgMTAxLjQxNCAxLjQxNEwxMiAxMS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNEwxMy40MTQgMTBsMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTIgOC41ODZsLTEuMjkzLTEuMjkzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQmFkZ2VDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuMjY3IDMuNDU1YTMuMDY2IDMuMDY2IDAgMDAxLjc0NS0uNzIzIDMuMDY2IDMuMDY2IDAgMDEzLjk3NiAwIDMuMDY2IDMuMDY2IDAgMDAxLjc0NS43MjMgMy4wNjYgMy4wNjYgMCAwMTIuODEyIDIuODEyYy4wNTEuNjQzLjMwNCAxLjI1NC43MjMgMS43NDVhMy4wNjYgMy4wNjYgMCAwMTAgMy45NzYgMy4wNjYgMy4wNjYgMCAwMC0uNzIzIDEuNzQ1IDMuMDY2IDMuMDY2IDAgMDEtMi44MTIgMi44MTIgMy4wNjYgMy4wNjYgMCAwMC0xLjc0NS43MjMgMy4wNjYgMy4wNjYgMCAwMS0zLjk3NiAwIDMuMDY2IDMuMDY2IDAgMDAtMS43NDUtLjcyMyAzLjA2NiAzLjA2NiAwIDAxLTIuODEyLTIuODEyIDMuMDY2IDMuMDY2IDAgMDAtLjcyMy0xLjc0NSAzLjA2NiAzLjA2NiAwIDAxMC0zLjk3NiAzLjA2NiAzLjA2NiAwIDAwLjcyMy0xLjc0NSAzLjA2NiAzLjA2NiAwIDAxMi44MTItMi44MTJ6bTcuNDQgNS4yNTJhMSAxIDAgMDAtMS40MTQtMS40MTRMOSAxMC41ODYgNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMy40NzcgMTQuODlBNiA2IDAgMDE1LjExIDYuNTI0bDguMzY3IDguMzY4em0xLjQxNC0xLjQxNEw2LjUyNCA1LjExYTYgNiAwIDAxOC4zNjcgOC4zNjd6TTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQmVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNyAyYTEgMSAwIDAwLS43MDcgMS43MDdMNyA0LjQxNHYzLjc1OGExIDEgMCAwMS0uMjkzLjcwN2wtNCA0Qy44MTcgMTQuNzY5IDIuMTU2IDE4IDQuODI4IDE4aDEwLjM0M2MyLjY3MyAwIDQuMDEyLTMuMjMxIDIuMTIyLTUuMTIxbC00LTRBMSAxIDAgMDExMyA4LjE3MlY0LjQxNGwuNzA3LS43MDdBMSAxIDAgMDAxMyAySDd6bTIgNi4xNzJWNGgydjQuMTcyYTMgMyAwIDAwLjg3OSAyLjEybDEuMDI3IDEuMDI4YTQgNCAwIDAwLTIuMTcxLjEwMmwtLjQ3LjE1NmE0IDQgMCAwMS0yLjUzIDBsLS41NjMtLjE4N2ExLjk5MyAxLjk5MyAwIDAwLS4xMTQtLjAzNWwxLjA2My0xLjA2M0EzIDMgMCAwMDkgOC4xNzJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyYTYgNiAwIDAwLTYgNnYzLjU4NmwtLjcwNy43MDdBMSAxIDAgMDA0IDE0aDEyYTEgMSAwIDAwLjcwNy0xLjcwN0wxNiAxMS41ODZWOGE2IDYgMCAwMC02LTZ6TTEwIDE4YTMgMyAwIDAxLTMtM2g2YTMgMyAwIDAxLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQm9va09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNC44MDRBNy45NjggNy45NjggMCAwMDUuNSA0Yy0xLjI1NSAwLTIuNDQzLjI5LTMuNS44MDR2MTBBNy45NjkgNy45NjkgMCAwMTUuNSAxNGMxLjY2OSAwIDMuMjE4LjUxIDQuNSAxLjM4NUE3Ljk2MiA3Ljk2MiAwIDAxMTQuNSAxNGMxLjI1NSAwIDIuNDQzLjI5IDMuNS44MDR2LTEwQTcuOTY4IDcuOTY4IDAgMDAxNC41IDRjLTEuMjU1IDAtMi40NDMuMjktMy41LjgwNFYxMmExIDEgMCAxMS0yIDBWNC44MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUJvb2ttYXJrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA1YTIgMiAwIDAxMi0yaDEwYTIgMiAwIDAxMiAydjEwYTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMlY1em0xMSAxSDZ2OGw0LTIgNCAyVjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0YTIgMiAwIDAxMi0yaDZhMiAyIDAgMDEyIDJ2MTRsLTUtMi41TDUgMThWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQnJpZWZjYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiA2VjVhMyAzIDAgMDEzLTNoMmEzIDMgMCAwMTMgM3YxaDJhMiAyIDAgMDEyIDJ2My41N0EyMi45NTIgMjIuOTUyIDAgMDExMCAxM2EyMi45NSAyMi45NSAwIDAxLTgtMS40M1Y4YTIgMiAwIDAxMi0yaDJ6bTItMWExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjFIOFY1em0xIDVhMSAxIDAgMDExLTFoLjAxYTEgMSAwIDExMCAySDEwYTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTMuNjkyVjE2YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0ydi0yLjMwOEEyNC45NzQgMjQuOTc0IDAgMDExMCAxNWMtMi43OTYgMC01LjQ4Ny0uNDYtOC0xLjMwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2FrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgM2ExIDEgMCAwMTEtMWguMDFhMSAxIDAgMDEwIDJIN2ExIDEgMCAwMS0xLTF6bTIgM2ExIDEgMCAwMC0yIDB2MWEyIDIgMCAwMC0yIDJ2MWEyIDIgMCAwMC0yIDJ2LjY4M2EzLjcgMy43IDAgMDExLjA1NS40ODUgMS43MDQgMS43MDQgMCAwMDEuODkgMCAzLjcwNCAzLjcwNCAwIDAxNC4xMSAwIDEuNzA0IDEuNzA0IDAgMDAxLjg5IDAgMy43MDQgMy43MDQgMCAwMTQuMTEgMCAxLjcwNCAxLjcwNCAwIDAwMS44OSAwQTMuNyAzLjcgMCAwMTE4IDEyLjY4M1YxMmEyIDIgMCAwMC0yLTJWOWEyIDIgMCAwMC0yLTJWNmExIDEgMCAxMC0yIDB2MWgtMVY2YTEgMSAwIDEwLTIgMHYxSDhWNnptMTAgOC44NjhhMy43MDQgMy43MDQgMCAwMS00LjA1NS0uMDM2IDEuNzA0IDEuNzA0IDAgMDAtMS44OSAwIDMuNzA0IDMuNzA0IDAgMDEtNC4xMSAwIDEuNzA0IDEuNzA0IDAgMDAtMS44OSAwQTMuNzA0IDMuNzA0IDAgMDEyIDE0Ljg2OFYxN2ExIDEgMCAwMDEgMWgxNGExIDEgMCAwMDEtMXYtMi4xMzJ6TTkgM2ExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIMTBhMSAxIDAgMDEtMS0xem0zIDBhMSAxIDAgMDExLTFoLjAxYTEgMSAwIDExMCAySDEzYTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNhbGN1bGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNGEyIDIgMCAwMC0yLTJINnptMSAyYTEgMSAwIDAwMCAyaDZhMSAxIDAgMTAwLTJIN3ptNiA3YTEgMSAwIDAxMSAxdjNhMSAxIDAgMTEtMiAwdi0zYTEgMSAwIDAxMS0xem0tMyAzYTEgMSAwIDEwMCAyaC4wMWExIDEgMCAxMDAtMkgxMHptLTQgMWExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIN2ExIDEgMCAwMS0xLTF6bTEtNGExIDEgMCAxMDAgMmguMDFhMSAxIDAgMTAwLTJIN3ptMiAxYTEgMSAwIDAxMS0xaC4wMWExIDEgMCAxMTAgMkgxMGExIDEgMCAwMS0xLTF6bTQtNGExIDEgMCAxMDAgMmguMDFhMSAxIDAgMTAwLTJIMTN6TTkgOWExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIMTBhMSAxIDAgMDEtMS0xek03IDhhMSAxIDAgMDAwIDJoLjAxYTEgMSAwIDAwMC0ySDd6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmExIDEgMCAwMC0xIDF2MUg0YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmgxMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMmgtMVYzYTEgMSAwIDEwLTIgMHYxSDdWM2ExIDEgMCAwMC0xLTF6bTAgNWExIDEgMCAwMDAgMmg4YTEgMSAwIDEwMC0ySDZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDVhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTEuNTg2YTEgMSAwIDAxLS43MDctLjI5M2wtMS4xMjEtMS4xMjFBMiAyIDAgMDAxMS4xNzIgM0g4LjgyOGEyIDIgMCAwMC0xLjQxNC41ODZMNi4yOTMgNC43MDdBMSAxIDAgMDE1LjU4NiA1SDR6bTYgOWEzIDMgMCAxMDAtNiAzIDMgMCAwMDAgNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDRhMiAyIDAgMDAtMiAydjRhMiAyIDAgMDAyIDJWNmgxMGEyIDIgMCAwMC0yLTJINHptMiA2YTIgMiAwIDAxMi0yaDhhMiAyIDAgMDEyIDJ2NGEyIDIgMCAwMS0yIDJIOGEyIDIgMCAwMS0yLTJ2LTR6bTYgNGEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoYXJ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDExYTEgMSAwIDAxMS0xaDJhMSAxIDAgMDExIDF2NWExIDEgMCAwMS0xIDFIM2ExIDEgMCAwMS0xLTF2LTV6TTggN2ExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjlhMSAxIDAgMDEtMSAxSDlhMSAxIDAgMDEtMS0xVjd6TTE0IDRhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXYxMmExIDEgMCAwMS0xIDFoLTJhMSAxIDAgMDEtMS0xVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoYXJ0UGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEwYTggOCAwIDAxOC04djhoOGE4IDggMCAxMS0xNiAwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyLjI1MkE4LjAxNCA4LjAxNCAwIDAxMTcuNzQ4IDhIMTJWMi4yNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoYXJ0U3F1YXJlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSAzYTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMkg1em05IDRhMSAxIDAgMTAtMiAwdjZhMSAxIDAgMTAyIDBWN3ptLTMgMmExIDEgMCAxMC0yIDB2NGExIDEgMCAxMDIgMFY5em0tMyAzYTEgMSAwIDEwLTIgMHYxYTEgMSAwIDEwMiAwdi0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hhdEFsdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNWEyIDIgMCAwMTItMmg3YTIgMiAwIDAxMiAydjRhMiAyIDAgMDEtMiAySDlsLTMgM3YtM0g0YTIgMiAwIDAxLTItMlY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3djJhNCA0IDAgMDEtNCA0SDkuODI4bC0xLjc2NiAxLjc2N2MuMjguMTQ5LjU5OS4yMzMuOTM4LjIzM2gybDMgM3YtM2gyYTIgMiAwIDAwMi0yVjlhMiAyIDAgMDAtMi0yaC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGF0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggNXY4YTIgMiAwIDAxLTIgMmgtNWwtNSA0di00SDRhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoMTJhMiAyIDAgMDEyIDJ6TTcgOEg1djJoMlY4em0yIDBoMnYySDlWOHptNiAwaC0ydjJoMlY4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYzAgMy44NjYtMy41ODIgNy04IDdhOC44NDEgOC44NDEgMCAwMS00LjA4My0uOThMMiAxN2wxLjMzOC0zLjEyM0MyLjQ5MyAxMi43NjcgMiAxMS40MzQgMiAxMGMwLTMuODY2IDMuNTgyLTcgOC03czggMy4xMzQgOCA3ek03IDlINXYyaDJWOXptOCAwaC0ydjJoMlY5ek05IDloMnYySDlWOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoZWNrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMy43MDctOS4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMOSAxMC41ODYgNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2LjcwNyA1LjI5M2ExIDEgMCAwMTAgMS40MTRsLTggOGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDExLjQxNC0xLjQxNEw4IDEyLjU4Nmw3LjI5My03LjI5M2ExIDEgMCAwMTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uRG91YmxlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE1LjcwNyA0LjI5M2ExIDEgMCAwMTAgMS40MTRsLTUgNWExIDEgMCAwMS0xLjQxNCAwbC01LTVhMSAxIDAgMDExLjQxNC0xLjQxNEwxMCA4LjU4Nmw0LjI5My00LjI5M2ExIDEgMCAwMTEuNDE0IDB6bTAgNmExIDEgMCAwMTAgMS40MTRsLTUgNWExIDEgMCAwMS0xLjQxNCAwbC01LTVhMSAxIDAgMTExLjQxNC0xLjQxNEwxMCAxNC41ODZsNC4yOTMtNC4yOTNhMSAxIDAgMDExLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvbkRvdWJsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNS43MDcgMTUuNzA3YTEgMSAwIDAxLTEuNDE0IDBsLTUtNWExIDEgMCAwMTAtMS40MTRsNS01YTEgMSAwIDExMS40MTQgMS40MTRMMTEuNDE0IDEwbDQuMjkzIDQuMjkzYTEgMSAwIDAxMCAxLjQxNHptLTYgMGExIDEgMCAwMS0xLjQxNCAwbC01LTVhMSAxIDAgMDEwLTEuNDE0bDUtNWExIDEgMCAwMTEuNDE0IDEuNDE0TDUuNDE0IDEwbDQuMjkzIDQuMjkzYTEgMSAwIDAxMCAxLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoZXZyb25Eb3VibGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjI5MyAxNS43MDdhMSAxIDAgMDEwLTEuNDE0TDE0LjU4NiAxMGwtNC4yOTMtNC4yOTNhMSAxIDAgMTExLjQxNC0xLjQxNGw1IDVhMSAxIDAgMDEwIDEuNDE0bC01IDVhMSAxIDAgMDEtMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjI5MyAxNS43MDdhMSAxIDAgMDEwLTEuNDE0TDguNTg2IDEwIDQuMjkzIDUuNzA3YTEgMSAwIDAxMS40MTQtMS40MTRsNSA1YTEgMSAwIDAxMCAxLjQxNGwtNSA1YTEgMSAwIDAxLTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uRG91YmxlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjI5MyAxNS43MDdhMSAxIDAgMDEwLTEuNDE0bDUtNWExIDEgMCAwMTEuNDE0IDBsNSA1YTEgMSAwIDAxLTEuNDE0IDEuNDE0TDEwIDExLjQxNGwtNC4yOTMgNC4yOTNhMSAxIDAgMDEtMS40MTQgMHptMC02YTEgMSAwIDAxMC0xLjQxNGw1LTVhMSAxIDAgMDExLjQxNCAwbDUgNWExIDEgMCAwMS0xLjQxNCAxLjQxNEwxMCA1LjQxNCA1LjcwNyA5LjcwN2ExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjI5MyA3LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTAgMTAuNTg2bDMuMjkzLTMuMjkzYTEgMSAwIDExMS40MTQgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi43MDcgNS4yOTNhMSAxIDAgMDEwIDEuNDE0TDkuNDE0IDEwbDMuMjkzIDMuMjkzYTEgMSAwIDAxLTEuNDE0IDEuNDE0bC00LTRhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjI5MyAxNC43MDdhMSAxIDAgMDEwLTEuNDE0TDEwLjU4NiAxMCA3LjI5MyA2LjcwN2ExIDEgMCAwMTEuNDE0LTEuNDE0bDQgNGExIDEgMCAwMTAgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQuNzA3IDEyLjcwN2ExIDEgMCAwMS0xLjQxNCAwTDEwIDkuNDE0bC0zLjI5MyAzLjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNGw0LTRhMSAxIDAgMDExLjQxNCAwbDQgNGExIDEgMCAwMTAgMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3SDd2Nmg2Vjd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03IDJhMSAxIDAgMDEyIDB2MWgyVjJhMSAxIDAgMTEyIDB2MWgyYTIgMiAwIDAxMiAydjJoMWExIDEgMCAxMTAgMmgtMXYyaDFhMSAxIDAgMTEwIDJoLTF2MmEyIDIgMCAwMS0yIDJoLTJ2MWExIDEgMCAxMS0yIDB2LTFIOXYxYTEgMSAwIDExLTIgMHYtMUg1YTIgMiAwIDAxLTItMnYtMkgyYTEgMSAwIDExMC0yaDFWOUgyYTEgMSAwIDAxMC0yaDFWNWEyIDIgMCAwMTItMmgyVjJ6TTUgNWgxMHYxMEg1VjV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDbGlwYm9hcmRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyYTEgMSAwIDAwMCAyaDJhMSAxIDAgMTAwLTJIOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNWEyIDIgMCAwMTItMiAzIDMgMCAwMDMgM2gyYTMgMyAwIDAwMy0zIDIgMiAwIDAxMiAydjExYTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMlY1em05LjcwNyA1LjcwN2ExIDEgMCAwMC0xLjQxNC0xLjQxNEw5IDEyLjU4NmwtMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDbGlwYm9hcmRDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDJhMSAxIDAgMDAwIDJoMmExIDEgMCAxMDAtMkg4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVhMiAyIDAgMDEyLTIgMyAzIDAgMDAzIDNoMmEzIDMgMCAwMDMtMyAyIDIgMCAwMTIgMnY2aC00LjU4NmwxLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNGwtMyAzYTEgMSAwIDAwMCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNC0xLjQxNEwxMC40MTQgMTNIMTV2M2EyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWNXpNMTUgMTFoMmExIDEgMCAxMTAgMmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2xpcGJvYXJkTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyYTEgMSAwIDAwMCAyaDJhMSAxIDAgMTAwLTJIOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNWEyIDIgMCAwMTItMiAzIDMgMCAwMDMgM2gyYTMgMyAwIDAwMy0zIDIgMiAwIDAxMiAydjExYTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMlY1em0zIDRhMSAxIDAgMDAwIDJoLjAxYTEgMSAwIDEwMC0ySDd6bTMgMGExIDEgMCAwMDAgMmgzYTEgMSAwIDEwMC0yaC0zem0tMyA0YTEgMSAwIDEwMCAyaC4wMWExIDEgMCAxMDAtMkg3em0zIDBhMSAxIDAgMTAwIDJoM2ExIDEgMCAxMDAtMmgtM3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAzYTEgMSAwIDAxMS0xaDJhMSAxIDAgMTEwIDJIOWExIDEgMCAwMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM2EyIDIgMCAwMC0yIDJ2MTFhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMiAzIDMgMCAwMS0zIDNIOWEzIDMgMCAwMS0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xMmExIDEgMCAxMC0yIDB2NGExIDEgMCAwMC4yOTMuNzA3bDIuODI4IDIuODI5YTEgMSAwIDEwMS40MTUtMS40MTVMMTEgOS41ODZWNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb3VkRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDkuNUEzLjUgMy41IDAgMDA1LjUgMTNIOXYyLjU4NmwtMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQgMGwzLTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTEgMTUuNTg2VjEzaDIuNWE0LjUgNC41IDAgMTAtLjYxNi04Ljk1OCA0LjAwMiA0LjAwMiAwIDEwLTcuNzUzIDEuOTc3QTMuNSAzLjUgMCAwMDIgOS41em05IDMuNUg5VjhhMSAxIDAgMDEyIDB2NXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb3VkVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTNhMy41IDMuNSAwIDAxLS4zNjktNi45OCA0IDQgMCAxMTcuNzUzLTEuOTc3QTQuNSA0LjUgMCAxMTEzLjUgMTNIMTFWOS40MTNsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNGwtMy0zYTEgMSAwIDAwLTEuNDE0IDBsLTMgM2ExIDEgMCAwMDEuNDE0IDEuNDE0TDkgOS40MTRWMTNINS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEzaDJ2NWExIDEgMCAxMS0yIDB2LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTZhMy41IDMuNSAwIDAxLS4zNjktNi45OCA0IDQgMCAxMTcuNzUzLTEuOTc3QTQuNSA0LjUgMCAxMTEzLjUgMTZoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi4zMTYgMy4wNTFhMSAxIDAgMDEuNjMzIDEuMjY1bC00IDEyYTEgMSAwIDExLTEuODk4LS42MzJsNC0xMmExIDEgMCAwMTEuMjY1LS42MzN6TTUuNzA3IDYuMjkzYTEgMSAwIDAxMCAxLjQxNEwzLjQxNCAxMGwyLjI5MyAyLjI5M2ExIDEgMCAxMS0xLjQxNCAxLjQxNGwtMy0zYTEgMSAwIDAxMC0xLjQxNGwzLTNhMSAxIDAgMDExLjQxNCAwem04LjU4NiAwYTEgMSAwIDAxMS40MTQgMGwzIDNhMSAxIDAgMDEwIDEuNDE0bC0zIDNhMSAxIDAgMTEtMS40MTQtMS40MTRMMTYuNTg2IDEwbC0yLjI5My0yLjI5M2ExIDEgMCAwMTAtMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMS40OSAzLjE3Yy0uMzgtMS41Ni0yLjYtMS41Ni0yLjk4IDBhMS41MzIgMS41MzIgMCAwMS0yLjI4Ni45NDhjLTEuMzcyLS44MzYtMi45NDIuNzM0LTIuMTA2IDIuMTA2LjU0Ljg4Ni4wNjEgMi4wNDItLjk0NyAyLjI4Ny0xLjU2MS4zNzktMS41NjEgMi42IDAgMi45NzhhMS41MzIgMS41MzIgMCAwMS45NDcgMi4yODdjLS44MzYgMS4zNzIuNzM0IDIuOTQyIDIuMTA2IDIuMTA2YTEuNTMyIDEuNTMyIDAgMDEyLjI4Ny45NDdjLjM3OSAxLjU2MSAyLjYgMS41NjEgMi45NzggMGExLjUzMyAxLjUzMyAwIDAxMi4yODctLjk0N2MxLjM3Mi44MzYgMi45NDItLjczNCAyLjEwNi0yLjEwNmExLjUzMyAxLjUzMyAwIDAxLjk0Ny0yLjI4N2MxLjU2MS0uMzc5IDEuNTYxLTIuNiAwLTIuOTc4YTEuNTMyIDEuNTMyIDAgMDEtLjk0Ny0yLjI4N2MuODM2LTEuMzcyLS43MzQtMi45NDItMi4xMDYtMi4xMDZhMS41MzIgMS41MzIgMCAwMS0yLjI4Ny0uOTQ3ek0xMCAxM2EzIDMgMCAxMDAtNiAzIDMgMCAwMDAgNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNvbGxlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgM2ExIDEgMCAwMDAgMmg2YTEgMSAwIDEwMC0ySDd6TTQgN2ExIDEgMCAwMTEtMWgxMGExIDEgMCAxMTAgMkg1YTEgMSAwIDAxLTEtMXpNMiAxMWEyIDIgMCAwMTItMmgxMmEyIDIgMCAwMTIgMnY0YTIgMiAwIDAxLTIgMkg0YTIgMiAwIDAxLTItMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ29sb3JTd2F0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDJhMiAyIDAgMDAtMiAydjExYTMgMyAwIDEwNiAwVjRhMiAyIDAgMDAtMi0ySDR6bTEgMTRhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6bTUtMS43NTdsNC45LTQuOWEyIDIgMCAwMDAtMi44MjhMMTMuNDg1IDUuMWEyIDIgMCAwMC0yLjgyOCAwTDEwIDUuNzU3djguNDg2ek0xNiAxOEg5LjA3MWw2LTZIMTZhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRhMiAyIDAgMDAtMiAydjFoMTZWNmEyIDIgMCAwMC0yLTJINHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDlIMnY1YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjl6TTQgMTNhMSAxIDAgMDExLTFoMWExIDEgMCAxMTAgMkg1YTEgMSAwIDAxLTEtMXptNS0xYTEgMSAwIDEwMCAyaDFhMSAxIDAgMTAwLTJIOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUN1YmVUcmFuc3BhcmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkuNTA0IDEuMTMyYTEgMSAwIDAxLjk5MiAwbDEuNzUgMWExIDEgMCAxMS0uOTkyIDEuNzM2TDEwIDMuMTUybC0xLjI1NC43MTZhMSAxIDAgMTEtLjk5Mi0xLjczNmwxLjc1LTF6TTUuNjE4IDQuNTA0YTEgMSAwIDAxLS4zNzIgMS4zNjRMNS4wMTYgNmwuMjMuMTMyYTEgMSAwIDExLS45OTIgMS43MzZMNCA3LjcyM1Y4YTEgMSAwIDAxLTIgMFY2YS45OTYuOTk2IDAgMDEuNTItLjg3OGwxLjczNC0uOTlhMSAxIDAgMDExLjM2NC4zNzJ6bTguNzY0IDBhMSAxIDAgMDExLjM2NC0uMzcybDEuNzMzLjk5QTEuMDAyIDEuMDAyIDAgMDExOCA2djJhMSAxIDAgMTEtMiAwdi0uMjc3bC0uMjU0LjE0NWExIDEgMCAxMS0uOTkyLTEuNzM2bC4yMy0uMTMyLS4yMy0uMTMyYTEgMSAwIDAxLS4zNzItMS4zNjR6bS03IDRhMSAxIDAgMDExLjM2NC0uMzcyTDEwIDguODQ4bDEuMjU0LS43MTZhMSAxIDAgMTEuOTkyIDEuNzM2TDExIDEwLjU4VjEyYTEgMSAwIDExLTIgMHYtMS40MmwtMS4yNDYtLjcxMmExIDEgMCAwMS0uMzcyLTEuMzY0ek0zIDExYTEgMSAwIDAxMSAxdjEuNDJsMS4yNDYuNzEyYTEgMSAwIDExLS45OTIgMS43MzZsLTEuNzUtMUExIDEgMCAwMTIgMTR2LTJhMSAxIDAgMDExLTF6bTE0IDBhMSAxIDAgMDExIDF2MmExIDEgMCAwMS0uNTA0Ljg2OGwtMS43NSAxYTEgMSAwIDExLS45OTItMS43MzZMMTYgMTMuNDJWMTJhMSAxIDAgMDExLTF6bS05LjYxOCA1LjUwNGExIDEgMCAwMTEuMzY0LS4zNzJsLjI1NC4xNDVWMTZhMSAxIDAgMTEyIDB2LjI3N2wuMjU0LS4xNDVhMSAxIDAgMTEuOTkyIDEuNzM2bC0xLjczNS45OTJhLjk5NS45OTUgMCAwMS0xLjAyMiAwbC0xLjczNS0uOTkyYTEgMSAwIDAxLS4zNzItMS4zNjR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxN2ExIDEgMCAwMDEuNDQ3Ljg5NGw0LTJBMSAxIDAgMDAxNyAxNVY5LjIzNmExIDEgMCAwMC0xLjQ0Ny0uODk0bC00IDJhMSAxIDAgMDAtLjU1My44OTRWMTd6TTE1LjIxMSA2LjI3NmExIDEgMCAwMDAtMS43ODhsLTQuNzY0LTIuMzgyYTEgMSAwIDAwLS44OTQgMEw0Ljc4OSA0LjQ4OGExIDEgMCAwMDAgMS43ODhsNC43NjQgMi4zODJhMSAxIDAgMDAuODk0IDBsNC43NjQtMi4zODJ6TTQuNDQ3IDguMzQyQTEgMSAwIDAwMyA5LjIzNlYxNWExIDEgMCAwMC41NTMuODk0bDQgMkExIDEgMCAwMDkgMTd2LTUuNzY0YTEgMSAwIDAwLS41NTMtLjg5NGwtNC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJyZW5jeUJhbmdsYWRlc2hpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNNyA0YTEgMSAwIDAwMCAyIDEgMSAwIDAxMSAxdjFIN2ExIDEgMCAwMDAgMmgxdjNhMyAzIDAgMTA2IDB2LTFhMSAxIDAgMTAtMiAwdjFhMSAxIDAgMTEtMiAwdi0zaDNhMSAxIDAgMTAwLTJoLTNWN2EzIDMgMCAwMC0zLTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJyZW5jeURvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40MzMgNy40MThjLjE1NS0uMTAzLjM0Ni0uMTk2LjU2Ny0uMjY3djEuNjk4YTIuMzA1IDIuMzA1IDAgMDEtLjU2Ny0uMjY3QzguMDcgOC4zNCA4IDguMTE0IDggOGMwLS4xMTQuMDctLjM0LjQzMy0uNTgyek0xMSAxMi44NDl2LTEuNjk4Yy4yMi4wNzEuNDEyLjE2NC41NjcuMjY3LjM2NC4yNDMuNDMzLjQ2OC40MzMuNTgyIDAgLjExNC0uMDcuMzQtLjQzMy41ODJhMi4zMDUgMi4zMDUgMCAwMS0uNTY3LjI2N3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTEtMTNhMSAxIDAgMTAtMiAwdi4wOTJhNC41MzUgNC41MzUgMCAwMC0xLjY3Ni42NjJDNi42MDIgNi4yMzQgNiA3LjAwOSA2IDhjMCAuOTkuNjAyIDEuNzY1IDEuMzI0IDIuMjQ2LjQ4LjMyIDEuMDU0LjU0NSAxLjY3Ni42NjJ2MS45NDFjLS4zOTEtLjEyNy0uNjgtLjMxNy0uODQzLS41MDRhMSAxIDAgMTAtMS41MSAxLjMxYy41NjIuNjQ5IDEuNDEzIDEuMDc2IDIuMzUzIDEuMjUzVjE1YTEgMSAwIDEwMiAwdi0uMDkyYTQuNTM1IDQuNTM1IDAgMDAxLjY3Ni0uNjYyQzEzLjM5OCAxMy43NjYgMTQgMTIuOTkxIDE0IDEyYzAtLjk5LS42MDItMS43NjUtMS4zMjQtMi4yNDZBNC41MzUgNC41MzUgMCAwMDExIDkuMDkyVjcuMTUxYy4zOTEuMTI3LjY4LjMxNy44NDMuNTA0YTEgMSAwIDEwMS41MTEtMS4zMWMtLjU2My0uNjQ5LTEuNDEzLTEuMDc2LTIuMzU0LTEuMjUzVjV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJyZW5jeUV1cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek04LjczNiA2Ljk3OUM5LjIwOCA2LjE5MyA5LjY5NiA2IDEwIDZjLjMwNCAwIC43OTIuMTkzIDEuMjY0Ljk3OWExIDEgMCAwMDEuNzE1LTEuMDI5QzEyLjI3OSA0Ljc4NCAxMS4yMzIgNCAxMCA0cy0yLjI3OS43ODQtMi45NzkgMS45NWMtLjI4NS40NzUtLjUwNyAxLS42NyAxLjU1SDZhMSAxIDAgMDAwIDJoLjAxM2E5LjM1OCA5LjM1OCAwIDAwMCAxSDZhMSAxIDAgMTAwIDJoLjM1MWMuMTYzLjU1LjM4NSAxLjA3NS42NyAxLjU1QzcuNzIxIDE1LjIxNiA4Ljc2OCAxNiAxMCAxNnMyLjI3OS0uNzg0IDIuOTc5LTEuOTVhMSAxIDAgMTAtMS43MTUtMS4wMjljLS40NzIuNzg2LS45Ni45NzktMS4yNjQuOTc5LS4zMDQgMC0uNzkyLS4xOTMtMS4yNjQtLjk3OWE0LjI2NSA0LjI2NSAwIDAxLS4yNjQtLjUyMUgxMGExIDEgMCAxMDAtMkg4LjAxN2E3LjM2IDcuMzYgMCAwMTAtMUgxMGExIDEgMCAxMDAtMkg4LjQ3MmMuMDgtLjE4NS4xNjctLjM2LjI2NC0uNTIxelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ3VycmVuY3lQb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTEtMTRhMyAzIDAgMDAtMyAzdjJIN2ExIDEgMCAwMDAgMmgxdjFhMSAxIDAgMDEtMSAxIDEgMSAwIDEwMCAyaDZhMSAxIDAgMTAwLTJIOS44M2MuMTEtLjMxMy4xNy0uNjUuMTctMXYtMWgxYTEgMSAwIDEwMC0yaC0xVjdhMSAxIDAgMTEyIDAgMSAxIDAgMTAyIDAgMyAzIDAgMDAtMy0zelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ3VycmVuY3lSdXBlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTcgNWExIDEgMCAxMDAgMmgxYTIgMiAwIDAxMS43MzIgMUg3YTEgMSAwIDEwMCAyaDIuNzMyQTIgMiAwIDAxOCAxMUg3YTEgMSAwIDAwLS43MDcgMS43MDdsMyAzYTEgMSAwIDAwMS40MTQtMS40MTRsLTEuNDgzLTEuNDg0QTQuMDA4IDQuMDA4IDAgMDAxMS44NzQgMTBIMTNhMSAxIDAgMTAwLTJoLTEuMTI2YTMuOTc2IDMuOTc2IDAgMDAtLjQxLTFIMTNhMSAxIDAgMTAwLTJIN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUN1cnJlbmN5WWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNNy44NTggNS40ODVhMSAxIDAgMDAtMS43MTUgMS4wM0w3LjYzMyA5SDdhMSAxIDAgMTAwIDJoMS44MzRsLjE2Ni4yNzdWMTJIN2ExIDEgMCAxMDAgMmgydjFhMSAxIDAgMTAyIDB2LTFoMmExIDEgMCAxMDAtMmgtMnYtLjcyM2wuMTY2LS4yNzdIMTNhMSAxIDAgMTAwLTJoLS42MzRsMS40OTItMi40ODZhMSAxIDAgMTAtMS43MTYtMS4wMjlMMTAuMDM0IDloLS4wNjhMNy44NTggNS40ODV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJzb3JDbGljayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuNjcyIDEuOTExYTEgMSAwIDEwLTEuOTMyLjUxOGwuMjU5Ljk2NmExIDEgMCAwMDEuOTMyLS41MThsLS4yNi0uOTY2ek0yLjQyOSA0Ljc0YTEgMSAwIDEwLS41MTcgMS45MzJsLjk2Ni4yNTlhMSAxIDAgMDAuNTE3LTEuOTMybC0uOTY2LS4yNnptOC44MTQtLjU2OWExIDEgMCAwMC0xLjQxNS0xLjQxNGwtLjcwNy43MDdhMSAxIDAgMTAxLjQxNSAxLjQxNWwuNzA3LS43MDh6bS03LjA3MSA3LjA3MmwuNzA3LS43MDdBMSAxIDAgMDAzLjQ2NSA5LjEybC0uNzA4LjcwN2ExIDEgMCAwMDEuNDE1IDEuNDE1em0zLjItNS4xNzFhMSAxIDAgMDAtMS4zIDEuM2w0IDEwYTEgMSAwIDAwMS44MjMuMDc1bDEuMzgtMi43NTkgMy4wMTggMy4wMmExIDEgMCAwMDEuNDE0LTEuNDE1bC0zLjAxOS0zLjAyIDIuNzYtMS4zNzlhMSAxIDAgMDAtLjA3Ni0xLjgyMmwtMTAtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURhdGFiYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEydjNjMCAxLjY1NyAzLjEzNCAzIDcgM3M3LTEuMzQzIDctM3YtM2MwIDEuNjU3LTMuMTM0IDMtNyAzcy03LTEuMzQzLTctM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA3djNjMCAxLjY1NyAzLjEzNCAzIDcgM3M3LTEuMzQzIDctM1Y3YzAgMS42NTctMy4xMzQgMy03IDNTMyA4LjY1NyAzIDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVjMCAxLjY1Ny0zLjEzNCAzLTcgM1MzIDYuNjU3IDMgNXMzLjEzNC0zIDctMyA3IDEuMzQzIDcgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRGVza3RvcENvbXB1dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA1YTIgMiAwIDAxMi0yaDEwYTIgMiAwIDAxMiAydjhhMiAyIDAgMDEtMiAyaC0yLjIybC4xMjMuNDg5LjgwNC44MDRBMSAxIDAgMDExMyAxOEg3YTEgMSAwIDAxLS43MDctMS43MDdsLjgwNC0uODA0TDcuMjIgMTVINWEyIDIgMCAwMS0yLTJWNXptNS43NzEgN0g1VjVoMTB2N0g4Ljc3MXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURldmljZU1vYmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoNmEyIDIgMCAwMDItMlY0YTIgMiAwIDAwLTItMkg3em0zIDE0YTEgMSAwIDEwMC0yIDEgMSAwIDAwMCAyelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRGV2aWNlVGFibGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAyYTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0yVjRhMiAyIDAgMDAtMi0ySDZ6bTQgMTRhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEb2N1bWVudEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY3LjQxNEEyIDIgMCAwMDE1LjQxNCA2TDEyIDIuNTg2QTIgMiAwIDAwMTAuNTg2IDJINnptNSA2YTEgMSAwIDEwLTIgMHYySDdhMSAxIDAgMTAwIDJoMnYyYTEgMSAwIDEwMiAwdi0yaDJhMSAxIDAgMTAwLTJoLTJWOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvY3VtZW50RG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNy40MTRBMiAyIDAgMDAxNS40MTQgNkwxMiAyLjU4NkEyIDIgMCAwMDEwLjU4NiAySDZ6bTUgNmExIDEgMCAxMC0yIDB2My41ODZsLTEuMjkzLTEuMjkzYTEgMSAwIDEwLTEuNDE0IDEuNDE0bDMgM2ExIDEgMCAwMDEuNDE0IDBsMy0zYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDExIDExLjU4NlY4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnREdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMmEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMmg2YTIgMiAwIDAwMi0yVjYuNDE0QTIgMiAwIDAwMTYuNDE0IDVMMTQgMi41ODZBMiAyIDAgMDAxMi41ODYgMkg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDhhMiAyIDAgMDEyLTJ2MTBoOGEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnRSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNy40MTRBMiAyIDAgMDAxNS40MTQgNkwxMiAyLjU4NkEyIDIgMCAwMDEwLjU4NiAySDZ6bTEgOGExIDEgMCAxMDAgMmg2YTEgMSAwIDEwMC0ySDd6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEb2N1bWVudFJlcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY3LjQxNEEyIDIgMCAwMDE1LjQxNCA2TDEyIDIuNTg2QTIgMiAwIDAwMTAuNTg2IDJINnptMiAxMGExIDEgMCAxMC0yIDB2M2ExIDEgMCAxMDIgMHYtM3ptMi0zYTEgMSAwIDAxMSAxdjVhMSAxIDAgMTEtMiAwdi01YTEgMSAwIDAxMS0xem00LTFhMSAxIDAgMTAtMiAwdjdhMSAxIDAgMTAyIDBWOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvY3VtZW50U2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRhMiAyIDAgMDEyLTJoNC41ODZBMiAyIDAgMDExMiAyLjU4NkwxNS40MTQgNkEyIDIgMCAwMTE2IDcuNDE0VjE2YTIgMiAwIDAxLTIgMmgtMS41MjhBNiA2IDAgMDA0IDkuNTI4VjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDEwYTQgNCAwIDAwLTMuNDQ2IDYuMDMybC0xLjI2MSAxLjI2YTEgMSAwIDEwMS40MTQgMS40MTVsMS4yNjEtMS4yNjFBNCA0IDAgMTA4IDEwem0tMiA0YTIgMiAwIDExNCAwIDIgMiAwIDAxLTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvY3VtZW50VGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMTItMmg0LjU4NkEyIDIgMCAwMTEyIDIuNTg2TDE1LjQxNCA2QTIgMiAwIDAxMTYgNy40MTRWMTZhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjR6bTIgNmExIDEgMCAwMTEtMWg2YTEgMSAwIDExMCAySDdhMSAxIDAgMDEtMS0xem0xIDNhMSAxIDAgMTAwIDJoNmExIDEgMCAxMDAtMkg3elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDRhMiAyIDAgMDEyLTJoNC41ODZBMiAyIDAgMDExMiAyLjU4NkwxNS40MTQgNkEyIDIgMCAwMTE2IDcuNDE0VjE2YTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMlY0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG90c0NpcmNsZUhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03IDlINXYyaDJWOXptOCAwaC0ydjJoMlY5ek05IDloMnYySDlWOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvdHNIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEwYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNMTIgMTBhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwek0xNiAxMmEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG90c1ZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2YTIgMiAwIDExMC00IDIgMiAwIDAxMCA0ek0xMCAxMmEyIDIgMCAxMTAtNCAyIDIgMCAwMTAgNHpNMTAgMThhMiAyIDAgMTEwLTQgMiAyIDAgMDEwIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyAxN2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXptMy4yOTMtNy43MDdhMSAxIDAgMDExLjQxNCAwTDkgMTAuNTg2VjNhMSAxIDAgMTEyIDB2Ny41ODZsMS4yOTMtMS4yOTNhMSAxIDAgMTExLjQxNCAxLjQxNGwtMyAzYTEgMSAwIDAxLTEuNDE0IDBsLTMtM2ExIDEgMCAwMTAtMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOWEyIDIgMCAwMTItMmg2YTIgMiAwIDAxMiAydjZhMiAyIDAgMDEtMiAySDlhMiAyIDAgMDEtMi0yVjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM2EyIDIgMCAwMC0yIDJ2NmEyIDIgMCAwMDIgMlY1aDhhMiAyIDAgMDAtMi0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUVtb2ppSGFwcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03IDlhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6bTctMWExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bS0uNDY0IDUuNTM1YTEgMSAwIDEwLTEuNDE1LTEuNDE0IDMgMyAwIDAxLTQuMjQyIDAgMSAxIDAgMDAtMS40MTUgMS40MTQgNSA1IDAgMDA3LjA3MiAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRW1vamlTYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03IDlhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6bTctMWExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bS03LjUzNiA1Ljg3OWExIDEgMCAwMDEuNDE1IDAgMyAzIDAgMDE0LjI0MiAwIDEgMSAwIDAwMS40MTUtMS40MTUgNSA1IDAgMDAtNy4wNzIgMCAxIDEgMCAwMDAgMS40MTV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlFeGNsYW1hdGlvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tNyA0YTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHptLTEtOWExIDEgMCAwMC0xIDF2NGExIDEgMCAxMDIgMFY2YTEgMSAwIDAwLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOC4yNTcgMy4wOTljLjc2NS0xLjM2IDIuNzIyLTEuMzYgMy40ODYgMGw1LjU4IDkuOTJjLjc1IDEuMzM0LS4yMTMgMi45OC0xLjc0MiAyLjk4SDQuNDJjLTEuNTMgMC0yLjQ5My0xLjY0Ni0xLjc0My0yLjk4bDUuNTgtOS45MnpNMTEgMTNhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwem0tMS04YTEgMSAwIDAwLTEgMXYzYTEgMSAwIDAwMiAwVjZhMSAxIDAgMDAtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRXh0ZXJuYWxMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAzYTEgMSAwIDEwMCAyaDIuNTg2bC02LjI5MyA2LjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDE1IDYuNDE0VjlhMSAxIDAgMTAyIDBWNGExIDEgMCAwMC0xLTFoLTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNWEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0ydi0zYTEgMSAwIDEwLTIgMHYzSDVWN2gzYTEgMSAwIDAwMC0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUV5ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuNzA3IDIuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDE0IDE0YTEgMSAwIDAwMS40MTQtMS40MTRsLTEuNDczLTEuNDczQTEwLjAxNCAxMC4wMTQgMCAwMDE5LjU0MiAxMEMxOC4yNjggNS45NDMgMTQuNDc4IDMgMTAgM2E5Ljk1OCA5Ljk1OCAwIDAwLTQuNTEyIDEuMDc0bC0xLjc4LTEuNzgxem00LjI2MSA0LjI2bDEuNTE0IDEuNTE1YTIuMDAzIDIuMDAzIDAgMDEyLjQ1IDIuNDVsMS41MTQgMS41MTRhNCA0IDAgMDAtNS40NzgtNS40Nzh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi40NTQgMTYuNjk3TDkuNzUgMTMuOTkyYTQgNCAwIDAxLTMuNzQyLTMuNzQxTDIuMzM1IDYuNTc4QTkuOTggOS45OCAwIDAwLjQ1OCAxMGMxLjI3NCA0LjA1NyA1LjA2NSA3IDkuNTQyIDcgLjg0NyAwIDEuNjY5LS4xMDUgMi40NTQtLjMwM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMmEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTS40NTggMTBDMS43MzIgNS45NDMgNS41MjIgMyAxMCAzczguMjY4IDIuOTQzIDkuNTQyIDdjLTEuMjc0IDQuMDU3LTUuMDY0IDctOS41NDIgN1MxLjczMiAxNC4wNTcuNDU4IDEwek0xNCAxMGE0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41NTUgNS4xNjhBMSAxIDAgMDAzIDZ2OGExIDEgMCAwMDEuNTU1LjgzMkwxMCAxMS4yMDJWMTRhMSAxIDAgMDAxLjU1NS44MzJsNi00YTEgMSAwIDAwMC0xLjY2NGwtNi00QTEgMSAwIDAwMTAgNnYyLjc5OGwtNS40NDUtMy42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgM2EyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJINHptMyAyaDZ2NEg3VjV6bTggOHYyaDF2LTJoLTF6bS0yLTJIN3Y0aDZ2LTR6bTIgMGgxVjloLTF2MnptMS00VjVoLTF2Mmgxek01IDV2Mkg0VjVoMXptMCA0SDR2MmgxVjl6bS0xIDRoMXYySDR2LTJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDNhMSAxIDAgMDExLTFoMTJhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0uMjkzLjcwN0wxMiAxMS40MTRWMTVhMSAxIDAgMDEtLjI5My43MDdsLTIgMkExIDEgMCAwMTggMTd2LTUuNTg2TDMuMjkzIDYuNzA3QTEgMSAwIDAxMyA2VjN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGaW5nZXJQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuNjI1IDIuNjU1QTkgOSAwIDAxMTkgMTFhMSAxIDAgMTEtMiAwIDcgNyAwIDAwLTkuNjI1LTYuNDkyIDEgMSAwIDExLS43NS0xLjg1M3pNNC42NjIgNC45NTlBMSAxIDAgMDE0Ljc1IDYuMzcgNi45NyA2Ljk3IDAgMDAzIDExYTEgMSAwIDExLTIgMCA4Ljk3IDguOTcgMCAwMTIuMjUtNS45NTMgMSAxIDAgMDExLjQxMi0uMDg4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMTFhNSA1IDAgMTExMCAwIDEgMSAwIDExLTIgMCAzIDMgMCAxMC02IDBjMCAxLjY3Ny0uMzQ1IDMuMjc2LS45NjggNC43MjlhMSAxIDAgMTEtMS44MzgtLjc4OUE5Ljk2NCA5Ljk2NCAwIDAwNSAxMXptOC45MjEgMi4wMTJhMSAxIDAgMDEuODMxIDEuMTQ1IDE5Ljg2IDE5Ljg2IDAgMDEtLjU0NSAyLjQzNiAxIDEgMCAxMS0xLjkyLS41NThjLjIwNy0uNzEzLjM3MS0xLjQ0NS40OS0yLjE5MmExIDEgMCAwMTEuMTQ0LS44M3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxMGExIDEgMCAwMTEgMWMwIDIuMjM2LS40NiA0LjM2OC0xLjI5IDYuMzA0YTEgMSAwIDAxLTEuODM4LS43ODlBMTMuOTUyIDEzLjk1MiAwIDAwOSAxMWExIDEgMCAwMTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi4zOTUgMi41NTNhMSAxIDAgMDAtMS40NS0uMzg1Yy0uMzQ1LjIzLS42MTQuNTU4LS44MjIuODgtLjIxNC4zMy0uNDAzLjcxMy0uNTcgMS4xMTYtLjMzNC44MDQtLjYxNCAxLjc2OC0uODQgMi43MzRhMzEuMzY1IDMxLjM2NSAwIDAwLS42MTMgMy41OCAyLjY0IDIuNjQgMCAwMS0uOTQ1LTEuMDY3Yy0uMzI4LS42OC0uMzk4LTEuNTM0LS4zOTgtMi42NTRBMSAxIDAgMDA1LjA1IDYuMDUgNi45ODEgNi45ODEgMCAwMDMgMTFhNyA3IDAgMTAxMS45NS00Ljk1Yy0uNTkyLS41OTEtLjk4LS45ODUtMS4zNDgtMS40NjctLjM2My0uNDc2LS43MjQtMS4wNjMtMS4yMDctMi4wM3pNMTIuMTIgMTUuMTJBMyAzIDAgMDE3IDEzcy44NzkuNSAyLjUuNWMwLTEgLjUtNCAxLjI1LTQuNS41IDEgLjc4NiAxLjI5MyAxLjM3MSAxLjg3OUEyLjk5IDIuOTkgMCAwMTEzIDEzYTIuOTkgMi45OSAwIDAxLS44NzkgMi4xMjF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA2YTMgMyAwIDAxMy0zaDEwYTEgMSAwIDAxLjggMS42TDE0LjI1IDhsMi41NSAzLjRBMSAxIDAgMDExNiAxM0g2YTEgMSAwIDAwLTEgMXYzYTEgMSAwIDExLTIgMFY2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRm9sZGVyQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCA0YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjhhMiAyIDAgMDAtMi0yaC01TDkgNEg0em03IDVhMSAxIDAgMTAtMiAwdjFIOGExIDEgMCAxMDAgMmgxdjFhMSAxIDAgMTAyIDB2LTFoMWExIDEgMCAxMDAtMmgtMVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGb2xkZXJEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMmgxMmEyIDIgMCAwMDItMlY4YTIgMiAwIDAwLTItMmgtNUw5IDRINHptNyA1YTEgMSAwIDEwLTIgMHYxLjU4NmwtLjI5My0uMjkzYTEgMSAwIDEwLTEuNDE0IDEuNDE0bDIgMiAuMDAyLjAwMmEuOTk3Ljk5NyAwIDAwMS40MSAwbC4wMDItLjAwMiAyLTJhMSAxIDAgMDAtMS40MTQtMS40MTRsLS4yOTMuMjkzVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDZhMiAyIDAgMDEyLTJoNGwyIDJoNGEyIDIgMCAwMTIgMnYxSDhhMyAzIDAgMDAtMyAzdjEuNWExLjUgMS41IDAgMDEtMyAwVjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEyYTIgMiAwIDAxMi0yaDhhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJIMmgyYTIgMiAwIDAwMi0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGb2xkZXJSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDRhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJoLTVMOSA0SDR6bTQgNmExIDEgMCAxMDAgMmg0YTEgMSAwIDEwMC0ySDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2YTIgMiAwIDAxMi0yaDVsMiAyaDVhMiAyIDAgMDEyIDJ2NmEyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpR2lmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgNWEzIDMgMCAwMTUtMi4yMzZBMyAzIDAgMDExNC44MyA2SDE2YTIgMiAwIDExMCA0aC01VjlhMSAxIDAgMTAtMiAwdjFINGEyIDIgMCAxMTAtNGgxLjE3QzUuMDYgNS42ODcgNSA1LjM1IDUgNXptNCAxVjVhMSAxIDAgMTAtMSAxaDF6bTMgMGExIDEgMCAxMC0xLTF2MWgxelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMUgzdjVhMiAyIDAgMDAyIDJoNHYtN3pNMTEgMThoNGEyIDIgMCAwMDItMnYtNWgtNnY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlHbG9iZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQuMDgzIDloMS45NDZjLjA4OS0xLjU0Ni4zODMtMi45Ny44MzctNC4xMThBNi4wMDQgNi4wMDQgMCAwMDQuMDgzIDl6TTEwIDJhOCA4IDAgMTAwIDE2IDggOCAwIDAwMC0xNnptMCAyYy0uMDc2IDAtLjIzMi4wMzItLjQ2NS4yNjItLjIzOC4yMzQtLjQ5Ny42MjMtLjczNyAxLjE4Mi0uMzg5LjkwNy0uNjczIDIuMTQyLS43NjYgMy41NTZoMy45MzZjLS4wOTMtMS40MTQtLjM3Ny0yLjY0OS0uNzY2LTMuNTU2LS4yNC0uNTYtLjUtLjk0OC0uNzM3LTEuMTgyQzEwLjIzMiA0LjAzMiAxMC4wNzYgNCAxMCA0em0zLjk3MSA1Yy0uMDg5LTEuNTQ2LS4zODMtMi45Ny0uODM3LTQuMTE4QTYuMDA0IDYuMDA0IDAgMDExNS45MTcgOWgtMS45NDZ6bS0yLjAwMyAySDguMDMyYy4wOTMgMS40MTQuMzc3IDIuNjQ5Ljc2NiAzLjU1Ni4yNC41Ni41Ljk0OC43MzcgMS4xODIuMjMzLjIzLjM4OS4yNjIuNDY1LjI2Mi4wNzYgMCAuMjMyLS4wMzIuNDY1LS4yNjIuMjM4LS4yMzQuNDk4LS42MjMuNzM3LTEuMTgyLjM4OS0uOTA3LjY3My0yLjE0Mi43NjYtMy41NTZ6bTEuMTY2IDQuMTE4Yy40NTQtMS4xNDcuNzQ4LTIuNTcyLjgzNy00LjExOGgxLjk0NmE2LjAwNCA2LjAwNCAwIDAxLTIuNzgzIDQuMTE4em0tNi4yNjggMEM2LjQxMiAxMy45NyA2LjExOCAxMi41NDYgNi4wMyAxMUg0LjA4M2E2LjAwNCA2LjAwNCAwIDAwMi43ODMgNC4xMTh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTQuMzMyIDguMDI3YTYuMDEyIDYuMDEyIDAgMDExLjkxMi0yLjcwNkM2LjUxMiA1LjczIDYuOTc0IDYgNy41IDZBMS41IDEuNSAwIDAxOSA3LjVWOGEyIDIgMCAwMDQgMCAyIDIgMCAwMTEuNTIzLTEuOTQzQTUuOTc3IDUuOTc3IDAgMDExNiAxMGMwIC4zNC0uMDI4LjY3NS0uMDgzIDFIMTVhMiAyIDAgMDAtMiAydjIuMTk3QTUuOTczIDUuOTczIDAgMDExMCAxNnYtMmEyIDIgMCAwMC0yLTIgMiAyIDAgMDEtMi0yIDIgMiAwIDAwLTEuNjY4LTEuOTczelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkgM2ExIDEgMCAwMTIgMHY1LjVhLjUuNSAwIDAwMSAwVjRhMSAxIDAgMTEyIDB2NC41YS41LjUgMCAwMDEgMFY2YTEgMSAwIDExMiAwdjVhNyA3IDAgMTEtMTQgMFY5YTEgMSAwIDAxMiAwdjIuNWEuNS41IDAgMDAxIDBWNGExIDEgMCAwMTIgMHY0LjVhLjUuNSAwIDAwMSAwVjN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS4yNDMgMy4wM2ExIDEgMCAwMS43MjcgMS4yMTNMOS41MyA2aDIuOTRsLjU2LTIuMjQzYTEgMSAwIDExMS45NC40ODZMMTQuNTMgNkgxN2ExIDEgMCAxMTAgMmgtMi45N2wtMSA0SDE1YTEgMSAwIDExMCAyaC0yLjQ3bC0uNTYgMi4yNDJhMSAxIDAgMTEtMS45NC0uNDg1TDEwLjQ3IDE0SDcuNTNsLS41NiAyLjI0MmExIDEgMCAxMS0xLjk0LS40ODVMNS40NyAxNEgzYTEgMSAwIDExMC0yaDIuOTdsMS00SDVhMSAxIDAgMTEwLTJoMi40N2wuNTYtMi4yNDNhMSAxIDAgMDExLjIxMy0uNzI3ek05LjAzIDhsLTEgNGgyLjkzOGwxLTRIOS4wMzF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuMTcyIDUuMTcyYTQgNCAwIDAxNS42NTYgMEwxMCA2LjM0M2wxLjE3Mi0xLjE3MWE0IDQgMCAxMTUuNjU2IDUuNjU2TDEwIDE3LjY1N2wtNi44MjgtNi44MjlhNCA0IDAgMDEwLTUuNjU2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNzA3IDIuMjkzYTEgMSAwIDAwLTEuNDE0IDBsLTcgN2ExIDEgMCAwMDEuNDE0IDEuNDE0TDQgMTAuNDE0VjE3YTEgMSAwIDAwMSAxaDJhMSAxIDAgMDAxLTF2LTJhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXYyYTEgMSAwIDAwMSAxaDJhMSAxIDAgMDAxLTF2LTYuNTg2bC4yOTMuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRsLTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpSWRlbnRpZmljYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAyYTEgMSAwIDAwLTEgMXYxYTEgMSAwIDAwMiAwVjNhMSAxIDAgMDAtMS0xek00IDRoM2EzIDMgMCAwMDYgMGgzYTIgMiAwIDAxMiAydjlhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJ6bTIuNSA3YTEuNSAxLjUgMCAxMDAtMyAxLjUgMS41IDAgMDAwIDN6bTIuNDUgNGEyLjUgMi41IDAgMTAtNC45IDBoNC45ek0xMiA5YTEgMSAwIDEwMCAyaDNhMSAxIDAgMTAwLTJoLTN6bS0xIDRhMSAxIDAgMDExLTFoMmExIDEgMCAxMTAgMmgtMmExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlJbmJveEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjcwNyA3LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwyIDJhMSAxIDAgMDAxLjQxNCAwbDItMmExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMSA3LjU4NlYzYTEgMSAwIDEwLTIgMHY0LjU4NmwtLjI5My0uMjkzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVhMiAyIDAgMDEyLTJoMWExIDEgMCAwMTAgMkg1djdoMmwxIDJoNGwxLTJoMlY1aC0xYTEgMSAwIDExMC0yaDFhMiAyIDAgMDEyIDJ2MTBhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSAzYTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMkg1em0wIDJoMTB2N2gtMmwtMSAySDhsLTEtMkg1VjV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlJbmZvcm1hdGlvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tNy00YTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpNOSA5YTEgMSAwIDAwMCAydjNhMSAxIDAgMDAxIDFoMWExIDEgMCAxMDAtMnYtM2ExIDEgMCAwMC0xLTFIOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDhhNiA2IDAgMDEtNy43NDMgNS43NDNMMTAgMTRsLTEgMS0xIDFINnYySDJ2LTRsNC4yNTctNC4yNTdBNiA2IDAgMTExOCA4em0tNi00YTEgMSAwIDEwMCAyIDIgMiAwIDAxMiAyIDEgMSAwIDEwMiAwIDQgNCAwIDAwLTQtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxpYnJhcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC40OTYgMi4xMzJhMSAxIDAgMDAtLjk5MiAwbC03IDRBMSAxIDAgMDAzIDh2N2ExIDEgMCAxMDAgMmgxNGExIDEgMCAxMDAtMlY4YTEgMSAwIDAwLjQ5Ni0xLjg2OGwtNy00ek02IDlhMSAxIDAgMDAtMSAxdjNhMSAxIDAgMTAyIDB2LTNhMSAxIDAgMDAtMS0xem0zIDFhMSAxIDAgMDEyIDB2M2ExIDEgMCAxMS0yIDB2LTN6bTUtMWExIDEgMCAwMC0xIDF2M2ExIDEgMCAxMDIgMHYtM2ExIDEgMCAwMC0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMaWdodEJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDNhMSAxIDAgMTAtMiAwdjFhMSAxIDAgMTAyIDBWM3pNMTUuNjU3IDUuNzU3YTEgMSAwIDAwLTEuNDE0LTEuNDE0bC0uNzA3LjcwN2ExIDEgMCAwMDEuNDE0IDEuNDE0bC43MDctLjcwN3pNMTggMTBhMSAxIDAgMDEtMSAxaC0xYTEgMSAwIDExMC0yaDFhMSAxIDAgMDExIDF6TTUuMDUgNi40NjRBMSAxIDAgMTA2LjQ2NCA1LjA1bC0uNzA3LS43MDdhMSAxIDAgMDAtMS40MTQgMS40MTRsLjcwNy43MDd6TTUgMTBhMSAxIDAgMDEtMSAxSDNhMSAxIDAgMTEwLTJoMWExIDEgMCAwMTEgMXpNOCAxNnYtMWg0djFhMiAyIDAgMTEtNCAwek0xMiAxNGMuMDE1LS4zNC4yMDgtLjY0Ni40NzctLjg1OWE0IDQgMCAxMC00Ljk1NCAwYy4yNy4yMTMuNDYyLjUxOS40NzYuODU5aDQuMDAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMaWdodG5pbmdCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTEuMyAxLjA0NkExIDEgMCAwMTEyIDJ2NWg0YTEgMSAwIDAxLjgyIDEuNTczbC03IDEwQTEgMSAwIDAxOCAxOHYtNUg0YTEgMSAwIDAxLS44Mi0xLjU3M2w3LTEwYTEgMSAwIDAxMS4xMi0uMzh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIuNTg2IDQuNTg2YTIgMiAwIDExMi44MjggMi44MjhsLTMgM2EyIDIgMCAwMS0yLjgyOCAwIDEgMSAwIDAwLTEuNDE0IDEuNDE0IDQgNCAwIDAwNS42NTYgMGwzLTNhNCA0IDAgMDAtNS42NTYtNS42NTZsLTEuNSAxLjVhMSAxIDAgMTAxLjQxNCAxLjQxNGwxLjUtMS41em0tNSA1YTIgMiAwIDAxMi44MjggMCAxIDEgMCAxMDEuNDE0LTEuNDE0IDQgNCAwIDAwLTUuNjU2IDBsLTMgM2E0IDQgMCAxMDUuNjU2IDUuNjU2bDEuNS0xLjVhMSAxIDAgMTAtMS40MTQtMS40MTRsLTEuNSAxLjVhMiAyIDAgMTEtMi44MjgtMi44MjhsMy0zelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTG9jYXRpb25NYXJrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjA1IDQuMDVhNyA3IDAgMTE5LjkgOS45TDEwIDE4LjlsLTQuOTUtNC45NWE3IDcgMCAwMTAtOS45ek0xMCAxMWEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxvY2tDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDlWN2E1IDUgMCAwMTEwIDB2MmEyIDIgMCAwMTIgMnY1YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMnYtNWEyIDIgMCAwMTItMnptOC0ydjJIN1Y3YTMgMyAwIDAxNiAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTG9ja09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDJhNSA1IDAgMDAtNSA1djJhMiAyIDAgMDAtMiAydjVhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJ2LTVhMiAyIDAgMDAtMi0ySDdWN2EzIDMgMCAwMTUuOTA1LS43NSAxIDEgMCAwMDEuOTM3LS41QTUuMDAyIDUuMDAyIDAgMDAxMCAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMb2dpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMTEgMXYxMmExIDEgMCAxMS0yIDBWNGExIDEgMCAwMTEtMXptNy43MDcgMy4yOTNhMSAxIDAgMDEwIDEuNDE0TDkuNDE0IDlIMTdhMSAxIDAgMTEwIDJIOS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRsLTMtM2ExIDEgMCAwMTAtMS40MTRsMy0zYTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxvZ291dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMTAyIDBWNGExIDEgMCAwMC0xLTF6bTEwLjI5MyA5LjI5M2ExIDEgMCAwMDEuNDE0IDEuNDE0bDMtM2ExIDEgMCAwMDAtMS40MTRsLTMtM2ExIDEgMCAxMC0xLjQxNCAxLjQxNEwxNC41ODYgOUg3YTEgMSAwIDEwMCAyaDcuNTg2bC0xLjI5MyAxLjI5M3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1haWxPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMi45NCA2LjQxMkEyIDIgMCAwMDIgOC4xMDhWMTZhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWOC4xMDhhMiAyIDAgMDAtLjk0LTEuNjk2bC02LTMuNzVhMiAyIDAgMDAtMi4xMiAwbC02IDMuNzV6bTIuNjE1IDIuNDIzYTEgMSAwIDEwLTEuMTEgMS42NjRsNSAzLjMzM2ExIDEgMCAwMDEuMTEgMGw1LTMuMzMzYTEgMSAwIDAwLTEuMTEtMS42NjRMMTAgMTEuNzk4IDUuNTU1IDguODM1elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4wMDMgNS44ODRMMTAgOS44ODJsNy45OTctMy45OThBMiAyIDAgMDAxNiA0SDRhMiAyIDAgMDAtMS45OTcgMS44ODR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDguMTE4bC04IDQtOC00VjE0YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjguMTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMiAxLjU4NmwtNCA0djEyLjgyOGw0LTRWMS41ODZ6TTMuNzA3IDMuMjkzQTEgMSAwIDAwMiA0djEwYTEgMSAwIDAwLjI5My43MDdMNiAxOC40MTRWNS41ODZMMy43MDcgMy4yOTN6TTE3LjcwNyA1LjI5M0wxNCAxLjU4NnYxMi44MjhsMi4yOTMgMi4yOTNBMSAxIDAgMDAxOCAxNlY2YTEgMSAwIDAwLS4yOTMtLjcwN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1lbnVBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA1YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xek0zIDEwYTEgMSAwIDAxMS0xaDZhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNZW51QWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgNWExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxMGExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxNWExIDEgMCAwMTEtMWg2YTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTWVudUFsdDMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTBhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTkgMTVhMSAxIDAgMDExLTFoNmExIDEgMCAxMTAgMmgtNmExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNZW51QWx0NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgN2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxM2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTBhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNaWNyb3Bob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNyA0YTMgMyAwIDAxNiAwdjRhMyAzIDAgMTEtNiAwVjR6bTQgMTAuOTNBNy4wMDEgNy4wMDEgMCAwMDE3IDhhMSAxIDAgMTAtMiAwQTUgNSAwIDAxNSA4YTEgMSAwIDAwLTIgMCA3LjAwMSA3LjAwMSAwIDAwNiA2LjkzVjE3SDZhMSAxIDAgMTAwIDJoOGExIDEgMCAxMDAtMmgtM3YtMi4wN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1pbnVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNNyA5YTEgMSAwIDAwMCAyaDZhMSAxIDAgMTAwLTJIN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1pbnVzU20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDEwYTEgMSAwIDAxMS0xaDhhMSAxIDAgMTEwIDJINmExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgMTBhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNb29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4yOTMgMTMuMjkzQTggOCAwIDAxNi43MDcgMi43MDdhOC4wMDEgOC4wMDEgMCAxMDEwLjU4NiAxMC41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU11c2ljTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggM2ExIDEgMCAwMC0xLjE5Ni0uOThsLTEwIDJBMSAxIDAgMDA2IDV2OS4xMTRBNC4zNjkgNC4zNjkgMCAwMDUgMTRjLTEuNjU3IDAtMyAuODk1LTMgMnMxLjM0MyAyIDMgMiAzLS44OTUgMy0yVjcuODJsOC0xLjZ2NS44OTRBNC4zNyA0LjM3IDAgMDAxNSAxMmMtMS42NTcgMC0zIC44OTUtMyAyczEuMzQzIDIgMyAyIDMtLjg5NSAzLTJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiA1YTIgMiAwIDAxMi0yaDhhMiAyIDAgMDEyIDJ2MTBhMiAyIDAgMDAyIDJINGEyIDIgMCAwMS0yLTJWNXptMyAxaDZ2NEg1VjZ6bTYgNkg1djJoNnYtMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDdoMWEyIDIgMCAwMTIgMnY1LjVhMS41IDEuNSAwIDAxLTMgMFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPZmZpY2VCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMTItMmg4YTIgMiAwIDAxMiAydjEyYTEgMSAwIDExMCAyaC0zYTEgMSAwIDAxLTEtMXYtMmExIDEgMCAwMC0xLTFIOWExIDEgMCAwMC0xIDF2MmExIDEgMCAwMS0xIDFINGExIDEgMCAxMTAtMlY0em0zIDFoMnYySDdWNXptMiA0SDd2MmgyVjl6bTItNGgydjJoLTJWNXptMiA0aC0ydjJoMlY5elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGFwZXJBaXJwbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODk0IDIuNTUzYTEgMSAwIDAwLTEuNzg4IDBsLTcgMTRhMSAxIDAgMDAxLjE2OSAxLjQwOWw1LTEuNDI5QTEgMSAwIDAwOSAxNS41NzFWMTFhMSAxIDAgMTEyIDB2NC41NzFhMSAxIDAgMDAuNzI1Ljk2Mmw1IDEuNDI4YTEgMSAwIDAwMS4xNy0xLjQwOGwtNy0xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGFwZXJDbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCA0YTMgMyAwIDAwLTMgM3Y0YTUgNSAwIDAwMTAgMFY3YTEgMSAwIDExMiAwdjRhNyA3IDAgMTEtMTQgMFY3YTUgNSAwIDAxMTAgMHY0YTMgMyAwIDExLTYgMFY3YTEgMSAwIDAxMiAwdjRhMSAxIDAgMTAyIDBWN2EzIDMgMCAwMC0zLTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwek03IDhhMSAxIDAgMDEyIDB2NGExIDEgMCAxMS0yIDBWOHptNS0xYTEgMSAwIDAwLTEgMXY0YTEgMSAwIDEwMiAwVjhhMSAxIDAgMDAtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGVuY2lsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy40MTQgMi41ODZhMiAyIDAgMDAtMi44MjggMEw3IDEwLjE3MlYxM2gyLjgyOGw3LjU4Ni03LjU4NmEyIDIgMCAwMDAtMi44Mjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDZhMiAyIDAgMDEyLTJoNGExIDEgMCAwMTAgMkg0djEwaDEwdi00YTEgMSAwIDExMiAwdjRhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQZW5jaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjU4NiAzLjU4NmEyIDIgMCAxMTIuODI4IDIuODI4bC0uNzkzLjc5My0yLjgyOC0yLjgyOC43OTMtLjc5M3pNMTEuMzc5IDUuNzkzTDMgMTQuMTcyVjE3aDIuODI4bDguMzgtOC4zNzktMi44My0yLjgyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGhvbmVJbmNvbWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNDE0IDdsMy4yOTMtMy4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTMgNS41ODZWNGExIDEgMCAxMC0yIDB2NC4wMDNhLjk5Ni45OTYgMCAwMC42MTcuOTIxQS45OTcuOTk3IDAgMDAxMiA5aDRhMSAxIDAgMTAwLTJoLTEuNTg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDNhMSAxIDAgMDExLTFoMi4xNTNhMSAxIDAgMDEuOTg2LjgzNmwuNzQgNC40MzVhMSAxIDAgMDEtLjU0IDEuMDZsLTEuNTQ4Ljc3M2ExMS4wMzcgMTEuMDM3IDAgMDA2LjEwNSA2LjEwNWwuNzc0LTEuNTQ4YTEgMSAwIDAxMS4wNTktLjU0bDQuNDM1Ljc0YTEgMSAwIDAxLjgzNi45ODZWMTdhMSAxIDAgMDEtMSAxaC0yQzcuODIgMTggMiAxMi4xOCAyIDVWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGhvbmVNaXNzZWRDYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDNhMSAxIDAgMDExLTFoMi4xNTNhMSAxIDAgMDEuOTg2LjgzNmwuNzQgNC40MzVhMSAxIDAgMDEtLjU0IDEuMDZsLTEuNTQ4Ljc3M2ExMS4wMzcgMTEuMDM3IDAgMDA2LjEwNSA2LjEwNWwuNzc0LTEuNTQ4YTEgMSAwIDAxMS4wNTktLjU0bDQuNDM1Ljc0YTEgMSAwIDAxLjgzNi45ODZWMTdhMSAxIDAgMDEtMSAxaC0yQzcuODIgMTggMiAxMi4xOCAyIDVWM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNzA3IDMuMjkzYTEgMSAwIDAxMCAxLjQxNEwxNS40MTQgNmwxLjI5MyAxLjI5M2ExIDEgMCAwMS0xLjQxNCAxLjQxNEwxNCA3LjQxNGwtMS4yOTMgMS4yOTNhMSAxIDAgMTEtMS40MTQtMS40MTRMMTIuNTg2IDZsLTEuMjkzLTEuMjkzYTEgMSAwIDAxMS40MTQtMS40MTRMMTQgNC41ODZsMS4yOTMtMS4yOTNhMSAxIDAgMDExLjQxNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQaG9uZU91dGdvaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45MjQgMi42MTdhLjk5Ny45OTcgMCAwMC0uMjE1LS4zMjJsLS4wMDQtLjAwNEEuOTk3Ljk5NyAwIDAwMTcgMmgtNGExIDEgMCAxMDAgMmgxLjU4NmwtMy4yOTMgMy4yOTNhMSAxIDAgMDAxLjQxNCAxLjQxNEwxNiA1LjQxNFY3YTEgMSAwIDEwMiAwVjNhLjk5Ny45OTcgMCAwMC0uMDc2LS4zODN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgM2ExIDEgMCAwMTEtMWgyLjE1M2ExIDEgMCAwMS45ODYuODM2bC43NCA0LjQzNWExIDEgMCAwMS0uNTQgMS4wNmwtMS41NDguNzczYTExLjAzNyAxMS4wMzcgMCAwMDYuMTA1IDYuMTA1bC43NzQtMS41NDhhMSAxIDAgMDExLjA1OS0uNTRsNC40MzUuNzRhMSAxIDAgMDEuODM2Ljk4NlYxN2ExIDEgMCAwMS0xIDFoLTJDNy44MiAxOCAyIDEyLjE4IDIgNVYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAzYTEgMSAwIDAxMS0xaDIuMTUzYTEgMSAwIDAxLjk4Ni44MzZsLjc0IDQuNDM1YTEgMSAwIDAxLS41NCAxLjA2bC0xLjU0OC43NzNhMTEuMDM3IDExLjAzNyAwIDAwNi4xMDUgNi4xMDVsLjc3NC0xLjU0OGExIDEgMCAwMTEuMDU5LS41NGw0LjQzNS43NGExIDEgMCAwMS44MzYuOTg2VjE3YTEgMSAwIDAxLTEgMWgtMkM3LjgyIDE4IDIgMTIuMTggMiA1VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVBob3RvZ3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDNhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDR6bTEyIDEySDRsNC04IDMgNiAyLTQgMyA2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTkuNTU1IDcuMTY4QTEgMSAwIDAwOCA4djRhMSAxIDAgMDAxLjU1NS44MzJsMy0yYTEgMSAwIDAwMC0xLjY2NGwtMy0yelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGx1c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTEtMTFhMSAxIDAgMTAtMiAwdjJIN2ExIDEgMCAxMDAgMmgydjJhMSAxIDAgMTAyIDB2LTJoMmExIDEgMCAxMDAtMmgtMlY3elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGx1c1NtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgNWExIDEgMCAwMTEgMXYzaDNhMSAxIDAgMTEwIDJoLTN2M2ExIDEgMCAxMS0yIDB2LTNINmExIDEgMCAxMTAtMmgzVjZhMSAxIDAgMDExLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgM2ExIDEgMCAwMTEgMXY1aDVhMSAxIDAgMTEwIDJoLTV2NWExIDEgMCAxMS0yIDB2LTVINGExIDEgMCAxMTAtMmg1VjRhMSAxIDAgMDExLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQcmVzZW50YXRpb25DaGFydEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMDAgMnY4YTIgMiAwIDAwMiAyaDIuNTg2bC0xLjI5MyAxLjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDEwIDE1LjQxNGwyLjI5MyAyLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0TDEyLjQxNCAxNUgxNWEyIDIgMCAwMDItMlY1YTEgMSAwIDEwMC0ySDN6bTExIDRhMSAxIDAgMTAtMiAwdjRhMSAxIDAgMTAyIDBWN3ptLTMgMWExIDEgMCAxMC0yIDB2M2ExIDEgMCAxMDIgMFY4ek04IDlhMSAxIDAgMDAtMiAwdjJhMSAxIDAgMTAyIDBWOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVByZXNlbnRhdGlvbkNoYXJ0TGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMDAgMnY4YTIgMiAwIDAwMiAyaDIuNTg2bC0xLjI5MyAxLjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDEwIDE1LjQxNGwyLjI5MyAyLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0TDEyLjQxNCAxNUgxNWEyIDIgMCAwMDItMlY1YTEgMSAwIDEwMC0ySDN6bTExLjcwNyA0LjcwN2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMCA5LjU4NiA4LjcwNyA4LjI5M2ExIDEgMCAwMC0xLjQxNCAwbC0yIDJhMSAxIDAgMTAxLjQxNCAxLjQxNEw4IDEwLjQxNGwxLjI5MyAxLjI5M2ExIDEgMCAwMDEuNDE0IDBsNC00elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUHJpbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgNHYzSDRhMiAyIDAgMDAtMiAydjNhMiAyIDAgMDAyIDJoMXYyYTIgMiAwIDAwMiAyaDZhMiAyIDAgMDAyLTJ2LTJoMWEyIDIgMCAwMDItMlY5YTIgMiAwIDAwLTItMmgtMVY0YTIgMiAwIDAwLTItMkg3YTIgMiAwIDAwLTIgMnptOCAwSDd2M2g2VjR6bTAgOEg3djRoNnYtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVB1enpsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMy41YTEuNSAxLjUgMCAwMTMgMFY0YTEgMSAwIDAwMSAxaDNhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0xIDFoLS41YTEuNSAxLjUgMCAwMDAgM2guNWExIDEgMCAwMTEgMXYzYTEgMSAwIDAxLTEgMWgtM2ExIDEgMCAwMS0xLTF2LS41YTEuNSAxLjUgMCAwMC0zIDB2LjVhMSAxIDAgMDEtMSAxSDZhMSAxIDAgMDEtMS0xdi0zYTEgMSAwIDAwLTEtMWgtLjVhMS41IDEuNSAwIDAxMC0zSDRhMSAxIDAgMDAxLTFWNmExIDEgMCAwMTEtMWgzYTEgMSAwIDAwMS0xdi0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA0YTEgMSAwIDAxMS0xaDNhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0xIDFINGExIDEgMCAwMS0xLTFWNHptMiAyVjVoMXYxSDV6TTMgMTNhMSAxIDAgMDExLTFoM2ExIDEgMCAwMTEgMXYzYTEgMSAwIDAxLTEgMUg0YTEgMSAwIDAxLTEtMXYtM3ptMiAydi0xaDF2MUg1ek0xMyAzYTEgMSAwIDAwLTEgMXYzYTEgMSAwIDAwMSAxaDNhMSAxIDAgMDAxLTFWNGExIDEgMCAwMC0xLTFoLTN6bTEgMnYxaDFWNWgtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDRhMSAxIDAgMTAtMiAwdjFhMSAxIDAgMDAyIDBWNHpNMTAgN2ExIDEgMCAwMTEgMXYxaDJhMSAxIDAgMTEwIDJoLTNhMSAxIDAgMDEtMS0xVjhhMSAxIDAgMDExLTF6TTE2IDlhMSAxIDAgMTAwIDIgMSAxIDAgMDAwLTJ6TTkgMTNhMSAxIDAgMDExLTFoMWExIDEgMCAxMTAgMnYyYTEgMSAwIDExLTIgMHYtM3pNNyAxMWExIDEgMCAxMDAtMkg0YTEgMSAwIDEwMCAyaDN6TTE3IDEzYTEgMSAwIDAxLTEgMWgtMmExIDEgMCAxMTAtMmgyYTEgMSAwIDAxMSAxek0xNiAxN2ExIDEgMCAxMDAtMmgtM2ExIDEgMCAxMDAgMmgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlRdWVzdGlvbk1hcmtDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xOCAxMGE4IDggMCAxMS0xNiAwIDggOCAwIDAxMTYgMHptLTgtM2ExIDEgMCAwMC0uODY3LjUgMSAxIDAgMTEtMS43MzEtMUEzIDMgMCAwMTEzIDhhMy4wMDEgMy4wMDEgMCAwMS0yIDIuODNWMTFhMSAxIDAgMTEtMiAwdi0xYTEgMSAwIDAxMS0xIDEgMSAwIDEwMC0yem0wIDhhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlSZWNlaXB0UmVmdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSAyYTIgMiAwIDAwLTIgMnYxNGwzLjUtMiAzLjUgMiAzLjUtMiAzLjUgMlY0YTIgMiAwIDAwLTItMkg1em00LjcwNyAzLjcwN2ExIDEgMCAwMC0xLjQxNC0xLjQxNGwtMyAzYTEgMSAwIDAwMCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNC0xLjQxNEw4LjQxNCA5SDEwYTMgMyAwIDAxMyAzdjFhMSAxIDAgMTAyIDB2LTFhNSA1IDAgMDAtNS01SDguNDE0bDEuMjkzLTEuMjkzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUmVjZWlwdFRheCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMmEyIDIgMCAwMC0yIDJ2MTRsMy41LTIgMy41IDIgMy41LTIgMy41IDJWNGEyIDIgMCAwMC0yLTJINXptMi41IDNhMS41IDEuNSAwIDEwMCAzIDEuNSAxLjUgMCAwMDAtM3ptNi4yMDcuMjkzYTEgMSAwIDAwLTEuNDE0IDBsLTYgNmExIDEgMCAxMDEuNDE0IDEuNDE0bDYtNmExIDEgMCAwMDAtMS40MTR6TTEyLjUgMTBhMS41IDEuNSAwIDEwMCAzIDEuNSAxLjUgMCAwMDAtM3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVJlZnJlc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDJhMSAxIDAgMDExIDF2Mi4xMDFhNy4wMDIgNy4wMDIgMCAwMTExLjYwMSAyLjU2NiAxIDEgMCAxMS0xLjg4NS42NjZBNS4wMDIgNS4wMDIgMCAwMDUuOTk5IDdIOWExIDEgMCAwMTAgMkg0YTEgMSAwIDAxLTEtMVYzYTEgMSAwIDAxMS0xem0uMDA4IDkuMDU3YTEgMSAwIDAxMS4yNzYuNjFBNS4wMDIgNS4wMDIgMCAwMDE0LjAwMSAxM0gxMWExIDEgMCAxMTAtMmg1YTEgMSAwIDAxMSAxdjVhMSAxIDAgMTEtMiAwdi0yLjEwMWE3LjAwMiA3LjAwMiAwIDAxLTExLjYwMS0yLjU2NiAxIDEgMCAwMS42MS0xLjI3NnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVJlcGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy43MDcgMy4yOTNhMSAxIDAgMDEwIDEuNDE0TDUuNDE0IDdIMTFhNyA3IDAgMDE3IDd2MmExIDEgMCAxMS0yIDB2LTJhNSA1IDAgMDAtNS01SDUuNDE0bDIuMjkzIDIuMjkzYTEgMSAwIDExLTEuNDE0IDEuNDE0bC00LTRhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlSZXdpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNDQ1IDE0LjgzMkExIDEgMCAwMDEwIDE0di0yLjc5OGw1LjQ0NSAzLjYzQTEgMSAwIDAwMTcgMTRWNmExIDEgMCAwMC0xLjU1NS0uODMyTDEwIDguNzk4VjZhMSAxIDAgMDAtMS41NTUtLjgzMmwtNiA0YTEgMSAwIDAwMCAxLjY2NGw2IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVJzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzYTEgMSAwIDAwMCAyYzUuNTIzIDAgMTAgNC40NzcgMTAgMTBhMSAxIDAgMTAyIDBDMTcgOC4zNzMgMTEuNjI3IDMgNSAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDlhMSAxIDAgMDExLTEgNyA3IDAgMDE3IDcgMSAxIDAgMTEtMiAwIDUgNSAwIDAwLTUtNSAxIDEgMCAwMS0xLTF6TTMgMTVhMiAyIDAgMTE0IDAgMiAyIDAgMDEtNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTYXZlQXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNzA3IDcuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDMgM2ExIDEgMCAwMDEuNDE0IDBsMy0zYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDEzIDguNTg2VjVoM2EyIDIgMCAwMTIgMnY1YTIgMiAwIDAxLTIgMkg4YTIgMiAwIDAxLTItMlY3YTIgMiAwIDAxMi0yaDN2My41ODZMOS43MDcgNy4yOTN6TTExIDNhMSAxIDAgMTEyIDB2MmgtMlYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDlhMiAyIDAgMDAtMiAydjVhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMkg0Vjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzA3IDEwLjI5M2ExIDEgMCAxMC0xLjQxNCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNCAwbDMtM2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMSAxMS41ODZWNmg1YTIgMiAwIDAxMiAydjdhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjhhMiAyIDAgMDEyLTJoNXY1LjU4NmwtMS4yOTMtMS4yOTN6TTkgNGExIDEgMCAwMTIgMHYySDlWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAyYTEgMSAwIDAxMSAxdjEuMzIzbDMuOTU0IDEuNTgyIDEuNTk5LS44YTEgMSAwIDAxLjg5NCAxLjc5bC0xLjIzMy42MTYgMS43MzggNS40MmExIDEgMCAwMS0uMjg1IDEuMDVBMy45ODkgMy45ODkgMCAwMTE1IDE1YTMuOTg5IDMuOTg5IDAgMDEtMi42NjctMS4wMTkgMSAxIDAgMDEtLjI4NS0xLjA1bDEuNzE1LTUuMzQ5TDExIDYuNDc3VjE2aDJhMSAxIDAgMTEwIDJIN2ExIDEgMCAxMTAtMmgyVjYuNDc3TDYuMjM3IDcuNTgybDEuNzE1IDUuMzQ5YTEgMSAwIDAxLS4yODUgMS4wNUEzLjk4OSAzLjk4OSAwIDAxNSAxNWEzLjk4OSAzLjk4OSAwIDAxLTIuNjY3LTEuMDE5IDEgMSAwIDAxLS4yODUtMS4wNWwxLjczOC01LjQyLTEuMjMzLS42MTdhMSAxIDAgMDEuODk0LTEuNzg4bDEuNTk5Ljc5OUw5IDQuMzIzVjNhMSAxIDAgMDExLTF6bS01IDguMjc0bC0uODE4IDIuNTUyYy4yNS4xMTIuNTI2LjE3NC44MTguMTc0LjI5MiAwIC41NjktLjA2Mi44MTgtLjE3NEw1IDEwLjI3NHptMTAgMGwtLjgxOCAyLjU1MmMuMjUuMTEyLjUyNi4xNzQuODE4LjE3NC4yOTIgMCAuNTY5LS4wNjIuODE4LS4xNzRMMTUgMTAuMjc0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2Npc3NvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjUgMmEzLjUgMy41IDAgMTAxLjY2NSA2LjU4TDguNTg1IDEwbC0xLjQyIDEuNDJhMy41IDMuNSAwIDEwMS40MTQgMS40MTRsOC4xMjgtOC4xMjdhMSAxIDAgMDAtMS40MTQtMS40MTRMMTAgOC41ODZsLTEuNDItMS40MkEzLjUgMy41IDAgMDA1LjUgMnpNNCA1LjVhMS41IDEuNSAwIDExMyAwIDEuNSAxLjUgMCAwMS0zIDB6bTAgOWExLjUgMS41IDAgMTEzIDAgMS41IDEuNSAwIDAxLTMgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjgyOCAxMS40MTRhMSAxIDAgMDAtMS40MTQgMS40MTRsMy44NzkgMy44OGExIDEgMCAwMDEuNDE0LTEuNDE1bC0zLjg3OS0zLjg3OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2VhcmNoQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDlhMiAyIDAgMTE0IDAgMiAyIDAgMDEtNCAwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xM2E0IDQgMCAwMC0zLjQ0NiA2LjAzMmwtMi4yNjEgMi4yNmExIDEgMCAxMDEuNDE0IDEuNDE1bDIuMjYxLTIuMjYxQTQgNCAwIDEwMTEgNXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggNGE0IDQgMCAxMDAgOCA0IDQgMCAwMDAtOHpNMiA4YTYgNiAwIDExMTAuODkgMy40NzZsNC44MTcgNC44MTdhMSAxIDAgMDEtMS40MTQgMS40MTRsLTQuODE2LTQuODE2QTYgNiAwIDAxMiA4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2VsZWN0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAzYTEgMSAwIDAxLjcwNy4yOTNsMyAzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDEwIDUuNDE0IDcuNzA3IDcuNzA3YTEgMSAwIDAxLTEuNDE0LTEuNDE0bDMtM0ExIDEgMCAwMTEwIDN6bS0zLjcwNyA5LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTAgMTQuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMS40MTRsLTMgM2ExIDEgMCAwMS0xLjQxNCAwbC0zLTNhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiA1YTIgMiAwIDAxMi0yaDEyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjV6bTE0IDFhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwek0yIDEzYTIgMiAwIDAxMi0yaDEyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0ydi0yem0xNCAxYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA4YTMgMyAwIDEwLTIuOTc3LTIuNjNsLTQuOTQgMi40N2EzIDMgMCAxMDAgNC4zMTlsNC45NCAyLjQ3YTMgMyAwIDEwLjg5NS0xLjc4OWwtNC45NC0yLjQ3YTMuMDI3IDMuMDI3IDAgMDAwLS43NGw0Ljk0LTIuNDdDMTMuNDU2IDcuNjggMTQuMTkgOCAxNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTaGllbGRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIuMTY2IDQuOTk5QTExLjk1NCAxMS45NTQgMCAwMDEwIDEuOTQ0IDExLjk1NCAxMS45NTQgMCAwMDE3LjgzNCA1Yy4xMS42NS4xNjYgMS4zMi4xNjYgMi4wMDEgMCA1LjIyNS0zLjM0IDkuNjctOCAxMS4zMTdDNS4zNCAxNi42NyAyIDEyLjIyNSAyIDdjMC0uNjgyLjA1Ny0xLjM1LjE2Ni0yLjAwMXptMTEuNTQxIDMuNzA4YTEgMSAwIDAwLTEuNDE0LTEuNDE0TDkgMTAuNTg2IDcuNzA3IDkuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDIgMmExIDEgMCAwMDEuNDE0IDBsNC00elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2hpZWxkRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxLjk0NEExMS45NTQgMTEuOTU0IDAgMDEyLjE2NiA1QzIuMDU2IDUuNjQ5IDIgNi4zMTkgMiA3YzAgNS4yMjUgMy4zNCA5LjY3IDggMTEuMzE3QzE0LjY2IDE2LjY3IDE4IDEyLjIyNSAxOCA3YzAtLjY4Mi0uMDU3LTEuMzUtLjE2Ni0yLjAwMUExMS45NTQgMTEuOTU0IDAgMDExMCAxLjk0NHpNMTEgMTRhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwem0wLTdhMSAxIDAgMTAtMiAwdjNhMSAxIDAgMTAyIDBWN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMmE0IDQgMCAwMC00IDR2MUg1YTEgMSAwIDAwLS45OTQuODlsLTEgOUExIDEgMCAwMDQgMThoMTJhMSAxIDAgMDAuOTk0LTEuMTFsLTEtOUExIDEgMCAwMDE1IDdoLTFWNmE0IDQgMCAwMC00LTR6bTIgNVY2YTIgMiAwIDEwLTQgMHYxaDR6bS02IDNhMSAxIDAgMTEyIDAgMSAxIDAgMDEtMiAwem03LTFhMSAxIDAgMTAwIDIgMSAxIDAgMDAwLTJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMWExIDEgMCAwMDAgMmgxLjIybC4zMDUgMS4yMjJhLjk5Ny45OTcgMCAwMC4wMS4wNDJsMS4zNTggNS40My0uODkzLjg5MkMzLjc0IDExLjg0NiA0LjYzMiAxNCA2LjQxNCAxNEgxNWExIDEgMCAwMDAtMkg2LjQxNGwxLTFIMTRhMSAxIDAgMDAuODk0LS41NTNsMy02QTEgMSAwIDAwMTcgM0g2LjI4bC0uMzEtMS4yNDNBMSAxIDAgMDA1IDFIM3pNMTYgMTYuNWExLjUgMS41IDAgMTEtMyAwIDEuNSAxLjUgMCAwMTMgMHpNNi41IDE4YTEuNSAxLjUgMCAxMDAtMyAxLjUgMS41IDAgMDAwIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNvcnRBc2NlbmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2ExIDEgMCAwMDAgMmgxMWExIDEgMCAxMDAtMkgzek0zIDdhMSAxIDAgMDAwIDJoNWExIDEgMCAwMDAtMkgzek0zIDExYTEgMSAwIDEwMCAyaDRhMSAxIDAgMTAwLTJIM3pNMTMgMTZhMSAxIDAgMTAyIDB2LTUuNTg2bDEuMjkzIDEuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRsLTMtM2ExIDEgMCAwMC0xLjQxNCAwbC0zIDNhMSAxIDAgMTAxLjQxNCAxLjQxNEwxMyAxMC40MTRWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNvcnREZXNjZW5kaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDNhMSAxIDAgMDAwIDJoMTFhMSAxIDAgMTAwLTJIM3pNMyA3YTEgMSAwIDAwMCAyaDdhMSAxIDAgMTAwLTJIM3pNMyAxMWExIDEgMCAxMDAgMmg0YTEgMSAwIDEwMC0ySDN6TTE1IDhhMSAxIDAgMTAtMiAwdjUuNTg2bC0xLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNCAwbDMtM2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxNSAxMy41ODZWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3BhcmtsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDJhMSAxIDAgMDExIDF2MWgxYTEgMSAwIDAxMCAySDZ2MWExIDEgMCAwMS0yIDBWNkgzYTEgMSAwIDAxMC0yaDFWM2ExIDEgMCAwMTEtMXptMCAxMGExIDEgMCAwMTEgMXYxaDFhMSAxIDAgMTEwIDJINnYxYTEgMSAwIDExLTIgMHYtMUgzYTEgMSAwIDExMC0yaDF2LTFhMSAxIDAgMDExLTF6TTEyIDJhMSAxIDAgMDEuOTY3Ljc0NEwxNC4xNDYgNy4yIDE3LjUgOS4xMzRhMSAxIDAgMDEwIDEuNzMybC0zLjM1NCAxLjkzNS0xLjE4IDQuNDU1YTEgMSAwIDAxLTEuOTMzIDBMOS44NTQgMTIuOCA2LjUgMTAuODY2YTEgMSAwIDAxMC0xLjczMmwzLjM1NC0xLjkzNSAxLjE4LTQuNDU1QTEgMSAwIDAxMTIgMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNwZWFrZXJwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDNhMSAxIDAgMDAtMS40NDctLjg5NEw4Ljc2MyA2SDVhMyAzIDAgMDAwIDZoLjI4bDEuNzcxIDUuMzE2QTEgMSAwIDAwOCAxOGgxYTEgMSAwIDAwMS0xdi00LjM4Mmw2LjU1MyAzLjI3NkExIDEgMCAwMDE4IDE1VjN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjA0OSAyLjkyN2MuMy0uOTIxIDEuNjAzLS45MjEgMS45MDIgMGwxLjA3IDMuMjkyYTEgMSAwIDAwLjk1LjY5aDMuNDYyYy45NjkgMCAxLjM3MSAxLjI0LjU4OCAxLjgxbC0yLjggMi4wMzRhMSAxIDAgMDAtLjM2NCAxLjExOGwxLjA3IDMuMjkyYy4zLjkyMS0uNzU1IDEuNjg4LTEuNTQgMS4xMThsLTIuOC0yLjAzNGExIDEgMCAwMC0xLjE3NSAwbC0yLjggMi4wMzRjLS43ODQuNTctMS44MzgtLjE5Ny0xLjUzOS0xLjExOGwxLjA3LTMuMjkyYTEgMSAwIDAwLS4zNjQtMS4xMThMMi45OCA4LjcyYy0uNzgzLS41Ny0uMzgtMS44MS41ODgtMS44MWgzLjQ2MWExIDEgMCAwMC45NTEtLjY5bDEuMDctMy4yOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN0YXR1c09mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNzA3IDIuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDYuOTIxIDYuOTIyYy4wNS4wNjIuMTA1LjExOC4xNjguMTY3bDYuOTEgNi45MTFhMSAxIDAgMDAxLjQxNS0xLjQxNGwtLjY3NS0uNjc1YTkuMDAxIDkuMDAxIDAgMDAtLjY2OC0xMS45ODJBMSAxIDAgMTAxNC45NSA1LjA1YTcuMDAyIDcuMDAyIDAgMDEuNjU3IDkuMTQzbC0xLjQzNS0xLjQzNWE1LjAwMiA1LjAwMiAwIDAwLS42MzYtNi4yOTRBMSAxIDAgMDAxMi4xMiA3Ljg4Yy45MjQuOTIzIDEuMTIgMi4zLjU4NyAzLjQxNWwtMS45OTItMS45OTJhLjkyMi45MjIgMCAwMC0uMDE4LS4wMThsLTYuOTktNi45OTF6TTMuMjM4IDguMTg3YTEgMSAwIDAwLTEuOTMzLS41MTZjLS44IDMtLjAyNSA2LjMzNiAyLjMzMSA4LjY5M2ExIDEgMCAwMDEuNDE0LTEuNDE1IDYuOTk3IDYuOTk3IDAgMDEtMS44MTItNi43NjJ6TTcuNCAxMS41YTEgMSAwIDEwLTEuNzMgMWMuMjE0LjM3MS40OC43Mi43OTUgMS4wMzVhMSAxIDAgMDAxLjQxNC0xLjQxNGMtLjE5MS0uMTkxLS4zNS0uNC0uNDc4LS42MjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN0YXR1c09ubGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuMDUgMy42MzZhMSAxIDAgMDEwIDEuNDE0IDcgNyAwIDAwMCA5LjkgMSAxIDAgMTEtMS40MTQgMS40MTQgOSA5IDAgMDEwLTEyLjcyOCAxIDEgMCAwMTEuNDE0IDB6bTkuOSAwYTEgMSAwIDAxMS40MTQgMCA5IDkgMCAwMTAgMTIuNzI4IDEgMSAwIDExLTEuNDE0LTEuNDE0IDcgNyAwIDAwMC05LjkgMSAxIDAgMDEwLTEuNDE0ek03Ljg3OSA2LjQ2NGExIDEgMCAwMTAgMS40MTQgMyAzIDAgMDAwIDQuMjQzIDEgMSAwIDExLTEuNDE1IDEuNDE0IDUgNSAwIDAxMC03LjA3IDEgMSAwIDAxMS40MTUgMHptNC4yNDIgMGExIDEgMCAwMTEuNDE1IDAgNSA1IDAgMDEwIDcuMDcyIDEgMSAwIDAxLTEuNDE1LTEuNDE1IDMgMyAwIDAwMC00LjI0MiAxIDEgMCAwMTAtMS40MTV6TTEwIDlhMSAxIDAgMDExIDF2LjAxYTEgMSAwIDExLTIgMFYxMGExIDEgMCAwMTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek04IDdhMSAxIDAgMDAtMSAxdjRhMSAxIDAgMDAxIDFoNGExIDEgMCAwMDEtMVY4YTEgMSAwIDAwLTEtMUg4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMmExIDEgMCAwMTEgMXYxYTEgMSAwIDExLTIgMFYzYTEgMSAwIDAxMS0xem00IDhhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwem0tLjQ2NCA0Ljk1bC43MDcuNzA3YTEgMSAwIDAwMS40MTQtMS40MTRsLS43MDctLjcwN2ExIDEgMCAwMC0xLjQxNCAxLjQxNHptMi4xMi0xMC42MDdhMSAxIDAgMDEwIDEuNDE0bC0uNzA2LjcwN2ExIDEgMCAxMS0xLjQxNC0xLjQxNGwuNzA3LS43MDdhMSAxIDAgMDExLjQxNCAwek0xNyAxMWExIDEgMCAxMDAtMmgtMWExIDEgMCAxMDAgMmgxem0tNyA0YTEgMSAwIDAxMSAxdjFhMSAxIDAgMTEtMiAwdi0xYTEgMSAwIDAxMS0xek01LjA1IDYuNDY0QTEgMSAwIDEwNi40NjUgNS4wNWwtLjcwOC0uNzA3YTEgMSAwIDAwLTEuNDE0IDEuNDE0bC43MDcuNzA3em0xLjQxNCA4LjQ4NmwtLjcwNy43MDdhMSAxIDAgMDEtMS40MTQtMS40MTRsLjcwNy0uNzA3YTEgMSAwIDAxMS40MTQgMS40MTR6TTQgMTFhMSAxIDAgMTAwLTJIM2ExIDEgMCAwMDAgMmgxelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tMiAwYzAgLjk5My0uMjQxIDEuOTI5LS42NjggMi43NTRsLTEuNTI0LTEuNTI1YTMuOTk3IDMuOTk3IDAgMDAuMDc4LTIuMTgzbDEuNTYyLTEuNTYyQzE1LjgwMiA4LjI0OSAxNiA5LjEgMTYgMTB6bS01LjE2NSAzLjkxM2wxLjU4IDEuNThBNS45OCA1Ljk4IDAgMDExMCAxNmE1Ljk3NiA1Ljk3NiAwIDAxLTIuNTE2LS41NTJsMS41NjItMS41NjJhNC4wMDYgNC4wMDYgMCAwMDEuNzg5LjAyN3ptLTQuNjc3LTIuNzk2YTQuMDAyIDQuMDAyIDAgMDEtLjA0MS0yLjA4bC0uMDguMDgtMS41My0xLjUzM0E1Ljk4IDUuOTggMCAwMDQgMTBjMCAuOTU0LjIyMyAxLjg1Ni42MTkgMi42NTdsMS41NC0xLjU0em0xLjA4OC02LjQ1QTUuOTc0IDUuOTc0IDAgMDExMCA0Yy45NTQgMCAxLjg1Ni4yMjMgMi42NTcuNjE5bC0xLjU0IDEuNTRhNC4wMDIgNC4wMDIgMCAwMC0yLjM0Ni4wMzNMNy4yNDYgNC42Njh6TTEyIDEwYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN3aXRjaEhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNWExIDEgMCAxMDAgMmg1LjU4NmwtMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNCAxLjQxNGwzLTNhMSAxIDAgMDAwLTEuNDE0bC0zLTNhMSAxIDAgMTAtMS40MTQgMS40MTRMMTMuNTg2IDVIOHpNMTIgMTVhMSAxIDAgMTAwLTJINi40MTRsMS4yOTMtMS4yOTNhMSAxIDAgMTAtMS40MTQtMS40MTRsLTMgM2ExIDEgMCAwMDAgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQtMS40MTRMNi40MTQgMTVIMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN3aXRjaFZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEyYTEgMSAwIDEwMiAwVjYuNDE0bDEuMjkzIDEuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRsLTMtM2ExIDEgMCAwMC0xLjQxNCAwbC0zIDNhMSAxIDAgMDAxLjQxNCAxLjQxNEw1IDYuNDE0VjEyek0xNSA4YTEgMSAwIDEwLTIgMHY1LjU4NmwtMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQgMGwzLTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTUgMTMuNTg2Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSA0YTMgMyAwIDAwLTMgM3Y2YTMgMyAwIDAwMyAzaDEwYTMgMyAwIDAwMy0zVjdhMyAzIDAgMDAtMy0zSDV6bS0xIDl2LTFoNXYySDVhMSAxIDAgMDEtMS0xem03IDFoNGExIDEgMCAwMDEtMXYtMWgtNXYyem0wLTRoNVY4aC01djJ6TTkgOEg0djJoNVY4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTcuNzA3IDkuMjkzYTEgMSAwIDAxMCAxLjQxNGwtNyA3YTEgMSAwIDAxLTEuNDE0IDBsLTctN0EuOTk3Ljk5NyAwIDAxMiAxMFY1YTMgMyAwIDAxMy0zaDVjLjI1NiAwIC41MTIuMDk4LjcwNy4yOTNsNyA3ek01IDZhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUZW1wbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDAxMSAxdjJhMSAxIDAgMDEtMSAxSDRhMSAxIDAgMDEtMS0xVjR6TTMgMTBhMSAxIDAgMDExLTFoNmExIDEgMCAwMTEgMXY2YTEgMSAwIDAxLTEgMUg0YTEgMSAwIDAxLTEtMXYtNnpNMTQgOWExIDEgMCAwMC0xIDF2NmExIDEgMCAwMDEgMWgyYTEgMSAwIDAwMS0xdi02YTEgMSAwIDAwLTEtMWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDVhMiAyIDAgMDEyLTJoMTJhMiAyIDAgMDEyIDJ2MTBhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjV6bTMuMjkzIDEuMjkzYTEgMSAwIDAxMS40MTQgMGwzIDNhMSAxIDAgMDEwIDEuNDE0bC0zIDNhMSAxIDAgMDEtMS40MTQtMS40MTRMNy41ODYgMTAgNS4yOTMgNy43MDdhMSAxIDAgMDEwLTEuNDE0ek0xMSAxMmExIDEgMCAxMDAgMmgzYTEgMSAwIDEwMC0yaC0zelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGh1bWJEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5LjVhMS41IDEuNSAwIDExLTMgMHYtNmExLjUgMS41IDAgMDEzIDB2NnpNMTQgOS42Njd2LTUuNDNhMiAyIDAgMDAtMS4xMDUtMS43OWwtLjA1LS4wMjVBNCA0IDAgMDAxMS4wNTUgMkg1LjY0YTIgMiAwIDAwLTEuOTYyIDEuNjA4bC0xLjIgNkEyIDIgMCAwMDQuNDQgMTJIOHY0YTIgMiAwIDAwMiAyIDEgMSAwIDAwMS0xdi0uNjY3YTQgNCAwIDAxLjgtMi40bDEuNC0xLjg2NmE0IDQgMCAwMC44LTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGh1bWJVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMC41YTEuNSAxLjUgMCAxMTMgMHY2YTEuNSAxLjUgMCAwMS0zIDB2LTZ6TTYgMTAuMzMzdjUuNDNhMiAyIDAgMDAxLjEwNiAxLjc5bC4wNS4wMjVBNCA0IDAgMDA4Ljk0MyAxOGg1LjQxNmEyIDIgMCAwMDEuOTYyLTEuNjA4bDEuMi02QTIgMiAwIDAwMTUuNTYgOEgxMlY0YTIgMiAwIDAwLTItMiAxIDEgMCAwMC0xIDF2LjY2N2E0IDQgMCAwMS0uOCAyLjRMNi44IDcuOTMzYTQgNCAwIDAwLS44IDIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGlja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZhMiAyIDAgMDEyLTJoMTJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAxMDAgNHYyYTIgMiAwIDAxLTIgMkg0YTIgMiAwIDAxLTItMnYtMmEyIDIgMCAxMDAtNFY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUcmFuc2xhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03IDJhMSAxIDAgMDExIDF2MWgzYTEgMSAwIDExMCAySDkuNTc4YTE4Ljg3IDE4Ljg3IDAgMDEtMS43MjQgNC43OGMuMjkuMzU0LjU5Ni42OTYuOTE0IDEuMDI2YTEgMSAwIDExLTEuNDQgMS4zODljLS4xODgtLjE5Ni0uMzczLS4zOTYtLjU1NC0uNmExOS4wOTggMTkuMDk4IDAgMDEtMy4xMDcgMy41NjcgMSAxIDAgMDEtMS4zMzQtMS40OSAxNy4wODcgMTcuMDg3IDAgMDAzLjEzLTMuNzMzIDE4Ljk5MiAxOC45OTIgMCAwMS0xLjQ4Ny0yLjQ5NCAxIDEgMCAxMTEuNzktLjg5Yy4yMzQuNDcuNDg5LjkyOC43NjQgMS4zNzIuNDE3LS45MzQuNzUyLTEuOTEzLjk5Ny0yLjkyN0gzYTEgMSAwIDExMC0yaDNWM2ExIDEgMCAwMTEtMXptNiA2YTEgMSAwIDAxLjg5NC41NTNsMi45OTEgNS45ODJhLjg2OS44NjkgMCAwMS4wMi4wMzdsLjk5IDEuOThhMSAxIDAgMTEtMS43OS44OTVMMTUuMzgzIDE2aC00Ljc2NGwtLjcyNCAxLjQ0N2ExIDEgMCAxMS0xLjc4OC0uODk0bC45OS0xLjk4LjAxOS0uMDM4IDIuOTktNS45ODJBMSAxIDAgMDExMyA4em0tMS4zODIgNmgyLjc2NEwxMyAxMS4yMzYgMTEuNjE4IDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVHJhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk05IDJhMSAxIDAgMDAtLjg5NC41NTNMNy4zODIgNEg0YTEgMSAwIDAwMCAydjEwYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNmExIDEgMCAxMDAtMmgtMy4zODJsLS43MjQtMS40NDdBMSAxIDAgMDAxMSAySDl6TTcgOGExIDEgMCAwMTIgMHY2YTEgMSAwIDExLTIgMFY4em01LTFhMSAxIDAgMDAtMSAxdjZhMSAxIDAgMTAyIDBWOGExIDEgMCAwMC0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUcmVuZGluZ0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMiAxM2ExIDEgMCAxMDAgMmg1YTEgMSAwIDAwMS0xVjlhMSAxIDAgMTAtMiAwdjIuNTg2bC00LjI5My00LjI5M2ExIDEgMCAwMC0xLjQxNCAwTDggOS41ODYgMy43MDcgNS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsNSA1YTEgMSAwIDAwMS40MTQgMEwxMSA5LjQxNCAxNC41ODYgMTNIMTJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUcmVuZGluZ1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIgN2ExIDEgMCAxMTAtMmg1YTEgMSAwIDAxMSAxdjVhMSAxIDAgMTEtMiAwVjguNDE0bC00LjI5MyA0LjI5M2ExIDEgMCAwMS0xLjQxNCAwTDggMTAuNDE0bC00LjI5MyA0LjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNGw1LTVhMSAxIDAgMDExLjQxNCAwTDExIDEwLjU4NiAxNC41ODYgN0gxMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2LjVhMS41IDEuNSAwIDExLTMgMCAxLjUgMS41IDAgMDEzIDB6TTE1IDE2LjVhMS41IDEuNSAwIDExLTMgMCAxLjUgMS41IDAgMDEzIDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNGExIDEgMCAwMC0xIDF2MTBhMSAxIDAgMDAxIDFoMS4wNWEyLjUgMi41IDAgMDE0LjkgMEgxMGExIDEgMCAwMDEtMVY1YTEgMSAwIDAwLTEtMUgzek0xNCA3YTEgMSAwIDAwLTEgMXY2LjA1QTIuNSAyLjUgMCAwMTE1Ljk1IDE2SDE3YTEgMSAwIDAwMS0xdi01YTEgMSAwIDAwLS4yOTMtLjcwN2wtMi0yQTEgMSAwIDAwMTUgN2gtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyAxN2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNNi4yOTMgNi43MDdhMSAxIDAgMDEwLTEuNDE0bDMtM2ExIDEgMCAwMTEuNDE0IDBsMyAzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDExIDUuNDE0VjEzYTEgMSAwIDExLTIgMFY1LjQxNEw3LjcwNyA2LjcwN2ExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXNlckFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2ek04IDExYTYgNiAwIDAxNiA2SDJhNiA2IDAgMDE2LTZ6TTE2IDdhMSAxIDAgMTAtMiAwdjFoLTFhMSAxIDAgMTAwIDJoMXYxYTEgMSAwIDEwMiAwdi0xaDFhMSAxIDAgMTAwLTJoLTFWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tNi0zYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHptLTIgNGE1IDUgMCAwMC00LjU0NiAyLjkxNkE1Ljk4NiA1Ljk4NiAwIDAwMTAgMTZhNS45ODYgNS45ODYgMCAwMDQuNTQ2LTIuMDg0QTUgNSAwIDAwMTAgMTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlVc2VyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDZhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwek0xOCA4YTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNMTQgMTVhNCA0IDAgMDAtOCAwdjNoOHYtM3pNNiA4YTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNMTYgMTh2LTNhNS45NzIgNS45NzIgMCAwMC0uNzUtMi45MDZBMy4wMDUgMy4wMDUgMCAwMTE5IDE1djNoLTN6TTQuNzUgMTIuMDk0QTUuOTczIDUuOTczIDAgMDA0IDE1djNIMXYtM2EzIDMgMCAwMTMuNzUtMi45MDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVVzZXJSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwek0xNCAxN2E2IDYgMCAwMC0xMiAwaDEyek0xMyA4YTEgMSAwIDEwMCAyaDRhMSAxIDAgMTAwLTJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCA5YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2em0tNyA5YTcgNyAwIDExMTQgMEgzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXNlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNmEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6TTE3IDZhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwek0xMi45MyAxN2MuMDQ2LS4zMjcuMDctLjY2LjA3LTFhNi45NyA2Ljk3IDAgMDAtMS41LTQuMzNBNSA1IDAgMDExOSAxNnYxaC02LjA3ek02IDExYTUgNSAwIDAxNSA1djFIMXYtMWE1IDUgMCAwMTUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmFyaWFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjY0OSAzLjA4NEExIDEgMCAwMTUuMTYzIDQuNCAxMy45NSAxMy45NSAwIDAwNCAxMGMwIDEuOTkzLjQxNiAzLjg4NiAxLjE2NCA1LjZhMSAxIDAgMDEtMS44MzIuOEExNS45NSAxNS45NSAwIDAxMiAxMGMwLTIuMjc0LjQ3NS00LjQ0IDEuMzMyLTYuNGExIDEgMCAwMTEuMzE3LS41MTZ6TTEyLjk2IDdhMyAzIDAgMDAtMi4zNDIgMS4xMjZsLS4zMjguNDEtLjExMS0uMjc5QTIgMiAwIDAwOC4zMjMgN0g4YTEgMSAwIDAwMCAyaC4zMjNsLjUzMiAxLjMzLTEuMDM1IDEuMjk1YTEgMSAwIDAxLS43ODEuMzc1SDdhMSAxIDAgMTAwIDJoLjAzOWEzIDMgMCAwMDIuMzQyLTEuMTI2bC4zMjgtLjQxLjExMS4yNzlBMiAyIDAgMDAxMS42NzcgMTRIMTJhMSAxIDAgMTAwLTJoLS4zMjNsLS41MzItMS4zMyAxLjAzNS0xLjI5NUExIDEgMCAwMTEyLjk2MSA5SDEzYTEgMSAwIDEwMC0yaC0uMDM5em0xLjg3NC0yLjZhMSAxIDAgMDExLjgzMy0uOEExNS45NSAxNS45NSAwIDAxMTggMTBjMCAyLjI3NC0uNDc1IDQuNDQtMS4zMzIgNi40YTEgMSAwIDExLTEuODMyLS44QTEzLjk0OSAxMy45NDkgMCAwMDE2IDEwYzAtMS45OTMtLjQxNi0zLjg4Ni0xLjE2NS01LjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlWaWRlb0NhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2YTIgMiAwIDAxMi0yaDZhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJWNnpNMTQuNTUzIDcuMTA2QTEgMSAwIDAwMTQgOHY0YTEgMSAwIDAwLjU1My44OTRsMiAxQTEgMSAwIDAwMTggMTNWN2ExIDEgMCAwMC0xLjQ0Ny0uODk0bC0yIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVZpZXdCb2FyZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNGExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjEyYTEgMSAwIDAxLTEgMUgzYTEgMSAwIDAxLTEtMVY0ek04IDRhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXYxMmExIDEgMCAwMS0xIDFIOWExIDEgMCAwMS0xLTFWNHpNMTUgM2ExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMmExIDEgMCAwMDEtMVY0YTEgMSAwIDAwLTEtMWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmlld0dyaWRBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM2EyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDV6TTUgMTFhMiAyIDAgMDAtMiAydjJhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMnYtMmEyIDIgMCAwMC0yLTJINXpNMTEgNWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMlY1ek0xNCAxMWExIDEgMCAwMTEgMXYxaDFhMSAxIDAgMTEwIDJoLTF2MWExIDEgMCAxMS0yIDB2LTFoLTFhMSAxIDAgMTEwLTJoMXYtMWExIDEgMCAwMTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmlld0dyaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM2EyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDV6TTUgMTFhMiAyIDAgMDAtMiAydjJhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMnYtMmEyIDIgMCAwMC0yLTJINXpNMTEgNWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMlY1ek0xMSAxM2EyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmlld0xpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDRhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6bTAgNGExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXptMCA0YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xem0wIDRhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk05LjM4MyAzLjA3NkExIDEgMCAwMTEwIDR2MTJhMSAxIDAgMDEtMS43MDcuNzA3TDQuNTg2IDEzSDJhMSAxIDAgMDEtMS0xVjhhMSAxIDAgMDExLTFoMi41ODZsMy43MDctMy43MDdhMSAxIDAgMDExLjA5LS4yMTd6TTEyLjI5MyA3LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTUgOC41ODZsMS4yOTMtMS4yOTNhMSAxIDAgMTExLjQxNCAxLjQxNEwxNi40MTQgMTBsMS4yOTMgMS4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRMMTUgMTEuNDE0bC0xLjI5MyAxLjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNEwxMy41ODYgMTBsLTEuMjkzLTEuMjkzYTEgMSAwIDAxMC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVZvbHVtZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS4zODMgMy4wNzZBMSAxIDAgMDExMCA0djEyYTEgMSAwIDAxLTEuNzA3LjcwN0w0LjU4NiAxM0gyYTEgMSAwIDAxLTEtMVY4YTEgMSAwIDAxMS0xaDIuNTg2bDMuNzA3LTMuNzA3YTEgMSAwIDAxMS4wOS0uMjE3ek0xNC42NTcgMi45MjlhMSAxIDAgMDExLjQxNCAwQTkuOTcyIDkuOTcyIDAgMDExOSAxMGE5Ljk3MiA5Ljk3MiAwIDAxLTIuOTI5IDcuMDcxIDEgMSAwIDAxLTEuNDE0LTEuNDE0QTcuOTcxIDcuOTcxIDAgMDAxNyAxMGMwLTIuMjEtLjg5NC00LjIwOC0yLjM0My01LjY1N2ExIDEgMCAwMTAtMS40MTR6bS0yLjgyOSAyLjgyOGExIDEgMCAwMTEuNDE1IDBBNS45ODMgNS45ODMgMCAwMTE1IDEwYTUuOTg0IDUuOTg0IDAgMDEtMS43NTcgNC4yNDMgMSAxIDAgMDEtMS40MTUtMS40MTVBMy45ODQgMy45ODQgMCAwMDEzIDEwYTMuOTgzIDMuOTgzIDAgMDAtMS4xNzItMi44MjggMSAxIDAgMDEwLTEuNDE1elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE3Ljc3OCA4LjIyMmMtNC4yOTYtNC4yOTYtMTEuMjYtNC4yOTYtMTUuNTU2IDBBMSAxIDAgMDEuODA4IDYuODA4YzUuMDc2LTUuMDc3IDEzLjMwOC01LjA3NyAxOC4zODQgMGExIDEgMCAwMS0xLjQxNCAxLjQxNHpNMTQuOTUgMTEuMDVhNyA3IDAgMDAtOS45IDAgMSAxIDAgMDEtMS40MTQtMS40MTQgOSA5IDAgMDExMi43MjggMCAxIDEgMCAwMS0xLjQxNCAxLjQxNHpNMTIuMTIgMTMuODhhMyAzIDAgMDAtNC4yNDIgMCAxIDEgMCAwMS0xLjQxNS0xLjQxNSA1IDUgMCAwMTcuMDcyIDAgMSAxIDAgMDEtMS40MTUgMS40MTV6TTkgMTZhMSAxIDAgMDExLTFoLjAxYTEgMSAwIDExMCAySDEwYTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVhDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek04LjcwNyA3LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNEw4LjU4NiAxMGwtMS4yOTMgMS4yOTNhMSAxIDAgMTAxLjQxNCAxLjQxNEwxMCAxMS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNEwxMS40MTQgMTBsMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTAgOC41ODYgOC43MDcgNy4yOTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNC4yOTMgNC4yOTNhMSAxIDAgMDExLjQxNCAwTDEwIDguNTg2bDQuMjkzLTQuMjkzYTEgMSAwIDExMS40MTQgMS40MTRMMTEuNDE0IDEwbDQuMjkzIDQuMjkzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDEwIDExLjQxNGwtNC4yOTMgNC4yOTNhMSAxIDAgMDEtMS40MTQtMS40MTRMOC41ODYgMTAgNC4yOTMgNS43MDdhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpWm9vbUluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDhhMSAxIDAgMDExLTFoMVY2YTEgMSAwIDAxMiAwdjFoMWExIDEgMCAxMTAgMkg5djFhMSAxIDAgMTEtMiAwVjlINmExIDEgMCAwMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDhhNiA2IDAgMTExMC44OSAzLjQ3Nmw0LjgxNyA0LjgxN2ExIDEgMCAwMS0xLjQxNCAxLjQxNGwtNC44MTYtNC44MTZBNiA2IDAgMDEyIDh6bTYtNGE0IDQgMCAxMDAgOCA0IDQgMCAwMDAtOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVpvb21PdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDRhNCA0IDAgMTAwIDggNCA0IDAgMDAwLTh6TTIgOGE2IDYgMCAxMTEwLjg5IDMuNDc2bDQuODE3IDQuODE3YTEgMSAwIDAxLTEuNDE0IDEuNDE0bC00LjgxNi00LjgxNkE2IDYgMCAwMTIgOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDhhMSAxIDAgMDExLTFoNGExIDEgMCAxMTAgMkg2YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBY2FkZW1pY0NhcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRsOS01LTktNS05IDUgOSA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGw2LjE2LTMuNDIyYTEyLjA4MyAxMi4wODMgMCAwMS42NjUgNi40NzlBMTEuOTUyIDExLjk1MiAwIDAwMTIgMjAuMDU1YTExLjk1MiAxMS45NTIgMCAwMC02LjgyNC0yLjk5OCAxMi4wNzggMTIuMDc4IDAgMDEuNjY1LTYuNDc5TDEyIDE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxNGw5LTUtOS01LTkgNSA5IDV6bTAgMGw2LjE2LTMuNDIyYTEyLjA4MyAxMi4wODMgMCAwMS42NjUgNi40NzlBMTEuOTUyIDExLjk1MiAwIDAwMTIgMjAuMDU1YTExLjk1MiAxMS45NTIgMCAwMC02LjgyNC0yLjk5OCAxMi4wNzggMTIuMDc4IDAgMDEuNjY1LTYuNDc5TDEyIDE0em0tNCA2di03LjVsNC0yLjIyMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQWRqdXN0bWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDZWNG0wIDJhMiAyIDAgMTAwIDRtMC00YTIgMiAwIDExMCA0bS02IDhhMiAyIDAgMTAwLTRtMCA0YTIgMiAwIDExMC00bTAgNHYybTAtNlY0bTYgNnYxMG02LTJhMiAyIDAgMTAwLTRtMCA0YTIgMiAwIDExMC00bTAgNHYybTAtNlY0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBbm5vdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDhoMTBNNyAxMmg0bTEgOGwtNC00SDVhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTRhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJoLTNsLTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgOGgxNE01IDhhMiAyIDAgMTEwLTRoMTRhMiAyIDAgMTEwIDRNNSA4djEwYTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0yVjhtLTkgNGg0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0NpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDEzbC0zIDNtMCAwbC0zLTNtMyAzVjhtMCAxM2E5IDkgMCAxMTAtMTggOSA5IDAgMDEwIDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSAxNWwtMy0zbTAgMGwzLTNtLTMgM2g4TTMgMTJhOSA5IDAgMTExOCAwIDkgOSAwIDAxLTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0NpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA5bDMgM20wIDBsLTMgM20zLTNIOG0xMyAwYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMWwzLTNtMCAwbDMgM20tMy0zdjhtMC0xM2E5IDkgMCAxMTAgMTggOSA5IDAgMDEwLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOSAxNGwtNyA3bTAgMGwtNy03bTcgN1YzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwIDE5bC03LTdtMCAwbDctN20tNyA3aDE4XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd05hcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE2IDE3bC00IDRtMCAwbC00LTRtNCA0VjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93TmFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyAxNmwtNC00bTAgMGw0LTRtLTQgNGgxOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dOYXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgOGw0IDRtMCAwbC00IDRtNC00SDNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93TmFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggN2w0LTRtMCAwbDQgNG0tNC00djE4XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNCA1bDcgN20wIDBsLTcgN203LTdIM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dTbURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3IDEzbC01IDVtMCAwbC01LTVtNSA1VjZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93U21MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSAxN2wtNS01bTAgMGw1LTVtLTUgNWgxMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dTbVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA3bDUgNW0wIDBsLTUgNW01LTVINlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dTbVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDExbDUtNW0wIDBsNSA1bS01LTV2MTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTBsNy03bTAgMGw3IDdtLTctN3YxOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dzRXhwYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDhWNG0wIDBoNE00IDRsNSA1bTExLTFWNG0wIDBoLTRtNCAwbC01IDVNNCAxNnY0bTAgMGg0bS00IDBsNS01bTExIDVsLTUtNW01IDV2LTRtMCA0aC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBdFN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgMTJhNCA0IDAgMTAtOCAwIDQgNCAwIDAwOCAwem0wIDB2MS41YTIuNSAyLjUgMCAwMDUgMFYxMmE5IDkgMCAxMC05IDltNC41LTEuMjA2YTguOTU5IDguOTU5IDAgMDEtNC41IDEuMjA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVCYWNrc3BhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDE0bDItMm0wIDBsMi0ybS0yIDJsLTItMm0yIDJsMiAyTTMgMTJsNi40MTQgNi40MTRhMiAyIDAgMDAxLjQxNC41ODZIMTlhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTguMTcyYTIgMiAwIDAwLTEuNDE0LjU4NkwzIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQmFkZ2VDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMmwyIDIgNC00TTcuODM1IDQuNjk3YTMuNDIgMy40MiAwIDAwMS45NDYtLjgwNiAzLjQyIDMuNDIgMCAwMTQuNDM4IDAgMy40MiAzLjQyIDAgMDAxLjk0Ni44MDYgMy40MiAzLjQyIDAgMDEzLjEzOCAzLjEzOCAzLjQyIDMuNDIgMCAwMC44MDYgMS45NDYgMy40MiAzLjQyIDAgMDEwIDQuNDM4IDMuNDIgMy40MiAwIDAwLS44MDYgMS45NDYgMy40MiAzLjQyIDAgMDEtMy4xMzggMy4xMzggMy40MiAzLjQyIDAgMDAtMS45NDYuODA2IDMuNDIgMy40MiAwIDAxLTQuNDM4IDAgMy40MiAzLjQyIDAgMDAtMS45NDYtLjgwNiAzLjQyIDMuNDIgMCAwMS0zLjEzOC0zLjEzOCAzLjQyIDMuNDIgMCAwMC0uODA2LTEuOTQ2IDMuNDIgMy40MiAwIDAxMC00LjQzOCAzLjQyIDMuNDIgMCAwMC44MDYtMS45NDYgMy40MiAzLjQyIDAgMDEzLjEzOC0zLjEzOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTguMzY0IDE4LjM2NEE5IDkgMCAwMDUuNjM2IDUuNjM2bTEyLjcyOCAxMi43MjhBOSA5IDAgMDE1LjYzNiA1LjYzNm0xMi43MjggMTIuNzI4TDUuNjM2IDUuNjM2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVCZWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5LjQyOCAxNS40MjhhMiAyIDAgMDAtMS4wMjItLjU0N2wtMi4zODctLjQ3N2E2IDYgMCAwMC0zLjg2LjUxN2wtLjMxOC4xNThhNiA2IDAgMDEtMy44Ni41MTdMNi4wNSAxNS4yMWEyIDIgMCAwMC0xLjgwNi41NDdNOCA0aDhsLTEgMXY1LjE3MmEyIDIgMCAwMC41ODYgMS40MTRsNSA1YzEuMjYgMS4yNi4zNjcgMy40MTQtMS40MTUgMy40MTRINC44MjhjLTEuNzgyIDAtMi42NzQtMi4xNTQtMS40MTQtMy40MTRsNS01QTIgMiAwIDAwOSAxMC4xNzJWNUw4IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVCZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxN2g1bC0xLjQwNS0xLjQwNUEyLjAzMiAyLjAzMiAwIDAxMTggMTQuMTU4VjExYTYuMDAyIDYuMDAyIDAgMDAtNC01LjY1OVY1YTIgMiAwIDEwLTQgMHYuMzQxQzcuNjcgNi4xNjUgNiA4LjM4OCA2IDExdjMuMTU5YzAgLjUzOC0uMjE0IDEuMDU1LS41OTUgMS40MzZMNCAxN2g1bTYgMHYxYTMgMyAwIDExLTYgMHYtMW02IDBIOVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQm9va09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDYuMjUzdjEzbTAtMTNDMTAuODMyIDUuNDc3IDkuMjQ2IDUgNy41IDVTNC4xNjggNS40NzcgMyA2LjI1M3YxM0M0LjE2OCAxOC40NzcgNS43NTQgMTggNy41IDE4czMuMzMyLjQ3NyA0LjUgMS4yNTNtMC0xM0MxMy4xNjggNS40NzcgMTQuNzU0IDUgMTYuNSA1YzEuNzQ3IDAgMy4zMzIuNDc3IDQuNSAxLjI1M3YxM0MxOS44MzIgMTguNDc3IDE4LjI0NyAxOCAxNi41IDE4Yy0xLjc0NiAwLTMuMzMyLjQ3Ny00LjUgMS4yNTNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJvb2ttYXJrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiA0djEybC00LTItNCAyVjRNNiAyMGgxMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDVhMiAyIDAgMDEyLTJoMTBhMiAyIDAgMDEyIDJ2MTZsLTctMy41TDUgMjFWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJyaWVmY2FzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjEgMTMuMjU1QTIzLjkzMSAyMy45MzEgMCAwMTEyIDE1Yy0zLjE4MyAwLTYuMjItLjYyLTktMS43NDVNMTYgNlY0YTIgMiAwIDAwLTItMmgtNGEyIDIgMCAwMC0yIDJ2Mm00IDZoLjAxTTUgMjBoMTRhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAxNS41NDZjLS41MjMgMC0xLjA0Ni4xNTEtMS41LjQ1NGEyLjcwNCAyLjcwNCAwIDAxLTMgMCAyLjcwNCAyLjcwNCAwIDAwLTMgMCAyLjcwNCAyLjcwNCAwIDAxLTMgMCAyLjcwNCAyLjcwNCAwIDAwLTMgMCAyLjcwNCAyLjcwNCAwIDAxLTMgMCAyLjcwMSAyLjcwMSAwIDAwLTEuNS0uNDU0TTkgNnYybTMtMnYybTMtMnYyTTkgM2guMDFNMTIgM2guMDFNMTUgM2guMDFNMjEgMjF2LTdhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjdoMTh6bS0zLTl2LTJhMiAyIDAgMDAtMi0ySDhhMiAyIDAgMDAtMiAydjJoMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDYWxjdWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDdoNm0wIDEwdi0zbS0zIDNoLjAxTTkgMTdoLjAxTTkgMTRoLjAxTTEyIDE0aC4wMU0xNSAxMWguMDFNMTIgMTFoLjAxTTkgMTFoLjAxTTcgMjFoMTBhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTRhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCA3VjNtOCA0VjNtLTkgOGgxME01IDIxaDE0YTIgMiAwIDAwMi0yVjdhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDlhMiAyIDAgMDEyLTJoLjkzYTIgMiAwIDAwMS42NjQtLjg5bC44MTItMS4yMkEyIDIgMCAwMTEwLjA3IDRoMy44NmEyIDIgMCAwMTEuNjY0Ljg5bC44MTIgMS4yMkEyIDIgMCAwMDE4LjA3IDdIMTlhMiAyIDAgMDEyIDJ2OWEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgMTNhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgOVY3YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyaDJtMiA0aDEwYTIgMiAwIDAwMi0ydi02YTIgMiAwIDAwLTItMkg5YTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyem03LTVhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTl2LTZhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMnptMCAwVjlhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYxMG0tNiAwYTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJtMCAwVjVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYxNGEyIDIgMCAwMS0yIDJoLTJhMiAyIDAgMDEtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhcnRQaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDMuMDU1QTkuMDAxIDkuMDAxIDAgMTAyMC45NDUgMTNIMTFWMy4wNTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIwLjQ4OCA5SDE1VjMuNTEyQTkuMDI1IDkuMDI1IDAgMDEyMC40ODggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoYXJ0U3F1YXJlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiA4djhtLTQtNXY1bS00LTJ2Mm0tMiA0aDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhdEFsdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3IDhoMmEyIDIgMCAwMTIgMnY2YTIgMiAwIDAxLTIgMmgtMnY0bC00LTRIOWExLjk5NCAxLjk5NCAwIDAxLTEuNDE0LS41ODZtMCAwTDExIDE0aDRhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2NmEyIDIgMCAwMDIgMmgydjRsLjU4Ni0uNTg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCAxMGguMDFNMTIgMTBoLjAxTTE2IDEwaC4wMU05IDE2SDVhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTRhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJoLTVsLTUgNXYtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTJoLjAxTTEyIDEyaC4wMU0xNiAxMmguMDFNMjEgMTJjMCA0LjQxOC00LjAzIDgtOSA4YTkuODYzIDkuODYzIDAgMDEtNC4yNTUtLjk0OUwzIDIwbDEuMzk1LTMuNzJDMy41MTIgMTUuMDQyIDMgMTMuNTc0IDMgMTJjMC00LjQxOCA0LjAzLTggOS04czkgMy41ODIgOSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hlY2tDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTJsMiAyIDQtNG02IDJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNSAxM2w0IDRMMTkgN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hldnJvbkRvdWJsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDEzbC03IDctNy03bTE0LThsLTcgNy03LTdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoZXZyb25Eb3VibGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSAxOWwtNy03IDctN204IDE0bC03LTcgNy03XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uRG91YmxlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDVsNyA3LTcgN001IDVsNyA3LTcgN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hldnJvbkRvdWJsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDExbDctNyA3IDdNNSAxOWw3LTcgNyA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTkgOWwtNyA3LTctN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDE5bC03LTcgNy03XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgNWw3IDctNyA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTVsNy03IDcgN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAzdjJtNi0ydjJNOSAxOXYybTYtMnYyTTUgOUgzbTIgNkgzbTE4LTZoLTJtMiA2aC0yTTcgMTloMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJ6TTkgOWg2djZIOVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2xpcGJvYXJkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgNUg3YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMk05IDVhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMk05IDVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMm0tNiA5bDIgMiA0LTRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsaXBib2FyZENvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggNUg2YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMnYtMU04IDVhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMk04IDVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMm0wIDBoMmEyIDIgMCAwMTIgMnYzbTIgNEgxMG0wIDBsMy0zbS0zIDNsMyAzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDbGlwYm9hcmRMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDVIN2EyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJNOSA1YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJNOSA1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJtLTMgN2gzbS0zIDRoM20tNi00aC4wMU05IDE2aC4wMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2xpcGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDVIN2EyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJNOSA1YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJNOSA1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA4djRsMyAzbTYtM2E5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb3VkRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgMTZhNCA0IDAgMDEtLjg4LTcuOTAzQTUgNSAwIDExMTUuOSA2TDE2IDZhNSA1IDAgMDExIDkuOU05IDE5bDMgM20wIDBsMy0zbS0zIDNWMTBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb3VkVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDE2YTQgNCAwIDAxLS44OC03LjkwM0E1IDUgMCAxMTE1LjkgNkwxNiA2YTUgNSAwIDAxMSA5LjlNMTUgMTNsLTMtM20wIDBsLTMgM20zLTN2MTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDE1YTQgNCAwIDAwNCA0aDlhNSA1IDAgMTAtLjEtOS45OTkgNS4wMDIgNS4wMDIgMCAxMC05Ljc4IDIuMDk2QTQuMDAxIDQuMDAxIDAgMDAzIDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgMjBsNC0xNm00IDRsNCA0LTQgNE02IDE2bC00LTQgNC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwLjMyNSA0LjMxN2MuNDI2LTEuNzU2IDIuOTI0LTEuNzU2IDMuMzUgMGExLjcyNCAxLjcyNCAwIDAwMi41NzMgMS4wNjZjMS41NDMtLjk0IDMuMzEuODI2IDIuMzcgMi4zN2ExLjcyNCAxLjcyNCAwIDAwMS4wNjUgMi41NzJjMS43NTYuNDI2IDEuNzU2IDIuOTI0IDAgMy4zNWExLjcyNCAxLjcyNCAwIDAwLTEuMDY2IDIuNTczYy45NCAxLjU0My0uODI2IDMuMzEtMi4zNyAyLjM3YTEuNzI0IDEuNzI0IDAgMDAtMi41NzIgMS4wNjVjLS40MjYgMS43NTYtMi45MjQgMS43NTYtMy4zNSAwYTEuNzI0IDEuNzI0IDAgMDAtMi41NzMtMS4wNjZjLTEuNTQzLjk0LTMuMzEtLjgyNi0yLjM3LTIuMzdhMS43MjQgMS43MjQgMCAwMC0xLjA2NS0yLjU3MmMtMS43NTYtLjQyNi0xLjc1Ni0yLjkyNCAwLTMuMzVhMS43MjQgMS43MjQgMCAwMDEuMDY2LTIuNTczYy0uOTQtMS41NDMuODI2LTMuMzEgMi4zNy0yLjM3Ljk5Ni42MDggMi4yOTYuMDcgMi41NzItMS4wNjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDEyYTMgMyAwIDExLTYgMCAzIDMgMCAwMTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNvbGxlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDExSDVtMTQgMGEyIDIgMCAwMTIgMnY2YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMnYtNmEyIDIgMCAwMTItMm0xNCAwVjlhMiAyIDAgMDAtMi0yTTUgMTFWOWEyIDIgMCAwMTItMm0wIDBWNWEyIDIgMCAwMTItMmg2YTIgMiAwIDAxMiAydjJNNyA3aDEwXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDb2xvclN3YXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyAyMWE0IDQgMCAwMS00LTRWNWEyIDIgMCAwMTItMmg0YTIgMiAwIDAxMiAydjEyYTQgNCAwIDAxLTQgNHptMCAwaDEyYTIgMiAwIDAwMi0ydi00YTIgMiAwIDAwLTItMmgtMi4zNDNNMTEgNy4zNDNsMS42NTctMS42NTdhMiAyIDAgMDEyLjgyOCAwbDIuODI5IDIuODI5YTIgMiAwIDAxMCAyLjgyOGwtOC40ODYgOC40ODVNNyAxN2guMDFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgMTBoMThNNyAxNWgxbTQgMGgxbS03IDRoMTJhMyAzIDAgMDAzLTNWOGEzIDMgMCAwMC0zLTNINmEzIDMgMCAwMC0zIDN2OGEzIDMgMCAwMDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1YmVUcmFuc3BhcmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQgMTBsLTIgMW0wIDBsLTItMW0yIDF2Mi41TTIwIDdsLTIgMW0yLTFsLTItMW0yIDF2Mi41TTE0IDRsLTItMS0yIDFNNCA3bDItMU00IDdsMiAxTTQgN3YyLjVNMTIgMjFsLTItMW0yIDFsMi0xbS0yIDF2LTIuNU02IDE4bC0yLTF2LTIuNU0xOCAxOGwyLTF2LTIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3ViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjAgN2wtOC00LTggNG0xNiAwbC04IDRtOC00djEwbC04IDRtMC0xMEw0IDdtOCA0djEwTTQgN3YxMGw4IDRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5QmFuZ2xhZGVzaGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDExVjlhMiAyIDAgMDAtMi0ybTIgNHY0YTIgMiAwIDEwNCAwdi0xbS00LTNIOW0yIDBoNG02IDFhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDdXJyZW5jeURvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgOGMtMS42NTcgMC0zIC44OTUtMyAyczEuMzQzIDIgMyAyIDMgLjg5NSAzIDItMS4zNDMgMi0zIDJtMC04YzEuMTEgMCAyLjA4LjQwMiAyLjU5OSAxTTEyIDhWN20wIDF2OG0wIDB2MW0wLTFjLTEuMTEgMC0yLjA4LS40MDItMi41OTktMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5RXVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQuMTIxIDE1LjUzNmMtMS4xNzEgMS45NTItMy4wNyAxLjk1Mi00LjI0MiAwLTEuMTcyLTEuOTUzLTEuMTcyLTUuMTE5IDAtNy4wNzIgMS4xNzEtMS45NTIgMy4wNy0xLjk1MiA0LjI0MiAwTTggMTAuNWg0bS00IDNoNG05LTEuNWE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5UG91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDlhMiAyIDAgMTAtNCAwdjVhMiAyIDAgMDEtMiAyaDZtLTYtNGg0bTggMGE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5UnVwZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgOGg2bS01IDBhMyAzIDAgMTEwIDZIOWwzIDNtLTMtNmg2bTYgMWE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5WWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDhsMyA1bTAgMGwzLTVtLTMgNXY0bS0zLTVoNm0tNiAzaDZtNi0zYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3Vyc29yQ2xpY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDE1bC0yIDVMOSA5bDExIDQtNSAyem0wIDBsNSA1TTcuMTg4IDIuMjM5bC43NzcgMi44OTdNNS4xMzYgNy45NjVsLTIuODk4LS43NzdNMTMuOTUgNC4wNWwtMi4xMjIgMi4xMjJtLTUuNjU3IDUuNjU2bC0yLjEyIDIuMTIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEYXRhYmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA3djEwYzAgMi4yMSAzLjU4MiA0IDggNHM4LTEuNzkgOC00VjdNNCA3YzAgMi4yMSAzLjU4MiA0IDggNHM4LTEuNzkgOC00TTQgN2MwLTIuMjEgMy41ODItNCA4LTRzOCAxLjc5IDggNG0wIDVjMCAyLjIxLTMuNTgyIDQtOCA0cy04LTEuNzktOC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEZXNrdG9wQ29tcHV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkuNzUgMTdMOSAyMGwtMSAxaDhsLTEtMS0uNzUtM00zIDEzaDE4TTUgMTdoMTRhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEZXZpY2VNb2JpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDE4aC4wMU04IDIxaDhhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJIOGEyIDIgMCAwMC0yIDJ2MTRhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEZXZpY2VUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDE4aC4wMU03IDIxaDEwYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDdhMiAyIDAgMDAtMiAydjE0YTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnRBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTNoNm0tMy0zdjZtNSA1SDdhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoNS41ODZhMSAxIDAgMDEuNzA3LjI5M2w1LjQxNCA1LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE5YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvY3VtZW50RG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDEwdjZtMCAwbC0zLTNtMyAzbDMtM20yIDhIN2EyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMmg1LjU4NmExIDEgMCAwMS43MDcuMjkzbDUuNDE0IDUuNDE0YTEgMSAwIDAxLjI5My43MDdWMTlhMiAyIDAgMDEtMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnREdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggN3Y4YTIgMiAwIDAwMiAyaDZNOCA3VjVhMiAyIDAgMDEyLTJoNC41ODZhMSAxIDAgMDEuNzA3LjI5M2w0LjQxNCA0LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE1YTIgMiAwIDAxLTIgMmgtMk04IDdINmEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMnYtMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnRSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTNoNm0yIDhIN2EyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMmg1LjU4NmExIDEgMCAwMS43MDcuMjkzbDUuNDE0IDUuNDE0YTEgMSAwIDAxLjI5My43MDdWMTlhMiAyIDAgMDEtMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnRSZXBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTd2LTJtMyAydi00bTMgNHYtNm0yIDEwSDdhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoNS41ODZhMSAxIDAgMDEuNzA3LjI5M2w1LjQxNCA1LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE5YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvY3VtZW50U2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMCAyMWg3YTIgMiAwIDAwMi0yVjkuNDE0YTEgMSAwIDAwLS4yOTMtLjcwN2wtNS40MTQtNS40MTRBMSAxIDAgMDAxMi41ODYgM0g3YTIgMiAwIDAwLTIgMnYxMW0wIDVsNC44NzktNC44NzltMCAwYTMgMyAwIDEwNC4yNDMtNC4yNDIgMyAzIDAgMDAtNC4yNDMgNC4yNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb2N1bWVudFRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTJoNm0tNiA0aDZtMiA1SDdhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoNS41ODZhMSAxIDAgMDEuNzA3LjI5M2w1LjQxNCA1LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE5YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvY3VtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDIxaDEwYTIgMiAwIDAwMi0yVjkuNDE0YTEgMSAwIDAwLS4yOTMtLjcwN2wtNS40MTQtNS40MTRBMSAxIDAgMDAxMi41ODYgM0g3YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvdHNDaXJjbGVIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDEyaC4wMU0xMiAxMmguMDFNMTYgMTJoLjAxTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG90c0hvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTJoLjAxTTEyIDEyaC4wMU0xOSAxMmguMDFNNiAxMmExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bTcgMGExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bTcgMGExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb3RzVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDV2LjAxTTEyIDEydi4wMU0xMiAxOXYuMDFNMTIgNmExIDEgMCAxMTAtMiAxIDEgMCAwMTAgMnptMCA3YTEgMSAwIDExMC0yIDEgMSAwIDAxMCAyem0wIDdhMSAxIDAgMTEwLTIgMSAxIDAgMDEwIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCAxNnYxYTMgMyAwIDAwMyAzaDEwYTMgMyAwIDAwMy0zdi0xbS00LTRsLTQgNG0wIDBsLTQtNG00IDRWNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRHVwbGljYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDE2SDZhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoOGEyIDIgMCAwMTIgMnYybS02IDEyaDhhMiAyIDAgMDAyLTJ2LThhMiAyIDAgMDAtMi0yaC04YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRW1vamlIYXBweSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQuODI4IDE0LjgyOGE0IDQgMCAwMS01LjY1NiAwTTkgMTBoLjAxTTE1IDEwaC4wMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUVtb2ppU2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05LjE3MiAxNi4xNzJhNCA0IDAgMDE1LjY1NiAwTTkgMTBoLjAxTTE1IDEwaC4wMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUV4Y2xhbWF0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA4djRtMCA0aC4wMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA5djJtMCA0aC4wMW0tNi45MzggNGgxMy44NTZjMS41NCAwIDIuNTAyLTEuNjY3IDEuNzMyLTNMMTMuNzMyIDRjLS43Ny0xLjMzMy0yLjY5NC0xLjMzMy0zLjQ2NCAwTDMuMzQgMTZjLS43NyAxLjMzMy4xOTIgMyAxLjczMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRXh0ZXJuYWxMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMCA2SDZhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0ydi00TTE0IDRoNm0wIDB2Nm0wLTZMMTAgMTRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUV5ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTMuODc1IDE4LjgyNUExMC4wNSAxMC4wNSAwIDAxMTIgMTljLTQuNDc4IDAtOC4yNjgtMi45NDMtOS41NDMtN2E5Ljk3IDkuOTcgMCAwMTEuNTYzLTMuMDI5bTUuODU4LjkwOGEzIDMgMCAxMTQuMjQzIDQuMjQzTTkuODc4IDkuODc4bDQuMjQyIDQuMjQyTTkuODggOS44OGwtMy4yOS0zLjI5bTcuNTMyIDcuNTMybDMuMjkgMy4yOU0zIDNsMy41OSAzLjU5bTAgMEE5Ljk1MyA5Ljk1MyAwIDAxMTIgNWM0LjQ3OCAwIDguMjY4IDIuOTQzIDkuNTQzIDdhMTAuMDI1IDEwLjAyNSAwIDAxLTQuMTMyIDUuNDExbTAgMEwyMSAyMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxMmEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIuNDU4IDEyQzMuNzMyIDcuOTQzIDcuNTIzIDUgMTIgNWM0LjQ3OCAwIDguMjY4IDIuOTQzIDkuNTQyIDctMS4yNzQgNC4wNTctNS4wNjQgNy05LjU0MiA3LTQuNDc3IDAtOC4yNjgtMi45NDMtOS41NDItN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZhc3RGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMS45MzMgMTIuOGExIDEgMCAwMDAtMS42TDYuNiA3LjJBMSAxIDAgMDA1IDh2OGExIDEgMCAwMDEuNi44bDUuMzMzLTR6TTE5LjkzMyAxMi44YTEgMSAwIDAwMC0xLjZsLTUuMzMzLTRBMSAxIDAgMDAxMyA4djhhMSAxIDAgMDAxLjYuOGw1LjMzMy00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyA0djE2TTE3IDR2MTZNMyA4aDRtMTAgMGg0TTMgMTJoMThNMyAxNmg0bTEwIDBoNE00IDIwaDE2YTEgMSAwIDAwMS0xVjVhMSAxIDAgMDAtMS0xSDRhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmlsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDRhMSAxIDAgMDExLTFoMTZhMSAxIDAgMDExIDF2Mi41ODZhMSAxIDAgMDEtLjI5My43MDdsLTYuNDE0IDYuNDE0YTEgMSAwIDAwLS4yOTMuNzA3VjE3bC00IDR2LTYuNTg2YTEgMSAwIDAwLS4yOTMtLjcwN0wzLjI5MyA3LjI5M0ExIDEgMCAwMTMgNi41ODZWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZpbmdlclByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxMWMwIDMuNTE3LTEuMDA5IDYuNzk5LTIuNzUzIDkuNTcxbS0zLjQ0LTIuMDRsLjA1NC0uMDlBMTMuOTE2IDEzLjkxNiAwIDAwOCAxMWE0IDQgMCAxMTggMGMwIDEuMDE3LS4wNyAyLjAxOS0uMjAzIDNtLTIuMTE4IDYuODQ0QTIxLjg4IDIxLjg4IDAgMDAxNS4xNzEgMTdtMy44MzkgMS4xMzJjLjY0NS0yLjI2Ni45OS00LjY1OS45OS03LjEzMkE4IDggMCAwMDggNC4wN00zIDE1LjM2NGMuNjQtMS4zMTkgMS0yLjggMS00LjM2NCAwLTEuNDU3LjM5LTIuODIzIDEuMDctNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmlyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcuNjU3IDE4LjY1N0E4IDggMCAwMTYuMzQzIDcuMzQzUzcgOSA5IDEwYzAtMiAuNS01IDIuOTg2LTdDMTQgNSAxNi4wOSA1Ljc3NyAxNy42NTYgNy4zNDNBNy45NzUgNy45NzUgMCAwMTIwIDEzYTcuOTc1IDcuOTc1IDAgMDEtMi4zNDMgNS42NTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkuODc5IDE2LjEyMUEzIDMgMCAxMDEyLjAxNSAxMUwxMSAxNEg5YzAgLjc2OC4yOTMgMS41MzYuODc5IDIuMTIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAyMXYtNG0wIDBWNWEyIDIgMCAwMTItMmg2LjVsMSAxSDIxbC0zIDYgMyA2aC04LjVsLTEtMUg1YTIgMiAwIDAwLTIgMnptOS0xMy41VjlcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZvbGRlckFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxM2g2bS0zLTN2Nm0tOSAxVjdhMiAyIDAgMDEyLTJoNmwyIDJoNmEyIDIgMCAwMTIgMnY4YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZvbGRlckRvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxMHY2bTAgMGwtMy0zbTMgM2wzLTNNMyAxN1Y3YTIgMiAwIDAxMi0yaDZsMiAyaDZhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDE5YTIgMiAwIDAxLTItMlY3YTIgMiAwIDAxMi0yaDRsMiAyaDRhMiAyIDAgMDEyIDJ2MU01IDE5aDE0YTIgMiAwIDAwMi0ydi01YTIgMiAwIDAwLTItMkg5YTIgMiAwIDAwLTIgMnY1YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZvbGRlclJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxM2g2TTMgMTdWN2EyIDIgMCAwMTItMmg2bDIgMmg2YTIgMiAwIDAxMiAydjhhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDd2MTBhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJWOWEyIDIgMCAwMC0yLTJoLTZsLTItMkg1YTIgMiAwIDAwLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUdpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDh2MTNtMC0xM1Y2YTIgMiAwIDExMiAyaC0yem0wIDBWNS41QTIuNSAyLjUgMCAxMDkuNSA4SDEyem0tNyA0aDE0TTUgMTJhMiAyIDAgMTEwLTRoMTRhMiAyIDAgMTEwIDRNNSAxMnY3YTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0ydi03XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVHbG9iZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjEgMTJhOSA5IDAgMDEtOSA5bTktOWE5IDkgMCAwMC05LTltOSA5SDNtOSA5YTkgOSAwIDAxLTktOW05IDljMS42NTcgMCAzLTQuMDMgMy05cy0xLjM0My05LTMtOW0wIDE4Yy0xLjY1NyAwLTMtNC4wMy0zLTlzMS4zNDMtOSAzLTltLTkgOWE5IDkgMCAwMTktOVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lR2xvYmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMuMDU1IDExSDVhMiAyIDAgMDEyIDJ2MWEyIDIgMCAwMDIgMiAyIDIgMCAwMTIgMnYyLjk0NU04IDMuOTM1VjUuNUEyLjUgMi41IDAgMDAxMC41IDhoLjVhMiAyIDAgMDEyIDIgMiAyIDAgMTA0IDAgMiAyIDAgMDEyLTJoMS4wNjRNMTUgMjAuNDg4VjE4YTIgMiAwIDAxMi0yaDMuMDY0TTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyAxMS41VjE0bTAtMi41di02YTEuNSAxLjUgMCAxMTMgMG0tMyA2YTEuNSAxLjUgMCAwMC0zIDB2MmE3LjUgNy41IDAgMDAxNSAwdi01YTEuNSAxLjUgMCAwMC0zIDBtLTYtM1YxMW0wLTUuNXYtMWExLjUgMS41IDAgMDEzIDB2MW0wIDBWMTFtMC01LjVhMS41IDEuNSAwIDAxMyAwdjNtMCAwVjExXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDIwbDQtMTZtMiAxNmw0LTE2TTYgOWgxNE00IDE1aDE0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNC4zMTggNi4zMThhNC41IDQuNSAwIDAwMCA2LjM2NEwxMiAyMC4zNjRsNy42ODItNy42ODJhNC41IDQuNSAwIDAwLTYuMzY0LTYuMzY0TDEyIDcuNjM2bC0xLjMxOC0xLjMxOGE0LjUgNC41IDAgMDAtNi4zNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgMTJsMi0ybTAgMGw3LTcgNyA3TTUgMTB2MTBhMSAxIDAgMDAxIDFoM20xMC0xMWwyIDJtLTItMnYxMGExIDEgMCAwMS0xIDFoLTNtLTYgMGExIDEgMCAwMDEtMXYtNGExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjRhMSAxIDAgMDAxIDFtLTYgMGg2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVJZGVudGlmaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgNkg1YTIgMiAwIDAwLTIgMnY5YTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0yVjhhMiAyIDAgMDAtMi0yaC01bS00IDBWNWEyIDIgMCAxMTQgMHYxbS00IDBhMiAyIDAgMTA0IDBtLTUgOGEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHptMCAwYzEuMzA2IDAgMi40MTcuODM1IDIuODMgMk05IDE0YTMuMDAxIDMuMDAxIDAgMDAtMi44MyAyTTE1IDExaDNtLTMgNGgyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVJbmJveEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDRINmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJoLTJtLTQtMXY4bTAgMGwzLTNtLTMgM0w5IDhtLTUgNWgyLjU4NmExIDEgMCAwMS43MDcuMjkzbDIuNDE0IDIuNDE0YTEgMSAwIDAwLjcwNy4yOTNoMy4xNzJhMSAxIDAgMDAuNzA3LS4yOTNsMi40MTQtMi40MTRhMSAxIDAgMDEuNzA3LS4yOTNIMjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMCAxM1Y2YTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnY3bTE2IDB2NWEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJ2LTVtMTYgMGgtMi41ODZhMSAxIDAgMDAtLjcwNy4yOTNsLTIuNDE0IDIuNDE0YTEgMSAwIDAxLS43MDcuMjkzaC0zLjE3MmExIDEgMCAwMS0uNzA3LS4yOTNsLTIuNDE0LTIuNDE0QTEgMSAwIDAwNi41ODYgMTNINFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lSW5mb3JtYXRpb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDE2aC0xdi00aC0xbTEtNGguMDFNMjEgMTJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDdhMiAyIDAgMDEyIDJtNCAwYTYgNiAwIDAxLTcuNzQzIDUuNzQzTDExIDE3SDl2Mkg3djJINGExIDEgMCAwMS0xLTF2LTIuNTg2YTEgMSAwIDAxLjI5My0uNzA3bDUuOTY0LTUuOTY0QTYgNiAwIDExMjEgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxpYnJhcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTR2M200LTN2M200LTN2M00zIDIxaDE4TTMgMTBoMThNMyA3bDktNCA5IDRNNCAxMGgxNnYxMUg0VjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTGlnaHRCdWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05LjY2MyAxN2g0LjY3M00xMiAzdjFtNi4zNjQgMS42MzZsLS43MDcuNzA3TTIxIDEyaC0xTTQgMTJIM20zLjM0My01LjY1N2wtLjcwNy0uNzA3bTIuODI4IDkuOWE1IDUgMCAxMTcuMDcyIDBsLS41NDguNTQ3QTMuMzc0IDMuMzc0IDAgMDAxNCAxOC40NjlWMTlhMiAyIDAgMTEtNCAwdi0uNTMxYzAtLjg5NS0uMzU2LTEuNzU0LS45ODgtMi4zODZsLS41NDgtLjU0N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxpZ2h0bmluZ0JvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDEwVjNMNCAxNGg3djdsOS0xMWgtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzLjgyOCAxMC4xNzJhNCA0IDAgMDAtNS42NTYgMGwtNCA0YTQgNCAwIDEwNS42NTYgNS42NTZsMS4xMDItMS4xMDFtLS43NTgtNC44OTlhNCA0IDAgMDA1LjY1NiAwbDQtNGE0IDQgMCAwMC01LjY1Ni01LjY1NmwtMS4xIDEuMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTG9jYXRpb25NYXJrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3LjY1NyAxNi42NTdMMTMuNDE0IDIwLjlhMS45OTggMS45OTggMCAwMS0yLjgyNyAwbC00LjI0NC00LjI0M2E4IDggMCAxMTExLjMxNCAwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxMWEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVMb2NrQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxNXYybS02IDRoMTJhMiAyIDAgMDAyLTJ2LTZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJ6bTEwLTEwVjdhNCA0IDAgMDAtOCAwdjRoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDExVjdhNCA0IDAgMTE4IDBtLTQgOHYybS02IDRoMTJhMiAyIDAgMDAyLTJ2LTZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVMb2dpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgMTZsLTQtNG0wIDBsNC00bS00IDRoMTRtLTUgNHYxYTMgMyAwIDAxLTMgM0g2YTMgMyAwIDAxLTMtM1Y3YTMgMyAwIDAxMy0zaDdhMyAzIDAgMDEzIDN2MVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTG9nb3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNyAxNmw0LTRtMCAwbC00LTRtNCA0SDdtNiA0djFhMyAzIDAgMDEtMyAzSDZhMyAzIDAgMDEtMy0zVjdhMyAzIDAgMDEzLTNoNGEzIDMgMCAwMTMgM3YxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNYWlsT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAxOXYtOC45M2EyIDIgMCAwMS44OS0xLjY2NGw3LTQuNjY2YTIgMiAwIDAxMi4yMiAwbDcgNC42NjZBMiAyIDAgMDEyMSAxMC4wN1YxOU0zIDE5YTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0yTTMgMTlsNi43NS00LjVNMjEgMTlsLTYuNzUtNC41TTMgMTBsNi43NSA0LjVNMjEgMTBsLTYuNzUgNC41bTAgMGwtMS4xNC43NmEyIDIgMCAwMS0yLjIyIDBsLTEuMTQtLjc2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDhsNy44OSA1LjI2YTIgMiAwIDAwMi4yMiAwTDIxIDhNNSAxOWgxNGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAyMGwtNS40NDctMi43MjRBMSAxIDAgMDEzIDE2LjM4MlY1LjYxOGExIDEgMCAwMTEuNDQ3LS44OTRMOSA3bTAgMTNsNi0zbS02IDNWN202IDEwbDQuNTUzIDIuMjc2QTEgMSAwIDAwMjEgMTguMzgyVjcuNjE4YTEgMSAwIDAwLS41NTMtLjg5NEwxNSA0bTAgMTNWNG0wIDBMOSA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0MSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA2aDE2TTQgMTJoOG0tOCA2aDE2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA2aDE2TTQgMTJoMTZNNCAxOGg3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0MyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA2aDE2TTQgMTJoMTZtLTcgNmg3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA4aDE2TTQgMTZoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgNmgxNk00IDEyaDE2TTQgMThoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1pY3JvcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDExYTcgNyAwIDAxLTcgN20wIDBhNyA3IDAgMDEtNy03bTcgN3Y0bTAgMEg4bTQgMGg0bS00LThhMyAzIDAgMDEtMy0zVjVhMyAzIDAgMTE2IDB2NmEzIDMgMCAwMS0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNaW51c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgMTJIOW0xMiAwYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTWludXNTbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTggMTJINlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIwIDEySDRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIwLjM1NCAxNS4zNTRBOSA5IDAgMDE4LjY0NiAzLjY0NiA5LjAwMyA5LjAwMyAwIDAwMTIgMjFhOS4wMDMgOS4wMDMgMCAwMDguMzU0LTUuNjQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTXVzaWNOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDE5VjZsMTItM3YxM005IDE5YzAgMS4xMDUtMS4zNDMgMi0zIDJzLTMtLjg5NS0zLTIgMS4zNDMtMiAzLTIgMyAuODk1IDMgMnptMTItM2MwIDEuMTA1LTEuMzQzIDItMyAycy0zLS44OTUtMy0yIDEuMzQzLTIgMy0yIDMgLjg5NSAzIDJ6TTkgMTBsMTItM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOSAyMEg1YTIgMiAwIDAxLTItMlY2YTIgMiAwIDAxMi0yaDEwYTIgMiAwIDAxMiAydjFtMiAxM2EyIDIgMCAwMS0yLTJWN20yIDEzYTIgMiAwIDAwMi0yVjlhMiAyIDAgMDAtMi0yaC0ybS00LTNIOU03IDE2aDZNNyA4aDZ2NEg3Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVPZmZpY2VCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTkgMjFWNWEyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTZtMTQgMGgybS0yIDBoLTVtLTkgMEgzbTIgMGg1TTkgN2gxbS0xIDRoMW00LTRoMW0tMSA0aDFtLTUgMTB2LTVhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXY1bS00IDBoNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGFwZXJBaXJwbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgMTlsOSAyLTktMTgtOSAxOCA5LTJ6bTAgMHYtOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGFwZXJDbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNS4xNzIgN2wtNi41ODYgNi41ODZhMiAyIDAgMTAyLjgyOCAyLjgyOGw2LjQxNC02LjU4NmE0IDQgMCAwMC01LjY1Ni01LjY1NmwtNi40MTUgNi41ODVhNiA2IDAgMTA4LjQ4NiA4LjQ4NkwyMC41IDEzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgOXY2bTQtNnY2bTctM2E5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBlbmNpbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgNUg2YTIgMiAwIDAwLTIgMnYxMWEyIDIgMCAwMDIgMmgxMWEyIDIgMCAwMDItMnYtNW0tMS40MTQtOS40MTRhMiAyIDAgMTEyLjgyOCAyLjgyOEwxMS44MjggMTVIOXYtMi44MjhsOC41ODYtOC41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQZW5jaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1LjIzMiA1LjIzMmwzLjUzNiAzLjUzNm0tMi4wMzYtNS4wMzZhMi41IDIuNSAwIDExMy41MzYgMy41MzZMNi41IDIxLjAzNkgzdi0zLjU3MkwxNi43MzIgMy43MzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQaG9uZUluY29taW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAzbC02IDZtMCAwVjRtMCA1aDVNNSAzYTIgMiAwIDAwLTIgMnYxYzAgOC4yODQgNi43MTYgMTUgMTUgMTVoMWEyIDIgMCAwMDItMnYtMy4yOGExIDEgMCAwMC0uNjg0LS45NDhsLTQuNDkzLTEuNDk4YTEgMSAwIDAwLTEuMjEuNTAybC0xLjEzIDIuMjU3YTExLjA0MiAxMS4wNDIgMCAwMS01LjUxNi01LjUxN2wyLjI1Ny0xLjEyOGExIDEgMCAwMC41MDItMS4yMUw5LjIyOCAzLjY4M0ExIDEgMCAwMDguMjc5IDNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBob25lTWlzc2VkQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgOGwyLTJtMCAwbDItMm0tMiAybC0yLTJtMiAybDIgMk01IDNhMiAyIDAgMDAtMiAydjFjMCA4LjI4NCA2LjcxNiAxNSAxNSAxNWgxYTIgMiAwIDAwMi0ydi0zLjI4YTEgMSAwIDAwLS42ODQtLjk0OGwtNC40OTMtMS40OThhMSAxIDAgMDAtMS4yMS41MDJsLTEuMTMgMi4yNTdhMTEuMDQyIDExLjA0MiAwIDAxLTUuNTE2LTUuNTE3bDIuMjU3LTEuMTI4YTEgMSAwIDAwLjUwMi0xLjIxTDkuMjI4IDMuNjgzQTEgMSAwIDAwOC4yNzkgM0g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGhvbmVPdXRnb2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgM2g1bTAgMHY1bTAtNWwtNiA2TTUgM2EyIDIgMCAwMC0yIDJ2MWMwIDguMjg0IDYuNzE2IDE1IDE1IDE1aDFhMiAyIDAgMDAyLTJ2LTMuMjhhMSAxIDAgMDAtLjY4NC0uOTQ4bC00LjQ5My0xLjQ5OGExIDEgMCAwMC0xLjIxLjUwMmwtMS4xMyAyLjI1N2ExMS4wNDIgMTEuMDQyIDAgMDEtNS41MTYtNS41MTdsMi4yNTctMS4xMjhhMSAxIDAgMDAuNTAyLTEuMjFMOS4yMjggMy42ODNBMSAxIDAgMDA4LjI3OSAzSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyA1YTIgMiAwIDAxMi0yaDMuMjhhMSAxIDAgMDEuOTQ4LjY4NGwxLjQ5OCA0LjQ5M2ExIDEgMCAwMS0uNTAyIDEuMjFsLTIuMjU3IDEuMTNhMTEuMDQyIDExLjA0MiAwIDAwNS41MTYgNS41MTZsMS4xMy0yLjI1N2ExIDEgMCAwMTEuMjEtLjUwMmw0LjQ5MyAxLjQ5OGExIDEgMCAwMS42ODQuOTQ5VjE5YTIgMiAwIDAxLTIgMmgtMUM5LjcxNiAyMSAzIDE0LjI4NCAzIDZWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBob3RvZ3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgMTZsNC41ODYtNC41ODZhMiAyIDAgMDEyLjgyOCAwTDE2IDE2bS0yLTJsMS41ODYtMS41ODZhMiAyIDAgMDEyLjgyOCAwTDIwIDE0bS02LTZoLjAxTTYgMjBoMTJhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNC43NTIgMTEuMTY4bC0zLjE5Ny0yLjEzMkExIDEgMCAwMDEwIDkuODd2NC4yNjNhMSAxIDAgMDAxLjU1NS44MzJsMy4xOTctMi4xMzJhMSAxIDAgMDAwLTEuNjY0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBsdXNDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDl2M20wIDB2M20wLTNoM20tMyAwSDltMTIgMGE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBsdXNTbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgNnY2bTAgMHY2bTAtNmg2bS02IDBINlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgNHYxNm04LThINFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUHJlc2VudGF0aW9uQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTN2LTFtNCAxdi0zbTQgM1Y4TTggMjFsNC00IDQgNE0zIDRoMThNNCA0aDE2djEyYTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUHJlc2VudGF0aW9uQ2hhcnRMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDEybDMtMyAzIDMgNC00TTggMjFsNC00IDQgNE0zIDRoMThNNCA0aDE2djEyYTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUHJpbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMTdoMmEyIDIgMCAwMDItMnYtNGEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2NGEyIDIgMCAwMDIgMmgybTIgNGg2YTIgMiAwIDAwMi0ydi00YTIgMiAwIDAwLTItMkg5YTIgMiAwIDAwLTIgMnY0YTIgMiAwIDAwMiAyem04LTEyVjVhMiAyIDAgMDAtMi0ySDlhMiAyIDAgMDAtMiAydjRoMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQdXp6bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDRhMiAyIDAgMTE0IDB2MWExIDEgMCAwMDEgMWgzYTEgMSAwIDAxMSAxdjNhMSAxIDAgMDEtMSAxaC0xYTIgMiAwIDEwMCA0aDFhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0xIDFoLTNhMSAxIDAgMDEtMS0xdi0xYTIgMiAwIDEwLTQgMHYxYTEgMSAwIDAxLTEgMUg3YTEgMSAwIDAxLTEtMXYtM2ExIDEgMCAwMC0xLTFINGEyIDIgMCAxMTAtNGgxYTEgMSAwIDAwMS0xVjdhMSAxIDAgMDExLTFoM2ExIDEgMCAwMDEtMVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA0djFtNiAxMWgybS02IDBoLTJ2NG0wLTExdjNtMCAwaC4wMU0xMiAxMmg0LjAxTTE2IDIwaDRNNCAxMmg0bTEyIDBoLjAxTTUgOGgyYTEgMSAwIDAwMS0xVjVhMSAxIDAgMDAtMS0xSDVhMSAxIDAgMDAtMSAxdjJhMSAxIDAgMDAxIDF6bTEyIDBoMmExIDEgMCAwMDEtMVY1YTEgMSAwIDAwLTEtMWgtMmExIDEgMCAwMC0xIDF2MmExIDEgMCAwMDEgMXpNNSAyMGgyYTEgMSAwIDAwMS0xdi0yYTEgMSAwIDAwLTEtMUg1YTEgMSAwIDAwLTEgMXYyYTEgMSAwIDAwMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUXVlc3Rpb25NYXJrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04LjIyOCA5Yy41NDktMS4xNjUgMi4wMy0yIDMuNzcyLTIgMi4yMSAwIDQgMS4zNDMgNCAzIDAgMS40LTEuMjc4IDIuNTc1LTMuMDA2IDIuOTA3LS41NDIuMTA0LS45OTQuNTQtLjk5NCAxLjA5M20wIDNoLjAxTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUmVjZWlwdFJlZnVuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgMTV2LTFhNCA0IDAgMDAtNC00SDhtMCAwbDMgM20tMy0zbDMtM205IDE0VjVhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjE2bDQtMiA0IDIgNC0yIDQgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVJlY2VpcHRUYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTRsNi02bS01LjUuNWguMDFtNC45OSA1aC4wMU0xOSAyMVY1YTIgMiAwIDAwLTItMkg3YTIgMiAwIDAwLTIgMnYxNmwzLjUtMiAzLjUgMiAzLjUtMiAzLjUgMnpNMTAgOC41YS41LjUgMCAxMS0xIDAgLjUuNSAwIDAxMSAwem01IDVhLjUuNSAwIDExLTEgMCAuNS41IDAgMDExIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVSZWZyZXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDR2NWguNTgybTE1LjM1NiAyQTguMDAxIDguMDAxIDAgMDA0LjU4MiA5bTAgMEg5bTExIDExdi01aC0uNTgxbTAgMGE4LjAwMyA4LjAwMyAwIDAxLTE1LjM1Ny0ybTE1LjM1NyAySDE1XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAxMGgxMGE4IDggMCAwMTggOHYyTTMgMTBsNiA2bS02LTZsNi02XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVSZXdpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyLjA2NiAxMS4yYTEgMSAwIDAwMCAxLjZsNS4zMzQgNEExIDEgMCAwMDE5IDE2VjhhMSAxIDAgMDAtMS42LS44bC01LjMzMyA0ek00LjA2NiAxMS4yYTEgMSAwIDAwMCAxLjZsNS4zMzQgNEExIDEgMCAwMDExIDE2VjhhMSAxIDAgMDAtMS42LS44bC01LjMzNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUnNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk02IDVjNy4xOCAwIDEzIDUuODIgMTMgMTNNNiAxMWE3IDcgMCAwMTcgN20tNiAwYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNhdmVBcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMTZ2MmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ2LTdhMiAyIDAgMDEyLTJoMm0zLTRIOWEyIDIgMCAwMC0yIDJ2N2EyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMW0tMSA0bC0zIDNtMCAwbC0zLTNtMyAzVjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggN0g1YTIgMiAwIDAwLTIgMnY5YTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0yVjlhMiAyIDAgMDAtMi0yaC0zbS0xIDRsLTMgM20wIDBsLTMtM20zIDNWNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgNmwzIDFtMCAwbC0zIDlhNS4wMDIgNS4wMDIgMCAwMDYuMDAxIDBNNiA3bDMgOU02IDdsNi0ybTYgMmwzLTFtLTMgMWwtMyA5YTUuMDAyIDUuMDAyIDAgMDA2LjAwMSAwTTE4IDdsMyA5bS0zLTlsLTYtMm0wLTJ2Mm0wIDE2VjVtMCAxNkg5bTMgMGgzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQuMTIxIDE0LjEyMUwxOSAxOW0tNy03bDctN20tNyA3bC0yLjg3OSAyLjg3OU0xMiAxMkw5LjEyMSA5LjEyMW0wIDUuNzU4YTMgMyAwIDEwLTQuMjQzIDQuMjQzIDMgMyAwIDAwNC4yNDMtNC4yNDN6bTAtNS43NThhMyAzIDAgMTAtNC4yNDMtNC4yNDMgMyAzIDAgMDA0LjI0MyA0LjI0M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNlYXJjaENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCAxNmwyLjg3OS0yLjg3OW0wIDBhMyAzIDAgMTA0LjI0My00LjI0MiAzIDMgMCAwMC00LjI0MyA0LjI0MnpNMjEgMTJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIxIDIxbC02LTZtMi01YTcgNyAwIDExLTE0IDAgNyA3IDAgMDExNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2VsZWN0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggOWw0LTQgNCA0bTAgNmwtNCA0LTQtNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDEyaDE0TTUgMTJhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTRhMiAyIDAgMDEyIDJ2NGEyIDIgMCAwMS0yIDJNNSAxMmEyIDIgMCAwMC0yIDJ2NGEyIDIgMCAwMDIgMmgxNGEyIDIgMCAwMDItMnYtNGEyIDIgMCAwMC0yLTJtLTItNGguMDFNMTcgMTZoLjAxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOC42ODQgMTMuMzQyQzguODg2IDEyLjkzOCA5IDEyLjQ4MiA5IDEyYzAtLjQ4Mi0uMTE0LS45MzgtLjMxNi0xLjM0Mm0wIDIuNjg0YTMgMyAwIDExMC0yLjY4NG0wIDIuNjg0bDYuNjMyIDMuMzE2bS02LjYzMi02bDYuNjMyLTMuMzE2bTAgMGEzIDMgMCAxMDUuMzY3LTIuNjg0IDMgMyAwIDAwLTUuMzY3IDIuNjg0em0wIDkuMzE2YTMgMyAwIDEwNS4zNjggMi42ODQgMyAzIDAgMDAtNS4zNjgtMi42ODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaGllbGRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMmwyIDIgNC00bTUuNjE4LTQuMDE2QTExLjk1NSAxMS45NTUgMCAwMTEyIDIuOTQ0YTExLjk1NSAxMS45NTUgMCAwMS04LjYxOCAzLjA0QTEyLjAyIDEyLjAyIDAgMDAzIDljMCA1LjU5MSAzLjgyNCAxMC4yOSA5IDExLjYyMiA1LjE3Ni0xLjMzMiA5LTYuMDMgOS0xMS42MjIgMC0xLjA0Mi0uMTMzLTIuMDUyLS4zODItMy4wMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaGllbGRFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjAuNjE4IDUuOTg0QTExLjk1NSAxMS45NTUgMCAwMTEyIDIuOTQ0YTExLjk1NSAxMS45NTUgMCAwMS04LjYxOCAzLjA0QTEyLjAyIDEyLjAyIDAgMDAzIDljMCA1LjU5MSAzLjgyNCAxMC4yOSA5IDExLjYyMiA1LjE3Ni0xLjMzMiA5LTYuMDMgOS0xMS42MjIgMC0xLjA0Mi0uMTMzLTIuMDUyLS4zODItMy4wMTZ6TTEyIDl2Mm0wIDRoLjAxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaG9wcGluZ0JhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgMTFWN2E0IDQgMCAwMC04IDB2NE01IDloMTRsMSAxMkg0TDUgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAzaDJsLjQgMk03IDEzaDEwbDQtOEg1LjRNNyAxM0w1LjQgNU03IDEzbC0yLjI5MyAyLjI5M2MtLjYzLjYzLS4xODQgMS43MDcuNzA3IDEuNzA3SDE3bTAgMGEyIDIgMCAxMDAgNCAyIDIgMCAwMDAtNHptLTggMmEyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTb3J0QXNjZW5kaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDRoMTNNMyA4aDltLTkgNGg2bTQgMGw0LTRtMCAwbDQgNG0tNC00djEyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTb3J0RGVzY2VuZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyA0aDEzTTMgOGg5bS05IDRoOW01LTR2MTJtMCAwbC00LTRtNCA0bDQtNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3BhcmtsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgM3Y0TTMgNWg0TTYgMTd2NG0tMi0yaDRtNS0xNmwyLjI4NiA2Ljg1N0wyMSAxMmwtNS43MTQgMi4xNDNMMTMgMjFsLTIuMjg2LTYuODU3TDUgMTJsNS43MTQtMi4xNDNMMTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNwZWFrZXJwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgNS44ODJWMTkuMjRhMS43NiAxLjc2IDAgMDEtMy40MTcuNTkybC0yLjE0Ny02LjE1TTE4IDEzYTMgMyAwIDEwMC02TTUuNDM2IDEzLjY4M0E0LjAwMSA0LjAwMSAwIDAxNyA2aDEuODMyYzQuMSAwIDcuNjI1LTEuMjM0IDkuMTY4LTN2MTRjLTEuNTQzLTEuNzY2LTUuMDY3LTMtOS4xNjgtM0g3YTMuOTg4IDMuOTg4IDAgMDEtMS41NjQtLjMxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExLjA0OSAyLjkyN2MuMy0uOTIxIDEuNjAzLS45MjEgMS45MDIgMGwxLjUxOSA0LjY3NGExIDEgMCAwMC45NS42OWg0LjkxNWMuOTY5IDAgMS4zNzEgMS4yNC41ODggMS44MWwtMy45NzYgMi44ODhhMSAxIDAgMDAtLjM2MyAxLjExOGwxLjUxOCA0LjY3NGMuMy45MjItLjc1NSAxLjY4OC0xLjUzOCAxLjExOGwtMy45NzYtMi44ODhhMSAxIDAgMDAtMS4xNzYgMGwtMy45NzYgMi44ODhjLS43ODMuNTctMS44MzgtLjE5Ny0xLjUzOC0xLjExOGwxLjUxOC00LjY3NGExIDEgMCAwMC0uMzYzLTEuMTE4bC0zLjk3Ni0yLjg4OGMtLjc4NC0uNTctLjM4LTEuODEuNTg4LTEuODFoNC45MTRhMSAxIDAgMDAuOTUxLS42OWwxLjUxOS00LjY3NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVN0YXR1c09mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE4LjM2NCA1LjYzNmE5IDkgMCAwMTAgMTIuNzI4bTAgMGwtMi44MjktMi44MjltMi44MjkgMi44MjlMMjEgMjFNMTUuNTM2IDguNDY0YTUgNSAwIDAxMCA3LjA3Mm0wIDBsLTIuODI5LTIuODI5bS00LjI0MyAyLjgyOWE0Ljk3OCA0Ljk3OCAwIDAxLTEuNDE0LTIuODNtLTEuNDE0IDUuNjU4YTkgOSAwIDAxLTIuMTY3LTkuMjM4bTcuODI0IDIuMTY3YTEgMSAwIDExMS40MTQgMS40MTRtLTEuNDE0LTEuNDE0TDMgM204LjI5MyA4LjI5M2wxLjQxNCAxLjQxNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3RhdHVzT25saW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01LjYzNiAxOC4zNjRhOSA5IDAgMDEwLTEyLjcyOG0xMi43MjggMGE5IDkgMCAwMTAgMTIuNzI4bS05LjktMi44MjlhNSA1IDAgMDEwLTcuMDdtNy4wNzIgMGE1IDUgMCAwMTAgNy4wN00xMyAxMmExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMGExIDEgMCAwMTEtMWg0YTEgMSAwIDAxMSAxdjRhMSAxIDAgMDEtMSAxaC00YTEgMSAwIDAxLTEtMXYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVN1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgM3YxbTAgMTZ2MW05LTloLTFNNCAxMkgzbTE1LjM2NCA2LjM2NGwtLjcwNy0uNzA3TTYuMzQzIDYuMzQzbC0uNzA3LS43MDdtMTIuNzI4IDBsLS43MDcuNzA3TTYuMzQzIDE3LjY1N2wtLjcwNy43MDdNMTYgMTJhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTguMzY0IDUuNjM2bC0zLjUzNiAzLjUzNm0wIDUuNjU2bDMuNTM2IDMuNTM2TTkuMTcyIDkuMTcyTDUuNjM2IDUuNjM2bTMuNTM2IDkuMTkybC0zLjUzNiAzLjUzNk0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHptLTUgMGE0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTd2l0Y2hIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDdoMTJtMCAwbC00LTRtNCA0bC00IDRtMCA2SDRtMCAwbDQgNG0tNC00bDQtNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3dpdGNoVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgMTZWNG0wIDBMMyA4bTQtNGw0IDRtNiAwdjEybTAgMGw0LTRtLTQgNGwtNC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAxMGgxOE0zIDE0aDE4bS05LTR2OG0tNyAwaDE0YTIgMiAwIDAwMi0yVjhhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgN2guMDFNNyAzaDVjLjUxMiAwIDEuMDI0LjE5NSAxLjQxNC41ODZsNyA3YTIgMiAwIDAxMCAyLjgyOGwtNyA3YTIgMiAwIDAxLTIuODI4IDBsLTctN0ExLjk5NCAxLjk5NCAwIDAxMyAxMlY3YTQgNCAwIDAxNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVGVtcGxhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgNWExIDEgMCAwMTEtMWgxNGExIDEgMCAwMTEgMXYyYTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY1ek00IDEzYTEgMSAwIDAxMS0xaDZhMSAxIDAgMDExIDF2NmExIDEgMCAwMS0xIDFINWExIDEgMCAwMS0xLTF2LTZ6TTE2IDEzYTEgMSAwIDAxMS0xaDJhMSAxIDAgMDExIDF2NmExIDEgMCAwMS0xIDFoLTJhMSAxIDAgMDEtMS0xdi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggOWwzIDMtMyAzbTUgMGgzTTUgMjBoMTRhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUaHVtYkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwIDE0SDUuMjM2YTIgMiAwIDAxLTEuNzg5LTIuODk0bDMuNS03QTIgMiAwIDAxOC43MzYgM2g0LjAxOGEyIDIgMCAwMS40ODUuMDZsMy43Ni45NG0tNyAxMHY1YTIgMiAwIDAwMiAyaC4wOTZjLjUgMCAuOTA1LS40MDUuOTA1LS45MDQgMC0uNzE1LjIxMS0xLjQxMy42MDgtMi4wMDhMMTcgMTNWNG0tNyAxMGgybTUtMTBoMmEyIDIgMCAwMTIgMnY2YTIgMiAwIDAxLTIgMmgtMi41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUaHVtYlVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNCAxMGg0Ljc2NGEyIDIgMCAwMTEuNzg5IDIuODk0bC0zLjUgN0EyIDIgMCAwMTE1LjI2MyAyMWgtNC4wMTdjLS4xNjMgMC0uMzI2LS4wMi0uNDg1LS4wNkw3IDIwbTctMTBWNWEyIDIgMCAwMC0yLTJoLS4wOTVjLS41IDAtLjkwNS40MDUtLjkwNS45MDUgMCAuNzE0LS4yMTEgMS40MTItLjYwOCAyLjAwNkw3IDExdjltNy0xMGgtMk03IDIwSDVhMiAyIDAgMDEtMi0ydi02YTIgMiAwIDAxMi0yaDIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVGlja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSA1djJtMCA0djJtMCA0djJNNSA1YTIgMiAwIDAwLTIgMnYzYTIgMiAwIDExMCA0djNhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJ2LTNhMiAyIDAgMTEwLTRWN2EyIDIgMCAwMC0yLTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyA1aDEyTTkgM3YybTEuMDQ4IDkuNUExOC4wMjIgMTguMDIyIDAgMDE2LjQxMiA5bTYuMDg4IDloN00xMSAyMWw1LTEwIDUgMTBNMTIuNzUxIDVDMTEuNzgzIDEwLjc3IDguMDcgMTUuNjEgMyAxOC4xMjlcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOSA3bC0uODY3IDEyLjE0MkEyIDIgMCAwMTE2LjEzOCAyMUg3Ljg2MmEyIDIgMCAwMS0xLjk5NS0xLjg1OEw1IDdtNSA0djZtNC02djZtMS0xMFY0YTEgMSAwIDAwLTEtMWgtNGExIDEgMCAwMC0xIDF2M000IDdoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRyZW5kaW5nRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTMgMTdoOG0wIDBWOW0wIDhsLTgtOC00IDQtNi02XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUcmVuZGluZ1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA3aDhtMCAwdjhtMC04bC04IDgtNC00LTYgNlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVHJ1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTdhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwek0xOSAxN2EyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDE2VjZhMSAxIDAgMDAtMS0xSDRhMSAxIDAgMDAtMSAxdjEwYTEgMSAwIDAwMSAxaDFtOC0xYTEgMSAwIDAxLTEgMUg5bTQtMVY4YTEgMSAwIDAxMS0xaDIuNTg2YTEgMSAwIDAxLjcwNy4yOTNsMy40MTQgMy40MTRhMSAxIDAgMDEuMjkzLjcwN1YxNmExIDEgMCAwMS0xIDFoLTFtLTYtMWExIDEgMCAwMDEgMWgxTTUgMTdhMiAyIDAgMTA0IDBtLTQgMGEyIDIgMCAxMTQgMG02IDBhMiAyIDAgMTA0IDBtLTQgMGEyIDIgMCAxMTQgMFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDE2djFhMyAzIDAgMDAzIDNoMTBhMyAzIDAgMDAzLTN2LTFtLTQtOGwtNC00bTAgMEw4IDhtNC00djEyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVVc2VyQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOCA5djNtMCAwdjNtMC0zaDNtLTMgMGgtM20tMi01YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNMyAyMGE2IDYgMCAwMTEyIDB2MUgzdi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNS4xMjEgMTcuODA0QTEzLjkzNyAxMy45MzcgMCAwMTEyIDE2YzIuNSAwIDQuODQ3LjY1NSA2Ljg3OSAxLjgwNE0xNSAxMGEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6bTYgMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVVzZXJHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMjBoNXYtMmEzIDMgMCAwMC01LjM1Ni0xLjg1N00xNyAyMEg3bTEwIDB2LTJjMC0uNjU2LS4xMjYtMS4yODMtLjM1Ni0xLjg1N003IDIwSDJ2LTJhMyAzIDAgMDE1LjM1Ni0xLjg1N003IDIwdi0yYzAtLjY1Ni4xMjYtMS4yODMuMzU2LTEuODU3bTAgMGE1LjAwMiA1LjAwMiAwIDAxOS4yODggME0xNSA3YTMgMyAwIDExLTYgMCAzIDMgMCAwMTYgMHptNiAzYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNNyAxMGEyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVVc2VyUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNOSAxNGE2IDYgMCAwMC02IDZ2MWgxMnYtMWE2IDYgMCAwMC02LTZ6TTIxIDEyaC02XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNMTIgMTRhNyA3IDAgMDAtNyA3aDE0YTcgNyAwIDAwLTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVVzZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA0LjM1NGE0IDQgMCAxMTAgNS4yOTJNMTUgMjFIM3YtMWE2IDYgMCAwMTEyIDB2MXptMCAwaDZ2LTFhNiA2IDAgMDAtOS01LjE5N00xMyA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZhcmlhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00Ljg3MSA0QTE3LjkyNiAxNy45MjYgMCAwMDMgMTJjMCAyLjg3NC42NzMgNS41OSAxLjg3MSA4bTE0LjEzIDBhMTcuOTI2IDE3LjkyNiAwIDAwMS44Ny04YzAtMi44NzQtLjY3My01LjU5LTEuODctOE05IDloMS4yNDZhMSAxIDAgMDEuOTYxLjcyNWwxLjU4NiA1LjU1YTEgMSAwIDAwLjk2MS43MjVIMTVtMS03aC0uMDhhMiAyIDAgMDAtMS41MTkuNjk4TDkuNiAxNS4zMDJBMiAyIDAgMDE4LjA4IDE2SDhcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZpZGVvQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxMGw0LjU1My0yLjI3NkExIDEgMCAwMTIxIDguNjE4djYuNzY0YTEgMSAwIDAxLTEuNDQ3Ljg5NEwxNSAxNE01IDE4aDhhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZpZXdCb2FyZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTdWN20wIDEwYTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMlY3YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJtMCAxMGEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yTTkgN2EyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAybTAgMTBWN20wIDEwYTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJhMiAyIDAgMDAtMiAyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVWaWV3R3JpZEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMTR2Nm0tMy0zaDZNNiAxMGgyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjJhMiAyIDAgMDAyIDJ6bTEwIDBoMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMmgtMmEyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMnpNNiAyMGgyYTIgMiAwIDAwMi0ydi0yYTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnYyYTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVmlld0dyaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjZ6TTE0IDZhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYyYTIgMiAwIDAxLTIgMmgtMmEyIDIgMCAwMS0yLTJWNnpNNCAxNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0ydi0yek0xNCAxNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZpZXdMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDZoMTZNNCAxMGgxNk00IDE0aDE2TTQgMThoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZvbHVtZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNS41ODYgMTVINGExIDEgMCAwMS0xLTF2LTRhMSAxIDAgMDExLTFoMS41ODZsNC43MDctNC43MDdDMTAuOTIzIDMuNjYzIDEyIDQuMTA5IDEyIDV2MTRjMCAuODkxLTEuMDc3IDEuMzM3LTEuNzA3LjcwN0w1LjU4NiAxNXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3IDE0bDItMm0wIDBsMi0ybS0yIDJsLTItMm0yIDJsMiAyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVWb2x1bWVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUuNTM2IDguNDY0YTUgNSAwIDAxMCA3LjA3Mm0yLjgyOC05LjlhOSA5IDAgMDEwIDEyLjcyOE01LjU4NiAxNUg0YTEgMSAwIDAxLTEtMXYtNGExIDEgMCAwMTEtMWgxLjU4Nmw0LjcwNy00LjcwN0MxMC45MjMgMy42NjMgMTIgNC4xMDkgMTIgNXYxNGMwIC44OTEtMS4wNzcgMS4zMzctMS43MDcuNzA3TDUuNTg2IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOC4xMTEgMTYuNDA0YTUuNSA1LjUgMCAwMTcuNzc4IDBNMTIgMjBoLjAxbS03LjA4LTcuMDcxYzMuOTA0LTMuOTA1IDEwLjIzNi0zLjkwNSAxNC4xNDEgME0xLjM5NCA5LjM5M2M1Ljg1Ny01Ljg1NyAxNS4zNTUtNS44NTcgMjEuMjEzIDBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVhDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwIDE0bDItMm0wIDBsMi0ybS0yIDJsLTItMm0yIDJsMiAybTctMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTYgMThMMTggNk02IDZsMTIgMTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVpvb21JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjEgMjFsLTYtNm0yLTVhNyA3IDAgMTEtMTQgMCA3IDcgMCAwMTE0IDB6TTEwIDd2M20wIDB2M20wLTNoM20tMyAwSDdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVpvb21PdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIxIDIxbC02LTZtMi01YTcgNyAwIDExLTE0IDAgNyA3IDAgMDExNCAwek0xMyAxMEg3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbiIsImNvbnN0IENMQVNTX1BBUlRfU0VQQVJBVE9SID0gJy0nO1xuZnVuY3Rpb24gY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZykge1xuICBjb25zdCBjbGFzc01hcCA9IGNyZWF0ZUNsYXNzTWFwKGNvbmZpZyk7XG4gIGNvbnN0IHtcbiAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBzLFxuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1xuICB9ID0gY29uZmlnO1xuICBmdW5jdGlvbiBnZXRDbGFzc0dyb3VwSWQoY2xhc3NOYW1lKSB7XG4gICAgY29uc3QgY2xhc3NQYXJ0cyA9IGNsYXNzTmFtZS5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUik7XG4gICAgLy8gQ2xhc3NlcyBsaWtlIGAtaW5zZXQtMWAgcHJvZHVjZSBhbiBlbXB0eSBzdHJpbmcgYXMgZmlyc3QgY2xhc3NQYXJ0LiBXZSBhc3N1bWUgdGhhdCBjbGFzc2VzIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgY29ycmVjdGx5IGFuZCByZW1vdmUgaXQgZnJvbSBjbGFzc1BhcnRzLlxuICAgIGlmIChjbGFzc1BhcnRzWzBdID09PSAnJyAmJiBjbGFzc1BhcnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgY2xhc3NQYXJ0cy5zaGlmdCgpO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NNYXApIHx8IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpO1xuICB9XG4gIGZ1bmN0aW9uIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyhjbGFzc0dyb3VwSWQsIGhhc1Bvc3RmaXhNb2RpZmllcikge1xuICAgIGNvbnN0IGNvbmZsaWN0cyA9IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHNbY2xhc3NHcm91cElkXSB8fCBbXTtcbiAgICBpZiAoaGFzUG9zdGZpeE1vZGlmaWVyICYmIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdKSB7XG4gICAgICByZXR1cm4gWy4uLmNvbmZsaWN0cywgLi4uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF1dO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmxpY3RzO1xuICB9XG4gIHJldHVybiB7XG4gICAgZ2V0Q2xhc3NHcm91cElkLFxuICAgIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkc1xuICB9O1xufVxuZnVuY3Rpb24gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NQYXJ0T2JqZWN0KSB7XG4gIGlmIChjbGFzc1BhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QuY2xhc3NHcm91cElkO1xuICB9XG4gIGNvbnN0IGN1cnJlbnRDbGFzc1BhcnQgPSBjbGFzc1BhcnRzWzBdO1xuICBjb25zdCBuZXh0Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChjdXJyZW50Q2xhc3NQYXJ0KTtcbiAgY29uc3QgY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0ID0gbmV4dENsYXNzUGFydE9iamVjdCA/IGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMuc2xpY2UoMSksIG5leHRDbGFzc1BhcnRPYmplY3QpIDogdW5kZWZpbmVkO1xuICBpZiAoY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0KSB7XG4gICAgcmV0dXJuIGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydDtcbiAgfVxuICBpZiAoY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBjbGFzc1Jlc3QgPSBjbGFzc1BhcnRzLmpvaW4oQ0xBU1NfUEFSVF9TRVBBUkFUT1IpO1xuICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMuZmluZCgoe1xuICAgIHZhbGlkYXRvclxuICB9KSA9PiB2YWxpZGF0b3IoY2xhc3NSZXN0KSk/LmNsYXNzR3JvdXBJZDtcbn1cbmNvbnN0IGFyYml0cmFyeVByb3BlcnR5UmVnZXggPSAvXlxcWyguKylcXF0kLztcbmZ1bmN0aW9uIGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpIHtcbiAgaWYgKGFyYml0cmFyeVByb3BlcnR5UmVnZXgudGVzdChjbGFzc05hbWUpKSB7XG4gICAgY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUgPSBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LmV4ZWMoY2xhc3NOYW1lKVsxXTtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lPy5zdWJzdHJpbmcoMCwgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUuaW5kZXhPZignOicpKTtcbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIC8vIEkgdXNlIHR3byBkb3RzIGhlcmUgYmVjYXVzZSBvbmUgZG90IGlzIHVzZWQgYXMgcHJlZml4IGZvciBjbGFzcyBncm91cHMgaW4gcGx1Z2luc1xuICAgICAgcmV0dXJuICdhcmJpdHJhcnkuLicgKyBwcm9wZXJ0eTtcbiAgICB9XG4gIH1cbn1cbi8qKlxuICogRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seVxuICovXG5mdW5jdGlvbiBjcmVhdGVDbGFzc01hcChjb25maWcpIHtcbiAgY29uc3Qge1xuICAgIHRoZW1lLFxuICAgIHByZWZpeFxuICB9ID0gY29uZmlnO1xuICBjb25zdCBjbGFzc01hcCA9IHtcbiAgICBuZXh0UGFydDogbmV3IE1hcCgpLFxuICAgIHZhbGlkYXRvcnM6IFtdXG4gIH07XG4gIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzKE9iamVjdC5lbnRyaWVzKGNvbmZpZy5jbGFzc0dyb3VwcyksIHByZWZpeCk7XG4gIHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMuZm9yRWFjaCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzR3JvdXAsIGNsYXNzTWFwLCBjbGFzc0dyb3VwSWQsIHRoZW1lKTtcbiAgfSk7XG4gIHJldHVybiBjbGFzc01hcDtcbn1cbmZ1bmN0aW9uIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgY2xhc3NQYXJ0T2JqZWN0LCBjbGFzc0dyb3VwSWQsIHRoZW1lKSB7XG4gIGNsYXNzR3JvdXAuZm9yRWFjaChjbGFzc0RlZmluaXRpb24gPT4ge1xuICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0ID0gY2xhc3NEZWZpbml0aW9uID09PSAnJyA/IGNsYXNzUGFydE9iamVjdCA6IGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBjbGFzc0RlZmluaXRpb24pO1xuICAgICAgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0LmNsYXNzR3JvdXBJZCA9IGNsYXNzR3JvdXBJZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChpc1RoZW1lR2V0dGVyKGNsYXNzRGVmaW5pdGlvbikpIHtcbiAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0RlZmluaXRpb24odGhlbWUpLCBjbGFzc1BhcnRPYmplY3QsIGNsYXNzR3JvdXBJZCwgdGhlbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5wdXNoKHtcbiAgICAgICAgdmFsaWRhdG9yOiBjbGFzc0RlZmluaXRpb24sXG4gICAgICAgIGNsYXNzR3JvdXBJZFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikuZm9yRWFjaCgoW2tleSwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGtleSksIGNsYXNzR3JvdXBJZCwgdGhlbWUpO1xuICAgIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBwYXRoKSB7XG4gIGxldCBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0O1xuICBwYXRoLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKS5mb3JFYWNoKHBhdGhQYXJ0ID0+IHtcbiAgICBpZiAoIWN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuaGFzKHBhdGhQYXJ0KSkge1xuICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5zZXQocGF0aFBhcnQsIHtcbiAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICAgICAgdmFsaWRhdG9yczogW11cbiAgICAgIH0pO1xuICAgIH1cbiAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQocGF0aFBhcnQpO1xuICB9KTtcbiAgcmV0dXJuIGN1cnJlbnRDbGFzc1BhcnRPYmplY3Q7XG59XG5mdW5jdGlvbiBpc1RoZW1lR2V0dGVyKGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmMuaXNUaGVtZUdldHRlcjtcbn1cbmZ1bmN0aW9uIGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMoY2xhc3NHcm91cEVudHJpZXMsIHByZWZpeCkge1xuICBpZiAoIXByZWZpeCkge1xuICAgIHJldHVybiBjbGFzc0dyb3VwRW50cmllcztcbiAgfVxuICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXMubWFwKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cCA9IGNsYXNzR3JvdXAubWFwKGNsYXNzRGVmaW5pdGlvbiA9PiB7XG4gICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHByZWZpeCArIGNsYXNzRGVmaW5pdGlvbjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikubWFwKChba2V5LCB2YWx1ZV0pID0+IFtwcmVmaXggKyBrZXksIHZhbHVlXSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsYXNzRGVmaW5pdGlvbjtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NsYXNzR3JvdXBJZCwgcHJlZml4ZWRDbGFzc0dyb3VwXTtcbiAgfSk7XG59XG5cbi8vIExSVSBjYWNoZSBpbnNwaXJlZCBmcm9tIGhhc2hscnUgKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21pbmljdGFyci9oYXNobHJ1L2Jsb2IvdjEuMC40L2luZGV4LmpzKSBidXQgb2JqZWN0IHJlcGxhY2VkIHdpdGggTWFwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGNyZWF0ZUxydUNhY2hlKG1heENhY2hlU2l6ZSkge1xuICBpZiAobWF4Q2FjaGVTaXplIDwgMSkge1xuICAgIHJldHVybiB7XG4gICAgICBnZXQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgIHNldDogKCkgPT4ge31cbiAgICB9O1xuICB9XG4gIGxldCBjYWNoZVNpemUgPSAwO1xuICBsZXQgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGxldCBwcmV2aW91c0NhY2hlID0gbmV3IE1hcCgpO1xuICBmdW5jdGlvbiB1cGRhdGUoa2V5LCB2YWx1ZSkge1xuICAgIGNhY2hlLnNldChrZXksIHZhbHVlKTtcbiAgICBjYWNoZVNpemUrKztcbiAgICBpZiAoY2FjaGVTaXplID4gbWF4Q2FjaGVTaXplKSB7XG4gICAgICBjYWNoZVNpemUgPSAwO1xuICAgICAgcHJldmlvdXNDYWNoZSA9IGNhY2hlO1xuICAgICAgY2FjaGUgPSBuZXcgTWFwKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgZ2V0KGtleSkge1xuICAgICAgbGV0IHZhbHVlID0gY2FjaGUuZ2V0KGtleSk7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoKHZhbHVlID0gcHJldmlvdXNDYWNoZS5nZXQoa2V5KSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbmNvbnN0IElNUE9SVEFOVF9NT0RJRklFUiA9ICchJztcbmZ1bmN0aW9uIGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZykge1xuICBjb25zdCB7XG4gICAgc2VwYXJhdG9yLFxuICAgIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyID0gc2VwYXJhdG9yLmxlbmd0aCA9PT0gMTtcbiAgY29uc3QgZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgPSBzZXBhcmF0b3JbMF07XG4gIGNvbnN0IHNlcGFyYXRvckxlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGg7XG4gIC8vIHBhcnNlQ2xhc3NOYW1lIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGxhYnMvdGFpbHdpbmRjc3MvYmxvYi92My4yLjIvc3JjL3V0aWwvc3BsaXRBdFRvcExldmVsT25seS5qc1xuICBmdW5jdGlvbiBwYXJzZUNsYXNzTmFtZShjbGFzc05hbWUpIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBbXTtcbiAgICBsZXQgYnJhY2tldERlcHRoID0gMDtcbiAgICBsZXQgbW9kaWZpZXJTdGFydCA9IDA7XG4gICAgbGV0IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjbGFzc05hbWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBsZXQgY3VycmVudENoYXJhY3RlciA9IGNsYXNzTmFtZVtpbmRleF07XG4gICAgICBpZiAoYnJhY2tldERlcHRoID09PSAwKSB7XG4gICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciAmJiAoaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgfHwgY2xhc3NOYW1lLnNsaWNlKGluZGV4LCBpbmRleCArIHNlcGFyYXRvckxlbmd0aCkgPT09IHNlcGFyYXRvcikpIHtcbiAgICAgICAgICBtb2RpZmllcnMucHVzaChjbGFzc05hbWUuc2xpY2UobW9kaWZpZXJTdGFydCwgaW5kZXgpKTtcbiAgICAgICAgICBtb2RpZmllclN0YXJ0ID0gaW5kZXggKyBzZXBhcmF0b3JMZW5ndGg7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICcvJykge1xuICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID0gaW5kZXg7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnWycpIHtcbiAgICAgICAgYnJhY2tldERlcHRoKys7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICddJykge1xuICAgICAgICBicmFja2V0RGVwdGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllciA9IG1vZGlmaWVycy5sZW5ndGggPT09IDAgPyBjbGFzc05hbWUgOiBjbGFzc05hbWUuc3Vic3RyaW5nKG1vZGlmaWVyU3RhcnQpO1xuICAgIGNvbnN0IGhhc0ltcG9ydGFudE1vZGlmaWVyID0gYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdGFydHNXaXRoKElNUE9SVEFOVF9NT0RJRklFUik7XG4gICAgY29uc3QgYmFzZUNsYXNzTmFtZSA9IGhhc0ltcG9ydGFudE1vZGlmaWVyID8gYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdWJzdHJpbmcoMSkgOiBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyO1xuICAgIGNvbnN0IG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAmJiBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA+IG1vZGlmaWVyU3RhcnQgPyBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAtIG1vZGlmaWVyU3RhcnQgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGlmaWVycyxcbiAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb25cbiAgICB9O1xuICB9XG4gIGlmIChleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBwYXJzZUNsYXNzTmFtZUV4cGVyaW1lbnRhbChjbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSh7XG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgcGFyc2VDbGFzc05hbWVcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIHBhcnNlQ2xhc3NOYW1lO1xufVxuLyoqXG4gKiBTb3J0cyBtb2RpZmllcnMgYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBzY2hlbWE6XG4gKiAtIFByZWRlZmluZWQgbW9kaWZpZXJzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHlcbiAqIC0gV2hlbiBhbiBhcmJpdHJhcnkgdmFyaWFudCBhcHBlYXJzLCBpdCBtdXN0IGJlIHByZXNlcnZlZCB3aGljaCBtb2RpZmllcnMgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgaXRcbiAqL1xuZnVuY3Rpb24gc29ydE1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgaWYgKG1vZGlmaWVycy5sZW5ndGggPD0gMSkge1xuICAgIHJldHVybiBtb2RpZmllcnM7XG4gIH1cbiAgY29uc3Qgc29ydGVkTW9kaWZpZXJzID0gW107XG4gIGxldCB1bnNvcnRlZE1vZGlmaWVycyA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChtb2RpZmllciA9PiB7XG4gICAgY29uc3QgaXNBcmJpdHJhcnlWYXJpYW50ID0gbW9kaWZpZXJbMF0gPT09ICdbJztcbiAgICBpZiAoaXNBcmJpdHJhcnlWYXJpYW50KSB7XG4gICAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCksIG1vZGlmaWVyKTtcbiAgICAgIHVuc29ydGVkTW9kaWZpZXJzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc29ydGVkTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSk7XG4gIHJldHVybiBzb3J0ZWRNb2RpZmllcnM7XG59XG5mdW5jdGlvbiBjcmVhdGVDb25maWdVdGlscyhjb25maWcpIHtcbiAgcmV0dXJuIHtcbiAgICBjYWNoZTogY3JlYXRlTHJ1Q2FjaGUoY29uZmlnLmNhY2hlU2l6ZSksXG4gICAgcGFyc2VDbGFzc05hbWU6IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZyksXG4gICAgLi4uY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZylcbiAgfTtcbn1cbmNvbnN0IFNQTElUX0NMQVNTRVNfUkVHRVggPSAvXFxzKy87XG5mdW5jdGlvbiBtZXJnZUNsYXNzTGlzdChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKSB7XG4gIGNvbnN0IHtcbiAgICBwYXJzZUNsYXNzTmFtZSxcbiAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzXG4gIH0gPSBjb25maWdVdGlscztcbiAgLyoqXG4gICAqIFNldCBvZiBjbGFzc0dyb3VwSWRzIGluIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqIGB7aW1wb3J0YW50TW9kaWZpZXJ9e3ZhcmlhbnRNb2RpZmllcnN9e2NsYXNzR3JvdXBJZH1gXG4gICAqIEBleGFtcGxlICdmbG9hdCdcbiAgICogQGV4YW1wbGUgJ2hvdmVyOmZvY3VzOmJnLWNvbG9yJ1xuICAgKiBAZXhhbXBsZSAnbWQ6IXByJ1xuICAgKi9cbiAgY29uc3QgY2xhc3NHcm91cHNJbkNvbmZsaWN0ID0gbmV3IFNldCgpO1xuICByZXR1cm4gY2xhc3NMaXN0LnRyaW0oKS5zcGxpdChTUExJVF9DTEFTU0VTX1JFR0VYKS5tYXAob3JpZ2luYWxDbGFzc05hbWUgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG1vZGlmaWVycyxcbiAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb25cbiAgICB9ID0gcGFyc2VDbGFzc05hbWUob3JpZ2luYWxDbGFzc05hbWUpO1xuICAgIGxldCBoYXNQb3N0Zml4TW9kaWZpZXIgPSBCb29sZWFuKG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pO1xuICAgIGxldCBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoaGFzUG9zdGZpeE1vZGlmaWVyID8gYmFzZUNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbikgOiBiYXNlQ2xhc3NOYW1lKTtcbiAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgaWYgKCFoYXNQb3N0Zml4TW9kaWZpZXIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpc1RhaWx3aW5kQ2xhc3M6IGZhbHNlLFxuICAgICAgICAgIG9yaWdpbmFsQ2xhc3NOYW1lXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoYmFzZUNsYXNzTmFtZSk7XG4gICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlzVGFpbHdpbmRDbGFzczogZmFsc2UsXG4gICAgICAgICAgb3JpZ2luYWxDbGFzc05hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGhhc1Bvc3RmaXhNb2RpZmllciA9IGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB2YXJpYW50TW9kaWZpZXIgPSBzb3J0TW9kaWZpZXJzKG1vZGlmaWVycykuam9pbignOicpO1xuICAgIGNvbnN0IG1vZGlmaWVySWQgPSBoYXNJbXBvcnRhbnRNb2RpZmllciA/IHZhcmlhbnRNb2RpZmllciArIElNUE9SVEFOVF9NT0RJRklFUiA6IHZhcmlhbnRNb2RpZmllcjtcbiAgICByZXR1cm4ge1xuICAgICAgaXNUYWlsd2luZENsYXNzOiB0cnVlLFxuICAgICAgbW9kaWZpZXJJZCxcbiAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgIG9yaWdpbmFsQ2xhc3NOYW1lLFxuICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyXG4gICAgfTtcbiAgfSkucmV2ZXJzZSgpXG4gIC8vIExhc3QgY2xhc3MgaW4gY29uZmxpY3Qgd2lucywgc28gd2UgbmVlZCB0byBmaWx0ZXIgY29uZmxpY3RpbmcgY2xhc3NlcyBpbiByZXZlcnNlIG9yZGVyLlxuICAuZmlsdGVyKHBhcnNlZCA9PiB7XG4gICAgaWYgKCFwYXJzZWQuaXNUYWlsd2luZENsYXNzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3Qge1xuICAgICAgbW9kaWZpZXJJZCxcbiAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgIGhhc1Bvc3RmaXhNb2RpZmllclxuICAgIH0gPSBwYXJzZWQ7XG4gICAgY29uc3QgY2xhc3NJZCA9IG1vZGlmaWVySWQgKyBjbGFzc0dyb3VwSWQ7XG4gICAgaWYgKGNsYXNzR3JvdXBzSW5Db25mbGljdC5oYXMoY2xhc3NJZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LmFkZChjbGFzc0lkKTtcbiAgICBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpLmZvckVhY2goZ3JvdXAgPT4gY2xhc3NHcm91cHNJbkNvbmZsaWN0LmFkZChtb2RpZmllcklkICsgZ3JvdXApKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSkucmV2ZXJzZSgpLm1hcChwYXJzZWQgPT4gcGFyc2VkLm9yaWdpbmFsQ2xhc3NOYW1lKS5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeCBhbmQgbW9kaWZpZWQgdG8gc3VpdCB0aGUgbmVlZHMgb2YgdGFpbHdpbmQtbWVyZ2UgYmV0dGVyLlxuICpcbiAqIFNwZWNpZmljYWxseTpcbiAqIC0gUnVudGltZSBjb2RlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL3NyYy9pbmRleC5qc1xuICogLSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL2Nsc3guZC50c1xuICpcbiAqIE9yaWdpbmFsIGNvZGUgaGFzIE1JVCBsaWNlbnNlOiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqL1xuZnVuY3Rpb24gdHdKb2luKCkge1xuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgYXJndW1lbnQ7XG4gIGxldCByZXNvbHZlZFZhbHVlO1xuICBsZXQgc3RyaW5nID0gJyc7XG4gIHdoaWxlIChpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBpZiAoYXJndW1lbnQgPSBhcmd1bWVudHNbaW5kZXgrK10pIHtcbiAgICAgIGlmIChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShhcmd1bWVudCkpIHtcbiAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKTtcbiAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiB0b1ZhbHVlKG1peCkge1xuICBpZiAodHlwZW9mIG1peCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbWl4O1xuICB9XG4gIGxldCByZXNvbHZlZFZhbHVlO1xuICBsZXQgc3RyaW5nID0gJyc7XG4gIGZvciAobGV0IGsgPSAwOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG4gICAgaWYgKG1peFtrXSkge1xuICAgICAgaWYgKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKG1peFtrXSkpIHtcbiAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKTtcbiAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBjcmVhdGVUYWlsd2luZE1lcmdlKGNyZWF0ZUNvbmZpZ0ZpcnN0LCAuLi5jcmVhdGVDb25maWdSZXN0KSB7XG4gIGxldCBjb25maWdVdGlscztcbiAgbGV0IGNhY2hlR2V0O1xuICBsZXQgY2FjaGVTZXQ7XG4gIGxldCBmdW5jdGlvblRvQ2FsbCA9IGluaXRUYWlsd2luZE1lcmdlO1xuICBmdW5jdGlvbiBpbml0VGFpbHdpbmRNZXJnZShjbGFzc0xpc3QpIHtcbiAgICBjb25zdCBjb25maWcgPSBjcmVhdGVDb25maWdSZXN0LnJlZHVjZSgocHJldmlvdXNDb25maWcsIGNyZWF0ZUNvbmZpZ0N1cnJlbnQpID0+IGNyZWF0ZUNvbmZpZ0N1cnJlbnQocHJldmlvdXNDb25maWcpLCBjcmVhdGVDb25maWdGaXJzdCgpKTtcbiAgICBjb25maWdVdGlscyA9IGNyZWF0ZUNvbmZpZ1V0aWxzKGNvbmZpZyk7XG4gICAgY2FjaGVHZXQgPSBjb25maWdVdGlscy5jYWNoZS5nZXQ7XG4gICAgY2FjaGVTZXQgPSBjb25maWdVdGlscy5jYWNoZS5zZXQ7XG4gICAgZnVuY3Rpb25Ub0NhbGwgPSB0YWlsd2luZE1lcmdlO1xuICAgIHJldHVybiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdCk7XG4gIH1cbiAgZnVuY3Rpb24gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3QpIHtcbiAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZUdldChjbGFzc0xpc3QpO1xuICAgIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IG1lcmdlQ2xhc3NMaXN0KGNsYXNzTGlzdCwgY29uZmlnVXRpbHMpO1xuICAgIGNhY2hlU2V0KGNsYXNzTGlzdCwgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiBjYWxsVGFpbHdpbmRNZXJnZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub0NhbGwodHdKb2luLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuICB9O1xufVxuZnVuY3Rpb24gZnJvbVRoZW1lKGtleSkge1xuICBjb25zdCB0aGVtZUdldHRlciA9IHRoZW1lID0+IHRoZW1lW2tleV0gfHwgW107XG4gIHRoZW1lR2V0dGVyLmlzVGhlbWVHZXR0ZXIgPSB0cnVlO1xuICByZXR1cm4gdGhlbWVHZXR0ZXI7XG59XG5jb25zdCBhcmJpdHJhcnlWYWx1ZVJlZ2V4ID0gL15cXFsoPzooW2Etei1dKyk6KT8oLispXFxdJC9pO1xuY29uc3QgZnJhY3Rpb25SZWdleCA9IC9eXFxkK1xcL1xcZCskLztcbmNvbnN0IHN0cmluZ0xlbmd0aHMgPSAvKiNfX1BVUkVfXyovbmV3IFNldChbJ3B4JywgJ2Z1bGwnLCAnc2NyZWVuJ10pO1xuY29uc3QgdHNoaXJ0VW5pdFJlZ2V4ID0gL14oXFxkKyhcXC5cXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkLztcbmNvbnN0IGxlbmd0aFVuaXRSZWdleCA9IC9cXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcXGIoY2FsY3xtaW58bWF4fGNsYW1wKVxcKC4rXFwpfF4wJC87XG5jb25zdCBjb2xvckZ1bmN0aW9uUmVnZXggPSAvXihyZ2JhP3xoc2xhP3xod2J8KG9rKT8obGFifGxjaCkpXFwoLitcXCkkLztcbi8vIFNoYWRvdyBhbHdheXMgYmVnaW5zIHdpdGggeCBhbmQgeSBvZmZzZXQgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUgb3B0aW9uYWxseSBwcmVwZW5kZWQgYnkgaW5zZXRcbmNvbnN0IHNoYWRvd1JlZ2V4ID0gL14oaW5zZXRfKT8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKV8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKS87XG5jb25zdCBpbWFnZVJlZ2V4ID0gL14odXJsfGltYWdlfGltYWdlLXNldHxjcm9zcy1mYWRlfGVsZW1lbnR8KHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsfGNvbmljKS1ncmFkaWVudClcXCguK1xcKSQvO1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSB8fCBzdHJpbmdMZW5ndGhzLmhhcyh2YWx1ZSkgfHwgZnJhY3Rpb25SZWdleC50ZXN0KHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGlzQXJiaXRyYXJ5TGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbGVuZ3RoJywgaXNMZW5ndGhPbmx5KTtcbn1cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiBCb29sZWFuKHZhbHVlKSAmJiAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpO1xufVxuZnVuY3Rpb24gaXNBcmJpdHJhcnlOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdudW1iZXInLCBpc051bWJlcik7XG59XG5mdW5jdGlvbiBpc0ludGVnZXIodmFsdWUpIHtcbiAgcmV0dXJuIEJvb2xlYW4odmFsdWUpICYmIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKHZhbHVlKSk7XG59XG5mdW5jdGlvbiBpc1BlcmNlbnQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLmVuZHNXaXRoKCclJykgJiYgaXNOdW1iZXIodmFsdWUuc2xpY2UoMCwgLTEpKTtcbn1cbmZ1bmN0aW9uIGlzQXJiaXRyYXJ5VmFsdWUodmFsdWUpIHtcbiAgcmV0dXJuIGFyYml0cmFyeVZhbHVlUmVnZXgudGVzdCh2YWx1ZSk7XG59XG5mdW5jdGlvbiBpc1RzaGlydFNpemUodmFsdWUpIHtcbiAgcmV0dXJuIHRzaGlydFVuaXRSZWdleC50ZXN0KHZhbHVlKTtcbn1cbmNvbnN0IHNpemVMYWJlbHMgPSAvKiNfX1BVUkVfXyovbmV3IFNldChbJ2xlbmd0aCcsICdzaXplJywgJ3BlcmNlbnRhZ2UnXSk7XG5mdW5jdGlvbiBpc0FyYml0cmFyeVNpemUodmFsdWUpIHtcbiAgcmV0dXJuIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIHNpemVMYWJlbHMsIGlzTmV2ZXIpO1xufVxuZnVuY3Rpb24gaXNBcmJpdHJhcnlQb3NpdGlvbih2YWx1ZSkge1xuICByZXR1cm4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ3Bvc2l0aW9uJywgaXNOZXZlcik7XG59XG5jb25zdCBpbWFnZUxhYmVscyA9IC8qI19fUFVSRV9fKi9uZXcgU2V0KFsnaW1hZ2UnLCAndXJsJ10pO1xuZnVuY3Rpb24gaXNBcmJpdHJhcnlJbWFnZSh2YWx1ZSkge1xuICByZXR1cm4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgaW1hZ2VMYWJlbHMsIGlzSW1hZ2UpO1xufVxuZnVuY3Rpb24gaXNBcmJpdHJhcnlTaGFkb3codmFsdWUpIHtcbiAgcmV0dXJuIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICcnLCBpc1NoYWRvdyk7XG59XG5mdW5jdGlvbiBpc0FueSgpIHtcbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBsYWJlbCwgdGVzdFZhbHVlKSB7XG4gIGNvbnN0IHJlc3VsdCA9IGFyYml0cmFyeVZhbHVlUmVnZXguZXhlYyh2YWx1ZSk7XG4gIGlmIChyZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0WzFdKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IHJlc3VsdFsxXSA9PT0gbGFiZWwgOiBsYWJlbC5oYXMocmVzdWx0WzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRlc3RWYWx1ZShyZXN1bHRbMl0pO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzTGVuZ3RoT25seSh2YWx1ZSkge1xuICAvLyBgY29sb3JGdW5jdGlvblJlZ2V4YCBjaGVjayBpcyBuZWNlc3NhcnkgYmVjYXVzZSBjb2xvciBmdW5jdGlvbnMgY2FuIGhhdmUgcGVyY2VudGFnZXMgaW4gdGhlbSB3aGljaCB3aGljaCB3b3VsZCBiZSBpbmNvcnJlY3RseSBjbGFzc2lmaWVkIGFzIGxlbmd0aHMuXG4gIC8vIEZvciBleGFtcGxlLCBgaHNsKDAgMCUgMCUpYCB3b3VsZCBiZSBjbGFzc2lmaWVkIGFzIGEgbGVuZ3RoIHdpdGhvdXQgdGhpcyBjaGVjay5cbiAgLy8gSSBjb3VsZCBhbHNvIHVzZSBsb29rYmVoaW5kIGFzc2VydGlvbiBpbiBgbGVuZ3RoVW5pdFJlZ2V4YCBidXQgdGhhdCBpc24ndCBzdXBwb3J0ZWQgd2lkZWx5IGVub3VnaC5cbiAgcmV0dXJuIGxlbmd0aFVuaXRSZWdleC50ZXN0KHZhbHVlKSAmJiAhY29sb3JGdW5jdGlvblJlZ2V4LnRlc3QodmFsdWUpO1xufVxuZnVuY3Rpb24gaXNOZXZlcigpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaXNTaGFkb3codmFsdWUpIHtcbiAgcmV0dXJuIHNoYWRvd1JlZ2V4LnRlc3QodmFsdWUpO1xufVxuZnVuY3Rpb24gaXNJbWFnZSh2YWx1ZSkge1xuICByZXR1cm4gaW1hZ2VSZWdleC50ZXN0KHZhbHVlKTtcbn1cbmNvbnN0IHZhbGlkYXRvcnMgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmRlZmluZVByb3BlcnR5KHtcbiAgX19wcm90b19fOiBudWxsLFxuICBpc0FueSxcbiAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgaXNBcmJpdHJhcnlMZW5ndGgsXG4gIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICBpc0FyYml0cmFyeVBvc2l0aW9uLFxuICBpc0FyYml0cmFyeVNoYWRvdyxcbiAgaXNBcmJpdHJhcnlTaXplLFxuICBpc0FyYml0cmFyeVZhbHVlLFxuICBpc0ludGVnZXIsXG4gIGlzTGVuZ3RoLFxuICBpc051bWJlcixcbiAgaXNQZXJjZW50LFxuICBpc1RzaGlydFNpemVcbn0sIFN5bWJvbC50b1N0cmluZ1RhZywge1xuICB2YWx1ZTogJ01vZHVsZSdcbn0pO1xuZnVuY3Rpb24gZ2V0RGVmYXVsdENvbmZpZygpIHtcbiAgY29uc3QgY29sb3JzID0gZnJvbVRoZW1lKCdjb2xvcnMnKTtcbiAgY29uc3Qgc3BhY2luZyA9IGZyb21UaGVtZSgnc3BhY2luZycpO1xuICBjb25zdCBibHVyID0gZnJvbVRoZW1lKCdibHVyJyk7XG4gIGNvbnN0IGJyaWdodG5lc3MgPSBmcm9tVGhlbWUoJ2JyaWdodG5lc3MnKTtcbiAgY29uc3QgYm9yZGVyQ29sb3IgPSBmcm9tVGhlbWUoJ2JvcmRlckNvbG9yJyk7XG4gIGNvbnN0IGJvcmRlclJhZGl1cyA9IGZyb21UaGVtZSgnYm9yZGVyUmFkaXVzJyk7XG4gIGNvbnN0IGJvcmRlclNwYWNpbmcgPSBmcm9tVGhlbWUoJ2JvcmRlclNwYWNpbmcnKTtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSBmcm9tVGhlbWUoJ2JvcmRlcldpZHRoJyk7XG4gIGNvbnN0IGNvbnRyYXN0ID0gZnJvbVRoZW1lKCdjb250cmFzdCcpO1xuICBjb25zdCBncmF5c2NhbGUgPSBmcm9tVGhlbWUoJ2dyYXlzY2FsZScpO1xuICBjb25zdCBodWVSb3RhdGUgPSBmcm9tVGhlbWUoJ2h1ZVJvdGF0ZScpO1xuICBjb25zdCBpbnZlcnQgPSBmcm9tVGhlbWUoJ2ludmVydCcpO1xuICBjb25zdCBnYXAgPSBmcm9tVGhlbWUoJ2dhcCcpO1xuICBjb25zdCBncmFkaWVudENvbG9yU3RvcHMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wcycpO1xuICBjb25zdCBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMnKTtcbiAgY29uc3QgaW5zZXQgPSBmcm9tVGhlbWUoJ2luc2V0Jyk7XG4gIGNvbnN0IG1hcmdpbiA9IGZyb21UaGVtZSgnbWFyZ2luJyk7XG4gIGNvbnN0IG9wYWNpdHkgPSBmcm9tVGhlbWUoJ29wYWNpdHknKTtcbiAgY29uc3QgcGFkZGluZyA9IGZyb21UaGVtZSgncGFkZGluZycpO1xuICBjb25zdCBzYXR1cmF0ZSA9IGZyb21UaGVtZSgnc2F0dXJhdGUnKTtcbiAgY29uc3Qgc2NhbGUgPSBmcm9tVGhlbWUoJ3NjYWxlJyk7XG4gIGNvbnN0IHNlcGlhID0gZnJvbVRoZW1lKCdzZXBpYScpO1xuICBjb25zdCBza2V3ID0gZnJvbVRoZW1lKCdza2V3Jyk7XG4gIGNvbnN0IHNwYWNlID0gZnJvbVRoZW1lKCdzcGFjZScpO1xuICBjb25zdCB0cmFuc2xhdGUgPSBmcm9tVGhlbWUoJ3RyYW5zbGF0ZScpO1xuICBjb25zdCBnZXRPdmVyc2Nyb2xsID0gKCkgPT4gWydhdXRvJywgJ2NvbnRhaW4nLCAnbm9uZSddO1xuICBjb25zdCBnZXRPdmVyZmxvdyA9ICgpID0+IFsnYXV0bycsICdoaWRkZW4nLCAnY2xpcCcsICd2aXNpYmxlJywgJ3Njcm9sbCddO1xuICBjb25zdCBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXTtcbiAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkgPSAoKSA9PiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ107XG4gIGNvbnN0IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSA9ICgpID0+IFsnJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXTtcbiAgY29uc3QgZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV07XG4gIGNvbnN0IGdldFBvc2l0aW9ucyA9ICgpID0+IFsnYm90dG9tJywgJ2NlbnRlcicsICdsZWZ0JywgJ2xlZnQtYm90dG9tJywgJ2xlZnQtdG9wJywgJ3JpZ2h0JywgJ3JpZ2h0LWJvdHRvbScsICdyaWdodC10b3AnLCAndG9wJ107XG4gIGNvbnN0IGdldExpbmVTdHlsZXMgPSAoKSA9PiBbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ25vbmUnXTtcbiAgY29uc3QgZ2V0QmxlbmRNb2RlcyA9ICgpID0+IFsnbm9ybWFsJywgJ211bHRpcGx5JywgJ3NjcmVlbicsICdvdmVybGF5JywgJ2RhcmtlbicsICdsaWdodGVuJywgJ2NvbG9yLWRvZGdlJywgJ2NvbG9yLWJ1cm4nLCAnaGFyZC1saWdodCcsICdzb2Z0LWxpZ2h0JywgJ2RpZmZlcmVuY2UnLCAnZXhjbHVzaW9uJywgJ2h1ZScsICdzYXR1cmF0aW9uJywgJ2NvbG9yJywgJ2x1bWlub3NpdHknXTtcbiAgY29uc3QgZ2V0QWxpZ24gPSAoKSA9PiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmV0d2VlbicsICdhcm91bmQnLCAnZXZlbmx5JywgJ3N0cmV0Y2gnXTtcbiAgY29uc3QgZ2V0WmVyb0FuZEVtcHR5ID0gKCkgPT4gWycnLCAnMCcsIGlzQXJiaXRyYXJ5VmFsdWVdO1xuICBjb25zdCBnZXRCcmVha3MgPSAoKSA9PiBbJ2F1dG8nLCAnYXZvaWQnLCAnYWxsJywgJ2F2b2lkLXBhZ2UnLCAncGFnZScsICdsZWZ0JywgJ3JpZ2h0JywgJ2NvbHVtbiddO1xuICBjb25zdCBnZXROdW1iZXIgPSAoKSA9PiBbaXNOdW1iZXIsIGlzQXJiaXRyYXJ5TnVtYmVyXTtcbiAgY29uc3QgZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5ID0gKCkgPT4gW2lzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXTtcbiAgcmV0dXJuIHtcbiAgICBjYWNoZVNpemU6IDUwMCxcbiAgICBzZXBhcmF0b3I6ICc6JyxcbiAgICB0aGVtZToge1xuICAgICAgY29sb3JzOiBbaXNBbnldLFxuICAgICAgc3BhY2luZzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICBibHVyOiBbJ25vbmUnLCAnJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgIGJyaWdodG5lc3M6IGdldE51bWJlcigpLFxuICAgICAgYm9yZGVyQ29sb3I6IFtjb2xvcnNdLFxuICAgICAgYm9yZGVyUmFkaXVzOiBbJ25vbmUnLCAnJywgJ2Z1bGwnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgYm9yZGVyU3BhY2luZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIGJvcmRlcldpZHRoOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSxcbiAgICAgIGNvbnRyYXN0OiBnZXROdW1iZXIoKSxcbiAgICAgIGdyYXlzY2FsZTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICBodWVSb3RhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgaW52ZXJ0OiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgIGdhcDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIGdyYWRpZW50Q29sb3JTdG9wczogW2NvbG9yc10sXG4gICAgICBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uczogW2lzUGVyY2VudCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgaW5zZXQ6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgbWFyZ2luOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgIG9wYWNpdHk6IGdldE51bWJlcigpLFxuICAgICAgcGFkZGluZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIHNhdHVyYXRlOiBnZXROdW1iZXIoKSxcbiAgICAgIHNjYWxlOiBnZXROdW1iZXIoKSxcbiAgICAgIHNlcGlhOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgIHNrZXc6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgc3BhY2U6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICB0cmFuc2xhdGU6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICB9LFxuICAgIGNsYXNzR3JvdXBzOiB7XG4gICAgICAvLyBMYXlvdXRcbiAgICAgIC8qKlxuICAgICAgICogQXNwZWN0IFJhdGlvXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXNwZWN0LXJhdGlvXG4gICAgICAgKi9cbiAgICAgIGFzcGVjdDogW3tcbiAgICAgICAgYXNwZWN0OiBbJ2F1dG8nLCAnc3F1YXJlJywgJ3ZpZGVvJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDb250YWluZXJcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250YWluZXJcbiAgICAgICAqL1xuICAgICAgY29udGFpbmVyOiBbJ2NvbnRhaW5lciddLFxuICAgICAgLyoqXG4gICAgICAgKiBDb2x1bW5zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29sdW1uc1xuICAgICAgICovXG4gICAgICBjb2x1bW5zOiBbe1xuICAgICAgICBjb2x1bW5zOiBbaXNUc2hpcnRTaXplXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJyZWFrIEFmdGVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYWZ0ZXJcbiAgICAgICAqL1xuICAgICAgJ2JyZWFrLWFmdGVyJzogW3tcbiAgICAgICAgJ2JyZWFrLWFmdGVyJzogZ2V0QnJlYWtzKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCcmVhayBCZWZvcmVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1iZWZvcmVcbiAgICAgICAqL1xuICAgICAgJ2JyZWFrLWJlZm9yZSc6IFt7XG4gICAgICAgICdicmVhay1iZWZvcmUnOiBnZXRCcmVha3MoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJyZWFrIEluc2lkZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWluc2lkZVxuICAgICAgICovXG4gICAgICAnYnJlYWstaW5zaWRlJzogW3tcbiAgICAgICAgJ2JyZWFrLWluc2lkZSc6IFsnYXV0bycsICdhdm9pZCcsICdhdm9pZC1wYWdlJywgJ2F2b2lkLWNvbHVtbiddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm94IERlY29yYXRpb24gQnJlYWtcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtZGVjb3JhdGlvbi1icmVha1xuICAgICAgICovXG4gICAgICAnYm94LWRlY29yYXRpb24nOiBbe1xuICAgICAgICAnYm94LWRlY29yYXRpb24nOiBbJ3NsaWNlJywgJ2Nsb25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3ggU2l6aW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNpemluZ1xuICAgICAgICovXG4gICAgICBib3g6IFt7XG4gICAgICAgIGJveDogWydib3JkZXInLCAnY29udGVudCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGlzcGxheVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Rpc3BsYXlcbiAgICAgICAqL1xuICAgICAgZGlzcGxheTogWydibG9jaycsICdpbmxpbmUtYmxvY2snLCAnaW5saW5lJywgJ2ZsZXgnLCAnaW5saW5lLWZsZXgnLCAndGFibGUnLCAnaW5saW5lLXRhYmxlJywgJ3RhYmxlLWNhcHRpb24nLCAndGFibGUtY2VsbCcsICd0YWJsZS1jb2x1bW4nLCAndGFibGUtY29sdW1uLWdyb3VwJywgJ3RhYmxlLWZvb3Rlci1ncm91cCcsICd0YWJsZS1oZWFkZXItZ3JvdXAnLCAndGFibGUtcm93LWdyb3VwJywgJ3RhYmxlLXJvdycsICdmbG93LXJvb3QnLCAnZ3JpZCcsICdpbmxpbmUtZ3JpZCcsICdjb250ZW50cycsICdsaXN0LWl0ZW0nLCAnaGlkZGVuJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZsb2F0c1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Zsb2F0XG4gICAgICAgKi9cbiAgICAgIGZsb2F0OiBbe1xuICAgICAgICBmbG9hdDogWydyaWdodCcsICdsZWZ0JywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDbGVhclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NsZWFyXG4gICAgICAgKi9cbiAgICAgIGNsZWFyOiBbe1xuICAgICAgICBjbGVhcjogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdGgnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIElzb2xhdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2lzb2xhdGlvblxuICAgICAgICovXG4gICAgICBpc29sYXRpb246IFsnaXNvbGF0ZScsICdpc29sYXRpb24tYXV0byddLFxuICAgICAgLyoqXG4gICAgICAgKiBPYmplY3QgRml0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LWZpdFxuICAgICAgICovXG4gICAgICAnb2JqZWN0LWZpdCc6IFt7XG4gICAgICAgIG9iamVjdDogWydjb250YWluJywgJ2NvdmVyJywgJ2ZpbGwnLCAnbm9uZScsICdzY2FsZS1kb3duJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPYmplY3QgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtcG9zaXRpb25cbiAgICAgICAqL1xuICAgICAgJ29iamVjdC1wb3NpdGlvbic6IFt7XG4gICAgICAgIG9iamVjdDogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJmbG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAqL1xuICAgICAgb3ZlcmZsb3c6IFt7XG4gICAgICAgIG92ZXJmbG93OiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcmZsb3cgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgKi9cbiAgICAgICdvdmVyZmxvdy14JzogW3tcbiAgICAgICAgJ292ZXJmbG93LXgnOiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcmZsb3cgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgKi9cbiAgICAgICdvdmVyZmxvdy15JzogW3tcbiAgICAgICAgJ292ZXJmbG93LXknOiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAqL1xuICAgICAgb3ZlcnNjcm9sbDogW3tcbiAgICAgICAgb3ZlcnNjcm9sbDogZ2V0T3ZlcnNjcm9sbCgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICovXG4gICAgICAnb3ZlcnNjcm9sbC14JzogW3tcbiAgICAgICAgJ292ZXJzY3JvbGwteCc6IGdldE92ZXJzY3JvbGwoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAqL1xuICAgICAgJ292ZXJzY3JvbGwteSc6IFt7XG4gICAgICAgICdvdmVyc2Nyb2xsLXknOiBnZXRPdmVyc2Nyb2xsKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Bvc2l0aW9uXG4gICAgICAgKi9cbiAgICAgIHBvc2l0aW9uOiBbJ3N0YXRpYycsICdmaXhlZCcsICdhYnNvbHV0ZScsICdyZWxhdGl2ZScsICdzdGlja3knXSxcbiAgICAgIC8qKlxuICAgICAgICogVG9wIC8gUmlnaHQgLyBCb3R0b20gLyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIGluc2V0OiBbe1xuICAgICAgICBpbnNldDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpZ2h0IC8gTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICAnaW5zZXQteCc6IFt7XG4gICAgICAgICdpbnNldC14JzogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvcCAvIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICAnaW5zZXQteSc6IFt7XG4gICAgICAgICdpbnNldC15JzogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIHN0YXJ0OiBbe1xuICAgICAgICBzdGFydDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBlbmQ6IFt7XG4gICAgICAgIGVuZDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICB0b3A6IFt7XG4gICAgICAgIHRvcDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIHJpZ2h0OiBbe1xuICAgICAgICByaWdodDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBib3R0b206IFt7XG4gICAgICAgIGJvdHRvbTogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgbGVmdDogW3tcbiAgICAgICAgbGVmdDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFZpc2liaWxpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92aXNpYmlsaXR5XG4gICAgICAgKi9cbiAgICAgIHZpc2liaWxpdHk6IFsndmlzaWJsZScsICdpbnZpc2libGUnLCAnY29sbGFwc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogWi1JbmRleFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3otaW5kZXhcbiAgICAgICAqL1xuICAgICAgejogW3tcbiAgICAgICAgejogWydhdXRvJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBGbGV4Ym94IGFuZCBHcmlkXG4gICAgICAvKipcbiAgICAgICAqIEZsZXggQmFzaXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWJhc2lzXG4gICAgICAgKi9cbiAgICAgIGJhc2lzOiBbe1xuICAgICAgICBiYXNpczogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IERpcmVjdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZGlyZWN0aW9uXG4gICAgICAgKi9cbiAgICAgICdmbGV4LWRpcmVjdGlvbic6IFt7XG4gICAgICAgIGZsZXg6IFsncm93JywgJ3Jvdy1yZXZlcnNlJywgJ2NvbCcsICdjb2wtcmV2ZXJzZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRmxleCBXcmFwXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC13cmFwXG4gICAgICAgKi9cbiAgICAgICdmbGV4LXdyYXAnOiBbe1xuICAgICAgICBmbGV4OiBbJ3dyYXAnLCAnd3JhcC1yZXZlcnNlJywgJ25vd3JhcCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRmxleFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXhcbiAgICAgICAqL1xuICAgICAgZmxleDogW3tcbiAgICAgICAgZmxleDogWycxJywgJ2F1dG8nLCAnaW5pdGlhbCcsICdub25lJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IEdyb3dcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWdyb3dcbiAgICAgICAqL1xuICAgICAgZ3JvdzogW3tcbiAgICAgICAgZ3JvdzogZ2V0WmVyb0FuZEVtcHR5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IFNocmlua1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtc2hyaW5rXG4gICAgICAgKi9cbiAgICAgIHNocmluazogW3tcbiAgICAgICAgc2hyaW5rOiBnZXRaZXJvQW5kRW1wdHkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE9yZGVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3JkZXJcbiAgICAgICAqL1xuICAgICAgb3JkZXI6IFt7XG4gICAgICAgIG9yZGVyOiBbJ2ZpcnN0JywgJ2xhc3QnLCAnbm9uZScsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIFRlbXBsYXRlIENvbHVtbnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLWNvbHVtbnNcbiAgICAgICAqL1xuICAgICAgJ2dyaWQtY29scyc6IFt7XG4gICAgICAgICdncmlkLWNvbHMnOiBbaXNBbnldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnQgLyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICovXG4gICAgICAnY29sLXN0YXJ0LWVuZCc6IFt7XG4gICAgICAgIGNvbDogWydhdXRvJywge1xuICAgICAgICAgIHNwYW46IFsnZnVsbCcsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgICAgfSwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIENvbHVtbiBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgKi9cbiAgICAgICdjb2wtc3RhcnQnOiBbe1xuICAgICAgICAnY29sLXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQ29sdW1uIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgKi9cbiAgICAgICdjb2wtZW5kJzogW3tcbiAgICAgICAgJ2NvbC1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBUZW1wbGF0ZSBSb3dzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1yb3dzXG4gICAgICAgKi9cbiAgICAgICdncmlkLXJvd3MnOiBbe1xuICAgICAgICAnZ3JpZC1yb3dzJzogW2lzQW55XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgUm93IFN0YXJ0IC8gRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1zdGFydC1lbmQnOiBbe1xuICAgICAgICByb3c6IFsnYXV0bycsIHtcbiAgICAgICAgICBzcGFuOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgICB9LCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgUm93IFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1zdGFydCc6IFt7XG4gICAgICAgICdyb3ctc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBSb3cgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1lbmQnOiBbe1xuICAgICAgICAncm93LWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIEF1dG8gRmxvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1mbG93XG4gICAgICAgKi9cbiAgICAgICdncmlkLWZsb3cnOiBbe1xuICAgICAgICAnZ3JpZC1mbG93JzogWydyb3cnLCAnY29sJywgJ2RlbnNlJywgJ3Jvdy1kZW5zZScsICdjb2wtZGVuc2UnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQXV0byBDb2x1bW5zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWNvbHVtbnNcbiAgICAgICAqL1xuICAgICAgJ2F1dG8tY29scyc6IFt7XG4gICAgICAgICdhdXRvLWNvbHMnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBBdXRvIFJvd3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tcm93c1xuICAgICAgICovXG4gICAgICAnYXV0by1yb3dzJzogW3tcbiAgICAgICAgJ2F1dG8tcm93cyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHYXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAqL1xuICAgICAgZ2FwOiBbe1xuICAgICAgICBnYXA6IFtnYXBdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR2FwIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAqL1xuICAgICAgJ2dhcC14JzogW3tcbiAgICAgICAgJ2dhcC14JzogW2dhcF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHYXAgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICovXG4gICAgICAnZ2FwLXknOiBbe1xuICAgICAgICAnZ2FwLXknOiBbZ2FwXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEp1c3RpZnkgQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktY29udGVudFxuICAgICAgICovXG4gICAgICAnanVzdGlmeS1jb250ZW50JzogW3tcbiAgICAgICAganVzdGlmeTogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEp1c3RpZnkgSXRlbXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWl0ZW1zXG4gICAgICAgKi9cbiAgICAgICdqdXN0aWZ5LWl0ZW1zJzogW3tcbiAgICAgICAgJ2p1c3RpZnktaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSnVzdGlmeSBTZWxmXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1zZWxmXG4gICAgICAgKi9cbiAgICAgICdqdXN0aWZ5LXNlbGYnOiBbe1xuICAgICAgICAnanVzdGlmeS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQWxpZ24gQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgJ2FsaWduLWNvbnRlbnQnOiBbe1xuICAgICAgICBjb250ZW50OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCksICdiYXNlbGluZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQWxpZ24gSXRlbXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1pdGVtc1xuICAgICAgICovXG4gICAgICAnYWxpZ24taXRlbXMnOiBbe1xuICAgICAgICBpdGVtczogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEFsaWduIFNlbGZcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1zZWxmXG4gICAgICAgKi9cbiAgICAgICdhbGlnbi1zZWxmJzogW3tcbiAgICAgICAgc2VsZjogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCcsICdiYXNlbGluZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2UgQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlLWNvbnRlbnQnOiBbe1xuICAgICAgICAncGxhY2UtY29udGVudCc6IFsuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlIEl0ZW1zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtaXRlbXNcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlLWl0ZW1zJzogW3tcbiAgICAgICAgJ3BsYWNlLWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlIFNlbGZcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1zZWxmXG4gICAgICAgKi9cbiAgICAgICdwbGFjZS1zZWxmJzogW3tcbiAgICAgICAgJ3BsYWNlLXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ11cbiAgICAgIH1dLFxuICAgICAgLy8gU3BhY2luZ1xuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwOiBbe1xuICAgICAgICBwOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHB4OiBbe1xuICAgICAgICBweDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBweTogW3tcbiAgICAgICAgcHk6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBzOiBbe1xuICAgICAgICBwczogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBlOiBbe1xuICAgICAgICBwZTogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHB0OiBbe1xuICAgICAgICBwdDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcHI6IFt7XG4gICAgICAgIHByOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcGI6IFt7XG4gICAgICAgIHBiOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBsOiBbe1xuICAgICAgICBwbDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG06IFt7XG4gICAgICAgIG06IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXg6IFt7XG4gICAgICAgIG14OiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG15OiBbe1xuICAgICAgICBteTogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXM6IFt7XG4gICAgICAgIG1zOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbWU6IFt7XG4gICAgICAgIG1lOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXQ6IFt7XG4gICAgICAgIG10OiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtcjogW3tcbiAgICAgICAgbXI6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtYjogW3tcbiAgICAgICAgbWI6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbWw6IFt7XG4gICAgICAgIG1sOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNwYWNlIEJldHdlZW4gWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgKi9cbiAgICAgICdzcGFjZS14JzogW3tcbiAgICAgICAgJ3NwYWNlLXgnOiBbc3BhY2VdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3BhY2UgQmV0d2VlbiBYIFJldmVyc2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICovXG4gICAgICAnc3BhY2UteC1yZXZlcnNlJzogWydzcGFjZS14LXJldmVyc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogU3BhY2UgQmV0d2VlbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAqL1xuICAgICAgJ3NwYWNlLXknOiBbe1xuICAgICAgICAnc3BhY2UteSc6IFtzcGFjZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTcGFjZSBCZXR3ZWVuIFkgUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgKi9cbiAgICAgICdzcGFjZS15LXJldmVyc2UnOiBbJ3NwYWNlLXktcmV2ZXJzZSddLFxuICAgICAgLy8gU2l6aW5nXG4gICAgICAvKipcbiAgICAgICAqIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lkdGhcbiAgICAgICAqL1xuICAgICAgdzogW3tcbiAgICAgICAgdzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2dycsICdsdncnLCAnZHZ3JywgaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNaW4tV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4td2lkdGhcbiAgICAgICAqL1xuICAgICAgJ21pbi13JzogW3tcbiAgICAgICAgJ21pbi13JzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWF4LVdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdtYXgtdyc6IFt7XG4gICAgICAgICdtYXgtdyc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbm9uZScsICdmdWxsJywgJ21pbicsICdtYXgnLCAnZml0JywgJ3Byb3NlJywge1xuICAgICAgICAgIHNjcmVlbjogW2lzVHNoaXJ0U2l6ZV1cbiAgICAgICAgfSwgaXNUc2hpcnRTaXplXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEhlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2hlaWdodFxuICAgICAgICovXG4gICAgICBoOiBbe1xuICAgICAgICBoOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1pbi1IZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4taGVpZ2h0XG4gICAgICAgKi9cbiAgICAgICdtaW4taCc6IFt7XG4gICAgICAgICdtaW4taCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1heC1IZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtaGVpZ2h0XG4gICAgICAgKi9cbiAgICAgICdtYXgtaCc6IFt7XG4gICAgICAgICdtYXgtaCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNpemVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zaXplXG4gICAgICAgKi9cbiAgICAgIHNpemU6IFt7XG4gICAgICAgIHNpemU6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZpdCddXG4gICAgICB9XSxcbiAgICAgIC8vIFR5cG9ncmFwaHlcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBTaXplXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zaXplXG4gICAgICAgKi9cbiAgICAgICdmb250LXNpemUnOiBbe1xuICAgICAgICB0ZXh0OiBbJ2Jhc2UnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgU21vb3RoaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zbW9vdGhpbmdcbiAgICAgICAqL1xuICAgICAgJ2ZvbnQtc21vb3RoaW5nJzogWydhbnRpYWxpYXNlZCcsICdzdWJwaXhlbC1hbnRpYWxpYXNlZCddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zdHlsZVxuICAgICAgICovXG4gICAgICAnZm9udC1zdHlsZSc6IFsnaXRhbGljJywgJ25vdC1pdGFsaWMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBXZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXdlaWdodFxuICAgICAgICovXG4gICAgICAnZm9udC13ZWlnaHQnOiBbe1xuICAgICAgICBmb250OiBbJ3RoaW4nLCAnZXh0cmFsaWdodCcsICdsaWdodCcsICdub3JtYWwnLCAnbWVkaXVtJywgJ3NlbWlib2xkJywgJ2JvbGQnLCAnZXh0cmFib2xkJywgJ2JsYWNrJywgaXNBcmJpdHJhcnlOdW1iZXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBGYW1pbHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LWZhbWlseVxuICAgICAgICovXG4gICAgICAnZm9udC1mYW1pbHknOiBbe1xuICAgICAgICBmb250OiBbaXNBbnldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLW5vcm1hbCc6IFsnbm9ybWFsLW51bXMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLW9yZGluYWwnOiBbJ29yZGluYWwnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnc2xhc2hlZC16ZXJvJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAqL1xuICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2xpbmluZy1udW1zJywgJ29sZHN0eWxlLW51bXMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLXNwYWNpbmcnOiBbJ3Byb3BvcnRpb25hbC1udW1zJywgJ3RhYnVsYXItbnVtcyddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2RpYWdvbmFsLWZyYWN0aW9ucycsICdzdGFja2VkLWZyYWN0b25zJ10sXG4gICAgICAvKipcbiAgICAgICAqIExldHRlciBTcGFjaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGV0dGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgdHJhY2tpbmc6IFt7XG4gICAgICAgIHRyYWNraW5nOiBbJ3RpZ2h0ZXInLCAndGlnaHQnLCAnbm9ybWFsJywgJ3dpZGUnLCAnd2lkZXInLCAnd2lkZXN0JywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaW5lIENsYW1wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1jbGFtcFxuICAgICAgICovXG4gICAgICAnbGluZS1jbGFtcCc6IFt7XG4gICAgICAgICdsaW5lLWNsYW1wJzogWydub25lJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5TnVtYmVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpbmUgSGVpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1oZWlnaHRcbiAgICAgICAqL1xuICAgICAgbGVhZGluZzogW3tcbiAgICAgICAgbGVhZGluZzogWydub25lJywgJ3RpZ2h0JywgJ3NudWcnLCAnbm9ybWFsJywgJ3JlbGF4ZWQnLCAnbG9vc2UnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaXN0IFN0eWxlIEltYWdlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1pbWFnZVxuICAgICAgICovXG4gICAgICAnbGlzdC1pbWFnZSc6IFt7XG4gICAgICAgICdsaXN0LWltYWdlJzogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaXN0IFN0eWxlIFR5cGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXR5cGVcbiAgICAgICAqL1xuICAgICAgJ2xpc3Qtc3R5bGUtdHlwZSc6IFt7XG4gICAgICAgIGxpc3Q6IFsnbm9uZScsICdkaXNjJywgJ2RlY2ltYWwnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpc3QgU3R5bGUgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXBvc2l0aW9uXG4gICAgICAgKi9cbiAgICAgICdsaXN0LXN0eWxlLXBvc2l0aW9uJzogW3tcbiAgICAgICAgbGlzdDogWydpbnNpZGUnLCAnb3V0c2lkZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2Vob2xkZXIgQ29sb3JcbiAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1jb2xvclxuICAgICAgICovXG4gICAgICAncGxhY2Vob2xkZXItY29sb3InOiBbe1xuICAgICAgICBwbGFjZWhvbGRlcjogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQbGFjZWhvbGRlciBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItb3BhY2l0eVxuICAgICAgICovXG4gICAgICAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFt7XG4gICAgICAgICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBBbGlnbm1lbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWFsaWduXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWFsaWdubWVudCc6IFt7XG4gICAgICAgIHRleHQ6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnanVzdGlmeScsICdzdGFydCcsICdlbmQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWNvbG9yXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWNvbG9yJzogW3tcbiAgICAgICAgdGV4dDogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ3RleHQtb3BhY2l0eSc6IFt7XG4gICAgICAgICd0ZXh0LW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IERlY29yYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb25cbiAgICAgICAqL1xuICAgICAgJ3RleHQtZGVjb3JhdGlvbic6IFsndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCcsICduby11bmRlcmxpbmUnXSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXN0eWxlXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnOiBbe1xuICAgICAgICBkZWNvcmF0aW9uOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnd2F2eSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFRoaWNrbmVzc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3NcbiAgICAgICAqL1xuICAgICAgJ3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MnOiBbe1xuICAgICAgICBkZWNvcmF0aW9uOiBbJ2F1dG8nLCAnZnJvbS1mb250JywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgVW5kZXJsaW5lIE9mZnNldFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdW5kZXJsaW5lLW9mZnNldFxuICAgICAgICovXG4gICAgICAndW5kZXJsaW5lLW9mZnNldCc6IFt7XG4gICAgICAgICd1bmRlcmxpbmUtb2Zmc2V0JzogWydhdXRvJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBEZWNvcmF0aW9uIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWRlY29yYXRpb24tY29sb3InOiBbe1xuICAgICAgICBkZWNvcmF0aW9uOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgVHJhbnNmb3JtXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC10cmFuc2Zvcm1cbiAgICAgICAqL1xuICAgICAgJ3RleHQtdHJhbnNmb3JtJzogWyd1cHBlcmNhc2UnLCAnbG93ZXJjYXNlJywgJ2NhcGl0YWxpemUnLCAnbm9ybWFsLWNhc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBPdmVyZmxvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3ZlcmZsb3dcbiAgICAgICAqL1xuICAgICAgJ3RleHQtb3ZlcmZsb3cnOiBbJ3RydW5jYXRlJywgJ3RleHQtZWxsaXBzaXMnLCAndGV4dC1jbGlwJ10sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgV3JhcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtd3JhcFxuICAgICAgICovXG4gICAgICAndGV4dC13cmFwJzogW3tcbiAgICAgICAgdGV4dDogWyd3cmFwJywgJ25vd3JhcCcsICdiYWxhbmNlJywgJ3ByZXR0eSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBJbmRlbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWluZGVudFxuICAgICAgICovXG4gICAgICBpbmRlbnQ6IFt7XG4gICAgICAgIGluZGVudDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFZlcnRpY2FsIEFsaWdubWVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3ZlcnRpY2FsLWFsaWduXG4gICAgICAgKi9cbiAgICAgICd2ZXJ0aWNhbC1hbGlnbic6IFt7XG4gICAgICAgIGFsaWduOiBbJ2Jhc2VsaW5lJywgJ3RvcCcsICdtaWRkbGUnLCAnYm90dG9tJywgJ3RleHQtdG9wJywgJ3RleHQtYm90dG9tJywgJ3N1YicsICdzdXBlcicsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogV2hpdGVzcGFjZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3doaXRlc3BhY2VcbiAgICAgICAqL1xuICAgICAgd2hpdGVzcGFjZTogW3tcbiAgICAgICAgd2hpdGVzcGFjZTogWydub3JtYWwnLCAnbm93cmFwJywgJ3ByZScsICdwcmUtbGluZScsICdwcmUtd3JhcCcsICdicmVhay1zcGFjZXMnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFdvcmQgQnJlYWtcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93b3JkLWJyZWFrXG4gICAgICAgKi9cbiAgICAgIGJyZWFrOiBbe1xuICAgICAgICBicmVhazogWydub3JtYWwnLCAnd29yZHMnLCAnYWxsJywgJ2tlZXAnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEh5cGhlbnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oeXBoZW5zXG4gICAgICAgKi9cbiAgICAgIGh5cGhlbnM6IFt7XG4gICAgICAgIGh5cGhlbnM6IFsnbm9uZScsICdtYW51YWwnLCAnYXV0byddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRlbnRcbiAgICAgICAqL1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgY29udGVudDogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLy8gQmFja2dyb3VuZHNcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBBdHRhY2htZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1hdHRhY2htZW50XG4gICAgICAgKi9cbiAgICAgICdiZy1hdHRhY2htZW50JzogW3tcbiAgICAgICAgYmc6IFsnZml4ZWQnLCAnbG9jYWwnLCAnc2Nyb2xsJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIENsaXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNsaXBcbiAgICAgICAqL1xuICAgICAgJ2JnLWNsaXAnOiBbe1xuICAgICAgICAnYmctY2xpcCc6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCcsICd0ZXh0J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIE9wYWNpdHlcbiAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ2JnLW9wYWNpdHknOiBbe1xuICAgICAgICAnYmctb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgT3JpZ2luXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcmlnaW5cbiAgICAgICAqL1xuICAgICAgJ2JnLW9yaWdpbic6IFt7XG4gICAgICAgICdiZy1vcmlnaW4nOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXBvc2l0aW9uXG4gICAgICAgKi9cbiAgICAgICdiZy1wb3NpdGlvbic6IFt7XG4gICAgICAgIGJnOiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5UG9zaXRpb25dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBSZXBlYXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXJlcGVhdFxuICAgICAgICovXG4gICAgICAnYmctcmVwZWF0JzogW3tcbiAgICAgICAgYmc6IFsnbm8tcmVwZWF0Jywge1xuICAgICAgICAgIHJlcGVhdDogWycnLCAneCcsICd5JywgJ3JvdW5kJywgJ3NwYWNlJ11cbiAgICAgICAgfV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIFNpemVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXNpemVcbiAgICAgICAqL1xuICAgICAgJ2JnLXNpemUnOiBbe1xuICAgICAgICBiZzogWydhdXRvJywgJ2NvdmVyJywgJ2NvbnRhaW4nLCBpc0FyYml0cmFyeVNpemVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBJbWFnZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtaW1hZ2VcbiAgICAgICAqL1xuICAgICAgJ2JnLWltYWdlJzogW3tcbiAgICAgICAgYmc6IFsnbm9uZScsIHtcbiAgICAgICAgICAnZ3JhZGllbnQtdG8nOiBbJ3QnLCAndHInLCAncicsICdicicsICdiJywgJ2JsJywgJ2wnLCAndGwnXVxuICAgICAgICB9LCBpc0FyYml0cmFyeUltYWdlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdiZy1jb2xvcic6IFt7XG4gICAgICAgIGJnOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb20gUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtZnJvbS1wb3MnOiBbe1xuICAgICAgICBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LXZpYS1wb3MnOiBbe1xuICAgICAgICB2aWE6IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUbyBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC10by1wb3MnOiBbe1xuICAgICAgICB0bzogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtZnJvbSc6IFt7XG4gICAgICAgIGZyb206IFtncmFkaWVudENvbG9yU3RvcHNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LXZpYSc6IFt7XG4gICAgICAgIHZpYTogW2dyYWRpZW50Q29sb3JTdG9wc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUb1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC10byc6IFt7XG4gICAgICAgIHRvOiBbZ3JhZGllbnRDb2xvclN0b3BzXVxuICAgICAgfV0sXG4gICAgICAvLyBCb3JkZXJzXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgIHJvdW5kZWQ6IFt7XG4gICAgICAgIHJvdW5kZWQ6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtcyc6IFt7XG4gICAgICAgICdyb3VuZGVkLXMnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1lJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtZSc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXQnOiBbe1xuICAgICAgICAncm91bmRlZC10JzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1yJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtcic6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWInOiBbe1xuICAgICAgICAncm91bmRlZC1iJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWwnOiBbe1xuICAgICAgICAncm91bmRlZC1sJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1zcyc6IFt7XG4gICAgICAgICdyb3VuZGVkLXNzJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtc2UnOiBbe1xuICAgICAgICAncm91bmRlZC1zZSc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1lZSc6IFt7XG4gICAgICAgICdyb3VuZGVkLWVlJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtZXMnOiBbe1xuICAgICAgICAncm91bmRlZC1lcyc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtdGwnOiBbe1xuICAgICAgICAncm91bmRlZC10bCc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXRyJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtdHInOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1icic6IFt7XG4gICAgICAgICdyb3VuZGVkLWJyJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1ibCc6IFt7XG4gICAgICAgICdyb3VuZGVkLWJsJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13JzogW3tcbiAgICAgICAgYm9yZGVyOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXgnOiBbe1xuICAgICAgICAnYm9yZGVyLXgnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXknOiBbe1xuICAgICAgICAnYm9yZGVyLXknOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy1zJzogW3tcbiAgICAgICAgJ2JvcmRlci1zJzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LWUnOiBbe1xuICAgICAgICAnYm9yZGVyLWUnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctdCc6IFt7XG4gICAgICAgICdib3JkZXItdCc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXInOiBbe1xuICAgICAgICAnYm9yZGVyLXInOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctYic6IFt7XG4gICAgICAgICdib3JkZXItYic6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctbCc6IFt7XG4gICAgICAgICdib3JkZXItbCc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdib3JkZXItb3BhY2l0eSc6IFt7XG4gICAgICAgICdib3JkZXItb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBTdHlsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zdHlsZVxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXN0eWxlJzogW3tcbiAgICAgICAgYm9yZGVyOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnaGlkZGVuJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgV2lkdGggWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXgnOiBbe1xuICAgICAgICAnZGl2aWRlLXgnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFdpZHRoIFggUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXgtcmV2ZXJzZSc6IFsnZGl2aWRlLXgtcmV2ZXJzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgV2lkdGggWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXknOiBbe1xuICAgICAgICAnZGl2aWRlLXknOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFdpZHRoIFkgUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXktcmV2ZXJzZSc6IFsnZGl2aWRlLXktcmV2ZXJzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUtb3BhY2l0eSc6IFt7XG4gICAgICAgICdkaXZpZGUtb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBTdHlsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1zdHlsZVxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXN0eWxlJzogW3tcbiAgICAgICAgZGl2aWRlOiBnZXRMaW5lU3R5bGVzKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvcic6IFt7XG4gICAgICAgIGJvcmRlcjogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3IteCc6IFt7XG4gICAgICAgICdib3JkZXIteCc6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLXknOiBbe1xuICAgICAgICAnYm9yZGVyLXknOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLXQnOiBbe1xuICAgICAgICAnYm9yZGVyLXQnOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3Itcic6IFt7XG4gICAgICAgICdib3JkZXItcic6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3ItYic6IFt7XG4gICAgICAgICdib3JkZXItYic6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLWwnOiBbe1xuICAgICAgICAnYm9yZGVyLWwnOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUtY29sb3InOiBbe1xuICAgICAgICBkaXZpZGU6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdXRsaW5lIFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1zdHlsZVxuICAgICAgICovXG4gICAgICAnb3V0bGluZS1zdHlsZSc6IFt7XG4gICAgICAgIG91dGxpbmU6IFsnJywgLi4uZ2V0TGluZVN0eWxlcygpXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgT2Zmc2V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1vZmZzZXRcbiAgICAgICAqL1xuICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW3tcbiAgICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdvdXRsaW5lLXcnOiBbe1xuICAgICAgICBvdXRsaW5lOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdvdXRsaW5lLWNvbG9yJzogW3tcbiAgICAgICAgb3V0bGluZTogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICovXG4gICAgICAncmluZy13JzogW3tcbiAgICAgICAgcmluZzogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIFdpZHRoIEluc2V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICovXG4gICAgICAncmluZy13LWluc2V0JzogWydyaW5nLWluc2V0J10sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdyaW5nLWNvbG9yJzogW3tcbiAgICAgICAgcmluZzogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ3Jpbmctb3BhY2l0eSc6IFt7XG4gICAgICAgICdyaW5nLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9mZnNldCBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdyaW5nLW9mZnNldC13JzogW3tcbiAgICAgICAgJ3Jpbmctb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9mZnNldCBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdyaW5nLW9mZnNldC1jb2xvcic6IFt7XG4gICAgICAgICdyaW5nLW9mZnNldCc6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8vIEVmZmVjdHNcbiAgICAgIC8qKlxuICAgICAgICogQm94IFNoYWRvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3dcbiAgICAgICAqL1xuICAgICAgc2hhZG93OiBbe1xuICAgICAgICBzaGFkb3c6IFsnJywgJ2lubmVyJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5U2hhZG93XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJveCBTaGFkb3cgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93LWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdzaGFkb3ctY29sb3InOiBbe1xuICAgICAgICBzaGFkb3c6IFtpc0FueV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3BhY2l0eVxuICAgICAgICovXG4gICAgICBvcGFjaXR5OiBbe1xuICAgICAgICBvcGFjaXR5OiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNaXggQmxlbmQgTW9kZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21peC1ibGVuZC1tb2RlXG4gICAgICAgKi9cbiAgICAgICdtaXgtYmxlbmQnOiBbe1xuICAgICAgICAnbWl4LWJsZW5kJzogWy4uLmdldEJsZW5kTW9kZXMoKSwgJ3BsdXMtbGlnaHRlcicsICdwbHVzLWRhcmtlciddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBCbGVuZCBNb2RlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1ibGVuZC1tb2RlXG4gICAgICAgKi9cbiAgICAgICdiZy1ibGVuZCc6IFt7XG4gICAgICAgICdiZy1ibGVuZCc6IGdldEJsZW5kTW9kZXMoKVxuICAgICAgfV0sXG4gICAgICAvLyBGaWx0ZXJzXG4gICAgICAvKipcbiAgICAgICAqIEZpbHRlclxuICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbHRlclxuICAgICAgICovXG4gICAgICBmaWx0ZXI6IFt7XG4gICAgICAgIGZpbHRlcjogWycnLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmx1clxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JsdXJcbiAgICAgICAqL1xuICAgICAgYmx1cjogW3tcbiAgICAgICAgYmx1cjogW2JsdXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQnJpZ2h0bmVzc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyaWdodG5lc3NcbiAgICAgICAqL1xuICAgICAgYnJpZ2h0bmVzczogW3tcbiAgICAgICAgYnJpZ2h0bmVzczogW2JyaWdodG5lc3NdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ29udHJhc3RcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250cmFzdFxuICAgICAgICovXG4gICAgICBjb250cmFzdDogW3tcbiAgICAgICAgY29udHJhc3Q6IFtjb250cmFzdF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEcm9wIFNoYWRvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Ryb3Atc2hhZG93XG4gICAgICAgKi9cbiAgICAgICdkcm9wLXNoYWRvdyc6IFt7XG4gICAgICAgICdkcm9wLXNoYWRvdyc6IFsnJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JheXNjYWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JheXNjYWxlXG4gICAgICAgKi9cbiAgICAgIGdyYXlzY2FsZTogW3tcbiAgICAgICAgZ3JheXNjYWxlOiBbZ3JheXNjYWxlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEh1ZSBSb3RhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9odWUtcm90YXRlXG4gICAgICAgKi9cbiAgICAgICdodWUtcm90YXRlJzogW3tcbiAgICAgICAgJ2h1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEludmVydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ludmVydFxuICAgICAgICovXG4gICAgICBpbnZlcnQ6IFt7XG4gICAgICAgIGludmVydDogW2ludmVydF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTYXR1cmF0ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NhdHVyYXRlXG4gICAgICAgKi9cbiAgICAgIHNhdHVyYXRlOiBbe1xuICAgICAgICBzYXR1cmF0ZTogW3NhdHVyYXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNlcGlhXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2VwaWFcbiAgICAgICAqL1xuICAgICAgc2VwaWE6IFt7XG4gICAgICAgIHNlcGlhOiBbc2VwaWFdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgRmlsdGVyXG4gICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZmlsdGVyXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbe1xuICAgICAgICAnYmFja2Ryb3AtZmlsdGVyJzogWycnLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgQmx1clxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJsdXJcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWJsdXInOiBbe1xuICAgICAgICAnYmFja2Ryb3AtYmx1cic6IFtibHVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEJyaWdodG5lc3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1icmlnaHRuZXNzXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbYnJpZ2h0bmVzc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBDb250cmFzdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWNvbnRyYXN0XG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFtjb250cmFzdF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBHcmF5c2NhbGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ncmF5c2NhbGVcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbZ3JheXNjYWxlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEh1ZSBSb3RhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1odWUtcm90YXRlXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1odWUtcm90YXRlJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEludmVydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWludmVydFxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWludmVydCc6IFtpbnZlcnRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLW9wYWNpdHknOiBbe1xuICAgICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIFNhdHVyYXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2F0dXJhdGVcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3NhdHVyYXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIFNlcGlhXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2VwaWFcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3NlcGlhXVxuICAgICAgfV0sXG4gICAgICAvLyBUYWJsZXNcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbGxhcHNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbGxhcHNlXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sbGFwc2UnOiBbe1xuICAgICAgICBib3JkZXI6IFsnY29sbGFwc2UnLCAnc2VwYXJhdGUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBTcGFjaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW3tcbiAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW2JvcmRlclNwYWNpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFNwYWNpbmcgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItc3BhY2luZy14JzogW3tcbiAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXgnOiBbYm9yZGVyU3BhY2luZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgU3BhY2luZyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zcGFjaW5nLXknOiBbe1xuICAgICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFtib3JkZXJTcGFjaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRhYmxlIExheW91dFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RhYmxlLWxheW91dFxuICAgICAgICovXG4gICAgICAndGFibGUtbGF5b3V0JzogW3tcbiAgICAgICAgdGFibGU6IFsnYXV0bycsICdmaXhlZCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ2FwdGlvbiBTaWRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2FwdGlvbi1zaWRlXG4gICAgICAgKi9cbiAgICAgIGNhcHRpb246IFt7XG4gICAgICAgIGNhcHRpb246IFsndG9wJywgJ2JvdHRvbSddXG4gICAgICB9XSxcbiAgICAgIC8vIFRyYW5zaXRpb25zIGFuZCBBbmltYXRpb25cbiAgICAgIC8qKlxuICAgICAgICogVHJhbmlzaXRpb24gUHJvcGVydHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXByb3BlcnR5XG4gICAgICAgKi9cbiAgICAgIHRyYW5zaXRpb246IFt7XG4gICAgICAgIHRyYW5zaXRpb246IFsnbm9uZScsICdhbGwnLCAnJywgJ2NvbG9ycycsICdvcGFjaXR5JywgJ3NoYWRvdycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zaXRpb24gRHVyYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgKi9cbiAgICAgIGR1cmF0aW9uOiBbe1xuICAgICAgICBkdXJhdGlvbjogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuc2l0aW9uIFRpbWluZyBGdW5jdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgICAgKi9cbiAgICAgIGVhc2U6IFt7XG4gICAgICAgIGVhc2U6IFsnbGluZWFyJywgJ2luJywgJ291dCcsICdpbi1vdXQnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zaXRpb24gRGVsYXlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWRlbGF5XG4gICAgICAgKi9cbiAgICAgIGRlbGF5OiBbe1xuICAgICAgICBkZWxheTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBBbmltYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbmltYXRpb25cbiAgICAgICAqL1xuICAgICAgYW5pbWF0ZTogW3tcbiAgICAgICAgYW5pbWF0ZTogWydub25lJywgJ3NwaW4nLCAncGluZycsICdwdWxzZScsICdib3VuY2UnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBUcmFuc2Zvcm1zXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zZm9ybVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybVxuICAgICAgICovXG4gICAgICB0cmFuc2Zvcm06IFt7XG4gICAgICAgIHRyYW5zZm9ybTogWycnLCAnZ3B1JywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjYWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAqL1xuICAgICAgc2NhbGU6IFt7XG4gICAgICAgIHNjYWxlOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2NhbGUgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgKi9cbiAgICAgICdzY2FsZS14JzogW3tcbiAgICAgICAgJ3NjYWxlLXgnOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2NhbGUgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgKi9cbiAgICAgICdzY2FsZS15JzogW3tcbiAgICAgICAgJ3NjYWxlLXknOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUm90YXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvcm90YXRlXG4gICAgICAgKi9cbiAgICAgIHJvdGF0ZTogW3tcbiAgICAgICAgcm90YXRlOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zbGF0ZSBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgKi9cbiAgICAgICd0cmFuc2xhdGUteCc6IFt7XG4gICAgICAgICd0cmFuc2xhdGUteCc6IFt0cmFuc2xhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNsYXRlIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAqL1xuICAgICAgJ3RyYW5zbGF0ZS15JzogW3tcbiAgICAgICAgJ3RyYW5zbGF0ZS15JzogW3RyYW5zbGF0ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTa2V3IFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgKi9cbiAgICAgICdza2V3LXgnOiBbe1xuICAgICAgICAnc2tldy14JzogW3NrZXddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2tldyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICovXG4gICAgICAnc2tldy15JzogW3tcbiAgICAgICAgJ3NrZXcteSc6IFtza2V3XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zZm9ybSBPcmlnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm0tb3JpZ2luXG4gICAgICAgKi9cbiAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJzogW3tcbiAgICAgICAgb3JpZ2luOiBbJ2NlbnRlcicsICd0b3AnLCAndG9wLXJpZ2h0JywgJ3JpZ2h0JywgJ2JvdHRvbS1yaWdodCcsICdib3R0b20nLCAnYm90dG9tLWxlZnQnLCAnbGVmdCcsICd0b3AtbGVmdCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIEludGVyYWN0aXZpdHlcbiAgICAgIC8qKlxuICAgICAgICogQWNjZW50IENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWNjZW50LWNvbG9yXG4gICAgICAgKi9cbiAgICAgIGFjY2VudDogW3tcbiAgICAgICAgYWNjZW50OiBbJ2F1dG8nLCBjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQXBwZWFyYW5jZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FwcGVhcmFuY2VcbiAgICAgICAqL1xuICAgICAgYXBwZWFyYW5jZTogW3tcbiAgICAgICAgYXBwZWFyYW5jZTogWydub25lJywgJ2F1dG8nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEN1cnNvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2N1cnNvclxuICAgICAgICovXG4gICAgICBjdXJzb3I6IFt7XG4gICAgICAgIGN1cnNvcjogWydhdXRvJywgJ2RlZmF1bHQnLCAncG9pbnRlcicsICd3YWl0JywgJ3RleHQnLCAnbW92ZScsICdoZWxwJywgJ25vdC1hbGxvd2VkJywgJ25vbmUnLCAnY29udGV4dC1tZW51JywgJ3Byb2dyZXNzJywgJ2NlbGwnLCAnY3Jvc3NoYWlyJywgJ3ZlcnRpY2FsLXRleHQnLCAnYWxpYXMnLCAnY29weScsICduby1kcm9wJywgJ2dyYWInLCAnZ3JhYmJpbmcnLCAnYWxsLXNjcm9sbCcsICdjb2wtcmVzaXplJywgJ3Jvdy1yZXNpemUnLCAnbi1yZXNpemUnLCAnZS1yZXNpemUnLCAncy1yZXNpemUnLCAndy1yZXNpemUnLCAnbmUtcmVzaXplJywgJ253LXJlc2l6ZScsICdzZS1yZXNpemUnLCAnc3ctcmVzaXplJywgJ2V3LXJlc2l6ZScsICducy1yZXNpemUnLCAnbmVzdy1yZXNpemUnLCAnbndzZS1yZXNpemUnLCAnem9vbS1pbicsICd6b29tLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ2FyZXQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0LWluLXRpbWUtbW9kZSNjYXJldC1jb2xvci11dGlsaXRpZXNcbiAgICAgICAqL1xuICAgICAgJ2NhcmV0LWNvbG9yJzogW3tcbiAgICAgICAgY2FyZXQ6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUG9pbnRlciBFdmVudHNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb2ludGVyLWV2ZW50c1xuICAgICAgICovXG4gICAgICAncG9pbnRlci1ldmVudHMnOiBbe1xuICAgICAgICAncG9pbnRlci1ldmVudHMnOiBbJ25vbmUnLCAnYXV0byddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmVzaXplXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmVzaXplXG4gICAgICAgKi9cbiAgICAgIHJlc2l6ZTogW3tcbiAgICAgICAgcmVzaXplOiBbJ25vbmUnLCAneScsICd4JywgJyddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtYmVoYXZpb3InOiBbe1xuICAgICAgICBzY3JvbGw6IFsnYXV0bycsICdzbW9vdGgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbSc6IFt7XG4gICAgICAgICdzY3JvbGwtbSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbXgnOiBbe1xuICAgICAgICAnc2Nyb2xsLW14JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1teSc6IFt7XG4gICAgICAgICdzY3JvbGwtbXknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tcyc6IFt7XG4gICAgICAgICdzY3JvbGwtbXMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbWUnOiBbe1xuICAgICAgICAnc2Nyb2xsLW1lJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW10JzogW3tcbiAgICAgICAgJ3Njcm9sbC1tdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1yJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tYic6IFt7XG4gICAgICAgICdzY3JvbGwtbWInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1sJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZ1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcCc6IFt7XG4gICAgICAgICdzY3JvbGwtcCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1weCc6IFt7XG4gICAgICAgICdzY3JvbGwtcHgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcHknOiBbe1xuICAgICAgICAnc2Nyb2xsLXB5JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wcyc6IFt7XG4gICAgICAgICdzY3JvbGwtcHMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wZSc6IFt7XG4gICAgICAgICdzY3JvbGwtcGUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wdCc6IFt7XG4gICAgICAgICdzY3JvbGwtcHQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXByJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXBiJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wbCc6IFt7XG4gICAgICAgICdzY3JvbGwtcGwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFNuYXAgQWxpZ25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1hbGlnblxuICAgICAgICovXG4gICAgICAnc25hcC1hbGlnbic6IFt7XG4gICAgICAgIHNuYXA6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdhbGlnbi1ub25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBTdG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtc3RvcFxuICAgICAgICovXG4gICAgICAnc25hcC1zdG9wJzogW3tcbiAgICAgICAgc25hcDogWydub3JtYWwnLCAnYWx3YXlzJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBUeXBlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICovXG4gICAgICAnc25hcC10eXBlJzogW3tcbiAgICAgICAgc25hcDogWydub25lJywgJ3gnLCAneScsICdib3RoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBUeXBlIFN0cmljdG5lc3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgKi9cbiAgICAgICdzbmFwLXN0cmljdG5lc3MnOiBbe1xuICAgICAgICBzbmFwOiBbJ21hbmRhdG9yeScsICdwcm94aW1pdHknXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvdWNoIEFjdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICovXG4gICAgICB0b3VjaDogW3tcbiAgICAgICAgdG91Y2g6IFsnYXV0bycsICdub25lJywgJ21hbmlwdWxhdGlvbiddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG91Y2ggQWN0aW9uIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAqL1xuICAgICAgJ3RvdWNoLXgnOiBbe1xuICAgICAgICAndG91Y2gtcGFuJzogWyd4JywgJ2xlZnQnLCAncmlnaHQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvdWNoIEFjdGlvbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgKi9cbiAgICAgICd0b3VjaC15JzogW3tcbiAgICAgICAgJ3RvdWNoLXBhbic6IFsneScsICd1cCcsICdkb3duJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3VjaCBBY3Rpb24gUGluY2ggWm9vbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICovXG4gICAgICAndG91Y2gtcHonOiBbJ3RvdWNoLXBpbmNoLXpvb20nXSxcbiAgICAgIC8qKlxuICAgICAgICogVXNlciBTZWxlY3RcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy91c2VyLXNlbGVjdFxuICAgICAgICovXG4gICAgICBzZWxlY3Q6IFt7XG4gICAgICAgIHNlbGVjdDogWydub25lJywgJ3RleHQnLCAnYWxsJywgJ2F1dG8nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFdpbGwgQ2hhbmdlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lsbC1jaGFuZ2VcbiAgICAgICAqL1xuICAgICAgJ3dpbGwtY2hhbmdlJzogW3tcbiAgICAgICAgJ3dpbGwtY2hhbmdlJzogWydhdXRvJywgJ3Njcm9sbCcsICdjb250ZW50cycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBTVkdcbiAgICAgIC8qKlxuICAgICAgICogRmlsbFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbGxcbiAgICAgICAqL1xuICAgICAgZmlsbDogW3tcbiAgICAgICAgZmlsbDogW2NvbG9ycywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0cm9rZSBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZS13aWR0aFxuICAgICAgICovXG4gICAgICAnc3Ryb2tlLXcnOiBbe1xuICAgICAgICBzdHJva2U6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGgsIGlzQXJiaXRyYXJ5TnVtYmVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0cm9rZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZVxuICAgICAgICovXG4gICAgICBzdHJva2U6IFt7XG4gICAgICAgIHN0cm9rZTogW2NvbG9ycywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvLyBBY2Nlc3NpYmlsaXR5XG4gICAgICAvKipcbiAgICAgICAqIFNjcmVlbiBSZWFkZXJzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NyZWVuLXJlYWRlcnNcbiAgICAgICAqL1xuICAgICAgc3I6IFsnc3Itb25seScsICdub3Qtc3Itb25seSddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb3JjZWQgQ29sb3IgQWRqdXN0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9yY2VkLWNvbG9yLWFkanVzdFxuICAgICAgICovXG4gICAgICAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFt7XG4gICAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogWydhdXRvJywgJ25vbmUnXVxuICAgICAgfV1cbiAgICB9LFxuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cHM6IHtcbiAgICAgIG92ZXJmbG93OiBbJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAgICAgb3ZlcnNjcm9sbDogWydvdmVyc2Nyb2xsLXgnLCAnb3ZlcnNjcm9sbC15J10sXG4gICAgICBpbnNldDogWydpbnNldC14JywgJ2luc2V0LXknLCAnc3RhcnQnLCAnZW5kJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICAgICAgJ2luc2V0LXgnOiBbJ3JpZ2h0JywgJ2xlZnQnXSxcbiAgICAgICdpbnNldC15JzogWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICBmbGV4OiBbJ2Jhc2lzJywgJ2dyb3cnLCAnc2hyaW5rJ10sXG4gICAgICBnYXA6IFsnZ2FwLXgnLCAnZ2FwLXknXSxcbiAgICAgIHA6IFsncHgnLCAncHknLCAncHMnLCAncGUnLCAncHQnLCAncHInLCAncGInLCAncGwnXSxcbiAgICAgIHB4OiBbJ3ByJywgJ3BsJ10sXG4gICAgICBweTogWydwdCcsICdwYiddLFxuICAgICAgbTogWydteCcsICdteScsICdtcycsICdtZScsICdtdCcsICdtcicsICdtYicsICdtbCddLFxuICAgICAgbXg6IFsnbXInLCAnbWwnXSxcbiAgICAgIG15OiBbJ210JywgJ21iJ10sXG4gICAgICBzaXplOiBbJ3cnLCAnaCddLFxuICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgJ2Z2bi1ub3JtYWwnOiBbJ2Z2bi1vcmRpbmFsJywgJ2Z2bi1zbGFzaGVkLXplcm8nLCAnZnZuLWZpZ3VyZScsICdmdm4tc3BhY2luZycsICdmdm4tZnJhY3Rpb24nXSxcbiAgICAgICdmdm4tb3JkaW5hbCc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdmdm4tZmlndXJlJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAnZnZuLXNwYWNpbmcnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdsaW5lLWNsYW1wJzogWydkaXNwbGF5JywgJ292ZXJmbG93J10sXG4gICAgICByb3VuZGVkOiBbJ3JvdW5kZWQtcycsICdyb3VuZGVkLWUnLCAncm91bmRlZC10JywgJ3JvdW5kZWQtcicsICdyb3VuZGVkLWInLCAncm91bmRlZC1sJywgJ3JvdW5kZWQtc3MnLCAncm91bmRlZC1zZScsICdyb3VuZGVkLWVlJywgJ3JvdW5kZWQtZXMnLCAncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgJ3JvdW5kZWQtcyc6IFsncm91bmRlZC1zcycsICdyb3VuZGVkLWVzJ10sXG4gICAgICAncm91bmRlZC1lJzogWydyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnXSxcbiAgICAgICdyb3VuZGVkLXQnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC10ciddLFxuICAgICAgJ3JvdW5kZWQtcic6IFsncm91bmRlZC10cicsICdyb3VuZGVkLWJyJ10sXG4gICAgICAncm91bmRlZC1iJzogWydyb3VuZGVkLWJyJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICdyb3VuZGVkLWwnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC1ibCddLFxuICAgICAgJ2JvcmRlci1zcGFjaW5nJzogWydib3JkZXItc3BhY2luZy14JywgJ2JvcmRlci1zcGFjaW5nLXknXSxcbiAgICAgICdib3JkZXItdyc6IFsnYm9yZGVyLXctcycsICdib3JkZXItdy1lJywgJ2JvcmRlci13LXQnLCAnYm9yZGVyLXctcicsICdib3JkZXItdy1iJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICdib3JkZXItdy14JzogWydib3JkZXItdy1yJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICdib3JkZXItdy15JzogWydib3JkZXItdy10JywgJ2JvcmRlci13LWInXSxcbiAgICAgICdib3JkZXItY29sb3InOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1iJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAnYm9yZGVyLWNvbG9yLXknOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1iJ10sXG4gICAgICAnc2Nyb2xsLW0nOiBbJ3Njcm9sbC1teCcsICdzY3JvbGwtbXknLCAnc2Nyb2xsLW1zJywgJ3Njcm9sbC1tZScsICdzY3JvbGwtbXQnLCAnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tYicsICdzY3JvbGwtbWwnXSxcbiAgICAgICdzY3JvbGwtbXgnOiBbJ3Njcm9sbC1tcicsICdzY3JvbGwtbWwnXSxcbiAgICAgICdzY3JvbGwtbXknOiBbJ3Njcm9sbC1tdCcsICdzY3JvbGwtbWInXSxcbiAgICAgICdzY3JvbGwtcCc6IFsnc2Nyb2xsLXB4JywgJ3Njcm9sbC1weScsICdzY3JvbGwtcHMnLCAnc2Nyb2xsLXBlJywgJ3Njcm9sbC1wdCcsICdzY3JvbGwtcHInLCAnc2Nyb2xsLXBiJywgJ3Njcm9sbC1wbCddLFxuICAgICAgJ3Njcm9sbC1weCc6IFsnc2Nyb2xsLXByJywgJ3Njcm9sbC1wbCddLFxuICAgICAgJ3Njcm9sbC1weSc6IFsnc2Nyb2xsLXB0JywgJ3Njcm9sbC1wYiddLFxuICAgICAgdG91Y2g6IFsndG91Y2gteCcsICd0b3VjaC15JywgJ3RvdWNoLXB6J10sXG4gICAgICAndG91Y2gteCc6IFsndG91Y2gnXSxcbiAgICAgICd0b3VjaC15JzogWyd0b3VjaCddLFxuICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaCddXG4gICAgfSxcbiAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6IHtcbiAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYmFzZUNvbmZpZyBDb25maWcgd2hlcmUgb3RoZXIgY29uZmlnIHdpbGwgYmUgbWVyZ2VkIGludG8uIFRoaXMgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZC5cbiAqIEBwYXJhbSBjb25maWdFeHRlbnNpb24gUGFydGlhbCBjb25maWcgdG8gbWVyZ2UgaW50byB0aGUgYGJhc2VDb25maWdgLlxuICovXG5mdW5jdGlvbiBtZXJnZUNvbmZpZ3MoYmFzZUNvbmZpZywge1xuICBjYWNoZVNpemUsXG4gIHByZWZpeCxcbiAgc2VwYXJhdG9yLFxuICBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSxcbiAgZXh0ZW5kID0ge30sXG4gIG92ZXJyaWRlID0ge31cbn0pIHtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnY2FjaGVTaXplJywgY2FjaGVTaXplKTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAncHJlZml4JywgcHJlZml4KTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnc2VwYXJhdG9yJywgc2VwYXJhdG9yKTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUnLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSk7XG4gIGZvciAoY29uc3QgY29uZmlnS2V5IGluIG92ZXJyaWRlKSB7XG4gICAgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzKGJhc2VDb25maWdbY29uZmlnS2V5XSwgb3ZlcnJpZGVbY29uZmlnS2V5XSk7XG4gIH1cbiAgZm9yIChjb25zdCBrZXkgaW4gZXh0ZW5kKSB7XG4gICAgbWVyZ2VDb25maWdQcm9wZXJ0aWVzKGJhc2VDb25maWdba2V5XSwgZXh0ZW5kW2tleV0pO1xuICB9XG4gIHJldHVybiBiYXNlQ29uZmlnO1xufVxuZnVuY3Rpb24gb3ZlcnJpZGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBvdmVycmlkZUtleSwgb3ZlcnJpZGVWYWx1ZSkge1xuICBpZiAob3ZlcnJpZGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYmFzZU9iamVjdFtvdmVycmlkZUtleV0gPSBvdmVycmlkZVZhbHVlO1xuICB9XG59XG5mdW5jdGlvbiBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoYmFzZU9iamVjdCwgb3ZlcnJpZGVPYmplY3QpIHtcbiAgaWYgKG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZU9iamVjdCwga2V5LCBvdmVycmlkZU9iamVjdFtrZXldKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIG1lcmdlQ29uZmlnUHJvcGVydGllcyhiYXNlT2JqZWN0LCBtZXJnZU9iamVjdCkge1xuICBpZiAobWVyZ2VPYmplY3QpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBtZXJnZU9iamVjdCkge1xuICAgICAgY29uc3QgbWVyZ2VWYWx1ZSA9IG1lcmdlT2JqZWN0W2tleV07XG4gICAgICBpZiAobWVyZ2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJhc2VPYmplY3Rba2V5XSA9IChiYXNlT2JqZWN0W2tleV0gfHwgW10pLmNvbmNhdChtZXJnZVZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGV4dGVuZFRhaWx3aW5kTWVyZ2UoY29uZmlnRXh0ZW5zaW9uLCAuLi5jcmVhdGVDb25maWcpIHtcbiAgcmV0dXJuIHR5cGVvZiBjb25maWdFeHRlbnNpb24gPT09ICdmdW5jdGlvbicgPyBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcsIGNvbmZpZ0V4dGVuc2lvbiwgLi4uY3JlYXRlQ29uZmlnKSA6IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoKCkgPT4gbWVyZ2VDb25maWdzKGdldERlZmF1bHRDb25maWcoKSwgY29uZmlnRXh0ZW5zaW9uKSwgLi4uY3JlYXRlQ29uZmlnKTtcbn1cbmNvbnN0IHR3TWVyZ2UgPSAvKiNfX1BVUkVfXyovY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnKTtcbmV4cG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UsIGV4dGVuZFRhaWx3aW5kTWVyZ2UsIGZyb21UaGVtZSwgZ2V0RGVmYXVsdENvbmZpZywgbWVyZ2VDb25maWdzLCB0d0pvaW4sIHR3TWVyZ2UsIHZhbGlkYXRvcnMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS1tanMubWpzLm1hcFxuIiwiZnVuY3Rpb24gaXNPYmplY3QoaXRlbSkge1xuICByZXR1cm4gaXRlbSAhPT0gbnVsbCAmJiB0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIiAmJiBpdGVtLmNvbnN0cnVjdG9yID09PSBPYmplY3Q7XG59XG5cbmV4cG9ydCB7IGlzT2JqZWN0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1vYmplY3QubWpzLm1hcFxuIiwiaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuL2lzLW9iamVjdC5tanMnO1xuXG5mdW5jdGlvbiBjbG9uZURlZXAoc291cmNlKSB7XG4gIGlmICghaXNPYmplY3Qoc291cmNlKSkge1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cbiAgY29uc3Qgb3V0cHV0ID0ge307XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIG91dHB1dFtrZXldID0gY2xvbmVEZWVwKHNvdXJjZVtrZXldKTtcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5leHBvcnQgeyBjbG9uZURlZXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNsb25lLWRlZXAubWpzLm1hcFxuIiwiaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnLi9jbG9uZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4vaXMtb2JqZWN0Lm1qcyc7XG5cbmZ1bmN0aW9uIG1lcmdlRGVlcCh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoaXNPYmplY3Qoc291cmNlKSAmJiBPYmplY3Qua2V5cyhzb3VyY2UpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjbG9uZURlZXAoeyAuLi50YXJnZXQsIC4uLnNvdXJjZSB9KTtcbiAgfVxuICBjb25zdCBvdXRwdXQgPSB7IC4uLnRhcmdldCwgLi4uc291cmNlIH07XG4gIGlmIChpc09iamVjdChzb3VyY2UpICYmIGlzT2JqZWN0KHRhcmdldCkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChpc09iamVjdChzb3VyY2Vba2V5XSkgJiYga2V5IGluIHRhcmdldCAmJiBpc09iamVjdCh0YXJnZXRba2V5XSkpIHtcbiAgICAgICAgb3V0cHV0W2tleV0gPSBtZXJnZURlZXAodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dFtrZXldID0gaXNPYmplY3Qoc291cmNlW2tleV0pID8gY2xvbmVEZWVwKHNvdXJjZVtrZXldKSA6IHNvdXJjZVtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5leHBvcnQgeyBtZXJnZURlZXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlLWRlZXAubWpzLm1hcFxuIiwiZnVuY3Rpb24gY3JlYXRlVGhlbWUoaW5wdXQpIHtcbiAgcmV0dXJuIGlucHV0O1xufVxuXG5leHBvcnQgeyBjcmVhdGVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlLXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgYWNjb3JkaW9uVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImRpdmlkZS15IGRpdmlkZS1ncmF5LTIwMCBib3JkZXItZ3JheS0yMDAgZGFyazpkaXZpZGUtZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDBcIixcbiAgICBmbHVzaDoge1xuICAgICAgb2ZmOiBcInJvdW5kZWQtbGcgYm9yZGVyXCIsXG4gICAgICBvbjogXCJib3JkZXItYlwiXG4gICAgfVxuICB9LFxuICBjb250ZW50OiB7XG4gICAgYmFzZTogXCJwLTUgZmlyc3Q6cm91bmRlZC10LWxnIGxhc3Q6cm91bmRlZC1iLWxnIGRhcms6YmctZ3JheS05MDBcIlxuICB9LFxuICB0aXRsZToge1xuICAgIGFycm93OiB7XG4gICAgICBiYXNlOiBcImgtNiB3LTYgc2hyaW5rLTBcIixcbiAgICAgIG9wZW46IHtcbiAgICAgICAgb2ZmOiBcIlwiLFxuICAgICAgICBvbjogXCJyb3RhdGUtMTgwXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIGJhc2U6IFwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTUgdGV4dC1sZWZ0IGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDAgZmlyc3Q6cm91bmRlZC10LWxnIGxhc3Q6cm91bmRlZC1iLWxnIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgIGZsdXNoOiB7XG4gICAgICBvZmY6IFwiaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0yMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS04MDBcIixcbiAgICAgIG9uOiBcImJnLXRyYW5zcGFyZW50IGRhcms6YmctdHJhbnNwYXJlbnRcIlxuICAgIH0sXG4gICAgaGVhZGluZzogXCJcIixcbiAgICBvcGVuOiB7XG4gICAgICBvZmY6IFwiXCIsXG4gICAgICBvbjogXCJiZy1ncmF5LTEwMCB0ZXh0LWdyYXktOTAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBhY2NvcmRpb25UaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBhbGVydFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImZsZXggZmxleC1jb2wgZ2FwLTIgcC00IHRleHQtc21cIixcbiAgYm9yZGVyQWNjZW50OiBcImJvcmRlci10LTRcIixcbiAgY2xvc2VCdXR0b246IHtcbiAgICBiYXNlOiBcIi1tLTEuNSBtbC1hdXRvIGlubGluZS1mbGV4IGgtOCB3LTggcm91bmRlZC1sZyBwLTEuNSBmb2N1czpyaW5nLTJcIixcbiAgICBpY29uOiBcImgtNSB3LTVcIixcbiAgICBjb2xvcjoge1xuICAgICAgaW5mbzogXCJiZy1jeWFuLTEwMCB0ZXh0LWN5YW4tNTAwIGhvdmVyOmJnLWN5YW4tMjAwIGZvY3VzOnJpbmctY3lhbi00MDAgZGFyazpiZy1jeWFuLTIwMCBkYXJrOnRleHQtY3lhbi02MDAgZGFyazpob3ZlcjpiZy1jeWFuLTMwMFwiLFxuICAgICAgZ3JheTogXCJiZy1ncmF5LTEwMCB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMjAwIGZvY3VzOnJpbmctZ3JheS00MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICAgIGZhaWx1cmU6IFwiYmctcmVkLTEwMCB0ZXh0LXJlZC01MDAgaG92ZXI6YmctcmVkLTIwMCBmb2N1czpyaW5nLXJlZC00MDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTMwMFwiLFxuICAgICAgc3VjY2VzczogXCJiZy1ncmVlbi0xMDAgdGV4dC1ncmVlbi01MDAgaG92ZXI6YmctZ3JlZW4tMjAwIGZvY3VzOnJpbmctZ3JlZW4tNDAwIGRhcms6YmctZ3JlZW4tMjAwIGRhcms6dGV4dC1ncmVlbi02MDAgZGFyazpob3ZlcjpiZy1ncmVlbi0zMDBcIixcbiAgICAgIHdhcm5pbmc6IFwiYmcteWVsbG93LTEwMCB0ZXh0LXllbGxvdy01MDAgaG92ZXI6YmcteWVsbG93LTIwMCBmb2N1czpyaW5nLXllbGxvdy00MDAgZGFyazpiZy15ZWxsb3ctMjAwIGRhcms6dGV4dC15ZWxsb3ctNjAwIGRhcms6aG92ZXI6YmcteWVsbG93LTMwMFwiLFxuICAgICAgcmVkOiBcImJnLXJlZC0xMDAgdGV4dC1yZWQtNTAwIGhvdmVyOmJnLXJlZC0yMDAgZm9jdXM6cmluZy1yZWQtNDAwIGRhcms6YmctcmVkLTIwMCBkYXJrOnRleHQtcmVkLTYwMCBkYXJrOmhvdmVyOmJnLXJlZC0zMDBcIixcbiAgICAgIGdyZWVuOiBcImJnLWdyZWVuLTEwMCB0ZXh0LWdyZWVuLTUwMCBob3ZlcjpiZy1ncmVlbi0yMDAgZm9jdXM6cmluZy1ncmVlbi00MDAgZGFyazpiZy1ncmVlbi0yMDAgZGFyazp0ZXh0LWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTMwMFwiLFxuICAgICAgeWVsbG93OiBcImJnLXllbGxvdy0xMDAgdGV4dC15ZWxsb3ctNTAwIGhvdmVyOmJnLXllbGxvdy0yMDAgZm9jdXM6cmluZy15ZWxsb3ctNDAwIGRhcms6YmcteWVsbG93LTIwMCBkYXJrOnRleHQteWVsbG93LTYwMCBkYXJrOmhvdmVyOmJnLXllbGxvdy0zMDBcIixcbiAgICAgIGJsdWU6IFwiYmctYmx1ZS0xMDAgdGV4dC1ibHVlLTUwMCBob3ZlcjpiZy1ibHVlLTIwMCBmb2N1czpyaW5nLWJsdWUtNDAwIGRhcms6YmctYmx1ZS0yMDAgZGFyazp0ZXh0LWJsdWUtNjAwIGRhcms6aG92ZXI6YmctYmx1ZS0zMDBcIixcbiAgICAgIGN5YW46IFwiYmctY3lhbi0xMDAgdGV4dC1jeWFuLTUwMCBob3ZlcjpiZy1jeWFuLTIwMCBmb2N1czpyaW5nLWN5YW4tNDAwIGRhcms6YmctY3lhbi0yMDAgZGFyazp0ZXh0LWN5YW4tNjAwIGRhcms6aG92ZXI6YmctY3lhbi0zMDBcIixcbiAgICAgIHBpbms6IFwiYmctcGluay0xMDAgdGV4dC1waW5rLTUwMCBob3ZlcjpiZy1waW5rLTIwMCBmb2N1czpyaW5nLXBpbmstNDAwIGRhcms6YmctcGluay0yMDAgZGFyazp0ZXh0LXBpbmstNjAwIGRhcms6aG92ZXI6YmctcGluay0zMDBcIixcbiAgICAgIGxpbWU6IFwiYmctbGltZS0xMDAgdGV4dC1saW1lLTUwMCBob3ZlcjpiZy1saW1lLTIwMCBmb2N1czpyaW5nLWxpbWUtNDAwIGRhcms6YmctbGltZS0yMDAgZGFyazp0ZXh0LWxpbWUtNjAwIGRhcms6aG92ZXI6YmctbGltZS0zMDBcIixcbiAgICAgIGRhcms6IFwiYmctZ3JheS0xMDAgdGV4dC1ncmF5LTUwMCBob3ZlcjpiZy1ncmF5LTIwMCBmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6YmctZ3JheS0yMDAgZGFyazp0ZXh0LWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS0zMDBcIixcbiAgICAgIGluZGlnbzogXCJiZy1pbmRpZ28tMTAwIHRleHQtaW5kaWdvLTUwMCBob3ZlcjpiZy1pbmRpZ28tMjAwIGZvY3VzOnJpbmctaW5kaWdvLTQwMCBkYXJrOmJnLWluZGlnby0yMDAgZGFyazp0ZXh0LWluZGlnby02MDAgZGFyazpob3ZlcjpiZy1pbmRpZ28tMzAwXCIsXG4gICAgICBwdXJwbGU6IFwiYmctcHVycGxlLTEwMCB0ZXh0LXB1cnBsZS01MDAgaG92ZXI6YmctcHVycGxlLTIwMCBmb2N1czpyaW5nLXB1cnBsZS00MDAgZGFyazpiZy1wdXJwbGUtMjAwIGRhcms6dGV4dC1wdXJwbGUtNjAwIGRhcms6aG92ZXI6YmctcHVycGxlLTMwMFwiLFxuICAgICAgdGVhbDogXCJiZy10ZWFsLTEwMCB0ZXh0LXRlYWwtNTAwIGhvdmVyOmJnLXRlYWwtMjAwIGZvY3VzOnJpbmctdGVhbC00MDAgZGFyazpiZy10ZWFsLTIwMCBkYXJrOnRleHQtdGVhbC02MDAgZGFyazpob3ZlcjpiZy10ZWFsLTMwMFwiLFxuICAgICAgbGlnaHQ6IFwiYmctZ3JheS01MCB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOnJpbmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0yMDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgIH1cbiAgfSxcbiAgY29sb3I6IHtcbiAgICBpbmZvOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTEwMCB0ZXh0LWN5YW4tNzAwIGRhcms6YmctY3lhbi0yMDAgZGFyazp0ZXh0LWN5YW4tODAwXCIsXG4gICAgZ3JheTogXCJib3JkZXItZ3JheS01MDAgYmctZ3JheS0xMDAgdGV4dC1ncmF5LTcwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTMwMFwiLFxuICAgIGZhaWx1cmU6IFwiYm9yZGVyLXJlZC01MDAgYmctcmVkLTEwMCB0ZXh0LXJlZC03MDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtODAwXCIsXG4gICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTEwMCB0ZXh0LWdyZWVuLTcwMCBkYXJrOmJnLWdyZWVuLTIwMCBkYXJrOnRleHQtZ3JlZW4tODAwXCIsXG4gICAgd2FybmluZzogXCJib3JkZXIteWVsbG93LTUwMCBiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTcwMCBkYXJrOmJnLXllbGxvdy0yMDAgZGFyazp0ZXh0LXllbGxvdy04MDBcIixcbiAgICByZWQ6IFwiYm9yZGVyLXJlZC01MDAgYmctcmVkLTEwMCB0ZXh0LXJlZC03MDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtODAwXCIsXG4gICAgZ3JlZW46IFwiYm9yZGVyLWdyZWVuLTUwMCBiZy1ncmVlbi0xMDAgdGV4dC1ncmVlbi03MDAgZGFyazpiZy1ncmVlbi0yMDAgZGFyazp0ZXh0LWdyZWVuLTgwMFwiLFxuICAgIHllbGxvdzogXCJib3JkZXIteWVsbG93LTUwMCBiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTcwMCBkYXJrOmJnLXllbGxvdy0yMDAgZGFyazp0ZXh0LXllbGxvdy04MDBcIixcbiAgICBibHVlOiBcImJvcmRlci1ibHVlLTUwMCBiZy1ibHVlLTEwMCB0ZXh0LWJsdWUtNzAwIGRhcms6YmctYmx1ZS0yMDAgZGFyazp0ZXh0LWJsdWUtODAwXCIsXG4gICAgY3lhbjogXCJib3JkZXItY3lhbi01MDAgYmctY3lhbi0xMDAgdGV4dC1jeWFuLTcwMCBkYXJrOmJnLWN5YW4tMjAwIGRhcms6dGV4dC1jeWFuLTgwMFwiLFxuICAgIHBpbms6IFwiYm9yZGVyLXBpbmstNTAwIGJnLXBpbmstMTAwIHRleHQtcGluay03MDAgZGFyazpiZy1waW5rLTIwMCBkYXJrOnRleHQtcGluay04MDBcIixcbiAgICBsaW1lOiBcImJvcmRlci1saW1lLTUwMCBiZy1saW1lLTEwMCB0ZXh0LWxpbWUtNzAwIGRhcms6YmctbGltZS0yMDAgZGFyazp0ZXh0LWxpbWUtODAwXCIsXG4gICAgZGFyazogXCJib3JkZXItZ3JheS02MDAgYmctZ3JheS04MDAgdGV4dC1ncmF5LTIwMCBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTMwMFwiLFxuICAgIGluZGlnbzogXCJib3JkZXItaW5kaWdvLTUwMCBiZy1pbmRpZ28tMTAwIHRleHQtaW5kaWdvLTcwMCBkYXJrOmJnLWluZGlnby0yMDAgZGFyazp0ZXh0LWluZGlnby04MDBcIixcbiAgICBwdXJwbGU6IFwiYm9yZGVyLXB1cnBsZS01MDAgYmctcHVycGxlLTEwMCB0ZXh0LXB1cnBsZS03MDAgZGFyazpiZy1wdXJwbGUtMjAwIGRhcms6dGV4dC1wdXJwbGUtODAwXCIsXG4gICAgdGVhbDogXCJib3JkZXItdGVhbC01MDAgYmctdGVhbC0xMDAgdGV4dC10ZWFsLTcwMCBkYXJrOmJnLXRlYWwtMjAwIGRhcms6dGV4dC10ZWFsLTgwMFwiLFxuICAgIGxpZ2h0OiBcImJvcmRlci1ncmF5LTQwMCBiZy1ncmF5LTUwIHRleHQtZ3JheS02MDAgZGFyazpiZy1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS0yMDBcIlxuICB9LFxuICBpY29uOiBcIm1yLTMgaW5saW5lIGgtNSB3LTUgZmxleC1zaHJpbmstMFwiLFxuICByb3VuZGVkOiBcInJvdW5kZWQtbGdcIixcbiAgd3JhcHBlcjogXCJmbGV4IGl0ZW1zLWNlbnRlclwiXG59KTtcblxuZXhwb3J0IHsgYWxlcnRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBhdmF0YXJUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC00IHJvdW5kZWRcIixcbiAgICBib3JkZXJlZDogXCJwLTEgcmluZy0yXCIsXG4gICAgcm91bmRlZDogXCJyb3VuZGVkLWZ1bGxcIixcbiAgICBjb2xvcjoge1xuICAgICAgZGFyazogXCJyaW5nLWdyYXktODAwIGRhcms6cmluZy1ncmF5LTgwMFwiLFxuICAgICAgZmFpbHVyZTogXCJyaW5nLXJlZC01MDAgZGFyazpyaW5nLXJlZC03MDBcIixcbiAgICAgIGdyYXk6IFwicmluZy1ncmF5LTUwMCBkYXJrOnJpbmctZ3JheS00MDBcIixcbiAgICAgIGluZm86IFwicmluZy1jeWFuLTQwMCBkYXJrOnJpbmctY3lhbi04MDBcIixcbiAgICAgIGxpZ2h0OiBcInJpbmctZ3JheS0zMDAgZGFyazpyaW5nLWdyYXktNTAwXCIsXG4gICAgICBwdXJwbGU6IFwicmluZy1wdXJwbGUtNTAwIGRhcms6cmluZy1wdXJwbGUtNjAwXCIsXG4gICAgICBzdWNjZXNzOiBcInJpbmctZ3JlZW4tNTAwIGRhcms6cmluZy1ncmVlbi01MDBcIixcbiAgICAgIHdhcm5pbmc6IFwicmluZy15ZWxsb3ctMzAwIGRhcms6cmluZy15ZWxsb3ctNTAwXCIsXG4gICAgICBwaW5rOiBcInJpbmctcGluay01MDAgZGFyazpyaW5nLXBpbmstNTAwXCJcbiAgICB9LFxuICAgIGltZzoge1xuICAgICAgYmFzZTogXCJyb3VuZGVkXCIsXG4gICAgICBvZmY6IFwicmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIGJnLWdyYXktMTAwIGRhcms6YmctZ3JheS02MDBcIixcbiAgICAgIG9uOiBcIlwiLFxuICAgICAgcGxhY2Vob2xkZXI6IFwiYWJzb2x1dGUgLWJvdHRvbS0xIGgtYXV0byB3LWF1dG8gdGV4dC1ncmF5LTQwMFwiXG4gICAgfSxcbiAgICBzaXplOiB7XG4gICAgICB4czogXCJoLTYgdy02XCIsXG4gICAgICBzbTogXCJoLTggdy04XCIsXG4gICAgICBtZDogXCJoLTEwIHctMTBcIixcbiAgICAgIGxnOiBcImgtMjAgdy0yMFwiLFxuICAgICAgeGw6IFwiaC0zNiB3LTM2XCJcbiAgICB9LFxuICAgIHN0YWNrZWQ6IFwicmluZy0yIHJpbmctZ3JheS0zMDAgZGFyazpyaW5nLWdyYXktNTAwXCIsXG4gICAgc3RhdHVzUG9zaXRpb246IHtcbiAgICAgIFwiYm90dG9tLWxlZnRcIjogXCItYm90dG9tLTEgLWxlZnQtMVwiLFxuICAgICAgXCJib3R0b20tY2VudGVyXCI6IFwiLWJvdHRvbS0xXCIsXG4gICAgICBcImJvdHRvbS1yaWdodFwiOiBcIi1ib3R0b20tMSAtcmlnaHQtMVwiLFxuICAgICAgXCJ0b3AtbGVmdFwiOiBcIi1sZWZ0LTEgLXRvcC0xXCIsXG4gICAgICBcInRvcC1jZW50ZXJcIjogXCItdG9wLTFcIixcbiAgICAgIFwidG9wLXJpZ2h0XCI6IFwiLXJpZ2h0LTEgLXRvcC0xXCIsXG4gICAgICBcImNlbnRlci1yaWdodFwiOiBcIi1yaWdodC0xXCIsXG4gICAgICBjZW50ZXI6IFwiXCIsXG4gICAgICBcImNlbnRlci1sZWZ0XCI6IFwiLWxlZnQtMVwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgIGF3YXk6IFwiYmcteWVsbG93LTQwMFwiLFxuICAgICAgYmFzZTogXCJhYnNvbHV0ZSBoLTMuNSB3LTMuNSByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktODAwXCIsXG4gICAgICBidXN5OiBcImJnLXJlZC00MDBcIixcbiAgICAgIG9mZmxpbmU6IFwiYmctZ3JheS00MDBcIixcbiAgICAgIG9ubGluZTogXCJiZy1ncmVlbi00MDBcIlxuICAgIH0sXG4gICAgaW5pdGlhbHM6IHtcbiAgICAgIHRleHQ6IFwiZm9udC1tZWRpdW0gdGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0zMDBcIixcbiAgICAgIGJhc2U6IFwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG92ZXJmbG93LWhpZGRlbiBiZy1ncmF5LTEwMCBkYXJrOmJnLWdyYXktNjAwXCJcbiAgICB9XG4gIH0sXG4gIGdyb3VwOiB7XG4gICAgYmFzZTogXCJmbGV4IC1zcGFjZS14LTRcIlxuICB9LFxuICBncm91cENvdW50ZXI6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlIGZsZXggaC0xMCB3LTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYmctZ3JheS03MDAgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXdoaXRlIHJpbmctMiByaW5nLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktNjAwIGRhcms6cmluZy1ncmF5LTUwMFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBhdmF0YXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBiYWRnZVRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJmbGV4IGgtZml0IGl0ZW1zLWNlbnRlciBnYXAtMSBmb250LXNlbWlib2xkXCIsXG4gICAgY29sb3I6IHtcbiAgICAgIGluZm86IFwiYmctY3lhbi0xMDAgdGV4dC1jeWFuLTgwMCBncm91cC1ob3ZlcjpiZy1jeWFuLTIwMCBkYXJrOmJnLWN5YW4tMjAwIGRhcms6dGV4dC1jeWFuLTgwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWN5YW4tMzAwXCIsXG4gICAgICBncmF5OiBcImJnLWdyYXktMTAwIHRleHQtZ3JheS04MDAgZ3JvdXAtaG92ZXI6YmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpncm91cC1ob3ZlcjpiZy1ncmF5LTYwMFwiLFxuICAgICAgZmFpbHVyZTogXCJiZy1yZWQtMTAwIHRleHQtcmVkLTgwMCBncm91cC1ob3ZlcjpiZy1yZWQtMjAwIGRhcms6YmctcmVkLTIwMCBkYXJrOnRleHQtcmVkLTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLXJlZC0zMDBcIixcbiAgICAgIHN1Y2Nlc3M6IFwiYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwIGdyb3VwLWhvdmVyOmJnLWdyZWVuLTIwMCBkYXJrOmJnLWdyZWVuLTIwMCBkYXJrOnRleHQtZ3JlZW4tOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctZ3JlZW4tMzAwXCIsXG4gICAgICB3YXJuaW5nOiBcImJnLXllbGxvdy0xMDAgdGV4dC15ZWxsb3ctODAwIGdyb3VwLWhvdmVyOmJnLXllbGxvdy0yMDAgZGFyazpiZy15ZWxsb3ctMjAwIGRhcms6dGV4dC15ZWxsb3ctOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmcteWVsbG93LTMwMFwiLFxuICAgICAgaW5kaWdvOiBcImJnLWluZGlnby0xMDAgdGV4dC1pbmRpZ28tODAwIGdyb3VwLWhvdmVyOmJnLWluZGlnby0yMDAgZGFyazpiZy1pbmRpZ28tMjAwIGRhcms6dGV4dC1pbmRpZ28tOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctaW5kaWdvLTMwMFwiLFxuICAgICAgcHVycGxlOiBcImJnLXB1cnBsZS0xMDAgdGV4dC1wdXJwbGUtODAwIGdyb3VwLWhvdmVyOmJnLXB1cnBsZS0yMDAgZGFyazpiZy1wdXJwbGUtMjAwIGRhcms6dGV4dC1wdXJwbGUtOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctcHVycGxlLTMwMFwiLFxuICAgICAgcGluazogXCJiZy1waW5rLTEwMCB0ZXh0LXBpbmstODAwIGdyb3VwLWhvdmVyOmJnLXBpbmstMjAwIGRhcms6YmctcGluay0yMDAgZGFyazp0ZXh0LXBpbmstOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctcGluay0zMDBcIixcbiAgICAgIGJsdWU6IFwiYmctYmx1ZS0xMDAgdGV4dC1ibHVlLTgwMCBncm91cC1ob3ZlcjpiZy1ibHVlLTIwMCBkYXJrOmJnLWJsdWUtMjAwIGRhcms6dGV4dC1ibHVlLTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWJsdWUtMzAwXCIsXG4gICAgICBjeWFuOiBcImJnLWN5YW4tMTAwIHRleHQtY3lhbi04MDAgZ3JvdXAtaG92ZXI6YmctY3lhbi0yMDAgZGFyazpiZy1jeWFuLTIwMCBkYXJrOnRleHQtY3lhbi05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1jeWFuLTMwMFwiLFxuICAgICAgZGFyazogXCJiZy1ncmF5LTYwMCB0ZXh0LWdyYXktMTAwIGdyb3VwLWhvdmVyOmJnLWdyYXktNTAwIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMjAwIGRhcms6Z3JvdXAtaG92ZXI6YmctZ3JheS03MDBcIixcbiAgICAgIGxpZ2h0OiBcImJnLWdyYXktMjAwIHRleHQtZ3JheS04MDAgZ3JvdXAtaG92ZXI6YmctZ3JheS0zMDAgZGFyazpiZy1ncmF5LTQwMCBkYXJrOnRleHQtZ3JheS05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1ncmF5LTUwMFwiLFxuICAgICAgZ3JlZW46IFwiYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwIGdyb3VwLWhvdmVyOmJnLWdyZWVuLTIwMCBkYXJrOmJnLWdyZWVuLTIwMCBkYXJrOnRleHQtZ3JlZW4tOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctZ3JlZW4tMzAwXCIsXG4gICAgICBsaW1lOiBcImJnLWxpbWUtMTAwIHRleHQtbGltZS04MDAgZ3JvdXAtaG92ZXI6YmctbGltZS0yMDAgZGFyazpiZy1saW1lLTIwMCBkYXJrOnRleHQtbGltZS05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1saW1lLTMwMFwiLFxuICAgICAgcmVkOiBcImJnLXJlZC0xMDAgdGV4dC1yZWQtODAwIGdyb3VwLWhvdmVyOmJnLXJlZC0yMDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctcmVkLTMwMFwiLFxuICAgICAgdGVhbDogXCJiZy10ZWFsLTEwMCB0ZXh0LXRlYWwtODAwIGdyb3VwLWhvdmVyOmJnLXRlYWwtMjAwIGRhcms6YmctdGVhbC0yMDAgZGFyazp0ZXh0LXRlYWwtOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctdGVhbC0zMDBcIixcbiAgICAgIHllbGxvdzogXCJiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTgwMCBncm91cC1ob3ZlcjpiZy15ZWxsb3ctMjAwIGRhcms6YmcteWVsbG93LTIwMCBkYXJrOnRleHQteWVsbG93LTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLXllbGxvdy0zMDBcIlxuICAgIH0sXG4gICAgaHJlZjogXCJncm91cFwiLFxuICAgIHNpemU6IHtcbiAgICAgIHhzOiBcInAtMSB0ZXh0LXhzXCIsXG4gICAgICBzbTogXCJwLTEuNSB0ZXh0LXNtXCJcbiAgICB9XG4gIH0sXG4gIGljb246IHtcbiAgICBvZmY6IFwicm91bmRlZCBweC0yIHB5LTAuNVwiLFxuICAgIG9uOiBcInJvdW5kZWQtZnVsbCBwLTEuNVwiLFxuICAgIHNpemU6IHtcbiAgICAgIHhzOiBcImgtMyB3LTNcIixcbiAgICAgIHNtOiBcImgtMy41IHctMy41XCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBiYWRnZVRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGJsb2NrcXVvdGVUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwidGV4dC14bCBmb250LXNlbWlib2xkIGl0YWxpYyB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBibG9ja3F1b3RlVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgYnJlYWRjcnVtYlRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJcIixcbiAgICBsaXN0OiBcImZsZXggaXRlbXMtY2VudGVyXCJcbiAgfSxcbiAgaXRlbToge1xuICAgIGJhc2U6IFwiZ3JvdXAgZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgICBjaGV2cm9uOiBcIm14LTEgaC00IHctNCB0ZXh0LWdyYXktNDAwIGdyb3VwLWZpcnN0OmhpZGRlbiBtZDpteC0yXCIsXG4gICAgaHJlZjoge1xuICAgICAgb2ZmOiBcImZsZXggaXRlbXMtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICAgIG9uOiBcImZsZXggaXRlbXMtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBob3Zlcjp0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgIH0sXG4gICAgaWNvbjogXCJtci0yIGgtNCB3LTRcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgYnJlYWRjcnVtYlRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGJ1dHRvblRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImdyb3VwIHJlbGF0aXZlIGZsZXggaXRlbXMtc3RyZXRjaCBqdXN0aWZ5LWNlbnRlciBwLTAuNSB0ZXh0LWNlbnRlciBmb250LW1lZGl1bSB0cmFuc2l0aW9uLVtjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2UsYm94LXNoYWRvd10gZm9jdXM6ei0xMCBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgZnVsbFNpemVkOiBcInctZnVsbFwiLFxuICBjb2xvcjoge1xuICAgIGRhcms6IFwiYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1ncmF5LTgwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyYXktMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JheS05MDAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS04MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWdyYXktNzAwXCIsXG4gICAgZmFpbHVyZTogXCJib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLXJlZC03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1yZWQtMzAwIGVuYWJsZWQ6aG92ZXI6YmctcmVkLTgwMCBkYXJrOmJnLXJlZC02MDAgZGFyazpmb2N1czpyaW5nLXJlZC05MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXJlZC03MDBcIixcbiAgICBncmF5OiBcIjpyaW5nLWN5YW4tNzAwIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCBmb2N1czp0ZXh0LWN5YW4tNzAwIGZvY3VzOnJpbmctNCBlbmFibGVkOmhvdmVyOmJnLWdyYXktMTAwIGVuYWJsZWQ6aG92ZXI6dGV4dC1jeWFuLTcwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLXRyYW5zcGFyZW50IGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctZ3JheS03MDAgZGFyazplbmFibGVkOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICBpbmZvOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctY3lhbi03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWN5YW4tODAwIGRhcms6YmctY3lhbi02MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tODAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1jeWFuLTcwMFwiLFxuICAgIGxpZ2h0OiBcImJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYXktMTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ncmF5LTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWdyYXktNzAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1ncmF5LTcwMFwiLFxuICAgIHB1cnBsZTogXCJib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLXB1cnBsZS03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMzAwIGVuYWJsZWQ6aG92ZXI6YmctcHVycGxlLTgwMCBkYXJrOmJnLXB1cnBsZS02MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS05MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXB1cnBsZS03MDBcIixcbiAgICBzdWNjZXNzOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctZ3JlZW4tNzAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JlZW4tMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JlZW4tODAwIGRhcms6YmctZ3JlZW4tNjAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWdyZWVuLTcwMFwiLFxuICAgIHdhcm5pbmc6IFwiYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy15ZWxsb3ctNDAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmcteWVsbG93LTMwMCBlbmFibGVkOmhvdmVyOmJnLXllbGxvdy01MDAgZGFyazpmb2N1czpyaW5nLXllbGxvdy05MDBcIixcbiAgICBibHVlOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctYmx1ZS03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBlbmFibGVkOmhvdmVyOmJnLWJsdWUtODAwIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIixcbiAgICBjeWFuOiBcImJvcmRlciBib3JkZXItY3lhbi0zMDAgYmctd2hpdGUgdGV4dC1jeWFuLTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWN5YW4tMTAwIGRhcms6Ym9yZGVyLWN5YW4tNjAwIGRhcms6YmctY3lhbi02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1jeWFuLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWN5YW4tNzAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1jeWFuLTcwMFwiLFxuICAgIGdyZWVuOiBcImJvcmRlciBib3JkZXItZ3JlZW4tMzAwIGJnLXdoaXRlIHRleHQtZ3JlZW4tOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyZWVuLTEwMCBkYXJrOmJvcmRlci1ncmVlbi02MDAgZGFyazpiZy1ncmVlbi02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ncmVlbi03MDAgZGFyazplbmFibGVkOmhvdmVyOmJvcmRlci1ncmVlbi03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWdyZWVuLTcwMFwiLFxuICAgIGluZGlnbzogXCJib3JkZXIgYm9yZGVyLWluZGlnby0zMDAgYmctd2hpdGUgdGV4dC1pbmRpZ28tOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWluZGlnby0zMDAgZW5hYmxlZDpob3ZlcjpiZy1pbmRpZ28tMTAwIGRhcms6Ym9yZGVyLWluZGlnby02MDAgZGFyazpiZy1pbmRpZ28tNjAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctaW5kaWdvLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWluZGlnby03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWluZGlnby03MDBcIixcbiAgICBsaW1lOiBcImJvcmRlciBib3JkZXItbGltZS0zMDAgYmctd2hpdGUgdGV4dC1saW1lLTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1saW1lLTMwMCBlbmFibGVkOmhvdmVyOmJnLWxpbWUtMTAwIGRhcms6Ym9yZGVyLWxpbWUtNjAwIGRhcms6YmctbGltZS02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1saW1lLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWxpbWUtNzAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1saW1lLTcwMFwiLFxuICAgIHBpbms6IFwiYm9yZGVyIGJvcmRlci1waW5rLTMwMCBiZy13aGl0ZSB0ZXh0LXBpbmstOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXBpbmstMzAwIGVuYWJsZWQ6aG92ZXI6YmctcGluay0xMDAgZGFyazpib3JkZXItcGluay02MDAgZGFyazpiZy1waW5rLTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLXBpbmstNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItcGluay03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXBpbmstNzAwXCIsXG4gICAgcmVkOiBcImJvcmRlciBib3JkZXItcmVkLTMwMCBiZy13aGl0ZSB0ZXh0LXJlZC05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBlbmFibGVkOmhvdmVyOmJnLXJlZC0xMDAgZGFyazpib3JkZXItcmVkLTYwMCBkYXJrOmJnLXJlZC02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1yZWQtNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItcmVkLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctcmVkLTcwMFwiLFxuICAgIHRlYWw6IFwiYm9yZGVyIGJvcmRlci10ZWFsLTMwMCBiZy13aGl0ZSB0ZXh0LXRlYWwtOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXRlYWwtMzAwIGVuYWJsZWQ6aG92ZXI6YmctdGVhbC0xMDAgZGFyazpib3JkZXItdGVhbC02MDAgZGFyazpiZy10ZWFsLTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLXRlYWwtNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItdGVhbC03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXRlYWwtNzAwXCIsXG4gICAgeWVsbG93OiBcImJvcmRlciBib3JkZXIteWVsbG93LTMwMCBiZy13aGl0ZSB0ZXh0LXllbGxvdy05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmcteWVsbG93LTMwMCBlbmFibGVkOmhvdmVyOmJnLXllbGxvdy0xMDAgZGFyazpib3JkZXIteWVsbG93LTYwMCBkYXJrOmJnLXllbGxvdy02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXIteWVsbG93LTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmcteWVsbG93LTcwMFwiXG4gIH0sXG4gIGRpc2FibGVkOiBcImN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwXCIsXG4gIGlzUHJvY2Vzc2luZzogXCJjdXJzb3Itd2FpdFwiLFxuICBzcGlubmVyU2xvdDogXCJhYnNvbHV0ZSB0b3AtMCBmbGV4IGgtZnVsbCBpdGVtcy1jZW50ZXJcIixcbiAgc3Bpbm5lckxlZnRQb3NpdGlvbjoge1xuICAgIHhzOiBcImxlZnQtMlwiLFxuICAgIHNtOiBcImxlZnQtM1wiLFxuICAgIG1kOiBcImxlZnQtNFwiLFxuICAgIGxnOiBcImxlZnQtNVwiLFxuICAgIHhsOiBcImxlZnQtNlwiXG4gIH0sXG4gIGdyYWRpZW50OiB7XG4gICAgY3lhbjogXCJiZy1ncmFkaWVudC10by1yIGZyb20tY3lhbi00MDAgdmlhLWN5YW4tNTAwIHRvLWN5YW4tNjAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1iciBkYXJrOmZvY3VzOnJpbmctY3lhbi04MDBcIixcbiAgICBmYWlsdXJlOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS1yZWQtNDAwIHZpYS1yZWQtNTAwIHRvLXJlZC02MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1yZWQtMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYnIgZGFyazpmb2N1czpyaW5nLXJlZC04MDBcIixcbiAgICBpbmZvOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS1jeWFuLTUwMCB2aWEtY3lhbi02MDAgdG8tY3lhbi03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy1jeWFuLTgwMFwiLFxuICAgIGxpbWU6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWxpbWUtMjAwIHZpYS1saW1lLTQwMCB0by1saW1lLTUwMCB0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWxpbWUtMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYnIgZGFyazpmb2N1czpyaW5nLWxpbWUtODAwXCIsXG4gICAgcGluazogXCJiZy1ncmFkaWVudC10by1yIGZyb20tcGluay00MDAgdmlhLXBpbmstNTAwIHRvLXBpbmstNjAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcGluay0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1iciBkYXJrOmZvY3VzOnJpbmctcGluay04MDBcIixcbiAgICBwdXJwbGU6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXB1cnBsZS01MDAgdmlhLXB1cnBsZS02MDAgdG8tcHVycGxlLTcwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXB1cnBsZS0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1iciBkYXJrOmZvY3VzOnJpbmctcHVycGxlLTgwMFwiLFxuICAgIHN1Y2Nlc3M6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWdyZWVuLTQwMCB2aWEtZ3JlZW4tNTAwIHRvLWdyZWVuLTYwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDBcIixcbiAgICB0ZWFsOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS10ZWFsLTQwMCB2aWEtdGVhbC01MDAgdG8tdGVhbC02MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy10ZWFsLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy10ZWFsLTgwMFwiXG4gIH0sXG4gIGdyYWRpZW50RHVvVG9uZToge1xuICAgIGN5YW5Ub0JsdWU6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWN5YW4tNTAwIHRvLWN5YW4tNTAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1ibCBkYXJrOmZvY3VzOnJpbmctY3lhbi04MDBcIixcbiAgICBncmVlblRvQmx1ZTogXCJiZy1ncmFkaWVudC10by1iciBmcm9tLWdyZWVuLTQwMCB0by1jeWFuLTYwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTIwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJsIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDBcIixcbiAgICBwaW5rVG9PcmFuZ2U6IFwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1waW5rLTUwMCB0by1vcmFuZ2UtNDAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcGluay0yMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1ibCBkYXJrOmZvY3VzOnJpbmctcGluay04MDBcIixcbiAgICBwdXJwbGVUb0JsdWU6IFwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1wdXJwbGUtNjAwIHRvLWN5YW4tNTAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1ibCBkYXJrOmZvY3VzOnJpbmctY3lhbi04MDBcIixcbiAgICBwdXJwbGVUb1Bpbms6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXB1cnBsZS01MDAgdG8tcGluay01MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMjAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tbCBkYXJrOmZvY3VzOnJpbmctcHVycGxlLTgwMFwiLFxuICAgIHJlZFRvWWVsbG93OiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS1yZWQtMjAwIHZpYS1yZWQtMzAwIHRvLXllbGxvdy0yMDAgdGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1yZWQtMTAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYmwgZGFyazpmb2N1czpyaW5nLXJlZC00MDBcIixcbiAgICB0ZWFsVG9MaW1lOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS10ZWFsLTIwMCB0by1saW1lLTIwMCB0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWxpbWUtMjAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tbCBlbmFibGVkOmhvdmVyOmZyb20tdGVhbC0yMDAgZW5hYmxlZDpob3Zlcjp0by1saW1lLTIwMCBlbmFibGVkOmhvdmVyOnRleHQtZ3JheS05MDAgZGFyazpmb2N1czpyaW5nLXRlYWwtNzAwXCJcbiAgfSxcbiAgaW5uZXI6IHtcbiAgICBiYXNlOiBcImZsZXggaXRlbXMtc3RyZXRjaCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIixcbiAgICBwb3NpdGlvbjoge1xuICAgICAgbm9uZTogXCJcIixcbiAgICAgIHN0YXJ0OiBcInJvdW5kZWQtci1ub25lXCIsXG4gICAgICBtaWRkbGU6IFwicm91bmRlZC1ub25lXCIsXG4gICAgICBlbmQ6IFwicm91bmRlZC1sLW5vbmVcIlxuICAgIH0sXG4gICAgb3V0bGluZTogXCJib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50XCIsXG4gICAgaXNQcm9jZXNzaW5nUGFkZGluZzoge1xuICAgICAgeHM6IFwicGwtOFwiLFxuICAgICAgc206IFwicGwtMTBcIixcbiAgICAgIG1kOiBcInBsLTEyXCIsXG4gICAgICBsZzogXCJwbC0xNlwiLFxuICAgICAgeGw6IFwicGwtMjBcIlxuICAgIH1cbiAgfSxcbiAgbGFiZWw6IFwibWwtMiBpbmxpbmUtZmxleCBoLTQgdy00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYmctY3lhbi0yMDAgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtY3lhbi04MDBcIixcbiAgb3V0bGluZToge1xuICAgIGNvbG9yOiB7XG4gICAgICBncmF5OiBcImJvcmRlciBib3JkZXItZ3JheS05MDAgZGFyazpib3JkZXItd2hpdGVcIixcbiAgICAgIGRlZmF1bHQ6IFwiYm9yZGVyLTBcIixcbiAgICAgIGxpZ2h0OiBcIlwiXG4gICAgfSxcbiAgICBvZmY6IFwiXCIsXG4gICAgb246IFwiZmxleCB3LWZ1bGwganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03NSBlYXNlLWluIGdyb3VwLWVuYWJsZWQ6Z3JvdXAtaG92ZXI6Ymctb3BhY2l0eS0wIGdyb3VwLWVuYWJsZWQ6Z3JvdXAtaG92ZXI6dGV4dC1pbmhlcml0IGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIsXG4gICAgcGlsbDoge1xuICAgICAgb2ZmOiBcInJvdW5kZWQtbWRcIixcbiAgICAgIG9uOiBcInJvdW5kZWQtZnVsbFwiXG4gICAgfVxuICB9LFxuICBwaWxsOiB7XG4gICAgb2ZmOiBcInJvdW5kZWQtbGdcIixcbiAgICBvbjogXCJyb3VuZGVkLWZ1bGxcIlxuICB9LFxuICBzaXplOiB7XG4gICAgeHM6IFwicHgtMiBweS0xIHRleHQteHNcIixcbiAgICBzbTogXCJweC0zIHB5LTEuNSB0ZXh0LXNtXCIsXG4gICAgbWQ6IFwicHgtNCBweS0yIHRleHQtc21cIixcbiAgICBsZzogXCJweC01IHB5LTIuNSB0ZXh0LWJhc2VcIixcbiAgICB4bDogXCJweC02IHB5LTMgdGV4dC1iYXNlXCJcbiAgfVxufSk7XG5jb25zdCBidXR0b25Hcm91cFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImlubGluZS1mbGV4XCIsXG4gIHBvc2l0aW9uOiB7XG4gICAgbm9uZTogXCJcIixcbiAgICBzdGFydDogXCJyb3VuZGVkLXItbm9uZSBmb2N1czpyaW5nLTJcIixcbiAgICBtaWRkbGU6IFwicm91bmRlZC1ub25lIGJvcmRlci1sLTAgcGwtMCBmb2N1czpyaW5nLTJcIixcbiAgICBlbmQ6IFwicm91bmRlZC1sLW5vbmUgYm9yZGVyLWwtMCBwbC0wIGZvY3VzOnJpbmctMlwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBidXR0b25Hcm91cFRoZW1lLCBidXR0b25UaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBjYXJkVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZsZXggcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHNoYWRvdy1tZCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktODAwXCIsXG4gICAgY2hpbGRyZW46IFwiZmxleCBoLWZ1bGwgZmxleC1jb2wganVzdGlmeS1jZW50ZXIgZ2FwLTQgcC02XCIsXG4gICAgaG9yaXpvbnRhbDoge1xuICAgICAgb2ZmOiBcImZsZXgtY29sXCIsXG4gICAgICBvbjogXCJmbGV4LWNvbCBtZDptYXgtdy14bCBtZDpmbGV4LXJvd1wiXG4gICAgfSxcbiAgICBocmVmOiBcImhvdmVyOmJnLWdyYXktMTAwIGRhcms6aG92ZXI6YmctZ3JheS03MDBcIlxuICB9LFxuICBpbWc6IHtcbiAgICBiYXNlOiBcIlwiLFxuICAgIGhvcml6b250YWw6IHtcbiAgICAgIG9mZjogXCJyb3VuZGVkLXQtbGdcIixcbiAgICAgIG9uOiBcImgtOTYgdy1mdWxsIHJvdW5kZWQtdC1sZyBvYmplY3QtY292ZXIgbWQ6aC1hdXRvIG1kOnctNDggbWQ6cm91bmRlZC1ub25lIG1kOnJvdW5kZWQtbC1sZ1wiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgY2FyZFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGNhcm91c2VsVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlIGgtZnVsbCB3LWZ1bGxcIixcbiAgICBsZWZ0Q29udHJvbDogXCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTQgZm9jdXM6b3V0bGluZS1ub25lXCIsXG4gICAgcmlnaHRDb250cm9sOiBcImFic29sdXRlIHJpZ2h0LTAgdG9wLTAgZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTQgZm9jdXM6b3V0bGluZS1ub25lXCJcbiAgfSxcbiAgaW5kaWNhdG9yczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgb2ZmOiBcImJnLXdoaXRlLzUwIGhvdmVyOmJnLXdoaXRlIGRhcms6YmctZ3JheS04MDAvNTAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMFwiLFxuICAgICAgb246IFwiYmctd2hpdGUgZGFyazpiZy1ncmF5LTgwMFwiXG4gICAgfSxcbiAgICBiYXNlOiBcImgtMyB3LTMgcm91bmRlZC1mdWxsXCIsXG4gICAgd3JhcHBlcjogXCJhYnNvbHV0ZSBib3R0b20tNSBsZWZ0LTEvMiBmbGV4IC10cmFuc2xhdGUteC0xLzIgc3BhY2UteC0zXCJcbiAgfSxcbiAgaXRlbToge1xuICAgIGJhc2U6IFwiYWJzb2x1dGUgbGVmdC0xLzIgdG9wLTEvMiBibG9jayB3LWZ1bGwgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yXCIsXG4gICAgd3JhcHBlcjoge1xuICAgICAgb2ZmOiBcInctZnVsbCBmbGV4LXNocmluay0wIHRyYW5zZm9ybSBjdXJzb3ItZGVmYXVsdCBzbmFwLWNlbnRlclwiLFxuICAgICAgb246IFwidy1mdWxsIGZsZXgtc2hyaW5rLTAgdHJhbnNmb3JtIGN1cnNvci1ncmFiIHNuYXAtY2VudGVyXCJcbiAgICB9XG4gIH0sXG4gIGNvbnRyb2w6IHtcbiAgICBiYXNlOiBcImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBiZy13aGl0ZS8zMCBncm91cC1ob3ZlcjpiZy13aGl0ZS81MCBncm91cC1mb2N1czpvdXRsaW5lLW5vbmUgZ3JvdXAtZm9jdXM6cmluZy00IGdyb3VwLWZvY3VzOnJpbmctd2hpdGUgZGFyazpiZy1ncmF5LTgwMC8zMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWdyYXktODAwLzYwIGRhcms6Z3JvdXAtZm9jdXM6cmluZy1ncmF5LTgwMC83MCBzbTpoLTEwIHNtOnctMTBcIixcbiAgICBpY29uOiBcImgtNSB3LTUgdGV4dC13aGl0ZSBkYXJrOnRleHQtZ3JheS04MDAgc206aC02IHNtOnctNlwiXG4gIH0sXG4gIHNjcm9sbENvbnRhaW5lcjoge1xuICAgIGJhc2U6IFwiZmxleCBoLWZ1bGwgc25hcC1tYW5kYXRvcnkgb3ZlcmZsb3cteS1oaWRkZW4gb3ZlcmZsb3cteC1zY3JvbGwgc2Nyb2xsLXNtb290aCByb3VuZGVkLWxnXCIsXG4gICAgc25hcDogXCJzbmFwLXhcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgY2Fyb3VzZWxUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBjaGVja2JveFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJoLTQgdy00IHJvdW5kZWQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTIgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgIGNvbG9yOiB7XG4gICAgICBkZWZhdWx0OiBcInRleHQtY3lhbi02MDAgZm9jdXM6cmluZy1jeWFuLTYwMCBkYXJrOnJpbmctb2Zmc2V0LWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTYwMFwiLFxuICAgICAgZGFyazogXCJ0ZXh0LWdyYXktODAwIGZvY3VzOnJpbmctZ3JheS04MDAgZGFyazpyaW5nLW9mZnNldC1ncmF5LTgwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS04MDBcIixcbiAgICAgIGZhaWx1cmU6IFwidGV4dC1yZWQtOTAwIGZvY3VzOnJpbmctcmVkLTkwMCBkYXJrOnJpbmctb2Zmc2V0LXJlZC05MDAgZGFyazpmb2N1czpyaW5nLXJlZC05MDBcIixcbiAgICAgIGdyYXk6IFwidGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLWdyYXktOTAwIGRhcms6cmluZy1vZmZzZXQtZ3JheS05MDAgZGFyazpmb2N1czpyaW5nLWdyYXktOTAwXCIsXG4gICAgICBpbmZvOiBcInRleHQtY3lhbi04MDAgZm9jdXM6cmluZy1jeWFuLTgwMCBkYXJrOnJpbmctb2Zmc2V0LWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTgwMFwiLFxuICAgICAgbGlnaHQ6IFwidGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLWdyYXktOTAwIGRhcms6cmluZy1vZmZzZXQtZ3JheS05MDAgZGFyazpmb2N1czpyaW5nLWdyYXktOTAwXCIsXG4gICAgICBwdXJwbGU6IFwidGV4dC1wdXJwbGUtNjAwIGZvY3VzOnJpbmctcHVycGxlLTYwMCBkYXJrOnJpbmctb2Zmc2V0LXB1cnBsZS02MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS02MDBcIixcbiAgICAgIHN1Y2Nlc3M6IFwidGV4dC1ncmVlbi04MDAgZm9jdXM6cmluZy1ncmVlbi04MDAgZGFyazpyaW5nLW9mZnNldC1ncmVlbi04MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTgwMFwiLFxuICAgICAgd2FybmluZzogXCJ0ZXh0LXllbGxvdy00MDAgZm9jdXM6cmluZy15ZWxsb3ctNDAwIGRhcms6cmluZy1vZmZzZXQteWVsbG93LTQwMCBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTQwMFwiLFxuICAgICAgYmx1ZTogXCJ0ZXh0LWJsdWUtNzAwIGZvY3VzOnJpbmctYmx1ZS02MDAgZGFyazpyaW5nLW9mZnNldC1ibHVlLTcwMCBkYXJrOmZvY3VzOnJpbmctYmx1ZS03MDBcIixcbiAgICAgIGN5YW46IFwidGV4dC1jeWFuLTYwMCBmb2N1czpyaW5nLWN5YW4tNjAwIGRhcms6cmluZy1vZmZzZXQtY3lhbi02MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNjAwXCIsXG4gICAgICBncmVlbjogXCJ0ZXh0LWdyZWVuLTYwMCBmb2N1czpyaW5nLWdyZWVuLTYwMCBkYXJrOnJpbmctb2Zmc2V0LWdyZWVuLTYwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tNjAwXCIsXG4gICAgICBpbmRpZ286IFwidGV4dC1pbmRpZ28tNzAwIGZvY3VzOnJpbmctaW5kaWdvLTcwMCBkYXJrOnJpbmctb2Zmc2V0LWluZGlnby03MDAgZGFyazpmb2N1czpyaW5nLWluZGlnby03MDBcIixcbiAgICAgIGxpbWU6IFwidGV4dC1saW1lLTcwMCBmb2N1czpyaW5nLWxpbWUtNzAwIGRhcms6cmluZy1vZmZzZXQtbGltZS03MDAgZGFyazpmb2N1czpyaW5nLWxpbWUtNzAwXCIsXG4gICAgICBwaW5rOiBcInRleHQtcGluay02MDAgZm9jdXM6cmluZy1waW5rLTYwMCBkYXJrOnJpbmctb2Zmc2V0LXBpbmstNjAwIGRhcms6Zm9jdXM6cmluZy1waW5rLTYwMFwiLFxuICAgICAgcmVkOiBcInRleHQtcmVkLTYwMCBmb2N1czpyaW5nLXJlZC02MDAgZGFyazpyaW5nLW9mZnNldC1yZWQtNjAwIGRhcms6Zm9jdXM6cmluZy1yZWQtNjAwXCIsXG4gICAgICB0ZWFsOiBcInRleHQtdGVhbC02MDAgZm9jdXM6cmluZy10ZWFsLTYwMCBkYXJrOnJpbmctb2Zmc2V0LXRlYWwtNjAwIGRhcms6Zm9jdXM6cmluZy10ZWFsLTYwMFwiLFxuICAgICAgeWVsbG93OiBcInRleHQteWVsbG93LTQwMCBmb2N1czpyaW5nLXllbGxvdy00MDAgZGFyazpyaW5nLW9mZnNldC15ZWxsb3ctNDAwIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNDAwXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBjaGVja2JveFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGNsaXBib2FyZFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBidXR0b246IHtcbiAgICBiYXNlOiBcImlubGluZS1mbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBiZy1ibHVlLTcwMCBweC01IHB5LTMgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIixcbiAgICBsYWJlbDogXCJ0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtd2hpdGUgc206dy1hdXRvXCJcbiAgfSxcbiAgd2l0aEljb246IHtcbiAgICBiYXNlOiBcImFic29sdXRlIGVuZC0yIHRvcC0xLzIgaW5saW5lLWZsZXggLXRyYW5zbGF0ZS15LTEvMiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBwLTIgdGV4dC1ncmF5LTUwMCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMFwiLFxuICAgIGljb246IHtcbiAgICAgIGRlZmF1bHRJY29uOiBcImgtNCB3LTRcIixcbiAgICAgIHN1Y2Nlc3NJY29uOiBcImgtNCB3LTQgdGV4dC1ibHVlLTcwMCBkYXJrOnRleHQtYmx1ZS01MDBcIlxuICAgIH1cbiAgfSxcbiAgd2l0aEljb25UZXh0OiB7XG4gICAgYmFzZTogXCJhYnNvbHV0ZSBlbmQtMi41IHRvcC0xLzIgaW5saW5lLWZsZXggLXRyYW5zbGF0ZS15LTEvMiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHB4LTIuNSBweS0yIHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMFwiLFxuICAgIGljb246IHtcbiAgICAgIGRlZmF1bHRJY29uOiBcIm1lLTEuNSBoLTMgdy0zXCIsXG4gICAgICBzdWNjZXNzSWNvbjogXCJtZS0xLjUgaC0zIHctMyB0ZXh0LWJsdWUtNzAwIGRhcms6dGV4dC1ibHVlLTUwMFwiXG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgYmFzZTogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgICAgIGRlZmF1bHRUZXh0OiBcInRleHQteHMgZm9udC1zZW1pYm9sZFwiLFxuICAgICAgc3VjY2Vzc1RleHQ6IFwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtYmx1ZS03MDAgZGFyazp0ZXh0LWJsdWUtNTAwXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBjbGlwYm9hcmRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBkYXJrVGhlbWVUb2dnbGVUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwicm91bmRlZC1sZyBwLTIuNSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyYXktMjAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTcwMFwiLFxuICAgIGljb246IFwiaC01IHctNVwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBkYXJrVGhlbWVUb2dnbGVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBkYXRlUGlja2VyVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlXCJcbiAgfSxcbiAgcG9wdXA6IHtcbiAgICByb290OiB7XG4gICAgICBiYXNlOiBcImFic29sdXRlIHRvcC0xMCB6LTUwIGJsb2NrIHB0LTJcIixcbiAgICAgIGlubGluZTogXCJyZWxhdGl2ZSB0b3AtMCB6LWF1dG9cIixcbiAgICAgIGlubmVyOiBcImlubGluZS1ibG9jayByb3VuZGVkLWxnIGJnLXdoaXRlIHAtNCBzaGFkb3ctbGcgZGFyazpiZy1ncmF5LTcwMFwiXG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgIGJhc2U6IFwiXCIsXG4gICAgICB0aXRsZTogXCJweC0yIHB5LTMgdGV4dC1jZW50ZXIgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiLFxuICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgIGJhc2U6IFwibWItMiBmbGV4IGp1c3RpZnktYmV0d2VlblwiLFxuICAgICAgICBidXR0b246IHtcbiAgICAgICAgICBiYXNlOiBcInJvdW5kZWQtbGcgYmctd2hpdGUgcHgtNSBweS0yLjUgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktMjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIixcbiAgICAgICAgICBwcmV2OiBcIlwiLFxuICAgICAgICAgIG5leHQ6IFwiXCIsXG4gICAgICAgICAgdmlldzogXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB2aWV3OiB7XG4gICAgICBiYXNlOiBcInAtMVwiXG4gICAgfSxcbiAgICBmb290ZXI6IHtcbiAgICAgIGJhc2U6IFwibXQtMiBmbGV4IHNwYWNlLXgtMlwiLFxuICAgICAgYnV0dG9uOiB7XG4gICAgICAgIGJhc2U6IFwidy1mdWxsIHJvdW5kZWQtbGcgcHgtNSBweS0yIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDBcIixcbiAgICAgICAgdG9kYXk6IFwiYmctY3lhbi03MDAgdGV4dC13aGl0ZSBob3ZlcjpiZy1jeWFuLTgwMCBkYXJrOmJnLWN5YW4tNjAwIGRhcms6aG92ZXI6YmctY3lhbi03MDBcIixcbiAgICAgICAgY2xlYXI6IFwiYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSB0ZXh0LWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgdmlld3M6IHtcbiAgICBkYXlzOiB7XG4gICAgICBoZWFkZXI6IHtcbiAgICAgICAgYmFzZTogXCJtYi0xIGdyaWQgZ3JpZC1jb2xzLTdcIixcbiAgICAgICAgdGl0bGU6IFwiaC02IHRleHQtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gbGVhZGluZy02IHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCJcbiAgICAgIH0sXG4gICAgICBpdGVtczoge1xuICAgICAgICBiYXNlOiBcImdyaWQgdy02NCBncmlkLWNvbHMtN1wiLFxuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgYmFzZTogXCJibG9jayBmbGV4LTEgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1sZyBib3JkZXItMCB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbGVhZGluZy05IHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIixcbiAgICAgICAgICBzZWxlY3RlZDogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGhvdmVyOmJnLWN5YW4tNjAwXCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IFwidGV4dC1ncmF5LTUwMFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG1vbnRoczoge1xuICAgICAgaXRlbXM6IHtcbiAgICAgICAgYmFzZTogXCJncmlkIHctNjQgZ3JpZC1jb2xzLTRcIixcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgIGJhc2U6IFwiYmxvY2sgZmxleC0xIGN1cnNvci1wb2ludGVyIHJvdW5kZWQtbGcgYm9yZGVyLTAgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LXNlbWlib2xkIGxlYWRpbmctOSB0ZXh0LWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwXCIsXG4gICAgICAgICAgc2VsZWN0ZWQ6IFwiYmctY3lhbi03MDAgdGV4dC13aGl0ZSBob3ZlcjpiZy1jeWFuLTYwMFwiLFxuICAgICAgICAgIGRpc2FibGVkOiBcInRleHQtZ3JheS01MDBcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB5ZWFyczoge1xuICAgICAgaXRlbXM6IHtcbiAgICAgICAgYmFzZTogXCJncmlkIHctNjQgZ3JpZC1jb2xzLTRcIixcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgIGJhc2U6IFwiYmxvY2sgZmxleC0xIGN1cnNvci1wb2ludGVyIHJvdW5kZWQtbGcgYm9yZGVyLTAgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LXNlbWlib2xkIGxlYWRpbmctOSB0ZXh0LWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwXCIsXG4gICAgICAgICAgc2VsZWN0ZWQ6IFwiYmctY3lhbi03MDAgdGV4dC13aGl0ZSBob3ZlcjpiZy1jeWFuLTYwMFwiLFxuICAgICAgICAgIGRpc2FibGVkOiBcInRleHQtZ3JheS01MDBcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBkZWNhZGVzOiB7XG4gICAgICBpdGVtczoge1xuICAgICAgICBiYXNlOiBcImdyaWQgdy02NCBncmlkLWNvbHMtNFwiLFxuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgYmFzZTogXCJibG9jayBmbGV4LTEgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1sZyBib3JkZXItMCB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbGVhZGluZy05IHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIixcbiAgICAgICAgICBzZWxlY3RlZDogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGhvdmVyOmJnLWN5YW4tNjAwXCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IFwidGV4dC1ncmF5LTUwMFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBkYXRlUGlja2VyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgZHJhd2VyVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZpeGVkIHotNDAgb3ZlcmZsb3cteS1hdXRvIGJnLXdoaXRlIHAtNCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkYXJrOmJnLWdyYXktODAwXCIsXG4gICAgYmFja2Ryb3A6IFwiZml4ZWQgaW5zZXQtMCB6LTMwIGJnLWdyYXktOTAwLzUwIGRhcms6YmctZ3JheS05MDAvODBcIixcbiAgICBlZGdlOiBcImJvdHRvbS0xNlwiLFxuICAgIHBvc2l0aW9uOiB7XG4gICAgICB0b3A6IHtcbiAgICAgICAgb246IFwibGVmdC0wIHJpZ2h0LTAgdG9wLTAgdy1mdWxsIHRyYW5zZm9ybS1ub25lXCIsXG4gICAgICAgIG9mZjogXCJsZWZ0LTAgcmlnaHQtMCB0b3AtMCB3LWZ1bGwgLXRyYW5zbGF0ZS15LWZ1bGxcIlxuICAgICAgfSxcbiAgICAgIHJpZ2h0OiB7XG4gICAgICAgIG9uOiBcInJpZ2h0LTAgdG9wLTAgaC1zY3JlZW4gdy04MCB0cmFuc2Zvcm0tbm9uZVwiLFxuICAgICAgICBvZmY6IFwicmlnaHQtMCB0b3AtMCBoLXNjcmVlbiB3LTgwIHRyYW5zbGF0ZS14LWZ1bGxcIlxuICAgICAgfSxcbiAgICAgIGJvdHRvbToge1xuICAgICAgICBvbjogXCJib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCB3LWZ1bGwgdHJhbnNmb3JtLW5vbmVcIixcbiAgICAgICAgb2ZmOiBcImJvdHRvbS0wIGxlZnQtMCByaWdodC0wIHctZnVsbCB0cmFuc2xhdGUteS1mdWxsXCJcbiAgICAgIH0sXG4gICAgICBsZWZ0OiB7XG4gICAgICAgIG9uOiBcImxlZnQtMCB0b3AtMCBoLXNjcmVlbiB3LTgwIHRyYW5zZm9ybS1ub25lXCIsXG4gICAgICAgIG9mZjogXCJsZWZ0LTAgdG9wLTAgaC1zY3JlZW4gdy04MCAtdHJhbnNsYXRlLXgtZnVsbFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBoZWFkZXI6IHtcbiAgICBpbm5lcjoge1xuICAgICAgY2xvc2VCdXR0b246IFwiYWJzb2x1dGUgZW5kLTIuNSB0b3AtMi41IGZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBiZy10cmFuc3BhcmVudCB0ZXh0LXNtIHRleHQtZ3JheS00MDAgaG92ZXI6YmctZ3JheS0yMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgY2xvc2VJY29uOiBcImgtNCB3LTRcIixcbiAgICAgIHRpdGxlSWNvbjogXCJtZS0yLjUgaC00IHctNFwiLFxuICAgICAgdGl0bGVUZXh0OiBcIm1iLTQgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHRleHQtYmFzZSBmb250LXNlbWlib2xkIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCJcbiAgICB9LFxuICAgIGNvbGxhcHNlZDoge1xuICAgICAgb246IFwiaGlkZGVuXCIsXG4gICAgICBvZmY6IFwiYmxvY2tcIlxuICAgIH1cbiAgfSxcbiAgaXRlbXM6IHtcbiAgICBiYXNlOiBcIlwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBkcmF3ZXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBkcm9wZG93blRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBhcnJvd0ljb246IFwibWwtMiBoLTQgdy00XCIsXG4gIGNvbnRlbnQ6IFwicHktMSBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgZmxvYXRpbmc6IHtcbiAgICBhbmltYXRpb246IFwidHJhbnNpdGlvbi1vcGFjaXR5XCIsXG4gICAgYXJyb3c6IHtcbiAgICAgIGJhc2U6IFwiYWJzb2x1dGUgei0xMCBoLTIgdy0yIHJvdGF0ZS00NVwiLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZGFyazogXCJiZy1ncmF5LTkwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgICAgIGxpZ2h0OiBcImJnLXdoaXRlXCIsXG4gICAgICAgIGF1dG86IFwiYmctd2hpdGUgZGFyazpiZy1ncmF5LTcwMFwiXG4gICAgICB9LFxuICAgICAgcGxhY2VtZW50OiBcIi00cHhcIlxuICAgIH0sXG4gICAgYmFzZTogXCJ6LTEwIHctZml0IGRpdmlkZS15IGRpdmlkZS1ncmF5LTEwMCByb3VuZGVkIHNoYWRvdyBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgICBjb250ZW50OiBcInB5LTEgdGV4dC1zbSB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTIwMFwiLFxuICAgIGRpdmlkZXI6IFwibXktMSBoLXB4IGJnLWdyYXktMTAwIGRhcms6YmctZ3JheS02MDBcIixcbiAgICBoZWFkZXI6IFwiYmxvY2sgcHgtNCBweS0yIHRleHQtc20gdGV4dC1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0yMDBcIixcbiAgICBoaWRkZW46IFwiaW52aXNpYmxlIG9wYWNpdHktMFwiLFxuICAgIGl0ZW06IHtcbiAgICAgIGNvbnRhaW5lcjogXCJcIixcbiAgICAgIGJhc2U6IFwiZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgcHgtNCBweS0yIHRleHQtc20gdGV4dC1ncmF5LTcwMCBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpiZy1ncmF5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGFyazp0ZXh0LWdyYXktMjAwIGRhcms6aG92ZXI6YmctZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6YmctZ3JheS02MDAgZGFyazpmb2N1czp0ZXh0LXdoaXRlXCIsXG4gICAgICBpY29uOiBcIm1yLTIgaC00IHctNFwiXG4gICAgfSxcbiAgICBzdHlsZToge1xuICAgICAgZGFyazogXCJiZy1ncmF5LTkwMCB0ZXh0LXdoaXRlIGRhcms6YmctZ3JheS03MDBcIixcbiAgICAgIGxpZ2h0OiBcImJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMFwiLFxuICAgICAgYXV0bzogXCJib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHRleHQtZ3JheS05MDAgZGFyazpib3JkZXItbm9uZSBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgfSxcbiAgICB0YXJnZXQ6IFwidy1maXRcIlxuICB9LFxuICBpbmxpbmVXcmFwcGVyOiBcImZsZXggaXRlbXMtY2VudGVyXCJcbn0pO1xuXG5leHBvcnQgeyBkcm9wZG93blRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGZpbGVJbnB1dFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJmbGV4XCJcbiAgfSxcbiAgZmllbGQ6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlIHctZnVsbFwiLFxuICAgIGlucHV0OiB7XG4gICAgICBiYXNlOiBcImJsb2NrIHctZnVsbCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBib3JkZXIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICAgIHNpemVzOiB7XG4gICAgICAgIHNtOiBcInNtOnRleHQteHNcIixcbiAgICAgICAgbWQ6IFwidGV4dC1zbVwiLFxuICAgICAgICBsZzogXCJzbTp0ZXh0LWJhc2VcIlxuICAgICAgfSxcbiAgICAgIGNvbG9yczoge1xuICAgICAgICBncmF5OiBcImJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICAgICAgaW5mbzogXCJib3JkZXItY3lhbi01MDAgYmctY3lhbi01MCB0ZXh0LWN5YW4tOTAwIHBsYWNlaG9sZGVyLWN5YW4tNzAwIGZvY3VzOmJvcmRlci1jeWFuLTUwMCBmb2N1czpyaW5nLWN5YW4tNTAwIGRhcms6Ym9yZGVyLWN5YW4tNDAwIGRhcms6YmctY3lhbi0xMDAgZGFyazpmb2N1czpib3JkZXItY3lhbi01MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNTAwXCIsXG4gICAgICAgIGZhaWx1cmU6IFwiYm9yZGVyLXJlZC01MDAgYmctcmVkLTUwIHRleHQtcmVkLTkwMCBwbGFjZWhvbGRlci1yZWQtNzAwIGZvY3VzOmJvcmRlci1yZWQtNTAwIGZvY3VzOnJpbmctcmVkLTUwMCBkYXJrOmJvcmRlci1yZWQtNDAwIGRhcms6YmctcmVkLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwIGRhcms6Zm9jdXM6cmluZy1yZWQtNTAwXCIsXG4gICAgICAgIHdhcm5pbmc6IFwiYm9yZGVyLXllbGxvdy01MDAgYmcteWVsbG93LTUwIHRleHQteWVsbG93LTkwMCBwbGFjZWhvbGRlci15ZWxsb3ctNzAwIGZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGZvY3VzOnJpbmcteWVsbG93LTUwMCBkYXJrOmJvcmRlci15ZWxsb3ctNDAwIGRhcms6YmcteWVsbG93LTEwMCBkYXJrOmZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNTAwXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiYm9yZGVyLWdyZWVuLTUwMCBiZy1ncmVlbi01MCB0ZXh0LWdyZWVuLTkwMCBwbGFjZWhvbGRlci1ncmVlbi03MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTUwMCBmb2N1czpyaW5nLWdyZWVuLTUwMCBkYXJrOmJvcmRlci1ncmVlbi00MDAgZGFyazpiZy1ncmVlbi0xMDAgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi01MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGZpbGVJbnB1dFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGZsb2F0aW5nTGFiZWxUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgaW5wdXQ6IHtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBmaWxsZWQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtdC1sZyBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHB4LTIuNSBwYi0yLjUgcHQtNSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtdC1sZyBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHB4LTIuNSBwYi0yLjUgcHQtNSB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIlxuICAgICAgfSxcbiAgICAgIG91dGxpbmVkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctdHJhbnNwYXJlbnQgcHgtMi41IHBiLTIuNSBwdC00IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy10cmFuc3BhcmVudCBweC0yLjUgcGItMi41IHB0LTQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1ibHVlLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiXG4gICAgICB9LFxuICAgICAgc3RhbmRhcmQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgc3VjY2Vzczoge1xuICAgICAgZmlsbGVkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLXQtbGcgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JlZW4tNjAwIGJnLWdyYXktNTAgcHgtMi41IHBiLTIuNSBwdC01IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItZ3JlZW4tNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JlZW4tNTAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLWdyZWVuLTUwMFwiLFxuICAgICAgICBtZDogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC10LWxnIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyZWVuLTYwMCBiZy1ncmF5LTUwIHB4LTIuNSBwYi0yLjUgcHQtNSB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDBcIlxuICAgICAgfSxcbiAgICAgIG91dGxpbmVkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JlZW4tNjAwIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBwYi0yLjUgcHQtNCB0ZXh0LXhzIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwXCIsXG4gICAgICAgIG1kOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JlZW4tNjAwIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBwYi0yLjUgcHQtNCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JlZW4tNjAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItZ3JlZW4tNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JlZW4tNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyZWVuLTYwMCBiZy10cmFuc3BhcmVudCBweC0wIHB5LTIuNSB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIGVycm9yOiB7XG4gICAgICBmaWxsZWQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtdC1sZyBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1yZWQtNjAwIGJnLWdyYXktNTAgcHgtMi41IHBiLTIuNSBwdC01IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItcmVkLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLXJlZC01MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMFwiLFxuICAgICAgICBtZDogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC10LWxnIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLXJlZC02MDAgYmctZ3JheS01MCBweC0yLjUgcGItMi41IHB0LTUgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1yZWQtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItcmVkLTUwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBvdXRsaW5lZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXJlZC02MDAgYmctdHJhbnNwYXJlbnQgcHgtMi41IHBiLTIuNSBwdC00IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItcmVkLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLXJlZC01MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1yZWQtNjAwIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBwYi0yLjUgcHQtNCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLXJlZC02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1yZWQtNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItcmVkLTYwMCBiZy10cmFuc3BhcmVudCBweC0wIHB5LTIuNSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLXJlZC02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1yZWQtNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwXCIsXG4gICAgICAgIG1kOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1yZWQtNjAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItcmVkLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLXJlZC01MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBmaWxsZWQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgbGVmdC0yLjUgdG9wLTQgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IHRleHQteHMgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnRleHQtYmx1ZS02MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIGxlZnQtMi41IHRvcC00IHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czp0ZXh0LWJsdWUtNjAwIGRhcms6dGV4dC1ncmF5LTQwMCBwZWVyLWZvY3VzOmRhcms6dGV4dC1ibHVlLTUwMFwiXG4gICAgICB9LFxuICAgICAgb3V0bGluZWQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgbGVmdC0xIHRvcC0yIHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSBiZy13aGl0ZSBweC0yIHRleHQteHMgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0b3AtMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246LXRyYW5zbGF0ZS15LTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOnRvcC0yIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnB4LTIgcGVlci1mb2N1czp0ZXh0LWJsdWUtNjAwIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIGxlZnQtMSB0b3AtMiB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgYmctd2hpdGUgcHgtMiB0ZXh0LXNtIHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dG9wLTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOi10cmFuc2xhdGUteS0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czp0b3AtMiBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czpweC0yIHBlZXItZm9jdXM6dGV4dC1ibHVlLTYwMCBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTQwMCBwZWVyLWZvY3VzOmRhcms6dGV4dC1ibHVlLTUwMFwiXG4gICAgICB9LFxuICAgICAgc3RhbmRhcmQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgdG9wLTMgLXotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNiBzY2FsZS03NSB0ZXh0LXhzIHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOmxlZnQtMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS02IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czp0ZXh0LWJsdWUtNjAwIGRhcms6dGV4dC1ncmF5LTQwMCBwZWVyLWZvY3VzOmRhcms6dGV4dC1ibHVlLTUwMFwiLFxuICAgICAgICBtZDogXCJhYnNvbHV0ZSB0b3AtMyAtei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS02IHNjYWxlLTc1IHRleHQtc20gdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6bGVmdC0wIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTYgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnRleHQtYmx1ZS02MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIHN1Y2Nlc3M6IHtcbiAgICAgIGZpbGxlZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSBsZWZ0LTIuNSB0b3AtNCB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgdGV4dC1zbSB0ZXh0LWdyZWVuLTYwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBkYXJrOnRleHQtZ3JlZW4tNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIGxlZnQtMi41IHRvcC00IHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1ncmVlbi01MDBcIlxuICAgICAgfSxcbiAgICAgIG91dGxpbmVkOiB7XG4gICAgICAgIHNtOiBcImFic29sdXRlIGxlZnQtMSB0b3AtMiB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgYmctd2hpdGUgcHgtMiB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRvcC0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjotdHJhbnNsYXRlLXktMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6dG9wLTIgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IHBlZXItZm9jdXM6cHgtMiBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1ncmVlbi01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0xIHRvcC0yIHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSBiZy13aGl0ZSBweC0yIHRleHQtc20gdGV4dC1ncmVlbi02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dG9wLTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOi10cmFuc2xhdGUteS0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czp0b3AtMiBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czpweC0yIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyZWVuLTUwMFwiXG4gICAgICB9LFxuICAgICAgc3RhbmRhcmQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgdG9wLTMgLXotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNiBzY2FsZS03NSB0ZXh0LXhzIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czpsZWZ0LTAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNiBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1ncmVlbi01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgdG9wLTMgLXotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNiBzY2FsZS03NSB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czpsZWZ0LTAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNiBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1ncmVlbi01MDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgZXJyb3I6IHtcbiAgICAgIGZpbGxlZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSBsZWZ0LTIuNSB0b3AtNCB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgdGV4dC14cyB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgZGFyazp0ZXh0LXJlZC01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0yLjUgdG9wLTQgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IHRleHQteHMgdGV4dC1yZWQtNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBvdXRsaW5lZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSBsZWZ0LTEgdG9wLTIgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IGJnLXdoaXRlIHB4LTIgdGV4dC14cyB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dG9wLTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOi10cmFuc2xhdGUteS0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czp0b3AtMiBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czpweC0yIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LXJlZC01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0xIHRvcC0yIHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSBiZy13aGl0ZSBweC0yIHRleHQteHMgdGV4dC1yZWQtNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRvcC0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjotdHJhbnNsYXRlLXktMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6dG9wLTIgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IHBlZXItZm9jdXM6cHgtMiBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSB0b3AtMyAtei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS02IHNjYWxlLTc1IHRleHQteHMgdGV4dC1yZWQtNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czpsZWZ0LTAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNiBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1yZWQtNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIHRvcC0zIC16LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTYgc2NhbGUtNzUgdGV4dC1zbSB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOmxlZnQtMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS02IHBlZXItZm9jdXM6c2NhbGUtNzUgZGFyazp0ZXh0LXJlZC01MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgaGVscGVyVGV4dDoge1xuICAgIGRlZmF1bHQ6IFwibXQtMiB0ZXh0LXhzIHRleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gICAgc3VjY2VzczogXCJtdC0yIHRleHQteHMgdGV4dC1ncmVlbi02MDAgZGFyazp0ZXh0LWdyZWVuLTQwMFwiLFxuICAgIGVycm9yOiBcIm10LTIgdGV4dC14cyB0ZXh0LXJlZC02MDAgZGFyazp0ZXh0LXJlZC00MDBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgZmxvYXRpbmdMYWJlbFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGZvb3RlclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJ3LWZ1bGwgcm91bmRlZC1sZyBiZy13aGl0ZSBzaGFkb3cgZGFyazpiZy1ncmF5LTgwMCBtZDpmbGV4IG1kOml0ZW1zLWNlbnRlciBtZDpqdXN0aWZ5LWJldHdlZW5cIixcbiAgICBjb250YWluZXI6IFwidy1mdWxsIHAtNlwiLFxuICAgIGJnRGFyazogXCJiZy1ncmF5LTgwMFwiXG4gIH0sXG4gIGdyb3VwTGluazoge1xuICAgIGJhc2U6IFwiZmxleCBmbGV4LXdyYXAgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC13aGl0ZVwiLFxuICAgIGxpbms6IHtcbiAgICAgIGJhc2U6IFwibWUtNCBsYXN0Om1yLTAgbWQ6bXItNlwiLFxuICAgICAgaHJlZjogXCJob3Zlcjp1bmRlcmxpbmVcIlxuICAgIH0sXG4gICAgY29sOiBcImZsZXgtY29sIHNwYWNlLXktNFwiXG4gIH0sXG4gIGljb246IHtcbiAgICBiYXNlOiBcInRleHQtZ3JheS01MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgc2l6ZTogXCJoLTUgdy01XCJcbiAgfSxcbiAgdGl0bGU6IHtcbiAgICBiYXNlOiBcIm1iLTYgdGV4dC1zbSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH0sXG4gIGRpdmlkZXI6IHtcbiAgICBiYXNlOiBcIm15LTYgdy1mdWxsIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCBzbTpteC1hdXRvIGxnOm15LThcIlxuICB9LFxuICBjb3B5cmlnaHQ6IHtcbiAgICBiYXNlOiBcInRleHQtc20gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDAgc206dGV4dC1jZW50ZXJcIixcbiAgICBocmVmOiBcIm1sLTEgaG92ZXI6dW5kZXJsaW5lXCIsXG4gICAgc3BhbjogXCJtbC0xXCJcbiAgfSxcbiAgYnJhbmQ6IHtcbiAgICBiYXNlOiBcIm1iLTQgZmxleCBpdGVtcy1jZW50ZXIgc206bWItMFwiLFxuICAgIGltZzogXCJtci0zIGgtOFwiLFxuICAgIHNwYW46IFwic2VsZi1jZW50ZXIgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktODAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBmb290ZXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBoZWxwZXJUZXh0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcIm10LTIgdGV4dC1zbVwiLFxuICAgIGNvbG9yczoge1xuICAgICAgZ3JheTogXCJ0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgICAgaW5mbzogXCJ0ZXh0LWN5YW4tNzAwIGRhcms6dGV4dC1jeWFuLTgwMFwiLFxuICAgICAgc3VjY2VzczogXCJ0ZXh0LWdyZWVuLTYwMCBkYXJrOnRleHQtZ3JlZW4tNTAwXCIsXG4gICAgICBmYWlsdXJlOiBcInRleHQtcmVkLTYwMCBkYXJrOnRleHQtcmVkLTUwMFwiLFxuICAgICAgd2FybmluZzogXCJ0ZXh0LXllbGxvdy01MDAgZGFyazp0ZXh0LXllbGxvdy02MDBcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGhlbHBlclRleHRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBoclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJteS04IGgtcHggYm9yZGVyLTAgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiXG4gIH0sXG4gIHRyaW1tZWQ6IHtcbiAgICBiYXNlOiBcIm14LWF1dG8gbXktNCBoLTEgdy00OCByb3VuZGVkIGJvcmRlci0wIGJnLWdyYXktMTAwIGRhcms6YmctZ3JheS03MDAgbWQ6bXktMTBcIlxuICB9LFxuICBpY29uOiB7XG4gICAgYmFzZTogXCJpbmxpbmUtZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCIsXG4gICAgaHJMaW5lOiBcIm15LTggaC0xIHctNjQgcm91bmRlZCBib3JkZXItMCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJhYnNvbHV0ZSBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIGJnLXdoaXRlIHB4LTQgZGFyazpiZy1ncmF5LTkwMFwiLFxuICAgICAgaWNvbjogXCJoLTQgdy00IHRleHQtZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMzAwXCJcbiAgICB9XG4gIH0sXG4gIHRleHQ6IHtcbiAgICBiYXNlOiBcImlubGluZS1mbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIixcbiAgICBockxpbmU6IFwibXktOCBoLXB4IHctNjQgYm9yZGVyLTAgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgIHRleHQ6IFwiYWJzb2x1dGUgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiBiZy13aGl0ZSBweC0zIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazpiZy1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIlxuICB9LFxuICBzcXVhcmU6IHtcbiAgICBiYXNlOiBcIm14LWF1dG8gbXktOCBoLTggdy04IHJvdW5kZWQgYm9yZGVyLTAgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMCBtZDpteS0xMlwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBoclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGtiZFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctZ3JheS0xMDAgcHgtMiBweS0xLjUgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZ3JheS04MDAgZGFyazpib3JkZXItZ3JheS01MDAgZGFyazpiZy1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0xMDBcIixcbiAgICBpY29uOiBcImlubGluZS1ibG9ja1wiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBrYmRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBsYWJlbFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCIsXG4gICAgZGlzYWJsZWQ6IFwib3BhY2l0eS01MFwiLFxuICAgIGNvbG9yczoge1xuICAgICAgZGVmYXVsdDogXCJ0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiLFxuICAgICAgaW5mbzogXCJ0ZXh0LWN5YW4tNTAwIGRhcms6dGV4dC1jeWFuLTYwMFwiLFxuICAgICAgZmFpbHVyZTogXCJ0ZXh0LXJlZC03MDAgZGFyazp0ZXh0LXJlZC01MDBcIixcbiAgICAgIHdhcm5pbmc6IFwidGV4dC15ZWxsb3ctNTAwIGRhcms6dGV4dC15ZWxsb3ctNjAwXCIsXG4gICAgICBzdWNjZXNzOiBcInRleHQtZ3JlZW4tNzAwIGRhcms6dGV4dC1ncmVlbi01MDBcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGxhYmVsVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgbGlzdFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJsaXN0LWluc2lkZSBzcGFjZS15LTEgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICBvcmRlcmVkOiB7XG4gICAgICBvZmY6IFwibGlzdC1kaXNjXCIsXG4gICAgICBvbjogXCJsaXN0LWRlY2ltYWxcIlxuICAgIH0sXG4gICAgaG9yaXpvbnRhbDogXCJmbGV4IGxpc3Qtbm9uZSBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtNCBzcGFjZS15LTBcIixcbiAgICB1bnN0eWxlZDogXCJsaXN0LW5vbmVcIixcbiAgICBuZXN0ZWQ6IFwibXQtMiBwcy01XCJcbiAgfSxcbiAgaXRlbToge1xuICAgIHdpdGhJY29uOiB7XG4gICAgICBvZmY6IFwiXCIsXG4gICAgICBvbjogXCJmbGV4IGl0ZW1zLWNlbnRlclwiXG4gICAgfSxcbiAgICBpY29uOiBcIm1lLTIgaC0zLjUgdy0zLjUgZmxleC1zaHJpbmstMFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBsaXN0VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgbGlzdEdyb3VwVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImxpc3Qtbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1sZWZ0IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH0sXG4gIGl0ZW06IHtcbiAgICBiYXNlOiBcIlsmPipdOmZpcnN0OnJvdW5kZWQtdC1sZyBbJj4qXTpsYXN0OnJvdW5kZWQtYi1sZyBbJj4qXTpsYXN0OmJvcmRlci1iLTBcIixcbiAgICBsaW5rOiB7XG4gICAgICBiYXNlOiBcImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBib3JkZXItYiBib3JkZXItZ3JheS0yMDAgcHgtNCBweS0yIGRhcms6Ym9yZGVyLWdyYXktNjAwXCIsXG4gICAgICBhY3RpdmU6IHtcbiAgICAgICAgb2ZmOiBcImhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtY3lhbi03MDAgZm9jdXM6dGV4dC1jeWFuLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctY3lhbi03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGUgZGFyazpmb2N1czp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ncmF5LTUwMFwiLFxuICAgICAgICBvbjogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGRhcms6YmctZ3JheS04MDBcIlxuICAgICAgfSxcbiAgICAgIGRpc2FibGVkOiB7XG4gICAgICAgIG9mZjogXCJcIixcbiAgICAgICAgb246IFwiY3Vyc29yLW5vdC1hbGxvd2VkIGJnLWdyYXktMTAwIHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBmb2N1czp0ZXh0LWdyYXktOTAwXCJcbiAgICAgIH0sXG4gICAgICBocmVmOiB7XG4gICAgICAgIG9mZjogXCJcIixcbiAgICAgICAgb246IFwiXCJcbiAgICAgIH0sXG4gICAgICBpY29uOiBcIm1yLTIgaC00IHctNCBmaWxsLWN1cnJlbnRcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGxpc3RHcm91cFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IG5hdmJhclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJiZy13aGl0ZSBweC0yIHB5LTIuNSBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktODAwIHNtOnB4LTRcIixcbiAgICByb3VuZGVkOiB7XG4gICAgICBvbjogXCJyb3VuZGVkXCIsXG4gICAgICBvZmY6IFwiXCJcbiAgICB9LFxuICAgIGJvcmRlcmVkOiB7XG4gICAgICBvbjogXCJib3JkZXJcIixcbiAgICAgIG9mZjogXCJcIlxuICAgIH0sXG4gICAgaW5uZXI6IHtcbiAgICAgIGJhc2U6IFwibXgtYXV0byBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCIsXG4gICAgICBmbHVpZDoge1xuICAgICAgICBvbjogXCJcIixcbiAgICAgICAgb2ZmOiBcImNvbnRhaW5lclwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBicmFuZDoge1xuICAgIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXJcIlxuICB9LFxuICBjb2xsYXBzZToge1xuICAgIGJhc2U6IFwidy1mdWxsIG1kOmJsb2NrIG1kOnctYXV0b1wiLFxuICAgIGxpc3Q6IFwibXQtNCBmbGV4IGZsZXgtY29sIG1kOm10LTAgbWQ6ZmxleC1yb3cgbWQ6c3BhY2UteC04IG1kOnRleHQtc20gbWQ6Zm9udC1tZWRpdW1cIixcbiAgICBoaWRkZW46IHtcbiAgICAgIG9uOiBcImhpZGRlblwiLFxuICAgICAgb2ZmOiBcIlwiXG4gICAgfVxuICB9LFxuICBsaW5rOiB7XG4gICAgYmFzZTogXCJibG9jayBweS0yIHBsLTMgcHItNCBtZDpwLTBcIixcbiAgICBhY3RpdmU6IHtcbiAgICAgIG9uOiBcImJnLWN5YW4tNzAwIHRleHQtd2hpdGUgZGFyazp0ZXh0LXdoaXRlIG1kOmJnLXRyYW5zcGFyZW50IG1kOnRleHQtY3lhbi03MDBcIixcbiAgICAgIG9mZjogXCJib3JkZXItYiBib3JkZXItZ3JheS0xMDAgdGV4dC1ncmF5LTcwMCBob3ZlcjpiZy1ncmF5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZSBtZDpib3JkZXItMCBtZDpob3ZlcjpiZy10cmFuc3BhcmVudCBtZDpob3Zlcjp0ZXh0LWN5YW4tNzAwIG1kOmRhcms6aG92ZXI6YmctdHJhbnNwYXJlbnQgbWQ6ZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCJcbiAgICB9LFxuICAgIGRpc2FibGVkOiB7XG4gICAgICBvbjogXCJ0ZXh0LWdyYXktNDAwIGhvdmVyOmN1cnNvci1ub3QtYWxsb3dlZCBkYXJrOnRleHQtZ3JheS02MDBcIixcbiAgICAgIG9mZjogXCJcIlxuICAgIH1cbiAgfSxcbiAgdG9nZ2xlOiB7XG4gICAgYmFzZTogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBwLTIgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTIwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS02MDAgbWQ6aGlkZGVuXCIsXG4gICAgaWNvbjogXCJoLTYgdy02IHNocmluay0wXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IG5hdmJhclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuaW1wb3J0IHsgZHJvcGRvd25UaGVtZSB9IGZyb20gJy4uL0Ryb3Bkb3duL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBuYXZiYXJUaGVtZSB9IGZyb20gJy4uL05hdmJhci90aGVtZS5tanMnO1xuXG5jb25zdCBtZWdhTWVudVRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICAuLi5uYXZiYXJUaGVtZSxcbiAgZHJvcGRvd246IHtcbiAgICBiYXNlOiBcIlwiLFxuICAgIHRvZ2dsZToge1xuICAgICAgLi4uZHJvcGRvd25UaGVtZSxcbiAgICAgIGZsb2F0aW5nOiB7XG4gICAgICAgIC4uLmRyb3Bkb3duVGhlbWUuZmxvYXRpbmcsXG4gICAgICAgIGJhc2U6IHR3TWVyZ2UoZHJvcGRvd25UaGVtZS5mbG9hdGluZy5iYXNlLCBcIm10LTIgYmxvY2tcIiksXG4gICAgICAgIGNvbnRlbnQ6IHR3TWVyZ2UoZHJvcGRvd25UaGVtZS5mbG9hdGluZy5jb250ZW50LCBcInRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIpLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIC4uLmRyb3Bkb3duVGhlbWUuZmxvYXRpbmcuc3R5bGUsXG4gICAgICAgICAgYXV0bzogdHdNZXJnZShkcm9wZG93blRoZW1lLmZsb2F0aW5nLnN0eWxlLmF1dG8sIFwidGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIilcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlubGluZVdyYXBwZXI6IHR3TWVyZ2UoZHJvcGRvd25UaGVtZS5pbmxpbmVXcmFwcGVyLCBcImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIilcbiAgICB9XG4gIH0sXG4gIGRyb3Bkb3duVG9nZ2xlOiB7XG4gICAgYmFzZTogdHdNZXJnZShuYXZiYXJUaGVtZS5saW5rLmJhc2UsIG5hdmJhclRoZW1lLmxpbmsuYWN0aXZlLm9mZiwgXCJmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCIpXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBtZWdhTWVudVRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IG1vZGFsVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZpeGVkIGluc2V0LXgtMCB0b3AtMCB6LTUwIGgtc2NyZWVuIG92ZXJmbG93LXktYXV0byBvdmVyZmxvdy14LWhpZGRlbiBtZDppbnNldC0wIG1kOmgtZnVsbFwiLFxuICAgIHNob3c6IHtcbiAgICAgIG9uOiBcImZsZXggYmctZ3JheS05MDAgYmctb3BhY2l0eS01MCBkYXJrOmJnLW9wYWNpdHktODBcIixcbiAgICAgIG9mZjogXCJoaWRkZW5cIlxuICAgIH0sXG4gICAgc2l6ZXM6IHtcbiAgICAgIHNtOiBcIm1heC13LXNtXCIsXG4gICAgICBtZDogXCJtYXgtdy1tZFwiLFxuICAgICAgbGc6IFwibWF4LXctbGdcIixcbiAgICAgIHhsOiBcIm1heC13LXhsXCIsXG4gICAgICBcIjJ4bFwiOiBcIm1heC13LTJ4bFwiLFxuICAgICAgXCIzeGxcIjogXCJtYXgtdy0zeGxcIixcbiAgICAgIFwiNHhsXCI6IFwibWF4LXctNHhsXCIsXG4gICAgICBcIjV4bFwiOiBcIm1heC13LTV4bFwiLFxuICAgICAgXCI2eGxcIjogXCJtYXgtdy02eGxcIixcbiAgICAgIFwiN3hsXCI6IFwibWF4LXctN3hsXCJcbiAgICB9LFxuICAgIHBvc2l0aW9uczoge1xuICAgICAgXCJ0b3AtbGVmdFwiOiBcIml0ZW1zLXN0YXJ0IGp1c3RpZnktc3RhcnRcIixcbiAgICAgIFwidG9wLWNlbnRlclwiOiBcIml0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyXCIsXG4gICAgICBcInRvcC1yaWdodFwiOiBcIml0ZW1zLXN0YXJ0IGp1c3RpZnktZW5kXCIsXG4gICAgICBcImNlbnRlci1sZWZ0XCI6IFwiaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnRcIixcbiAgICAgIGNlbnRlcjogXCJpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIixcbiAgICAgIFwiY2VudGVyLXJpZ2h0XCI6IFwiaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kXCIsXG4gICAgICBcImJvdHRvbS1yaWdodFwiOiBcIml0ZW1zLWVuZCBqdXN0aWZ5LWVuZFwiLFxuICAgICAgXCJib3R0b20tY2VudGVyXCI6IFwiaXRlbXMtZW5kIGp1c3RpZnktY2VudGVyXCIsXG4gICAgICBcImJvdHRvbS1sZWZ0XCI6IFwiaXRlbXMtZW5kIGp1c3RpZnktc3RhcnRcIlxuICAgIH1cbiAgfSxcbiAgY29udGVudDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgaC1mdWxsIHctZnVsbCBwLTQgbWQ6aC1hdXRvXCIsXG4gICAgaW5uZXI6IFwicmVsYXRpdmUgZmxleCBtYXgtaC1bOTBkdmhdIGZsZXgtY29sIHJvdW5kZWQtbGcgYmctd2hpdGUgc2hhZG93IGRhcms6YmctZ3JheS03MDBcIlxuICB9LFxuICBib2R5OiB7XG4gICAgYmFzZTogXCJmbGV4LTEgb3ZlcmZsb3ctYXV0byBwLTZcIixcbiAgICBwb3B1cDogXCJwdC0wXCJcbiAgfSxcbiAgaGVhZGVyOiB7XG4gICAgYmFzZTogXCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLXQgYm9yZGVyLWIgcC01IGRhcms6Ym9yZGVyLWdyYXktNjAwXCIsXG4gICAgcG9wdXA6IFwiYm9yZGVyLWItMCBwLTJcIixcbiAgICB0aXRsZTogXCJ0ZXh0LXhsIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIsXG4gICAgY2xvc2U6IHtcbiAgICAgIGJhc2U6IFwibWwtYXV0byBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBiZy10cmFuc3BhcmVudCBwLTEuNSB0ZXh0LXNtIHRleHQtZ3JheS00MDAgaG92ZXI6YmctZ3JheS0yMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgaWNvbjogXCJoLTUgdy01XCJcbiAgICB9XG4gIH0sXG4gIGZvb3Rlcjoge1xuICAgIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIHJvdW5kZWQtYiBib3JkZXItZ3JheS0yMDAgcC02IGRhcms6Ym9yZGVyLWdyYXktNjAwXCIsXG4gICAgcG9wdXA6IFwiYm9yZGVyLXRcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgbW9kYWxUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBwYWdpbmF0aW9uVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiXCIsXG4gIGxheW91dDoge1xuICAgIHRhYmxlOiB7XG4gICAgICBiYXNlOiBcInRleHQtc20gdGV4dC1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICAgIHNwYW46IFwiZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgfVxuICB9LFxuICBwYWdlczoge1xuICAgIGJhc2U6IFwieHM6bXQtMCBtdC0yIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciAtc3BhY2UteC1weFwiLFxuICAgIHNob3dJY29uOiBcImlubGluZS1mbGV4XCIsXG4gICAgcHJldmlvdXM6IHtcbiAgICAgIGJhc2U6IFwibWwtMCByb3VuZGVkLWwtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSBweC0zIHB5LTIgbGVhZGluZy10aWdodCB0ZXh0LWdyYXktNTAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JheS0xMDAgZW5hYmxlZDpob3Zlcjp0ZXh0LWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktNDAwIGVuYWJsZWQ6ZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBlbmFibGVkOmRhcms6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgaWNvbjogXCJoLTUgdy01XCJcbiAgICB9LFxuICAgIG5leHQ6IHtcbiAgICAgIGJhc2U6IFwicm91bmRlZC1yLWxnIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgcHgtMyBweS0yIGxlYWRpbmctdGlnaHQgdGV4dC1ncmF5LTUwMCBlbmFibGVkOmhvdmVyOmJnLWdyYXktMTAwIGVuYWJsZWQ6aG92ZXI6dGV4dC1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktODAwIGRhcms6dGV4dC1ncmF5LTQwMCBlbmFibGVkOmRhcms6aG92ZXI6YmctZ3JheS03MDAgZW5hYmxlZDpkYXJrOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICAgIGljb246IFwiaC01IHctNVwiXG4gICAgfSxcbiAgICBzZWxlY3Rvcjoge1xuICAgICAgYmFzZTogXCJ3LTEyIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgcHktMiBsZWFkaW5nLXRpZ2h0IHRleHQtZ3JheS01MDAgZW5hYmxlZDpob3ZlcjpiZy1ncmF5LTEwMCBlbmFibGVkOmhvdmVyOnRleHQtZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDAgZW5hYmxlZDpkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGVuYWJsZWQ6ZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgICBhY3RpdmU6IFwiYmctY3lhbi01MCB0ZXh0LWN5YW4tNjAwIGhvdmVyOmJnLWN5YW4tMTAwIGhvdmVyOnRleHQtY3lhbi03MDAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGVcIixcbiAgICAgIGRpc2FibGVkOiBcImN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBwYWdpbmF0aW9uVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImNvbnN0IHBvcG92ZXJUaGVtZSA9IHtcbiAgYmFzZTogXCJhYnNvbHV0ZSB6LTIwIGlubGluZS1ibG9jayB3LW1heCBtYXgtdy1bMTAwdnddIGJnLXdoaXRlIG91dGxpbmUtbm9uZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LXNtIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS04MDBcIixcbiAgY29udGVudDogXCJ6LTEwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLVs3cHhdXCIsXG4gIGFycm93OiB7XG4gICAgYmFzZTogXCJhYnNvbHV0ZSBoLTIgdy0yIHotMCByb3RhdGUtNDUgbWl4LWJsZW5kLWxpZ2h0ZW4gYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktODAwIGRhcms6bWl4LWJsZW5kLWNvbG9yXCIsXG4gICAgcGxhY2VtZW50OiBcIi00cHhcIlxuICB9XG59O1xuXG5leHBvcnQgeyBwb3BvdmVyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgcHJvZ3Jlc3NUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJ3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gIGxhYmVsOiBcIm1iLTEgZmxleCBqdXN0aWZ5LWJldHdlZW4gZm9udC1tZWRpdW0gZGFyazp0ZXh0LXdoaXRlXCIsXG4gIGJhcjogXCJzcGFjZS14LTIgcm91bmRlZC1mdWxsIHRleHQtY2VudGVyIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZSB0ZXh0LWN5YW4tMzAwIGRhcms6dGV4dC1jeWFuLTEwMFwiLFxuICBjb2xvcjoge1xuICAgIGRhcms6IFwiYmctZ3JheS02MDAgZGFyazpiZy1ncmF5LTMwMFwiLFxuICAgIGJsdWU6IFwiYmctYmx1ZS02MDBcIixcbiAgICByZWQ6IFwiYmctcmVkLTYwMCBkYXJrOmJnLXJlZC01MDBcIixcbiAgICBncmVlbjogXCJiZy1ncmVlbi02MDAgZGFyazpiZy1ncmVlbi01MDBcIixcbiAgICB5ZWxsb3c6IFwiYmcteWVsbG93LTQwMFwiLFxuICAgIGluZGlnbzogXCJiZy1pbmRpZ28tNjAwIGRhcms6YmctaW5kaWdvLTUwMFwiLFxuICAgIHB1cnBsZTogXCJiZy1wdXJwbGUtNjAwIGRhcms6YmctcHVycGxlLTUwMFwiLFxuICAgIGN5YW46IFwiYmctY3lhbi02MDBcIixcbiAgICBncmF5OiBcImJnLWdyYXktNTAwXCIsXG4gICAgbGltZTogXCJiZy1saW1lLTYwMFwiLFxuICAgIHBpbms6IFwiYmctcGluay01MDBcIixcbiAgICB0ZWFsOiBcImJnLXRlYWwtNjAwXCJcbiAgfSxcbiAgc2l6ZToge1xuICAgIHNtOiBcImgtMS41XCIsXG4gICAgbWQ6IFwiaC0yLjVcIixcbiAgICBsZzogXCJoLTRcIixcbiAgICB4bDogXCJoLTZcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgcHJvZ3Jlc3NUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCByYWRpb1RoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJoLTQgdy00IGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1jeWFuLTYwMCBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6Zm9jdXM6YmctY3lhbi02MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNjAwXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IHJhZGlvVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgcmFuZ2VTbGlkZXJUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZmxleFwiXG4gIH0sXG4gIGZpZWxkOiB7XG4gICAgYmFzZTogXCJyZWxhdGl2ZSB3LWZ1bGxcIixcbiAgICBpbnB1dDoge1xuICAgICAgYmFzZTogXCJ3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgICAgc2l6ZXM6IHtcbiAgICAgICAgc206IFwiaC0xXCIsXG4gICAgICAgIG1kOiBcImgtMlwiLFxuICAgICAgICBsZzogXCJoLTNcIlxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IHJhbmdlU2xpZGVyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgcmF0aW5nVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZsZXggaXRlbXMtY2VudGVyXCJcbiAgfSxcbiAgc3Rhcjoge1xuICAgIGVtcHR5OiBcInRleHQtZ3JheS0zMDAgZGFyazp0ZXh0LWdyYXktNTAwXCIsXG4gICAgZmlsbGVkOiBcInRleHQteWVsbG93LTQwMFwiLFxuICAgIHNpemVzOiB7XG4gICAgICBzbTogXCJoLTUgdy01XCIsXG4gICAgICBtZDogXCJoLTcgdy03XCIsXG4gICAgICBsZzogXCJoLTEwIHctMTBcIlxuICAgIH1cbiAgfVxufSk7XG5jb25zdCByYXRpbmdBZHZhbmNlZFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImZsZXggaXRlbXMtY2VudGVyXCIsXG4gIGxhYmVsOiBcInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1jeWFuLTYwMCBkYXJrOnRleHQtY3lhbi01MDBcIixcbiAgcHJvZ3Jlc3M6IHtcbiAgICBiYXNlOiBcIm14LTQgaC01IHctMi80IHJvdW5kZWQgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgIGZpbGw6IFwiaC01IHJvdW5kZWQgYmcteWVsbG93LTQwMFwiLFxuICAgIGxhYmVsOiBcInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1jeWFuLTYwMCBkYXJrOnRleHQtY3lhbi01MDBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgcmF0aW5nQWR2YW5jZWRUaGVtZSwgcmF0aW5nVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3Qgc2VsZWN0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiZmxleFwiLFxuICBhZGRvbjogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sLW1kIGJvcmRlciBib3JkZXItci0wIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTIwMCBweC0zIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICBmaWVsZDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgdy1mdWxsXCIsXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LXktMCBsZWZ0LTAgZmxleCBpdGVtcy1jZW50ZXIgcGwtM1wiLFxuICAgICAgc3ZnOiBcImgtNSB3LTUgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgIH0sXG4gICAgc2VsZWN0OiB7XG4gICAgICBiYXNlOiBcImJsb2NrIHctZnVsbCBib3JkZXIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICAgIHdpdGhJY29uOiB7XG4gICAgICAgIG9uOiBcInBsLTEwXCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHdpdGhBZGRvbjoge1xuICAgICAgICBvbjogXCJyb3VuZGVkLXItbGdcIixcbiAgICAgICAgb2ZmOiBcInJvdW5kZWQtbGdcIlxuICAgICAgfSxcbiAgICAgIHdpdGhTaGFkb3c6IHtcbiAgICAgICAgb246IFwic2hhZG93LXNtIGRhcms6c2hhZG93LXNtLWxpZ2h0XCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHNpemVzOiB7XG4gICAgICAgIHNtOiBcInAtMiBzbTp0ZXh0LXhzXCIsXG4gICAgICAgIG1kOiBcInAtMi41IHRleHQtc21cIixcbiAgICAgICAgbGc6IFwicC00IHNtOnRleHQtYmFzZVwiXG4gICAgICB9LFxuICAgICAgY29sb3JzOiB7XG4gICAgICAgIGdyYXk6IFwiYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItY3lhbi01MDAgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6Zm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTUwMFwiLFxuICAgICAgICBpbmZvOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTUwIHRleHQtY3lhbi05MDAgcGxhY2Vob2xkZXItY3lhbi03MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItY3lhbi00MDAgZGFyazpiZy1jeWFuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICAgICAgZmFpbHVyZTogXCJib3JkZXItcmVkLTUwMCBiZy1yZWQtNTAgdGV4dC1yZWQtOTAwIHBsYWNlaG9sZGVyLXJlZC03MDAgZm9jdXM6Ym9yZGVyLXJlZC01MDAgZm9jdXM6cmluZy1yZWQtNTAwIGRhcms6Ym9yZGVyLXJlZC00MDAgZGFyazpiZy1yZWQtMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDAgZGFyazpmb2N1czpyaW5nLXJlZC01MDBcIixcbiAgICAgICAgd2FybmluZzogXCJib3JkZXIteWVsbG93LTUwMCBiZy15ZWxsb3ctNTAgdGV4dC15ZWxsb3ctOTAwIHBsYWNlaG9sZGVyLXllbGxvdy03MDAgZm9jdXM6Ym9yZGVyLXllbGxvdy01MDAgZm9jdXM6cmluZy15ZWxsb3ctNTAwIGRhcms6Ym9yZGVyLXllbGxvdy00MDAgZGFyazpiZy15ZWxsb3ctMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLXllbGxvdy01MDAgZGFyazpmb2N1czpyaW5nLXllbGxvdy01MDBcIixcbiAgICAgICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTUwIHRleHQtZ3JlZW4tOTAwIHBsYWNlaG9sZGVyLWdyZWVuLTcwMCBmb2N1czpib3JkZXItZ3JlZW4tNTAwIGZvY3VzOnJpbmctZ3JlZW4tNTAwIGRhcms6Ym9yZGVyLWdyZWVuLTQwMCBkYXJrOmJnLWdyZWVuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTUwMFwiXG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgc2VsZWN0VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3Qgc2lkZWJhclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJoLWZ1bGxcIixcbiAgICBjb2xsYXBzZWQ6IHtcbiAgICAgIG9uOiBcInctMTZcIixcbiAgICAgIG9mZjogXCJ3LTY0XCJcbiAgICB9LFxuICAgIGlubmVyOiBcImgtZnVsbCBvdmVyZmxvdy15LWF1dG8gb3ZlcmZsb3cteC1oaWRkZW4gcm91bmRlZCBiZy1ncmF5LTUwIHB4LTMgcHktNCBkYXJrOmJnLWdyYXktODAwXCJcbiAgfSxcbiAgY29sbGFwc2U6IHtcbiAgICBidXR0b246IFwiZ3JvdXAgZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIHJvdW5kZWQtbGcgcC0yIHRleHQtYmFzZSBmb250LW5vcm1hbCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24gZHVyYXRpb24tNzUgaG92ZXI6YmctZ3JheS0xMDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS03MDBcIixcbiAgICBpY29uOiB7XG4gICAgICBiYXNlOiBcImgtNiB3LTYgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uIGR1cmF0aW9uLTc1IGdyb3VwLWhvdmVyOnRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6Z3JvdXAtaG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgb3Blbjoge1xuICAgICAgICBvZmY6IFwiXCIsXG4gICAgICAgIG9uOiBcInRleHQtZ3JheS05MDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIGJhc2U6IFwibWwtMyBmbGV4LTEgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC1sZWZ0XCIsXG4gICAgICBpY29uOiB7XG4gICAgICAgIGJhc2U6IFwiaC02IHctNiB0cmFuc2l0aW9uIGRlbGF5LTAgZWFzZS1pbi1vdXRcIixcbiAgICAgICAgb3Blbjoge1xuICAgICAgICAgIG9uOiBcInJvdGF0ZS0xODBcIixcbiAgICAgICAgICBvZmY6IFwiXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGlzdDogXCJzcGFjZS15LTIgcHktMlwiXG4gIH0sXG4gIGN0YToge1xuICAgIGJhc2U6IFwibXQtNiByb3VuZGVkLWxnIGJnLWdyYXktMTAwIHAtNCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgY29sb3I6IHtcbiAgICAgIGJsdWU6IFwiYmctY3lhbi01MCBkYXJrOmJnLWN5YW4tOTAwXCIsXG4gICAgICBkYXJrOiBcImJnLWRhcmstNTAgZGFyazpiZy1kYXJrLTkwMFwiLFxuICAgICAgZmFpbHVyZTogXCJiZy1yZWQtNTAgZGFyazpiZy1yZWQtOTAwXCIsXG4gICAgICBncmF5OiBcImJnLWFsdGVybmF0aXZlLTUwIGRhcms6YmctYWx0ZXJuYXRpdmUtOTAwXCIsXG4gICAgICBncmVlbjogXCJiZy1ncmVlbi01MCBkYXJrOmJnLWdyZWVuLTkwMFwiLFxuICAgICAgbGlnaHQ6IFwiYmctbGlnaHQtNTAgZGFyazpiZy1saWdodC05MDBcIixcbiAgICAgIHJlZDogXCJiZy1yZWQtNTAgZGFyazpiZy1yZWQtOTAwXCIsXG4gICAgICBwdXJwbGU6IFwiYmctcHVycGxlLTUwIGRhcms6YmctcHVycGxlLTkwMFwiLFxuICAgICAgc3VjY2VzczogXCJiZy1ncmVlbi01MCBkYXJrOmJnLWdyZWVuLTkwMFwiLFxuICAgICAgeWVsbG93OiBcImJnLXllbGxvdy01MCBkYXJrOmJnLXllbGxvdy05MDBcIixcbiAgICAgIHdhcm5pbmc6IFwiYmcteWVsbG93LTUwIGRhcms6YmcteWVsbG93LTkwMFwiXG4gICAgfVxuICB9LFxuICBpdGVtOiB7XG4gICAgYmFzZTogXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIHAtMiB0ZXh0LWJhc2UgZm9udC1ub3JtYWwgdGV4dC1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTcwMFwiLFxuICAgIGFjdGl2ZTogXCJiZy1ncmF5LTEwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgY29sbGFwc2VkOiB7XG4gICAgICBpbnNpZGVDb2xsYXBzZTogXCJncm91cCB3LWZ1bGwgcGwtOCB0cmFuc2l0aW9uIGR1cmF0aW9uLTc1XCIsXG4gICAgICBub0ljb246IFwiZm9udC1ib2xkXCJcbiAgICB9LFxuICAgIGNvbnRlbnQ6IHtcbiAgICAgIGJhc2U6IFwiZmxleC0xIHdoaXRlc3BhY2Utbm93cmFwIHB4LTNcIlxuICAgIH0sXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJoLTYgdy02IGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uIGR1cmF0aW9uLTc1IGdyb3VwLWhvdmVyOnRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6Z3JvdXAtaG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgYWN0aXZlOiBcInRleHQtZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMTAwXCJcbiAgICB9LFxuICAgIGxhYmVsOiBcIlwiLFxuICAgIGxpc3RJdGVtOiBcIlwiXG4gIH0sXG4gIGl0ZW1zOiB7XG4gICAgYmFzZTogXCJcIlxuICB9LFxuICBpdGVtR3JvdXA6IHtcbiAgICBiYXNlOiBcIm10LTQgc3BhY2UteS0yIGJvcmRlci10IGJvcmRlci1ncmF5LTIwMCBwdC00IGZpcnN0Om10LTAgZmlyc3Q6Ym9yZGVyLXQtMCBmaXJzdDpwdC0wIGRhcms6Ym9yZGVyLWdyYXktNzAwXCJcbiAgfSxcbiAgbG9nbzoge1xuICAgIGJhc2U6IFwibWItNSBmbGV4IGl0ZW1zLWNlbnRlciBwbC0yLjVcIixcbiAgICBjb2xsYXBzZWQ6IHtcbiAgICAgIG9uOiBcImhpZGRlblwiLFxuICAgICAgb2ZmOiBcInNlbGYtY2VudGVyIHdoaXRlc3BhY2Utbm93cmFwIHRleHQteGwgZm9udC1zZW1pYm9sZCBkYXJrOnRleHQtd2hpdGVcIlxuICAgIH0sXG4gICAgaW1nOiBcIm1yLTMgaC02IHNtOmgtN1wiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBzaWRlYmFyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3Qgc3Bpbm5lclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImlubGluZSBhbmltYXRlLXNwaW4gdGV4dC1ncmF5LTIwMFwiLFxuICBjb2xvcjoge1xuICAgIGZhaWx1cmU6IFwiZmlsbC1yZWQtNjAwXCIsXG4gICAgZ3JheTogXCJmaWxsLWdyYXktNjAwXCIsXG4gICAgaW5mbzogXCJmaWxsLWN5YW4tNjAwXCIsXG4gICAgcGluazogXCJmaWxsLXBpbmstNjAwXCIsXG4gICAgcHVycGxlOiBcImZpbGwtcHVycGxlLTYwMFwiLFxuICAgIHN1Y2Nlc3M6IFwiZmlsbC1ncmVlbi01MDBcIixcbiAgICB3YXJuaW5nOiBcImZpbGwteWVsbG93LTQwMFwiXG4gIH0sXG4gIGxpZ2h0OiB7XG4gICAgb2ZmOiB7XG4gICAgICBiYXNlOiBcImRhcms6dGV4dC1ncmF5LTYwMFwiLFxuICAgICAgY29sb3I6IHtcbiAgICAgICAgZmFpbHVyZTogXCJcIixcbiAgICAgICAgZ3JheTogXCJkYXJrOmZpbGwtZ3JheS0zMDBcIixcbiAgICAgICAgaW5mbzogXCJcIixcbiAgICAgICAgcGluazogXCJcIixcbiAgICAgICAgcHVycGxlOiBcIlwiLFxuICAgICAgICBzdWNjZXNzOiBcIlwiLFxuICAgICAgICB3YXJuaW5nOiBcIlwiXG4gICAgICB9XG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgYmFzZTogXCJcIixcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIGZhaWx1cmU6IFwiXCIsXG4gICAgICAgIGdyYXk6IFwiXCIsXG4gICAgICAgIGluZm86IFwiXCIsXG4gICAgICAgIHBpbms6IFwiXCIsXG4gICAgICAgIHB1cnBsZTogXCJcIixcbiAgICAgICAgc3VjY2VzczogXCJcIixcbiAgICAgICAgd2FybmluZzogXCJcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgc2l6ZToge1xuICAgIHhzOiBcImgtMyB3LTNcIixcbiAgICBzbTogXCJoLTQgdy00XCIsXG4gICAgbWQ6IFwiaC02IHctNlwiLFxuICAgIGxnOiBcImgtOCB3LThcIixcbiAgICB4bDogXCJoLTEwIHctMTBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgc3Bpbm5lclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IHRhYmxlVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInctZnVsbCB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgIHNoYWRvdzogXCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgLXotMTAgaC1mdWxsIHctZnVsbCByb3VuZGVkLWxnIGJnLXdoaXRlIGRyb3Atc2hhZG93LW1kIGRhcms6YmctYmxhY2tcIixcbiAgICB3cmFwcGVyOiBcInJlbGF0aXZlXCJcbiAgfSxcbiAgYm9keToge1xuICAgIGJhc2U6IFwiZ3JvdXAvYm9keVwiLFxuICAgIGNlbGw6IHtcbiAgICAgIGJhc2U6IFwicHgtNiBweS00IGdyb3VwLWZpcnN0L2JvZHk6Z3JvdXAtZmlyc3Qvcm93OmZpcnN0OnJvdW5kZWQtdGwtbGcgZ3JvdXAtZmlyc3QvYm9keTpncm91cC1maXJzdC9yb3c6bGFzdDpyb3VuZGVkLXRyLWxnIGdyb3VwLWxhc3QvYm9keTpncm91cC1sYXN0L3JvdzpmaXJzdDpyb3VuZGVkLWJsLWxnIGdyb3VwLWxhc3QvYm9keTpncm91cC1sYXN0L3JvdzpsYXN0OnJvdW5kZWQtYnItbGdcIlxuICAgIH1cbiAgfSxcbiAgaGVhZDoge1xuICAgIGJhc2U6IFwiZ3JvdXAvaGVhZCB0ZXh0LXhzIHVwcGVyY2FzZSB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgIGNlbGw6IHtcbiAgICAgIGJhc2U6IFwiYmctZ3JheS01MCBweC02IHB5LTMgZ3JvdXAtZmlyc3QvaGVhZDpmaXJzdDpyb3VuZGVkLXRsLWxnIGdyb3VwLWZpcnN0L2hlYWQ6bGFzdDpyb3VuZGVkLXRyLWxnIGRhcms6YmctZ3JheS03MDBcIlxuICAgIH1cbiAgfSxcbiAgcm93OiB7XG4gICAgYmFzZTogXCJncm91cC9yb3dcIixcbiAgICBob3ZlcmVkOiBcImhvdmVyOmJnLWdyYXktNTAgZGFyazpob3ZlcjpiZy1ncmF5LTYwMFwiLFxuICAgIHN0cmlwZWQ6IFwib2RkOmJnLXdoaXRlIGV2ZW46YmctZ3JheS01MCBvZGQ6ZGFyazpiZy1ncmF5LTgwMCBldmVuOmRhcms6YmctZ3JheS03MDBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgdGFibGVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCB0YWJUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJmbGV4IGZsZXgtY29sIGdhcC0yXCIsXG4gIHRhYmxpc3Q6IHtcbiAgICBiYXNlOiBcImZsZXggdGV4dC1jZW50ZXJcIixcbiAgICB2YXJpYW50OiB7XG4gICAgICBkZWZhdWx0OiBcImZsZXgtd3JhcCBib3JkZXItYiBib3JkZXItZ3JheS0yMDAgZGFyazpib3JkZXItZ3JheS03MDBcIixcbiAgICAgIHVuZGVybGluZTogXCItbWItcHggZmxleC13cmFwIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiLFxuICAgICAgcGlsbHM6IFwiZmxleC13cmFwIHNwYWNlLXgtMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gICAgICBmdWxsV2lkdGg6IFwiZ3JpZCB3LWZ1bGwgZ3JpZC1mbG93LWNvbCBkaXZpZGUteCBkaXZpZGUtZ3JheS0yMDAgcm91bmRlZC1ub25lIHRleHQtc20gZm9udC1tZWRpdW0gc2hhZG93IGRhcms6ZGl2aWRlLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTQwMFwiXG4gICAgfSxcbiAgICB0YWJpdGVtOiB7XG4gICAgICBiYXNlOiBcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtdC1sZyBwLTQgdGV4dC1zbSBmb250LW1lZGl1bSBmaXJzdDptbC0wIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6dGV4dC1ncmF5LTQwMCBkaXNhYmxlZDpkYXJrOnRleHQtZ3JheS01MDBcIixcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGJhc2U6IFwicm91bmRlZC10LWxnXCIsXG4gICAgICAgICAgYWN0aXZlOiB7XG4gICAgICAgICAgICBvbjogXCJiZy1ncmF5LTEwMCB0ZXh0LWN5YW4tNjAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LWN5YW4tNTAwXCIsXG4gICAgICAgICAgICBvZmY6IFwidGV4dC1ncmF5LTUwMCBob3ZlcjpiZy1ncmF5LTUwIGhvdmVyOnRleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgZGFyazpob3Zlcjp0ZXh0LWdyYXktMzAwXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHVuZGVybGluZToge1xuICAgICAgICAgIGJhc2U6IFwicm91bmRlZC10LWxnXCIsXG4gICAgICAgICAgYWN0aXZlOiB7XG4gICAgICAgICAgICBvbjogXCJhY3RpdmUgcm91bmRlZC10LWxnIGJvcmRlci1iLTIgYm9yZGVyLWN5YW4tNjAwIHRleHQtY3lhbi02MDAgZGFyazpib3JkZXItY3lhbi01MDAgZGFyazp0ZXh0LWN5YW4tNTAwXCIsXG4gICAgICAgICAgICBvZmY6IFwiYm9yZGVyLWItMiBib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAgaG92ZXI6dGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3Zlcjp0ZXh0LWdyYXktMzAwXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHBpbGxzOiB7XG4gICAgICAgICAgYmFzZTogXCJcIixcbiAgICAgICAgICBhY3RpdmU6IHtcbiAgICAgICAgICAgIG9uOiBcInJvdW5kZWQtbGcgYmctY3lhbi02MDAgdGV4dC13aGl0ZVwiLFxuICAgICAgICAgICAgb2ZmOiBcInJvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmdWxsV2lkdGg6IHtcbiAgICAgICAgICBiYXNlOiBcIm1sLTAgZmxleCB3LWZ1bGwgcm91bmRlZC1ub25lIGZpcnN0Om1sLTBcIixcbiAgICAgICAgICBhY3RpdmU6IHtcbiAgICAgICAgICAgIG9uOiBcImFjdGl2ZSByb3VuZGVkLW5vbmUgYmctZ3JheS0xMDAgcC00IHRleHQtZ3JheS05MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGVcIixcbiAgICAgICAgICAgIG9mZjogXCJyb3VuZGVkLW5vbmUgYmctd2hpdGUgaG92ZXI6YmctZ3JheS01MCBob3Zlcjp0ZXh0LWdyYXktNzAwIGRhcms6YmctZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGljb246IFwibXItMiBoLTUgdy01XCJcbiAgICB9XG4gIH0sXG4gIHRhYml0ZW1jb250YWluZXI6IHtcbiAgICBiYXNlOiBcIlwiLFxuICAgIHZhcmlhbnQ6IHtcbiAgICAgIGRlZmF1bHQ6IFwiXCIsXG4gICAgICB1bmRlcmxpbmU6IFwiXCIsXG4gICAgICBwaWxsczogXCJcIixcbiAgICAgIGZ1bGxXaWR0aDogXCJcIlxuICAgIH1cbiAgfSxcbiAgdGFicGFuZWw6IFwicHktM1wiXG59KTtcblxuZXhwb3J0IHsgdGFiVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdGV4dGFyZWFUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJibG9jayB3LWZ1bGwgcm91bmRlZC1sZyBib3JkZXIgdGV4dC1zbSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICBjb2xvcnM6IHtcbiAgICBncmF5OiBcImJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICBpbmZvOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTUwIHRleHQtY3lhbi05MDAgcGxhY2Vob2xkZXItY3lhbi03MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItY3lhbi00MDAgZGFyazpiZy1jeWFuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICBmYWlsdXJlOiBcImJvcmRlci1yZWQtNTAwIGJnLXJlZC01MCB0ZXh0LXJlZC05MDAgcGxhY2Vob2xkZXItcmVkLTcwMCBmb2N1czpib3JkZXItcmVkLTUwMCBmb2N1czpyaW5nLXJlZC01MDAgZGFyazpib3JkZXItcmVkLTQwMCBkYXJrOmJnLXJlZC0xMDAgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTUwMFwiLFxuICAgIHdhcm5pbmc6IFwiYm9yZGVyLXllbGxvdy01MDAgYmcteWVsbG93LTUwIHRleHQteWVsbG93LTkwMCBwbGFjZWhvbGRlci15ZWxsb3ctNzAwIGZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGZvY3VzOnJpbmcteWVsbG93LTUwMCBkYXJrOmJvcmRlci15ZWxsb3ctNDAwIGRhcms6YmcteWVsbG93LTEwMCBkYXJrOmZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNTAwXCIsXG4gICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTUwIHRleHQtZ3JlZW4tOTAwIHBsYWNlaG9sZGVyLWdyZWVuLTcwMCBmb2N1czpib3JkZXItZ3JlZW4tNTAwIGZvY3VzOnJpbmctZ3JlZW4tNTAwIGRhcms6Ym9yZGVyLWdyZWVuLTQwMCBkYXJrOmJnLWdyZWVuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTUwMFwiXG4gIH0sXG4gIHdpdGhTaGFkb3c6IHtcbiAgICBvbjogXCJzaGFkb3ctc20gZGFyazpzaGFkb3ctc20tbGlnaHRcIixcbiAgICBvZmY6IFwiXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IHRleHRhcmVhVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdGV4dElucHV0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiZmxleFwiLFxuICBhZGRvbjogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sLW1kIGJvcmRlciBib3JkZXItci0wIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTIwMCBweC0zIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICBmaWVsZDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgdy1mdWxsXCIsXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LXktMCBsZWZ0LTAgZmxleCBpdGVtcy1jZW50ZXIgcGwtM1wiLFxuICAgICAgc3ZnOiBcImgtNSB3LTUgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgIH0sXG4gICAgcmlnaHRJY29uOiB7XG4gICAgICBiYXNlOiBcInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQteS0wIHJpZ2h0LTAgZmxleCBpdGVtcy1jZW50ZXIgcHItM1wiLFxuICAgICAgc3ZnOiBcImgtNSB3LTUgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgIH0sXG4gICAgaW5wdXQ6IHtcbiAgICAgIGJhc2U6IFwiYmxvY2sgdy1mdWxsIGJvcmRlciBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgICAgc2l6ZXM6IHtcbiAgICAgICAgc206IFwicC0yIHNtOnRleHQteHNcIixcbiAgICAgICAgbWQ6IFwicC0yLjUgdGV4dC1zbVwiLFxuICAgICAgICBsZzogXCJwLTQgc206dGV4dC1iYXNlXCJcbiAgICAgIH0sXG4gICAgICBjb2xvcnM6IHtcbiAgICAgICAgZ3JheTogXCJib3JkZXItZ3JheS0zMDAgYmctZ3JheS01MCB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1jeWFuLTUwMCBmb2N1czpyaW5nLWN5YW4tNTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazpmb2N1czpib3JkZXItY3lhbi01MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNTAwXCIsXG4gICAgICAgIGluZm86IFwiYm9yZGVyLWN5YW4tNTAwIGJnLWN5YW4tNTAgdGV4dC1jeWFuLTkwMCBwbGFjZWhvbGRlci1jeWFuLTcwMCBmb2N1czpib3JkZXItY3lhbi01MDAgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1jeWFuLTQwMCBkYXJrOmJnLWN5YW4tMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTUwMFwiLFxuICAgICAgICBmYWlsdXJlOiBcImJvcmRlci1yZWQtNTAwIGJnLXJlZC01MCB0ZXh0LXJlZC05MDAgcGxhY2Vob2xkZXItcmVkLTcwMCBmb2N1czpib3JkZXItcmVkLTUwMCBmb2N1czpyaW5nLXJlZC01MDAgZGFyazpib3JkZXItcmVkLTQwMCBkYXJrOmJnLXJlZC0xMDAgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTUwMFwiLFxuICAgICAgICB3YXJuaW5nOiBcImJvcmRlci15ZWxsb3ctNTAwIGJnLXllbGxvdy01MCB0ZXh0LXllbGxvdy05MDAgcGxhY2Vob2xkZXIteWVsbG93LTcwMCBmb2N1czpib3JkZXIteWVsbG93LTUwMCBmb2N1czpyaW5nLXllbGxvdy01MDAgZGFyazpib3JkZXIteWVsbG93LTQwMCBkYXJrOmJnLXllbGxvdy0xMDAgZGFyazpmb2N1czpib3JkZXIteWVsbG93LTUwMCBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTUwMFwiLFxuICAgICAgICBzdWNjZXNzOiBcImJvcmRlci1ncmVlbi01MDAgYmctZ3JlZW4tNTAgdGV4dC1ncmVlbi05MDAgcGxhY2Vob2xkZXItZ3JlZW4tNzAwIGZvY3VzOmJvcmRlci1ncmVlbi01MDAgZm9jdXM6cmluZy1ncmVlbi01MDAgZGFyazpib3JkZXItZ3JlZW4tNDAwIGRhcms6YmctZ3JlZW4tMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tNTAwXCJcbiAgICAgIH0sXG4gICAgICB3aXRoUmlnaHRJY29uOiB7XG4gICAgICAgIG9uOiBcInByLTEwXCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHdpdGhJY29uOiB7XG4gICAgICAgIG9uOiBcInBsLTEwXCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHdpdGhBZGRvbjoge1xuICAgICAgICBvbjogXCJyb3VuZGVkLXItbGdcIixcbiAgICAgICAgb2ZmOiBcInJvdW5kZWQtbGdcIlxuICAgICAgfSxcbiAgICAgIHdpdGhTaGFkb3c6IHtcbiAgICAgICAgb246IFwic2hhZG93LXNtIGRhcms6c2hhZG93LXNtLWxpZ2h0XCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IHRleHRJbnB1dFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IHRpbWVsaW5lVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBkaXJlY3Rpb246IHtcbiAgICAgIGhvcml6b250YWw6IFwic206ZmxleFwiLFxuICAgICAgdmVydGljYWw6IFwicmVsYXRpdmUgYm9yZGVyLWwgYm9yZGVyLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCJcbiAgICB9XG4gIH0sXG4gIGl0ZW06IHtcbiAgICByb290OiB7XG4gICAgICBob3Jpem9udGFsOiBcInJlbGF0aXZlIG1iLTYgc206bWItMFwiLFxuICAgICAgdmVydGljYWw6IFwibWItMTAgbWwtNlwiXG4gICAgfSxcbiAgICBjb250ZW50OiB7XG4gICAgICByb290OiB7XG4gICAgICAgIGJhc2U6IFwiXCIsXG4gICAgICAgIGhvcml6b250YWw6IFwibXQtMyBzbTpwci04XCIsXG4gICAgICAgIHZlcnRpY2FsOiBcIlwiXG4gICAgICB9LFxuICAgICAgYm9keToge1xuICAgICAgICBiYXNlOiBcIm1iLTQgdGV4dC1iYXNlIGZvbnQtbm9ybWFsIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCJcbiAgICAgIH0sXG4gICAgICB0aW1lOiB7XG4gICAgICAgIGJhc2U6IFwibWItMSB0ZXh0LXNtIGZvbnQtbm9ybWFsIGxlYWRpbmctbm9uZSB0ZXh0LWdyYXktNDAwIGRhcms6dGV4dC1ncmF5LTUwMFwiXG4gICAgICB9LFxuICAgICAgdGl0bGU6IHtcbiAgICAgICAgYmFzZTogXCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIlxuICAgICAgfVxuICAgIH0sXG4gICAgcG9pbnQ6IHtcbiAgICAgIGhvcml6b250YWw6IFwiZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgICAgIGxpbmU6IFwiaGlkZGVuIGgtMC41IHctZnVsbCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwIHNtOmZsZXhcIixcbiAgICAgIG1hcmtlcjoge1xuICAgICAgICBiYXNlOiB7XG4gICAgICAgICAgaG9yaXpvbnRhbDogXCJhYnNvbHV0ZSAtbGVmdC0xLjUgaC0zIHctMyByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci13aGl0ZSBiZy1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTkwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgICAgICAgdmVydGljYWw6IFwiYWJzb2x1dGUgLWxlZnQtMS41IG10LTEuNSBoLTMgdy0zIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXdoaXRlIGJnLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktOTAwIGRhcms6YmctZ3JheS03MDBcIlxuICAgICAgICB9LFxuICAgICAgICBpY29uOiB7XG4gICAgICAgICAgYmFzZTogXCJoLTMgdy0zIHRleHQtY3lhbi02MDAgZGFyazp0ZXh0LWN5YW4tMzAwXCIsXG4gICAgICAgICAgd3JhcHBlcjogXCJhYnNvbHV0ZSAtbGVmdC0zIGZsZXggaC02IHctNiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJnLWN5YW4tMjAwIHJpbmctOCByaW5nLXdoaXRlIGRhcms6YmctY3lhbi05MDAgZGFyazpyaW5nLWdyYXktOTAwXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHZlcnRpY2FsOiBcIlwiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgdGltZWxpbmVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCB0b2FzdFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJmbGV4IHctZnVsbCBtYXgtdy14cyBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBiZy13aGl0ZSBwLTQgdGV4dC1ncmF5LTUwMCBzaGFkb3cgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICBjbG9zZWQ6IFwib3BhY2l0eS0wIGVhc2Utb3V0XCJcbiAgfSxcbiAgdG9nZ2xlOiB7XG4gICAgYmFzZTogXCItbS0xLjUgbWwtYXV0byBpbmxpbmUtZmxleCBoLTggdy04IHJvdW5kZWQtbGcgYmctd2hpdGUgcC0xLjUgdGV4dC1ncmF5LTQwMCBob3ZlcjpiZy1ncmF5LTEwMCBob3Zlcjp0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktMzAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktNTAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgaWNvbjogXCJoLTUgdy01IHNocmluay0wXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IHRvYXN0VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdG9nZ2xlU3dpdGNoVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImdyb3VwIGZsZXggcm91bmRlZC1sZyBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgICBhY3RpdmU6IHtcbiAgICAgIG9uOiBcImN1cnNvci1wb2ludGVyXCIsXG4gICAgICBvZmY6IFwiY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTBcIlxuICAgIH0sXG4gICAgbGFiZWw6IFwibXMtMyBtdC0wLjUgdGV4dC1zdGFydCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMzAwXCJcbiAgfSxcbiAgdG9nZ2xlOiB7XG4gICAgYmFzZTogXCJyZWxhdGl2ZSByb3VuZGVkLWZ1bGwgYm9yZGVyIGFmdGVyOmFic29sdXRlIGFmdGVyOnJvdW5kZWQtZnVsbCBhZnRlcjpiZy13aGl0ZSBhZnRlcjp0cmFuc2l0aW9uLWFsbCBncm91cC1mb2N1czpyaW5nLTQgZ3JvdXAtZm9jdXM6cmluZy1jeWFuLTUwMC8yNVwiLFxuICAgIGNoZWNrZWQ6IHtcbiAgICAgIG9uOiBcImFmdGVyOnRyYW5zbGF0ZS14LWZ1bGwgYWZ0ZXI6Ym9yZGVyLXdoaXRlIHJ0bDphZnRlcjotdHJhbnNsYXRlLXgtZnVsbFwiLFxuICAgICAgb2ZmOiBcImJvcmRlci1ncmF5LTIwMCBiZy1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgICBjb2xvcjoge1xuICAgICAgICBibHVlOiBcImJvcmRlci1jeWFuLTcwMCBiZy1jeWFuLTcwMFwiLFxuICAgICAgICBkYXJrOiBcImJnLWRhcmstNzAwIGJvcmRlci1kYXJrLTkwMFwiLFxuICAgICAgICBmYWlsdXJlOiBcImJvcmRlci1yZWQtOTAwIGJnLXJlZC03MDBcIixcbiAgICAgICAgZ3JheTogXCJib3JkZXItZ3JheS02MDAgYmctZ3JheS01MDBcIixcbiAgICAgICAgZ3JlZW46IFwiYm9yZGVyLWdyZWVuLTcwMCBiZy1ncmVlbi02MDBcIixcbiAgICAgICAgbGlnaHQ6IFwiYmctbGlnaHQtNzAwIGJvcmRlci1saWdodC05MDBcIixcbiAgICAgICAgcmVkOiBcImJvcmRlci1yZWQtOTAwIGJnLXJlZC03MDBcIixcbiAgICAgICAgcHVycGxlOiBcImJvcmRlci1wdXJwbGUtOTAwIGJnLXB1cnBsZS03MDBcIixcbiAgICAgICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTUwMFwiLFxuICAgICAgICB5ZWxsb3c6IFwiYm9yZGVyLXllbGxvdy00MDAgYmcteWVsbG93LTQwMFwiLFxuICAgICAgICB3YXJuaW5nOiBcImJvcmRlci15ZWxsb3ctNjAwIGJnLXllbGxvdy02MDBcIixcbiAgICAgICAgY3lhbjogXCJib3JkZXItY3lhbi01MDAgYmctY3lhbi01MDBcIixcbiAgICAgICAgbGltZTogXCJib3JkZXItbGltZS00MDAgYmctbGltZS00MDBcIixcbiAgICAgICAgaW5kaWdvOiBcImJvcmRlci1pbmRpZ28tNDAwIGJnLWluZGlnby00MDBcIixcbiAgICAgICAgdGVhbDogXCJiZy1ncmFkaWVudC10by1yIGZyb20tdGVhbC00MDAgdmlhLXRlYWwtNTAwIHRvLXRlYWwtNjAwIGhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGZvY3VzOnJpbmctNFwiLFxuICAgICAgICBpbmZvOiBcImJvcmRlci1jeWFuLTYwMCBiZy1jeWFuLTYwMFwiLFxuICAgICAgICBwaW5rOiBcImJvcmRlci1waW5rLTYwMCBiZy1waW5rLTYwMFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBzaXplczoge1xuICAgICAgc206IFwiaC01IHctOSBtaW4tdy05IGFmdGVyOmxlZnQtcHggYWZ0ZXI6dG9wLXB4IGFmdGVyOmgtNCBhZnRlcjp3LTQgcnRsOmFmdGVyOnJpZ2h0LXB4XCIsXG4gICAgICBtZDogXCJoLTYgdy0xMSBtaW4tdy0xMSBhZnRlcjpsZWZ0LXB4IGFmdGVyOnRvcC1weCBhZnRlcjpoLTUgYWZ0ZXI6dy01IHJ0bDphZnRlcjpyaWdodC1weFwiLFxuICAgICAgbGc6IFwiaC03IHctMTQgbWluLXctMTQgYWZ0ZXI6bGVmdC0xIGFmdGVyOnRvcC0wLjUgYWZ0ZXI6aC02IGFmdGVyOnctNiBydGw6YWZ0ZXI6cmlnaHQtMVwiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgdG9nZ2xlU3dpdGNoVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdG9vbHRpcFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICB0YXJnZXQ6IFwidy1maXRcIixcbiAgYW5pbWF0aW9uOiBcInRyYW5zaXRpb24tb3BhY2l0eVwiLFxuICBhcnJvdzoge1xuICAgIGJhc2U6IFwiYWJzb2x1dGUgei0xMCBoLTIgdy0yIHJvdGF0ZS00NVwiLFxuICAgIHN0eWxlOiB7XG4gICAgICBkYXJrOiBcImJnLWdyYXktOTAwIGRhcms6YmctZ3JheS03MDBcIixcbiAgICAgIGxpZ2h0OiBcImJnLXdoaXRlXCIsXG4gICAgICBhdXRvOiBcImJnLXdoaXRlIGRhcms6YmctZ3JheS03MDBcIlxuICAgIH0sXG4gICAgcGxhY2VtZW50OiBcIi00cHhcIlxuICB9LFxuICBiYXNlOiBcImFic29sdXRlIHotMTAgaW5saW5lLWJsb2NrIHJvdW5kZWQtbGcgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gc2hhZG93LXNtXCIsXG4gIGhpZGRlbjogXCJpbnZpc2libGUgb3BhY2l0eS0wXCIsXG4gIHN0eWxlOiB7XG4gICAgZGFyazogXCJiZy1ncmF5LTkwMCB0ZXh0LXdoaXRlIGRhcms6YmctZ3JheS03MDBcIixcbiAgICBsaWdodDogXCJib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHRleHQtZ3JheS05MDBcIixcbiAgICBhdXRvOiBcImJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ub25lIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgfSxcbiAgY29udGVudDogXCJyZWxhdGl2ZSB6LTIwXCJcbn0pO1xuXG5leHBvcnQgeyB0b29sdGlwVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGFjY29yZGlvblRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0FjY29yZGlvbi90aGVtZS5tanMnO1xuaW1wb3J0IHsgYWxlcnRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9BbGVydC90aGVtZS5tanMnO1xuaW1wb3J0IHsgYXZhdGFyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQXZhdGFyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBiYWRnZVRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0JhZGdlL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBibG9ja3F1b3RlVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQmxvY2txdW90ZS90aGVtZS5tanMnO1xuaW1wb3J0IHsgYnJlYWRjcnVtYlRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0JyZWFkY3J1bWIvdGhlbWUubWpzJztcbmltcG9ydCB7IGJ1dHRvblRoZW1lLCBidXR0b25Hcm91cFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0J1dHRvbi90aGVtZS5tanMnO1xuaW1wb3J0IHsgY2FyZFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0NhcmQvdGhlbWUubWpzJztcbmltcG9ydCB7IGNhcm91c2VsVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2Fyb3VzZWwvdGhlbWUubWpzJztcbmltcG9ydCB7IGNoZWNrYm94VGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hlY2tib3gvdGhlbWUubWpzJztcbmltcG9ydCB7IGNsaXBib2FyZFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0NsaXBib2FyZC90aGVtZS5tanMnO1xuaW1wb3J0IHsgZGFya1RoZW1lVG9nZ2xlVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvRGFya1RoZW1lVG9nZ2xlL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBkYXRlUGlja2VyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvRGF0ZXBpY2tlci90aGVtZS5tanMnO1xuaW1wb3J0IHsgZHJhd2VyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvRHJhd2VyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBkcm9wZG93blRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0Ryb3Bkb3duL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBmaWxlSW5wdXRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9GaWxlSW5wdXQvdGhlbWUubWpzJztcbmltcG9ydCB7IGZsb2F0aW5nTGFiZWxUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9GbG9hdGluZ0xhYmVsL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBmb290ZXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9Gb290ZXIvdGhlbWUubWpzJztcbmltcG9ydCB7IGhlbHBlclRleHRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9IZWxwZXJUZXh0L3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBoclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0hSL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBrYmRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9LYmQvdGhlbWUubWpzJztcbmltcG9ydCB7IGxhYmVsVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvTGFiZWwvdGhlbWUubWpzJztcbmltcG9ydCB7IGxpc3RUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9MaXN0L3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBsaXN0R3JvdXBUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9MaXN0R3JvdXAvdGhlbWUubWpzJztcbmltcG9ydCB7IG1lZ2FNZW51VGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvTWVnYU1lbnUvdGhlbWUubWpzJztcbmltcG9ydCB7IG1vZGFsVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvTW9kYWwvdGhlbWUubWpzJztcbmltcG9ydCB7IG5hdmJhclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL05hdmJhci90aGVtZS5tanMnO1xuaW1wb3J0IHsgcGFnaW5hdGlvblRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1BhZ2luYXRpb24vdGhlbWUubWpzJztcbmltcG9ydCB7IHBvcG92ZXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9Qb3BvdmVyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBwcm9ncmVzc1RoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1Byb2dyZXNzL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyByYWRpb1RoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1JhZGlvL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyByYW5nZVNsaWRlclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1JhbmdlU2xpZGVyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyByYXRpbmdUaGVtZSwgcmF0aW5nQWR2YW5jZWRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9SYXRpbmcvdGhlbWUubWpzJztcbmltcG9ydCB7IHNlbGVjdFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1NlbGVjdC90aGVtZS5tanMnO1xuaW1wb3J0IHsgc2lkZWJhclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1NpZGViYXIvdGhlbWUubWpzJztcbmltcG9ydCB7IHNwaW5uZXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9TcGlubmVyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0YWJsZVRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1RhYmxlL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0YWJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9UYWJzL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0ZXh0YXJlYVRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1RleHRhcmVhL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0ZXh0SW5wdXRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9UZXh0SW5wdXQvdGhlbWUubWpzJztcbmltcG9ydCB7IHRpbWVsaW5lVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvVGltZWxpbmUvdGhlbWUubWpzJztcbmltcG9ydCB7IHRvYXN0VGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvVG9hc3QvdGhlbWUubWpzJztcbmltcG9ydCB7IHRvZ2dsZVN3aXRjaFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1RvZ2dsZVN3aXRjaC90aGVtZS5tanMnO1xuaW1wb3J0IHsgdG9vbHRpcFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1Rvb2x0aXAvdGhlbWUubWpzJztcblxuY29uc3QgdGhlbWUgPSB7XG4gIGFjY29yZGlvbjogYWNjb3JkaW9uVGhlbWUsXG4gIGFsZXJ0OiBhbGVydFRoZW1lLFxuICBhdmF0YXI6IGF2YXRhclRoZW1lLFxuICBiYWRnZTogYmFkZ2VUaGVtZSxcbiAgYmxvY2txdW90ZTogYmxvY2txdW90ZVRoZW1lLFxuICBicmVhZGNydW1iOiBicmVhZGNydW1iVGhlbWUsXG4gIGJ1dHRvbjogYnV0dG9uVGhlbWUsXG4gIGJ1dHRvbkdyb3VwOiBidXR0b25Hcm91cFRoZW1lLFxuICBjYXJkOiBjYXJkVGhlbWUsXG4gIGNhcm91c2VsOiBjYXJvdXNlbFRoZW1lLFxuICBjaGVja2JveDogY2hlY2tib3hUaGVtZSxcbiAgY2xpcGJvYXJkOiBjbGlwYm9hcmRUaGVtZSxcbiAgZGF0ZXBpY2tlcjogZGF0ZVBpY2tlclRoZW1lLFxuICBkYXJrVGhlbWVUb2dnbGU6IGRhcmtUaGVtZVRvZ2dsZVRoZW1lLFxuICBkcmF3ZXI6IGRyYXdlclRoZW1lLFxuICBkcm9wZG93bjogZHJvcGRvd25UaGVtZSxcbiAgZmlsZUlucHV0OiBmaWxlSW5wdXRUaGVtZSxcbiAgZmxvYXRpbmdMYWJlbDogZmxvYXRpbmdMYWJlbFRoZW1lLFxuICBmb290ZXI6IGZvb3RlclRoZW1lLFxuICBoZWxwZXJUZXh0OiBoZWxwZXJUZXh0VGhlbWUsXG4gIGhyOiBoclRoZW1lLFxuICBrYmQ6IGtiZFRoZW1lLFxuICBsYWJlbDogbGFiZWxUaGVtZSxcbiAgbGlzdEdyb3VwOiBsaXN0R3JvdXBUaGVtZSxcbiAgbGlzdDogbGlzdFRoZW1lLFxuICBtZWdhTWVudTogbWVnYU1lbnVUaGVtZSxcbiAgbW9kYWw6IG1vZGFsVGhlbWUsXG4gIG5hdmJhcjogbmF2YmFyVGhlbWUsXG4gIHBhZ2luYXRpb246IHBhZ2luYXRpb25UaGVtZSxcbiAgcG9wb3ZlcjogcG9wb3ZlclRoZW1lLFxuICBwcm9ncmVzczogcHJvZ3Jlc3NUaGVtZSxcbiAgcmFkaW86IHJhZGlvVGhlbWUsXG4gIHJhbmdlU2xpZGVyOiByYW5nZVNsaWRlclRoZW1lLFxuICByYXRpbmc6IHJhdGluZ1RoZW1lLFxuICByYXRpbmdBZHZhbmNlZDogcmF0aW5nQWR2YW5jZWRUaGVtZSxcbiAgc2VsZWN0OiBzZWxlY3RUaGVtZSxcbiAgdGV4dElucHV0OiB0ZXh0SW5wdXRUaGVtZSxcbiAgdGV4dGFyZWE6IHRleHRhcmVhVGhlbWUsXG4gIHRvZ2dsZVN3aXRjaDogdG9nZ2xlU3dpdGNoVGhlbWUsXG4gIHNpZGViYXI6IHNpZGViYXJUaGVtZSxcbiAgc3Bpbm5lcjogc3Bpbm5lclRoZW1lLFxuICB0YWJsZTogdGFibGVUaGVtZSxcbiAgdGFiczogdGFiVGhlbWUsXG4gIHRpbWVsaW5lOiB0aW1lbGluZVRoZW1lLFxuICB0b2FzdDogdG9hc3RUaGVtZSxcbiAgdG9vbHRpcDogdG9vbHRpcFRoZW1lXG59O1xuXG5leHBvcnQgeyB0aGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnLi4vaGVscGVycy9jbG9uZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSAnLi4vdGhlbWUubWpzJztcblxuY29uc3Qgc3RvcmUgPSB7XG4gIHRoZW1lOiBjbG9uZURlZXAodGhlbWUpXG59O1xuZnVuY3Rpb24gc2V0VGhlbWVNb2RlKG1vZGUpIHtcbiAgc3RvcmUubW9kZSA9IG1vZGU7XG59XG5mdW5jdGlvbiBnZXRUaGVtZU1vZGUoKSB7XG4gIHJldHVybiBzdG9yZS5tb2RlO1xufVxuZnVuY3Rpb24gc2V0VGhlbWUodGhlbWUkMSkge1xuICBpZiAodGhlbWUkMSkgc3RvcmUudGhlbWUgPSBtZXJnZURlZXAodGhlbWUsIHRoZW1lJDEpO1xufVxuZnVuY3Rpb24gZ2V0VGhlbWUoKSB7XG4gIHJldHVybiBjbG9uZURlZXAoc3RvcmUudGhlbWUpO1xufVxuXG5leHBvcnQgeyBnZXRUaGVtZSwgZ2V0VGhlbWVNb2RlLCBzZXRUaGVtZSwgc2V0VGhlbWVNb2RlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBBY2NvcmRpb25QYW5lbENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VBY2NvcmRpb25Db250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChBY2NvcmRpb25QYW5lbENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBY2NvcmRpb25Db250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgQWNjb3JkaW9uUGFuZWxDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgQWNjb3JkaW9uUGFuZWxDb250ZXh0LCB1c2VBY2NvcmRpb25Db250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY2NvcmRpb25QYW5lbENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgdXNlQWNjb3JkaW9uQ29udGV4dCB9IGZyb20gJy4vQWNjb3JkaW9uUGFuZWxDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IEFjY29yZGlvbkNvbnRlbnQgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyBpc09wZW4gfSA9IHVzZUFjY29yZGlvbkNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5hY2NvcmRpb24uY29udGVudCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWFjY29yZGlvbi1jb250ZW50XCIsXG4gICAgICBoaWRkZW46ICFpc09wZW4sXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgQWNjb3JkaW9uQ29udGVudCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWNjb3JkaW9uQ29udGVudC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFjY29yZGlvblBhbmVsQ29udGV4dCB9IGZyb20gJy4vQWNjb3JkaW9uUGFuZWxDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IEFjY29yZGlvblBhbmVsID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyBhbHdheXNPcGVuIH0gPSBwcm9wcztcbiAgY29uc3QgW2lzT3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShwcm9wcy5pc09wZW4pO1xuICBjb25zdCBwcm92aWRlciA9IGFsd2F5c09wZW4gPyB7XG4gICAgLi4ucHJvcHMsXG4gICAgaXNPcGVuLFxuICAgIHNldE9wZW46ICgpID0+IHNldE9wZW4oIWlzT3BlbilcbiAgfSA6IHByb3BzO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChBY2NvcmRpb25QYW5lbENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHByb3ZpZGVyLCBjaGlsZHJlbiB9KTtcbn07XG5cbmV4cG9ydCB7IEFjY29yZGlvblBhbmVsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY2NvcmRpb25QYW5lbC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyB1c2VBY2NvcmRpb25Db250ZXh0IH0gZnJvbSAnLi9BY2NvcmRpb25QYW5lbENvbnRleHQubWpzJztcblxuY29uc3QgQWNjb3JkaW9uVGl0bGUgPSAoe1xuICBhczogSGVhZGluZyA9IFwiaDJcIixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgYXJyb3dJY29uOiBBcnJvd0ljb24sIGZsdXNoLCBpc09wZW4sIHNldE9wZW4gfSA9IHVzZUFjY29yZGlvbkNvbnRleHQoKTtcbiAgY29uc3Qgb25DbGljayA9ICgpID0+IHR5cGVvZiBzZXRPcGVuICE9PSBcInVuZGVmaW5lZFwiICYmIHNldE9wZW4oKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5hY2NvcmRpb24udGl0bGUsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIFwiYnV0dG9uXCIsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIHRoZW1lLmZsdXNoW2ZsdXNoID8gXCJvblwiIDogXCJvZmZcIl0sIHRoZW1lLm9wZW5baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0sIGNsYXNzTmFtZSksXG4gICAgICBvbkNsaWNrLFxuICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChIZWFkaW5nLCB7IGNsYXNzTmFtZTogdGhlbWUuaGVhZGluZywgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWFjY29yZGlvbi1oZWFkaW5nXCIsIGNoaWxkcmVuIH0pLFxuICAgICAgICBBcnJvd0ljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBBcnJvd0ljb24sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmFycm93LmJhc2UsIHRoZW1lLmFycm93Lm9wZW5baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0pLFxuICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWFjY29yZGlvbi1hcnJvd1wiXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgQWNjb3JkaW9uVGl0bGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFjY29yZGlvblRpdGxlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VNZW1vLCBDaGlsZHJlbiwgY2xvbmVFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSGlDaGV2cm9uRG93biB9IGZyb20gJ3JlYWN0LWljb25zL2hpJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEFjY29yZGlvbkNvbnRlbnQgfSBmcm9tICcuL0FjY29yZGlvbkNvbnRlbnQubWpzJztcbmltcG9ydCB7IEFjY29yZGlvblBhbmVsIH0gZnJvbSAnLi9BY2NvcmRpb25QYW5lbC5tanMnO1xuaW1wb3J0IHsgQWNjb3JkaW9uVGl0bGUgfSBmcm9tICcuL0FjY29yZGlvblRpdGxlLm1qcyc7XG5cbmNvbnN0IEFjY29yZGlvbkNvbXBvbmVudCA9ICh7XG4gIGFsd2F5c09wZW4gPSBmYWxzZSxcbiAgYXJyb3dJY29uID0gSGlDaGV2cm9uRG93bixcbiAgY2hpbGRyZW4sXG4gIGZsdXNoID0gZmFsc2UsXG4gIGNvbGxhcHNlQWxsID0gZmFsc2UsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoY29sbGFwc2VBbGwgPyAtMSA6IDApO1xuICBjb25zdCBwYW5lbHMgPSB1c2VNZW1vKFxuICAgICgpID0+IENoaWxkcmVuLm1hcChcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgKGNoaWxkLCBpKSA9PiBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgICAgYWx3YXlzT3BlbixcbiAgICAgICAgYXJyb3dJY29uLFxuICAgICAgICBmbHVzaCxcbiAgICAgICAgaXNPcGVuOiBpc09wZW4gPT09IGksXG4gICAgICAgIHNldE9wZW46ICgpID0+IHNldE9wZW4oaXNPcGVuID09PSBpID8gLTEgOiBpKVxuICAgICAgfSlcbiAgICApLFxuICAgIFthbHdheXNPcGVuLCBhcnJvd0ljb24sIGNoaWxkcmVuLCBmbHVzaCwgaXNPcGVuXVxuICApO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmFjY29yZGlvbi5yb290LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIHRoZW1lLmZsdXNoW2ZsdXNoID8gXCJvblwiIDogXCJvZmZcIl0sIGNsYXNzTmFtZSksXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYWNjb3JkaW9uXCIsXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiBwYW5lbHNcbiAgICB9XG4gICk7XG59O1xuQWNjb3JkaW9uQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJBY2NvcmRpb25cIjtcbkFjY29yZGlvblBhbmVsLmRpc3BsYXlOYW1lID0gXCJBY2NvcmRpb24uUGFuZWxcIjtcbkFjY29yZGlvblRpdGxlLmRpc3BsYXlOYW1lID0gXCJBY2NvcmRpb24uVGl0bGVcIjtcbkFjY29yZGlvbkNvbnRlbnQuZGlzcGxheU5hbWUgPSBcIkFjY29yZGlvbi5Db250ZW50XCI7XG5jb25zdCBBY2NvcmRpb24gPSBPYmplY3QuYXNzaWduKEFjY29yZGlvbkNvbXBvbmVudCwge1xuICBQYW5lbDogQWNjb3JkaW9uUGFuZWwsXG4gIFRpdGxlOiBBY2NvcmRpb25UaXRsZSxcbiAgQ29udGVudDogQWNjb3JkaW9uQ29udGVudFxufSk7XG5cbmV4cG9ydCB7IEFjY29yZGlvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWNjb3JkaW9uLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgQXZhdGFyR3JvdXAgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmF2YXRhci5ncm91cCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJhdmF0YXItZ3JvdXAtZWxlbWVudFwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkF2YXRhckdyb3VwLmRpc3BsYXlOYW1lID0gXCJBdmF0YXIuR3JvdXBcIjtcblxuZXhwb3J0IHsgQXZhdGFyR3JvdXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUF2YXRhckdyb3VwLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEF2YXRhckdyb3VwQ291bnRlciA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgaHJlZixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHRvdGFsLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmF2YXRhci5ncm91cENvdW50ZXIsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiYVwiLCB7IGhyZWYsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICBcIitcIixcbiAgICB0b3RhbFxuICBdIH0pO1xufTtcbkF2YXRhckdyb3VwQ291bnRlci5kaXNwbGF5TmFtZSA9IFwiQXZhdGFyLkdyb3VwQ291bnRlclwiO1xuXG5leHBvcnQgeyBBdmF0YXJHcm91cENvdW50ZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUF2YXRhckdyb3VwQ291bnRlci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBBdmF0YXJHcm91cCB9IGZyb20gJy4vQXZhdGFyR3JvdXAubWpzJztcbmltcG9ydCB7IEF2YXRhckdyb3VwQ291bnRlciB9IGZyb20gJy4vQXZhdGFyR3JvdXBDb3VudGVyLm1qcyc7XG5cbmNvbnN0IEF2YXRhckNvbXBvbmVudCA9ICh7XG4gIGFsdCA9IFwiXCIsXG4gIGJvcmRlcmVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbG9yID0gXCJsaWdodFwiLFxuICBpbWcsXG4gIHBsYWNlaG9sZGVySW5pdGlhbHMgPSBcIlwiLFxuICByb3VuZGVkID0gZmFsc2UsXG4gIHNpemUgPSBcIm1kXCIsXG4gIHN0YWNrZWQgPSBmYWxzZSxcbiAgc3RhdHVzLFxuICBzdGF0dXNQb3NpdGlvbiA9IFwidG9wLWxlZnRcIixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYXZhdGFyLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IGltZ0NsYXNzTmFtZSA9IHR3TWVyZ2UoXG4gICAgdGhlbWUucm9vdC5pbWcuYmFzZSxcbiAgICBib3JkZXJlZCAmJiB0aGVtZS5yb290LmJvcmRlcmVkLFxuICAgIGJvcmRlcmVkICYmIHRoZW1lLnJvb3QuY29sb3JbY29sb3JdLFxuICAgIHJvdW5kZWQgJiYgdGhlbWUucm9vdC5yb3VuZGVkLFxuICAgIHN0YWNrZWQgJiYgdGhlbWUucm9vdC5zdGFja2VkLFxuICAgIHRoZW1lLnJvb3QuaW1nLm9uLFxuICAgIHRoZW1lLnJvb3Quc2l6ZVtzaXplXVxuICApO1xuICBjb25zdCBpbWdQcm9wcyA9IHtcbiAgICBjbGFzc05hbWU6IHR3TWVyZ2UoaW1nQ2xhc3NOYW1lLCB0aGVtZS5yb290LmltZy5vbiksXG4gICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWF2YXRhci1pbWdcIlxuICB9O1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYXZhdGFyXCIsIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInJlbGF0aXZlXCIsIGNoaWxkcmVuOiBbXG4gICAgICBpbWcgPyB0eXBlb2YgaW1nID09PSBcInN0cmluZ1wiID8gLyogQF9fUFVSRV9fICovIGpzeChcImltZ1wiLCB7IGFsdCwgc3JjOiBpbWcsIC4uLmltZ1Byb3BzIH0pIDogaW1nKHsgYWx0LCAuLi5pbWdQcm9wcyB9KSA6IHBsYWNlaG9sZGVySW5pdGlhbHMgPyAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUucm9vdC5pbWcub2ZmLFxuICAgICAgICAgICAgdGhlbWUucm9vdC5pbml0aWFscy5iYXNlLFxuICAgICAgICAgICAgc3RhY2tlZCAmJiB0aGVtZS5yb290LnN0YWNrZWQsXG4gICAgICAgICAgICBib3JkZXJlZCAmJiB0aGVtZS5yb290LmJvcmRlcmVkLFxuICAgICAgICAgICAgYm9yZGVyZWQgJiYgdGhlbWUucm9vdC5jb2xvcltjb2xvcl0sXG4gICAgICAgICAgICB0aGVtZS5yb290LnNpemVbc2l6ZV0sXG4gICAgICAgICAgICByb3VuZGVkICYmIHRoZW1lLnJvb3Qucm91bmRlZFxuICAgICAgICAgICksXG4gICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWF2YXRhci1pbml0aWFscy1wbGFjZWhvbGRlclwiLFxuICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmluaXRpYWxzLnRleHQpLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYXZhdGFyLWluaXRpYWxzLXBsYWNlaG9sZGVyLXRleHRcIiwgY2hpbGRyZW46IHBsYWNlaG9sZGVySW5pdGlhbHMgfSlcbiAgICAgICAgfVxuICAgICAgKSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UoaW1nQ2xhc3NOYW1lLCB0aGVtZS5yb290LmltZy5vZmYpLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYXZhdGFyLWltZ1wiLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJzdmdcIixcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogdGhlbWUucm9vdC5pbWcucGxhY2Vob2xkZXIsXG4gICAgICAgICAgZmlsbDogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgICB2aWV3Qm94OiBcIjAgMCAyMCAyMFwiLFxuICAgICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJwYXRoXCIsIHsgZmlsbFJ1bGU6IFwiZXZlbm9kZFwiLCBkOiBcIk0xMCA5YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2em0tNyA5YTcgNyAwIDExMTQgMEgzelwiLCBjbGlwUnVsZTogXCJldmVub2RkXCIgfSlcbiAgICAgICAgfVxuICAgICAgKSB9KSxcbiAgICAgIHN0YXR1cyAmJiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcInNwYW5cIixcbiAgICAgICAge1xuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1hdmF0YXItc3RhdHVzXCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUucm9vdC5zdGF0dXMuYmFzZSxcbiAgICAgICAgICAgIHRoZW1lLnJvb3Quc3RhdHVzW3N0YXR1c10sXG4gICAgICAgICAgICB0aGVtZS5yb290LnN0YXR1c1Bvc2l0aW9uW3N0YXR1c1Bvc2l0aW9uXVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgKVxuICAgIF0gfSksXG4gICAgY2hpbGRyZW4gJiYgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNoaWxkcmVuIH0pXG4gIF0gfSk7XG59O1xuQXZhdGFyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJBdmF0YXJcIjtcbmNvbnN0IEF2YXRhciA9IE9iamVjdC5hc3NpZ24oQXZhdGFyQ29tcG9uZW50LCB7XG4gIEdyb3VwOiBBdmF0YXJHcm91cCxcbiAgQ291bnRlcjogQXZhdGFyR3JvdXBDb3VudGVyXG59KTtcblxuZXhwb3J0IHsgQXZhdGFyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BdmF0YXIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBCYWRnZSA9ICh7XG4gIGNoaWxkcmVuLFxuICBjb2xvciA9IFwiaW5mb1wiLFxuICBocmVmLFxuICBpY29uOiBJY29uLFxuICBzaXplID0gXCJ4c1wiLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmJhZGdlLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IENvbnRlbnQgPSAoKSA9PiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICBcInNwYW5cIixcbiAgICB7XG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLnJvb3QuYmFzZSxcbiAgICAgICAgdGhlbWUucm9vdC5jb2xvcltjb2xvcl0sXG4gICAgICAgIHRoZW1lLnJvb3Quc2l6ZVtzaXplXSxcbiAgICAgICAgdGhlbWUuaWNvbltJY29uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKSxcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1iYWRnZVwiLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbi5zaXplW3NpemVdLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYmFkZ2UtaWNvblwiIH0pLFxuICAgICAgICBjaGlsZHJlbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNoaWxkcmVuIH0pXG4gICAgICBdXG4gICAgfVxuICApO1xuICByZXR1cm4gaHJlZiA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJhXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5yb290LmhyZWYsIGhyZWYsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KENvbnRlbnQsIHt9KSB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goQ29udGVudCwge30pO1xufTtcbkJhZGdlLmRpc3BsYXlOYW1lID0gXCJCYWRnZVwiO1xuXG5leHBvcnQgeyBCYWRnZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmFkZ2UubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBTcGlubmVyID0gKHtcbiAgY2xhc3NOYW1lLFxuICBjb2xvciA9IFwiaW5mb1wiLFxuICBsaWdodCxcbiAgc2l6ZSA9IFwibWRcIixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuc3Bpbm5lciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyByb2xlOiBcInN0YXR1c1wiLCAuLi5wcm9wcywgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIFwic3ZnXCIsXG4gICAge1xuICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICB2aWV3Qm94OiBcIjAgMCAxMDAgMTAxXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLmJhc2UsXG4gICAgICAgIHRoZW1lLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgdGhlbWUubGlnaHRbbGlnaHQgPyBcIm9uXCIgOiBcIm9mZlwiXS5iYXNlLFxuICAgICAgICB0aGVtZS5saWdodFtsaWdodCA/IFwib25cIiA6IFwib2ZmXCJdLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgdGhlbWUuc2l6ZVtzaXplXSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcInBhdGhcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkOiBcIk0xMDAgNTAuNTkwOEMxMDAgNzguMjA1MSA3Ny42MTQyIDEwMC41OTEgNTAgMTAwLjU5MUMyMi4zODU4IDEwMC41OTEgMCA3OC4yMDUxIDAgNTAuNTkwOEMwIDIyLjk3NjYgMjIuMzg1OCAwLjU5MDgyIDUwIDAuNTkwODJDNzcuNjE0MiAwLjU5MDgyIDEwMCAyMi45NzY2IDEwMCA1MC41OTA4Wk05LjA4MTQ0IDUwLjU5MDhDOS4wODE0NCA3My4xODk1IDI3LjQwMTMgOTEuNTA5NCA1MCA5MS41MDk0QzcyLjU5ODcgOTEuNTA5NCA5MC45MTg2IDczLjE4OTUgOTAuOTE4NiA1MC41OTA4QzkwLjkxODYgMjcuOTkyMSA3Mi41OTg3IDkuNjcyMjYgNTAgOS42NzIyNkMyNy40MDEzIDkuNjcyMjYgOS4wODE0NCAyNy45OTIxIDkuMDgxNDQgNTAuNTkwOFpcIixcbiAgICAgICAgICAgIGZpbGw6IFwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgXCJwYXRoXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZDogXCJNOTMuOTY3NiAzOS4wNDA5Qzk2LjM5MyAzOC40MDM4IDk3Ljg2MjQgMzUuOTExNiA5Ny4wMDc5IDMzLjU1MzlDOTUuMjkzMiAyOC44MjI3IDkyLjg3MSAyNC4zNjkyIDg5LjgxNjcgMjAuMzQ4Qzg1Ljg0NTIgMTUuMTE5MiA4MC44ODI2IDEwLjcyMzggNzUuMjEyNCA3LjQxMjg5QzY5LjU0MjIgNC4xMDE5NCA2My4yNzU0IDEuOTQwMjUgNTYuNzY5OCAxLjA1MTI0QzUxLjc2NjYgMC4zNjc1NDEgNDYuNjk3NiAwLjQ0Njg0MyA0MS43MzQ1IDEuMjc4NzNDMzkuMjYxMyAxLjY5MzI4IDM3LjgxMyA0LjE5Nzc4IDM4LjQ1MDEgNi42MjMyNkMzOS4wODczIDkuMDQ4NzQgNDEuNTY5NCAxMC40NzE3IDQ0LjA1MDUgMTAuMTA3MUM0Ny44NTExIDkuNTQ4NTUgNTEuNzE5MSA5LjUyNjg5IDU1LjU0MDIgMTAuMDQ5MUM2MC44NjQyIDEwLjc3NjYgNjUuOTkyOCAxMi41NDU3IDcwLjYzMzEgMTUuMjU1MkM3NS4yNzM1IDE3Ljk2NDggNzkuMzM0NyAyMS41NjE5IDgyLjU4NDkgMjUuODQxQzg0LjkxNzUgMjguOTEyMSA4Ni43OTk3IDMyLjI5MTMgODguMTgxMSAzNS44NzU4Qzg5LjA4MyAzOC4yMTU4IDkxLjU0MjEgMzkuNjc4MSA5My45Njc2IDM5LjA0MDlaXCIsXG4gICAgICAgICAgICBmaWxsOiBcImN1cnJlbnRGaWxsXCJcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIF1cbiAgICB9XG4gICkgfSk7XG59O1xuU3Bpbm5lci5kaXNwbGF5TmFtZSA9IFwiU3Bpbm5lclwiO1xuXG5leHBvcnQgeyBTcGlubmVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TcGlubmVyLm1qcy5tYXBcbiIsImltcG9ydCB7IGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IEJ1dHRvbkJhc2UgPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgYXM6IENvbXBvbmVudCwgaHJlZiwgdHlwZSA9IFwiYnV0dG9uXCIsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IEJhc2VDb21wb25lbnQgPSBDb21wb25lbnQgfHwgKGhyZWYgPyBcImFcIiA6IFwiYnV0dG9uXCIpO1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KEJhc2VDb21wb25lbnQsIHsgcmVmLCBocmVmLCB0eXBlLCAuLi5wcm9wcyB9LCBjaGlsZHJlbik7XG4gIH1cbik7XG5CdXR0b25CYXNlLmRpc3BsYXlOYW1lID0gXCJCdXR0b25CYXNlQ29tcG9uZW50XCI7XG5cbmV4cG9ydCB7IEJ1dHRvbkJhc2UgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJ1dHRvbkJhc2UubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlTWVtbywgQ2hpbGRyZW4sIGlzVmFsaWRFbGVtZW50LCBjbG9uZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuL0J1dHRvbi5tanMnO1xuXG5jb25zdCBwcm9jZXNzQ2hpbGRyZW4gPSAoY2hpbGRyZW4sIG91dGxpbmUsIHBpbGwpID0+IHtcbiAgcmV0dXJuIENoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uSW5Hcm91cFByb3AgPSBjaGlsZC50eXBlID09IEJ1dHRvbiA/IHsgcG9zaXRpb25Jbkdyb3VwOiBkZXRlcm1pbmVQb3NpdGlvbihpbmRleCwgQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pKSB9IDoge307XG4gICAgICBpZiAoY2hpbGQucHJvcHMuY2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuIGNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgICAgIC4uLmNoaWxkLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuOiBwcm9jZXNzQ2hpbGRyZW4oY2hpbGQucHJvcHMuY2hpbGRyZW4sIG91dGxpbmUsIHBpbGwpLFxuICAgICAgICAgIC4uLnBvc2l0aW9uSW5Hcm91cFByb3BcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgICAgb3V0bGluZSxcbiAgICAgICAgICBwaWxsLFxuICAgICAgICAgIC4uLnBvc2l0aW9uSW5Hcm91cFByb3BcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGlsZDtcbiAgfSk7XG59O1xuY29uc3QgZGV0ZXJtaW5lUG9zaXRpb24gPSAoaW5kZXgsIHRvdGFsQ2hpbGRyZW4pID0+IHtcbiAgcmV0dXJuIGluZGV4ID09PSAwID8gXCJzdGFydFwiIDogaW5kZXggPT09IHRvdGFsQ2hpbGRyZW4gLSAxID8gXCJlbmRcIiA6IFwibWlkZGxlXCI7XG59O1xuY29uc3QgQnV0dG9uR3JvdXAgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBvdXRsaW5lLFxuICBwaWxsLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgaXRlbXMgPSB1c2VNZW1vKCgpID0+IHByb2Nlc3NDaGlsZHJlbihjaGlsZHJlbiwgb3V0bGluZSwgcGlsbCksIFtjaGlsZHJlbiwgb3V0bGluZSwgcGlsbF0pO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmJ1dHRvbkdyb3VwLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIHJvbGU6IFwiZ3JvdXBcIiwgLi4ucHJvcHMsIGNoaWxkcmVuOiBpdGVtcyB9KTtcbn07XG5CdXR0b25Hcm91cC5kaXNwbGF5TmFtZSA9IFwiQnV0dG9uLkdyb3VwXCI7XG5cbmV4cG9ydCB7IEJ1dHRvbkdyb3VwIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CdXR0b25Hcm91cC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3gsIGpzeHMsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi9TcGlubmVyL1NwaW5uZXIubWpzJztcbmltcG9ydCB7IEJ1dHRvbkJhc2UgfSBmcm9tICcuL0J1dHRvbkJhc2UubWpzJztcbmltcG9ydCB7IEJ1dHRvbkdyb3VwIH0gZnJvbSAnLi9CdXR0b25Hcm91cC5tanMnO1xuXG5jb25zdCBCdXR0b25Db21wb25lbnQgPSBmb3J3YXJkUmVmKFxuICAoe1xuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb2xvciA9IFwiaW5mb1wiLFxuICAgIGRpc2FibGVkLFxuICAgIGZ1bGxTaXplZCxcbiAgICBpc1Byb2Nlc3NpbmcgPSBmYWxzZSxcbiAgICBwcm9jZXNzaW5nTGFiZWwgPSBcIkxvYWRpbmcuLi5cIixcbiAgICBwcm9jZXNzaW5nU3Bpbm5lcixcbiAgICBncmFkaWVudER1b1RvbmUsXG4gICAgZ3JhZGllbnRNb25vY2hyb21lLFxuICAgIGxhYmVsLFxuICAgIG91dGxpbmUgPSBmYWxzZSxcbiAgICBwaWxsID0gZmFsc2UsXG4gICAgcG9zaXRpb25Jbkdyb3VwID0gXCJub25lXCIsXG4gICAgc2l6ZSA9IFwibWRcIixcbiAgICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IGJ1dHRvbkdyb3VwOiBncm91cFRoZW1lLCBidXR0b246IGJ1dHRvblRoZW1lIH0gPSBnZXRUaGVtZSgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGJ1dHRvblRoZW1lLCBjdXN0b21UaGVtZSk7XG4gICAgY29uc3QgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgQnV0dG9uQmFzZSxcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgIHRoZW1lLmJhc2UsXG4gICAgICAgICAgZGlzYWJsZWQgJiYgdGhlbWUuZGlzYWJsZWQsXG4gICAgICAgICAgIWdyYWRpZW50RHVvVG9uZSAmJiAhZ3JhZGllbnRNb25vY2hyb21lICYmIHRoZW1lLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgICBncmFkaWVudER1b1RvbmUgJiYgIWdyYWRpZW50TW9ub2Nocm9tZSAmJiB0aGVtZS5ncmFkaWVudER1b1RvbmVbZ3JhZGllbnREdW9Ub25lXSxcbiAgICAgICAgICAhZ3JhZGllbnREdW9Ub25lICYmIGdyYWRpZW50TW9ub2Nocm9tZSAmJiB0aGVtZS5ncmFkaWVudFtncmFkaWVudE1vbm9jaHJvbWVdLFxuICAgICAgICAgIG91dGxpbmUgJiYgKHRoZW1lLm91dGxpbmUuY29sb3JbY29sb3JdID8/IHRoZW1lLm91dGxpbmUuY29sb3IuZGVmYXVsdCksXG4gICAgICAgICAgdGhlbWUucGlsbFtwaWxsID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgZnVsbFNpemVkICYmIHRoZW1lLmZ1bGxTaXplZCxcbiAgICAgICAgICBncm91cFRoZW1lLnBvc2l0aW9uW3Bvc2l0aW9uSW5Hcm91cF0sXG4gICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgICksXG4gICAgICAgIC4uLnRoZWlyUHJvcHMsXG4gICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgICAgdGhlbWUuaW5uZXIuYmFzZSxcbiAgICAgICAgICAgICAgdGhlbWUub3V0bGluZVtvdXRsaW5lID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgIHRoZW1lLm91dGxpbmUucGlsbFtvdXRsaW5lICYmIHBpbGwgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICAgICAgdGhlbWUuc2l6ZVtzaXplXSxcbiAgICAgICAgICAgICAgb3V0bGluZSAmJiAhdGhlbWUub3V0bGluZS5jb2xvcltjb2xvcl0gJiYgdGhlbWUuaW5uZXIub3V0bGluZSxcbiAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nICYmIHRoZW1lLmlzUHJvY2Vzc2luZyxcbiAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nICYmIHRoZW1lLmlubmVyLmlzUHJvY2Vzc2luZ1BhZGRpbmdbc2l6ZV0sXG4gICAgICAgICAgICAgIHRoZW1lLmlubmVyLnBvc2l0aW9uW3Bvc2l0aW9uSW5Hcm91cF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnNwaW5uZXJTbG90LCB0aGVtZS5zcGlubmVyTGVmdFBvc2l0aW9uW3NpemVdKSwgY2hpbGRyZW46IHByb2Nlc3NpbmdTcGlubmVyIHx8IC8qIEBfX1BVUkVfXyAqLyBqc3goU3Bpbm5lciwgeyBzaXplIH0pIH0pLFxuICAgICAgICAgICAgICB0eXBlb2YgY2hpbGRyZW4gIT09IFwidW5kZWZpbmVkXCIgPyBjaGlsZHJlbiA6IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWJ1dHRvbi1sYWJlbFwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUubGFiZWwpLCBjaGlsZHJlbjogaXNQcm9jZXNzaW5nID8gcHJvY2Vzc2luZ0xhYmVsIDogbGFiZWwgfSlcbiAgICAgICAgICAgIF0gfSlcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuQnV0dG9uQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJCdXR0b25cIjtcbmNvbnN0IEJ1dHRvbiA9IE9iamVjdC5hc3NpZ24oQnV0dG9uQ29tcG9uZW50LCB7XG4gIEdyb3VwOiBCdXR0b25Hcm91cFxufSk7XG5cbmV4cG9ydCB7IEJ1dHRvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QnV0dG9uLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbi9CdXR0b24ubWpzJztcbmltcG9ydCAnLi4vQnV0dG9uL0J1dHRvbkdyb3VwLm1qcyc7XG5cbmNvbnN0IEJhbm5lckNvbGxhcHNlQnV0dG9uID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3Qgb25DbGljayA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IGNvbGxhcHNlQnV0dG9uID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IHBhcmVudEJhbm5lciA9IGNvbGxhcHNlQnV0dG9uLmNsb3Nlc3QoJ1tyb2xlPVwiYmFubmVyXCJdJyk7XG4gICAgcGFyZW50QmFubmVyPy5yZW1vdmUoKTtcbiAgfTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goQnV0dG9uLCB7IG9uQ2xpY2ssIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbn07XG5CYW5uZXJDb2xsYXBzZUJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQmFubmVyLkNvbGxhcHNlQnV0dG9uXCI7XG5cbmV4cG9ydCB7IEJhbm5lckNvbGxhcHNlQnV0dG9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CYW5uZXJDb2xsYXBzZUJ1dHRvbi5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBCYW5uZXJDb2xsYXBzZUJ1dHRvbiB9IGZyb20gJy4vQmFubmVyQ29sbGFwc2VCdXR0b24ubWpzJztcblxuY29uc3QgQmFubmVyQ29tcG9uZW50ID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYmFubmVyXCIsIHJvbGU6IFwiYmFubmVyXCIsIHRhYkluZGV4OiAtMSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkJhbm5lckNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiQmFubmVyXCI7XG5jb25zdCBCYW5uZXIgPSBPYmplY3QuYXNzaWduKEJhbm5lckNvbXBvbmVudCwge1xuICBDb2xsYXBzZUJ1dHRvbjogQmFubmVyQ29sbGFwc2VCdXR0b25cbn0pO1xuXG5leHBvcnQgeyBCYW5uZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhbm5lci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSGlPdXRsaW5lQ2hldnJvblJpZ2h0IH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBCcmVhZGNydW1iSXRlbSA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGhyZWYsIGljb246IEljb24sIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBpc0xpbmsgPSB0eXBlb2YgaHJlZiAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICBjb25zdCBDb21wb25lbnQgPSBpc0xpbmsgPyBcImFcIiA6IFwic3BhblwiO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYnJlYWRjcnVtYi5pdGVtLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwibGlcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KEhpT3V0bGluZUNoZXZyb25SaWdodCwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuY2hldnJvbiwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWJyZWFkY3J1bWItc2VwYXJhdG9yXCIgfSksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhlbWUuaHJlZltpc0xpbmsgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYnJlYWRjcnVtYi1pdGVtXCIsXG4gICAgICAgICAgaHJlZixcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24gfSksXG4gICAgICAgICAgICBjaGlsZHJlblxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKVxuICAgIF0gfSk7XG4gIH1cbik7XG5CcmVhZGNydW1iSXRlbS5kaXNwbGF5TmFtZSA9IFwiQnJlYWRjcnVtYi5JdGVtXCI7XG5cbmV4cG9ydCB7IEJyZWFkY3J1bWJJdGVtIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CcmVhZGNydW1iSXRlbS5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBCcmVhZGNydW1iSXRlbSB9IGZyb20gJy4vQnJlYWRjcnVtYkl0ZW0ubWpzJztcblxuY29uc3QgQnJlYWRjcnVtYkNvbXBvbmVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmJyZWFkY3J1bWIucm9vdCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcIm5hdlwiLCB7IFwiYXJpYS1sYWJlbFwiOiBcIkJyZWFkY3J1bWJcIiwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcIm9sXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5saXN0LCBjaGlsZHJlbiB9KSB9KTtcbn07XG5CcmVhZGNydW1iQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJCcmVhZGNydW1iXCI7XG5jb25zdCBCcmVhZGNydW1iID0gT2JqZWN0LmFzc2lnbihCcmVhZGNydW1iQ29tcG9uZW50LCB7XG4gIEl0ZW06IEJyZWFkY3J1bWJJdGVtXG59KTtcblxuZXhwb3J0IHsgQnJlYWRjcnVtYiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QnJlYWRjcnVtYi5tanMubWFwXG4iLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cblx0ZnVuY3Rpb24gY2xhc3NOYW1lcyAoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSAnJztcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKGFyZykge1xuXHRcdFx0XHRjbGFzc2VzID0gYXBwZW5kQ2xhc3MoY2xhc3NlcywgcGFyc2VWYWx1ZShhcmcpKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlVmFsdWUgKGFyZykge1xuXHRcdGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuXHRcdFx0cmV0dXJuIGFyZztcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIGFyZyAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHJldHVybiAnJztcblx0XHR9XG5cblx0XHRpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdH1cblxuXHRcdGlmIChhcmcudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgJiYgIWFyZy50b1N0cmluZy50b1N0cmluZygpLmluY2x1ZGVzKCdbbmF0aXZlIGNvZGVdJykpIHtcblx0XHRcdHJldHVybiBhcmcudG9TdHJpbmcoKTtcblx0XHR9XG5cblx0XHR2YXIgY2xhc3NlcyA9ICcnO1xuXG5cdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRjbGFzc2VzID0gYXBwZW5kQ2xhc3MoY2xhc3Nlcywga2V5KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcztcblx0fVxuXG5cdGZ1bmN0aW9uIGFwcGVuZENsYXNzICh2YWx1ZSwgbmV3Q2xhc3MpIHtcblx0XHRpZiAoIW5ld0NsYXNzKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHRcblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdHJldHVybiB2YWx1ZSArICcgJyArIG5ld0NsYXNzO1xuXHRcdH1cblx0XG5cdFx0cmV0dXJuIHZhbHVlICsgbmV3Q2xhc3M7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCJmdW5jdGlvbiBkZWJvdW5jZShmdW5jdGlvbl8sIHdhaXQgPSAxMDAsIG9wdGlvbnMgPSB7fSkge1xuXHRpZiAodHlwZW9mIGZ1bmN0aW9uXyAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gYmUgYSBmdW5jdGlvbiwgZ290IFxcYCR7dHlwZW9mIGZ1bmN0aW9uX31cXGAuYCk7XG5cdH1cblxuXHRpZiAod2FpdCA8IDApIHtcblx0XHR0aHJvdyBuZXcgUmFuZ2VFcnJvcignYHdhaXRgIG11c3Qgbm90IGJlIG5lZ2F0aXZlLicpO1xuXHR9XG5cblx0Ly8gVE9ETzogRGVwcmVjYXRlIHRoZSBib29sZWFuIHBhcmFtZXRlciBhdCBzb21lIHBvaW50LlxuXHRjb25zdCB7aW1tZWRpYXRlfSA9IHR5cGVvZiBvcHRpb25zID09PSAnYm9vbGVhbicgPyB7aW1tZWRpYXRlOiBvcHRpb25zfSA6IG9wdGlvbnM7XG5cblx0bGV0IHN0b3JlZENvbnRleHQ7XG5cdGxldCBzdG9yZWRBcmd1bWVudHM7XG5cdGxldCB0aW1lb3V0SWQ7XG5cdGxldCB0aW1lc3RhbXA7XG5cdGxldCByZXN1bHQ7XG5cblx0ZnVuY3Rpb24gcnVuKCkge1xuXHRcdGNvbnN0IGNhbGxDb250ZXh0ID0gc3RvcmVkQ29udGV4dDtcblx0XHRjb25zdCBjYWxsQXJndW1lbnRzID0gc3RvcmVkQXJndW1lbnRzO1xuXHRcdHN0b3JlZENvbnRleHQgPSB1bmRlZmluZWQ7XG5cdFx0c3RvcmVkQXJndW1lbnRzID0gdW5kZWZpbmVkO1xuXHRcdHJlc3VsdCA9IGZ1bmN0aW9uXy5hcHBseShjYWxsQ29udGV4dCwgY2FsbEFyZ3VtZW50cyk7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdGZ1bmN0aW9uIGxhdGVyKCkge1xuXHRcdGNvbnN0IGxhc3QgPSBEYXRlLm5vdygpIC0gdGltZXN0YW1wO1xuXG5cdFx0aWYgKGxhc3QgPCB3YWl0ICYmIGxhc3QgPj0gMCkge1xuXHRcdFx0dGltZW91dElkID0gc2V0VGltZW91dChsYXRlciwgd2FpdCAtIGxhc3QpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aW1lb3V0SWQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdGlmICghaW1tZWRpYXRlKSB7XG5cdFx0XHRcdHJlc3VsdCA9IHJ1bigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGRlYm91bmNlZCA9IGZ1bmN0aW9uICguLi5hcmd1bWVudHNfKSB7XG5cdFx0aWYgKHN0b3JlZENvbnRleHQgJiYgdGhpcyAhPT0gc3RvcmVkQ29udGV4dCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdEZWJvdW5jZWQgbWV0aG9kIGNhbGxlZCB3aXRoIGRpZmZlcmVudCBjb250ZXh0cy4nKTtcblx0XHR9XG5cblx0XHRzdG9yZWRDb250ZXh0ID0gdGhpczsgLy8gZXNsaW50LWRpc2FibGUtbGluZSB1bmljb3JuL25vLXRoaXMtYXNzaWdubWVudFxuXHRcdHN0b3JlZEFyZ3VtZW50cyA9IGFyZ3VtZW50c187XG5cdFx0dGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblxuXHRcdGNvbnN0IGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXRJZDtcblxuXHRcdGlmICghdGltZW91dElkKSB7XG5cdFx0XHR0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcblx0XHR9XG5cblx0XHRpZiAoY2FsbE5vdykge1xuXHRcdFx0cmVzdWx0ID0gcnVuKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHRkZWJvdW5jZWQuY2xlYXIgPSAoKSA9PiB7XG5cdFx0aWYgKCF0aW1lb3V0SWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjbGVhclRpbWVvdXQodGltZW91dElkKTtcblx0XHR0aW1lb3V0SWQgPSB1bmRlZmluZWQ7XG5cdH07XG5cblx0ZGVib3VuY2VkLmZsdXNoID0gKCkgPT4ge1xuXHRcdGlmICghdGltZW91dElkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0ZGVib3VuY2VkLnRyaWdnZXIoKTtcblx0fTtcblxuXHRkZWJvdW5jZWQudHJpZ2dlciA9ICgpID0+IHtcblx0XHRyZXN1bHQgPSBydW4oKTtcblxuXHRcdGRlYm91bmNlZC5jbGVhcigpO1xuXHR9O1xuXG5cdHJldHVybiBkZWJvdW5jZWQ7XG59XG5cbi8vIEFkZHMgY29tcGF0aWJpbGl0eSBmb3IgRVMgbW9kdWxlc1xubW9kdWxlLmV4cG9ydHMuZGVib3VuY2UgPSBkZWJvdW5jZTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWJvdW5jZTtcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2RlYm91bmNlJztcbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fcHVibGljRmllbGQgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBfX2RlZk5vcm1hbFByb3Aob2JqLCB0eXBlb2Yga2V5ICE9PSBcInN5bWJvbFwiID8ga2V5ICsgXCJcIiA6IGtleSwgdmFsdWUpO1xuY29uc3QgU0NST0xMX0VORF9ERUJPVU5DRSA9IDMwMDtcbmNvbnN0IExFRlRfQlVUVE9OID0gMDtcbmNsYXNzIFNjcm9sbENvbnRhaW5lciBleHRlbmRzIFB1cmVDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiY29udGFpbmVyXCIpO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJzY3JvbGxpbmdcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInN0YXJ0ZWRcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInByZXNzZWRcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcImlzTW9iaWxlXCIsIGZhbHNlKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiaW50ZXJuYWxcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInNjcm9sbExlZnRcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInNjcm9sbFRvcFwiKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiY2xpZW50WFwiKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiY2xpZW50WVwiKTtcbiAgICAvLyBTaW11bGF0ZSAnb25FbmRTY3JvbGwnIGV2ZW50IHRoYXQgZmlyZXMgd2hlbiBzY3JvbGxpbmcgaXMgc3RvcHBlZFxuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvbkVuZFNjcm9sbFwiLCAoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbGluZyA9IGZhbHNlO1xuICAgICAgaWYgKCF0aGlzLnByZXNzZWQgJiYgdGhpcy5zdGFydGVkKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0VuZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvblNjcm9sbFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICAgICAgaWYgKGNvbnRhaW5lci5zY3JvbGxMZWZ0ICE9PSB0aGlzLnNjcm9sbExlZnQgfHwgY29udGFpbmVyLnNjcm9sbFRvcCAhPT0gdGhpcy5zY3JvbGxUb3ApIHtcbiAgICAgICAgdGhpcy5zY3JvbGxpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnByb2Nlc3NTY3JvbGwoKTtcbiAgICAgICAgdGhpcy5vbkVuZFNjcm9sbCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvblRvdWNoU3RhcnRcIiwgKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgbmF0aXZlTW9iaWxlU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHRoaXMuaXNEcmFnZ2FibGUoZS50YXJnZXQpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWwgPSB0cnVlO1xuICAgICAgICBpZiAobmF0aXZlTW9iaWxlU2Nyb2xsICYmIHRoaXMuc2Nyb2xsaW5nKSB7XG4gICAgICAgICAgdGhpcy5wcmVzc2VkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0b3VjaCA9IGUudG91Y2hlc1swXTtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NDbGljayh0b3VjaC5jbGllbnRYLCB0b3VjaC5jbGllbnRZKTtcbiAgICAgICAgICBpZiAoIW5hdGl2ZU1vYmlsZVNjcm9sbCAmJiB0aGlzLnByb3BzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwib25Ub3VjaEVuZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IG5hdGl2ZU1vYmlsZVNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICh0aGlzLnByZXNzZWQpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnRlZCAmJiAoIXRoaXMuc2Nyb2xsaW5nIHx8ICFuYXRpdmVNb2JpbGVTY3JvbGwpKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzRW5kKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcmVzc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvblRvdWNoTW92ZVwiLCAoZSkgPT4ge1xuICAgICAgY29uc3QgeyBuYXRpdmVNb2JpbGVTY3JvbGwgfSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAodGhpcy5wcmVzc2VkICYmICghbmF0aXZlTW9iaWxlU2Nyb2xsIHx8ICF0aGlzLmlzTW9iaWxlKSkge1xuICAgICAgICBjb25zdCB0b3VjaCA9IGUudG91Y2hlc1swXTtcbiAgICAgICAgaWYgKHRvdWNoKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzTW92ZSh0b3VjaC5jbGllbnRYLCB0b3VjaC5jbGllbnRZKTtcbiAgICAgICAgfVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwib25Nb3VzZURvd25cIiwgKGUpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzRHJhZ2dhYmxlKGUudGFyZ2V0KSAmJiB0aGlzLmlzU2Nyb2xsYWJsZSgpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWwgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5wcm9wcz8uYnV0dG9ucz8uaW5kZXhPZihlLmJ1dHRvbikgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzQ2xpY2soZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcIm9uTW91c2VNb3ZlXCIsIChlKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmVzc2VkKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc01vdmUoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwib25Nb3VzZVVwXCIsIChlKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmVzc2VkKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NFbmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmludGVybmFsID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wcmVzc2VkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25DbGljayhlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jb250YWluZXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgICB0aGlzLm9uRW5kU2Nyb2xsID0gZGVib3VuY2UodGhpcy5vbkVuZFNjcm9sbCwgU0NST0xMX0VORF9ERUJPVU5DRSk7XG4gICAgdGhpcy5zY3JvbGxpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXJ0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnByZXNzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmludGVybmFsID0gZmFsc2U7XG4gICAgdGhpcy5nZXRSZWYgPSB0aGlzLmdldFJlZi5iaW5kKHRoaXMpO1xuICB9XG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGNvbnN0IHsgbmF0aXZlTW9iaWxlU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmN1cnJlbnQ7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25Nb3VzZVVwKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uTW91c2VNb3ZlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0aGlzLm9uVG91Y2hNb3ZlLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgdGhpcy5vblRvdWNoRW5kKTtcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIiwgdGhpcy5vblRvdWNoU3RhcnQsIHtcbiAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgfSk7XG4gICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5vbk1vdXNlRG93biwge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9KTtcbiAgICBpZiAobmF0aXZlTW9iaWxlU2Nyb2xsKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gdGhpcy5pc01vYmlsZURldmljZSgpO1xuICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5vbk1vdXNlVXApO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25Nb3VzZU1vdmUpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRoaXMub25Ub3VjaE1vdmUpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgdGhpcy5vblRvdWNoRW5kKTtcbiAgfVxuICBnZXRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICB9XG4gIGlzTW9iaWxlRGV2aWNlKCkge1xuICAgIHJldHVybiB0eXBlb2Ygd2luZG93Lm9yaWVudGF0aW9uICE9PSBcInVuZGVmaW5lZFwiIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIklFTW9iaWxlXCIpICE9PSAtMTtcbiAgfVxuICBpc0RyYWdnYWJsZSh0YXJnZXQpIHtcbiAgICBjb25zdCBpZ25vcmVFbGVtZW50cyA9IHRoaXMucHJvcHMuaWdub3JlRWxlbWVudHM7XG4gICAgaWYgKGlnbm9yZUVsZW1lbnRzKSB7XG4gICAgICBjb25zdCBjbG9zZXN0ID0gdGFyZ2V0LmNsb3Nlc3QoaWdub3JlRWxlbWVudHMpO1xuICAgICAgcmV0dXJuIGNsb3Nlc3QgPT09IG51bGwgfHwgY2xvc2VzdC5jb250YWlucyh0aGlzLmdldEVsZW1lbnQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBpc1Njcm9sbGFibGUoKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3VycmVudDtcbiAgICByZXR1cm4gY29udGFpbmVyICYmIChjb250YWluZXIuc2Nyb2xsV2lkdGggPiBjb250YWluZXIuY2xpZW50V2lkdGggfHwgY29udGFpbmVyLnNjcm9sbEhlaWdodCA+IGNvbnRhaW5lci5jbGllbnRIZWlnaHQpO1xuICB9XG4gIHByb2Nlc3NDbGljayhjbGllbnRYLCBjbGllbnRZKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3VycmVudDtcbiAgICB0aGlzLnNjcm9sbExlZnQgPSBjb250YWluZXI/LnNjcm9sbExlZnQ7XG4gICAgdGhpcy5zY3JvbGxUb3AgPSBjb250YWluZXI/LnNjcm9sbFRvcDtcbiAgICB0aGlzLmNsaWVudFggPSBjbGllbnRYO1xuICAgIHRoaXMuY2xpZW50WSA9IGNsaWVudFk7XG4gICAgdGhpcy5wcmVzc2VkID0gdHJ1ZTtcbiAgfVxuICBwcm9jZXNzU3RhcnQoY2hhbmdlQ3Vyc29yID0gdHJ1ZSkge1xuICAgIGNvbnN0IHsgb25TdGFydFNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICB0aGlzLnN0YXJ0ZWQgPSB0cnVlO1xuICAgIGlmIChjaGFuZ2VDdXJzb3IpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImN1cnNvci1ncmFiXCIpO1xuICAgIH1cbiAgICBpZiAob25TdGFydFNjcm9sbCkge1xuICAgICAgb25TdGFydFNjcm9sbCh7XG4gICAgICAgIGV4dGVybmFsOiAhdGhpcy5pbnRlcm5hbFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgfVxuICAvLyBQcm9jZXNzIG5hdGl2ZSBzY3JvbGwgKHNjcm9sbGJhciwgbW9iaWxlIHNjcm9sbClcbiAgcHJvY2Vzc1Njcm9sbCgpIHtcbiAgICBpZiAodGhpcy5zdGFydGVkKSB7XG4gICAgICBjb25zdCB7IG9uU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKG9uU2Nyb2xsKSB7XG4gICAgICAgIG9uU2Nyb2xsKHtcbiAgICAgICAgICBleHRlcm5hbDogIXRoaXMuaW50ZXJuYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvY2Vzc1N0YXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgLy8gUHJvY2VzcyBub24tbmF0aXZlIHNjcm9sbFxuICBwcm9jZXNzTW92ZShuZXdDbGllbnRYLCBuZXdDbGllbnRZKSB7XG4gICAgY29uc3QgeyBob3Jpem9udGFsLCB2ZXJ0aWNhbCwgYWN0aXZhdGlvbkRpc3RhbmNlLCBvblNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICAgIGlmICghdGhpcy5zdGFydGVkKSB7XG4gICAgICBpZiAoaG9yaXpvbnRhbCAmJiBNYXRoLmFicyhuZXdDbGllbnRYIC0gdGhpcy5jbGllbnRYKSA+IGFjdGl2YXRpb25EaXN0YW5jZSB8fCB2ZXJ0aWNhbCAmJiBNYXRoLmFicyhuZXdDbGllbnRZIC0gdGhpcy5jbGllbnRZKSA+IGFjdGl2YXRpb25EaXN0YW5jZSkge1xuICAgICAgICB0aGlzLmNsaWVudFggPSBuZXdDbGllbnRYO1xuICAgICAgICB0aGlzLmNsaWVudFkgPSBuZXdDbGllbnRZO1xuICAgICAgICB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaG9yaXpvbnRhbCkge1xuICAgICAgICBjb250YWluZXIuc2Nyb2xsTGVmdCAtPSBuZXdDbGllbnRYIC0gdGhpcy5jbGllbnRYO1xuICAgICAgfVxuICAgICAgaWYgKHZlcnRpY2FsKSB7XG4gICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgLT0gbmV3Q2xpZW50WSAtIHRoaXMuY2xpZW50WTtcbiAgICAgIH1cbiAgICAgIGlmIChvblNjcm9sbCkge1xuICAgICAgICBvblNjcm9sbCh7IGV4dGVybmFsOiAhdGhpcy5pbnRlcm5hbCB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2xpZW50WCA9IG5ld0NsaWVudFg7XG4gICAgICB0aGlzLmNsaWVudFkgPSBuZXdDbGllbnRZO1xuICAgICAgdGhpcy5zY3JvbGxMZWZ0ID0gY29udGFpbmVyLnNjcm9sbExlZnQ7XG4gICAgICB0aGlzLnNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgfVxuICB9XG4gIHByb2Nlc3NFbmQoKSB7XG4gICAgY29uc3QgeyBvbkVuZFNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICAgIGlmIChjb250YWluZXIgJiYgb25FbmRTY3JvbGwpIHtcbiAgICAgIG9uRW5kU2Nyb2xsKHtcbiAgICAgICAgZXh0ZXJuYWw6ICF0aGlzLmludGVybmFsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5wcmVzc2VkID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG4gICAgdGhpcy5zY3JvbGxpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmludGVybmFsID0gZmFsc2U7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiY3Vyc29yLWdyYWJcIik7XG4gICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICB9XG4gIGdldFJlZihlbCkge1xuICAgIFt0aGlzLmNvbnRhaW5lciwgdGhpcy5wcm9wcy5pbm5lclJlZl0uZm9yRWFjaCgocmVmKSA9PiB7XG4gICAgICBpZiAocmVmKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZWYoZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZi5jdXJyZW50ID0gZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBjaGlsZHJlbiwgZHJhZ2dpbmdDbGFzc05hbWUsIGNsYXNzTmFtZSwgc3R5bGUsIGhpZGVTY3JvbGxiYXJzIH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKGNsYXNzTmFtZSwgdGhpcy5wcmVzc2VkICYmIGRyYWdnaW5nQ2xhc3NOYW1lLCB7XG4gICAgICAgICAgXCIhc2Nyb2xsLWF1dG8gWyY+Kl06cG9pbnRlci1ldmVudHMtbm9uZSBbJj4qXTpjdXJzb3ItZ3JhYlwiOiB0aGlzLnByZXNzZWQsXG4gICAgICAgICAgXCJvdmVyZmxvdy1hdXRvXCI6IHRoaXMuaXNNb2JpbGUsXG4gICAgICAgICAgXCJvdmVyZmxvdy1oaWRkZW4gIW92ZXJmbG93LXgtaGlkZGVuIFtvdmVyZmxvdzotbW96LXNjcm9sbGJhcnMtbm9uZV0gW3Njcm9sbGJhci13aWR0aDpub25lXVwiOiBoaWRlU2Nyb2xsYmFycyxcbiAgICAgICAgICBcIlsmOjotd2Via2l0LXNjcm9sbGJhcl06Wy13ZWJraXQtYXBwZWFyYW5jZTpub25lICFpbXBvcnRhbnRdIFsmOjotd2Via2l0LXNjcm9sbGJhcl06IWhpZGRlbiBbJjo6LXdlYmtpdC1zY3JvbGxiYXJdOiFoLTAgWyY6Oi13ZWJraXQtc2Nyb2xsYmFyXTohdy0wIFsmOjotd2Via2l0LXNjcm9sbGJhcl06IWJnLXRyYW5zcGFyZW50XCI6IGhpZGVTY3JvbGxiYXJzXG4gICAgICAgIH0pLFxuICAgICAgICBzdHlsZSxcbiAgICAgICAgcmVmOiB0aGlzLmdldFJlZixcbiAgICAgICAgb25TY3JvbGw6IHRoaXMub25TY3JvbGwsXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuX19wdWJsaWNGaWVsZChTY3JvbGxDb250YWluZXIsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgbmF0aXZlTW9iaWxlU2Nyb2xsOiB0cnVlLFxuICBoaWRlU2Nyb2xsYmFyczogdHJ1ZSxcbiAgYWN0aXZhdGlvbkRpc3RhbmNlOiAxMCxcbiAgdmVydGljYWw6IHRydWUsXG4gIGhvcml6b250YWw6IHRydWUsXG4gIHN0b3BQcm9wYWdhdGlvbjogZmFsc2UsXG4gIHN0eWxlOiB7fSxcbiAgYnV0dG9uczogW0xFRlRfQlVUVE9OXVxufSk7XG5cbmV4cG9ydCB7IFNjcm9sbENvbnRhaW5lciBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBDaGVja2JveCA9IGZvcndhcmRSZWYoXG4gICh7IGNsYXNzTmFtZSwgY29sb3IgPSBcImRlZmF1bHRcIiwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuY2hlY2tib3gsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiaW5wdXRcIixcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIHRoZW1lLnJvb3QuY29sb3JbY29sb3JdLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5wcm9wc1xuICAgICAgfVxuICAgICk7XG4gIH1cbik7XG5DaGVja2JveC5kaXNwbGF5TmFtZSA9IFwiQ2hlY2tib3hcIjtcblxuZXhwb3J0IHsgQ2hlY2tib3ggfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNoZWNrYm94Lm1qcy5tYXBcbiIsImltcG9ydCB7IGlzU2hhZG93Um9vdCwgaXNIVE1MRWxlbWVudCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuXG5mdW5jdGlvbiBhY3RpdmVFbGVtZW50KGRvYykge1xuICBsZXQgYWN0aXZlRWxlbWVudCA9IGRvYy5hY3RpdmVFbGVtZW50O1xuICB3aGlsZSAoKChfYWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQpID09IG51bGwgfHwgKF9hY3RpdmVFbGVtZW50ID0gX2FjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hY3RpdmVFbGVtZW50LmFjdGl2ZUVsZW1lbnQpICE9IG51bGwpIHtcbiAgICB2YXIgX2FjdGl2ZUVsZW1lbnQ7XG4gICAgYWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O1xuICB9XG4gIHJldHVybiBhY3RpdmVFbGVtZW50O1xufVxuZnVuY3Rpb24gY29udGFpbnMocGFyZW50LCBjaGlsZCkge1xuICBpZiAoIXBhcmVudCB8fCAhY2hpbGQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgcm9vdE5vZGUgPSBjaGlsZC5nZXRSb290Tm9kZSA9PSBudWxsID8gdm9pZCAwIDogY2hpbGQuZ2V0Um9vdE5vZGUoKTtcblxuICAvLyBGaXJzdCwgYXR0ZW1wdCB3aXRoIGZhc3RlciBuYXRpdmUgbWV0aG9kXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyB0aGVuIGZhbGxiYWNrIHRvIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB3aXRoIFNoYWRvdyBET00gc3VwcG9ydFxuICBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgIGxldCBuZXh0ID0gY2hpbGQ7XG4gICAgd2hpbGUgKG5leHQpIHtcbiAgICAgIGlmIChwYXJlbnQgPT09IG5leHQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICB9XG4gIH1cblxuICAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG4gIHJldHVybiBmYWxzZTtcbn1cbi8vIEF2b2lkIENocm9tZSBEZXZUb29scyBibHVlIHdhcm5pbmcuXG5mdW5jdGlvbiBnZXRQbGF0Zm9ybSgpIHtcbiAgY29uc3QgdWFEYXRhID0gbmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7XG4gIGlmICh1YURhdGEgIT0gbnVsbCAmJiB1YURhdGEucGxhdGZvcm0pIHtcbiAgICByZXR1cm4gdWFEYXRhLnBsYXRmb3JtO1xuICB9XG4gIHJldHVybiBuYXZpZ2F0b3IucGxhdGZvcm07XG59XG5mdW5jdGlvbiBnZXRVc2VyQWdlbnQoKSB7XG4gIGNvbnN0IHVhRGF0YSA9IG5hdmlnYXRvci51c2VyQWdlbnREYXRhO1xuICBpZiAodWFEYXRhICYmIEFycmF5LmlzQXJyYXkodWFEYXRhLmJyYW5kcykpIHtcbiAgICByZXR1cm4gdWFEYXRhLmJyYW5kcy5tYXAoX3JlZiA9PiB7XG4gICAgICBsZXQge1xuICAgICAgICBicmFuZCxcbiAgICAgICAgdmVyc2lvblxuICAgICAgfSA9IF9yZWY7XG4gICAgICByZXR1cm4gYnJhbmQgKyBcIi9cIiArIHZlcnNpb247XG4gICAgfSkuam9pbignICcpO1xuICB9XG4gIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xufVxuXG4vLyBMaWNlbnNlOiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi9iMzVkNWMwMmZlOTAwYmFkY2NkMGNmMWE4ZjIzYmI1OTM0MTlmMjM4L3BhY2thZ2VzL0ByZWFjdC1hcmlhL3V0aWxzL3NyYy9pc1ZpcnR1YWxFdmVudC50c1xuZnVuY3Rpb24gaXNWaXJ0dWFsQ2xpY2soZXZlbnQpIHtcbiAgLy8gRklYTUU6IEZpcmVmb3ggaXMgbm93IGVtaXR0aW5nIGEgZGVwcmVjYXRpb24gd2FybmluZyBmb3IgYG1veklucHV0U291cmNlYC5cbiAgLy8gVHJ5IHRvIGZpbmQgYSB3b3JrYXJvdW5kIGZvciB0aGlzLiBgcmVhY3QtYXJpYWAgc291cmNlIHN0aWxsIGhhcyB0aGUgY2hlY2suXG4gIGlmIChldmVudC5tb3pJbnB1dFNvdXJjZSA9PT0gMCAmJiBldmVudC5pc1RydXN0ZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoaXNBbmRyb2lkKCkgJiYgZXZlbnQucG9pbnRlclR5cGUpIHtcbiAgICByZXR1cm4gZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiBldmVudC5idXR0b25zID09PSAxO1xuICB9XG4gIHJldHVybiBldmVudC5kZXRhaWwgPT09IDAgJiYgIWV2ZW50LnBvaW50ZXJUeXBlO1xufVxuZnVuY3Rpb24gaXNWaXJ0dWFsUG9pbnRlckV2ZW50KGV2ZW50KSB7XG4gIGlmIChpc0pTRE9NKCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICFpc0FuZHJvaWQoKSAmJiBldmVudC53aWR0aCA9PT0gMCAmJiBldmVudC5oZWlnaHQgPT09IDAgfHwgaXNBbmRyb2lkKCkgJiYgZXZlbnQud2lkdGggPT09IDEgJiYgZXZlbnQuaGVpZ2h0ID09PSAxICYmIGV2ZW50LnByZXNzdXJlID09PSAwICYmIGV2ZW50LmRldGFpbCA9PT0gMCAmJiBldmVudC5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJyB8fFxuICAvLyBpT1MgVm9pY2VPdmVyIHJldHVybnMgMC4zMzPigKIgZm9yIHdpZHRoL2hlaWdodC5cbiAgZXZlbnQud2lkdGggPCAxICYmIGV2ZW50LmhlaWdodCA8IDEgJiYgZXZlbnQucHJlc3N1cmUgPT09IDAgJiYgZXZlbnQuZGV0YWlsID09PSAwICYmIGV2ZW50LnBvaW50ZXJUeXBlID09PSAndG91Y2gnO1xufVxuZnVuY3Rpb24gaXNTYWZhcmkoKSB7XG4gIC8vIENocm9tZSBEZXZUb29scyBkb2VzIG5vdCBjb21wbGFpbiBhYm91dCBuYXZpZ2F0b3IudmVuZG9yXG4gIHJldHVybiAvYXBwbGUvaS50ZXN0KG5hdmlnYXRvci52ZW5kb3IpO1xufVxuZnVuY3Rpb24gaXNBbmRyb2lkKCkge1xuICBjb25zdCByZSA9IC9hbmRyb2lkL2k7XG4gIHJldHVybiByZS50ZXN0KGdldFBsYXRmb3JtKCkpIHx8IHJlLnRlc3QoZ2V0VXNlckFnZW50KCkpO1xufVxuZnVuY3Rpb24gaXNNYWMoKSB7XG4gIHJldHVybiBnZXRQbGF0Zm9ybSgpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnbWFjJykgJiYgIW5hdmlnYXRvci5tYXhUb3VjaFBvaW50cztcbn1cbmZ1bmN0aW9uIGlzSlNET00oKSB7XG4gIHJldHVybiBnZXRVc2VyQWdlbnQoKS5pbmNsdWRlcygnanNkb20vJyk7XG59XG5mdW5jdGlvbiBpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlLCBzdHJpY3QpIHtcbiAgLy8gT24gc29tZSBMaW51eCBtYWNoaW5lcyB3aXRoIENocm9taXVtLCBtb3VzZSBpbnB1dHMgcmV0dXJuIGEgYHBvaW50ZXJUeXBlYFxuICAvLyBvZiBcInBlblwiOiBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzIwMTVcbiAgY29uc3QgdmFsdWVzID0gWydtb3VzZScsICdwZW4nXTtcbiAgaWYgKCFzdHJpY3QpIHtcbiAgICB2YWx1ZXMucHVzaCgnJywgdW5kZWZpbmVkKTtcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHBvaW50ZXJUeXBlKTtcbn1cbmZ1bmN0aW9uIGlzUmVhY3RFdmVudChldmVudCkge1xuICByZXR1cm4gJ25hdGl2ZUV2ZW50JyBpbiBldmVudDtcbn1cbmZ1bmN0aW9uIGlzUm9vdEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKCdodG1sLGJvZHknKTtcbn1cbmZ1bmN0aW9uIGdldERvY3VtZW50KG5vZGUpIHtcbiAgcmV0dXJuIChub2RlID09IG51bGwgPyB2b2lkIDAgOiBub2RlLm93bmVyRG9jdW1lbnQpIHx8IGRvY3VtZW50O1xufVxuZnVuY3Rpb24gaXNFdmVudFRhcmdldFdpdGhpbihldmVudCwgbm9kZSkge1xuICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICgnY29tcG9zZWRQYXRoJyBpbiBldmVudCkge1xuICAgIHJldHVybiBldmVudC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhub2RlKTtcbiAgfVxuXG4gIC8vIFRTIHRoaW5rcyBgZXZlbnRgIGlzIG9mIHR5cGUgbmV2ZXIgYXMgaXQgYXNzdW1lcyBhbGwgYnJvd3NlcnMgc3VwcG9ydCBjb21wb3NlZFBhdGgsIGJ1dCBicm93c2VycyB3aXRob3V0IHNoYWRvdyBkb20gZG9uJ3RcbiAgY29uc3QgZSA9IGV2ZW50O1xuICByZXR1cm4gZS50YXJnZXQgIT0gbnVsbCAmJiBub2RlLmNvbnRhaW5zKGUudGFyZ2V0KTtcbn1cbmZ1bmN0aW9uIGdldFRhcmdldChldmVudCkge1xuICBpZiAoJ2NvbXBvc2VkUGF0aCcgaW4gZXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQuY29tcG9zZWRQYXRoKClbMF07XG4gIH1cblxuICAvLyBUUyB0aGlua3MgYGV2ZW50YCBpcyBvZiB0eXBlIG5ldmVyIGFzIGl0IGFzc3VtZXMgYWxsIGJyb3dzZXJzIHN1cHBvcnRcbiAgLy8gYGNvbXBvc2VkUGF0aCgpYCwgYnV0IGJyb3dzZXJzIHdpdGhvdXQgc2hhZG93IERPTSBkb24ndC5cbiAgcmV0dXJuIGV2ZW50LnRhcmdldDtcbn1cbmNvbnN0IFRZUEVBQkxFX1NFTEVDVE9SID0gXCJpbnB1dDpub3QoW3R5cGU9J2hpZGRlbiddKTpub3QoW2Rpc2FibGVkXSksXCIgKyBcIltjb250ZW50ZWRpdGFibGVdOm5vdChbY29udGVudGVkaXRhYmxlPSdmYWxzZSddKSx0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSlcIjtcbmZ1bmN0aW9uIGlzVHlwZWFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgJiYgZWxlbWVudC5tYXRjaGVzKFRZUEVBQkxFX1NFTEVDVE9SKTtcbn1cbmZ1bmN0aW9uIHN0b3BFdmVudChldmVudCkge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbn1cbmZ1bmN0aW9uIGlzVHlwZWFibGVDb21ib2JveChlbGVtZW50KSB7XG4gIGlmICghZWxlbWVudCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSA9PT0gJ2NvbWJvYm94JyAmJiBpc1R5cGVhYmxlRWxlbWVudChlbGVtZW50KTtcbn1cblxuZXhwb3J0IHsgVFlQRUFCTEVfU0VMRUNUT1IsIGFjdGl2ZUVsZW1lbnQsIGNvbnRhaW5zLCBnZXREb2N1bWVudCwgZ2V0UGxhdGZvcm0sIGdldFRhcmdldCwgZ2V0VXNlckFnZW50LCBpc0FuZHJvaWQsIGlzRXZlbnRUYXJnZXRXaXRoaW4sIGlzSlNET00sIGlzTWFjLCBpc01vdXNlTGlrZVBvaW50ZXJUeXBlLCBpc1JlYWN0RXZlbnQsIGlzUm9vdEVsZW1lbnQsIGlzU2FmYXJpLCBpc1R5cGVhYmxlQ29tYm9ib3gsIGlzVHlwZWFibGVFbGVtZW50LCBpc1ZpcnR1YWxDbGljaywgaXNWaXJ0dWFsUG9pbnRlckV2ZW50LCBzdG9wRXZlbnQgfTtcbiIsIi8qIVxuKiB0YWJiYWJsZSA2LjIuMFxuKiBAbGljZW5zZSBNSVQsIGh0dHBzOi8vZ2l0aHViLmNvbS9mb2N1cy10cmFwL3RhYmJhYmxlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiovXG4vLyBOT1RFOiBzZXBhcmF0ZSBgOm5vdCgpYCBzZWxlY3RvcnMgaGFzIGJyb2FkZXIgYnJvd3NlciBzdXBwb3J0IHRoYW4gdGhlIG5ld2VyXG4vLyAgYDpub3QoW2luZXJ0XSwgW2luZXJ0XSAqKWAgKEZlYiAyMDIzKVxuLy8gQ0FSRUZVTDogSlNEb20gZG9lcyBub3Qgc3VwcG9ydCBgOm5vdChbaW5lcnRdICopYCBhcyBhIHNlbGVjdG9yOyB1c2luZyBpdCBjYXVzZXNcbi8vICB0aGUgZW50aXJlIHF1ZXJ5IHRvIGZhaWwsIHJlc3VsdGluZyBpbiBubyBub2RlcyBmb3VuZCwgd2hpY2ggd2lsbCBicmVhayBhIGxvdFxuLy8gIG9mIHRoaW5ncy4uLiBzbyB3ZSBoYXZlIHRvIHJlbHkgb24gSlMgdG8gaWRlbnRpZnkgbm9kZXMgaW5zaWRlIGFuIGluZXJ0IGNvbnRhaW5lclxudmFyIGNhbmRpZGF0ZVNlbGVjdG9ycyA9IFsnaW5wdXQ6bm90KFtpbmVydF0pJywgJ3NlbGVjdDpub3QoW2luZXJ0XSknLCAndGV4dGFyZWE6bm90KFtpbmVydF0pJywgJ2FbaHJlZl06bm90KFtpbmVydF0pJywgJ2J1dHRvbjpub3QoW2luZXJ0XSknLCAnW3RhYmluZGV4XTpub3Qoc2xvdCk6bm90KFtpbmVydF0pJywgJ2F1ZGlvW2NvbnRyb2xzXTpub3QoW2luZXJ0XSknLCAndmlkZW9bY29udHJvbHNdOm5vdChbaW5lcnRdKScsICdbY29udGVudGVkaXRhYmxlXTpub3QoW2NvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJdKTpub3QoW2luZXJ0XSknLCAnZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGU6bm90KFtpbmVydF0pJywgJ2RldGFpbHM6bm90KFtpbmVydF0pJ107XG52YXIgY2FuZGlkYXRlU2VsZWN0b3IgPSAvKiAjX19QVVJFX18gKi9jYW5kaWRhdGVTZWxlY3RvcnMuam9pbignLCcpO1xudmFyIE5vRWxlbWVudCA9IHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJztcbnZhciBtYXRjaGVzID0gTm9FbGVtZW50ID8gZnVuY3Rpb24gKCkge30gOiBFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzIHx8IEVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yIHx8IEVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3RvcjtcbnZhciBnZXRSb290Tm9kZSA9ICFOb0VsZW1lbnQgJiYgRWxlbWVudC5wcm90b3R5cGUuZ2V0Um9vdE5vZGUgPyBmdW5jdGlvbiAoZWxlbWVudCkge1xuICB2YXIgX2VsZW1lbnQkZ2V0Um9vdE5vZGU7XG4gIHJldHVybiBlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZWxlbWVudCRnZXRSb290Tm9kZSA9IGVsZW1lbnQuZ2V0Um9vdE5vZGUpID09PSBudWxsIHx8IF9lbGVtZW50JGdldFJvb3ROb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZWxlbWVudCRnZXRSb290Tm9kZS5jYWxsKGVsZW1lbnQpO1xufSA6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVsZW1lbnQub3duZXJEb2N1bWVudDtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIG5vZGUgaXMgaW5lcnQgb3IgaW4gYW4gaW5lcnQgYW5jZXN0b3IuXG4gKiBAcGFyYW0ge0VsZW1lbnR9IFtub2RlXVxuICogQHBhcmFtIHtib29sZWFufSBbbG9va1VwXSBJZiB0cnVlIGFuZCBgbm9kZWAgaXMgbm90IGluZXJ0LCBsb29rcyB1cCBhdCBhbmNlc3RvcnMgdG9cbiAqICBzZWUgaWYgYW55IG9mIHRoZW0gYXJlIGluZXJ0LiBJZiBmYWxzZSwgb25seSBgbm9kZWAgaXRzZWxmIGlzIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBpbmVydCBpdHNlbGYgb3IgYnkgd2F5IG9mIGJlaW5nIGluIGFuIGluZXJ0IGFuY2VzdG9yLlxuICogIEZhbHNlIGlmIGBub2RlYCBpcyBmYWxzeS5cbiAqL1xudmFyIGlzSW5lcnQgPSBmdW5jdGlvbiBpc0luZXJ0KG5vZGUsIGxvb2tVcCkge1xuICB2YXIgX25vZGUkZ2V0QXR0cmlidXRlO1xuICBpZiAobG9va1VwID09PSB2b2lkIDApIHtcbiAgICBsb29rVXAgPSB0cnVlO1xuICB9XG4gIC8vIENBUkVGVUw6IEpTRG9tIGRvZXMgbm90IHN1cHBvcnQgaW5lcnQgYXQgYWxsLCBzbyB3ZSBjYW4ndCB1c2UgdGhlIGBIVE1MRWxlbWVudC5pbmVydGBcbiAgLy8gIEpTIEFQSSBwcm9wZXJ0eTsgd2UgaGF2ZSB0byBjaGVjayB0aGUgYXR0cmlidXRlLCB3aGljaCBjYW4gZWl0aGVyIGJlIGVtcHR5IG9yICd0cnVlJztcbiAgLy8gIGlmIGl0J3MgYG51bGxgIChub3Qgc3BlY2lmaWVkKSBvciAnZmFsc2UnLCBpdCdzIGFuIGFjdGl2ZSBlbGVtZW50XG4gIHZhciBpbmVydEF0dCA9IG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9ub2RlJGdldEF0dHJpYnV0ZSA9IG5vZGUuZ2V0QXR0cmlidXRlKSA9PT0gbnVsbCB8fCBfbm9kZSRnZXRBdHRyaWJ1dGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJGdldEF0dHJpYnV0ZS5jYWxsKG5vZGUsICdpbmVydCcpO1xuICB2YXIgaW5lcnQgPSBpbmVydEF0dCA9PT0gJycgfHwgaW5lcnRBdHQgPT09ICd0cnVlJztcblxuICAvLyBOT1RFOiB0aGlzIGNvdWxkIGFsc28gYmUgaGFuZGxlZCB3aXRoIGBub2RlLm1hdGNoZXMoJ1tpbmVydF0sIDppcyhbaW5lcnRdICopJylgXG4gIC8vICBpZiBpdCB3ZXJlbid0IGZvciBgbWF0Y2hlcygpYCBub3QgYmVpbmcgYSBmdW5jdGlvbiBvbiBzaGFkb3cgcm9vdHM7IHRoZSBmb2xsb3dpbmdcbiAgLy8gIGNvZGUgd29ya3MgZm9yIGFueSBraW5kIG9mIG5vZGVcbiAgLy8gQ0FSRUZVTDogSlNEb20gZG9lcyBub3QgYXBwZWFyIHRvIHN1cHBvcnQgY2VydGFpbiBzZWxlY3RvcnMgbGlrZSBgOm5vdChbaW5lcnRdICopYFxuICAvLyAgc28gaXQgbGlrZWx5IHdvdWxkIG5vdCBzdXBwb3J0IGA6aXMoW2luZXJ0XSAqKWAgZWl0aGVyLi4uXG4gIHZhciByZXN1bHQgPSBpbmVydCB8fCBsb29rVXAgJiYgbm9kZSAmJiBpc0luZXJ0KG5vZGUucGFyZW50Tm9kZSk7IC8vIHJlY3Vyc2l2ZVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSBub2RlJ3MgY29udGVudCBpcyBlZGl0YWJsZS5cbiAqIEBwYXJhbSB7RWxlbWVudH0gW25vZGVdXG4gKiBAcmV0dXJucyBUcnVlIGlmIGl0J3MgY29udGVudC1lZGl0YWJsZTsgZmFsc2UgaWYgaXQncyBub3Qgb3IgYG5vZGVgIGlzIGZhbHN5LlxuICovXG52YXIgaXNDb250ZW50RWRpdGFibGUgPSBmdW5jdGlvbiBpc0NvbnRlbnRFZGl0YWJsZShub2RlKSB7XG4gIHZhciBfbm9kZSRnZXRBdHRyaWJ1dGUyO1xuICAvLyBDQVJFRlVMOiBKU0RvbSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBgSFRNTEVsZW1lbnQuaXNDb250ZW50RWRpdGFibGVgIEFQSSBzbyB3ZSBoYXZlXG4gIC8vICB0byB1c2UgdGhlIGF0dHJpYnV0ZSBkaXJlY3RseSB0byBjaGVjayBmb3IgdGhpcywgd2hpY2ggY2FuIGVpdGhlciBiZSBlbXB0eSBvciAndHJ1ZSc7XG4gIC8vICBpZiBpdCdzIGBudWxsYCAobm90IHNwZWNpZmllZCkgb3IgJ2ZhbHNlJywgaXQncyBhIG5vbi1lZGl0YWJsZSBlbGVtZW50XG4gIHZhciBhdHRWYWx1ZSA9IG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9ub2RlJGdldEF0dHJpYnV0ZTIgPSBub2RlLmdldEF0dHJpYnV0ZSkgPT09IG51bGwgfHwgX25vZGUkZ2V0QXR0cmlidXRlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGUkZ2V0QXR0cmlidXRlMi5jYWxsKG5vZGUsICdjb250ZW50ZWRpdGFibGUnKTtcbiAgcmV0dXJuIGF0dFZhbHVlID09PSAnJyB8fCBhdHRWYWx1ZSA9PT0gJ3RydWUnO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsIGNvbnRhaW5lciB0byBjaGVjayBpblxuICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlQ29udGFpbmVyIGFkZCBjb250YWluZXIgdG8gY2hlY2tcbiAqIEBwYXJhbSB7KG5vZGU6IEVsZW1lbnQpID0+IGJvb2xlYW59IGZpbHRlciBmaWx0ZXIgY2FuZGlkYXRlc1xuICogQHJldHVybnMge0VsZW1lbnRbXX1cbiAqL1xudmFyIGdldENhbmRpZGF0ZXMgPSBmdW5jdGlvbiBnZXRDYW5kaWRhdGVzKGVsLCBpbmNsdWRlQ29udGFpbmVyLCBmaWx0ZXIpIHtcbiAgLy8gZXZlbiBpZiBgaW5jbHVkZUNvbnRhaW5lcj1mYWxzZWAsIHdlIHN0aWxsIGhhdmUgdG8gY2hlY2sgaXQgZm9yIGluZXJ0bmVzcyBiZWNhdXNlXG4gIC8vICBpZiBpdCdzIGluZXJ0LCBhbGwgaXRzIGNoaWxkcmVuIGFyZSBpbmVydFxuICBpZiAoaXNJbmVydChlbCkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoZWwucXVlcnlTZWxlY3RvckFsbChjYW5kaWRhdGVTZWxlY3RvcikpO1xuICBpZiAoaW5jbHVkZUNvbnRhaW5lciAmJiBtYXRjaGVzLmNhbGwoZWwsIGNhbmRpZGF0ZVNlbGVjdG9yKSkge1xuICAgIGNhbmRpZGF0ZXMudW5zaGlmdChlbCk7XG4gIH1cbiAgY2FuZGlkYXRlcyA9IGNhbmRpZGF0ZXMuZmlsdGVyKGZpbHRlcik7XG4gIHJldHVybiBjYW5kaWRhdGVzO1xufTtcblxuLyoqXG4gKiBAY2FsbGJhY2sgR2V0U2hhZG93Um9vdFxuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IHRvIGNoZWNrIGZvciBzaGFkb3cgcm9vdFxuICogQHJldHVybnMge1NoYWRvd1Jvb3R8Ym9vbGVhbn0gU2hhZG93Um9vdCBpZiBhdmFpbGFibGUgb3IgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGEgc2hhZG93Um9vdCBpcyBhdHRhY2hlZCBidXQgbm90IGF2YWlsYWJsZS5cbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBTaGFkb3dSb290RmlsdGVyXG4gKiBAcGFyYW0ge0VsZW1lbnR9IHNoYWRvd0hvc3ROb2RlIHRoZSBlbGVtZW50IHdoaWNoIGNvbnRhaW5zIHNoYWRvdyBjb250ZW50XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiBhIHNoYWRvdyByb290IGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdmFsaWQgY2FuZGlkYXRlcy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENhbmRpZGF0ZVNjb3BlXG4gKiBAcHJvcGVydHkge0VsZW1lbnR9IHNjb3BlUGFyZW50IGNvbnRhaW5zIGlubmVyIGNhbmRpZGF0ZXNcbiAqIEBwcm9wZXJ0eSB7RWxlbWVudFtdfSBjYW5kaWRhdGVzIGxpc3Qgb2YgY2FuZGlkYXRlcyBmb3VuZCBpbiB0aGUgc2NvcGUgcGFyZW50XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJdGVyYXRpdmVPcHRpb25zXG4gKiBAcHJvcGVydHkge0dldFNoYWRvd1Jvb3R8Ym9vbGVhbn0gZ2V0U2hhZG93Um9vdCB0cnVlIGlmIHNoYWRvdyBzdXBwb3J0IGlzIGVuYWJsZWQ7IGZhbHN5IGlmIG5vdDtcbiAqICBpZiBhIGZ1bmN0aW9uLCBpbXBsaWVzIHNoYWRvdyBzdXBwb3J0IGlzIGVuYWJsZWQgYW5kIGVpdGhlciByZXR1cm5zIHRoZSBzaGFkb3cgcm9vdCBvZiBhbiBlbGVtZW50XG4gKiAgb3IgYSBib29sZWFuIHN0YXRpbmcgaWYgaXQgaGFzIGFuIHVuZGlzY2xvc2VkIHNoYWRvdyByb290XG4gKiBAcHJvcGVydHkgeyhub2RlOiBFbGVtZW50KSA9PiBib29sZWFufSBmaWx0ZXIgZmlsdGVyIGNhbmRpZGF0ZXNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZmxhdHRlbiBpZiB0cnVlIHRoZW4gcmVzdWx0IHdpbGwgZmxhdHRlbiBhbnkgQ2FuZGlkYXRlU2NvcGUgaW50byB0aGUgcmV0dXJuZWQgbGlzdFxuICogQHByb3BlcnR5IHtTaGFkb3dSb290RmlsdGVyfSBzaGFkb3dSb290RmlsdGVyIGZpbHRlciBzaGFkb3cgcm9vdHM7XG4gKi9cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnRbXX0gZWxlbWVudHMgbGlzdCBvZiBlbGVtZW50IGNvbnRhaW5lcnMgdG8gbWF0Y2ggY2FuZGlkYXRlcyBmcm9tXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1ZGVDb250YWluZXIgYWRkIGNvbnRhaW5lciBsaXN0IHRvIGNoZWNrXG4gKiBAcGFyYW0ge0l0ZXJhdGl2ZU9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtBcnJheS48RWxlbWVudHxDYW5kaWRhdGVTY29wZT59XG4gKi9cbnZhciBnZXRDYW5kaWRhdGVzSXRlcmF0aXZlbHkgPSBmdW5jdGlvbiBnZXRDYW5kaWRhdGVzSXRlcmF0aXZlbHkoZWxlbWVudHMsIGluY2x1ZGVDb250YWluZXIsIG9wdGlvbnMpIHtcbiAgdmFyIGNhbmRpZGF0ZXMgPSBbXTtcbiAgdmFyIGVsZW1lbnRzVG9DaGVjayA9IEFycmF5LmZyb20oZWxlbWVudHMpO1xuICB3aGlsZSAoZWxlbWVudHNUb0NoZWNrLmxlbmd0aCkge1xuICAgIHZhciBlbGVtZW50ID0gZWxlbWVudHNUb0NoZWNrLnNoaWZ0KCk7XG4gICAgaWYgKGlzSW5lcnQoZWxlbWVudCwgZmFsc2UpKSB7XG4gICAgICAvLyBubyBuZWVkIHRvIGxvb2sgdXAgc2luY2Ugd2UncmUgZHJpbGxpbmcgZG93blxuICAgICAgLy8gYW55dGhpbmcgaW5zaWRlIHRoaXMgY29udGFpbmVyIHdpbGwgYWxzbyBiZSBpbmVydFxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbGVtZW50LnRhZ05hbWUgPT09ICdTTE9UJykge1xuICAgICAgLy8gYWRkIHNoYWRvdyBkb20gc2xvdCBzY29wZSAoc2xvdCBpdHNlbGYgY2Fubm90IGJlIGZvY3VzYWJsZSlcbiAgICAgIHZhciBhc3NpZ25lZCA9IGVsZW1lbnQuYXNzaWduZWRFbGVtZW50cygpO1xuICAgICAgdmFyIGNvbnRlbnQgPSBhc3NpZ25lZC5sZW5ndGggPyBhc3NpZ25lZCA6IGVsZW1lbnQuY2hpbGRyZW47XG4gICAgICB2YXIgbmVzdGVkQ2FuZGlkYXRlcyA9IGdldENhbmRpZGF0ZXNJdGVyYXRpdmVseShjb250ZW50LCB0cnVlLCBvcHRpb25zKTtcbiAgICAgIGlmIChvcHRpb25zLmZsYXR0ZW4pIHtcbiAgICAgICAgY2FuZGlkYXRlcy5wdXNoLmFwcGx5KGNhbmRpZGF0ZXMsIG5lc3RlZENhbmRpZGF0ZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FuZGlkYXRlcy5wdXNoKHtcbiAgICAgICAgICBzY29wZVBhcmVudDogZWxlbWVudCxcbiAgICAgICAgICBjYW5kaWRhdGVzOiBuZXN0ZWRDYW5kaWRhdGVzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjaGVjayBjYW5kaWRhdGUgZWxlbWVudFxuICAgICAgdmFyIHZhbGlkQ2FuZGlkYXRlID0gbWF0Y2hlcy5jYWxsKGVsZW1lbnQsIGNhbmRpZGF0ZVNlbGVjdG9yKTtcbiAgICAgIGlmICh2YWxpZENhbmRpZGF0ZSAmJiBvcHRpb25zLmZpbHRlcihlbGVtZW50KSAmJiAoaW5jbHVkZUNvbnRhaW5lciB8fCAhZWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMucHVzaChlbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gaXRlcmF0ZSBvdmVyIHNoYWRvdyBjb250ZW50IGlmIHBvc3NpYmxlXG4gICAgICB2YXIgc2hhZG93Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCB8fFxuICAgICAgLy8gY2hlY2sgZm9yIGFuIHVuZGlzY2xvc2VkIHNoYWRvd1xuICAgICAgdHlwZW9mIG9wdGlvbnMuZ2V0U2hhZG93Um9vdCA9PT0gJ2Z1bmN0aW9uJyAmJiBvcHRpb25zLmdldFNoYWRvd1Jvb3QoZWxlbWVudCk7XG5cbiAgICAgIC8vIG5vIGluZXJ0IGxvb2sgdXAgYmVjYXVzZSB3ZSdyZSBhbHJlYWR5IGRyaWxsaW5nIGRvd24gYW5kIGNoZWNraW5nIGZvciBpbmVydG5lc3NcbiAgICAgIC8vICBvbiB0aGUgd2F5IGRvd24sIHNvIGFsbCBjb250YWluZXJzIHRvIHRoaXMgcm9vdCBub2RlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlblxuICAgICAgLy8gIHZldHRlZCBhcyBub24taW5lcnRcbiAgICAgIHZhciB2YWxpZFNoYWRvd1Jvb3QgPSAhaXNJbmVydChzaGFkb3dSb290LCBmYWxzZSkgJiYgKCFvcHRpb25zLnNoYWRvd1Jvb3RGaWx0ZXIgfHwgb3B0aW9ucy5zaGFkb3dSb290RmlsdGVyKGVsZW1lbnQpKTtcbiAgICAgIGlmIChzaGFkb3dSb290ICYmIHZhbGlkU2hhZG93Um9vdCkge1xuICAgICAgICAvLyBhZGQgc2hhZG93IGRvbSBzY29wZSBJSUYgYSBzaGFkb3cgcm9vdCBub2RlIHdhcyBnaXZlbjsgb3RoZXJ3aXNlLCBhbiB1bmRpc2Nsb3NlZFxuICAgICAgICAvLyAgc2hhZG93IGV4aXN0cywgc28gbG9vayBhdCBsaWdodCBkb20gY2hpbGRyZW4gYXMgZmFsbGJhY2sgQlVUIGNyZWF0ZSBhIHNjb3BlIGZvciBhbnlcbiAgICAgICAgLy8gIGNoaWxkIGNhbmRpZGF0ZXMgZm91bmQgYmVjYXVzZSB0aGV5J3JlIGxpa2VseSBzbG90dGVkIGVsZW1lbnRzIChlbGVtZW50cyB0aGF0IGFyZVxuICAgICAgICAvLyAgY2hpbGRyZW4gb2YgdGhlIHdlYiBjb21wb25lbnQgZWxlbWVudCAod2hpY2ggaGFzIHRoZSBzaGFkb3cpLCBpbiB0aGUgbGlnaHQgZG9tLCBidXRcbiAgICAgICAgLy8gIHNsb3R0ZWQgc29tZXdoZXJlIF9pbnNpZGVfIHRoZSB1bmRpc2Nsb3NlZCBzaGFkb3cpIC0tIHRoZSBzY29wZSBpcyBjcmVhdGVkIGJlbG93LFxuICAgICAgICAvLyAgX2FmdGVyXyB3ZSByZXR1cm4gZnJvbSB0aGlzIHJlY3Vyc2l2ZSBjYWxsXG4gICAgICAgIHZhciBfbmVzdGVkQ2FuZGlkYXRlcyA9IGdldENhbmRpZGF0ZXNJdGVyYXRpdmVseShzaGFkb3dSb290ID09PSB0cnVlID8gZWxlbWVudC5jaGlsZHJlbiA6IHNoYWRvd1Jvb3QuY2hpbGRyZW4sIHRydWUsIG9wdGlvbnMpO1xuICAgICAgICBpZiAob3B0aW9ucy5mbGF0dGVuKSB7XG4gICAgICAgICAgY2FuZGlkYXRlcy5wdXNoLmFwcGx5KGNhbmRpZGF0ZXMsIF9uZXN0ZWRDYW5kaWRhdGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goe1xuICAgICAgICAgICAgc2NvcGVQYXJlbnQ6IGVsZW1lbnQsXG4gICAgICAgICAgICBjYW5kaWRhdGVzOiBfbmVzdGVkQ2FuZGlkYXRlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB0aGVyZSdzIG5vdCBzaGFkb3cgc28ganVzdCBkaWcgaW50byB0aGUgZWxlbWVudCdzIChsaWdodCBkb20pIGNoaWxkcmVuXG4gICAgICAgIC8vICBfX3dpdGhvdXRfXyBnaXZpbmcgdGhlIGVsZW1lbnQgc3BlY2lhbCBzY29wZSB0cmVhdG1lbnRcbiAgICAgICAgZWxlbWVudHNUb0NoZWNrLnVuc2hpZnQuYXBwbHkoZWxlbWVudHNUb0NoZWNrLCBlbGVtZW50LmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbmRpZGF0ZXM7XG59O1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBub2RlIGhhcyBhbiBleHBsaWNpdGx5IHNwZWNpZmllZCBgdGFiaW5kZXhgIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5vZGVcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHNvOyBmYWxzZSBpZiBub3QuXG4gKi9cbnZhciBoYXNUYWJJbmRleCA9IGZ1bmN0aW9uIGhhc1RhYkluZGV4KG5vZGUpIHtcbiAgcmV0dXJuICFpc05hTihwYXJzZUludChub2RlLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSwgMTApKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lIHRoZSB0YWIgaW5kZXggb2YgYSBnaXZlbiBub2RlLlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbm9kZVxuICogQHJldHVybnMge251bWJlcn0gVGFiIG9yZGVyIChuZWdhdGl2ZSwgMCwgb3IgcG9zaXRpdmUgbnVtYmVyKS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBgbm9kZWAgaXMgZmFsc3kuXG4gKi9cbnZhciBnZXRUYWJJbmRleCA9IGZ1bmN0aW9uIGdldFRhYkluZGV4KG5vZGUpIHtcbiAgaWYgKCFub2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBub2RlIHByb3ZpZGVkJyk7XG4gIH1cbiAgaWYgKG5vZGUudGFiSW5kZXggPCAwKSB7XG4gICAgLy8gaW4gQ2hyb21lLCA8ZGV0YWlscy8+LCA8YXVkaW8gY29udHJvbHMvPiBhbmQgPHZpZGVvIGNvbnRyb2xzLz4gZWxlbWVudHMgZ2V0IGEgZGVmYXVsdFxuICAgIC8vIGB0YWJJbmRleGAgb2YgLTEgd2hlbiB0aGUgJ3RhYmluZGV4JyBhdHRyaWJ1dGUgaXNuJ3Qgc3BlY2lmaWVkIGluIHRoZSBET00sXG4gICAgLy8geWV0IHRoZXkgYXJlIHN0aWxsIHBhcnQgb2YgdGhlIHJlZ3VsYXIgdGFiIG9yZGVyOyBpbiBGRiwgdGhleSBnZXQgYSBkZWZhdWx0XG4gICAgLy8gYHRhYkluZGV4YCBvZiAwOyBzaW5jZSBDaHJvbWUgc3RpbGwgcHV0cyB0aG9zZSBlbGVtZW50cyBpbiB0aGUgcmVndWxhciB0YWJcbiAgICAvLyBvcmRlciwgY29uc2lkZXIgdGhlaXIgdGFiIGluZGV4IHRvIGJlIDAuXG4gICAgLy8gQWxzbyBicm93c2VycyBkbyBub3QgcmV0dXJuIGB0YWJJbmRleGAgY29ycmVjdGx5IGZvciBjb250ZW50RWRpdGFibGUgbm9kZXM7XG4gICAgLy8gc28gaWYgdGhleSBkb24ndCBoYXZlIGEgdGFiaW5kZXggYXR0cmlidXRlIHNwZWNpZmljYWxseSBzZXQsIGFzc3VtZSBpdCdzIDAuXG4gICAgaWYgKCgvXihBVURJT3xWSURFT3xERVRBSUxTKSQvLnRlc3Qobm9kZS50YWdOYW1lKSB8fCBpc0NvbnRlbnRFZGl0YWJsZShub2RlKSkgJiYgIWhhc1RhYkluZGV4KG5vZGUpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vZGUudGFiSW5kZXg7XG59O1xuXG4vKipcbiAqIERldGVybWluZSB0aGUgdGFiIGluZGV4IG9mIGEgZ2l2ZW4gbm9kZSBfX2ZvciBzb3J0IG9yZGVyIHB1cnBvc2VzX18uXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1Njb3BlXSBUcnVlIGZvciBhIGN1c3RvbSBlbGVtZW50IHdpdGggc2hhZG93IHJvb3Qgb3Igc2xvdCB0aGF0LCBieSBkZWZhdWx0LFxuICogIGhhcyB0YWJJbmRleCAtMSwgYnV0IG5lZWRzIHRvIGJlIHNvcnRlZCBieSBkb2N1bWVudCBvcmRlciBpbiBvcmRlciBmb3IgaXRzIGNvbnRlbnQgdG8gYmVcbiAqICBpbnNlcnRlZCBpbnRvIHRoZSBjb3JyZWN0IHNvcnQgcG9zaXRpb24uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBUYWIgb3JkZXIgKG5lZ2F0aXZlLCAwLCBvciBwb3NpdGl2ZSBudW1iZXIpLlxuICovXG52YXIgZ2V0U29ydE9yZGVyVGFiSW5kZXggPSBmdW5jdGlvbiBnZXRTb3J0T3JkZXJUYWJJbmRleChub2RlLCBpc1Njb3BlKSB7XG4gIHZhciB0YWJJbmRleCA9IGdldFRhYkluZGV4KG5vZGUpO1xuICBpZiAodGFiSW5kZXggPCAwICYmIGlzU2NvcGUgJiYgIWhhc1RhYkluZGV4KG5vZGUpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHRhYkluZGV4O1xufTtcbnZhciBzb3J0T3JkZXJlZFRhYmJhYmxlcyA9IGZ1bmN0aW9uIHNvcnRPcmRlcmVkVGFiYmFibGVzKGEsIGIpIHtcbiAgcmV0dXJuIGEudGFiSW5kZXggPT09IGIudGFiSW5kZXggPyBhLmRvY3VtZW50T3JkZXIgLSBiLmRvY3VtZW50T3JkZXIgOiBhLnRhYkluZGV4IC0gYi50YWJJbmRleDtcbn07XG52YXIgaXNJbnB1dCA9IGZ1bmN0aW9uIGlzSW5wdXQobm9kZSkge1xuICByZXR1cm4gbm9kZS50YWdOYW1lID09PSAnSU5QVVQnO1xufTtcbnZhciBpc0hpZGRlbklucHV0ID0gZnVuY3Rpb24gaXNIaWRkZW5JbnB1dChub2RlKSB7XG4gIHJldHVybiBpc0lucHV0KG5vZGUpICYmIG5vZGUudHlwZSA9PT0gJ2hpZGRlbic7XG59O1xudmFyIGlzRGV0YWlsc1dpdGhTdW1tYXJ5ID0gZnVuY3Rpb24gaXNEZXRhaWxzV2l0aFN1bW1hcnkobm9kZSkge1xuICB2YXIgciA9IG5vZGUudGFnTmFtZSA9PT0gJ0RFVEFJTFMnICYmIEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShub2RlLmNoaWxkcmVuKS5zb21lKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBjaGlsZC50YWdOYW1lID09PSAnU1VNTUFSWSc7XG4gIH0pO1xuICByZXR1cm4gcjtcbn07XG52YXIgZ2V0Q2hlY2tlZFJhZGlvID0gZnVuY3Rpb24gZ2V0Q2hlY2tlZFJhZGlvKG5vZGVzLCBmb3JtKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobm9kZXNbaV0uY2hlY2tlZCAmJiBub2Rlc1tpXS5mb3JtID09PSBmb3JtKSB7XG4gICAgICByZXR1cm4gbm9kZXNbaV07XG4gICAgfVxuICB9XG59O1xudmFyIGlzVGFiYmFibGVSYWRpbyA9IGZ1bmN0aW9uIGlzVGFiYmFibGVSYWRpbyhub2RlKSB7XG4gIGlmICghbm9kZS5uYW1lKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIHJhZGlvU2NvcGUgPSBub2RlLmZvcm0gfHwgZ2V0Um9vdE5vZGUobm9kZSk7XG4gIHZhciBxdWVyeVJhZGlvcyA9IGZ1bmN0aW9uIHF1ZXJ5UmFkaW9zKG5hbWUpIHtcbiAgICByZXR1cm4gcmFkaW9TY29wZS5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwicmFkaW9cIl1bbmFtZT1cIicgKyBuYW1lICsgJ1wiXScpO1xuICB9O1xuICB2YXIgcmFkaW9TZXQ7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkNTUyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5DU1MuZXNjYXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmFkaW9TZXQgPSBxdWVyeVJhZGlvcyh3aW5kb3cuQ1NTLmVzY2FwZShub2RlLm5hbWUpKTtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgcmFkaW9TZXQgPSBxdWVyeVJhZGlvcyhub2RlLm5hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0xvb2tzIGxpa2UgeW91IGhhdmUgYSByYWRpbyBidXR0b24gd2l0aCBhIG5hbWUgYXR0cmlidXRlIGNvbnRhaW5pbmcgaW52YWxpZCBDU1Mgc2VsZWN0b3IgY2hhcmFjdGVycyBhbmQgbmVlZCB0aGUgQ1NTLmVzY2FwZSBwb2x5ZmlsbDogJXMnLCBlcnIubWVzc2FnZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHZhciBjaGVja2VkID0gZ2V0Q2hlY2tlZFJhZGlvKHJhZGlvU2V0LCBub2RlLmZvcm0pO1xuICByZXR1cm4gIWNoZWNrZWQgfHwgY2hlY2tlZCA9PT0gbm9kZTtcbn07XG52YXIgaXNSYWRpbyA9IGZ1bmN0aW9uIGlzUmFkaW8obm9kZSkge1xuICByZXR1cm4gaXNJbnB1dChub2RlKSAmJiBub2RlLnR5cGUgPT09ICdyYWRpbyc7XG59O1xudmFyIGlzTm9uVGFiYmFibGVSYWRpbyA9IGZ1bmN0aW9uIGlzTm9uVGFiYmFibGVSYWRpbyhub2RlKSB7XG4gIHJldHVybiBpc1JhZGlvKG5vZGUpICYmICFpc1RhYmJhYmxlUmFkaW8obm9kZSk7XG59O1xuXG4vLyBkZXRlcm1pbmVzIGlmIGEgbm9kZSBpcyB1bHRpbWF0ZWx5IGF0dGFjaGVkIHRvIHRoZSB3aW5kb3cncyBkb2N1bWVudFxudmFyIGlzTm9kZUF0dGFjaGVkID0gZnVuY3Rpb24gaXNOb2RlQXR0YWNoZWQobm9kZSkge1xuICB2YXIgX25vZGVSb290O1xuICAvLyBUaGUgcm9vdCBub2RlIGlzIHRoZSBzaGFkb3cgcm9vdCBpZiB0aGUgbm9kZSBpcyBpbiBhIHNoYWRvdyBET007IHNvbWUgZG9jdW1lbnQgb3RoZXJ3aXNlXG4gIC8vICAoYnV0IE5PVCBfdGhlXyBkb2N1bWVudDsgc2VlIHNlY29uZCAnSWYnIGNvbW1lbnQgYmVsb3cgZm9yIG1vcmUpLlxuICAvLyBJZiByb290Tm9kZSBpcyBzaGFkb3cgcm9vdCwgaXQnbGwgaGF2ZSBhIGhvc3QsIHdoaWNoIGlzIHRoZSBlbGVtZW50IHRvIHdoaWNoIHRoZSBzaGFkb3dcbiAgLy8gIGlzIGF0dGFjaGVkLCBhbmQgdGhlIG9uZSB3ZSBuZWVkIHRvIGNoZWNrIGlmIGl0J3MgaW4gdGhlIGRvY3VtZW50IG9yIG5vdCAoYmVjYXVzZSB0aGVcbiAgLy8gIHNoYWRvdywgYW5kIGFsbCBub2RlcyBpdCBjb250YWlucywgaXMgbmV2ZXIgY29uc2lkZXJlZCBpbiB0aGUgZG9jdW1lbnQgc2luY2Ugc2hhZG93c1xuICAvLyAgYmVoYXZlIGxpa2Ugc2VsZi1jb250YWluZWQgRE9NczsgYnV0IGlmIHRoZSBzaGFkb3cncyBIT1NULCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkb2N1bWVudCxcbiAgLy8gIGlzIGhpZGRlbiwgb3IgaXMgbm90IGluIHRoZSBkb2N1bWVudCBpdHNlbGYgYnV0IGlzIGRldGFjaGVkLCBpdCB3aWxsIGFmZmVjdCB0aGUgc2hhZG93J3NcbiAgLy8gIHZpc2liaWxpdHksIGluY2x1ZGluZyBhbGwgdGhlIG5vZGVzIGl0IGNvbnRhaW5zKS4gVGhlIGhvc3QgY291bGQgYmUgYW55IG5vcm1hbCBub2RlLFxuICAvLyAgb3IgYSBjdXN0b20gZWxlbWVudCAoaS5lLiB3ZWIgY29tcG9uZW50KS4gRWl0aGVyIHdheSwgdGhhdCdzIHRoZSBvbmUgdGhhdCBpcyBjb25zaWRlcmVkXG4gIC8vICBwYXJ0IG9mIHRoZSBkb2N1bWVudCwgbm90IHRoZSBzaGFkb3cgcm9vdCwgbm9yIGFueSBvZiBpdHMgY2hpbGRyZW4gKGkuZS4gdGhlIG5vZGUgYmVpbmdcbiAgLy8gIHRlc3RlZCkuXG4gIC8vIFRvIGZ1cnRoZXIgY29tcGxpY2F0ZSB0aGluZ3MsIHdlIGhhdmUgdG8gbG9vayBhbGwgdGhlIHdheSB1cCB1bnRpbCB3ZSBmaW5kIGEgc2hhZG93IEhPU1RcbiAgLy8gIHRoYXQgaXMgYXR0YWNoZWQgKG9yIGZpbmQgbm9uZSkgYmVjYXVzZSB0aGUgbm9kZSBtaWdodCBiZSBpbiBuZXN0ZWQgc2hhZG93cy4uLlxuICAvLyBJZiByb290Tm9kZSBpcyBub3QgYSBzaGFkb3cgcm9vdCwgaXQgd29uJ3QgaGF2ZSBhIGhvc3QsIGFuZCBzbyByb290Tm9kZSBzaG91bGQgYmUgdGhlXG4gIC8vICBkb2N1bWVudCAocGVyIHRoZSBkb2NzKSBhbmQgd2hpbGUgaXQncyBhIERvY3VtZW50LXR5cGUgb2JqZWN0LCB0aGF0IGRvY3VtZW50IGRvZXMgbm90XG4gIC8vICBhcHBlYXIgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIG5vZGUncyBgb3duZXJEb2N1bWVudGAgZm9yIHNvbWUgcmVhc29uLCBzbyBpdCdzIHNhZmVyXG4gIC8vICB0byBpZ25vcmUgdGhlIHJvb3ROb2RlIGF0IHRoaXMgcG9pbnQsIGFuZCB1c2UgYG5vZGUub3duZXJEb2N1bWVudGAuIE90aGVyd2lzZSxcbiAgLy8gIHVzaW5nIGByb290Tm9kZS5jb250YWlucyhub2RlKWAgd2lsbCBfYWx3YXlzXyBiZSB0cnVlIHdlJ2xsIGdldCBmYWxzZS1wb3NpdGl2ZXMgd2hlblxuICAvLyAgbm9kZSBpcyBhY3R1YWxseSBkZXRhY2hlZC5cbiAgLy8gTk9URTogSWYgYG5vZGVSb290SG9zdGAgb3IgYG5vZGVgIGhhcHBlbnMgdG8gYmUgdGhlIGBkb2N1bWVudGAgaXRzZWxmICh3aGljaCBpcyBwb3NzaWJsZVxuICAvLyAgaWYgYSB0YWJiYWJsZS9mb2N1c2FibGUgbm9kZSB3YXMgcXVpY2tseSBhZGRlZCB0byB0aGUgRE9NLCBmb2N1c2VkLCBhbmQgdGhlbiByZW1vdmVkXG4gIC8vICBmcm9tIHRoZSBET00gYXMgaW4gaHR0cHM6Ly9naXRodWIuY29tL2ZvY3VzLXRyYXAvZm9jdXMtdHJhcC1yZWFjdC9pc3N1ZXMvOTA1KSwgdGhlblxuICAvLyAgYG93bmVyRG9jdW1lbnRgIHdpbGwgYmUgYG51bGxgLCBoZW5jZSB0aGUgb3B0aW9uYWwgY2hhaW5pbmcgb24gaXQuXG4gIHZhciBub2RlUm9vdCA9IG5vZGUgJiYgZ2V0Um9vdE5vZGUobm9kZSk7XG4gIHZhciBub2RlUm9vdEhvc3QgPSAoX25vZGVSb290ID0gbm9kZVJvb3QpID09PSBudWxsIHx8IF9ub2RlUm9vdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGVSb290Lmhvc3Q7XG5cbiAgLy8gaW4gc29tZSBjYXNlcywgYSBkZXRhY2hlZCBub2RlIHdpbGwgcmV0dXJuIGl0c2VsZiBhcyB0aGUgcm9vdCBpbnN0ZWFkIG9mIGEgZG9jdW1lbnQgb3JcbiAgLy8gIHNoYWRvdyByb290IG9iamVjdCwgaW4gd2hpY2ggY2FzZSwgd2Ugc2hvdWxkbid0IHRyeSB0byBsb29rIGZ1cnRoZXIgdXAgdGhlIGhvc3QgY2hhaW5cbiAgdmFyIGF0dGFjaGVkID0gZmFsc2U7XG4gIGlmIChub2RlUm9vdCAmJiBub2RlUm9vdCAhPT0gbm9kZSkge1xuICAgIHZhciBfbm9kZVJvb3RIb3N0LCBfbm9kZVJvb3RIb3N0JG93bmVyRG8sIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gICAgYXR0YWNoZWQgPSAhISgoX25vZGVSb290SG9zdCA9IG5vZGVSb290SG9zdCkgIT09IG51bGwgJiYgX25vZGVSb290SG9zdCAhPT0gdm9pZCAwICYmIChfbm9kZVJvb3RIb3N0JG93bmVyRG8gPSBfbm9kZVJvb3RIb3N0Lm93bmVyRG9jdW1lbnQpICE9PSBudWxsICYmIF9ub2RlUm9vdEhvc3Qkb3duZXJEbyAhPT0gdm9pZCAwICYmIF9ub2RlUm9vdEhvc3Qkb3duZXJEby5jb250YWlucyhub2RlUm9vdEhvc3QpIHx8IG5vZGUgIT09IG51bGwgJiYgbm9kZSAhPT0gdm9pZCAwICYmIChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSAhPT0gbnVsbCAmJiBfbm9kZSRvd25lckRvY3VtZW50ICE9PSB2b2lkIDAgJiYgX25vZGUkb3duZXJEb2N1bWVudC5jb250YWlucyhub2RlKSk7XG4gICAgd2hpbGUgKCFhdHRhY2hlZCAmJiBub2RlUm9vdEhvc3QpIHtcbiAgICAgIHZhciBfbm9kZVJvb3QyLCBfbm9kZVJvb3RIb3N0MiwgX25vZGVSb290SG9zdDIkb3duZXJEO1xuICAgICAgLy8gc2luY2UgaXQncyBub3QgYXR0YWNoZWQgYW5kIHdlIGhhdmUgYSByb290IGhvc3QsIHRoZSBub2RlIE1VU1QgYmUgaW4gYSBuZXN0ZWQgc2hhZG93IERPTSxcbiAgICAgIC8vICB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIGdldCB0aGUgaG9zdCdzIGhvc3QgYW5kIGNoZWNrIGlmIHRoYXQgcGFyZW50IGhvc3QgaXMgY29udGFpbmVkXG4gICAgICAvLyAgaW4gKGkuZS4gYXR0YWNoZWQgdG8pIHRoZSBkb2N1bWVudFxuICAgICAgbm9kZVJvb3QgPSBnZXRSb290Tm9kZShub2RlUm9vdEhvc3QpO1xuICAgICAgbm9kZVJvb3RIb3N0ID0gKF9ub2RlUm9vdDIgPSBub2RlUm9vdCkgPT09IG51bGwgfHwgX25vZGVSb290MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGVSb290Mi5ob3N0O1xuICAgICAgYXR0YWNoZWQgPSAhISgoX25vZGVSb290SG9zdDIgPSBub2RlUm9vdEhvc3QpICE9PSBudWxsICYmIF9ub2RlUm9vdEhvc3QyICE9PSB2b2lkIDAgJiYgKF9ub2RlUm9vdEhvc3QyJG93bmVyRCA9IF9ub2RlUm9vdEhvc3QyLm93bmVyRG9jdW1lbnQpICE9PSBudWxsICYmIF9ub2RlUm9vdEhvc3QyJG93bmVyRCAhPT0gdm9pZCAwICYmIF9ub2RlUm9vdEhvc3QyJG93bmVyRC5jb250YWlucyhub2RlUm9vdEhvc3QpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGF0dGFjaGVkO1xufTtcbnZhciBpc1plcm9BcmVhID0gZnVuY3Rpb24gaXNaZXJvQXJlYShub2RlKSB7XG4gIHZhciBfbm9kZSRnZXRCb3VuZGluZ0NsaWUgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIHdpZHRoID0gX25vZGUkZ2V0Qm91bmRpbmdDbGllLndpZHRoLFxuICAgIGhlaWdodCA9IF9ub2RlJGdldEJvdW5kaW5nQ2xpZS5oZWlnaHQ7XG4gIHJldHVybiB3aWR0aCA9PT0gMCAmJiBoZWlnaHQgPT09IDA7XG59O1xudmFyIGlzSGlkZGVuID0gZnVuY3Rpb24gaXNIaWRkZW4obm9kZSwgX3JlZikge1xuICB2YXIgZGlzcGxheUNoZWNrID0gX3JlZi5kaXNwbGF5Q2hlY2ssXG4gICAgZ2V0U2hhZG93Um9vdCA9IF9yZWYuZ2V0U2hhZG93Um9vdDtcbiAgLy8gTk9URTogdmlzaWJpbGl0eSB3aWxsIGJlIGB1bmRlZmluZWRgIGlmIG5vZGUgaXMgZGV0YWNoZWQgZnJvbSB0aGUgZG9jdW1lbnRcbiAgLy8gIChzZWUgbm90ZXMgYWJvdXQgdGhpcyBmdXJ0aGVyIGRvd24pLCB3aGljaCBtZWFucyB3ZSB3aWxsIGNvbnNpZGVyIGl0IHZpc2libGVcbiAgLy8gICh0aGlzIGlzIGxlZ2FjeSBiZWhhdmlvciBmcm9tIGEgdmVyeSBsb25nIHdheSBiYWNrKVxuICAvLyBOT1RFOiB3ZSBjaGVjayB0aGlzIHJlZ2FyZGxlc3Mgb2YgYGRpc3BsYXlDaGVjaz1cIm5vbmVcImAgYmVjYXVzZSB0aGlzIGlzIGFcbiAgLy8gIF92aXNpYmlsaXR5XyBjaGVjaywgbm90IGEgX2Rpc3BsYXlfIGNoZWNrXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKG5vZGUpLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIGlzRGlyZWN0U3VtbWFyeSA9IG1hdGNoZXMuY2FsbChub2RlLCAnZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGUnKTtcbiAgdmFyIG5vZGVVbmRlckRldGFpbHMgPSBpc0RpcmVjdFN1bW1hcnkgPyBub2RlLnBhcmVudEVsZW1lbnQgOiBub2RlO1xuICBpZiAobWF0Y2hlcy5jYWxsKG5vZGVVbmRlckRldGFpbHMsICdkZXRhaWxzOm5vdChbb3Blbl0pIConKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICghZGlzcGxheUNoZWNrIHx8IGRpc3BsYXlDaGVjayA9PT0gJ2Z1bGwnIHx8IGRpc3BsYXlDaGVjayA9PT0gJ2xlZ2FjeS1mdWxsJykge1xuICAgIGlmICh0eXBlb2YgZ2V0U2hhZG93Um9vdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gZmlndXJlIG91dCBpZiB3ZSBzaG91bGQgY29uc2lkZXIgdGhlIG5vZGUgdG8gYmUgaW4gYW4gdW5kaXNjbG9zZWQgc2hhZG93IGFuZCB1c2UgdGhlXG4gICAgICAvLyAgJ25vbi16ZXJvLWFyZWEnIGZhbGxiYWNrXG4gICAgICB2YXIgb3JpZ2luYWxOb2RlID0gbm9kZTtcbiAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgIHZhciBwYXJlbnRFbGVtZW50ID0gbm9kZS5wYXJlbnRFbGVtZW50O1xuICAgICAgICB2YXIgcm9vdE5vZGUgPSBnZXRSb290Tm9kZShub2RlKTtcbiAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQgJiYgIXBhcmVudEVsZW1lbnQuc2hhZG93Um9vdCAmJiBnZXRTaGFkb3dSb290KHBhcmVudEVsZW1lbnQpID09PSB0cnVlIC8vIGNoZWNrIGlmIHRoZXJlJ3MgYW4gdW5kaXNjbG9zZWQgc2hhZG93XG4gICAgICAgICkge1xuICAgICAgICAgIC8vIG5vZGUgaGFzIGFuIHVuZGlzY2xvc2VkIHNoYWRvdyB3aGljaCBtZWFucyB3ZSBjYW4gb25seSB0cmVhdCBpdCBhcyBhIGJsYWNrIGJveCwgc28gd2VcbiAgICAgICAgICAvLyAgZmFsbCBiYWNrIHRvIGEgbm9uLXplcm8tYXJlYSB0ZXN0XG4gICAgICAgICAgcmV0dXJuIGlzWmVyb0FyZWEobm9kZSk7XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZS5hc3NpZ25lZFNsb3QpIHtcbiAgICAgICAgICAvLyBpdGVyYXRlIHVwIHNsb3RcbiAgICAgICAgICBub2RlID0gbm9kZS5hc3NpZ25lZFNsb3Q7XG4gICAgICAgIH0gZWxzZSBpZiAoIXBhcmVudEVsZW1lbnQgJiYgcm9vdE5vZGUgIT09IG5vZGUub3duZXJEb2N1bWVudCkge1xuICAgICAgICAgIC8vIGNyb3NzIHNoYWRvdyBib3VuZGFyeVxuICAgICAgICAgIG5vZGUgPSByb290Tm9kZS5ob3N0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGl0ZXJhdGUgdXAgbm9ybWFsIGRvbVxuICAgICAgICAgIG5vZGUgPSBwYXJlbnRFbGVtZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBub2RlID0gb3JpZ2luYWxOb2RlO1xuICAgIH1cbiAgICAvLyBlbHNlLCBgZ2V0U2hhZG93Um9vdGAgbWlnaHQgYmUgdHJ1ZSwgYnV0IGFsbCB0aGF0IGRvZXMgaXMgZW5hYmxlIHNoYWRvdyBET00gc3VwcG9ydFxuICAgIC8vICAoaS5lLiBpdCBkb2VzIG5vdCBhbHNvIHByZXN1bWUgdGhhdCBhbGwgbm9kZXMgbWlnaHQgaGF2ZSB1bmRpc2Nsb3NlZCBzaGFkb3dzKTsgb3JcbiAgICAvLyAgaXQgbWlnaHQgYmUgYSBmYWxzeSB2YWx1ZSwgd2hpY2ggbWVhbnMgc2hhZG93IERPTSBzdXBwb3J0IGlzIGRpc2FibGVkXG5cbiAgICAvLyBTaW5jZSB3ZSBkaWRuJ3QgZmluZCBpdCBzaXR0aW5nIGluIGFuIHVuZGlzY2xvc2VkIHNoYWRvdyAob3Igc2hhZG93cyBhcmUgZGlzYWJsZWQpXG4gICAgLy8gIG5vdyB3ZSBjYW4ganVzdCB0ZXN0IHRvIHNlZSBpZiBpdCB3b3VsZCBub3JtYWxseSBiZSB2aXNpYmxlIG9yIG5vdCwgcHJvdmlkZWQgaXQnc1xuICAgIC8vICBhdHRhY2hlZCB0byB0aGUgbWFpbiBkb2N1bWVudC5cbiAgICAvLyBOT1RFOiBXZSBtdXN0IGNvbnNpZGVyIGNhc2Ugd2hlcmUgbm9kZSBpcyBpbnNpZGUgYSBzaGFkb3cgRE9NIGFuZCBnaXZlbiBkaXJlY3RseSB0b1xuICAgIC8vICBgaXNUYWJiYWJsZSgpYCBvciBgaXNGb2N1c2FibGUoKWAgLS0gcmVnYXJkbGVzcyBvZiBgZ2V0U2hhZG93Um9vdGAgb3B0aW9uIHNldHRpbmcuXG5cbiAgICBpZiAoaXNOb2RlQXR0YWNoZWQobm9kZSkpIHtcbiAgICAgIC8vIHRoaXMgd29ya3Mgd2hlcmV2ZXIgdGhlIG5vZGUgaXM6IGlmIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIGNsaWVudCByZWN0LCBpdCdzXG4gICAgICAvLyAgc29tZWhvdyBkaXNwbGF5ZWQ7IGl0IGFsc28gY292ZXJzIHRoZSBDU1MgJ2Rpc3BsYXk6IGNvbnRlbnRzJyBjYXNlIHdoZXJlIHRoZVxuICAgICAgLy8gIG5vZGUgaXRzZWxmIGlzIGhpZGRlbiBpbiBwbGFjZSBvZiBpdHMgY29udGVudHM7IGFuZCB0aGVyZSdzIG5vIG5lZWQgdG8gc2VhcmNoXG4gICAgICAvLyAgdXAgdGhlIGhpZXJhcmNoeSBlaXRoZXJcbiAgICAgIHJldHVybiAhbm9kZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvLyBFbHNlLCB0aGUgbm9kZSBpc24ndCBhdHRhY2hlZCB0byB0aGUgZG9jdW1lbnQsIHdoaWNoIG1lYW5zIHRoZSBgZ2V0Q2xpZW50UmVjdHMoKWBcbiAgICAvLyAgQVBJIHdpbGwgX19hbHdheXNfXyByZXR1cm4gemVybyByZWN0cyAodGhpcyBjYW4gaGFwcGVuLCBmb3IgZXhhbXBsZSwgaWYgUmVhY3RcbiAgICAvLyAgaXMgdXNlZCB0byByZW5kZXIgbm9kZXMgb250byBhIGRldGFjaGVkIHRyZWUsIGFzIGNvbmZpcm1lZCBpbiB0aGlzIHRocmVhZDpcbiAgICAvLyAgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy85MTE3I2lzc3VlY29tbWVudC0yODQyMjg4NzApXG4gICAgLy9cbiAgICAvLyBJdCBhbHNvIG1lYW5zIHRoYXQgZXZlbiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5kaXNwbGF5IHdpbGwgcmV0dXJuIGB1bmRlZmluZWRgXG4gICAgLy8gIGJlY2F1c2Ugc3R5bGVzIGFyZSBvbmx5IGNvbXB1dGVkIGZvciBub2RlcyB0aGF0IGFyZSBpbiB0aGUgZG9jdW1lbnQuXG4gICAgLy9cbiAgICAvLyBOT1RFOiBUSElTIEhBUyBCRUVOIFRIRSBDQVNFIEZPUiBZRUFSUy4gSXQgaXMgbm90IG5ldywgbm9yIGlzIGl0IGNhdXNlZCBieSB0YWJiYWJsZVxuICAgIC8vICBzb21laG93LiBUaG91Z2ggaXQgd2FzIG5ldmVyIHN0YXRlZCBvZmZpY2lhbGx5LCBhbnlvbmUgd2hvIGhhcyBldmVyIHVzZWQgdGFiYmFibGVcbiAgICAvLyAgQVBJcyBvbiBub2RlcyBpbiBkZXRhY2hlZCBjb250YWluZXJzIGhhcyBhY3R1YWxseSBpbXBsaWNpdGx5IHVzZWQgdGFiYmFibGUgaW4gd2hhdFxuICAgIC8vICB3YXMgbGF0ZXIgKGFzIG9mIHY1LjIuMCBvbiBBcHIgOSwgMjAyMSkgY2FsbGVkIGBkaXNwbGF5Q2hlY2s9XCJub25lXCJgIG1vZGUgLS0gZXNzZW50aWFsbHlcbiAgICAvLyAgY29uc2lkZXJpbmcgX19ldmVyeXRoaW5nX18gdG8gYmUgdmlzaWJsZSBiZWNhdXNlIG9mIHRoZSBpbm5hYmlsaXR5IHRvIGRldGVybWluZSBzdHlsZXMuXG4gICAgLy9cbiAgICAvLyB2Ni4wLjA6IEFzIG9mIHRoaXMgbWFqb3IgcmVsZWFzZSwgdGhlIGRlZmF1bHQgJ2Z1bGwnIG9wdGlvbiBfX25vIGxvbmdlciB0cmVhdHMgZGV0YWNoZWRcbiAgICAvLyAgbm9kZXMgYXMgdmlzaWJsZSB3aXRoIHRoZSAnbm9uZScgZmFsbGJhY2suX19cbiAgICBpZiAoZGlzcGxheUNoZWNrICE9PSAnbGVnYWN5LWZ1bGwnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gaGlkZGVuXG4gICAgfVxuICAgIC8vIGVsc2UsIGZhbGxiYWNrIHRvICdub25lJyBtb2RlIGFuZCBjb25zaWRlciB0aGUgbm9kZSB2aXNpYmxlXG4gIH0gZWxzZSBpZiAoZGlzcGxheUNoZWNrID09PSAnbm9uLXplcm8tYXJlYScpIHtcbiAgICAvLyBOT1RFOiBFdmVuIHRob3VnaCB0aGlzIHRlc3RzIHRoYXQgdGhlIG5vZGUncyBjbGllbnQgcmVjdCBpcyBub24temVybyB0byBkZXRlcm1pbmVcbiAgICAvLyAgd2hldGhlciBpdCdzIGRpc3BsYXllZCwgYW5kIHRoYXQgYSBkZXRhY2hlZCBub2RlIHdpbGwgX19hbHdheXNfXyBoYXZlIGEgemVyby1hcmVhXG4gICAgLy8gIGNsaWVudCByZWN0LCB3ZSBkb24ndCBzcGVjaWFsLWNhc2UgZm9yIHdoZXRoZXIgdGhlIG5vZGUgaXMgYXR0YWNoZWQgb3Igbm90LiBJblxuICAgIC8vICB0aGlzIG1vZGUsIHdlIGRvIHdhbnQgdG8gY29uc2lkZXIgbm9kZXMgdGhhdCBoYXZlIGEgemVybyBhcmVhIHRvIGJlIGhpZGRlbiBhdCBhbGxcbiAgICAvLyAgdGltZXMsIGFuZCB0aGF0IGluY2x1ZGVzIGF0dGFjaGVkIG9yIG5vdC5cbiAgICByZXR1cm4gaXNaZXJvQXJlYShub2RlKTtcbiAgfVxuXG4gIC8vIHZpc2libGUsIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgb3IgcGVyIGN1cnJlbnQgYGRpc3BsYXlDaGVjaz1ub25lYCBtb2RlLCB3ZSBhc3N1bWVcbiAgLy8gIGl0J3MgdmlzaWJsZVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBmb3JtIGZpZWxkcyAobmVzdGVkKSBpbnNpZGUgYSBkaXNhYmxlZCBmaWVsZHNldCBhcmUgbm90IGZvY3VzYWJsZS90YWJiYWJsZVxuLy8gIHVubGVzcyB0aGV5IGFyZSBpbiB0aGUgX2ZpcnN0XyA8bGVnZW5kPiBlbGVtZW50IG9mIHRoZSB0b3AtbW9zdCBkaXNhYmxlZFxuLy8gIGZpZWxkc2V0XG52YXIgaXNEaXNhYmxlZEZyb21GaWVsZHNldCA9IGZ1bmN0aW9uIGlzRGlzYWJsZWRGcm9tRmllbGRzZXQobm9kZSkge1xuICBpZiAoL14oSU5QVVR8QlVUVE9OfFNFTEVDVHxURVhUQVJFQSkkLy50ZXN0KG5vZGUudGFnTmFtZSkpIHtcbiAgICB2YXIgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICAvLyBjaGVjayBpZiBgbm9kZWAgaXMgY29udGFpbmVkIGluIGEgZGlzYWJsZWQgPGZpZWxkc2V0PlxuICAgIHdoaWxlIChwYXJlbnROb2RlKSB7XG4gICAgICBpZiAocGFyZW50Tm9kZS50YWdOYW1lID09PSAnRklFTERTRVQnICYmIHBhcmVudE5vZGUuZGlzYWJsZWQpIHtcbiAgICAgICAgLy8gbG9vayBmb3IgdGhlIGZpcnN0IDxsZWdlbmQ+IGFtb25nIHRoZSBjaGlsZHJlbiBvZiB0aGUgZGlzYWJsZWQgPGZpZWxkc2V0PlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmVudE5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgY2hpbGQgPSBwYXJlbnROb2RlLmNoaWxkcmVuLml0ZW0oaSk7XG4gICAgICAgICAgLy8gd2hlbiB0aGUgZmlyc3QgPGxlZ2VuZD4gKGluIGRvY3VtZW50IG9yZGVyKSBpcyBmb3VuZFxuICAgICAgICAgIGlmIChjaGlsZC50YWdOYW1lID09PSAnTEVHRU5EJykge1xuICAgICAgICAgICAgLy8gaWYgaXRzIHBhcmVudCA8ZmllbGRzZXQ+IGlzIG5vdCBuZXN0ZWQgaW4gYW5vdGhlciBkaXNhYmxlZCA8ZmllbGRzZXQ+LFxuICAgICAgICAgICAgLy8gcmV0dXJuIHdoZXRoZXIgYG5vZGVgIGlzIGEgZGVzY2VuZGFudCBvZiBpdHMgZmlyc3QgPGxlZ2VuZD5cbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVzLmNhbGwocGFyZW50Tm9kZSwgJ2ZpZWxkc2V0W2Rpc2FibGVkXSAqJykgPyB0cnVlIDogIWNoaWxkLmNvbnRhaW5zKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgZGlzYWJsZWQgPGZpZWxkc2V0PiBjb250YWluaW5nIGBub2RlYCBoYXMgbm8gPGxlZ2VuZD5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnRFbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIGVsc2UsIG5vZGUncyB0YWJiYWJsZS9mb2N1c2FibGUgc3RhdGUgc2hvdWxkIG5vdCBiZSBhZmZlY3RlZCBieSBhIGZpZWxkc2V0J3NcbiAgLy8gIGVuYWJsZWQvZGlzYWJsZWQgc3RhdGVcbiAgcmV0dXJuIGZhbHNlO1xufTtcbnZhciBpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlID0gZnVuY3Rpb24gaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZShvcHRpb25zLCBub2RlKSB7XG4gIGlmIChub2RlLmRpc2FibGVkIHx8XG4gIC8vIHdlIG11c3QgZG8gYW4gaW5lcnQgbG9vayB1cCB0byBmaWx0ZXIgb3V0IGFueSBlbGVtZW50cyBpbnNpZGUgYW4gaW5lcnQgYW5jZXN0b3JcbiAgLy8gIGJlY2F1c2Ugd2UncmUgbGltaXRlZCBpbiB0aGUgdHlwZSBvZiBzZWxlY3RvcnMgd2UgY2FuIHVzZSBpbiBKU0RvbSAoc2VlIHJlbGF0ZWRcbiAgLy8gIG5vdGUgcmVsYXRlZCB0byBgY2FuZGlkYXRlU2VsZWN0b3JzYClcbiAgaXNJbmVydChub2RlKSB8fCBpc0hpZGRlbklucHV0KG5vZGUpIHx8IGlzSGlkZGVuKG5vZGUsIG9wdGlvbnMpIHx8XG4gIC8vIEZvciBhIGRldGFpbHMgZWxlbWVudCB3aXRoIGEgc3VtbWFyeSwgdGhlIHN1bW1hcnkgZWxlbWVudCBnZXRzIHRoZSBmb2N1c1xuICBpc0RldGFpbHNXaXRoU3VtbWFyeShub2RlKSB8fCBpc0Rpc2FibGVkRnJvbUZpZWxkc2V0KG5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBpc05vZGVNYXRjaGluZ1NlbGVjdG9yVGFiYmFibGUgPSBmdW5jdGlvbiBpc05vZGVNYXRjaGluZ1NlbGVjdG9yVGFiYmFibGUob3B0aW9ucywgbm9kZSkge1xuICBpZiAoaXNOb25UYWJiYWJsZVJhZGlvKG5vZGUpIHx8IGdldFRhYkluZGV4KG5vZGUpIDwgMCB8fCAhaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZShvcHRpb25zLCBub2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgaXNWYWxpZFNoYWRvd1Jvb3RUYWJiYWJsZSA9IGZ1bmN0aW9uIGlzVmFsaWRTaGFkb3dSb290VGFiYmFibGUoc2hhZG93SG9zdE5vZGUpIHtcbiAgdmFyIHRhYkluZGV4ID0gcGFyc2VJbnQoc2hhZG93SG9zdE5vZGUuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpLCAxMCk7XG4gIGlmIChpc05hTih0YWJJbmRleCkgfHwgdGFiSW5kZXggPj0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8vIElmIGEgY3VzdG9tIGVsZW1lbnQgaGFzIGFuIGV4cGxpY2l0IG5lZ2F0aXZlIHRhYmluZGV4LFxuICAvLyBicm93c2VycyB3aWxsIG5vdCBhbGxvdyB0YWIgdGFyZ2V0aW5nIHNhaWQgZWxlbWVudCdzIGNoaWxkcmVuLlxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXkuPEVsZW1lbnR8Q2FuZGlkYXRlU2NvcGU+fSBjYW5kaWRhdGVzXG4gKiBAcmV0dXJucyBFbGVtZW50W11cbiAqL1xudmFyIHNvcnRCeU9yZGVyID0gZnVuY3Rpb24gc29ydEJ5T3JkZXIoY2FuZGlkYXRlcykge1xuICB2YXIgcmVndWxhclRhYmJhYmxlcyA9IFtdO1xuICB2YXIgb3JkZXJlZFRhYmJhYmxlcyA9IFtdO1xuICBjYW5kaWRhdGVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGkpIHtcbiAgICB2YXIgaXNTY29wZSA9ICEhaXRlbS5zY29wZVBhcmVudDtcbiAgICB2YXIgZWxlbWVudCA9IGlzU2NvcGUgPyBpdGVtLnNjb3BlUGFyZW50IDogaXRlbTtcbiAgICB2YXIgY2FuZGlkYXRlVGFiaW5kZXggPSBnZXRTb3J0T3JkZXJUYWJJbmRleChlbGVtZW50LCBpc1Njb3BlKTtcbiAgICB2YXIgZWxlbWVudHMgPSBpc1Njb3BlID8gc29ydEJ5T3JkZXIoaXRlbS5jYW5kaWRhdGVzKSA6IGVsZW1lbnQ7XG4gICAgaWYgKGNhbmRpZGF0ZVRhYmluZGV4ID09PSAwKSB7XG4gICAgICBpc1Njb3BlID8gcmVndWxhclRhYmJhYmxlcy5wdXNoLmFwcGx5KHJlZ3VsYXJUYWJiYWJsZXMsIGVsZW1lbnRzKSA6IHJlZ3VsYXJUYWJiYWJsZXMucHVzaChlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3JkZXJlZFRhYmJhYmxlcy5wdXNoKHtcbiAgICAgICAgZG9jdW1lbnRPcmRlcjogaSxcbiAgICAgICAgdGFiSW5kZXg6IGNhbmRpZGF0ZVRhYmluZGV4LFxuICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICBpc1Njb3BlOiBpc1Njb3BlLFxuICAgICAgICBjb250ZW50OiBlbGVtZW50c1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG9yZGVyZWRUYWJiYWJsZXMuc29ydChzb3J0T3JkZXJlZFRhYmJhYmxlcykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHNvcnRhYmxlKSB7XG4gICAgc29ydGFibGUuaXNTY29wZSA/IGFjYy5wdXNoLmFwcGx5KGFjYywgc29ydGFibGUuY29udGVudCkgOiBhY2MucHVzaChzb3J0YWJsZS5jb250ZW50KTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSkuY29uY2F0KHJlZ3VsYXJUYWJiYWJsZXMpO1xufTtcbnZhciB0YWJiYWJsZSA9IGZ1bmN0aW9uIHRhYmJhYmxlKGNvbnRhaW5lciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGNhbmRpZGF0ZXM7XG4gIGlmIChvcHRpb25zLmdldFNoYWRvd1Jvb3QpIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlc0l0ZXJhdGl2ZWx5KFtjb250YWluZXJdLCBvcHRpb25zLmluY2x1ZGVDb250YWluZXIsIHtcbiAgICAgIGZpbHRlcjogaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlLmJpbmQobnVsbCwgb3B0aW9ucyksXG4gICAgICBmbGF0dGVuOiBmYWxzZSxcbiAgICAgIGdldFNoYWRvd1Jvb3Q6IG9wdGlvbnMuZ2V0U2hhZG93Um9vdCxcbiAgICAgIHNoYWRvd1Jvb3RGaWx0ZXI6IGlzVmFsaWRTaGFkb3dSb290VGFiYmFibGVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlcyhjb250YWluZXIsIG9wdGlvbnMuaW5jbHVkZUNvbnRhaW5lciwgaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlLmJpbmQobnVsbCwgb3B0aW9ucykpO1xuICB9XG4gIHJldHVybiBzb3J0QnlPcmRlcihjYW5kaWRhdGVzKTtcbn07XG52YXIgZm9jdXNhYmxlID0gZnVuY3Rpb24gZm9jdXNhYmxlKGNvbnRhaW5lciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGNhbmRpZGF0ZXM7XG4gIGlmIChvcHRpb25zLmdldFNoYWRvd1Jvb3QpIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlc0l0ZXJhdGl2ZWx5KFtjb250YWluZXJdLCBvcHRpb25zLmluY2x1ZGVDb250YWluZXIsIHtcbiAgICAgIGZpbHRlcjogaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZS5iaW5kKG51bGwsIG9wdGlvbnMpLFxuICAgICAgZmxhdHRlbjogdHJ1ZSxcbiAgICAgIGdldFNoYWRvd1Jvb3Q6IG9wdGlvbnMuZ2V0U2hhZG93Um9vdFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNhbmRpZGF0ZXMgPSBnZXRDYW5kaWRhdGVzKGNvbnRhaW5lciwgb3B0aW9ucy5pbmNsdWRlQ29udGFpbmVyLCBpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlLmJpbmQobnVsbCwgb3B0aW9ucykpO1xuICB9XG4gIHJldHVybiBjYW5kaWRhdGVzO1xufTtcbnZhciBpc1RhYmJhYmxlID0gZnVuY3Rpb24gaXNUYWJiYWJsZShub2RlLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBpZiAoIW5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG5vZGUgcHJvdmlkZWQnKTtcbiAgfVxuICBpZiAobWF0Y2hlcy5jYWxsKG5vZGUsIGNhbmRpZGF0ZVNlbGVjdG9yKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JUYWJiYWJsZShvcHRpb25zLCBub2RlKTtcbn07XG52YXIgZm9jdXNhYmxlQ2FuZGlkYXRlU2VsZWN0b3IgPSAvKiAjX19QVVJFX18gKi9jYW5kaWRhdGVTZWxlY3RvcnMuY29uY2F0KCdpZnJhbWUnKS5qb2luKCcsJyk7XG52YXIgaXNGb2N1c2FibGUgPSBmdW5jdGlvbiBpc0ZvY3VzYWJsZShub2RlLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBpZiAoIW5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG5vZGUgcHJvdmlkZWQnKTtcbiAgfVxuICBpZiAobWF0Y2hlcy5jYWxsKG5vZGUsIGZvY3VzYWJsZUNhbmRpZGF0ZVNlbGVjdG9yKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JGb2N1c2FibGUob3B0aW9ucywgbm9kZSk7XG59O1xuXG5leHBvcnQgeyBmb2N1c2FibGUsIGdldFRhYkluZGV4LCBpc0ZvY3VzYWJsZSwgaXNUYWJiYWJsZSwgdGFiYmFibGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmVzbS5qcy5tYXBcbiIsImltcG9ydCB7IGNvbXB1dGVQb3NpdGlvbiwgYXJyb3cgYXMgYXJyb3ckMiwgb2Zmc2V0IGFzIG9mZnNldCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBsaW1pdFNoaWZ0IGFzIGxpbWl0U2hpZnQkMSwgZmxpcCBhcyBmbGlwJDEsIHNpemUgYXMgc2l6ZSQxLCBhdXRvUGxhY2VtZW50IGFzIGF1dG9QbGFjZW1lbnQkMSwgaGlkZSBhcyBoaWRlJDEsIGlubGluZSBhcyBpbmxpbmUkMSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuZXhwb3J0IHsgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIHBsYXRmb3JtIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5cbnZhciBpbmRleCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7XG5cbi8vIEZvcmsgb2YgYGZhc3QtZGVlcC1lcXVhbGAgdGhhdCBvbmx5IGRvZXMgdGhlIGNvbXBhcmlzb25zIHdlIG5lZWQgYW5kIGNvbXBhcmVzXG4vLyBmdW5jdGlvbnNcbmZ1bmN0aW9uIGRlZXBFcXVhbChhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicgJiYgYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBsZXQgbGVuZ3RoO1xuICBsZXQgaTtcbiAgbGV0IGtleXM7XG4gIGlmIChhICYmIGIgJiYgdHlwZW9mIGEgPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgICBpZiAoIWRlZXBFcXVhbChhW2ldLCBiW2ldKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhhKTtcbiAgICBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICBpZiAobGVuZ3RoICE9PSBPYmplY3Qua2V5cyhiKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICBpZiAoIXt9Lmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5c1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZiAoa2V5ID09PSAnX293bmVyJyAmJiBhLiQkdHlwZW9mKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGEgIT09IGEgJiYgYiAhPT0gYjtcbn1cblxuZnVuY3Rpb24gZ2V0RFBSKGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgY29uc3Qgd2luID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgcmV0dXJuIHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG59XG5cbmZ1bmN0aW9uIHJvdW5kQnlEUFIoZWxlbWVudCwgdmFsdWUpIHtcbiAgY29uc3QgZHByID0gZ2V0RFBSKGVsZW1lbnQpO1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGRwcikgLyBkcHI7XG59XG5cbmZ1bmN0aW9uIHVzZUxhdGVzdFJlZih2YWx1ZSkge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYodmFsdWUpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZWY7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlRmxvYXRpbmdcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmcob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICByZWZlcmVuY2U6IGV4dGVybmFsUmVmZXJlbmNlLFxuICAgICAgZmxvYXRpbmc6IGV4dGVybmFsRmxvYXRpbmdcbiAgICB9ID0ge30sXG4gICAgdHJhbnNmb3JtID0gdHJ1ZSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZCxcbiAgICBvcGVuXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgeDogMCxcbiAgICB5OiAwLFxuICAgIHN0cmF0ZWd5LFxuICAgIHBsYWNlbWVudCxcbiAgICBtaWRkbGV3YXJlRGF0YToge30sXG4gICAgaXNQb3NpdGlvbmVkOiBmYWxzZVxuICB9KTtcbiAgY29uc3QgW2xhdGVzdE1pZGRsZXdhcmUsIHNldExhdGVzdE1pZGRsZXdhcmVdID0gUmVhY3QudXNlU3RhdGUobWlkZGxld2FyZSk7XG4gIGlmICghZGVlcEVxdWFsKGxhdGVzdE1pZGRsZXdhcmUsIG1pZGRsZXdhcmUpKSB7XG4gICAgc2V0TGF0ZXN0TWlkZGxld2FyZShtaWRkbGV3YXJlKTtcbiAgfVxuICBjb25zdCBbX3JlZmVyZW5jZSwgX3NldFJlZmVyZW5jZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW19mbG9hdGluZywgX3NldEZsb2F0aW5nXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBzZXRSZWZlcmVuY2UgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPT0gcmVmZXJlbmNlUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIF9zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgfVxuICB9LCBbXSk7XG4gIGNvbnN0IHNldEZsb2F0aW5nID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgaWYgKG5vZGUgIT09IGZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgX3NldEZsb2F0aW5nKG5vZGUpO1xuICAgIH1cbiAgfSwgW10pO1xuICBjb25zdCByZWZlcmVuY2VFbCA9IGV4dGVybmFsUmVmZXJlbmNlIHx8IF9yZWZlcmVuY2U7XG4gIGNvbnN0IGZsb2F0aW5nRWwgPSBleHRlcm5hbEZsb2F0aW5nIHx8IF9mbG9hdGluZztcbiAgY29uc3QgcmVmZXJlbmNlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZ1JlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgZGF0YVJlZiA9IFJlYWN0LnVzZVJlZihkYXRhKTtcbiAgY29uc3QgaGFzV2hpbGVFbGVtZW50c01vdW50ZWQgPSB3aGlsZUVsZW1lbnRzTW91bnRlZCAhPSBudWxsO1xuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZiA9IHVzZUxhdGVzdFJlZih3aGlsZUVsZW1lbnRzTW91bnRlZCk7XG4gIGNvbnN0IHBsYXRmb3JtUmVmID0gdXNlTGF0ZXN0UmVmKHBsYXRmb3JtKTtcbiAgY29uc3Qgb3BlblJlZiA9IHVzZUxhdGVzdFJlZihvcGVuKTtcbiAgY29uc3QgdXBkYXRlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghcmVmZXJlbmNlUmVmLmN1cnJlbnQgfHwgIWZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlOiBsYXRlc3RNaWRkbGV3YXJlXG4gICAgfTtcbiAgICBpZiAocGxhdGZvcm1SZWYuY3VycmVudCkge1xuICAgICAgY29uZmlnLnBsYXRmb3JtID0gcGxhdGZvcm1SZWYuY3VycmVudDtcbiAgICB9XG4gICAgY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZVJlZi5jdXJyZW50LCBmbG9hdGluZ1JlZi5jdXJyZW50LCBjb25maWcpLnRoZW4oZGF0YSA9PiB7XG4gICAgICBjb25zdCBmdWxsRGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgLy8gVGhlIGZsb2F0aW5nIGVsZW1lbnQncyBwb3NpdGlvbiBtYXkgYmUgcmVjb21wdXRlZCB3aGlsZSBpdCdzIGNsb3NlZFxuICAgICAgICAvLyBidXQgc3RpbGwgbW91bnRlZCAoc3VjaCBhcyB3aGVuIHRyYW5zaXRpb25pbmcgb3V0KS4gVG8gZW5zdXJlXG4gICAgICAgIC8vIGBpc1Bvc2l0aW9uZWRgIHdpbGwgYmUgYGZhbHNlYCBpbml0aWFsbHkgb24gdGhlIG5leHQgb3BlbiwgYXZvaWRcbiAgICAgICAgLy8gc2V0dGluZyBpdCB0byBgdHJ1ZWAgd2hlbiBgb3BlbiA9PT0gZmFsc2VgIChtdXN0IGJlIHNwZWNpZmllZCkuXG4gICAgICAgIGlzUG9zaXRpb25lZDogb3BlblJlZi5jdXJyZW50ICE9PSBmYWxzZVxuICAgICAgfTtcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiAhZGVlcEVxdWFsKGRhdGFSZWYuY3VycmVudCwgZnVsbERhdGEpKSB7XG4gICAgICAgIGRhdGFSZWYuY3VycmVudCA9IGZ1bGxEYXRhO1xuICAgICAgICBSZWFjdERPTS5mbHVzaFN5bmMoKCkgPT4ge1xuICAgICAgICAgIHNldERhdGEoZnVsbERhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW2xhdGVzdE1pZGRsZXdhcmUsIHBsYWNlbWVudCwgc3RyYXRlZ3ksIHBsYXRmb3JtUmVmLCBvcGVuUmVmXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAob3BlbiA9PT0gZmFsc2UgJiYgZGF0YVJlZi5jdXJyZW50LmlzUG9zaXRpb25lZCkge1xuICAgICAgZGF0YVJlZi5jdXJyZW50LmlzUG9zaXRpb25lZCA9IGZhbHNlO1xuICAgICAgc2V0RGF0YShkYXRhID0+ICh7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGlzUG9zaXRpb25lZDogZmFsc2VcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIFtvcGVuXSk7XG4gIGNvbnN0IGlzTW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfTtcbiAgfSwgW10pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKHJlZmVyZW5jZUVsKSByZWZlcmVuY2VSZWYuY3VycmVudCA9IHJlZmVyZW5jZUVsO1xuICAgIGlmIChmbG9hdGluZ0VsKSBmbG9hdGluZ1JlZi5jdXJyZW50ID0gZmxvYXRpbmdFbDtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgZmxvYXRpbmdFbCkge1xuICAgICAgaWYgKHdoaWxlRWxlbWVudHNNb3VudGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHdoaWxlRWxlbWVudHNNb3VudGVkUmVmLmN1cnJlbnQocmVmZXJlbmNlRWwsIGZsb2F0aW5nRWwsIHVwZGF0ZSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbCwgdXBkYXRlLCB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZiwgaGFzV2hpbGVFbGVtZW50c01vdW50ZWRdKTtcbiAgY29uc3QgcmVmcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZVJlZixcbiAgICBmbG9hdGluZzogZmxvYXRpbmdSZWYsXG4gICAgc2V0UmVmZXJlbmNlLFxuICAgIHNldEZsb2F0aW5nXG4gIH0pLCBbc2V0UmVmZXJlbmNlLCBzZXRGbG9hdGluZ10pO1xuICBjb25zdCBlbGVtZW50cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZUVsLFxuICAgIGZsb2F0aW5nOiBmbG9hdGluZ0VsXG4gIH0pLCBbcmVmZXJlbmNlRWwsIGZsb2F0aW5nRWxdKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LFxuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogMFxuICAgIH07XG4gICAgaWYgKCFlbGVtZW50cy5mbG9hdGluZykge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHggPSByb3VuZEJ5RFBSKGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLngpO1xuICAgIGNvbnN0IHkgPSByb3VuZEJ5RFBSKGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLnkpO1xuICAgIGlmICh0cmFuc2Zvcm0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmluaXRpYWxTdHlsZXMsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweClcIixcbiAgICAgICAgLi4uKGdldERQUihlbGVtZW50cy5mbG9hdGluZykgPj0gMS41ICYmIHtcbiAgICAgICAgICB3aWxsQ2hhbmdlOiAndHJhbnNmb3JtJ1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgIGxlZnQ6IHgsXG4gICAgICB0b3A6IHlcbiAgICB9O1xuICB9LCBbc3RyYXRlZ3ksIHRyYW5zZm9ybSwgZWxlbWVudHMuZmxvYXRpbmcsIGRhdGEueCwgZGF0YS55XSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgLi4uZGF0YSxcbiAgICB1cGRhdGUsXG4gICAgcmVmcyxcbiAgICBlbGVtZW50cyxcbiAgICBmbG9hdGluZ1N0eWxlc1xuICB9KSwgW2RhdGEsIHVwZGF0ZSwgcmVmcywgZWxlbWVudHMsIGZsb2F0aW5nU3R5bGVzXSk7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogVGhpcyB3cmFwcyB0aGUgY29yZSBgYXJyb3dgIG1pZGRsZXdhcmUgdG8gYWxsb3cgUmVhY3QgcmVmcyBhcyB0aGUgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyQxID0gb3B0aW9ucyA9PiB7XG4gIGZ1bmN0aW9uIGlzUmVmKHZhbHVlKSB7XG4gICAgcmV0dXJuIHt9Lmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjdXJyZW50Jyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXJyb3cnLFxuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZ1xuICAgICAgfSA9IHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucyhzdGF0ZSkgOiBvcHRpb25zO1xuICAgICAgaWYgKGVsZW1lbnQgJiYgaXNSZWYoZWxlbWVudCkpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuY3VycmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGFycm93JDIoe1xuICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudC5jdXJyZW50LFxuICAgICAgICAgICAgcGFkZGluZ1xuICAgICAgICAgIH0pLmZuKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gYXJyb3ckMih7XG4gICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICBwYWRkaW5nXG4gICAgICAgIH0pLmZuKHN0YXRlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4ub2Zmc2V0JDEob3B0aW9ucyksXG4gIG9wdGlvbnM6IFtvcHRpb25zLCBkZXBzXVxufSk7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IChvcHRpb25zLCBkZXBzKSA9PiAoe1xuICAuLi5zaGlmdCQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gKG9wdGlvbnMsIGRlcHMpID0+ICh7XG4gIC4uLmxpbWl0U2hpZnQkMShvcHRpb25zKSxcbiAgb3B0aW9uczogW29wdGlvbnMsIGRlcHNdXG59KTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4uZmxpcCQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4uc2l6ZSQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IChvcHRpb25zLCBkZXBzKSA9PiAoe1xuICAuLi5hdXRvUGxhY2VtZW50JDEob3B0aW9ucyksXG4gIG9wdGlvbnM6IFtvcHRpb25zLCBkZXBzXVxufSk7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gKG9wdGlvbnMsIGRlcHMpID0+ICh7XG4gIC4uLmhpZGUkMShvcHRpb25zKSxcbiAgb3B0aW9uczogW29wdGlvbnMsIGRlcHNdXG59KTtcblxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gKG9wdGlvbnMsIGRlcHMpID0+ICh7XG4gIC4uLmlubGluZSQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIFRoaXMgd3JhcHMgdGhlIGNvcmUgYGFycm93YCBtaWRkbGV3YXJlIHRvIGFsbG93IFJlYWN0IHJlZnMgYXMgdGhlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4uYXJyb3ckMShvcHRpb25zKSxcbiAgb3B0aW9uczogW29wdGlvbnMsIGRlcHNdXG59KTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSwgdXNlRmxvYXRpbmcgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUxheW91dEVmZmVjdCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzdG9wRXZlbnQsIGdldERvY3VtZW50LCBpc01vdXNlTGlrZVBvaW50ZXJUeXBlLCBjb250YWlucywgYWN0aXZlRWxlbWVudCwgaXNTYWZhcmksIGlzVHlwZWFibGVDb21ib2JveCwgaXNWaXJ0dWFsQ2xpY2ssIGlzVmlydHVhbFBvaW50ZXJFdmVudCwgZ2V0VGFyZ2V0LCBnZXRQbGF0Zm9ybSwgaXNUeXBlYWJsZUVsZW1lbnQsIGlzUmVhY3RFdmVudCwgaXNSb290RWxlbWVudCwgaXNFdmVudFRhcmdldFdpdGhpbiwgaXNNYWMsIGdldFVzZXJBZ2VudCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdC91dGlscyc7XG5pbXBvcnQgeyBmbG9vciwgZXZhbHVhdGUgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNFbGVtZW50LCBnZXROb2RlTmFtZSwgaXNIVE1MRWxlbWVudCwgZ2V0V2luZG93LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGdldFBhcmVudE5vZGUgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmltcG9ydCB7IHRhYmJhYmxlLCBpc1RhYmJhYmxlIH0gZnJvbSAndGFiYmFibGUnO1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IGdldE92ZXJmbG93QW5jZXN0b3JzLCB1c2VGbG9hdGluZyBhcyB1c2VGbG9hdGluZyQxLCBvZmZzZXQsIGRldGVjdE92ZXJmbG93IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSc7XG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QtZG9tJztcblxuLyoqXG4gKiBNZXJnZXMgYW4gYXJyYXkgb2YgcmVmcyBpbnRvIGEgc2luZ2xlIG1lbW9pemVkIGNhbGxiYWNrIHJlZiBvciBgbnVsbGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvcmVhY3QtdXRpbHMjdXNlbWVyZ2VyZWZzXG4gKi9cbmZ1bmN0aW9uIHVzZU1lcmdlUmVmcyhyZWZzKSB7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocmVmcy5ldmVyeShyZWYgPT4gcmVmID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlID0+IHtcbiAgICAgIHJlZnMuZm9yRWFjaChyZWYgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJlZih2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVmICE9IG51bGwpIHtcbiAgICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgcmVmcyk7XG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tdWkvbWF0ZXJpYWwtdWkvaXNzdWVzLzQxMTkwI2lzc3VlY29tbWVudC0yMDQwODczMzc5XG5jb25zdCBTYWZlUmVhY3QgPSB7XG4gIC4uLlJlYWN0XG59O1xuXG5jb25zdCB1c2VJbnNlcnRpb25FZmZlY3QgPSBTYWZlUmVhY3QudXNlSW5zZXJ0aW9uRWZmZWN0O1xuY29uc3QgdXNlU2FmZUluc2VydGlvbkVmZmVjdCA9IHVzZUluc2VydGlvbkVmZmVjdCB8fCAoZm4gPT4gZm4oKSk7XG5mdW5jdGlvbiB1c2VFZmZlY3RFdmVudChjYWxsYmFjaykge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYoKCkgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNhbGwgYW4gZXZlbnQgaGFuZGxlciB3aGlsZSByZW5kZXJpbmcuJyk7XG4gICAgfVxuICB9KTtcbiAgdXNlU2FmZUluc2VydGlvbkVmZmVjdCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSBjYWxsYmFjaztcbiAgfSk7XG4gIHJldHVybiBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5jdXJyZW50KC4uLmFyZ3MpO1xuICB9LCBbXSk7XG59XG5cbmNvbnN0IEFSUk9XX1VQID0gJ0Fycm93VXAnO1xuY29uc3QgQVJST1dfRE9XTiA9ICdBcnJvd0Rvd24nO1xuY29uc3QgQVJST1dfTEVGVCA9ICdBcnJvd0xlZnQnO1xuY29uc3QgQVJST1dfUklHSFQgPSAnQXJyb3dSaWdodCc7XG5mdW5jdGlvbiBpc0RpZmZlcmVudFJvdyhpbmRleCwgY29scywgcHJldlJvdykge1xuICByZXR1cm4gTWF0aC5mbG9vcihpbmRleCAvIGNvbHMpICE9PSBwcmV2Um93O1xufVxuZnVuY3Rpb24gaXNJbmRleE91dE9mQm91bmRzKGxpc3RSZWYsIGluZGV4KSB7XG4gIHJldHVybiBpbmRleCA8IDAgfHwgaW5kZXggPj0gbGlzdFJlZi5jdXJyZW50Lmxlbmd0aDtcbn1cbmZ1bmN0aW9uIGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlcykge1xuICByZXR1cm4gZmluZE5vbkRpc2FibGVkSW5kZXgobGlzdFJlZiwge1xuICAgIGRpc2FibGVkSW5kaWNlc1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldE1heEluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlcykge1xuICByZXR1cm4gZmluZE5vbkRpc2FibGVkSW5kZXgobGlzdFJlZiwge1xuICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICBzdGFydGluZ0luZGV4OiBsaXN0UmVmLmN1cnJlbnQubGVuZ3RoLFxuICAgIGRpc2FibGVkSW5kaWNlc1xuICB9KTtcbn1cbmZ1bmN0aW9uIGZpbmROb25EaXNhYmxlZEluZGV4KGxpc3RSZWYsIF90ZW1wKSB7XG4gIGxldCB7XG4gICAgc3RhcnRpbmdJbmRleCA9IC0xLFxuICAgIGRlY3JlbWVudCA9IGZhbHNlLFxuICAgIGRpc2FibGVkSW5kaWNlcyxcbiAgICBhbW91bnQgPSAxXG4gIH0gPSBfdGVtcCA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDtcbiAgY29uc3QgbGlzdCA9IGxpc3RSZWYuY3VycmVudDtcbiAgbGV0IGluZGV4ID0gc3RhcnRpbmdJbmRleDtcbiAgZG8ge1xuICAgIGluZGV4ICs9IGRlY3JlbWVudCA/IC1hbW91bnQgOiBhbW91bnQ7XG4gIH0gd2hpbGUgKGluZGV4ID49IDAgJiYgaW5kZXggPD0gbGlzdC5sZW5ndGggLSAxICYmIGlzRGlzYWJsZWQobGlzdCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykpO1xuICByZXR1cm4gaW5kZXg7XG59XG5mdW5jdGlvbiBnZXRHcmlkTmF2aWdhdGVkSW5kZXgoZWxlbWVudHNSZWYsIF9yZWYpIHtcbiAgbGV0IHtcbiAgICBldmVudCxcbiAgICBvcmllbnRhdGlvbixcbiAgICBsb29wLFxuICAgIGNvbHMsXG4gICAgZGlzYWJsZWRJbmRpY2VzLFxuICAgIG1pbkluZGV4LFxuICAgIG1heEluZGV4LFxuICAgIHByZXZJbmRleCxcbiAgICBzdG9wRXZlbnQ6IHN0b3AgPSBmYWxzZVxuICB9ID0gX3JlZjtcbiAgbGV0IG5leHRJbmRleCA9IHByZXZJbmRleDtcbiAgaWYgKGV2ZW50LmtleSA9PT0gQVJST1dfVVApIHtcbiAgICBzdG9wICYmIHN0b3BFdmVudChldmVudCk7XG4gICAgaWYgKHByZXZJbmRleCA9PT0gLTEpIHtcbiAgICAgIG5leHRJbmRleCA9IG1heEluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICBzdGFydGluZ0luZGV4OiBuZXh0SW5kZXgsXG4gICAgICAgIGFtb3VudDogY29scyxcbiAgICAgICAgZGVjcmVtZW50OiB0cnVlLFxuICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgIH0pO1xuICAgICAgaWYgKGxvb3AgJiYgKHByZXZJbmRleCAtIGNvbHMgPCBtaW5JbmRleCB8fCBuZXh0SW5kZXggPCAwKSkge1xuICAgICAgICBjb25zdCBjb2wgPSBwcmV2SW5kZXggJSBjb2xzO1xuICAgICAgICBjb25zdCBtYXhDb2wgPSBtYXhJbmRleCAlIGNvbHM7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IG1heEluZGV4IC0gKG1heENvbCAtIGNvbCk7XG4gICAgICAgIGlmIChtYXhDb2wgPT09IGNvbCkge1xuICAgICAgICAgIG5leHRJbmRleCA9IG1heEluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHRJbmRleCA9IG1heENvbCA+IGNvbCA/IG9mZnNldCA6IG9mZnNldCAtIGNvbHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzSW5kZXhPdXRPZkJvdW5kcyhlbGVtZW50c1JlZiwgbmV4dEluZGV4KSkge1xuICAgICAgbmV4dEluZGV4ID0gcHJldkluZGV4O1xuICAgIH1cbiAgfVxuICBpZiAoZXZlbnQua2V5ID09PSBBUlJPV19ET1dOKSB7XG4gICAgc3RvcCAmJiBzdG9wRXZlbnQoZXZlbnQpO1xuICAgIGlmIChwcmV2SW5kZXggPT09IC0xKSB7XG4gICAgICBuZXh0SW5kZXggPSBtaW5JbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4LFxuICAgICAgICBhbW91bnQ6IGNvbHMsXG4gICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgfSk7XG4gICAgICBpZiAobG9vcCAmJiBwcmV2SW5kZXggKyBjb2xzID4gbWF4SW5kZXgpIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggJSBjb2xzIC0gY29scyxcbiAgICAgICAgICBhbW91bnQ6IGNvbHMsXG4gICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNJbmRleE91dE9mQm91bmRzKGVsZW1lbnRzUmVmLCBuZXh0SW5kZXgpKSB7XG4gICAgICBuZXh0SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtYWlucyBvbiB0aGUgc2FtZSByb3cvY29sdW1uLlxuICBpZiAob3JpZW50YXRpb24gPT09ICdib3RoJykge1xuICAgIGNvbnN0IHByZXZSb3cgPSBmbG9vcihwcmV2SW5kZXggLyBjb2xzKTtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBBUlJPV19SSUdIVCkge1xuICAgICAgc3RvcCAmJiBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgaWYgKHByZXZJbmRleCAlIGNvbHMgIT09IGNvbHMgLSAxKSB7XG4gICAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4LFxuICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGxvb3AgJiYgaXNEaWZmZXJlbnRSb3cobmV4dEluZGV4LCBjb2xzLCBwcmV2Um93KSkge1xuICAgICAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggLSBwcmV2SW5kZXggJSBjb2xzIC0gMSxcbiAgICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGxvb3ApIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggLSBwcmV2SW5kZXggJSBjb2xzIC0gMSxcbiAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNEaWZmZXJlbnRSb3cobmV4dEluZGV4LCBjb2xzLCBwcmV2Um93KSkge1xuICAgICAgICBuZXh0SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09IEFSUk9XX0xFRlQpIHtcbiAgICAgIHN0b3AgJiYgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIGlmIChwcmV2SW5kZXggJSBjb2xzICE9PSAwKSB7XG4gICAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4LFxuICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChsb29wICYmIGlzRGlmZmVyZW50Um93KG5leHRJbmRleCwgY29scywgcHJldlJvdykpIHtcbiAgICAgICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4ICsgKGNvbHMgLSBwcmV2SW5kZXggJSBjb2xzKSxcbiAgICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGxvb3ApIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggKyAoY29scyAtIHByZXZJbmRleCAlIGNvbHMpLFxuICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNEaWZmZXJlbnRSb3cobmV4dEluZGV4LCBjb2xzLCBwcmV2Um93KSkge1xuICAgICAgICBuZXh0SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGxhc3RSb3cgPSBmbG9vcihtYXhJbmRleCAvIGNvbHMpID09PSBwcmV2Um93O1xuICAgIGlmIChpc0luZGV4T3V0T2ZCb3VuZHMoZWxlbWVudHNSZWYsIG5leHRJbmRleCkpIHtcbiAgICAgIGlmIChsb29wICYmIGxhc3RSb3cpIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZXZlbnQua2V5ID09PSBBUlJPV19MRUZUID8gbWF4SW5kZXggOiBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IHByZXZJbmRleCAtIHByZXZJbmRleCAlIGNvbHMgLSAxLFxuICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRJbmRleCA9IHByZXZJbmRleDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5leHRJbmRleDtcbn1cblxuLyoqIEZvciBlYWNoIGNlbGwgaW5kZXgsIGdldHMgdGhlIGl0ZW0gaW5kZXggdGhhdCBvY2N1cGllcyB0aGF0IGNlbGwgKi9cbmZ1bmN0aW9uIGJ1aWxkQ2VsbE1hcChzaXplcywgY29scywgZGVuc2UpIHtcbiAgY29uc3QgY2VsbE1hcCA9IFtdO1xuICBsZXQgc3RhcnRJbmRleCA9IDA7XG4gIHNpemVzLmZvckVhY2goKF9yZWYyLCBpbmRleCkgPT4ge1xuICAgIGxldCB7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBfcmVmMjtcbiAgICBpZiAod2lkdGggPiBjb2xzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIltGbG9hdGluZyBVSV06IEludmFsaWQgZ3JpZCAtIGl0ZW0gd2lkdGggYXQgaW5kZXggXCIgKyBpbmRleCArIFwiIGlzIGdyZWF0ZXIgdGhhbiBncmlkIGNvbHVtbnNcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBpdGVtUGxhY2VkID0gZmFsc2U7XG4gICAgaWYgKGRlbnNlKSB7XG4gICAgICBzdGFydEluZGV4ID0gMDtcbiAgICB9XG4gICAgd2hpbGUgKCFpdGVtUGxhY2VkKSB7XG4gICAgICBjb25zdCB0YXJnZXRDZWxscyA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaGVpZ2h0OyBqKyspIHtcbiAgICAgICAgICB0YXJnZXRDZWxscy5wdXNoKHN0YXJ0SW5kZXggKyBpICsgaiAqIGNvbHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnRJbmRleCAlIGNvbHMgKyB3aWR0aCA8PSBjb2xzICYmIHRhcmdldENlbGxzLmV2ZXJ5KGNlbGwgPT4gY2VsbE1hcFtjZWxsXSA9PSBudWxsKSkge1xuICAgICAgICB0YXJnZXRDZWxscy5mb3JFYWNoKGNlbGwgPT4ge1xuICAgICAgICAgIGNlbGxNYXBbY2VsbF0gPSBpbmRleDtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW1QbGFjZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRJbmRleCsrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gY29udmVydCBpbnRvIGEgbm9uLXNwYXJzZSBhcnJheVxuICByZXR1cm4gWy4uLmNlbGxNYXBdO1xufVxuXG4vKiogR2V0cyBjZWxsIGluZGV4IG9mIGFuIGl0ZW0ncyBjb3JuZXIgb3IgLTEgd2hlbiBpbmRleCBpcyAtMS4gKi9cbmZ1bmN0aW9uIGdldENlbGxJbmRleE9mQ29ybmVyKGluZGV4LCBzaXplcywgY2VsbE1hcCwgY29scywgY29ybmVyKSB7XG4gIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiAtMTtcbiAgY29uc3QgZmlyc3RDZWxsSW5kZXggPSBjZWxsTWFwLmluZGV4T2YoaW5kZXgpO1xuICBjb25zdCBzaXplSXRlbSA9IHNpemVzW2luZGV4XTtcbiAgc3dpdGNoIChjb3JuZXIpIHtcbiAgICBjYXNlICd0bCc6XG4gICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXg7XG4gICAgY2FzZSAndHInOlxuICAgICAgaWYgKCFzaXplSXRlbSkge1xuICAgICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXggKyBzaXplSXRlbS53aWR0aCAtIDE7XG4gICAgY2FzZSAnYmwnOlxuICAgICAgaWYgKCFzaXplSXRlbSkge1xuICAgICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXggKyAoc2l6ZUl0ZW0uaGVpZ2h0IC0gMSkgKiBjb2xzO1xuICAgIGNhc2UgJ2JyJzpcbiAgICAgIHJldHVybiBjZWxsTWFwLmxhc3RJbmRleE9mKGluZGV4KTtcbiAgfVxufVxuXG4vKiogR2V0cyBhbGwgY2VsbCBpbmRpY2VzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgc3BlY2lmaWVkIGluZGljZXMgKi9cbmZ1bmN0aW9uIGdldENlbGxJbmRpY2VzKGluZGljZXMsIGNlbGxNYXApIHtcbiAgcmV0dXJuIGNlbGxNYXAuZmxhdE1hcCgoaW5kZXgsIGNlbGxJbmRleCkgPT4gaW5kaWNlcy5pbmNsdWRlcyhpbmRleCkgPyBbY2VsbEluZGV4XSA6IFtdKTtcbn1cbmZ1bmN0aW9uIGlzRGlzYWJsZWQobGlzdCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykge1xuICBpZiAoZGlzYWJsZWRJbmRpY2VzKSB7XG4gICAgcmV0dXJuIGRpc2FibGVkSW5kaWNlcy5pbmNsdWRlcyhpbmRleCk7XG4gIH1cbiAgY29uc3QgZWxlbWVudCA9IGxpc3RbaW5kZXhdO1xuICByZXR1cm4gZWxlbWVudCA9PSBudWxsIHx8IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykgPT09ICd0cnVlJztcbn1cblxubGV0IHJhZklkID0gMDtcbmZ1bmN0aW9uIGVucXVldWVGb2N1cyhlbCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBwcmV2ZW50U2Nyb2xsID0gZmFsc2UsXG4gICAgY2FuY2VsUHJldmlvdXMgPSB0cnVlLFxuICAgIHN5bmMgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY2FuY2VsUHJldmlvdXMgJiYgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICBjb25zdCBleGVjID0gKCkgPT4gZWwgPT0gbnVsbCA/IHZvaWQgMCA6IGVsLmZvY3VzKHtcbiAgICBwcmV2ZW50U2Nyb2xsXG4gIH0pO1xuICBpZiAoc3luYykge1xuICAgIGV4ZWMoKTtcbiAgfSBlbHNlIHtcbiAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShleGVjKTtcbiAgfVxufVxuXG52YXIgaW5kZXggPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gdXNlTGF5b3V0RWZmZWN0IDogdXNlRWZmZWN0O1xuXG5mdW5jdGlvbiBzb3J0QnlEb2N1bWVudFBvc2l0aW9uKGEsIGIpIHtcbiAgY29uc3QgcG9zaXRpb24gPSBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpO1xuICBpZiAocG9zaXRpb24gJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyB8fCBwb3NpdGlvbiAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmIChwb3NpdGlvbiAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HIHx8IHBvc2l0aW9uICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuZnVuY3Rpb24gYXJlTWFwc0VxdWFsKG1hcDEsIG1hcDIpIHtcbiAgaWYgKG1hcDEuc2l6ZSAhPT0gbWFwMi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIG1hcDEuZW50cmllcygpKSB7XG4gICAgaWYgKHZhbHVlICE9PSBtYXAyLmdldChrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuY29uc3QgRmxvYXRpbmdMaXN0Q29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgcmVnaXN0ZXI6ICgpID0+IHt9LFxuICB1bnJlZ2lzdGVyOiAoKSA9PiB7fSxcbiAgbWFwOiAvKiNfX1BVUkVfXyovbmV3IE1hcCgpLFxuICBlbGVtZW50c1JlZjoge1xuICAgIGN1cnJlbnQ6IFtdXG4gIH1cbn0pO1xuLyoqXG4gKiBQcm92aWRlcyBjb250ZXh0IGZvciBhIGxpc3Qgb2YgaXRlbXMgd2l0aGluIHRoZSBmbG9hdGluZyBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nTGlzdFxuICovXG5mdW5jdGlvbiBGbG9hdGluZ0xpc3QocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGVsZW1lbnRzUmVmLFxuICAgIGxhYmVsc1JlZlxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFttYXAsIHNldE1hcF0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PiBuZXcgTWFwKCkpO1xuICBjb25zdCByZWdpc3RlciA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIHNldE1hcChwcmV2TWFwID0+IG5ldyBNYXAocHJldk1hcCkuc2V0KG5vZGUsIG51bGwpKTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnJlZ2lzdGVyID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgc2V0TWFwKHByZXZNYXAgPT4ge1xuICAgICAgY29uc3QgbWFwID0gbmV3IE1hcChwcmV2TWFwKTtcbiAgICAgIG1hcC5kZWxldGUobm9kZSk7XG4gICAgICByZXR1cm4gbWFwO1xuICAgIH0pO1xuICB9LCBbXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBjb25zdCBuZXdNYXAgPSBuZXcgTWFwKG1hcCk7XG4gICAgY29uc3Qgbm9kZXMgPSBBcnJheS5mcm9tKG5ld01hcC5rZXlzKCkpLnNvcnQoc29ydEJ5RG9jdW1lbnRQb3NpdGlvbik7XG4gICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIG5ld01hcC5zZXQobm9kZSwgaW5kZXgpO1xuICAgIH0pO1xuICAgIGlmICghYXJlTWFwc0VxdWFsKG1hcCwgbmV3TWFwKSkge1xuICAgICAgc2V0TWFwKG5ld01hcCk7XG4gICAgfVxuICB9LCBbbWFwXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGbG9hdGluZ0xpc3RDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAgIHJlZ2lzdGVyLFxuICAgICAgdW5yZWdpc3RlcixcbiAgICAgIG1hcCxcbiAgICAgIGVsZW1lbnRzUmVmLFxuICAgICAgbGFiZWxzUmVmXG4gICAgfSksIFtyZWdpc3RlciwgdW5yZWdpc3RlciwgbWFwLCBlbGVtZW50c1JlZiwgbGFiZWxzUmVmXSlcbiAgfSwgY2hpbGRyZW4pO1xufVxuLyoqXG4gKiBVc2VkIHRvIHJlZ2lzdGVyIGEgbGlzdCBpdGVtIGFuZCBpdHMgaW5kZXggKERPTSBwb3NpdGlvbikgaW4gdGhlXG4gKiBgRmxvYXRpbmdMaXN0YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ0xpc3QjdXNlbGlzdGl0ZW1cbiAqL1xuZnVuY3Rpb24gdXNlTGlzdEl0ZW0ocHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBsYWJlbFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHtcbiAgICByZWdpc3RlcixcbiAgICB1bnJlZ2lzdGVyLFxuICAgIG1hcCxcbiAgICBlbGVtZW50c1JlZixcbiAgICBsYWJlbHNSZWZcbiAgfSA9IFJlYWN0LnVzZUNvbnRleHQoRmxvYXRpbmdMaXN0Q29udGV4dCk7XG4gIGNvbnN0IFtpbmRleCQxLCBzZXRJbmRleF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgY29tcG9uZW50UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBjb21wb25lbnRSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgaWYgKGluZGV4JDEgIT09IG51bGwpIHtcbiAgICAgIGVsZW1lbnRzUmVmLmN1cnJlbnRbaW5kZXgkMV0gPSBub2RlO1xuICAgICAgaWYgKGxhYmVsc1JlZikge1xuICAgICAgICB2YXIgX25vZGUkdGV4dENvbnRlbnQ7XG4gICAgICAgIGNvbnN0IGlzTGFiZWxEZWZpbmVkID0gbGFiZWwgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgbGFiZWxzUmVmLmN1cnJlbnRbaW5kZXgkMV0gPSBpc0xhYmVsRGVmaW5lZCA/IGxhYmVsIDogKF9ub2RlJHRleHRDb250ZW50ID0gbm9kZSA9PSBudWxsID8gdm9pZCAwIDogbm9kZS50ZXh0Q29udGVudCkgIT0gbnVsbCA/IF9ub2RlJHRleHRDb250ZW50IDogbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpbmRleCQxLCBlbGVtZW50c1JlZiwgbGFiZWxzUmVmLCBsYWJlbF0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbXBvbmVudFJlZi5jdXJyZW50O1xuICAgIGlmIChub2RlKSB7XG4gICAgICByZWdpc3Rlcihub2RlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHVucmVnaXN0ZXIobm9kZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW3JlZ2lzdGVyLCB1bnJlZ2lzdGVyXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IGNvbXBvbmVudFJlZi5jdXJyZW50ID8gbWFwLmdldChjb21wb25lbnRSZWYuY3VycmVudCkgOiBudWxsO1xuICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICBzZXRJbmRleChpbmRleCk7XG4gICAgfVxuICB9LCBbbWFwXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmLFxuICAgIGluZGV4OiBpbmRleCQxID09IG51bGwgPyAtMSA6IGluZGV4JDFcbiAgfSksIFtpbmRleCQxLCByZWZdKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVySnN4KHJlbmRlciwgY29tcHV0ZWRQcm9wcykge1xuICBpZiAodHlwZW9mIHJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiByZW5kZXIoY29tcHV0ZWRQcm9wcyk7XG4gIH1cbiAgaWYgKHJlbmRlcikge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KHJlbmRlciwgY29tcHV0ZWRQcm9wcyk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIGNvbXB1dGVkUHJvcHMpO1xufVxuY29uc3QgQ29tcG9zaXRlQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgYWN0aXZlSW5kZXg6IDAsXG4gIG9uTmF2aWdhdGU6ICgpID0+IHt9XG59KTtcbmNvbnN0IGhvcml6b250YWxLZXlzID0gW0FSUk9XX0xFRlQsIEFSUk9XX1JJR0hUXTtcbmNvbnN0IHZlcnRpY2FsS2V5cyA9IFtBUlJPV19VUCwgQVJST1dfRE9XTl07XG5jb25zdCBhbGxLZXlzID0gWy4uLmhvcml6b250YWxLZXlzLCAuLi52ZXJ0aWNhbEtleXNdO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzaW5nbGUgdGFiIHN0b3Agd2hvc2UgaXRlbXMgYXJlIG5hdmlnYXRlZCBieSBhcnJvdyBrZXlzLCB3aGljaFxuICogcHJvdmlkZXMgbGlzdCBuYXZpZ2F0aW9uIG91dHNpZGUgb2YgZmxvYXRpbmcgZWxlbWVudCBjb250ZXh0cy5cbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCB0byBlbmFibGUgbmF2aWdhdGlvbiBvZiBhIGxpc3Qgb2YgaXRlbXMgdGhhdCBhcmVu4oCZdCBwYXJ0IG9mIGFcbiAqIGZsb2F0aW5nIGVsZW1lbnQuIEEgbWVudWJhciBpcyBhbiBleGFtcGxlIG9mIGEgY29tcG9zaXRlLCB3aXRoIGVhY2ggcmVmZXJlbmNlXG4gKiBlbGVtZW50IGJlaW5nIGFuIGl0ZW0uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvQ29tcG9zaXRlXG4gKi9cbmNvbnN0IENvbXBvc2l0ZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIENvbXBvc2l0ZShwcm9wcywgZm9yd2FyZGVkUmVmKSB7XG4gIGNvbnN0IHtcbiAgICByZW5kZXIsXG4gICAgb3JpZW50YXRpb24gPSAnYm90aCcsXG4gICAgbG9vcCA9IHRydWUsXG4gICAgY29scyA9IDEsXG4gICAgZGlzYWJsZWRJbmRpY2VzLFxuICAgIGFjdGl2ZUluZGV4OiBleHRlcm5hbEFjdGl2ZUluZGV4LFxuICAgIG9uTmF2aWdhdGU6IGV4dGVybmFsU2V0QWN0aXZlSW5kZXgsXG4gICAgaXRlbVNpemVzLFxuICAgIGRlbnNlID0gZmFsc2UsXG4gICAgLi4uZG9tUHJvcHNcbiAgfSA9IHByb3BzO1xuICBjb25zdCBbaW50ZXJuYWxBY3RpdmVJbmRleCwgaW50ZXJuYWxTZXRBY3RpdmVJbmRleF0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgY29uc3QgYWN0aXZlSW5kZXggPSBleHRlcm5hbEFjdGl2ZUluZGV4ICE9IG51bGwgPyBleHRlcm5hbEFjdGl2ZUluZGV4IDogaW50ZXJuYWxBY3RpdmVJbmRleDtcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUVmZmVjdEV2ZW50KGV4dGVybmFsU2V0QWN0aXZlSW5kZXggIT0gbnVsbCA/IGV4dGVybmFsU2V0QWN0aXZlSW5kZXggOiBpbnRlcm5hbFNldEFjdGl2ZUluZGV4KTtcbiAgY29uc3QgZWxlbWVudHNSZWYgPSBSZWFjdC51c2VSZWYoW10pO1xuICBjb25zdCByZW5kZXJFbGVtZW50UHJvcHMgPSByZW5kZXIgJiYgdHlwZW9mIHJlbmRlciAhPT0gJ2Z1bmN0aW9uJyA/IHJlbmRlci5wcm9wcyA6IHt9O1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgYWN0aXZlSW5kZXgsXG4gICAgb25OYXZpZ2F0ZVxuICB9KSwgW2FjdGl2ZUluZGV4LCBvbk5hdmlnYXRlXSk7XG4gIGNvbnN0IGlzR3JpZCA9IGNvbHMgPiAxO1xuICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgaWYgKCFhbGxLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHJldHVybjtcbiAgICBsZXQgbmV4dEluZGV4ID0gYWN0aXZlSW5kZXg7XG4gICAgY29uc3QgbWluSW5kZXggPSBnZXRNaW5JbmRleChlbGVtZW50c1JlZiwgZGlzYWJsZWRJbmRpY2VzKTtcbiAgICBjb25zdCBtYXhJbmRleCA9IGdldE1heEluZGV4KGVsZW1lbnRzUmVmLCBkaXNhYmxlZEluZGljZXMpO1xuICAgIGlmIChpc0dyaWQpIHtcbiAgICAgIGNvbnN0IHNpemVzID0gaXRlbVNpemVzIHx8IEFycmF5LmZyb20oe1xuICAgICAgICBsZW5ndGg6IGVsZW1lbnRzUmVmLmN1cnJlbnQubGVuZ3RoXG4gICAgICB9LCAoKSA9PiAoe1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KSk7XG4gICAgICAvLyBUbyBjYWxjdWxhdGUgbW92ZW1lbnRzIG9uIHRoZSBncmlkLCB3ZSB1c2UgaHlwb3RoZXRpY2FsIGNlbGwgaW5kaWNlc1xuICAgICAgLy8gYXMgaWYgZXZlcnkgaXRlbSB3YXMgMXgxLCB0aGVuIGNvbnZlcnQgYmFjayB0byByZWFsIGluZGljZXMuXG4gICAgICBjb25zdCBjZWxsTWFwID0gYnVpbGRDZWxsTWFwKHNpemVzLCBjb2xzLCBkZW5zZSk7XG4gICAgICBjb25zdCBtaW5HcmlkSW5kZXggPSBjZWxsTWFwLmZpbmRJbmRleChpbmRleCA9PiBpbmRleCAhPSBudWxsICYmICFpc0Rpc2FibGVkKGVsZW1lbnRzUmVmLmN1cnJlbnQsIGluZGV4LCBkaXNhYmxlZEluZGljZXMpKTtcbiAgICAgIC8vIGxhc3QgZW5hYmxlZCBpbmRleFxuICAgICAgY29uc3QgbWF4R3JpZEluZGV4ID0gY2VsbE1hcC5yZWR1Y2UoKGZvdW5kSW5kZXgsIGluZGV4LCBjZWxsSW5kZXgpID0+IGluZGV4ICE9IG51bGwgJiYgIWlzRGlzYWJsZWQoZWxlbWVudHNSZWYuY3VycmVudCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykgPyBjZWxsSW5kZXggOiBmb3VuZEluZGV4LCAtMSk7XG4gICAgICBuZXh0SW5kZXggPSBjZWxsTWFwW2dldEdyaWROYXZpZ2F0ZWRJbmRleCh7XG4gICAgICAgIGN1cnJlbnQ6IGNlbGxNYXAubWFwKGl0ZW1JbmRleCA9PiBpdGVtSW5kZXggPyBlbGVtZW50c1JlZi5jdXJyZW50W2l0ZW1JbmRleF0gOiBudWxsKVxuICAgICAgfSwge1xuICAgICAgICBldmVudCxcbiAgICAgICAgb3JpZW50YXRpb24sXG4gICAgICAgIGxvb3AsXG4gICAgICAgIGNvbHMsXG4gICAgICAgIC8vIHRyZWF0IHVuZGVmaW5lZCAoZW1wdHkgZ3JpZCBzcGFjZXMpIGFzIGRpc2FibGVkIGluZGljZXMgc28gd2VcbiAgICAgICAgLy8gZG9uJ3QgZW5kIHVwIGluIHRoZW1cbiAgICAgICAgZGlzYWJsZWRJbmRpY2VzOiBnZXRDZWxsSW5kaWNlcyhbLi4uKGRpc2FibGVkSW5kaWNlcyB8fCBlbGVtZW50c1JlZi5jdXJyZW50Lm1hcCgoXywgaW5kZXgpID0+IGlzRGlzYWJsZWQoZWxlbWVudHNSZWYuY3VycmVudCwgaW5kZXgpID8gaW5kZXggOiB1bmRlZmluZWQpKSwgdW5kZWZpbmVkXSwgY2VsbE1hcCksXG4gICAgICAgIG1pbkluZGV4OiBtaW5HcmlkSW5kZXgsXG4gICAgICAgIG1heEluZGV4OiBtYXhHcmlkSW5kZXgsXG4gICAgICAgIHByZXZJbmRleDogZ2V0Q2VsbEluZGV4T2ZDb3JuZXIoYWN0aXZlSW5kZXggPiBtYXhJbmRleCA/IG1pbkluZGV4IDogYWN0aXZlSW5kZXgsIHNpemVzLCBjZWxsTWFwLCBjb2xzLFxuICAgICAgICAvLyB1c2UgYSBjb3JuZXIgbWF0Y2hpbmcgdGhlIGVkZ2UgY2xvc2VzdCB0byB0aGUgZGlyZWN0aW9uIHdlJ3JlXG4gICAgICAgIC8vIG1vdmluZyBpbiBzbyB3ZSBkb24ndCBlbmQgdXAgaW4gdGhlIHNhbWUgaXRlbS4gUHJlZmVyXG4gICAgICAgIC8vIHRvcC9sZWZ0IG92ZXIgYm90dG9tL3JpZ2h0LlxuICAgICAgICBldmVudC5rZXkgPT09IEFSUk9XX0RPV04gPyAnYmwnIDogZXZlbnQua2V5ID09PSBBUlJPV19SSUdIVCA/ICd0cicgOiAndGwnKVxuICAgICAgfSldOyAvLyBuYXZpZ2F0ZWQgY2VsbCB3aWxsIG5ldmVyIGJlIG51bGxpc2hcbiAgICB9XG4gICAgY29uc3QgdG9FbmRLZXlzID0ge1xuICAgICAgaG9yaXpvbnRhbDogW0FSUk9XX1JJR0hUXSxcbiAgICAgIHZlcnRpY2FsOiBbQVJST1dfRE9XTl0sXG4gICAgICBib3RoOiBbQVJST1dfUklHSFQsIEFSUk9XX0RPV05dXG4gICAgfVtvcmllbnRhdGlvbl07XG4gICAgY29uc3QgdG9TdGFydEtleXMgPSB7XG4gICAgICBob3Jpem9udGFsOiBbQVJST1dfTEVGVF0sXG4gICAgICB2ZXJ0aWNhbDogW0FSUk9XX1VQXSxcbiAgICAgIGJvdGg6IFtBUlJPV19MRUZULCBBUlJPV19VUF1cbiAgICB9W29yaWVudGF0aW9uXTtcbiAgICBjb25zdCBwcmV2ZW50ZWRLZXlzID0gaXNHcmlkID8gYWxsS2V5cyA6IHtcbiAgICAgIGhvcml6b250YWw6IGhvcml6b250YWxLZXlzLFxuICAgICAgdmVydGljYWw6IHZlcnRpY2FsS2V5cyxcbiAgICAgIGJvdGg6IGFsbEtleXNcbiAgICB9W29yaWVudGF0aW9uXTtcbiAgICBpZiAobmV4dEluZGV4ID09PSBhY3RpdmVJbmRleCAmJiBbLi4udG9FbmRLZXlzLCAuLi50b1N0YXJ0S2V5c10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgaWYgKGxvb3AgJiYgbmV4dEluZGV4ID09PSBtYXhJbmRleCAmJiB0b0VuZEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICBuZXh0SW5kZXggPSBtaW5JbmRleDtcbiAgICAgIH0gZWxzZSBpZiAobG9vcCAmJiBuZXh0SW5kZXggPT09IG1pbkluZGV4ICYmIHRvU3RhcnRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgbmV4dEluZGV4ID0gbWF4SW5kZXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICBkZWNyZW1lbnQ6IHRvU3RhcnRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSksXG4gICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobmV4dEluZGV4ICE9PSBhY3RpdmVJbmRleCAmJiAhaXNJbmRleE91dE9mQm91bmRzKGVsZW1lbnRzUmVmLCBuZXh0SW5kZXgpKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmIChwcmV2ZW50ZWRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIG9uTmF2aWdhdGUobmV4dEluZGV4KTtcblxuICAgICAgLy8gV2FpdCBmb3IgRm9jdXNNYW5hZ2VyIGByZXR1cm5Gb2N1c2AgdG8gZXhlY3V0ZS5cbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgZW5xdWV1ZUZvY3VzKGVsZW1lbnRzUmVmLmN1cnJlbnRbbmV4dEluZGV4XSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgY29tcHV0ZWRQcm9wcyA9IHtcbiAgICAuLi5kb21Qcm9wcyxcbiAgICAuLi5yZW5kZXJFbGVtZW50UHJvcHMsXG4gICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgJ2FyaWEtb3JpZW50YXRpb24nOiBvcmllbnRhdGlvbiA9PT0gJ2JvdGgnID8gdW5kZWZpbmVkIDogb3JpZW50YXRpb24sXG4gICAgb25LZXlEb3duKGUpIHtcbiAgICAgIGRvbVByb3BzLm9uS2V5RG93biA9PSBudWxsIHx8IGRvbVByb3BzLm9uS2V5RG93bihlKTtcbiAgICAgIHJlbmRlckVsZW1lbnRQcm9wcy5vbktleURvd24gPT0gbnVsbCB8fCByZW5kZXJFbGVtZW50UHJvcHMub25LZXlEb3duKGUpO1xuICAgICAgaGFuZGxlS2V5RG93bihlKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb3NpdGVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNvbnRleHRWYWx1ZVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGbG9hdGluZ0xpc3QsIHtcbiAgICBlbGVtZW50c1JlZjogZWxlbWVudHNSZWZcbiAgfSwgcmVuZGVySnN4KHJlbmRlciwgY29tcHV0ZWRQcm9wcykpKTtcbn0pO1xuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvQ29tcG9zaXRlXG4gKi9cbmNvbnN0IENvbXBvc2l0ZUl0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBDb21wb3NpdGVJdGVtKHByb3BzLCBmb3J3YXJkZWRSZWYpIHtcbiAgY29uc3Qge1xuICAgIHJlbmRlcixcbiAgICAuLi5kb21Qcm9wc1xuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHJlbmRlckVsZW1lbnRQcm9wcyA9IHJlbmRlciAmJiB0eXBlb2YgcmVuZGVyICE9PSAnZnVuY3Rpb24nID8gcmVuZGVyLnByb3BzIDoge307XG4gIGNvbnN0IHtcbiAgICBhY3RpdmVJbmRleCxcbiAgICBvbk5hdmlnYXRlXG4gIH0gPSBSZWFjdC51c2VDb250ZXh0KENvbXBvc2l0ZUNvbnRleHQpO1xuICBjb25zdCB7XG4gICAgcmVmLFxuICAgIGluZGV4XG4gIH0gPSB1c2VMaXN0SXRlbSgpO1xuICBjb25zdCBtZXJnZWRSZWYgPSB1c2VNZXJnZVJlZnMoW3JlZiwgZm9yd2FyZGVkUmVmLCByZW5kZXJFbGVtZW50UHJvcHMucmVmXSk7XG4gIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlSW5kZXggPT09IGluZGV4O1xuICBjb25zdCBjb21wdXRlZFByb3BzID0ge1xuICAgIC4uLmRvbVByb3BzLFxuICAgIC4uLnJlbmRlckVsZW1lbnRQcm9wcyxcbiAgICByZWY6IG1lcmdlZFJlZixcbiAgICB0YWJJbmRleDogaXNBY3RpdmUgPyAwIDogLTEsXG4gICAgJ2RhdGEtYWN0aXZlJzogaXNBY3RpdmUgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICBvbkZvY3VzKGUpIHtcbiAgICAgIGRvbVByb3BzLm9uRm9jdXMgPT0gbnVsbCB8fCBkb21Qcm9wcy5vbkZvY3VzKGUpO1xuICAgICAgcmVuZGVyRWxlbWVudFByb3BzLm9uRm9jdXMgPT0gbnVsbCB8fCByZW5kZXJFbGVtZW50UHJvcHMub25Gb2N1cyhlKTtcbiAgICAgIG9uTmF2aWdhdGUoaW5kZXgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHJlbmRlckpzeChyZW5kZXIsIGNvbXB1dGVkUHJvcHMpO1xufSk7XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5sZXQgc2VydmVySGFuZG9mZkNvbXBsZXRlID0gZmFsc2U7XG5sZXQgY291bnQgPSAwO1xuY29uc3QgZ2VuSWQgPSAoKSA9PiAvLyBFbnN1cmUgdGhlIGlkIGlzIHVuaXF1ZSB3aXRoIG11bHRpcGxlIGluZGVwZW5kZW50IHZlcnNpb25zIG9mIEZsb2F0aW5nIFVJXG4vLyBvbiA8UmVhY3QgMThcblwiZmxvYXRpbmctdWktXCIgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA2KSArIGNvdW50Kys7XG5mdW5jdGlvbiB1c2VGbG9hdGluZ0lkKCkge1xuICBjb25zdCBbaWQsIHNldElkXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IHNlcnZlckhhbmRvZmZDb21wbGV0ZSA/IGdlbklkKCkgOiB1bmRlZmluZWQpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGlkID09IG51bGwpIHtcbiAgICAgIHNldElkKGdlbklkKCkpO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXJ2ZXJIYW5kb2ZmQ29tcGxldGUgPSB0cnVlO1xuICB9LCBbXSk7XG4gIHJldHVybiBpZDtcbn1cbmNvbnN0IHVzZVJlYWN0SWQgPSBTYWZlUmVhY3QudXNlSWQ7XG5cbi8qKlxuICogVXNlcyBSZWFjdCAxOCdzIGJ1aWx0LWluIGB1c2VJZCgpYCB3aGVuIGF2YWlsYWJsZSwgb3IgZmFsbHMgYmFjayB0byBhXG4gKiBzbGlnaHRseSBsZXNzIHBlcmZvcm1hbnQgKHJlcXVpcmluZyBhIGRvdWJsZSByZW5kZXIpIGltcGxlbWVudGF0aW9uIGZvclxuICogZWFybGllciBSZWFjdCB2ZXJzaW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9yZWFjdC11dGlscyN1c2VpZFxuICovXG5jb25zdCB1c2VJZCA9IHVzZVJlYWN0SWQgfHwgdXNlRmxvYXRpbmdJZDtcblxubGV0IGRldk1lc3NhZ2VTZXQ7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIGRldk1lc3NhZ2VTZXQgPSAvKiNfX1BVUkVfXyovbmV3IFNldCgpO1xufVxuZnVuY3Rpb24gd2FybigpIHtcbiAgdmFyIF9kZXZNZXNzYWdlU2V0O1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWVzc2FnZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgbWVzc2FnZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cbiAgY29uc3QgbWVzc2FnZSA9IFwiRmxvYXRpbmcgVUk6IFwiICsgbWVzc2FnZXMuam9pbignICcpO1xuICBpZiAoISgoX2Rldk1lc3NhZ2VTZXQgPSBkZXZNZXNzYWdlU2V0KSAhPSBudWxsICYmIF9kZXZNZXNzYWdlU2V0LmhhcyhtZXNzYWdlKSkpIHtcbiAgICB2YXIgX2Rldk1lc3NhZ2VTZXQyO1xuICAgIChfZGV2TWVzc2FnZVNldDIgPSBkZXZNZXNzYWdlU2V0KSA9PSBudWxsIHx8IF9kZXZNZXNzYWdlU2V0Mi5hZGQobWVzc2FnZSk7XG4gICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICB9XG59XG5mdW5jdGlvbiBlcnJvcigpIHtcbiAgdmFyIF9kZXZNZXNzYWdlU2V0MztcbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBtZXNzYWdlcyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgIG1lc3NhZ2VzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gIH1cbiAgY29uc3QgbWVzc2FnZSA9IFwiRmxvYXRpbmcgVUk6IFwiICsgbWVzc2FnZXMuam9pbignICcpO1xuICBpZiAoISgoX2Rldk1lc3NhZ2VTZXQzID0gZGV2TWVzc2FnZVNldCkgIT0gbnVsbCAmJiBfZGV2TWVzc2FnZVNldDMuaGFzKG1lc3NhZ2UpKSkge1xuICAgIHZhciBfZGV2TWVzc2FnZVNldDQ7XG4gICAgKF9kZXZNZXNzYWdlU2V0NCA9IGRldk1lc3NhZ2VTZXQpID09IG51bGwgfHwgX2Rldk1lc3NhZ2VTZXQ0LmFkZChtZXNzYWdlKTtcbiAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICB9XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBvaW50aW5nIGFycm93IHRyaWFuZ2xlLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nQXJyb3dcbiAqL1xuY29uc3QgRmxvYXRpbmdBcnJvdyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZsb2F0aW5nQXJyb3cocHJvcHMsIHJlZikge1xuICBjb25zdCB7XG4gICAgY29udGV4dDoge1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH0sXG4gICAgICBtaWRkbGV3YXJlRGF0YToge1xuICAgICAgICBhcnJvd1xuICAgICAgfVxuICAgIH0sXG4gICAgd2lkdGggPSAxNCxcbiAgICBoZWlnaHQgPSA3LFxuICAgIHRpcFJhZGl1cyA9IDAsXG4gICAgc3Ryb2tlV2lkdGggPSAwLFxuICAgIHN0YXRpY09mZnNldCxcbiAgICBzdHJva2UsXG4gICAgZCxcbiAgICBzdHlsZToge1xuICAgICAgdHJhbnNmb3JtLFxuICAgICAgLi4ucmVzdFN0eWxlXG4gICAgfSA9IHt9LFxuICAgIC4uLnJlc3RcbiAgfSA9IHByb3BzO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgaWYgKCFyZWYpIHtcbiAgICAgIHdhcm4oJ1RoZSBgcmVmYCBwcm9wIGlzIHJlcXVpcmVkIGZvciBgRmxvYXRpbmdBcnJvd2AuJyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGNsaXBQYXRoSWQgPSB1c2VJZCgpO1xuICBjb25zdCBbaXNSVEwsIHNldElzUlRMXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI5MzJcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghZmxvYXRpbmcpIHJldHVybjtcbiAgICBjb25zdCBpc1JUTCA9IGdldENvbXB1dGVkU3R5bGUoZmxvYXRpbmcpLmRpcmVjdGlvbiA9PT0gJ3J0bCc7XG4gICAgaWYgKGlzUlRMKSB7XG4gICAgICBzZXRJc1JUTCh0cnVlKTtcbiAgICB9XG4gIH0sIFtmbG9hdGluZ10pO1xuICBpZiAoIWZsb2F0aW5nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBTdHJva2VzIG11c3QgYmUgZG91YmxlIHRoZSBib3JkZXIgd2lkdGgsIHRoaXMgZW5zdXJlcyB0aGUgc3Ryb2tlJ3Mgd2lkdGhcbiAgLy8gd29ya3MgYXMgeW91J2QgZXhwZWN0LlxuICBjb25zdCBjb21wdXRlZFN0cm9rZVdpZHRoID0gc3Ryb2tlV2lkdGggKiAyO1xuICBjb25zdCBoYWxmU3Ryb2tlV2lkdGggPSBjb21wdXRlZFN0cm9rZVdpZHRoIC8gMjtcbiAgY29uc3Qgc3ZnWCA9IHdpZHRoIC8gMiAqICh0aXBSYWRpdXMgLyAtOCArIDEpO1xuICBjb25zdCBzdmdZID0gaGVpZ2h0IC8gMiAqIHRpcFJhZGl1cyAvIDQ7XG4gIGNvbnN0IFtzaWRlLCBhbGlnbm1lbnRdID0gcGxhY2VtZW50LnNwbGl0KCctJyk7XG4gIGNvbnN0IGlzQ3VzdG9tU2hhcGUgPSAhIWQ7XG4gIGNvbnN0IGlzVmVydGljYWxTaWRlID0gc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbSc7XG4gIGNvbnN0IHlPZmZzZXRQcm9wID0gc3RhdGljT2Zmc2V0ICYmIGFsaWdubWVudCA9PT0gJ2VuZCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuICBsZXQgeE9mZnNldFByb3AgPSBzdGF0aWNPZmZzZXQgJiYgYWxpZ25tZW50ID09PSAnZW5kJyA/ICdyaWdodCcgOiAnbGVmdCc7XG4gIGlmIChzdGF0aWNPZmZzZXQgJiYgaXNSVEwpIHtcbiAgICB4T2Zmc2V0UHJvcCA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAnbGVmdCcgOiAncmlnaHQnO1xuICB9XG4gIGNvbnN0IGFycm93WCA9IChhcnJvdyA9PSBudWxsID8gdm9pZCAwIDogYXJyb3cueCkgIT0gbnVsbCA/IHN0YXRpY09mZnNldCB8fCBhcnJvdy54IDogJyc7XG4gIGNvbnN0IGFycm93WSA9IChhcnJvdyA9PSBudWxsID8gdm9pZCAwIDogYXJyb3cueSkgIT0gbnVsbCA/IHN0YXRpY09mZnNldCB8fCBhcnJvdy55IDogJyc7XG4gIGNvbnN0IGRWYWx1ZSA9IGQgfHwgJ00wLDAnICsgKFwiIEhcIiArIHdpZHRoKSArIChcIiBMXCIgKyAod2lkdGggLSBzdmdYKSArIFwiLFwiICsgKGhlaWdodCAtIHN2Z1kpKSArIChcIiBRXCIgKyB3aWR0aCAvIDIgKyBcIixcIiArIGhlaWdodCArIFwiIFwiICsgc3ZnWCArIFwiLFwiICsgKGhlaWdodCAtIHN2Z1kpKSArICcgWic7XG4gIGNvbnN0IHJvdGF0aW9uID0ge1xuICAgIHRvcDogaXNDdXN0b21TaGFwZSA/ICdyb3RhdGUoMTgwZGVnKScgOiAnJyxcbiAgICBsZWZ0OiBpc0N1c3RvbVNoYXBlID8gJ3JvdGF0ZSg5MGRlZyknIDogJ3JvdGF0ZSgtOTBkZWcpJyxcbiAgICBib3R0b206IGlzQ3VzdG9tU2hhcGUgPyAnJyA6ICdyb3RhdGUoMTgwZGVnKScsXG4gICAgcmlnaHQ6IGlzQ3VzdG9tU2hhcGUgPyAncm90YXRlKC05MGRlZyknIDogJ3JvdGF0ZSg5MGRlZyknXG4gIH1bc2lkZV07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7fSwgcmVzdCwge1xuICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICByZWY6IHJlZixcbiAgICB3aWR0aDogaXNDdXN0b21TaGFwZSA/IHdpZHRoIDogd2lkdGggKyBjb21wdXRlZFN0cm9rZVdpZHRoLFxuICAgIGhlaWdodDogd2lkdGgsXG4gICAgdmlld0JveDogXCIwIDAgXCIgKyB3aWR0aCArIFwiIFwiICsgKGhlaWdodCA+IHdpZHRoID8gaGVpZ2h0IDogd2lkdGgpLFxuICAgIHN0eWxlOiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgIFt4T2Zmc2V0UHJvcF06IGFycm93WCxcbiAgICAgIFt5T2Zmc2V0UHJvcF06IGFycm93WSxcbiAgICAgIFtzaWRlXTogaXNWZXJ0aWNhbFNpZGUgfHwgaXNDdXN0b21TaGFwZSA/ICcxMDAlJyA6IFwiY2FsYygxMDAlIC0gXCIgKyBjb21wdXRlZFN0cm9rZVdpZHRoIC8gMiArIFwicHgpXCIsXG4gICAgICB0cmFuc2Zvcm06IFwiXCIgKyByb3RhdGlvbiArICh0cmFuc2Zvcm0gIT0gbnVsbCA/IHRyYW5zZm9ybSA6ICcnKSxcbiAgICAgIC4uLnJlc3RTdHlsZVxuICAgIH1cbiAgfSksIGNvbXB1dGVkU3Ryb2tlV2lkdGggPiAwICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgY2xpcFBhdGg6IFwidXJsKCNcIiArIGNsaXBQYXRoSWQgKyBcIilcIixcbiAgICBmaWxsOiBcIm5vbmVcIixcbiAgICBzdHJva2U6IHN0cm9rZVxuICAgIC8vIEFjY291bnQgZm9yIHRoZSBzdHJva2Ugb24gdGhlIGZpbGwgcGF0aCByZW5kZXJlZCBiZWxvdy5cbiAgICAsXG4gICAgc3Ryb2tlV2lkdGg6IGNvbXB1dGVkU3Ryb2tlV2lkdGggKyAoZCA/IDAgOiAxKSxcbiAgICBkOiBkVmFsdWVcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgc3Ryb2tlOiBjb21wdXRlZFN0cm9rZVdpZHRoICYmICFkID8gcmVzdC5maWxsIDogJ25vbmUnLFxuICAgIGQ6IGRWYWx1ZVxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjbGlwUGF0aFwiLCB7XG4gICAgaWQ6IGNsaXBQYXRoSWRcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgICB4OiAtaGFsZlN0cm9rZVdpZHRoLFxuICAgIHk6IGhhbGZTdHJva2VXaWR0aCAqIChpc0N1c3RvbVNoYXBlID8gLTEgOiAxKSxcbiAgICB3aWR0aDogd2lkdGggKyBjb21wdXRlZFN0cm9rZVdpZHRoLFxuICAgIGhlaWdodDogd2lkdGhcbiAgfSkpKTtcbn0pO1xuXG5mdW5jdGlvbiBjcmVhdGVQdWJTdWIoKSB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbiAgcmV0dXJuIHtcbiAgICBlbWl0KGV2ZW50LCBkYXRhKSB7XG4gICAgICB2YXIgX21hcCRnZXQ7XG4gICAgICAoX21hcCRnZXQgPSBtYXAuZ2V0KGV2ZW50KSkgPT0gbnVsbCB8fCBfbWFwJGdldC5mb3JFYWNoKGhhbmRsZXIgPT4gaGFuZGxlcihkYXRhKSk7XG4gICAgfSxcbiAgICBvbihldmVudCwgbGlzdGVuZXIpIHtcbiAgICAgIG1hcC5zZXQoZXZlbnQsIFsuLi4obWFwLmdldChldmVudCkgfHwgW10pLCBsaXN0ZW5lcl0pO1xuICAgIH0sXG4gICAgb2ZmKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgICAgdmFyIF9tYXAkZ2V0MjtcbiAgICAgIG1hcC5zZXQoZXZlbnQsICgoX21hcCRnZXQyID0gbWFwLmdldChldmVudCkpID09IG51bGwgPyB2b2lkIDAgOiBfbWFwJGdldDIuZmlsdGVyKGwgPT4gbCAhPT0gbGlzdGVuZXIpKSB8fCBbXSk7XG4gICAgfVxuICB9O1xufVxuXG5jb25zdCBGbG9hdGluZ05vZGVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5jb25zdCBGbG9hdGluZ1RyZWVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGFyZW50IG5vZGUgaWQgZm9yIG5lc3RlZCBmbG9hdGluZyBlbGVtZW50cywgaWYgYXZhaWxhYmxlLlxuICogUmV0dXJucyBgbnVsbGAgZm9yIHRvcC1sZXZlbCBmbG9hdGluZyBlbGVtZW50cy5cbiAqL1xuY29uc3QgdXNlRmxvYXRpbmdQYXJlbnROb2RlSWQgPSAoKSA9PiB7XG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dDtcbiAgcmV0dXJuICgoX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZsb2F0aW5nTm9kZUNvbnRleHQpKSA9PSBudWxsID8gdm9pZCAwIDogX1JlYWN0JHVzZUNvbnRleHQuaWQpIHx8IG51bGw7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG5lYXJlc3QgZmxvYXRpbmcgdHJlZSBjb250ZXh0LCBpZiBhdmFpbGFibGUuXG4gKi9cbmNvbnN0IHVzZUZsb2F0aW5nVHJlZSA9ICgpID0+IFJlYWN0LnVzZUNvbnRleHQoRmxvYXRpbmdUcmVlQ29udGV4dCk7XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgbm9kZSBpbnRvIHRoZSBgRmxvYXRpbmdUcmVlYCwgcmV0dXJuaW5nIGl0cyBpZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ1RyZWVcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmdOb2RlSWQoY3VzdG9tUGFyZW50SWQpIHtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICBjb25zdCB0cmVlID0gdXNlRmxvYXRpbmdUcmVlKCk7XG4gIGNvbnN0IHJlYWN0UGFyZW50SWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpO1xuICBjb25zdCBwYXJlbnRJZCA9IGN1c3RvbVBhcmVudElkIHx8IHJlYWN0UGFyZW50SWQ7XG4gIGluZGV4KCgpID0+IHtcbiAgICBjb25zdCBub2RlID0ge1xuICAgICAgaWQsXG4gICAgICBwYXJlbnRJZFxuICAgIH07XG4gICAgdHJlZSA9PSBudWxsIHx8IHRyZWUuYWRkTm9kZShub2RlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdHJlZSA9PSBudWxsIHx8IHRyZWUucmVtb3ZlTm9kZShub2RlKTtcbiAgICB9O1xuICB9LCBbdHJlZSwgaWQsIHBhcmVudElkXSk7XG4gIHJldHVybiBpZDtcbn1cbi8qKlxuICogUHJvdmlkZXMgcGFyZW50IG5vZGUgY29udGV4dCBmb3IgbmVzdGVkIGZsb2F0aW5nIGVsZW1lbnRzLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nVHJlZVxuICovXG5mdW5jdGlvbiBGbG9hdGluZ05vZGUocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGlkXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgcGFyZW50SWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRmxvYXRpbmdOb2RlQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICBpZCxcbiAgICAgIHBhcmVudElkXG4gICAgfSksIFtpZCwgcGFyZW50SWRdKVxuICB9LCBjaGlsZHJlbik7XG59XG4vKipcbiAqIFByb3ZpZGVzIGNvbnRleHQgZm9yIG5lc3RlZCBmbG9hdGluZyBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIG5vdCBjaGlsZHJlbiBvZlxuICogZWFjaCBvdGhlciBvbiB0aGUgRE9NLlxuICogVGhpcyBpcyBub3QgbmVjZXNzYXJ5IGluIGFsbCBjYXNlcywgZXhjZXB0IHdoZW4gdGhlcmUgbXVzdCBiZSBleHBsaWNpdCBjb21tdW5pY2F0aW9uIGJldHdlZW4gcGFyZW50IGFuZCBjaGlsZCBmbG9hdGluZyBlbGVtZW50cy4gSXQgaXMgbmVjZXNzYXJ5IGZvcjpcbiAqIC0gVGhlIGBidWJibGVzYCBvcHRpb24gaW4gdGhlIGB1c2VEaXNtaXNzKClgIEhvb2tcbiAqIC0gTmVzdGVkIHZpcnR1YWwgbGlzdCBuYXZpZ2F0aW9uXG4gKiAtIE5lc3RlZCBmbG9hdGluZyBlbGVtZW50cyB0aGF0IGVhY2ggb3BlbiBvbiBob3ZlclxuICogLSBDdXN0b20gY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHBhcmVudCBhbmQgY2hpbGQgZmxvYXRpbmcgZWxlbWVudHNcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ1RyZWVcbiAqL1xuZnVuY3Rpb24gRmxvYXRpbmdUcmVlKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjaGlsZHJlblxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IG5vZGVzUmVmID0gUmVhY3QudXNlUmVmKFtdKTtcbiAgY29uc3QgYWRkTm9kZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIG5vZGVzUmVmLmN1cnJlbnQgPSBbLi4ubm9kZXNSZWYuY3VycmVudCwgbm9kZV07XG4gIH0sIFtdKTtcbiAgY29uc3QgcmVtb3ZlTm9kZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIG5vZGVzUmVmLmN1cnJlbnQgPSBub2Rlc1JlZi5jdXJyZW50LmZpbHRlcihuID0+IG4gIT09IG5vZGUpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGV2ZW50cyA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IGNyZWF0ZVB1YlN1YigpKVswXTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZsb2F0aW5nVHJlZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgICAgbm9kZXNSZWYsXG4gICAgICBhZGROb2RlLFxuICAgICAgcmVtb3ZlTm9kZSxcbiAgICAgIGV2ZW50c1xuICAgIH0pLCBbYWRkTm9kZSwgcmVtb3ZlTm9kZSwgZXZlbnRzXSlcbiAgfSwgY2hpbGRyZW4pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBdHRyaWJ1dGUobmFtZSkge1xuICByZXR1cm4gXCJkYXRhLWZsb2F0aW5nLXVpLVwiICsgbmFtZTtcbn1cblxuZnVuY3Rpb24gdXNlTGF0ZXN0UmVmKHZhbHVlKSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZih2YWx1ZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZjtcbn1cblxuY29uc3Qgc2FmZVBvbHlnb25JZGVudGlmaWVyID0gLyojX19QVVJFX18qL2NyZWF0ZUF0dHJpYnV0ZSgnc2FmZS1wb2x5Z29uJyk7XG5mdW5jdGlvbiBnZXREZWxheSh2YWx1ZSwgcHJvcCwgcG9pbnRlclR5cGUpIHtcbiAgaWYgKHBvaW50ZXJUeXBlICYmICFpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlKSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gdm9pZCAwIDogdmFsdWVbcHJvcF07XG59XG4vKipcbiAqIE9wZW5zIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoaWxlIGhvdmVyaW5nIG92ZXIgdGhlIHJlZmVyZW5jZSBlbGVtZW50LCBsaWtlXG4gKiBDU1MgYDpob3ZlcmAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlSG92ZXJcbiAqL1xuZnVuY3Rpb24gdXNlSG92ZXIoY29udGV4dCwgcHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIG9uT3BlbkNoYW5nZSxcbiAgICBkYXRhUmVmLFxuICAgIGV2ZW50cyxcbiAgICBlbGVtZW50c1xuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGVuYWJsZWQgPSB0cnVlLFxuICAgIGRlbGF5ID0gMCxcbiAgICBoYW5kbGVDbG9zZSA9IG51bGwsXG4gICAgbW91c2VPbmx5ID0gZmFsc2UsXG4gICAgcmVzdE1zID0gMCxcbiAgICBtb3ZlID0gdHJ1ZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHRyZWUgPSB1c2VGbG9hdGluZ1RyZWUoKTtcbiAgY29uc3QgcGFyZW50SWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpO1xuICBjb25zdCBoYW5kbGVDbG9zZVJlZiA9IHVzZUxhdGVzdFJlZihoYW5kbGVDbG9zZSk7XG4gIGNvbnN0IGRlbGF5UmVmID0gdXNlTGF0ZXN0UmVmKGRlbGF5KTtcbiAgY29uc3Qgb3BlblJlZiA9IHVzZUxhdGVzdFJlZihvcGVuKTtcbiAgY29uc3QgcG9pbnRlclR5cGVSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3QgdGltZW91dFJlZiA9IFJlYWN0LnVzZVJlZigtMSk7XG4gIGNvbnN0IGhhbmRsZXJSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3QgcmVzdFRpbWVvdXRSZWYgPSBSZWFjdC51c2VSZWYoLTEpO1xuICBjb25zdCBibG9ja01vdXNlTW92ZVJlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgY29uc3QgcGVyZm9ybWVkUG9pbnRlckV2ZW50c011dGF0aW9uUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgdW5iaW5kTW91c2VNb3ZlUmVmID0gUmVhY3QudXNlUmVmKCgpID0+IHt9KTtcbiAgY29uc3QgaXNIb3Zlck9wZW4gPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdmFyIF9kYXRhUmVmJGN1cnJlbnQkb3BlbjtcbiAgICBjb25zdCB0eXBlID0gKF9kYXRhUmVmJGN1cnJlbnQkb3BlbiA9IGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YVJlZiRjdXJyZW50JG9wZW4udHlwZTtcbiAgICByZXR1cm4gKHR5cGUgPT0gbnVsbCA/IHZvaWQgMCA6IHR5cGUuaW5jbHVkZXMoJ21vdXNlJykpICYmIHR5cGUgIT09ICdtb3VzZWRvd24nO1xuICB9LCBbZGF0YVJlZl0pO1xuXG4gIC8vIFdoZW4gY2xvc2luZyBiZWZvcmUgb3BlbmluZywgY2xlYXIgdGhlIGRlbGF5IHRpbWVvdXRzIHRvIGNhbmNlbCBpdFxuICAvLyBmcm9tIHNob3dpbmcuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgZnVuY3Rpb24gb25PcGVuQ2hhbmdlKF9yZWYpIHtcbiAgICAgIGxldCB7XG4gICAgICAgIG9wZW5cbiAgICAgIH0gPSBfcmVmO1xuICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICBjbGVhclRpbWVvdXQocmVzdFRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgIGJsb2NrTW91c2VNb3ZlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBldmVudHMub24oJ29wZW5jaGFuZ2UnLCBvbk9wZW5DaGFuZ2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBldmVudHMub2ZmKCdvcGVuY2hhbmdlJywgb25PcGVuQ2hhbmdlKTtcbiAgICB9O1xuICB9LCBbZW5hYmxlZCwgZXZlbnRzXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKCFoYW5kbGVDbG9zZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaWYgKCFvcGVuKSByZXR1cm47XG4gICAgZnVuY3Rpb24gb25MZWF2ZShldmVudCkge1xuICAgICAgaWYgKGlzSG92ZXJPcGVuKCkpIHtcbiAgICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudCwgJ2hvdmVyJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudChlbGVtZW50cy5mbG9hdGluZykuZG9jdW1lbnRFbGVtZW50O1xuICAgIGh0bWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uTGVhdmUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBodG1sLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBvbkxlYXZlKTtcbiAgICB9O1xuICB9LCBbZWxlbWVudHMuZmxvYXRpbmcsIG9wZW4sIG9uT3BlbkNoYW5nZSwgZW5hYmxlZCwgaGFuZGxlQ2xvc2VSZWYsIGlzSG92ZXJPcGVuXSk7XG4gIGNvbnN0IGNsb3NlV2l0aERlbGF5ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50LCBydW5FbHNlQnJhbmNoLCByZWFzb24pIHtcbiAgICBpZiAocnVuRWxzZUJyYW5jaCA9PT0gdm9pZCAwKSB7XG4gICAgICBydW5FbHNlQnJhbmNoID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHJlYXNvbiA9PT0gdm9pZCAwKSB7XG4gICAgICByZWFzb24gPSAnaG92ZXInO1xuICAgIH1cbiAgICBjb25zdCBjbG9zZURlbGF5ID0gZ2V0RGVsYXkoZGVsYXlSZWYuY3VycmVudCwgJ2Nsb3NlJywgcG9pbnRlclR5cGVSZWYuY3VycmVudCk7XG4gICAgaWYgKGNsb3NlRGVsYXkgJiYgIWhhbmRsZXJSZWYuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50LCByZWFzb24pLCBjbG9zZURlbGF5KTtcbiAgICB9IGVsc2UgaWYgKHJ1bkVsc2VCcmFuY2gpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudCwgcmVhc29uKTtcbiAgICB9XG4gIH0sIFtkZWxheVJlZiwgb25PcGVuQ2hhbmdlXSk7XG4gIGNvbnN0IGNsZWFudXBNb3VzZU1vdmVIYW5kbGVyID0gdXNlRWZmZWN0RXZlbnQoKCkgPT4ge1xuICAgIHVuYmluZE1vdXNlTW92ZVJlZi5jdXJyZW50KCk7XG4gICAgaGFuZGxlclJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICB9KTtcbiAgY29uc3QgY2xlYXJQb2ludGVyRXZlbnRzID0gdXNlRWZmZWN0RXZlbnQoKCkgPT4ge1xuICAgIGlmIChwZXJmb3JtZWRQb2ludGVyRXZlbnRzTXV0YXRpb25SZWYuY3VycmVudCkge1xuICAgICAgY29uc3QgYm9keSA9IGdldERvY3VtZW50KGVsZW1lbnRzLmZsb2F0aW5nKS5ib2R5O1xuICAgICAgYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7XG4gICAgICBib2R5LnJlbW92ZUF0dHJpYnV0ZShzYWZlUG9seWdvbklkZW50aWZpZXIpO1xuICAgICAgcGVyZm9ybWVkUG9pbnRlckV2ZW50c011dGF0aW9uUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFJlZ2lzdGVyaW5nIHRoZSBtb3VzZSBldmVudHMgb24gdGhlIHJlZmVyZW5jZSBkaXJlY3RseSB0byBieXBhc3MgUmVhY3Qnc1xuICAvLyBkZWxlZ2F0aW9uIHN5c3RlbS4gSWYgdGhlIGN1cnNvciB3YXMgb24gYSBkaXNhYmxlZCBlbGVtZW50IGFuZCB0aGVuIGVudGVyZWRcbiAgLy8gdGhlIHJlZmVyZW5jZSAobm8gZ2FwKSwgYG1vdXNlZW50ZXJgIGRvZXNuJ3QgZmlyZSBpbiB0aGUgZGVsZWdhdGlvbiBzeXN0ZW0uXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgZnVuY3Rpb24gaXNDbGlja0xpa2VPcGVuRXZlbnQoKSB7XG4gICAgICByZXR1cm4gZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCA/IFsnY2xpY2snLCAnbW91c2Vkb3duJ10uaW5jbHVkZXMoZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudC50eXBlKSA6IGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBvbk1vdXNlRW50ZXIoZXZlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgYmxvY2tNb3VzZU1vdmVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgaWYgKG1vdXNlT25seSAmJiAhaXNNb3VzZUxpa2VQb2ludGVyVHlwZShwb2ludGVyVHlwZVJlZi5jdXJyZW50KSB8fCByZXN0TXMgPiAwICYmICFnZXREZWxheShkZWxheVJlZi5jdXJyZW50LCAnb3BlbicpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9wZW5EZWxheSA9IGdldERlbGF5KGRlbGF5UmVmLmN1cnJlbnQsICdvcGVuJywgcG9pbnRlclR5cGVSZWYuY3VycmVudCk7XG4gICAgICBpZiAob3BlbkRlbGF5KSB7XG4gICAgICAgIHRpbWVvdXRSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIW9wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50LCAnaG92ZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG9wZW5EZWxheSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbk9wZW5DaGFuZ2UodHJ1ZSwgZXZlbnQsICdob3ZlcicpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBvbk1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICAgIGlmIChpc0NsaWNrTGlrZU9wZW5FdmVudCgpKSByZXR1cm47XG4gICAgICB1bmJpbmRNb3VzZU1vdmVSZWYuY3VycmVudCgpO1xuICAgICAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgY2xlYXJUaW1lb3V0KHJlc3RUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgaWYgKGhhbmRsZUNsb3NlUmVmLmN1cnJlbnQgJiYgZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCkge1xuICAgICAgICAvLyBQcmV2ZW50IGNsZWFyaW5nIGBvblNjcm9sbE1vdXNlTGVhdmVgIHRpbWVvdXQuXG4gICAgICAgIGlmICghb3Blbikge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGhhbmRsZXJSZWYuY3VycmVudCA9IGhhbmRsZUNsb3NlUmVmLmN1cnJlbnQoe1xuICAgICAgICAgIC4uLmRhdGFSZWYuY3VycmVudC5mbG9hdGluZ0NvbnRleHQsXG4gICAgICAgICAgdHJlZSxcbiAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgb25DbG9zZSgpIHtcbiAgICAgICAgICAgIGNsZWFyUG9pbnRlckV2ZW50cygpO1xuICAgICAgICAgICAgY2xlYW51cE1vdXNlTW92ZUhhbmRsZXIoKTtcbiAgICAgICAgICAgIGNsb3NlV2l0aERlbGF5KGV2ZW50LCB0cnVlLCAnc2FmZS1wb2x5Z29uJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IGhhbmRsZXJSZWYuY3VycmVudDtcbiAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZXIpO1xuICAgICAgICB1bmJpbmRNb3VzZU1vdmVSZWYuY3VycmVudCA9ICgpID0+IHtcbiAgICAgICAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlcik7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gQWxsb3cgaW50ZXJhY3Rpdml0eSB3aXRob3V0IGBzYWZlUG9seWdvbmAgb24gdG91Y2ggZGV2aWNlcy4gV2l0aCBhXG4gICAgICAvLyBwb2ludGVyLCBhIHNob3J0IGNsb3NlIGRlbGF5IGlzIGFuIGFsdGVybmF0aXZlLCBzbyBpdCBzaG91bGQgd29ya1xuICAgICAgLy8gY29uc2lzdGVudGx5LlxuICAgICAgY29uc3Qgc2hvdWxkQ2xvc2UgPSBwb2ludGVyVHlwZVJlZi5jdXJyZW50ID09PSAndG91Y2gnID8gIWNvbnRhaW5zKGVsZW1lbnRzLmZsb2F0aW5nLCBldmVudC5yZWxhdGVkVGFyZ2V0KSA6IHRydWU7XG4gICAgICBpZiAoc2hvdWxkQ2xvc2UpIHtcbiAgICAgICAgY2xvc2VXaXRoRGVsYXkoZXZlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBjbG9zZXMgYWZ0ZXIgc2Nyb2xsaW5nIGV2ZW4gaWYgdGhlIHBvaW50ZXJcbiAgICAvLyBkaWQgbm90IG1vdmUuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2Rpc2N1c3Npb25zLzE2OTJcbiAgICBmdW5jdGlvbiBvblNjcm9sbE1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICAgIGlmIChpc0NsaWNrTGlrZU9wZW5FdmVudCgpKSByZXR1cm47XG4gICAgICBpZiAoIWRhdGFSZWYuY3VycmVudC5mbG9hdGluZ0NvbnRleHQpIHJldHVybjtcbiAgICAgIGhhbmRsZUNsb3NlUmVmLmN1cnJlbnQgPT0gbnVsbCB8fCBoYW5kbGVDbG9zZVJlZi5jdXJyZW50KHtcbiAgICAgICAgLi4uZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCxcbiAgICAgICAgdHJlZSxcbiAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgeTogZXZlbnQuY2xpZW50WSxcbiAgICAgICAgb25DbG9zZSgpIHtcbiAgICAgICAgICBjbGVhclBvaW50ZXJFdmVudHMoKTtcbiAgICAgICAgICBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlcigpO1xuICAgICAgICAgIGNsb3NlV2l0aERlbGF5KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSkoZXZlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNFbGVtZW50KGVsZW1lbnRzLmRvbVJlZmVyZW5jZSkpIHtcbiAgICAgIHZhciBfZWxlbWVudHMkZmxvYXRpbmc7XG4gICAgICBjb25zdCByZWYgPSBlbGVtZW50cy5kb21SZWZlcmVuY2U7XG4gICAgICBvcGVuICYmIHJlZi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgb25TY3JvbGxNb3VzZUxlYXZlKTtcbiAgICAgIChfZWxlbWVudHMkZmxvYXRpbmcgPSBlbGVtZW50cy5mbG9hdGluZykgPT0gbnVsbCB8fCBfZWxlbWVudHMkZmxvYXRpbmcuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uU2Nyb2xsTW91c2VMZWF2ZSk7XG4gICAgICBtb3ZlICYmIHJlZi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlRW50ZXIsIHtcbiAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgICByZWYuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIG9uTW91c2VFbnRlcik7XG4gICAgICByZWYuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uTW91c2VMZWF2ZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB2YXIgX2VsZW1lbnRzJGZsb2F0aW5nMjtcbiAgICAgICAgb3BlbiAmJiByZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uU2Nyb2xsTW91c2VMZWF2ZSk7XG4gICAgICAgIChfZWxlbWVudHMkZmxvYXRpbmcyID0gZWxlbWVudHMuZmxvYXRpbmcpID09IG51bGwgfHwgX2VsZW1lbnRzJGZsb2F0aW5nMi5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgb25TY3JvbGxNb3VzZUxlYXZlKTtcbiAgICAgICAgbW92ZSAmJiByZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZUVudGVyKTtcbiAgICAgICAgcmVmLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBvbk1vdXNlRW50ZXIpO1xuICAgICAgICByZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uTW91c2VMZWF2ZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2VsZW1lbnRzLCBlbmFibGVkLCBjb250ZXh0LCBtb3VzZU9ubHksIHJlc3RNcywgbW92ZSwgY2xvc2VXaXRoRGVsYXksIGNsZWFudXBNb3VzZU1vdmVIYW5kbGVyLCBjbGVhclBvaW50ZXJFdmVudHMsIG9uT3BlbkNoYW5nZSwgb3Blbiwgb3BlblJlZiwgdHJlZSwgZGVsYXlSZWYsIGhhbmRsZUNsb3NlUmVmLCBkYXRhUmVmXSk7XG5cbiAgLy8gQmxvY2sgcG9pbnRlci1ldmVudHMgb2YgZXZlcnkgZWxlbWVudCBvdGhlciB0aGFuIHRoZSByZWZlcmVuY2UgYW5kIGZsb2F0aW5nXG4gIC8vIHdoaWxlIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG9wZW4gYW5kIGhhcyBhIGBoYW5kbGVDbG9zZWAgaGFuZGxlci4gQWxzb1xuICAvLyBoYW5kbGVzIG5lc3RlZCBmbG9hdGluZyBlbGVtZW50cy5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xNzIyXG4gIGluZGV4KCgpID0+IHtcbiAgICB2YXIgX2hhbmRsZUNsb3NlUmVmJGN1cnJlO1xuICAgIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICAgIGlmIChvcGVuICYmIChfaGFuZGxlQ2xvc2VSZWYkY3VycmUgPSBoYW5kbGVDbG9zZVJlZi5jdXJyZW50KSAhPSBudWxsICYmIF9oYW5kbGVDbG9zZVJlZiRjdXJyZS5fX29wdGlvbnMuYmxvY2tQb2ludGVyRXZlbnRzICYmIGlzSG92ZXJPcGVuKCkpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBnZXREb2N1bWVudChlbGVtZW50cy5mbG9hdGluZykuYm9keTtcbiAgICAgIGJvZHkuc2V0QXR0cmlidXRlKHNhZmVQb2x5Z29uSWRlbnRpZmllciwgJycpO1xuICAgICAgYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgcGVyZm9ybWVkUG9pbnRlckV2ZW50c011dGF0aW9uUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgY29uc3QgZmxvYXRpbmdFbCA9IGVsZW1lbnRzLmZsb2F0aW5nO1xuICAgICAgaWYgKGlzRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpICYmIGZsb2F0aW5nRWwpIHtcbiAgICAgICAgdmFyIF90cmVlJG5vZGVzUmVmJGN1cnJlbjtcbiAgICAgICAgY29uc3QgcmVmID0gZWxlbWVudHMuZG9tUmVmZXJlbmNlO1xuICAgICAgICBjb25zdCBwYXJlbnRGbG9hdGluZyA9IHRyZWUgPT0gbnVsbCB8fCAoX3RyZWUkbm9kZXNSZWYkY3VycmVuID0gdHJlZS5ub2Rlc1JlZi5jdXJyZW50LmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBwYXJlbnRJZCkpID09IG51bGwgfHwgKF90cmVlJG5vZGVzUmVmJGN1cnJlbiA9IF90cmVlJG5vZGVzUmVmJGN1cnJlbi5jb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX3RyZWUkbm9kZXNSZWYkY3VycmVuLmVsZW1lbnRzLmZsb2F0aW5nO1xuICAgICAgICBpZiAocGFyZW50RmxvYXRpbmcpIHtcbiAgICAgICAgICBwYXJlbnRGbG9hdGluZy5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmVmLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnYXV0byc7XG4gICAgICAgIGZsb2F0aW5nRWwuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdhdXRvJztcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICByZWYuc3R5bGUucG9pbnRlckV2ZW50cyA9ICcnO1xuICAgICAgICAgIGZsb2F0aW5nRWwuc3R5bGUucG9pbnRlckV2ZW50cyA9ICcnO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2VuYWJsZWQsIG9wZW4sIHBhcmVudElkLCBlbGVtZW50cywgdHJlZSwgaGFuZGxlQ2xvc2VSZWYsIGlzSG92ZXJPcGVuXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoIW9wZW4pIHtcbiAgICAgIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlcigpO1xuICAgICAgY2xlYXJQb2ludGVyRXZlbnRzKCk7XG4gICAgfVxuICB9LCBbb3BlbiwgY2xlYW51cE1vdXNlTW92ZUhhbmRsZXIsIGNsZWFyUG9pbnRlckV2ZW50c10pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlcigpO1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICBjbGVhclRpbWVvdXQocmVzdFRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICBjbGVhclBvaW50ZXJFdmVudHMoKTtcbiAgICB9O1xuICB9LCBbZW5hYmxlZCwgZWxlbWVudHMuZG9tUmVmZXJlbmNlLCBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlciwgY2xlYXJQb2ludGVyRXZlbnRzXSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGZ1bmN0aW9uIHNldFBvaW50ZXJSZWYoZXZlbnQpIHtcbiAgICAgIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQgPSBldmVudC5wb2ludGVyVHlwZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG9uUG9pbnRlckRvd246IHNldFBvaW50ZXJSZWYsXG4gICAgICBvblBvaW50ZXJFbnRlcjogc2V0UG9pbnRlclJlZixcbiAgICAgIG9uTW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBuYXRpdmVFdmVudFxuICAgICAgICB9ID0gZXZlbnQ7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZSgpIHtcbiAgICAgICAgICBpZiAoIWJsb2NrTW91c2VNb3ZlUmVmLmN1cnJlbnQgJiYgIW9wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIG5hdGl2ZUV2ZW50LCAnaG92ZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vdXNlT25seSAmJiAhaXNNb3VzZUxpa2VQb2ludGVyVHlwZShwb2ludGVyVHlwZVJlZi5jdXJyZW50KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlbiB8fCByZXN0TXMgPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2xlYXJUaW1lb3V0KHJlc3RUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAocG9pbnRlclR5cGVSZWYuY3VycmVudCA9PT0gJ3RvdWNoJykge1xuICAgICAgICAgIGhhbmRsZU1vdXNlTW92ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3RUaW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dChoYW5kbGVNb3VzZU1vdmUsIHJlc3RNcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LCBbbW91c2VPbmx5LCBvbk9wZW5DaGFuZ2UsIG9wZW4sIG9wZW5SZWYsIHJlc3RNc10pO1xuICBjb25zdCBmbG9hdGluZyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvbk1vdXNlRW50ZXIoKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dFJlZi5jdXJyZW50KTtcbiAgICB9LFxuICAgIG9uTW91c2VMZWF2ZShldmVudCkge1xuICAgICAgY2xvc2VXaXRoRGVsYXkoZXZlbnQubmF0aXZlRXZlbnQsIGZhbHNlKTtcbiAgICB9XG4gIH0pLCBbY2xvc2VXaXRoRGVsYXldKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gZW5hYmxlZCA/IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA6IHt9LCBbZW5hYmxlZCwgcmVmZXJlbmNlLCBmbG9hdGluZ10pO1xufVxuXG5jb25zdCBOT09QID0gKCkgPT4ge307XG5jb25zdCBGbG9hdGluZ0RlbGF5R3JvdXBDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICBkZWxheTogMCxcbiAgaW5pdGlhbERlbGF5OiAwLFxuICB0aW1lb3V0TXM6IDAsXG4gIGN1cnJlbnRJZDogbnVsbCxcbiAgc2V0Q3VycmVudElkOiBOT09QLFxuICBzZXRTdGF0ZTogTk9PUCxcbiAgaXNJbnN0YW50UGhhc2U6IGZhbHNlXG59KTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgYHVzZURlbGF5R3JvdXAoKWAgaW5zdGVhZC5cbiAqL1xuY29uc3QgdXNlRGVsYXlHcm91cENvbnRleHQgPSAoKSA9PiBSZWFjdC51c2VDb250ZXh0KEZsb2F0aW5nRGVsYXlHcm91cENvbnRleHQpO1xuLyoqXG4gKiBQcm92aWRlcyBjb250ZXh0IGZvciBhIGdyb3VwIG9mIGZsb2F0aW5nIGVsZW1lbnRzIHRoYXQgc2hvdWxkIHNoYXJlIGFcbiAqIGBkZWxheWAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdEZWxheUdyb3VwXG4gKi9cbmZ1bmN0aW9uIEZsb2F0aW5nRGVsYXlHcm91cChwcm9wcykge1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgZGVsYXksXG4gICAgdGltZW91dE1zID0gMFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gUmVhY3QudXNlUmVkdWNlcigocHJldiwgbmV4dCkgPT4gKHtcbiAgICAuLi5wcmV2LFxuICAgIC4uLm5leHRcbiAgfSksIHtcbiAgICBkZWxheSxcbiAgICB0aW1lb3V0TXMsXG4gICAgaW5pdGlhbERlbGF5OiBkZWxheSxcbiAgICBjdXJyZW50SWQ6IG51bGwsXG4gICAgaXNJbnN0YW50UGhhc2U6IGZhbHNlXG4gIH0pO1xuICBjb25zdCBpbml0aWFsQ3VycmVudElkUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBzZXRDdXJyZW50SWQgPSBSZWFjdC51c2VDYWxsYmFjayhjdXJyZW50SWQgPT4ge1xuICAgIHNldFN0YXRlKHtcbiAgICAgIGN1cnJlbnRJZFxuICAgIH0pO1xuICB9LCBbXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudElkKSB7XG4gICAgICBpZiAoaW5pdGlhbEN1cnJlbnRJZFJlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIGluaXRpYWxDdXJyZW50SWRSZWYuY3VycmVudCA9IHN0YXRlLmN1cnJlbnRJZDtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YXRlLmlzSW5zdGFudFBoYXNlKSB7XG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICBpc0luc3RhbnRQaGFzZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXRlLmlzSW5zdGFudFBoYXNlKSB7XG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICBpc0luc3RhbnRQaGFzZTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpbml0aWFsQ3VycmVudElkUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW3N0YXRlLmN1cnJlbnRJZCwgc3RhdGUuaXNJbnN0YW50UGhhc2VdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZsb2F0aW5nRGVsYXlHcm91cENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZXRTdGF0ZSxcbiAgICAgIHNldEN1cnJlbnRJZFxuICAgIH0pLCBbc3RhdGUsIHNldEN1cnJlbnRJZF0pXG4gIH0sIGNoaWxkcmVuKTtcbn1cbi8qKlxuICogRW5hYmxlcyBncm91cGluZyB3aGVuIGNhbGxlZCBpbnNpZGUgYSBjb21wb25lbnQgdGhhdCdzIGEgY2hpbGQgb2YgYVxuICogYEZsb2F0aW5nRGVsYXlHcm91cGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdEZWxheUdyb3VwXG4gKi9cbmZ1bmN0aW9uIHVzZURlbGF5R3JvdXAoY29udGV4dCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIG9uT3BlbkNoYW5nZSxcbiAgICBmbG9hdGluZ0lkXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgaWQ6IG9wdGlvbklkXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpZCA9IG9wdGlvbklkICE9IG51bGwgPyBvcHRpb25JZCA6IGZsb2F0aW5nSWQ7XG4gIGNvbnN0IGdyb3VwQ29udGV4dCA9IHVzZURlbGF5R3JvdXBDb250ZXh0KCk7XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50SWQsXG4gICAgc2V0Q3VycmVudElkLFxuICAgIGluaXRpYWxEZWxheSxcbiAgICBzZXRTdGF0ZSxcbiAgICB0aW1lb3V0TXNcbiAgfSA9IGdyb3VwQ29udGV4dDtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghY3VycmVudElkKSByZXR1cm47XG4gICAgc2V0U3RhdGUoe1xuICAgICAgZGVsYXk6IHtcbiAgICAgICAgb3BlbjogMSxcbiAgICAgICAgY2xvc2U6IGdldERlbGF5KGluaXRpYWxEZWxheSwgJ2Nsb3NlJylcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoY3VycmVudElkICE9PSBpZCkge1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICB9XG4gIH0sIFtpZCwgb25PcGVuQ2hhbmdlLCBzZXRTdGF0ZSwgY3VycmVudElkLCBpbml0aWFsRGVsYXldKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIHVuc2V0KCkge1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgZGVsYXk6IGluaXRpYWxEZWxheSxcbiAgICAgICAgY3VycmVudElkOiBudWxsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFjdXJyZW50SWQpIHJldHVybjtcbiAgICBpZiAoIW9wZW4gJiYgY3VycmVudElkID09PSBpZCkge1xuICAgICAgaWYgKHRpbWVvdXRNcykge1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQodW5zZXQsIHRpbWVvdXRNcyk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgdW5zZXQoKTtcbiAgICB9XG4gIH0sIFtvcGVuLCBzZXRTdGF0ZSwgY3VycmVudElkLCBpZCwgb25PcGVuQ2hhbmdlLCBpbml0aWFsRGVsYXksIHRpbWVvdXRNc10pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKHNldEN1cnJlbnRJZCA9PT0gTk9PUCB8fCAhb3BlbikgcmV0dXJuO1xuICAgIHNldEN1cnJlbnRJZChpZCk7XG4gIH0sIFtvcGVuLCBzZXRDdXJyZW50SWQsIGlkXSk7XG4gIHJldHVybiBncm91cENvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIGdldEFuY2VzdG9ycyhub2RlcywgaWQpIHtcbiAgdmFyIF9ub2RlcyRmaW5kO1xuICBsZXQgYWxsQW5jZXN0b3JzID0gW107XG4gIGxldCBjdXJyZW50UGFyZW50SWQgPSAoX25vZGVzJGZpbmQgPSBub2Rlcy5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gaWQpKSA9PSBudWxsID8gdm9pZCAwIDogX25vZGVzJGZpbmQucGFyZW50SWQ7XG4gIHdoaWxlIChjdXJyZW50UGFyZW50SWQpIHtcbiAgICBjb25zdCBjdXJyZW50Tm9kZSA9IG5vZGVzLmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBjdXJyZW50UGFyZW50SWQpO1xuICAgIGN1cnJlbnRQYXJlbnRJZCA9IGN1cnJlbnROb2RlID09IG51bGwgPyB2b2lkIDAgOiBjdXJyZW50Tm9kZS5wYXJlbnRJZDtcbiAgICBpZiAoY3VycmVudE5vZGUpIHtcbiAgICAgIGFsbEFuY2VzdG9ycyA9IGFsbEFuY2VzdG9ycy5jb25jYXQoY3VycmVudE5vZGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWxsQW5jZXN0b3JzO1xufVxuXG5mdW5jdGlvbiBnZXRDaGlsZHJlbihub2RlcywgaWQpIHtcbiAgbGV0IGFsbENoaWxkcmVuID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4ge1xuICAgIHZhciBfbm9kZSRjb250ZXh0O1xuICAgIHJldHVybiBub2RlLnBhcmVudElkID09PSBpZCAmJiAoKF9ub2RlJGNvbnRleHQgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0Lm9wZW4pO1xuICB9KTtcbiAgbGV0IGN1cnJlbnRDaGlsZHJlbiA9IGFsbENoaWxkcmVuO1xuICB3aGlsZSAoY3VycmVudENoaWxkcmVuLmxlbmd0aCkge1xuICAgIGN1cnJlbnRDaGlsZHJlbiA9IG5vZGVzLmZpbHRlcihub2RlID0+IHtcbiAgICAgIHZhciBfY3VycmVudENoaWxkcmVuO1xuICAgICAgcmV0dXJuIChfY3VycmVudENoaWxkcmVuID0gY3VycmVudENoaWxkcmVuKSA9PSBudWxsID8gdm9pZCAwIDogX2N1cnJlbnRDaGlsZHJlbi5zb21lKG4gPT4ge1xuICAgICAgICB2YXIgX25vZGUkY29udGV4dDI7XG4gICAgICAgIHJldHVybiBub2RlLnBhcmVudElkID09PSBuLmlkICYmICgoX25vZGUkY29udGV4dDIgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0Mi5vcGVuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGFsbENoaWxkcmVuID0gYWxsQ2hpbGRyZW4uY29uY2F0KGN1cnJlbnRDaGlsZHJlbik7XG4gIH1cbiAgcmV0dXJuIGFsbENoaWxkcmVuO1xufVxuZnVuY3Rpb24gZ2V0RGVlcGVzdE5vZGUobm9kZXMsIGlkKSB7XG4gIGxldCBkZWVwZXN0Tm9kZUlkO1xuICBsZXQgbWF4RGVwdGggPSAtMTtcbiAgZnVuY3Rpb24gZmluZERlZXBlc3Qobm9kZUlkLCBkZXB0aCkge1xuICAgIGlmIChkZXB0aCA+IG1heERlcHRoKSB7XG4gICAgICBkZWVwZXN0Tm9kZUlkID0gbm9kZUlkO1xuICAgICAgbWF4RGVwdGggPSBkZXB0aDtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRyZW4gPSBnZXRDaGlsZHJlbihub2Rlcywgbm9kZUlkKTtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgIGZpbmREZWVwZXN0KGNoaWxkLmlkLCBkZXB0aCArIDEpO1xuICAgIH0pO1xuICB9XG4gIGZpbmREZWVwZXN0KGlkLCAwKTtcbiAgcmV0dXJuIG5vZGVzLmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBkZWVwZXN0Tm9kZUlkKTtcbn1cblxuLy8gTW9kaWZpZWQgdG8gYWRkIGNvbmRpdGlvbmFsIGBhcmlhLWhpZGRlbmAgc3VwcG9ydDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvYXJpYS1oaWRkZW4vYmxvYi85MjIwYzhmNGE0ZmQzNWY2M2JlZTU1MTBhOWY0MWEzNzI2NDM4MmQ0L3NyYy9pbmRleC50c1xubGV0IGNvdW50ZXJNYXAgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbmxldCB1bmNvbnRyb2xsZWRFbGVtZW50c1NldCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xubGV0IG1hcmtlck1hcCA9IHt9O1xubGV0IGxvY2tDb3VudCA9IDA7XG5jb25zdCBzdXBwb3J0c0luZXJ0ID0gKCkgPT4gdHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiAnaW5lcnQnIGluIEhUTUxFbGVtZW50LnByb3RvdHlwZTtcbmNvbnN0IHVud3JhcEhvc3QgPSBub2RlID0+IG5vZGUgJiYgKG5vZGUuaG9zdCB8fCB1bndyYXBIb3N0KG5vZGUucGFyZW50Tm9kZSkpO1xuY29uc3QgY29ycmVjdEVsZW1lbnRzID0gKHBhcmVudCwgdGFyZ2V0cykgPT4gdGFyZ2V0cy5tYXAodGFyZ2V0ID0+IHtcbiAgaWYgKHBhcmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuICBjb25zdCBjb3JyZWN0ZWRUYXJnZXQgPSB1bndyYXBIb3N0KHRhcmdldCk7XG4gIGlmIChwYXJlbnQuY29udGFpbnMoY29ycmVjdGVkVGFyZ2V0KSkge1xuICAgIHJldHVybiBjb3JyZWN0ZWRUYXJnZXQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59KS5maWx0ZXIoeCA9PiB4ICE9IG51bGwpO1xuZnVuY3Rpb24gYXBwbHlBdHRyaWJ1dGVUb090aGVycyh1bmNvcnJlY3RlZEF2b2lkRWxlbWVudHMsIGJvZHksIGFyaWFIaWRkZW4sIGluZXJ0KSB7XG4gIGNvbnN0IG1hcmtlck5hbWUgPSAnZGF0YS1mbG9hdGluZy11aS1pbmVydCc7XG4gIGNvbnN0IGNvbnRyb2xBdHRyaWJ1dGUgPSBpbmVydCA/ICdpbmVydCcgOiBhcmlhSGlkZGVuID8gJ2FyaWEtaGlkZGVuJyA6IG51bGw7XG4gIGNvbnN0IGF2b2lkRWxlbWVudHMgPSBjb3JyZWN0RWxlbWVudHMoYm9keSwgdW5jb3JyZWN0ZWRBdm9pZEVsZW1lbnRzKTtcbiAgY29uc3QgZWxlbWVudHNUb0tlZXAgPSBuZXcgU2V0KCk7XG4gIGNvbnN0IGVsZW1lbnRzVG9TdG9wID0gbmV3IFNldChhdm9pZEVsZW1lbnRzKTtcbiAgY29uc3QgaGlkZGVuRWxlbWVudHMgPSBbXTtcbiAgaWYgKCFtYXJrZXJNYXBbbWFya2VyTmFtZV0pIHtcbiAgICBtYXJrZXJNYXBbbWFya2VyTmFtZV0gPSBuZXcgV2Vha01hcCgpO1xuICB9XG4gIGNvbnN0IG1hcmtlckNvdW50ZXIgPSBtYXJrZXJNYXBbbWFya2VyTmFtZV07XG4gIGF2b2lkRWxlbWVudHMuZm9yRWFjaChrZWVwKTtcbiAgZGVlcChib2R5KTtcbiAgZWxlbWVudHNUb0tlZXAuY2xlYXIoKTtcbiAgZnVuY3Rpb24ga2VlcChlbCkge1xuICAgIGlmICghZWwgfHwgZWxlbWVudHNUb0tlZXAuaGFzKGVsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbGVtZW50c1RvS2VlcC5hZGQoZWwpO1xuICAgIGVsLnBhcmVudE5vZGUgJiYga2VlcChlbC5wYXJlbnROb2RlKTtcbiAgfVxuICBmdW5jdGlvbiBkZWVwKHBhcmVudCkge1xuICAgIGlmICghcGFyZW50IHx8IGVsZW1lbnRzVG9TdG9wLmhhcyhwYXJlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFtdLmZvckVhY2guY2FsbChwYXJlbnQuY2hpbGRyZW4sIG5vZGUgPT4ge1xuICAgICAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnc2NyaXB0JykgcmV0dXJuO1xuICAgICAgaWYgKGVsZW1lbnRzVG9LZWVwLmhhcyhub2RlKSkge1xuICAgICAgICBkZWVwKG5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYXR0ciA9IGNvbnRyb2xBdHRyaWJ1dGUgPyBub2RlLmdldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGFscmVhZHlIaWRkZW4gPSBhdHRyICE9PSBudWxsICYmIGF0dHIgIT09ICdmYWxzZSc7XG4gICAgICAgIGNvbnN0IGNvdW50ZXJWYWx1ZSA9IChjb3VudGVyTWFwLmdldChub2RlKSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG1hcmtlclZhbHVlID0gKG1hcmtlckNvdW50ZXIuZ2V0KG5vZGUpIHx8IDApICsgMTtcbiAgICAgICAgY291bnRlck1hcC5zZXQobm9kZSwgY291bnRlclZhbHVlKTtcbiAgICAgICAgbWFya2VyQ291bnRlci5zZXQobm9kZSwgbWFya2VyVmFsdWUpO1xuICAgICAgICBoaWRkZW5FbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICBpZiAoY291bnRlclZhbHVlID09PSAxICYmIGFscmVhZHlIaWRkZW4pIHtcbiAgICAgICAgICB1bmNvbnRyb2xsZWRFbGVtZW50c1NldC5hZGQobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hcmtlclZhbHVlID09PSAxKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobWFya2VyTmFtZSwgJycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYWxyZWFkeUhpZGRlbiAmJiBjb250cm9sQXR0cmlidXRlKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoY29udHJvbEF0dHJpYnV0ZSwgJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGxvY2tDb3VudCsrO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGhpZGRlbkVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBjb25zdCBjb3VudGVyVmFsdWUgPSAoY291bnRlck1hcC5nZXQoZWxlbWVudCkgfHwgMCkgLSAxO1xuICAgICAgY29uc3QgbWFya2VyVmFsdWUgPSAobWFya2VyQ291bnRlci5nZXQoZWxlbWVudCkgfHwgMCkgLSAxO1xuICAgICAgY291bnRlck1hcC5zZXQoZWxlbWVudCwgY291bnRlclZhbHVlKTtcbiAgICAgIG1hcmtlckNvdW50ZXIuc2V0KGVsZW1lbnQsIG1hcmtlclZhbHVlKTtcbiAgICAgIGlmICghY291bnRlclZhbHVlKSB7XG4gICAgICAgIGlmICghdW5jb250cm9sbGVkRWxlbWVudHNTZXQuaGFzKGVsZW1lbnQpICYmIGNvbnRyb2xBdHRyaWJ1dGUpIHtcbiAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgICAgICB1bmNvbnRyb2xsZWRFbGVtZW50c1NldC5kZWxldGUoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICBpZiAoIW1hcmtlclZhbHVlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG1hcmtlck5hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxvY2tDb3VudC0tO1xuICAgIGlmICghbG9ja0NvdW50KSB7XG4gICAgICBjb3VudGVyTWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgdW5jb250cm9sbGVkRWxlbWVudHNTZXQgPSBuZXcgV2Vha1NldCgpO1xuICAgICAgbWFya2VyTWFwID0ge307XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gbWFya090aGVycyhhdm9pZEVsZW1lbnRzLCBhcmlhSGlkZGVuLCBpbmVydCkge1xuICBpZiAoYXJpYUhpZGRlbiA9PT0gdm9pZCAwKSB7XG4gICAgYXJpYUhpZGRlbiA9IGZhbHNlO1xuICB9XG4gIGlmIChpbmVydCA9PT0gdm9pZCAwKSB7XG4gICAgaW5lcnQgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBib2R5ID0gZ2V0RG9jdW1lbnQoYXZvaWRFbGVtZW50c1swXSkuYm9keTtcbiAgcmV0dXJuIGFwcGx5QXR0cmlidXRlVG9PdGhlcnMoYXZvaWRFbGVtZW50cy5jb25jYXQoQXJyYXkuZnJvbShib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thcmlhLWxpdmVdJykpKSwgYm9keSwgYXJpYUhpZGRlbiwgaW5lcnQpO1xufVxuXG5jb25zdCBnZXRUYWJiYWJsZU9wdGlvbnMgPSAoKSA9PiAoe1xuICBnZXRTaGFkb3dSb290OiB0cnVlLFxuICBkaXNwbGF5Q2hlY2s6XG4gIC8vIEpTRE9NIGRvZXMgbm90IHN1cHBvcnQgdGhlIGB0YWJiYWJsZWAgbGlicmFyeS4gVG8gc29sdmUgdGhpcyB3ZSBjYW5cbiAgLy8gY2hlY2sgaWYgYFJlc2l6ZU9ic2VydmVyYCBpcyBhIHJlYWwgZnVuY3Rpb24gKG5vdCBwb2x5ZmlsbGVkKSwgd2hpY2hcbiAgLy8gZGV0ZXJtaW5lcyBpZiB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBKU0RPTS1saWtlLlxuICB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicgJiYgUmVzaXplT2JzZXJ2ZXIudG9TdHJpbmcoKS5pbmNsdWRlcygnW25hdGl2ZSBjb2RlXScpID8gJ2Z1bGwnIDogJ25vbmUnXG59KTtcbmZ1bmN0aW9uIGdldFRhYmJhYmxlSW4oY29udGFpbmVyLCBkaXJlY3Rpb24pIHtcbiAgY29uc3QgYWxsVGFiYmFibGUgPSB0YWJiYWJsZShjb250YWluZXIsIGdldFRhYmJhYmxlT3B0aW9ucygpKTtcbiAgaWYgKGRpcmVjdGlvbiA9PT0gJ3ByZXYnKSB7XG4gICAgYWxsVGFiYmFibGUucmV2ZXJzZSgpO1xuICB9XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gYWxsVGFiYmFibGUuaW5kZXhPZihhY3RpdmVFbGVtZW50KGdldERvY3VtZW50KGNvbnRhaW5lcikpKTtcbiAgY29uc3QgbmV4dFRhYmJhYmxlRWxlbWVudHMgPSBhbGxUYWJiYWJsZS5zbGljZShhY3RpdmVJbmRleCArIDEpO1xuICByZXR1cm4gbmV4dFRhYmJhYmxlRWxlbWVudHNbMF07XG59XG5mdW5jdGlvbiBnZXROZXh0VGFiYmFibGUoKSB7XG4gIHJldHVybiBnZXRUYWJiYWJsZUluKGRvY3VtZW50LmJvZHksICduZXh0Jyk7XG59XG5mdW5jdGlvbiBnZXRQcmV2aW91c1RhYmJhYmxlKCkge1xuICByZXR1cm4gZ2V0VGFiYmFibGVJbihkb2N1bWVudC5ib2R5LCAncHJldicpO1xufVxuZnVuY3Rpb24gaXNPdXRzaWRlRXZlbnQoZXZlbnQsIGNvbnRhaW5lcikge1xuICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gY29udGFpbmVyIHx8IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xuICByZXR1cm4gIXJlbGF0ZWRUYXJnZXQgfHwgIWNvbnRhaW5zKGNvbnRhaW5lckVsZW1lbnQsIHJlbGF0ZWRUYXJnZXQpO1xufVxuZnVuY3Rpb24gZGlzYWJsZUZvY3VzSW5zaWRlKGNvbnRhaW5lcikge1xuICBjb25zdCB0YWJiYWJsZUVsZW1lbnRzID0gdGFiYmFibGUoY29udGFpbmVyLCBnZXRUYWJiYWJsZU9wdGlvbnMoKSk7XG4gIHRhYmJhYmxlRWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICBlbGVtZW50LmRhdGFzZXQudGFiaW5kZXggPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fCAnJztcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBlbmFibGVGb2N1c0luc2lkZShjb250YWluZXIpIHtcbiAgY29uc3QgZWxlbWVudHMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdGFiaW5kZXhdJyk7XG4gIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgY29uc3QgdGFiaW5kZXggPSBlbGVtZW50LmRhdGFzZXQudGFiaW5kZXg7XG4gICAgZGVsZXRlIGVsZW1lbnQuZGF0YXNldC50YWJpbmRleDtcbiAgICBpZiAodGFiaW5kZXgpIHtcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIHRhYmluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGdldENsb3Nlc3RUYWJiYWJsZUVsZW1lbnQodGFiYmFibGVFbGVtZW50cywgZWxlbWVudCwgZmxvYXRpbmcpIHtcbiAgY29uc3QgZWxlbWVudEluZGV4ID0gdGFiYmFibGVFbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpO1xuICBmdW5jdGlvbiB0cmF2ZXJzZVRhYmJhYmxlRWxlbWVudHMobmV4dCkge1xuICAgIGNvbnN0IGF0dHIgPSBjcmVhdGVBdHRyaWJ1dGUoJ2ZvY3VzLWd1YXJkJyk7XG4gICAgbGV0IGluZGV4ID0gZWxlbWVudEluZGV4ICsgKG5leHQgPyAxIDogMCk7XG4gICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gdGFiYmFibGVFbGVtZW50c1tpbmRleF07XG4gICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmICghY3VycmVudEVsZW1lbnQuaXNDb25uZWN0ZWQgfHwgY3VycmVudEVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHIpIHx8IGNvbnRhaW5zKGZsb2F0aW5nLCBjdXJyZW50RWxlbWVudCkpKSB7XG4gICAgICBpZiAobmV4dCkge1xuICAgICAgICBpbmRleCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5kZXgtLTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnRFbGVtZW50ID0gdGFiYmFibGVFbGVtZW50c1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50RWxlbWVudDtcbiAgfVxuXG4gIC8vIEZpcnN0LCB0cnkgdG8gZmluZCB0aGUgbmV4dCB0YWJiYWJsZSBlbGVtZW50XG4gIGNvbnN0IG5leHQgPSB0cmF2ZXJzZVRhYmJhYmxlRWxlbWVudHModHJ1ZSk7XG4gIGlmIChuZXh0KSB7XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICAvLyBJZiB3ZSBjYW4ndCBmaW5kIGEgbmV4dCB0YWJiYWJsZSBlbGVtZW50LCB0cnkgdG8gZmluZCB0aGUgcHJldmlvdXMgb25lXG4gIHJldHVybiB0cmF2ZXJzZVRhYmJhYmxlRWxlbWVudHMoZmFsc2UpO1xufVxuXG4vLyBTZWUgRGllZ28gSGF6J3MgU2FuZGJveCBmb3IgbWFraW5nIHRoaXMgbG9naWMgd29yayB3ZWxsIG9uIFNhZmFyaS9pT1M6XG4vLyBodHRwczovL2NvZGVzYW5kYm94LmlvL3MvdGFiYmFibGUtcG9ydGFsLWY0dG5nP2ZpbGU9L3NyYy9Gb2N1c1RyYXAudHN4XG5cbmNvbnN0IEhJRERFTl9TVFlMRVMgPSB7XG4gIGJvcmRlcjogMCxcbiAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICBoZWlnaHQ6ICcxcHgnLFxuICBtYXJnaW46ICctMXB4JyxcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICBwYWRkaW5nOiAwLFxuICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIHdpZHRoOiAnMXB4JyxcbiAgdG9wOiAwLFxuICBsZWZ0OiAwXG59O1xubGV0IHRpbWVvdXRJZDtcbmZ1bmN0aW9uIHNldEFjdGl2ZUVsZW1lbnRPblRhYihldmVudCkge1xuICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgIGV2ZW50LnRhcmdldDtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgfVxufVxuY29uc3QgRm9jdXNHdWFyZCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZvY3VzR3VhcmQocHJvcHMsIHJlZikge1xuICBjb25zdCBbcm9sZSwgc2V0Um9sZV0gPSBSZWFjdC51c2VTdGF0ZSgpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGlzU2FmYXJpKCkpIHtcbiAgICAgIC8vIFVubGlrZSBvdGhlciBzY3JlZW4gcmVhZGVycyBzdWNoIGFzIE5WREEgYW5kIEpBV1MsIHRoZSB2aXJ0dWFsIGN1cnNvclxuICAgICAgLy8gb24gVm9pY2VPdmVyIGRvZXMgdHJpZ2dlciB0aGUgb25Gb2N1cyBldmVudCwgc28gd2UgY2FuIHVzZSB0aGUgZm9jdXNcbiAgICAgIC8vIHRyYXAgZWxlbWVudC4gT24gU2FmYXJpLCBvbmx5IGJ1dHRvbnMgdHJpZ2dlciB0aGUgb25Gb2N1cyBldmVudC5cbiAgICAgIC8vIE5COiBcImdyb3VwXCIgcm9sZSBpbiB0aGUgU2FuZGJveCBubyBsb25nZXIgYXBwZWFycyB0byB3b3JrLCBtdXN0IGJlIGFcbiAgICAgIC8vIGJ1dHRvbiByb2xlLlxuICAgICAgc2V0Um9sZSgnYnV0dG9uJyk7XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBzZXRBY3RpdmVFbGVtZW50T25UYWIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgc2V0QWN0aXZlRWxlbWVudE9uVGFiKTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIGNvbnN0IHJlc3RQcm9wcyA9IHtcbiAgICByZWYsXG4gICAgdGFiSW5kZXg6IDAsXG4gICAgLy8gUm9sZSBpcyBvbmx5IGZvciBWb2ljZU92ZXJcbiAgICByb2xlLFxuICAgICdhcmlhLWhpZGRlbic6IHJvbGUgPyB1bmRlZmluZWQgOiB0cnVlLFxuICAgIFtjcmVhdGVBdHRyaWJ1dGUoJ2ZvY3VzLWd1YXJkJyldOiAnJyxcbiAgICBzdHlsZTogSElEREVOX1NUWUxFU1xuICB9O1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIF9leHRlbmRzKHt9LCBwcm9wcywgcmVzdFByb3BzKSk7XG59KTtcblxuY29uc3QgUG9ydGFsQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuY29uc3QgYXR0ciA9IC8qI19fUFVSRV9fKi9jcmVhdGVBdHRyaWJ1dGUoJ3BvcnRhbCcpO1xuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdQb3J0YWwjdXNlZmxvYXRpbmdwb3J0YWxub2RlXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nUG9ydGFsTm9kZShwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHJvb3RcbiAgfSA9IHByb3BzO1xuICBjb25zdCB1bmlxdWVJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IHBvcnRhbENvbnRleHQgPSB1c2VQb3J0YWxDb250ZXh0KCk7XG4gIGNvbnN0IFtwb3J0YWxOb2RlLCBzZXRQb3J0YWxOb2RlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBwb3J0YWxOb2RlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHBvcnRhbE5vZGUgPT0gbnVsbCB8fCBwb3J0YWxOb2RlLnJlbW92ZSgpO1xuICAgICAgLy8gQWxsb3cgdGhlIHN1YnNlcXVlbnQgbGF5b3V0IGVmZmVjdHMgdG8gY3JlYXRlIGEgbmV3IG5vZGUgb24gdXBkYXRlcy5cbiAgICAgIC8vIFRoZSBwb3J0YWwgbm9kZSB3aWxsIHN0aWxsIGJlIGNsZWFuZWQgdXAgb24gdW5tb3VudC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjQ1NFxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBwb3J0YWxOb2RlUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfSwgW3BvcnRhbE5vZGVdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIC8vIFdhaXQgZm9yIHRoZSB1bmlxdWVJZCB0byBiZSBnZW5lcmF0ZWQgYmVmb3JlIGNyZWF0aW5nIHRoZSBwb3J0YWwgbm9kZSBpblxuICAgIC8vIFJlYWN0IDwxOCAodXNpbmcgYHVzZUZsb2F0aW5nSWRgIGluc3RlYWQgb2YgdGhlIG5hdGl2ZSBgdXNlSWRgKS5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI3NzhcbiAgICBpZiAoIXVuaXF1ZUlkKSByZXR1cm47XG4gICAgaWYgKHBvcnRhbE5vZGVSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgIGNvbnN0IGV4aXN0aW5nSWRSb290ID0gaWQgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkgOiBudWxsO1xuICAgIGlmICghZXhpc3RpbmdJZFJvb3QpIHJldHVybjtcbiAgICBjb25zdCBzdWJSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgc3ViUm9vdC5pZCA9IHVuaXF1ZUlkO1xuICAgIHN1YlJvb3Quc2V0QXR0cmlidXRlKGF0dHIsICcnKTtcbiAgICBleGlzdGluZ0lkUm9vdC5hcHBlbmRDaGlsZChzdWJSb290KTtcbiAgICBwb3J0YWxOb2RlUmVmLmN1cnJlbnQgPSBzdWJSb290O1xuICAgIHNldFBvcnRhbE5vZGUoc3ViUm9vdCk7XG4gIH0sIFtpZCwgdW5pcXVlSWRdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghdW5pcXVlSWQpIHJldHVybjtcbiAgICBpZiAocG9ydGFsTm9kZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgbGV0IGNvbnRhaW5lciA9IHJvb3QgfHwgKHBvcnRhbENvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IHBvcnRhbENvbnRleHQucG9ydGFsTm9kZSk7XG4gICAgaWYgKGNvbnRhaW5lciAmJiAhaXNFbGVtZW50KGNvbnRhaW5lcikpIGNvbnRhaW5lciA9IGNvbnRhaW5lci5jdXJyZW50O1xuICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5O1xuICAgIGxldCBpZFdyYXBwZXIgPSBudWxsO1xuICAgIGlmIChpZCkge1xuICAgICAgaWRXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBpZFdyYXBwZXIuaWQgPSBpZDtcbiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpZFdyYXBwZXIpO1xuICAgIH1cbiAgICBjb25zdCBzdWJSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgc3ViUm9vdC5pZCA9IHVuaXF1ZUlkO1xuICAgIHN1YlJvb3Quc2V0QXR0cmlidXRlKGF0dHIsICcnKTtcbiAgICBjb250YWluZXIgPSBpZFdyYXBwZXIgfHwgY29udGFpbmVyO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzdWJSb290KTtcbiAgICBwb3J0YWxOb2RlUmVmLmN1cnJlbnQgPSBzdWJSb290O1xuICAgIHNldFBvcnRhbE5vZGUoc3ViUm9vdCk7XG4gIH0sIFtpZCwgcm9vdCwgdW5pcXVlSWQsIHBvcnRhbENvbnRleHRdKTtcbiAgcmV0dXJuIHBvcnRhbE5vZGU7XG59XG4vKipcbiAqIFBvcnRhbHMgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW50byBhIGdpdmVuIGNvbnRhaW5lciBlbGVtZW50IOKAlCBieSBkZWZhdWx0LFxuICogb3V0c2lkZSBvZiB0aGUgYXBwIHJvb3QgYW5kIGludG8gdGhlIGJvZHkuXG4gKiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgY2FuIGFwcGVhciBvdXRzaWRlIGFueVxuICogcG90ZW50aWFsIHBhcmVudCBjb250YWluZXJzIHRoYXQgY2F1c2UgY2xpcHBpbmcgKHN1Y2ggYXMgYG92ZXJmbG93OiBoaWRkZW5gKSxcbiAqIHdoaWxlIHJldGFpbmluZyBpdHMgbG9jYXRpb24gaW4gdGhlIFJlYWN0IHRyZWUuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdQb3J0YWxcbiAqL1xuZnVuY3Rpb24gRmxvYXRpbmdQb3J0YWwocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGlkLFxuICAgIHJvb3QgPSBudWxsLFxuICAgIHByZXNlcnZlVGFiT3JkZXIgPSB0cnVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgcG9ydGFsTm9kZSA9IHVzZUZsb2F0aW5nUG9ydGFsTm9kZSh7XG4gICAgaWQsXG4gICAgcm9vdFxuICB9KTtcbiAgY29uc3QgW2ZvY3VzTWFuYWdlclN0YXRlLCBzZXRGb2N1c01hbmFnZXJTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgYmVmb3JlT3V0c2lkZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgYWZ0ZXJPdXRzaWRlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBiZWZvcmVJbnNpZGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGFmdGVySW5zaWRlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBzaG91bGRSZW5kZXJHdWFyZHMgPVxuICAvLyBUaGUgRm9jdXNNYW5hZ2VyIGFuZCB0aGVyZWZvcmUgZmxvYXRpbmcgZWxlbWVudCBhcmUgY3VycmVudGx5IG9wZW4vXG4gIC8vIHJlbmRlcmVkLlxuICAhIWZvY3VzTWFuYWdlclN0YXRlICYmXG4gIC8vIEd1YXJkcyBhcmUgb25seSBmb3Igbm9uLW1vZGFsIGZvY3VzIG1hbmFnZW1lbnQuXG4gICFmb2N1c01hbmFnZXJTdGF0ZS5tb2RhbCAmJlxuICAvLyBEb24ndCByZW5kZXIgaWYgdW5tb3VudCBpcyB0cmFuc2l0aW9uaW5nLlxuICBmb2N1c01hbmFnZXJTdGF0ZS5vcGVuICYmIHByZXNlcnZlVGFiT3JkZXIgJiYgISEocm9vdCB8fCBwb3J0YWxOb2RlKTtcblxuICAvLyBodHRwczovL2NvZGVzYW5kYm94LmlvL3MvdGFiYmFibGUtcG9ydGFsLWY0dG5nP2ZpbGU9L3NyYy9UYWJiYWJsZVBvcnRhbC50c3hcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXBvcnRhbE5vZGUgfHwgIXByZXNlcnZlVGFiT3JkZXIgfHwgZm9jdXNNYW5hZ2VyU3RhdGUgIT0gbnVsbCAmJiBmb2N1c01hbmFnZXJTdGF0ZS5tb2RhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBlbGVtZW50cyBpbnNpZGUgdGhlIHBvcnRhbCBlbGVtZW50IGFyZSB0YWJiYWJsZSBvbmx5IHdoZW4gdGhlXG4gICAgLy8gcG9ydGFsIGhhcyBhbHJlYWR5IGJlZW4gZm9jdXNlZCwgZWl0aGVyIGJ5IHRhYmJpbmcgaW50byBhIGZvY3VzIHRyYXBcbiAgICAvLyBlbGVtZW50IG91dHNpZGUgb3IgdXNpbmcgdGhlIG1vdXNlLlxuICAgIGZ1bmN0aW9uIG9uRm9jdXMoZXZlbnQpIHtcbiAgICAgIGlmIChwb3J0YWxOb2RlICYmIGlzT3V0c2lkZUV2ZW50KGV2ZW50KSkge1xuICAgICAgICBjb25zdCBmb2N1c2luZyA9IGV2ZW50LnR5cGUgPT09ICdmb2N1c2luJztcbiAgICAgICAgY29uc3QgbWFuYWdlRm9jdXMgPSBmb2N1c2luZyA/IGVuYWJsZUZvY3VzSW5zaWRlIDogZGlzYWJsZUZvY3VzSW5zaWRlO1xuICAgICAgICBtYW5hZ2VGb2N1cyhwb3J0YWxOb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gTGlzdGVuIHRvIHRoZSBldmVudCBvbiB0aGUgY2FwdHVyZSBwaGFzZSBzbyB0aGV5IHJ1biBiZWZvcmUgdGhlIGZvY3VzXG4gICAgLy8gdHJhcCBlbGVtZW50cyBvbkZvY3VzIHByb3AgaXMgY2FsbGVkLlxuICAgIHBvcnRhbE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIG9uRm9jdXMsIHRydWUpO1xuICAgIHBvcnRhbE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBvbkZvY3VzLCB0cnVlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcG9ydGFsTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgb25Gb2N1cywgdHJ1ZSk7XG4gICAgICBwb3J0YWxOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0Jywgb25Gb2N1cywgdHJ1ZSk7XG4gICAgfTtcbiAgfSwgW3BvcnRhbE5vZGUsIHByZXNlcnZlVGFiT3JkZXIsIGZvY3VzTWFuYWdlclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBmb2N1c01hbmFnZXJTdGF0ZS5tb2RhbF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUG9ydGFsQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICBwcmVzZXJ2ZVRhYk9yZGVyLFxuICAgICAgYmVmb3JlT3V0c2lkZVJlZixcbiAgICAgIGFmdGVyT3V0c2lkZVJlZixcbiAgICAgIGJlZm9yZUluc2lkZVJlZixcbiAgICAgIGFmdGVySW5zaWRlUmVmLFxuICAgICAgcG9ydGFsTm9kZSxcbiAgICAgIHNldEZvY3VzTWFuYWdlclN0YXRlXG4gICAgfSksIFtwcmVzZXJ2ZVRhYk9yZGVyLCBwb3J0YWxOb2RlXSlcbiAgfSwgc2hvdWxkUmVuZGVyR3VhcmRzICYmIHBvcnRhbE5vZGUgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNHdWFyZCwge1xuICAgIFwiZGF0YS10eXBlXCI6IFwib3V0c2lkZVwiLFxuICAgIHJlZjogYmVmb3JlT3V0c2lkZVJlZixcbiAgICBvbkZvY3VzOiBldmVudCA9PiB7XG4gICAgICBpZiAoaXNPdXRzaWRlRXZlbnQoZXZlbnQsIHBvcnRhbE5vZGUpKSB7XG4gICAgICAgIHZhciBfYmVmb3JlSW5zaWRlUmVmJGN1cnI7XG4gICAgICAgIChfYmVmb3JlSW5zaWRlUmVmJGN1cnIgPSBiZWZvcmVJbnNpZGVSZWYuY3VycmVudCkgPT0gbnVsbCB8fCBfYmVmb3JlSW5zaWRlUmVmJGN1cnIuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHByZXZUYWJiYWJsZSA9IGdldFByZXZpb3VzVGFiYmFibGUoKSB8fCAoZm9jdXNNYW5hZ2VyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IGZvY3VzTWFuYWdlclN0YXRlLnJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQpO1xuICAgICAgICBwcmV2VGFiYmFibGUgPT0gbnVsbCB8fCBwcmV2VGFiYmFibGUuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pLCBzaG91bGRSZW5kZXJHdWFyZHMgJiYgcG9ydGFsTm9kZSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIFwiYXJpYS1vd25zXCI6IHBvcnRhbE5vZGUuaWQsXG4gICAgc3R5bGU6IEhJRERFTl9TVFlMRVNcbiAgfSksIHBvcnRhbE5vZGUgJiYgLyojX19QVVJFX18qL1JlYWN0RE9NLmNyZWF0ZVBvcnRhbChjaGlsZHJlbiwgcG9ydGFsTm9kZSksIHNob3VsZFJlbmRlckd1YXJkcyAmJiBwb3J0YWxOb2RlICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZvY3VzR3VhcmQsIHtcbiAgICBcImRhdGEtdHlwZVwiOiBcIm91dHNpZGVcIixcbiAgICByZWY6IGFmdGVyT3V0c2lkZVJlZixcbiAgICBvbkZvY3VzOiBldmVudCA9PiB7XG4gICAgICBpZiAoaXNPdXRzaWRlRXZlbnQoZXZlbnQsIHBvcnRhbE5vZGUpKSB7XG4gICAgICAgIHZhciBfYWZ0ZXJJbnNpZGVSZWYkY3VycmU7XG4gICAgICAgIChfYWZ0ZXJJbnNpZGVSZWYkY3VycmUgPSBhZnRlckluc2lkZVJlZi5jdXJyZW50KSA9PSBudWxsIHx8IF9hZnRlckluc2lkZVJlZiRjdXJyZS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV4dFRhYmJhYmxlID0gZ2V0TmV4dFRhYmJhYmxlKCkgfHwgKGZvY3VzTWFuYWdlclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBmb2N1c01hbmFnZXJTdGF0ZS5yZWZzLmRvbVJlZmVyZW5jZS5jdXJyZW50KTtcbiAgICAgICAgbmV4dFRhYmJhYmxlID09IG51bGwgfHwgbmV4dFRhYmJhYmxlLmZvY3VzKCk7XG4gICAgICAgIChmb2N1c01hbmFnZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogZm9jdXNNYW5hZ2VyU3RhdGUuY2xvc2VPbkZvY3VzT3V0KSAmJiAoZm9jdXNNYW5hZ2VyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IGZvY3VzTWFuYWdlclN0YXRlLm9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pKTtcbn1cbmNvbnN0IHVzZVBvcnRhbENvbnRleHQgPSAoKSA9PiBSZWFjdC51c2VDb250ZXh0KFBvcnRhbENvbnRleHQpO1xuXG5jb25zdCBMSVNUX0xJTUlUID0gMjA7XG5sZXQgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cyA9IFtdO1xuZnVuY3Rpb24gYWRkUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KGVsZW1lbnQpIHtcbiAgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cyA9IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMuZmlsdGVyKGVsID0+IGVsLmlzQ29ubmVjdGVkKTtcbiAgbGV0IHRhYmJhYmxlRWwgPSBlbGVtZW50O1xuICBpZiAoIXRhYmJhYmxlRWwgfHwgZ2V0Tm9kZU5hbWUodGFiYmFibGVFbCkgPT09ICdib2R5JykgcmV0dXJuO1xuICBpZiAoIWlzVGFiYmFibGUodGFiYmFibGVFbCwgZ2V0VGFiYmFibGVPcHRpb25zKCkpKSB7XG4gICAgY29uc3QgdGFiYmFibGVDaGlsZCA9IHRhYmJhYmxlKHRhYmJhYmxlRWwsIGdldFRhYmJhYmxlT3B0aW9ucygpKVswXTtcbiAgICBpZiAodGFiYmFibGVDaGlsZCkge1xuICAgICAgdGFiYmFibGVFbCA9IHRhYmJhYmxlQ2hpbGQ7XG4gICAgfVxuICB9XG4gIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMucHVzaCh0YWJiYWJsZUVsKTtcbiAgaWYgKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMubGVuZ3RoID4gTElTVF9MSU1JVCkge1xuICAgIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMgPSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnRzLnNsaWNlKC1MSVNUX0xJTUlUKTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCkge1xuICByZXR1cm4gcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cy5zbGljZSgpLnJldmVyc2UoKS5maW5kKGVsID0+IGVsLmlzQ29ubmVjdGVkKTtcbn1cbmNvbnN0IFZpc3VhbGx5SGlkZGVuRGlzbWlzcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFZpc3VhbGx5SGlkZGVuRGlzbWlzcyhwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgIHJlZjogcmVmLFxuICAgIHRhYkluZGV4OiAtMSxcbiAgICBzdHlsZTogSElEREVOX1NUWUxFU1xuICB9KSk7XG59KTtcbi8qKlxuICogUHJvdmlkZXMgZm9jdXMgbWFuYWdlbWVudCBmb3IgdGhlIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdGb2N1c01hbmFnZXJcbiAqL1xuZnVuY3Rpb24gRmxvYXRpbmdGb2N1c01hbmFnZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbnRleHQsXG4gICAgY2hpbGRyZW4sXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICBvcmRlciA9IFsnY29udGVudCddLFxuICAgIGd1YXJkczogX2d1YXJkcyA9IHRydWUsXG4gICAgaW5pdGlhbEZvY3VzID0gMCxcbiAgICByZXR1cm5Gb2N1cyA9IHRydWUsXG4gICAgcmVzdG9yZUZvY3VzID0gZmFsc2UsXG4gICAgbW9kYWwgPSB0cnVlLFxuICAgIHZpc3VhbGx5SGlkZGVuRGlzbWlzcyA9IGZhbHNlLFxuICAgIGNsb3NlT25Gb2N1c091dCA9IHRydWVcbiAgfSA9IHByb3BzO1xuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICByZWZzLFxuICAgIG5vZGVJZCxcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZXZlbnRzLFxuICAgIGRhdGFSZWYsXG4gICAgZmxvYXRpbmdJZCxcbiAgICBlbGVtZW50czoge1xuICAgICAgZG9tUmVmZXJlbmNlLFxuICAgICAgZmxvYXRpbmdcbiAgICB9XG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCBpZ25vcmVJbml0aWFsRm9jdXMgPSB0eXBlb2YgaW5pdGlhbEZvY3VzID09PSAnbnVtYmVyJyAmJiBpbml0aWFsRm9jdXMgPCAwO1xuICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGEgY29tYm9ib3ggYW5kIGlzIHR5cGVhYmxlIChlLmcuIGlucHV0L3RleHRhcmVhKSxcbiAgLy8gdGhlcmUgYXJlIGRpZmZlcmVudCBmb2N1cyBzZW1hbnRpY3MuIFRoZSBndWFyZHMgc2hvdWxkIG5vdCBiZSByZW5kZXJlZCwgYnV0XG4gIC8vIGFyaWEtaGlkZGVuIHNob3VsZCBiZSBhcHBsaWVkIHRvIGFsbCBub2RlcyBzdGlsbC4gRnVydGhlciwgdGhlIHZpc3VhbGx5XG4gIC8vIGhpZGRlbiBkaXNtaXNzIGJ1dHRvbiBzaG91bGQgb25seSBhcHBlYXIgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgbm90IHRoZVxuICAvLyBzdGFydC5cbiAgY29uc3QgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94ID0gaXNUeXBlYWJsZUNvbWJvYm94KGRvbVJlZmVyZW5jZSkgJiYgaWdub3JlSW5pdGlhbEZvY3VzO1xuXG4gIC8vIEZvcmNlIHRoZSBndWFyZHMgdG8gYmUgcmVuZGVyZWQgaWYgdGhlIGBpbmVydGAgYXR0cmlidXRlIGlzIG5vdCBzdXBwb3J0ZWQuXG4gIGNvbnN0IGd1YXJkcyA9IHN1cHBvcnRzSW5lcnQoKSA/IF9ndWFyZHMgOiB0cnVlO1xuICBjb25zdCBvcmRlclJlZiA9IHVzZUxhdGVzdFJlZihvcmRlcik7XG4gIGNvbnN0IGluaXRpYWxGb2N1c1JlZiA9IHVzZUxhdGVzdFJlZihpbml0aWFsRm9jdXMpO1xuICBjb25zdCByZXR1cm5Gb2N1c1JlZiA9IHVzZUxhdGVzdFJlZihyZXR1cm5Gb2N1cyk7XG4gIGNvbnN0IHRyZWUgPSB1c2VGbG9hdGluZ1RyZWUoKTtcbiAgY29uc3QgcG9ydGFsQ29udGV4dCA9IHVzZVBvcnRhbENvbnRleHQoKTtcbiAgY29uc3Qgc3RhcnREaXNtaXNzQnV0dG9uUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBlbmREaXNtaXNzQnV0dG9uUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBwcmV2ZW50UmV0dXJuRm9jdXNSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBpc1BvaW50ZXJEb3duUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgdGFiYmFibGVJbmRleFJlZiA9IFJlYWN0LnVzZVJlZigtMSk7XG4gIGNvbnN0IGlzSW5zaWRlUG9ydGFsID0gcG9ydGFsQ29udGV4dCAhPSBudWxsO1xuICBjb25zdCBmaXJzdEVsZW1lbnRDaGlsZCA9IGZsb2F0aW5nID09IG51bGwgPyB2b2lkIDAgOiBmbG9hdGluZy5maXJzdEVsZW1lbnRDaGlsZDtcbiAgLy8gSWYgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgYWN0aW5nIGFzIGEgcG9zaXRpb25pbmcgd3JhcHBlciByYXRoZXIgdGhhbiB0aGVcbiAgLy8gZWxlbWVudCB0aGF0IHJlY2VpdmVzIGFyaWEgcHJvcHMsIHVzZSBpdCBhcyB0aGUgZm9jdXMgcm9vdCBpbnN0ZWFkLlxuICBjb25zdCBmbG9hdGluZ0ZvY3VzTm9kZSA9IChmaXJzdEVsZW1lbnRDaGlsZCA9PSBudWxsID8gdm9pZCAwIDogZmlyc3RFbGVtZW50Q2hpbGQuaWQpID09PSBmbG9hdGluZ0lkID8gZmlyc3RFbGVtZW50Q2hpbGQgOiBmbG9hdGluZztcbiAgY29uc3QgZ2V0VGFiYmFibGVDb250ZW50ID0gdXNlRWZmZWN0RXZlbnQoZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICAgIGlmIChjb250YWluZXIgPT09IHZvaWQgMCkge1xuICAgICAgY29udGFpbmVyID0gZmxvYXRpbmdGb2N1c05vZGU7XG4gICAgfVxuICAgIHJldHVybiBjb250YWluZXIgPyB0YWJiYWJsZShjb250YWluZXIsIGdldFRhYmJhYmxlT3B0aW9ucygpKSA6IFtdO1xuICB9KTtcbiAgY29uc3QgZ2V0VGFiYmFibGVFbGVtZW50cyA9IHVzZUVmZmVjdEV2ZW50KGNvbnRhaW5lciA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IGdldFRhYmJhYmxlQ29udGVudChjb250YWluZXIpO1xuICAgIHJldHVybiBvcmRlclJlZi5jdXJyZW50Lm1hcCh0eXBlID0+IHtcbiAgICAgIGlmIChkb21SZWZlcmVuY2UgJiYgdHlwZSA9PT0gJ3JlZmVyZW5jZScpIHtcbiAgICAgICAgcmV0dXJuIGRvbVJlZmVyZW5jZTtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZ0ZvY3VzTm9kZSAmJiB0eXBlID09PSAnZmxvYXRpbmcnKSB7XG4gICAgICAgIHJldHVybiBmbG9hdGluZ0ZvY3VzTm9kZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmZpbHRlcihCb29sZWFuKS5mbGF0KCk7XG4gIH0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICghbW9kYWwpIHJldHVybjtcbiAgICBmdW5jdGlvbiBvbktleURvd24oZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgIC8vIFRoZSBmb2N1cyBndWFyZHMgaGF2ZSBub3RoaW5nIHRvIGZvY3VzLCBzbyB3ZSBuZWVkIHRvIHN0b3AgdGhlIGV2ZW50LlxuICAgICAgICBpZiAoY29udGFpbnMoZmxvYXRpbmdGb2N1c05vZGUsIGFjdGl2ZUVsZW1lbnQoZ2V0RG9jdW1lbnQoZmxvYXRpbmdGb2N1c05vZGUpKSkgJiYgZ2V0VGFiYmFibGVDb250ZW50KCkubGVuZ3RoID09PSAwICYmICFpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3gpIHtcbiAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVscyA9IGdldFRhYmJhYmxlRWxlbWVudHMoKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGV2ZW50KTtcbiAgICAgICAgaWYgKG9yZGVyUmVmLmN1cnJlbnRbMF0gPT09ICdyZWZlcmVuY2UnICYmIHRhcmdldCA9PT0gZG9tUmVmZXJlbmNlKSB7XG4gICAgICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGVucXVldWVGb2N1cyhlbHNbZWxzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW5xdWV1ZUZvY3VzKGVsc1sxXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvcmRlclJlZi5jdXJyZW50WzFdID09PSAnZmxvYXRpbmcnICYmIHRhcmdldCA9PT0gZmxvYXRpbmdGb2N1c05vZGUgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICAgIGVucXVldWVGb2N1cyhlbHNbMF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KGZsb2F0aW5nRm9jdXNOb2RlKTtcbiAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duKTtcbiAgICB9O1xuICB9LCBbZGlzYWJsZWQsIGRvbVJlZmVyZW5jZSwgZmxvYXRpbmdGb2N1c05vZGUsIG1vZGFsLCBvcmRlclJlZiwgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94LCBnZXRUYWJiYWJsZUNvbnRlbnQsIGdldFRhYmJhYmxlRWxlbWVudHNdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIWZsb2F0aW5nKSByZXR1cm47XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXNJbihldmVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGV2ZW50KTtcbiAgICAgIGNvbnN0IHRhYmJhYmxlQ29udGVudCA9IGdldFRhYmJhYmxlQ29udGVudCgpO1xuICAgICAgY29uc3QgdGFiYmFibGVJbmRleCA9IHRhYmJhYmxlQ29udGVudC5pbmRleE9mKHRhcmdldCk7XG4gICAgICBpZiAodGFiYmFibGVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGFiYmFibGVJbmRleFJlZi5jdXJyZW50ID0gdGFiYmFibGVJbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgZmxvYXRpbmcuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzSW4pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBmbG9hdGluZy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgfTtcbiAgfSwgW2Rpc2FibGVkLCBmbG9hdGluZywgZ2V0VGFiYmFibGVDb250ZW50XSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm47XG4gICAgaWYgKCFjbG9zZU9uRm9jdXNPdXQpIHJldHVybjtcblxuICAgIC8vIEluIFNhZmFyaSwgYnV0dG9ucyBsb3NlIGZvY3VzIHdoZW4gcHJlc3NpbmcgdGhlbS5cbiAgICBmdW5jdGlvbiBoYW5kbGVQb2ludGVyRG93bigpIHtcbiAgICAgIGlzUG9pbnRlckRvd25SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaXNQb2ludGVyRG93blJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXNPdXRzaWRlKGV2ZW50KSB7XG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldDtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRUb1VucmVsYXRlZE5vZGUgPSAhKGNvbnRhaW5zKGRvbVJlZmVyZW5jZSwgcmVsYXRlZFRhcmdldCkgfHwgY29udGFpbnMoZmxvYXRpbmcsIHJlbGF0ZWRUYXJnZXQpIHx8IGNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQsIGZsb2F0aW5nKSB8fCBjb250YWlucyhwb3J0YWxDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBwb3J0YWxDb250ZXh0LnBvcnRhbE5vZGUsIHJlbGF0ZWRUYXJnZXQpIHx8IHJlbGF0ZWRUYXJnZXQgIT0gbnVsbCAmJiByZWxhdGVkVGFyZ2V0Lmhhc0F0dHJpYnV0ZShjcmVhdGVBdHRyaWJ1dGUoJ2ZvY3VzLWd1YXJkJykpIHx8IHRyZWUgJiYgKGdldENoaWxkcmVuKHRyZWUubm9kZXNSZWYuY3VycmVudCwgbm9kZUlkKS5maW5kKG5vZGUgPT4ge1xuICAgICAgICAgIHZhciBfbm9kZSRjb250ZXh0LCBfbm9kZSRjb250ZXh0MjtcbiAgICAgICAgICByZXR1cm4gY29udGFpbnMoKF9ub2RlJGNvbnRleHQgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0LmVsZW1lbnRzLmZsb2F0aW5nLCByZWxhdGVkVGFyZ2V0KSB8fCBjb250YWlucygoX25vZGUkY29udGV4dDIgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0Mi5lbGVtZW50cy5kb21SZWZlcmVuY2UsIHJlbGF0ZWRUYXJnZXQpO1xuICAgICAgICB9KSB8fCBnZXRBbmNlc3RvcnModHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpLmZpbmQobm9kZSA9PiB7XG4gICAgICAgICAgdmFyIF9ub2RlJGNvbnRleHQzLCBfbm9kZSRjb250ZXh0NDtcbiAgICAgICAgICByZXR1cm4gKChfbm9kZSRjb250ZXh0MyA9IG5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJGNvbnRleHQzLmVsZW1lbnRzLmZsb2F0aW5nKSA9PT0gcmVsYXRlZFRhcmdldCB8fCAoKF9ub2RlJGNvbnRleHQ0ID0gbm9kZS5jb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkY29udGV4dDQuZWxlbWVudHMuZG9tUmVmZXJlbmNlKSA9PT0gcmVsYXRlZFRhcmdldDtcbiAgICAgICAgfSkpKTtcblxuICAgICAgICAvLyBSZXN0b3JlIGZvY3VzIHRvIHRoZSBwcmV2aW91cyB0YWJiYWJsZSBlbGVtZW50IGluZGV4IHRvIHByZXZlbnRcbiAgICAgICAgLy8gZm9jdXMgZnJvbSBiZWluZyBsb3N0IG91dHNpZGUgdGhlIGZsb2F0aW5nIHRyZWUuXG4gICAgICAgIGlmIChyZXN0b3JlRm9jdXMgJiYgbW92ZWRUb1VucmVsYXRlZE5vZGUgJiYgYWN0aXZlRWxlbWVudChnZXREb2N1bWVudChmbG9hdGluZ0ZvY3VzTm9kZSkpID09PSBnZXREb2N1bWVudChmbG9hdGluZ0ZvY3VzTm9kZSkuYm9keSkge1xuICAgICAgICAgIC8vIExldCBgRmxvYXRpbmdQb3J0YWxgIGVmZmVjdCBrbm93cyB0aGF0IGZvY3VzIGlzIHN0aWxsIGluc2lkZSB0aGVcbiAgICAgICAgICAvLyBmbG9hdGluZyB0cmVlLlxuICAgICAgICAgIGlmIChpc0hUTUxFbGVtZW50KGZsb2F0aW5nRm9jdXNOb2RlKSkge1xuICAgICAgICAgICAgZmxvYXRpbmdGb2N1c05vZGUgPT0gbnVsbCB8fCBmbG9hdGluZ0ZvY3VzTm9kZS5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBwcmV2VGFiYmFibGVJbmRleCA9IHRhYmJhYmxlSW5kZXhSZWYuY3VycmVudDtcbiAgICAgICAgICBjb25zdCB0YWJiYWJsZUNvbnRlbnQgPSBnZXRUYWJiYWJsZUNvbnRlbnQoKTtcbiAgICAgICAgICBjb25zdCBub2RlVG9Gb2N1cyA9IHRhYmJhYmxlQ29udGVudFtwcmV2VGFiYmFibGVJbmRleF0gfHwgdGFiYmFibGVDb250ZW50W3RhYmJhYmxlQ29udGVudC5sZW5ndGggLSAxXSB8fCBmbG9hdGluZ0ZvY3VzTm9kZTtcbiAgICAgICAgICBpZiAoaXNIVE1MRWxlbWVudChub2RlVG9Gb2N1cykpIHtcbiAgICAgICAgICAgIG5vZGVUb0ZvY3VzLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9jdXMgZGlkIG5vdCBtb3ZlIGluc2lkZSB0aGUgZmxvYXRpbmcgdHJlZSwgYW5kIHRoZXJlIGFyZSBubyB0YWJiYWJsZVxuICAgICAgICAvLyBwb3J0YWwgZ3VhcmRzIHRvIGhhbmRsZSBjbG9zaW5nLlxuICAgICAgICBpZiAoKGlzVW50cmFwcGVkVHlwZWFibGVDb21ib2JveCA/IHRydWUgOiAhbW9kYWwpICYmIHJlbGF0ZWRUYXJnZXQgJiYgbW92ZWRUb1VucmVsYXRlZE5vZGUgJiYgIWlzUG9pbnRlckRvd25SZWYuY3VycmVudCAmJlxuICAgICAgICAvLyBGaXggUmVhY3QgMTggU3RyaWN0IE1vZGUgcmV0dXJuRm9jdXMgZHVlIHRvIGRvdWJsZSByZW5kZXJpbmcuXG4gICAgICAgIHJlbGF0ZWRUYXJnZXQgIT09IGdldFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpKSB7XG4gICAgICAgICAgcHJldmVudFJldHVybkZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGZsb2F0aW5nICYmIGlzSFRNTEVsZW1lbnQoZG9tUmVmZXJlbmNlKSkge1xuICAgICAgZG9tUmVmZXJlbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXRzaWRlKTtcbiAgICAgIGRvbVJlZmVyZW5jZS5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgIGZsb2F0aW5nLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXRzaWRlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvbVJlZmVyZW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIGhhbmRsZUZvY3VzT3V0c2lkZSk7XG4gICAgICAgIGRvbVJlZmVyZW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgICAgZmxvYXRpbmcucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBoYW5kbGVGb2N1c091dHNpZGUpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtkaXNhYmxlZCwgZG9tUmVmZXJlbmNlLCBmbG9hdGluZywgZmxvYXRpbmdGb2N1c05vZGUsIG1vZGFsLCBub2RlSWQsIHRyZWUsIHBvcnRhbENvbnRleHQsIG9uT3BlbkNoYW5nZSwgY2xvc2VPbkZvY3VzT3V0LCByZXN0b3JlRm9jdXMsIGdldFRhYmJhYmxlQ29udGVudCwgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94XSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdmFyIF9wb3J0YWxDb250ZXh0JHBvcnRhbDtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcblxuICAgIC8vIERvbid0IGhpZGUgcG9ydGFscyBuZXN0ZWQgd2l0aGluIHRoZSBwYXJlbnQgcG9ydGFsLlxuICAgIGNvbnN0IHBvcnRhbE5vZGVzID0gQXJyYXkuZnJvbSgocG9ydGFsQ29udGV4dCA9PSBudWxsIHx8IChfcG9ydGFsQ29udGV4dCRwb3J0YWwgPSBwb3J0YWxDb250ZXh0LnBvcnRhbE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfcG9ydGFsQ29udGV4dCRwb3J0YWwucXVlcnlTZWxlY3RvckFsbChcIltcIiArIGNyZWF0ZUF0dHJpYnV0ZSgncG9ydGFsJykgKyBcIl1cIikpIHx8IFtdKTtcbiAgICBpZiAoZmxvYXRpbmcpIHtcbiAgICAgIGNvbnN0IGluc2lkZUVsZW1lbnRzID0gW2Zsb2F0aW5nLCAuLi5wb3J0YWxOb2Rlcywgc3RhcnREaXNtaXNzQnV0dG9uUmVmLmN1cnJlbnQsIGVuZERpc21pc3NCdXR0b25SZWYuY3VycmVudCwgb3JkZXJSZWYuY3VycmVudC5pbmNsdWRlcygncmVmZXJlbmNlJykgfHwgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94ID8gZG9tUmVmZXJlbmNlIDogbnVsbF0uZmlsdGVyKHggPT4geCAhPSBudWxsKTtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSBtb2RhbCB8fCBpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3ggPyBtYXJrT3RoZXJzKGluc2lkZUVsZW1lbnRzLCBndWFyZHMsICFndWFyZHMpIDogbWFya090aGVycyhpbnNpZGVFbGVtZW50cyk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2Rpc2FibGVkLCBkb21SZWZlcmVuY2UsIGZsb2F0aW5nLCBtb2RhbCwgb3JkZXJSZWYsIHBvcnRhbENvbnRleHQsIGlzVW50cmFwcGVkVHlwZWFibGVDb21ib2JveCwgZ3VhcmRzXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQgfHwgIWlzSFRNTEVsZW1lbnQoZmxvYXRpbmdGb2N1c05vZGUpKSByZXR1cm47XG4gICAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoZmxvYXRpbmdGb2N1c05vZGUpO1xuICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQoZG9jKTtcblxuICAgIC8vIFdhaXQgZm9yIGFueSBsYXlvdXQgZWZmZWN0IHN0YXRlIHNldHRlcnMgdG8gZXhlY3V0ZSB0byBzZXQgYHRhYkluZGV4YC5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGdldFRhYmJhYmxlRWxlbWVudHMoZmxvYXRpbmdGb2N1c05vZGUpO1xuICAgICAgY29uc3QgaW5pdGlhbEZvY3VzVmFsdWUgPSBpbml0aWFsRm9jdXNSZWYuY3VycmVudDtcbiAgICAgIGNvbnN0IGVsVG9Gb2N1cyA9ICh0eXBlb2YgaW5pdGlhbEZvY3VzVmFsdWUgPT09ICdudW1iZXInID8gZm9jdXNhYmxlRWxlbWVudHNbaW5pdGlhbEZvY3VzVmFsdWVdIDogaW5pdGlhbEZvY3VzVmFsdWUuY3VycmVudCkgfHwgZmxvYXRpbmdGb2N1c05vZGU7XG4gICAgICBjb25zdCBmb2N1c0FscmVhZHlJbnNpZGVGbG9hdGluZ0VsID0gY29udGFpbnMoZmxvYXRpbmdGb2N1c05vZGUsIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCk7XG4gICAgICBpZiAoIWlnbm9yZUluaXRpYWxGb2N1cyAmJiAhZm9jdXNBbHJlYWR5SW5zaWRlRmxvYXRpbmdFbCAmJiBvcGVuKSB7XG4gICAgICAgIGVucXVldWVGb2N1cyhlbFRvRm9jdXMsIHtcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiBlbFRvRm9jdXMgPT09IGZsb2F0aW5nRm9jdXNOb2RlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbZGlzYWJsZWQsIG9wZW4sIGZsb2F0aW5nRm9jdXNOb2RlLCBpZ25vcmVJbml0aWFsRm9jdXMsIGdldFRhYmJhYmxlRWxlbWVudHMsIGluaXRpYWxGb2N1c1JlZl0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkIHx8ICFmbG9hdGluZ0ZvY3VzTm9kZSkgcmV0dXJuO1xuICAgIGxldCBwcmV2ZW50UmV0dXJuRm9jdXNTY3JvbGwgPSBmYWxzZTtcbiAgICBjb25zdCBkb2MgPSBnZXREb2N1bWVudChmbG9hdGluZ0ZvY3VzTm9kZSk7XG4gICAgY29uc3QgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gYWN0aXZlRWxlbWVudChkb2MpO1xuICAgIGNvbnN0IGNvbnRleHREYXRhID0gZGF0YVJlZi5jdXJyZW50O1xuICAgIGxldCBvcGVuRXZlbnQgPSBjb250ZXh0RGF0YS5vcGVuRXZlbnQ7XG4gICAgY29uc3QgZG9tUmVmZXJlbmNlID0gcmVmcy5kb21SZWZlcmVuY2UuY3VycmVudDtcbiAgICBhZGRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQocHJldmlvdXNseUZvY3VzZWRFbGVtZW50KTtcblxuICAgIC8vIERpc21pc3NpbmcgdmlhIG91dHNpZGUgcHJlc3Mgc2hvdWxkIGFsd2F5cyBpZ25vcmUgYHJldHVybkZvY3VzYCB0b1xuICAgIC8vIHByZXZlbnQgdW53YW50ZWQgc2Nyb2xsaW5nLlxuICAgIGZ1bmN0aW9uIG9uT3BlbkNoYW5nZShfcmVmKSB7XG4gICAgICBsZXQge1xuICAgICAgICBvcGVuLFxuICAgICAgICByZWFzb24sXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBuZXN0ZWRcbiAgICAgIH0gPSBfcmVmO1xuICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgb3BlbkV2ZW50ID0gZXZlbnQ7XG4gICAgICB9XG4gICAgICBpZiAocmVhc29uID09PSAnZXNjYXBlLWtleScgJiYgcmVmcy5kb21SZWZlcmVuY2UuY3VycmVudCkge1xuICAgICAgICBhZGRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQocmVmcy5kb21SZWZlcmVuY2UuY3VycmVudCk7XG4gICAgICB9XG4gICAgICBpZiAocmVhc29uID09PSAnaG92ZXInICYmIGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJykge1xuICAgICAgICBwcmV2ZW50UmV0dXJuRm9jdXNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAocmVhc29uICE9PSAnb3V0c2lkZS1wcmVzcycpIHJldHVybjtcbiAgICAgIGlmIChuZXN0ZWQpIHtcbiAgICAgICAgcHJldmVudFJldHVybkZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgcHJldmVudFJldHVybkZvY3VzU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ID0gIShpc1ZpcnR1YWxDbGljayhldmVudCkgfHwgaXNWaXJ0dWFsUG9pbnRlckV2ZW50KGV2ZW50KSk7XG4gICAgICB9XG4gICAgfVxuICAgIGV2ZW50cy5vbignb3BlbmNoYW5nZScsIG9uT3BlbkNoYW5nZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGV2ZW50cy5vZmYoJ29wZW5jaGFuZ2UnLCBvbk9wZW5DaGFuZ2UpO1xuICAgICAgY29uc3QgYWN0aXZlRWwgPSBhY3RpdmVFbGVtZW50KGRvYyk7XG4gICAgICBjb25zdCBpc0ZvY3VzSW5zaWRlRmxvYXRpbmdUcmVlID0gY29udGFpbnMoZmxvYXRpbmcsIGFjdGl2ZUVsKSB8fCB0cmVlICYmIGdldENoaWxkcmVuKHRyZWUubm9kZXNSZWYuY3VycmVudCwgbm9kZUlkKS5zb21lKG5vZGUgPT4ge1xuICAgICAgICB2YXIgX25vZGUkY29udGV4dDU7XG4gICAgICAgIHJldHVybiBjb250YWlucygoX25vZGUkY29udGV4dDUgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0NS5lbGVtZW50cy5mbG9hdGluZywgYWN0aXZlRWwpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBzaG91bGRGb2N1c1JlZmVyZW5jZSA9IGlzRm9jdXNJbnNpZGVGbG9hdGluZ1RyZWUgfHwgb3BlbkV2ZW50ICYmIFsnY2xpY2snLCAnbW91c2Vkb3duJ10uaW5jbHVkZXMob3BlbkV2ZW50LnR5cGUpO1xuICAgICAgaWYgKHNob3VsZEZvY3VzUmVmZXJlbmNlICYmIHJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQpIHtcbiAgICAgICAgYWRkUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KHJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmV0dXJuQ29udGV4dEVsZW1lbnQgPSBkb21SZWZlcmVuY2UgfHwgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50O1xuICAgICAgY29uc3QgdGFiYmFibGVFbGVtZW50cyA9IHRhYmJhYmxlKGdldERvY3VtZW50KHJldHVybkNvbnRleHRFbGVtZW50KS5ib2R5LCBnZXRUYWJiYWJsZU9wdGlvbnMoKSk7XG5cbiAgICAgIC8vIFdhaXQgZm9yIHRoZSByZXR1cm4gZWxlbWVudCB0byBnZXQgcG90ZW50aWFsbHkgZGlzY29ubmVjdGVkIGJlZm9yZVxuICAgICAgLy8gY2hlY2tpbmcuXG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGxldCByZXR1cm5FbGVtZW50ID0gZ2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCk7XG4gICAgICAgIGlmICghcmV0dXJuRWxlbWVudCAmJiBpc0hUTUxFbGVtZW50KHJldHVybkNvbnRleHRFbGVtZW50KSAmJiBmbG9hdGluZykge1xuICAgICAgICAgIHJldHVybkVsZW1lbnQgPSBnZXRDbG9zZXN0VGFiYmFibGVFbGVtZW50KHRhYmJhYmxlRWxlbWVudHMsIHJldHVybkNvbnRleHRFbGVtZW50LCBmbG9hdGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIHJldHVybkZvY3VzUmVmLmN1cnJlbnQgJiYgIXByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ICYmIGlzSFRNTEVsZW1lbnQocmV0dXJuRWxlbWVudCkgJiYgKFxuICAgICAgICAvLyBJZiB0aGUgZm9jdXMgbW92ZWQgc29tZXdoZXJlIGVsc2UgYWZ0ZXIgbW91bnQsIGF2b2lkIHJldHVybmluZyBmb2N1c1xuICAgICAgICAvLyBzaW5jZSBpdCBsaWtlbHkgZW50ZXJlZCBhIGRpZmZlcmVudCBlbGVtZW50IHdoaWNoIHNob3VsZCBiZVxuICAgICAgICAvLyByZXNwZWN0ZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjYwN1xuICAgICAgICByZXR1cm5FbGVtZW50ICE9PSBhY3RpdmVFbCAmJiBhY3RpdmVFbCAhPT0gZG9jLmJvZHkgPyBpc0ZvY3VzSW5zaWRlRmxvYXRpbmdUcmVlIDogdHJ1ZSkpIHtcbiAgICAgICAgICByZXR1cm5FbGVtZW50LmZvY3VzKHtcbiAgICAgICAgICAgIHByZXZlbnRTY3JvbGw6IHByZXZlbnRSZXR1cm5Gb2N1c1Njcm9sbFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9LCBbZGlzYWJsZWQsIGZsb2F0aW5nLCBmbG9hdGluZ0ZvY3VzTm9kZSwgcmV0dXJuRm9jdXNSZWYsIGRhdGFSZWYsIHJlZnMsIGV2ZW50cywgdHJlZSwgbm9kZUlkXSk7XG5cbiAgLy8gU3luY2hyb25pemUgdGhlIGBjb250ZXh0YCAmIGBtb2RhbGAgdmFsdWUgdG8gdGhlIEZsb2F0aW5nUG9ydGFsIGNvbnRleHQuXG4gIC8vIEl0IHdpbGwgZGVjaWRlIHdoZXRoZXIgb3Igbm90IGl0IG5lZWRzIHRvIHJlbmRlciBpdHMgb3duIGd1YXJkcy5cbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICghcG9ydGFsQ29udGV4dCkgcmV0dXJuO1xuICAgIHBvcnRhbENvbnRleHQuc2V0Rm9jdXNNYW5hZ2VyU3RhdGUoe1xuICAgICAgbW9kYWwsXG4gICAgICBjbG9zZU9uRm9jdXNPdXQsXG4gICAgICBvcGVuLFxuICAgICAgb25PcGVuQ2hhbmdlLFxuICAgICAgcmVmc1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwb3J0YWxDb250ZXh0LnNldEZvY3VzTWFuYWdlclN0YXRlKG51bGwpO1xuICAgIH07XG4gIH0sIFtkaXNhYmxlZCwgcG9ydGFsQ29udGV4dCwgbW9kYWwsIG9wZW4sIG9uT3BlbkNoYW5nZSwgcmVmcywgY2xvc2VPbkZvY3VzT3V0XSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIWZsb2F0aW5nRm9jdXNOb2RlKSByZXR1cm47XG4gICAgaWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAnZnVuY3Rpb24nKSByZXR1cm47XG4gICAgaWYgKGlnbm9yZUluaXRpYWxGb2N1cykgcmV0dXJuO1xuICAgIGNvbnN0IGhhbmRsZU11dGF0aW9uID0gKCkgPT4ge1xuICAgICAgY29uc3QgdGFiSW5kZXggPSBmbG9hdGluZ0ZvY3VzTm9kZS5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgICBjb25zdCB0YWJiYWJsZUNvbnRlbnQgPSBnZXRUYWJiYWJsZUNvbnRlbnQoKTtcbiAgICAgIGNvbnN0IGFjdGl2ZUVsID0gYWN0aXZlRWxlbWVudChnZXREb2N1bWVudChmbG9hdGluZykpO1xuICAgICAgY29uc3QgdGFiYmFibGVJbmRleCA9IHRhYmJhYmxlQ29udGVudC5pbmRleE9mKGFjdGl2ZUVsKTtcbiAgICAgIGlmICh0YWJiYWJsZUluZGV4ICE9PSAtMSkge1xuICAgICAgICB0YWJiYWJsZUluZGV4UmVmLmN1cnJlbnQgPSB0YWJiYWJsZUluZGV4O1xuICAgICAgfVxuICAgICAgaWYgKG9yZGVyUmVmLmN1cnJlbnQuaW5jbHVkZXMoJ2Zsb2F0aW5nJykgfHwgYWN0aXZlRWwgIT09IHJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQgJiYgdGFiYmFibGVDb250ZW50Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAodGFiSW5kZXggIT09ICcwJykge1xuICAgICAgICAgIGZsb2F0aW5nRm9jdXNOb2RlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRhYkluZGV4ICE9PSAnLTEnKSB7XG4gICAgICAgIGZsb2F0aW5nRm9jdXNOb2RlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGhhbmRsZU11dGF0aW9uKCk7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihoYW5kbGVNdXRhdGlvbik7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZ0ZvY3VzTm9kZSwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH07XG4gIH0sIFtkaXNhYmxlZCwgZmxvYXRpbmcsIGZsb2F0aW5nRm9jdXNOb2RlLCByZWZzLCBvcmRlclJlZiwgZ2V0VGFiYmFibGVDb250ZW50LCBpZ25vcmVJbml0aWFsRm9jdXNdKTtcbiAgZnVuY3Rpb24gcmVuZGVyRGlzbWlzc0J1dHRvbihsb2NhdGlvbikge1xuICAgIGlmIChkaXNhYmxlZCB8fCAhdmlzdWFsbHlIaWRkZW5EaXNtaXNzIHx8ICFtb2RhbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChWaXN1YWxseUhpZGRlbkRpc21pc3MsIHtcbiAgICAgIHJlZjogbG9jYXRpb24gPT09ICdzdGFydCcgPyBzdGFydERpc21pc3NCdXR0b25SZWYgOiBlbmREaXNtaXNzQnV0dG9uUmVmLFxuICAgICAgb25DbGljazogZXZlbnQgPT4gb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudC5uYXRpdmVFdmVudClcbiAgICB9LCB0eXBlb2YgdmlzdWFsbHlIaWRkZW5EaXNtaXNzID09PSAnc3RyaW5nJyA/IHZpc3VhbGx5SGlkZGVuRGlzbWlzcyA6ICdEaXNtaXNzJyk7XG4gIH1cbiAgY29uc3Qgc2hvdWxkUmVuZGVyR3VhcmRzID0gIWRpc2FibGVkICYmIGd1YXJkcyAmJiAobW9kYWwgPyAhaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94IDogdHJ1ZSkgJiYgKGlzSW5zaWRlUG9ydGFsIHx8IG1vZGFsKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBzaG91bGRSZW5kZXJHdWFyZHMgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNHdWFyZCwge1xuICAgIFwiZGF0YS10eXBlXCI6IFwiaW5zaWRlXCIsXG4gICAgcmVmOiBwb3J0YWxDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBwb3J0YWxDb250ZXh0LmJlZm9yZUluc2lkZVJlZixcbiAgICBvbkZvY3VzOiBldmVudCA9PiB7XG4gICAgICBpZiAobW9kYWwpIHtcbiAgICAgICAgY29uc3QgZWxzID0gZ2V0VGFiYmFibGVFbGVtZW50cygpO1xuICAgICAgICBlbnF1ZXVlRm9jdXMob3JkZXJbMF0gPT09ICdyZWZlcmVuY2UnID8gZWxzWzBdIDogZWxzW2Vscy5sZW5ndGggLSAxXSk7XG4gICAgICB9IGVsc2UgaWYgKHBvcnRhbENvbnRleHQgIT0gbnVsbCAmJiBwb3J0YWxDb250ZXh0LnByZXNlcnZlVGFiT3JkZXIgJiYgcG9ydGFsQ29udGV4dC5wb3J0YWxOb2RlKSB7XG4gICAgICAgIHByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIGlmIChpc091dHNpZGVFdmVudChldmVudCwgcG9ydGFsQ29udGV4dC5wb3J0YWxOb2RlKSkge1xuICAgICAgICAgIGNvbnN0IG5leHRUYWJiYWJsZSA9IGdldE5leHRUYWJiYWJsZSgpIHx8IGRvbVJlZmVyZW5jZTtcbiAgICAgICAgICBuZXh0VGFiYmFibGUgPT0gbnVsbCB8fCBuZXh0VGFiYmFibGUuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgX3BvcnRhbENvbnRleHQkYmVmb3JlO1xuICAgICAgICAgIChfcG9ydGFsQ29udGV4dCRiZWZvcmUgPSBwb3J0YWxDb250ZXh0LmJlZm9yZU91dHNpZGVSZWYuY3VycmVudCkgPT0gbnVsbCB8fCBfcG9ydGFsQ29udGV4dCRiZWZvcmUuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSksICFpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3ggJiYgcmVuZGVyRGlzbWlzc0J1dHRvbignc3RhcnQnKSwgY2hpbGRyZW4sIHJlbmRlckRpc21pc3NCdXR0b24oJ2VuZCcpLCBzaG91bGRSZW5kZXJHdWFyZHMgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNHdWFyZCwge1xuICAgIFwiZGF0YS10eXBlXCI6IFwiaW5zaWRlXCIsXG4gICAgcmVmOiBwb3J0YWxDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBwb3J0YWxDb250ZXh0LmFmdGVySW5zaWRlUmVmLFxuICAgIG9uRm9jdXM6IGV2ZW50ID0+IHtcbiAgICAgIGlmIChtb2RhbCkge1xuICAgICAgICBlbnF1ZXVlRm9jdXMoZ2V0VGFiYmFibGVFbGVtZW50cygpWzBdKTtcbiAgICAgIH0gZWxzZSBpZiAocG9ydGFsQ29udGV4dCAhPSBudWxsICYmIHBvcnRhbENvbnRleHQucHJlc2VydmVUYWJPcmRlciAmJiBwb3J0YWxDb250ZXh0LnBvcnRhbE5vZGUpIHtcbiAgICAgICAgaWYgKGNsb3NlT25Gb2N1c091dCkge1xuICAgICAgICAgIHByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPdXRzaWRlRXZlbnQoZXZlbnQsIHBvcnRhbENvbnRleHQucG9ydGFsTm9kZSkpIHtcbiAgICAgICAgICBjb25zdCBwcmV2VGFiYmFibGUgPSBnZXRQcmV2aW91c1RhYmJhYmxlKCkgfHwgZG9tUmVmZXJlbmNlO1xuICAgICAgICAgIHByZXZUYWJiYWJsZSA9PSBudWxsIHx8IHByZXZUYWJiYWJsZS5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBfcG9ydGFsQ29udGV4dCRhZnRlck87XG4gICAgICAgICAgKF9wb3J0YWxDb250ZXh0JGFmdGVyTyA9IHBvcnRhbENvbnRleHQuYWZ0ZXJPdXRzaWRlUmVmLmN1cnJlbnQpID09IG51bGwgfHwgX3BvcnRhbENvbnRleHQkYWZ0ZXJPLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pKTtcbn1cblxuY29uc3QgYWN0aXZlTG9ja3MgPSAvKiNfX1BVUkVfXyovbmV3IFNldCgpO1xuLyoqXG4gKiBQcm92aWRlcyBiYXNlIHN0eWxpbmcgZm9yIGEgZml4ZWQgb3ZlcmxheSBlbGVtZW50IHRvIGRpbSBjb250ZW50IG9yIGJsb2NrXG4gKiBwb2ludGVyIGV2ZW50cyBiZWhpbmQgYSBmbG9hdGluZyBlbGVtZW50LlxuICogSXQncyBhIHJlZ3VsYXIgYDxkaXY+YCwgc28gaXQgY2FuIGJlIHN0eWxlZCB2aWEgYW55IENTUyBzb2x1dGlvbiB5b3UgcHJlZmVyLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nT3ZlcmxheVxuICovXG5jb25zdCBGbG9hdGluZ092ZXJsYXkgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBGbG9hdGluZ092ZXJsYXkocHJvcHMsIHJlZikge1xuICBjb25zdCB7XG4gICAgbG9ja1Njcm9sbCA9IGZhbHNlLFxuICAgIC4uLnJlc3RcbiAgfSA9IHByb3BzO1xuICBjb25zdCBsb2NrSWQgPSB1c2VJZCgpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFsb2NrU2Nyb2xsKSByZXR1cm47XG4gICAgYWN0aXZlTG9ja3MuYWRkKGxvY2tJZCk7XG4gICAgY29uc3QgaXNJT1MgPSAvaVAoaG9uZXxhZHxvZCl8aU9TLy50ZXN0KGdldFBsYXRmb3JtKCkpO1xuICAgIGNvbnN0IGJvZHlTdHlsZSA9IGRvY3VtZW50LmJvZHkuc3R5bGU7XG4gICAgLy8gUlRMIDxib2R5PiBzY3JvbGxiYXJcbiAgICBjb25zdCBzY3JvbGxiYXJYID0gTWF0aC5yb3VuZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkgKyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICBjb25zdCBwYWRkaW5nUHJvcCA9IHNjcm9sbGJhclggPyAncGFkZGluZ0xlZnQnIDogJ3BhZGRpbmdSaWdodCc7XG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICBjb25zdCBzY3JvbGxYID0gYm9keVN0eWxlLmxlZnQgPyBwYXJzZUZsb2F0KGJvZHlTdHlsZS5sZWZ0KSA6IHdpbmRvdy5zY3JvbGxYO1xuICAgIGNvbnN0IHNjcm9sbFkgPSBib2R5U3R5bGUudG9wID8gcGFyc2VGbG9hdChib2R5U3R5bGUudG9wKSA6IHdpbmRvdy5zY3JvbGxZO1xuICAgIGJvZHlTdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgIGlmIChzY3JvbGxiYXJXaWR0aCkge1xuICAgICAgYm9keVN0eWxlW3BhZGRpbmdQcm9wXSA9IHNjcm9sbGJhcldpZHRoICsgXCJweFwiO1xuICAgIH1cblxuICAgIC8vIE9ubHkgaU9TIGRvZXNuJ3QgcmVzcGVjdCBgb3ZlcmZsb3c6IGhpZGRlbmAgb24gZG9jdW1lbnQuYm9keSwgYW5kIHRoaXNcbiAgICAvLyB0ZWNobmlxdWUgaGFzIGZld2VyIHNpZGUgZWZmZWN0cy5cbiAgICBpZiAoaXNJT1MpIHtcbiAgICAgIHZhciBfd2luZG93JHZpc3VhbFZpZXdwb3IsIF93aW5kb3ckdmlzdWFsVmlld3BvcjI7XG4gICAgICAvLyBpT1MgMTIgZG9lcyBub3Qgc3VwcG9ydCBgdmlzdWFsVmlld3BvcnRgLlxuICAgICAgY29uc3Qgb2Zmc2V0TGVmdCA9ICgoX3dpbmRvdyR2aXN1YWxWaWV3cG9yID0gd2luZG93LnZpc3VhbFZpZXdwb3J0KSA9PSBudWxsID8gdm9pZCAwIDogX3dpbmRvdyR2aXN1YWxWaWV3cG9yLm9mZnNldExlZnQpIHx8IDA7XG4gICAgICBjb25zdCBvZmZzZXRUb3AgPSAoKF93aW5kb3ckdmlzdWFsVmlld3BvcjIgPSB3aW5kb3cudmlzdWFsVmlld3BvcnQpID09IG51bGwgPyB2b2lkIDAgOiBfd2luZG93JHZpc3VhbFZpZXdwb3IyLm9mZnNldFRvcCkgfHwgMDtcbiAgICAgIE9iamVjdC5hc3NpZ24oYm9keVN0eWxlLCB7XG4gICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICB0b3A6IC0oc2Nyb2xsWSAtIE1hdGguZmxvb3Iob2Zmc2V0VG9wKSkgKyBcInB4XCIsXG4gICAgICAgIGxlZnQ6IC0oc2Nyb2xsWCAtIE1hdGguZmxvb3Iob2Zmc2V0TGVmdCkpICsgXCJweFwiLFxuICAgICAgICByaWdodDogJzAnXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGFjdGl2ZUxvY2tzLmRlbGV0ZShsb2NrSWQpO1xuICAgICAgaWYgKGFjdGl2ZUxvY2tzLnNpemUgPT09IDApIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihib2R5U3R5bGUsIHtcbiAgICAgICAgICBvdmVyZmxvdzogJycsXG4gICAgICAgICAgW3BhZGRpbmdQcm9wXTogJydcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0lPUykge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oYm9keVN0eWxlLCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJycsXG4gICAgICAgICAgICB0b3A6ICcnLFxuICAgICAgICAgICAgbGVmdDogJycsXG4gICAgICAgICAgICByaWdodDogJydcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oc2Nyb2xsWCwgc2Nyb2xsWSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LCBbbG9ja0lkLCBsb2NrU2Nyb2xsXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiByZWZcbiAgfSwgcmVzdCwge1xuICAgIHN0eWxlOiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICB0b3A6IDAsXG4gICAgICByaWdodDogMCxcbiAgICAgIGJvdHRvbTogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICAuLi5yZXN0LnN0eWxlXG4gICAgfVxuICB9KSk7XG59KTtcblxuZnVuY3Rpb24gaXNCdXR0b25UYXJnZXQoZXZlbnQpIHtcbiAgcmV0dXJuIGlzSFRNTEVsZW1lbnQoZXZlbnQudGFyZ2V0KSAmJiBldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ0JVVFRPTic7XG59XG5mdW5jdGlvbiBpc1NwYWNlSWdub3JlZChlbGVtZW50KSB7XG4gIHJldHVybiBpc1R5cGVhYmxlRWxlbWVudChlbGVtZW50KTtcbn1cbi8qKlxuICogT3BlbnMgb3IgY2xvc2VzIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoZW4gY2xpY2tpbmcgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZUNsaWNrXG4gKi9cbmZ1bmN0aW9uIHVzZUNsaWNrKGNvbnRleHQsIHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZGF0YVJlZixcbiAgICBlbGVtZW50czoge1xuICAgICAgZG9tUmVmZXJlbmNlXG4gICAgfVxuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGVuYWJsZWQgPSB0cnVlLFxuICAgIGV2ZW50OiBldmVudE9wdGlvbiA9ICdjbGljaycsXG4gICAgdG9nZ2xlID0gdHJ1ZSxcbiAgICBpZ25vcmVNb3VzZSA9IGZhbHNlLFxuICAgIGtleWJvYXJkSGFuZGxlcnMgPSB0cnVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgcG9pbnRlclR5cGVSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3QgZGlkS2V5RG93blJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvblBvaW50ZXJEb3duKGV2ZW50KSB7XG4gICAgICBwb2ludGVyVHlwZVJlZi5jdXJyZW50ID0gZXZlbnQucG9pbnRlclR5cGU7XG4gICAgfSxcbiAgICBvbk1vdXNlRG93bihldmVudCkge1xuICAgICAgY29uc3QgcG9pbnRlclR5cGUgPSBwb2ludGVyVHlwZVJlZi5jdXJyZW50O1xuXG4gICAgICAvLyBJZ25vcmUgYWxsIGJ1dHRvbnMgZXhjZXB0IGZvciB0aGUgXCJtYWluXCIgYnV0dG9uLlxuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01vdXNlRXZlbnQvYnV0dG9uXG4gICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSByZXR1cm47XG4gICAgICBpZiAoZXZlbnRPcHRpb24gPT09ICdjbGljaycpIHJldHVybjtcbiAgICAgIGlmIChpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlLCB0cnVlKSAmJiBpZ25vcmVNb3VzZSkgcmV0dXJuO1xuICAgICAgaWYgKG9wZW4gJiYgdG9nZ2xlICYmIChkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50ID8gZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudC50eXBlID09PSAnbW91c2Vkb3duJyA6IHRydWUpKSB7XG4gICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQsICdjbGljaycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUHJldmVudCBzdGVhbGluZyBmb2N1cyBmcm9tIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkNsaWNrKGV2ZW50KSB7XG4gICAgICBjb25zdCBwb2ludGVyVHlwZSA9IHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoZXZlbnRPcHRpb24gPT09ICdtb3VzZWRvd24nICYmIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcG9pbnRlclR5cGVSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzTW91c2VMaWtlUG9pbnRlclR5cGUocG9pbnRlclR5cGUsIHRydWUpICYmIGlnbm9yZU1vdXNlKSByZXR1cm47XG4gICAgICBpZiAob3BlbiAmJiB0b2dnbGUgJiYgKGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQgPyBkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50LnR5cGUgPT09ICdjbGljaycgOiB0cnVlKSkge1xuICAgICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnY2xpY2snKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbktleURvd24oZXZlbnQpIHtcbiAgICAgIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCAha2V5Ym9hcmRIYW5kbGVycyB8fCBpc0J1dHRvblRhcmdldChldmVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnICYmICFpc1NwYWNlSWdub3JlZChkb21SZWZlcmVuY2UpKSB7XG4gICAgICAgIC8vIFByZXZlbnQgc2Nyb2xsaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpZEtleURvd25SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIGlmIChvcGVuICYmIHRvZ2dsZSkge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQsICdjbGljaycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG9uS2V5VXAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkIHx8ICFrZXlib2FyZEhhbmRsZXJzIHx8IGlzQnV0dG9uVGFyZ2V0KGV2ZW50KSB8fCBpc1NwYWNlSWdub3JlZChkb21SZWZlcmVuY2UpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5rZXkgPT09ICcgJyAmJiBkaWRLZXlEb3duUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgZGlkS2V5RG93blJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIGlmIChvcGVuICYmIHRvZ2dsZSkge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQsICdjbGljaycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLCBbZGF0YVJlZiwgZG9tUmVmZXJlbmNlLCBldmVudE9wdGlvbiwgaWdub3JlTW91c2UsIGtleWJvYXJkSGFuZGxlcnMsIG9uT3BlbkNoYW5nZSwgb3BlbiwgdG9nZ2xlXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgcmVmZXJlbmNlXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZV0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVWaXJ0dWFsRWxlbWVudChkb21FbGVtZW50LCBkYXRhKSB7XG4gIGxldCBvZmZzZXRYID0gbnVsbDtcbiAgbGV0IG9mZnNldFkgPSBudWxsO1xuICBsZXQgaXNBdXRvVXBkYXRlRXZlbnQgPSBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0RWxlbWVudDogZG9tRWxlbWVudCB8fCB1bmRlZmluZWQsXG4gICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkge1xuICAgICAgdmFyIF9kYXRhJGRhdGFSZWYkY3VycmVudDtcbiAgICAgIGNvbnN0IGRvbVJlY3QgPSAoZG9tRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkgfHwge1xuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwXG4gICAgICB9O1xuICAgICAgY29uc3QgaXNYQXhpcyA9IGRhdGEuYXhpcyA9PT0gJ3gnIHx8IGRhdGEuYXhpcyA9PT0gJ2JvdGgnO1xuICAgICAgY29uc3QgaXNZQXhpcyA9IGRhdGEuYXhpcyA9PT0gJ3knIHx8IGRhdGEuYXhpcyA9PT0gJ2JvdGgnO1xuICAgICAgY29uc3QgY2FuVHJhY2tDdXJzb3JPbkF1dG9VcGRhdGUgPSBbJ21vdXNlZW50ZXInLCAnbW91c2Vtb3ZlJ10uaW5jbHVkZXMoKChfZGF0YSRkYXRhUmVmJGN1cnJlbnQgPSBkYXRhLmRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YSRkYXRhUmVmJGN1cnJlbnQudHlwZSkgfHwgJycpICYmIGRhdGEucG9pbnRlclR5cGUgIT09ICd0b3VjaCc7XG4gICAgICBsZXQgd2lkdGggPSBkb21SZWN0LndpZHRoO1xuICAgICAgbGV0IGhlaWdodCA9IGRvbVJlY3QuaGVpZ2h0O1xuICAgICAgbGV0IHggPSBkb21SZWN0Lng7XG4gICAgICBsZXQgeSA9IGRvbVJlY3QueTtcbiAgICAgIGlmIChvZmZzZXRYID09IG51bGwgJiYgZGF0YS54ICYmIGlzWEF4aXMpIHtcbiAgICAgICAgb2Zmc2V0WCA9IGRvbVJlY3QueCAtIGRhdGEueDtcbiAgICAgIH1cbiAgICAgIGlmIChvZmZzZXRZID09IG51bGwgJiYgZGF0YS55ICYmIGlzWUF4aXMpIHtcbiAgICAgICAgb2Zmc2V0WSA9IGRvbVJlY3QueSAtIGRhdGEueTtcbiAgICAgIH1cbiAgICAgIHggLT0gb2Zmc2V0WCB8fCAwO1xuICAgICAgeSAtPSBvZmZzZXRZIHx8IDA7XG4gICAgICB3aWR0aCA9IDA7XG4gICAgICBoZWlnaHQgPSAwO1xuICAgICAgaWYgKCFpc0F1dG9VcGRhdGVFdmVudCB8fCBjYW5UcmFja0N1cnNvck9uQXV0b1VwZGF0ZSkge1xuICAgICAgICB3aWR0aCA9IGRhdGEuYXhpcyA9PT0gJ3knID8gZG9tUmVjdC53aWR0aCA6IDA7XG4gICAgICAgIGhlaWdodCA9IGRhdGEuYXhpcyA9PT0gJ3gnID8gZG9tUmVjdC5oZWlnaHQgOiAwO1xuICAgICAgICB4ID0gaXNYQXhpcyAmJiBkYXRhLnggIT0gbnVsbCA/IGRhdGEueCA6IHg7XG4gICAgICAgIHkgPSBpc1lBeGlzICYmIGRhdGEueSAhPSBudWxsID8gZGF0YS55IDogeTtcbiAgICAgIH0gZWxzZSBpZiAoaXNBdXRvVXBkYXRlRXZlbnQgJiYgIWNhblRyYWNrQ3Vyc29yT25BdXRvVXBkYXRlKSB7XG4gICAgICAgIGhlaWdodCA9IGRhdGEuYXhpcyA9PT0gJ3gnID8gZG9tUmVjdC5oZWlnaHQgOiBoZWlnaHQ7XG4gICAgICAgIHdpZHRoID0gZGF0YS5heGlzID09PSAneScgPyBkb21SZWN0LndpZHRoIDogd2lkdGg7XG4gICAgICB9XG4gICAgICBpc0F1dG9VcGRhdGVFdmVudCA9IHRydWU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB0b3A6IHksXG4gICAgICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICAgICAgbGVmdDogeFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBpc01vdXNlQmFzZWRFdmVudChldmVudCkge1xuICByZXR1cm4gZXZlbnQgIT0gbnVsbCAmJiBldmVudC5jbGllbnRYICE9IG51bGw7XG59XG4vKipcbiAqIFBvc2l0aW9ucyB0aGUgZmxvYXRpbmcgZWxlbWVudCByZWxhdGl2ZSB0byBhIGNsaWVudCBwb2ludCAoaW4gdGhlIHZpZXdwb3J0KSxcbiAqIHN1Y2ggYXMgdGhlIG1vdXNlIHBvc2l0aW9uLiBCeSBkZWZhdWx0LCBpdCBmb2xsb3dzIHRoZSBtb3VzZSBjdXJzb3IuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlQ2xpZW50UG9pbnRcbiAqL1xuZnVuY3Rpb24gdXNlQ2xpZW50UG9pbnQoY29udGV4dCwgcHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIGRhdGFSZWYsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgZG9tUmVmZXJlbmNlXG4gICAgfSxcbiAgICByZWZzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgYXhpcyA9ICdib3RoJyxcbiAgICB4ID0gbnVsbCxcbiAgICB5ID0gbnVsbFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGluaXRpYWxSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBjbGVhbnVwTGlzdGVuZXJSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IFtwb2ludGVyVHlwZSwgc2V0UG9pbnRlclR5cGVdID0gUmVhY3QudXNlU3RhdGUoKTtcbiAgY29uc3QgW3JlYWN0aXZlLCBzZXRSZWFjdGl2ZV0gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHNldFJlZmVyZW5jZSA9IHVzZUVmZmVjdEV2ZW50KCh4LCB5KSA9PiB7XG4gICAgaWYgKGluaXRpYWxSZWYuY3VycmVudCkgcmV0dXJuO1xuXG4gICAgLy8gUHJldmVudCBzZXR0aW5nIGlmIHRoZSBvcGVuIGV2ZW50IHdhcyBub3QgYSBtb3VzZS1saWtlIG9uZVxuICAgIC8vIChlLmcuIGZvY3VzIHRvIG9wZW4sIHRoZW4gaG92ZXIgb3ZlciB0aGUgcmVmZXJlbmNlIGVsZW1lbnQpLlxuICAgIC8vIE9ubHkgYXBwbHkgaWYgdGhlIGV2ZW50IGV4aXN0cy5cbiAgICBpZiAoZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCAmJiAhaXNNb3VzZUJhc2VkRXZlbnQoZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVmcy5zZXRQb3NpdGlvblJlZmVyZW5jZShjcmVhdGVWaXJ0dWFsRWxlbWVudChkb21SZWZlcmVuY2UsIHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgYXhpcyxcbiAgICAgIGRhdGFSZWYsXG4gICAgICBwb2ludGVyVHlwZVxuICAgIH0pKTtcbiAgfSk7XG4gIGNvbnN0IGhhbmRsZVJlZmVyZW5jZUVudGVyT3JNb3ZlID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIGlmICh4ICE9IG51bGwgfHwgeSAhPSBudWxsKSByZXR1cm47XG4gICAgaWYgKCFvcGVuKSB7XG4gICAgICBzZXRSZWZlcmVuY2UoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgfSBlbHNlIGlmICghY2xlYW51cExpc3RlbmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gY2xlYW51cCwgdGhlcmUncyBubyBsaXN0ZW5lciwgYnV0IHdlIHdhbnQgdG8gZW5zdXJlXG4gICAgICAvLyB3ZSBhZGQgdGhlIGxpc3RlbmVyIGlmIHRoZSBjdXJzb3IgbGFuZGVkIG9uIHRoZSBmbG9hdGluZyBlbGVtZW50IGFuZFxuICAgICAgLy8gdGhlbiBiYWNrIG9uIHRoZSByZWZlcmVuY2UgKGkuZS4gaXQncyBpbnRlcmFjdGl2ZSkuXG4gICAgICBzZXRSZWFjdGl2ZShbXSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBJZiB0aGUgcG9pbnRlciBpcyBhIG1vdXNlLWxpa2UgcG9pbnRlciwgd2Ugd2FudCB0byBjb250aW51ZSBmb2xsb3dpbmcgdGhlXG4gIC8vIG1vdXNlIGV2ZW4gaWYgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgdHJhbnNpdGlvbmluZyBvdXQuIE9uIHRvdWNoXG4gIC8vIGRldmljZXMsIHRoaXMgaXMgdW5kZXNpcmFibGUgYmVjYXVzZSB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aWxsIG1vdmUgdG9cbiAgLy8gdGhlIGRpc21pc3NhbCB0b3VjaCBwb2ludC5cbiAgY29uc3Qgb3BlbkNoZWNrID0gaXNNb3VzZUxpa2VQb2ludGVyVHlwZShwb2ludGVyVHlwZSkgPyBmbG9hdGluZyA6IG9wZW47XG4gIGNvbnN0IGFkZExpc3RlbmVyID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIEV4cGxpY2l0bHkgc3BlY2lmaWVkIGB4YC9geWAgY29vcmRpbmF0ZXMgc2hvdWxkbid0IGFkZCBhIGxpc3RlbmVyLlxuICAgIGlmICghb3BlbkNoZWNrIHx8ICFlbmFibGVkIHx8IHggIT0gbnVsbCB8fCB5ICE9IG51bGwpIHJldHVybjtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZmxvYXRpbmcpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZShldmVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGV2ZW50KTtcbiAgICAgIGlmICghY29udGFpbnMoZmxvYXRpbmcsIHRhcmdldCkpIHtcbiAgICAgICAgc2V0UmVmZXJlbmNlKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZU1vdXNlTW92ZSk7XG4gICAgICAgIGNsZWFudXBMaXN0ZW5lclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50IHx8IGlzTW91c2VCYXNlZEV2ZW50KGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQpKSB7XG4gICAgICB3aW4uYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlTW91c2VNb3ZlKTtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgIHdpbi5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVNb3VzZU1vdmUpO1xuICAgICAgICBjbGVhbnVwTGlzdGVuZXJSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICB9O1xuICAgICAgY2xlYW51cExpc3RlbmVyUmVmLmN1cnJlbnQgPSBjbGVhbnVwO1xuICAgICAgcmV0dXJuIGNsZWFudXA7XG4gICAgfVxuICAgIHJlZnMuc2V0UG9zaXRpb25SZWZlcmVuY2UoZG9tUmVmZXJlbmNlKTtcbiAgfSwgW29wZW5DaGVjaywgZW5hYmxlZCwgeCwgeSwgZmxvYXRpbmcsIGRhdGFSZWYsIHJlZnMsIGRvbVJlZmVyZW5jZSwgc2V0UmVmZXJlbmNlXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIGFkZExpc3RlbmVyKCk7XG4gIH0sIFthZGRMaXN0ZW5lciwgcmVhY3RpdmVdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW5hYmxlZCAmJiAhZmxvYXRpbmcpIHtcbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIH1cbiAgfSwgW2VuYWJsZWQsIGZsb2F0aW5nXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkICYmIG9wZW4pIHtcbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3Blbl0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGVuYWJsZWQgJiYgKHggIT0gbnVsbCB8fCB5ICE9IG51bGwpKSB7XG4gICAgICBpbml0aWFsUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHNldFJlZmVyZW5jZSh4LCB5KTtcbiAgICB9XG4gIH0sIFtlbmFibGVkLCB4LCB5LCBzZXRSZWZlcmVuY2VdKTtcbiAgY29uc3QgcmVmZXJlbmNlID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgZnVuY3Rpb24gc2V0UG9pbnRlclR5cGVSZWYoX3JlZikge1xuICAgICAgbGV0IHtcbiAgICAgICAgcG9pbnRlclR5cGVcbiAgICAgIH0gPSBfcmVmO1xuICAgICAgc2V0UG9pbnRlclR5cGUocG9pbnRlclR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgb25Qb2ludGVyRG93bjogc2V0UG9pbnRlclR5cGVSZWYsXG4gICAgICBvblBvaW50ZXJFbnRlcjogc2V0UG9pbnRlclR5cGVSZWYsXG4gICAgICBvbk1vdXNlTW92ZTogaGFuZGxlUmVmZXJlbmNlRW50ZXJPck1vdmUsXG4gICAgICBvbk1vdXNlRW50ZXI6IGhhbmRsZVJlZmVyZW5jZUVudGVyT3JNb3ZlXG4gICAgfTtcbiAgfSwgW2hhbmRsZVJlZmVyZW5jZUVudGVyT3JNb3ZlXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgcmVmZXJlbmNlXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZV0pO1xufVxuXG5jb25zdCBidWJibGVIYW5kbGVyS2V5cyA9IHtcbiAgcG9pbnRlcmRvd246ICdvblBvaW50ZXJEb3duJyxcbiAgbW91c2Vkb3duOiAnb25Nb3VzZURvd24nLFxuICBjbGljazogJ29uQ2xpY2snXG59O1xuY29uc3QgY2FwdHVyZUhhbmRsZXJLZXlzID0ge1xuICBwb2ludGVyZG93bjogJ29uUG9pbnRlckRvd25DYXB0dXJlJyxcbiAgbW91c2Vkb3duOiAnb25Nb3VzZURvd25DYXB0dXJlJyxcbiAgY2xpY2s6ICdvbkNsaWNrQ2FwdHVyZSdcbn07XG5jb25zdCBub3JtYWxpemVQcm9wID0gbm9ybWFsaXphYmxlID0+IHtcbiAgdmFyIF9ub3JtYWxpemFibGUkZXNjYXBlSywgX25vcm1hbGl6YWJsZSRvdXRzaWRlO1xuICByZXR1cm4ge1xuICAgIGVzY2FwZUtleTogdHlwZW9mIG5vcm1hbGl6YWJsZSA9PT0gJ2Jvb2xlYW4nID8gbm9ybWFsaXphYmxlIDogKF9ub3JtYWxpemFibGUkZXNjYXBlSyA9IG5vcm1hbGl6YWJsZSA9PSBudWxsID8gdm9pZCAwIDogbm9ybWFsaXphYmxlLmVzY2FwZUtleSkgIT0gbnVsbCA/IF9ub3JtYWxpemFibGUkZXNjYXBlSyA6IGZhbHNlLFxuICAgIG91dHNpZGVQcmVzczogdHlwZW9mIG5vcm1hbGl6YWJsZSA9PT0gJ2Jvb2xlYW4nID8gbm9ybWFsaXphYmxlIDogKF9ub3JtYWxpemFibGUkb3V0c2lkZSA9IG5vcm1hbGl6YWJsZSA9PSBudWxsID8gdm9pZCAwIDogbm9ybWFsaXphYmxlLm91dHNpZGVQcmVzcykgIT0gbnVsbCA/IF9ub3JtYWxpemFibGUkb3V0c2lkZSA6IHRydWVcbiAgfTtcbn07XG4vKipcbiAqIENsb3NlcyB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIGEgZGlzbWlzc2FsIGlzIHJlcXVlc3RlZCDigJQgYnkgZGVmYXVsdCwgd2hlblxuICogdGhlIHVzZXIgcHJlc3NlcyB0aGUgYGVzY2FwZWAga2V5IG9yIG91dHNpZGUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlRGlzbWlzc1xuICovXG5mdW5jdGlvbiB1c2VEaXNtaXNzKGNvbnRleHQsIHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZWxlbWVudHMsXG4gICAgZGF0YVJlZlxuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGVuYWJsZWQgPSB0cnVlLFxuICAgIGVzY2FwZUtleSA9IHRydWUsXG4gICAgb3V0c2lkZVByZXNzOiB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgPSB0cnVlLFxuICAgIG91dHNpZGVQcmVzc0V2ZW50ID0gJ3BvaW50ZXJkb3duJyxcbiAgICByZWZlcmVuY2VQcmVzcyA9IGZhbHNlLFxuICAgIHJlZmVyZW5jZVByZXNzRXZlbnQgPSAncG9pbnRlcmRvd24nLFxuICAgIGFuY2VzdG9yU2Nyb2xsID0gZmFsc2UsXG4gICAgYnViYmxlcyxcbiAgICBjYXB0dXJlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgdHJlZSA9IHVzZUZsb2F0aW5nVHJlZSgpO1xuICBjb25zdCBvdXRzaWRlUHJlc3NGbiA9IHVzZUVmZmVjdEV2ZW50KHR5cGVvZiB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgPT09ICdmdW5jdGlvbicgPyB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgOiAoKSA9PiBmYWxzZSk7XG4gIGNvbnN0IG91dHNpZGVQcmVzcyA9IHR5cGVvZiB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgPT09ICdmdW5jdGlvbicgPyBvdXRzaWRlUHJlc3NGbiA6IHVuc3RhYmxlX291dHNpZGVQcmVzcztcbiAgY29uc3QgaW5zaWRlUmVhY3RUcmVlUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgZW5kZWRPclN0YXJ0ZWRJbnNpZGVSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCB7XG4gICAgZXNjYXBlS2V5OiBlc2NhcGVLZXlCdWJibGVzLFxuICAgIG91dHNpZGVQcmVzczogb3V0c2lkZVByZXNzQnViYmxlc1xuICB9ID0gbm9ybWFsaXplUHJvcChidWJibGVzKTtcbiAgY29uc3Qge1xuICAgIGVzY2FwZUtleTogZXNjYXBlS2V5Q2FwdHVyZSxcbiAgICBvdXRzaWRlUHJlc3M6IG91dHNpZGVQcmVzc0NhcHR1cmVcbiAgfSA9IG5vcm1hbGl6ZVByb3AoY2FwdHVyZSk7XG4gIGNvbnN0IGNsb3NlT25Fc2NhcGVLZXlEb3duID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIHZhciBfZGF0YVJlZiRjdXJyZW50JGZsb2E7XG4gICAgaWYgKCFvcGVuIHx8ICFlbmFibGVkIHx8ICFlc2NhcGVLZXkgfHwgZXZlbnQua2V5ICE9PSAnRXNjYXBlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBub2RlSWQgPSAoX2RhdGFSZWYkY3VycmVudCRmbG9hID0gZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kYXRhUmVmJGN1cnJlbnQkZmxvYS5ub2RlSWQ7XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0cmVlID8gZ2V0Q2hpbGRyZW4odHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpIDogW107XG4gICAgaWYgKCFlc2NhcGVLZXlCdWJibGVzKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBzaG91bGREaXNtaXNzID0gdHJ1ZTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgdmFyIF9jaGlsZCRjb250ZXh0O1xuICAgICAgICAgIGlmICgoX2NoaWxkJGNvbnRleHQgPSBjaGlsZC5jb250ZXh0KSAhPSBudWxsICYmIF9jaGlsZCRjb250ZXh0Lm9wZW4gJiYgIWNoaWxkLmNvbnRleHQuZGF0YVJlZi5jdXJyZW50Ll9fZXNjYXBlS2V5QnViYmxlcykge1xuICAgICAgICAgICAgc2hvdWxkRGlzbWlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghc2hvdWxkRGlzbWlzcykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGlzUmVhY3RFdmVudChldmVudCkgPyBldmVudC5uYXRpdmVFdmVudCA6IGV2ZW50LCAnZXNjYXBlLWtleScpO1xuICB9KTtcbiAgY29uc3QgY2xvc2VPbkVzY2FwZUtleURvd25DYXB0dXJlID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIHZhciBfZ2V0VGFyZ2V0MjtcbiAgICBjb25zdCBjYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHZhciBfZ2V0VGFyZ2V0O1xuICAgICAgY2xvc2VPbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgKF9nZXRUYXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpKSA9PSBudWxsIHx8IF9nZXRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGNhbGxiYWNrKTtcbiAgICB9O1xuICAgIChfZ2V0VGFyZ2V0MiA9IGdldFRhcmdldChldmVudCkpID09IG51bGwgfHwgX2dldFRhcmdldDIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGNhbGxiYWNrKTtcbiAgfSk7XG4gIGNvbnN0IGNsb3NlT25QcmVzc091dHNpZGUgPSB1c2VFZmZlY3RFdmVudChldmVudCA9PiB7XG4gICAgdmFyIF9kYXRhUmVmJGN1cnJlbnQkZmxvYTI7XG4gICAgLy8gR2l2ZW4gZGV2ZWxvcGVycyBjYW4gc3RvcCB0aGUgcHJvcGFnYXRpb24gb2YgdGhlIHN5bnRoZXRpYyBldmVudCxcbiAgICAvLyB3ZSBjYW4gb25seSBiZSBjb25maWRlbnQgd2l0aCBhIHBvc2l0aXZlIHZhbHVlLlxuICAgIGNvbnN0IGluc2lkZVJlYWN0VHJlZSA9IGluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50O1xuICAgIGluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gZmFsc2U7XG5cbiAgICAvLyBXaGVuIGNsaWNrIG91dHNpZGUgaXMgbGF6eSAoYGNsaWNrYCBldmVudCksIGhhbmRsZSBkcmFnZ2luZy5cbiAgICAvLyBEb24ndCBjbG9zZSBpZjpcbiAgICAvLyAtIFRoZSBjbGljayBzdGFydGVkIGluc2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudC5cbiAgICAvLyAtIFRoZSBjbGljayBlbmRlZCBpbnNpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQuXG4gICAgY29uc3QgZW5kZWRPclN0YXJ0ZWRJbnNpZGUgPSBlbmRlZE9yU3RhcnRlZEluc2lkZVJlZi5jdXJyZW50O1xuICAgIGVuZGVkT3JTdGFydGVkSW5zaWRlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICBpZiAob3V0c2lkZVByZXNzRXZlbnQgPT09ICdjbGljaycgJiYgZW5kZWRPclN0YXJ0ZWRJbnNpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGluc2lkZVJlYWN0VHJlZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG91dHNpZGVQcmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiAhb3V0c2lkZVByZXNzKGV2ZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpO1xuICAgIGNvbnN0IGluZXJ0U2VsZWN0b3IgPSBcIltcIiArIGNyZWF0ZUF0dHJpYnV0ZSgnaW5lcnQnKSArIFwiXVwiO1xuICAgIGNvbnN0IG1hcmtlcnMgPSBnZXREb2N1bWVudChlbGVtZW50cy5mbG9hdGluZykucXVlcnlTZWxlY3RvckFsbChpbmVydFNlbGVjdG9yKTtcbiAgICBsZXQgdGFyZ2V0Um9vdEFuY2VzdG9yID0gaXNFbGVtZW50KHRhcmdldCkgPyB0YXJnZXQgOiBudWxsO1xuICAgIHdoaWxlICh0YXJnZXRSb290QW5jZXN0b3IgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZSh0YXJnZXRSb290QW5jZXN0b3IpKSB7XG4gICAgICBjb25zdCBuZXh0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZSh0YXJnZXRSb290QW5jZXN0b3IpO1xuICAgICAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShuZXh0UGFyZW50KSB8fCAhaXNFbGVtZW50KG5leHRQYXJlbnQpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGFyZ2V0Um9vdEFuY2VzdG9yID0gbmV4dFBhcmVudDtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgY2xpY2sgb2NjdXJyZWQgb24gYSB0aGlyZC1wYXJ0eSBlbGVtZW50IGluamVjdGVkIGFmdGVyIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgcmVuZGVyZWQuXG4gICAgaWYgKG1hcmtlcnMubGVuZ3RoICYmIGlzRWxlbWVudCh0YXJnZXQpICYmICFpc1Jvb3RFbGVtZW50KHRhcmdldCkgJiZcbiAgICAvLyBDbGlja2VkIG9uIGEgZGlyZWN0IGFuY2VzdG9yIChlLmcuIEZsb2F0aW5nT3ZlcmxheSkuXG4gICAgIWNvbnRhaW5zKHRhcmdldCwgZWxlbWVudHMuZmxvYXRpbmcpICYmXG4gICAgLy8gSWYgdGhlIHRhcmdldCByb290IGVsZW1lbnQgY29udGFpbnMgbm9uZSBvZiB0aGUgbWFya2VycywgdGhlbiB0aGVcbiAgICAvLyBlbGVtZW50IHdhcyBpbmplY3RlZCBhZnRlciB0aGUgZmxvYXRpbmcgZWxlbWVudCByZW5kZXJlZC5cbiAgICBBcnJheS5mcm9tKG1hcmtlcnMpLmV2ZXJ5KG1hcmtlciA9PiAhY29udGFpbnModGFyZ2V0Um9vdEFuY2VzdG9yLCBtYXJrZXIpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSBjbGljayBvY2N1cnJlZCBvbiB0aGUgc2Nyb2xsYmFyXG4gICAgaWYgKGlzSFRNTEVsZW1lbnQodGFyZ2V0KSAmJiBmbG9hdGluZykge1xuICAgICAgLy8gSW4gRmlyZWZveCwgYHRhcmdldC5zY3JvbGxXaWR0aCA+IHRhcmdldC5jbGllbnRXaWR0aGAgZm9yIGlubGluZVxuICAgICAgLy8gZWxlbWVudHMuXG4gICAgICBjb25zdCBjYW5TY3JvbGxYID0gdGFyZ2V0LmNsaWVudFdpZHRoID4gMCAmJiB0YXJnZXQuc2Nyb2xsV2lkdGggPiB0YXJnZXQuY2xpZW50V2lkdGg7XG4gICAgICBjb25zdCBjYW5TY3JvbGxZID0gdGFyZ2V0LmNsaWVudEhlaWdodCA+IDAgJiYgdGFyZ2V0LnNjcm9sbEhlaWdodCA+IHRhcmdldC5jbGllbnRIZWlnaHQ7XG4gICAgICBsZXQgeENvbmQgPSBjYW5TY3JvbGxZICYmIGV2ZW50Lm9mZnNldFggPiB0YXJnZXQuY2xpZW50V2lkdGg7XG5cbiAgICAgIC8vIEluIHNvbWUgYnJvd3NlcnMgaXQgaXMgcG9zc2libGUgdG8gY2hhbmdlIHRoZSA8Ym9keT4gKG9yIHdpbmRvdylcbiAgICAgIC8vIHNjcm9sbGJhciB0byB0aGUgbGVmdCBzaWRlLCBidXQgaXMgdmVyeSByYXJlIGFuZCBpcyBkaWZmaWN1bHQgdG9cbiAgICAgIC8vIGNoZWNrIGZvci4gUGx1cywgZm9yIG1vZGFsIGRpYWxvZ3Mgd2l0aCBiYWNrZHJvcHMsIGl0IGlzIG1vcmVcbiAgICAgIC8vIGltcG9ydGFudCB0aGF0IHRoZSBiYWNrZHJvcCBpcyBjaGVja2VkIGJ1dCBub3Qgc28gbXVjaCB0aGUgd2luZG93LlxuICAgICAgaWYgKGNhblNjcm9sbFkpIHtcbiAgICAgICAgY29uc3QgaXNSVEwgPSBnZXRDb21wdXRlZFN0eWxlKHRhcmdldCkuZGlyZWN0aW9uID09PSAncnRsJztcbiAgICAgICAgaWYgKGlzUlRMKSB7XG4gICAgICAgICAgeENvbmQgPSBldmVudC5vZmZzZXRYIDw9IHRhcmdldC5vZmZzZXRXaWR0aCAtIHRhcmdldC5jbGllbnRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHhDb25kIHx8IGNhblNjcm9sbFggJiYgZXZlbnQub2Zmc2V0WSA+IHRhcmdldC5jbGllbnRIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBub2RlSWQgPSAoX2RhdGFSZWYkY3VycmVudCRmbG9hMiA9IGRhdGFSZWYuY3VycmVudC5mbG9hdGluZ0NvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YVJlZiRjdXJyZW50JGZsb2EyLm5vZGVJZDtcbiAgICBjb25zdCB0YXJnZXRJc0luc2lkZUNoaWxkcmVuID0gdHJlZSAmJiBnZXRDaGlsZHJlbih0cmVlLm5vZGVzUmVmLmN1cnJlbnQsIG5vZGVJZCkuc29tZShub2RlID0+IHtcbiAgICAgIHZhciBfbm9kZSRjb250ZXh0O1xuICAgICAgcmV0dXJuIGlzRXZlbnRUYXJnZXRXaXRoaW4oZXZlbnQsIChfbm9kZSRjb250ZXh0ID0gbm9kZS5jb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkY29udGV4dC5lbGVtZW50cy5mbG9hdGluZyk7XG4gICAgfSk7XG4gICAgaWYgKGlzRXZlbnRUYXJnZXRXaXRoaW4oZXZlbnQsIGVsZW1lbnRzLmZsb2F0aW5nKSB8fCBpc0V2ZW50VGFyZ2V0V2l0aGluKGV2ZW50LCBlbGVtZW50cy5kb21SZWZlcmVuY2UpIHx8IHRhcmdldElzSW5zaWRlQ2hpbGRyZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0cmVlID8gZ2V0Q2hpbGRyZW4odHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpIDogW107XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBzaG91bGREaXNtaXNzID0gdHJ1ZTtcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICB2YXIgX2NoaWxkJGNvbnRleHQyO1xuICAgICAgICBpZiAoKF9jaGlsZCRjb250ZXh0MiA9IGNoaWxkLmNvbnRleHQpICE9IG51bGwgJiYgX2NoaWxkJGNvbnRleHQyLm9wZW4gJiYgIWNoaWxkLmNvbnRleHQuZGF0YVJlZi5jdXJyZW50Ll9fb3V0c2lkZVByZXNzQnViYmxlcykge1xuICAgICAgICAgIHNob3VsZERpc21pc3MgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKCFzaG91bGREaXNtaXNzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudCwgJ291dHNpZGUtcHJlc3MnKTtcbiAgfSk7XG4gIGNvbnN0IGNsb3NlT25QcmVzc091dHNpZGVDYXB0dXJlID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIHZhciBfZ2V0VGFyZ2V0NDtcbiAgICBjb25zdCBjYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHZhciBfZ2V0VGFyZ2V0MztcbiAgICAgIGNsb3NlT25QcmVzc091dHNpZGUoZXZlbnQpO1xuICAgICAgKF9nZXRUYXJnZXQzID0gZ2V0VGFyZ2V0KGV2ZW50KSkgPT0gbnVsbCB8fCBfZ2V0VGFyZ2V0My5yZW1vdmVFdmVudExpc3RlbmVyKG91dHNpZGVQcmVzc0V2ZW50LCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICAoX2dldFRhcmdldDQgPSBnZXRUYXJnZXQoZXZlbnQpKSA9PSBudWxsIHx8IF9nZXRUYXJnZXQ0LmFkZEV2ZW50TGlzdGVuZXIob3V0c2lkZVByZXNzRXZlbnQsIGNhbGxiYWNrKTtcbiAgfSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFvcGVuIHx8ICFlbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRhdGFSZWYuY3VycmVudC5fX2VzY2FwZUtleUJ1YmJsZXMgPSBlc2NhcGVLZXlCdWJibGVzO1xuICAgIGRhdGFSZWYuY3VycmVudC5fX291dHNpZGVQcmVzc0J1YmJsZXMgPSBvdXRzaWRlUHJlc3NCdWJibGVzO1xuICAgIGZ1bmN0aW9uIG9uU2Nyb2xsKGV2ZW50KSB7XG4gICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50LCAnYW5jZXN0b3Itc2Nyb2xsJyk7XG4gICAgfVxuICAgIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICBlc2NhcGVLZXkgJiYgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBlc2NhcGVLZXlDYXB0dXJlID8gY2xvc2VPbkVzY2FwZUtleURvd25DYXB0dXJlIDogY2xvc2VPbkVzY2FwZUtleURvd24sIGVzY2FwZUtleUNhcHR1cmUpO1xuICAgIG91dHNpZGVQcmVzcyAmJiBkb2MuYWRkRXZlbnRMaXN0ZW5lcihvdXRzaWRlUHJlc3NFdmVudCwgb3V0c2lkZVByZXNzQ2FwdHVyZSA/IGNsb3NlT25QcmVzc091dHNpZGVDYXB0dXJlIDogY2xvc2VPblByZXNzT3V0c2lkZSwgb3V0c2lkZVByZXNzQ2FwdHVyZSk7XG4gICAgbGV0IGFuY2VzdG9ycyA9IFtdO1xuICAgIGlmIChhbmNlc3RvclNjcm9sbCkge1xuICAgICAgaWYgKGlzRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpKSB7XG4gICAgICAgIGFuY2VzdG9ycyA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnRzLmRvbVJlZmVyZW5jZSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNFbGVtZW50KGVsZW1lbnRzLmZsb2F0aW5nKSkge1xuICAgICAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMuY29uY2F0KGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzRWxlbWVudChlbGVtZW50cy5yZWZlcmVuY2UpICYmIGVsZW1lbnRzLnJlZmVyZW5jZSAmJiBlbGVtZW50cy5yZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIHtcbiAgICAgICAgYW5jZXN0b3JzID0gYW5jZXN0b3JzLmNvbmNhdChnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50cy5yZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZ25vcmUgdGhlIHZpc3VhbCB2aWV3cG9ydCBmb3Igc2Nyb2xsaW5nIGRpc21pc3NhbCAoYWxsb3cgcGluY2gtem9vbSlcbiAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMuZmlsdGVyKGFuY2VzdG9yID0+IHtcbiAgICAgIHZhciBfZG9jJGRlZmF1bHRWaWV3O1xuICAgICAgcmV0dXJuIGFuY2VzdG9yICE9PSAoKF9kb2MkZGVmYXVsdFZpZXcgPSBkb2MuZGVmYXVsdFZpZXcpID09IG51bGwgPyB2b2lkIDAgOiBfZG9jJGRlZmF1bHRWaWV3LnZpc3VhbFZpZXdwb3J0KTtcbiAgICB9KTtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwge1xuICAgICAgICBwYXNzaXZlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZXNjYXBlS2V5ICYmIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXNjYXBlS2V5Q2FwdHVyZSA/IGNsb3NlT25Fc2NhcGVLZXlEb3duQ2FwdHVyZSA6IGNsb3NlT25Fc2NhcGVLZXlEb3duLCBlc2NhcGVLZXlDYXB0dXJlKTtcbiAgICAgIG91dHNpZGVQcmVzcyAmJiBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcihvdXRzaWRlUHJlc3NFdmVudCwgb3V0c2lkZVByZXNzQ2FwdHVyZSA/IGNsb3NlT25QcmVzc091dHNpZGVDYXB0dXJlIDogY2xvc2VPblByZXNzT3V0c2lkZSwgb3V0c2lkZVByZXNzQ2FwdHVyZSk7XG4gICAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICAgIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH0sIFtkYXRhUmVmLCBlbGVtZW50cywgZXNjYXBlS2V5LCBvdXRzaWRlUHJlc3MsIG91dHNpZGVQcmVzc0V2ZW50LCBvcGVuLCBvbk9wZW5DaGFuZ2UsIGFuY2VzdG9yU2Nyb2xsLCBlbmFibGVkLCBlc2NhcGVLZXlCdWJibGVzLCBvdXRzaWRlUHJlc3NCdWJibGVzLCBjbG9zZU9uRXNjYXBlS2V5RG93biwgZXNjYXBlS2V5Q2FwdHVyZSwgY2xvc2VPbkVzY2FwZUtleURvd25DYXB0dXJlLCBjbG9zZU9uUHJlc3NPdXRzaWRlLCBvdXRzaWRlUHJlc3NDYXB0dXJlLCBjbG9zZU9uUHJlc3NPdXRzaWRlQ2FwdHVyZV0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gIH0sIFtvdXRzaWRlUHJlc3MsIG91dHNpZGVQcmVzc0V2ZW50XSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvbktleURvd246IGNsb3NlT25Fc2NhcGVLZXlEb3duLFxuICAgIFtidWJibGVIYW5kbGVyS2V5c1tyZWZlcmVuY2VQcmVzc0V2ZW50XV06IGV2ZW50ID0+IHtcbiAgICAgIGlmIChyZWZlcmVuY2VQcmVzcykge1xuICAgICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAncmVmZXJlbmNlLXByZXNzJyk7XG4gICAgICB9XG4gICAgfVxuICB9KSwgW2Nsb3NlT25Fc2NhcGVLZXlEb3duLCBvbk9wZW5DaGFuZ2UsIHJlZmVyZW5jZVByZXNzLCByZWZlcmVuY2VQcmVzc0V2ZW50XSk7XG4gIGNvbnN0IGZsb2F0aW5nID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIG9uS2V5RG93bjogY2xvc2VPbkVzY2FwZUtleURvd24sXG4gICAgb25Nb3VzZURvd24oKSB7XG4gICAgICBlbmRlZE9yU3RhcnRlZEluc2lkZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9LFxuICAgIG9uTW91c2VVcCgpIHtcbiAgICAgIGVuZGVkT3JTdGFydGVkSW5zaWRlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sXG4gICAgW2NhcHR1cmVIYW5kbGVyS2V5c1tvdXRzaWRlUHJlc3NFdmVudF1dOiAoKSA9PiB7XG4gICAgICBpbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9KSwgW2Nsb3NlT25Fc2NhcGVLZXlEb3duLCBvdXRzaWRlUHJlc3NFdmVudF0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2UsIGZsb2F0aW5nXSk7XG59XG5cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nUm9vdENvbnRleHQob3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgb3BlbiA9IGZhbHNlLFxuICAgIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlUHJvcCxcbiAgICBlbGVtZW50czogZWxlbWVudHNQcm9wXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBmbG9hdGluZ0lkID0gdXNlSWQoKTtcbiAgY29uc3QgZGF0YVJlZiA9IFJlYWN0LnVzZVJlZih7fSk7XG4gIGNvbnN0IFtldmVudHNdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4gY3JlYXRlUHViU3ViKCkpO1xuICBjb25zdCBuZXN0ZWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpICE9IG51bGw7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBjb25zdCBvcHRpb25Eb21SZWZlcmVuY2UgPSBlbGVtZW50c1Byb3AucmVmZXJlbmNlO1xuICAgIGlmIChvcHRpb25Eb21SZWZlcmVuY2UgJiYgIWlzRWxlbWVudChvcHRpb25Eb21SZWZlcmVuY2UpKSB7XG4gICAgICBlcnJvcignQ2Fubm90IHBhc3MgYSB2aXJ0dWFsIGVsZW1lbnQgdG8gdGhlIGBlbGVtZW50cy5yZWZlcmVuY2VgIG9wdGlvbiwnLCAnYXMgaXQgbXVzdCBiZSBhIHJlYWwgRE9NIGVsZW1lbnQuIFVzZSBgcmVmcy5zZXRQb3NpdGlvblJlZmVyZW5jZSgpYCcsICdpbnN0ZWFkLicpO1xuICAgIH1cbiAgfVxuICBjb25zdCBbcG9zaXRpb25SZWZlcmVuY2UsIHNldFBvc2l0aW9uUmVmZXJlbmNlXSA9IFJlYWN0LnVzZVN0YXRlKGVsZW1lbnRzUHJvcC5yZWZlcmVuY2UpO1xuICBjb25zdCBvbk9wZW5DaGFuZ2UgPSB1c2VFZmZlY3RFdmVudCgob3BlbiwgZXZlbnQsIHJlYXNvbikgPT4ge1xuICAgIGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQgPSBvcGVuID8gZXZlbnQgOiB1bmRlZmluZWQ7XG4gICAgZXZlbnRzLmVtaXQoJ29wZW5jaGFuZ2UnLCB7XG4gICAgICBvcGVuLFxuICAgICAgZXZlbnQsXG4gICAgICByZWFzb24sXG4gICAgICBuZXN0ZWRcbiAgICB9KTtcbiAgICBvbk9wZW5DaGFuZ2VQcm9wID09IG51bGwgfHwgb25PcGVuQ2hhbmdlUHJvcChvcGVuLCBldmVudCwgcmVhc29uKTtcbiAgfSk7XG4gIGNvbnN0IHJlZnMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgc2V0UG9zaXRpb25SZWZlcmVuY2VcbiAgfSksIFtdKTtcbiAgY29uc3QgZWxlbWVudHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmZXJlbmNlOiBwb3NpdGlvblJlZmVyZW5jZSB8fCBlbGVtZW50c1Byb3AucmVmZXJlbmNlIHx8IG51bGwsXG4gICAgZmxvYXRpbmc6IGVsZW1lbnRzUHJvcC5mbG9hdGluZyB8fCBudWxsLFxuICAgIGRvbVJlZmVyZW5jZTogZWxlbWVudHNQcm9wLnJlZmVyZW5jZVxuICB9KSwgW3Bvc2l0aW9uUmVmZXJlbmNlLCBlbGVtZW50c1Byb3AucmVmZXJlbmNlLCBlbGVtZW50c1Byb3AuZmxvYXRpbmddKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBkYXRhUmVmLFxuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGVsZW1lbnRzLFxuICAgIGV2ZW50cyxcbiAgICBmbG9hdGluZ0lkLFxuICAgIHJlZnNcbiAgfSksIFtvcGVuLCBvbk9wZW5DaGFuZ2UsIGVsZW1lbnRzLCBldmVudHMsIGZsb2F0aW5nSWQsIHJlZnNdKTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGEgZmxvYXRpbmcgZWxlbWVudCBhbmQgY29udGV4dCB0byBhZGQgaW50ZXJhY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZUZsb2F0aW5nXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgbm9kZUlkXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpbnRlcm5hbFJvb3RDb250ZXh0ID0gdXNlRmxvYXRpbmdSb290Q29udGV4dCh7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBlbGVtZW50czoge1xuICAgICAgcmVmZXJlbmNlOiBudWxsLFxuICAgICAgZmxvYXRpbmc6IG51bGwsXG4gICAgICAuLi5vcHRpb25zLmVsZW1lbnRzXG4gICAgfVxuICB9KTtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSBvcHRpb25zLnJvb3RDb250ZXh0IHx8IGludGVybmFsUm9vdENvbnRleHQ7XG4gIGNvbnN0IGNvbXB1dGVkRWxlbWVudHMgPSByb290Q29udGV4dC5lbGVtZW50cztcbiAgY29uc3QgW19kb21SZWZlcmVuY2UsIHNldERvbVJlZmVyZW5jZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3Bvc2l0aW9uUmVmZXJlbmNlLCBfc2V0UG9zaXRpb25SZWZlcmVuY2VdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IG9wdGlvbkRvbVJlZmVyZW5jZSA9IGNvbXB1dGVkRWxlbWVudHMgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbXB1dGVkRWxlbWVudHMucmVmZXJlbmNlO1xuICBjb25zdCBkb21SZWZlcmVuY2UgPSBvcHRpb25Eb21SZWZlcmVuY2UgfHwgX2RvbVJlZmVyZW5jZTtcbiAgY29uc3QgZG9tUmVmZXJlbmNlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCB0cmVlID0gdXNlRmxvYXRpbmdUcmVlKCk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoZG9tUmVmZXJlbmNlKSB7XG4gICAgICBkb21SZWZlcmVuY2VSZWYuY3VycmVudCA9IGRvbVJlZmVyZW5jZTtcbiAgICB9XG4gIH0sIFtkb21SZWZlcmVuY2VdKTtcbiAgY29uc3QgcG9zaXRpb24gPSB1c2VGbG9hdGluZyQxKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICAuLi5jb21wdXRlZEVsZW1lbnRzLFxuICAgICAgLi4uKHBvc2l0aW9uUmVmZXJlbmNlICYmIHtcbiAgICAgICAgcmVmZXJlbmNlOiBwb3NpdGlvblJlZmVyZW5jZVxuICAgICAgfSlcbiAgICB9XG4gIH0pO1xuICBjb25zdCBzZXRQb3NpdGlvblJlZmVyZW5jZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGNvbnN0IGNvbXB1dGVkUG9zaXRpb25SZWZlcmVuY2UgPSBpc0VsZW1lbnQobm9kZSkgPyB7XG4gICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3Q6ICgpID0+IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBjb250ZXh0RWxlbWVudDogbm9kZVxuICAgIH0gOiBub2RlO1xuICAgIC8vIFN0b3JlIHRoZSBwb3NpdGlvblJlZmVyZW5jZSBpbiBzdGF0ZSBpZiB0aGUgRE9NIHJlZmVyZW5jZSBpcyBzcGVjaWZpZWQgZXh0ZXJuYWxseSB2aWEgdGhlXG4gICAgLy8gYGVsZW1lbnRzLnJlZmVyZW5jZWAgb3B0aW9uLiBUaGlzIGVuc3VyZXMgdGhhdCBpdCB3b24ndCBiZSBvdmVycmlkZGVuIG9uIGZ1dHVyZSByZW5kZXJzLlxuICAgIF9zZXRQb3NpdGlvblJlZmVyZW5jZShjb21wdXRlZFBvc2l0aW9uUmVmZXJlbmNlKTtcbiAgICBwb3NpdGlvbi5yZWZzLnNldFJlZmVyZW5jZShjb21wdXRlZFBvc2l0aW9uUmVmZXJlbmNlKTtcbiAgfSwgW3Bvc2l0aW9uLnJlZnNdKTtcbiAgY29uc3Qgc2V0UmVmZXJlbmNlID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgaWYgKGlzRWxlbWVudChub2RlKSB8fCBub2RlID09PSBudWxsKSB7XG4gICAgICBkb21SZWZlcmVuY2VSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBzZXREb21SZWZlcmVuY2Uobm9kZSk7XG4gICAgfVxuXG4gICAgLy8gQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yIHBhc3NpbmcgYSB2aXJ0dWFsIGVsZW1lbnQgdG8gYHJlZmVyZW5jZWBcbiAgICAvLyBhZnRlciBpdCBoYXMgc2V0IHRoZSBET00gcmVmZXJlbmNlLlxuICAgIGlmIChpc0VsZW1lbnQocG9zaXRpb24ucmVmcy5yZWZlcmVuY2UuY3VycmVudCkgfHwgcG9zaXRpb24ucmVmcy5yZWZlcmVuY2UuY3VycmVudCA9PT0gbnVsbCB8fFxuICAgIC8vIERvbid0IGFsbG93IHNldHRpbmcgdmlydHVhbCBlbGVtZW50cyB1c2luZyB0aGUgb2xkIHRlY2huaXF1ZSBiYWNrIHRvXG4gICAgLy8gYG51bGxgIHRvIHN1cHBvcnQgYHBvc2l0aW9uUmVmZXJlbmNlYCArIGFuIHVuc3RhYmxlIGByZWZlcmVuY2VgXG4gICAgLy8gY2FsbGJhY2sgcmVmLlxuICAgIG5vZGUgIT09IG51bGwgJiYgIWlzRWxlbWVudChub2RlKSkge1xuICAgICAgcG9zaXRpb24ucmVmcy5zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgfVxuICB9LCBbcG9zaXRpb24ucmVmc10pO1xuICBjb25zdCByZWZzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLnBvc2l0aW9uLnJlZnMsXG4gICAgc2V0UmVmZXJlbmNlLFxuICAgIHNldFBvc2l0aW9uUmVmZXJlbmNlLFxuICAgIGRvbVJlZmVyZW5jZTogZG9tUmVmZXJlbmNlUmVmXG4gIH0pLCBbcG9zaXRpb24ucmVmcywgc2V0UmVmZXJlbmNlLCBzZXRQb3NpdGlvblJlZmVyZW5jZV0pO1xuICBjb25zdCBlbGVtZW50cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAuLi5wb3NpdGlvbi5lbGVtZW50cyxcbiAgICBkb21SZWZlcmVuY2U6IGRvbVJlZmVyZW5jZVxuICB9KSwgW3Bvc2l0aW9uLmVsZW1lbnRzLCBkb21SZWZlcmVuY2VdKTtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAuLi5wb3NpdGlvbixcbiAgICAuLi5yb290Q29udGV4dCxcbiAgICByZWZzLFxuICAgIGVsZW1lbnRzLFxuICAgIG5vZGVJZFxuICB9KSwgW3Bvc2l0aW9uLCByZWZzLCBlbGVtZW50cywgbm9kZUlkLCByb290Q29udGV4dF0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgcm9vdENvbnRleHQuZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCA9IGNvbnRleHQ7XG4gICAgY29uc3Qgbm9kZSA9IHRyZWUgPT0gbnVsbCA/IHZvaWQgMCA6IHRyZWUubm9kZXNSZWYuY3VycmVudC5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gbm9kZUlkKTtcbiAgICBpZiAobm9kZSkge1xuICAgICAgbm9kZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLnBvc2l0aW9uLFxuICAgIGNvbnRleHQsXG4gICAgcmVmcyxcbiAgICBlbGVtZW50c1xuICB9KSwgW3Bvc2l0aW9uLCByZWZzLCBlbGVtZW50cywgY29udGV4dF0pO1xufVxuXG4vKipcbiAqIE9wZW5zIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoaWxlIHRoZSByZWZlcmVuY2UgZWxlbWVudCBoYXMgZm9jdXMsIGxpa2UgQ1NTXG4gKiBgOmZvY3VzYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VGb2N1c1xuICovXG5mdW5jdGlvbiB1c2VGb2N1cyhjb250ZXh0LCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGV2ZW50cyxcbiAgICBkYXRhUmVmLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgdmlzaWJsZU9ubHkgPSB0cnVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgYmxvY2tGb2N1c1JlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHRpbWVvdXRSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3Qga2V5Ym9hcmRNb2RhbGl0eVJlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudHMuZG9tUmVmZXJlbmNlKTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2Ugd2FzIGZvY3VzZWQgYW5kIHRoZSB1c2VyIGxlZnQgdGhlIHRhYi93aW5kb3csIGFuZCB0aGVcbiAgICAvLyBmbG9hdGluZyBlbGVtZW50IHdhcyBub3Qgb3BlbiwgdGhlIGZvY3VzIHNob3VsZCBiZSBibG9ja2VkIHdoZW4gdGhleVxuICAgIC8vIHJldHVybiB0byB0aGUgdGFiL3dpbmRvdy5cbiAgICBmdW5jdGlvbiBvbkJsdXIoKSB7XG4gICAgICBpZiAoIW9wZW4gJiYgaXNIVE1MRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpICYmIGVsZW1lbnRzLmRvbVJlZmVyZW5jZSA9PT0gYWN0aXZlRWxlbWVudChnZXREb2N1bWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpKSkge1xuICAgICAgICBibG9ja0ZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBvbktleURvd24oKSB7XG4gICAgICBrZXlib2FyZE1vZGFsaXR5UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cbiAgICB3aW4uYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIG9uQmx1cik7XG4gICAgd2luLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24sIHRydWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIG9uQmx1cik7XG4gICAgICB3aW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93biwgdHJ1ZSk7XG4gICAgfTtcbiAgfSwgW2VsZW1lbnRzLmRvbVJlZmVyZW5jZSwgb3BlbiwgZW5hYmxlZF0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICAgIGZ1bmN0aW9uIG9uT3BlbkNoYW5nZShfcmVmKSB7XG4gICAgICBsZXQge1xuICAgICAgICByZWFzb25cbiAgICAgIH0gPSBfcmVmO1xuICAgICAgaWYgKHJlYXNvbiA9PT0gJ3JlZmVyZW5jZS1wcmVzcycgfHwgcmVhc29uID09PSAnZXNjYXBlLWtleScpIHtcbiAgICAgICAgYmxvY2tGb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZXZlbnRzLm9uKCdvcGVuY2hhbmdlJywgb25PcGVuQ2hhbmdlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZXZlbnRzLm9mZignb3BlbmNoYW5nZScsIG9uT3BlbkNoYW5nZSk7XG4gICAgfTtcbiAgfSwgW2V2ZW50cywgZW5hYmxlZF0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dFJlZi5jdXJyZW50KTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvblBvaW50ZXJEb3duKGV2ZW50KSB7XG4gICAgICBpZiAoaXNWaXJ0dWFsUG9pbnRlckV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KSkgcmV0dXJuO1xuICAgICAga2V5Ym9hcmRNb2RhbGl0eVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSxcbiAgICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgICBibG9ja0ZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9LFxuICAgIG9uRm9jdXMoZXZlbnQpIHtcbiAgICAgIGlmIChibG9ja0ZvY3VzUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGdldFRhcmdldChldmVudC5uYXRpdmVFdmVudCk7XG4gICAgICBpZiAodmlzaWJsZU9ubHkgJiYgaXNFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBNYWMgU2FmYXJpIHVucmVsaWFibHkgbWF0Y2hlcyBgOmZvY3VzLXZpc2libGVgIG9uIHRoZSByZWZlcmVuY2VcbiAgICAgICAgICAvLyBpZiBmb2N1cyB3YXMgb3V0c2lkZSB0aGUgcGFnZSBpbml0aWFsbHkgLSB1c2UgdGhlIGZhbGxiYWNrXG4gICAgICAgICAgLy8gaW5zdGVhZC5cbiAgICAgICAgICBpZiAoaXNTYWZhcmkoKSAmJiBpc01hYygpKSB0aHJvdyBFcnJvcigpO1xuICAgICAgICAgIGlmICghdGFyZ2V0Lm1hdGNoZXMoJzpmb2N1cy12aXNpYmxlJykpIHJldHVybjtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIE9sZCBicm93c2VycyB3aWxsIHRocm93IGFuIGVycm9yIHdoZW4gdXNpbmcgYDpmb2N1cy12aXNpYmxlYC5cbiAgICAgICAgICBpZiAoIWtleWJvYXJkTW9kYWxpdHlSZWYuY3VycmVudCAmJiAhaXNUeXBlYWJsZUVsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnZm9jdXMnKTtcbiAgICB9LFxuICAgIG9uQmx1cihldmVudCkge1xuICAgICAgYmxvY2tGb2N1c1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldDtcbiAgICAgIGNvbnN0IG5hdGl2ZUV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQ7XG5cbiAgICAgIC8vIEhpdCB0aGUgbm9uLW1vZGFsIGZvY3VzIG1hbmFnZW1lbnQgcG9ydGFsIGd1YXJkLiBGb2N1cyB3aWxsIGJlXG4gICAgICAvLyBtb3ZlZCBpbnRvIHRoZSBmbG9hdGluZyBlbGVtZW50IGltbWVkaWF0ZWx5IGFmdGVyLlxuICAgICAgY29uc3QgbW92ZWRUb0ZvY3VzR3VhcmQgPSBpc0VsZW1lbnQocmVsYXRlZFRhcmdldCkgJiYgcmVsYXRlZFRhcmdldC5oYXNBdHRyaWJ1dGUoY3JlYXRlQXR0cmlidXRlKCdmb2N1cy1ndWFyZCcpKSAmJiByZWxhdGVkVGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJykgPT09ICdvdXRzaWRlJztcblxuICAgICAgLy8gV2FpdCBmb3IgdGhlIHdpbmRvdyBibHVyIGxpc3RlbmVyIHRvIGZpcmUuXG4gICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHZhciBfZGF0YVJlZiRjdXJyZW50JGZsb2E7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUVsID0gYWN0aXZlRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UgPyBlbGVtZW50cy5kb21SZWZlcmVuY2Uub3duZXJEb2N1bWVudCA6IGRvY3VtZW50KTtcblxuICAgICAgICAvLyBGb2N1cyBsZWZ0IHRoZSBwYWdlLCBrZWVwIGl0IG9wZW4uXG4gICAgICAgIGlmICghcmVsYXRlZFRhcmdldCAmJiBhY3RpdmVFbCA9PT0gZWxlbWVudHMuZG9tUmVmZXJlbmNlKSByZXR1cm47XG5cbiAgICAgICAgLy8gV2hlbiBmb2N1c2luZyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQgKGUuZy4gcmVndWxhciBjbGljayksIHRoZW5cbiAgICAgICAgLy8gY2xpY2tpbmcgaW50byB0aGUgZmxvYXRpbmcgZWxlbWVudCwgcHJldmVudCBpdCBmcm9tIGhpZGluZy5cbiAgICAgICAgLy8gTm90ZTogaXQgbXVzdCBiZSBmb2N1c2FibGUsIGUuZy4gYHRhYmluZGV4PVwiLTFcImAuXG4gICAgICAgIC8vIFdlIGNhbiBub3QgcmVseSBvbiByZWxhdGVkVGFyZ2V0IHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IGVsZW1lbnRcbiAgICAgICAgLy8gYXMgaXQgd2lsbCBvbmx5IHBvaW50IHRvIHRoZSBzaGFkb3cgaG9zdCBvZiB0aGUgbmV3bHkgZm9jdXNlZCBlbGVtZW50XG4gICAgICAgIC8vIGFuZCBub3QgdGhlIGVsZW1lbnQgdGhhdCBhY3R1YWxseSBoYXMgcmVjZWl2ZWQgZm9jdXMgaWYgaXQgaXMgbG9jYXRlZFxuICAgICAgICAvLyBpbnNpZGUgYSBzaGFkb3cgcm9vdC5cbiAgICAgICAgaWYgKGNvbnRhaW5zKChfZGF0YVJlZiRjdXJyZW50JGZsb2EgPSBkYXRhUmVmLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX2RhdGFSZWYkY3VycmVudCRmbG9hLnJlZnMuZmxvYXRpbmcuY3VycmVudCwgYWN0aXZlRWwpIHx8IGNvbnRhaW5zKGVsZW1lbnRzLmRvbVJlZmVyZW5jZSwgYWN0aXZlRWwpIHx8IG1vdmVkVG9Gb2N1c0d1YXJkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgbmF0aXZlRXZlbnQsICdmb2N1cycpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KSwgW2RhdGFSZWYsIGVsZW1lbnRzLmRvbVJlZmVyZW5jZSwgb25PcGVuQ2hhbmdlLCB2aXNpYmxlT25seV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZVxuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2VdKTtcbn1cblxuY29uc3QgQUNUSVZFX0tFWSA9ICdhY3RpdmUnO1xuY29uc3QgU0VMRUNURURfS0VZID0gJ3NlbGVjdGVkJztcbmZ1bmN0aW9uIG1lcmdlUHJvcHModXNlclByb3BzLCBwcm9wc0xpc3QsIGVsZW1lbnRLZXkpIHtcbiAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICBjb25zdCBpc0l0ZW0gPSBlbGVtZW50S2V5ID09PSAnaXRlbSc7XG4gIGxldCBkb21Vc2VyUHJvcHMgPSB1c2VyUHJvcHM7XG4gIGlmIChpc0l0ZW0gJiYgdXNlclByb3BzKSB7XG4gICAgY29uc3Qge1xuICAgICAgW0FDVElWRV9LRVldOiBfLFxuICAgICAgW1NFTEVDVEVEX0tFWV06IF9fLFxuICAgICAgLi4udmFsaWRQcm9wc1xuICAgIH0gPSB1c2VyUHJvcHM7XG4gICAgZG9tVXNlclByb3BzID0gdmFsaWRQcm9wcztcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLihlbGVtZW50S2V5ID09PSAnZmxvYXRpbmcnICYmIHtcbiAgICAgIHRhYkluZGV4OiAtMVxuICAgIH0pLFxuICAgIC4uLmRvbVVzZXJQcm9wcyxcbiAgICAuLi5wcm9wc0xpc3QubWFwKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHByb3BzT3JHZXRQcm9wcyA9IHZhbHVlID8gdmFsdWVbZWxlbWVudEtleV0gOiBudWxsO1xuICAgICAgaWYgKHR5cGVvZiBwcm9wc09yR2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHVzZXJQcm9wcyA/IHByb3BzT3JHZXRQcm9wcyh1c2VyUHJvcHMpIDogbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wc09yR2V0UHJvcHM7XG4gICAgfSkuY29uY2F0KHVzZXJQcm9wcykucmVkdWNlKChhY2MsIHByb3BzKSA9PiB7XG4gICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG4gICAgICBPYmplY3QuZW50cmllcyhwcm9wcykuZm9yRWFjaChfcmVmID0+IHtcbiAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IF9yZWY7XG4gICAgICAgIGlmIChpc0l0ZW0gJiYgW0FDVElWRV9LRVksIFNFTEVDVEVEX0tFWV0uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5LmluZGV4T2YoJ29uJykgPT09IDApIHtcbiAgICAgICAgICBpZiAoIW1hcC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgbWFwLnNldChrZXksIFtdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIF9tYXAkZ2V0O1xuICAgICAgICAgICAgKF9tYXAkZ2V0ID0gbWFwLmdldChrZXkpKSA9PSBudWxsIHx8IF9tYXAkZ2V0LnB1c2godmFsdWUpO1xuICAgICAgICAgICAgYWNjW2tleV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHZhciBfbWFwJGdldDI7XG4gICAgICAgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICAgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIChfbWFwJGdldDIgPSBtYXAuZ2V0KGtleSkpID09IG51bGwgPyB2b2lkIDAgOiBfbWFwJGdldDIubWFwKGZuID0+IGZuKC4uLmFyZ3MpKS5maW5kKHZhbCA9PiB2YWwgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pXG4gIH07XG59XG4vKipcbiAqIE1lcmdlcyBhbiBhcnJheSBvZiBpbnRlcmFjdGlvbiBob29rcycgcHJvcHMgaW50byBwcm9wIGdldHRlcnMsIGFsbG93aW5nXG4gKiBldmVudCBoYW5kbGVyIGZ1bmN0aW9ucyB0byBiZSBjb21wb3NlZCB0b2dldGhlciB3aXRob3V0IG92ZXJ3cml0aW5nIG9uZVxuICogYW5vdGhlci5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VJbnRlcmFjdGlvbnNcbiAqL1xuZnVuY3Rpb24gdXNlSW50ZXJhY3Rpb25zKHByb3BzTGlzdCkge1xuICBpZiAocHJvcHNMaXN0ID09PSB2b2lkIDApIHtcbiAgICBwcm9wc0xpc3QgPSBbXTtcbiAgfVxuICBjb25zdCByZWZlcmVuY2VEZXBzID0gcHJvcHNMaXN0Lm1hcChrZXkgPT4ga2V5ID09IG51bGwgPyB2b2lkIDAgOiBrZXkucmVmZXJlbmNlKTtcbiAgY29uc3QgZmxvYXRpbmdEZXBzID0gcHJvcHNMaXN0Lm1hcChrZXkgPT4ga2V5ID09IG51bGwgPyB2b2lkIDAgOiBrZXkuZmxvYXRpbmcpO1xuICBjb25zdCBpdGVtRGVwcyA9IHByb3BzTGlzdC5tYXAoa2V5ID0+IGtleSA9PSBudWxsID8gdm9pZCAwIDoga2V5Lml0ZW0pO1xuICBjb25zdCBnZXRSZWZlcmVuY2VQcm9wcyA9IFJlYWN0LnVzZUNhbGxiYWNrKHVzZXJQcm9wcyA9PiBtZXJnZVByb3BzKHVzZXJQcm9wcywgcHJvcHNMaXN0LCAncmVmZXJlbmNlJyksXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgcmVmZXJlbmNlRGVwcyk7XG4gIGNvbnN0IGdldEZsb2F0aW5nUHJvcHMgPSBSZWFjdC51c2VDYWxsYmFjayh1c2VyUHJvcHMgPT4gbWVyZ2VQcm9wcyh1c2VyUHJvcHMsIHByb3BzTGlzdCwgJ2Zsb2F0aW5nJyksXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgZmxvYXRpbmdEZXBzKTtcbiAgY29uc3QgZ2V0SXRlbVByb3BzID0gUmVhY3QudXNlQ2FsbGJhY2sodXNlclByb3BzID0+IG1lcmdlUHJvcHModXNlclByb3BzLCBwcm9wc0xpc3QsICdpdGVtJyksXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgaXRlbURlcHMpO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGdldFJlZmVyZW5jZVByb3BzLFxuICAgIGdldEZsb2F0aW5nUHJvcHMsXG4gICAgZ2V0SXRlbVByb3BzXG4gIH0pLCBbZ2V0UmVmZXJlbmNlUHJvcHMsIGdldEZsb2F0aW5nUHJvcHMsIGdldEl0ZW1Qcm9wc10pO1xufVxuXG5sZXQgaXNQcmV2ZW50U2Nyb2xsU3VwcG9ydGVkID0gZmFsc2U7XG5mdW5jdGlvbiBkb1N3aXRjaChvcmllbnRhdGlvbiwgdmVydGljYWwsIGhvcml6b250YWwpIHtcbiAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgIHJldHVybiB2ZXJ0aWNhbDtcbiAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgIHJldHVybiBob3Jpem9udGFsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdmVydGljYWwgfHwgaG9yaXpvbnRhbDtcbiAgfVxufVxuZnVuY3Rpb24gaXNNYWluT3JpZW50YXRpb25LZXkoa2V5LCBvcmllbnRhdGlvbikge1xuICBjb25zdCB2ZXJ0aWNhbCA9IGtleSA9PT0gQVJST1dfVVAgfHwga2V5ID09PSBBUlJPV19ET1dOO1xuICBjb25zdCBob3Jpem9udGFsID0ga2V5ID09PSBBUlJPV19MRUZUIHx8IGtleSA9PT0gQVJST1dfUklHSFQ7XG4gIHJldHVybiBkb1N3aXRjaChvcmllbnRhdGlvbiwgdmVydGljYWwsIGhvcml6b250YWwpO1xufVxuZnVuY3Rpb24gaXNNYWluT3JpZW50YXRpb25Ub0VuZEtleShrZXksIG9yaWVudGF0aW9uLCBydGwpIHtcbiAgY29uc3QgdmVydGljYWwgPSBrZXkgPT09IEFSUk9XX0RPV047XG4gIGNvbnN0IGhvcml6b250YWwgPSBydGwgPyBrZXkgPT09IEFSUk9XX0xFRlQgOiBrZXkgPT09IEFSUk9XX1JJR0hUO1xuICByZXR1cm4gZG9Td2l0Y2gob3JpZW50YXRpb24sIHZlcnRpY2FsLCBob3Jpem9udGFsKSB8fCBrZXkgPT09ICdFbnRlcicgfHwga2V5ID09PSAnICcgfHwga2V5ID09PSAnJztcbn1cbmZ1bmN0aW9uIGlzQ3Jvc3NPcmllbnRhdGlvbk9wZW5LZXkoa2V5LCBvcmllbnRhdGlvbiwgcnRsKSB7XG4gIGNvbnN0IHZlcnRpY2FsID0gcnRsID8ga2V5ID09PSBBUlJPV19MRUZUIDoga2V5ID09PSBBUlJPV19SSUdIVDtcbiAgY29uc3QgaG9yaXpvbnRhbCA9IGtleSA9PT0gQVJST1dfRE9XTjtcbiAgcmV0dXJuIGRvU3dpdGNoKG9yaWVudGF0aW9uLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbCk7XG59XG5mdW5jdGlvbiBpc0Nyb3NzT3JpZW50YXRpb25DbG9zZUtleShrZXksIG9yaWVudGF0aW9uLCBydGwpIHtcbiAgY29uc3QgdmVydGljYWwgPSBydGwgPyBrZXkgPT09IEFSUk9XX1JJR0hUIDoga2V5ID09PSBBUlJPV19MRUZUO1xuICBjb25zdCBob3Jpem9udGFsID0ga2V5ID09PSBBUlJPV19VUDtcbiAgcmV0dXJuIGRvU3dpdGNoKG9yaWVudGF0aW9uLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbCk7XG59XG4vKipcbiAqIEFkZHMgYXJyb3cga2V5LWJhc2VkIG5hdmlnYXRpb24gb2YgYSBsaXN0IG9mIGl0ZW1zLCBlaXRoZXIgdXNpbmcgcmVhbCBET01cbiAqIGZvY3VzIG9yIHZpcnR1YWwgZm9jdXMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlTGlzdE5hdmlnYXRpb25cbiAqL1xuZnVuY3Rpb24gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwgcHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgbGlzdFJlZixcbiAgICBhY3RpdmVJbmRleCxcbiAgICBvbk5hdmlnYXRlOiB1bnN0YWJsZV9vbk5hdmlnYXRlID0gKCkgPT4ge30sXG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgc2VsZWN0ZWRJbmRleCA9IG51bGwsXG4gICAgYWxsb3dFc2NhcGUgPSBmYWxzZSxcbiAgICBsb29wID0gZmFsc2UsXG4gICAgbmVzdGVkID0gZmFsc2UsXG4gICAgcnRsID0gZmFsc2UsXG4gICAgdmlydHVhbCA9IGZhbHNlLFxuICAgIGZvY3VzSXRlbU9uT3BlbiA9ICdhdXRvJyxcbiAgICBmb2N1c0l0ZW1PbkhvdmVyID0gdHJ1ZSxcbiAgICBvcGVuT25BcnJvd0tleURvd24gPSB0cnVlLFxuICAgIGRpc2FibGVkSW5kaWNlcyA9IHVuZGVmaW5lZCxcbiAgICBvcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCcsXG4gICAgY29scyA9IDEsXG4gICAgc2Nyb2xsSXRlbUludG9WaWV3ID0gdHJ1ZSxcbiAgICB2aXJ0dWFsSXRlbVJlZixcbiAgICBpdGVtU2l6ZXMsXG4gICAgZGVuc2UgPSBmYWxzZVxuICB9ID0gcHJvcHM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBpZiAoYWxsb3dFc2NhcGUpIHtcbiAgICAgIGlmICghbG9vcCkge1xuICAgICAgICB3YXJuKCdgdXNlTGlzdE5hdmlnYXRpb25gIGxvb3BpbmcgbXVzdCBiZSBlbmFibGVkIHRvIGFsbG93IGVzY2FwaW5nLicpO1xuICAgICAgfVxuICAgICAgaWYgKCF2aXJ0dWFsKSB7XG4gICAgICAgIHdhcm4oJ2B1c2VMaXN0TmF2aWdhdGlvbmAgbXVzdCBiZSB2aXJ0dWFsIHRvIGFsbG93IGVzY2FwaW5nLicpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYgY29scyA+IDEpIHtcbiAgICAgIHdhcm4oJ0luIGdyaWQgbGlzdCBuYXZpZ2F0aW9uIG1vZGUgKGBjb2xzYCA+IDEpLCB0aGUgYG9yaWVudGF0aW9uYCBzaG91bGQnLCAnYmUgZWl0aGVyIFwiaG9yaXpvbnRhbFwiIG9yIFwiYm90aFwiLicpO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXJlbnRJZCA9IHVzZUZsb2F0aW5nUGFyZW50Tm9kZUlkKCk7XG4gIGNvbnN0IHRyZWUgPSB1c2VGbG9hdGluZ1RyZWUoKTtcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUVmZmVjdEV2ZW50KHVuc3RhYmxlX29uTmF2aWdhdGUpO1xuICBjb25zdCBmb2N1c0l0ZW1Pbk9wZW5SZWYgPSBSZWFjdC51c2VSZWYoZm9jdXNJdGVtT25PcGVuKTtcbiAgY29uc3QgaW5kZXhSZWYgPSBSZWFjdC51c2VSZWYoc2VsZWN0ZWRJbmRleCAhPSBudWxsID8gc2VsZWN0ZWRJbmRleCA6IC0xKTtcbiAgY29uc3Qga2V5UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBpc1BvaW50ZXJNb2RhbGl0eVJlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgY29uc3QgcHJldmlvdXNPbk5hdmlnYXRlUmVmID0gUmVhY3QudXNlUmVmKG9uTmF2aWdhdGUpO1xuICBjb25zdCBwcmV2aW91c01vdW50ZWRSZWYgPSBSZWFjdC51c2VSZWYoISFlbGVtZW50cy5mbG9hdGluZyk7XG4gIGNvbnN0IHByZXZpb3VzT3BlblJlZiA9IFJlYWN0LnVzZVJlZihvcGVuKTtcbiAgY29uc3QgZm9yY2VTeW5jRm9jdXMgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBmb3JjZVNjcm9sbEludG9WaWV3UmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgZGlzYWJsZWRJbmRpY2VzUmVmID0gdXNlTGF0ZXN0UmVmKGRpc2FibGVkSW5kaWNlcyk7XG4gIGNvbnN0IGxhdGVzdE9wZW5SZWYgPSB1c2VMYXRlc3RSZWYob3Blbik7XG4gIGNvbnN0IHNjcm9sbEl0ZW1JbnRvVmlld1JlZiA9IHVzZUxhdGVzdFJlZihzY3JvbGxJdGVtSW50b1ZpZXcpO1xuICBjb25zdCBmbG9hdGluZ1JlZiA9IHVzZUxhdGVzdFJlZihlbGVtZW50cy5mbG9hdGluZyk7XG4gIGNvbnN0IHNlbGVjdGVkSW5kZXhSZWYgPSB1c2VMYXRlc3RSZWYoc2VsZWN0ZWRJbmRleCk7XG4gIGNvbnN0IFthY3RpdmVJZCwgc2V0QWN0aXZlSWRdID0gUmVhY3QudXNlU3RhdGUoKTtcbiAgY29uc3QgW3ZpcnR1YWxJZCwgc2V0VmlydHVhbElkXSA9IFJlYWN0LnVzZVN0YXRlKCk7XG4gIGNvbnN0IGZvY3VzSXRlbSA9IHVzZUVmZmVjdEV2ZW50KGZ1bmN0aW9uIChsaXN0UmVmLCBpbmRleFJlZiwgZm9yY2VTY3JvbGxJbnRvVmlldykge1xuICAgIGlmIChmb3JjZVNjcm9sbEludG9WaWV3ID09PSB2b2lkIDApIHtcbiAgICAgIGZvcmNlU2Nyb2xsSW50b1ZpZXcgPSBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcnVuRm9jdXMoaXRlbSkge1xuICAgICAgaWYgKHZpcnR1YWwpIHtcbiAgICAgICAgc2V0QWN0aXZlSWQoaXRlbS5pZCk7XG4gICAgICAgIHRyZWUgPT0gbnVsbCB8fCB0cmVlLmV2ZW50cy5lbWl0KCd2aXJ0dWFsZm9jdXMnLCBpdGVtKTtcbiAgICAgICAgaWYgKHZpcnR1YWxJdGVtUmVmKSB7XG4gICAgICAgICAgdmlydHVhbEl0ZW1SZWYuY3VycmVudCA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVucXVldWVGb2N1cyhpdGVtLCB7XG4gICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZSxcbiAgICAgICAgICAvLyBNYWMgU2FmYXJpIGRvZXMgbm90IG1vdmUgdGhlIHZpcnR1YWwgY3Vyc29yIHVubGVzcyB0aGUgZm9jdXMgY2FsbFxuICAgICAgICAgIC8vIGlzIHN5bmMuIEhvd2V2ZXIsIGZvciB0aGUgdmVyeSBmaXJzdCBmb2N1cyBjYWxsLCB3ZSBuZWVkIHRvIHdhaXRcbiAgICAgICAgICAvLyBmb3IgdGhlIHBvc2l0aW9uIHRvIGJlIHJlYWR5IGluIG9yZGVyIHRvIHByZXZlbnQgdW53YW50ZWRcbiAgICAgICAgICAvLyBzY3JvbGxpbmcuIFRoaXMgbWVhbnMgdGhlIHZpcnR1YWwgY3Vyc29yIHdpbGwgbm90IG1vdmUgdG8gdGhlIGZpcnN0XG4gICAgICAgICAgLy8gaXRlbSB3aGVuIGZpcnN0IG9wZW5pbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQsIGJ1dCB3aWxsIG9uXG4gICAgICAgICAgLy8gc3Vic2VxdWVudCBjYWxscy4gYHByZXZlbnRTY3JvbGxgIGlzIHN1cHBvcnRlZCBpbiBtb2Rlcm4gU2FmYXJpLFxuICAgICAgICAgIC8vIHNvIHdlIGNhbiB1c2UgdGhhdCBpbnN0ZWFkLlxuICAgICAgICAgIC8vIGlPUyBTYWZhcmkgbXVzdCBiZSBhc3luYyBvciB0aGUgZmlyc3QgaXRlbSB3aWxsIG5vdCBiZSBmb2N1c2VkLlxuICAgICAgICAgIHN5bmM6IGlzTWFjKCkgJiYgaXNTYWZhcmkoKSA/IGlzUHJldmVudFNjcm9sbFN1cHBvcnRlZCB8fCBmb3JjZVN5bmNGb2N1cy5jdXJyZW50IDogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGluaXRpYWxJdGVtID0gbGlzdFJlZi5jdXJyZW50W2luZGV4UmVmLmN1cnJlbnRdO1xuICAgIGlmIChpbml0aWFsSXRlbSkge1xuICAgICAgcnVuRm9jdXMoaW5pdGlhbEl0ZW0pO1xuICAgIH1cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgY29uc3Qgd2FpdGVkSXRlbSA9IGxpc3RSZWYuY3VycmVudFtpbmRleFJlZi5jdXJyZW50XSB8fCBpbml0aWFsSXRlbTtcbiAgICAgIGlmICghd2FpdGVkSXRlbSkgcmV0dXJuO1xuICAgICAgaWYgKCFpbml0aWFsSXRlbSkge1xuICAgICAgICBydW5Gb2N1cyh3YWl0ZWRJdGVtKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcm9sbEludG9WaWV3T3B0aW9ucyA9IHNjcm9sbEl0ZW1JbnRvVmlld1JlZi5jdXJyZW50O1xuICAgICAgY29uc3Qgc2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBzY3JvbGxJbnRvVmlld09wdGlvbnMgJiYgaXRlbSAmJiAoZm9yY2VTY3JvbGxJbnRvVmlldyB8fCAhaXNQb2ludGVyTW9kYWxpdHlSZWYuY3VycmVudCk7XG4gICAgICBpZiAoc2hvdWxkU2Nyb2xsSW50b1ZpZXcpIHtcbiAgICAgICAgLy8gSlNET00gZG9lc24ndCBzdXBwb3J0IGAuc2Nyb2xsSW50b1ZpZXcoKWAgYnV0IGl0J3Mgd2lkZWx5IHN1cHBvcnRlZFxuICAgICAgICAvLyBieSBhbGwgYnJvd3NlcnMuXG4gICAgICAgIHdhaXRlZEl0ZW0uc2Nyb2xsSW50b1ZpZXcgPT0gbnVsbCB8fCB3YWl0ZWRJdGVtLnNjcm9sbEludG9WaWV3KHR5cGVvZiBzY3JvbGxJbnRvVmlld09wdGlvbnMgPT09ICdib29sZWFuJyA/IHtcbiAgICAgICAgICBibG9jazogJ25lYXJlc3QnLFxuICAgICAgICAgIGlubGluZTogJ25lYXJlc3QnXG4gICAgICAgIH0gOiBzY3JvbGxJbnRvVmlld09wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLmZvY3VzKHtcbiAgICAgIGdldCBwcmV2ZW50U2Nyb2xsKCkge1xuICAgICAgICBpc1ByZXZlbnRTY3JvbGxTdXBwb3J0ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBTeW5jIGBzZWxlY3RlZEluZGV4YCB0byBiZSB0aGUgYGFjdGl2ZUluZGV4YCB1cG9uIG9wZW5pbmcgdGhlIGZsb2F0aW5nXG4gIC8vIGVsZW1lbnQuIEFsc28sIHJlc2V0IGBhY3RpdmVJbmRleGAgdXBvbiBjbG9zaW5nIHRoZSBmbG9hdGluZyBlbGVtZW50LlxuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKG9wZW4gJiYgZWxlbWVudHMuZmxvYXRpbmcpIHtcbiAgICAgIGlmIChmb2N1c0l0ZW1Pbk9wZW5SZWYuY3VycmVudCAmJiBzZWxlY3RlZEluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgLy8gUmVnYXJkbGVzcyBvZiB0aGUgcG9pbnRlciBtb2RhbGl0eSwgd2Ugd2FudCB0byBlbnN1cmUgdGhlIHNlbGVjdGVkXG4gICAgICAgIC8vIGl0ZW0gY29tZXMgaW50byB2aWV3IHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgb3BlbmVkLlxuICAgICAgICBmb3JjZVNjcm9sbEludG9WaWV3UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgb25OYXZpZ2F0ZShzZWxlY3RlZEluZGV4KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByZXZpb3VzTW91bnRlZFJlZi5jdXJyZW50KSB7XG4gICAgICAvLyBTaW5jZSB0aGUgdXNlciBjYW4gc3BlY2lmeSBgb25OYXZpZ2F0ZWAgY29uZGl0aW9uYWxseVxuICAgICAgLy8gKG9uTmF2aWdhdGU6IG9wZW4gPyBzZXRBY3RpdmVJbmRleCA6IHNldFNlbGVjdGVkSW5kZXgpLFxuICAgICAgLy8gd2Ugc3RvcmUgYW5kIGNhbGwgdGhlIHByZXZpb3VzIGZ1bmN0aW9uLlxuICAgICAgaW5kZXhSZWYuY3VycmVudCA9IC0xO1xuICAgICAgcHJldmlvdXNPbk5hdmlnYXRlUmVmLmN1cnJlbnQobnVsbCk7XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3BlbiwgZWxlbWVudHMuZmxvYXRpbmcsIHNlbGVjdGVkSW5kZXgsIG9uTmF2aWdhdGVdKTtcblxuICAvLyBTeW5jIGBhY3RpdmVJbmRleGAgdG8gYmUgdGhlIGZvY3VzZWQgaXRlbSB3aGlsZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpc1xuICAvLyBvcGVuLlxuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKG9wZW4gJiYgZWxlbWVudHMuZmxvYXRpbmcpIHtcbiAgICAgIGlmIChhY3RpdmVJbmRleCA9PSBudWxsKSB7XG4gICAgICAgIGZvcmNlU3luY0ZvY3VzLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXhSZWYuY3VycmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVzZXQgd2hpbGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2FzIG9wZW4gKGUuZy4gdGhlIGxpc3QgY2hhbmdlZCkuXG4gICAgICAgIGlmIChwcmV2aW91c01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSAtMTtcbiAgICAgICAgICBmb2N1c0l0ZW0obGlzdFJlZiwgaW5kZXhSZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlhbCBzeW5jLlxuICAgICAgICBpZiAoKCFwcmV2aW91c09wZW5SZWYuY3VycmVudCB8fCAhcHJldmlvdXNNb3VudGVkUmVmLmN1cnJlbnQpICYmIGZvY3VzSXRlbU9uT3BlblJlZi5jdXJyZW50ICYmIChrZXlSZWYuY3VycmVudCAhPSBudWxsIHx8IGZvY3VzSXRlbU9uT3BlblJlZi5jdXJyZW50ID09PSB0cnVlICYmIGtleVJlZi5jdXJyZW50ID09IG51bGwpKSB7XG4gICAgICAgICAgbGV0IHJ1bnMgPSAwO1xuICAgICAgICAgIGNvbnN0IHdhaXRGb3JMaXN0UG9wdWxhdGVkID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGxpc3RSZWYuY3VycmVudFswXSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgIC8vIEF2b2lkIGxldHRpbmcgdGhlIGJyb3dzZXIgcGFpbnQgaWYgcG9zc2libGUgb24gdGhlIGZpcnN0IHRyeSxcbiAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHVzZSByQUYuIERvbid0IHRyeSBtb3JlIHRoYW4gdHdpY2UsIHNpbmNlIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAvLyBpcyB3cm9uZyBvdGhlcndpc2UuXG4gICAgICAgICAgICAgIGlmIChydW5zIDwgMikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjaGVkdWxlciA9IHJ1bnMgPyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiBxdWV1ZU1pY3JvdGFzaztcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXIod2FpdEZvckxpc3RQb3B1bGF0ZWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJ1bnMrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBrZXlSZWYuY3VycmVudCA9PSBudWxsIHx8IGlzTWFpbk9yaWVudGF0aW9uVG9FbmRLZXkoa2V5UmVmLmN1cnJlbnQsIG9yaWVudGF0aW9uLCBydGwpIHx8IG5lc3RlZCA/IGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlc1JlZi5jdXJyZW50KSA6IGdldE1heEluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAga2V5UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICBvbk5hdmlnYXRlKGluZGV4UmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgd2FpdEZvckxpc3RQb3B1bGF0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghaXNJbmRleE91dE9mQm91bmRzKGxpc3RSZWYsIGFjdGl2ZUluZGV4KSkge1xuICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gYWN0aXZlSW5kZXg7XG4gICAgICAgIGZvY3VzSXRlbShsaXN0UmVmLCBpbmRleFJlZiwgZm9yY2VTY3JvbGxJbnRvVmlld1JlZi5jdXJyZW50KTtcbiAgICAgICAgZm9yY2VTY3JvbGxJbnRvVmlld1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3BlbiwgZWxlbWVudHMuZmxvYXRpbmcsIGFjdGl2ZUluZGV4LCBzZWxlY3RlZEluZGV4UmVmLCBuZXN0ZWQsIGxpc3RSZWYsIG9yaWVudGF0aW9uLCBydGwsIG9uTmF2aWdhdGUsIGZvY3VzSXRlbSwgZGlzYWJsZWRJbmRpY2VzUmVmXSk7XG5cbiAgLy8gRW5zdXJlIHRoZSBwYXJlbnQgZmxvYXRpbmcgZWxlbWVudCBoYXMgZm9jdXMgd2hlbiBhIG5lc3RlZCBjaGlsZCBjbG9zZXNcbiAgLy8gdG8gYWxsb3cgYXJyb3cga2V5IG5hdmlnYXRpb24gdG8gd29yayBhZnRlciB0aGUgcG9pbnRlciBsZWF2ZXMgdGhlIGNoaWxkLlxuICBpbmRleCgoKSA9PiB7XG4gICAgdmFyIF9ub2RlcyRmaW5kO1xuICAgIGlmICghZW5hYmxlZCB8fCBlbGVtZW50cy5mbG9hdGluZyB8fCAhdHJlZSB8fCB2aXJ0dWFsIHx8ICFwcmV2aW91c01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBub2RlcyA9IHRyZWUubm9kZXNSZWYuY3VycmVudDtcbiAgICBjb25zdCBwYXJlbnQgPSAoX25vZGVzJGZpbmQgPSBub2Rlcy5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gcGFyZW50SWQpKSA9PSBudWxsIHx8IChfbm9kZXMkZmluZCA9IF9ub2RlcyRmaW5kLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZXMkZmluZC5lbGVtZW50cy5mbG9hdGluZztcbiAgICBjb25zdCBhY3RpdmVFbCA9IGFjdGl2ZUVsZW1lbnQoZ2V0RG9jdW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgICBjb25zdCB0cmVlQ29udGFpbnNBY3RpdmVFbCA9IG5vZGVzLnNvbWUobm9kZSA9PiBub2RlLmNvbnRleHQgJiYgY29udGFpbnMobm9kZS5jb250ZXh0LmVsZW1lbnRzLmZsb2F0aW5nLCBhY3RpdmVFbCkpO1xuICAgIGlmIChwYXJlbnQgJiYgIXRyZWVDb250YWluc0FjdGl2ZUVsICYmIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQpIHtcbiAgICAgIHBhcmVudC5mb2N1cyh7XG4gICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2VuYWJsZWQsIGVsZW1lbnRzLmZsb2F0aW5nLCB0cmVlLCBwYXJlbnRJZCwgdmlydHVhbF0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKCF0cmVlKSByZXR1cm47XG4gICAgaWYgKCF2aXJ0dWFsKSByZXR1cm47XG4gICAgaWYgKHBhcmVudElkKSByZXR1cm47XG4gICAgZnVuY3Rpb24gaGFuZGxlVmlydHVhbEZvY3VzKGl0ZW0pIHtcbiAgICAgIHNldFZpcnR1YWxJZChpdGVtLmlkKTtcbiAgICAgIGlmICh2aXJ0dWFsSXRlbVJlZikge1xuICAgICAgICB2aXJ0dWFsSXRlbVJlZi5jdXJyZW50ID0gaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgdHJlZS5ldmVudHMub24oJ3ZpcnR1YWxmb2N1cycsIGhhbmRsZVZpcnR1YWxGb2N1cyk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRyZWUuZXZlbnRzLm9mZigndmlydHVhbGZvY3VzJywgaGFuZGxlVmlydHVhbEZvY3VzKTtcbiAgICB9O1xuICB9LCBbZW5hYmxlZCwgdHJlZSwgdmlydHVhbCwgcGFyZW50SWQsIHZpcnR1YWxJdGVtUmVmXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBwcmV2aW91c09uTmF2aWdhdGVSZWYuY3VycmVudCA9IG9uTmF2aWdhdGU7XG4gICAgcHJldmlvdXNNb3VudGVkUmVmLmN1cnJlbnQgPSAhIWVsZW1lbnRzLmZsb2F0aW5nO1xuICB9KTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghb3Blbikge1xuICAgICAga2V5UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW29wZW5dKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIHByZXZpb3VzT3BlblJlZi5jdXJyZW50ID0gb3BlbjtcbiAgfSwgW29wZW5dKTtcbiAgY29uc3QgaGFzQWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleCAhPSBudWxsO1xuICBjb25zdCBpdGVtID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgZnVuY3Rpb24gc3luY0N1cnJlbnRUYXJnZXQoY3VycmVudFRhcmdldCkge1xuICAgICAgaWYgKCFvcGVuKSByZXR1cm47XG4gICAgICBjb25zdCBpbmRleCA9IGxpc3RSZWYuY3VycmVudC5pbmRleE9mKGN1cnJlbnRUYXJnZXQpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBvbk5hdmlnYXRlKGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICBvbkZvY3VzKF9yZWYpIHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBjdXJyZW50VGFyZ2V0XG4gICAgICAgIH0gPSBfcmVmO1xuICAgICAgICBzeW5jQ3VycmVudFRhcmdldChjdXJyZW50VGFyZ2V0KTtcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiBfcmVmMiA9PiB7XG4gICAgICAgIGxldCB7XG4gICAgICAgICAgY3VycmVudFRhcmdldFxuICAgICAgICB9ID0gX3JlZjI7XG4gICAgICAgIHJldHVybiBjdXJyZW50VGFyZ2V0LmZvY3VzKHtcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIC8vIFNhZmFyaVxuICAgICAgLi4uKGZvY3VzSXRlbU9uSG92ZXIgJiYge1xuICAgICAgICBvbk1vdXNlTW92ZShfcmVmMykge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0XG4gICAgICAgICAgfSA9IF9yZWYzO1xuICAgICAgICAgIHN5bmNDdXJyZW50VGFyZ2V0KGN1cnJlbnRUYXJnZXQpO1xuICAgICAgICB9LFxuICAgICAgICBvblBvaW50ZXJMZWF2ZShfcmVmNCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBwb2ludGVyVHlwZVxuICAgICAgICAgIH0gPSBfcmVmNDtcbiAgICAgICAgICBpZiAoIWlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgfHwgcG9pbnRlclR5cGUgPT09ICd0b3VjaCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IC0xO1xuICAgICAgICAgIGZvY3VzSXRlbShsaXN0UmVmLCBpbmRleFJlZik7XG4gICAgICAgICAgb25OYXZpZ2F0ZShudWxsKTtcbiAgICAgICAgICBpZiAoIXZpcnR1YWwpIHtcbiAgICAgICAgICAgIGVucXVldWVGb2N1cyhmbG9hdGluZ1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9O1xuICAgIHJldHVybiBwcm9wcztcbiAgfSwgW29wZW4sIGZsb2F0aW5nUmVmLCBmb2N1c0l0ZW0sIGZvY3VzSXRlbU9uSG92ZXIsIGxpc3RSZWYsIG9uTmF2aWdhdGUsIHZpcnR1YWxdKTtcbiAgY29uc3QgY29tbW9uT25LZXlEb3duID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICBmb3JjZVN5bmNGb2N1cy5jdXJyZW50ID0gdHJ1ZTtcblxuICAgIC8vIElmIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIGFuaW1hdGluZyBvdXQsIGlnbm9yZSBuYXZpZ2F0aW9uLiBPdGhlcndpc2UsXG4gICAgLy8gdGhlIGBhY3RpdmVJbmRleGAgZ2V0cyBzZXQgdG8gMCBkZXNwaXRlIG5vdCBiZWluZyBvcGVuIHNvIHRoZSBuZXh0IHRpbWVcbiAgICAvLyB0aGUgdXNlciBBcnJvd0Rvd25zLCB0aGUgZmlyc3QgaXRlbSB3b24ndCBiZSBmb2N1c2VkLlxuICAgIGlmICghbGF0ZXN0T3BlblJlZi5jdXJyZW50ICYmIGV2ZW50LmN1cnJlbnRUYXJnZXQgPT09IGZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG5lc3RlZCAmJiBpc0Nyb3NzT3JpZW50YXRpb25DbG9zZUtleShldmVudC5rZXksIG9yaWVudGF0aW9uLCBydGwpKSB7XG4gICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudC5uYXRpdmVFdmVudCwgJ2xpc3QtbmF2aWdhdGlvbicpO1xuICAgICAgaWYgKGlzSFRNTEVsZW1lbnQoZWxlbWVudHMuZG9tUmVmZXJlbmNlKSAmJiAhdmlydHVhbCkge1xuICAgICAgICBlbGVtZW50cy5kb21SZWZlcmVuY2UuZm9jdXMoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gaW5kZXhSZWYuY3VycmVudDtcbiAgICBjb25zdCBtaW5JbmRleCA9IGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlcyk7XG4gICAgY29uc3QgbWF4SW5kZXggPSBnZXRNYXhJbmRleChsaXN0UmVmLCBkaXNhYmxlZEluZGljZXMpO1xuICAgIGlmIChldmVudC5rZXkgPT09ICdIb21lJykge1xuICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBtaW5JbmRleDtcbiAgICAgIG9uTmF2aWdhdGUoaW5kZXhSZWYuY3VycmVudCk7XG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbmQnKSB7XG4gICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgaW5kZXhSZWYuY3VycmVudCA9IG1heEluZGV4O1xuICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBHcmlkIG5hdmlnYXRpb24uXG4gICAgaWYgKGNvbHMgPiAxKSB7XG4gICAgICBjb25zdCBzaXplcyA9IGl0ZW1TaXplcyB8fCBBcnJheS5mcm9tKHtcbiAgICAgICAgbGVuZ3RoOiBsaXN0UmVmLmN1cnJlbnQubGVuZ3RoXG4gICAgICB9LCAoKSA9PiAoe1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KSk7XG4gICAgICAvLyBUbyBjYWxjdWxhdGUgbW92ZW1lbnRzIG9uIHRoZSBncmlkLCB3ZSB1c2UgaHlwb3RoZXRpY2FsIGNlbGwgaW5kaWNlc1xuICAgICAgLy8gYXMgaWYgZXZlcnkgaXRlbSB3YXMgMXgxLCB0aGVuIGNvbnZlcnQgYmFjayB0byByZWFsIGluZGljZXMuXG4gICAgICBjb25zdCBjZWxsTWFwID0gYnVpbGRDZWxsTWFwKHNpemVzLCBjb2xzLCBkZW5zZSk7XG4gICAgICBjb25zdCBtaW5HcmlkSW5kZXggPSBjZWxsTWFwLmZpbmRJbmRleChpbmRleCA9PiBpbmRleCAhPSBudWxsICYmICFpc0Rpc2FibGVkKGxpc3RSZWYuY3VycmVudCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykpO1xuICAgICAgLy8gbGFzdCBlbmFibGVkIGluZGV4XG4gICAgICBjb25zdCBtYXhHcmlkSW5kZXggPSBjZWxsTWFwLnJlZHVjZSgoZm91bmRJbmRleCwgaW5kZXgsIGNlbGxJbmRleCkgPT4gaW5kZXggIT0gbnVsbCAmJiAhaXNEaXNhYmxlZChsaXN0UmVmLmN1cnJlbnQsIGluZGV4LCBkaXNhYmxlZEluZGljZXMpID8gY2VsbEluZGV4IDogZm91bmRJbmRleCwgLTEpO1xuICAgICAgaW5kZXhSZWYuY3VycmVudCA9IGNlbGxNYXBbZ2V0R3JpZE5hdmlnYXRlZEluZGV4KHtcbiAgICAgICAgY3VycmVudDogY2VsbE1hcC5tYXAoaXRlbUluZGV4ID0+IGl0ZW1JbmRleCAhPSBudWxsID8gbGlzdFJlZi5jdXJyZW50W2l0ZW1JbmRleF0gOiBudWxsKVxuICAgICAgfSwge1xuICAgICAgICBldmVudCxcbiAgICAgICAgb3JpZW50YXRpb24sXG4gICAgICAgIGxvb3AsXG4gICAgICAgIGNvbHMsXG4gICAgICAgIC8vIHRyZWF0IHVuZGVmaW5lZCAoZW1wdHkgZ3JpZCBzcGFjZXMpIGFzIGRpc2FibGVkIGluZGljZXMgc28gd2VcbiAgICAgICAgLy8gZG9uJ3QgZW5kIHVwIGluIHRoZW1cbiAgICAgICAgZGlzYWJsZWRJbmRpY2VzOiBnZXRDZWxsSW5kaWNlcyhbLi4uKGRpc2FibGVkSW5kaWNlcyB8fCBsaXN0UmVmLmN1cnJlbnQubWFwKChfLCBpbmRleCkgPT4gaXNEaXNhYmxlZChsaXN0UmVmLmN1cnJlbnQsIGluZGV4KSA/IGluZGV4IDogdW5kZWZpbmVkKSksIHVuZGVmaW5lZF0sIGNlbGxNYXApLFxuICAgICAgICBtaW5JbmRleDogbWluR3JpZEluZGV4LFxuICAgICAgICBtYXhJbmRleDogbWF4R3JpZEluZGV4LFxuICAgICAgICBwcmV2SW5kZXg6IGdldENlbGxJbmRleE9mQ29ybmVyKGluZGV4UmVmLmN1cnJlbnQgPiBtYXhJbmRleCA/IG1pbkluZGV4IDogaW5kZXhSZWYuY3VycmVudCwgc2l6ZXMsIGNlbGxNYXAsIGNvbHMsXG4gICAgICAgIC8vIHVzZSBhIGNvcm5lciBtYXRjaGluZyB0aGUgZWRnZSBjbG9zZXN0IHRvIHRoZSBkaXJlY3Rpb25cbiAgICAgICAgLy8gd2UncmUgbW92aW5nIGluIHNvIHdlIGRvbid0IGVuZCB1cCBpbiB0aGUgc2FtZSBpdGVtLiBQcmVmZXJcbiAgICAgICAgLy8gdG9wL2xlZnQgb3ZlciBib3R0b20vcmlnaHQuXG4gICAgICAgIGV2ZW50LmtleSA9PT0gQVJST1dfRE9XTiA/ICdibCcgOiBldmVudC5rZXkgPT09IEFSUk9XX1JJR0hUID8gJ3RyJyA6ICd0bCcpLFxuICAgICAgICBzdG9wRXZlbnQ6IHRydWVcbiAgICAgIH0pXTsgLy8gbmF2aWdhdGVkIGNlbGwgd2lsbCBuZXZlciBiZSBudWxsaXNoXG5cbiAgICAgIG9uTmF2aWdhdGUoaW5kZXhSZWYuY3VycmVudCk7XG4gICAgICBpZiAob3JpZW50YXRpb24gPT09ICdib3RoJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc01haW5PcmllbnRhdGlvbktleShldmVudC5rZXksIG9yaWVudGF0aW9uKSkge1xuICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcblxuICAgICAgLy8gUmVzZXQgdGhlIGluZGV4IGlmIG5vIGl0ZW0gaXMgZm9jdXNlZC5cbiAgICAgIGlmIChvcGVuICYmICF2aXJ0dWFsICYmIGFjdGl2ZUVsZW1lbnQoZXZlbnQuY3VycmVudFRhcmdldC5vd25lckRvY3VtZW50KSA9PT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gaXNNYWluT3JpZW50YXRpb25Ub0VuZEtleShldmVudC5rZXksIG9yaWVudGF0aW9uLCBydGwpID8gbWluSW5kZXggOiBtYXhJbmRleDtcbiAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzTWFpbk9yaWVudGF0aW9uVG9FbmRLZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbiwgcnRsKSkge1xuICAgICAgICBpZiAobG9vcCkge1xuICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBjdXJyZW50SW5kZXggPj0gbWF4SW5kZXggPyBhbGxvd0VzY2FwZSAmJiBjdXJyZW50SW5kZXggIT09IGxpc3RSZWYuY3VycmVudC5sZW5ndGggPyAtMSA6IG1pbkluZGV4IDogZmluZE5vbkRpc2FibGVkSW5kZXgobGlzdFJlZiwge1xuICAgICAgICAgICAgc3RhcnRpbmdJbmRleDogY3VycmVudEluZGV4LFxuICAgICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IE1hdGgubWluKG1heEluZGV4LCBmaW5kTm9uRGlzYWJsZWRJbmRleChsaXN0UmVmLCB7XG4gICAgICAgICAgICBzdGFydGluZ0luZGV4OiBjdXJyZW50SW5kZXgsXG4gICAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChsb29wKSB7XG4gICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IGN1cnJlbnRJbmRleCA8PSBtaW5JbmRleCA/IGFsbG93RXNjYXBlICYmIGN1cnJlbnRJbmRleCAhPT0gLTEgPyBsaXN0UmVmLmN1cnJlbnQubGVuZ3RoIDogbWF4SW5kZXggOiBmaW5kTm9uRGlzYWJsZWRJbmRleChsaXN0UmVmLCB7XG4gICAgICAgICAgICBzdGFydGluZ0luZGV4OiBjdXJyZW50SW5kZXgsXG4gICAgICAgICAgICBkZWNyZW1lbnQ6IHRydWUsXG4gICAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gTWF0aC5tYXgobWluSW5kZXgsIGZpbmROb25EaXNhYmxlZEluZGV4KGxpc3RSZWYsIHtcbiAgICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IGN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzSW5kZXhPdXRPZkJvdW5kcyhsaXN0UmVmLCBpbmRleFJlZi5jdXJyZW50KSkge1xuICAgICAgICBvbk5hdmlnYXRlKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBhcmlhQWN0aXZlRGVzY2VuZGFudFByb3AgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdmlydHVhbCAmJiBvcGVuICYmIGhhc0FjdGl2ZUluZGV4ICYmIHtcbiAgICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnOiB2aXJ0dWFsSWQgfHwgYWN0aXZlSWRcbiAgICB9O1xuICB9LCBbdmlydHVhbCwgb3BlbiwgaGFzQWN0aXZlSW5kZXgsIHZpcnR1YWxJZCwgYWN0aXZlSWRdKTtcbiAgY29uc3QgZmxvYXRpbmcgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2FyaWEtb3JpZW50YXRpb24nOiBvcmllbnRhdGlvbiA9PT0gJ2JvdGgnID8gdW5kZWZpbmVkIDogb3JpZW50YXRpb24sXG4gICAgICAuLi4oIWlzVHlwZWFibGVDb21ib2JveChlbGVtZW50cy5kb21SZWZlcmVuY2UpICYmIGFyaWFBY3RpdmVEZXNjZW5kYW50UHJvcCksXG4gICAgICBvbktleURvd246IGNvbW1vbk9uS2V5RG93bixcbiAgICAgIG9uUG9pbnRlck1vdmUoKSB7XG4gICAgICAgIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFthcmlhQWN0aXZlRGVzY2VuZGFudFByb3AsIGNvbW1vbk9uS2V5RG93biwgZWxlbWVudHMuZG9tUmVmZXJlbmNlLCBvcmllbnRhdGlvbl0pO1xuICBjb25zdCByZWZlcmVuY2UgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBmdW5jdGlvbiBjaGVja1ZpcnR1YWxNb3VzZShldmVudCkge1xuICAgICAgaWYgKGZvY3VzSXRlbU9uT3BlbiA9PT0gJ2F1dG8nICYmIGlzVmlydHVhbENsaWNrKGV2ZW50Lm5hdGl2ZUV2ZW50KSkge1xuICAgICAgICBmb2N1c0l0ZW1Pbk9wZW5SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrVmlydHVhbFBvaW50ZXIoZXZlbnQpIHtcbiAgICAgIC8vIGBwb2ludGVyZG93bmAgZmlyZXMgZmlyc3QsIHJlc2V0IHRoZSBzdGF0ZSB0aGVuIHBlcmZvcm0gdGhlIGNoZWNrcy5cbiAgICAgIGZvY3VzSXRlbU9uT3BlblJlZi5jdXJyZW50ID0gZm9jdXNJdGVtT25PcGVuO1xuICAgICAgaWYgKGZvY3VzSXRlbU9uT3BlbiA9PT0gJ2F1dG8nICYmIGlzVmlydHVhbFBvaW50ZXJFdmVudChldmVudC5uYXRpdmVFdmVudCkpIHtcbiAgICAgICAgZm9jdXNJdGVtT25PcGVuUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYXJpYUFjdGl2ZURlc2NlbmRhbnRQcm9wLFxuICAgICAgb25LZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaXNBcnJvd0tleSA9IGV2ZW50LmtleS5pbmRleE9mKCdBcnJvdycpID09PSAwO1xuICAgICAgICBjb25zdCBpc0Nyb3NzT3BlbktleSA9IGlzQ3Jvc3NPcmllbnRhdGlvbk9wZW5LZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbiwgcnRsKTtcbiAgICAgICAgY29uc3QgaXNDcm9zc0Nsb3NlS2V5ID0gaXNDcm9zc09yaWVudGF0aW9uQ2xvc2VLZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbiwgcnRsKTtcbiAgICAgICAgY29uc3QgaXNNYWluS2V5ID0gaXNNYWluT3JpZW50YXRpb25LZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbik7XG4gICAgICAgIGNvbnN0IGlzTmF2aWdhdGlvbktleSA9IChuZXN0ZWQgPyBpc0Nyb3NzT3BlbktleSA6IGlzTWFpbktleSkgfHwgZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleS50cmltKCkgPT09ICcnO1xuICAgICAgICBpZiAodmlydHVhbCAmJiBvcGVuKSB7XG4gICAgICAgICAgY29uc3Qgcm9vdE5vZGUgPSB0cmVlID09IG51bGwgPyB2b2lkIDAgOiB0cmVlLm5vZGVzUmVmLmN1cnJlbnQuZmluZChub2RlID0+IG5vZGUucGFyZW50SWQgPT0gbnVsbCk7XG4gICAgICAgICAgY29uc3QgZGVlcGVzdE5vZGUgPSB0cmVlICYmIHJvb3ROb2RlID8gZ2V0RGVlcGVzdE5vZGUodHJlZS5ub2Rlc1JlZi5jdXJyZW50LCByb290Tm9kZS5pZCkgOiBudWxsO1xuICAgICAgICAgIGlmIChpc0Fycm93S2V5ICYmIGRlZXBlc3ROb2RlICYmIHZpcnR1YWxJdGVtUmVmKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudE9iamVjdCA9IG5ldyBLZXlib2FyZEV2ZW50KCdrZXlkb3duJywge1xuICAgICAgICAgICAgICBrZXk6IGV2ZW50LmtleSxcbiAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaXNDcm9zc09wZW5LZXkgfHwgaXNDcm9zc0Nsb3NlS2V5KSB7XG4gICAgICAgICAgICAgIHZhciBfZGVlcGVzdE5vZGUkY29udGV4dCwgX2RlZXBlc3ROb2RlJGNvbnRleHQyO1xuICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRUYXJnZXQgPSAoKF9kZWVwZXN0Tm9kZSRjb250ZXh0ID0gZGVlcGVzdE5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kZWVwZXN0Tm9kZSRjb250ZXh0LmVsZW1lbnRzLmRvbVJlZmVyZW5jZSkgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICAgIGNvbnN0IGRpc3BhdGNoSXRlbSA9IGlzQ3Jvc3NDbG9zZUtleSAmJiAhaXNDdXJyZW50VGFyZ2V0ID8gKF9kZWVwZXN0Tm9kZSRjb250ZXh0MiA9IGRlZXBlc3ROb2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfZGVlcGVzdE5vZGUkY29udGV4dDIuZWxlbWVudHMuZG9tUmVmZXJlbmNlIDogaXNDcm9zc09wZW5LZXkgPyBsaXN0UmVmLmN1cnJlbnQuZmluZChpdGVtID0+IChpdGVtID09IG51bGwgPyB2b2lkIDAgOiBpdGVtLmlkKSA9PT0gYWN0aXZlSWQpIDogbnVsbDtcbiAgICAgICAgICAgICAgaWYgKGRpc3BhdGNoSXRlbSkge1xuICAgICAgICAgICAgICAgIHN0b3BFdmVudChldmVudCk7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hJdGVtLmRpc3BhdGNoRXZlbnQoZXZlbnRPYmplY3QpO1xuICAgICAgICAgICAgICAgIHNldFZpcnR1YWxJZCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNNYWluS2V5ICYmIGRlZXBlc3ROb2RlLmNvbnRleHQpIHtcbiAgICAgICAgICAgICAgaWYgKGRlZXBlc3ROb2RlLmNvbnRleHQub3BlbiAmJiBkZWVwZXN0Tm9kZS5wYXJlbnRJZCAmJiBldmVudC5jdXJyZW50VGFyZ2V0ICE9PSBkZWVwZXN0Tm9kZS5jb250ZXh0LmVsZW1lbnRzLmRvbVJlZmVyZW5jZSkge1xuICAgICAgICAgICAgICAgIHZhciBfZGVlcGVzdE5vZGUkY29udGV4dCQ7XG4gICAgICAgICAgICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgICAgICAoX2RlZXBlc3ROb2RlJGNvbnRleHQkID0gZGVlcGVzdE5vZGUuY29udGV4dC5lbGVtZW50cy5kb21SZWZlcmVuY2UpID09IG51bGwgfHwgX2RlZXBlc3ROb2RlJGNvbnRleHQkLmRpc3BhdGNoRXZlbnQoZXZlbnRPYmplY3QpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29tbW9uT25LZXlEb3duKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGEgZmxvYXRpbmcgZWxlbWVudCBzaG91bGQgbm90IG9wZW4gb24gYXJyb3cga2V5IGRvd24sIGF2b2lkXG4gICAgICAgIC8vIHNldHRpbmcgYGFjdGl2ZUluZGV4YCB3aGlsZSBpdCdzIGNsb3NlZC5cbiAgICAgICAgaWYgKCFvcGVuICYmICFvcGVuT25BcnJvd0tleURvd24gJiYgaXNBcnJvd0tleSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOYXZpZ2F0aW9uS2V5KSB7XG4gICAgICAgICAga2V5UmVmLmN1cnJlbnQgPSBuZXN0ZWQgJiYgaXNNYWluS2V5ID8gbnVsbCA6IGV2ZW50LmtleTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmVzdGVkKSB7XG4gICAgICAgICAgaWYgKGlzQ3Jvc3NPcGVuS2V5KSB7XG4gICAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2xpc3QtbmF2aWdhdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTWFpbktleSkge1xuICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICAgIGlmICghb3BlbiAmJiBvcGVuT25BcnJvd0tleURvd24pIHtcbiAgICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2xpc3QtbmF2aWdhdGlvbicpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21tb25PbktleURvd24oZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvbkZvY3VzKCkge1xuICAgICAgICBpZiAob3BlbiAmJiAhdmlydHVhbCkge1xuICAgICAgICAgIG9uTmF2aWdhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvblBvaW50ZXJEb3duOiBjaGVja1ZpcnR1YWxQb2ludGVyLFxuICAgICAgb25Nb3VzZURvd246IGNoZWNrVmlydHVhbE1vdXNlLFxuICAgICAgb25DbGljazogY2hlY2tWaXJ0dWFsTW91c2VcbiAgICB9O1xuICB9LCBbYWN0aXZlSWQsIGFyaWFBY3RpdmVEZXNjZW5kYW50UHJvcCwgY29tbW9uT25LZXlEb3duLCBkaXNhYmxlZEluZGljZXNSZWYsIGZvY3VzSXRlbU9uT3BlbiwgbGlzdFJlZiwgbmVzdGVkLCBvbk5hdmlnYXRlLCBvbk9wZW5DaGFuZ2UsIG9wZW4sIG9wZW5PbkFycm93S2V5RG93biwgb3JpZW50YXRpb24sIHJ0bCwgc2VsZWN0ZWRJbmRleCwgdHJlZSwgdmlydHVhbCwgdmlydHVhbEl0ZW1SZWZdKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gZW5hYmxlZCA/IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgaXRlbVxuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2UsIGZsb2F0aW5nLCBpdGVtXSk7XG59XG5cbmNvbnN0IGNvbXBvbmVudFJvbGVUb0FyaWFSb2xlTWFwID0gLyojX19QVVJFX18qL25ldyBNYXAoW1snc2VsZWN0JywgJ2xpc3Rib3gnXSwgWydjb21ib2JveCcsICdsaXN0Ym94J10sIFsnbGFiZWwnLCBmYWxzZV1dKTtcblxuLyoqXG4gKiBBZGRzIGJhc2Ugc2NyZWVuIHJlYWRlciBwcm9wcyB0byB0aGUgcmVmZXJlbmNlIGFuZCBmbG9hdGluZyBlbGVtZW50cyBmb3IgYVxuICogZ2l2ZW4gZmxvYXRpbmcgZWxlbWVudCBgcm9sZWAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlUm9sZVxuICovXG5mdW5jdGlvbiB1c2VSb2xlKGNvbnRleHQsIHByb3BzKSB7XG4gIHZhciBfY29tcG9uZW50Um9sZVRvQXJpYVI7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBmbG9hdGluZ0lkXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgcm9sZSA9ICdkaWFsb2cnXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgYXJpYVJvbGUgPSAoX2NvbXBvbmVudFJvbGVUb0FyaWFSID0gY29tcG9uZW50Um9sZVRvQXJpYVJvbGVNYXAuZ2V0KHJvbGUpKSAhPSBudWxsID8gX2NvbXBvbmVudFJvbGVUb0FyaWFSIDogcm9sZTtcbiAgY29uc3QgcmVmZXJlbmNlSWQgPSB1c2VJZCgpO1xuICBjb25zdCBwYXJlbnRJZCA9IHVzZUZsb2F0aW5nUGFyZW50Tm9kZUlkKCk7XG4gIGNvbnN0IGlzTmVzdGVkID0gcGFyZW50SWQgIT0gbnVsbDtcbiAgY29uc3QgcmVmZXJlbmNlID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGFyaWFSb2xlID09PSAndG9vbHRpcCcgfHwgcm9sZSA9PT0gJ2xhYmVsJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW1wiYXJpYS1cIiArIChyb2xlID09PSAnbGFiZWwnID8gJ2xhYmVsbGVkYnknIDogJ2Rlc2NyaWJlZGJ5JyldOiBvcGVuID8gZmxvYXRpbmdJZCA6IHVuZGVmaW5lZFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICdhcmlhLWV4cGFuZGVkJzogb3BlbiA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICAnYXJpYS1oYXNwb3B1cCc6IGFyaWFSb2xlID09PSAnYWxlcnRkaWFsb2cnID8gJ2RpYWxvZycgOiBhcmlhUm9sZSxcbiAgICAgICdhcmlhLWNvbnRyb2xzJzogb3BlbiA/IGZsb2F0aW5nSWQgOiB1bmRlZmluZWQsXG4gICAgICAuLi4oYXJpYVJvbGUgPT09ICdsaXN0Ym94JyAmJiB7XG4gICAgICAgIHJvbGU6ICdjb21ib2JveCdcbiAgICAgIH0pLFxuICAgICAgLi4uKGFyaWFSb2xlID09PSAnbWVudScgJiYge1xuICAgICAgICBpZDogcmVmZXJlbmNlSWRcbiAgICAgIH0pLFxuICAgICAgLi4uKGFyaWFSb2xlID09PSAnbWVudScgJiYgaXNOZXN0ZWQgJiYge1xuICAgICAgICByb2xlOiAnbWVudWl0ZW0nXG4gICAgICB9KSxcbiAgICAgIC4uLihyb2xlID09PSAnc2VsZWN0JyAmJiB7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJ1xuICAgICAgfSksXG4gICAgICAuLi4ocm9sZSA9PT0gJ2NvbWJvYm94JyAmJiB7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdsaXN0J1xuICAgICAgfSlcbiAgICB9O1xuICB9LCBbYXJpYVJvbGUsIGZsb2F0aW5nSWQsIGlzTmVzdGVkLCBvcGVuLCByZWZlcmVuY2VJZCwgcm9sZV0pO1xuICBjb25zdCBmbG9hdGluZyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGZsb2F0aW5nUHJvcHMgPSB7XG4gICAgICBpZDogZmxvYXRpbmdJZCxcbiAgICAgIC4uLihhcmlhUm9sZSAmJiB7XG4gICAgICAgIHJvbGU6IGFyaWFSb2xlXG4gICAgICB9KVxuICAgIH07XG4gICAgaWYgKGFyaWFSb2xlID09PSAndG9vbHRpcCcgfHwgcm9sZSA9PT0gJ2xhYmVsJykge1xuICAgICAgcmV0dXJuIGZsb2F0aW5nUHJvcHM7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi5mbG9hdGluZ1Byb3BzLFxuICAgICAgLi4uKGFyaWFSb2xlID09PSAnbWVudScgJiYge1xuICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogcmVmZXJlbmNlSWRcbiAgICAgIH0pXG4gICAgfTtcbiAgfSwgW2FyaWFSb2xlLCBmbG9hdGluZ0lkLCByZWZlcmVuY2VJZCwgcm9sZV0pO1xuICBjb25zdCBpdGVtID0gUmVhY3QudXNlQ2FsbGJhY2soX3JlZiA9PiB7XG4gICAgbGV0IHtcbiAgICAgIGFjdGl2ZSxcbiAgICAgIHNlbGVjdGVkXG4gICAgfSA9IF9yZWY7XG4gICAgY29uc3QgY29tbW9uUHJvcHMgPSB7XG4gICAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAgIC4uLihhY3RpdmUgJiYge1xuICAgICAgICBpZDogZmxvYXRpbmdJZCArIFwiLW9wdGlvblwiXG4gICAgICB9KVxuICAgIH07XG5cbiAgICAvLyBGb3IgYG1lbnVgLCB3ZSBhcmUgdW5hYmxlIHRvIHRlbGwgaWYgdGhlIGl0ZW0gaXMgYSBgbWVudWl0ZW1yYWRpb2BcbiAgICAvLyBvciBgbWVudWl0ZW1jaGVja2JveGAuIEZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSByZWFzb25zLCBhbHNvXG4gICAgLy8gYXZvaWQgZGVmYXVsdGluZyB0byBgbWVudWl0ZW1gIGFzIGl0IG1heSBvdmVyd3JpdGUgY3VzdG9tIHJvbGUgcHJvcHMuXG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogYWN0aXZlICYmIHNlbGVjdGVkXG4gICAgICAgIH07XG4gICAgICBjYXNlICdjb21ib2JveCc6XG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29tbW9uUHJvcHMsXG4gICAgICAgICAgICAuLi4oYWN0aXZlICYmIHtcbiAgICAgICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiB0cnVlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9LCBbZmxvYXRpbmdJZCwgcm9sZV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZyxcbiAgICBpdGVtXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZSwgZmxvYXRpbmcsIGl0ZW1dKTtcbn1cblxuLy8gQ29udmVydHMgYSBKUyBzdHlsZSBrZXkgbGlrZSBgYmFja2dyb3VuZENvbG9yYCB0byBhIENTUyB0cmFuc2l0aW9uLXByb3BlcnR5XG4vLyBsaWtlIGBiYWNrZ3JvdW5kLWNvbG9yYC5cbmNvbnN0IGNhbWVsQ2FzZVRvS2ViYWJDYXNlID0gc3RyID0+IHN0ci5yZXBsYWNlKC9bQS1aXSsoPyFbYS16XSl8W0EtWl0vZywgKCQsIG9mcykgPT4gKG9mcyA/ICctJyA6ICcnKSArICQudG9Mb3dlckNhc2UoKSk7XG5mdW5jdGlvbiBleGVjV2l0aEFyZ3NPclJldHVybih2YWx1ZU9yRm4sIGFyZ3MpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZU9yRm4gPT09ICdmdW5jdGlvbicgPyB2YWx1ZU9yRm4oYXJncykgOiB2YWx1ZU9yRm47XG59XG5mdW5jdGlvbiB1c2VEZWxheVVubW91bnQob3BlbiwgZHVyYXRpb25Ncykge1xuICBjb25zdCBbaXNNb3VudGVkLCBzZXRJc01vdW50ZWRdID0gUmVhY3QudXNlU3RhdGUob3Blbik7XG4gIGlmIChvcGVuICYmICFpc01vdW50ZWQpIHtcbiAgICBzZXRJc01vdW50ZWQodHJ1ZSk7XG4gIH1cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW9wZW4gJiYgaXNNb3VudGVkKSB7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBzZXRJc01vdW50ZWQoZmFsc2UpLCBkdXJhdGlvbk1zKTtcbiAgICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgfVxuICB9LCBbb3BlbiwgaXNNb3VudGVkLCBkdXJhdGlvbk1zXSk7XG4gIHJldHVybiBpc01vdW50ZWQ7XG59XG4vKipcbiAqIFByb3ZpZGVzIGEgc3RhdHVzIHN0cmluZyB0byBhcHBseSBDU1MgdHJhbnNpdGlvbnMgdG8gYSBmbG9hdGluZyBlbGVtZW50LFxuICogY29ycmVjdGx5IGhhbmRsaW5nIHBsYWNlbWVudC1hd2FyZSB0cmFuc2l0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VUcmFuc2l0aW9uI3VzZXRyYW5zaXRpb25zdGF0dXNcbiAqL1xuZnVuY3Rpb24gdXNlVHJhbnNpdGlvblN0YXR1cyhjb250ZXh0LCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nXG4gICAgfVxuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGR1cmF0aW9uID0gMjUwXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdW1iZXJEdXJhdGlvbiA9IHR5cGVvZiBkdXJhdGlvbiA9PT0gJ251bWJlcic7XG4gIGNvbnN0IGNsb3NlRHVyYXRpb24gPSAoaXNOdW1iZXJEdXJhdGlvbiA/IGR1cmF0aW9uIDogZHVyYXRpb24uY2xvc2UpIHx8IDA7XG4gIGNvbnN0IFtzdGF0dXMsIHNldFN0YXR1c10gPSBSZWFjdC51c2VTdGF0ZSgndW5tb3VudGVkJyk7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZURlbGF5VW5tb3VudChvcGVuLCBjbG9zZUR1cmF0aW9uKTtcbiAgaWYgKCFpc01vdW50ZWQgJiYgc3RhdHVzID09PSAnY2xvc2UnKSB7XG4gICAgc2V0U3RhdHVzKCd1bm1vdW50ZWQnKTtcbiAgfVxuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFmbG9hdGluZykgcmV0dXJuO1xuICAgIGlmIChvcGVuKSB7XG4gICAgICBzZXRTdGF0dXMoJ2luaXRpYWwnKTtcbiAgICAgIGNvbnN0IGZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgc2V0U3RhdHVzKCdvcGVuJyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHNldFN0YXR1cygnY2xvc2UnKTtcbiAgfSwgW29wZW4sIGZsb2F0aW5nXSk7XG4gIHJldHVybiB7XG4gICAgaXNNb3VudGVkLFxuICAgIHN0YXR1c1xuICB9O1xufVxuLyoqXG4gKiBQcm92aWRlcyBzdHlsZXMgdG8gYXBwbHkgQ1NTIHRyYW5zaXRpb25zIHRvIGEgZmxvYXRpbmcgZWxlbWVudCwgY29ycmVjdGx5XG4gKiBoYW5kbGluZyBwbGFjZW1lbnQtYXdhcmUgdHJhbnNpdGlvbnMuIFdyYXBwZXIgYXJvdW5kIGB1c2VUcmFuc2l0aW9uU3RhdHVzYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VUcmFuc2l0aW9uI3VzZXRyYW5zaXRpb25zdHlsZXNcbiAqL1xuZnVuY3Rpb24gdXNlVHJhbnNpdGlvblN0eWxlcyhjb250ZXh0LCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGluaXRpYWw6IHVuc3RhYmxlX2luaXRpYWwgPSB7XG4gICAgICBvcGFjaXR5OiAwXG4gICAgfSxcbiAgICBvcGVuOiB1bnN0YWJsZV9vcGVuLFxuICAgIGNsb3NlOiB1bnN0YWJsZV9jbG9zZSxcbiAgICBjb21tb246IHVuc3RhYmxlX2NvbW1vbixcbiAgICBkdXJhdGlvbiA9IDI1MFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHBsYWNlbWVudCA9IGNvbnRleHQucGxhY2VtZW50O1xuICBjb25zdCBzaWRlID0gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG4gIGNvbnN0IGZuQXJncyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBzaWRlLFxuICAgIHBsYWNlbWVudFxuICB9KSwgW3NpZGUsIHBsYWNlbWVudF0pO1xuICBjb25zdCBpc051bWJlckR1cmF0aW9uID0gdHlwZW9mIGR1cmF0aW9uID09PSAnbnVtYmVyJztcbiAgY29uc3Qgb3BlbkR1cmF0aW9uID0gKGlzTnVtYmVyRHVyYXRpb24gPyBkdXJhdGlvbiA6IGR1cmF0aW9uLm9wZW4pIHx8IDA7XG4gIGNvbnN0IGNsb3NlRHVyYXRpb24gPSAoaXNOdW1iZXJEdXJhdGlvbiA/IGR1cmF0aW9uIDogZHVyYXRpb24uY2xvc2UpIHx8IDA7XG4gIGNvbnN0IFtzdHlsZXMsIHNldFN0eWxlc10gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PiAoe1xuICAgIC4uLmV4ZWNXaXRoQXJnc09yUmV0dXJuKHVuc3RhYmxlX2NvbW1vbiwgZm5BcmdzKSxcbiAgICAuLi5leGVjV2l0aEFyZ3NPclJldHVybih1bnN0YWJsZV9pbml0aWFsLCBmbkFyZ3MpXG4gIH0pKTtcbiAgY29uc3Qge1xuICAgIGlzTW91bnRlZCxcbiAgICBzdGF0dXNcbiAgfSA9IHVzZVRyYW5zaXRpb25TdGF0dXMoY29udGV4dCwge1xuICAgIGR1cmF0aW9uXG4gIH0pO1xuICBjb25zdCBpbml0aWFsUmVmID0gdXNlTGF0ZXN0UmVmKHVuc3RhYmxlX2luaXRpYWwpO1xuICBjb25zdCBvcGVuUmVmID0gdXNlTGF0ZXN0UmVmKHVuc3RhYmxlX29wZW4pO1xuICBjb25zdCBjbG9zZVJlZiA9IHVzZUxhdGVzdFJlZih1bnN0YWJsZV9jbG9zZSk7XG4gIGNvbnN0IGNvbW1vblJlZiA9IHVzZUxhdGVzdFJlZih1bnN0YWJsZV9jb21tb24pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IGV4ZWNXaXRoQXJnc09yUmV0dXJuKGluaXRpYWxSZWYuY3VycmVudCwgZm5BcmdzKTtcbiAgICBjb25zdCBjbG9zZVN0eWxlcyA9IGV4ZWNXaXRoQXJnc09yUmV0dXJuKGNsb3NlUmVmLmN1cnJlbnQsIGZuQXJncyk7XG4gICAgY29uc3QgY29tbW9uU3R5bGVzID0gZXhlY1dpdGhBcmdzT3JSZXR1cm4oY29tbW9uUmVmLmN1cnJlbnQsIGZuQXJncyk7XG4gICAgY29uc3Qgb3BlblN0eWxlcyA9IGV4ZWNXaXRoQXJnc09yUmV0dXJuKG9wZW5SZWYuY3VycmVudCwgZm5BcmdzKSB8fCBPYmplY3Qua2V5cyhpbml0aWFsU3R5bGVzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICBhY2Nba2V5XSA9ICcnO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ2luaXRpYWwnKSB7XG4gICAgICBzZXRTdHlsZXMoc3R5bGVzID0+ICh7XG4gICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogc3R5bGVzLnRyYW5zaXRpb25Qcm9wZXJ0eSxcbiAgICAgICAgLi4uY29tbW9uU3R5bGVzLFxuICAgICAgICAuLi5pbml0aWFsU3R5bGVzXG4gICAgICB9KSk7XG4gICAgfVxuICAgIGlmIChzdGF0dXMgPT09ICdvcGVuJykge1xuICAgICAgc2V0U3R5bGVzKHtcbiAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5OiBPYmplY3Qua2V5cyhvcGVuU3R5bGVzKS5tYXAoY2FtZWxDYXNlVG9LZWJhYkNhc2UpLmpvaW4oJywnKSxcbiAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiBvcGVuRHVyYXRpb24gKyBcIm1zXCIsXG4gICAgICAgIC4uLmNvbW1vblN0eWxlcyxcbiAgICAgICAgLi4ub3BlblN0eWxlc1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzdGF0dXMgPT09ICdjbG9zZScpIHtcbiAgICAgIGNvbnN0IHN0eWxlcyA9IGNsb3NlU3R5bGVzIHx8IGluaXRpYWxTdHlsZXM7XG4gICAgICBzZXRTdHlsZXMoe1xuICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHk6IE9iamVjdC5rZXlzKHN0eWxlcykubWFwKGNhbWVsQ2FzZVRvS2ViYWJDYXNlKS5qb2luKCcsJyksXG4gICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogY2xvc2VEdXJhdGlvbiArIFwibXNcIixcbiAgICAgICAgLi4uY29tbW9uU3R5bGVzLFxuICAgICAgICAuLi5zdHlsZXNcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2Nsb3NlRHVyYXRpb24sIGNsb3NlUmVmLCBpbml0aWFsUmVmLCBvcGVuUmVmLCBjb21tb25SZWYsIG9wZW5EdXJhdGlvbiwgc3RhdHVzLCBmbkFyZ3NdKTtcbiAgcmV0dXJuIHtcbiAgICBpc01vdW50ZWQsXG4gICAgc3R5bGVzXG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBtYXRjaGluZyBjYWxsYmFjayB0aGF0IGNhbiBiZSB1c2VkIHRvIGZvY3VzIGFuIGl0ZW0gYXMgdGhlIHVzZXJcbiAqIHR5cGVzLCBvZnRlbiB1c2VkIGluIHRhbmRlbSB3aXRoIGB1c2VMaXN0TmF2aWdhdGlvbigpYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VUeXBlYWhlYWRcbiAqL1xuZnVuY3Rpb24gdXNlVHlwZWFoZWFkKGNvbnRleHQsIHByb3BzKSB7XG4gIHZhciBfcmVmO1xuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBkYXRhUmVmXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgbGlzdFJlZixcbiAgICBhY3RpdmVJbmRleCxcbiAgICBvbk1hdGNoOiB1bnN0YWJsZV9vbk1hdGNoLFxuICAgIG9uVHlwaW5nQ2hhbmdlOiB1bnN0YWJsZV9vblR5cGluZ0NoYW5nZSxcbiAgICBlbmFibGVkID0gdHJ1ZSxcbiAgICBmaW5kTWF0Y2ggPSBudWxsLFxuICAgIHJlc2V0TXMgPSA3NTAsXG4gICAgaWdub3JlS2V5cyA9IFtdLFxuICAgIHNlbGVjdGVkSW5kZXggPSBudWxsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgdGltZW91dElkUmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIGNvbnN0IHN0cmluZ1JlZiA9IFJlYWN0LnVzZVJlZignJyk7XG4gIGNvbnN0IHByZXZJbmRleFJlZiA9IFJlYWN0LnVzZVJlZigoX3JlZiA9IHNlbGVjdGVkSW5kZXggIT0gbnVsbCA/IHNlbGVjdGVkSW5kZXggOiBhY3RpdmVJbmRleCkgIT0gbnVsbCA/IF9yZWYgOiAtMSk7XG4gIGNvbnN0IG1hdGNoSW5kZXhSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IG9uTWF0Y2ggPSB1c2VFZmZlY3RFdmVudCh1bnN0YWJsZV9vbk1hdGNoKTtcbiAgY29uc3Qgb25UeXBpbmdDaGFuZ2UgPSB1c2VFZmZlY3RFdmVudCh1bnN0YWJsZV9vblR5cGluZ0NoYW5nZSk7XG4gIGNvbnN0IGZpbmRNYXRjaFJlZiA9IHVzZUxhdGVzdFJlZihmaW5kTWF0Y2gpO1xuICBjb25zdCBpZ25vcmVLZXlzUmVmID0gdXNlTGF0ZXN0UmVmKGlnbm9yZUtleXMpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWRSZWYuY3VycmVudCk7XG4gICAgICBtYXRjaEluZGV4UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgc3RyaW5nUmVmLmN1cnJlbnQgPSAnJztcbiAgICB9XG4gIH0sIFtvcGVuXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICAvLyBTeW5jIGFycm93IGtleSBuYXZpZ2F0aW9uIGJ1dCBub3QgdHlwZWFoZWFkIG5hdmlnYXRpb24uXG4gICAgaWYgKG9wZW4gJiYgc3RyaW5nUmVmLmN1cnJlbnQgPT09ICcnKSB7XG4gICAgICB2YXIgX3JlZjI7XG4gICAgICBwcmV2SW5kZXhSZWYuY3VycmVudCA9IChfcmVmMiA9IHNlbGVjdGVkSW5kZXggIT0gbnVsbCA/IHNlbGVjdGVkSW5kZXggOiBhY3RpdmVJbmRleCkgIT0gbnVsbCA/IF9yZWYyIDogLTE7XG4gICAgfVxuICB9LCBbb3Blbiwgc2VsZWN0ZWRJbmRleCwgYWN0aXZlSW5kZXhdKTtcbiAgY29uc3Qgc2V0VHlwaW5nQ2hhbmdlID0gdXNlRWZmZWN0RXZlbnQodmFsdWUgPT4ge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKCFkYXRhUmVmLmN1cnJlbnQudHlwaW5nKSB7XG4gICAgICAgIGRhdGFSZWYuY3VycmVudC50eXBpbmcgPSB2YWx1ZTtcbiAgICAgICAgb25UeXBpbmdDaGFuZ2UodmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGF0YVJlZi5jdXJyZW50LnR5cGluZykge1xuICAgICAgICBkYXRhUmVmLmN1cnJlbnQudHlwaW5nID0gdmFsdWU7XG4gICAgICAgIG9uVHlwaW5nQ2hhbmdlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBvbktleURvd24gPSB1c2VFZmZlY3RFdmVudChldmVudCA9PiB7XG4gICAgZnVuY3Rpb24gZ2V0TWF0Y2hpbmdJbmRleChsaXN0LCBvcmRlcmVkTGlzdCwgc3RyaW5nKSB7XG4gICAgICBjb25zdCBzdHIgPSBmaW5kTWF0Y2hSZWYuY3VycmVudCA/IGZpbmRNYXRjaFJlZi5jdXJyZW50KG9yZGVyZWRMaXN0LCBzdHJpbmcpIDogb3JkZXJlZExpc3QuZmluZCh0ZXh0ID0+ICh0ZXh0ID09IG51bGwgPyB2b2lkIDAgOiB0ZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5kZXhPZihzdHJpbmcudG9Mb2NhbGVMb3dlckNhc2UoKSkpID09PSAwKTtcbiAgICAgIHJldHVybiBzdHIgPyBsaXN0LmluZGV4T2Yoc3RyKSA6IC0xO1xuICAgIH1cbiAgICBjb25zdCBsaXN0Q29udGVudCA9IGxpc3RSZWYuY3VycmVudDtcbiAgICBpZiAoc3RyaW5nUmVmLmN1cnJlbnQubGVuZ3RoID4gMCAmJiBzdHJpbmdSZWYuY3VycmVudFswXSAhPT0gJyAnKSB7XG4gICAgICBpZiAoZ2V0TWF0Y2hpbmdJbmRleChsaXN0Q29udGVudCwgbGlzdENvbnRlbnQsIHN0cmluZ1JlZi5jdXJyZW50KSA9PT0gLTEpIHtcbiAgICAgICAgc2V0VHlwaW5nQ2hhbmdlKGZhbHNlKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxpc3RDb250ZW50ID09IG51bGwgfHwgaWdub3JlS2V5c1JlZi5jdXJyZW50LmluY2x1ZGVzKGV2ZW50LmtleSkgfHxcbiAgICAvLyBDaGFyYWN0ZXIga2V5LlxuICAgIGV2ZW50LmtleS5sZW5ndGggIT09IDEgfHxcbiAgICAvLyBNb2RpZmllciBrZXkuXG4gICAgZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAob3BlbiAmJiBldmVudC5rZXkgIT09ICcgJykge1xuICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIHNldFR5cGluZ0NoYW5nZSh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBCYWlsIG91dCBpZiB0aGUgbGlzdCBjb250YWlucyBhIHdvcmQgbGlrZSBcImxsYW1hXCIgb3IgXCJhYXJvblwiLiBUT0RPOlxuICAgIC8vIGFsbG93IGl0IGluIHRoaXMgY2FzZSwgdG9vLlxuICAgIGNvbnN0IGFsbG93UmFwaWRTdWNjZXNzaW9uT2ZGaXJzdExldHRlciA9IGxpc3RDb250ZW50LmV2ZXJ5KHRleHQgPT4ge1xuICAgICAgdmFyIF90ZXh0JCwgX3RleHQkMjtcbiAgICAgIHJldHVybiB0ZXh0ID8gKChfdGV4dCQgPSB0ZXh0WzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3RleHQkLnRvTG9jYWxlTG93ZXJDYXNlKCkpICE9PSAoKF90ZXh0JDIgPSB0ZXh0WzFdKSA9PSBudWxsID8gdm9pZCAwIDogX3RleHQkMi50b0xvY2FsZUxvd2VyQ2FzZSgpKSA6IHRydWU7XG4gICAgfSk7XG5cbiAgICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gY3ljbGUgdGhyb3VnaCBpdGVtcyB0aGF0IHN0YXJ0IHdpdGggdGhlIHNhbWUgbGV0dGVyXG4gICAgLy8gaW4gcmFwaWQgc3VjY2Vzc2lvbi5cbiAgICBpZiAoYWxsb3dSYXBpZFN1Y2Nlc3Npb25PZkZpcnN0TGV0dGVyICYmIHN0cmluZ1JlZi5jdXJyZW50ID09PSBldmVudC5rZXkpIHtcbiAgICAgIHN0cmluZ1JlZi5jdXJyZW50ID0gJyc7XG4gICAgICBwcmV2SW5kZXhSZWYuY3VycmVudCA9IG1hdGNoSW5kZXhSZWYuY3VycmVudDtcbiAgICB9XG4gICAgc3RyaW5nUmVmLmN1cnJlbnQgKz0gZXZlbnQua2V5O1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWRSZWYuY3VycmVudCk7XG4gICAgdGltZW91dElkUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHN0cmluZ1JlZi5jdXJyZW50ID0gJyc7XG4gICAgICBwcmV2SW5kZXhSZWYuY3VycmVudCA9IG1hdGNoSW5kZXhSZWYuY3VycmVudDtcbiAgICAgIHNldFR5cGluZ0NoYW5nZShmYWxzZSk7XG4gICAgfSwgcmVzZXRNcyk7XG4gICAgY29uc3QgcHJldkluZGV4ID0gcHJldkluZGV4UmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgaW5kZXggPSBnZXRNYXRjaGluZ0luZGV4KGxpc3RDb250ZW50LCBbLi4ubGlzdENvbnRlbnQuc2xpY2UoKHByZXZJbmRleCB8fCAwKSArIDEpLCAuLi5saXN0Q29udGVudC5zbGljZSgwLCAocHJldkluZGV4IHx8IDApICsgMSldLCBzdHJpbmdSZWYuY3VycmVudCk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgb25NYXRjaChpbmRleCk7XG4gICAgICBtYXRjaEluZGV4UmVmLmN1cnJlbnQgPSBpbmRleDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSAhPT0gJyAnKSB7XG4gICAgICBzdHJpbmdSZWYuY3VycmVudCA9ICcnO1xuICAgICAgc2V0VHlwaW5nQ2hhbmdlKGZhbHNlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCByZWZlcmVuY2UgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgb25LZXlEb3duXG4gIH0pLCBbb25LZXlEb3duXSk7XG4gIGNvbnN0IGZsb2F0aW5nID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uS2V5VXAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgc2V0VHlwaW5nQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0sIFtvbktleURvd24sIHNldFR5cGluZ0NoYW5nZV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2UsIGZsb2F0aW5nXSk7XG59XG5cbmZ1bmN0aW9uIGdldEFyZ3NXaXRoQ3VzdG9tRmxvYXRpbmdIZWlnaHQoc3RhdGUsIGhlaWdodCkge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHJlY3RzOiB7XG4gICAgICAuLi5zdGF0ZS5yZWN0cyxcbiAgICAgIGZsb2F0aW5nOiB7XG4gICAgICAgIC4uLnN0YXRlLnJlY3RzLmZsb2F0aW5nLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4vKipcbiAqIFBvc2l0aW9ucyB0aGUgZmxvYXRpbmcgZWxlbWVudCBzdWNoIHRoYXQgYW4gaW5uZXIgZWxlbWVudCBpbnNpZGUgb2YgaXQgaXNcbiAqIGFuY2hvcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbm5lclxuICovXG5jb25zdCBpbm5lciA9IHByb3BzID0+ICh7XG4gIG5hbWU6ICdpbm5lcicsXG4gIG9wdGlvbnM6IHByb3BzLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIGxpc3RSZWYsXG4gICAgICBvdmVyZmxvd1JlZixcbiAgICAgIG9uRmFsbGJhY2tDaGFuZ2UsXG4gICAgICBvZmZzZXQ6IGlubmVyT2Zmc2V0ID0gMCxcbiAgICAgIGluZGV4ID0gMCxcbiAgICAgIG1pbkl0ZW1zVmlzaWJsZSA9IDQsXG4gICAgICByZWZlcmVuY2VPdmVyZmxvd1RocmVzaG9sZCA9IDAsXG4gICAgICBzY3JvbGxSZWYsXG4gICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICB9ID0gZXZhbHVhdGUocHJvcHMsIHN0YXRlKTtcbiAgICBjb25zdCB7XG4gICAgICByZWN0cyxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIGZsb2F0aW5nXG4gICAgICB9XG4gICAgfSA9IHN0YXRlO1xuICAgIGNvbnN0IGl0ZW0gPSBsaXN0UmVmLmN1cnJlbnRbaW5kZXhdO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGlmICghc3RhdGUucGxhY2VtZW50LnN0YXJ0c1dpdGgoJ2JvdHRvbScpKSB7XG4gICAgICAgIHdhcm4oJ2BwbGFjZW1lbnRgIHNpZGUgbXVzdCBiZSBcImJvdHRvbVwiIHdoZW4gdXNpbmcgdGhlIGBpbm5lcmAnLCAnbWlkZGxld2FyZS4nKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IG5leHRBcmdzID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICAuLi4oYXdhaXQgb2Zmc2V0KC1pdGVtLm9mZnNldFRvcCAtIGZsb2F0aW5nLmNsaWVudFRvcCAtIHJlY3RzLnJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gaXRlbS5vZmZzZXRIZWlnaHQgLyAyIC0gaW5uZXJPZmZzZXQpLmZuKHN0YXRlKSlcbiAgICB9O1xuICAgIGNvbnN0IGVsID0gKHNjcm9sbFJlZiA9PSBudWxsID8gdm9pZCAwIDogc2Nyb2xsUmVmLmN1cnJlbnQpIHx8IGZsb2F0aW5nO1xuICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coZ2V0QXJnc1dpdGhDdXN0b21GbG9hdGluZ0hlaWdodChuZXh0QXJncywgZWwuc2Nyb2xsSGVpZ2h0KSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICBjb25zdCByZWZPdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KG5leHRBcmdzLCB7XG4gICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgICB9KTtcbiAgICBjb25zdCBkaWZmWSA9IE1hdGgubWF4KDAsIG92ZXJmbG93LnRvcCk7XG4gICAgY29uc3QgbmV4dFkgPSBuZXh0QXJncy55ICsgZGlmZlk7XG4gICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5tYXgoMCwgZWwuc2Nyb2xsSGVpZ2h0IC0gZGlmZlkgLSBNYXRoLm1heCgwLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICBlbC5zdHlsZS5tYXhIZWlnaHQgPSBtYXhIZWlnaHQgKyBcInB4XCI7XG4gICAgZWwuc2Nyb2xsVG9wID0gZGlmZlk7XG5cbiAgICAvLyBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlLCBmYWxsYmFjayB0byBzdGFuZGFyZCBhbmNob3JlZCBwb3NpdGlvbmluZ1xuICAgIGlmIChvbkZhbGxiYWNrQ2hhbmdlKSB7XG4gICAgICBpZiAoZWwub2Zmc2V0SGVpZ2h0IDwgaXRlbS5vZmZzZXRIZWlnaHQgKiBNYXRoLm1pbihtaW5JdGVtc1Zpc2libGUsIGxpc3RSZWYuY3VycmVudC5sZW5ndGggLSAxKSAtIDEgfHwgcmVmT3ZlcmZsb3cudG9wID49IC1yZWZlcmVuY2VPdmVyZmxvd1RocmVzaG9sZCB8fCByZWZPdmVyZmxvdy5ib3R0b20gPj0gLXJlZmVyZW5jZU92ZXJmbG93VGhyZXNob2xkKSB7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiBvbkZhbGxiYWNrQ2hhbmdlKHRydWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiBvbkZhbGxiYWNrQ2hhbmdlKGZhbHNlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvdmVyZmxvd1JlZikge1xuICAgICAgb3ZlcmZsb3dSZWYuY3VycmVudCA9IGF3YWl0IGRldGVjdE92ZXJmbG93KGdldEFyZ3NXaXRoQ3VzdG9tRmxvYXRpbmdIZWlnaHQoe1xuICAgICAgICAuLi5uZXh0QXJncyxcbiAgICAgICAgeTogbmV4dFlcbiAgICAgIH0sIGVsLm9mZnNldEhlaWdodCksIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB5OiBuZXh0WVxuICAgIH07XG4gIH1cbn0pO1xuLyoqXG4gKiBDaGFuZ2VzIHRoZSBgaW5uZXJgIG1pZGRsZXdhcmUncyBgb2Zmc2V0YCB1cG9uIGEgYHdoZWVsYCBldmVudCB0b1xuICogZXhwYW5kIHRoZSBmbG9hdGluZyBlbGVtZW50J3MgaGVpZ2h0LCByZXZlYWxpbmcgbW9yZSBsaXN0IGl0ZW1zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubmVyXG4gKi9cbmZ1bmN0aW9uIHVzZUlubmVyT2Zmc2V0KGNvbnRleHQsIHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgb3ZlcmZsb3dSZWYsXG4gICAgc2Nyb2xsUmVmLFxuICAgIG9uQ2hhbmdlOiB1bnN0YWJsZV9vbkNoYW5nZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlRWZmZWN0RXZlbnQodW5zdGFibGVfb25DaGFuZ2UpO1xuICBjb25zdCBjb250cm9sbGVkU2Nyb2xsaW5nUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgcHJldlNjcm9sbFRvcFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgaW5pdGlhbE92ZXJmbG93UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICAgIGZ1bmN0aW9uIG9uV2hlZWwoZSkge1xuICAgICAgaWYgKGUuY3RybEtleSB8fCAhZWwgfHwgb3ZlcmZsb3dSZWYuY3VycmVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRZID0gZS5kZWx0YVk7XG4gICAgICBjb25zdCBpc0F0VG9wID0gb3ZlcmZsb3dSZWYuY3VycmVudC50b3AgPj0gLTAuNTtcbiAgICAgIGNvbnN0IGlzQXRCb3R0b20gPSBvdmVyZmxvd1JlZi5jdXJyZW50LmJvdHRvbSA+PSAtMC41O1xuICAgICAgY29uc3QgcmVtYWluaW5nU2Nyb2xsID0gZWwuc2Nyb2xsSGVpZ2h0IC0gZWwuY2xpZW50SGVpZ2h0O1xuICAgICAgY29uc3Qgc2lnbiA9IGRZIDwgMCA/IC0xIDogMTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IGRZIDwgMCA/ICdtYXgnIDogJ21pbic7XG4gICAgICBpZiAoZWwuc2Nyb2xsSGVpZ2h0IDw9IGVsLmNsaWVudEhlaWdodCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXRUb3AgJiYgZFkgPiAwIHx8ICFpc0F0Qm90dG9tICYmIGRZIDwgMCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgb25DaGFuZ2UoZCA9PiBkICsgTWF0aFttZXRob2RdKGRZLCByZW1haW5pbmdTY3JvbGwgKiBzaWduKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICgvZmlyZWZveC9pLnRlc3QoZ2V0VXNlckFnZW50KCkpKSB7XG4gICAgICAgIC8vIE5lZWRlZCB0byBwcm9wYWdhdGUgc2Nyb2xsaW5nIGR1cmluZyBtb21lbnR1bSBzY3JvbGxpbmcgcGhhc2Ugb25jZVxuICAgICAgICAvLyBpdCBnZXRzIGxpbWl0ZWQgYnkgdGhlIGJvdW5kYXJ5LiBVWCBpbXByb3ZlbWVudCwgbm90IGNyaXRpY2FsLlxuICAgICAgICBlbC5zY3JvbGxUb3AgKz0gZFk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGVsID0gKHNjcm9sbFJlZiA9PSBudWxsID8gdm9pZCAwIDogc2Nyb2xsUmVmLmN1cnJlbnQpIHx8IGVsZW1lbnRzLmZsb2F0aW5nO1xuICAgIGlmIChvcGVuICYmIGVsKSB7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwpO1xuXG4gICAgICAvLyBXYWl0IGZvciB0aGUgcG9zaXRpb24gdG8gYmUgcmVhZHkuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSBlbC5zY3JvbGxUb3A7XG4gICAgICAgIGlmIChvdmVyZmxvd1JlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICBpbml0aWFsT3ZlcmZsb3dSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgIC4uLm92ZXJmbG93UmVmLmN1cnJlbnRcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHByZXZTY3JvbGxUb3BSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIGluaXRpYWxPdmVyZmxvd1JlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvbldoZWVsKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3BlbiwgZWxlbWVudHMuZmxvYXRpbmcsIG92ZXJmbG93UmVmLCBzY3JvbGxSZWYsIG9uQ2hhbmdlXSk7XG4gIGNvbnN0IGZsb2F0aW5nID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIG9uS2V5RG93bigpIHtcbiAgICAgIGNvbnRyb2xsZWRTY3JvbGxpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfSxcbiAgICBvbldoZWVsKCkge1xuICAgICAgY29udHJvbGxlZFNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSxcbiAgICBvblBvaW50ZXJNb3ZlKCkge1xuICAgICAgY29udHJvbGxlZFNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSxcbiAgICBvblNjcm9sbCgpIHtcbiAgICAgIGNvbnN0IGVsID0gKHNjcm9sbFJlZiA9PSBudWxsID8gdm9pZCAwIDogc2Nyb2xsUmVmLmN1cnJlbnQpIHx8IGVsZW1lbnRzLmZsb2F0aW5nO1xuICAgICAgaWYgKCFvdmVyZmxvd1JlZi5jdXJyZW50IHx8ICFlbCB8fCAhY29udHJvbGxlZFNjcm9sbGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsRGlmZiA9IGVsLnNjcm9sbFRvcCAtIHByZXZTY3JvbGxUb3BSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG92ZXJmbG93UmVmLmN1cnJlbnQuYm90dG9tIDwgLTAuNSAmJiBzY3JvbGxEaWZmIDwgLTEgfHwgb3ZlcmZsb3dSZWYuY3VycmVudC50b3AgPCAtMC41ICYmIHNjcm9sbERpZmYgPiAxKSB7XG4gICAgICAgICAgUmVhY3RET00uZmx1c2hTeW5jKCgpID0+IG9uQ2hhbmdlKGQgPT4gZCArIHNjcm9sbERpZmYpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBbRmlyZWZveF0gV2FpdCBmb3IgdGhlIGhlaWdodCBjaGFuZ2UgdG8gaGF2ZSBiZWVuIGFwcGxpZWQuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSBlbC5zY3JvbGxUb3A7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCBbZWxlbWVudHMuZmxvYXRpbmcsIG9uQ2hhbmdlLCBvdmVyZmxvd1JlZiwgc2Nyb2xsUmVmXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgZmxvYXRpbmdcbiAgfSA6IHt9LCBbZW5hYmxlZCwgZmxvYXRpbmddKTtcbn1cblxuZnVuY3Rpb24gaXNQb2ludEluUG9seWdvbihwb2ludCwgcG9seWdvbikge1xuICBjb25zdCBbeCwgeV0gPSBwb2ludDtcbiAgbGV0IGlzSW5zaWRlID0gZmFsc2U7XG4gIGNvbnN0IGxlbmd0aCA9IHBvbHlnb24ubGVuZ3RoO1xuICBmb3IgKGxldCBpID0gMCwgaiA9IGxlbmd0aCAtIDE7IGkgPCBsZW5ndGg7IGogPSBpKyspIHtcbiAgICBjb25zdCBbeGksIHlpXSA9IHBvbHlnb25baV0gfHwgWzAsIDBdO1xuICAgIGNvbnN0IFt4aiwgeWpdID0gcG9seWdvbltqXSB8fCBbMCwgMF07XG4gICAgY29uc3QgaW50ZXJzZWN0ID0geWkgPj0geSAhPT0geWogPj0geSAmJiB4IDw9ICh4aiAtIHhpKSAqICh5IC0geWkpIC8gKHlqIC0geWkpICsgeGk7XG4gICAgaWYgKGludGVyc2VjdCkge1xuICAgICAgaXNJbnNpZGUgPSAhaXNJbnNpZGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBpc0luc2lkZTtcbn1cbmZ1bmN0aW9uIGlzSW5zaWRlKHBvaW50LCByZWN0KSB7XG4gIHJldHVybiBwb2ludFswXSA+PSByZWN0LnggJiYgcG9pbnRbMF0gPD0gcmVjdC54ICsgcmVjdC53aWR0aCAmJiBwb2ludFsxXSA+PSByZWN0LnkgJiYgcG9pbnRbMV0gPD0gcmVjdC55ICsgcmVjdC5oZWlnaHQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIHNhZmUgcG9seWdvbiBhcmVhIHRoYXQgdGhlIHVzZXIgY2FuIHRyYXZlcnNlIHdpdGhvdXQgY2xvc2luZyB0aGVcbiAqIGZsb2F0aW5nIGVsZW1lbnQgb25jZSBsZWF2aW5nIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VIb3ZlciNzYWZlcG9seWdvblxuICovXG5mdW5jdGlvbiBzYWZlUG9seWdvbihvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGJ1ZmZlciA9IDAuNSxcbiAgICBibG9ja1BvaW50ZXJFdmVudHMgPSBmYWxzZSxcbiAgICByZXF1aXJlSW50ZW50ID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgbGV0IHRpbWVvdXRJZDtcbiAgbGV0IGhhc0xhbmRlZCA9IGZhbHNlO1xuICBsZXQgbGFzdFggPSBudWxsO1xuICBsZXQgbGFzdFkgPSBudWxsO1xuICBsZXQgbGFzdEN1cnNvclRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgZnVuY3Rpb24gZ2V0Q3Vyc29yU3BlZWQoeCwgeSkge1xuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgZWxhcHNlZFRpbWUgPSBjdXJyZW50VGltZSAtIGxhc3RDdXJzb3JUaW1lO1xuICAgIGlmIChsYXN0WCA9PT0gbnVsbCB8fCBsYXN0WSA9PT0gbnVsbCB8fCBlbGFwc2VkVGltZSA9PT0gMCkge1xuICAgICAgbGFzdFggPSB4O1xuICAgICAgbGFzdFkgPSB5O1xuICAgICAgbGFzdEN1cnNvclRpbWUgPSBjdXJyZW50VGltZTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBkZWx0YVggPSB4IC0gbGFzdFg7XG4gICAgY29uc3QgZGVsdGFZID0geSAtIGxhc3RZO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KGRlbHRhWCAqIGRlbHRhWCArIGRlbHRhWSAqIGRlbHRhWSk7XG4gICAgY29uc3Qgc3BlZWQgPSBkaXN0YW5jZSAvIGVsYXBzZWRUaW1lOyAvLyBweCAvIG1zXG5cbiAgICBsYXN0WCA9IHg7XG4gICAgbGFzdFkgPSB5O1xuICAgIGxhc3RDdXJzb3JUaW1lID0gY3VycmVudFRpbWU7XG4gICAgcmV0dXJuIHNwZWVkO1xuICB9XG4gIGNvbnN0IGZuID0gX3JlZiA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgZWxlbWVudHMsXG4gICAgICBvbkNsb3NlLFxuICAgICAgbm9kZUlkLFxuICAgICAgdHJlZVxuICAgIH0gPSBfcmVmO1xuICAgIHJldHVybiBmdW5jdGlvbiBvbk1vdXNlTW92ZShldmVudCkge1xuICAgICAgZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICB9XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgIGlmICghZWxlbWVudHMuZG9tUmVmZXJlbmNlIHx8ICFlbGVtZW50cy5mbG9hdGluZyB8fCBwbGFjZW1lbnQgPT0gbnVsbCB8fCB4ID09IG51bGwgfHwgeSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2xpZW50WCxcbiAgICAgICAgY2xpZW50WVxuICAgICAgfSA9IGV2ZW50O1xuICAgICAgY29uc3QgY2xpZW50UG9pbnQgPSBbY2xpZW50WCwgY2xpZW50WV07XG4gICAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpO1xuICAgICAgY29uc3QgaXNMZWF2ZSA9IGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJztcbiAgICAgIGNvbnN0IGlzT3ZlckZsb2F0aW5nRWwgPSBjb250YWlucyhlbGVtZW50cy5mbG9hdGluZywgdGFyZ2V0KTtcbiAgICAgIGNvbnN0IGlzT3ZlclJlZmVyZW5jZUVsID0gY29udGFpbnMoZWxlbWVudHMuZG9tUmVmZXJlbmNlLCB0YXJnZXQpO1xuICAgICAgY29uc3QgcmVmUmVjdCA9IGVsZW1lbnRzLmRvbVJlZmVyZW5jZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHJlY3QgPSBlbGVtZW50cy5mbG9hdGluZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgICAgIGNvbnN0IGN1cnNvckxlYXZlRnJvbVJpZ2h0ID0geCA+IHJlY3QucmlnaHQgLSByZWN0LndpZHRoIC8gMjtcbiAgICAgIGNvbnN0IGN1cnNvckxlYXZlRnJvbUJvdHRvbSA9IHkgPiByZWN0LmJvdHRvbSAtIHJlY3QuaGVpZ2h0IC8gMjtcbiAgICAgIGNvbnN0IGlzT3ZlclJlZmVyZW5jZVJlY3QgPSBpc0luc2lkZShjbGllbnRQb2ludCwgcmVmUmVjdCk7XG4gICAgICBjb25zdCBpc0Zsb2F0aW5nV2lkZXIgPSByZWN0LndpZHRoID4gcmVmUmVjdC53aWR0aDtcbiAgICAgIGNvbnN0IGlzRmxvYXRpbmdUYWxsZXIgPSByZWN0LmhlaWdodCA+IHJlZlJlY3QuaGVpZ2h0O1xuICAgICAgY29uc3QgbGVmdCA9IChpc0Zsb2F0aW5nV2lkZXIgPyByZWZSZWN0IDogcmVjdCkubGVmdDtcbiAgICAgIGNvbnN0IHJpZ2h0ID0gKGlzRmxvYXRpbmdXaWRlciA/IHJlZlJlY3QgOiByZWN0KS5yaWdodDtcbiAgICAgIGNvbnN0IHRvcCA9IChpc0Zsb2F0aW5nVGFsbGVyID8gcmVmUmVjdCA6IHJlY3QpLnRvcDtcbiAgICAgIGNvbnN0IGJvdHRvbSA9IChpc0Zsb2F0aW5nVGFsbGVyID8gcmVmUmVjdCA6IHJlY3QpLmJvdHRvbTtcbiAgICAgIGlmIChpc092ZXJGbG9hdGluZ0VsKSB7XG4gICAgICAgIGhhc0xhbmRlZCA9IHRydWU7XG4gICAgICAgIGlmICghaXNMZWF2ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzT3ZlclJlZmVyZW5jZUVsKSB7XG4gICAgICAgIGhhc0xhbmRlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGlzT3ZlclJlZmVyZW5jZUVsICYmICFpc0xlYXZlKSB7XG4gICAgICAgIGhhc0xhbmRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gUHJldmVudCBvdmVybGFwcGluZyBmbG9hdGluZyBlbGVtZW50IGZyb20gYmVpbmcgc3R1Y2sgaW4gYW4gb3Blbi1jbG9zZVxuICAgICAgLy8gbG9vcDogaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xOTEwXG4gICAgICBpZiAoaXNMZWF2ZSAmJiBpc0VsZW1lbnQoZXZlbnQucmVsYXRlZFRhcmdldCkgJiYgY29udGFpbnMoZWxlbWVudHMuZmxvYXRpbmcsIGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgYW55IG5lc3RlZCBjaGlsZCBpcyBvcGVuLCBhYm9ydC5cbiAgICAgIGlmICh0cmVlICYmIGdldENoaWxkcmVuKHRyZWUubm9kZXNSZWYuY3VycmVudCwgbm9kZUlkKS5zb21lKF9yZWYyID0+IHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBjb250ZXh0XG4gICAgICAgIH0gPSBfcmVmMjtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQub3BlbjtcbiAgICAgIH0pKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHBvaW50ZXIgaXMgbGVhdmluZyBmcm9tIHRoZSBvcHBvc2l0ZSBzaWRlLCB0aGUgXCJidWZmZXJcIiBsb2dpY1xuICAgICAgLy8gY3JlYXRlcyBhIHBvaW50IHdoZXJlIHRoZSBmbG9hdGluZyBlbGVtZW50IHJlbWFpbnMgb3BlbiwgYnV0IHNob3VsZCBiZVxuICAgICAgLy8gaWdub3JlZC5cbiAgICAgIC8vIEEgY29uc3RhbnQgb2YgMSBoYW5kbGVzIGZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIGVycm9ycy5cbiAgICAgIGlmIChzaWRlID09PSAndG9wJyAmJiB5ID49IHJlZlJlY3QuYm90dG9tIC0gMSB8fCBzaWRlID09PSAnYm90dG9tJyAmJiB5IDw9IHJlZlJlY3QudG9wICsgMSB8fCBzaWRlID09PSAnbGVmdCcgJiYgeCA+PSByZWZSZWN0LnJpZ2h0IC0gMSB8fCBzaWRlID09PSAncmlnaHQnICYmIHggPD0gcmVmUmVjdC5sZWZ0ICsgMSkge1xuICAgICAgICByZXR1cm4gY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWdub3JlIHdoZW4gdGhlIGN1cnNvciBpcyB3aXRoaW4gdGhlIHJlY3Rhbmd1bGFyIHRyb3VnaCBiZXR3ZWVuIHRoZVxuICAgICAgLy8gdHdvIGVsZW1lbnRzLiBTaW5jZSB0aGUgdHJpYW5nbGUgaXMgY3JlYXRlZCBmcm9tIHRoZSBjdXJzb3IgcG9pbnQsXG4gICAgICAvLyB3aGljaCBjYW4gc3RhcnQgYmV5b25kIHRoZSByZWYgZWxlbWVudCdzIGVkZ2UsIHRyYXZlcnNpbmcgYmFjayBhbmRcbiAgICAgIC8vIGZvcnRoIGZyb20gdGhlIHJlZiB0byB0aGUgZmxvYXRpbmcgZWxlbWVudCBjYW4gY2F1c2UgaXQgdG8gY2xvc2UuIFRoaXNcbiAgICAgIC8vIGVuc3VyZXMgaXQgYWx3YXlzIHJlbWFpbnMgb3BlbiBpbiB0aGF0IGNhc2UuXG4gICAgICBsZXQgcmVjdFBvbHkgPSBbXTtcbiAgICAgIHN3aXRjaCAoc2lkZSkge1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIHJlY3RQb2x5ID0gW1tsZWZ0LCByZWZSZWN0LnRvcCArIDFdLCBbbGVmdCwgcmVjdC5ib3R0b20gLSAxXSwgW3JpZ2h0LCByZWN0LmJvdHRvbSAtIDFdLCBbcmlnaHQsIHJlZlJlY3QudG9wICsgMV1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIHJlY3RQb2x5ID0gW1tsZWZ0LCByZWN0LnRvcCArIDFdLCBbbGVmdCwgcmVmUmVjdC5ib3R0b20gLSAxXSwgW3JpZ2h0LCByZWZSZWN0LmJvdHRvbSAtIDFdLCBbcmlnaHQsIHJlY3QudG9wICsgMV1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICByZWN0UG9seSA9IFtbcmVjdC5yaWdodCAtIDEsIGJvdHRvbV0sIFtyZWN0LnJpZ2h0IC0gMSwgdG9wXSwgW3JlZlJlY3QubGVmdCArIDEsIHRvcF0sIFtyZWZSZWN0LmxlZnQgKyAxLCBib3R0b21dXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIHJlY3RQb2x5ID0gW1tyZWZSZWN0LnJpZ2h0IC0gMSwgYm90dG9tXSwgW3JlZlJlY3QucmlnaHQgLSAxLCB0b3BdLCBbcmVjdC5sZWZ0ICsgMSwgdG9wXSwgW3JlY3QubGVmdCArIDEsIGJvdHRvbV1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gZ2V0UG9seWdvbihfcmVmMykge1xuICAgICAgICBsZXQgW3gsIHldID0gX3JlZjM7XG4gICAgICAgIHN3aXRjaCAoc2lkZSkge1xuICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50T25lID0gW2lzRmxvYXRpbmdXaWRlciA/IHggKyBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyB4ICsgYnVmZmVyICogNCA6IHggLSBidWZmZXIgKiA0LCB5ICsgYnVmZmVyICsgMV07XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50VHdvID0gW2lzRmxvYXRpbmdXaWRlciA/IHggLSBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyB4ICsgYnVmZmVyICogNCA6IHggLSBidWZmZXIgKiA0LCB5ICsgYnVmZmVyICsgMV07XG4gICAgICAgICAgICAgIGNvbnN0IGNvbW1vblBvaW50cyA9IFtbcmVjdC5sZWZ0LCBjdXJzb3JMZWF2ZUZyb21SaWdodCA/IHJlY3QuYm90dG9tIC0gYnVmZmVyIDogaXNGbG9hdGluZ1dpZGVyID8gcmVjdC5ib3R0b20gLSBidWZmZXIgOiByZWN0LnRvcF0sIFtyZWN0LnJpZ2h0LCBjdXJzb3JMZWF2ZUZyb21SaWdodCA/IGlzRmxvYXRpbmdXaWRlciA/IHJlY3QuYm90dG9tIC0gYnVmZmVyIDogcmVjdC50b3AgOiByZWN0LmJvdHRvbSAtIGJ1ZmZlcl1dO1xuICAgICAgICAgICAgICByZXR1cm4gW2N1cnNvclBvaW50T25lLCBjdXJzb3JQb2ludFR3bywgLi4uY29tbW9uUG9pbnRzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb2ludE9uZSA9IFtpc0Zsb2F0aW5nV2lkZXIgPyB4ICsgYnVmZmVyIC8gMiA6IGN1cnNvckxlYXZlRnJvbVJpZ2h0ID8geCArIGJ1ZmZlciAqIDQgOiB4IC0gYnVmZmVyICogNCwgeSAtIGJ1ZmZlcl07XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50VHdvID0gW2lzRmxvYXRpbmdXaWRlciA/IHggLSBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyB4ICsgYnVmZmVyICogNCA6IHggLSBidWZmZXIgKiA0LCB5IC0gYnVmZmVyXTtcbiAgICAgICAgICAgICAgY29uc3QgY29tbW9uUG9pbnRzID0gW1tyZWN0LmxlZnQsIGN1cnNvckxlYXZlRnJvbVJpZ2h0ID8gcmVjdC50b3AgKyBidWZmZXIgOiBpc0Zsb2F0aW5nV2lkZXIgPyByZWN0LnRvcCArIGJ1ZmZlciA6IHJlY3QuYm90dG9tXSwgW3JlY3QucmlnaHQsIGN1cnNvckxlYXZlRnJvbVJpZ2h0ID8gaXNGbG9hdGluZ1dpZGVyID8gcmVjdC50b3AgKyBidWZmZXIgOiByZWN0LmJvdHRvbSA6IHJlY3QudG9wICsgYnVmZmVyXV07XG4gICAgICAgICAgICAgIHJldHVybiBbY3Vyc29yUG9pbnRPbmUsIGN1cnNvclBvaW50VHdvLCAuLi5jb21tb25Qb2ludHNdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb2ludE9uZSA9IFt4ICsgYnVmZmVyICsgMSwgaXNGbG9hdGluZ1RhbGxlciA/IHkgKyBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tQm90dG9tID8geSArIGJ1ZmZlciAqIDQgOiB5IC0gYnVmZmVyICogNF07XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50VHdvID0gW3ggKyBidWZmZXIgKyAxLCBpc0Zsb2F0aW5nVGFsbGVyID8geSAtIGJ1ZmZlciAvIDIgOiBjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyB5ICsgYnVmZmVyICogNCA6IHkgLSBidWZmZXIgKiA0XTtcbiAgICAgICAgICAgICAgY29uc3QgY29tbW9uUG9pbnRzID0gW1tjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyByZWN0LnJpZ2h0IC0gYnVmZmVyIDogaXNGbG9hdGluZ1RhbGxlciA/IHJlY3QucmlnaHQgLSBidWZmZXIgOiByZWN0LmxlZnQsIHJlY3QudG9wXSwgW2N1cnNvckxlYXZlRnJvbUJvdHRvbSA/IGlzRmxvYXRpbmdUYWxsZXIgPyByZWN0LnJpZ2h0IC0gYnVmZmVyIDogcmVjdC5sZWZ0IDogcmVjdC5yaWdodCAtIGJ1ZmZlciwgcmVjdC5ib3R0b21dXTtcbiAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb21tb25Qb2ludHMsIGN1cnNvclBvaW50T25lLCBjdXJzb3JQb2ludFR3b107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb2ludE9uZSA9IFt4IC0gYnVmZmVyLCBpc0Zsb2F0aW5nVGFsbGVyID8geSArIGJ1ZmZlciAvIDIgOiBjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyB5ICsgYnVmZmVyICogNCA6IHkgLSBidWZmZXIgKiA0XTtcbiAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9pbnRUd28gPSBbeCAtIGJ1ZmZlciwgaXNGbG9hdGluZ1RhbGxlciA/IHkgLSBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tQm90dG9tID8geSArIGJ1ZmZlciAqIDQgOiB5IC0gYnVmZmVyICogNF07XG4gICAgICAgICAgICAgIGNvbnN0IGNvbW1vblBvaW50cyA9IFtbY3Vyc29yTGVhdmVGcm9tQm90dG9tID8gcmVjdC5sZWZ0ICsgYnVmZmVyIDogaXNGbG9hdGluZ1RhbGxlciA/IHJlY3QubGVmdCArIGJ1ZmZlciA6IHJlY3QucmlnaHQsIHJlY3QudG9wXSwgW2N1cnNvckxlYXZlRnJvbUJvdHRvbSA/IGlzRmxvYXRpbmdUYWxsZXIgPyByZWN0LmxlZnQgKyBidWZmZXIgOiByZWN0LnJpZ2h0IDogcmVjdC5sZWZ0ICsgYnVmZmVyLCByZWN0LmJvdHRvbV1dO1xuICAgICAgICAgICAgICByZXR1cm4gW2N1cnNvclBvaW50T25lLCBjdXJzb3JQb2ludFR3bywgLi4uY29tbW9uUG9pbnRzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzUG9pbnRJblBvbHlnb24oW2NsaWVudFgsIGNsaWVudFldLCByZWN0UG9seSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGhhc0xhbmRlZCAmJiAhaXNPdmVyUmVmZXJlbmNlUmVjdCkge1xuICAgICAgICByZXR1cm4gY2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNMZWF2ZSAmJiByZXF1aXJlSW50ZW50KSB7XG4gICAgICAgIGNvbnN0IGN1cnNvclNwZWVkID0gZ2V0Q3Vyc29yU3BlZWQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICAgIGNvbnN0IGN1cnNvclNwZWVkVGhyZXNob2xkID0gMC4xO1xuICAgICAgICBpZiAoY3Vyc29yU3BlZWQgIT09IG51bGwgJiYgY3Vyc29yU3BlZWQgPCBjdXJzb3JTcGVlZFRocmVzaG9sZCkge1xuICAgICAgICAgIHJldHVybiBjbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWlzUG9pbnRJblBvbHlnb24oW2NsaWVudFgsIGNsaWVudFldLCBnZXRQb2x5Z29uKFt4LCB5XSkpKSB7XG4gICAgICAgIGNsb3NlKCk7XG4gICAgICB9IGVsc2UgaWYgKCFoYXNMYW5kZWQgJiYgcmVxdWlyZUludGVudCkge1xuICAgICAgICB0aW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dChjbG9zZSwgNDApO1xuICAgICAgfVxuICAgIH07XG4gIH07XG4gIGZuLl9fb3B0aW9ucyA9IHtcbiAgICBibG9ja1BvaW50ZXJFdmVudHNcbiAgfTtcbiAgcmV0dXJuIGZuO1xufVxuXG5leHBvcnQgeyBDb21wb3NpdGUsIENvbXBvc2l0ZUl0ZW0sIEZsb2F0aW5nQXJyb3csIEZsb2F0aW5nRGVsYXlHcm91cCwgRmxvYXRpbmdGb2N1c01hbmFnZXIsIEZsb2F0aW5nTGlzdCwgRmxvYXRpbmdOb2RlLCBGbG9hdGluZ092ZXJsYXksIEZsb2F0aW5nUG9ydGFsLCBGbG9hdGluZ1RyZWUsIGlubmVyLCBzYWZlUG9seWdvbiwgdXNlQ2xpY2ssIHVzZUNsaWVudFBvaW50LCB1c2VEZWxheUdyb3VwLCB1c2VEZWxheUdyb3VwQ29udGV4dCwgdXNlRGlzbWlzcywgdXNlRmxvYXRpbmcsIHVzZUZsb2F0aW5nTm9kZUlkLCB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCwgdXNlRmxvYXRpbmdQb3J0YWxOb2RlLCB1c2VGbG9hdGluZ1Jvb3RDb250ZXh0LCB1c2VGbG9hdGluZ1RyZWUsIHVzZUZvY3VzLCB1c2VIb3ZlciwgdXNlSWQsIHVzZUlubmVyT2Zmc2V0LCB1c2VJbnRlcmFjdGlvbnMsIHVzZUxpc3RJdGVtLCB1c2VMaXN0TmF2aWdhdGlvbiwgdXNlTWVyZ2VSZWZzLCB1c2VSb2xlLCB1c2VUcmFuc2l0aW9uU3RhdHVzLCB1c2VUcmFuc2l0aW9uU3R5bGVzLCB1c2VUeXBlYWhlYWQgfTtcbiIsImltcG9ydCB7IG9mZnNldCwgYXV0b1BsYWNlbWVudCwgZmxpcCwgc2hpZnQsIGFycm93IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcblxuY29uc3QgZ2V0TWlkZGxld2FyZSA9ICh7XG4gIGFycm93UmVmLFxuICBwbGFjZW1lbnRcbn0pID0+IHtcbiAgY29uc3QgbWlkZGxld2FyZSA9IFtdO1xuICBtaWRkbGV3YXJlLnB1c2gob2Zmc2V0KDgpKTtcbiAgbWlkZGxld2FyZS5wdXNoKHBsYWNlbWVudCA9PT0gXCJhdXRvXCIgPyBhdXRvUGxhY2VtZW50KCkgOiBmbGlwKCkpO1xuICBtaWRkbGV3YXJlLnB1c2goc2hpZnQoeyBwYWRkaW5nOiA4IH0pKTtcbiAgaWYgKGFycm93UmVmPy5jdXJyZW50KSB7XG4gICAgbWlkZGxld2FyZS5wdXNoKGFycm93KHsgZWxlbWVudDogYXJyb3dSZWYuY3VycmVudCB9KSk7XG4gIH1cbiAgcmV0dXJuIG1pZGRsZXdhcmU7XG59O1xuY29uc3QgZ2V0UGxhY2VtZW50ID0gKHsgcGxhY2VtZW50IH0pID0+IHtcbiAgcmV0dXJuIHBsYWNlbWVudCA9PT0gXCJhdXRvXCIgPyB2b2lkIDAgOiBwbGFjZW1lbnQ7XG59O1xuY29uc3QgZ2V0QXJyb3dQbGFjZW1lbnQgPSAoeyBwbGFjZW1lbnQgfSkgPT4ge1xuICByZXR1cm4ge1xuICAgIHRvcDogXCJib3R0b21cIixcbiAgICByaWdodDogXCJsZWZ0XCIsXG4gICAgYm90dG9tOiBcInRvcFwiLFxuICAgIGxlZnQ6IFwicmlnaHRcIlxuICB9W3BsYWNlbWVudC5zcGxpdChcIi1cIilbMF1dO1xufTtcblxuZXhwb3J0IHsgZ2V0QXJyb3dQbGFjZW1lbnQsIGdldE1pZGRsZXdhcmUsIGdldFBsYWNlbWVudCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5tanMubWFwXG4iLCJpbXBvcnQgeyB1c2VGbG9hdGluZywgYXV0b1VwZGF0ZSwgdXNlSW50ZXJhY3Rpb25zLCB1c2VDbGljaywgdXNlSG92ZXIsIHNhZmVQb2x5Z29uLCB1c2VEaXNtaXNzLCB1c2VSb2xlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCB7IGdldFBsYWNlbWVudCwgZ2V0TWlkZGxld2FyZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvRmxvYXRpbmcvaGVscGVycy5tanMnO1xuXG5jb25zdCB1c2VCYXNlRkxvYXRpbmcgPSAoe1xuICBvcGVuLFxuICBhcnJvd1JlZixcbiAgcGxhY2VtZW50ID0gXCJ0b3BcIixcbiAgc2V0T3BlblxufSkgPT4ge1xuICByZXR1cm4gdXNlRmxvYXRpbmcoe1xuICAgIHBsYWNlbWVudDogZ2V0UGxhY2VtZW50KHsgcGxhY2VtZW50IH0pLFxuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlOiBzZXRPcGVuLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICAgIG1pZGRsZXdhcmU6IGdldE1pZGRsZXdhcmUoeyBwbGFjZW1lbnQsIGFycm93UmVmIH0pXG4gIH0pO1xufTtcbmNvbnN0IHVzZUZsb2F0aW5nSW50ZXJhY3Rpb25zID0gKHtcbiAgY29udGV4dCxcbiAgdHJpZ2dlcixcbiAgcm9sZSA9IFwidG9vbHRpcFwiLFxuICBpbnRlcmFjdGlvbnMgPSBbXVxufSkgPT4ge1xuICByZXR1cm4gdXNlSW50ZXJhY3Rpb25zKFtcbiAgICB1c2VDbGljayhjb250ZXh0LCB7IGVuYWJsZWQ6IHRyaWdnZXIgPT09IFwiY2xpY2tcIiB9KSxcbiAgICB1c2VIb3Zlcihjb250ZXh0LCB7XG4gICAgICBlbmFibGVkOiB0cmlnZ2VyID09PSBcImhvdmVyXCIsXG4gICAgICBoYW5kbGVDbG9zZTogc2FmZVBvbHlnb24oKVxuICAgIH0pLFxuICAgIHVzZURpc21pc3MoY29udGV4dCksXG4gICAgdXNlUm9sZShjb250ZXh0LCB7IHJvbGUgfSksXG4gICAgLi4uaW50ZXJhY3Rpb25zXG4gIF0pO1xufTtcblxuZXhwb3J0IHsgdXNlQmFzZUZMb2F0aW5nLCB1c2VGbG9hdGluZ0ludGVyYWN0aW9ucyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlLWZsb2F0aW5nLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIEZyYWdtZW50LCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VGb2N1cywgYXV0b1VwZGF0ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgdXNlQmFzZUZMb2F0aW5nLCB1c2VGbG9hdGluZ0ludGVyYWN0aW9ucyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZS1mbG9hdGluZy5tanMnO1xuaW1wb3J0IHsgZ2V0QXJyb3dQbGFjZW1lbnQgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcblxuY29uc3QgRmxvYXRpbmcgPSAoe1xuICBhbmltYXRpb24gPSBcImR1cmF0aW9uLTMwMFwiLFxuICBhcnJvdyA9IHRydWUsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbnRlbnQsXG4gIHBsYWNlbWVudCA9IFwidG9wXCIsXG4gIHN0eWxlID0gXCJkYXJrXCIsXG4gIHRoZW1lLFxuICB0cmlnZ2VyID0gXCJob3ZlclwiLFxuICBtaW5XaWR0aCxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgYXJyb3dSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZmxvYXRpbmdQcm9wZXJ0aWVzID0gdXNlQmFzZUZMb2F0aW5nKHtcbiAgICBvcGVuLFxuICAgIHBsYWNlbWVudCxcbiAgICBhcnJvd1JlZixcbiAgICBzZXRPcGVuXG4gIH0pO1xuICBjb25zdCB7XG4gICAgY29udGV4dCxcbiAgICBtaWRkbGV3YXJlRGF0YTogeyBhcnJvdzogeyB4OiBhcnJvd1gsIHk6IGFycm93WSB9ID0ge30gfSxcbiAgICByZWZzLFxuICAgIHN0cmF0ZWd5LFxuICAgIHVwZGF0ZSxcbiAgICB4LFxuICAgIHlcbiAgfSA9IGZsb2F0aW5nUHJvcGVydGllcztcbiAgY29uc3QgZm9jdXMgPSB1c2VGb2N1cyhjb250ZXh0KTtcbiAgY29uc3QgeyBnZXRGbG9hdGluZ1Byb3BzLCBnZXRSZWZlcmVuY2VQcm9wcyB9ID0gdXNlRmxvYXRpbmdJbnRlcmFjdGlvbnMoe1xuICAgIGNvbnRleHQsXG4gICAgcm9sZTogXCJ0b29sdGlwXCIsXG4gICAgdHJpZ2dlcixcbiAgICBpbnRlcmFjdGlvbnM6IFtmb2N1c11cbiAgfSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZnMucmVmZXJlbmNlLmN1cnJlbnQgJiYgcmVmcy5mbG9hdGluZy5jdXJyZW50ICYmIG9wZW4pIHtcbiAgICAgIHJldHVybiBhdXRvVXBkYXRlKHJlZnMucmVmZXJlbmNlLmN1cnJlbnQsIHJlZnMuZmxvYXRpbmcuY3VycmVudCwgdXBkYXRlKTtcbiAgICB9XG4gIH0sIFtvcGVuLCByZWZzLmZsb2F0aW5nLCByZWZzLnJlZmVyZW5jZSwgdXBkYXRlXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImRpdlwiLFxuICAgICAge1xuICAgICAgICByZWY6IHJlZnMuc2V0UmVmZXJlbmNlLFxuICAgICAgICBjbGFzc05hbWU6IHRoZW1lLnRhcmdldCxcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXRvb2x0aXAtdGFyZ2V0XCIsXG4gICAgICAgIC4uLmdldFJlZmVyZW5jZVByb3BzKCksXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICB9XG4gICAgKSxcbiAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7XG4gICAgICAgIHJlZjogcmVmcy5zZXRGbG9hdGluZyxcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXRvb2x0aXBcIixcbiAgICAgICAgLi4uZ2V0RmxvYXRpbmdQcm9wcyh7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUuYmFzZSxcbiAgICAgICAgICAgIGFuaW1hdGlvbiAmJiBgJHt0aGVtZS5hbmltYXRpb259ICR7YW5pbWF0aW9ufWAsXG4gICAgICAgICAgICAhb3BlbiAmJiB0aGVtZS5oaWRkZW4sXG4gICAgICAgICAgICB0aGVtZS5zdHlsZVtzdHlsZV0sXG4gICAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgICApLFxuICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RyYXRlZ3ksXG4gICAgICAgICAgICB0b3A6IHkgPz8gXCIgXCIsXG4gICAgICAgICAgICBsZWZ0OiB4ID8/IFwiIFwiLFxuICAgICAgICAgICAgbWluV2lkdGhcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgIH0pLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbnRlbnQsIGNoaWxkcmVuOiBjb250ZW50IH0pLFxuICAgICAgICAgIGFycm93ICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgdGhlbWUuYXJyb3cuYmFzZSxcbiAgICAgICAgICAgICAgICBzdHlsZSA9PT0gXCJkYXJrXCIgJiYgdGhlbWUuYXJyb3cuc3R5bGUuZGFyayxcbiAgICAgICAgICAgICAgICBzdHlsZSA9PT0gXCJsaWdodFwiICYmIHRoZW1lLmFycm93LnN0eWxlLmxpZ2h0LFxuICAgICAgICAgICAgICAgIHN0eWxlID09PSBcImF1dG9cIiAmJiB0aGVtZS5hcnJvdy5zdHlsZS5hdXRvXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS10b29sdGlwLWFycm93XCIsXG4gICAgICAgICAgICAgIHJlZjogYXJyb3dSZWYsXG4gICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgdG9wOiBhcnJvd1kgPz8gXCIgXCIsXG4gICAgICAgICAgICAgICAgbGVmdDogYXJyb3dYID8/IFwiIFwiLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBcIiBcIixcbiAgICAgICAgICAgICAgICBib3R0b206IFwiIFwiLFxuICAgICAgICAgICAgICAgIFtnZXRBcnJvd1BsYWNlbWVudCh7IHBsYWNlbWVudDogZmxvYXRpbmdQcm9wZXJ0aWVzLnBsYWNlbWVudCB9KV06IHRoZW1lLmFycm93LnBsYWNlbWVudFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogXCJcXHhBMFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICB9XG4gICAgKVxuICBdIH0pO1xufTtcblxuZXhwb3J0IHsgRmxvYXRpbmcgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZsb2F0aW5nLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgRmxvYXRpbmcgfSBmcm9tICcuLi9GbG9hdGluZy9GbG9hdGluZy5tanMnO1xuXG5jb25zdCBUb29sdGlwID0gKHtcbiAgYW5pbWF0aW9uID0gXCJkdXJhdGlvbi0zMDBcIixcbiAgYXJyb3cgPSB0cnVlLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjb250ZW50LFxuICBwbGFjZW1lbnQgPSBcInRvcFwiLFxuICBzdHlsZSA9IFwiZGFya1wiLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgdHJpZ2dlciA9IFwiaG92ZXJcIixcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS50b29sdGlwLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIEZsb2F0aW5nLFxuICAgIHtcbiAgICAgIGFuaW1hdGlvbixcbiAgICAgIGFycm93LFxuICAgICAgY29udGVudCxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHN0eWxlLFxuICAgICAgdGhlbWUsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5Ub29sdGlwLmRpc3BsYXlOYW1lID0gXCJUb29sdGlwXCI7XG5cbmV4cG9ydCB7IFRvb2x0aXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRvb2x0aXAubWpzLm1hcFxuIiwiLy8gVEhJUyBGSUxFIElTIEFVVE8gR0VORVJBVEVEXG5pbXBvcnQgeyBHZW5JY29uIH0gZnJvbSAnLi4vbGliL2luZGV4Lm1qcyc7XG5leHBvcnQgZnVuY3Rpb24gRmE0Mkdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NlY0MTZDMzQxLjAxMSA0MTYgMzYxLjgxOCA0MTEuODYxIDM4MS4yMyA0MDMuODIxQzQwMC42NDEgMzk1Ljc4IDQxOC4yOCAzODMuOTk1IDQzMy4xMzggMzY5LjEzOEM0NDcuOTk1IDM1NC4yOCA0NTkuNzggMzM2LjY0MSA0NjcuODIxIDMxNy4yM0M0NzUuODYxIDI5Ny44MTggNDgwIDI3Ny4wMTEgNDgwIDI1NkM0ODAgMjM0Ljk4OSA0NzUuODYxIDIxNC4xODIgNDY3LjgyMSAxOTQuNzcxQzQ1OS43OCAxNzUuMzU5IDQ0Ny45OTUgMTU3LjcyIDQzMy4xMzggMTQyLjg2M0M0MTguMjggMTI4LjAwNSA0MDAuNjQxIDExNi4yMiAzODEuMjMgMTA4LjE3OUMzNjEuODE4IDEwMC4xMzkgMzQxLjAxMSA5NiAzMjAgOTZaTTAgMjU2TDE2MC4wMDIgNDE2TDMyMC4wMDMgMjU2TDE2MC4wMDIgOTZMMCAyNTZaTTQ4MCAyNTZDNDgwIDI3Ny4wMTEgNDg0LjEzOCAyOTcuODE4IDQ5Mi4xNzkgMzE3LjIzQzUwMC4yMTkgMzM2LjY0MyA1MTIuMDA1IDM1NC4yOCA1MjYuODYyIDM2OS4xMzhDNTQxLjcyIDM4My45OTUgNTU5LjM1NyAzOTUuNzgxIDU3OC43NyA0MDMuODIxQzU5OC4xODIgNDExLjg2MiA2MTguOTg5IDQxNiA2NDAgNDE2Vjk2QzU5Ny41NjUgOTYgNTU2Ljg2OSAxMTIuODU4IDUyNi44NjIgMTQyLjg2M0M0OTYuODU3IDE3Mi44NjkgNDgwIDIxMy41NjUgNDgwIDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhNTAwUHggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAzLjMgMzQ0LjNjLTYuNS0xNC4yLTYuOS0xOC4zIDcuNC0yMy4xIDI1LjYtOCA4IDkuMiA0My4yIDQ5LjJoLjN2LTkzLjljMS4yLTUwLjIgNDQtOTIuMiA5Ny43LTkyLjIgNTMuOSAwIDk3LjcgNDMuNSA5Ny43IDk2LjggMCA2My40LTYwLjggMTEzLjItMTI4LjUgOTMuMy0xMC41LTQuMi0yLjEtMzEuNyA4LjUtMjguNiA1MyAwIDg5LjQtMTAuMSA4OS40LTY0LjQgMC02MS03Ny4xLTg5LjYtMTE2LjktNDQuNi0yMy41IDI2LjQtMTcuNiA0Mi4xLTE3LjYgMTU3LjYgNTAuNyAzMSAxMTguMyAyMiAxNjAuNC0yMC4xIDI0LjgtMjQuOCAzOC41LTU4IDM4LjUtOTMgMC0zNS4yLTEzLjgtNjguMi0zOC44LTkzLjMtMjQuOC0yNC44LTU3LjgtMzguNS05My4zLTM4LjVzLTY4LjggMTMuOC05My41IDM4LjVjLS4zLjMtMTYgMTYuNS0yMS4yIDIzLjlsLS41LjZjLTMuMyA0LjctNi4zIDkuMS0yMC4xIDYuMS02LjktMS43LTE0LjMtNS44LTE0LjMtMTEuOFYyMGMwLTUgMy45LTEwLjUgMTAuNS0xMC41aDI0MS4zYzguMyAwIDguMyAxMS42IDguMyAxNS4xIDAgMy45IDAgMTUuMS04LjMgMTUuMUgxMzAuM3YxMzIuOWguM2MxMDQuMi0xMDkuOCAyODIuOC0zNiAyODIuOCAxMDguOSAwIDE3OC4xLTI0NC44IDIyMC4zLTMxMC4xIDYyLjh6bTYzLjMtMjYwLjhjLS41IDQuMiA0LjYgMjQuNSAxNC42IDIwLjZDMzA2IDU2LjYgMzg0IDE0NC41IDM5MC42IDE0NC41YzQuOCAwIDIyLjgtMTUuMyAxNC4zLTIyLjgtOTMuMi04OS0yMzQuNS01Ny0yMzguMy0zOC4yek0zOTMgNDE0LjdDMjgzIDUyNC42IDk0IDQ3NS41IDYxIDMxMC41YzAtMTIuMi0zMC40LTcuNC0yOC45IDMuMyAyNCAxNzMuNCAyNDYgMjU2LjkgMzgxLjYgMTIxLjMgNi45LTcuOC0xMi42LTI4LjQtMjAuNy0yMC40ek0yMTMuNiAzMDYuNmMwIDQgNC4zIDcuMyA1LjUgOC41IDMgMyA2LjEgNC40IDguNSA0LjQgMy44IDAgMi42LjIgMjIuMy0xOS41IDE5LjYgMTkuMyAxOS4xIDE5LjUgMjIuMyAxOS41IDUuNCAwIDE4LjUtMTAuNCAxMC43LTE4LjJMMjY1LjYgMjg0bDE4LjItMTguMmM2LjMtNi44LTEwLjEtMjEuOC0xNi4yLTE1LjdMMjQ5LjcgMjY4Yy0xOC42LTE4LjgtMTguNC0xOS41LTIxLjUtMTkuNS01IDAtMTggMTEuNy0xMi40IDE3LjNMMjM0IDI4NGMtMTguMSAxNy45LTIwLjQgMTkuMi0yMC40IDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFjY2Vzc2libGVJY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy45IDI1NS44TDQxMSA0MTMuMWMtMy4zIDQwLjctNjMuOSAzNS4xLTYwLjYtNC45bDEwLTEyMi41LTQxLjEgMi4zYzEwLjEgMjAuNyAxNS44IDQzLjkgMTUuOCA2OC41IDAgNDEuMi0xNi4xIDc4LjctNDIuMyAxMDYuNWwtMzkuMy0zOS4zYzU3LjktNjMuNyAxMy4xLTE2Ny4yLTc0LTE2Ny4yLTI1LjkgMC00OS41IDkuOS02Ny4yIDI2TDczIDI0My4yYzIyLTIwLjcgNTAuMS0zNS4xIDgxLjQtNDAuMmw3NS4zLTg1LjctNDIuNi0yNC44LTUxLjYgNDZjLTMwIDI2LjgtNzAuNi0xOC41LTQwLjUtNDUuNGw2OC02MC43YzkuOC04LjggMjQuMS0xMC4yIDM1LjUtMy42IDAgMCAxMzkuMyA4MC45IDEzOS41IDgxLjEgMTYuMiAxMC4xIDIwLjcgMzYgNi4xIDUyLjZMMjg1LjcgMjI5bDEwNi4xLTUuOWMxOC41LTEuMSAzMy42IDE0LjQgMzIuMSAzMi43em0tNjQuOS0xNTRjMjguMSAwIDUwLjktMjIuOCA1MC45LTUwLjlDNDA5LjkgMjIuOCAzODcuMSAwIDM1OSAwYy0yOC4xIDAtNTAuOSAyMi44LTUwLjkgNTAuOSAwIDI4LjEgMjIuOCA1MC45IDUwLjkgNTAuOXpNMTc5LjYgNDU2LjVjLTgwLjYgMC0xMjcuNC05MC42LTgyLjctMTU2LjFsLTM5LjctMzkuN0MzNi40IDI4NyAyNCAzMjAuMyAyNCAzNTYuNGMwIDEzMC43IDE1MC43IDIwMS40IDI1MS40IDEyMi41bC0zOS43LTM5LjdjLTE2IDEwLjktMzUuMyAxNy4zLTU2LjEgMTcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWNjdXNvZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIyLjEgMjUydi0xbC01MS4yLTY1LjhzLTEyIDEuNi0yNSAxNS4xYy05IDkuMy0yNDIuMSAyMzkuMS0yNDMuNCAyNDAuOS03IDEwIDEuNiA2LjggMTUuNyAxLjcuOCAwIDExNC41LTM2LjYgMTE0LjUtMzYuNi41LS42LS4xLS4xLjYtLjYtLjQtNS4xLS44LTI2LjItMS0yNy43LS42LTUuMiAyLjItNi45IDctOC45bDkyLjYtMzMuOGMuNi0uOCA4OC41LTgxLjcgOTAuMi04My4zem0xNjAuMSAxMjAuMWMxMy4zIDE2LjEgMjAuNyAxMy4zIDMwLjggOS4zIDMuMi0xLjIgMTE1LjQtNDcuNiAxMTcuOC00OC45IDgtNC4zLTEuNy0xNi43LTcuMi0yMy40LTIuMS0yLjUtMjA1LjEtMjQ1LjYtMjA3LjItMjQ4LjMtOS43LTEyLjItMTQuMy0xMi45LTM4LjQtMTIuOC0xMC4yIDAtMTA2LjguNS0xMTYuNS42LTE5LjIuMS0zMi45LS4zLTE5LjIgMTYuOUMyNTAgNzUgNDc2LjUgMzY1LjIgNDgyLjIgMzcyLjF6bTE1Mi43IDEuNmMtMi4zLS4zLTI0LjYtNC43LTM4LTcuMiAwIDAtMTE1IDUwLjQtMTE3LjUgNTEuNi0xNiA3LjMtMjYuOS0zLjItMzYuNy0xNC42bC01Ny4xLTc0Yy01LjQtLjktNjAuNC05LjYtNjUuMy05LjMtMy4xLjItOS42LjgtMTQuNCAyLjktNC45IDIuMS0xNDUuMiA1Mi44LTE1MC4yIDU0LjctNS4xIDItMTEuNCAzLjYtMTEuMSA3LjYuMiAyLjUgMiAyLjYgNC42IDMuNSAyLjcuOCAzMDAuOSA2Ny42IDMwOCA2OS4xIDE1LjYgMy4zIDM4LjUgMTAuNSA1My42IDEuNyAyLjEtMS4yIDEyMy44LTc2LjQgMTI1LjgtNzcuOCA1LjQtNCA0LjMtNi44LTEuNy04LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMTY3LjVsNjQuOSA5OC44SDE4My4xbDY0LjktOTguOHpNNDk2IDI1NmMwIDEzNi45LTExMS4xIDI0OC0yNDggMjQ4UzAgMzkyLjkgMCAyNTYgMTExLjEgOCAyNDggOHMyNDggMTExLjEgMjQ4IDI0OHptLTk5LjggODIuN0wyNDggMTE1LjUgOTkuOCAzMzguN2gzMC40bDMzLjYtNTEuN2gxNjguNmwzMy42IDUxLjdoMzAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWR2ZXJzYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgyLjEgMzJIMjguN0M1LjggMzIgMCAzNy45IDAgNjAuOXYzOTAuMkMwIDQ3NC40IDUuOCA0ODAgMjguNyA0ODBoNDUzLjRjMjQuNCAwIDI5LjktNS4yIDI5LjktMjkuN1Y2Mi4yYzAtMjQuNi01LjQtMzAuMi0yOS45LTMwLjJ6TTE3OC40IDIyMC4zYy0yNy41LTIwLjItNzIuMS04LjctODQuMiAyMy40LTQuMyAxMS4xLTkuMyA5LjUtMTcuNSA4LjMtOS43LTEuNS0xNy4yLTMuMi0yMi41LTUuNS0yOC44LTExLjQgOC42LTU1LjMgMjQuOS02NC4zIDQxLjEtMjEuNCA4My40LTIyLjIgMTI1LjMtNC44IDQwLjkgMTYuOCAzNC41IDU5LjIgMzQuNSAxMjguNSAyLjcgMjUuOC00LjMgNTguMyA5LjMgODguOCAxLjkgNC40LjQgNy45LTIuNyAxMC43LTguNCA2LjctMzkuMyAyLjItNDYuNi03LjQtMS45LTIuMi0xLjgtMy42LTMuOS02LjItMy42LTMuOS03LjMtMi4yLTExLjkgMS01Ny40IDM2LjQtMTQwLjMgMjEuNC0xNDctNDMuMy0zLjEtMjkuMyAxMi40LTU3LjEgMzkuNi03MSAzOC4yLTE5LjUgMTEyLjItMTEuOCAxMTQtMzAuOSAxLjEtMTAuMi0xLjktMjAuMS0xMS4zLTI3LjN6bTI4Ni43IDIyMmMwIDE1LjEtMTEuMSA5LjktMTcuOCA5LjlINTIuNGMtNy40IDAtMTguMiA0LjgtMTcuOC0xMC43LjQtMTMuOSAxMC41LTkuMSAxNy4xLTkuMSAxMzIuMy0uNCAyNjQuNS0uNCAzOTYuOCAwIDYuOCAwIDE2LjYtNC40IDE2LjYgOS45em0zLjgtMzQwLjV2MjkxYzAgNS43LS43IDEzLjktOC4xIDEzLjktMTIuNC0uNC0yNy41IDcuMS0zNi4xLTUuNi01LjgtOC43LTcuOC00LTEyLjQtMS4yLTUzLjQgMjkuNy0xMjguMSA3LjEtMTQ0LjQtODUuMi02LjEtMzMuNC0uNy02Ny4xIDE1LjctMTAwIDExLjgtMjMuOSA1Ni45LTc2LjEgMTM2LjEtMzAuNXYtNzFjMC0yNi4yLS4xLTI2LjIgMjYtMjYuMiAzLjEgMCA2LjYuNCA5LjcgMCAxMC4xLS44IDEzLjYgNC40IDEzLjYgMTQuMy0uMS4yLS4xLjMtLjEuNXptLTUxLjUgMjMyLjNjLTE5LjUgNDcuNi03Mi45IDQzLjMtOTAgNS4yLTE1LjEtMzMuMy0xNS41LTY4LjIuNC0xMDEuNSAxNi4zLTM0LjEgNTkuNy0zNS43IDgxLjUtNC44IDIwLjYgMjguOCAxNC45IDg0LjYgOC4xIDEwMS4xem0tMjk0LjggMzUuM2MtNy41LTEuMy0zMy0zLjMtMzMuNy0yNy44LS40LTEzLjkgNy44LTIzIDE5LjgtMjUuOCAyNC40LTUuOSA0OS4zLTkuOSA3My43LTE0LjcgOC45LTIgNy40IDQuNCA3LjggOS41IDEuNCAzMy0yNi4xIDU5LjItNjcuNiA1OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZmZpbGlhdGV0aGVtZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTkuNyAyMzcuNEMxMDguNCAzMDguMyA0My4xIDM0OC4yIDE0IDMyNi42LTE1LjIgMzA0LjkgMi44IDIzMCA1NC4yIDE1OS4xYzUxLjMtNzAuOSAxMTYuNi0xMTAuOCAxNDUuNy04OS4yIDI5LjEgMjEuNiAxMS4xIDk2LjYtNDAuMiAxNjcuNXptMzUxLjItNTcuM0M0MzcuMSAzMDMuNSAzMTkgMzY3LjggMjQ2LjQgMzIzLjdjLTI1LTE1LjItNDEuMy00MS4yLTQ5LTczLjgtMzMuNiA2NC44LTkyLjggMTEzLjgtMTY0LjEgMTMzLjIgNDkuOCA1OS4zIDEyNC4xIDk2LjkgMjA3IDk2LjkgMTUwIDAgMjcxLjYtMTIzLjEgMjcxLjYtMjc0LjkuMS04LjUtLjMtMTYuOC0xLTI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBaXJibmIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDM3My4xMmMtMjUuMjQtMzEuNjctNDAuMDgtNTkuNDMtNDUtODMuMTgtMjIuNTUtODggMTEyLjYxLTg4IDkwLjA2IDAtNS40NSAyNC4yNS0yMC4yOSA1Mi00NSA4My4xOHptMTM4LjE1IDczLjIzYy00Mi4wNiAxOC4zMS04My42Ny0xMC44OC0xMTkuMy01MC40NyAxMDMuOS0xMzAuMDcgNDYuMTEtMjAwLTE4Ljg1LTIwMC01NC45MiAwLTg1LjE2IDQ2LjUxLTczLjI4IDEwMC41IDYuOTMgMjkuMTkgMjUuMjMgNjIuMzkgNTQuNDMgOTkuNS0zMi41MyAzNi4wNS02MC41NSA1Mi42OS04NS4xNSA1NC45Mi01MCA3LjQzLTg5LjExLTQxLjA2LTcxLjMtOTEuMDkgMTUuMS0zOS4xNiAxMTEuNzItMjMxLjE4IDExNS44Ny0yNDEuNTYgMTUuNzUtMzAuMDcgMjUuNTYtNTcuNCA1OS4zOC01Ny40IDMyLjM0IDAgNDMuNCAyNS45NCA2MC4zNyA1OS44NyAzNiA3MC42MiA4OS4zNSAxNzcuNDggMTE0Ljg0IDIzOS4wOSAxMy4xNyAzMy4wNy0xLjM3IDcxLjI5LTM3LjAxIDg2LjY0em00Ny0xMzYuMTJDMjgwLjI3IDM1LjkzIDI3My4xMyAzMiAyMjQgMzJjLTQ1LjUyIDAtNjQuODcgMzEuNjctODQuNjYgNzIuNzlDMzMuMTggMzE3LjEgMjIuODkgMzQ3LjE5IDIyIDM0OS44MS0zLjIyIDQxOS4xNCA0OC43NCA0ODAgMTExLjYzIDQ4MGMyMS43MSAwIDYwLjYxLTYuMDYgMTEyLjM3LTYyLjQgNTguNjggNjMuNzggMTAxLjI2IDYyLjQgMTEyLjM3IDYyLjQgNjIuODkuMDUgMTE0Ljg1LTYwLjg2IDg5LjYxLTEzMC4xOS4wMi0zLjg5LTE2LjgyLTM4LjktMTYuODItMzkuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsZ29saWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBDMTE2LjEgMCAyIDExMi43IDAgMjUyLjFDLTIgMzkzLjYgMTEyLjkgNTEwLjggMjU0LjUgNTExLjZjNDMuNyAuMyA4NS45LTEwLjQgMTIzLjMtMzAuN2MzLjYtMiA0LjItNyAxLjEtOS43bC0yNC0yMS4yYy00LjktNC4zLTExLjgtNS41LTE3LjgtM2MtMjYuMSAxMS4xLTU0LjUgMTYuOC04My43IDE2LjRDMTM5IDQ2MS45IDQ2LjUgMzY2LjggNDguMyAyNTIuNEM1MC4xIDEzOS41IDE0Mi42IDQ4LjIgMjU2IDQ4LjJINDYzLjdWNDE3LjJMMzQ1LjkgMzEyLjVjLTMuOC0zLjQtOS43LTIuNy0xMi43IDEuM2MtMTguOSAyNS00OS43IDQwLjYtODMuOSAzOC4yYy00Ny41LTMuMy04NS45LTQxLjUtODkuNS04OC45Yy00LjItNTYuNiA0MC42LTEwMy45IDk2LjMtMTAzLjljNTAuNCAwIDkxLjkgMzguOCA5Ni4yIDg4Yy40IDQuNCAyLjQgOC41IDUuNyAxMS40bDMwLjcgMjcuMmMzLjUgMy4xIDkgMS4yIDkuOS0zLjRjMi4yLTExLjggMy0yNC4yIDIuMS0zNi44Yy00LjktNzItNjMuMy0xMzAtMTM1LjQtMTM0LjRjLTgyLjctNS4xLTE1MS44IDU5LjUtMTU0IDE0MC42Yy0yLjEgNzguOSA2Mi42IDE0NyAxNDEuNiAxNDguN2MzMyAuNyA2My42LTkuNiA4OC4zLTI3LjZMNDk1IDUwOS40YzYuNiA1LjggMTcgMS4yIDE3LTcuN1Y5LjdjMC01LjQtNC40LTkuNy05LjctOS43SDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpcGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny43NCAzMkg3MC4yNkMzMS40MSAzMiAwIDYzLjQxIDAgMTAyLjI2djMwNy40OEMwIDQ0OC41OSAzMS40MSA0ODAgNzAuMjYgNDgwaDMwNy40OGMzOC41MiAwIDY5Ljc2LTMxLjA4IDcwLjI2LTY5LjYtNDUuOTYtMjUuNjItMTEwLjU5LTYwLjM0LTE3MS42LTg4LjQ0LTMyLjA3IDQzLjk3LTg0LjE0IDgxLTE0OC42MiA4MS03MC41OSAwLTkzLjczLTQ1LjMtOTcuMDQtNzYuMzctMy45Ny0zOS4wMSAxNC44OC04MS41IDk5LjUyLTgxLjUgMzUuMzggMCA3OS4zNSAxMC4yNSAxMjcuMTMgMjQuOTYgMTYuNTMtMzAuMDkgMjYuNDUtNjAuMzQgMjYuNDUtNjAuMzRoLTE3OC4ydi0xNi43aDkyLjA4di0zMS4yNEg4OC4yOHYtMTkuMDFoMTA5LjQ0VjkyLjM0aDUwLjkydjUwLjQyaDEwOS40NHYxOS4wMUgyNDguNjN2MzEuMjRoODguNzdzLTE1LjIxIDQ2LjYyLTM4LjM1IDkwLjkyYzQ4LjkzIDE2LjcgMTAwLjAxIDM2LjA0IDE0OC42MiA1Mi43NFYxMDIuMjZDNDQ3LjgzIDYzLjU3IDQxNi40MyAzMiAzNzcuNzQgMzJ6TTQ3LjI4IDMyMi45NWMuOTkgMjAuMTcgMTAuMjUgNTMuNzMgNjkuOTMgNTMuNzMgNTIuMDcgMCA5Mi41OC0zOS42OCAxMTcuODctNzIuOS00NC42My0xOC42OC04NC40OC0zMS40MS0xMDkuNDQtMzEuNDEtNjcuNDUgMC03OS4zNSAzMy4wNi03OC4zNiA1MC41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDMyNS4zYzIuMy00LjIgNS4yLTQuOSA5LjctMi41IDEwLjQgNS42IDIwLjYgMTEuNCAzMS4yIDE2LjdhNTk1Ljg4IDU5NS44OCAwIDAgMCAxMjcuNCA0Ni4zIDYxNi42MSA2MTYuNjEgMCAwIDAgNjMuMiAxMS44IDYwMy4zMyA2MDMuMzMgMCAwIDAgOTUgNS4yYzE3LjQtLjQgMzQuOC0xLjggNTIuMS0zLjhhNjAzLjY2IDYwMy42NiAwIDAgMCAxNjMuMy00Mi44YzIuOS0xLjIgNS45LTIgOS4xLTEuMiA2LjcgMS44IDkgOSA0LjEgMTMuOWE3MCA3MCAwIDAgMS05LjYgNy40Yy0zMC43IDIxLjEtNjQuMiAzNi40LTk5LjYgNDcuOWE0NzMuMzEgNDczLjMxIDAgMCAxLTc1LjEgMTcuNiA0MzEgNDMxIDAgMCAxLTUzLjIgNC44IDIxLjMgMjEuMyAwIDAgMC0yLjUuM0gzMDhhMjEuMyAyMS4zIDAgMCAwLTIuNS0uM2MtMy42LS4yLTcuMi0uMy0xMC43LS40YTQyNi4zIDQyNi4zIDAgMCAxLTUwLjQtNS4zQTQ0OC40IDQ0OC40IDAgMCAxIDE2NCA0MjBhNDQzLjMzIDQ0My4zMyAwIDAgMS0xNDUuNi04N2MtMS44LTEuNi0zLTMuOC00LjQtNS43ek0xNzIgNjUuMWwtNC4zLjZhODAuOTIgODAuOTIgMCAwIDAtMzggMTUuMWMtMi40IDEuNy00LjYgMy41LTcuMSA1LjRhNC4yOSA0LjI5IDAgMCAxLS40LTEuNGMtLjQtMi43LS44LTUuNS0xLjMtOC4yLS43LTQuNi0zLTYuNi03LjYtNi42aC0xMS41Yy02LjkgMC04LjIgMS4zLTguMiA4LjJ2MjA5LjNjMCAxIDAgMiAuMSAzIC4yIDMgMiA0LjkgNC45IDUgNyAuMSAxNC4xLjEgMjEuMSAwIDIuOSAwIDQuNy0yIDUtNSAuMS0xIC4xLTIgLjEtM3YtNzIuNGMxLjEuOSAxLjcgMS40IDIuMiAxLjkgMTcuOSAxNC45IDM4LjUgMTkuOCA2MSAxNS40IDIwLjQtNCAzNC42LTE2LjUgNDMuOC0zNC45IDctMTMuOSA5LjktMjguNyAxMC4zLTQ0LjEuNS0xNy4xLTEuMi0zMy45LTguMS00OS44LTguNS0xOS42LTIyLjYtMzIuNS00My45LTM2LjktMy4yLS43LTYuNS0xLTkuOC0xLjUtMi44LS4xLTUuNS0uMS04LjMtLjF6TTEyNC42IDEwN2EzLjQ4IDMuNDggMCAwIDEgMS43LTMuM2MxMy43LTkuNSAyOC44LTE0LjUgNDUuNi0xMy4yIDE0LjkgMS4xIDI3LjEgOC40IDMzLjUgMjUuOSAzLjkgMTAuNyA0LjkgMjEuOCA0LjkgMzMgMCAxMC40LS44IDIwLjYtNCAzMC42LTYuOCAyMS4zLTIyLjQgMjkuNC00Mi42IDI4LjUtMTQtLjYtMjYuMi02LTM3LjQtMTMuOWEzLjU3IDMuNTcgMCAwIDEtMS43LTMuM2MuMS0xNC4xIDAtMjguMSAwLTQyLjJzLjEtMjggMC00Mi4xem0yMDUuNy00MS45Yy0xIC4xLTIgLjMtMi45LjRhMTQ4IDE0OCAwIDAgMC0yOC45IDQuMWMtNi4xIDEuNi0xMiAzLjgtMTcuOSA1LjgtMy42IDEuMi01LjQgMy44LTUuMyA3LjcuMSAzLjMtLjEgNi42IDAgOS45LjEgNC44IDIuMSA2LjEgNi44IDQuOSA3LjgtMiAxNS42LTQuMiAyMy41LTUuNyAxMi4zLTIuMyAyNC43LTMuMyAzNy4yLTEuNCA2LjUgMSAxMi42IDIuOSAxNi44IDguNCAzLjcgNC44IDUuMSAxMC41IDUuMyAxNi40LjMgOC4zLjIgMTYuNi4zIDI0LjlhNy44NCA3Ljg0IDAgMCAxLS4yIDEuNGMtLjUtLjEtLjkgMC0xLjMtLjFhMTgwLjU2IDE4MC41NiAwIDAgMC0zMi00LjljLTExLjMtLjYtMjIuNS4xLTMzLjMgMy45LTEyLjkgNC41LTIzLjMgMTIuMy0yOS40IDI0LjktNC43IDkuOC01LjQgMjAuMi0zLjkgMzAuNyAyIDE0IDkgMjQuOCAyMS40IDMxLjcgMTEuOSA2LjYgMjQuOCA3LjQgMzcuOSA1LjQgMTUuMS0yLjMgMjguNS04LjcgNDAuMy0xOC40YTcuMzYgNy4zNiAwIDAgMSAxLjYtMS4xYy42IDMuOCAxLjEgNy40IDEuOCAxMSAuNiAzLjEgMi41IDUuMSA1LjQgNS4yIDUuNC4xIDEwLjkuMSAxNi4zIDBhNC44NCA0Ljg0IDAgMCAwIDQuOC00LjcgMjYuMiAyNi4yIDAgMCAwIC4xLTIuOHYtMTA2YTgwIDgwIDAgMCAwLS45LTEyLjljLTEuOS0xMi45LTcuNC0yMy41LTE5LTMwLjQtNi43LTQtMTQuMS02LTIxLjgtNy4xLTMuNi0uNS03LjItLjgtMTAuOC0xLjMtMy45LjEtNy45LjEtMTEuOS4xem0zNSAxMjcuN2EzLjMzIDMuMzMgMCAwIDEtMS41IDNjLTExLjIgOC4xLTIzLjUgMTMuNS0zNy40IDE0LjktNS43LjYtMTEuNC40LTE2LjgtMS44YTIwLjA4IDIwLjA4IDAgMCAxLTEyLjQtMTMuMyAzMi45IDMyLjkgMCAwIDEtLjEtMTkuNGMyLjUtOC4zIDguNC0xMyAxNi40LTE1LjZhNjEuMzMgNjEuMzMgMCAwIDEgMjQuOC0yLjJjOC40LjcgMTYuNiAyLjMgMjUgMy40IDEuNi4yIDIuMSAxIDIuMSAyLjYtLjEgNC44IDAgOS41IDAgMTQuM3MtLjIgOS40LS4xIDE0LjF6bTI1OS45IDEyOS40Yy0xLTUtNC44LTYuOS05LjEtOC4zYTg4LjQyIDg4LjQyIDAgMCAwLTIxLTMuOSAxNDcuMzIgMTQ3LjMyIDAgMCAwLTM5LjIgMS45Yy0xNC4zIDIuNy0yNy45IDcuMy00MCAxNS42YTEzLjc1IDEzLjc1IDAgMCAwLTMuNyAzLjUgNS4xMSA1LjExIDAgMCAwLS41IDRjLjQgMS41IDIuMSAxLjkgMy42IDEuOGExNi4yIDE2LjIgMCAwIDAgMi4yLS4xYzcuOC0uOCAxNS41LTEuNyAyMy4zLTIuNSAxMS40LTEuMSAyMi45LTEuOCAzNC4zLS45YTcxLjY0IDcxLjY0IDAgMCAxIDE0LjQgMi43YzUuMSAxLjQgNy40IDUuMiA3LjYgMTAuNC40IDgtMS40IDE1LjctMy41IDIzLjMtNC4xIDE1LjQtMTAgMzAuMy0xNS44IDQ1LjFhMTcuNiAxNy42IDAgMCAwLTEgM2MtLjUgMi45IDEuMiA0LjggNC4xIDQuMWExMC41NiAxMC41NiAwIDAgMCA0LjgtMi41IDE0NS45MSAxNDUuOTEgMCAwIDAgMTIuNy0xMy40YzEyLjgtMTYuNCAyMC4zLTM1LjMgMjQuNy01NS42LjgtMy42IDEuNC03LjMgMi4xLTEwLjl2LTE3LjN6TTQ5My4xIDE5OXEtMTkuMzUtNTMuNTUtMzguNy0xMDcuMmMtMi01LjctNC4yLTExLjMtNi4zLTE2LjktMS4xLTIuOS0zLjItNC44LTYuNC00LjgtNy42LS4xLTE1LjItLjItMjIuOS0uMS0yLjUgMC0zLjcgMi0zLjIgNC41YTQzLjEgNDMuMSAwIDAgMCAxLjkgNi4xcTI5LjQgNzIuNzUgNTkuMSAxNDUuNWMxLjcgNC4xIDIuMSA3LjYuMiAxMS44LTMuMyA3LjMtNS45IDE1LTkuMyAyMi4zLTMgNi41LTggMTEuNC0xNS4yIDEzLjNhNDIuMTMgNDIuMTMgMCAwIDEtMTUuNCAxLjFjLTIuNS0uMi01LS44LTcuNS0xLTMuNC0uMi01LjEgMS4zLTUuMiA0LjhxLS4xNSA1IDAgOS45Yy4xIDUuNSAyIDggNy40IDguOWExMDguMTggMTA4LjE4IDAgMCAwIDE2LjkgMmMxNy4xLjQgMzAuNy02LjUgMzkuNS0yMS40YTEzMS42MyAxMzEuNjMgMCAwIDAgOS4yLTE4LjRxMzUuNTUtODkuNyA3MC42LTE3OS42YTI2LjYyIDI2LjYyIDAgMCAwIDEuNi01LjVjLjQtMi44LS45LTQuNC0zLjctNC40LTYuNi0uMS0xMy4zIDAtMTkuOSAwYTcuNTQgNy41NCAwIDAgMC03LjcgNS4yYy0uNSAxLjQtMS4xIDIuNy0xLjYgNC4xbC0zNC44IDEwMGMtMi41IDcuMi01LjEgMTQuNS03LjcgMjIuMi0uNC0xLjEtLjYtMS43LS45LTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ny4yIDE2Mi43Yy00OC43IDEuOC0xNjkuNSAxNS41LTE2OS41IDExNy41IDAgMTA5LjUgMTM4LjMgMTE0IDE4My41IDQzLjIgNi41IDEwLjIgMzUuNCAzNy41IDQ1LjMgNDYuOGw1Ni44LTU2UzM0MSAyODguOSAzNDEgMjYxLjRWMTE0LjNDMzQxIDg5IDMxNi41IDMyIDIyOC43IDMyIDE0MC43IDMyIDk0IDg3IDk0IDEzNi4zbDczLjUgNi44YzE2LjMtNDkuNSA1NC4yLTQ5LjUgNTQuMi00OS41IDQwLjctLjEgMzUuNSAyOS44IDM1LjUgNjkuMXptMCA4Ni44YzAgODAtODQuMiA2OC04NC4yIDE3LjIgMC00Ny4yIDUwLjUtNTYuNyA4NC4yLTU3Ljh2NDAuNnptMTM2IDE2My41Yy03LjcgMTAtNzAgNjctMTc0LjUgNjdTMzQuMiA0MDguNSA5LjcgMzc5Yy02LjgtNy43IDEtMTEuMyA1LjUtOC4zQzg4LjUgNDE1LjIgMjAzIDQ4OC41IDM4Ny43IDQwMWM3LjUtMy43IDEzLjMgMiA1LjUgMTJ6bTM5LjggMi4yYy02LjUgMTUuOC0xNiAyNi44LTIxLjIgMzEtNS41IDQuNS05LjUgMi43LTYuNS0zLjhzMTkuMy00Ni41IDEyLjctNTVjLTYuNS04LjMtMzctNC4zLTQ4LTMuMi0xMC44IDEtMTMgMi0xNC0uMy0yLjMtNS43IDIxLjctMTUuNSAzNy41LTE3LjUgMTUuNy0xLjggNDEtLjggNDYgNS43IDMuNyA1LjEgMCAyNy4xLTYuNSA0My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWlsaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjEgMzJjLTYxLjkgMC0xMzEuNSAxNi45LTE4NC4yIDU1LjQtNS4xIDMuMS05LjEgOS4yLTcuMiAxOS40IDEuMSA1LjEgNS4xIDI3LjQgMTAuMiAzOS42IDQuMSAxMC4yIDE0LjIgMTAuMiAyMC4zIDYuMSAzMi41LTIyLjMgOTYuNS00Ny43IDE1Mi4zLTQ3LjcgNTcuOSAwIDU4LjkgMjguNCA1OC45IDczLjF2MzguNUMyMDMgMjI3LjcgNzguMiAyNTEgNDYuNyAyNjQuMiAxMS4yIDI4MC41IDE2LjMgMzU3LjcgMTYuMyAzNzZzMTUuMiAxMDQgMTI0LjkgMTA0YzQ3LjggMCAxMTMuNy0yMC43IDE1My4zLTQyLjF2MjUuNGMwIDMgMi4xIDguMiA2LjEgOS4xIDMuMSAxIDUwLjcgMiA1OS45IDJzNjIuNS4zIDY2LjUtLjdjNC4xLTEgNS4xLTYuMSA1LjEtOS4xVjE2OGMtLjEtODAuMy01Ny45LTEzNi0xOTItMTM2em01MC4yIDM0OGMtMjEuNCAxMy4yLTQ4LjcgMjQuNC03OS4xIDI0LjQtNTIuOCAwLTU4LjktMzMuNS01OS00NC43IDAtMTIuMi0zLTQyLjcgMTguMy01Mi45IDI0LjMtMTMuMiA3NS4xLTI5LjQgMTE5LjgtMzMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjAuNTUsMzAxLjkzYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bS0yNjUuMSwwYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bTI3My43LTE0NC40OCw0Ny45NC04M2ExMCwxMCwwLDEsMC0xNy4yNy0xMGgwbC00OC41NCw4NC4wN2EzMDEuMjUsMzAxLjI1LDAsMCwwLTI0Ni41NiwwTDExNi4xOCw2NC40NWExMCwxMCwwLDEsMC0xNy4yNywxMGgwbDQ3Ljk0LDgzQzY0LjUzLDIwMi4yMiw4LjI0LDI4NS41NSwwLDM4NEg1NzZjLTguMjQtOTguNDUtNjQuNTQtMTgxLjc4LTE0Ni44NS0yMjYuNTVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nZWxsaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ny4xIDIxNS40YzExLjctMzIuNiA0NS40LTEyNi45IDQ1LjQtMTU3LjEgMC0yNi42LTE1LjctNDguOS00My43LTQ4LjktNDQuNiAwLTg0LjYgMTMxLjctOTcuMSAxNjMuMUMyNDIgMTQ0IDE5Ni42IDAgMTU2LjYgMGMtMzEuMSAwLTQ1LjcgMjIuOS00NS43IDUxLjcgMCAzNS4zIDM0LjIgMTI2LjggNDYuNiAxNjItNi4zLTIuMy0xMy4xLTQuMy0yMC00LjMtMjMuNCAwLTQ4LjMgMjkuMS00OC4zIDUyLjYgMCA4LjkgNC45IDIxLjQgOCAyOS43LTM2LjkgMTAtNTEuMSAzNC42LTUxLjEgNzEuN0M0NiA0MzUuNiAxMTQuNCA1MTIgMjEwLjYgNTEyYzExOCAwIDE5MS40LTg4LjYgMTkxLjQtMjAyLjkgMC00My4xLTYuOS04Mi01NC45LTkzLjd6TTMxMS43IDEwOGM0LTEyLjMgMjEuMS02NC4zIDM3LjEtNjQuMyA4LjYgMCAxMC45IDguOSAxMC45IDE2IDAgMTkuMS0zOC42IDEyNC42LTQ3LjEgMTQ4bC0zNC02IDMzLjEtOTMuN3pNMTQyLjMgNDguM2MwLTExLjkgMTQuNS00NS43IDQ2LjMgNDcuMWwzNC42IDEwMC4zYy0xNS42LTEuMy0yNy43LTMtMzUuNCAxLjQtMTAuOS0yOC44LTQ1LjUtMTE5LjctNDUuNS0xNDguOHpNMTQwIDI0NGMyOS4zIDAgNjcuMSA5NC42IDY3LjEgMTA3LjQgMCA1LjEtNC45IDExLjQtMTAuNiAxMS40LTIwLjkgMC03Ni45LTc2LjktNzYuOS05Ny43LjEtNy43IDEyLjctMjEuMSAyMC40LTIxLjF6bTE4NC4zIDE4Ni4zYy0yOS4xIDMyLTY2LjMgNDguNi0xMDkuNyA0OC42LTU5LjQgMC0xMDYuMy0zMi42LTEyOC45LTg4LjMtMTcuMS00My40IDMuOC02OC4zIDIwLjYtNjguMyAxMS40IDAgNTQuMyA2MC4zIDU0LjMgNzMuMSAwIDQuOS03LjcgOC4zLTExLjcgOC4zLTE2LjEgMC0yMi40LTE1LjUtNTEuMS01MS40LTI5LjcgMjkuNyAyMC41IDg2LjkgNTguMyA4Ni45IDI2LjEgMCA0My4xLTI0LjIgMzgtNDIgMy43IDAgOC4zLjMgMTEuNy0uNiAxLjEgMjcuMSA5LjEgNTkuNCA0MS43IDYxLjcgMC0uOSAyLTcuMSAyLTcuNCAwLTE3LjQtMTAuNi0zMi42LTEwLjYtNTAuMyAwLTI4LjMgMjEuNy01NS43IDQzLjctNzEuNyA4LTYgMTcuNy05LjcgMjcuMS0xMy4xIDkuNy0zLjcgMjAtOCAyNy40LTE1LjQtMS4xLTExLjItNS43LTIxLjEtMTYuOS0yMS4xLTI3LjcgMC0xMjAuNiA0LTEyMC42LTM5LjcgMC02LjcuMS0xMy4xIDE3LjQtMTMuMSAzMi4zIDAgMTE0LjMgOCAxMzguMyAyOS4xIDE4LjEgMTYuMSAyNC4zIDExMy4yLTMxIDE3NC43em0tOTguNi0xMjZjOS43IDMuMSAxOS43IDQgMjkuNyA2LTcuNCA1LjQtMTQgMTItMjAuMyAxOS4xLTIuOC04LjUtNi4yLTE2LjgtOS40LTI1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3J5Y3JlYXRpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDIzOC4ybC0zLjIgMjguMi0zNC41IDIuMy0yIDE4LjEgMzQuNS0yLjMtMy4yIDI4LjItMzQuNCAyLjItMi4zIDIwLjEgMzQuNC0yLjItMyAyNi4xLTY0LjcgNC4xIDEyLjctMTEzLjJMNTI3IDM2NS4ybC0zMS45IDItMjMuOC0xMTcuOCAzMC4zLTIgMTMuNiA3OS40IDMxLjctODIuNCA5My4xLTYuMnpNNDI2LjggMzcxLjVsMjguMy0xLjhMNDY4IDI0OS42bC0yOC40IDEuOS0xMi44IDEyMHpNMTYyIDM4OC4xbC0xOS40LTM2LTMuNSAzNy40LTI4LjIgMS43IDIuNy0yOS4xYy0xMSAxOC0zMiAzNC4zLTU2LjkgMzUuOEMyMy45IDM5OS45LTMgMzc3IC4zIDMzOS43YzIuNi0yOS4zIDI2LjctNjIuOCA2Ny41LTY1LjQgMzcuNy0yLjQgNDcuNiAyMy4yIDUxLjMgMjguOGwyLjgtMzAuOCAzOC45LTIuNWMyMC4xLTEuMyAzOC43IDMuNyA0Mi41IDIzLjdsMi42LTI2LjYgNjQuOC00LjItMi43IDI3LjktMzYuNCAyLjQtMS43IDE3LjkgMzYuNC0yLjMtMi43IDI3LjktMzYuNCAyLjMtMS45IDE5LjkgMzYuMy0yLjMtMi4xIDIwLjggNTUtMTE3LjIgMjMuOC0xLjZMMzcwLjQgMzY5bDguOS04NS42LTIyLjMgMS40IDIuOS0yNy45IDc1LTQuOS0zIDI4LTI0LjMgMS42LTkuNyA5MS45LTU4IDMuNy00LjMtMTUuNi0zOS40IDIuNS04IDE2LjMtMTI2LjIgNy43em0tNDQuMy03MC4ybC0yNi40IDEuN0M4NC42IDMwNy4yIDc2LjkgMzAzIDY1IDMwMy44Yy0xOSAxLjItMzMuMyAxNy41LTM0LjYgMzMuMy0xLjQgMTYgNy4zIDMyLjUgMjguNyAzMS4yIDEyLjgtLjggMjEuMy04LjYgMjguOS0xOC45bDI3LTEuNyAyLjctMjkuOHptNTYuMS03LjdjMS4yLTEyLjktNy42LTEzLjYtMjYuMS0xMi40bC0yLjcgMjguNWMxNC4yLS45IDI3LjUtMi4xIDI4LjgtMTYuMXptMjEuMSA3MC44bDUuOC02MGMtNSAxMy41LTE0LjcgMjEuMS0yNy45IDI2LjZsMjIuMSAzMy40em0xMzUuNC00NWwtNy45LTM3LjgtMTUuOCAzOS4zIDIzLjctMS41em0tMTcwLjEtNzQuNmwtNC4zLTE3LjUtMzkuNiAyLjYtOC4xIDE4LjItMzEuOSAyLjEgNTctMTIxLjkgMjMuOS0xLjYgMzAuNyAxMDIgOS45LTEwNC43IDI3LTEuOCAzNy44IDYzLjYgNi41LTY2LjYgMjguNS0xLjktNCA0MS4yYzcuNC0xMy41IDIyLjktNDQuNyA2My42LTQ3LjUgNDAuNS0yLjggNTIuNCAyOS4zIDUzLjQgMzAuM2wzLjMtMzIgMzkuMy0yLjdjMTIuNy0uOSAyNy44LjMgMzYuMyA5LjdsLTQuNC0xMS45IDMyLjItMi4yIDEyLjkgNDMuMiAyMy00NS43IDMxLTIuMi00My42IDc4LjQtNC44IDQ0LjMtMjguNCAxLjkgNC44LTQ0LjMtMTUuOC00M2MxIDIyLjMtOS4yIDQwLjEtMzIgNDkuNmwyNS4yIDM4LjgtMzYuNCAyLjQtMTkuMi0zNi44LTQgMzguMy0yOC40IDEuOSAzLjMtMzEuNWMtNi43IDkuMy0xOS43IDM1LjQtNTkuNiAzOC0yNi4yIDEuNy00NS42LTEwLjMtNTUuNC0zOS4ybC00IDQwLjMtMjUgMS42LTM3LjYtNjMuMy02LjMgNjYuMi01Ni44IDMuN3ptMjc2LjYtODIuMWMxMC4yLS43IDE3LjUtMi4xIDIxLjYtNC4zIDQuNS0yLjQgNy02LjQgNy42LTEyLjEuNi01LjMtLjYtOC44LTMuNC0xMC40LTMuNi0yLjEtMTAuNi0yLjgtMjIuOS0ybC0yLjkgMjguOHpNMzI3LjcgMjE0YzUuNiA1LjkgMTIuNyA4LjUgMjEuMyA3LjkgNC43LS4zIDkuMS0xLjggMTMuMy00LjEgNS41LTMgMTAuNi04IDE1LjEtMTQuM2wtMzQuMiAyLjMgMi40LTIzLjkgNjMuMS00LjMgMS4yLTEyLTMxLjIgMi4xYy00LjEtMy43LTcuOC02LjYtMTEuMS04LjEtNC0xLjctOC4xLTIuOC0xMi4yLTIuNS04IC41LTE1LjMgMy42LTIyIDkuMi03LjcgNi40LTEyIDE0LjUtMTIuOSAyNC40LTEuMSA5LjYgMS40IDE3LjMgNy4yIDIzLjN6bS0yMDEuMyA4LjJsMjMuOC0xLjYtOC4zLTM3LjYtMTUuNSAzOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmd1bGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4NS43IDI2OC4xaDc2LjJsLTM4LjEtOTEuNi0zOC4xIDkxLjZ6TTIyMy44IDMyTDE2IDEwNi40bDMxLjggMjc1LjcgMTc2IDk3LjkgMTc2LTk3LjkgMzEuOC0yNzUuN3pNMzU0IDM3My44aC00OC42bC0yNi4yLTY1LjRIMTY4LjZsLTI2LjIgNjUuNEg5My43TDIyMy44IDgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcFN0b3JlSW9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTEyNyAzODQuNWMtNS41IDkuNi0xNy44IDEyLjgtMjcuMyA3LjMtOS42LTUuNS0xMi44LTE3LjgtNy4zLTI3LjNsMTQuMy0yNC43YzE2LjEtNC45IDI5LjMtMS4xIDM5LjYgMTEuNEwxMjcgMzg0LjV6bTEzOC45LTUzLjlIODRjLTExIDAtMjAtOS0yMC0yMHM5LTIwIDIwLTIwaDUxbDY1LjQtMTEzLjItMjAuNS0zNS40Yy01LjUtOS42LTIuMi0yMS44IDcuMy0yNy4zIDkuNi01LjUgMjEuOC0yLjIgMjcuMyA3LjNsOC45IDE1LjQgOC45LTE1LjRjNS41LTkuNiAxNy44LTEyLjggMjcuMy03LjMgOS42IDUuNSAxMi44IDE3LjggNy4zIDI3LjNsLTg1LjggMTQ4LjZoNjIuMWMyMC4yIDAgMzEuNSAyMy43IDIyLjcgNDB6bTk4LjEgMGgtMjlsMTkuNiAzMy45YzUuNSA5LjYgMi4yIDIxLjgtNy4zIDI3LjMtOS42IDUuNS0yMS44IDIuMi0yNy4zLTcuMy0zMi45LTU2LjktNTcuNS05OS43LTc0LTEyOC4xLTE2LjctMjktNC44LTU4IDcuMS02Ny44IDEzLjEgMjIuNyAzMi43IDU2LjcgNTguOSAxMDJoNTJjMTEgMCAyMCA5IDIwIDIwIDAgMTEuMS05IDIwLTIwIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuOSAxMjAuOWw5LjEtMTUuN2M1LjYtOS44IDE4LjEtMTMuMSAyNy45LTcuNSA5LjggNS42IDEzLjEgMTguMSA3LjUgMjcuOWwtODcuNSAxNTEuNWg2My4zYzIwLjUgMCAzMiAyNC4xIDIzLjEgNDAuOEgxMTMuOGMtMTEuMyAwLTIwLjQtOS4xLTIwLjQtMjAuNCAwLTExLjMgOS4xLTIwLjQgMjAuNC0yMC40aDUybDY2LjYtMTE1LjQtMjAuOC0zNi4xYy01LjYtOS44LTIuMy0yMi4yIDcuNS0yNy45IDkuOC01LjYgMjIuMi0yLjMgMjcuOSA3LjVsOC45IDE1Ljd6bS03OC43IDIxOGwtMTkuNiAzNGMtNS42IDkuOC0xOC4xIDEzLjEtMjcuOSA3LjUtOS44LTUuNi0xMy4xLTE4LjEtNy41LTI3LjlsMTQuNi0yNS4yYzE2LjQtNS4xIDI5LjgtMS4yIDQwLjQgMTEuNnptMTY4LjktNjEuN2g1My4xYzExLjMgMCAyMC40IDkuMSAyMC40IDIwLjQgMCAxMS4zLTkuMSAyMC40LTIwLjQgMjAuNGgtMjkuNWwxOS45IDM0LjVjNS42IDkuOCAyLjMgMjIuMi03LjUgMjcuOS05LjggNS42LTIyLjIgMi4zLTI3LjktNy41LTMzLjUtNTguMS01OC43LTEwMS42LTc1LjQtMTMwLjYtMTcuMS0yOS41LTQuOS01OS4xIDcuMi02OS4xIDEzLjQgMjMgMzMuNCA1Ny43IDYwLjEgMTA0ek0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0yMTYgMjQ4YzAgMTE4LjctOTYuMSAyMTYtMjE2IDIxNi0xMTguNyAwLTIxNi05Ni4xLTIxNi0yMTYgMC0xMTguNyA5Ni4xLTIxNiAyMTYtMjE2IDExOC43IDAgMjE2IDk2LjEgMjE2IDIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIuMSAyMzkuMWMyMi4yIDAgMjkgMi44IDMzLjUgMTQuNmguOHYtMjIuOWMwLTExLjMtNC44LTE1LjQtMTcuOS0xNS40LTExLjMgMC0xNC40IDIuNS0xNS4xIDEyLjhINC44Yy4zLTEzLjkgMS41LTE5LjEgNS44LTI0LjRDMTcuOSAxOTUgMjkuNSAxOTIgNTYuNyAxOTJjMzMgMCA0Ny4xIDUgNTMuOSAxOC45IDIgNC4zIDQgMTUuNiA0IDIzLjd2NzYuM0g3Ni4zbDEuMy0xOS4xaC0xYy01LjMgMTUuNi0xMy42IDIwLjQtMzUuNSAyMC40LTMwLjMgMC00MS4xLTEwLjEtNDEuMS0zNy4zIDAtMjUuMiAxMi4zLTM1LjggNDIuMS0zNS44em0xNy4xIDQ4LjFjMTMuMSAwIDE2LjktMyAxNi45LTEzLjQgMC05LjEtNC4zLTExLjYtMTkuNi0xMS42LTEzLjEgMC0xNy45IDMtMTcuOSAxMi4xLS4xIDEwLjQgMy43IDEyLjkgMjAuNiAxMi45em03Ny44LTk0LjloMzguM2wtMS41IDIwLjZoLjhjOS4xLTE3LjEgMTUuOS0yMC45IDM3LjUtMjAuOSAxNC40IDAgMjQuNyAzIDMxLjUgOS4xIDkuOCA4LjYgMTIuOCAyMC40IDEyLjggNDguMSAwIDMwLTMgNDMuMS0xMi4xIDUyLjktNi44IDcuMy0xNi40IDEwLjEtMzMuMiAxMC4xLTIwLjQgMC0yOS4yLTUuNS0zMy44LTIxLjJoLS44djcwLjNIMTM3di0xNjl6bTgwLjkgNjAuN2MwLTI3LjUtMy4zLTMyLjUtMjAuNy0zMi41LTE2LjkgMC0yMC43IDUtMjAuNyAyOC43IDAgMjggMy41IDMzLjUgMjEuMiAzMy41IDE2LjQgMCAyMC4yLTUuNiAyMC4yLTI5Ljd6bTU3LjktNjAuN2gzOC4zbC0xLjUgMjAuNmguOGM5LjEtMTcuMSAxNS45LTIwLjkgMzcuNS0yMC45IDE0LjQgMCAyNC43IDMgMzEuNSA5LjEgOS44IDguNiAxMi44IDIwLjQgMTIuOCA0OC4xIDAgMzAtMyA0My4xLTEyLjEgNTIuOS02LjggNy4zLTE2LjQgMTAuMS0zMy4zIDEwLjEtMjAuNCAwLTI5LjItNS41LTMzLjgtMjEuMmgtLjh2NzAuM2gtMzkuNXYtMTY5em04MC45IDYwLjdjMC0yNy41LTMuMy0zMi41LTIwLjctMzIuNS0xNi45IDAtMjAuNyA1LTIwLjcgMjguNyAwIDI4IDMuNSAzMy41IDIxLjIgMzMuNSAxNi40IDAgMjAuMi01LjYgMjAuMi0yOS43em01My44LTMuOGMwLTI1LjQgMy4zLTM3LjggMTIuMy00NS44IDguOC04LjEgMjIuMi0xMS4zIDQ1LjEtMTEuMyA0Mi44IDAgNTUuNyAxMi44IDU1LjcgNTUuN3YxMS4xaC03NS4zYy0uMyAyLS4zIDQtLjMgNC44IDAgMTYuOSA0LjUgMjEuOSAyMC4xIDIxLjkgMTMuOSAwIDE3LjktMyAxNy45LTEzLjloMzcuNXYyLjNjMCA5LjgtMi41IDE4LjktNi44IDI0LjctNy4zIDkuOC0xOS42IDEzLjYtNDQuMyAxMy42LTI3LjUgMC00MS42LTMuMy01MC42LTEyLjMtOC41LTguNS0xMS4zLTIxLjMtMTEuMy01MC44em03Ni40LTExLjZjLS4zLTEuOC0uMy0zLjMtLjMtMy44IDAtMTIuMy0zLjMtMTQuNi0xOS42LTE0LjYtMTQuNCAwLTE3LjEgMy0xOC4xIDE1LjFsLS4zIDMuM2gzOC4zem01NS42LTQ1LjNoMzguM2wtMS44IDE5LjloLjdjNi44LTE0LjkgMTQuNC0yMC4yIDI5LjctMjAuMiAxMC44IDAgMTkuMSAzLjMgMjMuNCA5LjMgNS4zIDcuMyA2LjggMTQuNCA2LjggMzQgMCAxLjUgMCA1IC4yIDkuM2gtMzVjLjMtMS44LjMtMy4zLjMtNCAwLTE1LjQtMi0xOS40LTEwLjMtMTkuNC02LjMgMC0xMC44IDMuMy0xMy4xIDkuMy0xIDMtMSA0LjMtMSAxMi4zdjY4aC0zOC4zVjE5Mi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTYuOSAxNTguNWMtNy41IDguOS0xOS41IDE1LjktMzEuNSAxNC45LTEuNS0xMiA0LjQtMjQuOCAxMS4zLTMyLjYgNy41LTkuMSAyMC42LTE1LjYgMzEuMy0xNi4xIDEuMiAxMi40LTMuNyAyNC43LTExLjEgMzMuOG0xMC45IDE3LjJjLTE3LjQtMS0zMi4zIDkuOS00MC41IDkuOS04LjQgMC0yMS05LjQtMzQuOC05LjEtMTcuOS4zLTM0LjUgMTAuNC00My42IDI2LjUtMTguOCAzMi4zLTQuOSA4MCAxMy4zIDEwNi4zIDguOSAxMyAxOS41IDI3LjMgMzMuNSAyNi44IDEzLjMtLjUgMTguNS04LjYgMzQuNS04LjYgMTYuMSAwIDIwLjggOC42IDM0LjggOC40IDE0LjUtLjMgMjMuNi0xMyAzMi41LTI2IDEwLjEtMTQuOCAxNC4zLTI5LjEgMTQuNS0yOS45LS4zLS4zLTI4LTEwLjktMjguMy00Mi45LS4zLTI2LjggMjEuOS0zOS41IDIyLjktNDAuMy0xMi41LTE4LjYtMzItMjAuNi0zOC44LTIxLjFtMTAwLjQtMzYuMnYxOTQuOWgzMC4zdi02Ni42aDQxLjljMzguMyAwIDY1LjEtMjYuMyA2NS4xLTY0LjNzLTI2LjQtNjQtNjQuMS02NGgtNzMuMnptMzAuMyAyNS41aDM0LjljMjYuMyAwIDQxLjMgMTQgNDEuMyAzOC42cy0xNSAzOC44LTQxLjQgMzguOGgtMzQuOFYxNjV6bTE2Mi4yIDE3MC45YzE5IDAgMzYuNi05LjYgNDQuNi0yNC45aC42djIzLjRoMjh2LTk3YzAtMjguMS0yMi41LTQ2LjMtNTcuMS00Ni4zLTMyLjEgMC01NS45IDE4LjQtNTYuOCA0My42aDI3LjNjMi4zLTEyIDEzLjQtMTkuOSAyOC42LTE5LjkgMTguNSAwIDI4LjkgOC42IDI4LjkgMjQuNXYxMC44bC0zNy44IDIuM2MtMzUuMSAyLjEtNTQuMSAxNi41LTU0LjEgNDEuNS4xIDI1LjIgMTkuNyA0MiA0Ny44IDQyem04LjItMjMuMWMtMTYuMSAwLTI2LjQtNy44LTI2LjQtMTkuNiAwLTEyLjMgOS45LTE5LjQgMjguOC0yMC41bDMzLjYtMi4xdjExYzAgMTguMi0xNS41IDMxLjItMzYgMzEuMnptMTAyLjUgNzQuNmMyOS41IDAgNDMuNC0xMS4zIDU1LjUtNDUuNEw2NDAgMTkzaC0zMC44bC0zNS42IDExNS4xaC0uNkw1MzcuNCAxOTNoLTMxLjZMNTU3IDMzNC45bC0yLjggOC42Yy00LjYgMTQuNi0xMi4xIDIwLjMtMjUuNSAyMC4zLTIuNCAwLTctLjMtOC45LS41djIzLjRjMS44LjQgOS4zLjcgMTEuNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNyAyNjguN2MtLjItMzYuNyAxNi40LTY0LjQgNTAtODQuOC0xOC44LTI2LjktNDcuMi00MS43LTg0LjctNDQuNi0zNS41LTIuOC03NC4zIDIwLjctODguNSAyMC43LTE1IDAtNDkuNC0xOS43LTc2LjQtMTkuN0M2My4zIDE0MS4yIDQgMTg0LjggNCAyNzMuNXEwIDM5LjMgMTQuNCA4MS4yYzEyLjggMzYuNyA1OSAxMjYuNyAxMDcuMiAxMjUuMiAyNS4yLS42IDQzLTE3LjkgNzUuOC0xNy45IDMxLjggMCA0OC4zIDE3LjkgNzYuNCAxNy45IDQ4LjYtLjcgOTAuNC04Mi41IDEwMi42LTExOS4zLTY1LjItMzAuNy02MS43LTkwLTYxLjctOTEuOXptLTU2LjYtMTY0LjJjMjcuMy0zMi40IDI0LjgtNjEuOSAyNC03Mi41LTI0LjEgMS40LTUyIDE2LjQtNjcuOSAzNC45LTE3LjUgMTkuOC0yNy44IDQ0LjMtMjUuNiA3MS45IDI2LjEgMiA0OS45LTExLjQgNjkuNS0zNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnRzdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMzc3LjRsNDMgNzQuM0E1MS4zNSA1MS4zNSAwIDAgMCA5MC45IDQ4MGgyODUuNGwtNTkuMi0xMDIuNnpNNTAxLjggMzUwTDMzNS42IDU5LjNBNTEuMzggNTEuMzggMCAwIDAgMjkwLjIgMzJoLTg4LjRsMjU3LjMgNDQ3LjYgNDAuNy03MC41YzEuOS0zLjIgMjEtMjkuNyAyLTU5LjF6TTI3NSAzMDQuNWwtMTE1LjUtMjAwTDQ0IDMwNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBc3ltbWV0cmlrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxNy41IDMwOS4yYzM4LjgtNDAgNTguMS04MCA1OC41LTExNi4xLjgtNjUuNS01OS40LTExOC4yLTE2OS40LTEzNUMyNzcuOSAzOC40IDExOC4xIDczLjYgMCAxNDAuNSA1MiAxMTQgMTEwLjYgOTIuMyAxNzAuNyA4Mi4zYzc0LjUtMjAuNSAxNTMtMjUuNCAyMjEuMy0xNC44QzU0NC41IDkxLjMgNTg4LjggMTk1IDQ5MC44IDI5OS4yYy0xMC4yIDEwLjgtMjIgMjEuMS0zNSAzMC42TDMwNC45IDEwMy40IDExNC43IDM4OC45Yy02NS42LTI5LjQtNzYuNS05MC4yLTE5LjEtMTUxLjIgMjAuOC0yMi4yIDQ4LjMtNDEuOSA3OS41LTU4LjEgMjAtMTIuMiAzOS43LTIyLjYgNjItMzAuNy02NS4xIDIwLjMtMTIyLjcgNTIuOS0xNjEuNiA5Mi45LTI3LjcgMjguNi00MS40IDU3LjEtNDEuNyA4Mi45LS41IDM1LjEgMjMuNCA2NS4xIDY4LjQgODNsLTM0LjUgNTEuN2gxMDEuNmwyMi0zNC40YzIyLjIgMSA0NS4zIDAgNjguNi0yLjdsLTIyLjggMzcuMWgxMzUuNUwzNDAgNDA2LjNjMTguNi01LjMgMzYuOS0xMS41IDU0LjUtMTguN2w0NS45IDcxLjhINTQyTDQ2OC42IDM0OWMxOC41LTEyLjEgMzUtMjUuNSA0OC45LTM5Ljh6bS0xODcuNiA4MC41bC0yNS00MC42LTMyLjcgNTMuM2MtMjMuNCAzLjUtNDYuNyA1LjEtNjkuMiA0LjRsMTAxLjktMTU5LjMgNzguNyAxMjNjLTE3LjIgNy40LTM1LjMgMTMuOS01My43IDE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0bGFzc2lhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuMiAyMzYuNGMtNy43LTguMi0xOS43LTcuNy0yNC44IDIuOEwxLjYgNDkwLjJjLTUgMTAgMi40IDIxLjcgMTMuNCAyMS43aDE3NWM1LjguMSAxMS0zLjIgMTMuNC04LjQgMzcuOS03Ny44IDE1LjEtMTk2LjMtNTEuMi0yNjcuMXpNMjQ0LjQgOC4xYy0xMjIuMyAxOTMuNC04LjUgMzQ4LjYgNjUgNDk1LjUgMi41IDUuMSA3LjcgOC40IDEzLjQgOC40SDQ5N2MxMS4yIDAgMTguNC0xMS44IDEzLjQtMjEuNyAwIDAtMjM0LjUtNDcwLjYtMjQwLjQtNDgyLjMtNS4zLTEwLjYtMTguOC0xMC44LTI1LjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXVkaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMTk5Ljl2NTRsLTMyMCAyMDBMMCAyNTR2LTU0bDMyMCAyMDAgMzIwLTIwMC4xem0tMTk0LjUgNzJsNDcuMS0yOS40Yy0zNy4yLTU1LjgtMTAwLjctOTIuNi0xNzIuNy05Mi42LTcyIDAtMTM1LjUgMzYuNy0xNzIuNiA5Mi40aC4zYzIuNS0yLjMgNS4xLTQuNSA3LjctNi43IDg5LjctNzQuNCAyMTkuNC01OC4xIDI5MC4yIDM2LjN6bS0yMjAuMSAxOC44YzE2LjktMTEuOSAzNi41LTE4LjcgNTcuNC0xOC43IDM0LjQgMCA2NS4yIDE4LjQgODYuNCA0Ny42bDQ1LjQtMjguNGMtMjAuOS0yOS45LTU1LjYtNDkuNS05NC44LTQ5LjUtMzguOSAwLTczLjQgMTkuNC05NC40IDQ5ek0xMDMuNiAxNjEuMWMxMzEuOC0xMDQuMyAzMTguMi03Ni40IDQxNy41IDYyLjFsLjcgMSA0OC44LTMwLjRDNTE3LjEgMTEyLjEgNDI0LjggNTguMSAzMTkuOSA1OC4xYy0xMDMuNSAwLTE5Ni42IDUzLjUtMjUwLjUgMTM1LjYgOS45LTEwLjUgMjIuNy0yMy41IDM0LjItMzIuNnptNDY3IDMyLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF1dG9wcmVmaXhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNCAxNmwtMTYxIDQ4MGg3Ny41bDI1LjQtODEuNGgxMTkuNUw0MDUgNDk2aDc3LjVMMzE4LjQgMTZ6bS00MC4zIDM0MS45bDQxLjItMTMwLjRoMS41bDQwLjkgMTMwLjRoLTgzLjZ6TTY0MCA0MDVsLTEwLTMxLjRMNDYyLjEgMzU4bDE5LjQgNTYuNUw2NDAgNDA1em0tNDYyLjEtNDdMMTAgMzczLjcgMCA0MDVsMTU4LjUgOS40IDE5LjQtNTYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXZpYW5leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTMuMSAzMmgtMzEyYy0zOC45IDAtNzYuMiAzMS4yLTgzLjMgNjkuN0wxLjIgNDEwLjNDLTUuOSA0NDguOCAxOS45IDQ4MCA1OC45IDQ4MGgzMTJjMzguOSAwIDc2LjItMzEuMiA4My4zLTY5LjdsNTYuNy0zMDguNWM3LTM4LjYtMTguOC02OS44LTU3LjgtNjkuOHptLTU4LjIgMzQ3LjNsLTMyIDEzLjUtMTE1LjQtMTEwYy0xNC43IDEwLTI5LjIgMTkuNS00MS43IDI3LjFsMjIuMSA2NC4yLTE3LjkgMTIuNy00MC42LTYxLTUyLjQtNDguMSAxNS43LTE1LjQgNTggMzEuMWM5LjMtMTAuNSAyMC44LTIyLjYgMzIuOC0zNC45TDIwMyAyMjguOWwtNjguOC05OS44IDE4LjgtMjguOSA4LjktNC44TDI2NSAyMDcuOGw0LjkgNC41YzE5LjQtMTguOCAzMy44LTMyLjQgMzMuOC0zMi40IDcuNy02LjUgMjEuNS0yLjkgMzAuNyA3LjkgOSAxMC41IDEwLjYgMjQuNyAyLjcgMzEuMy0xLjggMS4zLTE1LjUgMTEuNC0zNS4zIDI1LjZsNC41IDcuMyA5NC45IDExOS40LTYuMyA3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF2aWF0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDcuMiAyODMuNWwtMTktNDEuOEgzNi4xbC0xOSA0MS44SDBsNjIuMi0xMzEuNCA2Mi4yIDEzMS40aC0xNy4yem0tNDUtOTguMWwtMTkuNiA0Mi41aDM5LjJsLTE5LjYtNDIuNXptMTEyLjcgMTAyLjRsLTYyLjItMTMxLjRoMTcuMWw0NS4xIDk2IDQ1LjEtOTZoMTdsLTYyLjEgMTMxLjR6bTgwLjYtNC4zVjE1Ni40SDI3MXYxMjcuMWgtMTUuNXptMjA5LjEtMTE1LjZ2MTE1LjZoLTE3LjNWMTY3LjloLTQxLjJ2LTExLjVoOTkuNnYxMS41aC00MS4xek02NDAgMjE4LjhjMCA5LjItMS43IDE3LjgtNS4xIDI1LjgtMy40IDgtOC4yIDE1LjEtMTQuMiAyMS4xLTYgNi0xMy4xIDEwLjgtMjEuMSAxNC4yLTggMy40LTE2LjYgNS4xLTI1LjggNS4xcy0xNy44LTEuNy0yNS44LTUuMWMtOC0zLjQtMTUuMS04LjItMjEuMS0xNC4yLTYtNi0xMC44LTEzLTE0LjItMjEuMS0zLjQtOC01LjEtMTYuNi01LjEtMjUuOHMxLjctMTcuOCA1LjEtMjUuOGMzLjQtOCA4LjItMTUuMSAxNC4yLTIxLjEgNi02IDEzLTguNCAyMS4xLTExLjkgOC0zLjQgMTYuNi01LjEgMjUuOC01LjFzMTcuOCAxLjcgMjUuOCA1LjFjOCAzLjQgMTUuMSA1LjggMjEuMSAxMS45IDYgNiAxMC43IDEzLjEgMTQuMiAyMS4xIDMuNCA4IDUuMSAxNi42IDUuMSAyNS44em0tMTUuNSAwYzAtNy4zLTEuMy0xNC0zLjktMjAuMy0yLjYtNi4zLTYuMi0xMS43LTEwLjgtMTYuMy00LjYtNC42LTEwLTguMi0xNi4yLTEwLjktNi4yLTIuNy0xMi44LTQtMTkuOC00cy0xMy42IDEuMy0xOS44IDRjLTYuMiAyLjctMTEuNiA2LjMtMTYuMiAxMC45LTQuNiA0LjYtOC4yIDEwLTEwLjggMTYuMy0yLjYgNi4zLTMuOSAxMy4xLTMuOSAyMC4zIDAgNy4zIDEuMyAxNCAzLjkgMjAuMyAyLjYgNi4zIDYuMiAxMS43IDEwLjggMTYuMyA0LjYgNC42IDEwIDguMiAxNi4yIDEwLjkgNi4yIDIuNyAxMi44IDQgMTkuOCA0czEzLjYtMS4zIDE5LjgtNGM2LjItMi43IDExLjYtNi4zIDE2LjItMTAuOSA0LjYtNC42IDguMi0xMCAxMC44LTE2LjMgMi42LTYuMyAzLjktMTMuMSAzLjktMjAuM3ptLTk0LjggOTYuN3YtNi4zbDg4LjktMTAtMjQyLjkgMTMuNGMuNi0yLjIgMS4xLTQuNiAxLjQtNy4yLjMtMiAuNS00LjIuNi02LjVsNjQuOC04LjEtNjQuOSAxLjljMC0uNC0uMS0uNy0uMS0xLjEtMi44LTE3LjItMjUuNS0yMy43LTI1LjUtMjMuN2wtMS4xLTI2LjNoMjMuOGwxOSA0MS44aDE3LjFMMzQ4LjYgMTUybC02Mi4yIDEzMS40aDE3LjFsMTktNDEuOGgyMy42TDM0NSAyNjhzLTIyLjcgNi41LTI1LjUgMjMuN2MtLjEuMy0uMS43LS4xIDEuMWwtNjQuOS0xLjkgNjQuOCA4LjFjLjEgMi4zLjMgNC40LjYgNi41LjMgMi42LjggNSAxLjQgNy4yTDc4LjQgMjk5LjJsODguOSAxMHY2LjNjLTUuOS45LTEwLjUgNi0xMC41IDEyLjIgMCA2LjggNS42IDEyLjQgMTIuNCAxMi40IDYuOCAwIDEyLjQtNS42IDEyLjQtMTIuNCAwLTYuMi00LjYtMTEuMy0xMC41LTEyLjJ2LTUuOGw4MC4zIDl2NS40Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi00LjlsMjguNCAzLjJ2MjMuN2gtNS45VjM2MGg1Ljl2LTYuNmg1djYuNmg1Ljl2LTEzLjhoLTUuOVYzMjNsMzguMyA0LjNjOC4xIDExLjQgMTkgMTMuNiAxOSAxMy42bC0uMSA2LjctNS4xLjItLjEgMTIuMWg0LjFsLjEtNWg1LjJsLjEgNWg0LjFsLS4xLTEyLjEtNS4xLS4yLS4xLTYuN3MxMC45LTIuMSAxOS0xMy42bDM4LjMtNC4zdjIzLjJoLTUuOVYzNjBoNS45di02LjZoNXY2LjZoNS45di0xMy44aC01Ljl2LTIzLjdsMjguNC0zLjJ2NC45Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi01LjRsODAuMy05djUuOGMtNS45LjktMTAuNSA2LTEwLjUgMTIuMiAwIDYuOCA1LjYgMTIuNCAxMi40IDEyLjQgNi44IDAgMTIuNC01LjYgMTIuNC0xMi40LS4yLTYuMy00LjctMTEuNC0xMC43LTEyLjN6bS0yMDAuOC04Ny42bDE5LjYtNDIuNSAxOS42IDQyLjVoLTE3LjlsLTEuNy00MC4zLTEuNyA0MC4zaC0xNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgwLjQxIDIwMy4wMWMtLjcyIDIyLjY1IDEwLjYgMzIuNjggMTAuODggMzkuMDVhOC4xNjQgOC4xNjQgMCAwIDEtNC4xIDYuMjdsLTEyLjggOC45NmExMC42NiAxMC42NiAwIDAgMS01LjYzIDEuOTJjLS40My0uMDItOC4xOSAxLjgzLTIwLjQ4LTI1LjYxYTc4LjYwOCA3OC42MDggMCAwIDEtNjIuNjEgMjkuNDVjLTE2LjI4Ljg5LTYwLjQtOS4yNC01OC4xMy01Ni4yMS0xLjU5LTM4LjI4IDM0LjA2LTYyLjA2IDcwLjkzLTYwLjA1IDcuMS4wMiAyMS42LjM3IDQ2Ljk5IDYuMjd2LTE1LjYyYzIuNjktMjYuNDYtMTQuNy00Ni45OS00NC44MS00My45MS0yLjQuMDEtMTkuNC0uNS00NS44NCAxMC4xMS03LjM2IDMuMzgtOC4zIDIuODItMTAuNzUgMi44Mi03LjQxIDAtNC4zNi0yMS40OC0yLjk0LTI0LjIgNS4yMS02LjQgMzUuODYtMTguMzUgNjUuOTQtMTguMThhNzYuODU3IDc2Ljg1NyAwIDAgMSA1NS42OSAxNy4yOCA3MC4yODUgNzAuMjg1IDAgMCAxIDE3LjY3IDUyLjM2bC0uMDEgNjkuMjl6TTkzLjk5IDIzNS40YzMyLjQzLS40NyA0Ni4xNi0xOS45NyA0OS4yOS0zMC40NyAyLjQ2LTEwLjA1IDIuMDUtMTYuNDEgMi4wNS0yNy40LTkuNjctMi4zMi0yMy41OS00Ljg1LTM5LjU2LTQuODctMTUuMTUtMS4xNC00Mi44MiA1LjYzLTQxLjc0IDMyLjI2LTEuMjQgMTYuNzkgMTEuMTIgMzEuNCAyOS45NiAzMC40OHptMTcwLjkyIDIzLjA1Yy03Ljg2LjcyLTExLjUyLTQuODYtMTIuNjgtMTAuMzdsLTQ5LjgtMTY0LjY1Yy0uOTctMi43OC0xLjYxLTUuNjUtMS45Mi04LjU4YTQuNjEgNC42MSAwIDAgMSAzLjg2LTUuMjVjLjI0LS4wNC0yLjEzIDAgMjIuMjUgMCA4Ljc4LS44OCAxMS42NCA2LjAzIDEyLjU1IDEwLjM3bDM1LjcyIDE0MC44MyAzMy4xNi0xNDAuODNjLjUzLTMuMjIgMi45NC0xMS4wNyAxMi44LTEwLjI0aDE3LjE2YzIuMTctLjE4IDExLjExLS41IDEyLjY4IDEwLjM3bDMzLjQyIDE0Mi42M0w0MjAuOTggODAuMWMuNDgtMi4xOCAyLjcyLTExLjM3IDEyLjY4LTEwLjM3aDE5LjcyYy44NS0uMTMgNi4xNS0uODEgNS4yNSA4LjU4LS40MyAxLjg1IDMuNDEtMTAuNjYtNTIuNzUgMTY5LjktMS4xNSA1LjUxLTQuODIgMTEuMDktMTIuNjggMTAuMzdoLTE4LjY5Yy0xMC45NCAxLjE1LTEyLjUxLTkuNjYtMTIuNjgtMTAuNzVMMzI4LjY3IDExMC43bC0zMi43OCAxMzYuOTljLS4xNiAxLjA5LTEuNzMgMTEuOS0xMi42OCAxMC43NWgtMTguM3ptMjczLjQ4IDUuNjNjLTUuODguMDEtMzMuOTItLjMtNTcuMzYtMTIuMjlhMTIuODAyIDEyLjgwMiAwIDAgMS03LjgxLTExLjkxdi0xMC43NWMwLTguNDUgNi4yLTYuOSA4LjgzLTUuODkgMTAuMDQgNC4wNiAxNi40OCA3LjE0IDI4LjgxIDkuNiAzNi42NSA3LjUzIDUyLjc3LTIuMyA1Ni43Mi00LjQ4IDEzLjE1LTcuODEgMTQuMTktMjUuNjggNS4yNS0zNC45NS0xMC40OC04Ljc5LTE1LjQ4LTkuMTItNTMuMTMtMjEtNC42NC0xLjI5LTQzLjctMTMuNjEtNDMuNzktNTIuMzYtLjYxLTI4LjI0IDI1LjA1LTU2LjE4IDY5LjUyLTU1Ljk1IDEyLjY3LS4wMSA0Ni40MyA0LjEzIDU1LjU3IDE1LjYyIDEuMzUgMi4wOSAyLjAyIDQuNTUgMS45MiA3LjA0djEwLjExYzAgNC40NC0xLjYyIDYuNjYtNC44NyA2LjY2LTcuNzEtLjg2LTIxLjM5LTExLjE3LTQ5LjE2LTEwLjc1LTYuODktLjM2LTM5Ljg5LjkxLTM4LjQxIDI0Ljk3LS40MyAxOC45NiAyNi42MSAyNi4wNyAyOS43IDI2Ljg5IDM2LjQ2IDEwLjk3IDQ4LjY1IDEyLjc5IDYzLjEyIDI5LjU4IDE3LjE0IDIyLjI1IDcuOSA0OC4zIDQuMzUgNTUuNDQtMTkuMDggMzcuNDktNjguNDIgMzQuNDQtNjkuMjYgMzQuNDJ6bTQwLjIgMTA0Ljg2Yy03MC4wMyA1MS43Mi0xNzEuNjkgNzkuMjUtMjU4LjQ5IDc5LjI1QTQ2OS4xMjcgNDY5LjEyNyAwIDAgMSAyLjgzIDMyNy40NmMtNi41My01Ljg5LS43Ny0xMy45NiA3LjE3LTkuNDdhNjM3LjM3IDYzNy4zNyAwIDAgMCAzMTYuODggODQuMTIgNjMwLjIyIDYzMC4yMiAwIDAgMCAyNDEuNTktNDkuNTVjMTEuNzgtNSAyMS43NyA3LjggMTAuMTIgMTYuMzh6bTI5LjE5LTMzLjI5Yy04Ljk2LTExLjUyLTU5LjI4LTUuMzgtODEuODEtMi42OS02Ljc5Ljc3LTcuOTQtNS4xMi0xLjc5LTkuNDcgNDAuMDctMjguMTcgMTA1Ljg4LTIwLjEgMTEzLjQ0LTEwLjYzIDcuNTUgOS40Ny0yLjA1IDc1LjQxLTM5LjU2IDEwNi45MS01Ljc2IDQuODctMTEuMjcgMi4zLTguNzEtNC4xIDguNDQtMjEuMjUgMjcuMzktNjguNDkgMTguNDMtODAuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRjYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhabTQ4LjIsMzI2LjFoLTE4MUwyMDcuOSwxNzhoMTgxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0bGVOZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LjYxIDIyNS42MmMyNi44Ny4xOCAzNS41Ny03LjQzIDM4LjkyLTEyLjM3IDEyLjQ3LTE2LjMyLTcuMDYtNDcuNi01Mi44NS03MS4zMyAxNy43Ni0zMy41OCAzMC4xMS02My42OCAzNi4zNC04NS4zIDMuMzgtMTEuODMgMS4wOS0xOSAuNDUtMjAuMjUtMS43MiAxMC41Mi0xNS44NSA0OC40Ni00OC4yIDEwMC4wNS0yNS0xMS4yMi01Ni41Mi0yMC4xLTkzLjc3LTIzLjgtOC45NC0xNi45NC0zNC44OC02My44Ni02MC40OC04OC45M0MyNTIuMTggNy4xNCAyMzguNyAxLjA3IDIyOC4xOC4yMmgtLjA1Yy0xMy44My0xLjU1LTIyLjY3IDUuODUtMjcuNCAxMS0xNy4yIDE4LjUzLTI0LjMzIDQ4Ljg3LTI1IDg0LjA3LTcuMjQtMTIuMzUtMTcuMTctMjQuNjMtMjguNS0yNS45M2gtLjE4Yy0yMC42Ni0zLjQ4LTM4LjM5IDI5LjIyLTM2IDgxLjI5LTM4LjM2IDEuMzgtNzEgNS43NS05MyAxMS4yMy05LjkgMi40NS0xNi4yMiA3LjI3LTE3Ljc2IDkuNzIgMS0uMzggMjIuNC05LjIyIDExMS41Ni05LjIyIDUuMjIgNTMgMjkuNzUgMTAxLjgyIDI2IDkzLjE5LTkuNzMgMTUuNC0zOC4yNCA2Mi4zNi00Ny4zMSA5Ny43LTUuODcgMjIuODgtNC4zNyAzNy42MS4xNSA0Ny4xNCA1LjU3IDEyLjc1IDE2LjQxIDE2LjcyIDIzLjIgMTguMjYgMjUgNS43MSA1NS4zOC0zLjYzIDg2LjctMjEuMTQtNy41MyAxMi44NC0xMy45IDI4LjUxLTkuMDYgMzkuMzQgNy4zMSAxOS42NSA0NC40OSAxOC42NiA4OC40NC05LjQ1IDIwLjE4IDMyLjE4IDQwLjA3IDU3Ljk0IDU1LjcgNzQuMTJhMzkuNzkgMzkuNzkgMCAwIDAgOC43NSA3LjA5YzUuMTQgMy4yMSA4LjU4IDMuMzcgOC41OCAzLjM3LTguMjQtNi43NS0zNC0zOC02Mi41NC05MS43OCAyMi4yMi0xNiA0NS42NS0zOC44NyA2Ny40Ny02OS4yNyAxMjIuODIgNC42IDE0My4yOS0yNC43NiAxNDgtMzEuNjQgMTQuNjctMTkuODggMy40My01Ny40NC01Ny4zMi05My42OXptLTc3Ljg1IDEwNi4yMmMyMy44MS0zNy43MSAzMC4zNC02Ny43NyAyOS40NS05Mi4zMyAyNy44NiAxNy41NyA0Ny4xOCAzNy41OCA0OS4wNiA1OC44MyAxLjE0IDEyLjkzLTguMSAyOS4xMi03OC41MSAzMy41ek0yMTYuOSAzODcuNjljOS43Ni02LjIzIDE5LjUzLTEzLjEyIDI5LjItMjAuNDkgNi42OCAxMy4zMyAxMy42IDI2LjEgMjAuNiAzOC4xOS00MC42IDIxLjg2LTY4Ljg0IDEyLjc2LTQ5LjgtMTcuN3ptMjE1LTE3MS4zNWMtMTAuMjktNS4zNC0yMS4xNi0xMC4zNC0zMi4zOC0xNS4wNWE3MjIuNDU5IDcyMi40NTkgMCAwIDAgMjIuNzQtMzYuOWMzOS4wNiAyNC4xIDQ1LjkgNTMuMTggOS42NCA1MS45NXpNMjc5LjE4IDM5OGMtNS41MS0xMS4zNS0xMS0yMy41LTE2LjUtMzYuNDQgNDMuMjUgMS4yNyA2Mi40Mi0xOC43MyA2My4yOC0yMC40MSAwIC4wNy0yNSAxNS42NC02Mi41MyAxMi4yNWE3MTguNzggNzE4Ljc4IDAgMCAwIDg1LjA2LTg0cTEzLjA2LTE1LjMxIDI0LjkzLTMxLjExYy0uMzYtLjI5LTEuNTQtMy0xNi41MS0xMi01MS43IDYwLjI3LTEwMi4zNCA5OC0xMzIuNzUgMTE1LjkyLTIwLjU5LTExLjE4LTQwLjg0LTMxLjc4LTU1LjcxLTYxLjQ5LTIwLTM5LjkyLTMwLTgyLjM5LTMxLjU3LTExNi4wNyAxMi4zLjkxIDI1LjI3IDIuMTcgMzguODUgMy44OC0yMi4yOSAzNi44LTE0LjM5IDYzLTEzLjQ3IDY0LjIzIDAtLjA3LS45NS0yOS4xNyAyMC4xNC01OS41N2E2OTUuMjMgNjk1LjIzIDAgMCAwIDQ0LjY3IDE1Mi44NGMuOTMtLjM4IDEuODQuODggMTguNjctOC4yNS0yNi4zMy03NC40Ny0zMy43Ni0xMzguMTctMzQtMTczLjQzIDIwLTEyLjQyIDQ4LjE4LTE5LjggODEuNjMtMTcuODEgNDQuNTcgMi42NyA4Ni4zNiAxNS4yNSAxMTYuMzIgMzAuNzFxLTEwLjY5IDE1LjY2LTIzLjMzIDMyLjQ3QzM2NS42MyAxNTIgMzM5LjEgMTQ1Ljg0IDMzNy41IDE0NmMuMTEgMCAyNS45IDE0LjA3IDQxLjUyIDQ3LjIyYTcxNy42MyA3MTcuNjMgMCAwIDAtMTE1LjM0LTMxLjcxIDY0Ni42MDggNjQ2LjYwOCAwIDAgMC0zOS4zOS02LjA1Yy0uMDcuNDUtMS44MSAxLjg1LTIuMTYgMjAuMzNDMzAwIDE5MC4yOCAzNTguNzggMjE1LjY4IDM4OS4zNiAyMzNjLjc0IDIzLjU1LTYuOTUgNTEuNjEtMjUuNDEgNzkuNTctMjQuNiAzNy4zMS01Ni4zOSA2Ny4yMy04NC43NyA4NS40M3ptMjcuNC0yODdjLTQ0LjU2LTEuNjYtNzMuNTggNy40My05NC42OSAyMC42NyAyLTUyLjMgMjEuMzEtNzYuMzggMzguMjEtNzUuMjhDMjY3IDUyLjE1IDMwNSAxMDguNTUgMzA2LjU4IDExMXptLTEzMC42NSAzLjFjLjQ4IDEyLjExIDEuNTkgMjQuNjIgMy4yMSAzNy4yOC0xNC41NS0uODUtMjguNzQtMS4yNS00Mi40LTEuMjYtLjA4IDMuMjQtLjEyLTUxIDI0LjY3LTQ5LjU5aC4wOWM1Ljc2IDEuMDkgMTAuNjMgNi44OCAxNC40MyAxMy41N3ptLTI4LjA2IDE2MmMyMC43NiAzOS43IDQzLjMgNjAuNTcgNjUuMjUgNzIuMzEtNDYuNzkgMjQuNzYtNzcuNTMgMjAtODQuOTIgNC41MS0uMi0uMjEtMTEuMTMtMTUuMyAxOS42Ny03Ni44MXptMjEwLjA2IDc0LjhcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVoYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIgMjM3LjJjMzEuOC0xNS4yIDQ4LjQtMzguMiA0OC40LTc0IDAtNzAuNi01Mi42LTg3LjgtMTEzLjMtODcuOEgwdjM1NC40aDE3MS44YzY0LjQgMCAxMjQuOS0zMC45IDEyNC45LTEwMi45IDAtNDQuNS0yMS4xLTc3LjQtNjQuNy04OS43ek03Ny45IDEzNS45SDE1MWMyOC4xIDAgNTMuNCA3LjkgNTMuNCA0MC41IDAgMzAuMS0xOS43IDQyLjItNDcuNSA0Mi4yaC03OXYtODIuN3ptODMuMyAyMzMuN0g3Ny45VjI3Mmg4NC45YzM0LjMgMCA1NiAxNC4zIDU2IDUwLjYgMCAzNS44LTI1LjkgNDctNTcuNiA0N3ptMzU4LjUtMjQwLjdIMzc2Vjk0aDE0My43djM0Ljl6TTU3NiAzMDUuMmMwLTc1LjktNDQuNC0xMzkuMi0xMjQuOS0xMzkuMi03OC4yIDAtMTMxLjMgNTguOC0xMzEuMyAxMzUuOCAwIDc5LjkgNTAuMyAxMzQuNyAxMzEuMyAxMzQuNyA2MS4zIDAgMTAxLTI3LjYgMTIwLjEtODYuM0g1MDljLTYuNyAyMS45LTM0LjMgMzMuNS01NS43IDMzLjUtNDEuMyAwLTYzLTI0LjItNjMtNjUuM2gxODUuMWMuMy00LjIuNi04LjcuNi0xMy4yek0zOTAuNCAyNzRjMi4zLTMzLjcgMjQuNy01NC44IDU4LjUtNTQuOCAzNS40IDAgNTMuMiAyMC44IDU2LjIgNTQuOEgzOTAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlsaWJpbGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4LjYgMTA0LjFDNTA1LjMgMTIyLjIgNTEzIDE0My44IDUxMS45IDE2OS44VjM3Mi4yQzUxMS41IDM5OC42IDUwMi43IDQyMC4zIDQ4NS40IDQzNy4zQzQ2OC4yIDQ1NC4zIDQ0Ni4zIDQ2My4yIDQxOS45IDQ2NEg5Mi4wMkM2NS41NyA0NjMuMiA0My44MSA0NTQuMiAyNi43NCA0MzYuOEM5LjY4MiA0MTkuNCAuNzY2NyAzOTYuNSAwIDM2OC4yVjE2OS44Qy43NjY3IDE0My44IDkuNjgyIDEyMi4yIDI2Ljc0IDEwNC4xQzQzLjgxIDg3Ljc1IDY1LjU3IDc4Ljc3IDkyLjAyIDc4SDEyMS40TDk2LjA1IDUyLjE5QzkwLjMgNDYuNDYgODcuNDIgMzkuMTkgODcuNDIgMzAuNEM4Ny40MiAyMS42IDkwLjMgMTQuMzQgOTYuMDUgOC42MDNDMTAxLjggMi44NjggMTA5LjEgMCAxMTcuOSAwQzEyNi43IDAgMTM0IDIuODY4IDEzOS44IDguNjAzTDIxMy4xIDc4SDMwMS4xTDM3NS42IDguNjAzQzM4MS43IDIuODY4IDM4OS4yIDAgMzk4IDBDNDA2LjggMCA0MTQuMSAyLjg2OCA0MTkuOSA4LjYwM0M0MjUuNiAxNC4zNCA0MjguNSAyMS42IDQyOC41IDMwLjRDNDI4LjUgMzkuMTkgNDI1LjYgNDYuNDYgNDE5LjkgNTIuMTlMMzk0LjYgNzhMNDIzLjkgNzhDNDUwLjMgNzguNzcgNDcxLjkgODcuNzUgNDg4LjYgMTA0LjFINDg4LjZ6TTQ0OS44IDE3My44QzQ0OS40IDE2NC4yIDQ0Ni4xIDE1Ni40IDQzOS4xIDE1MC4zQzQzMy45IDE0NC4yIDQyNS4xIDE0MC45IDQxNi40IDE0MC41SDk2LjA1Qzg2LjQ2IDE0MC45IDc4LjYgMTQ0LjIgNzIuNDcgMTUwLjNDNjYuMzMgMTU2LjQgNjMuMDcgMTY0LjIgNjIuNjkgMTczLjhWMzY4LjJDNjIuNjkgMzc3LjQgNjUuOTUgMzg1LjIgNzIuNDcgMzkxLjdDNzguOTkgMzk4LjIgODYuODUgNDAxLjUgOTYuMDUgNDAxLjVINDE2LjRDNDI1LjYgNDAxLjUgNDMzLjQgMzk4LjIgNDM5LjcgMzkxLjdDNDQ2IDM4NS4yIDQ0OS40IDM3Ny40IDQ0OS44IDM2OC4yTDQ0OS44IDE3My44ek0xODUuNSAyMTYuNUMxOTEuOCAyMjIuOCAxOTUuMiAyMzAuNiAxOTUuNiAyMzkuN1YyNzNDMTk1LjIgMjgyLjIgMTkxLjkgMjg5LjkgMTg1LjggMjk2LjJDMTc5LjYgMzAyLjUgMTcxLjggMzA1LjcgMTYyLjIgMzA1LjdDMTUyLjYgMzA1LjcgMTQ0LjcgMzAyLjUgMTM4LjYgMjk2LjJDMTMyLjUgMjg5LjkgMTI5LjIgMjgyLjIgMTI4LjggMjczVjIzOS43QzEyOS4yIDIzMC42IDEzMi42IDIyMi44IDEzOC45IDIxNi41QzE0NS4yIDIxMC4yIDE1Mi4xIDIwNi45IDE2Mi4yIDIwNi41QzE3MS40IDIwNi45IDE3OS4yIDIxMC4yIDE4NS41IDIxNi41SDE4NS41ek0zNzcgMjE2LjVDMzgzLjMgMjIyLjggMzg2LjcgMjMwLjYgMzg3LjEgMjM5LjdWMjczQzM4Ni43IDI4Mi4yIDM4My40IDI4OS45IDM3Ny4zIDI5Ni4yQzM3MS4yIDMwMi41IDM2My4zIDMwNS43IDM1My43IDMwNS43QzM0NC4xIDMwNS43IDMzNi4zIDMwMi41IDMzMC4xIDI5Ni4yQzMyMy4xIDI4OS45IDMyMC43IDI4Mi4yIDMyMC40IDI3M1YyMzkuN0MzMjAuNyAyMzAuNiAzMjQuMSAyMjIuOCAzMzAuNCAyMTYuNUMzMzYuNyAyMTAuMiAzNDQuNSAyMDYuOSAzNTMuNyAyMDYuNUMzNjIuOSAyMDYuOSAzNzAuNyAyMTAuMiAzNzcgMjE2LjVIMzc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaW1vYmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDMySDMyQzE0LjQgMzIgMCA0Ni40IDAgNjR2Mzg0YzAgMTcuNiAxNC40IDMyIDMyIDMyaDM4NGMxNy42IDAgMzItMTQuNCAzMi0zMlY2NGMwLTE3LjYtMTQuNC0zMi0zMi0zMnptLTY0IDI1Ny40YzAgNDkuNC0xMS40IDgyLjYtMTAzLjggODIuNmgtMTYuOWMtNDQuMSAwLTYyLjQtMTQuOS03MC40LTM4LjhoLS45VjM2OEg5NlYxMzZoNjR2NzQuN2gxLjFjNC42LTMwLjUgMzkuNy0zOC44IDY5LjctMzguOGgxNy4zYzkyLjQgMCAxMDMuOCAzMy4xIDEwMy44IDgyLjV2MzV6bS02NC0yOC45djIyLjljMCAyMS43LTMuNCAzMy44LTM4LjQgMzMuOGgtNDUuM2MtMjguOSAwLTQ0LjEtNi41LTQ0LjEtMzUuN3YtMTljMC0yOS4zIDE1LjItMzUuNyA0NC4xLTM1LjdoNDUuM2MzNS0uMiAzOC40IDEyIDM4LjQgMzMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0YnVja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjIgMzJBMTYgMTYgMCAwIDAgNiA0Ny44YTI2LjM1IDI2LjM1IDAgMCAwIC4yIDIuOGw2Ny45IDQxMi4xYTIxLjc3IDIxLjc3IDAgMCAwIDIxLjMgMTguMmgzMjUuN2ExNiAxNiAwIDAgMCAxNi0xMy40TDUwNSA1MC43YTE2IDE2IDAgMCAwLTEzLjItMTguMyAyNC41OCAyNC41OCAwIDAgMC0yLjgtLjJMMjIuMiAzMnptMjg1LjkgMjk3LjhoLTEwNGwtMjguMS0xNDdoMTU3LjNsLTI1LjIgMTQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaXRjb2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTY3LTExMS4wMzMgMjQ4LTI0OCAyNDhTOCAzOTIuOTY3IDggMjU2IDExOS4wMzMgOCAyNTYgOHMyNDggMTExLjAzMyAyNDggMjQ4em0tMTQxLjY1MS0zNS4zM2M0LjkzNy0zMi45OTktMjAuMTkxLTUwLjczOS01NC41NS02Mi41NzNsMTEuMTQ2LTQ0LjcwMi0yNy4yMTMtNi43ODEtMTAuODUxIDQzLjUyNGMtNy4xNTQtMS43ODMtMTQuNTAyLTMuNDY0LTIxLjgwMy01LjEzbDEwLjkyOS00My44MS0yNy4xOTgtNi43ODEtMTEuMTUzIDQ0LjY4NmMtNS45MjItMS4zNDktMTEuNzM1LTIuNjgyLTE3LjM3Ny00LjA4NGwuMDMxLS4xNC0zNy41My05LjM3LTcuMjM5IDI5LjA2MnMyMC4xOTEgNC42MjcgMTkuNzY1IDQuOTEzYzExLjAyMiAyLjc1MSAxMy4wMTQgMTAuMDQ0IDEyLjY4IDE1LjgyNWwtMTIuNjk2IDUwLjkyNWMuNzYuMTk0IDEuNzQ0LjQ3MyAyLjgyOS45MDctLjkwNy0uMjI1LTEuODc2LS40NzMtMi44NzYtLjcxM2wtMTcuNzk2IDcxLjMzOGMtMS4zNDkgMy4zNDgtNC43NjcgOC4zNy0xMi40NzEgNi40NjQuMjcxLjM5NS0xOS43OC00LjkzNy0xOS43OC00LjkzN2wtMTMuNTEgMzEuMTQ3IDM1LjQxNCA4LjgyN2M2LjU4OCAxLjY1MSAxMy4wNDUgMy4zNzkgMTkuNCA1LjAwNmwtMTEuMjYyIDQ1LjIxMyAyNy4xODIgNi43ODEgMTEuMTUzLTQ0LjczM2ExMDM4LjIwOSAxMDM4LjIwOSAwIDAgMCAyMS42ODcgNS42MjdsLTExLjExNSA0NC41MjMgMjcuMjEzIDYuNzgxIDExLjI2Mi00NS4xMjhjNDYuNDA0IDguNzgxIDgxLjI5OSA1LjIzOSA5NS45ODYtMzYuNzI3IDExLjgzNi0zMy43OS0uNTg5LTUzLjI4MS0yNS4wMDQtNjUuOTkxIDE3Ljc4LTQuMDk4IDMxLjE3NC0xNS43OTIgMzQuNzQ3LTM5Ljk0OXptLTYyLjE3NyA4Ny4xNzljLTguNDEgMzMuNzktNjUuMzA4IDE1LjUyMy04My43NTUgMTAuOTQzbDE0Ljk0NC01OS44OTljMTguNDQ2IDQuNjAzIDc3LjYgMTMuNzE3IDY4LjgxMSA0OC45NTZ6bTguNDE3LTg3LjY2N2MtNy42NzMgMzAuNzM2LTU1LjAzMSAxNS4xMi03MC4zOTMgMTEuMjkybDEzLjU0OC01NC4zMjdjMTUuMzYzIDMuODI4IDY0LjgzNiAxMC45NzMgNTYuODQ1IDQzLjAzNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03OC40IDY3LjJDMTczLjgtMjIgMzI0LjUtMjQgNDIxLjUgNzFjMTQuMyAxNC4xLTYuNCAzNy4xLTIyLjQgMjEuNS04NC44LTgyLjQtMjE1LjgtODAuMy0yOTguOS0zLjItMTYuMyAxNS4xLTM2LjUtOC4zLTIxLjgtMjIuMXptOTguOSA0MTguNmMxOS4zIDUuNyAyOS4zLTIzLjYgNy45LTMwQzczIDQyMS45IDkuNCAzMDYuMSAzNy43IDE5NC44YzUtMTkuNi0yNC45LTI4LjEtMzAuMi03LjEtMzIuMSAxMjcuNCA0MS4xIDI1OS44IDE2OS44IDI5OC4xem0xNDguMS0yYzEyMS45LTQwLjIgMTkyLjktMTY2LjkgMTY0LjQtMjkxLTQuNS0xOS43LTM0LjktMTMuOC0zMCA3LjkgMjQuMiAxMDcuNy0zNy4xIDIxNy45LTE0My4yIDI1My40LTIxLjIgNy0xMC40IDM2IDguOCAyOS43em0tNjIuOS03OWwuMi03MS44YzAtOC4yLTYuNi0xNC44LTE0LjgtMTQuOC04LjIgMC0xNC44IDYuNy0xNC44IDE0LjhsLS4yIDcxLjhjMCA4LjIgNi42IDE0LjggMTQuOCAxNC44czE0LjgtNi42IDE0LjgtMTQuOHptNzEtMjY5YzIuMSA5MC45IDQuNyAxMzEuOS04NS41IDEzMi41LTkyLjUtLjctODYuOS00NC4zLTg1LjUtMTMyLjUgMC0yMS44LTMyLjUtMTkuNi0zMi41IDB2NzEuNmMwIDY5LjMgNjAuNyA5MC45IDExOCA5MC4xIDU3LjMuOCAxMTgtMjAuOCAxMTgtOTAuMXYtNzEuNmMwLTE5LjYtMzIuNS0yMS44LTMyLjUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxhY2tUaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTMxNi41IDMyNS4yTDIyNCA0NDUuOWwtOTIuNS04OC43IDY0LjUtMTg0LTY0LjUtODYuNmgxODQuOUwyNTIgMTczLjJsNjQuNSAxODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsYWNrYmVycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY2IDExNi45YzAgMjMuNC0xNi40IDQ5LjEtNzIuNSA0OS4xSDIzLjRsMjEtODguOGg2Ny44YzQyLjEgMCA1My44IDIzLjMgNTMuOCAzOS43em0xMjYuMi0zOS43aC02Ny44TDIwNS43IDE2Nmg3MC4xYzUzLjggMCA3MC4xLTI1LjcgNzAuMS00OS4xLjEtMTYuNC0xMS42LTM5LjctNTMuNy0zOS43ek04OC44IDIwOC4xSDIxTDAgMjk2LjloNzAuMWM1Ni4xIDAgNzIuNS0yMy40IDcyLjUtNDkuMSAwLTE2LjMtMTEuNy0zOS43LTUzLjgtMzkuN3ptMTgwLjEgMGgtNjcuOGwtMTguNyA4OC44aDcwLjFjNTMuOCAwIDcwLjEtMjMuNCA3MC4xLTQ5LjEgMC0xNi4zLTExLjctMzkuNy01My43LTM5Ljd6bTE4OS4zLTUzLjhoLTY3LjhsLTE4LjcgODguOGg3MC4xYzUzLjggMCA3MC4xLTIzLjQgNzAuMS00OS4xLjEtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43em0tMjggMTM3LjloLTY3LjhMMzQzLjcgMzgxaDcwLjFjNTYuMSAwIDcwLjEtMjMuNCA3MC4xLTQ5LjEgMC0xNi4zLTExLjYtMzkuNy01My43LTM5Ljd6TTI0MC44IDM0NkgxNzNsLTE4LjcgODguOGg3MC4xYzU2LjEgMCA3MC4xLTI1LjcgNzAuMS00OS4xLjEtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbG9nZ2VyQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDYuNiAyMjIuN2MtMS44LTgtNi44LTE1LjQtMTIuNS0xOC41LTEuOC0xLTEzLTIuMi0yNS0yLjctMjAuMS0uOS0yMi4zLTEuMy0yOC43LTUtMTAuMS01LjktMTIuOC0xMi4zLTEyLjktMjkuNS0uMS0zMy0xMy44LTYzLjctNDAuOS05MS4zLTE5LjMtMTkuNy00MC45LTMzLTY1LjUtNDAuNS01LjktMS44LTE5LjEtMi40LTYzLjMtMi45LTY5LjQtLjgtODQuOC42LTEwOC40IDEwQzQ1LjkgNTkuNSAxNC43IDk2LjEgMy4zIDE0Mi45IDEuMiAxNTEuNy43IDE2NS44LjIgMjQ2LjhjLS42IDEwMS41LjEgMTE2LjQgNi40IDEzNi41IDE1LjYgNDkuNiA1OS45IDg2LjMgMTA0LjQgOTQuMyAxNC44IDIuNyAxOTcuMyAzLjMgMjE2IC44IDMyLjUtNC40IDU4LTE3LjUgODEuOS00MS45IDE3LjMtMTcuNyAyOC4xLTM2LjggMzUuMi02Mi4xIDQuOS0xNy42IDQuNS0xNDIuOCAyLjUtMTUxLjd6bS0zMjIuMS02My42YzcuOC03LjkgMTAtOC4yIDU4LjgtOC4yIDQzLjkgMCA0NS40LjEgNTEuOCAzLjQgOS4zIDQuNyAxMy40IDExLjMgMTMuNCAyMS45IDAgOS41LTMuOCAxNi4yLTEyLjMgMjEuNi00LjYgMi45LTcuMyAzLjEtNTAuMyAzLjMtMjYuNS4yLTQ3LjctLjQtNTAuOC0xLjItMTYuNi00LjctMjIuOC0yOC41LTEwLjYtNDAuOHptMTkxLjggMTk5LjhsLTE0LjkgMi40LTc3LjUuOWMtNjguMS44LTg3LjMtLjQtOTAuOS0yLTcuMS0zLjEtMTMuOC0xMS43LTE0LjktMTkuNC0xLjEtNy4zIDIuNi0xNy4zIDguMi0yMi40IDcuMS02LjQgMTAuMi02LjYgOTcuMy02LjcgODkuNi0uMSA4OS4xLS4xIDk3LjYgNy44IDEyLjEgMTEuMyA5LjUgMzEuMi00LjkgMzkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxvZ2dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuNCAxOTZjNC44LTQuOSA2LjItNS4xIDM2LjQtNS4xIDI3LjIgMCAyOC4xLjEgMzIuMSAyLjEgNS44IDIuOSA4LjMgNyA4LjMgMTMuNiAwIDUuOS0yLjQgMTAtNy42IDEzLjQtMi44IDEuOC00LjUgMS45LTMxLjEgMi4xLTE2LjQuMS0yOS41LS4yLTMxLjUtLjgtMTAuMy0yLjktMTQuMS0xNy43LTYuNi0yNS4zem02MS40IDk0LjVjLTUzLjkgMC01NS44LjItNjAuMiA0LjEtMy41IDMuMS01LjcgOS40LTUuMSAxMy45LjcgNC43IDQuOCAxMC4xIDkuMiAxMiAyLjIgMSAxNC4xIDEuNyA1Ni4zIDEuMmw0Ny45LS42IDkuMi0xLjVjOS01LjEgMTAuNS0xNy40IDMuMS0yNC40LTUuMy00LjctNS00LjctNjAuNC00Ljd6bTIyMy40IDEzMC4xYy0zLjUgMjguNC0yMyA1MC40LTUxLjEgNTcuNS03LjIgMS44LTkuNyAxLjktMTcyLjkgMS44LTE1Ny44IDAtMTY1LjktLjEtMTcyLTEuOC04LjQtMi4yLTE1LjYtNS41LTIyLjMtMTAtNS42LTMuOC0xMy45LTExLjgtMTctMTYuNC0zLjgtNS42LTguMi0xNS4zLTEwLTIyQy4xIDQyMyAwIDQyMC4zIDAgMjU2LjMgMCA5My4yIDAgODkuNyAxLjggODIuNiA4LjEgNTcuOSAyNy43IDM5IDUzIDMzLjRjNy4zLTEuNiAzMzIuMS0xLjkgMzQwLS4zIDIxLjIgNC4zIDM3LjkgMTcuMSA0Ny42IDM2LjQgNy43IDE1LjMgNy0xLjUgNy4zIDE4MC42LjIgMTE1LjggMCAxNjQuNS0uNyAxNzAuNXptLTg1LjQtMTg1LjJjLTEuMS01LTQuMi05LjYtNy43LTExLjUtMS4xLS42LTgtMS4zLTE1LjUtMS43LTEyLjQtLjYtMTMuOC0uOC0xNy44LTMuMS02LjItMy42LTcuOS03LjYtOC0xOC4zIDAtMjAuNC04LjUtMzkuNC0yNS4zLTU2LjUtMTItMTIuMi0yNS4zLTIwLjUtNDAuNi0yNS4xLTMuNi0xLjEtMTEuOC0xLjUtMzkuMi0xLjgtNDIuOS0uNS01Mi41LjQtNjcuMSA2LjItMjcgMTAuNy00Ni4zIDMzLjQtNTMuNCA2Mi40LTEuMyA1LjQtMS42IDE0LjItMS45IDY0LjMtLjQgNjIuOCAwIDcyLjEgNCA4NC41IDkuNyAzMC43IDM3LjEgNTMuNCA2NC42IDU4LjQgOS4yIDEuNyAxMjIuMiAyLjEgMTMzLjcuNSAyMC4xLTIuNyAzNS45LTEwLjggNTAuNy0yNS45IDEwLjctMTAuOSAxNy40LTIyLjggMjEuOC0zOC41IDMuMi0xMC45IDIuOS04OC40IDEuNy05My45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbHVlc2t5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy44IDI5NC43Yy0zLjMtLjQtNi43LS44LTEwLTEuM2MzLjQgLjQgNi43IC45IDEwIDEuM3pNMjg4IDIyNy4xQzI2MS45IDE3Ni40IDE5MC45IDgxLjkgMTI0LjkgMzUuM0M2MS42LTkuNCAzNy41LTEuNyAyMS42IDUuNUMzLjMgMTMuOCAwIDQxLjkgMCA1OC40UzkuMSAxOTQgMTUgMjEzLjljMTkuNSA2NS43IDg5LjEgODcuOSAxNTMuMiA4MC43YzMuMy0uNSA2LjYtLjkgMTAtMS40Yy0zLjMgLjUtNi42IDEtMTAgMS40Qzc0LjMgMzA4LjYtOS4xIDM0Mi44IDEwMC4zIDQ2NC41QzIyMC42IDU4OS4xIDI2NS4xIDQzNy44IDI4OCAzNjEuMWMyMi45IDc2LjcgNDkuMiAyMjIuNSAxODUuNiAxMDMuNGMxMDIuNC0xMDMuNCAyOC4xLTE1Ni02NS44LTE2OS45Yy0zLjMtLjQtNi43LS44LTEwLTEuM2MzLjQgLjQgNi43IC45IDEwIDEuM2M2NC4xIDcuMSAxMzMuNi0xNS4xIDE1My4yLTgwLjdDNTY2LjkgMTk0IDU3NiA3NSA1NzYgNTguNHMtMy4zLTQ0LjctMjEuNi01Mi45Yy0xNS44LTcuMS00MC0xNC45LTEwMy4yIDI5LjhDMzg1LjEgODEuOSAzMTQuMSAxNzYuNCAyODggMjI3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsdWV0b290aEIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTk2LjQ4IDI2MC4wMjNsOTIuNjI2LTEwMy4zMzNMMTQzLjEyNSAwdjIwNi4zM2wtODYuMTExLTg2LjExMS0zMS40MDYgMzEuNDA1IDEwOC4wNjEgMTA4LjM5OUwyNS42MDggMzY4LjQyMmwzMS40MDYgMzEuNDA1IDg2LjExMS04Ni4xMTFMMTQ1Ljg0IDUxMmwxNDguNTUyLTE0OC42NDQtOTcuOTEyLTEwMy4zMzN6bTQwLjg2LTEwMi45OTZsLTQ5Ljk3NyA0OS45NzgtLjMzOC0xMDAuMjk1IDUwLjMxNSA1MC4zMTd6TTE4Ny4zNjMgMzEzLjA0bDQ5Ljk3NyA0OS45NzgtNTAuMzE1IDUwLjMxNi4zMzgtMTAwLjI5NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmx1ZXRvb3RoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5Mi42IDE3MS4xTDI0OS43IDIxNGwtLjMtODYgNDMuMiA0My4xbS00My4yIDIxOS44bDQzLjEtNDMuMS00Mi45LTQyLjktLjIgODZ6TTQxNiAyNTkuNEM0MTYgNDY1IDM0NC4xIDUxMiAyMzAuOSA1MTJTMzIgNDY1IDMyIDI1OS40IDExNS40IDAgMjI4LjYgMCA0MTYgNTMuOSA0MTYgMjU5LjR6bS0xNTguNSAwbDc5LjQtODguNkwyMTEuOCAzNi41djE3Ni45TDEzOCAxMzkuNmwtMjcgMjYuOSA5Mi43IDkzLTkyLjcgOTMgMjYuOSAyNi45IDczLjgtNzMuOCAyLjMgMTcwIDEyNy40LTEyNy41LTgzLjktODguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9vdHN0cmFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMy41LDIwMS40YzAtMjIuMS0xNS42LTM0LjMtNDMtMzQuM2gtNTAuNHY3MS4yaDQyLjVDMzE1LjQsMjM4LjIsMzMzLjUsMjI1LDMzMy41LDIwMS40eiBNNTE3LDE4OC42IGMtOS41LTMwLjktMTAuOS02OC44LTkuOC05OC4xYzEuMS0zMC41LTIyLjctNTguNS01NC43LTU4LjVIMTIzLjdjLTMyLjEsMC01NS44LDI4LjEtNTQuNyw1OC41YzEsMjkuMy0wLjMsNjcuMi05LjgsOTguMSBjLTkuNiwzMS0yNS43LDUwLjYtNTIuMiw1My4xdjI4LjVjMjYuNCwyLjUsNDIuNiwyMi4xLDUyLjIsNTMuMWM5LjUsMzAuOSwxMC45LDY4LjgsOS44LDk4LjFjLTEuMSwzMC41LDIyLjcsNTguNSw1NC43LDU4LjVoMzI4LjcgYzMyLjEsMCw1NS44LTI4LjEsNTQuNy01OC41Yy0xLTI5LjMsMC4zLTY3LjIsOS44LTk4LjFjOS42LTMxLDI1LjctNTAuNiw1Mi4xLTUzLjF2LTI4LjVDNTQyLjcsMjM5LjIsNTI2LjUsMjE5LjYsNTE3LDE4OC42eiBNMzAwLjIsMzc1LjFoLTk3LjlWMTM2LjhoOTcuNGM0My4zLDAsNzEuNywyMy40LDcxLjcsNTkuNGMwLDI1LjMtMTkuMSw0Ny45LTQzLjUsNTEuOHYxLjNjMzMuMiwzLjYsNTUuNSwyNi42LDU1LjUsNTguMyBDMzgzLjQsMzQ5LjcsMzUyLjEsMzc1LjEsMzAwLjIsMzc1LjF6IE0yOTAuMiwyNjYuNGgtNTAuMXY3OC40aDUyLjNjMzQuMiwwLDUyLjMtMTMuNyw1Mi4zLTM5LjUgQzM0NC43LDI3OS42LDMyNi4xLDI2Ni40LDI5MC4yLDI2Ni40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg2LjM0NCwxOTcuODM0YTUxLjc2Nyw1MS43NjcsMCwwLDAtNDEuNTcsMjAuMDU4VjE1Ni4wMThhOC4xOSw4LjE5LDAsMCwwLTguMTktOC4xOUg4LjE5QTguMTksOC4xOSwwLDAsMCwwLDE1Ni4wMThWMzMzLjU1MWE4LjE4OSw4LjE4OSwwLDAsMCw4LjE5LDguMTg5SDM2LjU4NGE4LjE4OSw4LjE4OSwwLDAsMCw4LjE5LTguMTg5di04LjA4OGMxMS42MjgsMTMuMzczLDI1Ljg3NCwxOS43NjksNDEuNTczLDE5Ljc2OSwzNC42LDAsNjEuOTIyLTI2LjE2NCw2MS45MjItNzMuODQzQzE0OC4yNjYsMjI1LjQ1MiwxMjEuMjI5LDE5Ny44MzQsODYuMzQ0LDE5Ny44MzRaTTcxLjUxNiwzMDUuNjkxYy05LjU5MywwLTIxLjIyMS00Ljk0Mi0yNi43NDUtMTIuNVYyNTAuMTY0YzUuNTI4LTcuNTU4LDE3LjE1Mi0xMi43OTEsMjYuNzQ1LTEyLjc5MSwxNy43MzQsMCwzMS4xMDcsMTMuMDgyLDMxLjEwNywzNC4wMTNDMTAyLjYyMywyOTIuNjA5LDg5LjI1LDMwNS42OTEsNzEuNTE2LDMwNS42OTFabTE1Ni4zNzItNTkuMDMyYTE3LjQsMTcuNCwwLDEsMCwxNy40LDE3LjRBMTcuNCwxNy40LDAsMCwwLDIyNy44ODgsMjQ2LjY1OVpNMjczLjk1NiwxNTYuN1YxMTIuMDM5YTEzLjMwOCwxMy4zMDgsMCwxLDAtMTAuMjM3LDBWMTU2LjdhMTA3LjQ5LDEwNy40OSwwLDEsMCwxMC4yMzcsMFptODUuOTkzLDEwNy4zNjdjMCwzMC41MzEtNDAuNzkyLDU1LjI4MS05MS4xMTIsNTUuMjgxcy05MS4xMTEtMjQuNzUtOTEuMTExLTU1LjI4MSw0MC43OTItNTUuMjgxLDkxLjExMS01NS4yODFTMzU5Ljk0OSwyMzMuNTMyLDM1OS45NDksMjY0LjA2MlptLTUwLjE2MywxNy40YTE3LjQsMTcuNCwwLDEsMC0xNy40LTE3LjRoMEExNy40LDE3LjQsMCwwLDAsMzA5Ljc4NiwyODEuNDY2Wk01ODAuNywyNTAuNDU1Yy0xNC44MjgtMi42MTctMjIuMzg3LTMuNzgtMjIuMzg3LTkuODg1LDAtNS41MjMsNy4yNjgtOS44ODQsMTcuNzM1LTkuODg0YTY1LjU2LDY1LjU2LDAsMCwxLDM0LjQ4NCwxMC4xLDguMTcxLDguMTcxLDAsMCwwLDExLjI4OC0yLjQ2OGMuMDctLjExLjEzOC0uMjIxLjItLjMzM2w4LjYxMS0xNC44ODZhOC4yLDguMiwwLDAsMC0yLjg2Ny0xMS4xMjMsOTkuODYzLDk5Ljg2MywwLDAsMC01Mi4wMTQtMTQuMTM4Yy0zOC45NTYsMC02MC4xNzksMjEuNTE0LTYwLjE3OSw0Ni4yMjUsMCwzNi4zNDIsMzMuNzI1LDQxLjg2NCw1Ny41NjMsNDUuNjQyLDEzLjM3MywyLjMyNiwyNC4xMyw0LjM2MSwyNC4xMywxMS4wNDgsMCw2LjQtNS41MjMsMTAuNzU3LTE4LjksMTAuNzU3LTEzLjU1MiwwLTMwLjk5NC02LjIyMi00Mi42MjMtMTMuNTc5YTguMjA2LDguMjA2LDAsMCwwLTExLjMzNSwyLjQ5MWMtLjAzNS4wNTQtLjA2OS4xMDgtLjEuMTY0bC0xMC4yLDE2Ljg5MWE4LjIyMiw4LjIyMiwwLDAsMCwyLjQ5MSwxMS4wNjZjMTUuMjI0LDEwLjMsMzcuNjYzLDE2LjY5Miw1OS40NDEsMTYuNjkyLDQwLjQwOSwwLDYzLjk1Ny0xOS43NjksNjMuOTU3LTQ2LjUxNUM2NDAsMjYwLjYzLDYwNC41MzcsMjU0LjgxNiw1ODAuNywyNTAuNDU1Wm0tOTUuOTI4LDYwLjc4N2E4LjIxMSw4LjIxMSwwLDAsMC05LjUyMS01LjkzOCwyMy4xNjgsMjMuMTY4LDAsMCwxLTQuMTU1LjM4N2MtNy44NDksMC0xMi41LTYuMTA2LTEyLjUtMTQuMjQ1VjI0MC4yOGgyMC4zNDlhOC4xNDMsOC4xNDMsMCwwLDAsOC4xNDEtOC4xNDNWMjA5LjQ2NmE4LjE0Myw4LjE0MywwLDAsMC04LjE0MS04LjE0M0g0NTguNTk0VjE3MS4wOTFhOC4xNDMsOC4xNDMsMCwwLDAtOC4xNDMtOC4xNDNINDIyLjI1N2E4LjE0Myw4LjE0MywwLDAsMC04LjE0Myw4LjE0M2gwdjMwLjIzMkgzOTlhOC4xNDMsOC4xNDMsMCwwLDAtOC4xNDMsOC4xNDNoMHYyMi42NzFBOC4xNDMsOC4xNDMsMCwwLDAsMzk5LDI0MC4yOGgxNS4xMTV2NjMuNjY3YzAsMjcuMDM3LDE1LjQwOCw0MS4yODIsNDMuOSw0MS4yODIsMTIuMTgzLDAsMjEuMzgzLTIuMiwyNy42LTUuNDQ2YTguMTYxLDguMTYxLDAsMCwwLDQuMTQ1LTkuMjc4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmF2ZVJldmVyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4IDBjMyAwIDUuOCAxLjMgNy44IDMuNmwzOC4xIDQ0Yy41LS4xIDEtLjIgMS41LS4zYzkuMi0xLjYgMTguNi0yLjIgMjcuNy0xLjJjMTEuNiAxLjQgMjEuNSA1LjQgMjguOSAxMi45YzcuNyA3LjggMTUuNCAxNS44IDIyLjYgMjMuNmMyLjUgMi43IDQuOSA1LjIgNi45IDcuNGMuNyAuOCAxLjQgMS41IDEuOSAyYzMuNCAzLjcgNC4yIDguMSAyLjcgMTEuOWwtOS44IDI0LjYgMTMuMSAzOC4xYy43IDIgLjggNC4xIC4yIDYuMmMtLjEgLjQtLjEgLjQtLjUgMi4xYy0uNiAyLjMtLjYgMi4zLTEuNSA1LjhjLTEuNiA2LjMtMy41IDEzLjMtNS40IDIwLjljLTUuNiAyMS42LTExLjIgNDMuMi0xNi40IDYzLjRjLTEyLjkgNDkuOS0yMS40IDgyLjctMjMuNCA5MC45Yy0xMS4xIDQ0LjUtMTkuOSA2MC00OC4zIDgwLjNjLTI0LjkgMTcuOC03Ni44IDUzLjYtODYuOCA2MGMtMSAuNi0yIDEuMy0zLjQgMi4zYy0uNSAuNC0zLjIgMi4yLTMuOSAyLjdjLTQuOSAzLjMtOC4zIDUuNS0xMi4xIDcuM2MtNC43IDIuMi05LjMgMy41LTEzLjkgMy41cy05LjEtMS4yLTEzLjktMy41Yy0zLjctMS44LTcuMi0zLjktMTIuMS03LjNjLS44LS41LTMuNC0yLjQtMy45LTIuN2MtMS40LTEtMi41LTEuNy0zLjQtMi4zYy0xMC02LjQtNjEuOS00Mi4xLTg2LjgtNjBjLTI4LjQtMjAuNC0zNy4yLTM1LjgtNDguMy04MC4zYy0yLTguMi0xMC41LTQxLTIzLjMtOTAuNWMtNS4zLTIwLjYtMTAuOS00Mi4yLTE2LjUtNjMuOGMtMi03LjYtMy44LTE0LjYtNS40LTIwLjljLS45LTMuNS0uOS0zLjUtMS41LTUuOGMtLjQtMS43LS40LTEuNy0uNS0yLjFjLS41LTItLjQtNC4yIC4yLTYuMmwxMy4xLTM4LjFMMTEuOCAxMDRjLTEuNS0zLjgtLjctOC4yIDItMTEuMmMxLjItMS4zIDEuOC0yIDIuNi0yLjhjMi0yLjIgNC40LTQuNyA2LjktNy40QzMwLjYgNzQuOSAzOC4zIDY2LjkgNDYgNTkuMWM3LjQtNy41IDE3LjMtMTEuNiAyOC45LTEyLjljOS4xLTEuMSAxOC41LS41IDI3LjcgMS4yYy41IC4xIDEgLjIgMS41IC4zbDM4LjEtNDRDMTQ0LjIgMS4zIDE0NyAwIDE1MCAwSDI5OHptLTQuNyAyMS4xSDE1NC43TDExNS42IDY2LjJjLTIuNiAzLTYuNyA0LjMtMTAuNiAzLjJjLS4yLS4xLS43LS4yLTEuNS0uNGMtMS4zLS4zLTIuOS0uNi00LjUtLjljLTcuNC0xLjMtMTQuOS0xLjgtMjEuNy0xQzcwIDY4IDY0LjMgNzAuMyA2MC43IDc0Yy03LjYgNy43LTE1LjIgMTUuNi0yMi4zIDIzLjNjLTEuNyAxLjgtMy4zIDMuNS00LjggNS4xbDguOCAyMmMxIDIuNCAxIDUgLjIgNy41TDI5LjIgMTcwLjZjLjQgMS40IC41IDEuOSAxLjIgNC44YzEuNiA2LjMgMy41IDEzLjMgNS40IDIwLjljNS42IDIxLjYgMTEuMiA0My4yIDE2LjQgNjMuNGMxMi45IDUwIDIxLjQgODIuOCAyMy40IDkxQzg1LjcgMzkwLjggOTIgNDAyIDExNS44IDQxOWMyNC42IDE3LjYgNzYuMyA1My4yIDg1LjkgNTkuM2MxLjIgLjggMi41IDEuNiA0IDIuN2MuNiAuNCAzLjIgMi4yIDMuOSAyLjdjNCAyLjggNi43IDQuNCA5LjIgNS42YzIuMiAxIDMuOSAxLjUgNS4xIDEuNXMyLjktLjUgNS4xLTEuNWMyLjUtMS4yIDUuMi0yLjggOS4yLTUuNmMuNy0uNSAzLjMtMi4zIDMuOS0yLjdjMS42LTEuMSAyLjgtMS45IDQtMi43YzkuNi02LjEgNjEuMy00MS43IDg1LjktNTkuM2MyMy44LTE3LjEgMzAuMi0yOC4yIDQwLjEtNjguM2MyLjEtOC4zIDEwLjUtNDEuMSAyMy4zLTkwLjdjNS4zLTIwLjYgMTAuOS00Mi4yIDE2LjUtNjMuOGMyLTcuNiAzLjgtMTQuNiA1LjQtMjAuOWMuNy0yLjkgLjktMy40IDEuMi00LjhsLTEzLjMtMzguOGMtLjgtMi40LS44LTUuMSAuMi03LjVsOC44LTIyYy0xLjUtMS42LTMuMS0zLjMtNC44LTUuMWMtNy4yLTcuNi0xNC43LTE1LjUtMjIuMy0yMy4zYy0zLjctMy43LTkuMy02LTE2LjYtNi45Yy02LjgtLjgtMTQuNC0uMy0yMS43IDFjLTEuNyAuMy0zLjIgLjYtNC41IC45Yy0uOCAuMi0xLjMgLjMtMS41IC40Yy0zLjggMS4xLTcuOS0uMi0xMC42LTMuMkwyOTMuMyAyMS4xek0yMjQgMzE2YzIuOCAwIDIwLjkgNi41IDM1LjQgMTQuMXMyNSAxMyAyOC4zIDE1LjJzMS4zIDYuMi0xLjcgOC40cy00NC4xIDM0LjYtNDguMSAzOC4ycy05LjggOS41LTEzLjggOS41cy05LjgtNS45LTEzLjgtOS41cy00NS4xLTM2LTQ4LjEtMzguMnMtNS4xLTYuMi0xLjctOC40czEzLjktNy41IDI4LjMtMTUuMnMzMi41LTE0LjEgMzUuNC0xNC4xem0uMS0yMzAuN2MuNyAwIDguOCAuMiAyMC41IDQuMmMxMi4zIDQuMiAyNS43IDkuNCAzMS45IDkuNHM1MS45LTguOSA1MS45LTguOXM1NC4yIDY2LjcgNTQuMiA4MXMtNi44IDE4LTEzLjcgMjUuNHMtMzYuOCAzOS44LTQwLjcgNDMuOXMtMTEuOSAxMC41LTcuMSAyMS44czExLjcgMjUuOCAzLjkgNDAuNHMtMjEgMjQuNC0yOS40IDIyLjhzLTI4LjQtMTIuMi0zNS43LTE3LjFzLTMwLjUtMjQuMy0zMC41LTMxLjhzMjQtMjAuOCAyOC40LTIzLjlzMjQuNy0xNC44IDI1LjEtMTkuNHMuMy02LTUuNy0xNy40cy0xNi43LTI2LjctMTQuOS0zNi44czE5LjEtMTUuNCAzMS41LTIwLjJzMzYuMi0xMy43IDM5LjItMTUuMXMyLjItMi43LTYuOC0zLjZzLTM0LjYtNC4zLTQ2LjEtMS4xcy0zMS4yIDguMi0zMi44IDEwLjlzLTMgMi43LTEuNCAxMS44czEwLjEgNTIuOCAxMC45IDYwLjZzMi40IDEyLjktNS44IDE0LjhzLTIyLjEgNS4yLTI2LjggNS4ycy0xOC42LTMuMy0yNi44LTUuMnMtNi42LTctNS44LTE0LjhzOS4zLTUxLjUgMTAuOS02MC42cy4yLTkuMi0xLjQtMTEuOHMtMjEuMy03LjYtMzIuOC0xMC45cy0zNy4xIC4yLTQ2LjEgMS4xcy05LjggMi4yLTYuOCAzLjZzMjYuOCAxMC40IDM5LjIgMTUuMXMyOS43IDEwIDMxLjUgMjAuMnMtOSAyNS40LTE0LjkgMzYuOHMtNi4xIDEyLjgtNS43IDE3LjRzMjAuNiAxNi40IDI1LjEgMTkuNHMyOC40IDE2LjQgMjguNCAyMy45cy0yMy4yIDI3LTMwLjUgMzEuOHMtMjcuMiAxNS40LTM1LjcgMTcuMXMtMjEuNy04LjItMjkuNC0yMi44cy0uOC0yOS4xIDMuOS00MC40cy0zLjMtMTcuNy03LjEtMjEuOHMtMzMuOC0zNi41LTQwLjctNDMuOXMtMTMuNy0xMS4yLTEzLjctMjUuNHM1NC4yLTgxIDU0LjItODFzNDUuOCA4LjkgNTEuOSA4LjlzMTkuNS01LjIgMzEuOS05LjRzMjAuNi00LjIgMjAuNi00LjJsLjEgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ1LjUgMEgyMjRoNzguNWw0NC43IDUwLjhzMzkuMy0xMC45IDU3LjggNy42czMzLjggMzQuOSAzMy44IDM0LjlsLTEyIDI5LjUgMTUuMyA0My43cy00NC45IDE3MC4yLTUwLjEgMTkxYy0xMC40IDQwLjktMTcuNCA1Ni44LTQ2LjkgNzcuNXMtODIuOSA1Ni44LTkxLjYgNjIuMmMtMS45IDEuMi0zLjkgMi41LTUuOSAzLjljLTcuNSA1LjEtMTUuOCAxMC44LTIzLjUgMTAuOGwwIDAgMCAwYy03LjcgMC0xNi4xLTUuNy0yMy41LTEwLjhjLTItMS40LTQtMi44LTUuOS0zLjljLTguNy01LjUtNjIuMS00MS41LTkxLjYtNjIuMnMtMzYuNS0zNi42LTQ2LjktNzcuNWMtNS4zLTIwLjgtNTAuMS0xOTEtNTAuMS0xOTFsMTUuMy00My43TDkuMiA5My4zczE1LjMtMTYuNCAzMy44LTM0LjlzNTcuOC03LjYgNTcuOC03LjZMMTQ1LjUgMHpNMjI0IDQwNy42bDAgMGMzLjcgMCA4LjktNC43IDEzLTguNGMuNi0uNSAxLjItMS4xIDEuNy0xLjVjNC4yLTMuNyA0Ny44LTM3LjUgNTEtMzkuOHM1LjQtNi41IDEuOS04LjdjLTIuOC0xLjctMTAtNS41LTIwLjMtMTAuOGMtMy0xLjYtNi4zLTMuMi05LjctNWMtMTUuNC04LTM0LjUtMTQuNy0zNy41LTE0LjdsMCAwIDAgMGMtMyAwLTIyLjEgNi44LTM3LjUgMTQuN2MtMy41IDEuOC02LjcgMy41LTkuNyA1Yy0xMC4zIDUuMy0xNy42IDkuMS0yMC4zIDEwLjhjLTMuNiAyLjItMS40IDYuNCAxLjkgOC43czQ2LjggMzYuMSA1MSAzOS44Yy41IC41IDEuMSAxIDEuNyAxLjVjNC4xIDMuNyA5LjMgOC40IDEzIDguNGwwIDB6bTAtMTY1LjdsMCAwYzQuNyAwIDE3LjYtMyAyNi40LTVsMCAwIDItLjVjNy44LTEuOCA3LjMtNi4zIDYuNC0xM2MtLjEtLjgtLjItMS42LS4zLTIuNGMtLjYtNi4xLTUuOC0zMy4xLTkuMS01MC4zYy0xLjEtNS44LTItMTAuNS0yLjQtMTIuOWMtMS41LTguMS0uNi05LjQgLjctMTEuM2MuMi0uMyAuNS0uNyAuNy0xLjFjMS40LTIuMyAxNi02LjIgMjcuOS05LjVsMCAwYzIuNS0uNyA0LjgtMS4zIDYuOS0xLjljMTAuNi0zIDMyLjQtLjYgNDQuMiAuNmMxLjggLjIgMy40IC40IDQuNyAuNWM5LjYgLjkgMTAuNCAyLjMgNy4yIDMuOGMtMi4zIDEuMS0xNi4yIDYuMy0yOC43IDEwLjlsMCAwIDAgMGMtNC43IDEuOC05LjIgMy41LTEyLjggNC44Yy0xLjUgLjUtMyAxLjEtNC41IDEuN2MtMTIuNSA0LjYtMjcuMiAxMC0yOC45IDE5LjRjLTEuNSA4LjMgNS4yIDE5LjkgMTEuMyAzMC4zbDAgMGMxLjYgMi44IDMuMiA1LjUgNC42IDguMWM2LjMgMTEuOSA2LjUgMTMuMyA2LjEgMTguMWMtLjQgMy45LTE0LjUgMTIuNy0yMi40IDE3LjZsMCAwYy0xLjggMS4xLTMuMyAyLjEtNC4yIDIuN2MtLjggLjUtMi4xIDEuNC0zLjggMi40Yy04LjYgNS4yLTI2LjMgMTYtMjYuMyAyMi41YzAgNy44IDI0LjYgMjguMSAzMi40IDMzLjJzMjguOSAxNi4xIDM3LjkgMTcuOHMyMy04LjUgMzEuMi0yMy44YzcuNy0xNC40IDEuNy0yOC41LTMuMi00MGwtLjktMi4yYy00LjUtMTAuNiAxLjktMTcgNi4yLTIxLjNsMCAwYy41LS41IDEtMSAxLjQtMS40TDM3Ny43IDE5NGMxLjMtMS4zIDIuNS0yLjYgMy43LTMuOGwwIDBjNS44LTUuNyAxMC44LTEwLjUgMTAuOC0yMi44YzAtMTQuOS01Ny41LTg0LjUtNTcuNS04NC41cy00OC41IDkuMy01NS4xIDkuM2MtNS4yIDAtMTUuMy0zLjUtMjUuOC03LjFsMCAwYy0yLjctLjktNS40LTEuOS04LTIuN0MyMzIuOCA3OC4xIDIyNCA3OCAyMjQgNzhsMCAwIDAgMHMtOC43IDAtMjEuOCA0LjRjLTIuNyAuOS01LjQgMS44LTggMi43bDAgMGMtMTAuNSAzLjYtMjAuNiA3LjEtMjUuOCA3LjFjLTYuNSAwLTU1LjEtOS4zLTU1LjEtOS4zcy01Ny41IDY5LjYtNTcuNSA4NC41YzAgMTIuMyA0LjkgMTcuMSAxMC44IDIyLjhsMCAwYzEuMiAxLjIgMi41IDIuNCAzLjcgMy44bDQzLjEgNDUuOGMuNCAuNSAuOSAuOSAxLjQgMS40bDAgMGM0LjMgNC4zIDEwLjYgMTAuNyA2LjIgMjEuM2wtLjkgMi4yYy00LjkgMTEuNS0xMSAyNS42LTMuMiA0MGM4LjIgMTUuMyAyMi4yIDI1LjUgMzEuMiAyMy44czMwLjEtMTIuNyAzNy45LTE3LjhzMzIuNC0yNS40IDMyLjQtMzMuMmMwLTYuNS0xNy43LTE3LjMtMjYuMy0yMi41Yy0xLjctMS0zLjEtMS45LTMuOC0yLjRjLS45LS42LTIuNC0xLjUtNC4yLTIuN2MtNy45LTQuOS0yMi0xMy43LTIyLjQtMTcuNmMtLjQtNC44LS4zLTYuMiA2LjEtMTguMWMxLjMtMi41IDIuOS01LjMgNC42LTguMWM2LTEwLjQgMTIuOC0yMiAxMS4zLTMwLjNjLTEuNy05LjQtMTYuNC0xNC44LTI4LjktMTkuNGMtMS42LS42LTMuMS0xLjEtNC41LTEuN2MtMy42LTEuNC04LjEtMy4xLTEyLjgtNC44bC0uMSAwYy0xMi41LTQuNy0yNi40LTkuOS0yOC43LTEwLjljLTMuMi0xLjUtMi4zLTIuOCA3LjItMy44YzEuMy0uMSAyLjktLjMgNC43LS41YzExLjgtMS4zIDMzLjYtMy42IDQ0LjItLjZjMi4xIC42IDQuNCAxLjIgNi45IDEuOWMxMS45IDMuMiAyNi41IDcuMiAyNy45IDkuNWMuMiAuNCAuNSAuNyAuNyAxLjFjMS4zIDEuOSAyLjIgMy4yIC43IDExLjNjLS40IDIuNC0xLjMgNy4xLTIuNCAxMi45Yy0zLjMgMTcuMi04LjUgNDQuMi05LjEgNTAuM2MtLjEgLjgtLjIgMS43LS4zIDIuNGMtLjggNi43LTEuNCAxMS4yIDYuNCAxM2wyIC41IDAgMGM4LjggMiAyMS44IDUgMjYuNCA1bDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnRjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMC4yMDQgMjQyLjYzOGMyNy43My0xNC4xOCA0NS4zNzctMzkuMzkgNDEuMjgtODEuMy01LjM1OC01Ny4zNTEtNTIuNDU4LTc2LjU3My0xMTQuODUtODEuOTI5VjBoLTQ4LjUyOHY3Ny4yMDNjLTEyLjYwNSAwLTI1LjUyNS4zMTUtMzguNDQ0LjYzVjBoLTQ4LjUyOHY3OS40MDljLTE3Ljg0Mi41MzktMzguNjIyLjI3Ni05Ny4zNyAwdjUxLjY3OGMzOC4zMTQtLjY3OCA1OC40MTctMy4xNCA2My4wMjMgMjEuNDI3djIxNy40MjljLTIuOTI1IDE5LjQ5Mi0xOC41MjQgMTYuNjg1LTUzLjI1NSAxNi4wNzFMMy43NjUgNDQzLjY4Yzg4LjQ4MSAwIDk3LjM3LjMxNSA5Ny4zNy4zMTVWNTEyaDQ4LjUyOHYtNjcuMDZjMTMuMjM0LjMxNSAyNi4xNTQuMzE1IDM4LjQ0NC4zMTVWNTEyaDQ4LjUyOHYtNjguMDA1YzgxLjI5OS00LjQxMiAxMzUuNjQ3LTI0Ljg5NCAxNDIuODk1LTEwMS40NjcgNS42NzEtNjEuNDQ2LTIzLjMyLTg4Ljg2Mi02OS4zMjYtOTkuODl6TTE1MC42MDggMTM0LjU1M2MyNy40MTUgMCAxMTMuMTI2LTguNTA3IDExMy4xMjYgNDguNTI4IDAgNTQuNTE1LTg1LjcxIDQ4LjIxMi0xMTMuMTI2IDQ4LjIxMnYtOTYuNzR6bTAgMjUxLjc3NlYyNzkuODIxYzMyLjc3MiAwIDEzMy4xMjctOS4xMzggMTMzLjEyNyA1My4yNTUtLjAwMSA2MC4xODYtMTAwLjM1NSA1My4yNTMtMTMzLjEyNyA1My4yNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1ZmZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjcuODQgMzgwLjY3bC0xOTYuNSA5Ny44MmExOC42IDE4LjYgMCAwIDEtMTQuNjcgMEwyMC4xNiAzODAuNjdjLTQtMi00LTUuMjggMC03LjI5TDY3LjIyIDM1MGExOC42NSAxOC42NSAwIDAgMSAxNC42OSAwbDEzNC43NiA2N2ExOC41MSAxOC41MSAwIDAgMCAxNC42NyAwbDEzNC43Ni02N2ExOC42MiAxOC42MiAwIDAgMSAxNC42OCAwbDQ3LjA2IDIzLjQzYzQuMDUgMS45NiA0LjA1IDUuMjQgMCA3LjI0em0wLTEzNi41M2wtNDcuMDYtMjMuNDNhMTguNjIgMTguNjIgMCAwIDAtMTQuNjggMGwtMTM0Ljc2IDY3LjA4YTE4LjY4IDE4LjY4IDAgMCAxLTE0LjY3IDBMODEuOTEgMjIwLjcxYTE4LjY1IDE4LjY1IDAgMCAwLTE0LjY5IDBsLTQ3LjA2IDIzLjQzYy00IDItNCA1LjI5IDAgNy4zMWwxOTYuNTEgOTcuOGExOC42IDE4LjYgMCAwIDAgMTQuNjcgMGwxOTYuNS05Ny44YzQuMDUtMi4wMiA0LjA1LTUuMyAwLTcuMzF6TTIwLjE2IDEzMC40MmwxOTYuNSA5MC4yOWEyMC4wOCAyMC4wOCAwIDAgMCAxNC42NyAwbDE5Ni41MS05MC4yOWM0LTEuODYgNC00Ljg5IDAtNi43NEwyMzEuMzMgMzMuNGExOS44OCAxOS44OCAwIDAgMC0xNC42NyAwbC0xOTYuNSA5MC4yOGMtNC4wNSAxLjg1LTQuMDUgNC44OCAwIDYuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1cm9tb2JlbGV4cGVydGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnYxMjhoMTI4VjMySDB6bTEyMCAxMjBIOFY0MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzMkgxNjB6bTEyMCAxMjBIMTY4VjQwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjMySDMyMHptMTIwIDEyMEgzMjhWNDBoMTEydjExMnpNMCAxOTJ2MTI4aDEyOFYxOTJIMHptMTIwIDEyMEg4VjIwMGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYxOTJIMTYwem0xMjAgMTIwSDE2OFYyMDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMTkySDMyMHptMTIwIDEyMEgzMjhWMjAwaDExMnYxMTJ6TTAgMzUydjEyOGgxMjhWMzUySDB6bTEyMCAxMjBIOFYzNjBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMzUySDE2MHptMTIwIDEyMEgxNjhWMzYwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjM1MkgzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1eU5MYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJDMTMzLjI3IDMyIDcuNzkgMTMyLjMyIDcuNzkgMjU2UzEzMy4yNyA0ODAgMjg4IDQ4MHMyODAuMjEtMTAwLjMyIDI4MC4yMS0yMjRTNDQyLjczIDMyIDI4OCAzMnptLTg1LjM5IDM1Ny4xOUw2NC4xIDM5MC41NWw3Ny4yNS0yOTAuNzRoMTMzLjQ0YzYzLjE1IDAgODQuOTMgMjguNjUgNzggNzIuODRhNjAuMjQgNjAuMjQgMCAwIDEtMS41IDYuODUgNzcuMzkgNzcuMzkgMCAwIDAtMTcuMjEtMS45M2MtNDIuMzUgMC03Ni42OSAzMy44OC03Ni42OSA3NS42NSAwIDM3LjE0IDI3LjE0IDY4IDYyLjkzIDc0LjQ1LTE4LjI0IDM3LjE2LTU2LjE2IDYwLjkyLTExNy43MSA2MS41MnpNMzU4IDIwNy4xMWgzMmwtMjIuMTYgOTAuMzFoLTM1LjQxbC0xMS4xOS0zNS42My03LjgzIDM1LjYzaC0zNy44M2wyNi42My05MC4zMWgzMS4zNGwxNSAzNi43NXptMTQ1Ljg2IDE4Mi4wOEgzMDYuNzlMMzIyLjYzIDMyOGE3OC44IDc4LjggMCAwIDAgMTEuNDcuODNjNDIuMzQgMCA3Ni42OS0zMy44NyA3Ni42OS03NS42NSAwLTMyLjY1LTIxLTYwLjQ2LTUwLjM4LTcxLjA2bDIxLjMzLTgyLjM1aDkyLjVsLTUzLjA1IDIwNS4zNmgxMDMuODd6TTIxMS43IDI2OS4zOUgxODdsLTEzLjggNTYuNDdoMjQuN2MxNi4xNCAwIDMyLjExLTMuMTggMzcuOTQtMjYuNjUgNS41Ni0yMi4zMS03Ljk5LTI5LjgyLTI0LjE0LTI5Ljgyek0yMzMgMTcwaC0yMS4zNEwyMDAgMjE3LjcxaDIxLjM3YzE4IDAgMzUuMzgtMTQuNjQgMzkuMjEtMzAuMTRDMjY1LjIzIDE2OC43MSAyNTEuMDcgMTcwIDIzMyAxNzB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1eXNlbGxhZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDE1MC43bDQyLjkgMTYwLjdoLTg1LjhMMjI0IDE1MC43ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS02NS4zIDMyNS4zbC05NC41LTI5OC43SDE1OS44TDY1LjMgNDA1LjNIMTU2bDExMS43LTkxLjYgMjQuMiA5MS42aDkwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbmFkaWFuTWFwbGVMZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4My44IDM1MS43YzIuNS0yLjUgMTA1LjItOTIuNCAxMDUuMi05Mi40bC0xNy41LTcuNWMtMTAtNC45LTcuNC0xMS41LTUtMTcuNCAyLjQtNy42IDIwLjEtNjcuMyAyMC4xLTY3LjNzLTQ3LjcgMTAtNTcuNyAxMi41Yy03LjUgMi40LTEwLTIuNS0xMi41LTcuNXMtMTUtMzIuNC0xNS0zMi40LTUyLjYgNTkuOS01NS4xIDYyLjNjLTEwIDcuNS0yMC4xIDAtMTcuNi0xMCAwLTEwIDI3LjYtMTI5LjYgMjcuNi0xMjkuNnMtMzAuMSAxNy40LTQwLjEgMjIuNGMtNy41IDUtMTIuNiA1LTE3LjYtNUMyOTMuNSA3Mi4zIDI1NS45IDAgMjU1LjkgMHMtMzcuNSA3Mi4zLTQyLjUgNzkuOGMtNSAxMC0xMCAxMC0xNy42IDUtMTAtNS00MC4xLTIyLjQtNDAuMS0yMi40UzE4My4zIDE4MiAxODMuMyAxOTJjMi41IDEwLTcuNSAxNy41LTE3LjYgMTAtMi41LTIuNS01NS4xLTYyLjMtNTUuMS02Mi4zUzk4LjEgMTY3IDk1LjYgMTcycy01IDkuOS0xMi41IDcuNUM3MyAxNzcgMjUuNCAxNjcgMjUuNCAxNjdzMTcuNiA1OS43IDIwLjEgNjcuM2MyLjQgNiA1IDEyLjUtNSAxNy40TDIzIDI1OS4zczEwMi42IDg5LjkgMTA1LjIgOTIuNGM1LjEgNSAxMCA3LjUgNS4xIDIyLjUtNS4xIDE1LTEwLjEgMzUuMS0xMC4xIDM1LjFzOTUuMi0yMC4xIDEwNS4zLTIyLjZjOC43LS45IDE4LjMgMi41IDE4LjMgMTIuNVMyNDEgNTEyIDI0MSA1MTJoMzBzLTUuOC0xMDIuNy01LjgtMTEyLjggOS41LTEzLjQgMTguNC0xMi41YzEwIDIuNSAxMDUuMiAyMi42IDEwNS4yIDIyLjZzLTUtMjAuMS0xMC0zNS4xIDAtMTcuNSA1LTIyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjQW1hem9uUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNC43IDIwMS44Yy4xLTExLjggMC0yMy41IDAtMzUuM3YtMzUuM2MwLTEuMy40LTIgMS40LTIuNyAxMS41LTggMjQuMS0xMi4xIDM4LjItMTEuMSAxMi41LjkgMjIuNyA3IDI4LjEgMjEuNyAzLjMgOC45IDQuMSAxOC4yIDQuMSAyNy43IDAgOC43LS43IDE3LjMtMy40IDI1LjYtNS43IDE3LjgtMTguNyAyNC43LTM1LjcgMjMuOS0xMS43LS41LTIxLjktNS0zMS40LTExLjctLjktLjgtMS40LTEuNi0xLjMtMi44em0xNTQuOSAxNC42YzQuNiAxLjggOS4zIDIgMTQuMSAxLjUgMTEuNi0xLjIgMjEuOS01LjcgMzEuMy0xMi41LjktLjYgMS4zLTEuMyAxLjMtMi41LS4xLTMuOSAwLTcuOSAwLTExLjggMC00LS4xLTggMC0xMiAwLTEuNC0uNC0yLTEuOC0yLjItNy0uOS0xMy45LTIuMi0yMC45LTIuOS03LS42LTE0LS4zLTIwLjggMS45LTYuNyAyLjItMTEuNyA2LjItMTMuNyAxMy4xLTEuNiA1LjQtMS42IDEwLjguMSAxNi4yIDEuNiA1LjUgNS4yIDkuMiAxMC40IDExLjJ6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHptLTIwNy41IDIzLjljLjQgMS43LjkgMy40IDEuNiA1LjEgMTYuNSA0MC42IDMyLjkgODEuMyA0OS41IDEyMS45IDEuNCAzLjUgMS43IDYuNC4yIDkuOS0yLjggNi4yLTQuOSAxMi42LTcuOCAxOC43LTIuNiA1LjUtNi43IDkuNS0xMi43IDExLjItNC4yIDEuMS04LjUgMS4zLTEyLjkuOS0yLjEtLjItNC4yLS43LTYuMy0uOC0yLjgtLjItNC4yIDEuMS00LjMgNC0uMSAyLjgtLjEgNS42IDAgOC4zLjEgNC42IDEuNiA2LjcgNi4yIDcuNSA0LjcuOCA5LjQgMS42IDE0LjIgMS43IDE0LjMuMyAyNS43LTUuNCAzMy4xLTE3LjkgMi45LTQuOSA1LjYtMTAuMSA3LjctMTUuNCAxOS44LTUwLjEgMzkuNS0xMDAuMyA1OS4yLTE1MC41LjYtMS41IDEuMS0zIDEuMy00LjYuNC0yLjQtLjctMy42LTMuMS0zLjctNS42LS4xLTExLjEgMC0xNi43IDAtMy4xIDAtNS4zIDEuNC02LjQgNC4zLS40IDEuMS0uOSAyLjMtMS4zIDMuNGwtMjkuMSA4My43Yy0yLjEgNi4xLTQuMiAxMi4xLTYuNSAxOC42LS40LS45LS42LTEuNC0uOC0xLjktMTAuOC0yOS45LTIxLjYtNTkuOS0zMi40LTg5LjgtMS43LTQuNy0zLjUtOS41LTUuMy0xNC4yLS45LTIuNS0yLjctNC01LjQtNC02LjQtLjEtMTIuOC0uMi0xOS4yLS4xLTIuMiAwLTMuMyAxLjYtMi44IDMuN3pNMjQyLjQgMjA2YzEuNyAxMS43IDcuNiAyMC44IDE4IDI2LjYgOS45IDUuNSAyMC43IDYuMiAzMS43IDQuNiAxMi43LTEuOSAyMy45LTcuMyAzMy44LTE1LjUuNC0uMy44LS42IDEuNC0xIC41IDMuMi45IDYuMiAxLjUgOS4yLjUgMi42IDIuMSA0LjMgNC41IDQuNCA0LjYuMSA5LjEuMSAxMy43IDAgMi4zLS4xIDMuOC0xLjYgNC0zLjkuMS0uOC4xLTEuNi4xLTIuM3YtODguOGMwLTMuNi0uMi03LjItLjctMTAuOC0xLjYtMTAuOC02LjItMTkuNy0xNS45LTI1LjQtNS42LTMuMy0xMS44LTUtMTguMi01LjktMy0uNC02LS43LTkuMS0xLjFoLTEwYy0uOC4xLTEuNi4zLTIuNS4zLTguMi40LTE2LjMgMS40LTI0LjIgMy41LTUuMSAxLjMtMTAgMy4yLTE1IDQuOS0zIDEtNC41IDMuMi00LjQgNi41LjEgMi44LS4xIDUuNiAwIDguMy4xIDQuMSAxLjggNS4yIDUuNyA0LjEgNi41LTEuNyAxMy4xLTMuNSAxOS43LTQuOCAxMC4zLTEuOSAyMC43LTIuNyAzMS4xLTEuMiA1LjQuOCAxMC41IDIuNCAxNC4xIDcgMy4xIDQgNC4yIDguOCA0LjQgMTMuNy4zIDYuOS4yIDEzLjkuMyAyMC44IDAgLjQtLjEuNy0uMiAxLjItLjQgMC0uOCAwLTEuMS0uMS04LjgtMi4xLTE3LjctMy42LTI2LjgtNC4xLTkuNS0uNS0xOC45LjEtMjcuOSAzLjItMTAuOCAzLjgtMTkuNSAxMC4zLTI0LjYgMjAuOC00LjEgOC4zLTQuNiAxNy0zLjQgMjUuOHpNOTguNyAxMDYuOXYxNzUuM2MwIC44IDAgMS43LjEgMi41LjIgMi41IDEuNyA0LjEgNC4xIDQuMiA1LjkuMSAxMS44LjEgMTcuNyAwIDIuNSAwIDQtMS43IDQuMS00LjEuMS0uOC4xLTEuNy4xLTIuNXYtNjAuN2MuOS43IDEuNCAxLjIgMS45IDEuNiAxNSAxMi41IDMyLjIgMTYuNiA1MS4xIDEyLjkgMTcuMS0zLjQgMjguOS0xMy45IDM2LjctMjkuMiA1LjgtMTEuNiA4LjMtMjQuMSA4LjctMzcgLjUtMTQuMy0xLTI4LjQtNi44LTQxLjctNy4xLTE2LjQtMTguOS0yNy4zLTM2LjctMzAuOS0yLjctLjYtNS41LS44LTguMi0xLjJoLTdjLTEuMi4yLTIuNC4zLTMuNi41LTExLjcgMS40LTIyLjMgNS44LTMxLjggMTIuNy0yIDEuNC0zLjkgMy01LjkgNC41LS4xLS41LS4zLS44LS40LTEuMi0uNC0yLjMtLjctNC42LTEuMS02LjktLjYtMy45LTIuNS01LjUtNi40LTUuNmgtOS43Yy01LjktLjEtNi45IDEtNi45IDYuOHpNNDkzLjYgMzM5Yy0yLjctLjctNS4xIDAtNy42IDEtNDMuOSAxOC40LTg5LjUgMzAuMi0xMzYuOCAzNS44LTE0LjUgMS43LTI5LjEgMi44LTQzLjcgMy4yLTI2LjYuNy01My4yLS44LTc5LjYtNC4zLTE3LjgtMi40LTM1LjUtNS43LTUzLTkuOS0zNy04LjktNzIuNy0yMS43LTEwNi43LTM4LjgtOC44LTQuNC0xNy40LTkuMy0yNi4xLTE0LTMuOC0yLjEtNi4yLTEuNS04LjIgMi4xdjEuN2MxLjIgMS42IDIuMiAzLjQgMy43IDQuOCAzNiAzMi4yIDc2LjYgNTYuNSAxMjIgNzIuOSAyMS45IDcuOSA0NC40IDEzLjcgNjcuMyAxNy41IDE0IDIuMyAyOCAzLjggNDIuMiA0LjUgMyAuMSA2IC4yIDkgLjQuNyAwIDEuNC4yIDIuMS4zaDE3LjdjLjctLjEgMS40LS4zIDIuMS0uMyAxNC45LS40IDI5LjgtMS44IDQ0LjYtNCAyMS40LTMuMiA0Mi40LTguMSA2Mi45LTE0LjcgMjkuNi05LjYgNTcuNy0yMi40IDgzLjQtNDAuMSAyLjgtMS45IDUuNy0zLjggOC02LjIgNC4zLTQuNCAyLjMtMTAuNC0zLjMtMTEuOXptNTAuNC0yNy43Yy0uOC00LjItNC01LjgtNy42LTctNS43LTEuOS0xMS42LTIuOC0xNy42LTMuMy0xMS0uOS0yMi0uNC0zMi44IDEuNi0xMiAyLjItMjMuNCA2LjEtMzMuNSAxMy4xLTEuMi44LTIuNCAxLjgtMy4xIDMtLjYuOS0uNyAyLjMtLjUgMy40LjMgMS4zIDEuNyAxLjYgMyAxLjUuNiAwIDEuMiAwIDEuOC0uMWwxOS41LTIuMWM5LjYtLjkgMTkuMi0xLjUgMjguOC0uOCA0LjEuMyA4LjEgMS4yIDEyIDIuMiA0LjMgMS4xIDYuMiA0LjQgNi40IDguNy4zIDYuNy0xLjIgMTMuMS0yLjkgMTkuNS0zLjUgMTIuOS04LjMgMjUuNC0xMy4zIDM3LjgtLjMuOC0uNyAxLjctLjggMi41LS40IDIuNSAxIDQgMy40IDMuNSAxLjQtLjMgMy0xLjEgNC0yLjEgMy43LTMuNiA3LjUtNy4yIDEwLjYtMTEuMiAxMC43LTEzLjggMTctMjkuNiAyMC43LTQ2LjYuNy0zIDEuMi02LjEgMS43LTkuMS4yLTQuNy4yLTkuNi4yLTE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjQW1leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OEg1MjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTEuMUg1MTQuM2wtMzEuOS0zNS4xLTMxLjkgMzUuMUgyNDYuOFYyNjcuMUgxODFMMjYyLjcgODIuNGg3OC42bDI4LjEgNjMuMlY4Mi40aDk3LjJMNDgzLjUgMTMwbDE3LTQ3LjZINTc2VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMzIgMCA1My41IDAgODBWNDMyem00NDAuNC0yMS43TDQ4Mi42IDM2NGw0MiA0Ni4zSDU3NmwtNjgtNzIuMSA2OC03Mi4xSDUyNS40bC00MiA0Ni43LTQxLjUtNDYuN0gzOTAuNUw0NTggMzM4LjZsLTY3LjQgNzEuNlYzNzcuMWgtODNWMzU0LjloODAuOVYzMjIuNkgzMDcuNlYzMDAuMmg4M1YyNjcuMWgtMTIyVjQxMC4zSDQ0MC40em05Ni4zLTcyTDU3NiAzODAuMlYyOTYuOWwtMzkuMyA0MS40em0tMzYuMy05MmwzNi45LTEwMC42VjI0Ni4zSDU3NlYxMDNINTE1LjhsLTMyLjIgODkuM0w0NTEuNyAxMDNIMzkwLjVWMjQ2LjFMMzI3LjMgMTAzSDI3Ni4xTDIxMy43IDI0Ni4zaDQzbDExLjktMjguN2g2NS45bDEyIDI4LjdoODIuN1YxNDZMNDY2IDI0Ni4zaDM0LjR6TTI4MiAxODUuNGwxOS41LTQ2LjkgMTkuNCA0Ni45SDI4MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMiAyMTguNGMwIDE3LjItMTAuNSAyNy4xLTI5IDI3LjFoLTI0LjN2LTU0LjJoMjQuNGMxOC40IDAgMjguOSA5LjggMjguOSAyNy4xem00Ny41IDYyLjZjMCA4LjMgNy4yIDEzLjcgMTguNSAxMy43IDE0LjQgMCAyNS4yLTkuMSAyNS4yLTIxLjl2LTcuN2wtMjMuNSAxLjVjLTEzLjMuOS0yMC4yIDUuOC0yMC4yIDE0LjR6TTU3NiA3OXYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4Vjc5YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI3LjggMTk3LjJjOC40LjcgMTYuOC00LjIgMjIuMS0xMC40IDUuMi02LjQgOC42LTE1IDcuNy0yMy43LTcuNC4zLTE2LjYgNC45LTIxLjkgMTEuMy00LjggNS41LTguOSAxNC40LTcuOSAyMi44em02MC42IDc0LjVjLS4yLS4yLTE5LjYtNy42LTE5LjgtMzAtLjItMTguNyAxNS4zLTI3LjcgMTYtMjguMi04LjgtMTMtMjIuNC0xNC40LTI3LjEtMTQuNy0xMi4yLS43LTIyLjYgNi45LTI4LjQgNi45LTUuOSAwLTE0LjctNi42LTI0LjMtNi40LTEyLjUuMi0yNC4yIDcuMy0zMC41IDE4LjYtMTMuMSAyMi42LTMuNCA1NiA5LjMgNzQuNCA2LjIgOS4xIDEzLjcgMTkuMSAyMy41IDE4LjcgOS4zLS40IDEzLTYgMjQuMi02IDExLjMgMCAxNC41IDYgMjQuMyA1LjkgMTAuMi0uMiAxNi41LTkuMSAyMi44LTE4LjIgNi45LTEwLjQgOS44LTIwLjQgMTAtMjF6bTEzNS40LTUzLjRjMC0yNi42LTE4LjUtNDQuOC00NC45LTQ0LjhoLTUxLjJ2MTM2LjRoMjEuMnYtNDYuNmgyOS4zYzI2LjggMCA0NS42LTE4LjQgNDUuNi00NXptOTAgMjMuN2MwLTE5LjctMTUuOC0zMi40LTQwLTMyLjQtMjIuNSAwLTM5LjEgMTIuOS0zOS43IDMwLjVoMTkuMWMxLjYtOC40IDkuNC0xMy45IDIwLTEzLjkgMTMgMCAyMC4yIDYgMjAuMiAxNy4ydjcuNWwtMjYuNCAxLjZjLTI0LjYgMS41LTM3LjkgMTEuNi0zNy45IDI5LjEgMCAxNy43IDEzLjcgMjkuNCAzMy40IDI5LjQgMTMuMyAwIDI1LjYtNi43IDMxLjItMTcuNGguNFYzMTBoMTkuNnYtNjh6TTUxNiAyMTAuOWgtMjEuNWwtMjQuOSA4MC42aC0uNGwtMjQuOS04MC42SDQyMmwzNS45IDk5LjMtMS45IDZjLTMuMiAxMC4yLTguNSAxNC4yLTE3LjkgMTQuMi0xLjcgMC00LjktLjItNi4yLS4zdjE2LjRjMS4yLjQgNi41LjUgOC4xLjUgMjAuNyAwIDMwLjQtNy45IDM4LjktMzEuOEw1MTYgMjEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjRGluZXJzQ2x1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuNyA3OS45Yy05Ni45IDAtMTc1LjggNzguNi0xNzUuOCAxNzUuOCAwIDk2LjkgNzguOSAxNzUuOCAxNzUuOCAxNzUuOCA5Ny4yIDAgMTc1LjgtNzguOSAxNzUuOC0xNzUuOCAwLTk3LjItNzguNi0xNzUuOC0xNzUuOC0xNzUuOHptLTM5LjkgMjc5LjZjLTQxLjctMTUuOS03MS40LTU2LjQtNzEuNC0xMDMuOHMyOS43LTg3LjkgNzEuNC0xMDQuMXYyMDcuOXptNzkuOC4zVjE1MS42YzQxLjcgMTYuMiA3MS40IDU2LjcgNzEuNCAxMDQuMXMtMjkuNyA4Ny45LTcxLjQgMTA0LjF6TTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTMyOS43IDQ0OGgtOTAuM2MtMTA2LjIgMC0xOTMuOC04NS41LTE5My44LTE5MC4yQzQ1LjYgMTQzLjIgMTMzLjIgNjQgMjM5LjQgNjRoOTAuM2MxMDUgMCAyMDAuNyA3OS4yIDIwMC43IDE5My44IDAgMTA0LjctOTUuNyAxOTAuMi0yMDAuNyAxOTAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NEaXNjb3ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjAuNCAxOTYuMWMwLTcuOS01LjUtMTIuMS0xNS42LTEyLjFoLTQuOXYyNC45aDQuN2MxMC4zIDAgMTUuOC00LjQgMTUuOC0xMi44ek01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNDQuMSAxMzguOWMyMi42IDAgNTIuOS00LjEgNTIuOSAyNC40IDAgMTIuNi02LjYgMjAuNy0xOC43IDIzLjJsMjUuOCAzNC40aC0xOS42bC0yMi4yLTMyLjhoLTIuMnYzMi44aC0xNnptLTU1LjkuMWg0NS4zdjE0SDQ0NHYxOC4yaDI4LjNWMjE3SDQ0NHYyMi4yaDI5LjNWMjUzSDQyOHptLTY4LjcgMGwyMS45IDU1LjIgMjIuMi01NS4yaDE3LjVsLTM1LjUgODQuMmgtOC42bC0zNS04NC4yem0tNTUuOS0zYzI0LjcgMCA0NC42IDIwIDQ0LjYgNDQuNiAwIDI0LjctMjAgNDQuNi00NC42IDQ0LjYtMjQuNyAwLTQ0LjYtMjAtNDQuNi00NC42IDAtMjQuNyAyMC00NC42IDQ0LjYtNDQuNnptLTQ5LjMgNi4xdjE5Yy0yMC4xLTIwLjEtNDYuOC00LjctNDYuOCAxOSAwIDI1IDI3LjUgMzguNSA0Ni44IDE5LjJ2MTljLTI5LjcgMTQuMy02My4zLTUuNy02My4zLTM4LjIgMC0zMS4yIDMzLjEtNTMgNjMuMy0zOHptLTk3LjIgNjYuM2MxMS40IDAgMjIuNC0xNS4zLTMuMy0yNC40LTE1LTUuNS0yMC4yLTExLjQtMjAuMi0yMi43IDAtMjMuMiAzMC42LTMxLjQgNDkuNy0xNC4zbC04LjQgMTAuOGMtMTAuNC0xMS42LTI0LjktNi4yLTI0LjkgMi41IDAgNC40IDIuNyA2LjkgMTIuMyAxMC4zIDE4LjIgNi42IDIzLjYgMTIuNSAyMy42IDI1LjYgMCAyOS41LTM4LjggMzcuNC01Ni42IDExLjNsMTAuMy05LjljMy43IDcuMSA5LjkgMTAuOCAxNy41IDEwLjh6TTU1LjQgMjUzSDMydi04MmgyMy40YzI2LjEgMCA0NC4xIDE3IDQ0LjEgNDEuMSAwIDE4LjUtMTMuMiA0MC45LTQ0LjEgNDAuOXptNjcuNSAwaC0xNnYtODJoMTZ6TTU0NCA0MzNjMCA4LjItNi44IDE1LTE1IDE1SDEyOGMxODkuNi0zNS42IDM4Mi43LTEzOS4yIDQxNi0xNjB6TTc0LjEgMTkxLjZjLTUuMi00LjktMTEuNi02LjYtMjEuOS02LjZINDh2NTQuMmg0LjJjMTAuMyAwIDE3LTIgMjEuOS02LjQgNS43LTUuMiA4LjktMTIuOCA4LjktMjAuN3MtMy4yLTE1LjUtOC45LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjSmNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMS41IDI0NC4zVjIxMmM0MS4yIDAgMzguNS4yIDM4LjUuMiA3LjMgMS4zIDEzLjMgNy4zIDEzLjMgMTYgMCA4LjgtNiAxNC41LTEzLjMgMTUuOC0xLjIuNC0zLjMuMy0zOC41LjN6bTQyLjggMjAuMmMtMi44LS43LTMuMy0uNS00Mi44LS41djM1YzM5LjYgMCA0MCAuMiA0Mi44LS41IDcuNS0xLjUgMTMuNS04IDEzLjUtMTcgMC04LjctNi0xNS41LTEzLjUtMTd6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTgyIDE5Mi4zaC01N2MwIDY3LjEgMTAuNyAxMDkuNy0zNS44IDEwOS43LTE5LjUgMC0zOC44LTUuNy01Ny4yLTE0Ljh2MjhjMzAgOC4zIDY4IDguMyA2OCA4LjMgOTcuOSAwIDgyLTQ3LjcgODItMTMxLjJ6bTE3OC41IDQuNWMtNjMuNC0xNi0xNjUtMTQuOS0xNjUgNTkuMyAwIDc3LjEgMTA4LjIgNzMuNiAxNjUgNTkuMlYyODdDMzEyLjkgMzExLjcgMjUzIDMwOSAyNTMgMjU2czU5LjgtNTUuNiAxMDcuNS0zMS4ydi0yOHpNNTQ0IDI4Ni41YzAtMTguNS0xNi41LTMwLjUtMzgtMzJ2LS44YzE5LjUtMi43IDMwLjMtMTUuNSAzMC4zLTMwLjIgMC0xOS0xNS43LTMwLTM3LTMxIDAgMCA2LjMtLjMtMTIwLjMtLjN2MTI3LjVoMTIyLjdjMjQuMy4xIDQyLjMtMTIuOSA0Mi4zLTMzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjTWFzdGVyY2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODIuOSA0MTAuM2MwIDYuOC00LjYgMTEuNy0xMS4yIDExLjctNi44IDAtMTEuMi01LjItMTEuMi0xMS43IDAtNi41IDQuNC0xMS43IDExLjItMTEuNyA2LjYgMCAxMS4yIDUuMiAxMS4yIDExLjd6bS0zMTAuOC0xMS43Yy03LjEgMC0xMS4yIDUuMi0xMS4yIDExLjcgMCA2LjUgNC4xIDExLjcgMTEuMiAxMS43IDYuNSAwIDEwLjktNC45IDEwLjktMTEuNy0uMS02LjUtNC40LTExLjctMTAuOS0xMS43em0xMTcuNS0uM2MtNS40IDAtOC43IDMuNS05LjUgOC43aDE5LjFjLS45LTUuNy00LjQtOC43LTkuNi04Ljd6bTEwNy44LjNjLTYuOCAwLTEwLjkgNS4yLTEwLjkgMTEuNyAwIDYuNSA0LjEgMTEuNyAxMC45IDExLjcgNi44IDAgMTEuMi00LjkgMTEuMi0xMS43IDAtNi41LTQuNC0xMS43LTExLjItMTEuN3ptMTA1LjkgMjYuMWMwIC4zLjMuNS4zIDEuMSAwIC4zLS4zLjUtLjMgMS4xLS4zLjMtLjMuNS0uNS44LS4zLjMtLjUuNS0xLjEuNS0uMy4zLS41LjMtMS4xLjMtLjMgMC0uNSAwLTEuMS0uMy0uMyAwLS41LS4zLS44LS41LS4zLS4zLS41LS41LS41LS44LS4zLS41LS4zLS44LS4zLTEuMSAwLS41IDAtLjguMy0xLjEgMC0uNS4zLS44LjUtMS4xLjMtLjMuNS0uMy44LS41LjUtLjMuOC0uMyAxLjEtLjMuNSAwIC44IDAgMS4xLjMuNS4zLjguMyAxLjEuNXMuMi42LjUgMS4xem0tMi4yIDEuNGMuNSAwIC41LS4zLjgtLjMuMy0uMy4zLS41LjMtLjggMC0uMyAwLS41LS4zLS44LS4zIDAtLjUtLjMtMS4xLS4zaC0xLjZ2My41aC44VjQyNmguM2wxLjEgMS40aC44bC0xLjEtMS4zek01NzYgODF2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MWMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTY0IDIyMC42YzAgNzYuNSA2Mi4xIDEzOC41IDEzOC41IDEzOC41IDI3LjIgMCA1My45LTguMiA3Ni41LTIzLjEtNzIuOS01OS4zLTcyLjQtMTcxLjIgMC0yMzAuNS0yMi42LTE1LTQ5LjMtMjMuMS03Ni41LTIzLjEtNzYuNC0uMS0xMzguNSA2Mi0xMzguNSAxMzguMnptMjI0IDEwOC44YzcwLjUtNTUgNzAuMi0xNjIuMiAwLTIxNy41LTcwLjIgNTUuMy03MC41IDE2Mi42IDAgMjE3LjV6bS0xNDIuMyA3Ni4zYzAtOC43LTUuNy0xNC40LTE0LjctMTQuNy00LjYgMC05LjUgMS40LTEyLjggNi41LTIuNC00LjEtNi41LTYuNS0xMi4yLTYuNS0zLjggMC03LjYgMS40LTEwLjYgNS40VjM5MmgtOC4ydjM2LjdoOC4yYzAtMTguOS0yLjUtMzAuMiA5LTMwLjIgMTAuMiAwIDguMiAxMC4yIDguMiAzMC4yaDcuOWMwLTE4LjMtMi41LTMwLjIgOS0zMC4yIDEwLjIgMCA4LjIgMTAgOC4yIDMwLjJoOC4ydi0yM3ptNDQuOS0xMy43aC03Ljl2NC40Yy0yLjctMy4zLTYuNS01LjQtMTEuNy01LjQtMTAuMyAwLTE4LjIgOC4yLTE4LjIgMTkuMyAwIDExLjIgNy45IDE5LjMgMTguMiAxOS4zIDUuMiAwIDktMS45IDExLjctNS40djQuNmg3LjlWMzkyem00MC41IDI1LjZjMC0xNS0yMi45LTguMi0yMi45LTE1LjIgMC01LjcgMTEuOS00LjggMTguNS0xLjFsMy4zLTYuNWMtOS40LTYuMS0zMC4yLTYtMzAuMiA4LjIgMCAxNC4zIDIyLjkgOC4zIDIyLjkgMTUgMCA2LjMtMTMuNSA1LjgtMjAuNy44bC0zLjUgNi4zYzExLjIgNy42IDMyLjYgNiAzMi42LTcuNXptMzUuNCA5LjNsLTIuMi02LjhjLTMuOCAyLjEtMTIuMiA0LjQtMTIuMi00LjF2LTE2LjZoMTMuMVYzOTJoLTEzLjF2LTExLjJoLTguMlYzOTJoLTcuNnY3LjNoNy42VjQxNmMwIDE3LjYgMTcuMyAxNC40IDIyLjYgMTAuOXptMTMuMy0xMy40aDI3LjVjMC0xNi4yLTcuNC0yMi42LTE3LjQtMjIuNi0xMC42IDAtMTguMiA3LjktMTguMiAxOS4zIDAgMjAuNSAyMi42IDIzLjkgMzMuOCAxNC4ybC0zLjgtNmMtNy44IDYuNC0xOS42IDUuOC0yMS45LTQuOXptNTkuMS0yMS41Yy00LjYtMi0xMS42LTEuOC0xNS4yIDQuNFYzOTJoLTguMnYzNi43aDguMlY0MDhjMC0xMS42IDkuNS0xMC4xIDEyLjgtOC40bDIuNC03LjZ6bTEwLjYgMTguM2MwLTExLjQgMTEuNi0xNS4xIDIwLjctOC40bDMuOC02LjVjLTExLjYtOS4xLTMyLjctNC4xLTMyLjcgMTUgMCAxOS44IDIyLjQgMjMuOCAzMi43IDE1bC0zLjgtNi41Yy05LjIgNi41LTIwLjcgMi42LTIwLjctOC42em02Ni43LTE4LjNINDA4djQuNGMtOC4zLTExLTI5LjktNC44LTI5LjkgMTMuOSAwIDE5LjIgMjIuNCAyNC43IDI5LjkgMTMuOXY0LjZoOC4yVjM5MnptMzMuNyAwYy0yLjQtMS4yLTExLTIuOS0xNS4yIDQuNFYzOTJoLTcuOXYzNi43aDcuOVY0MDhjMC0xMSA5LTEwLjMgMTIuOC04LjRsMi40LTcuNnptNDAuMy0xNC45aC03Ljl2MTkuM2MtOC4yLTEwLjktMjkuOS01LjEtMjkuOSAxMy45IDAgMTkuNCAyMi41IDI0LjYgMjkuOSAxMy45djQuNmg3Ljl2LTUxLjd6bTcuNi03NS4xdjQuNmguOFYzMDJoMS45di0uOGgtNC42di44aDEuOXptNi42IDEyMy44YzAtLjUgMC0xLjEtLjMtMS42LS4zLS4zLS41LS44LS44LTEuMS0uMy0uMy0uOC0uNS0xLjEtLjgtLjUgMC0xLjEtLjMtMS42LS4zLS4zIDAtLjguMy0xLjQuMy0uNS4zLS44LjUtMS4xLjgtLjUuMy0uOC44LS44IDEuMS0uMy41LS4zIDEuMS0uMyAxLjYgMCAuMyAwIC44LjMgMS40IDAgLjMuMy44LjggMS4xLjMuMy41LjUgMS4xLjguNS4zIDEuMS4zIDEuNC4zLjUgMCAxLjEgMCAxLjYtLjMuMy0uMy44LS41IDEuMS0uOC4zLS4zLjUtLjguOC0xLjEuMy0uNi4zLTEuMS4zLTEuNHptMy4yLTEyNC43aC0xLjRsLTEuNiAzLjUtMS42LTMuNWgtMS40djUuNGguOHYtNC4xbDEuNiAzLjVoMS4xbDEuNC0zLjV2NC4xaDEuMXYtNS40em00LjQtODAuNWMwLTc2LjItNjIuMS0xMzguMy0xMzguNS0xMzguMy0yNy4yIDAtNTMuOSA4LjItNzYuNSAyMy4xIDcyLjEgNTkuMyA3My4yIDE3MS41IDAgMjMwLjUgMjIuNiAxNSA0OS41IDIzLjEgNzYuNSAyMy4xIDc2LjQuMSAxMzguNS02MS45IDEzOC41LTEzOC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY1BheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMyAyNTguMmMwIDEyLjItOS43IDIxLjUtMjIgMjEuNS05LjIgMC0xNi01LjItMTYtMTUgMC0xMi4yIDkuNS0yMiAyMS43LTIyIDkuMyAwIDE2LjMgNS43IDE2LjMgMTUuNXpNODAuNSAyMDkuN2gtNC43Yy0xLjUgMC0zIDEtMy4yIDIuN2wtNC4zIDI2LjcgOC4yLS4zYzExIDAgMTkuNS0xLjUgMjEuNS0xNC4yIDIuMy0xMy40LTYuMi0xNC45LTE3LjUtMTQuOXptMjg0IDBIMzYwYy0xLjggMC0zIDEtMy4yIDIuN2wtNC4yIDI2LjcgOC0uM2MxMyAwIDIyLTMgMjItMTgtLjEtMTAuNi05LjYtMTEuMS0xOC4xLTExLjF6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI4LjMgMjE1LjRjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTQwYy0yLjUgMC01IDItNS4yIDQuN0wzMiAyOTQuMmMtLjMgMiAxLjIgNCAzLjIgNGgxOWMyLjcgMCA1LjItMi45IDUuNS01LjdsNC41LTI2LjZjMS03LjIgMTMuMi00LjcgMTgtNC43IDI4LjYgMCA0Ni4xLTE3IDQ2LjEtNDUuOHptODQuMiA4LjhoLTE5Yy0zLjggMC00IDUuNS00LjIgOC4yLTUuOC04LjUtMTQuMi0xMC0yMy43LTEwLTI0LjUgMC00My4yIDIxLjUtNDMuMiA0NS4yIDAgMTkuNSAxMi4yIDMyLjIgMzEuNyAzMi4yIDkgMCAyMC4yLTQuOSAyNi41LTExLjktLjUgMS41LTEgNC43LTEgNi4yIDAgMi4zIDEgNCAzLjIgNEgyMDBjMi43IDAgNS0yLjkgNS41LTUuN2wxMC4yLTY0LjNjLjMtMS45LTEuMi0zLjktMy4yLTMuOXptNDAuNSA5Ny45bDYzLjctOTIuNmMuNS0uNS41LTEgLjUtMS43IDAtMS43LTEuNS0zLjUtMy4yLTMuNWgtMTkuMmMtMS43IDAtMy41IDEtNC41IDIuNWwtMjYuNSAzOS0xMS0zNy41Yy0uOC0yLjItMy00LTUuNS00aC0xOC43Yy0xLjcgMC0zLjIgMS44LTMuMiAzLjUgMCAxLjIgMTkuNSA1Ni44IDIxLjIgNjIuMS0yLjcgMy44LTIwLjUgMjguNi0yMC41IDMxLjYgMCAxLjggMS41IDMuMiAzLjIgMy4yaDE5LjJjMS44LS4xIDMuNS0xLjEgNC41LTIuNnptMTU5LjMtMTA2LjdjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTM5LjdjLTIuNyAwLTUuMiAyLTUuNSA0LjdsLTE2LjIgMTAyYy0uMiAyIDEuMyA0IDMuMiA0aDIwLjVjMiAwIDMuNS0xLjUgNC0zLjJsNC41LTI5YzEtNy4yIDEzLjItNC43IDE4LTQuNyAyOC40IDAgNDUuOS0xNyA0NS45LTQ1Ljh6bTg0LjIgOC44aC0xOWMtMy44IDAtNCA1LjUtNC4zIDguMi01LjUtOC41LTE0LTEwLTIzLjctMTAtMjQuNSAwLTQzLjIgMjEuNS00My4yIDQ1LjIgMCAxOS41IDEyLjIgMzIuMiAzMS43IDMyLjIgOS4zIDAgMjAuNS00LjkgMjYuNS0xMS45LS4zIDEuNS0xIDQuNy0xIDYuMiAwIDIuMyAxIDQgMy4yIDRINDg0YzIuNyAwIDUtMi45IDUuNS01LjdsMTAuMi02NC4zYy4zLTEuOS0xLjItMy45LTMuMi0zLjl6bTQ3LjUtMzMuM2MwLTItMS41LTMuNS0zLjItMy41aC0xOC41Yy0xLjUgMC0zIDEuMi0zLjIgMi43bC0xNi4yIDEwNC0uMy41YzAgMS44IDEuNSAzLjUgMy41IDMuNWgxNi41YzIuNSAwIDUtMi45IDUuMi01LjdMNTQ0IDE5MS4ydi0uM3ptLTkwIDUxLjhjLTEyLjIgMC0yMS43IDkuNy0yMS43IDIyIDAgOS43IDcgMTUgMTYuMiAxNSAxMiAwIDIxLjctOS4yIDIxLjctMjEuNS4xLTkuOC02LjktMTUuNS0xNi4yLTE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjU3RyaXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Mi40IDIyMC44Yy04LjkgMC0xOC43IDYuNy0xOC43IDIyLjdoMzYuN2MwLTE2LTkuMy0yMi43LTE4LTIyLjd6TTM3NSAyMjMuNGMtOC4yIDAtMTMuMyAyLjktMTcgN2wuMiA1Mi44YzMuNSAzLjcgOC41IDYuNyAxNi44IDYuNyAxMy4xIDAgMjEuOS0xNC4zIDIxLjktMzMuNCAwLTE4LjYtOS0zMy4yLTIxLjktMzMuMXpNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTIyLjIgMjgxLjFjMCAyNS42LTIwLjMgNDAuMS00OS45IDQwLjMtMTIuMiAwLTI1LjYtMi40LTM4LjgtOC4xdi0zMy45YzEyIDYuNCAyNy4xIDExLjMgMzguOSAxMS4zIDcuOSAwIDEzLjYtMi4xIDEzLjYtOC43IDAtMTctNTQtMTAuNi01NC00OS45IDAtMjUuMiAxOS4yLTQwLjIgNDgtNDAuMiAxMS44IDAgMjMuNSAxLjggMzUuMyA2LjV2MzMuNGMtMTAuOC01LjgtMjQuNS05LjEtMzUuMy05LjEtNy41IDAtMTIuMSAyLjItMTIuMSA3LjcgMCAxNiA1NC4zIDguNCA1NC4zIDUwLjd6bTY4LjgtNTYuNmgtMjdWMjc1YzAgMjAuOSAyMi41IDE0LjQgMjcgMTIuNnYyOC45Yy00LjcgMi42LTEzLjMgNC43LTI0LjkgNC43LTIxLjEgMC0zNi45LTE1LjUtMzYuOS0zNi41bC4yLTExMy45IDM0LjctNy40djMwLjhIMTkxem03NCAyLjRjLTQuNS0xLjUtMTguNy0zLjYtMjcuMSA3LjR2ODQuNGgtMzUuNVYxOTQuMmgzMC43bDIuMiAxMC41YzguMy0xNS4zIDI0LjktMTIuMiAyOS42LTEwLjVoLjF6bTQ0LjEgOTEuOGgtMzUuN1YxOTQuMmgzNS43em0wLTE0Mi45bC0zNS43IDcuNnYtMjguOWwzNS43LTcuNnptNzQuMSAxNDUuNWMtMTIuNCAwLTIwLTUuMy0yNS4xLTlsLS4xIDQwLjItMzUuNSA3LjVWMTk0LjJoMzEuM2wxLjggOC44YzQuOS00LjUgMTMuOS0xMS4xIDI3LjgtMTEuMSAyNC45IDAgNDguNCAyMi41IDQ4LjQgNjMuOCAwIDQ1LjEtMjMuMiA2NS41LTQ4LjYgNjUuNnptMTYwLjQtNTEuNWgtNjkuNWMxLjYgMTYuNiAxMy44IDIxLjUgMjcuNiAyMS41IDE0LjEgMCAyNS4yLTMgMzQuOS03LjlWMzEyYy05LjcgNS4zLTIyLjQgOS4yLTM5LjQgOS4yLTM0LjYgMC01OC44LTIxLjctNTguOC02NC41IDAtMzYuMiAyMC41LTY0LjkgNTQuMy02NC45IDMzLjcgMCA1MS4zIDI4LjcgNTEuMyA2NS4xIDAgMy41LS4zIDEwLjktLjQgMTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NWaXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MC4xIDIzMS4zczcuNiAzNy4yIDkuMyA0NUg0NDZjMy4zLTguOSAxNi00My41IDE2LTQzLjUtLjIuMyAzLjMtOS4xIDUuMy0xNC45bDIuOCAxMy40ek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE1Mi41IDMzMS4yTDIxNS43IDE3NmgtNDIuNWwtMzkuMyAxMDYtNC4zLTIxLjUtMTQtNzEuNGMtMi4zLTkuOS05LjQtMTIuNy0xOC4yLTEzLjFIMzIuN2wtLjcgMy4xYzE1LjggNCAyOS45IDkuOCA0Mi4yIDE3LjFsMzUuOCAxMzVoNDIuNXptOTQuNC4yTDI3Mi4xIDE3NmgtNDAuMmwtMjUuMSAxNTUuNGg0MC4xem0xMzkuOS01MC44Yy4yLTE3LjctMTAuNi0zMS4yLTMzLjctNDIuMy0xNC4xLTcuMS0yMi43LTExLjktMjIuNy0xOS4yLjItNi42IDcuMy0xMy40IDIzLjEtMTMuNCAxMy4xLS4zIDIyLjcgMi44IDI5LjkgNS45bDMuNiAxLjcgNS41LTMzLjZjLTcuOS0zLjEtMjAuNS02LjYtMzYtNi42LTM5LjcgMC02Ny42IDIxLjItNjcuOCA1MS40LS4zIDIyLjMgMjAgMzQuNyAzNS4yIDQyLjIgMTUuNSA3LjYgMjAuOCAxMi42IDIwLjggMTkuMy0uMiAxMC40LTEyLjYgMTUuMi0yNC4xIDE1LjItMTYgMC0yNC42LTIuNS0zNy43LTguM2wtNS4zLTIuNS01LjYgMzQuOWM5LjQgNC4zIDI2LjggOC4xIDQ0LjggOC4zIDQyLjIuMSA2OS43LTIwLjggNzAtNTN6TTUyOCAzMzEuNEw0OTUuNiAxNzZoLTMxLjFjLTkuNiAwLTE2LjkgMi44LTIxIDEyLjlsLTU5LjcgMTQyLjVINDI2czYuOS0xOS4yIDguNC0yMy4zSDQ4NmMxLjIgNS41IDQuOCAyMy4zIDQuOCAyMy4zSDUyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2VudGVyY29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjkuMiAyNjguNmMtMy44IDM1LjItMzUuNCA2MC42LTcwLjYgNTYuOC0zNS4yLTMuOC02MC42LTM1LjQtNTYuOC03MC42IDMuOC0zNS4yIDM1LjQtNjAuNiA3MC42LTU2LjggMzUuMSAzLjggNjAuNiAzNS40IDU2LjggNzAuNnptLTg1LjggMjM1LjFDOTYuNyA0OTYtOC4yIDM2NS41IDEwLjEgMjI0LjNjMTEuMi04Ni42IDY1LjgtMTU2LjkgMTM5LjEtMTkyIDE2MS03Ny4xIDM0OS43IDM3LjQgMzU0LjcgMjE2LjYgNC4xIDE0Ny0xMTguNCAyNjIuMi0yNjAuNSAyNTQuOHptMTc5LjktMTgwYzI3LjktMTE4LTE2MC41LTIwNS45LTIzNy4yLTIzNC4yLTU3LjUgNTYuMy02OS4xIDE4OC42LTMzLjggMzQ0LjQgNjguOCAxNS44IDE2OS4xLTI2LjQgMjcxLTExMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZW50b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg5LjYgOTcuNWwzMS42IDMxLjctNzYuMyA3Ni41Vjk3LjV6bS0xNjIuNCAzMS43bDc2LjMgNzYuNVY5Ny41aC00NC43em00MS41LTQxLjZoNDQuN3YxMjcuOWwxMC44IDEwLjggMTAuOC0xMC44Vjg3LjZoNDQuN0wyMjQuMiAzMnptMjYuMiAxNjguMWwtMTAuOC0xMC44SDU1LjV2LTQ0LjhMMCAyNTUuN2w1NS41IDU1LjZ2LTQ0LjhoMTI4LjZsMTAuOC0xMC44em03OS4zLTIwLjdoMTA3Ljl2LTQ0LjhsLTMxLjYtMzEuN3ptMTczLjMgMjAuN0wzOTIgMjAwLjF2NDQuOEgyNjQuM2wtMTAuOCAxMC44IDEwLjggMTAuOEgzOTJ2NDQuOGw1NS41LTU1LjZ6TTY1LjQgMTc2LjJsMzIuNS0zMS43IDkwLjMgOTAuNWgxNS4zdi0xNS4zbC05MC4zLTkwLjUgMzEuNi0zMS43SDY1LjR6bTMxNi43LTc4LjdoLTc4LjVsMzEuNiAzMS43LTkwLjMgOTAuNVYyMzVoMTUuM2w5MC4zLTkwLjUgMzEuNiAzMS43ek0yMDMuNSA0MTMuOVYzMDUuOGwtNzYuMyA3Ni41IDMxLjYgMzEuN2g0NC43ek02NS40IDIzNWgxMDguOGwtNzYuMy03Ni41LTMyLjUgMzEuN3ptMzE2LjcgMTAwLjJsLTMxLjYgMzEuNy05MC4zLTkwLjVoLTE1LjN2MTUuM2w5MC4zIDkwLjUtMzEuNiAzMS43aDc4LjV6bTAtNTguOEgyNzQuMmw3Ni4zIDc2LjUgMzEuNi0zMS43em0tNjAuOSAxMDUuOGwtNzYuMy03Ni41djEwOC4xaDQ0Ljd6TTk3LjkgMzUyLjlsNzYuMy03Ni41SDY1LjR2NDQuOHptMTgxLjggNzAuOUgyMzVWMjk1LjlsLTEwLjgtMTAuOC0xMC44IDEwLjh2MTI3LjloLTQ0LjdsNTUuNSA1NS42em0tMTY2LjUtNDEuNmw5MC4zLTkwLjV2LTE1LjNoLTE1LjNsLTkwLjMgOTAuNS0zMi41LTMxLjd2NzguN2g3OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHJvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZDMCAyMDkuNCAxMi40NyAxNjUuNiAzNC4yNyAxMjcuMUwxNDQuMSAzMTguM0MxNjYgMzU3LjUgMjA3LjkgMzg0IDI1NiAzODRDMjcwLjMgMzg0IDI4My4xIDM4MS43IDI5Ni44IDM3Ny40TDIyMC41IDUwOS42Qzk1LjkgNDkyLjMgMCAzODUuMyAwIDI1NnpNMzY1LjEgMzIxLjZDMzc3LjQgMzAyLjQgMzg0IDI3OS4xIDM4NCAyNTZDMzg0IDIxNy44IDM2Ny4yIDE4My41IDM0MC43IDE2MEg0OTMuNEM1MDUuNCAxODkuNiA1MTIgMjIyLjEgNTEyIDI1NkM1MTIgMzk3LjQgMzk3LjQgNTExLjEgMjU2IDUxMkwzNjUuMSAzMjEuNnpNNDc3LjggMTI4SDI1NkMxOTMuMSAxMjggMTQyLjMgMTcyLjEgMTMwLjUgMjMwLjdMNTQuMTkgOTguNDdDMTAxIDM4LjUzIDE3NCAwIDI1NiAwQzM1MC44IDAgNDMzLjUgNTEuNDggNDc3LjggMTI4VjEyOHpNMTY4IDI1NkMxNjggMjA3LjQgMjA3LjQgMTY4IDI1NiAxNjhDMzA0LjYgMTY4IDM0NCAyMDcuNCAzNDQgMjU2QzM0NCAzMDQuNiAzMDQuNiAzNDQgMjU2IDM0NEMyMDcuNCAzNDQgMTY4IDMwNC42IDE2OCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNocm9tZWNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ3LjgsNjRINjRjLTIzLjYsMC00Mi43LDE5LjEtNDIuNyw0Mi43djYzLjlINjR2LTYzLjloMzgzLjh2Mjk4LjZIMjk4LjZWNDQ4SDQ0OGMyMy42LDAsNDIuNy0xOS4xLDQyLjctNDIuN1YxMDYuNyBDNDkwLjcsODMuMSw0NzEuNCw2NCw0NDcuOCw2NHogTTIxLjMsMzgzLjZMMjEuMywzODMuNmwwLDYzLjloNjMuOUM4NS4yLDQxMi4yLDU2LjYsMzgzLjYsMjEuMywzODMuNkwyMS4zLDM4My42eiBNMjEuMywyOTguNlYzNDEgYzU4LjksMCwxMDYuNiw0OC4xLDEwNi42LDEwN2g0Mi43QzE3MC43LDM2NS42LDEwMy43LDI5OC43LDIxLjMsMjk4LjZ6IE0yMTMuNCw0NDhoNDIuN2MtMC41LTEyOS41LTEwNS4zLTIzNC4zLTIzNC44LTIzNC42bDAsNDIuNCBDMTI3LjMsMjU1LjYsMjEzLjMsMzQyLDIxMy40LDQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRmbGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcuOTA2LDMxOS45MTNsLTIzMC44LTIuOTI4YTQuNTgsNC41OCwwLDAsMS0zLjYzMi0xLjkyNiw0LjY0OCw0LjY0OCwwLDAsMS0uNDk0LTQuMTQ3LDYuMTQzLDYuMTQzLDAsMCwxLDUuMzYxLTQuMDc2TDQxMS4yODEsMzAzLjljMjcuNjMxLTEuMjYsNTcuNTQ2LTIzLjU3NCw2OC4wMjItNTAuNzg0bDEzLjI4Ni0zNC41NDJhNy45NDQsNy45NDQsMCwwLDAsLjUyNC0yLjkzNiw3LjczNSw3LjczNSwwLDAsMC0uMTY0LTEuNjMxQTE1MS45MSwxNTEuOTEsMCwwLDAsMjAxLjI1NywxOTguNCw2OC4xMiw2OC4xMiwwLDAsMCw5NC4yLDI2OS41OUM0MS45MjQsMjcxLjEwNiwwLDMxMy43MjgsMCwzNjYuMTJhOTYuMDU0LDk2LjA1NCwwLDAsMCwxLjAyOSwxMy45NTgsNC41MDgsNC41MDgsMCwwLDAsNC40NDUsMy44NzFsNDI2LjEuMDUxYy4wNDMsMCwuMDgtLjAxOS4xMjItLjAyYTUuNjA2LDUuNjA2LDAsMCwwLDUuMjcxLTRsMy4yNzMtMTEuMjY1YzMuOS0xMy40LDIuNDQ4LTI1LjgtNC4xLTM0LjlDNDMwLjEyNCwzMjUuNDIzLDQyMC4wOSwzMjAuNDg3LDQwNy45MDYsMzE5LjkxM1pNNTEzLjg1NiwyMjEuMWMtMi4xNDEsMC00LjI3MS4wNjItNi4zOTEuMTY0YTMuNzcxLDMuNzcxLDAsMCwwLTMuMzI0LDIuNjUzbC05LjA3NywzMS4xOTNjLTMuOSwxMy40LTIuNDQ5LDI1Ljc4Niw0LjEsMzQuODksNi4wMiw4LjQsMTYuMDU0LDEzLjMyMywyOC4yMzgsMTMuOWw0OS4yLDIuOTM5YTQuNDkxLDQuNDkxLDAsMCwxLDMuNTEsMS44OTQsNC42NCw0LjY0LDAsMCwxLC41MTQsNC4xNjksNi4xNTMsNi4xNTMsMCwwLDEtNS4zNTEsNC4wNzVsLTUxLjEyNSwyLjkzOWMtMjcuNzU0LDEuMjctNTcuNjY5LDIzLjU3NC02OC4xNDUsNTAuNzg0bC0zLjY5NSw5LjYwNmEyLjcxNiwyLjcxNiwwLDAsMCwyLjQyNywzLjY4Yy4wNDYsMCwuMDg4LjAxNy4xMzYuMDE3aDE3NS45MWE0LjY5LDQuNjksMCwwLDAsNC41MzktMy4zNywxMjQuODA3LDEyNC44MDcsMCwwLDAsNC42ODItMzRDNjQwLDI3Ny4zLDU4My41MjQsMjIxLjEsNTEzLjg1NiwyMjEuMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRzY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguMSAxNTRsLTkuNCA3LjZjLTIyLjUtMTkuMy01MS41LTMzLjYtODMuMy0zMy42QzE1My44IDEyOCA5NiAxODguOCA5NiAyNjAuM2MwIDYuNi40IDEzLjEgMS40IDE5LjQtMi01NiA0MS44LTk3LjQgOTIuNi05Ny40IDI0LjIgMCA0Ni4yIDkuNCA2Mi42IDI0LjdsLTI1LjIgMjAuNGMtOC4zLS45LTE2LjggMS44LTIzLjEgOC4xLTExLjEgMTEtMTEuMSAyOC45IDAgNDAgMTEuMSAxMSAyOC45IDExIDQwIDAgNi4zLTYuMyA5LTE0LjkgOC4xLTIzLjFsNzUuMi04OC44YzYuMy02LjUtMy4zLTE1LjktOS41LTkuNnptLTgzLjggMTExLjVjLTUuNiA1LjUtMTQuNiA1LjUtMjAuMiAwLTUuNi01LjYtNS42LTE0LjYgMC0yMC4yczE0LjYtNS42IDIwLjIgMCA1LjYgMTQuNyAwIDIwLjJ6TTIyNCAzMkMxMDAuNSAzMiAwIDEzMi41IDAgMjU2czEwMC41IDIyNCAyMjQgMjI0IDIyNC0xMDAuNSAyMjQtMjI0UzM0Ny41IDMyIDIyNCAzMnptMCAzODRjLTg4LjIgMC0xNjAtNzEuOC0xNjAtMTYwUzEzNS44IDk2IDIyNCA5NnMxNjAgNzEuOCAxNjAgMTYwLTcxLjggMTYwLTE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3Vkc21pdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDIyNy42djU2LjlMMjg0LjQgNTEySDIyNy42TDAgMjg0LjRWMjI3LjZMMjI3LjYgMGg1Ni45TDUxMiAyMjcuNnptLTI1NiAxNjJhMTMzLjYgMTMzLjYgMCAxIDAgMC0yNjcuMSAxMzMuNiAxMzMuNiAwIDEgMCAwIDI2Ny4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZHZlcnNpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDYxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ4LjYgMzA0YzguMiA2OC41IDY3LjQgMTE1LjUgMTQ2IDExMS4zIDUxLjIgNDMuMyAxMzYuOCA0NS44IDE4Ni40LTUuNiA2OS4yIDEuMSAxMTguNS00NC42IDEzMS41LTk5LjUgMTQuOC02Mi41LTE4LjItMTMyLjUtOTIuMS0xNTUuMS0zMy04OC4xLTEzMS40LTEwMS41LTE4Ni41LTg1LTU3LjMgMTcuMy04NC4zIDUzLjItOTkuMyAxMDkuNy03LjggMi43LTI2LjUgOC45LTQ1IDI0LjEgMTEuNyAwIDE1LjIgOC45IDE1LjIgMTkuNXYyMC40YzAgMTAuNy04LjcgMTkuNS0xOS41IDE5LjVoLTIwLjJjLTEwLjcgMC0xOS41LTYtMTkuNS0xNi43VjI0MEg5OC44Qzk1IDI0MCA4OCAyNDQuMyA4OCAyNTEuOXY0MC40YzAgNi40IDUuMyAxMS44IDExLjcgMTEuOGg0OC45em0yMjcuNCA4Yy0xMC43IDQ2LjMgMjEuNyA3Mi40IDU1LjMgODYuOEMzMjQuMSA0MzIuNiAyNTkuNyAzNDggMjk2IDI4OGMtMzMuMiAyMS42LTMzLjcgNzEuMi0yOS4yIDkyLjktMTcuOS0xMi40LTUzLjgtMzIuNC01Ny40LTc5LjgtMy0zOS45IDIxLjUtNzUuNyA1Ny05My45QzI5NyAxOTEuNCAzNjkuOSAxOTguNyA0MDAgMjQ4Yy0xNC4xLTQ4LTUzLjgtNzAuMS0xMDEuOC03NC44IDMwLjktMzAuNyA2NC40LTUwLjMgMTE0LjItNDMuNyA2OS44IDkuMyAxMzMuMiA4Mi44IDY3LjcgMTUwLjUgMzUtMTYuMyA0OC43LTU0LjQgNDcuNS03Ni45bDEwLjUgMTkuNmMxMS44IDIyIDE1LjIgNDcuNiA5LjQgNzItOS4yIDM5LTQwLjYgNjguOC03OS43IDc2LjUtMzIuMSA2LjMtODMuMS01LjEtOTEuOC01OS4yek0xMjggMjA4SDg4LjJjLTguOSAwLTE2LjItNy4zLTE2LjItMTYuMnYtMzkuNmMwLTguOSA3LjMtMTYuMiAxNi4yLTE2LjJIMTI4YzguOSAwIDE2LjIgNy4zIDE2LjIgMTYuMnYzOS42YzAgOC45LTcuMyAxNi4yLTE2LjIgMTYuMnpNMTAuMSAxNjhDNC41IDE2OCAwIDE2My41IDAgMTU3Ljl2LTI3LjhjMC01LjYgNC41LTEwLjEgMTAuMS0xMC4xaDI3LjdjNS41IDAgMTAuMSA0LjUgMTAuMSAxMC4xdjI3LjhjMCA1LjYtNC41IDEwLjEtMTAuMSAxMC4xSDEwLjF6TTE2OCAxNDIuN3YtMjEuNGMwLTUuMSA0LjItOS4zIDkuMy05LjNoMjEuNGM1LjEgMCA5LjMgNC4yIDkuMyA5LjN2MjEuNGMwIDUuMS00LjIgOS4zLTkuMyA5LjNoLTIxLjRjLTUuMSAwLTkuMy00LjItOS4zLTkuM3pNNTYgMjM1LjV2MjVjMCA2LjMtNS4xIDExLjUtMTEuNCAxMS41SDE5LjRDMTMuMSAyNzIgOCAyNjYuOCA4IDI2MC41di0yNWMwLTYuMyA1LjEtMTEuNSAxMS40LTExLjVoMjUuMWM2LjQgMCAxMS41IDUuMiAxMS41IDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNtcGxpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjYuMTE5LDM4OC4xNjVhMy44MTYsMy44MTYsMCwwLDAtMi4yOTQtMy41LDMuOTQ2LDMuOTQ2LDAsMCwwLTEuNjI5LS4zODVMNzIuNiwzODQuM2ExOS4yNDMsMTkuMjQzLDAsMCwxLTE3LjkyNC0yNi4wMjVMODEuNTg1LDI1NS42OTJhMzUuNzIsMzUuNzIsMCwwLDEsMzIuMzczLTI2SDI2Mi41MjVhNy4wNyw3LjA3LDAsMCwwLDYuMzkyLTUuMTk0bDEwLjc2OS00MS4xMzFhMy44NDksMy44NDksMCwwLDAtMi4yMzctNC45MzcsMy43NTUsMy43NTUsMCwwLDAtMS4zNzctLjI2MWMtLjA2MywwLS4xMjYsMC0uMTg5LjAwNUgxMjcuMzhhMTA2LjgsMTA2LjgsMCwwLDAtOTYuOTksNzcuMUwzLjQ4MywzNTguODI0QTU3LjQ2OSw1Ny40NjksMCwwLDAsNTcuMzE0LDQzNnExLjQzLDAsMi44Ni0uMDcySDIwOC43NDJhNy4xMzEsNy4xMzEsMCwwLDAsNi4zOTEtNS4xOTNMMjI1LjgzOSwzODkuNkEzLjgyLDMuODIsMCwwLDAsMjI2LjExOSwzODguMTY1Wk0zMDYuNjU4LDgxLjJhMy44NjEsMy44NjEsMCwwLDAsLjI1MS0xLjM2N0EzLjgxMywzLjgxMywwLDAsMCwzMDMuMDc5LDc2Yy0uMDY0LDAtLjEyOCwwLS4xOTIsMGgtNDFBNy4wMzQsNy4wMzQsMCwwLDAsMjU1LjUsODEuMmwtMjEuMzQ3LDgwLjkxNWg1MS4xMzFaTTE4MC4zNjQsMzY4LjI0OUgyMzEuNUwyNjMuNDUyLDI0NS42OUgyMTIuMzIxWk01MTEuODUzLDc5LjcyM2EzLjgwOSwzLjgwOSwwLDAsMC0zLjgtMy42NjFjLS4wNTgsMC0uMTM3LDAtLjIzLjAwN2gtNDFhNy4xLDcuMSwwLDAsMC02LjU4NCw1LjEyOUwzNjguOTEsNDMwLjYzNGEzLjU0LDMuNTQsMCwwLDAtLjI2MiwxLjMzNSwzLjg3MywzLjg3MywwLDAsMCwzLjg2NCwzLjg2M2MuMDU2LDAsLjExMiwwLC4xNjksMGg0MWE3LjA2OCw3LjA2OCwwLDAsMCw2LjM5Mi01LjE5M0w1MTEuNTMzLDgxLjJBMy42MjQsMy42MjQsMCwwLDAsNTExLjg1Myw3OS43MjNaTTMyNC42NDksMzg0LjQ3aC00MWE3LjIsNy4yLDAsMCwwLTYuMzkyLDUuMTk0TDI2Ni41Miw0MzAuOGEzLjY2MiwzLjY2MiwwLDAsMC0uMjY4LDEuMzc0QTMuNzgzLDMuNzgzLDAsMCwwLDI3MC4wMjMsNDM2Yy4wNiwwLC4xNjYsMCwuMy0uMDEyaDQwLjkwNWE3LjAzNiw3LjAzNiwwLDAsMCw2LjM5MS01LjE5M2wxMC43NjktNDEuMTMxYTMuNzUsMy43NSwwLDAsMC0zLjQ0NS01LjIwOGMtLjEwOCwwLS4yMTcsMC0uMzI2LjAxNFptMzExLjMyNC0zMDguNGgtNDFhNy4wNjYsNy4wNjYsMCwwLDAtNi4zOTIsNS4xMjlsLTkxLjQ2LDM0OS40MzZhNC4wNzMsNC4wNzMsMCwwLDAtLjIyOSwxLjM0NywzLjg3MiwzLjg3MiwwLDAsMCwzLjg2MywzLjg1MWMuMDU2LDAsLjExMiwwLC4xNjksMGg0MC45NjhhNy4xLDcuMSwwLDAsMCw2LjM5Mi01LjE5M0w2MzkuNjgsODEuMmEzLjYyNCwzLjYyNCwwLDAsMCwuMzItMS40NzUsMy44NDEsMy44NDEsMCwwLDAtMy44MjEtMy41NjRjLS4wNjgsMC0uMTM3LDAtLjIwNi4wMDZaTTM3MS41NjIsMjI1LjIzNmwxMC44LTQxLjFhNC4zNjksNC4zNjksMCwwLDAsLjIyNy0xLjM4OCwzLjg2OSwzLjg2OSwwLDAsMC0zLjg2MS0zLjg0MmMtLjA1NywwLS4xMTMsMC0uMTY5LDBoLTQxLjFhNy4yOTIsNy4yOTIsMCwwLDAtNi4zOTEsNS4yMjZsLTEwLjgzNCw0MS4xYTQuNDE3LDQuNDE3LDAsMCwwLS4yNiwxLjQ5M2MwLC4wNjksMCwuMTM4LDAsLjIwNmEzLjc3NiwzLjc3NiwwLDAsMCwzLjc1NywzLjUwN2MuMDc2LDAsLjE4LDAsLjMtLjAxMmg0MS4xMjlBNy4wMzQsNy4wMzQsMCwwLDAsMzcxLjU2MiwyMjUuMjM2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4yODUgMTU5LjcwNGwtMjM0LTE1NmMtNy45ODctNC45MTUtMTYuNTExLTQuOTYtMjQuNTcxIDBsLTIzNCAxNTZDMy43MTQgMTYzLjcwMyAwIDE3MC44NDcgMCAxNzcuOTg5djE1NS45OTljMCA3LjE0MyAzLjcxNCAxNC4yODYgOS43MTUgMTguMjg2bDIzNCAxNTYuMDIyYzcuOTg3IDQuOTE1IDE2LjUxMSA0Ljk2IDI0LjU3MSAwbDIzNC0xNTYuMDIyYzYtMy45OTkgOS43MTUtMTEuMTQzIDkuNzE1LTE4LjI4NlYxNzcuOTg5Yy0uMDAxLTcuMTQyLTMuNzE1LTE0LjI4Ni05LjcxNi0xOC4yODV6TTI3OCA2My4xMzFsMTcyLjI4NiAxMTQuODU4LTc2Ljg1NyA1MS40MjlMMjc4IDE2NS43MDNWNjMuMTMxem0tNDQgMHYxMDIuNTcybC05NS40MjkgNjMuNzE1LTc2Ljg1Ny01MS40MjlMMjM0IDYzLjEzMXpNNDQgMjE5LjEzMmw1NS4xNDMgMzYuODU3TDQ0IDI5Mi44NDZ2LTczLjcxNHptMTkwIDIyOS43MTVMNjEuNzE0IDMzMy45ODlsNzYuODU3LTUxLjQyOUwyMzQgMzQ2LjI3NXYxMDIuNTcyem0yMi0xNDAuODU4bC03Ny43MTUtNTIgNzcuNzE1LTUyIDc3LjcxNSA1Mi03Ny43MTUgNTJ6bTIyIDE0MC44NThWMzQ2LjI3NWw5NS40MjktNjMuNzE1IDc2Ljg1NyA1MS40MjlMMjc4IDQ0OC44NDd6bTE5MC0xNTYuMDAxbC01NS4xNDMtMzYuODU3TDQ2OCAyMTkuMTMydjczLjcxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kaWVwaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ3MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIyLjUgMjAyLjljMzAuNyAwIDMzLjUgNTMuMS0uMyA1My4xaC0xMC44djQ0LjNoLTI2LjZ2LTk3LjRoMzcuN3pNNDcyIDM1Mi42QzQyOS45IDQ0NC41IDM1MC40IDUwNCAyNDggNTA0IDExMSA1MDQgMCAzOTMgMCAyNTZTMTExIDggMjQ4IDhjOTcuNCAwIDE3Mi44IDUzLjcgMjE4LjIgMTM4LjRsLTE4NiAxMDguOEw0NzIgMzUyLjZ6bS0zOC41IDEyLjVsLTYwLjMtMzAuN2MtMjcuMSA0NC4zLTcwLjQgNzEuNC0xMjIuNCA3MS40LTgyLjUgMC0xNDkuMi02Ni43LTE0OS4yLTE0OC45IDAtODIuNSA2Ni43LTE0OS4yIDE0OS4yLTE0OS4yIDQ4LjQgMCA4OC45IDIzLjUgMTE2LjkgNjMuNGw1OS41LTM0LjZjLTQwLjctNjIuNi0xMDQuNy0xMDAtMTc5LjItMTAwLTEyMS4yIDAtMjE5LjUgOTguMy0yMTkuNSAyMTkuNVMxMjYuOCA0NzUuNSAyNDggNDc1LjVjNzguNiAwIDE0Ni41LTQyLjEgMTg1LjUtMTEwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbmZsdWVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4zIDQxMi4yYy00LjUgNy42LTIuMSAxNy41IDUuNSAyMi4ybDEwNS45IDY1LjJjNy43IDQuNyAxNy43IDIuNCAyMi40LTUuMyAwLS4xLjEtLjIuMS0uMiA2Ny4xLTExMi4yIDgwLjUtOTUuOSAyODAuOS0uNyA4LjEgMy45IDE3LjguNCAyMS43LTcuNy4xLS4xLjEtLjMuMi0uNGw1MC40LTExNC4xYzMuNi04LjEtLjEtMTcuNi04LjEtMjEuMy0yMi4yLTEwLjQtNjYuMi0zMS4yLTEwNS45LTUwLjNDMTI3LjUgMTc5IDQ0LjYgMzQ1LjMgMi4zIDQxMi4yem01MDcuNC0zMTIuMWM0LjUtNy42IDIuMS0xNy41LTUuNS0yMi4yTDM5OC40IDEyLjhjLTcuNS01LTE3LjYtMy4xLTIyLjYgNC40LS4yLjMtLjQuNi0uNiAxLTY3LjMgMTEyLjYtODEuMSA5NS42LTI4MC42LjktOC4xLTMuOS0xNy44LS40LTIxLjcgNy43LS4xLjEtLjEuMy0uMi40TDIyLjIgMTQxLjNjLTMuNiA4LjEuMSAxNy42IDguMSAyMS4zIDIyLjIgMTAuNCA2Ni4zIDMxLjIgMTA2IDUwLjQgMjQ4IDEyMCAzMzAuOC00NS40IDM3My40LTExMi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb25uZWN0ZGV2ZWxvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTAuNSAyNDFsLTUwLjA4OS04Ni43ODZjMS4wNzEtMi4xNDIgMS44NzUtNC41NTMgMS44NzUtNy4yMzIgMC04LjAzNi02LjY5Ni0xNC43MzMtMTQuNzMyLTE1LjAwMWwtNTUuNDQ3LTk1Ljg5M2MuNTM2LTEuNjA3IDEuMDcxLTMuMjE0IDEuMDcxLTQuODIxIDAtOC41NzEtNi45NjQtMTUuMjY4LTE1LjI2OC0xNS4yNjgtNC44MjEgMC04LjgzOSAyLjE0My0xMS43ODYgNS42MjVIMjk5LjUxOEMyOTYuODM5IDE4LjE0MyAyOTIuODIxIDE2IDI4OCAxNnMtOC44MzkgMi4xNDMtMTEuNTE4IDUuNjI1SDE3MC40MTFDMTY3LjQ2NCAxOC4xNDMgMTYzLjQ0NyAxNiAxNTguNjI1IDE2Yy04LjMwMyAwLTE1LjI2OCA2LjY5Ni0xNS4yNjggMTUuMjY4IDAgMS42MDcuNTM2IDMuNDgyIDEuMDcyIDQuODIxbC01NS45ODMgOTcuMjMzYy01LjM1NiAyLjQxLTkuMTA3IDcuNS05LjEwNyAxMy42NjEgMCAuNTM1LjI2OCAxLjA3MS4yNjggMS42MDdsLTUzLjMwNCA5Mi4xNDNjLTcuMjMyIDEuMzM5LTEyLjU5IDcuNS0xMi41OSAxNSAwIDcuMjMyIDUuMDg5IDEzLjM5MyAxMi4wNTQgMTVsNTUuMTc5IDk1LjM1OGMtLjUzNiAxLjYwNy0uODA0IDIuOTQ2LS44MDQgNC44MjEgMCA3LjIzMiA1LjA4OSAxMy4zOTMgMTIuMDU0IDE0LjczMmw1MS42OTcgODkuNzMyYy0uNTM2IDEuNjA3LTEuMDcxIDMuNDgyLTEuMDcxIDUuMzU3IDAgOC41NzEgNi45NjQgMTUuMjY4IDE1LjI2OCAxNS4yNjggNC44MjEgMCA4LjgzOS0yLjE0MyAxMS41MTgtNS4zNTdoMTA2Ljg3NUMyNzkuMTYxIDQ5My44NTcgMjgzLjQ0NyA0OTYgMjg4IDQ5NnM4LjgzOS0yLjE0MyAxMS41MTgtNS4zNTdoMTA3LjE0M2MyLjY3OCAyLjk0NiA2LjY5NiA0LjgyMSAxMC45ODIgNC44MjEgOC41NzEgMCAxNS4yNjgtNi45NjQgMTUuMjY4LTE1LjI2OCAwLTEuNjA3LS4yNjctMi45NDYtLjgwMy00LjI4NWw1MS42OTctOTAuMjY4YzYuOTY0LTEuMzM5IDEyLjA1NC03LjUgMTIuMDU0LTE0LjczMiAwLTEuNjA3LS4yNjgtMy4yMTQtLjgwNC00LjgyMWw1NC45MTEtOTUuMzU4YzYuOTY0LTEuMzM5IDEyLjMyMi03LjUgMTIuMzIyLTE1LS4wMDItNy4yMzItNS4wOTItMTMuMzkzLTExLjc4OC0xNC43MzJ6TTE1My41MzUgNDUwLjczMmwtNDMuNjYtNzUuODAzaDQzLjY2djc1LjgwM3ptMC04My44MzloLTQzLjY2Yy0uMjY4LTEuMDcxLS44MDQtMi4xNDItMS4zMzktMy4yMTRsNDQuOTk5LTQ3LjQxdjUwLjYyNHptMC02Mi40MTFsLTUwLjM1NyA1My4zMDRjLTEuMzM5LS41MzYtMi42NzktMS4zNC00LjAxOC0xLjYwN0w0My40NDcgMjU5Ljc1Yy41MzUtMS4zMzkuNTM1LTIuNjc5LjUzNS00LjAxOHMwLTIuNDEtLjI2OC0zLjQ4Mmw1MS45NjUtOTBjMi42NzktLjI2OCA1LjM1Ny0xLjA3MiA3Ljc2OC0yLjY3OWw1MC4wODkgNTEuOTY1djkyLjk0NnptMC0xMDIuMzIybC00NS44MDMtNDcuNDFjMS4zMzktMi4xNDMgMi4xNDMtNC44MjEgMi4xNDMtNy43NjcgMC0uMjY4LS4yNjgtLjgwNC0uMjY4LTEuMDcybDQzLjkyOC0xNS44MDR2NzIuMDUzem0wLTgwLjYyNWwtNDMuNjYgMTUuODA0IDQzLjY2LTc1LjUzNnY1OS43MzJ6bTMyNi41MTkgMzkuMTA4bC44MDQgMS4zMzlMNDQ1LjUgMzI5LjEyNWwtNjMuNzUtNjcuMjMyIDk4LjAzNi0xMDEuNTE4LjI2OC4yNjh6TTI5MS43NSAzNTUuMTA3bDExLjUxOCAxMS43ODZIMjgwLjVsMTEuMjUtMTEuNzg2em0tLjI2OC0xMS4yNWwtODMuMzAzLTg1LjQ0NiA3OS41NTMtODQuMzc1IDgzLjAzNiA4Ny41ODktNzkuMjg2IDgyLjIzMnptNS4zNTcgNS44OTNsNzkuMjg2LTgyLjIzMiA2Ny41IDcxLjI1LTUuODkyIDI4LjEyNUgzMTMuNzE0bC0xNi44NzUtMTcuMTQzek00MTAuNDExIDQ0LjM5M2MxLjA3MS41MzYgMi4xNDIgMS4wNzIgMy40ODIgMS4zNGw1Ny44NTcgMTAwLjcxNHYuNTM2YzAgMi45NDYuODAzIDUuNjI0IDIuMTQzIDcuNzY3TDM3Ni4zOTMgMjU2bC04My4wMzUtODcuNTg5TDQxMC40MTEgNDQuMzkzem0tOS4xMDctMi4xNDNMMjg3LjczMiAxNjIuNTE4bC01Ny4wNTQtNjAuMjY4IDE2Ni4zMzktNjBoNC4yODd6bS0xMjMuNDgzIDBjMi42NzggMi42NzggNi4xNiA0LjI4NSAxMC4xNzkgNC4yODVzNy41LTEuNjA3IDEwLjE3OS00LjI4NWg3NUwyMjQuNzg2IDk1LjgyMSAxNzMuODkzIDQyLjI1aDEwMy45Mjh6bS0xMTYuMjQ5IDUuNjI1bDEuMDcxLTIuMTQyYTMzLjgzNCAzMy44MzQgMCAwIDAgMi42NzktLjgwNGw1MS4xNjEgNTMuODQtNTQuOTExIDE5LjgyMVY0Ny44NzV6bTAgNzkuMjg2bDYwLjgwMy0yMS45NjQgNTkuNzMyIDYzLjIxNC03OS41NTMgODQuMTA3LTQwLjk4Mi00Mi4wNTN2LTgzLjMwNHptMCA5Mi42NzhMMTk4IDI1Ny42MDdsLTM2LjQyOCAzOC4zMDR2LTc2LjA3MnptMCA4Ny44NThsNDIuMDUzLTQ0LjQ2NCA4Mi43NjggODUuOTgyLTE3LjE0MyAxNy42NzhIMTYxLjU3MnYtNTkuMTk2em02Ljk2NCAxNjIuMDUzYy0xLjYwNy0xLjYwNy0zLjQ4Mi0yLjY3OC01Ljg5My0zLjQ4MmwtMS4wNzEtMS42MDd2LTg5LjczMmg5OS45MWwtOTEuNjA3IDk0LjgyMWgtMS4zMzl6bTEyOS45MTEgMGMtMi42NzktMi40MS02LjQyOC00LjI4NS0xMC40NDctNC4yODVzLTcuNzY3IDEuODc1LTEwLjQ0NyA0LjI4NWgtOTYuNDI5bDkxLjYwNy05NC44MjFoMzguMzA0bDkxLjYwNyA5NC44MjFIMjk4LjQ0N3ptMTIwLTExLjc4NmwtNC4yODYgNy41Yy0xLjMzOS4yNjgtMi40MS44MDMtMy40ODIgMS4zMzlsLTg5LjE5Ni05MS44NzVoMTE0LjM3NmwtMTcuNDEyIDgzLjAzNnptMTIuODU2LTIyLjIzMmwxMi44NTgtNjAuODAzaDIxLjk2NGwtMzQuODIyIDYwLjgwM3ptMzQuODIyLTY4LjgzOWgtMjAuMzU3bDQuNTUzLTIxLjE2IDE3LjE0MyAxOC4yMTRjLS41MzUuODAzLTEuMDcxIDEuODc0LTEuMzM5IDIuOTQ2em02Ni4xNjEtMTA3LjQxMWwtNTUuNDQ3IDk2LjY5N2MtMS4zMzkuNTM1LTIuNjc5IDEuMDcxLTQuMDE4IDEuODc0bC0yMC42MjUtMjEuOTY0IDM0LjU1NC0xNjMuOTI4IDQ1LjgwMyA3OS4yODZjLS4yNjcgMS4zMzktLjgwMyAyLjY3OC0uODAzIDQuMjg1IDAgMS4zMzkuMjY4IDIuNDExLjUzNiAzLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb250YW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUuNCAzMDVjMTQuNCA2Ny4xIDI2LjQgMTI5IDY4LjIgMTc1SDM0Yy0xOC43IDAtMzQtMTUuMi0zNC0zNFY2NmMwLTE4LjcgMTUuMi0zNCAzNC0zNGg1Ny43Qzc3LjkgNDQuNiA2NS42IDU5LjIgNTQuOCA3NS42Yy00NS40IDcwLTI3IDE0Ni44LTkuNCAyMjkuNHpNNDc4IDMyaC05MC4yYzIxLjQgMjEuNCAzOS4yIDQ5LjUgNTIuNyA4NC4xbC0xMzcuMSAyOS4zYy0xNC45LTI5LTM3LjgtNTMuMy04Mi42LTQzLjktMjQuNiA1LjMtNDEgMTkuMy00OC4zIDM0LjYtOC44IDE4LjctMTMuMiAzOS44IDguMiAxNDAuMyAyMS4xIDEwMC4yIDMzLjcgMTE3LjcgNDkuNSAxMzEuMiAxMi45IDExLjEgMzMuNCAxNyA1OC4zIDExLjcgNDQuNS05LjQgNTUuNy00MC43IDU3LjQtNzMuMmwxMzcuNC0yOS42YzMuMiA3MS41LTE4LjcgMTI1LjItNTcuNCAxNjMuNkg0NzhjMTguNyAwIDM0LTE1LjIgMzQtMzRWNjZjMC0xOC44LTE1LjItMzQtMzQtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvdHRvbkJ1cmVhdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzQuMzEgMzMwLjQxYy0yMy42NiA5MS44NS05NC4yMyAxNDQuNTktMjAxLjkgMTQ4LjM1VjQyOS42YzAtNDggMjYuNDEtNzQuMzkgNzQuMzktNzQuMzkgNjIgMCA5OS4yLTM3LjIgOTkuMi05OS4yMSAwLTYxLjM3LTM2LjUzLTk4LjI4LTk3LjM4LTk5LjA2LTMzLTY5LjMyLTE0Ni41LTY0LjY1LTE3Ny4yNCAwQzExMC41MiAxNTcuNzIgNzQgMTk0LjYzIDc0IDI1NmMwIDYyLjEzIDM3LjI3IDk5LjQxIDk5LjQgOTkuNDEgNDggMCA3NC41NSAyNi4yMyA3NC41NSA3NC4zOVY0NzljLTEzNC40My01LTIxMS4xLTg1LjA3LTIxMS4xLTIyMyAwLTE0MS44MiA4MS4zNS0yMjMuMiAyMjMuMi0yMjMuMiAxMTQuNzcgMCAxODkuODQgNTMuMiAyMTQuNjkgMTQ4LjgxSDUwMEM0NzMuODggNzEuNTEgMzg4LjIyIDggMjU5LjgyIDggMTA1IDggMTIgMTAxLjE5IDEyIDI1NS44MiAxMiA0MTEuMTQgMTA1LjE5IDUwNC4zNCAyNTkuODIgNTA0YzEyOC4yNyAwIDIxMy44Ny02My44MSAyMzkuNjctMTczLjU5ek0zNTcgMTgyLjMzYzQxLjM3IDMuNDUgNjQuMiAyOSA2NC4yIDczLjY3IDAgNDgtMjYuNDMgNzQuNDEtNzQuNCA3NC40MS0yOC42MSAwLTQ5LjMzLTkuNTktNjEuNTktMjcuMzMgODMuMDYtMTYuNTUgNzUuNTktOTkuNjcgNzEuNzktMTIwLjc1em0tODEuNjggOTcuMzZjLTIuNDYtMTAuMzQtMTYuMzMtODcgNTYuMjMtOTcgMi4yNyAxMC4wOSAxNi41MiA4Ny4xMS01Ni4yNiA5N3pNMjYwIDEzMmMyOC42MSAwIDQ5IDkuNjcgNjEuNDQgMjcuNjEtMjguMzYgNS40OC00OS4zNiAyMC41OS02MS41OSA0My40NS0xMi4yMy0yMi44Ni0zMy4yMy0zOC02MS42LTQzLjQ1IDEyLjQxLTE3LjY5IDMzLjI3LTI3LjM1IDYxLjU3LTI3LjM1em0tNzEuNTIgNTAuNzJjNzMuMTcgMTAuNTcgNTguOTEgODYuODEgNTYuNDkgOTctNzIuNDEtOS44NC01OS04Ni45NS01Ni4yNS05N3pNMTczLjIgMzMwLjQxYy00OCAwLTc0LjQtMjYuNC03NC40LTc0LjQxIDAtNDQuMzYgMjIuODYtNzAgNjQuMjItNzMuNjctNi43NSAzNy4yLTEuMzggMTA2LjUzIDcxLjY1IDEyMC43NS0xMi4xNCAxNy42My0zMi44NCAyNy4zLTYxLjE0IDI3LjN6bTUzLjIxIDEyLjM5QTgwLjggODAuOCAwIDAgMCAyNjAgMzA5LjI1YzcuNzcgMTQuNDkgMTkuMzMgMjUuNTQgMzMuODIgMzMuNTVhODAuMjggODAuMjggMCAwIDAtMzMuNTggMzMuODNjLTgtMTQuNS0xOS4wNy0yNi4yMy0zMy41Ni0zMy44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3BhbmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMC4zIDIyMC4yYy01LjYtMjQuOC0yNi45LTQxLjItNTEtNDEuMmgtMzdjLTcuMSAwLTEyLjUgNC41LTE0LjMgMTAuOUw3My4xIDMyMGwyNC43LS4xYzYuOCAwIDEyLjMtNC41IDE0LjItMTAuN2wyNS44LTk1LjdoMTkuOGM4LjQgMCAxNi4yIDUuNiAxOC4zIDE0LjggMi41IDEwLjktNS45IDIyLjYtMTguMyAyMi42aC0xMC4zYy03IDAtMTIuNSA0LjYtMTQuMyAxMC44bC02LjQgMjMuOGgzMmMzNy4yIDAgNTguMy0zNi4yIDUxLjctNjUuM3ptLTE1Ni41IDI4aDE4LjZjNi45IDAgMTIuNC00LjQgMTQuMy0xMC45bDYuMi0yMy42aC00MEMzMCAyMTMuNyA5IDIyNy44IDEuNyAyNTQuOC03IDI4OC42IDE4LjUgMzIwIDUyIDMyMGgxMi40bDcuMS0yNi4xYzEuMi00LjQtMi4yLTguMy02LjQtOC4zSDUzLjhjLTI0LjcgMC0yNC45LTM3LjQgMC0zNy40em0yNDcuNS0zNC44aC03Ny45bC0zLjUgMTMuNGMtMi40IDkuNiA0LjUgMTguNSAxNC4yIDE4LjVoNTcuNWM0IDAgMi40IDQuMyAyLjEgNS4zbC04LjYgMzEuOGMtLjQgMS40LS45IDUuMy01LjUgNS4zaC0zNC45Yy01LjMgMC01LjMtNy45IDAtNy45aDIxLjZjNi44IDAgMTIuMy00LjYgMTQuMi0xMC44bDMuNS0xMy4yaC00OC40Yy0zOS4yIDAtNDMuNiA2My44LS43IDYzLjhsNTcuNS4yYzExLjIgMCAyMC42LTcuMiAyMy40LTE3LjhsMTQtNTEuOGM0LjgtMTkuMi05LjctMzYuOC0yOC41LTM2Ljh6TTYzMy4xIDE3OWgtMTguOWMtNC45IDAtOS4yIDMuMi0xMC40IDcuOUw1NjguMiAzMjBjMjAuNyAwIDM5LjgtMTMuOCA0NC45LTM0LjVsMjYuNS05OC4yYzEuMi00LjMtMi04LjMtNi41LTguM3ptLTIzNi4zIDM0Ljd2LjFoLTQ4LjNsLTI2LjIgOThjLTEuMiA0LjQgMi4yIDguMyA2LjQgOC4zaDE4LjljNC44IDAgOS4yLTMgMTAuNC03LjhsMTcuMi02NEgzOTVjMTIuNSAwIDIxLjQgMTEuOCAxOC4xIDIzLjRsLTEwLjYgNDBjLTEuMiA0LjMgMS45IDguMyA2LjQgOC4zSDQyOGM0LjYgMCA5LjEtMi45IDEwLjMtNy44bDguOC0zMy4xYzktMzMuMS0xNS45LTY1LjQtNTAuMy02NS40em05OC4zIDc0LjZjLTMuNiAwLTYtMy40LTUuMS02LjdsOC0zMGMuOS0zLjkgMy43LTYgNy44LTZoMzIuOWMyLjYgMCA0LjYgMi40IDMuOSA1LjFsLS43IDIuNmMtLjYgMi0xLjkgMy0zLjkgM2gtMjEuNmMtNyAwLTEyLjYgNC42LTE0LjIgMTAuOGwtMy41IDEzaDUzLjRjMTAuNSAwIDIwLjMtNi42IDIzLjItMTcuNmwzLjItMTJjNC45LTE5LjEtOS4zLTM2LjgtMjguMy0zNi44aC00Ny4zYy0xNy45IDAtMzMuOCAxMi0zOC42IDI5LjZsLTEwLjggNDBjLTUgMTcuNyA4LjMgMzYuNyAyOC4zIDM2LjdoNjYuN2M2LjggMCAxMi4zLTQuNSAxNC4yLTEwLjdsNS43LTIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNCeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTQuOSAxOTQuNHYxMDEuNGgtMjguM3YxMjAuNWgtNzcuMVYyOTUuOWgtMjguM1YxOTQuNGMwLTQuNCAxLjYtOC4yIDQuNi0xMS4zIDMuMS0zLjEgNi45LTQuNyAxMS4zLTQuN0gyOTljNC4xIDAgNy44IDEuNiAxMS4xIDQuNyAzLjEgMy4yIDQuOCA2LjkgNC44IDExLjN6bS0xMDEuNS02My43YzAtMjMuMyAxMS41LTM1IDM0LjUtMzVzMzQuNSAxMS43IDM0LjUgMzVjMCAyMy0xMS41IDM0LjUtMzQuNSAzNC41cy0zNC41LTExLjUtMzQuNS0zNC41ek0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zTmNFdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNyA4QzEwMy42IDggMCAxMjQuOCAwIDI1NmMwIDEzNi4zIDExMS43IDI0OCAyNDcuNyAyNDhDMzc3LjkgNTA0IDQ5NiA0MDMuMSA0OTYgMjU2IDQ5NiAxMTcgMzg4LjQgOCAyNDcuNyA4em0uNiA0NTAuN2MtMTEyIDAtMjAzLjYtOTIuNS0yMDMuNi0yMDIuNyAwLTIzLjIgMy43LTQ1LjIgMTAuOS02Nmw2NS43IDI5LjFoLTQuN3YyOS41aDIzLjNjMCA2LjItLjQgMy4yLS40IDE5LjVoLTIyLjh2MjkuNWgyN2MxMS40IDY3IDY3LjIgMTAxLjMgMTI0LjYgMTAxLjMgMjYuNiAwIDUwLjYtNy45IDY0LjgtMTUuOGwtMTAtNDYuMWMtOC43IDQuNi0yOC4yIDEwLjgtNDcuMyAxMC44LTI4LjIgMC01OC4xLTEwLjktNjcuMy01MC4yaDkwLjNsMTI4LjMgNTYuOGMtMS41IDIuMS01Ni4yIDEwNC4zLTE3OC44IDEwNC4zem0tMTYuNy0xOTAuNmwtLjUtLjQuOS40aC0uNHptNzcuMi0xOS41aDMuN3YtMjkuNWgtNzAuM2wtMjguNi0xMi42YzIuNS01LjUgNS40LTEwLjUgOC44LTE0LjMgMTIuOS0xNS44IDMxLjEtMjIuNCA1MS4xLTIyLjQgMTguMyAwIDM1LjMgNS40IDQ2LjEgMTBsMTEuNi00Ny4zYy0xNS02LjYtMzctMTIuNC02Mi4zLTEyLjQtMzkgMC03Mi4yIDE1LjgtOTUuOSA0Mi4zLTUuMyA2LjEtOS44IDEyLjktMTMuOSAyMC4xbC04MS42LTM2LjFjNjQuNi05Ni44IDE1Ny43LTkzLjYgMTcwLjctOTMuNiAxMTMgMCAyMDMgOTAuMiAyMDMgMjAzLjQgMCAxOC43LTIuMSAzNi4zLTYuMyA1Mi45bC0xMzYuMS02MC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNOY0pwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny43IDhDMTAzLjYgOCAwIDEyNC44IDAgMjU2YzAgMTM2LjQgMTExLjggMjQ4IDI0Ny43IDI0OEMzNzcuOSA1MDQgNDk2IDQwMy4yIDQ5NiAyNTYgNDk2IDExNy4yIDM4OC41IDggMjQ3LjcgOHptLjYgNDUwLjdjLTExMiAwLTIwMy42LTkyLjUtMjAzLjYtMjAyLjcgMC0yMS4xIDMtNDEuMiA5LTYwLjNsMTI3IDU2LjVoLTI3Ljl2MzguNmg1OC4xbDUuNyAxMS44djE4LjdoLTYzLjhWMzYwaDYzLjh2NTZoNjEuN3YtNTZoNjQuMnYtMzUuN2w4MSAzNi4xYy0xLjUgMi4yLTU3LjEgOTguMy0xNzUuMiA5OC4zem04Ny42LTEzNy4zaC01Ny42di0xOC43bDIuOS01LjYgNTQuNyAyNC4zem02LjUtNTEuNHYtMTcuOGgtMzguNmw2My0xMTZIMzAxbC00My40IDk2LTIzLTEwLjItMzkuNi04NS43aC02NS44bDI3LjMgNTEtODEuOS0zNi41YzI3LjgtNDQuMSA4Mi42LTk4LjEgMTczLjctOTguMSAxMTIuOCAwIDIwMyA5MCAyMDMgMjAzLjQgMCAyMS0yLjcgNDAuNi03LjkgNTlsLTEwMS00NS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNOYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4Ny40IDggNDk2IDExNS45IDQ5NiAyNTZjMCAxNDcuMi0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy4xIDUwNCAwIDM5My4yIDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4ek01NS44IDE4OS4xYy03LjQgMjAuNC0xMS4xIDQyLjctMTEuMSA2Ni45IDAgMTEwLjkgOTIuMSAyMDIuNCAyMDMuNyAyMDIuNCAxMjIuNCAwIDE3Ny4yLTEwMS44IDE3OC41LTEwNC4xbC05My40LTQxLjZjLTcuNyAzNy4xLTQxLjIgNTMtNjguMiA1NS40djM4LjFoLTI4LjhWMzY4Yy0yNy41LS4zLTUyLjYtMTAuMi03NS4zLTI5LjdsMzQuMS0zNC41YzMxLjcgMjkuNCA4Ni40IDMxLjggODYuNC0yLjIgMC02LjItMi4yLTExLjItNi42LTE1LjEtMTQuMi02LTEuOC0uMS0yMTkuMy05Ny40ek0yNDguNCA1Mi4zYy0zOC40IDAtMTEyLjQgOC43LTE3MC41IDkzbDk0LjggNDIuNWMxMC0zMS4zIDQwLjQtNDIuOSA2My44LTQ0LjN2LTM4LjFoMjguOHYzOC4xYzIyLjcgMS4yIDQzLjQgOC45IDYyIDIzTDI5NSAxOTkuN2MtNDIuNy0yOS45LTgzLjUtOC03MCAxMS4xIDUzLjQgMjQuMSA0My44IDE5LjggOTMgNDEuNmwxMjcuMSA1Ni43YzQuMS0xNy40IDYuMi0zNS4xIDYuMi01My4xIDAtNTctMTkuOC0xMDUtNTkuMy0xNDMuOS0zOS4zLTM5LjktODcuMi01OS44LTE0My42LTU5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem05NCAxNDQuM3Y0Mi41SDE2Mi4xVjE5N2gxODAuM3ptMCA3OS44djQyLjVIMTYyLjF2LTQyLjVoMTgwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1BkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMTA0LjcgOCAwIDEyMy4xIDAgMjU2YzAgMTM4LjUgMTEzLjYgMjQ4IDI0Ny42IDI0OEMzNzcuNSA1MDQgNDk2IDQwMy4xIDQ5NiAyNTYgNDk2IDExOC4xIDM4OS40IDggMjQ3LjYgOHptLjggNDUwLjhjLTExMi41IDAtMjAzLjctOTMtMjAzLjctMjAyLjggMC0xMDUuNCA4NS41LTIwMy4zIDIwMy43LTIwMy4zIDExMi42IDAgMjAyLjkgODkuNSAyMDIuOCAyMDMuMyAwIDEyMS43LTk5LjYgMjAyLjgtMjAyLjggMjAyLjh6TTMxNi43IDE4NmgtNTMuMnYxMzcuMmg1My4yYzIxLjQgMCA3MC01LjEgNzAtNjguNiAwLTYzLjQtNDguNi02OC42LTcwLTY4LjZ6bS44IDEwOC41aC0xOS45di03OS43bDE5LjQtLjFjMy44IDAgMzUtMi4xIDM1IDM5LjkgMCAyNC42LTEwLjUgMzkuOS0zNC41IDM5Ljl6TTIwMy43IDE4NmgtNjguMnYxMzcuM2gzNC42VjI3OWgyN2M1NC4xIDAgNTcuMS0zNy41IDU3LjEtNDYuNSAwLTMxLTE2LjgtNDYuNS01MC41LTQ2LjV6bS00LjkgNjcuM2gtMjkuMnYtNDEuNmgyOC4zYzMwLjkgMCAyOC44IDQxLjYuOSA0MS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNQZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOS4xIDAgMjU2YzAgMTM3IDExMSAyNDggMjQ4IDI0OHMyNDgtMTExIDI0OC0yNDhDNDk2IDExOS4xIDM4NSA4IDI0OCA4em0wIDQ0OS41Yy0xMzkuMiAwLTIzNS44LTEzOC0xOTAuMi0yNjcuOWw3OC44IDM1LjFjLTIuMSAxMC41LTMuMyAyMS41LTMuMyAzMi45IDAgOTkgNzMuOSAxMjYuOSAxMjAuNCAxMjYuOSAyMi45IDAgNTMuNS02LjcgNzkuNC0yOS41TDI5NyAzMTEuMWMtNS41IDYuMy0xNy42IDE2LjctMzYuMyAxNi43LTM3LjggMC01My43LTM5LjktNTMuOS03MS45IDIzMC40IDEwMi42IDIxNi41IDk2LjUgMjE3LjkgOTYuOC0zNC4zIDYyLjQtMTAwLjYgMTA0LjgtMTc2LjcgMTA0Ljh6bTE5NC4yLTE1MGwtMjI0LTEwMGMxOC44LTM0IDU0LjktMzAuNyA3NC43LTExbDQwLjQtNDEuNmMtMjcuMS0yMy4zLTU4LTI3LjUtNzguMS0yNy41LTQ3LjQgMC04MC45IDIwLjUtMTAwLjcgNTEuNmwtNzQuOS0zMy40YzM2LjEtNTQuOSA5OC4xLTkxLjIgMTY4LjUtOTEuMiAxMTEuMSAwIDIwMS41IDkwLjQgMjAxLjUgMjAxLjUgMCAxOC0yLjQgMzUuNC02LjggNTItLjMtLjEtLjQtLjItLjYtLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1JlbWl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0xNjEuNyAyMDcuN2w0LjkgMi4ydjcwYy03LjIgMy42LTYzLjQgMjcuNS02Ny4zIDI4LjgtNi41LTEuOC0xMTMuNy00Ni44LTEzNy4zLTU2LjJsLTY0LjIgMjYuNi02My4zLTI3LjV2LTYzLjhsNTkuMy0yNC44Yy0uNy0uNy0uNCA1LS40LTcwLjRsNjcuMy0yOS43TDM2MSAxNzguNXY2MS42bDQ5LjEgMjAuM3ptLTcwLjQgODEuNXYtNDMuOGgtLjR2LTEuOGwtMTEzLjgtNDYuNVYyOTVsMTEzLjggNDYuOXYtLjRsLjQuNHptNy41LTU3LjZsMzkuOS0xNi40LTM2LjgtMTUuNS0zOSAxNi40IDM1LjkgMTUuNXptNTIuMyAzOC4xdi00M0wzNTUuMiAyOTh2NDMuNGw0NC4zLTE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNTYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3pNMTM3LjcgMjIxYzEzLTgzLjkgODAuNS05NS43IDEwOC45LTk1LjcgOTkuOCAwIDEyNy41IDgyLjUgMTI3LjUgMTM0LjIgMCA2My42LTQxIDEzMi45LTEyOC45IDEzMi45LTM4LjkgMC05OS4xLTIwLTEwOS40LTk3aDYyLjVjMS41IDMwLjEgMTkuNiA0NS4yIDU0LjUgNDUuMiAyMy4zIDAgNTgtMTguMiA1OC04Mi44IDAtODIuNS00OS4xLTgwLjYtNTYuNy04MC42LTMzLjEgMC01MS43IDE0LjYtNTUuOCA0My44aDE4LjJsLTQ5LjIgNDkuMi00OS00OS4yaDE5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhbXBsaW5nUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptMTA3IDIwNS42Yy00LjcgMC05IDIuOC0xMC43IDcuMmwtNCA5LjUtMTEtOTIuOGMtMS43LTEzLjktMjItMTMuNC0yMy4xLjRsLTQuMyA1MS40LTUuMi02OC44Yy0xLjEtMTQuMy0yMi4xLTE0LjItMjMuMiAwbC0zLjUgNDQuOS01LjktOTQuM2MtLjktMTQuNS0yMi4zLTE0LjQtMjMuMiAwbC01LjEgODMuNy00LjMtNjYuM2MtLjktMTQuNC0yMi4yLTE0LjQtMjMuMiAwbC01LjMgODAuMi00LjEtNTdjLTEuMS0xNC4zLTIyLTE0LjMtMjMuMi0uMmwtNy43IDg5LjgtMS44LTEyLjJjLTEuNy0xMS40LTE3LjEtMTMuNi0yMi0zLjNsLTEzLjIgMjcuN0g4Ny41djIzLjJoNTEuM2M0LjQgMCA4LjQtMi41IDEwLjQtNi40bDEwLjcgNzMuMWMyIDEzLjUgMjEuOSAxMyAyMy4xLS43bDMuOC00My42IDUuNyA3OC4zYzEuMSAxNC40IDIyLjMgMTQuMiAyMy4yLS4xbDQuNi03MC40IDQuOCA3My4zYy45IDE0LjQgMjIuMyAxNC40IDIzLjItLjFsNC45LTgwLjUgNC41IDcxLjhjLjkgMTQuMyAyMi4xIDE0LjUgMjMuMi4ybDQuNi01OC42IDQuOSA2NC40YzEuMSAxNC4zIDIyIDE0LjIgMjMuMS4xbDYuOC04MyAyLjcgMjIuM2MxLjQgMTEuOCAxNy43IDE0LjEgMjIuMyAzLjFsMTgtNDMuNGg1MC41VjI1OGwtNTguNC4zem0tNzggNS4yaC0yMS45djIxLjljMCA0LjEtMy4zIDcuNS03LjUgNy41LTQuMSAwLTcuNS0zLjMtNy41LTcuNXYtMjEuOWgtMjEuOWMtNC4xIDAtNy41LTMuMy03LjUtNy41IDAtNC4xIDMuNC03LjUgNy41LTcuNWgyMS45di0yMS45YzAtNC4xIDMuNC03LjUgNy41LTcuNXM3LjUgMy4zIDcuNSA3LjV2MjEuOWgyMS45YzQuMSAwIDcuNSAzLjMgNy41IDcuNSAwIDQuMS0zLjQgNy41LTcuNSA3LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhbXBsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0zLjYgNTMuMmMyLjgtLjMgMTEuNSAxIDExLjUgMTEuNWw2LjYgMTA3LjIgNC45LTU5LjNjMC02IDQuNy0xMC42IDEwLjYtMTAuNiA1LjkgMCAxMC42IDQuNyAxMC42IDEwLjYgMCAyLjUtLjUtNS43IDUuNyA4MS41bDUuOC02NC4yYy4zLTIuOSAyLjktOS4zIDEwLjItOS4zIDMuOCAwIDkuOSAyLjMgMTAuNiA4LjlsMTEuNSA5Ni41IDUuMy0xMi44YzEuOC00LjQgNS4yLTYuNiAxMC4yLTYuNmg1OHYyMS4zaC01MC45bC0xOC4yIDQ0LjNjLTMuOSA5LjktMTkuNSA5LjEtMjAuOC0zLjFsLTQtMzEuOS03LjUgOTIuNmMtLjMgMy0zIDkuMy0xMC4yIDkuMy0zIDAtOS44LTIuMS0xMC42LTkuMyAwLTEuOS42IDUuOC02LjItNzcuOWwtNS4zIDcyLjJjLTEuMSA0LjgtNC44IDkuMy0xMC42IDkuMy0yLjkgMC05LjgtMi0xMC42LTkuMyAwLTEuOS41IDYuNy01LjgtODcuN2wtNS44IDk0LjhjMCA2LjMtMy42IDEyLjQtMTAuNiAxMi40LTUuMiAwLTEwLjYtNC4xLTEwLjYtMTJsLTUuOC04Ny43Yy01LjggOTIuNS01LjMgODQtNS4zIDg1LjktMS4xIDQuOC00LjggOS4zLTEwLjYgOS4zLTMgMC05LjgtMi4xLTEwLjYtOS4zIDAtLjctLjQtMS4xLS40LTIuNmwtNi4yLTg4LjZMMTgyIDM0OGMtLjcgNi41LTYuNyA5LjMtMTAuNiA5LjMtNS44IDAtOS42LTQuMS0xMC42LTguOUwxNDkuNyAyNzJjLTIgNC0zLjUgOC40LTExLjEgOC40SDg3LjJ2LTIxLjNIMTMybDEzLjctMjcuOWM0LjQtOS45IDE4LjItNy4yIDE5LjkgMi43bDMuMSAyMC40IDguNC05Ny45YzAtNiA0LjgtMTAuNiAxMC42LTEwLjYuNSAwIDEwLjYtLjIgMTAuNiAxMi40bDQuOSA2OS4xIDYuNi05Mi42YzAtMTAuMSA5LjUtMTAuNiAxMC4yLTEwLjYuNiAwIDEwLjYuNyAxMC42IDEwLjZsNS4zIDgwLjYgNi4yLTk3LjljLjEtMS4xLS42LTEwLjMgOS45LTExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0xMDEgMTMyLjRjNy44IDAgMTMuNyA2LjEgMTMuNyAxMy43djE4Mi41YzAgNy43LTYuMSAxMy43LTEzLjcgMTMuN0gyMTQuM2MtNy43IDAtMTMuNy02LTEzLjctMTMuN3YtNTRoLTU0Yy03LjggMC0xMy43LTYtMTMuNy0xMy43VjEzMS4xYzAtOC4yIDYuNi0xMi43IDEyLjQtMTMuN2gxMzYuNGM3LjcgMCAxMy43IDYgMTMuNyAxMy43djU0aDU0ek0xNTkuOSAzMDAuM2g0MC43VjE5OC45YzAtNy40IDUuOC0xMi42IDEyLTEzLjdoNTUuOHYtNDAuM0gxNTkuOXYxNTUuNHptMTc2LjItODguMUgyMjcuNnYxNTUuNGgxMDguNVYyMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zWmVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptLS40IDYwLjVjLTgxLjkgMC0xMDIuNSA3Ny4zLTEwMi41IDE0Mi44IDAgNjUuNSAyMC42IDE0Mi44IDEwMi41IDE0Mi44UzM1MC41IDMyMS41IDM1MC41IDI1NmMwLTY1LjUtMjAuNi0xNDIuOC0xMDIuNS0xNDIuOHptMCA1My45YzMuMyAwIDYuNC41IDkuMiAxLjIgNS45IDUuMSA4LjggMTIuMSAzLjEgMjEuOWwtNTQuNSAxMDAuMmMtMS43LTEyLjctMS45LTI1LjEtMS45LTM0LjQgMC0yOC44IDItODguOSA0NC4xLTg4Ljl6bTQwLjggNDYuMmMyLjkgMTUuNCAzLjMgMzEuNCAzLjMgNDIuNyAwIDI4LjktMiA4OC45LTQ0LjEgODguOS0xMy41IDAtMzIuNi03LjctMjAuMS0yNi40bDYwLjktMTA1LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDUuODMgMjE0Ljg3bC0zMy4yMiAxNy4yOGMtOS40My0xOS41OC0yNS4yNC0xOS45My0yNy40Ni0xOS45My0yMi4xMyAwLTMzLjIyIDE0LjYxLTMzLjIyIDQzLjg0IDAgMjMuNTcgOS4yMSA0My44NCAzMy4yMiA0My44NCAxNC40NyAwIDI0LjY1LTcuMDkgMzAuNTctMjEuMjZsMzAuNTUgMTUuNWMtNi4xNyAxMS41MS0yNS42OSAzOC45OC02NS4xIDM4Ljk4LTIyLjYgMC03My45Ni0xMC4zMi03My45Ni03Ny4wNSAwLTU4LjY5IDQzLTc3LjA2IDcyLjYzLTc3LjA2IDMwLjcyLS4wMSA1Mi43IDExLjk1IDY1Ljk5IDM1Ljg2em0xNDMuMDUgMGwtMzIuNzggMTcuMjhjLTkuNS0xOS43Ny0yNS43Mi0xOS45My0yNy45LTE5LjkzLTIyLjE0IDAtMzMuMjIgMTQuNjEtMzMuMjIgNDMuODQgMCAyMy41NSA5LjIzIDQzLjg0IDMzLjIyIDQzLjg0IDE0LjQ1IDAgMjQuNjUtNy4wOSAzMC41NC0yMS4yNmwzMSAxNS41Yy0yLjEgMy43NS0yMS4zOSAzOC45OC02NS4wOSAzOC45OC0yMi42OSAwLTczLjk2LTkuODctNzMuOTYtNzcuMDUgMC01OC42NyA0Mi45Ny03Ny4wNiA3Mi42My03Ny4wNiAzMC43MS0uMDEgNTIuNTggMTEuOTUgNjUuNTYgMzUuODZ6TTI0Ny41NiA4LjA1QzEwNC43NCA4LjA1IDAgMTIzLjExIDAgMjU2LjA1YzAgMTM4LjQ5IDExMy42IDI0OCAyNDcuNTYgMjQ4IDEyOS45MyAwIDI0OC40NC0xMDAuODcgMjQ4LjQ0LTI0OCAwLTEzNy44Ny0xMDYuNjItMjQ4LTI0OC40NC0yNDh6bS44NyA0NTAuODFjLTExMi41NCAwLTIwMy43LTkzLjA0LTIwMy43LTIwMi44MSAwLTEwNS40MiA4NS40My0yMDMuMjcgMjAzLjcyLTIwMy4yNyAxMTIuNTMgMCAyMDIuODIgODkuNDYgMjAyLjgyIDIwMy4yNi0uMDEgMTIxLjY5LTk5LjY4IDIwMi44Mi0yMDIuODQgMjAyLjgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcml0aWNhbFJvbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI1LjgyIDBjLjI2LjE1IDIxNi41NyAxMjQuNTEgMjE3LjEyIDEyNC43MiAzIDEuMTggMy43IDMuNDYgMy43IDYuNTZxLS4xMSAxMjUuMTcgMCAyNTAuMzZhNS44OCA1Ljg4IDAgMCAxLTMuMzggNS43OGMtMjEuMzcgMTItMjA3Ljg2IDExOC4yOS0yMTguOTMgMTI0LjU4aC0zQzE0MiA0NjYuMzQgMy4wOCAzODYuNTYgMi45MyAzODYuNDhhMy4yOSAzLjI5IDAgMCAxLTEuODgtMy4yNGMwLS44NyAwLTIyNS45NC0uMDUtMjUzLjFhNSA1IDAgMCAxIDIuOTMtNC45M0MyNy4xOSAxMTIuMTEgMjEzLjIgNiAyMjQuMDcgMHpNMjE1LjQgMjAuNDJsLS4yMi0uMTZRMTE4LjA2IDc1LjU1IDIxIDEzMC44N2MwIC4xMi4wOC4yMy4xMy4zNWwzMC44NiAxMS42NGMtNy43MSA2LTguMzIgNi0xMC42NSA1LjEzLS4xIDAtMjQuMTctOS4yOC0yNi44LTEwdjIzMC40M2MuODgtMS40MSA2NC4wNy0xMTAuOTEgNjQuMTMtMTExIDEuNjItMi44MiAzLTEuOTIgOS4xMi0xLjUyIDEuNC4wOSAxLjQ4LjIyLjc4IDEuNDItNDEuMTkgNzEuMzMtMzYuNCA2My02Ny40OCAxMTYuOTQtLjgxIDEuNC0uNjEgMS4xMyAxLjI1IDEuMTNoMTg2LjVjMS40NCAwIDEuNjktLjIzIDEuNy0xLjY0di04Ljg4YzAtMS4zNCAyLjM2LS44MS0xOC4zNy0xLTcuNDYtLjA3LTE0LjE0LTMuMjItMjEuMzgtMTIuNy03LjM4LTkuNjYtMTQuNjItMTkuNDMtMjEuODUtMjkuMjEtMi4yOC0zLjA4LTMuNDUtMi4zOC0xNi43Ni0yLjM4LTEuNzUgMC0xLjc4IDAtMS43NiAxLjgyLjI5IDI2LjIxLjE1IDI1LjI3IDEgMzIuNjYuNTIgNC4zNyAyLjE2IDQuMiA5LjY5IDQuODEgMy4xNC4yNiAzLjg4IDQuMDguNTIgNC45Mi0xLjU3LjM5LTMxLjYuNTEtMzMuNjctLjFhMi40MiAyLjQyIDAgMCAxIC4zLTQuNzNjMy4yOS0uNzYgNi4xNi44MSA2LjY2LTQuNDQgMS4zLTEzLjY2IDEuMTctOSAxLjEtNzkuNDIgMC0xMC44Mi0uMzUtMTIuNTgtNS4zNi0xMy41NS0xLjIyLS4yNC0zLjU0LS4xNi00LjY5LS41NS0yLjg4LTEtMi00Ljg0IDEuNzctNC44NSAzMy42NyAwIDQ2LjA4LTEuMDcgNTYuMDYgNC44NiA3Ljc0IDQuNjEgMTIgMTEuNDggMTIuNTEgMjAuNC44OCAxNC41OS02LjUxIDIyLjM1LTE1IDMyLjU5YTEuNDYgMS40NiAwIDAgMCAwIDIuMjJjMi42IDMuMjUgNSA2LjYzIDcuNzEgOS44MyAyNy41NiAzMy4yMyAyNC4xMSAzMC41NCA0MS4yOCAzMy4wNi44OS4xMyAxLS40MiAxLTEuMTV2LTExYzAtMSAuMzItMS40MyAxLjQxLTEuMjZhNzIuMzcgNzIuMzcgMCAwIDAgMjMuNTgtLjNjMS4wOC0uMTUgMS41LjIgMS40OCAxLjMzIDAgLjExLjg4IDI2LjY5Ljg3IDI2LjgtLjA1IDEuNTIuNjcgMS42MiAxLjg5IDEuNjJoMTg2LjcxUTM4Ni41MSAzMDQuNiAzNDYgMjM0LjMzYzIuMjYtLjY2LS40IDAgNi42OS0xLjM5IDItLjM5IDIuMDUtLjQxIDMuMTEgMS40NCA3LjMxIDEyLjY0IDc3LjMxIDEzNCA3Ny4zNyAxMzQuMDZWMTM4Yy0xLjcyLjUtMTAzLjMgMzguNzItMTA1Ljc2IDM5LjY4LTEuMDguNDItMS41NS4yLTEuOTEtLjg4LS42My0xLjktMS4zNC0zLjc2LTIuMDktNS42Mi0uMzItLjc5LS4wOS0xLjEzLjY1LTEuMzkuMSAwIDk1LjUzLTM1Ljg1IDEwMy0zOC43Ny02NS40Mi0zNy41Ny0xMzAuNTYtNzUtMTk2LTExMi42bDg2LjgyIDE1MC4zOS0uMjguMzNjLTkuNTctLjktMTAuNDYtMS42LTExLjgtMy45NC0xLTEuNjktNzMuNS0xMjcuNzEtODItMTQyLjE2LTkuMSAxNC42Ny04My41NiAxNDYuMjEtODUuMzcgMTQ2LjMyLTIuOTMuMTctNS44OC4wOC05LjI1LjA4cTQzLjI1LTc0Ljc0IDg2LjE4LTE0OXptNTEuOTMgMTI5LjkyYTM3LjY4IDM3LjY4IDAgMCAwIDUuNTQtLjg1YzEuNjktLjMgMi41My4yIDIuNiAxLjkyIDAgLjExLjA3IDE5LjA2LS44NiAyMC40NXMtMS44OCAxLjIyLTIuNi0uMTljLTUtOS42OSA2LjIyLTkuNjYtMzkuMTItMTItLjcgMC0xIC4yMy0xIC45MyAwIC4xMyAzLjcyIDEyMiAzLjczIDEyMi4xMSAwIC44OS41MiAxLjIgMS4yMSAxLjUxYTgzLjkyIDgzLjkyIDAgMCAxIDguNyA0LjA1YzcuMzEgNC4zMyAxMS4zOCAxMC44NCAxMi40MSAxOS4zMSAxLjQ0IDExLjgtMi43NyAzNS43Ny0zMi4yMSAzNy4xNC0yLjc1LjEzLTI4LjI2IDEuMDgtMzQuMTQtMjMuMjUtNC42Ni0xOS4yNiA4LjI2LTMyLjcgMTkuODktMzYuNGEyLjQ1IDIuNDUgMCAwIDAgMi0yLjY2Yy4xLTUuNjMgMy0xMDcuMSAzLjcxLTEyMS4zNS4wNS0xLjA4LS42Mi0xLjE2LTEuMzUtMS4xNS0zMi4zNS41Mi0zNi43NS0uMzQtNDAuMjIgOC41Mi0yLjQyIDYuMTgtNC4xNCAxLjMyLTMuOTUuMjNxMS41OS05IDMuMzEtMThjLjQtMi4xMSAxLjQzLTIuNjEgMy40My0xLjg2IDUuNTkgMi4xMSA2LjcyIDEuNyAzNy4yNSAxLjkyIDEuNzMgMCAxLjc4LS4wOCAxLjgyLTEuODUuNjgtMjcuNDkuNTgtMjIuNTkgMS0yOS41NWEyLjY5IDIuNjkgMCAwIDAtMS42My0yLjhjLTUuNi0yLjkxLTguNzUtNy41NS04LjktMTMuODctLjM1LTE0LjgxIDE3LjcyLTIxLjY3IDI3LjM4LTExLjUxIDYuODQgNy4xOSA1LjggMTguOTEtMi40NSAyNC4xNWE0LjM1IDQuMzUgMCAwIDAtMi4yMiA0LjM0YzAgLjU5LS4xMS00LjMxIDEgMzAuMDUgMCAuOS40MyAxLjEyIDEuMjQgMS4xMS4xIDAgMjMtLjA5IDM0LjQ3LS4zN3pNNjguMjcgMTQxLjdjMTkuODQtNC41MSAzMi42OC0uNTYgNTIuNDkgMS42OSAyLjc2LjMxIDMuNzQgMS4yMiAzLjYyIDQtLjIxIDUtMS4xNiAyMi4zMy0xLjI0IDIzLjE1YTIuNjUgMi42NSAwIDAgMS0xLjYzIDIuMzRjLTQuMDYgMS43LTMuNjEtNC40NS00LTcuMjktMy4xMy0yMi40My03My44Ny0zMi43LTc0LjYzIDI1LjQtLjMxIDIzLjkyIDE3IDUzLjYzIDU0LjA4IDUwLjg4IDI3LjI0LTIgMTktMjAuMTkgMjQuODQtMjAuNDdhMi43MiAyLjcyIDAgMCAxIDMgMy4zNmMtMS44MyAxMC44NS0zLjQyIDE4Ljk1LTMuNDUgMTkuMTUtMS41NCA5LjE3LTg2LjcgMjIuMDktOTMuMzUtNDIuMDYtMi43MS0yNS44NSAxMC40NC01My4zNyA0MC4yNy02MC4xNXptODAgODcuNjdoLTE5LjQ5YTIuNTcgMi41NyAwIDAgMS0yLjY2LTEuNzljMi4zOC0zLjc1IDUuODkuOTIgNS44Ni02LjE0LS4wOC0yNS43NS4yMS0zOCAuMjMtNDAuMSAwLTMuNDItLjUzLTQuNjUtMy4zMi00Ljk0LTctLjcyLTMuMTEtMy4zNy0xLjExLTMuMzggMTEuODQtLjEgMjIuNjItLjE4IDMwLjA1LjcyIDguNzcgMS4wNyAxNi43MSAxMi42MyA3LjkzIDIyLjYyLTIgMi4yNS00IDQuNDItNi4xNCA2LjczLjk1IDEuMTUgNi45IDguODIgMTcuMjggMTkuNjggMi42NiAyLjc4IDYuMTUgMy41MSA5Ljg4IDMuMTNhMi4yMSAyLjIxIDAgMCAwIDIuMjMtMi4xMmMuMy0zLjQyLjI2IDQuNzMuNDUtNDAuNTggMC01LjY1LS4zNC02LjU4LTMuMjMtNi44My0zLjk1LS4zNS00LTIuMjYtLjY5LTMuMzdsMTkuMDktLjA5Yy4zMiAwIDQuNDkuNTMgMSAzLjM4IDAgLjA1LS4xNiAwLS4yNCAwLTMuNjEuMjYtMy45NCAxLTQgNC42Mi0uMjcgNDMuOTMuMDcgNDAuMjMuNDEgNDIuODIuMTEuODQuMjcgMi4yMyA1LjEgMi4xNCAyLjQ5IDAgMy44NiAzLjM3IDAgMy40LTEwLjM3LjA4LTIwLjc0IDAtMzEuMTEuMDctMTAuNjcgMC0xMy40Ny02LjItMjQuMjEtMjAuODItMS42LTIuMTgtOC4zMS0yLjM2LTguMi0uMzcuODggMTYuNDcgMCAxNy43OCA0IDE3LjY3IDQuNzUtLjEgNC43MyAzLjU3LjgzIDMuNTV6bTI3NS0xMC4xNWMtMS4yMSA3LjEzLjE3IDEwLjM4LTUuMyAxMC4zNC02MS41NS0uNDItNDcuODItLjIyLTUwLjcyLS4zMWExOC40IDE4LjQgMCAwIDEtMy42My0uNzNjLTIuNTMtLjYgMS40OC0xLjIzLS4zOC01LjYtMS40My0zLjM3LTIuNzgtNi43OC00LjExLTEwLjE5YTEuOTQgMS45NCAwIDAgMC0yLTEuNDQgMTM4IDEzOCAwIDAgMC0xNC41OC4wNyAyLjIzIDIuMjMgMCAwIDAtMS42MiAxLjA2Yy0xLjU4IDMuNjItMy4wNyA3LjI5LTQuNTEgMTEtMS4yNyAzLjIzIDcuODYgMS4zMiAxMi4xOSAyLjE2IDMgLjU3IDQuNTMgMy43Mi42NiAzLjczSDMyMi45Yy0yLjkyIDAtMy4wOS0zLjE1LS43NC0zLjIxYTYuMyA2LjMgMCAwIDAgNS45Mi0zLjQ3YzEuNS0zIDIuOC02IDQuMTEtOS4wOSAxOC4xOC00Mi4xNCAxNy4wNi00MC4xNyAxOC40Mi00MS42MWExLjgzIDEuODMgMCAwIDEgMyAwYzIuOTMgMy4zNCAxOC40IDQ0LjcxIDIzLjYyIDUxLjkyIDIgMi43IDUuNzQgMiA2LjM2IDIgMy42MS4xMyA0LTEuMTEgNC4xMy00LjI5LjA5LTEuODcuMDggMS4xNy4wNy00MS4yNCAwLTQuNDYtMi4zNi0zLjc0LTUuNTUtNC4yNy0uMjYgMC0yLjU2LS42My0uMDgtMy4wNi4yMS0uMi0uODktLjI0IDIxLjctLjE1IDIuMzIgMCA1LjMyIDIuNzUtMS4yMSAzLjQ1YTIuNTYgMi41NiAwIDAgMC0yLjY2IDIuODNjLS4wNyAxLjYzLS4xOSAzOC44OS4yOSA0MS4yMWEzLjA2IDMuMDYgMCAwIDAgMy4yMyAyLjQzYzEzLjI1LjQzIDE0LjkyLjQ0IDE2LTMuNDEgMS42Ny01Ljc4IDQuMTMtMi41MiAzLjczLS4xOXptLTEwNC43MiA2NC4zN2MtNC4yNCAwLTQuNDItMy4zOS0uNjEtMy40MSAzNS45MS0uMTYgMjguMTEuMzggMzcuMTktLjY1IDEuNjgtLjE5IDIuMzguMjQgMi4yNSAxLjg5LS4yNiAzLjM5LS42NCA2Ljc4LTEgMTAuMTYtLjI1IDIuMTYtMy4yIDIuNjEtMy40LS4xNS0uMzgtNS4zMS0yLjE1LTQuNDUtMTUuNjMtNS4wOC0xLjU4LS4wNy0xLjY0IDAtMS42NCAxLjUyVjMwNGMwIDEuNjUgMCAxLjYgMS42MiAxLjQ3IDMuMTItLjI1IDEwLjMxLjM0IDE1LjY5LTEuNTIuNDctLjE2IDMuMy0xLjc5IDMuMDcgMS43NiAwIC4yMS0uNzYgMTAuMzUtMS4xOCAxMS4zOS0uNTMgMS4yOS0xLjg4IDEuNTEtMi41OC4zMi0xLjE3LTIgMC01LjA4LTMuNzEtNS4zLTE1LjQyLS45LTEyLjkxLTIuNTUtMTIuOTEgNiAwIDEyLjI1LS43NiAxNi4xMSAzLjg5IDE2LjI0IDE2LjY0LjQ4IDE0LjQgMCAxNi40My01LjcxLjg0LTIuMzcgMy41LTEuNzcgMy4xOC41OC0uNDQgMy4yMS0uODUgNi40My0xLjIzIDkuNjQgMCAuMzYtLjE2IDIuNC00LjY2IDIuMzktMzcuMTYtLjA4LTM0LjU0LS4xOS0zNS4yMS0uMzEtMi43Mi0uNTEtMi4yLTMgLjIyLTMuNDUgMS4xLS4xOSA0IC41NCA0LjE2LTIuNTYgMi40NC01Ni4yMi0uMDctNTEuMzQtMy45MS01MS4zM3ptLS40MS0xMDkuNTJjMi40Ni42MSAzLjEzIDEuNzYgMi45NSA0LjY1LS4zMyA1LjMtLjM0IDktLjU1IDkuNjktLjY2IDIuMjMtMy4xNSAyLjEyLTMuMzQtLjI3LS4zOC00LjgxLTMuMDUtNy44Mi03LjU3LTkuMTUtMjYuMjgtNy43My0zMi44MSAxNS40Ni0yNy4xNyAzMC4yMiA1Ljg4IDE1LjQxIDIyIDE1LjkyIDI4Ljg2IDEzLjc4IDUuOTItMS44NSA1Ljg4LTYuNSA2LjkxLTcuNTggMS4yMy0xLjMgMi4yNS0xLjg0IDMuMTIgMS4xIDAgLjEuNTcgMTEuODktNiAxMi43NS0xLjYuMjEtMTkuMzggMy42OS0zMi42OC0zLjM5LTIxLTExLjE5LTE2Ljc0LTM1LjQ3LTYuODgtNDUuMzMgMTQtMTQuMDYgMzkuOTEtNy4wNiA0Mi4zMi02LjQ3ek0yODkuOCAyODAuMTRjMy4yOCAwIDMuNjYgMyAuMTYgMy40My0yLjYxLjMyLTUtLjQyLTUgNS40NiAwIDItLjE5IDI5LjA1LjQgNDEuNDUuMTEgMi4yOSAxLjE1IDMuNTIgMy40NCAzLjY1IDIyIDEuMjEgMTQuOTUtMS42NSAxOC43OS02LjM0IDEuODMtMi4yNCAyLjc2Ljg0IDIuNzYgMS4wOC4zNSAxMy42Mi00IDEyLjM5LTUuMTkgMTIuNGwtMzguMTYtLjE5Yy0xLjkzLS4yMy0yLjA2LTMtLjQyLTMuMzggMi0uNDggNC45NC40IDUuMTMtMi44IDEtMTUuODcuNTctNDQuNjUuMzQtNDcuODEtLjI3LTMuNzctMi44LTMuMjctNS42OC0zLjcxLTIuNDctLjM4LTItMy4yMi4zNC0zLjIyIDEuNDUtLjAyIDE3Ljk3LS4wMyAyMy4wOS0uMDJ6bS0zMS42My01Ny43OWMuMDcgNC4wOCAyLjg2IDMuNDYgNiAzLjU4IDIuNjEuMSAyLjUzIDMuNDEtLjA3IDMuNDMtNi40OCAwLTEzLjcgMC0yMS42MS0uMDYtMy44NCAwLTMuMzgtMy4zNSAwLTMuMzcgNC40OSAwIDMuMjQgMS42MSAzLjQxLTQ1LjU0IDAtNS4wOC0zLjI3LTMuNTQtNC43Mi00LjIzLTIuNTgtMS4yMy0xLjM2LTMuMDkuNDEtMy4xNSAxLjI5IDAgMjAuMTktLjQxIDIxLjE3LjIxczEuODcgMS42NS0uNDIgMi44NmMtMSAuNTItMy44Ni0uMjgtNC4xNSAyLjQ3IDAgLjIxLS44MiAxLjYzLS4wNyA0My44em0tMzYuOTEgMjc0LjI3YTIuOTMgMi45MyAwIDAgMCAzLjI2IDBjMTctOS43OSAxODItMTAzLjU3IDE5Ny40Mi0xMTIuNTEtLjE0LS40MyAxMS4yNi0uMTgtMTgxLjUyLS4yNy0xLjIyIDAtMS41Ny4zNy0xLjUzIDEuNTYgMCAuMSAxLjI1IDQ0LjUxIDEuMjIgNTAuMzhhMjguMzMgMjguMzMgMCAwIDEtMS4zNiA3LjcxYy0uNTUgMS44My4zOC0uNS0xMy41IDMyLjIzLS43MyAxLjcyLTEgMi4yMS0yLS4wOC00LjE5LTEwLjM0LTguMjgtMjAuNzItMTIuNTctMzFhMjMuNiAyMy42IDAgMCAxLTItMTAuNzljLjE2LTIuNDYuOC0xNi4xMiAxLjUxLTQ4IDAtMS45NSAwLTItMi0yaC0xODNjMi41OCAxLjYzIDE3OC4zMiAxMDIuNTcgMTk2IDExMi43NnptLTkwLjktMTg4Ljc1YzAgMi40LjM2IDIuNzkgMi43NiAzIDExLjU0IDEuMTcgMjEgMy43NCAyNS42NC03LjMyIDYtMTQuNDYgMi42Ni0zNC40MS0xMi40OC0zOC44NC0yLS41OS0xNi0yLjc2LTE1Ljk0IDEuNTEuMDUgOC4wNC4wMSAxMS42MS4wMiA0MS42NXptMTA1Ljc1LTE1LjA1YzAgMi4xMyAxLjA3IDM4LjY4IDEuMDkgMzkuMTMuMzQgOS45NC0yNS41OCA1Ljc3LTI1LjIzLTIuNTkuMDgtMiAxLjM3LTM3LjQyIDEuMS0zOS40My0xNC4xIDcuNDQtMTQuNDIgNDAuMjEgNi40NCA0OC44YTE3LjkgMTcuOSAwIDAgMCAyMi4zOS03LjA3YzQuOTEtNy43NiA2Ljg0LTI5LjQ3LTUuNDMtMzlhMi41MyAyLjUzIDAgMCAxLS4zNi4xMnptLTEyLjI4LTE5OGMtOS44MyAwLTkuNzMgMTQuNzUtLjA3IDE0Ljg3czEwLjEtMTQuODguMDctMTQuOTF6bS04MC4xNSAxMDMuODNjMCAxLjguNDEgMi40IDIuMTcgMi41OCAxMy42MiAxLjM5IDEyLjUxLTExIDEyLjE2LTEzLjM2LTEuNjktMTEuMjItMTQuMzgtMTAuMi0xNC4zNS03LjgxLjA1IDQuNS0uMDMgMTMuNjguMDIgMTguNTl6bTIxMi4zMiA2LjRsLTYuMS0xNS44NGMtMi4xNiA1LjQ4LTQuMTYgMTAuNTctNi4yMyAxNS44NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3NzM0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMybDM0LjkgMzk1LjhMMTkyIDQ4MGwxNTcuMS01Mi4yTDM4NCAzMkgwem0zMTMuMSA4MGwtNC44IDQ3LjNMMTkzIDIwOC42bC0uMy4xaDExMS41bC0xMi44IDE0Ni42LTk4LjIgMjguNy05OC44LTI5LjItNi40LTczLjloNDguOWwzLjIgMzguMyA1Mi42IDEzLjMgNTQuNy0xNS40IDMuNy02MS42LTE2Ni4zLS41di0uMWwtLjIuMS0zLjYtNDYuM0wxOTMuMSAxNjJsNi41LTIuN0g3Ni43TDcwLjkgMTEyaDI0Mi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDc3MzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMmwtNjQgMzY4LTIyMy4zIDgwTDAgNDAwbDE5LjYtOTQuOGg4MmwtOCA0MC42TDIxMCAzOTAuMmwxMzQuMS00NC40IDE4LjgtOTcuMUgyOS41bDE2LTgyaDMzMy43bDEwLjUtNTIuN0g1Ni4zbDE2LjMtODJINDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDdXR0bGVmaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NCAzMDUuNWMtMTcuNSAzMS42LTU3LjQgNTQuNS05NiA1NC41LTU2LjYgMC0xMDQtNDcuNC0xMDQtMTA0czQ3LjQtMTA0IDEwNC0xMDRjMzguNiAwIDc4LjUgMjIuOSA5NiA1NC41IDEzLjctNTAuOSA0MS43LTkzLjMgODctMTE3LjhDMzg1LjcgMzkuMSAzMjAuNSA4IDI0OCA4IDExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OGM3Mi41IDAgMTM3LjctMzEuMSAxODMtODAuNy00NS4zLTI0LjUtNzMuMy02Ni45LTg3LTExNy44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEQW5kREJleW9uZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuOCAyNDEuNWMxMy44IDAgMjEtMTAuMSAyNC44LTE3LjktMS0xLjEtNS00LjItNy40LTYuNi0yLjQgNC4zLTguMiAxMC43LTEzLjkgMTAuNy0xMC4yIDAtMTUuNC0xNC43LTMuMi0yNi42LS41LS4yLTQuMy0xLjgtOCAyLjQgMC0zIDEtNS4xIDIuMS02LjYtMy41IDEuMy05LjggNS42LTExLjQgNy45LjItNS44IDEuNi03LjUuNi05bC0uMi0uMnMtOC41IDUuNi05LjMgMTQuN2MwIDAgMS4xLTEuNiAyLjEtMS45LjYtLjMgMS4zIDAgLjYgMS45LS4yLjYtNS44IDE1LjcgNS4xIDI2LS42LTEuNi0xLjktNy42IDIuNC0xLjktLjMuMSA1LjggNy4xIDE1LjcgNy4xem01Mi40LTIxLjFjMC00LTQuOS00LjQtNS42LTQuNSAyIDMuOS45IDcuNS4yIDkgMi41LS40IDUuNC0xLjYgNS40LTQuNXptMTAuMyA1LjJjMC02LjQtNi4yLTExLjQtMTMuNS0xMC43IDggMS4zIDUuNiAxMy44LTUgMTEuNCAzLjctMi42IDMuMi05LjktMS4zLTEyLjUgMS40IDQuMi0zIDguMi03LjQgNC42LTIuNC0xLjktOC02LjYtMTAuNi04LjYtMi40LTIuMS01LjUtMS02LjYtMS44LTEuMy0xLjEtLjUtMy44LTIuMi01LTEuNi0uOC0zLS4zLTQuOC0xLTEuNi0uNi0yLjctMS45LTIuNi0zLjUtMi41IDQuNCAzLjQgNi4zIDQuNSA4LjUgMSAxLjktLjggNC44IDQgOC41IDE0LjggMTEuNiA5LjEgOCAxMC40IDE4LjEuNiA0LjMgNC4yIDYuNyA2LjQgNy40LTIuMS0xLjktMi45LTYuNCAwLTkuMyAwIDEzLjkgMTkuMiAxMy4zIDIzLjEgNi40LTIuNCAxLjEtNy0uMi05LTEuOSA3LjcgMSAxNC4yLTQuMSAxNC42LTEwLjZ6bS0zOS40LTE4LjRjMiAuOCAxLjYuNyA2LjQgNC41IDEwLjItMjQuNSAyMS43LTE1LjcgMjItMTUuNSAyLjItMS45IDkuOC0zLjggMTMuOC0yLjctMi40LTIuNy03LjUtNi4yLTEzLjMtNi4yLTQuNyAwLTcuNCAyLjItOCAxLjMtLjgtMS40IDMuMi0zLjQgMy4yLTMuNC01LjQuMi05LjYgNi43LTExLjIgNS45LTEuMS0uNSAxLjQtMy43IDEuNC0zLjctNS4xIDIuOS05LjMgOS4xLTEwLjIgMTMgNC42LTUuOCAxMy44LTkuOCAxOS43LTktMTAuNS41LTE5LjUgOS43LTIzLjggMTUuOHptMjQyLjUgNTEuOWMtMjAuNyAwLTQwIDEuMy01MC4zIDIuMWw3LjQgOC4ydjc3LjJsLTcuNCA4LjJjMTAuNC44IDMwLjkgMi4xIDUxLjYgMi4xIDQyLjEgMCA1OS4xLTIwLjcgNTkuMS00OC45IDAtMjkuMy0yMy4yLTQ4LjktNjAuNC00OC45em0tMTUuMSA3NS42di01My4zYzMwLjEtMy4zIDQ2LjggMy44IDQ2LjggMjYuMyAwIDI1LjYtMjEuNCAzMC4yLTQ2LjggMjd6TTMwMS42IDE4MWMtMS0zLjQtLjItNi45IDEuMS05LjQgMSAzIDIuNiA2LjQgNy41IDktLjUtMi40LS4yLTUuNi41LTgtMS40LTUuNCAyLjEtOS45IDYuNC05LjkgNi45IDAgOC41IDguOCA0LjcgMTQuNCAyLjEgMy4yIDUuNSA1LjYgNy43IDcuOCAzLjItMy43IDUuNS05LjUgNS41LTEzLjggMC04LjItNS41LTE1LjktMTYuNy0xNi41LTIwLS45LTIwLjIgMTYuNi0yMCAxOC45LjUgNS4yIDMuNCA3LjggMy4zIDcuNXptLS40IDZjLS41IDEuOC03IDMuNy0xMC4yIDYuOSA0LjgtMSA3LS4yIDcuOCAxLjguNSAxLjQtLjIgMy40LS41IDUuNiAxLjYtMS44IDctNS41IDExLTYuMi0xLS4zLTMuNC0uOC00LjMtLjggMi45LTMuNCA5LjMtNC41IDEyLjgtMy43LTIuMi0uMi02LjcgMS4xLTguNSAyLjYgMS42LjMgMyAuNiA0LjMgMS4xLTIuMS44LTQuOCAzLjQtNS44IDYuMSA3LTUgMTMuMSA1LjIgNyA4LjIuOC4yIDIuNyAwIDMuNS0uNS0uMyAxLjEtMS45IDMtMyAzLjQgMi45IDAgNy0xLjkgOC4yLTQuNiAwIDAtMS44LjYtMi42LS4ycy4zLTQuMy4zLTQuM2MtMi4zIDIuOS0zLjQtMS4zLTEuMy00LjItMS0uMy0zLjUtLjYtNC42LS41IDMuMi0xLjEgMTAuNC0xLjggMTEuMi0uMy42IDEuMS0xIDMuNC0xIDMuNCA0LS41IDguMyAxLjEgNi43IDUuMSAyLjktMS40IDUuNS01LjkgNC44LTEwLjQtLjMgMS0xLjYgMi40LTIuOSAyLjcuMi0xLjQtMS0yLjItMS45LTIuNiAxLjctOS42LTE0LjYtMTQuMi0xNC4xLTIzLjktMSAxLjMtMS44IDUtLjggNy4xIDIuNyAzLjIgOC43IDYuNyAxMC4xIDEyLjItMi42LTYuNC0xNS4xLTExLjQtMTQuNi0yMC4yLTEuNiAxLjYtMi42IDcuOC0xLjMgMTEgMi40IDEuNCA0LjUgMy44IDQuOCA2LjEtMi4yLTUuMS0xMS40LTYuMS0xMy45LTEyLjItLjYgMi4yLS4zIDUgMSA2LjcgMCAwLTIuMi0uOC03LS42IDEuNy42IDUuMSAzLjUgNC44IDUuMnptMjUuOSA3LjRjLTIuNyAwLTMuNS0yLjEtNC4yLTQuMyAzLjMgMS4zIDQuMiA0LjMgNC4yIDQuM3ptMzguOSAzLjdsLTEtLjZjLTEuMS0xLTIuOS0xLjQtNC43LTEuNC0yLjkgMC01LjggMS4zLTcuNSAzLjQtLjguOC0xLjQgMS44LTIuMSAyLjZ2MTUuN2MzLjUgMi42IDcuMS0yLjkgMy03LjIgMS41LjMgNC42IDIuNyA1LjEgMy4yIDAgMCAyLjYtLjUgNS0uNSAyLjEgMCAzLjkuMyA1LjYgMS4xVjE5NmMtMS4xLjUtMi4yIDEtMi43IDEuNHpNNzkuOSAzMDUuOWMxNy4yLTQuNiAxNi4yLTE4IDE2LjItMTkuOSAwLTIwLjYtMjQuMS0yNS0zNy0yNUgzbDguMyA4LjZ2MjkuNUgwbDExLjQgMTQuNlYzNDZMMyAzNTQuNmM2MS43IDAgNzMuOCAxLjUgODYuNC01LjkgNi43LTQgOS45LTkuOCA5LjktMTcuNiAwLTUuMSAyLjYtMTguOC0xOS40LTI1LjJ6bS00MS4zLTI3LjVjMjAgMCAyOS42LS44IDI5LjYgOS4xdjNjMCAxMi4xLTE5IDguOC0yOS42IDguOHptMCA1OS4yVjMxNWMxMi4yIDAgMzIuNy0yLjMgMzIuNyA4Ljh2NC41aC4yYzAgMTEuMi0xMi41IDkuMy0zMi45IDkuM3ptMTAxLjItMTkuM2wyMy4xLjJ2LS4ybDE0LjEtMjEuMmgtMzcuMnYtMTQuOWg1Mi40bC0xNC4xLTIxdi0uMmwtNzMuNS4yIDcuNCA4LjJ2NzcuMWwtNy40IDguMmg4MS4ybDE0LjEtMjEuMi02MC4xLjJ6bTIxNC43LTYwLjFjLTczLjkgMC03Ny41IDk5LjMtLjMgOTkuMyA3Ny45IDAgNzQuMS05OS4zLjMtOTkuM3ptLS4zIDc3LjVjLTM3LjQgMC0zNi45LTU1LjMuMi01NS4zIDM2LjguMSAzOC44IDU1LjMtLjIgNTUuM3ptLTkxLjMtOC4zbDQ0LjEtNjYuMmgtNDEuN2w2LjEgNy4yLTIwLjUgMzcuMmgtLjNsLTIxLTM3LjIgNi40LTcuMmgtNDQuOWw0NC4xIDY1LjguMiAxOS40LTcuNyA4LjJoNDIuNmwtNy4yLTguMnptLTI4LjQtMTUxLjNjMS42IDEuMyAyLjkgMi40IDIuOSA2LjZ2MzguOGMwIDQuMi0uOCA1LjMtMi43IDYuNC0uMS4xLTcuNSA0LjUtNy45IDQuNmgzNS4xYzEwIDAgMTcuNC0xLjUgMjYtOC42LS42LTUgLjItOS41LjgtMTIgMC0uMi0xLjggMS40LTIuNyAzLjUgMC01LjcgMS42LTE1LjQgOS42LTIwLjUtLjEgMC0zLjctLjgtOSAxLjEgMi0zLjEgMTAtNy45IDEwLjQtNy45LTguMi0yNi0zOC0yMi45LTMyLjItMjIuOS0zMC45IDAtMzIuNi4zLTM5LjktNCAuMS44LjUgOC4yIDkuNiAxNC45em0yMS41IDUuNWM0LjYgMCAyMy4xLTMuMyAyMy4xIDE3LjMgMCAyMC43LTE4LjQgMTcuMy0yMy4xIDE3LjN6bTIyOC45IDc5LjZsNyA4LjNWMzEyaC0uM2MtNS40LTE0LjQtNDIuMy00MS41LTQ1LjItNTAuOWgtMzEuNmw3LjQgOC41djc2LjlsLTcuMiA4LjNoMzlsLTcuNC04LjJ2LTQ3LjRoLjNjMy43IDEwLjYgNDQuNSA0Mi45IDQ4LjUgNTUuNmgyMS4zdi04NS4ybDcuNC04LjN6bS0xMDYuNy05Ni4xYy0zMi4yIDAtMzIuOC4yLTM5LjktNCAuMS43LjUgOC4zIDkuNiAxNC45IDMuMSAyIDIuOSA0LjMgMi45IDkuNSAxLjgtMS4xIDMuOC0yLjIgNi4xLTMtMS4xIDEuMS0yLjcgMi43LTMuNSA0LjUgMS0xLjEgNy41LTUuMSAxNC42LTMuNS0xLjYuMy00IDEuMS02LjEgMi45LjEgMCAyLjEtMS4xIDcuNS0uM3YtNC4zYzQuNyAwIDIzLjEtMy40IDIzLjEgMTcuMyAwIDIwLjUtMTguNSAxNy4zLTE5LjcgMTcuMyA1LjcgNC40IDUuOCAxMiAyLjIgMTYuM2guM2MzMy40IDAgMzYuNy0yNy4zIDM2LjctMzQgMC0zLjgtMS4xLTMyLTMzLjgtMzMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhREFuZEQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODIuNSA5OC45Yy0uNi0xNy4yIDItMzMuOCAxMi43LTQ4LjIuMyA3LjQgMS4yIDE0LjUgNC4yIDIxLjYgNS45LTI3LjUgMTkuNy00OS4zIDQyLjMtNjUuNS0xLjkgNS45LTMuNSAxMS44LTMgMTcuNyA4LjctNy40IDE4LjgtMTcuOCA0NC40LTIyLjcgMTQuNy0yLjggMjkuNy0yIDQyLjEgMSAzOC41IDkuMyA2MSAzNC4zIDY5LjcgNzIuMyA1LjMgMjMuMS43IDQ1LTguMyA2Ni40LTUuMiAxMi40LTEyIDI0LjQtMjAuNyAzNS4xLTItMS45LTMuOS0zLjgtNS44LTUuNi00Mi44LTQwLjgtMjYuOC0yNS4yLTM3LjQtMzcuNC0xLjEtMS4yLTEtMi4yLS4xLTMuNiA4LjMtMTMuNSAxMS44LTI4LjIgMTAtNDQtMS4xLTkuOC00LjMtMTguOS0xMS4zLTI2LjItMTQuNS0xNS4zLTM5LjItMTUtNTMuNS42LTExLjQgMTIuNS0xNC4xIDI3LjQtMTAuOSA0My42LjIgMS4zLjQgMi43IDAgMy45LTMuNCAxMy43LTQuNiAyNy42LTIuNSA0MS42LjEuNS4xIDEuMS4xIDEuNiAwIC4zLS4xLjUtLjIgMS4xLTIxLjgtMTEtMzYtMjguMy00My4yLTUyLjItOC4zIDE3LjgtMTEuMSAzNS41LTYuNiA1NC4xLTE1LjYtMTUuMi0yMS4zLTM0LjMtMjItNTUuMnptNDY5LjYgMTIzLjJjLTExLjYtMTEuNi0yNS0yMC40LTQwLjEtMjYuNi0xMi44LTUuMi0yNi03LjktMzkuOS03LjEtMTAgLjYtMTkuNiAzLjEtMjkgNi40LTIuNS45LTUuMSAxLjYtNy43IDIuMi00LjkgMS4yLTcuMy0zLjEtNC43LTYuOCAzLjItNC42IDMuNC00LjIgMTUtMTIgLjYtLjQgMS4yLS44IDIuMi0xLjVoLTIuNWMtLjYgMC0xLjIuMi0xLjkuMy0xOS4zIDMuMy0zMC43IDE1LjUtNDguOSAyOS42LTEwLjQgOC4xLTEzLjggMy44LTEyLS41IDEuNC0zLjUgMy4zLTYuNyA1LjEtMTAgMS0xLjggMi4zLTMuNCAzLjUtNS4xLS4yLS4yLS41LS4zLS43LS41LTI3IDE4LjMtNDYuNyA0Mi40LTU3LjcgNzMuMy4zLjMuNy42IDEgLjkuMy0uNi41LTEuMi45LTEuNyAxMC40LTEyLjEgMjIuOC0yMS44IDM2LjYtMjkuOCAxOC4yLTEwLjYgMzcuNS0xOC4zIDU4LjctMjAuMiA0LjMtLjQgOC43LS4xIDEzLjEtLjEtMS44LjctMy41LjktNS4zIDEuMS0xOC41IDIuNC0zNS41IDktNTEuNSAxOC41LTMwLjIgMTcuOS01NC41IDQyLjItNzUuMSA3MC40LS4zLjQtLjQuOS0uNyAxLjMgMTQuNSA1LjMgMjQgMTcuMyAzNi4xIDI1LjYuMi0uMS4zLS4yLjQtLjRsMS4yLTIuN2MxMi4yLTI2LjkgMjctNTIuMyA0Ni43LTc0LjUgMTYuNy0xOC44IDM4LTI1LjMgNjIuNS0yMCA1LjkgMS4zIDExLjQgNC40IDE3LjIgNi44IDIuMy0xLjQgNS4xLTMuMiA4LTQuNyA4LjQtNC4zIDE3LjQtNyAyNi43LTkgMTQuNy0zLjEgMjkuNS00LjkgNDQuNS0xLjN2LS41Yy0uNS0uNC0xLjItLjgtMS43LTEuNHpNMzE2LjcgMzk3LjZjLTM5LjQtMzMtMjIuOC0xOS41LTQyLjctMzUuNi0uOC45IDAtLjItMS45IDMtMTEuMiAxOS4xLTI1LjUgMzUuMy00NCA0Ny42LTEwLjMgNi44LTIxLjUgMTEuOC0zNC4xIDExLjgtMjEuNiAwLTM4LjItOS41LTQ5LjQtMjcuOC0xMi0xOS41LTEzLjMtNDAuNy04LjItNjIuNiA3LjgtMzMuOCAzMC4xLTU1LjIgMzguNi02NC4zLTE4LjctNi4yLTMzIDEuNy00Ni40IDEzLjkuOC0xMy45IDQuMy0yNi4yIDExLjgtMzcuMy0yNC4zIDEwLjYtNDUuOSAyNS02NC44IDQzLjktLjMtNS44IDUuNC00My43IDUuNi00NC43LjMtMi43LS42LTUuMy0zLTcuNC0yNC4yIDI0LjctNDQuNSA1MS44LTU2LjEgODQuNiA3LjQtNS45IDE0LjktMTEuNCAyMy42LTE2LjItOC4zIDIyLjMtMTkuNiA1Mi44LTcuOCAxMDEuMSA0LjYgMTkgMTEuOSAzNi44IDI0LjEgNTIuMyAyLjkgMy43IDYuMyA2LjkgOS41IDEwLjMuMi0uMi40LS4zLjYtLjUtMS40LTctMi4yLTE0LjEtMS41LTIxLjkgMi4yIDMuMiAzLjkgNiA1LjkgOC42IDEyLjYgMTYgMjguNyAyNy40IDQ3LjIgMzUuNiAyNSAxMS4zIDUxLjEgMTMuMyA3Ny45IDguNiA1NC45LTkuNyA5MC43LTQ4LjYgMTE2LTk4LjggMS0xLjguNi0yLjktLjktNC4yem0xNzItNDYuNGMtOS41LTMuMS0yMi4yLTQuMi0yOC43LTIuOSA5LjkgNCAxNC4xIDYuNiAxOC44IDEyIDEyLjYgMTQuNCAxMC40IDM0LjctNS40IDQ1LjYtMTEuNyA4LjEtMjQuOSAxMC41LTM4LjkgOS4xLTEuMi0uMS0yLjMtLjQtMy0uNiAyLjgtMy43IDYtNyA4LjEtMTAuOCA5LjQtMTYuOCA1LjQtNDIuMS04LjctNTYuMS0yLjEtMi4xLTQuNi0zLjktNy01LjktLjMgMS4zLS4xIDIuMS4xIDIuOCA0LjIgMTYuNi04LjEgMzIuNC0yNC44IDMxLjgtNy42LS4zLTEzLjktMy44LTE5LjYtOC41LTE5LjUtMTYuMS0zOS4xLTMyLjEtNTguNS00OC4zLTUuOS00LjktMTIuNS04LjEtMjAuMS04LjctNC42LS40LTkuMy0uNi0xMy45LS45LTUuOS0uNC04LjgtMi44LTEwLjQtOC40LS45LTMuNC0xLjUtNi44LTIuMi0xMC4yLTEuNS04LjEtNi4yLTEzLTE0LjMtMTQuMi00LjQtLjctOC45LTEtMTMuMy0xLjUtMTMtMS40LTE5LjgtNy40LTIyLjYtMjAuMy01IDExLTEuNiAyMi40IDcuMyAyOS45IDQuNSAzLjggOS4zIDcuMyAxMy44IDExLjIgNC42IDMuOCA3LjQgOC43IDcuOSAxNC44LjQgNC43LjggOS41IDEuOCAxNC4xIDIuMiAxMC42IDguOSAxOC40IDE3IDI1LjEgMTYuNSAxMy43IDMzIDI3LjMgNDkuNSA0MS4xIDE3LjkgMTUgMTMuOSAzMi44IDEzIDU2LS45IDIyLjkgMTIuMiA0Mi45IDMzLjUgNTEuMiAxIC40IDIgLjYgMy42IDEuMS0xNS43LTE4LjItMTAuMS00NC4xLjctNTIuMy4zIDIuMi40IDQuMy45IDYuNCA5LjQgNDQuMSA0NS40IDY0LjIgODUgNTYuOSAxNi0yLjkgMzAuNi04LjkgNDIuOS0xOS44IDItMS44IDMuNy00LjEgNS45LTYuNS0xOS4zIDQuNi0zNS44LjEtNTAuOS0xMC42LjctLjMgMS4zLS4zIDEuOS0uMyAyMS4zIDEuOCA0MC42LTMuNCA1Ny0xNy40IDE5LjUtMTYuNiAyNi42LTQyLjkgMTcuNC02Ni04LjMtMjAuMS0yMy42LTMyLjMtNDMuOC0zOC45ek05OS40IDE3OS4zYy01LjMtOS4yLTEzLjItMTUuNi0yMi4xLTIxLjMgMTMuNy0uNSAyNi42LjIgMzkuNiAzLjctNy0xMi4yLTguNS0yNC43LTUtMzguNyA1LjMgMTEuOSAxMy43IDIwLjEgMjMuNiAyNi44IDE5LjcgMTMuMiAzNS43IDE5LjYgNDYuNyAzMC4yIDMuNCAzLjMgNi4zIDcuMSA5LjYgMTAuOS0uOC0yLjEtMS40LTQuMS0yLjItNi01LTEwLjYtMTMtMTguNi0yMi42LTI1LTEuOC0xLjItMi44LTIuNS0zLjQtNC41LTMuMy0xMi41LTMtMjUuMS0uNy0zNy42IDEtNS41IDIuOC0xMC45IDQuNS0xNi4zLjgtMi40IDIuMy00LjYgNC02LjYuNiA2LjkgMCAyNS41IDE5LjYgNDYgMTAuOCAxMS4zIDIyLjQgMjEuOSAzMy45IDMyLjcgOSA4LjUgMTguMyAxNi43IDI1LjUgMjYuOCAxLjEgMS42IDIuMiAzLjMgMy44IDQuNy01LTEzLTE0LjItMjQuMS0yNC4yLTMzLjgtOS42LTkuMy0xOS40LTE4LjQtMjkuMi0yNy40LTMuMy0zLTQuNi02LjctNS4xLTEwLjktMS4yLTEwLjQgMC0yMC42IDQuMy0zMC4yLjUtMSAxLjEtMiAxLjktMy4zLjUgNC4yLjYgNy45IDEuNCAxMS42IDQuOCAyMy4xIDIwLjQgMzYuMyA0OS4zIDYzLjUgMTAgOS40IDE5LjMgMTkuMiAyNS42IDMxLjYgNC44IDkuMyA3LjMgMTkgNS43IDI5LjYtLjEuNi41IDEuNyAxLjEgMiA2LjIgMi42IDEwIDYuOSA5LjcgMTQuMyA3LjctMi42IDEyLjUtOCAxNi40LTE0LjUgNC4yIDIwLjItOS4xIDUwLjMtMjcuMiA1OC43LjQtNC41IDUtMjMuNC0xNi41LTI3LjctNi44LTEuMy0xMi44LTEuMy0yMi45LTIuMSA0LjctOSAxMC40LTIwLjYuNS0yMi40LTI0LjktNC42LTUyLjggMS45LTU3LjggNC42IDguMi40IDE2LjMgMSAyMy41IDMuMy0yIDYuNS00IDEyLjctNS44IDE4LjktMS45IDYuNSAyLjEgMTQuNiA5LjMgOS42IDEuMi0uOSAyLjMtMS45IDMuMy0yLjctMy4xIDE3LjktMi45IDE1LjktMi44IDE4LjMuMyAxMC4yIDkuNSA3LjggMTUuNyA3LjMtMi41IDExLjgtMjkuNSAyNy4zLTQ1LjQgMjUuOCA3LTQuNyAxMi43LTEwLjMgMTUuOS0xNy45LTYuNS44LTEyLjkgMS42LTE5LjIgMi40bC0uMy0uOWM0LjctMy40IDgtNy44IDEwLjItMTMuMSA4LjctMjEuMS0zLjYtMzgtMjUtMzkuOS05LjEtLjgtMTcuOC44LTI1LjkgNS41IDYuMi0xNS42IDE3LjItMjYuNiAzMi42LTM0LjUtMTUuMi00LjMtOC45LTIuNy0yNC42LTYuMyAxNC42LTkuMyAzMC4yLTEzLjIgNDYuNS0xNC42LTUuMi0zLjItNDguMS0zLjYtNzAuMiAyMC45IDcuOSAxLjQgMTUuNSAyLjggMjMuMiA0LjItMjMuOCA3LTQ0IDE5LjctNjIuNCAzNS42IDEuMS00LjggMi43LTkuNSAzLjMtMTQuMy42LTQuNS44LTkuMi4xLTEzLjYtMS41LTkuNC04LjktMTUuMS0xOS43LTE2LjMtNy45LS45LTE1LjYuMS0yMy4zIDEuMy0uOS4xLTEuNy4zLTIuOSAwIDE1LjgtMTQuOCAzNi0yMS43IDUzLjEtMzMuNSA2LTQuNSA2LjgtOC4yIDMtMTQuOXptMTI4LjQgMjYuOGMzLjMgMTYgMTIuNiAyNS41IDIzLjggMjQuMy00LjYtMTEuMy0xMi4xLTE5LjUtMjMuOC0yNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEYWlseW1vdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTguOTMsMjY3YTQ4LjQsNDguNCwwLDAsMC0yNC4zNi02LjIxcS0xOS44MywwLTMzLjQ0LDEzLjI3dC0xMy42MSwzMy40MnEwLDIxLjE2LDEzLjI4LDM0LjZ0MzMuNDMsMTMuNDRxMjAuNSwwLDM0LjExLTEzLjc4VDMyMiwzMDcuNDdBNDcuMTMsNDcuMTMsMCwwLDAsMzE1LjksMjg0LDQ0LjEzLDQ0LjEzLDAsMCwwLDI5OC45MywyNjdaTTAsMzJWNDgwSDQ0OFYzMlpNMzc0LjcxLDQwNS4yNmgtNTMuMVYzODEuMzdoLS42N3EtMTUuNzksMjYuMi01NS43OCwyNi4yLTI3LjU2LDAtNDguODktMTMuMWE4OC4yOSw4OC4yOSwwLDAsMS0zMi45NC0zNS43N3EtMTEuNi0yMi42OC0xMS41OS01MC44OSwwLTI3LjU2LDExLjc2LTUwLjIyYTg5LjksODkuOSwwLDAsMSwzMi45My0zNS43OHEyMS4xOC0xMy4wOSw0Ny43Mi0xMy4xYTgwLjg3LDgwLjg3LDAsMCwxLDI5Ljc0LDUuMjFxMTMuMjgsNS4yMSwyNSwxN1YxNTNsNTUuNzktMTIuMDlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhc2hjdWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi42IDEwNEgxMTAuNGMtNTEuMSAwLTkxLjIgNDMuMy05MS4yIDkzLjVWNDI3YzAgNTAuNSA0MC4xIDg1IDkxLjIgODVoMjI3LjJjNTEuMSAwIDkxLjItMzQuNSA5MS4yLTg1VjBMMzI2LjYgMTA0ek0xNTMuOSA0MTYuNWMtMTcuNyAwLTMyLjQtMTUuMS0zMi40LTMyLjhWMjQwLjhjMC0xNy43IDE0LjctMzIuNSAzMi40LTMyLjVoMTQwLjdjMTcuNyAwIDMyIDE0LjggMzIgMzIuNXYxMjMuNWw1MS4xIDUyLjNIMTUzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlYmlhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODAuMiAyNDUuNmMzLTcuNiA1LjUtMTQgNS4yLTI0LjRsLTQuMyA5YzQuNC0xMy4yIDQtMjcuMSAzLjYtNDAuNGMtLjItNi0uMy0xMS44IDAtMTcuNGwtMS44LS41Yy0xLjUtNDUuMi00MC42LTkzLjEtNzUuMy0xMDkuNGMtMzAtMTMuOC03Ni4xLTE2LjItOTcuMy01LjhjMS4zLTEuMSA0LjItMiA2LjgtMi43bC4zLS4xYzMuMy0xIDYtMS43IDQtMi45Yy0xOS4yIDEuOS0yNC45IDUuNS0zMS4xIDkuNGwtLjEgMGMtNC42IDIuOS05LjUgNi0yMC4zIDguN2MtMy41IDMuNCAxLjcgMiA1LjggLjlsMCAwYzQuMS0xLjEgNy4yLTEuOS0uMSAyLjRjLTMuNSAxLTYuNiAxLjMtOS42IDEuNmwtLjEgMGMtOC4zIC44LTE1LjggMS42LTMwLjcgMTdjLjggMS4zIDMuNC0uMiA1LjMtMS4zbC4xLS4xYzIuMy0xLjQgMy40LTItMS43IDQuNGMtMTkuMS0yLjQtNjAuMyA0My43LTY5LjEgNTlsNC42IC44Yy0zLjIgOC02LjggMTQuOC0xMCAyMC44Yy00LjMgOC4xLTcuOSAxNC45LTguNyAyMS4zYy0uMyA1LjEtMSAxMS0xLjcgMTcuM2wwIDBjLS4xIDEtLjIgMi0uMyAzbC0uMSAuNmMtMyAyNy4zLTYuNyA2MC44IDMuOSA3M2wtMS4zIDEzYy42IDEuMiAxLjEgMi4zIDEuNiAzLjVjLjIgLjQgLjQgLjggLjUgMS4xbDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMGMxIDIuMSAyIDQuMiAzLjMgNi4ybC0zIC4yYzcgMjIuMSAxMC44IDIyLjUgMTUuMSAyMi45bDAgMGM0LjQgLjQgOS4zIC45IDE4LjcgMjQuMmMtMi43LS45LTUuNS0xLjktOS40LTcuMmMtLjUgNC4xIDUuOCAxNi4zIDEzLjEgMjUuOGwtMy4xIDMuNmMyLjEgMy43IDQuOCA2LjIgNy42IDguOGwwIDAgMCAwYzEgLjkgMi4xIDEuOSAzLjEgMi45Yy0xMS45LTYuNSAzLjIgMTMuNyAxMS45IDI1LjJjLjggMS4xIDEuNSAyIDIuMiAyLjlsMCAwIDAgMCAwIDAgMCAwIDAgMGMxLjQgMS45IDIuNSAzLjQgMi45IDQuMWwyLjQtNC4yYy0uMyA2LjEgNC4zIDEzLjkgMTMuMSAyNC43bDcuMy0uM2MzIDYgMTQgMTYuNyAyMC43IDE3LjJsLTQuNCA1LjhjOC4xIDIuNiAxMC4zIDQuMyAxMi43IDYuMmMyLjYgMi4xIDUuNCA0LjMgMTYuMSA4LjFsLTQuMi03LjRjMy41IDMgNi4yIDUuOSA4LjggOC43bC4xIC4xYzUuMiA1LjYgOS45IDEwLjYgMTkuNyAxNS4zYzEwLjcgMy43IDE2LjYgNC43IDIyLjcgNS44Yy4zIDAgLjYgLjEgLjkgLjFjNS40IC44IDExLjIgMS44IDIwLjggNC41Yy0xLjEtLjEtMi4yLS4xLTMuMy0uMWgwYy0yLjMtLjEtNC43LS4xLTctLjFsMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwYy0xNC40LS4yLTI5LjItLjQtNDIuNy01LjJDMTA3LjggNDgwLjUgMTkuNSAzNjcuMiAyNiAyNTAuNmMtLjYtOS45LS4zLTIwLjkgMC0zMC43Yy40LTEzLjUgLjctMjQuOC0xLjYtMjguM2wxLTMuMWM1LjMtMTcuNCAxMS43LTM4LjIgMjMuOC02Mi44bC0uMS0uMnYtLjFjLjQgLjQgMy40IDMuNCA4LjgtNS44Yy44LTEuOCAxLjYtMy43IDIuNC01LjZjLjUtMS4xIC45LTIuMiAxLjQtMy4yYzIuNS02LjEgNS4xLTEyLjMgOC40LTE3LjlsMi42LS42YzEuNy0xMC4xIDE3LTIzLjggMjkuOC0zNS4ybDEuMS0xYzUuNy01LjEgMTAuNy05LjcgMTMuNi0xMy4xbC43IDQuNGMxNy0xNS45IDQ0LjYtMjcuNSA2NS42LTM2LjRsLjUtLjJjNC44LTIgOS4zLTMuOSAxMy4zLTUuN2MtMy40IDMuOCAyLjIgMi43IDEwIDFjNC44LTEgMTAuNC0yLjEgMTUuMy0yLjRsLTMuOSAyLjFjLTIuNyAxLjQtNS40IDIuOC04IDQuNmM4LjEtMiAxMS43LTEuNCAxNS43LS44bC4zIDBjMy41IC42IDcuMyAxLjIgMTQuNiAuMmMtNS42IC44LTEyLjMgMy0xMS4yIDMuOGM3LjkgLjkgMTIuOC0uMSAxNy4yLTFsLjIgMGM1LjUtMS4xIDEwLjMtMiAxOS4zIC45bC0xLTQuOGM3LjMgMi42IDEyLjcgNC4zIDE3LjUgNS44bC41IC4xYzEwIDMgMTcuNiA1LjMgMzQuMiAxNC4xYzMuMiAuMiA1LjMtLjUgNy40LTEuMmwuMSAwYzMuNi0xLjEgNy0yLjEgMTUuMiAxLjJjLjMgLjUgLjUgMSAuNyAxLjRjLjEgLjIgLjIgLjUgLjMgLjdsMCAuMWMxIDIuNiAxLjggNC42IDE0LjYgMTIuMWMxLjctLjctMi43LTQuNy02LjQtOC4yYzAgMCAwIDAtLjEtLjFjLS4yLS4xLS4zLS4zLS41LS40YzMyLjIgMTcuMyA2Ny4zIDU0LjEgNzggOTMuNWMtNi0xMS4xLTUuMi01LjUtNC4zIC41Yy42IDQgMS4yIDguMS0uMiA3LjVjNC41IDEyLjEgOC4xIDI0LjUgMTAuNCAzNy40bC0uOC0yLjktLjEtLjNjLTMuMy0xMS45LTkuNi0zNC4zLTE5LjktNDkuM2MtLjQgNC4zLTIuOCAzLjktNS4yIDMuNWwtLjEgMCAwIDBjLTMuMy0uNi02LjItMS4xLTEuOSAxMi42YzIuNiAzLjggMy4xIDIuNCAzLjUgMS4xbDAgMGMuNS0xLjUgLjktMi43IDQuNyA1LjJjLjEgNC4xIDEgOC4yIDIuMSAxMi43bDAgMCAwIDAgLjEgLjZjLjEgLjMgLjEgLjUgLjIgLjhsLjEgLjZjLjYgMi42IDEuMyA1LjQgMS44IDguNGMtMS4xLS4yLTIuMy0yLjItMy40LTQuMmMtMS40LTIuNC0yLjgtNC43LTMuNy0zLjJjMi40IDExLjUgNi41IDE3LjQgOCAxOC4zYy0uMyAuNi0uNiAuNy0xLjEgLjdjLS44IDAtMS44IC4xLTEuOSA1LjNjLjcgMTMuNyAzLjMgMTIuNSA1LjMgMTEuNmwwIDBjLjYtLjMgMS4yLS42IDEuNy0uNGMtLjYgMi41LTEuNiA1LjEtMi43IDcuOWMtMi44IDcuMS02IDE1LjQtMy40IDI2LjFjLS44LTMtMi02LTMuMS04LjlsLS4xLS40Yy0uMi0uNS0uNC0xLS42LTEuNWwwIDBjLS4zLS44LS42LTEuNi0uOS0yLjNjLS42IDQuNC0uMyA3LjctLjEgMTAuNmMwIC4yIDAgLjUgMCAuN2MuNCA1LjMgLjcgMTAtMyAxOS45YzQuMy0xNC4yIDMuOC0yNi45LS4yLTIwLjhjMSAxMC45LTMuNyAyMC40LTggMjguOWwtLjEgLjJjLTMuNiA3LjEtNi44IDEzLjUtNS45IDE5LjNsLTUuMi03LjFjLTcuNSAxMC45LTcgMTMuMy02LjUgMTUuNWwwIC4xYy41IDEuOSAxIDMuOC0zLjQgMTAuOGMxLjctMi45IDEuMy0zLjYgMS00LjJsMCAwYy0uNC0uOC0uNy0xLjUgMS43LTUuMWMtMS42IC4xLTUuNSAzLjktMTAuMSA4LjVjLTMuOSAzLjktOC41IDguNC0xMi44IDExLjhjLTM3LjUgMzAuMS04Mi4zIDM0LTEyNS42IDE3LjhjLjItMS0uMi0yLjEtMy4xLTQuMWMtMzYuOC0yOC4yLTU4LjUtNTIuMS01MC45LTEwNy41YzIuMS0xLjYgMy42LTUuOCA1LjMtMTAuOGwwIDAgMCAwIC4yLS40IC4xLS4zIDAtLjFjMi45LTguNCA2LjUtMTguOCAxNC4zLTIzLjhjNy44LTE3LjMgMzEuMy0zMy4zIDU2LjQtMzMuN2MyNS42LTEuNCA0Ny4yIDEzLjcgNTguMSAyNy45Yy0xOS44LTE4LjQtNTIuMS0yNC03OS43LTEwLjRjLTI4LjIgMTIuNy00NSA0My44LTQyLjUgNzQuN2MuMy0uNCAuNi0uNiAuOS0uOGwwIDBzMCAwIDAgMGMwIDAgLjEtLjEgLjEtLjFsLjEtLjFjLjYtLjUgMS4xLS45IDEuNC0zLjNjLS45IDYwLjIgNjQuOCAxMDQuMyAxMTIuMSA4MmwuNiAxLjNjMTIuNy0zLjUgMTUuOS02LjUgMjAuMy0xMC43bC4xLS4xIDAgMGMyLjItMi4xIDQuNy00LjUgOC45LTcuM2MtLjMgLjctMS4zIDEuNy0yLjQgMi43Yy0yLjIgMi4xLTQuNiA0LjUtMS42IDQuNmM1LTEuMyAxOC41LTEzLjQgMjguNS0yMi4zbDAgMCAwIDBjLjYtLjUgMS4yLTEgMS43LTEuNWMxLjUtMS4zIDIuOC0yLjUgNC0zLjZsMCAwIC4zLS4zYzEuOS00LjIgMS42LTUuNiAxLjMtN2wwLS4xYy0uNC0xLjYtLjgtMy4zIDIuNC05LjZsNy4zLTMuN2MuOC0yLjEgMS41LTQuMSAyLjItNmMuMi0uNiAuNS0xLjIgLjctMS44bC0uNC0uMnpNMzQ5LjMgMzQuM2wtLjItLjEgLjIgLjEgMCAwek0yNDcuOCAzMzQuMWMtNi0zLTEzLjctOC45LTE0LjgtMTEuNGwtLjQgLjNjLS4zIC42LS41IDEuMy0uMiAyLjJjLTEyLjItNS43LTIzLjQtMTQuMy0zMi42LTI0LjljNC45IDcuMSAxMC4xIDE0LjEgMTcgMTkuNWMtNi45LTIuMy0xNS4xLTExLjgtMjEuNi0xOS4zbC0uMS0uMWMtNC4zLTUtNy45LTkuMS05LjctOS41YzE5LjggMzUuNSA4MC41IDYyLjMgMTEyLjMgNDljLTE0LjcgLjUtMzMuNCAuMy00OS45LTUuOHptNzkuMy0xMTkuN2wtLjEtLjJjLS41LTEuNS0xLjEtMy4xLTEuNy0zLjRjMS40LTUuOCA1LjQtMTAuNyA0LjQgNC42Yy0xIDMuOC0xLjggMS41LTIuNi0xem0tNC4yIDIyLjJjLTEuMyA3LjktNSAxNS41LTEwLjEgMjIuNWMuMi0yLTEuMi0yLjQtMi42LTIuOGwwIDBjLTIuOS0uOC01LjktMS42IDUuNi0xNi4xYy0uNSAxLjktMi4xIDQuNi0zLjcgNy4zbDAgMCAwIDAtLjMgLjRjLTMuNiA1LjktNi43IDExIDQgNC4zbDEtMS44YzIuNi00LjUgNS04LjggNi0xMy44aC4xem0tNTUuNiAzMy45YzcuMSAuNiAxNC4xIC42IDIxLTEuMWMtMi41IDIuNC01LjIgNC44LTguMyA3LjJjLTExLjEtMS43LTIxLjItNi0xMi43LTYuMXptLTkyLjYgMTEuNmMzLjYgNy4xIDYuNCAxMS41IDkgMTUuN2wuMSAuMmMyLjMgMy43IDQuNCA3LjEgNi44IDExLjdjLTUuMS00LjItOC43LTkuNS0xMi41LTE1bC0uMy0uNWMtMS40LTIuMS0yLjgtNC4yLTQuNC02LjJsMS4yLTUuOWguMXptNy41LTkuNmMxLjYgMy4zIDMuMiA2LjQgNS43IDkuMWwyLjYgNy43LTEuMy0yLjFjLTMuMi01LjMtNi4zLTEwLjYtOC0xNi43bC44IDEuNiAuMiAuNHptMjM4LjktNDEuNmMtMi4zIDE3LjQtNy43IDM0LjYtMTYgNTAuM2M3LjYtMTQuOSAxMi41LTMwLjkgMTQuOC00Ny4ybDEuMi0zLjF6TTM1LjYgMTEwLjZjLjQgLjggMS40IC41IDIuMyAuM2MxLjktLjUgMy42LS45LS4xIDcuNmMtLjUgLjMtMSAuNy0xLjUgMWwwIDAgMCAwYy0xLjQgLjktMi44IDEuOS0zLjkgM2MxLjktMy44IDMuNS03LjQgMy4yLTExLjl6TTI1LjMgMTUyLjNjLS43IDMuNy0xLjUgNy45LTMuNCAxMy45Yy4yLTEuOSAwLTMuNS0uMi00LjlsMC0uMWMtLjQtMy40LS43LTYuMyA0LjMtMTIuOGMtLjMgMS4yLS41IDIuNS0uNyAzLjh2LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlZXplciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTEuNDYsMjQ0LjcxSDU3NlYxNzJINDUxLjQ2Wm0wLTE3My44OXY3Mi42N0g1NzZWNzAuODJabTAsMjc1LjA2SDU3NlYyNzMuMkg0NTEuNDZaTTAsNDQ3LjA5SDEyNC41NFYzNzQuNDJIMFptMTUwLjQ3LDBIMjc1VjM3NC40MkgxNTAuNDdabTE1MC41MiwwSDQyNS41M1YzNzQuNDJIMzAxWm0xNTAuNDcsMEg1NzZWMzc0LjQySDQ1MS40NlpNMzAxLDM0NS44OEg0MjUuNTNWMjczLjJIMzAxWm0tMTUwLjUyLDBIMjc1VjI3My4ySDE1MC40N1ptMC0xMDEuMTdIMjc1VjE3MkgxNTAuNDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlbGljaW91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDYuNSA2OGMtLjQtMS41LS45LTMtMS40LTQuNS0uOS0yLjUtMi00LjgtMy4zLTcuMS0xLjQtMi40LTMtNC44LTQuNy02LjktMi4xLTIuNS00LjQtNC44LTYuOS02LjgtMS4xLS45LTIuMi0xLjctMy4zLTIuNS0xLjMtLjktMi42LTEuNy00LTIuNC0xLjgtMS0zLjYtMS44LTUuNS0yLjUtMS43LS43LTMuNS0xLjMtNS40LTEuNy0zLjgtMS03LjktMS41LTEyLTEuNUg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDQuMS41IDguMiAxLjUgMTIgMiA3LjcgNS44IDE0LjYgMTEgMjAuMyAxIDEuMSAyLjEgMi4yIDMuMyAzLjMgNS43IDUuMiAxMi42IDkgMjAuMyAxMSAzLjggMSA3LjkgMS41IDEyIDEuNWgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjLS4xLTQuMS0uNi04LjItMS42LTEyek00MTYgNDMyYzAgOC44LTcuMiAxNi0xNiAxNkgyMjRWMjU2SDMyVjgwYzAtOC44IDcuMi0xNiAxNi0xNmgxNzZ2MTkyaDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVwbG95ZG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Mi4yIDEzNmg1MS43djIzOS42aC01MS43di0yMC43Yy0xOS44IDI0LjgtNTIuOCAyNC4xLTczLjggMTQuNy0yNi4yLTExLjctNDQuMy0zOC4xLTQ0LjMtNzEuOCAwLTI5LjggMTQuOC01Ny45IDQzLjMtNzAuOCAyMC4yLTkuMSA1Mi43LTEwLjYgNzQuOCAxMi45VjEzNnptLTY0LjcgMTYxLjhjMCAxOC4yIDEzLjYgMzMuNSAzMy4yIDMzLjUgMTkuOCAwIDMzLjItMTYuNCAzMy4yLTMyLjkgMC0xNy4xLTEzLjctMzMuMi0zMy4yLTMzLjItMTkuNiAwLTMzLjIgMTYuNC0zMy4yIDMyLjZ6TTE4OC41IDEzNmg1MS43djIzOS42aC01MS43di0yMC43Yy0xOS44IDI0LjgtNTIuOCAyNC4xLTczLjggMTQuNy0yNi4yLTExLjctNDQuMy0zOC4xLTQ0LjMtNzEuOCAwLTI5LjggMTQuOC01Ny45IDQzLjMtNzAuOCAyMC4yLTkuMSA1Mi43LTEwLjYgNzQuOCAxMi45VjEzNnptLTY0LjcgMTYxLjhjMCAxOC4yIDEzLjYgMzMuNSAzMy4yIDMzLjUgMTkuOCAwIDMzLjItMTYuNCAzMy4yLTMyLjkgMC0xNy4xLTEzLjctMzMuMi0zMy4yLTMzLjItMTkuNyAwLTMzLjIgMTYuNC0zMy4yIDMyLjZ6TTQ0OCA5NmMxNy41IDAgMzIgMTQuNCAzMiAzMnYyNTZjMCAxNy41LTE0LjQgMzItMzIgMzJINjRjLTE3LjUgMC0zMi0xNC40LTMyLTMyVjEyOGMwLTE3LjUgMTQuNC0zMiAzMi0zMmgzODRtMC0zMkg2NEMyOC44IDY0IDAgOTIuOCAwIDEyOHYyNTZjMCAzNS4yIDI4LjggNjQgNjQgNjRoMzg0YzM1LjIgMCA2NC0yOC44IDY0LTY0VjEyOGMwLTM1LjItMjguOC02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVza3BybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuOSA1MTJsMzEuMS0zOC40YzEyLjMtLjIgMjUuNi0xLjQgMzYuNS02LjYgMzguOS0xOC42IDM4LjQtNjEuOSAzOC4zLTYzLjgtLjEtNS0uOC00LjQtMjguOS0zNy40SDM2MmMtLjIgNTAuMS03LjMgNjguNS0xMC4yIDc1LjctOS40IDIzLjctNDMuOSA2Mi44LTk1LjIgNjkuNC04LjcgMS4xLTMyLjggMS4yLTUwLjcgMS4xem0yMDAuNC0xNjcuN2MzOC42IDAgNTguNS0xMy42IDczLjctMzAuOWwtMTc1LjUtLjMtMTcuNCAzMS4zIDExOS4yLS4xem0tNDMuNi0yMjMuOXYxNjguM2gtNzMuNWwtMzIuNyA1NS41SDI1MGMtNTIuMyAwLTU4LjEtNTYuNS01OC4zLTU4LjktMS4yLTEzLjItMjEuMy0xMS42LTIwLjEgMS44IDEuNCAxNS44IDguOCA0MCAyNi40IDU3LjFoLTkxYy0yNS41IDAtMTEwLjgtMjYuOC0xMDctMTE0VjE2LjlDMCAuOSA5LjcuMyAxNSAuMWg4MmMuMiAwIC4zLjEuNS4xIDQuMy0uNCA1MC4xLTIuMSA1MC4xIDQzLjcgMCAxMy4zIDIwLjIgMTMuNCAyMC4yIDAgMC0xOC4yLTUuNS0zMi44LTE1LjgtNDMuN2g4NC4yYzEwOC43LS40IDEyNi41IDc5LjQgMTI2LjUgMTIwLjJ6bS0xMzIuNSA1Nmw2NCAyOS4zYzEzLjMtNDUuNS00Mi4yLTcxLjctNjQtMjkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGV2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMC4xMiAyMDguMjljLTMuODgtMi45LTcuNzctNC4zNS0xMS42NS00LjM1SDkxLjAzdjEwNC40N2gxNy40NWMzLjg4IDAgNy43Ny0xLjQ1IDExLjY1LTQuMzUgMy44OC0yLjkgNS44Mi03LjI1IDUuODItMTMuMDZ2LTY5LjY1Yy0uMDEtNS44LTEuOTYtMTAuMTYtNS44My0xMy4wNnpNNDA0LjEgMzJINDMuOUMxOS43IDMyIC4wNiA1MS41OSAwIDc1Ljh2MzYwLjRDLjA2IDQ2MC40MSAxOS43IDQ4MCA0My45IDQ4MGgzNjAuMmMyNC4yMSAwIDQzLjg0LTE5LjU5IDQzLjktNDMuOFY3NS44Yy0uMDYtMjQuMjEtMTkuNy00My44LTQzLjktNDMuOHpNMTU0LjIgMjkxLjE5YzAgMTguODEtMTEuNjEgNDcuMzEtNDguMzYgNDcuMjVoLTQ2LjRWMTcyLjk4aDQ3LjM4YzM1LjQ0IDAgNDcuMzYgMjguNDYgNDcuMzcgNDcuMjhsLjAxIDcwLjkzem0xMDAuNjgtODguNjZIMjAxLjZ2MzguNDJoMzIuNTd2MjkuNTdIMjAxLjZ2MzguNDFoNTMuMjl2MjkuNTdoLTYyLjE4Yy0xMS4xNi4yOS0yMC40NC04LjUzLTIwLjcyLTE5LjY5VjE5My43Yy0uMjctMTEuMTUgOC41Ni0yMC40MSAxOS43MS0yMC42OWg2My4xOWwtLjAxIDI5LjUyem0xMDMuNjQgMTE1LjI5Yy0xMy4yIDMwLjc1LTM2Ljg1IDI0LjYzLTQ3LjQ0IDBsLTM4LjUzLTE0NC44aDMyLjU3bDI5LjcxIDExMy43MiAyOS41Ny0xMTMuNzJoMzIuNThsLTM4LjQ2IDE0NC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXZpYW50YXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5My4ybC05OC4yIDE3OS4xIDcuNCA5LjVIMzIwdjEyNy43SDE1OS4xbC0xMy41IDkuMi00My43IDg0Yy0uMyAwLTguNiA4LjYtOS4yIDkuMkgwdi05My4ybDkzLjItMTc5LjQtNy40LTkuMkgwVjEwMi41aDE1NmwxMy41LTkuMiA0My43LTg0Yy4zIDAgOC42LTguNiA5LjItOS4ySDMyMHY5My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM4IDMwMS4yaDU4LjdMMzE5IDI3MWgtNTguN0wyMzggMzAxLjJ6TTAgMjgyLjl2Ni40aDgxLjhsNC43LTYuNEgwek0xNzIuOSAyNzFjLTguNyAwLTYtMy42LTQuNi01LjUgMi44LTMuOCA3LjYtMTAuNCAxMC40LTE0LjEgMi44LTMuNyAyLjgtNS45LTIuOC01LjloLTUxbC00MS4xIDU1LjhoMTAwLjFjMzMuMSAwIDUxLjUtMjIuNSA1Ny4yLTMwLjNoLTY4LjJ6bTMxNy41LTYuOWwzOS4zLTUzLjRoLTYyLjJsLTM5LjMgNTMuNGg2Mi4yek05NS4zIDI3MUgwdjYuNGg5MC42bDQuNy02LjR6bTExMS0yNi42Yy0yLjggMy44LTcuNSAxMC40LTEwLjMgMTQuMi0xLjQgMi00LjEgNS41IDQuNiA1LjVoNDUuNnM3LjMtMTAgMTMuNS0xOC40YzguNC0xMS40LjctMzUtMjkuMi0zNUgxMTIuNmwtMjAuNCAyNy44aDExMS40YzUuNiAwIDUuNSAyLjIgMi43IDUuOXpNMCAzMDEuMmg3My4xbDQuNy02LjRIMHY2LjR6bTMyMyAwaDU4LjdMNDA0IDI3MWgtNTguN2MtLjEgMC0yMi4zIDMwLjItMjIuMyAzMC4yem0yMjIgLjFoOTV2LTYuNGgtOTAuM2wtNC43IDYuNHptMjIuMy0zMC4zbC00LjcgNi40SDY0MFYyNzFoLTcyLjd6bS0xMy41IDE4LjNINjQwdi02LjRoLTgxLjVsLTQuNyA2LjR6bS0xNjQuMi03OC42bC0yMi41IDMwLjZoLTI2LjJsMjIuNS0zMC42aC01OC43bC0zOS4zIDUzLjRINDA5bDM5LjMtNTMuNGgtNTguN3ptMzMuNSA2MC4zcy00LjMgNS45LTYuNCA4LjdjLTcuNCAxMC0uOSAyMS42IDIzLjIgMjEuNmg5NC4zbDIyLjMtMzAuM0g0MjMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhc3BvcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUxLjY0IDM1NC41NWMtMS40IDAtODggMTE5LjktODguNyAxMTkuOVM3Ni4zNCA0MTQgNzYgNDEzLjI1czg2LjYtMTI1LjcgODYuNi0xMjcuNGMwLTIuMi0xMjkuNi00NC0xMzcuNi00Ny4xLTEuMy0uNSAzMS40LTEwMS44IDMxLjctMTAyLjEuNi0uNyAxNDQuNCA0NyAxNDUuNSA0NyAuNCAwIC45LS42IDEtMS4zLjQtMiAxLTE0OC42IDEuNy0xNDkuNi44LTEuMiAxMDQuNS0uNyAxMDUuMS0uMyAxLjUgMSAzLjUgMTU2LjEgNi4xIDE1Ni4xIDEuNCAwIDEzOC43LTQ3IDEzOS4zLTQ2LjMuOC45IDMxLjkgMTAyLjIgMzEuNSAxMDIuNi0uOS45LTE0MC4yIDQ3LjEtMTQwLjYgNDguOC0uMyAxLjQgODIuOCAxMjIuMSA4Mi41IDEyMi45cy04NS41IDYzLjUtODYuMyA2My41Yy0xLS4yLTg5LTEyNS41LTkwLjktMTI1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpZ2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODEuNyAxNzIuM0gwdjE3NC40aDEzMi43Vjk2aC01MXY3Ni4zem0wIDEzMy40SDUwLjl2LTkyLjNoMzAuOHY5Mi4zem0yOTcuMi0xMzMuNHYxNzQuNGg4MS44djI4LjVoLTgxLjhWNDE2SDUxMlYxNzIuM0gzNzguOXptODEuOCAxMzMuNGgtMzAuOHYtOTIuM2gzMC44djkyLjN6bS0yMzUuNiA0MWg4Mi4xdjI4LjVoLTgyLjFWNDE2aDEzMy4zVjE3Mi4zSDIyNS4xdjE3NC40em01MS4yLTEzMy4zaDMwLjh2OTIuM2gtMzAuOHYtOTIuM3pNMTUzLjMgOTZoNTEuM3Y1MWgtNTEuM1Y5NnptMCA3Ni4zaDUxLjN2MTc0LjRoLTUxLjNWMTcyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpZ2l0YWxPY2VhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04NyA0ODEuOGg3My43di03My42SDg3ek0yNS40IDM0Ni42djYxLjZIODd2LTYxLjZ6bTQ2Ni4yLTE2OS43Yy0yMy03NC4yLTgyLjQtMTMzLjMtMTU2LjYtMTU2LjZDMTY0LjktMzIuOCA4IDkzLjcgOCAyNTUuOWg5NS44YzAtMTAxLjggMTAxLTE4MC41IDIwOC4xLTE0MS43IDM5LjcgMTQuMyA3MS41IDQ2LjEgODUuOCA4NS43IDM5LjEgMTA3LTM5LjcgMjA3LjgtMTQxLjQgMjA4di4zaC0uM1Y1MDRjMTYyLjYgMCAyODguOC0xNTYuOCAyMzUuNi0zMjcuMXptLTIzNS4zIDIzMXYtOTUuM2gtOTUuNnY5NS42SDI1NnYtLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc2NvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI0LjUzMSw2OS44MzZhMS41LDEuNSwwLDAsMC0uNzY0LS43QTQ4NS4wNjUsNDg1LjA2NSwwLDAsMCw0MDQuMDgxLDMyLjAzYTEuODE2LDEuODE2LDAsMCwwLTEuOTIzLjkxLDMzNy40NjEsMzM3LjQ2MSwwLDAsMC0xNC45LDMwLjYsNDQ3Ljg0OCw0NDcuODQ4LDAsMCwwLTEzNC40MjYsMCwzMDkuNTQxLDMwOS41NDEsMCwwLDAtMTUuMTM1LTMwLjYsMS44OSwxLjg5LDAsMCwwLTEuOTI0LS45MUE0ODMuNjg5LDQ4My42ODksMCwwLDAsMTE2LjA4NSw2OS4xMzdhMS43MTIsMS43MTIsMCwwLDAtLjc4OC42NzZDMzkuMDY4LDE4My42NTEsMTguMTg2LDI5NC42OSwyOC40Myw0MDQuMzU0YTIuMDE2LDIuMDE2LDAsMCwwLC43NjUsMS4zNzVBNDg3LjY2Niw0ODcuNjY2LDAsMCwwLDE3Ni4wMiw0NzkuOTE4YTEuOSwxLjksMCwwLDAsMi4wNjMtLjY3NkEzNDguMiwzNDguMiwwLDAsMCwyMDguMTIsNDMwLjRhMS44NiwxLjg2LDAsMCwwLTEuMDE5LTIuNTg4LDMyMS4xNzMsMzIxLjE3MywwLDAsMS00NS44NjgtMjEuODUzLDEuODg1LDEuODg1LDAsMCwxLS4xODUtMy4xMjZjMy4wODItMi4zMDksNi4xNjYtNC43MTEsOS4xMDktNy4xMzdhMS44MTksMS44MTksMCwwLDEsMS45LS4yNTZjOTYuMjI5LDQzLjkxNywyMDAuNDEsNDMuOTE3LDI5NS41LDBhMS44MTIsMS44MTIsMCwwLDEsMS45MjQuMjMzYzIuOTQ0LDIuNDI2LDYuMDI3LDQuODUxLDkuMTMyLDcuMTZhMS44ODQsMS44ODQsMCwwLDEtLjE2MiwzLjEyNiwzMDEuNDA3LDMwMS40MDcsMCwwLDEtNDUuODksMjEuODMsMS44NzUsMS44NzUsMCwwLDAtMSwyLjYxMSwzOTEuMDU1LDM5MS4wNTUsMCwwLDAsMzAuMDE0LDQ4LjgxNSwxLjg2NCwxLjg2NCwwLDAsMCwyLjA2My43QTQ4Ni4wNDgsNDg2LjA0OCwwLDAsMCw2MTAuNyw0MDUuNzI5YTEuODgyLDEuODgyLDAsMCwwLC43NjUtMS4zNTJDNjIzLjcyOSwyNzcuNTk0LDU5MC45MzMsMTY3LjQ2NSw1MjQuNTMxLDY5LjgzNlpNMjIyLjQ5MSwzMzcuNThjLTI4Ljk3MiwwLTUyLjg0NC0yNi41ODctNTIuODQ0LTU5LjIzOVMxOTMuMDU2LDIxOS4xLDIyMi40OTEsMjE5LjFjMjkuNjY1LDAsNTMuMzA2LDI2LjgyLDUyLjg0Myw1OS4yMzlDMjc1LjMzNCwzMTAuOTkzLDI1MS45MjQsMzM3LjU4LDIyMi40OTEsMzM3LjU4Wm0xOTUuMzgsMGMtMjguOTcxLDAtNTIuODQzLTI2LjU4Ny01Mi44NDMtNTkuMjM5UzM4OC40MzcsMjE5LjEsNDE3Ljg3MSwyMTkuMWMyOS42NjcsMCw1My4zMDcsMjYuODIsNTIuODQ0LDU5LjIzOUM0NzAuNzE1LDMxMC45OTMsNDQ3LjUzOCwzMzcuNTgsNDE3Ljg3MSwzMzcuNThaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc2NvdXJzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuOSAzMkMxMDMuMyAzMiAwIDEzMC41IDAgMjUyLjEgMCAyNTYgLjEgNDgwIC4xIDQ4MGwyMjUuOC0uMmMxMjIuNyAwIDIyMi4xLTEwMi4zIDIyMi4xLTIyMy45QzQ0OCAxMzQuMyAzNDguNiAzMiAyMjUuOSAzMnpNMjI0IDM4NGMtMTkuNCAwLTM3LjktNC4zLTU0LjQtMTIuMUw4OC41IDM5MmwyMi45LTc1Yy05LjgtMTguMS0xNS40LTM4LjktMTUuNC02MSAwLTcwLjcgNTcuMy0xMjggMTI4LTEyOHMxMjggNTcuMyAxMjggMTI4LTU3LjMgMTI4LTEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvY2h1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTcuOSAxNjBIMjU2VjE5LjZMMzk3LjkgMTYwek0zMDQgMTkydjEzMGMwIDY2LjgtMzYuNSAxMDAuMS0xMTMuMyAxMDAuMUg5NlY4NC44aDk0LjdjMTIgMCAyMy4xLjggMzMuMSAyLjV2LTg0QzIxMi45IDEuMSAyMDEuNCAwIDE4OS4yIDBIMHY1MTJoMTg5LjJDMzI5LjcgNTEyIDQwMCA0NDcuNCA0MDAgMzE4LjFWMTkyaC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9ja2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0OS45IDIzNi4zaC02Ni4xdi01OS40aDY2LjF2NTkuNHptMC0yMDQuM2gtNjYuMXY2MC43aDY2LjFWMzJ6bTc4LjIgMTQ0LjhIMzYydjU5LjRoNjYuMXYtNTkuNHptLTE1Ni4zLTcyLjFoLTY2LjF2NjAuMWg2Ni4xdi02MC4xem03OC4xIDBoLTY2LjF2NjAuMWg2Ni4xdi02MC4xem0yNzYuOCAxMDBjLTE0LjQtOS43LTQ3LjYtMTMuMi03My4xLTguNC0zLjMtMjQtMTYuNy00NC45LTQxLjEtNjMuN2wtMTQtOS4zLTkuMyAxNGMtMTguNCAyNy44LTIzLjQgNzMuNi0zLjcgMTAzLjgtOC43IDQuNy0yNS44IDExLjEtNDguNCAxMC43SDIuNGMtOC43IDUwLjggNS44IDExNi44IDQ0IDE2Mi4xIDM3LjEgNDMuOSA5Mi43IDY2LjIgMTY1LjQgNjYuMiAxNTcuNCAwIDI3My45LTcyLjUgMzI4LjQtMjA0LjIgMjEuNC40IDY3LjYuMSA5MS4zLTQ1LjIgMS41LTIuNSA2LjYtMTMuMiA4LjUtMTcuMWwtMTMuMy04Ljl6bS01MTEuMS0yNy45aC02NnY1OS40aDY2LjF2LTU5LjR6bTc4LjEgMGgtNjYuMXY1OS40aDY2LjF2LTU5LjR6bTc4LjEgMGgtNjYuMXY1OS40aDY2LjF2LTU5LjR6bS03OC4xLTcyLjFoLTY2LjF2NjAuMWg2Ni4xdi02MC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmFmdDJEaWdpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzOTguMWwtMTQ0LTgyLjJ2NjQuN2gtOTEuM2MzMC44LTM1IDgxLjgtOTUuOSAxMTEuOC0xNDkuMyAzNS4yLTYyLjYgMTYuMS0xMjMuNC0xMi44LTE1My4zLTQuNC00LjYtNjIuMi02Mi45LTE2Ni00MS4yLTU5LjEgMTIuNC04OS40IDQzLjQtMTA0LjMgNjcuMy0xMy4xIDIwLjktMTcgMzkuOC0xOC4yIDQ3LjctNS41IDMzIDE5LjQgNjcuMSA1Ni43IDY3LjEgMzEuNyAwIDU3LjMtMjUuNyA1Ny4zLTU3LjQgMC0yNy4xLTE5LjctNTIuMS00OC01Ni44IDEuOC03LjMgMTcuNy0yMS4xIDI2LjMtMjQuNyA0MS4xLTE3LjMgNzggNS4yIDgzLjMgMzMuNSA4LjMgNDQuMy0zNy4xIDkwLjQtNjkuNyAxMjcuNkM4NC41IDMyOC4xIDE4LjMgMzk2LjggMCA0MTUuOWwzMzYtLjFWNDgwek0zNjkuOSAzNzFsNDcuMSAyNy4yLTQ3LjEgMjcuMnpNMTM0LjIgMTYxLjRjMCAxMi40LTEwIDIyLjQtMjIuNCAyMi40cy0yMi40LTEwLTIyLjQtMjIuNCAxMC0yMi40IDIyLjQtMjIuNCAyMi40IDEwLjEgMjIuNCAyMi40ek04Mi41IDM4MC41YzI1LjYtMjcuNCA5Ny43LTEwNC43IDE1MC44LTE2OS45IDM1LjEtNDMuMSA0MC4zLTgyLjQgMjguNC0xMTIuNy03LjQtMTguOC0xNy41LTMwLjItMjQuMy0zNS43IDQ1LjMgMi4xIDY4IDIzLjQgODIuMiAzOC4zIDAgMCA0Mi40IDQ4LjIgNS44IDExMy4zLTM3IDY1LjktMTEwLjkgMTQ3LjUtMTI4LjUgMTY2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyaWJiYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4yNTIgOCA4IDExOS4yNTIgOCAyNTZzMTExLjI1MiAyNDggMjQ4IDI0OCAyNDgtMTExLjI1MiAyNDgtMjQ4UzM5Mi43NDggOCAyNTYgOHptMTYzLjk3IDExNC4zNjZjMjkuNTAzIDM2LjA0NiA0Ny4zNjkgODEuOTU3IDQ3LjgzNSAxMzEuOTU1LTYuOTg0LTEuNDc3LTc3LjAxOC0xNS42ODItMTQ3LjUwMi02LjgxOC01Ljc1Mi0xNC4wNDEtMTEuMTgxLTI2LjM5My0xOC42MTctNDEuNjE0IDc4LjMyMS0zMS45NzcgMTEzLjgxOC03Ny40ODIgMTE4LjI4NC04My41MjN6TTM5Ni40MjEgOTcuODdjLTMuODEgNS40MjctMzUuNjk3IDQ4LjI4Ni0xMTEuMDIxIDc2LjUxOS0zNC43MTItNjMuNzc2LTczLjE4NS0xMTYuMTY4LTc5LjA0LTEyNC4wMDggNjcuMTc2LTE2LjE5MyAxMzcuOTY2IDEuMjcgMTkwLjA2MSA0Ny40ODl6bS0yMzAuNDgtMzMuMjVjNS41ODUgNy42NTkgNDMuNDM4IDYwLjExNiA3OC41MzcgMTIyLjUwOS05OS4wODcgMjYuMzEzLTE4Ni4zNiAyNS45MzQtMTk1LjgzNCAyNS44MDlDNjIuMzggMTQ3LjIwNSAxMDYuNjc4IDkyLjU3MyAxNjUuOTQxIDY0LjYyek00NC4xNyAyNTYuMzIzYzAtMi4xNjYuMDQzLTQuMzIyLjEwOC02LjQ3MyA5LjI2OC4xOSAxMTEuOTIgMS41MTMgMjE3LjcwNi0zMC4xNDYgNi4wNjQgMTEuODY4IDExLjg1NyAyMy45MTUgMTcuMTc0IDM1Ljk0OS03Ni41OTkgMjEuNTc1LTE0Ni4xOTQgODMuNTI3LTE4MC41MzEgMTQyLjMwNkM2NC43OTQgMzYwLjQwNSA0NC4xNyAzMTAuNzMgNDQuMTcgMjU2LjMyM3ptODEuODA3IDE2Ny4xMTNjMjIuMTI3LTQ1LjIzMyA4Mi4xNzgtMTAzLjYyMiAxNjcuNTc5LTEzMi43NTYgMjkuNzQgNzcuMjgzIDQyLjAzOSAxNDIuMDUzIDQ1LjE4OSAxNjAuNjM4LTY4LjExMiAyOS4wMTMtMTUwLjAxNSAyMS4wNTMtMjEyLjc2OC0yNy44ODJ6bTI0OC4zOCA4LjQ4OWMtMi4xNzEtMTIuODg2LTEzLjQ0Ni03NC44OTctNDEuMTUyLTE1MS4wMzMgNjYuMzgtMTAuNjI2IDEyNC43IDYuNzY4IDEzMS45NDcgOS4wNTUtOS40NDIgNTguOTQxLTQzLjI3MyAxMDkuODQ0LTkwLjc5NSAxNDEuOTc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcm9wYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MjggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2NC40IDExNi4zbC0xMzIgODQuMyAxMzIgODQuMy0xMzIgODQuM0wwIDI4NC4xbDEzMi4zLTg0LjNMMCAxMTYuMyAxMzIuMyAzMmwxMzIuMSA4NC4zek0xMzEuNiAzOTUuN2wxMzItODQuMyAxMzIgODQuMy0xMzIgODQuMy0xMzItODQuM3ptMTMyLjgtMTExLjZsMTMyLTg0LjMtMTMyLTgzLjZMMzk1LjcgMzIgNTI4IDExNi4zbC0xMzIuMyA4NC4zTDUyOCAyODQuOGwtMTMyLjMgODQuMy0xMzEuMy04NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1cGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMy45NzMsMTA4LjEzNkMyNjguMiw3Mi40NTksMjM0LjE4NywzOC4zNSwyMjQuMDQ3LDBjLTkuOTU3LDM4LjM1LTQ0LjI1LDcyLjQ1OS04MC4wMTksMTA4LjEzNkM5MC40NjcsMTYxLjcsMjkuNzE2LDIyMi4zNTYsMjkuNzE2LDMxMy40MzZjLTIuMzM3LDEwNy4zLDgyLjc1MiwxOTYuMTgsMTkwLjA1MywxOTguNTE3UzQxNS45NDgsNDI5LjIsNDE4LjI4NSwzMjEuOXEuMDkxLTQuMjMxLDAtOC40NjRDNDE4LjI4NSwyMjIuMzU2LDM1Ny41MzQsMTYxLjcsMzAzLjk3MywxMDguMTM2Wm0tMTc0LjMyNiwyMjNhMTMwLjI4MiwxMzAuMjgyLDAsMCwwLTE1LjIxMSwyNC4xNTMsNC45NzgsNC45NzgsMCwwLDEtMy4zMTksMi43NjZoLTEuNjU5Yy00LjMzMywwLTkuMjE5LTguNDgxLTkuMjE5LTguNDgxaDBjLTEuMjktMi4wMjgtMi40ODktNC4xNDktMy42ODctNi4zNjFsLS44My0xLjc1MmMtMTEuMjQ3LTI1LjcyLTEuNDc1LTYyLjMxOC0xLjQ3NS02Mi4zMThoMGExNjAuNTg1LDE2MC41ODUsMCwwLDEsMjMuMjMxLTQ5Ljg3M0EyOTAuOCwyOTAuOCwwLDAsMSwxMzguNSwyMDEuNjEzbDkuMjE5LDkuMjE5LDQzLjUxMiw0NC40MzRhNC45NzksNC45NzksMCwwLDEsMCw2LjYzOEwxNDUuNzgsMzEyLjMzaDBabTk2LjYxMiwxMjcuMzExYTY3LjIsNjcuMiwwLDAsMS00OS43ODEtMTExLjkxNWMxNC4yLTE2Ljg3MSwzMS41MjgtMzMuNDY0LDUwLjMzNC01NS4zMTMsMjIuMzA5LDIzLjc4NSwzNi44NzUsNDAuMSw1MS4xNjQsNTcuOTg2YTI4LjQxMywyOC40MTMsMCwwLDEsMi45NSw0LjQyNSw2NS45MDUsNjUuOTA1LDAsMCwxLDExLjk4NCwzNy45ODEsNjYuNjUxLDY2LjY1MSwwLDAsMS02Ni40NjYsNjYuODM2Wk0zNTIuMzcxLDM1MS42aDBhNy43NDMsNy43NDMsMCwwLDEtNi4xNzYsNS4zNDdIMzQ0LjlhMTEuMjQ5LDExLjI0OSwwLDAsMS02LjI2OS01LjA3aDBhMzQ4LjIxLDM0OC4yMSwwLDAsMC0zOS40NTYtNDguOTUyTDI4MS4zODcsMjg0LjQ5LDIyMi4zLDIyMy4xODVhNDk3Ljg4OCw0OTcuODg4LDAsMCwxLTM1LjQtMzYuMzIyLDEyLjAzMywxMi4wMzMsMCwwLDAtLjkyMi0xLjM4MiwzNS40LDM1LjQsMCwwLDEtNC43LTkuMjE5VjE3NC41MWEzMS4zNDYsMzEuMzQ2LDAsMCwxLDkuMjE4LTI3LjY1NmMxMS40MzItMTEuNDMxLDIyLjk1NS0yMi45NTQsMzMuODMzLTM0LjkzOSwxMS45ODQsMTMuMjc1LDI0LjgsMjYsMzcuNDI4LDM4LjYyN2gwYTUzMC45OTEsNTMwLjk5MSwwLDAsMSw2OS42LDc5LjEsMTQ3LjQ5NCwxNDcuNDk0LDAsMCwxLDI3LjAxMSw4My44QTEzNC4xMDksMTM0LjEwOSwwLDAsMSwzNTIuMzcxLDM1MS42WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEeWFsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnYxMTkuMmg2NFY5NmgxMDcuMkMyODQuNiA5NiAzNTIgMTc2LjIgMzUyIDI1NS45IDM1MiAzMzIgMjkzLjQgNDE2IDE3MS4yIDQxNkgwdjY0aDE3MS4yQzMzMS45IDQ4MCA0MTYgMzY3LjMgNDE2IDI1NS45YzAtNTguNy0yMi4xLTExMy40LTYyLjMtMTU0LjNDMzA4LjkgNTYgMjQ1LjcgMzIgMTcxLjIgMzJIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFybHliaXJkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuMiA0Ny41YzEuMi0xMyAyMS4zLTE0IDM2LjYtOC43LjkuMyAyNi4yIDkuNyAxOSAxNS4yLTI3LjktNy40LTU2LjQgMTguMi01NS42LTYuNXptLTIwMSA2LjljMzAuNy04LjEgNjIgMjAgNjEuMS03LjEtMS4zLTE0LjItMjMuNC0xNS4zLTQwLjItOS42LTEgLjMtMjguNyAxMC41LTIwLjkgMTYuN3pNMzE5LjQgMTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bS0xNTkuNyAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bTMxOC41IDE2My4yYy05LjkgMjQtNDAuNyAxMS02My45LTEuMi0xMy41IDY5LjEtNTguMSAxMTEuNC0xMjYuMyAxMjQuMi4zLjktMi0uMSAyNCAxIDMzLjYgMS40IDYzLjgtMy4xIDk3LjQtOC0xOS44LTEzLjgtMTEuNC0zNy4xLTkuOC0zOC4xIDEuNC0uOSAxNC43IDEuNyAyMS42IDExLjUgOC42LTEyLjUgMjguNC0xNC44IDMwLjItMTMuNiAxLjYgMS4xIDYuNiAyMC45LTYuOSAzNC42IDQuNy0uOSA4LjItMS42IDkuOC0yLjEgMi42LS44IDE3LjcgMTEuMyAzLjEgMTMuMy0xNC4zIDIuMy0yMi42IDUuMS00Ny4xIDEwLjgtNDUuOSAxMC43LTg1LjkgMTEuOC0xMTcuNyAxMi44bDEgMTEuNmMzLjggMTguMS0yMy40IDI0LjMtMjcuNiA2LjIuOCAxNy45LTI3LjEgMjEuOC0yOC40LTFsLS41IDUuM2MtLjcgMTguNC0yOC40IDE3LjktMjguMy0uNi03LjUgMTMuNS0yOC4xIDYuOC0yNi40LTguNWwxLjItMTIuNGMtMzYuNy45LTU5LjcgMy4xLTYxLjggMy4xLTIwLjkgMC0yMC45LTMxLjYgMC0zMS42IDIuNCAwIDI3LjcgMS4zIDYzLjIgMi44LTYxLjEtMTUuNS0xMDMuNy01NS0xMTQuOS0xMTguMi0yNSAxMi44LTU3LjUgMjYuOC02OC4yLjgtMTAuNS0yNS40IDIxLjUtNDIuNiA2Ni44LTczLjQuNy02LjYgMS42LTEzLjMgMi43LTE5LjgtMTQuNC0xOS42LTExLjYtMzYuMy0xNi4xLTYwLjQtMTYuOCAyLjQtMjMuMi05LjEtMjMuNi0yMy4xLjMtNy4zIDIuMS0xNC45IDIuNC0xNS40IDEuMS0xLjggMTAuMS0yIDEyLjctMi42IDYtMzEuNyA1MC42LTMzLjIgOTAuOS0zNC41IDE5LjctMjEuOCA0NS4yLTQxLjUgODAuOS00OC4zQzIwMy4zIDI5IDIxNS4yIDguNSAyMTYuMiA4YzEuNy0uOCAyMS4yIDQuMyAyNi4zIDIzLjIgNS4yLTguOCAxOC4zLTExLjQgMTkuNi0xMC43IDEuMS42IDYuNCAxNS00LjkgMjUuOSA0MC4zIDMuNSA3Mi4yIDI0LjcgOTYgNTAuNyAzNi4xIDEuNSA3MS44IDUuOSA3Ny4xIDM0IDIuNy42IDExLjYuOCAxMi43IDIuNi4zLjUgMi4xIDguMSAyLjQgMTUuNC0uNSAxMy45LTYuOCAyNS40LTIzLjYgMjMuMS0zLjIgMTcuMy0yLjcgMzIuOS04LjcgNDcuNyAyLjQgMTEuNyA0IDIzLjggNC44IDM2LjQgMzcgMjUuNCA3MC4zIDQyLjUgNjAuMyA2Ni45ek0yMDcuNCAxNTkuOWMuOS00NC0zNy45LTQyLjItNzguNi00MC4zLTIxLjcgMS0zOC45IDEuOS00NS41IDEzLjktMTEuNCAyMC45IDUuOSA5Mi45IDIzLjIgMTAxLjIgOS44IDQuNyA3My40IDcuOSA4Ni4zLTcuMSA4LjItOS40IDE1LTQ5LjQgMTQuNi02Ny43em01MiA1OC4zYy00LjMtMTIuNC02LTMwLjEtMTUuMy0zMi43LTItLjUtOS0uNS0xMSAwLTEwIDIuOC0xMC44IDIyLjEtMTcgMzcuMiAxNS40IDAgMTkuMyA5LjcgMjMuNyA5LjcgNC4zIDAgNi4zLTExLjMgMTkuNi0xNC4yem0xMzUuNy04NC43Yy02LjYtMTIuMS0yNC44LTEyLjktNDYuNS0xMy45LTQwLjItMS45LTc4LjItMy44LTc3LjMgNDAuMy0uNSAxOC4zIDUgNTguMyAxMy4yIDY3LjggMTMgMTQuOSA3Ni42IDExLjggODYuMyA3LjEgMTUuOC03LjYgMzYuNS03OC45IDI0LjMtMTAxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUViYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA2IDE4OS41bC01NC44IDEwOS45LTU0LjktMTA5LjloLTM3LjVsMTAuOSAyMC42Yy0xMS41LTE5LTM1LjktMjYtNjMuMy0yNi0zMS44IDAtNjcuOSA4LjctNzEuNSA0My4xaDMzLjdjMS40LTEzLjggMTUuNy0yMS44IDM1LTIxLjggMjYgMCA0MSA5LjYgNDEgMzN2My40Yy0xMi43IDAtMjggLjEtNDEuNy40LTQyLjQuOS02OS42IDEwLTc2LjcgMzQuNCAxLTUuMiAxLjUtMTAuNiAxLjUtMTYuMiAwLTUyLjEtMzkuNy03Ni4yLTc1LjQtNzYuMi0yMS4zIDAtNDMgNS41LTU4LjcgMjQuMnYtODAuNmgtMzIuMXYxNjkuNWMwIDEwLjMtLjYgMjIuOS0xLjEgMzMuMWgzMS41Yy43LTYuMyAxLjEtMTIuOSAxLjEtMTkuNSAxMy42IDE2LjYgMzUuNCAyNC45IDU4LjcgMjQuOSAzNi45IDAgNjQuOS0yMS45IDczLjMtNTQuMi0uNSAyLjgtLjcgNS44LS43IDkgMCAyNC4xIDIxLjEgNDUgNjAuNiA0NSAyNi42IDAgNDUuOC01LjcgNjEuOS0yNS41IDAgNi42LjMgMTMuMyAxLjEgMjAuMmgyOS44Yy0uNy04LjItMS0xNy41LTEtMjYuOHYtNjUuNmMwLTkuMy0xLjctMTcuMi00LjgtMjMuOGw2MS41IDExNi4xLTI4LjUgNTQuMWgzNS45TDY0MCAxODkuNXpNMjQzLjcgMzEzLjhjLTI5LjYgMC01MC4yLTIxLjUtNTAuMi01My44IDAtMzIuNCAyMC42LTUzLjggNTAuMi01My44IDI5LjggMCA1MC4yIDIxLjQgNTAuMiA1My44IDAgMzIuMy0yMC40IDUzLjgtNTAuMiA1My44em0yMDAuOS00Ny4zYzAgMzAtMTcuOSA0OC40LTUxLjYgNDguNC0yNS4xIDAtMzUtMTMuNC0zNS0yNS44IDAtMTkuMSAxOC4xLTI0LjQgNDcuMi0yNS4zIDEzLjEtLjUgMjcuNi0uNiAzOS40LS42em0tNDExLjkgMS42aDEyOC44di04LjVjMC01MS43LTMzLjEtNzUuNC03OC40LTc1LjQtNTYuOCAwLTgzIDMwLjgtODMgNzcuNiAwIDQyLjUgMjUuMyA3NCA4Mi41IDc0IDMxLjQgMCA2OC0xMS43IDc0LjQtNDYuMWgtMzMuMWMtMTIgMzUuOC04Ny43IDM2LjctOTEuMi0yMS42em05NS0yMS40SDMzLjNjNi45LTU2LjYgOTIuMS01NC43IDk0LjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRnZUxlZ2FjeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNS43MSwyMjguMTZsLjM1LS40OGMwLC4xNiwwLC4zMi0uMDcuNDhabTQ2MC41OCwxNS41MWMwLTQ0LTcuNzYtODQuNDYtMjguODEtMTIyLjRDNDE2LjUsNDcuODgsMzQzLjkxLDgsMjU4Ljg5LDgsMTE5LDcuNzIsNDAuNjIsMTEzLjIxLDI2LjA2LDIyNy42OGM0Mi40Mi02MS4zMSwxMTcuMDctMTIxLjM4LDIyMC4zNy0xMjUsMCwwLDEwOS42NywwLDk5LjQyLDEwNUgxNzBjNi4zNy0zNy4zOSwxOC41NS01OSwzNC4zNC03OC45My03NS4wNSwzNC45LTEyMS44NSw5Ni4xLTEyMC43NSwxODguMzIuODMsNzEuNDUsNTAuMTMsMTQ0Ljg0LDEyMC43NSwxNzIsODMuMzUsMzEuODQsMTkyLjc3LDcuMiwyNDAuMTMtMjEuMzNWMzYzLjMxQzM2My42LDQxOS44LDE3My42LDQyNC4yMywxNzIuMjEsMjk1Ljc0SDQ4Ni4yOVYyNDMuNjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVkZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjEgMzcuNDRDMTYxLjEgMTIuMjMgMjA3LjctLjc3NTMgMjU1IC4wMDE2QzQyMyAuMDAxNiA1MTIgMTIzLjggNTEyIDIxOS41QzUxMS45IDI1Mi4yIDQ5OSAyODMuNCA0NzYuMSAzMDYuN0M0NTMuMiAzMjkuOSA0MjIuMSAzNDMuMiAzODkuNCAzNDMuN0MzMTQuMiAzNDMuNyAyOTcuOSAzMjAuNiAyOTcuOSAzMTEuN0MyOTcuOSAzMDcuOSAyOTkuMSAzMDUuNSAzMDIuNyAzMDIuM0wzMDMuNyAzMDEuMUwzMDQuMSAyOTkuNUMzMTQuNiAyODggMzIwIDI3My4zIDMyMCAyNTcuOUMzMjAgMTc5LjIgMjM3LjggMTE1LjIgMTM2IDExNS4yQzk4LjQ2IDExNC45IDYxLjQ2IDEyNC4xIDI4LjQ4IDE0Mi4xQzU1LjQ4IDg0LjU4IDExMS4yIDQ0LjUgMTE5LjggMzguMjhDMTIwLjYgMzcuNzMgMTIwLjEgMzcuNDQgMTIwLjEgMzcuNDRWMzcuNDR6TTEzNS43IDM1NS41QzEzNC4zIDM4NS41IDE0MC4zIDQxNS41IDE1Mi4xIDQ0Mi43QzE2NS43IDQ2OS4xIDE4NC44IDQ5My43IDIwOC42IDUxMkMxNDkuMSA1MDAuNSA5Ny4xMSA0NjguMSA1OS4yIDQyMi43QzIxLjEyIDM3Ni4zIDAgMzE4LjQgMCAyNTcuOUMwIDIwNi43IDYyLjQgMTYzLjUgMTM2IDE2My41QzE3Mi42IDE2Mi45IDIwOC40IDE3NC40IDIzNy44IDE5Ni4yTDIzNC4yIDE5Ny40QzE4Mi43IDIxNSAxMzUuNyAyODguMSAxMzUuNyAzNTUuNVYzNTUuNXpNNDY5LjggNDAwTDQ2OS4xIDQwMC4xQzQ1Ny4zIDQxOC45IDQ0My4yIDQzNS4yIDQyNi45IDQ0OS42QzM5Ni4xIDQ3Ny42IDM1OC44IDQ5NS4xIDMxOC4xIDQ5OS41QzI5OS41IDQ5OS44IDI4MS4zIDQ5Ni4zIDI2NC4zIDQ4OC4xQzIzOC43IDQ3Ny44IDIxNy4yIDQ1OC4xIDIwMi43IDQzNS4xQzE4OC4zIDQxMS4yIDE4MS42IDM4My40IDE4My43IDM1NS41QzE4My4xIDMzNS40IDE4OS4xIDMxNS4yIDE5OC43IDI5Ny4zQzIxMi42IDMzMC40IDIzNi4yIDM1OC42IDI2Ni4zIDM3OC4xQzI5Ni40IDM5Ny42IDMzMS44IDQwNy42IDM2Ny43IDQwNi43QzM5OC43IDQwNyA0MjkuOCA0MDAgNDU3LjkgMzg2LjJMNDU5LjggMzg1LjNDNDYzLjcgMzgzIDQ2Ny41IDM4MS40IDQ3MS40IDM4NS4zQzQ3NS45IDM5MC4yIDQ3My4yIDM5NC41IDQ3MC4yIDM5OS4zQzQ3MCAzOTkuNSA0NjkuOSAzOTkuOCA0NjkuOCA0MDBWNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGVtZW50b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjM2MSAyNTZDLjM2MSAzOTcgMTE0IDUxMSAyNTUgNTExQzM5NyA1MTEgNTExIDM5NyA1MTEgMjU2QzUxMSAxMTYgMzk3IDIuMDUgMjU1IDIuMDVDMTE0IDIuMDUgLjM2MSAxMTYgLjM2MSAyNTZ6TTE5MiAxNTBWMzYzSDE0OVYxNTBIMTkyek0yMzQgMTUwSDM2MlYxOTNIMjM0VjE1MHpNMzYyIDIzNVYyNzhIMjM0VjIzNUgzNjJ6TTIzNCAzMjBIMzYyVjM2M0gyMzRWMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE0My44NCAyODUuMkMzNzUuMzEgMzU4LjUxIDMxNS43OSA0MDQuOCAyNDggNDA0LjhzLTEyNy4zMS00Ni4yOS0xNDMuODQtMTExLjZjLTEuNjUtNy40NCAyLjQ4LTE1LjcxIDkuOTItMTcuMzYgNy40NC0xLjY1IDE1LjcxIDIuNDggMTcuMzYgOS45MiAxNC4wNSA1Mi45MSA2MiA5MC4xMSAxMTYuNTYgOTAuMTFzMTAyLjUxLTM3LjIgMTE2LjU2LTkwLjExYzEuNjUtNy40NCA5LjkyLTEyLjQgMTcuMzYtOS45MiA3LjQ0IDEuNjUgMTIuNCA5LjkyIDkuOTIgMTcuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzOS45IDI1NC42Yy0xLjEtMTAuNy0xMC43LTYuOC0xMC43LTYuOHMtMTUuNiAxMi4xLTI5LjMgMTAuN2MtMTMuNy0xLjMtOS40LTMyLTkuNC0zMnMzLTI4LjEtNS4xLTMwLjRjLTguMS0yLjQtMTggNy4zLTE4IDcuM3MtMTIuNCAxMy43LTE4LjMgMzEuMmwtMS42LjVzMS45LTMwLjYtLjMtMzcuNmMtMS42LTMuNS0xNi40LTMuMi0xOC44IDNzLTE0LjIgNDkuMi0xNSA2Ny4yYzAgMC0yMy4xIDE5LjYtNDMuMyAyMi44cy0yNS05LjQtMjUtOS40IDU0LjgtMTUuMyA1Mi45LTU5LjEtNDQuMi0yNy42LTQ5LTI0Yy00LjYgMy41LTI5LjQgMTguNC0zNi42IDU5LjctLjIgMS40LS43IDcuNS0uNyA3LjVzLTIxLjIgMTQuMi0zMyAxOGMwIDAgMzMtNTUuNi03LjMtODAuOS0xMS40LTYuOC0yMS4zLS41LTI3LjIgNS4zIDEzLjYtMTcuMyA0Ni40LTY0LjIgMzYuOS0xMDUuMi01LjgtMjQuNC0xOC0yNy4xLTI5LjItMjMuMS0xNyA2LjctMjMuNSAxNi43LTIzLjUgMTYuN3MtMjIgMzItMjcuMSA3OS41LTEyLjYgMTA1LjEtMTIuNiAxMDUuMS0xMC41IDEwLjItMjAuMiAxMC43LTUuNC0yOC43LTUuNC0yOC43IDcuNS00NC42IDctNTIuMS0xLjEtMTEuNi05LjktMTQuMmMtOC45LTIuNy0xOC41IDguNi0xOC41IDguNnMtMjUuNSAzOC43LTI3LjcgNDQuNmwtMS4zIDIuNC0xLjMtMS42czE4LTUyLjcuOC01My41LTI4LjUgMTguOC0yOC41IDE4LjgtMTkuNiAzMi44LTIwLjQgMzYuNWwtMS4zLTEuNnM4LjEtMzguMiA2LjQtNDcuNmMtMS42LTkuNC0xMC41LTcuNS0xMC41LTcuNXMtMTEuMy0xLjMtMTQuMiA1LjktMTMuNyA1NS4zLTE1IDcwLjdjMCAwLTI4LjIgMjAuMi00Ni44IDIwLjQtMTguNS4zLTE2LjctMTEuOC0xNi43LTExLjhzNjgtMjMuMyA0OS40LTY5LjJjLTguMy0xMS44LTE4LTE1LjUtMzEuNy0xNS4zLTEzLjcuMy0zMC4zIDguNi00MS4zIDMzLjMtNS4zIDExLjgtNi44IDIzLTcuOCAzMS41IDAgMC0xMi4zIDIuNC0xOC44LTIuOXMtMTAgMC0xMCAwLTExLjIgMTQtLjEgMTguMyAyOC4xIDYuMSAyOC4xIDYuMWMxLjYgNy41IDYuMiAxOS41IDE5LjYgMjkuNyAyMC4yIDE1LjMgNTguOC0xLjMgNTguOC0xLjNsMTUuOS04LjhzLjUgMTQuNiAxMi4xIDE2LjcgMTYuNCAxIDM2LjUtNDcuOWMxMS44LTI1IDEyLjYtMjMuNiAxMi42LTIzLjZsMS4zLS4zcy05LjEgNDYuOC01LjYgNTkuN0MxODcuNyAzMTkuNCAyMDMgMzE4IDIwMyAzMThzOC4zIDIuNCAxNS0yMS4yIDE5LjYtNDkuOSAxOS42LTQ5LjloMS42cy01LjYgNDguMSAzIDYzLjcgMzAuOSA1LjMgMzAuOSA1LjMgMTUuNi03LjggMTgtMTAuMmMwIDAgMTguNSAxNS44IDQ0LjYgMTIuOSA1OC4zLTExLjUgNzkuMS0yNS45IDc5LjEtMjUuOXMxMCAyNC40IDQxLjEgMjYuN2MzNS41IDIuNyA1NC44LTE4LjYgNTQuOC0xOC42cy0uMyAxMy41IDEyLjEgMTguNiAyMC43LTIyLjggMjAuNy0yMi44bDIwLjctNTcuMmgxLjlzMS4xIDM3LjMgMjEuNSA0My4yIDQ3LTEzLjcgNDctMTMuNyA2LjQtMy41IDUuMy0xNC4zem0tNTc4IDUuM2MuOC0zMiAyMS44LTQ1LjkgMjktMzkgNy4zIDcgNC42IDIyLTkuMSAzMS40LTEzLjcgOS41LTE5LjkgNy42LTE5LjkgNy42em0yNzIuOC0xMjMuOHMxOS4xLTQ5LjcgMjMuNi0yNS41LTQwIDk2LjItNDAgOTYuMmMuNS0xNi4yIDE2LjQtNzAuNyAxNi40LTcwLjd6bTIyLjggMTM4LjRjLTEyLjYgMzMtNDMuMyAxOS42LTQzLjMgMTkuNnMtMy41LTExLjggNi40LTQ0LjkgMzMuMy0yMC4yIDMzLjMtMjAuMiAxNi4yIDEyLjQgMy42IDQ1LjV6bTg0LjYtMTQuNnMtMy0xMC41IDguMS0zMC42YzExLTIwLjIgMTkuNi05LjEgMTkuNi05LjFzOS40IDEwLjItMS4zIDI1LjUtMjYuNCAxNC4yLTI2LjQgMTQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW1waXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4Ny42IDU0LjJjLTEwLjgtMi4yLTIyLjEtMy4zLTMzLjUtMy42VjMyLjRjNzguMSAyLjIgMTQ2LjEgNDQgMTg0LjYgMTA2LjZsLTE1LjggOS4xYy02LjEtOS43LTEyLjctMTguOC0yMC4yLTI3LjFsLTE4IDE1LjVjLTI2LTI5LjYtNjEuNC01MC43LTEwMS45LTU4LjRsNC44LTIzLjl6TTUzLjQgMzIyLjRsMjMtNy43Yy02LjQtMTguMy0xMC0zOC4yLTEwLTU4LjdzMy4zLTQwLjQgOS43LTU4LjdsLTIyLjctNy43YzMuNi0xMC44IDguMy0yMS4zIDEzLjYtMzFsLTE1LjgtOS4xQzM0IDE4MSAyNC4xIDIxNy41IDI0LjEgMjU2czEwIDc1IDI3LjEgMTA2LjZsMTUuOC05LjFjLTUuMy0xMC05LjctMjAuMy0xMy42LTMxLjF6TTIxMy4xIDQzNGMtNDAuNC04LTc1LjgtMjkuMS0xMDEuOS01OC43bC0xOCAxNS44Yy03LjUtOC42LTE0LjQtMTcuNy0yMC4yLTI3LjRsLTE2IDkuNGMzOC41IDYyLjMgMTA2LjggMTA0LjMgMTg0LjkgMTA2LjZ2LTE4LjNjLTExLjMtLjMtMjIuNy0xLjctMzMuNS0zLjZsNC43LTIzLjh6TTkzLjMgMTIwLjlsMTggMTUuNWMyNi0yOS42IDYxLjQtNTAuNyAxMDEuOS01OC40bC00LjctMjMuOGMxMC44LTIuMiAyMi4xLTMuMyAzMy41LTMuNlYzMi40QzE2My45IDM0LjYgOTUuOSA3Ni40IDU3LjQgMTM5bDE1LjggOS4xYzYtOS43IDEyLjYtMTguOSAyMC4xLTI3LjJ6bTMwOS40IDI3MC4ybC0xOC0xNS44Yy0yNiAyOS42LTYxLjQgNTAuNy0xMDEuOSA1OC43bDQuNyAyMy44Yy0xMC44IDEuOS0yMi4xIDMuMy0zMy41IDMuNnYxOC4zYzc4LjEtMi4yIDE0Ni40LTQ0LjMgMTg0LjktMTA2LjZsLTE2LjEtOS40Yy01LjcgOS43LTEyLjYgMTguOC0yMC4xIDI3LjR6TTQ5NiAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzAgMzkzIDAgMjU2IDExMSA4IDI0OCA4czI0OCAxMTEgMjQ4IDI0OHptLTEyLjIgMGMwLTEzMC4xLTEwNS43LTIzNS44LTIzNS44LTIzNS44UzEyLjIgMTI1LjkgMTIuMiAyNTYgMTE3LjkgNDkxLjggMjQ4IDQ5MS44IDQ4My44IDM4Ni4xIDQ4My44IDI1NnptLTM5LTEwNi42bC0xNS44IDkuMWM1LjMgOS43IDEwIDIwLjIgMTMuNiAzMWwtMjIuNyA3LjdjNi40IDE4LjMgOS43IDM4LjIgOS43IDU4LjdzLTMuNiA0MC40LTEwIDU4LjdsMjMgNy43Yy0zLjkgMTAuOC04LjMgMjEtMTMuNiAzMWwxNS44IDkuMUM0NjIgMzMxIDQ3MS45IDI5NC41IDQ3MS45IDI1NnMtOS45LTc1LTI3LjEtMTA2LjZ6bS0xODMgMTc3LjdjMTYuMy0zLjMgMzAuNC0xMS42IDQwLjctMjMuNWw1MS4yIDQ0LjhjMTEuOS0xMy42IDIxLjMtMjkuMyAyNy4xLTQ2LjhsLTY0LjItMjIuMWMyLjUtNy41IDMuOS0xNS4yIDMuOS0yMy41cy0xLjQtMTYuMS0zLjktMjMuNWw2NC41LTIyLjFjLTYuMS0xNy40LTE1LjUtMzMuMi0yNy40LTQ2LjhsLTUxLjIgNDQuOGMtMTAuMi0xMS45LTI0LjQtMjAuNS00MC43LTIzLjhsMTMuMy02Ni40Yy04LjYtMS45LTE3LjctMi44LTI3LjEtMi44LTkuNCAwLTE4LjUuOC0yNy4xIDIuOGwxMy4zIDY2LjRjLTE2LjMgMy4zLTMwLjQgMTEuOS00MC43IDIzLjhsLTUxLjItNDQuOGMtMTEuOSAxMy42LTIxLjMgMjkuMy0yNy40IDQ2LjhsNjQuNSAyMi4xYy0yLjUgNy41LTMuOSAxNS4yLTMuOSAyMy41czEuNCAxNi4xIDMuOSAyMy41bC02NC4yIDIyLjFjNS44IDE3LjQgMTUuMiAzMy4yIDI3LjEgNDYuOGw1MS4yLTQ0LjhjMTAuMiAxMS45IDI0LjQgMjAuMiA0MC43IDIzLjVsLTEzLjMgNjYuN2M4LjYgMS43IDE3LjcgMi44IDI3LjEgMi44IDkuNCAwIDE4LjUtMS4xIDI3LjEtMi44bC0xMy4zLTY2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmlyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyYzQ3Ny42IDAgMzY2LjYgMzE3LjMgMzY3LjEgMzY2LjNMNDQ4IDQ4MGgtMjZsLTcwLjQtNzEuMmMtMzkgNC4yLTEyNC40IDM0LjUtMjE0LjQtMzdDNDcgMzAwLjMgNTIgMjE0LjcgMCAzMnptNzkuNyA0NmMtNDkuNy0yMy41LTUuMiA5LjItNS4yIDkuMiA0NS4yIDMxLjIgNjYgNzMuNyA5MC4yIDExOS45IDMxLjUgNjAuMiA3OSAxMzkuNyAxNDQuMiAxNjcuNyA2NSAyOCAzNC4yIDEyLjUgNi04LjUtMjguMi0yMS4yLTY4LjItODctOTEtMTMwLjItMzEuNy02MC02MS0xMTguNi0xNDQuMi0xNTguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXJsYW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg3LjIgNTMuNUgwdjQwNWgxMDAuNGMtNDkuNy01Mi42LTc4LjgtMTI1LjMtNzguNy0yMTIuMS0uMS03Ni43IDI0LTE0Mi43IDY1LjUtMTkyLjl6bTIzOC4yIDkuN2MtNDUuOS4xLTg1LjEgMzMuNS04OS4yIDgzLjJoMTY5LjljLTEuMS00OS43LTM0LjUtODMuMS04MC43LTgzLjJ6bTIzMC43LTkuNmguM2wtLjEtLjF6bS4zIDBjMzEuNCA0Mi43IDQ4LjcgOTcuNSA0Ni4yIDE2Mi43LjUgNiAuNSAxMS43IDAgMjQuMUgyMzAuMmMtLjIgMTA5LjcgMzguOSAxOTQuOSAxMzguNiAxOTUuMyA2OC41LS4zIDExOC01MSAxNTEuOS0xMDYuMWw5Ni40IDQ4LjJjLTE3LjQgMzAuOS0zNi41IDU3LjgtNTcuOSA4MC44SDY0MHYtNDA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdGhlcmV1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTEuOSAyNjAuOEwxNjAgMzUzLjYgOCAyNjAuOCAxNjAgMGwxNTEuOSAyNjAuOHpNMTYwIDM4My40TDggMjkwLjYgMTYwIDUxMmwxNTItMjIxLjQtMTUyIDkyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0c3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM0OGMtMS43NSAxMC43NS0xMy43NSAxMTAtMTUuNSAxMzItMTE3Ljg3OS00LjI5OS0yMTkuODk1LTQuNzQzLTM2OC41IDB2LTI1LjVjNDUuNDU3LTguOTQ4IDYwLjYyNy04LjAxOSA2MS0zNS4yNSAxLjc5My03Mi4zMjIgMy41MjQtMjQ0LjE0MyAwLTMyMi0xLjAyOS0yOC40Ni0xMi4xMy0yNi43NjUtNjEtMzZ2LTI1LjVjNzMuODg2IDIuMzU4IDI1NS45MzMgOC41NTEgMzYyLjk5OS0zLjc1LTMuNSAzOC4yNS03Ljc1IDEyNi41LTcuNzUgMTI2LjVIMzMyQzMyMC45NDcgMTE1LjY2NSAzMTMuMjQxIDY4IDI3Ny4yNSA2OGgtMTM3Yy0xMC4yNSAwLTEwLjc1IDMuNS0xMC43NSA5Ljc1VjI0MS41YzU4IC41IDg4LjUtMi41IDg4LjUtMi41IDI5Ljc3LS45NTEgMjcuNTYtOC41MDIgNDAuNzUtNjUuMjUxaDI1Ljc1Yy00LjQwNyAxMDEuMzUxLTMuOTEgNjEuODI5LTEuNzUgMTYwLjI1SDI1N2MtOS4xNTUtNDAuMDg2LTkuMDY1LTYxLjA0NS0zOS41MDEtNjEuNSAwIDAtMjEuNS0yLTg4LTJ2MTM5YzAgMjYgMTQuMjUgMzguMjUgNDQuMjUgMzguMjVIMjYzYzYzLjYzNiAwIDY2LjU2NC0yNC45OTYgOTguNzUxLTk5Ljc1SDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXZlcm5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjgyIDEzMi4yMWMxLjYgMjIuMzEtMTcuNTUgMjEuNTktMjEuNjEgMjEuNTktNjguOTMgMC03My42NC0xLTgzLjU4IDMuMzQtLjU2LjIyLS43NCAwLS4zNy0uMzdMMTIzLjc5IDQ2LjQ1Yy4zOC0uMzcuNi0uMjIuMzguMzctNC4zNSA5Ljk5LTMuMzUgMTUuMDktMy4zNSA4NS4zOXptNzkgMzA4Yy0xNC42OC0zNy4wOCAxMy03Ni45MyA1Mi41Mi03Ni42MiAxNy40OSAwIDIyLjYgMjMuMjEgNy45NSAzMS40Mi02LjE5IDMuMy0yNC45NSAxLjc0LTI1LjE0IDE5LjItLjA1IDE3LjA5IDE5LjY3IDI1IDMxLjIgMjQuODlBNDUuNjQgNDUuNjQgMCAwIDAgMzEyIDM5My40NXYtLjA4YzAtMTEuNjMtNy43OS00Ny4yMi00Ny41NC01NS4zNC03LjcyLTEuNTQtNjUtNi4zNS02OC4zNS01MC41Mi0zLjc0IDE2LjkzLTE3LjQgNjMuNDktNDMuMTEgNjkuMDktOC43NCAxLjk0LTY5LjY4IDcuNjQtMTEyLjkyLTM2Ljc3IDAgMC0xOC41Ny0xNS4yMy0yOC4yMy01Ny45NS0zLjM4LTE1Ljc1LTkuMjgtMzkuNy0xMS4xNC02MiAwLTE4IDExLjE0LTMwLjQ1IDI1LjA3LTMyLjIgODEgMCA5MCAyLjMyIDEwMS03LjggOS44Mi05LjI0IDcuOC0xNS41IDcuOC0xMDIuNzggMS04LjMgNy43OS0zMC44MSA1My40MS0yNC4xNCA2IC44NiAzMS45MSA0LjE4IDM3LjQ4IDMwLjY0bDY0LjI2IDExLjE1YzIwLjQzIDMuNzEgNzAuOTQgNyA4MC42IDU3Ljk0IDIyLjY2IDEyMS4wOSA4LjkxIDIzOC40NiA3LjggMjM4LjQ2QzM2Mi4xNSA0ODUuNTMgMjY3LjA2IDQ4MCAyNjcuMDYgNDgwYy0xOC45NS0uMjMtNTQuMjUtOS40LTY3LjI3LTM5Ljgzem04MC45NC0yMDQuODRjLTEgMS45Mi0yLjIgNiAuODUgNyAxNC4wOSA0LjkzIDM5Ljc1IDYuODQgNDUuODggNS41MyAzLjExLS4yNSAzLjA1LTQuNDMgMi40OC02LjY1LTMuNTMtMjEuODUtNDAuODMtMjYuNS00OS4yNC01LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBlZGl0ZWRzc2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDQzLjRDMTMwLjYgNDMuNCAzNS40IDEzOC42IDM1LjQgMjU2UzEzMC42IDQ2OC42IDI0OCA0NjguNiA0NjAuNiAzNzMuNCA0NjAuNiAyNTYgMzY1LjQgNDMuNCAyNDggNDMuNHptLTk3LjQgMTMyLjljMC01My43IDQzLjctOTcuNCA5Ny40LTk3LjRzOTcuNCA0My43IDk3LjQgOTcuNHYyNi42YzAgNS0zLjkgOC45LTguOSA4LjloLTE3LjdjLTUgMC04LjktMy45LTguOS04Ljl2LTI2LjZjMC04Mi4xLTEyNC04Mi4xLTEyNCAwdjI2LjZjMCA1LTMuOSA4LjktOC45IDguOWgtMTcuN2MtNSAwLTguOS0zLjktOC45LTguOXYtMjYuNnpNMzg5LjcgMzgwYzAgOS43LTggMTcuNy0xNy43IDE3LjdIMTI0Yy05LjcgMC0xNy43LTgtMTcuNy0xNy43VjIzOC4zYzAtOS43IDgtMTcuNyAxNy43LTE3LjdoMjQ4YzkuNyAwIDE3LjcgOCAxNy43IDE3LjdWMzgwem0tMjQ4LTEzNy4zdjEzMi45YzAgMi41LTEuOSA0LjQtNC40IDQuNGgtOC45Yy0yLjUgMC00LjQtMS45LTQuNC00LjRWMjQyLjdjMC0yLjUgMS45LTQuNCA0LjQtNC40aDguOWMyLjUgMCA0LjQgMS45IDQuNCA0LjR6bTE0MS43IDQ4LjdjMCAxMy03LjIgMjQuNC0xNy43IDMwLjR2MzEuNmMwIDUtMy45IDguOS04LjkgOC45aC0xNy43Yy01IDAtOC45LTMuOS04LjktOC45di0zMS42Yy0xMC41LTYuMS0xNy43LTE3LjQtMTcuNy0zMC40IDAtMTkuNyAxNS44LTM1LjQgMzUuNC0zNS40czM1LjUgMTUuOCAzNS41IDM1LjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDc4LjNDMTIxIDQ4Ni4zIDE3LjcgMzgzIDE3LjcgMjU2UzEyMSAyNS43IDI0OCAyNS43IDQ3OC4zIDEyOSA0NzguMyAyNTYgMzc1IDQ4Ni4zIDI0OCA0ODYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZWJvb2tGIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDI5OS4zVjUxMkgxOTZWMjk5LjNoODYuNWwxOC05Ny44SDE5NlYxNjYuOWMwLTUxLjcgMjAuMy03MS41IDcyLjctNzEuNWMxNi4zIDAgMjkuNCAuNCAzNyAxLjJWNy45QzI5MS40IDQgMjU2LjQgMCAyMzYuMiAwQzEyOS4zIDAgODAgNTAuNSA4MCAxNTkuNHY0Mi4xSDE0djk3LjhIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2Vib29rTWVzc2VuZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni41NSA4QzExNi41MiA4IDggMTEwLjM0IDggMjQ4LjU3YzAgNzIuMyAyOS43MSAxMzQuNzggNzguMDcgMTc3Ljk0IDguMzUgNy41MSA2LjYzIDExLjg2IDguMDUgNTguMjNBMTkuOTIgMTkuOTIgMCAwIDAgMTIyIDUwMi4zMWM1Mi45MS0yMy4zIDUzLjU5LTI1LjE0IDYyLjU2LTIyLjdDMzM3Ljg1IDUyMS44IDUwNCA0MjMuNyA1MDQgMjQ4LjU3IDUwNCAxMTAuMzQgMzk2LjU5IDggMjU2LjU1IDh6bTE0OS4yNCAxODUuMTNsLTczIDExNS41N2EzNy4zNyAzNy4zNyAwIDAgMS01My45MSA5LjkzbC01OC4wOC00My40N2ExNSAxNSAwIDAgMC0xOCAwbC03OC4zNyA1OS40NGMtMTAuNDYgNy45My0yNC4xNi00LjYtMTcuMTEtMTUuNjdsNzMtMTE1LjU3YTM3LjM2IDM3LjM2IDAgMCAxIDUzLjkxLTkuOTNsNTguMDYgNDMuNDZhMTUgMTUgMCAwIDAgMTggMGw3OC40MS01OS4zOGMxMC40NC03Ljk4IDI0LjE0IDQuNTQgMTcuMDkgMTUuNjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2Vib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZDNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NkMwIDM3NiA4Mi43IDQ3Ni44IDE5NC4yIDUwNC41VjMzNC4ySDE0MS40VjI1Nmg1Mi44VjIyMi4zYzAtODcuMSAzOS40LTEyNy41IDEyNS0xMjcuNWMxNi4yIDAgNDQuMiAzLjIgNTUuNyA2LjRWMTcyYy02LS42LTE2LjUtMS0yOS42LTFjLTQyIDAtNTguMiAxNS45LTU4LjIgNTcuMlYyNTZoODMuNmwtMTQuNCA3OC4ySDI4N1Y1MTAuMUM0MTMuOCA0OTQuOCA1MTIgMzg2LjkgNTEyIDI1NmgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYW50YXN5RmxpZ2h0R2FtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyLjg2TDMyLjg2IDI1NiAyNTYgNDc5LjE0IDQ3OS4xNCAyNTYgMjU2IDMyLjg2ek04OC4zNCAyNTUuODNjMS45Ni0yIDExLjkyLTEyLjMgOTYuNDktOTcuNDggNDEuNDUtNDEuNzUgODYuMTktNDMuNzcgMTE5Ljc3LTE4LjY5IDI0LjYzIDE4LjQgNjIuMDYgNTguOSA2Mi4xNSA1OSAuNjguNzQgMS4wNyAyLjg2LjU4IDMuMzgtMTEuMjcgMTEuODQtMjIuNjggMjMuNTQtMzMuNSAzNC42OS0zNC4yMS0zMi4zMS00MC41Mi0zOC4yNC00OC41MS00My45NS0xNy43Ny0xMi42OS00MS40LTEwLjEzLTU2Ljk4IDUuMS0yLjE3IDIuMTMtMS43OSAzLjQzLjEyIDUuMzUgMi45NCAyLjk1IDI4LjEgMjguMzMgMzUuMDkgMzUuNzgtMTEuOTUgMTEuNi0yMy42NiAyMi45Ny0zNS42OSAzNC42Ni0xMi4wMi0xMi41NC0yNC40OC0yNS41My0zNi41NC0zOC4xMS0yMS4zOSAyMS4wOS00MS42OSA0MS4xMS02MS44NSA2MC45OXptMjM0LjgyIDEwMS42Yy0zNS40OSAzNS40My03OC4wOSAzOC4xNC0xMDYuOTkgMjAuNDctMjIuMDgtMTMuNS0zOS4zOC0zMi4wOC03Mi45My02Ni44NCAxMi4wNS0xMi4zNyAyMy43OS0yNC40MiAzNS4zNy0zNi4zMSAzMy4wMiAzMS45MSAzNy4wNiAzNi4wMSA0NC42OCA0Mi4wOSAxOC40OCAxNC43NCA0Mi41MiAxMy42NyA1OS4zMi0xLjggMy42OC0zLjM5IDMuNjktMy42NC4xNC03LjI0LTEwLjU5LTEwLjczLTIxLjE5LTIxLjQ0LTMxLjc3LTMyLjE4LTEuMzItMS4zNC0zLjAzLTIuNDgtLjgtNC42OSAxMC43OS0xMC43MSAyMS40OC0yMS41MiAzMi4yMS0zMi4yOS4yNi0uMjYuNjUtLjM4IDEuOTEtMS4wNyAxMi4zNyAxMi44NyAyNC45MiAyNS45MiAzNy4yNSAzOC43NSAyMS4wMS0yMC43MyA0MS4yNC00MC42OCA2MS4yNS02MC40MiAxMy42OCAxMy40IDI3LjEzIDI2LjU4IDQwLjg2IDQwLjAzLTIwLjE3IDIwLjg2LTgxLjY4IDgyLjcxLTEwMC41IDEwMS41ek0yNTYgMEwwIDI1NmwyNTYgMjU2IDI1Ni0yNTZMMjU2IDB6TTE2IDI1NkwyNTYgMTZsMjQwIDI0MC0yNDAgMjQwTDE2IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVkZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTg2IDI4NC41bDUzLjMtNTkuOWgtNjIuNGwtMjEuNyAyNC44LTIyLjUtMjQuOEg0MTR2LTE2aDU2LjF2LTQ4LjFIMzE4LjlWMjM2aC0uNWMtOS42LTExLTIxLjUtMTQuOC0zNS40LTE0LjgtMjguNCAwLTQ5LjggMTkuNC01Ny4zIDQ0LjktMTgtNTkuNC05Ny40LTU3LjYtMTIxLjktMTR2LTI0LjJINDl2LTI2LjJoNjB2LTQxLjFIMFYzNDVoNDl2LTc3LjVoNDguOWMtMS41IDUuNy0yLjMgMTEuOC0yLjMgMTguMiAwIDczLjEgMTAyLjYgOTEuNCAxMzAuMiAyMy43aC00MmMtMTQuNyAyMC45LTQ1LjggOC45LTQ1LjgtMTQuNmg4NS41YzMuNyAzMC41IDI3LjQgNTYuOSA2MC4xIDU2LjkgMTQuMSAwIDI3LTYuOSAzNC45LTE4LjZoLjVWMzQ1aDIxMi4ybDIyLjEtMjUgMjIuMyAyNUg2NDBsLTU0LTYwLjV6bS00NDYuNy0xNi42YzYuMS0yNi4zIDQxLjctMjUuNiA0Ni41IDBoLTQ2LjV6bTE1My40IDQ4LjljLTM0LjYgMC0zNC02Mi44IDAtNjIuOCAzMi42IDAgMzQuNSA2Mi44IDAgNjIuOHptMTY3LjggMTkuMWgtOTQuNFYxNjkuNGg5NXYzMC4ySDQwNXYzMy45aDU1LjV2MjguMWgtNTYuMXY0NC43aDU2LjF2MjkuNnptLTQ1LjktMzkuOHYtMjQuNGg1Ni4xdi00NGw1MC43IDU3LTUwLjcgNTd2LTQ1LjZoLTU2LjF6bTEzOC42IDEwLjNsLTI2LjEgMjkuNUg0ODlsNDUuNi01MS4yLTQ1LjYtNTEuMmgzOS43bDI2LjYgMjkuMyAyNS42LTI5LjNoMzguNWwtNDUuNCA1MSA0NiA1MS40aC00MC41bC0yNi4zLTI5LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlZG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMDQxMyAyNTUuOEMuMTIxOSAxMzIuMiAxMDAuMyAzMiAyMjQgMzJDMzQ3LjcgMzIgNDQ4IDEzMi4zIDQ0OCAyNTZDNDQ4IDM3OS43IDM0Ny44IDQ3OS45IDIyNC4xIDQ4MEg1MC45M0MyMi44NCA0ODAgLjA4MzIgNDU3LjMgLjA0MTYgNDI5LjJIMFYyNTUuOEguMDQxM3pNMzQyLjYgMTkyLjdDMzQyLjYgMTUzIDMwNyAxMjQuMiAyNjkuNCAxMjQuMkMyMzQuNSAxMjQuMiAyMDMuNiAxNTAuNSAxOTkuMyAxODQuMUMxOTkuMSAxODcuOSAxOTguOSAxODkuMSAxOTguOSAxOTIuNkMxOTguOCAyMTMuNyAxOTguOSAyMzUuNCAxOTguMSAyNTdDMTk5IDI4My4xIDE5OS4xIDMwOS4xIDE5OC4xIDMzMy42QzE5OC4xIDM2MC43IDE3OC43IDM3OS4xIDE1My40IDM3OS4xQzEyOC4xIDM3OS4xIDEwNy42IDM1OC45IDEwNy42IDMzMy42QzEwOC4xIDMwNS45IDEzMC4yIDI4OC4zIDE1Ni4xIDI4Ny41SDE1Ni4zTDE4Mi42IDI4Ny4zVjI1MEwxNTYuMyAyNTAuMkMxMDkuMiAyNDkuOCA3MS43MiAyODYuNyA3MC4zNiAzMzMuNkM3MC4zNiAzNzkuMiAxMDcuOSA0MTYuNSAxNTMuNCA0MTYuNUMxOTYuNCA0MTYuNSAyMzIuMSAzODIuOSAyMzYgMzQwLjlMMjM2LjIgMjg3LjRMMjY4LjggMjg3LjFDMjk0LjEgMjg3LjMgMjkzLjggMjQ5LjMgMjY4LjYgMjQ5LjhMMjM2LjIgMjUwLjFDMjM2LjIgMjQzLjcgMjM2LjMgMjM3LjMgMjM2LjMgMjMwLjlDMjM2LjQgMjE4LjIgMjM2LjQgMjA1LjUgMjM2LjIgMTkyLjdDMjM2LjMgMTc2LjIgMjUyIDE2MS41IDI2OS40IDE2MS41QzI4Ni45IDE2MS41IDMwNS4zIDE3MC4yIDMwNS4zIDE5Mi43QzMwNS4zIDE5NS45IDMwNS4yIDE5Ny44IDMwNSAxOTlDMzAzLjEgMjA5LjUgMzEwLjIgMjE5LjQgMzIwLjcgMjIwLjlDMzMxLjMgMjIyLjQgMzQwLjkgMjE0LjggMzQxLjkgMjA0LjNDMzQyLjUgMjAwLjEgMzQyLjYgMTk2LjQgMzQyLjYgMTkyLjdIMzQyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpZ21hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDk1Ljc5MjRDMTQgNDIuODg3NyA1Ni44ODc4IDAgMTA5Ljc5MyAwSDI3NC4xNjFDMzI3LjA2NiAwIDM2OS45NTQgNDIuODg3NyAzNjkuOTU0IDk1Ljc5MjRDMzY5Ljk1NCAxMjkuMjkyIDM1Mi43NTggMTU4Ljc3NiAzMjYuNzExIDE3NS44OTdDMzUyLjc1OCAxOTMuMDE5IDM2OS45NTQgMjIyLjUwMiAzNjkuOTU0IDI1Ni4wMDJDMzY5Ljk1NCAzMDguOTA3IDMyNy4wNjYgMzUxLjc5NSAyNzQuMTYxIDM1MS43OTVIMjcyLjA4MUMyNDcuMjc5IDM1MS43OTUgMjI0LjY3OCAzNDIuMzY5IDIwNy42NjYgMzI2LjkwNFY0MTUuMTY3QzIwNy42NjYgNDY4Ljc3NyAxNjMuNjU3IDUxMiAxMTAuMzA5IDUxMkM1Ny41MzYxIDUxMiAxNCA0NjkuMjQzIDE0IDQxNi4yMDdDMTQgMzgyLjcwOSAzMS4xOTQ1IDM1My4yMjcgNTcuMjM5MiAzMzYuMTA1QzMxLjE5NDUgMzE4Ljk4MyAxNCAyODkuNSAxNCAyNTYuMDAyQzE0IDIyMi41MDIgMzEuMTk2IDE5My4wMTkgNTcuMjQyNSAxNzUuODk3QzMxLjE5NiAxNTguNzc2IDE0IDEyOS4yOTIgMTQgOTUuNzkyNFpNMTc2LjI4OCAxOTEuNTg3SDEwOS43OTNDNzQuMjE3MiAxOTEuNTg3IDQ1LjM3NzggMjIwLjQyNyA0NS4zNzc4IDI1Ni4wMDJDNDUuMzc3OCAyOTEuNDQgNzMuOTk0OCAzMjAuMTk0IDEwOS4zODEgMzIwLjQxNkMxMDkuNTE4IDMyMC40MTUgMTA5LjY1NSAzMjAuNDE1IDEwOS43OTMgMzIwLjQxNUgxNzYuMjg4VjE5MS41ODdaTTIwNy42NjYgMjU2LjAwMkMyMDcuNjY2IDI5MS41NzcgMjM2LjUwNSAzMjAuNDE3IDI3Mi4wODEgMzIwLjQxN0gyNzQuMTYxQzMwOS43MzcgMzIwLjQxNyAzMzguNTc2IDI5MS41NzcgMzM4LjU3NiAyNTYuMDAyQzMzOC41NzYgMjIwLjQyNyAzMDkuNzM3IDE5MS41ODcgMjc0LjE2MSAxOTEuNTg3SDI3Mi4wODFDMjM2LjUwNSAxOTEuNTg3IDIwNy42NjYgMjIwLjQyNyAyMDcuNjY2IDI1Ni4wMDJaTTEwOS43OTMgMzUxLjc5NUMxMDkuNjU1IDM1MS43OTUgMTA5LjUxOCAzNTEuNzk0IDEwOS4zODEgMzUxLjc5NEM3My45OTQ4IDM1Mi4wMTUgNDUuMzc3OCAzODAuNzY5IDQ1LjM3NzggNDE2LjIwN0M0NS4zNzc4IDQ1MS42NTIgNzQuNjAyNSA0ODAuNjIyIDExMC4zMDkgNDgwLjYyMkMxNDYuNTkxIDQ4MC42MjIgMTc2LjI4OCA0NTEuMTg2IDE3Ni4yODggNDE1LjE2N1YzNTEuNzk1SDEwOS43OTNaTTEwOS43OTMgMzEuMzc3OEM3NC4yMTcyIDMxLjM3NzggNDUuMzc3OCA2MC4yMTczIDQ1LjM3NzggOTUuNzkyNEM0NS4zNzc4IDEzMS4zNjggNzQuMjE3MiAxNjAuMjA3IDEwOS43OTMgMTYwLjIwN0gxNzYuMjg4VjMxLjM3NzhIMTA5Ljc5M1pNMjA3LjY2NiAxNjAuMjA3SDI3NC4xNjFDMzA5LjczNyAxNjAuMjA3IDMzOC41NzYgMTMxLjM2OCAzMzguNTc2IDk1Ljc5MjRDMzM4LjU3NiA2MC4yMTczIDMwOS43MzcgMzEuMzc3OCAyNzQuMTYxIDMxLjM3NzhIMjA3LjY2NlYxNjAuMjA3WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlZm94QnJvd3NlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzAuMjIgMTI3LjU0OEMxMzAuMzggMTI3LjU1OCAxMzAuMyAxMjcuNTU4IDEzMC4yMiAxMjcuNTQ4VjEyNy41NDhaTTQ4MS42NCAxNzIuODk4QzQ3MS4wMyAxNDcuMzk4IDQ0OS41NiAxMTkuODk4IDQzMi43IDExMS4xNjhDNDQ2LjQyIDEzOC4wNTggNDU0LjM3IDE2NS4wNDggNDU3LjQgMTg1LjE2OEM0NTcuNDA1IDE4NS4zMDYgNDU3LjQyMiAxODUuNDQzIDQ1Ny40NSAxODUuNTc4QzQyOS44NyAxMTYuODI4IDM4My4wOTggODkuMTA4OSAzNDQuOSAyOC43NDc5QzMyOS45MDggNS4wNTc5MiAzMzMuOTc2IDMuNTE3OTIgMzMxLjgyIDQuMDg3OTJMMzMxLjcgNC4xNTc5MkMyODQuOTkgMzAuMTEwOSAyNTYuMzY1IDgyLjUyODkgMjQ5LjEyIDEyNi44OThDMjMyLjUwMyAxMjcuNzcxIDIxNi4yMTkgMTMxLjg5NSAyMDEuMTkgMTM5LjAzNUMxOTkuODM4IDEzOS42NDkgMTk4LjczNiAxNDAuNzA2IDE5OC4wNjYgMTQyLjAzMUMxOTcuMzk2IDE0My4zNTYgMTk3LjE5OSAxNDQuODcgMTk3LjUwNiAxNDYuMzIzQzE5Ny43IDE0Ny4xNjIgMTk4LjA2OCAxNDcuOTUxIDE5OC41ODYgMTQ4LjYzOUMxOTkuMTAzIDE0OS4zMjcgMTk5Ljc2IDE0OS44OTkgMjAwLjUxMiAxNTAuMzE4QzIwMS4yNjQgMTUwLjczNyAyMDIuMDk2IDE1MC45OTMgMjAyLjk1NCAxNTEuMDcxQzIwMy44MTEgMTUxLjE0OCAyMDQuNjc2IDE1MS4wNDUgMjA1LjQ5MSAxNTAuNzY4TDIwNi4wMTEgMTUwLjU1OEMyMjEuNTExIDE0My4yNTUgMjM4LjQwOCAxMzkuMzkzIDI1NS41NDEgMTM5LjIzOEMzMTguMzY5IDEzOC42NjkgMzUyLjY5OCAxODMuMjYyIDM2My4xNjEgMjAxLjUyOEMzNTAuMTYxIDE5Mi4zNzggMzI2LjgxMSAxODMuMzM4IDMwNC4zNDEgMTg3LjI0OEMzOTIuMDgxIDIzMS4xMDggMzY4LjU0MSAzODEuNzg0IDI0Ni45NTEgMzc2LjQ0OEMxODcuNDg3IDM3My44MzggMTQ5Ljg4MSAzMjUuNDY3IDE0Ni40MjEgMjg1LjY0OEMxNDYuNDIxIDI4NS42NDggMTU3LjY3MSAyNDMuNjk4IDIyNy4wNDEgMjQzLjY5OEMyMzQuNTQxIDI0My42OTggMjU1Ljk3MSAyMjIuNzc4IDI1Ni4zNzEgMjE2LjY5OEMyNTYuMjgxIDIxNC42OTggMjEzLjgzNiAxOTcuODIyIDE5Ny4yODEgMTgxLjUxOEMxODguNDM0IDE3Mi44MDUgMTg0LjIyOSAxNjguNjExIDE4MC41MTEgMTY1LjQ1OEMxNzguNDk5IDE2My43NSAxNzYuMzkyIDE2Mi4xNTggMTc0LjIwMSAxNjAuNjg4QzE2OC42MzggMTQxLjIzMSAxNjguMzk5IDEyMC42MzggMTczLjUxIDEwMS4wNThDMTQ4LjQ1IDExMi40NjggMTI4Ljk2IDEzMC41MDggMTE0LjggMTQ2LjQyOEgxMTQuNjhDMTA1LjAxIDEzNC4xNzggMTA1LjY4IDkzLjc3NzkgMTA2LjI1IDg1LjM0NzlDMTA2LjEzIDg0LjgxNzkgOTkuMDIyIDg5LjAxNTkgOTguMSA4OS42NTc5Qzg5LjUzNDIgOTUuNzEwMyA4MS41NTI4IDEwMi41NSA3NC4yNiAxMTAuMDg4QzU3Ljk2OSAxMjYuNjg4IDMwLjEyOCAxNjAuMjQyIDE4Ljc2IDIxMS4zMThDMTQuMjI0IDIzMS43MDEgMTIgMjU1LjczOSAxMiAyNjMuNjE4QzEyIDM5OC4zMTggMTIxLjIxIDUwNy41MDggMjU1LjkyIDUwNy41MDhDMzc2LjU2IDUwNy41MDggNDc4LjkzOSA0MjAuMjgxIDQ5Ni4zNSAzMDQuODg4QzUwNy45MjIgMjI4LjE5MiA0ODEuNjQgMTczLjgyIDQ4MS42NCAxNzIuODk4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlZm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMy41MiwyNDEuNDhjLS4xMi0xLjU2LS4yNC0zLjEyLS4yNC00LjY4di0uMTJsLS4zNi00LjY4di0uMTJhMjQ1Ljg2LDI0NS44NiwwLDAsMC03LjMyLTQxLjE1YzAtLjEyLDAtLjEyLS4xMi0uMjRsLTEuMDgtNGMtLjEyLS4yNC0uMTItLjQ4LS4yNC0uNi0uMzYtMS4yLS43Mi0yLjUyLTEuMDgtMy43Mi0uMTItLjI0LS4xMi0uNi0uMjQtLjg0LS4zNi0xLjItLjcyLTIuNC0xLjA4LTMuNDgtLjEyLS4zNi0uMjQtLjYtLjM2LTEtLjM2LTEuMi0uNzItMi4yOC0xLjItMy40OGwtLjM2LTEuMDhjLS4zNi0xLjA4LS44NC0yLjI4LTEuMi0zLjM2YTguMjcsOC4yNywwLDAsMC0uMzYtMWMtLjQ4LTEuMDgtLjg0LTIuMjgtMS4zMi0zLjM2LS4xMi0uMjQtLjI0LS42LS4zNi0uODQtLjQ4LTEuMi0xLTIuMjgtMS40NC0zLjQ4LDAtLjEyLS4xMi0uMjQtLjEyLS4zNi0xLjU2LTMuODQtMy4yNC03LjY4LTUtMTEuNGwtLjM2LS43MmMtLjQ4LTEtLjg0LTEuOC0xLjMyLTIuNjQtLjI0LS40OC0uNDgtMS4wOC0uNzItMS41Ni0uMzYtLjg0LS44NC0xLjU2LTEuMi0yLjQtLjM2LS42LS42LTEuMi0xLTEuOHMtLjg0LTEuNDQtMS4yLTIuMjhjLS4zNi0uNi0uNzItMS4zMi0xLjA4LTEuOTJzLS44NC0xLjQ0LTEuMi0yLjE2YTE4LjA3LDE4LjA3LDAsMCwwLTEuMi0yYy0uMzYtLjcyLS44NC0xLjMyLTEuMi0ycy0uODQtMS4zMi0xLjItMi0uODQtMS4zMi0xLjItMS45Mi0uODQtMS40NC0xLjMyLTIuMTZhMTUuNjMsMTUuNjMsMCwwLDAtMS4yLTEuOEw0NjMuMiwxMTlhMTUuNjMsMTUuNjMsMCwwLDAtMS4yLTEuOGMtLjQ4LS43Mi0xLjA4LTEuNTYtMS41Ni0yLjI4LS4zNi0uNDgtLjcyLTEuMDgtMS4wOC0xLjU2bC0xLjgtMi41MmMtLjM2LS40OC0uNi0uODQtMS0xLjMyLTEtMS4zMi0xLjgtMi41Mi0yLjc2LTMuNzJhMjQ4Ljc2LDI0OC43NiwwLDAsMC0yMy41MS0yNi42NEExODYuODIsMTg2LjgyLDAsMCwwLDQxMiw2Mi40NmMtNC0zLjQ4LTguMTYtNi43Mi0xMi40OC05Ljg0YTE2Mi40OSwxNjIuNDksMCwwLDAtMjQuNi0xNS4xMmMtMi40LTEuMzItNC44LTIuNTItNy4yLTMuNzJhMjU0LDI1NCwwLDAsMC01NS40My0xOS41NmMtMS45Mi0uMzYtMy44NC0uODQtNS42NC0xLjJoLS4xMmMtMS0uMTItMS44LS4zNi0yLjc2LS40OGEyMzYuMzUsMjM2LjM1LDAsMCwwLTM4LTRIMjU1LjE0YTIzNC42MiwyMzQuNjIsMCwwLDAtNDUuNDgsNWMtMzMuNTksNy4wOC02My4yMywyMS4yNC04Mi45MSwzOS0xLjA4LDEtMS45MiwxLjY4LTIuNCwyLjE2bC0uNDguNDhIMTI0bC0uMTIuMTIuMTItLjEyYS4xMi4xMiwwLDAsMCwuMTItLjEybC0uMTIuMTJhLjQyLjQyLDAsMCwxLC4yNC0uMTJjMTQuNjQtOC43NiwzNC45Mi0xNiw0OS40NC0xOS41Nmw1Ljg4LTEuNDRjLjM2LS4xMi44NC0uMTIsMS4yLS4yNCwxLjY4LS4zNiwzLjM2LS43Miw1LjE2LTEuMDguMjQsMCwuNi0uMTIuODQtLjEyQzI1MC45NCwyMC45NCwzMTkuMzQsNDAuMTQsMzY3LDg1LjYxYTE3MS40OSwxNzEuNDksMCwwLDEsMjYuODgsMzIuNzZjMzAuMzYsNDkuMiwyNy40OCwxMTEuMTEsMy44NCwxNDcuNTktMzQuNDQsNTMtMTExLjM1LDcxLjI3LTE1OSwyNC44NGE4NC4xOSw4NC4xOSwwLDAsMS0yNS41Ni01OSw3NC4wNSw3NC4wNSwwLDAsMSw2LjI0LTMxYzEuNjgtMy44NCwxMy4wOC0yNS42NywxOC4yNC0yNC41OS0xMy4wOC0yLjc2LTM3LjU1LDIuNjQtNTQuNzEsMjguMTktMTUuMzYsMjIuOTItMTQuNTIsNTguMi01LDgzLjI4YTEzMi44NSwxMzIuODUsMCwwLDEtMTIuMTItMzkuMjRjLTEyLjI0LTgyLjU1LDQzLjMxLTE1Myw5NC4zMS0xNzAuNTEtMjcuNDgtMjQtOTYuNDctMjIuMzEtMTQ3LjcxLDE1LjM2LTI5Ljg4LDIyLTUxLjIzLDUzLjE2LTYyLjUxLDkwLjM2LDEuNjgtMjAuODgsOS42LTUyLjA4LDI1LjgtODMuODgtMTcuMTYsOC44OC0zOSwzNy00OS44LDYyLjg4LTE1LjYsMzcuNDMtMjEsODIuMTktMTYuMDgsMTI0Ljc5LjM2LDMuMjQuNzIsNi4zNiwxLjA4LDkuNiwxOS45MiwxMTcuMTEsMTIyLDIwNi4zOCwyNDQuNzgsMjA2LjM4QzM5Mi43Nyw1MDMuNDIsNTA0LDM5Mi4xOSw1MDQsMjU1LDUwMy44OCwyNTAuNDgsNTAzLjc2LDI0NS45Miw1MDMuNTIsMjQxLjQ4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJzdE9yZGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDg4LjIxQzExNS4zNCA0OTYuMjEgNy43OSAzODguNjYgNy43OSAyNTZTMTE1LjM0IDE1Ljc5IDI0OCAxNS43OSA0ODguMjEgMTIzLjM0IDQ4OC4yMSAyNTYgMzgwLjY2IDQ5Ni4yMSAyNDggNDk2LjIxem0wLTQ1OS45MkMxMjYuNjYgMzYuMjkgMjguMjkgMTM0LjY2IDI4LjI5IDI1NlMxMjYuNjYgNDc1LjcxIDI0OCA0NzUuNzEgNDY3LjcxIDM3Ny4zNCA0NjcuNzEgMjU2IDM2OS4zNCAzNi4yOSAyNDggMzYuMjl6bTAgNDMxLjIyYy0xMTYuODEgMC0yMTEuNTEtOTQuNjktMjExLjUxLTIxMS41MVMxMzEuMTkgNDQuNDkgMjQ4IDQ0LjQ5IDQ1OS41MSAxMzkuMTkgNDU5LjUxIDI1NiAzNjQuODEgNDY3LjUxIDI0OCA0NjcuNTF6bTE4Ni4yMy0xNjIuOThhMTkxLjYxMyAxOTEuNjEzIDAgMCAxLTIwLjEzIDQ4LjY5bC03NC4xMy0zNS44OCA2MS40OCA1NC44MmExOTMuNTE1IDE5My41MTUgMCAwIDEtMzcuMiAzNy4yOWwtNTQuOC02MS41NyAzNS44OCA3NC4yN2ExOTAuOTQ0IDE5MC45NDQgMCAwIDEtNDguNjMgMjAuMjNsLTI3LjI5LTc4LjQ3IDQuNzkgODIuOTNjLTguNjEgMS4xOC0xNy40IDEuOC0yNi4zMyAxLjhzLTE3LjcyLS42Mi0yNi4zMy0xLjhsNC43Ni04Mi40Ni0yNy4xNSA3OC4wM2ExOTEuMzY1IDE5MS4zNjUgMCAwIDEtNDguNjUtMjAuMmwzNS45My03NC4zNC01NC44NyA2MS42NGExOTMuODUgMTkzLjg1IDAgMCAxLTM3LjIyLTM3LjI4bDYxLjU5LTU0LjktNzQuMjYgMzUuOTNhMTkxLjYzOCAxOTEuNjM4IDAgMCAxLTIwLjE0LTQ4LjY5bDc3Ljg0LTI3LjExLTgyLjIzIDQuNzZjLTEuMTYtOC41Ny0xLjc4LTE3LjMyLTEuNzgtMjYuMjEgMC05IC42My0xNy44NCAxLjgyLTI2LjUxbDgyLjM4IDQuNzctNzcuOTQtMjcuMTZhMTkxLjcyNiAxOTEuNzI2IDAgMCAxIDIwLjIzLTQ4LjY3bDc0LjIyIDM1LjkyLTYxLjUyLTU0Ljg2YTE5My44NSAxOTMuODUgMCAwIDEgMzcuMjgtMzcuMjJsNTQuNzYgNjEuNTMtMzUuODMtNzQuMTdhMTkxLjQ5IDE5MS40OSAwIDAgMSA0OC42NS0yMC4xM2wyNi44NyA3Ny4yNS00LjcxLTgxLjYxYzguNjEtMS4xOCAxNy4zOS0xLjggMjYuMzItMS44czE3LjcxLjYyIDI2LjMyIDEuOGwtNC43NCA4Mi4xNiAyNy4wNS03Ny43NmMxNy4yNyA0LjUgMzMuNiAxMS4zNSA0OC42MyAyMC4xN2wtMzUuODIgNzQuMTIgNTQuNzItNjEuNDdhMTkzLjEzIDE5My4xMyAwIDAgMSAzNy4yNCAzNy4yM2wtNjEuNDUgNTQuNzcgNzQuMTItMzUuODZhMTkxLjUxNSAxOTEuNTE1IDAgMCAxIDIwLjIgNDguNjVsLTc3LjgxIDI3LjEgODIuMjQtNC43NWMxLjE5IDguNjYgMS44MiAxNy41IDEuODIgMjYuNDkgMCA4Ljg4LS42MSAxNy42My0xLjc4IDI2LjE5bC04Mi4xMi00Ljc1IDc3LjcyIDI3LjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJzdE9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjkgMjI5LjJjLjEtLjEuMi0uMy4zLS40IDAgLjEgMCAuMy0uMS40aC0uMnpNMjI0IDk2LjZjLTcuMSAwLTE0LjYuNi0yMS40IDEuN2wzLjcgNjcuNC0yMi02NGMtMTQuMyAzLjctMjcuNyA5LjQtNDAgMTYuNmwyOS40IDYxLjQtNDUuMS01MC45Yy0xMS40IDguOS0yMS43IDE5LjEtMzAuNiAzMC45bDUwLjYgNDUuNC02MS4xLTI5LjdjLTcuMSAxMi4zLTEyLjkgMjUuNy0xNi42IDQwbDY0LjMgMjIuNi02OC00Yy0uOSA3LjEtMS40IDE0LjYtMS40IDIycy42IDE0LjYgMS40IDIxLjdsNjcuNy00LTY0IDIyLjZjMy43IDE0LjMgOS40IDI3LjcgMTYuNiA0MC4zbDYxLjEtMjkuN0w5Ny43IDM1MmM4LjkgMTEuNyAxOS4xIDIyLjMgMzAuOSAzMC45bDQ0LjktNTAuOS0yOS41IDYxLjRjMTIuMyA3LjQgMjUuNyAxMy4xIDQwIDE2LjlsMjIuMy02NC42LTQgNjhjNy4xIDEuMSAxNC42IDEuNyAyMS43IDEuNyA3LjQgMCAxNC42LS42IDIxLjctMS43bC00LTY4LjYgMjIuNiA2NS4xYzE0LjMtNCAyNy43LTkuNCA0MC0xNi45TDI3NC45IDMzMmw0NC45IDUwLjljMTEuNy04LjkgMjItMTkuMSAzMC42LTMwLjlsLTUwLjYtNDUuMSA2MS4xIDI5LjRjNy4xLTEyLjMgMTIuOS0yNS43IDE2LjYtNDAuM2wtNjQtMjIuMyA2Ny40IDRjMS4xLTcuMSAxLjQtMTQuMyAxLjQtMjEuN3MtLjMtMTQuOS0xLjQtMjJsLTY3LjcgNCA2NC0yMi4zYy0zLjctMTQuMy05LjEtMjgtMTYuNi00MC4zbC02MC45IDI5LjcgNTAuNi00NS40Yy04LjktMTEuNy0xOS4xLTIyLTMwLjYtMzAuOWwtNDUuMSA1MC45IDI5LjQtNjEuMWMtMTIuMy03LjQtMjUuNy0xMy4xLTQwLTE2LjlMMjQxLjcgMTY2bDQtNjcuN2MtNy4xLTEuMi0xNC4zLTEuNy0yMS43LTEuN3pNNDQzLjQgMTI4djI1NkwyMjQgNTEyIDQuNiAzODRWMTI4TDIyNCAwbDIxOS40IDEyOHptLTE3LjEgMTAuM0wyMjQgMjAuOSAyMS43IDEzOC4zdjIzNS4xTDIyNCA0OTEuMWwyMDIuMy0xMTcuN1YxMzguM3pNMjI0IDM3LjFsMTg3LjcgMTA5LjR2MjE4LjlMMjI0IDQ3NC45IDM2LjMgMzY1LjRWMTQ2LjZMMjI0IDM3LjF6bTAgNTAuOWMtOTIuMyAwLTE2Ni45IDc1LjEtMTY2LjkgMTY4IDAgOTIuNiA3NC42IDE2Ny43IDE2Ni45IDE2Ny43IDkyIDAgMTY2LjktNzUuMSAxNjYuOS0xNjcuNyAwLTkyLjktNzQuOS0xNjgtMTY2LjktMTY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJzdGRyYWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxOTJoLTY0djEyOEgxOTJ2MTI4SDB2LTI1LjZoMTY2LjR2LTEyOGgxMjh2LTEyOEgzODRWMTkyem0tMjUuNiAzOC40djEyOGgtMTI4djEyOEg2NFY1MTJoMTkyVjM4NGgxMjhWMjMwLjRoLTI1LjZ6bTI1LjYgMTkyaC04OS42VjUxMkgzMjB2LTY0aDY0di0yNS42ek0wIDB2Mzg0aDEyOFYyNTZoMTI4VjEyOGgxMjhWMEgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGlja3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTQ0LjUgMzE5Yy0zNS4xIDAtNjMuNS0yOC40LTYzLjUtNjMuNXMyOC40LTYzLjUgNjMuNS02My41IDYzLjUgMjguNCA2My41IDYzLjUtMjguNCA2My41LTYzLjUgNjMuNXptMTU5IDBjLTM1LjEgMC02My41LTI4LjQtNjMuNS02My41czI4LjQtNjMuNSA2My41LTYzLjUgNjMuNSAyOC40IDYzLjUgNjMuNS0yOC40IDYzLjUtNjMuNSA2My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTM1OC40IDE3OS4yaC04OS42djg5LjZoLTg5LjZ2ODkuNkg4OS42VjEyMS42aDI2OC44djg5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTcuOCA0MjcuOGMxMi45IDExLjcgMzMuNyAzMy4zIDMzLjIgNTAuNyAwIC44LS4xIDEuNi0uMSAyLjUtMS44IDE5LjgtMTguOCAzMS4xLTM5LjEgMzEtMjUtLjEtMzkuOS0xNi44LTM4LjctMzUuOCAxLTE2LjIgMjAuNS0zNi43IDMyLjQtNDcuNiAyLjMtMi4xIDIuNy0yLjcgNS42LTMuNiAzLjQgMCAzLjkuMyA2LjcgMi44ek0zMzEuOSA2Ny4zYy0xNi4zLTI1LjctMzguNi00MC42LTYzLjMtNTIuMUMyNDMuMSA0LjUgMjE0LS4yIDE5MiAwYy00NC4xIDAtNzEuMiAxMy4yLTgxLjEgMTcuM0M1Ny4zIDQ1LjIgMjYuNSA4Ny4yIDI4IDE1OC42YzcuMSA4Mi4yIDk3IDE3NiAxNTUuOCAyMzMuOCAxLjcgMS42IDQuNSA0LjUgNi4yIDUuMWwzLjMuMWMyLjEtLjcgMS44LS41IDMuNS0yLjEgNTIuMy00OS4yIDE0MC43LTE0NS44IDE1NS45LTIxNS43IDctMzkuMiAzLjEtNzIuNS0yMC44LTExMi41ek0xODYuOCAzNTEuOWMtMjgtNTEuMS02NS4yLTEzMC43LTY5LjMtMTg5LTMuNC00Ny41IDExLjQtMTMxLjIgNjkuMy0xMzYuN3YzMjUuN3pNMzI4LjcgMTgwYy0xNi40IDU2LjgtNzcuMyAxMjgtMTE4LjkgMTcwLjNDMjM3LjYgMjk4LjQgMjc1IDIxNyAyNzcgMTU4LjRjMS42LTQ1LjktOS44LTEwNS44LTQ4LTEzMS40IDg4LjggMTguMyAxMTUuNSA5OC4xIDk5LjcgMTUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250QXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS43IDk2QzEwNi4zIDg2LjggMTE2IDcwLjUgMTE2IDUyQzExNiAyMy4zIDkyLjcgMCA2NCAwUzEyIDIzLjMgMTIgNTJjMCAxNi43IDcuOCAzMS41IDIwIDQxbDAgMyAwIDM1MiAwIDY0IDY0IDAgMC02NCAzNzMuNiAwYzE0LjYgMCAyNi40LTExLjggMjYuNC0yNi40YzAtMy43LS44LTcuMy0yLjMtMTAuN0w0MzIgMjcybDYxLjctMTM4LjljMS41LTMuNCAyLjMtNyAyLjMtMTAuN2MwLTE0LjYtMTEuOC0yNi40LTI2LjQtMjYuNEw5MS43IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnNGaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQuNCAyMjRoOTIuNGwtMTUuMiA1MS4yaC03Ni40VjQzM2MwIDgtMi44IDkuMiA0LjQgMTBsNTkuNiA1LjZWNDgzSDB2LTM1LjJsMjkuMi0yLjhjNy4yLS44IDkuMi0zLjIgOS4yLTEwLjhWMjc4LjRjMC0zLjItNC0zLjItOC0zLjJIMFYyMjRoMzguNHYtMjguOGMwLTY4IDM2LjQtOTYgMTA2LTk2IDQ2LjggMCA4OC44IDExLjIgODguOCA3Mi40bC02OS42IDguNGMuNC0yNS42LTYtMzEuNi0yMi40LTMxLjYtMjUuMiAwLTI2IDEzLjYtMjYgMzcuNnYzMmMwIDMuMi00LjggNi0uOCA2ek0zODQgNDgzSDI0My4ydi0zNC40bDI4LTMuNmM3LjItLjggMTAuNC0yLjQgMTAuNC0xMFYyODdjMC01LjYtNC05LjItOS4yLTEwLjhsLTMzLjItOC44IDkuMi00MC40aDExMHYyMDhjMCA4LTMuNiA4LjggNCAxMGwyMS42IDMuNlY0ODN6bS0zMC0zNDcuMmwxMi40IDQ1LjYtMTAgMTAtNDIuOC0yMi44LTQyLjggMjIuOC0xMC0xMCAxMi40LTQ1LjYtMzAtMzYuNCA0LjgtMTBoMzhMMzA3LjIgNTFIMzIwbDIxLjIgMzguNGgzOGw0LjggMTMuMi0zMCAzMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMyem0xODcgMTQwLjljLTE4LjQgMC0xOSA5LjktMTkgMjcuNHYyMy4zYzAgMi40LTMuNSA0LjQtLjYgNC40aDY3LjRsLTExLjEgMzcuM0gxNjh2MTEyLjljMCA1LjgtMiA2LjcgMy4yIDcuM2w0My41IDQuMXYyNS4xSDg0VjM4OWwyMS4zLTJjNS4yLS42IDYuNy0yLjMgNi43LTcuOVYyNjcuN2MwLTIuMy0yLjktMi4zLTUuOC0yLjNIODRWMjI4aDI4di0yMWMwLTQ5LjYgMjYuNS03MCA3Ny4zLTcwIDM0LjEgMCA2NC43IDguMiA2NC43IDUyLjhsLTUwLjcgNi4xYy4zLTE4LjctNC40LTIzLTE2LjMtMjN6bTc0LjMgMjQxLjh2LTI1LjFsMjAuNC0yLjZjNS4yLS42IDcuNi0xLjcgNy42LTcuM1YyNzEuOGMwLTQuMS0yLjktNi43LTYuNy03LjlsLTI0LjItNi40IDYuNy0yOS41aDgwLjJ2MTUxLjdjMCA1LjgtMi42IDYuNCAyLjkgNy4zbDE1LjcgMi42djI1LjF6bTgwLjgtMjU1LjVsOSAzMy4yLTcuMyA3LjMtMzEuMi0xNi42LTMxLjIgMTYuNi03LjMtNy4zIDktMzMuMi0yMS44LTI0LjIgMy41LTkuNmgyNy43bDE1LjUtMjhoOS4zbDE1LjUgMjhoMjcuN2wzLjUgOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J0QXdlc29tZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMjM3LjRoLTIyLjJjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN0gyMDhjMi4xIDAgMy43LTEuNiAzLjctMy43di01MS43YzAtMi4xLTEuNi0zLjctMy43LTMuN3ptMTE4LjIgMEgzMDRjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN2gyMi4yYzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtNTEuN2MtLjEtMi4xLTEuNy0zLjctMy43LTMuN3ptMTMyLTEyNS4xYy0yLjMtMy4yLTQuNi02LjQtNy4xLTkuNS05LjgtMTIuNS0yMC44LTI0LTMyLjgtMzQuNC00LjUtMy45LTkuMS03LjYtMTMuOS0xMS4yLTEuNi0xLjItMy4yLTIuMy00LjgtMy41QzM3MiAzNC4xIDM0MC4zIDIwIDMwNiAxM2MtMTYuMi0zLjMtMzIuOS01LTUwLTVzLTMzLjkgMS43LTUwIDVjLTM0LjMgNy4xLTY2IDIxLjItOTMuMyA0MC44LTEuNiAxLjEtMy4yIDIuMy00LjggMy41LTQuOCAzLjYtOS40IDcuMy0xMy45IDExLjItMyAyLjYtNS45IDUuMy04LjggOHMtNS43IDUuNS04LjQgOC40Yy01LjUgNS43LTEwLjcgMTEuOC0xNS42IDE4LTIuNCAzLjEtNC44IDYuMy03LjEgOS41QzI1LjIgMTUzIDguMyAyMDIuNSA4LjMgMjU2YzAgMiAuMSA0IC4xIDYgLjEuNy4xIDEuMy4xIDIgLjEgMS4zLjEgMi43LjIgNCAwIC44LjEgMS41LjEgMi4zIDAgMS4zLjEgMi41LjIgMy43LjEuOC4xIDEuNi4yIDIuNC4xIDEuMS4yIDIuMy4zIDMuNSAwIC44LjEgMS42LjIgMi40LjEgMS4yLjMgMi40LjQgMy42LjEuOC4yIDEuNS4zIDIuMy4xIDEuMy4zIDIuNi41IDMuOS4xLjYuMiAxLjMuMyAxLjlsLjkgNS43Yy4xLjYuMiAxLjEuMyAxLjcuMyAxLjMuNSAyLjcuOCA0IC4yLjguMyAxLjYuNSAyLjQuMiAxIC41IDIuMS43IDMuMi4yLjkuNCAxLjcuNiAyLjYuMiAxIC40IDIgLjcgMyAuMi45LjUgMS44LjcgMi43LjMgMSAuNSAxLjkuOCAyLjkuMy45LjUgMS44LjggMi43LjIuOS41IDEuOS44IDIuOHMuNSAxLjguOCAyLjdjLjMgMSAuNiAxLjkuOSAyLjguNiAxLjYgMS4xIDMuMyAxLjcgNC45LjQgMSAuNyAxLjkgMSAyLjguMyAxIC43IDIgMS4xIDMgLjMuOC42IDEuNS45IDIuM2wxLjIgM2MuMy43LjYgMS41LjkgMi4yLjQgMSAuOSAyIDEuMyAzbC45IDIuMWMuNSAxIC45IDIgMS40IDMgLjMuNy42IDEuMy45IDIgLjUgMSAxIDIuMSAxLjUgMy4xLjIuNi41IDEuMS44IDEuNy42IDEuMSAxLjEgMi4yIDEuNyAzLjMuMS4yLjIuMy4zLjUgMi4yIDQuMSA0LjQgOC4yIDYuOCAxMi4yLjIuNC41LjguNyAxLjIuNyAxLjEgMS4zIDIuMiAyIDMuMy4zLjUuNi45LjkgMS40LjYgMS4xIDEuMyAyLjEgMiAzLjIuMy41LjYuOS45IDEuNC43IDEuMSAxLjQgMi4xIDIuMSAzLjIuMi40LjUuOC44IDEuMi43IDEuMSAxLjUgMi4yIDIuMyAzLjMuMi4yLjMuNS41LjcgMzcuNSA1MS43IDk0LjQgODguNSAxNjAgOTkuNC45LjEgMS43LjMgMi42LjQgMSAuMiAyLjEuNCAzLjEuNXMxLjkuMyAyLjguNGMxIC4yIDIgLjMgMyAuNC45LjEgMS45LjIgMi45LjNzMS45LjIgMi45LjMgMi4xLjIgMy4xLjNjLjkuMSAxLjguMSAyLjcuMiAxLjEuMSAyLjMuMSAzLjQuMi44IDAgMS43LjEgMi41LjEgMS4zIDAgMi42LjEgMy45LjEuNy4xIDEuNC4xIDIuMS4xIDIgLjEgNCAuMSA2IC4xczQtLjEgNi0uMWMuNyAwIDEuNC0uMSAyLjEtLjEgMS4zIDAgMi42IDAgMy45LS4xLjggMCAxLjctLjEgMi41LS4xIDEuMS0uMSAyLjMtLjEgMy40LS4yLjkgMCAxLjgtLjEgMi43LS4yIDEtLjEgMi4xLS4yIDMuMS0uM3MxLjktLjIgMi45LS4zYy45LS4xIDEuOS0uMiAyLjktLjNzMi0uMyAzLS40IDEuOS0uMyAyLjgtLjRjMS0uMiAyLjEtLjMgMy4xLS41LjktLjEgMS43LS4zIDIuNi0uNCA2NS42LTExIDEyMi41LTQ3LjcgMTYwLjEtMTAyLjQuMi0uMi4zLS41LjUtLjcuOC0xLjEgMS41LTIuMiAyLjMtMy4zLjItLjQuNS0uOC44LTEuMi43LTEuMSAxLjQtMi4xIDIuMS0zLjIuMy0uNS42LS45LjktMS40LjYtMS4xIDEuMy0yLjEgMi0zLjIuMy0uNS42LS45LjktMS40LjctMS4xIDEuMy0yLjIgMi0zLjMuMi0uNC41LS44LjctMS4yIDIuNC00IDQuNi04LjEgNi44LTEyLjIuMS0uMi4yLS4zLjMtLjUuNi0xLjEgMS4xLTIuMiAxLjctMy4zLjItLjYuNS0xLjEuOC0xLjcuNS0xIDEtMi4xIDEuNS0zLjEuMy0uNy42LTEuMy45LTIgLjUtMSAxLTIgMS40LTNsLjktMi4xYy41LTEgLjktMiAxLjMtMyAuMy0uNy42LTEuNS45LTIuMmwxLjItM2MuMy0uOC42LTEuNS45LTIuMy40LTEgLjctMiAxLjEtM3MuNy0xLjkgMS0yLjhjLjYtMS42IDEuMi0zLjMgMS43LTQuOS4zLTEgLjYtMS45LjktMi44cy41LTEuOC44LTIuN2MuMi0uOS41LTEuOS44LTIuOHMuNi0xLjguOC0yLjdjLjMtMSAuNS0xLjkuOC0yLjkuMi0uOS41LTEuOC43LTIuNy4yLTEgLjUtMiAuNy0zIC4yLS45LjQtMS43LjYtMi42LjItMSAuNS0yLjEuNy0zLjIuMi0uOC4zLTEuNi41LTIuNC4zLTEuMy42LTIuNy44LTQgLjEtLjYuMi0xLjEuMy0xLjdsLjktNS43Yy4xLS42LjItMS4zLjMtMS45LjEtMS4zLjMtMi42LjUtMy45LjEtLjguMi0xLjUuMy0yLjMuMS0xLjIuMy0yLjQuNC0zLjYgMC0uOC4xLTEuNi4yLTIuNC4xLTEuMS4yLTIuMy4zLTMuNS4xLS44LjEtMS42LjItMi40LjEgMS43LjEuNS4yLS43IDAtLjguMS0xLjUuMS0yLjMuMS0xLjMuMi0yLjcuMi00IC4xLS43LjEtMS4zLjEtMiAuMS0yIC4xLTQgLjEtNiAwLTUzLjUtMTYuOS0xMDMtNDUuOC0xNDMuN3pNNDQ4IDM3MS41Yy05LjQgMTUuNS0yMC42IDI5LjktMzMuNiA0Mi45LTIwLjYgMjAuNi00NC41IDM2LjctNzEuMiA0OC0xMy45IDUuOC0yOC4yIDEwLjMtNDIuOSAxMy4ydi03NS44YzAtNTguNi04OC42LTU4LjYtODguNiAwdjc1LjhjLTE0LjctMi45LTI5LTcuMy00Mi45LTEzLjItMjYuNy0xMS4zLTUwLjYtMjcuNC03MS4yLTQ4LTEzLTEzLTI0LjItMjcuNC0zMy42LTQyLjl2LTcxLjNjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjFjMi4xIDAgMy43IDEuNiAzLjcgMy43VjMyNmgyOS42VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMWMyLjEgMCAzLjcgMS42IDMuNyAzLjd2MjUuOWgyOS41VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdIMjA4YzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtNC44IDYuNS0zLjcgOS41LTMuN1Y4OC4xYy00LjQtMi03LjQtNi43LTcuNC0xMS41IDAtMTYuOCAyNS40LTE2LjggMjUuNCAwIDAgNC44LTMgOS40LTcuNCAxMS41VjkyYzYuMy0xLjQgMTIuNy0yLjMgMTkuMi0yLjMgOS40IDAgMTguNCAzLjUgMjYuMyAzLjUgNy4yIDAgMTUuMi0zLjUgMTkuNC0zLjUgMi4xIDAgMy43IDEuNiAzLjcgMy43djQ4LjRjMCA1LjYtMTguNyA2LjUtMjIuNCA2LjUtOC42IDAtMTYuNi0zLjUtMjUuNC0zLjUtNyAwLTE0LjEgMS4yLTIwLjggMi44djMwLjdjMyAwIDkuNS0xLjEgOS41IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4yYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4xYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YxNDRoMjkuNXYtMjUuOGMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMmMyLjEgMCAzLjcgMS42IDMuNyAzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OS4yIDI4Ny45aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMyaC0zNi42VjE0Ni4yYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtNi04LTQuNi0xMS43LTQuNnYtMzhjOC4zLTIgMTcuMS0zLjQgMjUuNy0zLjQgMTAuOSAwIDIwLjkgNC4zIDMxLjQgNC4zIDQuNiAwIDI3LjctMS4xIDI3LjctOHYtNjBjMC0yLjYtMi00LjYtNC42LTQuNi01LjEgMC0xNS4xIDQuMy0yNCA0LjMtOS43IDAtMjAuOS00LjMtMzIuNi00LjMtOCAwLTE2IDEuMS0yMy43IDIuOXYtNC45YzUuNC0yLjYgOS4xLTguMyA5LjEtMTQuMyAwLTIwLjctMzEuNC0yMC44LTMxLjQgMCAwIDYgMy43IDExLjcgOS4xIDE0LjN2MTExLjdjLTMuNyAwLTExLjctMS40LTExLjcgNC42djMyaC0zNi42di0zMmMwLTIuNi0yLTQuNi00LjYtNC42aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMySDEyOHYtMzJjMC0yLjYtMi00LjYtNC42LTQuNkg5NmMtMi42IDAtNC42IDItNC42IDQuNnYxNzguM0g1NC44di0zMmMwLTIuNi0yLTQuNi00LjYtNC42SDIyLjhjLTIuNiAwLTQuNiAyLTQuNiA0LjZWNTEyaDE4Mi45di05NmMwLTcyLjYgMTA5LjctNzIuNiAxMDkuNyAwdjk2aDE4Mi45VjI5Mi41Yy4xLTIuNi0xLjktNC42LTQuNS00LjZ6bS0yODguMS00LjVjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6bTE0Ni40IDBjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnVtYmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuOCAzMDkuN0MyIDI5Mi43IDAgMjc1LjUgMCAyNTguMyAwIDEzNSA5OS44IDM1IDIyMy4xIDM1YzE2LjYgMCAzMy4zIDIgNDkuMyA1LjVDMTQ5IDg3LjUgNTEuOSAxODYgNS44IDMwOS43em0zOTIuOS0xODkuMkMzODUgMTAzIDM2OSA4Ny44IDM1MC45IDc1LjJjLTE0OS42IDQ0LjMtMjY2LjMgMTYyLjEtMzA5LjcgMzEyIDEyLjUgMTguMSAyOCAzNS42IDQ1LjIgNDkgNDMuMS0xNTEuMyAxNjEuMi0yNzEuNyAzMTIuMy0zMTUuN3ptMTUuOCAyNTIuN2MxNS4yLTI1LjEgMjUuNC01My43IDI5LjUtODIuOC03OS40IDQyLjktMTQ1IDExMC42LTE4Ny42IDE5MC4zIDMwLTQuNCA1OC45LTE1LjMgODQuNi0zMS4zIDM1IDEzLjEgNzAuOSAyNC4zIDEwNyAzMy42LTkuMy0zNi41LTIwLjQtNzQuNS0zMy41LTEwOS44em0yOS43LTE0NS41Yy0yLjYtMTkuNS03LjktMzguNy0xNS44LTU2LjhDMjkwLjUgMjE2LjcgMTgyIDMyNy41IDEzNy4xIDQ2NmMxOC4xIDcuNiAzNyAxMi41IDU2LjYgMTUuMkMyNDAgMzY3LjEgMzMwLjUgMjc0LjQgNDQ0LjIgMjI3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvdXJzcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM2OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzLjEgM0g0OS45QzEyLjQgMyAwIDMxLjMgMCA0OS4xdjQzMy44YzAgMjAuMyAxMi4xIDI3LjcgMTguMiAzMC4xIDYuMiAyLjUgMjIuOCA0LjYgMzIuOS03LjFDMTgwIDM1Ni41IDE4Mi4yIDM1NCAxODIuMiAzNTRjMy4xLTMuNCAzLjQtMy4xIDYuOC0zLjFoODMuNGMzNS4xIDAgNDAuNi0yNS4yIDQ0LjMtMzkuN2w0OC42LTI0M0MzNzMuOCAyNS44IDM2My4xIDMgMzIzLjEgM3ptLTE2LjMgNzMuOGwtMTEuNCA1OS43Yy0xLjIgNi41LTkuNSAxMy4yLTE2LjkgMTMuMkgxNzIuMWMtMTIgMC0yMC42IDguMy0yMC42IDIwLjN2MTNjMCAxMiA4LjYgMjAuNiAyMC42IDIwLjZoOTAuNGM4LjMgMCAxNi42IDkuMiAxNC44IDE4LjItMS44IDguOS0xMC41IDUzLjgtMTEuNCA1OC44LS45IDQuOS02LjggMTMuNS0xNi45IDEzLjVoLTczLjVjLTEzLjUgMC0xNy4yIDEuOC0yNi41IDEyLjYgMCAwLTguOSAxMS40LTg5LjUgMTA4LjMtLjkuOS0xLjguNi0xLjgtLjNWNzUuOWMwLTcuNyA2LjgtMTYuNiAxNi42LTE2LjZoMjE5YzguMiAwIDE1LjYgNy43IDEzLjUgMTcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJlZUNvZGVDYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk3LjIyLDk2LjIxYzEwLjM2LTEwLjY1LDE2LTE3LjEyLDE2LTIxLjksMC0yLjc2LTEuOTItNS41MS0zLjgzLTcuNDJBMTQuODEsMTQuODEsMCwwLDAsMTAxLDY0LjA1Yy04LjQ4LDAtMjAuOTIsOC43OS0zNS44NCwyNS42OUMyMy42OCwxMzcsMi41MSwxODIuODEsMy4zNywyNTAuMzRzMTcuNDcsMTE3LDU0LjA2LDE2MS44N0M3Ni4yMiw0MzUuODYsOTAuNjIsNDQ4LDEwMC45LDQ0OGExMy41NSwxMy41NSwwLDAsMCw4LjM3LTMuODRjMS45MS0yLjc2LDMuODEtNS42MywzLjgxLTguMzgsMC01LjYzLTMuODYtMTIuMi0xMy4yLTIwLjU1LTQ0LjQ1LTQyLjMzLTY3LjMyLTk3LTY3LjQ4LTE2NUMzMi4yNSwxODguOCw1NCwxMzcuODMsOTcuMjIsOTYuMjFaTTIzOS40Nyw0MjAuMDdjLjU4LjM3LjkxLjU1LjkxLjU1Wm05My43OS41NS4xNy0uMTNDMzMzLjI0LDQyMC42MiwzMzMuMTcsNDIwLjY3LDMzMy4yNiw0MjAuNjJabTMuMTMtMTU4LjE4Yy0xNi4yNC00LjE1LDUwLjQxLTgyLjg5LTY4LjA1LTE3Ny4xNywwLDAsMTUuNTQsNDkuMzgtNjIuODMsMTU5LjU3LTc0LjI3LDEwNC4zNSwyMy40NiwxNjguNzMsMzQsMTc1LjIzLTYuNzMtNC4zNS00Ny40LTM1LjcsOS41NS0xMjguNjQsMTEtMTguMywyNS41My0zNC44Nyw0My41LTcyLjE2LDAsMCwxNS45MSwyMi40NSw3LjYsNzEuMTNDMjg3LjcsMzY0LDM1NCwzNDIuOTEsMzU1LDM0My45NGMyMi43NSwyNi43OC0xNy43Miw3My41MS0yMS41OCw3Ni41NSw1LjQ5LTMuNjUsMTE3LjcxLTc4LDMzLTE4OC4xQzM2MC40MywyMzguNCwzNTIuNjIsMjY2LjU5LDMzNi4zOSwyNjIuNDRaTTUxMC44OCw4OS42OUM0OTYsNzIuNzksNDgzLjUyLDY0LDQ3NSw2NGExNC44MSwxNC44MSwwLDAsMC04LjM5LDIuODRjLTEuOTEsMS45MS0zLjgzLDQuNjYtMy44Myw3LjQyLDAsNC43OCw1LjYsMTEuMjYsMTYsMjEuOSw0My4yMyw0MS42MSw2NSw5Mi41OSw2NC44MiwxNTQuMDYtLjE2LDY4LTIzLDEyMi42My02Ny40OCwxNjUtOS4zNCw4LjM1LTEzLjE4LDE0LjkyLTEzLjIsMjAuNTUsMCwyLjc1LDEuOSw1LjYyLDMuODEsOC4zOEExMy42MSwxMy42MSwwLDAsMCw0NzUuMSw0NDhjMTAuMjgsMCwyNC42OC0xMi4xMyw0My40Ny0zNS43OSwzNi41OS00NC44NSw1My4xNC05NC4zOCw1NC4wNi0xNjEuODdTNTUyLjMyLDEzNyw1MTAuODgsODkuNjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyZWVic2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAzLjcgOTYuMmMxMS4xLTExLjEgMTE1LjUtNzcgMTM5LjItNTMuMiAyMy43IDIzLjctNDIuMSAxMjguMS01My4yIDEzOS4yLTExLjEgMTEuMS0zOS40LjktNjMuMS0yMi45LTIzLjgtMjMuNy0zNC4xLTUyLTIyLjktNjMuMXpNMTA5LjkgNjguMUM3My42IDQ3LjUgMjIgMjQuNiA1LjYgNDEuMWMtMTYuNiAxNi42IDcuMSA2OS40IDI3LjkgMTA1LjcgMTguNS0zMi4yIDQ0LjgtNTkuMyA3Ni40LTc4Ljd6TTQwNi43IDE3NGMzLjMgMTEuMyAyLjcgMjAuNy0yLjcgMjYuMS0yMC4zIDIwLjMtODcuNS0yNy0xMDkuMy03MC4xLTE4LTMyLjMtMTEuMS01My40IDE0LjktNDguNyA1LjctMy42IDEyLjMtNy42IDE5LjYtMTEuNi0yOS44LTE1LjUtNjMuNi0yNC4zLTk5LjUtMjQuMy0xMTkuMSAwLTIxNS42IDk2LjUtMjE1LjYgMjE1LjYgMCAxMTkgOTYuNSAyMTUuNiAyMTUuNiAyMTUuNlM0NDUuMyAzODAuMSA0NDUuMyAyNjFjMC0zOC40LTEwLjEtNzQuNS0yNy43LTEwNS44LTMuOSA3LTcuNiAxMy4zLTEwLjkgMTguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnVsY3J1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NS43NSAxNjQuMTRsLTM1LjM4IDQzLjU1TDI1IDE2NC4xNGwzNS4zOC00My41NXpNMTQ0LjIzIDBsLTIwLjU0IDE5OC4xOEw3Mi43MiAyNTZsNTEgNTcuODJMMTQ0LjIzIDUxMlYzMDAuODlMMTAzLjE1IDI1Nmw0MS4wOC00NC44OXptNzkuNjcgMTY0LjE0bDM1LjM4IDQzLjU1IDM1LjM4LTQzLjU1LTM1LjM4LTQzLjU1em0tNDguNDggNDdMMjE2LjUgMjU2bC00MS4wOCA0NC44OVY1MTJMMTk2IDMxMy44MiAyNDcgMjU2bC01MS01Ny44MkwxNzUuNDIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FsYWN0aWNSZXB1YmxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNTA0QzExMS4yNSA1MDQgMCAzOTIuNzUgMCAyNTZTMTExLjI1IDggMjQ4IDhzMjQ4IDExMS4yNSAyNDggMjQ4LTExMS4yNSAyNDgtMjQ4IDI0OHptMC00NzkuNDdDMTIwLjM3IDI0LjUzIDE2LjUzIDEyOC4zNyAxNi41MyAyNTZTMTIwLjM3IDQ4Ny40NyAyNDggNDg3LjQ3IDQ3OS40NyAzODMuNjMgNDc5LjQ3IDI1NiAzNzUuNjMgMjQuNTMgMjQ4IDI0LjUzem0yNy42MiAyMS44MXYyNC42MmExODUuOTMzIDE4NS45MzMgMCAwIDEgODMuNTcgMzQuNTRsMTcuMzktMTcuMzZjLTI4Ljc1LTIyLjA2LTYzLjMtMzYuODktMTAwLjk2LTQxLjh6bS01NS4zNy4wN2MtMzcuNjQgNC45NC03Mi4xNiAxOS44LTEwMC44OCA0MS44NWwxNy4yOCAxNy4zNmguMDhjMjQuMDctMTcuODQgNTIuNTUtMzAuMDYgODMuNTItMzQuNjdWNDYuNDF6bTEyLjI1IDUwLjE3djgyLjg3Yy0xMC4wNCAyLjAzLTE5LjQyIDUuOTQtMjcuNjcgMTEuNDJsLTU4LjYyLTU4LjU5LTIxLjkzIDIxLjkzIDU4LjY3IDU4LjY3Yy01LjQ3IDguMjMtOS40NSAxNy41OS0xMS40NyAyNy42MmgtODIuOXYzMWg4Mi45YzIuMDIgMTAuMDIgNi4wMSAxOS4zMSAxMS40NyAyNy41NGwtNTguNjcgNTguNjkgMjEuOTMgMjEuOTMgNTguNjItNTguNjJhNzcuODczIDc3Ljg3MyAwIDAgMCAyNy42NyAxMS40N3Y4Mi45aDMxdi04Mi45YzEwLjA1LTIuMDMgMTkuMzctNi4wNiAyNy42Mi0xMS41NWw1OC42NyA1OC42OSAyMS45My0yMS45My01OC42Ny01OC42OWM1LjQ2LTguMjMgOS40Ny0xNy41MiAxMS41LTI3LjU0aDgyLjg3di0zMWgtODIuODdjLTIuMDItMTAuMDItNi4wMy0xOS4zOC0xMS41LTI3LjYybDU4LjY3LTU4LjY3LTIxLjkzLTIxLjkzLTU4LjY3IDU4LjY3Yy04LjI1LTUuNDktMTcuNTctOS40Ny0yNy42Mi0xMS41Vjk2LjU4aC0zMXptMTgzLjI0IDMwLjcybC0xNy4zNiAxNy4zNmExODYuMzM3IDE4Ni4zMzcgMCAwIDEgMzQuNjcgODMuNjdoMjQuNjJjLTQuOTUtMzcuNjktMTkuODMtNzIuMjktNDEuOTMtMTAxLjAzem0tMzM1LjU1LjEzYy0yMi4wNiAyOC43Mi0zNi45MSA2My4yNi00MS44NSAxMDAuOTFoMjQuNjVjNC42LTMwLjk2IDE2Ljc2LTU5LjQ1IDM0LjU5LTgzLjUybC0xNy4zOS0xNy4zOXpNMzguMzQgMjgzLjY3YzQuOTIgMzcuNjQgMTkuNzUgNzIuMTggNDEuOCAxMDAuOWwxNy4zNi0xNy4zOWMtMTcuODEtMjQuMDctMjkuOTItNTIuNTctMzQuNTEtODMuNTJIMzguMzR6bTM5NC43IDBjLTQuNjEgMzAuOTktMTYuOCA1OS41LTM0LjY3IDgzLjZsMTcuMzYgMTcuMzZjMjIuMDgtMjguNzQgMzYuOTgtNjMuMjkgNDEuOTMtMTAwLjk2aC0yNC42MnpNMTM2LjY2IDQwNi4zOGwtMTcuMzYgMTcuMzZjMjguNzMgMjIuMDkgNjMuMyAzNi45OCAxMDAuOTYgNDEuOTN2LTI0LjY0Yy0zMC45OS00LjYzLTU5LjUzLTE2Ljc5LTgzLjYtMzQuNjV6bTIyMi41My4wNWMtMjQuMDkgMTcuODQtNTIuNTggMzAuMDgtODMuNTcgMzQuNjd2MjQuNTdjMzcuNjctNC45MiA3Mi4yMS0xOS43OSAxMDAuOTYtNDEuODVsLTE3LjMxLTE3LjM5aC0uMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhbGFjdGljU2VuYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OS44NiAzMy40OHYyNi4wN0MyMzYuMjggODAuMTcgMjI2IDE2OC4xNCAyMjUuMzkgMjc0LjljMTEuNzQtMTUuNjIgMTkuMTMtMzMuMzMgMTkuMTMtNDguMjR2LTE2Ljg4Yy0uMDMtNS4zMi43NS0xMC41MyAyLjE5LTE1LjY1LjY1LTIuMTQgMS4zOS00LjA4IDIuNjItNS44MiAxLjIzLTEuNzUgMy40My0zLjc5IDYuNjgtMy43OSAzLjI0IDAgNS40NSAyLjA1IDYuNjggMy43OSAxLjIzIDEuNzUgMS45NyAzLjY4IDIuNjIgNS44MiAxLjQ0IDUuMTIgMi4yMiAxMC4zMyAyLjE5IDE1LjY1djE2Ljg4YzAgMTQuOTEgNy4zOSAzMi42MiAxOS4xMyA0OC4yNC0uNjMtMTA2Ljc2LTEwLjkxLTE5NC43My0yNC40OS0yMTUuMzVWMzMuNDhoLTEyLjI4em0tMjYuMzQgMTQ3Ljc3Yy05LjUyIDIuMTUtMTguNyA1LjE5LTI3LjQ2IDkuMDggOC45IDE2LjEyIDkuNzYgMzIuNjQgMS43MSAzNy4yOS04IDQuNjItMjEuODUtNC4yMy0zMS4zNi0xOS44Mi0xMS41OCA4Ljc5LTIxLjg4IDE5LjMyLTMwLjU2IDMxLjA5IDE0LjczIDkuNjIgMjIuODkgMjIuOTIgMTguMzIgMzAuNjYtNC41NCA3LjctMjAuMDMgNy4xNC0zNS40Ny0uOTYtNS43OCAxMy4yNS05Ljc1IDI3LjUxLTExLjY1IDQyLjQyIDkuNjguMTggMTguNjcgMi4zOCAyNi4xOCA2LjA0IDE3Ljc4LS4zIDMyLjc3LTEuOTYgNDAuNDktNC4yMiA1LjU1LTI2LjM1IDIzLjAyLTQ4LjIzIDQ2LjMyLTU5LjUxLjczLTI1LjU1IDEuODgtNDkuNjcgMy40OC03Mi4wN3ptNjQuOTYgMGMxLjU5IDIyLjQgMi43NSA0Ni41MiAzLjQ3IDcyLjA3IDIzLjI5IDExLjI4IDQwLjc3IDMzLjE2IDQ2LjMyIDU5LjUxIDcuNzIgMi4yNiAyMi43MSAzLjkyIDQwLjQ5IDQuMjIgNy41MS0zLjY2IDE2LjUtNS44NSAyNi4xOC02LjA0LTEuOS0xNC45MS01Ljg2LTI5LjE3LTExLjY1LTQyLjQyLTE1LjQ0IDguMS0zMC45MyA4LjY2LTM1LjQ3Ljk2LTQuNTctNy43NCAzLjYtMjEuMDUgMTguMzItMzAuNjYtOC42OC0xMS43Ny0xOC45OC0yMi4zLTMwLjU2LTMxLjA5LTkuNTEgMTUuNTktMjMuMzYgMjQuNDQtMzEuMzYgMTkuODItOC4wNS00LjY1LTcuMTktMjEuMTYgMS43MS0zNy4yOWExNDcuNDkgMTQ3LjQ5IDAgMCAwLTI3LjQ1LTkuMDh6bS0zMi40OCA4LjZjLTMuMjMgMC01Ljg2IDguODEtNi4wOSAxOS45M2gtLjA1djE2Ljg4YzAgNDEuNDItNDkuMDEgOTUuMDQtOTMuNDkgOTUuMDQtNTIgMC0xMjIuNzUtMS40NS0xNTYuMzcgMjkuMTd2Mi41MWM5LjQyIDE3LjEyIDIwLjU4IDMzLjE3IDMzLjE4IDQ3Ljk3QzQ1LjcgMzgwLjI2IDg0Ljc3IDM2MC40IDE0MS4yIDM2MGM0NS42OCAxLjAyIDc5LjAzIDIwLjMzIDkwLjc2IDQwLjg3LjAxLjAxLS4wMS4wNCAwIC4wNSA3LjY3IDIuMTQgMTUuODUgMy4yMyAyNC4wNCAzLjIxIDguMTkuMDIgMTYuMzctMS4wNyAyNC4wNC0zLjIxLjAxLS4wMS0uMDEtLjA0IDAtLjA1IDExLjc0LTIwLjU0IDQ1LjA4LTM5Ljg1IDkwLjc2LTQwLjg3IDU2LjQzLjM5IDk1LjQ5IDIwLjI2IDEwOC4wMiA0MS4zNSAxMi42LTE0LjggMjMuNzYtMzAuODYgMzMuMTgtNDcuOTd2LTIuNTFjLTMzLjYxLTMwLjYyLTEwNC4zNy0yOS4xNy0xNTYuMzctMjkuMTctNDQuNDggMC05My40OS01My42Mi05My40OS05NS4wNHYtMTYuODhoLS4wNWMtLjIzLTExLjEyLTIuODYtMTkuOTMtNi4wOS0xOS45M3ptMCA5Ni41OWMyMi40MiAwIDQwLjYgMTguMTggNDAuNiA0MC42cy0xOC4xOCA0MC42NS00MC42IDQwLjY1LTQwLjYtMTguMjMtNDAuNi00MC42NWMwLTIyLjQyIDE4LjE4LTQwLjYgNDAuNi00MC42em0wIDcuNjRjLTE4LjE5IDAtMzIuOTYgMTQuNzctMzIuOTYgMzIuOTZTMjM3LjgxIDM2MCAyNTYgMzYwczMyLjk2LTE0Ljc3IDMyLjk2LTMyLjk2LTE0Ljc3LTMyLjk2LTMyLjk2LTMyLjk2em0wIDYuMTRjMTQuODEgMCAyNi44MiAxMi4wMSAyNi44MiAyNi44MnMtMTIuMDEgMjYuODItMjYuODIgMjYuODItMjYuODItMTIuMDEtMjYuODItMjYuODIgMTIuMDEtMjYuODIgMjYuODItMjYuODJ6bS0xMTQuOCA2Ni42N2MtMTAuMTkuMDctMjEuNi4zNi0zMC41IDEuNjYuNDMgNC40MiAxLjUxIDE4LjYzIDcuMTEgMjkuNzYgOS4xMS0yLjU2IDE4LjM2LTMuOSAyNy42Mi0zLjkgNDEuMjguOTQgNzEuNDggMzQuMzUgNzguMjYgNzQuNDdsLjExIDQuN2MxMC40IDEuOTEgMjEuMTkgMi45NCAzMi4yMSAyLjk0IDExLjAzIDAgMjEuODEtMS4wMiAzMi4yMS0yLjk0bC4xMS00LjdjNi43OC00MC4xMiAzNi45OC03My41MyA3OC4yNi03NC40NyA5LjI2IDAgMTguNTEgMS4zNCAyNy42MiAzLjkgNS42LTExLjEzIDYuNjgtMjUuMzQgNy4xMS0yOS43Ni04LjktMS4zLTIwLjMyLTEuNTgtMzAuNS0xLjY2LTE4Ljc2LjQyLTM1LjE5IDQuMTctNDguNjEgOS42Ny0xMi41NCAxNi4wMy0yOS4xNiAzMC4wMy00OS41OCAzMy4wNy0uMDkuMDItLjE3LjA0LS4yNy4wNS0uMDUuMDEtLjExLjA0LS4xNi4wNS01LjI0IDEuMDctMTAuNjMgMS42LTE2LjE5IDEuNi01LjU1IDAtMTAuOTUtLjUzLTE2LjE5LTEuNi0uMDUtLjAxLS4xMS0uMDQtLjE2LS4wNS0uMS0uMDItLjE3LS4wNC0uMjctLjA1LTIwLjQyLTMuMDMtMzcuMDMtMTcuMDQtNDkuNTgtMzMuMDctMTMuNDItNS40OS0yOS44Ni05LjI1LTQ4LjYxLTkuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdldFBvY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcuNiA2NGgtMzY3QzE4LjUgNjQgMCA4Mi41IDAgMTA0LjZ2MTM1LjJDMCAzNjQuNSA5OS43IDQ2NCAyMjQuMiA0NjRjMTI0IDAgMjIzLjgtOTkuNSAyMjMuOC0yMjQuMlYxMDQuNmMwLTIyLjQtMTcuNy00MC42LTQwLjQtNDAuNnptLTE2MiAyNjguNWMtMTIuNCAxMS44LTMxLjQgMTEuMS00Mi40IDBDODkuNSAyMjMuNiA4OC4zIDIyNy40IDg4LjMgMjA5LjNjMC0xNi45IDEzLjgtMzAuNyAzMC43LTMwLjcgMTcgMCAxNi4xIDMuOCAxMDUuMiA4OS4zIDkwLjYtODYuOSA4OC42LTg5LjMgMTA1LjUtODkuMyAxNi45IDAgMzAuNyAxMy44IDMwLjcgMzAuNyAwIDE3LjgtMi45IDE1LjctMTE0LjggMTIzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NyA4QzEyMCA4IDkgMTE5IDkgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzk0IDggMjU3IDh6bS00OS41IDM3NC44TDgxLjggMjU3LjFsMTI1LjctMTI1LjcgMzUuMiAzNS40LTI0LjIgMjQuMi0xMS4xLTExLjEtNzcuMiA3Ny4yIDc3LjIgNzcuMiAyNi42LTI2LjYtNTMuMS01Mi45IDI0LjQtMjQuNCA3Ny4yIDc3LjItNzUgNzUuMnptOTktMi4ybC0zNS4yLTM1LjIgMjQuMS0yNC40IDExLjEgMTEuMSA3Ny4yLTc3LjItNzcuMi03Ny4yLTI2LjUgMjYuNSA1My4xIDUyLjktMjQuNCAyNC40LTc3LjItNzcuMiA3NS03NUw0MzIuMiAyNTUgMzA2LjUgMzgwLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OS4yIDIzMC40bDEwMi40IDEwMi40LTEwMi40IDEwMi40TDAgMjU2IDE3OS4yIDc2LjhsNDQuOCA0NC44LTI1LjYgMjUuNi0xOS4yLTE5LjItMTI4IDEyOCAxMjggMTI4IDUxLjUtNTEuNS03Ny4xLTc2LjUgMjUuNi0yNS42ek0zMzIuOCA3Ni44TDIzMC40IDE3OS4ybDEwMi40IDEwMi40IDI1LjYtMjUuNi03Ny4xLTc2LjUgNTEuNS01MS41IDEyOCAxMjgtMTI4IDEyOC0xOS4yLTE5LjItMjUuNiAyNS42IDQ0LjggNDQuOEw1MTIgMjU2IDMzMi44IDc2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzkuNTUgMjM2LjA1TDI0NCA0MC40NWEyOC44NyAyOC44NyAwIDAgMC00MC44MSAwbC00MC42NiA0MC42MyA1MS41MiA1MS41MmMyNy4wNi05LjE0IDUyLjY4IDE2Ljc3IDQzLjM5IDQzLjY4bDQ5LjY2IDQ5LjY2YzM0LjIzLTExLjggNjEuMTggMzEgMzUuNDcgNTYuNjktMjYuNDkgMjYuNDktNzAuMjEtMi44Ny01Ni0zNy4zNEwyNDAuMjIgMTk5djEyMS44NWMyNS4zIDEyLjU0IDIyLjI2IDQxLjg1IDkuMDggNTVhMzQuMzQgMzQuMzQgMCAwIDEtNDguNTUgMGMtMTcuNTctMTcuNi0xMS4wNy00Ni45MSAxMS4yNS01NnYtMTIzYy0yMC44LTguNTEtMjQuNi0zMC43NC0xOC42NC00NUwxNDIuNTcgMTAxIDguNDUgMjM1LjE0YTI4Ljg2IDI4Ljg2IDAgMCAwIDAgNDAuODFsMTk1LjYxIDE5NS42YTI4Ljg2IDI4Ljg2IDAgMCAwIDQwLjggMGwxOTQuNjktMTk0LjY5YTI4Ljg2IDI4Ljg2IDAgMCAwIDAtNDAuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYuMjkgMTU4LjM5SDEzN0M5NyAxNDcuOSA2LjUxIDE1MC42MyA2LjUxIDIzMy4xOGMwIDMwLjA5IDE1IDUxLjIzIDM1IDYxLTI1LjEgMjMtMzcgMzMuODUtMzcgNDkuMjEgMCAxMSA0LjQ3IDIxLjE0IDE3Ljg5IDI2LjgxQzguMTMgMzgzLjYxIDAgMzkzLjM1IDAgNDExLjY1YzAgMzIuMTEgMjguMDUgNTAuODIgMTAxLjYzIDUwLjgyIDcwLjc1IDAgMTExLjc5LTI2LjQyIDExMS43OS03My4xOCAwLTU4LjY2LTQ1LjE2LTU2LjUtMTUxLjYzLTYzbDEzLjQzLTIxLjU1YzI3LjI3IDcuNTggMTE4LjcgMTAgMTE4LjctNjcuODkgMC0xOC43LTcuNzMtMzEuNzEtMTUtNDEuMDdsMzcuNDEtMi44NHptLTYzLjQyIDI0MS45YzAgMzIuMDYtMTA0Ljg5IDMyLjEtMTA0Ljg5IDIuNDMgMC04LjE0IDUuMjctMTUgMTAuNTctMjEuNTQgNzcuNzEgNS4zIDk0LjMyIDMuMzcgOTQuMzIgMTkuMTF6bS01MC44MS0xMzQuNThjLTUyLjggMC01MC40Ni03MS4xNiAxLjItNzEuMTYgNDkuNTQgMCA1MC44MiA3MS4xNi0xLjIgNzEuMTZ6bTEzMy4zIDEwMC41MXYtMzIuMWMyNi43NS0zLjY2IDI3LjI0LTIgMjcuMjQtMTFWMjAzLjYxYzAtOC41LTIuMDUtNy4zOC0yNy4yNC0xNi4yNmw0LjQ3LTMyLjkySDMyNHYxNjguNzFjMCA2LjUxLjQgNy4zMiA2LjUxIDguMTRsMjAuNzMgMi44NHYzMi4xem01Mi40NS0yNDQuMzFjLTIzLjE3IDAtMzYuNTktMTMuNDMtMzYuNTktMzYuNjFzMTMuNDItMzUuNzcgMzYuNTktMzUuNzdjMjMuNTggMCAzNyAxMi42MiAzNyAzNS43N3MtMTMuNDIgMzYuNjEtMzcgMzYuNjF6TTUxMiAzNTAuNDZjLTE3LjQ5IDguNTMtNDMuMSAxNi4yNi02Ni4yOCAxNi4yNi00OC4zOCAwLTY2LjY3LTE5LjUtNjYuNjctNjUuNDZWMTk0Ljc1YzAtNS40MiAxLjA1LTQuMDYtMzEuNzEtNC4wNlYxNTQuNWMzNS43OC00LjA3IDUwLTIyIDU0LjQ3LTY2LjI3aDM4LjYzYzAgNjUuODMtMS4zNCA2MS44MSAzLjI2IDYxLjgxSDUwMXY0MC42NWgtNjAuNTZ2OTcuMTVjMCA2LjkyLTQuOTIgNTEuNDEgNjAuNTcgMjYuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMSAzMjguN2MwIDIwLjktMTAuOSA1NS4xLTM2LjcgNTUuMXMtMzYuNy0zNC4yLTM2LjctNTUuMSAxMC45LTU1LjEgMzYuNy01NS4xIDM2LjcgMzQuMiAzNi43IDU1LjF6TTQ4MCAyNzguMmMwIDMxLjktMy4yIDY1LjctMTcuNSA5NS0zNy45IDc2LjYtMTQyLjEgNzQuOC0yMTYuNyA3NC44LTc1LjggMC0xODYuMiAyLjctMjI1LjYtNzQuOC0xNC42LTI5LTIwLjItNjMuMS0yMC4yLTk1IDAtNDEuOSAxMy45LTgxLjUgNDEuNS0xMTMuNi01LjItMTUuOC03LjctMzIuNC03LjctNDguOCAwLTIxLjUgNC45LTMyLjMgMTQuNi01MS44IDQ1LjMgMCA3NC4zIDkgMTA4LjggMzYgMjktNi45IDU4LjgtMTAgODguNy0xMCAyNyAwIDU0LjIgMi45IDgwLjQgOS4yIDM0LTI2LjcgNjMtMzUuMiAxMDcuOC0zNS4yIDkuOCAxOS41IDE0LjYgMzAuMyAxNC42IDUxLjggMCAxNi40LTIuNiAzMi43LTcuNyA0OC4yIDI3LjUgMzIuNCAzOSA3Mi4zIDM5IDExNC4yem0tNjQuMyA1MC41YzAtNDMuOS0yNi43LTgyLjYtNzMuNS04Mi42LTE4LjkgMC0zNyAzLjQtNTYgNi0xNC45IDIuMy0yOS44IDMuMi00NS4xIDMuMi0xNS4yIDAtMzAuMS0uOS00NS4xLTMuMi0xOC43LTIuNi0zNy02LTU2LTYtNDYuOCAwLTczLjUgMzguNy03My41IDgyLjYgMCA4Ny44IDgwLjQgMTAxLjMgMTUwLjQgMTAxLjNoNDguMmM3MC4zIDAgMTUwLjYtMTMuNCAxNTAuNi0xMDEuM3ptLTgyLjYtNTUuMWMtMjUuOCAwLTM2LjcgMzQuMi0zNi43IDU1LjFzMTAuOSA1NS4xIDM2LjcgNTUuMSAzNi43LTM0LjIgMzYuNy01NS4xLTEwLjktNTUuMS0zNi43LTU1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUuOSAzOTcuNGMwIDItMi4zIDMuNi01LjIgMy42LTMuMy4zLTUuNi0xLjMtNS42LTMuNiAwLTIgMi4zLTMuNiA1LjItMy42IDMtLjMgNS42IDEuMyA1LjYgMy42em0tMzEuMS00LjVjLS43IDIgMS4zIDQuMyA0LjMgNC45IDIuNiAxIDUuNiAwIDYuMi0ycy0xLjMtNC4zLTQuMy01LjJjLTIuNi0uNy01LjUuMy02LjIgMi4zem00NC4yLTEuN2MtMi45LjctNC45IDIuNi00LjYgNC45LjMgMiAyLjkgMy4zIDUuOSAyLjYgMi45LS43IDQuOS0yLjYgNC42LTQuNi0uMy0xLjktMy0zLjItNS45LTIuOXpNMjQ0LjggOEMxMDYuMSA4IDAgMTEzLjMgMCAyNTJjMCAxMTAuOSA2OS44IDIwNS44IDE2OS41IDIzOS4yIDEyLjggMi4zIDE3LjMtNS42IDE3LjMtMTIuMSAwLTYuMi0uMy00MC40LS4zLTYxLjQgMCAwLTcwIDE1LTg0LjctMjkuOCAwIDAtMTEuNC0yOS4xLTI3LjgtMzYuNiAwIDAtMjIuOS0xNS43IDEuNi0xNS40IDAgMCAyNC45IDIgMzguNiAyNS44IDIxLjkgMzguNiA1OC42IDI3LjUgNzIuOSAyMC45IDIuMy0xNiA4LjgtMjcuMSAxNi0zMy43LTU1LjktNi4yLTExMi4zLTE0LjMtMTEyLjMtMTEwLjUgMC0yNy41IDcuNi00MS4zIDIzLjYtNTguOS0yLjYtNi41LTExLjEtMzMuMyAyLjYtNjcuOSAyMC45LTYuNSA2OSAyNyA2OSAyNyAyMC01LjYgNDEuNS04LjUgNjIuOC04LjVzNDIuOCAyLjkgNjIuOCA4LjVjMCAwIDQ4LjEtMzMuNiA2OS0yNyAxMy43IDM0LjcgNS4yIDYxLjQgMi42IDY3LjkgMTYgMTcuNyAyNS44IDMxLjUgMjUuOCA1OC45IDAgOTYuNS01OC45IDEwNC4yLTExNC44IDExMC41IDkuMiA3LjkgMTcgMjIuOSAxNyA0Ni40IDAgMzMuNy0uMyA3NS40LS4zIDgzLjYgMCA2LjUgNC42IDE0LjQgMTcuMyAxMi4xQzQyOC4yIDQ1Ny44IDQ5NiAzNjIuOSA0OTYgMjUyIDQ5NiAxMTMuMyAzODMuNSA4IDI0NC44IDh6TTk3LjIgMzUyLjljLTEuMyAxLTEgMy4zLjcgNS4yIDEuNiAxLjYgMy45IDIuMyA1LjIgMSAxLjMtMSAxLTMuMy0uNy01LjItMS42LTEuNi0zLjktMi4zLTUuMi0xem0tMTAuOC04LjFjLS43IDEuMy4zIDIuOSAyLjMgMy45IDEuNiAxIDMuNi43IDQuMy0uNy43LTEuMy0uMy0yLjktMi4zLTMuOS0yLS42LTMuNi0uMy00LjMuN3ptMzIuNCAzNS42Yy0xLjYgMS4zLTEgNC4zIDEuMyA2LjIgMi4zIDIuMyA1LjIgMi42IDYuNSAxIDEuMy0xLjMuNy00LjMtMS4zLTYuMi0yLjItMi4zLTUuMi0yLjYtNi41LTF6bS0xMS40LTE0LjdjLTEuNiAxLTEuNiAzLjYgMCA1LjkgMS42IDIuMyA0LjMgMy4zIDUuNiAyLjMgMS42LTEuMyAxLjYtMy45IDAtNi4yLTEuNC0yLjMtNC0zLjMtNS42LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGtyYWtlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjUuNyAxMTguMWMtMi4zLTYuMS05LjMtOS4yLTE1LjMtNi42LTUuNyAyLjQtOC41IDguOS02LjMgMTQuNiAxMC45IDI5IDE2LjkgNjAuNSAxNi45IDkzLjMgMCAxMzQuNi0xMDAuMyAyNDUuNy0yMzAuMiAyNjIuN1YzNTguNGM3LjktMS41IDE1LjUtMy42IDIzLTYuMnYxMDRjMTA2LjctMjUuOSAxODUuOS0xMjIuMSAxODUuOS0yMzYuOCAwLTkxLjgtNTAuOC0xNzEuOC0xMjUuOC0yMTMuMy01LjctMy4yLTEzLS45LTE1LjkgNS0yLjcgNS41LS42IDEyLjIgNC43IDE1LjEgNjcuOSAzNy42IDExMy45IDExMCAxMTMuOSAxOTMuMiAwIDkzLjMtNTcuOSAxNzMuMS0xMzkuOCAyMDUuNHYtOTIuMmMxNC4yLTQuNSAyNC45LTE3LjcgMjQuOS0zMy41IDAtMTMuMS02LjgtMjQuNC0xNy4zLTMwLjUgOC4zLTc5LjUgNDQuNS01OC42IDQ0LjUtODMuOVYxNzBjMC0zOC04Ny45LTE2MS44LTEyOS0xNjQuNy0yLjUtLjItNS0uMi03LjYgMEMyNTEuMSA4LjMgMTYzLjIgMTMyIDE2My4yIDE3MHYxNC44YzAgMjUuMyAzNi4zIDQuMyA0NC41IDgzLjktMTAuNiA2LjEtMTcuMyAxNy40LTE3LjMgMzAuNSAwIDE1LjggMTAuNiAyOSAyNC44IDMzLjV2OTIuMmMtODEuOS0zMi4yLTEzOS44LTExMi0xMzkuOC0yMDUuNCAwLTgzLjEgNDYtMTU1LjUgMTEzLjktMTkzLjIgNS40LTMgNy40LTkuNiA0LjctMTUuMS0yLjktNS45LTEwLjEtOC4yLTE1LjktNS03NSA0MS41LTEyNS44IDEyMS41LTEyNS44IDIxMy4zIDAgMTE0LjcgNzkuMiAyMTAuOCAxODUuOSAyMzYuOHYtMTA0YzcuNiAyLjUgMTUuMSA0LjYgMjMgNi4ydjEyMy43QzEzMS40IDQ2NS4yIDMxIDM1NC4xIDMxIDIxOS41YzAtMzIuOCA2LTY0LjMgMTYuOS05My4zIDIuMi01LjgtLjYtMTIuMi02LjMtMTQuNi02LTIuNi0xMyAuNC0xNS4zIDYuNkMxNC41IDE0OS43IDggMTgzLjggOCAyMTkuNWMwIDE1NS4xIDEyMi42IDI4MS42IDI3Ni4zIDI4Ny44VjM2MS40YzYuOC40IDE1IC41IDIzLjQgMHYxNDUuOEM0NjEuNCA1MDEuMSA1ODQgMzc0LjYgNTg0IDIxOS41YzAtMzUuNy02LjUtNjkuOC0xOC4zLTEwMS40ek0zNjUuOSAyNzUuNWMxMyAwIDIzLjcgMTAuNSAyMy43IDIzLjcgMCAxMy4xLTEwLjYgMjMuNy0yMy43IDIzLjctMTMgMC0yMy43LTEwLjUtMjMuNy0yMy43IDAtMTMuMSAxMC42LTIzLjcgMjMuNy0yMy43em0tMTM5LjggNDcuM2MtMTMuMiAwLTIzLjctMTAuNy0yMy43LTIzLjdzMTAuNS0yMy43IDIzLjctMjMuN2MxMy4xIDAgMjMuNyAxMC42IDIzLjcgMjMuNyAwIDEzLTEwLjUgMjMuNy0yMy43IDIzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGxhYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDMuNSAyMDQuNkw1MDIuOCAyMDIuOEw0MzMuMSAyMS4wMkM0MzEuNyAxNy40NSA0MjkuMiAxNC40MyA0MjUuOSAxMi4zOEM0MjMuNSAxMC44MyA0MjAuOCA5Ljg2NSA0MTcuOSA5LjU3QzQxNSA5LjI3NSA0MTIuMiA5LjY1MyA0MDkuNSAxMC42OEM0MDYuOCAxMS43IDQwNC40IDEzLjM0IDQwMi40IDE1LjQ2QzQwMC41IDE3LjU4IDM5OS4xIDIwLjEzIDM5OC4zIDIyLjlMMzUxLjMgMTY2LjlIMTYwLjhMMTEzLjcgMjIuOUMxMTIuOSAyMC4xMyAxMTEuNSAxNy41OSAxMDkuNiAxNS40N0MxMDcuNiAxMy4zNSAxMDUuMiAxMS43MiAxMDIuNSAxMC43Qzk5Ljg2IDkuNjc1IDk2Ljk4IDkuMjk1IDk0LjEyIDkuNTg3QzkxLjI2IDkuODc4IDg4LjUxIDEwLjgzIDg2LjA4IDEyLjM4QzgyLjg0IDE0LjQzIDgwLjMzIDE3LjQ1IDc4LjkyIDIxLjAyTDkuMjY3IDIwMi44TDguNTQzIDIwNC42Qy0xLjQ4NCAyMzAuOC0yLjcyIDI1OS42IDUuMDIzIDI4Ni42QzEyLjc3IDMxMy41IDI5LjA3IDMzNy4zIDUxLjQ3IDM1NC4yTDUxLjc0IDM1NC40TDUyLjMzIDM1NC44TDE1OC4zIDQzNC4zTDIxMC45IDQ3NEwyNDIuOSA0OTguMkMyNDYuNiA1MDAuMSAyNTEuMiA1MDIuNSAyNTUuOSA1MDIuNUMyNjAuNiA1MDIuNSAyNjUuMiA1MDAuMSAyNjguOSA0OTguMkwzMDAuOSA0NzRMMzUzLjUgNDM0LjNMNDYwLjIgMzU0LjRMNDYwLjUgMzU0LjFDNDgyLjkgMzM3LjIgNDk5LjIgMzEzLjUgNTA2LjEgMjg2LjZDNTE0LjcgMjU5LjYgNTEzLjUgMjMwLjggNTAzLjUgMjA0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ni40IDMyMi41SDE2VjBoNTAuNHYzMjIuNXpNMTY2LjkgNzYuMWgtNTAuNFY1MTJoNTAuNFY3Ni4xem0xMDAuNiAwaC01MC40VjUxMmg1MC40Vjc2LjF6TTM2OCA3NmgtNTAuNHYyNDdIMzY4Vjc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGlkZUcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3LjEgMjExLjJjLTMuNS0xLjQtMTEuNi0zLjgtMTUuNC0zLjgtMzcuMSAwLTYyLjIgMTYuOC05My41IDM0LjVsLS45LS45YzctNDcuMyAyMy41LTkxLjkgMjMuNS0xNDAuNEMzMjAuOCAyOS4xIDI4Mi42IDAgMjEyLjQgMCA5Ny4zIDAgMzkgMTEzLjcgMzkgMTk4LjQgMzkgMjg2LjMgOTAuMyAzMzUgMTc3LjYgMzM1YzEyIDAgMTEtMSAxMSAzLjgtMTYuOSAxMjguOS05MC44IDEzMy4xLTkwLjggOTQuNiAwLTM5LjIgNDUtNTguNiA0NS41LTYxLS4zLTEyLjItNDctMjcuNi01OC45LTI3LjYtMzMuOS4xLTUyLjQgNTEuMi01Mi40IDc5LjNDMzIgNDc2IDY0LjggNTEyIDExNy41IDUxMmM3Ny40IDAgMTM0LTc3LjggMTUxLjQtMTQ1LjQgMTUuMS02MC41IDExLjItNjMuMyAxOS43LTY3LjYgMzIuMi0xNi4yIDU3LjUtMjcgOTMuOC0yNyAxNy44IDAgMzAuNSAzLjcgNTguOSA4LjQgMi45IDAgNi43LTIuOSA2LjctNS44IDAtOC0zMy40LTYwLjUtNDAuOS02My40em0tMTc1LjMtODQuNGMtOS4zIDQ0LjctMTguNiA4OS42LTI3LjggMTM0LjMtMi4zIDEwLjItMTMuMyA3LjgtMjIgNy44LTM4LjMgMC00OS00MS44LTQ5LTczLjEgMC00NyAxOC0xMDkuMyA2MS44LTEzMy40IDctNC4xIDE0LjgtNi43IDIyLjYtNi43IDE4LjYgMCAyMCAxMy4zIDIwIDI4LjctLjEgMTQuMy0yLjcgMjguNS01LjYgNDIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUyLjggMTQ4LjZjMCA4LjgtMS42IDE3LjctMy40IDI2LjQtNS44IDI3LjgtMTEuNiA1NS44LTE3LjMgODMuNi0xLjQgNi4zLTguMyA0LjktMTMuNyA0LjktMjMuOCAwLTMwLjUtMjYtMzAuNS00NS41IDAtMjkuMyAxMS4yLTY4LjEgMzguNS04My4xIDQuMy0yLjUgOS4yLTQuMiAxNC4xLTQuMiAxMS40IDAgMTIuMyA4LjMgMTIuMyAxNy45ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS02NCAxODdjMC01LjEtMjAuOC0zNy43LTI1LjUtMzkuNS0yLjItLjktNy4yLTIuMy05LjYtMi4zLTIzLjEgMC0zOC43IDEwLjUtNTguMiAyMS41bC0uNS0uNWM0LjMtMjkuNCAxNC42LTU3LjIgMTQuNi04Ny40IDAtNDQuNi0yMy44LTYyLjctNjcuNS02Mi43LTcxLjcgMC0xMDggNzAuOC0xMDggMTIzLjUgMCA1NC43IDMyIDg1IDg2LjMgODUgNy41IDAgNi45LS42IDYuOSAyLjMtMTAuNSA4MC4zLTU2LjUgODIuOS01Ni41IDU4LjkgMC0yNC40IDI4LTM2LjUgMjguMy0zOC0uMi03LjYtMjkuMy0xNy4yLTM2LjctMTcuMi0yMS4xIDAtMzIuNyAzMy0zMi43IDUwLjYgMCAzMi4zIDIwLjQgNTQuNyA1My4zIDU0LjcgNDguMiAwIDgzLjQtNDkuNyA5NC4zLTkxLjcgOS40LTM3LjcgNy0zOS40IDEyLjMtNDIuMSAyMC0xMC4xIDM1LjgtMTYuOCA1OC40LTE2LjggMTEuMSAwIDE5IDIuMyAzNi43IDUuMiAxLjguMSA0LjEtMS43IDQuMS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvZm9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDAwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjQgMzE5LjhoLTEzLjJ2MzQuN2MtMjQuNSAyMy4xLTU2LjMgMzUuOC04OS45IDM1LjgtNzMuMiAwLTEzMi40LTYwLjItMTMyLjQtMTM0LjQgMC03NC4xIDU5LjItMTM0LjQgMTMyLjQtMTM0LjQgMzUuMyAwIDY4LjYgMTQgOTMuNiAzOS40bDYyLjMtNjMuM0MzMzUgNTUuMyAyNzkuNyAzMiAyMjAuNyAzMiA5OCAzMiAwIDEzMi42IDAgMjU2YzAgMTIyLjUgOTcgMjI0IDIyMC43IDIyNCA2My4yIDAgMTI0LjUtMjYuMiAxNzEtODIuNS0yLTI3LjYtMTMuNC03Ny43LTY3LjctNzcuN3ptLTEyLjEtMTEyLjVIMjA1LjZ2ODlIMzI0YzMzLjUgMCA2MC41IDE1LjEgNzYgNDEuOHYtMzAuNmMwLTY1LjItNDAuNC0xMDAuMi04OC4xLTEwMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb2xhbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwLjEgMTk0LjhDMzg5LjIgMTk3LjYgMzgwLjIgMTk5LjEgMzcxIDIwMi40QzM2My43IDIwNC4zIDM1Ni4zIDIwNi4zIDM0Ny44IDIwOC41TDM0Ny4yIDIwOC42QzM0MyAyMDkuOCAzNDIuNiAyMDkuOSAzMzguNyAyMDUuNEMzMzQgMjAwLjEgMzMwLjYgMTk2LjcgMzI0LjEgMTkzLjVDMzA0LjQgMTgzLjkgMjg1LjQgMTg2LjcgMjY3LjcgMTk4LjJDMjQ2LjUgMjExLjkgMjM1LjYgMjMyLjIgMjM1LjkgMjU3LjRDMjM2LjIgMjgyLjQgMjUzLjMgMzAyLjkgMjc3LjEgMzA2LjNDMjk5LjEgMzA5LjEgMzE2LjkgMzAxLjcgMzMwLjkgMjg1LjhDMzMzIDI4My4yIDMzNC45IDI4MC41IDMzNyAyNzcuNVYyNzcuNUwzMzcgMjc3LjVDMzM3LjggMjc2LjUgMzM4LjUgMjc1LjQgMzM5LjMgMjc0LjJIMjc5LjJDMjcyLjcgMjc0LjIgMjcxLjEgMjcwLjIgMjczLjMgMjY0LjlDMjc3LjMgMjU1LjIgMjg0LjggMjM5IDI4OS4yIDIzMC45QzI5MC4xIDIyOS4xIDI5Mi4zIDIyNS4xIDI5Ni4xIDIyNS4xSDM5Ny4yQzQwMS43IDIxMS43IDQwOSAxOTguMiA0MTguOCAxODUuNEM0NDEuNSAxNTUuNSA0NjguMSAxMzkuOSA1MDYgMTMzLjRDNTM3LjggMTI3LjggNTY3LjcgMTMwLjkgNTk0LjkgMTQ5LjNDNjE5LjUgMTY2LjEgNjM0LjcgMTg4LjkgNjM4LjggMjE4LjhDNjQ0LjEgMjYwLjkgNjMxLjkgMjk1LjEgNjAyLjEgMzI0LjRDNTgyLjQgMzQ1LjMgNTU3LjIgMzU4LjQgNTI4LjIgMzY0LjNDNTIyLjYgMzY1LjMgNTE3LjEgMzY1LjggNTExLjcgMzY2LjNDNTA4LjggMzY2LjUgNTA2IDM2Ni44IDUwMy4yIDM2Ny4xQzQ3NC45IDM2Ni41IDQ0OSAzNTguNCA0MjcuMiAzMzkuN0M0MTEuOSAzMjYuNCA0MDEuMyAzMTAuMSAzOTYuMSAyOTEuMkMzOTIuNCAyOTguNSAzODguMSAzMDUuNiAzODIuMSAzMTIuM0MzNjAuNSAzNDEuOSAzMzEuMiAzNjAuMyAyOTQuMiAzNjUuMkMyNjMuNiAzNjkuMyAyMzUuMyAzNjMuNCAyMTAuMyAzNDQuN0MxODcuMyAzMjcuMiAxNzQuMiAzMDQuMiAxNzAuOCAyNzUuNUMxNjYuNyAyNDEuNSAxNzYuNyAyMTAuMSAxOTcuMiAxODQuMkMyMTkuNCAxNTUuMiAyNDguNyAxMzYuOCAyODQuNSAxMzAuM0MzMTMuOCAxMjQuMSAzNDEuOCAxMjguNCAzNjcuMSAxNDUuNkMzODMuNiAxNTYuNSAzOTUuNCAxNzEuNCA0MDMuMiAxODkuNUM0MDUuMSAxOTIuMyA0MDMuOCAxOTMuOSA0MDAuMSAxOTQuOHpNNDguMyAyMDAuNEM0Ny4wNSAyMDAuNCA0Ni43NCAxOTkuOCA0Ny4zNiAxOTguOEw1My45MSAxOTAuNEM1NC41MyAxODkuNSA1Ni4wOSAxODguOSA1Ny4zNCAxODguOUgxNjguNkMxNjkuOCAxODguOSAxNzAuMSAxODkuOCAxNjkuNSAxOTAuN0wxNjQuMiAxOTguOEMxNjMuNiAxOTkuOCAxNjIgMjAwLjcgMTYxLjEgMjAwLjdMNDguMyAyMDAuNHpNMS4yNDYgMjI5LjFDMCAyMjkuMS0uMzExNiAyMjguNCAuMzExNiAyMjcuNUw2Ljg1NSAyMTkuMUM3LjQ3OSAyMTguMiA5LjAzNyAyMTcuNSAxMC4yOCAyMTcuNUgxNTIuNEMxNTMuNiAyMTcuNSAxNTQuMiAyMTguNSAxNTMuOSAyMTkuNEwxNTEuNCAyMjYuOUMxNTEuMSAyMjguMSAxNDkuOSAyMjguOCAxNDguNiAyMjguOEwxLjI0NiAyMjkuMXpNNzUuNzIgMjU1LjlDNzUuMSAyNTYuOCA3NS40MSAyNTcuNyA3Ni42NSAyNTcuN0wxNDQuNiAyNThDMTQ1LjUgMjU4IDE0Ni44IDI1Ny4xIDE0Ni44IDI1NS45TDE0Ny40IDI0OC40QzE0Ny40IDI0Ny4xIDE0Ni44IDI0Ni4yIDE0NS41IDI0Ni4ySDgzLjJDODEuOTUgMjQ2LjIgODAuNzEgMjQ3LjEgODAuMDggMjQ4LjFMNzUuNzIgMjU1Ljl6TTU3Ny4yIDIzNy45QzU3NyAyMzUuMyA1NzYuOSAyMzMuMSA1NzYuNSAyMzAuOUM1NzAuOSAyMDAuMSA1NDIuNSAxODIuNiA1MTIuOSAxODkuNUM0ODMuOSAxOTYgNDY1LjIgMjE0LjQgNDU4LjQgMjQzLjdDNDUyLjggMjY4IDQ2NC42IDI5Mi42IDQ4NyAzMDIuNkM1MDQuMiAzMTAuMSA1MjEuMyAzMDkuMiA1MzcuOCAzMDAuN0M1NjIuNCAyODcuMSA1NzUuOCAyNjggNTc3LjQgMjQxLjJDNTc3LjMgMjQwIDU3Ny4zIDIzOC45IDU3Ny4yIDIzNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29kcmVhZHNHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjYgNDAzLjNoMi44YzEyLjcgMCAyNS41IDAgMzguMi4xIDEuNiAwIDMuMS0uNCAzLjYgMi4xIDcuMSAzNC45IDMwIDU0LjYgNjIuOSA2My45IDI2LjkgNy42IDU0LjEgNy44IDgxLjMgMS44IDMzLjgtNy40IDU2LTI4LjMgNjgtNjAuNCA4LTIxLjUgMTAuNy00My44IDExLTY2LjUuMS01LjguMy00Ny0uMi01Mi44bC0uOS0uM2MtLjggMS41LTEuNyAyLjktMi41IDQuNC0yMi4xIDQzLjEtNjEuMyA2Ny40LTEwNS40IDY5LjEtMTAzIDQtMTY5LjQtNTctMTcyLTE3Ni4yLS41LTIzLjcgMS44LTQ2LjkgOC4zLTY5LjdDNTguMyA0Ny43IDExMi4zLjYgMTkxLjYgMGM2MS4zLS40IDEwMS41IDM4LjcgMTE2LjIgNzAuMy41IDEuMSAxLjMgMi4zIDIuNCAxLjlWMTAuNmg0NC4zYzAgMjgwLjMuMSAzMzIuMi4xIDMzMi4yLS4xIDc4LjUtMjYuNyAxNDMuNy0xMDMgMTYyLjItNjkuNSAxNi45LTE1OSA0LjgtMTk2LTU3LjItOC0xMy41LTExLjgtMjguMy0xMy00NC41ek0xODguOSAzNi41Yy01Mi41LS41LTEwOC41IDQwLjctMTE1IDEzMy44LTQuMSA1OSAxNC44IDEyMi4yIDcxLjUgMTQ4LjYgMjcuNiAxMi45IDc0LjMgMTUgMTA4LjMtOC43IDQ3LjYtMzMuMiA2Mi43LTk3IDU0LjgtMTU0LTkuNy03MS4xLTQ3LjgtMTIwLTExOS42LTExOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29kcmVhZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk5LjkgMTkxLjJjNS4xIDM3LjMtNC43IDc5LTM1LjkgMTAwLjctMjIuMyAxNS41LTUyLjggMTQuMS03MC44IDUuNy0zNy4xLTE3LjMtNDkuNS01OC42LTQ2LjgtOTcuMiA0LjMtNjAuOSA0MC45LTg3LjkgNzUuMy04Ny41IDQ2LjktLjIgNzEuOCAzMS44IDc4LjIgNzguM3pNNDQ4IDg4djMzNmMwIDMwLjktMjUuMSA1Ni01NiA1Nkg1NmMtMzAuOSAwLTU2LTI1LjEtNTYtNTZWODhjMC0zMC45IDI1LjEtNTYgNTYtNTZoMzM2YzMwLjkgMCA1NiAyNS4xIDU2IDU2ek0zMzAgMzEzLjJzLS4xLTM0LS4xLTIxNy4zaC0yOXY0MC4zYy0uOC4zLTEuMi0uNS0xLjYtMS4yLTkuNi0yMC43LTM1LjktNDYuMy03Ni00Ni01MS45LjQtODcuMiAzMS4yLTEwMC42IDc3LjgtNC4zIDE0LjktNS44IDMwLjEtNS41IDQ1LjYgMS43IDc3LjkgNDUuMSAxMTcuOCAxMTIuNCAxMTUuMiAyOC45LTEuMSA1NC41LTE3IDY5LTQ1LjIuNS0xIDEuMS0xLjkgMS43LTIuOS4yLjEuNC4xLjYuMi4zIDMuOC4yIDMwLjcuMSAzNC41LS4yIDE0LjgtMiAyOS41LTcuMiA0My41LTcuOCAyMS0yMi4zIDM0LjctNDQuNSAzOS41LTE3LjggMy45LTM1LjYgMy44LTUzLjItMS4yLTIxLjUtNi4xLTM2LjUtMTktNDEuMS00MS44LS4zLTEuNi0xLjMtMS4zLTIuMy0xLjNoLTI2LjhjLjggMTAuNiAzLjIgMjAuMyA4LjUgMjkuMiAyNC4yIDQwLjUgODIuNyA0OC41IDEyOC4yIDM3LjQgNDkuOS0xMi4zIDY3LjMtNTQuOSA2Ny40LTEwNi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVEcml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzkgMzE0LjlMMTc1LjQgMzJoMTYxLjJsMTYzLjYgMjgyLjlIMzM5em0tMTM3LjUgMjMuNkwxMjAuOSA0ODBoMzEwLjVMNTEyIDMzOC41SDIwMS41ek0xNTQuMSA2Ny40TDAgMzM4LjUgODAuNiA0ODAgMjM3IDIwOC44IDE1NC4xIDY3LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuNzIsMjE1djQxLjI1aDU3LjFhNDkuNjYsNDkuNjYsMCwwLDEtMjEuMTQsMzIuNmMtOS41NCw2LjU1LTIxLjcyLDEwLjI4LTM2LDEwLjI4LTI3LjYsMC01MC45My0xOC45MS01OS4zLTQ0LjIyYTY1LjYxLDY1LjYxLDAsMCwxLDAtNDFsMCwwYzguMzctMjUuNDYsMzEuNy00NC4zNyw1OS4zLTQ0LjM3YTU2LjQzLDU2LjQzLDAsMCwxLDQwLjUxLDE2LjA4TDE3Ni40NywxNTVhMTAxLjI0LDEwMS4yNCwwLDAsMC03MC43NS0yNy44NCwxMDUuNTUsMTA1LjU1LDAsMCwwLTk0LjM4LDU5LjExLDEwNy42NCwxMDcuNjQsMCwwLDAsMCw5Ni4xOHYuMTVhMTA1LjQxLDEwNS40MSwwLDAsMCw5NC4zOCw1OWMyOC40NywwLDUyLjU1LTkuNTMsNzAtMjUuOTEsMjAtMTguNjEsMzEuNDEtNDYuMTUsMzEuNDEtNzguOTFBMTMzLjc2LDEzMy43NiwwLDAsMCwyMDUuMzgsMjE1Wm0zODkuNDEtNGMtMTAuMTMtOS4zOC0yMy45My0xNC4xNC00MS4zOS0xNC4xNC0yMi40NiwwLTM5LjM0LDguMzQtNTAuNSwyNC44NmwyMC44NSwxMy4yNnExMS40NS0xNywzMS4yNi0xN2EzNC4wNSwzNC4wNSwwLDAsMSwyMi43NSw4Ljc5QTI4LjE0LDI4LjE0LDAsMCwxLDQ4Ny43OSwyNDh2NS41MWMtOS4xLTUuMDctMjAuNTUtNy43NS0zNC42NC03Ljc1LTE2LjQ0LDAtMjkuNjUsMy44OC0zOS40OSwxMS43N3MtMTQuODIsMTguMzEtMTQuODIsMzEuNTZhMzkuNzQsMzkuNzQsMCwwLDAsMTMuOTQsMzEuMjdjOS4yNSw4LjM0LDIxLDEyLjUxLDM0Ljc5LDEyLjUxLDE2LjI5LDAsMjkuMjEtNy4zLDM5LTIxLjg5aDF2MTcuNzJoMjIuNjFWMjUwQzUxMC4yNSwyMzMuNDUsNTA1LjI2LDIyMC4zNCw0OTUuMTMsMjExWk00NzUuOSwzMDAuM2EzNy4zMiwzNy4zMiwwLDAsMS0yNi41NywxMS4xNkEyOC42MSwyOC42MSwwLDAsMSw0MzEsMzA1LjIxYTE5LjQxLDE5LjQxLDAsMCwxLTcuNzctMTUuNjNjMC03LDMuMjItMTIuODEsOS41NC0xNy40MnMxNC41My03LDI0LjA3LTdDNDcwLDI2NSw0ODAuMywyNjgsNDg3LjY0LDI3My45NCw0ODcuNjQsMjg0LjA3LDQ4My42OCwyOTIuODUsNDc1LjksMzAwLjNabS05My42NS0xNDJBNTUuNzEsNTUuNzEsMCwwLDAsMzQxLjc0LDE0MkgyNzkuMDdWMzI4Ljc0SDMwMi43VjI1My4xaDM5YzE2LDAsMjkuNS01LjM2LDQwLjUxLTE1LjkzLjg4LS44OSwxLjc2LTEuNzksMi42NS0yLjY4QTU0LjQ1LDU0LjQ1LDAsMCwwLDM4Mi4yNSwxNTguMjZabS0xNi41OCw2Mi4yM2EzMC42NSwzMC42NSwwLDAsMS0yMy4zNCw5LjY4SDMwMi43VjE2NWgzOS42M2EzMiwzMiwwLDAsMSwyMi42LDkuMjNBMzMuMTgsMzMuMTgsMCwwLDEsMzY1LjY3LDIyMC40OVpNNjE0LjMxLDIwMSw1NzcuNzcsMjkyLjdoLS40NUw1MzkuOSwyMDFINTE0LjIxTDU2NiwzMjAuNTVsLTI5LjM1LDY0LjMySDU2MUw2NDAsMjAxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNS4zIDIzNC4zTDEwNC42IDEzbDI4MC44IDE2MS4yLTYwLjEgNjAuMXpNNDcgMEMzNCA2LjggMjUuMyAxOS4yIDI1LjMgMzUuM3Y0NDEuM2MwIDE2LjEgOC43IDI4LjUgMjEuNyAzNS4zbDI1Ni42LTI1Nkw0NyAwem00MjUuMiAyMjUuNmwtNTguOS0zNC4xLTY1LjcgNjQuNSA2NS43IDY0LjUgNjAuMS0zNC4xYzE4LTE0LjMgMTgtNDYuNS0xLjItNjAuOHpNMTA0LjYgNDk5bDI4MC44LTE2MS4yLTYwLjEtNjAuMUwxMDQuNiA0OTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsdXNHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Ni4wNjEgMjI4LjQ5NmMxLjgzNCA5LjY5MiAzLjE0MyAxOS4zODQgMy4xNDMgMzEuOTU2QzM4OS4yMDQgMzcwLjIwNSAzMTUuNTk5IDQ0OCAyMDQuOCA0NDhjLTEwNi4wODQgMC0xOTItODUuOTE1LTE5Mi0xOTJzODUuOTE2LTE5MiAxOTItMTkyYzUxLjg2NCAwIDk1LjA4MyAxOC44NTkgMTI4LjYxMSA1MC4yOTJsLTUyLjEyNiA1MC4wM2MtMTQuMTQ1LTEzLjYyMS0zOS4wMjgtMjkuNTk5LTc2LjQ4NS0yOS41OTktNjUuNDg0IDAtMTE4LjkyIDU0LjIyMS0xMTguOTIgMTIxLjI3NyAwIDY3LjA1NiA1My40MzYgMTIxLjI3NyAxMTguOTIgMTIxLjI3NyA3NS45NjEgMCAxMDQuNTEzLTU0Ljc0NSAxMDguOTY1LTgyLjc3M0gyMDQuOHYtNjYuMDA5aDE4MS4yNjF6bTE4NS40MDYgNi40MzdWMTc5LjJoLTU2LjAwMXY1NS43MzNoLTU1LjczM3Y1Ni4wMDFoNTUuNzMzdjU1LjczM2g1Ni4wMDF2LTU1LjczM0g2MjcuMnYtNTYuMDAxaC01NS43MzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDhDMTE5LjEsOCw4LDExOS4xLDgsMjU2UzExOS4xLDUwNCwyNTYsNTA0LDUwNCwzOTIuOSw1MDQsMjU2LDM5Mi45LDgsMjU2LDhaTTE4NS4zLDM4MGExMjQsMTI0LDAsMCwxLDAtMjQ4YzMxLjMsMCw2MC4xLDExLDgzLDMyLjNsLTMzLjYsMzIuNmMtMTMuMi0xMi45LTMxLjMtMTkuMS00OS40LTE5LjEtNDIuOSwwLTc3LjIsMzUuNS03Ny4yLDc4LjFTMTQyLjMsMzM0LDE4NS4zLDMzNGMzMi42LDAsNjQuOS0xOS4xLDcwLjEtNTMuM0gxODUuM1YyMzguMUgzMDIuMmExMDkuMiwxMDkuMiwwLDAsMSwxLjksMjAuN2MwLDcwLjgtNDcuNSwxMjEuMi0xMTguOCwxMjEuMlpNNDE1LjUsMjczLjh2MzUuNUgzODBWMjczLjhIMzQ0LjVWMjM4LjNIMzgwVjIwMi44aDM1LjV2MzUuNWgzNS4ydjM1LjVaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVNjaG9sYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkwLjkgMjk4LjVjMCAwIDAgLjEgLjEgLjFjOS4yIDE5LjQgMTQuNCA0MS4xIDE0LjQgNjRDNDA1LjMgNDQ1LjEgMzM4LjUgNTEyIDI1NiA1MTJzLTE0OS4zLTY2LjktMTQ5LjMtMTQ5LjNjMC0yMi45IDUuMi00NC42IDE0LjQtNjRoMGMxLjctMy42IDMuNi03LjIgNS42LTEwLjdjNC40LTcuNiA5LjQtMTQuNyAxNS0yMS4zYzI3LjQtMzIuNiA2OC41LTUzLjMgMTE0LjQtNTMuM2MzMy42IDAgNjQuNiAxMS4xIDg5LjYgMjkuOWM5LjEgNi45IDE3LjQgMTQuNyAyNC44IDIzLjVjNS42IDYuNiAxMC42IDEzLjggMTUgMjEuM2MyIDMuNCAzLjggNyA1LjUgMTAuNXptMjYuNC0xOC44Yy0zMC4xLTU4LjQtOTEtOTguNC0xNjEuMy05OC40cy0xMzEuMiA0MC0xNjEuMyA5OC40TDAgMjAyLjcgMjU2IDAgNTEyIDIwMi43bC05NC43IDc3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTYuOCAxMjYuOGMzNy42IDYwLjYgNjQuMiAxMTMuMSA4NC4zIDE2Mi41LTguMyAzMy44LTE4LjggNjYuNS0zMS4zIDk4LjMtMTMuMi01Mi4zLTI2LjUtMTAxLjMtNTYtMTQ4LjUgNi41LTM2LjQgMi4zLTczLjYgMy0xMTIuM3pNMTA5LjMgMjAwSDE2LjFjLTYuNSAwLTEwLjUgNy41LTYuNSAxMi43QzUxLjggMjY3IDgxLjMgMzMwLjUgMTAxLjMgNDAwaDEwMy41Yy0xNi4yLTY5LjctMzguNy0xMzMuNy04Mi41LTE5My41LTMtNC04LTYuNS0xMy02LjV6bTQ3LjgtODhjNjguNSAxMDggMTMwIDIzNC41IDEzOC4yIDM2OEg0MDljLTEyLTEzOC02OC40LTI2NS0xNDMuMi0zNjhIMTU3LjF6bTI1MS44LTY4LjVjLTEuOC02LjgtOC4yLTExLjUtMTUuMi0xMS41aC04OC4zYy01LjMgMC05IDUtNy44IDEwLjMgMTMuMiA0Ni41IDIyLjMgOTUuNSAyNi41IDE0NiA0OC4yIDg2LjIgNzkuNyAxNzguMyA5MC42IDI3MC44IDE1LjgtNjAuNSAyNS4zLTEzMy41IDI1LjMtMjAzIDAtNzMuNi0xMi4xLTE0NS4xLTMxLjEtMjEyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggMjYxLjhDNDg4IDQwMy4zIDM5MS4xIDUwNCAyNDggNTA0IDExMC44IDUwNCAwIDM5My4yIDAgMjU2UzExMC44IDggMjQ4IDhjNjYuOCAwIDEyMyAyNC41IDE2Ni4zIDY0LjlsLTY3LjUgNjQuOUMyNTguNSA1Mi42IDk0LjMgMTE2LjYgOTQuMyAyNTZjMCA4Ni41IDY5LjEgMTU2LjYgMTUzLjcgMTU2LjYgOTguMiAwIDEzNS03MC40IDE0MC44LTEwNi45SDI0OHYtODUuM2gyMzYuMWMyLjMgMTIuNyAzLjkgMjQuOSAzLjkgNDEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JhdGlwYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjEgOCAwIDExOS4xIDAgMjU2czExMS4xIDI0OCAyNDggMjQ4IDI0OC0xMTEuMSAyNDgtMjQ4UzM4NC45IDggMjQ4IDh6bTExNC42IDIyNi40bC0xMTMgMTUyLjctMTEyLjctMTUyLjdjLTguNy0xMS45LTE5LjEtNTAuNCAxMy42LTcyIDI4LjEtMTguMSA1NC42LTQuMiA2OC41IDExLjkgMTUuOSAxNy45IDQ2LjYgMTYuOSA2MS43IDAgMTMuOS0xNi4xIDQwLjQtMzAgNjguMS0xMS45IDMyLjkgMjEuNiAyMi42IDYwIDEzLjggNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYXYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAxLjEgMjEyYzQuNCA0LjQgNC40IDExLjkgMCAxNi4zbC05LjcgOS43Yy00LjQgNC43LTExLjkgNC43LTE2LjYgMGwtMTAuNS0xMC41Yy00LjQtNC43LTQuNC0xMS45IDAtMTYuNmw5LjctOS43YzQuNC00LjQgMTEuOS00LjQgMTYuNiAwbDEwLjUgMTAuOHptLTMwLjItMTkuN2MzLTMgMy03LjggMC0xMC41LTIuOC0zLTcuNS0zLTEwLjUgMC0yLjggMi44LTIuOCA3LjUgMCAxMC41IDMuMSAyLjggNy44IDIuOCAxMC41IDB6bS0yNiA1LjNjLTMgMi44LTMgNy41IDAgMTAuMiAyLjggMyA3LjUgMyAxMC41IDAgMi44LTIuOCAyLjgtNy41IDAtMTAuMi0zLTMtNy43LTMtMTAuNSAwem03Mi41LTEzLjNjLTE5LjktMTQuNC0zMy44LTQzLjItMTEuOS02OC4xIDIxLjYtMjQuOSA0MC43LTE3LjIgNTkuOC44IDExLjkgMTEuMyAyOS4zIDI0LjkgMTcuMiA0OC4yLTEyLjUgMjMuNS00NS4xIDMzLjItNjUuMSAxOS4xem00Ny43LTQ0LjVjLTguOS0xMC0yMy4zIDYuOS0xNS41IDE2LjEgNy40IDkgMzIuMSAyLjQgMTUuNS0xNi4xek01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS02Ni4yIDQyLjZjMi41LTE2LjEtMjAuMi0xNi42LTI1LjItMjUuNy0xMy42LTI0LjEtMjcuNy0zNi44LTU0LjUtMzAuNCAxMS42LTggMjMuNS02LjEgMjMuNS02LjEuMy02LjQgMC0xMy05LjQtMjQuOSAzLjktMTIuNS4zLTIyLjQuMy0yMi40IDE1LjUtOC42IDI2LjgtMjQuNCAyOS4xLTQzLjIgMy42LTMxLTE4LjgtNTkuMi00OS44LTYyLjgtMjIuMS0yLjUtNDMuNyA3LjctNTQuMyAyNS43LTIzLjIgNDAuMSAxLjQgNzAuOSAyMi40IDgxLjQtMTQuNC0xLjQtMzQuMy0xMS45LTQwLjEtMzQuMy02LjYtMjUuNyAyLjgtNDkuOCA4LjktNjEuNCAwIDAtNC40LTUuOC04LTguOSAwIDAtMTMuOCAwLTI0LjYgNS4zIDExLjktMTUuMiAyNS4yLTE0LjQgMjUuMi0xNC40IDAtNi40LS42LTE0LjktMy42LTIxLjYtNS40LTExLTIzLjgtMTIuOS0zMS43IDIuOC4xLS4yLjMtLjQuNC0uNS01IDExLjktMS4xIDU1LjkgMTYuOSA4Ny4yLTIuNSAxLjQtOS4xIDYuMS0xMyAxMC0yMS42IDkuNy01Ni4yIDYwLjMtNTYuMiA2MC4zLTI4LjIgMTAuOC03Ny4yIDUwLjktNzAuNiA3OS43LjMgMyAxLjQgNS41IDMgNy41LTIuOCAyLjItNS41IDUtOC4zIDguMy0xMS45IDEzLjgtNS4zIDM1LjIgMTcuNyAyNC40IDE1LjgtNy4yIDI5LjYtMjAuMiAzNi4zLTMwLjQgMCAwLTUuNS01LTE2LjMtNC40IDI3LjctNi42IDM0LjMtOS40IDQ2LjItOS4xIDggMy45IDgtMzQuMyA4LTM0LjMgMC0xNC43LTIuMi0zMS0xMS4xLTQxLjUgMTIuNSAxMi4yIDI5LjEgMzIuNyAyOCA2MC42LS44IDE4LjMtMTUuMiAyMy0xNS4yIDIzLTkuMSAxNi42LTQzLjIgNjUuOS0zMC40IDEwNiAwIDAtOS43LTE0LjktMTAuMi0yMi4xLTE3LjQgMTkuNC00Ni41IDUyLjMtMjQuNiA2NC41IDI2LjYgMTQuNyAxMDguOC04OC42IDEyNi4yLTE0Mi4zIDM0LjYtMjAuOCA1NS40LTQ3LjMgNjMuOS02NSAyMiA0My41IDk1LjMgOTQuNSAxMDEuMSA1OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpcGZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyLjUgMzAxLjRjMC03My44IDEwNS4xLTEyMi41IDEwNS4xLTIwMyAwLTQ3LjEtMzQtODgtMzkuMS05MC40LjQgMy4zLjYgNi43LjYgMTBDMTc5LjEgMTEwLjEgMzIgMTcxLjkgMzIgMjg2LjZjMCA0OS44IDMyLjIgNzkuMiA2Ni41IDEwOC4zIDY1LjEgNDYuNyA3OC4xIDcxLjQgNzguMSA4Ni42IDAgMTAuMS00LjggMTctNC44IDIyLjMgMTMuMS0xNi43IDE3LjQtMzEuOSAxNy41LTQ2LjQgMC0yOS42LTIxLjctNTYuMy00NC4yLTg2LjUtMTYtMjIuMy0zMi42LTQyLjYtMzIuNi02OS41em0yMDUuMy0zOWMtMTIuMS02Ni44LTc4LTEyNC40LTk0LjctMTMwLjlsNCA3LjJjMi40IDUuMSAzLjQgMTAuOSAzLjQgMTcuMSAwIDQ0LjctNTQuMiAxMTEuMi01Ni42IDExNi43LTIuMiA1LjEtMy4yIDEwLjUtMy4yIDE1LjggMCAyMC4xIDE1LjIgNDIuMSAxNy45IDQyLjEgMi40IDAgNTYuNi01NS40IDU4LjEtODcuNyA2LjQgMTEuNyA5LjEgMjIuNiA5LjEgMzMuNCAwIDQxLjItNDEuOCA5Ni45LTQxLjggOTYuOSAwIDExLjYgMzEuOSA1My4yIDM1LjUgNTMuMiAxIDAgMi4yLTEuNCAzLjItMi40IDM3LjktMzkuMyA2Ny4zLTg1IDY3LjMtMTM2LjggMC04LS43LTE2LjItMi4yLTI0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdydW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjMgMTg5LjNjLTEuMSAxMCA1LjIgMTkuMSA1LjIgMTkuMS43LTcuNSAyLjItMTIuOCA0LTE2LjYuNCAxMC4zIDMuMiAyMy41IDEyLjggMzQuMSA2LjkgNy42IDM1LjYgMjMuMyA1NC45IDYuMSAxIDIuNCAyLjEgNS4zIDMgOC41IDIuOSAxMC4zLTIuNyAyNS4zLTIuNyAyNS4zczE1LjEtMTcuMSAxMy45LTMyLjVjMTAuOC0uNSAyMS40LTguNCAyMS4xLTE5LjUgMCAwLTE4LjkgMTAuNC0zNS41LTguOC05LjctMTEuMi00MC45LTQyLTgzLjEtMzEuOCA0LjMgMSA4LjkgMi40IDEzLjUgNC4xaC0uMWMtNC4yIDItNi41IDcuMS03IDEyem0yOC4zLTEuOGMxOS41IDExIDM3LjQgMjUuNyA0NC45IDM3LTUuNyAzLjMtMjEuNyAxMC40LTM4LTEuNy0xMC4zLTcuNi05LjgtMjYuMi02LjktMzUuM3ptMTQyLjEgNDUuOGMtMS4yIDE1LjUgMTMuOSAzMi41IDEzLjkgMzIuNXMtNS42LTE1LTIuNy0yNS4zYy45LTMuMiAyLTYgMy04LjUgMTkuMyAxNy4zIDQ4IDEuNSA1NC44LTYuMSA5LjYtMTAuNiAxMi4zLTIzLjggMTIuOC0zNC4xIDEuOCAzLjggMy40IDkuMSA0IDE2LjYgMCAwIDYuNC05LjEgNS4yLTE5LjEtLjYtNS0yLjktMTAtNy0xMS44aC0uMWM0LjYtMS44IDkuMi0zLjIgMTMuNS00LjEtNDIuMy0xMC4yLTczLjQgMjAuNi04My4xIDMxLjgtMTYuNyAxOS4yLTM1LjUgOC44LTM1LjUgOC44LS4yIDEwLjkgMTAuNCAxOC45IDIxLjIgMTkuM3ptNjIuNy00NS44YzMgOS4xIDMuNCAyNy43LTcgMzUuNC0xNi4zIDEyLjEtMzIuMiA1LTM3LjkgMS42IDcuNS0xMS40IDI1LjQtMjYgNDQuOS0zN3pNMTYwIDQxOC41aC0yOS40Yy01LjUgMC04LjIgMS42LTkuNSAyLjktMS45IDItMi4yIDQuNy0uOSA4LjEgMy41IDkuMSAxMS40IDE2LjUgMTMuNyAxOC42IDMuMSAyLjcgNy41IDQuMyAxMS44IDQuMyA0LjQgMCA4LjMtMS43IDExLTQuNiA3LjUtOC4yIDExLjktMTcuMSAxMy0xOS44LjYtMS41IDEuMy00LjUtLjktNi44LTEuOC0xLjgtNC43LTIuNy04LjgtMi43em0xODkuMi0xMDEuMmMtMi40IDE3LjktMTMgMzMuOC0yNC42IDQzLjctMy4xLTIyLjctMy43LTU1LjUtMy43LTYyLjQgMC0xNC43IDkuNS0yNC41IDEyLjItMjYuMSAyLjUtMS41IDUuNC0zIDguMy00LjYgMTgtOS42IDQwLjQtMjEuNiA0MC40LTQzLjcgMC0xNi4yLTkuMy0yMy4yLTE1LjQtMjcuOC0uOC0uNi0xLjUtMS4xLTIuMi0xLjctMi4xLTEuNy0zLjctMy00LjMtNC40LTQuNC05LjgtMy42LTM0LjItMS43LTM3LjYuNi0uNiAxNi43LTIwLjkgMTEuOC0zOS4yLTItNy40LTYuOS0xMy4zLTE0LjEtMTctNS4zLTIuNy0xMS45LTQuMi0xOS41LTQuNS0uMS0yLS41LTMuOS0uOS01LjktLjYtMi42LTEuMS01LjMtLjktOC4xLjQtNC43LjgtOSAyLjItMTEuMyA4LjQtMTMuMyAyOC44LTE3LjYgMjktMTcuNmwxMi4zLTIuNC04LjEtOS41Yy0uMS0uMi0xNy4zLTE3LjUtNDYuMy0xNy41LTcuOSAwLTE2IDEuMy0yNC4xIDMuOS0yNC4yIDcuOC00Mi45IDMwLjUtNDkuNCAzOS4zLTMuMS0xLTYuMy0xLjktOS42LTIuNy00LjItMTUuOCA5LTM4LjUgOS0zOC41cy0xMy42LTMtMzMuNyAxNS4yYy0yLjYtNi41LTguMS0yMC41LTEuOC0zNy4yQzE4NC42IDEwLjEgMTc3LjIgMjYgMTc1IDQwLjRjLTcuNi01LjQtNi43LTIzLjEtNy4yLTI3LjYtNy41LjktMjkuMiAyMS45LTI4LjIgNDguMy0yIC41LTMuOSAxLjEtNS45IDEuNy02LjUtOC44LTI1LjEtMzEuNS00OS40LTM5LjMtNy45LTIuMi0xNi0zLjUtMjMuOS0zLjUtMjkgMC00Ni4xIDE3LjMtNDYuMyAxNy41TDYgNDYuOWwxMi4zIDIuNGMuMiAwIDIwLjYgNC4zIDI5IDE3LjYgMS40IDIuMiAxLjggNi42IDIuMiAxMS4zLjIgMi44LS40IDUuNS0uOSA4LjEtLjQgMS45LS44IDMuOS0uOSA1LjktNy43LjMtMTQuMiAxLjgtMTkuNSA0LjUtNy4yIDMuNy0xMi4xIDkuNi0xNC4xIDE3LTUgMTguMiAxMS4yIDM4LjUgMTEuOCAzOS4yIDEuOSAzLjQgMi43IDI3LjgtMS43IDM3LjYtLjYgMS40LTIuMiAyLjctNC4zIDQuNC0uNy41LTEuNCAxLjEtMi4yIDEuNy02LjEgNC42LTE1LjQgMTEuNy0xNS40IDI3LjggMCAyMi4xIDIyLjQgMzQuMSA0MC40IDQzLjcgMyAxLjYgNS44IDMuMSA4LjMgNC42IDIuNyAxLjYgMTIuMiAxMS40IDEyLjIgMjYuMSAwIDYuOS0uNiAzOS43LTMuNyA2Mi40LTExLjYtOS45LTIyLjItMjUuOS0yNC42LTQzLjggMCAwLTI5LjIgMjIuNi0yMC42IDcwLjggNS4yIDI5LjUgMjMuMiA0Ni4xIDQ3IDU0LjcgOC44IDE5LjEgMjkuNCA0NS43IDY3LjMgNDkuNkMxNDMgNTA0LjMgMTYzIDUxMiAxOTIuMiA1MTJoLjJjMjkuMSAwIDQ5LjEtNy43IDYzLjYtMTkuNSAzNy45LTMuOSA1OC41LTMwLjUgNjcuMy00OS42IDIzLjgtOC43IDQxLjctMjUuMiA0Ny01NC43IDguMi00OC40LTIxLjEtNzAuOS0yMS4xLTcwLjl6TTMwNS43IDM3LjdjNS42LTEuOCAxMS42LTIuNyAxNy43LTIuNyAxMSAwIDE5LjkgMyAyNC43IDUtMy4xIDEuNC02LjQgMy4yLTkuNyA1LjMtMi40LS40LTUuNi0uOC05LjItLjgtMTAuNSAwLTIwLjUgMy4xLTI4LjcgOC45LTEyLjMgOC43LTE4IDE2LjktMjAuNyAyMi40LTIuMi0xLjMtNC41LTIuNS03LjEtMy43LTEuNi0uOC0zLjEtMS41LTQuNy0yLjIgNi4xLTkuMSAxOS45LTI2LjUgMzcuNy0zMi4yem0yMSAxOC4yYy0uOCAxLTEuNiAyLjEtMi4zIDMuMi0zLjMgNS4yLTMuOSAxMS42LTQuNCAxNy44LS41IDYuNC0xLjEgMTIuNS00LjQgMTctNC4yLjgtOC4xIDEuNy0xMS41IDIuNy0yLjMtMy4xLTUuNi03LTEwLjUtMTEuMiAxLjQtNC44IDUuNS0xNi4xIDEzLjUtMjIuNSA1LjYtNC4zIDEyLjItNi43IDE5LjYtN3pNNDUuNiA0NS4zYy0zLjMtMi4yLTYuNi00LTkuNy01LjMgNC44LTIgMTMuNy01IDI0LjctNSA2LjEgMCAxMiAuOSAxNy43IDIuNyAxNy44IDUuOCAzMS42IDIzLjIgMzcuNyAzMi4xLTEuNi43LTMuMiAxLjQtNC44IDIuMi0yLjUgMS4yLTQuOSAyLjUtNy4xIDMuNy0yLjYtNS40LTguMy0xMy43LTIwLjctMjIuNC04LjMtNS44LTE4LjItOC45LTI4LjgtOC45LTMuNC4xLTYuNi41LTkgLjl6bTQ0LjcgNDAuMWMtNC45IDQuMi04LjMgOC0xMC41IDExLjItMy40LS45LTcuMy0xLjktMTEuNS0yLjdDNjUgODkuNSA2NC41IDgzLjQgNjQgNzdjLS41LTYuMi0xLjEtMTIuNi00LjQtMTcuOC0uNy0xLjEtMS41LTIuMi0yLjMtMy4yIDcuNC4zIDE0IDIuNiAxOS41IDcgOCA2LjMgMTIuMSAxNy42IDEzLjUgMjIuNHpNNTguMSAyNTkuOWMtMi43LTEuNi01LjYtMy4xLTguNC00LjYtMTQuOS04LTMwLjItMTYuMy0zMC4yLTMwLjUgMC0xMS4xIDQuMy0xNC42IDguOS0xOC4ybC41LS40Yy43LS42IDEuNC0xLjIgMi4yLTEuOC0uOSA3LjItMS45IDEzLjMtMi43IDE0LjkgMCAwIDEyLjEtMTUgMTUuNy00NC4zIDEuNC0xMS41LTEuMS0zNC4zLTUuMS00MyAuMiA0LjkgMCA5LjgtLjMgMTQuNC0uNC0uOC0uOC0xLjYtMS4zLTIuMi0zLjItNC0xMS44LTE3LjUtOS40LTI2LjYuOS0zLjUgMy4xLTYgNi43LTcuOCAzLjgtMS45IDguOC0yLjkgMTUuMS0yLjkgMTIuMyAwIDI1LjkgMy43IDMyLjkgNiAyNS4xIDggNTUuNCAzMC45IDY0LjEgMzcuNy4yLjIuNC4zLjQuM2w1LjYgMy45LTMuNS01LjhjLS4yLS4zLTE5LjEtMzEuNC01My4yLTQ2LjUgMi0yLjkgNy40LTguMSAyMS42LTE1LjEgMjEuNC0xMC41IDQ2LjUtMTUuOCA3NC4zLTE1LjggMjcuOSAwIDUyLjkgNS4zIDc0LjMgMTUuOCAxNC4yIDYuOSAxOS42IDEyLjIgMjEuNiAxNS4xLTM0IDE1LjEtNTIuOSA0Ni4yLTUzLjEgNDYuNWwtMy41IDUuOCA1LjYtMy45cy4yLS4xLjQtLjNjOC43LTYuOCAzOS0yOS44IDY0LjEtMzcuNyA3LTIuMiAyMC42LTYgMzIuOS02IDYuMyAwIDExLjMgMSAxNS4xIDIuOSAzLjUgMS44IDUuNyA0LjQgNi43IDcuOCAyLjUgOS4xLTYuMSAyMi42LTkuNCAyNi42LS41LjYtLjkgMS4zLTEuMyAyLjItLjMtNC42LS41LTkuNS0uMy0xNC40LTQgOC44LTYuNSAzMS41LTUuMSA0MyAzLjYgMjkuMyAxNS43IDQ0LjMgMTUuNyA0NC4zLS44LTEuNi0xLjgtNy43LTIuNy0xNC45LjcuNiAxLjUgMS4yIDIuMiAxLjhsLjUuNGM0LjYgMy43IDguOSA3LjEgOC45IDE4LjIgMCAxNC4yLTE1LjQgMjIuNS0zMC4yIDMwLjUtMi45IDEuNS01LjcgMy4xLTguNCA0LjYtOC43IDUtMTggMTYuNy0xOS4xIDM0LjItLjkgMTQuNi45IDQ5LjkgMy40IDc1LjktMTIuNCA0LjgtMjYuNyA2LjQtMzkuNyA2LjgtMi00LjEtMy45LTguNS01LjUtMTMuMS0uNy0yLTE5LjYtNTEuMS0yNi40LTYyLjIgNS41IDM5IDE3LjUgNzMuNyAyMy41IDg5LjYtMy41LS41LTcuMy0uNy0xMS43LS43aC0xMTdjLTQuNCAwLTguMy4zLTExLjcuNyA2LTE1LjkgMTguMS01MC42IDIzLjUtODkuNi02LjggMTEuMi0yNS43IDYwLjMtMjYuNCA2Mi4yLTEuNiA0LjYtMy41IDktNS41IDEzLjEtMTMtLjQtMjcuMi0yLTM5LjctNi44IDIuNS0yNiA0LjMtNjEuMiAzLjQtNzUuOS0uOS0xNy40LTEwLjMtMjkuMi0xOS0zNC4yek0zNC44IDQwNC42Yy0xMi4xLTIwLTguNy01NC4xLTMuNy01OS4xIDEwLjkgMzQuNCA0Ny4yIDQ0LjMgNzQuNCA0NS40LTIuNyA0LjItNS4yIDcuNi03IDEwbC0xLjQgMS40Yy03LjIgNy44LTguNiAxOC41LTQuMSAzMS44LTIyLjctLjEtNDYuMy05LjgtNTguMi0yOS41em00NS43IDQzLjVjNiAxLjEgMTIuMiAxLjkgMTguNiAyLjQgMy41IDggNy40IDE1LjkgMTIuMyAyMy4xLTE0LjQtNS45LTI0LjQtMTYtMzAuOS0yNS41ek0xOTIgNDk4LjJjLTYwLjYtLjEtNzguMy00NS44LTg0LjktNjQuNy0zLjctMTAuNS0zLjQtMTguMi45LTIzLjEgMi45LTMuMyA5LjUtNy4yIDI0LjYtNy4yaDExOC44YzE1LjEgMCAyMS44IDMuOSAyNC42IDcuMiA0LjIgNC44IDQuNSAxMi42LjkgMjMuMS02LjYgMTguOC0yNC4zIDY0LjYtODQuOSA2NC43em04MC42LTI0LjZjNC45LTcuMiA4LjgtMTUuMSAxMi4zLTIzLjEgNi40LS41IDEyLjYtMS4zIDE4LjYtMi40LTYuNSA5LjUtMTYuNSAxOS42LTMwLjkgMjUuNXptNzYuNi02OWMtMTIgMTkuNy0zNS42IDI5LjMtNTguMSAyOS43IDQuNS0xMy4zIDMuMS0yNC4xLTQuMS0zMS44LS40LS41LS45LTEtMS40LTEuNS0xLjgtMi40LTQuMy01LjgtNy0xMCAyNy4yLTEuMiA2My41LTExIDc0LjQtNDUuNCA1IDUgOC40IDM5LjEtMy44IDU5ek0xOTEuOSAxODcuN2guMmMxMi43LS4xIDI3LjItMTcuOCAyNy4yLTE3LjgtOS45IDYtMTguOCA4LjEtMjcuMyA4LjMtOC41LS4yLTE3LjQtMi4zLTI3LjMtOC4zIDAgMCAxNC41IDE3LjYgMjcuMiAxNy44em02MS43IDIzMC43aC0yOS40Yy00LjIgMC03LjIuOS04LjkgMi43LTIuMiAyLjMtMS41IDUuMi0uOSA2LjcgMSAyLjYgNS41IDExLjMgMTMgMTkuMyAyLjcgMi45IDYuNiA0LjUgMTEgNC41czguNy0xLjYgMTEuOC00LjJjMi4zLTIgMTAuMi05LjIgMTMuNy0xOC4xIDEuMy0zLjMgMS02LS45LTcuOS0xLjMtMS4zLTQtMi45LTkuNC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWlsZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My40MjcsNjRINC41NzFjMCwxMDMuMjYsMjIuMTkyLDE4MC4wNiw0My40MTgsMjIyLjM1OEMxMTIuMDQ2LDQxNC4xMzUsMjI0LDQ0OCwyMjUuMjU2LDQ0OGEzMTIuODI0LDMxMi44MjQsMCwwLDAsMTQwLjU1LTEwMy40NzdjMjUuOTA3LTMzLjkyMyw1My4xLTg3LjE5LDY1LjkxNi0xNDUuNzYxSDE3MS44MzNjNC4xNCwzNi40MjksMjIuMTc3LDY3Ljk0Niw0NS4xLDg2Ljk0NGg4OC41ODljLTE3LjAxMiwyOC4yMTMtNDguMTg2LDU0LjQtODAuNDU2LDY5LjQ4Mi0zMS4yMzItMTMuMjU5LTY5LjA5LTQ2LjU0NC05Ni41NDgtOTguMzYyLTI2LjcyNi01My44MzMtMjcuMDkyLTEwNS44ODMtMjcuMDkyLTEwNS44ODNINDM3LjU3M0E2MjUuOTEsNjI1LjkxLDAsMCwwLDQ0My40MjcsNjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1bHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA5LjggMzkxLjFsLTE0LjEgMjQuNi00LjYgODAuMmMwIDguOS0yOC4zIDE2LjEtNjMuMSAxNi4xcy02My4xLTcuMi02My4xLTE2LjFsLTUuOC03OS40LTE0LjktMjUuNGM0MS4yIDE3LjMgMTI2IDE2LjcgMTY1LjYgMHptLTE5Ni0yNTMuM2wxMy42IDEyNS41YzUuOS0yMCAyMC44LTQ3IDQwLTU1LjIgNi4zLTIuNyAxMi43LTIuNyAxOC43LjkgNS4yIDMgOS42IDkuMyAxMC4xIDExLjggMS4yIDYuNS0yIDkuMS00LjUgOS4xLTMgMC01LjMtNC42LTYuOC03LjMtNC4xLTcuMy0xMC4zLTcuNi0xNi45LTIuOC02LjkgNS0xMi45IDEzLjQtMTcuMSAyMC43LTUuMSA4LjgtOS40IDE4LjUtMTIgMjguMi0xLjUgNS42LTIuOSAxNC42LS42IDE5LjkgMSAyLjIgMi41IDMuNiA0LjkgMy42IDUgMCAxMi4zLTYuNiAxNS44LTEwLjEgNC41LTQuNSAxMC4zLTExLjUgMTIuNS0xNmw1LjItMTUuNWMyLjYtNi44IDkuOS01LjYgOS45IDAgMCAxMC4yLTMuNyAxMy42LTEwIDM0LjctNS44IDE5LjUtNy42IDI1LjgtNy42IDI1LjgtLjcgMi44LTMuNCA3LjUtNi4zIDcuNS0xLjIgMC0yLjEtLjQtMi42LTEuMi0xLTEuNC0uOS01LjMtLjgtNi4zLjItMy4yIDYuMy0yMi4yIDcuMy0yNS4yLTIgMi4yLTQuMSA0LjQtNi40IDYuNi01LjQgNS4xLTE0LjEgMTEuOC0yMS41IDExLjgtMy40IDAtNS42LS45LTcuNy0yLjRsNy42IDc5LjZjMiA1IDM5LjIgMTcuMSA4OC4yIDE3LjEgNDkuMSAwIDg2LjMtMTIuMiA4OC4yLTE3LjFsMTAuOS05NC42Yy01LjcgNS4yLTEyLjMgMTEuNi0xOS42IDE0LjgtNS40IDIuMy0xNy40IDMuOC0xNy40LTUuNyAwLTUuMiA5LjEtMTQuOCAxNC40LTIxLjUgMS40LTEuNyA0LjctNS45IDQuNy04LjEgMC0yLjktNi0yLjItMTEuNyAyLjUtMy4yIDIuNy02LjIgNi4zLTguNyA5LjctNC4zIDYtNi42IDExLjItOC41IDE1LjUtNi4yIDE0LjItNC4xIDguNi05LjEgMjItNSAxMy4zLTQuMiAxMS44LTUuMiAxNC0uOSAxLjktMi4yIDMuNS00IDQuNS0xLjkgMS00LjUuOS02LjEtLjMtLjktLjYtMS4zLTEuOS0xLjMtMy43IDAtLjkuMS0xLjguMy0yLjcgMS41LTYuMSA3LjgtMTguMSAxNS0zNC4zIDEuNi0zLjcgMS0yLjYuOC0yLjMtNi4yIDYtMTAuOSA4LjktMTQuNCAxMC41LTUuOCAyLjYtMTMgMi42LTE0LjUtNC4xLS4xLS40LS4xLS44LS4yLTEuMi0xMS44IDkuMi0yNC4zIDExLjctMjAtOC4xLTQuNiA4LjItMTIuNiAxNC45LTIyLjQgMTQuOS00LjEgMC03LjEtMS40LTguNi01LjEtMi4zLTUuNSAxLjMtMTQuOSA0LjYtMjMuOCAxLjctNC41IDQtOS45IDcuMS0xNi4yIDEuNi0zLjQgNC4yLTUuNCA3LjYtNC41LjYuMiAxLjEuNCAxLjYuNyAyLjYgMS44IDEuNiA0LjUuMyA3LjItMy44IDcuNS03LjEgMTMtOS4zIDIwLjgtLjkgMy4zLTIgOSAxLjUgOSAyLjQgMCA0LjctLjggNi45LTIuNCA0LjYtMy40IDguMy04LjUgMTEuMS0xMy41IDItMy42IDQuNC04LjMgNS42LTEyLjMuNS0xLjcgMS4xLTMuMyAxLjgtNC44IDEuMS0yLjUgMi42LTUuMSA1LjItNS4xIDEuMyAwIDIuNC41IDMuMiAxLjUgMS43IDIuMiAxLjMgNC41LjQgNi45LTIgNS42LTQuNyAxMC42LTYuOSAxNi43LTEuMyAzLjUtMi43IDgtMi43IDExLjcgMCAzLjQgMy43IDIuNiA2LjggMS4yIDIuNC0xLjEgNC44LTIuOCA2LjgtNC41IDEuMi00LjkuOS0zLjggMjYuNC02OC4yIDEuMy0zLjMgMy43LTQuNyA2LjEtNC43IDEuMiAwIDIuMi40IDMuMiAxLjEgMS43IDEuMyAxLjcgNC4xIDEgNi4yLS43IDEuOS0uNiAxLjMtNC41IDEwLjUtNS4yIDEyLjEtOC42IDIwLjgtMTMuMiAzMS45LTEuOSA0LjYtNy43IDE4LjktOC43IDIyLjMtLjYgMi4yLTEuMyA1LjggMSA1LjggNS40IDAgMTkuMy0xMy4xIDIzLjEtMTcgLjItLjMuNS0uNC45LS42LjYtMS45IDEuMi0zLjcgMS43LTUuNSAxLjQtMy44IDIuNy04LjIgNS4zLTExLjMuOC0xIDEuNy0xLjYgMi43LTEuNiAyLjggMCA0LjIgMS4yIDQuMiA0IDAgMS4xLS43IDUuMS0xLjEgNi4yIDEuNC0xLjUgMi45LTMgNC41LTQuNSAxNS0xMy45IDI1LjctNi44IDI1LjcuMiAwIDcuNC04LjkgMTcuNy0xMy44IDIzLjQtMS42IDEuOS00LjkgNS40LTUgNi40IDAgMS4zLjkgMS44IDIuMiAxLjggMiAwIDYuNC0zLjUgOC00LjcgNS0zLjkgMTEuOC05LjkgMTYuNi0xNC4xbDE0LjgtMTM2LjhjLTMwLjUgMTcuMS0xOTcuNiAxNy4yLTIyOC4zLjJ6bTIyOS43LTguNWMwIDIxLTIzMS4yIDIxLTIzMS4yIDAgMC04LjggNTEuOC0xNS45IDExNS42LTE1LjkgOSAwIDE3LjguMSAyNi4zLjRsMTIuNi00OC43TDIyOC4xLjZjMS40LTEuNCA1LjgtLjIgOS45IDMuNXM2LjYgNy45IDUuMyA5LjNsLS4xLjFMMTg1LjkgNzRsLTEwIDQwLjdjMzkuOSAyLjYgNjcuNiA4LjEgNjcuNiAxNC42em0tNjkuNCA0LjZjMC0uOC0uOS0xLjUtMi41LTIuMWwtLjIuOGMwIDEuMy01IDIuNC0xMS4xIDIuNHMtMTEuMS0xLjEtMTEuMS0yLjRjMC0uMSAwLS4yLjEtLjNsLjItLjdjLTEuOC42LTMgMS40LTMgMi4zIDAgMi4xIDYuMiAzLjcgMTMuNyAzLjcgNy43LjEgMTMuOS0xLjYgMTMuOS0zLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhY2tlck5ld3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTIxLjIgMTk3LjJIMjFjLjEtLjEuMi0uMy4zLS40IDAgLjEgMCAuMy0uMS40em0yMTggNTMuOVYzODRoLTMxLjRWMjgxLjNMMTI4IDEyOGgzNy4zYzUyLjUgOTguMyA0OS4yIDEwMS4yIDU5LjMgMTI1LjYgMTIuMy0yNyA1LjgtMjQuNCA2MC42LTEyNS42SDMyMGwtODAuOCAxNTUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFja2VycmFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzcuNSAxMjhDNDYzIDEwMy4wNSAyODUuMTMgMCAyNTYuMTYgMFM0OS4yNSAxMDIuNzkgMzQuODQgMTI4cy0xNC40OSAyMzAuOCAwIDI1NiAxOTIuMzggMTI4IDIyMS4zMiAxMjhTNDYzIDQwOS4wOCA0NzcuNDkgMzg0czE0LjUxLTIzMSAuMDEtMjU2ek0zMTYuMTMgNDE0LjIyYy00IDAtNDAuOTEtMzUuNzctMzgtMzguNjkuODctLjg3IDYuMjYtMS40OCAxNy41NS0xLjgzIDAtMjYuMjMuNTktNjguNTkuOTQtODYuMzIgMC0yLS40NC0zLjQzLS40NC01Ljg1aC03OS45M2MwIDcuMS0uNDYgMzYuMiAxLjM3IDcyLjg4LjIzIDQuNTQtMS41OCA2LTUuNzQgNS45NC0xMC4xMyAwLTIwLjI3LS4xMS0zMC40MS0uMDgtNC4xIDAtNS44Ny0xLjUzLTUuNzQtNi4xMS45Mi0zMy40NCAzLTg0LS4xNS0yMTIuNjd2LTMuMTdjLTkuNjctLjM1LTE2LjM4LTEtMTcuMjYtMS44NC0yLjkyLTIuOTIgMzQuNTQtMzguNjkgMzguNDktMzguNjlzNDEuMTcgMzUuNzggMzguMjcgMzguNjljLS44Ny44Ny03LjkgMS40OS0xNi43NyAxLjg0djMuMTZjLTIuNDIgMjUuNzUtMiA3OS41OS0yLjYzIDEwNS4zOWg4MC4yNmMwLTQuNTUuMzktMzQuNzQtMS4yLTgzLjY0LS4xLTMuMzkuOTUtNS4xNyA0LjIxLTUuMiAxMS4wNy0uMDggMjIuMTUtLjEzIDMzLjIzLS4wNiAzLjQ2IDAgNC41NyAxLjcyIDQuNSA1LjM4QzMzMyAzNTQuNjQgMzM2IDM0MS4yOSAzMzYgMzczLjY5YzguODcuMzUgMTYuODIgMSAxNy42OSAxLjg0IDIuODggMi45MS0zMy42MiAzOC42OS0zNy41OCAzOC42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFzaG5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUuMTkgMTcxLjFDLTExLjcyIDIxNy4xLTExLjcyIDI5NCAzNS4xOSAzNDAuOUwxNzEuMSA0NzYuOEMyMTcuMSA1MjMuNyAyOTQgNTIzLjcgMzQwLjkgNDc2LjhMNDc2LjggMzQwLjlDNTIzLjcgMjk0IDUyMy43IDIxNy4xIDQ3Ni44IDE3MS4xTDM0MC45IDM1LjE5QzI5NC0xMS43MiAyMTcuMS0xMS43MiAxNzEuMSAzNS4xOUwzNS4xOSAxNzEuMXpNMzE1LjUgMzE1LjVDMjgyLjYgMzQ4LjMgMjI5LjQgMzQ4LjMgMTk2LjYgMzE1LjVDMTYzLjcgMjgyLjYgMTYzLjcgMjI5LjQgMTk2LjYgMTk2LjZDMjI5LjQgMTYzLjcgMjgyLjYgMTYzLjcgMzE1LjUgMTk2LjZDMzQ4LjMgMjI5LjQgMzQ4LjMgMjgyLjYgMzE1LjUgMzE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUxLjYgMTU3LjZjMC0xLjktLjktMi44LTIuOC0yLjhoLTQwLjljLTEuNiAwLTIuNyAxLjQtMi43IDIuOHYyMDEuOGMwIDEuNCAxLjEgMi44IDIuNyAyLjhoNDAuOWMxLjkgMCAyLjgtLjkgMi44LTIuOHpNMTU2LjUgMTY4Yy0xNi4xLTExLjgtMzYuMy0xNy45LTYwLjMtMTgtMTguMS0uMS0zNC42IDMuNy00OS44IDExLjRWODAuMmMwLTEuOC0uOS0yLjctMi44LTIuN0gyLjdjLTEuOCAwLTIuNy45LTIuNyAyLjd2Mjc5LjJjMCAxLjkuOSAyLjggMi43IDIuOGg0MWMxLjkgMCAyLjgtLjkgMi44LTIuOFYyMjMuM2MwLS44LTIuOC0yNyA0NS44LTI3IDQ4LjUgMCA0NS44IDI2LjEgNDUuOCAyN3YxMjIuNmMwIDkgNy4zIDE2LjMgMTYuNCAxNi4zaDI3LjNjMS44IDAgMi43LS45IDIuNy0yLjhWMjIzLjNjMC0yMy40LTkuMy00MS44LTI4LTU1LjN6bTQ3OC40IDExMC4xYy02LjgtMTUuNy0xOC40LTI3LTM0LjktMzQuMWwtNTcuNi0yNS4zYy04LjYtMy42LTkuMi0xMS4yLTIuNi0xNi4xIDcuNC01LjUgNDQuMy0xMy45IDg0IDYuOCAxLjcgMSA0LS4zIDQtMi40di00NC43YzAtMS4zLS42LTIuMS0xLjktMi42LTE3LjctNi42LTM2LjEtOS45LTU1LjEtOS45LTI2LjUgMC00NS4zIDUuOC01OC41IDE1LjQtLjUuNC0yOC40IDIwLTIyLjcgNTMuNyAzLjQgMTkuNiAxNS44IDM0LjIgMzcuMiA0My42bDUzLjYgMjMuNWMxMS42IDUuMSAxNS4yIDEzLjMgMTIuMiAyMS4yLTMuNyA5LjEtMTMuMiAxMy42LTM2LjUgMTMuNi0yNC4zIDAtNDQuNy04LjktNTguNC0xOS4xLTIuMS0xLjQtNC40LjItNC40IDIuM3YzNC40YzAgMTAuNCA0LjkgMTcuMyAxNC42IDIwLjcgMTUuNiA1LjUgMzEuNiA4LjIgNDguMiA4LjIgMTIuNyAwIDI1LjgtMS4yIDM2LjMtNC4zLjctLjMgMzYtOC45IDQ1LjYtNDUuOCAzLjUtMTMuNSAyLjQtMjYuNS0zLjEtMzkuMXpNMzc2LjIgMTQ5LjhjLTMxLjcgMC0xMDQuMiAyMC4xLTEwNC4yIDEwMy41djE4My41YzAgLjguNiAyLjcgMi43IDIuN2g0MC45YzEuOSAwIDIuOC0uOSAyLjgtMi43VjM0OGMxNi41IDEyLjcgMzUuOCAxOS4xIDU3LjcgMTkuMSA2MC41IDAgMTA4LjctNDguNSAxMDguNy0xMDguNy4xLTYwLjMtNDguMi0xMDguNi0xMDguNi0xMDguNnptMCAxNzAuOWMtMTcuMiAwLTMxLjktNi4xLTQ0LTE4LjItMTIuMi0xMi4yLTE4LjItMjYuOC0xOC4yLTQ0IDAtMzQuNSAyNy42LTYyLjIgNjIuMi02Mi4yIDM0LjUgMCA2Mi4yIDI3LjYgNjIuMiA2Mi4yLjEgMzQuMy0yNy4zIDYyLjItNjIuMiA2Mi4yek0yMjguMyA3Mi41Yy0xNS45IDAtMjguOCAxMi45LTI4LjkgMjguOSAwIDE1LjYgMTIuNyAyOC45IDI4LjkgMjguOXMyOC45LTEzLjEgMjguOS0yOC45YzAtMTYuMi0xMy0yOC45LTI4LjktMjguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlyZUFIZWxwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQzLjEgMEg3MS45QzY3LjkgMzcuMyAzNy40IDY3LjggMCA3MS43djM3MS41YzM3LjQgNC45IDY2IDMyLjQgNzEuOSA2OC44aDM3Mi4yYzMtMzYuNCAzMi41LTY1LjggNjcuOS02OS44VjcxLjdjLTM2LjQtNS45LTY1LTM1LjMtNjguOS03MS43em0tMzcgNDA0LjljLTM2LjMgMC0xOC44LTItNTUuMS0yLTM1LjggMC0yMSAyLTU2LjEgMi01LjkgMC00LjktOC4yIDAtOS44IDIyLjgtNy42IDIyLjktMTAuMiAyNC42LTEyLjggMTAuNC0xNS42IDUuOS04MyA1LjktMTEzIDAtNS4zLTYuNC0xMi44LTEzLjgtMTIuOEgyMDAuNGMtNy40IDAtMTMuOCA3LjUtMTMuOCAxMi44IDAgMzAtNC41IDk3LjQgNS45IDExMyAxLjcgMi41IDEuOCA1LjIgMjQuNiAxMi44IDQuOSAxLjYgNiA5LjggMCA5LjgtMzUuMSAwLTIwLjMtMi01Ni4xLTItMzYuMyAwLTE4LjggMi01NS4xIDItNy45IDAtNS44LTEwLjggMC0xMC44IDEwLjItMy40IDEzLjUtMy41IDIxLjctMTMuOCA3LjctMTIuOSA3LjktNDQuNCA3LjktMTI3LjhWMTUxLjNjMC0yMi4yLTEyLjItMjguMy0yOC42LTMyLjQtOC44LTIuMi00LTExLjggMS0xMS44IDM2LjUgMCAyMC42IDIgNTcuMSAyIDMyLjcgMCAxNi41LTIgNDkuMi0yIDMuMyAwIDguNSA4LjMgMSAxMC44LTQuOSAxLjYtMjcuNiAzLjctMjcuNiAzOS4zIDAgNDUuNi0uMiA1NS44IDEgNjguOCAwIDEuMyAyLjMgMTIuOCAxMi44IDEyLjhoMTA5LjJjMTAuNSAwIDEyLjgtMTEuNSAxMi44LTEyLjggMS4yLTEzIDEtMjMuMiAxLTY4LjggMC0zNS42LTIyLjctMzcuNy0yNy42LTM5LjMtNy41LTIuNS0yLjMtMTAuOCAxLTEwLjggMzIuNyAwIDE2LjUgMiA0OS4yIDIgMzYuNSAwIDIwLjYtMiA1Ny4xLTIgNC45IDAgOS45IDkuNiAxIDExLjgtMTYuNCA0LjEtMjguNiAxMC4zLTI4LjYgMzIuNHYxMDEuMmMwIDgzLjQuMSAxMTQuOSA3LjkgMTI3LjggOC4yIDEwLjIgMTEuNCAxMC40IDIxLjcgMTMuOCA1LjggMCA3LjggMTAuOCAwIDEwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjM1MywyNTQuODc4LDEzMS41MzgsMzMuMWEyLjIwOCwyLjIwOCwwLDAsMC0zLjgyOS4wMDlMLjMsMjU0Ljg4N0EyLjIzNCwyLjIzNCwwLDAsMCwuMywyNTcuMTIyTDEyOS4xMTYsNDc4LjlhMi4yMDgsMi4yMDgsMCwwLDAsMy44My0uMDA5TDI2MC4zNTgsMjU3LjExM0EyLjIzOSwyLjIzOSwwLDAsMCwyNjAuMzUzLDI1NC44NzhabTM5LjA3OC0yNS43MTNhMi4xOSwyLjE5LDAsMCwwLDEuOSwxLjExMWg2Ni41MDlhMi4yMjYsMi4yMjYsMCwwLDAsMS45LTMuMzQxTDI1OS4xMTUsMzMuMTExYTIuMTg3LDIuMTg3LDAsMCwwLTEuOS0xLjExMUgxOTAuNzA3YTIuMjI2LDIuMjI2LDAsMCwwLTEuOSwzLjM0MVpNNTExLjcsMjU0Ljg4NiwzODQuOSwzMy4xMTJBMi4yLDIuMiwwLDAsMCwzODIuOTksMzJoLTY2LjZhMi4yMjYsMi4yMjYsMCwwLDAtMS45MDYsMy4zNEw0NDAuNjUyLDI1NiwzMTQuNDgxLDQ3Ni42NmEyLjIyNiwyLjIyNiwwLDAsMCwxLjkwNiwzLjM0aDY2LjZhMi4yLDIuMiwwLDAsMCwxLjkwNi0xLjExMkw1MTEuNywyNTcuMTE0QTIuMjQzLDIuMjQzLDAsMCwwLDUxMS43LDI1NC44ODZaTTM2Ni4wMTYsMjg0LjkxN0gyOTkuNTA4YTIuMTg3LDIuMTg3LDAsMCwwLTEuOSwxLjExMWwtMTA4LjgsMTkwLjYzMWEyLjIyNiwyLjIyNiwwLDAsMCwxLjksMy4zNDFoNjYuNTA5YTIuMTg3LDIuMTg3LDAsMCwwLDEuOS0xLjExMWwxMDguOC0xOTAuNjMxQTIuMjI2LDIuMjI2LDAsMCwwLDM2Ni4wMTYsMjg0LjkxN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9vbGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0LjUgMzUybDM4LjMuOGMtMTMuMi00LjYtMjYtMTAuMi0zOC4zLTE2Ljh6bTU3LjctNS4zdjUuM2wtMTkuNC44YzM2LjUgMTIuNSA2OS45IDE0LjIgOTQuNyA3LjItMTkuOS4yLTQ1LjgtMi42LTc1LjMtMTMuM3ptNDA4LjktMTE1LjJjMTUuOSAwIDI4LjktMTIuOSAyOC45LTI4LjlzLTEyLjktMjQuNS0yOC45LTI0LjVjLTE1LjkgMC0yOC45IDguNi0yOC45IDI0LjVzMTIuOSAyOC45IDI4LjkgMjguOXptLTI5IDEyMC41SDY0MFYyNDEuNWgtNTcuOXptLTczLjcgMGg1Ny45VjE1Ni43TDUwOC40IDE4NHptLTMxLTExOS40Yy0xOC4yLTE4LjItNTAuNC0xNy4xLTUwLjQtMTcuMXMtMzIuMy0xLjEtNTAuNCAxNy4xYy0xOC4yIDE4LjItMTYuOCAzMy45LTE2LjggNTIuNnMtMS40IDM0LjMgMTYuOCA1Mi41IDUwLjQgMTcuMSA1MC40IDE3LjEgMzIuMyAxLjEgNTAuNC0xNy4xYzE4LjItMTguMiAxNi44LTMzLjggMTYuOC01Mi41LS4xLTE4LjggMS4zLTM0LjUtMTYuOC01Mi42em0tMzkuOCA3MS45YzAgMy42LTEuOCAxMi41LTEwLjcgMTIuNXMtMTAuNy04LjktMTAuNy0xMi41di00MC40YzAtOC43IDcuMy0xMC45IDEwLjctMTAuOXMxMC43IDIuMSAxMC43IDEwLjl6bS0xMDYuMi03MS45Yy0xOC4yLTE4LjItNTAuNC0xNy4xLTUwLjQtMTcuMXMtMzIuMi0xLjEtNTAuNCAxNy4xYy0xLjkgMS45LTMuNyAzLjktNS4zIDYtMzguMi0yOS42LTcyLjUtNDYuNS0xMDIuMS02MS4xdi0yMC43bC0yMi41IDEwLjZjLTU0LjQtMjIuMS04OS0xOC4yLTk3LjMuMSAwIDAtMjQuOSAzMi44IDYxLjggMTEwLjhWMzUyaDU3Ljl2LTI4LjZjLTYuNS00LjItMTMtOC43LTE5LjQtMTMuNi0xNC44LTExLjItMjcuNC0yMS42LTM4LjQtMzEuNHYtMzFjMTMuMSAxNC43IDMwLjUgMzEuNCA1My40IDUwLjNsNC41IDMuNnYtMjkuOGMwLTYuOSAxLjctMTguMiAxMC44LTE4LjJzMTAuNiA2LjkgMTAuNiAxNVYzMTdjMTggMTIuMiAzNy4zIDIyLjEgNTcuNyAyOS42di05My45YzAtMTguNy0xMy40LTM3LjQtNDAuNi0zNy40LTE1LjgtLjEtMzAuNSA4LjItMzguNSAyMS45di01NC4zYzQxLjkgMjAuOSA4My45IDQ2LjUgOTkuOSA1OC4zLTEwLjIgMTQuNi05LjMgMjguMS05LjMgNDMuNyAwIDE4LjctMS40IDM0LjMgMTYuOCA1Mi41czUwLjQgMTcuMSA1MC40IDE3LjEgMzIuMyAxLjEgNTAuNC0xNy4xYzE4LjItMTguMiAxNi43LTMzLjggMTYuNy01Mi41IDAtMTguNSAxLjUtMzQuMi0xNi43LTUyLjN6TTY1LjIgMTg0djYzLjNjLTQ4LjctNTQuNS0zOC45LTc2LTM1LjItNzkuMSAxMy41LTExLjQgMzcuNS04IDY0LjQgMi4xem0yMjYuNSAxMjAuNWMwIDMuNi0xLjggMTIuNS0xMC43IDEyLjVzLTEwLjctOC45LTEwLjctMTIuNXYtNDAuNGMwLTguNyA3LjMtMTAuOSAxMC43LTEwLjlzMTAuNyAyLjEgMTAuNyAxMC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3JuYmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ni4zOCAzNzAuM2EzNy44IDM3LjggMCAxIDEtMzIuMDctMzIuNDJjLTc4LjI4LTExMS4zNSA1Mi0xOTAuNTMgNTItMTkwLjUzLTUuODYgNDMtOC4yNCA5MS4xNi04LjI0IDkxLjE2LTY3LjMxIDQxLjQ5LjkzIDY0LjA2IDM5LjgxIDcyLjg3YTE0MC4zOCAxNDAuMzggMCAwIDAgMTMxLjY2IDkxLjk0YzEuOTIgMCAzLjc3LS4yMSA1LjY3LS4yOGwuMTEgMTguODZjLTk5LjIyIDEuMzktMTU4LjctMjkuMTQtMTg4Ljk0LTUxLjZ6bTEwOC0zMjcuN0EzNy41NyAzNy41NyAwIDAgMCAxODEgMjEuNDVhMzcuOTUgMzcuOTUgMCAxIDAtMzEuMTcgNTQuMjJjLTIyLjU1IDI5LjkxLTUzLjgzIDg5LjU3LTUyLjQyIDE5MGwyMS44NC0uMTVjMC0uOS0uMTQtMS43Ny0uMTQtMi42OEExNDAuNDIgMTQwLjQyIDAgMCAxIDIwNyAxMzIuNzFjOC0zNy43MSAzMC43LTExNC4zIDczLjgtNDQuMjkgMCAwIDQ4LjE0IDIuMzggOTEuMTggOC4yNCAwIDAtNzcuODQtMTI4LTE4Ny41OS01NC4wNnptMzA0LjE5IDEzNC4xN2EzNy45NCAzNy45NCAwIDEgMC01My44NC0yOC43QzQwMyAxMjYuMTMgMzQ0Ljg5IDk5IDI1MS4yOCAxMDAuMzNsLjE0IDIyLjVjMi43LS4xNSA1LjM5LS40MSA4LjE0LS40MWExNDAuMzcgMTQwLjM3IDAgMCAxIDEzMC40OSA4OC43NmMzOS4xIDkgMTA1LjA2IDMxLjU4IDM4LjQ2IDcyLjU0IDAgMC0yLjM0IDQ4LjEzLTguMjEgOTEuMTYgMCAwIDEzMy40NS04MS4xNiA0OS0xOTQuNjFhMzcuNDUgMzcuNDUgMCAwIDAgMTkuMzEtMy41ek0zNzQuMDYgNDM2LjI0YzIxLjQzLTMyLjQ2IDQ2LjQyLTg5LjY5IDQ1LjE0LTE3OS42NmwtMTkuNTIuMTRjLjA4IDIuMDYuMyA0LjA3LjMgNi4xNWExNDAuMzQgMTQwLjM0IDAgMCAxLTkxLjM5IDEzMS40NWMtOC44NSAzOC45NS0zMS40NCAxMDYuNjYtNzIuNzcgMzkuNDkgMCAwLTQ4LjEyLTIuMzQtOTEuMTktOC4yMiAwIDAgNzkuOTIgMTMxLjM0IDE5MS45IDUxYTM3LjUgMzcuNSAwIDAgMCAzLjY0IDE0IDM3LjkzIDM3LjkzIDAgMSAwIDMzLjg5LTU0LjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3RqYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYxLjUgMGMwIDEzMS42LTgwLjcgMTc2LjgtMTQwLjIgMjA5LjRjLS42IC4zLTEuMSAuNi0xLjYgLjljLTUzLjggMzAuMi04OC43IDQ5LjgtODkuNiAxMjJIMzJDMzIgMjAwLjggMTEyLjcgMTU1LjYgMTcyLjIgMTIzQzIyNyA5My4yIDI2Mi41IDczIDI2Mi41IDBoOTguOXpNMzAxIDMwMi42YzU0LjgtMjkuOCA5MC4zLTUwIDkwLjMtMTIzaDk4YzAgMTMxLjYtODAuNyAxNzYuNy0xNDAuMiAyMDkuNGMtNTQuOCAyOS44LTkwLjMgNTAtOTAuMyAxMjNoLTk4YzAtMTMxLjYgODAuNy0xNzYuOCAxNDAuMi0yMDkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91enogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjkgMzMwLjdIMTcxLjNWNDgwSDE3VjMyaDEwOS41djEwNC41bDMwNS4xIDg1LjZWNDgwSDI3NS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIdG1sNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMybDM0LjkgMzk1LjhMMTkxLjUgNDgwbDE1Ny42LTUyLjJMMzg0IDMySDB6bTMwOC4yIDEyNy45SDEyNC40bDQuMSA0OS40aDE3NS42bC0xMy42IDE0OC40LTk3LjkgMjd2LjNoLTEuMWwtOTguNy0yNy4zLTYtNzUuOGg0Ny43TDEzOCAzMjBsNTMuNSAxNC41IDUzLjctMTQuNSA2LTYyLjJIODQuM0w3MS41IDExMi4yaDI0MS4xbC00LjQgNDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHVic3BvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNCAyMTEuNmMtMjUuMSAyMy43LTQwLjggNTcuMy00MC44IDk0LjYgMCAyOS4zIDkuNyA1Ni4zIDI2IDc4TDIwMy4xIDQzNGMtNC40LTEuNi05LjEtMi41LTE0LTIuNS0xMC44IDAtMjAuOSA0LjItMjguNSAxMS44LTcuNiA3LjYtMTEuOCAxNy44LTExLjggMjguNnM0LjIgMjAuOSAxMS44IDI4LjVjNy42IDcuNiAxNy44IDExLjYgMjguNSAxMS42IDEwLjggMCAyMC45LTMuOSAyOC42LTExLjYgNy42LTcuNiAxMS44LTE3LjggMTEuOC0yOC41IDAtNC4yLS42LTguMi0xLjktMTIuMWw1MC01MC4yYzIyIDE2LjkgNDkuNCAyNi45IDc5LjMgMjYuOSA3MS45IDAgMTMwLTU4LjMgMTMwLTEzMC4yIDAtNjUuMi00Ny43LTExOS4yLTExMC4yLTEyOC43VjExNmMxNy41LTcuNCAyOC4yLTIzLjggMjguMi00Mi45IDAtMjYuMS0yMC45LTQ3LjktNDctNDcuOVMzMTEuMiA0NyAzMTEuMiA3My4xYzAgMTkuMSAxMC43IDM1LjUgMjguMiA0Mi45djYxLjJjLTE1LjIgMi4xLTI5LjYgNi43LTQyLjcgMTMuNi0yNy42LTIwLjktMTE3LjUtODUuNy0xNjguOS0xMjQuOCAxLjItNC40IDItOSAyLTEzLjhDMTI5LjggMjMuNCAxMDYuMyAwIDc3LjQgMCA0OC42IDAgMjUuMiAyMy40IDI1LjIgNTIuMmMwIDI4LjkgMjMuNCA1Mi4zIDUyLjIgNTIuMyA5LjggMCAxOC45LTIuOSAyNi44LTcuNmwxNjMuMiAxMTQuN3ptODkuNSAxNjMuNmMtMzguMSAwLTY5LTMwLjktNjktNjlzMzAuOS02OSA2OS02OSA2OSAzMC45IDY5IDY5LTMwLjkgNjktNjkgNjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlkZWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNS42MSwxNjUuNDhhNDkuMDcsNDkuMDcsMCwxLDAsNDkuMDYsNDkuMDZBNDkuMDgsNDkuMDgsMCwwLDAsMTI1LjYxLDE2NS40OFpNODYuMTUsNDI1Ljg0aDc4Ljk0VjI4NS4zMkg4Ni4xNVptMTUxLjQ2LTIxMS42YzAtMjAtMTAtMjIuNTMtMTguNzQtMjIuNTNIMjA0LjgyVjIzNy41aDE0LjA1QzIyOC42MiwyMzcuNSwyMzcuNjEsMjM0LjY5LDIzNy42MSwyMTQuMjRabTIwMS42OSw0NlYxNjguOTNoMjIuNzVWMjM3LjVoMzMuNjlDNDg2LjUsMTEzLjA4LDM4OC42MSw4Ni4xOSwyOTkuNjcsODYuMTlIMjA0Ljg0VjE2OWgxNGMyNS42LDAsNDEuNSwxNy4zNSw0MS41LDQ1LjI2LDAsMjguODEtMTUuNTIsNDYtNDEuNSw0NmgtMTRWNDI1Ljg4aDk0LjgzYzE0NC42MSwwLDE5NC45NC02Ny4xNiwxOTYuNzItMTY1LjY0Wm0tMTA5Ljc1LDBIMjczLjNWMTY5aDU0LjQzdjIyLjczSDI5NnYxMC41OGgzMFYyMjVIMjk2VjIzNy41aDMzLjUxWm03NC42NiwwLTUuMTYtMTcuNjdIMzY5LjMxbC01LjE4LDE3LjY3SDM0MC40N0wzNjgsMTY4LjkyaDMyLjM1bDI3LjUzLDkxLjM0Wk0yOTkuNjUsMzJIMzJWNDgwSDI5OS42NWMxNjEuODUsMCwyNTEtNzkuNzMsMjUxLTIyNC41MkM1NTAuNjIsMTcyLDUxOCwzMiwyOTkuNjUsMzJabTAsNDI2LjkySDUzLjA3VjUzLjA3SDI5OS42NWMxNDIuMSwwLDIyOS45LDY0LjYxLDIyOS45LDIwMi40MUM1MjkuNTUsMzg5LjU3LDQ0OC41NSw0NTguOTIsMjk5LjY1LDQ1OC45MlptODMuODYtMjY0Ljg1TDM3NiwyMTkuODhIMzkyLjRsLTcuNTItMjUuODFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUltZGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODkuNSAzMjMuNkg1My45M1YxODYuMkg4OS41VjMyMy42ek0xNTYuMSAyNTAuNUwxNjUuMiAxODYuMkgyMTEuNVYzMjMuNkgxODAuNVYyMzAuOUwxNjcuMSAzMjMuNkgxNDUuOEwxMzIuOCAyMzIuOUwxMzIuNyAzMjMuNkgxMDEuNVYxODYuMkgxNDcuNkMxNDguMSAxOTQuNSAxNTAuNCAyMDQuMyAxNTEuOSAyMTUuNkwxNTYuMSAyNTAuNXpNMjIzLjcgMzIzLjZWMTg2LjJIMjUwLjNDMjY3LjMgMTg2LjIgMjc3LjMgMTg3LjEgMjgzLjMgMTg4LjZDMjg5LjQgMTkwLjMgMjk0IDE5Mi44IDI5Ny4yIDE5Ni41QzMwMC4zIDE5OS44IDMwMi4zIDIwMy4xIDMwMyAyMDguNUMzMDMuOSAyMTIuOSAzMDQuNCAyMjEuNiAzMDQuNCAyMzQuN1YyODIuOUMzMDQuNCAyOTUuMiAzMDMuNyAzMDMuNCAzMDIuNSAzMDcuNkMzMDEuNCAzMTEuNyAyOTkuNCAzMTUgMjk2LjUgMzE3LjNDMjkzLjcgMzE5LjcgMjkwLjEgMzIxLjQgMjg1LjggMzIyLjNDMjgxLjYgMzIzLjEgMjc1LjIgMzIzLjYgMjY2LjcgMzIzLjZIMjIzLjd6TTI1OS4yIDIwOS43VjI5OS4xQzI2NC4zIDI5OS4xIDI2Ny41IDI5OC4xIDI2OC42IDI5Ni44QzI2OS43IDI5NC44IDI3MC40IDI4OS4yIDI3MC40IDI4MC4xVjIyNi44QzI3MC40IDIyMC42IDI3MC4zIDIxNi42IDI2OS43IDIxNC44QzI2OS40IDIxMyAyNjguNSAyMTEuOCAyNjcuMSAyMTAuMUMyNjUuNyAyMTAuMSAyNjMgMjA5LjcgMjU5LjIgMjA5LjdWMjA5Ljd6TTMxNi41IDMyMy42VjE4Ni4ySDM1MC42VjIzMC4xQzM1My41IDIyNy43IDM1Ni43IDIyNS4yIDM2MC4xIDIyMy41QzM2My43IDIyMiAzNjguOSAyMjEuMSAzNzIuOSAyMjEuMUMzNzcuNyAyMjEuMSAzODEuOCAyMjEuOSAzODUuMiAyMjMuM0MzODguNiAyMjQuOCAzOTEuMiAyMjYuOCAzOTMuMiAyMjkuNUMzOTQuOSAyMzIuMSAzOTUuOSAyMzQuOCAzOTYuMyAyMzcuM0MzOTYuNyAyMzkuOSAzOTYuMSAyNDUuMyAzOTYuMSAyNTMuNVYyOTIuMUMzOTYuMSAzMDAuMyAzOTYuMyAzMDYuNCAzOTUuMyAzMTAuNUMzOTQuMiAzMTQuNSAzOTEuNSAzMTguMSAzODcuNSAzMjAuMUMzODMuNCAzMjQgMzc4LjYgMzI1LjQgMzcyLjkgMzI1LjRDMzY4LjkgMzI1LjQgMzYzLjcgMzI0LjUgMzYwLjIgMzIyLjlDMzU2LjcgMzIxLjEgMzUzLjUgMzE4LjQgMzUwLjYgMzE0LjlMMzQ4LjUgMzIzLjZMMzE2LjUgMzIzLjZ6TTM2MS42IDMwMi45QzM2Mi4zIDMwMS4xIDM2Mi42IDI5Ni45IDM2Mi42IDI5MC40VjI1NUMzNjIuNiAyNDkuNCAzNjIuMyAyNDUuNSAzNjEuNSAyNDMuOEMzNjAuOCAyNDEuOSAzNTcuOCAyNDEuMSAzNTUuNyAyNDEuMUMzNTMuNyAyNDEuMSAzNTIuMyAyNDEuOSAzNTEuNiAyNDMuNEMzNTEgMjQ0LjkgMzUwLjYgMjQ4LjggMzUwLjYgMjU1VjI5MS40QzM1MC42IDI5Ny41IDM1MSAzMDEuNCAzNTEuOCAzMDNDMzUyLjQgMzA0LjcgMzUzLjkgMzA1LjUgMzU1LjkgMzA1LjVDMzU4LjEgMzA1LjUgMzYwLjEgMzA0LjcgMzYxLjYgMzAyLjlMMzYxLjYgMzAyLjl6TTQxOC40IDMyLjA0QzQzNC4xIDMzLjI3IDQ0Ny4xIDQ3LjI4IDQ0Ny4xIDYzLjkyVjQ0OC4xQzQ0Ny4xIDQ2NC41IDQzNS4yIDQ3OC41IDQxOC45IDQ3OS4xQzQxOC42IDQ3OS4xIDQxOC40IDQ4MCA0MTguMSA0ODBIMjkuODhDMjkuNiA0ODAgMjkuMzIgNDc5LjEgMjkuMDQgNDc5LjlDMTMuMzEgNDc4LjUgMS4wOTMgNDY2LjEgMCA0NDkuN0wuMDE4NiA2MS43OEMxLjA4MSA0NS44OCAxMy44MiAzMy4wOSAzMC4yNiAzMS4xSDQxNy43QzQxNy45IDMxLjEgNDE4LjIgMzIuMDEgNDE4LjQgMzIuMDRMNDE4LjQgMzIuMDR6TTMwLjI3IDQxLjI2QzE5IDQyLjAxIDEwLjAyIDUxLjAxIDkuMjU3IDYyLjRWNDQ5LjdDOS42MyA0NTUuMSAxMS45MSA0NjAuMiAxNS43IDQ2NEMxOS40OCA0NjcuOSAyNC41MSA0NzAuMyAyOS44OSA0NzAuN0g0MTguMUM0MjkuNiA0NjkuNyA0MzguNyA0NTkuMSA0MzguNyA0NDguMVY2My45MUM0MzguNyA1OC4xNyA0MzYuNiA1Mi42NSA0MzIuNyA0OC40NUM0MjguOCA0NC4yNCA0MjMuNCA0MS42NyA0MTcuNyA0MS4yNkwzMC4yNyA0MS4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5zdGFncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC4xIDE0MWMtNjMuNiAwLTExNC45IDUxLjMtMTE0LjkgMTE0LjlzNTEuMyAxMTQuOSAxMTQuOSAxMTQuOVMzMzkgMzE5LjUgMzM5IDI1NS45IDI4Ny43IDE0MSAyMjQuMSAxNDF6bTAgMTg5LjZjLTQxLjEgMC03NC43LTMzLjUtNzQuNy03NC43czMzLjUtNzQuNyA3NC43LTc0LjcgNzQuNyAzMy41IDc0LjcgNzQuNy0zMy42IDc0LjctNzQuNyA3NC43em0xNDYuNC0xOTQuM2MwIDE0LjktMTIgMjYuOC0yNi44IDI2LjgtMTQuOSAwLTI2LjgtMTItMjYuOC0yNi44czEyLTI2LjggMjYuOC0yNi44IDI2LjggMTIgMjYuOCAyNi44em03Ni4xIDI3LjJjLTEuNy0zNS45LTkuOS02Ny43LTM2LjItOTMuOS0yNi4yLTI2LjItNTgtMzQuNC05My45LTM2LjItMzctMi4xLTE0Ny45LTIuMS0xODQuOSAwLTM1LjggMS43LTY3LjYgOS45LTkzLjkgMzYuMXMtMzQuNCA1OC0zNi4yIDkzLjljLTIuMSAzNy0yLjEgMTQ3LjkgMCAxODQuOSAxLjcgMzUuOSA5LjkgNjcuNyAzNi4yIDkzLjlzNTggMzQuNCA5My45IDM2LjJjMzcgMi4xIDE0Ny45IDIuMSAxODQuOSAwIDM1LjktMS43IDY3LjctOS45IDkzLjktMzYuMiAyNi4yLTI2LjIgMzQuNC01OCAzNi4yLTkzLjkgMi4xLTM3IDIuMS0xNDcuOCAwLTE4NC44ek0zOTguOCAzODhjLTcuOCAxOS42LTIyLjkgMzQuNy00Mi42IDQyLjYtMjkuNSAxMS43LTk5LjUgOS0xMzIuMSA5cy0xMDIuNyAyLjYtMTMyLjEtOWMtMTkuNi03LjgtMzQuNy0yMi45LTQyLjYtNDIuNi0xMS43LTI5LjUtOS05OS41LTktMTMyLjFzLTIuNi0xMDIuNyA5LTEzMi4xYzcuOC0xOS42IDIyLjktMzQuNyA0Mi42LTQyLjYgMjkuNS0xMS43IDk5LjUtOSAxMzIuMS05czEwMi43LTIuNiAxMzIuMSA5YzE5LjYgNy44IDM0LjcgMjIuOSA0Mi42IDQyLjYgMTEuNyAyOS41IDkgOTkuNSA5IDEzMi4xczIuNyAxMDIuNy05IDEzMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnN0YWxvZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuMzg0LDQ4MEgzODcuMTEzTDUwMi41NTQsMjc1Ljc2NSwyMDQuMjI5LDMzMy4yMTFaTTUwNC43MjYsMjQwLjA3OCwzODcuMTEzLDMySDE1NS42NjlMMzYwLjIzLDI2Ny45Wk0xMjQuMzg2LDQ4LjgwOSw3LjI3NCwyNTYsMTIzLjIzNiw0NjEuMTU0LDIyNS42MjcsMTY1LjU2MVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJjb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyIDMySDU2QzI1LjEgMzIgMCA1Ny4xIDAgODh2MzM2YzAgMzAuOSAyNS4xIDU2IDU2IDU2aDMzNmMzMC45IDAgNTYtMjUuMSA1Ni01NlY4OGMwLTMwLjktMjUuMS01Ni01Ni01NnptLTEwOC4zIDgyLjFjMC0xOS44IDI5LjktMTkuOCAyOS45IDB2MTk5LjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTE0LjF6bS03NC42LTcuNWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYyMTYuNWMwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxMDYuNnptLTc0LjcgNy41YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjE5OS41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjExNC4xek01OS43IDE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM2MwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxNDR6bTMyMy40IDIyNy44Yy03Mi44IDYzLTI0MS43IDY1LjQtMzE4LjEgMC0xNS0xMi44IDQuNC0zNS41IDE5LjQtMjIuNyA2NS45IDU1LjMgMjE2LjEgNTMuOSAyNzkuMyAwIDE0LjktMTIuOSAzNC4zIDkuOCAxOS40IDIyLjd6bTUuMi05My41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJuZXRFeHBsb3JlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODMuMDQ5IDE1OS43MDZjMTAuODU1LTI0LjU3NSAyMS40MjQtNjAuNDM4IDIxLjQyNC04Ny44NzEgMC03Mi43MjItNzkuNjQxLTk4LjM3MS0yMDkuNjczLTM4LjU3Ny0xMDcuNjMyLTcuMTgxLTIxMS4yMjEgNzMuNjctMjM3LjA5OCAxODYuNDU3IDMwLjg1Mi0zNC44NjIgNzguMjcxLTgyLjI5OCAxMjEuOTc3LTEwMS4xNThDMTI1LjQwNCAxNjYuODUgNzkuMTI4IDIyOC4wMDIgNDMuOTkyIDI5MS43MjUgMjMuMjQ2IDMyOS42NTEgMCAzOTAuOTQgMCA0MzYuNzQ3YzAgOTguNTc1IDkyLjg1NCA4Ni41IDE4MC4yNTEgNDIuMDA2IDMxLjQyMyAxNS40MyA2Ni41NTkgMTUuNTczIDEwMS42OTUgMTUuNTczIDk3LjEyNCAwIDE4NC4yNDktNTQuMjk0IDIxNi44MTQtMTQ2LjAyMkgzNzcuOTI3Yy01Mi41MDkgODguNTkzLTE5Ni44MTkgNTIuOTk2LTE5Ni44MTktNDcuNDM2SDUwOS45YzYuNDA3LTQzLjU4MS0xLjY1NS05NS43MTUtMjYuODUxLTE0MS4xNjJ6TTY0LjU1OSAzNDYuODc3YzE3LjcxMSA1MS4xNSA1My43MDMgOTUuODcxIDEwMC4yNjYgMTIzLjMwNC04OC43NDEgNDguOTQtMTczLjI2NyAyOS4wOTYtMTAwLjI2Ni0xMjMuMzA0em0xMTUuOTc3LTEwOC44NzNjMi01NS4xNTEgNTAuMjc2LTk0Ljg3MSAxMDMuOTgtOTQuODcxIDUzLjQxOCAwIDEwMS45ODEgMzkuNzIgMTAzLjk4MSA5NC44NzFIMTgwLjUzNnptMTg0LjUzNi0xODcuNmMyMS40MjUtMTAuMjg3IDQ4LjU2My0yMi4wMDMgNzIuNTU4LTIyLjAwMyAzMS40MjIgMCA1NC4yNzQgMjEuNzE3IDU0LjI3NCA1My43MjIgMCAyMC4wMDMtNy40MjcgNDkuMDA3LTE0LjU2OSA2Ny44NjctMjYuMjgtNDIuMjkyLTY1Ljk4Ni04MS41ODQtMTEyLjI2My05OS41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUludmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy40IDMySDQwLjZDMTguMiAzMiAwIDUwLjIgMCA3Mi42djM2Ni44QzAgNDYxLjggMTguMiA0ODAgNDAuNiA0ODBoMzY2LjhjMjIuNCAwIDQwLjYtMTguMiA0MC42LTQwLjZWNzIuNmMwLTIyLjQtMTguMi00MC42LTQwLjYtNDAuNnpNMTc2LjEgMTQ1LjZjLjQgMjMuNC0yMi40IDI3LjMtMjYuNiAyNy40LTE0LjkgMC0yNy4xLTEyLTI3LjEtMjcgLjEtMzUuMiA1My4xLTM1LjUgNTMuNy0uNHpNMzMyLjggMzc3Yy02NS42IDAtMzQuMS03NC0yNS0xMDYuNiAxNC4xLTQ2LjQtNDUuMi01OS01OS45LjdsLTI1LjggMTAzLjNIMTc3bDguMS0zMi41Yy0zMS41IDUxLjgtOTQuNiA0NC40LTk0LjYtNC4zLjEtMTQuMy45LTE0IDIzLTEwNC4xSDgxLjdsOS43LTM1LjZoNzYuNGMtMzMuNiAxMzMuNy0zMi42IDEyNi45LTMyLjkgMTM4LjIgMCAyMC45IDQwLjkgMTMuNSA1Ny40LTIzLjJsMTkuOC03OS40aC0zMi4zbDkuNy0zNS42aDY4LjhsLTguOSA0MC41YzQwLjUtNzUuNSAxMjcuOS00Ny44IDEwMS44IDM4LTE0LjIgNTEuMS0xNC42IDUwLjctMTQuOSA1OC44IDAgMTUuNSAxNy41IDIyLjYgMzEuOC0xNi45TDM4NiAzMjVjLTEwLjUgMzYuNy0yOS40IDUyLTUzLjIgNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlveGhvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE2IDE2MGgtNjcuM0M1MTEuMiA3MC43IDQyMi45IDggMzIwIDggMTgzIDggNzIgMTE5IDcyIDI1NmMwIDE2LjQgMS42IDMyLjUgNC43IDQ4SDI0Yy0xMy4zIDAtMjQgMTAuOC0yNCAyNCAwIDEzLjMgMTAuNyAyNCAyNCAyNGg2Ny4zYzM3LjUgODkuMyAxMjUuOCAxNTIgMjI4LjcgMTUyIDEzNyAwIDI0OC0xMTEgMjQ4LTI0OCAwLTE2LjQtMS42LTMyLjUtNC43LTQ4SDYxNmMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNHptLTk2IDk2YzAgMTEwLjUtODkuNSAyMDAtMjAwIDIwMC03NS43IDAtMTQxLjYtNDItMTc1LjUtMTA0SDQyNGMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNEgxMjUuOGMtMy44LTE1LjQtNS44LTMxLjQtNS44LTQ4IDAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMCA3NS43IDAgMTQxLjYgNDIgMTc1LjUgMTA0SDIxNmMtMTMuMyAwLTI0IDEwLjgtMjQgMjQgMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjk4LjJjMy44IDE1LjQgNS44IDMxLjQgNS44IDQ4em0tMzA0LTI0aDIwOGMxMy4zIDAgMjQgMTAuNyAyNCAyNCAwIDEzLjItMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0IDAtMTMuMiAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGNoSW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzEuOTIgMzQuNzdDNTAuMiA0Ny42NyA3LjQgOTYuODQgNyAxMDkuNzN2MjEuMzRjMCAyNy4wNiAyNS4yOSA1MC44NCA0OC4yNSA1MC44NCAyNy41NyAwIDUwLjU0LTIyLjg1IDUwLjU0LTUwIDAgMjcuMTIgMjIuMTggNTAgNDkuNzYgNTBzNDktMjIuODUgNDktNTBjMCAyNy4xMiAyMy41OSA1MCA1MS4xNiA1MGguNWMyNy41NyAwIDUxLjE2LTIyLjg1IDUxLjE2LTUwIDAgMjcuMTIgMjEuNDcgNTAgNDkgNTBzNDkuNzYtMjIuODUgNDkuNzYtNTBjMCAyNy4xMiAyMyA1MCA1MC41NCA1MCAyMyAwIDQ4LjI1LTIzLjc4IDQ4LjI1LTUwLjg0di0yMS4zNGMtLjQtMTIuOS00My4yLTYyLjA3LTY0LjkyLTc1QzM3Mi41NiAzMi40IDMyNS43NiAzMiAyNTYgMzJTOTEuMTQgMzMuMSA3MS45MiAzNC43N3ptMTMyLjMyIDEzNC4zOWMtMjIgMzguNC03Ny45IDM4LjcxLTk5Ljg1LjI1LTEzLjE3IDIzLjE0LTQzLjE3IDMyLjA3LTU2IDI3LjY2LTMuODcgNDAuMTUtMTMuNjcgMjM3LjEzIDE3LjczIDI2OS4xNSA4MCAxOC42NyAzMDIuMDggMTguMTIgMzc5Ljc2IDAgMzEuNjUtMzIuMjcgMjEuMzItMjMyIDE3Ljc1LTI2OS4xNS0xMi45MiA0LjQ0LTQyLjg4LTQuNi01Ni0yNy42Ni0yMiAzOC41Mi03Ny44NSAzOC4xLTk5Ljg1LS4yNC03LjEgMTIuNDktMjMuMDUgMjguOTQtNTEuNzYgMjguOTRhNTcuNTQgNTcuNTQgMCAwIDEtNTEuNzUtMjguOTR6bS00MS41OCA1My43N2MxNi40NyAwIDMxLjA5IDAgNDkuMjIgMTkuNzhhNDM2LjkxIDQzNi45MSAwIDAgMSA4OC4xOCAwQzMxOC4yMiAyMjMgMzMyLjg1IDIyMyAzNDkuMzEgMjIzYzUyLjMzIDAgNjUuMjIgNzcuNTMgODMuODcgMTQ0LjQ1IDE3LjI2IDYyLjE1LTUuNTIgNjMuNjctMzMuOTUgNjMuNzMtNDIuMTUtMS41Ny02NS40OS0zMi4xOC02NS40OS02Mi43OS0zOS4yNSA2LjQzLTEwMS45MyA4Ljc5LTE1NS41NSAwIDAgMzAuNjEtMjMuMzQgNjEuMjItNjUuNDkgNjIuNzktMjguNDItLjA2LTUxLjItMS41OC0zMy45NC02My43MyAxOC42Ny02NyAzMS41Ni0xNDQuNDUgODMuODgtMTQ0LjQ1ek0yNTYgMjcwLjc5cy00NC4zOCA0MC43Ny01Mi4zNSA1NS4yMWwyOS0xLjE3djI1LjMyYzAgMS41NSAyMS4zNC4xNiAyMy4zMy4xNiAxMS42NS41NCAyMy4zMSAxIDIzLjMxLS4xNnYtMjUuMjhsMjkgMS4xN2MtOC0xNC40OC01Mi4zNS01NS4yNC01Mi4zNS01NS4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSXR1bmVzTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODEuOSAzODguMmMtNi40IDI3LjQtMjcuMiA0Mi44LTU1LjEgNDgtMjQuNSA0LjUtNDQuOSA1LjYtNjQuNS0xMC4yLTIzLjktMjAuMS0yNC4yLTUzLjQtMi43LTc0LjQgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDYuNC03LjIgNC40LTQuMSA0LjQtMTYzLjIgMC0xMS4yLTUuNS0xNC4zLTE3LTEyLjMtOC4yIDEuNC0xODUuNyAzNC42LTE4NS43IDM0LjYtMTAuMiAyLjItMTMuNCA1LjItMTMuNCAxNi43IDAgMjM0LjcgMS4xIDIyMy45LTIuNSAyMzkuNS00LjIgMTguMi0xNS40IDMxLjktMzAuMiAzOS41LTE2LjggOS4zLTQ3LjIgMTMuNC02My40IDEwLjQtNDMuMi04LjEtNTguNC01OC0yOS4xLTg2LjYgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDEwLjEtMTEuNSAxLjgtMjU2LjYgNS4yLTI3MC4yLjgtNS4yIDMtOS42IDcuMS0xMi45IDQuMi0zLjUgMTEuOC01LjUgMTMuNC01LjUgMjA0LTM4LjIgMjI4LjktNDMuMSAyMzIuNC00My4xIDExLjUtLjggMTguMSA2IDE4LjEgMTcuNi4yIDM0NC41IDEuMSAzMjYtMS44IDMzOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdHVuZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjYgODAuM0MxMjkgODAuMyA1Mi41IDE1NyA1Mi41IDI1MS41UzEyOSA0MjIuOCAyMjMuNiA0MjIuOHMxNzEuMi03Ni43IDE3MS4yLTE3MS4yYzAtOTQuNi03Ni43LTE3MS4zLTE3MS4yLTE3MS4zem03OS40IDI0MGMtMy4yIDEzLjYtMTMuNSAyMS4yLTI3LjMgMjMuOC0xMi4xIDIuMi0yMi4yIDIuOC0zMS45LTUtMTEuOC0xMC0xMi0yNi40LTEuNC0zNi44IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgMy4yLTMuNiAyLjItMiAyLjItODAuOCAwLTUuNi0yLjctNy4xLTguNC02LjEtNCAuNy05MS45IDE3LjEtOTEuOSAxNy4xLTUgMS4xLTYuNyAyLjYtNi43IDguMyAwIDExNi4xLjUgMTEwLjgtMS4yIDExOC41LTIuMSA5LTcuNiAxNS44LTE0LjkgMTkuNi04LjMgNC42LTIzLjQgNi42LTMxLjQgNS4yLTIxLjQtNC0yOC45LTI4LjctMTQuNC00Mi45IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgNS01LjcuOS0xMjcgMi42LTEzMy43LjQtMi42IDEuNS00LjggMy41LTYuNCAyLjEtMS43IDUuOC0yLjcgNi43LTIuNyAxMDEtMTkgMTEzLjMtMjEuNCAxMTUuMS0yMS40IDUuNy0uNCA5IDMgOSA4LjctLjEgMTcwLjYuNCAxNjEuNC0xIDE2Ny42ek0zNDUuMiAzMkgxMDIuOEM0NS45IDMyIDAgNzcuOSAwIDEzNC44djI0Mi40QzAgNDM0LjEgNDUuOSA0ODAgMTAyLjggNDgwaDI0Mi40YzU3IDAgMTAyLjgtNDUuOSAxMDIuOC0xMDIuOFYxMzQuOEM0NDggNzcuOSA0MDIuMSAzMiAzNDUuMiAzMnpNMjIzLjYgNDQ0Yy0xMDYuMyAwLTE5Mi41LTg2LjItMTkyLjUtMTkyLjVTMTE3LjMgNTkgMjIzLjYgNTlzMTkyLjUgODYuMiAxOTIuNSAxOTIuNVMzMjkuOSA0NDQgMjIzLjYgNDQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKYXZhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Ny43NCAzMTIuOWM5LjgtNi43IDIzLjQtMTIuNSAyMy40LTEyLjVzLTM4LjcgNy03Ny4yIDEwLjJjLTQ3LjEgMy45LTk3LjcgNC43LTEyMy4xIDEuMy02MC4xLTggMzMtMzAuMSAzMy0zMC4xcy0zNi4xLTIuNC04MC42IDE5Yy01Mi41IDI1LjQgMTMwIDM3IDIyNC41IDEyLjF6bS04NS40LTMyLjFjLTE5LTQyLjctODMuMS04MC4yIDAtMTQ1LjhDMjk2IDUzLjIgMjQyLjg0IDAgMjQyLjg0IDBjMjEuNSA4NC41LTc1LjYgMTEwLjEtMTEwLjcgMTYyLjYtMjMuOSAzNS45IDExLjcgNzQuNCA2MC4yIDExOC4yem0xMTQuNi0xNzYuMmMuMSAwLTE3NS4yIDQzLjgtOTEuNSAxNDAuMiAyNC43IDI4LjQtNi41IDU0LTYuNSA1NHM2Mi43LTMyLjQgMzMuOS03Mi45Yy0yNi45LTM3LjgtNDcuNS01Ni42IDY0LjEtMTIxLjN6bS02LjEgMjcwLjVhMTIuMTkgMTIuMTkgMCAwIDEtMiAyLjZjMTI4LjMtMzMuNyA4MS4xLTExOC45IDE5LjgtOTcuM2ExNy4zMyAxNy4zMyAwIDAgMC04LjIgNi4zIDcwLjQ1IDcwLjQ1IDAgMCAxIDExLTNjMzEtNi41IDc1LjUgNDEuNS0yMC42IDkxLjR6TTM0OCA0MzcuNHMxNC41IDExLjktMTUuOSAyMS4yYy01Ny45IDE3LjUtMjQwLjggMjIuOC0yOTEuNi43LTE4LjMtNy45IDE2LTE5IDI2LjgtMjEuMyAxMS4yLTIuNCAxNy43LTIgMTcuNy0yLTIwLjMtMTQuMy0xMzEuMyAyOC4xLTU2LjQgNDAuMkMyMzIuODQgNTA5LjQgNDAxIDQ2MS4zIDM0OCA0MzcuNHpNMTI0LjQ0IDM5NmMtNzguNyAyMiA0Ny45IDY3LjQgMTQ4LjEgMjQuNWExODUuODkgMTg1Ljg5IDAgMCAxLTI4LjItMTMuOGMtNDQuNyA4LjUtNjUuNCA5LjEtMTA2IDQuNS0zMy41LTMuOC0xMy45LTE1LjItMTMuOS0xNS4yem0xNzkuOCA5Ny4yYy03OC43IDE0LjgtMTc1LjggMTMuMS0yMzMuMyAzLjYgMC0uMSAxMS44IDkuNyA3Mi40IDEzLjYgOTIuMiA1LjkgMjMzLjgtMy4zIDIzNy4xLTQ2LjkgMCAwLTYuNCAxNi41LTc2LjIgMjkuN3pNMjYwLjY0IDM1M2MtNTkuMiAxMS40LTkzLjUgMTEuMS0xMzYuOCA2LjYtMzMuNS0zLjUtMTEuNi0xOS43LTExLjYtMTkuNy04Ni44IDI4LjggNDguMiA2MS40IDE2OS41IDI1LjlhNjAuMzcgNjAuMzcgMCAwIDEtMjEuMS0xMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZWRpT3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk4LjUgMzczLjZjOTUuOS0xMjIuMSAxNy4yLTIzMy4xIDE3LjItMjMzLjEgNDUuNCA4NS44LTQxLjQgMTcwLjUtNDEuNCAxNzAuNSAxMDUtMTcxLjUtNjAuNS0yNzEuNS02MC41LTI3MS41IDk2LjkgNzIuNy0xMC4xIDE5MC43LTEwLjEgMTkwLjcgODUuOCAxNTguNC02OC42IDIzMC4xLTY4LjYgMjMwLjFzLS40LTE2LjktMi4yLTg1LjdjNC4zIDQuNSAzNC41IDM2LjIgMzQuNSAzNi4ybC0yNC4yLTQ3LjQgNjIuNi05LjEtNjIuNi05LjEgMjAuMi01NS41LTMxLjQgNDUuOWMtMi4yLTg3LjctNy44LTMwNS4xLTcuOS0zMDYuOXYtMi40IDEtMSAyLjRjMCAxLTUuNiAyMTktNy45IDMwNi45bC0zMS40LTQ1LjkgMjAuMiA1NS41LTYyLjYgOS4xIDYyLjYgOS4xLTI0LjIgNDcuNCAzNC41LTM2LjJjLTEuOCA2OC44LTIuMiA4NS43LTIuMiA4NS43cy0xNTQuNC03MS43LTY4LjYtMjMwLjFjMCAwLTEwNy0xMTguMS0xMC4xLTE5MC43IDAgMC0xNjUuNSA5OS45LTYwLjUgMjcxLjUgMCAwLTg2LjgtODQuOC00MS40LTE3MC41IDAgMC03OC43IDExMSAxNy4yIDIzMy4xIDAgMC0yNi4yLTE2LjEtNDkuNC03Ny43IDAgMCAxNi45IDE4My4zIDIyMiAxODUuN2g0LjFjMjA1LTIuNCAyMjItMTg1LjcgMjIyLTE4NS43LTIzLjYgNjEuNS00OS45IDc3LjctNDkuOSA3Ny43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZW5raW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Ny4xIDQyNWMtMS40LTExLjItMTktMjMuMS0yOC4yLTMxLjktNS4xLTUtMjktMjMuMS0zMC40LTI5LjktMS40LTYuNiA5LjctMjEuNSAxMy4zLTI4LjkgNS4xLTEwLjcgOC44LTIzLjcgMTEuMy0zMi42IDE4LjgtNjYuMSAyMC43LTE1Ni45LTYuMi0yMTEuMi0xMC4yLTIwLjYtMzguNi00OS01Ni40LTYyLjUtNDItMzEuNy0xMTkuNi0zNS4zLTE3MC4xLTE2LjYtMTQuMSA1LjItMjcuOCA5LjgtNDAuMSAxNy4xLTMzLjEgMTkuNC02OC4zIDMyLjUtNzguMSA3MS42LTI0LjIgMTAuOC0zMS41IDQxLjgtMzAuMyA3Ny44LjIgNyA0LjEgMTUuOCAyLjcgMjIuNC0uNyAzLjMtNS4yIDcuNi02LjEgOS44LTExLjYgMjcuNy0yLjMgNjQgMTEuMSA4My43IDguMSAxMS45IDIxLjUgMjIuNCAzOS4yIDI1LjIuNyAxMC42IDMuMyAxOS43IDguMiAzMC40IDMuMSA2LjggMTQuNyAxOSAxMC40IDI3LjctMi4yIDQuNC0yMSAxMy44LTI3LjMgMTcuNkM4OSA0MDcuMiA3My43IDQxNSA1NC4yIDQyOWMtMTIuNiA5LTMyLjMgMTAuMi0yOS4yIDMxLjEgMi4xIDE0LjEgMTAuMSAzMS42IDE0LjcgNDUuOC43IDIgMS40IDQuMSAyLjEgNmg0MjJjNC45LTE1LjMgOS43LTMwLjkgMTQuNi00Ny4yIDMuNC0xMS40IDEwLjItMjcuOCA4LjctMzkuN3pNMjA1LjkgMzMuN2MxLjgtLjUgMy40LjcgNC45IDIuNC0uMiA1LjItNS40IDUuMS04LjkgNi44LTUuNCA2LjctMTMuNCA5LjgtMjAgMTcuMi02LjggNy41LTE0LjQgMjcuNy0yMy40IDMwLTQuNSAxLjEtOS43LS44LTEzLjYtLjUtMTAuNC43LTE3LjcgNi0yOC4zIDcuNSAxMy42LTI5LjkgNTYuMS01NCA4OS4zLTYzLjR6bS0xMDQuOCA5My42YzEzLjUtMTQuOSAzMi4xLTI0LjEgNTQuOC0yNS45IDExLjcgMjkuNy04LjQgNjUtLjkgOTcuNiAyLjMgOS45IDEwLjIgMjUuNC0yLjQgMjUuNy4zLTI4LjMtMzQuOC00Ni4zLTYxLjMtMjkuNi0xLjgtMjEuNS00LjktNTEuNyA5LjgtNjcuOHptMzYuNyAyMDAuMmMtMS00LjEtMi43LTEyLjktMi4zLTE1LjEgMS42LTguNyAxNy4xLTEyLjUgMTEtMjQuNy0xMS4zLS4xLTEzLjggMTAuMi0yNC4xIDExLjMtMjYuNyAyLjYtNDUuNi0zNS40LTQ0LjQtNTguNCAxLTE5LjUgMTcuNi0zOC4yIDQwLjEtMzUuOCAxNiAxLjggMjEuNCAxOS4yIDI0LjUgMzQuNyA5LjIuNSAyMi41LS40IDI2LjktNy42LS42LTE3LjUtOC44LTMxLjYtOC4yLTQ3LjcgMS0zMC4zIDE3LjUtNTcuNiA0LjgtODcuNCAxMy42LTMwLjkgNTMuNS01NS4zIDgzLjEtNzAgMzYuNi0xOC4zIDk0LjktMy43IDEyOS4zIDE1LjggMTkuNyAxMS4xIDM0LjQgMzIuNyA0OC4zIDUwLjctMTkuNS01LjgtMzYuMSA0LjItMzMuMSAyMC4zIDE2LjMtMTQuOSA0NC4yLS4yIDUyLjUgMTYuNCA3LjkgMTUuOCA3LjggMzkuMyA5IDYyLjggMi45IDU3LTEwLjQgMTE1LjktMzkuMSAxNTcuMS03LjcgMTEtMTQuMSAyMy0yNC45IDMwLjYtMjYgMTguMi02NS40IDM0LjctOTkuMiAyMy40LTQ0LjctMTUtNjUtNDQuOC04OS41LTc4LjguNyAxOC43IDEzLjggMzQuMSAyNi44IDQ4LjQgMTEuMyAxMi41IDI1IDI2LjYgMzkuNyAzMi40LTEyLjMtMi45LTMxLjEtMy44LTM2LjIgNy4yLTI4LjYtMS45LTU1LjEtNC44LTY4LjctMjQuMi0xMC42LTE1LjQtMjEuNC00MS40LTI2LjMtNjEuNHptMjIyIDEyNC4xYzQuMS0zIDExLjEtMi45IDE3LjQtMy42LTUuNC0yLjctMTMtMy43LTE5LjMtMi4yLS4xLTQuMi0yLTYuOC0zLjItMTAuMiAxMC42LTMuOCAzNS41LTI4LjUgNDkuNi0yMC4zIDYuNyAzLjkgOS41IDI2LjIgMTAuMSAzNyAuNCA5LS44IDE4LTQuNSAyMi44LTE4LjgtLjYtMzUuOC0yLjgtNTAuNy03IC45LTYuMS0xLTEyLjEuNi0xNi41em0tMTcuMi0yMGMtMTYuOC44LTI2LTEuMi0zOC4zLTEwLjguMi0uOCAxLjQtLjUgMS41LTEuNCAxOCA4IDQwLjgtMy4zIDU5LTQuOS03LjkgNS4xLTE0LjYgMTEuNi0yMi4yIDE3LjF6bS0xMi4xIDMzLjJjLTEuNi05LjQtMy41LTEyLTIuOC0yMC4yIDI1LTE2LjYgMjkuNyAyOC42IDIuOCAyMC4yek0yMjYgNDM4LjZjLTExLjYtLjctNDguMS0xNC0zOC41LTIzLjcgOS40IDYuNSAyNy41IDQuOSA0MS4zIDcuMy44IDQuNC0yLjggMTAuMi0yLjggMTYuNHpNNTcuNyA0OTcuMWMtNC4zLTEyLjctOS4yLTI1LjEtMTQuOC0zNi45IDMwLjgtMjMuOCA2NS4zLTQ4LjkgMTAyLjItNjMuNSAyLjgtMS4xIDIzLjIgMjUuNCAyNi4yIDI3LjYgMTYuNSAxMS43IDM3IDIxIDU2LjIgMzAuMiAxLjIgOC44IDMuOSAyMC4yIDguNyAzNS41LjcgMi4zIDEuNCA0LjcgMi4yIDcuMkg1Ny43em0yNDAuNiA1LjdoLS44Yy4zLS4yLjUtLjQuOC0uNXYuNXptNy41LTUuN2MyLjEtMS40IDQuMy0yLjggNi40LTQuMyAxLjEgMS40IDIuMiAyLjggMy4yIDQuM2gtOS42em0xNS4xLTI0LjdjLTEwLjggNy4zLTIwLjYgMTguMy0zMy4zIDI1LjItNiAzLjMtMjcgMTEuNy0zMy40IDEwLjItMy42LS44LTMuOS01LjMtNS40LTkuNS0zLjEtOS0xMC4xLTIzLjQtMTAuOC0zNy0uOC0xNy4yLTIuNS00NiAxNi00Mi40IDE0LjkgMi45IDMyLjMgOS43IDQzLjkgMTYuMSA3LjEgMy45IDExLjEgOC42IDIxLjkgOS41LS4xIDEuNC0uMSAyLjgtLjIgNC4zLTUuOSAzLjktMTUuMyAzLjgtMjEuOCA3LjEgOS41LjQgMTcgMi43IDIzLjUgNS45LS4xIDMuNC0uMyA3LS40IDEwLjZ6bTUzLjQgMjQuN2gtMTRjLS4xLTMuMi0yLjgtNS44LTYuMS01LjhzLTUuOSAyLjYtNi4xIDUuOGgtMTcuNGMtMi44LTQuNC01LjctOC42LTguOS0xMi41IDIuMS0yLjIgNC00LjcgNi02LjkgOSAzLjcgMTQuOC00LjkgMjEuNy00LjIgNy45LjggMTQuMiAxMS43IDI1LjQgMTFsLS42IDEyLjZ6bTguNyAwYy4yLTQgLjQtNy44LjYtMTEuNSAxNS42LTcuMyAyOSAxLjMgMzUuNyAxMS41SDM4M3ptODMuNC0zN2MtMi4zIDExLjItNS44IDI0LTkuOSAzNy4xLS4yLS4xLS40LS4xLS42LS4xSDQyOGMuNi0xLjEgMS4yLTIuMiAxLjktMy4zLTIuNi02LjEtOS04LjctMTAuOS0xNS41IDEyLjEtMjIuNyA2LjUtOTMuNC0yNC4yLTc4LjUgNC4zLTYuMyAxNS42LTExLjUgMjAuOC0xOS4zIDEzIDEwLjQgMjAuOCAyMC4zIDMzLjIgMzEuNCA2LjggNiAyMCAxMy4zIDIxLjQgMjMuMS44IDUuNS0yLjYgMTguOS0zLjggMjUuMXpNMjIyLjIgMTMwLjVjNS40LTE0LjkgMjcuMi0zNC43IDQ1LTMyIDcuNyAxLjIgMTggOC4yIDEyLjIgMTcuNy0zMC4yLTctNDUuMiAxMi42LTU0LjQgMzMuMS04LjEtMi00LjktMTMuMS0yLjgtMTguOHptMTg0LjEgNjMuMWM4LjItMy42IDIyLjQtLjcgMjkuNi01LjMtNC4yLTExLjUtMTAuMy0yMS40LTkuMy0zNy43LjUgMCAxIDAgMS40LjEgNi44IDE0LjIgMTIuNyAyOS4yIDIxLjQgNDEuNy01LjcgMTMuNS00My42IDI1LjQtNDMuMSAxLjJ6bTIwLjQtNDN6bS0xMTcuMiA0NS43Yy02LjgtMTAuOS0xOS0zMi41LTE0LjUtNDUuMyA2LjUgMTEuOSA4LjYgMjQuNCAxNy44IDMzLjMgNC4xIDQgMTIuMiA5IDguMiAyMC4yLS45IDIuNy03LjggOC42LTExLjcgOS43LTE0LjQgNC4zLTQ3LjkuOS0zNi42LTE3LjEgMTEuOS43IDI3LjkgNy44IDM2LjgtLjh6bTI3LjMgNzBjMy44IDYuNiAxLjQgMTguNyAxMi4xIDIwLjYgMjAuMiAzLjQgNDMuNi0xMi4zIDU4LjEtMTcuOCA5LTE1LjItLjgtMjAuNy04LjktMzAuNS0xNi42LTIwLTM4LjgtNDQuOC0zOC03NC43IDYuNy00LjkgNy4zIDcuNCA4LjIgOS43IDguNyAyMC4zIDMwLjQgNDYuMiA0Ni4zIDYzLjUgMy45IDQuMyAxMC4zIDguNCAxMSAxMS4yIDIuMSA4LjItNS40IDE4LTQuNSAyMy41LTIxLjcgMTMuOS00NS44IDI5LjEtODEuNCAyNS42LTcuNC02LjctMTAuMy0yMS40LTIuOS0zMS4xem0tMjAxLjMtOS4yYy02LjgtMy45LTguNC0yMS0xNi40LTIxLjQtMTEuNC0uNy05LjMgMjIuMi05LjMgMzUuNS03LjgtNy4xLTkuMi0yOS4xLTMuNS00MC4zLTYuNi0zLjItOS41IDMuNi0xMy4xIDUuOSA0LjctMzQuMSA0OS44LTE1LjggNDIuMyAyMC4zem0yOTkuNiAyOC44Yy0xMC4xIDE5LjItMjQuNCA0MC40LTU0IDQxLS42LTYuMi0xLjEtMTUuNiAwLTE5LjQgMjIuNy0yLjIgMzYuNi0xMy43IDU0LTIxLjZ6bS0xNDEuOSAxMi40YzE4LjkgOS45IDUzLjYgMTEgNzkuMyAxMC4yIDEuNCA1LjYgMS4zIDEyLjYgMS40IDE5LjQtMzMgMS44LTcyLTYuNC04MC43LTI5LjZ6bTkyLjIgNDYuN2MtMS43IDQuMy01LjMgOS4zLTkuOCAxMS4xLTEyLjEgNC45LTQ1LjYgOC43LTYyLjQtLjMtMTAuNy01LjctMTcuNS0xOC41LTIzLjQtMjYtMi44LTMuNi0xNi45LTEyLjktLjItMTIuOSAxMy4xIDMyLjcgNTggMjkgOTUuOCAyOC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKaXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5MCAyNDEuN0M0MTcuMSAxNjkgMzIwLjYgNzEuOCAyNDguNSAwIDgzIDE2NC45IDYgMjQxLjcgNiAyNDEuN2MtNy45IDcuOS03LjkgMjAuNyAwIDI4LjdDMTM4LjggNDAyLjcgNjcuOCAzMzEuOSAyNDguNSA1MTJjMzc5LjQtMzc4IDE1LjctMTYuNyAyNDEuNS0yNDEuNyA4LTcuOSA4LTIwLjcgMC0yOC42em0tMjQxLjUgOTBsLTc2LTc1LjcgNzYtNzUuNyA3NiA3NS43LTc2IDc1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvZ2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3OC4xIDQ1QzMzNy42IDE5LjkgMjkyLjYgOCAyNDguMiA4IDE2NSA4IDgzLjggNDkuOSAzNi45IDEyNS45Yy03MS45IDExNi42LTM1LjYgMjY5LjMgODEgMzQxLjJzMjY5LjMgMzUuNiAzNDEuMi04MC45YzcxLjktMTE2LjYgMzUuNi0yNjkuNC04MS0zNDEuMnptNTEuOCAzMjMuMmMtNDAuNCA2NS41LTExMC40IDEwMS41LTE4MiAxMDEuNS02LjggMC0xMy42LS40LTIwLjQtMS05LTEzLjYtMTkuOS0zMy4zLTIzLjctNDIuNC01LjctMTMuNy0yNy4yLTQ1LjYgMzEuMi02Ny4xIDUxLjctMTkuMSAxNzYuNy0xNi41IDIwOC44LTE3LjYtNCA5LTguNiAxNy45LTEzLjkgMjYuNnptLTIwMC44LTg2LjNjLTU1LjUtMS40LTgxLjctMjAuOC01OC41LTQ4LjJzNTEuMS00MC43IDY4LjktNTEuMmMxNy45LTEwLjUgMjcuMy0zMy43LTIzLjYtMjkuN0M4Ny4zIDE2MS41IDQ4LjYgMjUyLjEgMzcuNiAyOTNjLTguOC00OS43LS4xLTEwMi43IDI4LjUtMTQ5LjFDMTI4IDQzLjQgMjU5LjYgMTIuMiAzNjAuMSA3NC4xYzc0LjggNDYuMSAxMTEuMiAxMzAuOSA5OS4zIDIxMi43LTI0LjktLjUtMTc5LjMtMy42LTIzMC4zLTQuOXptMTgzLjgtNTQuOGMtMjIuNy02LTU3IDExLjMtODYuNyAyNy4yLTI5LjcgMTUuOC0zMS4xIDguMi0zMS4xIDguMnM0MC4yLTI4LjEgNTAuNy0zNC41IDMxLjktMTQgMTMuNC0yNC42Yy0zLjItMS44LTYuNy0yLjctMTAuNC0yLjctMTcuOCAwLTQxLjUgMTguNy02Ny41IDM1LjYtMzEuNSAyMC41LTY1LjMgMzEuMy02NS4zIDMxLjNsMTY5LjUtMS42IDQ2LjUtMjMuNHMzLjYtOS41LTE5LjEtMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSm9vbWxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS42IDkyLjFDLjYgNTguOCAyNy40IDMyIDYwLjQgMzJjMzAgMCA1NC41IDIxLjkgNTkuMiA1MC4yIDMyLjYtNy42IDY3LjEuNiA5Ni41IDMwbC00NC4zIDQ0LjNjLTIwLjUtMjAuNS00Mi42LTE2LjMtNTUuNC0zLjUtMTQuMyAxNC4zLTE0LjMgMzcuOSAwIDUyLjJsOTkuNSA5OS41LTQ0IDQ0LjNjLTg3LjctODcuMi00OS43LTQ5LjctOTkuOC05OS43LTI2LjgtMjYuNS0zNS02NC44LTI0LjgtOTguOUMyMC40IDE0NC42LjYgMTIwLjcuNiA5Mi4xem0xMjkuNSAxMTYuNGw0NC4zIDQ0LjNjMTAtMTAgODkuNy04OS43IDk5LjctOTkuOCAxNC4zLTE0LjMgMzcuNi0xNC4zIDUxLjkgMCAxMi44IDEyLjggMTcgMzUtMy41IDU1LjRsNDQgNDQuM2MzMS4yLTMxLjIgMzguNS02Ny42IDI4LjktMTAxLjIgMjkuMi00LjEgNTEuOS0yOS4yIDUxLjktNTkuNSAwLTMzLjItMjYuOC02MC4xLTU5LjgtNjAuMS0zMC4zIDAtNTUuNCAyMi41LTU5LjUgNTEuNi0zMy44LTkuOS03MS43LTEuNS05OC4zIDI1LjEtMTguMyAxOS4xLTcxLjEgNzEuNS05OS42IDk5Ljl6bTI2Ni4zIDE1Mi4yYzguMi0zMi43LS45LTY4LjUtMjYuMy05My45LTExLjgtMTIuMiA1IDQuNy05OS41LTk5LjdsLTQ0LjMgNDQuMyA5OS43IDk5LjdjMTQuMyAxNC4zIDE0LjMgMzcuNiAwIDUxLjktMTIuOCAxMi44LTM1IDE3LTU1LjQtMy41bC00NCA0NC4zYzI3LjYgMzAuMiA2OCAzOC44IDEwMi43IDI4IDUuNSAyNy40IDI5LjcgNDguMSA1OC45IDQ4LjEgMzMgMCA1OS44LTI2LjggNTkuOC02MC4xIDAtMzAuMi0yMi41LTU1LTUxLjYtNTkuMXptLTg0LjMtNTMuMWwtNDQtNDQuM2MtODcgODYuNC01MC40IDUwLjQtOTkuNyA5OS44LTE0LjMgMTQuMy0zNy42IDE0LjMtNTEuOSAwLTEzLjEtMTMuNC0xNi45LTM1LjMgMy4yLTU1LjRsLTQ0LTQ0LjNjLTMwLjIgMzAuMi0zOCA2NS4yLTI5LjUgOTguMy0yNi43IDYtNDYuMiAyOS45LTQ2LjIgNTguMkMwIDQ1My4yIDI2LjggNDgwIDU5LjggNDgwYzI4LjYgMCA1Mi41LTE5LjggNTguNi00Ni43IDMyLjcgOC4yIDY4LjUtLjYgOTQuMi0yNiAzMi4xLTMyIDEyLjItMTIuNCA5OS41LTk5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0yNDMuOCAzNDkuNGMwIDQzLjYtMjUuNiA2My41LTYyLjkgNjMuNS0zMy43IDAtNTMuMi0xNy40LTYzLjItMzguNWwzNC4zLTIwLjdjNi42IDExLjcgMTIuNiAyMS42IDI3LjEgMjEuNiAxMy44IDAgMjIuNi01LjQgMjIuNi0yNi41VjIzNy43aDQyLjF2MTQzLjd6bTk5LjYgNjMuNWMtMzkuMSAwLTY0LjQtMTguNi03Ni43LTQzbDM0LjMtMTkuOGM5IDE0LjcgMjAuOCAyNS42IDQxLjUgMjUuNiAxNy40IDAgMjguNi04LjcgMjguNi0yMC44IDAtMTQuNC0xMS40LTE5LjUtMzAuNy0yOGwtMTAuNS00LjVjLTMwLjQtMTIuOS01MC41LTI5LjItNTAuNS02My41IDAtMzEuNiAyNC4xLTU1LjYgNjEuNi01NS42IDI2LjggMCA0NiA5LjMgNTkuOCAzMy43TDM2OCAyOTBjLTcuMi0xMi45LTE1LTE4LTI3LjEtMTgtMTIuMyAwLTIwLjEgNy44LTIwLjEgMTggMCAxMi42IDcuOCAxNy43IDI1LjkgMjUuNmwxMC41IDQuNWMzNS44IDE1LjMgNTUuOSAzMSA1NS45IDY2LjIgMCAzNy44LTI5LjggNTguNi02OS43IDU4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpzZmlkZGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC42MzQgMjM3LjQ2MmMtNC43MjctMi42MjEtNS42NjQtNS43NDgtNi4zODEtMTAuNzc2LTIuMzUyLTE2LjQ4OC0zLjUzOS0zMy42MTktOS4wOTctNDkuMDk1LTM1Ljg5NS05OS45NTctMTUzLjk5LTE0My4zODYtMjQ2Ljg0OS05MS42NDYtMjcuMzcgMTUuMjUtNDguOTcxIDM2LjM2OS02NS40OTMgNjMuOTAzLTMuMTg0LTEuNTA4LTUuNDU4LTIuNzEtNy44MjQtMy42ODYtMzAuMTAyLTEyLjQyMS01OS4wNDktMTAuMTIxLTg1LjMzMSA5LjE2Ny0yNS41MzEgMTguNzM3LTM2LjQyMiA0NC41NDgtMzIuNjc2IDc2LjQwOC4zNTUgMy4wMjUtMS45NjcgNy42MjEtNC41MTQgOS41NDUtMzkuNzEyIDI5Ljk5Mi01Ni4wMzEgNzguMDY1LTQxLjkwMiAxMjQuNjE1IDEzLjgzMSA0NS41NjkgNTcuNTE0IDc5Ljc5NiAxMDUuNjA4IDgxLjQzMyAzMC4yOTEgMS4wMzEgNjAuNjM3LjU0NiA5MC45NTkuNTM5IDg0LjA0MS0uMDIxIDE2OC4wOS41MzEgMjUyLjEyLS40OCA1Mi42NjQtLjYzNCA5Ni4xMDgtMzYuODczIDEwOC4yMTItODcuMjkzIDExLjU0LTQ4LjA3NC0xMS4xNDQtOTcuMy01Ni44MzItMTIyLjYzNHptMjEuMTA3IDE1Ni44OGMtMTguMjMgMjIuNDMyLTQyLjM0MyAzNS4yNTMtNzEuMjggMzUuNjUtNTYuODc0Ljc4MS0xMTMuNzY3LjIzLTE3MC42NTIuMjMgMCAuNy0xNjMuMDI4LjE1OS0xNjMuNzI4LjE1NC00My44NjEtLjMzMi03Ni43MzktMTkuNzY2LTk1LjE3NS01OS45OTUtMTguOTAyLTQxLjI0NS00LjAwNC05MC44NDggMzQuMTg2LTExNi4xMDYgOS4xODItNi4wNzMgMTIuNTA1LTExLjU2NiAxMC4wOTYtMjMuMTM2LTUuNDktMjYuMzYxIDQuNDUzLTQ3Ljk1NiAyNi40Mi02Mi45ODEgMjIuOTg3LTE1LjcyMyA0Ny40MjItMTYuMTQ2IDcyLjAzNC0zLjA4MyAxMC4yNjkgNS40NSAxNC42MDcgMTEuNTY0IDIyLjE5OC0yLjUyNyAxNC4yMjItMjYuMzk5IDM0LjU1Ny00Ni43MjcgNjAuNjcxLTYxLjI5NCA5Ny40Ni01NC4zNjYgMjI4LjM3IDcuNTY4IDIzMC4yNCAxMzIuNjk3LjEyMiA4LjE1IDIuNDEyIDEyLjQyOCA5Ljg0OCAxNS44OTQgNTcuNTYgMjYuODI5IDc0LjQ1NiA5Ni4xMjIgMzUuMTQyIDE0NC40OTd6bS04Ny43ODktODAuNDk5Yy01Ljg0OCAzMS4xNTctMzQuNjIyIDU1LjA5Ni02Ni42NjYgNTUuMDk1LTE2Ljk1My0uMDAxLTMyLjA1OC02LjU0NS00NC4wNzktMTcuNzA1LTI3LjY5Ny0yNS43MTMtNzEuMTQxLTc0Ljk4LTk1LjkzNy05My4zODctMjAuMDU2LTE0Ljg4OC00MS45OS0xMi4zMzMtNjAuMjcyIDMuNzgyLTQ5Ljk5NiA0NC4wNzEgMTUuODU5IDEyMS43NzUgNjcuMDYzIDc3LjE4OCA0LjU0OC0zLjk2IDcuODQtOS41NDMgMTIuNzQ0LTEyLjg0NCA4LjE4NC01LjUwOSAyMC43NjYtLjg4NCAxMy4xNjggMTAuNjIyLTE3LjM1OCAyNi4yODQtNDkuMzMgMzguMTk3LTc4Ljg2MyAyOS4zMDEtMjguODk3LTguNzA0LTQ4Ljg0LTM1Ljk2OC00OC42MjYtNzAuMTc5IDEuMjI1LTIyLjQ4NSAxMi4zNjQtNDMuMDYgMzUuNDE0LTU1Ljk2NSAyMi41NzUtMTIuNjM4IDQ2LjM2OS0xMy4xNDYgNjYuOTkxIDIuNDc0QzI5NS42OCAyODAuNyAzMjAuNDY3IDMyMy45NyAzNTIuMTg1IDM0My40N2MyNC41NTggMTUuMDk5IDU0LjI1NCA3LjM2MyA2OC44MjMtMTcuNTA2IDI4LjgzLTQ5LjIwOS0zNC41OTItMTA1LjAxNi03OC44NjgtNjMuNDYtMy45ODkgMy43NDQtNi45MTcgOC45MzItMTEuNDEgMTEuNzItMTAuOTc1IDYuODExLTE3LjMzMy00LjExMy0xMi44MDktMTAuMzUzIDIwLjcwMy0yOC41NTQgNTAuNDY0LTQwLjQ0IDgzLjI3MS0yOC4yMTQgMzEuNDI5IDExLjcxNCA0OS4xMDggNDQuMzY2IDQyLjc2IDc4LjE4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnhsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxMi4yIDMySDM1LjhDMTYgMzIgMCA0OCAwIDY3LjhWNDQ0LjJDMCA0NjQgMTYgNDgwIDM1LjggNDgwSDQxMi4yYzE5LjggMCAzNS44LTE2IDM1LjgtMzUuOFY2Ny44QzQ0OCA0OCA0MzIgMzIgNDEyLjIgMzJ6TTM3OC42IDMzMy43YzAgNDAuMi0zMi42IDcyLjgtNzIuOCA3Mi44SDcwLjJjMC00MC4yIDMyLjYtNzIuOCA3Mi44LTcyLjhIMzc4LjZ6bTAtMTEzLjljMCA0MC4yLTMyLjYgNzIuOC03Mi44IDcyLjhINzAuMmMwLTQwLjIgMzIuNi03Mi44IDcyLjgtNzIuOEgzNzguNnptMC0xMTMuOWMwIDQwLjItMzIuNiA3Mi44LTcyLjggNzIuOEg3MC4yYzAtNDAuMiAzMi42LTcyLjggNzIuOC03Mi44SDM3OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLYWdnbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LjIgNTAxLjVMMTU4LjQgMzIwLjMgMjk4LjIgMTg1YzIuNi0yLjcgMS43LTEwLjUtNS4zLTEwLjVoLTY5LjJjLTMuNSAwLTcgMS44LTEwLjUgNS4zTDgwLjkgMzEzLjVWNy41cTAtNy41LTcuNS03LjVIMjEuNVExNCAwIDE0IDcuNXY0OTdxMCA3LjUgNy41IDcuNWg1MS45cTcuNSAwIDcuNS03LjV2LTEwOWwzMC44LTI5LjMgMTEwLjUgMTQwLjZjMyAzLjUgNi41IDUuMyAxMC41IDUuM2g2Ni45cTUuMjUgMCA2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg2LjE3IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHptMTExLjkyLTE0Ny42Yy05LjUtMTQuNjItMzkuMzctNTIuNDUtODcuMjYtNzMuNzFxLTkuMS00LjA2LTE4LjM4LTcuMjdhNzguNDMgNzguNDMgMCAwIDAtNDcuODgtMTA0LjEzYy0xMi40MS00LjEtMjMuMzMtNi0zMi40MS01Ljc3LS42LTItMS44OS0xMSA5LjQtMzVMMTk4LjY2IDMybC01LjQ4IDcuNTZjLTguNjkgMTIuMDYtMTYuOTIgMjMuNTUtMjQuMzQgMzQuODlhNTEgNTEgMCAwIDAtOC4yOS0xLjI1Yy00MS41My0yLjQ1LTM5LTIuMzMtNDEuMDYtMi4zMy01MC42MSAwLTUwLjc1IDUyLjEyLTUwLjc1IDQ1Ljg4bC0yLjM2IDM2LjY4Yy0xLjYxIDI3IDE5Ljc1IDUwLjIxIDQ3LjYzIDUxLjg1bDguOTMuNTRhMjE0IDIxNCAwIDAgMC00Ni4yOSAzNS41NEMxNCAzMDQuNjYgMTQgMzc0IDE0IDQyOS43N3YzMy42NGwyMy4zMi0yOS44YTE0OC42IDE0OC42IDAgMCAwIDE0LjU2IDM3LjU2YzUuNzggMTAuMTMgMTQuODcgOS40NSAxOS42NCA3LjMzIDQuMjEtMS44NyAxMC02LjkyIDMuNzUtMjAuMTFhMTc4LjI5IDE3OC4yOSAwIDAgMS0xNS43Ni01My4xM2w0Ni44Mi01OS44My0yNC42NiA3NC4xMWM1OC4yMy00Mi40IDE1Ny4zOC02MS43NiAyMzYuMjUtMzguNTkgMzQuMiAxMC4wNSA2Ny40NS42OSA4NC43NC0yMy44NC43Mi0xIDEuMi0yLjE2IDEuODUtMy4yMmExNTYuMDkgMTU2LjA5IDAgMCAxIDIuOCAyOC40M2MwIDIzLjMtMy42OSA1Mi45My0xNC44OCA4MS42NC0yLjUyIDYuNDYgMS43NiAxNC41IDguNiAxNS43NCA3LjQyIDEuNTcgMTUuMzMtMy4xIDE4LjM3LTExLjE1QzQyOSA0NDMgNDM0IDQxNCA0MzQgMzgyLjMyYzAtMzguNTgtMTMtNzcuNDYtMzUuOTEtMTEwLjkyek0xNDIuMzcgMTI4LjU4bC0xNS43LS45My0xLjM5IDIxLjc5IDEzLjEzLjc4YTkzIDkzIDAgMCAwIC4zMiAxOS41N2wtMjIuMzgtMS4zNGExMi4yOCAxMi4yOCAwIDAgMS0xMS43Ni0xMi43OUwxMDcgMTE5YzEtMTIuMTcgMTMuODctMTEuMjcgMTMuMjYtMTEuMzJsMjkuMTEgMS43M2ExNDQuMzUgMTQ0LjM1IDAgMCAwLTcgMTkuMTd6bTE0OC40MiAxNzIuMThhMTAuNTEgMTAuNTEgMCAwIDEtMTQuMzUtMS4zOWwtOS42OC0xMS40OS0zNC40MiAyN2E4LjA5IDguMDkgMCAwIDEtMTEuMTMtMS4wOGwtMTUuNzgtMTguNjRhNy4zOCA3LjM4IDAgMCAxIDEuMzQtMTAuMzRsMzQuNTctMjcuMTgtMTQuMTQtMTYuNzQtMTcuMDkgMTMuNDVhNy43NSA3Ljc1IDAgMCAxLTEwLjU5LTFzLTMuNzItNC40Mi0zLjgtNC41M2E3LjM4IDcuMzggMCAwIDEgMS4zNy0xMC4zNEwyMTQgMjI1LjE5cy0xOC41MS0yMi0xOC42LTIyLjE0YTkuNTYgOS41NiAwIDAgMSAxLjc0LTEzLjQyIDEwLjM4IDEwLjM4IDAgMCAxIDE0LjMgMS4zN2w4MS4wOSA5Ni4zMmE5LjU4IDkuNTggMCAwIDEtMS43NCAxMy40NHpNMTg3LjQ0IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5Y2RuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzLjggNDA5LjNsNjAuNS01OWMzMi4xIDQyLjggNzEuMSA2NiAxMjYuNiA2Ny40IDMwLjUuNyA2MC4zLTcgODYuNC0yMi40IDUuMSA1LjMgMTguNSAxOS41IDIwLjkgMjItMzIuMiAyMC43LTY5LjYgMzEuMS0xMDguMSAzMC4yLTQzLjMtMS4xLTg0LjYtMTYuNy0xMTcuNy00NC40LjMtLjYtMzguMiAzNy41LTM4LjYgMzcuOSA5LjUgMjkuOC0xMy4xIDYyLjQtNDYuMyA2Mi40QzIwLjcgNTAzLjMgMCA0ODEuNyAwIDQ1NC45YzAtMzQuMyAzMy4xLTU2LjYgNjMuOC00NS42em0zNTQuOS0yNTIuNGMxOS4xIDMxLjMgMjkuNiA2Ny40IDI4LjcgMTA0LTEuMSA0NC44LTE5IDg3LjUtNDguNiAxMjEgLjMuMyAyMy44IDI1LjIgMjQuMSAyNS41IDkuNi0xLjMgMTkuMiAyIDI1LjkgOS4xIDExLjMgMTIgMTAuOSAzMC45LTEuMSA0Mi40LTEyIDExLjMtMzAuOSAxMC45LTQyLjQtMS4xLTYuNy03LTkuNC0xNi44LTcuNi0yNi4zLTI0LjktMjYuNi00NC40LTQ3LjItNDQuNC00Ny4yIDQyLjctMzQuMSA2My4zLTc5LjYgNjQuNC0xMjQuMi43LTI4LjktNy4yLTU3LjItMjEuMS04Mi4ybDIyLjEtMjF6TTEwNCA1My4xYzYuNyA3IDkuNCAxNi44IDcuNiAyNi4zbDQ1LjkgNDguMWMtNC43IDMuOC0xMy4zIDEwLjQtMjIuOCAyMS4zLTI1LjQgMjguNS0zOS42IDY0LjgtNDAuNyAxMDIuOS0uNyAyOC45IDYuMSA1Ny4yIDIwIDgyLjRsLTIyIDIxLjVDNzIuNyAzMjQgNjMuMSAyODcuOSA2NC4yIDI1MC45YzEtNDQuNiAxOC4zLTg3LjYgNDcuNS0xMjEuMWwtMjUuMy0yNi40Yy05LjYgMS4zLTE5LjItMi0yNS45LTkuMS0xMS4zLTEyLTEwLjktMzAuOSAxLjEtNDIuNEM3My41IDQwLjcgOTIuMiA0MSAxMDQgNTMuMXpNNDY0LjkgOGMyNiAwIDQ3LjEgMjIuNCA0Ny4xIDQ4LjNTNDkwLjkgMTA0IDQ2NC45IDEwNGMtNi4zLjEtMTQtMS4xLTE1LjktMS44bC02Mi45IDU5LjdjLTMyLjctNDMuNi03Ni43LTY1LjktMTI2LjktNjcuMi0zMC41LS43LTYwLjMgNi44LTg2LjIgMjIuNGwtMjEuMS0yMkMxODQuMSA3NC4zIDIyMS41IDY0IDI2MCA2NC45YzQzLjMgMS4xIDg0LjYgMTYuNyAxMTcuNyA0NC42bDQxLjEtMzguNmMtMS41LTQuNy0yLjItOS42LTIuMi0xNC41QzQxNi41IDI5LjcgNDM4LjkgOCA0NjQuOSA4ek0yNTYuNyAxMTMuNGM1LjUgMCAxMC45LjQgMTYuNCAxLjEgNzguMSA5LjggMTMzLjQgODEuMSAxMjMuOCAxNTkuMS05LjggNzguMS04MS4xIDEzMy40LTE1OS4xIDEyMy44LTc4LjEtOS44LTEzMy40LTgxLjEtMTIzLjgtMTU5LjIgOS4zLTcyLjQgNzAuMS0xMjQuNiAxNDIuNy0xMjQuOHptLTU5IDExOS40Yy42IDIyLjcgMTIuMiA0MS44IDMyLjQgNTIuMmwtMTEgNTEuN2g3My43bC0xMS01MS43YzIwLjEtMTAuOSAzMi4xLTI5IDMyLjQtNTIuMi0uNC0zMi44LTI1LjgtNTcuNS01OC4zLTU4LjMtMzIuMS44LTU3LjMgMjQuOC01OC4yIDU4LjN6TTI1NiAxNjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lja3N0YXJ0ZXJLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Ni42IDI1Ni4ybDQwLjgtNDAuNWM0Mi4yLTQxLjkgNDIuMi0xMTAuMyAwLTE1Mi4xcy0xMTEtNDEuOS0xNTMuMiAwTDIyOS4zIDc4LjRDMjA5LjYgNTAuMyAxNzcuMSAzMiAxNDAuMiAzMkM4MC41IDMyIDMyIDgwLjIgMzIgMTM5LjVWMzcyLjVDMzIgNDMxLjkgODAuNSA0ODAgMTQwLjIgNDgwYzM3LjEgMCA2OS4zLTE4LjMgODktNDYuNGwxNC45IDE0LjdjNDIuMiA0MS45IDExMSA0MS45IDE1My4yIDBzNDIuMi0xMTAuMyAwLTE1Mi4xbC00MC44LTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaWNrc3RhcnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0zMjAuOCAyMzNsLTIzLjMgMjMuMUwzMjAuOCAyNzljMjQuMSAyMy45IDI0LjEgNjMgMCA4Ni45cy02My40IDIzLjktODcuNiAwbC04LjUtOC40Yy0xMS4zIDE2LTI5LjcgMjYuNS01MC45IDI2LjVjLTM0LjEgMC02MS45LTI3LjUtNjEuOS02MS40bDAtMTMzLjJjMC0zMy44IDI3LjctNjEuNCA2MS45LTYxLjRjMjEuMSAwIDM5LjYgMTAuNSA1MC45IDI2LjVsOC41LTguNGMyNC4xLTIzLjkgNjMuNC0yMy45IDg3LjYgMHMyNC4xIDYzIDAgODYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS29ydnVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Ni41IDM0aC0zMjdDMjYuOCAzNCAwIDYwLjggMCA5My41djMyNy4xQzAgNDUzLjIgMjYuOCA0ODAgNTkuNSA0ODBoMzI3LjFjMzMgMCA1OS41LTI2LjggNTkuNS01OS41di0zMjdDNDQ2IDYwLjggNDE5LjIgMzQgMzg2LjUgMzR6TTg3LjEgMTIwLjhoOTZ2MTE2bDYxLjgtMTE2aDExMC45bC04MS4yIDEzMkg4Ny4xdi0xMzJ6bTE2MS44IDI3Mi4xbC02NS43LTExMy42djExMy42aC05NlYyNjIuMWgxOTEuNWw4OC42IDEzMC44SDI0OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC40LDExNS44M2E1LjcyLDUuNzIsMCwwLDAtLjI4LS42OCw4LjUyLDguNTIsMCwwLDAtLjUzLTEuMjUsNiw2LDAsMCwwLS41NC0uNzEsOS4zNiw5LjM2LDAsMCwwLS43Mi0uOTRjLS4yMy0uMjItLjUyLS40LS43Ny0uNmE4Ljg0LDguODQsMCwwLDAtLjktLjY4TDQwNC40LDU1LjU1YTgsOCwwLDAsMC04LDBMMzAwLjEyLDExMWgwYTguMDcsOC4wNywwLDAsMC0uODguNjksNy42OCw3LjY4LDAsMCwwLS43OC42LDguMjMsOC4yMywwLDAsMC0uNzIuOTNjLS4xNy4yNC0uMzkuNDUtLjU0LjcxYTkuNyw5LjcsMCwwLDAtLjUyLDEuMjVjLS4wOC4yMy0uMjEuNDQtLjI4LjY4YTguMDgsOC4wOCwwLDAsMC0uMjgsMi4wOFYyMjMuMThsLTgwLjIyLDQ2LjE5VjYzLjQ0YTcuOCw3LjgsMCwwLDAtLjI4LTIuMDljLS4wNi0uMjQtLjItLjQ1LS4yOC0uNjhhOC4zNSw4LjM1LDAsMCwwLS41Mi0xLjI0Yy0uMTQtLjI2LS4zNy0uNDctLjU0LS43MmE5LjM2LDkuMzYsMCwwLDAtLjcyLS45NCw5LjQ2LDkuNDYsMCwwLDAtLjc4LS42LDkuOCw5LjgsMCwwLDAtLjg4LS42OGgwTDExNS42MSwxLjA3YTgsOCwwLDAsMC04LDBMMTEuMzQsNTYuNDloMGE2LjUyLDYuNTIsMCwwLDAtLjg4LjY5LDcuODEsNy44MSwwLDAsMC0uNzkuNiw4LjE1LDguMTUsMCwwLDAtLjcxLjkzYy0uMTguMjUtLjQuNDYtLjU1LjcyYTcuODgsNy44OCwwLDAsMC0uNTEsMS4yNCw2LjQ2LDYuNDYsMCwwLDAtLjI5LjY3LDguMTgsOC4xOCwwLDAsMC0uMjgsMi4xdjMyOS43YTgsOCwwLDAsMCw0LDYuOTVsMTkyLjUsMTEwLjg0YTguODMsOC44MywwLDAsMCwxLjMzLjU0Yy4yMS4wOC40MS4yLjYzLjI2YTcuOTIsNy45MiwwLDAsMCw0LjEsMGMuMi0uMDUuMzctLjE2LjU1LS4yMmE4LjYsOC42LDAsMCwwLDEuNC0uNThMNDA0LjQsNDAwLjA5YTgsOCwwLDAsMCw0LTYuOTVWMjg3Ljg4bDkyLjI0LTUzLjExYTgsOCwwLDAsMCw0LTdWMTE3LjkyQTguNjMsOC42MywwLDAsMCw1MDQuNCwxMTUuODNaTTExMS42LDE3LjI4aDBsODAuMTksNDYuMTUtODAuMiw0Ni4xOEwzMS40MSw2My40NFptODguMjUsNjBWMjc4LjZsLTQ2LjUzLDI2Ljc5LTMzLjY5LDE5LjRWMTIzLjVsNDYuNTMtMjYuNzlabTAsNDEyLjc4TDIzLjM3LDM4OC41Vjc3LjMyTDU3LjA2LDk2LjdsNDYuNTIsMjYuOFYzMzguNjhhNi45NCw2Ljk0LDAsMCwwLC4xMi45LDgsOCwwLDAsMCwuMTYsMS4xOGgwYTUuOTIsNS45MiwwLDAsMCwuMzguOSw2LjM4LDYuMzgsMCwwLDAsLjQyLDF2MGE4LjU0LDguNTQsMCwwLDAsLjYuNzgsNy42Miw3LjYyLDAsMCwwLC42Ni44NGwwLDBjLjIzLjIyLjUyLjM4Ljc3LjU4YTguOTMsOC45MywwLDAsMCwuODYuNjZsMCwwLDAsMCw5Mi4xOSw1Mi4xOFptOC0xMDYuMTctODAuMDYtNDUuMzIsODQuMDktNDguNDEsOTIuMjYtNTMuMTEsODAuMTMsNDYuMTMtNTguOCwzMy41NlptMTg0LjUyLDQuNTdMMjE1Ljg4LDQ5MC4xMVYzOTcuOEwzNDYuNiwzMjMuMmw0NS43Ny0yNi4xNVptMC0xMTkuMTNMMzU4LjY4LDI1MGwtNDYuNTMtMjYuNzlWMTMxLjc5bDMzLjY5LDE5LjRMMzkyLjM3LDE3OFptOC0xMDUuMjgtODAuMi00Ni4xNyw4MC4yLTQ2LjE2LDgwLjE4LDQ2LjE1Wm04LDEwNS4yOFYxNzhMNDU1LDE1MS4xOWwzMy42OC0xOS40djkxLjM5aDBaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhc3RmbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuOCAzNjcuMWwtMTguOC01MXMtMzAuNSAzNC03Ni4yIDM0Yy00MC41IDAtNjkuMi0zNS4yLTY5LjItOTEuNSAwLTcyLjEgMzYuNC05Ny45IDcyLjEtOTcuOSA2Ni41IDAgNzQuOCA1My4zIDEwMC45IDEzNC45IDE4LjggNTYuOSA1NCAxMDIuNiAxNTUuNCAxMDIuNiA3Mi43IDAgMTIyLTIyLjMgMTIyLTgwLjkgMC03Mi45LTYyLjctODAuNi0xMTUtOTIuMS0yNS44LTUuOS0zMy40LTE2LjQtMzMuNC0zNCAwLTE5LjkgMTUuOC0zMS43IDQxLjYtMzEuNyAyOC4yIDAgNDMuNCAxMC42IDQ1LjcgMzUuOGw1OC42LTdjLTQuNy01Mi44LTQxLjEtNzQuNS0xMDAuOS03NC41LTUyLjggMC0xMDQuNCAxOS45LTEwNC40IDgzLjkgMCAzOS45IDE5LjQgNjUuMSA2OCA3Ni44IDQ0LjkgMTAuNiA3OS44IDEzLjggNzkuOCA0NS43IDAgMjEuNy0yMS4xIDMwLjUtNjEgMzAuNS01OS4yIDAtODMuOS0zMS4xLTk3LjktNzMuOS0zMi05Ni44LTQzLjYtMTYzLTE2MS4zLTE2M0M0NS43IDExMy44IDAgMTY4LjMgMCAyNjFjMCA4OS4xIDQ1LjcgMTM3LjIgMTI3LjkgMTM3LjIgNjYuMiAwIDk3LjktMzEuMSA5Ny45LTMxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlYW5wdWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg2LjUzOSAxMTEuNDg1bDE1LjA5NiAyNDguOTU1LTEwLjk3OS0uMjc1Yy0zNi4yMzItLjgyNC03MS42NCA4Ljc4My0xMDIuNjU3IDI3Ljk5Ny0zMS4wMTYtMTkuMjE0LTY2LjQyNC0yNy45OTctMTAyLjY1Ny0yNy45OTctNDUuNTY0IDAtODIuMDcgMTAuNzA1LTEyMy41MTYgMjcuNzIzTDkzLjExNyAxMjkuNmMyOC41NDYtMTEuODAzIDYxLjQ4NC0xOC4xMTUgOTIuMjI2LTE4LjExNSA0MS4xNzMgMCA3My44MzYgMTMuMTc1IDEwMi42NTcgNDIuNTQ0IDI3LjcyMy0yOC4yNzEgNTkuMDEzLTQxLjcyMSA5OC41MzktNDIuNTQ0ek01NjkuMDcgNDQ4Yy0yNS41MjYgMC00Ny40ODUtNS4yMTUtNzAuNTQyLTE1LjY0NS0zNC4zMS0xNS42NDUtNjkuOTkzLTI0Ljk3OC0xMDcuODcxLTI0Ljk3OC0zOC45NzcgMC03NC45MzQgMTIuOTAxLTEwMi42NTcgNDAuNjIzLTI3LjcyMy0yNy43MjMtNjMuNjgtNDAuNjIzLTEwMi42NTctNDAuNjIzLTM3Ljg3OCAwLTczLjU2MSA5LjMzMy0xMDcuODcxIDI0Ljk3OEM1NS4yMzkgNDQyLjIzNiAzMi43MzEgNDQ4IDguMzAzIDQ0OEg2LjkzTDQ5LjQ3NSA5OC44NTlDODguNzI2IDc2LjYyNiAxMzYuNDg2IDY0IDE4MS43NzUgNjQgMjE4LjgzIDY0IDI1Ni45ODQgNzEuNjg1IDI4OCA5My4wOTUgMzE5LjAxNiA3MS42ODUgMzU3LjE3IDY0IDM5NC4yMjUgNjRjNDUuMjg5IDAgOTMuMDQ5IDEyLjYyNiAxMzIuMyAzNC44NTlMNTY5LjA3IDQ0OHptLTQzLjM2OC00NC43NDFsLTM0LjAzNi0yODAuMjQ2Yy0zMC43NDItMTMuOTk5LTY3LjI0OC0yMS40MS0xMDEuMDA5LTIxLjQxLTM4LjQyOCAwLTc0LjM4NSAxMi4wNzctMTAyLjY1NyAzOC43MDItMjguMjcyLTI2LjYyNS02NC4yMjgtMzguNzAyLTEwMi42NTctMzguNzAyLTMzLjc2MSAwLTcwLjI2NyA3LjQxMS0xMDEuMDA5IDIxLjQxTDUwLjI5OCA0MDMuMjU5YzQ3LjIxMS0xOS40ODcgODIuODk0LTMzLjQ4NiAxMzUuMDQ1LTMzLjQ4NiAzNy42MDQgMCA3MC44MTcgOS42MDYgMTAyLjY1NyAyOS42NDQgMzEuODQtMjAuMDM4IDY1LjA1Mi0yOS42NDQgMTAyLjY1Ny0yOS42NDQgNTIuMTUxIDAgODcuODM0IDEzLjk5OSAxMzUuMDQ1IDMzLjQ4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTIuNyAyMTljMC0yMC41IDMuMi0zMi42IDMuMi01NC42IDAtMzQuMi0xMi42LTQ1LjItNDAuNS00NS4yaC0yMC41djI0LjJoNi4zYzE0LjIgMCAxNy4zIDQuNyAxNy4zIDIyLjEgMCAxNi4zLTEuNiAzMi42LTEuNiA1MS41IDAgMjQuMiA3LjkgMzMuNiAyMy42IDM3LjN2MS42Yy0xNS44IDMuNy0yMy42IDEzLjEtMjMuNiAzNy4zIDAgMTguOSAxLjYgMzQuMiAxLjYgNTEuNSAwIDE3LjktMy43IDIyLjYtMTcuMyAyMi42di41aC02LjNWMzkzaDIwLjVjMjcuOCAwIDQwLjUtMTEgNDAuNS00NS4yIDAtMjIuNi0zLjItMzQuMi0zLjItNTQuNiAwLTExIDYuOC0yMi42IDI3LjMtMjMuNnYtMjcuM2MtMjAuNS0uNy0yNy4zLTEyLjMtMjcuMy0yMy4zem0tMTA1LjYgMzJjLTE1LjgtNi4zLTMwLjUtMTAtMzAuNS0yMC41IDAtNy45IDYuMy0xMi42IDE3LjktMTIuNnMyMi4xIDQuNyAzMy42IDEzLjFsMjEtMjcuOGMtMTMuMS0xMC0zMS0yMC41LTU1LjItMjAuNS0zNS43IDAtNTkuOSAyMC41LTU5LjkgNDkuNCAwIDI1LjcgMjIuNiAzOC45IDQxLjUgNDYuMiAxNi4zIDYuMyAzMi4xIDExLjYgMzIuMSAyMi4xIDAgNy45LTYuMyAxMy4xLTIwLjUgMTMuMS0xMy4xIDAtMjYuMy01LjMtNDAuNS0xNi4zbC0yMSAzMC41YzE1LjggMTMuMSAzOS45IDIyLjEgNTkuOSAyMi4xIDQyIDAgNjQuNi0yMi4xIDY0LjYtNTFzLTIyLjUtNDEtNDMtNDcuOHptLTM1OC45IDU5LjRjLTMuNyAwLTguNC0zLjItOC40LTEzLjFWMTE5LjFINjUuMmMtMjguNCAwLTQxIDExLTQxIDQ1LjIgMCAyMi42IDMuMiAzNS4yIDMuMiA1NC42IDAgMTEtNi44IDIyLjYtMjcuMyAyMy42djI3LjNjMjAuNS41IDI3LjMgMTIuMSAyNy4zIDIzLjEgMCAxOS40LTMuMiAzMS0zLjIgNTMuNiAwIDM0LjIgMTIuNiA0NS4yIDQwLjUgNDUuMmgyMC41di0yNC4yaC02LjNjLTEzLjEgMC0xNy4zLTUuMy0xNy4zLTIyLjZzMS42LTMyLjEgMS42LTUxLjVjMC0yNC4yLTcuOS0zMy42LTIzLjYtMzcuM3YtMS42YzE1LjgtMy43IDIzLjYtMTMuMSAyMy42LTM3LjMgMC0xOC45LTEuNi0zNC4yLTEuNi01MS41czMuNy0yMi4xIDE3LjMtMjIuMUg5M3YxNTAuOGMwIDMyLjEgMTEgNTMuMSA0My4xIDUzLjEgMTAgMCAxNy45LTEuNiAyMy42LTMuN2wtNS4zLTM0LjJjLTMuMS44LTQuNi44LTYuMi44ek0zNzkuOSAyNTFjLTE2LjMtNi4zLTMxLTEwLTMxLTIwLjUgMC03LjkgNi4zLTEyLjYgMTcuOS0xMi42IDExLjYgMCAyMi4xIDQuNyAzMy42IDEzLjFsMjEtMjcuOGMtMTMuMS0xMC0zMS0yMC41LTU1LjItMjAuNS0zNS43IDAtNTkuOSAyMC41LTU5LjkgNDkuNCAwIDI1LjcgMjIuNiAzOC45IDQxLjUgNDYuMiAxNi4zIDYuMyAzMi4xIDExLjYgMzIuMSAyMi4xIDAgNy45LTYuMyAxMy4xLTIwLjUgMTMuMS0xMy4xIDAtMjYuMy01LjMtNDAuNS0xNi4zbC0yMC41IDMwLjVjMTUuOCAxMy4xIDM5LjkgMjIuMSA1OS45IDIyLjEgNDIgMCA2NC42LTIyLjEgNjQuNi01MSAuMS0yOC45LTIyLjUtNDEtNDMtNDcuOHptLTE1NS02OC44Yy0zOC40IDAtNzUuMSAzMi4xLTc0LjEgODIuNSAwIDUyIDM0LjIgODIuNSA3OS4zIDgyLjUgMTguOSAwIDM5LjktNi44IDU2LjItMTcuOWwtMTUuOC0yNy44Yy0xMS42IDYuOC0yMi42IDEwLTM0LjIgMTAtMjEgMC0zNy4zLTEwLTQxLjUtMzQuMkgyOTBjLjUtMy43IDEuNi0xMSAxLjYtMTkuNC42LTQyLjYtMjIuNi03NS43LTY2LjctNzUuN3ptLTMwIDY2LjJjMy4yLTIxIDE1LjgtMzEgMzAuNS0zMSAxOC45IDAgMjYuMyAxMy4xIDI2LjMgMzFoLTU2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxldHRlcmJveGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTIxLjMgMTI4QzU4Ni45IDEyOCA2NDAgMTgxLjEgNjQwIDI0Ni42cy01My4xIDExOC42LTExOC43IDExOC42Yy00Mi41IDAtNzkuNy0yMi4zLTEwMC43LTU1LjhjMTEuNC0xOC4yIDE4LTM5LjcgMTgtNjIuOHMtNi42LTQ0LjYtMTgtNjIuOGwwIDAgLjgtMS4yYzIwLjgtMzIuMyA1Ni44LTUzLjkgOTcuOS01NC42bDIgMHpNMzIwIDEyOGM0Mi41IDAgNzkuNyAyMi4zIDEwMC43IDU1LjhjLTExLjQgMTguMi0xOCAzOS43LTE4IDYyLjhzNi42IDQ0LjYgMTggNjIuOGwwIDAtLjggMS4yYy0yMC44IDMyLjMtNTYuOCA1My45LTk3LjkgNTQuNmwtMiAwYy00Mi41IDAtNzkuNy0yMi4zLTEwMC43LTU1LjhjMTEuNC0xOC4yIDE4LTM5LjcgMTgtNjIuOHMtNi42LTQ0LjYtMTgtNjIuOGwwIDAgLjgtMS4yYzIwLjgtMzIuMyA1Ni44LTUzLjkgOTcuOS01NC42bDIgMHptLTIwMS4zIDBjNDIuNSAwIDc5LjcgMjIuMyAxMDAuNyA1NS44Yy0xMS40IDE4LjItMTggMzkuNy0xOCA2Mi44czYuNiA0NC42IDE4IDYyLjhsMCAwLS44IDEuMmMtMjAuOCAzMi4zLTU2LjggNTMuOS05Ny45IDU0LjZsLTIgMEM1My4xIDM2NS4xIDAgMzEyLjEgMCAyNDYuNlM1My4xIDEyOCAxMTguNyAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzExIDE5Ni44djgxLjNjMCAyLjEtMS42IDMuNy0zLjcgMy43aC0xM2MtMS4zIDAtMi40LS43LTMtMS41bC0zNy4zLTUwLjN2NDguMmMwIDIuMS0xLjYgMy43LTMuNyAzLjdoLTEzYy0yLjEgMC0zLjctMS42LTMuNy0zLjdWMTk2LjljMC0yLjEgMS42LTMuNyAzLjctMy43aDEyLjljMS4xIDAgMi40IC42IDMgMS42bDM3LjMgNTAuM1YxOTYuOWMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMTNjMi4xLS4xIDMuOCAxLjYgMy44IDMuNXptLTkzLjctMy43aC0xM2MtMi4xIDAtMy43IDEuNi0zLjcgMy43djgxLjNjMCAyLjEgMS42IDMuNyAzLjcgMy43aDEzYzIuMSAwIDMuNy0xLjYgMy43LTMuN1YxOTYuOGMwLTEuOS0xLjYtMy43LTMuNy0zLjd6bS0zMS40IDY4LjFIMTUwLjNWMTk2LjhjMC0yLjEtMS42LTMuNy0zLjctMy43aC0xM2MtMi4xIDAtMy43IDEuNi0zLjcgMy43djgxLjNjMCAxIC4zIDEuOCAxIDIuNWMuNyAuNiAxLjUgMSAyLjUgMWg1Mi4yYzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtMTNjMC0xLjktMS42LTMuNy0zLjUtMy43em0xOTMuNy02OC4xSDMyNy4zYy0xLjkgMC0zLjcgMS42LTMuNyAzLjd2ODEuM2MwIDEuOSAxLjYgMy43IDMuNyAzLjdoNTIuMmMyLjEgMCAzLjctMS42IDMuNy0zLjdWMjY1YzAtMi4xLTEuNi0zLjctMy43LTMuN0gzNDRWMjQ3LjdoMzUuNWMyLjEgMCAzLjctMS42IDMuNy0zLjdWMjMwLjljMC0yLjEtMS42LTMuNy0zLjctMy43SDM0NFYyMTMuNWgzNS41YzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtMTNjLS4xLTEuOS0xLjctMy43LTMuNy0zLjd6TTUxMiA5My40VjQxOS40Yy0uMSA1MS4yLTQyLjEgOTIuNy05My40IDkyLjZIOTIuNkM0MS40IDUxMS45LS4xIDQ2OS44IDAgNDE4LjZWOTIuNkMuMSA0MS40IDQyLjItLjEgOTMuNCAwSDQxOS40YzUxLjIgLjEgOTIuNyA0Mi4xIDkyLjYgOTMuNHpNNDQxLjYgMjMzLjVjMC04My40LTgzLjctMTUxLjMtMTg2LjQtMTUxLjNzLTE4Ni40IDY3LjktMTg2LjQgMTUxLjNjMCA3NC43IDY2LjMgMTM3LjQgMTU1LjkgMTQ5LjNjMjEuOCA0LjcgMTkuMyAxMi43IDE0LjQgNDIuMWMtLjggNC43LTMuOCAxOC40IDE2LjEgMTAuMXMxMDcuMy02My4yIDE0Ni41LTEwOC4yYzI3LTI5LjcgMzkuOS01OS44IDM5LjktOTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlua2VkaW5JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAuMjggNDQ4SDcuNFYxNDguOWg5Mi44OHpNNTMuNzkgMTA4LjFDMjQuMDkgMTA4LjEgMCA4My41IDAgNTMuOGE1My43OSA1My43OSAwIDAgMSAxMDcuNTggMGMwIDI5LjctMjQuMSA1NC4zLTUzLjc5IDU0LjN6TTQ0Ny45IDQ0OGgtOTIuNjhWMzAyLjRjMC0zNC43LS43LTc5LjItNDguMjktNzkuMi00OC4yOSAwLTU1LjY5IDM3LjctNTUuNjkgNzYuN1Y0NDhoLTkyLjc4VjE0OC45aDg5LjA4djQwLjhoMS4zYzEyLjQtMjMuNSA0Mi42OS00OC4zIDg3Ljg4LTQ4LjMgOTQgMCAxMTEuMjggNjEuOSAxMTEuMjggMTQyLjNWNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5rZWRpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzJIMzEuOUMxNC4zIDMyIDAgNDYuNSAwIDY0LjN2MzgzLjRDMCA0NjUuNSAxNC4zIDQ4MCAzMS45IDQ4MEg0MTZjMTcuNiAwIDMyLTE0LjUgMzItMzIuM1Y2NC4zYzAtMTcuOC0xNC40LTMyLjMtMzItMzIuM3pNMTM1LjQgNDE2SDY5VjIwMi4yaDY2LjVWNDE2em0tMzMuMi0yNDNjLTIxLjMgMC0zOC41LTE3LjMtMzguNS0zOC41UzgwLjkgOTYgMTAyLjIgOTZjMjEuMiAwIDM4LjUgMTcuMyAzOC41IDM4LjUgMCAyMS4zLTE3LjIgMzguNS0zOC41IDM4LjV6bTI4Mi4xIDI0M2gtNjYuNFYzMTJjMC0yNC44LS41LTU2LjctMzQuNS01Ni43LTM0LjYgMC0zOS45IDI3LTM5LjkgNTQuOVY0MTZoLTY2LjRWMjAyLjJoNjMuN3YyOS4yaC45YzguOS0xNi44IDMwLjYtMzQuNSA2Mi45LTM0LjUgNjcuMiAwIDc5LjcgNDQuMyA3OS43IDEwMS45VjQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlub2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2Ni4wMzYsMTg2Ljg2N2wtNTkuNSwzNi44NzEtLjgzOCwzNi44NzEtMjkuMzI5LTE5LjI3My0zOS4zODQsMjQuM2MyLjIzOCw1NS4yMTEsMi40ODMsNTkuMjcxLDIuNTEsNTkuNWwtOTcuMiw2NS4zNTlMMTI3LjIxNCwyODUuNzQ4bDEwOC4xLTYyLjAxTDE5NS4wOSwxOTcuNzYxbC03NS40MTcsMzguNTQ3TDk4LjcyMyw5My4wMTUsMjI3Ljc3MSw0My41NzQsMTM2LjQzMiwwLDEwLjczNywzOS4zODUsMzguMzksMTc0LjNsNDEuOSwzMi42ODFMNDguNDQ1LDIyMi4wNjIsNjkuMzk0LDMyMy40NTcsOTguNzIzLDM1MS4xMSw3Ny43NzQsMzYzLjY3OWwxNi43Niw3OC43NjlMMTYwLjczMyw1MTJjLTEwLjgtNzQuODQyLTExLjY1OC03OC42NDEtMTEuNzI1LTc4Ljc3M2w3Ny45MjUtNTUuM2MxNi43NTktMTIuNTcsMTUuMDgzLTEwLjg5NCwxNS4wODMtMTAuODk0bC44MzgsMjQuMywzMy41MTksMjguNDkxLS44MzgtNzcuMDkzLDQ2LjkyNy0zMy41MTksMjYuODE1LTE4LjQzNS0yLjUxNCwzNi4wMzMsMjUuMTM5LDE3LjYsNi43LTc0LjU3OSw1OC42NTctNDMuNTc1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW51eCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjAuOCAxMjMuM2MxIC41IDEuOCAxLjcgMyAxLjcgMS4xIDAgMi44LS40IDIuOS0xLjUuMi0xLjQtMS45LTIuMy0zLjItMi45LTEuNy0uNy0zLjktMS01LjUtLjEtLjQuMi0uOC43LS42IDEuMS4zIDEuMyAyLjMgMS4xIDMuNCAxLjd6bS0yMS45IDEuN2MxLjIgMCAyLTEuMiAzLTEuNyAxLjEtLjYgMy4xLS40IDMuNS0xLjYuMi0uNC0uMi0uOS0uNi0xLjEtMS42LS45LTMuOC0uNi01LjUuMS0xLjMuNi0zLjQgMS41LTMuMiAyLjkuMSAxIDEuOCAxLjUgMi44IDEuNHpNNDIwIDQwMy44Yy0zLjYtNC01LjMtMTEuNi03LjItMTkuNy0xLjgtOC4xLTMuOS0xNi44LTEwLjUtMjIuNC0xLjMtMS4xLTIuNi0yLjEtNC0yLjktMS4zLS44LTIuNy0xLjUtNC4xLTIgOS4yLTI3LjMgNS42LTU0LjUtMy43LTc5LjEtMTEuNC0zMC4xLTMxLjMtNTYuNC00Ni41LTc0LjQtMTcuMS0yMS41LTMzLjctNDEuOS0zMy40LTcyQzMxMS4xIDg1LjQgMzE1LjcuMSAyMzQuOCAwIDEzMi40LS4yIDE1OCAxMDMuNCAxNTYuOSAxMzUuMmMtMS43IDIzLjQtNi40IDQxLjgtMjIuNSA2NC43LTE4LjkgMjIuNS00NS41IDU4LjgtNTguMSA5Ni43LTYgMTcuOS04LjggMzYuMS02LjIgNTMuMy02LjUgNS44LTExLjQgMTQuNy0xNi42IDIwLjItNC4yIDQuMy0xMC4zIDUuOS0xNyA4LjNzLTE0IDYtMTguNSAxNC41Yy0yLjEgMy45LTIuOCA4LjEtMi44IDEyLjQgMCAzLjkuNiA3LjkgMS4yIDExLjggMS4yIDguMSAyLjUgMTUuNy44IDIwLjgtNS4yIDE0LjQtNS45IDI0LjQtMi4yIDMxLjcgMy44IDcuMyAxMS40IDEwLjUgMjAuMSAxMi4zIDE3LjMgMy42IDQwLjggMi43IDU5LjMgMTIuNSAxOS44IDEwLjQgMzkuOSAxNC4xIDU1LjkgMTAuNCAxMS42LTIuNiAyMS4xLTkuNiAyNS45LTIwLjIgMTIuNS0uMSAyNi4zLTUuNCA0OC4zLTYuNiAxNC45LTEuMiAzMy42IDUuMyA1NS4xIDQuMS42IDIuMyAxLjQgNC42IDIuNSA2Ljd2LjFjOC4zIDE2LjcgMjMuOCAyNC4zIDQwLjMgMjMgMTYuNi0xLjMgMzQuMS0xMSA0OC4zLTI3LjkgMTMuNi0xNi40IDM2LTIzLjIgNTAuOS0zMi4yIDcuNC00LjUgMTMuNC0xMC4xIDEzLjktMTguMy40LTguMi00LjQtMTcuMy0xNS41LTI5Ljd6TTIyMy43IDg3LjNjOS44LTIyLjIgMzQuMi0yMS44IDQ0LS40IDYuNSAxNC4yIDMuNiAzMC45LTQuMyA0MC40LTEuNi0uOC01LjktMi42LTEyLjYtNC45IDEuMS0xLjIgMy4xLTIuNyAzLjktNC42IDQuOC0xMS44LS4yLTI3LTkuMS0yNy4zLTcuMy0uNS0xMy45IDEwLjgtMTEuOCAyMy00LjEtMi05LjQtMy41LTEzLTQuNC0xLTYuOS0uMy0xNC42IDIuOS0yMS44ek0xODMgNzUuOGMxMC4xIDAgMjAuOCAxNC4yIDE5LjEgMzMuNS0zLjUgMS03LjEgMi41LTEwLjIgNC42IDEuMi04LjktMy4zLTIwLjEtOS42LTE5LjYtOC40LjctOS44IDIxLjItMS44IDI4LjEgMSAuOCAxLjktLjItNS45IDUuNS0xNS42LTE0LjYtMTAuNS01Mi4xIDguNC01Mi4xem0tMTMuNiA2MC43YzYuMi00LjYgMTMuNi0xMCAxNC4xLTEwLjUgNC43LTQuNCAxMy41LTE0LjIgMjcuOS0xNC4yIDcuMSAwIDE1LjYgMi4zIDI1LjkgOC45IDYuMyA0LjEgMTEuMyA0LjQgMjIuNiA5LjMgOC40IDMuNSAxMy43IDkuNyAxMC41IDE4LjItMi42IDcuMS0xMSAxNC40LTIyLjcgMTguMS0xMS4xIDMuNi0xOS44IDE2LTM4LjIgMTQuOS0zLjktLjItNy0xLTkuNi0yLjEtOC0zLjUtMTIuMi0xMC40LTIwLTE1LTguNi00LjgtMTMuMi0xMC40LTE0LjctMTUuMy0xLjQtNC45IDAtOSA0LjItMTIuM3ptMy4zIDMzNGMtMi43IDM1LjEtNDMuOSAzNC40LTc1LjMgMTgtMjkuOS0xNS44LTY4LjYtNi41LTc2LjUtMjEuOS0yLjQtNC43LTIuNC0xMi43IDIuNi0yNi40di0uMmMyLjQtNy42LjYtMTYtLjYtMjMuOS0xLjItNy44LTEuOC0xNSAuOS0yMCAzLjUtNi43IDguNS05LjEgMTQuOC0xMS4zIDEwLjMtMy43IDExLjgtMy40IDE5LjYtOS45IDUuNS01LjcgOS41LTEyLjkgMTQuMy0xOCA1LjEtNS41IDEwLTguMSAxNy43LTYuOSA4LjEgMS4yIDE1LjEgNi44IDIxLjkgMTZsMTkuNiAzNS42YzkuNSAxOS45IDQzLjEgNDguNCA0MSA2OC45em0tMS40LTI1LjljLTQuMS02LjYtOS42LTEzLjYtMTQuNC0xOS42IDcuMSAwIDE0LjItMi4yIDE2LjctOC45IDIuMy02LjIgMC0xNC45LTcuNC0yNC45LTEzLjUtMTguMi0zOC4zLTMyLjUtMzguMy0zMi41LTEzLjUtOC40LTIxLjEtMTguNy0yNC42LTI5LjlzLTMtMjMuMy0uMy0zNS4yYzUuMi0yMi45IDE4LjYtNDUuMiAyNy4yLTU5LjIgMi4zLTEuNy44IDMuMi04LjcgMjAuOC04LjUgMTYuMS0yNC40IDUzLjMtMi42IDgyLjQuNi0yMC43IDUuNS00MS44IDEzLjgtNjEuNSAxMi0yNy40IDM3LjMtNzQuOSAzOS4zLTExMi43IDEuMS44IDQuNiAzLjIgNi4yIDQuMSA0LjYgMi43IDguMSA2LjcgMTIuNiAxMC4zIDEyLjQgMTAgMjguNSA5LjIgNDIuNCAxLjIgNi4yLTMuNSAxMS4yLTcuNSAxNS45LTkgOS45LTMuMSAxNy44LTguNiAyMi4zLTE1IDcuNyAzMC40IDI1LjcgNzQuMyAzNy4yIDk1LjcgNi4xIDExLjQgMTguMyAzNS41IDIzLjYgNjQuNiAzLjMtLjEgNyAuNCAxMC45IDEuNCAxMy44LTM1LjctMTEuNy03NC4yLTIzLjMtODQuOS00LjctNC42LTQuOS02LjYtMi42LTYuNSAxMi42IDExLjIgMjkuMiAzMy43IDM1LjIgNTkgMi44IDExLjYgMy4zIDIzLjcuNCAzNS43IDE2LjQgNi44IDM1LjkgMTcuOSAzMC43IDM0LjgtMi4yLS4xLTMuMiAwLTQuMiAwIDMuMi0xMC4xLTMuOS0xNy42LTIyLjgtMjYuMS0xOS42LTguNi0zNi04LjYtMzguMyAxMi41LTEyLjEgNC4yLTE4LjMgMTQuNy0yMS40IDI3LjMtMi44IDExLjItMy42IDI0LjctNC40IDM5LjktLjUgNy43LTMuNiAxOC02LjggMjktMzIuMSAyMi45LTc2LjcgMzIuOS0xMTQuMyA3LjJ6bTI1Ny40LTExLjVjLS45IDE2LjgtNDEuMiAxOS45LTYzLjIgNDYuNS0xMy4yIDE1LjctMjkuNCAyNC40LTQzLjYgMjUuNXMtMjYuNS00LjgtMzMuNy0xOS4zYy00LjctMTEuMS0yLjQtMjMuMSAxLjEtMzYuMyAzLjctMTQuMiA5LjItMjguOCA5LjktNDAuNi44LTE1LjIgMS43LTI4LjUgNC4yLTM4LjcgMi42LTEwLjMgNi42LTE3LjIgMTMuNy0yMS4xLjMtLjIuNy0uMyAxLS41LjggMTMuMiA3LjMgMjYuNiAxOC44IDI5LjUgMTIuNiAzLjMgMzAuNy03LjUgMzguNC0xNi4zIDktLjMgMTUuNy0uOSAyMi42IDUuMSA5LjkgOC41IDcuMSAzMC4zIDE3LjEgNDEuNiAxMC42IDExLjYgMTQgMTkuNSAxMy43IDI0LjZ6TTE3My4zIDE0OC43YzIgMS45IDQuNyA0LjUgOCA3LjEgNi42IDUuMiAxNS44IDEwLjYgMjcuMyAxMC42IDExLjYgMCAyMi41LTUuOSAzMS44LTEwLjggNC45LTIuNiAxMC45LTcgMTQuOC0xMC40czUuOS02LjMgMy4xLTYuNi0yLjYgMi42LTYgNS4xYy00LjQgMy4yLTkuNyA3LjQtMTMuOSA5LjgtNy40IDQuMi0xOS41IDEwLjItMjkuOSAxMC4ycy0xOC43LTQuOC0yNC45LTkuN2MtMy4xLTIuNS01LjctNS03LjctNi45LTEuNS0xLjQtMS45LTQuNi00LjMtNC45LTEuNC0uMS0xLjggMy43IDEuNyA2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUx5ZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MS4xaDc3Ljh2MjA4LjdjMCAzMy4xIDE1IDUyLjggMjcuMiA2MS0xMi43IDExLjEtNTEuMiAyMC45LTgwLjItMi44QzcuOCAzMzQgMCAzMTAuNyAwIDI4OVY4MS4xem00ODUuOSAxNzMuNXYtMjJoMjMuOHYtNzYuOGgtMjYuMWMtMTAuMS00Ni4zLTUxLjItODAuNy0xMDAuMy04MC43LTU2LjYgMC0xMDIuNyA0Ni0xMDIuNyAxMDIuN1YzNTdjMTYgMi4zIDM1LjQtLjMgNTEuNy0xNCAxNy4xLTE0IDI0LjgtMzcuMiAyNC44LTU5di02LjdoMzguOHYtNzYuOGgtMzguOHYtMjMuM2MwLTM0LjYgNTIuMi0zNC42IDUyLjIgMHY3Ny4xYzAgNTYuNiA0NiAxMDIuNyAxMDIuNyAxMDIuN3YtNzYuNWMtMTQuNSAwLTI2LjEtMTEuNy0yNi4xLTI1Ljl6bS0yOTQuMy05OXYxMTNjMCAxNS40LTIzLjggMTUuNC0yMy44IDB2LTExM0g5MXYxMzIuN2MwIDIzLjggOCA1NCA0NSA2My45IDM3IDkuOCA1OC4yLTEwLjYgNTguMi0xMC42LTIuMSAxMy40LTE0LjUgMjMuMy0zNC45IDI1LjMtMTUuNSAxLjYtMzUuMi0zLjYtNDUtNy44djcwLjNjMjUuMSA3LjUgNTEuNSA5LjggNzcuNiA0LjcgNDcuMS05LjEgNzYuOC00OC40IDc2LjgtMTAwLjhWMTU1LjFoLTc3LjF2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ2VudG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ1LjcgMTI3LjlWMzg0bC02My40IDM2LjVWMTY0LjdMMjIzLjggNzMuMSA2NS4yIDE2NC43bC40IDI1NS45TDIuMyAzODRWMTI4LjFMMjI0LjIgMGwyMjEuNSAxMjcuOXpNMjU1LjYgNDIwLjVMMjI0IDQzOC45bC0zMS44LTE4LjJ2LTI1NmwtNjMuMyAzNi42LjEgMjU1LjkgOTQuOSA1NC45IDk1LjEtNTQuOXYtMjU2bC02My40LTM2LjZ2MjU1Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1haWxjaGltcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzAuNjEgMjQzLjUyYTM2LjE1IDM2LjE1IDAgMCAxIDkuMyAwYzEuNjYtMy44MyAxLjk1LTEwLjQzLjQ1LTE3LjYxLTIuMjMtMTAuNjctNS4yNS0xNy4xNC0xMS40OC0xNi4xM3MtNi40NyA4Ljc0LTQuMjQgMTkuNDJjMS4yNiA2IDMuNDkgMTEuMTQgNiAxNC4zMnpNMjc3LjA1IDI1MmM0LjQ3IDIgNy4yIDMuMjYgOC4yOCAyLjEzIDEuODktMS45NC0zLjQ4LTkuMzktMTIuMTItMTMuMDlhMzEuNDQgMzEuNDQgMCAwIDAtMzAuNjEgMy42OGMtMyAyLjE4LTUuODEgNS4yMi01LjQxIDcuMDYuODUgMy43NCAxMC0yLjcxIDIyLjYtMy40OCA3LS40NCAxMi44IDEuNzUgMTcuMjYgMy43MXptLTkgNS4xM2MtOS4wNyAxLjQyLTE1IDYuNTMtMTMuNDcgMTAuMS45LjM0IDEuMTcuODEgNS4yMS0uODFhMzcgMzcgMCAwIDEgMTguNzItMS45NWMyLjkyLjM0IDQuMzEuNTIgNC45NC0uNDkgMS40Ni0yLjIyLTUuNzEtOC0xNS4zOS02Ljg1em01NC4xNyAxNy4xYzMuMzgtNi44Ny0xMC45LTEzLjkzLTE0LjMtN3MxMC45MiAxMy44OCAxNC4zMiA2Ljk3em0xNS42Ni0yMC40N2MtNy42Ni0uMTMtNy45NSAxNS44LS4yNiAxNS45M3M3Ljk4LTE1LjgxLjI4LTE1Ljk2em0tMjE4Ljc5IDc4LjljLTEuMzIuMzEtNiAxLjQ1LTguNDctMi4zNS01LjItOCAxMS4xMS0yMC4zOCAzLTM1Ljc3LTkuMS0xNy40Ny0yNy44Mi0xMy41NC0zNS4wNS01LjU0LTguNzEgOS42LTguNzIgMjMuNTQtNSAyNC4wOCA0LjI3LjU3IDQuMDgtNi40NyA3LjM4LTExLjYzYTEyLjgzIDEyLjgzIDAgMCAxIDE3Ljg1LTMuNzJjMTEuNTkgNy41OSAxLjM3IDE3Ljc2IDIuMjggMjguNjIgMS4zOSAxNi42OCAxOC40MiAxNi4zNyAyMS41OCA5YTIuMDggMi4wOCAwIDAgMC0uMi0yLjMzYy4wMy44OS42OC0xLjMtMy4zNS0uMzl6bTI5OS43Mi0xNy4wN2MtMy4zNS0xMS43My0yLjU3LTkuMjItNi43OC0yMC41MiAyLjQ1LTMuNjcgMTUuMjktMjQtMy4wNy00My4yNS0xMC40LTEwLjkyLTMzLjktMTYuNTQtNDEuMS0xOC41NC0xLjUtMTEuMzkgNC42NS01OC43LTIxLjUyLTgzIDIwLjc5LTIxLjU1IDMzLjc2LTQ1LjI5IDMzLjczLTY1LjY1LS4wNi0zOS4xNi00OC4xNS01MS0xMDcuNDItMjYuNDdsLTEyLjU1IDUuMzNjLS4wNi0uMDUtMjIuNzEtMjIuMjctMjMuMDUtMjIuNTdDMTY5LjUtMTgtNDEuNzcgMjE2LjgxIDI1Ljc4IDI3My44NWwxNC43NiAxMi41MWE3Mi40OSA3Mi40OSAwIDAgMC00LjEgMzMuNWMzLjM2IDMzLjQgMzYgNjAuNDIgNjcuNTMgNjAuMzggNTcuNzMgMTMzLjA2IDI2Ny45IDEzMy4yOCAzMjIuMjkgMyAxLjc0LTQuNDcgOS4xMS0yNC42MSA5LjExLTQyLjM4cy0xMC4wOS0yNS4yNy0xNi41My0yNS4yN3ptLTMxNiA0OC4xNmMtMjIuODItLjYxLTQ3LjQ2LTIxLjE1LTQ5LjkxLTQ1LjUxLTYuMTctNjEuMzEgNzQuMjYtNzUuMjcgODQtMTIuMzMgNC41NCAyOS42NC00LjY3IDU4LjQ5LTM0LjEyIDU3Ljgxek04NC4zIDI0OS41NUM2OS4xNCAyNTIuNSA1NS43OCAyNjEuMDkgNDcuNiAyNzNjLTQuODgtNC4wNy0xNC0xMi0xNS41OS0xNS0xMy4wMS0yNC44NSAxNC4yNC03MyAzMy4zLTEwMC4yMUMxMTIuNDIgOTAuNTYgMTg2LjE5IDM5LjY4IDIyMC4zNiA0OC45MWM1LjU1IDEuNTcgMjMuOTQgMjIuODkgMjMuOTQgMjIuODlzLTM0LjE1IDE4Ljk0LTY1LjggNDUuMzVjLTQyLjY2IDMyLjg1LTc0Ljg5IDgwLjU5LTk0LjIgMTMyLjR6TTMyMy4xOCAzNTAuN3MtMzUuNzQgNS4zLTY5LjUxLTcuMDdjNi4yMS0yMC4xNiAyNyA2LjEgOTYuNC0xMy44MSAxNS4yOS00LjM4IDM1LjM3LTEzIDUxLTI1LjM1YTEwMi44NSAxMDIuODUgMCAwIDEgNy4xMiAyNC4yOGMzLjY2LS42NiAxNC4yNS0uNTIgMTEuNDQgMTguMS0zLjI5IDE5Ljg3LTExLjczIDM2LTI1LjkzIDUwLjg0QTEwNi44NiAxMDYuODYgMCAwIDEgMzYyLjU1IDQyMWExMzIuNDUgMTMyLjQ1IDAgMCAxLTIwLjM0IDguNThjLTUzLjUxIDE3LjQ4LTEwOC4zLTEuNzQtMTI2LTQzYTY2LjMzIDY2LjMzIDAgMCAxLTMuNTUtOS43NGMtNy41My0yNy4yLTEuMTQtNTkuODMgMTguODQtODAuMzcgMS4yMy0xLjMxIDIuNDgtMi44NSAyLjQ4LTQuNzlhOC40NSA4LjQ1IDAgMCAwLTEuOTItNC41NGMtNy0xMC4xMy0zMS4xOS0yNy40LTI2LjMzLTYwLjgzIDMuNS0yNCAyNC40OS00MC45MSA0NC4wNy0zOS45MWw1IC4yOWM4LjQ4LjUgMTUuODkgMS41OSAyMi44OCAxLjg4IDExLjY5LjUgMjIuMi0xLjE5IDM0LjY0LTExLjU2IDQuMi0zLjUgNy41Ny02LjU0IDEzLjI2LTcuNTFhMTcuNDUgMTcuNDUgMCAwIDEgMTMuNiAyLjI0YzEwIDYuNjQgMTEuNCAyMi43MyAxMS45MiAzNC40OS4yOSA2LjcyIDEuMSAyMyAxLjM4IDI3LjYzLjYzIDEwLjY3IDMuNDMgMTIuMTcgOS4xMSAxNCAzLjE5IDEuMDUgNi4xNSAxLjgzIDEwLjUxIDMuMDYgMTMuMjEgMy43MSAyMSA3LjQ4IDI2IDEyLjMxYTE2LjM4IDE2LjM4IDAgMCAxIDQuNzQgOS4yOWMxLjU2IDExLjM3LTguODIgMjUuNC0zNi4zMSAzOC4xNi00Ni43MSAyMS42OC05My42OCAxNC40NS0xMDAuNDggMTMuNjgtMjAuMTUtMi43MS0zMS42MyAyMy4zMi0xOS41NSA0MS4xNSAyMi42NCAzMy40MSAxMjIuNCAyMCAxNTEuMzctMjEuMzUuNjktMSAuMTItMS41OS0uNzMtMS00MS43NyAyOC41OC05Ny4wNiAzOC4yMS0xMjguNDYgMjYtNC43Ny0xLjg1LTE0LjczLTYuNDQtMTUuOTQtMTYuNjcgNDMuNiAxMy40OSA3MSAuNzQgNzEgLjc0czIuMDMtMi43OS0uNTYtMi41M3ptLTY4LjQ3LTUuN3ptLTgzLjQtMTg3LjVjMTYuNzQtMTkuMzUgMzcuMzYtMzYuMTggNTUuODMtNDUuNjNhLjczLjczIDAgMCAxIDEgMWMtMS40NiAyLjY2LTQuMjkgOC4zNC01LjE5IDEyLjY1YS43NS43NSAwIDAgMCAxLjE2Ljc5YzExLjQ5LTcuODMgMzEuNDgtMTYuMjIgNDktMTcuM2EuNzcuNzcgMCAwIDEgLjUyIDEuMzggNDEuODYgNDEuODYgMCAwIDAtNy43MSA3Ljc0Ljc1Ljc1IDAgMCAwIC41OSAxLjE5YzEyLjMxLjA5IDI5LjY2IDQuNCA0MSAxMC43NC43Ni40My4yMiAxLjkxLS42NCAxLjcyLTY5LjU1LTE1Ljk0LTEyMy4wOCAxOC41My0xMzQuNSAyNi44M2EuNzYuNzYgMCAwIDEtMS0xLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYW5kYWxvcmlhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIuMjcgNTExLjg5Yy0xLTMuMjYtMS42OS0xNS44My0xLjM5LTI0LjU4LjU1LTE1Ljg5IDEtMjQuNzIgMS40LTI4Ljc2LjY0LTYuMiAyLjg3LTIwLjcyIDMuMjgtMjEuMzguNi0xIC40LTI3Ljg3LS4yNC0zMy4xMy0uMzEtMi41OC0uNjMtMTEuOS0uNjktMjAuNzMtLjEzLTE2LjQ3LS41My0yMC4xMi0yLjczLTI0Ljc2LTEuMS0yLjMyLTEuMjMtMy44NC0xLTExLjQzYTkyLjM4IDkyLjM4IDAgMCAwLS4zNC0xMi43MWMtMi0xMy0zLjQ2LTI3LjctMy4yNS0zMy45cy40My03LjE1IDIuMDYtOS42N2MzLjA1LTQuNzEgNi41MS0xNCA4LjYyLTIzLjI3IDIuMjYtOS44NiAzLjg4LTE3LjE4IDQuNTktMjAuNzRhMTA5LjU0IDEwOS41NCAwIDAgMSA0LjQyLTE1LjA1YzIuMjctNi4yNSAyLjQ5LTE1LjM5LjM3LTE1LjM5LS4zIDAtMS4zOCAxLjIyLTIuNDEgMi43MXMtNC43NiA0LjgtOC4yOSA3LjM2Yy04LjM3IDYuMDgtMTEuNyA5LjM5LTEyLjY2IDEyLjU4cy0xIDcuMjMtLjE2IDcuNzZjLjM0LjIxIDEuMjkgMi40IDIuMTEgNC44OGEyOC44MyAyOC44MyAwIDAgMSAuNzIgMTUuMzZjLS4zOSAxLjc3LTEgNS40Ny0xLjQ2IDguMjNzLTEgNi40Ni0xLjI1IDguMjJhOS44NSA5Ljg1IDAgMCAxLTEuNTUgNC4yNmMtMSAxLTEuMTQuOTEtMi4wNS0uNTNhMTQuODcgMTQuODcgMCAwIDEtMS40NC00Ljc1Yy0uMjUtMS43NC0xLjYzLTcuMTEtMy4wOC0xMS45My0zLjI4LTEwLjktMy41Mi0xNi4xNS0xLTIxYTE0LjI0IDE0LjI0IDAgMCAwIDEuNjctNC42MWMwLTIuMzktMi4yLTUuMzItNy40MS05Ljg5LTctNi4xOC04LjYzLTcuOTItMTAuMjMtMTEuMy0xLjcxLTMuNi0zLjA2LTQuMDYtNC41NC0xLjU0LTEuNzggMy0yLjYgOS4xMS0zIDIybC0uMzQgMTIuMTkgMiAyLjI1YzMuMjEgMy43IDEyLjA3IDE2LjQ1IDEzLjc4IDE5LjgzIDMuNDEgNi43NCA0LjM0IDExLjY5IDQuNDEgMjMuNTZzLjk1IDIyLjc1IDIgMjQuNzFjLjM2LjY2LjUxIDEuMzUuMzQgMS41MnMuNDEgMi4wOSAxLjI5IDQuMjdhMzguMTQgMzguMTQgMCAwIDEgMi4wNiA5IDkxIDkxIDAgMCAwIDEuNzEgMTAuMzdjMi4yMyA5LjU2IDIuNzcgMTQuMDggMi4zOSAyMC4xNC0uMiAzLjI3LS41MyAxMS4wNy0uNzMgMTcuMzItMS4zMSA0MS43Ni0xLjg1IDU4LTIgNjEuMjEtLjEyIDItLjM5IDExLjUxLS42IDIxLjA3LS4zNiAxNi4zLTEuMyAyNy4zNy0yLjQyIDI4LjY1LS42NC43My04LjA3LTQuOTEtMTIuNTItOS40OS0zLjc1LTMuODctNC00Ljc5LTIuODMtOS45NS43LTMgMi4yNi0xOC4yOSAzLjMzLTMyLjYyLjM2LTQuNzguODEtMTAuNSAxLTEyLjcxLjgzLTkuMzcgMS42Ni0yMC4zNSAyLjYxLTM0Ljc4LjU2LTguNDYgMS4zMy0xNi40NCAxLjcyLTE3Ljczcy44OS05Ljg5IDEuMTMtMTkuMTFsLjQzLTE2Ljc3LTIuMjYtNC4zYy0xLjcyLTMuMjgtNC44Ny02Ljk0LTEzLjIyLTE1LjM0LTYtNi4wNy0xMS44NC0xMi4zLTEyLjkxLTEzLjg1bC0xLjk1LTIuODEuNzUtMTAuOWMxLjA5LTE1LjcxIDEuMS00OC41NyAwLTU5LjA2bC0uODktOC43LTMuMjgtNC41MmMtNS44Ni04LjA4LTUuOC03Ljc1LTYuMjItMzMuMjctLjEtNi4wNy0uMzgtMTEuNS0uNjMtMTIuMDYtLjgzLTEuODctMy4wNS0yLjY2LTguNTQtMy4wNS04Ljg2LS42Mi0xMS0xLjktMjMuODUtMTQuNTUtNi4xNS02LTEyLjM0LTEyLTEzLjc1LTEzLjE5LTIuODEtMi40Mi0yLjc5LTItLjU2LTkuNjNsMS4zNS00LjY1LTEuNjktM2EzMi4yMiAzMi4yMiAwIDAgMC0yLjU5LTQuMDdjLTEuMzMtMS41MS01LjUtMTAuODktNi0xMy40OWE0LjI0IDQuMjQgMCAwIDEgLjg3LTMuOWMyLjIzLTIuODYgMy40LTUuNjggNC40NS0xMC43MyAyLjMzLTExLjE5IDcuNzQtMjYuMDkgMTAuNi0yOS4yMiAzLjE4LTMuNDcgNy43LTEgOS40MSA1IDEuMzQgNC43OSAxLjM3IDkuNzkuMSAxOC41NWExMDEuMiAxMDEuMiAwIDAgMC0xIDExLjExYzAgNCAuMTkgNC42OSAyLjI1IDcuMzkgMy4zMyA0LjM3IDcuNzMgNy40MSAxNS4yIDEwLjUyYTE4LjY3IDE4LjY3IDAgMCAxIDQuNzIgMi44NWMxMS4xNyAxMC43MiAxOC42MiAxNi4xOCAyMi45NSAxNi44NSA1LjE4LjggOCA0LjU0IDEwIDEzLjM5IDEuMzEgNS42NSA0IDExLjE0IDUuNDYgMTEuMTRhOS4zOCA5LjM4IDAgMCAwIDMuMzMtMS4zOWMyLTEuMjIgMi4yNS0xLjczIDIuMjUtNC4xOGExMzIuODggMTMyLjg4IDAgMCAwLTItMTcuODRjLS4zNy0xLjY2LS43OC00LjA2LS45My01LjM1cy0uNjEtMy44NS0xLTUuNjljLTIuNTUtMTEuMTYtMy42NS0xNS40Ni00LjEtMTYtMS41NS0yLTQuMDgtMTAuMi00LjkzLTE1LjkyLTEuNjQtMTEuMTEtNC0xNC4yMy0xMi45MS0xNy4zOUE0My4xNSA0My4xNSAwIDAgMSAxNjUuMjQgNzhjLTEuMTUtMS00LTMuMjItNi4zNS01LjA2cy00LjQxLTMuNTMtNC42LTMuNzZhMjIuNyAyMi43IDAgMCAwLTIuNjktMmMtNi4yNC00LjIyLTguODQtNy0xMS4yNi0xMmwtMi40NC01LS4yMi0xMy0uMjItMTMgNi45MS02LjU1YzMuOTUtMy43NSA4LjQ4LTcuMzUgMTAuNTktOC40MyAzLjMxLTEuNjkgNC40NS0xLjg5IDExLjM3LTIgOC41My0uMTkgMTAuMTIgMCAxMS42NiAxLjU2czEuMzYgNi40LS4yOSA4LjVhNi42NiA2LjY2IDAgMCAwLTEuMzQgMi4zMmMwIC41OC0yLjYxIDQuOTEtNS40MiA5YTMwLjM5IDMwLjM5IDAgMCAwLTIuMzcgNi44MmMyMC40NCAxMy4zOSAyMS41NSAzLjc3IDE0LjA3IDI5TDE5NCA2Ni45MmMzLjExLTguNjYgNi40Ny0xNy4yNiA4LjYxLTI2LjIyLjI5LTcuNjMtMTItNC4xOS0xNS40LTguNjgtMi4zMy01LjkzIDMuMTMtMTQuMTggNi4wNi0xOS4yIDEuNi0yLjM0IDYuNjItNC43IDguODItNC4xNS44OC4yMiA0LjE2LS4zNSA3LjM3LTEuMjhhNDUuMyA0NS4zIDAgMCAxIDcuNTUtMS42OCAyOS41NyAyOS41NyAwIDAgMCA2LTEuMjljMy42NS0xLjExIDQuNS0xLjE3IDYuMzUtLjRhMjkuNTQgMjkuNTQgMCAwIDAgNS44MiAxLjM2IDE4LjE4IDE4LjE4IDAgMCAxIDYgMS45MSAyMi42NyAyMi42NyAwIDAgMCA1IDIuMTdjMi41MS42OCAzIC41NyA3LjA1LTEuNjdsNC4zNS0yLjRMMjY4LjMyIDVjMTAuNDQtLjQgMTAuODEtLjQ3IDE1LjI2LTIuNjhMMjg4LjE2IDBsMi40NiAxLjQzYzEuNzYgMSAzLjE0IDIuNzMgNC44NSA2IDIuMzYgNC41MSAyLjM4IDQuNTggMS4zNyA3LjM3LS44OCAyLjQ0LS44OSAzLjMtLjEgNi4zOWEzNS43NiAzNS43NiAwIDAgMCAyLjEgNS45MSAxMy41NSAxMy41NSAwIDAgMSAxLjMxIDRjLjMxIDQuMzMgMCA1LjMtMi40MSA2LjkyLTIuMTcgMS40Ny03IDcuOTEtNyA5LjM0YTE0Ljc3IDE0Ljc3IDAgMCAxLTEuMDcgM2MtNSAxMS41MS02Ljc2IDEzLjU2LTE0LjI2IDE3LTkuMiA0LjItMTIuMyA1LjE5LTE2LjIxIDUuMTktMy4xIDAtNCAuMjUtNC41NCAxLjI2YTE4LjMzIDE4LjMzIDAgMCAxLTQuMDkgMy43MSAxMy42MiAxMy42MiAwIDAgMC00LjM4IDQuNzggNS44OSA1Ljg5IDAgMCAxLTIuNDkgMi45MSA2Ljg4IDYuODggMCAwIDAtMi40NSAxLjcxIDY3LjYyIDY3LjYyIDAgMCAxLTcgNS4zOGMtMy4zMyAyLjM0LTYuODcgNS03Ljg3IDZBNy4yNyA3LjI3IDAgMCAxIDIyNCAxMDBhNS43NiA1Ljc2IDAgMCAwLTIuMTMgMS42NWMtMS4zMSAxLjM5LTEuNDkgMi4xMS0xLjE0IDQuNmEzNi40NSAzNi40NSAwIDAgMCAxLjQyIDUuODhjMS4zMiAzLjggMS4zMSA3Ljg2IDAgMTAuNTdzLS44OSA2LjY1IDEuMzUgOS41OWMyIDIuNjMgMi4xNiA0LjU2LjcxIDguODRhMzMuNDUgMzMuNDUgMCAwIDAtMS4wNiA4LjkxYzAgNC44OC4yMiA2LjI4IDEuNDYgOC4zOHMxLjgyIDIuNDggMy4yNCAyLjMyYzItLjIzIDIuMy0xLjA1IDQuNzEtMTIuMTIgMi4xOC0xMCAzLjcxLTExLjkyIDEzLjc2LTE3LjA4IDIuOTQtMS41MSA3LjQ2LTQgMTAtNS40NHM2Ljc5LTMuNjkgOS4zNy00LjkxYTQwLjA5IDQwLjA5IDAgMCAwIDE1LjIyLTExLjY3YzcuMTEtOC43OSAxMC0xNi4yMiAxMi44NS0zMy4zYTE4LjM3IDE4LjM3IDAgMCAxIDIuODYtNy43MyAyMC4zOSAyMC4zOSAwIDAgMCAyLjg5LTcuMzFjMS01LjMgMi44NS05LjA4IDUuNTgtMTEuNTEgNC43LTQuMTggNi0xLjA5IDQuNTkgMTAuODctLjQ2IDMuODYtMS4xIDEwLjMzLTEuNDQgMTQuMzhsLS42MSA3LjM2IDQuNDUgNC4wOSA0LjQ1IDQuMDkuMTEgOC40MmMuMDYgNC42My40NyA5LjUzLjkyIDEwLjg5bC44MiAyLjQ3LTYuNDMgNi4yOGMtOC41NCA4LjMzLTEyLjg4IDEzLjkzLTE2Ljc2IDIxLjYxLTEuNzcgMy40OS0zLjc0IDcuMTEtNC4zOCA4LTIuMTggMy4xMS02LjQ2IDEzLTguNzYgMjAuMjZsLTIuMjkgNy4yMi03IDYuNDljLTMuODMgMy41Ny04IDcuMjUtOS4xNyA4LjE3LTMuMDUgMi4zMi00LjI2IDUuMTUtNC4yNiAxMGExNC42MiAxNC42MiAwIDAgMCAxLjU5IDcuMjYgNDIgNDIgMCAwIDEgMi4wOSA0LjgzIDkuMjggOS4yOCAwIDAgMCAxLjU3IDIuODljMS40IDEuNTkgMS45MiAxNi4xMi44MyAyMy4yMi0uNjggNC40OC0zLjYzIDEyLTQuNyAxMi0xLjc5IDAtNC4wNiA5LjI3LTUuMDcgMjAuNzQtLjE4IDItLjYyIDUuOTQtMSA4LjdzLTEgMTAtMS4zNSAxNi4wNWMtLjc3IDEyLjIyLS4xOSAxOC43NyAyIDIzLjE1IDMuNDEgNi42OS41MiAxMi42OS0xMSAyMi44NGwtNCAzLjQ5LjA3IDUuMTlhNDAuODEgNDAuODEgMCAwIDAgMS4xNCA4Ljg3YzQuNjEgMTYgNC43MyAxNi45MiA0LjM4IDM3LjEzLS40NiAyNi40LS4yNiA0MC4yNy42MyA0NC4xNWE2MS4zMSA2MS4zMSAwIDAgMSAxLjA4IDdjLjE3IDIgLjY2IDUuMzMgMS4wOCA3LjM2LjQ3IDIuMjYuNzggMTEgLjc5IDIyLjc0djE5LjA2bC0xLjgxIDIuNjNjLTIuNzEgMy45MS0xNS4xMSAxMy41NC0xNS40OSAxMi4yOXptMjkuNTMtNDUuMTFjLS4xOC0uMy0uMzMtNi44Ny0uMzMtMTQuNTkgMC0xNC4wNi0uODktMjcuNTQtMi4yNi0zNC40NS0uNC0yLS44MS05LjctLjktMTcuMDYtLjE1LTExLjkzLTEuNC0yNC4zNy0yLjY0LTI2LjM4LS42Ni0xLjA3LTMtMTcuNjYtMy0yMS4zIDAtNC4yMyAxLTYgNS4yOC05LjEzczQuODYtMy4xNCA1LjQ4LS43MmMuMjggMS4xIDEuNDUgNS42MiAyLjYgMTAgMy45MyAxNS4xMiA0LjE0IDE2LjI3IDQuMDUgMjEuNzQtLjEgNS43OC0uMTMgNi4xMy0xLjc0IDE3LjczLTEgNy4wNy0xLjE3IDEyLjM5LTEgMjguNDMuMTcgMTkuNC0uNjQgMzUuNzMtMiA0MS4yNy0uNzEgMi43OC0yLjggNS40OC0zLjQzIDQuNDN6bS03MS0zNy41OGExMDEgMTAxIDAgMCAxLTEuNzMtMTAuNzkgMTAwLjUgMTAwLjUgMCAwIDAtMS43My0xMC43OSAzNy41MyAzNy41MyAwIDAgMS0xLTYuNDljLS4zMS0zLjE5LS45MS03LjQ2LTEuMzMtOS40OC0xLTQuNzktMy4zNS0xOS4zNS0zLjQyLTIxLjA3IDAtLjc0LS4zNC00LjA1LS43LTcuMzYtLjY3LTYuMjEtLjg0LTI3LjY3LS4yMi0yOC4yOSAxLTEgNi42MyAyLjc2IDExLjMzIDcuNDNsNS4yOCA1LjI1LS40NSA2LjQ3Yy0uMjUgMy41Ni0uNiAxMC4yMy0uNzggMTQuODNzLS40OSA5Ljg3LS42NyAxMS43MS0uNjEgOS4zNi0uOTQgMTYuNzJjLS43OSAxNy40MS0xLjk0IDMxLjI5LTIuNjUgMzJhLjYyLjYyIDAgMCAxLTEtLjE0em0tODcuMTgtMjY2LjU5YzIxLjA3IDEyLjc5IDE3Ljg0IDE0LjE1IDI4LjQ5IDE3LjY2IDEzIDQuMjkgMTguODcgNy4xMyAyMy4xNSAxNi44N0MxMTEuNiAyMzMuMjggODYuMjUgMjU1IDc4LjU1IDI2OGMtMzEgNTItNiAxMDEuNTkgNjIuNzUgODcuMjEtMTQuMTggMjkuMjMtNzggMjguNjMtOTguNjgtNC45LTI0LjY4LTM5Ljk1LTIyLjA5LTExOC4zIDYxLTE4Ny42NnptMjEwLjc5IDE3OWM1Ni42NiA2Ljg4IDgyLjMyLTM3Ljc0IDQ2LjU0LTg5LjIzIDAgMC0yNi44Ny0yOS4zNC02NC4yOC02OCAzLTE1LjQ1IDkuNDktMzIuMTIgMzAuNTctNTMuODIgODkuMiA2My41MSA5MiAxNDEuNjEgOTIuNDYgMTQ5LjM2IDQuMyA3MC42NC03OC43IDkxLjE4LTEwNS4yOSA2MS43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFya2Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkzLjggNTkuMUg0Ni4yQzIwLjcgNTkuMSAwIDc5LjggMCAxMDUuMnYzMDEuNWMwIDI1LjUgMjAuNyA0Ni4yIDQ2LjIgNDYuMmg1NDcuN2MyNS41IDAgNDYuMi0yMC43IDQ2LjEtNDYuMVYxMDUuMmMwLTI1LjQtMjAuNy00Ni4xLTQ2LjItNDYuMXpNMzM4LjUgMzYwLjZIMjc3di0xMjBsLTYxLjUgNzYuOS02MS41LTc2Ljl2MTIwSDkyLjNWMTUxLjRoNjEuNWw2MS41IDc2LjkgNjEuNS03Ni45aDYxLjV2MjA5LjJ6bTEzNS4zIDMuMUwzODEuNSAyNTZINDQzVjE1MS40aDYxLjVWMjU2SDU2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFzdG9kb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzIDE3OS4xMWMwLTk3LjItNjMuNzEtMTI1LjctNjMuNzEtMTI1LjctNjIuNTItMjguNy0yMjguNTYtMjguNC0yOTAuNDggMCAwIDAtNjMuNzIgMjguNS02My43MiAxMjUuNyAwIDExNS43LTYuNiAyNTkuNCAxMDUuNjMgMjg5LjEgNDAuNTEgMTAuNyA3NS4zMiAxMyAxMDMuMzMgMTEuNCA1MC44MS0yLjggNzkuMzItMTguMSA3OS4zMi0xOC4xbC0xLjctMzYuOXMtMzYuMzEgMTEuNC03Ny4xMiAxMC4xYy00MC40MS0xLjQtODMtNC40LTg5LjYzLTU0YTEwMi41NCAxMDIuNTQgMCAwIDEtLjktMTMuOWM4NS42MyAyMC45IDE1OC42NSA5LjEgMTc4Ljc1IDYuNyA1Ni4xMi02LjcgMTA1LTQxLjMgMTExLjIzLTcyLjkgOS44LTQ5LjggOS0xMjEuNSA5LTEyMS41em0tNzUuMTIgMTI1LjJoLTQ2LjYzdi0xMTQuMmMwLTQ5LjctNjQtNTEuNi02NCA2Ljl2NjIuNWgtNDYuMzNWMTk3YzAtNTguNS02NC01Ni42LTY0LTYuOXYxMTQuMkg5MC4xOWMwLTEyMi4xLTUuMi0xNDcuOSAxOC40MS0xNzUgMjUuOS0yOC45IDc5LjgyLTMwLjggMTAzLjgzIDYuMWwxMS42IDE5LjUgMTEuNi0xOS41YzI0LjExLTM3LjEgNzguMTItMzQuOCAxMDMuODMtNi4xIDIzLjcxIDI3LjMgMTguNCA1MyAxOC40IDE3NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWF4Y2RuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MS4xIDQ0Mi43aC05Ny40TDQxNS42IDIwMGMyLjMtMTAuMi45LTE5LjUtNC40LTI1LjctNS02LjEtMTMuNy05LjYtMjQuMi05LjZoLTQ5LjNsLTU5LjUgMjc4aC05Ny40bDU5LjUtMjc4aC04My40bC01OS41IDI3OEgwbDU5LjUtMjc4LTQ0LjYtOTUuNEgzODdjMzkuNCAwIDc1LjMgMTYuMyA5OC4zIDQ0LjkgMjMuMyAyOC42IDMxLjggNjcuNCAyMy42IDEwNS45bC00Ny44IDIyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMzcgMTYwLjQxTDcgMzUyaDQzLjkxbDUuNTktNzkuODNMODQuNDMgMzUyaDQ0LjcxbDI1LjU0LTc3LjQzIDQuNzkgNzcuNDNIMjA1bC0xMi43OS0xOTEuNTlIMTQ2LjdMMTA2IDI3Ny43NCA2My42NyAxNjAuNDF6bTI4MSAwaC00Ny45VjM1Mmg0Ny45czk1IC44IDk0LjItOTUuNzljLS43OC05NC4yMS05NC4xOC05NS43OC05NC4xOC05NS43OHptLTEuMiAxNDYuNDZWMjA0Ljc4czQ2IDQuMjcgNDYuOCA1MC41Ny00Ni43OCA1MS41NC00Ni43OCA1MS41NHptMjM4LjI5LTc0LjI0YTU2LjE2IDU2LjE2IDAgMCAwIDgtMzguMzFjLTUuMzQtMzUuNzYtNTUuMDgtMzQuMzItNTUuMDgtMzQuMzJoLTUxLjl2MTkxLjU4SDQ4MnM4NyA0Ljc5IDg3LTYzLjg1YzAtNDMuMTQtMzMuNTItNTUuMDgtMzMuNTItNTUuMDh6bS01MS45LTMxLjk0czEzLjU3LTEuNTkgMTYgOS41OWMxLjQzIDYuNjYtNCAxMi00IDEyaC0xMnYtMjEuNTd6bS0uMSAxMDkuNDZsLjEtMjQuOTJWMjY3aC4wOHM0MS41OC00LjczIDQxLjE5IDIyLjQzYy0uMzMgMjUuNjUtNDEuMzUgMjAuNzQtNDEuMzUgMjAuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZGFwcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE4LjMgMjM4LjRjMy41LTEyLjUgNi45LTMzLjYgMTMuMi0zMy42IDguMyAxLjggOS42IDIzLjQgMTguNiAzNi42IDQuNi0yMy41IDUuMy04NS4xIDE0LjEtODYuNyA5LS43IDE5LjcgNjYuNSAyMiA3Ny41IDkuOSA0LjEgNDguOSA2LjYgNDguOSA2LjYgMS45IDcuMy0yNCA3LjYtNDAgNy44LTQuNiAxNC44LTUuNCAyNy43LTExLjQgMjgtNC43LjItOC4yLTI4LjgtMTcuNS00OS42bC05LjQgNjUuNWMtNC40IDEzLTE1LjUtMjIuNS0yMS45LTM5LjMtMy4zLS4xLTYyLjQtMS42LTQ3LjYtNy44bDMxLTV6TTIyOCA0NDhjMjEuMiAwIDIxLjItMzIgMC0zMkg5MmMtMjEuMiAwLTIxLjIgMzIgMCAzMmgxMzZ6bS0yNCA2NGMyMS4yIDAgMjEuMi0zMiAwLTMyaC04OGMtMjEuMiAwLTIxLjIgMzIgMCAzMmg4OHptMzQuMi0xNDEuNWMzLjItMTguOSA1LjItMzYuNCAxMS45LTQ4LjggNy45LTE0LjcgMTYuMS0yOC4xIDI0LTQxIDI0LjYtNDAuNCA0NS45LTc1LjIgNDUuOS0xMjUuNUMzMjAgNjkuNiAyNDguMiAwIDE2MCAwUzAgNjkuNiAwIDE1NS4yYzAgNTAuMiAyMS4zIDg1LjEgNDUuOSAxMjUuNSA3LjkgMTIuOSAxNiAyNi4zIDI0IDQxIDYuNyAxMi41IDguNyAyOS44IDExLjkgNDguOSAzLjUgMjEgMzYuMSAxNS43IDMyLjYtNS4xLTMuNi0yMS43LTUuNi00MC43LTE1LjMtNTguNkM2Ni41IDI0Ni41IDMzIDIxMS4zIDMzIDE1NS4yIDMzIDg3LjMgOTAgMzIgMTYwIDMyczEyNyA1NS4zIDEyNyAxMjMuMmMwIDU2LjEtMzMuNSA5MS4zLTY2LjEgMTUxLjYtOS43IDE4LTExLjcgMzcuNC0xNS4zIDU4LjYtMy40IDIwLjYgMjkgMjYuNCAzMi42IDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4MC41LDc0LjI2MkM4MC44MTMsNzQuMjYyLDAsMTU1LjYzMywwLDI1NlM4MC44MTksNDM3LjczOCwxODAuNSw0MzcuNzM4LDM2MSwzNTYuMzczLDM2MSwyNTYsMjgwLjE5MSw3NC4yNjIsMTgwLjUsNzQuMjYyWm0yODguMjUsMTAuNjQ2Yy00OS44NDUsMC05MC4yNDUsNzYuNjE5LTkwLjI0NSwxNzEuMDk1czQwLjQwNiwxNzEuMSw5MC4yNTEsMTcxLjEsOTAuMjUxLTc2LjYxOSw5MC4yNTEtMTcxLjFINTU5QzU1OSwxNjEuNSw1MTguNiw4NC45MDgsNDY4Ljc1Miw4NC45MDhabTEzOS41MDYsMTcuODIxYy0xNy41MjYsMC0zMS43MzUsNjguNjI4LTMxLjczNSwxNTMuMjc0czE0LjIsMTUzLjI3NCwzMS43MzUsMTUzLjI3NFM2NDAsMzQwLjYzMSw2NDAsMjU2QzY0MCwxNzEuMzUxLDYyNS43ODUsMTAyLjcyOSw2MDguMjU4LDEwMi43MjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZHJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMy43IDI1NmMwIDEyMS44IDgzLjkgMjIyLjggMTkzLjUgMjQxLjEtMTguNyA0LjUtMzguMiA2LjktNTguMiA2LjlDMTExLjQgNTA0IDAgMzkzIDAgMjU2UzExMS40IDggMjQ4LjkgOGMyMC4xIDAgMzkuNiAyLjQgNTguMiA2LjlDMTk3LjUgMzMuMiAxMTMuNyAxMzQuMiAxMTMuNyAyNTZtMjk3LjQgMTAwLjNjLTc3LjcgNTUuNC0xNzkuNiA0Ny41LTI0MC40LTE0LjYgNS41IDE0LjEgMTIuNyAyNy43IDIxLjcgNDAuNSA2MS42IDg4LjIgMTgyLjQgMTA5LjMgMjY5LjcgNDcgODcuMy02Mi4zIDEwOC4xLTE4NC4zIDQ2LjUtMjcyLjYtOS0xMi45LTE5LjMtMjQuMy0zMC41LTM0LjIgMzcuNCA3OC44IDEwLjcgMTc4LjUtNjcgMjMzLjltLTIxOC44LTI0NGMtMS40IDEtMi43IDIuMS00IDMuMSA2NC4zLTE3LjggMTM1LjkgNCAxNzguOSA2MC41IDM1LjcgNDcgNDIuOSAxMDYuNiAyNC40IDE1OCA1Ni43LTU2LjIgNjcuNi0xNDIuMSAyMi4zLTIwMS44LTUwLTY1LjUtMTQ5LjEtNzQuNC0yMjEuNi0xOS44TTI5NiAyMjRjLTQuNCAwLTgtMy42LTgtOHYtNDBjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djQwYzAgNC40LTMuNiA4LTggOGgtNDBjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoNDBjNC40IDAgOCAzLjYgOCA4djQwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTQwYzAtNC40IDMuNi04IDgtOGg0MGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZXR1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05OSA0MTQuM2MxLjEgNS43LTIuMyAxMS4xLTggMTIuMy01LjQgMS4xLTEwLjktMi4zLTEyLTgtMS4xLTUuNCAyLjMtMTEuMSA3LjctMTIuMyA1LjQtMS4yIDExLjEgMi4zIDEyLjMgOHptMTQzLjEgNzEuNGMtNi4zIDQuNi04IDEzLjQtMy43IDIwIDQuNiA2LjYgMTMuNCA4LjMgMjAgMy43IDYuMy00LjYgOC0xMy40IDMuNC0yMC00LjItNi41LTEzLjEtOC4zLTE5LjctMy43em0tODYtNDYyLjNjNi4zLTEuNCAxMC4zLTcuNyA4LjktMTQtMS4xLTYuNi03LjQtMTAuNi0xMy43LTkuMS02LjMgMS40LTEwLjMgNy43LTkuMSAxNCAxLjQgNi42IDcuNiAxMC42IDEzLjkgOS4xek0zNC40IDIyNi4zYy0xMC02LjktMjMuNy00LjMtMzAuNiA2LTYuOSAxMC00LjMgMjQgNS43IDMwLjkgMTAgNy4xIDIzLjcgNC42IDMwLjYtNS43IDYuOS0xMC40IDQuMy0yNC4xLTUuNy0zMS4yem0yNzItMTcwLjljMTAuNi02LjMgMTMuNy0yMCA3LjctMzAuMy02LjMtMTAuNi0xOS43LTE0LTMwLTcuN3MtMTMuNyAyMC03LjQgMzAuNmM2IDEwLjMgMTkuNCAxMy43IDI5LjcgNy40em0tMTkxLjEgNThjNy43LTUuNCA5LjQtMTYgNC4zLTIzLjdzLTE1LjctOS40LTIzLjEtNC4zYy03LjcgNS40LTkuNCAxNi00LjMgMjMuNyA1LjEgNy44IDE1LjYgOS41IDIzLjEgNC4zem0zNzIuMyAxNTZjLTcuNCAxLjctMTIuMyA5LjEtMTAuNiAxNi45IDEuNCA3LjQgOC45IDEyLjMgMTYuMyAxMC42IDcuNC0xLjQgMTIuMy04LjkgMTAuNi0xNi42LTEuNS03LjQtOC45LTEyLjMtMTYuMy0xMC45em0zOS43LTU2LjhjLTEuMS01LjctNi42LTkuMS0xMi04LTUuNyAxLjEtOS4xIDYuOS04IDEyLjYgMS4xIDUuNCA2LjYgOS4xIDEyLjMgOCA1LjQtMS41IDkuMS02LjkgNy43LTEyLjZ6TTQ0NyAxMzguOWMtOC42IDYtMTAuNiAxNy43LTQuOSAyNi4zIDUuNyA4LjYgMTcuNCAxMC42IDI2IDQuOSA4LjMtNiAxMC4zLTE3LjcgNC42LTI2LjMtNS43LTguNy0xNy40LTEwLjktMjUuNy00Ljl6bS02LjMgMTM5LjRjMjYuMyA0My4xIDE1LjEgMTAwLTI2LjMgMTI5LjEtMTcuNCAxMi4zLTM3LjEgMTcuNy01Ni45IDE3LjEtMTIgNDcuMS02OS40IDY0LjYtMTA1LjEgMzIuNi0xLjEuOS0yLjYgMS43LTMuNyAyLjktMzkuMSAyNy4xLTkyLjMgMTcuNC0xMTkuNC0yMi4zLTkuNy0xNC4zLTE0LjYtMzAuNi0xNS4xLTQ2LjktNjUuNC0xMC45LTkwLTk0LTQxLjEtMTM5LjctMjguMy00Ni45LjYtMTA3LjQgNTMuNC0xMTQuOUMxNTEuNiA3MCAyMzQuMSAzOC42IDI5MC4xIDgyYzY3LjQtMjIuMyAxMzYuMyAyOS40IDEzMC45IDEwMS4xIDQxLjEgMTIuNiA1Mi44IDY2LjkgMTkuNyA5NS4yem0tNzAgNzQuM2MtMy4xLTIwLjYtNDAuOS00LjYtNDMuMS0yNy4xLTMuMS0zMiA0My43LTEwMS4xIDQwLTEyOC0zLjQtMjQtMTkuNC0yOS4xLTMzLjQtMjkuNC0xMy40LS4zLTE2LjkgMi0yMS40IDQuNi0yLjkgMS43LTYuNiA0LjktMTEuNy0uMy02LjMtNi0xMS4xLTExLjctMTkuNC0xMi45LTEyLjMtMi0xNy43IDItMjYuNiA5LjctMy40IDIuOS0xMiAxMi45LTIwIDkuMS0zLjQtMS43LTE1LjQtNy43LTI0LTExLjQtMTYuMy03LjEtNDAgNC42LTQ4LjYgMjAtMTIuOSAyMi45LTM4IDExMy4xLTQxLjcgMTI1LjEtOC42IDI2LjYgMTAuOSA0OC42IDM2LjkgNDcuMSAxMS4xLS42IDE4LjMtNC42IDI1LjQtMTcuNCA0LTcuNCA0MS43LTEwNy43IDQ0LjYtMTEyLjYgMi0zLjQgOC45LTggMTQuNi01LjEgNS43IDMuMSA2LjkgOS40IDYgMTUuMS0xLjEgOS43LTI4IDcwLjktMjguOSA3Ny43LTMuNCAyMi45IDI2LjkgMjYuNiAzOC42IDQgMy43LTcuMSA0NS43LTkyLjYgNDkuNC05OC4zIDQuMy02LjMgNy40LTguMyAxMS43LTggMy4xIDAgOC4zLjkgNy4xIDEwLjktMS40IDkuNC0zNS4xIDcyLjMtMzguOSA4Ny43LTQuNiAyMC42IDYuNiA0MS40IDI0LjkgNTAuNiAxMS40IDUuNyA2Mi41IDE1LjcgNTguNS0xMS4xem01LjcgOTIuM2MtMTAuMyA3LjQtMTIuOSAyMi01LjcgMzIuNiA3LjEgMTAuNiAyMS40IDEzLjEgMzIgNiAxMC42LTcuNCAxMy4xLTIyIDYtMzIuNi03LjQtMTAuNi0yMS43LTEzLjUtMzIuMy02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWdhcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTQuNSAyMDkuNnY2Ni4ybDMzLjUgMzMuNSAzMy4zLTMzLjN2LTY2LjRsLTMzLjQtMzMuNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQ1LjEgNDE0LjRMMzY3IDQ0MS42bC0yNi0xOS4ydi02NS41bC0zMy40LTMzLjQtMzMuNCAzMy40djY1LjVMMjQ4IDQ0MS42bC0yNi4xLTE5LjJ2LTY1LjVsLTMzLjQtMzMuNC0zMy41IDMzLjR2NjUuNWwtMjYuMSAxOS4yLTI2LjEtMTkuMnYtODdsNTkuNS01OS41VjE4OGw1OS41LTU5LjVWNTIuOWwyNi4xLTE5LjJMMjc0IDUyLjl2NzUuNmw1OS41IDU5LjV2ODcuNmw1OS43IDU5Ljd2ODcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVuZGVsZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0LjYgMzI1LjJjLTEyLjMtMTIuNC0yOS43LTE5LjItNDguNC0xNy4yLTQzLjMtMS00OS43LTM0LjktMzcuNS05OC44IDIyLjgtNTcuNS0xNC45LTEzMS41LTg3LjQtMTMwLjgtNzcuNC43LTgxLjcgODItMTMwLjkgODItNDguMSAwLTU0LTgxLjMtMTMwLjktODItNzIuOS0uOC0xMTAuMSA3My4zLTg3LjQgMTMwLjggMTIuMiA2My45IDUuOCA5Ny44LTM3LjUgOTguOC0yMS4yLTIuMy0zNyA2LjUtNTMgMjIuNS0xOS45IDE5LjctMTkuMyA5NC44IDQyLjYgMTAyLjYgNDcuMSA1LjkgODEuNi00Mi45IDYxLjItODcuOC00Ny4zLTEwMy43IDE4NS45LTEwNi4xIDE0Ni41LTguMi0uMS4xLS4yLjItLjMuNC0yNi44IDQyLjggNi44IDk3LjQgNTguOCA5NS4yIDUyLjEgMi4xIDg1LjQtNTIuNiA1OC44LTk1LjItLjEtLjItLjItLjMtLjMtLjQtMzkuNC05Ny45IDE5My44LTk1LjUgMTQ2LjUgOC4yLTQuNiAxMC02LjcgMjEuMy01LjcgMzMgNC45IDUzLjQgNjguNyA3NC4xIDEwNC45IDM1LjIgMTcuOC0xNC44IDIzLjEtNjUuNiAwLTg4LjN6bS0zMDMuOS0xOS4xaC0uNmMtNDMuNCAwLTYyLjgtMzcuNS02Mi44LTYyLjggMC0zNC43IDI4LjItNjIuOCA2Mi44LTYyLjhoLjZjMzQuNyAwIDYyLjggMjguMSA2Mi44IDYyLjggMCAyNS0xOS4yIDYyLjgtNjIuOCA2Mi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAzMTcuOUM2NDAgNDA5LjIgNjAwLjYgNDY2LjQgNTI5LjcgNDY2LjRDNDY3LjEgNDY2LjQgNDMzLjkgNDMxLjggMzcyLjggMzI5LjhMMzQxLjQgMjc3LjJDMzMzLjEgMjY0LjcgMzI2LjkgMjUzIDMyMC4yIDI0Mi4yQzMwMC4xIDI3NiAyNzMuMSAzMjUuMiAyNzMuMSAzMjUuMkMyMDYuMSA0NDEuOCAxNjguNSA0NjYuNCAxMTYuMiA0NjYuNEM0My40MiA0NjYuNCAwIDQwOS4xIDAgMzIwLjVDMCAxNzcuNSA3OS43OCA0Mi40IDE4My45IDQyLjRDMjM0LjEgNDIuNCAyNzcuNyA2Ny4wOCAzMjguNyAxMzEuOUMzNjUuOCA4MS44IDQwNi44IDQyLjQgNDU5LjMgNDIuNEM1NTguNCA0Mi40IDY0MCAxNjguMSA2NDAgMzE3LjlINjQwek0yODcuNCAxOTIuMkMyNDQuNSAxMzAuMSAyMTYuNSAxMTEuNyAxODMgMTExLjdDMTIxLjEgMTExLjcgNjkuMjIgMjE3LjggNjkuMjIgMzIxLjdDNjkuMjIgMzcwLjIgODcuNyAzOTcuNCAxMTguOCAzOTcuNEMxNDkgMzk3LjQgMTY3LjggMzc4LjQgMjIyIDI5My42QzIyMiAyOTMuNiAyNDYuNyAyNTQuNSAyODcuNCAxOTIuMlYxOTIuMnpNNTMxLjIgMzk3LjRDNTYzLjQgMzk3LjQgNTc4LjEgMzY5LjkgNTc4LjEgMzIyLjVDNTc4LjEgMTk4LjMgNTIzLjggOTcuMDggNDU0LjkgOTcuMDhDNDIxLjcgOTcuMDggMzkzLjggMTIzIDM2MCAxNzUuMUMzNjkuNCAxODguOSAzNzkuMSAyMDQuMSAzODkuMyAyMjAuNUw0MjYuOCAyODIuOUM0ODUuNSAzNzcgNTAwLjMgMzk3LjQgNTMxLjIgMzk3LjRMNTMxLjIgMzk3LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvYmxvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTkuMzYsMzYyLjIzYzI5LjQ5LTM0LjY5LDQ3LjEtNzguMzQsNDcuMS0xMjUuNzlDNDQ2LjQ2LDEyMy40OSwzNDYuODYsMzIsMjI0LDMyUzEuNTQsMTIzLjQ5LDEuNTQsMjM2LjQ0LDEwMS4xNCw0NDAuODcsMjI0LDQ0MC44N2EyMzkuMjgsMjM5LjI4LDAsMCwwLDc5LjQ0LTEzLjQ0LDcuMTgsNy4xOCwwLDAsMSw4LjEyLDIuNTZjMTguNTgsMjUuMDksNDcuNjEsNDIuNzQsNzkuODksNDkuOTJhNC40Miw0LjQyLDAsMCwwLDUuMjItMy40Myw0LjM3LDQuMzcsMCwwLDAtLjg1LTMuNjIsODcsODcsMCwwLDEsMy42OS0xMTAuNjlaTTMyOS41MiwyMTIuNGwtNTcuMyw0My40OUwyOTMsMzI0Ljc1YTYuNSw2LjUsMCwwLDEtOS45NCw3LjIyTDIyNCwyOTAuOTIsMTY0Ljk0LDMzMmE2LjUxLDYuNTEsMCwwLDEtOS45NS03LjIybDIwLjc5LTY4Ljg2LTU3LjMtNDMuNDlhNi41LDYuNSwwLDAsMSwzLjgtMTEuNjhsNzEuODgtMS41MSwyMy42Ni02Ny45MmE2LjUsNi41LDAsMCwxLDEyLjI4LDBsMjMuNjYsNjcuOTIsNzEuODgsMS41MWE2LjUsNi41LDAsMCwxLDMuODgsMTEuNjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3Jvc29mdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyaDIxNC42djIxNC42SDBWMzJ6bTIzMy40IDBINDQ4djIxNC42SDIzMy40VjMyek0wIDI2NS40aDIxNC42VjQ4MEgwVjI2NS40em0yMzMuNCAwSDQ0OFY0ODBIMjMzLjRWMjY1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pbnRiaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzMuMiA1MTJWNDM4LjlIMzY1LjdWMzY1LjdoNzMuMlYyMTkuNEg1MTJWMEgyOTIuNlY3My4xSDE0Ni4zdjczLjJINzMuMlY0MzguOUgwVjUxMkg3My4yem03My4xLTIxOS40aDczLjJ2NzMuMUgxNDYuM1YyOTIuNnptNzMuMi03My4xaDczLjF2NzMuMUgyMTkuNFYyMTkuNHptNzMuMSAwVjE0Ni4zaDczLjJ2NzMuMUgyOTIuNnpNMzY1LjcgNzMuMWg3My4ydjczLjJIMzY1LjdWNzMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjR2MzQ4LjljMCA1Ni4yIDg4IDU4LjEgODggMFYxNzQuM2M3LjktNTIuOSA4OC01MC40IDg4IDYuNXYxNzUuM2MwIDU3LjkgOTYgNTggOTYgMFYyNDBjNS4zLTU0LjcgODgtNTIuNSA4OCA0LjN2MjMuOGMwIDU5LjkgODggNTYuNiA4OCAwVjY0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1peGNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMi45OCAzNDYuNTY2SDE3OS43ODlWMTk1LjExNEwxODUuOTczIDE3My40N0gxNzUuMjYyTDEzNy4xMjcgMzQ2LjU2Nkg3Ni4xMDY5TDM3LjczMjMgMTczLjQ3SDI3LjI3NkwzMy4xOTEzIDE5NS4xMTRWMzQ2LjU2NkgwVjE2NUg2NS42NTA2TDEwMi4yNDggMzM4LjA5NkgxMTAuNzQ3TDE0Ny4zMjkgMTY1SDIxMi45OEwyMTIuOTggMzQ2LjU2NlpNNTQ0LjQ1OSAyODMuNTg5TDQ1OC40MzQgMzQ1LjY1NVYzMDcuNTM0TDUzMS4zMjkgMjU1Ljc3Nkw0NTguNDM0IDIwNC4wMTdWMTY1Ljg5Nkw1NDQuNDU5IDIyOC4yMzFINTUzLjcyMUw2NDAgMTY1Ljg5NlYyMDQuMDE3TDU2Ni44NjYgMjU1Ljc3Nkw2NDAgMzA3LjU0OVYzNDUuNjU1TDU1My43MjEgMjgzLjU4OUg1NDQuNDU5Wk00MzAuMTU3IDI3Mi4zMTFIMjQ4LjExM1YyMzkuMjU1SDQzMC4xNTdWMjcyLjMxMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE0LjU3LDc2LjA3YTQ1LjcxLDQ1LjcxLDAsMCwwLTY3LjUxLTYuNDFjLTE3LjU4LDE2LjE4LTE5LDQzLjUyLTQuNzUsNjIuNzdsOTEuNzgsMTIzTDQxLjc2LDM3OS41OGMtMTQuMjMsMTkuMjUtMTMuMTEsNDYuNTksNC43NCw2Mi43N0E0NS43MSw0NS43MSwwLDAsMCwxMTQsNDM1Ljk0TDI0Mi44OSwyNjIuN2ExMi4xNCwxMi4xNCwwLDAsMCwwLTE0LjIzWk00NzAuMjQsMzc5LjU4LDM3Ny45MSwyNTUuNDVsOTEuNzgtMTIzYzE0LjIyLTE5LjI1LDEyLjgzLTQ2LjU5LTQuNzUtNjIuNzdhNDUuNzEsNDUuNzEsMCwwLDAtNjcuNTEsNi40MWwtMTI4LDE3Mi4xMmExMi4xNCwxMi4xNCwwLDAsMCwwLDE0LjIzTDM5OCw0MzUuOTRhNDUuNzEsNDUuNzEsMCwwLDAsNjcuNTEsNi40MUM0ODMuMzUsNDI2LjE3LDQ4NC40NywzOTguODMsNDcwLjI0LDM3OS41OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl6dW5pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5LjEgMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OEM0OTYgMTE5LjEgMzg1IDggMjQ4IDh6bS04MCAzNTEuOWMtMzEuNCAxMC42LTU4LjggMjcuMy04MCA0OC4yVjEzNmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjIyMy45em0xMjAtOS45Yy0xMi45LTItMjYuMi0zLjEtMzkuOC0zLjEtMTMuOCAwLTI3LjIgMS4xLTQwLjIgMy4xVjEzNmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjIxNHptMTIwIDU3LjdjLTIxLjItMjAuOC00OC42LTM3LjQtODAtNDhWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjcxLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vZHggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzU2IDI0MS44bDM2LjcgMjMuN1Y0ODBsLTEzMy04My44TDM1NiAyNDEuOHpNNDQwIDc1SDIyNi4zbC0yMyAzNy44IDE1My41IDk2LjVMNDQwIDc1em0tODkgMTQyLjhMNTUuMiAzMnYyMTQuNWw0NiAyOUwzNTEgMjE3Ljh6TTk3IDI5NC4yTDggNDM3aDIxMy43bDEyNS0yMDAuNUw5NyAyOTQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAzODRoMTA4LjRDNDE3IDQ1NS45IDMzOC4xIDUwNCAyNDggNTA0Uzc5IDQ1NS45IDM1LjYgMzg0SDE0NFYyNTYuMkwyNDggMzYxbDEwNC0xMDV2MTI4ek04OCAzMzZWMTI4bDE1OS40IDE1OS40TDQwOCAxMjh2MjA4aDc0LjhjOC41LTI1LjEgMTMuMi01MiAxMy4yLTgwQzQ5NiAxMTkgMzg1IDggMjQ4IDhTMCAxMTkgMCAyNTZjMCAyOCA0LjYgNTQuOSAxMy4yIDgwSDg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOYXBzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC4zIDM3My42Yy0xNC4yIDEzLjYtMzEuMyAyNC4xLTUwLjQgMzAuNS0xOS02LjQtMzYuMi0xNi45LTUwLjMtMzAuNWgxMDAuN3ptNDQtMTk5LjZjMjAtMTYuOSA0My42LTI5LjIgNjkuNi0zNi4yVjI5OWMwIDIxOS40LTMyOCAyMTcuNi0zMjggLjNWMTM3LjdjMjUuOSA2LjkgNDkuNiAxOS42IDY5LjUgMzYuNCA1Ni44LTQwIDEzMi41LTM5LjkgMTg4LjktLjF6bS0yMDguOC01OC41YzY0LjQtNjAgMTY0LjMtNjAuMSAyMjguOS0uMi03LjEgMy41LTEzLjkgNy4zLTIwLjYgMTEuNS01OC43LTMwLjUtMTI5LjItMzAuNC0xODcuOS4xLTYuMy00LTEzLjktOC4yLTIwLjQtMTEuNHpNNDMuOCA5My4ydjY5LjNjLTU4LjQgMzYuNS01OC40IDEyMS4xLjEgMTU4LjMgMjYuNCAyNDUuMSAzODEuNyAyNDAuMyA0MDcuNiAxLjVsLjMtMS43YzU4LjctMzYuMyA1OC45LTEyMS43LjItMTU4LjJWOTMuMmMtMTcuMy41LTM0IDMtNTAuMSA3LjQtODItOTEuNS0yMjUuNS05MS41LTMwNy41LjEtMTYuMy00LjQtMzMuMS03LTUwLjYtNy41ek0yNTkuMiAzNTJzMzYtLjMgNjEuMy0xLjVjMTAuMi0uNSAyMS4xLTQgMjUuNS02LjUgMjYuMy0xNS4xIDI1LjQtMzkuMiAyNi4yLTQ3LjQtNzkuNS0uNi05OS45LTMuOS0xMTMgNTUuNHptLTEzNS41LTU1LjNjLjggOC4yLS4xIDMyLjMgMjYuMiA0Ny40IDQuNCAyLjUgMTUuMiA2IDI1LjUgNi41IDI1LjMgMS4xIDYxLjMgMS41IDYxLjMgMS41LTEzLjItNTkuNC0zMy43LTU2LjEtMTEzLTU1LjR6bTE2OS4xIDEyMy40Yy0zLjItNS4zLTYuOS03LjMtNi45LTcuMy0yNC44IDcuMy01Mi4yIDYuOS03NS45IDAgMCAwLTIuOSAxLjUtNi40IDYuNi0yLjggNC4xLTMuNyA5LjYtMy43IDkuNiAyOS4xIDE3LjYgNjcuMSAxNy42IDk2LjIgMC0uMS0uMS0uMy00LTMuMy04Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5lb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE1LjQ0IDUxMmgtOTUuMTFMMjEyLjEyIDM1Ny40NnY5MS4xTDEyNS42OSA1MTJIMjhWMjkuODJMNjguNDcgMGgxMDguMDVsMTIzLjc0IDE3Ni4xM1Y2My40NUwzODYuNjkgMGg5Ny42OXY0NjEuNXpNMzguNzcgMzUuMjdWNDk2bDcyLTUyLjg4VjE5NGwyMTUuNSAzMDcuNjRoODQuNzlsNTIuMzUtMzguMTdoLTc4LjI3TDY5IDEzem04Mi41NCA0NjYuNjFsODAtNTguNzh2LTEwMWwtNzkuNzYtMTE0LjR2MjIwLjk0TDQ5IDUwMS44OWg3Mi4zNHpNODAuNjMgMTAuNzdsMzEwLjYgNDQyLjU3aDgyLjM3VjEwLjc3aC03OS43NXYzMTcuNTZMMTcwLjkxIDEwLjc3ek0zMTEgMTkxLjY1bDcyIDEwMi44MVYxNS45M2wtNzIgNTN2MTIyLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZmNEaXJlY3Rpb25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEuOCA0ODguNkMyMTMuNCA0OTEuMSAyMTMuOSA0OTQuMiAyMTMuMiA0OTcuMUMyMTIuNiA1MDAgMjEwLjggNTAyLjYgMjA4LjMgNTA0LjJDMjA1LjcgNTA1LjggMjAyLjcgNTA2LjMgMTk5LjcgNTA1LjdDMTM4LjMgNDkxLjggODQuMSA0NTUuOCA0Ny41MyA0MDQuNUMxMC45NyAzNTMuMi01LjM5NSAyOTAuMyAxLjU3IDIyNy43QzguNTM2IDE2NSAzOC4zNCAxMDcuMiA4NS4yOSA2NS4yMUMxMzIuMiAyMy4yIDE5My0uMDEzMSAyNTYgMEMyNTcuNSAwIDI1OC4xIC4yOTMxIDI2MC4zIC44NjI3QzI2MS43IDEuNDMyIDI2Mi4xIDIuMjY3IDI2NCAzLjMxOUMyNjUuMSA0LjM3MSAyNjUuOSA1LjYxOSAyNjYuNSA2Ljk5M0MyNjcgOC4zNjcgMjY3LjMgOS44MzkgMjY3LjMgMTEuMzJWMTEyLjNMMjkxLjggODYuMzlDMjkyLjggODUuMzEgMjk0IDg0LjQ0IDI5NS40IDgzLjg0QzI5Ni43IDgzLjIzIDI5OC4yIDgyLjkgMjk5LjcgODIuODZDMzAxLjIgODIuODEgMzAyLjYgODMuMDYgMzA0IDgzLjU5QzMwNS40IDg0LjEyIDMwNi43IDg0LjkyIDMwNy44IDg1Ljk0QzMwOC44IDg2Ljk2IDMwOS43IDg4LjE4IDMxMC4zIDg5LjU0QzMxMC45IDkwLjg5IDMxMS4zIDkyLjM1IDMxMS4zIDkzLjg0QzMxMS4zIDk1LjMyIDMxMS4xIDk2LjggMzEwLjYgOTguMThDMzEwIDk5LjU3IDMwOS4yIDEwMC44IDMwOC4yIDEwMS45TDI2NC4yIDE0OC41QzI2My4xIDE0OS42IDI2MS45IDE1MC41IDI2MC41IDE1MS4xQzI1OSAxNTEuNyAyNTcuNSAxNTIgMjU1LjEgMTUyQzI1NC41IDE1MiAyNTIuOSAxNTEuNyAyNTEuNSAxNTEuMUMyNTAuMSAxNTAuNSAyNDguOCAxNDkuNiAyNDcuOCAxNDguNUwyMDMuNyAxMDEuOUMyMDEuNyA5OS43NCAyMDAuNiA5Ni44MyAyMDAuNyA5My44NEMyMDAuNyA5MC44NCAyMDIgODcuMSAyMDQuMiA4NS45NEMyMDYuNCA4My44OCAyMDkuMyA4Mi43NyAyMTIuMyA4Mi44NkMyMTUuMyA4Mi45NCAyMTguMSA4NC4yMSAyMjAuMiA4Ni4zOUwyNDQuNyAxMTIuNFYyMi44OUMxODguMyAyNS42NCAxMzQuOSA0OC43MyA5NC4yMyA4Ny44N0M1My41OCAxMjcgMjguNDkgMTc5LjYgMjMuNjEgMjM1LjhDMTguNzMgMjkyIDM0LjM4IDM0OC4xIDY3LjY4IDM5My43QzEwMC4xIDQzOS4yIDE0OS43IDQ3MS4yIDIwNC43IDQ4My42QzIwNy42IDQ4NC4zIDIxMC4yIDQ4Ni4xIDIxMS44IDQ4OC42TDIxMS44IDQ4OC42ek0xNzEuNCAxMjYuMUMxNzAuNiAxMjcuNCAxNjkuNSAxMjguNSAxNjguMyAxMjkuM0MxNDcuOCAxNDMuMiAxMzEuMSAxNjEuOSAxMTkuNSAxODMuOEMxMDcuOSAyMDUuNyAxMDEuOCAyMzAuMSAxMDEuOCAyNTQuOUMxMDEuOCAyNzkuNyAxMDcuOSAzMDQuMSAxMTkuNSAzMjUuMUMxMzEuMSAzNDcuOSAxNDcuOCAzNjYuNiAxNjguMyAzODAuNUMxNzAuOCAzODIuMiAxNzIuNSAzODQuOCAxNzMgMzg3LjhDMTczLjYgMzkwLjcgMTcyLjEgMzkzLjggMTcxLjMgMzk2LjJDMTY5LjYgMzk4LjcgMTY2LjEgNDAwLjQgMTY0IDQwMC4xQzE2MS4xIDQwMS41IDE1OCA0MDAuOSAxNTUuNiAzOTkuMkMxMzIgMzgzLjIgMTEyLjggMzYxLjcgOTkuNDYgMzM2LjVDODYuMTUgMzExLjQgNzkuMTkgMjgzLjQgNzkuMTkgMjU0LjlDNzkuMTkgMjI2LjUgODYuMTUgMTk4LjQgOTkuNDYgMTczLjNDMTEyLjggMTQ4LjEgMTMyIDEyNi42IDE1NS42IDExMC42QzE1Ni44IDEwOS44IDE1OC4yIDEwOS4yIDE1OS42IDEwOC44QzE2MS4xIDEwOC41IDE2Mi42IDEwOC41IDE2NC4xIDEwOC44QzE2NS41IDEwOSAxNjYuOSAxMDkuNiAxNjguMiAxMTAuNEMxNjkuNSAxMTEuMiAxNzAuNSAxMTIuMyAxNzEuNCAxMTMuNUMxNzIuMiAxMTQuNyAxNzIuOCAxMTYuMSAxNzMuMSAxMTcuNkMxNzMuNCAxMTkuMSAxNzMuNCAxMjAuNiAxNzMuMSAxMjJDMTcyLjggMTIzLjUgMTcyLjMgMTI0LjkgMTcxLjQgMTI2LjFIMTcxLjR6TTM0MC45IDM4My41QzM0MS43IDM4Mi4zIDM0Mi44IDM4MS4yIDM0My4xIDM4MC40VjM4MC4zQzM2NC40IDM2Ni4zIDM4MS4xIDM0Ny42IDM5Mi43IDMyNS43QzQwNC4yIDMwMy45IDQxMC4yIDI3OS41IDQxMC4yIDI1NC44QzQxMC4yIDIzMC4xIDQwNC4yIDIwNS43IDM5Mi43IDE4My44QzM4MS4xIDE2MS4xIDM2NC40IDE0My4zIDM0My4xIDEyOS4zQzM0Mi44IDEyOC41IDM0MS43IDEyNy40IDM0MC45IDEyNi4yQzM0MC4xIDEyNC45IDMzOS41IDEyMy41IDMzOS4zIDEyMi4xQzMzOC4xIDEyMC42IDMzOSAxMTkuMSAzMzkuMyAxMTcuN0MzMzkuNiAxMTYuMiAzNDAuMiAxMTQuOCAzNDEgMTEzLjZDMzQxLjkgMTEyLjQgMzQyLjEgMTExLjMgMzQ0LjIgMTEwLjVDMzQ1LjQgMTA5LjcgMzQ2LjggMTA5LjIgMzQ4LjMgMTA4LjlDMzQ5LjggMTA4LjYgMzUxLjIgMTA4LjYgMzUyLjcgMTA4LjlDMzU0LjIgMTA5LjIgMzU1LjUgMTA5LjggMzU2LjggMTEwLjdDMzgwLjIgMTI2LjcgMzk5LjUgMTQ4LjIgNDEyLjcgMTczLjNDNDI2IDE5OC40IDQzMi4xIDIyNi40IDQzMi4xIDI1NC44QzQzMi4xIDI4My4zIDQyNiAzMTEuMyA0MTIuNyAzMzYuNEMzOTkuNSAzNjEuNSAzODAuMiAzODMgMzU2LjggMzk5QzM1NS41IDM5OS45IDM1NC4yIDQwMC41IDM1Mi43IDQwMC44QzM1MS4yIDQwMS4xIDM0OS44IDQwMS4xIDM0OC4zIDQwMC44QzM0Ni44IDQwMC41IDM0NS40IDM5OS4xIDM0NC4yIDM5OS4yQzM0Mi4xIDM5OC40IDM0MS45IDM5Ny4zIDM0MSAzOTYuMUMzNDAuMiAzOTQuOSAzMzkuNiAzOTMuNSAzMzkuMyAzOTJDMzM5IDM5MC42IDMzOC4xIDM4OS4xIDMzOS4zIDM4Ny42QzMzOS41IDM4Ni4yIDM0MC4xIDM4NC44IDM0MC45IDM4My41VjM4My41ek0zMTIuMyA2LjMwN0MzNjguNSAxOS4wNCA0MTguNyA1MC4yOCA0NTUgOTUuMDFDNDg1LjQgMTMyLjYgNTA0LjYgMTc4IDUxMC4zIDIyNkM1MTUuOSAyNzQgNTA3LjkgMzIyLjcgNDg3LjEgMzY2LjNDNDY2LjIgNDA5LjkgNDMzLjUgNDQ2LjggMzkyLjYgNDcyLjZDMzUxLjcgNDk4LjMgMzA0LjQgNTEyIDI1NiA1MTJDMjU0LjUgNTEyIDI1My4xIDUxMS43IDI1MS43IDUxMS4xQzI1MC4zIDUxMC42IDI0OS4xIDUwOS43IDI0OCA1MDguN0MyNDYuMSA1MDcuNiAyNDYuMSA1MDYuNCAyNDUuNiA1MDVDMjQ1IDUwMy42IDI0NC43IDUwMi4yIDI0NC43IDUwMC43VjQwMS41TDIyMC4yIDQyNy41QzIxOC4xIDQyOS43IDIxNS4zIDQzMC4xIDIxMi4zIDQzMS4xQzIwOS4zIDQzMS4yIDIwNi40IDQzMCAyMDQuMiA0MjcuMUMyMDIgNDI1LjkgMjAwLjcgNDIzLjEgMjAwLjcgNDIwLjFDMjAwLjYgNDE3LjEgMjAxLjcgNDE0LjIgMjAzLjcgNDEyTDI0Ny44IDM2NS40QzI0OS4xIDM2My4yIDI1Mi45IDM2MiAyNTUuMSAzNjJDMjU5LjEgMzYyIDI2MiAzNjMuMiAyNjQuMiAzNjUuNEwzMDguMiA0MTJDMzEwLjMgNDE0LjIgMzExLjQgNDE3LjEgMzExLjMgNDIwLjFDMzExLjIgNDIzLjEgMzA5LjkgNDI1LjkgMzA3LjggNDI3LjFDMzA1LjYgNDMwIDMwMi43IDQzMS4yIDI5OS43IDQzMS4xQzI5Ni43IDQzMC4xIDI5My44IDQyOS43IDI5MS44IDQyNy41TDI2Ny4zIDQwMS42VjQ4OS4xQzMyMy43IDQ4Ni4zIDM3Ny4xIDQ2My4zIDQxNy44IDQyNC4xQzQ1OC41IDM4NC4xIDQ4My42IDMzMi40IDQ4OC41IDI3Ni4yQzQ5My4zIDIxOS4xIDQ3Ny43IDE2My45IDQ0NC40IDExOC4zQzQxMS4xIDcyLjc1IDM2Mi40IDQwLjc5IDMwNy40IDI4LjM2QzMwNS45IDI4LjAzIDMwNC42IDI3LjQyIDMwMy4zIDI2LjU3QzMwMi4xIDI1LjcxIDMwMS4xIDI0LjYzIDMwMC4zIDIzLjM3QzI5OS41IDIyLjEyIDI5OC4xIDIwLjcyIDI5OC43IDE5LjI2QzI5OC41IDE3LjggMjk4LjUgMTYuMyAyOTguOCAxNC44NUMyOTkuMiAxMy40MSAyOTkuOCAxMi4wNCAzMDAuNiAxMC44MkMzMDEuNSA5LjYxIDMwMi42IDguNTc3IDMwMy44IDcuNzg0QzMwNS4xIDYuOTkgMzA2LjUgNi40NTEgMzA3LjkgNi4xOThDMzA5LjQgNS45NDUgMzEwLjkgNS45ODIgMzEyLjMgNi4zMDdMMzEyLjMgNi4zMDd6TTM1My4xIDI1Ni4xQzM1My4xIDI4Ny41IDMzNS42IDMxNy4yIDMwMy44IDMzOS42QzMwMS43IDM0MS4xIDI5OSAzNDEuOSAyOTYuNCAzNDEuNkMyOTMuNyAzNDEuNCAyOTEuMiAzNDAuMyAyODkuNCAzMzguNEwyMTkuMyAyNjguNkMyMTcuMSAyNjYuNSAyMTUuMSAyNjMuNiAyMTUuOSAyNjAuNkMyMTUuOSAyNTcuNiAyMTcuMSAyNTQuNyAyMTkuMiAyNTIuNkMyMjEuNCAyNTAuNSAyMjQuMiAyNDkuMyAyMjcuMiAyNDkuM0MyMzAuMiAyNDkuMyAyMzMuMSAyNTAuNSAyMzUuMiAyNTIuNkwyOTguMyAzMTUuNEMzMTkuMSAyOTguMyAzMzAuNSAyNzcuNSAzMzAuNSAyNTYuMUMzMzAuNSAyMzIuMiAzMTYuNCAyMDkuMSAyOTAuOCAxOTFDMjg4LjMgMTg5LjMgMjg2LjcgMTg2LjcgMjg2LjIgMTgzLjdDMjg1LjcgMTgwLjggMjg2LjMgMTc3LjcgMjg4LjEgMTc1LjNDMjg5LjggMTcyLjggMjkyLjQgMTcxLjIgMjk1LjQgMTcwLjdDMjk4LjMgMTcwLjIgMzAxLjQgMTcwLjggMzAzLjggMTcyLjZDMzM1LjYgMTk1IDM1My4xIDIyNC43IDM1My4xIDI1Ni4xVjI1Ni4xek0yMTYuNyAzNDEuNUMyMTMuNyAzNDIgMjEwLjcgMzQxLjMgMjA4LjIgMzM5LjZDMTc2LjUgMzE3LjIgMTU4LjEgMjg3LjUgMTU4LjEgMjU2LjFDMTU4LjEgMjI0LjcgMTc2LjUgMTk1IDIwOC4yIDE3Mi42QzIxMC40IDE3MSAyMTMuMSAxNzAuMyAyMTUuNyAxNzAuNUMyMTguNCAxNzAuOCAyMjAuOCAxNzEuOSAyMjIuNyAxNzMuOEwyOTIuOCAyNDMuNkMyOTQuOSAyNDUuNyAyOTYuMSAyNDguNiAyOTYuMSAyNTEuNkMyOTYuMSAyNTQuNiAyOTQuMSAyNTcuNCAyOTIuOCAyNTkuNkMyOTAuNyAyNjEuNyAyODcuOCAyNjIuOSAyODQuOSAyNjIuOUMyODEuOSAyNjIuOSAyNzguMSAyNjEuNyAyNzYuOSAyNTkuNkwyMTMuOCAxOTYuN0MxOTIuOSAyMTQgMTgxLjYgMjM0LjcgMTgxLjYgMjU2LjFDMTgxLjYgMjc5LjEgMTk1LjcgMzAzLjEgMjIxLjMgMzIxLjFDMjIzLjcgMzIyLjkgMjI1LjQgMzI1LjUgMjI1LjkgMzI4LjVDMjI2LjQgMzMxLjQgMjI1LjcgMzM0LjQgMjI0IDMzNi45QzIyMi4zIDMzOS4zIDIxOS42IDM0MSAyMTYuNyAzNDEuNUwyMTYuNyAzNDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmZjU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Mi45IDMyLjQzQzQwMC42IDMxLjEgNDA4LjYgMzIuODkgNDE0LjEgMzcuNDFDNDk4LjIgOTYuMTQgNTQ0IDE3My43IDU0NCAyNTUuMUM1NDQgMzM4LjIgNDk4LjIgNDE1LjkgNDE0LjEgNDc0LjZDNDA5LjMgNDc4LjYgNDAyLjQgNDgwLjUgMzk1LjUgNDc5LjlDMzg4LjUgNDc5LjMgMzgyIDQ3Ni4zIDM3Ny4xIDQ3MS40TDE5My43IDI4OC43QzE4OC4xIDI4My4yIDE4NSAyNzUuNyAxODQuMSAyNjcuOEMxODQuMSAyNjAgMTg4LjEgMjUyLjUgMTkzLjYgMjQ2LjlDMTk5LjIgMjQxLjQgMjA2LjcgMjM4LjIgMjE0LjUgMjM4LjJDMjIyLjQgMjM4LjIgMjI5LjkgMjQxLjMgMjM1LjQgMjQ2LjhMNDAwLjUgNDExLjJDNDU1LjEgMzY2LjUgNDg0LjggMzEyIDQ4NC44IDI1NS4xQzQ4NC44IDE5My41IDQ0Ny45IDEzMi45IDM4MC45IDg1Ljc2QzM3NC41IDgxLjI0IDM3MC4xIDc0LjM1IDM2OC44IDY2LjYyQzM2Ny40IDU4Ljg5IDM2OS4yIDUwLjk0IDM3My44IDQ0LjUzQzM3OC4zIDM4LjEyIDM4NS4yIDMzLjc3IDM5Mi45IDMyLjQzVjMyLjQzek0xODYuOSA0NzkuNkMxNzkuMiA0ODAuOSAxNzEuMyA0NzkuMSAxNjQuOCA0NzQuNkM4MS42NyA0MTUuOSAzNS44NCAzMzguMiAzNS44NCAyNTUuMUMzNS44NCAxNzMuNyA4MS42NyA5Ni4xNCAxNjQuOCAzNy40MUMxNzAuNSAzMy40IDE3Ny40IDMxLjUzIDE4NC40IDMyLjEyQzE5MS4zIDMyLjcxIDE5Ny44IDM1LjcyIDIwMi43IDQwLjYzTDM4Ni4xIDIyMy4zQzM5MS43IDIyOC44IDM5NC44IDIzNi4zIDM5NC44IDI0NC4yQzM5NC45IDI1MS4xIDM5MS44IDI1OS41IDM4Ni4yIDI2NS4xQzM4MC43IDI3MC42IDM3My4yIDI3My44IDM2NS4zIDI3My44QzM1Ny41IDI3My44IDM0OS4xIDI3MC43IDM0NC40IDI2NS4yTDE3OS4zIDEwMC43QzEyNC43IDE0NS45IDk1LjAzIDE5OS45IDk1LjAzIDI1NS4xQzk1LjAzIDMxOC41IDEzMS45IDM3OS4xIDE5OC4xIDQyNi4yQzIwNS40IDQzMC44IDIwOS43IDQzNy42IDIxMS4xIDQ0NS40QzIxMi40IDQ1My4xIDIxMC42IDQ2MS4xIDIwNi4xIDQ2Ny41QzIwMS42IDQ3My45IDE5NC43IDQ3OC4yIDE4Ni45IDQ3OS42VjQ3OS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOaW1ibHIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ2LjYgMjk5LjI5YzE1LjU3IDAgMjcuMTUgMTEuNDYgMjcuMTUgMjdzLTExLjYyIDI3LTI3LjE1IDI3Yy0xNS43IDAtMjcuMTUtMTEuNTctMjcuMTUtMjdzMTEuNTUtMjcgMjcuMTUtMjd6TTExMyAzMjYuMjVjMC0xNS42MSAxMS42OC0yNyAyNy4xNS0yN3MyNy4xNSAxMS40NiAyNy4xNSAyNy0xMS40NyAyNy0yNy4xNSAyN2MtMTUuNDQgMC0yNy4xNS0xMS4zMS0yNy4xNS0yN00xOTEuNzYgMTU5QzE1NyAxNTkgODkuNDUgMTc4Ljc3IDU5LjI1IDIyN0wxNCAwdjMzNS40OEMxNCA0MzMuMTMgOTMuNjEgNTEyIDE5MS43NiA1MTJzMTc3Ljc2LTc4Ljk1IDE3Ny43Ni0xNzYuNTJTMjkwLjEzIDE1OSAxOTEuNzYgMTU5em0wIDMwOC4xMmMtNzMuMjcgMC0xMzIuNTEtNTguOS0xMzIuNTEtMTMxLjU5czU5LjI0LTEzMS41OSAxMzIuNTEtMTMxLjU5IDEzMi41MSA1OC44NiAxMzIuNTEgMTMxLjU0UzI2NSA0NjcuMDcgMTkxLjc2IDQ2Ny4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTm9kZUpzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA1MDhjLTYuNyAwLTEzLjUtMS44LTE5LjQtNS4ybC02MS43LTM2LjVjLTkuMi01LjItNC43LTctMS43LTggMTIuMy00LjMgMTQuOC01LjIgMjcuOS0xMi43IDEuNC0uOCAzLjItLjUgNC42LjRsNDcuNCAyOC4xYzEuNyAxIDQuMSAxIDUuNyAwbDE4NC43LTEwNi42YzEuNy0xIDIuOC0zIDIuOC01VjE0OS4zYzAtMi4xLTEuMS00LTIuOS01LjFMMjI2LjggMzcuN2MtMS43LTEtNC0xLTUuNyAwTDM2LjYgMTQ0LjNjLTEuOCAxLTIuOSAzLTIuOSA1LjF2MjEzLjFjMCAyIDEuMSA0IDIuOSA0LjlsNTAuNiAyOS4yYzI3LjUgMTMuNyA0NC4zLTIuNCA0NC4zLTE4LjdWMTY3LjVjMC0zIDIuNC01LjMgNS40LTUuM2gyMy40YzIuOSAwIDUuNCAyLjMgNS40IDUuM1YzNzhjMCAzNi42LTIwIDU3LjYtNTQuNyA1Ny42LTEwLjcgMC0xOS4xIDAtNDIuNS0xMS42bC00OC40LTI3LjlDOC4xIDM4OS4yLjcgMzc2LjMuNyAzNjIuNFYxNDkuM2MwLTEzLjggNy40LTI2LjggMTkuNC0zMy43TDIwNC42IDljMTEuNy02LjYgMjcuMi02LjYgMzguOCAwbDE4NC43IDEwNi43YzEyIDYuOSAxOS40IDE5LjggMTkuNCAzMy43djIxMy4xYzAgMTMuOC03LjQgMjYuNy0xOS40IDMzLjdMMjQzLjQgNTAyLjhjLTUuOSAzLjQtMTIuNiA1LjItMTkuNCA1LjJ6bTE0OS4xLTIxMC4xYzAtMzkuOS0yNy01MC41LTgzLjctNTgtNTcuNC03LjYtNjMuMi0xMS41LTYzLjItMjQuOSAwLTExLjEgNC45LTI1LjkgNDcuNC0yNS45IDM3LjkgMCA1MS45IDguMiA1Ny43IDMzLjguNSAyLjQgMi43IDQuMiA1LjIgNC4yaDI0YzEuNSAwIDIuOS0uNiAzLjktMS43czEuNS0yLjYgMS40LTQuMWMtMy43LTQ0LjEtMzMtNjQuNi05Mi4yLTY0LjYtNTIuNyAwLTg0LjEgMjIuMi04NC4xIDU5LjUgMCA0MC40IDMxLjMgNTEuNiA4MS44IDU2LjYgNjAuNSA1LjkgNjUuMiAxNC44IDY1LjIgMjYuNyAwIDIwLjYtMTYuNiAyOS40LTU1LjUgMjkuNC00OC45IDAtNTkuNi0xMi4zLTYzLjItMzYuNi0uNC0yLjYtMi42LTQuNS01LjMtNC41aC0yMy45Yy0zIDAtNS4zIDIuNC01LjMgNS4zIDAgMzEuMSAxNi45IDY4LjIgOTcuOCA2OC4yIDU4LjQtLjEgOTItMjMuMiA5Mi02My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNi4zIDQ1MmMtMi4xIDAtNC4yLS42LTYuMS0xLjZMMjkxIDQzOWMtMi45LTEuNi0xLjUtMi4yLS41LTIuNSAzLjgtMS4zIDQuNi0xLjYgOC43LTQgLjQtLjIgMS0uMSAxLjQuMWwxNC44IDguOGMuNS4zIDEuMy4zIDEuOCAwTDM3NSA0MDhjLjUtLjMuOS0uOS45LTEuNnYtNjYuN2MwLS43LS4zLTEuMy0uOS0xLjZsLTU3LjgtMzMuM2MtLjUtLjMtMS4yLS4zLTEuOCAwbC01Ny44IDMzLjNjLS42LjMtLjkgMS0uOSAxLjZ2NjYuN2MwIC42LjQgMS4yLjkgMS41bDE1LjggOS4xYzguNiA0LjMgMTMuOS0uOCAxMy45LTUuOHYtNjUuOWMwLS45LjctMS43IDEuNy0xLjdoNy4zYy45IDAgMS43LjcgMS43IDEuN3Y2NS45YzAgMTEuNS02LjIgMTgtMTcuMSAxOC0zLjMgMC02IDAtMTMuMy0zLjZsLTE1LjItOC43Yy0zLjctMi4yLTYuMS02LjItNi4xLTEwLjV2LTY2LjdjMC00LjMgMi4zLTguNCA2LjEtMTAuNWw1Ny44LTMzLjRjMy43LTIuMSA4LjUtMi4xIDEyLjEgMGw1Ny44IDMzLjRjMy43IDIuMiA2LjEgNi4yIDYuMSAxMC41djY2LjdjMCA0LjMtMi4zIDguNC02LjEgMTAuNWwtNTcuOCAzMy40Yy0xLjcgMS4xLTMuOCAxLjctNiAxLjd6bTQ2LjctNjUuOGMwLTEyLjUtOC40LTE1LjgtMjYuMi0xOC4yLTE4LTIuNC0xOS44LTMuNi0xOS44LTcuOCAwLTMuNSAxLjUtOC4xIDE0LjgtOC4xIDExLjkgMCAxNi4zIDIuNiAxOC4xIDEwLjYuMi44LjggMS4zIDEuNiAxLjNoNy41Yy41IDAgLjktLjIgMS4yLS41LjMtLjQuNS0uOC40LTEuMy0xLjItMTMuOC0xMC4zLTIwLjItMjguOC0yMC4yLTE2LjUgMC0yNi4zIDctMjYuMyAxOC42IDAgMTIuNyA5LjggMTYuMSAyNS42IDE3LjcgMTguOSAxLjkgMjAuNCA0LjYgMjAuNCA4LjMgMCA2LjUtNS4yIDkuMi0xNy40IDkuMi0xNS4zIDAtMTguNy0zLjgtMTkuOC0xMS40LS4xLS44LS44LTEuNC0xLjctMS40aC03LjVjLS45IDAtMS43LjctMS43IDEuNyAwIDkuNyA1LjMgMjEuMyAzMC42IDIxLjMgMTguNSAwIDI5LTcuMiAyOS0xOS44em01NC41LTUwLjFjMCA2LjEtNSAxMS4xLTExLjEgMTEuMXMtMTEuMS01LTExLjEtMTEuMWMwLTYuMyA1LjItMTEuMSAxMS4xLTExLjEgNi0uMSAxMS4xIDQuOCAxMS4xIDExLjF6bS0xLjggMGMwLTUuMi00LjItOS4zLTkuNC05LjMtNS4xIDAtOS4zIDQuMS05LjMgOS4zIDAgNS4yIDQuMiA5LjQgOS4zIDkuNCA1LjItLjEgOS40LTQuMyA5LjQtOS40em0tNC41IDYuMmgtMi42Yy0uMS0uNi0uNS0zLjgtLjUtMy45LS4yLS43LS40LTEuMS0xLjMtMS4xaC0yLjJ2NWgtMi40di0xMi41aDQuM2MxLjUgMCA0LjQgMCA0LjQgMy4zIDAgMi4zLTEuNSAyLjgtMi40IDMuMSAxLjcuMSAxLjggMS4yIDIuMSAyLjguMSAxIC4zIDIuNy42IDMuM3ptLTIuOC04LjhjMC0xLjctMS4yLTEuNy0xLjgtMS43aC0ydjMuNWgxLjljMS42IDAgMS45LTEuMSAxLjktMS44ek0xMzcuMyAxOTFjMC0yLjctMS40LTUuMS0zLjctNi40bC02MS4zLTM1LjNjLTEtLjYtMi4yLS45LTMuNC0xaC0uNmMtMS4yIDAtMi4zLjQtMy40IDFMMy43IDE4NC42QzEuNCAxODUuOSAwIDE4OC40IDAgMTkxbC4xIDk1YzAgMS4zLjcgMi41IDEuOCAzLjIgMS4xLjcgMi41LjcgMy43IDBMNDIgMjY4LjNjMi4zLTEuNCAzLjctMy44IDMuNy02LjR2LTQ0LjRjMC0yLjYgMS40LTUuMSAzLjctNi40bDE1LjUtOC45YzEuMi0uNyAyLjQtMSAzLjctMSAxLjMgMCAyLjYuMyAzLjcgMWwxNS41IDguOWMyLjMgMS4zIDMuNyAzLjggMy43IDYuNHY0NC40YzAgMi42IDEuNCA1LjEgMy43IDYuNGwzNi40IDIwLjljMS4xLjcgMi42LjcgMy43IDAgMS4xLS42IDEuOC0xLjkgMS44LTMuMmwuMi05NXpNNDcyLjUgODcuM3YxNzYuNGMwIDIuNi0xLjQgNS4xLTMuNyA2LjRsLTYxLjMgMzUuNGMtMi4zIDEuMy01LjEgMS4zLTcuNCAwbC02MS4zLTM1LjRjLTIuMy0xLjMtMy43LTMuOC0zLjctNi40di03MC44YzAtMi42IDEuNC01LjEgMy43LTYuNGw2MS4zLTM1LjRjMi4zLTEuMyA1LjEtMS4zIDcuNCAwbDE1LjMgOC44YzEuNyAxIDMuOS0uMyAzLjktMi4ydi05NGMwLTIuOCAzLTQuNiA1LjUtMy4ybDM2LjUgMjAuNGMyLjMgMS4yIDMuOCAzLjcgMy44IDYuNHptLTQ2IDEyOC45YzAtLjctLjQtMS4zLS45LTEuNmwtMjEtMTIuMmMtLjYtLjMtMS4zLS4zLTEuOSAwbC0yMSAxMi4yYy0uNi4zLS45LjktLjkgMS42djI0LjNjMCAuNy40IDEuMy45IDEuNmwyMSAxMi4xYy42LjMgMS4zLjMgMS44IDBsMjEtMTIuMWMuNi0uMy45LS45LjktMS42di0yNC4zem0yMDkuOC0uN2MyLjMtMS4zIDMuNy0zLjggMy43LTYuNFYxOTJjMC0yLjYtMS40LTUuMS0zLjctNi40bC02MC45LTM1LjRjLTIuMy0xLjMtNS4xLTEuMy03LjQgMGwtNjEuMyAzNS40Yy0yLjMgMS4zLTMuNyAzLjgtMy43IDYuNHY3MC44YzAgMi43IDEuNCA1LjEgMy43IDYuNGw2MC45IDM0LjdjMi4yIDEuMyA1IDEuMyA3LjMgMGwzNi44LTIwLjVjMi41LTEuNCAyLjUtNSAwLTYuNEw1NTAgMjQxLjZjLTEuMi0uNy0xLjktMS45LTEuOS0zLjJ2LTIyLjJjMC0xLjMuNy0yLjUgMS45LTMuMmwxOS4yLTExLjFjMS4xLS43IDIuNi0uNyAzLjcgMGwxOS4yIDExLjFjMS4xLjcgMS45IDEuOSAxLjkgMy4ydjE3LjRjMCAyLjggMy4xIDQuNiA1LjYgMy4ybDM2LjctMjEuM3pNNTU5IDIxOWMtLjQuMy0uNy43LS43IDEuMnYxMy42YzAgLjUuMyAxIC43IDEuMmwxMS44IDYuOGMuNC4zIDEgLjMgMS40IDBMNTg0IDIzNWMuNC0uMy43LS43LjctMS4ydi0xMy42YzAtLjUtLjMtMS0uNy0xLjJsLTExLjgtNi44Yy0uNC0uMy0xLS4zLTEuNCAwTDU1OSAyMTl6bS0yNTQuMiA0My41di03MC40YzAtMi42LTEuNi01LjEtMy45LTYuNGwtNjEuMS0zNS4yYy0yLjEtMS4yLTUtMS40LTcuNCAwbC02MS4xIDM1LjJjLTIuMyAxLjMtMy45IDMuNy0zLjkgNi40djcwLjRjMCAyLjggMS45IDUuMiA0IDYuNGw2MS4yIDM1LjJjMi40IDEuNCA1LjIgMS4zIDcuNCAwbDYxLTM1LjJjMS44LTEgMy4xLTIuNyAzLjYtNC43LjEtLjUuMi0xLjEuMi0xLjd6bS03NC4zLTEyNC45bC0uOC41aDEuMWwtLjMtLjV6bTc2LjIgMTMwLjJsLS40LS43di45bC40LS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOcG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDI4OGgtMzJ2LTY0aDMydjY0em0yODgtMTI4djE5MkgyODh2MzJIMTYwdi0zMkgwVjE2MGg1NzZ6bS00MTYgMzJIMzJ2MTI4aDY0di05NmgzMnY5NmgzMlYxOTJ6bTE2MCAwSDE5MnYxNjBoNjR2LTMyaDY0VjE5MnptMjI0IDBIMzUydjEyOGg2NHYtOTZoMzJ2OTZoMzJ2LTk2aDMydjk2aDMyVjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTnM4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNC4zMjQsMjY5LjE3MmgyNi4wNjdWMjQyLjk5NEgxMDQuMzI0Wm01Mi40NjYtMjYuMTc4LS4wNTUtMjYuMTc4di0uOTQxYTM5LjMyNSwzOS4zMjUsMCwwLDAtNzguNjQ0Ljk0MXYuMTY2aDI2LjR2LS4xNjZhMTIuOTgsMTIuOTgsMCwwLDEsMjUuOTU2LDB2MjYuMTc4Wm01Mi4zNTYsMjUuODQ2YTkxLjEsOTEuMSwwLDAsMS05MS4xLDkxLjFoLS42MDlhOTEuMSw5MS4xLDAsMCwxLTkxLjEtOTEuMUgwdi4xNjZBMTE3LjMzLDExNy4zMywwLDAsMCwxMTcuNDQsMzg2LjI4aC43NzVBMTE3LjMzMSwxMTcuMzMxLDAsMCwwLDIzNS40OSwyNjguODRWMjQyLjgyOEgyMDkuMTQ2Wm0tMTU3LjIzMywwYTY1LjM2Miw2NS4zNjIsMCwwLDAsMTMwLjcyMywwSDE1Ni4yOTJhMzkuMDIzLDM5LjAyMywwLDAsMS03OC4wMzUsMFYyNDIuODgzSDUxLjk2OHYtMjYuNjJBNjUuNDIsNjUuNDIsMCwwLDEsMTgyLjgsMjE3LjQ4djI1LjI5M2gyNi4zNDRWMjE3LjQ4YTkxLjc2MSw5MS43NjEsMCwwLDAtMTgzLjUyMiwwdjI1LjRINTEuOTEzWm00MTguNC03MS4xNzNjMTMuNjcsMCwyNC41NzMsNi42NDIsMzAuMDUyLDE4LjI2NGwuNzE5LDEuNTQ5LDIzLjI0NS0xMS41MTEtLjYwOS0xLjQzOWMtOC4wMjUtMTkuMjYtMjguNS0zMS4yNy01My40MDctMzEuMjctMjMuMTM0LDAtNDMuNjExLDExLjQtNTAuOTcyLDI4LjQ0Ny0uMTIzLDI2Ljg3Ni0uMTU4LDIzLjksMCwyNC44NSw0LjcsMTEuMDEzLDE0LjU1NSwxOS4zNywyOC42NjgsMjQuMjQxYTEwMi4wMzMsMTAyLjAzMywwLDAsMCwxOS44MTMsMy45ODRjNS40NzkuNzIsMTAuNjI2LDEuMzg0LDE1LjgyOSwzLjEsNi4zNjQsMi4xLDEwLjQ2LDUuMjU3LDEyLjg0LDkuODUxdjkuODUxYy0zLjcwOCw3LjUyNy0xMy43ODEsMTIuMzQyLTI1Ljc5MSwxMi4zNDItMTQuMzM0LDAtMjUuOTU2LTYuOTE4LTMxLjkzMy0xOS4wMzlsLS43Mi0xLjQ5NEw0MTUuMDI2LDI4MC45bC41NTMsMS40MzljNy45MTUsMTkuNDI2LDI5LjYwOSwzMi4wNDQsNTUuMjg5LDMyLjA0NCwyMy42MzIsMCw0NC42MDgtMTEuNCw1Mi4zLTI4LjQ0N2wuMTY2LTI1LjktLjE2Ni0uNjY0Yy00Ljg3LTExLjAxNC0xNS4yMTktMTkuNjQ3LTI4Ljk0NC0yNC4yNDEtNy42OTMtMi43MTItMTQuMzM1LTMuNi0yMC43LTQuNDI3YTgzLjc3Nyw4My43NzcsMCwwLDEtMTQuODMyLTIuODc4Yy02LjMxLTEuOTM3LTEwLjQtNS4wOTItMTIuNjE5LTkuNjN2LTguNDEyQzQ0OS40NSwyMDIuNDI3LDQ1OC45NjksMTk3LjY2Nyw0NzAuMzE1LDE5Ny42NjdaTTI4Ny41NjgsMzExLjM0NGgyNi4wNjd2LTY4LjRIMjg3LjU2OFptMzUyLjI2Ni01My4zYy0yLjkzMy02LjI1NC04LjMtMTIuMDEtMTUuNDQxLTE2LjcxNEEzNy45OSwzNy45OSwwLDAsMCw2MzcuNCwyMjZsLjE2Ni0yNS4zNDctLjE2Ni0uNjY0QzYzMC4wMzgsMTg0LDYxMC42NjcsMTczLjI2LDU4OS4yNSwxNzMuMjZTNTQ4LjQ2MSwxODQsNTQxLjEsMTk5Ljk5MmwtLjE2NiwyNS4zNDcuMTY2LjY2NGEzOS42NDMsMzkuNjQzLDAsMCwwLDEzLjAwNiwxNS4zMzFjLTcuMiw0LjctMTIuNTA4LDEwLjQ2LTE1LjQ0MSwxNi43MTRsLS4xNjYsMjguODg5LjE2Ni43MmM3LjU4MiwxNS45OTQsMjcuODkzLDI2LjczMSw1MC41ODUsMjYuNzMxczQzLjA1Ny0xMC43MzcsNTAuNTg0LTI2LjczMWwuMTY2LTI4Ljg5Wm0tNzMuMjItNTAuODA2YzMuNi02LjMxLDEyLjU2My0xMC41MTYsMjIuNTgtMTAuNTE2czE5LjAzOCw0LjIwNiwyMi42MzYsMTAuNTE2djEzLjcyNWMtMy41NDIsNi4yLTEyLjU2MywxMC4zNDktMjIuNjM2LDEwLjM0OXMtMTkuMDk0LTQuMTUtMjIuNTgtMTAuMzQ5Wm00Ny4zMTksNzIuMTY5Yy0zLjc2NCw2LjY0MS0xMy4zMzgsMTAuOS0yNC42ODMsMTAuOS0xMS4xMjUsMC0yMC45NzYtNC4zNzItMjQuNjg0LTEwLjlWMjYzLjI1YzMuNzA4LTYuMzA5LDEzLjUtMTAuNTE1LDI0LjY4NC0xMC41MTUsMTEuMzQ1LDAsMjAuOTE5LDQuMTUsMjQuNjgzLDEwLjUxNVpNMzc2LjQsMjY1Ljk2MmwtNTkuODI3LTg5LjcxM2gtMjl2NDAuNjIzaDI2LjUxdi4zODdsNjIuNTM5LDk0LjA4NUg0MDIuM1YxNzYuMjQ5SDM3Ni40WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOdXRyaXRpb25peCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDAwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OCA4LjFTMjIxLjQtLjEgMjA5IDExMi41YzAgMCAxOS4xLTc0LjkgMTAzLTQwLjYgMCAwLTE3LjcgNzQtODggNTYgMCAwIDE0LjYtNTQuNiA2Ni4xLTU2LjYgMCAwLTM5LjktMTAuMy04Mi4xIDQ4LjggMCAwLTE5LjgtOTQuNS05My42LTk5LjcgMCAwIDc1LjIgMTkuNCA3Ny42IDEwNy41IDAgLjEtMTA2LjQgNy0xMDQtMTE5Ljh6bTMxMiAzMTUuNmMwIDQ4LjUtOS43IDk1LjMtMzIgMTMyLjMtNDIuMiAzMC45LTEwNSA0OC0xNjggNDgtNjIuOSAwLTEyNS44LTE3LjEtMTY4LTQ4QzkuNyA0MTkgMCAzNzIuMiAwIDMyMy43IDAgMjc1LjMgMTcuNyAyMjkgNDAgMTkyYzQyLjItMzAuOSA5Ny4xLTQ4LjYgMTYwLTQ4LjYgNjMgMCAxMTcuOCAxNy42IDE2MCA0OC42IDIyLjMgMzcgNDAgODMuMyA0MCAxMzEuN3pNMTIwIDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6TTE5MiA0MjhjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4ek0yNjQgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHpNMzM2IDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTI0LTM5LjZjLTQuOC0yMi4zLTcuNC0zNi45LTE2LTU2LTM4LjgtMTkuOS05MC41LTMyLTE0NC0zMlM5NC44IDE4MC4xIDU2IDIwMGMtOC44IDE5LjUtMTEuMiAzMy45LTE2IDU2IDQyLjItNy45IDk4LjctMTQuOCAxNjAtMTQuOHMxMTcuOCA2LjkgMTYwIDE0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9jdG9wdXNEZXBsb3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU1LjYsMzQ5LjJjLTQ1Ljg5MS0zOS4wOS0zNi42Ny03Ny44NzctMTYuMDk1LTEyOC4xMUM0NzUuMTYsMTM0LjA0LDQxNS45NjcsMzQuMTQsMzI5LjkzLDguMywyMzcuMDQtMTkuNiwxMzQuMjUyLDI0LjM0MSw5OS42NzcsMTE3LjE0N2ExODAuODYyLDE4MC44NjIsMCwwLDAtMTAuOTg4LDczLjU0NGMxLjczMywyOS41NDMsMTQuNzE3LDUyLjk3LDI0LjA5LDgwLjMsMTcuMiw1MC4xNjEtMjguMSw5Mi43NDMtNjYuNjYyLDExNy41ODItNDYuODA2LDMwLjItMzYuMzE5LDM5Ljg1Ny04LjQyOCw0MS44NTgsMjMuMzc4LDEuNjgsNDQuNDc4LTQuNTQ4LDY1LjI2NS0xNS4wNDUsOS4yLTQuNjQ3LDQwLjY4Ny0xOC45MzEsNDUuMTMtMjguNTg4QzEzNS45LDQxMy4zODgsMTExLjEyMiw0NTkuNSwxMjYuNjIxLDQ4OC45YzE5LjEsMzYuMjI5LDY3LjExMi0zMS43Nyw3Ni43MDktNDUuODEyLDguNTkxLTEyLjU3Miw0Mi45NjMtODEuMjc5LDYzLjYyNy00Ni45MjYsMTguODY1LDMxLjM2MSw4LjYsNzYuMzkxLDM1LjczOCwxMDQuNjIyLDMyLjg1NCwzNC4yLDUxLjE1NS0xOC4zMTIsNTEuNDEyLTQ0LjIyMS4xNjMtMTYuNDExLTYuMS05NS44NTIsMjkuOS01OS45NDRDNDA1LjQyOCw0MTgsNDM2LjkxMiw0NjcuOCw0NzIuNTY4LDQ2My42NDJjMzguNzM2LTQuNTE2LTIyLjEyMy02Ny45NjctMjguMjYyLTc4LjY5NSw1LjM5Myw0LjI3OSw1My42NjUsMzQuMTI4LDUzLjgxOCw5LjUyQzQ5OC4yMzQsMzc1LjY3OCw0NjguMDM5LDM1OS44LDQ1NS42LDM0OS4yWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPZG5va2xhc3NuaWtpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NS4xIDMzNGMtMjcuNCAxNy40LTY1LjEgMjQuMy05MCAyNi45bDIwLjkgMjAuNiA3Ni4zIDc2LjNjMjcuOSAyOC42LTE3LjUgNzMuMy00NS43IDQ1LjctMTkuMS0xOS40LTQ3LjEtNDcuNC03Ni4zLTc2LjZMODQgNTAzLjRjLTI4LjIgMjcuNS03My42LTE3LjYtNDUuNC00NS43IDE5LjQtMTkuNCA0Ny4xLTQ3LjQgNzYuMy03Ni4zbDIwLjYtMjAuNmMtMjQuNi0yLjYtNjIuOS05LjEtOTAuNi0yNi45LTMyLjYtMjEtNDYuOS0zMy4zLTM0LjMtNTkgNy40LTE0LjYgMjcuNy0yNi45IDU0LjYtNS43IDAgMCAzNi4zIDI4LjkgOTQuOSAyOC45czk0LjktMjguOSA5NC45LTI4LjljMjYuOS0yMS4xIDQ3LjEtOC45IDU0LjYgNS43IDEyLjQgMjUuNy0xLjkgMzgtMzQuNSA1OS4xek0zMC4zIDEyOS43QzMwLjMgNTggODguNiAwIDE2MCAwczEyOS43IDU4IDEyOS43IDEyOS43YzAgNzEuNC01OC4zIDEyOS40LTEyOS43IDEyOS40cy0xMjkuNy01OC0xMjkuNy0xMjkuNHptNjYgMGMwIDM1LjEgMjguNiA2My43IDYzLjcgNjMuN3M2My43LTI4LjYgNjMuNy02My43YzAtMzUuNC0yOC42LTY0LTYzLjctNjRzLTYzLjcgMjguNi02My43IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPZHlzZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA2LjcgNDYzYy00Mi4zIDMwLjgtOTQuNCA0OS0xNTAuNyA0OUMxNDQuOSA1MTIgNTAuMyA0NDEuMiAxNC45IDM0Mi4yYzIuNCAxLjcgNS45IDMuNiA3LjkgNC40YzE2LjMgNy40IDQwLjEtNS40IDYyLjktMjguN2M2LjktNi45IDE0LjQtMTIuNCAyMi44LTE3LjNjMTguMy0xMS45IDM3LjYtMjAuOCA1OC40LTI3LjJjMCAwIDIyLjMgMzQuMiA0My4xIDc0LjhzLTIyLjMgNTQtMjcuMiA1NGMtLjMgMC0uOCAwLTEuNS0uMWMtMTEtLjUtNzAtMy01NiA1MS4xYzE0LjkgNTcuNCA5Ny41IDM2LjYgMTM5LjYgOC45czMxLjctMTE4LjMgMzEuNy0xMTguM2M0MS4xLTYuNCA1NCAzNy4xIDU3LjkgNTkuNGMuOCA0LjYgMS4xIDkuOSAxLjQgMTUuNWMxLjEgMjEuMiAyLjMgNDUuNiAzNS4zIDQ2LjRjNS4zIDAgMTAuNi0uOCAxNS41LTJ6bS05NS4zLTIzLjdjLTItLjUtMy41LTIuNS0zLTVjMS0yLjUgMy0zLjUgNS0zczMuNSAzIDMgNXMtMi41IDMuNS01IDN6bS0yMDctOTUuNmMxLjUtLjUgMy41IDEgNCAzYzAgMi0xIDQtMyA0Yy0xLjUgLjUtMy41LTEtNC0zYy0uNS0xLjUgMS0zLjUgMy00ek00NTEuOCA0MjFDNDg5LjMgMzc2LjQgNTEyIDMxOC44IDUxMiAyNTZjMC02Ny41LTI2LjEtMTI4LjktNjguOC0xNzQuN2MtLjEgMjMuNS02LjEgNDguMi0xNi44IDY5LjJjLTExLjkgMjAuMy00OSA1OC45LTY5LjggNzguN2MtLjcgLjMtMS4xIC45LTEuNSAxLjRjLS4yIC4yLS4zIC40LS41IC42Yy01IDYuOS00IDE2LjggMyAyMS44YzIxLjMgMTUuOCA1Ni40IDQ1LjYgNTkuNCA3Mi44YzMuNSAzNC45IDI3LjkgNzUuNiAzNC4yIDg2LjJsMCAwYy44IDEuMyAxLjMgMi4xIDEuNCAyLjRjMCAyLjItLjQgNC4zLS44IDYuNXpNMzkwLjcgMjUxYy0uNSAzIDEgNS45IDQgNi40czUuOS0xIDYuNC00cy0xLTUuOS00LTYuNGMtMy0xLTUuOSAxLTYuNCA0em02MS40LTYwLjlsLTExLjQgNS40LTMgMTIuOS01LjQtMTEuNC0xMi45LTMgMTEuNC01LjQgMy0xMi45IDUuNCAxMS40IDEyLjkgM3pNMzk1LjUgNDEuM2MtMTYuMiA4LjItMjIuMSAzMi44LTI5IDYxLjRsMCAwYy0uMyAxLjQtLjcgMi44LTEgNC4yYy05LjUgMzguNS0zMC42IDM3LjYtNDEuNyAzNy4yYy0xLjEgMC0yLS4xLTIuOS0uMWMtNS4xIDAtNi00LTguOS0xNy4xYy0yLjYtMTIuMS02LjktMzItMTcuOS02My42QzI3MS40LTIuNSAyMTEuNCAxMy45IDE2NS45IDQxLjFDMTEwLjYgNzQuMiAxMzEuNSAxNDMgMTQ2LjEgMTkwLjVjLjcgMi4yIDEuNCA0LjQgMiA2LjZjLTQgNC0xMy44IDcuNS0yNiAxMS45Yy0xMi4xIDQuMy0yNi42IDkuNS00MC4zIDE2LjlDNDcuOSAyNDMuOSAxMS41IDI3NC45IDIgMjg4LjVDLjcgMjc3LjggMCAyNjcgMCAyNTZDMCAxMTQuNiAxMTQuNiAwIDI1NiAwYzUxLjQgMCA5OS40IDE1LjIgMTM5LjUgNDEuM3pNNTguOSAxODkuNmMtMS41LTItNC41LTMtNi40LTEuNXMtMyA0LjUtMS41IDYuNHM0LjUgMyA2LjQgMS41YzIuNS0xLjUgMy00LjUgMS41LTYuNHpNMzI3LjMgNjQuOWMyLTEuNSA1LS41IDYuNCAxLjVjMS41IDIuNSAxIDUuNC0xLjUgNi40Yy0yIDEuNS01IC41LTYuNC0xLjVzLS41LTUgMS41LTYuNHpNOTUuMSAxMDVjLS41IDEuNSAuNSAzIDIgM2MxLjUgLjUgMy0uNSAzLTJjLjUtMS41LS41LTMtMi0zcy0zIC41LTMgMnptODQuNy0uNWMtMy41LTQzLjEgMzcuMS01NCAzNy4xLTU0YzQ0LjEtMTUuNCA1NiA1LjkgNjYuNCAzNy42czMgNDIuNi0zOC42IDU4LjlzLTYxLjktNC41LTY0LjktNDIuNnptODkuNiAxNC45aDFjMi41IDAgNS0yIDUtNWMyLTYuOSAxLTE0LjQtMi0yMC44Yy0xLjUtMi00LTMuNS02LjQtMi41Yy0zIDEtNC41IDQtMy41IDYuOWMyIDQuNSAzIDkuOSAxLjUgMTQuOWMtLjUgMyAxLjUgNS45IDQuNSA2LjR6bS05LjktNDEuNmMtMiAwLTQtMS01LTNzLTItMy41LTMtNWMtMi0yLTItNS40IDAtNy40czUuNC0yIDcuNCAwYzIgMi41IDMuNSA1IDUgNy40cy41IDUuOS0yLjUgNy40Yy0uNiAwLTEgLjItMS4zIC4zYy0uMiAuMS0uNCAuMi0uNiAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2xkUmVwdWJsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM1Ljc2IDEwLjIzYzcuNS0uMzEgMTUtLjI4IDIyLjUtLjA5IDMuNjEuMTQgNy4yLjQgMTAuNzkuNzMgNC45Mi4yNyA5Ljc5IDEuMDMgMTQuNjcgMS42MiAyLjkzLjQzIDUuODMuOTggOC43NSAxLjQ2IDcuOSAxLjMzIDE1LjY3IDMuMjggMjMuMzkgNS40IDEyLjI0IDMuNDcgMjQuMTkgNy45MiAzNS43NiAxMy4yMSAyNi41NiAxMi4yNCA1MC45NCAyOS4yMSA3MS42MyA0OS44OCAyMC4wMyAyMC4wOSAzNi43MiA0My41NSA0OC44OSA2OS4xOSAxLjEzIDIuNTkgMi40NCA1LjEgMy40NyA3Ljc0IDIuODEgNi40MyA1LjM5IDEyLjk3IDcuNTggMTkuNjMgNC4xNCAxMi4zMyA3LjM0IDI0Ljk5IDkuNDIgMzcuODMuNTcgMy4xNCAxLjA0IDYuMyAxLjQgOS40Ny41NSAzLjgzLjk0IDcuNjkgMS4xOCAxMS41Ni44MyA4LjM0Ljg0IDE2LjczLjc3IDI1LjEtLjA3IDQuOTctLjI2IDkuOTQtLjc1IDE0Ljg5LS4yNCAzLjM4LS41MSA2Ljc2LS45OCAxMC4xMi0uMzkgMi43Mi0uNjMgNS40Ni0xLjExIDguMTctLjkgNS4xNS0xLjcgMTAuMzEtMi44NyAxNS40MS00LjEgMTguNS0xMC4zIDM2LjU1LTE4LjUxIDUzLjYzLTE1Ljc3IDMyLjgzLTM4LjgzIDYyLjE3LTY3LjEyIDg1LjEyYTI0Ni41MDMgMjQ2LjUwMyAwIDAgMS01Ni45MSAzNC44NmMtNi4yMSAyLjY4LTEyLjQ2IDUuMjUtMTguODcgNy40MS0zLjUxIDEuMTYtNy4wMSAyLjM4LTEwLjU3IDMuMzktNi42MiAxLjg4LTEzLjI5IDMuNjQtMjAuMDQgNS00LjY2LjkxLTkuMzQgMS43My0xNC4wMyAyLjQ4LTUuMjUuNjYtMTAuNSAxLjQ0LTE1Ljc5IDEuNzQtNi42OS42Ni0xMy40MS44NC0yMC4xMi44MS02LjgyLjAzLTEzLjY1LS4xMi0yMC40NS0uNzktMy4yOS0uMjMtNi41Ny0uNS05LjgzLS45NS0yLjcyLS4zOS01LjQ2LS42My04LjE3LTEuMTEtNC4xMi0uNzItOC4yNS0xLjM3LTEyLjM1LTIuMjItNC4yNS0uOTQtOC40OS0xLjg5LTEyLjY5LTMuMDItOC42My0yLjE3LTE3LjA4LTUuMDEtMjUuNDEtOC4xMy0xMC40OS00LjEyLTIwLjc5LTguNzUtMzAuNjQtMTQuMjUtMi4xNC0xLjE1LTQuMjgtMi4yOS02LjM1LTMuNTctMTEuMjItNi41OC0yMS44Ni0xNC4xLTMxLjkyLTIyLjM0LTM0LjY4LTI4LjQxLTYxLjQxLTY2LjQzLTc2LjM1LTEwOC43LTMuMDktOC43NC01LjcxLTE3LjY1LTcuOC0yNi42OC0xLjQ4LTYuMTYtMi41Mi0xMi40Mi0zLjU4LTE4LjY2LS40LTIuMzUtLjYxLTQuNzMtLjk1LTcuMDktLjYtMy45Ni0uNzUtNy45Ni0xLjE3LTExLjk0LS44LTkuNDctLjcxLTE4Ljk5LS41MS0yOC40OS4xNC0zLjUxLjM0LTcuMDEuNy0xMC41MS4zMS0zLjE3LjQ2LTYuMzcuOTItOS41Mi40MS0yLjgxLjY1LTUuNjUgMS4xNi04LjQ0LjctMy45NCAxLjMtNy45IDIuMTItMTEuODIgMy40My0xNi41MiA4LjQ3LTMyLjczIDE1LjI2LTQ4LjE4IDEuMTUtMi45MiAyLjU5LTUuNzIgMy44Ni04LjU5IDguMDUtMTYuNzEgMTcuOS0zMi41NiAyOS40OS00Ny4wNiAyMC0yNS4zOCA0NS4xLTQ2LjY4IDczLjI3LTYyLjQ3IDcuNS00LjE1IDE1LjE2LTguMDUgMjMuMDctMTEuMzcgMTUuODItNi44OCAzMi40MS0xMS45NSA0OS4zMS0xNS4zOCAzLjUxLS42NyA3LjA0LTEuMjQgMTAuNTYtMS44NSAyLjYyLS40NyA1LjI4LS43IDcuOTEtMS4wOCAzLjUzLS41MyA3LjEtLjY4IDEwLjY1LTEuMDQgMi40Ni0uMjQgNC45MS0uMzYgNy4zNi0uNTFtOC42NCAyNC40MWMtOS4yMy4xLTE4LjQzLjk5LTI3LjU3IDIuMjMtNy4zIDEuMDgtMTQuNTMgMi42LTIxLjcxIDQuMy0xMy45MSAzLjUtMjcuNDggOC4zNC00MC40NiAxNC40Mi0xMC40NiA0Ljk5LTIwLjU5IDEwLjctMzAuMTggMTcuMjItNC4xOCAyLjkyLTguNCA1LjgtMTIuMzQgOS4wMy01LjA4IDMuOTctOS45OCA4LjE3LTE0LjY4IDEyLjU5LTIuNTEgMi4yNC00LjgxIDQuNy03LjIyIDcuMDYtMjguMjIgMjguNzktNDguNDQgNjUuMzktNTcuNSAxMDQuNjktMi4wNCA4LjQ0LTMuNTQgMTcuMDItNC40NCAyNS42NS0xLjEgOC44OS0xLjQ0IDE3Ljg1LTEuNDEgMjYuOC4xMSA3LjE0LjM4IDE0LjI4IDEuMjIgMjEuMzcuNjIgNy4xMiAxLjg3IDE0LjE2IDMuMiAyMS4xOCAxLjA3IDQuNjUgMi4wMyA5LjMyIDMuMzMgMTMuOTEgNi4yOSAyMy4zOCAxNi41IDQ1LjcgMzAuMDcgNjUuNzUgOC42NCAxMi45OCAxOC43OCAyNC45MyAyOS45OCAzNS43NyAxNi4yOCAxNS44MiAzNS4wNSAyOS4wNCA1NS4zNCAzOS4yMiA3LjI4IDMuNTIgMTQuNjYgNi44NyAyMi4yNyA5LjYzIDUuMDQgMS43NiAxMC4wNiAzLjU3IDE1LjIyIDQuOTggMTEuMjYgMy4yMyAyMi43NyA1LjYgMzQuMzkgNy4wNiAyLjkxLjI5IDUuODEuNjEgOC43Mi45IDEzLjgyIDEuMDggMjcuNzQgMSA0MS41NC0uNDMgNC40NS0uNiA4LjkyLS45OSAxMy4zNS0xLjc4IDMuNjMtLjY3IDcuMjgtMS4yNSAxMC44Ny0yLjEgNC4xMy0uOTggOC4yOC0xLjkxIDEyLjM2LTMuMDcgMjYuNS03LjM0IDUxLjU4LTE5LjcxIDczLjU4LTM2LjIgMTUuNzgtMTEuODIgMjkuOTYtMjUuNzYgNDIuMTItNDEuMjggMy4yNi00LjAyIDYuMTctOC4zMSA5LjEzLTEyLjU1IDMuMzktNS4wNiA2LjU4LTEwLjI1IDkuNi0xNS41NCAyLjQtNC40NCA0Ljc0LTguOTEgNi45NS0xMy40NSA1LjY5LTEyLjA1IDEwLjI4LTI0LjYyIDEzLjc1LTM3LjQ5IDIuNTktMTAuMDEgNC43NS0yMC4xNiA1LjktMzAuNDUgMS43Ny0xMy40NyAxLjk0LTI3LjEgMS4yOS00MC42NS0uMjktMy44OS0uNjctNy43Ny0xLTExLjY2LTIuMjMtMTkuMDgtNi43OS0zNy45MS0xMy44Mi01NS44LTUuOTUtMTUuMTMtMTMuNTMtMjkuNjMtMjIuNjEtNDMuMTMtMTIuNjktMTguOC0yOC4yNC0zNS42OC00NS45Ny00OS44My0yNS4wNS0yMC01NC40Ny0zNC41NS04NS42NS00Mi4wOC03Ljc4LTEuOTMtMTUuNjktMy4zNC0yMy42My00LjQ1LTMuOTEtLjU5LTcuODUtLjgyLTExLjc3LTEuMjQtNy4zOS0uNTctMTQuODEtLjcyLTIyLjIyLS41OHpNMTM5LjI2IDgzLjUzYzEzLjMtOC44OSAyOC4wOC0xNS4zOCA0My4zLTIwLjE4LTMuMTcgMS43Ny02LjQ0IDMuMzgtOS41MyA1LjI5LTExLjIxIDYuNjgtMjEuNTIgMTQuOS0zMC4zOCAyNC40OS02LjggNy40My0xMi43NiAxNS43My0xNy4wMSAyNC44OS0zLjI5IDYuODYtNS42NCAxNC4xOS02Ljg2IDIxLjcxLS45MyA0Ljg1LTEuMyA5LjgxLTEuMTcgMTQuNzUuMTMgMTMuNjYgNC40NCAyNy4wOCAxMS4yOSAzOC44MiA1LjkyIDEwLjIyIDEzLjYzIDE5LjMzIDIyLjM2IDI3LjI2IDQuODUgNC4zNiAxMC4yNCA4LjA5IDE0Ljk1IDEyLjYgMi4yNiAyLjE5IDQuNDkgNC40MiA2LjQzIDYuOTEgMi42MiAzLjMxIDQuODkgNi45OSA1Ljk5IDExLjEuOSAzLjAyLjY2IDYuMi42OSA5LjMxLjAyIDQuMS0uMDQgOC4yLjAzIDEyLjMuMTQgMy41NC0uMDIgNy4wOS4xMSAxMC42My4wOCAyLjM4LjAyIDQuNzYuMDUgNy4xNC4xNiA1Ljc3LjA2IDExLjUzLjE1IDE3LjMuMTEgMi45MS4wMiA1LjgyLjEzIDguNzQuMDMgMS42My4xMyAzLjI4LS4wMyA0LjkxLS45MS4xMi0xLjgyLjE4LTIuNzMuMTYtMTAuOTkgMC0yMS44OC0yLjYzLTMxLjk1LTYuOTMtNi0yLjctMTEuODEtNS44OS0xNy4wOS05LjgzLTUuNzUtNC4xOS0xMS4wOS04Ljk2LTE1Ljc5LTE0LjMxLTYuNTMtNy4yNC0xMS45OC0xNS4zOS0xNi42Mi0yMy45NS0xLjA3LTIuMDMtMi4yNC00LjAyLTMuMTgtNi4xMi0xLjE2LTIuNjQtMi42Mi01LjE0LTMuNjctNy44Mi00LjA1LTkuNjgtNi41Ny0xOS45NC04LjA4LTMwLjMxLS40OS00LjQ0LTEuMDktOC44OC0xLjItMTMuMzUtLjctMTUuNzMuODQtMzEuNTUgNC42Ny00Ni44MiAyLjEyLTguMTUgNC43Ny0xNi4xOCA4LjMxLTIzLjgzIDYuMzItMTQuMiAxNS4zNC0yNy4xOCAyNi4zLTM4LjE5IDYuMjgtNi4yIDEzLjEzLTExLjg0IDIwLjUzLTE2LjY3em0xNzUuMzctMjAuMTJjMi43NC43NCA1LjQxIDEuNzQgOC4wOSAyLjY4IDYuMzYgMi4zMyAxMi42OCA0Ljg0IDE4LjcxIDcuOTYgMTMuMTEgNi40NCAyNS4zMSAxNC44MSAzNS44MiAyNC45NyAxMC4yIDkuOTUgMTguNzQgMjEuNiAyNS4xNCAzNC4zNCAxLjI4IDIuNzUgMi42NCA1LjQ2IDMuODEgOC4yNiA2LjMxIDE1LjEgMTAgMzEuMjYgMTEuMjMgNDcuNTcuNDEgNC41NC40NCA5LjA5LjQ1IDEzLjY0LjA3IDExLjY0LTEuNDkgMjMuMjUtNC4zIDM0LjUzLTEuOTcgNy4yNy00LjM1IDE0LjQ5LTcuODYgMjEuMTgtMy4xOCA2LjY0LTYuNjggMTMuMTYtMTAuODQgMTkuMjQtNi45NCAxMC40Ny0xNS42IDE5Ljg3LTI1LjgyIDI3LjIyLTEwLjQ4IDcuNjQtMjIuNjQgMTMuMDItMzUuNCAxNS4zOC0zLjUxLjY5LTcuMDggMS4wOC0xMC42NiAxLjIxLTEuODUuMDYtMy43Mi4xNi01LjU2LS4xLS4yOC0yLjE1IDAtNC4zMS0uMDEtNi40Ni0uMDMtMy43My4xNC03LjQ1LjEtMTEuMTcuMTktNy4wMi4wMi0xNC4wNS4yMS0yMS4wNy4wMy0yLjM4LS4wMy00Ljc2LjAzLTcuMTQuMTctNS4wNy0uMDQtMTAuMTQuMTQtMTUuMjEuMS0yLjk5LS4yNC02LjA0LjUxLTguOTYuNjYtMi41IDEuNzgtNC44NiAzLjA5LTcuMDggNC40Ni03LjMxIDExLjA2LTEyLjk2IDE3LjY4LTE4LjI2IDUuMzgtNC4xOCAxMC40Ny04Ljc3IDE1LjAyLTEzLjg0IDcuNjgtOC4zNyAxNC4xNy0xNy44OCAxOC43OC0yOC4yNyAyLjUtNS45MyA0LjUyLTEyLjEgNS41NS0xOC40Ni44Ni00LjM3IDEuMDYtOC44MyAxLjAxLTEzLjI3LS4wMi03Ljg1LTEuNC0xNS42NS0zLjY0LTIzLjE3LTEuNzUtNS43My00LjI3LTExLjE4LTcuMDktMTYuNDUtMy44Ny02LjkzLTguNjUtMTMuMzEtMTMuOTYtMTkuMi05Ljk0LTEwLjg1LTIxLjc1LTE5Ljk0LTM0LjYtMjcuMS0xLjg1LTEuMDItMy44NC0xLjgyLTUuNjMtMi45N3ptLTEwMC44IDU4LjQ1Yy45OC0xLjE4IDEuOTktMi4zMyAzLjEyLTMuMzgtLjYxLjkzLTEuMjcgMS44MS0xLjk1IDIuNjgtMy4xIDMuODgtNS41NCA4LjMxLTcuMDMgMTMuMDYtLjg3IDMuMjctMS42OCA2LjYtMS43MyAxMC0uMDcgMi41Mi0uMDggNS4wNy4zMiA3LjU3IDEuMTMgNy42MyA0LjMzIDE0Ljg1IDguNzcgMjEuMTIgMiAyLjcgNC4yNSA1LjI3IDYuOTIgNy4zMyAxLjYyIDEuMjcgMy41MyAyLjA5IDUuMzQgMy4wNSAzLjExIDEuNjggNi4zMiAzLjIzIDkuMDcgNS40OCAyLjY3IDIuMDkgNC41NSA1LjMzIDQuNCA4Ljc5LS4wMSA3My42NyAwIDE0Ny4zNC0uMDEgMjIxLjAyIDAgMS4zNS0uMDggMi43LjA0IDQuMDQuMTMgMS40OC44MiAyLjgzIDEuNDcgNC4xNS44NiAxLjY2IDEuNzggMy4zNCAzLjE4IDQuNjIuODUuNzcgMS45NyAxLjQgMy4xNSAxLjI0IDEuNS0uMiAyLjY2LTEuMzUgMy40NS0yLjU3Ljk2LTEuNTEgMS42OC0zLjE2IDIuMjgtNC44NS43Ni0yLjEzLjQ0LTQuNDIuNTQtNi42My4xNC00LjAzLS4wMi04LjA2LjE0LTEyLjA5LjAzLTUuODkuMDMtMTEuNzcuMDYtMTcuNjYuMTQtMy42Mi4wMy03LjI0LjExLTEwLjg2LjE1LTQuMDMtLjAyLTguMDYuMTQtMTIuMDkuMDMtNS45OS4wMy0xMS45OC4wNy0xNy45Ny4xNC0zLjYyLjAyLTcuMjQuMTEtMTAuODYuMTQtMy45My0uMDItNy44Ni4xNC0xMS43OC4wMy01Ljk5LjAzLTExLjk4LjA2LTE3Ljk3LjE2LTMuOTQtLjAxLTcuODguMTktMTEuODIuMjkgMS40NC4xMyAyLjkyLjIyIDQuMzguMTkgMy42MS40MiA3LjIzLjc2IDEwLjg0LjMyIDMuNDQuNDQgNi44OS44NiAxMC4zMi4zNyAzLjEuNTEgNi4yMi45NSA5LjMxLjU3IDQuMDkuODcgOC4yMSAxLjU0IDEyLjI5IDEuNDYgOS4wNCAyLjgzIDE4LjExIDUuMDkgMjYuOTkgMS4xMyA0LjgyIDIuNCA5LjYxIDQgMTQuMyAyLjU0IDcuOSA1LjcyIDE1LjY3IDEwLjMxIDIyLjYyIDEuNzMgMi42NCAzLjg3IDQuOTggNi4xIDcuMjEuMjcuMjUuNTUuNTEuODguNzEuNi4yNSAxLjMxLS4wNyAxLjctLjU3LjcxLS44OCAxLjE3LTEuOTQgMS43LTIuOTMgNC4wNS03LjggOC4xOC0xNS41NiAxMi4zNC0yMy4zMS43LTEuMzEgMS40NC0yLjYyIDIuNTYtMy42MSAxLjc1LTEuNTcgMy44NC0yLjY5IDUuOTgtMy42MyAyLjg4LTEuMjIgNS45LTIuMTkgOS4wMy0yLjQyIDYuNTgtLjYyIDEzLjExLjc1IDE5LjU2IDEuODUgMy42OS41OCA3LjQgMS4xNyAxMS4xMyAxLjQxIDMuNzQuMSA3LjQ4LjA1IDExLjIxLS4yOCA4LjU1LS45MiAxNi45OS0yLjk2IDI0Ljk0LTYuMjUgNS4zLTIuMjQgMTAuNDYtNC44MyAxNS4zMS03LjkzIDExLjQ2LTcuMjEgMjEuNDYtMTYuNTcgMzAuMDQtMjcuMDEgMS4xNy0xLjQyIDIuMjUtMi45IDMuNDYtNC4yOC0xLjIgMy4yNC0yLjY3IDYuMzctNC4xNiA5LjQ4LTEuMjUgMi45LTIuODQgNS42MS00LjI3IDguNDItNS4xNiA5LjYzLTExLjAyIDE4LjkxLTE3Ljc1IDI3LjUyLTQuMDMgNS4yMS04LjUzIDEwLjA1LTEzLjMzIDE0LjU3LTYuNjQgNi4wNS0xNC4wNyAxMS4zNy0yMi40MyAxNC43Ni04LjIxIDMuMzctMTcuMzEgNC42My0yNi4wOSAzLjI5LTMuNTYtLjU4LTcuMDEtMS42OS0xMC40MS0yLjg4LTIuNzktLjk3LTUuMzktMi4zOC04LjAzLTMuNjktMy40My0xLjcxLTYuNjQtMy44MS05LjcxLTYuMDggMi43MSAzLjA2IDUuNjkgNS44NiA4LjcgOC42MSA0LjI3IDMuNzYgOC43NCA3LjMxIDEzLjYzIDEwLjIzIDMuOTggMi40NSA4LjI5IDQuNCAxMi44NCA1LjUxIDEuNDYuMzcgMi45Ni40NiA0LjQ1LjYtMS4yNSAxLjEtMi42MyAyLjA0LTMuOTkgMi45OC05LjYxIDYuNTQtMjAuMDEgMTEuODYtMzAuNjkgMTYuNDMtMjAuODYgOC43LTQzLjE3IDEzLjk3LTY1Ljc0IDE1LjM0LTQuNjYuMjQtOS4zMi4zNi0xMy45OC4zNi00Ljk4LS4xMS05Ljk3LS4xMy0xNC45Mi0uNjUtMTEuMi0uNzYtMjIuMjktMi43My0zMy4xNy01LjQzLTEwLjM1LTIuNzEtMjAuNTUtNi4xMi0zMC4zLTEwLjU1LTguNzEtMy44Ni0xNy4xMi04LjQyLTI0Ljk5LTEzLjc5LTEuODMtMS4zMS0zLjc0LTIuNTMtNS4zNy00LjA4IDYuNi0xLjE5IDEzLjAzLTMuMzkgMTguOTktNi40OCA1Ljc0LTIuODYgMTAuOTktNi42NiAxNS42My0xMS4wNyAyLjI0LTIuMTkgNC4yOS00LjU5IDYuMTktNy4wOS0zLjQzIDIuMTMtNi45MyA0LjE1LTEwLjYyIDUuNzgtNC40MSAyLjE2LTkuMDcgMy43Ny0xMy44MSA1LjAyLTUuNzMgMS41Mi0xMS43NCAxLjczLTE3LjYxIDEuMTQtOC4xMy0uOTUtMTUuODYtNC4yNy0yMi41MS04Ljk4LTQuMzItMi45NC04LjIyLTYuNDMtMTEuOTYtMTAuMDYtOS45My0xMC4xNi0xOC4yLTIxLjgxLTI1LjY2LTMzLjg2LTMuOTQtNi4yNy03LjUzLTEyLjc1LTExLjEyLTE5LjIyLTEuMDUtMi4wNC0yLjE1LTQuMDUtMy4xOC02LjEgMi44NSAyLjkyIDUuNTcgNS45NyA4LjQzIDguODggOC45OSA4Ljk3IDE4LjU2IDE3LjQ0IDI5LjE2IDI0LjQ4IDcuNTUgNC45IDE1LjY3IDkuMjMgMjQuNTYgMTEuMDMgMy4xMS43MyA2LjMyLjQ3IDkuNDcuODEgMi43Ny4yOCA1LjU2LjIgOC4zNC4zIDUuMDUuMDYgMTAuMTEuMDQgMTUuMTYtLjE2IDMuNjUtLjE2IDcuMjctLjY2IDEwLjg5LTEuMDkgMi4wNy0uMjUgNC4xMS0uNzEgNi4xNC0xLjIgMy44OC0uOTUgOC4xMS0uOTYgMTEuODMuNjEgNC43NiAxLjg1IDguNDQgNS42NCAxMS4zOCA5LjcxIDIuMTYgMy4wMiA0LjA2IDYuMjIgNS42NiA5LjU4IDEuMTYgMi40MyAyLjQ2IDQuNzkgMy41NSA3LjI2IDEgMi4yNCAyLjE1IDQuNDIgMy40MiA2LjUyLjY3IDEuMDIgMS40IDIuMTUgMi42MiAyLjU1IDEuMDYtLjc1IDEuNzEtMS45MSAyLjI4LTMuMDMgMi4xLTQuMTYgMy40Mi04LjY1IDQuODktMTMuMDUgMi4wMi02LjU5IDMuNzgtMTMuMjcgNS4xOS0yMC4wMiAyLjIxLTkuMjUgMy4yNS0xOC43MiA0LjU0LTI4LjEzLjU2LTMuOTguODMtNy45OSAxLjMxLTExLjk3Ljg3LTEwLjY0IDEuOS0yMS4yNyAyLjI0LTMxLjk0LjA4LTEuODYuMjQtMy43MS4yNS01LjU3LjAxLTQuMzUuMjUtOC42OS4yMi0xMy4wMy0uMDEtMi4zOC0uMDEtNC43NiAwLTcuMTMuMDUtNS4wNy0uMi0xMC4xNC0uMjItMTUuMjEtLjItNi42MS0uNzEtMTMuMi0xLjI5LTE5Ljc4LS43My01Ljg4LTEuNTUtMTEuNzgtMy4xMi0xNy41MS0yLjA1LTcuNzUtNS41OS0xNS4wMy05LjgtMjEuODItMy4xNi01LjA3LTYuNzktOS44OC0xMS4wOS0xNC4wMy0zLjg4LTMuODYtOC41OC03LjA4LTEzLjk0LTguNDUtMS41LS40MS0zLjA2LS40NS00LjU5LS42NC4wNy0yLjk5LjctNS45MyAxLjI2LTguODUgMS41OS03LjcxIDMuOC0xNS4zIDYuNzYtMjIuNiAxLjUyLTQuMDMgMy40MS03LjkgNS4zOS0xMS43MiAzLjQ1LTYuNTYgNy42Mi0xMi43OSAxMi40Ni0xOC40NnptMzEuMjcgMS43Yy4zNS0uMDYuNzEtLjEyIDEuMDctLjE5LjE5IDEuNzkuMDkgMy41OC4xIDUuMzd2MzguMTNjLS4wMSAxLjc0LjEzIDMuNDktLjE1IDUuMjItLjM2LS4wMy0uNzEtLjA1LTEuMDYtLjA1LS45NS0zLjc1LTEuNzItNy41NS0yLjYyLTExLjMxLS4zOC0xLjUzLS41OC0zLjA5LTEuMDctNC41OS0xLjctLjI0LTMuNDMtLjE3LTUuMTUtLjItNS4wNi0uMDEtMTAuMTMgMC0xNS4xOS0uMDEtMS42Ni0uMDEtMy4zMi4wOS00Ljk4LS4wMy0uMDMtLjM5LS4yNi0uOTEuMTYtMS4xOCAxLjI4LS42NSAyLjcyLS44OCA0LjA2LTEuMzUgMy40My0xLjE0IDYuODgtMi4xNiAxMC4zMS0zLjMxIDEuMzktLjQ4IDIuOS0uNzIgNC4xNi0xLjU0LjA0LS41Ni4wMi0xLjEzLS4wNS0xLjY4LTEuMjMtLjU1LTIuNTMtLjg3LTMuODEtMS4yOC0zLjEzLTEuMDMtNi4yOS0xLjk2LTkuNDEtMy4wMi0xLjc5LS42Mi0zLjY3LTEtNS40MS0xLjc5LS4wMy0uMzctLjA3LS43My0uMTEtMS4wOSA1LjA5LS4xOSAxMC4yLjA2IDE1LjMtLjEyIDMuMzYtLjEzIDYuNzMuMDggMTAuMDktLjA3LjEyLS4zOS4yNi0uNzcuMzctMS4xNiAxLjA4LTQuOTQgMi4zMy05LjgzIDMuMzktMTQuNzV6bTUuOTctLjJjLjM2LjA1LjcyLjEyIDEuMDguMi45OCAzLjg1IDEuNzMgNy43NiAyLjcxIDExLjYxLjM2IDEuNDIuNTYgMi44OCAxLjAzIDQuMjcgMi41My4xOCA1LjA3LS4wMSA3LjYxLjA1IDUuMTYuMTIgMTAuMzMuMTIgMTUuNDkuMDcuNzYtLjAxIDEuNTIuMDMgMi4yOC4wOC0uMDQuMzYtLjA3LjcyLS4xIDEuMDgtMS44Mi44My0zLjc4IDEuMjUtNS42NyAxLjg5LTMuNzMgMS4yMy03LjQ4IDIuMzktMTEuMjIgMy41Ny0uNTcuMTctMS4xMi40Mi0xLjY3LjY0LS4xNS41NS0uMTggMS4xMi0uMTIgMS42OS44Ny40OCAxLjgyLjgxIDIuNzcgMS4wOSA0Ljg4IDEuNTIgOS43MyAzLjE0IDE0LjYzIDQuNi4zOC4xMy43OC4yNyAxLjEzLjQ5LjQuMjcuMjMuNzkuMTUgMS4xOC0xLjY2LjEzLTMuMzEuMDMtNC45Ny4wNC01LjE3LjAxLTEwLjMzLS4wMS0xNS41LjAxLTEuNjEuMDMtMy4yMi0uMDItNC44Mi4yMS0uNTIgMS42Ny0uNzIgMy40Mi0xLjE3IDUuMTEtLjk0IDMuNTctMS41MiA3LjI0LTIuNTQgMTAuNzgtLjM2LjAxLS43MS4wMi0xLjA2LjA2LS4yOS0xLjczLS4xNS0zLjQ4LS4xNS01LjIydi0zOC4xM2MuMDItMS43OC0uMDgtMy41OC4xMS01LjM3ek02NS4wNSAxNjguMzNjMS4xMi0yLjE1IDIuMDgtNC40IDMuMzctNi40Ni0xLjgyIDcuNTYtMi45MSAxNS4yNy0zLjYyIDIzLS44IDcuNzEtLjg1IDE1LjQ5LS41NCAyMy4yMyAxLjA1IDE5Ljk0IDUuNTQgMzkuODMgMTQuMjMgNTcuODggMi45OSA1Ljk5IDYuMzUgMTEuODMgMTAuNSAxNy4xMSA2LjEyIDcuNDcgMTIuNTMgMTQuNzYgMTkuODQgMjEuMDkgNC44IDQuMSA5Ljk5IDcuNzggMTUuNTQgMTAuOCAzLjI3IDEuNjUgNi41MSAzLjM5IDkuOTQgNC42OCA1LjAxIDIuMDMgMTAuMTkgMy42MSAxNS40MiA0Ljk0IDMuODMuOTYgNy43OCAxLjQxIDExLjUyIDIuNzEgNSAxLjU3IDkuNDcgNC42MSAxMy4wMyA4LjQzIDQuOTMgNS4yMyA4LjA5IDExLjg3IDEwLjIgMTguNjcuOTkgMi45IDEuNTkgNS45MSAyLjE3IDguOTIuMTUuNzUuMjIgMS41Mi4xNiAyLjI5LTYuNSAyLjc4LTEzLjI2IDUuMDYtMjAuMjYgNi4xOC00LjExLjc4LTguMjkuOTktMTIuNDYgMS4wOC0xMC4yNS4yNC0yMC40Ny0xLjc2LTMwLjEyLTUuMTItMy43NC0xLjQyLTcuNDktMi44NS0xMS4wMy00LjcyLTguMDYtMy44NC0xNS42NC04LjctMjIuNDYtMTQuNDYtMi45Mi0yLjU1LTUuODMtNS4xMy04LjQtOC4wMy05LjE2LTkuODMtMTYuMy0yMS40MS0yMS43OS0zMy42NS0yLjM5LTUuNTUtNC42MS0xMS4xOC02LjM3LTE2Ljk2LTEuMTctMy45NC0yLjM2LTcuODktMy4yNi0xMS45MS0uNzUtMi45NC0xLjIyLTUuOTUtMS44Ny04LjkyLS40Ni0yLjE0LS42OS00LjMyLTEuMDMtNi40OC0uODUtNS40My0xLjI4LTEwLjkzLTEuMzMtMTYuNDMuMTEtNi4xOC4yNS0xMi4zNyAxLjA3LTE4LjUuNC0yLjg2LjY3LTUuNzQgMS4xNS04LjYuOTgtNS43IDIuMTQtMTEuMzcgMy43MS0xNi45MyAzLjA5LTExLjY1IDcuNDgtMjIuOTUgMTIuNjktMzMuODR6bTM2My43My02LjQ0YzEuMSAxLjY2IDEuOTEgMy40OCAyLjc4IDUuMjYgMi4xIDQuNDUgNC4yNCA4LjkgNi4wMiAxMy40OSA3LjYxIDE4Ljc2IDEyLjMgMzguNzkgMTMuMDQgNTkuMDUuMDIgMS43Ni4wNyAzLjUyLjExIDUuMjkuMTMgOS41Ny0xLjI3IDE5LjA5LTMuMTggMjguNDUtLjczIDMuNTktMS41NCA3LjE3LTIuNTggMTAuNjktNC4wNCAxNC43Mi0xMCAyOS0xOC40MSA0MS43OC04LjIxIDEyLjU3LTE5LjAxIDIzLjU1LTMxLjg0IDMxLjQxLTUuNzMgMy41OS0xMS43OSA2LjY0LTE4LjA1IDkuMTktNS43OCAyLjE5LTExLjcxIDQuMDMtMTcuOCA1LjExLTYuNCAxLjA1LTEyLjkxIDEuNTItMTkuNCAxLjIzLTcuOTItLjQ4LTE1Ljc4LTIuMDctMjMuMjEtNC44NS0xLjk0LS44LTMuOTQtMS40Ni01Ljg0LTIuMzMtLjIxLTEuNTEuMjUtMi45OS41My00LjQ2IDEuMTYtNS43NCAzLjAzLTExLjM2IDUuNy0xNi41OCAyLjM3LTQuNTEgNS41Mi04LjY1IDkuNDYtMTEuOSAyLjQzLTIuMDUgNS4yNC0zLjYxIDguMTYtNC44MyAzLjU4LTEuNSA3LjQ3LTEuOTcgMTEuMjQtMi44MyA3LjIzLTEuNzEgMTQuMzctMy45MyAyMS4xNS03IDEwLjM1LTQuNjUgMTkuNzEtMTEuMzggMjcuNjUtMTkuNDYgMS41OS0xLjYxIDMuMjMtMy4xOCA0Ljc0LTQuODcgMy4zNy0zLjc2IDYuNzEtNy41NyA5Ljg1LTExLjUzIDcuNDgtMTAuMDcgMTIuODItMjEuNTkgMTYuNzEtMzMuNDggMS41OC01LjMgMy4yMS0xMC42IDQuMjEtMTYuMDUuNjMtMi44NyAxLjA0LTUuNzggMS41Mi04LjY4Ljg3LTYuMDkgMS41OS0xMi4yMiAxLjY4LTE4LjM4LjEyLTYuNjUuMTQtMTMuMzItLjUzLTE5Ljk0LS43My03Ljk5LTEuODctMTUuOTYtMy43MS0yMy43OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3BlbmNhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIzLjMgNDQwLjdjMCAyNS4zLTIwLjMgNDUuNi00NS42IDQ1LjZzLTQ1LjgtMjAuMy00NS44LTQ1LjYgMjAuNi00NS44IDQ1LjgtNDUuOGMyNS40IDAgNDUuNiAyMC41IDQ1LjYgNDUuOHptLTI1My45LTQ1LjhjLTI1LjMgMC00NS42IDIwLjYtNDUuNiA0NS44czIwLjMgNDUuNiA0NS42IDQ1LjYgNDUuOC0yMC4zIDQ1LjgtNDUuNi0yMC41LTQ1LjgtNDUuOC00NS44em0yOTEuNy0yNzBDMTU4LjkgMTI0LjkgODEuOSAxMTIuMSAwIDI1LjdjMzQuNCA1MS43IDUzLjMgMTQ4LjkgMzczLjEgMTQ0LjIgMzMzLjMtNSAxMzAgODYuMSA3MC44IDE4OC45IDE4Ni43LTE2Ni43IDMxOS40LTIzMy45IDE3LjItMjMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZW5pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzEuNSA0MzJsLTY4IDMyQzg4LjUgNDUzLjcgMCAzOTIuNSAwIDMxOC4yYzAtNzEuNSA4Mi41LTEzMSAxOTEuNy0xNDQuM3Y0M2MtNzEuNSAxMi41LTEyNCA1My0xMjQgMTAxLjMgMCA1MSA1OC41IDkzLjMgMTM1LjcgMTAzdi0zNDBsNjgtMzMuMnYzODR6TTQ0OCAyOTFsLTEzMS4zLTI4LjUgMzYuOC0yMC43Yy0xOS41LTExLjUtNDMuNS0yMC03MC0yNC44di00M2M0Ni4yIDUuNSA4Ny43IDE5LjUgMTIwLjMgMzkuM2wzNS0xOS44TDQ0OCAyOTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZW5zdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS4xIDEwMi43cy0uMyAxOC4zLS4zIDIwLjNjLTkuMS0zLTc0LjQtMjQuMS0xMzUuNy0yNi4zYy01MS45LTEuOC0xMjIuOC00LjMtMjIzIDU3LjNjLTE5LjQgMTIuNC03My45IDQ2LjEtOTkuNiAxMDkuN0M3IDI3Ny0uMSAzMDcgNyAzMzUuMWMzLjMgMTIuOCA4LjkgMjQuOSAxNi41IDM1LjdjMTcuNCAyNSA0Ni42IDQxLjYgNzguMSA0NC40YzQ0LjQgMy45IDc4LjEtMTYgOTAtNTMuM2M4LjItMjUuOCAwLTYzLjYtMzEuNS04Mi45Yy0yNS42LTE1LjctNTMuMy0xMi4xLTY5LjItMS42Yy0xMy45IDkuMi0yMS44IDIzLjUtMjEuNiAzOS4yYy4zIDI3LjggMjQuMyA0Mi42IDQxLjUgNDIuNmM1LjQgMCAxMC43LS45IDE1LjgtMi43YzYuNS0xLjggMTMuMy02LjUgMTMuMy0xNC45YzAtMTIuMS0xMS42LTE0LjgtMTYuOC0xMy45Yy0yLjkgLjUtNC41IDItMTEuOCAyLjRjLTItLjItMTItMy4xLTEyLTE0VjMxNmMuMi0xMi4zIDEzLjItMTggMjUuNS0xNi45YzMyLjMgMi44IDQ3LjcgNDAuNyAyOC41IDY1LjdDMTM1IDM4OC41IDc2LjcgMzg4IDUzLjYgMzQ0LjRjLTI2LTQ5LjIgMTIuNy0xMTEuMiA4Ny05OC40YzMzLjIgNS43IDgzLjYgMzUuNSAxMDIuNCAxMDQuM2g0NS45Yy01LjctMTcuNi04LjktNjguMyA0Mi43LTY4LjNjNTYuNyAwIDYzLjkgMzkuOSA3OS44IDY4LjNINDYwYy0xMi44LTE4LjMtMjEuNy0zOC43LTE4LjktNTUuOGM1LjYtMzMuOCAzOS43LTE4LjQgODIuNC0xNy40YzY2LjUgLjQgMTAyLjEtMjcgMTAzLjEtMjhjMy43LTMuMSA2LjUtMTUuOCA3LTE3LjdjMS4zLTUuMS0zLjItMi40LTMuMi0yLjRjLTguNyA1LjItMzAuNSAxNS4yLTUwLjkgMTUuNmMtMjUuMyAuNS03Ni4yLTI1LjQtODEuNi0yOC4yYy0uMy0uNCAuMSAxLjItMTEtMjUuNWM4OC40IDU4LjMgMTE4LjMgNDAuNSAxNDUuMiAyMS43Yy44LS42IDQuMy0yLjkgMy42LTUuN2MtMTMuOC00OC4xLTIyLjQtNjIuNy0zNC41LTY5LjZjLTM3LTIxLjYtMTI1LTM0LjctMTI5LjItMzUuM2MuMS0uMS0uOS0uMy0uOSAuN2wwIDB6bTEzNS42IDc1LjRhMzcuNiAzNy42IDAgMSAxIC03NS4yLTIuNiAzNy42IDM3LjYgMCAxIDEgNzUuMiAyLjZ6bS0zNi42LTI3LjlhMjYuMyAyNi4zIDAgMSAwIC0xLjcgNTIuNSAyNi4zIDI2LjMgMCAxIDAgMS43LTUyLjV6bTQuMyAyOC44Yy0xNS40IDAtMTUuNC0xNS42IDAtMTUuNnMxNS40IDE1LjYgMCAxNS42djB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy45IDMyLjdjLTE3MC4yIDAtMjUyLjYgMjIzLjgtMTQ3LjUgMzU1LjEgMzYuNSA0NS40IDg4LjYgNzUuNiAxNDcuNSA3NS42IDM2LjMgMCA3MC4zLTExLjEgOTkuNC0zMC40LTQzLjggMzkuMi0xMDEuOSA2My0xNjUuMyA2My0zLjkgMC04IDAtMTEuOS0uM0MxMDQuNiA0ODkuNiAwIDM4MS4xIDAgMjQ4IDAgMTExIDExMSAwIDI0OCAwaC44YzYzLjEuMyAxMjAuNyAyNC4xIDE2NC40IDYzLjEtMjktMTkuNC02My4xLTMwLjQtOTkuMy0zMC40em0xMDEuOCAzOTcuN2MtNDAuOSAyNC43LTkwLjcgMjMuNi0xMzItNS44IDU2LjItMjAuNSA5Ny43LTkxLjYgOTcuNy0xNzYuNiAwLTg0LjctNDEuMi0xNTUuOC05Ny40LTE3Ni42IDQxLjgtMjkuMiA5MS4yLTMwLjMgMTMyLjktNSAxMDUuOSA5OC43IDEwNS41IDI2NS43LTEuMiAzNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wdGluTW9uc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzIuNiA0MjEuNGM1LjYtOS41IDQuNy0xNS4yLTUuNC0xMS42LTMtNC45LTctOS41LTExLjEtMTMuOCAyLjktOS43LS43LTE0LjItMTAuOC05LjItNC42LTMuMi0xMC4zLTYuNS0xNS45LTkuMiAwLTE1LjEtMTEuNi0xMS42LTE3LjYtNS43LTEwLjQtMS41LTE4LjctLjMtMjYuOCA1LjcuMy02LjUuMy0xMyAuMy0xOS43IDEyLjYgMCA0MC4yLTExIDQ1LjktMzYuMiAxLjQtNi44IDEuNi0xMy44LS4zLTIxLjktMy0xMy41LTE0LjMtMjEuMy0yNS4xLTI1LjctLjgtNS45LTcuNi0xNC4zLTE0LjktMTUuOXMtMTIuNCA0LjktMTQuMSAxMC4zYy04LjUgMC0xOS4yIDIuOC0yMS4xIDguNC01LjQtLjUtMTEuMS0xLjQtMTYuOC0xLjkgMi43LTEuOSA1LjQtMy41IDguNC00LjYgNS40LTkuMiAxNC42LTExLjQgMjUuNy0xMS42VjI1NmMxOS41LS41IDQzLTUuOSA1My44LTE4LjEgMTIuNy0xMy44IDE0LjYtMzcuMyAxMi40LTU1LjEtMi40LTE3LjMtOS43LTM3LjYtMjQuNi00OC4xLTguNC01LjktMjEuNi0uOC0yMi43IDkuNS0yLjIgMTkuNiAxLjIgMzAtMzguNiAyNS4xLTEwLjMtMjMuOC0yNC42LTQ0LjYtNDIuNy02MEMzNDEgNDkuNiAyNDIuOSA1NS41IDE2Ni40IDcxLjdjMTkuNyA0LjYgNDEuMSA4LjYgNTkuNyAxNi41LTI2LjIgMi40LTUyLjcgMTEuMy03Ni4yIDIzLjItMzIuOCAxNy00NCAyOS45LTU2LjcgNDIuNCAxNC45LTIuMiAyOC45LTUuMSA0My44LTMuOC05LjcgNS40LTE4LjQgMTIuMi0yNi41IDIwLTI1LjguOS0yMy44LTUuMy0yNi4yLTI1LjktMS4xLTEwLjUtMTQuMy0xNS40LTIyLjctOS43LTI4LjEgMTkuOS0zMy41IDc5LjktMTIuMiAxMDMuNSAxMC44IDEyLjIgMzUuMSAxNy4zIDU0LjkgMTcuOC0uMyAxLjEtLjMgMS45LS4zIDIuNyAxMC44LjUgMTkuNSAyLjcgMjQuNiAxMS42IDMgMS4xIDUuNyAyLjcgOC4xIDQuNi01LjQuNS0xMS4xIDEuNC0xNi41IDEuOS0zLjMtNi42LTEzLjctOC4xLTIxLjEtOC4xLTEuNi01LjctNi41LTEyLjItMTQuMS0xMC4zLTYuOCAxLjktMTQuMSAxMC0xNC45IDE1LjktMjIuNSA5LjUtMzAuMSAyNi44LTI1LjEgNDcuNiA1LjMgMjQuOCAzMyAzNi4yIDQ1LjkgMzYuMnYxOS43Yy02LjYtNS0xNC4zLTcuNS0yNi44LTUuNy01LjUtNS41LTE3LjMtMTAuMS0xNy4zIDUuNy01LjkgMi43LTExLjQgNS45LTE1LjkgOS4yLTkuOC00LjktMTMuNi0xLjctMTEuMSA5LjItNC4xIDQuMy03LjggOC42LTExLjEgMTMuOC0xMC4yLTMuNy0xMSAyLjItNS40IDExLjYtMS4xIDMuNS0xLjYgNy0xLjkgMTAuOC0uNSAzMS42IDQ0LjYgNjQgNzMuNSA2NS4xIDE3LjMuNSAzNC42LTguNCA0My0yMy41IDExMy4yIDQuOSAyMjYuNyA0LjEgMzQwLjIgMCA4LjEgMTUuMSAyNS40IDI0LjMgNDIuNyAyMy41IDI5LjItMS4xIDc0LjMtMzMuNSA3My41LTY1LjEuMi0zLjctLjctNy4yLTEuNy0xMC43em0tNzMuOC0yNTRjMS4xLTMgMi40LTguNCAyLjQtMTQuNiAwLTUuOSA2LjgtOC4xIDE0LjEtLjggMTEuMSAxMS42IDE0LjkgNDAuNSAxMy44IDUxLjEtNC4xLTEzLjYtMTMtMjktMzAuMy0zNS43em0tNC42IDYuN2MxOS41IDYuMiAyOC42IDI3LjYgMjkuNyA0OC45LTEuMSAyLjctMyA1LjQtNC45IDcuNi01LjcgNS45LTE1LjQgMTAtMjYuMiAxMi4yIDQuMy0yMS4zLjMtNDcuMy0xMi43LTYzIDQuOS0uOCAxMC45LTIuNCAxNC4xLTUuN3ptLTI0LjEgNi44YzEzLjggMTEuOSAyMCAzOS4yIDE0LjEgNjMuNS00LjEuNS04LjEuOC0xMS42LjgtMS45LTIxLjktNi44LTQ0LTE0LjMtNjQuNiAzLjcuMyA4LjEuMyAxMS44LjN6TTQ3LjUgMjAzYy0xLjEtMTAuNSAyLjQtMzkuNSAxMy44LTUxLjEgNy03LjMgMTQuMS01LjEgMTQuMS44IDAgNi4yIDEuNCAxMS42IDIuNCAxNC42LTE3LjMgNi44LTI2LjIgMjIuMi0zMC4zIDM1Ljd6bTkuNyAyNy42Yy0xLjktMi4yLTMuNS00LjktNC45LTcuNiAxLjQtMjEuMyAxMC4zLTQyLjcgMjkuNy00OC45IDMuMiAzLjIgOS4yIDQuOSAxNC4xIDUuNy0xMyAxNS43LTE3IDQxLjYtMTIuNyA2My0xMC44LTIuMi0yMC41LTYtMjYuMi0xMi4yem00Ny45IDE0LjZjLTQuMSAwLTguMS0uMy0xMi43LS44LTQuNi0xOC42LTEuOS0zOC45IDUuNC01M3YuM2wxMi4yLTUuMWM0LjktMS45IDkuNy0zLjggMTQuOS00LjktMTAuNyAxOS43LTE3LjQgNDEuMy0xOS44IDYzLjV6bTE4NC0xNjIuN2M0MS45IDAgNzYuMiAzNCA3Ni4yIDc1LjkgMCA0Mi4yLTM0LjMgNzYuMi03Ni4yIDc2LjJzLTc2LjItMzQtNzYuMi03Ni4yYzAtNDEuOCAzNC4zLTc1LjkgNzYuMi03NS45em0xMTUuNiAxNzQuM2MtLjMgMTcuOC03IDQ4LjktMjMgNTctMTMuMiA2LjYtNi41LTcuNS0xNi41LTU4LjEgMTMuMy4zIDI2LjYuMyAzOS41IDEuMXptLTU0LTEuNmMuOCA0LjkgMy44IDQwLjMtMS42IDQxLjktMTEuNiAzLjUtNDAgNC4zLTUxLjEtMS4xLTQuMS0zLTQuNi0zNS45LTQuMy00MS4xdi4zYzE4LjktLjMgMzguMS0uMyA1NyAwek0yNzguMyAzMDljLTEzIDMuNS00MS42IDQuMS01NC42LTEuNi02LjUtMi43LTMuOC00Mi40LTEuOS01MS42IDE5LjItLjUgMzguNC0uNSA1Ny44LS44di4zYzEuMSA4LjMgMy4zIDUxLjItMS4zIDUzLjd6bS0xMDYuNS01MS4xYzEyLjItLjggMjQuNi0xLjQgMzYuOC0xLjYtMi40IDE1LjQtMyA0My41LTQuOSA1Mi4yLTEuMSA2LjgtNC4zIDYuOC05LjcgNC4zLTIxLjktOS44LTI3LjYtMzUuMi0yMi4yLTU0Ljl6bS0zNS40IDMxLjNjNy44LTEuMSAxNS43LTEuOSAyMy41LTIuNyAxLjYgNi4yIDMuOCAxMS45IDcgMTcuNiAxMCAxNyA0NCAzNS43IDQ1LjEgNyA2LjIgMTQuOSA0MC44IDEyLjIgNTQuOSAxMC44IDE1LjctMS40IDIzLjgtMS40IDI2LjgtMTQuMyAxMi40IDQuMyAzMC44IDQuMSA0NCAzIDExLjMtLjggMjAuOC0uNSAyNC42LTguOSAxLjEgNS4xIDEuOSAxMS42IDQuNiAxNi44IDEwLjggMjEuMyAzNy4zIDEuNCA0Ni44LTMxLjYgOC42LjggMTcuNiAxLjkgMjYuNSAyLjctLjQgMS4zLTMuOCA3LjMgNy4zIDExLjYtNDcuNiA0Ny05NS43IDg3LjgtMTYzLjIgMTA3LTYzLjItMjAuOC0xMTIuMS01OS41LTE1NS45LTEwNi41IDkuNi0zLjQgMTAuNC04LjggOC0xMi41em0tMjEuNiAxNzIuNWMtMy44IDE3LjgtMjEuOSAyOS43LTM5LjcgMjguOS0xOS4yLS44LTQ2LjUtMTctNTkuMi0zNi41LTIuNy0zMS4xIDQzLjgtNjEuMyA2Ni4yLTU0LjYgMTQuOSA0LjMgMjcuOCAzMC44IDMzLjUgNTQgMCAzLS4zIDUuNy0uOCA4LjJ6bS04LjctNjZjLS41LTEzLjUtLjUtMjctLjMtNDAuNWguM2MyLjctMS42IDUuNy0zLjggNy44LTYuNSA2LjUtMS42IDEzLTUuMSAxNS4xLTkuMiAzLjMtNy4xLTctNy41LTUuNC0xMi40IDIuNy0xLjEgNS43LTIuMiA3LjgtMy41IDI5LjIgMjkuMiA1OC42IDU2LjUgOTcuMyA3Ny0zNi44IDExLjMtNzIuNCAyNy42LTEwNS45IDQ3LTEuMi0xOC42LTcuNy0zNS45LTE2LjctNTEuOXptMzM3LjYgNjQuNmMtMTAzIDMuNS0yMDYuMiA0LjEtMzA5LjQgMCAwIC4zIDAgLjMtLjMuM3YtLjNoLjNjMzUuMS0yMS42IDcyLjItMzkuMiAxMTIuNC01MC44IDExLjYgNS4xIDIzIDkuNSAzNC45IDEzLjIgMi4yLjggMi4yLjggNC4zIDAgMTQuMy00LjEgMjguNC05LjIgNDIuMi0xNS40IDQxLjUgMTEuNyA3OC44IDMxLjcgMTE1LjYgNTN6bTEwLjUtMTIuNGMtMzUuOS0xOS41LTczLTM1LjktMTExLjktNDcuNiAzOC4xLTIwIDcxLjktNDcuMyAxMDMuNS03Ni43IDIuMiAxLjQgNC42IDIuNCA3LjYgMy4yIDAgLjguMyAxLjkuNSAyLjQtNC42IDIuNy03LjggNi4yLTUuOSAxMC4zIDIuMiAzLjggOC42IDcuNiAxNS4xIDguOSAyLjQgMi43IDUuMSA1LjEgOC4xIDYuOCAwIDEzLjgtLjMgMjcuNi0uOCA0MS4zbC4zLS4zYy05LjMgMTUuOS0xNS41IDM3LTE2LjUgNTEuN3ptMTA1LjkgNi4yYy0xMi43IDE5LjUtNDAgMzUuNy01OS4yIDM2LjUtMTkuMy45LTQwLjUtMTMuMi00MC41LTM3IDUuNy0yMy4yIDE4LjktNDkuNyAzMy41LTU0IDIyLjctNi45IDY5LjIgMjMuNCA2Ni4yIDU0LjV6TTM3Mi45IDc1LjJjLTMuOC03Mi4xLTEwMC44LTc5LjctMTI2LTIzLjUgNDQuNi0yNC4zIDkwLjMtMTUuNyAxMjYgMjMuNXpNNzQuOCA0MDcuMWMtMTUuNyAxLjYtNDkuNSAyNS40LTQ5LjUgNDMuMiAwIDExLjYgMTUuNyAxOS41IDMyLjIgMTQuOSAxMi4yLTMuMiAzMS4xLTE3LjYgMzUuOS0yNy4zIDYtMTEuNi0zLjctMzIuNy0xOC42LTMwLjh6bTIxNS45LTE3Ni4yYzI4LjYgMCA1MS45LTIxLjYgNTEuOS00OC40IDAtMzYuMS00MC41LTU4LjEtNzIuMi00NC4zIDkuNSAzIDE2LjUgMTEuNiAxNi41IDIxLjYgMCAyMy4zLTMzLjMgMzItNDYuNSAxMS4zLTcuMyAzNC4xIDE5LjQgNTkuOCA1MC4zIDU5Ljh6TTY4IDQ3NC4xYy41IDYuNSAxMi4yIDEyLjcgMjEuNiA5LjUgNi44LTIuNyAxNC42LTEwLjUgMTcuMy0xNi4yIDMtNy0xLjEtMjAtOS43LTE4LjQtOC45IDEuNi0yOS43IDE2LjctMjkuMiAyNS4xem00MzMuMi02N2MtMTQuOS0xLjktMjQuNiAxOS4yLTE4LjkgMzAuOCA0LjkgOS43IDI0LjEgMjQuMSAzNi4yIDI3LjMgMTYuNSA0LjYgMzIuMi0zLjIgMzIuMi0xNC45IDAtMTcuOC0zMy44LTQxLjYtNDkuNS00My4yek00NzguOCA0NDljLTguNC0xLjYtMTIuNCAxMS4zLTkuNSAxOC40IDIuNCA1LjcgMTAuMyAxMy41IDE3LjMgMTYuMiA5LjIgMy4yIDIxLjEtMyAyMS4zLTkuNS45LTguNC0yMC4yLTIzLjUtMjkuMS0yNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcmNpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTQuNzUgMTg4LjE5aC00NS45MlYzNDJoNDcuNDdjNjcuNjIgMCA4My4xMi01MS4zNCA4My4xMi03Ni45MSAwLTQxLjY0LTI2LjU0LTc2LjktODQuNjctNzYuOXpNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptLTgwLjc5IDM2MC43NmgtMjkuODR2LTIwNy41aDI5Ljg0em0tMTQuOTItMjMxLjE0YTE5LjU3IDE5LjU3IDAgMSAxIDE5LjU3LTE5LjU3IDE5LjY0IDE5LjY0IDAgMCAxLTE5LjU3IDE5LjU3ek0zMDAgMzY5aC04MVYxNjEuMjZoODAuNmM3Ni43MyAwIDExMC40NCA1NC44MyAxMTAuNDQgMTAzLjg1QzQxMCAzMTguMzkgMzY4LjM4IDM2OSAzMDAgMzY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPc2kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNjYuNDRDMTAuMyAxMzAuNjQgMTA1LjQgMzQgMjIxLjggMTguMzRjMTM4LjgtMTguNiAyNTUuNiA3NS44IDI3OCAyMDEuMSAyMS4zIDExOC44LTQ0IDIzMC0xNTEuNiAyNzQtOS4zIDMuOC0xNC40IDEuNy0xOC03LjdxLTI2LjctNjkuNDUtNTMuNC0xMzljLTMuMS04LjEtMS0xMy4yIDctMTYuOCAyNC4yLTExIDM5LjMtMjkuNCA0My4zLTU1LjhhNzEuNDcgNzEuNDcgMCAwIDAtNjQuNS04Mi4yYy0zOS0zLjQtNzEuOCAyMy43LTc3LjUgNTkuNy01LjIgMzMgMTEuMSA2My43IDQxLjkgNzcuNyA5LjYgNC40IDExLjUgOC42IDcuOCAxOC40cS0yNi44NSA2OS45LTUzLjcgMTM5LjljLTIuNiA2LjktOC4zIDkuMy0xNS41IDYuNS01Mi42LTIwLjMtMTAxLjQtNjEtMTMwLjgtMTE5LTI0LjktNDkuMi0yNS4yLTg3LjctMjYuOC0xMDguN3ptMjAuOS0xLjljLjQgNi42LjYgMTQuMyAxLjMgMjIuMSA2LjMgNzEuOSA0OS42IDE0My41IDEzMSAxODMuMSAzLjIgMS41IDQuNC44IDUuNi0yLjNxMjIuMzUtNTguNjUgNDUtMTE3LjNjMS4zLTMuMy42LTQuOC0yLjQtNi43LTMxLjYtMTkuOS00Ny4zLTQ4LjUtNDUuNi04NiAxLTIxLjYgOS4zLTQwLjUgMjMuOC01Ni4zIDMwLTMyLjcgNzctMzkuOCAxMTUuNS0xNy42YTkxLjY0IDkxLjY0IDAgMCAxIDQ1LjIgOTAuNGMtMy42IDMwLjYtMTkuMyA1My45LTQ1LjcgNjkuOC0yLjcgMS42LTMuNSAyLjktMi4zIDZxMjIuOCA1OC44IDQ1LjIgMTE3LjdjMS4yIDMuMSAyLjQgMy44IDUuNiAyLjMgMzUuNS0xNi42IDY1LjItNDAuMyA4OC4xLTcyIDM0LjgtNDguMiA0OS4xLTEwMS45IDQyLjMtMTYxLTEzLjctMTE3LjUtMTE5LjQtMjE0LjgtMjU1LjUtMTk4LTEwNi4xIDEzLTE5NS4zIDEwMi41LTE5Ny4xIDIyNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWRsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk3LjkgMEwyOTggLjAwMUMzMDUuNiAuMTA3OCAzMTIuNCA0LjcyIDMxNS41IDExLjc4TDQ0Ny41IDMyMC4zTDQ0Ny44IDMyMC4yTDQ0OCAzMjAuNkw0NDUuMiAzMzAuNkw0MDIuMyA0ODguNkMzOTguNiA1MDQuOCAzODIuNiA1MTQuOSAzNjYuNSA1MTEuMkwyOTguMSA0OTUuNkwyMjkuNiA1MTEuMkMyMTMuNSA1MTQuOSAxOTcuNSA1MDQuOCAxOTMuOCA0ODguNkwxNTAuOSAzMzAuNkwxNDguMiAzMjAuNkwxNDguMyAzMjAuMkwyODAuNCAxMS43OEMyODMuNCA0Ljc5NyAyOTAuMyAuMTgzNyAyOTcuOSAuMDAwNkwyOTcuOSAwek0xNjAuMSAzMjIuMUwyOTEuMSAzNjEuMkwyOTggNDgzLjdMMzA1LjkgMzYyLjJMNDM2LjUgMzIyLjlMNDM2LjcgMzIyLjhMMzA1LjcgMzQ3LjlMMjk3LjEgMjcuNzJMMjkxLjkgMzQ3LjlMMTYwLjEgMzIyLjF6TTQyNiAyMjIuNkw1MjAuNCAxODEuNkg1OTQuMkw0MzcuMiA0MjkuMkw0NjguOCAzMjAuMkw0MjYgMjIyLjZ6TTU5Ny41IDE4MS40TDYzOC45IDI1Ny42QzY0Mi45IDI2NS4xIDYzNSAyNzMuNSA2MjcuMyAyNjkuOEw1NzkuNyAyNDcuMUw1OTcuNSAxODEuNHpNMTI3LjMgMzE4LjVMMTU4LjcgNDMwTDEuNjEgMTU0LjVDLTQuMjkyIDE0NC4xIDcuMTI4IDEzMi41IDE3LjU1IDEzOC4zTDE2OS40IDIyMi41TDEyNy4zIDMxOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWdlNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNTA0QzExMSA1MDQgMCAzOTMgMCAyNTZTMTExIDggMjQ4IDhjMjAuOSAwIDQxLjMgMi42IDYwLjcgNy41TDQyLjMgMzkySDI0OHYxMTJ6bTAtMTQzLjZWMTQ2LjhMOTguNiAzNjAuNEgyNDh6bTk2IDMxLjZ2OTIuN2M0NS43LTE5LjIgODQuNS01MS43IDExMS40LTkyLjdIMzQ0em01Ny40LTEzOC4ybC0yMS4yIDguNCAyMS4yIDguM3YtMTYuN3ptLTIwLjMgNTQuNWMtNi43IDAtOCA2LjMtOCAxMi45djcuN2gxNi4ydi0xMGMwLTUuOS0yLjMtMTAuNi04LjItMTAuNnpNNDk2IDI1NmMwIDM3LjMtOC4yIDcyLjctMjMgMTA0LjRIMzQ0VjI3LjNDNDMzLjMgNjQuOCA0OTYgMTUzLjEgNDk2IDI1NnpNMzYwLjQgMTQzLjZoNjguMlY5NmgtMTMuOXYzMi42aC0xMy45Vjk5aC0xMy45djI5LjZoLTEyLjdWOTZoLTEzLjl2NDcuNnptNjguMSAxODUuM0g0MDJ2LTExYzAtMTUuNC01LjYtMjUuMi0yMC45LTI1LjItMTUuNCAwLTIwLjcgMTAuNi0yMC43IDI1Ljl2MjUuM2g2OC4ydi0xNXptMC0xMDNsLTY4LjIgMjkuN1YyNjhsNjguMiAyOS41di0xNi42bC0xNC40LTUuN3YtMjYuNWwxNC40LTUuOXYtMTYuOXptLTQuOC02OC41aC0zNS42VjE4NEg0MDJ2LTEyLjJoMTFjOC42IDE1LjggMS4zIDM1LjMtMTguNiAzNS4zLTIyLjUgMC0yOC4zLTI1LjMtMTUuNS0zNy43bC0xMS42LTEwLjZjLTE2LjIgMTcuNS0xMi4yIDYzLjkgMjcuMSA2My45IDM0IDAgNDQuNy0zNS45IDI5LjMtNjUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFnZWxpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMTIuN2MtNTUuMSAxMzYuNy0xODcuMSA1NC0xODcuMSA1NC00MC41IDgxLjgtMTA3LjQgMTM0LjQtMTg0LjYgMTM0LjctMTYuMSAwLTE2LjYtMjQuNCAwLTI0LjQgNjQuNC0uMyAxMjAuNS00Mi43IDE1Ny4yLTExMC4xLTQxLjEgMTUuOS0xMTguNiAyNy45LTE2MS42LTgyLjIgMTA5LTQ0LjkgMTU5LjEgMTEuMiAxNzguMyA0NS41IDkuOS0yNC40IDE3LTUwLjkgMjEuNi03OS43IDAgMC0xMzkuNyAyMS45LTE0OS41LTk4LjEgMTE5LjEtNDcuOSAxNTIuNiA3Ni43IDE1Mi42IDc2LjcgMS42LTE2LjcgMy4zLTUyLjYgMy4zLTUzLjQgMCAwLTEwNi4zLTczLjctMzguMS0xNjUuMiAxMjQuNiA0MyA2MS40IDE2Mi40IDYxLjQgMTYyLjQuNSAxLjYuNSAyMy44IDAgMzMuNCAwIDAgNDUuMi04OSAxMzYuNC01Ny41LTQuMiAxMzQtMTQxLjkgMTA2LjQtMTQxLjkgMTA2LjQtNC40IDI3LjQtMTEuMiA1My40LTIwIDc3LjUgMCAwIDgzLTkxLjggMTcyLTIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWxmZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0LjkgMTkzLjljMC00Ny40LTU1LjItNDQuMi05NS40LTI5LjgtMS4zIDM5LjQtMi41IDgwLjctMyAxMTkuOC43IDIuOCAyLjYgNi4yIDE1LjEgNi4yIDM2LjggMCA4My40LTQyLjggODMuMy05Ni4yem0tMTk0LjUgNzIuMmMuMiAwIDYuNS0yLjcgMTEuMi0yLjcgMjYuNiAwIDIwLjcgNDQuMS0xNC40IDQ0LjEtMjEuNSAwLTM3LjEtMTguMS0zNy4xLTQzIDAtNDIgNDIuOS05NS42IDEwMC43LTEyNi41IDEtMTIuNCAzLTIyIDEwLjUtMjguMiAxMS4yLTkgMjYuNi0zLjUgMjkuNSAxMS4xIDcyLjItMjIuMiAxMzUuMiAxIDEzNS4yIDcyIDAgNzcuOS03OS4zIDE1Mi42LTE0MC4xIDEzOC4yLS4xIDM5LjQuOSA3NC40IDIuNyAxMDB2LjJjLjIgMy40LjYgMTIuNS01LjMgMTkuMS05LjYgMTAuNi0zMy40IDEwLTM2LjQtMjIuMy00LjEtNDQuNC4yLTIwNi4xIDEuNC0yNDIuNS0yMS41IDE1LTU4LjUgNTAuMy01OC41IDc1LjkuMiAyLjUuNCA0IC42IDQuNnpNOCAxODEuMXMtLjEgMzcuNCAzOC40IDM3LjRoMzBsMjIuNCAyMTcuMnMwIDQ0LjMgNDQuNyA0NC4zaDI4OC45czQ0LjctLjQgNDQuNy00NC4zbDIyLjQtMjE3LjJoMzBzMzguNCAxLjIgMzguNC0zNy40YzAgMCAuMS0zNy40LTM4LjQtMzcuNGgtMzAuMWMtNy4zLTI1LjYtMzAuMi03NC4zLTExOS40LTc0LjNoLTI4VjUwLjNzLTIuNy0xOC40LTIxLjEtMTguNGgtODUuOHMtMjEuMSAwLTIxLjEgMTguNHYxOS4xaC0yOC4xcy0xMDUgNC4yLTEyMC41IDc0LjNoLTI5UzggMTQyLjUgOCAxODEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF0cmVvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODkuNyAxNTMuOGMtLjEtNjUuNC01MS0xMTktMTEwLjctMTM4LjNDMzA0LjgtOC41IDIwNy01IDEzNi4xIDI4LjRDNTAuMyA2OC45IDIzLjMgMTU3LjcgMjIuMyAyNDYuMkMyMS41IDMxOSAyOC43IDUxMC42IDEzNi45IDUxMmM4MC4zIDEgOTIuMy0xMDIuNSAxMjkuNS0xNTIuM2MyNi40LTM1LjUgNjAuNS00NS41IDEwMi40LTU1LjljNzItMTcuOCAxMjEuMS03NC43IDEyMS0xNTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyOTUuOWMtMy41IDE5LjItMTcuNCAxMDguNy0yMS41IDEzNC0uMyAxLjgtMSAyLjUtMyAyLjVIMTIuM2MtNy42IDAtMTMuMS02LjYtMTIuMS0xMy45TDU4LjggNDYuNmMxLjUtOS42IDEwLjEtMTYuOSAyMC0xNi45IDE1Mi4zIDAgMTY1LjEtMy43IDIwNCAxMS40IDYwLjEgMjMuMyA2NS42IDc5LjUgNDQgMTQwLjMtMjEuNSA2Mi42LTcyLjUgODkuNS0xNDAuMSA5MC4zLTQzLjQuNy02OS41LTctNzUuMyAyNC4yek0zNTcuMSAxNTJjLTEuOC0xLjMtMi41LTEuOC0zIDEuMy0yIDExLjQtNS4xIDIyLjUtOC44IDMzLjYtMzkuOSAxMTMuOC0xNTAuNSAxMDMuOS0yMDQuNSAxMDMuOS02LjEgMC0xMC4xIDMuMy0xMC45IDkuNC0yMi42IDE0MC40LTI3LjEgMTY5LjctMjcuMSAxNjkuNy0xIDcuMSAzLjUgMTIuOSAxMC42IDEyLjloNjMuNWM4LjYgMCAxNS43LTYuMyAxNy40LTE0LjkuNy01LjQtMS4xIDYuMSAxNC40LTkxLjMgNC42LTIyIDE0LjMtMTkuNyAyOS4zLTE5LjcgNzEgMCAxMjYuNC0yOC44IDE0Mi45LTExMi4zIDYuNS0zNC44IDQuNi03MS40LTIzLjgtOTIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyYnl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDUuMzE0LDI4NC41NzhIMjQ2LjZWMzgzLjNoNTguNzExcTI0LjQyMywwLDM4LjE5My0xMy43N3QxMy43Ny0zNi4xMXEwLTIxLjgyNi0xNC4wMzItMzUuMzM1VDMwNS4zMTQsMjg0LjU3OFpNMTQ5LjQzNSwxMjguN0g5MC43MjR2OTguNzIzaDU4LjcxMXEyNC40MiwwLDM4LjE5LTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDI5LTM1LjMzOFQxNDkuNDM1LDEyOC43Wk0zNjYuNjQ3LDMySDgxLjM1M0E4MS40NDUsODEuNDQ1LDAsMCwwLDAsMTEzLjM1MlYzOTguNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsODEuMzUzLDQ4MEgzNjYuNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsNDQ4LDM5OC42NDdWMTEzLjM1MkE4MS40NDUsODEuNDQ1LDAsMCwwLDM2Ni42NDcsMzJabTYzLjYzNSwzNjYuNjQ3YTYzLjcwNiw2My43MDYsMCwwLDEtNjMuNjM1LDYzLjYzNUg4MS4zNTNhNjMuNzA2LDYzLjcwNiwwLDAsMS02My42MzUtNjMuNjM1VjExMy4zNTJBNjMuNzA2LDYzLjcwNiwwLDAsMSw4MS4zNTMsNDkuNzE4SDM2Ni42NDdhNjMuNzA2LDYzLjcwNiwwLDAsMSw2My42MzUsNjMuNjM0Wk0zMDUuMzE0LDEyOC43SDI0Ni42djk4LjcyM2g1OC43MTFxMjQuNDIzLDAsMzguMTkzLTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDMyLTM1LjMzOFQzMDUuMzE0LDEyOC43WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJpc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcwIDYzLjZDMzMxLjQgMjIuNiAyODAuNSAwIDIyNi42IDAgMTExLjkgMCAxOC41IDk2LjIgMTguNSAyMTQuNGMwIDc1LjEgNTcuOCAxNTkuOCA4Mi43IDE5Mi43QzEzNy44IDQ1NS41IDE5Mi42IDUxMiAyMjYuNiA1MTJjNDEuNiAwIDExMi45LTk0LjIgMTIwLjktMTA1IDI0LjYtMzMuMSA4Mi0xMTguMyA4Mi0xOTIuNiAwLTU2LjUtMjEuMS0xMTAuMS01OS41LTE1MC44ek0yMjYuNiA0OTMuOWMtNDIuNSAwLTE5MC0xNjcuMy0xOTAtMjc5LjQgMC0xMDcuNCA4My45LTE5Ni4zIDE5MC0xOTYuMyAxMDAuOCAwIDE4NC43IDg5IDE4NC43IDE5Ni4zLjEgMTEyLjEtMTQ3LjQgMjc5LjQtMTg0LjcgMjc5LjR6TTMzOCAyMDYuOGMwIDU5LjEtNTEuMSAxMDkuNy0xMTAuOCAxMDkuNy0xMDAuNiAwLTE1MC43LTEwOC4yLTkyLjktMTgxLjh2LjRjMCAyNC41IDIwLjEgNDQuNCA0NC44IDQ0LjQgMjQuNyAwIDQ0LjgtMTkuOSA0NC44LTQ0LjQgMC0xOC4yLTExLjEtMzMuOC0yNi45LTQwLjcgNzYuNi0xOS4yIDE0MSAzOS4zIDE0MSAxMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhhYnJpY2F0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzIDI2Mi4xbC0uMS0xM3MyMS43LTE5LjggMjEuMS0yMS4ybC05LjUtMjBjLS42LTEuNC0yOS41LS41LTI5LjUtLjVsLTkuNC05LjNzLjItMjguNS0xLjItMjkuMWwtMjAuMS05LjJjLTEuNC0uNi0yMC43IDIxLTIwLjcgMjFsLTEzLjEtLjJzLTIwLjUtMjEuNC0yMS45LTIwLjhsLTIwIDguM2MtMS40LjUuMiAyOC45LjIgMjguOWwtOS4xIDkuMXMtMjkuMi0uOS0yOS43LjRsLTguMSAxOS44Yy0uNiAxLjQgMjEgMjEgMjEgMjFsLjEgMTIuOXMtMjEuNyAxOS44LTIxLjEgMjEuMmw5LjUgMjBjLjYgMS40IDI5LjUuNSAyOS41LjVsOS40IDkuM3MtLjIgMzEuOCAxLjIgMzIuM2wyMC4xIDguM2MxLjQuNiAyMC43LTIzLjUgMjAuNy0yMy41bDEzLjEuMnMyMC41IDIzLjggMjEuOCAyMy4zbDIwLTcuNWMxLjQtLjYtLjItMzIuMS0uMi0zMi4xbDkuMS05LjFzMjkuMi45IDI5LjctLjVsOC4xLTE5LjhjLjctMS4xLTIwLjktMjAuNy0yMC45LTIwLjd6bS00NC45LTguN2MuNyAxNy4xLTEyLjggMzEuNi0zMC4xIDMyLjQtMTcuMy44LTMyLjEtMTIuNS0zMi44LTI5LjYtLjctMTcuMSAxMi44LTMxLjYgMzAuMS0zMi4zIDE3LjMtLjggMzIuMSAxMi41IDMyLjggMjkuNXptMjAxLjItMzcuOWwtOTctOTctLjEuMWMtNzUuMS03My4zLTE5NS40LTcyLjgtMjY5LjggMS42LTUwLjkgNTEtMjcuOCAyNy45LTk1LjcgOTUuMy0yMi4zIDIyLjMtMjIuMyA1OC43IDAgODEgNjkuOSA2OS40IDQ2LjQgNDYgOTcuNCA5N2wuMS0uMWM3NS4xIDczLjMgMTk1LjQgNzIuOSAyNjkuOC0xLjYgNTEtNTAuOSAyNy45LTI3LjkgOTUuMy05NS4zIDIyLjMtMjIuMyAyMi4zLTU4LjcgMC04MXpNMTQwLjQgMzYzLjhjLTU5LjYtNTkuNS01OS42LTE1NiAwLTIxNS41IDU5LjUtNTkuNiAxNTYtNTkuNSAyMTUuNiAwIDU5LjUgNTkuNSA1OS42IDE1NiAwIDIxNS42LTU5LjYgNTkuNS0xNTYgNTkuNC0yMTUuNi0uMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvZW5peEZyYW1ld29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuOSAzNDQuM2MzLjgtLjEgMjIuOC0xLjQgMjUuNi0yLjItMi40LTIuNi00My42LTEtNjgtNDkuNi00LjMtOC42LTcuNS0xNy42LTYuNC0yNy42IDIuOS0yNS41IDMyLjktMzAgNTItMTguNSAzNiAyMS42IDYzLjMgOTEuMyAxMTMuNyA5Ny41IDM3IDQuNSA4NC42LTE3IDEwOC4yLTQ1LjQtLjYtLjEtLjgtLjItMS0uMS0uNC4xLS44LjItMS4xLjMtMzMuMyAxMi4xLTk0LjMgOS43LTEzNC43LTE0LjgtMzcuNi0yMi44LTUzLjEtNTguNy01MS44LTc0LjYgMS44LTIxLjMgMjIuOS0yMy4yIDM1LjktMTkuNiAxNC40IDMuOSAyNC40IDE3LjYgMzguOSAyNy40IDE1LjYgMTAuNCAzMi45IDEzLjcgNTEuMyAxMC4zIDE0LjktMi43IDM0LjQtMTIuMyAzNi41LTE0LjUtMS4xLS4xLTEuOC0uMS0yLjUtLjItNi4yLS42LTEyLjQtLjgtMTguNS0xLjdDMjc5LjggMTk0LjUgMjYyLjEgNDcuNCAxMzguNSAzNy45IDk0LjIgMzQuNSAzOS4xIDQ2IDIuMiA3Mi45Yy0uOC42LTEuNSAxLjItMi4yIDEuOC4xLjIuMS4zLjIuNS44IDAgMS42LS4xIDIuNC0uMiA2LjMtMSAxMi41LS44IDE4LjcuMyAyMy44IDQuMyA0Ny43IDIzLjEgNTUuOSA3Ni41IDUuMyAzNC4zLS43IDUwLjggOCA4Ni4xIDE5IDc3LjEgOTEgMTA3LjYgMTI3LjcgMTA2LjR6TTc1LjMgNjQuOWMtLjktMS0uOS0xLjItMS4zLTIgMTIuMS0yLjYgMjQuMi00LjEgMzYuNi00LjgtMS4xIDE0LjctMjIuMiAyMS4zLTM1LjMgNi44em0xOTYuOSAzNTAuNWMtNDIuOCAxLjItOTItMjYuNy0xMjMuNS02MS40LTQuNi01LTE2LjgtMjAuMi0xOC42LTIzLjRsLjQtLjRjNi42IDQuMSAyNS43IDE4LjYgNTQuOCAyNyAyNC4yIDcgNDguMSA2LjMgNzEuNi0zLjMgMjIuNy05LjMgNDEtLjUgNDMuMSAyLjktMTguNSAzLjgtMjAuMSA0LjQtMjQgNy45LTUuMSA0LjQtNC42IDExLjcgNyAxNy4yIDI2LjIgMTIuNCA2My0yLjggOTcuMiAyNS40IDIuNCAyIDguMSA3LjggMTAuMSAxMC43LS4xLjItLjMuMy0uNC41LTQuOC0xLjUtMTYuNC03LjUtNDAuMi05LjMtMjQuNy0yLTQ2LjMgNS4zLTc3LjUgNi4yem0xNzQuOC0yNTJjMTYuNC01LjIgNDEuMy0xMy40IDY2LjUtMy4zIDE2LjEgNi41IDI2LjIgMTguNyAzMi4xIDM0LjYgMy41IDkuNCA1LjEgMTkuNyA1LjEgMjguNy0uMiAwLS40IDAtLjYuMS0uMi0uNC0uNC0uOS0uNS0xLjMtNS0yMi0yOS45LTQzLjgtNjcuNi0yOS45LTUwLjIgMTguNi0xMzAuNCA5LjctMTc2LjktNDgtLjctLjktMi40LTEuNy0xLjMtMy4yLjEtLjIgMi4xLjYgMyAxLjMgMTguMSAxMy40IDM4LjMgMjEuOSA2MC4zIDI2LjIgMzAuNSA2LjEgNTQuNiAyLjkgNzkuOS01LjJ6bTEwMi43IDExNy41Yy0zMi40LjItMzMuOCA1MC4xLTEwMy42IDY0LjQtMTguMiAzLjctMzguNyA0LjYtNDQuOSA0LjJ2LS40YzIuOC0xLjUgMTQuNy0yLjYgMjkuNy0xNi42IDcuOS03LjMgMTUuMy0xNS4xIDIyLjgtMjIuOSAxOS41LTIwLjIgNDEuNC00Mi4yIDgxLjktMzkgMjMuMSAxLjggMjkuMyA4LjIgMzYuMSAxMi43LjMuMi40LjUuNy45LS41IDAtLjcuMS0uOSAwLTctMi43LTE0LjMtMy4zLTIxLjgtMy4zem0tMTIuMy0yNC4xYy0uMS4yLS4xLjQtLjIuNi0yOC45LTQuNC00OC03LjktNjguNSA0LTE3IDkuOS0zMS40IDIwLjUtNjIgMjQuNC0yNy4xIDMuNC00NS4xIDIuNC02Ni4xLTgtLjMtLjItLjYtLjQtMS0uNiAwLS4yLjEtLjMuMS0uNSAyNC45IDMuOCAzNi40IDUuMSA1NS41LTUuOCAyMi4zLTEyLjkgNDAuMS0yNi42IDcxLjMtMzEgMjkuNi00LjEgNTEuMyAyLjUgNzAuOSAxNi45ek0yNjguNiA5Ny4zYy0uNi0uNi0xLjEtMS4yLTIuMS0yLjMgNy42IDAgMjkuNy0xLjIgNTMuNCA4LjQgMTkuNyA4IDMyLjIgMjEgNTAuMiAzMi45IDExLjEgNy4zIDIzLjQgOS4zIDM2LjQgOC4xIDQuMy0uNCA4LjUtMS4yIDEyLjgtMS43LjQtLjEuOSAwIDEuNS4zLS42LjQtMS4yLjktMS44IDEuMi04LjEgNC0xNi43IDYuMy0yNS42IDcuMS0yNi4xIDIuNi01MC4zLTMuNy03My40LTE1LjQtMTkuMy05LjktMzYuNC0yMi45LTUxLjQtMzguNnpNNjQwIDMzNS43Yy0zLjUgMy4xLTIyLjcgMTEuNi00Mi43IDUuMy0xMi4zLTMuOS0xOS41LTE0LjktMzEuNi0yNC4xLTEwLTcuNi0yMC45LTcuOS0yOC4xLTguNC42LS44LjktMS4yIDEuMi0xLjQgMTQuOC05LjIgMzAuNS0xMi4yIDQ3LjMtNi41IDEyLjUgNC4yIDE5LjIgMTMuNSAzMC40IDI0LjIgMTAuOCAxMC40IDIxIDkuOSAyMy4xIDEwLjUuMS0uMS4yIDAgLjQuNHptLTIxMi41IDEzN2MyLjIgMS4yIDEuNiAxLjUgMS41IDItMTguNS0xLjQtMzMuOS03LjYtNDYuOC0yMi4yLTIxLjgtMjQuNy00MS43LTI3LjktNDguNi0yOS43LjUtLjIuOC0uNCAxLjEtLjQgMTMuMS4xIDI2LjEuNyAzOC45IDMuOSAyNS4zIDYuNCAzNSAyNS40IDQxLjYgMzUuMyAzLjIgNC44IDcuMyA4LjMgMTIuMyAxMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9lbml4U3F1YWRyb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjMuMzhDMTQyLjQ5IDI3LjI1IDIwMS41NSA3LjMxIDI2MC41MSA4LjgxYzI5LjU4LS4zOCA1OS4xMSA1LjM3IDg2LjkxIDE1LjMzLTI0LjEzLTQuNjMtNDktNi4zNC03My4zOC0yLjQ1QzIzMS4xNyAyNyAxOTEgNDguODQgMTYyLjIxIDgwLjg3YzUuNjctMSAxMC43OC0zLjY3IDE2LTUuODYgMTguMTQtNy44NyAzNy40OS0xMy4yNiA1Ny4yMy0xNC44MyAxOS43NC0yLjEzIDM5LjY0LS40MyA1OS4yOCAxLjkyLTE0LjQyIDIuNzktMjkuMTIgNC41Ny00MyA5LjU5LTM0LjQzIDExLjA3LTY1LjI3IDMzLjE2LTg2LjMgNjIuNjMtMTMuOCAxOS43MS0yMy42MyA0Mi44Ni0yNC42NyA2Ny4xMy0uMzUgMTYuNDkgNS4yMiAzNC44MSAxOS44MyA0NGE1My4yNyA1My4yNyAwIDAgMCAzNy41MiA2Ljc0YzE1LjQ1LTIuNDYgMzAuMDctOC42NCA0My42LTE2LjMzIDExLjUyLTYuODIgMjIuNjctMTQuNTUgMzItMjQuMjUgMy43OS0zLjIyIDIuNTMtOC40NSAyLjYyLTEyLjc5LTIuMTItLjM0LTQuMzgtMS4xMS02LjMuM2EyMDMgMjAzIDAgMCAxLTM1LjgyIDE1LjM3Yy0yMCA2LjE3LTQyLjE2IDguNDYtNjIuMS43OCAxMi43OSAxLjczIDI2LjA2LjMxIDM3Ljc0LTUuNDQgMjAuMjMtOS43MiAzNi44MS0yNS4yIDU0LjQ0LTM4Ljc3YTUyNi41NyA1MjYuNTcgMCAwIDEgODguOS01NS4zMWMyNS43MS0xMiA1Mi45NC0yMi43OCA4MS41Ny0yNC4xMi0xNS42MyAxMy43Mi0zMi4xNSAyNi41Mi00Ni43OCA0MS4zOC0xNC41MSAxNC0yNy40NiAyOS41LTQwLjExIDQ1LjE4LTMuNTIgNC42LTguOTUgNi45NC0xMy41OCAxMC4xNmExNTAuNyAxNTAuNyAwIDAgMC01MS44OSA2MC4xYy05LjMzIDE5LjY4LTE0LjUgNDEuODUtMTEuNzcgNjMuNjUgMS45NCAxMy42OSA4LjcxIDI3LjU5IDIwLjkgMzQuOTEgMTIuOSA4IDI5LjA1IDguMDcgNDMuNDggNS4xIDMyLjgtNy40NSA2MS40My0yOC44OSA4MS01NS44NCAyMC40NC0yNy41MiAzMC41Mi02Mi4yIDI5LjE2LTk2LjM1LS41Mi03LjUtMS41Ny0xNS0xLjY2LTIyLjQ5IDggMTkuNDggMTQuODIgMzkuNzEgMTYuNjUgNjAuODMgMiAxNC4yOC43NSAyOC43Ni0xLjYyIDQyLjktMS45MSAxMS01LjY3IDIxLjUxLTcuNzggMzIuNDNhMTY1IDE2NSAwIDAgMCAzOS4zNC04MS4wNyAxODMuNjQgMTgzLjY0IDAgMCAwLTE0LjIxLTEwNC42NGMyMC43OCAzMiAzMi4zNCA2OS41OCAzNS43MSAxMDcuNDguNDkgMTIuNzMuNDkgMjUuNTEgMCAzOC4yM0EyNDMuMjEgMjQzLjIxIDAgMCAxIDQ4MiAzNzEuMzRjLTI2LjEyIDQ3LjM0LTY4IDg1LjYzLTExNy4xOSAxMDgtNzguMjkgMzYuMjMtMTc0LjY4IDMxLjMyLTI0OC0xNC42OEEyNDguMzQgMjQ4LjM0IDAgMCAxIDI1LjM2IDM2NiAyMzguMzQgMjM4LjM0IDAgMCAxIDAgMjczLjA4di0zMS4zNEMzLjkzIDE3MiA0MC44NyAxMDUuODIgOTYgNjMuMzhtMjIyIDgwLjMzYTc5LjEzIDc5LjEzIDAgMCAwIDE2LTQuNDhjNS0xLjc3IDkuMjQtNS45NCAxMC4zMi0xMS4yMi04Ljk2IDQuOTktMTcuOTggOS45Mi0yNi4zMiAxNS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDEwNC41YzE3MS40IDAgMzAzLjIgNzIuMiAzMDMuMiAxNTEuNVM0OTEuMyA0MDcuNSAzMjAgNDA3LjVjLTE3MS40IDAtMzAzLjItNzIuMi0zMDMuMi0xNTEuNVMxNDguNyAxMDQuNSAzMjAgMTA0LjVtMC0xNi44QzE0My4zIDg3LjcgMCAxNjMgMCAyNTZzMTQzLjMgMTY4LjMgMzIwIDE2OC4zUzY0MCAzNDkgNjQwIDI1NiA0OTYuNyA4Ny43IDMyMCA4Ny43ek0yMTguMiAyNDIuNWMtNy45IDQwLjUtMzUuOCAzNi4zLTcwLjEgMzYuM2wxMy43LTcwLjZjMzggMCA2My44LTQuMSA1Ni40IDM0LjN6TTk3LjQgMzUwLjNoMzYuN2w4LjctNDQuOGM0MS4xIDAgNjYuNiAzIDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN2gtNzAuN0w5Ny40IDM1MC4zem0xODUuNy0yMTMuNmgzNi41bC04LjcgNDQuOGMzMS41IDAgNjAuNy0yLjMgNzQuOCAxMC43IDE0LjggMTMuNiA3LjcgMzEtOC4zIDExMy4xaC0zN2MxNS40LTc5LjQgMTguMy04NiAxMi43LTkyLTUuNC01LjgtMTcuNy00LjYtNDcuNC00LjZsLTE4LjggOTYuNmgtMzYuNWwzMi43LTE2OC42ek01MDUgMjQyLjVjLTggNDEuMS0zNi43IDM2LjMtNzAuMSAzNi4zbDEzLjctNzAuNmMzOC4yIDAgNjMuOC00LjEgNTYuNCAzNC4zek0zODQuMiAzNTAuM0g0MjFsOC43LTQ0LjhjNDMuMiAwIDY3LjEgMi41IDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN0g0MTdsLTMyLjggMTY4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQgMjQ2Yy0zLjItMi02LjMtMi45LTEwLjEtMi45LTYuNiAwLTEyLjYgMy4yLTE5LjMgMy43bDEuNyA0Ljl6bTEzNS45IDE5Ny45Yy0xOSAwLTY0LjEgOS41LTc5LjkgMTkuOGw2LjkgNDUuMWMzNS43IDYuMSA3MC4xIDMuNiAxMDYtOS44LTQuOC0xMC0yMy41LTU1LjEtMzMtNTUuMXpNMzQwLjggMTc3YzYuNiAyLjggMTEuNSA5LjIgMjIuNyAyMi4xIDItMS40IDcuNS01LjIgNy41LTguNiAwLTQuOS0xMS44LTEzLjItMTMuMi0yMyAxMS4yLTUuNyAyNS4yLTYgMzcuNi04LjkgNjguMS0xNi40IDExNi4zLTUyLjkgMTQ2LjgtMTE2LjdDNTQ4LjMgMjkuMyA1NTQgMTYuMSA1NTQuNiAybC0yIDIuNmMtMjguNCA1MC0zMyA2My4yLTgxLjMgMTAwLTMxLjkgMjQuNC02OS4yIDQwLjItMTA2LjYgNTQuNmwtNi4zLS4zdi0yMS44Yy0xOS42IDEuNi0xOS43LTE0LjYtMzEuNi0yMy0xOC43IDIwLjYtMzEuNiA0MC44LTU4LjkgNTEuMS0xMi43IDQuOC0xOS42IDEwLTI1LjkgMjEuOCAzNC45LTE2LjQgOTEuMi0xMy41IDk4LjgtMTB6TTU1NS41IDBsLS42IDEuMS0uMy45LjYtLjZ6bS01OS4yIDM4Mi4xYy0zMy45LTU2LjktNzUuMy0xMTguNC0xNTAtMTE1LjVsLS4zLTZjLTEuMS0xMy41IDMyLjggMy4yIDM1LjEtMzFsLTE0LjQgNy4yYy0xOS44LTQ1LjctOC42LTU0LjMtNjUuNS01NC4zLTE0LjcgMC0yNi43IDEuNy00MS40IDQuNiAyLjkgMTguNiAyLjIgMzYuNy0xMC45IDUwLjNsMTkuNSA1LjVjLTEuNyAzLjItMi45IDYuMy0yLjkgOS44IDAgMjEgNDIuOCAyLjkgNDIuOCAzMy42IDAgMTguNC0zNi44IDYwLjEtNTQuOSA2MC4xLTggMC01My43LTUwLTUzLjQtNjAuMWwuMy00LjYgNTIuMy0xMS41YzEzLTIuNiAxMi4zLTIyLjctMi45LTIyLjctMy43IDAtNDMuMSA5LjItNDkuNCAxMC42LTItNS4yLTcuNS0xNC4xLTEzLjgtMTQuMS0zLjIgMC02LjMgMy4yLTkuNSA0LTkuMiAyLjYtMzEgMi45LTIxLjUgMjAuMUwxNS45IDI5OC41Yy01LjUgMS4xLTguOSA2LjMtOC45IDExLjggMCA2IDUuNSAxMC45IDExLjUgMTAuOSA4IDAgMTMxLjMtMjguNCAxNDcuNC0zMi4yIDIuNiAzLjIgNC42IDYuMyA3LjggOC42IDIwLjEgMTQuNCA1OS44IDg1LjkgNzYuNCA4NS45IDI0LjEgMCA1OC0yMi40IDcxLjMtNDEuOSAzLjItNC4zIDYuOS03LjUgMTIuNC02LjkuNiAxMy44LTMxLjYgMzQuMi0zMyA0My43LTEuNCAxMC4yLTEgMzUuMi0uMyA0MS4xIDI2LjcgOC4xIDUyLTMuNiA3Ny45LTIuOSA0LjMtMjEgMTAuNi00MS45IDkuOC02My41bC0uMy05LjVjLTEuNC0zNC4yLTEwLjktMzguNS0zNC44LTU4LjYtMS4xLTEuMS0yLjYtMi42LTMuNy00IDIuMi0xLjQgMS4xLTEgNC42LTEuNyA4OC41IDAgNTYuMyAxODMuNiAxMTEuNSAyMjkuOSAzMy4xLTE1IDcyLjUtMjcuOSAxMDMuNS00Ny4yLTI5LTI1LjYtNTIuNi00NS43LTcyLjctNzkuOXptLTE5Ni4yIDQ2LjF2MjcuMmwxMS44LTMuNC0yLjktMjMuOHptLTY4LjctMTUwLjRsMjQuMSA2MS4yIDIxLTEzLjgtMzEuMy01MC45em04NC40IDE1NC45bDIgMTIuNGM5LTEuNSA1OC40LTYuNiA1OC40LTE0LjEgMC0xLjQtLjYtMy4yLS45LTQuNi0yNi44IDAtMzYuOSAzLjgtNTkuNSA2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckhhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjQuOWMtODAuOCA1My42LTg5LjQgOTIuNS05Ni40IDEwNC40LTYuNyAxMi4yLTExLjcgNjAuMy0yMy4zIDgzLjYtMTEuNyAyMy42LTU0LjIgNDIuMi02Ni4xIDUwLTExLjcgNy44LTI4LjMgMzguMS00MS45IDY0LjItMTA4LjEtNC40LTE2Ny40IDM4LjgtMjU5LjIgOTMuNiAyOS40LTkuNyA0My4zLTE2LjcgNDMuMy0xNi43IDk0LjItMzYgMTM5LjMtNjguMyAyODEuMS00OS4yIDEuMSAwIDEuOS42IDIuOC44IDMuOSAyLjIgNS4zIDYuOSAzLjEgMTAuOGwtNTMuOSA5NS44Yy0yLjUgNC43LTcuOCA3LjItMTMuMSA2LjEtMTI2LjgtMjMuOC0yMjYuOSAxNy4zLTMxOC45IDE4LjZDMjQuMSA0ODggMCA0NTMuNCAwIDQ1MS44YzAtMS4xLjYtMS43IDEuNy0xLjcgMCAwIDM4LjMgMCAxMDMuMS0xNS4zQzE3OC40IDI5NC41IDI0NCAyNDUuNCAzMTUuNCAyNDUuNGMwIDAgNzEuNyAwIDkwLjYgNjEuOSAyMi44LTM5LjcgMjguMy00OS4yIDI4LjMtNDkuMiA1LjMtOS40IDM1LTc3LjIgODYuNC0xNDEuNCA1MS41LTY0IDkwLjQtNzkuOSAxMTkuMy05MS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWVkUGlwZXJQcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuMyAxNzQuNmMwIDIxLjEtMTQuMiAzOC4xLTMxLjcgMzguMS03LjEgMC0xMi44LTEuMi0xNy4yLTMuN3YtNjhjNC40LTIuNyAxMC4xLTQuMiAxNy4yLTQuMiAxNy41IDAgMzEuNyAxNi45IDMxLjcgMzcuOHptNTIuNiA2N2MtNy4xIDAtMTIuOCAxLjUtMTcuMiA0LjJ2NjhjNC40IDIuNSAxMC4xIDMuNyAxNy4yIDMuNyAxNy40IDAgMzEuNy0xNi45IDMxLjctMzcuOCAwLTIxLjEtMTQuMy0zOC4xLTMxLjctMzguMXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xODUgMjU1LjFjNDEgMCA3NC4yLTM1LjYgNzQuMi03OS42IDAtNDQtMzMuMi03OS42LTc0LjItNzkuNi0xMiAwLTI0LjEgMy4yLTM0LjYgOC44aC00NS43VjMxMWw1MS44LTEwLjF2LTUwLjZjOC42IDMuMSAxOC4xIDQuOCAyOC41IDQuOHptMTU4LjQgMjUuM2MwLTQ0LTMzLjItNzkuNi03My45LTc5LjYtMy4yIDAtNi40LjItOS42LjctMy43IDEyLjUtMTAuMSAyMy44LTE5LjIgMzMuNC0xMy44IDE1LTMyLjIgMjMuOC01MS44IDI0LjhWNDE2bDUxLjgtMTAuMXYtNTAuNmM4LjYgMy4yIDE4LjIgNC43IDI4LjcgNC43IDQwLjggMCA3NC0zNS42IDc0LTc5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTUuOTMsMjMuMkM0MjkuMjMsMzAsMzg3Ljc5LDUxLjY5LDM0MS4zNSw5MC42NkEyMDYsMjA2LDAsMCwwLDI0MCw2NEMxMjUuMTMsNjQsMzIsMTU3LjEyLDMyLDI3MnM5My4xMywyMDgsMjA4LDIwOCwyMDgtOTMuMTMsMjA4LTIwOGEyMDcuMjUsMjA3LjI1LDAsMCwwLTU4Ljc1LTE0NC44MSwxNTUuMzUsMTU1LjM1LDAsMCwwLTE3LDI3LjRBMTc2LjE2LDE3Ni4xNiwwLDAsMSw0MTcuMSwyNzJjMCw5Ny42Ni03OS40NCwxNzcuMTEtMTc3LjA5LDE3Ny4xMWExNzUuODEsMTc1LjgxLDAsMCwxLTg3LjYzLTIzLjRjODIuOTQtMTA3LjMzLDE1MC43OS0zNy43NywxODQuMzEtMjI2LjY1LDUuNzktMzIuNjIsMjgtOTQuMjYsMTI2LjIzLTE2MC4xOEM0NzEsMzMuNDUsNDY1LjM1LDIwLjgsNDU1LjkzLDIzLjJaTTEyNSw0MDYuNEExNzYuNjYsMTc2LjY2LDAsMCwxLDYyLjksMjcyQzYyLjksMTc0LjM0LDE0Mi4zNSw5NC45LDI0MCw5NC45YTE3NCwxNzQsMCwwLDEsNzYuNjMsMTcuNzVDMjUwLjY0LDE3NC43NiwxODkuNzcsMjY1LjUyLDEyNSw0MDYuNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGludGVyZXN0UCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDQgNi41QzEwMS40IDYuNSAwIDc0LjkgMCAxODUuNiAwIDI1NiAzOS42IDI5NiA2My42IDI5NmM5LjkgMCAxNS42LTI3LjYgMTUuNi0zNS40IDAtOS4zLTIzLjctMjkuMS0yMy43LTY3LjggMC04MC40IDYxLjItMTM3LjQgMTQwLjQtMTM3LjQgNjguMSAwIDExOC41IDM4LjcgMTE4LjUgMTA5LjggMCA1My4xLTIxLjMgMTUyLjctOTAuMyAxNTIuNy0yNC45IDAtNDYuMi0xOC00Ni4yLTQzLjggMC0zNy44IDI2LjQtNzQuNCAyNi40LTExMy40IDAtNjYuMi05My45LTU0LjItOTMuOSAyNS44IDAgMTYuOCAyLjEgMzUuNCA5LjYgNTAuNy0xMy44IDU5LjQtNDIgMTQ3LjktNDIgMjA5LjEgMCAxOC45IDIuNyAzNy41IDQuNSA1Ni40IDMuNCAzLjggMS43IDMuNCA2LjkgMS41IDUwLjQtNjkgNDguNi04Mi41IDcxLjQtMTcyLjggMTIuMyAyMy40IDQ0LjEgMzYgNjkuMyAzNiAxMDYuMiAwIDE1My45LTEwMy41IDE1My45LTE5Ni44QzM4NCA3MS4zIDI5OC4yIDYuNSAyMDQgNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaW50ZXJlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDgtMjUuNiAwLTUwLjItMy45LTczLjQtMTEuMSAxMC4xLTE2LjUgMjUuMi00My41IDMwLjgtNjUgMy0xMS42IDE1LjQtNTkgMTUuNC01OSA4LjEgMTUuNCAzMS43IDI4LjUgNTYuOCAyOC41IDc0LjggMCAxMjguNy02OC44IDEyOC43LTE1NC4zIDAtODEuOS02Ni45LTE0My4yLTE1Mi45LTE0My4yLTEwNyAwLTE2My45IDcxLjgtMTYzLjkgMTUwLjEgMCAzNi40IDE5LjQgODEuNyA1MC4zIDk2LjEgNC43IDIuMiA3LjIgMS4yIDguMy0zLjMuOC0zLjQgNS0yMC4zIDYuOS0yOC4xLjYtMi41LjMtNC43LTEuNy03LjEtMTAuMS0xMi41LTE4LjMtMzUuMy0xOC4zLTU2LjYgMC01NC43IDQxLjQtMTA3LjYgMTEyLTEwNy42IDYwLjkgMCAxMDMuNiA0MS41IDEwMy42IDEwMC45IDAgNjcuMS0zMy45IDExMy42LTc4IDExMy42LTI0LjMgMC00Mi42LTIwLjEtMzYuNy00NC44IDctMjkuNSAyMC41LTYxLjMgMjAuNS04Mi42IDAtMTktMTAuMi0zNC45LTMxLjQtMzQuOS0yNC45IDAtNDQuOSAyNS43LTQ0LjkgNjAuMiAwIDIyIDcuNCAzNi44IDcuNCAzNi44cy0yNC41IDEwMy44LTI5IDEyMy4yYy01IDIxLjQtMyA1MS42LS45IDcxLjJDNjUuNCA0NTAuOSAwIDM2MS4xIDAgMjU2IDAgMTE5IDExMSA4IDI0OCA4czI0OCAxMTEgMjQ4IDI0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Mi40IDI5Mi41QzI0Ny44IDI4Ny4xIDI1Ny4xIDI4Ny4xIDI2Mi41IDI5Mi41TDMzOS41IDM2OS41QzM1My43IDM4My43IDM3Mi42IDM5MS41IDM5Mi42IDM5MS41SDQwNy43TDMxMC42IDQ4OC42QzI4MC4zIDUxOC4xIDIzMS4xIDUxOC4xIDIwMC44IDQ4OC42TDEwMy4zIDM5MS4ySDExMi42QzEzMi42IDM5MS4yIDE1MS41IDM4My40IDE2NS43IDM2OS4yTDI0Mi40IDI5Mi41ek0yNjIuNSAyMTguOUMyNTYuMSAyMjQuNCAyNDcuOSAyMjQuNSAyNDIuNCAyMTguOUwxNjUuNyAxNDIuMkMxNTEuNSAxMjcuMSAxMzIuNiAxMjAuMiAxMTIuNiAxMjAuMkgxMDMuM0wyMDAuNyAyMi43NkMyMzEuMS03LjU4NiAyODAuMy03LjU4NiAzMTAuNiAyMi43Nkw0MDcuOCAxMTkuOUgzOTIuNkMzNzIuNiAxMTkuOSAzNTMuNyAxMjcuNyAzMzkuNSAxNDEuOUwyNjIuNSAyMTguOXpNMTEyLjYgMTQyLjdDMTI2LjQgMTQyLjcgMTM5LjEgMTQ4LjMgMTQ5LjcgMTU4LjFMMjI2LjQgMjM0LjhDMjMzLjYgMjQxLjEgMjQzIDI0NS42IDI1Mi41IDI0NS42QzI2MS45IDI0NS42IDI3MS4zIDI0MS4xIDI3OC41IDIzNC44TDM1NS41IDE1Ny44QzM2NS4zIDE0OC4xIDM3OC44IDE0Mi41IDM5Mi42IDE0Mi41SDQzMC4zTDQ4OC42IDIwMC44QzUxOC45IDIzMS4xIDUxOC45IDI4MC4zIDQ4OC42IDMxMC42TDQzMC4zIDM2OC45SDM5Mi42QzM3OC44IDM2OC45IDM2NS4zIDM2My4zIDM1NS41IDM1My41TDI3OC41IDI3Ni41QzI2NC42IDI2Mi42IDI0MC4zIDI2Mi42IDIyNi40IDI3Ni42TDE0OS43IDM1My4yQzEzOS4xIDM2MyAxMjYuNCAzNjguNiAxMTIuNiAzNjguNkg4MC43OEwyMi43NiAzMTAuNkMtNy41ODYgMjgwLjMtNy41ODYgMjMxLjEgMjIuNzYgMjAwLjhMODAuNzggMTQyLjdIMTEyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpeGl2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptMTcxLjUgODRjNDEgMCA3Ni4zIDEyLjkgMTAxLjQgMzUuMmwwIDBjMjUuMiAyMi4yIDM5LjggNTQuMSAzOS44IDg4LjhjLjEgMzUuMy0xNi42IDY2LjMtNDIuNCA4N2MtMjUuOSAyMC44LTYwLjYgMzIuNC05OC44IDMyLjRjLTQzLjUgMC04My44LTE2LjEtODMuOC0xNi4xdjUxLjhjNy40IDIuMiAxOS43IDcgMTEuOSAxNC44SDEwNC44Yy03LjctNy44IDMuNi0xMi40IDEyLjEtMTQuOFYxNzUuNUM5Ny4xIDE5MC45IDg3IDIwNC4zIDgxLjggMjE0LjJjNiAxOS40LTUuMyAxOC41LTUuMyAxOC41TDU2IDE5OS43czcyLjctODMuNyAxNzkuNS04My43em0tMy42IDIyMi45YzMwIDAgNTYtMTEuMyA3My45LTI5LjJjMTcuOS0xOC4xIDI3LjktNDEuNiAyOC03MC4yYy0uMS0yOS4zLTkuNS01NC42LTI2LjctNzMuNmMtMTcuMi0xOC45LTQyLjctMzEuMy03NS4yLTMxLjRjLTI2LjctLjEtNTkuOCA5LTgwLjIgMjMuN1YzMjMuMWMxOC42IDkuMyA0Ni44IDE1LjkgODAuMiAxNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGF5c3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzAuOSAzNzIuM2MtMTEuMyAxNC4yLTM4LjggMjQuMy0zOC44IDI0LjNMMzI3IDQ3MC4ydi01NC4zbDE1MC45LTUzLjhjMTcuMS02LjEgMTkuOC0xNC44IDUuOC0xOS40LTEzLjktNC42LTM5LjEtMy4zLTU2LjIgMi45TDMyNyAzODEuMXYtNTYuNGMyMy4yLTcuOCA0Ny4xLTEzLjYgNzUuNy0xNi44IDQwLjktNC41IDkwLjkuNiAxMzAuMiAxNS41IDQ0LjIgMTQgNDkuMiAzNC43IDM4IDQ4Ljl6bS0yMjQuNC05Mi41di0xMzljMC0xNi4zLTMtMzEuMy0xOC4zLTM1LjYtMTEuNy0zLjgtMTkgNy4xLTE5IDIzLjR2MzQ3LjlsLTkzLjgtMjkuOFYzMmMzOS45IDcuNCA5OCAyNC45IDEyOS4yIDM1LjRDNDI0LjEgOTQuNyA0NTEgMTI4LjcgNDUxIDIwNS4yYzAgNzQuNS00NiAxMDIuOC0xMDQuNSA3NC42ek00My4yIDQxMC4yYy00NS40LTEyLjgtNTMtMzkuNS0zMi4zLTU0LjggMTkuMS0xNC4yIDUxLjctMjQuOSA1MS43LTI0LjlsMTM0LjUtNDcuOHY1NC41bC05Ni44IDM0LjZjLTE3LjEgNi4xLTE5LjcgMTQuOC01LjggMTkuNCAxMy45IDQuNiAzOS4xIDMuMyA1Ni4yLTIuOWw0Ni40LTE2Ljl2NDguOGMtNTEuNiA5LjMtMTAxLjQgNy4zLTE1My45LTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcm9kdWN0SHVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjYuMyAyMTguOGMwIDIwLjUtMTYuNyAzNy4yLTM3LjIgMzcuMmgtNzAuM3YtNzQuNGg3MC4zYzIwLjUgMCAzNy4yIDE2LjcgMzcuMiAzNy4yek01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xMjguMS0zNy4yYzAtNDcuOS0zOC45LTg2LjgtODYuOC04Ni44SDE2OS4ydjI0OGg0OS42di03NC40aDcwLjNjNDcuOSAwIDg2LjgtMzguOSA4Ni44LTg2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDMyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgMTExLjlsLTk4LjUtOSAxNC0zMy40YzEwLjQtMjMuNS0xMC44LTQwLjQtMjguNy0zN0wyMi41IDc2LjljLTE1LjEgMi43LTI2IDE4LjMtMjEuNCAzNi42bDEwNS4xIDM0OC4zYzYuNSAyMS4zIDM2LjcgMjQuMiA0Ny43IDdsMzUuMy04MC44IDIzNS4yLTIzMS4zYzE2LjQtMTYuOCA0LjMtNDIuOS0xNy40LTQ0Ljh6TTI5Ny42IDUzLjZjNS4xLS43IDcuNSAyLjUgNS4yIDcuNEwyODYgMTAwLjkgMTA4LjYgODQuNmwxODktMzF6TTIyLjcgMTA3LjljLTMuMS01LjEgMS0xMCA2LjEtOS4xbDI0OC43IDIyLjctOTYuOSAyMzAuN0wyMi43IDEwNy45ek0xMzYgNDU2LjRjLTIuNiA0LTcuOSAzLjEtOS40LTEuMkw0My41IDE3OS43bDEyNy43IDE5Ny42Yy03IDE1LTM1LjIgNzkuMS0zNS4yIDc5LjF6bTI3Mi44LTMxNC41TDIxMC4xIDMzNy4zbDg5LjctMjEzLjcgMTA2LjQgOS43YzQgMS4xIDUuNyA1LjMgMi42IDguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHl0aG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS44IDIwMC41Yy03LjctMzAuOS0yMi4zLTU0LjItNTMuNC01NC4yaC00MC4xdjQ3LjRjMCAzNi44LTMxLjIgNjcuOC02Ni44IDY3LjhIMTcyLjdjLTI5LjIgMC01My40IDI1LTUzLjQgNTQuM3YxMDEuOGMwIDI5IDI1LjIgNDYgNTMuNCA1NC4zIDMzLjggOS45IDY2LjMgMTEuNyAxMDYuOCAwIDI2LjktNy44IDUzLjQtMjMuNSA1My40LTU0LjN2LTQwLjdIMjI2LjJ2LTEzLjZoMTYwLjJjMzEuMSAwIDQyLjYtMjEuNyA1My40LTU0LjIgMTEuMi0zMy41IDEwLjctNjUuNyAwLTEwOC42ek0yODYuMiA0MDRjMTEuMSAwIDIwLjEgOS4xIDIwLjEgMjAuMyAwIDExLjMtOSAyMC40LTIwLjEgMjAuNC0xMSAwLTIwLjEtOS4yLTIwLjEtMjAuNC4xLTExLjMgOS4xLTIwLjMgMjAuMS0yMC4zek0xNjcuOCAyNDguMWgxMDYuOGMyOS43IDAgNTMuNC0yNC41IDUzLjQtNTQuM1Y5MS45YzAtMjktMjQuNC01MC43LTUzLjQtNTUuNi0zNS44LTUuOS03NC43LTUuNi0xMDYuOC4xLTQ1LjIgOC01My40IDI0LjctNTMuNCA1NS42djQwLjdoMTA2Ljl2MTMuNmgtMTQ3Yy0zMS4xIDAtNTguMyAxOC43LTY2LjggNTQuMi05LjggNDAuNy0xMC4yIDY2LjEgMCAxMDguNiA3LjYgMzEuNiAyNS43IDU0LjIgNTYuOCA1NC4ySDEwMXYtNDguOGMwLTM1LjMgMzAuNS02Ni40IDY2LjgtNjYuNHptLTYuNy0xNDIuNmMtMTEuMSAwLTIwLjEtOS4xLTIwLjEtMjAuMy4xLTExLjMgOS0yMC40IDIwLjEtMjAuNCAxMSAwIDIwLjEgOS4yIDIwLjEgMjAuNHMtOSAyMC4zLTIwLjEgMjAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjc1NCA0MjAuNDQ1Yy0xMS41MjYgMS4zOTMtNDQuODYtNTIuNzQxLTQ0Ljg2LTUyLjc0MSAwIDMxLjM0NS0xNi4xMzYgNzIuMjQ3LTUxLjA1MSAxMDEuNzg2IDE2Ljg0MiA1LjE5MiA1NC44NDMgMTkuMTY3IDQ1LjgwMyAzNC40MjEtNy4zMTYgMTIuMzQzLTEyNS41MSA3Ljg4MS0xNTkuNjMyIDQuMDM3LTM0LjEyMiAzLjg0NC0xNTIuMzE2IDguMzA2LTE1OS42MzItNC4wMzctOS4wNDUtMTUuMjUgMjguOTE4LTI5LjIxNCA0NS43ODMtMzQuNDE1LTM0LjkyLTI5LjUzOS01MS4wNTktNzAuNDQ1LTUxLjA1OS0xMDEuNzkyIDAgMC0zMy4zMzQgNTQuMTM0LTQ0Ljg1OSA1Mi43NDEtNS4zNy0uNjUtMTIuNDI0LTI5LjY0NCA5LjM0Ny05OS43MDQgMTAuMjYxLTMzLjAyNCAyMS45OTUtNjAuNDc4IDQwLjE0NC0xMDUuNzc5QzYwLjY4MyA5OC4wNjMgMTA4Ljk4Mi4wMDYgMjI0IDBjMTEzLjczNy4wMDYgMTYzLjE1NiA5Ni4xMzMgMTYwLjI2NCAyMTQuOTYzIDE4LjExOCA0NS4yMjMgMjkuOTEyIDcyLjg1IDQwLjE0NCAxMDUuNzc4IDIxLjc2OCA3MC4wNiAxNC43MTYgOTkuMDUzIDkuMzQ2IDk5LjcwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVpbnNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy42IDQ3NC42aC0xYTE1OC4xIDE1OC4xIDAgMCAxIDAtMzE2LjJjOTQuOSAwIDE2OC4yIDgzLjEgMTU3IDE3Ni42IDQgNS4xIDguMiA5LjYgMTEuMiAxNS4zIDEzLjQtMzAuMyAyMC4zLTYyLjQgMjAuMy05Ny43QzUwMS4xIDExNy41IDM5MS42IDggMjU2LjUgOFMxMiAxMTcuNSAxMiAyNTIuNnMxMDkuNSAyNDQuNiAyNDQuNSAyNDQuNmEyMzcuMzYgMjM3LjM2IDAgMCAwIDcwLjQtMTAuMWMtNS4yLTMuNS04LjktOC4xLTEzLjMtMTIuNXptLS4xLS4xbC40LjF6bTc4LjQtMTY4LjlhOTkuMiA5OS4yIDAgMSAwIDk5LjIgOTkuMiA5OS4xOCA5OS4xOCAwIDAgMC05OS4yLTk5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1b3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC41IDM4Ni43aC0yOS4zYy0xLjUgMTMuNS0xMC41IDMwLjgtMzMgMzAuOC0yMC41IDAtMzUuMy0xNC4yLTQ5LjUtMzUuOCA0NC4yLTM0LjIgNzQuNy04Ny41IDc0LjctMTUzQzQwMy41IDExMS4yIDMwNi44IDMyIDIwNSAzMiAxMDUuMyAzMiA3LjMgMTExLjcgNy4zIDIyOC43YzAgMTM0LjEgMTMxLjMgMjIxLjYgMjQ5IDE4OUMyNzYgNDUxLjMgMzAyIDQ4MCAzNTEuNSA0ODBjODEuOCAwIDkwLjgtNzUuMyA4OS05My4zek0yOTcgMzI5LjJDMjc3LjUgMzAwIDI1My4zIDI3NyAyMDUuNSAyNzdjLTMwLjUgMC01NC4zIDEwLTY5IDIyLjhsMTIuMiAyNC4zYzYuMi0zIDEzLTQgMTkuOC00IDM1LjUgMCA1My43IDMwLjggNjkuMiA2MS4zLTEwIDMtMjAuNyA0LjItMzIuNyA0LjItNzUgMC0xMDcuNS01My0xMDcuNS0xNTYuN0M5Ny41IDEyNC41IDEzMCA3MSAyMDUgNzFjNzYuMiAwIDEwOC43IDUzLjUgMTA4LjcgMTU3LjcuMSA0MS44LTUuNCA3NS42LTE2LjcgMTAwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJQcm9qZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1ODEgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4MSAyMjYuNkM1ODEgMTE5LjEgNDUwLjkgMzIgMjkwLjUgMzJTMCAxMTkuMSAwIDIyNi42QzAgMzIyLjQgMTAzLjMgNDAyIDIzOS40IDQxOC4xVjQ4MGg5OS4xdi02MS41YzI0LjMtMi43IDQ3LjYtNy40IDY5LjQtMTMuOUw0NDggNDgwaDExMmwtNjcuNC0xMTMuN2M1NC41LTM1LjQgODguNC04NC45IDg4LjQtMTM5Ljd6bS00NjYuOCAxNC41YzAtNzMuNSA5OC45LTEzMyAyMjAuOC0xMzNzMjExLjkgNDAuNyAyMTEuOSAxMzNjMCA1MC4xLTI2LjUgODUtNzAuMyAxMDYuNC0yLjQtMS42LTQuNy0yLjktNi40LTMuNy0xMC4yLTUuMi0yNy44LTEwLjUtMjcuOC0xMC41czg2LjYtNi40IDg2LjYtOTIuNy05MC42LTg3LjktOTAuNi04Ny45aC0xOTlWMzYxYy03NC4xLTIxLjUtMTI1LjItNjcuMS0xMjUuMi0xMTkuOXptMjI1LjEgMzguM3YtNTUuNmM1Ny44IDAgODcuOC02LjggODcuOCAyNy4zIDAgMzYuNS0zOC4yIDI4LjMtODcuOCAyOC4zem0tLjkgNzIuNUgzNjVjMTAuOCAwIDE4LjkgMTEuNyAyNCAxOS4yLTE2LjEgMS45LTMzIDIuOC01MC42IDIuOXYtMjIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFzcGJlcnJ5UGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwNyA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDIzMi41bC0zLjctNi41Yy4xLTQ2LjQtMjEuNC02NS4zLTQ2LjUtNzkuNyA3LjYtMiAxNS40LTMuNiAxNy42LTEzLjIgMTMuMS0zLjMgMTUuOC05LjQgMTcuMS0xNS44IDMuNC0yLjMgMTQuOC04LjcgMTMuNi0xOS43IDYuNC00LjQgMTAtMTAuMSA4LjEtMTguMSA2LjktNy41IDguNy0xMy43IDUuOC0xOS40IDguMy0xMC4zIDQuNi0xNS42IDEuMS0yMC45IDYuMi0xMS4yLjctMjMuMi0xNi42LTIxLjItNi45LTEwLjEtMjEuOS03LjgtMjQuMi03LjgtMi42LTMuMi02LTYtMTYuNS00LjctNi44LTYuMS0xNC40LTUtMjIuMy0yLjEtOS4zLTcuMy0xNS41LTEuNC0yMi42LjhDMjcxLjYuNiAyNjkgNS41IDI2My41IDcuNmMtMTIuMy0yLjYtMTYuMSAzLTIyIDguOWwtNi45LS4xYy0xOC42IDEwLjgtMjcuOCAzMi44LTMxLjEgNDQuMS0zLjMtMTEuMy0xMi41LTMzLjMtMzEuMS00NC4xbC02LjkuMWMtNS45LTUuOS05LjctMTEuNS0yMi04LjktNS42LTItOC4xLTctMTkuNC0zLjQtNC42LTEuNC04LjktNC40LTEzLjktNC4zLTIuNi4xLTUuNSAxLTguNyAzLjUtNy45LTMtMTUuNS00LTIyLjMgMi4xLTEwLjUtMS4zLTE0IDEuNC0xNi41IDQuNy0yLjMgMC0xNy4zLTIuMy0yNC4yIDcuOEMyMS4yIDE2IDE1LjggMjggMjIgMzkuMmMtMy41IDUuNC03LjIgMTAuNyAxLjEgMjAuOS0yLjkgNS43LTEuMSAxMS45IDUuOCAxOS40LTEuOCA4IDEuOCAxMy43IDguMSAxOC4xLTEuMiAxMSAxMC4yIDE3LjQgMTMuNiAxOS43IDEuMyA2LjQgNCAxMi40IDE3LjEgMTUuOCAyLjIgOS41IDEwIDExLjIgMTcuNiAxMy4yLTI1LjEgMTQuNC00Ni42IDMzLjMtNDYuNSA3OS43bC0zLjcgNi41Yy0yOC44IDE3LjItNTQuNyA3Mi43LTE0LjIgMTE3LjcgMi42IDE0LjEgNy4xIDI0LjIgMTEgMzUuNCA1LjkgNDUuMiA0NC41IDY2LjMgNTQuNiA2OC44IDE0LjkgMTEuMiAzMC44IDIxLjggNTIuMiAyOS4yQzE1OSA1MDQuMiAxODEgNTEyIDIwMyA1MTJoMWMyMi4xIDAgNDQtNy44IDY0LjItMjguNCAyMS41LTcuNCAzNy4zLTE4IDUyLjItMjkuMiAxMC4yLTIuNSA0OC43LTIzLjYgNTQuNi02OC44IDMuOS0xMS4yIDguNC0yMS4zIDExLTM1LjQgNDAuNi00NS4xIDE0LjctMTAwLjUtMTQtMTE3Ljd6bS0yMi4yLThjLTEuNSAxOC43LTk4LjktNjUuMS04Mi4xLTY3LjkgNDUuNy03LjUgODMuNiAxOS4yIDgyLjEgNjcuOXptLTQzIDkzLjFjLTI0LjUgMTUuOC01OS44IDUuNi03OC44LTIyLjhzLTE0LjYtNjQuMiA5LjktODBjMjQuNS0xNS44IDU5LjgtNS42IDc4LjggMjIuOHMxNC42IDY0LjItOS45IDgwek0yMzguOSAyOS4zYy44IDQuMiAxLjggNi44IDIuOSA3LjYgNS40LTUuOCA5LjgtMTEuNyAxNi44LTE3LjMgMCAzLjMtMS43IDYuOCAyLjUgOS40IDMuNy01IDguOC05LjUgMTUuNS0xMy4zLTMuMiA1LjYtLjYgNy4zIDEuMiA5LjYgNS4xLTQuNCAxMC04LjggMTkuNC0xMi4zLTIuNiAzLjEtNi4yIDYuMi0yLjQgOS44IDUuMy0zLjMgMTAuNi02LjYgMjMuMS04LjktMi44IDMuMS04LjcgNi4zLTUuMSA5LjQgNi42LTIuNSAxNC00LjQgMjIuMS01LjQtMy45IDMuMi03LjEgNi4zLTMuOSA4LjggNy4xLTIuMiAxNi45LTUuMSAyNi40LTIuNmwtNiA2LjFjLS43LjggMTQuMS42IDIzLjkuOC0zLjYgNS03LjIgOS43LTkuMyAxOC4yIDEgMSA1LjguNCAxMC40IDAtNC43IDkuOS0xMi44IDEyLjMtMTQuNyAxNi42IDIuOSAyLjIgNi44IDEuNiAxMS4yLjEtMy40IDYuOS0xMC40IDExLjctMTYgMTcuMyAxLjQgMSAzLjkgMS42IDkuNy45LTUuMiA1LjUtMTEuNCAxMC41LTE4LjggMTUgMS4zIDEuNSA1LjggMS41IDEwIDEuNi02LjcgNi41LTE1LjMgOS45LTIzLjQgMTQuMiA0IDIuNyA2LjkgMi4xIDEwIDIuMS01LjcgNC43LTE1LjQgNy4xLTI0LjQgMTAgMS43IDIuNyAzLjQgMy40IDcuMSA0LjEtOS41IDUuMy0yMy4yIDIuOS0yNyA1LjYuOSAyLjcgMy42IDQuNCA2LjcgNS44LTE1LjQuOS01Ny4zLS42LTY1LjQtMzIuMyAxNS43LTE3LjMgNDQuNC0zNy41IDkzLjctNjIuNi0zOC40IDEyLjgtNzMgMzAtMTAyIDUzLjUtMzQuMy0xNS45LTEwLjgtNTUuOSA1LjgtNzEuOHptLTM0LjQgMTE0LjZjMjQuMi0uMyA1NC4xIDE3LjggNTQgMzQuNy0uMSAxNS0yMSAyNy4xLTUzLjggMjYuOS0zMi4xLS40LTUzLjctMTUuMi01My42LTI5LjggMC0xMS45IDI2LjItMzIuNSA1My40LTMxLjh6bS0xMjMtMTIuOGMzLjctLjcgNS40LTEuNSA3LjEtNC4xLTktMi44LTE4LjctNS4zLTI0LjQtMTAgMy4xIDAgNiAuNyAxMC0yLjEtOC4xLTQuMy0xNi43LTcuNy0yMy40LTE0LjIgNC4yLS4xIDguNyAwIDEwLTEuNi03LjQtNC41LTEzLjYtOS41LTE4LjgtMTUgNS44LjcgOC4zLjEgOS43LS45LTUuNi01LjYtMTIuNy0xMC40LTE2LTE3LjMgNC4zIDEuNSA4LjMgMiAxMS4yLS4xLTEuOS00LjItMTAtNi43LTE0LjctMTYuNiA0LjYuNCA5LjQgMSAxMC40IDAtMi4xLTguNS01LjgtMTMuMy05LjMtMTguMiA5LjgtLjEgMjQuNiAwIDIzLjktLjhsLTYtNi4xYzkuNS0yLjUgMTkuMy40IDI2LjQgMi42IDMuMi0yLjUtLjEtNS42LTMuOS04LjggOC4xIDEuMSAxNS40IDIuOSAyMi4xIDUuNCAzLjUtMy4xLTIuMy02LjMtNS4xLTkuNCAxMi41IDIuMyAxNy44IDUuNiAyMy4xIDguOSAzLjgtMy42LjItNi43LTIuNC05LjggOS40IDMuNCAxNC4zIDcuOSAxOS40IDEyLjMgMS43LTIuMyA0LjQtNCAxLjItOS42IDYuNyAzLjggMTEuOCA4LjMgMTUuNSAxMy4zIDQuMS0yLjYgMi41LTYuMiAyLjUtOS40IDcgNS42IDExLjQgMTEuNSAxNi44IDE3LjMgMS4xLS44IDItMy40IDIuOS03LjYgMTYuNiAxNS45IDQwLjEgNTUuOSA2IDcxLjgtMjktMjMuNS02My42LTQwLjctMTAyLTUzLjUgNDkuMyAyNSA3OCA0NS4zIDkzLjcgNjIuNi04IDMxLjgtNTAgMzMuMi02NS40IDMyLjMgMy4xLTEuNCA1LjgtMy4yIDYuNy01LjgtNC0yLjgtMTcuNi0uNC0yNy4yLTUuNnptNjAuMSAyNC4xYzE2LjggMi44LTgwLjYgODYuNS04Mi4xIDY3LjktMS41LTQ4LjcgMzYuNS03NS41IDgyLjEtNjcuOXpNMzguMiAzNDJjLTIzLjctMTguOC0zMS4zLTczLjcgMTIuNi05OC4zIDI2LjUtNyA5IDEwNy44LTEyLjYgOTguM3ptOTEgOTguMmMtMTMuMyA3LjktNDUuOCA0LjctNjguOC0yNy45LTE1LjUtMjcuNC0xMy41LTU1LjItMi42LTYzLjQgMTYuMy05LjggNDEuNSAzLjQgNjAuOSAyNS42IDE2LjkgMjAgMjQuNiA1NS4zIDEwLjUgNjUuN3ptLTI2LjQtMTE5LjdjLTI0LjUtMTUuOC0yOC45LTUxLjYtOS45LTgwczU0LjMtMzguNiA3OC44LTIyLjggMjguOSA1MS42IDkuOSA4MGMtMTkuMSAyOC40LTU0LjQgMzguNi03OC44IDIyLjh6TTIwNSA0OTZjLTI5LjQgMS4yLTU4LjItMjMuNy01Ny44LTMyLjMtLjQtMTIuNyAzNS44LTIyLjYgNTkuMy0yMiAyMy43LTEgNTUuNiA3LjUgNTUuNyAxOC45LjUgMTEtMjguOCAzNS45LTU3LjIgMzUuNHptNTguOS0xMjQuOWMuMiAyOS43LTI2LjIgNTMuOC01OC44IDU0LTMyLjYuMi01OS4yLTIzLjgtNTkuNC01My40di0uNmMtLjItMjkuNyAyNi4yLTUzLjggNTguOC01NCAzMi42LS4yIDU5LjIgMjMuOCA1OS40IDUzLjR2LjZ6bTgyLjIgNDIuN2MtMjUuMyAzNC42LTU5LjYgMzUuOS03Mi4zIDI2LjMtMTMuMy0xMi40LTMuMi01MC45IDE1LjEtNzIgMjAuOS0yMy4zIDQzLjMtMzguNSA1OC45LTI2LjYgMTAuNSAxMC4zIDE2LjcgNDkuMS0xLjcgNzIuM3ptMjIuOS03My4yYy0yMS41IDkuNC0zOS0xMDUuMy0xMi42LTk4LjMgNDMuOSAyNC43IDM2LjMgNzkuNiAxMi42IDk4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhdmVscnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk4LjI1MiwyMzQuMjIzYy0xLjIwOC0xMC4zNC0xLjctMjAuODI2LTMuNzQ2LTMxYTMxMC4zMDYsMzEwLjMwNiwwLDAsMC05LjYyMi0zNi42LDE4NC4wNjgsMTg0LjA2OCwwLDAsMC0zMC44NzQtNTcuNSwyNTEuMTU0LDI1MS4xNTQsMCwwLDAtMTguODE4LTIxLjY4OSwyMzcuMzYyLDIzNy4zNjIsMCwwLDAtNDcuMTEzLTM2LjExNkEyNDAuOCwyNDAuOCwwLDAsMCwzMzEuMzU2LDI2LjY1Yy0xMS4wMTgtMy4xLTIyLjI3Mi01LjQzMS0zMy41MTUtNy42MTUtNi43OC0xLjMxNC0xMy43NDktMS42NjctMjAuNjI3LTIuNDgyLS4zMTYtLjAzNi0uNi0uMzU4LS45LS41NTNxLTE2LjE0My4wMDktMzIuMjg4LjAwNmMtMi40MS4zODktNC44MDguOTI1LTcuMjM2LDEuMTVhMTc5LjMzMSwxNzkuMzMxLDAsMCwwLTM0LjI1Niw3LjEsMjIxLjUsMjIxLjUsMCwwLDAtMzkuNzY4LDE2LjM1NSwyODEuMzg1LDI4MS4zODUsMCwwLDAtMzguMDgsMjQuMTU4Yy02LjE2Nyw0LjYxLTEyLjI2OCw5LjM2LTE3Ljk3NCwxNC41MThDOTYuNTM5LDg4LjQ5NCw4Ni4zNCw5Ny43Miw3Ni43ODUsMTA3LjU1NWEyNDMuODc4LDI0My44NzgsMCwwLDAtMzMuNjQ4LDQzLjk1LDIwNi40ODgsMjA2LjQ4OCwwLDAsMC0yMC40OTQsNDQuNiwxOTguMiwxOTguMiwwLDAsMC03LjY5MSwzNC43NTlBMjAxLjEzLDIwMS4xMywwLDAsMCwxMy40LDI2Ni4zODVhMjk5LjcxNiwyOTkuNzE2LDAsMCwwLDQuNDI1LDQwLjI0LDIyNi44NjUsMjI2Ljg2NSwwLDAsMCwxNi43Myw1My4zLDIxMC41NDMsMjEwLjU0MywwLDAsMCwyNCwzOS41MjgsMjEzLjU4OSwyMTMuNTg5LDAsMCwwLDI2LjM1OCwyOC40MTZBMjUxLjMxMywyNTEuMzEzLDAsMCwwLDEyNi43LDQ1OC40NTVhMjg3LjgzMSwyODcuODMxLDAsMCwwLDU1LjksMjUuMjc3LDI2OS41LDI2OS41LDAsMCwwLDQwLjY0MSw5LjgzNWM2LjA3MSwxLjAxLDEyLjI3NSwxLjI1MywxOC40MTIsMS44NzNhNC4xNDksNC4xNDksMCwwLDEsMS4xOS41NmgzMi4yODljMi41MDctLjM4OSw1LS45MzcsNy41MjctMS4xNDMsMTYuMzM2LTEuMzMyLDMyLjEwNy01LjMzNSw0Ny40ODktMTAuNzE3QTIxOS45OTIsMjE5Ljk5MiwwLDAsMCwzNzkuMSw0NjAuMzIyYzkuNzQ5LTYuNDQ3LDE5LjM5NS0xMy4wNzcsMjguNzM3LTIwLjEsNS43ODUtNC4zNDgsMTAuOTg4LTkuNSwxNi4zLTE0LjQ1NywzLjk2NC0zLjcsNy43NjQtNy41NzgsMTEuNTEtMTEuNWEyMzIuMTYyLDIzMi4xNjIsMCwwLDAsMzEuNDI3LTQxLjYzOWM5LjU0Mi0xNi4wNDUsMTcuMzU1LTMyLjkwNSwyMi4zLTUwLjkyNiwyLjg1OS0xMC40MTMsNC45NDctMjEuMDQ1LDcuMDE3LTMxLjY1MiwxLjAzMi01LjI3OSwxLjI1MS0xMC43MjMsMS44Ny0xNi4wODcuMDM2LS4zMTcuMzU4LS42LjU1Mi0uOVYyMzYuMDA1QTkuNzU3LDkuNzU3LDAsMCwxLDQ5OC4yNTIsMjM0LjIyM1ptLTE2MS4xMTctMS4xNXMtMTYuNTcyLTIuOTgtMjguNDctMi45OGMtMjcuMiwwLTMzLjU3LDE0LjktMzMuNTcsMzcuMDRWMzYwLjhIMjAxLjU4MlYxNzAuMDYySDI3NS4xdjMxLjkzMWM4LjkyNC0yNi44MjIsMjYuNzcxLTM2LjE4OSw2Mi4wNC0zNi4xODlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxOC4yIDE3Ny4yYy01LjQtMS44LTEwLjgtMy41LTE2LjItNS4xLjktMy43IDEuNy03LjQgMi41LTExLjEgMTIuMy01OS42IDQuMi0xMDcuNS0yMy4xLTEyMy4zLTI2LjMtMTUuMS02OS4yLjYtMTEyLjYgMzguNC00LjMgMy43LTguNSA3LjYtMTIuNSAxMS41LTIuNy0yLjYtNS41LTUuMi04LjMtNy43LTQ1LjUtNDAuNC05MS4xLTU3LjQtMTE4LjQtNDEuNS0yNi4yIDE1LjItMzQgNjAuMy0yMyAxMTYuNyAxLjEgNS42IDIuMyAxMS4xIDMuNyAxNi43LTYuNCAxLjgtMTIuNyAzLjgtMTguNiA1LjlDMzguMyAxOTYuMiAwIDIyNS40IDAgMjU1LjZjMCAzMS4yIDQwLjggNjIuNSA5Ni4zIDgxLjUgNC41IDEuNSA5IDMgMTMuNiA0LjMtMS41IDYtMi44IDExLjktNCAxOC0xMC41IDU1LjUtMi4zIDk5LjUgMjMuOSAxMTQuNiAyNyAxNS42IDcyLjQtLjQgMTE2LjYtMzkuMSAzLjUtMy4xIDctNi4zIDEwLjUtOS43IDQuNCA0LjMgOSA4LjQgMTMuNiAxMi40IDQyLjggMzYuOCA4NS4xIDUxLjcgMTExLjIgMzYuNiAyNy0xNS42IDM1LjgtNjIuOSAyNC40LTEyMC41LS45LTQuNC0xLjktOC45LTMtMTMuNSAzLjItLjkgNi4zLTEuOSA5LjQtMi45IDU3LjctMTkuMSA5OS41LTUwIDk5LjUtODEuNyAwLTMwLjMtMzkuNC01OS43LTkzLjgtNzguNHpNMjgyLjkgOTIuM2MzNy4yLTMyLjQgNzEuOS00NS4xIDg3LjctMzYgMTYuOSA5LjcgMjMuNCA0OC45IDEyLjggMTAwLjQtLjcgMy40LTEuNCA2LjctMi4zIDEwLTIyLjItNS00NC43LTguNi02Ny4zLTEwLjYtMTMtMTguNi0yNy4yLTM2LjQtNDIuNi01My4xIDMuOS0zLjcgNy43LTcuMiAxMS43LTEwLjd6TTE2Ny4yIDMwNy41YzUuMSA4LjcgMTAuMyAxNy40IDE1LjggMjUuOS0xNS42LTEuNy0zMS4xLTQuMi00Ni40LTcuNSA0LjQtMTQuNCA5LjktMjkuMyAxNi4zLTQ0LjUgNC42IDguOCA5LjMgMTcuNSAxNC4zIDI2LjF6bS0zMC4zLTEyMC4zYzE0LjQtMy4yIDI5LjctNS44IDQ1LjYtNy44LTUuMyA4LjMtMTAuNSAxNi44LTE1LjQgMjUuNC00LjkgOC41LTkuNyAxNy4yLTE0LjIgMjYtNi4zLTE0LjktMTEuNi0yOS41LTE2LTQzLjZ6bTI3LjQgNjguOWM2LjYtMTMuOCAxMy44LTI3LjMgMjEuNC00MC42czE1LjgtMjYuMiAyNC40LTM4LjljMTUtMS4xIDMwLjMtMS43IDQ1LjktMS43czMxIC42IDQ1LjkgMS43YzguNSAxMi42IDE2LjYgMjUuNSAyNC4zIDM4LjdzMTQuOSAyNi43IDIxLjcgNDAuNGMtNi43IDEzLjgtMTMuOSAyNy40LTIxLjYgNDAuOC03LjYgMTMuMy0xNS43IDI2LjItMjQuMiAzOS0xNC45IDEuMS0zMC40IDEuNi00Ni4xIDEuNnMtMzAuOS0uNS00NS42LTEuNGMtOC43LTEyLjctMTYuOS0yNS43LTI0LjYtMzlzLTE0LjgtMjYuOC0yMS41LTQwLjZ6bTE4MC42IDUxLjJjNS4xLTguOCA5LjktMTcuNyAxNC42LTI2LjcgNi40IDE0LjUgMTIgMjkuMiAxNi45IDQ0LjMtMTUuNSAzLjUtMzEuMiA2LjItNDcgOCA1LjQtOC40IDEwLjUtMTcgMTUuNS0yNS42em0xNC40LTc2LjVjLTQuNy04LjgtOS41LTE3LjYtMTQuNS0yNi4yLTQuOS04LjUtMTAtMTYuOS0xNS4zLTI1LjIgMTYuMSAyIDMxLjUgNC43IDQ1LjkgOC00LjYgMTQuOC0xMCAyOS4yLTE2LjEgNDMuNHpNMjU2LjIgMTE4LjNjMTAuNSAxMS40IDIwLjQgMjMuNCAyOS42IDM1LjgtMTkuOC0uOS0zOS43LS45LTU5LjUgMCA5LjgtMTIuOSAxOS45LTI0LjkgMjkuOS0zNS44ek0xNDAuMiA1N2MxNi44LTkuOCA1NC4xIDQuMiA5My40IDM5IDIuNSAyLjIgNSA0LjYgNy42IDctMTUuNSAxNi43LTI5LjggMzQuNS00Mi45IDUzLjEtMjIuNiAyLTQ1IDUuNS02Ny4yIDEwLjQtMS4zLTUuMS0yLjQtMTAuMy0zLjUtMTUuNS05LjQtNDguNC0zLjItODQuOSAxMi42LTk0em0tMjQuNSAyNjMuNmMtNC4yLTEuMi04LjMtMi41LTEyLjQtMy45LTIxLjMtNi43LTQ1LjUtMTcuMy02My0zMS4yLTEwLjEtNy0xNi45LTE3LjgtMTguOC0yOS45IDAtMTguMyAzMS42LTQxLjcgNzcuMi01Ny42IDUuNy0yIDExLjUtMy44IDE3LjMtNS41IDYuOCAyMS43IDE1IDQzIDI0LjUgNjMuNi05LjYgMjAuOS0xNy45IDQyLjUtMjQuOCA2NC41em0xMTYuNiA5OGMtMTYuNSAxNS4xLTM1LjYgMjcuMS01Ni40IDM1LjMtMTEuMSA1LjMtMjMuOSA1LjgtMzUuMyAxLjMtMTUuOS05LjItMjIuNS00NC41LTEzLjUtOTIgMS4xLTUuNiAyLjMtMTEuMiAzLjctMTYuNyAyMi40IDQuOCA0NSA4LjEgNjcuOSA5LjggMTMuMiAxOC43IDI3LjcgMzYuNiA0My4yIDUzLjQtMy4yIDMuMS02LjQgNi4xLTkuNiA4Ljl6bTI0LjUtMjQuM2MtMTAuMi0xMS0yMC40LTIzLjItMzAuMy0zNi4zIDkuNi40IDE5LjUuNiAyOS41LjYgMTAuMyAwIDIwLjQtLjIgMzAuNC0uNy05LjIgMTIuNy0xOS4xIDI0LjgtMjkuNiAzNi40em0xMzAuNyAzMGMtLjkgMTIuMi02LjkgMjMuNi0xNi41IDMxLjMtMTUuOSA5LjItNDkuOC0yLjgtODYuNC0zNC4yLTQuMi0zLjYtOC40LTcuNS0xMi43LTExLjUgMTUuMy0xNi45IDI5LjQtMzQuOCA0Mi4yLTUzLjYgMjIuOS0xLjkgNDUuNy01LjQgNjguMi0xMC41IDEgNC4xIDEuOSA4LjIgMi43IDEyLjIgNC45IDIxLjYgNS43IDQ0LjEgMi41IDY2LjN6bTE4LjItMTA3LjVjLTIuOC45LTUuNiAxLjgtOC41IDIuNi03LTIxLjgtMTUuNi00My4xLTI1LjUtNjMuOCA5LjYtMjAuNCAxNy43LTQxLjQgMjQuNS02Mi45IDUuMiAxLjUgMTAuMiAzLjEgMTUgNC43IDQ2LjYgMTYgNzkuMyAzOS44IDc5LjMgNTggMCAxOS42LTM0LjkgNDQuOS04NC44IDYxLjR6bS0xNDkuNy0xNWMyNS4zIDAgNDUuOC0yMC41IDQ1LjgtNDUuOHMtMjAuNS00NS44LTQ1LjgtNDUuOGMtMjUuMyAwLTQ1LjggMjAuNS00NS44IDQ1LjhzMjAuNSA0NS44IDQ1LjggNDUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVhY3RldXJvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUwLjYgMjExLjc0bDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xLTIuMy02LjgtMi4zIDYuOC03LjIuMSA1LjcgNC4zem02My43IDBsNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjItLjEtMi4zLTYuOC0yLjMgNi44LTcuMi4xIDUuNyA0LjN6bS05MS4zIDUwLjVoLTMuNGMtNC44IDAtMy44IDQtMy44IDEyLjEgMCA0LjctMi4zIDYuMS01LjggNi4xcy01LjgtMS40LTUuOC02LjF2LTM2LjZjMC00LjcgMi4zLTYuMSA1LjgtNi4xczUuOCAxLjQgNS44IDYuMWMwIDcuMi0uNyAxMC41IDMuOCAxMC41aDMuNGM0LjctLjEgMy44LTMuOSAzLjgtMTIuMyAwLTkuOS02LjctMTQuMS0xNi44LTE0LjFoLS4yYy0xMC4xIDAtMTYuOCA0LjItMTYuOCAxNC4xVjI3NmMwIDEwLjQgNi43IDE0LjEgMTYuOCAxNC4xaC4yYzEwLjEgMCAxNi44LTMuOCAxNi44LTE0LjEgMC05Ljg2IDEuMS0xMy43Ni0zLjgtMTMuNzZ6bS04MC43IDE3LjRoLTE0Ljd2LTE5LjNIMTM5YzIuNSAwIDMuOC0xLjMgMy44LTMuOHYtMi4xYzAtMi41LTEuMy0zLjgtMy44LTMuOGgtMTEuNHYtMTguM0gxNDJjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yMS43Yy0yLjQtLjEtMy43IDEuMy0zLjcgMy44djU5LjFjMCAyLjUgMS4zIDMuOCAzLjggMy44aDIxLjljMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44em0tNDItMTguNWM0LjYtMiA3LjMtNiA3LjMtMTIuNHYtMTEuOWMwLTEwLjEtNi43LTE0LjEtMTYuOC0xNC4xSDc3LjRjLTIuNSAwLTMuOCAxLjMtMy44IDMuOHY1OS4xYzAgMi41IDEuMyAzLjggMy44IDMuOGgzLjRjMi41IDAgMy44LTEuMyAzLjgtMy44di0yMi45aDUuNmw3LjQgMjMuNWE0LjEgNC4xIDAgMCAwIDQuMyAzLjJoMy4zYzIuOCAwIDQtMS44IDMuMi00LjR6bS0zLjgtMTRjMCA0LjgtMi41IDYuMS02LjEgNi4xaC01Ljh2LTIwLjloNS44YzMuNiAwIDYuMSAxLjMgNi4xIDYuMXpNMTc2IDIyNmEzLjgyIDMuODIgMCAwIDAtNC4yLTMuNGgtNi45YTMuNjggMy42OCAwIDAgMC00IDMuNGwtMTEgNTkuMmMtLjUgMi43LjkgNC4xIDMuNCA0LjFoM2EzLjc0IDMuNzQgMCAwIDAgNC4xLTMuNWwxLjgtMTEuM2gxMi4ybDEuOCAxMS4zYTMuNzQgMy43NCAwIDAgMCA0LjEgMy41aDMuNWMyLjYgMCAzLjktMS40IDMuNC00LjF6bS0xMi4zIDM5LjNsNC43LTI5LjcgNC43IDI5Ljd6bTg5LjMgMjAuMnYtNTMuMmg3LjVjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yNS44Yy0yLjUgMC0zLjggMS4zLTMuOCAzLjh2Mi4xYzAgMi41IDEuMyAzLjggMy44IDMuOGg3LjN2NTMuMmMwIDIuNSAxLjMgMy44IDMuOCAzLjhoMy40YzIuNS4wNCAzLjgtMS4zIDMuOC0zLjc2em0yNDgtLjhoLTE5LjRWMjU4aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjYyIDEuNjIgMCAwIDAtMiAxLjh2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45SDUwMWExLjgxIDEuODEgMCAwIDAgMi0xLjl2LS44YTEuODQgMS44NCAwIDAgMC0yLTEuOTZ6bS05My4xLTYyLjloLS44Yy0xMC4xIDAtMTUuMyA0LjctMTUuMyAxNC4xVjI3NmMwIDkuMyA1LjIgMTQuMSAxNS4zIDE0LjFoLjhjMTAuMSAwIDE1LjMtNC44IDE1LjMtMTQuMXYtNDAuMWMwLTkuMzYtNS4yLTE0LjA2LTE1LjMtMTQuMDZ6bTEwLjIgNTIuNGMtLjEgOC0zIDExLjEtMTAuNSAxMS4xcy0xMC41LTMuMS0xMC41LTExLjF2LTM2LjZjMC03LjkgMy0xMS4xIDEwLjUtMTEuMXMxMC41IDMuMiAxMC41IDExLjF6bS00Ni41LTE0LjVjNi4xLTEuNiA5LjItNi4xIDkuMi0xMy4zdi05LjdjMC05LjQtNS4yLTE0LjEtMTUuMy0xNC4xaC0xMy43YTEuODEgMS44MSAwIDAgMC0yIDEuOXY2M2ExLjgxIDEuODEgMCAwIDAgMiAxLjloMS4yYTEuNzQgMS43NCAwIDAgMCAxLjktMS45di0yNi45aDExLjZsMTAuNCAyNy4yYTIuMzIgMi4zMiAwIDAgMCAyLjMgMS41aDEuNWMxLjQgMCAyLTEgMS41LTIuM3ptLTYuNC0zLjlIMzU1di0yOC41aDEwLjJjNy41IDAgMTAuNSAzLjEgMTAuNSAxMS4xdjYuNGMwIDcuODQtMyAxMS4wNC0xMC41IDExLjA0em04NS45LTMzLjFoLTEzLjdhMS42MiAxLjYyIDAgMCAwLTIgMS44djYzYTEuODEgMS44MSAwIDAgMCAyIDEuOWgxLjJhMS43NCAxLjc0IDAgMCAwIDEuOS0xLjl2LTI2LjFoMTAuNmMxMC4xIDAgMTUuMy00LjggMTUuMy0xNC4xdi0xMC41YzAtOS40LTUuMi0xNC4xLTE1LjMtMTQuMXptMTAuMiAyMi44YzAgNy45LTMgMTEuMS0xMC41IDExLjFoLTEwLjJ2LTI5LjJoMTAuMmM3LjUtLjEgMTAuNSAzLjEgMTAuNSAxMXpNMjU5LjUgMzA4bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTIyNy42LTEzNi4xYTM2NC40MiAzNjQuNDIgMCAwIDAtMzUuNi0xMS4zYzE5LjYtNzggMTEuNi0xMzQuNy0yMi4zLTE1My45QzM5NC43LTEyLjY2IDM0My4zIDExIDI5MSA2MS45NHE1LjEgNC45NSAxMC4yIDEwLjJjODIuNS04MCAxMTkuNi01My41IDEyMC45LTUyLjggMjIuNCAxMi43IDM2IDU1LjggMTUuNSAxMzcuOGE1ODcuODMgNTg3LjgzIDAgMCAwLTg0LjYtMTNDMjgxLjEgNDMuNjQgMjEyLjQgMiAxNzAuOCAyIDE0MCAyIDEyNyAyMyAxMjMuMiAyOS43NGMtMTguMSAzMi0xMy4zIDg0LjIuMSAxMzMuOC03MC41IDIwLjMtMTIwLjcgNTQuMS0xMjAuMyA5NSAuNSA1OS42IDEwMy4yIDg3LjggMTIyLjEgOTIuOC0yMC41IDgxLjktMTAuMSAxMzUuNiAyMi4zIDE1My45IDI4IDE1LjggNzUuMSA2IDEzOC4yLTU1LjJxLTUuMS00Ljk1LTEwLjItMTAuMmMtODIuNSA4MC0xMTkuNyA1My41LTEyMC45IDUyLjgtMjIuMy0xMi42LTM2LTU1LjYtMTUuNS0xMzcuOSAxMi40IDIuOSA0MS44IDkuNSA4NC42IDEzIDcxLjkgMTAwLjQgMTQwLjYgMTQyIDE4Mi4xIDE0MiAzMC44IDAgNDMuOC0yMSA0Ny42LTI3LjcgMTgtMzEuOSAxMy4zLTg0LjEtLjEtMTMzLjggMTUyLjMtNDMuOCAxNTYuMi0xMzAuMiAzMy45LTE3Ni4zek0xMzUuOSAzNi44NGMyLjktNS4xIDExLjktMjAuMyAzNC45LTIwLjMgMzYuOCAwIDk4LjggMzkuNiAxNjMuMyAxMjYuMmE3MTQgNzE0IDAgMCAwLTkzLjkuOSA1NDcuNzYgNTQ3Ljc2IDAgMCAxIDQyLjItNTIuNFEyNzcuMyA4NiAyNzIuMiA4MWE1OTguMjUgNTk4LjI1IDAgMCAwLTUwLjcgNjQuMiA1NjkuNjkgNTY5LjY5IDAgMCAwLTg0LjQgMTQuNmMtLjItMS40LTI0LjMtODIuMi0xLjItMTIzem0zMDQuOCA0MzguM2MtMi45IDUuMS0xMS44IDIwLjMtMzQuOSAyMC4zLTM2LjcgMC05OC43LTM5LjQtMTYzLjMtMTI2LjJhNjk1LjM4IDY5NS4zOCAwIDAgMCA5My45LS45IDU0Ny43NiA1NDcuNzYgMCAwIDEtNDIuMiA1Mi40cTUuMSA1LjI1IDEwLjIgMTAuMmE1ODguNDcgNTg4LjQ3IDAgMCAwIDUwLjctNjQuMmM0Ny4zLTQuNyA4MC4zLTEzLjUgODQuNC0xNC42IDIyLjcgODQuNCA0LjUgMTE3IDEuMiAxMjN6bTkuMS0xMzguNmMtMy42LTExLjktNy43LTI0LjEtMTIuNC0zNi40YTEyLjY3IDEyLjY3IDAgMCAxLTEwLjctNS43bC0uMS4xYTE5LjYxIDE5LjYxIDAgMCAxLTUuNCAzLjZjNS43IDE0LjMgMTAuNiAyOC40IDE0LjcgNDIuMmE1MzUuMyA1MzUuMyAwIDAgMS03MiAxM2MzLjUtNS4zIDE3LjItMjYuMiAzMi4yLTU0LjJhMjQuNiAyNC42IDAgMCAxLTYtMy4yYy0xLjEgMS4yLTMuNiA0LjItMTAuOSA0LjItNi4yIDExLjItMTcuNCAzMC45LTMzLjkgNTUuMmE3MTEuOTEgNzExLjkxIDAgMCAxLTExMi40IDFjLTcuOS0xMS4yLTIxLjUtMzEuMS0zNi44LTU3LjhhMjEgMjEgMCAwIDEtMy0xLjVjLTEuOSAxLjYtMy45IDMuMi0xMi42IDMuMiA2LjMgMTEuMiAxNy41IDMwLjcgMzMuOCA1NC42YTU0OC44MSA1NDguODEgMCAwIDEtNzIuMi0xMS43cTUuODUtMjEgMTQuMS00Mi45Yy0zLjIgMC01LjQuMi04LjQtMWExNy41OCAxNy41OCAwIDAgMS02LjkgMWMtNC45IDEzLjQtOS4xIDI2LjUtMTIuNyAzOS40Qy0zMS43IDI5Ny0xMi4xIDIxNiAxMjYuNyAxNzUuNjRjMy42IDExLjkgNy43IDI0LjEgMTIuNCAzNi40IDEwLjQgMCAxMi45IDMuNCAxNC40IDUuM2ExMiAxMiAwIDAgMSAyLjMtMi4yYy01LjgtMTQuNy0xMC45LTI5LjItMTUuMi00My4zIDctMS44IDMyLjQtOC40IDcyLTEzLTE1LjkgMjQuMy0yNi43IDQzLjktMzIuOCA1NS4zYTE0LjIyIDE0LjIyIDAgMCAxIDYuNCA4IDIzLjQyIDIzLjQyIDAgMCAxIDEwLjItOC40YzYuNS0xMS43IDE3LjktMzEuOSAzNC44LTU2LjlhNzExLjcyIDcxMS43MiAwIDAgMSAxMTIuNC0xYzMxLjUgNDQuNiAyOC45IDQ4LjEgNDIuNSA2NC41YTIxLjQyIDIxLjQyIDAgMCAxIDEwLjQtNy40Yy02LjQtMTEuNC0xNy42LTMxLTM0LjMtNTUuNSA0MC40IDQuMSA2NSAxMCA3Mi4yIDExLjctNCAxNC40LTguOSAyOS4yLTE0LjYgNDQuMmEyMC43NCAyMC43NCAwIDAgMSA2LjggNC4zbC4xLjFhMTIuNzIgMTIuNzIgMCAwIDEgOC45LTUuNmM0LjktMTMuNCA5LjItMjYuNiAxMi44LTM5LjVhMzU5LjcxIDM1OS43MSAwIDAgMSAzNC41IDExYzEwNi4xIDM5LjkgNzQgODcuOSA3Mi42IDkwLjQtMTkuOCAzNS4xLTgwLjEgNTUuMi0xMDUuNyA2Mi41em0tMTE0LjQtMTE0aC0xLjJhMS43NCAxLjc0IDAgMCAwLTEuOSAxLjl2NDkuOGMwIDcuOS0yLjYgMTEuMS0xMC4xIDExLjFzLTEwLjEtMy4xLTEwLjEtMTEuMXYtNDkuOGExLjY5IDEuNjkgMCAwIDAtMS45LTEuOUgzMDlhMS44MSAxLjgxIDAgMCAwLTIgMS45djUxLjVjMCA5LjYgNSAxNC4xIDE1LjEgMTQuMWguNGMxMC4xIDAgMTUuMS00LjYgMTUuMS0xNC4xdi01MS41YTIgMiAwIDAgMC0yLjItMS45ek0zMjEuNyAzMDhsLTIuMy02LjgtMi4zIDYuOC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuM3ptLTMxLjEgNy40bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTUuMS0zMC44aC0xOS40di0yNi43aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjgxIDEuODEgMCAwIDAtMiAxLjl2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45aDIyLjVhMS43NyAxLjc3IDAgMCAwIDItMS45di0uOGExLjgzIDEuODMgMCAwIDAtMi0yLjA2em0tNy40LTk5LjRMMjg2IDE5MmwtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWFkbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjMgNDYuNUgzODguNWMtNDguMSAwLTg5LjkgMzMuMy0xMDAuNCA4MC4zLTEwLjYtNDctNTIuMy04MC4zLTEwMC40LTgwLjNINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djI0NS44YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDg5LjdjMTAyLjIgMCAxMzIuNyAyNC40IDE0Ny4zIDc1IC43IDIuOCA1LjIgMi44IDYgMCAxNC43LTUwLjYgNDUuMi03NSAxNDcuMy03NUg1MjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWOTQuNmMwLTI2LjQtMjEuMy00Ny45LTQ3LjctNDguMXpNMjQyIDMxMS45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjg5YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNVYyNTF6bTAtNjAuOWMwIDEuOS0xLjUgMy41LTMuNSAzLjVINzguMmMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi45YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMjU5LjMgMTIxLjdjMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjI4YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUgzMzcuNWMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi44YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjVWMTkwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNSA1MDRDMTE3LjIgNTA0IDkgMzg3LjggMTMuMiAyNDkuOSAxNiAxNzAuNyA1Ni40IDk3LjcgMTI5LjcgNDkuNWMuMyAwIDEuOS0uNiAxLjEuOC01LjggNS41LTExMS4zIDEyOS44LTE0LjEgMjI2LjQgNDkuOCA0OS41IDkwIDIuNSA5MCAyLjUgMzguNS01MC4xLS42LTEyNS45LS42LTEyNS45LTEwLTI0LjktNDUuNy00MC4xLTQ1LjctNDAuMWwyOC44LTMxLjhjMjQuNCAxMC41IDQzLjIgMzguNyA0My4yIDM4LjcuOC0yOS42LTIxLjktNjEuNC0yMS45LTYxLjRMMjU1LjEgOGw0NC4zIDUwLjFjLTIwLjUgMjguOC0yMS45IDYyLjYtMjEuOSA2Mi42IDEzLjgtMjMgNDMuNS0zOS4zIDQzLjUtMzkuM2wyOC41IDMxLjhjLTI3LjQgOC45LTQ1LjQgMzkuOS00NS40IDM5LjktMTUuOCAyOC41LTI3LjEgODkuNC42IDEyNy4zIDMyLjQgNDQuNiA4Ny43LTIuOCA4Ny43LTIuOCAxMDIuNy05MS45LTEwLjUtMjI1LTEwLjUtMjI1LTYuMS01LjUuOC0yLjguOC0yLjggNTAuMSAzNi41IDExNC42IDg0LjQgMTE2LjIgMjA0LjhDNTAwLjkgNDAwLjIgMzk5IDUwNCAyNTYuNSA1MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZFJpdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My4yIDMySDk0LjhDNDIuNCAzMiAwIDc0LjQgMCAxMjYuOHYyNTguNEMwIDQzNy42IDQyLjQgNDgwIDk0LjggNDgwaDI1OC40YzUyLjQgMCA5NC44LTQyLjQgOTQuOC05NC44VjEyNi44YzAtNTIuNC00Mi40LTk0LjgtOTQuOC05NC44ek0xNDQuOSAyMDAuOXY1Ni4zYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOVYxNTEuOWMwLTEzLjIgMTAuNy0yMy45IDIzLjktMjMuOWgxNTQuMmMwIDI3LTIxLjkgNDguOS00OC45IDQ4LjloLTU2LjNjLTEyLjMtLjYtMjQuNiAxMS42LTI0IDI0em0xNzYuMyA3MmgtNTYuM2MtMTIuMy0uNi0yNC42IDExLjYtMjQgMjR2NTYuM2MwIDI3LTIxLjkgNDguOS00OC45IDQ4LjlWMjQ3LjljMC0xMy4yIDEwLjctMjMuOSAyMy45LTIzLjloMTU0LjJjMCAyNy0yMS45IDQ4LjktNDguOSA0OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRkaXRBbGllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzMgMTM4LjZjLTI1LjIgMC00Ni4zLTE3LjUtNTEuOS00MWwwIDBjLTMwLjYgNC4zLTU0LjIgMzAuNy01NC4yIDYyLjRsMCAuMmM0Ny40IDEuOCA5MC42IDE1LjEgMTI0LjkgMzYuM2MxMi42LTkuNyAyOC40LTE1LjUgNDUuNS0xNS41YzQxLjMgMCA3NC43IDMzLjQgNzQuNyA3NC43YzAgMjkuOC0xNy40IDU1LjUtNDIuNyA2Ny41Yy0yLjQgODYuOC05NyAxNTYuNi0yMTMuMiAxNTYuNlM0NS41IDQxMC4xIDQzIDMyMy40QzE3LjYgMzExLjUgMCAyODUuNyAwIDI1NS43YzAtNDEuMyAzMy40LTc0LjcgNzQuNy03NC43YzE3LjIgMCAzMyA1LjggNDUuNyAxNS42YzM0LTIxLjEgNzYuOC0zNC40IDEyMy43LTM2LjRsMC0uM2MwLTQ0LjMgMzMuNy04MC45IDc2LjgtODUuNUMzMjUuOCA1MC4yIDM0Ny4yIDMyIDM3MyAzMmMyOS40IDAgNTMuMyAyMy45IDUzLjMgNTMuM3MtMjMuOSA1My4zLTUzLjMgNTMuM3pNMTU3LjUgMjU1LjNjLTIwLjkgMC0zOC45IDIwLjgtNDAuMiA0Ny45czE3LjEgMzguMSAzOCAzOC4xczM2LjYtOS44IDM3LjgtMzYuOXMtMTQuNy00OS4xLTM1LjctNDkuMXpNMzk1IDMwMy4xYy0xLjItMjcuMS0xOS4yLTQ3LjktNDAuMi00Ny45cy0zNi45IDIyLTM1LjcgNDkuMWMxLjIgMjcuMSAxNi45IDM2LjkgMzcuOCAzNi45czM5LjMtMTEgMzgtMzguMXptLTYwLjEgNzAuOGMxLjUtMy42LTEtNy43LTQuOS04LjFjLTIzLTIuMy00Ny45LTMuNi03My44LTMuNnMtNTAuOCAxLjMtNzMuOCAzLjZjLTMuOSAuNC02LjQgNC41LTQuOSA4LjFjMTIuOSAzMC44IDQzLjMgNTIuNCA3OC43IDUyLjRzNjUuOC0yMS42IDc4LjctNTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2QzAgMTE0LjYgMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NnMtMTE0LjYgMjU2LTI1NiAyNTZMMzcuMSA1MTJjLTEzLjcgMC0yMC41LTE2LjUtMTAuOS0yNi4yTDc1IDQzN0MyOC43IDM5MC43IDAgMzI2LjcgMCAyNTZ6TTM0OS42IDE1My42YzIzLjYgMCA0Mi43LTE5LjEgNDIuNy00Mi43cy0xOS4xLTQyLjctNDIuNy00Mi43Yy0yMC42IDAtMzcuOCAxNC42LTQxLjggMzRjLTM0LjUgMy43LTYxLjQgMzMtNjEuNCA2OC40bDAgLjJjLTM3LjUgMS42LTcxLjggMTIuMy05OSAyOS4xYy0xMC4xLTcuOC0yMi44LTEyLjUtMzYuNS0xMi41Yy0zMyAwLTU5LjggMjYuOC01OS44IDU5LjhjMCAyNCAxNC4xIDQ0LjYgMzQuNCA1NC4xYzIgNjkuNCA3Ny42IDEyNS4yIDE3MC42IDEyNS4yczE2OC43LTU1LjkgMTcwLjYtMTI1LjNjMjAuMi05LjYgMzQuMS0zMC4yIDM0LjEtNTRjMC0zMy0yNi44LTU5LjgtNTkuOC01OS44Yy0xMy43IDAtMjYuMyA0LjYtMzYuNCAxMi40Yy0yNy40LTE3LTYyLjEtMjcuNy0xMDAtMjkuMWwwLS4yYzAtMjUuNCAxOC45LTQ2LjUgNDMuNC00OS45bDAgMGM0LjQgMTguOCAyMS4zIDMyLjggNDEuNSAzMi44ek0xNzcuMSAyNDYuOWMxNi43IDAgMjkuNSAxNy42IDI4LjUgMzkuM3MtMTMuNSAyOS42LTMwLjMgMjkuNnMtMzEuNC04LjgtMzAuNC0zMC41czE1LjQtMzguMyAzMi4xLTM4LjN6bTE5MC4xIDM4LjNjMSAyMS43LTEzLjcgMzAuNS0zMC40IDMwLjVzLTI5LjMtNy45LTMwLjMtMjkuNmMtMS0yMS43IDExLjgtMzkuMyAyOC41LTM5LjNzMzEuMiAxNi42IDMyLjEgMzguM3ptLTQ4LjEgNTYuN2MtMTAuMyAyNC42LTM0LjYgNDEuOS02MyA0MS45cy01Mi43LTE3LjMtNjMtNDEuOWMtMS4yLTIuOSAuOC02LjIgMy45LTYuNWMxOC40LTEuOSAzOC4zLTIuOSA1OS4xLTIuOXM0MC43IDEgNTkuMSAyLjljMy4xIC4zIDUuMSAzLjYgMy45IDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MS41MiAyODUuNTZjMzMuNjUgMCA4Mi4zNC02Ljk0IDgyLjM0LTQ3IC4yMi02Ljc0Ljg2LTEuODItMjAuODgtOTYuMjQtNC42Mi0xOS4xNS04LjY4LTI3Ljg0LTQyLjMxLTQ0LjY1LTI2LjA5LTEzLjM0LTgyLjkyLTM1LjM3LTk5LjczLTM1LjM3LTE1LjY2IDAtMjAuMiAyMC4xNy0zOC44NyAyMC4xNy0xOCAwLTMxLjMxLTE1LjA2LTQ4LjEyLTE1LjA2LTE2LjE0IDAtMjYuNjYgMTEtMzQuNzggMzMuNjItMjcuNSA3Ny41NS0yNi4yOCA3NC4yNy0yNi4xMiA3OC4yNyAwIDI0LjggOTcuNjQgMTA2LjExIDIyOC40NyAxMDYuMTFNNDI5IDI1NC44NGM0LjY1IDIyIDQuNjUgMjQuMzUgNC42NSAyNy4yNSAwIDM3LjY2LTQyLjMzIDU4LjU2LTk4IDU4LjU2LTEyNS43NC4wOC0yMzUuOTEtNzMuNjUtMjM1LjkxLTEyMi4zM2E0OS41NSA0OS41NSAwIDAgMSA0LjA2LTE5LjcyQzU4LjU2IDIwMC44NiAwIDIwOC45MyAwIDI2MC42M2MwIDg0LjY3IDIwMC42MyAxODkgMzU5LjQ5IDE4OSAxMjEuNzkgMCAxNTIuNTEtNTUuMDggMTUyLjUxLTk4LjU4IDAtMzQuMjEtMjkuNTktNzMuMDUtODIuOTMtOTYuMjRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVucmVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNCAxNjkuMWMwIDExMC40LTYxIDIwNS40LTE0Ny42IDI0Ny40QzMwIDM3My4yIDggMzE3LjcgOCAyNTYuNiA4IDEzMy45IDk3LjEgMzIuMiAyMTQgMTIuNXYxNTYuNnpNMjU1IDUwNGMtNDIuOSAwLTgzLjMtMTEtMTE4LjUtMzAuNEMxOTMuNyA0MzcuNSAyMzkuOSAzODIuOSAyNTUgMzE5YzE1LjUgNjMuOSA2MS43IDExOC41IDExOC44IDE1NC43QzMzOC43IDQ5MyAyOTguMyA1MDQgMjU1IDUwNHptMTkwLjYtODcuNUMzNTkgMzc0LjUgMjk4IDI3OS42IDI5OCAxNjkuMVYxMi41YzExNi45IDE5LjcgMjA2IDEyMS40IDIwNiAyNDQuMSAwIDYxLjEtMjIgMTE2LjYtNTguNCAxNTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVwbHlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0ODBIMTI4QzU3LjYgNDgwIDAgNDIyLjQgMCAzNTJWMTYwQzAgODkuNiA1Ny42IDMyIDEyOCAzMmgxOTJjNzAuNCAwIDEyOCA1Ny42IDEyOCAxMjh2MTkyYzAgNzAuNC01Ny42IDEyOC0xMjggMTI4ek0xOTMuNCAyNzMuMmMtNi4xLTItMTEuNi0zLjEtMTYuNC0zLjEtNy4yIDAtMTMuNSAxLjktMTguOSA1LjYtNS40IDMuNy05LjYgOS0xMi44IDE1LjhoLTEuMWwtNC4yLTE4LjNoLTI4djEzOC45aDM2LjF2LTg5LjdjMS41LTUuNCA0LjQtOS44IDguNy0xMy4yIDQuMy0zLjQgOS44LTUuMSAxNi4yLTUuMSA0LjYgMCA5LjggMSAxNS42IDMuMWw0LjgtMzR6bTExNS4yIDEwMy40Yy0zLjIgMi40LTcuNyA0LjgtMTMuNyA3LjEtNiAyLjMtMTIuOCAzLjUtMjAuNCAzLjUtMTIuMiAwLTIxLjEtMy0yNi41LTguOS01LjUtNS45LTguNS0xNC43LTktMjYuNGg4My4zYy45LTQuOCAxLjYtOS40IDIuMS0xMy45LjUtNC40LjctOC42LjctMTIuNSAwLTEwLjctMS42LTE5LjctNC43LTI2LjktMy4yLTcuMi03LjMtMTMtMTIuNS0xNy4yLTUuMi00LjMtMTEuMS03LjMtMTcuOC05LjItNi43LTEuOC0xMy41LTIuOC0yMC42LTIuOC0yMS4xIDAtMzcuNSA2LjEtNDkuMiAxOC4zcy0xNy41IDMwLjUtMTcuNSA1NWMwIDIyLjggNS4yIDQwLjcgMTUuNiA1My43IDEwLjQgMTMuMSAyNi44IDE5LjYgNDkuMiAxOS42IDEwLjcgMCAyMC45LTEuNSAzMC40LTQuNiA5LjUtMy4xIDE3LjEtNi44IDIyLjYtMTEuMmwtMTItMjMuNnptLTIxLjgtNzAuM2MzLjggNS40IDUuMyAxMy4xIDQuNiAyMy4xaC01MS43Yy45LTkuNCAzLjctMTcgOC4yLTIyLjYgNC41LTUuNiAxMS41LTguNSAyMS04LjUgOC4yLS4xIDE0LjEgMi42IDE3LjkgOHptNzkuOSAyLjVjNC4xIDMuOSA5LjQgNS44IDE2LjEgNS44IDcgMCAxMi42LTEuOSAxNi43LTUuOHM2LjEtOS4xIDYuMS0xNS42LTItMTEuNi02LjEtMTUuNGMtNC4xLTMuOC05LjYtNS43LTE2LjctNS43LTYuNyAwLTEyIDEuOS0xNi4xIDUuNy00LjEgMy44LTYuMSA4LjktNi4xIDE1LjRzMiAxMS43IDYuMSAxNS42em0wIDEwMC41YzQuMSAzLjkgOS40IDUuOCAxNi4xIDUuOCA3IDAgMTIuNi0xLjkgMTYuNy01LjhzNi4xLTkuMSA2LjEtMTUuNi0yLTExLjYtNi4xLTE1LjRjLTQuMS0zLjgtOS42LTUuNy0xNi43LTUuNy02LjcgMC0xMiAxLjktMTYuMSA1LjctNC4xIDMuOC02LjEgOC45LTYuMSAxNS40IDAgNi42IDIgMTEuNyA2LjEgMTUuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVzZWFyY2hnYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0yNjIuMiAzMzQuNGMtNi42IDMtMzMuMiA2LTUwLTE0LjItOS4yLTEwLjYtMjUuMy0zMy4zLTQyLjItNjMuNi04LjkgMC0xNC43IDAtMjEuNC0uNnY0Ni40YzAgMjMuNSA2IDIxLjIgMjUuOCAyMy45djguMWMtNi45LS4zLTIzLjEtLjgtMzUuNi0uOC0xMy4xIDAtMjYuMS42LTMzLjYuOHYtOC4xYzE1LjUtMi45IDIyLTEuMyAyMi0yMy45VjIyNWMwLTIyLjYtNi40LTIxLTIyLTIzLjlWMTkzYzI1LjggMSA1My4xLS42IDcwLjktLjYgMzEuNyAwIDU1LjkgMTQuNCA1NS45IDQ1LjYgMCAyMS4xLTE2LjcgNDIuMi0zOS4yIDQ3LjUgMTMuNiAyNC4yIDMwIDQ1LjYgNDIuMiA1OC45IDcuMiA3LjggMTcuMiAxNC43IDI3LjIgMTQuN3Y3LjN6bTIyLjktMTM1Yy0yMy4zIDAtMzIuMi0xNS43LTMyLjItMzIuMlYxNjdjMC0xMi4yIDguOC0zMC40IDM0LTMwLjRzMzAuNCAxNy45IDMwLjQgMTcuOWwtMTAuNyA3LjJzLTUuNS0xMi41LTE5LjctMTIuNWMtNy45IDAtMTkuNyA3LjMtMTkuNyAxOS43djI2LjhjMCAxMy40IDYuNiAyMy4zIDE3LjkgMjMuMyAxNC4xIDAgMjEuNS0xMC45IDIxLjUtMjYuOGgtMTcuOXYtMTAuN2gzMC40YzAgMjAuNSA0LjcgNDkuOS0zNCA0OS45em0tMTE2LjUgNDQuN2MtOS40IDAtMTMuNi0uMy0yMC0uOHYtNjkuN2M2LjQtLjYgMTUtLjYgMjIuNS0uNiAyMy4zIDAgMzcuMiAxMi4yIDM3LjIgMzQuNSAwIDIxLjktMTUgMzYuNi0zOS43IDM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlc29sdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODEuMiAyNzguMmM0Ni0xMy4zIDQ5LjYtMjMuNSA0NC00My40TDMxNCAxOTUuNWMtNi4xLTIwLjktMTguNC0yOC4xLTcxLjEtMTIuOEw1NC43IDIzNi44bDI4LjYgOTguNiAxOTcuOS01Ny4yek0yNDguNSA4QzEzMS40IDggMzMuMiA4OC43IDcuMiAxOTcuNWwyMjEuOS02My45YzM0LjgtMTAuMiA1NC4yLTExLjcgNzkuMy04LjIgMzYuMyA2LjEgNTIuNyAyNSA2MS40IDU1LjJsMTAuNyAzNy44YzguMiAyOC4xIDEgNTAuNi0yMy41IDczLjYtMTkuNCAxNy40LTMxLjIgMjQuNS02MS40IDMzLjJMMjAzIDM1MS44bDIyMC40IDI3LjEgOS43IDM0LjItNDguMSAxMy4zLTI4Ni44LTM3LjMgMjMgODAuMmMzNi44IDIyIDgwLjMgMzQuNyAxMjYuMyAzNC43IDEzNyAwIDI0OC41LTExMS40IDI0OC41LTI0OC4zQzQ5NyAxMTkuNCAzODUuNSA4IDI0OC41IDh6TTM4LjMgMzg4LjZMMCAyNTYuOGMwIDQ4LjUgMTQuMyA5My40IDM4LjMgMTMxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJldiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODkuNjcgMjc0Ljg5YTY1LjU3IDY1LjU3IDAgMSAxLTY1LjU2LTY1LjU2IDY1LjY0IDY1LjY0IDAgMCAxIDY1LjU2IDY1LjU2em0xMzkuNTUtNS4wNWgtLjEzYTIwNC42OSAyMDQuNjkgMCAwIDAtNzQuMzItMTUzbC00NS4zOCAyNi4yYTE1Ny4wNyAxNTcuMDcgMCAwIDEgNzEuODEgMTMxLjg0QzM4MS4yIDM2MS41IDMxMC43MyA0MzIgMjI0LjExIDQzMlM2NyAzNjEuNSA2NyAyNzQuODhjMC04MS44OCA2My0xNDkuMjcgMTQzLTE1Ni40M3YzOS4xMmwxMDguNzctNjIuNzlMMjEwIDMydjM4LjMyYy0xMDYuNyA3LjI1LTE5MSA5Ni0xOTEgMjA0LjU3IDAgMTExLjU5IDg5LjEyIDIwMi4yOSAyMDAuMDYgMjA1di4xMWgyMTAuMTZWMjY5Ljg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2NrZXRjaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4NC4wNDYsMjI0LjhhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNywzNC4yMTcsMCwwLDAsMjg0LjA0NiwyMjQuOFptLTExMC40NSwwYTM0LjExNCwzNC4xMTQsMCwxLDAsMzQuMzE3LDM0LjExM0EzNC4yMTcsMzQuMjE3LDAsMCwwLDE3My42LDIyNC44Wm0yMjAuOTIzLDBhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNSwzNC4yMTUsMCwwLDAsMzk0LjUxOSwyMjQuOFptMTUzLjgwNy01NS4zMTljLTE1LjUzNS0yNC4xNzItMzcuMzEtNDUuNTctNjQuNjgxLTYzLjYxOC01Mi44ODYtMzQuODE3LTEyMi4zNzQtNTQtMTk1LjY2Ni01NGE0MDUuOTc1LDQwNS45NzUsMCwwLDAtNzIuMDMyLDYuMzU3LDIzOC41MjQsMjM4LjUyNCwwLDAsMC00OS41MS0zNi41ODhDOTkuNjg0LTExLjcsNDAuODU5LjcxMSwxMS4xMzUsMTEuNDIxQTE0LjI5MSwxNC4yOTEsMCwwLDAsNS41OCwzNC43ODJDMjYuNTQyLDU2LjQ1OCw2MS4yMjIsOTkuMyw1Mi43LDEzOC4yNTJjLTMzLjE0MiwzMy45LTUxLjExMiw3NC43NzYtNTEuMTEyLDExNy4zMzcsMCw0My4zNzIsMTcuOTcsODQuMjQ4LDUxLjExMiwxMTguMTQ4LDguNTI2LDM4Ljk1Ni0yNi4xNTQsODEuODE2LTQ3LjExNiwxMDMuNDkxYTE0LjI4NCwxNC4yODQsMCwwLDAsNS41NTUsMjMuMzRjMjkuNzI0LDEwLjcwOSw4OC41NDksMjMuMTQ3LDE1NS4zMjQtMTAuMmEyMzguNjc5LDIzOC42NzksMCwwLDAsNDkuNTEtMzYuNTg5QTQwNS45NzIsNDA1Ljk3MiwwLDAsMCwyODgsNDYwLjE0YzczLjMxMywwLDE0Mi44LTE5LjE1OSwxOTUuNjY3LTUzLjk3NSwyNy4zNzEtMTguMDQ5LDQ5LjE0NS0zOS40MjYsNjQuNjc5LTYzLjYxOSwxNy4zMDktMjYuOTIzLDI2LjA3LTU1LjkxNiwyNi4wNy04Ni4xMjVDNTc0LjM5NCwyMjUuNCw1NjUuNjM0LDE5Ni40Myw1NDguMzI2LDE2OS40ODVaTTI4NC45ODcsNDA5LjlhMzQ1LjY1LDM0NS42NSwwLDAsMS04OS40NDYtMTEuNWwtMjAuMTI5LDE5LjM5M2ExODQuMzY2LDE4NC4zNjYsMCwwLDEtMzcuMTM4LDI3LjU4NSwxNDUuNzY3LDE0NS43NjcsMCwwLDEtNTIuNTIyLDE0Ljg3Yy45ODMtMS43NzEsMS44ODEtMy41NjMsMi44NDItNS4zNTZxMzAuMjU4LTU1LjY4LDE2LjMyNS0xMDAuMDc4Yy0zMi45OTItMjUuOTYyLTUyLjc3OC01OS4yLTUyLjc3OC05NS40LDAtODMuMSwxMDQuMjU0LTE1MC40NjksMjMyLjg0Ni0xNTAuNDY5czIzMi44NjcsNjcuMzczLDIzMi44NjcsMTUwLjQ2OUM1MTcuODU0LDM0Mi41MjUsNDEzLjYsNDA5LjksMjg0Ljk4Nyw0MDkuOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9ja3JtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNTcuNCA0MTkuNWgtOTBsLTExMi0xMzEuM2MtMTcuOS0yMC40LTMuOS01Ni4xIDI2LjYtNTYuMWg3NS4zbC04NC42LTk5LjMtODQuMyA5OC45aC05MEwxOTMuNSA2Ny4yYzE0LjQtMTguNCA0MS4zLTE3LjMgNTQuNSAwbDE1Ny43IDE4NS4xYzE5IDIyLjggMiA1Ny4yLTI3LjYgNTYuMS0uNiAwLTc0LjIuMi03NC4yLjJsMTAxLjUgMTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA4LjUyLDI0OS43NSw0ODYuNywyMzYuMjRjLS4xNy0yLS4zNC0zLjkzLS41NS01Ljg4bDE4LjcyLTE3LjVhNy4zNSw3LjM1LDAsMCwwLTIuNDQtMTIuMjVsLTI0LTljLS41NC0xLjg4LTEuMDgtMy43OC0xLjY3LTUuNjRsMTUtMjAuODNhNy4zNSw3LjM1LDAsMCwwLTQuNzktMTEuNTRsLTI1LjQyLTQuMTVjLS45LTEuNzMtMS43OS0zLjQ1LTIuNzMtNS4xNWwxMC42OC0yMy40MmE3LjM1LDcuMzUsMCwwLDAtNi45NS0xMC4zOWwtMjUuODIuOTFxLTEuNzktMi4yMi0zLjYxLTQuNEw0MzksODEuODRBNy4zNiw3LjM2LDAsMCwwLDQzMC4xNiw3M0w0MDUsNzguOTNxLTIuMTctMS44My00LjQtMy42MWwuOTEtMjUuODJhNy4zNSw3LjM1LDAsMCwwLTEwLjM5LTdMMzY3LjcsNTMuMjNjLTEuNy0uOTQtMy40My0xLjg0LTUuMTUtMi43M0wzNTguNCwyNS4wOGE3LjM1LDcuMzUsMCwwLDAtMTEuNTQtNC43OUwzMjYsMzUuMjZjLTEuODYtLjU5LTMuNzUtMS4xMy01LjY0LTEuNjdsLTktMjRhNy4zNSw3LjM1LDAsMCwwLTEyLjI1LTIuNDRsLTE3LjUsMTguNzJjLTEuOTUtLjIxLTMuOTEtLjM4LTUuODgtLjU1TDI2Mi4yNSwzLjQ4YTcuMzUsNy4zNSwwLDAsMC0xMi41LDBMMjM2LjI0LDI1LjNjLTIsLjE3LTMuOTMuMzQtNS44OC41NUwyMTIuODYsNy4xM2E3LjM1LDcuMzUsMCwwLDAtMTIuMjUsMi40NGwtOSwyNGMtMS44OS41NS0zLjc5LDEuMDgtNS42NiwxLjY4bC0yMC44Mi0xNWE3LjM1LDcuMzUsMCwwLDAtMTEuNTQsNC43OWwtNC4xNSwyNS40MWMtMS43My45LTMuNDUsMS43OS01LjE2LDIuNzNMMTIwLjg4LDQyLjU1YTcuMzUsNy4zNSwwLDAsMC0xMC4zOSw3bC45MiwyNS44MWMtMS40OSwxLjE5LTMsMi4zOS00LjQyLDMuNjFMODEuODQsNzNBNy4zNiw3LjM2LDAsMCwwLDczLDgxLjg0TDc4LjkzLDEwN2MtMS4yMywxLjQ1LTIuNDMsMi45My0zLjYyLDQuNDFsLTI1LjgxLS45MWE3LjQyLDcuNDIsMCwwLDAtNi4zNywzLjI2LDcuMzUsNy4zNSwwLDAsMC0uNTcsNy4xM2wxMC42NiwyMy40MWMtLjk0LDEuNy0xLjgzLDMuNDMtMi43Myw1LjE2TDI1LjA4LDE1My42YTcuMzUsNy4zNSwwLDAsMC00Ljc5LDExLjU0bDE1LDIwLjgyYy0uNTksMS44Ny0xLjEzLDMuNzctMS42OCw1LjY2bC0yNCw5YTcuMzUsNy4zNSwwLDAsMC0yLjQ0LDEyLjI1bDE4LjcyLDE3LjVjLS4yMSwxLjk1LS4zOCwzLjkxLS41NSw1Ljg4TDMuNDgsMjQ5Ljc1YTcuMzUsNy4zNSwwLDAsMCwwLDEyLjVMMjUuMywyNzUuNzZjLjE3LDIsLjM0LDMuOTIuNTUsNS44N0w3LjEzLDI5OS4xM2E3LjM1LDcuMzUsMCwwLDAsMi40NCwxMi4yNWwyNCw5Yy41NSwxLjg5LDEuMDgsMy43OCwxLjY4LDUuNjVsLTE1LDIwLjgzYTcuMzUsNy4zNSwwLDAsMCw0Ljc5LDExLjU0bDI1LjQyLDQuMTVjLjksMS43MiwxLjc5LDMuNDUsMi43Myw1LjE0TDQyLjU2LDM5MS4xMmE3LjM1LDcuMzUsMCwwLDAsLjU3LDcuMTMsNy4xMyw3LjEzLDAsMCwwLDYuMzcsMy4yNmwyNS44My0uOTFxMS43NywyLjIyLDMuNiw0LjRMNzMsNDMwLjE2QTcuMzYsNy4zNiwwLDAsMCw4MS44NCw0MzlMMTA3LDQzMy4wN3EyLjE4LDEuODMsNC40MSwzLjYxbC0uOTIsMjUuODJhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LDYuOTVsMjMuNDMtMTAuNjhjMS42OS45NCwzLjQyLDEuODMsNS4xNCwyLjczbDQuMTUsMjUuNDJhNy4zNCw3LjM0LDAsMCwwLDExLjU0LDQuNzhsMjAuODMtMTVjMS44Ni42LDMuNzYsMS4xMyw1LjY1LDEuNjhsOSwyNGE3LjM2LDcuMzYsMCwwLDAsMTIuMjUsMi40NGwxNy41LTE4LjcyYzEuOTUuMjEsMy45Mi4zOCw1Ljg4LjU1bDEzLjUxLDIxLjgyYTcuMzUsNy4zNSwwLDAsMCwxMi41LDBsMTMuNTEtMjEuODJjMi0uMTcsMy45My0uMzQsNS44OC0uNTZsMTcuNSwxOC43M2E3LjM2LDcuMzYsMCwwLDAsMTIuMjUtMi40NGw5LTI0YzEuODktLjU1LDMuNzgtMS4wOCw1LjY1LTEuNjhsMjAuODIsMTVhNy4zNCw3LjM0LDAsMCwwLDExLjU0LTQuNzhsNC4xNS0yNS40MmMxLjcyLS45LDMuNDUtMS43OSw1LjE1LTIuNzNsMjMuNDIsMTAuNjhhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LTYuOTVsLS45MS0yNS44MnEyLjIyLTEuNzksNC40LTMuNjFMNDMwLjE2LDQzOWE3LjM2LDcuMzYsMCwwLDAsOC44NC04Ljg0TDQzMy4wNyw0MDVxMS44My0yLjE3LDMuNjEtNC40bDI1LjgyLjkxYTcuMjMsNy4yMywwLDAsMCw2LjM3LTMuMjYsNy4zNSw3LjM1LDAsMCwwLC41OC03LjEzTDQ1OC43NywzNjcuN2MuOTQtMS43LDEuODMtMy40MywyLjczLTUuMTVsMjUuNDItNC4xNWE3LjM1LDcuMzUsMCwwLDAsNC43OS0xMS41NGwtMTUtMjAuODNjLjU5LTEuODcsMS4xMy0zLjc2LDEuNjctNS42NWwyNC05YTcuMzUsNy4zNSwwLDAsMCwyLjQ0LTEyLjI1bC0xOC43Mi0xNy41Yy4yMS0xLjk1LjM4LTMuOTEuNTUtNS44N2wyMS44Mi0xMy41MWE3LjM1LDcuMzUsMCwwLDAsMC0xMi41Wm0tMTUxLDEyOS4wOEExMy45MSwxMy45MSwwLDAsMCwzNDEsMzg5LjUxbC03LjY0LDM1LjY3QTE4Ny41MSwxODcuNTEsMCwwLDEsMTc3LDQyNC40NGwtNy42NC0zNS42NmExMy44NywxMy44NywwLDAsMC0xNi40Ni0xMC42OGwtMzEuNTEsNi43NmExODcuMzgsMTg3LjM4LDAsMCwxLTE2LjI2LTE5LjIxSDI1OC4zYzEuNzIsMCwyLjg5LS4yOSwyLjg5LTEuOTFWMzA5LjU1YzAtMS41Ny0xLjE3LTEuOTEtMi44OS0xLjkxSDIxMy40N2wuMDUtMzQuMzVIMjYyYzQuNDEsMCwyMy42NiwxLjI4LDI5Ljc5LDI1Ljg3LDEuOTEsNy41NSw2LjE3LDMyLjE0LDkuMDYsNDAsMi44OSw4LjgyLDE0LjYsMjYuNDYsMjcuMSwyNi40Nkg0MDdhMTg3LjMsMTg3LjMsMCwwLDEtMTcuMzQsMjAuMDlabTI1Ljc3LDM0LjQ5QTE1LjI0LDE1LjI0LDAsMSwxLDM2OCwzOTguMDhoLjQ0QTE1LjIzLDE1LjIzLDAsMCwxLDM4My4yNCw0MTMuMzJabS0yMjUuNjItLjY4YTE1LjI0LDE1LjI0LDAsMSwxLTE1LjI1LTE1LjI1aC40NUExNS4yNSwxNS4yNSwwLDAsMSwxNTcuNjIsNDEyLjY0Wk02OS41NywyMzQuMTVsMzIuODMtMTQuNmExMy44OCwxMy44OCwwLDAsMCw3LjA2LTE4LjMzTDEwMi42OSwxODZoMjYuNTZWMzA1LjczSDc1LjY1QTE4Ny42NSwxODcuNjUsMCwwLDEsNjkuNTcsMjM0LjE1Wk01OC4zMSwxOTguMDlhMTUuMjQsMTUuMjQsMCwwLDEsMTUuMjMtMTUuMjVINzRhMTUuMjQsMTUuMjQsMCwxLDEtMTUuNjcsMTUuMjRabTE1NS4xNiwyNC40OS4wNS0zNS4zMmg2My4yNmMzLjI4LDAsMjMuMDcsMy43NywyMy4wNywxOC42MiwwLDEyLjI5LTE1LjE5LDE2LjctMjcuNjgsMTYuN1pNMzk5LDMwNi43MWMtOS44LDEuMTMtMjAuNjMtNC4xMi0yMi0xMC4wOS01Ljc4LTMyLjQ5LTE1LjM5LTM5LjQtMzAuNTctNTEuNCwxOC44Ni0xMS45NSwzOC40Ni0yOS42NCwzOC40Ni01My4yNiwwLTI1LjUyLTE3LjQ5LTQxLjU5LTI5LjQtNDkuNDgtMTYuNzYtMTEtMzUuMjgtMTMuMjMtNDAuMjctMTMuMjNIMTE2LjMyQTE4Ny40OSwxODcuNDksMCwwLDEsMjIxLjIxLDcwLjA2bDIzLjQ3LDI0LjZhMTMuODIsMTMuODIsMCwwLDAsMTkuNi40NGwyNi4yNi0yNWExODcuNTEsMTg3LjUxLDAsMCwxLDEyOC4zNyw5MS40M2wtMTgsNDAuNTdBMTQsMTQsMCwwLDAsNDA4LDIyMC40M2wzNC41OSwxNS4zM2ExODcuMTIsMTg3LjEyLDAsMCwxLC40LDMyLjU0SDQyMy43MWMtMS45MSwwLTIuNjksMS4yNy0yLjY5LDMuMTN2OC44MkM0MjEsMzAxLDQwOS4zMSwzMDUuNTgsMzk5LDMwNi43MVpNMjQwLDYwLjIxQTE1LjI0LDE1LjI0LDAsMCwxLDI1NS4yMSw0NWguNDVBMTUuMjQsMTUuMjQsMCwxLDEsMjQwLDYwLjIxWk00MzYuODQsMjE0YTE1LjI0LDE1LjI0LDAsMSwxLDAtMzAuNDhoLjQ0YTE1LjI0LDE1LjI0LDAsMCwxLS40NCwzMC40OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FmYXJpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NC42OSwyNzQuNjlsLTM3LjM4LTM3LjM4TDE2NiwzNDZaTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhaTTQxMS44NSwxODIuNzlsMTQuNzgtNi4xM0E4LDgsMCwwLDEsNDM3LjA4LDE4MWgwYTgsOCwwLDAsMS00LjMzLDEwLjQ2TDQxOCwxOTcuNTdhOCw4LDAsMCwxLTEwLjQ1LTQuMzNoMEE4LDgsMCwwLDEsNDExLjg1LDE4Mi43OVpNMzE0LjQzLDk0bDYuMTItMTQuNzhBOCw4LDAsMCwxLDMzMSw3NC45MmgwYTgsOCwwLDAsMSw0LjMzLDEwLjQ1bC02LjEzLDE0Ljc4YTgsOCwwLDAsMS0xMC40NSw0LjMzaDBBOCw4LDAsMCwxLDMxNC40Myw5NFpNMjU2LDYwaDBhOCw4LDAsMCwxLDgsOFY4NGE4LDgsMCwwLDEtOCw4aDBhOCw4LDAsMCwxLTgtOFY2OEE4LDgsMCwwLDEsMjU2LDYwWk0xODEsNzQuOTJhOCw4LDAsMCwxLDEwLjQ2LDQuMzNMMTk3LjU3LDk0YTgsOCwwLDEsMS0xNC43OCw2LjEybC02LjEzLTE0Ljc4QTgsOCwwLDAsMSwxODEsNzQuOTJabS02My41OCw0Mi40OWgwYTgsOCwwLDAsMSwxMS4zMSwwTDE0MCwxMjguNzJBOCw4LDAsMCwxLDE0MCwxNDBoMGE4LDgsMCwwLDEtMTEuMzEsMGwtMTEuMzEtMTEuMzFBOCw4LDAsMCwxLDExNy40MSwxMTcuNDFaTTYwLDI1NmgwYTgsOCwwLDAsMSw4LThIODRhOCw4LDAsMCwxLDgsOGgwYTgsOCwwLDAsMS04LDhINjhBOCw4LDAsMCwxLDYwLDI1NlptNDAuMTUsNzMuMjEtMTQuNzgsNi4xM0E4LDgsMCwwLDEsNzQuOTIsMzMxaDBhOCw4LDAsMCwxLDQuMzMtMTAuNDZMOTQsMzE0LjQzYTgsOCwwLDAsMSwxMC40NSw0LjMzaDBBOCw4LDAsMCwxLDEwMC4xNSwzMjkuMjFabTQuMzMtMTM2aDBBOCw4LDAsMCwxLDk0LDE5Ny41N2wtMTQuNzgtNi4xMkE4LDgsMCwwLDEsNzQuOTIsMTgxaDBhOCw4LDAsMCwxLDEwLjQ1LTQuMzNsMTQuNzgsNi4xM0E4LDgsMCwwLDEsMTA0LjQ4LDE5My4yNFpNMTk3LjU3LDQxOGwtNi4xMiwxNC43OGE4LDgsMCwwLDEtMTQuNzktNi4xMmw2LjEzLTE0Ljc4QTgsOCwwLDEsMSwxOTcuNTcsNDE4Wk0yNjQsNDQ0YTgsOCwwLDAsMS04LDhoMGE4LDgsMCwwLDEtOC04VjQyOGE4LDgsMCwwLDEsOC04aDBhOCw4LDAsMCwxLDgsOFptNjctNi45MmgwYTgsOCwwLDAsMS0xMC40Ni00LjMzTDMxNC40Myw0MThhOCw4LDAsMCwxLDQuMzMtMTAuNDVoMGE4LDgsMCwwLDEsMTAuNDUsNC4zM2w2LjEzLDE0Ljc4QTgsOCwwLDAsMSwzMzEsNDM3LjA4Wm02My41OC00Mi40OWgwYTgsOCwwLDAsMS0xMS4zMSwwTDM3MiwzODMuMjhBOCw4LDAsMCwxLDM3MiwzNzJoMGE4LDgsMCwwLDEsMTEuMzEsMGwxMS4zMSwxMS4zMUE4LDgsMCwwLDEsMzk0LjU5LDM5NC41OVpNMjg2LjI1LDI4Ni4yNSwxMTAuMzQsNDAxLjY2LDIyNS43NSwyMjUuNzUsNDAxLjY2LDExMC4zNFpNNDM3LjA4LDMzMWgwYTgsOCwwLDAsMS0xMC40NSw0LjMzbC0xNC43OC02LjEzYTgsOCwwLDAsMS00LjMzLTEwLjQ1aDBBOCw4LDAsMCwxLDQxOCwzMTQuNDNsMTQuNzgsNi4xMkE4LDgsMCwwLDEsNDM3LjA4LDMzMVpNNDQ0LDI2NEg0MjhhOCw4LDAsMCwxLTgtOGgwYTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOGgwQTgsOCwwLDAsMSw0NDQsMjY0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWxlc2ZvcmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OC44OSAyNDUuNjRoLTI2LjM1Yy42OS01LjE2IDMuMzItMTQuMTIgMTMuNjQtMTQuMTIgNi43NSAwIDExLjk3IDMuODIgMTIuNzEgMTQuMTJ6bTEzNi42Ni0xMy44OGMtLjQ3IDAtMTQuMTEtMS43Ny0xNC4xMSAyMHMxMy42MyAyMCAxNC4xMSAyMGMxMyAwIDE0LjExLTEzLjU0IDE0LjExLTIwIDAtMjEuNzYtMTMuNjYtMjAtMTQuMTEtMjB6bS0yNDMuMjIgMjMuNzZhOC42MyA4LjYzIDAgMCAwLTMuMjkgNy4yOWMwIDQuNzggMi4wOCA2LjA1IDMuMjkgNy4wNSA0LjcgMy43IDE1LjA3IDIuMTIgMjAuOTMuOTV2LTE2Ljk0Yy01LjMyLTEuMDctMTYuNzMtMS45Ni0yMC45MyAxLjY1ek02NDAgMjMyYzAgODcuNTgtODAgMTU0LjM5LTE2NS4zNiAxMzYuNDMtMTguMzcgMzMtNzAuNzMgNzAuNzUtMTMyLjIgNDEuNjMtNDEuMTYgOTYuMDUtMTc3Ljg5IDkyLjE4LTIxMy44MS01LjE3QzguOTEgNDI4Ljc4LTUwLjE5IDI2Ni41MiA1My4zNiAyMDUuNjEgMTguNjEgMTI2LjE4IDc2IDMyIDE2Ny42NyAzMmExMjQuMjQgMTI0LjI0IDAgMCAxIDk4LjU2IDQ4LjdjMjAuNy0yMS40IDQ5LjQtMzQuODEgODEuMTUtMzQuODEgNDIuMzQgMCA3OSAyMy41MiA5OC44IDU4LjU3QzUzOSA2My43OCA2NDAgMTMyLjY5IDY0MCAyMzJ6bS01MTkuNTUgMzEuOGMwLTExLjc2LTExLjY5LTE1LjE3LTE3Ljg3LTE3LjE3LTUuMjctMi4xMS0xMy40MS0zLjUxLTEzLjQxLTguOTQgMC05LjQ2IDE3LTYuNjYgMjUuMTctMi4xMiAwIDAgMS4xNy43MSAxLjY0LS40Ny4yNC0uNyAyLjM2LTYuNTggMi41OS03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy0xMi4zMy03LjYzLTQwLjctOC41MS00MC43IDEyLjcgMCAxMi40NiAxMS40OSAxNS40NCAxNy44OCAxNy4xNyA0LjcyIDEuNTggMTMuMTcgMyAxMy4xNyA4LjcgMCA0LTMuNTMgNy4wNi05LjE3IDcuMDZhMzEuNzYgMzEuNzYgMCAwIDEtMTktNi4zNWMtLjQ3LS4yMy0xLjQyLS43MS0xLjY1LjcxbC0yLjQgNy40N2MtLjQ3Ljk0LjIzIDEuMTguMjMgMS40MSAxLjc1IDEuNCAxMC4zIDYuNTkgMjIuODIgNi41OSAxMy4xNyAwIDIxLjQtNy4wNiAyMS40LTE4LjExem0zMi00Mi41OGMtMTAuMTMgMC0xOC42NiAzLjE3LTIxLjQgNS4xOGExIDEgMCAwIDAtLjI0IDEuNDFsMi41OSA3LjA2YTEgMSAwIDAgMCAxLjE4LjdjLjY1IDAgNi44LTQgMTYuOTMtNCA0IDAgNy4wNi43MSA5LjE4IDIuMzYgMy42IDIuOCAzLjA2IDguMjkgMy4wNiAxMC41OC00Ljc5LS4zLTE5LjExLTMuNDQtMjkuNDEgMy43NmExNi45MiAxNi45MiAwIDAgMC03LjM0IDE0LjU0YzAgNS45IDEuNTEgMTAuNCA2LjU5IDE0LjM1IDEyLjI0IDguMTYgMzYuMjggMiAzOC4xIDEuNDEgMS41OC0uMzIgMy41My0uNjYgMy41My0xLjg4di0zMy44OGMuMDQtNC42MS4zMi0yMS42NC0yMi43OC0yMS42NHpNMTk5IDIwMC4yNGExLjExIDEuMTEgMCAwIDAtMS4xOC0xLjE4SDE4OGExLjExIDEuMTEgMCAwIDAtMS4xNyAxLjE4djc5YTEuMTEgMS4xMSAwIDAgMCAxLjE3IDEuMThoOS44OGExLjExIDEuMTEgMCAwIDAgMS4xOC0xLjE4em01NS43NSAyOC45M2MtMi4xLTIuMzEtNi43OS03LjUzLTE3LjY1LTcuNTMtMy41MSAwLTE0LjE2LjIzLTIwLjcgOC45NC02LjM1IDcuNjMtNi41OCAxOC4xMS02LjU4IDIxLjQxIDAgMy4xMi4xNSAxNC4yNiA3LjA2IDIxLjE3IDIuNjQgMi45MSA5LjA2IDguMjMgMjIuODEgOC4yMyAxMC44MiAwIDE2LjQ3LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzUtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2Ljk0LTE2LjdoMzcuMTdhMS4yMyAxLjIzIDAgMCAwIDEuMTctLjk0Yy0uMjkgMCAyLjA3LTE0LjctNi4wOS0yNC4yM3ptMzYuNjkgNTIuNjljMTMuMTcgMCAyMS40MS03LjA2IDIxLjQxLTE4LjExIDAtMTEuNzYtMTEuNy0xNS4xNy0xNy44OC0xNy4xNy00LjE0LTEuNjYtMTMuNDEtMy4zOC0xMy40MS04Ljk0IDAtMy43NiAzLjI5LTYuMzUgOC40Ny02LjM1YTM4LjExIDM4LjExIDAgMCAxIDE2LjcgNC4yM3MxLjE4LjcxIDEuNjUtLjQ3Yy4yMy0uNyAyLjM1LTYuNTggMi41OC03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy03LjkxLTQuOS0xNi43NC00Ljk0LTIwLjIzLTQuOTQtMTIgMC0yMC40NiA3LjI5LTIwLjQ2IDE3LjY0IDAgMTIuNDYgMTEuNDggMTUuNDQgMTcuODcgMTcuMTcgNi4xMSAyIDEzLjE3IDMuMjYgMTMuMTcgOC43IDAgNC0zLjUyIDcuMDYtOS4xNyA3LjA2YTMxLjggMzEuOCAwIDAgMS0xOS02LjM1IDEgMSAwIDAgMC0xLjY1LjcxbC0yLjM1IDcuNTJjLS40Ny45NC4yMyAxLjE4LjIzIDEuNDEgMS43MiAxLjQgMTAuMzMgNi41OSAyMi43OSA2LjU5ek0zNTcuMDkgMjI0YzAtLjcxLS4yNC0xLjE4LTEuMTgtMS4xOGgtMTEuNzZjMC0uMTQuOTQtOC45NCA0LjQ3LTEyLjQ3IDQuMTYtNC4xNSAxMS43Ni0xLjY0IDEyLTEuNjQgMS4xNy40NyAxLjQxIDAgMS42NC0uNDdsMi44My03Ljc3Yy43LS45NCAwLTEuMTctLjI0LTEuNDEtNS4wOS0yLTE3LjM1LTIuODctMjQuNDYgNC4yNC01LjQ4IDUuNDgtNyAxMy45Mi04IDE5LjUyaC04LjQ3YTEuMjggMS4yOCAwIDAgMC0xLjE3IDEuMThsLTEuNDIgNy43NmMwIC43LjI0IDEuMTcgMS4xOCAxLjE3aDguMjNjLTguNTEgNDcuOS04Ljc1IDUwLjIxLTEwLjM1IDU1LjUyLTEuMDggMy42Mi0zLjI5IDYuOS01Ljg4IDcuNzYtLjA5IDAtMy44OCAxLjY4LTkuNjQtLjI0IDAgMC0uOTQtLjQ3LTEuNDEuNzEtLjI0LjcxLTIuNTkgNi44Mi0yLjgzIDcuNTNzMCAxLjQxLjQ3IDEuNDFjNS4xMSAyIDEzIDEuNzcgMTcuODggMCA2LjI4LTIuMjggOS43Mi03Ljg5IDExLjUzLTEyLjk0IDIuNzUtNy43MSAyLjgxLTkuNzkgMTEuNzYtNTkuNzRoMTIuMjNhMS4yOSAxLjI5IDAgMCAwIDEuMTgtMS4xOHptNTMuMzkgMTZjLS41Ni0xLjY4LTUuMS0xOC4xMS0yNS4xNy0xOC4xMS0xNS4yNSAwLTIzIDEwLTI1LjE2IDE4LjExLTEgMy0zLjE4IDE0IDAgMjMuNTIuMDkuMyA0LjQxIDE4LjEyIDI1LjE2IDE4LjEyIDE0Ljk1IDAgMjIuOS05LjYxIDI1LjE3LTE4LjEyIDMuMjEtOS42MSAxLjAxLTIwLjUyIDAtMjMuNTJ6bTQ1LjQtMTYuN2MtNS0xLjY1LTE2LjYyLTEuOS0yMi4xMSA1LjQxdi00LjQ3YTEuMTEgMS4xMSAwIDAgMC0xLjE4LTEuMTdoLTkuNGExLjExIDEuMTEgMCAwIDAtMS4xOCAxLjE3djU1LjI4YTEuMTIgMS4xMiAwIDAgMCAxLjE4IDEuMThoOS42NGExLjEyIDEuMTIgMCAwIDAgMS4xOC0xLjE4di0yNy43N2MwLTIuOTEuMDUtMTEuMzcgNC40Ni0xNS4wNSA0LjktNC45IDEyLTMuMzYgMTMuNDEtMy4wNmExLjU3IDEuNTcgMCAwIDAgMS40MS0uOTQgNzQgNzQgMCAwIDAgMy4wNi04IDEuMTYgMS4xNiAwIDAgMC0uNDctMS40MXptNDYuODEgNTQuMWwtMi4xMi03LjI5Yy0uNDctMS4xOC0xLjQxLS43MS0xLjQxLS43MS00LjIzIDEuODItMTAuMTUgMS44OS0xMS4yOSAxLjg5LTQuNjQgMC0xNy4xNy0xLjEzLTE3LjE3LTE5Ljc2IDAtNi4yMyAxLjg1LTE5Ljc2IDE2LjQ3LTE5Ljc2YTM0Ljg1IDM0Ljg1IDAgMCAxIDExLjUyIDEuNjVzLjk0LjQ3IDEuMTgtLjcxYy45NC0yLjU5IDEuNjQtNC40NyAyLjU5LTcuNTMuMjMtLjk0LS40Ny0xLjE3LS43MS0xLjE3LTExLjU5LTMuODctMjIuMzQtMi41My0yNy43NiAwLTEuNTkuNzQtMTYuMjMgNi40OS0xNi4yMyAyNy41MiAwIDIuOS0uNTggMzAuMTEgMjguOTQgMzAuMTFhNDQuNDUgNDQuNDUgMCAwIDAgMTUuNTItMi44MyAxLjMgMS4zIDAgMCAwIC40Ny0xLjQyem01My44Ny0zOS41MmMtLjgtMy01LjM3LTE2LjIzLTIyLjM1LTE2LjIzLTE2IDAtMjMuNTIgMTAuMTEtMjUuNjQgMTguNTlhMzguNTggMzguNTggMCAwIDAtMS42NSAxMS43NmMwIDI1Ljg3IDE4Ljg0IDI5LjQgMjkuODggMjkuNCAxMC44MiAwIDE2LjQ2LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzYtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2LjkzLTE2LjdoMzcuMTZhMS4yNSAxLjI1IDAgMCAwIDEuMTgtLjk0Yy0uMjQtLjAxLjk0LTcuMDctMS40MS0xNS41NHptLTIzLjI5LTYuMzVjLTEwLjMzIDAtMTMgOS0xMy42NCAxNC4xMkg1NDZjLS44OC0xMS45Mi03LjYyLTE0LjEzLTEyLjczLTE0LjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS44NCAzNzguOTJjLS4zLjYtLjYgMS4wOCAwIDB6bTI0OS4xMy04N2ExMzEuMTYgMTMxLjE2IDAgMCAwLTU4IDEzLjVjLTUuOS0xMS45LTEyLTIyLjMtMTMtMzAuMS0xLjItOS4xLTIuNS0xNC41LTEuMS0yNS4zczcuNy0yNi4xIDcuNi0yNy4yLTEuNC02LjYtMTQuMy02LjctMjQgMi41LTI1LjI5IDUuOWExMjIuODMgMTIyLjgzIDAgMCAwLTUuMyAxOS4xYy0yLjMgMTEuNy0yNS43OSA1My41LTM5LjA5IDc1LjMtNC40LTguNS04LjEtMTYtOC45LTIyLTEuMi05LjEtMi41LTE0LjUtMS4xLTI1LjNzNy43LTI2LjEgNy42LTI3LjItMS40LTYuNi0xNC4yOS02LjctMjQgMi41LTI1LjMgNS45LTIuNyAxMS40LTUuMyAxOS4xLTMzLjg5IDc3LjMtNDIuMDggOTUuNGMtNC4yIDkuMi03LjggMTYuNi0xMC40IDIxLjYtLjQuOC0uNyAxLjMtLjkgMS43LjMtLjUuNS0xIC41LS44LTIuMiA0LjMtMy41IDYuNy0zLjUgNi43di4xYy0xLjcgMy4yLTMuNiA2LjEtNC41IDYuMS0uNiAwLTEuOS04LjQuMy0xOS45IDQuNy0yNC4yIDE1LjgtNjEuOCAxNS43LTYzLjEtLjEtLjcgMi4xLTcuMi03LjMtMTAuNy05LjEtMy4zLTEyLjQgMi4yLTEzLjIgMi4ycy0xLjQgMi0xLjQgMiAxMC4xLTQyLjQtMTkuMzktNDIuNGMtMTguNCAwLTQ0IDIwLjItNTYuNTggMzguNS03LjkgNC4zLTI1IDEzLjYtNDMgMjMuNS02LjkgMy44LTE0IDcuNy0yMC43IDExLjQtLjUtLjUtLjktMS0xLjQtMS41LTM1Ljc5LTM4LjItMTAxLjg3LTY1LjItOTkuMDctMTE2LjUgMS0xOC43IDcuNS02Ny44IDEyNy4wNy0xMjcuNCA5OC00OC44IDE3Ni4zNS0zNS40IDE4OS44NC01LjYgMTkuNCA0Mi41LTQxLjg5IDEyMS42LTE0My42NiAxMzMtMzguNzkgNC4zLTU5LjE4LTEwLjctNjQuMjgtMTYuMy01LjMtNS45LTYuMS02LjItOC4xLTUuMS0zLjMgMS44LTEuMiA3IDAgMTAuMSAzIDcuOSAxNS41IDIxLjkgMzYuNzkgMjguOSAxOC43IDYuMSA2NC4xOCA5LjUgMTE5LjE3LTExLjggNjEuNzgtMjMuOCAxMDkuODctOTAuMSA5NS43Ny0xNDUuNkMzODYuNTIgMTguMzIgMjkzLS4xOCAyMDQuNTcgMzEuMjJjLTUyLjY5IDE4LjctMTA5LjY3IDQ4LjEtMTUwLjY2IDg2LjQtNDguNjkgNDUuNi01Ni40OCA4NS4zLTUzLjI4IDEwMS45IDExLjM5IDU4LjkgOTIuNTcgOTcuMyAxMjUuMDYgMTI1LjctMS42LjktMy4xIDEuNy00LjUgMi41LTE2LjI5IDguMS03OC4xOCA0MC41LTkzLjY3IDc0LjctMTcuNSAzOC44IDIuOSA2Ni42IDE2LjI5IDcwLjQgNDEuNzkgMTEuNiA4NC41OC05LjMgMTA3LjU3LTQzLjZzMjAuMi03OS4xIDkuNi05OS41Yy0uMS0uMy0uMy0uNS0uNC0uOCA0LjItMi41IDguNS01IDEyLjgtNy41IDguMjktNC45IDE2LjM5LTkuNCAyMy40OS0xMy4zLTQgMTAuOC02LjkgMjMuOC04LjQgNDIuNi0xLjggMjIgNy4zIDUwLjUgMTkuMSA2MS43IDUuMiA0LjkgMTEuNDkgNSAxNS4zOSA1IDEzLjggMCAyMC0xMS40IDI2Ljg5LTI1IDguNS0xNi42IDE2LTM1LjkgMTYtMzUuOXMtOS40IDUyLjIgMTYuMyA1Mi4yYzkuMzkgMCAxOC43OS0xMi4xIDIzLTE4LjN2LjFzLjItLjQuNy0xLjJjMS0xLjUgMS41LTIuNCAxLjUtMi40di0uM2MzLjgtNi41IDEyLjEtMjEuNCAyNC41OS00NiAxNi4yLTMxLjggMzEuNjktNzEuNSAzMS42OS03MS41YTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi44IDkuNSA4LjcgMTkuOSAxMy40IDMwLTMuOCA1LjItNi4xIDguMi02LjEgOC4yYS4zMS4zMSAwIDAgMCAuMS4yYy0zIDQtNi40IDguMy05LjkgMTIuNS0xMi43OSAxNS4yLTI4IDMyLjYtMzAgMzcuNi0yLjQgNS45LTEuOCAxMC4zIDIuOCAxMy43IDMuNCAyLjYgOS40IDMgMTUuNjkgMi41IDExLjUtLjggMTkuNi0zLjYgMjMuNS01LjRhODIuMiA4Mi4yIDAgMCAwIDIwLjE5LTEwLjZjMTIuNS05LjIgMjAuMS0yMi40IDE5LjQtMzkuOC0uNC05LjYtMy41LTE5LjItNy4zLTI4LjIgMS4xLTEuNiAyLjMtMy4zIDMuNC01QzQzNC44IDMwMS43MiA0NTAuMSAyNzAgNDUwLjEgMjcwYTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi40IDguMSA3LjA5IDE3IDExLjM5IDI1LjctMTguNTkgMTUuMS0zMC4wOSAzMi42LTM0LjA5IDQ0LjEtNy40IDIxLjMtMS42IDMwLjkgOS4zIDMzLjEgNC45IDEgMTEuOS0xLjMgMTcuMS0zLjVhNzkuNDYgNzkuNDYgMCAwIDAgMjEuNTktMTEuMWMxMi41LTkuMiAyNC41OS0yMi4xIDIzLjc5LTM5LjYtLjMtNy45LTIuNS0xNS44LTUuNC0yMy40IDE1LjctNi42IDM2LjA5LTEwLjIgNjIuMDktNy4yIDU1LjY4IDYuNSA2Ni41OCA0MS4zIDY0LjQ4IDU1LjhzLTEzLjggMjIuNi0xNy43IDI1LTUuMSAzLjMtNC44IDUuMWMuNSAyLjYgMi4zIDIuNSA1LjYgMS45IDQuNi0uOCAyOS4xOS0xMS44IDMwLjI5LTM4LjcgMS42LTM0LTMxLjA5LTcxLjQtODktNzEuMXptLTQyOS4xOCAxNDQuN2MtMTguMzkgMjAuMS00NC4xOSAyNy43LTU1LjI4IDIxLjNDNTQuNjEgNDUxIDU5LjMxIDQyMS40MiA4MiA0MDBjMTMuOC0xMyAzMS41OS0yNSA0My4zOS0zMi40IDIuNy0xLjYgNi42LTQgMTEuNC02LjkuOC0uNSAxLjItLjcgMS4yLS43LjktLjYgMS45LTEuMSAyLjktMS43IDguMjkgMzAuNC4zIDU3LjItMTkuMSA3OC4zem0xMzQuMzYtOTEuNGMtNi40IDE1LjctMTkuODkgNTUuNy0yOC4wOSA1My42LTctMS44LTExLjMtMzIuMy0xLjQtNjIuMyA1LTE1LjEgMTUuNi0zMy4xIDIxLjktNDAuMSAxMC4wOS0xMS4zIDIxLjE5LTE0LjkgMjMuNzktMTAuNCAzLjUgNS45LTEyLjIgNDkuNC0xNi4yIDU5LjJ6bTExMSA1M2MtMi43IDEuNC01LjIgMi4zLTYuNCAxLjYtLjktLjUgMS4xLTIuNCAxLjEtMi40czEzLjktMTQuOSAxOS40LTIxLjdjMy4yLTQgNi45LTguNyAxMC44OS0xMy45IDAgLjUuMSAxIC4xIDEuNi0uMTMgMTcuOS0xNy4zMiAzMC0yNS4xMiAzNC44em04NS41OC0xOS41Yy0yLTEuNC0xLjctNi4xIDUtMjAuNyAyLjYtNS43IDguNTktMTUuMyAxOS0yNC41YTM2LjE4IDM2LjE4IDAgMCAxIDEuOSAxMC44Yy0uMSAyMi41LTE2LjIgMzAuOS0yNS44OSAzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hsaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUwLjUgMTU3LjdsLTU0LjItNDYuMSA3My40LTM5IDc4LjMgNDQuMi05Ny41IDQwLjl6TTE5MiAxMjIuMWw0NS43LTI4LjIgMzQuNyAzNC42LTU1LjQgMjktMjUtMzUuNHptLTY1LjEgNi42bDMxLjktMjIuMUwxNzYgMTM1bC0zNi43IDIyLjUtMTIuNC0yOC44em0tMjMuMyA4OC4ybC04LjgtMzQuOCAyOS42LTE4LjMgMTMuMSAzNS4zLTMzLjkgMTcuOHptLTIxLjItODMuN2wyMy45LTE4LjEgOC45IDI0LTI2LjcgMTguMy02LjEtMjQuMnpNNTkgMjA2LjVsLTMuNi0yOC40IDIyLjMtMTUuNSA2LjEgMjguN0w1OSAyMDYuNXptLTMwLjYgMTYuNmwyMC44LTEyLjggMy4zIDMzLjQtMjIuOSAxMi0xLjItMzIuNnpNMS40IDI2OGwxOS4yLTEwLjIuNCAzOC4yLTIxIDguOEwxLjQgMjY4em01OS4xIDU5LjNsLTI4LjMgOC4zLTEuNi00Ni44IDI1LjEtMTAuNyA0LjggNDkuMnpNOTkgMjYzLjJsLTMxLjEgMTMtNS4yLTQwLjhMOTAuMSAyMjFsOC45IDQyLjJ6TTEyMy4yIDM3N2wtNDEuNiA1LjktOC4xLTYzLjUgMzUuMi0xMC44IDE0LjUgNjguNHptMjguNS0xMzkuOWwyMS4yIDU3LjEtNDYuMiAxMy42LTEzLjctNTQuMSAzOC43LTE2LjZ6bTg1LjcgMjMwLjVsLTcwLjktMy4zLTI0LjMtOTUuOCA1NS4yLTguNiA0MCAxMDcuN3ptLTg0LjktMjc5LjdsNDIuMi0yMi40IDI4IDQ1LjktNTAuOCAyMS4zLTE5LjQtNDQuOHptNDEgOTQuOWw2MS4zLTE4LjcgNTIuOCA4Ni42LTc5LjggMTEuMy0zNC4zLTc5LjJ6bTUxLjQtODUuNmw2Ny4zLTI4LjggNjUuNSA2NS40LTg4LjYgMjYuMi00NC4yLTYyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjcmVlbnBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzMuNSAyMi40OUMyMzMuNSAxMC4wNyAyNDMuNiAwIDI1NiAwQzI2OC40IDAgMjc4LjUgMTAuMDcgMjc4LjUgMjIuNDlDMjc4LjUgMzQuOTEgMjY4LjQgNDQuOTggMjU2IDQ0Ljk4QzI0My42IDQ0Ljk4IDIzMy41IDM0LjkxIDIzMy41IDIyLjQ5ek0zMTMuNCAyNTlDMzEzLjQgMjkwLjcgMjg3LjcgMzE2LjQgMjU2IDMxNi40QzIyNC4zIDMxNi40IDE5OC42IDI5MC43IDE5OC42IDI1OUMxOTguNiAyMjcuMyAyMjQuMyAyMDEuNiAyNTYgMjAxLjZDMjg3LjcgMjAxLjYgMzEzLjQgMjI3LjMgMzEzLjQgMjU5ek0zMzcuMiAzNTBDMzU5LjUgMzMwLjEgMzczLjcgMzAyLjcgMzc3LjEgMjczSDQ5Ni42QzQ5My4xIDMzNC40IDQ2Ni4yIDM5Mi4yIDQyMS40IDQzNC40QzM3Ni43IDQ3Ni42IDMxNy41IDUwMC4yIDI1NiA1MDAuMkMxOTQuNSA1MDAuMiAxMzUuMyA0NzYuNiA5MC41NiA0MzQuNEM0NS44MyAzOTIuMiAxOC45NCAzMzQuNCAxNS4zOSAyNzNIMTM1LjFDMTM4LjUgMzAyLjcgMTUyLjcgMzMwLjEgMTc1IDM1MEMxOTcuMyAzNjkuOSAyMjYuMiAzODAuOSAyNTYuMSAzODAuOUMyODUuMSAzODAuOSAzMTQuOCAzNjkuOSAzMzcuMiAzNTB6TTczLjE0IDE0MC4zQzczLjU0IDE1Mi43IDYzLjgxIDE2My4xIDUxLjM5IDE2My41QzM4Ljk3IDE2My45IDI4LjU5IDE1NC4yIDI4LjE4IDE0MS44QzI3Ljc4IDEyOS4zIDM3LjUyIDExOC45IDQ5Ljk0IDExOC41QzYyLjM1IDExOC4xIDcyLjc0IDEyNy45IDczLjE0IDE0MC4zek00MzguOSAxNDFDNDM4LjkgMTI4LjYgNDQ4LjkgMTE4LjUgNDYxLjQgMTE4LjVDNDczLjggMTE4LjUgNDgzLjggMTI4LjYgNDgzLjggMTQxQzQ4My44IDE1My41IDQ3My44IDE2My41IDQ2MS40IDE2My41QzQ0OC45IDE2My41IDQzOC45IDE1My41IDQzOC45IDE0MXpNMzE3LjkgOTUuMjdDMzAwLjYgMTA5LjEgMjc4LjcgMTE4LjEgMjU2IDExOC4xQzIzMy4zIDExOC4xIDIxMS40IDEwOS4xIDE5NC4xIDk1LjI3QzE3Ni44IDgwLjU1IDE2NS4zIDYwLjE4IDE2MS43IDM3Ljc4QzE3Ni44IDMxLjM3IDE5Mi41IDI2LjUyIDIwOC42IDIzLjMxQzIwOC42IDM1Ljg4IDIxMy42IDQ3LjkzIDIyMi41IDU2LjgyQzIzMS40IDY1LjcgMjQzLjQgNzAuNyAyNTYgNzAuN0MyNjguNiA3MC43IDI4MC42IDY1LjcgMjg5LjUgNTYuODJDMjk4LjQgNDcuOTMgMzAzLjQgMzUuODggMzAzLjQgMjMuMzFDMzE5LjUgMjYuNTIgMzM1LjIgMzEuMzcgMzUwLjMgMzcuNzhDMzQ2LjcgNjAuMTggMzM1LjIgODAuNTUgMzE3LjkgOTUuMjdIMzE3Ljl6TTgyLjc4IDIzMUM2MS40MiAyMzguNiAzOC4wNiAyMzguNCAxNi44NiAyMzAuNEMxOC44MiAyMTQuMSAyMi40NiAxOTguMSAyNy43MSAxODIuNUMzMy4xIDE4NS42IDM5LjA1IDE4Ny42IDQ1LjIyIDE4OC41QzUxLjM5IDE4OS4zIDU3LjY3IDE4OC45IDYzLjY4IDE4Ny4zQzY5LjY5IDE4NS42IDc1LjMzIDE4Mi45IDgwLjI3IDE3OS4xQzg1LjIxIDE3NS4zIDg5LjM2IDE3MC42IDkyLjQ3IDE2NS4yQzk1LjU4IDE1OS44IDk3LjYxIDE1My44IDk4LjQyIDE0Ny43Qzk5LjIzIDE0MS41IDk4LjgzIDEzNS4yIDk3LjIyIDEyOS4yQzk1LjYxIDEyMy4yIDkyLjgzIDExNy42IDg5LjA0IDExMi42Qzg1LjI1IDEwNy43IDgwLjUzIDEwMy41IDc1LjE0IDEwMC40Qzg1Ljk2IDg4LjExIDk4LjAxIDc2Ljk0IDExMS4xIDY3LjA3QzEyOC43IDgxLjQyIDE0MC42IDEwMS42IDE0NC43IDEyMy45QzE0OC44IDE0Ni4yIDE0NC44IDE2OS4zIDEzMy41IDE4OC45QzEyMi4xIDIwOC41IDEwNC4xIDIyMy40IDgyLjc4IDIzMVYyMzF6TTQyOS4yIDIzMS4xQzQwNy45IDIyMy41IDM4OS45IDIwOC41IDM3OC41IDE4OC45QzM2Ny4yIDE2OS4zIDM2My4zIDE0Ni4yIDM2Ny40IDEyMy45QzM3MS41IDEwMS43IDM4My40IDgxLjU0IDQwMC45IDY3LjE5QzQxNCA3Ny4wNCA0MjYuMSA4OC4yMSA0MzYuOSAxMDAuNUM0MjYuMiAxMDYuOSA0MTguNSAxMTcuMiA0MTUuNCAxMjkuM0M0MTIuMiAxNDEuMyA0MTMuMSAxNTQuMSA0MjAuMiAxNjQuOUM0MjYuNCAxNzUuNyA0MzYuNiAxODMuNiA0NDguNiAxODYuOUM0NjAuNiAxOTAuMiA0NzMuNSAxODguNiA0ODQuMyAxODIuNkM0ODkuNiAxOTguMSA0OTMuMiAyMTQuMiA0OTUuMiAyMzAuNEM0NzMuMSAyMzguNSA0NTAuNiAyMzguNyA0MjkuMiAyMzEuMUw0MjkuMiAyMzEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyaWJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjMgMjUyLjdjLTE2LjEtMTktMjQuNy00NS45LTI0LjgtNzkuOSAwLTEwMC40IDc1LjItMTUzLjEgMTY3LjItMTUzLjEgOTguNi0xLjYgMTU2LjggNDkgMTg0LjMgNzAuNmwtNTAuNSA3Mi4xLTM3LjMtMjQuNiAyNi45LTM4LjZjLTM2LjUtMjQtNzkuNC0zNi41LTEyMy0zNS44LTUwLjctLjgtMTExLjcgMjcuMi0xMTEuNyA3Ni4yIDAgMTguNyAxMS4yIDIwLjcgMjguNiAxNS42IDIzLjMtNS4zIDQxLjkuNiA1NS44IDE0IDI2LjQgMjQuMyAyMy4yIDY3LjYtLjcgOTEuOS0yOS4yIDI5LjUtODUuMiAyNy4zLTExNC44LTguNHptMzE3LjcgNS45Yy0xNS41LTE4LjgtMzguOS0yOS40LTYzLjItMjguNi0zOC4xLTItNzEuMSAyOC03MC41IDY3LjItLjcgMTYuOCA2IDMzIDE4LjQgNDQuMyAxNC4xIDEzLjkgMzMgMTkuNyA1Ni4zIDE0LjQgMTcuNC01LjEgMjguNi0zLjEgMjguNiAxNS42IDAgNC4zLS41IDguNS0xLjQgMTIuNy0xNi43IDQwLjktNTkuNSA2NC40LTEyMS40IDY0LjQtNTEuOS4yLTEwMi40LTE2LjQtMTQ0LjEtNDcuM2wzMy43LTM5LjQtMzUuNi0yNy40TDAgNDA2LjNsMTUuNCAxMy44YzUyLjUgNDYuOCAxMjAuNCA3Mi41IDE5MC43IDcyLjIgNTEuNCAwIDk0LjQtMTAuNSAxMzMuNi00NC4xIDU3LjEtNTEuNCA1NC4yLTE0OS4yIDIwLjMtMTg5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaGVuZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMC42IDEzMC4zbC02Ny4yIDI4LjJWNDMuMkw5OC43IDIzMy41bDU0LjctMjQuMnYxMzAuM2w2Ny4yLTIwOS4zem0tODMuMi05Ni43bC0xLjMgNC43LTE1LjIgNTIuOUM4MC42IDEwNi43IDUyIDE0NS44IDUyIDE5MS41YzAgNTIuMyAzNC4zIDk1LjkgODMuNCAxMDUuNXY1My42QzU3LjUgMzQwLjEgMCAyNzIuNCAwIDE5MS42YzAtODAuNSA1OS44LTE0Ny4yIDEzNy40LTE1OHptMzExLjQgNDQ3LjJjLTExLjIgMTEuMi0yMy4xIDEyLjMtMjguNiAxMC41LTUuNC0xLjgtMjcuMS0xOS45LTYwLjQtNDQuNC0zMy4zLTI0LjYtMzMuNi0zNS43LTQzLTU2LjctOS40LTIwLjktMzAuNC00Mi42LTU3LjUtNTIuNGwtOS43LTE0LjdjLTI0LjcgMTYuOS01MyAyNi45LTgxLjMgMjguN2wyLjEtNi42IDE1LjktNDkuNWM0Ni41LTExLjkgODAuOS01NCA4MC45LTEwNC4yIDAtNTQuNS0zOC40LTEwMi4xLTk2LTEwNy4xVjMyLjNDMjU0LjQgMzcuNCAzMjAgMTA2LjggMzIwIDE5MS42YzAgMzMuNi0xMS4yIDY0LjctMjkgOTAuNGwxNC42IDkuNmM5LjggMjcuMSAzMS41IDQ4IDUyLjQgNTcuNHMzMi4yIDkuNyA1Ni44IDQzYzI0LjYgMzMuMiA0Mi43IDU0LjkgNDQuNSA2MC4zcy43IDE3LjMtMTAuNSAyOC41em0tOS45LTE3LjljMC00LjQtMy42LTgtOC04cy04IDMuNi04IDggMy42IDggOCA4IDgtMy42IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VsbGNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUzLjQgMzJIOTQuN0M0Mi42IDMyIDAgNzQuNiAwIDEyNi42djI1OC43QzAgNDM3LjQgNDIuNiA0ODAgOTQuNyA0ODBoMjU4LjdjNTIuMSAwIDk0LjctNDIuNiA5NC43LTk0LjZWMTI2LjZjMC01Mi00Mi42LTk0LjYtOTQuNy05NC42em0tNTAgMzE2LjRjLTI3LjkgNDguMi04OS45IDY0LjktMTM4LjIgMzcuMi0yMi45IDM5LjgtNTQuOSA4LjYtNDIuMy0xMy4ybDE1LjctMjcuMmM1LjktMTAuMyAxOS4yLTEzLjkgMjkuNS03LjkgMTguNiAxMC44LS4xLS4xIDE4LjUgMTAuNyAyNy42IDE1LjkgNjMuNCA2LjMgNzkuNC0yMS4zIDE1LjktMjcuNiA2LjMtNjMuNC0yMS4zLTc5LjQtMTcuOC0xMC4yLS42LS40LTE4LjYtMTAuNi0yNC42LTE0LjItMy40LTUxLjkgMjEuNi0zNy41IDE4LjYgMTAuOC0uMS0uMSAxOC41IDEwLjcgNDguNCAyOCA2NS4xIDkwLjMgMzcuMiAxMzguNXptMjEuOC0yMDguOGMtMTcgMjkuNS0xNi4zIDI4LjgtMTkgMzEuNS02LjUgNi41LTE2LjMgOC43LTI2LjUgMy42LTE4LjYtMTAuOC4xLjEtMTguNS0xMC43LTI3LjYtMTUuOS02My40LTYuMy03OS40IDIxLjNzLTYuMyA2My40IDIxLjMgNzkuNGMwIDAgMTguNSAxMC42IDE4LjYgMTAuNiAyNC42IDE0LjIgMy40IDUxLjktMjEuNiAzNy41LTE4LjYtMTAuOC4xLjEtMTguNS0xMC43LTQ4LjItMjcuOC02NC45LTkwLjEtMzcuMS0xMzguNCAyNy45LTQ4LjIgODkuOS02NC45IDEzOC4yLTM3LjJsNC44LTguNGMxNC4zLTI0LjkgNTItMy4zIDM3LjcgMjEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VsbHN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUzOS43MSAyMzcuMzA4YzMuMDY0LTEyLjI1NyA0LjI5LTI0LjgyMSA0LjI5LTM3LjM4NEM1NDQgMTA3LjM4MiA0NjguNjE4IDMyIDM3Ni4wNzYgMzJjLTc3LjIyIDAtMTQ0LjYzNCA1My4wMTItMTYzLjAyIDEyNy43ODEtMTUuMzIyLTEzLjE3Ni0zNC45MzQtMjAuNTMtNTUuMTU3LTIwLjUzLTQ2LjI3MSAwLTgzLjk2MiAzNy42OS04My45NjIgODMuOTYxIDAgNy4zNTQuOTIgMTUuMDE1IDMuMDY1IDIyLjM2OS00Mi45IDIwLjIyNS03MC43ODUgNjMuNzM4LTcwLjc4NSAxMTEuMjM0QzYuMjE2IDQyNC44NDMgNjEuNjggNDgwIDEyOS40MDEgNDgwaDM4MS4xOThjNjcuNzIgMCAxMjMuMTg0LTU1LjE1NyAxMjMuMTg0LTEyMy4xODQuMDAxLTU2LjM4NC0zOC45MTYtMTA2LjAyNS05NC4wNzMtMTE5LjUwOHpNMTk5Ljg4IDQwMS41NTRjMCA4LjI3NC03LjA0OCAxNS4zMjEtMTUuMzIxIDE1LjMyMUgxNTMuNjFjLTguMjc0IDAtMTUuMzIxLTcuMDQ4LTE1LjMyMS0xNS4zMjFWMjkwLjYyNmMwLTguMjczIDcuMDQ4LTE1LjMyMSAxNS4zMjEtMTUuMzIxaDMwLjk0OWM4LjI3NCAwIDE1LjMyMSA3LjA0OCAxNS4zMjEgMTUuMzIxdjExMC45Mjh6bTg5LjQ3NyAwYzAgOC4yNzQtNy4wNDggMTUuMzIxLTE1LjMyMiAxNS4zMjFoLTMwLjk0OWMtOC4yNzQgMC0xNS4zMjEtNy4wNDgtMTUuMzIxLTE1LjMyMVYyNzAuMDk2YzAtOC4yNzQgNy4wNDgtMTUuMzIxIDE1LjMyMS0xNS4zMjFoMzAuOTQ5YzguMjc0IDAgMTUuMzIyIDcuMDQ4IDE1LjMyMiAxNS4zMjF2MTMxLjQ1OHptODkuNDc3IDBjMCA4LjI3NC03LjA0NyAxNS4zMjEtMTUuMzIxIDE1LjMyMWgtMzAuOTQ5Yy04LjI3NCAwLTE1LjMyMi03LjA0OC0xNS4zMjItMTUuMzIxVjIzOC44NGMwLTguMjc0IDcuMDQ4LTE1LjMyMSAxNS4zMjItMTUuMzIxaDMwLjk0OWM4LjI3NCAwIDE1LjMyMSA3LjA0OCAxNS4zMjEgMTUuMzIxdjE2Mi43MTR6bTg3LjAyNyAwYzAgOC4yNzQtNy4wNDggMTUuMzIxLTE1LjMyMiAxNS4zMjFoLTI4LjQ5N2MtOC4yNzQgMC0xNS4zMjEtNy4wNDgtMTUuMzIxLTE1LjMyMVYxNzYuOTQxYzAtOC41NzkgNy4wNDctMTUuNjI4IDE1LjMyMS0xNS42MjhoMjguNDk3YzguMjc0IDAgMTUuMzIyIDcuMDQ4IDE1LjMyMiAxNS42Mjh2MjI0LjYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VydmljZXN0YWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg4IDIxNmM4MS43IDEwLjIgMjczLjcgMTAyLjMgMzA0IDIzMkgwYzk5LjUtOC4xIDE4NC41LTEzNyA4OC0yMzJ6bTMyLTE1MmMzMi4zIDM1LjYgNDcuNyA4My45IDQ2LjQgMTMzLjZDMjQ5LjMgMjMxLjMgMzczLjcgMzIxLjMgNDAwIDQ0OGg5NkM0NTUuMyAyMzEuOSAyMjIuOCA3OS41IDEyMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpcnRzaW5idWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMCA0MTAuM2wzMC42IDEzLjQgNC40LTkuOS0zMC42LTEzLjR6bTM5LjQgMTcuNWwzMC42IDEzLjQgNC40LTkuOS0zMC42LTEzLjR6bTE3Mi4xLTE0bDQuNCA5LjkgMzAuNi0xMy40LTQuNC05Ljl6TTE3OS4xIDQ0NWwzMC4zIDEzLjcgNC40LTkuOS0zMC4zLTEzLjR6TTYwLjQgMzkyLjhMOTEgNDA2LjJsNC40LTkuNi0zMC42LTEzLjd6bTIxMS40IDM4LjVsNC40IDkuOSAzMC42LTEzLjQtNC40LTkuOXptLTM5LjMgMTcuNWw0LjQgOS45IDMwLjYtMTMuNy00LjQtOS42em0xMTguNC01Mi4ybDQuNCA5LjYgMzAuNi0xMy40LTQuNC05Ljl6TTE3MCA0Ni42aC0zMy41djEwLjVIMTcwem0tNDcuMiAwSDg5LjJ2MTAuNWgzMy41em0tNDcuMyAwSDQyLjN2MTAuNWgzMy4zem0xNDEuNSAwaC0zMy4ydjEwLjVIMjE3em05NC41IDBIMjc4djEwLjVoMzMuNXptNDcuMyAwaC0zMy41djEwLjVoMzMuNXptLTk0LjYgMEgyMzF2MTAuNWgzMy4yem0xNDEuNSAwaC0zMy4zdjEwLjVoMzMuM3pNNTIuOCAzNTEuMUg0MnYzMy41aDEwLjh6bTcwLTIxNS45SDg5LjJ2MTAuNWgzMy41em0tNzAgMTAuNmgyMi44di0xMC41SDQydjMzLjVoMTAuOHptMTY4LjkgMjI4LjZjNTAuNSAwIDkxLjMtNDAuOCA5MS4zLTkxLjMgMC01MC4yLTQwLjgtOTEuMy05MS4zLTkxLjMtNTAuMiAwLTkxLjMgNDEuMS05MS4zIDkxLjMgMCA1MC41IDQxLjEgOTEuMyA5MS4zIDkxLjN6bS00OC4yLTExMS4xYzAtMjUuNCAyOS41LTMxLjggNDkuNi0zMS44IDE2LjkgMCAyOS4yIDUuOCA0NC4zIDEybC04LjggMTYuOWgtLjljLTYuNC05LjktMjQuOC0xMy4xLTM1LjYtMTMuMS05IDAtMjkuOCAxLjgtMjkuOCAxNC45IDAgMjEuNiA3OC41LTEwLjIgNzguNSAzNy45IDAgMjUuNC0zMS41IDMxLjItNTEgMzEuMi0xOC4xIDAtMzIuNC0yLjktNDcuMi0xMi4ybDktMTguNGguOWM2LjEgMTIuMiAyMy42IDE0LjkgMzUuOSAxNC45IDguNyAwIDMyLjctMS4yIDMyLjctMTQuMyAwLTI2LjEtNzcuNiA2LjMtNzcuNi0zOHpNNTIuOCAxNzguNEg0MlYyMTJoMTAuOHptMzQyLjQgMjA2LjJINDA2di0zMy41aC0xMC44ek01Mi44IDMwNy45SDQydjMzLjVoMTAuOHpNMCAzLjd2NDA2bDIyMS43IDk4LjZMNDQ4IDQwOS43VjMuN3ptNDE4LjggMzg3LjFMMjIyIDQ3Ni41IDI5LjIgMzkwLjhWMTIwLjdoMzg5Ljd2MjcwLjF6bTAtMjk5LjNIMjkuMlYzMi45aDM4OS43djU4LjZ6bS0zNjYgMTMwLjFINDJ2MzMuNWgxMC44em0wIDQzLjJINDJ2MzMuNWgxMC44ek0xNzAgMTM1LjJoLTMzLjV2MTAuNUgxNzB6bTIyNS4yIDE2My4xSDQwNnYtMzMuNWgtMTAuOHptMC00My4ySDQwNnYtMzMuNWgtMTAuOHpNMjE3IDEzNS4yaC0zMy4ydjEwLjVIMjE3ek0zOTUuMiAyMTJINDA2di0zMy41aC0xMC44em0wIDEyOS41SDQwNlYzMDhoLTEwLjh6bS0xMzEtMjA2LjNIMjMxdjEwLjVoMzMuMnptNDcuMyAwSDI3OHYxMC41aDMzLjV6bTgzLjcgMzMuNkg0MDZ2LTMzLjVoLTMzLjV2MTAuNWgyMi44em0tMzYuNC0zMy42aC0zMy41djEwLjVoMzMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvZWxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA0LjkgMzMxYzIuMi0xLjEgNC40LTIuMyA2LjUtMy43bDguMy00LjhjMS41LTEuMSA0LjQtMy40IDguNy02LjdsLjUtLjVjMy40LTMuNCA3LjItNSAxMS4zLTQuOWMxLjggMCAzLjkgLjUgNi40IDEuNWwzMS0yNy41Yy45LS43IDEuNy0xLjMgMi42LTEuOGguMmMzLjMtMS45IDYtMS44IDguMiAuNGMzLjkgMi4xIDQuMiA1LjYgLjkgMTAuNkw0NTYuOSAzMjJjLjIgLjUgLjQgMSAuNCAxLjVjLjUgMi4yIC4zIDQuNC0uNSA2LjZjLS43IDEuNS0xLjggMi45LTMuMSA0LjJjLTEuNCAxLjQtMi43IDIuOC00LjIgNC4ybC0xOC44IDEzLjdjLTEuNyAxLjItMy40IDIuMy01LjEgMy4zYy0yLjEgMS4zLTQuMyAyLjUtNi42IDMuNmMtMSAuNC0xLjkgLjktMi45IDEuM2MtNS45IDIuNS0xMS45IDQuMi0xOC4yIDVjLTIuOSAyNC41LTExLjMgNDcuMS0yNS4xIDY3LjhjLTE3LjUgMjUuNy00MS40IDQ1LjQtNzEuOCA1OC44Yy0zMC4yIDEzLjUtNjMgMjAuMi05OC4yIDIwLjJjLTQ4LjYtLjUtODgtMTEuNC0xMTguMi0zMi44QzQ5LjUgNDU0LjQgMzIgNDIxLjUgMzIgMzgwLjN2LTUuNmMxLjItMjguMSA5LjUtNTQuNiAyNC44LTc5LjhjMTUuMS0yNC45IDM3LjEtNDEuNyA2Ni4xLTUwLjVjMTQuOS00LjQgMjkuOS02LjYgNDUtNi42YzE1LjUgMCAzMS42IDIuOSA0OC4xIDguNnMzNS4yIDE1LjUgNTUuOSAyOS41TDMyNiAzMTIuMmMxNS4xIDkuOCAyOC44IDE2LjUgNDEuMiAyMGMtMi42LTI1LjEtMTEuNy00Ni42LTI3LjMtNjQuNWMtMTUuNy0xOC4xLTM1LjYtMzEuMy01OS45LTM5LjdsLTIzLjMtOGMtMjEuNC03LjUtMzcuMy0xNC45LTQ3LjctMjIuMmMtMjguMi0xOS4xLTQzLjgtNDUuMi00Ny03OC41bC0uNS05LjhjMC0zMi4xIDEzLTU4LjkgMzktODAuNUMyMjMuNSA5LjcgMjUxLjEgMCAyODMgMGMyNCAwIDQ1LjYgNi45IDY0LjcgMjAuOGMxOS4yIDE0IDMwLjEgMzMuOCAzMi42IDU5LjRsLjUgMTBjMCAxOC42LTQuOCAzNC41LTE0LjQgNDcuN2MtOS44IDEzLjItMTguNSAxOS45LTI2IDE5LjljLTEuNi0uMS0zLjEtLjMtNC41LS42bC0zNCAzMmMtNS41IDMtOS4yIDIuNS0xMS4xLTEuNmMtMS45LTIuMi0xLjgtNC45IC41LTguMmwuMi0uMmMuNS0uNyAxLjItMS41IDItMi40bDMxLjYtMzBjLS40LTEuNS0uNi0zLjEtLjYtNC44YzAtNC4xIDEuNi03LjYgNC45LTEwLjRjMTMuOC0xMi40IDIwLjgtMjYuNyAyMC44LTQyLjhjMC0xNi02LjEtMjkuNS0xOC4yLTQwLjRzLTI4LjctMTYuNS00OS43LTE2LjhjLTI2LjIgMC00Ny44IDcuOS02NC43IDIzLjdTMTkyLjMgODkuOSAxOTIuMyAxMTJjMCAxNy44IDYuOSAzMy45IDIwLjYgNDguM2MxMy42IDE0LjIgMzQuNiAyNS40IDYzIDMzLjVjMzkuOCAxMS41IDcwLjIgMzEgOTEuMyA1OC4zYzE4LjcgMjQuMiAyOS4xIDUxLjMgMzEuMyA4MS40YzIuMi0uNyA0LjMtMS41IDYuNS0yLjZ6TTI5NC4xIDE3OC43YzAgMS4xIC42IDEuNiAxLjggMS42Yy4xIDAgOS43LTguOSAyOC44LTI2LjZjMC0yLjQtNS4xIC45LTE1LjMgMTBjLTEwLjIgOS4yLTE1LjMgMTQuMi0xNS4zIDE0Ljl6bTggNi40YzAtMS0uNS0xLjUtMS41LTEuNWMtMS4xIDAtMi4xIC41LTIuOSAxLjZjLTEuOS0uMS0zLjMgLjEtNC4yIC43Yy0uNCAuMi0uNSAuNS0uNSAuN2MwIC43IC41IDEuMyAxLjUgMS42aDMuM2MyLjktMS4xIDQuNC0yLjIgNC40LTMuM3ptMjIuNi0xOS45YzAtMi44LTEuNi0yLjgtNC45IDBjLTEuNiAxLjUtMy42IDMuNS02IDYuMmMtLjggLjYtMi42IDIuMi01LjMgNC45Yy0yLjggMi45LTQuMiA0LjctNC4yIDUuM2wuMiAxLjNjLjcgLjIgMS4yIC40IDEuNSAuNGMuMSAwIDMuMy0yLjkgOS41LTguN3M5LjMtOC45IDkuMy05LjN6bTE1OS43IDEyMGwtMzAuNiAyN2MxLjggMSAzLjIgMi40IDQgNC4ybDMwLjItMjdjLjItMS4yIC4xLTIuMi0uNS0yLjljLS42LS41LTEuNi0uOS0zLjEtMS4zem0tMS42LS45bC0uNy0uNy0yNyAyMS45IDEuNiAyIDI2LTIzLjF6TTM2Ni42IDM2My45Yy04LTIuMS0xNS40LTQuNi0yMi4yLTcuNWMtMTUuMy02LjItMzQuMy0xNy01Ny0zMi40TDI1MCAyOTguN2MtMTUuOC0xMC4xLTMwLjItMTcuNi00My4yLTIyLjZjLTEzLjEtNC45LTI2LTcuMy0zOC42LTcuM2gtNS41Yy0zMi4yIDEuNy01Ny4yIDEzLjgtNzUgMzYuMmMtMTYuNiAyMC44LTI1IDQ1LjMtMjUgNzMuNmMwIDMxLjggMTIuOCA1Ni43IDM4LjIgNzQuN2MyNS40IDE4LjEgNjAuMiAyNy4xIDEwNC40IDI3LjFjMzQuNyAwIDY0LTYuMiA4Ny44LTE4LjZjMjMuNy0xMi40IDQyLjEtMjguOCA1NS4yLTQ5LjJjOS44LTE1LjUgMTUuOS0zMS44IDE4LjItNDguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcGlmeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODguMzIsMTA0LjFhNC42Niw0LjY2LDAsMCwwLTQuNC00Yy0yLDAtMzcuMjMtLjgtMzcuMjMtLjhzLTIxLjYxLTIwLjgyLTI5LjYyLTI4LjgzVjUwMy4yTDQ0Mi43Niw0NzJTMzg4LjcyLDEwNi41LDM4OC4zMiwxMDQuMVpNMjg4LjY1LDcwLjQ3YTExNi42NywxMTYuNjcsMCwwLDAtNy4yMS0xNy42MUMyNzEsMzIuODUsMjU1LjQyLDIyLDIzNywyMmExNSwxNSwwLDAsMC00LC40Yy0uNC0uOC0xLjItMS4yLTEuNi0yQzIyMy40LDExLjYzLDIxMyw3LjYzLDIwMC41OCw4Yy0yNCwuOC00OCwxOC02Ny4yNSw0OC44My0xMy42MSwyMS42Mi0yNCw0OC44NC0yNi44Miw3MC4wNi0yNy42Miw4LjQtNDYuODMsMTQuNDEtNDcuMjMsMTQuODEtMTQsNC40LTE0LjQxLDQuOC0xNiwxOC0xLjIsMTAtMzgsMjkxLjgyLTM4LDI5MS44MkwzMDcuODYsNTA0VjY1LjY3YTQxLjY2LDQxLjY2LDAsMCwwLTQuNC40UzI5Ny44Niw2Ny42NywyODguNjUsNzAuNDdaTTIzMy40MSw4Ny42OWMtMTYsNC44LTMzLjYzLDEwLjQtNTAuODQsMTUuNjEsNC44LTE4LjgyLDE0LjQxLTM3LjYzLDI1LjYyLTUwLDQuNC00LjQsMTAuNDEtOS42MSwxNy4yMS0xMi44MUMyMzIuMjEsNTQuODYsMjMzLjgxLDc0LjQ4LDIzMy40MSw4Ny42OVpNMjAwLjU4LDI0LjQ0QTI3LjQ5LDI3LjQ5LDAsMCwxLDIxNSwyOGMtNi40LDMuMi0xMi44MSw4LjQxLTE4LjgxLDE0LjQxLTE1LjIxLDE2LjQyLTI2LjgyLDQyLTMxLjYyLDY2LjQ1LTE0LjQyLDQuNDEtMjguODMsOC44MS00MiwxMi44MUMxMzEuMzMsODMuMjgsMTYzLjc1LDI1LjI0LDIwMC41OCwyNC40NFpNMTU0LjE1LDI0NC42MWMxLjYsMjUuNjEsNjkuMjUsMzEuMjIsNzMuMjUsOTEuNjYsMi44LDQ3LjY0LTI1LjIyLDgwLjA2LTY1LjY1LDgyLjQ3LTQ4LjgzLDMuMi03NS42NS0yNS42Mi03NS42NS0yNS42MmwxMC40LTQ0czI2LjgyLDIwLjQyLDQ4LjQ0LDE4LjgyYzE0LS44LDE5LjIyLTEyLjQxLDE4LjgxLTIwLjQyLTItMzMuNjItNTcuMjQtMzEuNjItNjAuODQtODYuODYtMy4yLTQ2LjQ0LDI3LjIyLTkzLjI3LDk0LjQ3LTk3LjY4LDI2LTEuNiwzOS4yMyw0LjgxLDM5LjIzLDQuODFMMjIxLjQsMjI1LjM5cy0xNy4yMS04LTM3LjYzLTYuNEMxNTQuMTUsMjIxLDE1My43NSwyMzkuOCwxNTQuMTUsMjQ0LjYxWk0yNDkuNDIsODIuODhjMC0xMi0xLjYtMjkuMjItNy4yMS00My42MywxOC40MiwzLjYsMjcuMjIsMjQsMzEuMjMsMzYuNDNRMjYyLjYzLDc4LjY4LDI0OS40Miw4Mi44OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcHdhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAzLjUgNDU1LjQxQTI0Ni4xNyAyNDYuMTcgMCAwIDEgMjU2IDUwNEMxMTguODEgNTA0IDggMzkzIDggMjU2IDggMTE4LjgxIDExOSA4IDI1NiA4YTI0Ny4zOSAyNDcuMzkgMCAwIDEgMTY1LjcgNjMuNSAzLjU3IDMuNTcgMCAwIDEtMi44NiA2LjE4QTQxOC42MiA0MTguNjIgMCAwIDAgMzYyLjEzIDc0Yy0xMjkuMzYgMC0yMjIuNCA1My40Ny0yMjIuNCAxNTUuMzUgMCAxMDkgOTIuMTMgMTQ1Ljg4IDE3Ni44MyAxNzguNzMgMzMuNjQgMTMgNjUuNCAyNS4zNiA4NyA0MS41OWEzLjU4IDMuNTggMCAwIDEgMCA1Ljcyek01MDMgMjMzLjA5YTMuNjQgMy42NCAwIDAgMC0xLjI3LTIuNDRjLTUxLjc2LTQzLTkzLjYyLTYwLjQ4LTE0NC40OC02MC40OC04NC4xMyAwLTgwLjI1IDUyLjE3LTgwLjI1IDUzLjYzIDAgNDIuNiA1Mi4wNiA2MiAxMTIuMzQgODQuNDkgMzEuMDcgMTEuNTkgNjMuMTkgMjMuNTcgOTIuNjggMzkuOTNhMy41NyAzLjU3IDAgMCAwIDUtMS44MkEyNDkgMjQ5IDAgMCAwIDUwMyAyMzMuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hbE1lc3NlbmdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTQuNiA3LjVsNS44IDIzLjNDMTc3LjcgMzYuMyAxNTYgNDUuMyAxMzYgNTcuNEwxMjMuNyAzNi44YzIyLTEzLjMgNDUuOS0yMy4yIDcwLjktMjkuM3ptMTIyLjkgMGwtNS44IDIzLjNDMzM0LjMgMzYuMyAzNTYgNDUuMyAzNzYgNTcuNGwxMi40LTIwLjZjLTIyLTEzLjMtNDYtMjMuMi03MS0yOS4zek0zNi44IDEyMy43Yy0xMy4zIDIyLTIzLjIgNDUuOS0yOS4zIDcwLjlsMjMuMyA1LjhDMzYuMyAxNzcuNyA0NS4zIDE1NiA1Ny40IDEzNkwzNi44IDEyMy43ek0yNCAyNTZjMC0xMS42IC45LTIzLjMgMi42LTM0LjhMMi45IDIxNy42Yy0zLjggMjUuNC0zLjggNTEuMyAwIDc2LjdsMjMuNy0zLjZDMjQuOSAyNzkuMyAyNCAyNjcuNiAyNCAyNTZ6TTM4OC4zIDQ3NS4yTDM3NiA0NTQuNmMtMjAgMTIuMS00MS42IDIxLTY0LjIgMjYuNmw1LjggMjMuM2MyNC45LTYuMiA0OC44LTE2IDcwLjgtMjkuM3pNNDg4IDI1NmMwIDExLjYtLjkgMjMuMy0yLjYgMzQuOGwyMy43IDMuNmMzLjgtMjUuNCAzLjgtNTEuMyAwLTc2LjdsLTIzLjcgMy42YzEuNyAxMS41IDIuNiAyMy4xIDIuNiAzNC44em0xNi41IDYxLjRsLTIzLjMtNS44Yy01LjYgMjIuNy0xNC41IDQ0LjMtMjYuNiA2NC4zbDIwLjYgMTIuNGMxMy4zLTIyIDIzLjItNDYgMjkuMy03MXptLTIxMy44IDE2OGMtMjMgMy41LTQ2LjUgMy41LTY5LjUgMGwtMy42IDIzLjdjMjUuNCAzLjggNTEuMyAzLjggNzYuNyAwbC0zLjYtMjMuN3ptMTUyLTkxLjhjLTEzLjggMTguNy0zMC40IDM1LjMtNDkuMiA0OS4xbDE0LjIgMTkuM2MyMC43LTE1LjIgMzktMzMuNCA1NC4yLTU0LjFsLTE5LjMtMTQuNHpNMzkzLjYgNjkuMmMxOC44IDEzLjggMzUuMyAzMC40IDQ5LjIgNDkuMkw0NjIuMSAxMDRDNDQ2LjkgODMuNCA0MjguNiA2NS4xIDQwOCA0OS45TDM5My42IDY5LjJ6TTY5LjIgMTE4LjRjMTMuOC0xOC44IDMwLjQtMzUuMyA0OS4yLTQ5LjJMMTA0IDQ5LjlDODMuNCA2NS4xIDY1LjEgODMuNCA0OS45IDEwNGwxOS4zIDE0LjR6bTQwNiA1LjNMNDU0LjYgMTM2YzEyLjEgMjAgMjEgNDEuNiAyNi42IDY0LjJsMjMuMy01LjhjLTYuMi0yNC45LTE2LTQ4LjgtMjkuMy03MC44em0tMjU0LTk3LjFjMjMtMy41IDQ2LjUtMy41IDY5LjUgMGwzLjYtMjMuN0MyNjguOS0xIDI0My4xLTEgMjE3LjYgMi45bDMuNiAyMy43ek04MS42IDQ2OC40TDMyIDQ4MGwxMS42LTQ5LjZMMjAuMiA0MjUgOC42IDQ3NC41Yy0uOSA0LS44IDguMSAuMyAxMi4xczMuMiA3LjUgNi4xIDEwLjRzNi41IDUgMTAuNCA2LjFzOC4xIDEuMiAxMi4xIC4zTDg3IDQ5MmwtNS40LTIzLjZ6TTI1LjIgNDAzLjZMNDguNiA0MDlsOC0zNC40Yy0xMS43LTE5LjYtMjAuNC00MC44LTI1LjgtNjNMNy41IDMxNy40YzUuMiAyMS4yIDEzLjIgNDEuNyAyMy42IDYwLjhsLTUuOSAyNS4zem0xMTIgNTJsLTM0LjQgOCA1LjQgMjMuNCAyNS4zLTUuOWMxOS4yIDEwLjQgMzkuNiAxOC40IDYwLjggMjMuNmw1LjgtMjMuM2MtMjIuMS01LjUtNDMuMy0xNC4zLTYyLjgtMjZsLS4yIC4yek0yNTYgNDhjLTM3LjIgMC03My42IDEwLTEwNS42IDI4LjlzLTU4LjQgNDYtNzYuMyA3OC42cy0yNi45IDY5LjMtMjUuOCAxMDYuNHMxMiA3My4zIDMxLjggMTA0LjhMNjAgNDUybDg1LjMtMjBjMjcuMyAxNy4yIDU4LjIgMjcuOCA5MC4zIDMxczY0LjUtMS4xIDk0LjYtMTIuNnM1Ny4yLTI5LjggNzktNTMuNnMzNy44LTUyLjIgNDYuOC04My4yczEwLjUtNjMuNiA0LjctOTUuM3MtMTktNjEuNi0zOC40LTg3LjRzLTQ0LjUtNDYuNy03My40LTYxUzI4OC4zIDQ4IDI1NiA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2ltcGx5YnVpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgxLjIgNjRoLTEwNmMtMTQuNSAwLTI2LjYgMTEuOC0yNi42IDI2LjN2MzkuNkgxNjMuM1Y5MC4zYzAtMTQuNS0xMi0yNi4zLTI2LjYtMjYuM2gtMTA2QzE2LjEgNjQgNC4zIDc1LjggNC4zIDkwLjN2MzMxLjRjMCAxNC41IDExLjggMjYuMyAyNi42IDI2LjNoNDUwLjRjMTQuOCAwIDI2LjYtMTEuOCAyNi42LTI2LjNWOTAuM2MtLjItMTQuNS0xMi0yNi4zLTI2LjctMjYuM3pNMTQ5LjggMzU1LjhjLTM2LjYgMC02Ni40LTI5LjctNjYuNC02Ni40IDAtMzYuOSAyOS43LTY2LjYgNjYuNC02Ni42IDM2LjkgMCA2Ni42IDI5LjcgNjYuNiA2Ni42IDAgMzYuNy0yOS43IDY2LjQtNjYuNiA2Ni40em0yMTIuNCAwYy0zNi45IDAtNjYuNi0yOS43LTY2LjYtNjYuNiAwLTM2LjYgMjkuNy02Ni40IDY2LjYtNjYuNCAzNi42IDAgNjYuNCAyOS43IDY2LjQgNjYuNCAwIDM2LjktMjkuOCA2Ni42LTY2LjQgNjYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lzdHJpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDQ5TDMwMS4yIDMwMC4yYzIwLTI3LjkgMzEuOS02Mi4yIDMxLjktOTkuMiAwLTkzLjEtNzQuNy0xNjguOS0xNjYuNS0xNjguOUM3NC43IDMyIDAgMTA3LjggMCAyMDAuOXM3NC43IDE2OC45IDE2Ni41IDE2OC45YzM5LjggMCA3Ni4zLTE0LjIgMTA1LTM3LjlsMTQ2IDE0OC4xIDMwLjUtMzF6TTE2Ni41IDMzMC44Yy03MC42IDAtMTI4LjEtNTguMy0xMjguMS0xMjkuOVM5NS45IDcxIDE2Ni41IDcxczEyOC4xIDU4LjMgMTI4LjEgMTI5LjktNTcuNCAxMjkuOS0xMjguMSAxMjkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2l0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMybDY5LjcxIDExOC43NS01OC44Ni0xMS41MiA2OS44NCA5MS4wM2ExNDYuNzQxIDE0Ni43NDEgMCAwIDAgMCA1MS40NWwtNjkuODQgOTEuMDMgNTguODYtMTEuNTJMMCA0ODBsMTE4Ljc1LTY5LjcxLTExLjUyIDU4Ljg2IDkxLjAzLTY5Ljg0YzE3LjAyIDMuMDQgMzQuNDcgMy4wNCA1MS40OCAwbDkxLjAzIDY5Ljg0LTExLjUyLTU4Ljg2TDQ0OCA0ODBsLTY5LjcxLTExOC43OCA1OC44NiAxMS41Mi02OS44NC05MS4wM2MzLjAzLTE3LjAxIDMuMDQtMzQuNDQgMC01MS40NWw2OS44NC05MS4wMy01OC44NiAxMS41Mkw0NDggMzJsLTExOC43NSA2OS43MSAxMS41Mi01OC45LTkxLjA2IDY5Ljg3Yy04LjUtMS41Mi0xNy4xLTIuMjktMjUuNzEtMi4yOXMtMTcuMjEuNzgtMjUuNzEgMi4yOWwtOTEuMDYtNjkuODcgMTEuNTIgNTguOUwwIDMyem0yMjQgOTkuNzhjMzEuOCAwIDYzLjYgMTIuMTIgODcuODUgMzYuMzcgNDguNSA0OC41IDQ4LjQ5IDEyNy4yMSAwIDE3NS43cy0xMjcuMiA0OC40Ni0xNzUuNy0uMDNjLTQ4LjUtNDguNS00OC40OS0xMjcuMjEgMC0xNzUuNyAyNC4yNC0yNC4yNSA1Ni4wNS0zNi4zNCA4Ny44NS0zNi4zNHptMCAzNi42NmMtMjIuNDIgMC00NC44MyA4LjUyLTYxLjkyIDI1LjYxLTM0LjE4IDM0LjE4LTM0LjE5IDg5LjY4IDAgMTIzLjg3czg5LjY1IDM0LjE4IDEyMy44NCAwYzM0LjE4LTM0LjE4IDM0LjE5LTg5LjY4IDAtMTIzLjg3LTE3LjA5LTE3LjA5LTM5LjUtMjUuNjEtNjEuOTItMjUuNjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpdHJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuNDM5IDAuMDA4NDYxMjhWMEg0NDhWMTI4SDY0QzY0IDU3LjYwMDggMTQxLjc1NSAwLjQ3NTMzOCAyMTIuNDM5IDAuMDA4NDYxMjhaTTIzNy4yNTYgMTkyVjE5Mi4wMDdDMzA3LjEzNSAxOTIuNDc1IDM4NCAyNDkuNiAzODQgMzIwSDIxMC44MDlWMzE5Ljk5NUMxNDAuOTE1IDMxOS41NjMgNjQgMjYyLjQyNCA2NCAxOTJIMjM3LjI1NlpNMjM1LjU2NSA1MTEuOTkzQzMwNi4yNTEgNTExLjUyMSAzODQgNDU0LjM5OSAzODQgMzg0SDBWNTEySDIzNS41NjVWNTExLjk5M1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2tldGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3LjUgMTYyLjJMOSAxODcuMWg5MC41bDYuOS0xMzAuNy03OC45IDEwNS44ek0zOTYuMyA0NS43TDI2Ny43IDMybDEzNS43IDE0Ny4yLTcuMS0xMzMuNXpNMTEyLjIgMjE4LjNsLTExLjItMjJIOS45TDIzNC44IDQ1OHptMi0zMS4yaDI4NGwtODEuNS04OC41TDI1Ni4zIDMzem0yOTcuMyA5LjFMMjc3LjYgNDU4bDIyNC44LTI2MS43aC05MC45ek00MTUuNCA2OUw0MDYgNTYuNGwuOSAxNy4zIDYuMSAxMTMuNGg5MC4zek0xMTMuNSA5My41bC00LjYgODUuNkwyNDQuNyAzMiAxMTYuMSA0NS43em0yODcuNyAxMDIuN2gtMjkwbDQyLjQgODIuOUwyNTYuMyA0ODBsMTQ0LjktMjgzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNreWF0bGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAzMjkuM2MwIDY1LjktNTIuNSAxMTQuNC0xMTcuNSAxMTQuNC0xNjUuOSAwLTE5Ni42LTI0OS43LTM1OS43LTI0OS43LTE0Ni45IDAtMTQ3LjEgMjEyLjIgNS42IDIxMi4yIDQyLjUgMCA5MC45LTE3LjggMTI1LjMtNDIuNSA1LjYtNC4xIDE2LjktMTYuMyAyMi44LTE2LjNzMTAuOSA1IDEwLjkgMTAuOWMwIDcuOC0xMy4xIDE5LjEtMTguNyAyNC4xLTQwLjkgMzUuNi0xMDAuMyA2MS4yLTE1NC43IDYxLjItODMuNC4xLTE1NC01OS0xNTQtMTQ0LjlzNjcuNS0xNDkuMSAxNTIuOC0xNDkuMWMxODUuMyAwIDIyMi41IDI0NS45IDM2MS45IDI0NS45IDk5LjkgMCA5NC44LTEzOS43IDMuNC0xMzkuNy0xNy41IDAtMzUgMTEuNi00Ni45IDExLjYtOC40IDAtMTUuOS03LjItMTUuOS0xNS42IDAtMTEuNiA1LjMtMjMuNyA1LjMtMzYuMyAwLTY2LjYtNTAuOS0xMTQuNy0xMTYuOS0xMTQuNy01My4xIDAtODAgMzYuOS04OC44IDM2LjktNi4yIDAtMTEuMi01LTExLjItMTEuMiAwLTUuNiA0LjEtMTAuMyA3LjgtMTQuNCAyNS4zLTI4LjggNjQuNy00My43IDEwMi44LTQzLjcgNzkuNCAwIDEzOS4xIDU4LjQgMTM5LjEgMTM3LjggMCA2LjktLjMgMTMuNy0xLjIgMjAuNiAxMS45LTMuMSAyNC4xLTQuNyAzNS45LTQuNyA2MC43IDAgMTExLjkgNDUuMyAxMTEuOSAxMDcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t5cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjcgMjk5LjhjMi45LTE0IDQuNy0yOC45IDQuNy00My44IDAtMTEzLjUtOTEuOS0yMDUuMy0yMDUuMy0yMDUuMy0xNC45IDAtMjkuNyAxLjctNDMuOCA0LjdDMTYxLjMgNDAuNyAxMzcuNyAzMiAxMTIgMzIgNTAuMiAzMiAwIDgyLjIgMCAxNDRjMCAyNS43IDguNyA0OS4zIDIzLjMgNjguMi0yLjkgMTQtNC43IDI4LjktNC43IDQzLjggMCAxMTMuNSA5MS45IDIwNS4zIDIwNS4zIDIwNS4zIDE0LjkgMCAyOS43LTEuNyA0My44LTQuNyAxOSAxNC42IDQyLjYgMjMuMyA2OC4yIDIzLjMgNjEuOCAwIDExMi01MC4yIDExMi0xMTIgLjEtMjUuNi04LjYtNDkuMi0yMy4yLTY4LjF6bS0xOTQuNiA5MS41Yy02NS42IDAtMTIwLjUtMjkuMi0xMjAuNS02NSAwLTE2IDktMzAuNiAyOS41LTMwLjYgMzEuMiAwIDM0LjEgNDQuOSA4OC4xIDQ0LjkgMjUuNyAwIDQyLjMtMTEuNCA0Mi4zLTI2LjMgMC0xOC43LTE2LTIxLjYtNDItMjgtNjIuNS0xNS40LTExNy44LTIyLTExNy44LTg3LjIgMC01OS4yIDU4LjYtODEuMSAxMDkuMS04MS4xIDU1LjEgMCAxMTAuOCAyMS45IDExMC44IDU1LjQgMCAxNi45LTExLjQgMzEuOC0zMC4zIDMxLjgtMjguMyAwLTI5LjItMzMuNS03NS0zMy41LTI1LjcgMC00MiA3LTQyIDIyLjUgMCAxOS44IDIwLjggMjEuOCA2OS4xIDMzIDQxLjQgOS4zIDkwLjcgMjYuOCA5MC43IDc3LjYgMCA1OS4xLTU3LjEgODYuNS0xMTIgODYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTQuMTIgMzE1LjFjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2UzAgMzQxIDAgMzE1LjFjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDQ3LjA2djQ3LjA2em0yMy43MiAwYzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNnM0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnYxMTcuODRjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2cy00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlYzMTUuMXptNDcuMDYtMTg4Ljk4Yy0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZTMTM5IDMyIDE2NC45IDMyczQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2djQ3LjA2SDE2NC45em0wIDIzLjcyYzI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnMtMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZINDcuMDZDMjEuMTYgMjQzLjk2IDAgMjIyLjggMCAxOTYuOXMyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNkgxNjQuOXptMTg4Ljk4IDQ3LjA2YzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNiAyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2aC00Ny4wNlYxOTYuOXptLTIzLjcyIDBjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2LTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlY3OS4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDYgMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2VjE5Ni45ek0yODMuMSAzODUuODhjMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2IDAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNi0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZ2LTQ3LjA2aDQ3LjA2em0wLTIzLjcyYy0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDYgMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDExNy44NGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDYgMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2SDI4My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGlkZXNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ny43IDE1My43Yy0zNCAwLTYxLjcgMjUuNy02MS43IDU3LjcgMCAzMS43IDI3LjcgNTcuNyA2MS43IDU3LjdzNjEuNy0yNiA2MS43LTU3LjdjMC0zMi0yNy43LTU3LjctNjEuNy01Ny43em0xNDMuNCAwYy0zNCAwLTYxLjcgMjUuNy02MS43IDU3LjcgMCAzMS43IDI3LjcgNTcuNyA2MS43IDU3LjcgMzQuMyAwIDYxLjctMjYgNjEuNy01Ny43LjEtMzItMjcuNC01Ny43LTYxLjctNTcuN3ptMTU2LjYgOTBsLTYgNC4zVjQ5LjdjMC0yNy40LTIwLjYtNDkuNy00Ni00OS43SDc2LjZjLTI1LjQgMC00NiAyMi4zLTQ2IDQ5LjdWMjQ4Yy0yLTEuNC00LjMtMi45LTYuMy00LjMtMTUuMS0xMC42LTI1LjEgNC0xNiAxNy43IDE4LjMgMjIuNiA1My4xIDUwLjMgMTA2LjMgNzJDNTguMyA1MjUuMSAyNTIgNTU1LjcgMjQ4LjkgNDU3LjVjMC0uNy4zLTU2LjYuMy05Ni42IDUuMSAxLjEgOS40IDIuMyAxMy43IDMuMSAwIDM5LjcuMyA5Mi44LjMgOTMuNS0zLjEgOTguMyAxOTAuNiA2Ny43IDEzNC4zLTEyNCA1My4xLTIxLjcgODgtNDkuNCAxMDYuMy03MiA5LjEtMTMuOC0uOS0yOC4zLTE2LjEtMTcuOHptLTMwLjUgMTkuMmMtNjguOSAzNy40LTEyOC4zIDMxLjEtMTYwLjYgMjkuNy0yMy43LS45LTMyLjYgOS4xLTMzLjcgMjQuOS0xMC4zLTcuNy0xOC42LTE1LjUtMjAuMy0xNy4xLTUuMS01LjQtMTMuNy04LTI3LjEtNy43LTMxLjcgMS4xLTg5LjcgNy40LTE1Ny40LTI4VjcyLjNjMC0zNC45IDguOS00NS43IDQwLjYtNDUuN2gzMTcuN2MzMC4zIDAgNDAuOSAxMi45IDQwLjkgNDUuN3YxOTAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25hcGNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjkyNiwzNjYuNmMtMy4zNzMtOS4xNzYtOS44LTE0LjA4Ni0xNy4xMTItMTguMTUzLTEuMzc2LS44MDYtMi42NDEtMS40NTEtMy43Mi0xLjk0Ny0yLjE4Mi0xLjEyOC00LjQxNC0yLjIyLTYuNjM0LTMuMzczLTIyLjgtMTIuMDktNDAuNjA5LTI3LjM0MS01Mi45NTktNDUuNDJhMTAyLjg4OSwxMDIuODg5LDAsMCwxLTkuMDg5LTE2LjEyYy0xLjA1NC0zLjAxMy0xLTQuNzI0LS4yNDgtNi4yODdhMTAuMjIxLDEwLjIyMSwwLDAsMSwyLjkxNC0zLjAzOGMzLjkxOC0yLjU5MSw3Ljk2LTUuMjIsMTAuNy02Ljk5Myw0Ljg4NS0zLjE2Miw4Ljc1NC01LjY2NywxMS4yNDYtNy40NCw5LjM2Mi02LjU0NywxNS45MDktMTMuNSwyMC0yMS4yNzhhNDIuMzcxLDQyLjM3MSwwLDAsMCwyLjEtMzUuMTkxYy02LjItMTYuMzE4LTIxLjYxMy0yNi40NDktNDAuMjg3LTI2LjQ0OWE1NS41NDMsNTUuNTQzLDAsMCwwLTExLjcxOCwxLjI0Yy0xLjAyOS4yMjQtMi4wNTkuNDU5LTMuMDYzLjcyLjE3NC0xMS4xNi0uMDc0LTIyLjk0LTEuMDY2LTM0LjUzNC0zLjUyMi00MC43NTgtMTcuNzk0LTYyLjEyMy0zMi42NzQtNzkuMTZBMTMwLjE2NywxMzAuMTY3LDAsMCwwLDMzMi4xLDM2LjQ0M0MzMDkuNTE1LDIzLjU0NywyODMuOTEsMTcsMjU2LDE3UzIwMi42LDIzLjU0NywxODAsMzYuNDQzYTEyOS43MzUsMTI5LjczNSwwLDAsMC0zMy4yODEsMjYuNzgzYy0xNC44OCwxNy4wMzgtMjkuMTUyLDM4LjQ0LTMyLjY3Myw3OS4xNjEtLjk5MiwxMS41OTQtMS4yNCwyMy40MzUtMS4wNzksMzQuNTMzLTEtLjI2LTIuMDIxLS41LTMuMDUxLS43MTlhNTUuNDYxLDU1LjQ2MSwwLDAsMC0xMS43MTctMS4yNGMtMTguNjg3LDAtMzQuMTI1LDEwLjEzMS00MC4zLDI2LjQ0OWE0Mi40MjMsNDIuNDIzLDAsMCwwLDIuMDQ2LDM1LjIyOGM0LjEwNSw3Ljc3NCwxMC42NTIsMTQuNzMxLDIwLjAxNCwyMS4yNzgsMi40OCwxLjczNiw2LjM2MSw0LjI0LDExLjI0Niw3LjQ0LDIuNjQxLDEuNzExLDYuNSw0LjIxNiwxMC4yOCw2LjcyYTExLjA1NCwxMS4wNTQsMCwwLDEsMy4zLDMuMzExYy43OTQsMS42MjQuODE4LDMuMzczLS4zNiw2LjZhMTAyLjAyLDEwMi4wMiwwLDAsMS04Ljk0LDE1Ljc4NWMtMTIuMDc3LDE3LjY2OS0yOS4zNjMsMzIuNjQ4LTUxLjQzNCw0NC42MzlDMzIuMzU1LDM0OC42MDgsMjAuMiwzNTIuNzUsMTUuMDY5LDM2Ni43Yy0zLjg2OCwxMC41MjgtMS4zMzksMjIuNTA2LDguNDk0LDMyLjZhNDkuMTM3LDQ5LjEzNywwLDAsMCwxMi40LDkuMzg3LDEzNC4zMzcsMTM0LjMzNywwLDAsMCwzMC4zNDIsMTIuMTM5LDIwLjAyNCwyMC4wMjQsMCwwLDEsNi4xMjYsMi43NDFjMy41ODMsMy4xMzcsMy4wNzUsNy44NjEsNy44NDksMTQuNzhhMzQuNDY4LDM0LjQ2OCwwLDAsMCw4Ljk3Nyw5LjEyN2MxMC4wMTksNi45MTksMjEuMjc4LDcuMzUzLDMzLjIwNyw3LjgxMSwxMC43NzYuNDEsMjIuOTg5Ljg4MSwzNi45MzksNS40ODEsNS43NzgsMS45MSwxMS43OCw1LjYwNSwxOC43MzYsOS45MkMxOTQuODQyLDQ4MC45NTEsMjE3LjcwNyw0OTUsMjU1Ljk3Myw0OTVzNjEuMjkyLTE0LjEyMyw3OC4xMTgtMjQuNDI4YzYuOTA3LTQuMjQsMTIuODcyLTcuOSwxOC40ODktOS43NTgsMTMuOTQ5LTQuNjEzLDI2LjE2My01LjA3MiwzNi45MzktNS40ODEsMTEuOTI4LS40NTksMjMuMTg3LS44OTMsMzMuMjA2LTcuODEyYTM0LjU4NCwzNC41ODQsMCwwLDAsMTAuMjE4LTExLjE2YzMuNDM0LTUuODQsMy4zNDgtOS45MTksNi41NzItMTIuNzcxYTE4Ljk3MSwxOC45NzEsMCwwLDEsNS43NTMtMi42MjlBMTM0Ljg5MywxMzQuODkzLDAsMCwwLDQ3Ni4wMiw0MDguNzFhNDguMzQ0LDQ4LjM0NCwwLDAsMCwxMy4wMTktMTAuMTkzbC4xMjQtLjE0OUM0OTguMzg5LDM4OC41LDUwMC43MDgsMzc2Ljg2Nyw0OTYuOTI2LDM2Ni42Wm0tMzQuMDEzLDE4LjI3N2MtMjAuNzQ1LDExLjQ1OC0zNC41MzMsMTAuMjMtNDUuMjU5LDE3LjEzNy05LjExNCw1Ljg2NS0zLjcyLDE4LjUxMy0xMC4zNDIsMjMuMDc2LTguMTM0LDUuNjE3LTMyLjE3Ny0uNC02My4yMzksOS44NTgtMjUuNjE4LDguNDY5LTQxLjk2MSwzMi44MjItODguMDM4LDMyLjgyMnMtNjIuMDM2LTI0LjMtODguMDc2LTMyLjg4NGMtMzEtMTAuMjU1LTU1LjA5Mi00LjI0MS02My4yMzktOS44NTgtNi42MDktNC41NjMtMS4yNC0xNy4yMTEtMTAuMzQxLTIzLjA3Ni0xMC43MzktNi45MDctMjQuNTI3LTUuNjc5LTQ1LjI2LTE3LjA3NS0xMy4yMDYtNy4yOTEtNS43MTYtMTEuOC0xLjMxNC0xMy45MzcsNzUuMTQzLTM2LjM4MSw4Ny4xMzMtOTIuNTUyLDg3LjY2Ni05Ni43MTkuNjQ1LTUuMDQ2LDEuMzY0LTkuMDE0LTQuMTkxLTE0LjE0OC01LjM2OS00Ljk2LTI5LjE4OS0xOS43LTM1LjgtMjQuMzE2LTEwLjkzNy03LjYzOC0xNS43NDgtMTUuMjY0LTEyLjItMjQuNjM4LDIuNDgtNi40ODUsOC41MzEtOC45MjgsMTQuODc5LTguOTI4YTI3LjY0MywyNy42NDMsMCwwLDEsNS45NjUuNjdjMTIsMi42LDIzLjY1OSw4LjYxNywzMC4zOTIsMTAuMjQyYTEwLjc0OSwxMC43NDksMCwwLDAsMi40OC4zMzVjMy42LDAsNC44Ni0xLjgxMSw0LjYxMi01LjkyNy0uNzY4LTEzLjEzMi0yLjYyOC0zOC43MjUtLjU1OC02Mi42NDQsMi44NC0zMi45MDksMTMuNDQyLTQ5LjIxNSwyNi4wNC02My42MzYsNi4wNTEtNi45MzIsMzQuNDg0LTM2Ljk3Niw4OC44NTctMzYuOTc2czgyLjg4LDI5LjkyLDg4LjkzMSwzNi44MjdjMTIuNjExLDE0LjQyMSwyMy4yMjUsMzAuNzI3LDI2LjA0LDYzLjYzNiwyLjA3MSwyMy45MTkuMjg1LDQ5LjUyNS0uNTU4LDYyLjY0NC0uMjg1LDQuMzI3LDEuMDE3LDUuOTI3LDQuNjEzLDUuOTI3YTEwLjY0OCwxMC42NDgsMCwwLDAsMi40OC0uMzM1YzYuNzQ1LTEuNjI0LDE4LjQtNy42MzgsMzAuNC0xMC4yNDJhMjcuNjQxLDI3LjY0MSwwLDAsMSw1Ljk2NC0uNjdjNi4zODYsMCwxMi40LDIuNDgsMTQuODgsOC45MjgsMy41NDYsOS4zNzQtMS4yNCwxNy0xMi4xODksMjQuNjM5LTYuNjA5LDQuNjEyLTMwLjQyOSwxOS4zNDMtMzUuOCwyNC4zMTUtNS41NjgsNS4xMzQtNC44MzYsOS4xLTQuMTkxLDE0LjE0OS41MzMsNC4yMjgsMTIuNTExLDYwLjQsODcuNjY2LDk2LjcxOEM0NjguNjI5LDM3My4wMTEsNDc2LjExOSwzNzcuNTI0LDQ2Mi45MTMsMzg0Ljg3N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU291bmRjbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyNTYuM2w1LjggNjUtNS44IDY4LjNjLS4zIDIuNS0yLjIgNC40LTQuNCA0LjRzLTQuMi0xLjktNC4yLTQuNGwtNS42LTY4LjMgNS42LTY1YzAtMi4yIDEuOS00LjIgNC4yLTQuMiAyLjIgMCA0LjEgMiA0LjQgNC4yem0yMS40LTQ1LjZjLTIuOCAwLTQuNyAyLjItNSA1bC01IDEwNS42IDUgNjguM2MuMyAyLjggMi4yIDUgNSA1IDIuNSAwIDQuNy0yLjIgNC43LTVsNS44LTY4LjMtNS44LTEwNS42YzAtMi44LTIuMi01LTQuNy01em0yNS41LTI0LjFjLTMuMSAwLTUuMyAyLjItNS42IDUuM2wtNC40IDEzMCA0LjQgNjcuOGMuMyAzLjEgMi41IDUuMyA1LjYgNS4zIDIuOCAwIDUuMy0yLjIgNS4zLTUuM2w1LjMtNjcuOC01LjMtMTMwYzAtMy4xLTIuNS01LjMtNS4zLTUuM3pNNy4yIDI4My4yYy0xLjQgMC0yLjIgMS4xLTIuNSAyLjVMMCAzMjEuM2w0LjcgMzVjLjMgMS40IDEuMSAyLjUgMi41IDIuNXMyLjItMS4xIDIuNS0yLjVsNS42LTM1LTUuNi0zNS42Yy0uMy0xLjQtMS4xLTIuNS0yLjUtMi41em0yMy42LTIxLjljLTEuNCAwLTIuNSAxLjEtMi41IDIuNWwtNi40IDU3LjUgNi40IDU2LjFjMCAxLjcgMS4xIDIuOCAyLjUgMi44czIuNS0xLjEgMi44LTIuNWw3LjItNTYuNC03LjItNTcuNWMtLjMtMS40LTEuNC0yLjUtMi44LTIuNXptMjUuMy0xMS40Yy0xLjcgMC0zLjEgMS40LTMuMyAzLjNMNDcgMzIxLjNsNS44IDY1LjhjLjMgMS43IDEuNyAzLjEgMy4zIDMuMSAxLjcgMCAzLjEtMS40IDMuMS0zLjFsNi45LTY1LjgtNi45LTY4LjFjMC0xLjktMS40LTMuMy0zLjEtMy4zem0yNS4zLTIuMmMtMS45IDAtMy42IDEuNC0zLjYgMy42bC01LjggNzAgNS44IDY3LjhjMCAyLjIgMS43IDMuNiAzLjYgMy42czMuNi0xLjQgMy45LTMuNmw2LjQtNjcuOC02LjQtNzBjLS4zLTIuMi0yLTMuNi0zLjktMy42em0yNDEuNC0xMTAuOWMtMS4xLS44LTIuOC0xLjQtNC4yLTEuNC0yLjIgMC00LjIuOC01LjYgMS45LTEuOSAxLjctMy4xIDQuMi0zLjMgNi43di44bC0zLjMgMTc2LjcgMS43IDMyLjUgMS43IDMxLjdjLjMgNC43IDQuMiA4LjYgOC45IDguNnM4LjYtMy45IDguNi04LjZsMy45LTY0LjItMy45LTE3Ny41Yy0uNC0zLTItNS44LTQuNS03LjJ6bS0yNi43IDE1LjNjLTEuNC0uOC0yLjgtMS40LTQuNC0xLjRzLTMuMS42LTQuNCAxLjRjLTIuMiAxLjQtMy42IDMuOS0zLjYgNi43bC0uMyAxLjctMi44IDE2MC44czAgLjMgMy4xIDY1LjZ2LjNjMCAxLjcuNiAzLjMgMS43IDQuNyAxLjcgMS45IDMuOSAzLjEgNi40IDMuMSAyLjIgMCA0LjItMS4xIDUuNi0yLjUgMS43LTEuNCAyLjUtMy4zIDIuNS01LjZsLjMtNi43IDMuMS01OC42LTMuMy0xNjIuOGMtLjMtMi44LTEuNy01LjMtMy45LTYuN3ptLTExMS40IDIyLjVjLTMuMSAwLTUuOCAyLjgtNS44IDYuMWwtNC40IDE0MC42IDQuNCA2Ny4yYy4zIDMuMyAyLjggNS44IDUuOCA1LjggMy4zIDAgNS44LTIuNSA2LjEtNS44bDUtNjcuMi01LTE0MC42Yy0uMi0zLjMtMi43LTYuMS02LjEtNi4xem0zNzYuNyA2Mi44Yy0xMC44IDAtMjEuMSAyLjItMzAuNiA2LjEtNi40LTcwLjgtNjUuOC0xMjYuNC0xMzguMy0xMjYuNC0xNy44IDAtMzUgMy4zLTUwLjMgOS40LTYuMSAyLjItNy44IDQuNC03LjggOS4ydjI0OS43YzAgNSAzLjkgOC42IDguNiA5LjJoMjE4LjNjNDMuMyAwIDc4LjYtMzUgNzguNi03OC4zLjEtNDMuNi0zNS4yLTc4LjktNzguNS03OC45em0tMjk2LjctNjAuM2MtNC4yIDAtNy41IDMuMy03LjggNy44bC0zLjMgMTM2LjcgMy4zIDY1LjZjLjMgNC4yIDMuNiA3LjUgNy44IDcuNSA0LjIgMCA3LjUtMy4zIDcuNS03LjVsMy45LTY1LjYtMy45LTEzNi43Yy0uMy00LjUtMy4zLTcuOC03LjUtNy44em0tNTMuNi03LjhjLTMuMyAwLTYuNCAzLjEtNi40IDYuN2wtMy45IDE0NS4zIDMuOSA2Ni45Yy4zIDMuNiAzLjEgNi40IDYuNCA2LjQgMy42IDAgNi40LTIuOCA2LjctNi40bDQuNC02Ni45LTQuNC0xNDUuM2MtLjMtMy42LTMuMS02LjctNi43LTYuN3ptMjYuNyAzLjRjLTMuOSAwLTYuOSAzLjEtNi45IDYuOUwyMjcgMzIxLjNsMy45IDY2LjRjLjMgMy45IDMuMSA2LjkgNi45IDYuOXM2LjktMy4xIDYuOS02LjlsNC4yLTY2LjQtNC4yLTE0MS43YzAtMy45LTMtNi45LTYuOS02Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvdXJjZXRyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI3LjIgMjAzYzAtMTEyLjEtOTAuOS0yMDMtMjAzLTIwM0MxMTIuMS0uMiAyMS4yIDkwLjYgMjEgMjAyLjZBMjAyLjg2IDIwMi44NiAwIDAgMCAxNjEuNSAzOTZ2MTAxLjdhMTQuMyAxNC4zIDAgMCAwIDE0LjMgMTQuM2g5Ni40YTE0LjMgMTQuMyAwIDAgMCAxNC4zLTE0LjNWMzk2LjFBMjAzLjE4IDIwMy4xOCAwIDAgMCA0MjcuMiAyMDN6bS0yNzEuNiAwYzAtOTAuOCAxMzcuMy05MC44IDEzNy4zIDAtLjEgODkuOS0xMzcuMyA5MS0xMzcuMyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGFjZUF3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMjU2SDEyOFY1MTJIMFYzNTJIMzJWMzIwSDY0VjI4OEg5NlYyNTZ6TTUxMiAzNTJWNTEySDM4NFYyNTZINDE2VjI4OEg0NDhWMzIwSDQ4MFYzNTJINTEyek0zMjAgNjRIMzUyVjQ0OEgzMjBWNDE2SDE5MlY0NDhIMTYwVjY0SDE5MlYzMkgyMjRWMEgyODhWMzJIMzIwVjY0ek0yODggMTI4SDIyNFYxOTJIMjg4VjEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BlYWthcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzOTEuNzhDLTE1LjQxIDMwMy41OS04IDE2Ny40MiA4MC42NCA4Ny42NHMyMjQuOC03MyAzMDQuMjEgMTUuMjQgNzIgMjI0LjM2LTE2LjY0IDMwNC4xNGMtMTguNzQgMTYuODcgNjQgNDMuMDkgNDIgNTIuMjYtODIuMDYgMzQuMjEtMjUzLjkxIDM1LTM0Ni4yMy02Ny41em0yMTMuMzEtMjExLjZsMzguNS00MC44NmMtOS42MS04Ljg5LTMyLTI2LjgzLTc2LjE3LTI3LjYtNTIuMzMtLjkxLTk1Ljg2IDI4LjMtOTYuNzcgODAtLjIgMTEuMzMuMjkgMzYuNzIgMjkuNDIgNTQuODMgMzQuNDYgMjEuNDIgODYuNTIgMjEuNTEgODYgNTIuMjYtLjM3IDIxLjI4LTI2LjQyIDI1LjgxLTM4LjU5IDI1LjYtMy0uMDUtMzAuMjMtLjQ2LTQ3LjYxLTI0LjYybC00MCA0Mi42MWMyOC4xNiAyNyA1OSAzMi42MiA4My40OSAzMy4wNSAxMC4yMy4xOCA5Ni40Mi4zMyA5Ny44NC04MSAuMjgtMTUuODEtMi4wNy0zOS43Mi0yOC44Ni01Ni41OS0zNC4zNi0yMS42NC04NS0xOS40NS04NC40My00OS43NS40MS0yMy4yNSAzMS0yNS4zNyAzNy41My0yNS4yNi40MyAwIDI2LjYyLjI2IDM5LjYyIDE3LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGVha2VyRGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTMuODYgMjk2SDEwMGExMDAgMTAwIDAgMCAxIDAtMjAwaDEzMi44NGE0MCA0MCAwIDAgMSAwIDgwSDk4Yy0yNi40NyAwLTI2LjQ1IDQwIDAgNDBoMTEzLjgyYTEwMCAxMDAgMCAwIDEgMCAyMDBINDBhNDAgNDAgMCAwIDEgMC04MGgxNzMuODZjMjYuNDggMCAyNi40Ni00MCAwLTQwek0yOTggNDE2YTEyMC4yMSAxMjAuMjEgMCAwIDAgNTEuMTEtODBoNjQuNTVhMTkuODMgMTkuODMgMCAwIDAgMTkuNjYtMjBWMTk2YTE5LjgzIDE5LjgzIDAgMCAwLTE5LjY2LTIwSDI5Ni40MmE2MC43NyA2MC43NyAwIDAgMCAwLTgwaDEzNi45M2M0My40NCAwIDc4LjY1IDM1LjgyIDc4LjY1IDgwdjE2MGMwIDQ0LjE4LTM1LjIxIDgwLTc4LjY1IDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcG90aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4xIDggMCAxMTkuMSAwIDI1NnMxMTEuMSAyNDggMjQ4IDI0OCAyNDgtMTExLjEgMjQ4LTI0OFMzODQuOSA4IDI0OCA4em0xMDAuNyAzNjQuOWMtNC4yIDAtNi44LTEuMy0xMC43LTMuNi02Mi40LTM3LjYtMTM1LTM5LjItMjA2LjctMjQuNS0zLjkgMS05IDIuNi0xMS45IDIuNi05LjcgMC0xNS44LTcuNy0xNS44LTE1LjggMC0xMC4zIDYuMS0xNS4yIDEzLjYtMTYuOCA4MS45LTE4LjEgMTY1LjYtMTYuNSAyMzcgMjYuMiA2LjEgMy45IDkuNyA3LjQgOS43IDE2LjVzLTcuMSAxNS40LTE1LjIgMTUuNHptMjYuOS02NS42Yy01LjIgMC04LjctMi4zLTEyLjMtNC4yLTYyLjUtMzctMTU1LjctNTEuOS0yMzguNi0yOS40LTQuOCAxLjMtNy40IDIuNi0xMS45IDIuNi0xMC43IDAtMTkuNC04LjctMTkuNC0xOS40czUuMi0xNy44IDE1LjUtMjAuN2MyNy44LTcuOCA1Ni4yLTEzLjYgOTcuOC0xMy42IDY0LjkgMCAxMjcuNiAxNi4xIDE3NyA0NS41IDguMSA0LjggMTEuMyAxMSAxMS4zIDE5LjctLjEgMTAuOC04LjUgMTkuNS0xOS40IDE5LjV6bTMxLTc2LjJjLTUuMiAwLTguNC0xLjMtMTIuOS0zLjktNzEuMi00Mi41LTE5OC41LTUyLjctMjgwLjktMjkuNy0zLjYgMS04LjEgMi42LTEyLjkgMi42LTEzLjIgMC0yMy4zLTEwLjMtMjMuMy0yMy42IDAtMTMuNiA4LjQtMjEuMyAxNy40LTIzLjkgMzUuMi0xMC4zIDc0LjYtMTUuMiAxMTcuNS0xNS4yIDczIDAgMTQ5LjUgMTUuMiAyMDUuNCA0Ny44IDcuOCA0LjUgMTIuOSAxMC43IDEyLjkgMjIuNiAwIDEzLjYtMTEgMjMuMy0yMy4yIDIzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUJlaGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU1LjMgMzE4LjRjMTcuMiAwIDMxLjItNi4xIDMxLjItMjUuNGMwLTE5LjctMTEuNy0yNy40LTMwLjMtMjcuNWgtNDZ2NTIuOWg0NS4xem0tNS40LTEyOS42SDExMC4zdjQ0LjhIMTUzYzE1LjEgMCAyNS44LTYuNiAyNS44LTIyLjljMC0xNy43LTEzLjctMjEuOS0yOC45LTIxLjl6bTEyOS41IDc0LjhoNjIuMmMtMS43LTE4LjUtMTEuMy0yOS43LTMwLjUtMjkuN2MtMTguMyAwLTMwLjUgMTEuNC0zMS43IDI5Ljd6TTM4NCAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTM0OS41IDE4NUgyNzEuN1YxNjYuMWg3Ny44VjE4NXpNMTkzLjcgMjQzLjdjMjMuNiA2LjcgMzUgMjcuNSAzNSA1MS42YzAgMzktMzIuNyA1NS43LTY3LjYgNTUuOUg2OHYtMTkyaDkwLjVjMzIuOSAwIDYxLjQgOS4zIDYxLjQgNDcuNWMwIDE5LjMtOSAyOC44LTI2LjIgMzd6bTExOC43LTM4LjZjNDMuNSAwIDY3LjYgMzQuMyA2Ny42IDc1LjRjMCAxLjYtLjEgMy4zLS4yIDVjMCAuOC0uMSAxLjUtLjEgMi4ySDI3OS41YzAgMjIuMiAxMS43IDM1LjMgMzQuMSAzNS4zYzExLjYgMCAyNi41LTYuMiAzMC4yLTE4LjFoMzMuN2MtMTAuNCAzMS45LTMxLjkgNDYuOC02NS4xIDQ2LjhjLTQzLjggMC03MS4xLTI5LjctNzEuMS03M2MwLTQxLjggMjguNy03My42IDcxLjEtNzMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlRHJpYmJibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY1LjkgMTMyLjVjLTM4LjMgMTgtNjYuOCA1My4zLTc1LjcgOTUuN2M2LjEgLjEgNjIuNCAuMyAxMjYuNC0xNi43Yy0yMi43LTQwLjItNDcuMS03NC4xLTUwLjctNzl6bTI2LjEtOS4xYzMuOCA1LjEgMjguNiAzOC45IDUxIDgwYzQ4LjYtMTguMyA2OS4xLTQ1LjkgNzEuNi00OS40QzI4MSAxMjQuMiAyMzUuMyAxMTIuOSAxOTIgMTIzLjR6TTI3Ny40IDM4MmMtMi0xMi0xMC01My44LTI5LjItMTAzLjZjLTU1LjEgMTguOC05My44IDU2LjQtMTA4LjEgODUuNmM0MC41IDMxLjYgOTMuMyAzNi43IDEzNy4zIDE4ek0yMjcuOCAyMzIuNkMxNTkuNiAyNTMgOTMuNCAyNTIuMiA4Ny40IDI1MmMwIC43IDAgMS40IDAgMi4xczAgMS40IDAgMi4xYzAgMzUuMSAxMy4zIDY3LjEgMzUuMSA5MS40YzIyLjItMzcuOSA2Ny4xLTc3LjkgMTE2LjUtOTEuOGMtMy40LTcuOC03LjItMTUuNS0xMS4xLTIzLjJ6bTcyLjUgMTM2LjljMzAuNy0yMC43IDUyLjUtNTMuNiA1OC42LTkxLjZjLTQuNi0xLjUtNDIuMy0xMi43LTg1LjEtNS44YzE3LjkgNDkuMSAyNS4xIDg5LjEgMjYuNSA5Ny40em0tMzQuOC0xMTljNDUuNS01LjcgOTAuNyAzLjQgOTUuMiA0LjRjLS4zLTMyLjMtMTEuOC02MS45LTMwLjktODUuMWMtMi45IDMuOS0yNS44IDMzLjItNzYuMyA1My45YzQuOCA5LjggOC4zIDE3LjggMTIgMjYuOHpNMzg0IDMySDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NHpNMjI0IDQxNmExNjAgMTYwIDAgMSAxIDAtMzIwIDE2MCAxNjAgMCAxIDEgMCAzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZhY2Vib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk4LjJWMzM0LjJIMTA5LjRWMjU2aDUyLjhWMjIyLjNjMC04Ny4xIDM5LjQtMTI3LjUgMTI1LTEyNy41YzE2LjIgMCA0NC4yIDMuMiA1NS43IDYuNFYxNzJjLTYtLjYtMTYuNS0xLTI5LjYtMWMtNDIgMC01OC4yIDE1LjktNTguMiA1Ny4yVjI1Nmg4My42bC0xNC40IDc4LjJIMjU1VjQ4MEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZvbnRBd2Vzb21lU3Ryb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0QzQ2LjMgNjQgMzIgNzguMyAzMiA5NmwwIDMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMkw2NCA2NHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTE1NCA1OGMwIDkuMy00LjggMTcuNC0xMi4xIDIybDE4OC45IDBjNy4zIDAgMTMuMiA1LjkgMTMuMiAxMy4yYzAgMS44LS40IDMuNy0xLjEgNS40TDMxMiAyNjRsMzAuOSA2OS40Yy44IDEuNyAxLjEgMy41IDEuMSA1LjRjMCA3LjMtNS45IDEzLjItMTMuMiAxMy4yTDE0NCAzNTJsMCAzMi0zMiAwIDAtMzIgMC0xNzYgMC0xLjVjLTYuMS00LjgtMTAtMTIuMi0xMC0yMC41YzAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZvbnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6bTkwIDEyMmMwIDkuMy00LjggMTcuNC0xMi4xIDIybDE4OC45IDBjNy4zIDAgMTMuMiA1LjkgMTMuMiAxMy4yYzAgMS44LS40IDMuNy0xLjEgNS40TDMxMiAyNjRsMzAuOSA2OS40Yy43IDEuNyAxLjEgMy41IDEuMSA1LjRjMCA3LjMtNS45IDEzLjItMTMuMiAxMy4yTDE0NCAzNTJsMCAzMi0zMiAwIDAtMzIgMC0xNzYgMC0xLjVjLTYuMS00LjgtMTAtMTIuMi0xMC0yMC41YzAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUdpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAuOCAzMzUuNWMtNS45LS40LTEyLjYtLjgtMjAuMi0xLjNjLTMuMyA0LjEtNi42IDguNC02LjYgMTMuNWMwIDE4LjUgNjUuNSAxOC41IDY1LjUtMS41YzAtOC4zLTcuNC04LjctMzguOC0xMC43em03LjgtMTE3LjljLTMyLjMgMC0zMy43IDQ0LjUtLjcgNDQuNWMzMi41IDAgMzEuNy00NC41IC43LTQ0LjV6TTM4NCAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTI0My45IDE3Mi4yYy0xNC41IDAtMjIuOS04LjQtMjIuOS0yMi45YzAtMTQuNSA4LjQtMjIuMyAyMi45LTIyLjNjMTQuNyAwIDIzLjEgNy44IDIzLjEgMjIuM3MtOC40IDIyLjktMjMuMSAyMi45ek0xNDkuNiAxOTVoNDkuNWwwIDIxLjYtMjMuNCAxLjhjNC42IDUuOCA5LjQgMTQgOS40IDI1LjdjMCA0OC43LTU3LjIgNDcuMi03NC4yIDQyLjRsLTguNCAxMy40YzUgLjMgOS44IC42IDE0LjMgLjhjNTYuMyAzLjIgODAuNSA0LjYgODAuNSAzOC41YzAgMjkuMi0yNS43IDQ1LjctNjkuOSA0NS43Yy00NiAwLTYzLjUtMTEuNi02My41LTMxLjdjMC0xMS40IDUuMS0xNy41IDE0LTI1LjljLTguNC0zLjUtMTEuMi05LjktMTEuMi0xNi44YzAtOS42IDcuNC0xNi4zIDIzLTMwLjZsLjItLjJjLTEyLjQtNi4xLTIxLjgtMTkuMy0yMS44LTM4LjFjMC01MS42IDU2LjYtNTMuMyA4MS42LTQ2Ljh6TTI3MC41IDMwMy4xbDEzIDEuOCAwIDIwLjFIMjExLjFWMzA0LjljMi43LS40IDUtLjcgNi45LS45YzkuOS0xLjIgMTAuMS0xLjMgMTAuMS02VjIyMy4zYzAtNC40LS45LTQuNy0xMC4xLTcuOGMtMS45LS43LTQuMi0xLjQtNi45LTIuNGwyLjgtMjAuNmg1Mi42VjI5OGMwIDQuMSAuMiA0LjYgNC4xIDUuMXptMTA2LjYtMTAuNEwzODQgMzE1Yy0xMC45IDUuNC0yNi45IDEwLjItNDEuNCAxMC4yYy0zMC4yIDAtNDEuNy0xMi4yLTQxLjctNDAuOVYyMTcuN2MwLS44IDAtMS40LS4yLTEuOGMtLjgtMS4yLTQuMi0uNy0xOS42LS43VjE5Mi42YzIyLjMtMi41IDMxLjItMTMuNyAzNC00MS40aDI0LjJjMCAzMy4zLS42IDM4IC43IDM4LjZjLjMgLjEgLjcgMCAxLjMgMGgzNS44djI1LjRIMzM5LjN2NjAuN2MwIC4yIDAgLjUgMCAuOWMtLjIgNi4zLS45IDMwLjQgMzcuOSAxNS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVHaXRodWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NnpNMjY1LjggNDA3LjdjMC0xLjggMC02IC4xLTExLjZjLjEtMTEuNCAuMS0yOC44IC4xLTQzLjdjMC0xNS42LTUuMi0yNS41LTExLjMtMzAuN2MzNy00LjEgNzYtOS4yIDc2LTczLjFjMC0xOC4yLTYuNS0yNy4zLTE3LjEtMzljMS43LTQuMyA3LjQtMjItMS43LTQ1Yy0xMy45LTQuMy00NS43IDE3LjktNDUuNyAxNy45Yy0xMy4yLTMuNy0yNy41LTUuNi00MS42LTUuNnMtMjguNCAxLjktNDEuNiA1LjZjMCAwLTMxLjgtMjIuMi00NS43LTE3LjljLTkuMSAyMi45LTMuNSA0MC42LTEuNyA0NWMtMTAuNiAxMS43LTE1LjYgMjAuOC0xNS42IDM5YzAgNjMuNiAzNy4zIDY5IDc0LjMgNzMuMWMtNC44IDQuMy05LjEgMTEuNy0xMC42IDIyLjNjLTkuNSA0LjMtMzMuOCAxMS43LTQ4LjMtMTMuOWMtOS4xLTE1LjgtMjUuNS0xNy4xLTI1LjUtMTcuMWMtMTYuMi0uMi0xLjEgMTAuMi0xLjEgMTAuMmMxMC44IDUgMTguNCAyNC4yIDE4LjQgMjQuMmM5LjcgMjkuNyA1Ni4xIDE5LjcgNTYuMSAxOS43YzAgOSAuMSAyMS43IC4xIDMwLjZjMCA0LjggLjEgOC42IC4xIDEwYzAgNC4zLTMgOS41LTExLjUgOEMxMDYgMzkzLjYgNTkuOCAzMzAuOCA1OS44IDI1Ny40YzAtOTEuOCA3MC4yLTE2MS41IDE2Mi0xNjEuNXMxNjYuMiA2OS43IDE2Ni4yIDE2MS41Yy4xIDczLjQtNDQuNyAxMzYuMy0xMTAuNyAxNTguM2MtOC40IDEuNS0xMS41LTMuNy0xMS41LTh6bS05MC41LTU0LjhjLS4yLTEuNSAxLjEtMi44IDMtMy4yYzEuOS0uMiAzLjcgLjYgMy45IDEuOWMuMyAxLjMtMSAyLjYtMyAzYy0xLjkgLjQtMy43LS40LTMuOS0xLjd6bS05LjEgMy4yYy0yLjIgLjItMy43LS45LTMuNy0yLjRjMC0xLjMgMS41LTIuNCAzLjUtMi40YzEuOS0uMiAzLjcgLjkgMy43IDIuNGMwIDEuMy0xLjUgMi40LTMuNSAyLjR6bS0xNC4zLTIuMmMtMS45LS40LTMuMi0xLjktMi44LTMuMnMyLjQtMS45IDQuMS0xLjVjMiAuNiAzLjMgMi4xIDIuOCAzLjRjLS40IDEuMy0yLjQgMS45LTQuMSAxLjN6bS0xMi41LTcuM2MtMS41LTEuMy0xLjktMy4yLS45LTQuMWMuOS0xLjEgMi44LS45IDQuMyAuNmMxLjMgMS4zIDEuOCAzLjMgLjkgNC4xYy0uOSAxLjEtMi44IC45LTQuMy0uNnptLTguNS0xMGMtMS4xLTEuNS0xLjEtMy4yIDAtMy45YzEuMS0uOSAyLjgtLjIgMy43IDEuM2MxLjEgMS41IDEuMSAzLjMgMCA0LjFjLS45IC42LTIuNiAwLTMuNy0xLjV6bS02LjMtOC44Yy0xLjEtMS4zLTEuMy0yLjgtLjQtMy41Yy45LS45IDIuNC0uNCAzLjUgLjZjMS4xIDEuMyAxLjMgMi44IC40IDMuNWMtLjkgLjktMi40IC40LTMuNS0uNnptLTYtNi40Yy0xLjMtLjYtMS45LTEuNy0xLjUtMi42Yy40LS42IDEuNS0uOSAyLjgtLjRjMS4zIC43IDEuOSAxLjggMS41IDIuNmMtLjQgLjktMS43IDEuMS0yLjggLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUdpdGxhYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NnptMzM3LjUgMTIuNWw0NC42IDExNi40IC40IDEuMmM1LjYgMTYuOCA3LjIgMzUuMiAyLjMgNTIuNWMtNSAxNy4yLTE1LjQgMzIuNC0yOS44IDQzLjNsLS4yIC4xLTY4LjQgNTEuMi01NC4xIDQwLjljLS41IC4yLTEuMSAuNS0xLjcgLjhjLTIgMS00LjQgMi02LjcgMmMtMyAwLTYuOC0xLjgtOC4zLTIuOGwtNTQuMi00MC45TDkzLjUgMzIyLjNsLS40LS4zLS4yLS4xYy0xNC4zLTEwLjgtMjQuOC0yNi0yOS43LTQzLjNzLTQuMi0zNS43IDIuMi01Mi41bC41LTEuMiA0NC43LTExNi40Yy45LTIuMyAyLjUtNC4zIDQuNS01LjZjMS42LTEgMy40LTEuNiA1LjItMS44YzEuMy0uNyAyLjEtLjQgMy40IC4xYy42IC4yIDEuMiAuNSAyIC43YzEgLjQgMS42IC45IDIuNCAxLjVjLjYgLjQgMS4yIDEgMi4xIDEuNWMxLjIgMS40IDIuMiAzIDIuNyA0LjhsMjkuMiA5Mi4ySDI4NWwzMC4yLTkyLjJjLjUtMS44IDEuNC0zLjQgMi42LTQuOHMyLjgtMi40IDQuNS0zLjFjMS43LS42IDMuNi0uOSA1LjQtLjdzMy42IC44IDUuMiAxLjhjMiAxLjMgMy43IDMuMyA0LjYgNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVHb29nbGVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTY0IDI1NmMwLTU1LjMgNDQuNy0xMDAgMTAwLTEwMGMyNyAwIDQ5LjUgOS44IDY3IDI2LjJsLTI3LjEgMjYuMWMtNy40LTcuMS0yMC4zLTE1LjQtMzkuOC0xNS40Yy0zNC4xIDAtNjEuOSAyOC4yLTYxLjkgNjMuMmMwIDM0LjkgMjcuOCA2My4yIDYxLjkgNjMuMmMzOS42IDAgNTQuNC0yOC41IDU2LjgtNDMuMUgxNjRWMjQxLjhoOTQuNGMxIDUgMS42IDEwLjEgMS42IDE2LjZjMCA1Ny4xLTM4LjMgOTcuNi05NiA5Ny42Yy01NS4zIDAtMTAwLTQ0LjctMTAwLTEwMHptMjkxIDE4LjJ2MjlIMzI1Ljh2LTI5aC0yOVYyNDVoMjlWMjE2SDM1NXYyOWgyOXYyOS4ySDM1NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlSGFja2VyTmV3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0yMSAyMjkuMmMwIDAgLjEtLjEgLjEtLjJzLjEtLjIgLjItLjJjMCAuMSAwIC4zLS4xIC40SDIxek0yMzkuMiAzODRIMjA3LjhWMjgxLjNMMTI4IDEyOGgzNy4zYzQxLjUgNzcuNyA0OC4xIDk1LjggNTQuMSAxMTJjMS42IDQuMyAzLjEgOC41IDUuMiAxMy42YzMuMi03IDUuMS0xMS45IDcuMS0xNy4zYzUuOS0xNS4zIDEyLjgtMzMuMiA1My41LTEwOC4zSDMyMEwyMzkuMiAyODMuMVYzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUluc3RhZ3JhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTQuNCAyMTEuN2E1My4zIDUzLjMgMCAxIDAgNTkuMyA4OC43IDUzLjMgNTMuMyAwIDEgMCAtNTkuMy04OC43em0xNDIuMy02OC40Yy01LjItNS4yLTExLjUtOS4zLTE4LjQtMTJjLTE4LjEtNy4xLTU3LjYtNi44LTgzLjEtNi41Yy00LjEgMC03LjkgLjEtMTEuMiAuMWMtMy4zIDAtNy4yIDAtMTEuNC0uMWMtMjUuNS0uMy02NC44LS43LTgyLjkgNi41Yy02LjkgMi43LTEzLjEgNi44LTE4LjQgMTJzLTkuMyAxMS41LTEyIDE4LjRjLTcuMSAxOC4xLTYuNyA1Ny43LTYuNSA4My4yYzAgNC4xIC4xIDcuOSAuMSAxMS4xczAgNy0uMSAxMS4xYy0uMiAyNS41LS42IDY1LjEgNi41IDgzLjJjMi43IDYuOSA2LjggMTMuMSAxMiAxOC40czExLjUgOS4zIDE4LjQgMTJjMTguMSA3LjEgNTcuNiA2LjggODMuMSA2LjVjNC4xIDAgNy45LS4xIDExLjItLjFjMy4zIDAgNy4yIDAgMTEuNCAuMWMyNS41IC4zIDY0LjggLjcgODIuOS02LjVjNi45LTIuNyAxMy4xLTYuOCAxOC40LTEyczkuMy0xMS41IDEyLTE4LjRjNy4yLTE4IDYuOC01Ny40IDYuNS04M2MwLTQuMi0uMS04LjEtLjEtMTEuNHMwLTcuMSAuMS0xMS40Yy4zLTI1LjUgLjctNjQuOS02LjUtODNsMCAwYy0yLjctNi45LTYuOC0xMy4xLTEyLTE4LjR6bS02Ny4xIDQ0LjVBODIgODIgMCAxIDEgMTc4LjQgMzI0LjJhODIgODIgMCAxIDEgOTEuMS0xMzYuNHptMjkuMi0xLjNjLTMuMS0yLjEtNS42LTUuMS03LjEtOC42cy0xLjgtNy4zLTEuMS0xMS4xczIuNi03LjEgNS4yLTkuOHM2LjEtNC41IDkuOC01LjJzNy42LS40IDExLjEgMS4xczYuNSAzLjkgOC42IDdzMy4yIDYuOCAzLjIgMTAuNmMwIDIuNS0uNSA1LTEuNCA3LjNzLTIuNCA0LjQtNC4xIDYuMnMtMy45IDMuMi02LjIgNC4ycy00LjggMS41LTcuMyAxLjVsMCAwYy0zLjggMC03LjUtMS4xLTEwLjYtMy4yek00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0zNTcgMzg5Yy0xOC43IDE4LjctNDEuNCAyNC42LTY3IDI1LjljLTI2LjQgMS41LTEwNS42IDEuNS0xMzIgMGMtMjUuNi0xLjMtNDguMy03LjItNjctMjUuOXMtMjQuNi00MS40LTI1LjgtNjdjLTEuNS0yNi40LTEuNS0xMDUuNiAwLTEzMmMxLjMtMjUuNiA3LjEtNDguMyAyNS44LTY3czQxLjUtMjQuNiA2Ny0yNS44YzI2LjQtMS41IDEwNS42LTEuNSAxMzIgMGMyNS42IDEuMyA0OC4zIDcuMSA2NyAyNS44czI0LjYgNDEuNCAyNS44IDY3YzEuNSAyNi4zIDEuNSAxMDUuNCAwIDEzMS45Yy0xLjMgMjUuNi03LjEgNDguMy0yNS44IDY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVKcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0xODAuOSA0NDQuOWMtMzMuNyAwLTUzLjItMTcuNC02My4yLTM4LjVMMTUyIDM4NS43YzYuNiAxMS43IDEyLjYgMjEuNiAyNy4xIDIxLjZjMTMuOCAwIDIyLjYtNS40IDIyLjYtMjYuNVYyMzcuN2g0Mi4xVjM4MS40YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41em04NS44LTQzTDMwMSAzODIuMWM5IDE0LjcgMjAuOCAyNS42IDQxLjUgMjUuNmMxNy40IDAgMjguNi04LjcgMjguNi0yMC44YzAtMTQuNC0xMS40LTE5LjUtMzAuNy0yOGwtMTAuNS00LjVjLTMwLjQtMTIuOS01MC41LTI5LjItNTAuNS02My41YzAtMzEuNiAyNC4xLTU1LjYgNjEuNi01NS42YzI2LjggMCA0NiA5LjMgNTkuOCAzMy43TDM2OCAyOTBjLTcuMi0xMi45LTE1LTE4LTI3LjEtMThjLTEyLjMgMC0yMC4xIDcuOC0yMC4xIDE4YzAgMTIuNiA3LjggMTcuNyAyNS45IDI1LjZsMTAuNSA0LjVjMzUuOCAxNS4zIDU1LjkgMzEgNTUuOSA2Ni4yYzAgMzcuOC0yOS44IDU4LjYtNjkuNyA1OC42Yy0zOS4xIDAtNjQuNC0xOC42LTc2LjctNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUxhc3RmbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0yMTAuNyAyODAuOGMtMS44LTUuNS0zLjQtMTAuOC01LTE1LjljLTEyLjktNDEuOS0yMS02OC40LTU4LTY4LjRjLTIyLjQgMC00NS4xIDE2LjEtNDUuMSA2MS4yYzAgMzUuMiAxOCA1Ny4yIDQzLjMgNTcuMmMyOC42IDAgNDcuNi0yMS4zIDQ3LjYtMjEuM2wxMS43IDMxLjlzLTE5LjggMTkuNC02MS4yIDE5LjRjLTUxLjMgMC03OS45LTMwLjEtNzkuOS04NS44YzAtNTcuOSAyOC42LTkyIDgyLjUtOTJjNjcuOSAwIDc5LjMgMzUuMyA5Ni40IDg4LjRjMS40IDQuNCAyLjkgOC45IDQuNCAxMy41YzguOCAyNi44IDI0LjIgNDYuMiA2MS4yIDQ2LjJjMjQuOSAwIDM4LjEtNS41IDM4LjEtMTkuMWMwLTE3LjUtMTYuOS0yMS4yLTQwLTI2LjRjLTMuMi0uNy02LjUtMS40LTkuOS0yLjJjLTMwLjQtNy4zLTQyLjUtMjMuMS00Mi41LTQ4YzAtNDAgMzIuMy01Mi40IDY1LjItNTIuNGMzNy40IDAgNjAuMSAxMy42IDYzIDQ2LjZsLTM2LjcgNC40Yy0xLjUtMTUuOC0xMS0yMi40LTI4LjYtMjIuNGMtMTYuMSAwLTI2IDcuMy0yNiAxOS44YzAgMTEgNC44IDE3LjYgMjAuOSAyMS4zYzIuMiAuNSA0LjUgMSA2LjcgMS40YzMxLjEgNi41IDY1LjEgMTMuNyA2NS4xIDU2LjFjLjEgMzYuNy0zMC43IDUwLjYtNzYuMSA1MC42Yy02My40IDAtODUuNC0yOC42LTk3LjEtNjQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlTGV0dGVyYm94ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzODR6TTEwNS4xIDE4N0M2Ni40IDE4NyAzNSAyMTguMyAzNSAyNTdzMzEuNCA3MCA3MC4xIDcwYzI0LjggMCA0Ni41LTEyLjggNTktMzIuMmwuNS0uNy0uNC0uNmMtNi41LTEwLjYtMTAuMi0yMy4xLTEwLjItMzYuNWMwLTEzLjYgMy45LTI2LjMgMTAuNi0zNy4xYy0xMi40LTE5LjgtMzQuNC0zMi45LTU5LjUtMzIuOXpNMjI0IDE4N2MtMjQuOCAwLTQ2LjUgMTIuOC01OSAzMi4ybC0uNSAuNyAuNCAuNmM2LjUgMTAuNiAxMC4yIDIzLjEgMTAuMiAzNi41YzAgMTMuNi0zLjkgMjYuMy0xMC42IDM3LjFDMTc2LjkgMzEzLjggMTk4LjkgMzI3IDIyNCAzMjdjMjQuOCAwIDQ2LjUtMTIuOCA1OS0zMi4ybC41LS43LS40LS42Yy02LjUtMTAuNi0xMC4yLTIzLjEtMTAuMi0zNi41YzAtMTMuNiAzLjktMjYuMyAxMC42LTM3LjFDMjcxLjEgMjAwLjIgMjQ5LjEgMTg3IDIyNCAxODd6bTExOC45IDBjLTI0LjggMC00Ni41IDEyLjgtNTkgMzIuMmwtLjUgLjcgLjQgLjZjNi41IDEwLjYgMTAuMiAyMy4xIDEwLjIgMzYuNWMwIDEzLjYtMy45IDI2LjMtMTAuNiAzNy4xYzEyLjQgMTkuOCAzNC40IDMyLjkgNTkuNSAzMi45YzM4LjcgMCA3MC4xLTMxLjMgNzAuMS03MHMtMzEuNC03MC03MC4xLTcwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVPZG5va2xhc3NuaWtpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzcuMWEzOS45IDM5LjkgMCAxIDAgMCA3OS43IDM5LjkgMzkuOSAwIDEgMCAwLTc5Ljd6TTM4NCAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTIyNCA5NS45QTgxIDgxIDAgMSAxIDIyNCAyNThhODEgODEgMCAxIDEgMC0xNjIuMXptNTkuMyAxNjguM2MxNi44LTEzLjIgMjkuNS01LjUgMzQuMSAzLjZjNy44IDE2LTEuMSAyMy43LTIxLjUgMzdjLTE3LjEgMTAuOS00MC43IDE1LjItNTYuMiAxNi44bDEzIDEyLjkgNDcuNyA0Ny43YzE3LjQgMTcuOS0xMSA0NS44LTI4LjYgMjguNmMtMTItMTIuMi0yOS41LTI5LjctNDcuNy00Ny45bDAgMC00Ny43IDQ3LjljLTE3LjcgMTcuMi00Ni0xMS0yOC40LTI4LjZjMy43LTMuNyA3LjktNy45IDEyLjUtMTIuNWMxMC40LTEwLjQgMjIuNi0yMi43IDM1LjItMzUuMmwxMi45LTEyLjljLTE1LjQtMS42LTM5LjMtNS43LTU2LjYtMTYuOGMtMjAuMy0xMy4zLTI5LjMtMjAuOS0yMS40LTM3YzQuNi05LjEgMTcuMy0xNi44IDM0LjEtMy42YzAgMCAyMi43IDE4IDU5LjMgMThzNTkuMy0xOCA1OS4zLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQaWVkUGlwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDE5TDAgNDc5LjJsLjgtMzI4Qy44IDg1LjMgNTQgMzIgMTIwIDMyaDMyNy4yYy05MyAyOC45LTE4OS45IDk0LjItMjUzLjkgMTY4LjZDMTIyLjcgMjgyIDgyLjYgMzM4IDMyIDQxOU00NDggMzJTMzA1LjIgOTguOCAyNjEuNiAxOTkuMWMtMjMuMiA1My42LTI4LjkgMTE4LjEtNzEgMTU4LjYtMjguOSAyNy44LTY5LjggMzguMi0xMDUuMyA1Ni4zLTIzLjIgMTItNjYuNCA0MC41LTg0LjkgNjZoMzI4LjRjNjYgMCAxMTkuMy01My4zIDExOS4zLTExOS4yLS4xIDAtLjEtMzI4LjgtLjEtMzI4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBpbnRlcmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoNzIuNmwtMi4yLS44Yy01LjQtNDguMS0zLjEtNTcuNSAxNS43LTEzNC43YzMuOS0xNiA4LjUtMzUgMTMuOS01Ny45YzAgMC03LjMtMTQuOC03LjMtMzYuNWMwLTcwLjcgNzUuNS03OCA3NS41LTI1YzAgMTMuNS01LjQgMzEuMS0xMS4yIDQ5LjhjLTMuMyAxMC42LTYuNiAyMS41LTkuMSAzMmMtNS43IDI0LjUgMTIuMyA0NC40IDM2LjQgNDQuNGM0My43IDAgNzcuMi00NiA3Ny4yLTExMi40YzAtNTguOC00Mi4zLTk5LjktMTAyLjYtOTkuOUMxNTMgMTM5IDExMiAxOTEuNCAxMTIgMjQ1LjZjMCAyMS4xIDguMiA0My43IDE4LjMgNTZjMiAyLjQgMi4zIDQuNSAxLjcgN2MtMS4xIDQuNy0zLjEgMTIuOS00LjcgMTkuMmMtMSA0LTEuOCA3LjMtMi4xIDguNmMtMS4xIDQuNS0zLjUgNS41LTguMiAzLjNjLTMwLjYtMTQuMy00OS44LTU5LjEtNDkuOC05NS4xQzY3LjIgMTY3LjEgMTIzLjQgOTYgMjI5LjQgOTZjODUuMiAwIDE1MS40IDYwLjcgMTUxLjQgMTQxLjhjMCA4NC42LTUzLjMgMTUyLjctMTI3LjQgMTUyLjdjLTI0LjkgMC00OC4zLTEyLjktNTYuMy0yOC4yYzAgMC0xMi4zIDQ2LjktMTUuMyA1OC40Yy01IDE5LjMtMTcuNiA0Mi45LTI3LjQgNTkuM0gzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVJlZGRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJ6TTMwNS45IDE2Ni40YzIwLjYgMCAzNy4zLTE2LjcgMzcuMy0zNy4zcy0xNi43LTM3LjMtMzcuMy0zNy4zYy0xOCAwLTMzLjEgMTIuOC0zNi42IDI5LjhjLTMwLjIgMy4yLTUzLjggMjguOC01My44IDU5LjlsMCAuMmMtMzIuOCAxLjQtNjIuOCAxMC43LTg2LjYgMjUuNWMtOC44LTYuOC0xOS45LTEwLjktMzItMTAuOWMtMjguOSAwLTUyLjMgMjMuNC01Mi4zIDUyLjNjMCAyMSAxMi4zIDM5IDMwLjEgNDcuNGMxLjcgNjAuNyA2Ny45IDEwOS42IDE0OS4zIDEwOS42czE0Ny42LTQ4LjkgMTQ5LjMtMTA5LjdjMTcuNy04LjQgMjkuOS0yNi40IDI5LjktNDcuM2MwLTI4LjktMjMuNC01Mi4zLTUyLjMtNTIuM2MtMTIgMC0yMyA0LTMxLjkgMTAuOGMtMjQtMTQuOS01NC4zLTI0LjItODcuNS0yNS40bDAtLjFjMC0yMi4yIDE2LjUtNDAuNyAzNy45LTQzLjdsMCAwYzMuOSAxNi41IDE4LjcgMjguNyAzNi4zIDI4Ljd6TTE1NSAyNDguMWMxNC42IDAgMjUuOCAxNS40IDI1IDM0LjRzLTExLjggMjUuOS0yNi41IDI1LjlzLTI3LjUtNy43LTI2LjYtMjYuN3MxMy41LTMzLjUgMjguMS0zMy41em0xNjYuNCAzMy41Yy45IDE5LTEyIDI2LjctMjYuNiAyNi43cy0yNS42LTYuOS0yNi41LTI1LjljLS45LTE5IDEwLjMtMzQuNCAyNS0zNC40czI3LjMgMTQuNiAyOC4xIDMzLjV6bS00Mi4xIDQ5LjZjLTkgMjEuNS0zMC4zIDM2LjctNTUuMSAzNi43cy00Ni4xLTE1LjEtNTUuMS0zNi43Yy0xLjEtMi42IC43LTUuNCAzLjQtNS43YzE2LjEtMS42IDMzLjUtMi41IDUxLjctMi41czM1LjYgLjkgNTEuNyAyLjVjMi43IC4zIDQuNSAzLjEgMy40IDUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlU25hcGNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0LDMySDY0QTY0LDY0LDAsMCwwLDAsOTZWNDE2YTY0LDY0LDAsMCwwLDY0LDY0SDM4NGE2NCw2NCwwLDAsMCw2NC02NFY5NkE2NCw2NCwwLDAsMCwzODQsMzJabS0zLjkwNywzMTkuMzA5LS4wODMuMWEzMi4zNjQsMzIuMzY0LDAsMCwxLTguNzE3LDYuODIzLDkwLjI2LDkwLjI2LDAsMCwxLTIwLjU4Niw4LjIsMTIuNjk0LDEyLjY5NCwwLDAsMC0zLjg1MiwxLjc2Yy0yLjE1OCwxLjkwOS0yLjEsNC42NC00LjQsOC41NWEyMy4xMzcsMjMuMTM3LDAsMCwxLTYuODQsNy40NzFjLTYuNzA3LDQuNjMyLTE0LjI0NCw0LjkyMy0yMi4yMyw1LjIzLTcuMjE0LjI3NC0xNS4zOS41ODEtMjQuNzI5LDMuNjY5LTMuNzYxLDEuMjQ1LTcuNzUzLDMuNjk0LTEyLjM3Nyw2LjUzMy0xMS4yNjUsNi45LTI2LjY4LDE2LjM1My01Mi4zLDE2LjM1M3MtNDAuOTI1LTkuNC01Mi4xMDYtMTYuMjc5Yy00LjY1Ny0yLjg4OC04LjY3NS01LjM2Mi0xMi41NDMtNi42NC05LjMzOS0zLjA4LTE3LjUxNi0zLjQtMjQuNzI5LTMuNjctNy45ODYtLjMwNy0xNS41MjMtLjYtMjIuMjMxLTUuMjI5YTIzLjA4NSwyMy4wODUsMCwwLDEtNi4wMS02LjExYy0zLjItNC42MzItMi44NTUtNy44LTUuMjU0LTkuODk1YTEzLjQyOCwxMy40MjgsMCwwLDAtNC4xLTEuODM0LDg5Ljk4Niw4OS45ODYsMCwwLDEtMjAuMzEzLTguMTI3LDMyLjkwNSwzMi45MDUsMCwwLDEtOC4zLTYuMjg0Yy02LjU4My02Ljc1Ny04LjI3Ni0xNC43NzYtNS42ODYtMjEuODI0LDMuNDM2LTkuMzM4LDExLjU3MS0xMi4xMTEsMTkuNC0xNi4yNjIsMTQuNzc2LTguMDI3LDI2LjM0OC0xOC4wNTUsMzQuNDMzLTI5Ljg4NGE2OC4yMzYsNjguMjM2LDAsMCwwLDUuOTg1LTEwLjU2N2MuNzg5LTIuMTU4Ljc3Mi0zLjMyOS4yNDEtNC40MTZhNy4zODYsNy4zODYsMCwwLDAtMi4yMDgtMi4yMTdjLTIuNTMyLTEuNjc2LTUuMTEzLTMuMzUzLTYuODgyLTQuNS0zLjI3LTIuMTQxLTUuODY4LTMuODE4LTcuNTI5LTQuOTgtNi4yNjctNC4zODMtMTAuNjUtOS4wNC0xMy40LTE0LjI0NWEyOC40LDI4LjQsMCwwLDEtMS4zNjktMjMuNTg0YzQuMTM0LTEwLjkyNCwxNC40NjktMTcuNzA2LDI2Ljk3OC0xNy43MDZhMzcuMTQxLDM3LjE0MSwwLDAsMSw3Ljg0NS44M2MuNjg5LjE1LDEuMzcuMzA3LDIuMDQyLjQ4Mi0uMTA4LTcuNDMuMDU4LTE1LjM1Ny43MjItMjMuMTE5LDIuMzU4LTI3LjI2MSwxMS45MTItNDEuNTg5LDIxLjg3NC01Mi45OTRhODYuODM2LDg2LjgzNiwwLDAsMSwyMi4yOC0xNy45MzFDMTg4LjI1NCwxMDAuMzgzLDIwNS4zMTIsOTYsMjI0LDk2czM1LjgyOCw0LjM4Myw1MC45NDQsMTMuMDE2YTg3LjE2OSw4Ny4xNjksMCwwLDEsMjIuMjM5LDE3LjljOS45NjEsMTEuNDA2LDE5LjUxNiwyNS43MDksMjEuODc0LDUyLjk5NWEyMzEuMTk0LDIzMS4xOTQsMCwwLDEsLjcxMywyMy4xMThjLjY3My0uMTc0LDEuMzYyLS4zMzIsMi4wNTEtLjQ4MWEzNy4xMzEsMzcuMTMxLDAsMCwxLDcuODQ0LS44M2MxMi41LDAsMjIuODIsNi43ODIsMjYuOTcxLDE3LjcwNmEyOC4zNywyOC4zNywwLDAsMS0xLjQsMjMuNTU5Yy0yLjc0LDUuMi03LjEyMyw5Ljg2MS0xMy4zOSwxNC4yNDQtMS42NjgsMS4xODctNC4yNTgsMi44NjQtNy41MjksNC45ODEtMS44MzUsMS4xODctNC41NDEsMi45NDctNy4xNjQsNC42ODJhNi44NTYsNi44NTYsMCwwLDAtMS45NTEsMi4wMzRjLS41MDYsMS4wNDYtLjUzOSwyLjE5MS4xNjYsNC4yMDhhNjkuMDE1LDY5LjAxNSwwLDAsMCw2LjA4NSwxMC43OTJjOC4yNjgsMTIuMSwyMC4xODgsMjIuMzEzLDM1LjQ1NCwzMC40MDcsMS40ODYuNzcyLDIuOTgsMS41LDQuNDQxLDIuMjU4LjcyMi4zMzIsMS41NjkuNzYzLDIuNDkxLDEuMyw0LjksMi43MjMsOS4yLDYuMDEsMTEuNDU1LDEyLjE1M0MzODcuODIxLDMzNi45MTUsMzg2LjI2OSwzNDQuNywzODAuMDkzLDM1MS4zMDlabS0xNi43MTktMTguNDYxYy01MC4zMTMtMjQuMzE0LTU4LjMzMi02MS45MTgtNTguNjg5LTY0Ljc0OS0uNDMxLTMuMzc5LS45MjEtNi4wMzUsMi44MDYtOS40NzIsMy41OTQtMy4zMjgsMTkuNTQxLTEzLjE5LDIzLjk2NS0xNi4yNzgsNy4zMy01LjExNCwxMC41MzQtMTAuMjE5LDguMTYtMTYuNDk1LTEuNjYtNC4zMTYtNS42ODYtNS45NzYtOS45NjEtNS45NzZhMTguNSwxOC41LDAsMCwwLTMuOTkzLjQ0OGMtOC4wMzUsMS43NDMtMTUuODM4LDUuNzY5LTIwLjM1NCw2Ljg1N2E3LjEsNy4xLDAsMCwxLTEuNjYuMjI0Yy0yLjQwOCwwLTMuMjc5LTEuMDcxLTMuMDg4LTMuOTY4LjU2NC04Ljc4MywxLjc1OS0yNS45MjUuMzczLTQxLjkzNy0xLjg4NC0yMi4wMzItOC45OS0zMi45NDgtMTcuNDMyLTQyLjYtNC4wNTEtNC42MjQtMjMuMTM1LTI0LjY1NC01OS41MzYtMjQuNjU0UzE2OC41MywxMzQuMzU5LDE2NC40NzksMTM5Yy04LjQzNCw5LjY1NC0xNS41MzEsMjAuNTctMTcuNDMyLDQyLjYtMS4zODYsMTYuMDEzLS4xNDEsMzMuMTQ3LjM3Myw0MS45MzcuMTY2LDIuNzU2LS42OCwzLjk2OC0zLjA4OCwzLjk2OGE3LjEsNy4xLDAsMCwxLTEuNjYtLjIyNGMtNC41MDctMS4wODctMTIuMzEtNS4xMTMtMjAuMzQ2LTYuODU2YTE4LjQ5NCwxOC40OTQsMCwwLDAtMy45OTMtLjQ0OWMtNC4yNSwwLTguMywxLjYzNi05Ljk2MSw1Ljk3Ny0yLjM3NCw2LjI3Ni44NDcsMTEuMzgxLDguMTY4LDE2LjQ5NCw0LjQyNSwzLjA4OCwyMC4zNzEsMTIuOTU4LDIzLjk2NiwxNi4yNzksMy43MTksMy40MzcsMy4yMzcsNi4wOTMsMi44MDUsOS40NzEtLjM1NiwyLjc5LTguMzg0LDQwLjM5NC01OC42ODksNjQuNzQ5LTIuOTQ2LDEuNDI4LTcuOTYsNC40NS44OCw5LjMzMSwxMy44OCw3LjYyOCwyMy4xMTEsNi44MDcsMzAuMywxMS40Myw2LjA5MywzLjkyNywyLjUsMTIuMzk0LDYuOTIzLDE1LjQ0OSw1LjQ1NCwzLjc2LDIxLjU4My0uMjY2LDQyLjMzNSw2LjYsMTcuNDMzLDUuNzQ0LDI4LjExNiwyMi4wMTUsNTguOTYzLDIyLjAxNXM0MS43ODgtMTYuMyw1OC45MzgtMjEuOTczYzIwLjc5NS02Ljg2NSwzNi44OS0yLjgzOSw0Mi4zMzYtNi42LDQuNDMzLTMuMDU1LjgyMi0xMS41MjIsNi45MjMtMTUuNDQ4LDcuMTgxLTQuNjI0LDE2LjQxMS0zLjgsMzAuMy0xMS40NzJDMzcxLjM2LDMzNy4zNTUsMzY2LjM0NiwzMzQuMzMzLDM2My4zNzQsMzMyLjg0OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlU3RlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY1LjYgMzA5LjFjMTguNiA3LjcgMjcuMyAyOC45IDE5LjYgNDcuNHMtMjkgMjcuMi00Ny42IDE5LjRsLTI4LjUtMTEuOGM1IDEwLjYgMTMuOCAxOS40IDI1LjQgMjQuMmMyNS4yIDEwLjUgNTQuMS0xLjQgNjQuNi0yNi41YzUuMS0xMi4xIDUuMS0yNS41IC4xLTM3LjdjLTUuMS0xMi4xLTE0LjUtMjEuNi0yNi43LTI2LjdjLTEyLjEtNS0yNS00LjgtMzYuNC0uNWwyOS41IDEyLjJ6TTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjI0MC43bDExNi42IDQ4LjFjMTItOC4yIDI2LjItMTIuMSA0MC43LTExLjNsNTUuNC04MC4ydi0xLjFjMC00OC4yIDM5LjMtODcuNSA4Ny42LTg3LjVzODcuNiAzOS4zIDg3LjYgODcuNWMwIDQ5LjItNDAuOSA4OC43LTg5LjYgODcuNWwtNzkgNTYuM2MxLjYgMzguNS0yOS4xIDY4LjgtNjUuNyA2OC44Yy0zMS44IDAtNTguNS0yMi43LTY0LjUtNTIuN0wwIDMxOS4yVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTI0MS45IDE5Ni4yYTU4LjQgNTguNCAwIDEgMCAxMTYuOCAwIDU4LjQgNTguNCAwIDEgMCAtMTE2LjggMHptMTQuNi0uMWE0My45IDQzLjkgMCAxIDEgODcuOCAwIDQzLjkgNDMuOSAwIDEgMSAtODcuOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVUaHJlYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjk0LjIgMjQ0LjNjMTkuNSA5LjMgMzMuNyAyMy41IDQxLjIgNDAuOWMxMC40IDI0LjMgMTEuNCA2My45LTIwLjIgOTUuNGMtMjQuMiAyNC4xLTUzLjUgMzUtOTUuMSAzNS4zaC0uMmMtNDYuOC0uMy04Mi44LTE2LjEtMTA2LjktNDYuOEM5MS41IDM0MS44IDgwLjQgMzAzLjcgODAgMjU2di0uMS0uMWMuNC00Ny43IDExLjUtODUuNyAzMy0xMTMuMWMyNC4yLTMwLjcgNjAuMi00Ni41IDEwNi45LTQ2LjhoLjJjNDYuOSAuMyA4My4zIDE2IDEwOC4yIDQ2LjZjMTIuMyAxNS4xIDIxLjMgMzMuMyAyNyA1NC40bC0yNi45IDcuMmMtNC43LTE3LjItMTEuOS0zMS45LTIxLjQtNDMuNmMtMTkuNC0yMy45LTQ4LjctMzYuMS04Ny0zNi40Yy0zOCAuMy02Ni44IDEyLjUtODUuNSAzNi4yYy0xNy41IDIyLjMtMjYuNiA1NC40LTI2LjkgOTUuNWMuMyA0MS4xIDkuNCA3My4zIDI2LjkgOTUuNWMxOC43IDIzLjggNDcuNCAzNiA4NS41IDM2LjJjMzQuMy0uMyA1Ni45LTguNCA3NS44LTI3LjNjMjEuNS0yMS41IDIxLjEtNDcuOSAxNC4yLTY0Yy00LTkuNC0xMS40LTE3LjMtMjEuMy0yMy4zYy0yLjQgMTgtNy45IDMyLjItMTYuNSA0My4yYy0xMS40IDE0LjUtMjcuNyAyMi40LTQ4LjQgMjMuNWMtMTUuNyAuOS0zMC44LTIuOS00Mi42LTEwLjdjLTEzLjktOS4yLTIyLTIzLjItMjIuOS0zOS41Yy0xLjctMzIuMiAyMy44LTU1LjMgNjMuNS01Ny42YzE0LjEtLjggMjcuMy0uMiAzOS41IDEuOWMtMS42LTkuOS00LjktMTcuNy05LjgtMjMuNGMtNi43LTcuOC0xNy4xLTExLjgtMzAuOC0xMS45aC0uNGMtMTEgMC0yNiAzLjEtMzUuNiAxNy42bC0yMy0xNS44YzEyLjgtMTkuNCAzMy42LTMwLjEgNTguNS0zMC4xaC42YzQxLjggLjMgNjYuNiAyNi4zIDY5LjEgNzEuOGMxLjQgLjYgMi44IDEuMiA0LjIgMS45bC4xIC41em0tNzEuOCA2Ny41YzE3LS45IDM2LjQtNy42IDM5LjctNDguOGMtOC44LTEuOS0xOC42LTIuOS0yOS0yLjljLTMuMiAwLTYuNCAuMS05LjYgLjNjLTI4LjYgMS42LTM4LjEgMTUuNS0zNy40IDI3LjljLjkgMTYuNyAxOSAyNC41IDM2LjQgMjMuNmwtLjEtLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVR1bWJsciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0yNTYuOCA0MTZjLTc1LjUgMC05MS45LTU1LjUtOTEuOS04Ny45di05MEgxMzUuMmMtMy40IDAtNi4yLTIuOC02LjItNi4yVjE4OS40YzAtNC41IDIuOC04LjUgNy4xLTEwYzM4LjgtMTMuNyA1MC45LTQ3LjUgNTIuNy03My4yYy41LTYuOSA0LjEtMTAuMiAxMC0xMC4yaDQ0LjNjMy40IDAgNi4yIDIuOCA2LjIgNi4ydjcyaDUxLjljMy40IDAgNi4yIDIuOCA2LjIgNi4ydjUxLjFjMCAzLjQtMi44IDYuMi02LjIgNi4ySDI0OS4xVjMyMWMwIDIxLjQgMTQuOCAzMy41IDQyLjUgMjIuNGMzLTEuMiA1LjYtMiA4LTEuNGMyLjIgLjUgMy42IDIuMSA0LjYgNC45TDMxOCAzODcuMWMxIDMuMiAyIDYuNy0uMyA5LjFjLTguNSA5LjEtMzEuMiAxOS44LTYwLjkgMTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlVHdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTM1MS4zIDE5OS4zdjBjMCA4Ni43LTY2IDE4Ni42LTE4Ni42IDE4Ni42Yy0zNy4yIDAtNzEuNy0xMC44LTEwMC43LTI5LjRjNS4zIC42IDEwLjQgLjggMTUuOCAuOGMzMC43IDAgNTguOS0xMC40IDgxLjQtMjhjLTI4LjgtLjYtNTMtMTkuNS02MS4zLTQ1LjVjMTAuMSAxLjUgMTkuMiAxLjUgMjkuNi0xLjJjLTMwLTYuMS01Mi41LTMyLjUtNTIuNS02NC40di0uOGM4LjcgNC45IDE4LjkgNy45IDI5LjYgOC4zYy05LTYtMTYuNC0xNC4xLTIxLjUtMjMuNnMtNy44LTIwLjItNy43LTMxYzAtMTIuMiAzLjItMjMuNCA4LjktMzMuMWMzMi4zIDM5LjggODAuOCA2NS44IDEzNS4yIDY4LjZjLTkuMy00NC41IDI0LTgwLjYgNjQtODAuNmMxOC45IDAgMzUuOSA3LjkgNDcuOSAyMC43YzE0LjgtMi44IDI5LTguMyA0MS42LTE1LjhjLTQuOSAxNS4yLTE1LjIgMjgtMjguOCAzNi4xYzEzLjItMS40IDI2LTUuMSAzNy44LTEwLjJjLTguOSAxMy4xLTIwLjEgMjQuNy0zMi45IDM0Yy4yIDIuOCAuMiA1LjcgLjIgOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVVcHdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYgMzJsMzM2IDBjMzAuOSAwIDU2IDI1LjEgNTYgNTZsMCAzMzZjMCAzMC45LTI1LjEgNTYtNTYgNTZMNTYgNDgwYy0zMC45IDAtNTYtMjUuMS01Ni01NkwwIDg4QzAgNTcuMSAyNS4xIDMyIDU2IDMyek0yNzAuOSAyNzQuMmM2LjYtNTIuOSAyNS45LTY5LjUgNTEuNC02OS41YzI1LjMgMCA0NC45IDIwLjIgNDQuOSA0OS43cy0xOS43IDQ5LjctNDQuOSA0OS43Yy0yNy45IDAtNDYuMy0yMS41LTUxLjQtMjkuOXptLTI2LjctNDEuOGMtOC4yLTE1LjUtMTQuMy0zNi4zLTE5LjItNTUuNmwtMjkuNyAwLTMzLjIgMCAwIDc4LjFjMCAyOC40LTEyLjkgNDkuNC0zOC4yIDQ5LjRzLTM5LjgtMjAuOS0zOS44LTQ5LjNsLjMtNzguMS0zNi4yIDAgMCA3OC4xYzAgMjIuOCA3LjQgNDMuNSAyMC45IDU4LjJjMTMuOSAxNS4yIDMyLjggMjMuMiA1NC44IDIzLjJjNDMuNyAwIDc0LjItMzMuNSA3NC4yLTgxLjVsMC01Mi41YzQuNiAxNy4zIDE1LjQgNTAuNSAzNi4yIDc5LjdMMjE1IDM5Mi42bDM2LjggMCAxMi44LTc4LjRjNC4yIDMuNSA4LjcgNi42IDEzLjQgOS40YzEyLjMgNy44IDI2LjQgMTIuMiA0MC45IDEyLjZsLjEgMGMuNSAwIDEuMSAwIDEuNiAwYy42IDAgMS4xIDAgMS43IDBjNDUuMSAwIDgwLjktMzQuOSA4MC45LTgxLjlzLTM1LjktODIuMi04MC45LTgyLjJjLTQ1LjQgMC03MC45IDI5LjctNzguMSA2MC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVWaWFkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NnpNMTE4LjMgMzgxLjJjLTY4LTczLjYtMTkuOC0xOTYuMSA4MS4yLTE5Ni4xYzEzLjMgMCAyNi42IDIuMSAzOS4xIDYuN2MtNC4zIDguNC03LjMgMTcuNi04LjQgMjcuMWMtOS43LTQuMS0yMC4yLTYtMzAuNy02Yy00OC44IDAtODQuNiA0MS43LTg0LjYgODguOWMwIDQzIDI4LjUgNzguNyA2OS41IDg1LjljNjEuNS0yNCA3Mi45LTExNy42IDcyLjktMTc1djBjMC03LjMgMC0xNC44LS42LTIyLjFjLTExLjItMzIuOS0yNi42LTY0LjYtNDQuMi05NC41YzI3LjEgMTguMyA0MS45IDYyLjUgNDQuMiA5NC4xdi40YzcuNyAyMi41IDExLjggNDYuMiAxMS44IDcwYzAgNTQuMS0yMS45IDk5LTY4LjMgMTI4LjJsLTIuNCAuMmM1MCAxIDg2LjItMzguNiA4Ni4yLTg3LjJjMC0xMi4yLTIuMS0yNC4zLTYuOS0zNS43YzkuNS0xLjkgMTguNS01LjYgMjYuNC0xMC41YzE1LjMgMzYuNiAxMi42IDg3LjMtMjIuOCAxMjUuNmMtNDIuNCA0Ni4yLTEyMCA0Ni42LTE2Mi40IDB6TTI3NC42IDIxNy42YzIxLjktMTIgNDkuNi0zMC43IDYyLjMtNTNjMS41LTMgNC4xLTguNiA0LjUtMTJjLTEyLjUgMjcuOS00NC4yIDQ5LjgtNzMuOSA1Ni43Yy00LjctNy4zLTcuNS0xNS41LTcuNS0yNC4zYzAtMTAuMyA1LjItMjQuMSAxMi45LTMxLjZjOC4zLTcuOSAxOC0xMC45IDI3LjktMTQuMWMxNi01LjEgMzIuNS0xMC4zIDQ0LjUtMzUuOWMzMi41IDQ2LjIgMTMuMSAxMzAuMy0zNi4zIDEzMC4zYy0xMy4zIDAtMjUuMS03LjEtMzQuNC0xNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVWaW1lbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0zMTguNSAzMDkuNUMyNzUgMzY2IDIzOC4yIDM5NC4zIDIwOC4xIDM5NC4zYy0xOC43IDAtMzQuNC0xNy4yLTQ3LjMtNTEuNmMtMy44LTEzLjktNy4zLTI2LjktMTAuNS0zOWMtMTguMi02OC4zLTI4LjYtMTA3LjQtNDYuMi0xMDcuNGMtMi40IDAtMTAuOCA1LTI1LjEgMTUuMUw2NCAxOTJjNy02LjEgMTMuOS0xMi40IDIwLjYtMTguNWMyOS4xLTI2LjMgNTUuNi01MC4zIDczLjUtNTEuOWMyNC45LTIuNCA0MC4yIDE0LjYgNDYgNTEuMWMyMC41IDEyOS42IDI5LjYgMTQ5LjIgNjYuOCA5MC41YzEzLjQtMjEuMiAyMC42LTM3LjIgMjEuNS00OC4zYzMuNC0zMi44LTI1LjYtMzAuNi00NS4yLTIyLjJjMTUuNy01MS41IDQ1LjgtNzYuNSA5MC4xLTc1LjFjMzIuOSAxIDQ4LjQgMjIuNCA0Ni41IDY0Yy0xLjQgMzEuMS0yMy4yIDczLjgtNjUuMyAxMjcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlV2ViQXdlc29tZVN0cm9rZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEM0Ni4zIDY0IDMyIDc4LjMgMzIgOTZsMCAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMjBjMC0xNy43LTE0LjMtMzItMzItMzJMNjQgNjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2em0yMzUgODEuNkwyODggMjI0bDUyLjItMTAuNGMtMi42LTMuOS00LjItOC41LTQuMi0xMy42YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCAxMy0xMC4zIDIzLjYtMjMuMiAyNEwzMDQuNSAzNDkuMWMtNS4yIDExLjUtMTYuNiAxOC45LTI5LjIgMTguOWwtMTAyLjYgMGMtMTIuNiAwLTI0LTcuNC0yOS4yLTE4LjlMODcuMiAyMjRDNzQuMyAyMjMuNiA2NCAyMTMgNjQgMjAwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCA1LTEuNSA5LjctNC4yIDEzLjZMMTYwIDIyNGw1My4xLTQ2LjRjLTguOS00LjEtMTUtMTMuMS0xNS0yMy42YzAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZjMCAxMC41LTYuMiAxOS41LTE1LjEgMjMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlV2ViQXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0yMzUgMTc3LjZMMjg4IDIyNGw1Mi4yLTEwLjRjLTIuNi0zLjktNC4yLTguNS00LjItMTMuNmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0YzAgMTMtMTAuMyAyMy42LTIzLjIgMjRMMzA0LjUgMzQ5LjFjLTUuMiAxMS41LTE2LjYgMTguOS0yOS4yIDE4LjlsLTEwMi42IDBjLTEyLjYgMC0yNC03LjQtMjkuMi0xOC45TDg3LjIgMjI0Qzc0LjMgMjIzLjYgNjQgMjEzIDY0IDIwMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0YzAgNS0xLjUgOS43LTQuMiAxMy42TDE2MCAyMjRsNTMuMS00Ni40Yy04LjktNC4xLTE1LTEzLjEtMTUtMjMuNmMwLTE0LjQgMTEuNi0yNiAyNi0yNnMyNiAxMS42IDI2IDI2YzAgMTAuNS02LjIgMTkuNS0xNS4xIDIzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVdoYXRzYXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkyLjEgMjU0LjZjMCAyNC45IDcgNDkuMiAyMC4yIDcwLjFsMy4xIDUtMTMuMyA0OC42TDE1MiAzNjUuMmw0LjggMi45YzIwLjIgMTIgNDMuNCAxOC40IDY3LjEgMTguNGguMWM3Mi42IDAgMTMzLjMtNTkuMSAxMzMuMy0xMzEuOGMwLTM1LjItMTUuMi02OC4zLTQwLjEtOTMuMmMtMjUtMjUtNTgtMzguNy05My4yLTM4LjdjLTcyLjcgMC0xMzEuOCA1OS4xLTEzMS45IDEzMS44ek0yNzQuOCAzMzBjLTEyLjYgMS45LTIyLjQgLjktNDcuNS05LjljLTM2LjgtMTUuOS02MS44LTUxLjUtNjYuOS01OC43Yy0uNC0uNi0uNy0uOS0uOC0xLjFjLTItMi42LTE2LjItMjEuNS0xNi4yLTQxYzAtMTguNCA5LTI3LjkgMTMuMi0zMi4zYy4zLS4zIC41LS41IC43LS44YzMuNi00IDcuOS01IDEwLjYtNWMyLjYgMCA1LjMgMCA3LjYgLjFjLjMgMCAuNSAwIC44IDBjMi4zIDAgNS4yIDAgOC4xIDYuOGMxLjIgMi45IDMgNy4zIDQuOSAxMS44YzMuMyA4IDYuNyAxNi4zIDcuMyAxNy42YzEgMiAxLjcgNC4zIC4zIDYuOWMtMy40IDYuOC02LjkgMTAuNC05LjMgMTNjLTMuMSAzLjItNC41IDQuNy0yLjMgOC42YzE1LjMgMjYuMyAzMC42IDM1LjQgNTMuOSA0Ny4xYzQgMiA2LjMgMS43IDguNi0xYzIuMy0yLjYgOS45LTExLjYgMTIuNS0xNS41YzIuNi00IDUuMy0zLjMgOC45LTJzMjMuMSAxMC45IDI3LjEgMTIuOWMuOCAuNCAxLjUgLjcgMi4xIDFjMi44IDEuNCA0LjcgMi4zIDUuNSAzLjZjLjkgMS45IC45IDkuOS0yLjQgMTkuMWMtMy4zIDkuMy0xOS4xIDE3LjctMjYuNyAxOC44ek00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0xNDguMSAzOTMuOUw2NCA0MTZsMjIuNS04Mi4yYy0xMy45LTI0LTIxLjItNTEuMy0yMS4yLTc5LjNDNjUuNCAxNjcuMSAxMzYuNSA5NiAyMjMuOSA5NmM0Mi40IDAgODIuMiAxNi41IDExMi4yIDQ2LjVjMjkuOSAzMCA0Ny45IDY5LjggNDcuOSAxMTIuMmMwIDg3LjQtNzIuNyAxNTguNS0xNjAuMSAxNTguNWMtMjYuNiAwLTUyLjctNi43LTc1LjgtMTkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlWFR3aXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em0yOTcuMSA4NEwyNTcuMyAyMzQuNiAzNzkuNCAzOTZIMjgzLjhMMjA5IDI5OC4xIDEyMy4zIDM5Nkg3NS44bDExMS0xMjYuOUw2OS43IDExNmg5OGw2Ny43IDg5LjVMMzEzLjYgMTE2aDQ3LjV6TTMyMy4zIDM2Ny42TDE1My40IDE0Mi45SDEyNS4xTDI5Ni45IDM2Ny42aDI2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVhpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NnpNOTMuOCAzMjAuMmMtNS41IDAtOC43LTUuMy02LTEwLjNsNDkuMy04Ni43Yy4xIDAgLjEtLjEgMC0uMmwtMzEuNC01NGMtMy01LjYgLjItMTAuMSA2LTEwLjFoNDYuNmM1LjIgMCA5LjUgMi45IDEyLjkgOC43bDMxLjkgNTUuM2MtMS4zIDIuMy0xOCAzMS43LTUwLjEgODguMmMtMy41IDYuMi03LjcgOS4xLTEyLjYgOS4xSDkzLjh6bTE2My41LTMzLjR2LjJsNjUuNSAxMTljMi44IDUuMSAuMSAxMC4xLTYgMTAuMUgyNzAuMmMtNS41IDAtOS43LTIuOS0xMi45LTguN2wtNjYtMTIwLjNjMS44LTMuMiAyMi45LTQwLjQgNjMuMy0xMTEuNmMxMS43LTIwLjcgMjUuMS00NC4zIDQwLjEtNzAuOGMzLjMtNS44IDcuNC04LjcgMTIuNS04LjdoNDYuOWM1LjctLjEgOC44IDQuNyA2IDEwTDI1Ny4zIDI4Ni44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVZb3V0dWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MiAyNTYuMmwtOTUuMi01NC4xVjMxMC4zTDI4MiAyNTYuMnpNMzg0IDMySDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NHptMTQuNCAxMzYuMWM3LjYgMjguNiA3LjYgODguMiA3LjYgODguMnMwIDU5LjYtNy42IDg4LjFjLTQuMiAxNS44LTE2LjUgMjcuNy0zMi4yIDMxLjlDMzM3LjkgMzg0IDIyNCAzODQgMjI0IDM4NHMtMTEzLjkgMC0xNDIuMi03LjZjLTE1LjctNC4yLTI4LTE2LjEtMzIuMi0zMS45QzQyIDMxNS45IDQyIDI1Ni4zIDQyIDI1Ni4zczAtNTkuNyA3LjYtODguMmM0LjItMTUuOCAxNi41LTI4LjIgMzIuMi0zMi40QzExMC4xIDEyOCAyMjQgMTI4IDIyNCAxMjhzMTEzLjkgMCAxNDIuMiA3LjdjMTUuNyA0LjIgMjggMTYuNiAzMi4yIDMyLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZXNwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xMiAzNDMuMzRjLTkuNjUgOS42NS05LjY1IDI1LjI5IDAgMzQuOTQgOS42NSA5LjY1IDI1LjI5IDkuNjUgMzQuOTQgMEwzNzguMjQgMjIxLjFjMTkuMjktMTkuMjkgNTAuNTctMTkuMjkgNjkuODYgMHMxOS4yOSA1MC41NyAwIDY5Ljg2TDI5My45NSA0NDUuMWMxOS4yNyAxOS4yOSA1MC41MyAxOS4zMSA2OS44Mi4wNGwuMDQtLjA0IDExOS4yNS0xMTkuMjRjMzguNTktMzguNTkgMzguNTktMTAxLjE0IDAtMTM5LjcyLTM4LjU5LTM4LjU5LTEwMS4xNS0zOC41OS0xMzkuNzIgMGwtMTU3LjIyIDE1Ny4yem0yNDQuNTMtMTA0LjhjLTkuNjUtOS42NS0yNS4yOS05LjY1LTM0LjkzIDBsLTE1Ny4yIDE1Ny4xOGMtMTkuMjcgMTkuMjktNTAuNTMgMTkuMzEtNjkuODIuMDVsLS4wNS0uMDVjLTkuNjQtOS42NC0yNS4yNy05LjY1LTM0LjkyLS4wMWwtLjAxLjAxYy05LjY1IDkuNjQtOS42NiAyNS4yOC0uMDIgMzQuOTNsLjAyLjAyYzM4LjU4IDM4LjU3IDEwMS4xNCAzOC41NyAxMzkuNzIgMGwxNTcuMi0xNTcuMmM5LjY1LTkuNjUgOS42NS0yNS4yOS4wMS0zNC45M3ptLTI2MS45OSA4Ny4zM2wxNTcuMTgtMTU3LjE4YzkuNjQtOS42NSA5LjY0LTI1LjI5IDAtMzQuOTQtOS42NC05LjY0LTI1LjI3LTkuNjQtMzQuOTEgMEwxMzMuNzIgMjkwLjkzYy0xOS4yOCAxOS4yOS01MC41NiAxOS4zLTY5Ljg1LjAxbC0uMDEtLjAxYy0xOS4yOS0xOS4yOC0xOS4zMS01MC41NC0uMDMtNjkuODRsLjAzLS4wM0wyMTguMDMgNjYuODljLTE5LjI4LTE5LjI5LTUwLjU1LTE5LjMtNjkuODUtLjAybC0uMDIuMDJMMjguOTMgMTg2LjE0Yy0zOC41OCAzOC41OS0zOC41OCAxMDEuMTQgMCAxMzkuNzIgMzguNiAzOC41OSAxMDEuMTMgMzguNTkgMTM5LjczLjAxem0tODcuMzMtNTIuNGM5LjY0IDkuNjQgMjUuMjcgOS42NCAzNC45MSAwbDE1Ny4yMS0xNTcuMTljMTkuMjgtMTkuMjkgNTAuNTUtMTkuMyA2OS44NC0uMDJsLjAyLjAyYzkuNjUgOS42NSAyNS4yOSA5LjY1IDM0LjkzIDAgOS42NS05LjY1IDkuNjUtMjUuMjkgMC0zNC45My0zOC41OS0zOC41OS0xMDEuMTMtMzguNTktMTM5LjcyIDBMODEuMzMgMjM4LjU0Yy05LjY1IDkuNjQtOS42NSAyNS4yOC0uMDEgMzQuOTNoLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja0V4Y2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcgMzMyLjNoNDEyLjd2MjJjMCAzNy43LTI5LjMgNjgtNjUuMyA2OGgtMTlMMjU5LjMgNTEydi04OS43SDgzYy0zNiAwLTY1LjMtMzAuMy02NS4zLTY4di0yMnptMC0yMy42aDQxMi43di04NUgxNy43djg1em0wLTEwOS40aDQxMi43di04NUgxNy43djg1ek0zNjUgMEg4M0M0NyAwIDE3LjcgMzAuMyAxNy43IDY3LjdWOTBoNDEyLjdWNjcuN0M0MzAuMyAzMC4zIDQwMSAwIDM2NSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja092ZXJmbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43IDMxMUw5NSAyNjkuNyA4Ni44IDMwOWwxOTUuNyA0MXptNTEtODdMMTg4LjIgOTUuN2wtMjUuNSAzMC44IDE1My41IDEyOC4zem0tMzEuMiAzOS43TDEyOS4yIDE3OWwtMTYuNyAzNi41TDI5My43IDMwMHpNMjYyIDMybC0zMiAyNCAxMTkuMyAxNjAuMyAzMi0yNHptMjAuNSAzMjhoLTIwMHYzOS43aDIwMHptMzkuNyA4MEg0Mi43VjMyMGgtNDB2MTYwaDM1OS41VjMyMGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrcGF0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQuNiAyMzIuNGMwIDguNS00LjI2IDIwLjQ5LTIxLjM0IDIwLjQ5aC0xOS42MXYtNDEuNDdoMTkuNjFjMTcuMTMgMCAyMS4zNCAxMi4zNiAyMS4zNCAyMC45OHpNNDQ4IDMydjQ0OEgwVjMyek0xNTEuMyAyODcuODRjMC0yMS4yNC0xMi4xMi0zNC41NC00Ni43Mi00NC44NS0yMC41Ny03LjQxLTI2LTEwLjkxLTI2LTE4LjYzczctMTQuNjEgMjAuNDEtMTQuNjFjMTQuMDkgMCAyMC43OSA4LjQ1IDIwLjc5IDE4LjM1aDMwLjdsLjE5LS41N2MuNS0xOS41Ny0xNS4wNi00MS42NS01MS4xMi00MS42NS0yMy4zNyAwLTUyLjU1IDEwLjc1LTUyLjU1IDM4LjI5IDAgMTkuNCA5LjI1IDMxLjI5IDUwLjc0IDQ0LjM3IDE3LjI2IDYuMTUgMjEuOTEgMTAuNCAyMS45MSAxOS40OCAwIDE1LjItMTkuMTMgMTQuMjMtMTkuNDcgMTQuMjMtMjAuNCAwLTI1LjY1LTkuMS0yNS42NS0yMS45aC0zMC44bC0uMTguNTZjLS42OCAzMS4zMiAyOC4zOCA0NS4yMiA1Ni42MyA0NS4yMiAyOS45OCAwIDUxLjEyLTEzLjU1IDUxLjEyLTM4LjI5em0xMjUuMzgtNTUuNjNjMC0yNS4zLTE4LjQzLTQ1LjQ2LTUzLjQyLTQ1LjQ2aC01MS43OHYxMzguMThoMzIuMTd2LTQ3LjM2aDE5LjYxYzMwLjI1IDAgNTMuNDItMTUuOTUgNTMuNDItNDUuMzZ6TTI5Ny45NCAzMjVMMzQ3IDE4Ni43OGgtMzEuMDlMMjY4IDMyNXptMTA2LjUyLTEzOC4yMmgtMzEuMDlMMzI1LjQ2IDMyNWgyOS45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RheWxpbmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODIuNyAyOTIuNWwyLjcgMi43LTE3MC0xNjcuM2MtMy41LTMuNS05LjctMy43LTEzLjgtLjVMMTQ0LjMgMTcxYy00LjIgMy4yLTQuNiA4LjctMS4xIDEyLjJsNjguMSA2NC4zYzMuNiAzLjUgOS45IDMuNyAxNCAuNWwuMS0uMWM0LjEtMy4yIDEwLjQtMyAxNCAuNWw4NCA4MS4zYzMuNiAzLjUgMy4yIDktLjkgMTIuMmwtOTMuMiA3NGMtNC4yIDMuMy0xMC41IDMuMS0xNC4yLS40TDYzLjIgMjY4Yy0zLjUtMy41LTkuNy0zLjctMTMuOS0uNUwzLjUgMzAyLjRjLTQuMiAzLjItNC43IDguNy0xLjIgMTIuMkwyMTEgNTEwLjdzNy40IDYuOCAxNy4zLS44bDE5OC0xNjMuOWM0LTMuMiA0LjQtOC43LjctMTIuMnptNTQuNS04My40TDIyNi43IDIuNWMtMS41LTEuMi04LTUuNS0xNi4zIDEuMUwzLjYgMTY1LjdjLTQuMiAzLjItNC44IDguNy0xLjIgMTIuMmw0Mi4zIDQxLjcgMTcxLjcgMTY1LjFjMy43IDMuNSAxMC4xIDMuNyAxNC4zLjRsNTAuMi0zOC44LS4zLS4zIDcuNy02YzQuMi0zLjIgNC42LTguNy45LTEyLjJsLTU3LjEtNTQuNGMtMy42LTMuNS0xMC0zLjctMTQuMi0uNWwtLjEuMWMtNC4yIDMuMi0xMC41IDMuMS0xNC4yLS40TDEwOSAxODAuOGMtMy42LTMuNS0zLjEtOC45IDEuMS0xMi4ybDkyLjItNzEuNWM0LjEtMy4yIDEwLjMtMyAxMy45LjVsMTYwLjQgMTU5YzMuNyAzLjUgMTAgMy43IDE0LjEuNWw0NS44LTM1LjhjNC4xLTMuMiA0LjQtOC43LjctMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlYW1TeW1ib2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk1LjUgMTc3LjVjMCAzMy44LTI3LjUgNjEtNjEgNjEtMzMuOCAwLTYxLTI3LjMtNjEtNjFzMjcuMy02MSA2MS02MWMzMy41IDAgNjEgMjcuMiA2MSA2MXptNTIuNS4yYzAgNjMtNTEgMTEzLjgtMTEzLjcgMTEzLjhMMjI1IDM3MS4zYy00IDQzLTQwLjUgNzYuOC04NC41IDc2LjgtNDAuNSAwLTc0LjctMjguOC04My02N0wwIDM1OFYyNTAuN0w5Ny4yIDI5MGMxNS4xLTkuMiAzMi4yLTEzLjMgNTItMTEuNWw3MS0xMDEuN2MuNS02Mi4zIDUxLjUtMTEyLjggMTE0LTExMi44QzM5NyA2NCA0NDggMTE1IDQ0OCAxNzcuN3pNMjAzIDM2M2MwLTM0LjctMjcuOC02Mi41LTYyLjUtNjIuNS00LjUgMC05IC41LTEzLjUgMS41bDI2IDEwLjVjMjUuNSAxMC4yIDM4IDM5IDI3LjcgNjQuNS0xMC4yIDI1LjUtMzkuMiAzOC02NC43IDI3LjUtMTAuMi00LTIwLjUtOC4zLTMwLjctMTIuMiAxMC41IDE5LjcgMzEuMiAzMy4yIDU1LjIgMzMuMiAzNC43IDAgNjIuNS0yNy44IDYyLjUtNjIuNXptMjA3LjUtMTg1LjNjMC00Mi0zNC4zLTc2LjItNzYuMi03Ni4yLTQyLjMgMC03Ni41IDM0LjItNzYuNSA3Ni4yIDAgNDIuMiAzNC4zIDc2LjIgNzYuNSA3Ni4yIDQxLjkuMSA3Ni4yLTMzLjkgNzYuMi03Ni4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjU2YzAgMTM3LTExMS4yIDI0OC0yNDguNCAyNDgtMTEzLjggMC0yMDkuNi03Ni4zLTIzOS0xODAuNGw5NS4yIDM5LjNjNi40IDMyLjEgMzQuOSA1Ni40IDY4LjkgNTYuNCAzOS4yIDAgNzEuOS0zMi40IDcwLjItNzMuNWw4NC41LTYwLjJjNTIuMSAxLjMgOTUuOC00MC45IDk1LjgtOTMuNSAwLTUxLjYtNDItOTMuNS05My43LTkzLjVzLTkzLjcgNDItOTMuNyA5My41djEuMkwxNzYuNiAyNzljLTE1LjUtLjktMzAuNyAzLjQtNDMuNSAxMi4xTDAgMjM2LjFDMTAuMiAxMDguNCAxMTcuMSA4IDI0Ny42IDggMzg0LjggOCA0OTYgMTE5IDQ5NiAyNTZ6TTE1NS43IDM4NC4zbC0zMC41LTEyLjZhNTIuNzkgNTIuNzkgMCAwIDAgMjcuMiAyNS44YzI2LjkgMTEuMiA1Ny44LTEuNiA2OS0yOC40IDUuNC0xMyA1LjUtMjcuMy4xLTQwLjMtNS40LTEzLTE1LjUtMjMuMi0yOC41LTI4LjYtMTIuOS01LjQtMjYuNy01LjItMzguOS0uNmwzMS41IDEzYzE5LjggOC4yIDI5LjIgMzAuOSAyMC45IDUwLjctOC4zIDE5LjktMzEgMjkuMi01MC44IDIxem0xNzMuOC0xMjkuOWMtMzQuNCAwLTYyLjQtMjgtNjIuNC02Mi4zczI4LTYyLjMgNjIuNC02Mi4zIDYyLjQgMjggNjIuNCA2Mi4zLTI3LjkgNjIuMy02Mi40IDYyLjN6bS4xLTE1LjZjMjUuOSAwIDQ2LjktMjEgNDYuOS00Ni44IDAtMjUuOS0yMS00Ni44LTQ2LjktNDYuOHMtNDYuOSAyMS00Ni45IDQ2LjhjLjEgMjUuOCAyMS4xIDQ2LjggNDYuOSA0Ni44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGlja2VyTXVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjEuNyAxOTkuNmMtMS4zLjMuMyAwIDAgMHptLTYuMi03Ny40Yy03LjctMjIuMy01LjEtNy4yLTEzLjQtMzYuOS0xLjYtNi41LTMuNi0xNC41LTYuMi0yMC00LjQtOC43LTQuNi03LjUtNC42LTkuNSAwLTUuMyAzMC43LTQ1LjMgMTktNDYuOS01LjctLjYtMTIuMiAxMS42LTIwLjYgMTctOC42IDQuMi04IDUtMTAuMyA1LTIuNiAwLTUuNy0zLTYuMi01LTItNS43IDEuOS0yNS45LTMuNi0yNS45LTMuNiAwLTEyLjMgMjQuOC0xNyAyNS44LTUuMiAxLjMtMjcuOS0xMS40LTc1LjEgMTgtMjUuMyAxMy4yLTg2LjkgNjUuMi04NyA2NS4zLTYuNyA0LjctMjAgNC43LTM1LjUgMTYtNDQuNCAzMC4xLTEwOS42IDkuNC0xMTAuNyA5LTExMC42LTI2LjgtMTI4LTE1LjItMTU5IDExLjUtMjAuOCAxNy45LTIzLjcgMzYuNS0yNC4yIDM4LjktNC4yIDIwLjQgNS4yIDQ4LjMgNi43IDY0LjMgMS44IDE5LjMtMi43IDE3LjcgNy43IDk4LjMuNSAxIDQuMSAwIDUuMSAxLjUgMCA4LjQtMy44IDEyLjEtNC4xIDEzLTEuNSA0LjUtMS41IDEwLjUgMCAxNiAyLjMgOC4yIDguMiAzNy4yIDguMiA0Ni45IDAgNDEuOC40IDQ0IDIuNiA0OS40IDMuOSAxMCAxMi41IDkuMSAxNyAxMiAzLjEgMy41LS41IDguNSAxIDEyLjUuNSAyIDMuNiA0IDYuMiA1IDkuMiAzLjYgMjcgLjMgMjkuOS0yLjUgMS42LTEuNS41LTQuNSAzLjEtNSA1LjEgMCAxMC44LS41IDE0LjQtMi41IDUuMS0yLjUgNC4xLTYgMS41LTEwLjUtLjQtLjgtNy0xMy4zLTkuOC0xNi0yLjEtMi01LjEtMy03LjItNC41LTUuOC00LjktMTAuMy0xOS40LTEwLjMtMTkuNS00LjYtMTkuNC0xMC4zLTQ2LjMtNC4xLTY2LjggNC42LTE3LjIgMzkuNS04Ny43IDM5LjYtODcuOCA0LjEtNi41IDE3LTExLjUgMjcuMy03IDYgMS45IDE5LjMgMjIgNjUuNCAzMC45IDQ3LjkgOC43IDk3LjQtMiAxMTIuMi0yIDIuOCAyLTEuOSAxMy0uNSAzOC45IDAgMjYuNC0uNCAxMy43LTQuMSAyOS45LTIuMiA5LjcgMy40IDIzLjItMS41IDQ2LjktMS40IDkuOC05LjkgMzIuNy04LjIgNDMuNC41IDEgMSAyIDEuNSAzLjUuNSA0LjUgMS41IDguNSA0LjYgMTAgNy4zIDMuNiAxMi0zLjUgOS44IDExLjUtLjcgMy4xLTIuNiAxMiAxLjUgMTUgNC40IDMuNyAzMC42IDMuNCAzNi41LjUgMi42LTEuNSAxLjYtNC41IDYuNC03LjQgMS45LS45IDExLjMtLjQgMTEuMy02LjUuMy0xLjgtOS4yLTE5LjktOS4zLTIwLTIuNi0zLjUtOS4yLTQuNS0xMS4zLTgtNi45LTEwLjEtMS43LTUyLjYuNS01OS40IDMtMTEgNS42LTIyLjQgOC43LTMyLjQgMTEtNDIuNSAxMC4zLTUwLjYgMTYuNS02OC4zLjgtMS44IDYuNC0yMy4xIDEwLjMtMjkuOSA5LjMtMTcgMjEuNy0zMi40IDMzLjUtNDcuNCAxOC0yMi45IDM0LTQ2LjkgNTItNjkuOCA2LjEtNyA4LjItMTMuNyAxOC04IDEwLjggNS43IDIxLjYgNyAzMS45IDE3IDE0LjYgMTIuOCAxMC4yIDE4LjIgMTEuOCAyMi45IDEuNSA1IDcuNyAxMC41IDE0LjkgOS41IDEwLjQtMiAxMy0yLjUgMTMuNC0yLjUgMi42LS41IDUuNy01IDcuMi04IDMuMS01LjUgNy4yLTkgNy4yLTE2LjUgMC03LjctLjQtMi44LTIwLjYtNTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyYXZhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1OC40IDBMNyAyOTJoODkuMmw2Mi4yLTExNi4xTDIyMC4xIDI5Mmg4OC41em0xNTAuMiAyOTJsLTQzLjkgODguMi00NC42LTg4LjJoLTY3LjZsMTEyLjIgMjIwIDExMS41LTIyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyaXBlUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTUuMyAxNTQuNmMwLTIyLjMgMTguNi0zMC45IDQ4LjQtMzAuOSA0My40IDAgOTguNSAxMy4zIDE0MS45IDM2LjdWMjYuMUMyOTguMyA3LjIgMjUxLjEgMCAyMDMuOCAwIDg4LjEgMCAxMSA2MC40IDExIDE2MS40YzAgMTU3LjkgMjE2LjggMTMyLjMgMjE2LjggMjAwLjQgMCAyNi40LTIyLjkgMzQuOS01NC43IDM0LjktNDcuMiAwLTEwOC4yLTE5LjUtMTU2LjEtNDUuNXYxMjguNWEzOTYuMDkgMzk2LjA5IDAgMCAwIDE1NiAzMi40YzExOC42IDAgMjAwLjMtNTEgMjAwLjMtMTUzLjYgMC0xNzAuMi0yMTgtMTM5LjctMjE4LTIwMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJpcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY1IDE0NC43bC00My4zIDkuMi0uMiAxNDIuNGMwIDI2LjMgMTkuOCA0My4zIDQ2LjEgNDMuMyAxNC42IDAgMjUuMy0yLjcgMzEuMi01Ljl2LTMzLjhjLTUuNyAyLjMtMzMuNyAxMC41LTMzLjctMTUuN1YyMjFoMzMuN3YtMzcuOGgtMzMuN3ptODkuMSA1MS42bC0yLjctMTMuMUgyMTN2MTUzLjJoNDQuM1YyMzMuM2MxMC41LTEzLjggMjguMi0xMS4xIDMzLjktOS4zdi00MC44Yy02LTIuMS0yNi43LTYtMzcuMSAxMy4xem05Mi4zLTcyLjNsLTQ0LjYgOS41djM2LjJsNDQuNi05LjV6TTQ0LjkgMjI4LjNjMC02LjkgNS44LTkuNiAxNS4xLTkuNyAxMy41IDAgMzAuNyA0LjEgNDQuMiAxMS40di00MS44Yy0xNC43LTUuOC0yOS40LTguMS00NC4xLTguMS0zNiAwLTYwIDE4LjgtNjAgNTAuMiAwIDQ5LjIgNjcuNSA0MS4yIDY3LjUgNjIuNCAwIDguMi03LjEgMTAuOS0xNyAxMC45LTE0LjcgMC0zMy43LTYuMS00OC42LTE0LjJ2NDBjMTYuNSA3LjEgMzMuMiAxMC4xIDQ4LjUgMTAuMSAzNi45IDAgNjIuMy0xNS44IDYyLjMtNDcuOCAwLTUyLjktNjcuOS00My40LTY3LjktNjMuNHpNNjQwIDI2MS42YzAtNDUuNS0yMi04MS40LTY0LjItODEuNHMtNjcuOSAzNS45LTY3LjkgODEuMWMwIDUzLjUgMzAuMyA3OC4yIDczLjUgNzguMiAyMS4yIDAgMzcuMS00LjggNDkuMi0xMS41di0zMy40Yy0xMi4xIDYuMS0yNiA5LjgtNDMuNiA5LjgtMTcuMyAwLTMyLjUtNi4xLTM0LjUtMjYuOWg4Ni45Yy4yLTIuMy42LTExLjYuNi0xNS45em0tODcuOS0xNi44YzAtMjAgMTIuMy0yOC40IDIzLjQtMjguNCAxMC45IDAgMjIuNSA4LjQgMjIuNSAyOC40em0tMTEyLjktNjQuNmMtMTcuNCAwLTI4LjYgOC4yLTM0LjggMTMuOWwtMi4zLTExSDM2M3YyMDQuOGw0NC40LTkuNC4xLTUwLjJjNi40IDQuNyAxNS45IDExLjIgMzEuNCAxMS4yIDMxLjggMCA2MC44LTIzLjIgNjAuOC03OS42LjEtNTEuNi0yOS4zLTc5LjctNjAuNS03OS43em0tMTAuNiAxMjIuNWMtMTAuNCAwLTE2LjYtMy44LTIwLjktOC40bC0uMy02NmM0LjYtNS4xIDExLTguOCAyMS4yLTguOCAxNi4yIDAgMjcuNCAxOC4yIDI3LjQgNDEuNC4xIDIzLjktMTAuOSA0MS44LTI3LjQgNDEuOHptLTEyNi43IDMzLjdoNDQuNlYxODMuMmgtNDQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1YmJlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzYuNSAyOTQuMmw1OC44IDIyLjljOS4xLTM2LjggMjUuNC02MS4xIDU1LTYxLjFjNDkuNCAwIDcxLjQgNjMuNiAxNDIuNCA2My42YzE1LjYgMCAzNS45LTIuOCA1NS4zLTEzLjNWMzY4YzAgNjEuOC01MC40IDExMi0xMTIuMyAxMTJIMGw0MS44LTU2TDAgMzY4bDQxLjctNTZMMCAyNTYuMWw0MS44LTU2TDAgMTQ0LjEgNDEuOCA4OCAwIDMySDMzNS43QzM5Ny42IDMyIDQ0OCA4Mi4zIDQ0OCAxNDQuMXY1MS4zYy05LjIgMzYuMy0yNS45IDYwLjYtNTUgNjAuNmMtNDkuNiAwLTcxLjYtNjMuNS0xNDIuNC02My41Yy0zNS45IDAtOTUuMiAxNC42LTExNC4xIDEwMS42aDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0dWRpb3ZpbmFyaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAuMyAxODcuN2w0LjIgMjh2MjhsLTI1LjEgNDQuMS0zOS44IDc4LjQtNTYuMSA2Ny41LTc5LjEgMzcuOC0xNy43IDI0LjUtNy43IDEyLTkuNiA0czE3LjMtNjMuNiAxOS40LTYzLjZjMi4xIDAgMjAuMy43IDIwLjMuN2w2Ni43LTM4LjYtOTIuNSAyNi4xLTU1LjkgMzYuOC0yMi44IDI4LTYuNiAxLjQgMjAuOC03My42IDYuOS01LjUgMjAuNyAxMi45IDg4LjMtNDUuMiA1Ni44LTUxLjUgMTQuOC02OC40LTEyNS40IDIzLjMgMTUuMi0xOC4yLTE3My40LTUzLjMgODEuOS0xMC41LTE2Ni0xMjIuOUwxMzMuNSAxMDggMzIuMiAwbDI1Mi45IDEyNi42LTMxLjUtMzhMMzc4IDE2MyAyMzQuNyA2NGwxOC43IDM4LjQtNDkuNi0xOC4xTDE1OC4zIDBsMTk0LjYgMTIyTDMxMCA2Ni4ybDEwOCA5Ni40IDEyLTguOS0yMS0xNi40IDQuMi0zNy44TDQ1MSA4OS4xbDI5LjIgMjQuNyAxMS41IDQuMi03IDYuMiA4LjUgMTItMTMuMSA3LjQtMTAuMyAyMC4yIDEwLjUgMjMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1bWJsZXVwb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCAxNzcuNWMtOS44IDAtMTcuOCA4LTE3LjggMTcuOHYxMDYuOWMwIDQwLjktMzMuOSA3My45LTc0LjkgNzMuOS00MS40IDAtNzQuOS0zMy41LTc0LjktNzQuOXYtNDYuNWg1Ny4zdjQ1LjhjMCAxMCA4IDE3LjggMTcuOCAxNy44czE3LjgtNy45IDE3LjgtMTcuOFYyMDAuMWMwLTQwIDM0LjItNzIuMSA3NC43LTcyLjEgNDAuNyAwIDc0LjcgMzIuMyA3NC43IDcyLjZ2MjMuN2wtMzQuMSAxMC4xLTIyLjktMTAuN3YtMjAuNmMuMS05LjYtNy45LTE3LjYtMTcuNy0xNy42em0xNjcuNiAxMjMuNmMwIDQxLjQtMzMuNSA3NC45LTc0LjkgNzQuOS00MS4yIDAtNzQuOS0zMy4yLTc0LjktNzQuMlYyNjNsMjIuOSAxMC43IDM0LjEtMTAuMXY0Ny4xYzAgOS44IDggMTcuNiAxNy44IDE3LjZzMTcuOC03LjkgMTcuOC0xNy42di00OGg1Ny4zYy0uMSA0NS45LS4xIDQ2LjQtLjEgNDYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1bWJsZXVwb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjkgMjY2djY5LjdjMCA2Mi4xLTUwLjMgMTEyLjQtMTEyLjQgMTEyLjQtNjEuOCAwLTExMi40LTQ5LjgtMTEyLjQtMTExLjN2LTcwLjJsMzQuMyAxNiA1MS4xLTE1LjJWMzM4YzAgMTQuNyAxMiAyNi41IDI2LjcgMjYuNVM0MTcgMzUyLjcgNDE3IDMzOHYtNzJoODUuOXptLTIyNC43LTU4LjJsMzQuMyAxNiA1MS4xLTE1LjJWMTczYzAtNjAuNS01MS4xLTEwOS0xMTIuMS0xMDktNjAuOCAwLTExMi4xIDQ4LjItMTEyLjEgMTA4LjJ2MTYyLjRjMCAxNC45LTEyIDI2LjctMjYuNyAyNi43Uzg2IDM0OS41IDg2IDMzNC42VjI2NkgwdjY5LjdDMCAzOTcuNyA1MC4zIDQ0OCAxMTIuNCA0NDhjNjEuNiAwIDExMi40LTQ5LjUgMTEyLjQtMTEwLjhWMTc2LjljMC0xNC43IDEyLTI2LjcgMjYuNy0yNi43czI2LjcgMTIgMjYuNyAyNi43djMwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cGVycG93ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMmMtODMuMyAxMS0xNjYuOCAyMi0yNTAgMzMtOTIgMTIuNS0xNjMuMyA4Ni43LTE2OSAxODAtMy4zIDU1LjUgMTggMTA5LjUgNTcuOCAxNDguMkwwIDQ4MGM4My4zLTExIDE2Ni41LTIyIDI0OS44LTMzIDkxLjgtMTIuNSAxNjMuMy04Ni44IDE2OC43LTE3OS44IDMuNS01NS41LTE4LTEwOS41LTU3LjctMTQ4LjJMNDQ4IDMyem0tNzkuNyAyMzIuM2MtNC4yIDc5LjUtNzQgMTM5LjItMTUyLjggMTM0LjUtNzkuNS00LjctMTQwLjctNzEtMTM2LjMtMTUxIDQuNS03OS4yIDc0LjMtMTM5LjMgMTUzLTEzNC41IDc5LjMgNC43IDE0MC41IDcxIDEzNi4xIDE1MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VwcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyNjIuNWMwIDY0LjEtMTA5IDExNi4xLTI0My41IDExNi4xLTI0LjggMC00OC42LTEuOC03MS4xLTUgNy43LjQgMTUuNS42IDIzLjQuNiAxMzQuNSAwIDI0My41LTU2LjkgMjQzLjUtMTI3LjEgMC0yOS40LTE5LjEtNTYuNC01MS4yLTc4IDYwIDIxLjEgOTguOSA1NS4xIDk4LjkgOTMuNHpNNDcuNyAyMjcuOWMtLjEtNzAuMiAxMDguOC0xMjcuMyAyNDMuMy0xMjcuNiA3LjkgMCAxNS42LjIgMjMuMy41LTIyLjUtMy4yLTQ2LjMtNC45LTcxLTQuOUMxMDguOCA5Ni4zLS4xIDE0OC41IDAgMjEyLjZjLjEgMzguMyAzOS4xIDcyLjMgOTkuMyA5My4zLTMyLjMtMjEuNS01MS41LTQ4LjYtNTEuNi03OHptNjAuMiAzOS45czEwLjUgMTMuMiAyOS4zIDEzLjJjMTcuOSAwIDI4LjQtMTEuNSAyOC40LTI1LjEgMC0yOC00MC4yLTI1LjEtNDAuMi0zOS43IDAtNS40IDUuMy05LjEgMTIuNS05LjEgNS43IDAgMTEuMyAyLjYgMTEuMyA2LjZ2My45aDE0LjJ2LTcuOWMwLTEyLjEtMTUuNC0xNi44LTI1LjQtMTYuOC0xNi41IDAtMjguNSAxMC4yLTI4LjUgMjQuMSAwIDI2LjYgNDAuMiAyNS40IDQwLjIgMzkuOSAwIDYuNi01LjggMTAuMS0xMi4zIDEwLjEtMTEuOSAwLTIwLjctMTAuMS0yMC43LTEwLjFsLTguOCAxMC45em0xMjAuOC03My42djU0LjRjMCAxMS4zLTcuMSAxNy44LTE3LjggMTcuOC0xMC43IDAtMTcuOC02LjUtMTcuOC0xNy43di01NC41aC0xNS44djU1YzAgMTguOSAxMy40IDMxLjkgMzMuNyAzMS45IDIwLjEgMCAzMy40LTEzIDMzLjQtMzEuOXYtNTVoLTE1Ljd6bTM0LjQgODUuNGgxNS44di0yOS41aDE1LjVjMTYgMCAyNy4yLTExLjUgMjcuMi0yOC4xcy0xMS4yLTI3LjgtMjcuMi0yNy44aC0zOS4xdjEzLjRoNy44djcyem0xNS44LTQzdi0yOS4xaDEyLjljOC43IDAgMTMuNyA1LjcgMTMuNyAxNC40IDAgOC45LTUuMSAxNC43LTE0IDE0LjdoLTEyLjZ6bTU3IDQzaDE1Ljh2LTI5LjVoMTUuNWMxNiAwIDI3LjItMTEuNSAyNy4yLTI4LjFzLTExLjItMjcuOC0yNy4yLTI3LjhoLTM5LjF2MTMuNGg3Ljh2NzJ6bTE1LjctNDN2LTI5LjFoMTIuOWM4LjcgMCAxMy43IDUuNyAxMy43IDE0LjQgMCA4LjktNSAxNC43LTE0IDE0LjdoLTEyLjZ6bTU3LjEgMzQuOGMwIDUuOCAyLjQgOC4yIDguMiA4LjJoMzcuNmM1LjggMCA4LjItMi40IDguMi04LjJ2LTEzaC0xNC4zdjUuMmMwIDEuNy0xIDIuNi0yLjYgMi42aC0xOC42Yy0xLjcgMC0yLjYtMS0yLjYtMi42di02MS4yYzAtNS43LTIuNC04LjItOC4yLTguMkg0MDF2MTMuNGg1LjJjMS43IDAgMi42IDEgMi42IDIuNnY2MS4yem02My40IDBjMCA1LjggMi40IDguMiA4LjIgOC4ySDUxOWM1LjcgMCA4LjItMi40IDguMi04LjJ2LTEzaC0xNC4zdjUuMmMwIDEuNy0xIDIuNi0yLjYgMi42aC0xOS43Yy0xLjcgMC0yLjYtMS0yLjYtMi42di0yMC4zaDI3Ljd2LTEzLjRINDg4di0yMi40aDE5LjJjMS43IDAgMi42IDEgMi42IDIuNnY1LjJINTI0di0xM2MwLTUuNy0yLjUtOC4yLTguMi04LjJoLTUxLjZ2MTMuNGg3Ljh2NjMuOXptNTguOS03NnY1LjloMS42di01LjloMi43di0xLjJoLTd2MS4yaDIuN3ptNS43LTEuMnY3LjFoMS41di01LjdsMi4zIDUuN2gxLjNsMi4zLTUuN3Y1LjdoMS41di03LjFoLTIuM2wtMi4xIDUuMS0yLjEtNS4xaC0yLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkzLjEgMTkyLjZBMTAuNCAxMC40IDAgMSAxIDYwNC41IDIxMGExMC40IDEwLjQgMCAxIDEgLTExLjQtMTcuNHptLTQ3LjEgMTIuMmEzOC41IDM4LjUgMCAxIDEgNzUtMTcuNiAzOC41IDM4LjUgMCAxIDEgLTc1IDE3LjZ6TTQzMy43IDMzNi43YzMuMiA0LjYgNS44IDkgNy4zIDEzLjRjMSAzLjEgMi40IDcuMyA1LjUgOC45Yy4yIC4xIC4zIC4yIC41IC4yYzUuNyAyLjEgMjAuMyAxLjcgMjAuMyAxLjdoMjYuOGMyLjMgMCAyMi40IDAgMjEuOS0yLjNjLTIuNC0xMC44LTE0LjktMTIuNy0yNC40LTE4LjNjLTguNy01LjItMTctMTEuMS0yMC44LTIxLjNjLTItNS4yLS44LTE3LjQgMi42LTIxLjhjMi41LTMuMiA2LjEtNS4zIDEwLTYuMmM0LjMtLjkgOC44LS4xIDEzLjEgLjNjNS4zIC41IDEwLjYgMS41IDE1LjkgMi4yYzEwLjMgMS4zIDIwLjYgMS45IDMxIDEuNmMxNy4xLS41IDM0LjItMy4yIDUwLjQtOC43YzExLjMtMy44IDIyLjQtOC45IDMyLTE2LjFjMTAuOS04LjEgOC4xLTcuNC0zLTYuMmMtMTMuMyAxLjQtMjYuNiAxLjYtMzkuOSAuOGMtMTIuNC0uNy0yNC43LTIuMi0zNS45LTcuOWMtOC44LTQuNi0xNi40LTkuMS0yMy40LTE2LjJjLTEtMS4xLTEuNy00LjIgLjItNi4yYzEuOS0xLjkgNS44LS44IDcgLjJjMTIuMiAxMC4yIDMwLjUgMTguNiA0OS4zIDE5LjVjMTAuMiAuNSAyMC4xIC43IDMwLjQgLjNjNS4xLS4yIDEyLjgtLjIgMTcuOS0uM2MyLjYgMCA5LjggLjcgMTEuMi0yLjFjLjQtLjggLjQtMS44IC4zLTIuN2MtMS41LTQwLjktNC41LTg2LjktNDcuMy0xMDYuNWMtMzEuOS0xNC42LTc5LjctMzcuMi05OS45LTQ2LjZjLTQuNy0yLjItMTAuMiAxLjMtMTAuMiA2LjVjMCAxMy42IC43IDMzLjMgLjcgNTEuMWMtOS43LTkuOS0yNi0xNi4xLTM4LjQtMjEuOGMtMTQuMS02LjUtMjguNy0xMi00My41LTE2LjZjLTI5LjgtOS4yLTYwLjctMTQuOS05MS43LTE4Yy0zNS4yLTMuNS03MS0xLjgtMTA1LjcgNS4zQzE0NyAxMTUuMSA5MC44IDE0Mi42IDQ4LjIgMTgyLjdDMjIuMSAyMDcuMyAxLjYgMjQyLjQgLjIgMjc3LjljLTIgNTAuMyAxMi4xIDc3LjMgMzggMTA1LjJjNDEuMyA0NC40IDEzMC4yIDUwLjYgMTY2LjItMmMxNi4yLTIzLjcgMTkuNy01NS44IDgtODJjLTExLjgtMjYuMi0zOC44LTQ1LjEtNjcuNC00NmMtMjIuMi0uNy00NS45IDEwLjYtNTQuNSAzMS4xYy02LjUgMTUuNy0yLjggMzUuMSA5IDQ3LjNjNC42IDQuOCAxMC45IDguNyAxNy43IDcuMWM0LS45IDcuNC0zLjkgOC04Yy45LTYtNC40LTkuOS03LjYtMTQuNWMtNS44LTguMy00LjctMjAuOSAyLjctMjcuOWM2LjItNiAxNS4zLTcuOCAyMy45LTcuN2M4IDAgMTYuMiAxLjQgMjMuMSA1LjVjOS43IDUuNyAxNi4yIDE2LjIgMTguNCAyNy4yYzYuNyAzMy0yMC4yIDU5LjktNTYuNiA2MmMtMTguNiAxLjEtMzcuNi0zLjgtNTIuMS0xNS41QzQwLjEgMzI5LjkgMzEuMSAyNjkuNCA3My4yIDIzN2M0MC0zMC43IDkwLjQtMjIuOCAxMjAuMi02LjhjMjMuOCAxMi44IDQxLjUgMzMuNiA1NSA1Ni43YzYuNyAxMS42IDEyLjUgMjMuNyAxNy44IDM2LjFjNS4xIDExLjggOS45IDIzLjggMjAuMiAzMi41YzYuOCA1LjggMTUuMiA1LjYgMjQuMSA1LjZoNTAuOGM2LjkgMCA1LjItNC42IDIuMi03LjdjLTYuNy02LjktMTYuNC04LjQtMjUuNC0xMC45Yy0yMC41LTUuNi0xOC40LTMyLjgtMTIuNy0zMi44YzE4LjMgMCAxOC45IC42IDM0LjkgLjNjMjMuMi0uMyAzMC4yLTEuNyA0OC4zIDVjOS43IDMuNiAxOSAxMy4xIDI1LjEgMjEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDE1Ni4wOWMwLTQuNTEtLjA4LTktLjItMTMuNTJhMTk2LjMxIDE5Ni4zMSAwIDAgMC0yLjU4LTI5LjQyIDk5LjYyIDk5LjYyIDAgMCAwLTkuMjItMjhBOTQuMDggOTQuMDggMCAwIDAgMzk0Ljg0IDQ0YTk5LjE3IDk5LjE3IDAgMCAwLTI4LTkuMjIgMTk1IDE5NSAwIDAgMC0yOS40My0yLjU5Yy00LjUxLS4xMi05LS4xNy0xMy41Mi0uMkgxMjQuMTRjLTQuNTEgMC05IC4wOC0xMy41Mi4yLTIuNDUuMDctNC45MS4xNS03LjM3LjI3YTE3MS42OCAxNzEuNjggMCAwIDAtMjIuMDYgMi4zMiAxMDMuMDYgMTAzLjA2IDAgMCAwLTIxLjIxIDYuMXEtMy40NiAxLjQ1LTYuODEgMy4xMmE5NC42NiA5NC42NiAwIDAgMC0xOC4zOSAxMi4zMmMtMS44OCAxLjYxLTMuNjkgMy4yOC01LjQzIDVBOTMuODYgOTMuODYgMCAwIDAgMTIgODUuMTdhOTkuNDUgOTkuNDUgMCAwIDAtOS4yMiAyOCAxOTYuMzEgMTk2LjMxIDAgMCAwLTIuNTQgMjkuNGMtLjEzIDQuNTEtLjE4IDktLjIxIDEzLjUydjE5OS44M2MwIDQuNTEuMDggOSAuMjEgMTMuNTFhMTk2LjA4IDE5Ni4wOCAwIDAgMCAyLjU4IDI5LjQyIDk5LjMgOTkuMyAwIDAgMCA5LjIyIDI4QTk0LjMxIDk0LjMxIDAgMCAwIDUzLjE3IDQ2OGE5OS40NyA5OS40NyAwIDAgMCAyOCA5LjIxIDE5NSAxOTUgMCAwIDAgMjkuNDMgMi41OWM0LjUuMTIgOSAuMTcgMTMuNTIuMkgzMjMuOTFjNC41MSAwIDktLjA4IDEzLjUyLS4yYTE5Ni41OSAxOTYuNTkgMCAwIDAgMjkuNDQtMi41OSA5OS41NyA5OS41NyAwIDAgMCAyOC05LjIxQTk0LjIyIDk0LjIyIDAgMCAwIDQzNiA0MjYuODRhOTkuMyA5OS4zIDAgMCAwIDkuMjItMjggMTk0Ljc5IDE5NC43OSAwIDAgMCAyLjU5LTI5LjQyYy4xMi00LjUuMTctOSAuMi0xMy41MVYxNzIuMTRjLS4wMS01LjM1LS4wMS0xMC43LS4wMS0xNi4wNXptLTY5Ljg4IDI0MWMtMjAtMzguOTMtNTcuMjMtMjkuMjctNzYuMzEtMTkuNDctMS43MiAxLTMuNDggMi01LjI1IDNsLS40Mi4yNWMtMzkuNSAyMS05Mi41MyAyMi41NC0xNDUuODUtLjM4QTIzNC42NCAyMzQuNjQgMCAwIDEgNDUgMjkwLjEyYTIzMC42MyAyMzAuNjMgMCAwIDAgMzkuMTcgMjMuMzdjNTYuMzYgMjYuNCAxMTMgMjQuNDkgMTUzIDAtNTctNDMuODUtMTA0LjYtMTAxLTE0MS4wOS0xNDcuMjJhMTk3LjA5IDE5Ny4wOSAwIDAgMS0xOC43OC0yNS45YzQzLjcgNDAgMTEyLjcgOTAuMjIgMTM3LjQ4IDEwNC4xMi01Mi41Ny01NS40OS05OC44OS0xMjMuOTQtOTYuNzItMTIxLjc0IDgyLjc5IDgzLjQyIDE1OS4xOCAxMzAuNTkgMTU5LjE4IDEzMC41OSAyLjg4IDEuNTggNSAyLjg1IDYuNzMgNGExMjcuNDQgMTI3LjQ0IDAgMCAwIDQuMTYtMTIuNDdjMTMuMjItNDguMzMtMS42Ni0xMDMuNTgtMzUuMzEtMTQ5LjJDMzI5LjYxIDE0MS43NSAzNzUgMjI5LjM0IDM1Ni40IDMwMy40MmMtLjQ0IDEuNzMtLjk1IDMuNC0xLjQ0IDUuMDkgMzguNTIgNDcuNCAyOC4wNCA5OC4xNyAyMy4xMyA4OC41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ltZm9ueSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xMzMuNzQgMTQzLjU0Yy0xMS40Ny40MS0xOS40LTYuNDUtMTkuNzctMTYuODctLjI3LTkuMTggNi42OC0xMy40NCA2LjUzLTE4Ljg1LS4yMy02LjU1LTEwLjE2LTYuODItMTIuODctNi42Ny0zOS43OCAxLjI5LTQ4LjU5IDU3LTU4Ljg5IDExMy44NSAyMS40MyAzLjE1IDM2LjY1LS43MiA0NS4xNC02LjIyIDEyLTcuNzUtMy4zNC0xNS43Mi0xLjQyLTI0LjU2IDQtMTguMTYgMzIuNTUtMTkgMzIgNS4zLS4zNiAxNy44Ni0yNS45MiA0MS44MS03Ny42IDM1LjctMTAuNzYgNTkuNTItMTguMzUgMTE1LTU4LjIgMTYxLjcyLTI5IDM0LjQ2LTU4LjQgMzkuODItNzEuNTggNDAuMjYtMjQuNjUuODUtNDEtMTIuMzEtNDEuNTgtMjkuODQtLjU2LTE3IDE0LjQ1LTI2LjI2IDI0LjMxLTI2LjU5IDIxLjg5LS43NSAzMC4xMiAyNS42NyAxNC44OCAzNC0xMi4wOSA5LjcxLjExIDEyLjYxIDIuMDUgMTIuNTUgMTAuNDItLjM2IDE3LjM0LTUuNTEgMjIuMTgtOSAyNC0yMCAzMy4yNC01NC44NiA0NS4zNS0xMTguMzUgOC4xOS00OS42NiAxNy03OCAxOC4yMy04Mi0xNi45My0xMi43NS0yNy4wOC0yOC41NS00OS44NS0zNC43Mi0xNS42MS00LjIzLTI1LjEyLS42My0zMS44MSA3LjgzLTcuOTIgMTAtNS4yOSAyMyAyLjM3IDMwLjdsMTIuNjMgMTRjMTUuNTEgMTcuOTMgMjQgMzEuODcgMjAuOCA1MC42Mi01LjA2IDI5LjkzLTQwLjcyIDUyLjktODIuODggMzkuOTQtMzYtMTEuMTEtNDIuNy0zNi41Ni0zOC4zOC01MC42MiA3LjUxLTI0LjE1IDQyLjM2LTExLjcyIDM0LjYyIDEzLjYtMi43OSA4LjYtNC45MiA4LjY4LTYuMjggMTMuMDctNC41NiAxNC43NyA0MS44NSAyOC40IDUxLTEuMzkgNC40Ny0xNC41Mi01LjMtMjEuNzEtMjIuMjUtMzkuODUtMjguNDctMzEuNzUtMTYtNjUuNDkgMi45NS03OS42N0MyMDQuMjMgMTQwLjEzIDI1MS45NCAxOTcgMjYyIDIwNS4yOWMzNy4xNy0xMDkgMTAwLjUzLTEwNS40NiAxMDIuNDMtMTA1LjUzIDI1LjE2LS44MSA0NC4xOSAxMC41OSA0NC44MyAyOC42NS4yNSA3LjY5LTQuMTcgMjIuNTktMTkuNTIgMjMuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlYW1zcGVhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuOCAzNy4yYy0zMi4yIDM4LjEtNTYuMSA4Mi42LTY5LjkgMTMwLjVjMCAuMi0uMSAuMy0uMSAuNUM0My41IDE4NC40IDE2IDIyMyAxNiAyNjhjMCA1OS42IDQ4LjQgMTA4IDEwOCAxMDhzMTA4LTQ4LjQgMTA4LTEwOGMwLTUzLjUtMzguOS05Ny45LTkwLTEwNi41YzE1LjctNDEuOCA0MC40LTc5LjYgNzIuMy0xMTAuN2MxLjgtMS42IDQtMi42IDYuMy0zLjFjMzcuMi0xMS41IDc2LjctMTMuMyAxMTQuOC01LjJDNDU0LjcgNjcuNiA1MzQgMTgwLjcgNTE3LjEgMzAxLjNjLTguNCA2Mi42LTM4LjYgMTEyLjctODcuNyAxNTEuNGMtNTAuMSAzOS43LTEwNy41IDU0LjMtMTcwLjIgNTIuMmwtMjQtMWMxMi40IDIuOCAyNSA0LjkgMzcuNiA2LjNjNDAuNyA0LjIgODEuNCAyLjEgMTIwLjEtMTIuNWM5NC0zNS41IDE0OS4zLTEwMi4zIDE2Mi45LTIwMi41YzQuOC01Mi42LTUuOC0xMDUuNC0zMC44LTE1MkM0NTQuNiAxMS4zIDI5MC44LTM4LjQgMTU5IDMyYy0yLjQgMS40LTQuNSAzLjEtNi4zIDUuMnpNMzA5LjQgNDMzLjljLTIuMSAxMS41LTQuMiAyMS45LTE0LjYgMzEuM2M1My4yLTEgMTIzLjItMjkuMiAxNjEuOC05Ny4xYzM5LjctNjkuOSAzNy42LTEzOS45LTYuMy0yMDcuOEM0MTMuOCAxMDUgMzYwLjUgNzcuOSAyOTMuNyA3My43YzEuNSAyLjMgMy4yIDQuNCA1LjIgNi4zbDUuMiA2LjNjMjUuMSAzMS4zIDM3LjYgNjcuOSA0Mi44IDEwNy41YzIuMSAxNS43LTEgMzAuMy0xMy42IDQxLjhjLTQuMiAzLjEtNS4yIDYuMy00LjIgMTAuNGw3LjMgMTcuN0wzNjUuNyAzMThjNS4yIDExLjUgNC4yIDE5LjgtNi4zIDI4LjJjLTMuMiAyLjUtNi43IDQuNi0xMC40IDYuM2wtMTguOCA4LjQgMy4xIDEzLjZjMy4xIDYuMyAxIDEyLjUtMy4xIDE3LjdjLTIuNSAyLjQtMy44IDUuOS0zLjEgOS40YzIuMSAxMS41LTIuMSAxOS44LTEyLjUgMjUuMWMtMi4xIDEtNC4yIDUuMi01LjIgNy4zem0tMTMzLjYtMy4xYzE2LjcgMTEuNSAzNC41IDIwLjkgNTMuMiAyNi4xYzI0IDUuMiA0MS44LTYuMyA0NC45LTMwLjNjMS04LjQgNS4yLTE0LjYgMTIuNS0xNy43YzcuMy00LjIgOC40LTcuMyAyLjEtMTMuNmwtOS40LTguNCAxMy42LTQuMmM2LjMtMi4xIDcuMy01LjIgNS4yLTExLjVjLTEuNC0zLTIuNC02LjItMy4xLTkuNGMtMy4xLTE0LjYtMi4xLTE1LjcgMTEuNS0xOC44YzguNC0zLjEgMTUuNy02LjMgMjEuOS0xMi41YzMuMS0yLjEgMy4xLTQuMiAxLTguNGwtMTYuNy0zMC4zYy0xLTEuOS0yLjEtMy44LTMuMS01LjdjLTYuNC0xMS43LTEzLTIzLjYtMTUuNy0zNy4xYy0yLjEtOS40LTEtMTcuNyA4LjQtMjRjNS4yLTQuMiA4LjQtOS40IDguNC0xNi43Yy0uNC0xMC4xLTEuNS0yMC4zLTMuMS0zMC4zYy02LjMtMzcuNi0yMy02OC45LTUxLjItOTVjLTUuMi00LjItOS40LTYuMy0xNi43LTQuMkwyMDMuOSA5MS41YzIgMS4yIDQgMi40IDYgMy42bDAgMGM2LjMgMy43IDEyLjIgNy4zIDE3IDEyLjFjMzAuMyAyNi4xIDQxLjggNjEuNiA0NS45IDEwMC4yYzEgOC40IDAgMTYuNy03LjMgMjEuOWMtOC40IDUuMi0xMC40IDEyLjUtNy4zIDIwLjljNC45IDEzLjIgMTAuNCAyNiAxNi43IDM4LjZMMjkxLjYgMzE4Yy02LjMgOC40LTEzLjYgMTEuNS0yMS45IDE0LjZjLTEyLjUgMy4xLTE0LjYgNy4zLTEwLjQgMjAuOWMuNiAxLjUgMS40IDIuOCAyLjEgNC4yYzIuMSA1LjIgMSA4LjQtNC4yIDEwLjRsLTEyLjUgMy4xIDUuMiA0LjIgNC4yIDQuMmM0LjIgNS4yIDQuMiA4LjQtMi4xIDEwLjRjLTcuMyA0LjItMTEuNSA5LjQtMTEuNSAxNy43YzAgMTIuNS03LjMgMTkuOC0xOC44IDI0Yy0zLjggMS03LjYgMS41LTExLjUgMWwtMzQuNS0yLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbGVncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCw4QzExMS4wMzMsOCwwLDExOS4wMzMsMCwyNTZTMTExLjAzMyw1MDQsMjQ4LDUwNCw0OTYsMzkyLjk2Nyw0OTYsMjU2LDM4NC45NjcsOCwyNDgsOFpNMzYyLjk1MiwxNzYuNjZjLTMuNzMyLDM5LjIxNS0xOS44ODEsMTM0LjM3OC0yOC4xLDE3OC4zLTMuNDc2LDE4LjU4NC0xMC4zMjIsMjQuODE2LTE2Ljk0OCwyNS40MjUtMTQuNCwxLjMyNi0yNS4zMzgtOS41MTctMzkuMjg3LTE4LjY2MS0yMS44MjctMTQuMzA4LTM0LjE1OC0yMy4yMTUtNTUuMzQ2LTM3LjE3Ny0yNC40ODUtMTYuMTM1LTguNjEyLTI1LDUuMzQyLTM5LjUsMy42NTItMy43OTMsNjcuMTA3LTYxLjUxLDY4LjMzNS02Ni43NDYuMTUzLS42NTUuMy0zLjEtMS4xNTQtNC4zODRzLTMuNTktLjg0OS01LjEzNS0uNXEtMy4yODMuNzQ2LTEwNC42MDgsNjkuMTQyLTE0Ljg0NSwxMC4xOTQtMjYuODk0LDkuOTM0Yy04Ljg1NS0uMTkxLTI1Ljg4OC01LjAwNi0zOC41NTEtOS4xMjMtMTUuNTMxLTUuMDQ4LTI3Ljg3NS03LjcxNy0yNi44LTE2LjI5MXEuODQtNi43LDE4LjQ1LTEzLjcsMTA4LjQ0Ni00Ny4yNDgsMTQ0LjYyOC02Mi4zYzY4Ljg3Mi0yOC42NDcsODMuMTgzLTMzLjYyMyw5Mi41MTEtMzMuNzg5LDIuMDUyLS4wMzQsNi42MzkuNDc0LDkuNjEsMi44ODVhMTAuNDUyLDEwLjQ1MiwwLDAsMSwzLjUzLDYuNzE2QTQzLjc2NSw0My43NjUsMCwwLDEsMzYyLjk1MiwxNzYuNjZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbmNlbnRXZWlibyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Mi4zIDQ5NS44YzEuNCAxOS45LTI3LjYgMjIuMi0yOS43IDIuOUMzMSAzNjguOCA3My43IDI1OS4yIDE0NCAxODUuNWMtMTUuNi0zNCA5LjItNzcuMSA1MC42LTc3LjEgMzAuMyAwIDU1LjEgMjQuNiA1NS4xIDU1LjEgMCA0NC00OS41IDcwLjgtODYuOSA0NS4xLTY1LjcgNzEuMy0xMDEuNCAxNjkuOC05MC41IDI4Ny4yek0xOTIgLjFDNjYuMS4xLTEyLjMgMTM0LjMgNDMuNyAyNDIuNCA1Mi40IDI1OS44IDc5IDI0Ni45IDcwIDIyOSAyMy43IDEzNi40IDkxIDI5LjggMTkyIDI5LjhjNzUuNCAwIDEzNi45IDYxLjQgMTM2LjkgMTM2LjkgMCA5MC44LTg2LjkgMTUzLjktMTY3LjcgMTMzLjEtMTkuMS00LjEtMjUuNiAyNC40LTYuNiAyOS4xIDExMC43IDIzLjIgMjA0LTYwIDIwNC0xNjIuM0MzNTguNiA3NC43IDI4NCAuMSAxOTIgLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZVJlZFlldGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4LjIzIDI0MS43bDIwLjcgNy4xYy05LjYtMjMuOS0yMy45LTM3LTMxLjctNDQuOGw3LjEtMTguMmMuMiAwIDEyLjMtMjcuOC0yLjUtMzAuNy0uNi0xMS4zLTYuNi0yNy0xOC40LTI3LTcuNi0xMC42LTE3LjctMTIuMy0zMC43LTUuOWExMjIuMiAxMjIuMiAwIDAgMC0yNS4zIDE2LjVjLTUuMy02LjQtMyAuNC0zLTI5LjgtMzcuMS0yNC4zLTQ1LjQtMTEuNy03NC44IDNsLjUuNWEyMzkuMzYgMjM5LjM2IDAgMCAwLTY4LjQtMTMuM2MtNS41LTguNy0xOC42LTE5LjEtMjUuMS0yNS4xbDI0LjggNy4xYy01LjUtNS41LTI2LjgtMTIuOS0zNC4yLTE1LjIgMTguMi00LjEgMjkuOC0yMC44IDQyLjUtMzMtMzQuOS0xMC4xLTY3LjktNS45LTk3LjkgMTEuOGwxMi00NC4yTDE4MiAwYy0zMS42IDI0LjItMzMgNDEuOS0zMy43IDQ1LjUtLjktMi40LTYuMy0xOS42LTE1LjItMjdhMzUuMTIgMzUuMTIgMCAwIDAtLjUgMjUuM2MzIDguNCA1LjkgMTQuOCA4LjQgMTguOS0xNi0zLjMtMjguMy00LjktNDkuMiAwaC0zLjdsMzMgMTQuM2ExOTQuMjYgMTk0LjI2IDAgMCAwLTQ2LjcgNjcuNGwtMS43IDguNCAxLjcgMS43IDcuNi00LjdjLTMuMyAxMS42LTUuMyAxOS40LTYuNiAyNS44YTIwMC4xOCAyMDAuMTggMCAwIDAtMjcuOCA0MC4zYy0xNSAxLTMxLjggMTAuOC00MC4zIDE0LjNsMyAzLjQgMjguOCAxYy0uNSAxLS43IDIuMi0xLjIgMy4yLTcuMyA2LjQtMzkuOCAzNy43LTMzIDgwLjdsMjAuMi0yMi40Yy41IDEuNy43IDMuNCAxLjIgNS4yIDAgMjUuNS40IDg5LjYgNjQuOSAxNTAuNSA0My42IDQwIDk2IDYwLjIgMTU3LjUgNjAuMiAxMjEuNyAwIDIyMy04Ny4zIDIyMy0yMTEuNSA2LjgtOS43LTEuMiAzIDE2LjctMjUuMWwxMyAxNC4zIDIuNS0uNUExODEuODQgMTgxLjg0IDAgMCAwIDQ5NSAyNTVhNDQuNzQgNDQuNzQgMCAwIDAtNi44LTEzLjN6TTM5OCAxMTEuMmwtLjUgMjEuOWM1LjUgMTguMSAxNi45IDE3LjIgMjIuNCAxNy4ybC0zLjQtNC43IDIyLjQtNS40YTI0Mi40NCAyNDIuNDQgMCAwIDEtMjcgMGMxMi44LTIuMSAzMy4zLTI5IDQzLTExLjMgMy40IDcuNiA2LjQgMTcuMiA5LjMgMjcuOGwxLjctNS45YTU2LjM4IDU2LjM4IDAgMCAxLTEuNy0xNS4yYzUuNC41IDguOCAzLjQgOS4zIDEwLjEuNSA2LjQgMS43IDE0LjggMy40IDI1LjNsNC43LTExLjNjNC42IDAgNC41LTMuNi0yLjUgMjAuNy0yMC45LTguNy0zNS4xLTguNC00Ni41LTguNGwxOC4yLTE2Yy0yNS4zIDguMi0zMyAxMC44LTU0LjggMjAuOS0xLjEtNS40LTUtMTMuNS0xNi0xOS45LTMuMiAzLjgtMi44LjktLjcgMTQuOGgtMi41YTYyLjMyIDYyLjMyIDAgMCAwLTguNC0yMy4xbDQuMi0zLjRjOC40LTcuMSAxMS44LTE0LjMgMTAuNi0yMS45LS41LTYuNC01LjQtMTMuNS0xMy41LTIwLjcgNS42LTMuNCAxNS4yLS40IDI4LjMgOC41em0tMzkuNi0xMC4xYzIuNyAxLjkgMTEuNCA1LjQgMTguOSAxNy4yIDQuMiA4LjQgNCA5LjggMy40IDExLjEtLjUgMi40LS41IDQuMy0zIDcuMS0xLjcgMi41LTUuNCA0LjctMTEuOCA3LjYtNy42LTEzLTE2LjUtMjMuNi0yNy44LTMxLjJ6TTkxIDE0My4xbDEuMi0xLjdjMS4yLTIuOSA0LjItNy42IDkuMy0xNS4ybDIuNS0zLjQtMTMgMTIuMyA1LjQtNC43LTEwLjEgOS4zLTQuMiAxLjJjMTIuMy0yNC4xIDIzLjEtNDEuMyAzMi41LTUwLjIgOS4zLTkuMyAxNi0xNiAyMC4yLTE5LjRsLTYuNCAxLjJjLTExLjMtNC4yLTE5LjQtNy4xLTI0LjgtOC40IDIuNS0uNSAzLjctLjUgMy4yLS41IDEwLjMgMCAxNy41LjUgMjAuOSAxLjJhNTIuMzUgNTIuMzUgMCAwIDAgMTYgMi41bC41LTEuNy04LjQtMzUuOCAxMy41IDI5YTQyLjg5IDQyLjg5IDAgMCAwIDUuOS0xNC4zYzEuNy02LjQgNS40LTEzIDEwLjEtMTkuNHM3LjYtMTAuNiA5LjMtMTEuM2EyMzQuNjggMjM0LjY4IDAgMCAwLTYuNCAyNS4zbC0xLjcgNy4xLS41IDQuNyAyLjUgMi41QzE5MC40IDM5LjkgMjE0IDM0IDIzOS44IDM0LjVsMjEuMS41Yy0xMS44IDEzLjUtMjcuOCAyMS45LTQ4LjUgMjQuOGEyMDEuMjYgMjAxLjI2IDAgMCAxLTIzLjQgMi45bC0uMi0uNS0yLjUtMS4yYTIwLjc1IDIwLjc1IDAgMCAwLTE0IDJjLTIuNS0uMi00LjktLjUtNy4xLS43bC0yLjUgMS43LjUgMS4yYzIgLjIgMy45LjUgNi4yLjdsLTIgMy40IDMuNC0uNS0xMC42IDExLjNjLTQuMiAzLTUuNCA2LjQtNC4yIDkuM2w1LjQtMy40aDEuMmEzOS40IDM5LjQgMCAwIDEgMjUuMy0xNS4ydi0zYzYuNC41IDEzIDEgMTkuNCAxLjIgNi40IDAgOC40LjUgNS40IDEuMmExODkuNiAxODkuNiAwIDAgMSAyMC43IDEzLjVjMTMuNSAxMC4xIDIzLjYgMjEuOSAzMCAzNS40IDguOCAxOC4yIDEzLjUgMzcuMSAxMy41IDU2LjZhMTQxLjEzIDE0MS4xMyAwIDAgMS0zIDI4LjMgMjA5LjkxIDIwOS45MSAwIDAgMS0xNiA0NmwyLjUuNWMxOC4yLTE5LjcgNDEuOS0xNiA0OS4yLTE2bC02LjQgNS45IDIyLjQgMTcuNy0xLjcgMzAuN2MtNS40LTEyLjMtMTYuNS0yMS4xLTMzLTI3LjggMTYuNSAxNC44IDIzLjYgMjEuMSAyMS45IDIwLjItNC44LTIuOC0zLjUtMS45LTEwLjgtMy43IDQuMSA0LjEgMTcuNSAxOC44IDE4LjIgMjAuN2wuMi4yLS4yLjJjMCAxLjggMS42LTEuMi0xNCAyMi45LTc1LjItMTUuMy0xMDYuMjctNDIuNy0xNDEuMi02My4ybDExLjggMS4yYy0xMS44LTE4LjUtMTUuNi0xNy43LTM4LjQtMjYuMUwxNDkgMjI1Yy04LjgtMy0xOC4yLTMtMjguMy41bDcuNi0xMC42LTEuMi0xLjdjLTE0LjkgNC4zLTE5LjggOS4yLTIyLjYgMTEuMy0xLjEtNS41LTIuOC0xMi40LTEyLjMtMjguOGwtMS4yIDI3LTEzLjItNWMxLjUtMjUuMiA1LjQtNTAuNSAxMy4yLTc0LjZ6bTI3Ni41IDMzMGMtNDkuOSAyNS01Ni4xIDIyLjQtNTkgMjMuOS0yOS44LTExLjgtNTAuOS0zMS43LTYzLjUtNTguOGwzMCAxNi41Yy05LjgtOS4zLTE4LjMtMTYuNS0zOC40LTQ0LjNsMTEuOCAyMy4xLTE3LjctNy42YzE0LjIgMjEuMSAyMy41IDUxLjcgNjYuNiA3My41LTEyMC44IDI0LjItMTk5LTcyLjEtMjAwLjktNzQuM2EyNjIuNTcgMjYyLjU3IDAgMCAwIDM1LjQgMjQuOGMzLjQgMS43IDcuMSAyLjUgMTAuMSAxLjJsLTE2LTIwLjdjOS4yIDQuMiA5LjUgNC41IDY5LjEgMjktNDIuNS0yMC43LTczLjgtNDAuOC05My4yLTYwLjItLjUgNi40LTEuMiAxMC4xLTEuMiAxMC4xYTgwLjI1IDgwLjI1IDAgMCAxIDIwLjcgMjYuNmMtMzktMTguOS01Ny42LTQ3LjYtNzEuMy04Mi42IDQ5LjkgNTUuMSAxMTguOSAzNy41IDEyMC41IDM3LjEgMzQuOCAxNi40IDY5LjkgMjMuNiAxMTMuOSAxMC42IDMuMyAwIDIwLjMgMTcgMjUuMyAzOS4xbDQuMi0zLTIuNS0yMy42YzkgOSAyNC45IDIyLjYgMzQuNCAxMy0xNS42LTUuMy0yMy41LTkuNS0yOS41LTMxLjcgNC42IDQuMiA3LjYgOSAyNy44IDE1bDEuMi0xLjItMTAuNS0xNC4yYzExLjctNC44LTMuNSAxIDMyLTEwLjggNC4zIDM0LjMgOSA0OS4yLjcgODkuNXptMTE1LjMtMjE0LjRsLTIuNS41IDMgOS4zYy0zLjUgNS45LTIzLjcgNDQuMy03MS42IDc5LjctMzkuNSAyOS44LTc2LjYgMzkuMS04MC45IDQwLjNsLTcuNi03LjEtMS4yIDMgMTQuMyAxNi03LjEtNC43IDMuNCA0LjJoLTEuMmwtMjEuOS0xMy41IDkuMyAyNi42LTE5LTI3LjktMS4yIDIuNSA3LjYgMjljLTYuMS04LjItMjEtMzIuNi01Ni44LTM5LjZsMzIuNSAyMS4yYTIxNC44MiAyMTQuODIgMCAwIDEtOTMuMi02LjRjLTQuMi0xLjItOC45LTIuNS0xMy41LTQuMmwxLjItMy00NC44LTIyLjQgMjYuMSAyMi40Yy01Ny43IDkuMS0xMTMtMjUuNC0xMjYuNC04My40bC0yLjUtMTYuNC0yMi4yNyAyMi4zYzE5LjUtNTcuNSAyNS42LTU3LjkgNTEuNC03MC4xLTkuMS01LjMtMS42LTMuMy0zOC40LTkuMyAxNS44LTUuOCAzMy0xNS40IDczIDUuMmExOC41IDE4LjUgMCAwIDEgMy43LTEuN2MuNi0zLjIuNC0uOCAxLTExLjggMy45IDEwIDMuNiA4LjcgMyA5LjNsMS43LjVjMTIuNy02LjUgOC45LTQuNSAxNy04LjlsLTUuNCAxMy41IDIyLjMtNS44LTguNCA4LjQgMi41IDIuNWM0LjUtMS44IDMwLjMgMy40IDQwLjggMTZsLTIzLjYtMi41YzM5LjQgMjMgNTEuNSA1NCA1NS44IDY5LjZsMS43LTEuMmMtMi44LTIyLjMtMTIuNC0zMy45LTE2LTQwLjEgNC4yIDUgMzkuMiAzNC42IDExMC40IDQ2LTExLjMtLjUtMjMuMSA1LjQtMzQuOSAxOC45bDQ2LjctMjAuMi05LjMgMjEuOWM3LjYtMTAuMSAxNC44LTIzLjYgMjEuMi0zOS42di0uNWwxLjItMy0xLjIgMTZjMTMuNS00MS44IDI1LjMtNzguNSAzNS40LTEwOS43bDEzLjUtMjcuOHYtMmwtNS40LTQuMmgxMC4xbDUuOSA0LjIgMi41LTEuMi0zLjQtMTYgMTIuMyAxOC45IDQxLjgtMjAuMi0xNC44IDEzIC41IDIuOSAxNy43LS41YTE4NCAxODQgMCAwIDEgMzMgNC4ybC0yMy42IDIuNS0xLjIgMyAyNi42IDIzLjFhMjU0LjIxIDI1NC4yMSAwIDAgMSAyNyAzMmMtMTEuMi0zLjMtMTAuMy0zLjQtMjEuMi0zLjRsMTIuMyAzMi41em0tNi4xLTcxLjNsLTMuOSAxMy0xNC4zLTExLjh6bS0yNTQuOCA3LjFjMS43IDEwLjYgNC43IDE3LjcgOC44IDIxLjktOS4zIDYuNi0yNy41IDEzLjktNDYuNSAxNmwuNSAxLjJhNTAuMjIgNTAuMjIgMCAwIDAgMjQuOC0yLjVsLTcuMSAxM2M0LjItMS43IDEwLjEtNy4xIDE3LjctMTQuOCAxMS45LTUuNSAxMi43LTUuMSAyMC4yLTE2LTEyLjctNi40LTE1LjctMTMuNy0xOC40LTE4Ljh6bTMuNy0xMDIuM2MtNi40LTMuNC0xMC42IDMtMTIuMyAxOC45czIuNSAyOS41IDExLjggMzkuNiAxOC4yIDEwLjYgMjYuMSAzIDMuNC0yMy42LTExLjMtNDcuN2EzOS41NyAzOS41NyAwIDAgMC0xNC4yNy0xMy44em0tNC43IDQ2LjNjNS40IDIuMiAxMC41IDEuOSAxMi4zLTEwLjZ2LTQuN2wtMS4yLjVjLTQuMy0zLjEtMi41LTQuNS0xLjctNi4ybC41LS41Yy0uOS0xLjItNS04LjEtMTIuNSA0LjctLjUtMTMuNS41LTIxLjkgMy0yNC44IDEuMi0yLjUgNC43LTEuMiAxMS4zIDQuMiA2LjQgNS40IDExLjMgMTYgMTUuMiAzMi41IDYuNSAyOC0xOS44IDI2LjItMjYuOSA0Ljl6bS00NS01LjVjMS42LjMgOS4zLTEuMSA5LjMtMTQuOGgtLjVjLTUuNC0xLjEtMi4yLTUuNS0uNy01LjktMS43LTMtMy40LTQuMi01LjQtNC43LTguMSAwLTExLjYgMTIuNy04LjEgMjEuMmE3LjUxIDcuNTEgMCAwIDAgNS40MyA0LjJ6TTIxNiA4Mi45bC0yLjUuNS41IDNhNDguOTQgNDguOTQgMCAwIDEgMjYuMSA1LjljLTIuNS01LjUtMTAtMTQuMy0yOC4zLTE0LjNsLjUgMi41em0tNzEuOCA0OS40YzIxLjcgMTYuOCAxNi41IDIxLjQgNDYuNSAyMy42bC0yLjktNC43YTQyLjY3IDQyLjY3IDAgMCAwIDE0LjgtMjguM2MxLjctMTYtMS4yLTI5LjUtOC44LTQxLjNsMTMtNy42YTIuMjYgMi4yNiAwIDAgMC0uNS0xLjcgMTQuMjEgMTQuMjEgMCAwIDAtMTMuNSAxLjdjLTEyLjcgNi43LTI4IDIwLjktMjkgMjIuNC0xLjcgMS43LTMuNCA1LjktNS40IDEzLjVhOTkuNjEgOTkuNjEgMCAwIDAtMi45IDIzLjZjLTQuNy04LTEwLjUtNi40LTE5LjktNS45bDcuMSA3LjZjLTE2LjUgMC0yMy4zIDE1LjQtMjMuNiAxNiA2LjggMCA0LjYtNy42IDMwLTEyLjMtNC4zLTYuMy0zLjMtNS00LjktNi42em0xOC43LTE4LjdjMS4yLTcuNiAzLjQtMTMgNi40LTE3LjIgNS40LTYuNCAxMC42LTEwLjEgMTYtMTEuOCA0LjItMS43IDcuMSAxLjIgMTAuMSA5LjNhNzIuMTQgNzIuMTQgMCAwIDEgMyAyNS4zYy0uNSA5LjMtMy40IDE3LjItOC40IDIzLjEtMi45IDMuNC01LjQgNS45LTYuNCA3LjZhMzkuMjEgMzkuMjEgMCAwIDEtMTEuMy0uNWwtNy4xLTMuNC01LjQtNi40Yy44LTEwIDEuMy0xOC44IDMuMS0yNnptNDIgNTYuMWMtMzQuOCAxNC40LTM0LjcgMTQtMzYuMSAxNC4zLTIwLjggNC43LTE5LTI0LjQtMTguOS0yNC44bDUuOS0xLjItLjUtMi41Yy0yMC4yLTIuNi0zMSA0LjItMzIuNSA0LjkuNS41IDMgMy40IDUuOSA5LjMgNC4yLTYuNCA4LjgtMTAuMSAxNS4yLTEwLjZhODMuNDcgODMuNDcgMCAwIDAgMS43IDMzLjdjLjEuNSAyLjYgMTcuNCAyNy41IDI0LjEgMTEuMyAzIDI3IDEuMiA0OC45LTUuNGwtOS4yLjVjLTQuMi0xNC44LTYuNC0yNC44LTUuOS0yOS41IDExLjMtOC44IDIxLjktMTEuMyAzMC43LTcuNmgyLjVsLTExLjgtNy42LTcuMS41Yy01LjkgMS4yLTEyLjMgNC4yLTE5LjQgOC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVtZWNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMi45IDguNDNjOS45LTUuNzMgMjYtNS44MiAzNS45NS0uMjFMNDMwIDExNS44NWMxMCA1LjYgMTggMTkuNDQgMTggMzAuODZWMzY0YzAgMTEuNDQtOC4wNiAyNS4yOS0xOCAzMUwyMzguODEgNTAzLjc0Yy05LjkzIDUuNjYtMjYgNS41Ny0zNS44NS0uMjFMMTcuODYgMzk1LjEyQzggMzg5LjM0IDAgMzc1LjM4IDAgMzY0VjE0Ni43MWMwLTExLjQ0IDgtMjUuMzYgMTcuOTEtMzEuMDh6bS03Ny40IDE5OS44M2MtMTUuOTQgMC0zMS44OS4xNC00Ny44My4xNHYxMDEuNDVIOTYuOFYyODBoMjguN2M0OS43MSAwIDQ5LjU2LTcxLjc0IDAtNzEuNzR6bTE0MC4xNCAxMDAuMjlsLTMwLjczLTM0LjY0YzM3LTcuNTEgMzQuOC02NS4yMy0xMC44Ny02NS41MS0xNi4wOSAwLTMyLjE3LS4xNC00OC4yNi0uMTR2MTAxLjU5aDE5LjEzdi0zMy45MWgxOC40MWwyOS41NiAzMy45MWgyMi43NnptLTQxLjU5LTgyLjMyYzIzLjM0IDAgMjMuMjYgMzIuNDYgMCAzMi40NmgtMjkuMTN2LTMyLjQ2em0tOTUuNTYtMS42YzIxLjE4IDAgMjEuMTEgMzguODUgMCAzOC44NUg5Ni4xOHYtMzguODR6bTE5Mi42NS0xOC4yNWMtNjguNDYgMC03MSAxMDUuOCAwIDEwNS44IDY5LjQ4LS4wMSA2OS40MS0xMDUuOCAwLTEwNS44em0wIDE3LjM5YzQ0LjEyIDAgNDQuOCA3MC44NiAwIDcwLjg2cy00NC40My03MC44NiAwLTcwLjg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVtZWlzbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDg4LjI4NmMwLTEwIDYuMjg2LTIxLjcxNCAxNy43MTUtMjEuNzE0IDExLjE0MiAwIDE3LjcxNCAxMS43MTQgMTcuNzE0IDIxLjcxNCAwIDEwLjI4NS02LjU3MiAyMS43MTQtMTcuNzE0IDIxLjcxNEMyMTQuMjg2IDExMCAyMDggOTguNTcxIDIwOCA4OC4yODZ6bTMwNCAxNjBjMCAzNi4wMDEtMTEuNDI5IDEwMi4yODYtMzYuMjg2IDEyOS43MTQtMjIuODU4IDI0Ljg1OC04Ny40MjggNjEuMTQzLTEyMC44NTcgNzAuNTcybC0xLjE0My4yODZ2MzIuNTcxYzAgMTYuMjg2LTEyLjU3MiAzMC41NzEtMjkuMTQzIDMwLjU3MS0xMCAwLTE5LjQyOS01LjcxNC0yNC41NzItMTQuMjg2LTUuNDI3IDguNTcyLTE0Ljg1NiAxNC4yODYtMjQuODU2IDE0LjI4Ni0xMCAwLTE5LjQyOS01LjcxNC0yNC44NTgtMTQuMjg2LTUuMTQyIDguNTcyLTE0LjU3MSAxNC4yODYtMjQuNTcgMTQuMjg2LTEwLjI4NiAwLTE5LjQyOS01LjcxNC0yNC44NTgtMTQuMjg2LTUuMTQzIDguNTcyLTE0LjU3MSAxNC4yODYtMjQuNTcxIDE0LjI4Ni0xOC44NTcgMC0yOS40MjktMTUuNzE0LTI5LjQyOS0zMi44NTctMTYuMjg2IDEyLjI4NS0zNS43MTUgMTkuNDI4LTU2LjU3MSAxOS40MjgtMjIgMC00My40MjktOC4yODUtNjAuMjg2LTIyLjg1NyAxMC4yODUtLjI4NiAyMC41NzEtMi4yODYgMzAuMjg1LTUuNzE0LTIwLjg1Ny01LjcxNC0zOS40MjgtMTguODU3LTUyLTM2LjI4NiAyMS4zNyA0LjY0NSA0Ni4yMDkgMS42NzMgNjcuMTQzLTExLjE0My0yMi0yMi01Ni41NzEtNTguODU3LTY4LjU3Mi04Ny40MjhDMS4xNDMgMzIxLjcxNCAwIDMwMy43MTQgMCAyODkuNDI5YzAtNDkuNzE0IDIwLjI4Ni0xNjAgODYuMjg2LTE2MCAxMC41NzEgMCAxOC44NTcgNC44NTggMjMuMTQzIDE0Ljg1N2ExNTguNzkyIDE1OC43OTIgMCAwIDEgMTItMTUuNDI4YzItMi41NzIgNS43MTQtNS40MjkgNy4xNDMtOC4yODYgNy45OTktMTIuNTcxIDExLjcxNC0yMS4xNDIgMjEuNzE0LTM0QzE4Mi41NzEgNDUuNDI4IDIzMiAxNy4xNDMgMjg1LjE0MyAxNy4xNDNjNiAwIDEyIC4yODUgMTcuNzE0IDEuMTQzQzMxMy43MTQgNi41NzEgMzI4Ljg1NyAwIDM0NC41NzIgMGMxNC41NzEgMCAyOS43MTQgNiA0MCAxNi4yODYuODU3Ljg1OCAxLjQyOCAyLjI4NiAxLjQyOCAzLjQyOCAwIDMuNzE0LTEwLjI4NSAxMy40MjktMTIuODU3IDE2LjI4NiA0LjI4NiAxLjQyOSAxNS43MTQgNi44NTggMTUuNzE0IDEyIDAgMi44NTctMi44NTcgNS4xNDMtNC41NzEgNy4xNDMgMzEuNDI5IDI3LjcxNCA0OS40MjkgNjcuMTQzIDU2LjI4NiAxMDggNC4yODYtNS4xNDMgMTAuMjg1LTguNTcyIDE3LjE0My04LjU3MiAxMC41NzEgMCAyMC44NTcgNy4xNDQgMjguNTcxIDE0LjAwMUM1MDcuMTQzIDE4Ny4xNDMgNTEyIDIyMS43MTQgNTEyIDI0OC4yODZ6TTE4OCA4OS40MjhjMCAxOC4yODYgMTIuNTcxIDM3LjE0MyAzMi4yODYgMzcuMTQzIDE5LjcxNCAwIDMyLjI4NS0xOC44NTcgMzIuMjg1LTM3LjE0MyAwLTE4LTEyLjU3MS0zNi44NTctMzIuMjg1LTM2Ljg1Ny0xOS43MTUgMC0zMi4yODYgMTguODU4LTMyLjI4NiAzNi44NTd6TTIzNy43MTQgMTk0YzAtMTkuNzE0IDMuNzE0LTM5LjE0MyA4LjU3MS01OC4yODYtNTIuMDM5IDc5LjUzNC0xMy41MzEgMTg0LjU3MSA2OC44NTggMTg0LjU3MSAyMS40MjggMCA0Mi41NzEtNy43MTQgNjAtMjAgMi03LjQyOSAzLjcxNC0xNC44NTcgMy43MTQtMjIuNTcyIDAtMTQuMjg2LTYuMjg2LTIxLjQyOC0yMC41NzItMjEuNDI4LTQuNTcxIDAtOS4xNDMuODU3LTEzLjQyOSAxLjcxNC02My4zNDMgMTIuNjY4LTEwNy4xNDIgMy42NjktMTA3LjE0Mi02My45OTl6bS00MS4xNDIgMjU0Ljg1OGMwLTExLjE0My04Ljg1OC0yMC44NTctMjAuMjg2LTIwLjg1Ny0xMS40MjkgMC0yMCA5LjcxNS0yMCAyMC44NTd2MzIuNTcxYzAgMTEuMTQzIDguNTcxIDIxLjE0MiAyMCAyMS4xNDIgMTEuNDI4IDAgMjAuMjg2LTkuNzE1IDIwLjI4Ni0yMS4xNDJ2LTMyLjU3MXptNDkuMTQzIDBjMC0xMS4xNDMtOC41NzItMjAuODU3LTIwLTIwLjg1Ny0xMS40MjkgMC0yMC4yODYgOS43MTUtMjAuMjg2IDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC44NTcgMjEuMTQyIDIwLjI4NiAyMS4xNDIgMTEuNDI4IDAgMjAtMTAgMjAtMjEuMTQydi0zMi41NzF6bTQ5LjcxMyAwYzAtMTEuMTQzLTguODU3LTIwLjg1Ny0yMC4yODUtMjAuODU3LTExLjQyOSAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1NyAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjggMCAyMC4yODUtOS43MTUgMjAuMjg1LTIxLjE0MnYtMzIuNTcxem00OS43MTUgMGMwLTExLjE0My04Ljg1Ny0yMC44NTctMjAuMjg2LTIwLjg1Ny0xMS40MjggMC0yMC4yODYgOS43MTUtMjAuMjg2IDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC44NTggMjEuMTQyIDIwLjI4NiAyMS4xNDIgMTEuNDI5IDAgMjAuMjg2LTEwIDIwLjI4Ni0yMS4xNDJ2LTMyLjU3MXpNNDIxLjcxNCAyODZjLTMwLjg1NyA1OS4xNDItOTAuMjg1IDEwMi41NzItMTU4LjU3MSAxMDIuNTcyLTk2LjU3MSAwLTE2MC41NzEtODQuNTcyLTE2MC41NzEtMTc2LjU3MiAwLTE2Ljg1NyAyLTMzLjQyOSA2LTQ5LjcxNC0yMCAzMy43MTUtMjkuNzE0IDcyLjU3Mi0yOS43MTQgMTExLjQyOSAwIDYwLjI4NiAyNC44NTcgMTIxLjcxNSA3MS40MjkgMTYwLjg1NyA1LjE0My05LjcxNCAxNC44NTctMTYuMjg2IDI2LTE2LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC41NzEgMTQuMjg2IDUuNDI5LTguNTcxIDE0LjU3MS0xNC4yODYgMjQuODU4LTE0LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC41NzEgMTQuMjg2IDUuNDI5LTguNTcxIDE0Ljg1Ny0xNC4yODYgMjQuODU4LTE0LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC44NTcgMTQuMjg2IDUuMTQzLTguNTcxIDE0LjU3MS0xNC4yODYgMjQuNTcyLTE0LjI4NiAxMC44NTcgMCAyMC44NTcgNi41NzIgMjUuNzE0IDE2IDQzLjQyNy0zNi4yODYgNjguNTY5LTkyIDcxLjQyNi0xNDguMjg2em0xMC41NzItOTkuNzE0YzAtNTMuNzE0LTM0LjU3MS0xMDUuNzE0LTkyLjU3Mi0xMDUuNzE0LTMwLjI4NSAwLTU4LjU3MSAxNS4xNDMtNzguODU3IDM2Ljg1N0MyNDAuODYyIDE4My44MTIgMjMzLjQxIDI1NCAzMDIuMjg2IDI1NGMyOC44MDUgMCA5Ny4zNTctMjguNTM4IDg0LjI4NiAzNi44NTcgMjguODU3LTI2IDQ1LjcxNC02NS43MTQgNDUuNzE0LTEwNC41NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoaW5rUGVha3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY1LjQgNDA5LjRsODcuMS0xNTAuMi0zMi0uMy01NS4xIDk1TDI1OS4yIDAgMjMgNDA3LjRsMzIgLjNMMjU5LjIgNTUuNnptLTM1NS4zLTQ0LjFoMzIuMWwxMTcuNC0yMDIuNUw0NjMgNTExLjlsMzIuNS4xLTIzNS44LTQwNC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHJlYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMS41IDIzNS43YzIuMiAuOSA0LjIgMS45IDYuMyAyLjhjMjkuMiAxNC4xIDUwLjYgMzUuMiA2MS44IDYxLjRjMTUuNyAzNi41IDE3LjIgOTUuOC0zMC4zIDE0My4yYy0zNi4yIDM2LjItODAuMyA1Mi41LTE0Mi42IDUzaC0uM2MtNzAuMi0uNS0xMjQuMS0yNC4xLTE2MC40LTcwLjJjLTMyLjMtNDEtNDguOS05OC4xLTQ5LjUtMTY5LjZWMjU2di0uMkMxNyAxODQuMyAzMy42IDEyNy4yIDY1LjkgODYuMkMxMDIuMiA0MC4xIDE1Ni4yIDE2LjUgMjI2LjQgMTZoLjNjNzAuMyAuNSAxMjQuOSAyNCAxNjIuMyA2OS45YzE4LjQgMjIuNyAzMiA1MCA0MC42IDgxLjdsLTQwLjQgMTAuOGMtNy4xLTI1LjgtMTcuOC00Ny44LTMyLjItNjUuNGMtMjkuMi0zNS44LTczLTU0LjItMTMwLjUtNTQuNmMtNTcgLjUtMTAwLjEgMTguOC0xMjguMiA1NC40QzcyLjEgMTQ2LjEgNTguNSAxOTQuMyA1OCAyNTZjLjUgNjEuNyAxNC4xIDEwOS45IDQwLjMgMTQzLjNjMjggMzUuNiA3MS4yIDUzLjkgMTI4LjIgNTQuNGM1MS40LS40IDg1LjQtMTIuNiAxMTMuNy00MC45YzMyLjMtMzIuMiAzMS43LTcxLjggMjEuNC05NS45Yy02LjEtMTQuMi0xNy4xLTI2LTMxLjktMzQuOWMtMy43IDI2LjktMTEuOCA0OC4zLTI0LjcgNjQuOGMtMTcuMSAyMS44LTQxLjQgMzMuNi03Mi43IDM1LjNjLTIzLjYgMS4zLTQ2LjMtNC40LTYzLjktMTZjLTIwLjgtMTMuOC0zMy0zNC44LTM0LjMtNTkuM2MtMi41LTQ4LjMgMzUuNy04MyA5NS4yLTg2LjRjMjEuMS0xLjIgNDAuOS0uMyA1OS4yIDIuOGMtMi40LTE0LjgtNy4zLTI2LjYtMTQuNi0zNS4yYy0xMC0xMS43LTI1LjYtMTcuNy00Ni4yLTE3LjhIMjI3Yy0xNi42IDAtMzkgNC42LTUzLjMgMjYuM2wtMzQuNC0yMy42YzE5LjItMjkuMSA1MC4zLTQ1LjEgODcuOC00NS4xaC44YzYyLjYgLjQgOTkuOSAzOS41IDEwMy43IDEwNy43bC0uMiAuMnptLTE1NiA2OC44YzEuMyAyNS4xIDI4LjQgMzYuOCA1NC42IDM1LjNjMjUuNi0xLjQgNTQuNi0xMS40IDU5LjUtNzMuMmMtMTMuMi0yLjktMjcuOC00LjQtNDMuNC00LjRjLTQuOCAwLTkuNiAuMS0xNC40IC40Yy00Mi45IDIuNC01Ny4yIDIzLjItNTYuMiA0MS44bC0uMSAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlrdG9rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCwyMDkuOTFhMjEwLjA2LDIxMC4wNiwwLDAsMS0xMjIuNzctMzkuMjVWMzQ5LjM4QTE2Mi41NSwxNjIuNTUsMCwxLDEsMTg1LDE4OC4zMVYyNzguMmE3NC42Miw3NC42MiwwLDEsMCw1Mi4yMyw3MS4xOFYwbDg4LDBhMTIxLjE4LDEyMS4xOCwwLDAsMCwxLjg2LDIyLjE3aDBBMTIyLjE4LDEyMi4xOCwwLDAsMCwzODEsMTAyLjM5YTEyMS40MywxMjEuNDMsMCwwLDAsNjcsMjAuMTRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYWRlRmVkZXJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOC44Yy0xMzcgMC0yNDggMTExLTI0OCAyNDhzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OC0xMTEtMjQ4LTI0OC0yNDh6bTAgNDgyLjhjLTEyOS43IDAtMjM0LjgtMTA1LjEtMjM0LjgtMjM0LjhTMTE4LjMgMjIgMjQ4IDIyczIzNC44IDEwNS4xIDIzNC44IDIzNC44UzM3Ny43IDQ5MS42IDI0OCA0OTEuNnptMTU1LjEtMzI4LjV2LTQ2LjhIMjA5LjNWMTk4SDU0LjJsMzYuNyA0NmgxMTcuN3YxOTYuOGg0OC44VjI0NWg4My4zdi00N2gtODMuM3YtMzQuOGgxNDUuN3ptLTczLjMgNDUuMXYyMy45aC04Mi45djE5Ny40aC0yNi44VjIzMi4xSDk2LjNsLTIwLjEtMjMuOWgxNDMuOXYtODAuNmgxNzEuOFYxNTJoLTE0NXY1Ni4yem0tMTYxLjMtNjlsLTEyLjQtMjAuNyAyLjEgMjMuOC0yMy41IDUuNCAyMy4zIDUuNC0yLjEgMjQgMTIuMy0yMC41IDIyLjIgOS41LTE1LjctMTguMSAxNS44LTE4LjF6bS0yOS42LTE5LjdsOS4zLTExLjUtMTIuNyA1LjktOC0xMi40IDEuNyAxMy45LTE0LjMgMy44IDEzLjcgMi43LS44IDE0LjcgNi44LTEyLjIgMTMuOCA1LjN6bTE2NS40IDE0NS4ybC0xMy4xIDUuNi03LjMtMTIuMiAxLjMgMTQuMi0xMy45IDMuMiAxMy45IDMuMi0xLjIgMTQuMiA3LjMtMTIuMiAxMy4xIDUuNS05LjQtMTAuN3ptMTA2LjktNzcuMmwtMjAuOSA5LjEtMTItMTkuNiAyLjIgMjIuNy0yMi4zIDUuNCAyMi4yIDQuOS0xLjggMjIuOSAxMS41LTE5LjYgMjEuMiA4LjgtMTUuMS0xN3pNMjQ4IDI5LjljLTEyNS4zIDAtMjI2LjkgMTAxLjYtMjI2LjkgMjI2LjlTMTIyLjcgNDgzLjcgMjQ4IDQ4My43czIyNi45LTEwMS42IDIyNi45LTIyNi45UzM3My4zIDI5LjkgMjQ4IDI5Ljl6TTM0Mi42IDE5NnY1MWgtODMuM3YxOTUuN2gtNTIuN1YyNDUuOUg4OS45bC00MC00OS45aDE1Ny40di04MS42aDE5Ny44djUwLjdIMjU5LjRWMTk2ek0yNDggNDMuMmM2MC4zIDAgMTE0LjggMjUgMTUzLjYgNjUuMkgyMDIuNVYxOTBINDUuMUM3My4xIDEwNC44IDE1My40IDQzLjIgMjQ4IDQzLjJ6bTAgNDI3LjFjLTExNy45IDAtMjEzLjYtOTUuNi0yMTMuNi0yMTMuNSAwLTIxLjIgMy4xLTQxLjggOC45LTYxLjFMODcuMSAyNTJoMTE0Ljd2MTk2LjhoNjQuNlYyNTNoODMuM3YtNjIuN2gtODMuMnYtMTkuMmgxNDUuNnYtNTAuOGMzMC44IDM3IDQ5LjMgODQuNiA0OS4zIDEzNi41LjEgMTE3LjktOTUuNSAyMTMuNS0yMTMuNCAyMTMuNXpNMTc4LjggMjc1bC0xMS0yMS40IDEuNyAyNC41LTIzLjcgMy45IDIzLjggNS45LTMuNyAyMy44IDEzLTIwLjkgMjEuNSAxMC44LTE1LjgtMTguOCAxNi45LTE3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyZWxsbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTIuMyAzMkg1Ni4xQzI1LjEgMzIgMCA1Ny4xIDAgODhjLS4xIDAgMC00IDAgMzM2IDAgMzAuOSAyNS4xIDU2IDU2IDU2aDMzNi4yYzMwLjgtLjIgNTUuNy0yNS4yIDU1LjctNTZWODhjLjEtMzAuOC0yNC44LTU1LjgtNTUuNi01NnpNMTk3IDM3MS4zYy0uMiAxNC43LTEyLjEgMjYuNi0yNi45IDI2LjZIODcuNGMtMTQuOC4xLTI2LjktMTEuOC0yNy0yNi42VjExNy4xYzAtMTQuOCAxMi0yNi45IDI2LjktMjYuOWg4Mi45YzE0LjggMCAyNi45IDEyIDI2LjkgMjYuOXYyNTQuMnptMTkzLjEtMTEyYzAgMTQuOC0xMiAyNi45LTI2LjkgMjYuOWgtODFjLTE0LjggMC0yNi45LTEyLTI2LjktMjYuOVYxMTcuMmMwLTE0LjggMTItMjYuOSAyNi44LTI2LjloODEuMWMxNC44IDAgMjYuOSAxMiAyNi45IDI2Ljl2MTQyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR1bWJsciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDkuOCA0ODAuM2MtMTMuNiAxNC41LTUwIDMxLjctOTcuNCAzMS43LTEyMC44IDAtMTQ3LTg4LjgtMTQ3LTE0MC42di0xNDRIMTcuOWMtNS41IDAtMTAtNC41LTEwLTEwdi02OGMwLTcuMiA0LjUtMTMuNiAxMS4zLTE2IDYyLTIxLjggODEuNS03NiA4NC4zLTExNy4xLjgtMTEgNi41LTE2LjMgMTYuMS0xNi4zaDcwLjljNS41IDAgMTAgNC41IDEwIDEwdjExNS4yaDgzYzUuNSAwIDEwIDQuNCAxMCA5Ljl2ODEuN2MwIDUuNS00LjUgMTAtMTAgMTBoLTgzLjRWMzYwYzAgMzQuMiAyMy43IDUzLjYgNjggMzUuOCA0LjgtMS45IDktMy4yIDEyLjctMi4yIDMuNS45IDUuOCAzLjQgNy40IDcuOWwyMiA2NC4zYzEuOCA1IDMuMyAxMC42LS40IDE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR3aXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTEuMTcsMTAzLjQ3SDM1Mi41NHYxMDkuN2gzOC42M1pNMjg1LDEwM0gyNDYuMzdWMjEyLjc1SDI4NVpNMTIwLjgzLDAsMjQuMzEsOTEuNDJWNDIwLjU4SDE0MC4xNFY1MTJsOTYuNTMtOTEuNDJoNzcuMjVMNDg3LjY5LDI1NlYwWk00NDkuMDcsMjM3Ljc1bC03Ny4yMiw3My4xMkgyOTQuNjFsLTY3LjYsNjR2LTY0SDE0MC4xNFYzNi41OEg0NDkuMDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR3aXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU5LjM3IDE1MS43MTZjLjMyNSA0LjU0OC4zMjUgOS4wOTcuMzI1IDEzLjY0NSAwIDEzOC43Mi0xMDUuNTgzIDI5OC41NTgtMjk4LjU1OCAyOTguNTU4LTU5LjQ1MiAwLTExNC42OC0xNy4yMTktMTYxLjEzNy00Ny4xMDYgOC40NDcuOTc0IDE2LjU2OCAxLjI5OSAyNS4zNCAxLjI5OSA0OS4wNTUgMCA5NC4yMTMtMTYuNTY4IDEzMC4yNzQtNDQuODMyLTQ2LjEzMi0uOTc1LTg0Ljc5Mi0zMS4xODgtOTguMTEyLTcyLjc3MiA2LjQ5OC45NzQgMTIuOTk1IDEuNjI0IDE5LjgxOCAxLjYyNCA5LjQyMSAwIDE4Ljg0My0xLjMgMjcuNjE0LTMuNTczLTQ4LjA4MS05Ljc0Ny04NC4xNDMtNTEuOTgtODQuMTQzLTEwMi45ODV2LTEuMjk5YzEzLjk2OSA3Ljc5NyAzMC4yMTQgMTIuNjcgNDcuNDMxIDEzLjMxOS0yOC4yNjQtMTguODQzLTQ2Ljc4MS01MS4wMDUtNDYuNzgxLTg3LjM5MSAwLTE5LjQ5MiA1LjE5Ny0zNy4zNiAxNC4yOTQtNTIuOTU0IDUxLjY1NSA2My42NzUgMTI5LjMgMTA1LjI1OCAyMTYuMzY1IDEwOS44MDctMS42MjQtNy43OTctMi41OTktMTUuOTE4LTIuNTk5LTI0LjA0IDAtNTcuODI4IDQ2Ljc4Mi0xMDQuOTM0IDEwNC45MzQtMTA0LjkzNCAzMC4yMTMgMCA1Ny41MDIgMTIuNjcgNzYuNjcgMzMuMTM3IDIzLjcxNS00LjU0OCA0Ni40NTYtMTMuMzIgNjYuNTk5LTI1LjM0LTcuNzk4IDI0LjM2Ni0yNC4zNjYgNDQuODMzLTQ2LjEzMiA1Ny44MjcgMjEuMTE3LTIuMjczIDQxLjU4NC04LjEyMiA2MC40MjYtMTYuMjQzLTE0LjI5MiAyMC43OTEtMzIuMTYxIDM5LjMwOC01Mi42MjggNTQuMjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUeXBvMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzguNyA3OC40YzAtMjQuNyA1LjQtMzIuNCAxMy45LTM5LjQtNjkuNSA4LjUtMTQ5LjMgMzQtMTc2LjMgNjYuNC01LjQgNy43LTkuMyAyMC44LTkuMyAzNy4xQzcgMjQ2IDExMy44IDQ4MCAxOTEuMSA0ODBjMzYuMyAwIDk3LjMtNTkuNSAxNDYuNy0xMzktNyAyLjMtMTEuNiAyLjMtMTguNSAyLjMtNTcuMiAwLTE0MC42LTE5OC41LTE0MC42LTI2NC45ek0zMDEuNSAzMmMtMzAuMSAwLTQxLjcgNS40LTQxLjcgMzYuMyAwIDY2LjQgNTMuOCAxOTguNSAxMDEuNyAxOTguNSAyNi4zIDAgNzguOC05OS43IDc4LjgtMTgyLjMgMC00MC45LTY3LTUyLjUtMTM4LjgtNTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVWJlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTQuMSAzMkgzMy45QzE1LjIgMzIgMCA0Ny4yIDAgNjUuOVY0NDZjMCAxOC44IDE1LjIgMzQgMzMuOSAzNEg0MTRjMTguNyAwIDMzLjktMTUuMiAzMy45LTMzLjlWNjUuOUM0NDggNDcuMiA0MzIuOCAzMiA0MTQuMSAzMnpNMjM3LjYgMzkxLjFDMTYzIDM5OC42IDk2LjQgMzQ0LjIgODguOSAyNjkuNmg5NC40VjI5MGMwIDMuNyAzIDYuOCA2LjggNi44SDI1OGMzLjcgMCA2LjgtMyA2LjgtNi44di02Ny45YzAtMy43LTMtNi44LTYuOC02LjhoLTY3LjljLTMuNyAwLTYuOCAzLTYuOCA2Ljh2MjAuNEg4OC45YzctNjkuNCA2NS40LTEyMi4yIDEzNS4xLTEyMi4yIDY5LjcgMCAxMjguMSA1Mi44IDEzNS4xIDEyMi4yIDcuNSA3NC41LTQ2LjkgMTQxLjEtMTIxLjUgMTQ4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVidW50dSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjkuMiA3NUE3NS42IDc1LjYgMCAxIDAgMzE3LjkgNzVhNzUuNiA3NS42IDAgMSAwIDE1MS4yIDB6TTE1NC4yIDI0MC43QTc1LjYgNzUuNiAwIDEgMCAzIDI0MC43YTc1LjYgNzUuNiAwIDEgMCAxNTEuMiAwek01NyAzNDZDNzUuNiAzOTIuOSAxMDggNDMzIDE1MCA0NjEuMXM5MS41IDQyLjYgMTQyIDQxLjdjLTE0LjctMTguNi0yMi45LTQxLjUtMjMuMi02NS4yYy02LjgtLjktMTMuMy0yLjEtMTkuNS0zLjRjLTI2LjgtNS43LTUxLjktMTcuMy03My42LTM0cy0zOS4zLTM4LjEtNTEuNy02Mi41Yy0yMC45IDkuOS00NC41IDEyLjgtNjcuMSA4LjJ6bTM5NS4xIDg5LjhhNzUuNiA3NS42IDAgMSAwIC0xNTEuMiAwIDc1LjYgNzUuNiAwIDEgMCAxNTEuMiAwek00NDQgMzUxLjZjMTguNSAxNC44IDMxLjYgMzUuMiAzNy4yIDU4LjJjMzMuMy00MS4zIDUyLjYtOTIuMiA1NC44LTE0NS4ycy0xMi41LTEwNS40LTQyLjItMTQ5LjRjLTguNiAyMS41LTI0IDM5LjYtNDMuOCA1MS42YzE1LjQgMjguNiAyMi45IDYwLjggMjEuOSA5My4ycy0xMC43IDY0LTI4IDkxLjZ6TTEwMS4xIDEzNS40YzEyLjQgMi43IDI0LjMgNy41IDM1LjEgMTQuM2MxNi42LTI0LjIgMzguOS00NC4xIDY0LjgtNThTMjU1LjggNzAuNCAyODUuMiA3MGMuMi01LjkgLjktMTEuOSAyLTE3LjdjMy42LTE2LjcgMTEuMS0zMi4zIDIxLjgtNDUuNWMtNDcuNy0zLjgtOTUuNCA2LTEzNy42IDI4LjVTOTQuMyA5MS43IDcwLjggMTMzLjRjMi43LS4yIDUuMy0uMyA4LS4zYzcuNSAwIDE1IC44IDIyLjQgMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVaWtpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuOSAxMjh2MjU2TDIxOCA1MTIgMCAzODRWMTY5LjdsODcuNiA0NS4xdjExN2wxMzMuNSA3NS41IDEzNS44LTc1LjV2LTE1MWwtMTAxLjEtNTcuNiA4Ny42LTUzLjFMNDQzLjkgMTI4ek0zMDguNiA0OS4xTDIyMy44IDBsLTg4LjYgNTQuOCA4NiA0Ny4zIDg3LjQtNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJhY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjM1IDhDMTE4LjM2IDcuODMgNy4xNCAxMTguNzIgNyAyNTUuNjhjLS4wNyAxMzcgMTExIDI0OC4yIDI0OCAyNDguMjcgMTM2Ljg1IDAgMjQ3LjgyLTExMC43IDI0OC0yNDcuNjdTMzkyLjM0IDguMTcgMjU1LjM1IDh6bTE0NSAyNjZxLTEuMTQgNDAuNjgtMTQgNjV0LTQzLjUxIDM1cS0zMC42MSAxMC43LTg1LjQ1IDEwLjQ3aC00LjZxLTU0Ljc4LjIyLTg1LjQ0LTEwLjQ3dC00My41Mi0zNXEtMTIuODUtMjQuMzYtMTQtNjVhMjI0LjgxIDIyNC44MSAwIDAgMSAwLTMwLjcxIDQxOC4zNyA0MTguMzcgMCAwIDEgMy42LTQzLjg4YzEuODgtMTMuMzkgMy41Ny0yMi41OCA1LjQtMzIgMS00Ljg4IDEuMjgtNi40MiAxLjgyLTguNDVhNS4wOSA1LjA5IDAgMCAxIDQuOS0zLjg5aC42OWwzMiA1YTUuMDcgNS4wNyAwIDAgMSA0LjE2IDUgNSA1IDAgMCAxIDAgLjc3bC0xLjcgOC43OHEtMi40MSAxMy4yNS00Ljg0IDMzLjY4YTM4MC42MiAzODAuNjIgMCAwIDAtMi42NCA0Mi4xNXEtLjI4IDQwLjQzIDguMTMgNTkuODNhNDMuODcgNDMuODcgMCAwIDAgMzEuMzEgMjUuMThBMjQzIDI0MyAwIDAgMCAyNTAgMzQwLjZoMTAuMjVhMjQyLjY0IDI0Mi42NCAwIDAgMCA1Ny4yNy01LjE2IDQzLjg2IDQzLjg2IDAgMCAwIDMxLjE1LTI1LjIzcTguNTMtMTkuNDIgOC4xMy01OS43OGEzODggMzg4IDAgMCAwLTIuNi00Mi4xNXEtMi40OC0yMC4zOC00Ljg5LTMzLjY4bC0xLjY5LTguNzhhNSA1IDAgMCAxIDAtLjc3IDUgNSAwIDAgMSA0LjItNWwzMi01aC44MmE1IDUgMCAwIDEgNC45IDMuODljLjU1IDIuMDUuODEgMy41NyAxLjgzIDguNDUgMS44MiA5LjYyIDMuNTIgMTguNzggNS4zOSAzMmE0MTUuNzEgNDE1LjcxIDAgMCAxIDMuNjEgNDMuODggMjI4LjA2IDIyOC4wNiAwIDAgMS0uMDQgMzAuNzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuY2hhcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzEuNzMsMjMyLjgxM0E1LjM4MSw1LjM4MSwwLDAsMCwxNzYuNywyMjkuNSw0OC4wODEsNDguMDgxLDAsMCwxLDE5MS42LDIwNC4yNDRjMS4yNDMtLjgyOCwxLjY1Ny0yLjQ4NCwxLjY1Ny00LjE0MWE0LjIyLDQuMjIsMCwwLDAtMi4wNzEtMy4zMTJMNzQuNDI5LDEyOC40NzMsMTQ4Ljk1OCw4NWE5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MSw5LjEwOCw5LjEwOCwwLDAsMC00Ljk2OC04LjI4MUwxMjYuNiw1NS42YTkuNzQ4LDkuNzQ4LDAsMCwwLTkuNTIzLDBsLTEwMC4yLDU3Ljk2NmE5Ljk0Myw5Ljk0MywwLDAsMC00Ljk2OSw4LjI4MVYyMzYuOTU0YTkuMTA5LDkuMTA5LDAsMCwwLDQuOTY5LDguMjgxTDM5LjIzNSwyNTguMDdhOC44MjksOC44MjksMCwwLDAsNC45NjgsMS4yNDIsOS40LDkuNCwwLDAsMCw2LjYyNS0yLjQ4NCwxMC44LDEwLjgsMCwwLDAsMi45LTcuMDM5VjE2NC41TDE2OS42NiwyMzIuNEE0LjUsNC41LDAsMCwwLDE3MS43MywyMzIuODEzWk0zMjMuMjcyLDM3Ny43M2ExMi40NzgsMTIuNDc4LDAsMCwwLTQuOTY5LDEuMjQybC03NC41MjgsNDMuMDYyVjI4Ny44ODJjMC0yLjktMi45LTUuOC02LjIxMS00LjU1NWE1My4wMzYsNTMuMDM2LDAsMCwxLTI4Ljk4NC40MTQsNC44Niw0Ljg2LDAsMCwwLTYuMjEsNC41NTVWNDIxLjYxOWwtNzQuNTI5LTQzLjA2MWE4LjgzLDguODMsMCwwLDAtNC45NjktMS4yNDIsOS42MzEsOS42MzEsMCwwLDAtOS41MjMsOS41MjN2MjYuMDg1YTkuMTA3LDkuMTA3LDAsMCwwLDQuOTY5LDguMjgxbDEwMC4yLDU3LjU1M0E4LjgyOSw4LjgyOSwwLDAsMCwyMjMuNDg2LDQ4MGExMS4wMjcsMTEuMDI3LDAsMCwwLDQuOTY5LTEuMjQybDEwMC4yLTU3LjU1M2E5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MVYzODYuODM5QzMzMi44LDM4Mi4yODUsMzI4LjI0LDM3Ny43MywzMjMuMjcyLDM3Ny43M1pNMjg2LjAwNyw3OGEyMywyMywwLDEsMC0yMy0yM0EyMywyMywwLDAsMCwyODYuMDA3LDc4Wm02My42MjctMTAuMDg2YTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsNjcuOTE0Wk00MTIuODE2LDE1MS42YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMTUxLjZabS02My4xODItOS4yYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsMTQyLjRabS02My42MjcsODMuMjQ0YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDI4Ni4wMDcsMjI1LjY0OFptLTYyLjA3NCwzNi4zNThhMjMsMjMsMCwxLDAtMjMtMjNBMjMsMjMsMCwwLDAsMjIzLjkzMywyNjIuMDA2Wm0xODguODgzLTgyLjM1OGEyMywyMywwLDEsMCwyMywyM0EyMywyMywwLDAsMCw0MTIuODE2LDE3OS42NDhabTAsNzIuMjcyYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMjUxLjkyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmlyZWdpc3RyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNDgwYzM5LjUgMCA3Ni4yLTExLjggMTA2LjgtMzIuMkg4NS4zQzExNS44IDQ2OC4yIDE1Mi41IDQ4MCAxOTIgNDgwem0tODkuMS0xOTMuMXYtMTIuNEgwdjEyLjRjMCAyLjUgMCA1IC4xIDcuNGgxMDMuMWMtLjItMi40LS4zLTQuOS0uMy03LjR6bTIwLjUgNTdIOC41YzIuNiA4LjUgNS44IDE2LjggOS42IDI0LjhoMTM4LjNjLTEyLjktNS43LTI0LjEtMTQuMi0zMy0yNC44em0tMTcuNy0zNC43SDEuM2MuOSA3LjYgMi4yIDE1IDMuOSAyMi4zaDEwOS43Yy00LTYuOS03LjItMTQuNC05LjItMjIuM3ptLTIuOC02OS4zSDB2MTcuM2gxMDIuOXptMC0xNzMuMkgwdjQuOWgxMDIuOXptMC0zNC43SDB2Mi41aDEwMi45em0wIDY5LjNIMHY3LjRoMTAyLjl6bTAgMTA0SDB2MTQuOGgxMDIuOXptMC02OS4zSDB2OS45aDEwMi45em0wIDM0LjZIMFYxODNoMTAyLjl6bTE2Ni4yIDE2MC45aDEwOS43YzEuOC03LjMgMy4xLTE0LjcgMy45LTIyLjNIMjc4LjNjLTIuMSA3LjktNS4yIDE1LjQtOS4yIDIyLjN6bTEyLTE4NS43SDM4NFYxMzZIMjgxLjF6bTAgMzcuMkgzODR2LTEyLjRIMjgxLjF6bTAtNzQuM0gzODR2LTcuNEgyODEuMXptMC03Ni43djIuNUgzODRWMzJ6bS0yMDMgNDEwLjloMjI3LjdjMTEuOC04LjcgMjIuNy0xOC42IDMyLjItMjkuN0g0NC45YzkuNiAxMSAyMS40IDIxIDMzLjIgMjkuN3ptMjAzLTM3MS4zSDM4NHYtNC45SDI4MS4xem0wIDE0OC41SDM4NHYtMTQuOEgyODEuMXpNMzguOCA0MDUuN2gzMDUuM2M2LjctOC41IDEyLjYtMTcuNiAxNy44LTI3LjJIMjNjNS4yIDkuNiA5LjIgMTguNyAxNS44IDI3LjJ6bTE4OC44LTM3LjFIMzY3YzMuNy04IDUuOC0xNi4yIDguNS0yNC44aC0xMTVjLTguOCAxMC43LTIwLjEgMTkuMi0zMi45IDI0Ljh6bTUzLjUtODEuN2MwIDIuNS0uMSA1LS40IDcuNGgxMDMuMWMuMS0yLjUuMi00LjkuMi03LjR2LTEyLjRIMjgxLjF6bTAtMjkuN0gzODR2LTE3LjNIMjgxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0My41ODMgOTEuNjAyN0wzMjMuNjk1IDEzOC4zODRDMzI2LjU3NSAxNDAuMDI2IDMyNi42OCAxNDQuNTgzIDMyMy42OTUgMTQ2LjIyNUwyMjguNTAzIDIwMS44NTRDMjI1LjYyMyAyMDMuNTUgMjIyLjIyIDIwMy40NDQgMjE5LjU0OSAyMDEuODU0TDEyNC4zNTcgMTQ2LjIyNUMxMjEuNDI1IDE0NC42MzYgMTIxLjM3MyAxMzkuOTczIDEyNC4zNTcgMTM4LjM4NEwyMDQuNDE3IDkxLjYwMjdWMEwwIDExOS40MTdWMzU4LjI1Mkw3OC4zODQzIDMxMi40NzdWMjE4LjkxNEM3OC4zMzE5IDIxNS41NzYgODIuMjA2NiAyMTMuMTkyIDg1LjA4NjUgMjE0Ljk5M0wxODAuMjc5IDI3MC42MjJDMTgzLjE1OSAyNzIuMzE4IDE4NC43ODIgMjc1LjMzOCAxODQuNzgyIDI3OC40NjRWMzg5LjY2OUMxODQuODM0IDM5My4wMDcgMTgwLjk1OSAzOTUuMzkxIDE3OC4wNzkgMzkzLjU4OUw5Ny45NjczIDM0Ni44MDhMMTkuNTgzIDM5Mi41ODNMMjI0IDUxMkw0MjguNDE3IDM5Mi41ODNMMzUwLjAzMyAzNDYuODA4TDI2OS45MjEgMzkzLjU4OUMyNjcuMDkzIDM5NS4zMzggMjYzLjExNCAzOTMuMDYgMjYzLjIxOCAzODkuNjY5VjI3OC40NjRDMjYzLjIxOCAyNzUuMTI2IDI2NS4wNTEgMjcyLjE1OSAyNjcuNzIxIDI3MC42MjJMMzYyLjkxNCAyMTQuOTkzQzM2NS43NDEgMjEzLjI0NSAzNjkuNzIgMjE1LjQ3IDM2OS42MTYgMjE4LjkxNFYzMTIuNDc3TDQ0OCAzNTguMjUyVjExOS40MTdMMjQzLjU4MyAwVjkxLjYwMjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuc3BsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCwyMzAuMTdWNDgwSDBWMjMwLjE3SDE0MS4xM1YzNTUuMDlIMzA2Ljg3VjIzMC4xN1pNMzA2Ljg3LDMySDE0MS4xM1YxNTYuOTFIMzA2Ljg3WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbnRhcHBkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMS4zIDQ5LjljLTc5LjggMTYwLjEtODQuNiAxNTIuNS04Ny45IDE3My4ybC01LjIgMzIuOGMtMS45IDEyLTYuNiAyMy41LTEzLjcgMzMuNEwxNDUuNiA0OTcuMWMtNy42IDEwLjYtMjAuNCAxNi4yLTMzLjQgMTQuNi00MC4zLTUtNzcuOC0zMi4yLTk1LjMtNjguNS01LjctMTEuOC00LjUtMjUuOCAzLjEtMzYuNGwxNDguOS0yMDcuOWM3LjEtOS45IDE2LjQtMTggMjcuMi0yMy43bDI5LjMtMTUuNWMxOC41LTkuOCA5LjctMTEuOSAxMzUuNi0xMzguOSAxLTQuOCAxLTcuMyAzLjYtOCAzLS43IDYuNi0xIDYuMy00LjZsLS40LTQuNmMtLjItMS45IDEuMy0zLjYgMy4yLTMuNiA0LjUtLjEgMTMuMiAxLjIgMjUuNiAxMCAxMi4zIDguOSAxNi40IDE2LjggMTcuNyAyMS4xLjYgMS44LS42IDMuNy0yLjQgNC4ybC00LjUgMS4xYy0zLjQuOS0yLjUgNC40LTIuMyA3LjQuMSAyLjgtMi4zIDMuNi02LjUgNi4xek0yMzAuMSAzNi40YzMuNC45IDIuNSA0LjQgMi4zIDcuNC0uMiAyLjcgMi4xIDMuNSA2LjQgNiA3LjkgMTUuOSAxNS4zIDMwLjUgMjIuMiA0NCAuNyAxLjMgMi4zIDEuNSAzLjMuNSAxMS4yLTEyIDI0LjYtMjYuMiA0MC41LTQyLjYgMS4zLTEuNCAxLjQtMy41LjEtNC45LTgtOC4yLTE2LjUtMTYuOS0yNS42LTI2LjEtMS00LjctMS03LjMtMy42LTgtMy0uOC02LjYtMS02LjMtNC42LjMtMy4zIDEuNC04LjEtMi44LTguMi00LjUtLjEtMTMuMiAxLjEtMjUuNiAxMC0xMi4zIDguOS0xNi40IDE2LjgtMTcuNyAyMS4xLTEuNCA0LjIgMy42IDQuNiA2LjggNS40ek02MjAgNDA2LjdMNDcxLjIgMTk4LjhjLTEzLjItMTguNS0yNi42LTIzLjQtNTYuNC0zOS4xLTExLjItNS45LTE0LjItMTAuOS0zMC41LTI4LjktMS0xLjEtMi45LS45LTMuNi41LTQ2LjMgODguOC00Ny4xIDgyLjgtNDkgOTQuOC0xLjcgMTAuNy0xLjMgMjAgLjMgMjkuOCAxLjkgMTIgNi42IDIzLjUgMTMuNyAzMy40bDE0OC45IDIwNy45YzcuNiAxMC42IDIwLjIgMTYuMiAzMy4xIDE0LjcgNDAuMy00LjkgNzgtMzIgOTUuNy02OC42IDUuNC0xMS45IDQuMy0yNS45LTMuNC0zNi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAzLjIgMzAzYy01LjIgMy42LTMyLjYgMTMuMS0zMi42LTE5VjE4MEgzNy45djEwMi42YzAgNzQuOSA4MC4yIDUxLjEgOTcuOSAzOVYxODBoLTMyLjZ6TTQgNzQuODJ2MjIwLjljMCAxMDMuNyA3NC45IDEzNS4yIDE4Ny43IDE4NC4xIDExMi40LTQ4LjkgMTg3LjctODAuMiAxODcuNy0xODQuMVY3NC44MmMtMTE2LjMtNjEuNi0yODEuOC00OS42LTM3NS40IDB6bTM1OC4xIDIyMC45YzAgODYuNi01My4yIDExMy42LTE3MC40IDE2NS4zLTExNy41LTUxLjgtMTcwLjUtNzguNy0xNzAuNS0xNjUuM3YtMTI2LjRjMTAyLjMtOTMuOCAyMzEuNi0xMDAgMzQwLjktODkuOHptLTIwOS42LTEwNy40djIxMi44aDMyLjd2LTY4LjdjMjQuNCA3LjMgNzEuNy0yLjYgNzEuNy03OC41IDAtOTcuNC04MC43LTgwLjkyLTEwNC40LTY1LjZ6bTMyLjcgMTE3LjN2LTEwMC4zYzguNC00LjIgMzguNC0xMi43IDM4LjQgNDkuMyAwIDY3LjktMzYuNCA1MS44LTM4LjQgNTF6bTc5LjEtODYuNGMuMSA0Ny4zIDUxLjYgNDIuNSA1Mi4yIDcwLjQuNiAyMy41LTMwLjQgMjMtNTAuOCA0Ljl2MzAuMWMzNi4yIDIxLjUgODEuOSA4LjEgODMuMi0zMy41IDEuNy01MS41LTU0LjEtNDYuNi01My40LTczLjIuNi0yMC4zIDMwLjYtMjAuNSA0OC41LTIuMnYtMjguNGMtMjguNS0yMi03OS45LTkuMi03OS43IDMxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwd29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQxIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTQuNyAyOTUuNmMtNTAuMyAwLTgzLjUtMzguOS05Mi44LTUzLjljMTEuOS05NS4zIDQ2LjgtMTI1LjQgOTIuOC0xMjUuNGM0NS41IDAgODAuOSAzNi40IDgwLjkgODkuN3MtMzUuNCA4OS43LTgwLjkgODkuN3ptMC0yMzcuOGMtODEuOSAwLTEyNy44IDUzLjQtMTQxIDEwOC40Yy0xNC45LTI4LTI1LjktNjUuNS0zNC41LTEwMC4zSDIwNnYxNDFjMCA1MS4xLTIzLjMgODktNjguOCA4OXMtNzEuNi0zNy44LTcxLjYtODlsLjUtMTQxSC44djE0MWMwIDQxLjEgMTMuMyA3OC40IDM3LjYgMTA1LjFjMjUgMjcuNSA1OS4yIDQxLjggOTguOCA0MS44Yzc4LjggMCAxMzMuOC02MC40IDEzMy44LTE0Ni45VjExMi4xYzguMiAzMS4yIDI3LjggOTEuMSA2NS4zIDE0My42bC0zNSAxOTkuNGg2Ni40bDIzLjEtMTQxLjNjNy42IDYuMyAxNS43IDEyIDI0LjIgMTdjMjIuMiAxNCA0Ny43IDIxLjkgNzMuOSAyMi44YzAgMCA0IC4yIDYuMSAuMmM4MS4yIDAgMTQ1LjktNjIuOSAxNDUuOS0xNDcuOHMtNjQuOC0xNDguMS0xNDYtMTQ4LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDEuNSAyNTZjMCAzLjEtMS43IDYuMS00LjUgNy41TDU0Ny45IDMxN2MtMS40LjgtMi44IDEuNC00LjUgMS40LTEuNCAwLTMuMS0uMy00LjUtMS4xLTIuOC0xLjctNC41LTQuNS00LjUtNy44di0zNS42SDI5NS43YzI1LjMgMzkuNiA0MC41IDEwNi45IDY5LjYgMTA2LjlIMzkyVjM1NGMwLTUgMy45LTguOSA4LjktOC45SDQ5MGM1IDAgOC45IDMuOSA4LjkgOC45djg5LjFjMCA1LTMuOSA4LjktOC45IDguOWgtODkuMWMtNSAwLTguOS0zLjktOC45LTguOXYtMjYuN2gtMjYuN2MtNzUuNCAwLTgxLjEtMTQyLjUtMTI0LjctMTQyLjVIMTQwLjNjLTguMSAzMC42LTM1LjkgNTMuNS02OSA1My41QzMyIDMyNy4zIDAgMjk1LjMgMCAyNTZzMzItNzEuMyA3MS4zLTcxLjNjMzMuMSAwIDYxIDIyLjggNjkgNTMuNSAzOS4xIDAgNDMuOSA5LjUgNzQuNi02MC40QzI1NSA4OC43IDI3MyA5NS43IDMyMy44IDk1LjdjNy41LTIwLjkgMjctMzUuNiA1MC40LTM1LjYgMjkuNSAwIDUzLjUgMjMuOSA1My41IDUzLjVzLTIzLjkgNTMuNS01My41IDUzLjVjLTIzLjQgMC00Mi45LTE0LjgtNTAuNC0zNS42SDI5NGMtMjkuMSAwLTQ0LjMgNjcuNC02OS42IDEwNi45aDMxMC4xdi0zNS42YzAtMy4zIDEuNy02LjEgNC41LTcuOCAyLjgtMS43IDYuNC0xLjQgOC45LjNsODkuMSA1My41YzIuOCAxLjEgNC41IDQuMSA0LjUgNy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc3BzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MC4zIDI0MS43YzI1LjgtNDEuMyAxNS4yLTQ4LjgtMTEuNy00OC44aC0yN2MtLjEgMC0xLjUtMS40LTEwLjkgOC0xMS4yIDUuNi0zNy45IDYuMy0zNy45IDguNyAwIDQuNSA3MC4zLTMuMSA4OC4xIDAgOS41IDEuNS0xLjUgMjAuNC00LjQgMzItLjUgNC41IDIuNCAyLjMgMy44LjF6bS0xMTIuMSAyMi42YzY0LTIxLjMgOTcuMy0yMy45IDEwMi0yNi4yIDQuNC0yLjktNC40LTYuNi0yNi4yLTUuOC01MS43IDIuMi0xMzcuNiAzNy4xLTE3Mi42IDUzLjlsLTMwLjctOTMuM2gxOTYuNmMtMi43LTI4LjItMTUyLjktMjIuNi0zMzcuOS0yMi42TDI3IDQxNS44YzE5Ni40LTk3LjMgMjU4LjktMTMwLjMgMzIxLjItMTUxLjV6TTk0LjcgOTZjMjUzLjMgNTMuNyAzMzAgNjUuNyAzMzIuMSA4NS4yIDM2LjQgMCA0NS45IDAgNTIuNCA2LjYgMjEuMSAxOS43LTE0LjYgNjcuNy0xNC42IDY3LjctNC40IDIuOS00MDYuNCAxNjAuMi00MDYuNCAxNjAuMmg0MjMuMUw1NDkgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzc3VubmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MS45IDI2OC4xQTI0MC45IDI0MC45IDAgMSAxIC4xIDI2OGEyNDAuOSAyNDAuOSAwIDEgMSA0ODEuOSAwek0yNC41IDI2OGEyMTYuNSAyMTYuNSAwIDEgMCA0MzIuOSAwQTIxNi41IDIxNi41IDAgMSAwIDI0LjUgMjY4em0zODUuOSA2My4zYy0xMi43IDAtMjEuNi0xLjktMjYuNy01LjljLTUuNS00LjMtOC4yLTEyLjMtOC4yLTIzLjhWMjA1LjFjMC02LjUtNS4yLTIwLjItMTUuNy00MS4yYzcgMCAxNy05LjEgMzAtMjcuMlYyODQuNWMwIDExIDIuNCAxOS40IDcgMjUuM2MzLjcgNC43IDEwLjEgOC45IDE5IDEyLjZjMS4yIC40IDIuNiAuOSA0LjEgMS40YzIuOSAuOSA2LjMgMi4xIDEwLjMgMy41Yy0xLjggMi43LTguMyA0LTE5LjkgNHptLTIxOSAwYy0xLjMgMi40LTMuNiA1LjUtNi44IDkuNGwtMTguNSAyMi41Yy0xLTYuMS00LTEzLTkuMy0yMC42cy05LjctMTEuNC0xMy40LTExLjRoLTguM0g1My42YzMuMy01LjMgNC45LTguOCA0LjktMTAuOGMwLTItLjgtNS4zLTIuNC05LjdjLTEuNS00LjQtMi40LTguNS0yLjQtMTIuNGMwLTcuNCAyLjEtMTMuOSA2LjMtMTkuM0w4MCAyNTMuNGwtNy4xLTE3LjdMODkgMjE1LjlsNi43IDE2LjggOC0xMC4zYy0xLjggNi40LTIuNiAxMi4zLTIuNiAxNy43YzAgNC4yIDIuOCAxMy4zIDguMyAyNy4zbDE2LjIgNDAuN0gxMzVoOCAuM2MyLjggLjQgNy43IDUgMTQuNiAxMy45YzEuOCAyLjQgNC4zIDUuOCA3LjcgMTAuMmMxLjQgMS45IDIuOSAzLjkgNC42IDYuMWMxLjMtMi4zIDItNC42IDItNy4xYzAtMi0xLjMtNi42LTQtMTMuNEwxNjMgMzA0LjFjLTQtMTAuNi02LjEtMTcuNy02LjEtMjEuM2MwLTYuMyAxLjktMTIuMyA1LjgtMTcuOWMuNS0uNiAxLTEuMyAxLjUtMS45YzQuNC01LjYgOC44LTExLjEgMTMuMy0xNi41Yy0xLjEgNC42LTEuNyA4LjctMS43IDEyYzAgMy43IDEuNyA5LjkgNS4xIDE4LjhsNy45IDIwLjRjMS45IDQuNyAzIDguMiAzLjcgMTAuM2gxNy42IDguM2wtLjktMi42Yy0xLjQtMy45LTQtNy03LjctOS4zbDE1LjYtMjAuMSAxMi4zIDMyaDEzLjRMMjQ1IDI5Mi4yYy0xLjUtMy45LTQtNy03LjctOS4zTDI1MyAyNjIuOCAyNzAuMyAzMDhoMTMuNGwtMTEuNC0yOS40Yy0xLjUtMy45LTQtNy03LjctOS4zbDE1LjYtMjBMMzAyLjYgMzA4aDEwLjMgOC4zIDcuNmMxLjUgMCAzLTEuMSA0LjUtMy4xczIuMi00LjEgMi4yLTYuM1YyMDUuMWMwLTYuNS00LjUtMjAuMy0xMy43LTQxLjJjNS40IDAgMTQuMS05LjEgMjYuMi0yNy4yVjMwMC4yYzAgNy4yIC42IDEyIDEuNyAxNC42YzEuNiAzLjQgNS4zIDYuMiAxMS4xIDguMmMtMy45IDUuNi04LjcgOC41LTE0LjUgOC41SDMyMS4xaC04LjNIMjEwLjVoLTE5ek05My40IDI4Ny4zYy0yLjctNi43LTQtMTEuNy00LTE1Yy0uNiAxLjItMi40IDMuNy01LjQgNy42Yy0xLjQgMS45LTIuMiAzLjctMi4yIDUuM2MwIDIuNiAuOCA1LjcgMi4yIDkuM2w1LjYgMTMuOWgwYzUgMCA5IDAgMTEuOS0uMWwtOC4yLTIwLjl6bTEzLjUtNzIuNGMtMy01LjItNy05LjMtMTEuOS0xMS45Yy0zLjUtMS45LTUuMy00LjMtNS4zLTcuNGMwLTIuNCA0LjYtOC42IDE0LTE4LjNjLjIgMy44IDEuOSA3LjYgNC45IDExLjJjMy4xIDMuNiA0LjYgNyA0LjYgMTAuMWMwIDIuNi0yLjEgOC02LjIgMTYuM3ptLTI3LjYgMGMtMy01LjItNy05LjMtMTEuOS0xMS45Yy0zLjUtMS45LTUuMy00LjMtNS4zLTcuNGMwLTIuNCA0LjYtOC42IDE0LTE4LjNjLjIgMy44IDEuOSA3LjYgNC45IDExLjJjMy4xIDMuNiA0LjYgNyA0LjYgMTAuMWMwIDIuNi0yLjEgOC02LjIgMTYuM3ptODcgMjcuNWMtMy01LjItNy05LjMtMTEuOS0xMS45Yy0zLjUtMS45LTUuMy00LjMtNS4zLTcuNGMwLTIuNCA0LjYtOC42IDE0LTE4LjNjLjIgMy44IDEuOSA3LjYgNC45IDExLjJjMy4xIDMuNiA0LjYgNyA0LjYgMTAuMWMwIDIuNi0yLjEgOC02LjIgMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmFhZGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC41IDE0MC43YzEuNS0xNy42IDQuOS01Mi43IDQ5LjgtNTIuN2g5OC42YzIwLjcgMCAzMi4xLTcuOCAzMi4xLTIxLjZWNTQuMWMwLTEyLjIgOS4zLTIyLjEgMjEuNS0yMi4xUzQ0OCA0MS45IDQ0OCA1NC4xdjM2LjVjMCA0Mi45LTIxLjUgNjItNjYuOCA2MkgyODAuN2MtMzAuMSAwLTMzIDE0LjctMzMgMjcuMSAwIDEuMy0uMSAyLjUtLjIgMy43LS43IDEyLjMtMTAuOSAyMi4yLTIzLjQgMjIuMnMtMjIuNy05LjgtMjMuNC0yMi4yYy0uMS0xLjItLjItMi40LS4yLTMuNyAwLTEyLjMtMy0yNy4xLTMzLTI3LjFINjYuOGMtNDUuMyAwLTY2LjgtMTkuMS02Ni44LTYyVjU0LjFDMCA0MS45IDkuNCAzMiAyMS42IDMyczIxLjUgOS45IDIxLjUgMjIuMXYxMi4zQzQzLjEgODAuMiA1NC41IDg4IDc1LjIgODhoOTguNmM0NC44IDAgNDguMyAzNS4xIDQ5LjggNTIuN2guOXpNMjI0IDQ1NmMxMS41IDAgMjEuNC03IDI1LjctMTYuMyAxLjEtMS44IDk3LjEtMTY5LjYgOTguMi0xNzEuNCAxMS45LTE5LjYtMy4yLTQ0LjMtMjcuMi00NC4zLTEzLjkgMC0yMy4zIDYuNC0yOS44IDIwLjNMMjI0IDM2MmwtNjYuOS0xMTcuN2MtNi40LTEzLjktMTUuOS0yMC4zLTI5LjgtMjAuMy0yNCAwLTM5LjEgMjQuNi0yNy4yIDQ0LjMgMS4xIDEuOSA5Ny4xIDE2OS42IDk4LjIgMTcxLjQgNC4zIDkuMyAxNC4yIDE2LjMgMjUuNyAxNi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFjb2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMmgtNjRsLTgwLjcgMTkyaC05NC41TDY0IDMySDBsNDggMTEySDB2NDhoNjguNWwxMy44IDMySDB2NDhoMTAyLjhMMTkyIDQ4MGw4OS4yLTIwOEgzODR2LTQ4aC04Mi4zbDEzLjgtMzJIMzg0di00OGgtNDhsNDgtMTEyek0xOTIgMzM2bC0yNy02NGg1NGwtMjcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzYuMiAxNTAuNXYuN0MyNTguMyA5OC42IDIzMy42IDQ3LjggMjA1LjQgMGM0My4zIDI5LjIgNjcgMTAwIDcwLjggMTUwLjV6bTMyLjcgMTIxLjdjNy42IDE4LjIgMTEgMzcuNSAxMSA1NyAwIDc3LjctNTcuOCAxNDEtMTM3LjggMTM5LjRsMy44LS4zYzc0LjItNDYuNyAxMDkuMy0xMTguNiAxMDkuMy0yMDUuMSAwLTM4LjEtNi41LTc1LjktMTguOS0xMTIgMSAxMS43IDEgMjMuNyAxIDM1LjQgMCA5MS44LTE4LjEgMjQxLjYtMTE2LjYgMjgwQzk1IDQ1NS4yIDQ5LjQgMzk4IDQ5LjQgMzI5LjJjMC03NS42IDU3LjQtMTQyLjMgMTM1LjQtMTQyLjMgMTYuOCAwIDMzLjcgMy4xIDQ5LjEgOS42IDEuNy0xNS4xIDYuNS0yOS45IDEzLjQtNDMuMy0xOS45LTcuMi00MS4yLTEwLjctNjIuNS0xMC43LTE2MS41IDAtMjM4LjcgMTk1LjktMTI5LjkgMzEzLjcgNjcuOSA3NC42IDE5MiA3My45IDI1OS44IDAgNTYuNi02MS4zIDYwLjktMTQyLjQgMzYuNC0yMDEtMTIuNyA4LTI3LjEgMTMuOS00Mi4yIDE3ek00MTguMSAxMS43Yy0zMSA2Ni41LTgxLjMgNDcuMi0xMTUuOCA4MC4xLTEyLjQgMTItMjAuNiAzNC0yMC42IDUwLjUgMCAxNC4xIDQuNSAyNy4xIDEyIDM4LjggNDcuNC0xMSA5OC4zLTQ2IDExOC4yLTkwLjctLjcgNS41LTQuOCAxNC40LTcuMiAxOS4yLTIwLjMgMzUuNy02NC42IDY1LjYtOTkuNyA4NC45IDE0LjggMTQuNCAzMy43IDI1LjggNTUgMjUuOCA3OSAwIDExMC4xLTEzNC42IDU4LjEtMjA4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NCA0OS45QzQzMS4zIDM4LjIgMzc5LjkuOSAyNjUuMy40YzAgMC0xMzUuMS04LjEtMjAwLjkgNTIuM0MyNy44IDg5LjMgMTQuOSAxNDMgMTMuNSAyMDkuNWMtMS40IDY2LjUtMy4xIDE5MS4xIDExNyAyMjQuOWguMWwtLjEgNTEuNnMtLjggMjAuOSAxMyAyNS4xYzE2LjYgNS4yIDI2LjQtMTAuNyA0Mi4zLTI3LjggOC43LTkuNCAyMC43LTIzLjIgMjkuOC0zMy43IDgyLjIgNi45IDE0NS4zLTguOSAxNTIuNS0xMS4yIDE2LjYtNS40IDExMC41LTE3LjQgMTI1LjctMTQyIDE1LjgtMTI4LjYtNy42LTIwOS44LTQ5LjgtMjQ2LjV6TTQ1Ny45IDI4N2MtMTIuOSAxMDQtODkgMTEwLjYtMTAzIDExNS4xLTYgMS45LTYxLjUgMTUuNy0xMzEuMiAxMS4yIDAgMC01MiA2Mi43LTY4LjIgNzktNS4zIDUuMy0xMS4xIDQuOC0xMS01LjcgMC02LjkuNC04NS43LjQtODUuNy0uMSAwLS4xIDAgMCAwLTEwMS44LTI4LjItOTUuOC0xMzQuMy05NC43LTE4OS44IDEuMS01NS41IDExLjYtMTAxIDQyLjYtMTMxLjYgNTUuNy01MC41IDE3MC40LTQzIDE3MC40LTQzIDk2LjkuNCAxNDMuMyAyOS42IDE1NC4xIDM5LjQgMzUuNyAzMC42IDUzLjkgMTAzLjggNDAuNiAyMTEuMXptLTEzOS04MC44Yy40IDguNi0xMi41IDkuMi0xMi45LjYtMS4xLTIyLTExLjQtMzIuNy0zMi42LTMzLjktOC42LS41LTcuOC0xMy40LjctMTIuOSAyNy45IDEuNSA0My40IDE3LjUgNDQuOCA0Ni4yem0yMC4zIDExLjNjMS00Mi40LTI1LjUtNzUuNi03NS44LTc5LjMtOC41LS42LTcuNi0xMy41LjktMTIuOSA1OCA0LjIgODguOSA0NC4xIDg3LjggOTIuNS0uMSA4LjYtMTMuMSA4LjItMTIuOS0uM3ptNDcgMTMuNGMuMSA4LjYtMTIuOSA4LjctMTIuOS4xLS42LTgxLjUtNTQuOS0xMjUuOS0xMjAuOC0xMjYuNC04LjUtLjEtOC41LTEyLjkgMC0xMi45IDczLjcuNSAxMzMgNTEuNCAxMzMuNyAxMzkuMnpNMzc0LjkgMzI5di4yYy0xMC44IDE5LTMxIDQwLTUxLjggMzMuM2wtLjItLjNjLTIxLjEtNS45LTcwLjgtMzEuNS0xMDIuMi01Ni41LTE2LjItMTIuOC0zMS0yNy45LTQyLjQtNDIuNC0xMC4zLTEyLjktMjAuNy0yOC4yLTMwLjgtNDYuNi0yMS4zLTM4LjUtMjYtNTUuNy0yNi01NS43LTYuNy0yMC44IDE0LjItNDEgMzMuMy01MS44aC4yYzkuMi00LjggMTgtMy4yIDIzLjkgMy45IDAgMCAxMi40IDE0LjggMTcuNyAyMi4xIDUgNi44IDExLjcgMTcuNyAxNS4yIDIzLjggNi4xIDEwLjkgMi4zIDIyLTMuNyAyNi42bC0xMiA5LjZjLTYuMSA0LjktNS4zIDE0LTUuMyAxNHMxNy44IDY3LjMgODQuMyA4NC4zYzAgMCA5LjEuOCAxNC01LjNsOS42LTEyYzQuNi02IDE1LjctOS44IDI2LjYtMy43IDE0LjcgOC4zIDMzLjQgMjEuMiA0NS44IDMyLjkgNyA1LjcgOC42IDE0LjQgMy44IDIzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbWVvViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDcuOCAxNTMuNmMtMiA0My42LTMyLjQgMTAzLjMtOTEuNCAxNzkuMS02MC45IDc5LjItMTEyLjQgMTE4LjgtMTU0LjYgMTE4LjgtMjYuMSAwLTQ4LjItMjQuMS02Ni4zLTcyLjNDMTAwLjMgMjUwIDg1LjMgMTc0LjMgNTYuMiAxNzQuM2MtMy40IDAtMTUuMSA3LjEtMzUuMiAyMS4xTDAgMTY4LjJjNTEuNi00NS4zIDEwMC45LTk1LjcgMTMxLjgtOTguNSAzNC45LTMuNCA1Ni4zIDIwLjUgNjQuNCA3MS41IDI4LjcgMTgxLjUgNDEuNCAyMDguOSA5My42IDEyNi43IDE4LjctMjkuNiAyOC44LTUyLjEgMzAuMi02Ny42IDQuOC00NS45LTM1LjgtNDIuOC02My4zLTMxIDIyLTcyLjEgNjQuMS0xMDcuMSAxMjYuMi0xMDUuMSA0NS44IDEuMiA2Ny41IDMxLjEgNjQuOSA4OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaW1lbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDMuMiAzMkg0NC44QzIwLjEgMzIgMCA1Mi4xIDAgNzYuOHYzNTguNEMwIDQ1OS45IDIwLjEgNDgwIDQ0LjggNDgwaDM1OC40YzI0LjcgMCA0NC44LTIwLjEgNDQuOC00NC44Vjc2LjhjMC0yNC43LTIwLjEtNDQuOC00NC44LTQ0Ljh6TTM3NyAxODAuOGMtMS40IDMxLjUtMjMuNCA3NC43LTY2IDEyOS40LTQ0IDU3LjItODEuMyA4NS44LTExMS43IDg1LjgtMTguOSAwLTM0LjgtMTcuNC00Ny45LTUyLjMtMjUuNS05My4zLTM2LjQtMTQ4LTU3LjQtMTQ4LTIuNCAwLTEwLjkgNS4xLTI1LjQgMTUuMmwtMTUuMi0xOS42YzM3LjMtMzIuOCA3Mi45LTY5LjIgOTUuMi03MS4yIDI1LjItMi40IDQwLjcgMTQuOCA0Ni41IDUxLjcgMjAuNyAxMzEuMiAyOS45IDE1MSA2Ny42IDkxLjYgMTMuNS0yMS40IDIwLjgtMzcuNyAyMS44LTQ4LjkgMy41LTMzLjItMjUuOS0zMC45LTQ1LjgtMjIuNCAxNS45LTUyLjEgNDYuMy03Ny40IDkxLjItNzYgMzMuMy45IDQ5IDIyLjUgNDcuMSA2NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAyNTQuN3Y1Mi4xYy0xOC40IDQuMi0zNi45IDYuMS01Mi4xIDYuMS0zNi45IDc3LjQtMTAzIDE0My44LTEyNS4xIDE1Ni4yLTE0IDcuOS0yNy4xIDguNC00Mi43LS44QzEzNyA0NTIgMzQuMiAzNjcuNyAwIDEwMi43aDc0LjVDOTMuMiAyNjEuOCAxMzkgMzQzLjQgMTg5LjMgNDA0LjVjMjcuOS0yNy45IDU0LjgtNjUuMSA3NS42LTEwNi45LTQ5LjgtMjUuMy04MC4xLTgwLjktODAuMS0xNDUuNiAwLTY1LjYgMzcuNy0xMTUuMSAxMDIuMi0xMTUuMSAxMTQuOSAwIDEwNi4yIDEyNy45IDgxLjYgMTgxLjUgMCAwLTQ2LjQgOS4yLTYzLjUtMjAuNSAzLjQtMTEuMyA4LjItMzAuOCA4LjItNDguNSAwLTMxLjMtMTEuMy00Ni42LTI4LjQtNDYuNi0xOC4yIDAtMzAuOCAxNy4xLTMwLjggNTAgLjEgNzkuMiA1OS40IDExOC43IDEyOS45IDEwMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMS40OTA3IDYzLjQ5MDdDMCA5NC45ODEzIDAgMTQ1LjY3MSAwIDI0Ny4wNFYyNjQuOTZDMCAzNjYuMzI5IDAgNDE3LjAxOSAzMS40OTA3IDQ0OC41MDlDNjIuOTgxMyA0ODAgMTEzLjY3MSA0ODAgMjE1LjA0IDQ4MEgyMzIuOTZDMzM0LjMyOSA0ODAgMzg1LjAxOSA0ODAgNDE2LjUwOSA0NDguNTA5QzQ0OCA0MTcuMDE5IDQ0OCAzNjYuMzI5IDQ0OCAyNjQuOTZWMjQ3LjA0QzQ0OCAxNDUuNjcxIDQ0OCA5NC45ODEzIDQxNi41MDkgNjMuNDkwN0MzODUuMDE5IDMyIDMzNC4zMjkgMzIgMjMyLjk2IDMySDIxNS4wNEMxMTMuNjcxIDMyIDYyLjk4MTMgMzIgMzEuNDkwNyA2My40OTA3Wk03NS42IDE2OC4yNjdIMTI2Ljc0N0MxMjguNDI3IDI1My43NiAxNjYuMTMzIDI4OS45NzMgMTk2IDI5Ny40NFYxNjguMjY3SDI0NC4xNlYyNDJDMjczLjY1MyAyMzguODI3IDMwNC42NCAyMDUuMjI3IDMxNS4wOTMgMTY4LjI2N0gzNjMuMjUzQzM1OS4zMTMgMTg3LjQzNSAzNTEuNDYgMjA1LjU4MyAzNDAuMTg2IDIyMS41NzlDMzI4LjkxMyAyMzcuNTc0IDMxNC40NjEgMjUxLjA3MSAyOTcuNzMzIDI2MS4yMjdDMzE2LjQxIDI3MC40OTkgMzMyLjkwNyAyODMuNjMgMzQ2LjEzMiAyOTkuNzUxQzM1OS4zNTcgMzE1Ljg3MyAzNjkuMDEgMzM0LjYxOCAzNzQuNDUzIDM1NC43NDdIMzIxLjQ0QzMxNi41NTUgMzM3LjI2MiAzMDYuNjE0IDMyMS42MSAyOTIuODY1IDMwOS43NTRDMjc5LjExNyAyOTcuODk5IDI2Mi4xNzMgMjkwLjM2OCAyNDQuMTYgMjg4LjEwN1YzNTQuNzQ3SDIzOC4zNzNDMTM2LjI2NyAzNTQuNzQ3IDc4LjAyNjcgMjg0Ljc0NyA3NS42IDE2OC4yNjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZudiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQuOSAzNTJjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40TDIuNiAyMTAuMVMtNy44IDE5MiAxMyAxOTJoMzIuOGMxMC40IDAgMTMuMiA4LjcgMTguOCAxOC4xbDM2LjcgNzQuNXM1LjIgMTMuMSAyMS4xIDEzLjEgMjEuMS0xMy4xIDIxLjEtMTMuMWwzNi43LTc0LjVjNS42LTkuNSA4LjQtMTguMSAxOC44LTE4LjFoMzIuOGMyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOCAxMTEuNVMxNzQuMiAzNTIgMTQwIDM1MmgtMzUuMXptMzk1IDBjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40bC01NS45LTExMS41UzM4Ny4yIDE5MiA0MDggMTkyaDMyLjhjMTAuNCAwIDEzLjIgOC43IDE4LjggMTguMWwzNi43IDc0LjVzNS4yIDEzLjEgMjEuMSAxMy4xIDIxLjEtMTMuMSAyMS4xLTEzLjFsMzYuOC03NC41YzUuNi05LjUgOC40LTE4LjEgMTguOC0xOC4xSDYyN2MyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOSAxMTEuNVM1NjkuMyAzNTIgNTM1LjEgMzUyaC0zNS4yek0zMzcuNiAxOTJjMzQuMSAwIDQ2LjQgMzAuNCA0Ni40IDMwLjRsNTUuOSAxMTEuNXMxMC40IDE4LjEtMTAuNCAxOC4xaC0zMi44Yy0xMC40IDAtMTMuMi04LjctMTguOC0xOC4xbC0zNi43LTc0LjVzLTUuMi0xMy4xLTIxLjEtMTMuMWMtMTUuOSAwLTIxLjEgMTMuMS0yMS4xIDEzLjFsLTM2LjcgNzQuNWMtNS42IDkuNC04LjQgMTguMS0xOC44IDE4LjFoLTMyLjljLTIwLjggMC0xMC40LTE4LjEtMTAuNC0xOC4xbDU1LjktMTExLjVzMTIuMi0zMC40IDQ2LjQtMzAuNGgzNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWdWVqcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTYuOSA2NC4zSDI4MGwtNTYgODguNi00OC04OC42SDBMMjI0IDQ0OCA0NDggNjQuM2gtOTEuMXptLTMwMS4yIDMyaDUzLjhMMjI0IDI5NC41IDMzOC40IDk2LjNoNTMuOEwyMjQgMzg0LjUgNTUuNyA5Ni4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXRjaG1hbk1vbml0b3JpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDE2QzEyMy40NTIsMTYsMTYsMTIzLjQ1MiwxNiwyNTZTMTIzLjQ1Miw0OTYsMjU2LDQ5Niw0OTYsMzg4LjU0OCw0OTYsMjU2LDM4OC41NDgsMTYsMjU2LDE2Wk0xMjEuNjksNDI5LjEyMkM3MC4wNTYsMzg4Ljk3MiwzNi43NDEsMzI2LjMyMiwzNi43NDEsMjU2YTIxOC41MTksMjE4LjUxOSwwLDAsMSw5LjU4Ny02NC4xMjJsMTAyLjktMTcuODk1LS4xMjEsMTAuOTY3LTEzLjk0MywyLjAxM3MtLjE0NCwxMi41LS4xNDQsMTkuNTQ5YTEyLjc3OCwxMi43NzgsMCwwLDAsNC44ODcsMTAuMzQ5bDkuNDY4LDcuNFptMTA1LjY5Mi0yODMuMjcsOC40OC03LjYxOHM2LjkzNC01LjM4LS4xNDMtOS4zNDRjLTcuMTg4LTQuMDI0LTM5LjUzLTM0LjUtMzkuNTMtMzQuNS01LjM0OC01LjQ3Ny04LjI1Ny03LjM0Ny0xNS40NiwwLDAsMC0zMi4zNDIsMzAuNDc0LTM5LjUyOSwzNC41LTcuMDc4LDMuOTY0LS4xNDQsOS4zNDQtLjE0NCw5LjM0NGw4LjQ4MSw3LjYxOC0uMDQ4LDQuMzY5TDc1Ljk4MiwxMzEuMDQ1YzM5LjY0NC01Ni45MzgsMTA1LjUzMi05NC4zLDE4MC4wMTgtOTQuM0EyMTguNzU0LDIxOC43NTQsMCwwLDEsNDIwLjkzNCwxMTEuNzdsLTE5My41MTIsMzcuN1ptMzQuMDYzLDMyOS4yNjktMzMuOS0yNTAuODU3LDkuNDY3LTcuNGExMi43NzgsMTIuNzc4LDAsMCwwLDQuODg4LTEwLjM0OWMwLTcuMDQ0LS4xNDQtMTkuNTQ5LS4xNDQtMTkuNTQ5bC0xMy45NDMtMi4wMTMtLjExNi0xMC40NzQsMjQxLjcxMSwzMS4zOTFBMjE4Ljg3MiwyMTguODcyLDAsMCwxLDQ3NS4yNTksMjU2QzQ3NS4yNTksMzc1LjA3NCwzNzkuODMxLDQ3Mi4yMTIsMjYxLjQ0NSw0NzUuMTIxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4xNyAyMDEuNjdDNTE2LjY5IDI4Ny41MyA0NzEuMjMgMzY5LjU5IDM4OSA0MDkuOGMxMyAzNC4xLTEyLjQgNzAuMi00OC4zMiA3MC4yYTUxLjY4IDUxLjY4IDAgMCAxLTUxLjU3LTQ5Yy02LjQ0LjE5LTY0LjIgMC03Ni4zMy0uNjRBNTEuNjkgNTEuNjkgMCAwIDEgMTU5IDQ3OS45MmMtMzMuODYtMS4zNi01Ny45NS0zNC44NC00Ny02Ny45Mi0zNy4yMS0xMy4xMS03Mi41NC0zNC44Ny05OS42Mi03MC44LTEzLTE3LjI4LS40OC00MS44IDIwLjg0LTQxLjggNDYuMzEgMCAzMi4yMi01NC4xNyA0My4xNS0xMTAuMjZDOTQuOCA5NS4yIDE5My4xMiAzMiAyODguMDkgMzJjMTAyLjQ4IDAgMTk3LjE1IDcwLjY3IDIxNC4wOCAxNjkuNjd6TTM3My41MSAzODguMjhjNDItMTkuMTggODEuMzMtNTYuNzEgOTYuMjktMTAyLjE0IDQwLjQ4LTEyMy4wOS02NC4xNS0yMjgtMTgxLjcxLTIyOC04My40NSAwLTE3MC4zMiA1NS40Mi0xODYuMDcgMTM2LTkuNTMgNDguOTEgNSAxMzEuMzUtNjguNzUgMTMxLjM1QzU4LjIxIDM1OC42IDkxLjYgMzc4LjExIDEyNyAzODkuNTRjMjQuNjYtMjEuOCA2My44Ny0xNS40NyA3OS44MyAxNC4zNCAxNC4yMiAxIDc5LjE5IDEuMTggODcuOS44MmE1MS42OSA1MS42OSAwIDAgMSA3OC43OC0xNi40MnpNMjA1LjEyIDE4Ny4xM2MwLTM0Ljc0IDUwLjg0LTM0Ljc1IDUwLjg0IDBzLTUwLjg0IDM0Ljc0LTUwLjg0IDB6bTExNi41NyAwYzAtMzQuNzQgNTAuODYtMzQuNzUgNTAuODYgMHMtNTAuODYgMzQuNzUtNTAuODYgMHptLTEyMi42MSA3MC42OWMtMy40NC0xNi45NCAyMi4xOC0yMi4xOCAyNS42Mi01LjIxbC4wNi4yOGM0LjE0IDIxLjQyIDI5Ljg1IDQ0IDY0LjEyIDQzLjA3IDM1LjY4LS45NCA1OS4yNS0yMi4yMSA2NC4xMS00Mi43NyA0LjQ2LTE2LjA1IDI4LjYtMTAuMzYgMjUuNDcgNi01LjIzIDIyLjE4LTMxLjIxIDYyLTkxLjQ2IDYyLjktNDIuNTUgMC04MC44OC0yNy44NC04Ny45LTY0LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWJBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Mi4yIDUyYzAgMjAuOS0xMi40IDM5LTMwLjIgNDcuMkw0NDggMTkybDEwNC40LTIwLjljLTUuMy03LjctOC40LTE3LjEtOC40LTI3LjFjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGMwIDI2LTIwLjYgNDcuMS00Ni40IDQ4TDQ4MSA0NDIuM2MtMTAuMyAyMy0zMy4yIDM3LjctNTguNCAzNy43bC0yMDUuMiAwYy0yNS4yIDAtNDgtMTQuOC01OC40LTM3LjdMNDYuNCAxOTJDMjAuNiAxOTEuMSAwIDE3MCAwIDE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4YzAgMTAuMS0zLjEgMTkuNC04LjQgMjcuMUwxOTIgMTkyIDI5OC4xIDk5LjFjLTE3LjctOC4zLTMwLTI2LjMtMzAtNDcuMWMwLTI4LjcgMjMuMy01MiA1Mi01MnM1MiAyMy4zIDUyIDUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWJmbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCA2NEw0MzUuOCA0NjMuMkgyNDRsODUuNS0xNjUuNWgtMy44QzI1NS4xIDM4OS4zIDE0OS45IDQ0OS41IDAgNDYzLjJWMzAwLjFzOTUuOS01LjcgMTUyLjMtNjQuOUgwVjY0SDE3MS4xVjIwNC44bDMuOCAwTDI0NC45IDY0SDM3NC4zVjIwMy45bDMuOCAwTDQ1MC43IDY0SDY0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VlYmx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNS4wOSA2NS44M2MtMzkuODggMC03My4yOCAyNS43My04My42NiA2NC4zMy0xOC4xNi01OC4wNi02NS41LTY0LjMzLTg0Ljk1LTY0LjMzLTE5Ljc4IDAtNjYuOCA2LjI4LTg1LjI4IDY0LjMzLTEwLjM4LTM4LjYtNDMuNDUtNjQuMzMtODMuNjYtNjQuMzNDMzguNTkgNjUuODMgMCA5OS43MiAwIDE0My4wM2MwIDI4Ljk2IDQuMTggMzMuMjcgNzcuMTcgMjMzLjQ4IDIyLjM3IDYwLjU3IDY3Ljc3IDY5LjM1IDkyLjc0IDY5LjM1IDM5LjIzIDAgNzAuMDQtMTkuNDYgODUuOTMtNTMuOTggMTUuODkgMzQuODMgNDYuNjkgNTQuMjkgODUuOTMgNTQuMjkgMjQuOTcgMCA3MC4zNi05LjEgOTIuNzQtNjkuNjcgNzYuNTUtMjA4LjY1IDc3LjUtMjA1LjU4IDc3LjUtMjI3LjIuNjMtNDguMzItMzYuMDEtODMuNDctODYuOTItODMuNDd6bTI2LjM0IDExNC44MWwtNjUuNTcgMTc2LjQ0Yy03LjkyIDIxLjQ5LTIxLjIyIDM3LjIyLTQ2LjI0IDM3LjIyLTIzLjQ0IDAtMzcuMzgtMTIuNDEtNDQuMDMtMzMuOWwtMzkuMjgtMTE3LjQyaC0uOTVMMjE2LjA4IDM2MC40Yy02Ljk2IDIxLjUtMjAuOSAzMy42LTQ0LjAyIDMzLjYtMjUuMDIgMC0zOC4zMy0xNS43NC00Ni4yNC0zNy4yMkw2MC44OCAxODEuNTVjLTUuMzgtMTQuODMtNy45Mi0yMy45MS03LjkyLTM0LjUgMC0xNi4zNCAxNS44NC0yOS4zNiAzOC4zMy0yOS4zNiAxOC42OSAwIDMxLjk5IDExLjggMzYuMTEgMjkuMDVsNDQuMDMgMTM5LjgyaC45NWw0NC42Ni0xMzYuNzljNi4wMi0xOS42NyAxNi40Ny0zMi4wOCAzOC45Ni0zMi4wOHMzMi45NCAxMi4xMSAzOC45NiAzMi4wOGw0NC42NiAxMzYuNzloLjk1bDQ0LjAzLTEzOS44MmM0LjEyLTE3LjI1IDE3LjQyLTI5LjA1IDM2LjExLTI5LjA1IDIyLjE3IDAgMzguMzMgMTMuMzIgMzguMzMgMzUuNzEtLjMyIDcuODctNC4xMiAxNi4wNC03LjYxIDI3LjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWlibyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgMTc3LjZjNy42LTI0LTEzLjQtNDYuOC0zNy40LTQxLjctMjIgNC44LTI4LjgtMjguMS03LjEtMzIuOCA1MC4xLTEwLjkgOTIuMyAzNy4xIDc2LjUgODQuOC02LjggMjEuMi0zOC44IDEwLjgtMzItMTAuM3pNMjE0LjggNDQ2LjdDMTA4LjUgNDQ2LjcgMCAzOTUuMyAwIDMxMC40YzAtNDQuMyAyOC05NS40IDc2LjMtMTQzLjdDMTc2IDY3IDI3OS41IDY1LjggMjQ5LjkgMTYxYy00IDEzLjEgMTIuMyA1LjcgMTIuMyA2IDc5LjUtMzMuNiAxNDAuNS0xNi44IDExNCA1MS40LTMuNyA5LjQgMS4xIDEwLjkgOC4zIDEzLjEgMTM1LjcgNDIuMyAzNC44IDIxNS4yLTE2OS43IDIxNS4yem0xNDMuNy0xNDYuM2MtNS40LTU1LjctNzguNS05NC0xNjMuNC04NS43LTg0LjggOC42LTE0OC44IDYwLjMtMTQzLjQgMTE2czc4LjUgOTQgMTYzLjQgODUuN2M4NC44LTguNiAxNDguOC02MC4zIDE0My40LTExNnpNMzQ3LjkgMzUuMWMtMjUuOSA1LjYtMTYuOCA0My43IDguMyAzOC4zIDcyLjMtMTUuMiAxMzQuOCA1Mi44IDExMS43IDEyNC03LjQgMjQuMiAyOS4xIDM3IDM3LjQgMTIgMzEuOS05OS44LTU1LjEtMTk1LjktMTU3LjQtMTc0LjN6bS03OC41IDMxMWMtMTcuMSAzOC44LTY2LjggNjAtMTA5LjEgNDYuMy00MC44LTEzLjEtNTgtNTMuNC00MC4zLTg5LjcgMTcuNy0zNS40IDYzLjEtNTUuNCAxMDMuNC00NS4xIDQyIDEwLjggNjMuMSA1MC4yIDQ2IDg4LjV6bS04Ni4zLTMwYy0xMi45LTUuNC0zMCAuMy0zOCAxMi45LTguMyAxMi45LTQuMyAyOCA4LjYgMzQgMTMuMSA2IDMwLjguMyAzOS4xLTEyLjkgOC0xMy4xIDMuNy0yOC4zLTkuNy0zNHptMzIuNi0xMy40Yy01LjEtMS43LTExLjQuNi0xNC4zIDUuNC0yLjkgNS4xLTEuNCAxMC42IDMuNyAxMi45IDUuMSAyIDExLjctLjMgMTQuNi01LjQgMi44LTUuMiAxLjEtMTAuOS00LTEyLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaXhpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODUuMiAxNjcuNmM2LjQgMCAxMi42LjMgMTguOCAxLjFDMzg3LjQgOTAuMyAzMDMuMyAzMiAyMDcuNyAzMiAxMDAuNSAzMiAxMyAxMDQuOCAxMyAxOTcuNGMwIDUzLjQgMjkuMyA5Ny41IDc3LjkgMTMxLjZsLTE5LjMgNTguNiA2OC0zNC4xYzI0LjQgNC44IDQzLjggOS43IDY4LjIgOS43IDYuMiAwIDEyLjEtLjMgMTguMy0uOC00LTEyLjktNi4yLTI2LjYtNi4yLTQwLjgtLjEtODQuOSA3Mi45LTE1NCAxNjUuMy0xNTR6bS0xMDQuNS01Mi45YzE0LjUgMCAyNC4yIDkuNyAyNC4yIDI0LjQgMCAxNC41LTkuNyAyNC4yLTI0LjIgMjQuMi0xNC44IDAtMjkuMy05LjctMjkuMy0yNC4yLjEtMTQuNyAxNC42LTI0LjQgMjkuMy0yNC40em0tMTM2LjQgNDguNmMtMTQuNSAwLTI5LjMtOS43LTI5LjMtMjQuMiAwLTE0LjggMTQuOC0yNC40IDI5LjMtMjQuNCAxNC44IDAgMjQuNCA5LjcgMjQuNCAyNC40IDAgMTQuNi05LjYgMjQuMi0yNC40IDI0LjJ6TTU2MyAzMTkuNGMwLTc3LjktNzcuOS0xNDEuMy0xNjUuNC0xNDEuMy05Mi43IDAtMTY1LjQgNjMuNC0xNjUuNCAxNDEuM1MzMDUgNDYwLjcgMzk3LjYgNDYwLjdjMTkuMyAwIDM4LjktNS4xIDU4LjYtOS45bDUzLjQgMjkuMy0xNC44LTQ4LjZDNTM0IDQwMi4xIDU2MyAzNjMuMiA1NjMgMzE5LjR6bS0yMTkuMS0yNC41Yy05LjcgMC0xOS4zLTkuNy0xOS4zLTE5LjYgMC05LjcgOS43LTE5LjMgMTkuMy0xOS4zIDE0LjggMCAyNC40IDkuNyAyNC40IDE5LjMgMCAxMC05LjcgMTkuNi0yNC40IDE5LjZ6bTEwNy4xIDBjLTkuNyAwLTE5LjMtOS43LTE5LjMtMTkuNiAwLTkuNyA5LjctMTkuMyAxOS4zLTE5LjMgMTQuNSAwIDI0LjQgOS43IDI0LjQgMTkuMy4xIDEwLTkuOSAxOS42LTI0LjQgMTkuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2hhdHNhcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjkgOTcuMUMzMzkgNTUuMSAyODMuMiAzMiAyMjMuOSAzMmMtMTIyLjQgMC0yMjIgOTkuNi0yMjIgMjIyIDAgMzkuMSAxMC4yIDc3LjMgMjkuNiAxMTFMMCA0ODBsMTE3LjctMzAuOWMzMi40IDE3LjcgNjguOSAyNyAxMDYuMSAyN2guMWMxMjIuMyAwIDIyNC4xLTk5LjYgMjI0LjEtMjIyIDAtNTkuMy0yNS4yLTExNS02Ny4xLTE1N3ptLTE1NyAzNDEuNmMtMzMuMiAwLTY1LjctOC45LTk0LTI1LjdsLTYuNy00LTY5LjggMTguM0w3MiAzNTkuMmwtNC40LTdjLTE4LjUtMjkuNC0yOC4yLTYzLjMtMjguMi05OC4yIDAtMTAxLjcgODIuOC0xODQuNSAxODQuNi0xODQuNSA0OS4zIDAgOTUuNiAxOS4yIDEzMC40IDU0LjEgMzQuOCAzNC45IDU2LjIgODEuMiA1Ni4xIDEzMC41IDAgMTAxLjgtODQuOSAxODQuNi0xODYuNiAxODQuNnptMTAxLjItMTM4LjJjLTUuNS0yLjgtMzIuOC0xNi4yLTM3LjktMTgtNS4xLTEuOS04LjgtMi44LTEyLjUgMi44LTMuNyA1LjYtMTQuMyAxOC0xNy42IDIxLjgtMy4yIDMuNy02LjUgNC4yLTEyIDEuNC0zMi42LTE2LjMtNTQtMjkuMS03NS41LTY2LTUuNy05LjggNS43LTkuMSAxNi4zLTMwLjMgMS44LTMuNy45LTYuOS0uNS05LjctMS40LTIuOC0xMi41LTMwLjEtMTcuMS00MS4yLTQuNS0xMC44LTkuMS05LjMtMTIuNS05LjUtMy4yLS4yLTYuOS0uMi0xMC42LS4yLTMuNyAwLTkuNyAxLjQtMTQuOCA2LjktNS4xIDUuNi0xOS40IDE5LTE5LjQgNDYuMyAwIDI3LjMgMTkuOSA1My43IDIyLjYgNTcuNCAyLjggMy43IDM5LjEgNTkuNyA5NC44IDgzLjggMzUuMiAxNS4yIDQ5IDE2LjUgNjYuNiAxMy45IDEwLjctMS42IDMyLjgtMTMuNCAzNy40LTI2LjQgNC42LTEzIDQuNi0yNC4xIDMuMi0yNi40LTEuMy0yLjUtNS0zLjktMTAuNS02LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdobWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxNjF2LTIxLjNsLTI4LjUtOC44LTIuMi0xMC40IDIwLjEtMjAuN0w0MjcgODAuNGwtMjkgNy41LTcuMi03LjUgNy41LTI4LjItMTkuMS0xMS42LTIxLjMgMjEtMTAuNy0zLjItNy0yNi40aC0yMi42bC02LjIgMjYuNC0xMi4xIDMuMi0xOS43LTIxLTE5LjQgMTEgOC4xIDI3LjctOC4xIDguNC0yOC41LTcuNS0xMSAxOS4xIDIwLjcgMjEtMi45IDEwLjQtMjguNSA3LjgtLjMgMjEuNyAyOC44IDcuNSAyLjQgMTIuMS0yMC4xIDE5LjkgMTAuNCAxOC41IDI5LjYtNy41IDcuMiA4LjYtOC4xIDI2LjkgMTkuOSAxMS42IDE5LjQtMjAuNCAxMS42IDIuOSA2LjcgMjguNSAyMi42LjMgNi43LTI4LjggMTEuNi0zLjUgMjAuNyAyMS42IDIwLjQtMTIuMS04LjgtMjggNy44LTguMSAyOC44IDguOCAxMC4zLTIwLjEtMjAuOS0xOC44IDIuMi0xMi4xIDI5LjEtN3ptLTExOS4yIDQ1LjJjLTMxLjMgMC01Ni44LTI1LjQtNTYuOC01Ni44czI1LjQtNTYuOCA1Ni44LTU2LjggNTYuOCAyNS40IDU2LjggNTYuOGMwIDMxLjUtMjUuNCA1Ni44LTU2LjggNTYuOHptNzIuMyAxNi40bDQ2LjkgMTQuNVYyNzdsLTU1LjEgMTMuNC00LjEgMjIuNyAzOC45IDM1LjMtMTkuMiAzNy45LTU0LTE2LjctMTQuNiAxNS4yIDE2LjcgNTIuNS0zOC4zIDIyLjctMzguOS00MC41LTIxLjcgNi42LTEyLjYgNTQtNDIuNC0uNS0xMi42LTUzLjYtMjEuNy01LjYtMzYuNCAzOC40LTM3LjQtMjEuNyAxNS4yLTUwLjUtMTMuNy0xNi4xLTU1LjUgMTQuMS0xOS43LTM0LjggMzcuOS0zNy40LTQuOC0yMi44LTU0LTE0LjEuNS00MC45TDU0IDIxOS45bDUuNy0xOS43LTM4LjktMzkuNEw0MS41IDEyNWw1My42IDE0LjEgMTUuMi0xNS43LTE1LjItNTIgMzYuNC0yMC43IDM2LjggMzkuNEwxOTEgODRsMTEuNi01MkgyNDVsMTEuNiA0NS45TDIzNCA3MmwtNi4zLTEuNy0zLjMgNS43LTExIDE5LjEtMy4zIDUuNiA0LjYgNC42IDE3LjIgMTcuNC0uMyAxLTIzLjggNi41LTYuMiAxLjctLjEgNi40LS4yIDEyLjlDMTUzLjggMTYxLjYgMTE4IDIwNCAxMTggMjU0LjdjMCA1OC4zIDQ3LjMgMTA1LjcgMTA1LjcgMTA1LjcgNTAuNSAwIDkyLjctMzUuNCAxMDMuMi04Mi44bDEzLjIuMiA2LjkuMSAxLjYtNi43IDUuNi0yNCAxLjktLjYgMTcuMSAxNy44IDQuNyA0LjkgNS44LTMuNCAyMC40LTEyLjEgNS44LTMuNS0yLTYuNS02LjgtMjEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2lraXBlZGlhVyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgNTEuMmwtLjMgMTIuMmMtMjguMS44LTQ1IDE1LjgtNTUuOCA0MC4zLTI1IDU3LjgtMTAzLjMgMjQwLTE1NS4zIDM1OC42SDQxNWwtODEuOS0xOTMuMWMtMzIuNSA2My42LTY4LjMgMTMwLTk5LjIgMTkzLjEtLjMuMy0xNSAwLTE1LS4zQzE3MiAzNTIuMyAxMjIuOCAyNDMuNCA3NS44IDEzMy40IDY0LjQgMTA2LjcgMjYuNCA2My40LjIgNjMuN2MwLTMuMS0uMy0xMC0uMy0xNC4yaDE2MS45djEzLjljLTE5LjIgMS4xLTUyLjggMTMuMy00My4zIDM0LjIgMjEuOSA0OS43IDEwMy42IDI0MC4zIDEyNS42IDI4OC42IDE1LTI5LjcgNTcuOC0xMDkuMiA3NS4zLTE0Mi44LTEzLjktMjguMy01OC42LTEzMy45LTcyLjgtMTYwLTkuNy0xNy44LTM2LjEtMTkuNC01NS44LTE5LjdWNDkuOGwxNDIuNS4zdjEzLjFjLTE5LjQuNi0zOC4xIDcuOC0yOS40IDI2LjEgMTguOSA0MCAzMC42IDY4LjEgNDguMSAxMDQuNyA1LjYtMTAuOCAzNC43LTY5LjQgNDguMS0xMDAuOCA4LjktMjAuNi0zLjktMjguNi0zOC42LTI5LjQuMy0zLjYgMC0xMC4zLjMtMTMuNiA0NC40LS4zIDExMS4xLS4zIDEyMy4xLS42djEzLjZjLTIyLjUuOC00NS44IDEyLjgtNTguMSAzMS43bC01OS4yIDEyMi44YzYuNCAxNi4xIDYzLjMgMTQyLjggNjkuMiAxNTYuN0w1NTkuMiA5MS44Yy04LjYtMjMuMS0zNi40LTI4LjEtNDcuMi0yOC4zVjQ5LjZsMTI3LjggMS4xLjIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDkzLjdsMTgzLjYtMjUuM3YxNzcuNEgwVjkzLjd6bTAgMzI0LjZsMTgzLjYgMjUuM1YyNjguNEgwdjE0OS45em0yMDMuOCAyOEw0NDggNDgwVjI2OC40SDIwMy44djE3Ny45em0wLTM4MC42djE4MC4xSDQ0OFYzMkwyMDMuOCA2NS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaXJzaW5kaGFuZHdlcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAuNzcxNjEsNDc5LjgxMjEzaDgzLjM2MDcxVjM2Ny44NDc0MWwtODMuMzYwNzEsNDcuMDA5Wm0zMjkuMDQ2NzUsMGg4Mi4zNTAyMlY0MTQuODU2NDVsLTgyLjM1MDIyLTQ3LjAwOVptLjAwNTY4LTQ0OFYyNTEuNTY4TDI1Ni4xNzU5LDE3OS4xODYxLDEzNC41MDM3OCwyNTEuNTY4VjMxLjgxMjEzSDUwLjc3MTYxVjM5Mi42MDU2NUwyNTYuMTc1OSwyNzAuMzE5MDksNDYyLjE2ODU4LDM5Mi42MDU2NVYzMS44MTIxM1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2l4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5My4zOCAxMzEuNjljMCAxMy4wMyAyLjA4IDMyLjY5LTI4LjY4IDQzLjgzLTkuNTIgMy40NS0xNS45NSA5LjY2LTE1Ljk1IDkuNjYgMC0zMSA0LjcyLTQyLjIyIDE3LjQtNDguODYgOS43NS01LjExIDI3LjIzLTQuNjMgMjcuMjMtNC42M3ptLTExNS44IDM1LjU0bC0zNC4yNCAxMzIuNjYtMjguNDgtMTA4LjU3Yy03LjY5LTMxLjk5LTIwLjgxLTQ4LjUzLTQ4LjQzLTQ4LjUzLTI3LjM3IDAtNDAuNjYgMTYuMTgtNDguNDMgNDguNTNMODkuNTIgMjk5Ljg5IDU1LjI4IDE2Ny4yM0M0OS43MyAxNDAuNTEgMjMuODYgMTI4Ljk2IDAgMTMxLjk2bDY1LjU3IDI0Ny45M3MyMS42MyAxLjU2IDMyLjQ2LTMuOTZjMTQuMjItNy4yNSAyMC45OC0xMi44NCAyOS41OS00Ni41NyA3LjY3LTMwLjA3IDI5LjExLTExOC40MSAzMS4xMi0xMjQuNyA0Ljc2LTE0Ljk0IDExLjA5LTEzLjgxIDE1LjQgMCAxLjk3IDYuMyAyMy40NSA5NC42MyAzMS4xMiAxMjQuNyA4LjYgMzMuNzMgMTUuMzcgMzkuMzIgMjkuNTkgNDYuNTcgMTAuODIgNS41MiAzMi40NiAzLjk2IDMyLjQ2IDMuOTZsNjUuNTctMjQ3LjkzYy0yNC40Mi0zLjA3LTQ5LjgyIDguOTMtNTUuMyAzNS4yN3ptMTE1Ljc4IDUuMjFzLTQuMSA2LjM0LTEzLjQ2IDExLjU3Yy02LjAxIDMuMzYtMTEuNzggNS42NC0xNy45NyA4LjYxLTE1LjE0IDcuMjYtMTMuMTggMTMuOTUtMTMuMTggMzUuMnYxNTIuMDdzMTYuNTUgMi4wOSAyNy4zNy0zLjQzYzEzLjkzLTcuMSAxNy4xMy0xMy45NSAxNy4yNi00NC43OFYxODEuNDFsLS4wMi4wMXYtOC45OHptMTYzLjQ0IDg0LjA4TDY0MCAxMzIuNzhzLTM1LjExLTUuOTgtNTIuNSA5Ljg1Yy0xMy4zIDEyLjEtMjQuNDEgMjkuNTUtNTQuMTggNzIuNDctLjQ3LjczLTYuMjUgMTAuNTQtMTMuMDcgMC0yOS4yOS00Mi4yMy00MC44LTYwLjI5LTU0LjE4LTcyLjQ3LTE3LjM5LTE1LjgzLTUyLjUtOS44NS01Mi41LTkuODVsODMuMiAxMjMuNzQtODIuOTcgMTIzLjM2czM2LjU3IDQuNjIgNTMuOTUtMTEuMjFjMTEuNDktMTAuNDYgMTcuNTgtMjAuMzcgNTIuNTEtNzAuNzIgNi44MS0xMC41MiAxMi41Ny0uNzcgMTMuMDcgMCAyOS40IDQyLjM4IDM5LjIzIDU4LjA2IDUzLjE0IDcwLjcyIDE3LjM5IDE1LjgzIDUzLjMyIDExLjIxIDUzLjMyIDExLjIxTDU1Ni44IDI1Ni41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2l6YXJkc09mVGhlQ29hc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE5LjE5IDM0NS42OWMtMS45IDEuMzgtMTEuMDcgOC40NC0uMjYgMjMuNTcgNC42NCA2LjQyIDE0LjExIDEyLjc5IDIxLjczIDYuNTUgNi41LTQuODggNy4zNS0xMi45Mi4yNi0yMy4wNC01LjQ3LTcuNzYtMTQuMjgtMTIuODgtMjEuNzMtNy4wOHptMzM2Ljc1IDc1Ljk0Yy0uMzQgMS43LS41NSAxLjY3Ljc5IDAgMi4wOS00LjE5IDQuMTktMTAuMjEgNC45OC0xOS45IDMuMTQtMzguNDktNDAuMzMtNzEuNDktMTAxLjM0LTc4LjAzLTU0LjczLTYuMDItMTI0LjM4IDkuMTctMTg4LjggNjAuNDlsLS4yNiAxLjU3YzIuNjIgNC45OCA0Ljk4IDEwLjc0IDMuNCAyMS4yMWwuNzkuMjZjNjMuODktNTguNCAxMzEuMTktNzcuMjUgMTg0LjM1LTczLjg1IDU4LjQgMy42NyAxMDAuMDMgMzQuMDQgMTAwLjAzIDY4LjA4LS4wMSA5Ljk2LTIuNjMgMTUuNzItMy45NCAyMC4xN3pNMzkyLjI4IDI0MC40MmMuNzkgNy4wNyA0LjE5IDEwLjIxIDkuMTcgMTAuNDcgNS41LjI2IDkuNDMtMi42MiAxMC40Ny02LjU1Ljc5LTMuNCAyLjA5LTI5Ljg1IDIuMDktMjkuODVzLTExLjI2IDYuNTUtMTQuOTMgMTAuNDdjLTMuNjYgMy42OC03LjMzIDguMzktNi44IDE1LjQ2em0tNTAuMDItMTUxLjFDMTM3Ljc1IDg5LjMyIDEzLjEgMjI2LjguNzkgMjQxLjJjLTEuMDUuNTItMS4zMS43OS43OSAxLjMxIDYwLjQ5IDE2LjUgMTU1LjgxIDgxLjE4IDE5Ni4xMyAyMDIuMTZsMS4wNS4yNmM1NS4yNS02OS45MiAxNDAuODgtMTI4LjA1IDIzNi45OS0xMjguMDUgODAuOTIgMCAxMzAuMTUgNDIuMTYgMTMwLjE1IDgwLjM5IDAgMTguMzMtNi41NSAzMy41Mi0yMi4yNiA0Ni4zNSAwIC45Ni0uMi43OS43OS43OSAxNC42Ni0xMC43NCAyNy41LTI4LjggMjcuNS00OC4xOCAwLTIyLjc4LTEyLjA1LTM4LjIzLTEyLjA1LTM4LjIzIDcuMDcgNy4wNyAxMC43NCAxNi4yNCAxMC43NCAxNi4yNCA1Ljc2LTQwLjg1IDI2Ljk3LTYyLjMyIDI2Ljk3LTYyLjMyLTIuMzYtOS42OS02LjgxLTE3LjgxLTYuODEtMTcuODEgNy41OSA4LjEyIDE0LjQgMjcuNSAxNC40IDQxLjM3IDAgMTAuNDctMy40IDIyLjc4LTEyLjU3IDMxLjk1bC4yNi41MmM4LjEyLTQuOTggMTYuNS0xNi43NiAxNi41LTM3Ljk3IDAtMTUuNzEtNC43MS0yNS45Mi00LjcxLTI1LjkyIDUuNzYtNS4yNCAxMS4yNi05LjE3IDE1Ljk3LTExLjc4Ljc5IDMuNCAyLjA5IDkuNjkgMi4zNiAxNC45MyAwIDEuMDUuNzkgMS44MyAxLjA1IDAgLjc5LTUuNzYtLjI2LTE2LjI0LS4yNi0xNi41IDYuMDItMy4xNCA5LjY5LTQuNDUgOS42OS00LjQ1QzYxNy43NCAxNzYgNDg5LjQzIDg5LjMyIDM0Mi4yNiA4OS4zMnptLTk5LjI0IDI4OS42MmMtMTEuMDYgOC45OS0yNC4yIDQuMDgtMzAuNjQtNC4xOS03LjQ1LTkuNTgtNi43Ni0yNC4wOSA0LjE5LTMyLjQ3IDE0Ljg1LTExLjM1IDI3LjA4LS40OSAzMS4xNiA1LjUuMjguMzkgMTIuMTMgMTYuNTctNC43MSAzMS4xNnptMi4wOS0xMzYuNDNsOS40My0xNy44MSAxMS43OCA3MC45Ni0xMi41NyA2LjAyLTI0LjYyLTI4LjggMTQuMTQtMjYuNzEgMy42NyA0LjQ1LTEuODMtOC4xMXptMTguNTkgMTE3LjU4bC0uMjYtLjI2YzIuMDUtNC4xLTIuNS02LjYxLTE3LjU0LTMxLjY5LTEuMzEtMi4zNi0zLjE0LTIuODgtNC40NS0yLjYybC0uMjYtLjUyYzcuODYtNS43NiAxNS40NS0xMC4yMSAyNS40LTE1LjcxbC41Mi4yNmMxLjMxIDEuODMgMi4wOSAyLjg4IDMuNCA0LjcxbC0uMjYuNTJjLTEuMDUtLjI2LTIuMzYtLjc5LTUuMjQuMjYtMi4wOS43OS03Ljg2IDMuNjctMTIuMzEgNy41OXYxLjMxYzEuNTcgMi4zNiAzLjkzIDYuNTUgNS43NiA5LjY5aC4yNmMxMC4wNS02LjI4IDcuNTYtNC41NSAxMS41Mi03Ljg2aC4yNmMuNTIgMS44My41MiAxLjgzIDEuODMgNS41bC0uMjYuMjZjLTMuMDYuNjEtNC42NS4zNC0xMS41MiA1LjV2LjI2YzkuNDYgMTcuMDIgMTEuMDEgMTYuNzUgMTIuNTcgMTUuOTdsLjI2LjI2Yy0yLjM0IDEuNTktNi4yNyA0LjIxLTkuNjggNi41N3ptNTUuMjYtMzIuNDdjLTMuMTQgMS41Ny02LjAyIDIuODgtOS45NSA0Ljk4bC0uMjYtLjI2YzEuMjktMi41OSAxLjE2LTIuNzEtMTEuNzgtMzIuNDdsLS4yNi0uMjZjLS4xNSAwLTguOSAzLjY1LTkuOTUgNy4zM2gtLjUybC0xLjA1LTUuNzYuMjYtLjUyYzcuMjktNC41NiAyNS41My0xMS42NCAyNy43Ni0xMi41N2wuNTIuMjYgMy4xNCA0Ljk4LS4yNi41MmMtMy41My0xLjc2LTcuMzUuNzYtMTIuMzEgMi42MnYuMjZjMTIuMzEgMzIuMDEgMTIuNjcgMzAuNjQgMTQuNjYgMzAuNjR2LjI1em00NC43Ny0xNi41Yy00LjE5IDEuMDUtNS4yNCAxLjMxLTkuNjkgMi44OGwtLjI2LS4yNi41Mi00LjQ1Yy0xLjA1LTMuNC0zLjE0LTExLjUyLTMuNjctMTMuNjJsLS4yNi0uMjZjLTMuNC43OS04LjkgMi42Mi0xMi44MyAzLjkzbC0uMjYuMjZjLjc5IDIuNjIgMy4xNCA5Ljk1IDQuMTkgMTMuODguNzkgMi4zNiAxLjgzIDIuODggMi44OCAzLjE0di41MmMtMy42NyAxLjA1LTcuMDcgMi42Mi0xMC4yMSAzLjkzbC0uMjYtLjI2YzEuMDUtMS4zMSAxLjA1LTIuODguMjYtNC45OC0xLjA1LTMuMTQtOC4xMi0yMy44My05LjE3LTI3LjIzLS41Mi0xLjgzLTEuNTctMy4xNC0yLjYyLTMuMTR2LS41MmMzLjE0LTEuMDUgNi4wMi0yLjA5IDEwLjc0LTMuNGwuMjYuMjYtLjI2IDQuNzFjMS4zMSAzLjkzIDIuMzYgNy41OSAzLjE0IDkuNjloLjI2YzMuOTMtMS4zMSA5LjQzLTIuODggMTIuODMtMy45M2wuMjYtLjI2LTIuNjItOS40M2MtLjUyLTEuODMtMS4wNS0zLjQtMi42Mi0zLjkzdi0uMjZjNC40NS0xLjA1IDcuMzMtMS44MyAxMC43NC0yLjM2bC4yNi4yNmMtMS4wNSAxLjMxLTEuMDUgMi44OC0uNTIgNC40NSAxLjU3IDYuMjggNC43MSAyMC40MyA2LjI4IDI2LjQ1LjU0IDIuNjIgMS44NSAzLjQxIDIuNjMgMy45M3ptMzIuMjEtNi44MWwtLjI2LjI2Yy00LjcxLjUyLTE0LjE0IDIuMzYtMjIuNTIgNC4xOWwtLjI2LS4yNi43OS00LjE5Yy0xLjU3LTcuODYtMy40LTE4LjU5LTQuOTgtMjYuMTktLjI2LTEuODMtLjc5LTIuODgtMi42Mi0zLjY3bC43OS0uNTJjOS4xNy0xLjU3IDIwLjE2LTIuMzYgMjQuODgtMi42MmwuMjYuMjZjLjUyIDIuMzYuNzkgMy4xNCAxLjU3IDUuNWwtLjI2LjI2Yy0xLjE0LTEuMTQtMy4zNC0zLjItMTYuMjQtLjc5bC0uMjYuMjZjLjI2IDEuNTcgMS4wNSA2LjU1IDEuNTcgOS45NWwuMjYuMjZjOS41Mi0xLjY4IDQuNzYtLjA2IDEwLjc0LTIuMzZoLjI2YzAgMS41Ny0uMjYgMS44My0uMjYgNS4yNGgtLjI2Yy00LjgxLTEuMDMtMi4xNS0uOS0xMC4yMSAwbC0uMjYuMjZjLjI2IDIuMDkgMS41NyA5LjQzIDIuMDkgMTIuNTdsLjI2LjI2YzEuMTUuMzggMTQuMjEtLjY1IDE2LjI0LTQuNzFoLjI2Yy0uNTMgMi4zOC0xLjA1IDQuMjEtMS41OCA2LjA0em0xMC43NC00NC41MWMtNC40NSAyLjM2LTguMTIgMi44OC0xMSAyLjg4LS4yNS4wMi0xMS40MSAxLjA5LTE3LjU0LTkuOTUtNi43NC0xMC43OS0uOTgtMjUuMiA1LjUtMzEuNjkgOC44LTguMTIgMjMuMzUtMTAuMSAyOC41NC0xNy4wMiA4LjAzLTEwLjMzLTEzLjA0LTIyLjMxLTI5LjU5LTUuNzZsLTIuNjItMi44OCA1LjI0LTE2LjI0YzI1LjU5LTEuNTcgNDUuMi0zLjA0IDUwLjAyIDE2LjI0Ljc5IDMuMTQgMCA5LjQzLS4yNiAxMi4wNSAwIDIuNjItMS44MyAxOC44NS0yLjA5IDIzLjA0LS41MiA0LjE5LS43OSAxOC4zMy0uNzkgMjAuNjkuMjYgMi4zNi41MiA0LjE5IDEuNTcgNS41IDEuNTcgMS44MyA1Ljc2IDEuODMgNS43NiAxLjgzbC0uNzkgNC43MWMtMTEuODItMS4wNy0xMC4yOC0uNTktMjAuNDMtMS4wNS0zLjIyLTUuMTUtMi4yMy0zLjI4LTQuMTktNy44NiAwIC4wMS00LjE5IDMuOTQtNy4zMyA1LjUxem0zNy4xOCAyMS4yMWMtNi4zNS0xMC41OC0xOS44Mi03LjE2LTIxLjczIDUuNS0yLjYzIDE3LjA4IDE0LjMgMTkuNzkgMjAuNjkgMTAuMjFsLjI2LjI2Yy0uNTIgMS44My0xLjgzIDYuMDItMS44MyA2LjI4bC0uNTIuNTJjLTEwLjMgNi44Ny0yOC41LTIuNS0yNS42Ni0xOC41OSAxLjk0LTEwLjg3IDE0LjQ0LTE4LjkzIDI4LjgtOS45NWwuMjYuNTJjMCAxLjA2LS4yNyAzLjQxLS4yNyA1LjI1em01Ljc3LTg3Ljczdi02LjU1Yy42OSAwIDE5LjY1IDMuMjggMjcuNzYgNy4zM2wtMS41NyAxNy41NHMxMC4yMS05LjQzIDE1LjQ1LTEwLjc0YzUuMjQtMS41NyAxNC45MyA3LjMzIDE0LjkzIDcuMzNsLTExLjI2IDExLjI2Yy0xMi4wNy02LjM1LTE5LjU5LS4wOC0yMC42OS43OS01LjI5IDM4LjcyLTguNiA0Mi4xNyA0LjQ1IDQ2LjA5bC0uNTIgNC43MWMtMTcuNTUtNC4yOS0xOC41My00LjUtMzYuOTItNy4zM2wuNzktNC43MWM3LjI1IDAgNy40OC01LjMyIDcuNTktNi44MSAwIDAgNC45OC01My4xNiA0Ljk4LTU1LjI1LS4wMi0yLjg3LTQuOTktMy42Ni00Ljk5LTMuNjZ6bTEwLjk5IDExNC40NGMtOC4xMi0yLjA5LTE0LjE0LTExLTEwLjc0LTIwLjY5IDMuMTQtOS40MyAxMi4zMS0xMi4zMSAxOC44NS0xMC4yMSA5LjE3IDIuNjIgMTIuODMgMTEuNzggMTAuNzQgMTkuMzgtMi42MSA4LjktOS40MiAxMy44Ny0xOC44NSAxMS41MnptNDIuMTYgOS42OWMtMi4zNi0uNTItNy4wNy0yLjM2LTguNjQtMi44OHYtLjI2bDEuNTctMS44M2MuNTktOC4yNC41OS03LjI3LjI2LTcuNTktNC44Mi0xLjgxLTYuNjYtMi4zNi03LjA3LTIuMzYtMS4zMSAxLjgzLTIuODggNC40NS0zLjY3IDUuNWwtLjc5IDMuNHYuMjZjLTEuMzEtLjI2LTMuOTMtMS4zMS02LjAyLTEuNTd2LS4yNmwyLjYyLTEuODNjMy40LTQuNzEgOS45NS0xNC4xNCAxMy44OC0yMC4xNnYtMi4wOWwuNTItLjI2YzIuMDkuNzkgNS41IDIuMDkgNy41OSAyLjg4LjQ4LjQ4LjE4LTEuODctMS4wNSAyNS4xNC0uMjQgMS44MS4wMiAyLjYuOCAzLjkxem0tNC43MS04OS44MmMxMS4yNS0xOC4yNyAzMC43Ni0xNi4xOSAzNC4wNC0zLjRMNTM5LjcgMTk4YzIuMzQtNi4yNS0yLjgyLTkuOS00LjQ1LTExLjI2bDEuODMtMy42N2MxMi4yMiAxMC4zNyAxNi4zOCAxMy45NyAyMi41MiAyMC40My0yNS45MSA3My4wNy0zMC43NiA4MC44MS0yNC42MiA4NC4zMmwtMS44MyA0LjQ1Yy02LjM3LTMuMzUtOC45LTQuNDItMTcuODEtOC42NGwyLjA5LTYuODFjLS4yNi0uMjYtMy45MyAzLjkzLTkuNjkgMy42Ny0xOS4wNi0xLjMtMjIuODktMzEuNzUtOS42Ny01Mi45em0yOS4zMyA3OS4zNGMwLTUuNzEtNi4zNC03Ljg5LTcuODYtNS4yNC0xLjMxIDIuMDkgMS4wNSA0Ljk4IDIuODggOC4zOCAxLjU3IDIuNjIgMi42MiA2LjI4IDEuMDUgOS40My0yLjY0IDYuMzQtMTIuNCA1LjMxLTE1LjQ1LS43OSAwLS43LS4yNy4wOSAxLjgzLTQuNzFsLjc5LS4yNmMtLjU3IDUuNjYgNi4wNiA5LjYxIDguMzggNC45OCAxLjA1LTIuMDktLjUyLTUuNS0yLjA5LTguMzgtMS41Ny0yLjYyLTMuNjctNi4yOC0xLjgzLTkuNjkgMi43Mi01LjA2IDExLjI1LTQuNDcgMTQuNjYgMi4zNnYuNTJsLTIuMzYgMy40em0yMS4yMSAxMy4zNmMtMS45Ni0zLjI3LS45MS0yLjE0LTQuNDUtNC43MWgtLjI2Yy0yLjM2IDQuMTktNS43NiAxMC40Ny04LjY0IDE2LjI0LTEuMzEgMi4zNi0xLjA1IDMuNC0uNzkgMy45M2wtLjI2LjI2LTUuNzYtNC40NS4yNi0uMjYgMi4wOS0xLjMxYzMuMTQtNS43NiA2LjU1LTEyLjA1IDkuMTctMTcuMDJ2LS4yNmMtMi42NC0xLjk4LTEuMjItMS41MS02LjAyLTEuODN2LS4yNmwzLjE0LTMuNGguMjZjMy42NyAyLjM2IDkuOTUgNi44MSAxMi4zMSA4LjlsLjI2LjI2LTEuMzEgMy45MXptMjcuMjMtNDQuMjZsLTIuODgtMi44OGMuNzktMi4zNiAxLjgzLTQuOTggMi4wOS03LjU5Ljc1LTkuNzQtMTEuNTItMTEuODQtMTEuNTItNC45OCAwIDQuOTggNy44NiAxOS4zOCA3Ljg2IDI3Ljc2IDAgMTAuMjEtNS43NiAxNS43MS0xMy44OCAxNi41LTguMzguNzktMjAuMTYtMTAuNDctMjAuMTYtMTAuNDdsNC45OC0xNC40IDIuODggMi4wOWMtMi45NyAxNy44IDE3LjY4IDIwLjM3IDEzLjM1IDUuMjQtMS4wNi00LjAyLTE4Ljc1LTM0LjIgMi4wOS0zOC4yMyAxMy42Mi0yLjM2IDIzLjA0IDE2LjUgMjMuMDQgMTYuNWwtNy44NSAxMC40NnptMzUuNjItMTAuMjFjLTExLTMwLjM4LTYwLjQ5LTEyNy41My0xOTEuOTUtMTI5LjYyLTUzLjQyLTEuMDUtOTQuMjcgMTUuNDUtMTMyLjc2IDM3Ljk3bDg1LjYzLTkuMTctOTEuMzkgMjAuNjkgMjUuMTQgMTkuNjQtMy45My0xNi41YzcuNS0xLjcxIDM5LjE1LTguNDUgNjYuNzctOC45bC0yMi4yNiA4MC4zOWMxMy42MS0uNyAxOC45Ny04Ljk4IDE5LjY0LTIyLjc4bDQuOTgtMS4wNS4yNiAyNi43MWMtMjIuNDYgMy4yMS0zNy4zIDYuNjktNDkuNDkgOS45NWwxMy4wOS00My4yMS02MS41NC0zNi42NiAyLjM2IDguMTIgMTAuMjEgNC45OGM2LjI4IDE4LjU5IDE5LjM4IDU2LjU2IDIwLjQzIDU4LjY2IDEuOTUgNC4yOCAzLjE2IDUuNzggMTIuMDUgNC40NWwxLjA1IDQuOThjLTE2LjA4IDQuODYtMjMuNjYgNy42MS0zOS4wMiAxNC40bC0yLjM2LTQuNzFjNC40LTIuOTQgOC43My0zLjk0IDUuNS0xMi44My0yMy43LTYyLjUtMjEuNDgtNTguMTQtMjIuNzgtNTkuNDRsMi4zNi00LjQ1IDMzLjUyIDY3LjNjLTMuODQtMTEuODcgMS42OCAxLjY5LTMyLjk5LTc4LjgybC00MS45IDg4LjUxIDQuNzEtMTMuODgtMzUuODgtNDIuMTYgMjcuNzYgOTMuNDgtMTEuNzggOC4zOEM5NSAyMjguNTggMTAxLjA1IDIzMS44NyA5My4yMyAyMzEuNTJjLTUuNS0uMjYtMTMuNjIgNS41LTEzLjYyIDUuNUw3NC42MyAyMzFjMzAuNTYtMjMuNTMgMzEuNjItMjQuMzMgNTguNC00Mi42OGw0LjE5IDcuMDdzLTUuNzYgNC4xOS03Ljg2IDcuMDdjLTUuOSA5LjI4IDEuNjcgMTMuMjggNjEuOCA3NS42OGwtMTguODUtNTguOTIgMzkuOC0xMC4yMSAyNS42NiAzMC42NCA0LjQ1LTEyLjMxLTQuOTgtMjQuNjIgMTMuMDktMy40LjUyIDMuMTQgMy42Ny0xMC40Ny05NC4yNyAyOS4zMyAxMS4yNi00Ljk4LTEzLjYyLTQyLjQyIDE3LjI4LTkuMTcgMzAuMTEgMzYuMTQgMjguNTQtMTMuMDljLTEuNDEtNy40Ny0yLjQ3LTE0LjUtNC43MS0xOS42NGwxNy4yOCAxMy44OCA0LjcxLTIuMDktNTkuMTgtNDIuNjggMjMuMDggMTEuNWMxOC45OC02LjA3IDI1LjIzLTcuNDcgMzIuMjEtOS42OWwyLjYyIDExYy0xMi41NSAxMi41NSAxLjQzIDE2LjgyIDYuNTUgMTkuMzhsLTEzLjYyLTYxLjAxIDEyLjA1IDI4LjI4YzQuMTktMS4zMSA3LjMzLTIuMDkgNy4zMy0yLjA5bDIuNjIgOC42NHMtMy4xNCAxLjA1LTYuMjggMi4wOWw4LjkgMjAuOTUgMzMuNzgtNjUuNzMtMjAuNjkgNjEuMDFjNDIuNDItMjQuMDkgODEuNDQtMzYuNjYgMTMxLjk4LTM1Ljg4IDY3LjA0IDEuMDUgMTY3LjMzIDQwLjg1IDE5OS44IDEzOS44My43OCAyLjEtLjAxIDIuNjMtLjc5LjI3ek0yMDMuNDggMTUyLjQzczEuODMtLjUyIDQuMTktMS4zMWw5LjQzIDcuNTljLS40IDAtMy40NC0uMjUtMTEuMjYgMi4zNmwtMi4zNi04LjY0em0xNDMuNzYgMzguNWMtMS41Ny0uNi0yNi40Ni00LjgxLTMzLjI2IDIwLjY5bDIxLjczIDE3LjAyIDExLjUzLTM3Ljcxek0zMTguNDMgNjcuMDdjLTU4LjQgMC0xMDYuMDUgMTIuMDUtMTE0Ljk2IDE0LjR2Ljc5YzguMzggMi4wOSAxNC40IDQuMTkgMjEuMjEgMTEuNzhsMS41Ny4yNmM2LjU1LTEuODMgNDguOTctMTMuODggMTEwLjI0LTEzLjg4IDE4MC4xNiAwIDMwMS42NyAxMTYuNzkgMzAxLjY3IDIyMy4zN3Y5Ljk1YzAgMS4zMS43OSAyLjYyIDEuMDUuNTIuNTItMi4wOS43OS04LjY0Ljc5LTE5LjY0LjI2LTgzLjc5LTk2LjYzLTIyNy41NS0zMjEuNTctMjI3LjU1em0yMTEuMDYgMTY5LjY4YzEuMzEtNS43NiAwLTEyLjMxLTcuMzMtMTMuMDktOS42Mi0xLjEzLTE2LjE0IDIzLjc5LTE3LjAyIDMzLjUyLS43OSA1LjUtMS4zMSAxNC45MyA2LjAyIDE0LjkzIDQuNjgtLjAxIDkuNzItLjkxIDE4LjMzLTM1LjM2em0tNjEuNTMgNDIuOTVjLTIuNjItLjc5LTkuNDMtLjc5LTEyLjU3IDEwLjQ3LTEuODMgNi44MS41MiAxMy4zNSA2LjAyIDE0LjY2IDMuNjcgMS4wNSA4LjkuNTIgMTEuNzgtMTAuNzQgMi42Mi05Ljk0LTEuODMtMTMuNjEtNS4yMy0xNC4zOXpNNDkxIDMwMC42NWMxLjgzLjUyIDMuMTQgMS4wNSA1Ljc2IDEuODMgMC0xLjgzLjUyLTguMzguNzktMTIuMDUtMS4wNSAxLjMxLTUuNSA4LjEyLTYuNTUgOS45NXYuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvZHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc4LjQxNCAzMzkuNzA2SDE0MS4xTDExMi4xNjYgMjIzLjQ3NWgtLjQ3OEw4My4yMjggMzM5LjcwNkg0NS4yTDAgMTY4Ljk0NkgzNy41NDhMNjQuNTc0IDI4NS4xNzdoLjQ3OEw5NC43MDcgMTY4Ljk0NmgzNS4xNTdsMjkuMTc4IDExNy42NjdoLjQ3OUwxODcuNSAxNjguOTQ2aDM2LjgzMXpNMjcxLjQgMjEyLjcxM2MzOC45ODQgMCA2NC4xIDI1LjgyOCA2NC4xIDY1LjI5MSAwIDM5LjIyMi0yNS4xMTEgNjUuMDUtNjQuMSA2NS4wNS0zOC43NDMgMC02My44NTUtMjUuODI4LTYzLjg1NS02NS4wNUMyMDcuNTQ3IDIzOC41NDEgMjMyLjY1OSAyMTIuNzEzIDI3MS40IDIxMi43MTN6bTAgMTA0Ljc1M2MyMy4yIDAgMzAuMTMzLTE5Ljg1MiAzMC4xMzMtMzkuNDYyIDAtMTkuODUyLTYuOTM0LTM5LjctMzAuMTMzLTM5LjctMjcuNyAwLTI5Ljg5NCAxOS44NS0yOS44OTQgMzkuN0MyNDEuNTA4IDI5Ny42MTQgMjQ4LjQ0MyAzMTcuNDY2IDI3MS40IDMxNy40NjZ6TTQzNS4wODQgMzIzLjkyMmgtLjQ3OGMtNy44OTMgMTMuMzkyLTIxLjc2NSAxOS4xMzItMzcuNTQ4IDE5LjEzMi0zNy4zMSAwLTU1LjQ4NS0zMi4wNDUtNTUuNDg1LTY2LjI0NiAwLTMzLjI0MyAxOC40MTUtNjQuMDk1IDU0Ljc2Ny02NC4wOTUgMTQuNTg5IDAgMjguOTM4IDYuMjE4IDM2LjgzMSAxOC40MTZoLjI0VjE2OC45NDZoMzMuOTZ2MTcwLjc2SDQzNS4wODR6TTQwNS40MjggMjM4LjNjLTIyLjI0IDAtMjkuODk0IDE5LjEzNC0yOS44OTQgMzkuNDYzIDAgMTkuMzcxIDguODQ4IDM5LjcgMjkuODk0IDM5LjcgMjIuNDgyIDAgMjkuMTc4LTE5LjYxMyAyOS4xNzgtMzkuOTRDNDM0LjYwNiAyNTcuNDM2IDQyNy40MzIgMjM4LjMgNDA1LjQyOCAyMzguM3pNNTkyLjk2IDMzOS43MDZINTYwLjY3M1YzMjIuNDg3aC0uNzE4Yy04LjYwOSAxMy44Ny0yMy40MzYgMjAuNTY3LTM3Ljc4NiAyMC41NjctMzYuMTEzIDAtNDUuMi0yMC4zMjgtNDUuMi01MC45NDFWMjE2LjA2MWgzMy45NTlWMjg1LjljMCAyMC4zMjkgNS45NzkgMzAuMzcyIDIxLjc2NSAzMC4zNzIgMTguNDE1IDAgMjYuMzA2LTEwLjI4MyAyNi4zMDYtMzUuMzkzVjIxNi4wNjFINTkyLjk2ek02MDIuNDUzIDMwMi44NzZINjQwdjM2LjgzSDYwMi40NTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvbGZQYWNrQmF0dGFsaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2Ny43MyA0NzEuNTNsMTAuNTYgMTUuODQgNS4yOC0xMi4zMiA1LjI4IDdWNTEyYzIxLjA2LTcuOTIgMjEuMTEtNjYuODYgMjUuNTEtOTcuMjEgNC42Mi0zMS44OS0uODgtOTIuODEgODEuMzctMTQ5LjExLTguODgtMjMuNjEtMTItNDkuNDMtMi42NC04MC4wNUM0MjEgMTg5IDQ0NyAxOTYuMjEgNDU2LjQzIDIzOS43M2wtMzAuMzUgOC4zNmMxMS4xNSAyMyAxNyA0Ni43NiAxMy4yIDcyLjE0TDQxMiAzMTMuMThsLTYuMTYgMzMuNDMtMTguNDctNy04LjggMzMuMzktMTkuMzUtNyAyNi4zOSAyMS4xMSA4LjgtMjguMTVMNDE5IDM2NC4ybDctMzUuNjMgMjYuMzkgMTQuNTJjLjI1LTIwIDctNTguMDYtOC44LTg0LjQ1bDI2LjM5IDUuMjhjNC0yMi4wNy0yLjM4LTM5LjIxLTcuOTItNTYuNzRsMjIuNDMgOS42OGMtLjQ0LTI1LjA3LTI5Ljk0LTU2Ljc5LTYxLjU4LTU4LjUtMjAuMjItMS4wOS01Ni43NC0yNS4xNy01NC4xLTUxLjkgMi0xOS44NyAxNy40NS00Mi42MiA0My4xMS00OS43LTQ0IDM2LjUxLTkuNjggNjcuMyA1LjI4IDczLjQ2IDQuNC0xMS40NCAxNy41NC02OS4wOCAwLTEzMC4yLTQwLjM5IDIyLjg3LTg5LjY1IDY1LjEtOTMuMiAxNDcuNzlsLTU4IDM4LjcxLTMuNTIgOTMuMjVMMzY5Ljc4IDIyMGw3IDctMTcuNTkgMy41Mi00NCAzOC43MS0xNS44NC01LjI4LTI4LjEgNDkuMjUtMy41MiAxMTkuNjQgMjEuMTEgMTUuODQtMzIuNTUgMTUuODQtMzIuNTUtMTUuODQgMjEuMTEtMTUuODQtMy41Mi0xMTkuNjQtMjguMTUtNDkuMjYtMTUuODQgNS4yOC00NC0zOC43MS0xNy41OC0zLjUxIDctNyAxMDcuMzMgNTkuODItMy41Mi05My4yNS01OC4wNi0zOC43MUMxODUgNjUuMSAxMzUuNzcgMjIuODcgOTUuMyAwYy0xNy41NCA2MS4xMi00LjQgMTE4Ljc2IDAgMTMwLjIgMTUtNi4xNiA0OS4yNi0zNi45NSA1LjI4LTczLjQ2IDI1LjY2IDcuMDggNDEuMTUgMjkuODMgNDMuMTEgNDkuNyAyLjYzIDI2Ljc0LTMzLjg4IDUwLjgxLTU0LjEgNTEuOS0zMS42NSAxLjcyLTYxLjE1IDMzLjQ0LTYxLjU5IDU4LjUxbDIyLjQzLTkuNjhjLTUuNTQgMTcuNTMtMTEuOTEgMzQuNjctNy45MiA1Ni43NGwyNi4zOS01LjI4Yy0xNS43NiAyNi4zOS05LjA1IDY0LjQzLTguOCA4NC40NWwyNi4zOS0xNC41MiA3IDM1LjYzIDI0LjYzLTUuMjggOC44IDI4LjE1TDE1My4zNSAzNjYgMTM0IDM3M2wtOC44LTMzLjQzLTE4LjQ3IDctNi4xNi0zMy40My0yNy4yNyA3Yy0zLjgyLTI1LjM4IDItNDkuMSAxMy4yLTcyLjE0bC0zMC4zNS04LjM2YzkuNC00My41MiAzNS40Ny01MC43NyA2My4zNC01NC4xIDkuMzYgMzAuNjIgNi4yNCA1Ni40NS0yLjY0IDgwLjA1IDgyLjI1IDU2LjMgNzYuNzUgMTE3LjIzIDgxLjM3IDE0OS4xMSA0LjQgMzAuMzUgNC40NSA4OS4yOSAyNS41MSA5Ny4yMXYtMjkuODNsNS4yOC03IDUuMjggMTIuMzIgMTAuNTYtMTUuODQgMTEuNDQgMjEuMTEgMTEuNDMtMjEuMXptNzkuMTctOTVMMzMxLjA2IDM2NmM3LjQ3LTQuMzYgMTMuNzYtOC40MiAxOS4zNS0xMi4zMi0uNiA3LjIyLS4yNyAxMy44NC0zLjUxIDIyLjg0em0yOC4xNS00OS4yNmMtLjQgMTAuOTQtLjkgMjEuNjYtMS43NiAzMS42Ny03Ljg1LTEuODYtMTUuNTctMy44LTIxLjExLTcgOC4yNC03Ljk0IDE1LjU1LTE2LjMyIDIyLjg3LTI0LjY4em0yNC42MyA1LjI4YzAtMTMuNDMtMi4wNS0yNC4yMS01LjI4LTMzLjQzYTIzNSAyMzUgMCAwIDEtMTguNDcgMjcuMjd6bTMuNTItODAuOTRjMTkuNDQgMTIuODEgMjcuOCAzMy42NiAyOS45MSA1Ni4zLTEyLjMyLTQuNTMtMjQuNjMtOS4zMS0zNi45NS0xMC41NiA1LjA2LTEyIDYuNjUtMjguMTQgNy00NS43NHptLTEuNzYtNDUuNzRjLjgxIDE0LjMgMS44NCAyOC44MiAxLjc2IDQyLjIzIDE5LjIyLTguMTEgMjkuNzgtOS43MiA0NC0xNC4wOC0xMC42MS0xOC45Ni0yNy4yLTI1LjUzLTQ1Ljc2LTI4LjE2ek0xNjUuNjggMzc2LjUyTDE4MS41MiAzNjZjLTcuNDctNC4zNi0xMy43Ni04LjQyLTE5LjM1LTEyLjMyLjYgNy4yNi4yNyAxMy44OCAzLjUxIDIyLjg4em0tMjguMTUtNDkuMjZjLjQgMTAuOTQuOSAyMS42NiAxLjc2IDMxLjY3IDcuODUtMS44NiAxNS41Ny0zLjggMjEuMTEtNy04LjI0LTcuOTMtMTUuNTUtMTYuMzEtMjIuODctMjQuNjd6bS0yNC42NCA1LjI4YzAtMTMuNDMgMi0yNC4yMSA1LjI4LTMzLjQzYTIzNSAyMzUgMCAwIDAgMTguNDcgMjcuMjd6bS0zLjUyLTgwLjk0Yy0xOS40NCAxMi44MS0yNy44IDMzLjY2LTI5LjkxIDU2LjMgMTIuMzItNC41MyAyNC42My05LjMxIDM3LTEwLjU2LTUtMTItNi42NS0yOC4xNC03LTQ1Ljc0em0xLjc2LTQ1Ljc0Yy0uODEgMTQuMy0xLjg0IDI4LjgyLTEuNzYgNDIuMjMtMTkuMjItOC4xMS0yOS43OC05LjcyLTQ0LTE0LjA4IDEwLjYzLTE4Ljk1IDI3LjIzLTI1LjUyIDQ1Ljc2LTI4LjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb3JkcHJlc3NTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjMgOCA4IDExOS4yIDggMjU2YzAgMTM2LjcgMTExLjMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4zIDI0OC0yNDhDNTA0IDExOS4yIDM5Mi43IDggMjU2IDh6TTMzIDI1NmMwLTMyLjMgNi45LTYzIDE5LjMtOTAuN2wxMDYuNCAyOTEuNEM4NC4zIDQyMC41IDMzIDM0NC4yIDMzIDI1NnptMjIzIDIyM2MtMjEuOSAwLTQzLTMuMi02My05LjFsNjYuOS0xOTQuNCA2OC41IDE4Ny44Yy41IDEuMSAxIDIuMSAxLjYgMy4xLTIzLjEgOC4xLTQ4IDEyLjYtNzQgMTIuNnptMzAuNy0zMjcuNWMxMy40LS43IDI1LjUtMi4xIDI1LjUtMi4xIDEyLTEuNCAxMC42LTE5LjEtMS40LTE4LjQgMCAwLTM2LjEgMi44LTU5LjQgMi44LTIxLjkgMC01OC43LTIuOC01OC43LTIuOC0xMi0uNy0xMy40IDE3LjctMS40IDE4LjQgMCAwIDExLjQgMS40IDIzLjQgMi4xbDM0LjcgOTUuMkwyMDAuNiAzOTNsLTgxLjItMjQxLjVjMTMuNC0uNyAyNS41LTIuMSAyNS41LTIuMSAxMi0xLjQgMTAuNi0xOS4xLTEuNC0xOC40IDAgMC0zNi4xIDIuOC01OS40IDIuOC00LjIgMC05LjEtLjEtMTQuNC0uM0MxMDkuNiA3MyAxNzguMSAzMyAyNTYgMzNjNTggMCAxMTAuOSAyMi4yIDE1MC42IDU4LjUtMS0uMS0xLjktLjItMi45LS4yLTIxLjkgMC0zNy40IDE5LjEtMzcuNCAzOS42IDAgMTguNCAxMC42IDMzLjkgMjEuOSA1Mi4zIDguNSAxNC44IDE4LjQgMzMuOSAxOC40IDYxLjUgMCAxOS4xLTcuMyA0MS4yLTE3IDcyLjFsLTIyLjIgNzQuMy04MC43LTIzOS42em04MS40IDI5Ny4ybDY4LjEtMTk2LjljMTIuNy0zMS44IDE3LTU3LjIgMTctNzkuOSAwLTguMi0uNS0xNS44LTEuNS0yMi45IDE3LjQgMzEuOCAyNy4zIDY4LjIgMjcuMyAxMDcgMCA4Mi4zLTQ0LjYgMTU0LjEtMTEwLjkgMTkyLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvcmRwcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MS43IDE2OS40bDEwMS41IDI3OEM5Mi4yIDQxMyA0My4zIDM0MC4yIDQzLjMgMjU2YzAtMzAuOSA2LjYtNjAuMSAxOC40LTg2LjZ6bTMzNy45IDc1LjljMC0yNi4zLTkuNC00NC41LTE3LjUtNTguNy0xMC44LTE3LjUtMjAuOS0zMi40LTIwLjktNDkuOSAwLTE5LjYgMTQuOC0zNy44IDM1LjctMzcuOC45IDAgMS44LjEgMi44LjItMzcuOS0zNC43LTg4LjMtNTUuOS0xNDMuNy01NS45LTc0LjMgMC0xMzkuNyAzOC4xLTE3Ny44IDk1LjkgNSAuMiA5LjcuMyAxMy43LjMgMjIuMiAwIDU2LjctMi43IDU2LjctMi43IDExLjUtLjcgMTIuOCAxNi4yIDEuNCAxNy41IDAgMC0xMS41IDEuMy0yNC4zIDJsNzcuNSAyMzAuNEwyNDkuOCAyNDdsLTMzLjEtOTAuOGMtMTEuNS0uNy0yMi4zLTItMjIuMy0yLTExLjUtLjctMTAuMS0xOC4yIDEuMy0xNy41IDAgMCAzNS4xIDIuNyA1NiAyLjcgMjIuMiAwIDU2LjctMi43IDU2LjctMi43IDExLjUtLjcgMTIuOCAxNi4yIDEuNCAxNy41IDAgMC0xMS41IDEuMy0yNC4zIDJsNzYuOSAyMjguNyAyMS4yLTcwLjljOS0yOS40IDE2LTUwLjUgMTYtNjguN3ptLTEzOS45IDI5LjNsLTYzLjggMTg1LjVjMTkuMSA1LjYgMzkuMiA4LjcgNjAuMSA4LjcgMjQuOCAwIDQ4LjUtNC4zIDcwLjYtMTIuMS0uNi0uOS0xLjEtMS45LTEuNS0yLjlsLTY1LjQtMTc5LjJ6bTE4My0xMjAuN2MuOSA2LjggMS40IDE0IDEuNCAyMS45IDAgMjEuNi00IDQ1LjgtMTYuMiA3Ni4ybC02NSAxODcuOUM0MjYuMiA0MDMgNDY4LjcgMzM0LjUgNDY4LjcgMjU2YzAtMzctOS40LTcxLjgtMjYtMTAyLjF6TTUwNCAyNTZjMCAxMzYuOC0xMTEuMyAyNDgtMjQ4IDI0OEMxMTkuMiA1MDQgOCAzOTIuNyA4IDI1NiA4IDExOS4yIDExOS4yIDggMjU2IDhjMTM2LjcgMCAyNDggMTExLjIgMjQ4IDI0OHptLTExLjQgMGMwLTEzMC41LTEwNi4yLTIzNi42LTIzNi42LTIzNi42QzEyNS41IDE5LjQgMTkuNCAxMjUuNSAxOS40IDI1NlMxMjUuNiA0OTIuNiAyNTYgNDkyLjZjMTMwLjUgMCAyMzYuNi0xMDYuMSAyMzYuNi0yMzYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3BiZWdpbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjIuNzk5IDMyMi4zNzRDNTE5LjAxIDM4Ni42ODIgNDY2Ljk2MSA0ODAgMzcwLjk0NCA0ODBjLTM5LjYwMiAwLTc4LjgyNC0xNy42ODctMTAwLjE0Mi01MC4wNC02Ljg4Ny4zNTYtMjIuNzAyLjM1Ni0yOS41OSAwQzIxOS44NDggNDYyLjM4MSAxODAuNTg4IDQ4MCAxNDEuMDY5IDQ4MGMtOTUuNDkgMC0xNDguMzQ4LTkyLjk5Ni05MS44NTUtMTU3LjYyNkMtMjkuOTI1IDE5MC41MjMgODAuNDc5IDMyIDI1Ni4wMDYgMzJjMTc1LjYzMiAwIDI4NS44NyAxNTguNjI2IDIwNi43OTMgMjkwLjM3NHptLTMzOS42NDctODIuOTcyaDQxLjUyOXYtNTguMDc1aC00MS41Mjl2NTguMDc1em0yMTcuMTggODYuMDcydi0yMy44MzljLTYwLjUwNiAyMC45MTUtMTMyLjM1NSA5LjE5OC0xODcuNTg5LTMzLjk3MWwuMjQ2IDI0Ljg5N2M1MS4xMDEgNDYuMzY3IDEzMS43NDYgNTcuODc1IDE4Ny4zNDMgMzIuOTEzem0tMTUwLjc1My04Ni4wNzJoMTY2LjA1OHYtNTguMDc1SDE4OS41Nzl2NTguMDc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcGV4cGxvcmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZjMCAxNDEuMi0xMTQuNyAyNTYtMjU2IDI1NkMxMTQuOCA1MTIgMCAzOTcuMyAwIDI1NlMxMTQuNyAwIDI1NiAwczI1NiAxMTQuNyAyNTYgMjU2em0tMzIgMGMwLTEyMy4yLTEwMC4zLTIyNC0yMjQtMjI0QzEzMi41IDMyIDMyIDEzMi41IDMyIDI1NnMxMDAuNSAyMjQgMjI0IDIyNCAyMjQtMTAwLjUgMjI0LTIyNHpNMTYwLjkgMTI0LjZsODYuOSAzNy4xLTM3LjEgODYuOS04Ni45LTM3LjEgMzcuMS04Ni45em0xMTAgMTY5LjFsNDYuNiA5NGgtMTQuNmwtNTAtMTAwLTQ4LjkgMTAwaC0xNGw1MS4xLTEwNi45LTIyLjMtOS40IDYtMTQgNjguNiAyOS4xLTYgMTQuMy0xNi41LTcuMXptLTExLjgtMTE2LjNsNjguNiAyOS40LTI5LjQgNjguM0wyMzAgMjQ2bDI5LjEtNjguNnptODAuMyA0Mi45bDU0LjYgMjMuMS0yMy40IDU0LjMtNTQuMy0yMy4xIDIzLjEtNTQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3Bmb3JtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNzUuMnYzNjEuN2MwIDI0LjMtMTkgNDMuMi00My4yIDQzLjJINDMuMkMxOS4zIDQ4MCAwIDQ2MS40IDAgNDM2LjhWNzUuMkMwIDUxLjEgMTguOCAzMiA0My4yIDMyaDM2MS43YzI0IDAgNDMuMSAxOC44IDQzLjEgNDMuMnptLTM3LjMgMzYxLjZWNzUuMmMwLTMtMi42LTUuOC01LjgtNS44aC05LjNMMjg1LjMgMTQ0IDIyNCA5NC4xIDE2Mi44IDE0NCA1Mi41IDY5LjNoLTkuM2MtMy4yIDAtNS44IDIuOC01LjggNS44djM2MS43YzAgMyAyLjYgNS44IDUuOCA1LjhoMzYxLjdjMy4yLjEgNS44LTIuNyA1LjgtNS44ek0xNTAuMiAxODZ2MzdINzYuN3YtMzdoNzMuNXptMCA3NC40djM3LjNINzYuN3YtMzcuM2g3My41em0xMS4xLTE0Ny4zbDU0LTQzLjdIOTYuOGw2NC41IDQzLjd6bTIxMCA3Mi45djM3aC0xOTZ2LTM3aDE5NnptMCA3NC40djM3LjNoLTE5NnYtMzcuM2gxOTZ6bS04NC42LTE0Ny4zbDY0LjUtNDMuN0gyMzIuOGw1My45IDQzLjd6TTM3MS4zIDMzNXYzNy4zaC05OS40VjMzNWg5OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcHJlc3NyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE3MS4zMyAxNTguNmMtMTUuMTggMzQuNTEtMzAuMzcgNjkuMDItNDUuNjMgMTAzLjUtMi40NCA1LjUxLTYuODkgOC4yNC0xMi45NyA4LjI0LTIzLjAyLS4wMS00Ni4wMy4wNi02OS4wNS0uMDUtNS4xMi0uMDMtOC4yNSAxLjg5LTEwLjM0IDYuNzItMTAuMTkgMjMuNTYtMjAuNjMgNDctMzAuOTUgNzAuNS0xLjU0IDMuNTEtNC4wNiA1LjI5LTcuOTIgNS4yOS00NS45NC0uMDEtOTEuODctLjAyLTEzNy44MSAwLTMuMTMgMC01LjYzLTEuMTUtNy43Mi0zLjQ1LTExLjIxLTEyLjMzLTIyLjQ2LTI0LjYzLTMzLjY4LTM2Ljk0LTIuNjktMi45NS0yLjc5LTYuMTgtMS4yMS05LjczIDguNjYtMTkuNTQgMTcuMjctMzkuMSAyNS44OS01OC42NiAxMi45My0yOS4zNSAyNS44OS01OC42OSAzOC43NS04OC4wOCAxLjctMy44OCA0LjI4LTUuNjggOC41NC01LjY1IDE0LjI0LjEgMjguNDguMDIgNDIuNzIuMDUgNi4yNC4wMSA5LjIgNC44NCA2LjY2IDEwLjU5LTEzLjYgMzAuNzctMjcuMTcgNjEuNTUtNDAuNzQgOTIuMzMtNS43MiAxMi45OS0xMS40MiAyNS45OS0xNy4wOSAzOS0zLjkxIDguOTUgNy4wOCAxMS45NyAxMC45NSA1LjYuMjMtLjM3LTEuNDIgNC4xOCAzMC4wMS02Ny42OSAxLjM2LTMuMSAzLjQxLTQuNCA2Ljc3LTQuMzkgMTUuMjEuMDggMzAuNDMuMDIgNDUuNjQuMDQgNS41Ni4wMSA3LjkxIDMuNjQgNS42NiA4Ljc1LTguMzMgMTguOTYtMTYuNzEgMzcuOS0yNC45OCA1Ni44OS00Ljk4IDExLjQzIDguMDggMTIuNDkgMTEuMjggNS4zMy4wNC0uMDggMjcuODktNjMuMzMgMzIuMTktNzMuMTYgMi4wMi00LjYxIDUuNDQtNi41MSAxMC4zNS02LjUgMjYuNDMuMDUgNTIuODYgMCA3OS4yOS4wNSAxMi40NC4wMiAxMy45My0xMy42NSAzLjktMTMuNjQtMjUuMjYuMDMtNTAuNTIuMDItNzUuNzguMDItNi4yNyAwLTcuODQtMi40Ny01LjI3LTguMjcgNS43OC0xMy4wNiAxMS41OS0yNi4xMSAxNy4zLTM5LjIxIDEuNzMtMy45NiA0LjUyLTUuNzkgOC44NC01Ljc4IDIzLjA5LjA2IDI1Ljk4LjAyIDEzMC43OC4wMyA2LjA4LS4wMSA4LjAzIDIuNzkgNS42MiA4LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYVHdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODkuMiA0OGg3MC42TDMwNS42IDIyNC4yIDQ4NyA0NjRIMzQ1TDIzMy43IDMxOC42IDEwNi41IDQ2NEgzNS44TDIwMC43IDI3NS41IDI2LjggNDhIMTcyLjRMMjcyLjkgMTgwLjkgMzg5LjIgNDh6TTM2NC40IDQyMS44aDM5LjFMMTUxLjEgODhoLTQyTDM2NC40IDQyMS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDMxOC4yYzQ0LjMgNTQuMyA2NC43IDk4LjggNTQuNCAxMTguNy03LjkgMTUuMS01Ni43IDQ0LjYtOTIuNiA1NS45LTI5LjYgOS4zLTY4LjQgMTMuMy0xMDAuNCAxMC4yLTM4LjItMy43LTc2LjktMTcuNC0xMTAuMS0zOUM5My4zIDQ0NS44IDg3IDQzOC4zIDg3IDQyMy40YzAtMjkuOSAzMi45LTgyLjMgODkuMi0xNDIuMSAzMi0zMy45IDc2LjUtNzMuNyA4MS40LTcyLjYgOS40IDIuMSA4NC4zIDc1LjEgMTEyLjMgMTA5LjV6TTE4OC42IDE0My44Yy0yOS43LTI2LjktNTguMS01My45LTg2LjQtNjMuNC0xNS4yLTUuMS0xNi4zLTQuOC0yOC43IDguMS0yOS4yIDMwLjQtNTMuNSA3OS43LTYwLjMgMTIyLjQtNS40IDM0LjItNi4xIDQzLjgtNC4yIDYwLjUgNS42IDUwLjUgMTcuMyA4NS40IDQwLjUgMTIwLjkgOS41IDE0LjYgMTIuMSAxNy4zIDkuMyA5LjktNC4yLTExLS4zLTM3LjUgOS41LTY0IDE0LjMtMzkgNTMuOS0xMTIuOSAxMjAuMy0xOTQuNHptMzExLjYgNjMuNUM0ODMuMyAxMjcuMyA0MzIuNyA3NyA0MjUuNiA3N2MtNy4zIDAtMjQuMiA2LjUtMzYgMTMuOS0yMy4zIDE0LjUtNDEgMzEuNC02NC4zIDUyLjhDMzY3LjcgMTk3IDQyNy41IDI4My4xIDQ0OC4yIDM0NmM2LjggMjAuNyA5LjcgNDEuMSA3LjQgNTIuMy0xLjcgOC41LTEuNyA4LjUgMS40IDQuNiA2LjEtNy43IDE5LjktMzEuMyAyNS40LTQzLjUgNy40LTE2LjIgMTUtNDAuMiAxOC42LTU4LjcgNC4zLTIyLjUgMy45LTcwLjgtLjgtOTMuNHpNMTQxLjMgNDNDMTg5IDQwLjUgMjUxIDc3LjUgMjU1LjYgNzguNGMuNy4xIDEwLjQtNC4yIDIxLjYtOS43IDYzLjktMzEuMSA5NC0yNS44IDEwNy40LTI1LjItNjMuOS0zOS4zLTE1Mi43LTUwLTIzMy45LTExLjctMjMuNCAxMS4xLTI0IDExLjktOS40IDExLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVhpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYyLjcgMjEwYy0xLjggMy4zLTI1LjIgNDQuNC03MC4xIDEyMy41LTQuOSA4LjMtMTAuOCAxMi41LTE3LjcgMTIuNUg5LjhjLTcuNyAwLTEyLjEtNy41LTguNS0xNC40bDY5LTEyMS4zYy4yIDAgLjItLjEgMC0uM2wtNDMuOS03NS42Yy00LjMtNy44LjMtMTQuMSA4LjUtMTQuMUgxMDBjNy4zIDAgMTMuMyA0LjEgMTggMTIuMmw0NC43IDc3LjV6TTM4Mi42IDQ2LjFsLTE0NCAyNTN2LjNMMzMwLjIgNDY2YzMuOSA3LjEuMiAxNC4xLTguNSAxNC4xaC02NS4yYy03LjYgMC0xMy42LTQtMTgtMTIuMmwtOTIuNC0xNjguNWMzLjMtNS44IDUxLjUtOTAuOCAxNDQuOC0yNTUuMiA0LjYtOC4xIDEwLjQtMTIuMiAxNy41LTEyLjJoNjUuN2M4IDAgMTIuMyA2LjcgOC41IDE0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlDb21iaW5hdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMnY0NDhIMFYzMmg0NDh6TTIzNiAyODcuNUwzMTMuNSAxNDJoLTMyLjdMMjM1IDIzM2MtNC43IDkuMy05IDE4LjMtMTIuOCAyNi44TDIxMCAyMzNsLTQ1LjItOTFoLTM1bDc2LjcgMTQzLjh2OTQuNUgyMzZ2LTkyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhaG9vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMy42OSwxNDEuMDYsMTY3LDI4NC4yMywxMTEsMTQxLjA2SDE0LjkzTDEyMC43NiwzOTAuMTksODIuMTksNDgwaDk0LjE3TDMxNy4yNywxNDEuMDZabTEwNS40LDEzNS43OWE1OC4yMiw1OC4yMiwwLDEsMCw1OC4yMiw1OC4yMkE1OC4yMiw1OC4yMiwwLDAsMCwzMjkuMDksMjc2Ljg1Wk0zOTQuNjUsMzJsLTkzLDIyMy40N0g0MDYuNDRMNDk5LjA3LDMyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYW1tZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwLjY3NiwxNTkuNDg2YTEyLjc3OSwxMi43NzksMCwwLDAtNi40LTguMjgyLDEzLjk1NCwxMy45NTQsMCwwLDAtMTAuMDc4LTEuMTI1TDQ1Ny44LDE1Ni43bC0uMDQzLS4yLTIyLjMsNS43ODUtMS4yNDMuMzMzLS42MDgtMi4xN0EzNjkuMDM3LDM2OS4wMzcsMCwwLDAsMzQ3LjUzOCw0LjI4OWExNC4xLDE0LjEsMCwwLDAtMTkuNzg0LS40NjNsLTEwMi45LDEwMi43NDdIMjQuOTQ3QTI0LjksMjQuOSwwLDAsMCwwLDEzMS40MTdWMzgwLjM4YTI0Ljk2MywyNC45NjMsMCwwLDAsMjQuOTE4LDI0LjlIMjI0Ljk4NkwzMjguMDcyLDUwOGExMy42NjcsMTMuNjY3LDAsMCwwLDE5LjMyNywwYy4xMjYtLjEyNi4yNDktLjI1NS4zNy0uMzg1YTM2OC4wMjUsMzY4LjAyNSwwLDAsMCw2OS41NzctMTA3LjM3NCw0MDMuNDUsNDAzLjQ1LDAsMCwwLDE3LjMtNTAuOHYtLjAyOGwyMC40MDYsNS4zMzYuMDI5LS4wNzNMNDgzLjM0NSwzNjJhMjAuMjUzLDIwLjI1MywwLDAsMCwyLjYxOS41LDEzLjM1OSwxMy4zNTksMCwwLDAsNC4xMzktLjA3MiwxMy41LDEzLjUsMCwwLDAsMTAuNTE1LTkuOTI0LDQxNS44NTUsNDE1Ljg1NSwwLDAsMCwuMDU4LTE5My4wMTNaTTMzNy4xMjUsMjQuNjVsLjAxMy4wMTRoLS4wMTNabS0xMTAuMiwxNjUuMTYxTDE3NC4zMTEsMjgxLjFhMTEuMzM4LDExLjMzOCwwLDAsMC0xLjQ4OSw1LjY1NXY0Ni4xODlhMjIuMDQsMjIuMDQsMCwwLDEtMjIuMDQxLDIyaC0zLjRBMjIuMDY4LDIyLjA2OCwwLDAsMSwxMjUuMywzMzIuOTYyVjI4Ny4yOTRhMTEuNTMyLDExLjUzMiwwLDAsMC0xLjM4OC01LjUxbC01MS42LTkyLjJhMjEuOTg4LDIxLjk4OCwwLDAsMSwxOS4yNjQtMzIuNzI2aDMuMjY4YTIyLjA1OSwyMi4wNTksMCwwLDEsMTkuNjExLDExLjkxNmwzNi4zNTcsNzAuMjgxLDM3LjUxNS03MC41MTJhMjIuMDY2LDIyLjA2NiwwLDAsMSwzOC41NTYtLjY5NSwyMS43LDIxLjcsMCwwLDEsMCwyMS45NjdaTTMzNy4xNDUsMjQuNjczYTM0OC4xNDcsMzQ4LjE0NywwLDAsMSw3NS44LDE0MS4zMzVsLjU2NCwxLjk1Mi0xMTQuMTM0LDI5LjZWMTMxLjQxN2EyNS4wMDYsMjUuMDA2LDAsMCwwLTI0Ljk0Ny0yNC45SDI1NS4wNjdabTYwLjUsMzY3LjMwNXYtLjA0M2wtLjAxNC4wMTRhMzQ3LjE5LDM0Ny4xOSwwLDAsMS02MC4xNzcsOTUuMjI3bC04Mi4yLTgxLjg5M2gxOS4xNzdhMjQuOTc4LDI0Ljk3OCwwLDAsMCwyNC45NDctMjQuOXYtNjYuMmwxMTQuNiwyOS44NjJBMzg1LjE5MSwzODUuMTkxLDAsMCwxLDM5Ny42NDgsMzkxLjk3OFptODQtNTIuNDUuMDE1LjAxNC01MC42MTgtMTMuMTMxTDI5OS4zNzksMjkyLjFWMjE5LjU3MmwxMTkuNzQ2LTMwLjk5LDQuNDY4LTEuMTU3LDM5LjU0LTEwLjI1MywxOC41MTEtNC44MTZBMzkzLDM5MywwLDAsMSw0ODEuNjQ0LDMzOS41MjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbmRleEludGVybmF0aW9uYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI5LjUgNTEyVjM0NS45TDE4LjUgNDhoNTUuOGw4MS44IDIyOS43TDI1MC4yIDBoNTEuM0wxODAuOCAzNDcuOFY1MTJoLTUxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbmRleCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuMSAzMTUuOEw2NS43IDUxMkgybDk2LTIwOS44Yy00NS4xLTIyLjktNzUuMi02NC40LTc1LjItMTQxLjFDMjIuNyA1My43IDkwLjggMCAxNzEuNyAwSDI1NHY1MTJoLTU1LjFWMzE1LjhoLTQ1Ljh6bTQ1LjgtMjY5LjNoLTI5LjRjLTQ0LjQgMC04Ny40IDI5LjQtODcuNCAxMTQuNiAwIDgyLjMgMzkuNCAxMDguOCA4Ny40IDEwOC44aDI5LjRWNDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTMuOSAzNDUuMmMtMzkgOS4zLTQ4LjQgMzIuMS0xMDQgNDcuNCAwIDAtMi43IDQtMTAuNCA1LjgtMTMuNCAzLjMtNjMuOSA2LTY4LjUgNi4xLTEyLjQuMS0xOS45LTMuMi0yMi04LjItNi40LTE1LjMgOS4yLTIyIDkuMi0yMi04LjEtNS05LTkuOS05LjgtOC4xLTIuNCA1LjgtMy42IDIwLjEtMTAuMSAyNi41LTguOCA4LjktMjUuNSA1LjktMzUuMy44LTEwLjgtNS43LjgtMTkuMi44LTE5LjJzLTUuOCAzLjQtMTAuNS0zLjZjLTYtOS4zLTE3LjEtMzcuMyAxMS41LTYyLTEuMy0xMC4xLTQuNi01My43IDQwLjYtODUuNiAwIDAtMjAuNi0yMi44LTEyLjktNDMuMyA1LTEzLjQgNy0xMy4zIDguNi0xMy45IDUuNy0yLjIgMTEuMy00LjYgMTUuNC05LjEgMjAuNi0yMi4yIDQ2LjgtMTggNDYuOC0xOHMxMi40LTM3LjggMjMuOS0zMC40YzMuNSAyLjMgMTYuMyAzMC42IDE2LjMgMzAuNnMxMy42LTcuOSAxNS4xLTVjOC4yIDE2IDkuMiA0Ni41IDUuNiA2NS4xLTYuMSAzMC42LTIxLjQgNDcuMS0yNy42IDU3LjUtMS40IDIuNCAxNi41IDEwIDI3LjggNDEuMyAxMC40IDI4LjYgMS4xIDUyLjcgMi44IDU1LjMuOCAxLjQgMTMuNy44IDM2LjQtMTMuMiAxMi44LTcuOSAyOC4xLTE2LjkgNDUuNC0xNyAxNi43LS41IDE3LjYgMTkuMiA0LjkgMjIuMnpNNDk2IDI1NmMwIDEzNi45LTExMS4xIDI0OC0yNDggMjQ4UzAgMzkyLjkgMCAyNTYgMTExLjEgOCAyNDggOHMyNDggMTExLjEgMjQ4IDI0OHptLTc5LjMgNzUuMmMtMS43LTEzLjYtMTMuMi0yMy0yOC0yMi44LTIyIC4zLTQwLjUgMTEuNy01Mi44IDE5LjItNC44IDMtOC45IDUuMi0xMi40IDYuOCAzLjEtNDQuNS0yMi41LTczLjEtMjguNy03OS40IDcuOC0xMS4zIDE4LjQtMjcuOCAyMy40LTUzLjIgNC4zLTIxLjcgMy01NS41LTYuOS03NC41LTEuNi0zLjEtNy40LTExLjItMjEtNy40LTkuNy0yMC0xMy0yMi4xLTE1LjYtMjMuOC0xLjEtLjctMjMuNi0xNi40LTQxLjQgMjgtMTIuMi45LTMxLjMgNS4zLTQ3LjUgMjIuOC0yIDIuMi01LjkgMy44LTEwLjEgNS40aC4xYy04LjQgMy0xMi4zIDkuOS0xNi45IDIyLjMtNi41IDE3LjQuMiAzNC42IDYuOCA0NS43LTE3LjggMTUuOS0zNyAzOS44LTM1LjcgODIuNS0zNCAzNi0xMS44IDczLTUuNiA3OS42LTEuNiAxMS4xIDMuNyAxOS40IDEyIDIzLjggMTIuNiA2LjcgMzAuMyA5LjYgNDMuOSAyLjggNC45IDUuMiAxMy44IDEwLjEgMzAgMTAuMSA2LjggMCA1OC0yLjkgNzIuNi02LjUgNi44LTEuNiAxMS41LTQuNSAxNC42LTcuMSA5LjgtMy4xIDM2LjgtMTIuMyA2Mi4yLTI4LjcgMTgtMTEuNyAyNC4yLTE0LjIgMzcuNi0xNy40IDEyLjktMy4yIDIxLTE1LjEgMTkuNC0yOC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZZWxwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjkgMjQwLjMybDk5LjYyIDQ4LjYxYzE5LjIgOS40IDE2LjIgMzcuNTEtNC41IDQyLjcxTDMwLjUgMzU4LjQ1YTIyLjc5IDIyLjc5IDAgMCAxLTI4LjIxLTE5LjYgMTk3LjE2IDE5Ny4xNiAwIDAgMSA5LTg1LjMyIDIyLjggMjIuOCAwIDAgMSAzMS42MS0xMy4yMXptNDQgMjM5LjI1YTE5OS40NSAxOTkuNDUgMCAwIDAgNzkuNDIgMzIuMTFBMjIuNzggMjIuNzggMCAwIDAgMTkyLjk0IDQ5MGwzLjktMTEwLjgyYy43LTIxLjMtMjUuNS0zMS45MS0zOS44MS0xNi4xbC03NC4yMSA4Mi40YTIyLjgyIDIyLjgyIDAgMCAwIDQuMDkgMzQuMDl6bTE0NS4zNC0xMDkuOTJsNTguODEgOTRhMjIuOTMgMjIuOTMgMCAwIDAgMzQgNS41IDE5OC4zNiAxOTguMzYgMCAwIDAgNTIuNzEtNjcuNjFBMjMgMjMgMCAwIDAgMzY0LjE3IDM3MGwtMTA1LjQyLTM0LjI2Yy0yMC4zMS02LjUtMzcuODEgMTUuOC0yNi41MSAzMy45MXptMTQ4LjMzLTEzMi4yM2ExOTcuNDQgMTk3LjQ0IDAgMCAwLTUwLjQxLTY5LjMxIDIyLjg1IDIyLjg1IDAgMCAwLTM0IDQuNGwtNjIgOTEuOTJjLTExLjkgMTcuNyA0LjcgNDAuNjEgMjUuMiAzNC43MUwzNjYgMjY4LjYzYTIzIDIzIDAgMCAwIDE0LjYxLTMxLjIxek02Mi4xMSAzMC4xOGEyMi44NiAyMi44NiAwIDAgMC05LjkgMzJsMTA0LjEyIDE4MC40NGMxMS43IDIwLjIgNDIuNjEgMTEuOSA0Mi42MS0xMS40VjIyLjg4YTIyLjY3IDIyLjY3IDAgMCAwLTI0LjUtMjIuOCAzMjAuMzcgMzIwLjM3IDAgMCAwLTExMi4zMyAzMC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZb2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS4zIDc2aDE4NmwtNyAxOC45aC0xNzljLTM5LjcgMC03MS45IDMxLjYtNzEuOSA3MC4zdjIwNS40YzAgMzUuNCAyNC45IDcwLjMgODQgNzAuM1Y0NjBIOTEuM0M0MS4yIDQ2MCAwIDQxOS44IDAgMzcwLjVWMTY1LjJDMCAxMTUuOSA0MC43IDc2IDkxLjMgNzZ6bTIyOS4xLTU2aDY2LjVDMjQzLjEgMzk4LjEgMjQxLjIgNDE4LjkgMjAyLjIgNDU5LjNjLTIwLjggMjEuNi00OS4zIDMxLjctNzguMyAzMi43di01MS4xYzQ5LjItNy43IDY0LjYtNDkuOSA2NC42LTc1LjMgMC0yMC4xLjYtMTIuNi04Mi4xLTIyMy4yaDYxLjRMMjE4LjIgMjk5IDMyMC40IDIwek00NDggMTYxLjVWNDYwSDIzNGM2LjYtOS42IDEwLjctMTYuMyAxMi4xLTE5LjRoMTgyLjVWMTYxLjVjMC0zMi41LTE3LjEtNTEuOS00OC4yLTYyLjlsNi43LTE3LjZjNDEuNyAxMy42IDYwLjkgNDMuMSA2MC45IDgwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlvdXR1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ5LjY1NSAxMjQuMDgzYy02LjI4MS0yMy42NS0yNC43ODctNDIuMjc2LTQ4LjI4NC00OC41OTdDNDU4Ljc4MSA2NCAyODggNjQgMjg4IDY0UzExNy4yMiA2NCA3NC42MjkgNzUuNDg2Yy0yMy40OTcgNi4zMjItNDIuMDAzIDI0Ljk0Ny00OC4yODQgNDguNTk3LTExLjQxMiA0Mi44NjctMTEuNDEyIDEzMi4zMDUtMTEuNDEyIDEzMi4zMDVzMCA4OS40MzggMTEuNDEyIDEzMi4zMDVjNi4yODEgMjMuNjUgMjQuNzg3IDQxLjUgNDguMjg0IDQ3LjgyMUMxMTcuMjIgNDQ4IDI4OCA0NDggMjg4IDQ0OHMxNzAuNzggMCAyMTMuMzcxLTExLjQ4NmMyMy40OTctNi4zMjEgNDIuMDAzLTI0LjE3MSA0OC4yODQtNDcuODIxIDExLjQxMi00Mi44NjcgMTEuNDEyLTEzMi4zMDUgMTEuNDEyLTEzMi4zMDVzMC04OS40MzgtMTEuNDEyLTEzMi4zMDV6bS0zMTcuNTEgMjEzLjUwOFYxNzUuMTg1bDE0Mi43MzkgODEuMjA1LTE0Mi43MzkgODEuMjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFaaGlodSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzAuNTQgMTQ4LjEzdjIxNy41NGwyMy40My4wMSA3LjcxIDI2LjM3IDQyLjAxLTI2LjM3aDQ5LjUzVjE0OC4xM0gxNzAuNTR6bTk3Ljc1IDE5My45M2gtMjcuOTRsLTI3LjkgMTcuNTEtNS4wOC0xNy40Ny0xMS45LS4wNFYxNzEuNzVoNzIuODJ2MTcwLjMxem0tMTE4LjQ2LTk0LjM5SDk3LjVjMS43NC0yNy4xIDIuMi01MS41OSAyLjItNzMuNDZoNTEuMTZzMS45Ny0yMi41Ni04LjU4LTIyLjMxaC04OC41YzMuNDktMTMuMTIgNy44Ny0yNi42NiAxMy4xMi00MC42NyAwIDAtMjQuMDcgMC0zMi4yNyAyMS41Ny0zLjM5IDguOS0xMy4yMSA0My4xNC0zMC43IDc4LjEyIDUuODktLjY0IDI1LjM3LTEuMTggMzYuODQtMjIuMjEgMi4xMS01Ljg5IDIuNTEtNi42NiA1LjE0LTE0LjUzaDI4Ljg3YzAgMTAuNS0xLjIgNjYuODgtMS42OCA3My40NEgyMC44M2MtMTEuNzQgMC0xNS41NiAyMy42Mi0xNS41NiAyMy42Mmg2NS41OEM2Ni40NSAzMjEuMSA0Mi44MyAzNjMuMTIgMCAzOTYuMzRjMjAuNDkgNS44NSA0MC45MS0uOTMgNTEtOS45IDAgMCAyMi45OC0yMC45IDM1LjU5LTY5LjI1bDUzLjk2IDY0Ljk0czcuOTEtMjYuODktMS4yNC0zOS45OWMtNy41OC04LjkyLTI4LjA2LTMzLjA2LTM2Ljc5LTQxLjgxTDg3LjkgMzExLjk1YzQuMzYtMTMuOTggNi45OS0yNy41NSA3Ljg3LTQwLjY3aDYxLjY1cy0uMDktMjMuNjItNy41OS0yMy42MnYuMDF6bTQxMi4wMi0xLjZjMjAuODMtMjUuNjQgNDQuOTgtNTguNTcgNDQuOTgtNTguNTdzLTE4LjY1LTE0LjgtMjcuMzgtNC4wNmMtNiA4LjE1LTM2LjgzIDQ4LjItMzYuODMgNDguMmwxOS4yMyAxNC40M3ptLTE1MC4wOS01OS4wOWMtOS4wMS04LjI1LTI1LjkxIDIuMTMtMjUuOTEgMi4xM3MzOS41MiA1NS4wNCA0MS4xMiA1Ny40NWwxOS40Ni0xMy43M3MtMjUuNjctMzcuNjEtMzQuNjYtNDUuODZoLS4wMXpNNjQwIDI1OC4zNWMtMTkuNzggMC0xMzAuOTEuOTMtMTMxLjA2Ljkzdi0xMDFjNC44MSAwIDEyLjQyLS40IDIyLjg1LTEuMiA0MC44OC0yLjQxIDcwLjEzLTQgODcuNzctNC44MSAwIDAgMTIuMjItMjcuMTktLjU5LTMzLjQ0LTMuMDctMS4xOC0yMy4xNyA0LjU4LTIzLjE3IDQuNThzLTE2NS4yMiAxNi40OS0yMzIuMzYgMTguMDVjMS42IDguODIgNy42MiAxNy4wOCAxNS43OCAxOS41NSAxMy4zMSAzLjQ4IDIyLjY5IDEuNyA0OS4xNS44OSAyNC44My0xLjYgNDMuNjgtMi40MyA1Ni41MS0yLjQzdjk5LjgxSDM1MS40MXMyLjgyIDIyLjMxIDI1LjUxIDIyLjg1aDEwNy45NHY3MC45MmMwIDEzLjk3LTExLjE5IDIxLjk5LTI0LjQ4IDIxLjEyLTE0LjA4LjExLTI2LjA4LTEuMTUtNDEuNjktMS44MSAxLjk5IDMuOTcgNi4zMyAxNC4zOSAxOS4zMSAyMS44NCA5Ljg4IDQuODEgMTYuMTcgNi41NyAyNi4wMiA2LjU3IDI5LjU2IDAgNDUuNjctMTcuMjggNDQuODktNDUuMzF2LTczLjMyaDEyMi4zNmM5LjY4IDAgOC43LTIzLjc4IDguNy0yMy43OGwuMDMtLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmEwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkyQzAgMTAzLjYgNzEuNiAzMiAxNjAgMzJzMTYwIDcxLjYgMTYwIDE2MFYzMjBjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0MDguNCAwIDMyMFYxOTJ6TTE2MCA5NmMtNTMgMC05NiA0My05NiA5NlYzMjBjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NlYxOTJjMC01My00My05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNjRjMC0xMS44LTYuNS0yMi42LTE2LjktMjguMnMtMjMtNS0zMi44IDEuNmwtOTYgNjRDLS41IDExMS4yLTQuNCAxMzEgNS40IDE0NS44czI5LjcgMTguNyA0NC40IDguOUw5NiAxMjMuOFY0MTZIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTYgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTYwVjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmEyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Mi45IDk2Yy0yMS41IDAtNDIuMiA4LjUtNTcuNCAyMy44TDU0LjYgMTUwLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDQwLjIgNzQuNUM2Ny41IDQ3LjMgMTA0LjQgMzIgMTQyLjkgMzJDMjIzIDMyIDI4OCA5NyAyODggMTc3LjFjMCAzOC41LTE1LjMgNzUuNC00Mi41IDEwMi42TDEwOS4zIDQxNkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45TDIwMC4yIDIzNC41YzE1LjItMTUuMiAyMy44LTM1LjkgMjMuOC01Ny40YzAtNDQuOC0zNi4zLTgxLjEtODEuMS04MS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmEzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIMjcyYzEzLjIgMCAyNSA4LjEgMjkuOCAyMC40czEuNSAyNi4zLTguMiAzNS4yTDE2Mi4zIDIwOEgxODRjNzUuMSAwIDEzNiA2MC45IDEzNiAxMzZzLTYwLjkgMTM2LTEzNiAxMzZIMTA1LjRDNjMgNDgwIDI0LjIgNDU2IDUuMyA0MTguMWwtMS45LTMuOGMtNy45LTE1LjgtMS41LTM1IDE0LjMtNDIuOXMzNS0xLjUgNDIuOSAxNC4zbDEuOSAzLjhjOC4xIDE2LjMgMjQuOCAyNi41IDQyLjkgMjYuNUgxODRjMzkuOCAwIDcyLTMyLjIgNzItNzJzLTMyLjItNzItNzItNzJIODBjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC40cy0xLjUtMjYuMyA4LjItMzUuMkwxODkuNyA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4OSA3Ny42YzcuNS0xNiAuNy0zNS4xLTE1LjMtNDIuNnMtMzUuMS0uNy00Mi42IDE1LjNMMyAzMjIuNGMtNC43IDkuOS0zLjkgMjEuNSAxLjkgMzAuOFMyMSAzNjggMzIgMzY4SDI1NnY4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM2OGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjMwNEg4Mi40TDE4OSA3Ny42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLjUgNTguM0MzNS4zIDQzLjEgNDguNSAzMiA2NCAzMkgyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIOTAuN0w3MC4zIDIwOEgxODRjNzUuMSAwIDEzNiA2MC45IDEzNiAxMzZzLTYwLjkgMTM2LTEzNiAxMzZIMTAwLjVjLTM5LjQgMC03NS40LTIyLjMtOTMtNTcuNWwtNC4xLTguMmMtNy45LTE1LjgtMS41LTM1IDE0LjMtNDIuOXMzNS0xLjUgNDIuOSAxNC4zbDQuMSA4LjJjNi44IDEzLjYgMjAuNiAyMi4xIDM1LjggMjIuMUgxODRjMzkuOCAwIDcyLTMyLjIgNzItNzJzLTMyLjItNzItNzItNzJIMzJjLTkuNSAwLTE4LjUtNC4yLTI0LjYtMTEuNXMtOC42LTE2LjktNi45LTI2LjJsMzItMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMi40IDg0LjdjMTEuNC0xMy41IDkuNy0zMy43LTMuOC00NS4xcy0zMy43LTkuNy00NS4xIDMuOEwzOC42IDIxNC43QzE0LjcgMjQyLjkgMS4xIDI3OC40IC4xIDMxNS4yYzAgMS40LS4xIDIuOS0uMSA0LjNjMCAuMiAwIC4zIDAgLjVjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBzMTYwLTcxLjYgMTYwLTE2MGMwLTg1LjUtNjcuMS0xNTUuNC0xNTEuNS0xNTkuOGw2My45LTc1LjZ6TTI1NiAzMjBBOTYgOTYgMCAxIDEgNjQgMzIwYTk2IDk2IDAgMSAxIDE5MiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIMjg4YzExLjUgMCAyMiA2LjEgMjcuNyAxNi4xczUuNyAyMi4yLS4xIDMyLjFsLTIyNCAzODRjLTguOSAxNS4zLTI4LjUgMjAuNC00My44IDExLjVzLTIwLjQtMjguNS0xMS41LTQzLjhMMjMyLjMgOTZIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhOCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgMTYwYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4SDE0NEM3My4zIDMyIDE2IDg5LjMgMTYgMTYwYzAgMzQuNiAxMy43IDY2IDM2IDg5QzIwLjUgMjcyLjMgMCAzMDkuOCAwIDM1MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOGg2NGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGMwLTQyLjItMjAuNS03OS43LTUyLTEwM2MyMi4zLTIzIDM2LTU0LjQgMzYtODl6TTE3Ni4xIDI4OEgxOTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRIMTI4Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0aDE1LjljMCAwIC4xIDAgLjEgMGgzMmMwIDAgLjEgMCAuMSAwem0wLTY0YzAgMCAwIDAgMCAwSDE0NGMwIDAgMCAwIDAgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAzNS4zLTI4LjYgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYTkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTkyYTk2IDk2IDAgMSAwIDE5MiAwQTk2IDk2IDAgMSAwIDY0IDE5MnptODcuNSAxNTkuOEM2Ny4xIDM0Ny40IDAgMjc3LjUgMCAxOTJDMCAxMDMuNiA3MS42IDMyIDE2MCAzMnMxNjAgNzEuNiAxNjAgMTYwYzAgMi42LS4xIDUuMy0uMiA3LjljLTEuNyAzNS43LTE1LjIgNzAtMzguNCA5Ny40bC0xNDUgMTcxLjRjLTExLjQgMTMuNS0zMS42IDE1LjItNDUuMSAzLjhzLTE1LjItMzEuNi0zLjgtNDUuMWw2My45LTc1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIxLjUgNTEuN0MyMTYuNiAzOS44IDIwNC45IDMyIDE5MiAzMnMtMjQuNiA3LjgtMjkuNSAxOS43bC0xMjAgMjg4LTQwIDk2Yy02LjggMTYuMyAuOSAzNSAxNy4yIDQxLjhzMzUtLjkgNDEuOC0xNy4yTDkzLjMgMzg0SDI5MC43bDMxLjggNzYuM2M2LjggMTYuMyAyNS41IDI0IDQxLjggMTcuMnMyNC0yNS41IDE3LjItNDEuOGwtNDAtOTYtMTIwLTI4OHpNMjY0IDMyMEgxMjBsNzItMTcyLjhMMjY0IDMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWRkcmVzc0Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2ek0yMDggMjg4aDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTMyLTk2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNTEyIDgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWODB6TTQ5NiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZ6bTE2IDE0NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjMzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWRkcmVzc0NhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em04MCAyNTZoNjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODB6bS0zMi05NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6bTI1Ni0zMkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRINDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJ6bTk2IDEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ6TTAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTM1MiAzMjBjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25KdXN0aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyem0wIDI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ6TTAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTQ0OCA0NDhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGlnbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMkgyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDQ4IDQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsaWduUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6TTAgMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ0OCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmNob3JDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptMjEuMSA4MEMzNjcgMTU4LjggMzg0IDEyOS40IDM4NCA5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDMzLjQgMTcgNjIuOCA0Mi45IDgwSDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMlY0NDhIMjA4Yy01MyAwLTk2LTQzLTk2LTk2di02LjFsNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw5NyAyNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzE5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03VjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGg4MCA4MGM4LjIgMCAxNi4zLS42IDI0LjItMS44Yy0yMi4yLTE2LjItNDAuNC0zNy41LTUzLTYyLjJIMzIwVjM2OCAyNDBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzQxLjF6TTY0MCAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuY2hvckNpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0yMS4xIDgwQzM2NyAxNTguOCAzODQgMTI5LjQgMzg0IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMzMuNCAxNyA2Mi44IDQyLjkgODBIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyVjQ0OEgyMDhjLTUzIDAtOTYtNDMtOTYtOTZ2LTYuMWw3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDk3IDI2M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3LTdWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwaDgwIDgwYzguMiAwIDE2LjMtLjYgMjQuMi0xLjhjLTIyLjItMTYuMi00MC40LTM3LjUtNTMtNjIuMkgzMjBWMzY4IDI0MGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNDEuMXpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5jaG9yQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDk2YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bTIxLjEgODBDMzY3IDE1OC44IDM4NCAxMjkuNCAzODQgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAzMy40IDE3IDYyLjggNDIuOSA4MEgyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJWNDQ4SDIwOGMtNTMgMC05Ni00My05Ni05NnYtNi4xbDcgN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMOTcgMjYzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMxOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctN1YzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBoODAgODBjOC4yIDAgMTYuMy0uNiAyNC4yLTEuOGMtMjIuMi0xNi4yLTQwLjQtMzcuNS01My02Mi4ySDMyMFYzNjggMjQwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0MS4xek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w1MTguNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5jaG9yTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptMjEuMSA4MEMzNjcgMTU4LjggMzg0IDEyOS40IDM4NCA5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDMzLjQgMTcgNjIuOCA0Mi45IDgwSDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMlY0NDhIMjA4Yy01MyAwLTk2LTQzLTk2LTk2di02LjFsNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw5NyAyNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzE5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03VjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGg4MCA4MGM4IDAgMTUuOS0uNiAyMy42LTEuN2MtNC44LTktNy42LTE5LjMtNy42LTMwLjNWNDQ2LjdjLTUuMiAuOS0xMC41IDEuMy0xNiAxLjNIMzIwVjI0MGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNDEuMXpNNTI4IDI0MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5jaG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0yMS4xIDgwQzM2NyAxNTguOCAzODQgMTI5LjQgMzg0IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMzMuNCAxNyA2Mi44IDQyLjkgODBIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyVjQ0OEgyMDhjLTUzIDAtOTYtNDMtOTYtOTZ2LTYuMWw3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDk3IDI2M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3LTdWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwaDgwIDgwYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwdi02LjFsNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTYtNTZjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC01NiA1NmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctN1YzNTJjMCA1My00MyA5Ni05NiA5NkgzMjBWMjQwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0MS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAxLjQgMzc0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyMjQgMzA2LjcgODYuNiAxNjkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxLjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyNTYgMjQ2LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc4LjYgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE2MCAxNjBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDIxMC43IDI1NiA3My40IDExOC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAxLjQgMTM3LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTYwIDE2MGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyMjQgMjA1LjMgODYuNiAzNDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTYwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVzRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuNiA0NzAuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTE2MC0xNjBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBMMjI0IDQwMi43IDM2MS40IDI2NS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTE2MCAxNjB6bTE2MC0zNTJsLTE2MCAxNjBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC0xNjAtMTYwYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwTDIyNCAyMTAuNyAzNjEuNCA3My40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlc0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEuNCAyMzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDEwOS4zIDI1NiAyNDYuNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHptMzUyLTE2MGwtMTYwIDE2MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDMwMS4zIDI1NiA0MzguNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVzUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcwLjYgMjc4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDQwMi43IDI1NiAyNjUuNCAzOTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwem0tMzUyIDE2MGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wyMTAuNyAyNTYgNzMuNCAzOTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVzVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ2LjYgNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjI0IDEwOS4zIDM2MS40IDI0Ni42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjB6bTE2MCAzNTJsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDIyNCAzMDEuMyAzNjEuNCA0MzguNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmtoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0YzAgNDEuNi0yMC43IDc2LjYtNDYuNiAxMDQuMWMtNS45IDYuMi0xMS44IDExLjgtMTcuNCAxNi43Yy01LjYtNC45LTExLjUtMTAuNS0xNy40LTE2LjdDMTE2LjcgMjA0LjYgOTYgMTY5LjYgOTYgMTI4ek0xNjAgMEM4OS4zIDAgMzIgNTcuMyAzMiAxMjhjMCA1Mi40IDIxLjUgOTUuNSA0Ni44IDEyOEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjBoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjQxLjJjMjUuNC0zMi41IDQ2LjgtNzUuNiA0Ni44LTEyOEMyODggNTcuMyAyMzAuNyAwIDE2MCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZVdob2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMTJjLTguOCAwLTE2LTcuMi0xNi0xNlY4MGMwLTQ0LjIgMzUuOC04MCA4MC04MGgxNmM4LjggMCAxNiA3LjIgMTYgMTZWMzJjMCA0NC4yLTM1LjggODAtODAgODBIMjI0ek0wIDI4OGMwLTc2LjMgMzUuNy0xNjAgMTEyLTE2MGMyNy4zIDAgNTkuNyAxMC4zIDgyLjcgMTkuM2MxOC44IDcuMyAzOS45IDcuMyA1OC43IDBjMjIuOS04LjkgNTUuNC0xOS4zIDgyLjctMTkuM2M3Ni4zIDAgMTEyIDgzLjcgMTEyIDE2MGMwIDEyOC04MCAyMjQtMTYwIDIyNGMtMTYuNSAwLTM4LjEtNi42LTUxLjUtMTEuM2MtOC4xLTIuOC0xNi45LTIuOC0yNSAwYy0xMy40IDQuNy0zNSAxMS4zLTUxLjUgMTEuM0M4MCA1MTIgMCA0MTYgMCAyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFyY2h3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnptMCAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZoNjRWMzUyYzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZWNDgwaDY0IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjEyOEgzMlY0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93bjE5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1MC43IDM4Yy04LjMtNi0xOS4xLTcuNy0yOC44LTQuNGwtNDggMTZjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjVzMjMuNyAyNS44IDQwLjUgMjAuMmw1LjktMlYxNjBIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDQ4IDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ2NFY2NGMwLTEwLjMtNC45LTE5LjktMTMuMy0yNnpNMTYwIDQ4MGM5IDAgMTcuNS0zLjggMjMuNi0xMC40bDg4LTk2YzExLjktMTMgMTEuMS0zMy4zLTItNDUuMnMtMzMuMy0xMS4xLTQ1LjIgMkwxOTIgMzY1LjdWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzY1LjdMOTUuNiAzMzAuNGMtMTEuOS0xMy0zMi4yLTEzLjktNDUuMi0ycy0xMy45IDMyLjItMiA0NS4ybDg4IDk2QzE0Mi41IDQ3Ni4yIDE1MSA0ODAgMTYwIDQ4MHpNNDE4LjMgMzA3YTMyIDMyIDAgMSAxIDI3LjQgNTcuOUEzMiAzMiAwIDEgMSA0MTguMyAzMDd6TTQwNS4xIDQxOS44bC02LjggOS4yYy0xMC41IDE0LjItNy41IDM0LjIgNi43IDQ0LjhzMzQuMiA3LjUgNDQuOC02LjdsNDguOC02NS44YzE0LTE4LjkgMjEuNS00MS43IDIxLjUtNjUuMmMwLTQ4LjYtMzkuNC04OC04OC04OHMtODggMzkuNC04OCA4OGMwIDM5LjIgMjUuNiA3Mi40IDYxLjEgODMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duOTEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDQ4MGM5IDAgMTcuNS0zLjggMjMuNi0xMC40bDg4LTk2YzExLjktMTMgMTEuMS0zMy4zLTItNDUuMnMtMzMuMy0xMS4xLTQ1LjIgMkwxOTIgMzY1LjdWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzY1LjdMOTUuNiAzMzAuNGMtMTEuOS0xMy0zMi4yLTEzLjktNDUuMi0ycy0xMy45IDMyLjItMiA0NS4ybDg4IDk2QzE0Mi41IDQ3Ni4yIDE1MSA0ODAgMTYwIDQ4MHpNNDUwLjcgMjk0Yy04LjMtNi0xOS4xLTcuNy0yOC44LTQuNGwtNDggMTZjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjVzMjMuNyAyNS44IDQwLjUgMjAuMmw1LjktMlY0MTZIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDQ4IDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ2NFYzMjBjMC0xMC4zLTQuOS0xOS45LTEzLjMtMjZ6TTQxOC4zIDkxYTMyIDMyIDAgMSAxIDI3LjQgNTcuOUEzMiAzMiAwIDEgMSA0MTguMyA5MXpNNDA1LjEgMjAzLjhsLTYuOCA5LjJjLTEwLjUgMTQuMi03LjUgMzQuMiA2LjcgNDQuOHMzNC4yIDcuNSA0NC44LTYuN2w0OC44LTY1LjhjMTQtMTguOSAyMS41LTQxLjcgMjEuNS02NS4yYzAtNDguNi0zOS40LTg4LTg4LTg4cy04OCAzOS40LTg4IDg4YzAgMzkuMiAyNS42IDcyLjQgNjEuMSA4My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25BWiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0NjkuNkMxNzcuNSA0NzYuMiAxNjkgNDgwIDE2MCA0ODBzLTE3LjUtMy44LTIzLjYtMTAuNGwtODgtOTZjLTExLjktMTMtMTEuMS0zMy4zIDItNDUuMnMzMy4zLTExLjEgNDUuMiAyTDEyOCAzNjUuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM2NS43bDMyLjQtMzUuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTJzMTMuOSAzMi4yIDIgNDUuMmwtODggOTZ6TTMyMCAzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzEyLjkgMCAyNC42IDcuOCAyOS42IDE5LjhzMi4yIDI1LjctNi45IDM0LjlMNDI5LjMgNDE2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzNTJjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45TDQwMi43IDM1MkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00MTYgMzJjMTIuMSAwIDIzLjIgNi44IDI4LjYgMTcuN2w2NCAxMjggMTYgMzJjNy45IDE1LjggMS41IDM1LTE0LjMgNDIuOXMtMzUgMS41LTQyLjktMTQuM0w0NjAuMiAyMjRIMzcxLjhsLTcuMiAxNC4zYy03LjkgMTUuOC0yNy4xIDIyLjItNDIuOSAxNC4zcy0yMi4yLTI3LjEtMTQuMy00Mi45bDE2LTMyIDY0LTEyOEMzOTIuOCAzOC44IDQwMy45IDMyIDQxNiAzMnpNMzk1LjggMTc2aDQwLjRMNDE2IDEzNS42IDM5NS44IDE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duTG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjkuNCA1MDIuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCA0MDIuNyAyMjQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAzNzAuN0w4Ni42IDMyOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25TaG9ydFdpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjYgNDY5LjZDMTQ1LjUgNDc2LjIgMTM3IDQ4MCAxMjggNDgwcy0xNy41LTMuOC0yMy42LTEwLjRsLTg4LTk2Yy0xMS45LTEzLTExLjEtMzMuMyAyLTQ1LjJzMzMuMy0xMS4xIDQ1LjIgMkw5NiAzNjUuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM2NS43bDMyLjQtMzUuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTJzMTMuOSAzMi4yIDIgNDUuMmwtODggOTZ6TTMyMCAzMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgMTI4aDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxMjhINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxMjhINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duVXBBY3Jvc3NMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNy40IDUwMi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDk2LTk2YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5MiA0MDIuN1YyODhINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ0OFYxMDkuM2w0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwzODQgMTA5LjNWMjI0SDE5MiAxMjggMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTZWNDAyLjdMODYuNiAzNjEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZ6TTEyOCAxOTJoNjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyek00NDggMzIwSDM4NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93blVwTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTAuNiA1MDIuNmw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxNjAgNDAyLjdWMjg4SDQxNlYyNzJjMC0xNy4yIDMuOS0zMy41IDEwLjgtNDhIMzUyVjEwOS4zbDQxLjQgNDEuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05Ni05NmMtNi02LTE0LjEtOS40LTIyLjYtOS40cy0xNi42IDMuNC0yMi42IDkuNGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjg4IDEwOS4zVjIyNGwtMTI4IDBIOTZsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZWNDAyLjdMNTQuNiAzNjEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDB6TTE2MCAxOTJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyaDY0ek0yODggMzIwVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyMEgyODh6bTI0MC04MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duV2lkZVNob3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MS42IDQ2OS42QzE0NS41IDQ3Ni4yIDEzNyA0ODAgMTI4IDQ4MHMtMTcuNS0zLjgtMjMuNi0xMC40bC04OC05NmMtMTEuOS0xMy0xMS4xLTMzLjMgMi00NS4yczMzLjMtMTEuMSA0NS4yIDJMOTYgMzY1LjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzNjUuN2wzMi40LTM1LjRjMTEuOS0xMyAzMi4yLTEzLjkgNDUuMi0yczEzLjkgMzIuMiAyIDQ1LjJsLTg4IDk2ek0zMjAgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMHptMC0xMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwem0wLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwem0wLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25aQSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0NjkuNkMxNzcuNSA0NzYuMiAxNjkgNDgwIDE2MCA0ODBzLTE3LjUtMy44LTIzLjYtMTAuNGwtODgtOTZjLTExLjktMTMtMTEuMS0zMy4zIDItNDUuMnMzMy4zLTExLjEgNDUuMiAyTDEyOCAzNjUuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM2NS43bDMyLjQtMzUuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTJzMTMuOSAzMi4yIDIgNDUuMmwtODggOTZ6TTMyMCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOUw0MjkuMyAxNjBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM1MmMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0LjlMNDAyLjcgOTZIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMnptOTYgMTkyYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdsNjQgMTI4IDE2IDMyYzcuOSAxNS44IDEuNSAzNS0xNC4zIDQyLjlzLTM1IDEuNS00Mi45LTE0LjNMNDYwLjIgNDQ4SDM3MS44bC03LjIgMTQuM2MtNy45IDE1LjgtMjcuMSAyMi4yLTQyLjkgMTQuM3MtMjIuMi0yNy4xLTE0LjMtNDIuOWwxNi0zMiA2NC0xMjhjNS40LTEwLjggMTYuNS0xNy43IDI4LjYtMTcuN3pNMzk1LjggNDAwaDQwLjRMNDE2IDM1OS42IDM5NS44IDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OS40IDQ3MC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjI0IDM3MC44IDIyNCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMwNi43TDU0LjYgMjY1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93TGVmdExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjMgMjg4IDQ4MCAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTM3MC43IDAgNzMuNC03My40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjIgMjg4IDQxNiAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMwNi43IDBMMjE0LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDU1LjJWNDI2YzAgMTIuMiA5LjkgMjIgMjIgMjJjNi4zIDAgMTIuNC0yLjcgMTYuNi03LjVMMTIxLjIgMzQ2bDU4LjEgMTE2LjNjNy45IDE1LjggMjcuMSAyMi4yIDQyLjkgMTQuM3MyMi4yLTI3LjEgMTQuMy00Mi45TDE3OS44IDMyMEgyOTcuOWMxMi4yIDAgMjIuMS05LjkgMjIuMS0yMi4xYzAtNi4zLTIuNy0xMi4zLTcuNC0xNi41TDM4LjYgMzcuOUMzNC4zIDM0LjEgMjguOSAzMiAyMy4yIDMyQzEwLjQgMzIgMCA0Mi40IDAgNTUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSaWdodEFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzguNiAxNTAuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDMzOC43IDk2IDMyIDk2QzE0LjMgOTYgMCAxMTAuMyAwIDEyOHMxNC4zIDMyIDMyIDMybDMwNi43IDAtNDEuNCA0MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDk2LTk2em0tMzMzLjMgMzUyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjMgNDE2IDQxNiA0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMwNi43IDAgNDEuNC00MS40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UmlnaHRGcm9tQnJhY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNDAyLjcgMjI0IDE5MiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjEwLjcgMC03My40IDczLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOHpNMTYwIDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDk2IDMyQzQzIDMyIDAgNzUgMCAxMjhMMCAzODRjMCA1MyA0MyA5NiA5NiA5Nmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1JpZ2h0TG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNDAyLjcgMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzNzAuNyAwLTczLjQgNzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1JpZ2h0VG9CcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA5Nmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDY0IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTI1NmMwLTUzLTQzLTk2LTk2LTk2bC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyem0tOS40IDE4Mi42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wyNDIuNyAyMjQgMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDIxMC43IDAtNzMuNCA3My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UmlnaHRUb0NpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjE5Mmg0MFYxMjBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY3MmgyNGMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDMyIDMzNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6bTY0IDMydjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNiA4MGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgzNjh6TTM1MiAyNzJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNzYtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZINTI4ek01MTIgMzY4djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg1MjhjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTY2LjYgMTUzLjRsODAgODBjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTgwIDgwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wxNDYuNyAyODhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMTQ2LjdsLTI1LjQtMjUuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzguNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMzM4LjggMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMDYuNyAwTDIzMy40IDM5My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93Um90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjUuNyAxNjBIMTc2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjUxLjJMOTcuNiA5Ny42Yzg3LjUtODcuNSAyMjkuMy04Ny41IDMxNi44IDBzODcuNSAyMjkuMyAwIDMxNi44cy0yMjkuMyA4Ny41LTMxNi44IDBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBjNjIuNSA2Mi41IDE2My44IDYyLjUgMjI2LjMgMHM2Mi41LTE2My44IDAtMjI2LjNzLTE2My44LTYyLjUtMjI2LjMgMEwxMjUuNyAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93Um90YXRlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg2LjMgMTYwSDMzNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0NjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NTEuMkw0MTQuNCA5Ny42Yy04Ny41LTg3LjUtMjI5LjMtODcuNS0zMTYuOCAwcy04Ny41IDIyOS4zIDAgMzE2LjhzMjI5LjMgODcuNSAzMTYuOCAwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwYy02Mi41IDYyLjUtMTYzLjggNjIuNS0yMjYuMyAwcy02Mi41LTE2My44IDAtMjI2LjNzMTYzLjgtNjIuNSAyMjYuMyAwTDM4Ni4zIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dUcmVuZERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjgyLjdMMzQyLjYgMTM3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwTDE5MiAyNDIuNyA1NC42IDEwNS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwTDMyMCAyMDUuMyA0NjYuNyAzNTJIMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1RyZW5kVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjg4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIwNS4zTDM0Mi42IDM3NC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMEwxOTIgMjY5LjMgNTQuNiA0MDYuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTYwLTE2MGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMEwzMjAgMzA2LjcgNDY2LjcgMTYwSDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dUdXJuRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA2NEMxNC4zIDY0IDAgNDkuNyAwIDMyUzE0LjMgMCAzMiAwbDk2IDBjNTMgMCA5NiA0MyA5NiA5NmwwIDMwNi43IDczLjQtNzMuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0xMjggMTI4Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxNjAgNDAyLjcgMTYwIDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1R1cm5VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsOTYgMGM1MyAwIDk2LTQzIDk2LTk2bDAtMzA2LjcgNzMuNCA3My40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE2MCAxMDkuMyAxNjAgNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwMTkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUwLjcgMzhjOC4zIDYgMTMuMyAxNS43IDEzLjMgMjZ2OTZoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDMyIDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgxNlYxMDguNGwtNS45IDJjLTE2LjggNS42LTM0LjktMy41LTQwLjUtMjAuMnMzLjUtMzQuOSAyMC4yLTQwLjVsNDgtMTZjOS44LTMuMyAyMC41LTEuNiAyOC44IDQuNHpNMTYwIDMyYzkgMCAxNy41IDMuOCAyMy42IDEwLjRsODggOTZjMTEuOSAxMyAxMS4xIDMzLjMtMiA0NS4ycy0zMy4zIDExLjEtNDUuMi0yTDE5MiAxNDYuM1Y0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTQ2LjNMOTUuNiAxODEuNmMtMTEuOSAxMy0zMi4yIDEzLjktNDUuMiAycy0xMy45LTMyLjItMi00NS4ybDg4LTk2QzE0Mi41IDM1LjggMTUxIDMyIDE2MCAzMnpNNDQ1LjcgMzY0LjlBMzIgMzIgMCAxIDAgNDE4LjMgMzA3YTMyIDMyIDAgMSAwIDI3LjQgNTcuOXptLTQwLjcgNTQuOUMzNjkuNiA0MDguNCAzNDQgMzc1LjIgMzQ0IDMzNmMwLTQ4LjYgMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMjMuNS03LjUgNDYuMy0yMS41IDY1LjJMNDQ5LjcgNDY3Yy0xMC41IDE0LjItMzAuNiAxNy4yLTQ0LjggNi43cy0xNy4yLTMwLjYtNi43LTQ0LjhsNi44LTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcDkxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAzMmM5IDAgMTcuNSAzLjggMjMuNiAxMC40bDg4IDk2YzExLjkgMTMgMTEuMSAzMy4zLTIgNDUuMnMtMzMuMyAxMS4xLTQ1LjItMkwxOTIgMTQ2LjNWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE0Ni4zTDk1LjYgMTgxLjZjLTExLjkgMTMtMzIuMiAxMy45LTQ1LjIgMnMtMTMuOS0zMi4yLTItNDUuMmw4OC05NkMxNDIuNSAzNS44IDE1MSAzMiAxNjAgMzJ6TTQ1MC43IDI5NGM4LjMgNiAxMy4zIDE1LjcgMTMuMyAyNnY5NmgxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MzIgMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDE2VjM2NC40bC01LjkgMmMtMTYuOCA1LjYtMzQuOS0zLjUtNDAuNS0yMC4yczMuNS0zNC45IDIwLjItNDAuNWw0OC0xNmM5LjgtMy4zIDIwLjUtMS42IDI4LjggNC40em0tNS0xNDUuMUEzMiAzMiAwIDEgMCA0MTguMyA5MWEzMiAzMiAwIDEgMCAyNy40IDU3Ljl6bS00MC43IDU0LjlDMzY5LjYgMTkyLjQgMzQ0IDE1OS4yIDM0NCAxMjBjMC00OC42IDM5LjQtODggODgtODhzODggMzkuNCA4OCA4OGMwIDIzLjUtNy41IDQ2LjMtMjEuNSA2NS4yTDQ0OS43IDI1MWMtMTAuNSAxNC4yLTMwLjYgMTcuMi00NC44IDYuN3MtMTcuMi0zMC42LTYuNy00NC44bDYuOC05LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBBWiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0Mi40QzE3Ny41IDM1LjggMTY5IDMyIDE2MCAzMnMtMTcuNSAzLjgtMjMuNiAxMC40bC04OCA5NmMtMTEuOSAxMy0xMS4xIDMzLjMgMiA0NS4yczMzLjMgMTEuMSA0NS4yLTJMMTI4IDE0Ni4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0Ni4zbDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNTAuN2wtNzMuNCA3My40Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MjkuM2w3My40LTczLjRjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlzLTE2LjYtMTkuOC0yOS42LTE5LjhIMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNNDE2IDMyYy0xMi4xIDAtMjMuMiA2LjgtMjguNiAxNy43bC02NCAxMjgtMTYgMzJjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM2w3LjItMTQuM2g4OC40bDcuMiAxNC4zYzcuOSAxNS44IDI3LjEgMjIuMiA0Mi45IDE0LjNzMjIuMi0yNy4xIDE0LjMtNDIuOWwtMTYtMzItNjQtMTI4QzQzOS4yIDM4LjggNDI4LjEgMzIgNDE2IDMyek0zOTUuOCAxNzZMNDE2IDEzNS42IDQzNi4yIDE3NkgzOTUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcEZyb21CcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTEyOCAxMjhjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTkyIDEwOS4zIDE5MiAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTIxMC43IDczLjQgNzMuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4ek02NCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDUzIDQzIDk2IDk2IDk2bDI1NiAwYzUzIDAgOTYtNDMgOTYtOTZsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcEZyb21Hcm91bmRXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEwOS4zbDI1LjQgMjUuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC04MC04MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTgwIDgwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDI1NiAxMDkuM1YzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJ6bS0xOC41IDY5LjlDMjQ3IDQzNy40IDIxOS41IDQ0OCAxOTIgNDQ4Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWwwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgNTAxLjcgMTU5IDUxMiAxOTIgNTEyYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43bDAgMEM0MzkuNCA0MzcuMiA0MTAuOSA0NDggMzg0IDQ0OGMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwek0xOTIgMTkySDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OFY0MjVjNS4zLTMuMSAxMS4yLTUuNCAxNy41LTYuOWMxMy4xLTMuMSAyNi43LTkuOCAzNy4zLTE4LjZjMjIuMi0xOC43IDU0LjMtMjAuMSA3OC4xLTMuNGMxOCAxMi40IDQwLjEgMjAuMyA1OS4xIDIwLjNWMTkyem0zODQgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzg0VjQxNi41aDBjMTkgMCA0MS4yLTcuOSA1OS4yLTIwLjNjMjMuOC0xNi43IDU1LjgtMTUuMyA3OC4xIDMuNGMxMC42IDguOCAyNC4yIDE1LjYgMzcuMyAxOC42YzYuMyAxLjUgMTIuMSAzLjggMTcuNSA2LjlWMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwRnJvbVdhdGVyUHVtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMEM4NS41IDAgNjQgMjEuNSA2NCA0OFYyNTZINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djk2YzAgOCAyIDE1LjYgNS40IDIyLjJjMy44LTEuNyA3LjgtMy4xIDEyLTQuMWMxMy4xLTMuMSAyNi43LTkuOCAzNy4zLTE4LjZjMjIuMi0xOC43IDU0LjMtMjAuMSA3OC4xLTMuNGMxOCAxMi40IDQwLjEgMjAuMyA1OS4yIDIwLjNjMjEuMSAwIDQyLTguNSA1OS4yLTIwLjNjMjIuMS0xNS41IDUxLjYtMTUuNSA3My43IDBjMTguNCAxMi43IDM5LjYgMjAuMyA1OS4yIDIwLjNjMTkgMCA0MS4yLTcuOSA1OS4yLTIwLjNjMjMuOC0xNi43IDU1LjgtMTUuMyA3OC4xIDMuNGMxMC42IDguOCAyNC4yIDE1LjYgMzcuMyAxOC42YzQuMiAxIDguMiAyLjQgMTIgNC4xQzU3NCA0MTUuNiA1NzYgNDA4IDU3NiA0MDBWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4MGwwLTE0Ni43IDI1LjQgMjUuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC04MC04MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTgwIDgwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDQxNiAxMDkuMyA0MTYgMjU2SDI4OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgxMTJ6TTMwNi41IDQyMS45Yy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI0NyA0MzcuNCAyMTkuNSA0NDggMTkyIDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFsMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzEyNi41IDUwMS43IDE1OSA1MTIgMTkyIDUxMmMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC41IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS40LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDM5LjQgNDM3LjIgNDEwLjkgNDQ4IDM4NCA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE0LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxNjAgMTA5LjNWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTA5LjNsNzMuNCA3My40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBSaWdodERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNTAuN0w5LjQgMjY1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjU2IDEwOS4zVjE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MHpNNTc2IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQ0OCAyMDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNNDAwIDM4NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ4IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTEyOCAwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTI3MiAzODRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00OCA4MGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNDQgNTEyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNNTc2IDMzNmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0tNDgtODBhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwUmlnaHRGcm9tU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDgyLjdMMjAxLjQgMjY1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMNDQ4IDEwOS4zVjE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyMHpNODAgMzJDMzUuOCAzMiAwIDY3LjggMCAxMTJWNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwSDQwMGM0NC4yIDAgODAtMzUuOCA4MC04MFYzMjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZIMTkyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwU2hvcnRXaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MS42IDQyLjRDMTQ1LjUgMzUuOCAxMzcgMzIgMTI4IDMycy0xNy41IDMuOC0yMy42IDEwLjRsLTg4IDk2Yy0xMS45IDEzLTExLjEgMzMuMyAyIDQ1LjJzMzMuMyAxMS4xIDQ1LjItMkw5NiAxNDYuM1Y0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNDYuM2wzMi40IDM1LjRjMTEuOSAxMyAzMi4yIDEzLjkgNDUuMiAyczEzLjktMzIuMiAyLTQ1LjJsLTg4LTk2ek0zMjAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwem0wIDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBXaWRlU2hvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjYgNDIuNEMxNDUuNSAzNS44IDEzNyAzMiAxMjggMzJzLTE3LjUgMy44LTIzLjYgMTAuNGwtODggOTZjLTExLjkgMTMtMTEuMSAzMy4zIDIgNDUuMnMzMy4zIDExLjEgNDUuMi0yTDk2IDE0Ni4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0Ni4zbDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCA0ODBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyem0wLTEyOGg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bTAtMTI4SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bTAtMTI4SDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBaQSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0Mi40QzE3Ny41IDM1LjggMTY5IDMyIDE2MCAzMnMtMTcuNSAzLjgtMjMuNiAxMC40bC04OCA5NmMtMTEuOSAxMy0xMS4xIDMzLjMgMiA0NS4yczMzLjMgMTEuMSA0NS4yLTJMMTI4IDE0Ni4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0Ni4zbDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg1MC43bC03My40IDczLjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQyOS4zbDczLjQtNzMuNGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEgzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05NiAxOTJjLTEyLjEgMC0yMy4yIDYuOC0yOC42IDE3LjdsLTY0IDEyOC0xNiAzMmMtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zbDcuMi0xNC4zaDg4LjRsNy4yIDE0LjNjNy45IDE1LjggMjcuMSAyMi4yIDQyLjkgMTQuM3MyMi4yLTI3LjEgMTQuMy00Mi45bC0xNi0zMi02NC0xMjhDNDM5LjIgMjYyLjggNDI4LjEgMjU2IDQxNiAyNTZ6TTM5NS44IDQwMEw0MTYgMzU5LjYgNDM2LjIgNDAwSDM5NS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNC42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE2MCAxNDEuMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNDEuMkwzMjkuNCAyNDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NEb3duVG9MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCA0MTZMMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDUxMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyem0yMi42LTEzNy40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDQ4MCAyNzQuNyA0ODAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAyMTAuNy00MS40LTQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDk2LTk2em0tMzIwLTQ1LjNjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwTDE2MCAyNzQuNyAxNjAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAyMTAuN0w1NC42IDIzMy40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzRG93blRvUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYxNDIuMUw5NyAxMTljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsNjQtNjRjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMjMgMjNWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTM2MCAyMDBhNDAgNDAgMCAxIDAgLTgwIDAgNDAgNDAgMCAxIDAgODAgMHpNMTg0IDI5NmE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwem0zMTIgNDBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek0yMDAgNDQxLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzYuMy02Ny41YzEuNy0xLjcgMy4yLTMuNiA0LjMtNS44TDI2NCAzNDUuNVY0MDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzQ1LjVsMjYuOSA0OS45YzEuMiAyLjIgMi42IDQuMSA0LjMgNS44bC0zNi4zIDY3LjVjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDQ0MCA0NDEuNVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQxLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzcuOS03MC4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM0g0ODYuMmMtMTYuMyAwLTMxLjkgNC41LTQ1LjQgMTIuNmwtMzMuNi02Mi4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM0gzMTAuMmMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNsLTMzLjYgNjIuM2MtMTMuNS04LjEtMjkuMS0xMi42LTQ1LjQtMTIuNkgxMzQuMmMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNMMTguOSA0NjguNmMtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMODggNDQxLjVWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQ0MS41ek00MTUgMTUzbDY0IDY0YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDY0LTY0YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTIzIDIzVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjE0Mi4xbC0yMy0yM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzTGVmdFJpZ2h0VG9MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjk2QzAgNzguMyAxNC4zIDY0IDMyIDY0em0yMTQuNiA3My40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zTDIwNS4zIDIyNGwyMjkuNSAwLTQxLjQtNDEuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtOTYgOTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDQzNC43IDI4OGwtMjI5LjUgMCA0MS40IDQxLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTk2LTk2Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHpNNjQwIDk2VjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NMZWZ0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA2LjYgMzc0LjZsOTYtOTZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w0MDIuNyAyMjRsLTI5My41IDAgNDEuNC00MS40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyODhsMjkzLjUgMC00MS40IDQxLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1JvdGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuMSAyMDIuNmM3LjctMjEuOCAyMC4yLTQyLjMgMzcuOC01OS44YzYyLjUtNjIuNSAxNjMuOC02Mi41IDIyNi4zIDBMMzg2LjMgMTYwSDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0NjMuNWMwIDAgMCAwIDAgMGguNGMxNy43IDAgMzItMTQuMyAzMi0zMlY4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnYzNS4yTDQxNC40IDk3LjZjLTg3LjUtODcuNS0yMjkuMy04Ny41LTMxNi44IDBDNzMuMiAxMjIgNTUuNiAxNTAuNyA0NC44IDE4MS40Yy01LjkgMTYuNyAyLjkgMzQuOSAxOS41IDQwLjhzMzQuOS0yLjkgNDAuOC0xOS41ek0zOSAyODkuM2MtNSAxLjUtOS44IDQuMi0xMy43IDguMmMtNCA0LTYuNyA4LjgtOC4xIDE0Yy0uMyAxLjItLjYgMi41LS44IDMuOGMtLjMgMS43LS40IDMuNC0uNCA1LjFWNDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzk2LjlsMTcuNiAxNy41IDAgMGM4Ny41IDg3LjQgMjI5LjMgODcuNCAzMTYuNyAwYzI0LjQtMjQuNCA0Mi4xLTUzLjEgNTIuOS04My43YzUuOS0xNi43LTIuOS0zNC45LTE5LjUtNDAuOHMtMzQuOSAyLjktNDAuOCAxOS41Yy03LjcgMjEuOC0yMC4yIDQyLjMtMzcuOCA1OS44Yy02Mi41IDYyLjUtMTYzLjggNjIuNS0yMjYuMyAwbC0uMS0uMUwxMjUuNiAzNTJIMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ4LjRjLTEuNiAwLTMuMiAuMS00LjggLjNzLTMuMSAuNS00LjYgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzU3BpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOTZjMzguNCAwIDczLjcgMTMuNSAxMDEuMyAzNi4xbC0zMi42IDMyLjZjLTQuNiA0LjYtNS45IDExLjUtMy41IDE3LjRzOC4zIDkuOSAxNC44IDkuOUg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtNi41LTMuOS0xMi4zLTkuOS0xNC44cy0xMi45LTEuMS0xNy40IDMuNWwtMzQgMzRDMzYzLjQgNTIuNiAzMTIuMSAzMiAyNTYgMzJjLTEwLjkgMC0yMS41IC44LTMyIDIuM1Y5OS4yYzEwLjMtMi4xIDIxLTMuMiAzMi0zLjJ6TTEzMi4xIDE1NC43bDMyLjYgMzIuNmM0LjYgNC42IDExLjUgNS45IDE3LjQgMy41czkuOS04LjMgOS45LTE0LjhWNjRjMC04LjgtNy4yLTE2LTE2LTE2SDY0Yy02LjUgMC0xMi4zIDMuOS0xNC44IDkuOXMtMS4xIDEyLjkgMy41IDE3LjRsMzQgMzRDNTIuNiAxNDguNiAzMiAxOTkuOSAzMiAyNTZjMCAxMC45IC44IDIxLjUgMi4zIDMySDk5LjJjLTIuMS0xMC4zLTMuMi0yMS0zLjItMzJjMC0zOC40IDEzLjUtNzMuNyAzNi4xLTEwMS4zek00NzcuNyAyMjRINDEyLjhjMi4xIDEwLjMgMy4yIDIxIDMuMiAzMmMwIDM4LjQtMTMuNSA3My43LTM2LjEgMTAxLjNsLTMyLjYtMzIuNmMtNC42LTQuNi0xMS41LTUuOS0xNy40LTMuNXMtOS45IDguMy05LjkgMTQuOFY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDQ0OGM2LjUgMCAxMi4zLTMuOSAxNC44LTkuOXMxLjEtMTIuOS0zLjUtMTcuNGwtMzQtMzRDNDU5LjQgMzYzLjQgNDgwIDMxMi4xIDQ4MCAyNTZjMC0xMC45LS44LTIxLjUtMi4zLTMyek0yNTYgNDE2Yy0zOC40IDAtNzMuNy0xMy41LTEwMS4zLTM2LjFsMzIuNi0zMi42YzQuNi00LjYgNS45LTExLjUgMy41LTE3LjRzLTguMy05LjktMTQuOC05LjlINjRjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDExMmMwIDYuNSAzLjkgMTIuMyA5LjkgMTQuOHMxMi45IDEuMSAxNy40LTMuNWwzNC0zNEMxNDguNiA0NTkuNCAxOTkuOSA0ODAgMjU2IDQ4MGMxMC45IDAgMjEuNS0uOCAzMi0yLjNWNDEyLjhjLTEwLjMgMi4xLTIxIDMuMi0zMiAzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1NwbGl0VXBBbmRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni42IDE1MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzNTIgMTA5LjNWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQxNmMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTA5LjNsNDEuNCA0MS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwbC05Ni05NmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsOTYtOTZjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM0wxMDkuMyAyNTZIMjI0YzIzLjMgMCA0NS4yIDYuMiA2NCAxNy4xVjEwOS4zbC00MS40IDQxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1RvQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNCA5LjRDMjEuOS0zLjEgNDIuMS0zLjEgNTQuNiA5LjRMMTYwIDExNC43Vjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2OTZjMCA0LjMtLjkgOC41LTIuNCAxMi4yYy0xLjYgMy43LTMuOCA3LjMtNi45IDEwLjNsLS4xIC4xYy0zLjEgMy02LjYgNS4zLTEwLjMgNi45Yy0zLjggMS42LTcuOSAyLjQtMTIuMiAyLjRIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMTguN0w5LjQgNTQuNkMtMy4xIDQyLjEtMy4xIDIxLjkgOS40IDkuNHpNMjU2IDI1NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTExNC43IDM1Mkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg5NiAwbC4xIDBjOC44IDAgMTYuNyAzLjYgMjIuNSA5LjNsLjEgLjFjMyAzLjEgNS4zIDYuNiA2LjkgMTAuM2MxLjYgMy44IDIuNCA3LjkgMi40IDEyLjJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzk3LjNMNTQuNiA1MDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMTE0LjcgMzUyek00MTYgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnYxOC43TDU4NS40IDkuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zTDUyNS4zIDE2MEg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDQ4Yy04LjggMC0xNi44LTMuNi0yMi42LTkuM2wtLjEtLjFjLTMtMy4xLTUuMy02LjYtNi45LTEwLjNzLTIuNC03LjgtMi40LTEyLjJsMC0uMXYwVjk2ek01MjUuMyAzNTJMNjMwLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMNDgwIDM5Ny4zVjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMjB2MGMwIDAgMC0uMSAwLS4xYzAtNC4zIC45LTguNCAyLjQtMTIuMmMxLjYtMy44IDMuOS03LjMgNi45LTEwLjRjNS44LTUuOCAxMy43LTkuMyAyMi41LTkuNGMwIDAgLjEgMCAuMSAwaDAgOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTI1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1RvRG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0aDMyYzEyLjkgMCAyNC42IDcuOCAyOS42IDE5LjhzMi4yIDI1LjctNi45IDM0LjlsLTY0IDY0Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtNjQtNjRjLTkuMi05LjItMTEuOS0yMi45LTYuOS0zNC45czE2LjYtMTkuOCAyOS42LTE5LjhoMzJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTE2OS40IDM5My40bDY0LTY0YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0YzkuMiA5LjIgMTEuOSAyMi45IDYuOSAzNC45cy0xNi42IDE5LjgtMjkuNiAxOS44SDI4OHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMTkyYy0xMi45IDAtMjQuNi03LjgtMjkuNi0xOS44cy0yLjItMjUuNyA2LjktMzQuOXpNMzIgMjI0SDY0VjE5MmMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDY0IDY0YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC02NCA2NGMtOS4yIDkuMi0yMi45IDExLjktMzQuOSA2LjlzLTE5LjgtMTYuNi0xOS44LTI5LjZWMjg4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0yOTcuNCA1NC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w2NC02NGM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOXMxOS44IDE2LjYgMTkuOCAyOS42djMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ0OHYzMmMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtNjQtNjR6TTI1NiAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NUb0V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNUMyNC40IDUuNyAzOS42IDUuNyA0OSAxNWw2MyA2M1Y0MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djk2YzAgMTMuMy0xMC43IDI0LTI0IDI0SDQwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDc4LjFMMTUgNDlDNS43IDM5LjYgNS43IDI0LjQgMTUgMTV6TTEzMy41IDI0My45QzE1OC42IDE5My42IDIyMi43IDExMiAzMjAgMTEyczE2MS40IDgxLjYgMTg2LjUgMTMxLjljMy44IDcuNiAzLjggMTYuNSAwIDI0LjJDNDgxLjQgMzE4LjQgNDE3LjMgNDAwIDMyMCA0MDBzLTE2MS40LTgxLjYtMTg2LjUtMTMxLjljLTMuOC03LjYtMy44LTE2LjUgMC0yNC4yek0zMjAgMzIwYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek01OTEgMTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC02MyA2M0g2MDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY0MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0Vjc4LjFsNjMtNjN6TTE1IDQ5N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNjMtNjNINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjR2OTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWNDMzLjlMNDkgNDk3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHptNTc2IDBsLTYzLTYzVjQ3MmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTYxLjlsNjMgNjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5Ny40IDkuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtOTYgOTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDMzOC43IDE2MEgxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNEMwIDE1My4zIDU3LjMgOTYgMTI4IDk2SDMzOC43TDI5Ny40IDU0LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zem0tOTYgMjU2YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDk2IDk2YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC05NiA5NmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMjQyLjcgNDE2SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhjMC01MyA0My05NiA5Ni05NkgyNDIuN2wtNDEuNC00MS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzVHVyblRvRG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDkuNCAyNS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMMjY5LjMgOTYgNDE2IDk2YzUzIDAgOTYgNDMgOTYgOTZ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xNDYuNyAwIDI1LjQgMjUuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMGwtODAtODBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDgwLTgwem0xMy4zIDI1Nmw4MCA4MGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtODAgODBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0Mi43IDQxNiA5NiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OGMwLTUzIDQzLTk2IDk2LTk2bDE0Ni43IDAtMjUuNC0yNS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwek0zODQgMzg0YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNjQgMTkyQTY0IDY0IDAgMSAxIDY0IDY0YTY0IDY0IDAgMSAxIDAgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NVcERvd25MZWZ0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc4LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsOS40LTkuNFYyMjRIMTA5LjNsOS40LTkuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTkuNC05LjRIMjI0VjQwMi43bC05LjQtOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtOS40IDkuNFYyODhINDAyLjdsLTkuNCA5LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5LjQgOS40SDI4OFYxMDkuM2w5LjQgOS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NVcERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgyLjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTI4IDEwOS4zVjQwMi43TDg2LjYgMzYxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDk2LTk2YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5MiA0MDIuN1YxMDkuM2w0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1VwVG9MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDk2bDUxMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5NnpNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDk2IDIzNy4zIDk2IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjEwLjcgNDEuNCA0MS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZ6bTMyMCA0NS4zYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwTDQxNiAyMzcuMyA0MTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMTAuNyA0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFzdGVyaXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYxOTkuNWwxMTEuNS02Ni45YzE1LjItOS4xIDM0LjgtNC4yIDQzLjkgMTFzNC4yIDM0LjgtMTEgNDMuOUwyNTQuMiAyNTZsMTE0LjMgNjguNmMxNS4yIDkuMSAyMC4xIDI4LjcgMTEgNDMuOXMtMjguNyAyMC4xLTQzLjkgMTFMMjI0IDMxMi41VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMTIuNUw0OC41IDM3OS40Yy0xNS4yIDkuMS0zNC44IDQuMi00My45LTExcy00LjItMzQuOCAxMS00My45TDEyOS44IDI1NiAxNS41IDE4Ny40Yy0xNS4yLTkuMS0yMC4xLTI4LjctMTEtNDMuOXMyOC43LTIwLjEgNDMuOS0xMUwxNjAgMTk5LjVWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA2NEMxNTAgNjQgNjQgMTUwIDY0IDI1NnM4NiAxOTIgMTkyIDE5MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkMxMTQuNiA1MTIgMCAzOTcuNCAwIDI1NlMxMTQuNiAwIDI1NiAwUzUxMiAxMTQuNiA1MTIgMjU2djMyYzAgNTMtNDMgOTYtOTYgOTZjLTI5LjMgMC01NS42LTEzLjItNzMuMi0zMy45QzMyMCAzNzEuMSAyODkuNSAzODQgMjU2IDM4NGMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjhzNTcuMy0xMjggMTI4LTEyOGMyNy45IDAgNTMuNyA4LjkgNzQuNyAyNC4xYzUuNy01IDEzLjEtOC4xIDIxLjMtOC4xYzE3LjcgMCAzMiAxNC4zIDMyIDMydjgwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjU2YzAtMTA2LTg2LTE5Mi0xOTItMTkyem02NCAxOTJhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdG9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzOTguOGMtMTEuOCA1LjEtMjMuNCA5LjctMzQuOSAxMy41YzE2LjcgMzMuOCAzMSAzNS43IDM0LjkgMzUuN3MxOC4xLTEuOSAzNC45LTM1LjdjLTExLjQtMy45LTIzLjEtOC40LTM0LjktMTMuNXpNNDQ2IDI1NmMzMyA0NS4yIDQ0LjMgOTAuOSAyMy42IDEyOGMtMjAuMiAzNi4zLTYyLjUgNDkuMy0xMTUuMiA0My4yYy0yMiA1Mi4xLTU1LjYgODQuOC05OC40IDg0LjhzLTc2LjQtMzIuNy05OC40LTg0LjhjLTUyLjcgNi4xLTk1LTYuOC0xMTUuMi00My4yQzIxLjcgMzQ2LjkgMzMgMzAxLjIgNjYgMjU2Yy0zMy00NS4yLTQ0LjMtOTAuOS0yMy42LTEyOGMyMC4yLTM2LjMgNjIuNS00OS4zIDExNS4yLTQzLjJDMTc5LjYgMzIuNyAyMTMuMiAwIDI1NiAwczc2LjQgMzIuNyA5OC40IDg0LjhjNTIuNy02LjEgOTUgNi44IDExNS4yIDQzLjJjMjAuNyAzNy4xIDkuNCA4Mi44LTIzLjYgMTI4em0tNjUuOCA2Ny40Yy0xLjcgMTQuMi0zLjkgMjgtNi43IDQxLjJjMzEuOCAxLjQgMzguNi04LjcgNDAuMi0xMS43YzIuMy00LjIgNy0xNy45LTExLjktNDguMWMtNi44IDYuMy0xNCAxMi41LTIxLjYgMTguNnptLTYuNy0xNzUuOWMyLjggMTMuMSA1IDI2LjkgNi43IDQxLjJjNy42IDYuMSAxNC44IDEyLjMgMjEuNiAxOC42YzE4LjktMzAuMiAxNC4yLTQ0IDExLjktNDguMWMtMS42LTIuOS04LjQtMTMtNDAuMi0xMS43ek0yOTAuOSA5OS43QzI3NC4xIDY1LjkgMjU5LjkgNjQgMjU2IDY0cy0xOC4xIDEuOS0zNC45IDM1LjdjMTEuNCAzLjkgMjMuMSA4LjQgMzQuOSAxMy41YzExLjgtNS4xIDIzLjQtOS43IDM0LjktMTMuNXptLTE1OSA4OC45YzEuNy0xNC4zIDMuOS0yOCA2LjctNDEuMmMtMzEuOC0xLjQtMzguNiA4LjctNDAuMiAxMS43Yy0yLjMgNC4yLTcgMTcuOSAxMS45IDQ4LjFjNi44LTYuMyAxNC0xMi41IDIxLjYtMTguNnpNMTEwLjIgMzA0LjhDOTEuNCAzMzUgOTYgMzQ4LjcgOTguMyAzNTIuOWMxLjYgMi45IDguNCAxMyA0MC4yIDExLjdjLTIuOC0xMy4xLTUtMjYuOS02LjctNDEuMmMtNy42LTYuMS0xNC44LTEyLjMtMjEuNi0xOC42ek0zMzYgMjU2YTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHptLTgwLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXVkaW9EZXNjcmlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIxMy41IDE3My4zbDcyIDE0NGM1LjkgMTEuOSAxLjEgMjYuMy0xMC43IDMyLjJzLTI2LjMgMS4xLTMyLjItMTAuN2wtOS40LTE4LjlIMTUwLjlsLTkuNCAxOC45Yy01LjkgMTEuOS0yMC4zIDE2LjctMzIuMiAxMC43cy0xNi43LTIwLjMtMTAuNy0zMi4ybDcyLTE0NGM0LjEtOC4xIDEyLjQtMTMuMyAyMS41LTEzLjNzMTcuNCA1LjEgMjEuNSAxMy4zem0tLjQgMTA2LjZMMTkyIDIzNy43bC0yMS4xIDQyLjJoNDIuMnpNMzA0IDE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg1NmM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NkgzMjhjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE4NHptNDggMjR2OTZoMzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhIMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdXN0cmFsU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTMuNSA1MS43QzI0OC42IDM5LjggMjM2LjkgMzIgMjI0IDMycy0yNC42IDcuOC0yOS41IDE5LjdMMTIyLjcgMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDk2TDgyLjcgMzIwSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU2TDM0LjUgNDM1LjdjLTYuOCAxNi4zIC45IDM1IDE3LjIgNDEuOHMzNS0uOSA0MS44LTE3LjJMMTI1LjMgMzg0SDMyMi43bDMxLjggNzYuM2M2LjggMTYuMyAyNS41IDI0IDQxLjggMTcuMnMyNC0yNS41IDE3LjItNDEuOEwzOTIgMzg0aDI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM2NS4zTDM1MiAyODhoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzI1LjNMMjUzLjUgNTEuN3pNMjU2IDIyNEgxOTJsMzItNzYuOEwyNTYgMjI0em0tOTAuNyA2NEgyODIuN0wyOTYgMzIwSDE1MmwxMy4zLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzMuOCA1LjVjMTEtNy4zIDI1LjQtNy4zIDM2LjQgMEwyMjggMTcuMmM2IDMuOSAxMyA1LjggMjAuMSA1LjRsMjEuMy0xLjNjMTMuMi0uOCAyNS42IDYuNCAzMS41IDE4LjJsOS42IDE5LjFjMy4yIDYuNCA4LjQgMTEuNSAxNC43IDE0LjdMMzQ0LjUgODNjMTEuOCA1LjkgMTkgMTguMyAxOC4yIDMxLjVsLTEuMyAyMS4zYy0uNCA3LjEgMS41IDE0LjIgNS40IDIwLjFsMTEuOCAxNy44YzcuMyAxMSA3LjMgMjUuNCAwIDM2LjRMMzY2LjggMjI4Yy0zLjkgNi01LjggMTMtNS40IDIwLjFsMS4zIDIxLjNjLjggMTMuMi02LjQgMjUuNi0xOC4yIDMxLjVsLTE5LjEgOS42Yy02LjQgMy4yLTExLjUgOC40LTE0LjcgMTQuN0wzMDEgMzQ0LjVjLTUuOSAxMS44LTE4LjMgMTktMzEuNSAxOC4ybC0yMS4zLTEuM2MtNy4xLS40LTE0LjIgMS41LTIwLjEgNS40bC0xNy44IDExLjhjLTExIDcuMy0yNS40IDcuMy0zNi40IDBMMTU2IDM2Ni44Yy02LTMuOS0xMy01LjgtMjAuMS01LjRsLTIxLjMgMS4zYy0xMy4yIC44LTI1LjYtNi40LTMxLjUtMTguMmwtOS42LTE5LjFjLTMuMi02LjQtOC40LTExLjUtMTQuNy0xNC43TDM5LjUgMzAxYy0xMS44LTUuOS0xOS0xOC4zLTE4LjItMzEuNWwxLjMtMjEuM2MuNC03LjEtMS41LTE0LjItNS40LTIwLjFMNS41IDIxMC4yYy03LjMtMTEtNy4zLTI1LjQgMC0zNi40TDE3LjIgMTU2YzMuOS02IDUuOC0xMyA1LjQtMjAuMWwtMS4zLTIxLjNjLS44LTEzLjIgNi40LTI1LjYgMTguMi0zMS41bDE5LjEtOS42QzY1IDcwLjIgNzAuMiA2NSA3My40IDU4LjZMODMgMzkuNWM1LjktMTEuOCAxOC4zLTE5IDMxLjUtMTguMmwyMS4zIDEuM2M3LjEgLjQgMTQuMi0xLjUgMjAuMS01LjRMMTczLjggNS41ek0yNzIgMTkyYTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHpNMS4zIDQ0MS44TDQ0LjQgMzM5LjNjLjIgLjEgLjMgLjIgLjQgLjRsOS42IDE5LjFjMTEuNyAyMy4yIDM2IDM3LjMgNjIgMzUuOGwyMS4zLTEuM2MuMiAwIC41IDAgLjcgLjJsMTcuOCAxMS44YzUuMSAzLjMgMTAuNSA1LjkgMTYuMSA3LjdsLTM3LjYgODkuM2MtMi4zIDUuNS03LjQgOS4yLTEzLjMgOS43cy0xMS42LTIuMi0xNC44LTcuMkw3NC40IDQ1NS41bC01Ni4xIDguM2MtNS43IC44LTExLjQtMS41LTE1LTZzLTQuMy0xMC43LTIuMS0xNnptMjQ4IDYwLjRMMjExLjcgNDEzYzUuNi0xLjggMTEtNC4zIDE2LjEtNy43bDE3LjgtMTEuOGMuMi0uMSAuNC0uMiAuNy0uMmwyMS4zIDEuM2MyNiAxLjUgNTAuMy0xMi42IDYyLTM1LjhsOS42LTE5LjFjLjEtLjIgLjItLjMgLjQtLjRsNDMuMiAxMDIuNWMyLjIgNS4zIDEuNCAxMS40LTIuMSAxNnMtOS4zIDYuOS0xNSA2bC01Ni4xLTguMy0zMi4yIDQ5LjJjLTMuMiA1LTguOSA3LjctMTQuOCA3LjJzLTExLTQuMy0xMy4zLTkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjI1NiA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMTkyYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4YzAtNDYuNS0yNC44LTg3LjMtNjItMTA5LjdjMTguNy0yMi4zIDMwLTUxIDMwLTgyLjNjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhINjR6bTk2IDE5Mkg2NFY5Nmg5NmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NHpNNjQgMjg4aDk2IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0SDY0VjI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFieUNhcnJpYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxOTJILjFDMi43IDExNy45IDQxLjMgNTIuOSA5OSAxNC4xYzEzLjMtOC45IDMwLjgtNC4zIDM5LjkgOC44TDI1NiAxOTJ6bTEyOC0zMmMwLTM1LjMgMjguNy02NCA2NC02NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMHY2NGMwIDI1LjItNS44IDUwLjItMTcgNzMuNXMtMjcuOCA0NC41LTQ4LjYgNjIuM3MtNDUuNSAzMi03Mi43IDQxLjZTMjUzLjQgNDE2IDIyNCA0MTZzLTU4LjUtNS04NS43LTE0LjZzLTUxLjktMjMuOC03Mi43LTQxLjZzLTM3LjMtMzktNDguNi02Mi4zUzAgMjQ5LjIgMCAyMjRsMjI0IDAgMTYwIDBWMTYwek04MCA0MTZhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em0yNDAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIgODhhNzIgNzIgMCAxIDEgMTQ0IDBBNzIgNzIgMCAxIDEgMTUyIDg4ek0zOS43IDE0NC41YzEzLTE3LjkgMzgtMjEuOCA1NS45LTguOEwxMzEuOCAxNjJjMjYuOCAxOS41IDU5LjEgMzAgOTIuMiAzMHM2NS40LTEwLjUgOTIuMi0zMGwzNi4yLTI2LjRjMTcuOS0xMyA0Mi45LTkgNTUuOSA4LjhzOSA0Mi45LTguOCA1NS45bC0zNi4yIDI2LjRjLTEzLjYgOS45LTI4LjEgMTguMi00My4zIDI1VjI4OEgxMjhWMjUxLjdjLTE1LjItNi43LTI5LjctMTUuMS00My4zLTI1TDQ4LjUgMjAwLjNjLTE3LjktMTMtMjEuOC0zOC04LjgtNTUuOXptODkuOCAxODQuOGw2MC42IDUzLTI2IDM3LjIgMjQuMyAyNC4zYzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42cy00MC45IDE1LjYtNTYuNiAwbC00OC00OEM3MCA0MzguNiA2OC4xIDQxNyA3OS4yIDQwMS4xbDUwLjItNzEuOHptMTI4LjUgNTNsNjAuNi01MyA1MC4yIDcxLjhjMTEuMSAxNS45IDkuMiAzNy41LTQuNSA1MS4ybC00OCA0OGMtMTUuNiAxNS42LTQwLjkgMTUuNi01Ni42IDBzLTE1LjYtNDAuOSAwLTU2LjZMMjg0IDQxOS40bC0yNi0zNy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrd2FyZEZhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDkzLjYgNDQ1Yy0xMS4yIDUuMy0yNC41IDMuNi0zNC4xLTQuNEwyODggMjk3LjdWNDE2YzAgMTIuNC03LjIgMjMuNy0xOC40IDI5cy0yNC41IDMuNi0zNC4xLTQuNEw2NCAyOTcuN1Y0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRzMzIgMTQuMyAzMiAzMlYyMTQuM0wyMzUuNSA3MS40YzkuNS03LjkgMjIuOC05LjcgMzQuMS00LjRTMjg4IDgzLjYgMjg4IDk2VjIxNC4zTDQ1OS41IDcxLjRjOS41LTcuOSAyMi44LTkuNyAzNC4xLTQuNFM1MTIgODMuNiA1MTIgOTZWNDE2YzAgMTIuNC03LjIgMjMuNy0xOC40IDI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrd2FyZFN0ZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY3LjUgNDQwLjZjOS41IDcuOSAyMi44IDkuNyAzNC4xIDQuNHMxOC40LTE2LjYgMTguNC0yOVY5NmMwLTEyLjQtNy4yLTIzLjctMTguNC0yOXMtMjQuNS0zLjYtMzQuMSA0LjRsLTE5MiAxNjBMNjQgMjQxVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNzguMyAwIDk2VjQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI3MWwxMS41IDkuNiAxOTIgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTkuNSA0NDAuNmM5LjUgNy45IDIyLjggOS43IDM0LjEgNC40czE4LjQtMTYuNiAxOC40LTI5Vjk2YzAtMTIuNC03LjItMjMuNy0xOC40LTI5cy0yNC41LTMuNi0zNC4xIDQuNEwyODggMjE0LjNWMjU2djQxLjdMNDU5LjUgNDQwLjZ6TTI1NiAzNTJWMjU2IDEyOCA5NmMwLTEyLjQtNy4yLTIzLjctMTguNC0yOXMtMjQuNS0zLjYtMzQuMSA0LjRsLTE5MiAxNjBDNC4yIDIzNy41IDAgMjQ2LjUgMCAyNTZzNC4yIDE4LjUgMTEuNSAyNC42bDE5MiAxNjBjOS41IDcuOSAyMi44IDkuNyAzNC4xIDQuNHMxOC40LTE2LjYgMTguNC0yOVYzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS4yIDEuMmMxMS4yLTMuMiAyMy4yLS4xIDMxLjQgOC4xTDUxOCA1Ni43bC0yNi41IDcuOWMtNTggMTYuNi05OC4xIDM5LjYtMTI5LjYgNjcuNGMtMzEuMiAyNy41LTUzLjIgNTkuMS03NS4xIDkwLjlsLTIuMyAzLjNDMjQxLjYgMjg4LjcgMTk1IDM1Ni42IDcyLjggNDE3LjdMMzcuOSA0MzUuMiA5LjQgNDA2LjZjLTcuMy03LjMtMTAuNi0xNy42LTktMjcuOHM4LjEtMTguOSAxNy4zLTIzLjVDMTM2LjEgMjk2LjIgMTgwLjkgMjMxIDIyMy4zIDE2OS4zbDIuMy0zLjRjMjEuOC0zMS44IDQ0LjktNjQuOSA3Ny43LTkzLjljMzMuNC0yOS41IDc1LjgtNTMuNiAxMzUuOS03MC44ek02MS44IDQ1OWwyNS40LTEyLjdjMTI5LjUtNjQuNyAxNzkuOS0xMzguMSAyMjMuOC0yMDJsMi4yLTMuM2MyMi4xLTMyLjEgNDIuMS02MC41IDY5LjktODUuMWMyNy41LTI0LjMgNjMuNC00NS4yIDExNy4zLTYwLjZsMCAwIC4yLS4xIDQzLjEtMTIuOSAyMyAyM2M4IDggMTEuMiAxOS43IDguMyAzMC43cy0xMS4zIDE5LjYtMjIuMiAyMi43Yy01MS45IDE0LjgtODUuNiAzNC43LTExMS4xIDU3LjJjLTI2LjEgMjMtNDUuMSA0OS45LTY3LjMgODIuMWwtMi4yIDMuMkMzMjcuOCAzNjUuOSAyNzUuNSA0NDIgMTQyLjMgNTA4LjZjLTEyLjMgNi4yLTI3LjIgMy43LTM2LjktNkw2MS44IDQ1OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjdGVyaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LjkgLjdjLTkuNi0yLjctMTkuNSAyLjgtMjIuMyAxMi40bC00LjMgMTUuMmMtOC4zLS42LTE2LjggMC0yNS4yIDEuOWMtNy4zIDEuNy0xNC4zIDMuNS0yMS4xIDUuNWwtNS41LTEyLjdjLTMuOS05LjEtMTQuNS0xMy40LTIzLjYtOS41cy0xMy40IDE0LjUtOS41IDIzLjZsNC40IDEwLjRjLTE2LjYgNi43LTMxLjcgMTQuNC00NS40IDIyLjhMMTQ3IDYyYy01LjUtOC4zLTE2LjctMTAuNS0yNS01cy0xMC41IDE2LjctNSAyNWw2IDljLTEzLjcgMTEtMjUuNSAyMi44LTM1LjggMzQuOWwtMTAtOGMtNy44LTYuMi0xOS4xLTUtMjUuMyAyLjhzLTUgMTkuMSAyLjggMjUuM0w2NS45IDE1NWMtMS44IDIuOC0zLjUgNS43LTUuMSA4LjVjLTYuNiAxMS40LTExLjggMjIuNi0xNiAzM2wtOC0zLjJjLTkuMi0zLjctMTkuNyAuOC0yMy40IDEwcy44IDE5LjcgMTAgMjMuNGwxMC40IDQuMmMtLjIgLjgtLjQgMS41LS41IDIuM2MtMi4yIDkuMy0zLjQgMTcuMy00LjEgMjMuNGMtLjQgMy4xLS42IDUuNy0uOCA3LjhjLS4xIDEuMS0uMSAyLS4yIDIuOGwtLjEgMS4xIDAgLjUgMCAuMiAwIC4xYzAgMCAwIC4xIDI5LjEgMWwtLjEgMEwyOCAyNjkuM2MtLjEgMy4xIDAgNi4xIC4yIDkuMWwtMTUuMiA0LjNDMy41IDI4NS40LTIgMjk1LjQgLjcgMzA0LjlzMTIuNyAxNS4xIDIyLjMgMTIuNGwxNS42LTQuNWM3LjYgMTMuNiAxOC45IDI1IDMyLjYgMzIuNkw2Ni43IDM2MWMtMi43IDkuNiAyLjggMTkuNSAxMi40IDIyLjNzMTkuNS0yLjggMjIuMy0xMi40bDQuMy0xNS4yYzEuMiAuMSAyLjQgLjIgMy42IC4yYzE1LjYgLjUgMzAuMy0zLjMgNDMtMTAuMmw5IDljNyA3IDE4LjQgNyAyNS41IDBzNy0xOC40IDAtMjUuNWwtNy4yLTcuMmM5LjMtMTIuNiAxNS4yLTI3LjggMTYuMy00NC41bDcuMSAzYzkuMSAzLjkgMTkuNy0uMyAyMy42LTkuNXMtLjMtMTkuNy05LjUtMjMuNmwtOC42LTMuN2M2LjQtOS45IDE3LjMtMjIuNCAzNi45LTMzLjNsMS4zIDQuNGMyLjcgOS42IDEyLjcgMTUuMSAyMi4zIDEyLjRzMTUuMS0xMi43IDEyLjQtMjIuM2wtMi4zLTguMWMzLjgtMS4xIDcuNy0yLjEgMTEuOS0zLjFjMTEuNi0yLjcgMjIuMS03LjcgMzEuMS0xNC40bDcuMiA3LjJjNyA3IDE4LjQgNyAyNS41IDBzNy0xOC40IDAtMjUuNWwtOS05YzcuNi0xMy45IDExLjMtMzAuMSAxMC4xLTQ2LjZsMTUuMi00LjNjOS42LTIuNyAxNS4xLTEyLjcgMTIuNC0yMi4zUzM3MC42IDY0IDM2MSA2Ni43bC0xNS42IDQuNWMtNy43LTEzLjktMTkuMS0yNS4xLTMyLjYtMzIuNmw0LjUtMTUuNmMyLjctOS42LTIuOC0xOS41LTEyLjQtMjIuM3pNMTEyIDI3MmwtNDgtMS41IDAgMGMxMS43IC40IDI3LjMgLjkgNDggMS42em0xNi04MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0LTQ4YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6TTMyMi43IDQ4OWMtMi43IDkuNiAyLjggMTkuNSAxMi40IDIyLjNzMTkuNS0yLjggMjIuMi0xMi40bDQuMy0xNS4yYzguMyAuNiAxNi44IDAgMjUuMi0xLjljNy4zLTEuNyAxNC4zLTMuNSAyMS4xLTUuNWw1LjUgMTIuN2MzLjkgOS4xIDE0LjUgMTMuNCAyMy42IDkuNXMxMy40LTE0LjUgOS41LTIzLjZsLTQuNC0xMC40YzE2LjYtNi43IDMxLjctMTQuNCA0NS40LTIyLjhMNDkzIDQ1MGM1LjUgOC4zIDE2LjcgMTAuNSAyNSA1czEwLjUtMTYuNyA1LTI1bC02LTljMTMuNy0xMSAyNS41LTIyLjggMzUuOC0zNC45bDEwIDhjNy44IDYuMiAxOS4xIDUgMjUuMy0yLjhzNS0xOS4xLTIuOC0yNS4zTDU3NC4xIDM1N2MxLjgtMi44IDMuNS01LjcgNS4xLTguNWM2LjYtMTEuNCAxMS44LTIyLjYgMTYtMzNsOCAzLjJjOS4yIDMuNyAxOS43LS44IDIzLjQtMTBzLS44LTE5LjctMTAtMjMuNGwtMTAuNC00LjJjLjItLjggLjQtMS41IC41LTIuM2MyLjItOS4zIDMuNC0xNy4zIDQuMS0yMy40Yy40LTMuMSAuNi01LjcgLjgtNy44Yy4xLTEuMSAuMS0yIC4yLTIuOGwuMS0xLjEgMC0uNSAwLS4yIDAtLjFjMCAwIDAtLjEtMjkuMS0xbC4xIDAgMjkuMSAuOWMuMS0zLjEgMC02LjEtLjItOS4xbDE1LjItNC4zYzkuNi0yLjcgMTUuMS0xMi43IDEyLjQtMjIuM3MtMTIuNy0xNS4xLTIyLjMtMTIuNGwtMTUuNiA0LjVjLTcuNi0xMy42LTE4LjktMjUtMzIuNi0zMi42bDQuNS0xNS42YzIuNy05LjYtMi44LTE5LjUtMTIuNC0yMi4zcy0xOS41IDIuOC0yMi4zIDEyLjRsLTQuMyAxNS4yYy0xLjItLjEtMi40LS4yLTMuNi0uMmMtMTUuNi0uNS0zMC4zIDMuMy00MyAxMC4ybC05LTljLTctNy0xOC40LTctMjUuNSAwcy03IDE4LjQgMCAyNS41bDcuMiA3LjJjLTkuMyAxMi42LTE1LjIgMjcuOC0xNi4zIDQ0LjVsLTcuMS0zYy05LjEtMy45LTE5LjcgLjMtMjMuNiA5LjVzLjMgMTkuNyA5LjUgMjMuNmw4LjYgMy43Yy02LjQgOS45LTE3LjMgMjIuNC0zNi45IDMzLjNsLTEuMy00LjRjLTIuNy05LjYtMTIuNy0xNS4xLTIyLjMtMTIuNHMtMTUuMSAxMi43LTEyLjQgMjIuM2wyLjMgOC4xYy0zLjggMS4xLTcuNyAyLjEtMTEuOSAzLjFjLTExLjYgMi43LTIyLjEgNy43LTMxLjEgMTQuNGwtNy4yLTcuMmMtNy03LTE4LjQtNy0yNS41IDBzLTcgMTguNCAwIDI1LjVsOSA5Yy03LjYgMTMuOS0xMS4zIDMwLjEtMTAuMSA0Ni42bC0xNS4yIDQuM2MtOS42IDIuNy0xNS4xIDEyLjctMTIuNCAyMi4yczEyLjcgMTUuMSAyMi4zIDEyLjRsMTUuNi00LjVjNy43IDEzLjkgMTkuMSAyNS4xIDMyLjYgMzIuNkwzMjIuNyA0ODl6TTU3NiAyNDEuNWwwIDBjLTExLjctLjQtMjcuMy0uOS00OC0xLjZsNDggMS41ek00NDggMzg0YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY3Rlcml1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjMuMSAzMC42YzMuNi0xMi43LTMuNy0yNi0xNi41LTI5LjdzLTI2IDMuNy0yOS43IDE2LjVsLTQuMiAxNC43Yy05LjgtLjQtMTkuOSAuNS0yOS45IDIuOGMtMTIuMSAyLjgtMjMuNyA1LjktMzQuOSA5LjRsLTUuOS0xMy43Yy01LjItMTIuMi0xOS4zLTE3LjgtMzEuNS0xMi42cy0xNy44IDE5LjMtMTIuNiAzMS41bDQuOSAxMS4zYy0yMiA5LjQtNDIgMjAuMS02MC4yIDMxLjhMMTk2IDgyLjdjLTcuNC0xMS0yMi4zLTE0LTMzLjMtNi43cy0xNCAyMi4zLTYuNyAzMy4zbDcuOCAxMS42Yy0xOCAxNS0zMy43IDMwLjgtNDcuMyA0Ny4xTDEwMyAxNTcuM2MtMTAuNC04LjMtMjUuNS02LjYtMzMuNyAzLjdzLTYuNiAyNS41IDMuNyAzMy43bDE1IDEyYy0yLjEgMy4yLTQuMSA2LjUtNiA5LjdjLTkuNCAxNS43LTE3IDMxLTIzLjIgNDUuM2wtOS45LTMuOWMtMTIuMy00LjktMjYuMyAxLjEtMzEuMiAxMy40czEuMSAyNi4zIDEzLjQgMzEuMmwxMS42IDQuNmMtLjMgMS4xLS42IDIuMS0uOSAzLjFjLTMuNSAxMi41LTUuNyAyMy4yLTcuMSAzMS4zYy0uNyA0LjEtMS4yIDcuNS0xLjYgMTAuM2MtLjIgMS40LS4zIDIuNi0uNCAzLjZsLS4xIDEuNC0uMSAuNiAwIC4zIDAgLjFjMCAwIDAgLjEgMzkuMiAzLjdsMCAwLTM5LjItMy42Yy0uNSA1LS42IDEwLS40IDE0LjlsLTE0LjcgNC4yQzQuNyAzODAuNi0yLjcgMzkzLjggLjkgNDA2LjZzMTYuOSAyMC4xIDI5LjcgMTYuNWwxMy44LTMuOWMxMC42IDIwLjcgMjcuNiAzNy44IDQ4LjUgNDguNWwtMy45IDEzLjdjLTMuNiAxMi43IDMuNyAyNiAxNi41IDI5LjdzMjYtMy43IDI5LjctMTYuNWw0LjItMTQuN2MyMy44IDEgNDYuMy01LjUgNjUuMS0xNy42TDIxNSA0NzNjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0xMC42LTEwLjZjOS4xLTE0LjEgMTUuMS0zMC41IDE3LTQ4LjNsLjEtLjhjLjMtMS43IDEtNS4xIDIuMy05LjhsLjItLjggMTIuNiA1LjRjMTIuMiA1LjIgMjYuMy0uNCAzMS41LTEyLjZzLS40LTI2LjMtMTIuNi0zMS41bC0xMS4zLTQuOGM5LjktMTQuOSAyNC45LTMxLjYgNDguNi00NmwyLjEgNy41YzMuNiAxMi43IDE2LjkgMjAuMSAyOS43IDE2LjVzMjAuMS0xNi45IDE2LjUtMjkuN0wzNzEgMjU5LjJjNi45LTIuMiAxNC4zLTQuMyAyMi4yLTYuMWMxMi45LTMgMjQuNy04IDM1LjItMTQuOEw0MzkgMjQ5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMTAuNi0xMC42YzEyLjItMTkgMTguNi00MS42IDE3LjYtNjUuMWwxNC43LTQuMmMxMi43LTMuNiAyMC4xLTE2LjkgMTYuNS0yOS43cy0xNi45LTIwLjEtMjkuNy0xNi41bC0xMy43IDMuOWMtMTAuOC0yMS4yLTI4LTM4LTQ4LjUtNDguNWwzLjktMTMuOHpNOTIuMSAzNjMuM2wwIDBMMTQ0IDM2OGwtNTEuOS00Ljd6TTExMiAzMjBhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMjQwIDE4NGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhZ1Nob3BwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAxMTJjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHY0OEgxNjBWMTEyem0tNDggNDhINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQxNmMwIDUzIDQzIDk2IDk2IDk2SDM1MmM1MyAwIDk2LTQzIDk2LTk2VjIwOGMwLTI2LjUtMjEuNS00OC00OC00OEgzMzZWMTEyQzMzNiA1MC4xIDI4NS45IDAgMjI0IDBTMTEyIDUwLjEgMTEyIDExMnY0OHptMjQgNDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0xNTIgMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFoYWkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjMTQuNSAwIDI3LjIgOS43IDMwLjkgMjMuOGwyMy45IDg5LjYgNzUuOS01My4zYzExLjktOC4zIDI3LjgtNy42IDM5IDEuN3MxNC42IDI0LjkgOC40IDM4LjFsLTM5LjMgODQgOTIuNCA4YzE0LjQgMS4yIDI2LjIgMTIgMjguOCAyNi4zcy00LjkgMjguNS0xOCAzNC42bC04NC4xIDM5LjEgNjUuNyA2NS41YzEwLjMgMTAuMiAxMi40IDI2LjEgNS4xIDM4LjdzLTIyIDE4LjctMzYgMTQuOUwzOTEgMzg2LjhsOC4yIDkyLjRjMS4zIDE0LjQtNy4zIDI3LjktMjAuOSAzMi45cy0yOC45IC4xLTM3LjItMTEuN2wtNTMuMS03Ni01My4xIDc2Yy04LjMgMTEuOS0yMy42IDE2LjctMzcuMiAxMS43cy0yMi4yLTE4LjUtMjAuOS0zMi45bDguMi05Mi40TDk1LjQgNDEwLjljLTE0IDMuOC0yOC44LTIuMy0zNi0xNC45cy01LjItMjguNCA1LjEtMzguN2w2NS43LTY1LjVMNDYgMjUyLjdjLTEzLjEtNi4xLTIwLjUtMjAuMy0xOC0zNC42czE0LjMtMjUuMSAyOC44LTI2LjNsOTIuNC04LTM5LjMtODRjLTYuMS0xMy4xLTIuNy0yOC44IDguNC0zOC4xczI3LjEtMTAgMzktMS43bDc1LjkgNTMuMyAyMy45LTg5LjZDMjYwLjggOS43IDI3My41IDAgMjg4IDB6bTAgMTU2LjJsLTQuOCAxOGMtMi43IDEwLjEtMTAuMiAxOC4yLTIwIDIxLjhzLTIwLjggMi4xLTI5LjMtMy45bC0xNS4yLTEwLjcgNy45IDE2LjhjNC40IDkuNSA0IDIwLjUtMS4zIDI5LjZzLTE0LjUgMTUtMjUgMTUuOWwtMTguNSAxLjYgMTYuOCA3LjhjOS41IDQuNCAxNi4yIDEzLjIgMTggMjMuNXMtMS41IDIwLjgtOC45IDI4LjJsLTEzLjIgMTMuMSAxNy45LTQuOGMxMC4xLTIuNyAyMC45LS4zIDI4LjkgNi40czEyLjIgMTYuOSAxMS4zIDI3LjNsLTEuNiAxOC41IDEwLjYtMTUuMmM2LTguNiAxNS44LTEzLjcgMjYuMi0xMy43czIwLjIgNS4xIDI2LjIgMTMuN2wxMC42IDE1LjItMS42LTE4LjVjLS45LTEwLjQgMy4zLTIwLjYgMTEuMy0yNy4zczE4LjgtOS4xIDI4LjktNi40bDE3LjkgNC44LTEzLjItMTMuMWMtNy40LTcuNC0xMC43LTE3LjktOC45LTI4LjJzOC41LTE5LjEgMTgtMjMuNWwxNi44LTcuOC0xOC41LTEuNmMtMTAuNC0uOS0xOS43LTYuOC0yNS0xNS45cy01LjctMjAuMS0xLjMtMjkuNmw3LjktMTYuOC0xNS4yIDEwLjdjLTguNiA2LTE5LjUgNy41LTI5LjMgMy45cy0xNy4zLTExLjctMjAtMjEuOGwtNC44LTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWh0U2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNjRIMzcuNkMxNi44IDY0IDAgODAuOCAwIDEwMS42VjIyNHY0MS43VjI4OCA0MDYuM2MwIDIzIDE4LjcgNDEuNyA0MS43IDQxLjdIMTEydjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtNDAuMS0yMS4xLTc1LjMtNTIuNy05NS4xQzI4MC4zIDIyMi42IDI4OCAyMDAuMiAyODggMTc2YzAtNjEuOS01MC4xLTExMi0xMTItMTEyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0xMTIgMTI4djk2SDY0VjEyOGg0OHptNjQgOTZWMTI4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4em0tNjQgNjR2OTZINjRWMjg4aDQ4em02NCA5NlYyODhoMzJjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhIMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYW5TbW9raW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk5LjUgMTQ0LjhMMTc4LjcgMjI0bDk2IDk2IDkyLjUgOTIuNUMzMzUuOSA0MzQuOSAyOTcuNSA0NDggMjU2IDQ0OEMxNTAgNDQ4IDY0IDM2MiA2NCAyNTZjMC00MS41IDEzLjEtNzkuOSAzNS41LTExMS4yek0zMzMuMyAyODhsLTMyLTMySDM4NHYzMkgzMzMuM3ptMzIgMzJINDAwYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDI2OS4zTDE0NC44IDk5LjVDMTc2LjEgNzcuMSAyMTQuNSA2NCAyNTYgNjRjMTA2IDAgMTkyIDg2IDE5MiAxOTJjMCA0MS41LTEzLjEgNzkuOS0zNS41IDExMS4yTDM2NS4zIDMyMHpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTI3MiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnM3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMwNGMtOC44IDAtMTYtNy4yLTE2LTE2cy03LjItMTYtMTYtMTZ6TTIyOS41IDMyMGwtOTYtOTZIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2SDIyOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY3LjIgNDEyLjVMOTkuNSAxNDQuOEM3Ny4xIDE3Ni4xIDY0IDIxNC41IDY0IDI1NmMwIDEwNiA4NiAxOTIgMTkyIDE5MmM0MS41IDAgNzkuOS0xMy4xIDExMS4yLTM1LjV6bTQ1LjMtNDUuM0M0MzQuOSAzMzUuOSA0NDggMjk3LjUgNDQ4IDI1NmMwLTEwNi04Ni0xOTItMTkyLTE5MmMtNDEuNSAwLTc5LjkgMTMuMS0xMTEuMiAzNS41TDQxMi41IDM2Ny4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDQxNmg5NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRINDgwVjQxNnpNNDQ4IDk2SDE5MlY0MTZINDQ4Vjk2ek02NCA5NkMyOC43IDk2IDAgMTI0LjcgMCAxNjBWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2Vjk2SDY0ek0yNDggMjA4YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTEyMC0yNGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTI0OCAzMDRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTIwLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFuZ2xhZGVzaGlUYWthU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNiAzMi4yQzE4LjQgMzAuMSAyLjQgNDIuNSAuMiA2MFMxMC41IDkzLjYgMjggOTUuOGw3LjkgMWMxNiAyIDI4IDE1LjYgMjggMzEuOFYxNjBIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjRWMzg0YzAgNTMgNDMgOTYgOTYgOTZoMzJjMTA2IDAgMTkyLTg2IDE5Mi0xOTJWMjU2YzAtNTMtNDMtOTYtOTYtOTZIMjcyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjMyYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4SDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDEyOFYxMjguNWMwLTQ4LjQtMzYuMS04OS4zLTg0LjEtOTUuM2wtNy45LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMzJDMTAuNyAzMiAwIDQyLjcgMCA1NlY0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjR6bTg4IDBjLTguOCAwLTE2IDcuMi0xNiAxNlY0NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY0OGMwLTguOC03LjItMTYtMTYtMTZ6bTcyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxODR6bTk2IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyODB6TTQ0OCA1NlY0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRINDcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptLTY0LThWNDY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnNQcm9ncmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMTYwSDMyMFYxMjhINDQ4djMyek00OCA2NEMyMS41IDY0IDAgODUuNSAwIDExMnY2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0NjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek00NDggMzUydjMySDE5MlYzNTJINDQ4ek00OCAyODhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQ2NGMyNi41IDAgNDgtMjEuNSA0OC00OFYzMzZjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnNTdGFnZ2VyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyAxMjggMCAxMTMuNyAwIDk2ek02NCAyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDQ4IDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyAxMjggMCAxMTMuNyAwIDk2ek0wIDI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00NDggNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFzZWJhbGxCYXRCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNCAwYy0xMi40IDAtMjQuMiA0LjktMzMgMTMuN0wyMzMuNSAxNzEuMmMtMTAuNSAxMC41LTE5LjggMjIuMS0yNy43IDM0LjZMMTMyLjcgMzIxLjZjLTcuMyAxMS41LTE1LjggMjIuMi0yNS41IDMxLjlMNjkuOSAzOTAuN2w1MS4zIDUxLjMgMzcuMy0zNy4zYzkuNi05LjYgMjAuMy0xOC4yIDMxLjktMjUuNWwxMTUuOC03My4xYzEyLjUtNy45IDI0LjEtMTcuMiAzNC42LTI3LjdMNDk4LjMgMTIxYzguNy04LjcgMTMuNy0yMC42IDEzLjctMzNzLTQuOS0yNC4yLTEzLjctMzNMNDU3IDEzLjdDNDQ4LjIgNC45IDQzNi40IDAgNDI0IDB6bTg4IDQzMmE4MCA4MCAwIDEgMCAtMTYwIDAgODAgODAgMCAxIDAgMTYwIDB6TTE1IDM5OWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDQ5IDM5OWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhc2ViYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyLjcgMjIzLjRjLTQuOCAuNC05LjcgLjYtMTQuNyAuNmMtMTUuNiAwLTMwLjgtMi00NS4yLTUuOUMxOS4yIDEwNy4xIDEwNy4xIDE5LjIgMjE4LjEgMi44QzIyMiAxNy4yIDIyNCAzMi40IDIyNCA0OGMwIDQuOS0uMiA5LjgtLjYgMTQuN2MtLjcgOC44IDUuOCAxNi41IDE0LjYgMTcuM3MxNi41LTUuOCAxNy4zLTE0LjZjLjUtNS43IC43LTExLjUgLjctMTcuM2MwLTE2LjUtMS45LTMyLjYtNS42LTQ3LjljMS44IDAgMy43LS4xIDUuNi0uMUMzOTcuNCAwIDUxMiAxMTQuNiA1MTIgMjU2YzAgMS45IDAgMy43LS4xIDUuNmMtMTUuNC0zLjYtMzEuNC01LjYtNDcuOS01LjZjLTUuOCAwLTExLjYgLjItMTcuMyAuN2MtOC44IC43LTE1LjQgOC41LTE0LjYgMTcuM3M4LjUgMTUuNCAxNy4zIDE0LjZjNC44LS40IDkuNy0uNiAxNC43LS42YzE1LjYgMCAzMC44IDIgNDUuMiA1LjlDNDkyLjggNDA0LjkgNDA0LjkgNDkyLjggMjkzLjkgNTA5LjJDMjkwIDQ5NC44IDI4OCA0NzkuNiAyODggNDY0YzAtNC45IC4yLTkuOCAuNi0xNC43Yy43LTguOC01LjgtMTYuNS0xNC42LTE3LjNzLTE2LjUgNS44LTE3LjMgMTQuNmMtLjUgNS43LS43IDExLjUtLjcgMTcuM2MwIDE2LjUgMS45IDMyLjYgNS42IDQ3LjljLTEuOCAwLTMuNyAuMS01LjYgLjFDMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZjMC0xLjkgMC0zLjcgLjEtNS42QzE1LjQgMjU0LjEgMzEuNSAyNTYgNDggMjU2YzUuOCAwIDExLjYtLjIgMTcuMy0uN2M4LjgtLjcgMTUuNC04LjUgMTQuNi0xNy4zcy04LjUtMTUuNC0xNy4zLTE0LjZ6TTEyMS4zIDIwOGMtOCAzLjctMTEuNiAxMy4yLTcuOSAyMS4yczEzLjIgMTEuNiAyMS4yIDcuOWM0NS4yLTIwLjggODEuNy01Ny4yIDEwMi41LTEwMi41YzMuNy04IC4yLTE3LjUtNy45LTIxLjJzLTE3LjUtLjItMjEuMiA3LjljLTE3LjYgMzguMy00OC41IDY5LjItODYuNyA4Ni43em0yNzcuMiA3NC43Yy0zLjctOC0xMy4yLTExLjYtMjEuMi03LjljLTQ1LjIgMjAuOC04MS43IDU3LjItMTAyLjUgMTAyLjVjLTMuNyA4LS4yIDE3LjUgNy45IDIxLjJzMTcuNSAuMiAyMS4yLTcuOWMxNy42LTM4LjMgNDguNS02OS4yIDg2LjctODYuN2M4LTMuNyAxMS42LTEzLjIgNy45LTIxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhc2tldFNob3BwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1My4zIDM1LjFjNi4xLTExLjggMS41LTI2LjMtMTAuMi0zMi40cy0yNi4zLTEuNS0zMi40IDEwLjJMMTE3LjYgMTkySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyTDgzLjkgNDYzLjVDOTEgNDkyIDExNi42IDUxMiAxNDYgNTEySDQzMGMyOS40IDAgNTUtMjAgNjIuMS00OC41TDU0NCAyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDU4LjRMMzY1LjMgMTIuOUMzNTkuMiAxLjIgMzQ0LjctMy40IDMzMi45IDIuN3MtMTYuMyAyMC42LTEwLjIgMzIuNEw0MDQuMyAxOTJIMTcxLjdMMjUzLjMgMzUuMXpNMTkyIDMwNHY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptOTYtMTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMwNGMwLTguOCA3LjItMTYgMTYtMTZ6bTEyOCAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFza2V0YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Ni42IDY0bDg1LjIgODUuMkMxOTQuNSAxMjEuNyAyMDggODYuNCAyMDggNDhjMC0xNC43LTItMjguOS01LjctNDIuNEMxNTguNiAxNSAxMTkgMzUuNSA4Ni42IDY0ek02NCA4Ni42QzM1LjUgMTE5IDE1IDE1OC42IDUuNiAyMDIuM0MxOS4xIDIwNiAzMy4zIDIwOCA0OCAyMDhjMzguNCAwIDczLjctMTMuNSAxMDEuMy0zNi4xTDY0IDg2LjZ6TTI1NiAwYy03LjMgMC0xNC42IC4zLTIxLjggLjlDMjM4IDE2IDI0MCAzMS44IDI0MCA0OGMwIDQ3LjMtMTcuMSA5MC41LTQ1LjQgMTI0TDI1NiAyMzMuNCA0MjUuNCA2NEMzODAuMiAyNC4yIDMyMC45IDAgMjU2IDB6TTQ4IDI0MGMtMTYuMiAwLTMyLTItNDcuMS01LjhDLjMgMjQxLjQgMCAyNDguNyAwIDI1NmMwIDY0LjkgMjQuMiAxMjQuMiA2NCAxNjkuNEwyMzMuNCAyNTYgMTcyIDE5NC42QzEzOC41IDIyMi45IDk1LjMgMjQwIDQ4IDI0MHptNDYzLjEgMzcuOGMuNi03LjIgLjktMTQuNSAuOS0yMS44YzAtNjQuOS0yNC4yLTEyNC4yLTY0LTE2OS40TDI3OC42IDI1NiAzNDAgMzE3LjRjMzMuNC0yOC4zIDc2LjctNDUuNCAxMjQtNDUuNGMxNi4yIDAgMzIgMiA0Ny4xIDUuOHptLTQuNyAzMS45QzQ5Mi45IDMwNiA0NzguNyAzMDQgNDY0IDMwNGMtMzguNCAwLTczLjcgMTMuNS0xMDEuMyAzNi4xTDQ0OCA0MjUuNGMyOC41LTMyLjMgNDkuMS03MS45IDU4LjQtMTE1Ljd6TTM0MC4xIDM2Mi43QzMxNy41IDM5MC4zIDMwNCA0MjUuNiAzMDQgNDY0YzAgMTQuNyAyIDI4LjkgNS43IDQyLjRDMzUzLjQgNDk3IDM5MyA0NzYuNSA0MjUuNCA0NDhsLTg1LjItODUuMnpNMzE3LjQgMzQwTDI1NiAyNzguNiA4Ni42IDQ0OGM0NS4xIDM5LjggMTA0LjQgNjQgMTY5LjQgNjRjNy4zIDAgMTQuNi0uMyAyMS44LS45QzI3NCA0OTYgMjcyIDQ4MC4yIDI3MiA0NjRjMC00Ny4zIDE3LjEtOTAuNSA0NS40LTEyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA3Ny4zYzAtNy4zIDUuOS0xMy4zIDEzLjMtMTMuM2MzLjUgMCA2LjkgMS40IDkuNCAzLjlsMTQuOSAxNC45QzEzMCA5MS44IDEyOCAxMDEuNyAxMjggMTEyYzAgMTkuOSA3LjIgMzggMTkuMiA1MmMtNS4zIDkuMi00IDIxLjEgMy44IDI5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDI4OSA4OWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWMtNy45LTcuOS0xOS44LTkuMS0yOS0zLjhDMjQ2IDM5LjIgMjI3LjkgMzIgMjA4IDMyYy0xMC4zIDAtMjAuMiAyLTI5LjIgNS41TDE2My45IDIyLjZDMTQ5LjQgOC4xIDEyOS43IDAgMTA5LjMgMEM2Ni42IDAgMzIgMzQuNiAzMiA3Ny4zVjI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIOTZWNzcuM3pNMzIgMzUydjE2YzAgMjguNCAxMi40IDU0IDMyIDcxLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDY0SDM4NHYxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQzOS42YzE5LjYtMTcuNiAzMi00My4xIDMyLTcxLjZWMzUySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0ZXJ5RW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTYwYy04LjggMC0xNiA3LjItMTYgMTZWMzM2YzAgOC44IDcuMiAxNiAxNiAxNkg0NjRjOC44IDAgMTYtNy4yIDE2LTE2VjE3NmMwLTguOC03LjItMTYtMTYtMTZIODB6TTAgMTc2YzAtNDQuMiAzNS44LTgwIDgwLTgwSDQ2NGM0NC4yIDAgODAgMzUuOCA4MCA4MHYxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnYxNmMwIDQ0LjItMzUuOCA4MC04MCA4MEg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0ZXJ5RnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMTYwYzguOCAwIDE2IDcuMiAxNiAxNlYzMzZjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNkg0NjR6TTgwIDk2QzM1LjggOTYgMCAxMzEuOCAwIDE3NlYzMzZjMCA0NC4yIDM1LjggODAgODAgODBINDY0YzQ0LjIgMCA4MC0zNS44IDgwLTgwVjMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJWMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwSDgwem0zNjggOTZIOTZWMzIwSDQ0OFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxNjBjOC44IDAgMTYgNy4yIDE2IDE2VjMzNmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NHpNODAgOTZDMzUuOCA5NiAwIDEzMS44IDAgMTc2VjMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0NjRjNDQuMiAwIDgwLTM1LjggODAtODBWMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMlYxNzZjMC00NC4yLTM1LjgtODAtODAtODBIODB6bTIwOCA5Nkg5NlYzMjBIMjg4VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeVF1YXJ0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDE2MGM4LjggMCAxNiA3LjIgMTYgMTZWMzM2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZINDY0ek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZWMzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwSDQ2NGM0NC4yIDAgODAtMzUuOCA4MC04MFYzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE3NmMwLTQ0LjItMzUuOC04MC04MC04MEg4MHptMTEyIDk2SDk2VjMyMGg5NlYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlUaHJlZVF1YXJ0ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxNjBjOC44IDAgMTYgNy4yIDE2IDE2VjMzNmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NHpNODAgOTZDMzUuOCA5NiAwIDEzMS44IDAgMTc2VjMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0NjRjNDQuMiAwIDgwLTM1LjggODAtODBWMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMlYxNzZjMC00NC4yLTM1LjgtODAtODAtODBIODB6bTI3MiA5Nkg5NlYzMjBIMzUyVjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVkUHVsc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgzLjIgOS42TDUyNCA2NGg5MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1MTJjLTcuNiAwLTE0LjctMy42LTE5LjItOS42TDQ2OC43IDcwLjNsLTQ3IDk5LjljLTMuNyA3LjgtMTEuMyAxMy4xLTE5LjkgMTMuN3MtMTYuOS0zLjQtMjEuNy0xMC42TDMzOS4yIDExMkgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMzUyYzggMCAxNS41IDQgMjAgMTAuN2wyNC40IDM2LjYgNDUuOS05Ny41QzQ0NS45IDYuMiA0NTMuMiAxIDQ2MS42IC4xczE2LjYgMi43IDIxLjYgOS41ek0zMjAgMTYwaDEyLjdsMjAuNyAzMS4xYzExLjIgMTYuOCAzMC42IDI2LjMgNTAuNyAyNC44czM3LjktMTMuNyA0Ni41LTMyTDQ2MS45IDE2MEg1NDRjNTMgMCA5NiA0MyA5NiA5NlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDM1MiAzMjAgNjR2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRzMzIgMTQuMyAzMiAzMlYzNTJIMjg4VjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTE0NCAwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzIwSDI4OFYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJINTQ0YzUzIDAgOTYgNDMgOTYgOTZWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQxNkgzNTIgMzIwIDY0djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyem0xNDQgOTZhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlZXJNdWdFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTZoNTEuMmM0Mi40IDAgNzYuOCAzNC40IDc2LjggNzYuOFYyNzQuOWMwIDMwLjQtMTcuOSA1Ny45LTQ1LjYgNzAuMkwzODQgMzgxLjdWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMzg0IDMxMS42bDU2LjQtMjUuMWM0LjYtMi4xIDcuNi02LjYgNy42LTExLjdWMTcyLjhjMC03LjEtNS43LTEyLjgtMTIuOC0xMi44SDM4NFYzMTEuNnpNMTYwIDE0NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlYzNjhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxNDR6bTY0IDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzY4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTQ0em02NCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjM2OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVsbENvbmNpZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgNjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMTZ2MzMuM0MxMTkuNiAxNTcuMiAzMiAyNTIuNCAzMiAzNjhINDgwYzAtMTE1LjYtODcuNi0yMTAuOC0yMDAtMjIyLjdWMTEyaDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI1NiAyMTZ6TTI0IDQwMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlbGxTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC05MC4yLTcwLjdjLjItLjQgLjQtLjkgLjYtMS4zYzUuMi0xMS41IDMuMS0yNS01LjMtMzQuNGwtNy40LTguM0M0OTcuMyAzMTkuMiA0ODAgMjczLjkgNDgwIDIyNi44VjIwOGMwLTc3LjQtNTUtMTQyLTEyOC0xNTYuOFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY1MS4yYy00Mi42IDguNi03OSAzNC4yLTEwMiA2OS4zTDM4LjggNS4xek00MDYuMiA0MTZMMTYwIDIyMi4xdjQuOGMwIDQ3LTE3LjMgOTIuNC00OC41IDEyNy42bC03LjQgOC4zYy04LjQgOS40LTEwLjQgMjIuOS01LjMgMzQuNFMxMTUuNCA0MTYgMTI4IDQxNkg0MDYuMnptLTQwLjkgNzcuM2MxMi0xMiAxOC43LTI4LjMgMTguNy00NS4zSDMyMCAyNTZjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNzMjguMyAxOC43IDQ1LjMgMTguN3MzMy4zLTYuNyA0NS4zLTE4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjUxLjJDMTE5IDY2IDY0IDEzMC42IDY0IDIwOHYxOC44YzAgNDctMTcuMyA5Mi40LTQ4LjUgMTI3LjZsLTcuNCA4LjNjLTguNCA5LjQtMTAuNCAyMi45LTUuMyAzNC40UzE5LjQgNDE2IDMyIDQxNkg0MTZjMTIuNiAwIDI0LTcuNCAyOS4yLTE4LjlzMy4xLTI1LTUuMy0zNC40bC03LjQtOC4zQzQwMS4zIDMxOS4yIDM4NCAyNzMuOSAzODQgMjI2LjhWMjA4YzAtNzcuNC01NS0xNDItMTI4LTE1Ni44VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem00NS4zIDQ5My4zYzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNIMjI0IDE2MGMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM3MyOC4zIDE4LjcgNDUuMyAxOC43czMzLjMtNi43IDQ1LjMtMTguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmV6aWVyQ3VydmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDEzNlY4OGg0OHY0OEgyOTZ6TTI4OCAzMmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NEgxMjEuNkMxMTEuMiA2Mi43IDg5LjMgNDggNjQgNDhDMjguNyA0OCAwIDc2LjcgMCAxMTJzMjguNyA2NCA2NCA2NGMyNS4zIDAgNDcuMi0xNC43IDU3LjYtMzZoNjYuOWMtNTguOSAzOS42LTk4LjkgMTA1LTEwNCAxODBIODBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM2OGMwLTI2LjUtMjEuNS00OC00OC00OGgtMy4zYzUuOS02NyA0OC41LTEyMy40IDEwNy41LTE0OS4xYzguNiAxMi43IDIzLjIgMjEuMSAzOS44IDIxLjFoNjRjMTYuNiAwIDMxLjEtOC40IDM5LjgtMjEuMWM1OSAyNS43IDEwMS42IDgyLjEgMTA3LjUgMTQ5LjFINDk2Yy0yNi41IDAtNDggMjEuNS00OCA0OHY2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg2NGMyNi41IDAgNDgtMjEuNSA0OC00OFYzNjhjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQuNWMtNS03NS00NS4xLTE0MC40LTEwNC0xODBoNjYuOWMxMC40IDIxLjMgMzIuMyAzNiA1Ny42IDM2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0Yy0yNS4zIDAtNDcuMiAxNC43LTU3LjYgMzZINDAwVjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI4OHpNODggMzc2aDQ4djQ4SDg4VjM3NnptNDE2IDQ4VjM3Nmg0OHY0OEg1MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpY3ljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDMyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDI1LjdsMzQuNiA2NEgyMjIuOWwtMjcuNC0zOEMxOTEgOTkuNyAxODMuNyA5NiAxNzYgOTZIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDQzLjdsMjIuMSAzMC43LTI2LjYgNTMuMWMtMTAtMi41LTIwLjUtMy44LTMxLjItMy44QzU3LjMgMjI0IDAgMjgxLjMgMCAzNTJzNTcuMyAxMjggMTI4IDEyOGM2NS4zIDAgMTE5LjEtNDguOSAxMjctMTEyaDQ5YzguNSAwIDE2LjMtNC41IDIwLjctMTEuOGw4NC44LTE0My41IDIxLjcgNDAuMUM0MDIuNCAyNzYuMyAzODQgMzEyIDM4NCAzNTJjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhzMTI4LTU3LjMgMTI4LTEyOHMtNTcuMy0xMjgtMTI4LTEyOGMtMTMuNSAwLTI2LjUgMi4xLTM4LjcgNkwzNzUuNCA0OC44QzM2OS44IDM4LjQgMzU5IDMyIDM0Ny4yIDMySDMxMnpNNDU4LjYgMzAzLjdsMzIuMyA1OS43YzYuMyAxMS43IDIwLjkgMTYgMzIuNSA5LjdzMTYtMjAuOSA5LjctMzIuNWwtMzIuMy01OS43YzMuNi0uNiA3LjQtLjkgMTEuMi0uOWMzOS44IDAgNzIgMzIuMiA3MiA3MnMtMzIuMiA3Mi03MiA3MnMtNzItMzIuMi03Mi03MmMwLTE4LjYgNy0zNS41IDE4LjYtNDguM3pNMTMzLjIgMzY4aDY1Yy03LjMgMzIuMS0zNiA1Ni03MC4yIDU2Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcyYzEuNyAwIDMuNCAuMSA1LjEgLjJsLTI0LjIgNDguNWMtOSAxOC4xIDQuMSAzOS40IDI0LjMgMzkuNHptMzMuNy00OGw1MC43LTEwMS4zIDcyLjkgMTAxLjItLjEgLjFIMTY2Ljh6bTkwLjYtMTI4SDM2NS45TDMxNyAyNzQuOCAyNTcuNCAxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpbm9jdWxhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2SDk2VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyem02NCA5NlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4OC45YzAtMzQuNiA5LjQtNjguNiAyNy4yLTk4LjNDNDAuOSAyNjcuOCA0OS43IDI0Mi40IDUzIDIxNkw2MC41IDE1NmMyLTE2IDE1LjYtMjggMzEuOC0yOEgxOTJ6bTIyNy44IDBjMTYuMSAwIDI5LjggMTIgMzEuOCAyOEw0NTkgMjE2YzMuMyAyNi40IDEyLjEgNTEuOCAyNS44IDc0LjZjMTcuOCAyOS43IDI3LjIgNjMuNyAyNy4yIDk4LjNWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4aDk5Ljh6TTMyMCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY5NkgzMjBWNjR6bS0zMiA2NFYyODhIMjI0VjEyOGg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlvaGF6YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3My4yIDBjLTEuOCAwLTMuNSAuNy00LjggMkMxMzguNSAzMi4zIDEyMCA3NCAxMjAgMTIwYzAgMjYuMiA2IDUwLjkgMTYuNiA3M2MtMjIgMi40LTQzLjggOS4xLTY0LjIgMjAuNUMzNy45IDIzMi44IDEzLjMgMjYyLjQgLjQgMjk2Yy0uNyAxLjctLjUgMy43IC41IDUuMmMyLjIgMy43IDcuNCA0LjMgMTAuNiAxLjNDNjQuMiAyNTQuMyAxNTggMjQ1LjEgMjA1IDMyNHMtOC4xIDE1My4xLTc3LjYgMTczLjJjLTQuMiAxLjItNi4zIDUuOS00LjEgOS42YzEgMS42IDIuNiAyLjcgNC41IDNjMzYuNSA1LjkgNzUuMiAuMSAxMDkuNy0xOS4yYzIwLjQtMTEuNCAzNy40LTI2LjUgNTAuNS00My44YzEzLjEgMTcuMyAzMC4xIDMyLjQgNTAuNSA0My44YzM0LjUgMTkuMyA3My4zIDI1LjIgMTA5LjcgMTkuMmMxLjktLjMgMy41LTEuNCA0LjUtM2MyLjItMy43IC4xLTguNC00LjEtOS42QzM3OS4xIDQ3Ny4xIDMyNCA0MDMgMzcxIDMyNHMxNDAuNy02OS44IDE5My41LTIxLjRjMy4yIDIuOSA4LjQgMi4zIDEwLjYtMS4zYzEtMS42IDEuMS0zLjUgLjUtNS4yYy0xMi45LTMzLjYtMzcuNS02My4yLTcyLjEtODIuNWMtMjAuNC0xMS40LTQyLjItMTguMS02NC4yLTIwLjVDNDUwIDE3MC45IDQ1NiAxNDYuMiA0NTYgMTIwYzAtNDYtMTguNS04Ny43LTQ4LjQtMTE4Yy0xLjMtMS4zLTMtMi00LjgtMmMtNSAwLTguNCA1LjItNi43IDkuOUM0MjEuNyA4MC41IDM4NS42IDE3NiAyODggMTc2UzE1NC4zIDgwLjUgMTc5LjkgOS45YzEuNy00LjctMS42LTkuOS02LjctOS45ek0yNDAgMjcyYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTE4MS43IDQxNy42YzYuMy0xMS44IDkuOC0yNS4xIDguNi0zOS44Yy0xOS41LTE4LTM0LTQxLjQtNDEuMi02Ny44Yy0xMi41LTguMS0yNi4yLTExLjgtNDAtMTIuNGMtOS0uNC0xOC4xIC42LTI3LjEgMi43YzcuOCA1Ny4xIDM4LjcgMTA2LjggODIuOSAxMzkuNGM2LjgtNi43IDEyLjYtMTQuMSAxNi44LTIyLjF6TTI4OCA2NGMtMjguOCAwLTU2LjMgNS45LTgxLjIgMTYuNWMyIDguMyA1IDE2LjIgOSAyMy41YzYuOCAxMi40IDE2LjcgMjMuMSAzMC4xIDMwLjNjMTMuMy00LjEgMjcuNS02LjMgNDIuMi02LjNzMjguOCAyLjIgNDIuMiA2LjNjMTMuNC03LjIgMjMuMy0xNy45IDMwLjEtMzAuM2M0LTcuMyA3LTE1LjIgOS0yMy41QzM0NC4zIDY5LjkgMzE2LjggNjQgMjg4IDY0ek00MjYuOSAzMTBjLTcuMiAyNi40LTIxLjcgNDkuNy00MS4yIDY3LjhjLTEuMiAxNC43IDIuMiAyOC4xIDguNiAzOS44YzQuMyA4IDEwIDE1LjQgMTYuOCAyMi4xYzQ0LjMtMzIuNiA3NS4yLTgyLjMgODIuOS0xMzkuNGMtOS0yLjItMTguMS0zLjEtMjcuMS0yLjdjLTEzLjggLjYtMjcuNSA0LjQtNDAgMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0Y29pblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzJDNDggMTQuMyA2Mi4zIDAgODAgMHMzMiAxNC4zIDMyIDMyVjY0aDMyVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRjMCAxLjUtLjEgMy4xLS4zIDQuNUMyNTQuMSA4Mi4yIDI4OCAxMjUuMSAyODggMTc2YzAgMjQuMi03LjcgNDYuNi0yMC43IDY0LjljMzEuNyAxOS44IDUyLjcgNTUgNTIuNyA5NS4xYzAgNjEuOS01MC4xIDExMi0xMTIgMTEydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgxMTJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDQxLjdDMTguNyA0NDggMCA0MjkuMyAwIDQwNi4zVjI4OCAyNjUuNyAyMjQgMTAxLjZDMCA4MC44IDE2LjggNjQgMzcuNiA2NEg0OFYzMnpNNjQgMjI0SDE3NmMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEg2NHY5NnptMTEyIDY0SDY0djk2SDIwOGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEgxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsZW5kZXJQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzUyTDE5Ni44IDUyLjNDMTk0LjIgMjQuMiAyMTYuMyAwIDI0NC42IDBINTM0LjFjMjEuMSAwIDM2LjQgMjAuMSAzMC45IDQwLjRMNTU4LjUgNjRINDAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDU0OS44bC0xNy41IDY0SDQwMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg1MjMuNmwtMTcuNSA2NEg0MDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTcuNUw0ODAgMzUySDIyNHptLTE2IDMySDQ5NmMyNi41IDAgNDggMjEuNSA0OCA0OHYzMmMwIDI2LjUtMjEuNSA0OC00OCA0OEgyMDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHptMTQ0IDk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMTQ3LjUgMzAuN2MxMC44IDYuNyAxNS4zIDIxIDEwLjYgMzMuNGwtMjIgNTcuOGMtNC4yIDEwLjktMTQuNSAxNy42LTI1LjMgMTYuNGwtMzMuMy0zLjZjLTEzLjYgNDIuMi0xMy42IDg4LjQgMCAxMzAuN2wzMy4zLTMuNmMxMC45LTEuMiAyMS4yIDUuNSAyNS4zIDE2LjRsMjIgNTcuOGM0LjcgMTIuNCAuMiAyNi43LTEwLjYgMzMuNGwtNDQgMjcuMmMtOS43IDYtMjEuOSA0LjItMjkuOC00LjNDLTI0LjYgMjg2LTI0LjYgMTE0IDczLjcgNy44QzgxLjYtLjcgOTMuOC0yLjUgMTAzLjUgMy41bDQ0IDI3LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsZW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBoNjQgMzJINDcwLjFjMjEuMSAwIDM2LjQgMjAuMSAzMC45IDQwLjRMNDk0LjUgNjRIMzM2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDQ4NS44bC0xNy41IDY0SDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0NTkuNmwtMTcuNSA2NEgzMzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTcuNUw0MTYgMzUySDE2MGwtOC43LTk2SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTQ1LjUgMTkyTDEzMy44IDY0SDY0VjE5Mmg4MS41ek0xNDQgMzg0SDQzMmMyNi41IDAgNDggMjEuNSA0OCA0OHYzMmMwIDI2LjUtMjEuNSA0OC00OCA0OEgxNDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHptMTQ0IDk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJjMTIzLjcgMCAyMjQgMTAwLjMgMjI0IDIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyQzUxMiAxMjguOSAzODMuMSAwIDIyNCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMTA2LTg2LTE5Mi0xOTItMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNOTYgMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4UzAgMTE3LjUgMCAxNDRWMzY4YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0czE0NC02NC41IDE0NC0xNDRzLTY0LjUtMTQ0LTE0NC0xNDRIMTI4djk2aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9sZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDgwIDk2IDIyNGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGMwIDMxLjMtMTEuMyA2MC4xLTMwIDgyLjNjMzcuMSAyMi40IDYyIDYzLjEgNjIgMTA5LjdjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIOTYgODAgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDhWMjU2IDk2SDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6TTIyNCAyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRIMTEyVjIyNEgyMjR6TTExMiAyODhWNDE2SDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NEgyMjQgMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb2x0TGlnaHRuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2TDI4LjUgMjhjMi0xNiAxNS42LTI4IDMxLjgtMjhIMjI4LjljMTUgMCAyNy4xIDEyLjEgMjcuMSAyNy4xYzAgMy4yLS42IDYuNS0xLjcgOS41TDIwOCAxNjBIMzQ3LjNjMjAuMiAwIDM2LjcgMTYuNCAzNi43IDM2LjdjMCA3LjQtMi4yIDE0LjYtNi40IDIwLjdsLTE5Mi4yIDI4MWMtNS45IDguNi0xNS42IDEzLjctMjUuOSAxMy43aC0yLjljLTE1LjcgMC0yOC41LTEyLjgtMjguNS0yOC41YzAtMi4zIC4zLTQuNiAuOS02LjlMMTc2IDI4OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ5LjQgNDQuNmM1LjktMTMuNyAxLjUtMjkuNy0xMC42LTM4LjVzLTI4LjYtOC0zOS45IDEuOGwtMjU2IDIyNGMtMTAgOC44LTEzLjYgMjIuOS04LjkgMzUuM1M1MC43IDI4OCA2NCAyODhIMTc1LjVMOTguNiA0NjcuNGMtNS45IDEzLjctMS41IDI5LjcgMTAuNiAzOC41czI4LjYgOCAzOS45LTEuOGwyNTYtMjI0YzEwLTguOCAxMy42LTIyLjkgOC45LTM1LjNzLTE2LjYtMjAuNy0zMC0yMC43SDI3Mi41TDM0OS40IDQ0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU5LjEgNTIuNEw0NDIuNiA2LjVDNDQwLjcgMi42IDQzNi41IDAgNDMyLjEgMHMtOC41IDIuNi0xMC40IDYuNUw0MDUuMiA1Mi40bC00NiAxNi44Yy00LjMgMS42LTcuMyA1LjktNy4yIDEwLjRjMCA0LjUgMyA4LjcgNy4yIDEwLjJsNDUuNyAxNi44IDE2LjggNDUuOGMxLjUgNC40IDUuOCA3LjUgMTAuNCA3LjVzOC45LTMuMSAxMC40LTcuNWwxNi41LTQ1LjggNDUuNy0xNi44YzQuMi0xLjUgNy4yLTUuNyA3LjItMTAuMmMwLTQuNi0zLTguOS03LjItMTAuNEw0NTkuMSA1Mi40em0tMTMyLjQgNTNjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0yLjkgMi45QzI1Ni41IDEwMC4zIDIzMi43IDk2IDIwOCA5NkM5My4xIDk2IDAgMTg5LjEgMCAzMDRTOTMuMSA1MTIgMjA4IDUxMnMyMDgtOTMuMSAyMDgtMjA4YzAtMjQuNy00LjMtNDguNS0xMi4yLTcwLjVsMi45LTIuOWMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtODAtODB6TTIwMCAxOTJjLTU3LjQgMC0xMDQgNDYuNi0xMDQgMTA0djhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZ2LThjMC03NS4xIDYwLjktMTM2IDEzNi0xMzZoOGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuNyAxNDQuOGM2LjkgMTYuMyAyMC42IDMxLjIgMzguMyAzMS4ySDM4NGMxNy43IDAgMzEuNC0xNC45IDM4LjMtMzEuMkM0MzQuNCAxMTYuMSA0NjIuOSA5NiA0OTYgOTZjNDQuMiAwIDgwIDM1LjggODAgODBjMCAzMC40LTE3IDU2LjktNDIgNzAuNGMtMy42IDEuOS02IDUuNS02IDkuNnMyLjQgNy43IDYgOS42YzI1IDEzLjUgNDIgNDAgNDIgNzAuNGMwIDQ0LjItMzUuOCA4MC04MCA4MGMtMzMuMSAwLTYxLjYtMjAuMS03My43LTQ4LjhDNDE1LjQgMzUwLjkgNDAxLjcgMzM2IDM4NCAzMzZIMTkyYy0xNy43IDAtMzEuNCAxNC45LTM4LjMgMzEuMkMxNDEuNiAzOTUuOSAxMTMuMSA0MTYgODAgNDE2Yy00NC4yIDAtODAtMzUuOC04MC04MGMwLTMwLjQgMTctNTYuOSA0Mi03MC40YzMuNi0xLjkgNi01LjUgNi05LjZzLTIuNC03LjctNi05LjZDMTcgMjMyLjkgMCAyMDYuNCAwIDE3NmMwLTQ0LjIgMzUuOC04MCA4MC04MGMzMy4xIDAgNjEuNiAyMC4xIDczLjcgNDguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjA4LjVjMCAyOS4xLTE1LjYgNTMuOS0zNy4yIDY3LjhjLTE3LjIgMTEuMS0zMS41IDI2LjEtNDEuNyA0My43SDMwMi45Yy0xMC4yLTE3LjYtMjQuNS0zMi42LTQxLjctNDMuN2MtMjEuNi0xMy45LTM3LjItMzguNy0zNy4yLTY3LjhWNjRIMTYwVjIwOC41ek0yODggNjRWMjA4LjVjMCA1LjcgMy4xIDEwLjkgNy45IDE0YzExLjIgNy4yIDIxLjUgMTUuNSAzMC45IDI0LjhMMzY2LjEgMjA4bC03LTdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyNCAyNCAyNCAyNGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC03LTctNDMuMyA0My4zQzM3NCAzMTQuMSAzODQgMzQ3LjkgMzg0IDM4NGMwIDM5LjQtMTEuOSA3Ni4xLTMyLjIgMTA2LjVjLTkuNiAxNC40LTI2LjUgMjEuNS00My44IDIxLjVINzYuMWMtMTcuMyAwLTM0LjItNy4xLTQzLjgtMjEuNUMxMS45IDQ2MC4xIDAgNDIzLjQgMCAzODRjMC02Ny44IDM1LjEtMTI3LjMgODguMS0xNjEuNWM0LjgtMy4xIDcuOS04LjMgNy45LTE0VjY0Qzc4LjMgNjQgNjQgNDkuNyA2NCAzMlM3OC4zIDAgOTYgMGgxNkgyNzJoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tBdGxhcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNDMgNDMgMCA5NiAwSDM4NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0IDk2Yy01MyAwLTk2LTQzLTk2LTk2Vjk2ek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyVjM4NEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTI0Ny40IDI4My44Yy0zLjcgMy43LTYuMiA0LjItNy40IDQuMnMtMy43LS41LTcuNC00LjJjLTMuOC0zLjctOC0xMC0xMS44LTE4LjljLTYuMi0xNC41LTEwLjgtMzQuMy0xMi4yLTU2LjloNjNjLTEuNSAyMi42LTYgNDIuNC0xMi4yIDU2LjljLTMuOCA4LjktOCAxNS4yLTExLjggMTguOXptNDIuNy05LjljNy4zLTE4LjMgMTItNDEuMSAxMy40LTY1LjloMzEuMWMtNC43IDI3LjktMjEuNCA1MS43LTQ0LjUgNjUuOXptMC0xNjMuOGMyMy4yIDE0LjIgMzkuOSAzOCA0NC41IDY1LjlIMzAzLjVjLTEuNC0yNC43LTYuMS00Ny41LTEzLjQtNjUuOXpNMzY4IDE5MmExMjggMTI4IDAgMSAwIC0yNTYgMCAxMjggMTI4IDAgMSAwIDI1NiAwek0xNDUuMyAyMDhoMzEuMWMxLjQgMjQuNyA2LjEgNDcuNSAxMy40IDY1LjljLTIzLjItMTQuMi0zOS45LTM4LTQ0LjUtNjUuOXptMzEuMS0zMkgxNDUuM2M0LjctMjcuOSAyMS40LTUxLjcgNDQuNS02NS45Yy03LjMgMTguMy0xMiA0MS4xLTEzLjQgNjUuOXptNTYuMS03NS44YzMuNy0zLjcgNi4yLTQuMiA3LjQtNC4yczMuNyAuNSA3LjQgNC4yYzMuOCAzLjcgOCAxMCAxMS44IDE4LjljNi4yIDE0LjUgMTAuOCAzNC4zIDEyLjIgNTYuOWgtNjNjMS41LTIyLjYgNi00Mi40IDEyLjItNTYuOWMzLjgtOC45IDgtMTUuMiAxMS44LTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tCaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzQzIDAgMCA0MyAwIDk2VjQxNmMwIDUzIDQzIDk2IDk2IDk2SDM4NGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlYzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzg0IDk2em0wIDM4NEgzNTJ2NjRIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6TTIwOCA4MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyVjMwNGMwIDguOC03LjIgMTYtMTYgMTZIMjI0Yy04LjggMC0xNi03LjItMTYtMTZWMTkySDE2MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZoNDhWODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNDMgNDMgMCA5NiAwaDk2VjE5MC43YzAgMTMuNCAxNS41IDIwLjkgMjYgMTIuNUwyNzIgMTYwbDU0IDQzLjJjMTAuNSA4LjQgMjYgLjkgMjYtMTIuNVYwaDMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODQgOTZjLTUzIDAtOTYtNDMtOTYtOTZWOTZ6TTY0IDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzNTJWMzg0SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va0pvdXJuYWxXaGlsbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDQzIDQzIDAgOTYgMEgzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NCA5NmMtNTMgMC05Ni00My05Ni05NlY5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MlYzODRIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05MC40LTIzNC40bC0yMS4yLTIxLjJjLTMgMTAuMS01LjEgMjAuNi01LjEgMzEuNmMwIC4yIDAgLjUgLjEgLjhzLjEgLjUgLjEgLjhMMTY1LjIgMjI2YzIuNSAyLjEgMy40IDUuOCAyLjMgOC45Yy0xLjMgMy00LjEgNS4xLTcuNSA1LjFjLTEuOS0uMS0zLjgtLjgtNS4yLTJsLTIzLjYtMjAuNkMxNDIuOCAyNjcgMTg2LjkgMzA0IDI0MCAzMDRzOTcuMy0zNyAxMDguOS04Ni42TDMyNS4zIDIzOGMtMS40IDEuMi0zLjMgMi01LjMgMmMtMi4yLS4xLTQuNC0xLjEtNi0yLjhjLTEuMi0xLjUtMS45LTMuNC0yLTUuMmMuMS0yLjIgMS4xLTQuNCAyLjgtNmwzNy4xLTMyLjVjMC0uMyAwLS41IC4xLS44cy4xLS41IC4xLS44YzAtMTEtMi4xLTIxLjUtNS4xLTMxLjZsLTIxLjIgMjEuMmMtMy4xIDMuMS04LjEgMy4xLTExLjMgMHMtMy4xLTguMSAwLTExLjJsMjYuNC0yNi41Yy04LjItMTctMjAuNS0zMS43LTM1LjktNDIuNmMtMi43LTEuOS02LjIgMS40LTUgNC41YzguNSAyMi40IDMuNiA0OC0xMyA2NS42Yy0zLjIgMy40LTMuNiA4LjktLjkgMTIuN2M5LjggMTQgMTIuNyAzMS45IDcuNSA0OC41Yy01LjkgMTkuNC0yMiAzNC4xLTQxLjkgMzguM2wtMS40LTM0LjMgMTIuNiA4LjZjLjYgLjQgMS41IC42IDIuMyAuNmMxLjUgMCAyLjctLjggMy41LTJzLjYtMi44LS4xLTRMMjYwIDIyNS40bDE4LTMuNmMxLjgtLjQgMy4xLTIuMSAzLjEtNHMtMS40LTMuNS0zLjEtMy45bC0xOC0zLjcgOC41LTE0LjNjLjgtMS4yIC45LTIuOSAuMS00LjFzLTItMi0zLjUtMmwtLjEgMGMtLjcgLjEtMS41IC4zLTIuMSAuN2wtMTQuMSA5LjZMMjQ0IDg3LjljLS4xLTIuMi0xLjktMy45LTQtMy45cy0zLjkgMS42LTQgMy45bC00LjYgMTEwLjgtMTItOC4xYy0xLjUtMS4xLTMuNi0uOS01IC40cy0xLjYgMy40LS44IDVsOC42IDE0LjMtMTggMy43Yy0xLjggLjQtMy4xIDItMy4xIDMuOXMxLjQgMy42IDMuMSA0bDE4IDMuOC04LjYgMTQuMmMtLjIgLjYtLjUgMS40LS41IDJjMCAxLjEgLjUgMi4xIDEuMiAzYy44IC42IDEuOCAxIDIuOCAxYy43IDAgMS42LS4yIDIuMi0uNmwxMC40LTcuMS0xLjQgMzIuOGMtMTkuOS00LjEtMzYtMTguOS00MS45LTM4LjNjLTUuMS0xNi42LTIuMi0zNC40IDcuNi00OC41YzIuNy0zLjkgMi4zLTkuMy0uOS0xMi43Yy0xNi42LTE3LjUtMjEuNi00My4xLTEzLjEtNjUuNWMxLjItMy4xLTIuMy02LjQtNS00LjVjLTE1LjMgMTAuOS0yNy42IDI1LjYtMzUuOCA0Mi42bDI2LjQgMjYuNWMzLjEgMy4xIDMuMSA4LjEgMCAxMS4ycy04LjEgMy4xLTExLjIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDQzIDQzIDAgOTYgMEgzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NCA5NmMtNTMgMC05Ni00My05Ni05NlY5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MlYzODRIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0yMDggMTEydjQ4SDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIyNGg0OGM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyMjRjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va09wZW5SZWFkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDk2YTk2IDk2IDAgMSAxIDE5MiAwQTk2IDk2IDAgMSAxIDE2MCA5NnptODAgMTUyVjUxMmwtNDguNC0yNC4yYy0yMC45LTEwLjQtNDMuNS0xNy02Ni44LTE5LjNsLTk2LTkuNkMxMi41IDQ1Ny4yIDAgNDQzLjUgMCA0MjdWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDYyLjNjNjMuNiAwIDEyNS42IDE5LjYgMTc3LjcgNTZ6bTMyIDI2NFYyNDhjNTIuMS0zNi40IDExNC4xLTU2IDE3Ny43LTU2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0MjdjMCAxNi40LTEyLjUgMzAuMi0yOC44IDMxLjhsLTk2IDkuNmMtMjMuMiAyLjMtNDUuOSA4LjktNjYuOCAxOS4zTDI3MiA1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OS42IDQ3MS41YzEwLjggMy44IDIyLjQtNC4xIDIyLjQtMTUuNVY3OC42YzAtNC4yLTEuNi04LjQtNS0xMUMyNDcuNCA1MiAyMDIuNCAzMiAxNDQgMzJDOTMuNSAzMiA0Ni4zIDQ1LjMgMTguMSA1Ni4xQzYuOCA2MC41IDAgNzEuNyAwIDgzLjhWNDU0LjFjMCAxMS45IDEyLjggMjAuMiAyNC4xIDE2LjVDNTUuNiA0NjAuMSAxMDUuNSA0NDggMTQ0IDQ0OGMzMy45IDAgNzkgMTQgMTA1LjYgMjMuNXptNzYuOCAwQzM1MyA0NjIgMzk4LjEgNDQ4IDQzMiA0NDhjMzguNSAwIDg4LjQgMTIuMSAxMTkuOSAyMi42YzExLjMgMy44IDI0LjEtNC42IDI0LjEtMTYuNVY4My44YzAtMTIuMS02LjgtMjMuMy0xOC4xLTI3LjZDNTI5LjcgNDUuMyA0ODIuNSAzMiA0MzIgMzJjLTU4LjQgMC0xMDMuNCAyMC0xMjMgMzUuNmMtMy4zIDIuNi01IDYuOC01IDExVjQ1NmMwIDExLjQgMTEuNyAxOS4zIDIyLjQgMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1F1cmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAwYzUzIDAgOTYgNDMgOTYgOTZWNDE2YzAgNTMtNDMgOTYtOTYgOTZINjQgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMkMwIDE0LjMgMTQuMyAwIDMyIDBINjQgMzUyem0wIDM4NEg5NnY2NEgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJ6TTI3NC4xIDE1MC4ybC04LjkgMjEuNC0yMy4xIDEuOWMtNS43IC41LTggNy41LTMuNyAxMS4yTDI1NiAxOTkuOGwtNS40IDIyLjZjLTEuMyA1LjUgNC43IDkuOSA5LjYgNi45TDI4MCAyMTcuMmwxOS44IDEyLjFjNC45IDMgMTAuOS0xLjQgOS42LTYuOUwzMDQgMTk5LjhsMTcuNi0xNS4xYzQuMy0zLjcgMi0xMC44LTMuNy0xMS4ybC0yMy4xLTEuOS04LjktMjEuNGMtMi4yLTUuMy05LjYtNS4zLTExLjggMHpNOTYgMTkyYzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4YzI1LjYgMCA0OS41LTcuNSA2OS41LTIwLjVjMy4yLTIuMSA0LjUtNi4yIDMuMS05LjdzLTUuMi01LjYtOS00LjhjLTYuMSAxLjItMTIuNSAxLjktMTkgMS45Yy01Mi40IDAtOTQuOS00Mi41LTk0LjktOTQuOXM0Mi41LTk0LjkgOTQuOS05NC45YzYuNSAwIDEyLjggLjcgMTkgMS45YzMuOCAuOCA3LjUtMS4zIDktNC44cy4yLTcuNi0zLjEtOS43QzI3My41IDcxLjUgMjQ5LjYgNjQgMjI0IDY0QzE1My4zIDY0IDk2IDEyMS4zIDk2IDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1NrdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA0MyA0MyAwIDk2IDBIMzg0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODQgOTZjLTUzIDAtOTYtNDMtOTYtOTZWOTZ6TTY0IDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzNTJWMzg0SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzIwIDExMmMwLTM1LjMtMzUuOC02NC04MC02NHMtODAgMjguNy04MCA2NGMwIDIwLjkgMTIuNiAzOS41IDMyIDUxLjJWMTc2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMTYzLjJjMTkuNC0xMS43IDMyLTMwLjMgMzItNTEuMnpNMjA4IDk2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptNDggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpNMTM0LjMgMjA5LjNjLTguMS0zLjUtMTcuNSAuMy0yMSA4LjRzLjMgMTcuNSA4LjQgMjFMMTk5LjQgMjcybC03Ny43IDMzLjNjLTguMSAzLjUtMTEuOSAxMi45LTguNCAyMXMxMi45IDExLjkgMjEgOC40TDI0MCAyODkuNGwxMDUuNyA0NS4zYzguMSAzLjUgMTcuNS0uMyAyMS04LjRzLS4zLTE3LjUtOC40LTIxTDI4MC42IDI3Mmw3Ny43LTMzLjNjOC4xLTMuNSAxMS45LTEyLjkgOC40LTIxcy0xMi45LTExLjktMjEtOC40TDI0MCAyNTQuNiAxMzQuMyAyMDkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1RhbmFraCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMGM1MyAwIDk2IDQzIDk2IDk2VjQxNmMwIDUzLTQzIDk2LTk2IDk2SDY0IDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDY0IDM1MnptMCAzODRIOTZ2NjRIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyek0xMzguNyAyMDhsMTMuOSAyNEgxMjQuOWwxMy45LTI0em0tMTMuOS0yNEw5Ny4xIDIzMmMtNi4yIDEwLjcgMS41IDI0IDEzLjkgMjRoNTUuNGwyNy43IDQ4YzYuMiAxMC43IDIxLjYgMTAuNyAyNy43IDBsMjcuNy00OEgzMDVjMTIuMyAwIDIwLTEzLjMgMTMuOS0yNGwtMjcuNy00OCAyNy43LTQ4YzYuMi0xMC43LTEuNS0yNC0xMy45LTI0SDI0OS42TDIyMS45IDY0Yy02LjItMTAuNy0yMS42LTEwLjctMjcuNyAwbC0yNy43IDQ4SDExMWMtMTIuMyAwLTIwIDEzLjMtMTMuOSAyNGwyNy43IDQ4em0yNy43IDBsMjcuNy00OGg1NS40bDI3LjcgNDgtMjcuNyA0OEgxODAuM2wtMjcuNy00OHptMC00OGwtMTMuOSAyNC0xMy45LTI0aDI3Ljd6bTQxLjYtMjRMMjA4IDg4bDEzLjkgMjRIMTk0LjF6bTY5LjMgMjRoMjcuN2wtMTMuOSAyNC0xMy45LTI0em0xMy45IDcybDEzLjkgMjRIMjYzLjRsMTMuOS0yNHptLTU1LjQgNDhMMjA4IDI4MGwtMTMuOS0yNGgyNy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNDMgMCAwIDQzIDAgOTZWNDE2YzAgNTMgNDMgOTYgOTYgOTZIMzg0aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjM4NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzODQgOTZ6bTAgMzg0SDM1MnY2NEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMzItMjQwYzAtOC44IDcuMi0xNiAxNi0xNkgzMzZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTQ0Yy04LjggMC0xNi03LjItMTYtMTZ6bTE2IDQ4SDMzNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhWNDg3LjdDMCA1MDEuMSAxMC45IDUxMiAyNC4zIDUxMmM1IDAgOS45LTEuNSAxNC00LjRMMTkyIDQwMCAzNDUuNyA1MDcuNmM0LjEgMi45IDkgNC40IDE0IDQuNGMxMy40IDAgMjQuMy0xMC45IDI0LjMtMjQuM1Y0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvcmRlckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgOTZWMjI0SDI1NlY5NkgzODR6bTAgMTkyVjQxNkgyNTZWMjg4SDM4NHpNMTkyIDIyNEg2NFY5NkgxOTJWMjI0ek02NCAyODhIMTkyVjQxNkg2NFYyODh6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9yZGVyTm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0ODBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em05Ni02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAtMzg0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMCAyNTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek0zMjAgNDE2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMC0zMjBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0wIDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTIyNCA0ODBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0wLTQ0OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAgMjU2YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpNNDE2IDQxNmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAtMzg0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMzIgOTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek00MTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMzIgMjg4YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptMTkyIDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTkyIDY0YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpNMzIgMzIwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNNDE2IDE5MmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTMyIDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTE5MiA2NGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvcmRlclRvcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMzNmMwLTguOCA3LjItMTYgMTYtMTZsMzM2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMODAgMzJDMzUuOCAzMiAwIDY3LjggMCAxMTJMMCA0NDh6bTE2MCAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTE5MiAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bS05NiAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTE5MiAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTQxNiAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0wIDMyYTMyIDMyIDAgMSAwIDAgNjQgMzIgMzIgMCAxIDAgMC02NHptMC0xMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JlSG9sZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMjk2LjZjLTE5LjEgMTEuMS0zMiAzMS43LTMyIDU1LjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NGMwLTIzLjctMTIuOS00NC40LTMyLTU1LjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQ4IDEyOGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQ2NGMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlYzNTJjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3R0bGVEcm9wbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDODIuNyAwIDcyIDEwLjcgNzIgMjRzMTAuNyAyNCAyNCAyNGM0LjQgMCA4IDMuNiA4IDh2NjQuOWMwIDEyLjItNy4yIDIzLjEtMTcuMiAzMC4xQzUzLjcgMTc0LjEgMzIgMjEyLjUgMzIgMjU2VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2YzAtNDMuNS0yMS43LTgxLjktNTQuOC0xMDVjLTEwLTctMTcuMi0xNy45LTE3LjItMzAuMVY1NmMwLTQuNCAzLjYtOCA4LThjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTggMCAwIDAgMCAwSDEwNGwwIDAgMCAwTDk2IDB6bTY0IDM4MmMtMjYuNSAwLTQ4LTIwLjEtNDgtNDVjMC0xNi44IDIyLjEtNDguMSAzNi4zLTY2LjRjNi03LjggMTcuNS03LjggMjMuNSAwQzE4NS45IDI4OC45IDIwOCAzMjAuMiAyMDggMzM3YzAgMjQuOS0yMS41IDQ1LTQ4IDQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3R0bGVXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAgMGw4MCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgNDBMOTYgNjRsMC00MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMzIgMTY3LjVjMC0xOS41IDEwLTM3LjYgMjYuNi00Ny45bDE1LjgtOS45Qzg4LjcgMTAwLjcgMTA1LjIgOTYgMTIyLjEgOTZsNzUuOCAwYzE2LjkgMCAzMy40IDQuNyA0Ny43IDEzLjdsMTUuOCA5LjlDMjc4IDEyOS45IDI4OCAxNDggMjg4IDE2Ny41YzAgMTctNy41IDMyLjMtMTkuNCA0Mi42QzI4MC42IDIyMS43IDI4OCAyMzggMjg4IDI1NmMwIDE5LjEtOC40IDM2LjMtMjEuNyA0OGMxMy4zIDExLjcgMjEuNyAyOC45IDIxLjcgNDhzLTguNCAzNi4zLTIxLjcgNDhjMTMuMyAxMS43IDIxLjcgMjguOSAyMS43IDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDk2IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0xOS4xIDguNC0zNi4zIDIxLjctNDhDNDAuNCAzODguMyAzMiAzNzEuMSAzMiAzNTJzOC40LTM2LjMgMjEuNy00OEM0MC40IDI5Mi4zIDMyIDI3NS4xIDMyIDI1NmMwLTE4IDcuNC0zNC4zIDE5LjQtNDUuOUMzOS41IDE5OS43IDMyIDE4NC41IDMyIDE2Ny41ek05NiAyNDBjMCA4LjggNy4yIDE2IDE2IDE2bDk2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYgMTEyYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDk2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvd2xGb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0Yy41IDAgMS4xIDAgMS42IDBDNzMgOTEuNSAxMDUuMyA2NCAxNDQgNjRjMTUgMCAyOSA0LjEgNDAuOSAxMS4yQzE5OC4yIDQ5LjYgMjI1LjEgMzIgMjU2IDMyczU3LjggMTcuNiA3MS4xIDQzLjJDMzM5IDY4LjEgMzUzIDY0IDM2OCA2NGMzOC43IDAgNzEgMjcuNSA3OC40IDY0Yy41IDAgMS4xIDAgMS42IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAxMS43LTMuMSAyMi42LTguNiAzMkg4LjZDMy4xIDIxNC42IDAgMjAzLjcgMCAxOTJ6bTAgOTEuNEMwIDI2OC4zIDEyLjMgMjU2IDI3LjQgMjU2SDQ4NC42YzE1LjEgMCAyNy40IDEyLjMgMjcuNCAyNy40YzAgNzAuNS00NC40IDEzMC43LTEwNi43IDE1NC4xTDQwMy41IDQ1MmMtMiAxNi0xNS42IDI4LTMxLjggMjhIMTQwLjJjLTE2LjEgMC0yOS44LTEyLTMxLjgtMjhsLTEuOC0xNC40QzQ0LjQgNDE0LjEgMCAzNTMuOSAwIDI4My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3dsUmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMjQgNDhoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0ek01NiAxNzZINzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6TTAgMjgzLjRDMCAyNjguMyAxMi4zIDI1NiAyNy40IDI1Nkg0ODQuNmMxNS4xIDAgMjcuNCAxMi4zIDI3LjQgMjcuNGMwIDcwLjUtNDQuNCAxMzAuNy0xMDYuNyAxNTQuMUw0MDMuNSA0NTJjLTIgMTYtMTUuNiAyOC0zMS44IDI4SDE0MC4yYy0xNi4xIDAtMjkuOC0xMi0zMS44LTI4bC0xLjgtMTQuNEM0NC40IDQxNC4xIDAgMzUzLjkgMCAyODMuNHpNMjI0IDIwMGMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNDhjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tOTYgMGMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxNTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tMjQtOTZoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0em0yMTYgOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMzQ0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptLTI0LTk2aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI5NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMTIwIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDQ0MGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bS0yNC05NmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzOTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6TTI5NiAzMmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyOTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvd2xpbmdCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yNDAgODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0yMDggMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bS02NC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJveEFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgMTI4IDAgMTEzLjcgMCA5NlY2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnptMCAxMjhINDgwVjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwem0xMjggODBjMCA4LjggNy4yIDE2IDE2IDE2SDMzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94T3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OC45IDQyLjFjMy02LjEgOS42LTkuNiAxNi4zLTguN0wzMjAgNjQgNTY0LjggMzMuNGM2LjctLjggMTMuMyAyLjcgMTYuMyA4LjdsNDEuNyA4My40YzkgMTcuOS0uNiAzOS42LTE5LjggNDUuMUw0MzkuNiAyMTcuM2MtMTMuOSA0LTI4LjgtMS45LTM2LjItMTQuM0wzMjAgNjQgMjM2LjYgMjAzYy03LjQgMTIuNC0yMi4zIDE4LjMtMzYuMiAxNC4zTDM3LjEgMTcwLjZjLTE5LjMtNS41LTI4LjgtMjcuMi0xOS44LTQ1LjFMNTguOSA0Mi4xek0zMjEuMSAxMjhsNTQuOSA5MS40YzE0LjkgMjQuOCA0NC42IDM2LjYgNzIuNSAyOC42TDU3NiAyMTEuNnYxNjdjMCAyMi0xNSA0MS4yLTM2LjQgNDYuNmwtMjA0LjEgNTFjLTEwLjIgMi42LTIwLjkgMi42LTMxIDBsLTIwNC4xLTUxQzc5IDQxOS43IDY0IDQwMC41IDY0IDM3OC41di0xNjdMMTkxLjYgMjQ4YzI3LjggOCA1Ny42LTMuOCA3Mi41LTI4LjZMMzE4LjkgMTI4aDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94VGlzc3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkyLjUgMEgyMDhjNDAgMCA1MiAyNCA2NCA0OHMyNCA0OCA2NCA0OGg4NS4yQzQzNiA5NiA0NDggMTA4IDQ0OCAxMjIuOGMwIDMuNC0uNyA2LjgtMS45IDEwTDQwOS42IDIyNCAzODQgMjg4SDEyOGwtMTYtNjRMNjQuOSAzNS40Yy0uNi0yLjMtLjktNC42LS45LTYuOUM2NCAxMi44IDc2LjggMCA5Mi41IDB6TTc5IDIyNGwxNiA2NEg4MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg0OEgzODRoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINDE4LjVsMjUuNi02NEg0NjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMzg0SDBWMjcyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDc5ek0wIDQxNkg1MTJ2NDhjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwLjcgNTguNUwwIDE2MEgyMDhWMzJIOTMuN0M3NS41IDMyIDU4LjkgNDIuMyA1MC43IDU4LjV6TTI0MCAxNjBINDQ4TDM5Ny4zIDU4LjVDMzg5LjEgNDIuMyAzNzIuNSAzMiAzNTQuMyAzMkgyNDBWMTYwem0yMDggMzJIMFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94ZXNQYWNraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGMwLTI2LjUgMjEuNS00OCA0OC00OEg1OTJjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDM4MS4zYzEuOC01IDIuNy0xMC40IDIuNy0xNlYyNTMuM2MxOC42LTYuNiAzMi0yNC40IDMyLTQ1LjNWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI1NlY0OHpNNTcxLjMgMzQ3LjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTY0LTY0Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGwtNjQgNjRjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0ODAgMzEwLjZWNDMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzEwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwek0wIDE3NmMwLTguOCA3LjItMTYgMTYtMTZIMzY4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZ6bTM1MiA4MFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI1NkgzNTJ6TTE0NCAzMjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hlc1N0YWNrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDBIMjA4Yy0yNi41IDAtNDggMjEuNS00OCA0OFYxNjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzUyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMyOFY4MGMwIDguOC03LjIgMTYtMTYgMTZIMjY0Yy04LjggMC0xNi03LjItMTYtMTZWMHpNNjQgMjU2Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjI0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjMyMGMwLTM1LjMtMjguNy02NC02NC02NEgxODR2ODBjMCA4LjgtNy4yIDE2LTE2IDE2SDEyMGMtOC44IDAtMTYtNy4yLTE2LTE2VjI1Nkg2NHpNMzUyIDUxMkg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDQ3MnY4MGMwIDguOC03LjIgMTYtMTYgMTZINDA4Yy04LjggMC0xNi03LjItMTYtMTZWMjU2SDM1MmMtMTUgMC0yOC44IDUuMS0zOS43IDEzLjhjNC45IDEwLjQgNy43IDIyIDcuNyAzNC4yVjQ2NGMwIDEyLjItMi44IDIzLjgtNy43IDM0LjJDMzIzLjIgNTA2LjkgMzM3IDUxMiAzNTIgNTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmFpbGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgMCA5NnpNMjI0IDI3MmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTAtODBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTgwIDQxNmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwek0wIDQxNmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSAwIDQxNnptMjQwIDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptLTgwIDBhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek02NCAxOTJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTIyNCAzMmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMzUyIDk2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDM1MiA5NnptMjQwIDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptLTgwIDBhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgNTEyIDk2em02NCAxNzZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0wLTgwYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4em0xNiAyMjRhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptLTgwIDBhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek00MTYgMjcyYTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptMC04MGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptMTYgMjI0YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bS04MCAwYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDBjMzAuOSAwIDU2IDI1LjEgNTYgNTZWNDU2YzAgMzAuOS0yNS4xIDU2LTU2IDU2Yy0yOC45IDAtNTIuNy0yMS45LTU1LjctNTAuMWMtNS4yIDEuNC0xMC43IDIuMS0xNi4zIDIuMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC03LjQgMS4zLTE0LjYgMy42LTIxLjJDMjEuNCAzNjcuNCAwIDMzOC4yIDAgMzA0YzAtMzEuOSAxOC43LTU5LjUgNDUuOC03Mi4zQzM3LjEgMjIwLjggMzIgMjA3IDMyIDE5MmMwLTMwLjcgMjEuNi01Ni4zIDUwLjQtNjIuNkM4MC44IDEyMy45IDgwIDExOCA4MCAxMTJjMC0yOS45IDIwLjYtNTUuMSA0OC4zLTYyLjFDMTMxLjMgMjEuOSAxNTUuMSAwIDE4NCAwek0zMjggMGMyOC45IDAgNTIuNiAyMS45IDU1LjcgNDkuOWMyNy44IDcgNDguMyAzMi4xIDQ4LjMgNjIuMWMwIDYtLjggMTEuOS0yLjQgMTcuNGMyOC44IDYuMiA1MC40IDMxLjkgNTAuNCA2Mi42YzAgMTUtNS4xIDI4LjgtMTMuOCAzOS43QzQ5My4zIDI0NC41IDUxMiAyNzIuMSA1MTIgMzA0YzAgMzQuMi0yMS40IDYzLjQtNTEuNiA3NC44YzIuMyA2LjYgMy42IDEzLjggMy42IDIxLjJjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTUuNiAwLTExLjEtLjctMTYuMy0yLjFjLTMgMjguMi0yNi44IDUwLjEtNTUuNyA1MC4xYy0zMC45IDAtNTYtMjUuMS01Ni01NlY1NmMwLTMwLjkgMjUuMS01NiA1Ni01NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhemlsaWFuUmVhbFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNTAuMmMxMi41IDIuMyAyNC43IDYuNCAzNi4yIDEyLjFsMTAuMSA1LjFjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOXMtMjcuMSAyMi4yLTQyLjkgMTQuM2wtMTAuMi01LjFjLTkuOS01LTIwLjktNy41LTMyLTcuNWgtMS43Yy0yOS44IDAtNTMuOSAyNC4xLTUzLjkgNTMuOWMwIDIyIDEzLjQgNDEuOCAzMy45IDUwbDUyIDIwLjhjNDQuNyAxNy45IDc0LjEgNjEuMiA3NC4xIDEwOS40djMuNGMwIDUxLjItMzMuNiA5NC42LTgwIDEwOS4yVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NjAuNmMtMTUtMy41LTI5LjQtOS43LTQyLjMtMTguM2wtMjMuNC0xNS42Yy0xNC43LTkuOC0xOC43LTI5LjctOC45LTQ0LjRzMjkuNy0xOC43IDQ0LjQtOC45TDM2MS4yIDM4OWMxMC44IDcuMiAyMy40IDExIDM2LjMgMTFjMjcuOSAwIDUwLjUtMjIuNiA1MC41LTUwLjV2LTMuNGMwLTIyLTEzLjQtNDEuOC0zMy45LTUwbC01Mi0yMC44QzMxNy4zIDI1Ny40IDI4OCAyMTQuMSAyODggMTY1LjlDMjg4IDExNCAzMjEuNSA3MCAzNjggNTQuMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmg4MGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NGMwIDU4LjgtMzUuMiAxMDkuMy04NS43IDEzMS43bDUxLjQgMTI4LjRjNi42IDE2LjQtMS40IDM1LTE3LjggNDEuNnMtMzUtMS40LTQxLjYtMTcuOEwxMDYuMyAzMjBINjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI4OCA2NHpNNjQgMjU2aDQ4YzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwSDY0VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJlYWRTbGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTkyIDMyIDAgNjQgMCAxOTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQwMGMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRDNTEyIDY0IDMyMCAzMiAyNTYgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWRnZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NHMxNC4zIDMyIDMyIDMyaDQwdjY0SDMyVjI4OGM1MyAwIDk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2YzYuMyAwIDEyLjQgLjYgMTguMyAxLjdDMzY3LjEgMjMxLjggNDI2LjkgMTkyIDQ5NiAxOTJjNDIuNSAwIDgxLjYgMTUuMSAxMTIgNDAuMlYxNjBINTM2Vjk2aDQwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0ek00ODggOTZ2NjRINDA4Vjk2aDgwek0zNjAgOTZ2NjRIMjgwVjk2aDgwek0yMzIgOTZ2NjRIMTUyVjk2aDgwek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmlkZ2VDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjRzMTQuMyAzMiAzMiAzMmg0MHY2NEgzMlYyODhjNTMgMCA5NiA0MyA5NiA5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzODRjMC01MyA0My05NiA5Ni05NmM2LjMgMCAxMi40IC42IDE4LjMgMS43QzM2Ny4xIDIzMS44IDQyNi45IDE5MiA0OTYgMTkyYzQyLjUgMCA4MS42IDE1LjEgMTEyIDQwLjJWMTYwSDUzNlY5Nmg0MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NHpNNDg4IDk2djY0SDQwOFY5Nmg4MHpNMzYwIDk2djY0SDI4MFY5Nmg4MHpNMjMyIDk2djY0SDE1MlY5Nmg4MHpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZGdlQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0czE0LjMgMzIgMzIgMzJoNDB2NjRIMzJWMjg4YzUzIDAgOTYgNDMgOTYgOTZ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0YzAtNTMgNDMtOTYgOTYtOTZjNi4zIDAgMTIuNCAuNiAxOC4zIDEuN0MzNjcuMSAyMzEuOCA0MjYuOSAxOTIgNDk2IDE5MmM0Mi41IDAgODEuNiAxNS4xIDExMiA0MC4yVjE2MEg1MzZWOTZoNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6TTQ4OCA5NnY2NEg0MDhWOTZoODB6TTM2MCA5NnY2NEgyODBWOTZoODB6TTIzMiA5NnY2NEgxNTJWOTZoODB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmlkZ2VMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDU3NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1MzZ2NjRoLThjLTYxLjkgMC0xMTIgNTAuMS0xMTIgMTEydjI0LjZjLTkuOSA1LjgtMTguMiAxNC4xLTIzLjggMjQuMWMtMTcuNi0yMC00My40LTMyLjctNzIuMi0zMi43Yy01MyAwLTk2IDQzLTk2IDk2djY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg0YzAtNTMtNDMtOTYtOTYtOTZWMTYwaDcyVjk2SDY0QzQ2LjMgOTYgMzIgODEuNyAzMiA2NHpNNDA4IDk2djY0aDgwVjk2SDQwOHptLTQ4IDY0Vjk2SDI4MHY2NGg4MHpNMTUyIDk2djY0aDgwVjk2SDE1MnpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmlkZ2VXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNzguMyAxNC4zIDY0IDMyIDY0SDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnYzNS42YzAgMTUuNy0xMi43IDI4LjQtMjguNCAyOC40Yy0zNy4zIDAtNjcuNiAzMC4yLTY3LjYgNjcuNlYzNTIuNWMtMTIuOSAwLTI1LjggMy45LTM2LjggMTEuN2MtMTggMTIuNC00MC4xIDIwLjMtNTkuMiAyMC4zaDBsMC0uNVYyNTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZWMzg0bDAgLjVjLTE5IDAtNDEuMi03LjktNTkuMS0yMC4zYy0xMS4xLTcuOC0yNC0xMS43LTM2LjktMTEuN1YyMjcuNkM5NiAxOTAuMiA2NS44IDE2MCAyOC40IDE2MEMxMi43IDE2MCAwIDE0Ny4zIDAgMTMxLjZWOTZ6TTMwNi41IDM4OS45QzMyOSA0MDUuNCAzNTYuNSA0MTYgMzg0IDQxNmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA0NjkuNyA0MTcgNDgwIDM4NCA0ODBjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA0MDUuMiAxNjUuMSA0MTYgMTkyIDQxNmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nkg3MnY2NEgwVjI4OGM1MyAwIDk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2VjE2MEg1MDRWOTZoNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6TTQ1NiA5NnY2NEgzNzZWOTZoODB6TTMyOCA5NnY2NEgyNDhWOTZoODB6TTIwMCA5NnY2NEgxMjBWOTZoODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWVmY2FzZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM4NFY1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxODRjLTMwLjkgMC01NiAyNS4xLTU2IDU2em05NiAxNTJjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI4OHY0OGMwIDguOC03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZWMzIwSDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoNDhWMjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmllZmNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwdjk2SDE5MiAzMjAgNTEyVjE2MGMwLTM1LjMtMjguNy02NC02NC02NEgzODRWNTZjMC0zMC45LTI1LjEtNTYtNTYtNTZIMTg0Yy0zMC45IDAtNTYgMjUuMS01NiA1NnpNNTEyIDI4OEgzMjB2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODhIMFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJvb21CYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2Ni42IDkuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTkyIDE5MiAzNC43IDM0LjdjNC4yIDQuMiA2LjYgMTAgNi42IDE2YzAgMTIuNS0xMC4xIDIyLjYtMjIuNiAyMi42SDM2NC4zTDI1NiAyMTEuN1YxODIuNmMwLTEyLjUgMTAuMS0yMi42IDIyLjYtMjIuNmM2IDAgMTEuOCAyLjQgMTYgNi42bDM0LjcgMzQuNyAxOTItMTkyYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwem0tMzQ0IDIyNS41TDM0MS4xIDM1My40YzMuNyA0Mi43LTExLjcgODUuMi00Mi4zIDExNS44QzI3MS40IDQ5Ni42IDIzNC4yIDUxMiAxOTUuNSA1MTJMMjIuMSA1MTJDOS45IDUxMiAwIDUwMi4xIDAgNDg5LjljMC02LjMgMi43LTEyLjMgNy4zLTE2LjVMMTMzLjcgMzU5LjdjNC4yLTMuNy0uNC0xMC40LTUuNC03LjlMNzcuMiAzNzcuNGMtNi4xIDMtMTMuMi0xLjQtMTMuMi04LjJjMC0zMS41IDEyLjUtNjEuNyAzNC44LTg0bDgtOGMzMC42LTMwLjYgNzMuMS00NS45IDExNS44LTQyLjN6TTQ2NCAzNTJhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2Ni42IDU0LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE5MiAxOTItMzQuNy0zNC43Yy00LjItNC4yLTEwLTYuNi0xNi02LjZjLTEyLjUgMC0yMi42IDEwLjEtMjIuNiAyMi42djI5LjFMMzY0LjMgMzIwaDI5LjFjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZjMC02LTIuNC0xMS44LTYuNi0xNmwtMzQuNy0zNC43IDE5Mi0xOTJ6TTM0MS4xIDM1My40TDIyMi42IDIzNC45Yy00Mi43LTMuNy04NS4yIDExLjctMTE1LjggNDIuM2wtOCA4Qzc2LjUgMzA3LjUgNjQgMzM3LjcgNjQgMzY5LjJjMCA2LjggNy4xIDExLjIgMTMuMiA4LjJsNTEuMS0yNS41YzUtMi41IDkuNSA0LjEgNS40IDcuOUw3LjMgNDczLjRDMi43IDQ3Ny42IDAgNDgzLjYgMCA0ODkuOUMwIDUwMi4xIDkuOSA1MTIgMjIuMSA1MTJsMTczLjMgMGMzOC44IDAgNzUuOS0xNS40IDEwMy40LTQyLjhjMzAuNi0zMC42IDQ1LjktNzMuMSA0Mi4zLTExNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuNCA2Yy0xLjUtMy42LTUtNi04LjktNmgtMTljLTMuOSAwLTcuNSAyLjQtOC45IDZMMTA0LjkgNTcuN2MtMy4yIDgtMTQuNiA4LTE3LjggMEw2Ni40IDZjLTEuNS0zLjYtNS02LTguOS02SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OFYyMjR2MjIuNFYyNTZIOS42IDM3NC40IDM4NHYtOS42VjIyNCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEgyMzAuNWMtMy45IDAtNy41IDIuNC04LjkgNkwyMDAuOSA1Ny43Yy0zLjIgOC0xNC42IDgtMTcuOCAwTDE2Mi40IDZ6TTAgMjg4djMyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDY0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRWMzg0aDY0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjI4OEgwek0xOTIgNDMyYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDE1MnY4SDQ4di04QzQ4IDY4LjEgMTE2LjEgMCAyMDAgMGg0OGM4My45IDAgMTUyIDY4LjEgMTUyIDE1MnY4SDM1MnYtOGMwLTU3LjQtNDYuNi0xMDQtMTA0LTEwNEgyMDBDMTQyLjYgNDggOTYgOTQuNiA5NiAxNTJ6TTAgMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmgtNS4xTDM4OC41IDQ2OWMtMi42IDI0LjQtMjMuMiA0My00Ny43IDQzSDEwNy4yYy0yNC42IDAtNDUuMi0xOC41LTQ3LjctNDNMMzcuMSAyNTZIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWdTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ3Ny40IDM0OC45YzEuNy05LjQgMi42LTE5IDIuNi0yOC45aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ3OS43Yy0xLjEtMTQuMS01LTI3LjUtMTEuMS0zOS41Yy43LS42IDEuNC0xLjIgMi4xLTEuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLS43IC43LTEuMyAxLjQtMS45IDIuMUM0MDkuMiAxNjQuMSAzOTMuMSAxNjAgMzc2IDE2MEgyNjRjLTguMyAwLTE2LjMgMS0yNCAyLjhMMzguOCA1LjF6bTM5MiA0MzAuM0wzMzYgMzYwLjdWNDc5LjJjMzYuNi0zLjYgNjkuNy0xOS42IDk0LjgtNDMuOHpNMTY2LjcgMjI3LjNjLTMuNCA5LTUuNiAxOC43LTYuNCAyOC43SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDY0YzAgMjQuNiA1LjUgNDcuOCAxNS40IDY4LjZjLTIuMiAxLjMtNC4yIDIuOS02IDQuOGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjMuMS02My4xYzI0LjUgMjEuOCA1NS44IDM2LjIgOTAuMyAzOS42VjMzNS41TDE2Ni43IDIyNy4zek0zMjAgMGMtNTMgMC05NiA0My05NiA5NnYzLjZjMCAxNS43IDEyLjcgMjguNCAyOC40IDI4LjRIMzg3LjZjMTUuNyAwIDI4LjQtMTIuNyAyOC40LTI4LjRWOTZjMC01My00My05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzUzIDAgOTYgNDMgOTYgOTZ2My42YzAgMTUuNy0xMi43IDI4LjQtMjguNCAyOC40SDE4OC40Yy0xNS43IDAtMjguNC0xMi43LTI4LjQtMjguNFY5NmMwLTUzIDQzLTk2IDk2LTk2ek00MS40IDEwNS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0Yy43IC43IDEuMyAxLjQgMS45IDIuMWMxNC4yLTcuMyAzMC40LTExLjQgNDcuNS0xMS40SDMxMmMxNy4xIDAgMzMuMiA0LjEgNDcuNSAxMS40Yy42LS43IDEuMi0xLjQgMS45LTIuMWw2NC02NGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC02NCA2NGMtLjcgLjctMS40IDEuMy0yLjEgMS45YzYuMiAxMiAxMC4xIDI1LjMgMTEuMSAzOS41SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MTZjMCAyNC42LTUuNSA0Ny44LTE1LjQgNjguNmMyLjIgMS4zIDQuMiAyLjkgNiA0LjhsNjQgNjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTYzLjEtNjMuMWMtMjQuNSAyMS44LTU1LjggMzYuMi05MC4zIDM5LjZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ3OS4yYy0zNC41LTMuNC02NS44LTE3LjgtOTAuMy0zOS42TDg2LjYgNTAyLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDY0LTY0YzEuOS0xLjkgMy45LTMuNCA2LTQuOEMxMDEuNSAzNjcuOCA5NiAzNDQuNiA5NiAzMjBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTYuM2MxLjEtMTQuMSA1LTI3LjUgMTEuMS0zOS41Yy0uNy0uNi0xLjQtMS4yLTIuMS0xLjlsLTY0LTY0Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjQuNSAxMDcuNGwzMy40LTczLjVjNS41LTEyLjEgLjEtMjYuMy0xMS45LTMxLjhzLTI2LjMtLjEtMzEuOCAxMS45TDEyOCA3MS43IDEwMS45IDE0LjFDOTYuNCAyIDgyLjEtMy4zIDcwLjEgMi4xUzUyLjcgMjEuOSA1OC4xIDMzLjlsMzMuNCA3My41Yy0xMC4yIDcuMS0xOC4yIDE3LTIyLjkgMjguNmgtMTdsLTQuMS0yMC43Yy0yLjYtMTMtMTUuMi0yMS40LTI4LjItMTguOFMtMi4xIDExMS43IC41IDEyNC43bDggNDBDMTAuNyAxNzUuOSAyMC42IDE4NCAzMiAxODRINjR2MjMuM2wtMzcuOCA5LjVjLTkuNSAyLjQtMTYuNiAxMC4yLTE3LjkgMTkuOWwtOCA1NmMtMS45IDEzLjEgNy4yIDI1LjMgMjAuNCAyNy4yczI1LjMtNy4yIDI3LjItMjAuNGw1LjctNDAgMTguNC00LjZDODIuNyAyNzQuNiAxMDMuOCAyODggMTI4IDI4OHM0NS4zLTEzLjQgNTYuMS0zMy4ybDE4LjQgNC42IDUuNyA0MGMxLjkgMTMuMSAxNCAyMi4yIDI3LjIgMjAuNHMyMi4yLTE0IDIwLjQtMjcuMmwtOC01NmMtMS40LTkuNy04LjUtMTcuNS0xNy45LTE5LjlMMTkyIDIwNy4zVjE4NGgzMmMxMS40IDAgMjEuMy04LjEgMjMuNS0xOS4zbDgtNDBjMi42LTEzLTUuOC0yNS42LTE4LjgtMjguMnMtMjUuNiA1LjgtMjguMiAxOC44TDIwNC4zIDEzNmgtMTdjLTQuNy0xMS42LTEyLjctMjEuNS0yMi45LTI4LjZ6TTQ5NiAyODYuNWw2NS42LTQ3YzEwLjgtNy43IDEzLjMtMjIuNyA1LjYtMzMuNXMtMjIuNy0xMy4zLTMzLjUtNS42bC01MS40IDM2LjggNi4xLTYyLjljMS4zLTEzLjItOC40LTI0LjktMjEuNi0yNi4ycy0yNC45IDguNC0yNi4yIDIxLjZMNDMyLjggMjUwYy0xMi4zIDEtMjQuMiA1LjYtMzQuMSAxMy4zTDM4NCAyNTQuOGw2LjgtMjBjNC4yLTEyLjYtMi41LTI2LjItMTUtMzAuNHMtMjYuMiAyLjUtMzAuNCAxNWwtMTMuMSAzOC42Yy0zLjcgMTAuOCAuOCAyMi44IDEwLjcgMjguNWwyNy43IDE2TDM1OSAzMjIuNyAzMjEuNSAzMTJjLTkuNC0yLjctMTkuNSAuNi0yNS41IDguM2wtMzQuOSA0NC41Yy04LjIgMTAuNC02LjQgMjUuNSA0LjEgMzMuN3MyNS41IDYuNCAzMy43LTQuMWwyNS0zMS44IDE4LjIgNS4yYy0uNSAyMi42IDExIDQ0LjcgMzIgNTYuOHM0NS45IDExIDY1LjItLjdsMTMuNiAxMy4yLTE1LjEgMzcuNWMtNC45IDEyLjMgMSAyNi4zIDEzLjMgMzEuMnMyNi4zLTEgMzEuMi0xMy4zTDUwMy41IDQ0MGMzLjYtOS4xIDEuNC0xOS40LTUuNi0yNi4ybC0yOC0yNy4xIDExLjYtMjAuMSAyNy43IDE2YzkuOSA1LjcgMjIuNSAzLjcgMzAtNC45TDU2Ni4yIDM0N2M4LjctMTAgNy44LTI1LjEtMi4yLTMzLjlzLTI1LjEtNy44LTMzLjkgMi4ybC0xMy45IDE1LjktMTQuNy04LjVjMS43LTEyLjQtLjItMjUtNS41LTM2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nQ2lyY2xlQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEgzMzZjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMjMyLjJjLTM5LjEgMzIuMy02NCA4MS4xLTY0IDEzNS44YzAgNDkuNSAyMC40IDk0LjIgNTMuMyAxMjYuMkMzNjQuNSA1MDUuMSAzNTEuMSA1MTIgMzM2IDUxMkgyNDBWNDMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djgwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OHpNODAgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDgwem04MCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZ6bTExMi0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJ6TTY0IDExMnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTc2IDk2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDE3NnptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2em05NiAyNTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMTQwLjctNjcuM2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZMNTIxLjQgMzUySDQzMmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4OS40bC0yOC43IDI4LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw1Ni01NmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNTYtNTZjLTYuMi02LjItMTYuNC02LjItMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ0NpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMxNS4xIDAgMjguNS02LjkgMzcuMy0xNy44QzM0MC40IDQ2Mi4yIDMyMCA0MTcuNSAzMjAgMzY4YzAtNTQuNyAyNC45LTEwMy41IDY0LTEzNS44VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNODAgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMnpNMjcyIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMTUuMSAwIDI4LjUtNi45IDM3LjMtMTcuOEMzNDAuNCA0NjIuMiAzMjAgNDE3LjUgMzIwIDM2OGMwLTU0LjcgMjQuOS0xMDMuNSA2NC0xMzUuOFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djgwaDk2YzE1LjEgMCAyOC41LTYuOSAzNy4zLTE3LjhDMzQwLjQgNDYyLjIgMzIwIDQxNy41IDMyMCAzNjhjMC01NC43IDI0LjktMTAzLjUgNjQtMTM1LjhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek04MCA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTEyek0yNzIgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2ek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w1MTguNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdDb2x1bW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0My40IDIuNmwtMjI0IDk2Yy0xNCA2LTIxLjggMjEtMTguNyAzNS44UzE2LjggMTYwIDMyIDE2MHY4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQ1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtOGMxNS4yIDAgMjguMy0xMC43IDMxLjMtMjUuNnMtNC44LTI5LjktMTguNy0zNS44bC0yMjQtOTZjLTgtMy40LTE3LjItMy40LTI1LjIgMHpNMTI4IDIyNEg2NFY0MjAuM2MtLjYgLjMtMS4yIC43LTEuOCAxLjFsLTQ4IDMyYy0xMS43IDcuOC0xNyAyMi40LTEyLjkgMzUuOVMxNy45IDUxMiAzMiA1MTJINDgwYzE0LjEgMCAyNi41LTkuMiAzMC42LTIyLjdzLTEuMS0yOC4xLTEyLjktMzUuOWwtNDgtMzJjLS42LS40LTEuMi0uNy0xLjgtMS4xVjIyNEgzODRWNDE2SDM0NFYyMjRIMjgwVjQxNkgyMzJWMjI0SDE2OFY0MTZIMTI4VjIyNHpNMjU2IDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ0OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY1MTJoNjRWMTkySDYyNGM4LjggMCAxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2SDQ4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg4OC42Yy01LjQtOS40LTguNi0yMC4zLTguNi0zMlYzNTJjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjI3MmMwLTMwLjUgMTIuMi01OC4yIDMyLTc4LjRWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek04MCA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTEyek0yNzIgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2ek00NjQgMjQwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4SDQzMlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMnY0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJWMjcyYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ05nbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek0xNjggNjRoNDhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTg0djY0aDE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0SDE3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWODBjMC04LjggNy4yLTE2IDE2LTE2ek0zMDQgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZ6bS00OCAxNmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjExMnpNNjEuMyA3MS4xbDM0LjcgNTJWODBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40TDY0IDEzMi44VjE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY4MGMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFYyMDdsLTQyLjQgMTdIMzA0IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djMyIDI0LjJWMzA0YzAgLjkgLjEgMS43IC4yIDIuNmMyLjMgNTguMSAyNC4xIDE0NC44IDk4LjcgMjAxLjVjLTUuOCAyLjUtMTIuMiAzLjktMTguOSAzLjlIMjQwVjQzMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTgwIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg4MHptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2ek02NCAxMTJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6TTE3NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZ6bTgwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnpNNDIzLjEgMjI1LjdjNS43LTIuMyAxMi4xLTIuMyAxNy44IDBsMTIwIDQ4QzU3MCAyNzcuNCA1NzYgMjg2LjIgNTc2IDI5NmMwIDYzLjMtMjUuOSAxNjguOC0xMzQuOCAyMTQuMmMtNS45IDIuNS0xMi42IDIuNS0xOC41IDBDMzEzLjkgNDY0LjggMjg4IDM1OS4zIDI4OCAyOTZjMC05LjggNi0xOC42IDE1LjEtMjIuM2wxMjAtNDh6TTUyNy40IDMxMkw0MzIgMjczLjhWNDYxLjdjNjguMi0zMyA5MS41LTk5IDk1LjQtMTQ5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nVW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djgwaDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNMjM3LjMgNzEuMWwzNC43IDUyVjgwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OTZjMCA3LjEtNC42IDEzLjMtMTEuNCAxNS4zcy0xNC0uNi0xNy45LTYuNGwtMzQuNy01MlYxNzZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWODBjMC03LjEgNC42LTEzLjMgMTEuNC0xNS4zczE0IC42IDE3LjkgNi40ek0xMTIgODB2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY4MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjgwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoODkuOWMtNi4zLTEwLjItOS45LTIyLjItOS45LTM1LjFjMC00Ni45IDI1LjgtODcuOCA2NC0xMDkuMlYyNzEuOCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTU3NiAyNzJhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek0zNTIgNDc3LjFjMCAxOS4zIDE1LjYgMzQuOSAzNC45IDM0LjlINjA1LjFjMTkuMyAwIDM0LjktMTUuNiAzNC45LTM0LjljMC01MS40LTQxLjctOTMuMS05My4xLTkzLjFINDQ1LjFjLTUxLjQgMC05My4xIDQxLjctOTMuMSA5My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ1doZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjQwVjQzMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTgwIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg4MHptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2em0xMTItMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIMjcyek02NCAxMTJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6TTE3NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZ6bTgwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnptMzg0IDgwdjE2YzAgNDQuMi0zNS44IDgwLTgwIDgwSDU0NFYyNzJjMC00NC4yIDM1LjgtODAgODAtODBoMTZ6bTAgMTI4YzAgNDQuMi0zNS44IDgwLTgwIDgwSDU0NFYzODRjMC00NC4yIDM1LjgtODAgODAtODBoMTZ2MTZ6bTAgMTEyYzAgNDQuMi0zNS44IDgwLTgwIDgwSDU0NFY0OTZjMC00NC4yIDM1LjgtODAgODAtODBoMTZ2MTZ6TTUxMiA0OTZ2MTZINDk2Yy00NC4yIDAtODAtMzUuOC04MC04MFY0MTZoMTZjNDQuMiAwIDgwIDM1LjggODAgODB6bTAtOTZINDk2Yy00NC4yIDAtODAtMzUuOC04MC04MFYzMDRoMTZjNDQuMiAwIDgwIDM1LjggODAgODB2MTZ6bTAtMTI4djE2SDQ5NmMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTkyaDE2YzQ0LjIgMCA4MCAzNS44IDgwIDgwek01MjggMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTYwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjU2YzAtMTMuMyAxMC43LTI0IDI0LTI0em05NiA2NHYzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek00NTYgNzJjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWOTZjMC0xMy4zIDEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1bGxob3JuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMmMwLTEyLjktNy44LTI0LjYtMTkuOC0yOS42cy0yNS43LTIuMi0zNC45IDYuOUwzODEuNyA1M2MtNDggNDgtMTEzLjEgNzUtMTgxIDc1SDE5MiAxNjAgNjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djk2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1Mmw4LjcgMGM2Ny45IDAgMTMzIDI3IDE4MSA3NWw0My42IDQzLjZjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlYzMDAuNGMxOC42LTguOCAzMi0zMi41IDMyLTYwLjRzLTEzLjQtNTEuNi0zMi02MC40VjMyem0tNjQgNzYuN1YyNDAgMzcxLjNDMzU3LjIgMzE3LjggMjgwLjUgMjg4IDIwMC43IDI4OEgxOTJWMTkyaDguN2M3OS44IDAgMTU2LjUtMjkuOCAyMTUuMy04My4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWxsc2V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMjU2QTE5MiAxOTIgMCAxIDAgNjQgMjU2YTE5MiAxOTIgMCAxIDAgMzg0IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMjU2IDgwYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0wLTIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6TTIyNCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVyZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjEgMjI0QzQ1IDIyNCAzMiAyMTEgMzIgMTk0LjljMC0xLjkgLjItMy43IC42LTUuNkMzNy45IDE2OC4zIDc4LjggMzIgMjU2IDMyczIxOC4xIDEzNi4zIDIyMy40IDE1Ny4zYy41IDEuOSAuNiAzLjcgLjYgNS42YzAgMTYuMS0xMyAyOS4xLTI5LjEgMjkuMUg2MS4xek0xNDQgMTI4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTI0MCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6TTI3MiA5NmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwek0xNiAzMDRjMC0yNi41IDIxLjUtNDggNDgtNDhINDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHptMTYgOTZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVyc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcuNiA0LjJDMjgtMi4zIDE1LjItMS4xIDcgN3MtOS40IDIxLTIuOCAzMC41bDExMiAxNjMuM0wxNi42IDIzMy4yQzYuNyAyMzYuNCAwIDI0NS42IDAgMjU2czYuNyAxOS42IDE2LjYgMjIuOGwxMDMuMSAzMy40TDY2LjggNDEyLjhjLTQuOSA5LjMtMy4yIDIwLjcgNC4zIDI4LjFzMTguOCA5LjIgMjguMSA0LjNsMTAwLjYtNTIuOSAzMy40IDEwMy4xYzMuMiA5LjkgMTIuNCAxNi42IDIyLjggMTYuNnMxOS42LTYuNyAyMi44LTE2LjZsMzMuNC0xMDMuMSAxMDAuNiA1Mi45YzkuMyA0LjkgMjAuNyAzLjIgMjguMS00LjNzOS4yLTE4LjggNC4zLTI4LjFMMzkyLjMgMzEyLjJsMTAzLjEtMzMuNGM5LjktMy4yIDE2LjYtMTIuNCAxNi42LTIyLjhzLTYuNy0xOS42LTE2LjYtMjIuOEwzODguOSAxOTguN2wyNS43LTcwLjRjMy4yLTguOCAxLTE4LjYtNS42LTI1LjJzLTE2LjQtOC44LTI1LjItNS42bC03MC40IDI1LjdMMjc4LjggMTYuNkMyNzUuNiA2LjcgMjY2LjQgMCAyNTYgMHMtMTkuNiA2LjctMjIuOCAxNi42bC0zMi4zIDk5LjZMMzcuNiA0LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1c1NpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMEMzNDguOCAwIDQ0OCAzNS4yIDQ0OCA4MFY5NiA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0NDhIMTI4djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NiA4MEMwIDM1LjIgOTkuMiAwIDIyNCAwek02NCAxMjhWMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjhjMC0xNy43LTE0LjMtMzItMzItMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04MCA0MDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0yODggMGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMEM0MjIuNCAwIDUxMiAzNS4yIDUxMiA4MFY5NmwwIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybDAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDQxNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQ4SDE5MnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoMFY5NmgwVjgwQzY0IDM1LjIgMTUzLjYgMCAyODggMHpNMTI4IDE2MHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgyNzJWMTI4SDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTMwNCAyODhINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMDRWMjg4ek0xNDQgNDAwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMjg4IDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0zODQgODBjMC04LjgtNy4yLTE2LTE2LTE2SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzNjhjOC44IDAgMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXNpbmVzc1RpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwdjk2SDE5MiAzNTJoOC4yYzMyLjMtMzkuMSA4MS4xLTY0IDEzNS44LTY0YzUuNCAwIDEwLjcgLjIgMTYgLjdWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM4NFY1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxODRjLTMwLjkgMC01NiAyNS4xLTU2IDU2ek0zMjAgMzUySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4SDBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM2MC4yQzMzNS4xIDQ0OS42IDMyMCA0MTAuNSAzMjAgMzY4YzAtNS40IC4yLTEwLjcgLjctMTZsLS43IDB6bTMyMCAxNmExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwek00OTYgMjg4YzguOCAwIDE2IDcuMiAxNiAxNnY0OGgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg0OTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyOS4xIDE0Mi45Yy02Mi41LTYyLjUtMTU1LjgtNjIuNS0yMTguMyAwcy02Mi41IDE2My44IDAgMjI2LjNzMTU1LjggNjIuNSAyMTguMyAwYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNjLTg3LjUgODcuNS0yMjEuMyA4Ny41LTMwOC44IDBzLTg3LjUtMjI5LjMgMC0zMTYuOHMyMjEuMy04Ny41IDMwOC44IDBjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhYmxlQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMTYwIDU2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTMyIDI4OGMwLTM1LjMgMjguNy02NCA2NC02NEgyMzJWMTU3LjVsLTIwMy4xIDQyYy0xMyAyLjctMjUuNy01LjctMjguNC0xOC42czUuNy0yNS43IDE4LjYtMjguNGwyMzItNDggMjMyLTQ4YzEzLTIuNyAyNS43IDUuNyAyOC40IDE4LjZzLTUuNyAyNS43LTE4LjYgMjguNEwyODAgMTQ3LjVWMjI0SDQxNmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4OHptNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNkg5NnptMTEyIDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNkgyMjRjLTguOCAwLTE2IDcuMi0xNiAxNnptMTQ0LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2SDM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FrZUNhbmRsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODYuNCA1LjVMNjEuOCA0Ny42QzU4IDU0LjEgNTYgNjEuNiA1NiA2OS4yVjcyYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBWNjkuMmMwLTcuNi0yLTE1LTUuOC0yMS42TDEwNS42IDUuNUMxMDMuNiAyLjEgMTAwIDAgOTYgMHMtNy42IDIuMS05LjYgNS41em0xMjggMEwxODkuOCA0Ny42Yy0zLjggNi41LTUuOCAxNC01LjggMjEuNlY3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwVjY5LjJjMC03LjYtMi0xNS01LjgtMjEuNkwyMzMuNiA1LjVDMjMxLjYgMi4xIDIyOCAwIDIyNCAwcy03LjYgMi4xLTkuNiA1LjV6TTMxNy44IDQ3LjZjLTMuOCA2LjUtNS44IDE0LTUuOCAyMS42VjcyYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBWNjkuMmMwLTcuNi0yLTE1LTUuOC0yMS42TDM2MS42IDUuNUMzNTkuNiAyLjEgMzU2IDAgMzUyIDBzLTcuNiAyLjEtOS42IDUuNUwzMTcuOCA0Ny42ek0xMjggMTc2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjQ4Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY3MWM4LjMgNS4yIDE4LjEgOSAyOC44IDljMTMuNSAwIDI3LjItNi4xIDM4LjQtMTMuNGM1LjQtMy41IDkuOS03LjEgMTMtOS43YzEuNS0xLjMgMi43LTIuNCAzLjUtMy4xYy40LS40IC43LS42IC44LS44bC4xLS4xIDAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwYzMuMS0zLjIgNy40LTQuOSAxMS45LTQuOHM4LjYgMi4xIDExLjYgNS40bDAgMCAwIDAgLjEgLjFjLjEgLjEgLjQgLjQgLjcgLjdjLjcgLjcgMS43IDEuNyAzLjEgM2MyLjggMi42IDYuOCA2LjEgMTEuOCA5LjVjMTAuMiA3LjEgMjMgMTMuMSAzNi4zIDEzLjFzMjYuMS02IDM2LjMtMTMuMWM1LTMuNSA5LTYuOSAxMS44LTkuNWMxLjQtMS4zIDIuNC0yLjMgMy4xLTNjLjMtLjMgLjYtLjYgLjctLjdsLjEtLjFjMy0zLjUgNy40LTUuNCAxMi01LjRzOSAyIDEyIDUuNGwuMSAuMWMuMSAuMSAuNCAuNCAuNyAuN2MuNyAuNyAxLjcgMS43IDMuMSAzYzIuOCAyLjYgNi44IDYuMSAxMS44IDkuNWMxMC4yIDcuMSAyMyAxMy4xIDM2LjMgMTMuMXMyNi4xLTYgMzYuMy0xMy4xYzUtMy41IDktNi45IDExLjgtOS41YzEuNC0xLjMgMi40LTIuMyAzLjEtM2MuMy0uMyAuNi0uNiAuNy0uN2wuMS0uMWMyLjktMy40IDcuMS01LjMgMTEuNi01LjRzOC43IDEuNiAxMS45IDQuOGwwIDAgMCAwIDAgMCAuMSAuMWMuMiAuMiAuNCAuNCAuOCAuOGMuOCAuNyAxLjkgMS44IDMuNSAzLjFjMy4xIDIuNiA3LjUgNi4yIDEzIDkuN2MxMS4yIDcuMyAyNC45IDEzLjQgMzguNCAxMy40YzEwLjcgMCAyMC41LTMuOSAyOC44LTlWMjg4YzAtMzUuMy0yOC43LTY0LTY0LTY0VjE3NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY0OEgyNTZWMTc2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjQ4SDEyOFYxNzZ6TTQ0OCAzOTQuNmMtOC41IDMuMy0xOC4yIDUuNC0yOC44IDUuNGMtMjIuNSAwLTQyLjQtOS45LTU1LjgtMTguNmMtNC4xLTIuNy03LjgtNS40LTEwLjktNy44Yy0yLjggMi40LTYuMSA1LTkuOCA3LjVDMzI5LjggMzkwIDMxMC42IDQwMCAyODggNDAwcy00MS44LTEwLTU0LjYtMTguOWMtMy41LTIuNC02LjctNC45LTkuNC03LjJjLTIuNyAyLjMtNS45IDQuNy05LjQgNy4yQzIwMS44IDM5MCAxODIuNiA0MDAgMTYwIDQwMHMtNDEuOC0xMC01NC42LTE4LjljLTMuNy0yLjYtNy01LjItOS44LTcuNWMtMy4xIDIuNC02LjggNS4xLTEwLjkgNy44QzcxLjIgMzkwLjEgNTEuMyA0MDAgMjguOCA0MDBjLTEwLjYgMC0yMC4zLTIuMi0yOC44LTUuNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM5NC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxjdWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTk2IDY0SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWOTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTMyIDE2MGEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwek05NiAzNTJhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek02NCA0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0xOTIgMjU2YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptMzIgNjRhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptNjQtNjRhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0zMiA2NGEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwek0yODggNDQ4YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NEgyODhWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY2NGg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHY0OEgwVjExMkMwIDg1LjUgMjEuNSA2NCA0OCA2NEg5NlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAxOTJINDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTkyek0zMjkgMzA1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTk1IDk1LTQ3LTQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDY0IDY0YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDMyOSAzMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyRGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6bTgwIDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDk2YzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhckRheXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMFYxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIOTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMTkySDQ0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE5MnptNjQgODB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6bTEyOCAwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjcyYzAtOC44LTcuMi0xNi0xNi0xNkgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnptMTQ0LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDMzNnpNNjQgNDAwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWNDAwYzAtOC44LTcuMi0xNi0xNi0xNkg4MGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjQwMGMwLTguOC03LjItMTYtMTYtMTZIMjA4em0xMTIgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlY0MDBjMC04LjgtNy4yLTE2LTE2LTE2SDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6TTMxMiAzNzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTM2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDMxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMyVjY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjQ4SDQ0OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzUyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjY0SDE2MFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMlM5NiAxNC4zIDk2IDMyek00NDggMTkySDBWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQwMGMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJ6TTIyNCAyNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2NTZoNTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjQ4djU2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM3NkgxNDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNTZWMjcyYzAtMTMuMyAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhcldlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMFYxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIOTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMTkySDQ0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE5MnptODAgNjRjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZIMzY4YzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhclhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6TTMwNSAzMDVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNDcgNDctNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNDcgNDctNDcgNDdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw0Ny00NyA0NyA0N2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTQ3LTQ3IDQ3LTQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMlY2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnY0OEg0NDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDM1MlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY2NEgxNjBWMzJjMC0xNy43LTE0LjMtMzItMzItMzJTOTYgMTQuMyA5NiAzMnpNNDQ4IDE5MkgwVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1lcmFSZXRybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjAuNiAxMjEuMkwyNzEuMSA5NiA0NDggOTZ2OTZIMzMzLjJjLTIxLjktMTUuMS00OC41LTI0LTc3LjItMjRzLTU1LjIgOC45LTc3LjIgMjRINjRWMTI4SDE5MmM5LjkgMCAxOS43LTIuMyAyOC42LTYuOHpNMCAxMjhWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEgyNzEuMWMtOS45IDAtMTkuNyAyLjMtMjguNiA2LjhMMTkyIDY0SDE2MFY0OGMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDE2QzI4LjcgNjQgMCA5Mi43IDAgMTI4ek0xNjggMzA0YTg4IDg4IDAgMSAxIDE3NiAwIDg4IDg4IDAgMSAxIC0xNzYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FtZXJhUm90YXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMy4xIDY0LjhMMjAyLjcgOTZIMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NEg0MzcuM0w0MjYuOSA2NC44QzQyMC40IDQ1LjIgNDAyLjEgMzIgMzgxLjQgMzJIMjU4LjZjLTIwLjcgMC0zOSAxMy4yLTQ1LjUgMzIuOHpNNDQ4IDI1NmMwIDguOC03LjIgMTYtMTYgMTZIMzU1LjNjLTYuMiAwLTExLjMtNS4xLTExLjMtMTEuM2MwLTMgMS4yLTUuOSAzLjMtOEwzNzEgMjI5Yy0xMy42LTEzLjQtMzEuOS0yMS01MS0yMWMtMTkuMiAwLTM3LjcgNy42LTUxLjMgMjEuM0wyNDkgMjQ5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDE5LjctMTkuN0MyNTcuNCAxNzIuNyAyODggMTYwIDMyMCAxNjBjMzEuOCAwIDYyLjQgMTIuNiA4NSAzNWwyMy43LTIzLjdjMi4xLTIuMSA1LTMuMyA4LTMuM2M2LjIgMCAxMS4zIDUuMSAxMS4zIDExLjNWMjU2ek0xOTIgMzIwYzAtOC44IDcuMi0xNiAxNi0xNmg3Ni43YzYuMiAwIDExLjMgNS4xIDExLjMgMTEuM2MwIDMtMS4yIDUuOS0zLjMgOEwyNjkgMzQ3YzEzLjYgMTMuNCAzMS45IDIxIDUxIDIxYzE5LjIgMCAzNy43LTcuNiA1MS4zLTIxLjNMMzkxIDMyN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTE5LjcgMTkuN0MzODIuNiA0MDMuMyAzNTIgNDE2IDMyMCA0MTZjLTMxLjggMC02Mi40LTEyLjYtODUtMzVsLTIzLjcgMjMuN2MtMi4xIDIuMS01IDMuMy04IDMuM2MtNi4yIDAtMTEuMy01LjEtMTEuMy0xMS4zVjMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OS4xIDY0LjhMMTM4LjcgOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM3My4zTDM2Mi45IDY0LjhDMzU2LjQgNDUuMiAzMzguMSAzMiAzMTcuNCAzMkgxOTQuNmMtMjAuNyAwLTM5IDEzLjItNDUuNSAzMi44ek0yNTYgMTkyYTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1wZ3JvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3NyA1MmMxMS0xMy44IDguOC0zMy45LTUtNDVzLTMzLjktOC44LTQ1IDVMMjg4IDYwLjggMjQ5IDEyYy0xMS0xMy44LTMxLjItMTYtNDUtNXMtMTYgMzEuMi01IDQ1bDQ4IDYwTDEyLjMgNDA1LjRDNC4zIDQxNS40IDAgNDI3LjcgMCA0NDAuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMjg4IDUyOGMyNi41IDAgNDgtMjEuNSA0OC00OFY0NDAuNGMwLTEyLjctNC4zLTI1LjEtMTIuMy0zNUwzMjkgMTEybDQ4LTYwek0yODggNDQ4SDE2OC41TDI4OCAyOTEuNyA0MDcuNSA0NDhIMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW5keUNhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ4LjggMTMxLjVjMy43LTIuMyA3LjktMy41IDEyLjItMy41YzEyLjcgMCAyMyAxMC4zIDIzIDIzdjUuNmMwIDkuOS01LjEgMTkuMS0xMy41IDI0LjNMMzAuMSAzOTMuN0MuMSA0MTIuNS05IDQ1MS45IDkuNyA0ODEuOXM1OC4yIDM5LjEgODguMiAyMC40TDQzOC40IDI4OS41YzQ1LjgtMjguNiA3My42LTc4LjggNzMuNi0xMzIuOFYxNTFDNTEyIDY3LjYgNDQ0LjQgMCAzNjEgMGMtMjguMyAwLTU2IDgtODAuMSAyM0wyNTQuMSAzOS43Yy0zMCAxOC43LTM5LjEgNTguMi0yMC40IDg4LjJzNTguMiAzOS4xIDg4LjIgMjAuNGwyNi44LTE2Ljh6TTI5OC40IDQ5LjhjOS4yLTUuNyAxOS4xLTEwLjEgMjkuNC0xMy4xTDM0OCA5Ny41Yy01LjcgMS40LTExLjIgMy43LTE2LjMgNi44bC0xMi42IDcuOUwyOTguNCA0OS44em04OC41IDUyLjdsNDYuMi00Ni4yYzguNSA2LjUgMTYuMSAxNC4xIDIyLjYgMjIuNmwtNDYuMiA0Ni4yYy01LjEtOS42LTEzLTE3LjUtMjIuNi0yMi42em0yOC45IDU5LjNsNjEuNiAyMC41Yy0yLjIgMTAuNS01LjggMjAuNy0xMC41IDMwLjJsLTYyLTIwLjdjNi4yLTguOCAxMC4xLTE5LjEgMTEtMzAuMXptLTg2LjEgODIuNWw2MC40IDM3LjctMzAuMiAxOC45LTYwLjQtMzcuNyAzMC4yLTE4Ljl6bS0xMDcuMiA2N2w2MC40IDM3LjctMzAuMiAxOC45LTYwLjQtMzcuNyAzMC4yLTE4Ljl6TTExOS4zIDM3NS43bDYwLjQgMzcuNy0zMC4yIDE4LjlMODkuMSAzOTQuNmwzMC4yLTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbm5hYmlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzUuMyAwIDEwLjMgMi43IDEzLjMgNy4xYzE1LjggMjMuNSAzNi43IDYzLjcgNDkuMiAxMDljNy4yIDI2LjQgMTEuOCA1NS4yIDEwLjQgODRjMTEuNS04LjggMjMuNy0xNi43IDM1LjgtMjMuNmM0MS0yMy4zIDg0LjQtMzYuOSAxMTIuMi00Mi41YzUuMi0xIDEwLjcgLjYgMTQuNCA0LjRzNS40IDkuMiA0LjQgMTQuNWMtNS42IDI3LjctMTkuMyA3MC45LTQyLjcgMTExLjdjLTkuMSAxNS45LTE5LjkgMzEuNy0zMi40IDQ2LjNjMjcuOCA2LjYgNTIuNCAxNy4zIDY3LjIgMjUuNWM1LjEgMi44IDguMiA4LjIgOC4yIDE0cy0zLjIgMTEuMi04LjIgMTRjLTE1LjIgOC40LTQwLjkgMTkuNS02OS44IDI2LjFjLTIwLjIgNC42LTQyLjkgNy4yLTY1LjIgNC42bDguMyAzMy4xYzEuNSA2LjEtLjYgMTIuNC01LjUgMTYuNHMtMTEuNiA0LjYtMTcuMiAxLjlMMjgwIDQxNy4yVjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0MTcuMmwtNTguNSAyOS4xYy01LjYgMi44LTEyLjMgMi4xLTE3LjItMS45cy03LTEwLjMtNS41LTE2LjRsOC4zLTMzLjFjLTIyLjIgMi42LTQ1IDAtNjUuMi00LjZjLTI4LjktNi42LTU0LjYtMTcuNi02OS44LTI2LjFjLTUuMS0yLjgtOC4yLTguMi04LjItMTRzMy4yLTExLjIgOC4yLTE0YzE0LjgtOC4yIDM5LjQtMTguOCA2Ny4yLTI1LjVDNzguOSAyOTYuMyA2OC4xIDI4MC41IDU5IDI2NC42Yy0yMy40LTQwLjgtMzcuMS04NC00Mi43LTExMS43Yy0xLjEtNS4yIC42LTEwLjcgNC40LTE0LjVzOS4yLTUuNCAxNC40LTQuNGMyNy45IDUuNSA3MS4yIDE5LjIgMTEyLjIgNDIuNWMxMi4xIDYuOSAyNC4zIDE0LjcgMzUuOCAyMy42Yy0xLjQtMjguNyAzLjEtNTcuNiAxMC40LTg0YzEyLjUtNDUuMyAzMy40LTg1LjUgNDkuMi0xMDljMy00LjQgOC03LjEgMTMuMy03LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcHN1bGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4VjI1Nkg2NFYxNDR6TTAgMTQ0VjM2OGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyVjE4OS42YzEuOCAxOS4xIDguMiAzOCAxOS44IDU0LjhMMzcyLjMgNDMxLjdjMzUuNSA1MS43IDEwNS4zIDY0LjMgMTU2IDI4LjFzNjMtMTA3LjUgMjcuNS0xNTkuMkw0MjcuMyAxMTMuM0MzOTEuOCA2MS41IDMyMS45IDQ5IDI3MS4zIDg1LjJjLTI4IDIwLTQ0LjMgNTAuOC00Ny4zIDgzVjE0NGMwLTYxLjktNTAuMS0xMTItMTEyLTExMlMwIDgyLjEgMCAxNDR6bTI5Ni42IDY0LjJjLTE2LTIzLjMtMTAtNTUuMyAxMS45LTcxYzIxLjItMTUuMSA1MC41LTEwLjMgNjYgMTIuMmw2NyA5Ny42TDM2MS42IDMwM2wtNjUtOTQuOHpNNDkxIDQwNy43Yy0uOCAuNi0xLjYgMS4xLTIuNCAxLjZsNC0yLjhjLS41IC40LTEgLjgtMS42IDEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMmw5NiAwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMyaDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0bDE2IDB6bTMwNCA5NmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYzMkgzMjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMzJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzg0VjE5MnpNODAgMjQwYzAgOC44IDcuMiAxNiAxNiAxNmg5NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJCdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgOGMtNi42IDAtMTIuNCA0LTE0LjkgMTAuMWwtMjkuNCA3NEw1NS42IDY4LjljLTYuMy0xLjktMTMuMSAuMi0xNy4yIDUuM3MtNC42IDEyLjItMS40IDE3LjlsMzkuNSA2OS4xTDEwLjkgMjA2LjRjLTUuNCAzLjctOCAxMC4zLTYuNSAxNi43czYuNyAxMS4yIDEzLjEgMTIuMmw3OC43IDEyLjJMOTAuNiAzMjdjLS41IDYuNSAzLjEgMTIuNyA5IDE1LjVzMTIuOSAxLjggMTcuOC0yLjZsMzUuMy0zMi41IDkuNS0zNS40IDEwLjQtMzguNmM4LTI5LjkgMzAuNS01Mi4xIDU3LjktNjAuOWw0MS01OS4yYzExLjMtMTYuMyAyNi40LTI4LjkgNDMuNS0zNy4yYy0uNC0uNi0uOC0xLjItMS4zLTEuOGMtNC4xLTUuMS0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0QzE4OC40IDEyIDE4Mi42IDggMTc2IDh6TTM2Ny43IDE2MS41bDEzNS42IDM2LjNjNi41IDEuOCAxMS4zIDcuNCAxMS44IDE0LjJsNC42IDU2LjUtMjAxLjUtNTQgMzIuMi00Ni42YzMuOC01LjYgMTAuOC04LjEgMTcuMy02LjR6bS02OS45LTMwbC00Ny45IDY5LjNjLTIxLjYgMy00MC4zIDE4LjYtNDYuMyA0MWwtMTAuNCAzOC42LTE2LjYgNjEuOC04LjMgMzAuOWMtNC42IDE3LjEgNS42IDM0LjYgMjIuNiAzOS4ybDE1LjUgNC4xYzE3LjEgNC42IDM0LjYtNS42IDM5LjItMjIuNmw4LjMtMzAuOSAyNDcuMyA2Ni4zLTguMyAzMC45Yy00LjYgMTcuMSA1LjYgMzQuNiAyMi42IDM5LjJsMTUuNSA0LjFjMTcuMSA0LjYgMzQuNi01LjYgMzkuMi0yMi42bDguMy0zMC45TDU5NSAzODhsMTAuNC0zOC42YzYtMjIuNC0yLjUtNDUuMi0xOS42LTU4LjdsLTYuOC04NGMtMi43LTMzLjctMjYuNC02Mi01OS03MC44TDM4NC4yIDk5LjdjLTMyLjctOC44LTY3LjMgNC04Ni41IDMxLjh6bS0xNyAxMzFhMjQgMjQgMCAxIDEgLTEyLjQgNDYuNCAyNCAyNCAwIDEgMSAxMi40LTQ2LjR6bTIxNy45IDgzLjJBMjQgMjQgMCAxIDEgNTQ1IDM1OC4xYTI0IDI0IDAgMSAxIC00Ni40LTEyLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhck9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MCAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI0ek0xODUuOCAyMjRIMzI2LjJjNi44IDAgMTIuOCA0LjMgMTUuMSAxMC42TDM2MC4zIDI4OEgxNTEuN2wxOS4xLTUzLjRjMi4zLTYuNCA4LjMtMTAuNiAxNS4xLTEwLjZ6bS03NS4zLTEwLjlMODIuMiAyOTIuNEM2Mi4xIDMwMC45IDQ4IDMyMC44IDQ4IDM0NHY0MCA2NCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NmMxNy43IDAgMzItMTQuMyAzMi0zMlY0NDhIMzg0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQ0OCAzODQgMzQ0YzAtMjMuMi0xNC4xLTQzLjEtMzQuMi01MS42bC0yOC4zLTc5LjNDMzkwLjEgMTgxLjMgMzYwIDE2MCAzMjYuMiAxNjBIMTg1LjhjLTMzLjggMC02NCAyMS4zLTc1LjMgNTMuMXpNMTI4IDM0NGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTIzMiAyNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek0zOSAzOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNDggNDhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDczIDM5Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHptNDAwIDBMMzkxIDg3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNDgtNDhjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyUmVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUuNCA5NkgzNDYuNmMxMy42IDAgMjUuNyA4LjYgMzAuMiAyMS40TDQwMi45IDE5MkgxMDkuMWwyNi4xLTc0LjZjNC41LTEyLjggMTYuNi0yMS40IDMwLjItMjEuNHptLTkwLjYgLjNMMzkuNiAxOTYuOEMxNi40IDIwNi40IDAgMjI5LjMgMCAyNTZ2ODBjMCAyMy43IDEyLjkgNDQuNCAzMiA1NS40VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NmMxNy43IDAgMzItMTQuMyAzMi0zMlY0MDBIMzg0djQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM5MS40YzE5LjEtMTEuMSAzMi0zMS43IDMyLTU1LjRWMjU2YzAtMjYuNy0xNi40LTQ5LjYtMzkuNi01OS4yTDQzNy4yIDk2LjNDNDIzLjcgNTcuOCAzODcuNCAzMiAzNDYuNiAzMkgxNjUuNGMtNDAuOCAwLTc3LjEgMjUuOC05MC42IDY0LjN6TTIwOCAyNzJoOTZjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2ek00OCAyODBjMC0xMy4zIDEwLjctMjQgMjQtMjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0zNjAtMjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDA4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJTaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MS4zIDk2SDIyNHY5NkgxMTEuM2wzMC40LTc1LjlDMTQ2LjUgMTA0IDE1OC4yIDk2IDE3MS4zIDk2ek0yNzIgMTkyVjk2aDgxLjJjOS43IDAgMTguOSA0LjQgMjUgMTJsNjcuMiA4NEgyNzJ6bTI1Ni4yIDFMNDI4LjIgNjhjLTE4LjItMjIuOC00NS44LTM2LTc1LTM2SDE3MS4zYy0zOS4zIDAtNzQuNiAyMy45LTg5LjEgNjAuM0w0MC42IDE5Ni40QzE2LjggMjA1LjggMCAyMjguOSAwIDI1NlYzNjhjMCAxNy43IDE0LjMgMzIgMzIgMzJINjUuM2M3LjYgNDUuNCA0Ny4xIDgwIDk0LjcgODBzODcuMS0zNC42IDk0LjctODBIMzg1LjNjNy42IDQ1LjQgNDcuMSA4MCA5NC43IDgwczg3LjEtMzQuNiA5NC43LTgwSDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBjMC02NS4yLTQ4LjgtMTE5LTExMS44LTEyN3pNNDM0LjcgMzY4YTQ4IDQ4IDAgMSAxIDkwLjUgMzIgNDggNDggMCAxIDEgLTkwLjUtMzJ6TTE2MCAzMzZhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJUdW5uZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBDMTE0LjYgMCAwIDExNC42IDAgMjU2VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg0Mi44Yy02LjYtNS45LTEwLjgtMTQuNC0xMC44LTI0VjM3NmMwLTIwLjggMTEuMy0zOC45IDI4LjEtNDguNmwyMS02NC43YzcuNS0yMy4xIDI5LTM4LjcgNTMuMy0zOC43SDMxMy42YzI0LjMgMCA0NS44IDE1LjYgNTMuMyAzOC43bDIxIDY0LjdjMTYuOCA5LjcgMjguMiAyNy44IDI4LjIgNDguNlY0ODhjMCA5LjYtNC4yIDE4LjEtMTAuOCAyNEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2QzUxMiAxMTQuNiAzOTcuNCAwIDI1NiAwek0zNjIuOCA1MTJjLTYuNi01LjktMTAuOC0xNC40LTEwLjgtMjRWNDQ4SDE2MHY0MGMwIDkuNi00LjIgMTguMS0xMC44IDI0SDM2Mi44ek0xOTAuOCAyNzcuNUwxNzcgMzIwSDMzNWwtMTMuOC00Mi41Yy0xLjEtMy4zLTQuMS01LjUtNy42LTUuNUgxOTguNGMtMy41IDAtNi41IDIuMi03LjYgNS41ek0xNjggNDA4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjAwLTI0YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzUuMiAxMTcuNEwxMDkuMSAxOTJINDAyLjlsLTI2LjEtNzQuNkMzNzIuMyAxMDQuNiAzNjAuMiA5NiAzNDYuNiA5NkgxNjUuNGMtMTMuNiAwLTI1LjcgOC42LTMwLjIgMjEuNHpNMzkuNiAxOTYuOEw3NC44IDk2LjNDODguMyA1Ny44IDEyNC42IDMyIDE2NS40IDMySDM0Ni42YzQwLjggMCA3Ny4xIDI1LjggOTAuNiA2NC4zbDM1LjIgMTAwLjVjMjMuMiA5LjYgMzkuNiAzMi41IDM5LjYgNTkuMlY0MDB2NDhjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDBIOTZ2NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwMCAyNTZjMC0yNi43IDE2LjQtNDkuNiAzOS42LTU5LjJ6TTEyOCAyODhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMjg4IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyYXZhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExMkMwIDY3LjggMzUuOCAzMiA4MCAzMkg0MTZjODguNCAwIDE2MCA3MS42IDE2MCAxNjBWMzUyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwSDI4OGMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05Nkg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTEyek0zMjAgMzUySDQ0OFYyNTZINDE2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjM1MnpNOTYgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDk2em05NiAzMzZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM3LjQgMzc0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEwzMiAxOTJjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQgMjc4LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDEyOC0xMjhjOS4yLTkuMiAyMi45LTExLjkgMzQuOS02LjlzMTkuOCAxNi42IDE5LjggMjkuNmwwIDI1NmMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtOS4yLTkuMi0yMi45LTExLjktMzQuOS02LjlzLTE5LjggMTYuNi0xOS44IDI5LjZsMCAyNTZjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWwxMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Mi42IDEzNy40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOEgyODhjMTIuOSAwIDI0LjYtNy44IDI5LjYtMTkuOHMyLjItMjUuNy02LjktMzQuOWwtMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2Fycm90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ni43IDZDMzM3LjYgMTcgMzIwIDQyLjMgMzIwIDcyYzAgNDAgMTUuMyA1NS4zIDQwIDgwczQwIDQwIDgwIDQwYzI5LjcgMCA1NS0xNy42IDY2LTI2LjdjNC0zLjMgNi04LjIgNi0xMy4zcy0yLTEwLTYtMTMuMmMtMTEuNC05LjEtMzguMy0yNi44LTc0LTI2LjhjLTMyIDAtNDAgOC00MCA4czgtOCA4LTQwYzAtMzUuNy0xNy43LTYyLjYtMjYuOC03NEMzNzAgMiAzNjUuMSAwIDM2MCAwcy0xMCAyLTEzLjMgNnpNMjQ0LjYgMTM2Yy00MCAwLTc3LjEgMTguMS0xMDEuNyA0OC4ybDYwLjUgNjAuNWM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC01NS4zLTU1LjMgMCAuMUwyLjIgNDc3LjlDLTIgNDg3LS4xIDQ5Ny44IDcgNTA1czE3LjkgOSAyNy4xIDQuOGwxMzQuNy02Mi40LTUyLjEtNTIuMWMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDE5OS43IDQzM2wxMDAuMi00Ni40YzQ2LjQtMjEuNSA3Ni4yLTY4IDc2LjItMTE5LjJDMzc2IDE5NC44IDMxNy4yIDEzNiAyNDQuNiAxMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMEMxMC43IDAgMCAxMC43IDAgMjRTMTAuNyA0OCAyNCA0OEg2OS41YzMuOCAwIDcuMSAyLjcgNy45IDYuNWw1MS42IDI3MWM2LjUgMzQgMzYuMiA1OC41IDcwLjcgNTguNUg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTk5LjdjLTExLjUgMC0yMS40LTguMi0yMy42LTE5LjVMMTcwLjcgMjg4SDQ1OS4yYzMyLjYgMCA2MS4xLTIxLjggNjkuNS01My4zbDQxLTE1Mi4zQzU3Ni42IDU3IDU1Ny40IDMyIDUzMS4xIDMySDM2MFYxMzQuMWwyMy0yM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTY0IDY0Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMyAyM1YzMkgxMjAuMUMxMTEgMTIuOCA5MS42IDAgNjkuNSAwSDI0ek0xNzYgNTEyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMzM2LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRGbGF0YmVkU3VpdGNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBINDhjNDQuMiAwIDgwIDM1LjggODAgODBWMzY4YzAgOC44IDcuMiAxNiAxNiAxNkg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTQxLjNjMS44IDUgMi43IDEwLjQgMi43IDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtNS42IDEtMTEgMi43LTE2SDI1My4zYzEuOCA1IDIuNyAxMC40IDIuNyAxNmMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTUuNiAxLTExIDIuNy0xNkgxNDRjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjgwYzAtOC44LTcuMi0xNi0xNi0xNkgzMkMxNC4zIDY0IDAgNDkuNyAwIDMyek00MzIgOTZWNTZjMC00LjQtMy42LTgtOC04SDM0NGMtNC40IDAtOCAzLjYtOCA4Vjk2aDk2ek0yODggOTZWNTZjMC0zMC45IDI1LjEtNTYgNTYtNTZoODBjMzAuOSAwIDU2IDI1LjEgNTYgNTZWOTYgMzIwSDI4OFY5NnpNNTEyIDMyMFY5NmgxNmMyNi41IDAgNDggMjEuNSA0OCA0OFYyNzJjMCAyNi41LTIxLjUgNDgtNDggNDhINTEyek0yNDAgOTZoMTZWMzIwSDI0MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJ0RmxhdGJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0SDQ4YzguOCAwIDE2IDcuMiAxNiAxNlYzNjhjMCA0NC4yIDM1LjggODAgODAgODBoMTguN2MtMS44IDUtMi43IDEwLjQtMi43IDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC01LjYtMS0xMS0yLjctMTZINDUwLjdjLTEuOCA1LTIuNyAxMC40LTIuNyAxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEtMTEtMi43LTE2SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNlY4MEMxMjggMzUuOCA5Mi4yIDAgNDggMEgzMnpNMTkyIDgwVjI3MmMwIDI2LjUgMjEuNSA0OCA0OCA0OEg1NjBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDY0VjE3NmMwIDUuOS0zLjIgMTEuMy04LjUgMTQuMXMtMTEuNSAyLjUtMTYuNC0uOEw0MDAgMTYzLjJsLTM5LjEgMjYuMWMtNC45IDMuMy0xMS4yIDMuNi0xNi40IC44cy04LjUtOC4yLTguNS0xNC4xVjMySDI0MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjRDMCAxMC43IDEwLjcgMCAyNCAwSDY5LjVjMjIgMCA0MS41IDEyLjggNTAuNiAzMmg0MTFjMjYuMyAwIDQ1LjUgMjUgMzguNiA1MC40bC00MSAxNTIuM2MtOC41IDMxLjQtMzcgNTMuMy02OS41IDUzLjNIMTcwLjdsNS40IDI4LjVjMi4yIDExLjMgMTIuMSAxOS41IDIzLjYgMTkuNUg0ODhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTk5LjdjLTM0LjYgMC02NC4zLTI0LjYtNzAuNy01OC41TDc3LjQgNTQuNWMtLjctMy44LTQtNi41LTcuOS02LjVIMjRDMTAuNyA0OCAwIDM3LjMgMCAyNHpNMTI4IDQ2NGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0zMzYtNDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2ek0yNTIgMTYwYzAgMTEgOSAyMCAyMCAyMGg0NHY0NGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFYxODBoNDRjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwSDM1NlY5NmMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjB2NDRIMjcyYy0xMSAwLTIwIDktMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRTaG9wcGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI0QzAgMTAuNyAxMC43IDAgMjQgMEg2OS41YzIyIDAgNDEuNSAxMi44IDUwLjYgMzJoNDExYzI2LjMgMCA0NS41IDI1IDM4LjYgNTAuNGwtNDEgMTUyLjNjLTguNSAzMS40LTM3IDUzLjMtNjkuNSA1My4zSDE3MC43bDUuNCAyOC41YzIuMiAxMS4zIDEyLjEgMTkuNSAyMy42IDE5LjVINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE5OS43Yy0zNC42IDAtNjQuMy0yNC42LTcwLjctNTguNUw3Ny40IDU0LjVjLS43LTMuOC00LTYuNS03LjktNi41SDI0QzEwLjcgNDggMCAzNy4zIDAgMjR6TTEyOCA0NjRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzM2LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FzaFJlZ2lzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDNDYuMyAwIDMyIDE0LjMgMzIgMzJWOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoODB2MzJIODdjLTMxLjYgMC01OC41IDIzLjEtNjMuMyA1NC40TDEuMSAzNjQuMUMuNCAzNjguOCAwIDM3My42IDAgMzc4LjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzNzguNGMwLTQuOC0uNC05LjYtMS4xLTE0LjRMNDg4LjIgMjE0LjRDNDgzLjUgMTgzLjEgNDU2LjYgMTYwIDQyNSAxNjBIMjA4VjEyOGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkg2NHpNOTYgNDhIMjU2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek02NCA0MzJjMC04LjggNy4yLTE2IDE2LTE2SDQzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2em00OC0xNjhhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4em0xMjAtMjRhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMTYwIDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6TTMyOCAyNDBhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMjU2IDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6TTQyNCAyNDBhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMzUyIDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMTkyaDE3LjFjMjIuMSAzOC4zIDYzLjUgNjQgMTEwLjkgNjRjMTEgMCAyMS44LTEuNCAzMi00djQgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMzOS4yTDI4MCA0NDhoNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTkyYy01MyAwLTk2LTQzLTk2LTk2VjE5Mi41YzAtMTYuMS0xMi0yOS44LTI4LTMxLjhsLTcuOS0xYy0xNy41LTIuMi0zMC0xOC4yLTI3LjgtMzUuN3MxOC4yLTMwIDM1LjctMjcuOGw3LjkgMWM0OCA2IDg0LjEgNDYuOCA4NC4xIDk1LjN2ODUuM2MzNC40LTUxLjcgOTMuMi04NS44IDE2MC04NS44em0xNjAgMjYuNXYwYy0xMCAzLjUtMjAuOCA1LjUtMzIgNS41Yy0yOC40IDAtNTQtMTIuNC03MS42LTMyaDBjLTMuNy00LjEtNy04LjUtOS45LTEzLjJDMzU3LjMgMTY0IDM1MiAxNDYuNiAzNTIgMTI4djBWMzIgMTIgMTAuN0MzNTIgNC44IDM1Ni43IC4xIDM2Mi42IDBoLjJjMy4zIDAgNi40IDEuNiA4LjQgNC4ybDAgLjFMMzg0IDIxLjNsMjcuMiAzNi4zTDQxNiA2NGg2NGw0LjgtNi40TDUxMiAyMS4zIDUyNC44IDQuM2wwLS4xYzItMi42IDUuMS00LjIgOC40LTQuMmguMkM1MzkuMyAuMSA1NDQgNC44IDU0NCAxMC43VjEyIDMydjk2YzAgMTcuMy00LjYgMzMuNi0xMi42IDQ3LjZjLTExLjMgMTkuOC0yOS42IDM1LjItNTEuNCA0Mi45ek00MzIgMTI4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTQ4IDE2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2VkaVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjY2LjdDMTAxLjIgODEuOSAzMiAxNjAuOSAzMiAyNTZzNjkuMiAxNzQuMSAxNjAgMTg5LjNWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ1LjNjMzAuOS01LjIgNTkuMi0xNy43IDgzLjItMzUuOGMxNC4xLTEwLjYgMTctMzAuNyA2LjQtNDQuOHMtMzAuNy0xNy00NC44LTYuNGMtMTMuMiA5LjktMjguMyAxNy4zLTQ0LjggMjEuNlYxMzJjMTYuNCA0LjIgMzEuNiAxMS42IDQ0LjggMjEuNmMxNC4xIDEwLjYgMzQuMiA3LjggNDQuOC02LjRzNy44LTM0LjItNi40LTQ0LjhjLTI0LTE4LTUyLjQtMzAuNi04My4yLTM1LjhWMzJ6TTE5MiAxMzJWMzgwYy01NS4yLTE0LjItOTYtNjQuMy05Ni0xMjRzNDAuOC0xMDkuOCA5Ni0xMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNlbnRTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY2LjdjMzAuOSA1LjIgNTkuMiAxNy43IDgzLjIgMzUuOGMxNC4xIDEwLjYgMTcgMzAuNyA2LjQgNDQuOHMtMzAuNyAxNy00NC44IDYuNEMyNzkuNCAxMzcuNSAyNTIuOSAxMjggMjI0IDEyOGMtNzAuNyAwLTEyOCA1Ny4zLTEyOCAxMjhzNTcuMyAxMjggMTI4IDEyOGMyOC45IDAgNTUuNC05LjUgNzYuOC0yNS42YzE0LjEtMTAuNiAzNC4yLTcuOCA0NC44IDYuNHM3LjggMzQuMi02LjQgNDQuOGMtMjQgMTgtNTIuNCAzMC42LTgzLjIgMzUuOFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ1LjNDMTAxLjIgNDMwLjEgMzIgMzUxLjEgMzIgMjU2czY5LjItMTc0LjEgMTYwLTE4OS4zVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZXJ0aWZpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEgNy4zQzIwNSAxIDE5Ni0xLjQgMTg3LjYgLjhzLTE0LjkgOC45LTE3LjEgMTcuM0wxNTQuNyA4MC42bC02Mi0xNy41Yy04LjQtMi40LTE3LjQgMC0yMy41IDYuMXMtOC41IDE1LjEtNi4xIDIzLjVsMTcuNSA2MkwxOC4xIDE3MC42Yy04LjQgMi4xLTE1IDguNy0xNy4zIDE3LjFTMSAyMDUgNy4zIDIxMWw0Ni4yIDQ1TDcuMyAzMDFDMSAzMDctMS40IDMxNiAuOCAzMjQuNHM4LjkgMTQuOSAxNy4zIDE3LjFsNjIuNSAxNS44LTE3LjUgNjJjLTIuNCA4LjQgMCAxNy40IDYuMSAyMy41czE1LjEgOC41IDIzLjUgNi4xbDYyLTE3LjUgMTUuOCA2Mi41YzIuMSA4LjQgOC43IDE1IDE3LjEgMTcuM3MxNy4zLS4yIDIzLjQtNi40bDQ1LTQ2LjIgNDUgNDYuMmM2LjEgNi4yIDE1IDguNyAyMy40IDYuNHMxNC45LTguOSAxNy4xLTE3LjNsMTUuOC02Mi41IDYyIDE3LjVjOC40IDIuNCAxNy40IDAgMjMuNS02LjFzOC41LTE1LjEgNi4xLTIzLjVsLTE3LjUtNjIgNjIuNS0xNS44YzguNC0yLjEgMTUtOC43IDE3LjMtMTcuMXMtLjItMTcuNC02LjQtMjMuNGwtNDYuMi00NSA0Ni4yLTQ1YzYuMi02LjEgOC43LTE1IDYuNC0yMy40cy04LjktMTQuOS0xNy4zLTE3LjFsLTYyLjUtMTUuOCAxNy41LTYyYzIuNC04LjQgMC0xNy40LTYuMS0yMy41cy0xNS4xLTguNS0yMy41LTYuMWwtNjIgMTcuNUwzNDEuNCAxOC4xYy0yLjEtOC40LTguNy0xNS0xNy4xLTE3LjNTMzA3IDEgMzAxIDcuM0wyNTYgNTMuNSAyMTEgNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNDhWMjU2aDQ4VjU4LjdjMjMuOSAxMy44IDQwIDM5LjcgNDAgNjkuM1YyNTZoNDhWMTI4QzM4NCA1Ny4zIDMyNi43IDAgMjU2IDBIMTkyQzEyMS4zIDAgNjQgNTcuMyA2NCAxMjhWMjU2aDQ4VjEyOGMwLTI5LjYgMTYuMS01NS41IDQwLTY5LjNWMjU2aDQ4VjQ4aDQ4ek00OCAyODhjLTEyLjEgMC0yMy4yIDYuOC0yOC42IDE3LjdsLTE2IDMyYy01IDkuOS00LjQgMjEuNyAxLjQgMzEuMVMyMC45IDM4NCAzMiAzODRsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NEgzNTJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRjMTEuMSAwIDIxLjQtNS43IDI3LjItMTUuMnM2LjQtMjEuMiAxLjQtMzEuMWwtMTYtMzJDNDIzLjIgMjk0LjggNDEyLjEgMjg4IDQwMCAyODhINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWxrYm9hcmRVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMwLTM1LjMgMjguNy02NCA2NC02NEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDMzNi44Yy0xMS44LTI1LjUtMjkuOS00Ny41LTUyLjQtNjRIMzg0VjMyMGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmg2NFY2NEwyMjQgNjR2NDkuMUMyMDUuMiAxMDIuMiAxODMuMyA5NiAxNjAgOTZWNjR6bTAgNjRhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6TTEzMy4zIDM1Mmg1My4zQzI2MC4zIDM1MiAzMjAgNDExLjcgMzIwIDQ4NS4zYzAgMTQuNy0xMS45IDI2LjctMjYuNyAyNi43SDI2LjdDMTEuOSA1MTIgMCA1MDAuMSAwIDQ4NS4zQzAgNDExLjcgNTkuNyAzNTIgMTMzLjMgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFsa2JvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMyQzYwLjcgMzIgMzIgNjAuNyAzMiA5NlYzODRIOTZWOTZsMzg0IDBWMzg0aDY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2ek0yMjQgMzg0djMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MTZWMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYW1wYWduZUdsYXNzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU1LjYgMTcuM0MxNjMgMyAxNzkuOS0zLjYgMTk1IDEuOUwzMjAgNDcuNWwxMjUtNDUuNmMxNS4xLTUuNSAzMiAxLjEgMzkuNCAxNS40bDc4LjggMTUyLjljMjguOCA1NS44IDEwLjMgMTIyLjMtMzguNSAxNTYuNkw1NTYuMSA0MTNsNDEtMTVjMTYuNi02IDM1IDIuNSA0MSAxOS4xcy0yLjUgMzUtMTkuMSA0MWwtNzEuMSAyNS45TDQ3Ni44IDUxMGMtMTYuNiA2LjEtMzUtMi41LTQxLTE5LjFzMi41LTM1IDE5LjEtNDFsNDEtMTUtMzEuMy04Ni4yYy01OS40IDUuMi0xMTYuMi0zNC0xMzAtOTUuMkwzMjAgMTg4LjhsLTE0LjYgNjQuN2MtMTMuOCA2MS4zLTcwLjYgMTAwLjQtMTMwIDk1LjJsLTMxLjMgODYuMiA0MSAxNWMxNi42IDYgMjUuMiAyNC40IDE5LjEgNDFzLTI0LjQgMjUuMi00MSAxOS4xTDkyLjIgNDg0LjEgMjEuMSA0NTguMmMtMTYuNi02LjEtMjUuMi0yNC40LTE5LjEtNDFzMjQuNC0yNS4yIDQxLTE5LjFsNDEgMTUgMzEuMy04Ni4yQzY2LjUgMjkyLjUgNDguMSAyMjYgNzYuOSAxNzAuMkwxNTUuNiAxNy4zem00NCA1NC40bC0yNy4yIDUyLjhMMjYxLjYgMTU3bDEzLjEtNTcuOUwxOTkuNiA3MS43em0yNDAuOSAwTDM2NS40IDk5LjEgMzc4LjUgMTU3bDg5LjItMzIuNUw0NDAuNSA3MS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFyZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NFY0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjMwNGgxNmMyMi4xIDAgNDAgMTcuOSA0MCA0MHYzMmMwIDM5LjggMzIuMiA3MiA3MiA3MnM3Mi0zMi4yIDcyLTcyVjI1Mi4zYzMyLjUtMTAuMiA1Ni00MC41IDU2LTc2LjNWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkg1NDRWODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDhINDgwVjgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djQ4SDQzMmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgMzUuOCAyMy41IDY2LjEgNTYgNzYuM1YzNzZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzQ0YzAtNDguNi0zOS40LTg4LTg4LTg4SDMyMFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg5NnpNMjE2LjkgODIuN2M2IDQgOC41IDExLjUgNi4zIDE4LjNsLTI1IDc0LjlIMjU2YzYuNyAwIDEyLjcgNC4yIDE1IDEwLjRzLjUgMTMuMy00LjYgMTcuN2wtMTEyIDk2Yy01LjUgNC43LTEzLjQgNS4xLTE5LjMgMS4xcy04LjUtMTEuNS02LjMtMTguM2wyNS03NC45SDk2Yy02LjcgMC0xMi43LTQuMi0xNS0xMC40cy0uNS0xMy4zIDQuNi0xNy43bDExMi05NmM1LjUtNC43IDEzLjQtNS4xIDE5LjMtMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydEFyZWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRjMC0xNy43LTE0LjMtMzItMzItMzJTMCA0Ni4zIDAgNjRWNDAwYzAgNDQuMiAzNS44IDgwIDgwIDgwSDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0em05NiAyODhINDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1MS44YzAtNy42LTIuNy0xNS03LjctMjAuOGwtNjUuOC03Ni44Yy0xMi4xLTE0LjItMzMuNy0xNS00Ni45LTEuOGwtMjEgMjFjLTEwIDEwLTI2LjQgOS4yLTM1LjQtMS42bC0zOS4yLTQ3Yy0xMi42LTE1LjEtMzUuNy0xNS40LTQ4LjctLjZMMTM1LjkgMjE1Yy01LjEgNS44LTcuOSAxMy4zLTcuOSAyMS4xdjg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0MDBjMCA4LjggNy4yIDE2IDE2IDE2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6bTk2IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTMyIDY0SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgOTZINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRDb2x1bW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDAwYzAgOC44IDcuMiAxNiAxNiAxNkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIODBjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyek0xNjAgMjI0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTI4LTY0VjMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptNjQgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyek00ODAgOTZWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0R2FudHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDAwYzAgOC44IDcuMiAxNiAxNiAxNkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIODBjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyem05NiA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTk2IDY0SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTE2MCA5Nmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0TGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFY0MDBjMCA0NC4yIDM1LjggODAgODAgODBINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDgwYy04LjggMC0xNi03LjItMTYtMTZWNjR6bTQwNi42IDg2LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzIwIDIxMC43bC01Ny40LTU3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMTIgMTEyYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDI0MCAyMjEuM2w1Ny40IDU3LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRQaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDI0MFYxNi42YzAtOSA3LTE2LjYgMTYtMTYuNkM0NDMuNyAwIDU0NCAxMDAuMyA1NDQgMjI0YzAgOS03LjYgMTYtMTYuNiAxNkgzMDR6TTMyIDI3MkMzMiAxNTAuNyAxMjIuMSA1MC4zIDIzOSAzNC4zYzkuMi0xLjMgMTcgNi4xIDE3IDE1LjRWMjg4TDQxMi41IDQ0NC41YzYuNyA2LjcgNi4yIDE3LjctMS41IDIzLjFDMzcxLjggNDk1LjYgMzIzLjggNTEyIDI3MiA1MTJDMTM5LjUgNTEyIDMyIDQwNC42IDMyIDI3MnptNTI2LjQgMTZjOS4zIDAgMTYuNiA3LjggMTUuNCAxN2MtNy43IDU1LjktMzQuNiAxMDUuNi03My45IDE0Mi4zYy02IDUuNi0xNS40IDUuMi0yMS4yLS43TDMyMCAyODhINTU4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0U2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzMmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhIMjA4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MHpNMCAyNzJjMC0yNi41IDIxLjUtNDggNDgtNDhIODBjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyNzJ6TTM2OCA5NmgzMmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhIMzY4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Mi42IDg2LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTYwIDE3OC43bC01Ny40LTU3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDgwIDgwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6bTk2IDEyOGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxNjAgNDAyLjcgNTQuNiAyOTcuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTI4IDEyOGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwyNTYtMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVja1RvU2xvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA4MGMwLTI2LjUgMjEuNS00OCA0OC00OEg0MzJjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMzg0SDk2Vjgwem0zMTMgNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMTEgMTExLTQ3LTQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDY0IDY0YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDQwOSAxNjFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjl6TTAgMzM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDY0VjQxNkg1MTJWMjg4aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOC42IDEwNS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0yNTYgMjU2Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxNjAgMzM4LjcgMzkzLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjQwLjJWMjU2SDBjMC0yMCAxMC0zOC43IDI2LjYtNDkuOEwyNzQuOSA0MC43YzguNi01LjcgMTguNi04LjcgMjguOS04LjdDNDE4LjggMzIgNTEyIDEyNS4yIDUxMiAyNDAuMnptMCA0Ny44VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg4SDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NCaXNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMyYzAgMTYuMSAxMS45IDI5LjQgMjcuNCAzMS43Qzc4LjQgMTA2LjggOCAxOTAgOCAyODhjMCA0Ny40IDMwLjggNzIuMyA1NiA4NC43VjQwMEgyNTZWMzcyLjdjMjUuMi0xMi41IDU2LTM3LjQgNTYtODQuN2MwLTM3LjMtMTAuMi03Mi40LTI1LjMtMTA0LjFsLTk5LjQgOTkuNGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkwyNzAuOCAxNTQuNmMtMjMuMi0zOC4xLTUxLjgtNjkuNS03NC4yLTkwLjlDMjEyLjEgNjEuNCAyMjQgNDguMSAyMjQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4ek00OCA0MzJMNi42IDQ3My40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMCA1MDEuOSAxMC4xIDUxMiAyMi42IDUxMkgyOTcuNGMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNmMwLTYtMi40LTExLjgtNi42LTE2TDI3MiA0MzJINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzQm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCA2NHY2NGg2NFY5Nmg2NHY2NGg2NFY5Nmg2NHY2NEgzMjB2NjRoNjR2NjRIMzIwdjY0aDY0djY0SDMyMFYzNTJIMjU2djY0SDE5MlYzNTJIMTI4djY0SDY0VjM1Mmg2NFYyODhINjRWMjI0aDY0VjE2MEg2NFY5Nmg2NHptNjQgMTI4aDY0VjE2MEgxOTJ2NjR6bTAgNjRWMjI0SDEyOHY2NGg2NHptNjQgMEgxOTJ2NjRoNjRWMjg4em0wIDBoNjRWMjI0SDI1NnY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NLaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1NnY0OEg0MDhjMjIuMSAwIDQwIDE3LjkgNDAgNDBjMCA1LjMtMSAxMC41LTMuMSAxNS40TDM2OCA0MDBIODBMMy4xIDIxNS40QzEgMjEwLjUgMCAyMDUuMyAwIDIwMGMwLTIyLjEgMTcuOS00MCA0MC00MEgxOTJWMTEySDE3NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgxNlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzguNiA0NzMuNEw4MCA0MzJIMzY4bDQxLjQgNDEuNGM0LjIgNC4yIDYuNiAxMCA2LjYgMTZjMCAxMi41LTEwLjEgMjIuNi0yMi42IDIyLjZINTQuNkM0Mi4xIDUxMiAzMiA1MDEuOSAzMiA0ODkuNGMwLTYgMi40LTExLjggNi42LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0tuaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA0OEw4Mi43IDYxLjNDNzAuNyA3My4zIDY0IDg5LjUgNjQgMTA2LjVWMjM4LjljMCAxMC43IDUuMyAyMC43IDE0LjIgMjYuNmwxMC42IDdjMTQuMyA5LjYgMzIuNyAxMC43IDQ4LjEgM2wzLjItMS42YzIuNi0xLjMgNS0yLjggNy4zLTQuNWw0OS40LTM3YzYuNi01IDE1LjctNSAyMi4zIDBjMTAuMiA3LjcgOS45IDIzLjEtLjcgMzAuM0w5MC40IDM1MEM3My45IDM2MS4zIDY0IDM4MCA2NCA0MDBIMzg0bDI4LjktMTU5YzIuMS0xMS4zIDMuMS0yMi44IDMuMS0zNC4zVjE5MkM0MTYgODYgMzMwIDAgMjI0IDBIODMuOEM3Mi45IDAgNjQgOC45IDY0IDE5LjhjMCA3LjUgNC4yIDE0LjMgMTAuOSAxNy43TDk2IDQ4em0yNCA2OGEyMCAyMCAwIDEgMSA0MCAwIDIwIDIwIDAgMSAxIC00MCAwek0yMi42IDQ3My40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMTYgNTAxLjkgMjYuMSA1MTIgMzguNiA1MTJINDA5LjRjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZjMC02LTIuNC0xMS44LTYuNi0xNkwzODQgNDMySDY0TDIyLjYgNDczLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUGF3biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTUuNSAyMjRjMjkuMi0xOC40IDQ4LjUtNTAuOSA0OC41LTg4YzAtNTcuNC00Ni42LTEwNC0xMDQtMTA0UzU2IDc4LjYgNTYgMTM2YzAgMzcuMSAxOS40IDY5LjYgNDguNSA4OEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJjMCAxNi41IDEyLjUgMzAgMjguNSAzMS44TDgwIDQwMEgyNDBMMjI3LjUgMjg3LjhjMTYtMS44IDI4LjUtMTUuMyAyOC41LTMxLjhjMC0xNy43LTE0LjMtMzItMzItMzJoLTguNXpNMjIuNiA0NzMuNGMtNC4yIDQuMi02LjYgMTAtNi42IDE2QzE2IDUwMS45IDI2LjEgNTEyIDM4LjYgNTEySDI4MS40YzEyLjUgMCAyMi42LTEwLjEgMjIuNi0yMi42YzAtNi0yLjQtMTEuOC02LjYtMTZMMjU2IDQzMkg2NEwyMi42IDQ3My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc1F1ZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTU2IDU2IDAgMSAxIDAgMTEyQTU2IDU2IDAgMSAxIDI1NiAwek0xMzQuMSAxNDMuOGMzLjMtMTMgMTUtMjMuOCAzMC4yLTIzLjhjMTIuMyAwIDIyLjYgNy4yIDI3LjcgMTdjMTIgMjMuMiAzNi4yIDM5IDY0IDM5czUyLTE1LjggNjQtMzljNS4xLTkuOCAxNS40LTE3IDI3LjctMTdjMTUuMyAwIDI3IDEwLjggMzAuMiAyMy44YzcgMjcuOCAzMi4yIDQ4LjMgNjIuMSA0OC4zYzEwLjggMCAyMS0yLjcgMjkuOC03LjRjOC40LTQuNCAxOC45LTQuNSAyNy42IC45YzEzIDggMTcuMSAyNSA5LjIgMzhMMzk5LjcgNDAwSDM4NCAzNDMuNiAxNjguNCAxMjggMTEyLjNMNS40IDIyMy42Yy03LjktMTMtMy44LTMwIDkuMi0zOGM4LjctNS4zIDE5LjItNS4zIDI3LjYtLjljOC45IDQuNyAxOSA3LjQgMjkuOCA3LjRjMjkuOSAwIDU1LjEtMjAuNSA2Mi4xLTQ4LjN6TTI1NiAyMjRsMCAwIDAgMGgwek0xMTIgNDMySDQwMGw0MS40IDQxLjRjNC4yIDQuMiA2LjYgMTAgNi42IDE2YzAgMTIuNS0xMC4xIDIyLjYtMjIuNiAyMi42SDg2LjZDNzQuMSA1MTIgNjQgNTAxLjkgNjQgNDg5LjRjMC02IDIuNC0xMS44IDYuNi0xNkwxMTIgNDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc1Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMTkyVjQ4YzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZWODhjMCA0LjQgMy42IDggOCA4aDMyYzQuNCAwIDgtMy42IDgtOFY0OGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2Vjg4YzAgNC40IDMuNiA4IDggOGgzMmM0LjQgMCA4LTMuNiA4LThWNDhjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNlYxOTJjMCAxMC4xLTQuNyAxOS42LTEyLjggMjUuNkwzNTIgMjU2bDE2IDE0NEg4MEw5NiAyNTYgNDQuOCAyMTcuNkMzNi43IDIxMS42IDMyIDIwMi4xIDMyIDE5MnptMTc2IDk2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhjMCA4LjggNy4yIDE2IDE2IDE2ek0yMi42IDQ3My40TDY0IDQzMkgzODRsNDEuNCA0MS40YzQuMiA0LjIgNi42IDEwIDYuNiAxNmMwIDEyLjUtMTAuMSAyMi42LTIyLjYgMjIuNkgzOC42QzI2LjEgNTEyIDE2IDUwMS45IDE2IDQ4OS40YzAtNiAyLjQtMTEuOCA2LjYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlYzMkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgxNlY5Nkg2MC4yQzQ5LjEgOTYgNDAgMTA1LjEgNDAgMTE2LjJjMCAyLjUgLjUgNC45IDEuMyA3LjNMNzMuOCAyMDhINzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNEw2MCAzODRIMTk2TDE4MCAyNTZoNGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGgtMS44bDMyLjUtODQuNWMuOS0yLjMgMS4zLTQuOCAxLjMtNy4zYzAtMTEuMi05LjEtMjAuMi0yMC4yLTIwLjJIMTQ0VjY0aDE2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE0NFYxNnpNNDggNDE2TDQuOCA0NzMuNkMxLjcgNDc3LjggMCA0ODIuOCAwIDQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNEgyMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC01LjItMS43LTEwLjItNC44LTE0LjRMMjA4IDQxNkg0OHptMjg4IDBsLTQzLjIgNTcuNmMtMy4xIDQuMi00LjggOS4yLTQuOCAxNC40YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQ4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNGMwLTUuMi0xLjctMTAuMi00LjgtMTQuNEw0NjQgNDE2SDMzNnpNMzA0IDIwOHY1MS45YzAgNy44IDIuOCAxNS4zIDggMjEuMUwzMzkuMiAzMTIgMzM3IDM4NEg0NjIuNWwtMy4zLTcyIDI4LjMtMzAuOGM1LjQtNS45IDguNS0xMy42IDguNS0yMS43VjIwOGMwLTguOC03LjItMTYtMTYtMTZINDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZINDI0VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzkyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZIMzUyVjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzIwYy04LjggMC0xNiA3LjItMTYgMTZ6bTgwIDk2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MzJIMzg0VjMwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMzLjQgNDA2LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTkyLTE5MmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyNTYgMzM4LjcgODYuNiAxNjkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTkyIDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMNzcuMyAyNTYgMjQ2LjYgODYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTkyIDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMC42IDIzMy40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0xOTIgMTkyYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyNDIuNyAyNTYgNzMuNCA4Ni42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDE5MiAxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzMuNCAxMDUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxOTIgMTkyYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDI1NiAxNzMuMyA4Ni42IDM0Mi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxOTItMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGlsZENvbWJhdGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMTI4QTY0IDY0IDAgMSAwIDE3NiAwYTY0IDY0IDAgMSAwIDAgMTI4em0tOCAzNTJWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMwMC41TDI2MC45IDMyMWM5LjQgMTUgMjkuMiAxOS40IDQ0LjEgMTBzMTkuNC0yOS4yIDEwLTQ0LjFsLTUxLjctODIuMWMtMTcuNi0yNy45LTQ4LjMtNDQuOS04MS4yLTQ0LjlIMTY5LjhjLTMzIDAtNjMuNyAxNi45LTgxLjIgNDQuOUwzNi45IDI4N2MtOS40IDE1LTQuOSAzNC43IDEwIDQ0LjFzMzQuNyA0LjkgNDQuMS0xMEwxMDQgMzAwLjVWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6TTQ0OCAwSDQzMiA0MTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZWMTMyLjNjLTkuNiA1LjUtMTYgMTUuOS0xNiAyNy43djMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlYzNjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDU5LjVjMTAuNCAwIDE4LTkuOCAxNS41LTE5LjlMNDg0IDQwMGg0NGM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg0ODBWMzI1LjNsNTMuMS0xNy43YzYuNS0yLjIgMTAuOS04LjMgMTAuOS0xNS4yVjIwOGMwLTguOC03LjItMTYtMTYtMTZINTEyYy04LjggMC0xNiA3LjItMTYgMTZ2NTZsLTE2IDUuM1YxNjBjMC0xMS44LTYuNC0yMi4yLTE2LTI3LjdWMTZjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGlsZERyZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA2NEE2NCA2NCAwIDEgMCA5NiA2NGE2NCA2NCAwIDEgMCAxMjggMHpNODggNDAwdjgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDAwaDE2djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDAwaDE3LjhjMTAuOSAwIDE4LjYtMTAuNyAxNS4yLTIxLjFsLTMxLjEtOTMuNCAyOC42IDM3LjhjMTAuNyAxNC4xIDMwLjggMTYuOCA0NC44IDYuMnMxNi44LTMwLjcgNi4yLTQ0LjhMMjU0LjYgMjA3Yy0yMi40LTI5LjYtNTcuNS00Ny05NC42LTQ3cy03Mi4yIDE3LjQtOTQuNiA0N0w2LjUgMjg0LjdjLTEwLjcgMTQuMS03LjkgMzQuMiA2LjIgNDQuOHMzNC4yIDcuOSA0NC44LTYuMmwyOC43LTM3LjhMNTUgMzc4LjlDNTEuNiAzODkuMyA1OS4zIDQwMCA3MC4yIDQwMEg4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hpbGRSZWFjaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNjRBNjQgNjQgMCAxIDAgMTI4IDY0YTY0IDY0IDAgMSAwIDEyOCAwek0xNTIuOSAxNjkuM2MtMjMuNy04LjQtNDQuNS0yNC4zLTU4LjgtNDUuOEw3NC42IDk0LjJDNjQuOCA3OS41IDQ1IDc1LjYgMzAuMiA4NS40cy0xOC43IDI5LjctOC45IDQ0LjRMNDAuOSAxNTljMTguMSAyNy4xIDQyLjggNDguNCA3MS4xIDYyLjRWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzg0aDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjIxLjZjMjkuMS0xNC4yIDU0LjQtMzYuMiA3Mi43LTY0LjJsMTguMi0yNy45YzkuNi0xNC44IDUuNC0zNC42LTkuNC00NC4zcy0zNC42LTUuNS00NC4zIDkuNEwyOTEgMTIyLjRjLTIxLjggMzMuNC01OC45IDUzLjYtOTguOCA1My42Yy0xMi42IDAtMjQuOS0yLTM2LjYtNS44Yy0uOS0uMy0xLjgtLjctMi43LS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGlsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA5NiA2NHptNDggMzIwdjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI4Ny44TDU5LjEgMzIxYy05LjQgMTUtMjkuMiAxOS40LTQ0LjEgMTBTLTQuNSAzMDEuOSA0LjkgMjg3bDM5LjktNjMuM0M2OS43IDE4NCAxMTMuMiAxNjAgMTYwIDE2MHM5MC4zIDI0IDExNS4yIDYzLjZMMzE1LjEgMjg3YzkuNCAxNSA0LjkgMzQuNy0xMCA0NC4xcy0zNC43IDQuOS00NC4xLTEwTDI0MCAyODcuOFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0SDE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hpbGRyZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBhNjQgNjQgMCAxIDEgMCAxMjhBNjQgNjQgMCAxIDEgMTYwIDB6TTg4IDQ4MFY0MDBINzAuMmMtMTAuOSAwLTE4LjYtMTAuNy0xNS4yLTIxLjFsMzEuMS05My40TDU3LjUgMzIzLjNjLTEwLjcgMTQuMS0zMC44IDE2LjgtNDQuOCA2LjJzLTE2LjgtMzAuNy02LjItNDQuOEw2NS40IDIwN2MyMi40LTI5LjYgNTcuNS00NyA5NC42LTQ3czcyLjIgMTcuNCA5NC42IDQ3bDU4LjkgNzcuN2MxMC43IDE0LjEgNy45IDM0LjItNi4yIDQ0LjhzLTM0LjIgNy45LTQ0LjgtNi4ybC0yOC42LTM3LjhMMjY1IDM3OC45YzMuNSAxMC40LTQuMyAyMS4xLTE1LjIgMjEuMUgyMzJ2ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDAwSDE1MnY4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpNNDgwIDBhNjQgNjQgMCAxIDEgMCAxMjhBNjQgNjQgMCAxIDEgNDgwIDB6bS04IDM4NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMDAuNUwzOTUuMSAzMjFjLTkuNCAxNS0yOS4yIDE5LjQtNDQuMSAxMHMtMTkuNC0yOS4yLTEwLTQ0LjFsNTEuNy04Mi4xYzE3LjYtMjcuOSA0OC4zLTQ0LjkgODEuMi00NC45aDEyLjNjMzMgMCA2My43IDE2LjkgODEuMiA0NC45TDYxOS4xIDI4N2M5LjQgMTUgNC45IDM0LjctMTAgNDQuMXMtMzQuNyA0LjktNDQuMS0xMEw1NTIgMzAwLjVWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NEg0NzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNodXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWNDhIMjY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDMydjQ2LjRMMTgzLjMgMjEwYy0xNC41IDguNy0yMy4zIDI0LjMtMjMuMyA0MS4yVjUxMmg5NlY0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHY5Nmg5NlYyNTEuMmMwLTE2LjktOC44LTMyLjUtMjMuMy00MS4yTDM0NCAxNDIuNFY5NmgzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNDRWMjR6TTI0LjkgMzMwLjNDOS41IDMzOC44IDAgMzU0LjkgMCAzNzIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoODBWMjczLjZMMjQuOSAzMzAuM3pNNTkyIDUxMmMyNi41IDAgNDgtMjEuNSA0OC00OFYzNzIuNGMwLTE3LjUtOS41LTMzLjYtMjQuOS00Mi4xTDUxMiAyNzMuNlY1MTJoODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDB6TTEyNyAyODFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw3MSA3MUwyMzIgMTM2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxODIuMSA3MS03MWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMMjczIDM5M2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTI3IDI4MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZBMjU2IDI1NiAwIDEgMCAwIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwek0yMzEgMTI3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNzEgNzFMMzc2IDIzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTgyLjEgMCA3MSA3MWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDExOSAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDIzMSAxMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yODEgMzg1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDcxLTcxTDEzNiAyODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTgyLjEgMC03MS03MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwTDM5MyAyMzljOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjgxIDM4NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg1IDIzMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC03MS03MVYzNzZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTkzLjlsLTcxIDcxYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDIzOSAxMTljOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzg1IDIzMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM2OSAyMDlMMjQxIDMzN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNDcgNDdMMzM1IDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUNoZXZyb25Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTM1IDI0MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDg3IDg3IDg3LTg3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOUwyNzMgMzQ1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxMzUgMjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVDaGV2cm9uTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjU2QTI1NiAyNTYgMCAxIDAgMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMHpNMjcxIDEzNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDg3IDg3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBMMTY3IDI3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMMjcxIDEzNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDBBMjU2IDI1NiAwIDEgMCAwIDI1NnpNMjQxIDM3N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw4Ny04Ny04Ny04N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwTDM0NSAyMzljOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjQxIDM3N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQ2hldnJvblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zNzcgMjcxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTg3LTg3LTg3IDg3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDIzOSAxNjdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzc3IDI3MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlRG9sbGFyVG9TbG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi43IDQwMy43Yy0yMi4xIDgtNDUuOSAxMi4zLTcwLjcgMTIuM3MtNDguNy00LjQtNzAuNy0xMi4zYy0uMy0uMS0uNS0uMi0uOC0uM2MtMzAtMTEtNTYuOC0yOC43LTc4LjYtNTEuNEM3MCAzMTQuNiA0OCAyNjMuOSA0OCAyMDhDNDggOTMuMSAxNDEuMSAwIDI1NiAwUzQ2NCA5My4xIDQ2NCAyMDhjMCA1NS45LTIyIDEwNi42LTU3LjkgMTQ0Yy0xIDEtMiAyLjEtMyAzLjFjLTIxLjQgMjEuNC00Ny40IDM4LjEtNzYuMyA0OC42ek0yNTYgODRjLTExIDAtMjAgOS0yMCAyMHYxNGMtNy42IDEuNy0xNS4yIDQuNC0yMi4yIDguNWMtMTMuOSA4LjMtMjUuOSAyMi44LTI1LjggNDMuOWMuMSAyMC4zIDEyIDMzLjEgMjQuNyA0MC43YzExIDYuNiAyNC43IDEwLjggMzUuNiAxNGwxLjcgLjVjMTIuNiAzLjggMjEuOCA2LjggMjggMTAuN2M1LjEgMy4yIDUuOCA1LjQgNS45IDguMmMuMSA1LTEuOCA4LTUuOSAxMC41Yy01IDMuMS0xMi45IDUtMjEuNCA0LjdjLTExLjEtLjQtMjEuNS0zLjktMzUuMS04LjVjLTIuMy0uOC00LjctMS42LTcuMi0yLjRjLTEwLjUtMy41LTIxLjggMi4yLTI1LjMgMTIuNnMyLjIgMjEuOCAxMi42IDI1LjNjMS45IC42IDQgMS4zIDYuMSAyLjFsMCAwIDAgMGM4LjMgMi45IDE3LjkgNi4yIDI4LjIgOC40VjMxMmMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFYyOTguMmM4LTEuNyAxNi00LjUgMjMuMi05YzE0LjMtOC45IDI1LjEtMjQuMSAyNC44LTQ1Yy0uMy0yMC4zLTExLjctMzMuNC0yNC42LTQxLjZjLTExLjUtNy4yLTI1LjktMTEuNi0zNy4xLTE1bC0uNy0uMmMtMTIuOC0zLjktMjEuOS02LjctMjguMy0xMC41Yy01LjItMy4xLTUuMy00LjktNS4zLTYuN2MwLTMuNyAxLjQtNi41IDYuMi05LjNjNS40LTMuMiAxMy42LTUuMSAyMS41LTVjOS42IC4xIDIwLjIgMi4yIDMxLjIgNS4yYzEwLjcgMi44IDIxLjYtMy41IDI0LjUtMTQuMnMtMy41LTIxLjYtMTQuMi0yNC41Yy02LjUtMS43LTEzLjctMy40LTIxLjEtNC43VjEwNGMwLTExLTktMjAtMjAtMjB6TTQ4IDM1Mkg2NGMxOS41IDI1LjkgNDQgNDcuNyA3Mi4yIDY0SDY0djMySDI1NiA0NDhWNDE2SDM3NS44YzI4LjItMTYuMyA1Mi44LTM4LjEgNzIuMi02NGgxNmMyNi41IDAgNDggMjEuNSA0OCA0OHY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDAwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVEb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMzUyYTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMzc2LjkgMjk0LjZMMjY5LjggMzk0LjVjLTMuOCAzLjUtOC43IDUuNS0xMy44IDUuNXMtMTAuMS0yLTEzLjgtNS41TDEzNS4xIDI5NC42Yy00LjUtNC4yLTcuMS0xMC4xLTcuMS0xNi4zYzAtMTIuMyAxMC0yMi4zIDIyLjMtMjIuM2w1Ny43IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgNTcuNyAwYzEyLjMgMCAyMi4zIDEwIDIyLjMgMjIuM2MwIDYuMi0yLjYgMTIuMS03LjEgMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMzg0YzEzLjMgMCAyNCAxMC43IDI0IDI0VjI2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYxNTJjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTIyNCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzY4IDE1MlYyNTYgMzYwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI4MEgxOTJsMCA4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTIwOGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djgwSDMyMFYxNTJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlSGFsZlN0cm9rZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMjU2YzAtMTA2LTg2LTE5Mi0xOTItMTkyVjQ0OGMxMDYgMCAxOTItODYgMTkyLTE5MnpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVJbmZvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMTYgMzM2aDI0VjI3MkgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2ODhoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTQwLTIwOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDI1NkEyNTYgMjU2IDAgMSAwIDAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDB6TTIxNy40IDM3Ni45TDExNy41IDI2OS44Yy0zLjUtMy44LTUuNS04LjctNS41LTEzLjhzMi0xMC4xIDUuNS0xMy44bDk5LjktMTA3LjFjNC4yLTQuNSAxMC4xLTcuMSAxNi4zLTcuMWMxMi4zIDAgMjIuMyAxMCAyMi4zIDIyLjNsMCA1Ny43IDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMCAwIDU3LjdjMCAxMi4zLTEwIDIyLjMtMjIuMyAyMi4zYy02LjIgMC0xMi4xLTIuNi0xNi4zLTcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE4NCAyMzJIMzI4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE4NGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlTm9kZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE4LjQgMTU3LjljMzUuMy04LjMgNjEuNi00MCA2MS42LTc3LjljMC00NC4yLTM1LjgtODAtODAtODBjLTQzLjQgMC03OC43IDM0LjUtODAgNzcuNUwxMzYuMiAxNTEuMUMxMjEuNyAxMzYuOCAxMDEuOSAxMjggODAgMTI4Yy00NC4yIDAtODAgMzUuOC04MCA4MHMzNS44IDgwIDgwIDgwYzEyLjIgMCAyMy44LTIuNyAzNC4xLTcuNkwyNTkuNyA0MDcuOGMtMi40IDcuNi0zLjcgMTUuOC0zLjcgMjQuMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMjcuNy0xNC01Mi4xLTM1LjQtNjYuNGwzNy44LTIwNy43ek0xNTYuMyAyMzIuMmMyLjItNi45IDMuNS0xNC4yIDMuNy0yMS43bDE4My44LTczLjVjMy42IDMuNSA3LjQgNi43IDExLjYgOS41TDMxNy42IDM1NC4xYy01LjUgMS4zLTEwLjggMy4xLTE1LjggNS41TDE1Ni4zIDIzMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVOb3RjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjIuNyAzMi4xYzUgMTYuOS00LjYgMzQuOC0yMS41IDM5LjhDMTIxLjggOTUuNiA2NCAxNjkuMSA2NCAyNTZjMCAxMDYgODYgMTkyIDE5MiAxOTJzMTkyLTg2IDE5Mi0xOTJjMC04Ni45LTU3LjgtMTYwLjQtMTM3LjEtMTg0LjFjLTE2LjktNS0yNi42LTIyLjktMjEuNS0zOS44czIyLjktMjYuNiAzOS44LTIxLjVDNDM0LjkgNDIuMSA1MTIgMTQwIDUxMiAyNTZjMCAxNDEuNC0xMTQuNiAyNTYtMjU2IDI1NlMwIDM5Ny40IDAgMjU2QzAgMTQwIDc3LjEgNDIuMSAxODIuOSAxMC42YzE2LjktNSAzNC44IDQuNiAzOS44IDIxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVBhdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMjQgMTkyVjMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTI4IDBWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMTg4LjMgMTQ3LjFjLTcuNiA0LjItMTIuMyAxMi4zLTEyLjMgMjAuOVYzNDRjMCA4LjcgNC43IDE2LjcgMTIuMyAyMC45czE2LjggNC4xIDI0LjMtLjVsMTQ0LTg4YzcuMS00LjQgMTEuNS0xMi4xIDExLjUtMjAuNXMtNC40LTE2LjEtMTEuNS0yMC41bC0xNDQtODhjLTcuNC00LjUtMTYuNy00LjctMjQuMy0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjMyIDM0NFYyODBIMTY4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDY0VjE2OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djY0aDY0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MHY2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlUXVlc3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2OS44IDE2NS4zYzcuOS0yMi4zIDI5LjEtMzcuMyA1Mi44LTM3LjNoNTguM2MzNC45IDAgNjMuMSAyOC4zIDYzLjEgNjMuMWMwIDIyLjYtMTIuMSA0My41LTMxLjcgNTQuOEwyODAgMjY0LjRjLS4yIDEzLTEwLjkgMjMuNi0yNCAyMy42Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYyNTAuNWMwLTguNiA0LjYtMTYuNSAxMi4xLTIwLjhsNDQuMy0yNS40YzQuNy0yLjcgNy42LTcuNyA3LjYtMTMuMWMwLTguNC02LjgtMTUuMS0xNS4xLTE1LjFIMjIyLjZjLTMuNCAwLTYuNCAyLjEtNy41IDUuM2wtLjQgMS4yYy00LjQgMTIuNS0xOC4yIDE5LTMwLjYgMTQuNnMtMTktMTguMi0xNC42LTMwLjZsLjQtMS4yek0yMjQgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVJhZGlhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNjRhMTkyIDE5MiAwIDEgMSAwIDM4NCAxOTIgMTkyIDAgMSAxIDAtMzg0em0wIDQ0OEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIwMCAyNTZjMC0yMC43IDExLjMtMzguOCAyOC00OC41bC0zNi02Mi4zYy04LjgtMTUuMy0yOC43LTIwLjgtNDItOWMtMjUuNiAyMi42LTQzLjkgNTMuMy01MC45IDg4LjFDOTUuNyAyNDEuNSAxMTAuMyAyNTYgMTI4IDI1Nmw3MiAwem0yOCA0OC41bC0zNiA2Mi40Yy04LjggMTUuMy0zLjYgMzUuMiAxMy4xIDQwLjhjMTYgNS40IDMzLjEgOC4zIDUwLjkgOC4zczM0LjktMi45IDUwLjktOC4zYzE2LjctNS42IDIxLjktMjUuNSAxMy4xLTQwLjhsLTM2LTYyLjRjLTguMiA0LjgtMTcuOCA3LjUtMjggNy41cy0xOS44LTIuNy0yOC03LjV6TTMxMiAyNTZsNzIgMGMxNy43IDAgMzIuMy0xNC41IDI4LjgtMzEuOGMtNy0zNC44LTI1LjMtNjUuNS01MC45LTg4LjFjLTEzLjItMTEuNy0zMy4xLTYuMy00MiA5bC0zNiA2Mi4zYzE2LjcgOS43IDI4IDI3LjggMjggNDguNXptLTU2IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yOTQuNiAxMzUuMWw5OS45IDEwNy4xYzMuNSAzLjggNS41IDguNyA1LjUgMTMuOHMtMiAxMC4xLTUuNSAxMy44TDI5NC42IDM3Ni45Yy00LjIgNC41LTEwLjEgNy4xLTE2LjMgNy4xQzI2NiAzODQgMjU2IDM3NCAyNTYgMzYxLjdsMC01Ny43LTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJsOTYgMCAwLTU3LjdjMC0xMi4zIDEwLTIyLjMgMjIuMy0yMi4zYzYuMiAwIDEyLjEgMi42IDE2LjMgNy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xOTIgMTYwSDMyMGMxNy43IDAgMzIgMTQuMyAzMiAzMlYzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xMzUuMSAyMTcuNGwxMDcuMS05OS45YzMuOC0zLjUgOC43LTUuNSAxMy44LTUuNXMxMC4xIDIgMTMuOCA1LjVsMTA3LjEgOTkuOWM0LjUgNC4yIDcuMSAxMC4xIDcuMSAxNi4zYzAgMTIuMy0xMCAyMi4zLTIyLjMgMjIuM0gzMDR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMjQwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNTZIMTUwLjNDMTM4IDI1NiAxMjggMjQ2IDEyOCAyMzMuN2MwLTYuMiAyLjYtMTIuMSA3LjEtMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTkgMzg0LjJDMzc2LjkgMzQ1LjggMzM1LjQgMzIwIDI4OCAzMjBIMjI0Yy00Ny40IDAtODguOSAyNS44LTExMSA2NC4yYzM1LjIgMzkuMiA4Ni4yIDYzLjggMTQzIDYzLjhzMTA3LjgtMjQuNyAxNDMtNjMuOHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgMTZhNzIgNzIgMCAxIDAgMC0xNDQgNzIgNzIgMCAxIDAgMCAxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNzUgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMzNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWOTZIMjI0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0Vjk2SDExMlYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNFM2NCAxMC43IDY0IDI0Vjk2SDQ4QzIxLjUgOTYgMCAxMTcuNSAwIDE0NHY5NlY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMzA0aDMyIDk2SDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNDBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDgwVjQ4em05NiAzMjB2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDUyOGMtOC44IDAtMTYtNy4yLTE2LTE2VjM2OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2ek0yNDAgNDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2VjM2OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNnpNMTI4IDQwMGMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYzNjhjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMnpNNTYwIDI1NmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDUyOGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoMzJ6TTI1NiAxNzZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2ek0xMTIgMTYwYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDMyek0yNTYgMzA0YzAgOC44LTcuMiAxNi0xNiAxNkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMnpNMTEyIDMyMEg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNnptMzA0LTQ4djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnpNNDAwIDY0YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWODBjMC04LjggNy4yLTE2IDE2LTE2aDMyem0xNiAxMTJ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGFwcGVyYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDMySDM2MS45bC0xIDEtMTI3IDEyN2g5Mi4xbDEtMUw0NTMuOCAzMi4zYy0xLjktLjItMy44LS4zLTUuOC0uM3ptNjQgMTI4Vjk2YzAtMTUuMS01LjMtMjkuMS0xNC00MGwtMTA0IDEwNEg1MTJ6TTI5NC4xIDMySDIwMS45bC0xIDFMNzMuOSAxNjBoOTIuMWwxLTEgMTI3LTEyN3pNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NnY2NEg2LjFsMS0xIDEyNy0xMjdINjR6TTUxMiAxOTJIMFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xpcGJvYXJkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0zMDUgMjczTDE3NyA0MDFjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDc5IDMzN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDI3MSAyMzljOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmRMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAwYy00MS44IDAtNzcuNCAyNi43LTkwLjUgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjgyLjVDMjY5LjQgMjYuNyAyMzMuOCAwIDE5MiAwem0wIDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNNzIgMjcyYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTEwNC0xNkgzMDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek03MiAzNjhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptODggMGMwLTguOCA3LjItMTYgMTYtMTZIMzA0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmRRdWVzdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMGMtNDEuOCAwLTc3LjQgMjYuNy05MC41IDY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4Mi41QzI2OS40IDI2LjcgMjMzLjggMCAxOTIgMHptMCA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTEwNS44IDIyOS4zYzcuOS0yMi4zIDI5LjEtMzcuMyA1Mi44LTM3LjNoNTguM2MzNC45IDAgNjMuMSAyOC4zIDYzLjEgNjMuMWMwIDIyLjYtMTIuMSA0My41LTMxLjcgNTQuOEwyMTYgMzI4LjRjLS4yIDEzLTEwLjkgMjMuNi0yNCAyMy42Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzMTQuNWMwLTguNiA0LjYtMTYuNSAxMi4xLTIwLjhsNDQuMy0yNS40YzQuNy0yLjcgNy42LTcuNyA3LjYtMTMuMWMwLTguNC02LjgtMTUuMS0xNS4xLTE1LjFIMTU4LjZjLTMuNCAwLTYuNCAyLjEtNy41IDUuM2wtLjQgMS4yYy00LjQgMTIuNS0xOC4yIDE5LTMwLjYgMTQuNnMtMTktMTguMi0xNC42LTMwLjZsLjQtMS4yek0xNjAgNDE2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZFVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xMjggMjU2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNODAgNDMyYzAtNDQuMiAzNS44LTgwIDgwLTgwaDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xMTIgMTkySDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb2NrUm90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03NSA3NUw0MSA0MUMyNS45IDI1LjkgMCAzNi42IDAgNTcuOVYxNjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRIMTM0LjFjMjEuNCAwIDMyLjEtMjUuOSAxNy00MWwtMzAuOC0zMC44QzE1NSA4NS41IDIwMyA2NCAyNTYgNjRjMTA2IDAgMTkyIDg2IDE5MiAxOTJzLTg2IDE5Mi0xOTIgMTkyYy00MC44IDAtNzguNi0xMi43LTEwOS43LTM0LjRjLTE0LjUtMTAuMS0zNC40LTYuNi00NC42IDcuOXMtNi42IDM0LjQgNy45IDQ0LjZDMTUxLjIgNDk1IDIwMS43IDUxMiAyNTYgNTEyYzE0MS40IDAgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMEMxODUuMyAwIDEyMS4zIDI4LjcgNzUgNzV6bTE4MSA1M2MtMTMuMyAwLTI0IDEwLjctMjQgMjRWMjU2YzAgNi40IDIuNSAxMi41IDcgMTdsNzIgNzJjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC02NS02NVYxNTJjMC0xMy4zLTEwLjctMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTI1NiAyNTYgMCAxIDEgMCA1MTJBMjU2IDI1NiAwIDEgMSAyNTYgMHpNMjMyIDEyMFYyNTZjMCA4IDQgMTUuNSAxMC43IDIwbDk2IDY0YzExIDcuNCAyNS45IDQuNCAzMy4zLTYuN3M0LjQtMjUuOS02LjctMzMuM0wyODAgMjQzLjJWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggNDQ4SDY0VjIyNGg2NFYxNjBINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgyODhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzg0SDI4OHY2NHptLTY0LTk2SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEgyMjRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvc2VkQ2FwdGlvbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek0yMDAgMjA4YzE0LjIgMCAyNyA2LjEgMzUuOCAxNmM4LjggOS45IDI0IDEwLjcgMzMuOSAxLjlzMTAuNy0yNCAxLjktMzMuOWMtMTcuNS0xOS42LTQzLjEtMzItNzEuNS0zMmMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyOC40IDAgNTQtMTIuNCA3MS41LTMyYzguOC05LjkgOC0yNS0xLjktMzMuOXMtMjUtOC0zMy45IDEuOWMtOC44IDkuOS0yMS42IDE2LTM1LjggMTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDh6bTE0NCA0OGMwLTI2LjUgMjEuNS00OCA0OC00OGMxNC4yIDAgMjcgNi4xIDM1LjggMTZjOC44IDkuOSAyNCAxMC43IDMzLjkgMS45czEwLjctMjQgMS45LTMzLjljLTE3LjUtMTkuNi00My4xLTMyLTcxLjUtMzJjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZjMjguNCAwIDU0LTEyLjQgNzEuNS0zMmM4LjgtOS45IDgtMjUtMS45LTMzLjlzLTI1LTgtMzMuOSAxLjljLTguOCA5LjktMjEuNiAxNi0zNS44IDE2Yy0yNi41IDAtNDgtMjEuNS00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDQ4MEM2NC41IDQ4MCAwIDQxNS41IDAgMzM2YzAtNjIuOCA0MC4yLTExNi4yIDk2LjItMTM1LjljLS4xLTIuNy0uMi01LjQtLjItOC4xYzAtODguNCA3MS42LTE2MCAxNjAtMTYwYzU5LjMgMCAxMTEgMzIuMiAxMzguNyA4MC4yQzQwOS45IDEwMiA0MjguMyA5NiA0NDggOTZjNTMgMCA5NiA0MyA5NiA5NmMwIDEyLjItMi4zIDIzLjgtNi40IDM0LjZDNTk2IDIzOC40IDY0MCAyOTAuMSA2NDAgMzUyYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4SDE0NHptNzktMTY3bDgwIDgwYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDgwLTgwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTM5IDM5VjE4NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFYzMTguMWwtMzktMzljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNDgwQzY0LjUgNDgwIDAgNDE1LjUgMCAzMzZjMC02Mi44IDQwLjItMTE2LjIgOTYuMi0xMzUuOWMtLjEtMi43LS4yLTUuNC0uMi04LjFjMC04OC40IDcxLjYtMTYwIDE2MC0xNjBjNTkuMyAwIDExMSAzMi4yIDEzOC43IDgwLjJDNDA5LjkgMTAyIDQyOC4zIDk2IDQ0OCA5NmM1MyAwIDk2IDQzIDk2IDk2YzAgMTIuMi0yLjMgMjMuOC02LjQgMzQuNkM1OTYgMjM4LjQgNjQwIDI5MC4xIDY0MCAzNTJjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIMTQ0em03OS0yMTdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwzOS0zOVYzOTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyNTcuOWwzOSAzOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTgwLTgwYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDIyNGMwIDUzIDQzIDk2IDk2IDk2aDQ3LjJMMjkwIDIwMi41YzE3LjYtMTQuMSA0Mi42LTE0IDYwLjIgLjJzMjIuOCAzOC42IDEyLjggNTguOEwzMzMuNyAzMjBIMzUyaDY0YzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2Yy0uNSAwLTEuMSAwLTEuNiAwYzEuMS01LjIgMS42LTEwLjUgMS42LTE2YzAtNDQuMi0zNS44LTgwLTgwLTgwYy0yNC4zIDAtNDYuMSAxMC45LTYwLjggMjhDMjU2LjUgMjQuMyAyMTkuMSAwIDE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJjMCA3LjEgLjcgMTQuMSAxLjkgMjAuOEMyNy42IDE0NS40IDAgMTgxLjUgMCAyMjR6bTMzMC4xIDMuNmMtNS44LTQuNy0xNC4yLTQuNy0yMC4xLS4xbC0xNjAgMTI4Yy01LjMgNC4yLTcuNCAxMS40LTUuMSAxNy44czguMyAxMC43IDE1LjEgMTAuN2g3MC4xTDE3Ny43IDQ4OC44Yy0zLjQgNi43LTEuNiAxNC45IDQuMyAxOS42czE0LjIgNC43IDIwLjEgLjFsMTYwLTEyOGM1LjMtNC4yIDcuNC0xMS40IDUuMS0xNy44cy04LjMtMTAuNy0xNS4xLTEwLjdIMjgxLjlsNTIuNC0xMDQuOGMzLjQtNi43IDEuNi0xNC45LTQuMi0xOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1lYXRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0YzAgNTMgNDMgOTYgOTYgOTZoNDQuN2M5LjUtMjMuNSAzMi41LTQwIDU5LjMtNDBjMiAwIDMuOSAuMSA1LjggLjNDMjE3LjYgMjY1LjUgMjM1LjcgMjU2IDI1NiAyNTZzMzguNCA5LjUgNTAuMiAyNC4zYzEuOS0uMiAzLjktLjMgNS44LS4zYzI2LjkgMCA0OS45IDE2LjUgNTkuMyA0MEg0MTZjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZjLS41IDAtMS4xIDAtMS42IDBjMS4xLTUuMiAxLjYtMTAuNSAxLjYtMTZjMC00NC4yLTM1LjgtODAtODAtODBjLTI0LjMgMC00Ni4xIDEwLjktNjAuOCAyOEMyNTYuNSAyNC4zIDIxOS4xIDAgMTc2IDBDMTE0LjEgMCA2NCA1MC4xIDY0IDExMmMwIDcuMSAuNyAxNC4xIDEuOSAyMC44QzI3LjYgMTQ1LjQgMCAxODEuNSAwIDIyNHptMjg4IDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyYzAgMSAuMSAyLjEgLjEgMy4xYy0uNy0uOC0xLjQtMS42LTIuMS0yLjNjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zYy43IC43IDEuNSAxLjQgMi4zIDIuMWMtMS0uMS0yLjEtLjEtMy4xLS4xYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyYzEgMCAyLjEtLjEgMy4xLS4xYy0uOCAuNy0xLjYgMS4zLTIuMyAyLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBjLjctLjcgMS40LTEuNSAyLjEtMi4zYy0uMSAxLS4xIDIuMS0uMSAzLjFjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTEtLjEtMi4xLS4xLTMuMWMuNyAuOCAxLjMgMS42IDIuMSAyLjNjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2MtLjctLjctMS41LTEuNC0yLjMtMi4xYzEgLjEgMi4xIC4xIDMuMSAuMWMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmMtMSAwLTIuMSAuMS0zLjEgLjFjLjgtLjcgMS42LTEuMyAyLjMtMi4xYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwYy0uNyAuNy0xLjQgMS41LTIuMSAyLjNjLjEtMSAuMS0yLjEgLjEtMy4xek00OCA0NDhhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00MTYgMGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkTW9vblJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgxLjIgMEM0MTcgMCAzNjMuNSA0Ni41IDM1My43IDEwNy42YzM1LjQgMTcuNiA2MC4yIDUzLjMgNjIuMSA5NS4xYzIzLjIgMTEgNDIgMjkuNyA1My4xIDUyLjdjNCAuNCA4LjEgLjYgMTIuMyAuNmMzNC45IDAgNjYuNy0xMy44IDg5LjktMzYuMWM1LjEtNC45IDYuNC0xMi41IDMuMi0xOC43cy0xMC4xLTkuNy0xNy04LjZjLTQuOSAuOC0xMCAxLjMtMTUuMiAxLjNjLTQ5IDAtODguNC0zOS4zLTg4LjQtODcuNGMwLTMyLjYgMTgtNjEuMSA0NC45LTc2LjFjNi4xLTMuNCA5LjMtMTAuNSA3LjgtMTcuNHMtNy4zLTEyLTE0LjMtMTIuNmMtMy42LS4zLTcuMy0uNS0xMC45LS41ek0zNjcuOSAzODMuOWM0NC4yIDAgODAtMzUuOCA4MC04MGMwLTM5LjMtMjguNC03Mi4xLTY1LjgtNzguN2MxLjItNS42IDEuOS0xMS4zIDEuOS0xNy4yYzAtNDQuMi0zNS44LTgwLTgwLTgwYy0xNyAwLTMyLjggNS4zLTQ1LjggMTQuNEMyNDEuMyAxMTQuNiAyMTAuOCA5NiAxNzYgOTZjLTUzIDAtOTYgNDMtOTYgOTZsMCAxLjNjLTQ1LjQgNy42LTgwIDQ3LjEtODAgOTQuNmMwIDUzIDQzIDk2IDk2IDk2SDM2Ny45ek04NS40IDQyMC4xYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk1LjggMGM1LjUgMCAxMC45IC4yIDE2LjMgLjdjNyAuNiAxMi44IDUuNyAxNC4zIDEyLjVzLTEuNiAxMy45LTcuNyAxNy4zYy00NC40IDI1LjItNzQuNCA3My03NC40IDEyNy44YzAgODEgNjUuNSAxNDYuNiAxNDYuMiAxNDYuNmM4LjYgMCAxNy0uNyAyNS4xLTIuMWM2LjktMS4yIDEzLjggMi4yIDE3IDguNXMxLjkgMTMuOC0zLjEgMTguN2MtMzQuNSAzMy42LTgxLjcgNTQuNC0xMzMuNiA1NC40Yy05LjMgMC0xOC40LS43LTI3LjQtMS45Yy0xMS4yLTIyLjYtMjkuOC00MC45LTUyLjYtNTEuN2MtMi43LTU4LjUtNTAuMy0xMDUuMy0xMDkuMi0xMDYuN2MtMS43LTEwLjQtMi42LTIxLTIuNi0zMS44QzMwNCA4Ni4xIDM4OS44IDAgNDk1LjggMHpNNDQ3LjkgNDMxLjljMCA0NC4yLTM1LjggODAtODAgODBIOTZjLTUzIDAtOTYtNDMtOTYtOTZjMC00Ny42IDM0LjYtODcgODAtOTQuNmwwLTEuM2MwLTUzIDQzLTk2IDk2LTk2YzM0LjkgMCA2NS40IDE4LjYgODIuMiA0Ni40YzEzLTkuMSAyOC44LTE0LjQgNDUuOC0xNC40YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgNS45LS42IDExLjctMS45IDE3LjJjMzcuNCA2LjcgNjUuOCAzOS40IDY1LjggNzguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRSYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMyMGMtNTMgMC05Ni00My05Ni05NmMwLTQyLjUgMjcuNi03OC42IDY1LjktOTEuMkM2NC43IDEyNi4xIDY0IDExOS4xIDY0IDExMkM2NCA1MC4xIDExNC4xIDAgMTc2IDBjNDMuMSAwIDgwLjUgMjQuMyA5OS4yIDYwYzE0LjctMTcuMSAzNi41LTI4IDYwLjgtMjhjNDQuMiAwIDgwIDM1LjggODAgODBjMCA1LjUtLjYgMTAuOC0xLjYgMTZjLjUgMCAxLjEgMCAxLjYgMGM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5Nkg5NnptLTYuOCA1MmMxLjMtMi41IDMuOS00IDYuOC00czUuNCAxLjUgNi44IDRsMzUuMSA2NC42YzQuMSA3LjUgNi4yIDE1LjggNi4yIDI0LjN2M2MwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHYtM2MwLTguNSAyLjEtMTYuOSA2LjItMjQuM0w4OS4yIDM3MnptMTYwIDBjMS4zLTIuNSAzLjktNCA2LjgtNHM1LjQgMS41IDYuOCA0bDM1LjEgNjQuNmM0LjEgNy41IDYuMiAxNS44IDYuMiAyNC4zdjNjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDh2LTNjMC04LjUgMi4xLTE2LjkgNi4yLTI0LjNMMjQ5LjIgMzcyem0xMjQuOSA2NC42TDQwOS4yIDM3MmMxLjMtMi41IDMuOS00IDYuOC00czUuNCAxLjUgNi44IDRsMzUuMSA2NC42YzQuMSA3LjUgNi4yIDE1LjggNi4yIDI0LjN2M2MwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHYtM2MwLTguNSAyLjEtMTYuOSA2LjItMjQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRTaG93ZXJzSGVhdnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzIwYy01MyAwLTk2LTQzLTk2LTk2YzAtNDIuNSAyNy42LTc4LjYgNjUuOS05MS4yQzY0LjcgMTI2LjEgNjQgMTE5LjEgNjQgMTEyQzY0IDUwLjEgMTE0LjEgMCAxNzYgMGM0My4xIDAgODAuNSAyNC4zIDk5LjIgNjBjMTQuNy0xNy4xIDM2LjUtMjggNjAuOC0yOGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuNS0uNiAxMC44LTEuNiAxNmMuNSAwIDEuMSAwIDEuNiAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDk2ek04MS41IDM1My45YzEyLjIgNS4yIDE3LjggMTkuMyAxMi42IDMxLjVsLTQ4IDExMmMtNS4yIDEyLjItMTkuMyAxNy44LTMxLjUgMTIuNlMtMy4zIDQ5MC43IDEuOSA0NzguNWw0OC0xMTJjNS4yLTEyLjIgMTkuMy0xNy44IDMxLjUtMTIuNnptMTIwIDBjMTIuMiA1LjIgMTcuOCAxOS4zIDEyLjYgMzEuNWwtNDggMTEyYy01LjIgMTIuMi0xOS4zIDE3LjgtMzEuNSAxMi42cy0xNy44LTE5LjMtMTIuNi0zMS41bDQ4LTExMmM1LjItMTIuMiAxOS4zLTE3LjggMzEuNS0xMi42em0yNDQuNiAzMS41bC00OCAxMTJjLTUuMiAxMi4yLTE5LjMgMTcuOC0zMS41IDEyLjZzLTE3LjgtMTkuMy0xMi42LTMxLjVsNDgtMTEyYzUuMi0xMi4yIDE5LjMtMTcuOCAzMS41LTEyLjZzMTcuOCAxOS4zIDEyLjYgMzEuNXpNMzEzLjUgMzUzLjljMTIuMiA1LjIgMTcuOCAxOS4zIDEyLjYgMzEuNWwtNDggMTEyYy01LjIgMTIuMi0xOS4zIDE3LjgtMzEuNSAxMi42cy0xNy44LTE5LjMtMTIuNi0zMS41bDQ4LTExMmM1LjItMTIuMiAxOS4zLTE3LjggMzEuNS0xMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFNob3dlcnNXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMGMzOC42IDAgNzEuOSAyMi44IDg3LjIgNTUuN0MzMjUuNyA0MS4xIDM0NS44IDMyIDM2OCAzMmMzOC43IDAgNzEgMjcuNSA3OC40IDY0SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NEgxMjhjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMC01MyA0My05NiA5Ni05NnpNMTQwLjYgMjkyLjNsLTQ4IDgwYy02LjggMTEuNC0yMS42IDE1LTMyLjkgOC4ycy0xNS4xLTIxLjYtOC4yLTMyLjlsNDgtODBjNi44LTExLjQgMjEuNi0xNS4xIDMyLjktOC4yczE1LjEgMjEuNiA4LjIgMzIuOXptMzI3LjgtMzIuOWMxMS40IDYuOCAxNSAyMS42IDguMiAzMi45bC00OCA4MGMtNi44IDExLjQtMjEuNiAxNS0zMi45IDguMnMtMTUtMjEuNi04LjItMzIuOWw0OC04MGM2LjgtMTEuNCAyMS42LTE1LjEgMzIuOS04LjJ6TTI1Mi42IDI5Mi4zbC00OCA4MGMtNi44IDExLjQtMjEuNiAxNS0zMi45IDguMnMtMTUuMS0yMS42LTguMi0zMi45bDQ4LTgwYzYuOC0xMS40IDIxLjYtMTUuMSAzMi45LTguMnMxNS4xIDIxLjYgOC4yIDMyLjl6bTEwMy44LTMyLjljMTEuNCA2LjggMTUgMjEuNiA4LjIgMzIuOWwtNDggODBjLTYuOCAxMS40LTIxLjYgMTUtMzIuOSA4LjJzLTE1LjEtMjEuNi04LjItMzIuOWw0OC04MGM2LjgtMTEuNCAyMS42LTE1LjEgMzIuOS04LjJ6TTMwNi41IDQyMS45QzMyOSA0MzcuNCAzNTYuNSA0NDggMzg0IDQ0OGMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA1MDEuNyA0MTcgNTEyIDM4NCA1MTJjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA0MzcuMiAxNjUuMSA0NDggMTkyIDQ0OGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRTdW5SYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NC4yIDEuMmM1LjEgMi4xIDguNyA2LjcgOS42IDEyLjFsMTAuNCA2Mi40Yy0yMy4zIDEwLjgtNDIuOSAyOC40LTU2IDUwLjNjLTE0LjYtOS0zMS44LTE0LjEtNTAuMi0xNC4xYy01MyAwLTk2IDQzLTk2IDk2YzAgMzUuNSAxOS4zIDY2LjYgNDggODMuMmMuOCAzMS44IDEzLjIgNjAuNyAzMy4xIDgyLjdsLTU2IDM5LjJjLTQuNSAzLjItMTAuMyAzLjgtMTUuNCAxLjZzLTguNy02LjctOS42LTEyLjFMOTguMSAzMTcuOSAxMy40IDMwMy44Yy01LjQtLjktMTAtNC41LTEyLjEtOS42cy0xLjUtMTAuOSAxLjYtMTUuNEw1Mi41IDIwOCAyLjkgMTM3LjJjLTMuMi00LjUtMy44LTEwLjMtMS42LTE1LjRzNi43LTguNyAxMi4xLTkuNkw5OC4xIDk4LjFsMTQuMS04NC43Yy45LTUuNCA0LjUtMTAgOS42LTEyLjFzMTAuOS0xLjUgMTUuNCAxLjZMMjA4IDUyLjUgMjc4LjggMi45YzQuNS0zLjIgMTAuMy0zLjggMTUuNC0xLjZ6TTIwOCAxNDRjMTMuOCAwIDI2LjcgNC40IDM3LjEgMTEuOWMtMS4yIDQuMS0yLjIgOC4zLTMgMTIuNmMtMzcuOSAxNC42LTY3LjIgNDYuNi03Ny44IDg2LjRDMTUxLjggMjQzLjEgMTQ0IDIyNi41IDE0NCAyMDhjMC0zNS4zIDI4LjctNjQgNjQtNjR6bTY5LjQgMjc2YzExIDcuNCAxNCAyMi4zIDYuNyAzMy4zbC0zMiA0OGMtNy40IDExLTIyLjMgMTQtMzMuMyA2LjdzLTE0LTIyLjMtNi43LTMzLjNsMzItNDhjNy40LTExIDIyLjMtMTQgMzMuMy02Ljd6bTk2IDBjMTEgNy40IDE0IDIyLjMgNi43IDMzLjNsLTMyIDQ4Yy03LjQgMTEtMjIuMyAxNC0zMy4zIDYuN3MtMTQtMjIuMy02LjctMzMuM2wzMi00OGM3LjQtMTEgMjIuMy0xNCAzMy4zLTYuN3ptOTYgMGMxMSA3LjQgMTQgMjIuMyA2LjcgMzMuM2wtMzIgNDhjLTcuNCAxMS0yMi4zIDE0LTMzLjMgNi43cy0xNC0yMi4zLTYuNy0zMy4zbDMyLTQ4YzcuNC0xMSAyMi4zLTE0IDMzLjMtNi43em05NiAwYzExIDcuNCAxNCAyMi4zIDYuNyAzMy4zbC0zMiA0OGMtNy40IDExLTIyLjMgMTQtMzMuMyA2LjdzLTE0LTIyLjMtNi43LTMzLjNsMzItNDhjNy40LTExIDIyLjMtMTQgMzMuMy02Ljd6bTc0LjUtMTE2LjFjMCA0NC4yLTM1LjggODAtODAgODBIMjg4Yy01MyAwLTk2LTQzLTk2LTk2YzAtNDcuNiAzNC42LTg3IDgwLTk0LjZsMC0xLjNjMC01MyA0My05NiA5Ni05NmMzNC45IDAgNjUuNCAxOC42IDgyLjIgNDYuNGMxMy05LjEgMjguOC0xNC40IDQ1LjgtMTQuNGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuOS0uNiAxMS43LTEuOSAxNy4yYzM3LjQgNi43IDY1LjggMzkuNCA2NS44IDc4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NC4yIDEuMmM1LjEgMi4xIDguNyA2LjcgOS42IDEyLjFsMTQuMSA4NC43IDg0LjcgMTQuMWM1LjQgLjkgMTAgNC41IDEyLjEgOS42czEuNSAxMC45LTEuNiAxNS40bC0zOC41IDU1Yy0yLjItLjEtNC40LS4yLTYuNy0uMmMtMjMuMyAwLTQ1LjEgNi4yLTY0IDE3LjFsMC0xLjFjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZjOC4xIDAgMTUuOS0xIDIzLjQtMi45Yy0zNi42IDE4LjEtNjMuMyA1My4xLTY5LjggOTQuOWwtMjQuNCAxN2MtNC41IDMuMS0xMC4zIDMuOC0xNS40IDEuNnMtOC43LTYuNy05LjYtMTIuMUw5OC4xIDMxNy45IDEzLjQgMzAzLjhjLTUuNC0uOS0xMC00LjUtMTIuMS05LjZzLTEuNS0xMC45IDEuNi0xNS40TDUyLjUgMjA4IDIuOSAxMzcuMmMtMy4yLTQuNS0zLjgtMTAuMy0xLjYtMTUuNHM2LjctOC43IDEyLjEtOS42TDk4LjEgOTguMWwxNC4xLTg0LjdjLjktNS40IDQuNS0xMCA5LjYtMTIuMXMxMC45LTEuNSAxNS40IDEuNkwyMDggNTIuNSAyNzguOCAyLjljNC41LTMuMiAxMC4zLTMuOCAxNS40LTEuNnpNMTQ0IDIwOGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTYzOS45IDQzMS45YzAgNDQuMi0zNS44IDgwLTgwIDgwSDI4OGMtNTMgMC05Ni00My05Ni05NmMwLTQ3LjYgMzQuNi04NyA4MC05NC42bDAtMS4zYzAtNTMgNDMtOTYgOTYtOTZjMzQuOSAwIDY1LjQgMTguNiA4Mi4yIDQ2LjRjMTMtOS4xIDI4LjgtMTQuNCA0NS44LTE0LjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA1LjktLjYgMTEuNy0xLjkgMTcuMmMzNy40IDYuNyA2NS44IDM5LjQgNjUuOCA3OC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMzNmMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NEg1MTJjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhjMC02MS45LTQ0LTExMy42LTEwMi40LTEyNS40YzQuMS0xMC43IDYuNC0yMi40IDYuNC0zNC42YzAtNTMtNDMtOTYtOTYtOTZjLTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMkMxNjcuNiAzMiA5NiAxMDMuNiA5NiAxOTJjMCAyLjcgLjEgNS40IC4yIDguMUM0MC4yIDIxOS44IDAgMjczLjIgMCAzMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYuNiA0OS45QzIwNS4xIDM4LjUgMTg5LjUgMzIgMTczLjMgMzJDMTM5LjQgMzIgMTEyIDU5LjQgMTEyIDkzLjN2NC45YzAgMTIgMy4zIDIzLjcgOS40IDM0bDE4LjggMzEuM2MxLjEgMS44IDEuMiAzLjEgMSA0LjJjLS4yIDEuMi0uOCAyLjUtMiAzLjZzLTIuNCAxLjgtMy42IDJjLTEgLjItMi40IC4xLTQuMi0xbC0zMS4zLTE4LjhjLTEwLjMtNi4yLTIyLTkuNC0zNC05LjRINjEuM0MyNy40IDE0NCAwIDE3MS40IDAgMjA1LjNjMCAxNi4yIDYuNSAzMS44IDE3LjkgNDMuM2wxLjIgMS4yYzMuNCAzLjQgMy40IDkgMCAxMi40bC0xLjIgMS4yQzYuNSAyNzQuOSAwIDI5MC41IDAgMzA2LjdDMCAzNDAuNiAyNy40IDM2OCA2MS4zIDM2OGg0LjljMTIgMCAyMy43LTMuMyAzNC05LjRsMzEuMy0xOC44YzEuOC0xLjEgMy4xLTEuMiA0LjItMWMxLjIgLjIgMi41IC44IDMuNiAyczEuOCAyLjQgMiAzLjZjLjIgMSAuMSAyLjQtMSA0LjJsLTE4LjggMzEuM2MtNi4yIDEwLjMtOS40IDIyLTkuNCAzNHY0LjljMCAzMy44IDI3LjQgNjEuMyA2MS4zIDYxLjNjMTYuMiAwIDMxLjgtNi41IDQzLjMtMTcuOWwxLjItMS4yYzMuNC0zLjQgOS0zLjQgMTIuNCAwbDEuMiAxLjJjMTEuNSAxMS41IDI3LjEgMTcuOSA0My4zIDE3LjljMzMuOCAwIDYxLjMtMjcuNCA2MS4zLTYxLjN2LTQuOWMwLTEyLTMuMy0yMy43LTkuNC0zNGwtMTguOC0zMS4zYy0xLjEtMS44LTEuMi0zLjEtMS00LjJjLjItMS4yIC44LTIuNSAyLTMuNnMyLjQtMS44IDMuNi0yYzEtLjIgMi40LS4xIDQuMiAxbDMxLjMgMTguOGMxMC4zIDYuMiAyMiA5LjQgMzQgOS40aDQuOWMzMy44IDAgNjEuMy0yNy40IDYxLjMtNjEuM2MwLTE2LjItNi41LTMxLjgtMTcuOS00My4zbC0xLjItMS4yYy0zLjQtMy40LTMuNC05IDAtMTIuNGwxLjItMS4yYzExLjUtMTEuNSAxNy45LTI3LjEgMTcuOS00My4zYzAtMzMuOC0yNy40LTYxLjMtNjEuMy02MS4zaC00LjljLTEyIDAtMjMuNyAzLjMtMzQgOS40bC0zMS4zIDE4LjhjLTEuOCAxLjEtMy4xIDEuMi00LjIgMWMtMS4yLS4yLTIuNS0uOC0zLjYtMnMtMS44LTIuNC0yLTMuNmMtLjItMS0uMS0yLjQgMS00LjJsMTguOC0zMS4zYzYuMi0xMC4zIDkuNC0yMiA5LjQtMzRWOTMuM0MzMzYgNTkuNCAzMDguNiAzMiAyNzQuNyAzMmMtMTYuMiAwLTMxLjggNi41LTQzLjMgMTcuOWwtMS4yIDEuMmMtMy40IDMuNC05IDMuNC0xMi40IDBsLTEuMi0xLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVCcmFuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTA0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptODAtMjRjMCAzMi44LTE5LjcgNjEtNDggNzMuM3Y4Ny44YzE4LjgtMTAuOSA0MC43LTE3LjEgNjQtMTcuMWg5NmMzNS4zIDAgNjQtMjguNyA2NC02NHYtNi43QzMwNy43IDE0MSAyODggMTEyLjggMjg4IDgwYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM1YxNjBjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIMTc2Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY2LjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjM1MiAxNTMuM0MxOS43IDE0MSAwIDExMi44IDAgODBDMCAzNS44IDM1LjggMCA4MCAwczgwIDM1LjggODAgODB6bTIzMiAwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTgwIDQ1NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVDb21taXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMzNmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMTU2LjgtNDhDNDYyIDM2MSAzOTcuNCA0MTYgMzIwIDQxNnMtMTQyLTU1LTE1Ni44LTEyOEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxNjMuMkMxNzggMTUxIDI0Mi42IDk2IDMyMCA5NnMxNDIgNTUgMTU2LjggMTI4SDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0NzYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZUNvbXBhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ4OGMwIDkuNS01LjYgMTguMS0xNC4yIDIxLjlzLTE4LjggMi4zLTI1LjgtNC4xbC04MC03MmMtNS4xLTQuNi03LjktMTEtNy45LTE3LjhzMi45LTEzLjMgNy45LTE3LjhsODAtNzJjNy02LjMgMTcuMi03LjkgMjUuOC00LjFzMTQuMiAxMi40IDE0LjIgMjEuOXY0MGgxNmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTMuM0MzNzEuNyAxNDEgMzUyIDExMi44IDM1MiA4MGMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwYzAgMzIuOC0xOS43IDYxLTQ4IDczLjNWMzIwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4SDMyMHY0MHpNNDU2IDgwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTE5MiAyNGMwLTkuNSA1LjYtMTguMSAxNC4yLTIxLjlzMTguOC0yLjMgMjUuOCA0LjFsODAgNzJjNS4xIDQuNiA3LjkgMTEgNy45IDE3LjhzLTIuOSAxMy4zLTcuOSAxNy44bC04MCA3MmMtNyA2LjMtMTcuMiA3LjktMjUuOCA0LjFzLTE0LjItMTIuNC0xNC4yLTIxLjlWMTI4SDE3NmMtMzUuMyAwLTY0IDI4LjctNjQgNjRWMzU4LjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjE5MmMwLTcwLjcgNTcuMy0xMjggMTI4LTEyOGgxNlYyNHpNNTYgNDMyYTI0IDI0IDAgMSAwIDQ4IDAgMjQgMjQgMCAxIDAgLTQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVGb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDEwNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTgwLTI0YzAgMzIuOC0xOS43IDYxLTQ4IDczLjNWMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDMwNGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNTMuM0MzMDcuNyAxNDEgMjg4IDExMi44IDI4OCA4MGMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwYzAgMzIuOC0xOS43IDYxLTQ4IDczLjNWMTkyYzAgNTMtNDMgOTYtOTYgOTZIMjU2djcwLjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjI4OEgxNDRjLTUzIDAtOTYtNDMtOTYtOTZWMTUzLjNDMTkuNyAxNDEgMCAxMTIuOCAwIDgwQzAgMzUuOCAzNS44IDAgODAgMHM4MCAzNS44IDgwIDgwem0yMDggMjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4ek0yNDggNDMyYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA1NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTMyLjQgOTcuMmMyOC0xMi40IDQ3LjYtNDAuNSA0Ny42LTczLjJjMC00NC4yLTM1LjgtODAtODAtODBTMCAzNS44IDAgODBjMCAzMi44IDE5LjcgNjEgNDggNzMuM1YzNTguN0MxOS43IDM3MSAwIDM5OS4yIDAgNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0zMi44LTE5LjctNjEtNDgtNzMuM1YyNzJjMjYuNyAyMC4xIDYwIDMyIDk2IDMyaDg2LjdjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MGMtMzIuOCAwLTYxIDE5LjctNzMuMyA0OEgyMDhjLTQ5LjkgMC05MS0zOC4xLTk1LjYtODYuOHpNODAgNDA4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMzQ0IDI3MmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlUHVsbFJlcXVlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA1LjggMi4xQzMxNC40IDUuOSAzMjAgMTQuNSAzMjAgMjRWNjRoMTZjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhWMzU4LjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjE5MmMwLTM1LjMtMjguNy02NC02NC02NEgzMjB2NDBjMCA5LjUtNS42IDE4LjEtMTQuMiAyMS45cy0xOC44IDIuMy0yNS44LTQuMWwtODAtNzJjLTUuMS00LjYtNy45LTExLTcuOS0xNy44czIuOS0xMy4zIDcuOS0xNy44bDgwLTcyYzctNi4zIDE3LjItNy45IDI1LjgtNC4xek0xMDQgODBBMjQgMjQgMCAxIDAgNTYgODBhMjQgMjQgMCAxIDAgNDggMHptOCA3My4zVjM1OC43YzI4LjMgMTIuMyA0OCA0MC41IDQ4IDczLjNjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0zMi44IDE5LjctNjEgNDgtNzMuM1YxNTMuM0MxOS43IDE0MSAwIDExMi44IDAgODBDMCAzNS44IDM1LjggMCA4MCAwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM3pNMTA0IDQzMmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwem0zMjggMjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Mi44IDEuMmMtMTctNC45LTM0LjcgNS0zOS42IDIybC0xMjggNDQ4Yy00LjkgMTcgNSAzNC43IDIyIDM5LjZzMzQuNy01IDM5LjYtMjJsMTI4LTQ0OGM0LjktMTctNS0zNC43LTIyLTM5LjZ6bTgwLjYgMTIwLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zTDU2Mi43IDI1NmwtODkuNCA4OS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDExMi0xMTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTExMi0xMTJjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwem0tMzA2LjcgMGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTExMiAxMTJjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDExMiAxMTJjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w3Ny4zIDI1Nmw4OS40LTg5LjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvaW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA4MGMwIDE4LTE0LjMgMzQuNi0zOC40IDQ4Yy0yOS4xIDE2LjEtNzIuNSAyNy41LTEyMi4zIDMwLjljLTMuNy0xLjgtNy40LTMuNS0xMS4zLTVDMzAwLjYgMTM3LjQgMjQ4LjIgMTI4IDE5MiAxMjhjLTguMyAwLTE2LjQgLjItMjQuNSAuNmwtMS4xLS42QzE0Mi4zIDExNC42IDEyOCA5OCAxMjggODBjMC00NC4yIDg2LTgwIDE5Mi04MFM1MTIgMzUuOCA1MTIgODB6TTE2MC43IDE2MS4xYzEwLjItLjcgMjAuNy0xLjEgMzEuMy0xLjFjNjIuMiAwIDExNy40IDEyLjMgMTUyLjUgMzEuNEMzNjkuMyAyMDQuOSAzODQgMjIxLjcgMzg0IDI0MGMwIDQtLjcgNy45LTIuMSAxMS43Yy00LjYgMTMuMi0xNyAyNS4zLTM1IDM1LjVjMCAwIDAgMCAwIDBjLS4xIC4xLS4zIC4xLS40IC4ybDAgMCAwIDBjLS4zIC4yLS42IC4zLS45IC41Yy0zNSAxOS40LTkwLjggMzItMTUzLjYgMzJjLTU5LjYgMC0xMTIuOS0xMS4zLTE0OC4yLTI5LjFjLTEuOS0uOS0zLjctMS45LTUuNS0yLjlDMTQuMyAyNzQuNiAwIDI1OCAwIDI0MGMwLTM0LjggNTMuNC02NC41IDEyOC03NS40YzEwLjUtMS41IDIxLjQtMi43IDMyLjctMy41ek00MTYgMjQwYzAtMjEuOS0xMC42LTM5LjktMjQuMS01My40YzI4LjMtNC40IDU0LjItMTEuNCA3Ni4yLTIwLjVjMTYuMy02LjggMzEuNS0xNS4yIDQzLjktMjUuNVYxNzZjMCAxOS4zLTE2LjUgMzcuMS00My44IDUwLjljLTE0LjYgNy40LTMyLjQgMTMuNy01Mi40IDE4LjVjLjEtMS44IC4yLTMuNSAuMi01LjN6bS0zMiA5NmMwIDE4LTE0LjMgMzQuNi0zOC40IDQ4Yy0xLjggMS0zLjYgMS45LTUuNSAyLjlDMzA0LjkgNDA0LjcgMjUxLjYgNDE2IDE5MiA0MTZjLTYyLjggMC0xMTguNi0xMi42LTE1My42LTMyQzE0LjMgMzcwLjYgMCAzNTQgMCAzMzZWMzAwLjZjMTIuNSAxMC4zIDI3LjYgMTguNyA0My45IDI1LjVDODMuNCAzNDIuNiAxMzUuOCAzNTIgMTkyIDM1MnMxMDguNi05LjQgMTQ4LjEtMjUuOWM3LjgtMy4yIDE1LjMtNi45IDIyLjQtMTAuOWM2LjEtMy40IDExLjgtNy4yIDE3LjItMTEuMmMxLjUtMS4xIDIuOS0yLjMgNC4zLTMuNFYzMDR2NS43VjMzNnptMzIgMFYzMDQgMjc4LjFjMTktNC4yIDM2LjUtOS41IDUyLjEtMTZjMTYuMy02LjggMzEuNS0xNS4yIDQzLjktMjUuNVYyNzJjMCAxMC41LTUgMjEtMTQuOSAzMC45Yy0xNi4zIDE2LjMtNDUgMjkuNy04MS4zIDM4LjRjLjEtMS43IC4yLTMuNSAuMi01LjN6TTE5MiA0NDhjNTYuMiAwIDEwOC42LTkuNCAxNDguMS0yNS45YzE2LjMtNi44IDMxLjUtMTUuMiA0My45LTI1LjVWNDMyYzAgNDQuMi04NiA4MC0xOTIgODBTMCA0NzYuMiAwIDQzMlYzOTYuNmMxMi41IDEwLjMgMjcuNiAxOC43IDQzLjkgMjUuNUM4My40IDQzOC42IDEzNS44IDQ0OCAxOTIgNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2xvblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1IDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzE5Ny4yIDcuMSAxOTMgMjQuMkwxODEuOSA2OC42Qzk2LjEgODcuOCAzMiAxNjQuNCAzMiAyNTZjMCA1OC4xIDI1LjggMTEwLjIgNjYuNyAxNDUuNEw4MSA0NzIuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wxMy01Mi4xYzkgMy40IDE4LjQgNi4yIDI4IDguMkwxNzcgNDcyLjJjLTQuMyAxNy4xIDYuMSAzNC41IDIzLjMgMzguOHMzNC41LTYuMSAzOC44LTIzLjNsMTAuNC00MS40YzMzLjQtNC40IDY0LjEtMTcuNCA4OS44LTM2LjdjMTQuMS0xMC42IDE3LTMwLjcgNi40LTQ0LjhzLTMwLjctMTctNDQuOC02LjRjLTEwLjIgNy43LTIxLjcgMTMuOS0zNCAxOC4zTDMyMSAxNjBjOS40LS4zIDE4LjUtNC43IDI0LjYtMTIuOGMxMC42LTE0LjEgNy44LTM0LjItNi40LTQ0LjhjLTEuMS0uOC0yLjItMS42LTMuMy0yLjRMMzUxIDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzI5My4yIDcuMSAyODkgMjQuMkwyNzcuMiA3MS41Yy05LjMtMi43LTE4LjgtNC42LTI4LjYtNS45TDI1NSAzOS44ek0xNjMuMiAxNDMuM0wxMTcuMyAzMjYuOEMxMDMuOSAzMDYuNSA5NiAyODIuMiA5NiAyNTZjMC00OC43IDI3LjItOTEgNjcuMi0xMTIuN3ptOC42IDIyOS41bDYxLjEtMjQ0LjZjOS45IC43IDE5LjUgMi41IDI4LjcgNS4zbC02MiAyNDguMWMtOS43LTEuOS0xOS00LjgtMjcuOC04Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnREb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyUzAgMTI1LjEgMCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuMyAwIDAgMCAwIDAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45em0yMC0zMTJ2MTMuOWM3LjUgMS4yIDE0LjYgMi45IDIxLjEgNC43YzEwLjcgMi44IDE3IDEzLjggMTQuMiAyNC41cy0xMy44IDE3LTI0LjUgMTQuMmMtMTEtMi45LTIxLjYtNS0zMS4yLTUuMmMtNy45LS4xLTE2IDEuOC0yMS41IDVjLTQuOCAyLjgtNi4yIDUuNi02LjIgOS4zYzAgMS44IC4xIDMuNSA1LjMgNi43YzYuMyAzLjggMTUuNSA2LjcgMjguMyAxMC41bC43IC4yYzExLjIgMy40IDI1LjYgNy43IDM3LjEgMTVjMTIuOSA4LjEgMjQuMyAyMS4zIDI0LjYgNDEuNmMuMyAyMC45LTEwLjUgMzYuMS0yNC44IDQ1Yy03LjIgNC41LTE1LjIgNy4zLTIzLjIgOVYzNDRjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwVjMyOS40Yy0xMC4zLTIuMi0yMC01LjUtMjguMi04LjRsMCAwIDAgMGMtMi4xLS43LTQuMS0xLjQtNi4xLTIuMWMtMTAuNS0zLjUtMTYuMS0xNC44LTEyLjYtMjUuM3MxNC44LTE2LjEgMjUuMy0xMi42YzIuNSAuOCA0LjkgMS43IDcuMiAyLjRjMTMuNiA0LjYgMjQgOC4xIDM1LjEgOC41YzguNiAuMyAxNi41LTEuNiAyMS40LTQuN2M0LjEtMi41IDYtNS41IDUuOS0xMC41YzAtMi45LS44LTUtNS45LTguMmMtNi4zLTQtMTUuNC02LjktMjgtMTAuN2wtMS43LS41Yy0xMC45LTMuMy0yNC42LTcuNC0zNS42LTE0Yy0xMi43LTcuNy0yNC42LTIwLjUtMjQuNy00MC43Yy0uMS0yMS4xIDExLjgtMzUuNyAyNS44LTQzLjljNi45LTQuMSAxNC41LTYuOCAyMi4yLTguNVYxMzZjMC0xMSA5LTIwIDIwLTIwczIwIDkgMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnREb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0NDhjMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMlMwIDEyNS4xIDAgMjQwYzAgNDUuMSAxNy43IDg2LjggNDcuNyAxMjAuOWMtMS45IDI0LjUtMTEuNCA0Ni4zLTIxLjQgNjIuOWMtNS41IDkuMi0xMS4xIDE2LjYtMTUuMiAyMS42Yy0yLjEgMi41LTMuNyA0LjQtNC45IDUuN2MtLjYgLjYtMSAxLjEtMS4zIDEuNGwtLjMgLjMgMCAwIDAgMCAwIDAgMCAwYy00LjYgNC42LTUuOSAxMS40LTMuNCAxNy40YzIuNSA2IDguMyA5LjkgMTQuOCA5LjljMjguNyAwIDU3LjYtOC45IDgxLjYtMTkuM2MyMi45LTEwIDQyLjQtMjEuOSA1NC4zLTMwLjZjMzEuOCAxMS41IDY3IDE3LjkgMTA0LjEgMTcuOXpNMTI4IDIwOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyUzAgMTI1LjEgMCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuMyAwIDAgMCAwIDAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45ek0yMjQgMTYwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyODh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDI0MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyMjRjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTEyLjkgMzc2LjdDNTUyLjIgMzQwLjIgNTc2IDI5Mi4zIDU3NiAyNDBDNTc2IDEyNS4xIDQ2MS40IDMyIDMyMCAzMmMtNjcuNyAwLTEyOS4zIDIxLjQtMTc1LjEgNTYuM0wzOC44IDUuMXptMzg1LjIgNDI1TDgyLjkgMTYxLjNDNzAuNyAxODUuNiA2NCAyMTIuMiA2NCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuMyAwIDAgMCAwIDAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45YzM3IDAgNzIuMy02LjQgMTA0LjEtMTcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudFNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJTMCAxMjUuMSAwIDI0MGMwIDQ1LjEgMTcuNyA4Ni44IDQ3LjcgMTIwLjljLTEuOSAyNC41LTExLjQgNDYuMy0yMS40IDYyLjljLTUuNSA5LjItMTEuMSAxNi42LTE1LjIgMjEuNmMtMi4xIDIuNS0zLjcgNC40LTQuOSA1LjdjLS42IC42LTEgMS4xLTEuMyAxLjRsLS4zIC4zIDAgMCAwIDAgMCAwIDAgMGMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzI4LjcgMCA1Ny42LTguOSA4MS42LTE5LjNjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3Ljl6TTk2IDIxMi44YzAtMjAuMyAxNi41LTM2LjggMzYuOC0zNi44SDE1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMzIuOGMtMi43IDAtNC44IDIuMi00LjggNC44YzAgMS42IC44IDMuMSAyLjIgNGwyOS40IDE5LjZjMTAuMyA2LjggMTYuNCAxOC4zIDE2LjQgMzAuN2MwIDIwLjMtMTYuNSAzNi44LTM2LjggMzYuOEgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMjcuMmMyLjcgMCA0LjgtMi4yIDQuOC00LjhjMC0xLjYtLjgtMy4xLTIuMi00bC0yOS40LTE5LjZDMTAyLjIgMjM2LjcgOTYgMjI1LjIgOTYgMjEyLjh6TTM3Mi44IDE3NkgzOTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzcyLjhjLTIuNyAwLTQuOCAyLjItNC44IDQuOGMwIDEuNiAuOCAzLjEgMi4yIDRsMjkuNCAxOS42YzEwLjIgNi44IDE2LjQgMTguMyAxNi40IDMwLjdjMCAyMC4zLTE2LjUgMzYuOC0zNi44IDM2LjhIMzUyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDI3LjJjMi43IDAgNC44LTIuMiA0LjgtNC44YzAtMS42LS44LTMuMS0yLjItNGwtMjkuNC0xOS42Yy0xMC4yLTYuOC0xNi40LTE4LjMtMTYuNC0zMC43YzAtMjAuMyAxNi41LTM2LjggMzYuOC0zNi44em0tMTUyIDYuNEwyNTYgMjI5LjNsMzUuMi00Ni45YzQuMS01LjUgMTEuMy03LjggMTcuOS01LjZzMTAuOSA4LjMgMTAuOSAxNS4ydjk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI0MGwtMTkuMiAyNS42Yy0zIDQtNy44IDYuNC0xMi44IDYuNHMtOS44LTIuNC0xMi44LTYuNEwyMjQgMjQwdjQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE5MmMwLTYuOSA0LjQtMTMgMTAuOS0xNS4yczEzLjcgLjEgMTcuOSA1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDI0MGMwIDExNC45LTExNC42IDIwOC0yNTYgMjA4Yy0zNy4xIDAtNzIuMy02LjQtMTA0LjEtMTcuOWMtMTEuOSA4LjctMzEuMyAyMC42LTU0LjMgMzAuNkM3My42IDQ3MS4xIDQ0LjcgNDgwIDE2IDQ4MGMtNi41IDAtMTIuMy0zLjktMTQuOC05LjljLTIuNS02LTEuMS0xMi44IDMuNC0xNy40bDAgMCAwIDAgMCAwIDAgMCAuMy0uM2MuMy0uMyAuNy0uNyAxLjMtMS40YzEuMS0xLjIgMi44LTMuMSA0LjktNS43YzQuMS01IDkuNi0xMi40IDE1LjItMjEuNmMxMC0xNi42IDE5LjUtMzguNCAyMS40LTYyLjlDMTcuNyAzMjYuOCAwIDI4NS4xIDAgMjQwQzAgMTI1LjEgMTE0LjYgMzIgMjU2IDMyczI1NiA5My4xIDI1NiAyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnRzRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAxNzZjMCA5Ny4yLTkzLjEgMTc2LTIwOCAxNzZjLTM4LjIgMC03My45LTguNy0xMDQuNy0yMy45Yy03LjUgNC0xNiA3LjktMjUuMiAxMS40QzU5LjggMzQ2LjQgMzcuOCAzNTIgMTYgMzUyYy02LjkgMC0xMy4xLTQuNS0xNS4yLTExLjFzLjItMTMuOCA1LjgtMTcuOWwwIDAgMCAwIC4yLS4yYy4yLS4yIC42LS40IDEuMS0uOGMxLS44IDIuNS0yIDQuMy0zLjdjMy42LTMuMyA4LjUtOC4xIDEzLjMtMTQuM2M1LjUtNyAxMC43LTE1LjQgMTQuMi0yNC43QzE0LjcgMjUwLjMgMCAyMTQuNiAwIDE3NkMwIDc4LjggOTMuMSAwIDIwOCAwUzQxNiA3OC44IDQxNiAxNzZ6TTIzMS41IDM4M0MzNDguOSAzNzIuOSA0NDggMjg4LjMgNDQ4IDE3NmMwLTUuMi0uMi0xMC40LS42LTE1LjVDNTU1LjEgMTY3LjEgNjQwIDI0My4yIDY0MCAzMzZjMCAzOC42LTE0LjcgNzQuMy0zOS42IDEwMy40YzMuNSA5LjQgOC43IDE3LjcgMTQuMiAyNC43YzQuOCA2LjIgOS43IDExIDEzLjMgMTQuM2MxLjggMS42IDMuMyAyLjkgNC4zIDMuN2MuNSAuNCAuOSAuNyAxLjEgLjhsLjIgLjIgMCAwIDAgMGM1LjYgNC4xIDcuOSAxMS4zIDUuOCAxNy45Yy0yLjEgNi42LTguMyAxMS4xLTE1LjIgMTEuMWMtMjEuOCAwLTQzLjgtNS42LTYyLjEtMTIuNWMtOS4yLTMuNS0xNy44LTcuNC0yNS4yLTExLjRDNTA1LjkgNTAzLjMgNDcwLjIgNTEyIDQzMiA1MTJjLTk1LjYgMC0xNzYuMi01NC42LTIwMC41LTEyOXpNMjI4IDcyYzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMFY4NmMtNy42IDEuNy0xNS4yIDQuNC0yMi4yIDguNWMtMTMuOSA4LjMtMjUuOSAyMi44LTI1LjggNDMuOWMuMSAyMC4zIDEyIDMzLjEgMjQuNyA0MC43YzExIDYuNiAyNC43IDEwLjggMzUuNiAxNGwxLjcgLjVjMTIuNiAzLjggMjEuOCA2LjggMjggMTAuN2M1LjEgMy4yIDUuOCA1LjQgNS45IDguMmMuMSA1LTEuOCA4LTUuOSAxMC41Yy01IDMuMS0xMi45IDUtMjEuNCA0LjdjLTExLjEtLjQtMjEuNS0zLjktMzUuMS04LjVjLTIuMy0uOC00LjctMS42LTcuMi0yLjRjLTEwLjUtMy41LTIxLjggMi4yLTI1LjMgMTIuNnMyLjIgMjEuOCAxMi42IDI1LjNjMS45IC42IDQgMS4zIDYuMSAyLjFsMCAwIDAgMGM4LjMgMi45IDE3LjkgNi4yIDI4LjIgOC40VjI4MGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFYyNjYuMmM4LTEuNyAxNi00LjUgMjMuMi05YzE0LjMtOC45IDI1LjEtMjQuMSAyNC44LTQ1Yy0uMy0yMC4zLTExLjctMzMuNC0yNC42LTQxLjZjLTExLjUtNy4yLTI1LjktMTEuNi0zNy4xLTE1bC0uNy0uMmMtMTIuOC0zLjktMjEuOS02LjctMjguMy0xMC41Yy01LjItMy4xLTUuMy00LjktNS4zLTYuN2MwLTMuNyAxLjQtNi41IDYuMi05LjNjNS40LTMuMiAxMy42LTUuMSAyMS41LTVjOS42IC4xIDIwLjIgMi4yIDMxLjIgNS4yYzEwLjcgMi44IDIxLjYtMy41IDI0LjUtMTQuMnMtMy41LTIxLjYtMTQuMi0yNC41Yy02LjUtMS43LTEzLjctMy40LTIxLjEtNC43VjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMzUyYzExNC45IDAgMjA4LTc4LjggMjA4LTE3NlMzMjIuOSAwIDIwOCAwUzAgNzguOCAwIDE3NmMwIDM4LjYgMTQuNyA3NC4zIDM5LjYgMTAzLjRjLTMuNSA5LjQtOC43IDE3LjctMTQuMiAyNC43Yy00LjggNi4yLTkuNyAxMS0xMy4zIDE0LjNjLTEuOCAxLjYtMy4zIDIuOS00LjMgMy43Yy0uNSAuNC0uOSAuNy0xLjEgLjhsLS4yIC4yIDAgMCAwIDBDMSAzMjcuMi0xLjQgMzM0LjQgLjggMzQwLjlTOS4xIDM1MiAxNiAzNTJjMjEuOCAwIDQzLjgtNS42IDYyLjEtMTIuNWM5LjItMy41IDE3LjgtNy40IDI1LjMtMTEuNEMxMzQuMSAzNDMuMyAxNjkuOCAzNTIgMjA4IDM1MnpNNDQ4IDE3NmMwIDExMi4zLTk5LjEgMTk2LjktMjE2LjUgMjA3QzI1NS44IDQ1Ny40IDMzNi40IDUxMiA0MzIgNTEyYzM4LjIgMCA3My45LTguNyAxMDQuNy0yMy45YzcuNSA0IDE2IDcuOSAyNS4yIDExLjRjMTguMyA2LjkgNDAuMyAxMi41IDYyLjEgMTIuNWM2LjkgMCAxMy4xLTQuNSAxNS4yLTExLjFjMi4xLTYuNi0uMi0xMy44LTUuOC0xNy45bDAgMCAwIDAtLjItLjJjLS4yLS4yLS42LS40LTEuMS0uOGMtMS0uOC0yLjUtMi00LjMtMy43Yy0zLjYtMy4zLTguNS04LjEtMTMuMy0xNC4zYy01LjUtNy0xMC43LTE1LjQtMTQuMi0yNC43YzI0LjktMjkgMzkuNi02NC43IDM5LjYtMTAzLjRjMC05Mi44LTg0LjktMTY4LjktMTkyLjYtMTc1LjVjLjQgNS4xIC42IDEwLjMgLjYgMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcGFjdERpc2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgMzJhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0tOTYtMzJhOTYgOTYgMCAxIDAgMTkyIDAgOTYgOTYgMCAxIDAgLTE5MiAwek05NiAyNDBjMC0zNSAxNy41LTcxLjEgNDUuMi05OC44UzIwNSA5NiAyNDAgOTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTQ1LjQgMC04OS4yIDIyLjMtMTIxLjUgNTQuNVM2NCAxOTQuNiA2NCAyNDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcGFzc0RyYWZ0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA5NmMwIDE0LjMtMy4xIDI3LjktOC44IDQwLjJMMzk2IDIyNy40Yy0yMy43IDI1LjMtNTQuMiA0NC4xLTg4LjUgNTMuNkwyNTYgMTkyaDAgMGwtNjggMTE3LjVjMjEuNSA2LjggNDQuMyAxMC41IDY4LjEgMTAuNWM3MC43IDAgMTMzLjgtMzIuNyAxNzQuOS04NGMxMS4xLTEzLjggMzEuMi0xNiA0NS01czE2IDMxLjIgNSA0NUM0MjguMSAzNDEuOCAzNDcgMzg0IDI1NiAzODRjLTM1LjQgMC02OS40LTYuNC0xMDAuNy0xOC4xTDk4LjcgNDYzLjdDOTQgNDcxLjggODcgNDc4LjQgNzguNiA0ODIuNkwyMy4yIDUxMC4zYy01IDIuNS0xMC45IDIuMi0xNS42LS43UzAgNTAxLjUgMCA0OTZWNDQwLjZjMC04LjQgMi4yLTE2LjcgNi41LTI0LjFsNjAtMTAzLjdDNTMuNyAzMDEuNiA0MS44IDI4OS4zIDMxLjIgMjc2Yy0xMS4xLTEzLjgtOC44LTMzLjkgNS00NXMzMy45LTguOCA0NSA1YzUuNyA3LjEgMTEuOCAxMy44IDE4LjIgMjAuMWw2OS40LTExOS45Yy01LjYtMTIuMi04LjgtMjUuOC04LjgtNDAuMmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2em0yMSAyOTcuOWMzMi42LTEyLjggNjIuNS0zMC44IDg4LjktNTIuOWw0My43IDc1LjVjNC4yIDcuMyA2LjUgMTUuNiA2LjUgMjQuMVY0OTZjMCA1LjUtMi45IDEwLjctNy42IDEzLjZzLTEwLjYgMy4yLTE1LjYgLjdsLTU1LjQtMjcuN2MtOC40LTQuMi0xNS40LTEwLjgtMjAuMS0xOC45TDM3MyAzOTMuOXpNMjU2IDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTUwLjctMTg2LjlMMTYyLjQgMzgwLjZjLTE5LjQgNy41LTM4LjUtMTEuNi0zMS0zMWw1NS41LTE0NC4zYzMuMy04LjUgOS45LTE1LjEgMTguNC0xOC40bDE0NC4zLTU1LjVjMTkuNC03LjUgMzguNSAxMS42IDMxIDMxTDMyNS4xIDMwNi43Yy0zLjIgOC41LTkuOSAxNS4xLTE4LjQgMTguNHpNMjg4IDI1NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjR6TTMyIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNMzUyIDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM1MlY2NHpNMzIwIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wdXRlck1vdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkySDE3NlYwSDE2MEM3MS42IDAgMCA3MS42IDAgMTYwdjMyem0wIDMyVjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGg2NGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFYyMjRIMTkyIDB6bTM4NC0zMlYxNjBDMzg0IDcxLjYgMzEyLjQgMCAyMjQgMEgyMDhWMTkySDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcHV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDk2VjMyMEg2NEw2NCA5NkgzODR6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWMzIwYzAgMzUuMyAyOC43IDY0IDY0IDY0SDE4MS4zbC0xMC43IDMySDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNzcuM2wtMTAuNy0zMkgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTQ2NCAwYy0yNi41IDAtNDggMjEuNS00OCA0OFY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoNjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINTI4em0xNiA2NGgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg1NDRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bS0xNiA4MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINTQ0Yy04LjggMC0xNi03LjItMTYtMTZ6bTMyIDE2MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvb2tpZUJpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU3LjUgMjcuNmMtLjgtNS40LTQuOS05LjgtMTAuMy0xMC42djBjLTIyLjEtMy4xLTQ0LjYgLjktNjQuNCAxMS40bC03NCAzOS41Qzg5LjEgNzguNCA3My4yIDk0LjkgNjMuNCAxMTVMMjYuNyAxOTAuNmMtOS44IDIwLjEtMTMgNDIuOS05LjEgNjQuOWwxNC41IDgyLjhjMy45IDIyLjEgMTQuNiA0Mi4zIDMwLjcgNTcuOWw2MC4zIDU4LjRjMTYuMSAxNS42IDM2LjYgMjUuNiA1OC43IDI4LjdsODMgMTEuN2MyMi4xIDMuMSA0NC42LS45IDY0LjQtMTEuNGw3NC0zOS41YzE5LjctMTAuNSAzNS42LTI3IDQ1LjQtNDcuMmwzNi43LTc1LjVjOS44LTIwLjEgMTMtNDIuOSA5LjEtNjQuOXYwYy0uOS01LjMtNS4zLTkuMy0xMC42LTEwLjFjLTUxLjUtOC4yLTkyLjgtNDcuMS0xMDQuNS05Ny40Yy0xLjgtNy42LTgtMTMuNC0xNS43LTE0LjZjLTU0LjYtOC43LTk3LjctNTItMTA2LjItMTA2Ljh6TTIwOCAxNDRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNDQgMzM2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTIyNC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvb2tpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuMiAxN2MtMjIuMS0zLjEtNDQuNiAuOS02NC40IDExLjRsLTc0IDM5LjVDODkuMSA3OC40IDczLjIgOTQuOSA2My40IDExNUwyNi43IDE5MC42Yy05LjggMjAuMS0xMyA0Mi45LTkuMSA2NC45bDE0LjUgODIuOGMzLjkgMjIuMSAxNC42IDQyLjMgMzAuNyA1Ny45bDYwLjMgNTguNGMxNi4xIDE1LjYgMzYuNiAyNS42IDU4LjcgMjguN2w4MyAxMS43YzIyLjEgMy4xIDQ0LjYtLjkgNjQuNC0xMS40bDc0LTM5LjVjMTkuNy0xMC41IDM1LjYtMjcgNDUuNC00Ny4ybDM2LjctNzUuNWM5LjgtMjAuMSAxMy00Mi45IDkuMS02NC45bC0xNC42LTgyLjhjLTMuOS0yMi4xLTE0LjYtNDIuMy0zMC43LTU3LjlMMzg4LjkgNTcuNWMtMTYuMS0xNS42LTM2LjYtMjUuNi01OC43LTI4LjdMMjQ3LjIgMTd6TTIwOCAxNDRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNDQgMzM2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTIyNC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDBIMzMyLjFjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlWMzM2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDIwOGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDhjMC0yNi41IDIxLjUtNDggNDgtNDh6TTQ4IDEyOGg4MHY2NEg2NFY0NDhIMjU2VjQxNmg2NHY0OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE5OS40IDMxMi42YzMxLjIgMzEuMiA4MS45IDMxLjIgMTEzLjEgMGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjljLTUwIDUwLTEzMSA1MC0xODEgMHMtNTAtMTMxIDAtMTgxczEzMS01MCAxODEgMGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwYy0zMS4yLTMxLjItODEuOS0zMS4yLTExMy4xIDBzLTMxLjIgODEuOSAwIDExMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3VjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxNjBDNjQgODkuMyAxMjEuMyAzMiAxOTIgMzJINDQ4YzcwLjcgMCAxMjggNTcuMyAxMjggMTI4djMzLjZjLTM2LjUgNy40LTY0IDM5LjctNjQgNzguNHY0OEgxMjhWMjcyYzAtMzguNy0yNy41LTcxLTY0LTc4LjRWMTYwek01NDQgMjcyYzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM2M1LTEuOCAxMC40LTIuNyAxNi0yLjdjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDU3NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJIOTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI3MmMwLTI2LjUgMjEuNS00OCA0OC00OGM1LjYgMCAxMSAxIDE2IDIuN2MxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjN2NDggMzJoMzJINTEyaDMyVjMyMCAyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyMjR2MzJWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMyNy44YzkuOSA2LjYgMjAuNiAxMiAzMiAxNi4xVjM2OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjM1MS4xYzUuMyAuNiAxMC42IC45IDE2IC45czEwLjctLjMgMTYtLjlWMzY4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzQzLjhjMTEuNC00IDIyLjEtOS40IDMyLTE2LjFWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmwzMiAzMnY0OS41YzAgOS41IDIuOCAxOC43IDguMSAyNi42TDUzMCA0MjdjOC44IDEzLjEgMjMuNSAyMSAzOS4zIDIxYzIyLjUgMCA0MS45LTE1LjkgNDYuMy0zOGwyMC4zLTEwMS42YzIuNi0xMy0uMy0yNi41LTgtMzcuM2wtMy45LTUuNVYxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MTQuNGwtNTIuOS03NC4xQzQ5NiA4Ni41IDQ1Mi40IDY0IDQwNS45IDY0SDI3MiAyNTYgMTkyIDE0NEM3Ny43IDY0IDI0IDExNy43IDI0IDE4NHY1NEM5LjQgMjQ5LjggMCAyNjcuOCAwIDI4OHYxNy42YzAgOCA2LjQgMTQuNCAxNC40IDE0LjRDNDYuMiAzMjAgNzIgMjk0LjIgNzIgMjYyLjRWMjU2IDIyNCAxODRjMC0yNC4zIDEyLjEtNDUuOCAzMC41LTU4LjlDOTguMyAxMzUuOSA5NiAxNDcuNyA5NiAxNjB2NjR6TTU2MCAzMzZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpNMTY2LjYgMTY2LjZjLTQuMi00LjItNi42LTEwLTYuNi0xNmMwLTEyLjUgMTAuMS0yMi42IDIyLjYtMjIuNkgzNjEuNGMxMi41IDAgMjIuNiAxMC4xIDIyLjYgMjIuNmMwIDYtMi40IDExLjgtNi42IDE2bC0yMy40IDIzLjRDMzMyLjIgMjExLjggMzAyLjcgMjI0IDI3MiAyMjRzLTYwLjItMTIuMi04MS45LTMzLjlsLTIzLjQtMjMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlZGl0Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2djMySDU3NlY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNNTc2IDIyNEgwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjI0ek0xMTIgMzUyaDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMTEyIDE2YzAtOC44IDcuMi0xNiAxNi0xNkgzNjhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3BTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDE0LjMgNjQgMzJWNjRIMzJDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMySDY0VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJWMzg0SDEyOFYzMnpNMzg0IDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQ0OGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NDhsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMMTYwIDY0djY0bDIyNCAwIDAgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxMDkuM2w1NC42LTU0LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMNDAyLjcgNjQgMTYwIDY0djY0bDE3OC43IDBMMTI4IDMzOC43VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDE0LjMgNjQgMzJWNjRIMzJDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMySDY0VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJWMzg0SDE3My4zTDM4NCAxNzMuMyAzODQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ0OGwwLTI3NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9zcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2ODBINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDgwVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZoODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI1NlY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3NzaGFpcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDIuNGM5My43IDEzLjkgMTY3LjcgODggMTgxLjYgMTgxLjZINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ2OS42Yy0xMy45IDkzLjctODggMTY3LjctMTgxLjYgMTgxLjZWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ2OS42QzEzMC4zIDQ1NS43IDU2LjMgMzgxLjcgNDIuNCAyODhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDIuNEM1Ni4zIDEzMC4zIDEzMC4zIDU2LjMgMjI0IDQyLjRWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTEwNy40IDI4OGMxMi41IDU4LjMgNTguNCAxMDQuMSAxMTYuNiAxMTYuNlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnYyMC42YzU4LjMtMTIuNSAxMDQuMS01OC40IDExNi42LTExNi42SDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgyMC42QzM5Mi4xIDE2NS43IDM0Ni4zIDExOS45IDI4OCAxMDcuNFYxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTA3LjRDMTY1LjcgMTE5LjkgMTE5LjkgMTY1LjcgMTA3LjQgMjI0SDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxMDcuNHpNMjU2IDIyNGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU2IDBjLTQ4LjYgMC04OCAzOS40LTg4IDg4djI5LjJMMTIuNSAzOTAuNmMtMTQgMTAuOC0xNi42IDMwLjktNS45IDQ0LjlzMzAuOSAxNi42IDQ0LjkgNS45TDEyNi4xIDM4NEgyNTkuMmw0Ni42IDExMy4xYzUgMTIuMyAxOS4xIDE4LjEgMzEuMyAxMy4xczE4LjEtMTkuMSAxMy4xLTMxLjNMMzExLjEgMzg0SDM1MmMxLjEgMCAyLjEgMCAzLjIgMGw0Ni42IDExMy4yYzUgMTIuMyAxOS4xIDE4LjEgMzEuMyAxMy4xczE4LjEtMTkuMSAxMy4xLTMxLjNsLTQyLTEwMkM0ODQuOSAzNTQuMSA1NDQgMjgwIDU0NCAxOTJWMTI4di04bDgwLjUtMjAuMWM4LjYtMi4xIDEzLjgtMTAuOCAxMS42LTE5LjRDNjI5IDUyIDYwMy40IDMyIDU3NCAzMkg1MjMuOUM1MDcuNyAxMi41IDQ4My4zIDAgNDU2IDB6bTAgNjRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDkgMTA2YzExLjQtNyAxOS0xOS43IDE5LTM0YzAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwYzAgMTQuNCA3LjYgMjcgMTkgMzRMMjA5LjcgMjIwLjZjLTkuMSAxOC4yLTMyLjcgMjMuNC00OC42IDEwLjdMNzIgMTYwYzUtNi43IDgtMTUgOC0yNGMwLTIyLjEtMTcuOS00MC00MC00MFMwIDExMy45IDAgMTM2czE3LjkgNDAgNDAgNDBjLjIgMCAuNSAwIC43IDBMODYuNCA0MjcuNGM1LjUgMzAuNCAzMiA1Mi42IDYzIDUyLjZINDI2LjZjMzAuOSAwIDU3LjQtMjIuMSA2My01Mi42TDUzNS4zIDE3NmMuMiAwIC41IDAgLjcgMGMyMi4xIDAgNDAtMTcuOSA0MC00MHMtMTcuOS00MC00MC00MHMtNDAgMTcuOS00MCA0MGMwIDkgMyAxNy4zIDggMjRsLTg5LjEgNzEuM2MtMTUuOSAxMi43LTM5LjUgNy41LTQ4LjYtMTAuN0wzMDkgMTA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcnV0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk3LjQgOS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwem0tOTYgMTQ0bC0zNC44IDM0LjhjLTEyLjkgMTIuOS0yMS45IDI5LjItMjUuOCA0Ny4xTDExNi44IDM0Mi45Yy0xLjMgNS45LTQuMyAxMS40LTguNiAxNS43TDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw5OC44LTk4LjhjNC4zLTQuMyA5LjctNy4zIDE1LjctOC42bDEwNy42LTIzLjljMTcuOC00IDM0LjEtMTIuOSA0Ny4xLTI1LjhsMzQuNy0zNC43YzAgMCAuMS0uMSAuMS0uMXMuMS0uMSAuMS0uMWw3NC42LTc0LjYtNDUuMy00NS4zTDMzNiAyNDIuNyAyNjkuMyAxNzZsNTIuMS01Mi4xTDI3Ni4xIDc4LjZsLTc0LjcgNzQuN3pNMjI0IDIyMS4zTDI5MC43IDI4OGwtMTIuMiAxMi4yYy00LjMgNC4zLTkuNyA3LjMtMTUuNyA4LjZsLTc2LjcgMTcgMTctNzYuN2MxLjMtNS45IDQuMy0xMS40IDguNi0xNS43TDIyNCAyMjEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3J1emVpcm9TaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDI1NmMwLTg4LjQgNzEuNi0xNjAgMTYwLTE2MGM0MSAwIDc4LjMgMTUuNCAxMDYuNyA0MC43YzEzLjIgMTEuOCAzMy40IDEwLjcgNDUuMi0yLjVzMTAuNy0zMy40LTIuNS00NS4yYy0zOS42LTM1LjUtOTItNTctMTQ5LjMtNTdDMTMyLjMgMzIgMzIgMTMyLjMgMzIgMjU2czEwMC4zIDIyNCAyMjQgMjI0YzU3LjQgMCAxMDkuNy0yMS42IDE0OS4zLTU3YzEzLjItMTEuOCAxNC4zLTMyIDIuNS00NS4ycy0zMi0xNC4zLTQ1LjItMi41QzMzNC4zIDQwMC42IDI5NyA0MTYgMjU2IDQxNlYzMjB2LTguN2MwLTEyLjggMTAuNC0yMy4zIDIzLjMtMjMuM2M0LjYgMCA5LjEgMS40IDEyLjkgMy45bDEwLjEgNi43YzE0LjcgOS44IDM0LjYgNS44IDQ0LjQtOC45czUuOC0zNC42LTguOS00NC40bC0xMC4xLTYuN2MtMTQuMy05LjYtMzEuMi0xNC43LTQ4LjQtMTQuN2MtMTIuNCAwLTI0LjIgMi42LTM0LjkgNy4zYy01LjUtNC41LTEyLjYtNy4zLTIwLjMtNy4zYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1NS4zVjMyMHY4Mi43QzEzNS41IDM3OCA5NiAzMjEuNiA5NiAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM0LjUgNS43YzEzLjktNSAyOS4xLTUgNDMuMSAwbDE5MiA2OC42QzQ5NSA4My40IDUxMiAxMDcuNSA1MTIgMTM0LjZWMzc3LjRjMCAyNy0xNyA1MS4yLTQyLjUgNjAuM2wtMTkyIDY4LjZjLTEzLjkgNS0yOS4xIDUtNDMuMSAwbC0xOTItNjguNkMxNyA0MjguNiAwIDQwNC41IDAgMzc3LjRWMTM0LjZjMC0yNyAxNy01MS4yIDQyLjUtNjAuM2wxOTItNjguNnpNMjU2IDY2TDgyLjMgMTI4IDI1NiAxOTBsMTczLjctNjJMMjU2IDY2em0zMiAzNjguNmwxNjAtNTcuMXYtMTg4TDI4OCAyNDYuNnYxODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1YmVzU3RhY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNODIuNyAyMDdjLTE1LjMgOC44LTIwLjUgMjguNC0xMS43IDQzLjdsMzIgNTUuNGM4LjggMTUuMyAyOC40IDIwLjUgNDMuNyAxMS43bDU1LjQtMzJjMTUuMy04LjggMjAuNS0yOC40IDExLjctNDMuN2wtMzItNTUuNGMtOC44LTE1LjMtMjguNC0yMC41LTQzLjctMTEuN0w4Mi43IDIwN3pNMjg4IDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI4OHptNjQgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzODRjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyek0xNjAgMzg0djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0zMiAzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3ViZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkwLjggNDguNmw3OC40IDI5LjdMMjg4IDEwOS41IDIwNi44IDc4LjNsNzguNC0yOS43YzEuOC0uNyAzLjgtLjcgNS43IDB6TTEzNiA5Mi41VjIwNC43Yy0xLjMgLjQtMi42IC44LTMuOSAxLjNsLTk2IDM2LjRDMTQuNCAyNTAuNiAwIDI3MS41IDAgMjk0LjdWNDEzLjljMCAyMi4yIDEzLjEgNDIuMyAzMy41IDUxLjNsOTYgNDIuMmMxNC40IDYuMyAzMC43IDYuMyA0NS4xIDBMMjg4IDQ1Ny41bDExMy41IDQ5LjljMTQuNCA2LjMgMzAuNyA2LjMgNDUuMSAwbDk2LTQyLjJjMjAuMy04LjkgMzMuNS0yOS4xIDMzLjUtNTEuM1YyOTQuN2MwLTIzLjMtMTQuNC00NC4xLTM2LjEtNTIuNGwtOTYtMzYuNGMtMS4zLS41LTIuNi0uOS0zLjktMS4zVjkyLjVjMC0yMy4zLTE0LjQtNDQuMS0zNi4xLTUyLjRsLTk2LTM2LjRjLTEyLjgtNC44LTI2LjktNC44LTM5LjcgMGwtOTYgMzYuNEMxNTAuNCA0OC40IDEzNiA2OS4zIDEzNiA5Mi41ek0zOTIgMjEwLjZsLTgyLjQgMzEuMlYxNTIuNkwzOTIgMTIxdjg5LjZ6TTE1NC44IDI1MC45bDc4LjQgMjkuN0wxNTIgMzExLjcgNzAuOCAyODAuNmw3OC40LTI5LjdjMS44LS43IDMuOC0uNyA1LjcgMHptMTguOCAyMDQuNFYzNTQuOEwyNTYgMzIzLjJ2OTUuOWwtODIuNCAzNi4yek00MjEuMiAyNTAuOWMxLjgtLjcgMy44LS43IDUuNyAwbDc4LjQgMjkuN0w0MjQgMzExLjdsLTgxLjItMzEuMSA3OC40LTI5Ljd6TTUyMy4yIDQyMS4ybC03Ny42IDM0LjFWMzU0LjhMNTI4IDMyMy4ydjkwLjdjMCAzLjItMS45IDYtNC44IDcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMyaDk2YzEyMy43IDAgMjI0IDEwMC4zIDIyNCAyMjRzLTEwMC4zIDIyNC0yMjQgMjI0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnptMTYwIDBINjRWNDE2aDk2Yzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwcy03MS42LTE2MC0xNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEYXRhYmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2NDhjMCA0NC4yLTEwMC4zIDgwLTIyNCA4MFMwIDE3Mi4yIDAgMTI4VjgwQzAgMzUuOCAxMDAuMyAwIDIyNCAwUzQ0OCAzNS44IDQ0OCA4MHpNMzkzLjIgMjE0LjdjMjAuOC03LjQgMzkuOS0xNi45IDU0LjgtMjguNlYyODhjMCA0NC4yLTEwMC4zIDgwLTIyNCA4MFMwIDMzMi4yIDAgMjg4VjE4Ni4xYzE0LjkgMTEuOCAzNCAyMS4yIDU0LjggMjguNkM5OS43IDIzMC43IDE1OS41IDI0MCAyMjQgMjQwczEyNC4zLTkuMyAxNjkuMi0yNS4zek0wIDM0Ni4xYzE0LjkgMTEuOCAzNCAyMS4yIDU0LjggMjguNkM5OS43IDM5MC43IDE1OS41IDQwMCAyMjQgNDAwczEyNC4zLTkuMyAxNjkuMi0yNS4zYzIwLjgtNy40IDM5LjktMTYuOSA1NC44LTI4LjZWNDMyYzAgNDQuMi0xMDAuMyA4MC0yMjQgODBTMCA0NzYuMiAwIDQzMlYzNDYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVsZXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDIwNS4zYy0xNyAwLTMzLjMgNi43LTQ1LjMgMTguN0w5LjQgMjMzLjRjLTYgNi05LjQgMTQuMS05LjQgMjIuNnMzLjQgMTYuNiA5LjQgMjIuNkwxNjAgNDI5LjNjMTIgMTIgMjguMyAxOC43IDQ1LjMgMTguN0g1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4ek0yNzEgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZW1vY3JhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMmMwLTguOSAzLjgtMjAuOSA2LjItMjcuM0M3MS4yIDEuOCA3NCAwIDc3IDBjMS45IDAgMy44IC43IDUuMiAyLjFMMTI4IDQ1LjcgMTczLjggMi4xQzE3NS4yIC43IDE3Ny4xIDAgMTc5IDBjMyAwIDUuOCAxLjggNi44IDQuN2MyLjQgNi41IDYuMiAxOC40IDYuMiAyNy4zYzAgMjYuNS0yMS45IDQyLTI5LjUgNDYuNmw3Ni4yIDcyLjZjNiA1LjcgMTMuOSA4LjggMjIuMSA4LjhINDgwbDMyIDBjNDAuMyAwIDc4LjIgMTkgMTAyLjQgNTEuMmwxOS4yIDI1LjZjMTAuNiAxNC4xIDcuNyAzNC4yLTYuNCA0NC44cy0zNC4yIDcuNy00NC44LTYuNGwtMTkuMi0yNS42Yy01LjMtNy0xMS44LTEyLjgtMTkuMi0xN1YzMjBIMTkybC00MC40LTk0LjNjLTMuOS05LjItMTUuMy0xMi42LTIzLjYtN2wtNDIuMSAyOGMtOS4xIDYuMS0xOS43IDkuMy0zMC43IDkuM2gtMkMyMy45IDI1NiAwIDIzMi4xIDAgMjAyLjdjMC0xMi4xIDQuMS0yMy44IDExLjctMzMuM0w4Ny42IDc0LjZDNzguMSA2Ny40IDY0IDUzLjIgNjQgMzJ6TTQ0OCAzNTJoOTZ2NjQgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJINDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZIMjg4djY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2IDM1Mmg5Nkg0NDh6TTI2MC45IDIxMC45Yy0uOS0xLjgtMi44LTIuOS00LjgtMi45cy0zLjkgMS4xLTQuOCAyLjlsLTEwLjUgMjAuNS0yMy41IDMuM2MtMiAuMy0zLjcgMS42LTQuMyAzLjVzLS4xIDMuOSAxLjMgNS4zbDE3IDE2LTQgMjIuNmMtLjMgMS45IC41IDMuOSAyLjEgNXMzLjggMS4zIDUuNiAuNGwyMS0xMC43IDIxIDEwLjdjMS44IC45IDQgLjggNS42LS40czIuNS0zLjEgMi4xLTVsLTQtMjIuNiAxNy0xNmMxLjUtMS40IDItMy40IDEuMy01LjNzLTIuMy0zLjItNC4zLTMuNWwtMjMuNS0zLjMtMTAuNS0yMC41ek0zNjguMSAyMDhjLTIgMC0zLjkgMS4xLTQuOCAyLjlsLTEwLjUgMjAuNS0yMy41IDMuM2MtMiAuMy0zLjcgMS42LTQuMyAzLjVzLS4xIDMuOSAxLjMgNS4zbDE3IDE2LTQgMjIuNmMtLjMgMS45IC41IDMuOSAyLjEgNXMzLjggMS4zIDUuNiAuNGwyMS0xMC43IDIxIDEwLjdjMS44IC45IDQgLjggNS42LS40czIuNS0zLjEgMi4xLTVsLTQtMjIuNiAxNy0xNmMxLjUtMS40IDItMy40IDEuNC01LjNzLTIuMy0zLjItNC4zLTMuNWwtMjMuNS0zLjMtMTAuNS0yMC41Yy0uOS0xLjgtMi44LTIuOS00LjgtMi45em0xMTYuOCAyLjljLS45LTEuOC0yLjgtMi45LTQuOC0yLjlzLTMuOSAxLjEtNC44IDIuOWwtMTAuNSAyMC41LTIzLjUgMy4zYy0yIC4zLTMuNyAxLjYtNC4zIDMuNXMtLjEgMy45IDEuMyA1LjNsMTcgMTYtNCAyMi42Yy0uMyAxLjkgLjUgMy45IDIuMSA1czMuOCAxLjMgNS42IC40bDIxLTEwLjcgMjEgMTAuN2MxLjggLjkgNCAuOCA1LjYtLjRzMi41LTMuMSAyLjEtNWwtNC0yMi42IDE3LTE2YzEuNS0xLjQgMi0zLjQgMS40LTUuM3MtMi4zLTMuMi00LjMtMy41bC0yMy41LTMuMy0xMC41LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlc2t0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0SDI0MGwtMTAuNyAzMkgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0Ni43TDMzNiA0MTZINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01MTIgNjRWMjg4SDY0VjY0SDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGhhcm1hY2hha3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNy44IDIwNS43bDQ4LjYtNDIuNWMxMy44IDE5LjMgMjMuNCA0MS45IDI3LjQgNjYuMmwtNjQuNCA0LjNjLTIuNC0xMC4xLTYuNC0xOS41LTExLjYtMjh6bTE0MC4xIDE5LjVjLTUuMy0zOC44LTIwLjYtNzQuNS00My4yLTEwNC4zbC44LS43QzQ0OSAxMDguNCA0NDkuNyA4Ny42IDQzNyA3NXMtMzMuNC0xMi00NS4yIDEuNWwtLjcgLjhjLTI5LjgtMjIuNi02NS41LTM3LjktMTA0LjMtNDMuMmwuMS0xLjFjMS4yLTE3LjktMTMtMzMtMzAuOS0zM3MtMzIuMSAxNS4yLTMwLjkgMzNsLjEgMS4xYy0zOC44IDUuMy03NC41IDIwLjYtMTA0LjMgNDMuMmwtLjctLjhDMTA4LjQgNjMgODcuNiA2Mi4zIDc1IDc1cy0xMiAzMy40IDEuNSA0NS4ybC44IC43Yy0yMi42IDI5LjgtMzcuOSA2NS41LTQzLjIgMTA0LjNsLTEuMS0uMWMtMTcuOS0xLjItMzMgMTMtMzMgMzAuOXMxNS4yIDMyLjEgMzMgMzAuOWwxLjEtLjFjNS4zIDM4LjggMjAuNiA3NC41IDQzLjIgMTA0LjNsLS44IC43QzYzIDQwMy42IDYyLjMgNDI0LjQgNzUgNDM3czMzLjQgMTIgNDUuMi0xLjVsLjctLjhjMjkuOCAyMi42IDY1LjUgMzcuOSAxMDQuMyA0My4ybC0uMSAxLjFjLTEuMiAxNy45IDEzIDMzIDMwLjkgMzNzMzIuMS0xNS4yIDMwLjktMzNsLS4xLTEuMWMzOC44LTUuMyA3NC41LTIwLjYgMTA0LjMtNDMuMmwuNyAuOGMxMS44IDEzLjUgMzIuNSAxNC4yIDQ1LjIgMS41czEyLTMzLjQtMS41LTQ1LjJsLS44LS43YzIyLjYtMjkuOCAzNy45LTY1LjUgNDMuMi0xMDQuM2wxLjEgLjFjMTcuOSAxLjIgMzMtMTMgMzMtMzAuOXMtMTUuMi0zMi4xLTMzLTMwLjlsLTEuMSAuMXpNMTYzLjIgMTI1LjZjMTkuMy0xMy44IDQxLjktMjMuNCA2Ni4yLTI3LjVsNC4zIDY0LjRjLTEwIDIuNC0xOS41IDYuNC0yOCAxMS42bC00Mi41LTQ4LjZ6bS02NSAxMDMuOGM0LjEtMjQuNCAxMy43LTQ2LjkgMjcuNS02Ni4ybDQ4LjYgNDIuNWMtNS4zIDguNS05LjIgMTgtMTEuNiAyOGwtNjQuNC00LjN6bTI3LjUgMTE5LjRjLTEzLjgtMTkuMy0yMy40LTQxLjktMjcuNS02Ni4ybDY0LjQtNC4zYzIuNCAxMCA2LjQgMTkuNSAxMS42IDI4bC00OC42IDQyLjV6bTEwMy44IDY1Yy0yNC40LTQuMS00Ni45LTEzLjctNjYuMi0yNy40bDQyLjUtNDguNmM4LjUgNS4zIDE4IDkuMiAyOCAxMS42bC00LjMgNjQuNHptMTE5LjQtMjcuNGMtMTkuMyAxMy44LTQxLjkgMjMuNC02Ni4yIDI3LjRsLTQuMy02NC40YzEwLTIuNCAxOS41LTYuNCAyOC0xMS42bDQyLjUgNDguNnptNjUtMTAzLjhjLTQuMSAyNC40LTEzLjcgNDYuOS0yNy40IDY2LjJsLTQ4LjYtNDIuNWM1LjMtOC41IDkuMi0xOCAxMS42LTI4bDY0LjQgNC4zem0tNjUtMTU2LjlsLTQyLjUgNDguNmMtOC41LTUuMy0xOC05LjItMjgtMTEuNmw0LjMtNjQuNGMyNC40IDQuMSA0Ni45IDEzLjcgNjYuMiAyNy41ek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhZ3JhbU5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDE2MGMwIDM1LjMtMjguNyA2NC02NCA2NEgyODB2NjRoNDYuMWMyMS40IDAgMzIuMSAyNS45IDE3IDQxTDI3MyAzOTljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDE2OSAzMjljLTE1LjEtMTUuMS00LjQtNDEgMTctNDFIMjMyVjIyNEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0djY0ek00NDggNDE2VjM1MkgzNjUuM2wuNC0uNGMxOC40LTE4LjQgMjAuNC00My43IDExLTYzLjZsNzEuMyAwYzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0bDcxLjMgMGMtOS40IDE5LjktNy40IDQ1LjIgMTEgNjMuNmwuNCAuNEg2NHY2NEgyMTAuN2w1LjcgNS43YzIxLjkgMjEuOSA1Ny4zIDIxLjkgNzkuMiAwbDUuNy01LjdINDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFncmFtUHJlZGVjZXNzb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDQxNmwwLTY0TDY0IDM1MmwwIDY0IDM4NCAwem0wIDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC02NGMwLTM1LjMgMjguNy02NCA2NC02NGwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0ek0yODggMTYwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDIyNGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwxNDQgMCAxNiAwIDE0NCAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwbDAgMTYgMzguMSAwYzIxLjQgMCAzMi4xIDI1LjkgMTcgNDFMNDMzIDIzOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMzI5IDE2OWMtMTUuMS0xNS4xLTQuNC00MSAxNy00MWwzOC4xIDAgMC0xNmMwLTguOC03LjItMTYtMTYtMTZsLTgwIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhZ3JhbVByb2plY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OFY5NkgzODRWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhINDMyYy0yNi41IDAtNDgtMjEuNS00OC00OFYxNjBIMTkydjE2YzAgMS43LS4xIDMuNC0uMyA1TDI3MiAyODhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhIMjcyYy0yNi41IDAtNDgtMjEuNS00OC00OFYzMzZjMC0xLjcgLjEtMy40IC4zLTVMMTQ0IDIyNEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpYWdyYW1TdWNjZXNzb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDQxNmwwLTY0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NHpNNjQgMTYwbDAtNjQgMTQ0IDAgMTYgMCAwIDY0TDY0IDE2MHptMjI0IDBsMC02NCA4MCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDE2LTM4LjEgMGMtMjEuNCAwLTMyLjEgMjUuOS0xNyA0MUwzOTkgMjM5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDUwMyAxNjljMTUuMS0xNS4xIDQuNC00MS0xNy00MUw0NDggMTI4bDAtMTZjMC00NC4yLTM1LjgtODAtODAtODBMMjI0IDMybC0xNiAwTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxNjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhbW9uZFR1cm5SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjcuNyAxMS43YzE1LjYtMTUuNiA0MC45LTE1LjYgNTYuNiAwbDIxNiAyMTZjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZsLTIxNiAyMTZjLTE1LjYgMTUuNi00MC45IDE1LjYtNTYuNiAwbC0yMTYtMjE2Yy0xNS42LTE1LjYtMTUuNi00MC45IDAtNTYuNmwyMTYtMjE2em04Ny42IDEzN2MtNC42LTQuNi0xMS41LTUuOS0xNy40LTMuNXMtOS45IDguMy05LjkgMTQuOHY1NkgyMjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjgwYzAtOC44IDcuMi0xNiAxNi0xNmg2NHY1NmMwIDYuNSAzLjkgMTIuMyA5LjkgMTQuOHMxMi45IDEuMSAxNy40LTMuNWw4MC04MGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpYW1vbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg0LjMgMTEuN2MtMTUuNi0xNS42LTQwLjktMTUuNi01Ni42IDBsLTIxNiAyMTZjLTE1LjYgMTUuNi0xNS42IDQwLjkgMCA1Ni42bDIxNiAyMTZjMTUuNiAxNS42IDQwLjkgMTUuNiA1Ni42IDBsMjE2LTIxNmMxNS42LTE1LjYgMTUuNi00MC45IDAtNTYuNmwtMjE2LTIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUQyMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OC43IDEyNS44bDUzLjIgMzEuOWM3LjggNC43IDE3LjggMiAyMi4yLTUuOUwyMDEuNiAxMi4xYzMtNS40LS45LTEyLjEtNy4xLTEyLjFjLTEuNiAwLTMuMiAuNS00LjYgMS40TDQ3LjkgOTguOGMtOS42IDYuNi05LjIgMjAuOSAuOCAyNi45ek0xNiAxNzEuN1YyOTUuM2MwIDggMTAuNCAxMSAxNC43IDQuNGw2MC05MmM1LTcuNiAyLjYtMTcuOC01LjItMjIuNUw0MC4yIDE1OEMyOS42IDE1MS42IDE2IDE1OS4zIDE2IDE3MS43ek0zMTAuNCAxMi4xbDc3LjYgMTM5LjZjNC40IDcuOSAxNC41IDEwLjYgMjIuMiA1LjlsNTMuMi0zMS45YzEwLTYgMTAuNC0yMC4zIC44LTI2LjlMMzIyLjEgMS40Yy0xLjQtLjktMy0xLjQtNC42LTEuNGMtNi4yIDAtMTAuMSA2LjctNy4xIDEyLjF6TTQ5NiAxNzEuN2MwLTEyLjQtMTMuNi0yMC4xLTI0LjItMTMuN2wtNDUuMyAyNy4yYy03LjggNC43LTEwLjEgMTQuOS01LjIgMjIuNWw2MCA5MmM0LjMgNi43IDE0LjcgMy42IDE0LjctNC40VjE3MS43em0tNDkuMyAyNDZMMjg2LjEgNDM2LjZjLTguMSAuOS0xNC4xIDcuOC0xNC4xIDE1Ljl2NTIuOGMwIDMuNyAzIDYuOCA2LjggNi44Yy44IDAgMS42LS4xIDIuNC0uNGwxNzIuNy02NGM2LjEtMi4yIDEwLjEtOCAxMC4xLTE0LjVjMC05LjMtOC4xLTE2LjUtMTcuMy0xNS40ek0yMzMuMiA1MTJjMy43IDAgNi44LTMgNi44LTYuOFY0NTIuNmMwLTguMS02LjEtMTQuOS0xNC4xLTE1LjlsLTE2MC42LTE5Yy05LjItMS4xLTE3LjMgNi4xLTE3LjMgMTUuNGMwIDYuNSA0IDEyLjMgMTAuMSAxNC41bDE3Mi43IDY0Yy44IC4zIDEuNiAuNCAyLjQgLjR6TTQxLjcgMzgyLjlsMTcwLjkgMjAuMmM3LjggLjkgMTMuNC03LjUgOS41LTE0LjNsLTg1LjctMTUwYy01LjktMTAuNC0yMC43LTEwLjgtMjcuMy0uOEwzMC4yIDM1OC4yYy02LjUgOS45LS4zIDIzLjMgMTEuNSAyNC43em00MzkuNi0yNC44TDQwMi45IDIzOC4xYy02LjUtMTAtMjEuNC05LjYtMjcuMyAuOEwyOTAuMiAzODguNWMtMy45IDYuOCAxLjYgMTUuMiA5LjUgMTQuM2wxNzAuMS0yMGMxMS44LTEuNCAxOC0xNC43IDExLjUtMjQuNnptLTIxNi45IDExbDc4LjQtMTM3LjJjNi4xLTEwLjctMS42LTIzLjktMTMuOS0yMy45SDE4My4xYy0xMi4zIDAtMjAgMTMuMy0xMy45IDIzLjlsNzguNCAxMzcuMmMzLjcgNi40IDEzIDYuNCAxNi43IDB6TTE3NC40IDE3NkgzMzcuNmMxMi4yIDAgMTkuOS0xMy4xIDE0LTIzLjhsLTgwLTE0NGMtMi44LTUuMS04LjItOC4yLTE0LTguMmgtMy4yYy01LjggMC0xMS4yIDMuMi0xNCA4LjJsLTgwIDE0NGMtNS45IDEwLjcgMS44IDIzLjggMTQgMjMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUQ2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMSAxMC4zYzE0LjMtNy44IDMxLjYtNy44IDQ2IDBMNDIyLjMgMTA2YzUuMSAyLjggOC4zIDguMiA4LjMgMTRzLTMuMiAxMS4yLTguMyAxNEwyMzEuNyAyMzhjLTQuOCAyLjYtMTAuNSAyLjYtMTUuMyAwTDI1LjcgMTM0Yy01LjEtMi44LTguMy04LjItOC4zLTE0czMuMi0xMS4yIDguMy0xNEwyMDEgMTAuM3pNMjMuNyAxNzBsMTc2IDk2YzUuMSAyLjggOC4zIDguMiA4LjMgMTRWNDk2YzAgNS42LTMgMTAuOS03LjggMTMuOHMtMTAuOSAzLTE1LjggLjNMMjUgNDIzLjFDOS42IDQxNC43IDAgMzk4LjYgMCAzODFWMTg0YzAtNS42IDMtMTAuOSA3LjgtMTMuOHMxMC45LTMgMTUuOC0uM3ptNDAwLjcgMGM1LTIuNyAxMS0yLjYgMTUuOCAuM3M3LjggOC4xIDcuOCAxMy44VjM4MWMwIDE3LjYtOS42IDMzLjctMjUgNDIuMUwyNjMuNyA1MTBjLTUgMi43LTExIDIuNi0xNS44LS4zcy03LjgtOC4xLTcuOC0xMy44VjI4MGMwLTUuOSAzLjItMTEuMiA4LjMtMTRsMTc2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTY0IDk2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNOTYgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTIyNCAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NC02NGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0zMiAxNjBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRm91ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em0xNjAgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTI4IDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTM1MiAxNjBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzIwIDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VPbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVNpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em0xNjAgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTI4IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTMyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMyMCAxOTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0zMiA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zMjAgMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVRocmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNjQgOTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NCAxMjhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTI4IDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVR3byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek0zNTIgMzUyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTEyOCAxOTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NC45IDM0LjNjLTI4LjEtMjguMS03My43LTI4LjEtMTAxLjggMEwzNC4zIDE3My4xYy0yOC4xIDI4LjEtMjguMSA3My43IDAgMTAxLjhMMTczLjEgNDEzLjdjMjguMSAyOC4xIDczLjcgMjguMSAxMDEuOCAwTDQxMy43IDI3NC45YzI4LjEtMjguMSAyOC4xLTczLjcgMC0xMDEuOEwyNzQuOSAzNC4zek0yMDAgMjI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTk2IDIwMGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTIyNCAzNzZhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4ek0zNTIgMjAwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMjI0IDEyMGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6bTk2IDMyOGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1NzZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDQ2MS43YzExLjYgMzYgMy4xIDc3LTI1LjQgMTA1LjVMMzIwIDQxMy44VjQ0OHpNNDgwIDMyOGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc2Vhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM2LjQgNjEuNEwyMjcgNzUuNWMtMjEuMyAzMi01OS40IDQ4LjUtOTcuMyA0Mi4xbC01OS42LTkuOUMzMy40IDEwMS42IDAgMTI5LjkgLjEgMTY3LjFjMCAxNS45IDYuNCAzMS4yIDE3LjYgNDIuNWwyOS4yIDI5LjJjMTEgMTEgMTcuMiAyNS45IDE3LjIgNDEuNWMwIDE1LjgtNi40IDMwLjktMTcuNyA0MkwzMy4zIDMzNS4xQzIyLjIgMzQ1LjkgMTYgMzYwLjcgMTYgMzc2LjJjMCAzNi44IDM0LjEgNjQuMiA3MC4xIDU2LjJsNjIuMy0xMy44YzcuNy0xLjcgMTUuNy0yLjYgMjMuNi0yLjZoMTBjMjcuMiAwIDUzLjcgOS4zIDc1IDI2LjNMMjg3LjggNDY3YzEwLjUgOC40IDIzLjYgMTMgMzcgMTNjMzIuNyAwIDU5LjMtMjYuNSA1OS4zLTU5LjNsMC0yNS4yYzAtMzQuOSAyMS40LTY2LjIgNTMuOS03OC44bDM2LjktMTQuM2MyMi40LTguNyAzNy4yLTMwLjMgMzcuMi01NC4zYzAtMjguMS0yMC4xLTUyLjMtNDcuOC01Ny4zbC0yOC01LjFjLTM2LjUtNi43LTY1LjQtMzQuNS03My42LTcwLjdsLTcuMS0zMS41QzM0OC45IDUzLjQgMzIyLjEgMzIgMjkxLjMgMzJjLTIyIDAtNDIuNiAxMS01NC45IDI5LjR6TTE2MCAxOTJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptMCA4MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc3BsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0SDI0MGwtMTAuNyAzMkgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0Ni43TDMzNiA0MTZINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01MTIgNjRWMzUySDY0VjY0SDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGl2aWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiA5NmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0wIDMyMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00MDAgMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG5hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyYzAgNTkuOC0zMC4zIDEwNy41LTY5LjQgMTQ2LjZjLTI4IDI4LTYyLjUgNTMuNS05Ny4zIDc3LjRsLTIuNSAxLjdjLTExLjkgOC4xLTIzLjggMTYuMS0zNS41IDIzLjlsMCAwIDAgMCAwIDAtMS42IDFjLTYgNC0xMS45IDcuOS0xNy44IDExLjljLTIwLjkgMTQtNDAuOCAyNy43LTU5LjMgNDEuNUgyODMuM2MtOS44LTcuNC0yMC4xLTE0LjctMzAuNy0yMi4xbDctNC43IDMtMmMxNS4xLTEwLjEgMzAuOS0yMC42IDQ2LjctMzEuNmMyNSAxOC4xIDQ4LjkgMzcuMyA2OS40IDU3LjdDNDE3LjcgMzcyLjUgNDQ4IDQyMC4yIDQ0OCA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJINjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJjMC01OS44IDMwLjMtMTA3LjUgNjkuNC0xNDYuNmMyOC0yOCA2Mi41LTUzLjUgOTcuMy03Ny40Yy0zNC44LTIzLjktNjkuMy00OS4zLTk3LjMtNzcuNEMzMC4zIDEzOS41IDAgOTEuOCAwIDMyQzAgMTQuMyAxNC4zIDAgMzIgMFM2NCAxNC4zIDY0IDMySDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzM4LjYgMzg0SDEwOS40Yy0xMC4xIDEwLjYtMTguNiAyMS4zLTI1LjUgMzJIMzY0LjFjLTYuOC0xMC43LTE1LjMtMjEuNC0yNS41LTMyek0xMDkuNCAxMjhIMzM4LjZjMTAuMS0xMC43IDE4LjYtMjEuMyAyNS41LTMySDgzLjljNi44IDEwLjcgMTUuMyAyMS4zIDI1LjUgMzJ6bTU1LjQgNDhjMTguNCAxMy44IDM4LjQgMjcuNSA1OS4zIDQxLjVjMjAuOS0xNCA0MC44LTI3LjcgNTkuMy00MS41SDE2NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA5LjYgMTU4LjVMMzMyLjcgMTkuOEMzMzQuNiA4LjQgMzQ0LjUgMCAzNTYuMSAwYzcuNSAwIDE0LjUgMy41IDE5IDkuNUwzOTIgMzJoNTIuMWMxMi43IDAgMjQuOSA1LjEgMzMuOSAxNC4xTDQ5NiA2NGg1NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyNGMwIDQ0LjItMzUuOCA4MC04MCA4MEg0NjQgNDQ4IDQyNi43bC01LjEgMzAuNS0xMTItNjR6TTQxNiAyNTYuMUw0MTYgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzY0LjhjLTI0IDEyLjMtNTEuMiAxOS4yLTgwIDE5LjJzLTU2LTYuOS04MC0xOS4yVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjQ5LjhjLTI4LjgtMTAuOS01MS40LTM1LjMtNTkuMi02Ni41TDEgMTY3LjhjLTQuMy0xNy4xIDYuMS0zNC41IDIzLjMtMzguOHMzNC41IDYuMSAzOC44IDIzLjNsMy45IDE1LjVDNzAuNSAxODIgODMuMyAxOTIgOTggMTkyaDMwIDE2SDMwMy44TDQxNiAyNTYuMXpNNDY0IDgwYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvbGxhclNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjcuN2MxLjYgLjIgMy4xIC40IDQuNyAuN2MuNCAuMSAuNyAuMSAxLjEgLjJsNDggOC44YzE3LjQgMy4yIDI4LjkgMTkuOSAyNS43IDM3LjJzLTE5LjkgMjguOS0zNy4yIDI1LjdsLTQ3LjUtOC43Yy0zMS4zLTQuNi01OC45LTEuNS03OC4zIDYuMnMtMjcuMiAxOC4zLTI5IDI4LjFjLTIgMTAuNy0uNSAxNi43IDEuMiAyMC40YzEuOCAzLjkgNS41IDguMyAxMi44IDEzLjJjMTYuMyAxMC43IDQxLjMgMTcuNyA3My43IDI2LjNsMi45IC44YzI4LjYgNy42IDYzLjYgMTYuOCA4OS42IDMzLjhjMTQuMiA5LjMgMjcuNiAyMS45IDM1LjkgMzkuNWM4LjUgMTcuOSAxMC4zIDM3LjkgNi40IDU5LjJjLTYuOSAzOC0zMy4xIDYzLjQtNjUuNiA3Ni43Yy0xMy43IDUuNi0yOC42IDkuMi00NC40IDExVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDUuMWMtLjQtLjEtLjktLjEtMS4zLS4ybC0uMiAwIDAgMGMtMjQuNC0zLjgtNjQuNS0xNC4zLTkxLjUtMjYuM2MtMTYuMS03LjItMjMuNC0yNi4xLTE2LjItNDIuMnMyNi4xLTIzLjQgNDIuMi0xNi4yYzIwLjkgOS4zIDU1LjMgMTguNSA3NS4yIDIxLjZjMzEuOSA0LjcgNTguMiAyIDc2LTUuM2MxNi45LTYuOSAyNC42LTE2LjkgMjYuOC0yOC45YzEuOS0xMC42IC40LTE2LjctMS4zLTIwLjRjLTEuOS00LTUuNi04LjQtMTMtMTMuM2MtMTYuNC0xMC43LTQxLjUtMTcuNy03NC0yNi4zbC0yLjgtLjcgMCAwQzExOS40IDI3OS4zIDg0LjQgMjcwIDU4LjQgMjUzYy0xNC4yLTkuMy0yNy41LTIyLTM1LjgtMzkuNmMtOC40LTE3LjktMTAuMS0zNy45LTYuMS01OS4yQzIzLjcgMTE2IDUyLjMgOTEuMiA4NC44IDc4LjNjMTMuMy01LjMgMjcuOS04LjkgNDMuMi0xMVYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9sbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBoNzIuOWMyNy41IDAgNTIgMTcuNiA2MC43IDQzLjhMMjU3LjcgMzIwYzMwLjEgLjUgNTYuOCAxNC45IDc0IDM3bDIwMi4xLTY3LjRjMTYuOC01LjYgMzQuOSAzLjUgNDAuNSAyMC4ycy0zLjUgMzQuOS0yMC4yIDQwLjVMMzUyIDQxNy43Yy0uOSA1Mi4yLTQzLjUgOTQuMy05NiA5NC4zYy01MyAwLTk2LTQzLTk2LTk2YzAtMzAuOCAxNC41LTU4LjIgMzctNzUuOEwxMDQuOSA2NEgzMkMxNC4zIDY0IDAgNDkuNyAwIDMyek0yNDQuOCAxMzQuNWMtNS41LTE2LjggMy43LTM0LjkgMjAuNS00MC4zTDMxMSA3OS40bDE5LjggNjAuOSA2MC45LTE5LjhMMzcxLjggNTkuNmw0NS43LTE0LjhjMTYuOC01LjUgMzQuOSAzLjcgNDAuMyAyMC41bDQ5LjQgMTUyLjJjNS41IDE2LjgtMy43IDM0LjktMjAuNSA0MC4zTDMzNC41IDMwNy4yYy0xNi44IDUuNS0zNC45LTMuNy00MC4zLTIwLjVMMjQ0LjggMTM0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvbmdTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJ2NDkuMWMtMTguOC0xMC45LTQwLjctMTcuMS02NC0xNy4xYy03MC43IDAtMTI4IDU3LjMtMTI4IDEyOHM1Ny4zIDEyOCAxMjggMTI4YzI0LjUgMCA0Ny40LTYuOSA2Ni44LTE4LjhjNSAxMS4xIDE2LjIgMTguOCAyOS4yIDE4LjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjg4IDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTI4IDI4OGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTMyIDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvb3JDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRINDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MzIgMTQ0IDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDk2VjY0ek0zODQgMjg4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9vck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMyYzAtOS45LTQuNS0xOS4yLTEyLjMtMjUuMlMyODkuOC0xLjQgMjgwLjIgMWwtMTc5LjkgNDVDNzkgNTEuMyA2NCA3MC41IDY0IDkyLjVWNDQ4SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDk2IDI4OGgzMlY0ODAgMzJ6TTI1NiAyNTZjMCAxNy43LTEwLjcgMzItMjQgMzJzLTI0LTE0LjMtMjQtMzJzMTAuNy0zMiAyNC0zMnMyNCAxNC4zIDI0IDMyem05Ni0xMjhoOTZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDUxMlYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzUydjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MC44IDk2LjVjMTQgMTcgMzEgMzAuOSA0OS41IDQyLjJjMjUuOSAxNS44IDUzLjcgMjUuOSA3Ny43IDMxLjZWMTM4LjhDMjY1LjggMTA4LjUgMjUwIDcxLjUgMjQ4LjYgMjhjLS40LTExLjMtNy41LTIxLjUtMTguNC0yNC40Yy03LjYtMi0xNS44LS4yLTIxIDUuOGMtMTMuMyAxNS40LTMyLjcgNDQuNi00OC40IDg3LjJ6TTMyMCAxNDR2MzAuNmwwIDB2MS4zbDAgMCAwIDMyLjFjLTYwLjgtNS4xLTE4NS00My44LTIxOS4zLTE1Ny4yQzk3LjQgNDAgODcuOSAzMiA3Ni42IDMyYy03LjkgMC0xNS4zIDMuOS0xOC44IDExQzQ2LjggNjUuOSAzMiAxMTIuMSAzMiAxNzZjMCAxMTYuOSA4MC4xIDE4MC41IDExOC40IDIwMi44TDExLjggNDE2LjZDNi43IDQxOCAyLjYgNDIxLjggLjkgNDI2LjhzLS44IDEwLjYgMi4zIDE0LjhDMjEuNyA0NjYuMiA3Ny4zIDUxMiAxNjAgNTEyYzMuNiAwIDcuMi0xLjIgMTAtMy41TDI0NS42IDQ0OEgzMjBjODguNCAwIDE2MC03MS42IDE2MC0xNjBWMTI4bDI5LjktNDQuOWMxLjMtMiAyLjEtNC40IDIuMS02LjhjMC02LjgtNS41LTEyLjMtMTIuMy0xMi4zSDQwMGMtNDQuMiAwLTgwIDM1LjgtODAgODB6bTgwLTE2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG93bkxlZnRBbmRVcFJpZ2h0VG9DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM5IDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDM5IDM5YzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJzLTEyLjUgMTQuOC0yMi4yIDE0LjhIMjk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY3MmMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsMzkgMzlMNDM5IDd6TTcyIDI3MkgyMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNDQwYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTM5LTM5TDczIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyA0NzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDg3LTg3TDU1IDMxM2MtNi45LTYuOS04LjktMTcuMi01LjItMjYuMnMxMi41LTE0LjggMjIuMi0xNC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3duTG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDMzNC41Yy0zLjggOC44LTIgMTkgNC42IDI2bDEzNiAxNDRjNC41IDQuOCAxMC44IDcuNSAxNy40IDcuNXMxMi45LTIuNyAxNy40LTcuNWwxMzYtMTQ0YzYuNi03IDguNC0xNy4yIDQuNi0yNnMtMTIuNS0xNC41LTIyLTE0LjVsLTcyIDAgMC0yODhjMC0xNy43LTE0LjMtMzItMzItMzJMMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMybDAgMjg4LTcyIDBjLTkuNiAwLTE4LjIgNS43LTIyIDE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyNzQuN2wtNzMuNC03My40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjhjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjg4IDI3NC43VjMyek02NCAzNTJjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY0MTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzQ2LjVsLTQ1LjMgNDUuM2MtMjUgMjUtNjUuNSAyNS05MC41IDBMMTY1LjUgMzUySDY0em0zNjggNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDEyNC41bC01MS45LTEzYy02LjUtMS42LTExLjMtNy4xLTEyLTEzLjhzMi44LTEzLjEgOC43LTE2LjFsNDAuOC0yMC40TDI5NC40IDI4LjhjLTUuNS00LjEtNy44LTExLjMtNS42LTE3LjlTMjk3LjEgMCAzMDQgMEg0MTZoMzIgMTZjMzAuMiAwIDU4LjcgMTQuMiA3Ni44IDM4LjRsNTcuNiA3Ni44YzYuMiA4LjMgOS42IDE4LjQgOS42IDI4LjhjMCAyNi41LTIxLjUgNDgtNDggNDhINTM4LjVjLTE3IDAtMzMuMy02LjctNDUuMy0xOC43TDQ4MCAxNjBINDQ4djIxLjVjMCAyNC44IDEyLjggNDcuOSAzMy44IDYxLjFsMTA2LjYgNjYuNmMzMi4xIDIwLjEgNTEuNiA1NS4yIDUxLjYgOTMuMUM2NDAgNDYyLjkgNTkwLjkgNTEyIDUzMC4yIDUxMkg0OTYgNDMyIDMyLjNjLTMuMyAwLTYuNi0uNC05LjYtMS40QzEzLjUgNTA3LjggNiA1MDEgMi40IDQ5Mi4xQzEgNDg4LjcgLjIgNDg1LjIgMCA0ODEuNGMtLjItMy43IC4zLTcuMyAxLjMtMTAuN2MyLjgtOS4yIDkuNi0xNi43IDE4LjYtMjAuNGMzLTEuMiA2LjItMiA5LjUtMi4yTDQzMy4zIDQxMmM4LjMtLjcgMTQuNy03LjcgMTQuNy0xNi4xYzAtNC4zLTEuNy04LjQtNC43LTExLjRsLTQ0LjQtNDQuNGMtMzAtMzAtNDYuOS03MC43LTQ2LjktMTEzLjFWMTgxLjV2LTU3ek01MTIgNzIuM2MwLS4xIDAtLjIgMC0uM3MwLS4yIDAtLjN2LjZ6bS0xLjMgNy40TDQ2NC4zIDY4LjFjLS4yIDEuMy0uMyAyLjYtLjMgMy45YzAgMTMuMyAxMC43IDI0IDI0IDI0YzEwLjYgMCAxOS41LTYuOCAyMi43LTE2LjN6TTEzMC45IDExNi41YzE2LjMtMTQuNSA0MC40LTE2LjIgNTguNS00LjFsMTMwLjYgODdWMjI3YzAgMzIuOCA4LjQgNjQuOCAyNCA5M0gxMTJjLTYuNyAwLTEyLjctNC4yLTE1LTEwLjRzLS41LTEzLjMgNC42LTE3LjdMMTcxIDIzMi4zIDE4LjQgMjU1LjhjLTcgMS4xLTEzLjktMi42LTE2LjktOXMtMS41LTE0LjEgMy44LTE4LjhMMTMwLjkgMTE2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyYXdQb2x5Z29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDE1MS40VjM2MC42YzkuNyA1LjYgMTcuOCAxMy43IDIzLjQgMjMuNEgzMjguNmMwLS4xIC4xLS4yIC4xLS4zbC00LjUtNy45LTMyLTU2IDAgMGMtMS40IC4xLTIuOCAuMS00LjIgLjFjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMS40IDAgMi44IDAgNC4yIC4xbDAgMCAzMi01NiA0LjUtNy45LS4xLS4zSDExOS40Yy01LjYgOS43LTEzLjcgMTcuOC0yMy40IDIzLjR6TTM4NC4zIDM1MmMzNS4yIC4yIDYzLjcgMjguNyA2My43IDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMTE5LjRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYxNTEuNEMxMi45IDE0MC40IDAgMTE5LjcgMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJIMzI4LjZjMTEuMS0xOS4xIDMxLjctMzIgNTUuNC0zMmMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDM1LjMtMjguNSA2My44LTYzLjcgNjRsLTQuNSA3LjktMzIgNTYtMi4zIDRjNC4yIDguNSA2LjUgMTggNi41IDI4LjFzLTIuMyAxOS42LTYuNSAyOC4xbDIuMyA0IDMyIDU2IDQuNSA3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyb3BsZXRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNTEyYzUzLjIgMCAxMDEuNC0yMS42IDEzNi4xLTU2LjZsLTI5OC4zLTIzNUMxNDAgMjU3LjEgMTI4IDI5Mi4zIDEyOCAzMjBjMCAxMDYgODYgMTkyIDE5MiAxOTJ6TTUwNS4yIDM3MC43YzQuNC0xNi4xIDYuOC0zMy4xIDYuOC01MC43YzAtOTEuMi0xMzAuMi0yNjIuMy0xNjYuNi0zMDguM0MzMzkuNCA0LjIgMzMwLjUgMCAzMjAuOSAwaC0xLjhjLTkuNiAwLTE4LjUgNC4yLTI0LjUgMTEuN0MyNzcuOCAzMyAyNDAuNyA4MS4zIDIwNS44IDEzNkwzOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDUwNS4yIDM3MC43ek0yMjQgMzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy02MS45IDAtMTEyLTUwLjEtMTEyLTExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcm9wbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA1MTJDODYgNTEyIDAgNDI2IDAgMzIwQzAgMjI4LjggMTMwLjIgNTcuNyAxNjYuNiAxMS43QzE3Mi42IDQuMiAxODEuNSAwIDE5MS4xIDBoMS44YzkuNiAwIDE4LjUgNC4yIDI0LjUgMTEuN0MyNTMuOCA1Ny43IDM4NCAyMjguOCAzODQgMzIwYzAgMTA2LTg2IDE5Mi0xOTIgMTkyek05NiAzMzZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcnVtU3RlZWxwYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzE1OS4xIDAgMjg4IDQ4IDI4OCAxMjhWMzUyYzAgODAtMTI4LjkgMTI4LTI4OCAxMjhTMCA0MzIgMCAzNTJWMTYwQzAgODAgMTI4LjkgMzIgMjg4IDMyek01MjggMTYwYzAtOS45LTgtMjkuOS01NS00OS44Yy0xOC42LTcuOS00MC45LTE0LjQtNjYtMTkuNGwtMjcuOCA0My42Yy03LjMgMTEuNS0xMS4yIDI0LjgtMTEuMiAzOC40YzAgMTcuNSA2LjQgMzQuNCAxOC4xIDQ3LjVsOS44IDExYzI5LjgtNS4yIDU1LjktMTIuNSA3Ny4yLTIxLjVjNDcuMS0xOS45IDU1LTM5LjkgNTUtNDkuOHpNMzQ5LjIgMjM3LjNjLTgtMjYuMi0zMi40LTQ1LjMtNjEuMi00NS4zcy01My4zIDE5LjEtNjEuMiA0NS4zYzE5LjQgMS43IDM5LjkgMi43IDYxLjIgMi43czQxLjgtLjkgNjEuMi0yLjd6TTE2OSA5MC44Yy0yNS4yIDUtNDcuNCAxMS42LTY2IDE5LjRDNTYgMTMwLjEgNDggMTUwLjEgNDggMTYwczggMjkuOSA1NSA0OS44YzIxLjMgOSA0Ny40IDE2LjMgNzcuMiAyMS41bDkuOC0xMWMxMS42LTEzLjEgMTguMS0zMCAxOC4xLTQ3LjVjMC0xMy42LTMuOS0yNi45LTExLjItMzguNEwxNjkgOTAuOHptNTYuMy04QzIyNC41IDg3IDIyNCA5MS41IDIyNCA5NmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0YzAtNC41LS41LTktMS40LTEzLjJDMzMwLjggODEgMzA5LjggODAgMjg4IDgwcy00Mi44IDEtNjIuNiAyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjIgNzYuMWMxMS4xLTcuMyAxNC4yLTIyLjEgNi45LTMzLjJzLTIyLjEtMTQuMi0zMy4yLTYuOUwzNzAuMiAxMDQuNUMzMzUuOCA5OC43IDI5NyA5NiAyNTYgOTZDMTE0LjYgOTYgMCAxMjggMCAyMDhWMzY4YzAgMzEuMyAyNy40IDU4LjggNzIgNzguN1YzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY0NjMuNGMzMyA4LjkgNzEuMSAxNC41IDExMiAxNi4xVjM3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0VjQ3OS41YzQwLjktMS42IDc5LTcuMiAxMTItMTYuMVYzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY0NDYuN2M0NC42LTE5LjkgNzItNDcuNCA3Mi03OC43VjIwOGMwLTQxLjEtMzAuMi02OS41LTc4LjgtODcuNGw2Ny45LTQ0LjV6TTMwNy40IDE0NS42bC02NC42IDQyLjNjLTExLjEgNy4zLTE0LjIgMjIuMS02LjkgMzMuMnMyMi4xIDE0LjIgMzMuMiA2LjlsMTExLjEtNzIuOGMxNC43IDMuMiAyNy45IDcgMzkuNCAxMS41QzQ1OC40IDE4MS44IDQ2NCAxOTcuNCA0NjQgMjA4YzAgLjgtMi43IDE3LjItNDYgMzUuOUMzNzkuMSAyNjAuNyAzMjIgMjcyIDI1NiAyNzJzLTEyMy4xLTExLjMtMTYyLTI4LjFDNTAuNyAyMjUuMiA0OCAyMDguOCA0OCAyMDhjMC0xMC42IDUuNi0yNi4yIDQ0LjQtNDEuM0MxMzAuNiAxNTEuOSAxODcuOCAxNDQgMjU2IDE0NGMxOCAwIDM1LjEgLjUgNTEuNCAxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW1zdGlja0JpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDI2NS4yYzAgOC41LTMuNCAxNi42LTkuNCAyMi42bC0yNi44IDI2LjhjLTEyLjMgMTIuMy0zMi41IDExLjQtNDkuNCA3LjJDNjkuOCAzMjAuNiA2NSAzMjAgNjAgMzIwYy0zMy4xIDAtNjAgMjYuOS02MCA2MHMyNi45IDYwIDYwIDYwYzYuMyAwIDEyIDUuNyAxMiAxMmMwIDMzLjEgMjYuOSA2MCA2MCA2MHM2MC0yNi45IDYwLTYwYzAtNS0uNi05LjgtMS44LTE0LjVjLTQuMi0xNi45LTUuMi0zNy4xIDcuMi00OS40bDI2LjgtMjYuOGM2LTYgMTQuMS05LjQgMjIuNi05LjRIMzM2YzYuMyAwIDEyLjQtLjMgMTguNS0xYzExLjktMS4yIDE2LjQtMTUuNSAxMC44LTI2Yy04LjUtMTUuOC0xMy4zLTMzLjgtMTMuMy01M2MwLTYxLjkgNTAuMS0xMTIgMTEyLTExMmM4IDAgMTUuNyAuOCAyMy4yIDIuNGMxMS43IDIuNSAyNC4xLTUuOSAyMi0xNy42QzQ5NC41IDYyLjUgNDIyLjUgMCAzMzYgMEMyMzguOCAwIDE2MCA3OC44IDE2MCAxNzZ2ODkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVtYmJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjI0djY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg5NlY2NHptNDQ4IDB2NjRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJINTQ0djY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4IDIyNCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnpNNDE2IDIyNHY2NEgyMjRWMjI0SDQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVtcHN0ZXJGaXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5LjcgMzJsOTAuOCAwTDExNC45IDE2MGwtOTQgMEM5LjMgMTYwIDAgMTUwLjcgMCAxMzkuMWMwLTIuMSAuMy00LjEgLjktNi4xTDI2LjggNDguOUMyOS45IDM4LjkgMzkuMiAzMiA0OS43IDMyek0yNzIgMTYwbC0xMjQuNSAwTDE3My4xIDMyIDI3MiAzMmwwIDEyOHptMzIgMGwwLTEyOCA5OC45IDAgMTQuNCA3Mi4xYy0xLjcgMS4xLTMuMyAyLjQtNC44IDMuOGMtMTguNCAxNi40LTM1LjQgMzQtNTAuNSA1Mi4xbC01OCAwem0yMDkuOS0yMy43Yy0xLjcgMS42LTMuNCAzLjItNSA0LjhDNDk4IDEyOS42IDQ4Ni43IDExOC42IDQ3NSAxMDhjLTcuNi02LjktMTctMTAuOC0yNi42LTExLjhMNDM1LjUgMzJsOTAuOCAwYzEwLjUgMCAxOS44IDYuOSAyMi45IDE2LjlMNTc1LjEgMTMzYy4yIC43IC40IDEuNCAuNSAyLjFjLTE3LjgtMTUtNDQuMy0xNC42LTYxLjcgMS4yek0zMjUuMiAyMTAuN0MzMDQuMyAyNDQuNSAyODggMjgyLjkgMjg4IDMxOC4xYzAgNDkuMyAxOC42IDk1LjIgNDkuNiAxMjkuOUwxMjggNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyTDQ0IDI4OGwtMTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0IDAtNC0zMiAzMDUuNSAwYy00LjQgNi4yLTguNSAxMi41LTEyLjMgMTguN3ptMTgwLjYtMzQuNUw1MTggMTYyLjVjNS40LTYuMSAxMy4zLTguOCAyMC45LTguOWM3LjIgMCAxNC4zIDIuNiAxOS45IDcuOGMxOS43IDE4LjMgMzkuOCA0My4yIDU1IDcwLjZDNjI5IDI1OS4yIDY0MCAyOTAuMiA2NDAgMzIwLjJDNjQwIDQwOC44IDU2OC43IDQ4MCA0ODAgNDgwYy04OS42IDAtMTYwLTcxLjMtMTYwLTE1OS44YzAtMzcuMyAxNi03My40IDM2LjgtMTA0LjVjMjAuOS0zMS4zIDQ3LjUtNTkgNzAuOS04MC4yYzUuNy01LjIgMTMuMS03LjcgMjAuMy03LjVjMTQuMSAuMyAyMy44IDExLjQgMzIuNyAyMS42YzAgMCAwIDAgMCAwYzIgMi4zIDQgNC42IDYgNi43bDE5IDE5Ljl6TTU0NCAzNjguMmMwLTM2LjUtMzctNzMtNTQuOC04OC40Yy01LjQtNC43LTEzLjEtNC43LTE4LjUgMEM0NTMgMjk1LjEgNDE2IDMzMS42IDQxNiAzNjguMmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEdW1wc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OS43IDMyYy0xMC41IDAtMTkuOCA2LjktMjIuOSAxNi45TC45IDEzM2MtLjYgMi0uOSA0LjEtLjkgNi4xQzAgMTUwLjcgOS4zIDE2MCAyMC45IDE2MGg5NEwxNDAuNSAzMkg0OS43ek0yNzIgMTYwVjMySDE3My4xTDE0Ny41IDE2MEgyNzJ6bTMyIDBINDI4LjVMNDAyLjkgMzJIMzA0VjE2MHptMTU3LjEgMGg5NGMxMS41IDAgMjAuOS05LjMgMjAuOS0yMC45YzAtMi4xLS4zLTQuMS0uOS02LjFMNTQ5LjIgNDguOUM1NDYuMSAzOC45IDUzNi44IDMyIDUyNi4zIDMySDQzNS41bDI1LjYgMTI4ek0zMiAxOTJsNCAzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0NEw2NCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMkg0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwyMC0xNjBoMTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJoLTRsNC0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVuZ2VvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYuNiAxNTYuNWMxLjMgMS4xIDIuNyAyLjIgMy45IDMuM2M5LjMgOC4yIDIzIDEwLjUgMzMuNCAzLjZsNjcuNi00NS4xYzExLjQtNy42IDE0LjItMjMuMiA1LjEtMzMuNEM0MzAgNjYuNiA0MTAuOSA1MC42IDM4OS43IDM3LjZjLTExLjktNy4zLTI2LjktMS40LTMyLjEgMTEuNmwtMzAuNSA3Ni4yYy00LjUgMTEuMSAuMiAyMy42IDkuNSAzMS4yek0zMjggMzYuOGM1LjEtMTIuOC0xLjYtMjcuNC0xNS0zMC41QzI5NC43IDIuMiAyNzUuNiAwIDI1NiAwcy0zOC43IDIuMi01NyA2LjRDMTg1LjUgOS40IDE3OC44IDI0IDE4NCAzNi44bDMwLjMgNzUuOGM0LjUgMTEuMyAxNi44IDE3LjIgMjkgMTZjNC4yLS40IDguNC0uNiAxMi43LS42czguNiAuMiAxMi43IC42YzEyLjEgMS4yIDI0LjQtNC43IDI5LTE2TDMyOCAzNi44ek02NS41IDg1Yy05LjEgMTAuMi02LjMgMjUuOCA1LjEgMzMuNGw2Ny42IDQ1LjFjMTAuMyA2LjkgMjQuMSA0LjYgMzMuNC0zLjZjMS4zLTEuMSAyLjYtMi4zIDQtMy4zYzkuMy03LjUgMTMuOS0yMC4xIDkuNS0zMS4yTDE1NC40IDQ5LjJjLTUuMi0xMi45LTIwLjMtMTguOC0zMi4xLTExLjZDMTAxLjEgNTAuNiA4MiA2Ni42IDY1LjUgODV6bTMxNCAxMzcuMWMuOSAzLjMgMS43IDYuNiAyLjMgMTBjMi41IDEzIDEzIDIzLjkgMjYuMiAyMy45aDgwYzEzLjMgMCAyNC4xLTEwLjggMjIuOS0yNGMtMi41LTI3LjItOS4zLTUzLjItMTkuNy03Ny4zYy01LjUtMTIuOS0yMS40LTE2LjYtMzMuMS04LjlsLTY4LjYgNDUuN2MtOS44IDYuNS0xMy4yIDE5LjItMTAgMzAuNXpNNTMuOSAxNDUuOGMtMTEuNi03LjgtMjcuNi00LTMzLjEgOC45QzEwLjQgMTc4LjggMy42IDIwNC44IDEuMSAyMzJjLTEuMiAxMy4yIDkuNiAyNCAyMi45IDI0aDgwYzEzLjMgMCAyMy44LTEwLjggMjYuMi0yMy45Yy42LTMuNCAxLjQtNi43IDIuMy0xMGMzLjEtMTEuNC0uMi0yNC0xMC0zMC41TDUzLjkgMTQ1Ljh6TTEwNCAyODhIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMzA0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEg0MDh6TTI0IDQxNmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNDQwYzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0em0zODQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNDQwYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQwOHpNMjcyIDE5MmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlY0NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxOTJ6bS02NCAzMmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlY0NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMjR6bTEyOCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjI1NiA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0VjI4OEgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjRWOTZIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJEZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi42IDU0LjZsLTQwIDQwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2w0MC00MGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zem0tMzIwIDMyMGwtMTI4IDEyOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTI4LTEyOGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zek0yNDAgMTI4Yy01Ny42IDAtMTA1LjEgNDMuNi0xMTEuMyA5OS41Yy0xLjkgMTcuNi0xNy44IDMwLjItMzUuMyAyOC4zcy0zMC4yLTE3LjgtMjguMy0zNS4zQzc0LjggMTMyLjUgMTQ5LjQgNjQgMjQwIDY0Yzk3LjIgMCAxNzYgNzguOCAxNzYgMTc2YzAgNDYtMTcuNyA4Ny45LTQ2LjYgMTE5LjNjLTEyIDEzLTE3LjQgMjQuOC0xNy40IDM0LjdWNDAwYzAgNjEuOS01MC4xIDExMi0xMTIgMTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di02LjFjMC0zMi45IDE3LjQtNTkuNiAzNC40LTc4YzE4LjQtMjAgMjkuNi00Ni42IDI5LjYtNzUuOWMwLTYxLjktNTAuMS0xMTItMTEyLTExMnptMCA4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFyTGlzdGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5OC4zIDMuNGMtMTUuOC03LjktMzUtMS41LTQyLjkgMTQuM2MtNy45IDE1LjgtMS41IDM0LjkgMTQuMiA0Mi45bC40IC4yYy40IC4yIDEuMSAuNiAyLjEgMS4yYzIgMS4yIDUgMyA4LjcgNS42YzcuNSA1LjIgMTcuNiAxMy4yIDI3LjcgMjQuMkM0MjguNSAxMTMuNCA0NDggMTQ2IDQ0OCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTY2LTI4LjUtMTEzLjQtNTYuNS0xNDMuN0M0NDEuNiAzMy4yIDQyNy43IDIyLjIgNDE3LjMgMTVjLTUuMy0zLjctOS43LTYuNC0xMy04LjNjLTEuNi0xLTMtMS43LTQtMi4yYy0uNS0uMy0uOS0uNS0xLjItLjdsLS40LS4yLS4yLS4xLS4xIDAgMCAwYzAgMCAwIDAtMTQuMyAyOC42TDM5OC4zIDMuNHpNMTI4LjcgMjI3LjVjNi4yLTU2IDUzLjctOTkuNSAxMTEuMy05OS41YzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEyYzAgMjkuMy0xMS4yIDU1LjktMjkuNiA3NS45Yy0xNyAxOC40LTM0LjQgNDUuMS0zNC40IDc4VjQwMGMwIDI2LjUtMjEuNSA0OC00OCA0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMnYtNi4xYzAtOS44IDUuNC0yMS43IDE3LjQtMzQuN0MzOTguMyAzMjcuOSA0MTYgMjg2IDQxNiAyNDBjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZDMTQ5LjQgNjQgNzQuOCAxMzIuNSA2NS4xIDIyMC41Yy0xLjkgMTcuNiAxMC43IDMzLjQgMjguMyAzNS4zczMzLjQtMTAuNyAzNS4zLTI4LjN6TTMyIDUxMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTE5MiAzNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDEuNCAzNjEuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwek0yMDggMjQwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJ0aEFmcmljYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcuOCA2My4ybDEwIDE3LjRjMi44IDQuOCA0LjIgMTAuMyA0LjIgMTUuOXY0MS40YzAgMy45IDEuNiA3LjcgNC4zIDEwLjRjNi4yIDYuMiAxNi41IDUuNyAyMi0xLjJsMTMuNi0xN2M0LjctNS45IDEyLjktNy43IDE5LjYtNC4zbDE1LjIgNy42YzMuNCAxLjcgNy4yIDIuNiAxMSAyLjZjNi41IDAgMTIuOC0yLjYgMTcuNC03LjJsMy45LTMuOWMyLjktMi45IDcuMy0zLjYgMTEtMS44bDI5LjIgMTQuNmM3LjggMy45IDEyLjYgMTEuOCAxMi42IDIwLjVjMCAxMC41LTcuMSAxOS42LTE3LjMgMjIuMmwtMzUuNCA4LjhjLTcuNCAxLjgtMTUuMSAxLjUtMjIuNC0uOWwtMzItMTAuN2MtMy4zLTEuMS02LjctMS43LTEwLjItMS43Yy03IDAtMTMuOCAyLjMtMTkuNCA2LjVMMTc2IDIxMmMtMTAuMSA3LjYtMTYgMTkuNC0xNiAzMnYyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJjMTAuMSAwIDE5LjYtNC43IDI1LjYtMTIuOGwyNS42LTM0LjFjOC4zLTExLjEgMTIuOC0yNC42IDEyLjgtMzguNFYzMTguNmMwLTMuOSAyLjYtNy4zIDYuNC04LjJsNS4zLTEuM2MxMS45LTMgMjAuMy0xMy43IDIwLjMtMjZjMC03LjEtMi44LTEzLjktNy44LTE4LjlsLTMzLjUtMzMuNWMtMy43LTMuNy0zLjctOS43IDAtMTMuNGM1LjctNS43IDE0LjEtNy43IDIxLjgtNS4xbDE0LjEgNC43YzEyLjMgNC4xIDI1LjctMS41IDMxLjUtMTNjMy41LTcgMTEuMi0xMC44IDE4LjktOS4ybDI3LjQgNS41QzQzMiAxMTIuNCAzNTEuNSA0OCAyNTYgNDhjLTI3LjcgMC01NCA1LjQtNzguMiAxNS4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVhcnRoQW1lcmljYXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcuNyAxOTNsOS40IDE2LjRjOC4zIDE0LjUgMjEuOSAyNS4yIDM4IDI5LjhMMTYzIDI1NS43YzE3LjIgNC45IDI5IDIwLjYgMjkgMzguNXYzOS45YzAgMTEgNi4yIDIxIDE2IDI1LjlzMTYgMTQuOSAxNiAyNS45djM5YzAgMTUuNiAxNC45IDI2LjkgMjkuOSAyMi42YzE2LjEtNC42IDI4LjYtMTcuNSAzMi43LTMzLjhsMi44LTExLjJjNC4yLTE2LjkgMTUuMi0zMS40IDMwLjMtNDBsOC4xLTQuNmMxNS04LjUgMjQuMi0yNC41IDI0LjItNDEuN3YtOC4zYzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlsLTMuOS0zLjljLTktOS0yMS4yLTE0LjEtMzMuOS0xNC4xSDI1N2MtMTEuMSAwLTIyLjEtMi45LTMxLjgtOC40bC0zNC41LTE5LjdjLTQuMy0yLjUtNy42LTYuNS05LjItMTEuMmMtMy4yLTkuNiAxLjEtMjAgMTAuMi0yNC41bDUuOS0zYzYuNi0zLjMgMTQuMy0zLjkgMjEuMy0xLjVsMjMuMiA3LjdjOC4yIDIuNyAxNy4yLS40IDIxLjktNy41YzQuNy03IDQuMi0xNi4zLTEuMi0yMi44bC0xMy42LTE2LjNjLTEwLTEyLTkuOS0yOS41IC4zLTQxLjNsMTUuNy0xOC4zYzguOC0xMC4zIDEwLjItMjUgMy41LTM2LjdsLTIuNC00LjJjLTMuNS0uMi02LjktLjMtMTAuNC0uM0MxNjMuMSA0OCA4NC40IDEwOC45IDU3LjcgMTkzek00NjQgMjU2YzAtMzYuOC05LjYtNzEuNC0yNi40LTEwMS41TDQxMiAxNjQuOGMtMTUuNyA2LjMtMjMuOCAyMy44LTE4LjUgMzkuOGwxNi45IDUwLjdjMy41IDEwLjQgMTIgMTguMyAyMi42IDIwLjlsMjkuMSA3LjNjMS4yLTkgMS44LTE4LjIgMS44LTI3LjV6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFydGhBc2lhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxLjcgMjk1LjFsMzEuNyA2LjNjNy45IDEuNiAxNi0uOSAyMS43LTYuNmwxNS40LTE1LjRjMTEuNi0xMS42IDMxLjEtOC40IDM4LjQgNi4ybDkuMyAxOC41YzQuOCA5LjYgMTQuNiAxNS43IDI1LjQgMTUuN2MxNS4yIDAgMjYuMS0xNC42IDIxLjctMjkuMmwtNi0xOS45Yy00LjYtMTUuNCA2LjktMzAuOSAyMy0zMC45aDIuM2MxMy40IDAgMjUuOS02LjcgMzMuMy0xNy44bDEwLjctMTYuMWM1LjYtOC41IDUuMy0xOS42LS44LTI3LjdsLTE2LjEtMjEuNWMtMTAuMy0xMy43LTMuMy0zMy41IDEzLjQtMzcuN2wxNy00LjNjNy41LTEuOSAxMy42LTcuMiAxNi41LTE0LjRsMTYuNC00MC45QzMwMy40IDUyLjEgMjgwLjIgNDggMjU2IDQ4QzE0MS4xIDQ4IDQ4IDE0MS4xIDQ4IDI1NmMwIDEzLjQgMS4zIDI2LjUgMy43IDM5LjF6bTQwNy43IDQuNmMtMy0uMy02LS4xLTkgLjhsLTE1LjggNC40Yy02LjcgMS45LTEzLjgtLjktMTcuNS02LjdsLTItMy4xYy02LTkuNC0xNi40LTE1LjEtMjcuNi0xNS4xcy0yMS42IDUuNy0yNy42IDE1LjFsLTYuMSA5LjVjLTEuNCAyLjItMy40IDQuMS01LjcgNS4zTDMxMiAzMzAuMWMtMTguMSAxMC4xLTI1LjUgMzIuNC0xNyA1MS4zbDUuNSAxMi40YzguNiAxOS4yIDMwLjcgMjguNSA1MC41IDIxLjFsMi42LTFjMTAtMy43IDIxLjMtMi4yIDI5LjkgNC4xbDEuNSAxLjFjMzcuMi0yOS41IDY0LjEtNzEuNCA3NC40LTExOS41ek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE0NC41IDkyLjFjLTIuMSA4LjYgMy4xIDE3LjMgMTEuNiAxOS40bDMyIDhjOC42IDIuMSAxNy4zLTMuMSAxOS40LTExLjZzLTMuMS0xNy4zLTExLjYtMTkuNGwtMzItOGMtOC42LTIuMS0xNy4zIDMuMS0xOS40IDExLjZ6bTkyLTIwYy0yLjEgOC42IDMuMSAxNy4zIDExLjYgMTkuNHMxNy4zLTMuMSAxOS40LTExLjZsOC0zMmMyLjEtOC42LTMuMS0xNy4zLTExLjYtMTkuNHMtMTcuMyAzLjEtMTkuNCAxMS42bC04IDMyek0zNDMuMiAxMTMuN2MtNy45LTQtMTcuNS0uNy0yMS41IDcuMmwtMTYgMzJjLTQgNy45LS43IDE3LjUgNy4yIDIxLjVzMTcuNSAuNyAyMS41LTcuMmwxNi0zMmM0LTcuOSAuNy0xNy41LTcuMi0yMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJ0aEV1cm9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjYuMyA0OC4zTDIzMi41IDczLjZjLTUuNCA0LTguNSAxMC40LTguNSAxNy4xdjkuMWMwIDYuOCA1LjUgMTIuMyAxMi4zIDEyLjNjMi40IDAgNC44LS43IDYuOC0yLjFsNDEuOC0yNy45YzItMS4zIDQuNC0yLjEgNi44LTIuMWgxYzYuMiAwIDExLjMgNS4xIDExLjMgMTEuM2MwIDMtMS4yIDUuOS0zLjMgOGwtMTkuOSAxOS45Yy01LjggNS44LTEyLjkgMTAuMi0yMC43IDEyLjhsLTI2LjUgOC44Yy01LjggMS45LTkuNiA3LjMtOS42IDEzLjRjMCAzLjctMS41IDcuMy00LjEgMTBsLTE3LjkgMTcuOWMtNi40IDYuNC05LjkgMTUtOS45IDI0djQuM2MwIDE2LjQgMTMuNiAyOS43IDI5LjkgMjkuN2MxMSAwIDIxLjItNi4yIDI2LjEtMTZsNC04LjFjMi40LTQuOCA3LjQtNy45IDEyLjgtNy45YzQuNSAwIDguNyAyLjEgMTEuNCA1LjdsMTYuMyAyMS43YzIuMSAyLjkgNS41IDQuNSA5LjEgNC41YzguNCAwIDEzLjktOC45IDEwLjEtMTYuNGwtMS4xLTIuM2MtMy41LTcgMC0xNS41IDcuNS0xOGwyMS4yLTcuMWM3LjYtMi41IDEyLjctOS42IDEyLjctMTcuNmMwLTEwLjMgOC4zLTE4LjYgMTguNi0xOC42SDQwMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNzkuM2MtNy4yIDAtMTQuMiAyLjktMTkuMyA4bC00LjcgNC43Yy0yLjEgMi4xLTMuMyA1LTMuMyA4YzAgNi4yIDUuMSAxMS4zIDExLjMgMTEuM2gxMS4zYzYgMCAxMS44IDIuNCAxNiA2LjZsNi41IDYuNWMxLjggMS44IDIuOCA0LjMgMi44IDYuOHMtMSA1LTIuOCA2LjhsLTcuNSA3LjVDMzg2IDI2MiAzODQgMjY2LjkgMzg0IDI3MnMyIDEwIDUuNyAxMy43TDQwOCAzMDRjMTAuMiAxMC4yIDI0LjEgMTYgMzguNiAxNkg0NTRjNi41LTIwLjIgMTAtNDEuNyAxMC02NGMwLTExMS40LTg3LjYtMjAyLjQtMTk3LjctMjA3Ljd6bTE3MiAzMDcuOWMtMy43LTIuNi04LjItNC4xLTEzLTQuMWMtNiAwLTExLjgtMi40LTE2LTYuNkwzOTYgMzMyYy03LjctNy43LTE4LTEyLTI4LjktMTJjLTkuNyAwLTE5LjItMy41LTI2LjYtOS44TDMxNCAyODcuNGMtMTEuNi05LjktMjYuNC0xNS40LTQxLjctMTUuNEgyNTEuNGMtMTIuNiAwLTI1IDMuNy0zNS41IDEwLjdMMTg4LjUgMzAxYy0xNy44IDExLjktMjguNSAzMS45LTI4LjUgNTMuM3YzLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNsMTYgMTZjOC41IDguNSAyMCAxMy4zIDMyIDEzLjNIMjQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0YzAgMi41IC40IDUgMS4xIDcuM2M3MS4zLTUuOCAxMzIuNS00Ny42IDE2NS4yLTEwNy4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE4Ny4zIDEwMC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGwtMzIgMzJjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGwzMi0zMmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFydGhPY2VhbmlhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMDguNiAzNTcuM2wtMzktMTMuNWMtNi41LTIuMi0xMy42LTIuMy0yMC4xLS4zbC0xNS4zIDQuOWMtMTguNSA1LjktMzguNS0yLjQtNDcuNS0xOS41bC0zLjMtNi4yYy0xMC42LTIwLjEtMi4zLTQ1IDE4LjItNTQuN2wzNS4zLTE2LjhjMi4zLTEuMSA0LjQtMi44IDUuOS00LjhsNS4zLTdjNy4yLTkuNiAxOC42LTE1LjMgMzAuNi0xNS4zczIzLjQgNS43IDMwLjYgMTUuM2w0LjYgNi4xYzIgMi42IDQuOSA0LjUgOC4xIDUuMWM3LjggMS42IDE1LjctMS41IDIwLjQtNy45bDEwLjQtMTQuMmMyLTIuOCA1LjMtNC40IDguNy00LjRjNC40IDAgOC40IDIuNyAxMCA2LjhsMTAuMSAyNS45YzIuOCA3LjIgNi43IDE0IDExLjUgMjAuMkwzMTEgMjk5LjhjNS44IDcuNCA5IDE2LjYgOSAyNnMtMy4yIDE4LjYtOSAyNkwyOTkgMzY3LjJjLTguMyAxMC42LTIxIDE2LjgtMzQuNCAxNi44Yy04LjQgMC0xNi42LTIuNC0yMy43LTdsLTI1LjQtMTYuNGMtMi4yLTEuNC00LjUtMi41LTYuOS0zLjR6bTY1LjItMjE0LjhMMjk2IDE2NC43YzEwLjEgMTAuMSAyLjkgMjcuMy0xMS4zIDI3LjNIMjU0LjhjLTUuNiAwLTExLjEtMS4yLTE2LjItMy40bC00Mi44LTE5Yy0xNC4zLTYuMy0xMS45LTI3LjMgMy40LTMwLjNsMzguNS03LjdjMTMuMS0yLjYgMjYuNyAxLjUgMzYuMSAxMC45ek0yNDggNDMyYzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNjRjLTguOCAwLTE2LTcuMi0xNi0xNnpNNDMxLjIgMjk4LjlsOCAyNGMyLjggOC40LTEuNyAxNy40LTEwLjEgMjAuMnMtMTcuNC0xLjctMjAuMi0xMC4xbC04LTI0Yy0yLjgtOC40IDEuNy0xNy40IDEwLjEtMjAuMnMxNy40IDEuNyAyMC4yIDEwLjF6bS0xOS45IDgwLjRsLTMyIDMyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDMyLTMyYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA0OTZDODYgNDk2IDAgMzk0IDAgMjg4QzAgMTc2IDY0IDE2IDE5MiAxNnMxOTIgMTYwIDE5MiAyNzJjMCAxMDYtODYgMjA4LTE5MiAyMDh6TTE1NC44IDEzNGM2LjUtNiA3LTE2LjEgMS0yMi42cy0xNi4xLTctMjIuNi0xYy0yMy45IDIxLjgtNDEuMSA1Mi43LTUyLjMgODQuMkM2OS43IDIyNi4xIDY0IDI1OS43IDY0IDI4OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2YzAtMjQuNSA1LTU0LjQgMTUuMS04Mi44YzEwLjEtMjguNSAyNS01NC4xIDQzLjctNzEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDMyYzEzLjUgMCAyNi4zIDUuNiAzNS40IDE1LjZsMTc2IDE5MmMxMi45IDE0IDE2LjIgMzQuMyA4LjYgNTEuOFM0MTkgMzIwIDQwMCAzMjBINDhjLTE5IDAtMzYuMy0xMS4yLTQzLjktMjguN3MtNC4zLTM3LjcgOC42LTUxLjhsMTc2LTE5MkMxOTcuNyAzNy42IDIxMC41IDMyIDIyNCAzMnpNMCA0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhINDAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxldmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMyLjcgNC43bC02NCA2NGMtNC42IDQuNi01LjkgMTEuNS0zLjUgMTcuNHM4LjMgOS45IDE0LjggOS45SDIwOGM2LjUgMCAxMi4zLTMuOSAxNC44LTkuOXMxLjEtMTIuOS0zLjUtMTcuNGwtNjQtNjRjLTYuMi02LjItMTYuNC02LjItMjIuNiAwek02NCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em05NiA5NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTgwIDQwMGMwLTI2LjUgMjEuNS00OCA0OC00OGg2NGMyNi41IDAgNDggMjEuNSA0OCA0OHYxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwMHptMTkyIDBjMC0yNi41IDIxLjUtNDggNDgtNDhoNjRjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzA0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDB6bTMyLTEyOGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0zNTYuNyA5MS4zYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDY0LTY0YzQuNi00LjYgNS45LTExLjUgMy41LTE3LjRTNDM4LjUgMCA0MzIgMEgzMDRjLTYuNSAwLTEyLjMgMy45LTE0LjggOS45cy0xLjEgMTIuOSAzLjUgMTcuNGw2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxsaXBzaXNWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTI4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzNjBhNTYgNTYgMCAxIDAgMCAxMTIgNTYgNTYgMCAxIDAgMC0xMTJ6bTAtMTYwYTU2IDU2IDAgMSAwIDAgMTEyIDU2IDU2IDAgMSAwIDAtMTEyek0xMjAgOTZBNTYgNTYgMCAxIDAgOCA5NmE1NiA1NiAwIDEgMCAxMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxsaXBzaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNTZhNTYgNTYgMCAxIDEgMTEyIDBBNTYgNTYgMCAxIDEgOCAyNTZ6bTE2MCAwYTU2IDU2IDAgMSAxIDExMiAwIDU2IDU2IDAgMSAxIC0xMTIgMHptMjE2LTU2YTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEyYzAgMTUuMSA3LjEgMjkuMyAxOS4yIDM4LjRMMjM2LjggMzEzLjZjMTEuNCA4LjUgMjcgOC41IDM4LjQgMGw1Ny40LTQzYzIzLjktNTkuOCA3OS43LTEwMy4zIDE0Ni4zLTEwOS44bDEzLjktMTAuNGMxMi4xLTkuMSAxOS4yLTIzLjMgMTkuMi0zOC40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek0yOTQuNCAzMzkuMmMtMjIuOCAxNy4xLTU0IDE3LjEtNzYuOCAwTDAgMTc2VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNjAuMkMzMzUuMSA0MTcuNiAzMjAgMzc4LjUgMzIwIDMzNmMwLTUuNiAuMy0xMS4xIC44LTE2LjZsLTI2LjQgMTkuOHpNNjQwIDMzNmExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM1My40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVPcGVuVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTUuNCA5NkgxNDQgMTA3LjggOTZ2OC44VjE0NHY0MC40IDg5TC4yIDIwMi41YzEuNi0xOC4xIDEwLjktMzQuOSAyNS43LTQ1LjhMNDggMTQwLjNWOTZjMC0yNi41IDIxLjUtNDggNDgtNDhoNzYuNmw0OS45LTM2LjlDMjMyLjIgMy45IDI0My45IDAgMjU2IDBzMjMuOCAzLjkgMzMuNSAxMUwzMzkuNCA0OEg0MTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDQuM2wyMi4xIDE2LjRjMTQuOCAxMC45IDI0LjEgMjcuNyAyNS43IDQ1LjhMNDE2IDI3My40di04OVYxNDQgMTA0LjggOTZINDA0LjIgMzY4IDI5Ni42IDIxNS40ek0wIDQ0OFYyNDIuMUwyMTcuNiA0MDMuM2MxMS4xIDguMiAyNC42IDEyLjcgMzguNCAxMi43czI3LjMtNC40IDM4LjQtMTIuN0w1MTIgMjQyLjFWNDQ4djBjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0djB6TTE3NiAxNjBIMzM2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgzMzZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjA4LjFMMjU2IDY1LjkgNDQ4IDIwOC4xdjQ3LjRMMjg5LjUgMzczYy05LjcgNy4yLTIxLjQgMTEtMzMuNSAxMXMtMjMuOC0zLjktMzMuNS0xMUw2NCAyNTUuNVYyMDguMXpNMjU2IDBjLTEyLjEgMC0yMy44IDMuOS0zMy41IDExTDI1LjkgMTU2LjdDOS42IDE2OC44IDAgMTg3LjggMCAyMDguMVY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjIwOC4xYzAtMjAuMy05LjYtMzkuNC0yNS45LTUxLjRMMjg5LjUgMTFDMjc5LjggMy45IDI2OC4xIDAgMjU2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEyYzAgMTUuMSA3LjEgMjkuMyAxOS4yIDM4LjRMMjM2LjggMzEzLjZjMTEuNCA4LjUgMjcgOC41IDM4LjQgMEw0OTIuOCAxNTAuNGMxMi4xLTkuMSAxOS4yLTIzLjMgMTkuMi0zOC40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek0wIDE3NlYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE3NkwyOTQuNCAzMzkuMmMtMjIuOCAxNy4xLTU0IDE3LjEtNzYuOCAwTDAgMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZXNCdWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwQzExMC4zIDAgOTYgMTQuMyA5NiAzMlYyMjRoOTZWMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0SDQ4MFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxMjh6TTI1NiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyaDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNkg1NzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NnptMjQwIDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINDk2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnpNNjQgMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYxM0wxODcuMSA0MTUuOWMxLjQgMSAzLjEgMS42IDQuOSAxLjZzMy41LS42IDQuOS0xLjZMMzUyIDMwMVYyODhjMC0xNy43LTE0LjMtMzItMzItMzJINjR6bTI4OCA4NC44TDIxNiA0NDEuNmMtNi45IDUuMS0xNS4zIDcuOS0yNCA3LjlzLTE3LTIuOC0yNC03LjlMMzIgMzQwLjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNDAuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXF1YWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDh6bTAgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQwMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXJhc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43IDU3LjRMNTcuNCAyOTAuN2MtMjUgMjUtMjUgNjUuNSAwIDkwLjVsODAgODBjMTIgMTIgMjguMyAxOC43IDQ1LjMgMTguN0gyODhoOS40SDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzODcuOUw1MTguNiAyODUuM2MyNS0yNSAyNS02NS41IDAtOTAuNUwzODEuMyA1Ny40Yy0yNS0yNS02NS41LTI1LTkwLjUgMHpNMjk3LjQgNDE2SDI4OGwtMTA1LjQgMC04MC04MEwyMjcuMyAyMTEuMyAzNjQuNyAzNDguNyAyOTcuNCA0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0aGVybmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0VjQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NlYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlY0NDhoNjRWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWNDQ4aDY0VjMzNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjQ0OGg2NFYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlY0NDhoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ0OFYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIMzg0Vjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXVyb1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDguMSAyNDBjLS4xIDIuNy0uMSA1LjMtLjEgOHYxNmMwIDIuNyAwIDUuMyAuMSA4SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwLjNDODkuOSA0MTkuOSAxNzAgNDgwIDI2NCA0ODBoMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjY0Yy01Ny45IDAtMTA4LjItMzIuNC0xMzMuOS04MEgyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTEyLjJjLS4xLTIuNi0uMi01LjMtLjItOFYyNDhjMC0yLjcgLjEtNS40IC4yLThIMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDEzMC4xYzI1LjctNDcuNiA3Ni04MCAxMzMuOS04MGgyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNjRDMTcwIDMyIDg5LjkgOTIuMSA2MC4zIDE3NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0OC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjY0ek0zMiA0ODBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjk2aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyek02NCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjRWMzUyek0zMjAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMjB6TTQ0OCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXhwbG9zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OS42IDExLjNjNi43LTEwLjcgMjAuNS0xNC41IDMxLjctOC41czE1LjggMTkuNSAxMC42IDMxTDQwNC44IDMzOC42YzIuMiAyLjMgNC4zIDQuNyA2LjMgNy4xbDk3LjItNTQuN2MxMC41LTUuOSAyMy42LTMuMSAzMC45IDYuNHM2LjMgMjMtMi4yIDMxLjVsLTg3IDg3SDM3OC41Yy0xMy4yLTM3LjMtNDguNy02NC05MC41LTY0cy03Ny40IDI2LjctOTAuNSA2NEgxMTcuOEw0Mi4zIDM2My43Yy05LjctNi43LTEzLjEtMTkuNi03LjktMzAuM3MxNy40LTE1LjkgMjguNy0xMi40bDk3LjIgMzAuNGMzLTMuOSA2LjEtNy43IDkuNC0xMS4zTDEwNy40IDIzNi4zYy02LjEtMTAuMS0zLjktMjMuMSA1LjEtMzAuN3MyMi4yLTcuNSAzMS4xIC4xTDI0NiAyOTMuNmMxLjUtLjQgMy0uOCA0LjUtMS4xbDEzLjYtMTQyLjdjMS4yLTEyLjMgMTEuNS0yMS43IDIzLjktMjEuN3MyMi43IDkuNCAyMy45IDIxLjdsMTMuNSAxNDEuOUw0OTkuNiAxMS4zek02NCA0NDh2MEg1MTJ2MGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg2NHpNMjg4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV5ZURyb3BwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQxLjYgMjkuMkwyNDAuMSAxMzAuOGwtOS40LTkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05LjQtOS40TDQ4Mi44IDE3MC40YzM5LTM5IDM5LTEwMi4yIDAtMTQxLjFzLTEwMi4yLTM5LTE0MS4xIDB6TTU1LjQgMzIzLjNjLTE1IDE1LTIzLjQgMzUuNC0yMy40IDU2LjZ2NDIuNEw1LjQgNDYyLjJjLTguNSAxMi43LTYuOCAyOS42IDQgNDAuNHMyNy43IDEyLjUgNDAuNCA0TDg5LjcgNDgwaDQyLjRjMjEuMiAwIDQxLjYtOC40IDU2LjYtMjMuNEwzMDkuNCAzMzUuOWwtNDUuMy00NS4zTDE0My40IDQxMS4zYy0zIDMtNy4xIDQuNy0xMS4zIDQuN0g5NlYzNzkuOWMwLTQuMiAxLjctOC4zIDQuNy0xMS4zTDIyMS40IDI0Ny45bC00NS4zLTQ1LjNMNTUuNCAzMjMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXllTG93VmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTI1LjYgMzg2LjdjMzkuNi00MC42IDY2LjQtODYuMSA3OS45LTExOC40YzMuMy03LjkgMy4zLTE2LjcgMC0yNC42Yy0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xQzQ2NS41IDY4LjggNDAwLjggMzIgMzIwIDMyYy02OC4yIDAtMTI1IDI2LjMtMTY5LjMgNjAuOEwzOC44IDUuMXpNMjIzIDE0OS41YzQ4LjYtNDQuMyAxMjMtNTAuOCAxNzkuMy0xMS43YzYwLjggNDIuNCA3OC45IDEyMy4yIDQ0LjIgMTg2LjlMNDA4IDI5NC41YzguNC0xOS4zIDEwLjYtNDEuNCA0LjgtNjMuM2MtMTEuMS00MS41LTQ3LjgtNjkuNC04OC42LTcxLjFjLTUuOC0uMi05LjIgNi4xLTcuNCAxMS43YzIuMSA2LjQgMy4zIDEzLjIgMy4zIDIwLjNjMCAxMC4yLTIuNCAxOS44LTYuNiAyOC4zTDIyMyAxNDkuNXptLTEzOS45IDEyYy0xMSAxNC40LTIwLjUgMjguNy0yOC40IDQyLjJsMzM5IDI2NS43YzE4LjctNS41IDM2LjItMTMgNTIuNi0yMS44TDgzLjEgMTYxLjV6bS01MCA4Ni4zYy0xLjggNi44LTEuMyAxNCAxLjQgMjAuNWMxNC45IDM1LjcgNDYuMiA4Ny43IDkzIDEzMS4xQzE3NC41IDQ0My4yIDIzOS4yIDQ4MCAzMjAgNDgwYzMuMSAwIDYuMS0uMSA5LjItLjJMMzMuMSAyNDcuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXllU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w1MjUuNiAzODYuN2MzOS42LTQwLjYgNjYuNC04Ni4xIDc5LjktMTE4LjRjMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjZjLTE0LjktMzUuNy00Ni4yLTg3LjctOTMtMTMxLjFDNDY1LjUgNjguOCA0MDAuOCAzMiAzMjAgMzJjLTY4LjIgMC0xMjUgMjYuMy0xNjkuMyA2MC44TDM4LjggNS4xek0yMjMuMSAxNDkuNUMyNDguNiAxMjYuMiAyODIuNyAxMTIgMzIwIDExMmM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NGMwIDI0LjktNi4zIDQ4LjMtMTcuNCA2OC43TDQwOCAyOTQuNWM4LjQtMTkuMyAxMC42LTQxLjQgNC44LTYzLjNjLTExLjEtNDEuNS00Ny44LTY5LjQtODguNi03MS4xYy01LjgtLjItOS4yIDYuMS03LjQgMTEuN2MyLjEgNi40IDMuMyAxMy4yIDMuMyAyMC4zYzAgMTAuMi0yLjQgMTkuOC02LjYgMjguM2wtOTAuMy03MC44ek0zNzMgMzg5LjljLTE2LjQgNi41LTM0LjMgMTAuMS01MyAxMC4xYy03OS41IDAtMTQ0LTY0LjUtMTQ0LTE0NGMwLTYuOSAuNS0xMy42IDEuNC0yMC4yTDgzLjEgMTYxLjVDNjAuMyAxOTEuMiA0NCAyMjAuOCAzNC41IDI0My43Yy0zLjMgNy45LTMuMyAxNi43IDAgMjQuNmMxNC45IDM1LjcgNDYuMiA4Ny43IDkzIDEzMS4xQzE3NC41IDQ0My4yIDIzOS4yIDQ4MCAzMjAgNDgwYzQ3LjggMCA4OS45LTEyLjkgMTI2LjItMzIuNUwzNzMgMzg5Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjLTgwLjggMC0xNDUuNSAzNi44LTE5Mi42IDgwLjZDNDguNiAxNTYgMTcuMyAyMDggMi41IDI0My43Yy0zLjMgNy45LTMuMyAxNi43IDAgMjQuNkMxNy4zIDMwNCA0OC42IDM1NiA5NS40IDM5OS40QzE0Mi41IDQ0My4yIDIwNy4yIDQ4MCAyODggNDgwczE0NS41LTM2LjggMTkyLjYtODAuNmM0Ni44LTQzLjUgNzguMS05NS40IDkzLTEzMS4xYzMuMy03LjkgMy4zLTE2LjcgMC0yNC42Yy0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xQzQzMy41IDY4LjggMzY4LjggMzIgMjg4IDMyek0xNDQgMjU2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTE0NC02NGMwIDM1LjMtMjguNyA2NC02NCA2NGMtNy4xIDAtMTMuOS0xLjItMjAuMy0zLjNjLTUuNS0xLjgtMTEuOSAxLjYtMTEuNyA3LjRjLjMgNi45IDEuMyAxMy44IDMuMiAyMC43YzEzLjcgNTEuMiA2Ni40IDgxLjYgMTE3LjYgNjcuOXM4MS42LTY2LjQgNjcuOS0xMTcuNmMtMTEuMS00MS41LTQ3LjgtNjkuNC04OC42LTcxLjFjLTUuOC0uMi05LjIgNi4xLTcuNCAxMS43YzIuMSA2LjQgMy4zIDEzLjIgMy4zIDIwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlYyNTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NFY5NkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VBbmdyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTMzOC43IDM5NS45YzYuNi01LjkgNy4xLTE2IDEuMi0yMi42QzMyMy44IDM1NS40IDI5NS43IDMzNiAyNTYgMzM2cy02Ny44IDE5LjQtODMuOSAzNy4zYy01LjkgNi42LTUuNCAxNi43IDEuMiAyMi42czE2LjcgNS40IDIyLjYtMS4yYzExLjctMTMgMzEuNi0yNi43IDYwLjEtMjYuN3M0OC40IDEzLjcgNjAuMSAyNi43YzUuOSA2LjYgMTYgNy4xIDIyLjYgMS4yek0xNzYuNCAyNzJjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC0xLjUtLjEtMy0uMy00LjRsMTAuOSAzLjZjOC40IDIuOCAxNy40LTEuNyAyMC4yLTEwLjFzLTEuNy0xNy40LTEwLjEtMjAuMmwtOTYtMzJjLTguNC0yLjgtMTcuNCAxLjctMjAuMiAxMC4xczEuNyAxNy40IDEwLjEgMjAuMmwzMC43IDEwLjJjLTUuOCA1LjgtOS4zIDEzLjgtOS4zIDIyLjZjMCAxNy43IDE0LjMgMzIgMzIgMzJ6bTE5Mi0zMmMwLTguOS0zLjYtMTctOS41LTIyLjhsMzAuMi0xMC4xYzguNC0yLjggMTIuOS0xMS45IDEwLjEtMjAuMnMtMTEuOS0xMi45LTIwLjItMTAuMWwtOTYgMzJjLTguNCAyLjgtMTIuOSAxMS45LTEwLjEgMjAuMnMxMS45IDEyLjkgMjAuMiAxMC4xbDExLjctMy45Yy0uMiAxLjUtLjMgMy4xLS4zIDQuN2MwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlRGl6enkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMjI0YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek0xMDAuNyAxMzIuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMEwxNjAgMTY5LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkwxODIuNiAxOTJsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMMTYwIDIxNC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMMTM3LjQgMTkybC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42em0xOTIgMGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMEwzNTIgMTY5LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkwzNzQuNiAxOTJsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMMzUyIDIxNC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMMzI5LjQgMTkybC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlRmx1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE3NiAzODRjMCA4LjggNy4yIDE2IDE2IDE2SDMyMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnptLTE2LTg4YTcyIDcyIDAgMSAwIDAtMTQ0IDcyIDcyIDAgMSAwIDAgMTQ0em0yNjQtNzJhNzIgNzIgMCAxIDAgLTE0NCAwIDcyIDcyIDAgMSAwIDE0NCAwem0tMjg4IDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTkyIDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUZyb3duT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTc2LjQgMTc2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bS0xMjIgMTc0LjVjLTEyLjQgNS4yLTI2LjUtNC4xLTIxLjEtMTYuNGMxNi0zNi42IDUyLjQtNjIuMSA5NC44LTYyLjFzNzguOCAyNS42IDk0LjggNjIuMWM1LjQgMTIuMy04LjcgMjEuNi0yMS4xIDE2LjRjLTIyLjQtOS41LTQ3LjQtMTQuOC03My43LTE0LjhzLTUxLjMgNS4zLTczLjcgMTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUZyb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNTkuMyAzODguN2MtMi42IDguNC0xMS42IDEzLjItMjAgMTAuNXMtMTMuMi0xMS42LTEwLjUtMjBDMTQ1LjIgMzI2LjEgMTk2LjMgMjg4IDI1NiAyODhzMTEwLjggMzguMSAxMjcuMyA5MS4zYzIuNiA4LjQtMi4xIDE3LjQtMTAuNSAyMHMtMTcuNC0yLjEtMjAtMTAuNUMzNDAuNSAzNDkuNCAzMDIuMSAzMjAgMjU2IDMyMHMtODQuNSAyOS40LTk2LjcgNjguN3pNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem05Ni0xMTJoLThWMzYwbDU1LjMgMGMtMy44IDIyLjctMjMuNiA0MC00Ny4zIDQwem00Ny4zLTU2TDM0NCAzNDRWMzA0aDhjMjMuOCAwIDQzLjUgMTcuMyA0Ny4zIDQwek0zMjggMzQ0SDI2NFYzMDRoNjR2NDB6bTAgNTZIMjY0VjM2MGg2NHY0MHptLTgwLTk2djQwbC02NCAwVjMwNGg2NHptMCA1NnY0MEgxODRWMzYwbDY0IDB6bS04MC0xNkgxMTIuN2MzLjgtMjIuNyAyMy42LTQwIDQ3LjMtNDBoOHY0MHptMCA1NmgtOGMtMjMuOCAwLTQzLjUtMTcuMy00Ny4zLTQwSDE2OHY0MHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluQmVhbVN3ZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Ni44IDEyNi4zYy00LjEgMS4xLTguNCAxLjctMTIuOCAxLjdjLTI2LjUgMC00OC0yMS00OC00N2MwLTUgMS44LTExLjMgNC42LTE4LjFjLjMtLjcgLjYtMS40IC45LTIuMWM5LTIwLjIgMjYuNS00NC45IDM2LTU3LjVjMy4yLTQuNCA5LjYtNC40IDEyLjggMEM0ODMuNCAyMC42IDUxMiA2MSA1MTIgODFjMCAyMS43LTE0LjkgMzkuOC0zNS4yIDQ1LjN6TTI1NiAwYzUxLjQgMCA5OS4zIDE1LjIgMTM5LjQgNDEuMmMtMS41IDMuMS0zIDYuMi00LjMgOS4zYy0zLjQgOC03LjEgMTktNy4xIDMwLjVjMCA0NC4zIDM2LjYgNzkgODAgNzljOS42IDAgMTguOC0xLjcgMjcuNC00LjhjMTMuMyAzMC45IDIwLjYgNjUgMjAuNiAxMDAuOGMwIDE0MS40LTExNC42IDI1Ni0yNTYgMjU2UzAgMzk3LjQgMCAyNTZTMTE0LjYgMCAyNTYgMHpNMzg4LjEgMzEyLjhjLTM5LjcgMTIuMi04NC41IDE5LTEzMS44IDE5cy05Mi4xLTYuOC0xMzEuOC0xOWMtMTIuMy0zLjgtMjQuMyA2LjktMTkuMyAxOC43YzI1IDU5LjEgODMuMiAxMDAuNSAxNTEuMSAxMDAuNXMxMjYuMi00MS40IDE1MS4xLTEwMC41YzUtMTEuOC03LTIyLjUtMTkuMy0xOC43em0tMTcwLjUtODRsMCAwIDAgMGMyLjEgMi44IDUuNyAzLjkgOC45IDIuOHM1LjUtNC4xIDUuNS03LjZjMC0xNy45LTYuNy0zNS42LTE2LjYtNDguOGMtOS44LTEzLTIzLjktMjMuMi0zOS40LTIzLjJzLTI5LjYgMTAuMi0zOS40IDIzLjJDMTI2LjcgMTg4LjQgMTIwIDIwNi4xIDEyMCAyMjRjMCAzLjQgMi4yIDYuNSA1LjUgNy42czYuOSAwIDguOS0yLjhsMCAwIDAgMCAwIDAgLjItLjJjLjItLjIgLjQtLjUgLjctLjljLjYtLjggMS42LTIgMi44LTMuNGMyLjUtMi44IDYtNi42IDEwLjItMTAuM2M4LjgtNy44IDE4LjgtMTQgMjcuNy0xNHMxOC45IDYuMiAyNy43IDE0YzQuMiAzLjcgNy43IDcuNSAxMC4yIDEwLjNjMS4yIDEuNCAyLjIgMi42IDIuOCAzLjRjLjMgLjQgLjYgLjcgLjcgLjlsLjIgLjIgMCAwIDAgMHptMTYwIDBsMCAwIDAgMCAwIDBjMi4xIDIuOCA1LjcgMy45IDguOSAyLjhzNS41LTQuMSA1LjUtNy42YzAtMTcuOS02LjctMzUuNi0xNi42LTQ4LjhjLTkuOC0xMy0yMy45LTIzLjItMzkuNC0yMy4ycy0yOS42IDEwLjItMzkuNCAyMy4yQzI4Ni43IDE4OC40IDI4MCAyMDYuMSAyODAgMjI0YzAgMy40IDIuMiA2LjUgNS41IDcuNnM2LjkgMCA4LjktMi44bDAgMCAwIDAgMCAwIC4yLS4yYy4yLS4yIC40LS41IC43LS45Yy42LS44IDEuNi0yIDIuOC0zLjRjMi41LTIuOCA2LTYuNiAxMC4yLTEwLjNjOC44LTcuOCAxOC44LTE0IDI3LjctMTRzMTguOSA2LjIgMjcuNyAxNGM0LjIgMy43IDcuNyA3LjUgMTAuMiAxMC4zYzEuMiAxLjQgMi4yIDIuNiAyLjggMy40Yy4zIC40IC42IC43IC43IC45bC4yIC4yIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5CZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6bS0xNzAuNS04NGwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpbkhlYXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0xOTkuMyAxMjkuMWMxNy44IDQuOCAyOC40IDIzLjEgMjMuNiA0MC44bC0xNy40IDY1Yy0yLjMgOC41LTExLjEgMTMuNi0xOS42IDExLjNsLTY1LjEtMTcuNGMtMTcuOC00LjgtMjguNC0yMy4xLTIzLjYtNDAuOHMyMy4xLTI4LjQgNDAuOC0yMy42bDE2LjEgNC4zIDQuMy0xNi4xYzQuOC0xNy44IDIzLjEtMjguNCA0MC44LTIzLjZ6bTE1NC4zIDIzLjZsNC4zIDE2LjEgMTYuMS00LjNjMTcuOC00LjggMzYuMSA1LjggNDAuOCAyMy42cy01LjggMzYuMS0yMy42IDQwLjhsLTY1LjEgMTcuNGMtOC41IDIuMy0xNy4zLTIuOC0xOS42LTExLjNsLTE3LjQtNjVjLTQuOC0xNy44IDUuOC0zNi4xIDIzLjYtNDAuOHMzNi4xIDUuOCA0MC45IDIzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluU3F1aW50VGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI2LjggMTQuMkM0NDYtNSA0NzcuNS00LjYgNDk3LjEgMTQuOXMyMCA1MSAuNyA3MC4zYy02LjggNi44LTIxLjQgMTIuNC0zNy40IDE2LjdjLTE2LjMgNC40LTM0LjEgNy41LTQ2LjMgOS4zYy0xLjYgLjItMy4xIC41LTQuNiAuNmMtNS42IC45LTEwLjMtMy45LTkuNS05LjVjMS42LTExLjIgNC42LTI5LjYgOS00N2MuMy0xLjMgLjctMi42IDEtMy45YzQuMy0xNS45IDkuOC0zMC41IDE2LjctMzcuNHptLTQ0LjcgMTljLTEuNSA0LjgtMi45IDkuNi00LjEgMTQuM2MtNC44IDE4LjktOCAzOC41LTkuNyA1MC4zYy00IDI2LjggMTguOSA0OS43IDQ1LjcgNDUuOGMxMS45LTEuNiAzMS41LTQuOCA1MC40LTkuN2M0LjctMS4yIDkuNS0yLjUgMTQuMy00LjFDNTM0LjIgMjI3LjUgNTIwLjIgMzUzLjggNDM3IDQzN2MtODMuMiA4My4yLTIwOS41IDk3LjItMzA3LjIgNDEuOGMxLjUtNC44IDIuOC05LjYgNC0xNC4zYzQuOC0xOC45IDgtMzguNSA5LjctNTAuM2M0LTI2LjgtMTguOS00OS43LTQ1LjctNDUuOGMtMTEuOSAxLjYtMzEuNSA0LjgtNTAuNCA5LjdjLTQuNyAxLjItOS41IDIuNS0xNC4zIDQuMUMtMjIuMiAyODQuNS04LjIgMTU4LjIgNzUgNzVDMTU4LjItOC4zIDI4NC41LTIyLjIgMzgyLjIgMzMuMnpNNTEuNSA0MTAuMWMxOC41LTUgMzguOC04LjMgNTAuOS0xMGM1LjYtLjkgMTAuMyAzLjkgOS41IDkuNWMtMS43IDEyLjEtNSAzMi40LTEwIDUwLjlDOTcuNiA0NzYuNCA5MiA0OTEgODUuMiA0OTcuOEM2NiA1MTcgMzQuNSA1MTYuNiAxNC45IDQ5Ny4xcy0yMC01MS0uNy03MC4zYzYuOC02LjggMjEuNC0xMi40IDM3LjQtMTYuN3pNNDE2LjQgMjAyLjNjLTQuOC0xMS45LTIwLjktMTAuOS0yNi45IC40Yy0xOS40IDM2LjctNDYuMyA3My4yLTc5LjggMTA2LjdzLTcwIDYwLjMtMTA2LjcgNzkuOGMtMTEuMyA2LTEyLjMgMjIuMS0uNCAyNi45YzU5LjQgMjQuMSAxMjkuOSAxMi4yIDE3Ny45LTM1LjhzNTkuOS0xMTguNSAzNS44LTE3Ny45ek04Ny4xIDI4NS4xYzIgMiA0LjYgMy4yIDcuMyAzLjRsNTYuMSA1LjEgNS4xIDU2LjFjLjMgMi44IDEuNSA1LjQgMy40IDcuM2M2LjMgNi4zIDE3LjIgMy42IDE5LjgtNC45bDI5LjctOTcuNGMzLjUtMTEuNi03LjMtMjIuNS0xOS0xOUw5MiAyNjUuM2MtOC42IDIuNi0xMS4zIDEzLjQtNC45IDE5Ljh6TTI2NS4zIDkybC0yOS43IDk3LjRjLTMuNSAxMS42IDcuMyAyMi41IDE5IDE5bDk3LjQtMjkuN2M4LjYtMi42IDExLjMtMTMuNCA0LjktMTkuOGMtMi0yLTQuNi0zLjItNy4zLTMuNGwtNTYuMS01LjEtNS4xLTU2LjFjLS4zLTIuOC0xLjUtNS40LTMuNC03LjNjLTYuMy02LjMtMTcuMi0zLjYtMTkuOCA0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6TTEzMy41IDE0Ni43bDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTU3LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluU3RhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em00MDcuNCA3NS41YzUtMTEuOC03LTIyLjUtMTkuMy0xOC43Yy0zOS43IDEyLjItODQuNSAxOS0xMzEuOCAxOXMtOTIuMS02LjgtMTMxLjgtMTljLTEyLjMtMy44LTI0LjMgNi45LTE5LjMgMTguN2MyNSA1OS4xIDgzLjIgMTAwLjUgMTUxLjEgMTAwLjVzMTI2LjItNDEuNCAxNTEuMS0xMDAuNXpNMTYwIDEyMGMtMy4xIDAtNS45IDEuOC03LjIgNC42bC0xNi42IDM0LjctMzguMSA1Yy0zLjEgLjQtNS42IDIuNS02LjYgNS41cy0uMSA2LjIgMi4xIDguM2wyNy45IDI2LjUtNyAzNy44Yy0uNiAzIC43IDYuMSAzLjIgNy45czUuOCAyIDguNSAuNkwxNjAgMjMyLjVsMzMuOCAxOC4zYzIuNyAxLjUgNiAxLjMgOC41LS42czMuNy00LjkgMy4yLTcuOWwtNy0zNy44TDIyNi40IDE3OGMyLjItMi4xIDMuMS01LjMgMi4xLTguM3MtMy41LTUuMS02LjYtNS41bC0zOC4xLTUtMTYuNi0zNC43Yy0xLjMtMi44LTQuMS00LjYtNy4yLTQuNnptMTkyIDBjLTMuMSAwLTUuOSAxLjgtNy4yIDQuNmwtMTYuNiAzNC43LTM4LjEgNWMtMy4xIC40LTUuNiAyLjUtNi42IDUuNXMtLjEgNi4yIDIuMSA4LjNsMjcuOSAyNi41LTcgMzcuOGMtLjYgMyAuNyA2LjEgMy4yIDcuOXM1LjggMiA4LjUgLjZMMzUyIDIzMi41bDMzLjggMTguM2MyLjcgMS41IDYgMS4zIDguNS0uNnMzLjctNC45IDMuMi03LjlsLTctMzcuOEw0MTguNCAxNzhjMi4yLTIuMSAzLjEtNS4zIDIuMS04LjNzLTMuNS01LjEtNi42LTUuNWwtMzguMS01LTE2LjYtMzQuN2MtMS4zLTIuOC00LjEtNC42LTcuMi00LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluVGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ4LjYgMzcxLjRDNTA2LjQgNDU0LjggNDE5LjkgNTEyIDMyMCA1MTJzLTE4Ni40LTU3LjItMjI4LjYtMTQwLjZjNC41LTIuOSA4LjctNi4zIDEyLjctMTAuM2M4LjEtOC4xIDEzLjItMTguNiAxNi41LTI2LjZjMy42LTguOCA2LjUtMTguNCA4LjgtMjcuNWM0LjYtMTguMiA3LjctMzcgOS4zLTQ4LjJjMy45LTI2LjUtMTguOC00OS4yLTQ1LjItNDUuNGMtNi44IC45LTE2LjIgMi40LTI2LjYgNC40Qzg1LjMgOTQuNSAxOTEuNiAwIDMyMCAwUzU1NC43IDk0LjUgNTczLjIgMjE3LjdjLTEwLjMtMi0xOS44LTMuNS0yNi42LTQuNGMtMjYuNS0zLjktNDkuMiAxOC44LTQ1LjIgNDUuNGMxLjYgMTEuMyA0LjYgMzAgOS4zIDQ4LjJjMi4zIDkuMSA1LjIgMTguOCA4LjggMjcuNWMzLjMgOC4xIDguNCAxOC41IDE2LjUgMjYuNmMzLjkgMy45IDguMiA3LjQgMTIuNyAxMC4zek0xMDcgMjU0LjFjLTMuMSAyMS41LTExLjQgNzAuMi0yNS41IDg0LjRjLS45IDEtMS45IDEuOC0yLjkgMi43QzYwIDM1Ni43IDMyIDM1NS41IDE0LjMgMzM3LjdjLTE4LjctMTguNy0xOS4xLTQ4LjgtLjctNjcuMmM4LjYtOC42IDMwLjEtMTUuMSA1MC41LTE5LjZjMTMtMi44IDI1LjUtNC44IDMzLjktNmM1LjQtLjggOS45IDMuNyA5IDl6bTQ1NC41IDg3LjFjLS44LS42LTEuNS0xLjMtMi4zLTJjLS4yLS4yLS41LS40LS43LS43Yy0xNC4xLTE0LjEtMjIuNS02Mi45LTI1LjUtODQuNGMtLjgtNS40IDMuNy05LjkgOS05YzEgLjEgMi4yIC4zIDMuMyAuNWM4LjIgMS4yIDE5LjIgMyAzMC42IDUuNWMyMC40IDQuNCA0MS45IDEwLjkgNTAuNSAxOS42YzE4LjQgMTguNCAxOCA0OC41LS43IDY3LjJjLTE3LjcgMTcuNy00NS43IDE5LTY0LjIgMy40em0tOTAuMS05LjdjNS0xMS44LTctMjIuNS0xOS4zLTE4LjdjLTM5LjcgMTIuMi04NC41IDE5LTEzMS44IDE5cy05Mi4xLTYuOC0xMzEuOC0xOWMtMTIuMy0zLjgtMjQuMyA2LjktMTkuMyAxOC43YzI1IDU5LjEgODMuMiAxMDAuNSAxNTEuMSAxMDAuNXMxMjYuMi00MS40IDE1MS4xLTEwMC41ek0yODEuNiAyMjguOGwwIDAgMCAwIDAgMGMyLjEgMi44IDUuNyAzLjkgOC45IDIuOHM1LjUtNC4xIDUuNS03LjZjMC0xNy45LTYuNy0zNS42LTE2LjYtNDguOGMtOS44LTEzLTIzLjktMjMuMi0zOS40LTIzLjJzLTI5LjYgMTAuMi0zOS40IDIzLjJDMTkwLjcgMTg4LjQgMTg0IDIwNi4xIDE4NCAyMjRjMCAzLjQgMi4yIDYuNSA1LjUgNy42czYuOSAwIDguOS0yLjhsMCAwIDAgMCAwIDAgLjItLjJjLjItLjIgLjQtLjUgLjctLjljLjYtLjggMS42LTIgMi44LTMuNGMyLjUtMi44IDYtNi42IDEwLjItMTAuM2M4LjgtNy44IDE4LjgtMTQgMjcuNy0xNHMxOC45IDYuMiAyNy43IDE0YzQuMiAzLjcgNy43IDcuNSAxMC4yIDEwLjNjMS4yIDEuNCAyLjIgMi42IDIuOCAzLjRjLjMgLjQgLjYgLjcgLjcgLjlsLjIgLjIgMCAwem0xNjAgMGwwIDAgMCAwYzIuMSAyLjggNS43IDMuOSA4LjkgMi44czUuNS00LjEgNS41LTcuNmMwLTE3LjktNi43LTM1LjYtMTYuNi00OC44Yy05LjgtMTMtMjMuOS0yMy4yLTM5LjQtMjMuMnMtMjkuNiAxMC4yLTM5LjQgMjMuMkMzNTAuNyAxODguNCAzNDQgMjA2LjEgMzQ0IDIyNGMwIDMuNCAyLjIgNi41IDUuNSA3LjZzNi45IDAgOC45LTIuOGwwIDAgMCAwIDAgMCAuMi0uMmMuMi0uMiAuNC0uNSAuNy0uOWMuNi0uOCAxLjYtMiAyLjgtMy40YzIuNS0yLjggNi02LjYgMTAuMi0xMC4zYzguOC03LjggMTguOC0xNCAyNy43LTE0czE4LjkgNi4yIDI3LjcgMTRjNC4yIDMuNyA3LjcgNy41IDEwLjIgMTAuM2MxLjIgMS40IDIuMiAyLjYgMi44IDMuNGMuMyAuNCAuNiAuNyAuNyAuOWwuMiAuMiAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpblRvbmd1ZVNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NkMwIDM2OC45IDczLjEgNDY0LjcgMTc0LjUgNDk4LjhDMTY1LjMgNDg0IDE2MCA0NjYuNiAxNjAgNDQ4VjQwMC43Yy0yNC0xNy41LTQzLjEtNDEuNC01NC44LTY5LjJjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN2MtMTEuOCAyOC0zMS4xIDUyLTU1LjQgNjkuNlY0NDhjMCAxOC42LTUuMyAzNi0xNC41IDUwLjhDNDM4LjkgNDY0LjcgNTEyIDM2OC45IDUxMiAyNTZDNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NnpNMTE2IDE0MS4xYzAtOSA5LjYtMTQuNyAxNy41LTEwLjVsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42em0yNjIuNS0xMC41YzcuOS00LjIgMTcuNSAxLjUgMTcuNSAxMC41YzAgMi44LTEgNS41LTIuOCA3LjZsLTM2IDQzLjIgMzYgNDMuMmMxLjggMi4xIDIuOCA0LjggMi44IDcuNmMwIDktOS42IDE0LjctMTcuNSAxMC41bC04OS45LTQ3LjljLTEwLjctNS43LTEwLjctMjEuMSAwLTI2LjhsODkuOS00Ny45ek0zMjAgNDQ4VjQwMi42YzAtMTQuNy0xMS45LTI2LjYtMjYuNi0yNi42aC0yYy0xMS4zIDAtMjEuMSA3LjktMjMuNiAxOC45Yy0yLjggMTIuNi0yMC44IDEyLjYtMjMuNiAwYy0yLjUtMTEuMS0xMi4zLTE4LjktMjMuNi0xOC45aC0yYy0xNC43IDAtMjYuNiAxMS45LTI2LjYgMjYuNlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5Ub25ndWVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NC41IDQ5OC44QzczLjEgNDY0LjcgMCAzNjguOSAwIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZjMCAxMTIuOS03My4xIDIwOC43LTE3NC41IDI0Mi44QzM0Ni43IDQ4NCAzNTIgNDY2LjYgMzUyIDQ0OFY0MDEuMWMyNC4zLTE3LjUgNDMuNi00MS42IDU1LjQtNjkuNmM1LTExLjgtNy0yMi41LTE5LjMtMTguN2MtMzkuNyAxMi4yLTg0LjUgMTktMTMxLjggMTlzLTkyLjEtNi44LTEzMS44LTE5Yy0xMi4zLTMuOC0yNC4zIDYuOS0xOS4zIDE4LjdjMTEuNyAyNy44IDMwLjggNTEuNyA1NC44IDY5LjJWNDQ4YzAgMTguNiA1LjMgMzYgMTQuNSA1MC44em0yMC43LTI2NS4yYzUuMyA3LjEgMTUuMyA4LjUgMjIuNCAzLjJzOC41LTE1LjMgMy4yLTIyLjRjLTMwLjQtNDAuNS05MS4yLTQwLjUtMTIxLjYgMGMtNS4zIDcuMS0zLjkgMTcuMSAzLjIgMjIuNHMxNy4xIDMuOSAyMi40LTMuMmMxNy42LTIzLjUgNTIuOC0yMy41IDcwLjQgMHpNMzM2IDI3MmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMzIwIDQwMi42VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NFY0MDIuNmMwLTE0LjcgMTEuOS0yNi42IDI2LjYtMjYuNmgyYzExLjMgMCAyMS4xIDcuOSAyMy42IDE4LjljMi44IDEyLjYgMjAuOCAxMi42IDIzLjYgMGMyLjUtMTEuMSAxMi4zLTE4LjkgMjMuNi0xOC45aDJjMTQuNyAwIDI2LjYgMTEuOSAyNi42IDI2LjZ6TTMzNiAxODRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpblRvbmd1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NkMwIDM2OC45IDczLjEgNDY0LjcgMTc0LjUgNDk4LjhDMTY1LjMgNDg0IDE2MCA0NjYuNiAxNjAgNDQ4VjQwMC43Yy0yNC0xNy41LTQzLjEtNDEuNC01NC44LTY5LjJjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN2MtMTEuOCAyOC0zMS4xIDUyLTU1LjQgNjkuNlY0NDhjMCAxOC42LTUuMyAzNi0xNC41IDUwLjhDNDM4LjkgNDY0LjcgNTEyIDM2OC45IDUxMiAyNTZDNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NnptMTc2LjQtODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzIwIDQ0OFY0MDIuNmMwLTE0LjctMTEuOS0yNi42LTI2LjYtMjYuNmgtMmMtMTEuMyAwLTIxLjEgNy45LTIzLjYgMTguOWMtMi44IDEyLjYtMjAuOCAxMi42LTIzLjYgMGMtMi41LTExLjEtMTIuMy0xOC45LTIzLjYtMTguOWgtMmMtMTQuNyAwLTI2LjYgMTEuOS0yNi42IDI2LjZWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluV2lkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0yMDggMTkyYzAgMzUuMy0xNC4zIDY0LTMyIDY0cy0zMi0yOC43LTMyLTY0czE0LjMtNjQgMzItNjRzMzIgMjguNyAzMiA2NHptMTI4IDY0Yy0xNy43IDAtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjRzLTE0LjMgNjQtMzIgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5em0tMTYuOS03OS4yYy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMGMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yek0xNzYuNCAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUtpc3NCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem00OC43LTE5OC4zYzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNGMtMi43IDEuNS01LjcgMy04LjcgNC4zYzMuMSAxLjMgNiAyLjcgOC43IDQuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNGM0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRDMjc0LjcgNDQzLjEgMjU3LjQgNDQ4IDI0MCA0NDhjLTMuNiAwLTYuOC0yLjUtNy43LTZzLjYtNy4yIDMuOC05bDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWMtLjQtLjItLjctLjQtLjktLjVsLS4yLS4xIDAgMCAwIDAgMCAwYy0yLjUtMS40LTQuMS00LjEtNC4xLTdzMS42LTUuNiA0LjEtN2wwIDAgMCAwIDAgMCAwIDAgMCAwIC4yLS4xIC4zLS4yIC42LS40Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xbC0uNC0uMy0uNS0uMy0uMi0uMSAwIDAgMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjR6bS04Ny4xLTg0LjlsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUtpc3NXaW5rSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk4IDMzOS43YzkuMS0yNi4yIDE0LTU0LjQgMTQtODMuN0M1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMFMwIDExNC42IDAgMjU2UzExNC42IDUxMiAyNTYgNTEyYzM1LjQgMCA2OS4xLTcuMiA5OS43LTIwLjJjLTQuOC01LjUtOC41LTEyLjItMTAuNC0xOS43bC0yMi45LTg5LjNjLTEwLTM5IDExLjgtODAuOSA1MS44LTkyLjFjMzcuMi0xMC40IDczLjggMTAuMSA4Ny41IDQ0YzEyLjctMS42IDI1LjEgLjQgMzYuMiA1ek0yOTYgMzMyYzAgNi45LTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNGMtMi43IDEuNS01LjcgMy04LjcgNC4zYzMuMSAxLjMgNiAyLjcgOC43IDQuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNGM0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRDMjU4LjcgNDQzLjEgMjQxLjQgNDQ4IDIyNCA0NDhjLTMuNiAwLTYuOC0yLjUtNy43LTZzLjYtNy4yIDMuOC05bDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWwtLjYtLjQtLjMtLjItLjItLjEgMCAwIDAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03bDAgMCAwIDAgMCAwIDAgMCAwIDAgLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFjLS40LS4yLS43LS40LS45LS41bC0uMi0uMSAwIDAgMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjRjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3pNMTc2LjQgMTc2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTk0LjggNTcuNmMtMTcuNi0yMy41LTUyLjgtMjMuNS03MC40IDBjLTUuMyA3LjEtMTUuMyA4LjUtMjIuNCAzLjJzLTguNS0xNS4zLTMuMi0yMi40YzMwLjQtNDAuNSA5MS4yLTQwLjUgMTIxLjYgMGM1LjMgNy4xIDMuOSAxNy4xLTMuMiAyMi40cy0xNy4xIDMuOS0yMi40LTMuMnpNNDM0IDM1Mi4zYy02LTIzLjItMjguOC0zNy01MS4xLTMwLjhzLTM1LjQgMzAuMS0yOS41IDUzLjRsMjIuOSA4OS4zYzIuMiA4LjcgMTEuMiAxMy45IDE5LjggMTEuNGw4NC45LTIzLjhjMjIuMi02LjIgMzUuNC0zMC4xIDI5LjUtNTMuNHMtMjguOC0zNy01MS4xLTMwLjhsLTIwLjIgNS42LTUuNC0yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUtpc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTQ4LjctMTk4LjNjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNzQuNyA0NDMuMSAyNTcuNCA0NDggMjQwIDQ0OGMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xYy0uNC0uMi0uNy0uNC0uOS0uNWwtLjItLjEgMCAwIDAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03bDAgMCAwIDAgMCAwIDAgMCAwIDAgLjItLjEgLjMtLjIgLjYtLjRjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFsLS40LS4zLS41LS4zLS4yLS4xIDAgMCAwIDAgMCAwYy0zLjItMS44LTQuNy01LjUtMy44LTlzNC4xLTYgNy43LTZjMTcuNCAwIDM0LjcgNC45IDQ3LjkgMTIuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VMYXVnaEJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45ek0yMTcuNiAyMTIuOGwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlTGF1Z2hTcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45em0zNi43LTE5OS40bDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTI1LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VMYXVnaFdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45ek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTU2LjQgMjUuNmMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yYy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUxhdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek05Ni44IDMxNC4xYy0zLjgtMTMuNyA3LjQtMjYuMSAyMS42LTI2LjFIMzkzLjZjMTQuMiAwIDI1LjUgMTIuNCAyMS42IDI2LjFDMzk2LjIgMzgyIDMzMi4xIDQzMiAyNTYgNDMycy0xNDAuMi01MC0xNTkuMi0xMTcuOXpNMTQ0LjQgMTkyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VNZWhCbGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTIwOC40LTQ4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTEyOCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VNZWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3Ni40IDE3NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0xNjAgMzM2SDM1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNjBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VSb2xsaW5nRXllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTkyIDM2OEgzMjBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTkyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0zMi0xNDRjMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjRjMC0yNiAxNS41LTQ4LjQgMzcuOC01OC40Yy0zLjcgNS4yLTUuOCAxMS42LTUuOCAxOC40YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC02LjktMi4yLTEzLjItNS44LTE4LjRDMjA4LjUgMTc1LjYgMjI0IDE5OCAyMjQgMjI0em0xMjggNjRjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjYgMTUuNS00OC40IDM3LjgtNTguNGMtMy43IDUuMi01LjggMTEuNi01LjggMTguNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNi45LTIuMi0xMy4yLTUuOC0xOC40QzQwMC41IDE3NS42IDQxNiAxOTggNDE2IDIyNGMwIDM1LjMtMjguNyA2NC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNhZENyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgNDkzLjRjLTI5LjYgMTItNjIuMSAxOC42LTk2IDE4LjZzLTY2LjQtNi42LTk2LTE4LjZWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ3Ny44QzUxLjUgNDMzLjUgMCAzNTAuOCAwIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZjMCA5NC44LTUxLjUgMTc3LjUtMTI4IDIyMS44VjI4OGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlY0OTMuNHpNMTk1LjIgMjMzLjZjNS4zIDcuMSAxNS4zIDguNSAyMi40IDMuMnM4LjUtMTUuMyAzLjItMjIuNGMtMzAuNC00MC41LTkxLjItNDAuNS0xMjEuNiAwYy01LjMgNy4xLTMuOSAxNy4xIDMuMiAyMi40czE3LjEgMy45IDIyLjQtMy4yYzE3LjYtMjMuNSA1Mi44LTIzLjUgNzAuNCAwem0xMjEuNiAwYzE3LjYtMjMuNSA1Mi44LTIzLjUgNzAuNCAwYzUuMyA3LjEgMTUuMyA4LjUgMjIuNCAzLjJzOC41LTE1LjMgMy4yLTIyLjRjLTMwLjQtNDAuNS05MS4yLTQwLjUtMTIxLjYgMGMtNS4zIDcuMS0zLjkgMTcuMSAzLjIgMjIuNHMxNy4xIDMuOSAyMi40LTMuMnpNMjA4IDMzNnYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4VjMzNmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNhZFRlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2em0yNDAgODBjMC04LjggNy4yLTE2IDE2LTE2YzQ1IDAgODUuNiAyMC41IDExNS43IDUzLjFjNiA2LjUgNS42IDE2LjYtLjkgMjIuNnMtMTYuNiA1LjYtMjIuNi0uOWMtMjUtMjcuMS01Ny40LTQyLjktOTIuMy00Mi45Yy04LjggMC0xNi03LjItMTYtMTZ6bS04MCA4MGMtMjYuNSAwLTQ4LTIxLTQ4LTQ3YzAtMjAgMjguNi02MC40IDQxLjYtNzcuN2MzLjItNC40IDkuNi00LjQgMTIuOCAwQzE3OS42IDMwOC42IDIwOCAzNDkgMjA4IDM2OWMwIDI2LTIxLjUgNDctNDggNDd6TTM2Ny42IDIwOGEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0tMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNtaWxlQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY0LjEgMzI1LjVDMTgyIDM0Ni4yIDIxMi42IDM2OCAyNTYgMzY4czc0LTIxLjggOTEuOS00Mi41YzUuOC02LjcgMTUuOS03LjQgMjIuNi0xLjZzNy40IDE1LjkgMS42IDIyLjZDMzQ5LjggMzcyLjEgMzExLjEgNDAwIDI1NiA0MDBzLTkzLjgtMjcuOS0xMTYuMS01My41Yy01LjgtNi43LTUuMS0xNi44IDEuNi0yMi42czE2LjgtNS4xIDIyLjYgMS42em01My41LTk2LjdsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNtaWxlV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY0LjEgMzI1LjVDMTgyIDM0Ni4yIDIxMi42IDM2OCAyNTYgMzY4czc0LTIxLjggOTEuOS00Mi41YzUuOC02LjcgMTUuOS03LjQgMjIuNi0xLjZzNy40IDE1LjkgMS42IDIyLjZDMzQ5LjggMzcyLjEgMzExLjEgNDAwIDI1NiA0MDBzLTkzLjgtMjcuOS0xMTYuMS01My41Yy01LjgtNi43LTUuMS0xNi44IDEuNi0yMi42czE2LjgtNS4xIDIyLjYgMS42ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTU2LjQgMjUuNmMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yYy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjQuMSAzMjUuNUMxODIgMzQ2LjIgMjEyLjYgMzY4IDI1NiAzNjhzNzQtMjEuOCA5MS45LTQyLjVjNS44LTYuNyAxNS45LTcuNCAyMi42LTEuNnM3LjQgMTUuOSAxLjYgMjIuNkMzNDkuOCAzNzIuMSAzMTEuMSA0MDAgMjU2IDQwMHMtOTMuOC0yNy45LTExNi4xLTUzLjVjLTUuOC02LjctNS4xLTE2LjggMS42LTIyLjZzMTYuOC01LjEgMjIuNiAxLjZ6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlU3VycHJpc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3Ni40IDE3NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0yNTYgMjg4YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlVGlyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2NC43IDMyOC43YzIyLTIyIDUzLjktNDAuNyA5MS4zLTQwLjdzNjkuMyAxOC43IDkxLjMgNDAuN2MxMS4xIDExLjEgMjAuMSAyMy40IDI2LjQgMzUuNGM2LjIgMTEuNyAxMC4zIDI0LjQgMTAuMyAzNS45YzAgNS4yLTIuNiAxMC4yLTYuOSAxMy4ycy05LjggMy43LTE0LjcgMS44bC0yMC41LTcuN2MtMjYuOS0xMC4xLTU1LjUtMTUuMy04NC4zLTE1LjNoLTMuMmMtMjguOCAwLTU3LjMgNS4yLTg0LjMgMTUuM0wxNDkuNiA0MTVjLTQuOSAxLjgtMTAuNCAxLjItMTQuNy0xLjhzLTYuOS03LjktNi45LTEzLjJjMC0xMS42IDQuMi0yNC4yIDEwLjMtMzUuOWM2LjMtMTIgMTUuMy0yNC4zIDI2LjQtMzUuNHptLTMxLjItMTgybDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTU3LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTguNiAwYy0xLjcgMC0zLjQgLjEtNS4xIC41QzE2OCAxNyAxMTUuNiAxMDIuMyAxMzAuNSAxODkuM2MyLjkgMTcgOC40IDMyLjkgMTUuOSA0Ny40TDMyIDIyNEgyOS40QzEzLjIgMjI0IDAgMjM3LjIgMCAyNTMuNGMwIDEuNyAuMSAzLjQgLjUgNS4xQzE3IDM0NCAxMDIuMyAzOTYuNCAxODkuMyAzODEuNWMxNy0yLjkgMzIuOS04LjQgNDcuNC0xNS45TDIyNCA0ODB2Mi42YzAgMTYuMiAxMy4yIDI5LjQgMjkuNCAyOS40YzEuNyAwIDMuNC0uMSA1LjEtLjVDMzQ0IDQ5NSAzOTYuNCA0MDkuNyAzODEuNSAzMjIuN2MtMi45LTE3LTguNC0zMi45LTE1LjktNDcuNEw0ODAgMjg4aDIuNmMxNi4yIDAgMjkuNC0xMy4yIDI5LjQtMjkuNGMwLTEuNy0uMS0zLjQtLjUtNS4xQzQ5NSAxNjggNDA5LjcgMTE1LjYgMzIyLjcgMTMwLjVjLTE3IDIuOS0zMi45IDguNC00Ny40IDE1LjlMMjg4IDMyVjI5LjRDMjg4IDEzLjIgMjc0LjggMCAyNTguNiAwek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmF1Y2V0RHJpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0NGw5Ni0xMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwyNTYgODRsLTMxLTMuOS0xLS4xLTEgLjFMMTkyIDg0IDk2IDk2Qzc4LjMgOTYgNjQgODEuNyA2NCA2NHMxNC4zLTMyIDMyLTMybDk2IDEyVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NmwyMi42LTIyLjZjNi02IDE0LjEtOS40IDIyLjYtOS40SDE5MlYxMTYuMmwzMi00IDMyIDRWMTYwaDE4LjdjOC41IDAgMTYuNiAzLjQgMjIuNiA5LjRMMzIwIDE5MmgzMmM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMycy0xNC4zLTMyLTMyLTMySDMxNS45Yy0yMC4yIDI5LTUzLjkgNDgtOTEuOSA0OHMtNzEuNy0xOS05MS45LTQ4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMjR6TTQzNi44IDQyMy40YzEuOS00LjUgNi4zLTcuNCAxMS4yLTcuNHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMydi0xLjJjMC00LjUgLjktOC45IDIuNy0xMy4xbDE4LjItNDIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmF1Y2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NnYxMkw5NiA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5Ni0xMiAzMS0zLjkgMS0uMSAxIC4xIDMxIDMuOSA5NiAxMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtOTYgMTJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6TTMyIDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTMyLjFjMjAuMiAyOSA1My45IDQ4IDkxLjkgNDhzNzEuNy0xOSA5MS45LTQ4SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAtODguNC03MS42LTE2MC0xNjAtMTYwSDMyMGwtMjIuNi0yMi42Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMjU2VjE4MC4ybC0zMi00LTMyIDRWMjI0SDE3My4zYy04LjUgMC0xNi42IDMuNC0yMi42IDkuNEwxMjggMjU2SDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDY0djk2aDY0VjY0SDM4Ni43TDQxNiA5My4zVjE2MGg2NFY5My4zYzAtMTctNi43LTMzLjMtMTguNy00NS4zTDQzMiAxOC43QzQyMCA2LjcgNDAzLjcgMCAzODYuNyAwSDE5MmMtMzUuMyAwLTY0IDI4LjctNjQgNjR6TTAgMTYwVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem00ODAgMzJIMTI4VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yNTYgMjU2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzIgOTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0yMjQgNDE2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlYXRoZXJQb2ludGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OC41IDIxNS42TDIzIDQ3MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDc0LjgtNzQuOGM3LjQgNC42IDE1LjMgOC4yIDIzLjggMTAuNUMyMDAuMyA0NTIuOCAyNzAgNDU0LjUgMzM4IDQwOS40YzEyLjItOC4xIDUuOC0yNS40LTguOC0yNS40bC0xNi4xIDBjLTUuMSAwLTkuMi00LjEtOS4yLTkuMmMwLTQuMSAyLjctNy42IDYuNS04LjhsOTcuNy0yOS4zYzMuNC0xIDYuNC0zLjEgOC40LTYuMWM0LjQtNi40IDguNi0xMi45IDEyLjYtMTkuNmM2LjItMTAuMy0xLjUtMjMtMTMuNS0yM2wtMzguNiAwYy01LjEgMC05LjItNC4xLTkuMi05LjJjMC00LjEgMi43LTcuNiA2LjUtOC44bDgwLjktMjQuM2M0LjYtMS40IDguNC00LjggMTAuMi05LjNDNDk0LjUgMTYzIDUwNy44IDg2LjEgNTExLjkgMzYuOGMuOC05LjktMy0xOS42LTEwLTI2LjZzLTE2LjctMTAuOC0yNi42LTEwQzM5MS41IDcgMjI4LjUgNDAuNSAxMzcuNCAxMzEuNkM1Ny4zIDIxMS43IDU2LjcgMzAyLjMgNzEuMyAzNTYuNGMyLjEgNy45IDEyIDkuNiAxNy44IDMuOEwyNTMuNiAxOTUuOGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGM1LjQgNS40IDYuMSAxMy42IDIuMiAxOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGZWF0aGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OC41IDIxNS42TDIzIDQ3MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU3LTU3aDY4YzQ5LjcgMCA5Ny45LTE0LjQgMTM5LTQxYzExLjEtNy4yIDUuNS0yMy03LjgtMjNjLTUuMSAwLTkuMi00LjEtOS4yLTkuMmMwLTQuMSAyLjctNy42IDYuNS04LjhsODEtMjQuM2MyLjUtLjggNC44LTIuMSA2LjctNGwyMi40LTIyLjRjMTAuMS0xMC4xIDIuOS0yNy4zLTExLjMtMjcuM2wtMzIuMiAwYy01LjEgMC05LjItNC4xLTkuMi05LjJjMC00LjEgMi43LTcuNiA2LjUtOC44bDExMi0zMy42YzQtMS4yIDcuNC0zLjkgOS4zLTcuN0M1MDYuNCAyMDcuNiA1MTIgMTg0LjEgNTEyIDE2MGMwLTQxLTE2LjMtODAuMy00NS4zLTEwOS4zbC01LjUtNS41QzQzMi4zIDE2LjMgMzkzIDAgMzUyIDBzLTgwLjMgMTYuMy0xMDkuMyA0NS4zTDEzOSAxNDlDOTEgMTk3IDY0IDI2Mi4xIDY0IDMzMHY1NS4zTDI1My42IDE5NS44YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwYzUuNCA1LjQgNi4xIDEzLjYgMi4yIDE5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwSDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMmg3NS4xYzIwLjYgMCAzMS42IDI0LjMgMTguMSAzOS44TDQ1NiA5NkgxMjBMOTguOCA3MS44Qzg1LjMgNTYuMyA5Ni4zIDMyIDExNi45IDMySDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNOTYgMTI4SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMlYyODMuNWMwIDEzLjMtNC4yIDI2LjMtMTEuOSAzNy4ybC01MS40IDcxLjljLTEuOSAxLjEtMy43IDIuMi01LjUgMy41Yy0xNS41IDEwLjctMzQgMTgtNTEgMTkuOUgzNzUuNmMtMTcuMS0xLjgtMzUtOS01MC44LTE5LjljLTIyLjEtMTUuNS01MS42LTE1LjUtNzMuNyAwYy0xNC44IDEwLjItMzIuNSAxOC01MC42IDE5LjlIMTgzLjljLTE3LTEuOC0zNS42LTkuMi01MS0xOS45Yy0xLjgtMS4zLTMuNy0yLjQtNS42LTMuNUw3NS45IDMyMC43QzY4LjIgMzA5LjggNjQgMjk2LjggNjQgMjgzLjVWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0zMiA2NHY5Nkg0NDhWMTkySDEyOHpNMzA2LjUgNDIxLjlDMzI5IDQzNy40IDM1Ni41IDQ0OCAzODQgNDQ4YzI2LjkgMCA1NS4zLTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDUwMS43IDQxNyA1MTIgMzg0IDUxMmMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDQzNy4yIDE2NS4xIDQ0OCAxOTIgNDQ4YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMjE2IDIzMlYzMzQuMWwzMS0zMWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTcyIDcyYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNzItNzJjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwzMSAzMVYyMzJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0yMTYgNDA4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjMwNS45bC0zMSAzMWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw3Mi03MmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw3MiA3MmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0zMS0zMVY0MDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6bTIgMjI2LjNjMzcuMSAyMi40IDYyIDYzLjEgNjIgMTA5LjdzLTI0LjkgODcuMy02MiAxMDkuN2MtNy42IDQuNi0xNy40IDIuMS0yMi01LjRzLTIuMS0xNy40IDUuNC0yMkMyNjkuNCA0MDEuNSAyODggMzcwLjkgMjg4IDMzNnMtMTguNi02NS41LTQ2LjUtODIuM2MtNy42LTQuNi0xMC0xNC40LTUuNC0yMnMxNC40LTEwIDIyLTUuNHptLTkxLjkgMzAuOWM2IDIuNSA5LjkgOC4zIDkuOSAxNC44VjQwMGMwIDYuNS0zLjkgMTIuMy05LjkgMTQuOHMtMTIuOSAxLjEtMTcuNC0zLjVMMTEzLjQgMzc2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMzEyYzAtOC44IDcuMi0xNiAxNi0xNmgzMy40bDM1LjMtMzUuM2M0LjYtNC42IDExLjUtNS45IDE3LjQtMy41em01MSAzNC45YzYuNi01LjkgMTYuNy01LjMgMjIuNiAxLjNDMjQ5LjggMzA0LjYgMjU2IDMxOS42IDI1NiAzMzZzLTYuMiAzMS40LTE2LjMgNDIuN2MtNS45IDYuNi0xNiA3LjEtMjIuNiAxLjNzLTcuMS0xNi0xLjMtMjIuNmM1LjEtNS43IDguMS0xMy4xIDguMS0yMS4zcy0zLjEtMTUuNy04LjEtMjEuM2MtNS45LTYuNi01LjMtMTYuNyAxLjMtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djM4LjZDMzEwLjEgMjE5LjUgMjU2IDI4Ny40IDI1NiAzNjhjMCA1OS4xIDI5LjEgMTExLjMgNzMuNyAxNDMuM2MtMy4yIC41LTYuNCAuNy05LjcgLjdINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHpNMjg4IDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0MTYgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djM4LjZDMzEwLjEgMjE5LjUgMjU2IDI4Ny40IDI1NiAzNjhjMCA1OS4xIDI5LjEgMTExLjMgNzMuNyAxNDMuM2MtMy4yIC41LTYuNCAuNy05LjcgLjdINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHptNDggOTZhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDI0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTAtMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2ODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyODhjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ2lyY2xlTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4ek0yODggMzY4YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIyNCAwYzAtOC44LTcuMi0xNi0xNi0xNkgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINDk2YzguOCAwIDE2LTcuMiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNpcmNsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em00OCA5NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTE2IDgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djQ4SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjM4NGg0OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg0NDhWMzA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ2lyY2xlUXVlc3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em00OCA5NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpNMzY4IDMyMS42VjMyOGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2di02LjRjMC01LjMgNC4zLTkuNiA5LjYtOS42aDQwLjVjNy43IDAgMTMuOSA2LjIgMTMuOSAxMy45YzAgNS4yLTIuOSA5LjktNy40IDEyLjNsLTMyIDE2LjhjLTUuMyAyLjgtOC42IDguMi04LjYgMTQuMlYzODRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnYtNS4xbDIzLjUtMTIuM2MxNS4xLTcuOSAyNC41LTIzLjYgMjQuNS00MC42YzAtMjUuNC0yMC42LTQ1LjktNDUuOS00NS45SDQwOS42Yy0yMyAwLTQxLjYgMTguNi00MS42IDQxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NHYzOC42QzMxMC4xIDIxOS41IDI1NiAyODcuNCAyNTYgMzY4YzAgNTkuMSAyOS4xIDExMS4zIDczLjcgMTQzLjNjLTMuMiAuNS02LjQgLjctOS43IC43SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptMzg0IDY0SDI1NlYwTDM4NCAxMjh6bTQ4IDk2YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptNTkuMyAxMDcuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQzMiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQwOS40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDMyIDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNDU0LjYgMzY4bDM2LjctMzYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xNTMgMjg5bC0zMSAzMSAzMSAzMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcxIDMzN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNDgtNDhjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45ek0yNjUgMjU1bDQ4IDQ4YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC00OCA0OGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzMS0zMS0zMS0zMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ29udHJhY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek04MCA2NGg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NGg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptNTQuMiAyNTMuOGMtNi4xIDIwLjMtMjQuOCAzNC4yLTQ2IDM0LjJIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoOC4yYzcuMSAwIDEzLjMtNC42IDE1LjMtMTEuNGwxNC45LTQ5LjVjMy40LTExLjMgMTMuOC0xOS4xIDI1LjYtMTkuMXMyMi4yIDcuNyAyNS42IDE5LjFsMTEuNiAzOC42YzcuNC02LjIgMTYuOC05LjcgMjYuOC05LjdjMTUuOSAwIDMwLjQgOSAzNy41IDIzLjJsNC40IDguOEgzMDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjQwYy02LjEgMC0xMS42LTMuNC0xNC4zLTguOGwtOC44LTE3LjdjLTEuNy0zLjQtNS4xLTUuNS04LjgtNS41cy03LjIgMi4xLTguOCA1LjVsLTguOCAxNy43Yy0yLjkgNS45LTkuMiA5LjQtMTUuNyA4LjhzLTEyLjEtNS4xLTEzLjktMTEuM0wxNDQgMzQ5bC05LjggMzIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNzdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYzMDRIMTc2Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY1MTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHpNMjAwIDM1MmgxNmMyMi4xIDAgNDAgMTcuOSA0MCA0MHY4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2di04YzAtNC40LTMuNi04LTgtOEgyMDBjLTQuNCAwLTggMy42LTggOHY4MGMwIDQuNCAzLjYgOCA4IDhoMTZjNC40IDAgOC0zLjYgOC04di04YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OGMwIDIyLjEtMTcuOSA0MC00MCA0MEgyMDBjLTIyLjEgMC00MC0xNy45LTQwLTQwVjM5MmMwLTIyLjEgMTcuOS00MCA0MC00MHptMTMzLjEgMEgzNjhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzMzLjFjLTcuMiAwLTEzLjEgNS45LTEzLjEgMTMuMWMwIDUuMiAzIDkuOSA3LjggMTJsMzcuNCAxNi42YzE2LjMgNy4yIDI2LjggMjMuNCAyNi44IDQxLjJjMCAyNC45LTIwLjIgNDUuMS00NS4xIDQ1LjFIMzA0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDQyLjljNy4yIDAgMTMuMS01LjkgMTMuMS0xMy4xYzAtNS4yLTMtOS45LTcuOC0xMmwtMzcuNC0xNi42Yy0xNi4zLTcuMi0yNi44LTIzLjQtMjYuOC00MS4yYzAtMjQuOSAyMC4yLTQ1LjEgNDUuMS00NS4xem05OC45IDBjOC44IDAgMTYgNy4yIDE2IDE2djMxLjZjMCAyMyA1LjUgNDUuNiAxNiA2NmMxMC41LTIwLjMgMTYtNDIuOSAxNi02NlYzNjhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYzMS42YzAgMzQuNy0xMC4zIDY4LjctMjkuNiA5Ny42bC01LjEgNy43Yy0zIDQuNS04IDcuMS0xMy4zIDcuMXMtMTAuMy0yLjctMTMuMy03LjFsLTUuMS03LjdjLTE5LjMtMjguOS0yOS42LTYyLjktMjkuNi05Ny42VjM2OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVFeGNlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTE1NS43IDI1MC4yTDE5MiAzMDIuMWwzNi4zLTUxLjljNy42LTEwLjkgMjIuNi0xMy41IDMzLjQtNS45czEzLjUgMjIuNiA1LjkgMzMuNEwyMjEuMyAzNDRsNDYuNCA2Ni4yYzcuNiAxMC45IDUgMjUuOC01LjkgMzMuNHMtMjUuOCA1LTMzLjQtNS45TDE5MiAzODUuOGwtMzYuMyA1MS45Yy03LjYgMTAuOS0yMi42IDEzLjUtMzMuNCA1LjlzLTEzLjUtMjIuNi01LjktMzMuNEwxNjIuNyAzNDRsLTQ2LjQtNjYuMmMtNy42LTEwLjktNS0yNS44IDUuOS0zMy40czI1LjgtNSAzMy40IDUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUV4cG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYyODhIMjE2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDM4NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0zODQgMzM2VjI4OEg0OTQuMWwtMzktMzljLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw4MCA4MGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtODAgODBjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzktMzlIMzg0em0wLTIwOEgyNTZWMEwzODQgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek02NCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTUyIDMyYzUuMyAwIDEwLjIgMi42IDEzLjIgNi45bDg4IDEyOGMzLjQgNC45IDMuNyAxMS4zIDEgMTYuNXMtOC4yIDguNi0xNC4yIDguNkgyMTYgMTc2IDEyOCA4MGMtNS44IDAtMTEuMS0zLjEtMTMuOS04LjFzLTIuOC0xMS4yIC4yLTE2LjFsNDgtODBjMi45LTQuOCA4LjEtNy44IDEzLjctNy44czEwLjggMi45IDEzLjcgNy44bDEyLjggMjEuNCA0OC4zLTcwLjJjMy00LjMgNy45LTYuOSAxMy4yLTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUltcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRIMzUyVjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1MTJWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDE5MmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzM2SDMwMi4xbC0zOSAzOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDgwLTgwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC04MC04MGMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzOSAzOUgxMjhWNjR6bTAgMjI0djQ4SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDEyOHpNNTEyIDEyOEgzODRWMEw1MTIgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlSW52b2ljZURvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTY0IDgwYzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2em0xMjggNzJjOC44IDAgMTYgNy4yIDE2IDE2djE3LjNjOC41IDEuMiAxNi43IDMuMSAyNC4xIDUuMWM4LjUgMi4zIDEzLjYgMTEgMTEuMyAxOS42cy0xMSAxMy42LTE5LjYgMTEuM2MtMTEuMS0zLTIyLTUuMi0zMi4xLTUuM2MtOC40LS4xLTE3LjQgMS44LTIzLjYgNS41Yy01LjcgMy40LTguMSA3LjMtOC4xIDEyLjhjMCAzLjcgMS4zIDYuNSA3LjMgMTAuMWM2LjkgNC4xIDE2LjYgNy4xIDI5LjIgMTAuOWwuNSAuMSAwIDAgMCAwYzExLjMgMy40IDI1LjMgNy42IDM2LjMgMTQuNmMxMi4xIDcuNiAyMi40IDE5LjcgMjIuNyAzOC4yYy4zIDE5LjMtOS42IDMzLjMtMjIuOSA0MS42Yy03LjcgNC44LTE2LjQgNy42LTI1LjEgOS4xVjQ0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY0MjIuMmMtMTEuMi0yLjEtMjEuNy01LjctMzAuOS04LjlsMCAwIDAgMGMtMi4xLS43LTQuMi0xLjQtNi4yLTIuMWMtOC40LTIuOC0xMi45LTExLjktMTAuMS0yMC4yczExLjktMTIuOSAyMC4yLTEwLjFjMi41IC44IDQuOCAxLjYgNy4xIDIuNGwwIDAgMCAwIDAgMGMxMy42IDQuNiAyNC42IDguNCAzNi4zIDguN2M5LjEgLjMgMTcuOS0xLjcgMjMuNy01LjNjNS4xLTMuMiA3LjktNy4zIDcuOC0xNGMtLjEtNC42LTEuOC03LjgtNy43LTExLjZjLTYuOC00LjMtMTYuNS03LjQtMjktMTEuMmwtMS42LS41IDAgMGMtMTEtMy4zLTI0LjMtNy4zLTM0LjgtMTMuN2MtMTItNy4yLTIyLjYtMTguOS0yMi43LTM3LjNjLS4xLTE5LjQgMTAuOC0zMi44IDIzLjgtNDAuNWM3LjUtNC40IDE1LjgtNy4yIDI0LjEtOC43VjIzMmMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVJbnZvaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNODAgNjRoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTE2IDk2SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0wIDMydjY0SDI4OFYyNTZIOTZ6TTI0MCA0MTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xMTIgMjU2SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTE2MCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIyNHY0OGMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMzUySDExMmMtOC44IDAtMTYtNy4yLTE2LTE2VjMwNGMwLTguOCA3LjItMTYgMTYtMTZoNDhWMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIyNCAwbDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwIDAgMTQ0LTIwOCAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDE0NC00OCAwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0em0zODQgNjRsLTEyOCAwTDI1NiAwIDM4NCAxMjh6TTE3NiAzNTJsMzIgMGMzMC45IDAgNTYgMjUuMSA1NiA1NnMtMjUuMSA1Ni01NiA1NmwtMTYgMCAwIDMyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDggMC04MGMwLTguOCA3LjItMTYgMTYtMTZ6bTMyIDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNiAwIDAgNDggMTYgMHptOTYtODBsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xMjhjMC04LjggNy4yLTE2IDE2LTE2em0zMiAxMjhjOC44IDAgMTYtNy4yIDE2LTE2bDAtNjRjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwIDAgOTYgMTYgMHptODAtMTEyYzAtOC44IDcuMi0xNiAxNi0xNmw0OCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwIDAgMzIgMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMzIgMCAwIDQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNjQgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYyOTkuNmwtOTQuNyA5NC43Yy04LjIgOC4yLTE0IDE4LjUtMTYuOCAyOS43bC0xNSA2MC4xYy0yLjMgOS40LTEuOCAxOSAxLjQgMjcuOEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4ek01NDkuOCAyMzUuN2wxNC40IDE0LjRjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZsLTI5LjQgMjkuNC03MS03MSAyOS40LTI5LjRjMTUuNi0xNS42IDQwLjktMTUuNiA1Ni42IDB6TTMxMS45IDQxN0w0NDEuMSAyODcuOGw3MSA3MUwzODIuOSA0ODcuOWMtNC4xIDQuMS05LjIgNy0xNC45IDguNGwtNjAuMSAxNWMtNS41IDEuNC0xMS4yLS4yLTE1LjItNC4ycy01LjYtOS43LTQuMi0xNS4ybDE1LTYwLjFjMS40LTUuNiA0LjMtMTAuOCA4LjQtMTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xMzYgMjQwaDY4YzQyIDAgNzYgMzQgNzYgNzZzLTM0IDc2LTc2IDc2SDE2MHYzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYzNjggMjY0YzAtMTMuMyAxMC43LTI0IDI0LTI0em02OCAxMDRjMTUuNSAwIDI4LTEyLjUgMjgtMjhzLTEyLjUtMjgtMjgtMjhIMTYwdjU2aDQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUHJlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTA0IDE5Nmg3MmMzMy4xIDAgNjAgMjYuOSA2MCA2MGMwIDI1LjUtMTUuOSA0Ny4yLTM4LjMgNTUuOWw0MyA0MC4zIDMzLjgtMzFjOC4xLTcuNSAyMC44LTYuOSAyOC4zIDEuMnM2LjkgMjAuOC0xLjIgMjguM0wyNzAgMzc5LjdsMzEuNyAyOS43YzguMSA3LjYgOC41IDIwLjIgLjkgMjguM3MtMjAuMiA4LjUtMjguMyAuOWwtMzMuOS0zMS44LTM0LjkgMzJjLTguMSA3LjUtMjAuOCA2LjktMjguMy0xLjJzLTYuOS0yMC44IDEuMi0yOC4zbDMyLjYtMjkuOS02NC44LTYwLjhjLS45LS44LTEuNi0xLjctMi4zLTIuNkgxMjR2NDRjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwVjI5NiAyMTZjMC0xMSA5LTIwIDIwLTIwem03MiA4MGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBIMTI0djQwaDUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djQ3bC05Mi44IDM3LjFjLTIxLjMgOC41LTM1LjIgMjkuMS0zNS4yIDUyYzAgNTYuNiAxOC45IDE0OCA5NC4yIDIwOC4zYy05IDQuOC0xOS4zIDcuNi0zMC4yIDcuNkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em0zOS4xIDk3LjdjNS43LTIuMyAxMi4xLTIuMyAxNy44IDBsMTIwIDQ4QzU3MCAyNzcuNCA1NzYgMjg2LjIgNTc2IDI5NmMwIDYzLjMtMjUuOSAxNjguOC0xMzQuOCAyMTQuMmMtNS45IDIuNS0xMi42IDIuNS0xOC41IDBDMzEzLjkgNDY0LjggMjg4IDM1OS4zIDI4OCAyOTZjMC05LjggNi0xOC42IDE1LjEtMjIuM2wxMjAtNDh6TTUyNy40IDMxMkw0MzIgMjczLjhWNDYxLjdjNjguMi0zMyA5MS41LTk5IDk1LjQtMTQ5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVTaWduYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFY0MjguN2MtMi43IDEuMS01LjQgMi04LjIgMi43bC02MC4xIDE1Yy0zIC43LTYgMS4yLTkgMS40Yy0uOSAuMS0xLjggLjItMi43IC4ySDI0MGMtNi4xIDAtMTEuNi0zLjQtMTQuMy04LjhsLTguOC0xNy43Yy0xLjctMy40LTUuMS01LjUtOC44LTUuNXMtNy4yIDIuMS04LjggNS41bC04LjggMTcuN2MtMi45IDUuOS05LjIgOS40LTE1LjcgOC44cy0xMi4xLTUuMS0xMy45LTExLjNMMTQ0IDM4MWwtOS44IDMyLjhjLTYuMSAyMC4zLTI0LjggMzQuMi00NiAzNC4ySDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDguMmM3LjEgMCAxMy4zLTQuNiAxNS4zLTExLjRsMTQuOS00OS41YzMuNC0xMS4zIDEzLjgtMTkuMSAyNS42LTE5LjFzMjIuMiA3LjggMjUuNiAxOS4xbDExLjYgMzguNmM3LjQtNi4yIDE2LjgtOS43IDI2LjgtOS43YzE1LjkgMCAzMC40IDkgMzcuNSAyMy4ybDQuNCA4LjhoOC45Yy0zLjEtOC44LTMuNy0xOC40LTEuNC0yNy44bDE1LTYwLjFjMi44LTExLjMgOC42LTIxLjUgMTYuOC0yOS43TDM4NCAyMDMuNlYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek01NDkuOCAxMzkuN2MtMTUuNi0xNS42LTQwLjktMTUuNi01Ni42IDBsLTI5LjQgMjkuNCA3MSA3MSAyOS40LTI5LjRjMTUuNi0xNS42IDE1LjYtNDAuOSAwLTU2LjZsLTE0LjQtMTQuNHpNMzExLjkgMzIxYy00LjEgNC4xLTcgOS4yLTguNCAxNC45bC0xNSA2MC4xYy0xLjQgNS41IC4yIDExLjIgNC4yIDE1LjJzOS43IDUuNiAxNS4yIDQuMmw2MC4xLTE1YzUuNi0xLjQgMTAuOC00LjMgMTQuOS04LjRMNTEyLjEgMjYyLjdsLTcxLTcxTDMxMS45IDMyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNNjQgMjg4YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODh6TTMwMC45IDM5Ny45TDI1NiAzNjhWMzA0bDQ0LjktMjkuOWMyLTEuMyA0LjQtMi4xIDYuOC0yLjFjNi44IDAgMTIuMyA1LjUgMTIuMyAxMi4zVjM4Ny43YzAgNi44LTUuNSAxMi4zLTEyLjMgMTIuM2MtMi40IDAtNC44LS43LTYuOC0yLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVXYXZlZm9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0VjI4OEgxNDRjNi4xIDAgMTEuNiAzLjQgMTQuMyA4LjhMMTc2IDMzMi4ybDQ5LjctOTkuNGMyLjctNS40IDguMy04LjggMTQuMy04LjhzMTEuNiAzLjQgMTQuMyA4LjhMMjgxLjkgMjg4SDM1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNzJjLTYuMSAwLTExLjYtMy40LTE0LjMtOC44TDI0MCAyNzUuOGwtNDkuNyA5OS40Yy0yLjcgNS40LTguMyA4LjgtMTQuMyA4LjhzLTExLjYtMy40LTE0LjMtOC44TDEzNC4xIDMyMEgzMlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzUyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBIOTZ6TTI4OCAwVjEyOEg0MTZMMjg4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTExIDI1Ny4xbDI2LjggODkuMiAzMS42LTkwLjNjMy40LTkuNiAxMi41LTE2LjEgMjIuNy0xNi4xczE5LjMgNi40IDIyLjcgMTYuMWwzMS42IDkwLjNMMjczIDI1Ny4xYzMuOC0xMi43IDE3LjItMTkuOSAyOS45LTE2LjFzMTkuOSAxNy4yIDE2LjEgMjkuOWwtNDggMTYwYy0zIDEwLTEyIDE2LjktMjIuNCAxNy4xcy0xOS44LTYuMi0yMy4yLTE2LjFMMTkyIDMzNi42bC0zMy4zIDk1LjNjLTMuNCA5LjgtMTIuOCAxNi4zLTIzLjIgMTYuMXMtMTkuNS03LjEtMjIuNC0xNy4xbC00OC0xNjBjLTMuOC0xMi43IDMuNC0yNi4xIDE2LjEtMjkuOXMyNi4xIDMuNCAyOS45IDE2LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVaaXBwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek05NiA0OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZ6bTAgNjRjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnptLTYuMyA3MS44YzMuNy0xNCAxNi40LTIzLjggMzAuOS0yMy44aDE0LjhjMTQuNSAwIDI3LjIgOS43IDMwLjkgMjMuOGwyMy41IDg4LjJjMS40IDUuNCAyLjEgMTAuOSAyLjEgMTYuNGMwIDM1LjItMjguOCA2My43LTY0IDYzLjdzLTY0LTI4LjUtNjQtNjMuN2MwLTUuNSAuNy0xMS4xIDIuMS0xNi40bDIzLjUtODguMnpNMTEyIDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptMzg0IDY0SDI1NlYwTDM4NCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGxEcmlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxLjQgOS40QzUzLjktMy4xIDc0LjEtMy4xIDg2LjYgOS40TDE2OCA5MC43bDUzLjEtNTMuMWMyOC4xLTI4LjEgNzMuNy0yOC4xIDEwMS44IDBMNDc0LjMgMTg5LjFjMjguMSAyOC4xIDI4LjEgNzMuNyAwIDEwMS44TDI4My45IDQ4MS40Yy0zNy41IDM3LjUtOTguMyAzNy41LTEzNS44IDBMMzAuNiAzNjMuOWMtMzcuNS0zNy41LTM3LjUtOTguMyAwLTEzNS44TDEyMi43IDEzNiA0MS40IDU0LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zem0xNzYgMjIxLjNMMTY4IDE4MS4zIDc1LjkgMjczLjRjLTQuMiA0LjItNyA5LjMtOC40IDE0LjZIMzg2LjdsNDIuMy00Mi4zYzMuMS0zLjEgMy4xLTguMiAwLTExLjNMMjc3LjcgODIuOWMtMy4xLTMuMS04LjItMy4xLTExLjMgMEwyMTMuMyAxMzZsNDkuNCA0OS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwek01MTIgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTI1LjIgMzIuNi03OS42IDUxLjItMTA4LjdjNi05LjQgMTkuNS05LjQgMjUuNSAwQzU0My40IDM2OC40IDU3NiA0MjIuOCA1NzYgNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg2LjYgOS40Qzc0LjEtMy4xIDUzLjktMy4xIDQxLjQgOS40cy0xMi41IDMyLjggMCA0NS4zTDEyMi43IDEzNiAzMC42IDIyOC4xYy0zNy41IDM3LjUtMzcuNSA5OC4zIDAgMTM1LjhMMTQ4LjEgNDgxLjRjMzcuNSAzNy41IDk4LjMgMzcuNSAxMzUuOCAwTDQ3NC4zIDI5MC45YzI4LjEtMjguMSAyOC4xLTczLjcgMC0xMDEuOEwzMjIuOSAzNy43Yy0yOC4xLTI4LjEtNzMuNy0yOC4xLTEwMS44IDBMMTY4IDkwLjcgODYuNiA5LjR6TTE2OCAxODEuM2w0OS40IDQ5LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wyMTMuMyAxMzZsNTMuMS01My4xYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBMNDI5LjEgMjM0LjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM0wzODYuNyAyODhINjcuNWMxLjQtNS40IDQuMi0xMC40IDguNC0xNC42TDE2OCAxODEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek00OCAzNjh2MzJjMCA4LjggNy4yIDE2IDE2IDE2SDk2YzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDY0Yy04LjggMC0xNiA3LjItMTYgMTZ6bTM2OC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg0MTZ6TTQ4IDI0MHYzMmMwIDguOCA3LjIgMTYgMTYgMTZIOTZjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZINjRjLTguOCAwLTE2IDcuMi0xNiAxNnptMzY4LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDQxNnpNNDggMTEydjMyYzAgOC44IDcuMiAxNiAxNiAxNkg5NmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2ek00MTYgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZINDE2ek0xNjAgMTI4djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjhjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsdGVyQ2lyY2xlRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAyMi45QzEwLjUgOC45IDI0LjUgMCA0MCAwSDQ3MmMxNS41IDAgMjkuNSA4LjkgMzYuMSAyMi45czQuNiAzMC41LTUuMiA0Mi41TDM5Ni40IDE5NS42QzMxNi4yIDIxMi4xIDI1NiAyODMgMjU2IDM2OGMwIDI3LjQgNi4zIDUzLjQgMTcuNSA3Ni41Yy0xLjYtLjgtMy4yLTEuOC00LjctMi45bC02NC00OGMtOC4xLTYtMTIuOC0xNS41LTEyLjgtMjUuNlYyODguOUw5IDY1LjNDLS43IDUzLjQtMi44IDM2LjggMy45IDIyLjl6TTI4OCAzNjhhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMTIwLjgtMzIuNmMuNi0uOSAxLjgtMi4xIDQuMi0zLjRjNS4xLTIuNyAxMi41LTQuMSAxOC43LTRjOC4yIC4xIDE3LjEgMS44IDI2LjQgNC4xYzguNiAyLjEgMTcuMy0zLjEgMTkuNC0xMS43cy0zLjEtMTcuMy0xMS43LTE5LjRjLTUuNi0xLjQtMTEuNi0yLjctMTcuOS0zLjdWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djkuNWMtNi4xIDEuMi0xMi4zIDMuMi0xOCA2LjNjLTExLjggNi4zLTIzIDE4LjQtMjEuOCAzNy4yYzEgMTYgMTEuNyAyNS4zIDIxLjYgMzAuN2M4LjggNC43IDE5LjcgNy44IDI4LjYgMTAuM2wxLjggLjVjMTAuMyAyLjkgMTcuOSA1LjIgMjMuMiA4LjNjNC41IDIuNyA0LjcgNC4yIDQuNyA1LjZjLjEgMi40LS41IDMuNy0xIDQuNWMtLjYgMS0xLjggMi4yLTQgMy4zYy00LjcgMi41LTExLjggMy44LTE4LjUgMy42Yy05LjUtLjMtMTguNS0zLjEtMjkuOS02LjhjLTEuOS0uNi0zLjgtMS4yLTUuOC0xLjhjLTguNC0yLjYtMTcuNCAyLjEtMjAgMTAuNXMyLjEgMTcuNCAxMC41IDIwYzEuNiAuNSAzLjMgMSA1IDEuNmwwIDAgMCAwYzcgMi4zIDE1LjEgNC44IDIzLjcgNi42djExLjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY0MzguN2M2LjItMS4xIDEyLjUtMy4xIDE4LjMtNi4yYzEyLjEtNi41IDIyLjMtMTguNyAyMS43LTM2LjljLS41LTE2LjItMTAuMy0yNi4zLTIwLjUtMzIuM2MtOS40LTUuNi0yMS4yLTguOS0zMC41LTExLjVsLS4yIDBjLTEwLjQtMi45LTE4LjMtNS4yLTIzLjktOC4yYy00LjgtMi42LTQuOC00LTQuOC00LjVsMC0uMWMtLjEtMS45IC4zLTIuOSAuOC0zLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbHRlckNpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAyMi45QzEwLjUgOC45IDI0LjUgMCA0MCAwSDQ3MmMxNS41IDAgMjkuNSA4LjkgMzYuMSAyMi45czQuNiAzMC41LTUuMiA0Mi41TDM5Ni40IDE5NS42QzMxNi4yIDIxMi4xIDI1NiAyODMgMjU2IDM2OGMwIDI3LjQgNi4zIDUzLjQgMTcuNSA3Ni41Yy0xLjYtLjgtMy4yLTEuOC00LjctMi45bC02NC00OGMtOC4xLTYtMTIuOC0xNS41LTEyLjgtMjUuNlYyODguOUw5IDY1LjNDLS43IDUzLjQtMi44IDM2LjggMy45IDIyLjl6TTQzMiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em01OS4zIDEwNy4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDMyIDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDA5LjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0MzIgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0NTQuNiAzNjhsMzYuNy0zNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy45IDU0LjlDMTAuNSA0MC45IDI0LjUgMzIgNDAgMzJINDcyYzE1LjUgMCAyOS41IDguOSAzNi4xIDIyLjlzNC42IDMwLjUtNS4yIDQyLjVMMzIwIDMyMC45VjQ0OGMwIDEyLjEtNi44IDIzLjItMTcuNyAyOC42cy0yMy44IDQuMy0zMy41LTNsLTY0LTQ4Yy04LjEtNi0xMi44LTE1LjUtMTIuOC0yNS42VjMyMC45TDkgOTcuM0MtLjcgODUuNC0yLjggNjguOCAzLjkgNTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmluZ2VycHJpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMjU2QzQ4IDE0MS4xIDE0MS4xIDQ4IDI1NiA0OGM2My4xIDAgMTE5LjYgMjguMSAxNTcuOCA3Mi41YzguNiAxMC4xIDIzLjggMTEuMiAzMy44IDIuNnMxMS4yLTIzLjggMi42LTMzLjhDNDAzLjMgMzQuNiAzMzMuNyAwIDI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NnY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI1NnptNDU4LjUtNTIuOWMtMi43LTEzLTE1LjUtMjEuMy0yOC40LTE4LjVzLTIxLjMgMTUuNS0xOC41IDI4LjRjMi45IDEzLjkgNC41IDI4LjMgNC41IDQzLjF2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyNTZjMC0xOC4xLTEuOS0zNS44LTUuNS01Mi45ek0yNTYgODBjLTE5IDAtMzcuNCAzLTU0LjUgOC42Yy0xNS4yIDUtMTguNyAyMy43LTguMyAzNS45YzcuMSA4LjMgMTguOCAxMC44IDI5LjQgNy45YzEwLjYtMi45IDIxLjgtNC40IDMzLjQtNC40YzcwLjcgMCAxMjggNTcuMyAxMjggMTI4djI0LjljMCAyNS4yLTEuNSA1MC4zLTQuNCA3NS4zYy0xLjcgMTQuNiA5LjQgMjcuOCAyNC4yIDI3LjhjMTEuOCAwIDIxLjktOC42IDIzLjMtMjAuM2MzLjMtMjcuNCA1LTU1IDUtODIuN1YyNTZjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZ6TTE1MC43IDE0OC43Yy05LjEtMTAuNi0yNS4zLTExLjQtMzMuOS0uNEM5My43IDE3OCA4MCAyMTUuNCA4MCAyNTZ2MjQuOWMwIDI0LjItMi42IDQ4LjQtNy44IDcxLjlDNjguOCAzNjguNCA4MC4xIDM4NCA5Ni4xIDM4NGMxMC41IDAgMTkuOS03IDIyLjItMTcuM2M2LjQtMjguMSA5LjctNTYuOCA5LjctODUuOFYyNTZjMC0yNy4yIDguNS01Mi40IDIyLjktNzMuMWM3LjItMTAuNCA4LTI0LjYtLjItMzQuMnpNMjU2IDE2MGMtNTMgMC05NiA0My05NiA5NnYyNC45YzAgMzUuOS00LjYgNzEuNS0xMy44IDEwNi4xYy0zLjggMTQuMyA2LjcgMjkgMjEuNSAyOWM5LjUgMCAxNy45LTYuMiAyMC40LTE1LjRjMTAuNS0zOSAxNS45LTc5LjIgMTUuOS0xMTkuN1YyNTZjMC0yOC43IDIzLjMtNTIgNTItNTJzNTIgMjMuMyA1MiA1MnYyNC45YzAgMzYuMy0zLjUgNzIuNC0xMC40IDEwNy45Yy0yLjcgMTMuOSA3LjcgMjcuMiAyMS44IDI3LjJjMTAuMiAwIDE5LTcgMjEtMTdjNy43LTM4LjggMTEuNi03OC4zIDExLjYtMTE4LjFWMjU2YzAtNTMtNDMtOTYtOTYtOTZ6bTI0IDk2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djI0LjljMCA1OS45LTExIDExOS4zLTMyLjUgMTc1LjJsLTUuOSAxNS4zYy00LjggMTIuNCAxLjQgMjYuMyAxMy44IDMxczI2LjMtMS40IDMxLTEzLjhsNS45LTE1LjNDMjY3LjkgNDExLjkgMjgwIDM0Ni43IDI4MCAyODAuOVYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVCdXJuZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ1LjcgNDguM0wzNTggMzQuNWM1LjQtNi4xIDEzLjMtOC44IDIwLjktOC45YzcuMiAwIDE0LjMgMi42IDE5LjkgNy44YzE5LjcgMTguMyAzOS44IDQzLjIgNTUgNzAuNkM0NjkgMTMxLjIgNDgwIDE2Mi4yIDQ4MCAxOTIuMkM0ODAgMjgwLjggNDA4LjcgMzUyIDMyMCAzNTJjLTg5LjYgMC0xNjAtNzEuMy0xNjAtMTU5LjhjMC0zNy4zIDE2LTczLjQgMzYuOC0xMDQuNWMyMC45LTMxLjMgNDcuNS01OSA3MC45LTgwLjJDMjczLjQgMi4zIDI4MC43LS4yIDI4OCAwYzE0LjEgLjMgMjMuOCAxMS40IDMyLjcgMjEuNmMwIDAgMCAwIDAgMGMyIDIuMyA0IDQuNiA2IDYuN2wxOSAxOS45ek0zODQgMjQwLjJjMC0zNi41LTM3LTczLTU0LjgtODguNGMtNS40LTQuNy0xMy4xLTQuNy0xOC41IDBDMjkzIDE2Ny4xIDI1NiAyMDMuNiAyNTYgMjQwLjJjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpNMzIgMjg4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCA2NCA0NDggMCAwLTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwwLTk2ek0zMjAgNDgwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTYwLTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTE5MiA0ODBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlRXh0aW5ndWlzaGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMC4zIDcuM0M1MDcuNyAxMy4zIDUxMiAyMi40IDUxMiAzMnY5NmMwIDkuNi00LjMgMTguNy0xMS43IDI0LjdzLTE3LjIgOC41LTI2LjYgNi42bC0xNjAtMzJDMzAxLjUgMTI0LjkgMjkyIDExNS43IDI4OSAxMDRIMjI0djM0LjhjMzcuOCAxOCA2NCA1Ni41IDY0IDEwMS4yVjM4NEg2NFYyNDBjMC00NC43IDI2LjItODMuMiA2NC0xMDEuMlYxMTBjLTM2LjIgMTEuMS02NiAzNi45LTgyLjMgNzAuNWMtNS44IDExLjktMjAuMiAxNi45LTMyLjEgMTEuMVMtMy4zIDE3MS40IDIuNSAxNTkuNUMyNi43IDEwOS44IDcyLjcgNzIuNiAxMjggNjAuNFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY1Nmg2NWMzLTExLjcgMTIuNS0yMC45IDI0LjctMjMuNGwxNjAtMzJjOS40LTEuOSAxOS4xIC42IDI2LjYgNi42ek0yODggNDE2djMyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDEyOGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNDE2SDI4OHpNMTc2IDk2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyZUZsYW1lQ3VydmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1My42IDI5LjlsMTYtMjEuM0MxNzMuNiAzLjIgMTgwIDAgMTg2LjcgMEMxOTguNCAwIDIwOCA5LjYgMjA4IDIxLjNWNDMuNWMwIDEzLjEgNS40IDI1LjcgMTQuOSAzNC43TDMwNy42IDE1OUMzNTYuNCAyMDUuNiAzODQgMjcwLjIgMzg0IDMzNy43QzM4NCA0MzQgMzA2IDUxMiAyMDkuNyA1MTJIMTkyQzg2IDUxMiAwIDQyNiAwIDMyMHYtMy44YzAtNDguOCAxOS40LTk1LjYgNTMuOS0xMzAuMWwzLjUtMy41YzQuMi00LjIgMTAtNi42IDE2LTYuNkM4NS45IDE3NiA5NiAxODYuMSA5NiAxOTguNlYyODhjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHYtMy45YzAtMTgtNy4yLTM1LjMtMTkuOS00OGwtMzguNi0zOC42Yy0yNC0yNC0zNy41LTU2LjctMzcuNS05MC43YzAtMjcuNyA5LTU0LjggMjUuNi03Ni45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlRmxhbWVTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyLjUgMjU2LjVsLS43LTEuOUMzMzcuOCAxNjAuOCAyODIgNzYuNSAyMDkuMSA4LjVsLTMuMy0zQzIwMi4xIDIgMTk3LjEgMCAxOTIgMHMtMTAuMSAyLTEzLjggNS41bC0zLjMgM0MxMDIgNzYuNSA0Ni4yIDE2MC44IDEyLjIgMjU0LjZsLS43IDEuOUMzLjkgMjc3LjMgMCAyOTkuNCAwIDMyMS42QzAgNDI2LjcgODYuOCA1MTIgMTkyIDUxMnMxOTItODUuMyAxOTItMTkwLjRjMC0yMi4yLTMuOS00NC4yLTExLjUtNjUuMXptLTkwLjggNDkuNWM0LjEgOS4zIDYuMiAxOS40IDYuMiAyOS41YzAgNTMtNDMgOTYuNS05NiA5Ni41cy05Ni00My41LTk2LTk2LjVjMC0xMC4xIDIuMS0yMC4zIDYuMi0yOS41bDEuOS00LjNjMTUuOC0zNS40IDM3LjktNjcuNyA2NS4zLTk1LjFsOC45LTguOWMzLjYtMy42IDguNS01LjYgMTMuNi01LjZzMTAgMiAxMy42IDUuNmw4LjkgOC45YzI3LjQgMjcuNCA0OS42IDU5LjcgNjUuMyA5NS4xbDEuOSA0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU5LjMgNS40YzcuOC03LjMgMTkuOS03LjIgMjcuNyAuMWMyNy42IDI1LjkgNTMuNSA1My44IDc3LjcgODRjMTEtMTQuNCAyMy41LTMwLjEgMzctNDIuOWM3LjktNy40IDIwLjEtNy40IDI4IC4xYzM0LjYgMzMgNjMuOSA3Ni42IDg0LjUgMTE4YzIwLjMgNDAuOCAzMy44IDgyLjUgMzMuOCAxMTEuOUM0NDggNDA0LjIgMzQ4LjIgNTEyIDIyNCA1MTJDOTguNCA1MTIgMCA0MDQuMSAwIDI3Ni41YzAtMzguNCAxNy44LTg1LjMgNDUuNC0xMzEuN0M3My4zIDk3LjcgMTEyLjcgNDguNiAxNTkuMyA1LjR6TTIyNS43IDQxNmMyNS4zIDAgNDcuNy03IDY4LjgtMjFjNDIuMS0yOS40IDUzLjQtODguMiAyOC4xLTEzNC40Yy00LjUtOS0xNi05LjYtMjIuNS0ybC0yNS4yIDI5LjNjLTYuNiA3LjYtMTguNSA3LjQtMjQuNy0uNWMtMTYuNS0yMS00Ni01OC41LTYyLjgtNzkuOGMtNi4zLTgtMTguMy04LjEtMjQuNy0uMWMtMzMuOCA0Mi41LTUwLjggNjkuMy01MC44IDk5LjRDMTEyIDM3NS40IDE2Mi42IDQxNiAyMjUuNyA0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpc2hGaW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NS4yIDM4LjRjLTEwLjYtOC0yNS04LjUtMzYuMy0xLjVTMjIyIDU3LjMgMjI0LjYgNzAuM2w5LjcgNDguNmMtMTkuNCA5LTM2LjkgMTkuOS01Mi40IDMxLjVjLTE1LjMgMTEuNS0yOSAyMy45LTQwLjcgMzYuM0w0OC4xIDEzMi40Yy0xMi41LTcuMy0yOC40LTUuMy0zOC42IDQuOVMtMyAxNjMuMyA0LjIgMTc1LjlMNTAgMjU2IDQuMiAzMzYuMWMtNy4yIDEyLjYtNSAyOC40IDUuMyAzOC42czI2LjEgMTIuMiAzOC42IDQuOWw5My4xLTU0LjNjMTEuOCAxMi4zIDI1LjQgMjQuOCA0MC43IDM2LjNjMTUuNSAxMS42IDMzIDIyLjUgNTIuNCAzMS41bC05LjcgNDguNmMtMi42IDEzIDMuMSAyNi4zIDE0LjMgMzMuM3MyNS42IDYuNSAzNi4zLTEuNWw3Ny42LTU4LjJjNTQuOS00IDEwMS41LTI3IDEzNy4yLTUzLjhjMzkuMi0yOS40IDY3LjItNjQuNyA4MS42LTg5LjVjNS44LTkuOSA1LjgtMjIuMiAwLTMyLjFjLTE0LjQtMjQuOC00Mi41LTYwLjEtODEuNi04OS41Yy0zNS44LTI2LjgtODIuMy00OS44LTEzNy4yLTUzLjhMMjc1LjIgMzguNHpNMzg0IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4MC41IDE0MS41QzIxOS43IDEwOC41IDI3Mi42IDgwIDMzNiA4MHMxMTYuMyAyOC41IDE1NS41IDYxLjVjMzkuMSAzMyA2Ni45IDcyLjQgODEgOTkuOGM0LjcgOS4yIDQuNyAyMC4xIDAgMjkuM2MtMTQuMSAyNy40LTQxLjkgNjYuOC04MSA5OS44QzQ1Mi4zIDQwMy41IDM5OS40IDQzMiAzMzYgNDMycy0xMTYuMy0yOC41LTE1NS41LTYxLjVjLTE2LjItMTMuNy0zMC41LTI4LjUtNDIuNy00My4xTDQ4LjEgMzc5LjZjLTEyLjUgNy4zLTI4LjQgNS4zLTM4LjctNC45Uy0zIDM0OC43IDQuMiAzMzYuMUw1MCAyNTYgNC4yIDE3NS45Yy03LjItMTIuNi01LTI4LjQgNS4zLTM4LjZzMjYuMS0xMi4yIDM4LjctNC45bDg5LjcgNTIuM2MxMi4yLTE0LjYgMjYuNS0yOS40IDQyLjctNDMuMXpNNDQ4IDI1NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnQ2hlY2tlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDNDkuNyAwIDY0IDE0LjMgNjQgMzJWNDhsNjktMTcuMmMzOC4xLTkuNSA3OC4zLTUuMSAxMTMuNSAxMi41YzQ2LjMgMjMuMiAxMDAuOCAyMy4yIDE0Ny4xIDBsOS42LTQuOEM0MjMuOCAyOC4xIDQ0OCA0My4xIDQ0OCA2Ni4xVjM0NS44YzAgMTMuMy04LjMgMjUuMy0yMC44IDMwbC0zNC43IDEzYy00Ni4yIDE3LjMtOTcuNiAxNC42LTE0MS43LTcuNGMtMzcuOS0xOS04MS4zLTIzLjctMTIyLjUtMTMuNEw2NCAzODR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDAwIDMzNCA2NCAzMkMwIDE0LjMgMTQuMyAwIDMyIDB6TTY0IDE4Ny4xbDY0LTEzLjl2NjUuNUw2NCAyNTIuNlYzMThsNDguOC0xMi4yYzUuMS0xLjMgMTAuMS0yLjQgMTUuMi0zLjNWMjM4LjdsMzguOS04LjRjOC4zLTEuOCAxNi43LTIuNSAyNS4xLTIuMWwwLTY0YzEzLjYgLjQgMjcuMiAyLjYgNDAuNCA2LjRsMjMuNiA2Ljl2NjYuN2wtNDEuNy0xMi4zYy03LjMtMi4xLTE0LjgtMy40LTIyLjMtMy44djcxLjRjMjEuOCAxLjkgNDMuMyA2LjcgNjQgMTQuNFYyNDQuMmwyMi43IDYuN2MxMy41IDQgMjcuMyA2LjQgNDEuMyA3LjRWMTk0Yy03LjgtLjgtMTUuNi0yLjMtMjMuMi00LjVsLTQwLjgtMTJ2LTYyYy0xMy0zLjgtMjUuOC04LjgtMzguMi0xNWMtOC4yLTQuMS0xNi45LTctMjUuOC04Ljh2NzIuNGMtMTMtLjQtMjYgLjgtMzguNyAzLjZMMTI4IDE3My4yVjk4TDY0IDExNHY3My4xek0zMjAgMzM1LjdjMTYuOCAxLjUgMzMuOS0uNyA1MC02LjhsMTQtNS4yVjI1MS45bC03LjkgMS44Yy0xOC40IDQuMy0zNy4zIDUuNy01Ni4xIDQuNXY3Ny40em02NC0xNDkuNFYxMTUuNGMtMjAuOSA2LjEtNDIuNCA5LjEtNjQgOS4xVjE5NGMxMy45IDEuNCAyOCAuNSA0MS43LTIuNmwyMi4zLTUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhZ1VzYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzQ5LjcgMCA2NCAxNC4zIDY0IDMyVjQ4bDY5LTE3LjJjMzguMS05LjUgNzguMy01LjEgMTEzLjUgMTIuNWM0Ni4zIDIzLjIgMTAwLjggMjMuMiAxNDcuMSAwbDkuNi00LjhDNDIzLjggMjguMSA0NDggNDMuMSA0NDggNjYuMXYzNi4xbC00NC43IDE2LjJjLTQyLjggMTUuNi05MCAxMy45LTEzMS42LTQuNmwtMTYuMS03LjJjLTIwLjMtOS00MS44LTE0LjctNjMuNi0xNi45djMyLjJjMTcuNCAyLjEgMzQuNCA2LjcgNTAuNiAxMy45bDE2LjEgNy4yYzQ5LjIgMjEuOSAxMDUgMjMuOCAxNTUuNiA1LjRMNDQ4IDEzNi4zdjYybC00NC43IDE2LjJjLTQyLjggMTUuNi05MCAxMy45LTEzMS42LTQuNmwtMTYuMS03LjJjLTQwLjItMTcuOS04NS0yMi41LTEyOC4xLTEzLjNMNjQgMjAzLjF2MzIuN2w3MC4yLTE1LjFjMzYuNC03LjggNzQuMy0zLjkgMTA4LjQgMTEuM2wxNi4xIDcuMmM0OS4yIDIxLjkgMTA1IDIzLjggMTU1LjYgNS40TDQ0OCAyMzIuM3Y2MmwtNDQuNyAxNi4yYy00Mi44IDE1LjYtOTAgMTMuOS0xMzEuNi00LjZsLTE2LjEtNy4yYy00MC4yLTE3LjktODUtMjIuNS0xMjguMS0xMy4zTDY0IDI5OS4xdjMyLjdsNzAuMi0xNS4xYzM2LjQtNy44IDc0LjMtMy45IDEwOC40IDExLjNsMTYuMSA3LjJjNDkuMiAyMS45IDEwNSAyMy44IDE1NS42IDUuNEw0NDggMzI4LjN2MzMuNWMwIDEzLjMtOC4zIDI1LjMtMjAuOCAzMGwtMzQuNyAxM2MtNDYuMiAxNy4zLTk3LjYgMTQuNi0xNDEuNy03LjRjLTM3LjktMTktODEuMy0yMy43LTEyMi41LTEzLjRMNjQgNDAwdjgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQxNiAzNDUuNSAzMTIuOCAyNDkuNSAyMTYuOCAxNTMuNSAxMjAuOCA2NCAzMkMwIDE0LjMgMTQuMyAwIDMyIDB6bTgwIDk2QTE2IDE2IDAgMSAwIDgwIDk2YTE2IDE2IDAgMSAwIDMyIDB6bTMyIDBhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0tMzIgNDhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptMzIgMGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNjQgMTQuMyA0OS43IDAgMzIgMFMwIDE0LjMgMCAzMlY2NCAzNjggNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUybDY0LjMtMTYuMWM0MS4xLTEwLjMgODQuNi01LjUgMTIyLjUgMTMuNGM0NC4yIDIyLjEgOTUuNSAyNC44IDE0MS43IDcuNGwzNC43LTEzYzEyLjUtNC43IDIwLjgtMTYuNiAyMC44LTMwVjY2LjFjMC0yMy0yNC4yLTM4LTQ0LjgtMjcuN2wtOS42IDQuOGMtNDYuMyAyMy4yLTEwMC44IDIzLjItMTQ3LjEgMGMtMzUuMS0xNy42LTc1LjQtMjItMTEzLjUtMTIuNUw2NCA0OFYzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhc2tWaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NSAzODkuNGMtOS44IDE2LTE1IDM0LjMtMTUgNTMuMWMtMTAgMy41LTIwLjggNS41LTMyIDUuNWMtNTMgMC05Ni00My05Ni05NlY2NEMxNC4zIDY0IDAgNDkuNyAwIDMyUzE0LjMgMCAzMiAwSDk2aDY0IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjMwOS45bC00OSA3OS42ek05NiA2NHY5Nmg2NFY2NEg5NnpNMzUyIDBINDgwaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjIxNC45TDYyOS43IDQwNi4yYzYuNyAxMC45IDEwLjMgMjMuNSAxMC4zIDM2LjRjMCAzOC4zLTMxLjEgNjkuNC02OS40IDY5LjRIMjYxLjRjLTM4LjMgMC02OS40LTMxLjEtNjkuNC02OS40YzAtMTIuOCAzLjYtMjUuNCAxMC4zLTM2LjRMMzIwIDIxNC45VjY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyem0zMiA2NFYyMjRjMCA1LjktMS42IDExLjctNC43IDE2LjhMMzMwLjUgMzIwaDE3MWwtNDguOC03OS4yYy0zLjEtNS00LjctMTAuOC00LjctMTYuOFY2NEgzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAwSDE2MCAxMjhDMTEwLjMgMCA5NiAxNC4zIDk2IDMyczE0LjMgMzIgMzIgMzJWMTk2LjhjMCAxMS44LTMuMyAyMy41LTkuNSAzMy41TDEwLjMgNDA2LjJDMy42IDQxNy4yIDAgNDI5LjcgMCA0NDIuNkMwIDQ4MC45IDMxLjEgNTEyIDY5LjQgNTEySDM3OC42YzM4LjMgMCA2OS40LTMxLjEgNjkuNC02OS40YzAtMTIuOC0zLjYtMjUuNC0xMC4zLTM2LjRMMzI5LjUgMjMwLjRjLTYuMi0xMC4xLTkuNS0yMS43LTkuNS0zMy41VjY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OHpNMTkyIDE5Ni44VjY0aDY0VjE5Ni44YzAgMjMuNyA2LjYgNDYuOSAxOSA2Ny4xTDMwOS41IDMyMGgtMTcxTDE3MyAyNjMuOWMxMi40LTIwLjIgMTktNDMuNCAxOS02Ny4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbG9wcHlEaXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNzMuM2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wzNTIgNTAuN0MzNDAgMzguNyAzMjMuNyAzMiAzMDYuNyAzMkg2NHptMCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOHpNMjI0IDI4OGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxvcmluU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTQuNyAzMmMtMzguOCAwLTczLjcgMjMuMy04OC42IDU5LjFMMTcwLjcgMjI0SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDgwTDk4LjkgMzk2LjNjLTUgMTEuOS0xNi42IDE5LjctMjkuNSAxOS43SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY5LjNjMzguOCAwIDczLjctMjMuMyA4OC42LTU5LjFMMjEzLjMgMjg4SDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNDBsNDUuMS0xMDguM2M1LTExLjkgMTYuNi0xOS43IDI5LjUtMTkuN0gzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzE0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlckNsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDgwSDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTJINTEyVjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NHptNjQtMzIwSDBWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMTkyYzIwLjEgMCAzOS4xIDkuNSA1MS4yIDI1LjZsMTkuMiAyNS42YzYgOC4xIDE1LjUgMTIuOCAyNS42IDEyLjhINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXJNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDgwSDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTJjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNmwxOS4yIDI1LjZjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0ek0xODQgMjcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDMyOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODguNyAyMjMuOEwwIDM3NS44Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDE4MS41YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43bDI2LjUgMjYuNWMxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43SDQxNmMzNS4zIDAgNjQgMjguNyA2NCA2NHYzMkgxNDRjLTIyLjggMC00My44IDEyLjEtNTUuMyAzMS44em0yNy42IDE2LjFDMTIyLjEgMjMwIDEzMi42IDIyNCAxNDQgMjI0SDU0NGMxMS41IDAgMjIgNi4xIDI3LjcgMTYuMXM1LjcgMjIuMi0uMSAzMi4xbC0xMTIgMTkyQzQ1My45IDQ3NCA0NDMuNCA0ODAgNDMyIDQ4MEgzMmMtMTEuNSAwLTIyLTYuMS0yNy43LTE2LjFzLTUuNy0yMi4yIC4xLTMyLjFsMTEyLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTJjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNmwxOS4yIDI1LjZjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2ek0yMzIgMzc2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzEyaDY0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI4MFYyMDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRIMTY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDY0djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXJUcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzY0IDE0LjMgNDkuNyAwIDMyIDBTMCAxNC4zIDAgMzJ2OTZWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDI1NlYzODRINjRWMTYwSDI1NlY5Nkg2NFYzMnpNMjg4IDE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJINDQ1LjNjLTguNSAwLTE2LjYtMy40LTIyLjYtOS40TDQwOS40IDkuNGMtNi02LTE0LjEtOS40LTIyLjYtOS40SDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMTkyem0wIDI4OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ0NS4zYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNGwtMTMuMy0xMy4zYy02LTYtMTQuMS05LjQtMjIuNi05LjRIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0ODBINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NEgyODhjLTEwLjEgMC0xOS42LTQuNy0yNS42LTEyLjhMMjQzLjIgNTcuNkMyMzEuMSA0MS41IDIxMi4xIDMyIDE5MiAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTQgNTIuOEMyNDkuMyA0MC4zIDIzNy4zIDMyIDIyNCAzMnMtMjUuMyA4LjMtMzAgMjAuOEw1Ny44IDQxNkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtMS44bDE4LTQ4SDMwMy44bDE4IDQ4SDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzOTAuMkwyNTQgNTIuOHpNMjc5LjggMzA0SDE2OC4yTDIyNCAxNTUuMSAyNzkuOCAzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvb3RiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny41IDI1LjRjLTEzLjUgMy4zLTI2LjQgNy4yLTM4LjYgMTEuN0MxNDIuOSA2MS42IDk2LjcgMTAzLjYgNjYgMTUzLjZjLTE4LjMgMjkuOC0zMC45IDYyLjMtMzkuMiA5NS40TDI2NC41IDQ4Ni42YzEzLjUtMy4zIDI2LjQtNy4yIDM4LjYtMTEuN2M2Ni0yNC41IDExMi4yLTY2LjUgMTQyLjktMTE2LjVjMTguMy0yOS44IDMwLjktNjIuMyAzOS4xLTk1LjNMMjQ3LjUgMjUuNHpNNDk1LjIgMjA1LjNjNi4xLTU2LjggMS40LTExMi4yLTcuNy0xNTYuNGMtMi43LTEyLjktMTMtMjIuOS0yNi4xLTI1LjFjLTU4LjItOS43LTEwOS45LTEyLTE1NS42LTcuOUw0OTUuMiAyMDUuM3pNMjA2LjEgNDk2TDE2LjggMzA2LjdjLTYuMSA1Ni44LTEuNCAxMTIuMiA3LjcgMTU2LjRjMi43IDEyLjkgMTMgMjIuOSAyNi4xIDI1LjFjNTguMiA5LjcgMTA5LjkgMTIgMTU1LjYgNy45em01NC42LTMzMS4zYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTY0LTY0Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnptLTQ4IDQ4YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTY0LTY0Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnptLTQ4IDQ4YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTY0LTY0Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9yd2FyZEZhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNCA0NDVjMTEuMiA1LjMgMjQuNSAzLjYgMzQuMS00LjRMMjI0IDI5Ny43VjQxNmMwIDEyLjQgNy4yIDIzLjcgMTguNCAyOXMyNC41IDMuNiAzNC4xLTQuNEw0NDggMjk3LjdWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjE0LjNMMjc2LjUgNzEuNGMtOS41LTcuOS0yMi44LTkuNy0zNC4xLTQuNFMyMjQgODMuNiAyMjQgOTZWMjE0LjNMNTIuNSA3MS40Yy05LjUtNy45LTIyLjgtOS43LTM0LjEtNC40UzAgODMuNiAwIDk2VjQxNmMwIDEyLjQgNy4yIDIzLjcgMTguNCAyOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9yd2FyZFN0ZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTIuNSA0NDAuNmMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNFMwIDQyOC40IDAgNDE2Vjk2QzAgODMuNiA3LjIgNzIuMyAxOC40IDY3czI0LjUtMy42IDM0LjEgNC40bDE5MiAxNjBMMjU2IDI0MVY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNzFsLTExLjUgOS42LTE5MiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTIuNSA0NDAuNmMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNFMwIDQyOC40IDAgNDE2Vjk2QzAgODMuNiA3LjIgNzIuMyAxOC40IDY3czI0LjUtMy42IDM0LjEgNC40TDIyNCAyMTQuM1YyNTZ2NDEuN0w1Mi41IDQ0MC42ek0yNTYgMzUyVjI1NiAxMjggOTZjMC0xMi40IDcuMi0yMy43IDE4LjQtMjlzMjQuNS0zLjYgMzQuMSA0LjRsMTkyIDE2MGM3LjMgNi4xIDExLjUgMTUuMSAxMS41IDI0LjZzLTQuMiAxOC41LTExLjUgMjQuNmwtMTkyIDE2MGMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNHMtMTguNC0xNi42LTE4LjQtMjlWMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcmFuY1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMzJDNjIuMyAzMiA0OCA0Ni4zIDQ4IDY0VjIyNHY5NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0OHY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWMjU2SDI1NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWOTZIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcm9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCAzMmM0MS43IDAgNzUuOSAzMS44IDc5LjcgNzIuNWw4NS42IDI2LjNjMjUuNCA3LjggNDIuOCAzMS4zIDQyLjggNTcuOWMwIDIxLjgtMTEuNyA0MS45LTMwLjcgNTIuN0w0MDAuOCAzMjMuNSA0OTMuMyA0MTZINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4MGMtOC41IDAtMTYuNi0zLjQtMjIuNi05LjRMMzQ2LjkgMzYwLjJjMTEuNy0zNiAzLjItNzcuMS0yNS40LTEwNS43Yy00MC42LTQwLjYtMTA2LjMtNDAuNi0xNDYuOS0uMUwxMDEgMzI0LjRjLTYuNCA2LjEtNi43IDE2LjItLjYgMjIuNnMxNi4yIDYuNiAyMi42IC42bDczLjgtNzAuMiAuMS0uMSAuMS0uMWMzLjUtMy41IDcuMy02LjYgMTEuMy05LjJjMjcuOS0xOC41IDY1LjktMTUuNCA5MC41IDkuMmMyNC43IDI0LjcgMjcuNyA2Mi45IDkgOTAuOWMtMi42IDMuOC01LjYgNy41LTkgMTAuOUwyNjEuOCA0MTZIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NEMwIDI0OS42IDEyNyAxMTIuOSAyODkuMyA5Ny41QzI5Ni4yIDYwLjIgMzI4LjggMzIgMzY4IDMyem0wIDEwNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZ1dGJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTcuMyAzNjAuMWwtNzEuNi00LjhjLTUuMi0uMy0xMC4zIDEuMS0xNC41IDQuMnMtNy4yIDcuNC04LjQgMTIuNWwtMTcuNiA2OS42QzI4OS41IDQ0NS44IDI3MyA0NDggMjU2IDQ0OHMtMzMuNS0yLjItNDkuMi02LjRMMTg5LjIgMzcyYy0xLjMtNS00LjMtOS40LTguNC0xMi41cy05LjMtNC41LTE0LjUtNC4ybC03MS42IDQuOGMtMTcuNi0yNy4yLTI4LjUtNTkuMi0zMC40LTkzLjZMMTI1IDIyOC4zYzQuNC0yLjggNy42LTcgOS4yLTExLjlzMS40LTEwLjItLjUtMTVsLTI2LjctNjYuNkMxMjggMTA5LjIgMTU1LjMgODkgMTg2LjcgNzYuOWw1NS4yIDQ2YzQgMy4zIDkgNS4xIDE0LjEgNS4xczEwLjItMS44IDE0LjEtNS4xbDU1LjItNDZjMzEuMyAxMi4xIDU4LjcgMzIuMyA3OS42IDU3LjlsLTI2LjcgNjYuNmMtMS45IDQuOC0yLjEgMTAuMS0uNSAxNXM0LjkgOS4xIDkuMiAxMS45bDYwLjcgMzguMmMtMS45IDM0LjQtMTIuOCA2Ni40LTMwLjQgOTMuNnpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTE0LjEtMzI1LjdjLTguNC02LjEtMTkuOC02LjEtMjguMiAwTDE5NCAyMjFjLTguNCA2LjEtMTEuOSAxNi45LTguNyAyNi44bDE4LjMgNTYuM2MzLjIgOS45IDEyLjQgMTYuNiAyMi44IDE2LjZoNTkuMmMxMC40IDAgMTkuNi02LjcgMjIuOC0xNi42bDE4LjMtNTYuM2MzLjItOS45LS4zLTIwLjctOC43LTI2LjhsLTQ3LjktMzQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgOTZDMTM1LjYgOTYgNjQgMTY3LjYgNjQgMjU2czcxLjYgMTYwIDE2MCAxNjBjNzcuNCAwIDE0Mi01NSAxNTYuOC0xMjhIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQwMGMyNS44IDAgNDkuNiAyMS40IDQ3LjIgNTAuNkM0MzcuOCAzODkuNiAzNDEuNCA0ODAgMjI0IDQ4MEMxMDAuMyA0ODAgMCAzNzkuNyAwIDI1NlMxMDAuMyAzMiAyMjQgMzJjNTcuNCAwIDEwOS43IDIxLjYgMTQ5LjMgNTdjMTMuMiAxMS44IDE0LjMgMzIgMi41IDQ1LjJzLTMyIDE0LjMtNDUuMiAyLjVDMzAyLjMgMTExLjQgMjY1IDk2IDIyNCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FtZXBhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjRDODYgNjQgMCAxNTAgMCAyNTZTODYgNDQ4IDE5MiA0NDhINDQ4YzEwNiAwIDE5Mi04NiAxOTItMTkycy04Ni0xOTItMTkyLTE5MkgxOTJ6TTQ5NiAxNjhhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwek0zOTIgMzA0YTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6TTE2OCAyMDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHYzMmgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZ2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGgzMlYyMDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhc1B1bXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNjRDMzIgMjguNyA2MC43IDAgOTYgMEgyNTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMjU2aDhjNDguNiAwIDg4IDM5LjQgODggODh2MzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyMjJjLTI3LjYtNy4xLTQ4LTMyLjItNDgtNjJWOTZMMzg0IDY0Yy04LjgtOC44LTguOC0yMy4yIDAtMzJzMjMuMi04LjggMzIgMGw3Ny4zIDc3LjNjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1YxNjh2MjQgMzJWMzc2YzAgMzkuOC0zMi4yIDcyLTcyIDcycy03Mi0zMi4yLTcyLTcyVjM0NGMwLTIyLjEtMTcuOS00MC00MC00MGgtOFY0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWNjR6TTk2IDgwdjk2YzAgOC44IDcuMiAxNiAxNiAxNkgyNDBjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNkgxMTJjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2F1Z2VIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMjg4IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTI1NiA0MTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC0xNy40LTYuOS0zMy4xLTE4LjEtNDQuNkwzNjYgMTYxLjdjNS4zLTEyLjEtLjItMjYuMy0xMi4zLTMxLjZzLTI2LjMgLjItMzEuNiAxMi4zTDI1Ny45IDI4OGMtLjYgMC0xLjMgMC0xLjkgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NHpNMTc2IDE0NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek05NiAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0zNTItMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2F1Z2VTaW1wbGVIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzIwIDk2YzAtMTUuOS01LjgtMzAuNC0xNS4zLTQxLjZsNzYuNi0xNDcuNGM2LjEtMTEuOCAxLjUtMjYuMy0xMC4yLTMyLjRzLTI2LjItMS41LTMyLjQgMTAuMkwyNjIuMSAyODguM2MtMi0uMi00LS4zLTYuMS0uM2MtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYXVnZVNpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMyMCA5NmMwLTI2LjktMTYuNS00OS45LTQwLTU5LjNWODhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWMjkyLjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuM2MwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYXVnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMyMCA5NmMwLTI2LjktMTYuNS00OS45LTQwLTU5LjNWODhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWMjkyLjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuM2MwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0ek0xNDQgMTc2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptLTE2IDgwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTI4OCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTQwMCAxNDRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2F2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE4LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTIwIDEyMGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYgMTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsNC00TDMyNS40IDI5My40bC00IDRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2IDE2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyMC0xMjBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTE2LTE2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNCA0TDMzMC42IDc0LjZsNC00YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNi0xNnptLTE1MiAyODhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMTIgMTEyYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w0OCA0OGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMTItMTEyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xLjQtMS40TDI3MiAyODUuMyAyMjYuNyAyNDAgMTY4IDI5OC43bC0xLjQtMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NS45IDE2Ni42YzMuMiA4LjcgLjUgMTguNC02LjQgMjQuNmwtNDMuMyAzOS40YzEuMSA4LjMgMS43IDE2LjggMS43IDI1LjRzLS42IDE3LjEtMS43IDI1LjRsNDMuMyAzOS40YzYuOSA2LjIgOS42IDE1LjkgNi40IDI0LjZjLTQuNCAxMS45LTkuNyAyMy4zLTE1LjggMzQuM2wtNC43IDguMWMtNi42IDExLTE0IDIxLjQtMjIuMSAzMS4yYy01LjkgNy4yLTE1LjcgOS42LTI0LjUgNi44bC01NS43LTE3LjdjLTEzLjQgMTAuMy0yOC4yIDE4LjktNDQgMjUuNGwtMTIuNSA1Ny4xYy0yIDkuMS05IDE2LjMtMTguMiAxNy44Yy0xMy44IDIuMy0yOCAzLjUtNDIuNSAzLjVzLTI4LjctMS4yLTQyLjUtMy41Yy05LjItMS41LTE2LjItOC43LTE4LjItMTcuOGwtMTIuNS01Ny4xYy0xNS44LTYuNS0zMC42LTE1LjEtNDQtMjUuNEw4My4xIDQyNS45Yy04LjggMi44LTE4LjYgLjMtMjQuNS02LjhjLTguMS05LjgtMTUuNS0yMC4yLTIyLjEtMzEuMmwtNC43LTguMWMtNi4xLTExLTExLjQtMjIuNC0xNS44LTM0LjNjLTMuMi04LjctLjUtMTguNCA2LjQtMjQuNmw0My4zLTM5LjRDNjQuNiAyNzMuMSA2NCAyNjQuNiA2NCAyNTZzLjYtMTcuMSAxLjctMjUuNEwyMi40IDE5MS4yYy02LjktNi4yLTkuNi0xNS45LTYuNC0yNC42YzQuNC0xMS45IDkuNy0yMy4zIDE1LjgtMzQuM2w0LjctOC4xYzYuNi0xMSAxNC0yMS40IDIyLjEtMzEuMmM1LjktNy4yIDE1LjctOS42IDI0LjUtNi44bDU1LjcgMTcuN2MxMy40LTEwLjMgMjguMi0xOC45IDQ0LTI1LjRsMTIuNS01Ny4xYzItOS4xIDktMTYuMyAxOC4yLTE3LjhDMjI3LjMgMS4yIDI0MS41IDAgMjU2IDBzMjguNyAxLjIgNDIuNSAzLjVjOS4yIDEuNSAxNi4yIDguNyAxOC4yIDE3LjhsMTIuNSA1Ny4xYzE1LjggNi41IDMwLjYgMTUuMSA0NCAyNS40bDU1LjctMTcuN2M4LjgtMi44IDE4LjYtLjMgMjQuNSA2LjhjOC4xIDkuOCAxNS41IDIwLjIgMjIuMSAzMS4ybDQuNyA4LjFjNi4xIDExIDExLjQgMjIuNCAxNS44IDM0LjN6TTI1NiAzMzZhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdlYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOC41IDEzNS4zYzcuMS02LjMgOS45LTE2LjIgNi4yLTI1Yy0yLjMtNS4zLTQuOC0xMC41LTcuNi0xNS41TDMwNCA4OS40Yy0zLTUtNi4zLTkuOS05LjgtMTQuNmMtNS43LTcuNi0xNS43LTEwLjEtMjQuNy03LjFsLTI4LjIgOS4zYy0xMC43LTguOC0yMy0xNi0zNi4yLTIwLjlMMTk5IDI3LjFjLTEuOS05LjMtOS4xLTE2LjctMTguNS0xNy44QzE3My45IDguNCAxNjcuMiA4IDE2MC40IDhoLS43Yy02LjggMC0xMy41IC40LTIwLjEgMS4yYy05LjQgMS4xLTE2LjYgOC42LTE4LjUgMTcuOEwxMTUgNTYuMWMtMTMuMyA1LTI1LjUgMTIuMS0zNi4yIDIwLjlMNTAuNSA2Ny44Yy05LTMtMTktLjUtMjQuNyA3LjFjLTMuNSA0LjctNi44IDkuNi05LjkgMTQuNmwtMyA1LjNjLTIuOCA1LTUuMyAxMC4yLTcuNiAxNS42Yy0zLjcgOC43LS45IDE4LjYgNi4yIDI1bDIyLjIgMTkuOEMzMi42IDE2MS45IDMyIDE2OC45IDMyIDE3NnMuNiAxNC4xIDEuNyAyMC45TDExLjUgMjE2LjdjLTcuMSA2LjMtOS45IDE2LjItNi4yIDI1YzIuMyA1LjMgNC44IDEwLjUgNy42IDE1LjZsMyA1LjJjMyA1LjEgNi4zIDkuOSA5LjkgMTQuNmM1LjcgNy42IDE1LjcgMTAuMSAyNC43IDcuMWwyOC4yLTkuM2MxMC43IDguOCAyMyAxNiAzNi4yIDIwLjlsNi4xIDI5LjFjMS45IDkuMyA5LjEgMTYuNyAxOC41IDE3LjhjNi43IC44IDEzLjUgMS4yIDIwLjQgMS4yczEzLjctLjQgMjAuNC0xLjJjOS40LTEuMSAxNi42LTguNiAxOC41LTE3LjhsNi4xLTI5LjFjMTMuMy01IDI1LjUtMTIuMSAzNi4yLTIwLjlsMjguMiA5LjNjOSAzIDE5IC41IDI0LjctNy4xYzMuNS00LjcgNi44LTkuNSA5LjgtMTQuNmwzLjEtNS40YzIuOC01IDUuMy0xMC4yIDcuNi0xNS41YzMuNy04LjcgLjktMTguNi02LjItMjVsLTIyLjItMTkuOGMxLjEtNi44IDEuNy0xMy44IDEuNy0yMC45cy0uNi0xNC4xLTEuNy0yMC45bDIyLjItMTkuOHpNMTEyIDE3NmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek01MDQuNyA1MDAuNWM2LjMgNy4xIDE2LjIgOS45IDI1IDYuMmM1LjMtMi4zIDEwLjUtNC44IDE1LjUtNy42bDUuNC0zLjFjNS0zIDkuOS02LjMgMTQuNi05LjhjNy42LTUuNyAxMC4xLTE1LjcgNy4xLTI0LjdsLTkuMy0yOC4yYzguOC0xMC43IDE2LTIzIDIwLjktMzYuMmwyOS4xLTYuMWM5LjMtMS45IDE2LjctOS4xIDE3LjgtMTguNWMuOC02LjcgMS4yLTEzLjUgMS4yLTIwLjRzLS40LTEzLjctMS4yLTIwLjRjLTEuMS05LjQtOC42LTE2LjYtMTcuOC0xOC41TDU4My45IDMwN2MtNS0xMy4zLTEyLjEtMjUuNS0yMC45LTM2LjJsOS4zLTI4LjJjMy05IC41LTE5LTcuMS0yNC43Yy00LjctMy41LTkuNi02LjgtMTQuNi05LjlsLTUuMy0zYy01LTIuOC0xMC4yLTUuMy0xNS42LTcuNmMtOC43LTMuNy0xOC42LS45LTI1IDYuMmwtMTkuOCAyMi4yYy02LjgtMS4xLTEzLjgtMS43LTIwLjktMS43cy0xNC4xIC42LTIwLjkgMS43bC0xOS44LTIyLjJjLTYuMy03LjEtMTYuMi05LjktMjUtNi4yYy01LjMgMi4zLTEwLjUgNC44LTE1LjYgNy42bC01LjIgM2MtNS4xIDMtOS45IDYuMy0xNC42IDkuOWMtNy42IDUuNy0xMC4xIDE1LjctNy4xIDI0LjdsOS4zIDI4LjJjLTguOCAxMC43LTE2IDIzLTIwLjkgMzYuMkwzMTUuMSAzMTNjLTkuMyAxLjktMTYuNyA5LjEtMTcuOCAxOC41Yy0uOCA2LjctMS4yIDEzLjUtMS4yIDIwLjRzLjQgMTMuNyAxLjIgMjAuNGMxLjEgOS40IDguNiAxNi42IDE3LjggMTguNWwyOS4xIDYuMWM1IDEzLjMgMTIuMSAyNS41IDIwLjkgMzYuMmwtOS4zIDI4LjJjLTMgOS0uNSAxOSA3LjEgMjQuN2M0LjcgMy41IDkuNSA2LjggMTQuNiA5LjhsNS40IDMuMWM1IDIuOCAxMC4yIDUuMyAxNS41IDcuNmM4LjcgMy43IDE4LjYgLjkgMjUtNi4ybDE5LjgtMjIuMmM2LjggMS4xIDEzLjggMS43IDIwLjkgMS43czE0LjEtLjYgMjAuOS0xLjdsMTkuOCAyMi4yek00NjQgMzA0YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNi43IDMzLjhjNC41LTYuMSAxMS43LTkuOCAxOS4zLTkuOEgzNzZjNy42IDAgMTQuOCAzLjYgMTkuMyA5LjhsMTEyIDE1MmM2LjggOS4yIDYuMSAyMS45LTEuNSAzMC40bC0yMzIgMjU2Yy00LjUgNS0xMSA3LjktMTcuOCA3LjlzLTEzLjItMi45LTE3LjgtNy45bC0yMzItMjU2Yy03LjctOC41LTguMy0yMS4yLTEuNS0zMC40bDExMi0xNTJ6bTM4LjUgMzkuOGMtMy4zIDIuNS00LjIgNy0yLjEgMTAuNWw1Ny40IDk1LjZMNjMuMyAxOTJjLTQuMSAuMy03LjMgMy44LTcuMyA4czMuMiA3LjYgNy4zIDhsMTkyIDE2Yy40IDAgLjkgMCAxLjMgMGwxOTItMTZjNC4xLS4zIDcuMy0zLjggNy4zLThzLTMuMi03LjYtNy4zLThMMzAxLjUgMTc5LjhsNTcuNC05NS42YzIuMS0zLjUgMS4yLTguMS0yLjEtMTAuNXMtNy45LTItMTAuNyAxTDI1NiAxNzIuMiAxNjUuOSA3NC42Yy0yLjgtMy03LjQtMy40LTEwLjctMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VuZGVybGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTQ0YTExMiAxMTIgMCAxIDEgMCAyMjQgMTEyIDExMiAwIDEgMSAwLTIyNHptMCAyODhhMTc2IDE3NiAwIDEgMCAwLTM1MiAxNzYgMTc2IDAgMSAwIDAgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MC4xIDQ2Ny4xbC0xMS4yIDljLTMuMiAyLjUtNy4xIDMuOS0xMS4xIDMuOUM4IDQ4MCAwIDQ3MiAwIDQ2Mi4yVjE5MkMwIDg2IDg2IDAgMTkyIDBTMzg0IDg2IDM4NCAxOTJWNDYyLjJjMCA5LjgtOCAxNy44LTE3LjggMTcuOGMtNCAwLTcuOS0xLjQtMTEuMS0zLjlsLTExLjItOWMtMTMuNC0xMC43LTMyLjgtOS00NC4xIDMuOUwyNjkuMyA1MDZjLTMuMyAzLjgtOC4yIDYtMTMuMyA2cy05LjktMi4yLTEzLjMtNmwtMjYuNi0zMC41Yy0xMi43LTE0LjYtMzUuNC0xNC42LTQ4LjIgMEwxNDEuMyA1MDZjLTMuMyAzLjgtOC4yIDYtMTMuMyA2cy05LjktMi4yLTEzLjMtNkw4NC4yIDQ3MWMtMTEuMy0xMi45LTMwLjctMTQuNi00NC4xLTMuOXpNMTYwIDE5MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem05NiAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkwLjUgNjguOEwyMjUuMyAxMjhIMjI0IDE1MmMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MGgyLjJjMTQuOSAwIDI4LjggNy45IDM2LjMgMjAuOHpNNjQgODhjMCAxNC40IDMuNSAyOCA5LjYgNDBIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJINDM4LjRjNi4xLTEyIDkuNi0yNS42IDkuNi00MGMwLTQ4LjYtMzkuNC04OC04OC04OGgtMi4yYy0zMS45IDAtNjEuNSAxNi45LTc3LjcgNDQuNEwyNTYgODUuNWwtMjQuMS00MUMyMTUuNyAxNi45IDE4Ni4xIDAgMTU0LjIgMEgxNTJDMTAzLjQgMCA2NCAzOS40IDY0IDg4em0zMzYgMGMwIDIyLjEtMTcuOSA0MC00MCA0MEgyODhoLTEuM2wzNC44LTU5LjJDMzI5LjEgNTUuOSAzNDIuOSA0OCAzNTcuOCA0OEgzNjBjMjIuMSAwIDQwIDE3LjkgNDAgNDB6TTMyIDI4OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMjI0VjI4OEgzMnpNMjg4IDUxMkg0MzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjg4SDI4OFY1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpZnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMC42IDMyQzIwNSAxOS41IDE5OC41IDUuOCAxODYgMS40UzE1OS44IDMuNSAxNTUuNCAxNkwxNDQuNyA0Ni4ybC05LjktMjkuOEMxMzAuNiAzLjggMTE3LTMgMTA0LjQgMS4yUzg1IDE5IDg5LjIgMzEuNmw4LjMgMjUtMjcuNC0yMGMtMTAuNy03LjgtMjUuNy01LjQtMzMuNSA1LjNzLTUuNCAyNS43IDUuMyAzMy41TDcwLjIgOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyMDAuNmMtNS40LTkuNC04LjYtMjAuMy04LjYtMzJWMjU2YzAtMjkuOSAyMC41LTU1IDQ4LjItNjJjMS44LTMxIDE3LjEtNTguMiA0MC4xLTc2LjFDMjcxLjcgMTA0LjcgMjU2LjkgOTYgMjQwIDk2SDIxNy44bDI4LjMtMjAuNmMxMC43LTcuOCAxMy4xLTIyLjggNS4zLTMzLjVzLTIyLjgtMTMuMS0zMy41LTUuM0wxOTIuNSA1NS4xIDIwMC42IDMyek0zNjMuNSAxODUuNUwzOTMuMSAyMjRIMzQ0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNGMwLTEzLjEgMTAuOC0yNCAyNC4yLTI0YzcuNiAwIDE0LjcgMy41IDE5LjMgOS41ek0yNzIgMjAwYzAgOC40IDEuNCAxNi41IDQuMSAyNEgyNzJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djgwSDQxNlYyNTZoMzJ2OTZINjQwVjI3MmMwLTI2LjUtMjEuNS00OC00OC00OGgtNC4xYzIuNy03LjUgNC4xLTE1LjYgNC4xLTI0YzAtMzkuOS0zMi41LTcyLTcyLjItNzJjLTIyLjQgMC00My42IDEwLjQtNTcuMyAyOC4yTDQzMiAxOTUuOGwtMzAuNS0zOS42Yy0xMy43LTE3LjgtMzUtMjguMi01Ny4zLTI4LjJjLTM5LjcgMC03Mi4yIDMyLjEtNzIuMiA3MnpNMjI0IDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MTZWMzg0SDIyNHY4MHptMjI0IDQ4SDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzODRINDQ4VjUxMnptOTYtMzEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDQ3MC45bDI5LjYtMzguNWM0LjYtNS45IDExLjctOS41IDE5LjMtOS41YzEzLjQgMCAyNC4yIDEwLjkgMjQuMiAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NXYXRlckRyb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEMyMy4xIDAgMTQuNiAzLjcgOC42IDEwLjJTLS42IDI1LjQgLjEgMzQuM0wyOC45IDQzNy43YzMgNDEuOSAzNy44IDc0LjMgNzkuOCA3NC4zSDI3NS4zYzQyIDAgNzYuOC0zMi40IDc5LjgtNzQuM0wzODMuOSAzNC4zYy42LTguOS0yLjQtMTcuNi04LjUtMjQuMVMzNjAuOSAwIDM1MiAwSDMyek04MyAyOTcuNUw2Ni40IDY0SDMxNy42TDMwMSAyOTcuNSAyODggMzA0Yy0yMC4xIDEwLjEtNDMuOSAxMC4xLTY0IDBzLTQzLjktMTAuMS02NCAwcy00My45IDEwLjEtNjQgMGwtMTMtNi41ek0yNTYgMTk2YzAtMjQtMzMuNy03MC4xLTUyLjItOTMuNWMtNi4xLTcuNy0xNy41LTcuNy0yMy42IDBDMTYxLjcgMTI1LjkgMTI4IDE3MiAxMjggMTk2YzAgMzMuMSAyOC43IDYwIDY0IDYwczY0LTI2LjkgNjQtNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEMyMy4xIDAgMTQuNiAzLjcgOC42IDEwLjJTLS42IDI1LjQgLjEgMzQuM0wyOC45IDQzNy43YzMgNDEuOSAzNy44IDc0LjMgNzkuOCA3NC4zSDI3NS4zYzQyIDAgNzYuOC0zMi40IDc5LjgtNzQuM0wzODMuOSAzNC4zYy42LTguOS0yLjQtMTcuNi04LjUtMjQuMVMzNjAuOSAwIDM1MiAwSDMyek03MyAxNTYuNUw2Ni40IDY0SDMxNy42TDMxMSAxNTYuNWwtMjQuMiAxMi4xYy0xOS40IDkuNy00Mi4yIDkuNy02MS42IDBjLTIwLjktMTAuNC00NS41LTEwLjQtNjYuNCAwYy0xOS40IDkuNy00Mi4yIDkuNy02MS42IDBMNzMgMTU2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE4LjYgODBjLTExLjUgMC0yMS40IDcuOS0yNCAxOS4xTDU3IDI2MC4zYzIwLjUtNi4yIDQ4LjMtMTIuMyA3OC43LTEyLjNjMzIuMyAwIDYxLjggNi45IDgyLjggMTMuNWMxMC42IDMuMyAxOS4zIDYuNyAyNS40IDkuMmMzLjEgMS4zIDUuNSAyLjQgNy4zIDMuMmMuOSAuNCAxLjYgLjcgMi4xIDFsLjYgLjMgLjIgLjEgLjEgMCAwIDAgMCAwczAgMC02LjMgMTIuN2gwbDYuMy0xMi43YzUuOCAyLjkgMTAuNCA3LjMgMTMuNSAxMi43aDQwLjZjMy4xLTUuMyA3LjctOS44IDEzLjUtMTIuN2w2LjMgMTIuN2gwYy02LjMtMTIuNy02LjMtMTIuNy02LjMtMTIuN2wwIDAgMCAwIC4xIDAgLjItLjEgLjYtLjNjLjUtLjIgMS4yLS42IDIuMS0xYzEuOC0uOCA0LjItMS45IDcuMy0zLjJjNi4xLTIuNiAxNC44LTUuOSAyNS40LTkuMmMyMS02LjYgNTAuNC0xMy41IDgyLjgtMTMuNWMzMC40IDAgNTguMiA2LjEgNzguNyAxMi4zTDQ4MS40IDk5LjFjLTIuNi0xMS4yLTEyLjYtMTkuMS0yNC0xOS4xYy0zLjEgMC02LjIgLjYtOS4yIDEuOEw0MTYuOSA5NC4zYy0xMi4zIDQuOS0yNi4zLTEuMS0zMS4yLTEzLjRzMS4xLTI2LjMgMTMuNC0zMS4ybDMxLjMtMTIuNWM4LjYtMy40IDE3LjctNS4yIDI3LTUuMmMzMy44IDAgNjMuMSAyMy4zIDcwLjggNTYuMmw0My45IDE4OGMxLjcgNy4zIDIuOSAxNC43IDMuNSAyMi4xYy4zIDEuOSAuNSAzLjggLjUgNS43djYuN1YzNTJ2MTZjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJINDE5LjdjLTU5LjQgMC0xMDguNS00Ni40LTExMS44LTEwNS44TDMwNi42IDM1MkgyNjkuNGwtMS4yIDIyLjJDMjY0LjkgNDMzLjYgMjE1LjggNDgwIDE1Ni4zIDQ4MEgxMTJDNTAuMSA0ODAgMCA0MjkuOSAwIDM2OFYzNTIgMzEwLjcgMzA0YzAtMS45IC4yLTMuOCAuNS01LjdjLjYtNy40IDEuOC0xNC44IDMuNS0yMi4xbDQzLjktMTg4QzU1LjUgNTUuMyA4NC44IDMyIDExOC42IDMyYzkuMiAwIDE4LjQgMS44IDI3IDUuMmwzMS4zIDEyLjVjMTIuMyA0LjkgMTguMyAxOC45IDEzLjQgMzEuMnMtMTguOSAxOC4zLTMxLjIgMTMuNEwxMjcuOCA4MS44Yy0yLjktMS4yLTYtMS44LTkuMi0xLjh6TTY0IDMyNS40VjM2OGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0NC4zYzI1LjUgMCA0Ni41LTE5LjkgNDcuOS00NS4zbDIuNS00NS42Yy0yLjMtLjgtNC45LTEuNy03LjUtMi41Yy0xNy4yLTUuNC0zOS45LTEwLjUtNjMuNi0xMC41Yy0yMy43IDAtNDYuMiA1LjEtNjMuMiAxMC41Yy0zLjEgMS01LjkgMS45LTguNSAyLjl6TTUxMiAzNjhWMzI1LjRjLTIuNi0uOS01LjUtMS45LTguNS0yLjljLTE3LTUuNC0zOS41LTEwLjUtNjMuMi0xMC41Yy0yMy43IDAtNDYuNCA1LjEtNjMuNiAxMC41Yy0yLjcgLjgtNS4yIDEuNy03LjUgMi41bDIuNSA0NS42YzEuNCAyNS40IDIyLjUgNDUuMyA0Ny45IDQ1LjNINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMjU2YzAgMjIuMi0xLjIgNDMuNi0zLjMgNjRIMTYzLjNjLTIuMi0yMC40LTMuMy00MS44LTMuMy02NHMxLjItNDMuNiAzLjMtNjRIMzQ4LjdjMi4yIDIwLjQgMy4zIDQxLjggMy4zIDY0em0yOC44LTY0SDUwMy45YzUuMyAyMC41IDguMSA0MS45IDguMSA2NHMtMi44IDQzLjUtOC4xIDY0SDM4MC44YzIuMS0yMC42IDMuMi00MiAzLjItNjRzLTEuMS00My40LTMuMi02NHptMTEyLjYtMzJIMzc2LjdjLTEwLTYzLjktMjkuOC0xMTcuNC01NS4zLTE1MS42Yzc4LjMgMjAuNyAxNDIgNzcuNSAxNzEuOSAxNTEuNnptLTE0OS4xIDBIMTY3LjdjNi4xLTM2LjQgMTUuNS02OC42IDI3LTk0LjdjMTAuNS0yMy42IDIyLjItNDAuNyAzMy41LTUxLjVDMjM5LjQgMy4yIDI0OC43IDAgMjU2IDBzMTYuNiAzLjIgMjcuOCAxMy44YzExLjMgMTAuOCAyMyAyNy45IDMzLjUgNTEuNWMxMS42IDI2IDIwLjkgNTguMiAyNyA5NC43em0tMjA5IDBIMTguNkM0OC42IDg1LjkgMTEyLjIgMjkuMSAxOTAuNiA4LjRDMTY1LjEgNDIuNiAxNDUuMyA5Ni4xIDEzNS4zIDE2MHpNOC4xIDE5MkgxMzEuMmMtMi4xIDIwLjYtMy4yIDQyLTMuMiA2NHMxLjEgNDMuNCAzLjIgNjRIOC4xQzIuOCAyOTkuNSAwIDI3OC4xIDAgMjU2czIuOC00My41IDguMS02NHpNMTk0LjcgNDQ2LjZjLTExLjYtMjYtMjAuOS01OC4yLTI3LTk0LjZIMzQ0LjNjLTYuMSAzNi40LTE1LjUgNjguNi0yNyA5NC42Yy0xMC41IDIzLjYtMjIuMiA0MC43LTMzLjUgNTEuNUMyNzIuNiA1MDguOCAyNjMuMyA1MTIgMjU2IDUxMnMtMTYuNi0zLjItMjcuOC0xMy44Yy0xMS4zLTEwLjgtMjMtMjcuOS0zMy41LTUxLjV6TTEzNS4zIDM1MmMxMCA2My45IDI5LjggMTE3LjQgNTUuMyAxNTEuNkMxMTIuMiA0ODIuOSA0OC42IDQyNi4xIDE4LjYgMzUySDEzNS4zem0zNTguMSAwYy0zMCA3NC4xLTkzLjYgMTMwLjktMTcxLjkgMTUxLjZjMjUuNS0zNC4yIDQ1LjItODcuNyA1NS4zLTE1MS42SDQ5My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb2xmQmFsbFRlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTkyYzAgNjYuOC0zNC4xIDEyNS42LTg1LjggMTYwSDg1LjhDMzQuMSAzMTcuNiAwIDI1OC44IDAgMTkyQzAgODYgODYgMCAxOTIgMFMzODQgODYgMzg0IDE5MnpNMjQyLjEgMjU2LjZjMCAxOC41LTE1IDMzLjUtMzMuNSAzMy41Yy00LjkgMC05LjEgNS4xLTUuNCA4LjRjNS45IDUuMiAxMy43IDguNCAyMi4xIDguNGMxOC41IDAgMzMuNS0xNSAzMy41LTMzLjVjMC04LjUtMy4yLTE2LjItOC40LTIyLjFjLTMuMy0zLjctOC40IC41LTguNCA1LjR6bS01Mi4zLTQ5LjNjLTQuOSAwLTkuMSA1LjEtNS40IDguNGM1LjkgNS4yIDEzLjcgOC40IDIyLjEgOC40YzE4LjUgMCAzMy41LTE1IDMzLjUtMzMuNWMwLTguNS0zLjItMTYuMi04LjQtMjIuMWMtMy4zLTMuNy04LjQgLjUtOC40IDUuNGMwIDE4LjUtMTUgMzMuNS0zMy41IDMzLjV6bTExMy41LTE3LjVjMCAxOC41LTE1IDMzLjUtMzMuNSAzMy41Yy00LjkgMC05LjEgNS4xLTUuNCA4LjRjNS45IDUuMiAxMy43IDguNCAyMi4xIDguNGMxOC41IDAgMzMuNS0xNSAzMy41LTMzLjVjMC04LjUtMy4yLTE2LjItOC40LTIyLjFjLTMuMy0zLjctOC40IC41LTguNCA1LjR6TTk2IDQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NCA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NjRjMC04LjgtNy4yLTE2LTE2LTE2SDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvcHVyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjR2OGg0MFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djhoNDhWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY4aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2OFY2NHY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZWMzUySDM4NFYyMjRIMzUyVjEyOEgzMjB2OTZoMzJWMzUyaDMyVjUxMkgzMDRWNDY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djQ4SDEyOFYzNTJoMzJWMjI0aDMyVjEyOEgxNjB2OTZIMTI4VjM1Mkg5NlY1MTJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMlYyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyVjY0IDMyIDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek0yNTYgMjcyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY0OGg2NFYzMDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0zMi04MHYzMmg2NFYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYWR1YXRpb25DYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMyYy04LjEgMC0xNi4xIDEuNC0yMy43IDQuMUwxNS44IDEzNy40QzYuMyAxNDAuOSAwIDE0OS45IDAgMTYwczYuMyAxOS4xIDE1LjggMjIuNmw1Ny45IDIwLjlDNTcuMyAyMjkuMyA0OCAyNTkuOCA0OCAyOTEuOXYyOC4xYzAgMjguNC0xMC44IDU3LjctMjIuMyA4MC44Yy02LjUgMTMtMTMuOSAyNS44LTIyLjUgMzcuNkMwIDQ0Mi43LS45IDQ0OC4zIC45IDQ1My40czYgOC45IDExLjIgMTAuMmw2NCAxNmM0LjIgMS4xIDguNyAuMyAxMi40LTJzNi4zLTYuMSA3LjEtMTAuNGM4LjYtNDIuOCA0LjMtODEuMi0yLjEtMTA4LjdDOTAuMyAzNDQuMyA4NiAzMjkuOCA4MCAzMTYuNVYyOTEuOWMwLTMwLjIgMTAuMi01OC43IDI3LjktODEuNWMxMi45LTE1LjUgMjkuNi0yOCA0OS4yLTM1LjdsMTU3LTYxLjdjOC4yLTMuMiAxNy41IC44IDIwLjcgOXMtLjggMTcuNS05IDIwLjdsLTE1NyA2MS43Yy0xMi40IDQuOS0yMy4zIDEyLjQtMzIuMiAyMS42bDE1OS42IDU3LjZjNy42IDIuNyAxNS42IDQuMSAyMy43IDQuMXMxNi4xLTEuNCAyMy43LTQuMUw2MjQuMiAxODIuNmM5LjUtMy40IDE1LjgtMTIuNSAxNS44LTIyLjZzLTYuMy0xOS4xLTE1LjgtMjIuNkwzNDMuNyAzNi4xQzMzNi4xIDMzLjQgMzI4LjEgMzIgMzIwIDMyek0xMjggNDA4YzAgMzUuMyA4NiA3MiAxOTIgNzJzMTkyLTM2LjcgMTkyLTcyTDQ5Ni43IDI2Mi42IDM1NC41IDMxNGMtMTEuMSA0LTIyLjggNi0zNC41IDZzLTIzLjUtMi0zNC41LTZMMTQzLjMgMjYyLjYgMTI4IDQwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JlYXRlclRoYW5FcXVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Mi4xIDkzLjdDMzUuNyA4Ny4xIDI3LjcgNjguNSAzNC4zIDUyLjFzMjUuMi0yNC40IDQxLjYtMTcuOGwzMjAgMTI4QzQwOCAxNjcuMSA0MTYgMTc4LjkgNDE2IDE5MnMtOCAyNC45LTIwLjEgMjkuN2wtMzIwIDEyOGMtMTYuNCA2LjYtMzUtMS40LTQxLjYtMTcuOHMxLjQtMzUgMTcuOC00MS42TDI5Ny44IDE5MiA1Mi4xIDkzLjd6TTQxNiA0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmVhdGVyVGhhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjQgODEuN2MtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOUwyODAuNSAyNTYgMTcuNyAzODcuNEMxLjkgMzk1LjMtNC41IDQxNC41IDMuNCA0MzAuM3MyNy4xIDIyLjIgNDIuOSAxNC4zbDMyMC0xNjBjMTAuOC01LjQgMTcuNy0xNi41IDE3LjctMjguNnMtNi44LTIzLjItMTcuNy0yOC42bC0zMjAtMTYwYy0xNS44LTcuOS0zNS0xLjUtNDIuOSAxNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwTGluZXNWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NHptMTI4IDBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBMaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAyODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgMjg4em0wLTEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MCAzNTJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwem0xOTIgMGw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDBjLTIyLjEgMC00MC0xNy45LTQwLTQwbDAtNDhjMC0yMi4xIDE3LjktNDAgNDAtNDB6TTQwIDMyMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MGw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDB6TTIzMiAxOTJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwek00MCAxNjBjLTIyLjEgMC00MC0xNy45LTQwLTQwTDAgNzJDMCA0OS45IDE3LjkgMzIgNDAgMzJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwek0yMzIgMzJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMzZjMC0yMi4xLTE3LjktNDAtNDAtNDBMNDAgOTZDMTcuOSA5NiAwIDExMy45IDAgMTM2bDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBIODhjMjIuMSAwIDQwLTE3LjkgNDAtNDBsMC00OHptMCAxOTJjMC0yMi4xLTE3LjktNDAtNDAtNDBINDBjLTIyLjEgMC00MCAxNy45LTQwIDQwbDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBIODhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMzI4em0zMi0xOTJ2NDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBoNDhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMTM2YzAtMjIuMS0xNy45LTQwLTQwLTQwbC00OCAwYy0yMi4xIDAtNDAgMTcuOS00MCA0MHpNMjg4IDMyOGMwLTIyLjEtMTcuOS00MC00MC00MEgyMDBjLTIyLjEgMC00MCAxNy45LTQwIDQwbDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBoNDhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMzI4em0zMi0xOTJ2NDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBoNDhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMTM2YzAtMjIuMS0xNy45LTQwLTQwLTQwbC00OCAwYy0yMi4xIDAtNDAgMTcuOS00MCA0MHpNNDQ4IDMyOGMwLTIyLjEtMTcuOS00MC00MC00MEgzNjBjLTIyLjEgMC00MCAxNy45LTQwIDQwdjQ4YzAgMjIuMSAxNy45IDQwIDQwIDQwaDQ4YzIyLjEgMCA0MC0xNy45IDQwLTQwVjMyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JvdXBBcnJvd3NSb3RhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAxLjEgNzEuOWMxNi45LTUgMjYuNi0yMi45IDIxLjUtMzkuOHMtMjIuOS0yNi42LTM5LjgtMjEuNWMtMjEuNSA2LjQtNDEuOCAxNS41LTYwLjYgMjdDMTE0LjMgMzQgMTA1LjQgMzIgOTYgMzJDNjAuNyAzMiAzMiA2MC43IDMyIDk2YzAgOS40IDIgMTguMyA1LjYgMjYuM2MtMTEuNSAxOC43LTIwLjYgMzktMjcgNjAuNmMtNSAxNi45IDQuNiAzNC44IDIxLjUgMzkuOHMzNC44LTQuNiAzOS44LTIxLjVjNC4zLTE0LjYgMTAuNC0yOC41IDE3LjktNDEuNGMyIC4yIDQuMSAuMyA2LjEgLjNjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC0yLjEtLjEtNC4xLS4zLTYuMWMxMi45LTcuNSAyNi44LTEzLjYgNDEuNC0xNy45em0xMjgtNjEuM2MtMTYuOS01LTM0LjggNC42LTM5LjggMjEuNXM0LjYgMzQuOCAyMS41IDM5LjhjMTQuNiA0LjMgMjguNSAxMC40IDQxLjQgMTcuOWMtLjIgMi0uMyA0LjEtLjMgNi4xYzAgMzUuMyAyOC43IDY0IDY0IDY0YzIuMSAwIDQuMS0uMSA2LjItLjNjNy41IDEyLjkgMTMuNiAyNi44IDE3LjkgNDEuNGM1IDE2LjkgMjIuOSAyNi42IDM5LjggMjEuNXMyNi42LTIyLjkgMjEuNS0zOS44Yy02LjQtMjEuNS0xNS41LTQxLjgtMjctNjAuNmMzLjYtOCA1LjYtMTYuOSA1LjYtMjYuM2MwLTM1LjMtMjguNy02NC02NC02NGMtOS40IDAtMTguMyAyLTI2LjMgNS42Yy0xOC43LTExLjUtMzktMjAuNi02MC42LTI3ek03MS45IDMxMC45Yy01LTE2LjktMjIuOS0yNi42LTM5LjgtMjEuNXMtMjYuNiAyMi45LTIxLjUgMzkuOGM2LjQgMjEuNSAxNS41IDQxLjggMjcgNjAuNkMzNCAzOTcuNyAzMiA0MDYuNiAzMiA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRjOS40IDAgMTguMy0yIDI2LjMtNS42YzE4LjcgMTEuNSAzOSAyMC42IDYwLjYgMjdjMTYuOSA1IDM0LjgtNC42IDM5LjgtMjEuNXMtNC42LTM0LjgtMjEuNS0zOS44Yy0xNC42LTQuMy0yOC41LTEwLjQtNDEuNC0xNy45Yy4yLTIgLjMtNC4xIC4zLTYuMmMwLTM1LjMtMjguNy02NC02NC02NGMtMi4xIDAtNC4xIC4xLTYuMiAuM2MtNy41LTEyLjktMTMuNi0yNi44LTE3LjktNDEuNHptNDI5LjQgMTguM2M1LTE2LjktNC42LTM0LjgtMjEuNS0zOS44cy0zNC44IDQuNi0zOS44IDIxLjVjLTQuMyAxNC42LTEwLjQgMjguNS0xNy45IDQxLjRjLTItLjItNC4xLS4zLTYuMi0uM2MtMzUuMyAwLTY0IDI4LjctNjQgNjRjMCAyLjEgLjEgNC4xIC4zIDYuMmMtMTIuOSA3LjUtMjYuOCAxMy42LTQxLjQgMTcuOWMtMTYuOSA1LTI2LjYgMjIuOS0yMS41IDM5LjhzMjIuOSAyNi42IDM5LjggMjEuNWMyMS41LTYuNCA0MS44LTE1LjUgNjAuNi0yN2M4IDMuNiAxNi45IDUuNiAyNi4zIDUuNmMzNS4zIDAgNjQtMjguNyA2NC02NGMwLTkuNC0yLTE4LjMtNS42LTI2LjNjMTEuNS0xOC43IDIwLjYtMzkgMjctNjAuNnpNMTkyLjggMjU2LjhjMC0xNS42IDUuNi0yOS45IDE0LjktNDEuMUwyMjMgMjMxYzYuNiA2LjYgMTcuOCAxLjkgMTcuOC03LjRWMTYzLjJjMC01LjctNC43LTEwLjQtMTAuNC0xMC40SDE2OS45Yy05LjMgMC0xMy45IDExLjItNy40IDE3LjhsMTEuMiAxMS4yYy0xNy45IDE5LjgtMjguOSA0Ni4yLTI4LjkgNzUuMWMwIDQzLjYgMjQuOSA4MS4zIDYxLjEgOTkuOGMxMS44IDYgMjYuMyAxLjQgMzIuMy0xMC40czEuNC0yNi4zLTEwLjQtMzIuM2MtMjAuOC0xMC42LTM0LjktMzIuMi0zNC45LTU3em05My4xLTU4LjZjMjAuOCAxMC42IDM0LjkgMzIuMiAzNC45IDU3YzAgMTUuNi01LjYgMjkuOS0xNC45IDQxLjFMMjkwLjYgMjgxYy02LjYtNi42LTE3LjgtMS45LTE3LjggNy40djYwLjVjMCA1LjcgNC43IDEwLjQgMTAuNCAxMC40aDYwLjVjOS4zIDAgMTMuOS0xMS4yIDcuNC0xNy44bC0xMS4yLTExLjJjMTcuOS0xOS44IDI4LjktNDYuMiAyOC45LTc1LjFjMC00My42LTI0LjktODEuMy02MS4xLTk5LjhjLTExLjgtNi0yNi4zLTEuNC0zMi4zIDEwLjRzLTEuNCAyNi4zIDEwLjQgMzIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3VhcmFuaVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjY2LjdDNjkuMiA4MS45IDAgMTYwLjkgMCAyNTZzNjkuMiAxNzQuMSAxNjAgMTg5LjNWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ1LjNjOTAuOC0xNS4yIDE2MC05NC4yIDE2MC0xODkuM2MwLTE3LjctMTQuMy0zMi0zMi0zMkgyMjRWMTMyYzIyLjEgNS43IDQxLjggMTcuMSA1Ny42IDMyLjZjMTIuNiAxMi40IDMyLjkgMTIuMiA0NS4zLS40czEyLjItMzIuOS0uNS00NS4zQzI5OSA5MiAyNjMuNSA3My4zIDIyNCA2Ni43VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0xNjAgMTMyVjM4MGMtNTUuMi0xNC4yLTk2LTY0LjMtOTYtMTI0czQwLjgtMTA5LjggOTYtMTI0ek0yMjQgMzgwVjI4OGg5MmMtMTEuNiA0NS00NyA4MC40LTkyIDkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWl0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY1IDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDM4MyA1NWMtMi40IDIuNC00LjMgNS4zLTUuNSA4LjVsLTE1LjQgNDEtNzcuNSA3Ny42Yy00NS4xLTI5LjQtOTkuMy0zMC4yLTEzMSAxLjZjLTExIDExLTE4IDI0LjYtMjEuNCAzOS42Yy0zLjcgMTYuNi0xOS4xIDMwLjctMzYuMSAzMS42Yy0yNS42IDEuMy00OS4zIDEwLjctNjcuMyAyOC42Qy0xNiAzMjguNC03LjYgNDA5LjQgNDcuNSA0NjQuNXMxMzYuMSA2My41IDE4MC45IDE4LjdjMTcuOS0xNy45IDI3LjQtNDEuNyAyOC42LTY3LjNjLjktMTcgMTUtMzIuMyAzMS42LTM2LjFjMTUtMy40IDI4LjYtMTAuNSAzOS42LTIxLjRjMzEuOC0zMS44IDMxLTg1LjkgMS42LTEzMWw3Ny42LTc3LjYgNDEtMTUuNGMzLjItMS4yIDYuMS0zLjEgOC41LTUuNWw0OC00OGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUw0NjUgN3pNMjA4IDI1NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2OEgzMkMxNC4zIDY0IDAgNzguMyAwIDk2VjIwOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0MmMyMC44IDAgMzYuMSAxOS42IDMxIDM5LjhMMzMgNDQwLjJjLTIuNCA5LjYtLjIgMTkuNyA1LjggMjcuNVM1NC4xIDQ4MCA2NCA0ODBoOTZjMTQuNyAwIDI3LjUtMTAgMzEtMjQuMkwyMTcgMzUySDMyMS40YzIzLjcgMCA0NC44LTE0LjkgNTIuNy0zNy4yTDQwMC45IDI0MEg0MzJjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMNDc3LjMgMjA4SDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMkg1MjhWNTZ6TTMyMS40IDMwNEgyMjlsMTYtNjRoMTA1bC0yMSA1OC43Yy0xLjEgMy4yLTQuMiA1LjMtNy41IDUuM3pNODAgMTI4SDQ2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMjU2bDAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyTDY0IDE5MiA2NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE5MiAyNTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFtbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxMy41IDIzNy41Yy0yOC4yIDQuOC01OC4yLTMuNi04MC0yNS40bC0zOC4xLTM4LjFDMjgwLjQgMTU5IDI3MiAxMzguOCAyNzIgMTE3LjZWMTA1LjVMMTkyLjMgNjJjLTUuMy0yLjktOC42LTguNi04LjMtMTQuN3MzLjktMTEuNSA5LjUtMTRsNDcuMi0yMUMyNTkuMSA0LjIgMjc5IDAgMjk5LjIgMGgxOC4xYzM2LjcgMCA3MiAxNCA5OC43IDM5LjFsNDQuNiA0MmMyNC4yIDIyLjggMzMuMiA1NS43IDI2LjYgODZMNTAzIDE4M2w4LThjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjQgMjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg4IDg4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjQtMjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDgtOC0xNy41LTE3LjV6TTI3LjQgMzc3LjFMMjYwLjkgMTgyLjZjMy41IDQuOSA3LjUgOS42IDExLjggMTRsMzguMSAzOC4xYzYgNiAxMi40IDExLjIgMTkuMiAxNS43TDEzNC45IDQ4NC42Yy0xNC41IDE3LjQtMzYgMjcuNC01OC42IDI3LjRDMzQuMSA1MTIgMCA0NzcuOCAwIDQzNS43YzAtMjIuNiAxMC4xLTQ0LjEgMjcuNC01OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW1zYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNC42IDI4OEg4MGM4LjggMCAxNi03LjIgMTYtMTZWNzJjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MFYyMDRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWNDBjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MFYyMDRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWNzJjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MFYyNzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ1LjRjMTkuMSAwIDM0LjYgMTUuNSAzNC42IDM0LjZjMCA4LjYtMy4yIDE2LjktOSAyMy4zTDQxNi42IDQ0MWMtNDEuMSA0NS4yLTk5LjQgNzEtMTYwLjYgNzFzLTExOS40LTI1LjgtMTYwLjYtNzFMOSAzNDUuOWMtNS44LTYuNC05LTE0LjctOS0yMy4zQzAgMzAzLjUgMTUuNSAyODggMzQuNiAyODh6TTI1NiAyODhjLTM4LjQgMC03Ni44IDM1LjgtOTAuNiA1MC4yYy0zLjYgMy43LTUuNCA4LjctNS40IDEzLjhzMS44IDEwLjEgNS40IDEzLjhDMTc5LjIgMzgwLjIgMjE3LjYgNDE2IDI1NiA0MTZzNzYuOC0zNS44IDkwLjYtNTAuMmMzLjYtMy43IDUuNC04LjcgNS40LTEzLjhzLTEuOC0xMC4xLTUuNC0xMy44QzMzMi44IDMyMy44IDI5NC40IDI4OCAyNTYgMjg4em0wIDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEJhY2tGaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAwQzExNy41IDAgOTYgMjEuNSA5NiA0OFY5NnYyOC41VjE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxNDkuM2wtOSA3LjVDNDAuNCAxNjkgMzIgMTg3IDMyIDIwNlYyNDRjMCAzOCAxNi45IDc0IDQ2LjEgOTguM0wxMjggMzg0djk2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNzQuN2M0Ni45LTE5IDgwLTY1IDgwLTExOC43VjE3NiAxNjAgMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4Yy0xMi40IDAtMjMuNiA0LjctMzIuMSAxMi4zQzM1MCA4My41IDMyOS4zIDY0IDMwNCA2NGMtMTIuNCAwLTIzLjYgNC43LTMyLjEgMTIuM0MyNzAgNTEuNSAyNDkuMyAzMiAyMjQgMzJjLTEyLjQgMC0yMy42IDQuNy0zMi4xIDEyLjNDMTkwIDE5LjUgMTY5LjMgMCAxNDQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYzMzZjMCAxLjUgMCAzLjEgLjEgNC42TDY3LjYgMjgzYy0xNi0xNS4yLTQxLjMtMTQuNi01Ni42IDEuNHMtMTQuNiA0MS4zIDEuNCA1Ni42TDEyNC44IDQ0OGM0My4xIDQxLjEgMTAwLjQgNjQgMTYwIDY0SDMwNGM5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NlYxMjhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMnpNMjQwIDMzNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwem04MCAxNmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTQ4LTE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bS0xNiA4MGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6TTI0MCA0MzJhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptLTQ4LTQ4YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEZpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTQ0SDE2MFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY4MEg2NFY2NHptMTkyIDBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2NHptOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMjh6bS05NiA4OGwwLS42YzkuNCA1LjQgMjAuMyA4LjYgMzIgOC42YzEzLjIgMCAyNS40LTQgMzUuNi0xMC44YzguNyAyNC45IDMyLjUgNDIuOCA2MC40IDQyLjhjMTEuNyAwIDIyLjYtMy4xIDMyLTguNlYyNTZjMCA1Mi4zLTI1LjEgOTguOC02NCAxMjh2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDEuNmMtMTcuMy03LjktMzMuMi0xOC44LTQ2LjktMzIuNUw2OS41IDM1Ny41QzQ1LjUgMzMzLjUgMzIgMzAwLjkgMzIgMjY3VjI0MGMwLTM1LjMgMjguNy02NCA2NC02NGg4OGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MEgxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoNTZjMzkuOCAwIDcyLTMyLjIgNzItNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRIb2xkaW5nRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMiAyNFYzNC41YzYuNCAxLjIgMTIuNiAyLjcgMTguMiA0LjJjMTIuOCAzLjQgMjAuNCAxNi42IDE3IDI5LjRzLTE2LjYgMjAuNC0yOS40IDE3Yy0xMC45LTIuOS0yMS4xLTQuOS0zMC4yLTVjLTcuMy0uMS0xNC43IDEuNy0xOS40IDQuNGMtMi4xIDEuMy0zLjEgMi40LTMuNSAzYy0uMyAuNS0uNyAxLjItLjcgMi44YzAgLjMgMCAuNSAwIC42Yy4yIC4yIC45IDEuMiAzLjMgMi42YzUuOCAzLjUgMTQuNCA2LjIgMjcuNCAxMC4xbC45IC4zYzExLjEgMy4zIDI1LjkgNy44IDM3LjkgMTUuM2MxMy43IDguNiAyNi4xIDIyLjkgMjYuNCA0NC45Yy4zIDIyLjUtMTEuNCAzOC45LTI2LjcgNDguNWMtNi43IDQuMS0xMy45IDctMjEuMyA4LjhWMjMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjIyMC42Yy05LjUtMi4zLTE4LjItNS4zLTI1LjYtNy44Yy0yLjEtLjctNC4xLTEuNC02LTJjLTEyLjYtNC4yLTE5LjQtMTcuOC0xNS4yLTMwLjRzMTcuOC0xOS40IDMwLjQtMTUuMmMyLjYgLjkgNSAxLjcgNy4zIDIuNWMxMy42IDQuNiAyMy40IDcuOSAzMy45IDguM2M4IC4zIDE1LjEtMS42IDE5LjItNC4xYzEuOS0xLjIgMi44LTIuMiAzLjItMi45Yy40LS42IC45LTEuOCAuOC00LjFsMC0uMmMwLTEgMC0yLjEtNC00LjZjLTUuNy0zLjYtMTQuMy02LjQtMjcuMS0xMC4zbC0xLjktLjZjLTEwLjgtMy4yLTI1LTcuNS0zNi40LTE0LjRjLTEzLjUtOC4xLTI2LjUtMjItMjYuNi00NC4xYy0uMS0yMi45IDEyLjktMzguNiAyNy43LTQ3LjRjNi40LTMuOCAxMy4zLTYuNCAyMC4yLTguMlYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek01NjguMiAzMzYuM2MxMy4xIDE3LjggOS4zIDQyLjgtOC41IDU1LjlMNDMzLjEgNDg1LjVjLTIzLjQgMTcuMi01MS42IDI2LjUtODAuNyAyNi41SDE5MiAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDY4LjhsNDQuOS0zNmMyMi43LTE4LjIgNTAuOS0yOCA4MC0yOEgyNzJoMTYgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjg4IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzOTIuNmwxMTkuNy04OC4yYzE3LjgtMTMuMSA0Mi44LTkuMyA1NS45IDguNXpNMTkzLjYgMzg0bDAgMC0uOSAwYy4zIDAgLjYgMCAuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ0Ryb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjUgNi42QzI3OC4zIDIuNSAyODMgMCAyODggMHM5LjcgMi41IDEyLjUgNi42TDM2Ni44IDEwM0MzNzggMTE5LjMgMzg0IDEzOC42IDM4NCAxNTguM1YxNjBjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZ2LTEuN2MwLTE5LjggNi0zOSAxNy4yLTU1LjNMMjc1LjUgNi42ek01NjguMiAzMzYuM2MxMy4xIDE3LjggOS4zIDQyLjgtOC41IDU1LjlMNDMzLjEgNDg1LjVjLTIzLjQgMTcuMi01MS42IDI2LjUtODAuNyAyNi41SDE5MiAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDY4LjhsNDQuOS0zNmMyMi43LTE4LjIgNTAuOS0yOCA4MC0yOEgyNzJoMTYgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjg4IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzOTIuNmwxMTkuNy04OC4yYzE3LjgtMTMuMSA0Mi44LTkuMyA1NS45IDguNXpNMTkzLjYgMzg0bDAgMC0uOSAwYy4zIDAgLjYgMCAuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ0hhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44IDIwNy43Yy0xMy4xLTE3LjgtOS4zLTQyLjggOC41LTU1LjlMMTQyLjkgNTguNUMxNjYuMiA0MS4zIDE5NC41IDMyIDIyMy41IDMySDM4NCA1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJINTA3LjJsLTQ0LjkgMzZjLTIyLjcgMTguMi01MC45IDI4LTgwIDI4SDMwNCAyODggMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDY0IDE2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE4My40TDYzLjcgMjE2LjJjLTE3LjggMTMuMS00Mi44IDkuMy01NS45LTguNXpNMzgyLjQgMTYwbDAgMCAuOSAwYy0uMyAwLS42IDAtLjkgMHpNNTY4LjIgMzA0LjNjMTMuMSAxNy44IDkuMyA0Mi44LTguNSA1NS45TDQzMy4xIDQ1My41Yy0yMy40IDE3LjItNTEuNiAyNi41LTgwLjcgMjYuNUgxOTIgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg2OC44bDQ0LjktMzZjMjIuNy0xOC4yIDUwLjktMjggODAtMjhIMjcyaDE2IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI4OCAyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMzkyLjZsMTE5LjctODguMmMxNy44LTEzLjEgNDIuOC05LjMgNTUuOSA4LjV6TTE5My42IDM1MmwwIDAtLjkgMGMuMyAwIC42IDAgLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjMuOSAxMzYuOWMtMjkuNC0yOS44LTI5LjQtNzguMiAwLTEwOHM3Ny0yOS44IDEwNi40IDBsMTcuNyAxOCAxNy43LTE4YzI5LjQtMjkuOCA3Ny0yOS44IDEwNi40IDBzMjkuNCA3OC4yIDAgMTA4TDMxMC41IDI0MC4xYy02LjIgNi4zLTE0LjMgOS40LTIyLjUgOS40cy0xNi4zLTMuMS0yMi41LTkuNEwxNjMuOSAxMzYuOXpNNTY4LjIgMzM2LjNjMTMuMSAxNy44IDkuMyA0Mi44LTguNSA1NS45TDQzMy4xIDQ4NS41Yy0yMy40IDE3LjItNTEuNiAyNi41LTgwLjcgMjYuNUgxOTIgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg2OC44bDQ0LjktMzZjMjIuNy0xOC4yIDUwLjktMjggODAtMjhIMjcyaDE2IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI4OCAyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMzkyLjZsMTE5LjctODguMmMxNy44LTEzLjEgNDIuOC05LjMgNTUuOSA4LjV6TTE5My42IDM4NGwwIDAtLjkgMGMuMyAwIC42IDAgLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNFY4MEgxNjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDU2djU2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE3Nmg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxMDRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMzIwVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6TTU1OS43IDM5Mi4yYzE3LjgtMTMuMSAyMS42LTM4LjEgOC41LTU1LjlzLTM4LjEtMjEuNi01NS45LTguNUwzOTIuNiA0MTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDE2IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OCAyNzIgMTkzLjdjLTI5LjEgMC01Ny4zIDkuOS04MCAyOEw2OC44IDM4NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTkyIDM1Mi41YzI5IDAgNTcuMy05LjMgODAuNy0yNi41bDEyNi42LTkzLjN6bS0zNjctOC4ybC45IDAgMCAwYy0uMyAwLS42IDAtLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTU5LjcgMzkyLjJjMTcuOC0xMy4xIDIxLjYtMzguMSA4LjUtNTUuOXMtMzguMS0yMS42LTU1LjktOC41TDM5Mi42IDQxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMTYgNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjg4IDI3MiAxOTMuN2MtMjkuMSAwLTU3LjMgOS45LTgwIDI4TDY4LjggMzg0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgxOTIgMzUyLjVjMjkgMCA1Ny4zLTkuMyA4MC43LTI2LjVsMTI2LjYtOTMuM3ptLTM2Ni4xLTguM2EuNSAuNSAwIDEgMSAtLjkgLjIgLjUgLjUgMCAxIDEgLjktLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIMTYwaDgwIDQ2LjVjMzYuOCAwIDcxLjIgMTggOTIuMSA0OC4ybDExMy41IDE2NGMxMyAxOC43IDE5LjkgNDEgMTkuOSA2My44djEyIDE2IDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDAyLjJMMjczLjkgMzUySDI0MCAxNjAgMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4aDQ4IDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4SDE2MCA0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRNaWRkbGVGaW5nZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyIDBjLTIyLjEgMC00MCAxNy45LTQwIDQwVjIwNC4yYy04LjUtNy42LTE5LjctMTIuMi0zMi0xMi4yYy0yNi41IDAtNDggMjEuNS00OCA0OHY3IDczYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI2NC4zYy0yIDEuNC0zLjkgMy01LjggNC41TDU1IDI4NC44QzQwLjQgMjk3IDMyIDMxNSAzMiAzMzRWMzcyYzAgMzggMTYuOSA3NCA0Ni4xIDk4LjNsNS40IDQuNWMyOC44IDI0IDY1IDM3LjEgMTAyLjQgMzcuMUgzMDRjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhWMzIwIDI4OGMwLTI2LjUtMjEuNS00OC00OC00OGMtMTIuNCAwLTIzLjYgNC43LTMyLjEgMTIuM0MzNTAgMjI3LjUgMzI5LjMgMjA4IDMwNCAyMDhjLTEyLjMgMC0yMy41IDQuNi0zMiAxMi4yVjQwYzAtMjIuMS0xNy45LTQwLTQwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUGVhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjQwSDE5MlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptOTYgMTYwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptNjQgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyMjR6TTkzLjMgNTEuMkwxNzUuOSAyNDBIMTA2LjFMMzQuNyA3Ni44QzI3LjYgNjAuNiAzNSA0MS44IDUxLjIgMzQuN3MzNS4xIC4zIDQyLjEgMTYuNXptMjcgMjIxLjNsLS4yLS41aDY5LjlIMjE2YzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwSDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg1NmMzOS44IDAgNzItMzIuMiA3Mi03MmwwLS42YzkuNCA1LjQgMjAuMyA4LjYgMzIgOC42YzEzLjIgMCAyNS40LTQgMzUuNi0xMC44YzguNyAyNC45IDMyLjUgNDIuOCA2MC40IDQyLjhjMTEuNyAwIDIyLjYtMy4xIDMyLTguNlYzNTJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBIMjI2LjNjLTQyLjQgMC04My4xLTE2LjktMTEzLjEtNDYuOWwtMTEuNi0xMS42Qzc3LjUgNDI5LjUgNjQgMzk2LjkgNjQgMzYzVjMzNmMwLTMyLjcgMjQuNi01OS43IDU2LjMtNjMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNzJIMzJWNDgwek0yMjQgMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0em0tNjQgNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzA0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyem0xNjAtOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjR6bS05Ni04OGwwIC42YzkuNC01LjQgMjAuMy04LjYgMzItOC42YzEzLjIgMCAyNS40IDQgMzUuNiAxMC44YzguNy0yNC45IDMyLjUtNDIuOCA2MC40LTQyLjhjMTEuNyAwIDIyLjYgMy4xIDMyIDguNlYxNjBDMzg0IDcxLjYgMzEyLjQgMCAyMjQgMEgxNjIuM0MxMTkuOCAwIDc5LjEgMTYuOSA0OS4xIDQ2LjlMMzcuNSA1OC41QzEzLjUgODIuNSAwIDExNS4xIDAgMTQ5djI3YzAgMzUuMyAyOC43IDY0IDY0IDY0aDg4YzIyLjEgMCA0MC0xNy45IDQwLTQwcy0xNy45LTQwLTQwLTQwSDk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDU2YzM5LjggMCA3MiAzMi4yIDcyIDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDk2QzE0LjMgOTYgMCAxMTAuMyAwIDEyOHMxNC4zIDMyIDMyIDMybDIwOCAwIDAtNjRMMzIgOTZ6TTE5MiAyODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMHptLTY0LTY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTQ4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05NiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMHptODgtOTZsLS42IDBjNS40IDkuNCA4LjYgMjAuMyA4LjYgMzJjMCAxMy4yLTQgMjUuNC0xMC44IDM1LjZjMjQuOSA4LjcgNDIuOCAzMi41IDQyLjggNjAuNGMwIDExLjctMy4xIDIyLjYtOC42IDMybDguNiAwYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwbDAtNjEuN2MwLTQyLjQtMTYuOS04My4xLTQ2LjktMTEzLjFsLTExLjYtMTEuNkM0MjkuNSA3Ny41IDM5Ni45IDY0IDM2MyA2NGwtMjcgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA4OGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwbDAtNTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDU2YzAgMzkuOC0zMi4yIDcyLTcyIDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTIwOCAwIDAtNjQgMjA4IDB6TTMyMCAyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNjQgMHptNjQtNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTQ4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMjg4IDM4NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwem0tODgtOTZsLjYgMGMtNS40IDkuNC04LjYgMjAuMy04LjYgMzJjMCAxMy4yIDQgMjUuNCAxMC44IDM1LjZDMTc3LjkgMzY0LjMgMTYwIDM4OC4xIDE2MCA0MTZjMCAxMS43IDMuMSAyMi42IDguNiAzMmwtOC42IDBDNzEuNiA0NDggMCAzNzYuNCAwIDI4OGwwLTYxLjdjMC00Mi40IDE2LjktODMuMSA0Ni45LTExMy4xbDExLjYtMTEuNkM4Mi41IDc3LjUgMTE1LjEgNjQgMTQ5IDY0bDI3IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA4OGMwIDIyLjEtMTcuOSA0MC00MCA0MHMtNDAtMTcuOS00MC00MGwwLTU2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgNTZjMCAzOS44IDMyLjIgNzIgNzIgNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQb2ludFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBTOTYgMTQuMyA5NiAzMlYyNDBIMzJWMzJ6TTIyNCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxOTJ6bS02NC02NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE2MCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNHptLTk2IDg4bDAtLjZjOS40IDUuNCAyMC4zIDguNiAzMiA4LjZjMTMuMiAwIDI1LjQtNCAzNS42LTEwLjhjOC43IDI0LjkgMzIuNSA0Mi44IDYwLjQgNDIuOGMxMS43IDAgMjIuNi0zLjEgMzItOC42VjM1MmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MEgxNjIuM2MtNDIuNCAwLTgzLjEtMTYuOS0xMTMuMS00Ni45TDM3LjUgNDUzLjVDMTMuNSA0MjkuNSAwIDM5Ni45IDAgMzYzVjMzNmMwLTM1LjMgMjguNy02NCA2NC02NGg4OGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MEg5NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg1NmMzOS44IDAgNzItMzIuMiA3Mi03MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDQwYzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDBWMTg4LjJjOC41LTcuNiAxOS43LTEyLjIgMzItMTIuMmMyMC42IDAgMzguMiAxMyA0NSAzMS4yYzguOC05LjMgMjEuMi0xNS4yIDM1LTE1LjJjMjUuMyAwIDQ2IDE5LjUgNDcuOSA0NC4zYzguNS03LjcgMTkuOC0xMi4zIDMyLjEtMTIuM2MyNi41IDAgNDggMjEuNSA0OCA0OHY0OCAxNiA0OGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOGwtMTYgMEgyNDBsLS4xIDBoLTUuMmMtNSAwLTkuOS0uMy0xNC43LTFjLTU1LjMtNS42LTEwNi4yLTM0LTE0MC03OUw4IDMzNmMtMTMuMy0xNy43LTkuNy00Mi43IDgtNTZzNDIuNy05LjcgNTYgOGw1NiA3NC43VjQwek0yNDAgMzA0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0em00OC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnptODAgMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MCAyMDhjLTIyLjEgMC00MCAxNy45LTQwIDQwczE3LjkgNDAgNDAgNDBsMTgwLjIgMGMtNy42IDguNS0xMi4yIDE5LjctMTIuMiAzMmMwIDI1LjMgMTkuNSA0NiA0NC4zIDQ3LjljLTcuNyA4LjUtMTIuMyAxOS44LTEyLjMgMzIuMWMwIDI2LjUgMjEuNSA0OCA0OCA0OGwzMiAwIDY0IDBjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhsMC0xMTMuMWMwLTQwLjItMTYtNzguOC00NC40LTEwNy4zQzQ0NC44IDc2LjggNDEzLjkgNjQgMzgxLjcgNjRMMzM2IDY0Yy0yMS4zIDAtMzkuMyAxMy45LTQ1LjYgMzMuMWw3NC41IDIzLjdjOC40IDIuNyAxMy4xIDExLjcgMTAuNCAyMC4xcy0xMS43IDEzLjEtMjAuMSAxMC40TDI4OCAxMjkuOWwwIC4xTDg0IDY1LjhDNjIuOSA1OS4yIDQwLjUgNzAuOSAzMy44IDkyczUuMSA0My41IDI2LjIgNTAuMkwyNjkuNSAyMDggNDAgMjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kU3BhcmtsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjQwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYyNDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzMjMuMWMtMTEuOSA0LjgtMjEuMyAxNC45LTI1IDI3LjhsLTguOSAzMS4yTDQ3OC45IDM5MUM0NjAuNiAzOTYuMyA0NDggNDEzIDQ0OCA0MzJjMCAxOC45IDEyLjUgMzUuNiAzMC42IDQwLjlDNDQ4LjQgNDk3LjQgNDA5LjkgNTEyIDM2OCA1MTJIMzQ4LjhjLTU5LjYgMC0xMTYuOS0yMi45LTE2MC02NEw3Ni40IDM0MWMtMTYtMTUuMi0xNi42LTQwLjYtMS40LTU2LjZzNDAuNi0xNi42IDU2LjYtMS40bDYwLjUgNTcuNmMwLTEuNS0uMS0zLjEtLjEtNC42VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMjQwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS03LjMgMzI2LjZjLTEuMS0zLjktNC43LTYuNi04LjctNi42cy03LjYgMi43LTguNyA2LjZMMjg4IDM1MmwtMjUuNCA3LjNjLTMuOSAxLjEtNi42IDQuNy02LjYgOC43czIuNyA3LjYgNi42IDguN0wyODggMzg0bDcuMyAyNS40YzEuMSAzLjkgNC43IDYuNiA4LjcgNi42czcuNi0yLjcgOC43LTYuNkwzMjAgMzg0bDI1LjQtNy4zYzMuOS0xLjEgNi42LTQuNyA2LjYtOC43cy0yLjctNy42LTYuNi04LjdMMzIwIDM1MmwtNy4zLTI1LjR6TTEwNCAxMjBsNDguMyAxMy44YzQuNiAxLjMgNy43IDUuNSA3LjcgMTAuMnMtMy4xIDguOS03LjcgMTAuMkwxMDQgMTY4IDkwLjIgMjE2LjNjLTEuMyA0LjYtNS41IDcuNy0xMC4yIDcuN3MtOC45LTMuMS0xMC4yLTcuN0w1NiAxNjggNy43IDE1NC4yQzMuMSAxNTIuOSAwIDE0OC43IDAgMTQ0czMuMS04LjkgNy43LTEwLjJMNTYgMTIwIDY5LjggNzEuN0M3MS4xIDY3LjEgNzUuMyA2NCA4MCA2NHM4LjkgMy4xIDEwLjIgNy43TDEwNCAxMjB6TTU4NCA0MDhsNDguMyAxMy44YzQuNiAxLjMgNy43IDUuNSA3LjcgMTAuMnMtMy4xIDguOS03LjcgMTAuMkw1ODQgNDU2bC0xMy44IDQ4LjNjLTEuMyA0LjYtNS41IDcuNy0xMC4yIDcuN3MtOC45LTMuMS0xMC4yLTcuN0w1MzYgNDU2bC00OC4zLTEzLjhjLTQuNi0xLjMtNy43LTUuNS03LjctMTAuMnMzLjEtOC45IDcuNy0xMC4yTDUzNiA0MDhsMTMuOC00OC4zYzEuMy00LjYgNS41LTcuNyAxMC4yLTcuN3M4LjkgMy4xIDEwLjIgNy43TDU4NCA0MDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTcG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuOSAyMy43QzI0Mi4zIDYuNiAyMjQuOC0zLjUgMjA3LjcgMS4xcy0yNy4yIDIyLjEtMjIuNiAzOS4yTDIzOCAyMzcuOGMyLjUgOS4yLTQuNSAxOC4yLTE0IDE4LjJjLTYuNCAwLTEyLTQuMi0xMy45LTEwLjNMMTY2LjYgMTAyLjdjLTUuMS0xNi45LTIzLTI2LjQtMzkuOS0yMS4zcy0yNi40IDIzLTIxLjMgMzkuOWw2Mi44IDIwNi40YzIuNCA3LjktNy4yIDEzLjgtMTMuMiA4LjFMOTkuNiAyODNjLTE2LTE1LjItNDEuMy0xNC42LTU2LjYgMS40cy0xNC42IDQxLjMgMS40IDU2LjZMMTU2LjggNDQ4YzQzLjEgNDEuMSAxMDAuNCA2NCAxNjAgNjRoMTAuOSA4LjJjLjEgMCAuMS0uMSAuMS0uMXMuMS0uMSAuMS0uMWM1OC4zLTMuNSAxMDguNi00My4yIDEyNS4zLTk5LjdsODEuMi0yNzVjNS0xNi45LTQuNy0zNC43LTIxLjYtMzkuOHMtMzQuNyA0LjctMzkuOCAyMS42TDQ0My41IDI0Ny4xYy0xLjYgNS4zLTYuNCA4LjktMTIgOC45Yy03LjkgMC0xMy44LTcuMy0xMi4yLTE1LjFsMzYtMTcwLjNjMy43LTE3LjMtNy40LTM0LjMtMjQuNy0zNy45cy0zNC4zIDcuNC0zNy45IDI0LjdMMzU1LjEgMjM1LjFjLTIuNiAxMi4yLTEzLjMgMjAuOS0yNS44IDIwLjljLTExLjkgMC0yMi40LTgtMjUuNC0xOS41bC01Ny0yMTIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjMzNmMwIDEuNSAwIDMuMSAuMSA0LjZMNjcuNiAyODNjLTE2LTE1LjItNDEuMy0xNC42LTU2LjYgMS40cy0xNC42IDQxLjMgMS40IDU2LjZMMTI0LjggNDQ4YzQzLjEgNDEuMSAxMDAuNCA2NCAxNjAgNjRIMzA0Yzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2VjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyNDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kY3VmZnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwIDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTE5MiA0OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bS0zMiA4MGMxNy43IDAgMzIgMTQuMyAzMiAzMmg4YzEzLjMgMCAyNCAxMC43IDI0IDI0djE2YzAgMS43LS4yIDMuNC0uNSA1LjFDMjgwLjMgMjI5LjYgMzIwIDI4Ni4yIDMyMCAzNTJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0NDAuNCAwIDM1MmMwLTY1LjggMzkuNy0xMjIuNCA5Ni41LTE0Ni45Yy0uNC0xLjYtLjUtMy4zLS41LTUuMVYxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRoOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMCAzMjBhOTYgOTYgMCAxIDAgMC0xOTIgOTYgOTYgMCAxIDAgMCAxOTJ6bTE5Mi05NmMwLTI1LjktNS4xLTUwLjUtMTQuNC03My4xYzE2LjktMzIuOSA0NC44LTU5LjEgNzguOS03My45Yy0uNC0xLjYtLjUtMy4zLS41LTUuMVYxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRoOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyaDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MTZjMCAxLjctLjIgMy40LS41IDUuMUM2MDAuMyAyMjkuNiA2NDAgMjg2LjIgNjQwIDM1MmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MGMtNjIgMC0xMTUuOC0zNS4zLTE0Mi40LTg2LjljOS4zLTIyLjUgMTQuNC00Ny4yIDE0LjQtNzMuMXptMjI0IDBhOTYgOTYgMCAxIDAgLTE5MiAwIDk2IDk2IDAgMSAwIDE5MiAwek0zNjggMGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTgwIDQ4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNBc2xJbnRlcnByZXRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU2LjYgNDYuM2M3LjktMTUuOCAxLjUtMzUtMTQuMy00Mi45cy0zNS0xLjUtNDIuOSAxNC4zTDEzLjUgMTg5LjRDNC42IDIwNy4yIDAgMjI2LjggMCAyNDYuN1YyNTZjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhoNzIgOHYtLjNjMzUuMi0yLjcgNjUuNC0yMi44IDgyLjEtNTEuN2M4LjgtMTUuMyAzLjYtMzQuOS0xMS43LTQzLjdzLTM0LjktMy42LTQzLjcgMTEuN2MtNyAxMi0xOS45IDIwLTM0LjcgMjBjLTIyLjEgMC00MC0xNy45LTQwLTQwczE3LjktNDAgNDAtNDBjMTQuOCAwIDI3LjcgOCAzNC43IDIwYzguOCAxNS4zIDI4LjQgMjAuNSA0My43IDExLjdzMjAuNS0yOC40IDExLjctNDMuN2MtMTIuOC0yMi4xLTMzLjYtMzkuMS01OC40LTQ3LjFsODAuOC0yMmMxNy00LjYgMjcuMS0yMi4yIDIyLjUtMzkuM3MtMjIuMi0yNy4xLTM5LjMtMjIuNUwxOTQuOSAxMjQuNmw4MS42LTY4YzEzLjYtMTEuMyAxNS40LTMxLjUgNC4xLTQ1LjFTMjQ5LjEtMy45IDIzNS41IDcuNEwxMzMuNiA5Mi4zbDIzLTQ2ek00ODMuNCA0NjUuN2MtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zbDg1LjktMTcxLjdjOC45LTE3LjggMTMuNS0zNy40IDEzLjUtNTcuMlYyNTZjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhINDQwaC04di4zYy0zNS4yIDIuNy02NS40IDIyLjgtODIuMSA1MS43Yy04LjkgMTUuMy0zLjYgMzQuOSAxMS43IDQzLjdzMzQuOSAzLjYgNDMuNy0xMS43YzctMTIgMTkuOS0yMCAzNC43LTIwYzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwYy0xNC44IDAtMjcuNy04LTM0LjctMjBjLTguOS0xNS4zLTI4LjQtMjAuNS00My43LTExLjdzLTIwLjUgMjguNC0xMS43IDQzLjdjMTIuOCAyMi4xIDMzLjYgMzkuMSA1OC40IDQ3LjFsLTgwLjggMjJjLTE3LjEgNC43LTI3LjEgMjIuMi0yMi41IDM5LjNzMjIuMiAyNy4xIDM5LjMgMjIuNWwxMDAuNy0yNy41LTgxLjYgNjhjLTEzLjYgMTEuMy0xNS40IDMxLjUtNC4xIDQ1LjFzMzEuNSAxNS40IDQ1LjEgNC4xbDEwMS45LTg0LjktMjMgNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzQm91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDOTYgMTQuMyA4MS43IDAgNjQgMFMzMiAxNC4zIDMyIDMyVjk2djU5LjEgLjdWMTkydjIxLjljMCAxNC4yIDUuMSAyNy45IDE0LjMgMzguN0wxMzEuNiAzNTJIMTI4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDMySDI4OGg2NEg0ODBoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRoLTMuNmw4NS4zLTk5LjVjOS4yLTEwLjggMTQuMy0yNC41IDE0LjMtMzguN1YxOTIgMTU1Ljh2LS43Vjk2IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjk2djQ4LjhsLTY5LjMgOTIuNGMtNS43IDcuNi0xNi4xIDkuNi0yNC4yIDQuOGMtOS43LTUuNy0xMi4xLTE4LjctNS4xLTI3LjVMNDczIDE4MGMxMC44LTEzLjUgOC45LTMzLjMtNC40LTQ0LjVzLTMzLTkuOC00NC41IDMuMmwtNDYuNyA1Mi41QzM2MSAyMDkuNyAzNTIgMjMzLjQgMzUyIDI1OC4xVjMyMHYzMkgyODhWMzIwIDI1OC4xYzAtMjQuNi05LTQ4LjQtMjUuNC02Ni44bC00Ni43LTUyLjVjLTExLjUtMTMtMzEuMy0xNC40LTQ0LjUtMy4ycy0xNS4yIDMwLjktNC40IDQ0LjVsMjcuNiAzNC41YzcgOC44IDQuNyAyMS44LTUuMSAyNy41Yy04LjEgNC44LTE4LjYgMi43LTI0LjItNC44TDk2IDE0NC44Vjk2IDMyem02NCA0NDh2MzJIMjg4VjQ4MGg2NHYzMkg0ODBWNDgwaDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ4MCAzNTIgMjg4IDE2MCAxMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzQnViYmxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgNjRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em05NiAxMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTMyIDE2MGwuMSA3Mi42Yy4xIDUyLjIgMjQgMTAxIDY0IDEzMy4xYy0uMS0xLjktLjEtMy44LS4xLTUuN3YtOGMwLTcxLjggMzctMTM4LjYgOTcuOS0xNzYuN2w2MC4yLTM3LjZjOC42LTUuNCAxNy45LTguNCAyNy4zLTkuNGw0NS45LTc5LjVjNi42LTExLjUgMi43LTI2LjItOC44LTMyLjhzLTI2LjItMi43LTMyLjggOC44bC03OCAxMzUuMWMtMy4zIDUuNy0xMC43IDcuNy0xNi40IDQuNHMtNy43LTEwLjctNC40LTE2LjRsNjItMTA3LjRjNi42LTExLjUgMi43LTI2LjItOC44LTMyLjhTMjE0IDUgMjA3LjQgMTYuNWwtNjggMTE3LjggMCAwIDAgMC00My4zIDc1TDk2IDE2MGMwLTE3LjctMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnpNMzMyLjEgODguNUwzMDcuNSAxMzFjMTMuOSA0LjUgMjYuNCAxMy43IDM0LjcgMjdjLjkgMS41IDEuOCAyLjkgMi41IDQuNGwyOC45LTUwYzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44cy0yNi4yLTIuNy0zMi44IDguOHptNDYuNCA2My43bC0yNi44IDQ2LjRjLS42IDYtMi4xIDExLjgtNC4zIDE3LjRIMzUyaDEzLjNsMCAwSDM5N2wyMy0zOS44YzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44cy0yNi4yLTIuNy0zMi44IDguOHpNMzE1LjEgMTc1Yy05LjQtMTUtMjkuMS0xOS41LTQ0LjEtMTAuMmwtNjAuMiAzNy42QzE1OS4zIDIzNC43IDEyOCAyOTEuMiAxMjggMzUydjhjMCA4LjkgLjggMTcuNiAyLjIgMjYuMWMzNS40IDguMiA2MS44IDQwIDYxLjggNzcuOWMwIDYuMy0uNyAxMi41LTIuMSAxOC40QzIxNS4xIDUwMSAyNDYuMyA1MTIgMjgwIDUxMkg0NTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzY0Yy02LjYgMC0xMi01LjQtMTItMTJzNS40LTEyIDEyLTEySDQ4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNjRjLTYuNiAwLTEyLTUuNC0xMi0xMnM1LjQtMTIgMTItMTJINTIwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM2NGMtNi42IDAtMTItNS40LTEyLTEyczUuNC0xMiAxMi0xMkg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzUybDAgMCAwIDBIMjU4LjhMMzA1IDIxOS4xYzE1LTkuNCAxOS41LTI5LjEgMTAuMi00NC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc0NsYXBwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAxNlY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2em0tOTguNyA3LjFsMzIgNDhjNC45IDcuNCAyLjkgMTcuMy00LjQgMjIuMnMtMTcuMyAyLjktMjIuMi00LjRsLTMyLTQ4Yy00LjktNy40LTIuOS0xNy4zIDQuNC0yMi4yczE3LjMtMi45IDIyLjIgNC40ek0xMzUgMTE5YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwTDI5Mi43IDI0Mi43YzEwLjEgMTAuMSAyNy4zIDIuOSAyNy4zLTExLjNWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzQ1LjZjMCA1Ny4xLTMwIDExMC03OC45IDEzOS40Yy02NCAzOC40LTE0NS44IDI4LjMtMTk4LjUtMjQuNEw3IDM2MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDUzIDUzYzYuMSA2LjEgMTYgNi4xIDIyLjEgMHM2LjEtMTYgMC0yMi4xTDIzIDI2NWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDkzIDkzYzYuMSA2LjEgMTYgNi4xIDIyLjEgMHM2LjEtMTYgMC0yMi4xTDU1IDE4NWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDExNyAxMTdjNi4xIDYuMSAxNiA2LjEgMjIuMSAwczYuMS0xNiAwLTIyLjFsLTkzLTkzYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpNNDMzLjEgNDg0LjljLTI0LjIgMTQuNS01MC45IDIyLjEtNzcuNyAyMy4xYzQ4LjEtMzkuNiA3Ni42LTk5IDc2LjYtMTYyLjRsMC05OC4xYzguMi0uMSAxNi02LjQgMTYtMTZWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzQ1LjZjMCA1Ny4xLTMwIDExMC03OC45IDEzOS40ek00MjQuOSAxOC43YzcuNCA0LjkgOS4zIDE0LjggNC40IDIyLjJsLTMyIDQ4Yy00LjkgNy40LTE0LjggOS4zLTIyLjIgNC40cy05LjMtMTQuOC00LjQtMjIuMmwzMi00OGM0LjktNy40IDE0LjgtOS4zIDIyLjItNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc0hvbGRpbmdDaGlsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMGE0MCA0MCAwIDEgMSAwIDgwIDQwIDQwIDAgMSAxIDAtODB6bTQ0LjcgMTY0LjNMMzc1LjggMjUzYzEuNiAxMy4yLTcuNyAyNS4xLTIwLjggMjYuOHMtMjUuMS03LjctMjYuOC0yMC44bC00LjQtMzVoLTcuNmwtNC40IDM1Yy0xLjYgMTMuMi0xMy42IDIyLjUtMjYuOCAyMC44cy0yMi41LTEzLjYtMjAuOC0yNi44bDExLjEtODguOEwyNTUuNSAxODFjLTEwLjEgOC42LTI1LjMgNy4zLTMzLjgtMi44cy03LjMtMjUuMyAyLjgtMzMuOGwyNy45LTIzLjZDMjcxLjMgMTA0LjggMjk1LjMgOTYgMzIwIDk2czQ4LjcgOC44IDY3LjYgMjQuN2wyNy45IDIzLjZjMTAuMSA4LjYgMTEuNCAyMy43IDIuOCAzMy44cy0yMy43IDExLjQtMzMuOCAyLjhsLTE5LjgtMTYuN3pNNDAgNjRjMjIuMSAwIDQwIDE3LjkgNDAgNDB2NDAgODAgNDAuMmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2w1MS4xIDUxLjFjOC4zIDguMyAyMS4zIDkuNiAzMSAzLjFjMTIuOS04LjYgMTQuNy0yNi45IDMuNy0zNy44bC0xNS4yLTE1LjItMzItMzJjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMzIgMzIgMTUuMiAxNS4yIDAgMCAyNS4zIDI1LjNjMjEgMjEgMzIuOCA0OS41IDMyLjggNzkuMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMTczLjNjLTE3IDAtMzMuMy02LjctNDUuMy0xOC43TDI4LjEgMzkzLjRDMTAuMSAzNzUuNCAwIDM1MSAwIDMyNS41VjIyNCAxNjAgMTA0QzAgODEuOSAxNy45IDY0IDQwIDY0em01NjAgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MHY1NiA2NFYzMjUuNWMwIDI1LjUtMTAuMSA0OS45LTI4LjEgNjcuOUw1MTIgNDkzLjNjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdINDAwYy0yNi41IDAtNDgtMjEuNS00OC00OFYzODUuMWMwLTI5LjcgMTEuOC01OC4yIDMyLjgtNzkuMmwyNS4zLTI1LjMgMCAwIDE1LjItMTUuMiAzMi0zMmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0zMiAzMi0xNS4yIDE1LjJjLTExIDExLTkuMiAyOS4yIDMuNyAzNy44YzkuNyA2LjUgMjIuNyA1LjIgMzEtMy4xbDUxLjEtNTEuMWMxMi0xMiAxOC43LTI4LjMgMTguNy00NS4zVjIyNCAxNDQgMTA0YzAtMjIuMSAxNy45LTQwIDQwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc0hvbGRpbmdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBhMTI4IDEyOCAwIDEgMSAwIDI1NkExMjggMTI4IDAgMSAxIDMyMCAwek00MCA2NGMyMi4xIDAgNDAgMTcuOSA0MCA0MHY0MCA4MCA0MC4yYzAgMTcgNi43IDMzLjMgMTguNyA0NS4zbDUxLjEgNTEuMWM4LjMgOC4zIDIxLjMgOS42IDMxIDMuMWMxMi45LTguNiAxNC43LTI2LjkgMy43LTM3LjhsLTE1LjItMTUuMi0zMi0zMmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGwzMiAzMiAxNS4yIDE1LjIgMCAwIDI1LjMgMjUuM2MyMSAyMSAzMi44IDQ5LjUgMzIuOCA3OS4yVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEgxNzMuM2MtMTcgMC0zMy4zLTYuNy00NS4zLTE4LjdMMjguMSAzOTMuNEMxMC4xIDM3NS40IDAgMzUxIDAgMzI1LjVWMjI0IDE2MCAxMDRDMCA4MS45IDE3LjkgNjQgNDAgNjR6bTU2MCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwdjU2IDY0VjMyNS41YzAgMjUuNS0xMC4xIDQ5LjktMjguMSA2Ny45TDUxMiA0OTMuM2MtMTIgMTItMjguMyAxOC43LTQ1LjMgMTguN0g0MDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM4NS4xYzAtMjkuNyAxMS44LTU4LjIgMzIuOC03OS4ybDI1LjMtMjUuMyAwIDAgMTUuMi0xNS4yIDMyLTMyYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTMyIDMyLTE1LjIgMTUuMmMtMTEgMTEtOS4yIDI5LjIgMy43IDM3LjhjOS43IDYuNSAyMi43IDUuMiAzMS0zLjFsNTEuMS01MS4xYzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNWMjI0IDE0NCAxMDRjMC0yMi4xIDE3LjktNDAgNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzSG9sZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAxMDRjMC0yMi4xLTE3LjktNDAtNDAtNDBTMCA4MS45IDAgMTA0djU2IDY0VjMyNS41YzAgMjUuNSAxMC4xIDQ5LjkgMjguMSA2Ny45TDEyOCA0OTMuM2MxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43SDI0MGMyNi41IDAgNDgtMjEuNSA0OC00OFYzODUuMWMwLTI5LjctMTEuOC01OC4yLTMyLjgtNzkuMmwtMjUuMy0yNS4zIDAgMC0xNS4yLTE1LjItMzItMzJjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDMyIDMyIDE1LjIgMTUuMmMxMSAxMSA5LjIgMjkuMi0zLjcgMzcuOGMtOS43IDYuNS0yMi43IDUuMi0zMS0zLjFMOTguNyAzMDkuNWMtMTItMTItMTguNy0yOC4zLTE4LjctNDUuM1YyMjQgMTQ0IDEwNHptNDgwIDB2NDAgODAgNDAuMmMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNTEuMSA1MS4xYy04LjMgOC4zLTIxLjMgOS42LTMxIDMuMWMtMTIuOS04LjYtMTQuNy0yNi45LTMuNy0zNy44bDE1LjItMTUuMiAzMi0zMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMzIgMzItMTUuMiAxNS4yIDAgMC0yNS4zIDI1LjNjLTIxIDIxLTMyLjggNDkuNS0zMi44IDc5LjJWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDY2LjdjMTcgMCAzMy4zLTYuNyA0NS4zLTE4LjdsOTkuOS05OS45YzE4LTE4IDI4LjEtNDIuNCAyOC4xLTY3LjlWMjI0IDE2MCAxMDRjMC0yMi4xLTE3LjktNDAtNDAtNDBzLTQwIDE3LjktNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzUHJheWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTEuMiA0LjhjMy4yLTIgNi42LTMuMyAxMC00LjFjNC43LTEgOS42LS45IDE0LjEgLjFjNy43IDEuOCAxNC44IDYuNSAxOS40IDEzLjZMNTE0LjYgMTk0LjJjOC44IDEzLjEgMTMuNCAyOC42IDEzLjQgNDQuNHY3My41YzAgNi45IDQuNCAxMyAxMC45IDE1LjJsNzkuMiAyNi40QzYzMS4yIDM1OCA2NDAgMzcwLjIgNjQwIDM4NHY5NmMwIDkuOS00LjYgMTkuMy0xMi41IDI1LjRzLTE4LjEgOC4xLTI3LjcgNS41TDQzMSA0NjUuOWMtNTYtMTQuOS05NS02NS43LTk1LTEyMy43VjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjE5LjFjMC03LTEuOC0xMy44LTUuMy0xOS44TDM0MC4zIDQ4LjFjLTEuNy0zLTIuOS02LjEtMy42LTkuM2MtMS00LjctMS05LjYgLjEtMTQuMWMxLjktOCA2LjgtMTUuMiAxNC4zLTE5Ljl6bS02Mi40IDBjNy41IDQuNiAxMi40IDExLjkgMTQuMyAxOS45YzEuMSA0LjYgMS4yIDkuNCAuMSAxNC4xYy0uNyAzLjItMS45IDYuMy0zLjYgOS4zTDIxMy4zIDE5OS4zYy0zLjUgNi01LjMgMTIuOS01LjMgMTkuOFYzMDRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzNDIuM2MwIDU4LTM5IDEwOC43LTk1IDEyMy43bC0xNjguNyA0NWMtOS42IDIuNi0xOS45IC41LTI3LjctNS41UzAgNDkwIDAgNDgwVjM4NGMwLTEzLjggOC44LTI2IDIxLjktMzAuNGw3OS4yLTI2LjRjNi41LTIuMiAxMC45LTguMyAxMC45LTE1LjJWMjM4LjVjMC0xNS44IDQuNy0zMS4yIDEzLjQtNDQuNEwyNDUuMiAxNC41YzQuNi03LjEgMTEuNy0xMS44IDE5LjQtMTMuNmM0LjYtMS4xIDkuNC0xLjIgMTQuMS0uMWMzLjUgLjggNi45IDIuMSAxMCA0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjBsLS4xIDcyLjZjLS4xIDUyLjItMjQgMTAxLTY0IDEzMy4xYy4xLTEuOSAuMS0zLjggLjEtNS43di04YzAtNzEuOC0zNy0xMzguNi05Ny45LTE3Ni43bC02MC4yLTM3LjZjLTguNi01LjQtMTcuOS04LjQtMjcuMy05LjRMMjQ4LjcgNDguOGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhzMjYuMi0yLjcgMzIuOCA4LjhsNzggMTM1LjFjMy4zIDUuNyAxMC43IDcuNyAxNi40IDQuNHM3LjctMTAuNyA0LjQtMTYuNGwtNjItMTA3LjRjLTYuNi0xMS41LTIuNy0yNi4yIDguOC0zMi44UzM2MiA1IDM2OC42IDE2LjVsNjggMTE3LjggMCAwIDAgMCA0My4zIDc1TDQ4MCAxNjBjMC0xNy43IDE0LjQtMzIgMzItMzJzMzIgMTQuNCAzMiAzMnpNMjQzLjkgODguNUwyNjguNSAxMzFjLTEzLjkgNC41LTI2LjQgMTMuNy0zNC43IDI3Yy0uOSAxLjQtMS43IDIuOS0yLjUgNC40bC0yOC45LTUwYy02LjYtMTEuNS0yLjctMjYuMiA4LjgtMzIuOHMyNi4yLTIuNyAzMi44IDguOHptLTQ2LjQgNjMuN2wyNi44IDQ2LjRjLjYgNiAyLjEgMTEuOCA0LjMgMTcuNEgyMjQgMjEwLjdsMCAwSDE3OWwtMjMtMzkuOGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhzMjYuMi0yLjcgMzIuOCA4Ljh6TTI2MC45IDE3NWM5LjQtMTUgMjkuMS0xOS41IDQ0LjEtMTAuMmw2MC4yIDM3LjZDNDE2LjcgMjM0LjcgNDQ4IDI5MS4yIDQ0OCAzNTJ2OGMwIDgzLjktNjguMSAxNTItMTUyIDE1MkgxMjBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOTJjNi42IDAgMTItNS40IDEyLTEycy01LjQtMTItMTItMTJIODhjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMjEyYzYuNiAwIDEyLTUuNCAxMi0xMnMtNS40LTEyLTEyLTEySDU2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDIxMmM2LjYgMCAxMi01LjQgMTItMTJzLTUuNC0xMi0xMi0xMkg4OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNEgyMjRsMCAwIDAgMGg5My4yTDI3MSAyMTkuMWMtMTUtOS40LTE5LjUtMjkuMS0xMC4yLTQ0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzaGFrZUFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAyNDh2My4zbDY5LjctNjkuN2MyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw1MzUuNiAyNC40Yy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMEw0MTYuMyA2NC41Yy0yLjctLjMtNS41LS41LTguMy0uNUgyOTZjLTM3LjEgMC02Ny42IDI4LTcxLjYgNjRIMjI0VjI0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwVjE3NmMwIDAgMC0uMSAwLS4xVjE2MGwxNiAwIDEzNiAwYzAgMCAwIDAgLjEgMEg0NjRjNDQuMiAwIDgwIDM1LjggODAgODB2OHpNMzM2IDE5MnY1NmMwIDM5LjgtMzIuMiA3Mi03MiA3MnMtNzItMzIuMi03Mi03MlYxMjkuNGMtMzUuOSA2LjItNjUuOCAzMi4zLTc2IDY4LjJMOTkuNSAyNTUuMiAyNi4zIDMyOC40Yy0yMS45IDIxLjktMjEuOSA1Ny4zIDAgNzkuMmw3OC4xIDc4LjFjMjEuOSAyMS45IDU3LjMgMjEuOSA3OS4yIDBsMzcuNy0zNy43Yy45IDAgMS44IC4xIDIuNyAuMUgzODRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC01LjYtMS0xMS0yLjctMTZINDMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMTIuOC01LTI0LjQtMTMuMi0zM2MyNS43LTUgNDUuMS0yNy42IDQ1LjItNTQuOHYtLjRjLS4xLTMwLjgtMjUuMS01NS44LTU2LTU1LjhjMCAwIDAgMCAwIDBsLTEyMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2VTaW1wbGVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC0xMzUtMTA1LjhjLTEuMS0xMS4zLTYuMy0yMi4zLTE1LjMtMzAuN2wtMTM0LjItMTIzLTIzLjQgMTguMi0yNi0yMC4zIDc3LjItNjAuMWM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTUwLjIgMzUySDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhINTE2aC00LS43bC0zLjktMi41TDQzNC44IDc5Yy0xNS4zLTkuOC0zMy4yLTE1LTUxLjQtMTVjLTIxLjggMC00MyA3LjUtNjAgMjEuMmwtODkuNyA3Mi42LTI1LjgtMjAuMyA4MS44LTY2LjJjLTExLjYtNC45LTI0LjEtNy40LTM2LjgtNy40QzIzNCA2NCAyMTUuNyA2OS42IDIwMCA4MGwtMzUuNSAyMy43TDM4LjggNS4xek00MTMuNiA0MjEuOUw0MS4yIDEyOC41QzE3LjkgMTMxLjggMCAxNTEuOCAwIDE3NlYzMDRjMCAyNi41IDIxLjUgNDggNDggNDhIMTU2LjJsOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45Yy44LS44IDEuNS0xLjcgMi4yLTIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNoYWtlU2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy40IDg1LjJsLTk2LjggNzguNGMtMTYuMSAxMy0xOS4yIDM2LjQtNyA1My4xYzEyLjkgMTcuOCAzOCAyMS4zIDU1LjMgNy44bDk5LjMtNzcuMmM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTUwLjIgMzUySDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhINTE2aC00LS43bC0zLjktMi41TDQzNC44IDc5Yy0xNS4zLTkuOC0zMy4yLTE1LTUxLjQtMTVjLTIxLjggMC00MyA3LjUtNjAgMjEuMnptMjIuOCAxMjQuNGwtNTEuNyA0MC4yQzI2MyAyNzQuNCAyMTcuMyAyNjggMTkzLjcgMjM1LjZjLTIyLjItMzAuNS0xNi42LTczLjEgMTIuNy05Ni44bDgzLjItNjcuM2MtMTEuNi00LjktMjQuMS03LjQtMzYuOC03LjRDMjM0IDY0IDIxNS43IDY5LjYgMjAwIDgwbC03MiA0OEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMzA0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDE1Ni4ybDkxLjQgODMuNGMxOS42IDE3LjkgNDkuOSAxNi41IDY3LjgtMy4xYzUuNS02LjEgOS4yLTEzLjIgMTEuMS0yMC42bDE3IDE1LjZjMTkuNSAxNy45IDQ5LjkgMTYuNiA2Ny44LTIuOWM0LjUtNC45IDcuOC0xMC42IDkuOS0xNi41YzE5LjQgMTMgNDUuOCAxMC4zIDYyLjEtNy41YzE3LjktMTkuNSAxNi42LTQ5LjktMi45LTY3LjhsLTEzNC4yLTEyM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNoYWtlU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN2wtMTM1LTEwNS44Yy0xLjEtMTEuMy02LjMtMjIuMy0xNS4zLTMwLjdsLTEzNC4yLTEyMy0yMy40IDE4LjItMjYtMjAuMyA3Ny4yLTYwLjFjNy01LjQgMTctNC4yIDIyLjUgMi44czQuMiAxNy0yLjggMjIuNWwtMjAuOSAxNi4yTDUxMiAzMTYuOFYxMjhoLS43bC0zLjktMi41TDQzNC44IDc5Yy0xNS4zLTkuOC0zMy4yLTE1LTUxLjQtMTVjLTIxLjggMC00MyA3LjUtNjAgMjEuMmwtODkuNyA3Mi42LTI1LjgtMjAuMyA4MS44LTY2LjJjLTExLjYtNC45LTI0LjEtNy40LTM2LjgtNy40QzIzNCA2NCAyMTUuNyA2OS42IDIwMCA4MGwtMzUuNSAyMy43TDM4LjggNS4xek00MTMuNiA0MjEuOUwxMjggMTk2LjhWMzUyaDI4LjJsOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45Yy44LS44IDEuNS0xLjcgMi4yLTIuNnpNOTYgMTcxLjZMNDAuNiAxMjhIMTZjLTguOCAwLTE2IDcuMi0xNiAxNlYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJINjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTcxLjZ6TTQ4IDMyMGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6TTU0NCAxMjhWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTguOC03LjItMTYtMTYtMTZINTQ0em0zMiAyMDhhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy40IDg1LjJsLTk2LjggNzguNGMtMTYuMSAxMy0xOS4yIDM2LjQtNyA1My4xYzEyLjkgMTcuOCAzOCAyMS4zIDU1LjMgNy44bDk5LjMtNzcuMmM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTEyIDMxNi44VjEyOGgtLjdsLTMuOS0yLjVMNDM0LjggNzljLTE1LjMtOS44LTMzLjItMTUtNTEuNC0xNWMtMjEuOCAwLTQzIDcuNS02MCAyMS4yem0yMi44IDEyNC40bC01MS43IDQwLjJDMjYzIDI3NC40IDIxNy4zIDI2OCAxOTMuNyAyMzUuNmMtMjIuMi0zMC41LTE2LjYtNzMuMSAxMi43LTk2LjhsODMuMi02Ny4zYy0xMS42LTQuOS0yNC4xLTcuNC0zNi44LTcuNEMyMzQgNjQgMjE1LjcgNjkuNiAyMDAgODBsLTcyIDQ4VjM1MmgyOC4ybDkxLjQgODMuNGMxOS42IDE3LjkgNDkuOSAxNi41IDY3LjgtMy4xYzUuNS02LjEgOS4yLTEzLjIgMTEuMS0yMC42bDE3IDE1LjZjMTkuNSAxNy45IDQ5LjkgMTYuNiA2Ny44LTIuOWM0LjUtNC45IDcuOC0xMC42IDkuOS0xNi41YzE5LjQgMTMgNDUuOCAxMC4zIDYyLjEtNy41YzE3LjktMTkuNSAxNi42LTQ5LjktMi45LTY3LjhsLTEzNC4yLTEyM3pNMTYgMTI4Yy04LjggMC0xNiA3LjItMTYgMTZWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOEgxNnpNNDggMzIwYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpNNTQ0IDEyOFYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkg1NDR6bTMyIDIwOGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW51a2lhaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTQuMiAzLjNDMzA5LjEgMTIuMSAyOTYgMzYuNiAyOTYgNTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN0MzMjQuNiAxLjIgMzIyLjQgMCAzMjAgMHMtNC42IDEuMi01LjggMy4zem0tMjg4IDQ4QzIxLjEgNjAuMSA4IDg0LjYgOCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN0MzNi42IDQ5LjIgMzQuNCA0OCAzMiA0OHMtNC42IDEuMi01LjggMy4zek04OCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0MxMDEuMSA2MC4xIDg4IDg0LjYgODggMTA0em04Mi4yLTUyLjdDMTY1LjEgNjAuMSAxNTIgODQuNiAxNTIgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjdjLTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjN6TTIxNiAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0MyMjkuMSA2MC4xIDIxNiA4NC42IDIxNiAxMDR6TTM5NC4yIDUxLjNDMzg5LjEgNjAuMSAzNzYgODQuNiAzNzYgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjdjLTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjN6TTQ0MCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0M0NTMuMSA2MC4xIDQ0MCA4NC42IDQ0MCAxMDR6bTgyLjItNTIuN0M1MTcuMSA2MC4xIDUwNCA4NC42IDUwNCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM3pNNTg0IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zQzU5Ny4xIDYwLjEgNTg0IDg0LjYgNTg0IDEwNHpNMTEyIDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2djk2IDE2aDMyVjI3MiAxNzZjMC04LjgtNy4yLTE2LTE2LTE2em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2OTYgMTZoMzJWMjcyIDE3NmMwLTguOC03LjItMTYtMTYtMTZ6bTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY5NiAxNmgzMlYyNzIgMTc2YzAtOC44LTcuMi0xNi0xNi0xNnptMTYwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnY5NiAxNmgzMlYyNzIgMTc2YzAtOC44LTcuMi0xNi0xNi0xNnptNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2djk2IDE2aDMyVjI3MiAxNzZjMC04LjgtNy4yLTE2LTE2LTE2em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2OTYgMTZoMzJWMjcyIDE3NmMwLTguOC03LjItMTYtMTYtMTZ6TTM1MiAxNDRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzIwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCA1MyA0MyA5NiA5NiA5NkgyODh2NjRIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDMyMCA0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjM4NEg1NDRjNTMgMCA5Ni00MyA5Ni05NlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyVjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFyZERyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjI4MC40Yy0xNy0xNS4yLTM5LjQtMjQuNC02NC0yNC40SDY0Yy0yNC42IDAtNDcgOS4yLTY0IDI0LjRWOTZ6TTY0IDI4OEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjM1MmMwLTM1LjMgMjguNy02NCA2NC02NHpNMzIwIDQxNmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTEyOC0zMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4MS4zIDMyLjRjMTcuNCAyLjkgMjkuMiAxOS40IDI2LjMgMzYuOEwxOTcuOCAxMjhoOTUuMWwxMS41LTY5LjNjMi45LTE3LjQgMTkuNC0yOS4yIDM2LjgtMjYuM3MyOS4yIDE5LjQgMjYuMyAzNi44TDM1Ny44IDEyOEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzQ3LjFMMzI1LjggMzIwSDM4NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMTUuMWwtMTEuNSA2OS4zYy0yLjkgMTcuNC0xOS40IDI5LjItMzYuOCAyNi4zcy0yOS4yLTE5LjQtMjYuMy0zNi44bDkuOC01OC43SDE1NS4xbC0xMS41IDY5LjNjLTIuOSAxNy40LTE5LjQgMjkuMi0zNi44IDI2LjNzLTI5LjItMTkuNC0yNi4zLTM2LjhMOTAuMiAzODRIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoNjguOWwyMS4zLTEyOEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg2OC45bDExLjUtNjkuM2MyLjktMTcuNCAxOS40LTI5LjIgMzYuOC0yNi4zek0xODcuMSAxOTJMMTY1LjggMzIwaDk1LjFsMjEuMy0xMjhIMTg3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdENvd2JveVNpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyLjcgMTM1LjlsLTEwLjQgNTcuMmM2LjgtLjcgMTMuNi0xLjEgMjAuNS0xLjFoMTAuN2MzOS40IDAgNzcuOCAxMi4xIDExMC4xIDM0LjdMNTYyLjQgNDIxLjhsMzUuMSAyNC42YzI0LjQtNiA0Mi41LTI4LjEgNDIuNS01NC40YzAtNzUuOC05NC43LTEyNi42LTEzNC42LTE0NC43TDQ3NCA4My45QzQ2OC4yIDUzLjggNDQxLjggMzIgNDExLjEgMzJoLTIuN2MtNS42IDAtMTEuMSAuNy0xNi41IDIuMkwxOTkuMiA4NS41Yy0yMy45IDYuNC00MiAyNi00Ni41IDUwLjR6TTAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDU0NEwyNjUuMyAyNTIuOWMtMjYuOS0xOC44LTU4LjktMjguOS05MS44LTI4LjlIMTYyLjljLTYwLjYgMC0xMTYgMzQuMi0xNDMuMSA4OC40TDEzLjUgMzI1QzQuNiAzNDIuNyAwIDM2Mi4zIDAgMzgyLjJWMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXRDb3dib3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0YzE0LjQgMCAyMi4zLTcgMzAuOC0xNC40QzM2MC40IDQxLjEgMzcwLjcgMzIgMzkyIDMyYzQ5LjMgMCA4NC40IDE1Mi4yIDk3LjkgMjIxLjlDNDQ3LjggMjcyLjEgMzkwLjkgMjg4IDMyMCAyODhzLTEyNy44LTE1LjktMTY5LjktMzQuMUMxNjMuNiAxODQuMiAxOTguNyAzMiAyNDggMzJjMjEuMyAwIDMxLjYgOS4xIDQxLjIgMTcuNkMyOTcuNyA1NyAzMDUuNiA2NCAzMjAgNjR6TTExMS4xIDI3MC43YzQ3LjIgMjQuNSAxMTcuNSA0OS4zIDIwOSA0OS4zczE2MS44LTI0LjggMjA4LjktNDkuM2MyNC44LTEyLjkgNDkuOC0yOC4zIDcwLjEtNDcuN2M3LjktNy45IDIwLjItOS4yIDI5LjYtMy4zYzkuNSA1LjkgMTMuNSAxNy45IDkuOSAyOC41Yy0xMy41IDM3LjctMzguNCA3Mi4zLTY2LjEgMTAwLjZDNTIzLjcgMzk4LjkgNDQzLjYgNDQ4IDMyMCA0NDhzLTIwMy42LTQ5LjEtMjUyLjUtOTkuMkMzOS44IDMyMC40IDE0LjkgMjg1LjggMS40IDI0OC4xYy0zLjYtMTAuNiAuNC0yMi42IDkuOS0yOC41YzkuNS01LjkgMjEuNy00LjUgMjkuNiAzLjNjMjAuNCAxOS40IDQ1LjMgMzQuOCA3MC4xIDQ3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdFdpemFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0MTZMMTY4LjYgMTgwLjdjMTUuMy0zNC40IDQwLjMtNjMuNSA3Mi04My43bDE0Ni45LTk0YzMtMS45IDYuNS0yLjkgMTAtMi45QzQwNy43IDAgNDE2IDguMyA0MTYgMTguNnYxLjZjMCAyLjYtLjUgNS4xLTEuNCA3LjVMMzU0LjggMTc2LjljLTEuOSA0LjctMi44IDkuNy0yLjggMTQuN2MwIDUuNSAxLjIgMTEgMy40IDE2LjFMNDQ4IDQxNkgyNDAuOWwxMS44LTM1LjQgNDAuNC0xMy41YzYuNS0yLjIgMTAuOS04LjMgMTAuOS0xNS4ycy00LjQtMTMtMTAuOS0xNS4ybC00MC40LTEzLjUtMTMuNS00MC40QzIzNyAyNzYuNCAyMzAuOSAyNzIgMjI0IDI3MnMtMTMgNC40LTE1LjIgMTAuOWwtMTMuNSA0MC40LTQwLjQgMTMuNUMxNDguNCAzMzkgMTQ0IDM0NS4xIDE0NCAzNTJzNC40IDEzIDEwLjkgMTUuMmw0MC40IDEzLjVMMjA3LjEgNDE2SDY0ek0yNzkuNiAxNDEuNWMtMS4xLTMuMy00LjEtNS41LTcuNi01LjVzLTYuNSAyLjItNy42IDUuNWwtNi43IDIwLjItMjAuMiA2LjdjLTMuMyAxLjEtNS41IDQuMS01LjUgNy42czIuMiA2LjUgNS41IDcuNmwyMC4yIDYuNyA2LjcgMjAuMmMxLjEgMy4zIDQuMSA1LjUgNy42IDUuNXM2LjUtMi4yIDcuNi01LjVsNi43LTIwLjIgMjAuMi02LjdjMy4zLTEuMSA1LjUtNC4xIDUuNS03LjZzLTIuMi02LjUtNS41LTcuNmwtMjAuMi02LjctNi43LTIwLjJ6TTMyIDQ0OEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlQ291Z2hTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzI1LjhsNDQgMzQuNWM4LjEgMS40IDE0LjggNi44IDE4IDE0LjFMNTUyLjkgNDA4YzEwLjYgLjQgMTkuNSA3LjYgMjIuMiAxNy40bDM5LjEgMzAuNmMuNiAwIDEuMi0uMSAxLjgtLjFjMTEuMSAwIDIwLjQgNy41IDIzLjIgMTcuOGgtMy45YzYuMiA4LjUgNi40IDIwLjQtLjQgMjljLTguMiAxMC40LTIzLjMgMTIuMy0zMy43IDQuMUw5LjIgNDIuOUMtMS4yIDM0LjctMy4xIDE5LjYgNS4xIDkuMlMyOC40LTMuMSAzOC44IDUuMUw4OS42IDQ0LjlDMTI3IDE2LjcgMTczLjUgMCAyMjQgMGgyNGM5NS4yIDAgMTgxLjIgNjkuMyAxOTcuMyAxNjAuMmMyLjMgMTMgNi44IDI1LjcgMTUuMSAzNmw0MiA1Mi42YzYuMiA3LjggOS42IDE3LjQgOS42IDI3LjRjMCAyNC4yLTE5LjYgNDMuOC00My44IDQzLjhINDQ4djAgNS44ek0wIDIyNC4yYzAtMzguNyA5LjgtNzUuMSAyNy4xLTEwNi45TDM0MS44IDM2NS4zbC0yLjUgLjNjLTExIDEuNC0xOS4yIDEwLjctMTkuMiAyMS44YzAgMTEuNiA5IDIxLjIgMjAuNiAyMS45bDYyIDMuOSA0MyAzMy45QzQzOS4zIDQ2Ni4yIDQyMS4yIDQ4MCA0MDAgNDgwSDMyMHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDI1NnYwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDcuM2MwLTE2LjctNi45LTMyLjUtMTcuMS00NS44QzE2LjYgMzIyLjQgMCAyNzQuMSAwIDIyNC4yek02MTYgMzYwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptLTY0LTQ4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAtMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZFNpZGVDb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDIyNC4yQzAgMTAwLjYgMTAwLjIgMCAyMjQgMGgyNGM5NS4yIDAgMTgxLjIgNjkuMyAxOTcuMyAxNjAuMmMyLjMgMTMgNi44IDI1LjcgMTUuMSAzNmw0MiA1Mi42YzYuMiA3LjggOS42IDE3LjQgOS42IDI3LjRjMCAyNC4yLTE5LjYgNDMuOC00My44IDQzLjhINDQ4djAgMzJMMzM5LjIgMzY1LjZjLTExIDEuNC0xOS4yIDEwLjctMTkuMiAyMS44YzAgMTEuNiA5IDIxLjIgMjAuNiAyMS45TDQ0OCA0MTZ2MTZjMCAyNi41LTIxLjUgNDgtNDggNDhIMzIwdjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjU2djBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwNy4zYzAtMTYuNy02LjktMzIuNS0xNy4xLTQ1LjhDMTYuNiAzMjIuNCAwIDI3NC4xIDAgMjI0LjJ6bTM1Mi0uMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTQ2NCAzODRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTUyLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNNTkyIDQ4MGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek01NTIgMzEyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAtMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpNNTUyIDQwOGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlTWFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAyMjQuMmMwLTIyLjIgMy4yLTQzLjYgOS4yLTYzLjlMMjYyLjIgMzIxYy00IDkuNS02LjIgMjAtNi4yIDMxVjUxMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwNy4zYzAtMTYuNy02LjktMzIuNS0xNy4xLTQ1LjhDNDguNiAzMjIuNCAzMiAyNzQuMSAzMiAyMjQuMnptMjQ4LjMgNzAuNEw1MyAxMjkuM0M4OC43IDUzIDE2Ni4yIDAgMjU2IDBoMjRjOTUuMiAwIDE4MS4yIDY5LjMgMTk3LjMgMTYwLjJjMi4zIDEzIDYuOCAyNS43IDE1LjEgMzZsNDIgNTIuNmM1LjQgNi43IDguNiAxNC44IDkuNCAyMy4ySDMzNmMtMjEuNyAwLTQxLjMgOC42LTU1LjcgMjIuNnpNMzM2IDMwNEg1MzRsMCAwaDEwbC0xOS43IDY0SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg1MTQuNWwtOS44IDMySDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0OTQuOGwtLjkgMi44Yy04LjMgMjYuOS0zMy4xIDQ1LjItNjEuMiA0NS4ySDI4OFYzNTJjMC0xNCA2LTI2LjcgMTUuNi0zNS40YzAgMCAwIDAgMCAwYzguNS03LjggMTkuOS0xMi42IDMyLjQtMTIuNnptNDgtODBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkU2lkZVZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0LjJDMCAxMDAuNiAxMDAuMiAwIDIyNCAwaDI0Yzk1LjIgMCAxODEuMiA2OS4zIDE5Ny4zIDE2MC4yYzIuMyAxMyA2LjggMjUuNyAxNS4xIDM2bDQyIDUyLjZjNi4yIDcuOCA5LjYgMTcuNCA5LjYgMjcuNGMwIDI0LjItMTkuNiA0My44LTQzLjggNDMuOEg0NDh2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzIwdjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDcuM2MwLTE2LjctNi45LTMyLjUtMTcuMS00NS44QzE2LjYgMzIyLjQgMCAyNzQuMSAwIDIyNC4yek0yMjQgNjRjLTguOCAwLTE2IDcuMi0xNiAxNmMwIDMzLTM5LjkgNDkuNS02My4yIDI2LjJjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZDMTQ1LjUgMTUyLjEgMTI5IDE5MiA5NiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZjMzMgMCA0OS41IDM5LjkgMjYuMiA2My4yYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBDMTY4LjEgMjg2LjUgMjA4IDMwMyAyMDggMzM2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZjMC0zMyAzOS45LTQ5LjUgNjMuMi0yNi4yYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkMzMDIuNSAyNjMuOSAzMTkgMjI0IDM1MiAyMjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTMzIDAtNDkuNS0zOS45LTI2LjItNjMuMmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwQzI3OS45IDEyOS41IDI0MCAxMTMgMjQwIDgwYzAtOC44LTcuMi0xNi0xNi0xNnptLTI0IDk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAgODBhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDgwaDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDExMlYyMDhIMzM2Vjk2SDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg0OCA0OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MDBWMjQwIDQxNmgxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzNjggMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDE2VjI3MkgxMTJWNDE2aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDgwIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQ4VjI0MCA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkcGhvbmVzU2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4MEMxNDEuMSA4MCA0OCAxNzMuMSA0OCAyODhWMzkyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI4OEMwIDE0Ni42IDExNC42IDMyIDI1NiAzMnMyNTYgMTE0LjYgMjU2IDI1NlYzOTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjg4YzAtMTE0LjktOTMuMS0yMDgtMjA4LTIwOHpNODAgMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNDRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjM1MnptMjg4LTY0YzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkcGhvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4MEMxNDkuOSA4MCA2Mi40IDE1OS40IDQ5LjYgMjYyYzkuNC0zLjggMTkuNi02IDMwLjQtNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjM4NCAzMzYgMjg4QzAgMTQ2LjYgMTE0LjYgMzIgMjU2IDMyczI1NiAxMTQuNiAyNTYgMjU2djQ4IDQ4IDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy0yNi41IDAtNDgtMjEuNS00OC00OFYzMDRjMC0yNi41IDIxLjUtNDggNDgtNDhjMTAuOCAwIDIxIDIuMSAzMC40IDZDNDQ5LjYgMTU5LjQgMzYyLjEgODAgMjU2IDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OEMxNDEuMSA0OCA0OCAxNDEuMSA0OCAyNTZ2NDBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjU2QzAgMTE0LjYgMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NlY0MDAuMWMwIDQ4LjYtMzkuNCA4OC04OC4xIDg4TDMxMy42IDQ4OGMtOC4zIDE0LjMtMjMuOCAyNC00MS42IDI0SDI0MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OGgzMmMxNy44IDAgMzMuMyA5LjcgNDEuNiAyNGwxMTAuNCAuMWMyMi4xIDAgNDAtMTcuOSA0MC00MFYyNTZjMC0xMTQuOS05My4xLTIwOC0yMDgtMjA4ek0xNDQgMjA4aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNDRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI3MmMwLTM1LjMgMjguNy02NCA2NC02NHptMjI0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNDBjMC0xNy43IDE0LjMtMzIgMzItMzJoMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0Q2lyY2xlQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTQ3LjktMjI1YzQuMyAzLjcgNS40IDkuOSAyLjYgMTQuOUw0NTIuNCAzNTZINDg4YzUuMiAwIDkuOCAzLjMgMTEuNCA4LjJzLS4xIDEwLjMtNC4yIDEzLjRsLTk2IDcyYy00LjUgMy40LTEwLjggMy4yLTE1LjEtLjZzLTUuNC05LjktMi42LTE0LjlMNDExLjYgMzgwSDM3NmMtNS4yIDAtOS44LTMuMy0xMS40LTguMnMuMS0xMC4zIDQuMi0xMy40bDk2LTcyYzQuNS0zLjQgMTAuOC0zLjIgMTUuMSAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNTc2IDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDE2IDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNTc2IDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNjQgMGMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0Q2lyY2xlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTE2LTIwOHY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg0NDh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzg0SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg0OFYzMDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNDU0LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQzMiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQwOS40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDMyIDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0Q3JhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE5LjQgNDQuMWMyMy4zLTMuOSA0Ni44LTEuOSA2OC42IDUuM2w0OS44IDc3LjUtNzUuNCA3NS40Yy0xLjUgMS41LTIuNCAzLjYtMi4zIDUuOHMxIDQuMiAyLjYgNS43bDExMiAxMDRjMi45IDIuNyA3LjQgMi45IDEwLjUgLjNzMy44LTcgMS43LTEwLjRsLTYwLjQtOTguMSA5MC43LTc1LjZjMi42LTIuMSAzLjUtNS43IDIuNC04LjhMMjk2LjggNjEuOGMyOC41LTE2LjcgNjIuNC0yMy4yIDk1LjctMTcuNkM0NjEuNSA1NS42IDUxMiAxMTUuMiA1MTIgMTg1LjF2NS44YzAgNDEuNS0xNy4yIDgxLjItNDcuNiAxMDkuNUwyODMuNyA0NjkuMWMtNy41IDctMTcuNCAxMC45LTI3LjcgMTAuOXMtMjAuMi0zLjktMjcuNy0xMC45TDQ3LjYgMzAwLjRDMTcuMiAyNzIuMSAwIDIzMi40IDAgMTkwLjl2LTUuOGMwLTY5LjkgNTAuNS0xMjkuNSAxMTkuNC0xNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0UHVsc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI4LjMgNDY5LjFMNDcuNiAzMDAuNGMtNC4yLTMuOS04LjItOC4xLTExLjktMTIuNGg4N2MyMi42IDAgNDMtMTMuNiA1MS43LTM0LjVsMTAuNS0yNS4yIDQ5LjMgMTA5LjVjMy44IDguNSAxMi4xIDE0IDIxLjQgMTQuMXMxNy44LTUgMjItMTMuM0wzMjAgMjUzLjdsMS43IDMuNGM5LjUgMTkgMjguOSAzMSA1MC4xIDMxSDQ3Ni4zYy0zLjcgNC4zLTcuNyA4LjUtMTEuOSAxMi40TDI4My43IDQ2OS4xYy03LjUgNy0xNy40IDEwLjktMjcuNyAxMC45cy0yMC4yLTMuOS0yNy43LTEwLjl6TTUwMy43IDI0MGgtMTMyYy0zIDAtNS44LTEuNy03LjItNC40bC0yMy4yLTQ2LjNjLTQuMS04LjEtMTIuNC0xMy4zLTIxLjUtMTMuM3MtMTcuNCA1LjEtMjEuNSAxMy4zbC00MS40IDgyLjhMMjA1LjkgMTU4LjJjLTMuOS04LjctMTIuNy0xNC4zLTIyLjItMTQuMXMtMTguMSA1LjktMjEuOCAxNC44bC0zMS44IDc2LjNjLTEuMiAzLTQuMiA0LjktNy40IDQuOUgxNmMtMi42IDAtNSAuNC03LjMgMS4xQzMgMjI1LjIgMCAyMDguMiAwIDE5MC45di01LjhjMC02OS45IDUwLjUtMTI5LjUgMTE5LjQtMTQxQzE2NSAzNi41IDIxMS40IDUxLjQgMjQ0IDg0bDEyIDEyIDEyLTEyYzMyLjYtMzIuNiA3OS00Ny41IDEyNC42LTM5LjlDNDYxLjUgNTUuNiA1MTIgMTE1LjIgNTEyIDE4NS4xdjUuOGMwIDE2LjktMi44IDMzLjUtOC4zIDQ5LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlMNDY0LjQgMzAwLjRjMzAuNC0yOC4zIDQ3LjYtNjggNDcuNi0xMDkuNXYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVsaWNvcHRlclN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDUuMyAyMjRINTEwQzQ5NS42IDEwOC4yIDQwMy44IDE2LjQgMjg4IDJWNjYuN0MzNjguNCA4MC4xIDQzMS45IDE0My42IDQ0NS4zIDIyNHpNNTEwIDI4OEg0NDUuM0M0MzEuOSAzNjguNCAzNjguNCA0MzEuOSAyODggNDQ1LjRWNTEwYzExNS44LTE0LjQgMjA3LjYtMTA2LjIgMjIyLTIyMnpNMiAyODhDMTYuNCA0MDMuOCAxMDguMiA0OTUuNiAyMjQgNTEwVjQ0NS40QzE0My42IDQzMS45IDgwLjEgMzY4LjQgNjYuNyAyODhIMnptMC02NEg2Ni43QzgwLjEgMTQzLjYgMTQzLjYgODAuMSAyMjQgNjYuN1YyQzEwOC4yIDE2LjQgMTYuNCAxMDguMiAyIDIyNHptMjA2LTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI4OGg5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NEgyMDhWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWxpY29wdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0djY0aDMyYzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwdjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM4NCAzMjBjLTIwLjEgMC0zOS4xLTkuNS01MS4yLTI1LjZsLTcxLjQtOTUuMmMtMy41LTQuNy04LjMtOC4zLTEzLjctMTAuNUw0Ny4yIDE5OC4xYy05LjUtMy44LTE2LjctMTItMTkuMi0yMkw1IDgzLjlDMi40IDczLjggMTAuMSA2NCAyMC41IDY0SDQ4YzEwLjEgMCAxOS42IDQuNyAyNS42IDEyLjhMMTEyIDEyOEgzMjBWNjRIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMzg0IDMyMEg1MTJWMjg4YzAtNTMtNDMtOTYtOTYtOTZIMzg0VjMyMHpNNjMwLjYgNDI1LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTMuOSAzLjljLTI0IDI0LTU2LjYgMzcuNS05MC41IDM3LjVIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDUzNi4yYzE3IDAgMzMuMy02LjcgNDUuMy0xOC43bDMuOS0zLjljMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlbG1ldFNhZmV0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIuMyA5OS42YzAgNS42LTQuNSAxMC4xLTEwLjEgMTAuMWMtMy42IDAtNy0xLjktOC44LTUuMUwxNTcuMSA4N0M4MyAxMjMuNSAzMiAxOTkuOCAzMiAyODh2NjRINTQ0bDAtNjYuNGMtLjktODcuMi01MS43LTE2Mi40LTEyNS4xLTE5OC42bC00OCA4My45Yy0xLjggMy4yLTUuMiA1LjEtOC44IDUuMWMtNS42IDAtMTAuMS00LjUtMTAuMS0xMC4xVjY2LjMgNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMjU2ek0xNi42IDM4NEM3LjQgMzg0IDAgMzkxLjQgMCA0MDAuNmMwIDQuNyAyIDkuMiA1LjggMTEuOUMyNy41IDQyOC40IDExMS44IDQ4MCAyODggNDgwczI2MC41LTUxLjYgMjgyLjItNjcuNWMzLjgtMi44IDUuOC03LjIgNS44LTExLjljMC05LjItNy40LTE2LjYtMTYuNi0xNi42SDE2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlbG1ldFVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3OS41IDIyNEM0NzEuMiA5OC45IDM2Ny4yIDAgMjQwIDBDMTA3LjUgMCAwIDEwNy41IDAgMjQwdjU2LjNDMCAzNDQuOCAzOS4yIDM4NCA4Ny43IDM4NEgyMDBoMTQuOUwzNDMuNSA1MDUuNGM0LjUgNC4yIDEwLjQgNi42IDE2LjUgNi42aDk2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM2OS41bC0xLjUtMS41VjI4OGg4MCAzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtLjV6TTMyMCA0MTcuMmwtNzgtNzMuN0wyNzQuNCAyODhIMzIwVjQxNy4yek0yODUuMyAxMDMuMWwzNC43IDUyVjExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djk2YzAgNy4xLTQuNiAxMy4zLTExLjQgMTUuM3MtMTQtLjYtMTcuOS02LjRsLTM0LjctNTJWMjA4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjExMmMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6TTE2MCAxMTJ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlnaGxpZ2h0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE1IDMxNWwxNTguNC0yMTVMNDQ0LjEgNzAuNiAyMjkgMjI5IDMxNSAzMTV6bS0xODcgNWwwIDBWMjQ4LjNjMC0xNS4zIDcuMi0yOS42IDE5LjUtMzguNkw0MjAuNiA4LjRDNDI4IDIuOSA0MzcgMCA0NDYuMiAwYzExLjQgMCAyMi40IDQuNSAzMC41IDEyLjZsNTQuOCA1NC44YzguMSA4LjEgMTIuNiAxOSAxMi42IDMwLjVjMCA5LjItMi45IDE4LjItOC40IDI1LjZMMzM0LjQgMzk2LjVjLTkgMTIuMy0yMy40IDE5LjUtMzguNiAxOS41SDIyNGwtMjUuNCAyNS40Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtNTAuNy01MC43Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM0wxMjggMzIwek03IDQ2Ni4zbDYzLTYzIDcwLjYgNzAuNi0zMSAzMWMtNC41IDQuNS0xMC42IDctMTcgN0gyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR2LTQuN2MwLTYuNCAyLjUtMTIuNSA3LTE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaWxsQXZhbGFuY2hlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS43IDQwMS45YzM0LjIgMjMuMSA4MS4xIDE5LjUgMTExLjQtMTAuOGMzNC40LTM0LjQgMzQuNC05MC4xIDAtMTI0LjRjLTI3LjgtMjcuOC02OS41LTMzLjEtMTAyLjYtMTZjLTExLjggNi4xLTE2LjQgMjAuNi0xMC4zIDMyLjNzMjAuNiAxNi40IDMyLjMgMTAuM2MxNS4xLTcuOCAzNC01LjMgNDYuNiA3LjNjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZzLTQwLjkgMTUuNi01Ni42IDBsLTgxLjctODEuN0M0MDEuMiAyNjEuMyA0MTYgMjM2LjQgNDE2IDIwOGMwLTMzLjktMjEuMS02Mi45LTUwLjktNzQuNWMxLjktNi44IDIuOS0xNCAyLjktMjEuNWMwLTQ0LjItMzUuOC04MC04MC04MGMtMjcuMyAwLTUxLjUgMTMuNy02NS45IDM0LjZDMjE2LjMgNDYuNiAxOTcuOSAzMiAxNzYgMzJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4YzAgNCAuNSA3LjkgMS40IDExLjZMNDM5LjcgNDAxLjl6TTQ4MCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0wIDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTY4LjMgODdDNDMuMSA2MS44IDAgNzkuNyAwIDExNS4zVjQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEgzOTYuN2MzNS42IDAgNTMuNS00My4xIDI4LjMtNjguM0w2OC4zIDg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaWxsUm9ja3NsaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Mi40IDEwMy44bDI3IDQ4YzIuOCA1IDguMiA4LjIgMTMuOSA4LjJsNTMuMyAwYzUuOCAwIDExLjEtMy4xIDEzLjktOC4ybDI3LTQ4YzIuNy00LjkgMi43LTEwLjggMC0xNS43bC0yNy00OGMtMi44LTUtOC4yLTguMi0xMy45LTguMkgyOTMuNGMtNS44IDAtMTEuMSAzLjEtMTMuOSA4LjJsLTI3IDQ4Yy0yLjcgNC45LTIuNyAxMC44IDAgMTUuN3pNNjguMyA4N0M0My4xIDYxLjggMCA3OS43IDAgMTE1LjNWNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwSDM5Ni43YzM1LjYgMCA1My41LTQzLjEgMjguMy02OC4zTDY4LjMgODd6TTUwNC4yIDQwMy42YzQuOSAyLjcgMTAuOCAyLjcgMTUuNyAwbDQ4LTI3YzUtMi44IDguMi04LjIgOC4yLTEzLjlWMzA5LjRjMC01LjgtMy4xLTExLjEtOC4yLTEzLjlsLTQ4LTI3Yy00LjktMi43LTEwLjgtMi43LTE1LjcgMGwtNDggMjdjLTUgMi44LTguMiA4LjItOC4yIDEzLjl2NTMuM2MwIDUuOCAzLjEgMTEuMSA4LjIgMTMuOWw0OCAyN3pNMTkyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTM4NCAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXBwbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTcuMiAxNy4yYzEuOS0uMSAzLjktLjIgNS44LS4yaDMyYzExLjIgMCAyMS45IDIuMyAzMS42IDYuNUw1NDMgNTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45TDU2NCAxMDEuOWM3LjYgMTIuMiAxMiAyNi43IDEyIDQyLjFjMCAxMC4yIDcuNCAxOC44IDE2LjcgMjNjMjcuOSAxMi41IDQ3LjMgNDAuNSA0Ny4zIDczYzAgMjYuMi0xMi42IDQ5LjQtMzIgNjR2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDU2MGMtOC44IDAtMTYtNy4yLTE2LTE2VjMyMEg0ODB2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDQzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjMxOC40Yy0xMS44LTIuNC0yMi43LTcuNC0zMi0xNC40Yy0xLjUtMS4xLTIuOS0yLjMtNC4zLTMuNWMtMTctMTQuNy0yNy43LTM2LjQtMjcuNy02MC41YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2YzAgNDQuNyAyNi4yIDgzLjIgNjQgMTAxLjJWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzcyYy0xOS44IDcuNy00MS40IDEyLTY0IDEycy00NC4yLTQuMy02NC0xMnY3NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzI5LjFMNDUuOSAzNjkuN2MtNS40IDEyLjEtMTkuNiAxNy42LTMxLjcgMTIuMlMtMy4zIDM2Mi40IDIuMSAzNTAuM0wyNCAzMDAuOWM1LjMtMTEuOSA4LTI0LjcgOC0zNy43QzMyIDE1NS43IDExNy4yIDY4IDIyMy44IDY0LjFsLjItLjFoNy4ySDI1NmgzMmM0MS43IDAgODMuNCAxMi4xIDExNy4yIDI1LjdjMS43LTEuOCAzLjUtMy42IDUuMy01LjJMNDA3IDgxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXptNzMgMTg1YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTg4IDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpNNDgwIDE0NGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvY2tleVB1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDI1NkMxMTQuNiAyNTYgMCAyMTMgMCAxNjBzMTE0LjYtOTYgMjU2LTk2czI1NiA0MyAyNTYgOTZzLTExNC42IDk2LTI1NiA5NnptMTkyLjMgMS44YzI0LjctOS4zIDQ2LjktMjEgNjMuNy0zNS42VjM1MmMwIDUzLTExNC42IDk2LTI1NiA5NlMwIDQwNSAwIDM1MlYyMjIuM2MxNi44IDE0LjYgMzkgMjYuMyA2My43IDM1LjZDMTE0LjUgMjc2LjkgMTgyLjUgMjg4IDI1NiAyODhzMTQxLjUtMTEuMSAxOTIuMy0zMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb2xseUJlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04MCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTI3Ni44IDM4My44YzEgLjEgMi4xIC4yIDMuMiAuMmMzOS44IDAgNzIgMzIuMiA3MiA3MnYyMi43YzAgMTYuNCAxNiAyNy45IDMxLjYgMjIuOGwxMi44LTQuM2MxOC02IDM3LjMtNi41IDU1LjYtMS41bDE5LjQgNS4zYzE3LjkgNC45IDM0LjQtMTEuNiAyOS41LTI5LjVMNDk1LjYgNDUyYy01LTE4LjMtNC40LTM3LjYgMS41LTU1LjZsNC4zLTEyLjhjNS4yLTE1LjUtNi40LTMxLjYtMjIuOC0zMS42Yy0zNC42IDAtNjIuNy0yOC4xLTYyLjctNjIuN3YtMzJjMC0xNi40LTE2LTI3LjktMzEuNi0yMi44bC0xMi44IDQuM2MtMTggNi0zNy4zIDYuNS01NS42IDEuNWwtMjkuNi04LjFjLTIuOS0uOC01LjktMS04LjctLjdjNC4yIDkuNyA1LjggMjAuOCAzLjcgMzIuM0wyNzUgMjk4LjdjLTEuNSA4LjQtMS40IDE3IC41IDI1LjNsNS4zIDIzLjljMi44IDEyLjcgMS4xIDI1LjItNCAzNS45ek0xMjcuNiAyMzQuNWMtMTUuNS01LjItMzEuNiA2LjQtMzEuNiAyMi44djMyQzk2IDMyMy45IDY3LjkgMzUyIDMzLjMgMzUyYy0xNi40IDAtMjcuOSAxNi0yMi44IDMxLjZsNC4zIDEyLjhjNiAxOCA2LjUgMzcuMyAxLjUgNTUuNmwtNS4zIDE5LjRDNi4yIDQ4OS40IDIyLjYgNTA1LjggNDAuNSA1MDFMNjAgNDk1LjZjMTguMy01IDM3LjYtNC41IDU1LjYgMS41bDEyLjggNC4zYzE1LjUgNS4yIDMxLjYtNi40IDMxLjYtMjIuOHYtMzJjMC0zNC42IDI4LjEtNjIuNyA2Mi43LTYyLjdjMTYuNCAwIDI3LjktMTYgMjIuOC0zMS42bC00LjMtMTIuOGMtNi0xOC02LjUtMzcuMy0xLjUtNTUuNmw1LjMtMTkuNGM0LjktMTcuOS0xMS42LTM0LjQtMjkuNS0yOS41TDE5NiAyNDAuNGMtMTguMyA1LTM3LjYgNC40LTU1LjYtMS41bC0xMi44LTQuM3pNMzg0IDE0NGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3JzZUhlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY0VjMxNi45YzAtMTA4LjQgNjguMy0yMDUuMSAxNzAuNS0yNDEuM0w0MDQuMiAxNS41QzQyNS42IDcuOSA0NDggMjMuOCA0NDggNDYuNGMwIDExLTUuNSAyMS4yLTE0LjYgMjcuM0w0MDAgOTZjNDguMSAwIDkxLjIgMjkuOCAxMDguMSA3NC45bDQ4LjYgMTI5LjVjMTEuOCAzMS40IDQuMSA2Ni44LTE5LjYgOTAuNWMtMTYgMTYtMzcuOCAyNS4xLTYwLjUgMjUuMWgtMy40Yy0yNi4xIDAtNTAuOS0xMS42LTY3LjYtMzEuN2wtMzIuMy0zOC43Yy0xMS43IDQuMS0yNC4yIDYuNC0zNy4zIDYuNGwtLjEgMCAwIDBjLTYuMyAwLTEyLjUtLjUtMTguNi0xLjVjLTMuNi0uNi03LjItMS40LTEwLjctMi4zbDAgMGMtMjguOS03LjgtNTMuMS0yNi44LTY3LjgtNTIuMmMtNC40LTcuNi0xNC4yLTEwLjMtMjEuOS01LjhzLTEwLjMgMTQuMi01LjggMjEuOWMyNCA0MS41IDY4LjMgNzAgMTE5LjMgNzEuOWw0Ny4yIDcwLjhjNCA2LjEgNi4yIDEzLjIgNi4yIDIwLjRjMCAyMC4zLTE2LjUgMzYuOC0zNi44IDM2LjhIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHpNMzkyIDIyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAyMzguMVYxNjBoMTZsOS44IDE5LjZjMTIuNSAyNS4xIDQyLjIgMzYuNCA2OC4zIDI2YzIwLjUtOC4yIDMzLjktMjggMzMuOS01MC4xVjgwYzAtMTkuMS04LjQtMzYuMy0yMS43LTQ4SDU2MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg0ODAgNDQ4QzM3Ny4zIDAgMzIwIDU3LjMgMzIwIDEyOEgyMjQgMjAzLjIgMTQ4LjhjLTMwLjcgMC01Ny42IDE2LjMtNzIuNSA0MC44QzMzLjIgMTc0LjUgMCAyMTEuNCAwIDI1NnY1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI1NmMwLTEzLjQgNi42LTI1LjIgMTYuNy0zMi41YzEuNiAxMyA2LjMgMjUuNCAxMy42IDM2LjRsMjguMiA0Mi40YzguMyAxMi40IDYuNCAyOC43LTEuMiA0MS42Yy0xNi41IDI4LTIwLjYgNjIuMi0xMCA5My45bDE3LjUgNTIuNGM0LjQgMTMuMSAxNi42IDIxLjkgMzAuNCAyMS45aDMzLjdjMjEuOCAwIDM3LjMtMjEuNCAzMC40LTQyLjFsLTIwLjgtNjIuNWMtMi4xLTYuNC0uNS0xMy40IDQuMy0xOC4ybDEyLjctMTIuN2MxMy4yLTEzLjIgMjAuNi0zMS4xIDIwLjYtNDkuN2MwLTIuMy0uMS00LjYtLjMtNi45bDg0IDI0YzQuMSAxLjIgOC4yIDIuMSAxMi4zIDIuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzE1LjdjMTkuMi0xOS4yIDMxLjUtNDUuNyAzMi03NS43aDB2LTEuOXpNNDk2IDY0YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9zcGl0YWxVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjI1NkgxNDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMHY2NEgxNDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMHY4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyNjUuOWMtNi4zLTEwLjItOS45LTIyLjItOS45LTM1LjFjMC00Ni45IDI1LjgtODcuOCA2NC0xMDkuMlYyNzEuOCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNMTUyIDY0aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYyNGgyNGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDE4NHYyNGMwIDguOC03LjIgMTYtMTYgMTZIMTUyYy04LjggMC0xNi03LjItMTYtMTZWMTUySDExMmMtOC44IDAtMTYtNy4yLTE2LTE2VjEyMGMwLTguOCA3LjItMTYgMTYtMTZoMjRWODBjMC04LjggNy4yLTE2IDE2LTE2ek01MTIgMjcyYTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHpNMjg4IDQ3Ny4xYzAgMTkuMyAxNS42IDM0LjkgMzQuOSAzNC45SDU0MS4xYzE5LjMgMCAzNC45LTE1LjYgMzQuOS0zNC45YzAtNTEuNC00MS43LTkzLjEtOTMuMS05My4xSDM4MS4xYy01MS40IDAtOTMuMSA0MS43LTkzLjEgOTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDQwMGMyNi41IDAgNDggMjEuNSA0OCA0OFY1MTJIMzY4VjQzMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY4MEgxOTJWNDh6TTQ4IDk2SDE2MFY1MTJINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjMyMEg4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgwVjIyNEg4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgwVjE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHptNTQ0IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhINTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDgwdjY0SDU2MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4MFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDgwVjk2SDU5MnpNMzEyIDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2MjRIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDI0djI0YzAgOC44IDcuMiAxNiAxNiAxNmgxNmM4LjggMCAxNi03LjIgMTYtMTZWMTUyaDI0YzguOCAwIDE2LTcuMiAxNi0xNlYxMjBjMC04LjgtNy4yLTE2LTE2LTE2SDM0NFY4MGMwLTguOC03LjItMTYtMTYtMTZIMzEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3RUdWJQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djUuMmMwIDM0IDE0LjQgNjYuNCAzOS43IDg5LjJsMTYuNCAxNC44YzE1LjIgMTMuNyAyMy44IDMzLjEgMjMuOCA1My41VjIwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE4Ni44YzAtMzQtMTQuNC02Ni40LTM5LjctODkuMkwyOTUuOCA4Mi44QzI4MC43IDY5LjEgMjcyIDQ5LjcgMjcyIDI5LjJWMjR6TTAgMzIwdjE2VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDI3Ny4zYy0xMy44IDAtMjcuMy00LjUtMzguNC0xMi44bC04NS4zLTY0QzEzNyAxNjYuNyAxMTYuOCAxNjAgOTYgMTYwYy01MyAwLTk2IDQzLTk2IDk2djY0em0xMjggMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTgwLTE2YzguOCAwIDE2IDcuMiAxNiAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em0xMTIgMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTgwLTE2YzguOCAwIDE2IDcuMiAxNiAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2ek0zNjAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NS4yYzAgMzQgMTQuNCA2Ni40IDM5LjcgODkuMmwxNi40IDE0LjhjMTUuMiAxMy43IDIzLjggMzMuMSAyMy44IDUzLjVWMjAwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTg2LjhjMC0zNC0xNC40LTY2LjQtMzkuNy04OS4yTDQwNy44IDgyLjhDMzkyLjcgNjkuMSAzODQgNDkuNyAzODQgMjkuMlYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNNjQgMTI4QTY0IDY0IDAgMSAwIDY0IDBhNjQgNjQgMCAxIDAgMCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdGRvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguNiAyMy40YzMxLjIgMzEuMiAzMS4yIDgxLjkgMCAxMTMuMWwtMzUyIDM1MmMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwcy0zMS4yLTgxLjkgMC0xMTMuMWwzNTItMzUyYzMxLjItMzEuMiA4MS45LTMxLjIgMTEzLjEgMHpNNDQzLjMgOTIuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBjLTEyLjUgMTIuNS0yMy44IDE1LjEtMzcuNSAxNy42bC0yLjUgLjRjLTEzLjggMi41LTMxLjYgNS42LTQ4IDIyYy0xNi43IDE2LjctMjAuOSAzNi0yNC4xIDUwLjlsMCAwdjBsLS4yIDFjLTMuNCAxNS42LTYgMjYuNC0xNS43IDM2LjFzLTIwLjUgMTIuMy0zNi4xIDE1LjdsLTEgLjJjLTE0LjkgMy4yLTM0LjIgNy40LTUwLjkgMjQuMXMtMjAuOSAzNi0yNC4xIDUwLjlsLS4yIDFjLTMuNCAxNS42LTYgMjYuNC0xNS43IDM2LjFjLTkuMiA5LjItMTggMTAuOC0zMi43IDEzLjRsMCAwLS45IC4yYy0xNS42IDIuOC0zNC45IDYuOS01NC40IDI2LjRjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGMxMi41LTEyLjUgMjMuOC0xNS4xIDM3LjUtMTcuNmwyLjUtLjRjMTMuOC0yLjUgMzEuNi01LjYgNDgtMjJjMTYuNy0xNi43IDIwLjktMzYgMjQuMS01MC45bC4yLTFjMy40LTE1LjYgNi0yNi40IDE1LjctMzYuMXMyMC41LTEyLjMgMzYuMS0xNS43bDEtLjJjMTQuOS0zLjIgMzQuMi03LjQgNTAuOS0yNC4xczIwLjktMzYgMjQuMS01MC45bC4yLTFjMy40LTE1LjYgNi0yNi40IDE1LjctMzYuMWM5LjItOS4yIDE4LTEwLjggMzIuNy0xMy40bC45LS4yYzE1LjYtMi44IDM0LjktNi45IDU0LjQtMjYuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpNMTkxLjIgNDc5LjJsMjg4LTI4OEw0OTUgMjA3YzEwLjkgMTAuOSAxNyAyNS42IDE3IDQxcy02LjEgMzAuMS0xNyA0MUwyODkgNDk1Yy0xMC45IDEwLjktMjUuNiAxNy00MSAxN3MtMzAuMS02LjEtNDEtMTdsLTE1LjgtMTUuOHpNMTcgMzA1QzYuMSAyOTQuMSAwIDI3OS40IDAgMjY0czYuMS0zMC4xIDE3LTQxTDIyMyAxN0MyMzMuOSA2LjEgMjQ4LjYgMCAyNjQgMHMzMC4xIDYuMSA0MSAxN2wxNS44IDE1LjgtMjg4IDI4OEwxNyAzMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdGVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMlY0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzA0VjQ2NGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY0OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlY2NEMxNC4zIDY0IDAgNDkuNyAwIDMyem05NiA4MHYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ6TTI0MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNDB6bTExMiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZ6TTExMiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMTEyem0xMTIgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzY4ek0zMjggMzg0YzEzLjMgMCAyNC4zLTEwLjkgMjEtMjMuOGMtMTAuNi00MS41LTQ4LjItNzIuMi05My03Mi4ycy04Mi41IDMwLjctOTMgNzIuMmMtMy4zIDEyLjggNy44IDIzLjggMjEgMjMuOEgzMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc0VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0Vjc1YzAgNDIuNCAxNi45IDgzLjEgNDYuOSAxMTMuMUwxNDYuNyAyNTYgNzguOSAzMjMuOUM0OC45IDM1My45IDMyIDM5NC42IDMyIDQzN3YxMWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NCAzMjBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWNDM3YzAtNDIuNC0xNi45LTgzLjEtNDYuOS0xMTMuMUwyMzcuMyAyNTZsNjcuOS02Ny45YzMwLTMwIDQ2LjktNzAuNyA0Ni45LTExMy4xVjY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMCA2NCAzMnpNOTYgNzVWNjRIMjg4Vjc1YzAgMjUuNS0xMC4xIDQ5LjktMjguMSA2Ny45TDE5MiAyMTAuN2wtNjcuOS02Ny45QzEwNi4xIDEyNC45IDk2IDEwMC40IDk2IDc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VyZ2xhc3NIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyUzE0LjMgNjQgMzIgNjRWNzVjMCA0Mi40IDE2LjkgODMuMSA0Ni45IDExMy4xTDE0Ni43IDI1NiA3OC45IDMyMy45QzQ4LjkgMzUzLjkgMzIgMzk0LjYgMzIgNDM3djExYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0IDMyMGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlY0MzdjMC00Mi40LTE2LjktODMuMS00Ni45LTExMy4xTDIzNy4zIDI1Nmw2Ny45LTY3LjljMzAtMzAgNDYuOS03MC43IDQ2LjktMTEzLjFWNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwIDY0IDMyek05NiA3NVY2NEgyODhWNzVjMCAxOS01LjYgMzcuNC0xNiA1M0gxMTJjLTEwLjMtMTUuNi0xNi0zNC0xNi01M3ptMTYgMzA5YzMuNS01LjMgNy42LTEwLjMgMTIuMS0xNC45TDE5MiAzMDEuM2w2Ny45IDY3LjljNC42IDQuNiA4LjYgOS42IDEyLjEgMTQuOUgxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc1N0YXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyUzE0LjMgNjQgMzIgNjRWNzVjMCA0Mi40IDE2LjkgODMuMSA0Ni45IDExMy4xTDE0Ni43IDI1NiA3OC45IDMyMy45QzQ4LjkgMzUzLjkgMzIgMzk0LjYgMzIgNDM3djExYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0IDMyMGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlY0MzdjMC00Mi40LTE2LjktODMuMS00Ni45LTExMy4xTDIzNy4zIDI1Nmw2Ny45LTY3LjljMzAtMzAgNDYuOS03MC43IDQ2LjktMTEzLjFWNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwIDY0IDMyek0yODggNDM3djExSDk2VjQzN2MwLTI1LjUgMTAuMS00OS45IDI4LjEtNjcuOUwxOTIgMzAxLjNsNjcuOSA2Ny45YzE4IDE4IDI4LjEgNDIuNCAyOC4xIDY3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEg2NCAzMjBoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJWNzVjMCA0Mi40LTE2LjkgODMuMS00Ni45IDExMy4xTDIzNy4zIDI1Nmw2Ny45IDY3LjljMzAgMzAgNDYuOSA3MC43IDQ2LjkgMTEzLjF2MTFjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwIDY0IDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjQzN2MwLTQyLjQgMTYuOS04My4xIDQ2LjktMTEzLjFMMTQ2LjcgMjU2IDc4LjkgMTg4LjFDNDguOSAxNTguMSAzMiAxMTcuNCAzMiA3NVY2NEMxNC4zIDY0IDAgNDkuNyAwIDMyek05NiA2NFY3NWMwIDI1LjUgMTAuMSA0OS45IDI4LjEgNjcuOUwxOTIgMjEwLjdsNjcuOS02Ny45YzE4LTE4IDI4LjEtNDIuNCAyOC4xLTY3LjlWNjRIOTZ6bTAgMzg0SDI4OFY0MzdjMC0yNS41LTEwLjEtNDkuOS0yOC4xLTY3LjlMMTkyIDMwMS4zbC02Ny45IDY3LjljLTE4IDE4LTI4LjEgNDIuNC0yOC4xIDY3Ljl2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlQ2hpbW5leUNyYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS44IDI1NS41YzAgMTgtMTUgMzIuMS0zMiAzMi4xaC0zMmwuNyAxNjAuMmMuMiAzNS41LTI4LjUgNjQuMy02NCA2NC4zSDMyNi40TDI4OCA0NDhsODAuOC02Ny4zYzcuOC02LjUgNy42LTE4LjYtLjQtMjQuOUwyNTAuNiAyNjMuMmMtMTQuNi0xMS41LTMzLjggNy0yMi44IDIyTDI4OCAzNjhsLTg1LjUgNzEuMmMtNi4xIDUtNy41IDEzLjgtMy41IDIwLjVMMjMwLjQgNTEySDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNDE2IDEwMC43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE4NWw1Mi44IDQ2LjRjOCA3IDEyIDE1IDExIDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNoaW1uZXlNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS44IDI1NS41YzAgMTgtMTUgMzIuMS0zMiAzMi4xaC0zMmwuNyAxNjAuMmMuMiAzNS41LTI4LjUgNjQuMy02NCA2NC4zSDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNDE2IDEwMC43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE4NWw1Mi44IDQ2LjRjOCA3IDEyIDE1IDExIDI0ek0yNzIgMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwaDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VDaGltbmV5VXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMNTEyIDE4NVY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjM2LjdMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFoMzJWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OC41YzM1LjUgMCA2NC4yLTI4LjggNjQtNjQuM2wtLjctMTYwLjJoMzJ6TTI4OCAxNjBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTE3NiA0MDBjMC00NC4yIDM1LjgtODAgODAtODBoNjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2SDE5MmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNoaW1uZXlXaW5kb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYy4yIDM1LjUtMjguNSA2NC4zLTY0IDY0LjNIMTI4LjFjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w0MTYgMTAwLjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTg1bDUyLjggNDYuNGM4IDcgMTIgMTUgMTEgMjR6TTI0OCAxOTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0djgwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlQ2hpbW5leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMNTEyIDE4NVY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjM2LjdMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFoMzJ2NjkuN2MtLjEgLjktLjEgMS44LS4xIDIuOFY0NzJjMCAyMi4xIDE3LjkgNDAgNDAgNDBoMTZjMS4yIDAgMi40LS4xIDMuNi0uMmMxLjUgLjEgMyAuMiA0LjUgLjJIMTYwaDI0YzIyLjEgMCA0MC0xNy45IDQwLTQwVjQ0OCAzODRjMC0xNy43IDE0LjMtMzIgMzItMzJoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjQgMjRjMCAyMi4xIDE3LjkgNDAgNDAgNDBoMjQgMzIuNWMxLjQgMCAyLjggMCA0LjItLjFjMS4xIC4xIDIuMiAuMSAzLjMgLjFoMTZjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDU1LjhjLjMtMi42IC41LTUuMyAuNS04LjFsLS43LTE2MC4yaDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGwuNyAwek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGwuNyAwek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGwuNyAwek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w1MTguNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VDcmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFoMzJWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDIzMC40bC0zMS4zLTUyLjJjLTQuMS02LjgtMi42LTE1LjUgMy41LTIwLjVMMjg4IDM2OGwtNjAuMi04Mi44Yy0xMC45LTE1IDguMi0zMy41IDIyLjgtMjJsMTE3LjkgOTIuNmM4IDYuMyA4LjIgMTguNCAuNCAyNC45TDI4OCA0NDhsMzguNCA2NEg0NDguNWMzNS41IDAgNjQuMi0yOC44IDY0LTY0LjNsLS43LTE2MC4yaDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDM1MC4xbDAgMS45SDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQgMjRjMCAyMi4xLTE3LjkgNDAtNDAgNDBIMTYwIDEyOC4xYy0xLjUgMC0zLS4xLTQuNS0uMmMtMS4yIC4xLTIuNCAuMi0zLjYgLjJIMTA0Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYzNjBjMC0uOSAwLTEuOSAuMS0yLjhWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDQ0Ny4zIDEyOC4xYy0xMi4zLTEtMjUgMy0zNC44IDExLjdjLTM1LjQgMzEuNi02NS42IDY3LjctODcuMyAxMDIuOEMzMDQuMyAyNzYuNSAyODggMzE0LjkgMjg4IDM1MC4xek00ODAgNTEyYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MGMwLTc2LjcgNjIuNS0xNDQuNyAxMDcuMi0xNzkuNGM1LTMuOSAxMC45LTUuOCAxNi44LTUuOGM3LjktLjEgMTYgMy4xIDIyIDkuMmw0NiA0NiAxMS4zLTExLjNjMTEuNy0xMS43IDMwLjYtMTIuNyA0Mi4zLTFDNjI0LjUgMjY4IDY0MCAzMjAuMiA2NDAgMzUyYzAgODguNC03MS42IDE2MC0xNjAgMTYwem02NC0xMTEuOGMwLTM2LjUtMzctNzMtNTQuOC04OC40Yy01LjQtNC43LTEzLjEtNC43LTE4LjUgMEM0NTMgMzI3LjEgNDE2IDM2My42IDQxNiA0MDAuMmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjE5MiA1MTJoNjRWMTkySDYyNGM4LjggMCAxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2SDUxMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNDE2IDE1OUwyNzYuOCAzOS43Yy0xMi0xMC4zLTI5LjctMTAuMy00MS43IDBsLTIyNCAxOTJDMSAyNDAuNC0yLjcgMjU0LjUgMiAyNjcuMVMxOC42IDI4OCAzMiAyODhINjRWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NC43bC4yIDBoLTFWMTU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUZsb29kV2F0ZXJDaXJjbGVBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNDRBMTQ0IDE0NCAwIDEgMCAwIDE0NGExNDQgMTQ0IDAgMSAwIDI4OCAwek0xNDAuNyA3Ni43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDU2IDU2YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC01NiA1NmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkwxNjkuNCAxNjBIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODkuNEwxNDAuNyA5OS4zYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnpNMzIwIDE0NGMwIDU3LjMtMjcuNCAxMDguMi02OS44IDE0MC4zYzExLjgtMy42IDIzLTkuNCAzMy0xNi4yYzIyLjEtMTUuNSA1MS42LTE1LjUgNzMuNyAwYzE4LjQgMTIuNyAzOS42IDIwLjMgNTkuMiAyMC4zYzE5IDAgNDEuMi03LjkgNTkuMi0yMC4zYzIzLjgtMTYuNyA1NS44LTE1LjQgNzguMSAzLjRjMi4xIDEuNyA0LjIgMy4zIDYuNSA0LjlsLS4zLTg0LjRINTc2YzEzLjkgMCAyNi4xLTguOSAzMC40LTIyLjFzLS40LTI3LjYtMTEuNi0zNS44bC0xNzYtMTI4QzQwNy42LTIgMzkyLjQtMiAzODEuMiA2LjFMMzAxIDY0LjRjMTIuMSAyMy45IDE5IDUwLjkgMTkgNzkuNnptMTguNSAxNjUuOWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNzkgMzI1LjQgMjUxLjUgMzM2IDIyNCAzMzZjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxNTguNSAzODkuNyAxOTEgNDAwIDIyNCA0MDBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNiAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNS0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQ3MS40IDMyNS4yIDQ0Mi45IDMzNiA0MTYgMzM2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjF6bTAgMTEyYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI3OSA0MzcuNCAyNTEuNSA0NDggMjI0IDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFsMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzE1OC41IDUwMS43IDE5MSA1MTIgMjI0IDUxMmMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC42IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS40LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDcxLjQgNDM3LjIgNDQyLjkgNDQ4IDQxNiA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VGbG9vZFdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNi44IDYuMUMyOTUuNi0yIDI4MC40LTIgMjY5LjIgNi4xbC0xNzYgMTI4Yy0xMS4yIDguMi0xNS45IDIyLjYtMTEuNiAzNS44Uzk4LjEgMTkyIDExMiAxOTJoMTZ2NzNjMS43IDEgMy4zIDIgNC45IDMuMWMxOCAxMi40IDQwLjEgMjAuMyA1OS4yIDIwLjNjMjEuMSAwIDQyLTguNSA1OS4yLTIwLjNjMjIuMS0xNS41IDUxLjYtMTUuNSA3My43IDBjMTguNCAxMi43IDM5LjYgMjAuMyA1OS4yIDIwLjNjMTkgMCA0MS4yLTcuOSA1OS4yLTIwLjNjMS41LTEgMy0yIDQuNS0yLjlsLS4zLTczLjJINDY0YzEzLjkgMCAyNi4xLTguOSAzMC40LTIyLjFzLS40LTI3LjYtMTEuNi0zNS44bC0xNzYtMTI4ek0yNjkuNSAzMDkuOUMyNDcgMzI1LjQgMjE5LjUgMzM2IDE5MiAzMzZjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSAzODkuNyAxNTkgNDAwIDE5MiA0MDBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNS0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDMyNS4yIDQxMC45IDMzNiAzODQgMzM2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjFjLTExLjEtNy45LTI1LjktNy45LTM3IDB6TTM4NCA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNDcgNDM3LjQgMjE5LjUgNDQ4IDE5MiA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA1MDEuNyAxNTkgNTEyIDE5MiA1MTJjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTguMyA4LjVjMTIuMy0xMS4zIDMxLjItMTEuMyA0My40IDBsMjA4IDE5MmM2LjcgNi4yIDEwLjMgMTQuOCAxMC4zIDIzLjVIMzM2Yy0xOS4xIDAtMzYuMyA4LjQtNDggMjEuN1YyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmg2NFY0MTZIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OFYyNTZIMzJjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC4zcy0xLjYtMjYuMiA4LjEtMzUuMmwyMDgtMTkyek0zNTIgMzA0VjQ0OEg1NDRWMzA0SDM1MnptLTQ4LTE2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDU2MGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0NDhoMzJjOC44IDAgMTYgNy4yIDE2IDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDU0NCAzNTIgMzA0Yy0yNi41IDAtNDgtMjEuNS00OC00OGMwLTguOCA3LjItMTYgMTYtMTZoMzJWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ4MGMwIDExLjcgMy4xIDIyLjYgOC42IDMySDM5MmMtMjIuMSAwLTQwLTE3LjktNDAtNDBWNDQ4IDM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0IDI0YzAgMjIuMS0xNy45IDQwLTQwIDQwSDE2MCAxMjguMWMtMS41IDAtMy0uMS00LjUtLjJjLTEuMiAuMS0yLjQgLjItMy42IC4ySDEwNGMtMjIuMSAwLTQwLTE3LjktNDAtNDBWMzYwYzAtLjkgMC0xLjkgLjEtMi44VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w0OTAuNyAxNjYuM0M0NDcuMiAxODEuNyA0MTYgMjIzLjIgNDE2IDI3MnYyNC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40VjQ4MHpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZU1lZGljYWxDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzY4YzAgNTkuNSAyOS41IDExMi4xIDc0LjggMTQ0SDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTIyLjEgMTkzLjljLTguNS0xLjMtMTcuMy0xLjktMjYuMS0xLjljLTU0LjcgMC0xMDMuNSAyNC45LTEzNS44IDY0SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2em0zMiAwYTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIxMS4zLTQzLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDQ4MCAzODUuNGwtMjguNy0yOC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDQwIDQwYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDcyLTcyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZU1lZGljYWxDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzY4YzAgNTkuNSAyOS41IDExMi4xIDc0LjggMTQ0SDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTIyLjEgMTkzLjljLTguNS0xLjMtMTcuMy0xLjktMjYuMS0xLjljLTU0LjcgMC0xMDMuNSAyNC45LTEzNS44IDY0SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2ek00OTYgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wLTE5MmMtOC44IDAtMTYgNy4yLTE2IDE2djgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VNZWRpY2FsQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDM2OGMwIDU5LjUgMjkuNSAxMTIuMSA3NC44IDE0NEgxMjguMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDUyMi4xIDE5My45Yy04LjUtMS4zLTE3LjMtMS45LTI2LjEtMS45Yy01NC43IDAtMTAzLjUgMjQuOS0xMzUuOCA2NEgzMjBWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnpNNDk2IDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTIyLjYgMTQ0bDM2LjctMzYuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQ5NiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQ3My40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDk2IDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNTE4LjYgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZU1lZGljYWxGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMySDYyNGM4LjggMCAxNiA3LjIgMTYgMTZWMTc2YzAgOC44LTcuMiAxNi0xNiAxNkg1MTJWNTEySDQ0OFYxOTIgMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTI3Ni44IDM5LjdMNDE2IDE1OVY1MTJoMWwtLjIgMEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4SDMyYy0xMy40IDAtMjUuNC04LjMtMzAtMjAuOXMtMS0yNi43IDkuMi0zNS40bDIyNC0xOTJjMTItMTAuMyAyOS43LTEwLjMgNDEuNyAwek0yMjQgMjA4djQ4SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGg0OGM4LjggMCAxNi03LjIgMTYtMTZWMjcyYzAtOC44LTcuMi0xNi0xNi0xNkgyODhWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0My44IDI4Ny42YzE3IDAgMzItMTQgMzItMzIuMWMxLTktMy0xNy0xMS0yNEwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4LjVjMzUuNSAwIDY0LjItMjguOCA2NC02NC4zbC0uNy0xNjAuMmgzMnpNMjU2IDIwOGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzIwdjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMjBIMjA4Yy04LjggMC0xNi03LjItMTYtMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmg0OFYyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlU2lnbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Ny43IDguNWMtMTIuMy0xMS4zLTMxLjItMTEuMy00My40IDBsLTIwOCAxOTJjLTkuNCA4LjYtMTIuNyAyMi04LjUgMzRjODcuMSAyNS4zIDE1NS42IDk0LjIgMTgwLjMgMTgxLjZINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1NmgzMmMxMy4yIDAgMjUtOC4xIDI5LjgtMjAuM3MxLjYtMjYuMi04LjEtMzUuMmwtMjA4LTE5MnpNMjg4IDIwOGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkgzMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYyMDh6TTI0IDI1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGMxMDEuNiAwIDE4NCA4Mi40IDE4NCAxODRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTEyOC4xLTEwMy45LTIzMi0yMzItMjMyem04IDI1NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTAgMzc2YzAgMTMuMyAxMC43IDI0IDI0IDI0YzQ4LjYgMCA4OCAzOS40IDg4IDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC03NS4xLTYwLjktMTM2LTEzNi0xMzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZVRzdW5hbWkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAuOCAxMzYuNUMxMDQuOSA5My44IDE1Mi42IDY0IDIwOSA2NGMxNi45IDAgMzMuMSAyLjcgNDguMiA3LjdjMTYuOCA1LjUgMzQuOS0zLjYgNDAuNC0yMC40cy0zLjYtMzQuOS0yMC40LTQwLjRDMjU1LjggMy44IDIzMi44IDAgMjA5IDBDOTUuMiAwIDAgODggMCAyMDBjMCA5MS42IDUzLjUgMTcyLjEgMTQyLjIgMTk0LjFjMTMuNCAzLjggMjcuNSA1LjkgNDIuMiA1LjljLjcgMCAxLjQgMCAyLjEtLjFjMS44IDAgMy43IC4xIDUuNSAuMWwwIDBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNS0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDMyNS4yIDQxMC45IDMzNiAzODQgMzM2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjFjLTExLjEtNy45LTI1LjktNy45LTM3IDBjLTIyLjQgMTUuNS00OS45IDI2LjEtNzcuNCAyNi4xYzAgMC0uMSAwLS4xIDBjLTEyLjQgMC0yNC0xLjUtMzQuOS00LjNDMTIxLjYgMzIwLjIgOTYgMjg3IDk2IDI0OGMwLTQ4LjUgMzkuNS04OCA4OC40LTg4YzEzLjUgMCAyNi4xIDMgMzcuNSA4LjNjMTYgNy41IDM1LjEgLjYgNDIuNS0xNS41cy42LTM1LjEtMTUuNS00Mi41QzIyOS4zIDEwMS4xIDIwNy40IDk2IDE4NC40IDk2Yy00MCAwLTc2LjQgMTUuNC0xMDMuNiA0MC41em0yNTItMTguMWMtOC4xIDYtMTIuOCAxNS41LTEyLjggMjUuNlYyNjVjMS42IDEgMy4zIDIgNC44IDMuMWMxOC40IDEyLjcgMzkuNiAyMC4zIDU5LjIgMjAuM2MxOSAwIDQxLjItNy45IDU5LjItMjAuM2MyMy44LTE2LjcgNTUuOC0xNS4zIDc4LjEgMy40YzEwLjYgOC44IDI0LjIgMTUuNiAzNy4zIDE4LjZjNS44IDEuNCAxMS4yIDMuNCAxNi4yIDYuMmMuNy0yLjcgMS4xLTUuNSAxLjEtOC40bC0uNC0xNDRjMC0xMC00LjctMTkuNC0xMi43LTI1LjVsLTk1LjUtNzJjLTExLjQtOC42LTI3LjEtOC42LTM4LjUgMGwtOTYgNzJ6TTM4NCA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNDcgNDM3LjQgMjE5LjUgNDQ4IDE5MiA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA1MDEuNyAxNTkgNTEyIDE5MiA1MTJjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYy4yIDM1LjUtMjguNSA2NC4zLTY0IDY0LjNIMTI4LjFjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w1NjQuOCAyMzEuNWM4IDcgMTIgMTUgMTEgMjR6TTM1MiAyMjRhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwem0tOTYgOTZjLTQ0LjIgMC04MCAzNS44LTgwIDgwYzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2YzAtNDQuMi0zNS44LTgwLTgwLTgwSDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYzAgMi43LS4yIDUuNC0uNSA4LjFWNDcyYzAgMjIuMS0xNy45IDQwLTQwIDQwSDQ1NmMtMS4xIDAtMi4yIDAtMy4zLS4xYy0xLjQgLjEtMi44IC4xLTQuMiAuMUg0MTYgMzkyYy0yMi4xIDAtNDAtMTcuOS00MC00MFY0NDggMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQgMjRjMCAyMi4xLTE3LjkgNDAtNDAgNDBIMTYwIDEyOC4xYy0xLjUgMC0zLS4xLTQuNS0uMmMtMS4yIC4xLTIuNCAuMi0zLjYgLjJIMTA0Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYzNjBjMC0uOSAwLTEuOSAuMS0yLjhWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDU2NC44IDIzMS41YzggNyAxMiAxNSAxMSAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHJ5dm5pYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIxLjkgMTE2LjJDMTM4LjMgMTAzLjEgMTU4LjcgOTYgMTc5LjYgOTZIMjIzYzI3LjEgMCA0OSAyMS45IDQ5IDQ5YzAgMTEuNS00IDIyLjQtMTEuMSAzMUgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgxNTUuNWwtNTAuNiAyOC45Yy0xLjcgMS0zLjQgMi01LjEgMy4xSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDUyLjNjLTIuOCA5LjktNC4zIDIwLjQtNC4zIDMxYzAgNjIuNCA1MC42IDExMyAxMTMgMTEzaDQzLjRjMzUuNSAwIDcwLTEyLjEgOTcuNy0zNC4zTDMwOCA0NDFjMTMuOC0xMSAxNi0zMS4yIDUtNDVzLTMxLjItMTYtNDUtNWwtNS45IDQuN2MtMTYuNCAxMy4xLTM2LjcgMjAuMi01Ny43IDIwLjJIMTYxYy0yNy4xIDAtNDktMjEuOS00OS00OWMwLTExLjUgNC0yMi40IDExLjEtMzFIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIyOC41bDUwLjYtMjguOWMxLjctMSAzLjQtMiA1LjEtMy4xSDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMzEuN2MyLjgtMTAgNC4zLTIwLjQgNC4zLTMxYzAtNjIuNC01MC42LTExMy0xMTMtMTEzSDE3OS42Yy0zNS41IDAtNzAgMTIuMS05Ny43IDM0LjNMNzYgNzFjLTEzLjggMTEtMTYgMzEuMi01IDQ1czMxLjIgMTYgNDUgNWw1LjktNC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIdXJyaWNhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMDhDMCAxMDQuNCA3NS43IDE4LjUgMTc0LjkgMi42QzE4NCAxLjIgMTkyIDguNiAxOTIgMTcuOVY4MS4yYzAgOC40IDYuNSAxNS4zIDE0LjcgMTYuNUMzMDcgMTEyLjUgMzg0IDE5OSAzODQgMzAzLjRjMCAxMDMuNi03NS43IDE4OS41LTE3NC45IDIwNS40Yy05LjIgMS41LTE3LjEtNS45LTE3LjEtMTUuMlY0MzAuMmMwLTguNC02LjUtMTUuMy0xNC43LTE2LjVDNzcgMzk4LjkgMCAzMTIuNCAwIDIwOHptMjg4IDQ4QTk2IDk2IDAgMSAwIDk2IDI1NmE5NiA5NiAwIDEgMCAxOTIgMHptLTk2LTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSUN1cnNvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMSAyOS4zQy0xLjQgNDcgMTEuNyA2Mi40IDI5LjMgNjMuOWw4IC43QzcwLjUgNjcuMyA5NiA5NSA5NiAxMjguM1YyMjRINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZ2OTUuN2MwIDMzLjMtMjUuNSA2MS01OC43IDYzLjhsLTggLjdDMTEuNyA0NDkuNi0xLjQgNDY1IC4xIDQ4Mi43czE2LjkgMzAuNyAzNC41IDI5LjJsOC0uN2MzNC4xLTIuOCA2NC4yLTE4LjkgODUuNC00Mi45YzIxLjIgMjQgNTEuMiA0MC4xIDg1LjQgNDIuOWw4IC43YzE3LjYgMS41IDMzLjEtMTEuNiAzNC41LTI5LjJzLTExLjYtMzMuMS0yOS4yLTM0LjVsLTgtLjdDMTg1LjUgNDQ0LjcgMTYwIDQxNyAxNjAgMzgzLjdWMjg4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MFYxMjguM2MwLTMzLjMgMjUuNS02MSA1OC43LTYzLjhsOC0uN2MxNy42LTEuNSAzMC43LTE2LjkgMjkuMi0zNC41UzIzOS0xLjQgMjIxLjMgLjFsLTggLjdDMTc5LjIgMy42IDE0OS4yIDE5LjcgMTI4IDQzLjdjLTIxLjItMjQtNTEuMi00MC04NS40LTQyLjlsLTgtLjdDMTctMS40IDEuNiAxMS43IC4xIDI5LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2aDk2VjQxNkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyVjk2aDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNlQ3JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY3LjEgMTYwYy42LTUuMyAuOS0xMC42IC45LTE2QzM2OCA2NC41IDMwMy41IDAgMjI0IDBTODAgNjQuNSA4MCAxNDRjMCA1LjQgLjMgMTAuNyAuOSAxNkg4MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OGg1My41IDE4MUgzNjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhoLS45ek05NiAyODhMMjAwLjggNDk3LjdjNC40IDguOCAxMy4zIDE0LjMgMjMuMiAxNC4zczE4LjgtNS41IDIzLjItMTQuM0wzNTIgMjg4SDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJY2ljbGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTc1LjggMzA0LjhMMSAzNS43Yy0uNy0yLjUtMS01LTEtNy41QzAgMTIuNiAxMi42IDAgMjguMiAwSDQ4Mi40QzQ5OC44IDAgNTEyIDEzLjIgNTEyIDI5LjZjMCAxLjYtLjEgMy4zLS40IDQuOUw0MzQuNiA0OTYuMWMtMS41IDkuMi05LjUgMTUuOS0xOC44IDE1LjljLTkuMiAwLTE3LjEtNi42LTE4LjctMTUuNkwzMzYgMTYwIDMwNy4yIDMwMy45Yy0xLjkgOS4zLTEwLjEgMTYuMS0xOS42IDE2LjFjLTkuMiAwLTE3LjItNi4yLTE5LjQtMTUuMUwyNDAgMTkyIDIxMC42IDM2OC4yYy0xLjUgOS4xLTkuNCAxNS44LTE4LjYgMTUuOHMtMTcuMS02LjctMTguNi0xNS44TDE0NCAxOTIgMTE1LjkgMzA0LjNjLTIuMyA5LjItMTAuNiAxNS43LTIwLjEgMTUuN2MtOS4zIDAtMTcuNS02LjItMjAtMTUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwLjMgNy4zQzUwNy43IDEzLjMgNTEyIDIyLjQgNTEyIDMyVjE3NmMwIDI2LjUtMjguNyA0OC02NCA0OHMtNjQtMjEuNS02NC00OHMyOC43LTQ4IDY0LTQ4VjcxTDM1MiA5MC4yVjIwOGMwIDI2LjUtMjguNyA0OC02NCA0OHMtNjQtMjEuNS02NC00OHMyOC43LTQ4IDY0LTQ4VjY0YzAtMTUuMyAxMC44LTI4LjQgMjUuNy0zMS40bDE2MC0zMmM5LjQtMS45IDE5LjEgLjYgMjYuNiA2LjZ6TTc0LjcgMzA0bDExLjgtMTcuOGM1LjktOC45IDE1LjktMTQuMiAyNi42LTE0LjJoNjEuN2MxMC43IDAgMjAuNyA1LjMgMjYuNiAxNC4yTDIxMy4zIDMwNEgyNDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNTJjMC0yNi41IDIxLjUtNDggNDgtNDhINzQuN3pNMTkyIDQwOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00NzguNyAyNzguM0w0NDAuMyAzNjhINDk2YzYuNyAwIDEyLjYgNC4xIDE1IDEwLjRzLjYgMTMuMy00LjQgMTcuN2wtMTI4IDExMmMtNS42IDQuOS0xMy45IDUuMy0xOS45IC45cy04LjItMTIuNC01LjMtMTkuMkwzOTEuNyA0MDBIMzM2Yy02LjcgMC0xMi42LTQuMS0xNS0xMC40cy0uNi0xMy4zIDQuNC0xNy43bDEyOC0xMTJjNS42LTQuOSAxMy45LTUuMyAxOS45LS45czguMiAxMi40IDUuMyAxOS4yem0tMzM5LTU5LjJjLTYuNSA2LjUtMTcgNi41LTIzIDBMMTkuOSAxMTkuMmMtMjgtMjktMjYuNS03Ni45IDUtMTAzLjljMjctMjMuNSA2OC40LTE5IDkzLjQgNi41bDEwIDEwLjUgOS41LTEwLjVjMjUtMjUuNSA2NS45LTMwIDkzLjktNi41YzMxIDI3IDMyLjUgNzQuOSA0LjUgMTAzLjlsLTk2LjQgOTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRCYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em05NiAzMjBoNjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODB6bS0zMi05NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTE0NCA2NGg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlkQ2FyZENsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgNjRIMTkydjQ4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NHpNMTc2IDQzNy4zYzAgNS45IDQuOCAxMC43IDEwLjcgMTAuN0gzODkuM2M1LjkgMCAxMC43LTQuOCAxMC43LTEwLjdjMC0yOS41LTIzLjktNTMuMy01My4zLTUzLjNIMjI5LjNjLTI5LjUgMC01My4zIDIzLjktNTMuMyA1My4zek0yODggMzUyYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5Nmw1NzYgMGMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2em0wIDMyVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4SDB6TTY0IDQwNS4zYzAtMjkuNSAyMy45LTUzLjMgNTMuMy01My4zSDIzNC43YzI5LjUgMCA1My4zIDIzLjkgNTMuMyA1My4zYzAgNS45LTQuOCAxMC43LTEwLjcgMTAuN0g3NC43Yy01LjkgMC0xMC43LTQuOC0xMC43LTEwLjd6TTE3NiAxOTJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6bTE3NiAxNmMwLTguOCA3LjItMTYgMTYtMTZINDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZ6bTAgNjRjMC04LjggNy4yLTE2IDE2LTE2SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWdsb28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMzLjhWMTYwSDQ4LjVDMTAwLjIgODIuOCAxODguMSAzMiAyODggMzJjMTAuOCAwIDIxLjUgLjYgMzIgMS44ek0zNTIgMTYwVjM5LjFDNDI0LjkgNTUuNyA0ODcuMiA5OS44IDUyNy41IDE2MEgzNTJ6TTI5LjkgMTkySDk2VjMyMEgwYzAtNDYgMTAuOC04OS40IDI5LjktMTI4ek0xOTIgMzIwSDEyOFYxOTJINDQ4VjMyMEgzODR2MzJINTc2djgwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDM1MlYzNTJjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRWNDgwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNTJIMTkyVjMyMHptMjg4IDBWMTkyaDY2LjFjMTkuMiAzOC42IDI5LjkgODIgMjkuOSAxMjhINDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbWFnZVBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NHpNMTI4IDE5MmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTgwIDM1Ni42YzAtMzcuOSAzMC43LTY4LjYgNjguNi02OC42aDg2LjljMzcuOSAwIDY4LjYgMzAuNyA2OC42IDY4LjZjMCAxNS4xLTEyLjMgMjcuNC0yNy40IDI3LjRIMTA3LjRDOTIuMyAzODQgODAgMzcxLjcgODAgMzU2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTMyMy44IDIwMi41Yy00LjUtNi42LTExLjktMTAuNS0xOS44LTEwLjVzLTE1LjQgMy45LTE5LjggMTAuNWwtODcgMTI3LjZMMTcwLjcgMjk3Yy00LjYtNS43LTExLjUtOS0xOC43LTlzLTE0LjIgMy4zLTE4LjcgOWwtNjQgODBjLTUuOCA3LjItNi45IDE3LjEtMi45IDI1LjRzMTIuNCAxMy42IDIxLjYgMTMuNmg5NiAzMkg0MjRjOC45IDAgMTcuMS00LjkgMjEuMi0xMi44czMuNi0xNy40LTEuNC0yNC43bC0xMjAtMTc2ek0xMTIgMTkyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW1hZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAzMmMtMzUuMyAwLTY0IDI4LjctNjQgNjRWMzIwYzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEgxNjB6TTM5NiAxMzguN2w5NiAxNDRjNC45IDcuNCA1LjQgMTYuOCAxLjIgMjQuNlM0ODAuOSAzMjAgNDcyIDMyMEgzMjggMjgwIDIwMGMtOS4yIDAtMTcuNi01LjMtMjEuNi0xMy42cy0yLjktMTguMiAyLjktMjUuNGw2NC04MGM0LjYtNS43IDExLjQtOSAxOC43LTlzMTQuMiAzLjMgMTguNyA5bDE3LjMgMjEuNiA1Ni04NEMzNjAuNSAxMzIgMzY4IDEyOCAzNzYgMTI4czE1LjUgNCAyMCAxMC43ek0xOTIgMTI4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTQ4IDEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNFMwIDEwNi43IDAgMTIwVjM0NGMwIDc1LjEgNjAuOSAxMzYgMTM2IDEzNkg0NTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTM2Yy00OC42IDAtODgtMzkuNC04OC04OFYxMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMSAzMkM5MS42IDMyIDY2IDUyIDU4LjkgODAuNUwxLjkgMzA4LjRDLjYgMzEzLjUgMCAzMTguNyAwIDMyMy45VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzIzLjljMC01LjItLjYtMTAuNC0xLjktMTUuNWwtNTctMjI3LjlDNDQ2IDUyIDQyMC40IDMyIDM5MSAzMkgxMjF6bTAgNjRIMzkxbDQ4IDE5MkgzODcuOGMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtMTQuMyAyOC42Yy01LjQgMTAuOC0xNi41IDE3LjctMjguNiAxNy43SDE5NS44Yy0xMi4xIDAtMjMuMi02LjgtMjguNi0xNy43bC0xNC4zLTI4LjZjLTUuNC0xMC44LTE2LjUtMTcuNy0yOC42LTE3LjdINzNMMTIxIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMTkyIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnptMzIgOTZINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpNMCA0NDhjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMTI3LjggMjY4LjZMMjUuOCAzNDcuOUMxNS4zIDM1Ni4xIDAgMzQ4LjYgMCAzMzUuM1YxNzYuN2MwLTEzLjMgMTUuMy0yMC44IDI1LjgtMTIuNmwxMDEuOSA3OS4zYzguMiA2LjQgOC4yIDE4LjkgMCAyNS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmRpYW5SdXBlZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg5NmgxNkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjMxLjhjOS42IDE0LjQgMTYuNyAzMC42IDIwLjcgNDhIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1Mi40Yy0xMy4yIDU4LjMtNjEuOSAxMDMuMi0xMjIuMiAxMTAuOUwyNzQuNiA0MjJjMTQuNCAxMC4zIDE3LjcgMzAuMyA3LjQgNDQuNnMtMzAuMyAxNy43LTQ0LjYgNy40TDEzLjQgMzE0QzIuMSAzMDYtMi43IDI5MS41IDEuNSAyNzguMlMxOC4xIDI1NiAzMiAyNTZoODBjMzIuOCAwIDYxLTE5LjcgNzMuMy00OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxODUuM0MxNzMgMTE1LjcgMTQ0LjggOTYgMTEyIDk2SDk2IDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZHVzdHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NFYzMDR2NDggODBjMCAyNi41IDIxLjUgNDggNDggNDhINDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNCAxNTIuMmMwLTE4LjItMTkuNC0yOS43LTM1LjQtMjEuMUwzNTIgMjE1LjRWMTUyLjJjMC0xOC4yLTE5LjQtMjkuNy0zNS40LTIxLjFMMTYwIDIxNS40VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZpbml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI0MS4xQzAgMTYxIDY1IDk2IDE0NS4xIDk2YzM4LjUgMCA3NS40IDE1LjMgMTAyLjYgNDIuNUwzMjAgMjEwLjdsNzIuMi03Mi4yQzQxOS41IDExMS4zIDQ1Ni40IDk2IDQ5NC45IDk2QzU3NSA5NiA2NDAgMTYxIDY0MCAyNDEuMXYyOS43QzY0MCAzNTEgNTc1IDQxNiA0OTQuOSA0MTZjLTM4LjUgMC03NS40LTE1LjMtMTAyLjYtNDIuNUwzMjAgMzAxLjNsLTcyLjIgNzIuMkMyMjAuNSA0MDAuNyAxODMuNiA0MTYgMTQ1LjEgNDE2QzY1IDQxNiAwIDM1MSAwIDI3MC45VjI0MS4xek0yNzQuNyAyNTZsLTcyLjItNzIuMmMtMTUuMi0xNS4yLTM1LjktMjMuOC01Ny40LTIzLjhDMTAwLjMgMTYwIDY0IDE5Ni4zIDY0IDI0MS4xdjI5LjdjMCA0NC44IDM2LjMgODEuMSA4MS4xIDgxLjFjMjEuNSAwIDQyLjItOC41IDU3LjQtMjMuOEwyNzQuNyAyNTZ6bTkwLjUgMGw3Mi4yIDcyLjJjMTUuMiAxNS4yIDM1LjkgMjMuOCA1Ny40IDIzLjhjNDQuOCAwIDgxLjEtMzYuMyA4MS4xLTgxLjFWMjQxLjFjMC00NC44LTM2LjMtODEuMS04MS4xLTgxLjFjLTIxLjUgMC00Mi4yIDguNS01Ny40IDIzLjhMMzY1LjMgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxOTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDgwYTQ4IDQ4IDAgMSAxIDk2IDBBNDggNDggMCAxIDEgNDggODB6TTAgMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ0OGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg2NFYyNTZIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGFsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyOTMuM0wxNjAgNDE2aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDkwLjdMMjI0IDk2SDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjMyMGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQwOC40IDAgMzIwVjI4OGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjMyYzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUphcldoZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBIMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0QzQ2LjMgNjQgMzIgNDkuNyAzMiAzMnpNMCAxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRIMjU2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwem0xMTIgMEg2OS44Yy0zLjIgMC01LjggMi42LTUuOCA1LjhDNjQgMTk4IDkwIDIyNCAxMjIuMiAyMjRIMTQ0aDMyIDIxLjhjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yYzAtMy4yLTIuNi01LjgtNS44LTUuOEgyMDhjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjd6bTQ4IDExNy43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjdINjkuOGMtMy4yIDAtNS44IDIuNi01LjggNS44QzY0IDI5NCA5MCAzMjAgMTIyLjIgMzIwSDE0NGgzMiAyMS44YzMyLjEgMCA1OC4yLTI2IDU4LjItNTguMmMwLTMuMi0yLjYtNS44LTUuOC01LjhIMjA4Yy0xOS4xIDAtMzYuMyA4LjQtNDggMjEuN3pNMTEyIDM1Mkg2OS44Yy0zLjIgMC01LjggMi42LTUuOCA1LjhDNjQgMzkwIDkwIDQxNiAxMjIuMiA0MTZIMTQ0djMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNDE2aDIxLjhjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yYzAtMy4yLTIuNi01LjgtNS44LTUuOEgyMDhjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUphciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMzMiAxNC4zIDQ2LjMgMCA2NCAwSDI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg2NEM0Ni4zIDY0IDMyIDQ5LjcgMzIgMzJ6TTAgMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0SDI1NmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MHptOTYgNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMlYyNTZjMC0xNy43LTE0LjMtMzItMzItMzJIOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplZGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ2IDMxNS43bC0yMS4yLTMxLjljLTIuMS0zLjItMS43LTcuNCAxLTEwLjFzNi45LTMuMSAxMC4xLTFsMjkuNSAxOS43YzIuMSAxLjQgNC45IDAgNS0yLjZMMjc5LjcgOGMuMS00LjUgMy44LTggOC4zLThzOC4xIDMuNSA4LjMgOGw5LjQgMjgxLjljLjEgMi41IDIuOSAzLjkgNSAyLjZsMjkuNS0xOS43YzMuMi0yLjEgNy40LTEuNyAxMC4xIDFzMy4xIDYuOSAxIDEwLjFMMzMwIDMxNS43Yy0xLjMgMS45LS4yIDQuNSAyIDQuOWwzNy42IDcuNWMzLjcgLjcgNi40IDQgNi40IDcuOHMtMi43IDcuMS02LjQgNy44TDMzMiAzNTEuNGMtMi4yIC40LTMuMyAzLTIgNC45bDIxLjIgMzEuOWMyLjEgMy4yIDEuNyA3LjQtMSAxMC4xcy02LjkgMy4xLTEwLjEgMWwtMjYuMy0xNy42Yy0yLjItMS40LTUuMSAuMi01IDIuOGwyLjEgNjEuNUMzNzAuNiA0MzUuMiA0MTYgMzgyLjkgNDE2IDMyMGMwLTM3LTE1LjctNzAuNC00MC44LTkzLjdjLTctNi41LTYuNS0xOC42IDEtMjQuNEM0MTAuMSAxNzUuNSA0MzIgMTM0LjMgNDMyIDg4YzAtMTYuOC0yLjktMzMtOC4yLTQ4Yy00LjYtMTMgMTAuMi0zMCAyMS40LTIyYzUzLjUgMzggOTIuNyA5NC44IDEwNy44IDE2MC43Yy41IDIuMS0uMiA0LjMtMS43IDUuOWwtMjguNCAyOC40Yy00IDQtMS4yIDEwLjkgNC41IDEwLjloMjZjMy40IDAgNi4yIDIuNiA2LjMgNmMuMSAzLjMgLjIgNi42IC4yIDEwYzAgMTcuNS0xLjcgMzQuNy00LjggNTEuM2MtLjIgMS4yLS45IDIuNC0xLjcgMy4zbC00Ni41IDQ2LjVjLTQgNC0xLjIgMTAuOSA0LjUgMTAuOUg1MjZjNC42IDAgNy43IDQuOCA1LjcgOUM0ODcuMiA0NTAuNSAzOTQuOCA1MTIgMjg4IDUxMlM4OC44IDQ1MC41IDQ0LjMgMzYxYy0yLjEtNC4yIDEtOSA1LjctOUg2NC41YzUuNyAwIDguNi02LjkgNC41LTEwLjlMMjIuNiAyOTQuNmMtLjktLjktMS41LTItMS43LTMuM0MxNy43IDI3NC43IDE2IDI1Ny41IDE2IDI0MGMwLTMuMyAuMS02LjcgLjItMTBjLjEtMy40IDIuOS02IDYuMy02aDI2YzUuNyAwIDguNi02LjkgNC41LTEwLjlMMjQuNiAxODQuNmMtMS41LTEuNS0yLjItMy44LTEuNy01LjlDMzguMSAxMTIuOCA3Ny4zIDU2IDEzMC44IDE4YzExLjMtOCAyNiA4LjkgMjEuNCAyMmMtNS4zIDE1LTguMiAzMS4yLTguMiA0OGMwIDQ2LjMgMjEuOSA4Ny41IDU1LjggMTEzLjljNy41IDUuOCA4IDE3LjkgMSAyNC40QzE3NS43IDI0OS42IDE2MCAyODMgMTYwIDMyMGMwIDYyLjkgNDUuNCAxMTUuMiAxMDUuMSAxMjZsMi4xLTYxLjVjLjEtMi42LTIuOC00LjItNS0yLjhsLTI2LjMgMTcuNmMtMy4yIDIuMS03LjQgMS43LTEwLjEtMXMtMy4xLTYuOS0xLTEwLjFMMjQ2IDM1Ni4zYzEuMy0xLjkgLjItNC41LTItNC45bC0zNy42LTcuNWMtMy43LS43LTYuNC00LTYuNC03LjhzMi43LTcuMSA2LjQtNy44bDM3LjYtNy41YzIuMi0uNCAzLjMtMyAyLTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmV0RmlnaHRlclVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MC43IDkuN0MyNjguMiAzLjggMjYyLjQgMCAyNTYgMHMtMTIuMiAzLjgtMTQuNyA5LjdMMTk3LjIgMTEyLjZjLTMuNCA4LTUuMiAxNi41LTUuMiAyNS4ydjc3bC0xNDQgODRWMjgwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djU2IDMyIDI0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjR2LThIMTkydjMyLjdMMTMzLjUgNDY4Yy0zLjUgMy01LjUgNy40LTUuNSAxMnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoOTZWNDQ4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NjRoOTZjOC44IDAgMTYtNy4yIDE2LTE2VjQ4MGMwLTQuNi0yLTktNS41LTEyTDMyMCA0MTYuN1YzODRINDY0djhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNjggMzM2IDI4MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHYxOC44bC0xNDQtODR2LTc3YzAtOC43LTEuOC0xNy4yLTUuMi0yNS4yTDI3MC43IDkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmV0RmlnaHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MEwzODQgMTkySDUwMC40YzcuNyAwIDE1LjMgMS40IDIyLjUgNC4xTDYyNSAyMzQuNGM5IDMuNCAxNSAxMiAxNSAyMS42cy02IDE4LjItMTUgMjEuNkw1MjIuOSAzMTUuOWMtNy4yIDIuNy0xNC44IDQuMS0yMi41IDQuMUgzODRMMjgwIDQ2NGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxODRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOFYzMjBIMTYwbC01NC42IDU0LjZjLTYgNi0xNC4xIDkuNC0yMi42IDkuNEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg4Mi43YzguNSAwIDE2LjYgMy40IDIyLjYgOS40TDE2MCAxOTJoMzJWNDhoLThjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek04MCAyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0M2MwIDU1LjIgMjEuOSAxMDguMSA2MC45IDE0Ny4xbDIxIDIxYzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45djExYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjQ1YzAtMjkuNy0xMS44LTU4LjItMzIuOC03OS4ybC0yMS0yMUM0NjMuMiAxMTcuOCA0NDggODEuMiA0NDggNDNWMzJ6TTU3NiAyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNDVjMC01NS4yLTIxLjktMTA4LjEtNjAuOS0xNDcuMWwtMjEtMjFjLTktOS0xNC4xLTIxLjItMTQuMS0zMy45VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjQzYzAgMjkuNyAxMS44IDU4LjIgMzIuOCA3OS4ybDIxIDIxYzI3IDI3IDQyLjIgNjMuNiA0Mi4yIDEwMS44djExek0yMjkuOCAzNjBjLTQuNy0yLjMtMTAtMi43LTE1LjItMmMtMzcuOCA1LjYtNzUuMiAxNC4zLTEwNi45IDIyLjhDODEuMyAzODggNTguMyAzOTUuMSA0MiA0MDAuNGMtOC4yIDIuNy0xNC43IDQuOS0xOS4yIDYuNWMtMi4zIC44LTQgMS40LTUuMiAxLjhsLTEuMyAuNUM2LjggNDEyLjUgMCA0MjEuNCAwIDQzMnM2LjggMTkuNSAxNi4zIDIyLjdsMS4zIC41YzEuMiAuNCAzIDEuMSA1LjIgMS44YzQuNSAxLjYgMTEgMy44IDE5LjIgNi41YzE2LjMgNS40IDM5LjIgMTIuNSA2NS43IDE5LjZDMTYwLjMgNDk3LjMgMjI4LjggNTEyIDI4OCA1MTJoNjcuM2M0LjEgMCA2LjMtNS4xIDMuNi04LjNMMjU2LjUgMzgwLjhjLTcuNC04LjktMTYuNS0xNS45LTI2LjctMjAuOHpNNDQ1IDUxMmgxOSA1MS4zYzQuMSAwIDYuMy01LjEgMy42LTguM0w0MTYuNSAzODAuOEM0MDEuMyAzNjIuNSAzNzguOCAzNTIgMzU1IDM1MkgzMzYgMjg4Yy0xLjEgMC0yLjMgMC0zLjQgMGMtNC4xIDAtNi4yIDUuMS0zLjUgOC4zTDM4My41IDQ4My4yQzM5OC43IDUwMS41IDQyMS4yIDUxMiA0NDUgNTEyem0tMy45LTE1MS43TDU0My41IDQ4My4yYzE0LjYgMTcuNSAzNS45IDI3LjkgNTguNiAyOC43YzIxLjEtMS4xIDM3LjktMTguNiAzNy45LTM5LjlWMzkyYzAtMjIuMS0xNy45LTQwLTQwLTQwSDQ0NC43Yy00LjEgMC02LjMgNS4xLTMuNiA4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUp1Z0RldGVyZ2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY0OGg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDg4Qzc0LjcgOTYgNjQgODUuMyA2NCA3MnMxMC43LTI0IDI0LTI0aDhWMjR6TTAgMjU2YzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4SDI1NmM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI1NnptMjU2IDB2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzExIDg2LjNjMTIuMy0xMi43IDEyLTMyLjktLjctNDUuMnMtMzIuOS0xMi00NS4yIC43bC0xNTUuMiAxNjBMNjQgMjQ5VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjMyOCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNDFsNjQuNy02Ni43IDEzMyAxOTJjMTAuMSAxNC41IDMwIDE4LjEgNDQuNSA4LjFzMTguMS0zMCA4LjEtNDQuNUwxNzQuMSAyMjcuNCAzMTEgODYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2FhYmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjAgMTIwbDIyOCA3MS4yTDUxNiAxMjAgMjg4IDQ4LjggNjAgMTIwek0yNzguNSAxLjVjNi4yLTEuOSAxMi45LTEuOSAxOS4xIDBsMjU2IDgwQzU2Ni45IDg1LjYgNTc2IDk4IDU3NiAxMTJ2MTYgMCAyMS4yTDI5Mi44IDIzNy43Yy0zLjEgMS02LjQgMS05LjUgMEwwIDE0OS4yVjEyOCAxMTJDMCA5OCA5LjEgODUuNiAyMi41IDgxLjVsMjU2LTgwem0yMy45IDI2Ni44TDU3NiAxODIuOHY0Ni41bC01Mi44IDE2LjVjLTguNCAyLjYtMTMuMSAxMS42LTEwLjUgMjBzMTEuNiAxMy4xIDIwIDEwLjVMNTc2IDI2Mi44VjQwMGMwIDE0LTkuMSAyNi40LTIyLjUgMzAuNWwtMjU2IDgwYy02LjIgMS45LTEyLjkgMS45LTE5LjEgMGwtMjU2LTgwQzkuMSA0MjYuNCAwIDQxNCAwIDQwMFYyNjIuOGw0My4yIDEzLjVjOC40IDIuNiAxNy40LTIuMSAyMC0xMC41cy0yLjEtMTcuNC0xMC41LTIwTDAgMjI5LjJWMTgyLjhsMjczLjcgODUuNWM5LjMgMi45IDE5LjMgMi45IDI4LjYgMHptLTE4NS41LTIuNmMtOC40LTIuNi0xNy40IDIuMS0yMCAxMC41czIuMSAxNy40IDEwLjUgMjBsNjQgMjBjOC40IDIuNiAxNy40LTIuMSAyMC0xMC41cy0yLjEtMTcuNC0xMC41LTIwbC02NC0yMHptMzUyIDMwLjVjOC40LTIuNiAxMy4xLTExLjYgMTAuNS0yMHMtMTEuNi0xMy4xLTIwLTEwLjVsLTY0IDIwYy04LjQgMi42LTEzLjEgMTEuNi0xMC41IDIwczExLjYgMTMuMSAyMCAxMC41bDY0LTIwem0tMjI0IDkuNWMtOC40LTIuNi0xNy40IDIuMS0yMCAxMC41czIuMSAxNy40IDEwLjUgMjBsMzguNSAxMmM5LjMgMi45IDE5LjMgMi45IDI4LjYgMGwzOC41LTEyYzguNC0yLjYgMTMuMS0xMS42IDEwLjUtMjBzLTExLjYtMTMuMS0yMC0xMC41bC0zOC41IDEyYy0zLjEgMS02LjQgMS05LjUgMGwtMzguNS0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAzNTJjOTcuMiAwIDE3Ni03OC44IDE3Ni0xNzZTNDMzLjIgMCAzMzYgMFMxNjAgNzguOCAxNjAgMTc2YzAgMTguNyAyLjkgMzYuOCA4LjMgNTMuN0w3IDM5MWMtNC41IDQuNS03IDEwLjYtNyAxN3Y4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY0NDhoNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzg0aDQwYzYuNCAwIDEyLjUtMi41IDE3LTdsMzMuMy0zMy4zYzE2LjkgNS40IDM1IDguMyA1My43IDguM3pNMzc2IDk2YTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5Ym9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTE2IDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTE2IDgwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em04MC0xNzZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTQ0em0xNiA4MGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6TTE2MCAzMzZjMC04LjggNy4yLTE2IDE2LTE2SDQwMGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNnpNMjcyIDEyOGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZ6TTI1NiAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek0zNjggMTI4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnpNMzUyIDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTQ2NCAxMjhoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2ek00NDggMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTYgODBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaGFuZGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ1LjggMy43YzUuOS00LjkgMTQuNi00LjkgMjAuNSAwbDQ4IDQwYzUuOSA0LjkgNy41IDEzLjIgMy44IDE5LjlsMCAwIDAgMCAwIDAgMCAwLS4xIC4xLS4zIC42Yy0uMyAuNS0uNyAxLjMtMS4yIDIuM2MtMSAyLTIuNiA1LTQuNCA4LjZjLS41IC45LS45IDEuOS0xLjQgMi45QzM0NC45IDk3LjQgMzY4IDEzNCAzNjggMTc2cy0yMy4xIDc4LjYtNTcuMyA5Ny44Yy41IDEgMSAyIDEuNCAyLjljMS44IDMuNyAzLjMgNi42IDQuNCA4LjZjLjUgMSAuOSAxLjggMS4yIDIuM2wuMyAuNiAuMSAuMSAwIDAgMCAwYzMuNiA2LjcgMiAxNS0zLjggMTkuOUwyNzIgMzQzLjV2MTkuOGwzNS42LTI0LjUgNDEuMS0yOC4yYzQyLjgtMjkuNCA2OC40LTc4IDY4LjQtMTMwYzAtMzEuMS05LjItNjEuNi0yNi41LTg3LjVsLTIuOC00LjJjLTQtNi0zLjUtMTQgMS4zLTE5LjVzMTIuNy03IDE5LjItMy43TDQwMS4xIDgwYzcuMi0xNC4zIDcuMi0xNC4zIDcuMi0xNC4zbDAgMCAwIDAgLjEgMCAuMyAuMiAxIC41Yy44IC40IDIgMS4xIDMuNSAxLjljMi45IDEuNyA3IDQuMSAxMS44IDcuM2M5LjYgNi40IDIyLjUgMTYuMSAzNS40IDI5YzI1LjcgMjUuNyA1Mi43IDY1LjYgNTIuNyAxMTkuM2MwIDUzLjEtMjYuNCAxMDAuNS01MS4yIDEzMy42Yy0xMi42IDE2LjctMjUuMSAzMC4zLTM0LjUgMzkuN2MtNC43IDQuNy04LjcgOC40LTExLjUgMTAuOWMtMS40IDEuMy0yLjUgMi4yLTMuMyAyLjlsLS45IC44LS4zIC4yLS4xIC4xIDAgMCAwIDBzMCAwLTEwLjItMTIuM2wxMC4yIDEyLjNjLTUuMSA0LjMtMTIuNCA0LjktMTguMiAxLjZsLTc1LjYtNDMtMzIuNyAyMi41IDQ1LjUgMzEuM2MxLjgtLjQgMy43LS43IDUuNy0uN2MxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMTIuMiAwLTIyLjMtOS4xLTIzLjgtMjFMMjcyIDQyMy40djI4LjljOS42IDUuNSAxNiAxNS45IDE2IDI3LjdjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJjMC0xMS44IDYuNC0yMi4yIDE2LTI3LjdWNDI0LjFsLTQwLjMgMjcuN0MxOTcuOCA0NjMuMyAxODcuOSA0NzIgMTc2IDQ3MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyLjIgMCA0LjQgLjMgNi41IC45bDQ1LjgtMzEuNS0zMi43LTIyLjUtNzUuNiA0M2MtNS44IDMuMy0xMyAyLjctMTguMi0xLjZMMTEyIDQwMGMtMTAuMiAxMi4zLTEwLjIgMTIuMy0xMC4zIDEyLjNsMCAwIDAgMC0uMS0uMS0uMy0uMi0uOS0uOGMtLjgtLjctMS45LTEuNy0zLjMtMi45Yy0yLjgtMi41LTYuNy02LjItMTEuNS0xMC45Yy05LjQtOS40LTIxLjktMjMtMzQuNS0zOS43QzI2LjQgMzI0LjUgMCAyNzcuMSAwIDIyNGMwLTUzLjcgMjYuOS05My42IDUyLjctMTE5LjNjMTIuOS0xMi45IDI1LjgtMjIuNiAzNS40LTI5QzkzIDcyLjUgOTcgNzAgOTkuOSA2OC40YzEuNS0uOCAyLjYtMS41IDMuNS0xLjlsMS0uNSAuMy0uMiAuMSAwIDAgMCAwIDBzMCAwIDcuMiAxNC4zbC03LjItMTQuM2M2LjUtMy4yIDE0LjMtMS43IDE5LjIgMy43czUuMyAxMy40IDEuMyAxOS41bC0yLjggNC4yQzEwNS4yIDExOSA5NiAxNDkuNSA5NiAxODAuNmMwIDUxLjkgMjUuNiAxMDAuNiA2OC40IDEzMGw0MS4xIDI4LjJMMjQwIDM2Mi42VjM0My41bC00Mi4yLTM1LjJjLTUuOS00LjktNy41LTEzLjItMy44LTE5LjlsMCAwIDAgMCAwIDAgLjEtLjEgLjMtLjZjLjMtLjUgLjctMS4zIDEuMi0yLjNjMS0yIDIuNi01IDQuNC04LjZjLjUtLjkgLjktMS45IDEuNC0yLjlDMTY3LjEgMjU0LjYgMTQ0IDIxOCAxNDQgMTc2czIzLjEtNzguNiA1Ny4zLTk3LjhjLS41LTEtMS0yLTEuNC0yLjljLTEuOC0zLjctMy4zLTYuNi00LjQtOC42Yy0uNS0xLS45LTEuOC0xLjItMi4zbC0uMy0uNi0uMS0uMSAwIDAgMCAwIDAgMGMtMy42LTYuNy0yLTE1IDMuOC0xOS45bDQ4LTQwek0yMjAuMiAxMjIuOWMtMTcgMTEuNS0yOC4yIDMxLTI4LjIgNTMuMXMxMS4yIDQxLjYgMjguMiA1My4xQzIyNyAyMTAuMiAyMzIgMTkwLjkgMjMyIDE3NnMtNS0zNC4yLTExLjgtNTMuMXptNzEuNSAxMDYuMmMxNy0xMS41IDI4LjItMzEgMjguMi01My4xcy0xMS4yLTQxLjYtMjguMi01My4xQzI4NSAxNDEuOCAyODAgMTYxLjEgMjgwIDE3NnM1IDM0LjIgMTEuOCA1My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXBTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MC44IDg4LjNjMTMuNC0xMS41IDE1LTMxLjcgMy41LTQ1LjFzLTMxLjctMTUtNDUuMS0zLjVMMTI4IDE4Ni40VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDQ2LjMgNjQgNjRWMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyNS42TDI5OS4yIDQ3Mi4zYzEzLjQgMTEuNSAzMy42IDkuOSA0NS4xLTMuNXM5LjktMzMuNi0zLjUtNDUuMUwxODIuNSAyODhIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE4Mi41TDM0MC44IDg4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpdE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIOTZWMzJINjR6bTY0IDBWNDgwSDQ0OFYzMkgxMjh6TTUxMiA0ODBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINDgwVjQ4MGgzMnpNMjU2IDE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzIwdjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyODhIMjA4Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNmg0OFYxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpdGNoZW5TZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwIDE0NEE5NiA5NiAwIDEgMCA0OCAxNDRhOTYgOTYgMCAxIDAgMTkyIDB6bTQ0LjQgMzJDMjY5LjkgMjQwLjEgMjEyLjUgMjg4IDE0NCAyODhDNjQuNSAyODggMCAyMjMuNSAwIDE0NFM2NC41IDAgMTQ0IDBjNjguNSAwIDEyNS45IDQ3LjkgMTQwLjQgMTEyaDcxLjhjOC44LTkuOCAyMS42LTE2IDM1LjgtMTZINDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDM5MmMtMTQuMiAwLTI3LTYuMi0zNS44LTE2SDI4NC40ek0xNDQgODBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTQwMCAyNDBjMTMuMyAwIDI0IDEwLjcgMjQgMjR2OGg5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOTZ2LThjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTI4OCA0NjRWMzUySDUxMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMzM2Yy0yNi41IDAtNDgtMjEuNS00OC00OHpNNDggMzIwaDgwIDE2IDMyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnptMTI4IDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE2MHYzMmgxNnpNMjQgNDY0SDIwMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2l3aUJpcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkxLjIgMzg4LjRjMzEuMi0xOC44IDY0LjctMzYuNCAxMDEuMS0zNi40SDQ0OGM0LjYgMCA5LjEtLjIgMTMuNi0uN2w4NS4zIDEyMS45YzQgNS43IDExLjMgOC4yIDE3LjkgNi4xczExLjItOC4zIDExLjItMTUuM1YyMjRjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhIMzkyLjNjLTM2LjQgMC02OS45LTE3LjYtMTAxLjEtMzYuNEMyNjIuMyA0Mi4xIDIyOC4zIDMyIDE5MiAzMkM4NiAzMiAwIDExOCAwIDIyNGMwIDcxLjEgMzguNiAxMzMuMSA5NiAxNjYuM1Y0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0MTBjMTUuMyAzLjkgMzEuNCA2IDQ4IDZjNS40IDAgMTAuNy0uMiAxNi0uN1Y0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0MDUuMWMxMi40LTQuNCAyNC4yLTEwIDM1LjItMTYuN3pNNDQ4IDIwMGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDE2SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhbmRNaW5lT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDI0VjE2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek0xOTIgMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMkgxOTJWMzIwem0tNzcuMyA5MC41YzguMS0xNi4zIDI0LjgtMjYuNSA0Mi45LTI2LjVINDgyLjNjMTguMiAwIDM0LjggMTAuMyA0Mi45IDI2LjVsMjcuNiA1NS4yQzU2My41IDQ4NyA1NDggNTEyIDUyNC4yIDUxMkgxMTUuOGMtMjMuOCAwLTM5LjMtMjUtMjguNi00Ni4zbDI3LjYtNTUuMnpNMzYuMyAxMzguM2M3LjUtMTAuOSAyMi41LTEzLjYgMzMuNC02LjFsMTA0IDcyYzEwLjkgNy41IDEzLjYgMjIuNSA2LjEgMzMuNHMtMjIuNSAxMy42LTMzLjQgNi4xbC0xMDQtNzJjLTEwLjktNy41LTEzLjYtMjIuNS02LjEtMzMuNHptNTM0LjEtNi4xYzEwLjktNy41IDI1LjgtNC44IDMzLjQgNi4xczQuOCAyNS44LTYuMSAzMy40bC0xMDQgNzJjLTEwLjkgNy41LTI1LjggNC44LTMzLjQtNi4xcy00LjgtMjUuOCA2LjEtMzMuNGwxMDQtNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhbmRtYXJrRG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNFYzNC43QzM2OC40IDQ4LjEgNDMxLjkgMTExLjYgNDQ1LjMgMTkySDQ0OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgyLjdDODAuMSAxMTEuNiAxNDMuNiA0OC4xIDIyNCAzNC43VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek02NCAyODhoNjRWNDE2aDQwVjI4OGg2NFY0MTZoNDhWMjg4aDY0VjQxNmg0MFYyODhoNjRWNDIwLjNjLjYgLjMgMS4yIC43IDEuNyAxLjFsNDggMzJjMTEuNyA3LjggMTcgMjIuNCAxMi45IDM1LjlTNDk0LjEgNTEyIDQ4MCA1MTJIMzJjLTE0LjEgMC0yNi41LTkuMi0zMC42LTIyLjdzMS4xLTI4LjEgMTIuOS0zNS45bDQ4LTMyYy42LS40IDEuMi0uNyAxLjgtMS4xVjI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZG1hcmtGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAwaDgwYzguOCAwIDE2IDcuMiAxNiAxNlY4MGMwIDguOC03LjIgMTYtMTYgMTZIMjcydjMySDQ2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgyNDBWMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2ek02NCAyMjRoNjRWNDE2aDQwVjIyNGg2NFY0MTZoNDhWMjI0aDY0VjQxNmg0MFYyMjRoNjRWNDIwLjNjLjYgLjMgMS4yIC43IDEuOCAxLjFsNDggMzJjMTEuNyA3LjggMTcgMjIuNCAxMi45IDM1LjlTNDk0LjEgNTEyIDQ4MCA1MTJIMzJjLTE0LjEgMC0yNi41LTkuMi0zMC42LTIyLjdzMS4xLTI4LjEgMTIuOS0zNS45bDQ4LTMyYy42LS40IDEuMi0uNyAxLjgtMS4xVjIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjEgNC4yYzkuOC01LjYgMjEuOS01LjYgMzEuOCAwbDE3MS44IDk4LjFMNDQ4IDEwNGwwIC45IDQ3LjkgMjcuNGMxMi42IDcuMiAxOC44IDIyIDE1LjEgMzZzLTE2LjQgMjMuOC0zMC45IDIzLjhIMzJjLTE0LjUgMC0yNy4yLTkuOC0zMC45LTIzLjhzMi41LTI4LjggMTUuMS0zNkw2NCAxMDQuOVYxMDRsNC40LTEuNkwyNDAuMSA0LjJ6TTY0IDIyNGg2NFY0MTZoNDBWMjI0aDY0VjQxNmg0OFYyMjRoNjRWNDE2aDQwVjIyNGg2NFY0MjAuM2MuNiAuMyAxLjIgLjcgMS44IDEuMWw0OCAzMmMxMS43IDcuOCAxNyAyMi40IDEyLjkgMzUuOVM0OTQuMSA1MTIgNDgwIDUxMkgzMmMtMTQuMSAwLTI2LjUtOS4yLTMwLjYtMjIuN3MxLjEtMjguMSAxMi45LTM1LjlsNDgtMzJjLjYtLjQgMS4yLS43IDEuOC0xLjFWMjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEgyNTZoNDggMTZINTc2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMjAgMzA0IDI1NiA2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4em0zMjAgMFYzODRINTc2VjEyOEgzMjB6TTE3OC4zIDE3NS45Yy0zLjItNy4yLTEwLjQtMTEuOS0xOC4zLTExLjlzLTE1LjEgNC43LTE4LjMgMTEuOWwtNjQgMTQ0Yy00LjUgMTAuMSAuMSAyMS45IDEwLjIgMjYuNHMyMS45LS4xIDI2LjQtMTAuMmw4LjktMjAuMWg3My42bDguOSAyMC4xYzQuNSAxMC4xIDE2LjMgMTQuNiAyNi40IDEwLjJzMTQuNi0xNi4zIDEwLjItMjYuNGwtNjQtMTQ0ek0xNjAgMjMzLjJMMTc5IDI3NkgxNDFsMTktNDIuOHpNNDQ4IDE2NGMxMSAwIDIwIDkgMjAgMjB2NGg0NCAxNmMxMSAwIDIwIDkgMjAgMjBzLTkgMjAtMjAgMjBoLTJsLTEuNiA0LjVjLTguOSAyNC40LTIyLjQgNDYuNi0zOS42IDY1LjRjLjkgLjYgMS44IDEuMSAyLjcgMS42bDE4LjkgMTEuM2M5LjUgNS43IDEyLjUgMTggNi45IDI3LjRzLTE4IDEyLjUtMjcuNCA2LjlsLTE4LjktMTEuM2MtNC41LTIuNy04LjgtNS41LTEzLjEtOC41Yy0xMC42IDcuNS0yMS45IDE0LTM0IDE5LjRsLTMuNiAxLjZjLTEwLjEgNC41LTIxLjktLjEtMjYuNC0xMC4ycy4xLTIxLjkgMTAuMi0yNi40bDMuNi0xLjZjNi40LTIuOSAxMi42LTYuMSAxOC41LTkuOGwtMTIuMi0xMi4yYy03LjgtNy44LTcuOC0yMC41IDAtMjguM3MyMC41LTcuOCAyOC4zIDBsMTQuNiAxNC42IC41IC41YzEyLjQtMTMuMSAyMi41LTI4LjMgMjkuOC00NUg0NDggMzc2Yy0xMSAwLTIwLTktMjAtMjBzOS0yMCAyMC0yMGg1MnYtNGMwLTExIDktMjAgMjAtMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcENvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM1Mkg1MTJWOTZIMTI4VjM1Mkg2NFY5NnpNMCA0MDMuMkMwIDM5Mi42IDguNiAzODQgMTkuMiAzODRINjIwLjhjMTAuNiAwIDE5LjIgOC42IDE5LjIgMTkuMmMwIDQyLjQtMzQuNCA3Ni44LTc2LjggNzYuOEg3Ni44QzM0LjQgNDgwIDAgNDQ1LjYgMCA0MDMuMnpNMjgxIDIwOWwtMzEgMzEgMzEgMzFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDgtNDhjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDQ4LTQ4YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpNMzkzIDE3NWw0OCA0OGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtNDggNDhjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzEtMzEtMzEtMzFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFwdG9wRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMEM5Mi43IDAgNjQgMjguNyA2NCA2NFYyODhIMTkuMkM4LjYgMjg4IDAgMjk2LjYgMCAzMDcuMkMwIDM0OS42IDM0LjQgMzg0IDc2LjggMzg0SDMyMFYyODhIMTI4VjY0SDQ0OFY5Nmg2NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEgxMjh6TTUxMiAxMjhINDAwYy0yNi41IDAtNDggMjEuNS00OCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1Nkg1NDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOHptMzIgMHY5Nmg5NmwtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM1Mkg1MTJWOTZIMTI4VjM1Mkg2NFY5NnpNMCA0MDMuMkMwIDM5Mi42IDguNiAzODQgMTkuMiAzODRINjIwLjhjMTAuNiAwIDE5LjIgOC42IDE5LjIgMTkuMmMwIDQyLjQtMzQuNCA3Ni44LTc2LjggNzYuOEg3Ni44QzM0LjQgNDgwIDAgNDQ1LjYgMCA0MDMuMnpNMjg4IDE2MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzUydjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgzMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJIMjQwYy04LjggMC0xNi03LjItMTYtMTZWMjI0YzAtOC44IDcuMi0xNiAxNi0xNmg0OFYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMzJDOTIuNyAzMiA2NCA2MC43IDY0IDk2VjM1Mmg2NFY5Nkg1MTJWMzUyaDY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDEyOHpNMTkuMiAzODRDOC42IDM4NCAwIDM5Mi42IDAgNDAzLjJDMCA0NDUuNiAzNC40IDQ4MCA3Ni44IDQ4MEg1NjMuMmM0Mi40IDAgNzYuOC0zNC40IDc2LjgtNzYuOGMwLTEwLjYtOC42LTE5LjItMTkuMi0xOS4ySDE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcmlTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY5Ni43YzUuMy0uNCAxMC42LS43IDE2LS43czEwLjcgLjIgMTYgLjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY0OS40YzU0LjkgMjUuMiA5NS44IDc1LjUgMTA4LjIgMTM2LjJjMy41IDE3LjMtNy43IDM0LjItMjUgMzcuN3MtMzQuMi03LjctMzcuNy0yNWMtNi4xLTI5LjktMjIuNS01NS45LTQ1LjQtNzQuM1YyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTYxYy01LjItLjctMTAuNi0xLTE2LTFzLTEwLjggLjMtMTYgMXY5NWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxODguMUM4Mi43IDIxMS41IDY0IDI0Ny42IDY0IDI4OGMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTkyIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQ4LjlDMTguNSAzODIgMCAzMzcuMiAwIDI4OGMwLTc3LjUgNDUuOS0xNDQuMyAxMTItMTc0LjZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxheWVyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY0LjUgNS4yYzE0LjktNi45IDMyLjEtNi45IDQ3IDBsMjE4LjYgMTAxYzguNSAzLjkgMTMuOSAxMi40IDEzLjkgMjEuOHMtNS40IDE3LjktMTMuOSAyMS44bC0yMTguNiAxMDFjLTE0LjkgNi45LTMyLjEgNi45LTQ3IDBMNDUuOSAxNDkuOEMzNy40IDE0NS44IDMyIDEzNy4zIDMyIDEyOHM1LjQtMTcuOSAxMy45LTIxLjhMMjY0LjUgNS4yek00NzYuOSAyMDkuNmw1My4yIDI0LjZjOC41IDMuOSAxMy45IDEyLjQgMTMuOSAyMS44cy01LjQgMTcuOS0xMy45IDIxLjhsLTIxOC42IDEwMWMtMTQuOSA2LjktMzIuMSA2LjktNDcgMEw0NS45IDI3Ny44QzM3LjQgMjczLjggMzIgMjY1LjMgMzIgMjU2czUuNC0xNy45IDEzLjktMjEuOGw1My4yLTI0LjYgMTUyIDcwLjJjMjMuNCAxMC44IDUwLjQgMTAuOCA3My44IDBsMTUyLTcwLjJ6bS0xNTIgMTk4LjJsMTUyLTcwLjIgNTMuMiAyNC42YzguNSAzLjkgMTMuOSAxMi40IDEzLjkgMjEuOHMtNS40IDE3LjktMTMuOSAyMS44bC0yMTguNiAxMDFjLTE0LjkgNi45LTMyLjEgNi45LTQ3IDBMNDUuOSA0MDUuOEMzNy40IDQwMS44IDMyIDM5My4zIDMyIDM4NHM1LjQtMTcuOSAxMy45LTIxLjhsNTMuMi0yNC42IDE1MiA3MC4yYzIzLjQgMTAuOCA1MC40IDEwLjggNzMuOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiA5NmMtNzguNiAwLTE0NS4xIDUxLjUtMTY3LjcgMTIyLjVjMzMuNi0xNyA3MS41LTI2LjUgMTExLjctMjYuNWg4OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyODggMjE2czAgMCAwIDBjLTE2LjYgMC0zMi43IDEuOS00OC4zIDUuNGMtMjUuOSA1LjktNDkuOSAxNi40LTcxLjQgMzAuN2MwIDAgMCAwIDAgMEMzOC4zIDI5OC44IDAgMzY0LjkgMCA0NDB2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDBjMC00OC43IDIwLjctOTIuNSA1My44LTEyMy4yQzEyMS42IDM5Mi4zIDE5MC4zIDQ0OCAyNzIgNDQ4bDEgMGMxMzIuMS0uNyAyMzktMTMwLjkgMjM5LTI5MS40YzAtNDIuNi03LjUtODMuMS0yMS4xLTExOS42Yy0yLjYtNi45LTEyLjctNi42LTE2LjItLjFDNDU1LjkgNzIuMSA0MTguNyA5NiAzNzYgOTZMMjcyIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZWZ0TG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcuNSA0MTRjLTguOCAzLjgtMTkgMi0yNi00LjZsLTE0NC0xMzZDMi43IDI2OC45IDAgMjYyLjYgMCAyNTZzMi43LTEyLjkgNy41LTE3LjRsMTQ0LTEzNmM3LTYuNiAxNy4yLTguNCAyNi00LjZzMTQuNSAxMi41IDE0LjUgMjJsMCA3MiAyODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yODggMCAwIDcyYzAgOS42LTUuNyAxOC4yLTE0LjUgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlZnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQuMyAyNzMuNmM0LjktNC41IDcuNy0xMC45IDcuNy0xNy42cy0yLjgtMTMtNy43LTE3LjZsLTExMi0xMDRjLTctNi41LTE3LjItOC4yLTI1LjktNC40cy0xNC40IDEyLjUtMTQuNCAyMmwwIDU2LTE5MiAwIDAtNTZjMC05LjUtNS43LTE4LjItMTQuNC0yMnMtMTguOS0yLjEtMjUuOSA0LjRsLTExMiAxMDRDMi44IDI0MyAwIDI0OS4zIDAgMjU2czIuOCAxMyA3LjcgMTcuNmwxMTIgMTA0YzcgNi41IDE3LjIgOC4yIDI1LjkgNC40czE0LjQtMTIuNSAxNC40LTIybDAtNTYgMTkyIDAgMCA1NmMwIDkuNSA1LjcgMTguMiAxNC40IDIyczE4LjkgMi4xIDI1LjktNC40bDExMi0xMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NGMtNi42IDAtMTMgMS0xOSAyLjljLTIyLjUgNy00OC4xIDE0LjktNzEgOWMtNzUuMi0xOS4xLTE1Ni40IDExLTIxMy43IDY4LjNTLTcuMiAyNTAuOCAxMS45IDMyNmM1LjggMjIuOS0yIDQ4LjQtOSA3MUMxIDQwMyAwIDQwOS40IDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0YzYuNiAwIDEzLTEgMTkuMS0yLjljMjIuNS03IDQ4LjEtMTQuOSA3MS05Yzc1LjIgMTkuMSAxNTYuNC0xMSAyMTMuNy02OC4zczg3LjUtMTM4LjUgNjguMy0yMTMuN2MtNS44LTIyLjkgMi00OC40IDktNzFjMS45LTYgMi45LTEyLjQgMi45LTE5LjF6TTIxMi41IDEyNy40Yy01NC42IDE2LTEwMS4xIDYyLjUtMTE3LjEgMTE3LjFDOTIuOSAyNTMgODQgMjU3LjggNzUuNSAyNTUuNFM2Mi4yIDI0NCA2NC42IDIzNS41YzE5LjEtNjUuMSA3My43LTExOS44IDEzOC45LTEzOC45YzguNS0yLjUgMTcuNCAyLjQgMTkuOSAxMC45cy0yLjQgMTcuNC0xMC45IDE5Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlc3NUaGFuRXF1YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk1LjkgOTMuN2MxNi40LTYuNiAyNC40LTI1LjIgMTcuOC00MS42cy0yNS4yLTI0LjQtNDEuNi0xNy44bC0zMjAgMTI4QzQwIDE2Ny4xIDMyIDE3OC45IDMyIDE5MnM4IDI0LjkgMjAuMSAyOS43bDMyMCAxMjhjMTYuNCA2LjYgMzUtMS40IDQxLjYtMTcuOHMtMS40LTM1LTE3LjgtNDEuNkwxNTAuMiAxOTIgMzk1LjkgOTMuN3pNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVzc1RoYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjYgODEuN2M3LjkgMTUuOCAxLjUgMzUtMTQuMyA0Mi45TDEwMy42IDI1NiAzNjYuMyAzODcuNGMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zbC0zMjAtMTYwQzYuOCAyNzkuMiAwIDI2OC4xIDAgMjU2czYuOC0yMy4yIDE3LjctMjguNmwzMjAtMTYwYzE1LjgtNy45IDM1LTEuNSA0Mi45IDE0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpZmVSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2Ny4yIDQxMi41QzMzNS45IDQzNC45IDI5Ny41IDQ0OCAyNTYgNDQ4cy03OS45LTEzLjEtMTExLjItMzUuNWw1OC01OGMxNS44IDguNiAzNCAxMy41IDUzLjMgMTMuNXMzNy40LTQuOSA1My4zLTEzLjVsNTggNTh6bTkwLjcgLjhjMzMuOC00My40IDU0LTk4IDU0LTE1Ny4zcy0yMC4yLTExMy45LTU0LTE1Ny4zYzktMTIuNSA3LjktMzAuMS0zLjQtNDEuM1M0MjUuOCA0NSA0MTMuMyA1NEMzNjkuOSAyMC4yIDMxNS4zIDAgMjU2IDBTMTQyLjEgMjAuMiA5OC43IDU0Yy0xMi41LTktMzAuMS03LjktNDEuMyAzLjRTNDUgODYuMiA1NCA5OC43QzIwLjIgMTQyLjEgMCAxOTYuNyAwIDI1NnMyMC4yIDExMy45IDU0IDE1Ny4zYy05IDEyLjUtNy45IDMwLjEgMy40IDQxLjNTODYuMiA0NjcgOTguNyA0NThjNDMuNCAzMy44IDk4IDU0IDE1Ny4zIDU0czExMy45LTIwLjIgMTU3LjMtNTRjMTIuNSA5IDMwLjEgNy45IDQxLjMtMy40czEyLjQtMjguOCAzLjQtNDEuM3ptLTQ1LjUtNDYuMWwtNTgtNThjOC42LTE1LjggMTMuNS0zNCAxMy41LTUzLjNzLTQuOS0zNy40LTEzLjUtNTMuM2w1OC01OEM0MzQuOSAxNzYuMSA0NDggMjE0LjUgNDQ4IDI1NnMtMTMuMSA3OS45LTM1LjUgMTExLjJ6TTM2Ny4yIDk5LjVsLTU4IDU4Yy0xNS44LTguNi0zNC0xMy41LTUzLjMtMTMuNXMtMzcuNCA0LjktNTMuMyAxMy41bC01OC01OEMxNzYuMSA3Ny4xIDIxNC41IDY0IDI1NiA2NHM3OS45IDEzLjEgMTExLjIgMzUuNXpNMTU3LjUgMzA5LjNsLTU4IDU4Qzc3LjEgMzM1LjkgNjQgMjk3LjUgNjQgMjU2czEzLjEtNzkuOSAzNS41LTExMS4ybDU4IDU4Yy04LjYgMTUuOC0xMy41IDM0LTEzLjUgNTMuM3M0LjkgMzcuNCAxMy41IDUzLjN6TTIwOCAyNTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAzODRjOS42LTMxLjkgMjkuNS01OS4xIDQ5LjItODYuMmwwIDBjNS4yLTcuMSAxMC40LTE0LjIgMTUuNC0yMS40YzE5LjgtMjguNSAzMS40LTYzIDMxLjQtMTAwLjNDMzY4IDc4LjggMjg5LjIgMCAxOTIgMFMxNiA3OC44IDE2IDE3NmMwIDM3LjMgMTEuNiA3MS45IDMxLjQgMTAwLjNjNSA3LjIgMTAuMiAxNC4zIDE1LjQgMjEuNGwwIDBjMTkuOCAyNy4xIDM5LjcgNTQuNCA0OS4yIDg2LjJIMjcyek0xOTIgNTEyYzQ0LjIgMCA4MC0zNS44IDgwLTgwVjQxNkgxMTJ2MTZjMCA0NC4yIDM1LjggODAgODAgODB6TTExMiAxNzZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZjMC02MS45IDUwLjEtMTEyIDExMi0xMTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MCAzNS44LTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5lc0xlYW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkwLjQgNzQuMWM1LjYtMTYuOC0zLjUtMzQuOS0yMC4yLTQwLjVzLTM0LjkgMy41LTQwLjUgMjAuMmwtMTI4IDM4NGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwxMjgtMzg0em03MC45LTQxLjdjLTE3LjQtMi45LTMzLjkgOC45LTM2LjggMjYuM2wtNjQgMzg0Yy0yLjkgMTcuNCA4LjkgMzMuOSAyNi4zIDM2LjhzMzMuOS04LjkgMzYuOC0yNi4zbDY0LTM4NGMyLjktMTcuNC04LjktMzMuOS0yNi4zLTM2Ljh6TTM1MiAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmtTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ4OS4zIDM1OC4ybDkwLjUtOTAuNWM1Ni41LTU2LjUgNTYuNS0xNDggMC0yMDQuNWMtNTAtNTAtMTI4LjgtNTYuNS0xODYuMy0xNS40bC0xLjYgMS4xYy0xNC40IDEwLjMtMTcuNyAzMC4zLTcuNCA0NC42czMwLjMgMTcuNyA0NC42IDcuNGwxLjYtMS4xYzMyLjEtMjIuOSA3Ni0xOS4zIDEwMy44IDguNmMzMS41IDMxLjUgMzEuNSA4Mi41IDAgMTE0bC05NiA5Ni0zMS45LTI1QzQzMC45IDIzOS42IDQyMC4xIDE3NS4xIDM3NyAxMzJjLTUyLjItNTIuMy0xMzQuNS01Ni4yLTE5MS4zLTExLjdMMzguOCA1LjF6TTIzOSAxNjJjMzAuMS0xNC45IDY3LjctOS45IDkyLjggMTUuM2MyMCAyMCAyNy41IDQ4LjMgMjEuNyA3NC41TDIzOSAxNjJ6TTExNi42IDE4Ny45TDYwLjIgMjQ0LjNjLTU2LjUgNTYuNS01Ni41IDE0OCAwIDIwNC41YzUwIDUwIDEyOC44IDU2LjUgMTg2LjMgMTUuNGwxLjYtMS4xYzE0LjQtMTAuMyAxNy43LTMwLjMgNy40LTQ0LjZzLTMwLjMtMTcuNy00NC42LTcuNGwtMS42IDEuMWMtMzIuMSAyMi45LTc2IDE5LjMtMTAzLjgtOC42Qzc0IDM3MiA3NCAzMjEgMTA1LjUgMjg5LjVsNjEuOC02MS44LTUwLjYtMzkuOXpNMjIwLjkgMjcwYy0yLjEgMzkuOCAxMi4yIDgwLjEgNDIuMiAxMTBjMzguOSAzOC45IDk0LjQgNTEgMTQzLjYgMzYuM0wyMjAuOSAyNzB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc5LjggMjY3LjdjNTYuNS01Ni41IDU2LjUtMTQ4IDAtMjA0LjVjLTUwLTUwLTEyOC44LTU2LjUtMTg2LjMtMTUuNGwtMS42IDEuMWMtMTQuNCAxMC4zLTE3LjcgMzAuMy03LjQgNDQuNnMzMC4zIDE3LjcgNDQuNiA3LjRsMS42LTEuMWMzMi4xLTIyLjkgNzYtMTkuMyAxMDMuOCA4LjZjMzEuNSAzMS41IDMxLjUgODIuNSAwIDExNEw0MjIuMyAzMzQuOGMtMzEuNSAzMS41LTgyLjUgMzEuNS0xMTQgMGMtMjcuOS0yNy45LTMxLjUtNzEuOC04LjYtMTAzLjhsMS4xLTEuNmMxMC4zLTE0LjQgNi45LTM0LjQtNy40LTQ0LjZzLTM0LjQtNi45LTQ0LjYgNy40bC0xLjEgMS42QzIwNi41IDI1MS4yIDIxMyAzMzAgMjYzIDM4MGM1Ni41IDU2LjUgMTQ4IDU2LjUgMjA0LjUgMEw1NzkuOCAyNjcuN3pNNjAuMiAyNDQuM2MtNTYuNSA1Ni41LTU2LjUgMTQ4IDAgMjA0LjVjNTAgNTAgMTI4LjggNTYuNSAxODYuMyAxNS40bDEuNi0xLjFjMTQuNC0xMC4zIDE3LjctMzAuMyA3LjQtNDQuNnMtMzAuMy0xNy43LTQ0LjYtNy40bC0xLjYgMS4xYy0zMi4xIDIyLjktNzYgMTkuMy0xMDMuOC04LjZDNzQgMzcyIDc0IDMyMSAxMDUuNSAyODkuNUwyMTcuNyAxNzcuMmMzMS41LTMxLjUgODIuNS0zMS41IDExNCAwYzI3LjkgMjcuOSAzMS41IDcxLjggOC42IDEwMy45bC0xLjEgMS42Yy0xMC4zIDE0LjQtNi45IDM0LjQgNy40IDQ0LjZzMzQuNCA2LjkgNDQuNi03LjRsMS4xLTEuNkM0MzMuNSAyNjAuOCA0MjcgMTgyIDM3NyAxMzJjLTU2LjUtNTYuNS0xNDgtNTYuNS0yMDQuNSAwTDYwLjIgMjQ0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpcmFTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAxNjAuNGMwLTM1LjUgMjguOC02NC40IDY0LjQtNjQuNGM2LjkgMCAxMy44IDEuMSAyMC40IDMuM2w4MS4yIDI3LjFjMTYuOCA1LjYgMzQuOS0zLjUgNDAuNS0yMC4ycy0zLjUtMzQuOS0yMC4yLTQwLjVMMjE3IDM4LjZjLTEzLjEtNC40LTI2LjgtNi42LTQwLjYtNi42QzEwNS41IDMyIDQ4IDg5LjUgNDggMTYwLjRWMTkySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4djMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ2Yy0yLjIgMTAuNS02LjEgMjAuNi0xMS43IDI5LjlMNC42IDQzMS41Yy01LjkgOS45LTYuMSAyMi4yLS40IDMyLjJTMjAuNSA0ODAgMzIgNDgwSDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg4OC41bC43LTEuMWMxMS42LTE5LjMgMTguOS00MC43IDIxLjYtNjIuOUgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTEyVjI1NkgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTEyVjE2MC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyLjEgMzguMmM5LjkgOC45IDEwLjcgMjQgMS44IDMzLjlsLTcyIDgwYy00LjQgNC45LTEwLjYgNy44LTE3LjIgNy45cy0xMi45LTIuNC0xNy42LTdMNyAxMTNDLTIuMyAxMDMuNi0yLjMgODguNCA3IDc5czI0LjYtOS40IDMzLjkgMGwyMi4xIDIyLjEgNTUuMS02MS4yYzguOS05LjkgMjQtMTAuNyAzMy45LTEuOHptMCAxNjBjOS45IDguOSAxMC43IDI0IDEuOCAzMy45bC03MiA4MGMtNC40IDQuOS0xMC42IDcuOC0xNy4yIDcuOXMtMTIuOS0yLjQtMTcuNi03TDcgMjczYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMjIuMSAyMi4xIDU1LjEtNjEuMmM4LjktOS45IDI0LTEwLjcgMzMuOS0xLjh6TTIyNCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnptMCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTE2MCA0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ4IDM2OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpc3RPbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA1NmMwLTEzLjMgMTAuNy0yNCAyNC0yNEg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxNzZoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRINTZWODBINDhDMzQuNyA4MCAyNCA2OS4zIDI0IDU2ek04Ni43IDM0MS4yYy02LjUtNy40LTE4LjMtNi45LTI0IDEuMkw1MS41IDM1Ny45Yy03LjcgMTAuOC0yMi43IDEzLjMtMzMuNSA1LjZzLTEzLjMtMjIuNy01LjYtMzMuNWwxMS4xLTE1LjZjMjMuNy0zMy4yIDcyLjMtMzUuNiA5OS4yLTQuOWMyMS4zIDI0LjQgMjAuOCA2MC45LTEuMSA4NC43TDg2LjggNDMySDEyMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzMmMtOS41IDAtMTguMi01LjYtMjItMTQuNHMtMi4xLTE4LjkgNC4zLTI1LjlsNzItNzhjNS4zLTUuOCA1LjQtMTQuNiAuMy0yMC41ek0yMjQgNjRINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxNjBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxNjBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdFVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDE0NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTE5MiA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyek02NCA0NjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00OC0yMDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MCA0OEMyNi43IDQ4IDE2IDU4LjcgMTYgNzJ2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRIODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNzJjMC0xMy4zLTEwLjctMjQtMjQtMjRINDB6TTE5MiA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyek0xNiAyMzJ2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRIODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjMyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNNDAgMzY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzOTJjMC0xMy4zLTEwLjctMjQtMjQtMjRINDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpdGVjb2luU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNjRjMC0xNy43LTE0LjMtMzItMzItMzJTNjQgNDYuMyA2NCA2NFYyMTMuNkwyMy4yIDIyNS4yYy0xNyA0LjktMjYuOCAyMi42LTIyIDM5LjZzMjIuNiAyNi44IDM5LjYgMjJMNjQgMjgwLjFWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMjhWMjYxLjlsMTM2LjgtMzkuMWMxNy00LjkgMjYuOC0yMi42IDIyLTM5LjZzLTIyLjYtMjYuOC0zOS42LTIyTDEyOCAxOTUuM1Y2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25BcnJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjkuNiA5Mi4xYzQuOS0xMS45IDIuMS0yNS42LTctMzQuN3MtMjIuOC0xMS45LTM0LjctN2wtMzUyIDE0NGMtMTQuMiA1LjgtMjIuMiAyMC44LTE5LjMgMzUuOHMxNi4xIDI1LjggMzEuNCAyNS44SDIyNFY0MzJjMCAxNS4zIDEwLjggMjguNCAyNS44IDMxLjRzMzAtNS4xIDM1LjgtMTkuM2wxNDQtMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NhdGlvbkNyb3NzaGFpcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjYuN0MzNjguNCA4MC4xIDQzMS45IDE0My42IDQ0NS4zIDIyNEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDQ1LjNDNDMxLjkgMzY4LjQgMzY4LjQgNDMxLjkgMjg4IDQ0NS4zVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDUuM0MxNDMuNiA0MzEuOSA4MC4xIDM2OC40IDY2LjcgMjg4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDY2LjdDODAuMSAxNDMuNiAxNDMuNiA4MC4xIDIyNCA2Ni43VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0xMjggMjU2YTEyOCAxMjggMCAxIDAgMjU2IDAgMTI4IDEyOCAwIDEgMCAtMjU2IDB6bTEyOC04MGE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25Eb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1LjcgNDk5LjJDMjY3IDQzNSAzODQgMjc5LjQgMzg0IDE5MkMzODQgODYgMjk4IDAgMTkyIDBTMCA4NiAwIDE5MmMwIDg3LjQgMTE3IDI0MyAxNjguMyAzMDcuMmMxMi4zIDE1LjMgMzUuMSAxNS4zIDQ3LjQgMHpNMTkyIDEyOGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25QaW5Mb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNS43IDQ5OS4yYzExLTEzLjggMjUuMS0zMS43IDQwLjMtNTIuM1YzNTJjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjI3MmMwLTU1LjYgNDAuNS0xMDEuNyA5My42LTExMC41QzM2NyA3MCAyODcuNyAwIDE5MiAwQzg2IDAgMCA4NiAwIDE5MmMwIDg3LjQgMTE3IDI0MyAxNjguMyAzMDcuMmMxMi4zIDE1LjMgMzUuMSAxNS4zIDQ3LjQgMHpNMTkyIDEyOGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNNDAwIDI0MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEgzNjhWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25QaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE5MmMwIDg3LjQtMTE3IDI0My0xNjguMyAzMDcuMmMtMTIuMyAxNS4zLTM1LjEgMTUuMy00Ny40IDBDMTE3IDQzNSAwIDI3OS40IDAgMTkyQzAgODYgODYgMCAxOTIgMFMzODQgODYgMzg0IDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9ja09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDE0NGMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwdjQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTQ0QzU3NiA2NC41IDUxMS41IDAgNDMyIDBTMjg4IDY0LjUgMjg4IDE0NHY0OEg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFYyNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzUyVjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMTQ0djQ4SDMwNFYxNDRjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6TTgwIDE5MlYxNDRDODAgNjQuNSAxNDQuNSAwIDIyNCAwczE0NCA2NC41IDE0NCAxNDR2NDhoMTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyNTZjMC0zNS4zIDI4LjctNjQgNjQtNjRIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvY3VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTIgMzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMTZjOTguNyAwIDE4MC42IDcxLjQgMTk3IDE2NS40Yy05LTMuNS0xOC44LTUuNC0yOS01LjRINDMxLjhsLTQxLjgtOTcuNWMtMy40LTcuOS0xMC44LTEzLjQtMTkuMy0xNC40cy0xNyAyLjctMjIuMSA5LjZsLTQwLjkgNTUuNS0yMS43LTUwLjdjLTMuMy03LjgtMTAuNS0xMy4yLTE4LjktMTQuM3MtMTYuNyAyLjMtMjIgOC45bC0yNDAgMzA0Yy04LjIgMTAuNC02LjQgMjUuNSA0IDMzLjdzMjUuNSA2LjQgMzMuNy00bDc5LjQtMTAwLjUgNDMgMTYuNC00MC41IDU1Yy03LjkgMTAuNy01LjYgMjUuNyA1LjEgMzMuNnMyNS43IDUuNiAzMy42LTUuMUwyMTUuMSA0MDBoNzQuNWwtMjkuMyA0Mi4zYy03LjUgMTAuOS00LjggMjUuOCA2LjEgMzMuNHMyNS44IDQuOCAzMy40LTYuMUwzNDggNDAwaDgwLjRsMzguOCA2Ny45YzYuNiAxMS41IDIxLjIgMTUuNSAzMi43IDguOXMxNS41LTIxLjIgOC45LTMyLjdMNDgzLjYgNDAwSDQ5NmM0NC4xIDAgNzkuOC0zNS43IDgwLTc5LjdjMC0uMSAwLS4yIDAtLjNWMjgwQzU3NiAxNDMgNDY1IDMyIDMyOCAzMkgzMTJ6bTUwLjUgMTY4bDE3LjEgNDBIMzMzbDI5LjUtNDB6bS04Ny43IDM4LjFsLTEuNCAxLjlIMjI1LjFsMzIuNy00MS41IDE2LjkgMzkuNXpNODguOCAyNDBDNTcuNCAyNDAgMzIgMjY1LjQgMzIgMjk2LjhjMCAxNS41IDYuMyAzMCAxNi45IDQwLjRMMTI2LjcgMjQwSDg4Ljh6TTQ5NiAyODhhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMdW5nc1ZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE1Ni4yYy04LjUtNy42LTE5LjctMTIuMi0zMi0xMi4ycy0yMy41IDQuNi0zMiAxMi4yVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek00NDQuNSAxOTUuNWMtMTYuNC0xNi40LTQxLjgtMTguNS02MC41LTYuMVYxNjUuM0MzODQgMTI3IDQxNSA5NiA0NTMuMyA5NmMyMS43IDAgNDIuOCAxMC4yIDU1LjggMjguOGMxNS40IDIyLjEgNDQuMyA2NS40IDcxIDExNi45YzI2LjUgNTAuOSA1Mi40IDExMi41IDU5LjYgMTcwLjNjLjIgMS4zIC4yIDIuNiAuMiA0djdjMCA0OS4xLTM5LjggODktODkgODljLTcuMyAwLTE0LjUtLjktMjEuNi0yLjdsLTcyLjctMTguMmMtMjAuOS01LjItMzguNy0xNy4xLTUxLjUtMzIuOWMxNCAxLjUgMjguNS0zIDM5LjItMTMuOGwtMjIuNi0yMi42IDIyLjYgMjIuNmMxOC43LTE4LjcgMTguNy00OS4xIDAtNjcuOWMtMS4xLTEuMS0xLjQtMi0xLjUtMi41Yy0uMS0uOC0uMS0xLjggLjQtMi45czEuMi0xLjkgMS44LTIuM2MuNS0uMyAxLjMtLjggMi45LS44YzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4Yy0xLjYgMC0yLjQtLjQtMi45LS44Yy0uNi0uNC0xLjMtMS4yLTEuOC0yLjNzLS41LTIuMi0uNC0yLjljLjEtLjYgLjQtMS40IDEuNS0yLjVjMTguNy0xOC43IDE4LjctNDkuMSAwLTY3Ljl6TTQyMS44IDQyMS44Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMEMzNzUuOSAzOTguNSAzMzYgNDE1IDMzNiA0NDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZjMC0zMy0zOS45LTQ5LjUtNjMuMi0yNi4yYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42QzI0MS41IDM3NS45IDIyNSAzMzYgMTkyIDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmMzMyAwIDQ5LjUtMzkuOSAyNi4yLTYzLjJjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEMyNjQuMSAyNDEuNSAzMDQgMjI1IDMwNCAxOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmMwIDMzIDM5LjkgNDkuNSA2My4yIDI2LjJjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42QzM5OC41IDI2NC4xIDQxNSAzMDQgNDQ4IDMwNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtMzMgMC00OS41IDM5LjktMjYuMiA2My4yYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42ek0xODMuMyA0OTEuMmwtNzIuNyAxOC4yYy03LjEgMS44LTE0LjMgMi43LTIxLjYgMi43Yy00OS4xIDAtODktMzkuOC04OS04OXYtN2MwLTEuMyAuMS0yLjcgLjItNGM3LjItNTcuOSAzMy4xLTExOS40IDU5LjYtMTcwLjNjMjYuOC01MS41IDU1LjYtOTQuOCA3MS0xMTYuOWMxMy0xOC42IDM0LTI4LjggNTUuOC0yOC44QzIyNSA5NiAyNTYgMTI3IDI1NiAxNjUuM3YyNC4xYy0xOC42LTEyLjQtNDQtMTAuMy02MC41IDYuMWMtMTguNyAxOC43LTE4LjcgNDkuMSAwIDY3LjljMS4xIDEuMSAxLjQgMiAxLjUgMi41Yy4xIC44IC4xIDEuOC0uNCAyLjlzLTEuMiAxLjktMS44IDIuM2MtLjUgLjMtMS4zIC44LTIuOSAuOGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OGMxLjYgMCAyLjQgLjQgMi45IC44Yy42IC40IDEuMyAxLjIgMS44IDIuM3MuNSAyLjIgLjQgMi45Yy0uMSAuNi0uNCAxLjQtMS41IDIuNWMtMTguNyAxOC43LTE4LjcgNDkuMSAwIDY3LjljMTAuNyAxMC43IDI1LjMgMTUuMyAzOS4yIDEzLjhjLTEyLjggMTUuOS0zMC42IDI3LjctNTEuNSAzMi45ek0yOTYgMzIwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptNzIgMzJhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHVuZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTY0LjFjMCAxNi40IDguNCAzMS43IDIyLjIgNDAuNWw5LjggNi4yVjE2NS4zQzM4NCAxMjcgNDE1IDk2IDQ1My4zIDk2YzIxLjcgMCA0Mi44IDEwLjIgNTUuOCAyOC44YzE1LjQgMjIuMSA0NC4zIDY1LjQgNzEgMTE2LjljMjYuNSA1MC45IDUyLjQgMTEyLjUgNTkuNiAxNzAuM2MuMiAxLjMgLjIgMi42IC4yIDR2N2MwIDQ5LjEtMzkuOCA4OS04OSA4OWMtNy4zIDAtMTQuNS0uOS0yMS42LTIuN2wtNzIuNy0xOC4yQzQxNCA0ODAuNSAzODQgNDQyLjEgMzg0IDM5OFYzMjVsOTAuNSA1Ny42YzcuNSA0LjcgMTcuMyAyLjUgMjIuMS00LjlzMi41LTE3LjMtNC45LTIyLjFMMzg0IDI4Ny4xdi0uNGwtNDQuMS0yOC4xYy03LjMtNC42LTEzLjktMTAuMS0xOS45LTE2LjFjLTUuOSA2LTEyLjYgMTEuNS0xOS45IDE2LjFMMjU2IDI4Ni43IDE2MS4yIDM0N2wtMTMuNSA4LjZjMCAwIDAgMC0uMSAwYy03LjQgNC44LTkuNiAxNC42LTQuOCAyMi4xYzQuNyA3LjUgMTQuNiA5LjcgMjIuMSA0LjlsOTEuMS01OFYzOThjMCA0NC4xLTMwIDgyLjUtNzIuNyA5My4xbC03Mi43IDE4LjJjLTcuMSAxLjgtMTQuMyAyLjctMjEuNiAyLjdjLTQ5LjEgMC04OS0zOS44LTg5LTg5di03YzAtMS4zIC4xLTIuNyAuMi00YzcuMi01Ny45IDMzLjEtMTE5LjQgNTkuNi0xNzAuM2MyNi44LTUxLjUgNTUuNi05NC44IDcxLTExNi45YzEzLTE4LjYgMzQtMjguOCA1NS44LTI4LjhDMjI1IDk2IDI1NiAxMjcgMjU2IDE2NS4zdjQ1LjVsOS44LTYuMmMxMy44LTguOCAyMi4yLTI0LjEgMjIuMi00MC41VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjcgMzMuNGMxMy41LTQuMSAyOC4xIDEuMSAzNS45IDEyLjlMMjI0IDI5NC4zIDM4OS40IDQ2LjJjNy44LTExLjcgMjIuNC0xNyAzNS45LTEyLjlTNDQ4IDQ5LjkgNDQ4IDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjkuN0wyNTAuNiAzNjkuOGMtNS45IDguOS0xNS45IDE0LjItMjYuNiAxNC4ycy0yMC43LTUuMy0yNi42LTE0LjJMNjQgMTY5LjdWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0QzAgNDkuOSA5LjIgMzcuNSAyMi43IDMzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ25ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2MHY5NkMwIDM3OS43IDEwMC4zIDQ4MCAyMjQgNDgwczIyNC0xMDAuMyAyMjQtMjI0VjE2MEgzMjB2OTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZWMTYwSDB6bTAtMzJIMTI4VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjR2NjR6bTMyMCAwSDQ0OFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3NBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTI0MSAxMTljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMzEgMzFIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDIzOC4xbC0zMSAzMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDcyLTcyYzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC03Mi03MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmlmeWluZ0dsYXNzQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHptLTMxMiA4djY0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC02NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHptODAtOTZWMjgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0em04MCA2NHY5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE4NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmlmeWluZ0dsYXNzRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTIyOCAxMDRjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwdjE0Yy03LjYgMS43LTE1LjIgNC40LTIyLjIgOC41Yy0xMy45IDguMy0yNS45IDIyLjgtMjUuOCA0My45Yy4xIDIwLjMgMTIgMzMuMSAyNC43IDQwLjdjMTEgNi42IDI0LjcgMTAuOCAzNS42IDE0bDEuNyAuNWMxMi42IDMuOCAyMS44IDYuOCAyOCAxMC43YzUuMSAzLjIgNS44IDUuNCA1LjkgOC4yYy4xIDUtMS44IDgtNS45IDEwLjVjLTUgMy4xLTEyLjkgNS0yMS40IDQuN2MtMTEuMS0uNC0yMS41LTMuOS0zNS4xLTguNWMtMi4zLS44LTQuNy0xLjYtNy4yLTIuNGMtMTAuNS0zLjUtMjEuOCAyLjItMjUuMyAxMi42czIuMiAyMS44IDEyLjYgMjUuM2MxLjkgLjYgNCAxLjMgNi4xIDIuMWwwIDAgMCAwYzguMyAyLjkgMTcuOSA2LjIgMjguMiA4LjRWMzEyYzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwVjI5OC4yYzgtMS43IDE2LTQuNSAyMy4yLTljMTQuMy04LjkgMjUuMS0yNC4xIDI0LjgtNDVjLS4zLTIwLjMtMTEuNy0zMy40LTI0LjYtNDEuNmMtMTEuNS03LjItMjUuOS0xMS42LTM3LjEtMTVsLS43LS4yYy0xMi44LTMuOS0yMS45LTYuNy0yOC4zLTEwLjVjLTUuMi0zLjEtNS4zLTQuOS01LjMtNi43YzAtMy43IDEuNC02LjUgNi4yLTkuM2M1LjQtMy4yIDEzLjYtNS4xIDIxLjUtNWM5LjYgLjEgMjAuMiAyLjIgMzEuMiA1LjJjMTAuNyAyLjggMjEuNi0zLjUgMjQuNS0xNC4ycy0zLjUtMjEuNi0xNC4yLTI0LjVjLTYuNS0xLjctMTMuNy0zLjQtMjEuMS00LjdWMTA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3NMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0yODggMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgNDguOCA0Ni41IDExMS42IDY4LjYgMTM4LjZjNiA3LjMgMTYuOCA3LjMgMjIuNyAwYzIyLjEtMjcgNjguNi04OS44IDY4LjYtMTM4LjZ6bS0xMTIgMGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3NNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0xMzYgMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDI4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ25pZnlpbmdHbGFzc1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHpNMTg0IDI5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjIzMmg2NGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMzJWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djY0SDEyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg2NHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmlmeWluZ0dsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTIwOCAzNTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYW5hdFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY5OC43QzY5LjIgMTEzLjkgMCAxOTIuOSAwIDI4OFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhjMC01OS42IDQwLjgtMTA5LjggOTYtMTI0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2NGM1NS4yIDE0LjIgOTYgNjQuMyA5NiAxMjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4YzAtOTUuMS02OS4yLTE3NC4xLTE2MC0xODkuM1Y2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwTG9jYXRpb25Eb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA4IDEyMGMwIDU0LjYtNzMuMSAxNTEuOS0xMDUuMiAxOTJjLTcuNyA5LjYtMjIgOS42LTI5LjYgMEMyNDEuMSAyNzEuOSAxNjggMTc0LjYgMTY4IDEyMEMxNjggNTMuNyAyMjEuNyAwIDI4OCAwczEyMCA1My43IDEyMCAxMjB6bTggODAuNGMzLjUtNi45IDYuNy0xMy44IDkuNi0yMC42Yy41LTEuMiAxLTIuNSAxLjUtMy43bDExNi00Ni40QzU1OC45IDEyMy40IDU3NiAxMzUgNTc2IDE1MlY0MjIuOGMwIDkuOC02IDE4LjYtMTUuMSAyMi4zTDQxNiA1MDNWMjAwLjR6TTEzNy42IDEzOC4zYzIuNCAxNC4xIDcuMiAyOC4zIDEyLjggNDEuNWMyLjkgNi44IDYuMSAxMy43IDkuNiAyMC42VjQ1MS44TDMyLjkgNTAyLjdDMTcuMSA1MDkgMCA0OTcuNCAwIDQ4MC40VjIwOS42YzAtOS44IDYtMTguNiAxNS4xLTIyLjNsMTIyLjYtNDl6TTMyNy44IDMzMmMxMy45LTE3LjQgMzUuNy00NS43IDU2LjItNzdWNTA0LjNMMTkyIDQ0OS40VjI1NWMyMC41IDMxLjMgNDIuMyA1OS42IDU2LjIgNzdjMjAuNSAyNS42IDU5LjEgMjUuNiA3OS42IDB6TTI4OCAxNTJhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuOCAzMTJDMzM0LjkgMjcxLjkgNDA4IDE3NC42IDQwOCAxMjBDNDA4IDUzLjcgMzU0LjMgMCAyODggMFMxNjggNTMuNyAxNjggMTIwYzAgNTQuNiA3My4xIDE1MS45IDEwNS4yIDE5MmM3LjcgOS42IDIyIDkuNiAyOS42IDB6TTQxNiA1MDNsMTQ0LjktNThjOS4xLTMuNiAxNS4xLTEyLjUgMTUuMS0yMi4zVjE1MmMwLTE3LTE3LjEtMjguNi0zMi45LTIyLjNsLTExNiA0Ni40Yy0uNSAxLjItMSAyLjUtMS41IDMuN2MtMi45IDYuOC02LjEgMTMuNy05LjYgMjAuNlY1MDN6TTE1LjEgMTg3LjNDNiAxOTEgMCAxOTkuOCAwIDIwOS42VjQ4MC40YzAgMTcgMTcuMSAyOC42IDMyLjkgMjIuM0wxNjAgNDUxLjhWMjAwLjRjLTMuNS02LjktNi43LTEzLjgtOS42LTIwLjZjLTUuNi0xMy4yLTEwLjQtMjcuNC0xMi44LTQxLjVsLTEyMi42IDQ5ek0zODQgMjU1Yy0yMC41IDMxLjMtNDIuMyA1OS42LTU2LjIgNzdjLTIwLjUgMjUuNi01OS4xIDI1LjYtNzkuNiAwYy0xMy45LTE3LjQtMzUuNy00NS43LTU2LjItNzdWNDQ5LjRsMTkyIDU0LjlWMjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTQ0YTE0NCAxNDQgMCAxIDEgMjg4IDBBMTQ0IDE0NCAwIDEgMSAxNiAxNDR6TTE2MCA4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtNTMgMC05NiA0My05NiA5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2YzAtMzUuMyAyOC43LTY0IDY0LTY0ek0xMjggNDgwVjMxNy4xYzEwLjQgMS45IDIxLjEgMi45IDMyIDIuOXMyMS42LTEgMzItMi45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA0NzYuMUwxOTIgNDIxLjJWMzUuOUwzODQgOTAuOFY0NzYuMXptMzItMS4yVjg4LjRMNTQzLjEgMzcuNWMxNS44LTYuMyAzMi45IDUuMyAzMi45IDIyLjNWMzk0LjZjMCA5LjgtNiAxOC42LTE1LjEgMjIuM0w0MTYgNDc0Ljh6TTE1LjEgOTUuMUwxNjAgMzcuMlY0MjMuNkwzMi45IDQ3NC41QzE3LjEgNDgwLjggMCA0NjkuMiAwIDQ1Mi4yVjExNy40YzAtOS44IDYtMTguNiAxNS4xLTIyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcmtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEgMzFDNDQ1LjEtNC44IDM4Ni45LTQuOCAzNTEgMzFsLTE1IDE1TDMyMi45IDMzQzI5NC44IDQuOSAyNDkuMiA0LjkgMjIxLjEgMzNMMTM1IDExOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwTDI1NSA2Ni45YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwTDMwMi4xIDgwIDE4Ni4zIDE5NS43IDMxNi4zIDMyNS43IDQ4MSAxNjFjMzUuOS0zNS45IDM1LjktOTQuMSAwLTEyOS45ek0yOTMuNyAzNDguM0wxNjMuNyAyMTguMyA5OS41IDI4Mi41Yy00OCA0OC04MC44IDEwOS4yLTk0LjEgMTc1LjhsLTUgMjVjLTEuNiA3LjkgLjkgMTYgNi42IDIxLjdzMTMuOCA4LjEgMjEuNyA2LjZsMjUtNWM2Ni42LTEzLjMgMTI3LjgtNDYuMSAxNzUuOC05NC4xbDY0LjItNjQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc0FuZFZlbnVzQnVyc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDBjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsMzkgMzktMjIuMiAyMi4yQzQ3NS45IDc4LjQgNDM5LjYgNjQgNDAwIDY0Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MGMwIDgwLjIgNTkgMTQ2LjYgMTM2IDE1OC4yVjQwOEgzNTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMjR2MzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NTZoMjRjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDI0VjM4Mi4yYzc3LTExLjYgMTM2LTc4IDEzNi0xNTguMmMwLTMxLjQtOS02MC43LTI0LjctODUuNEw1NjAgMTEzLjlsMzkgMzljNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4yVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDUwNHpNNDAwIDEyOGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpNMTkwLjkgMTguMUMxODguNCAxMiAxODIuNiA4IDE3NiA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNzYgMjg2LjFsNTguNiA1My45YzQuMSAzLjggOS45IDUuMSAxNS4yIDMuNkMyMjMuNiAzMTAuOCAyMDggMjY5LjIgMjA4IDIyNGMwLTYwLjggMjguMy0xMTUgNzIuNC0xNTAuMkwyMjAuMyA5Mi4xbC0yOS40LTc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzQW5kVmVudXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM3LjggMTQuOEMzNDEuNSA1LjggMzUwLjMgMCAzNjAgMEg0NzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTM2YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTM5LTM5LTI0LjcgMjQuN0M0MDcgMTYzLjMgNDE2IDE5Mi42IDQxNiAyMjRjMCA4MC4yLTU5IDE0Ni42LTEzNiAxNTguMlY0MDhoMjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjgwdjMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjQ1NkgyMDhjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMjRWMzgyLjJDMTU1IDM3MC42IDk2IDMwNC4yIDk2IDIyNGMwLTg4LjQgNzEuNi0xNjAgMTYwLTE2MGMzOS42IDAgNzUuOSAxNC40IDEwMy44IDM4LjJMMzgyLjEgODAgMzQzIDQxYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yek00NDggNDhsMCAwaDB2MHpNMzUyIDIyNGE5NiA5NiAwIDEgMCAtMTkyIDAgOTYgOTYgMCAxIDAgMTkyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnNEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDMyYy05LjcgMC0xOC41IDUuOC0yMi4yIDE0LjhzLTEuNyAxOS4zIDUuMiAyNi4ybDMzLjQgMzMuNEwyNzUuOCAxNTljLTI4LjQtMTkuNS02Mi43LTMxLTk5LjgtMzFDNzguOCAxMjggMCAyMDYuOCAwIDMwNHM3OC44IDE3NiAxNzYgMTc2czE3Ni03OC44IDE3Ni0xNzZjMC0zNy0xMS40LTcxLjQtMzEtOTkuOGw1Mi42LTUyLjZMNDA3IDE4NWM2LjkgNi45IDE3LjIgOC45IDI2LjIgNS4yczE0LjgtMTIuNSAxNC44LTIyLjJWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMzEyem04OCA0OGgwdjBsMCAwek02NCAzMDRhMTEyIDExMiAwIDEgMSAyMjQgMEExMTIgMTEyIDAgMSAxIDY0IDMwNHpNMzY4IDQ4MGM5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NmMwLTM3LTExLjQtNzEuNC0zMS05OS44bDUyLjYtNTIuNkw1OTkgMTg1YzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEg1MDRjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOGMtMS4yIDIuOS0xLjggNi0xLjggOWwwIC4ydi4yYzAgNi4yIDIuNSAxMi4yIDcgMTYuOGwzMy40IDMzLjRMNDgwIDE0Ni43VjE2OGMwIDIyLjYtMTMuNiA0My4xLTM0LjYgNTEuN2MtLjggLjMtMS43IC43LTIuNSAxQzQ2NS43IDI0MS4yIDQ4MCAyNzAuOSA0ODAgMzA0YzAgNjEuOS01MC4xIDExMi0xMTIgMTEyYy01LjQgMC0xMC44LS40LTE2LTEuMWMtMTIuOSAyMC40LTI5LjEgMzguMy00OC4xIDUzLjFjMTkuOCA3LjggNDEuNCAxMiA2NCAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAzNjhhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0em0xNzQuNC04OEMzNzAuNyAzNjUuOCAyOTcuMSA0MzIgMjA4IDQzMmMtOTcuMiAwLTE3Ni03OC44LTE3Ni0xNzZzNzguOC0xNzYgMTc2LTE3NmM4OS4xIDAgMTYyLjcgNjYuMiAxNzQuNCAxNTJINDE2VjE3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djU2aDMyVjE3NmMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTgwIDgwYy02LjkgNi45LTE3LjIgOC45LTI2LjIgNS4ycy0xNC44LTEyLjUtMTQuOC0yMi4yVjI4MEg0NjR2NTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDM4Mi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzU3Ryb2tlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ4LjcgNC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzQuNiA0LjYgNS45IDExLjUgMy41IDE3LjRzLTguMyA5LjktMTQuOCA5LjlIMTg0djI0aDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE4NHYyNGMwIC42IDAgMS4yLS4xIDEuOGM3NyAxMS42IDEzNi4xIDc4IDEzNi4xIDE1OC4yYzAgODguNC03MS42IDE2MC0xNjAgMTYwUzAgNDQwLjQgMCAzNTJjMC04MC4yIDU5LjEtMTQ2LjcgMTM2LjEtMTU4LjJjMC0uNi0uMS0xLjItLjEtMS44VjE2OEgxMDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMzJWOTZIOTZjLTYuNSAwLTEyLjMtMy45LTE0LjgtOS45cy0xLjEtMTIuOSAzLjUtMTcuNGw2NC02NHpNMjU2IDM1MkE5NiA5NiAwIDEgMCA2NCAzNTJhOTYgOTYgMCAxIDAgMTkyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnNTdHJva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc2IDBjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsMzMuNCAzMy40TDM3MC4zIDk2LjQgMzQ1IDcxYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDI1LjQgMjUuNEwzMDcuOCAxNTljLTI4LjQtMTkuNS02Mi43LTMxLTk5LjgtMzFjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzZzMTc2LTc4LjggMTc2LTE3NmMwLTM3LTExLjQtNzEuNC0zMS05OS44bDI4LjYtMjguNkw0MDcgMjAxYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMjUuNC0yNS40IDIyLjEtMjIuMUw0NzEgMTUzYzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMlYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzNzZ6bTg4IDQ4aDB2MGwwIDB6TTk2IDMwNGExMTIgMTEyIDAgMSAxIDIyNCAwQTExMiAxMTIgMCAxIDEgOTYgMzA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OS44IDQ2LjhjMy43LTkgMTIuNS0xNC44IDIyLjItMTQuOEg0MjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTY4YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTMzLjQtMzMuNEwzMjEgMjA0LjJjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOGMwIDk3LjItNzguOCAxNzYtMTc2IDE3NlMwIDQwMS4yIDAgMzA0czc4LjgtMTc2IDE3Ni0xNzZjMzcgMCA3MS40IDExLjQgOTkuOCAzMWw1Mi42LTUyLjZMMjk1IDczYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yek00MDAgODBsMCAwaDB2MHpNMTc2IDQxNmExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnRpbmlHbGFzc0NpdHJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgMjQwYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2Yy0zNS41IDAtNjYuNiAxOS4zLTgzLjIgNDhIMjk2LjJDMzE2IDQwLjEgMzY5LjMgMCA0MzIgMGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NHMtNjQuNSAxNDQtMTQ0IDE0NGMtMjcuNyAwLTUzLjUtNy44LTc1LjUtMjEuM2wzNS40LTM1LjRjMTIuMiA1LjYgMjUuOCA4LjcgNDAuMSA4Ljd6TTEuOCAxNDIuOEM1LjUgMTMzLjggMTQuMyAxMjggMjQgMTI4SDM5MmM5LjcgMCAxOC41IDUuOCAyMi4yIDE0LjhzMS43IDE5LjMtNS4yIDI2LjJsLTE3NyAxNzdWNDY0aDY0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIwOCAxMjBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNjRWMzQ1LjlMNyAxNjljLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnRpbmlHbGFzc0VtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTkuMSAwIDcuNCA3LjggMi40IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45TDIyNCAyNjkuM1Y0NDhIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2IDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OFYyNjkuM0w1MDIuNiA1NC42YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45UzQ5Mi45IDAgNDgwIDBIMzJ6TTI1NiAyMTAuN0wxMDkuMyA2NEg0MDIuN0wyNTYgMjEwLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnRpbmlHbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE5LjEgMCA3LjQgNy44IDIuNCAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOUwyMjQgMjY5LjNWNDQ4SDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NiA5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyODhWMjY5LjNMNTAyLjYgNTQuNmM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOVM0OTIuOSAwIDQ4MCAwSDMyek0xNzMuMyAxMjhsLTY0LTY0SDQwMi43bC02NCA2NEgxNzMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFza0ZhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0Yy0yNy4yIDAtNTMuOCA4LTc2LjQgMjMuMWwtMzcuMSAyNC44Yy0xNS44IDEwLjUtMzQuMyAxNi4xLTUzLjMgMTYuMUgxNDQgMTI4IDU2Yy0zMC45IDAtNTYgMjUuMS01NiA1NnY4NWMwIDU1LjEgMzcuNSAxMDMuMSA5MC45IDExNi40bDEwOCAyN0MyMzMuOCA0MzUgMjc1LjQgNDQ4IDMyMCA0NDhzODYuMi0xMyAxMjEuMS0zNS41bDEwOC0yN0M2MDIuNSAzNzIuMSA2NDAgMzI0LjEgNjQwIDI2OVYxODRjMC0zMC45LTI1LjEtNTYtNTYtNTZINTEyIDQ5NmgtOS4yYy0xOSAwLTM3LjUtNS42LTUzLjMtMTYuMUwzOTYuNCA4Ny4xQzM3My44IDcyIDM0Ny4yIDY0IDMyMCA2NHpNMTMyLjMgMzQ2LjNsLTI5LjgtNy40QzcwLjUgMzMwLjkgNDggMzAyLjEgNDggMjY5VjE4NGMwLTQuNCAzLjYtOCA4LThIOTZ2NDhjMCA0NS4xIDEzLjQgODcuMiAzNi4zIDEyMi4zem00MDUuMS03LjRsLTI5LjggNy40YzIzLTM1LjIgMzYuMy03Ny4yIDM2LjMtMTIyLjNWMTc2aDQwYzQuNCAwIDggMy42IDggOHY4NWMwIDMzLTIyLjUgNjEuOC01NC41IDY5Ljl6TTE5MiAyMDhjMC04LjggNy4yLTE2IDE2LTE2SDQzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnptMTYgNDhINDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMTYgODBjMC04LjggNy4yLTE2IDE2LTE2SDQwMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFza1ZlbnRpbGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU5LjEgMTc2QzEzOS40IDIxOS4yIDEyOCAyNjQuNyAxMjggMzAwLjhjMCAxNS45IDIuMiAzMS40IDYuMyA0NmwtMzEuOC03LjlDNzAuNSAzMzAuOSA0OCAzMDIuMSA0OCAyNjlWMTg0YzAtNC40IDMuNi04IDgtOEgxNTkuMXptMjYtNDhINTZjLTMwLjkgMC01NiAyNS4xLTU2IDU2djg1YzAgNTUuMSAzNy41IDEwMy4xIDkwLjkgMTE2LjRsNzEuMyAxNy44YzIyLjcgMzAuNSA1NS40IDU0LjEgOTMuOCA2Ni42VjM5My4zYy0xOS43LTE2LjQtMzItNDAuMy0zMi02Ni45YzAtNDkuNSA0My0xMzQuNCA5Ni0xMzQuNGM1Mi41IDAgOTYgODQuOSA5NiAxMzQuNGMwIDI2LjctMTIuNCA1MC40LTMyIDY2Ljh2NzYuNmMzOC0xMi42IDcwLjYtMzYgOTMuNS02Ni40bDcxLjYtMTcuOUM2MDIuNSAzNzIuMSA2NDAgMzI0LjEgNjQwIDI2OVYxODRjMC0zMC45LTI1LjEtNTYtNTYtNTZINDU0LjVDNDE5LjcgNzMuOCAzNzIuMSAzMiAzMjAgMzJjLTUyLjYgMC0xMDAuMiA0MS44LTEzNC45IDk2em0yOTUuNiA0OEg1ODRjNC40IDAgOCAzLjYgOCA4djg1YzAgMzMtMjIuNSA2MS44LTU0LjUgNjkuOWwtMzEuOCA4YzQuMi0xNC43IDYuNC0zMC4xIDYuNC00Ni4xYzAtMzYuMS0xMS42LTgxLjYtMzEuMy0xMjQuOHpNMjg4IDMyMFY1MTJoNjRWMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCA2NEM2NCA2NCAwIDE2MCAwIDI3MlM4MCA0NDggMTc2IDQ0OGg4LjRjMjQuMiAwIDQ2LjQtMTMuNyA1Ny4yLTM1LjRsMjMuMi00Ni4zYzQuNC04LjggMTMuMy0xNC4zIDIzLjItMTQuM3MxOC44IDUuNSAyMy4yIDE0LjNsMjMuMiA0Ni4zYzEwLjggMjEuNyAzMyAzNS40IDU3LjIgMzUuNEg0MDBjOTYgMCAxNzYtNjQgMTc2LTE3NnMtNjQtMjA4LTI4OC0yMDh6TTk2IDI1NmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA5NiAyNTZ6bTMyMC02NGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFza3NUaGVhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTc0LjYgMzczLjJjNDEuNyAzNi4xIDEwOCA4Mi41IDE2Ni4xIDczLjdjNi4xLS45IDEyLjEtMi41IDE4LTQuNWMtOS4yLTEyLjMtMTcuMy0yNC40LTI0LjItMzUuNGMtMjEuOS0zNS0yOC44LTc1LjItMjUuOS0xMTMuNmMtMjAuNiA0LjEtMzkuMiAxMy01NC43IDI1LjRjLTYuNSA1LjItMTYuMyAxLjMtMTQuOC03YzYuNC0zMy41IDMzLTYwLjkgNjguMi02Ni4zYzIuNi0uNCA1LjMtLjcgNy45LS44bDE5LjQtMTMxLjNjMi0xMy44IDgtMzIuNyAyNS00NS45QzI3OC4yIDUzLjIgMzEwLjUgMzcgMzYzLjIgMzIuMmMtLjgtLjctMS42LTEuNC0yLjQtMi4xQzM0MC42IDE0LjUgMjg4LjQtMTEuNSAxNzUuNyA1LjZTMjAuNSA2MyA1LjcgODMuOUMwIDkxLjktLjggMTAyIC42IDExMS44TDI0LjggMjc2LjFjNS41IDM3LjMgMjEuNSA3Mi42IDQ5LjggOTcuMnptODcuNy0yMTkuNmM0LjQtMy4xIDEwLjgtMiAxMS44IDMuM2MuMSAuNSAuMiAxLjEgLjMgMS42YzMuMiAyMS44LTExLjYgNDItMzMuMSA0NS4zcy00MS41LTExLjgtNDQuNy0zMy41Yy0uMS0uNS0uMS0xLjEtLjItMS42Yy0uNi01LjQgNS4yLTguNCAxMC4zLTYuN2M5IDMgMTguOCAzLjkgMjguNyAyLjRzMTkuMS01LjMgMjYuOC0xMC44ek0yNjEuNiAzOTBjMjkuNCA0Ni45IDc5LjUgMTEwLjkgMTM3LjYgMTE5LjdzMTI0LjUtMzcuNSAxNjYuMS03My43YzI4LjMtMjQuNSA0NC4zLTU5LjggNDkuOC05Ny4ybDI0LjItMTY0LjNjMS40LTkuOCAuNi0xOS45LTUuMS0yNy45Yy0xNC44LTIwLjktNTcuMy02MS4yLTE3MC03OC4zUzI5OS40IDc3LjIgMjc5LjIgOTIuOGMtNy44IDYtMTEuNSAxNS40LTEyLjkgMjUuMkwyNDIuMSAyODIuM2MtNS41IDM3LjMtLjQgNzUuOCAxOS42IDEwNy43ek00MDQuNSAyMzUuM2MtNy43LTUuNS0xNi44LTkuMy0yNi44LTEwLjhzLTE5LjgtLjYtMjguNyAyLjRjLTUuMSAxLjctMTAuOS0xLjMtMTAuMy02LjdjLjEtLjUgLjEtMS4xIC4yLTEuNmMzLjItMjEuOCAyMy4yLTM2LjggNDQuNy0zMy41czM2LjMgMjMuNSAzMy4xIDQ1LjNjLS4xIC41LS4yIDEuMS0uMyAxLjZjLTEgNS4zLTcuNCA2LjQtMTEuOCAzLjN6bTEzNi4yIDE1LjVjLTEgNS4zLTcuNCA2LjQtMTEuOCAzLjNjLTcuNy01LjUtMTYuOC05LjMtMjYuOC0xMC44cy0xOS44LS42LTI4LjcgMi40Yy01LjEgMS43LTEwLjktMS4zLTEwLjMtNi43Yy4xLS41IC4xLTEuMSAuMi0xLjZjMy4yLTIxLjggMjMuMi0zNi44IDQ0LjctMzMuNXMzNi4zIDIzLjUgMzMuMSA0NS4zYy0uMSAuNS0uMiAxLjEtLjMgMS42ek01MzAgMzUwLjJjLTE5LjYgNDQuNy02Ni44IDcyLjUtMTE2LjggNjQuOXMtODcuMS00OC4yLTkzLTk2LjdjLTEtOC4zIDguOS0xMi4xIDE1LjItNi43YzIzLjkgMjAuOCA1My42IDM1LjMgODcgNDAuM3M2Ni4xIC4xIDk0LjktMTIuOGM3LjYtMy40IDE2IDMuMiAxMi42IDEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hdHRyZXNzUGlsbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjU2VjY0em0zMiAzODRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODhWNDQ4ek02NCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1heGltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMCAzMkg1NkM0Mi43IDMyIDMyIDQyLjcgMzIgNTZWMjAwYzAgOS43IDUuOCAxOC41IDE0LjggMjIuMnMxOS4zIDEuNyAyNi4yLTUuMmw0MC00MCA3OSA3OS03OSA3OUw3MyAyOTVjLTYuOS02LjktMTcuMi04LjktMjYuMi01LjJTMzIgMzAyLjMgMzIgMzEyVjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNEgyMDBjOS43IDAgMTguNS01LjggMjIuMi0xNC44czEuNy0xOS4zLTUuMi0yNi4ybC00MC00MCA3OS03OSA3OSA3OS00MCA0MGMtNi45IDYuOS04LjkgMTcuMi01LjIgMjYuMnMxMi41IDE0LjggMjIuMiAxNC44SDQ1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzMTJjMC05LjctNS44LTE4LjUtMTQuOC0yMi4ycy0xOS4zLTEuNy0yNi4yIDUuMmwtNDAgNDAtNzktNzkgNzktNzkgNDAgNDBjNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4yVjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDMxMmMtOS43IDAtMTguNSA1LjgtMjIuMiAxNC44cy0xLjcgMTkuMyA1LjIgMjYuMmw0MCA0MC03OSA3OS03OS03OSA0MC00MGM2LjktNi45IDguOS0xNy4yIDUuMi0yNi4yUzIwOS43IDMyIDIwMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xIDM4LjJDMS40IDM0LjIgMCAyOS40IDAgMjQuNkMwIDExIDExIDAgMjQuNiAwSDEzMy45YzExLjIgMCAyMS43IDUuOSAyNy40IDE1LjVsNjguNSAxMTQuMWMtNDguMiA2LjEtOTEuMyAyOC42LTEyMy40IDYxLjlMNC4xIDM4LjJ6bTUwMy43IDBMNDA1LjYgMTkxLjVjLTMyLjEtMzMuMy03NS4yLTU1LjgtMTIzLjQtNjEuOUwzNTAuNyAxNS41QzM1Ni41IDUuOSAzNjYuOSAwIDM3OC4xIDBINDg3LjRDNTAxIDAgNTEyIDExIDUxMiAyNC42YzAgNC44LTEuNCA5LjYtNC4xIDEzLjZ6TTgwIDMzNmExNzYgMTc2IDAgMSAxIDM1MiAwQTE3NiAxNzYgMCAxIDEgODAgMzM2em0xODQuNC05NC45Yy0zLjQtNy0xMy4zLTctMTYuOCAwbC0yMi40IDQ1LjRjLTEuNCAyLjgtNCA0LjctNyA1LjFMMTY4IDI5OC45Yy03LjcgMS4xLTEwLjcgMTAuNS01LjIgMTZsMzYuMyAzNS40YzIuMiAyLjIgMy4yIDUuMiAyLjcgOC4zbC04LjYgNDkuOWMtMS4zIDcuNiA2LjcgMTMuNSAxMy42IDkuOWw0NC44LTIzLjZjMi43LTEuNCA2LTEuNCA4LjcgMGw0NC44IDIzLjZjNi45IDMuNiAxNC45LTIuMiAxMy42LTkuOWwtOC42LTQ5LjljLS41LTMgLjUtNi4xIDIuNy04LjNsMzYuMy0zNS40YzUuNi01LjQgMi41LTE0LjgtNS4yLTE2bC01MC4xLTcuM2MtMy0uNC01LjctMi40LTctNS4xbC0yMi40LTQ1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lbW9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHY3LjRjMCA2LjggNC40IDEyLjYgMTAuMSAxNi4zQzIzLjMgMTYwLjMgMzIgMTc1LjEgMzIgMTkycy04LjcgMzEuNy0yMS45IDQwLjNDNC40IDIzNiAwIDI0MS44IDAgMjQ4LjZWMzIwSDU3NlYyNDguNmMwLTYuOC00LjQtMTIuNi0xMC4xLTE2LjNDNTUyLjcgMjIzLjcgNTQ0IDIwOC45IDU0NCAxOTJzOC43LTMxLjcgMjEuOS00MC4zYzUuNy0zLjcgMTAuMS05LjUgMTAuMS0xNi4zVjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNNTc2IDM1MkgwdjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDgwVjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDk2VjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDk2VjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDk2VjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MnpNMTkyIDE2MHY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTI4IDB2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6bTEyOCAwdjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZW5vcmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjggNy40QzIyLjggMi45IDI3LjEgMCAzMiAwczkuMiAyLjkgMTEuMiA3LjRMNjEuMyA0OS43YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMlMwIDgxLjcgMCA2NFY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMUwyMC44IDcuNHptOTYgMEMxMTguOCAyLjkgMTIzLjEgMCAxMjggMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjIuOGMwLTQuNSAuOS04LjkgMi43LTEzLjFMMTE2LjggNy40em03Ny44IDQyLjRMMjEyLjggNy40QzIxNC44IDIuOSAyMTkuMSAwIDIyNCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMXpNMzA4LjggNy40QzMxMC44IDIuOSAzMTUuMSAwIDMyMCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMUwzMDguOCA3LjR6bTc3LjggNDIuNEw0MDQuOCA3LjRDNDA2LjggMi45IDQxMS4xIDAgNDE2IDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjYyLjhjMC00LjUgLjktOC45IDIuNy0xMy4xek01MDAuOCA3LjRDNTAyLjggMi45IDUwNy4xIDAgNTEyIDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjYyLjhjMC00LjUgLjktOC45IDIuNy0xMy4xTDUwMC44IDcuNHptNzcuOCA0Mi40TDU5Ni44IDcuNEM1OTguOCAyLjkgNjAzLjEgMCA2MDggMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjIuOGMwLTQuNSAuOS04LjkgMi43LTEzLjF6TTMyIDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMlYyODhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMjg4VjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjMyMEg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMjg4YzAgNTMtNDMgOTYtOTYgOTZIMzUydjY0SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjAgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI4OFYzODRIOTZjLTUzIDAtOTYtNDMtOTYtOTZWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDk2VjI1NiAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTYgMzJIMTkyVjI1NiAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDM4NFYyNTYgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDQ4MFYyNTYgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZXJjdXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcyLjEgN0M4NS44LTQgMTA2LTEuOCAxMTcgMTJjMTcuNiAyMiA0NC43IDM2IDc1IDM2czU3LjMtMTQgNzUtMzZjMTEuMS0xMy44IDMxLjItMTYgNDUtNXMxNiAzMS4yIDUgNDVjLTcuOCA5LjctMTYuNiAxOC40LTI2LjQgMjYuMUMzMzcuMyAxMDkuNyAzNjggMTYzLjMgMzY4IDIyNGMwIDg5LjEtNjYuMiAxNjIuNy0xNTIgMTc0LjRWNDI0aDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIxNnYxNmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0NzJIMTM2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDMyVjM5OC40QzgyLjIgMzg2LjcgMTYgMzEzLjEgMTYgMjI0YzAtNjAuNyAzMC43LTExNC4zIDc3LjUtMTQ1LjlDODMuNyA3MC41IDc0LjkgNjEuNyA2Ny4xIDUyYy0xMS4xLTEzLjgtOC44LTMzLjkgNS00NXpNODAgMjI0YTExMiAxMTIgMCAxIDAgMjI0IDBBMTEyIDExMiAwIDEgMCA4MCAyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lc3NhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2djgwYzAgNi4xIDMuNCAxMS42IDguOCAxNC4zczExLjkgMi4xIDE2LjgtMS41TDMwOS4zIDQxNkg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1ldGVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTMuNyAuOUwyOTkuNCA3NS42bDIuMy0yOS4zYzEtMTIuOC0xMi44LTIxLjUtMjQtMTUuMUwxMDEuMyAxMzMuNEMzOC42IDE2OS43IDAgMjM2LjYgMCAzMDlDMCA0MjEuMSA5MC45IDUxMiAyMDMgNTEyYzcyLjQgMCAxMzkuNC0zOC42IDE3NS43LTEwMS4zTDQ4MC44IDIzNC4zYzYuNS0xMS4xLTIuMi0yNS0xNS4xLTI0bC0yOS4zIDIuM0w1MTEuMSAxOC4zYy42LTEuNSAuOS0zLjIgLjktNC44QzUxMiA2IDUwNiAwIDQ5OC41IDBjLTEuNyAwLTMuMyAuMy00LjggLjl6TTE5MiAxOTJhMTI4IDEyOCAwIDEgMSAwIDI1NiAxMjggMTI4IDAgMSAxIDAtMjU2em0wIDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTE2IDk2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9jaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINjR2NTZIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINjR2NTZIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINjRjMCAzNS4zIDI4LjcgNjQgNjQgNjR2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDhoNTZ2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDhoNTZ2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRoNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDQ4VjI4MGg0MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0NDhWMTc2aDQwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ0OGMwLTM1LjMtMjguNy02NC02NC02NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgyODBWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWNjRIMTc2VjI0ek0xNjAgMTI4SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAzMkgxNjBWMzUySDM1MlYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmVMaW5lc1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDcyLjEgMzQ0LjdjMTUuMi0yNiAyMy45LTU2LjMgMjMuOS04OC43VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHYyNCAxNmMwIDIxLjItNS4xIDQxLjEtMTQuMiA1OC43TDQxNiAzMDAuOFYyNTZIMzU4LjlsLTM0LjUtMjdjMi45LTMuMSA3LTUgMTEuNi01aDgwVjE5MkgzMzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODBWMTI4SDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4MGMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnY1NC4zTDM4LjggNS4xek0zNTguMiAzNzguMkMzNDYuMSAzODIgMzMzLjMgMzg0IDMyMCAzODRjLTcwLjcgMC0xMjgtNTcuMy0xMjgtMTI4di04LjdMMTQ0LjcgMjEwYy0uNSAxLjktLjcgMy45LS43IDZ2NDBjMCA4OS4xIDY2LjIgMTYyLjcgMTUyIDE3NC40VjQ2NEgyNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNzIgNzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzQ0VjQzMC40YzIwLjQtMi44IDM5LjctOS4xIDU3LjMtMTguMmwtNDMuMS0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgOTZWMjU2YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZIMjA4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDgwVjE5MkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODBWMTI4SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4MGMwLTUzLTQzLTk2LTk2LTk2Uzk2IDQzIDk2IDk2ek0zMjAgMjQwdjE2YzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY0MGMwIDg5LjEgNjYuMiAxNjIuNyAxNTIgMTc0LjRWNDY0SDEyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg3MiA3MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMTZWNDMwLjRjODUuOC0xMS43IDE1Mi04NS4zIDE1Mi0xNzQuNFYyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ3Mi4xIDM0NC43YzE1LjItMjYgMjMuOS01Ni4zIDIzLjktODguN1YyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NDBjMCAyMS4yLTUuMSA0MS4xLTE0LjIgNTguN0w0MTYgMzAwLjhWOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZ2NTQuM0wzOC44IDUuMXptMzYyLjUgNDA3bC00My4xLTMzLjlDMzQ2LjEgMzgyIDMzMy4zIDM4NCAzMjAgMzg0Yy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOHYtOC43TDE0NC43IDIxMGMtLjUgMS45LS43IDMuOS0uNyA2djQwYzAgODkuMSA2Ni4yIDE2Mi43IDE1MiAxNzQuNFY0NjRIMjQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDcyIDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM0NFY0MzAuNGMyMC40LTIuOCAzOS43LTkuMSA1Ny4zLTE4LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBDMTM5IDAgOTYgNDMgOTYgOTZWMjU2YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZWOTZjMC01My00My05Ni05Ni05NnpNNjQgMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djQwYzAgODkuMSA2Ni4yIDE2Mi43IDE1MiAxNzQuNFY0NjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDcyIDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIxNlY0MzAuNGM4NS44LTExLjcgMTUyLTg1LjMgMTUyLTE3NC40VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY0MGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOHMtMTI4LTU3LjMtMTI4LTEyOFYyMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3Jvc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjI4OGMwIDE3LjctMTQuMyAzMi0zMiAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzIgNDQ4SDMyMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOHMtNTcuMy0xMjgtMTI4LTEyOFYxMjhjMTA2IDAgMTkyIDg2IDE5MiAxOTJjMCA0OS4yLTE4LjUgOTQtNDguOSAxMjhINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMCAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptODAtNjRIMzA0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWlsbFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAyLjEgNDIuOGM1LjktMTYuNi0yLjctMzUtMTkuNC00MC45cy0zNSAyLjctNDAuOSAxOS40TDIwOCAxMTYuMWMtNS43IDQtMTEuMSA4LjUtMTYgMTMuNUMxNzEuNyAxMDguOSAxNDMuMyA5NiAxMTIgOTZjLTE5LjUgMC0zNy44IDUtNTMuNyAxMy43QzUyLjUgMTAxLjQgNDIuOSA5NiAzMiA5NkMxNC4zIDk2IDAgMTEwLjMgMCAxMjh2ODBWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjA4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2NDIuNUw4MS45IDQ2OS4yYy01LjkgMTYuNiAyLjcgMzUgMTkuNCA0MC45czM1LTIuNyA0MC45LTE5LjRsMjEuNC02MEMxNjguOSA0NDEgMTc5LjYgNDQ4IDE5MiA0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjYxLjVsMzUuNy0xMDBjMy45LTEgOC4xLTEuNiAxMi4zLTEuNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMDhjMC01OC4yLTQ0LjMtMTA2LTEwMS4xLTExMS41bDE5LjItNTMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU2IDIyNEgzMTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjU2YzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMmw0MCA0MEw0NDIuMyA1LjdDNDQ2IDIgNDUwLjkgMCA0NTYgMHMxMCAyIDEzLjcgNS43bDM2LjcgMzYuN0M1MTAgNDYgNTEyIDUwLjkgNTEyIDU2cy0yIDEwLTUuNyAxMy43TDQzMyAxNDNsNDAgNDBjNi45IDYuOSA4LjkgMTcuMiA1LjIgMjYuMnMtMTIuNSAxNC44LTIyLjIgMTQuOHptMCA2NGM5LjcgMCAxOC41IDUuOCAyMi4yIDE0LjhzMS43IDE5LjMtNS4yIDI2LjJsLTQwIDQwIDczLjQgNzMuNGMzLjYgMy42IDUuNyA4LjUgNS43IDEzLjdzLTIgMTAtNS43IDEzLjdsLTM2LjcgMzYuN0M0NjYgNTEwIDQ2MS4xIDUxMiA0NTYgNTEycy0xMC0yLTEzLjctNS43TDM2OSA0MzNsLTQwIDQwYy02LjkgNi45LTE3LjIgOC45LTI2LjIgNS4ycy0xNC44LTEyLjUtMTQuOC0yMi4yVjMxMmMwLTEzLjMgMTAuNy0yNCAyNC0yNEg0NTZ6bS0yNTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY0NTZjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtNDAtNDBMNjkuNyA1MDYuM0M2NiA1MTAgNjEuMSA1MTIgNTYgNTEycy0xMC0yLTEzLjctNS43TDUuNyA0NjkuN0MyIDQ2NiAwIDQ2MS4xIDAgNDU2czItMTAgNS43LTEzLjdMNzkgMzY5IDM5IDMyOWMtNi45LTYuOS04LjktMTcuMi01LjItMjYuMnMxMi41LTE0LjggMjIuMi0xNC44SDIwMHpNNTYgMjI0Yy05LjcgMC0xOC41LTUuOC0yMi4yLTE0LjhzLTEuNy0xOS4zIDUuMi0yNi4ybDQwLTQwTDUuNyA2OS43QzIgNjYgMCA2MS4xIDAgNTZzMi0xMCA1LjctMTMuN0w0Mi4zIDUuN0M0NiAyIDUwLjkgMCA1NiAwczEwIDIgMTMuNyA1LjdMMTQzIDc5bDQwLTQwYzYuOS02LjkgMTcuMi04LjkgMjYuMi01LjJzMTQuOCAxMi41IDE0LjggMjIuMlYyMDBjMCAxMy4zLTEwLjcgMjQtMjQgMjRINTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiAyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJMNDggMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDM1MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXR0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDM4NEg2NEw1LjQgMTc4LjlDMS44IDE2Ni40IDAgMTUzLjQgMCAxNDAuM0MwIDYyLjggNjIuOCAwIDE0MC4zIDBoMy40YzY2IDAgMTIzLjUgNDQuOSAxMzkuNSAxMDguOWwzMS40IDEyNS44IDE3LjYtMjAuMUMzNDQuOCAyMDAuMiAzNjIuOSAxOTIgMzgyIDE5MmgyLjhjMzQuOSAwIDYzLjMgMjguMyA2My4zIDYzLjNjMCAxNS45LTYgMzEuMi0xNi44IDQyLjlMMzUyIDM4NHpNMzIgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2JpbGVCdXR0b24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMEM0NC43IDAgMTYgMjguNyAxNiA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzA0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDgwek0xOTIgNDAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9iaWxlUmV0cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjU2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTY0IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04MCAzNTJhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0yNCA1NmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwem01Ni01NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTI0IDU2YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTU2LTU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjQgNTZhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNMTI4IDQ4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9iaWxlU2NyZWVuQnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDY0QzE2IDI4LjcgNDQuNyAwIDgwIDBIMzA0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTIyNCA0NDhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzA0IDY0SDgwVjM4NEgzMDRWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vYmlsZVNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2NEMxNiAyOC43IDQ0LjcgMCA4MCAwSDMwNGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIODBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0xNDQgNDQ4YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMzA0IDY0SDgwVjM4NEgzMDRWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vYmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAwQzQ0LjcgMCAxNiAyOC43IDE2IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMDRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIODB6bTgwIDQzMmg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNjBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbDFXYXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTEyLjVWNDIyLjNjMCAxOCAxMC4xIDM1IDI3IDQxLjNjODcgMzIuNSAxNzQgMTAuMyAyNjEtMTEuOWM3OS44LTIwLjMgMTU5LjYtNDAuNyAyMzkuMy0xOC45YzIzIDYuMyA0OC43LTkuNSA0OC43LTMzLjRWODkuN2MwLTE4LTEwLjEtMzUtMjctNDEuM0M0NjIgMTUuOSAzNzUgMzguMSAyODggNjAuM0MyMDguMiA4MC42IDEyOC40IDEwMC45IDQ4LjcgNzkuMUMyNS42IDcyLjggMCA4OC42IDAgMTEyLjV6TTEyOCA0MTZINjRWMzUyYzM1LjMgMCA2NCAyOC43IDY0IDY0ek02NCAyMjRWMTYwaDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0ek00NDggMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0djY0SDQ0OHptNjQtMTkyYy0zNS4zIDAtNjQtMjguNy02NC02NGg2NHY2NHpNMzg0IDI1NmMwIDYxLjktNDMgMTEyLTk2IDExMnMtOTYtNTAuMS05Ni0xMTJzNDMtMTEyIDk2LTExMnM5NiA1MC4xIDk2IDExMnpNMjUyIDIwOGMwIDkuNyA2LjkgMTcuNyAxNiAxOS42VjI3NmgtNGMtMTEgMC0yMCA5LTIwIDIwczkgMjAgMjAgMjBoMjQgMjRjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwaC00VjIwOGMwLTExLTktMjAtMjAtMjBIMjcyYy0xMSAwLTIwIDktMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbDEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTY0IDMyMEg2NFYzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjR6TTY0IDE5MlYxMjhoNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjR6TTQ0OCAzODRjMC0zNS4zIDI4LjctNjQgNjQtNjR2NjRINDQ4em02NC0xOTJjLTM1LjMgMC02NC0yOC43LTY0LTY0aDY0djY0ek0xNzYgMjU2YTExMiAxMTIgMCAxIDEgMjI0IDAgMTEyIDExMiAwIDEgMSAtMjI0IDB6bTc2LTQ4YzAgOS43IDYuOSAxNy43IDE2IDE5LjZWMjc2aC00Yy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMGgyNCAyNGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBoLTRWMjA4YzAtMTEtOS0yMC0yMC0yMEgyNzJjLTExIDAtMjAgOS0yMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsVHJhbnNmZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM1IDQxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNjQgNjRjNC41IDQuNSA3IDEwLjYgNyAxN3MtMi41IDEyLjUtNyAxN2wtNjQgNjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMjMtMjNMMzg0IDExMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxNzQuMSAwTDUzNSA0MXpNMTA1IDM3N2wtMjMgMjNMMjU2IDQwMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEw4MS45IDQ0OGwyMyAyM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcgNDQxYy00LjUtNC41LTctMTAuNi03LTE3czIuNS0xMi41IDctMTdsNjQtNjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45ek05NiA2NEgzMzcuOWMtMy43IDcuMi01LjkgMTUuMy01LjkgMjRjMCAyOC43IDIzLjMgNTIgNTIgNTJsMTE3LjQgMGMtNCAxNyAuNiAzNS41IDEzLjggNDguOGMyMC4zIDIwLjMgNTMuMiAyMC4zIDczLjUgMEw2MDggMTY5LjVWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDMwMi4xYzMuNy03LjIgNS45LTE1LjMgNS45LTI0YzAtMjguNy0yMy4zLTUyLTUyLTUybC0xMTcuNCAwYzQtMTctLjYtMzUuNS0xMy44LTQ4LjhjLTIwLjMtMjAuMy01My4yLTIwLjMtNzMuNSAwTDMyIDM0Mi41VjEyOGMwLTM1LjMgMjguNy02NCA2NC02NHptNjQgNjRIOTZ2NjRjMzUuMyAwIDY0LTI4LjcgNjQtNjR6TTU0NCAzMjBjLTM1LjMgMC02NCAyOC43LTY0IDY0aDY0VjMyMHpNMzIwIDM1MmE5NiA5NiAwIDEgMCAwLTE5MiA5NiA5NiAwIDEgMCAwIDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsVHJlbmRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzAuNyA5LjRjMyAzLjEgNS4zIDYuNiA2LjkgMTAuM3MyLjQgNy44IDIuNCAxMi4ybDAgLjF2MCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMDkuM0wzMTAuNiAyMTQuNmMtMTEuOCAxMS44LTMwLjggMTIuNi00My41IDEuN0wxNzYgMTM4LjEgODQuOCAyMTYuM2MtMTMuNCAxMS41LTMzLjYgOS45LTQ1LjEtMy41cy05LjktMzMuNiAzLjUtNDUuMWwxMTItOTZjMTItMTAuMyAyOS43LTEwLjMgNDEuNyAwbDg5LjUgNzYuN0wzNzAuNyA2NEgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTYgMGM4LjggMCAxNi44IDMuNiAyMi42IDkuM2wuMSAuMXpNMCAzMDRjMC0yNi41IDIxLjUtNDggNDgtNDhINDY0YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzA0ek00OCA0MTZ2NDhIOTZjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTk2IDMwNEg0OHY0OGMyNi41IDAgNDgtMjEuNSA0OC00OHpNNDY0IDQxNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhoNDhWNDE2ek00MTYgMzA0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4VjMwNEg0MTZ6bS05NiA4MGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbFdhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMTIuNVY0MjIuM2MwIDE4IDEwLjEgMzUgMjcgNDEuM2M4NyAzMi41IDE3NCAxMC4zIDI2MS0xMS45Yzc5LjgtMjAuMyAxNTkuNi00MC43IDIzOS4zLTE4LjljMjMgNi4zIDQ4LjctOS41IDQ4LjctMzMuNFY4OS43YzAtMTgtMTAuMS0zNS0yNy00MS4zQzQ2MiAxNS45IDM3NSAzOC4xIDI4OCA2MC4zQzIwOC4yIDgwLjYgMTI4LjQgMTAwLjkgNDguNyA3OS4xQzI1LjYgNzIuOCAwIDg4LjYgMCAxMTIuNXpNMjg4IDM1MmMtNDQuMiAwLTgwLTQzLTgwLTk2czM1LjgtOTYgODAtOTZzODAgNDMgODAgOTZzLTM1LjggOTYtODAgOTZ6TTY0IDM1MmMzNS4zIDAgNjQgMjguNyA2NCA2NEg2NFYzNTJ6bTY0LTIwOGMwIDM1LjMtMjguNyA2NC02NCA2NFYxNDRoNjR6TTUxMiAzMDR2NjRINDQ4YzAtMzUuMyAyOC43LTY0IDY0LTY0ek00NDggOTZoNjR2NjRjLTM1LjMgMC02NC0yOC43LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25leUJpbGxXaGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnpNNTYgMTZoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTZDNDIuNyA2NCAzMiA1My4zIDMyIDQwczEwLjctMjQgMjQtMjR6TTI0IDg4SDEzNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRTMTAuNyA4OCAyNCA4OHptOCA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTI3MiAxNmMwLTguOCA3LjItMTYgMTYtMTZjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MHpNNDAwIDBjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE0NGMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzguOCAwIDE2IDcuMiAxNiAxNnpNMzUyIDEyOGM4LjggMCAxNiA3LjIgMTYgMTZjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTk2IDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODBjOC44IDAgMTYgNy4yIDE2IDE2ek0wIDMwNGMwLTI2LjUgMjEuNS00OCA0OC00OEg0NjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzMDR6TTQ4IDQxNnY0OEg5NmMwLTI2LjUtMjEuNS00OC00OC00OHpNOTYgMzA0SDQ4djQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4ek00NjQgNDE2Yy0yNi41IDAtNDggMjEuNS00OCA0OGg0OFY0MTZ6TTQxNiAzMDRjMCAyNi41IDIxLjUgNDggNDggNDhWMzA0SDQxNnptLTk2IDgwYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCAzMjBINjRWMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0ek02NCAxOTJWMTI4aDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0ek00NDggMzg0YzAtMzUuMyAyOC43LTY0IDY0LTY0djY0SDQ0OHptNjQtMTkyYy0zNS4zIDAtNjQtMjguNy02NC02NGg2NHY2NHpNMjg4IDE2MGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA5NlYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE2MGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6bTY0IDE2MGMzNS4zIDAgNjQgMjguNyA2NCA2NEgxNjBWMjU2ek0yMjQgOTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRWOTZoNjR6TTU3NiAyNTZ2NjRINTEyYzAtMzUuMyAyOC43LTY0IDY0LTY0ek01MTIgOTZoNjR2NjRjLTM1LjMgMC02NC0yOC43LTY0LTY0ek0yODggMjA4YTgwIDgwIDAgMSAxIDE2MCAwIDgwIDgwIDAgMSAxIC0xNjAgMHpNNDggMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0UzAgMTA2LjcgMCAxMjBWMzYwYzAgNjYuMyA1My43IDEyMCAxMjAgMTIwSDUyMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMjBjLTM5LjggMC03Mi0zMi4yLTcyLTcyVjEyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlDaGVja0RvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjcyIDE5Mkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek0yNTYgMzA0YzAtOC44IDcuMi0xNiAxNi0xNkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZ6TTE2NCAxNTJ2MTMuOWM3LjUgMS4yIDE0LjYgMi45IDIxLjEgNC43YzEwLjcgMi44IDE3IDEzLjggMTQuMiAyNC41cy0xMy44IDE3LTI0LjUgMTQuMmMtMTEtMi45LTIxLjYtNS0zMS4yLTUuMmMtNy45LS4xLTE2IDEuOC0yMS41IDVjLTQuOCAyLjgtNi4yIDUuNi02LjIgOS4zYzAgMS44IC4xIDMuNSA1LjMgNi43YzYuMyAzLjggMTUuNSA2LjcgMjguMyAxMC41bC43IC4yYzExLjIgMy40IDI1LjYgNy43IDM3LjEgMTVjMTIuOSA4LjEgMjQuMyAyMS4zIDI0LjYgNDEuNmMuMyAyMC45LTEwLjUgMzYuMS0yNC44IDQ1Yy03LjIgNC41LTE1LjIgNy4zLTIzLjIgOVYzNjBjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwVjM0NS40Yy0xMC4zLTIuMi0yMC01LjUtMjguMi04LjRsMCAwIDAgMGMtMi4xLS43LTQuMS0xLjQtNi4xLTIuMWMtMTAuNS0zLjUtMTYuMS0xNC44LTEyLjYtMjUuM3MxNC44LTE2LjEgMjUuMy0xMi42YzIuNSAuOCA0LjkgMS43IDcuMiAyLjRjMTMuNiA0LjYgMjQgOC4xIDM1LjEgOC41YzguNiAuMyAxNi41LTEuNiAyMS40LTQuN2M0LjEtMi41IDYtNS41IDUuOS0xMC41YzAtMi45LS44LTUtNS45LTguMmMtNi4zLTQtMTUuNC02LjktMjgtMTAuN2wtMS43LS41Yy0xMC45LTMuMy0yNC42LTcuNC0zNS42LTE0Yy0xMi43LTcuNy0yNC42LTIwLjUtMjQuNy00MC43Yy0uMS0yMS4xIDExLjgtMzUuNyAyNS44LTQzLjljNi45LTQuMSAxNC41LTYuOCAyMi4yLTguNVYxNTJjMC0xMSA5LTIwIDIwLTIwczIwIDkgMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTQ4IDE2MEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek05NiAzMzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnpNMzc2IDE2MGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgzNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9udW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgwLjcgNC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDgwIDgwYzIuNSAyLjUgNC4xIDUuOCA0LjYgOS4zbDQwLjIgMzIySDU1LjlMOTYuMSA5NGMuNC0zLjUgMi02LjggNC42LTkuM2w4MC04MHpNMTUyIDI3MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxNTJ6TTMyIDQ0OEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjUgMzJDMTAwIDMyIDAgMTMyLjMgMCAyNTZTMTAwIDQ4MCAyMjMuNSA0ODBjNjAuNiAwIDExNS41LTI0LjIgMTU1LjgtNjMuNGM1LTQuOSA2LjMtMTIuNSAzLjEtMTguN3MtMTAuMS05LjctMTctOC41Yy05LjggMS43LTE5LjggMi42LTMwLjEgMi42Yy05Ni45IDAtMTc1LjUtNzguOC0xNzUuNS0xNzZjMC02NS44IDM2LTEyMy4xIDg5LjMtMTUzLjNjNi4xLTMuNSA5LjItMTAuNSA3LjctMTcuM3MtNy4zLTExLjktMTQuMy0xMi41Yy02LjMtLjUtMTIuNi0uOC0xOS0uOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9ydGFyUGVzdGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC4zIDExLjFDNDkzLjMtMS42IDQ3NC41LTMuNyA0NjEgNi4yTDI1Mi4zIDE2MEgzOTcuM0w1MDIuNiA1NC42YzExLjgtMTEuOCAxMi42LTMwLjggMS42LTQzLjV6TTMyIDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmMwIDgyLjUgNDMuNCAxNDcuNyAxMjMuOSAxNzYuMmMtMTEuMSAxMy45LTE5LjQgMzAuMy0yMy45IDQ4LjFDMTI3LjYgNDk3LjQgMTQyLjMgNTEyIDE2MCA1MTJIMzUyYzE3LjcgMCAzMi40LTE0LjYgMjguMS0zMS43Yy00LjUtMTcuOC0xMi44LTM0LjEtMjMuOS00OC4xQzQzNi42IDQwMy43IDQ4MCAzMzguNSA0ODAgMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3NxdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBjNSAwIDkuOCAyLjQgMTIuOCA2LjRjMzQuNyA0Ni4zIDc4LjEgNzQuOSAxMzMuNSAxMTEuNWwwIDAgMCAwYzUuMiAzLjQgMTAuNSA3IDE2IDEwLjZjMjguOSAxOS4yIDQ1LjcgNTEuNyA0NS43IDg2LjFjMCAyOC42LTExLjMgNTQuNS0yOS44IDczLjRIMjIxLjhjLTE4LjQtMTktMjkuOC00NC45LTI5LjgtNzMuNGMwLTM0LjQgMTYuNy02Ni45IDQ1LjctODYuMWM1LjQtMy42IDEwLjgtNy4xIDE2LTEwLjZsMCAwIDAgMEMzMDkuMSA4MS4zIDM1Mi41IDUyLjcgMzg3LjIgNi40YzMtNCA3LjgtNi40IDEyLjgtNi40ek0yODggNTEyVjQ0MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY3MkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDU2MFY0NDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NzJINDQ4VjQ1NGMwLTE5LTguNC0zNy0yMy00OS4yTDQwMCAzODRsLTI1IDIwLjhDMzYwLjQgNDE3IDM1MiA0MzUgMzUyIDQ1NHY1OEgyODh6TTcwLjQgNS4yYzUuNy00LjMgMTMuNS00LjMgMTkuMiAwbDE2IDEyQzEzOS44IDQyLjkgMTYwIDgzLjIgMTYwIDEyNnYySDB2LTJDMCA4My4yIDIwLjIgNDIuOSA1NC40IDE3LjJsMTYtMTJ6TTAgMTYwSDE2MFYyOTYuNmMtMTkuMSAxMS4xLTMyIDMxLjctMzIgNTUuNFY0ODBjMCA5LjYgMi4xIDE4LjYgNS44IDI2LjhjLTYuNiAzLjQtMTQgNS4yLTIxLjggNS4ySDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNzYgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3NxdWl0b05ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjguOCA0NjIuM2MtNy45LTQtMTEuMS0xMy42LTcuMi0yMS41TDE5MiAzODAuMmwwLTQ0LjJjMC00LjIgMS43LTguMyA0LjctMTEuM0wyNTYgMjY1LjRWMjQyLjJMMTM5LjIgMzQ0Qzg3LjggMzk1LjMgMCAzNTguOSAwIDI4Ni4zYzAtNDEuMSAzMC42LTc1LjggNzEuNC04MC45bDE1OS45LTIzLjktNDkuNi00MS4zYy01LjEtNC4yLTctMTEuMS00LjktMTcuNGwxMy45LTQxLjctMjktNTguMWMtNC03LjktLjctMTcuNSA3LjItMjEuNXMxNy41LS43IDIxLjUgNy4ybDMyIDY0YzEuOSAzLjggMi4yIDguMiAuOSAxMi4ybC0xMi41IDM3LjZMMjU2IDE2MC41VjEzNy45YzAtMTQuOSAxMC4xLTI3LjMgMjMuOC0zMVY2My43YzAtNC41IDMuNy04LjIgOC4yLTguMnM4LjIgMy43IDguMiA4LjJWMTA3YzEzLjcgMy42IDIzLjggMTYuMSAyMy44IDMxdjIyLjZsNDUuNC0zNy44TDM1Mi44IDg1LjFjLTEuMy00LTEtOC40IC45LTEyLjJsMzItNjRjNC03LjkgMTMuNi0xMS4xIDIxLjUtNy4yczExLjEgMTMuNiA3LjIgMjEuNWwtMjkgNTguMSAxMy45IDQxLjdjMi4xIDYuMiAuMSAxMy4xLTQuOSAxNy40bC00OS42IDQxLjMgMTU5LjkgMjMuOWMyMi41IDIuOCA0MS44IDE0LjYgNTQuNyAzMS40Yy0yLjcgMi42LTUuMiA1LjQtNy4zIDguNmMtOC42LTEyLjktMjMuMy0yMS41LTQwLTIxLjVzLTMxLjQgOC41LTQwIDIxLjVjLTguNi0xMi45LTIzLjMtMjEuNS00MC0yMS41Yy0yMS43IDAtNDAgMTQuMy00NS45IDM0LjFjLTEwLjcgMy4yLTE5LjggMTAuMS0yNS45IDE5LjJsLTQwLjItMzV2MjMuMWwzMi40IDMyLjRjLS4zIDItLjQgNC4xLS40IDYuMmMwIDE2LjcgOC41IDMxLjQgMjEuNSA0MGMtNCAyLjYtNy41IDUuOS0xMC42IDkuNUwzMjAgMzEwLjZ2NTBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ2LTUwbC0zMiAzMiAwIDQxLjRjMCAyLjUtLjYgNC45LTEuNyA3LjJsLTMyIDY0Yy00IDcuOS0xMy42IDExLjEtMjEuNSA3LjJ6TTUxMiAyNTZjOC44IDAgMTYgNy4yIDE2IDE2djE2aDQ4VjI3MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDYwOHY0OGgxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg2MDh2NDhoMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINjA4djE2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjQ4MEg1Mjh2MTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNDgwSDQ0OHYxNmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY0ODBINDAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDE2VjQwMEg0MDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMTZWMzIwSDQwMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgxNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYxNmg0OFYyNzJjMC04LjggNy4yLTE2IDE2LTE2em0xNiAxMTJoNDhWMzIwSDUyOHY0OHptMCA4MGg0OFY0MDBINTI4djQ4ek00NDggMzIwdjQ4aDQ4VjMyMEg0NDh6bTAgODB2NDhoNDhWNDAwSDQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9zcXVpdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYzLjcgNTA1LjljOS44LTguOSAxMC43LTI0LjMgMi4xLTM0LjNsLTQyLjEtNDkgMC01NC43YzAtNS41LTEuOC0xMC44LTUuMS0xNS4xTDM1MiAyNjYuM2wwLS4zTDQ4NS40IDM4Ny44QzU0Mi40IDQ0Ny42IDY0MCA0MDUuMiA2NDAgMzIwLjZjMC00Ny45LTM0LTg4LjMtNzkuNC05NC4ybC0xNTMtMjMuOSA0MC44LTQwLjljNy44LTcuOCA5LjQtMjAuMSAzLjktMjkuOEw0MjguNSA5MC4xbDM4LjItNTAuOWM4LTEwLjYgNi4xLTI1LjktNC4zLTM0LjFzLTI1LjItNi4zLTMzLjIgNC40bC00OCA2My45Yy01LjkgNy45LTYuNiAxOC42LTEuNyAyNy4yTDQwMi4yIDE0MCAzNTIgMTkwLjNsMC0zOC4yYzAtMTQuOS0xMC4yLTI3LjQtMjQtMzFsMC01Ny4yYzAtNC40LTMuNi04LTgtOHMtOCAzLjYtOCA4bDAgNTcuMmMtMTMuOCAzLjYtMjQgMTYuMS0yNCAzMWwwIDM4LjFMMjM3LjggMTQwbDIyLjYtMzkuNWM0LjktOC42IDQuMi0xOS4zLTEuNy0yNy4ybC00OC02My45Yy04LTEwLjYtMjIuOC0xMi42LTMzLjItNC40cy0xMi4yIDIzLjUtNC4zIDM0LjFsMzguMiA1MC45LTIzLjkgNDEuN2MtNS41IDkuNy0zLjkgMjIgMy45IDI5LjhsNDAuOCA0MC45LTE1MyAyMy45QzM0IDIzMi4zIDAgMjcyLjcgMCAzMjAuNmMwIDg0LjYgOTcuNiAxMjcgMTU0LjYgNjcuMUwyODggMjY2bDAgLjMtNjYuNSA4Ni40Yy0zLjMgNC4zLTUuMSA5LjYtNS4xIDE1LjFsMCA1NC43LTQyLjEgNDljLTguNiAxMC4xLTcuNyAyNS41IDIuMSAzNC4zczI0LjcgNy45IDMzLjQtMi4xbDQ4LTU1LjljMy44LTQuNCA1LjktMTAuMiA1LjktMTYuMWwwLTU1LjRMMjg4IDM0NC43bDAgNjMuMWMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNjMuMSAyNC4zIDMxLjYgMCA1NS40YzAgNS45IDIuMSAxMS43IDUuOSAxNi4xbDQ4IDU1LjljOC42IDEwLjEgMjMuNiAxMSAzMy40IDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW90b3JjeWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODAgMzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNTcuN2wxNi40IDMwLjNMMjU2IDE5MmwtNDUuMy00NS4zYy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmg5NmM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MGMwIDExLTEuMSAyMS43LTMuMiAzMmg3MC40Yy0yLjEtMTAuMy0zLjItMjEtMy4yLTMyYzAtNTIuMiAyNS05OC42IDYzLjctMTI3LjhsMTUuNCAyOC42QzQwMi40IDI3Ni4zIDM4NCAzMTIgMzg0IDM1MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4cy01Ny4zLTEyOC0xMjgtMTI4Yy0xMy41IDAtMjYuNSAyLjEtMzguNyA2TDQxOC4yIDEyOEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJINDU5LjZjLTcuNSAwLTE0LjcgMi42LTIwLjUgNy40TDM5MS43IDc4LjlsLTE0LTI2Yy03LTEyLjktMjAuNS0yMS0zNS4yLTIxSDI4MHpNNDYyLjcgMzExLjJsMjguMiA1Mi4yYzYuMyAxMS43IDIwLjkgMTYgMzIuNSA5LjdzMTYtMjAuOSA5LjctMzIuNWwtMjguMi01Mi4yYzIuMy0uMyA0LjctLjQgNy4xLS40YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0YzAtMTUuNSA1LjUtMjkuNyAxNC43LTQwLjh6TTE4Ny4zIDM3NmMtOS41IDIzLjUtMzIuNSA0MC01OS4zIDQwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzI2LjkgMCA0OS45IDE2LjUgNTkuMyA0MGg2Ni40QzI0Mi41IDI2OC44IDE5MC41IDIyNCAxMjggMjI0QzU3LjMgMjI0IDAgMjgxLjMgMCAzNTJzNTcuMyAxMjggMTI4IDEyOGM2Mi41IDAgMTE0LjUtNDQuOCAxMjUuOC0xMDRIMTg3LjN6TTEyOCAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQuMSAxNzkuMkMxNzMuOCAxMjcuNyAyMjguNiA5NiAyODggOTZzMTE0LjIgMzEuNyAxNDMuOSA4My4yTDU0MC40IDM2OGMxMi4zIDIxLjMtMy4xIDQ4LTI3LjcgNDhINjMuM2MtMjQuNiAwLTQwLTI2LjYtMjcuNy00OEwxNDQuMSAxNzkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91bnRhaW5DaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwYy0yNi41IDAtNDggMjEuNS00OCA0OHY5Mi4xbDcxLjQgMTE4LjRjMi41LTEuNiA1LjQtMi41IDguNi0yLjVoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNmgtMy41bDczLjggMTIyLjRjMTIuNCAyMC42IDEyLjkgNDYuMyAxLjIgNjcuM2MtLjQgLjgtLjkgMS42LTEuNCAyLjNINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI0MGMwLTI2LjUtMjEuNS00OC00OC00OEg1NjhWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djcySDQ4MFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgzMzZ6bTMyIDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWODBjMC04LjggNy4yLTE2IDE2LTE2ek0zNTIgMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NnptMTYwIDk2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDUyOGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MnptMTYgODBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg1MjhjLTguOCAwLTE2LTcuMi0xNi0xNlYzNjhjMC04LjggNy4yLTE2IDE2LTE2ek0yMjQgMTg4LjlMMjgzLjggMjg4SDIyM2wtNDggNjQtMjQuNi00MS4yTDIyNCAxODguOXptMjkuNC00NC4yQzI0Ny4xIDEzNC4zIDIzNiAxMjggMjI0IDEyOHMtMjMuMSA2LjMtMjkuNCAxNi43TDUuMSA0NTguOWMtNi41IDEwLjgtNi43IDI0LjMtLjcgMzUuM1MyMiA1MTIgMzQuNSA1MTJINDEzLjVjMTIuNSAwIDI0LTYuOCAzMC4xLTE3LjhzNS44LTI0LjUtLjctMzUuM0wyNTMuNCAxNDQuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91bnRhaW5TdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYwIDE2MEE4MCA4MCAwIDEgMCA1NjAgMGE4MCA4MCAwIDEgMCAwIDE2MHpNNTUuOSA1MTJIMzgxLjFoNzVINTc4LjljMzMuOCAwIDYxLjEtMjcuNCA2MS4xLTYxLjFjMC0xMS4yLTMuMS0yMi4yLTguOS0zMS44bC0xMzItMjE2LjNDNDk1IDE5Ni4xIDQ4Ny44IDE5MiA0ODAgMTkycy0xNSA0LjEtMTkuMSAxMC43bC00OC4yIDc5TDI4Ni44IDgxYy02LjYtMTAuNi0xOC4zLTE3LTMwLjgtMTdzLTI0LjEgNi40LTMwLjggMTdMOC42IDQyNi40QzMgNDM1LjMgMCA0NDUuNiAwIDQ1Ni4xQzAgNDg3IDI1IDUxMiA1NS45IDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91bnRhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyYzEyLjUgMCAyNC4xIDYuNCAzMC44IDE3TDUwMy40IDM5NC40YzUuNiA4LjkgOC42IDE5LjIgOC42IDI5LjdjMCAzMC45LTI1IDU1LjktNTUuOSA1NS45SDU1LjlDMjUgNDgwIDAgNDU1IDAgNDI0LjFjMC0xMC41IDMtMjAuOCA4LjYtMjkuN0wyMjUuMiA0OWM2LjYtMTAuNiAxOC4zLTE3IDMwLjgtMTd6bTY1IDE5MkwyNTYgMTIwLjQgMTc2LjkgMjQ2LjVsMTguMyAyNC40YzYuNCA4LjUgMTkuMiA4LjUgMjUuNiAwbDI1LjYtMzQuMWM2LTguMSAxNS41LTEyLjggMjUuNi0xMi44aDQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNdWdIb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODggMEM3NC43IDAgNjQgMTAuNyA2NCAyNGMwIDM4LjkgMjMuNCA1OS40IDM5LjEgNzMuMWwxLjEgMUMxMjAuNSAxMTIuMyAxMjggMTE5LjkgMTI4IDEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMzguOS0yMy40LTU5LjQtMzkuMS03My4xbC0xLjEtMUMxMTkuNSA0Ny43IDExMiA0MC4xIDExMiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0MTZjMCA1MyA0MyA5NiA5NiA5NkgyODhjNTMgMCA5Ni00MyA5Ni05NmgxNmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMnMtNTAuMS0xMTItMTEyLTExMkgzNTIgMzJ6bTM1MiA2NGgxNmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgzODRWMjU2ek0yMjQgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRjMCAzOC45IDIzLjQgNTkuNCAzOS4xIDczLjFsMS4xIDFDMjMyLjUgMTEyLjMgMjQwIDExOS45IDI0MCAxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTM4LjktMjMuNC01OS40LTM5LjEtNzMuMWwtMS4xLTFDMjMxLjUgNDcuNyAyMjQgNDAuMSAyMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU11Z1NhdWNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0NDhoNjRjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjhINDgwYzAgNTMtNDMgOTYtOTYgOTZIMTkyYy01MyAwLTk2LTQzLTk2LTk2VjY0ek00ODAgMjI0aDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0SDQ4MFYyMjR6TTMyIDQxNkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OS4xIDYuM2M4LjEgNiAxMi45IDE1LjYgMTIuOSAyNS43djcyVjM2OGMwIDQ0LjItNDMgODAtOTYgODBzLTk2LTM1LjgtOTYtODBzNDMtODAgOTYtODBjMTEuMiAwIDIyIDEuNiAzMiA0LjZWMTQ3TDE5MiAyMjMuOFY0MzJjMCA0NC4yLTQzIDgwLTk2IDgwcy05Ni0zNS44LTk2LTgwczQzLTgwIDk2LTgwYzExLjIgMCAyMiAxLjYgMzIgNC42VjIwMCAxMjhjMC0xNC4xIDkuMy0yNi42IDIyLjgtMzAuN2wzMjAtOTZjOS43LTIuOSAyMC4yLTEuMSAyOC4zIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMSAzMy45YzEyLjctNC42IDI2LjktLjcgMzUuNSA5LjZMMzIwIDM1OS42VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNDQ4YzAgMTMuNS04LjQgMjUuNS0yMS4xIDMwLjFzLTI2LjkgLjctMzUuNS05LjZMNjQgMTUyLjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0QzAgNTAuNSA4LjQgMzguNSAyMS4xIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5haXJhU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjIuNiA0Ni4zYy03LjgtMTEuNy0yMi40LTE3LTM1LjktMTIuOVM2NCA0OS45IDY0IDY0VjI1NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjBIMjI4LjJsOTcuMiAxNDUuOGM3LjggMTEuNyAyMi40IDE3IDM1LjkgMTIuOXMyMi43LTE2LjUgMjIuNy0zMC42VjMyMGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzODRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjU2SDI2Mi41TDEyMi42IDQ2LjN6TTMwNS4xIDMyMEgzMjB2MjIuM0wzMDUuMSAzMjB6TTE4NS41IDI1NkgxMjhWMTY5LjdMMTg1LjUgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZXR3b3JrV2lyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDY0SDM4NHY2NEgyNTZWNjR6TTI0MCAwYy0yNi41IDAtNDggMjEuNS00OCA0OHY5NmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0OHYzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NnYzMkg4MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2OTZjMCAyNi41IDIxLjUgNDggNDggNDhIMjQwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM2OGMwLTI2LjUtMjEuNS00OC00OC00OEgxOTJWMjg4SDQ0OHYzMkg0MDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djk2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDU2MGMyNi41IDAgNDgtMjEuNSA0OC00OFYzNjhjMC0yNi41LTIxLjUtNDgtNDgtNDhINTEyVjI4OGg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNTJWMTkyaDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI0MHpNOTYgNDQ4VjM4NEgyMjR2NjRIOTZ6bTMyMC02NEg1NDR2NjRINDE2VjM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV1dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDE3NmExMTIgMTEyIDAgMSAxIDIyNCAwQTExMiAxMTIgMCAxIDEgODAgMTc2ek0yMjQgMzQ5LjFjODEuOS0xNSAxNDQtODYuOCAxNDQtMTczLjFDMzY4IDc4LjggMjg5LjIgMCAxOTIgMFMxNiA3OC44IDE2IDE3NmMwIDg2LjMgNjIuMSAxNTguMSAxNDQgMTczLjFWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzQ5LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5ld3NwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA5NmMwLTM1LjMgMjguNy02NCA2NC02NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDgwYy00NC4yIDAtODAtMzUuOC04MC04MFYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY0MDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY5NnptNjQgMjR2ODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRIMjk2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxODRjLTEzLjMgMC0yNCAxMC43LTI0IDI0em0yMDgtOGMwIDguOCA3LjIgMTYgMTYgMTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzg0Yy04LjggMC0xNiA3LjItMTYgMTZ6bTAgOTZjMCA4LjggNy4yIDE2IDE2IDE2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2ek0xNjAgMzA0YzAgOC44IDcuMiAxNiAxNiAxNkg0MzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZ6bTAgOTZjMCA4LjggNy4yIDE2IDE2IDE2SDQzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTm90RXF1YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjggMzcuNGMxNC43IDkuOCAxOC43IDI5LjcgOC45IDQ0LjRMMzM3LjEgMTQ0SDQwMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyOTQuNWwtNjQgOTZINDAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE4Ny44bC02NS4yIDk3LjdjLTkuOCAxNC43LTI5LjcgMTguNy00NC40IDguOXMtMTguNy0yOS43LTguOS00NC40TDExMC45IDM2OEg0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxNTMuNWw2NC05Nkg0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgyNjAuMmw2NS4yLTk3LjdjOS44LTE0LjcgMjkuNy0xOC43IDQ0LjQtOC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3RkZWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzkwLjNMMTUzLjUgMjU2IDY0IDEyMS43VjM5MC4zek0xMDIuNSA0NDhIMjgxLjVMMTkyIDMxMy43IDEwMi41IDQ0OHptMTI4LTE5MkwzMjAgMzkwLjNWMTIxLjdMMjMwLjUgMjU2ek0yODEuNSA2NEgxMDIuNUwxOTIgMTk4LjMgMjgxLjUgNjR6TTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3RlU3RpY2t5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDI4OFYzNjhjMC0yNi41IDIxLjUtNDggNDgtNDhINDQ4Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek00NDggMzUySDQwMi43IDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2djY2LjdWNDgwbDMyLTMyIDY0LTY0IDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3Rlc01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzUyVjk2YzAtMzUuMyAyOC43LTY0IDY0LTY0SDQxNmMzNS4zIDAgNjQgMjguNyA2NCA2NFYyOTMuNWMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNTguNSA1OC41Yy0xMiAxMi0yOC4zIDE4LjctNDUuMyAxOC43SDE2MGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6TTI3MiAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzIwVjE0NGMwLTguOC03LjItMTYtMTYtMTZIMjcyem0yNCAzMzZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTM2QzYwLjkgNTEyIDAgNDUxLjEgMCAzNzZWMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAyMjRjMCA0OC42IDM5LjQgODggODggODhIMjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA5NmExNjAgMTYwIDAgMSAwIDAgMzIwIDE2MCAxNjAgMCAxIDAgMC0zMjB6TTQ0OCAyNTZBMjI0IDIyNCAwIDEgMSAwIDI1NmEyMjQgMjI0IDAgMSAxIDQ0OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPYmplY3RHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxMTkuNEMxMi45IDEwOC40IDAgODcuNyAwIDY0QzAgMjguNyAyOC43IDAgNjQgMGMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJINDU2LjZDNDY3LjYgMTIuOSA0ODguMyAwIDUxMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNFYzOTIuNmMxOS4xIDExLjEgMzIgMzEuNyAzMiA1NS40YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMTE5LjRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYxMTkuNHpNNDU2LjYgOTZIMTE5LjRjLTUuNiA5LjctMTMuNyAxNy44LTIzLjQgMjMuNFYzOTIuNmM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRINDU2LjZjNS42LTkuNyAxMy43LTE3LjggMjMuNC0yMy40VjExOS40Yy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjR6TTEyOCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwek0yNTYgMzIwaDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjIyNGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2JqZWN0VW5ncm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxMTkuNEMxMi45IDEwOC40IDAgODcuNyAwIDY0QzAgMjguNyAyOC43IDAgNjQgMGMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJIMzI4LjZDMzM5LjYgMTIuOSAzNjAuMyAwIDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNFYyMzIuNmMxOS4xIDExLjEgMzIgMzEuNyAzMiA1NS40YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMTE5LjRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYxMTkuNHpNMTE5LjQgOTZjLTUuNiA5LjctMTMuNyAxNy44LTIzLjQgMjMuNFYyMzIuNmM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRIMzI4LjZjNS42LTkuNyAxMy43LTE3LjggMjMuNC0yMy40VjExOS40Yy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjRIMTE5LjR6bTE5MiAzODRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYzNTJoNjR2NDAuNmM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRINTIwLjZjNS42LTkuNyAxMy43LTE3LjggMjMuNC0yMy40VjI3OS40Yy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjRoLTQ2Yy01LjQtMTUuNC0xNC42LTI4LjktMjYuNS0zOS42VjE5Mmg3Mi42YzExLjEtMTkuMSAzMS43LTMyIDU1LjQtMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAyMy43LTEyLjkgNDQuNC0zMiA1NS40VjM5Mi42YzE5LjEgMTEuMSAzMiAzMS43IDMyIDU1LjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTIzLjcgMC00NC40LTEyLjktNTUuNC0zMkgzMTEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2lsQ2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMydjMySDE0NCA5NiA0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NjQuOGMwIDE5IDExLjIgMzYuMiAyOC41IDQzLjlsNjcuNSAzMFYzNjhjMCAyNi41IDIxLjUgNDggNDggNDhINDAzLjFjMTguNCAwIDM1LjgtNy45IDQ4LTIxLjdMNjMzLjUgMTg3LjdjMTIuMy0xMy45LS4zLTM1LjQtMTguNC0zMS41TDQ0OCAxOTJsLTUwLjUtMjUuMmMtOC45LTQuNC0xOC43LTYuOC0yOC42LTYuOEgyODhWMTI4aDMyek05NiAyMDh2ODYuMUw0OCAyNzIuOFYyMDhIOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9pbFdlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjMgNjEuM2MtMTEuNC00Mi43LTU1LjMtNjgtOTgtNTYuNkw0MTQuOSA4LjhDMzk3LjggMTMuNCAzODcuNyAzMSAzOTIuMyA0OGwyNC41IDkxLjRMMzA4LjUgMTY3LjVsLTYuMy0xOC4xQzI5Ny43IDEzNi42IDI4NS42IDEyOCAyNzIgMTI4cy0yNS43IDguNi0zMC4yIDIxLjRsLTEzLjYgMzlMOTYgMjIyLjZWMTg0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjQ0OEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDA2LjdMMzQwIDI1Ny41bC02Mi4yIDE2LjFMMzA1LjMgMzUySDIzOC43TDI2NSAyNzdsLTc0LjYgMTkuM0wxMzcuMyA0NDhIOTZWMjg4LjhsMzM3LjQtODcuNSAyNS4yIDk0YzQuNiAxNy4xIDIyLjEgMjcuMiAzOS4yIDIyLjZsMTUuNS00LjFjNDIuNy0xMS40IDY4LTU1LjMgNTYuNi05OEw1MjguMyA2MS4zek0yMDUuMSA0NDhsMTEuMi0zMkgzMjcuN2wxMS4yIDMySDIwNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzkuMyA0LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0xNiAxNmMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZsMTYgMTZjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsMTYtMTZjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTE2LTE2ek0yODEgNjYuN2MtMi4yLTEuNS00LjktMi41LTcuNy0yLjdjLS42IDAtMS4zLS4xLTEuOSAwYy0zLjkgLjItNy40IDEuNy0xMC4xIDQuMmMtLjkgLjgtMS42IDEuNy0yLjMgMi42Yy0xLjcgMi40LTIuNyA1LjMtMi45IDguNWMwIC43IDAgMS40IDAgMi4xYy4yIDIuMiAuOSA0LjMgMS45IDYuMmwuMyAuNmMuMyAuNiAuOCAxLjQgMS40IDIuNGMxLjIgMiAyLjkgNC44IDUuMSA4LjJjNC40IDYuNyAxMS4xIDE1LjUgMjAgMjQuNEMzMDIuNCAxNDEuMSAzMzAuMyAxNjAgMzY4IDE2MGMzMS4yIDAgNTYuNi0xMC40IDczLjktMjAuMmM4LjctNSAxNS42LTkuOSAyMC40LTEzLjhjMi40LTEuOSA0LjMtMy42IDUuNy00LjljLjctLjYgMS4zLTEuMiAxLjctMS42bC42LS41IC4xLS4xIC4xLS4xIDAgMCAwIDBjNS45LTUuOCA5LjUtMTMuOSA5LjUtMjIuOGMwLTE3LjctMTQuMy0zMi0zMi0zMmMtOC43IDAtMTYuNyAzLjUtMjIuNCA5LjJjLS4xIC4xLS4yIC4yLS41IC40Yy0uNSAuNS0xLjUgMS4zLTIuOCAyLjRjLTIuNyAyLjItNi44IDUuMi0xMi4xIDguMkMzOTkuNCA5MC40IDM4NC44IDk2IDM2OCA5NmMtMjAuOCAwLTQyLjQtNy01OS41LTE0LjZjLTguNC0zLjctMTUuNC03LjUtMjAuMy0xMC4zYy0yLjQtMS40LTQuMy0yLjUtNS42LTMuM2MtLjYtLjQtMS4xLS43LTEuNC0uOWwtLjMtLjJ6TTExNS4yIDE2OS42YzgtNiAxNy45LTkuNiAyOC44LTkuNmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgxMDkuOGMtNy42IDAtMTMuOCA2LjItMTMuOCAxMy44YzAgMS41IC4yIDIuOSAuNyA0LjRsOCAyNGM0LjQgMTMuMSAxNi42IDIxLjkgMzAuNCAyMS45SDE0NGgxNmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGMtNTAuOCAwLTgyLjctMjEuNS0xMDIuMi00Mi44Yy05LjktMTAuOC0xNi42LTIxLjYtMjAuOS0yOS43Yy0yLjEtNC0zLjYtNy4zLTQuNS05LjZjLS41LTEuMS0uOC0yLTEtMi41bC0uMi0uNWMtLjMtLjktLjctMS44LTEuMS0yLjZjLTEuMi0yLjItMi44LTQtNC43LTUuNGMtMS45LTEuNC00LjEtMi4zLTYuNS0yLjhjLTEuNC0uMy0yLjktLjMtNC40LS4yYy0yLjUgLjItNC44IDEtNi44IDIuM2MtMS4xIC43LTIuMiAxLjUtMy4xIDIuNWMtMi40IDIuNS00LjEgNS44LTQuNSA5LjVjLS4xIC42LS4xIDEuMS0uMSAxLjdjMCAwIDAgMCAwIDBjMCAuOCAuMSAxLjcgLjIgMi41bDAgLjFjMCAuMyAuMSAuOCAuMiAxLjNjLjIgMS4xIC40IDIuNyAuOCA0LjZjLjggMy45IDIgOS40IDMuOSAxNS45YzMuOCAxMyAxMC4zIDMwLjQgMjEuMyA0OEM0OC43IDQ3Ni4yIDg5LjQgNTEyIDE2MCA1MTJjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhjMC0yMy4zLTYuMi00NS4yLTE3LjEtNjRoMjIuNmMyNS41IDAgNDkuOS0xMC4xIDY3LjktMjguMWwyNi41LTI2LjVjNi02IDE0LjEtOS40IDIyLjYtOS40SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMmMtMjUuNyAwLTQxLjQtMTIuNS01MS4yLTI1LjZjLTUtNi43LTguNC0xMy40LTEwLjUtMTguNmMtMS4xLTIuNS0xLjgtNC42LTIuMi02Yy0uMi0uNy0uNC0xLjItLjUtMS41bC0uMS0uMmMtLjMtMS4zLS44LTIuNi0xLjUtMy44Yy0xLjEtMi0yLjYtMy44LTQuNC01LjFjLTIuNy0yLTYtMy4yLTkuNi0zLjJsLS4yIDBjLTggLjEtMTQuNiA2LjEtMTUuNiAxMy45bDAgMGMwIC4zLS4xIC42LS4yIDEuMWMtLjEgLjktLjMgMi4xLS40IDMuNmMtLjMgMy0uNiA3LjMtLjYgMTIuNGMwIDEwLjEgMS4xIDIzLjkgNS44IDM4LjFjNC44IDE0LjMgMTMuNCAyOS4zIDI4LjYgNDAuN0MzNjguNyA0NzMuMyAzODkuMyA0ODAgNDE2IDQ4MGM1MyAwIDk2LTQzIDk2LTk2VjI4OGMwLTUzLTQzLTk2LTk2LTk2aC01LjVjLTI1LjUgMC00OS45IDEwLjEtNjcuOSAyOC4xbC0yNi41IDI2LjVjLTYgNi0xNC4xIDkuNC0yMi42IDkuNEgyNDUuMmM2LjktMTQuNSAxMC44LTMwLjggMTAuOC00OGMwLTYxLjktNTAuMS0xMTItMTEyLTExMmMtMjUuMiAwLTQ4LjUgOC4zLTY3LjIgMjIuNGMtMTQuMSAxMC42LTE3IDMwLjctNi40IDQ0LjhzMzAuNyAxNyA0NC44IDYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3R0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgxLjUgMTk3LjFsMTIuOSA2LjRjNS45IDMgMTIuNCA0LjUgMTkuMSA0LjVjMjMuNSAwIDQyLjYtMTkuMSA0Mi42LTQyLjZWMTQ0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MjEuNGMwIDIzLjUgMTkuMSA0Mi42IDQyLjYgNDIuNmM2LjYgMCAxMy4xLTEuNSAxOS4xLTQuNWwxMi45LTYuNCA4LjQtNC4yTDEzNS4xIDE4NWMtNC41LTMtNy4xLTgtNy4xLTEzLjNWMTY4YzAtMTMuMyAxMC43LTI0IDI0LTI0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0djMuN2MwIDUuMy0yLjcgMTAuMy03LjEgMTMuM2wtMTEuOCA3LjkgOC40IDQuMnptLTguNiA0OS40TDE2MCAyNDBsLTEyLjkgNi40Yy0xMi42IDYuMy0yNi41IDkuNi00MC41IDkuNmMtMy42IDAtNy4xLS4yLTEwLjYtLjZ2LjZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0VjMzNiAzMjBjMC0yMy43IDEyLjktNDQuNCAzMi01NS40YzkuNC01LjQgMjAuMy04LjYgMzItOC42VjI0MGMwLTI2LjUgMjEuNS00OCA0OC00OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzIgMTYgNDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMDQuM2MwLTQ4LjItMzAuOC05MS03Ni42LTEwNi4zbC04LjUtMi44Yy04LTIuNy0xMi42LTExLjEtMTAuNC0xOS4zczEwLjMtMTMuMiAxOC42LTExLjZsMTkuOSA0QzU3NiA4Ni4xIDY0MCAxNjQuMiA2NDAgMjU0LjlsMCAxLjFoMGMwIDEyMy43LTEwMC4zIDIyNC0yMjQgMjI0aC0xLjFIMjU2aC0uNkMxMzIgNDgwIDMyIDM4MCAzMiAyNTYuNlYyNTYgMjE2LjhjLTEwLjEtMTQuNi0xNi0zMi4zLTE2LTUxLjRWMTQ0bDAtMS40QzYuNyAxMzkuMyAwIDEzMC41IDAgMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0aDIuOEM0NC44IDU4LjIgODMuMyAzMiAxMjggMzJoNjRjNDQuNyAwIDgzLjIgMjYuMiAxMDEuMiA2NEgyOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRjMCAxMC41LTYuNyAxOS4zLTE2IDIyLjZsMCAxLjR2MjEuNGMwIDEuNCAwIDIuOC0uMSA0LjNjMTItNi4yIDI1LjctOS42IDQwLjEtOS42aDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJoLThjLTEzLjMgMC0yNCAxMC43LTI0IDI0djhoNTYuNGMtMTUuMiAxNy0yNC40IDM5LjQtMjQuNCA2NEgzMjBjLTQyLjMgMC03OC4yLTI3LjQtOTEtNjUuM2MtNS4xIC45LTEwLjMgMS4zLTE1LjYgMS4zYy0xNC4xIDAtMjcuOS0zLjMtNDAuNS05LjZ6TTk2IDEyOGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTExMiAxNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPdXRkZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6TTE5MiAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTMyIDk2SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6TTAgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TS4yIDI2OC42Yy04LjItNi40LTguMi0xOC45IDAtMjUuM2wxMDEuOS03OS4zYzEwLjUtOC4yIDI1LjgtLjcgMjUuOCAxMi42VjMzNS4zYzAgMTMuMy0xNS4zIDIwLjgtMjUuOCAxMi42TC4yIDI2OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJoOTZjODguNCAwIDE2MCA3MS42IDE2MCAxNjBzLTcxLjYgMTYwLTE2MCAxNjBINjR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzIwIDk2ek02NCAyODhoOTZjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZINjRWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6bTY0IDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04MCAzMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIODB6bTEzNiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFpbnRSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMzUyYzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTYwIDM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMlYzMDRjMC00NC4yIDM1LjgtODAgODAtODBINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MCA2OS41YzM3LjMgMTMuMiA2NCA0OC43IDY0IDkwLjV2MzJjMCA1My00MyA5Ni05NiA5NkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhaW50YnJ1c2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM5LjMgMzY3LjFjMjcuMy0zLjkgNTEuOS0xOS40IDY3LjItNDIuOUw1NjguMiA3NC4xYzEyLjYtMTkuNSA5LjQtNDUuMy03LjYtNjEuMlM1MTcuNy00LjQgNDk5LjEgOS42TDI2Mi40IDE4Ny4yYy0yNCAxOC0zOC4yIDQ2LjEtMzguNCA3Ni4xTDMzOS4zIDM2Ny4xem0tMTkuNiAyNS40bC0xMTYtMTA0LjRDMTQzLjkgMjkwLjMgOTYgMzM5LjYgOTYgNDAwYzAgMy45IC4yIDcuOCAuNiAxMS42Qzk4LjQgNDI5LjEgODYuNCA0NDggNjguOCA0NDhINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMjA4YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtMi41LS4xLTUtLjItNy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWxldHRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZjMCAuOSAwIDEuOCAwIDIuN2MtLjQgMzYuNS0zMy42IDYxLjMtNzAuMSA2MS4zSDM0NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhjMCAzLjQgLjQgNi43IDEgOS45YzIuMSAxMC4yIDYuNSAyMCAxMC44IDI5LjljNi4xIDEzLjggMTIuMSAyNy41IDEyLjEgNDJjMCAzMS44LTIxLjYgNjAuNy01My40IDYyYy0zLjUgLjEtNyAuMi0xMC42IC4yQzExNC42IDUxMiAwIDM5Ny40IDAgMjU2UzExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZ6TTEyOCAyODhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMC05NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTI4OCA5NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem05NiA5NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjR2NjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTYgMzIwIDU0NGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1NzZWMzg0aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDU0NCAzMjAgOTYgMzJ6bTk2IDY0SDI4OHY2NEgxMjhWMzg0em0yMjQgMEg1MTJ2NjRIMzUyVjM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFub3JhbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUuNiAzMkMyMC40IDMyIDAgNTIuNCAwIDc3LjZWNDM0LjRDMCA0NTkuNiAyMC40IDQ4MCA0NS42IDQ4MGM1LjEgMCAxMC0uOCAxNC43LTIuNEM3NC42IDQ3Mi44IDE3Ny42IDQ0MCAzMjAgNDQwczI0NS40IDMyLjggMjU5LjYgMzcuNmM0LjcgMS42IDkuNyAyLjQgMTQuNyAyLjRjMjUuMiAwIDQ1LjYtMjAuNCA0NS42LTQ1LjZWNzcuNkM2NDAgNTIuNCA2MTkuNiAzMiA1OTQuNCAzMmMtNSAwLTEwIC44LTE0LjcgMi40QzU2NS40IDM5LjIgNDYyLjQgNzIgMzIwIDcyUzc0LjYgMzkuMiA2MC40IDM0LjRDNTUuNiAzMi44IDUwLjcgMzIgNDUuNiAzMnpNOTYgMTYwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTI3MiAwYzcuOSAwIDE1LjQgMy45IDE5LjggMTAuNUw1MTIuMyAzNTNjNS40IDggNS42IDE4LjQgLjQgMjYuNXMtMTQuNyAxMi4zLTI0LjIgMTAuN0M0NDIuNyAzODIuNCAzODUuMiAzNzYgMzIwIDM3NmMtNjUuNiAwLTEyMy40IDYuNS0xNjkuMyAxNC40Yy05LjggMS43LTE5LjctMi45LTI0LjctMTEuNXMtNC4zLTE5LjQgMS45LTI3LjJMMTk3LjMgMjY1YzQuNi01LjcgMTEuNC05IDE4LjctOXMxNC4yIDMuMyAxOC43IDlsMjYuNCAzMy4xIDg3LTEyNy42YzQuNS02LjYgMTEuOS0xMC41IDE5LjgtMTAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFwZXJQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTguMSA1LjZjMTAuMSA3IDE1LjQgMTkuMSAxMy41IDMxLjJsLTY0IDQxNmMtMS41IDkuNy03LjQgMTguMi0xNiAyM3MtMTguOSA1LjQtMjggMS42TDI4NCA0MjcuN2wtNjguNSA3NC4xYy04LjkgOS43LTIyLjkgMTIuOS0zNS4yIDguMVMxNjAgNDkzLjIgMTYwIDQ4MFYzOTYuNGMwLTQgMS41LTcuOCA0LjItMTAuN0wzMzEuOCAyMDIuOGM1LjgtNi4zIDUuNi0xNi0uNC0yMnMtMTUuNy02LjQtMjItLjdMMTA2IDM2MC44IDE3LjcgMzE2LjZDNy4xIDMxMS4zIC4zIDMwMC43IDAgMjg4LjlzNS45LTIyLjggMTYuMS0yOC43bDQ0OC0yNTZjMTAuNy02LjEgMjMuOS01LjUgMzQgMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXBlcmNsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY0LjIgODMuOGMtMjQuNC0yNC40LTY0LTI0LjQtODguNCAwbC0xODQgMTg0Yy00Mi4xIDQyLjEtNDIuMSAxMTAuMyAwIDE1Mi40czExMC4zIDQyLjEgMTUyLjQgMGwxNTItMTUyYzEwLjktMTAuOSAyOC43LTEwLjkgMzkuNiAwczEwLjkgMjguNyAwIDM5LjZsLTE1MiAxNTJjLTY0IDY0LTE2Ny42IDY0LTIzMS42IDBzLTY0LTE2Ny42IDAtMjMxLjZsMTg0LTE4NGM0Ni4zLTQ2LjMgMTIxLjMtNDYuMyAxNjcuNiAwczQ2LjMgMTIxLjMgMCAxNjcuNmwtMTc2IDE3NmMtMjguNiAyOC42LTc1IDI4LjYtMTAzLjYgMHMtMjguNi03NSAwLTEwMy42bDE0NC0xNDRjMTAuOS0xMC45IDI4LjctMTAuOSAzOS42IDBzMTAuOSAyOC43IDAgMzkuNmwtMTQ0IDE0NGMtNi43IDYuNy02LjcgMTcuNyAwIDI0LjRzMTcuNyA2LjcgMjQuNCAwbDE3Ni0xNzZjMjQuNC0yNC40IDI0LjQtNjQgMC04OC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJhY2h1dGVCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgzLjUgMTkyYy4zLTUuMyAuNS0xMC42IC41LTE2YzAtNTEtMTUuOS05Ni00MC4yLTEyNy42QzMxOS41IDE2LjkgMjg4LjIgMCAyNTYgMHMtNjMuNSAxNi45LTg3LjggNDguNEMxNDMuOSA4MCAxMjggMTI1IDEyOCAxNzZjMCA1LjQgLjIgMTAuNyAuNSAxNkgyNDBWMzIwSDIwOGMtNyAwLTEzLjcgMS41LTE5LjcgNC4yTDY4LjIgMTkySDk2LjVjLS4zLTUuMy0uNS0xMC42LS41LTE2YzAtNjQgMjIuMi0xMjEuMiA1Ny4xLTE1OS4zQzYyIDQ5LjMgMTguNiAxMjIuNiA0LjIgMTczLjZDMS41IDE4My4xIDkgMTkyIDE4LjkgMTkyaDZMMTY1LjIgMzQ2LjNjLTMuMyA2LjUtNS4yIDEzLjktNS4yIDIxLjd2OTZjMCAyNi41IDIxLjUgNDggNDggNDhoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzY4YzAtNy44LTEuOS0xNS4yLTUuMi0yMS43TDQ4Ny4xIDE5Mmg2YzkuOSAwIDE3LjQtOC45IDE0LjctMTguNEM0OTMuNCAxMjIuNiA0NTAgNDkuMyAzNTguOSAxNi43QzM5My44IDU0LjggNDE2IDExMi4xIDQxNiAxNzZjMCA1LjQtLjIgMTAuNy0uNSAxNmgyOC4zTDMyMy43IDMyNC4yYy02LTIuNy0xMi43LTQuMi0xOS43LTQuMkgyNzJWMTkySDM4My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJhZ3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDMyaDY0SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODRsMCAzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zNTJIMjg4VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTkyYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MHM3MS42LTE2MCAxNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXNzcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgzODRjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTgzIDI3OC44Yy0yNy45LTEzLjItNDguNC0zOS40LTUzLjctNzAuOGgzOS4xYzEuNiAzMC40IDcuNyA1My44IDE0LjYgNzAuOHptNDEuMyA5LjJsLS4zIDAtLjMgMGMtMi40LTMuNS01LjctOC45LTkuMS0xNi41Yy02LTEzLjYtMTIuNC0zNC4zLTE0LjItNjMuNWg0Ny4xYy0xLjggMjkuMi04LjEgNDkuOS0xNC4yIDYzLjVjLTMuNCA3LjYtNi43IDEzLTkuMSAxNi41em00MC43LTkuMmM2LjgtMTcuMSAxMi45LTQwLjQgMTQuNi03MC44aDM5LjFjLTUuMyAzMS40LTI1LjggNTcuNi01My43IDcwLjh6TTI3OS42IDE3NmMtMS42LTMwLjQtNy43LTUzLjgtMTQuNi03MC44YzI3LjkgMTMuMiA0OC40IDM5LjQgNTMuNyA3MC44SDI3OS42ek0yMjMuNyA5NmwuMyAwIC4zIDBjMi40IDMuNSA1LjcgOC45IDkuMSAxNi41YzYgMTMuNiAxMi40IDM0LjMgMTQuMiA2My41SDIwMC41YzEuOC0yOS4yIDguMS00OS45IDE0LjItNjMuNWMzLjQtNy42IDYuNy0xMyA5LjEtMTYuNXpNMTgzIDEwNS4yYy02LjggMTcuMS0xMi45IDQwLjQtMTQuNiA3MC44SDEyOS4zYzUuMy0zMS40IDI1LjgtNTcuNiA1My43LTcwLjh6TTM1MiAxOTJBMTI4IDEyOCAwIDEgMCA5NiAxOTJhMTI4IDEyOCAwIDEgMCAyNTYgMHpNMTEyIDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzMzZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXN0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMGMtMjMuNyAwLTQ0LjQgMTIuOS01NS40IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODBWNDAwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDE5MlYxNzZjMC00NC4yIDM1LjgtODAgODAtODBoNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjE1LjRDMjA0LjQgMTIuOSAxODMuNyAwIDE2MCAwek0yNzIgMTI4Yy0yNi41IDAtNDggMjEuNS00OCA0OFY0NDh2MTZjMCAyNi41IDIxLjUgNDggNDggNDhINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlsLTY3LjktNjcuOWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFIMzIwIDI3MnpNMTYwIDQwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggNjRDMjEuNSA2NCAwIDg1LjUgMCAxMTJWNDAwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OEg0OHptMTkyIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQwMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI2LjUgOTIuOWMxNC4zIDQyLjktLjMgODYuMi0zMi42IDk2LjhzLTcwLjEtMTUuNi04NC40LTU4LjVzLjMtODYuMiAzMi42LTk2LjhzNzAuMSAxNS42IDg0LjQgNTguNXpNMTAwLjQgMTk4LjZjMTguOSAzMi40IDE0LjMgNzAuMS0xMC4yIDg0LjFzLTU5LjctLjktNzguNS0zMy4zUy0yLjcgMTc5LjMgMjEuOCAxNjUuM3M1OS43IC45IDc4LjUgMzMuM3pNNjkuMiA0MDEuMkMxMjEuNiAyNTkuOSAyMTQuNyAyMjQgMjU2IDIyNHMxMzQuNCAzNS45IDE4Ni44IDE3Ny4yYzMuNiA5LjcgNS4yIDIwLjEgNS4yIDMwLjV2MS42YzAgMjUuOC0yMC45IDQ2LjctNDYuNyA0Ni43Yy0xMS41IDAtMjIuOS0xLjQtMzQtNC4ybC04OC0yMmMtMTUuMy0zLjgtMzEuMy0zLjgtNDYuNiAwbC04OCAyMmMtMTEuMSAyLjgtMjIuNSA0LjItMzQgNC4yQzg0LjkgNDgwIDY0IDQ1OS4xIDY0IDQzMy4zdi0xLjZjMC0xMC40IDEuNi0yMC44IDUuMi0zMC41ek00MjEuOCAyODIuN2MtMjQuNS0xNC0yOS4xLTUxLjctMTAuMi04NC4xczU0LTQ3LjMgNzguNS0zMy4zczI5LjEgNTEuNyAxMC4yIDg0LjFzLTU0IDQ3LjMtNzguNSAzMy4zek0zMTAuMSAxODkuN2MtMzIuMy0xMC42LTQ2LjktNTMuOS0zMi42LTk2LjhzNTIuMS02OS4xIDg0LjQtNTguNXM0Ni45IDUzLjkgMzIuNiA5Ni44cy01Mi4xIDY5LjEtODQuNCA1OC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgNDQ1LjNWMzIzLjVsLTk0LjMgNzcuMWMyNi4xIDIyLjggNTguNSAzOC43IDk0LjMgNDQuN3pNODkuMiAzNTEuMUwyMjQgMjQwLjhWNjYuN0MxMzMuMiA4MS45IDY0IDE2MC45IDY0IDI1NmMwIDM0LjYgOS4yIDY3LjEgMjUuMiA5NS4xem0yOTMuMSA0OS41TDI4OCAzMjMuNVY0NDUuM2MzNS43LTYgNjguMS0yMS45IDk0LjMtNDQuN3ptNDAuNi00OS41YzE2LTI4IDI1LjItNjAuNSAyNS4yLTk1LjFjMC05NS4xLTY5LjItMTc0LjEtMTYwLTE4OS4zVjI0MC44TDQyMi44IDM1MS4xek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbkNsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUzLjMgMTkuM2wzOS40IDM5LjRjMjUgMjUgMjUgNjUuNSAwIDkwLjVsLTUyLjEgNTIuMSAwIDAtMS0xIDAgMC0xNi0xNi05Ni05Ni0xNy0xNyA1Mi4xLTUyLjFjMjUtMjUgNjUuNS0yNSA5MC41IDB6TTI0MSAxMTQuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMTA1IDIxN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOUwxNzMuMSA4MWMyOC4xLTI4LjEgNzMuNy0yOC4xIDEwMS44IDBMMjg4IDk0LjFsMTcgMTcgOTYgOTYgMTYgMTYgMSAxLTE3IDE3TDIyOS41IDQxMi41Yy00OCA0OC0xMDkuMiA4MC44LTE3NS44IDk0LjFsLTI1IDVjLTcuOSAxLjYtMTYtLjktMjEuNy02LjZzLTguMS0xMy44LTYuNi0yMS43bDUtMjVjMTMuMy02Ni42IDQ2LjEtMTI3LjggOTQuMS0xNzUuOEwyNTQuMSAxMjggMjQxIDExNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5GYW5jeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzMuNSAyNy4xQzM4OC41IDkuOSA0MTAuMiAwIDQzMyAwYzQzLjYgMCA3OSAzNS40IDc5IDc5YzAgMjIuOC05LjkgNDQuNi0yNy4xIDU5LjZMMjc3LjcgMzE5bC0xMC4zLTEwLjMtNjQtNjRMMTkzIDIzNC4zIDM3My41IDI3LjF6TTE3MC4zIDI1Ni45bDEwLjQgMTAuNCA2NCA2NCAxMC40IDEwLjQtMTkuMiA4My40Yy0zLjkgMTcuMS0xNi45IDMwLjctMzMuOCAzNS40TDI0LjQgNTEwLjNsOTUuNC05NS40YzIuNiAuNyA1LjQgMS4xIDguMyAxLjFjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJjMCAyLjkgLjQgNS42IDEuMSA4LjNMMS43IDQ4Ny42IDUxLjUgMzEwYzQuNy0xNi45IDE4LjMtMjkuOSAzNS40LTMzLjhsODMuNC0xOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5OaWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4LjQgMTguM0wzMTIuNyA3NC4xIDQzNy45IDE5OS4zbDU1LjctNTUuN2MyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw0NDcuNiAxOC4zYy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMHpNMjg4IDk0LjZsLTkuMiAyLjhMMTM0LjcgMTQwLjZjLTE5LjkgNi0zNS43IDIxLjItNDIuMyA0MUwzLjggNDQ1LjhjLTMuOCAxMS4zLTEgMjMuOSA3LjMgMzIuNEwxNjQuNyAzMjQuN2MtMy02LjMtNC43LTEzLjMtNC43LTIwLjdjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OGMtNy40IDAtMTQuNC0xLjctMjAuNy00LjdMMzMuNyA1MDAuOWM4LjYgOC4zIDIxLjEgMTEuMiAzMi40IDcuM2wyNjQuMy04OC42YzE5LjctNi42IDM1LTIyLjQgNDEtNDIuM2w0My4yLTE0NC4xIDIuOC05LjJMMjg4IDk0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlblJ1bGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2OS4zIDE5LjNsMjMuNCAyMy40YzI1IDI1IDI1IDY1LjUgMCA5MC41bC01Ni40IDU2LjRMMzIyLjMgNzUuN2w1Ni40LTU2LjRjMjUtMjUgNjUuNS0yNSA5MC41IDB6TTQ0LjkgMzUzLjJMMjk5LjcgOTguMyA0MTMuNyAyMTIuMyAxNTguOCA0NjcuMWMtNi43IDYuNy0xNS4xIDExLjYtMjQuMiAxNC4ybC0xMDQgMjkuN2MtOC40IDIuNC0xNy40IC4xLTIzLjYtNi4xcy04LjUtMTUuMi02LjEtMjMuNmwyOS43LTEwNGMyLjYtOS4yIDcuNS0xNy41IDE0LjItMjQuMnpNMjQ5LjQgMTAzLjRMMTAzLjQgMjQ5LjQgMTYgMTYxLjljLTE4LjctMTguNy0xOC43LTQ5LjEgMC02Ny45TDk0LjEgMTZjMTguNy0xOC43IDQ5LjEtMTguNyA2Ny45IDBsMTkuOCAxOS44Yy0uMyAuMy0uNyAuNi0xIC45bC02NCA2NGMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwbDY0LTY0Yy4zLS4zIC42LS43IC45LTFsNDUuMSA0NS4xek00MDguNiAyNjIuNmw0NS4xIDQ1LjFjLS4zIC4zLS43IC42LTEgLjlsLTY0IDY0Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsNjQtNjRjLjMtLjMgLjYtLjcgLjktMUw0OTYgMzUwLjFjMTguNyAxOC43IDE4LjcgNDkuMSAwIDY3LjlMNDE3LjkgNDk2Yy0xOC43IDE4LjctNDkuMSAxOC43LTY3LjkgMGwtODcuNC04Ny40TDQwOC42IDI2Mi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5Ub1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzEuNiAyMS43Yy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMEwzNjIuMyA1MS43bDk3LjkgOTcuOSAzMC4xLTMwLjFjMjEuOS0yMS45IDIxLjktNTcuMyAwLTc5LjJMNDcxLjYgMjEuN3ptLTI5OS4yIDIyMGMtNi4xIDYuMS0xMC44IDEzLjYtMTMuNSAyMS45bC0yOS42IDg4LjhjLTIuOSA4LjYtLjYgMTguMSA1LjggMjQuNnMxNS45IDguNyAyNC42IDUuOGw4OC44LTI5LjZjOC4yLTIuNyAxNS43LTcuNCAyMS45LTEzLjVMNDM3LjcgMTcyLjMgMzM5LjcgNzQuMyAxNzIuNCAyNDEuN3pNOTYgNjRDNDMgNjQgMCAxMDcgMCAxNjBWNDE2YzAgNTMgNDMgOTYgOTYgOTZIMzUyYzUzIDAgOTYtNDMgOTYtOTZWMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjIuNyAxOS4zTDMxNC4zIDY3LjcgNDQ0LjMgMTk3LjdsNDguNC00OC40YzI1LTI1IDI1LTY1LjUgMC05MC41TDQ1My4zIDE5LjNjLTI1LTI1LTY1LjUtMjUtOTAuNSAwem0tNzEgNzFMNTguNiAzMjMuNWMtMTAuNCAxMC40LTE4IDIzLjMtMjIuMiAzNy40TDEgNDgxLjJDLTEuNSA0ODkuNyAuOCA0OTguOCA3IDUwNXMxNS4zIDguNSAyMy43IDYuMWwxMjAuMy0zNS40YzE0LjEtNC4yIDI3LTExLjggMzcuNC0yMi4yTDQyMS43IDIyMC4zIDI5MS43IDkwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbmNpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTAuMyAyMzFsMTEuMy0xMS4zLTMzLjktMzMuOS02Mi4xLTYyLjFMMjkxLjcgODkuOGwtMTEuMyAxMS4zLTIyLjYgMjIuNkw1OC42IDMyMi45Yy0xMC40IDEwLjQtMTggMjMuMy0yMi4yIDM3LjRMMSA0ODAuN2MtMi41IDguNC0uMiAxNy41IDYuMSAyMy43czE1LjMgOC41IDIzLjcgNi4xbDEyMC4zLTM1LjRjMTQuMS00LjIgMjctMTEuOCAzNy40LTIyLjJMMzg3LjcgMjUzLjcgNDEwLjMgMjMxek0xNjAgMzk5LjRsLTkuMSAyMi43Yy00IDMuMS04LjUgNS40LTEzLjMgNi45TDU5LjQgNDUybDIzLTc4LjFjMS40LTQuOSAzLjgtOS40IDYuOS0xMy4zbDIyLjctOS4xdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMnpNMzYyLjcgMTguN0wzNDguMyAzMy4yIDMyNS43IDU1LjggMzE0LjMgNjcuMWwzMy45IDMzLjkgNjIuMSA2Mi4xIDMzLjkgMzMuOSAxMS4zLTExLjMgMjIuNi0yMi42IDE0LjUtMTQuNWMyNS0yNSAyNS02NS41IDAtOTAuNUw0NTMuMyAxOC43Yy0yNS0yNS02NS41LTI1LTkwLjUgMHptLTQ3LjQgMTY4bC0xNDQgMTQ0Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDE0NC0xNDRjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVBcnJvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgNjQgNjR6TTI1LjkgMjMzLjRDMjkuMyAxOTEuOSA2NCAxNjAgMTA1LjYgMTYwaDQ0LjhjMjcgMCA1MSAxMy40IDY1LjUgMzQuMWMtMi43IDEuOS01LjIgNC03LjUgNi4zbC02NCA2NGMtMjEuOSAyMS45LTIxLjkgNTcuMyAwIDc5LjJMMTkyIDM5MS4yVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEgxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM0OC4zYy0yNi41LTkuNS00NC43LTM1LjgtNDIuMi02NS42bDQuMS00OS4zek00NDggNjRhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgNDQ4IDY0ek00MzEuNiAyMDAuNGMtMi4zLTIuMy00LjktNC40LTcuNS02LjNjMTQuNS0yMC43IDM4LjYtMzQuMSA2NS41LTM0LjFoNDQuOGM0MS42IDAgNzYuMyAzMS45IDc5LjcgNzMuNGw0LjEgNDkuM2MyLjUgMjkuOC0xNS43IDU2LjEtNDIuMiA2NS42VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM5MS4ybDQ3LjYtNDcuNmMyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMmwtNjQtNjR6TTI3MiAyNDB2MzJoOTZWMjQwYzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMmw2NCA2NGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtNjQgNjRjLTYuOSA2LjktMTcuMiA4LjktMjYuMiA1LjJzLTE0LjgtMTIuNS0xNC44LTIyLjJWMzM2SDI3MnYzMmMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNjQtNjRjNi45LTYuOSAxNy4yLTguOSAyNi4yLTUuMnMxNC44IDEyLjUgMTQuOCAyMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVDYXJyeUJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA0OGE0OCA0OCAwIDEgMSA5NiAwQTQ4IDQ4IDAgMSAxIDgwIDQ4em02NCAxOTMuN3Y2NS4xbDUxIDUxYzcuMSA3LjEgMTEuOCAxNi4yIDEzLjQgMjYuMWwxNS4yIDkwLjljMi45IDE3LjQtOC45IDMzLjktMjYuMyAzNi44cy0zMy45LTguOS0zNi44LTI2LjNsLTE0LjMtODUuOUw2Ni44IDMyMEM1NC44IDMwOCA0OCAyOTEuNyA0OCAyNzQuN1YxODYuNmMwLTMyLjQgMjYuMi01OC42IDU4LjYtNTguNmMyNC4xIDAgNDYuNSAxMiA1OS45IDMybDQ3LjQgNzEuMSAxMC4xIDVWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDM4NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY3Ni4ybDEwLjEtNUw0NzMuNSAxNjBjMTMuMy0yMCAzNS44LTMyIDU5LjktMzJjMzIuNCAwIDU4LjYgMjYuMiA1OC42IDU4LjZ2ODguMWMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNzkuNCA3OS40LTE0LjMgODUuOWMtMi45IDE3LjQtMTkuNCAyOS4yLTM2LjggMjYuM3MtMjkuMi0xOS40LTI2LjMtMzYuOGwxNS4yLTkwLjljMS42LTkuOSA2LjMtMTkgMTMuNC0yNi4xbDUxLTUxVjI0MS43bC0xOSAyOC41Yy00LjYgNy0xMSAxMi42LTE4LjUgMTYuM2wtNTkuNiAyOS44Yy0yLjQgMS4zLTQuOSAyLjItNy42IDIuOGMtMi42IC42LTUuMyAuOS03LjkgLjhIMjU2LjdjLTIuNSAuMS01LS4yLTcuNS0uN2MtMi45LS42LTUuNi0xLjYtOC4xLTNsLTU5LjUtMjkuOGMtNy41LTMuNy0xMy44LTkuNC0xOC41LTE2LjNsLTE5LTI4LjV6TTIuMyA0NjguMUw1MC4xIDM0OC42bDQ5LjIgNDkuMi0zNy42IDk0Yy02LjYgMTYuNC0yNS4yIDI0LjQtNDEuNiAxNy44Uy00LjMgNDg0LjUgMi4zIDQ2OC4xek01MTIgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTc3LjkgMzQ4LjZsNDcuOCAxMTkuNWM2LjYgMTYuNC0xLjQgMzUtMTcuOCA0MS42cy0zNS0xLjQtNDEuNi0xNy44bC0zNy42LTk0IDQ5LjItNDkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVvcGxlR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzIgODhhNTYgNTYgMCAxIDEgMTEyIDBBNTYgNTYgMCAxIDEgNzIgODh6TTY0IDI0NS43QzU0IDI1Ni45IDQ4IDI3MS44IDQ4IDI4OHM2IDMxLjEgMTYgNDIuM1YyNDUuN3ptMTQ0LjQtNDkuM0MxNzguNyAyMjIuNyAxNjAgMjYxLjIgMTYwIDMwNGMwIDM0LjMgMTIgNjUuOCAzMiA5MC41VjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg5LjJDMjYuMiAzNzEuMiAwIDMzMi43IDAgMjg4YzAtNjEuOSA1MC4xLTExMiAxMTItMTEyaDMyYzI0IDAgNDYuMiA3LjUgNjQuNCAyMC4zek00NDggNDE2VjM5NC41YzIwLTI0LjcgMzItNTYuMiAzMi05MC41YzAtNDIuOC0xOC43LTgxLjMtNDguNC0xMDcuN0M0NDkuOCAxODMuNSA0NzIgMTc2IDQ5NiAxNzZoMzJjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJjMCA0NC43LTI2LjIgODMuMi02NCAxMDEuMlY0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJINDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnptOC0zMjhhNTYgNTYgMCAxIDEgMTEyIDBBNTYgNTYgMCAxIDEgNDU2IDg4ek01NzYgMjQ1Ljd2ODQuN2MxMC0xMS4zIDE2LTI2LjEgMTYtNDIuM3MtNi0zMS4xLTE2LTQyLjN6TTMyMCAzMmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMjQwIDMwNGMwIDE2LjIgNiAzMSAxNiA0Mi4zVjI2MS43Yy0xMCAxMS4zLTE2IDI2LjEtMTYgNDIuM3ptMTQ0LTQyLjN2ODQuN2MxMC0xMS4zIDE2LTI2LjEgMTYtNDIuM3MtNi0zMS4xLTE2LTQyLjN6TTQ0OCAzMDRjMCA0NC43LTI2LjIgODMuMi02NCAxMDEuMlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDUuMmMtMzcuOC0xOC02NC01Ni41LTY0LTEwMS4yYzAtNjEuOSA1MC4xLTExMiAxMTItMTEyaDMyYzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2MCA3MmE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwek0xNDQgMjA4YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHpNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpNNDk2IDIwOGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTIwMCAzMTMuNWwyNi45IDQ5LjljNi4zIDExLjcgMjAuOCAxNiAzMi41IDkuOHMxNi0yMC44IDkuOC0zMi41bC0zNi4zLTY3LjVjMS43LTEuNyAzLjItMy42IDQuMy01LjhMMjY0IDIxNy41VjI3MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMTcuNWwyNi45IDQ5LjljMS4yIDIuMiAyLjYgNC4xIDQuMyA1LjhsLTM2LjMgNjcuNWMtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMNDQwIDMxMy41VjM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTMuNWwyNi45IDQ5LjljNi4zIDExLjcgMjAuOCAxNiAzMi41IDkuOHMxNi0yMC44IDkuOC0zMi41bC0zNy45LTcwLjNjLTE1LjMtMjguNS00NS4xLTQ2LjMtNzcuNS00Ni4zSDQ4Ni4yYy0xNi4zIDAtMzEuOSA0LjUtNDUuNCAxMi42bC0zMy42LTYyLjNjLTE1LjMtMjguNS00NS4xLTQ2LjMtNzcuNS00Ni4zSDMxMC4yYy0zMi40IDAtNjIuMSAxNy44LTc3LjUgNDYuM2wtMzMuNiA2Mi4zYy0xMy41LTguMS0yOS4xLTEyLjYtNDUuNC0xMi42SDEzNC4yYy0zMi40IDAtNjIuMSAxNy44LTc3LjUgNDYuM0wxOC45IDM0MC42Yy02LjMgMTEuNy0xLjkgMjYuMiA5LjggMzIuNXMyNi4yIDEuOSAzMi41LTkuOEw4OCAzMTMuNVYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzEzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlb3BsZVB1bGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgOTZBNDggNDggMCAxIDAgODAgMGE0OCA0OCAwIDEgMCAwIDk2ek02NCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMmM5LjggMCAxOC41LTQuNCAyNC40LTExLjJMODAuNCA0ODUuM2MyLjkgMTcuNCAxOS40IDI5LjIgMzYuOCAyNi4zczI5LjItMTkuNCAyNi4zLTM2LjhMMTIzLjEgMzUyaDE1LjdsMzAgMTM0LjljMy44IDE3LjMgMjAuOSAyOC4xIDM4LjIgMjQuM3MyOC4xLTIwLjkgMjQuMy0zOC4ybC01Ny4zLTI1OCAxMTYuMyA1My44Yy41IC4zIDEuMSAuNSAxLjYgLjdjOC42IDMuNiAxOCAzLjEgMjUuOS0uN2MzLjQtMS42IDYuNi0zLjkgOS4zLTYuN2MzLjEtMy4yIDUuNS03IDcuMS0xMS40Yy4xLS4zIC4yLS43IC4zLTFsMi41LTcuNWM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUw1MzcgMjMyLjdsLTE1LjMtMzYuOEM1MDQuNSAxNTQuOCA0NjQuMyAxMjggNDE5LjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTI0LjQgMTAuOS00NC42IDI5LTU4LjEgNTEuNkwxNTcuMyAxMzYuOUMxNDQuNyAxMzEgMTMwLjkgMTI4IDExNyAxMjhINjR6TTQ2NCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTM0OS43IDMzNS42bC0yNSA2Mi40LTU5LjQgNTkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwzNzIuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVSb2JiZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC4yIDU5LjFDNDc4LjEgOTkuNiA0NDEuNyAxMjggNDAwIDEyOHMtNzguMS0yOC40LTg4LjItNjguOUwzMDMgMjQuMkMyOTguOCA3LjEgMjgxLjQtMy4zIDI2NC4yIDFTMjM2LjcgMjIuNiAyNDEgMzkuOGw4LjcgMzQuOWMxMSA0NCA0MC4yIDc5LjYgNzguMyA5OS42VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM1MmgxNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNzQuM2MzOC4xLTIwIDY3LjMtNTUuNiA3OC4zLTk5LjZMNTU5IDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzUwMS4yIDcuMSA0OTcgMjQuMmwtOC43IDM0Ljl6TTQwMCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTgwIDk2QTQ4IDQ4IDAgMSAwIDgwIDBhNDggNDggMCAxIDAgMCA5NnptLTggMzJjLTM1LjMgMC02NCAyOC43LTY0IDY0djk2bDAgLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUySDg4VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1Mi43bDEzIDIwLjVjNS45IDkuMiAxNi4xIDE0LjkgMjcgMTQuOWg0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyMDkuNmwtMzcuNC01OC45QzE1Ny42IDE0MiAxMzIuMSAxMjggMTA0LjcgMTI4SDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVSb29mIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNS41IDRsMjg4IDE2MGMxNS40IDguNiAyMSAyOC4xIDEyLjQgNDMuNXMtMjguMSAyMS00My41IDEyLjRMMzIwIDY4LjYgNDcuNSAyMjBjLTE1LjQgOC42LTM0LjkgMy00My41LTEyLjRzLTMtMzQuOSAxMi40LTQzLjVMMzA0LjUgNGM5LjctNS40IDIxLjQtNS40IDMxLjEgMHpNMzIwIDE2MGE0MCA0MCAwIDEgMSAwIDgwIDQwIDQwIDAgMSAxIDAtODB6TTE0NCAyNTZhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwem0zMTIgNDBhNDAgNDAgMCAxIDEgODAgMCA0MCA0MCAwIDEgMSAtODAgMHpNMjI2LjkgNDkxLjRMMjAwIDQ0MS41VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0MS41TDYxLjEgNDkxLjRjLTYuMyAxMS43LTIwLjggMTYtMzIuNSA5LjhzLTE2LTIwLjgtOS44LTMyLjVsMzcuOS03MC4zYzE1LjMtMjguNSA0NS4xLTQ2LjMgNzcuNS00Ni4zaDE5LjVjMTYuMyAwIDMxLjkgNC41IDQ1LjQgMTIuNmwzMy42LTYyLjNjMTUuMy0yOC41IDQ1LjEtNDYuMyA3Ny41LTQ2LjNoMTkuNWMzMi40IDAgNjIuMSAxNy44IDc3LjUgNDYuM2wzMy42IDYyLjNjMTMuNS04LjEgMjkuMS0xMi42IDQ1LjQtMTIuNmgxOS41YzMyLjQgMCA2Mi4xIDE3LjggNzcuNSA0Ni4zbDM3LjkgNzAuM2M2LjMgMTEuNyAxLjkgMjYuMi05LjggMzIuNXMtMjYuMiAxLjktMzIuNS05LjhMNTUyIDQ0MS41VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0NzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0MS41bC0yNi45IDQ5LjljLTYuMyAxMS43LTIwLjggMTYtMzIuNSA5LjhzLTE2LTIwLjgtOS44LTMyLjVsMzYuMy02Ny41Yy0xLjctMS43LTMuMi0zLjYtNC4zLTUuOEwzNzYgMzQ1LjVWNDAwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDI5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzQ1LjVsLTI2LjkgNDkuOWMtMS4yIDIuMi0yLjYgNC4xLTQuMyA1LjhsMzYuMyA2Ny41YzYuMyAxMS43IDEuOSAyNi4yLTkuOCAzMi41cy0yNi4yIDEuOS0zMi41LTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVwcGVySG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyOC4zIDNjMTEuNi02LjQgMjYuMi0yLjMgMzIuNiA5LjNsNC44IDguN2MxOS4zIDM0LjcgMTkuOCA3NS43IDMuNCAxMTBDNDk1LjggMTU5LjYgNTEyIDE5Ny45IDUxMiAyNDBjMCAxOC41LTMuMSAzNi4zLTguOSA1Mi44Yy02LjEgMTcuMy0yOC41IDE2LjMtMzYuOC0uMWwtMTEuNy0yMy40Yy00LjEtOC4xLTEyLjQtMTMuMy0yMS41LTEzLjNIMzYwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNTJjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTE3LjEgMGMtMjEuMyAwLTMwLTIzLjktMTAuOC0zMi45QzMwNC43IDg1LjQgMzI3LjcgODAgMzUyIDgwYzI4LjMgMCA1NC44IDcuMyA3Ny44IDIwLjJjNS41LTE4LjIgMy43LTM4LjQtNi01NS44TDQxOSAzNS43Yy02LjQtMTEuNi0yLjMtMjYuMiA5LjMtMzIuNnpNMTcxLjIgMzQ1LjVMMjY0IDE2MGw0MCAwdjgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDc2LjJsMjMuOSA0Ny44QzM3Mi4zIDQ0My45IDI0NC4zIDUxMiAxMDMuMiA1MTJINDQuNEMxOS45IDUxMiAwIDQ5Mi4xIDAgNDY3LjZjMC0yMC44IDE0LjUtMzguOCAzNC44LTQzLjNsNDkuOC0xMS4xYzM3LjYtOC40IDY5LjUtMzMuMiA4Ni43LTY3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcmNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc0LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTMyMCAzMjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMzIwLTMyMHpNMTI4IDEyOEE2NCA2NCAwIDEgMCAwIDEyOGE2NCA2NCAwIDEgMCAxMjggMHpNMzg0IDM4NGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkFycm93RG93blRvTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzNTJWMzUyaDE2djk2SDE4NHptLTY0IDBIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMTUyaDgwSDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNjRWMjU2LjlsMjguNiA0Ny41YzkuMSAxNS4xIDI4LjggMjAgNDMuOSAxMC45czIwLTI4LjggMTAuOS00My45bC01OC4zLTk3Yy0xNy40LTI4LjktNDguNi00Ni42LTgyLjMtNDYuNkgxNzcuMWMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlMMTIwIDI1Ni45VjQ0OHpNNDY0IDY0VjMwNi43bC0yNS40LTI1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDgwIDgwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDgwLTgwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDUyOCAzMDYuN1Y2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQXJyb3dVcEZyb21MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04IDM1MlYzNTJoMTZ2OTZIMTg0em0tNjQgMEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgxNTJoODBINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI2NFYyNTYuOWwyOC42IDQ3LjVjOS4xIDE1LjEgMjguOCAyMCA0My45IDEwLjlzMjAtMjguOCAxMC45LTQzLjlsLTU4LjMtOTdjLTE3LjQtMjguOS00OC42LTQ2LjYtODIuMy00Ni42SDE3Ny4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUwxMjAgMjU2LjlWNDQ4ek01OTguNiAxMjEuNGwtODAtODBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC04MCA4MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0NjQgMTQxLjMgNDY0IDM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0MS4zbDI1LjQgMjUuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25CaWtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMjcuMiA2NGwtNjEuOC00OC44Yy0xNy4zLTEzLjYtNDEuNy0xMy44LTU5LjEtLjNsLTgzLjEgNjQuMmMtMzAuNyAyMy44LTI4LjUgNzAuOCA0LjMgOTEuNkwyODggMzA1LjFWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4YzAtMTAuNy01LjMtMjAuNy0xNC4yLTI2LjZMMjk1IDIzMi45bDYwLjMtNDguNUwzOTYgMjE3YzUuNyA0LjUgMTIuNyA3IDIwIDdoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDI3LjJ6TTU2IDM4NGE3MiA3MiAwIDEgMSAxNDQgMEE3MiA3MiAwIDEgMSA1NiAzODR6bTIwMCAwQTEyOCAxMjggMCAxIDAgMCAzODRhMTI4IDEyOCAwIDEgMCAyNTYgMHptMTg0IDBhNzIgNzIgMCAxIDEgMTQ0IDAgNzIgNzIgMCAxIDEgLTE0NCAwem0yMDAgMGExMjggMTI4IDAgMSAwIC0yNTYgMCAxMjggMTI4IDAgMSAwIDI1NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Cb290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyaDY0VjMyem0zMjAgMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMnpNMjI0IDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBIMTkyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnpNMzIwIDBjLTkuMyAwLTE4LjEgNC0yNC4yIDExcy04LjggMTYuMy03LjUgMjUuNWwzMS4yIDIxOC42TDI4OC42IDQwOS43Yy0zLjUgMTcuMyA3LjggMzQuMiAyNS4xIDM3LjdzMzQuMi03LjggMzcuNy0yNS4xbC43LTMuNmMxLjMgMTYuNCAxNS4xIDI5LjQgMzEuOSAyOS40YzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzIwek0xMTIgODBBNDggNDggMCAxIDAgMTYgODBhNDggNDggMCAxIDAgOTYgMHptMCAyNjEuM1YyNjkuM2w0LjcgNC43YzkgOSAyMS4yIDE0LjEgMzMuOSAxNC4xSDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNTcuM2wtNDEuNi00MS42Yy0xNC4zLTE0LjMtMzMuOC0yMi40LTU0LTIyLjRDMjcuNiAxNjAgMCAxODcuNiAwIDIyMS42djU1LjdsMCAuOVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRsMzIgNDIuN1Y0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MjEuM2MwLTEwLjQtMy40LTIwLjUtOS42LTI4LjhMMTEyIDM0MS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25CcmVhc3RmZWVkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYTgwIDgwIDAgMSAxIDAgMTYwQTgwIDgwIDAgMSAxIDIyNCAwek00MzYuOCAzODIuOEwzNzMuNSA0NjJjLTE2LjYgMjAuNy00Ni44IDI0LjEtNjcuNSA3LjVjLTE3LjYtMTQuMS0yMi43LTM4LjEtMTMuNS01Ny43bC0uOC0uMWMtMzguOS01LjYtNzQuMy0yNS4xLTk5LjctNTQuOFYzMjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhjMCAuOCAwIDEuNiAuMSAyLjRsMTAxLjQgNTAuN2MyMy43IDExLjkgMzMuMyA0MC43IDIxLjUgNjQuNHMtNDAuNyAzMy4zLTY0LjQgMjEuNUwyNy4yIDQyNy4zYy0xLjEtLjUtMi4yLTEuMS0zLjMtMS43Yy00LjktMi44LTkuMi02LjQtMTIuNi0xMC42Yy00LjYtNS40LTcuOC0xMS43LTkuNi0xOC40Yy0zLjMtMTItMS45LTI1LjIgNC44LTM2LjZjLjYtMS4xIDEuMy0yLjIgMi0zLjJMNzUuNiAyNTYuMWMyNi43LTQwLjEgNzEuNy02NC4xIDExOS44LTY0LjFoNzUuMmM0Ni41IDAgOTAuMSAyMi41IDExNy4yIDYwLjNsNTAuNyA3MC45YzIuMiAzIDQgNi4xIDUuNSA5LjRjMi45IDYuNyA0LjMgMTMuOCA0IDIwLjhjLS4zIDEwLjYtNC4yIDIxLTExLjIgMjkuNHpNMzIwIDMzMmE0NCA0NCAwIDEgMCAtODggMCA0NCA0NCAwIDEgMCA4OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25CdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzODRWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1Ni45bDI4LjYgNDcuNWM5LjEgMTUuMSAyOC44IDIwIDQzLjkgMTAuOXMyMC0yOC44IDEwLjktNDMuOWwtNTguMy05N2MtMTcuNC0yOC45LTQ4LjYtNDYuNi04Mi4zLTQ2LjZINDY1LjFjLTMzLjcgMC02NC45IDE3LjctODIuMyA0Ni42bC01OC4zIDk3Yy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45TDQwOCAyNTYuOVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpNMTkwLjkgMTguMUMxODguNCAxMiAxODIuNiA4IDE3NiA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNzYgMjg2LjFsNTguNiA1My45YzQuOCA0LjQgMTEuOSA1LjUgMTcuOCAyLjZzOS41LTkgOS0xNS41bC01LjYtNzkuNCA1MC41LTcuOCAyNC4zLTQwLjUtNTUuMi0zOEwzMTUgOTIuMmMzLjMtNS43IDIuNy0xMi44LTEuNC0xNy45cy0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiA0OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0tOCAxODcuM2w0Ny40IDU3LjFjMTEuMyAxMy42IDMxLjUgMTUuNSA0NS4xIDQuMnMxNS41LTMxLjUgNC4yLTQ1LjFsLTczLjctODguOWMtMTguMi0yMi00NS4zLTM0LjctNzMuOS0zNC43SDE3Ny4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUwxMjAgMjU2LjlWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIzNS4zek0zNTIgMzc2YzAtNC40IDMuNi04IDgtOHM4IDMuNiA4IDhWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzc2YzAtMzAuOS0yNS4xLTU2LTU2LTU2cy01NiAyNS4xLTU2IDU2djhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNHYtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQ2hhbGtib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzODRWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE5Mmg1NiA2NCAxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzODRWNjRINTc2VjI1NkgzODRWMjI0SDMyMHY0OGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg1OTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzY4Yy0yNi41IDAtNDggMjEuNS00OCA0OHY4MEgyNDMuMSAxNzcuMWMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlMMTIwIDI1Ni45VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDAgMzA0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNTYuOUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmgyOS43YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDQ0LjkgNzQuN2MtMTYuMSAxNy42LTI4LjYgMzguNS0zNi42IDYxLjVjLTEuOS0xLjgtMy41LTMuOS00LjktNi4zTDIzMiAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDE1MnptMTM2IDE2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIxMS4zLTQzLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDQxNiAzODUuNGwtMjguNy0yOC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDQwIDQwYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDcyLTcyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDAgMzA0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNTYuOUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmgyOS43YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDQ0LjkgNzQuN2MtMTYuMSAxNy42LTI4LjYgMzguNS0zNi42IDYxLjVjLTEuOS0xLjgtMy41LTMuOS00LjktNi4zTDIzMiAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDE1MnpNNDMyIDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMC0xOTJjLTguOCAwLTE2IDcuMi0xNiAxNnY4MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjI4OGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkNpcmNsZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyem0xMzYgMTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjI0IDBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0OTZjOC44IDAgMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DaXJjbGVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyek00MzIgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMTYgODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDhIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzg0aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDQ0OFYzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkNpcmNsZVF1ZXN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyek00MzIgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4ek0zNjggMzIxLjZWMzI4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZ2LTYuNGMwLTUuMyA0LjMtOS42IDkuNi05LjZoNDAuNWM3LjcgMCAxMy45IDYuMiAxMy45IDEzLjljMCA1LjItMi45IDkuOS03LjQgMTIuM2wtMzIgMTYuOGMtNS4zIDIuOC04LjYgOC4yLTguNiAxNC4yVjM4NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2di01LjFsMjMuNS0xMi4zYzE1LjEtNy45IDI0LjUtMjMuNiAyNC41LTQwLjZjMC0yNS40LTIwLjYtNDUuOS00NS45LTQ1LjlINDA5LjZjLTIzIDAtNDEuNiAxOC42LTQxLjYgNDEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlMNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw0NC45IDc0LjdjLTE2LjEgMTcuNi0yOC42IDM4LjUtMzYuNiA2MS41Yy0xLjktMS44LTMuNS0zLjktNC45LTYuM0wyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6TTQzMiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em01OS4zIDEwNy4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDMyIDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDA5LjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0MzIgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0NTQuNiAzNjhsMzYuNy0zNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25EaWdnaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA2NGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek05LjggMjE0LjhjNS4xLTEyLjIgMTkuMS0xOCAzMS40LTEyLjlMNjAuNyAyMTBsMjIuOS0zOC4xQzk5LjkgMTQ0LjYgMTI5LjMgMTI4IDE2MSAxMjhjNTEuNCAwIDk3IDMyLjkgMTEzLjMgODEuN2wzNC42IDEwMy43IDc5LjMgMzMuMSAzNC4yLTQ1LjZjNi40LTguNSAxNi42LTEzLjMgMjcuMi0xMi44czIwLjMgNi40IDI1LjggMTUuNWw5NiAxNjBjNS45IDkuOSA2LjEgMjIuMiAuNCAzMi4ycy0xNi4zIDE2LjItMjcuOCAxNi4ySDI4OGMtMTEuMSAwLTIxLjQtNS43LTI3LjItMTUuMnMtNi40LTIxLjItMS40LTMxLjFsMTYtMzJjNS40LTEwLjggMTYuNS0xNy43IDI4LjYtMTcuN2gzMmwyMi41LTMwTDIyLjggMjQ2LjJjLTEyLjItNS4xLTE4LTE5LjEtMTIuOS0zMS40em04Mi44IDkxLjhsMTEyIDQ4YzExLjggNSAxOS40IDE2LjYgMTkuNCAyOS40djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQwNS4xbC02MC42LTI2LTM3IDExMWMtNS42IDE2LjgtMjMuNyAyNS44LTQwLjUgMjAuMlMtMy45IDQ4Ni42IDEuNiA0NjkuOWw0OC0xNDQgMTEtMzMgMzIgMTMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uRG90c0Zyb21MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNzZBODggODggMCAxIDAgMjg4IDBhODggODggMCAxIDAgMCAxNzZ6TTc4LjcgMzcyLjljMTUtMTIuNSA1MC0zNC40IDk3LjMtNTAuMVY0MzJINDAwVjMyMi43YzQ3LjMgMTUuOCA4Mi4zIDM3LjcgOTcuMyA1MC4xYzIwLjQgMTcgNTAuNiAxNC4yIDY3LjYtNi4xczE0LjItNTAuNi02LjEtNjcuNmMtMTItMTAtMzAuMS0yMi41LTUzLjItMzVDNDk3LjIgMjc4LjQgNDgxLjcgMjg4IDQ2NCAyODhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtNC4zIC42LTguNCAxLjYtMTIuNEMzNzkuMSAyMTUuOSAzMzUuMyAyMDggMjg4IDIwOGMtNjAuMiAwLTExNC45IDEyLjktMTYwIDI5LjljMCAuNyAwIDEuNCAwIDIuMWMwIDI2LjUtMjEuNSA0OC00OCA0OGMtMTEuOCAwLTIyLjctNC4zLTMxLTExLjRjLTEzLjEgOC4xLTIzLjcgMTUuOS0zMS43IDIyLjVjLTIwLjQgMTctMjMuMSA0Ny4yLTYuMSA2Ny42czQ3LjIgMjMuMSA2Ny42IDYuMXpNMjQgNDY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDU1MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyNHpNMjI0IDI4MGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xMDQgNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek05NiAyNDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptMzY4IDE2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uRHJlc3NCdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMzkwLjIgMzg0SDQwOHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGgxNnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGgxNy44YzEwLjkgMCAxOC42LTEwLjcgMTUuMi0yMS4xTDU0Ni43IDI0OC4xbDMzLjkgNTYuM2M5LjEgMTUuMSAyOC44IDIwIDQzLjkgMTAuOXMyMC0yOC44IDEwLjktNDMuOWwtNTMuNi04OS4yYy0yMC4yLTMzLjctNTYuNy01NC4zLTk2LTU0LjNINDc0LjJjLTM5LjMgMC03NS43IDIwLjYtOTYgNTQuM2wtNTMuNiA4OS4yYy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45bDMzLjktNTYuM0wzNzUgMzYyLjljLTMuNSAxMC40IDQuMyAyMS4xIDE1LjIgMjEuMXpNMTkwLjkgMTguMUMxODguNCAxMiAxODIuNiA4IDE3NiA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNzYgMjg2LjFsNTguNiA1My45YzQuOCA0LjQgMTEuOSA1LjUgMTcuOCAyLjZzOS41LTkgOS0xNS41bC01LjYtNzkuNCA1MC41LTcuOCAyNC40LTQwLjUtNTUuMi0zOEwzMTUgOTIuMmMzLjMtNS43IDIuNy0xMi44LTEuNC0xNy45cy0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25EcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTg4IDM4NEg3MC4yYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMUw5My4zIDI0OC4xIDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1My42LTg5LjJjMjAuMy0zMy43IDU2LjctNTQuMyA5Ni01NC4zaDExLjZjMzkuMyAwIDc1LjcgMjAuNiA5NiA1NC4zbDUzLjYgODkuMmM5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOWwtMzMuOS01Ni4zTDI2NSAzNjIuOWMzLjUgMTAuNC00LjMgMjEuMS0xNS4yIDIxLjFIMjMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NEgxNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Ecm93bmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWOTYuMmMwIDU0LjEgMjMuNSAxMDQgNjIuMiAxMzguM2wtMjEgMTQ2LjdjNy44IDIuMSAxNS41IDMuMyAyMi44IDMuM2MyMS4xIDAgNDItOC41IDU5LjItMjAuM2MyMi4xLTE1LjUgNTEuNi0xNS41IDczLjcgMGMxMi40IDguNSAyNi4xIDE0LjggMzkuNyAxOGwxNy43LTk3LjZjMTAuNy0xLjIgMjEuMy0zLjEgMzEuOS01LjVsMTA1LTIzLjljMTcuMi0zLjkgMjgtMjEuMSAyNC4xLTM4LjNzLTIxLjEtMjgtMzguMy0yNC4xTDQwMCAyMTYuNmMtNDEgOS4zLTgzLjcgNy41LTEyMy43LTUuMmMtNTAuMi0xNi04NC4zLTYyLjYtODQuMy0xMTUuM1Y2NHpNMzIwIDE5MmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMzA2LjUgMzg5LjljLTExLjEtNy45LTI1LjktNy45LTM3IDBDMjQ3IDQwNS40IDIxOS41IDQxNiAxOTIgNDE2Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWwwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgNDY5LjcgMTU5IDQ4MCAxOTIgNDgwYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43bDAgMEM0MzkuNCA0MDUuMiA0MTAuOSA0MTYgMzg0IDQxNmMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25GYWxsaW5nQnVyc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgOS44YzAgMzktMjMuNyA3NC01OS45IDg4LjRDNzEuNiAxNTQuNSAzMiAyMTMgMzIgMjc4LjJWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC03My44YzAtMTAgMS42LTE5LjggNC41LTI5TDI2MS4xIDQ5Ny40YzkuNiAxNC44IDI5LjQgMTkuMSA0NC4zIDkuNXMxOS4xLTI5LjQgOS41LTQ0LjNMMjIyLjYgMzIwSDIyNGw4MCAwIDM4LjQgNTEuMmMxMC42IDE0LjEgMzAuNyAxNyA0NC44IDYuNHMxNy0zMC43IDYuNC00NC44bC00My4yLTU3LjZDMzQxLjMgMjYzLjEgMzI3LjEgMjU2IDMxMiAyNTZsLTcxLjUgMC01Ni44LTgwLjItLjItLjNjNDQuNy0yOSA3Mi41LTc5IDcyLjUtMTMzLjZsMC05Ljh6TTk2IDgwQTQ4IDQ4IDAgMSAwIDAgODBhNDggNDggMCAxIDAgOTYgMHpNNDY0IDI4Ni4xbDU4LjYgNTMuOWM0LjggNC40IDExLjkgNS41IDE3LjggMi42czkuNS05IDktMTUuNWwtNS42LTc5LjQgNzguNy0xMi4yYzYuNS0xIDExLjctNS45IDEzLjEtMTIuMnMtMS4xLTEzLTYuNS0xNi43bC02NS42LTQ1LjFMNjAzIDkyLjJjMy4zLTUuNyAyLjctMTIuOC0xLjQtMTcuOXMtMTAuOS03LjItMTcuMi01LjNMNTA4LjMgOTIuMWwtMjkuNC03NEM0NzYuNCAxMiA0NzAuNiA4IDQ2NCA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDM0My42IDY4LjljLTYuMy0xLjktMTMuMSAuMi0xNy4yIDUuM3MtNC42IDEyLjItMS40IDE3LjlsMzkuNSA2OS4xLTY1LjYgNDUuMWMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdjLjEgLjMgLjEgLjYgLjIgLjhsMTkuNCAwYzIwLjEgMCAzOS4yIDcuNSA1My44IDIwLjhsMTguNCAyLjlMMzgzIDI2NS4zbDM2LjIgNDguM2MyLjEgMi44IDMuOSA1LjcgNS41IDguNkw0NjQgMjg2LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkZhbGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5LjhjMCA1NC42LTI3LjkgMTA0LjYtNzIuNSAxMzMuNmwuMiAuM0wzMDQuNSAyNTZsODcuNSAwYzE1LjEgMCAyOS4zIDcuMSAzOC40IDE5LjJsNDMuMiA1Ny42YzEwLjYgMTQuMSA3LjcgMzQuMi02LjQgNDQuOHMtMzQuMiA3LjctNDQuOC02LjRMMzg0IDMyMGwtOTYgMGgtMS40bDkyLjMgMTQyLjZjOS42IDE0LjggNS40IDM0LjYtOS41IDQ0LjNzLTM0LjYgNS40LTQ0LjMtOS41TDE2NC41IDI0OS4yYy0yLjkgOS4yLTQuNSAxOS00LjUgMjlsMCA3My44YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI3OC4yYzAtNjUuMSAzOS42LTEyMy43IDEwMC4xLTE0Ny45QzIzMi4zIDExNS44IDI1NiA4MC44IDI1NiA0MS44bDAtOS44YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0xMTIgMzJhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25IYWxmRHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em04IDM1MlYxMjhoNi45YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDU4LjMgOTdjOS4xIDE1LjEgNC4yIDM0LjgtMTAuOSA0My45cy0zNC44IDQuMi00My45LTEwLjlMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJoMHpNNTguMiAxODIuM2MxOS45LTMzLjEgNTUuMy01My41IDkzLjgtNTQuM1YzODRoMHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRINzAuMmMtMTAuOSAwLTE4LjYtMTAuNy0xNS4yLTIxLjFMOTMuMyAyNDguMSA1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTMuNi04OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25IYXJhc3NpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNNTkuNCAzMDQuNUw4OCAyNTYuOVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNTJoMTZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjM1LjNsNDcuNCA1Ny4xYzExLjMgMTMuNiAzMS41IDE1LjUgNDUuMSA0LjJzMTUuNS0zMS41IDQuMi00NS4xbC03My43LTg4LjljLTE4LjItMjItNDUuMy0zNC43LTczLjktMzQuN0gxNDUuMWMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjl6TTQ4MCAyNDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNNDY0IDM0NHY1OC43bC00MS40LTQxLjRjLTcuMy03LjMtMTcuNi0xMC42LTI3LjgtOXMtMTguOSA4LjEtMjMuNSAxNy4zbC00OCA5NmMtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zTDQwOC44IDQzOGw1NC43IDU0LjdjMTIuNCAxMi40IDI5LjEgMTkuMyA0Ni42IDE5LjNjMzYuNCAwIDY1LjktMjkuNSA2NS45LTY1LjlWMzQ0YzAtMzAuOS0yNS4xLTU2LTU2LTU2cy01NiAyNS4xLTU2IDU2ek0yODggNDhjMCA4LjggNy4yIDE2IDE2IDE2aDU2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMwNGMtOC44IDAtMTYgNy4yLTE2IDE2em0tLjggNDkuN2MtNy45LTQtMTcuNS0uNy0yMS41IDcuMnMtLjcgMTcuNSA3LjIgMjEuNWw0OCAyNGM3LjkgNCAxNy41IC43IDIxLjUtNy4ycy43LTE3LjUtNy4yLTIxLjVsLTQ4LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25IaWtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTUxLjMgMTgyLjdMMjI0LjIgMzA3bDQ5LjcgNDkuN2M5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzk3LjNsLTczLjktNzMuOWMtMTUuOC0xNS44LTIyLjItMzguNi0xNi45LTYwLjNsMjAuNC04NGM4LjMtMzQuMSA0Mi43LTU0LjkgNzYuNy00Ni40YzE5IDQuOCAzNS42IDE2LjQgNDYuNCAzMi43TDMwNS4xIDIwOEgzMzZWMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NTUuOGMwIC4xIDAgLjIgMCAuMnMwIC4yIDAgLjJWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI3MkgyOTYuNmMtMTYgMC0zMS04LTM5LjktMjEuNGwtMTMuMy0yMHpNODEuMSA0NzEuOUwxMTcuMyAzMzRjMyA0LjIgNi40IDguMiAxMC4xIDExLjlsNDEuOSA0MS45TDE0Mi45IDQ4OC4xYy00LjUgMTcuMS0yMiAyNy4zLTM5LjEgMjIuOHMtMjcuMy0yMi0yMi44LTM5LjF6bTU1LjUtMzQ2TDEwMS40IDI2Ni41Yy0zIDEyLjEtMTQuOSAxOS45LTI3LjIgMTcuOWwtNDcuOS04Yy0xNC0yLjMtMjIuOS0xNi4zLTE5LjItMzBMMzEuOSAxNTVjOS41LTM0LjggNDEuMS01OSA3Ny4yLTU5aDQuMmMxNS42IDAgMjcuMSAxNC43IDIzLjMgMjkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uTWlsaXRhcnlQb2ludGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuOSAxNC4xQzIzNCAxNS4yIDIyNCAyNiAyMjQgMzljMCAxMy44IDExLjIgMjUgMjUgMjVINDAwYzguOCAwIDE2LTcuMiAxNi0xNlYxNy40QzQxNiA4IDQwOCAuNyAzOTguNyAxLjRMMjQ2LjkgMTQuMXpNMjQwIDExMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDI0MS42Yy0xIDUuMi0xLjYgMTAuNS0xLjYgMTZ6TTcyIDIyNGMtMjIuMSAwLTQwIDE3LjktNDAgNDBzMTcuOSA0MCA0MCA0MEgyMjR2ODkuNEwzODYuOCAyMzAuNWMtMTMuMy00LjMtMjcuMy02LjUtNDEuNi02LjVIMjQwIDcyem0zNDUuNyAyMC45TDI0Ni42IDQxNkg0MTZWMzY5LjdsNTMuNiA5MC42YzExLjIgMTkgMzUuOCAyNS4zIDU0LjggMTQuMXMyNS4zLTM1LjggMTQuMS01NC44TDQ2Mi4zIDI5MC44Yy0xMS4yLTE4LjktMjYuNi0zNC41LTQ0LjYtNDUuOXpNMjI0IDQ0OHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQ4SDIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uTWlsaXRhcnlSaWZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMzljMC0xMyAxMC0yMy44IDIyLjktMjQuOUwzMzQuNyAxLjRDMzQ0IC43IDM1MiA4IDM1MiAxNy40VjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgxODVjLTEzLjggMC0yNS0xMS4yLTI1LTI1em0xNy42IDU3SDMzNC40YzEgNS4yIDEuNiAxMC41IDEuNiAxNmMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTUuNSAuNi0xMC44IDEuNi0xNnptMjI4IDM2NC4zTDM1MiAzNjkuN1Y0ODBjMCAxLjMtLjEgMi41LS4yIDMuOEwxNzcuNSAyMzQuOWMxNi42LTcuMSAzNC42LTEwLjkgNTMuMy0xMC45aDUwLjRjMTUuOSAwIDMxLjMgMi44IDQ1LjggNy45TDQyMS45IDY3LjdjLTcuNy00LjQtMTAuMy0xNC4yLTUuOS0yMS45czE0LjItMTAuMyAyMS45LTUuOWwxMy45IDggMTMuOSA4YzcuNyA0LjQgMTAuMyAxNC4yIDUuOSAyMS45TDQxNiAxNzMuOWwxLjYgLjljMTUuMyA4LjggMjAuNiAyOC40IDExLjcgNDMuN0wzOTIuNiAyODJjMiAyLjggMy45IDUuOCA1LjcgOC44bDc2LjEgMTI4LjhjMTEuMiAxOSA0LjkgNDMuNS0xNC4xIDU0LjhzLTQzLjUgNC45LTU0LjgtMTQuMXpNMzIwIDUxMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM2OS43bC01My42IDkwLjZjLTExLjIgMTktMzUuOCAyNS4zLTU0LjggMTQuMXMtMjUuMy0zNS44LTE0LjEtNTQuOGw3Ni4xLTEyOC44YzkuNC0xNS44IDIxLjctMjkuMyAzNi00MEwzMzEuMSA1MTBjLTMuNSAxLjMtNy4yIDItMTEuMSAyek0yOTYgMzIwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uTWlsaXRhcnlUb1BlcnNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MSAxMi41Yy04LjYgMS0xNSA4LjItMTUgMTYuOGMwIDkuMyA3LjUgMTYuOCAxNi43IDE2LjlIMTg0LjFjOC44LS4xIDE1LjktNy4yIDE1LjktMTZWMTZjMC05LjUtOC4zLTE3LTE3LjgtMTUuOUw3MSAxMi41ek0xODkuNSA3OC4xSDY2LjVDNjQuOSA4My44IDY0IDg5LjggNjQgOTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NGMwLTYuMi0uOS0xMi4yLTIuNS0xNy45ek0zMiAyNTZ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTkyYzEuOCAwIDMuNS0uMSA1LjItLjRMNTMgMjA4LjZDNDAuMSAyMjAuMyAzMiAyMzcuMiAzMiAyNTZ6bTE5MC4yIDQyLjVjMS4xLTMuMyAxLjgtNi44IDEuOC0xMC41VjI1NmMwLTM1LjMtMjguNy02NC02NC02NEg5NmMtMy43IDAtNy40IC4zLTEwLjkgLjlMMjIyLjIgMjk4LjV6TTM4NCAxNjBhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6bS0zMiAzMmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJINDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTM1LjMtMjguNy02NC02NC02NEgzNTJ6TTIxNS44IDQ1MC4xYzUuMi00LjYgOC4yLTExLjEgOC4yLTE4LjFzLTMtMTMuNS04LjItMTguMWwtNjQtNTZjLTcuMS02LjItMTcuMS03LjctMjUuNy0zLjhTMTEyIDM2Ni42IDExMiAzNzZ2MzJsLTg4IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsODggMHYzMmMwIDkuNCA1LjUgMTggMTQuMSAyMS45czE4LjYgMi40IDI1LjctMy44bDY0LTU2ek0yODggNDMxLjljMCA2LjkgMi45IDEzLjUgOC4xIDE4LjFsNjQgNTYuNGM3LjEgNi4yIDE3LjEgNy44IDI1LjcgMy45czE0LjEtMTIuNCAxNC4xLTIxLjlsMC0zMi40IDg4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTg4IDAgMC0zMmMwLTkuNC01LjUtMTgtMTQuMS0yMS45cy0xOC42LTIuNC0yNS43IDMuOGwtNjQgNTZjLTUuMiA0LjUtOC4yIDExLjEtOC4yIDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25QcmF5aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA2NEE2NCA2NCAwIDEgMCAyMjQgNjRhNjQgNjQgMCAxIDAgMTI4IDB6TTIzMi43IDI2NGwyMi45IDMxLjVjNi41IDguOSAxNi4zIDE0LjcgMjcuMiAxNi4xczIxLjktMS43IDMwLjQtOC43bDg4LTcyYzE3LjEtMTQgMTkuNi0zOS4yIDUuNi01Ni4zcy0zOS4yLTE5LjYtNTYuMy01LjZsLTU1LjIgNDUuMi0yNi4yLTM2QzI1My42IDE1Ni43IDIyOC42IDE0NCAyMDIgMTQ0Yy0zMC45IDAtNTkuMiAxNy4xLTczLjYgNDQuNEw3OS44IDI4MC45Yy0yMC4yIDM4LjUtOS40IDg1LjkgMjUuNiAxMTEuOEwxNTguNiA0MzJINzJjLTIyLjEgMC00MCAxNy45LTQwIDQwczE3LjkgNDAgNDAgNDBIMjgwYzE3LjMgMCAzMi42LTExLjEgMzgtMjcuNXMtLjMtMzQuNC0xNC4yLTQ0LjdMMTg3LjcgMzU0bDQ1LTkwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25QcmVnbmFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTEyMCAzODNjLTEzLjgtMy42LTI0LTE2LjEtMjQtMzFWMjk2LjlsLTQuNiA3LjZjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE1LTI0LjkgNDAuMy00MS41IDY4LjctNDUuNmM0LjEtLjYgOC4yLTEgMTIuNS0xaDEuMSAxMi41SDE5MmMxLjQgMCAyLjggLjEgNC4xIC4zYzM1LjcgMi45IDY1LjQgMjkuMyA3Mi4xIDY1bDYuMSAzMi41YzQ0LjMgOC42IDc3LjcgNDcuNSA3Ny43IDk0LjN2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzA0IDI2NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRoLTgtOHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvblJheXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlsLTI4LjYgNDcuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw1OC4zIDk3YzkuMSAxNS4xIDQuMiAzNC44LTEwLjkgNDMuOXMtMzQuOCA0LjItNDMuOS0xMC45TDMyOCAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDI0OHpNNyA3QzE2LjQtMi4zIDMxLjYtMi4zIDQxIDdsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw3IDQxQy0yLjMgMzEuNi0yLjMgMTYuNCA3IDd6TTQ3MSA3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtODAgODBjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMNDcxIDd6TTcgNTA1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw4MC04MGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMNDEgNTA1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHptNDY0IDBsLTgwLTgwYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uUmlmbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY1LjIgMTkyYzI1LjQgMCA0OS44IDcuMSA3MC44IDE5LjlWNTEySDE0NFYzMzcuN0w5MC40IDQyOC4zYy0xMS4yIDE5LTM1LjggMjUuMy01NC44IDE0LjFzLTI1LjMtMzUuOC0xNC4xLTU0LjhMOTcuNyAyNTguOGMyNC41LTQxLjQgNjktNjYuOCAxMTcuMS02Ni44aDUwLjR6TTE2MCA4MGE4MCA4MCAwIDEgMSAxNjAgMEE4MCA4MCAwIDEgMSAxNjAgODB6TTQ0OCAwYzguOCAwIDE2IDcuMiAxNiAxNlYxMzIuM2M5LjYgNS41IDE2IDE1LjkgMTYgMjcuN1YyNjkuM2wxNi01LjNWMjA4YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2ODQuNWMwIDYuOS00LjQgMTMtMTAuOSAxNS4yTDQ4MCAzMjUuM1YzNTJoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkg0ODRsMjMgOTIuMWMyLjUgMTAuMS01LjEgMTkuOS0xNS41IDE5LjlINDMyYy04LjggMC0xNi03LjItMTYtMTZWNDAwSDQwMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyVjE2MGMwLTExLjggNi40LTIyLjIgMTYtMjcuN1YzMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uUnVubmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMTI1LjcgMTc1LjVjOS45LTkuOSAyMy40LTE1LjUgMzcuNS0xNS41YzEuOSAwIDMuOCAuMSA1LjYgLjNMMTM3LjYgMjU0Yy05LjMgMjggMS43IDU4LjggMjYuOCA3NC41bDg2LjIgNTMuOS0yNS40IDg4LjhjLTQuOSAxNyA1IDM0LjcgMjIgMzkuNnMzNC43LTUgMzkuNi0yMmwyOC43LTEwMC40YzUuOS0yMC42LTIuNi00Mi42LTIwLjctNTMuOUwyMzggMjk5bDMwLjktODIuNCA1LjEgMTIuM0MyODkgMjY0LjcgMzIzLjkgMjg4IDM2Mi43IDI4OEgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzYyLjdjLTEyLjkgMC0yNC42LTcuOC0yOS41LTE5LjdsLTYuMy0xNWMtMTQuNi0zNS4xLTQ0LjEtNjEuOS04MC41LTczLjFsLTQ4LjctMTVjLTExLjEtMy40LTIyLjctNS4yLTM0LjQtNS4yYy0zMSAwLTYwLjggMTIuMy04Mi43IDM0LjNMNTcuNCAxNTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwyMy4xLTIzLjF6TTkxLjIgMzUySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDY5LjZjMTkgMCAzNi4yLTExLjIgNDMuOS0yOC41TDE1NyAzNjEuNmwtOS41LTZjLTE3LjUtMTAuOS0zMC41LTI2LjgtMzcuOS00NC45TDkxLjIgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25TaGVsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MS45IDQuMmMtOS44LTUuNi0yMS45LTUuNi0zMS44IDBsLTIyNCAxMjhDNi4yIDEzNy45IDAgMTQ4LjUgMCAxNjBWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTc4LjZMMjU2IDY4LjkgNDQ4IDE3OC42VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGMwLTExLjUtNi4yLTIyLjEtMTYuMS0yNy44bC0yMjQtMTI4ek0yNTYgMjA4YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHptLTggMjgwVjQwMGgxNnY4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjMxMy41bDI2LjkgNDkuOWM2LjMgMTEuNyAyMC44IDE2IDMyLjUgOS44czE2LTIwLjggOS44LTMyLjVsLTM3LjktNzAuM2MtMTUuMy0yOC41LTQ1LjEtNDYuMy03Ny41LTQ2LjNIMjQ2LjJjLTMyLjQgMC02Mi4xIDE3LjgtNzcuNSA0Ni4zbC0zNy45IDcwLjNjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDIwMCAzMTMuNVY0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU2thdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMTI4IDEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzMTkuNGM0My42IDAgNjQuNiA1My40IDMyLjggODMuMWwtNzQuNCA2OS40IDYwLjIgNjAuMmM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOVY0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzQ5LjNsLTc3LjktNzcuOGMtMjYuNi0yNi42LTI0LjYtNzAuMyA0LjMtOTQuNGwyMC40LTE3SDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTgxLjQgMzUzLjRsODYuOS04Ni45YzQuNiAxMCAxMSAxOS4zIDE5LjMgMjcuNWwyMS44IDIxLjgtODIuNyA4Mi43Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM3ptMzIyLjUgOTUuMWM4LjYgMi4xIDEzLjggMTAuOCAxMS42IDE5LjRsLS40IDEuN2MtNi4yIDI0LjktMjguNiA0Mi40LTU0LjMgNDIuNEgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODguOGMxMSAwIDIwLjYtNy41IDIzLjMtMTguMmwuNC0xLjdjMi4xLTguNiAxMC44LTEzLjggMTkuNC0xMS42ek0xMzUuMiA0NzguM2wtNi4yIDMuMWMtMjEuNiAxMC44LTQ3LjYgNi42LTY0LjYtMTAuNUw0LjcgNDExLjNjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMGw1OS42IDU5LjZjNy4zIDcuMyAxOC41IDkuMSAyNy43IDQuNWw2LjItMy4xYzcuOS00IDE3LjUtLjcgMjEuNSA3LjJzLjcgMTcuNS03LjIgMjEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU2tpaW5nTm9yZGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTIyNy4yIDE2MGMxLjkgMCAzLjggLjEgNS42IC4zTDIwMS42IDI1NGMtOS4zIDI4IDEuNyA1OC44IDI2LjggNzQuNWw4Ni4yIDUzLjlMMjkxLjMgNDY0SDIwMi44bDQxLjEtODguMS0zMi40LTIwLjNjLTcuOC00LjktMTQuNy0xMC43LTIwLjYtMTcuM0wxMzIuMiA0NjRIOTkuN2w1NC4yLTI1Ny42YzQuNi0xLjUgOS00LjEgMTIuNy03LjhsMjMuMS0yMy4xYzkuOS05LjkgMjMuNC0xNS41IDM3LjUtMTUuNXpNMTIxLjQgMTk4LjZjLjQgLjQgLjggLjggMS4zIDEuMkw2NyA0NjRIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMTU5LjNjLjQgMCAuOSAwIDEuMyAwSDMxOS4zYy41IDAgMSAwIDEuNCAwSDUwNGMzOS44IDAgNzItMzIuMiA3Mi03MnYtOGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDQzNC42bDI3LjYtMTc5LjNjMTAuNS01LjIgMTcuOC0xNi4xIDE3LjgtMjguN2MwLTE3LjctMTQuMy0zMi0zMi0zMkg0MjYuN2MtMTIuOSAwLTI0LjYtNy44LTI5LjUtMTkuN2wtNi4zLTE1Yy0xNC42LTM1LjEtNDQuMS02MS45LTgwLjUtNzMuMWwtNDguNy0xNWMtMTEuMS0zLjQtMjIuNy01LjItMzQuNC01LjJjLTMxIDAtNjAuOCAxMi4zLTgyLjcgMzQuM2wtMjMuMSAyMy4xYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3ptMzA4IDg5LjRMNDAyLjMgNDY0SDM1Ny44bDIxLjYtNzUuNmM1LjktMjAuNi0yLjYtNDIuNi0yMC43LTUzLjlMMzAyIDI5OWwzMC45LTgyLjQgNS4xIDEyLjNDMzUzIDI2NC43IDM4Ny45IDI4OCA0MjYuNyAyODhoMi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Ta2lpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjcgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMi43IDI2OC45YzYuMS0xMS44IDIwLjYtMTYuMyAzMi40LTEwLjJMMjMyLjcgMzYxLjNsNDYuMi02OS4yLTc1LjEtNzUuMWMtMTQuNi0xNC42LTIwLjQtMzMuOS0xOC40LTUyLjFsMTA4LjggNTIgMzkuMyAzOS4zYzE2LjIgMTYuMiAxOC43IDQxLjUgNiA2MC42TDI4OS44IDM5MWwxMjguNyA2Ni44YzEzLjYgNy4xIDI5LjggNy4yIDQzLjYgLjNsMTUuMi03LjZjMTEuOS01LjkgMjYuMy0xLjEgMzIuMiAxMC43czEuMSAyNi4zLTEwLjcgMzIuMmwtMTUuMiA3LjZjLTI3LjUgMTMuNy01OS45IDEzLjUtODcuMi0uN0wxMi45IDMwMS4zQzEuMiAyOTUuMi0zLjQgMjgwLjcgMi43IDI2OC45ek0xMTguOSA2NS42TDEzNyA3NC4ybDguNy0xNy40YzQtNy45IDEzLjYtMTEuMSAyMS41LTcuMnMxMS4xIDEzLjYgNy4yIDIxLjVsLTguNSAxNi45IDU0LjcgMjYuMmMxLjUtLjcgMy4xLTEuNCA0LjctMi4xbDgzLjQtMzMuNGMzNC4yLTEzLjcgNzIuOCA0LjIgODQuNSAzOS4ybDE3LjEgNTEuMiA1Mi4xIDI2LjFjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOXMtMjcuMSAyMi4yLTQyLjkgMTQuM2wtNTguMS0yOWMtMTEuNC01LjctMjAtMTUuNy0yNC4xLTI3LjhsLTUuOC0xNy4zLTI3LjMgMTIuMS02LjggMy02LjctMy4yTDE1MS41IDExNi43bC05LjIgMTguNGMtNCA3LjktMTMuNiAxMS4xLTIxLjUgNy4ycy0xMS4xLTEzLjYtNy4yLTIxLjVsOS0xOC0xNy42LTguNGMtOC0zLjgtMTEuMy0xMy40LTcuNS0yMS4zczEzLjQtMTEuMyAyMS4zLTcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU25vd2JvYXJkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS43IDMuNGMxNS44LTcuOSAzNS0xLjUgNDIuOSAxNC4zbDI1IDUwIDQyLjQgOC41YzE5LjUgMy45IDM3LjggMTIuMyA1My41IDI0LjVsMTI2LjEgOTguMWMxNCAxMC45IDE2LjUgMzEgNS42IDQ0LjlzLTMxIDE2LjUtNDQuOSA1LjZsLTcyLjEtNTYuMS03MS41IDMxLjggMzMuMSAyNy42YzIzLjIgMTkuMyAzMy41IDUwIDI2LjcgNzkuNGwtMTcuNCA3NS4yYy0yLjIgOS40LTguMiAxNi44LTE2LjEgMjFsODYuNSAzMy4xYzQuNiAxLjggOS40IDIuNiAxNC4zIDIuNkg0NzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDQzLjhjLTEwLjggMC0yMS40LTItMzEuNS01LjhMNjAuMSAzNzEuM2MtMTEuNS00LjQtMjItMTEuMi0zMC44LTIwTDcgMzI5Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMjIuNCAyMi40YzQgNCA4LjcgNy4xIDE0IDkuMWwyMi40IDguNmMtLjgtMS42LTEuNS0zLjItMi4xLTQuOWMtNS42LTE2LjggMy41LTM0LjkgMjAuMi00MC41TDE5MiAyNjQuOWwwLTUzLjJjMC0yNC4yIDEzLjctNDYuNCAzNS40LTU3LjJsNDUuMi0yMi42LTcuNS0xLjVjLTE5LjQtMy45LTM1LjktMTYuNS00NC43LTM0LjFsLTI1LTUwYy03LjktMTUuOC0xLjUtMzUgMTQuMy00Mi45ek0xMzkgMzUwLjFsMTU5IDYwLjljLTIuMS01LjYtMi42LTExLjktMS4xLTE4LjJsMTcuNC03NS4yYzEuNC01LjktLjctMTItNS4zLTE1LjlsLTUyLjgtNDQgMCAxOC44YzAgMjAuNy0xMy4yIDM5LTMyLjggNDUuNUwxMzkgMzUwLjF6TTQzMiAwYTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU3dpbW1pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA5LjUgMTc4LjRMNDQ3LjkgMjk3LjFjLTEuNiAuOS0zLjIgMi00LjggM2MtMTggMTIuNC00MC4xIDIwLjMtNTkuMiAyMC4zYy0xOS42IDAtNDAuOC03LjctNTkuMi0yMC4zYy0yMi4xLTE1LjUtNTEuNi0xNS41LTczLjcgMGMtMTcuMSAxMS44LTM4IDIwLjMtNTkuMiAyMC4zYy0xMC4xIDAtMjEuMS0yLjItMzEuOS02LjJDMTYzLjEgMTkzLjIgMjYyLjIgOTYgMzg0IDk2aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NGMtMjYuOSAwLTUyLjMgNi42LTc0LjUgMTguNHpNMTYwIDE2MEE2NCA2NCAwIDEgMSAzMiAxNjBhNjQgNjQgMCAxIDEgMTI4IDB6TTMwNi41IDMyNS45QzMyOSAzNDEuNCAzNTYuNSAzNTIgMzg0IDM1MmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA0MDUuNyA0MTcgNDE2IDM4NCA0MTZjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyAzNDEuMiAxNjUuMSAzNTIgMTkyIDM1MmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uVGhyb3VnaFdpbmRvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NGwyMjQgMCAwIDkuOGMwIDM5LTIzLjcgNzQtNTkuOSA4OC40QzE2Ny42IDE4Ni41IDEyOCAyNDUgMTI4IDMxMC4ybDAgNzMuOHMwIDAgMCAwSDY0VjY0em0yODggMGwyMjQgMFYzODRINTA4LjNsLTMuNy00LjUtNzUuMi05MC4yYy05LjEtMTAuOS0yMi42LTE3LjMtMzYuOS0xNy4zbC03MS4xIDAtNDEtNjMuMWMtLjMtLjUtLjYtMS0xLTEuNGM0NC43LTI5IDcyLjUtNzkgNzIuNS0xMzMuNmwwLTkuOHptNzMgMzIwSDM3OS4ybDQyLjcgNjRINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OFY0MDBjMCAyNi41IDIxLjUgNDggNDggNDhIMzA4LjJsMzMuMiA0OS44YzkuOCAxNC43IDI5LjcgMTguNyA0NC40IDguOXMxOC43LTI5LjcgOC45LTQ0LjRMMzEwLjUgMzM2bDc0LjYgMCA0MCA0OHptLTE1OS41IDBIMTkyczAgMCAwIDBsMC03My44YzAtMTAuMiAxLjYtMjAuMSA0LjctMjkuNUwyNjUuNSAzODR6TTE5MiAxMjhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uV2Fsa2luZ0Fycm93TG9vcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMTIzLjcgMjAwLjVjMS0uNCAxLjktLjggMi45LTEuMmwtMTYuOSA2My41Yy01LjYgMjEuMS0uMSA0My42IDE0LjcgNTkuN2w3MC43IDc3LjEgMjIgODguMWM0LjMgMTcuMSAyMS43IDI3LjYgMzguOCAyMy4zczI3LjYtMjEuNyAyMy4zLTM4LjhsLTIzLTkyLjFjLTEuOS03LjgtNS44LTE0LjktMTEuMi0yMC44bC00OS41LTU0IDE5LjMtNjUuNSA5LjYgMjNjNC40IDEwLjYgMTIuNSAxOS4zIDIyLjggMjQuNWwyNi43IDEzLjNjMTUuOCA3LjkgMzUgMS41IDQyLjktMTQuM3MxLjUtMzUtMTQuMy00Mi45TDI4MSAyMzIuN2wtMTUuMy0zNi44QzI0OC41IDE1NC44IDIwOC4zIDEyOCAxNjMuNyAxMjhjLTIyLjggMC00NS4zIDQuOC02Ni4xIDE0bC04IDMuNWMtMzIuOSAxNC42LTU4LjEgNDIuNC02OS40IDc2LjVsLTIuNiA3LjhjLTUuNiAxNi44IDMuNSAzNC45IDIwLjIgNDAuNXMzNC45LTMuNSA0MC41LTIwLjJsMi42LTcuOGM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41em0tMzAgMTM1LjFMNjguNyAzOTggOS40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDExNi4zIDQ0MWM0LjYtNC42IDguMi0xMC4xIDEwLjYtMTYuMWwxNC41LTM2LjItNDAuNy00NC40Yy0yLjUtMi43LTQuOC01LjYtNy04LjZ6bTM0Ny43IDExOWMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDQ2MS4zIDM4NEg0ODBjODguNCAwIDE2MC03MS42IDE2MC0xNjBzLTcxLjYtMTYwLTE2MC0xNjBMMzUyIDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDEyOCAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDQ2MS4zbDI1LjQtMjUuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtODAgODBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25XYWxraW5nQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0xMjMuNyAyMDAuNWMxLS40IDEuOS0uOCAyLjktMS4ybC0xNi45IDYzLjVjLTUuNiAyMS4xLS4xIDQzLjYgMTQuNyA1OS43bDcwLjcgNzcuMSAyMiA4OC4xYzQuMyAxNy4xIDIxLjcgMjcuNiAzOC44IDIzLjNzMjcuNi0yMS43IDIzLjMtMzguOGwtMjMtOTIuMWMtMS45LTcuOC01LjgtMTQuOS0xMS4yLTIwLjhsLTQ5LjUtNTQgMTkuMy02NS41IDkuNiAyM2M0LjQgMTAuNiAxMi41IDE5LjMgMjIuOCAyNC41bDI2LjcgMTMuM2MxNS44IDcuOSAzNSAxLjUgNDIuOS0xNC4zczEuNS0zNS0xNC4zLTQyLjlMMjgxIDIzMi43bC0xNS4zLTM2LjhDMjQ4LjUgMTU0LjggMjA4LjMgMTI4IDE2My43IDEyOGMtMjIuOCAwLTQ1LjMgNC44LTY2LjEgMTRsLTggMy41Yy0zMi45IDE0LjYtNTguMSA0Mi40LTY5LjQgNzYuNWwtMi42IDcuOGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwyLjYtNy44YzUuNy0xNy4xIDE4LjMtMzAuOSAzNC43LTM4LjJsOC0zLjV6bS0zMCAxMzUuMUw2OC43IDM5OCA5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTE2LjMgNDQxYzQuNi00LjYgOC4yLTEwLjEgMTAuNi0xNi4xbDE0LjUtMzYuMi00MC43LTQ0LjRjLTIuNS0yLjctNC44LTUuNi03LTguNnpNNTUwLjYgMTUzLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDUzMC43IDIyNEgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTMwLjdsLTI1LjQgMjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw4MC04MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbldhbGtpbmdEYXNoZWRMaW5lQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0xMjMuNyAyMDAuNWMxLS40IDEuOS0uOCAyLjktMS4ybC0xNi45IDYzLjVjLTUuNiAyMS4xLS4xIDQzLjYgMTQuNyA1OS43bDcwLjcgNzcuMSAyMiA4OC4xYzQuMyAxNy4xIDIxLjcgMjcuNiAzOC44IDIzLjNzMjcuNi0yMS43IDIzLjMtMzguOGwtMjMtOTIuMWMtMS45LTcuOC01LjgtMTQuOS0xMS4yLTIwLjhsLTQ5LjUtNTQgMTkuMy02NS41IDkuNiAyM2M0LjQgMTAuNiAxMi41IDE5LjMgMjIuOCAyNC41bDI2LjcgMTMuM2MxNS44IDcuOSAzNSAxLjUgNDIuOS0xNC4zczEuNS0zNS0xNC4zLTQyLjlMMjgxIDIzMi43bC0xNS4zLTM2LjhDMjQ4LjUgMTU0LjggMjA4LjMgMTI4IDE2My43IDEyOGMtMjIuOCAwLTQ1LjMgNC44LTY2LjEgMTRsLTggMy41Yy0zMi45IDE0LjYtNTguMSA0Mi40LTY5LjQgNzYuNWwtMi42IDcuOGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwyLjYtNy44YzUuNy0xNy4xIDE4LjMtMzAuOSAzNC43LTM4LjJsOC0zLjV6bS0zMCAxMzUuMUw2OC43IDM5OCA5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTE2LjMgNDQxYzQuNi00LjYgOC4yLTEwLjEgMTAuNi0xNi4xbDE0LjUtMzYuMi00MC43LTQ0LjRjLTIuNS0yLjctNC44LTUuNi03LTguNnpNNTUwLjYgMTUzLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDUzMC43IDIyNEgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTMwLjdsLTI1LjQgMjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw4MC04MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtODAtODB6TTM5MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNFY3MmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxNTJjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxNTJ6TTM5MiAzMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzQ0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbldhbGtpbmdMdWdnYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTM0Ny43IDIwMC41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUw1MDUgMjMyLjdsLTE1LjMtMzYuOEM0NzIuNSAxNTQuOCA0MzIuMyAxMjggMzg3LjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTMyLjkgMTQuNi01OC4xIDQyLjQtNjkuNCA3Ni41bC0yLjYgNy44Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDIuNi03LjhjNS43LTE3LjEgMTguMy0zMC45IDM0LjctMzguMmw4LTMuNXptLTMwIDEzNS4xbC0yNSA2Mi40LTU5LjQgNTkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwzNDAuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42ek0yNTYgMjc0LjFjLTcuNy00LjQtMTcuNC0xLjgtMjEuOSA1LjlsLTMyIDU1LjRMMTQ3LjcgMzA0Yy0xNS4zLTguOC0zNC45LTMuNi00My43IDExLjdMNDAgNDI2LjZjLTguOCAxNS4zLTMuNiAzNC45IDExLjcgNDMuN2w1NS40IDMyYzE1LjMgOC44IDM0LjkgMy42IDQzLjctMTEuN2w2NC0xMTAuOWMxLjUtMi42IDIuNi01LjIgMy4zLThMMjYxLjkgMjk2YzQuNC03LjcgMS44LTE3LjQtNS45LTIxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbldhbGtpbmdXaXRoQ2FuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOC40IDMyYy0zNi40IDAtNjkuNiAyMC41LTg1LjkgNTMuMUwzNS40IDI3My43Yy03LjkgMTUuOC0xLjUgMzUgMTQuMyA0Mi45czM1IDEuNSA0Mi45LTE0LjNMMTI4IDIzMS42djQzLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNMMjI0IDM5Ny4zVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM5MC42YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMMjI0IDMwNi43VjIxMy4zbDcwLjQgOTMuOWMxMC42IDE0LjEgMzAuNyAxNyA0NC44IDYuNHMxNy0zMC43IDYuNC00NC44TDI2OC44IDE2Ni40QzI1MC43IDE0Mi4yIDIyMi4yIDEyOCAxOTIgMTI4SDE2Ny42ek0xMjguMyAzNDYuOEw5NyA0NzIuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wyMi04OC4yLTUyLjgtNTIuOHpNNDUwLjggNTA1LjFjNSA3LjMgMTUgOS4xIDIyLjMgNHM5LjEtMTUgNC0yMi4zTDM1OC45IDMxNi4xYy0yLjggMy44LTYuMSA3LjMtMTAuMSAxMC4zYy01IDMuOC0xMC41IDYuNC0xNi4yIDcuOUw0NTAuOCA1MDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uV2Fsa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMTI2LjUgMTk5LjNjLTEgLjQtMS45IC44LTIuOSAxLjJsLTggMy41Yy0xNi40IDcuMy0yOSAyMS4yLTM0LjcgMzguMmwtMi42IDcuOGMtNS42IDE2LjgtMjMuNyAyNS44LTQwLjUgMjAuMnMtMjUuOC0yMy43LTIwLjItNDAuNWwyLjYtNy44YzExLjQtMzQuMSAzNi42LTYxLjkgNjkuNC03Ni41bDgtMy41YzIwLjgtOS4yIDQzLjMtMTQgNjYuMS0xNGM0NC42IDAgODQuOCAyNi44IDEwMS45IDY3LjlMMjgxIDIzMi43bDIxLjQgMTAuN2MxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zTDI0NyAyODcuM2MtMTAuMy01LjItMTguNC0xMy44LTIyLjgtMjQuNWwtOS42LTIzLTE5LjMgNjUuNSA0OS41IDU0YzUuNCA1LjkgOS4yIDEzIDExLjIgMjAuOGwyMyA5Mi4xYzQuMyAxNy4xLTYuMSAzNC41LTIzLjMgMzguOHMtMzQuNS02LjEtMzguOC0yMy4zbC0yMi04OC4xLTcwLjctNzcuMWMtMTQuOC0xNi4xLTIwLjMtMzguNi0xNC43LTU5LjdsMTYuOS02My41ek02OC43IDM5OGwyNS02Mi40YzIuMSAzIDQuNSA1LjggNyA4LjZsNDAuNyA0NC40LTE0LjUgMzYuMmMtMi40IDYtNiAxMS41LTEwLjYgMTYuMUw1NC42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0w2OC43IDM5OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNTguMyA5N2M5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOUwyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlc2V0YVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0djk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgOTZWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUyaDk2Yzc3LjQgMCAxNDItNTUgMTU2LjgtMTI4SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtMy4yQzMzNCA4NyAyNjkuNCAzMiAxOTIgMzJINjR6TTI4Mi41IDE2MEg5NlY5Nmg5NmM0MS44IDAgNzcuNCAyNi43IDkwLjUgNjR6TTk2IDIyNEgyODIuNWMtMTMuMiAzNy4zLTQ4LjcgNjQtOTAuNSA2NEg5NlYyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlc29TaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NHY2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwwIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgNjR2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRoODBjNjguNCAwIDEyNy43LTM5IDE1Ni44LTk2SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtLjdjLjUtNS4zIC43LTEwLjYgLjctMTZzLS4yLTEwLjctLjctMTZoLjdjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzMyLjhDMzAzLjcgNzEgMjQ0LjQgMzIgMTc2IDMySDY0em0xOTAuNCA5Nkg5NlY5Nmg4MGMzMC41IDAgNTguMiAxMi4yIDc4LjQgMzJ6TTk2IDE5MkgyODYuOWMuNyA1LjIgMS4xIDEwLjYgMS4xIDE2cy0uNCAxMC44LTEuMSAxNkg5NlYxOTJ6bTE1OC40IDk2Yy0yMC4yIDE5LjgtNDcuOSAzMi03OC40IDMySDk2VjI4OEgyNTQuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVGbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ny4xIDI0LjZjNy43LTE4LjYgMjgtMjguNSA0Ny40LTIzLjJsODggMjRDNDk5LjkgMzAuMiA1MTIgNDYgNTEyIDY0YzAgMjQ3LjQtMjAwLjYgNDQ4LTQ0OCA0NDhjLTE4IDAtMzMuOC0xMi4xLTM4LjYtMjkuNWwtMjQtODhjLTUuMy0xOS40IDQuNi0zOS43IDIzLjItNDcuNGw5Ni00MGMxNi4zLTYuOCAzNS4yLTIuMSA0Ni4zIDExLjZMMjA3LjMgMzY4YzcwLjQtMzMuMyAxMjcuNC05MC4zIDE2MC43LTE2MC43TDMxOC43IDE2N2MtMTMuNy0xMS4yLTE4LjQtMzAtMTEuNi00Ni4zbDQwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwMS4yIDUuMWMxMC40LTguMiAyNS41LTYuMyAzMy43IDQuMXM2LjMgMjUuNS00LjEgMzMuN2wtNTkyIDQ2NGMtMTAuNCA4LjItMjUuNSA2LjMtMzMuNy00LjFzLTYuMy0yNS41IDQuMS0zMy43bDE1NS42LTEyMkMxMDEuOCAyNzAgNjQgMTcxLjQgNjQgNjRjMC0xOCAxMi4xLTMzLjggMjkuNS0zOC42bDg4LTI0YzE5LjQtNS4zIDM5LjcgNC42IDQ3LjQgMjMuMmw0MCA5NmM2LjggMTYuMyAyLjEgMzUuMi0xMS42IDQ2LjNMMjA4IDIwNy4zYzEyIDI1LjUgMjcuMiA0OS4yIDQ1IDcwLjdMNjAxLjIgNS4xek0yMzQuMyA0MTUuNmw5MS4zLTcyYzEzLjcgOS4xIDI4IDE3LjMgNDMgMjQuM0w0MDkgMzE4LjdjMTEuMi0xMy43IDMwLTE4LjQgNDYuMy0xMS42bDk2IDQwYzE4LjYgNy43IDI4LjUgMjggMjMuMiA0Ny40bC0yNCA4OEM1NDUuOCA0OTkuOSA1MzAgNTEyIDUxMiA1MTJjLTEwNC45IDAtMjAxLjMtMzYtMjc3LjctOTYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgwIDBDNDA4LjEgMCA1MTIgMTAzLjkgNTEyIDIzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTEwMS42LTgyLjQtMTg0LTE4NC0xODRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTggMTkyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptLTMyLTcyYzAtMTMuMyAxMC43LTI0IDI0LTI0Yzc1LjEgMCAxMzYgNjAuOSAxMzYgMTM2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNDguNi0zOS40LTg4LTg4LTg4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNMTE3LjUgMS40YzE5LjQtNS4zIDM5LjcgNC42IDQ3LjQgMjMuMmw0MCA5NmM2LjggMTYuMyAyLjEgMzUuMi0xMS42IDQ2LjNMMTQ0IDIwNy4zYzMzLjMgNzAuNCA5MC4zIDEyNy40IDE2MC43IDE2MC43TDM0NSAzMTguN2MxMS4yLTEzLjcgMzAtMTguNCA0Ni4zLTExLjZsOTYgNDBjMTguNiA3LjcgMjguNSAyOCAyMy4yIDQ3LjRsLTI0IDg4QzQ4MS44IDQ5OS45IDQ2NiA1MTIgNDQ4IDUxMkMyMDAuNiA1MTIgMCAzMTEuNCAwIDY0QzAgNDYgMTIuMSAzMC4yIDI5LjUgMjUuNGw4OC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY0LjkgMjQuNmMtNy43LTE4LjYtMjgtMjguNS00Ny40LTIzLjJsLTg4IDI0QzEyLjEgMzAuMiAwIDQ2IDAgNjRDMCAzMTEuNCAyMDAuNiA1MTIgNDQ4IDUxMmMxOCAwIDMzLjgtMTIuMSAzOC42LTI5LjVsMjQtODhjNS4zLTE5LjQtNC42LTM5LjctMjMuMi00Ny40bC05Ni00MGMtMTYuMy02LjgtMzUuMi0yLjEtNDYuMyAxMS42TDMwNC43IDM2OEMyMzQuMyAzMzQuNyAxNzcuMyAyNzcuNyAxNDQgMjA3LjNMMTkzLjMgMTY3YzEzLjctMTEuMiAxOC40LTMwIDExLjYtNDYuM2wtNDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob3RvRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMjg4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDI1NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjRjMC0zNS4zIDI4LjctNjQgNjQtNjR6TTQ3NiAxMDYuN0M0NzEuNSAxMDAgNDY0IDk2IDQ1NiA5NnMtMTUuNSA0LTIwIDEwLjdsLTU2IDg0TDM2Mi43IDE2OWMtNC42LTUuNy0xMS41LTktMTguNy05cy0xNC4yIDMuMy0xOC43IDlsLTY0IDgwYy01LjggNy4yLTYuOSAxNy4xLTIuOSAyNS40czEyLjQgMTMuNiAyMS42IDEzLjZoODAgNDhINTUyYzguOSAwIDE3LTQuOSAyMS4yLTEyLjdzMy43LTE3LjMtMS4yLTI0LjZsLTk2LTE0NHpNMzM2IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTY0IDEyOGg5NlYzODR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NEg1MTJ2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MmMwLTM1LjMgMjguNy02NCA2NC02NHptOCA2NGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNkg4OGM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkg3MnptMCAxMDRjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZIODhjOC44IDAgMTYtNy4yIDE2LTE2VjMxMmMwLTguOC03LjItMTYtMTYtMTZINzJ6bTAgMTA0Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2SDg4YzguOCAwIDE2LTcuMiAxNi0xNlY0MTZjMC04LjgtNy4yLTE2LTE2LTE2SDcyem0zMzYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDE2YzguOCAwIDE2LTcuMiAxNi0xNlY0MTZjMC04LjgtNy4yLTE2LTE2LTE2SDQyNGMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWdneUJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDk2bDAgLjdjLTUuMy0uNC0xMC42LS43LTE2LS43SDI1NmMtMTYuNSAwLTMyLjUgMi4xLTQ3LjggNmMtLjEtMi0uMi00LS4yLTZjMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NnptLTE2IDMyYzMuNSAwIDcgLjEgMTAuNCAuM2M0LjIgLjMgOC40IC43IDEyLjYgMS4zQzQyNC42IDEwOS4xIDQ1MC44IDk2IDQ4MCA5NmgxMS41YzEwLjQgMCAxOCA5LjggMTUuNSAxOS45bC0xMy44IDU1LjJjMTUuOCAxNC44IDI4LjcgMzIuOCAzNy41IDUyLjlINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDUxMmMtOS4xIDEyLjEtMTkuOSAyMi45LTMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQxNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQ4SDI1NnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMtMzQuOS0yNi4yLTU4LjctNjYuMy02My4yLTExMkg2OGMtMzcuNiAwLTY4LTMwLjQtNjgtNjhzMzAuNC02OCA2OC02OGg0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDY4Yy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMEg5OS4yYzEyLjEtNTkuOCA1Ny43LTEwNy41IDExNi4zLTEyMi44YzEyLjktMy40IDI2LjUtNS4yIDQwLjUtNS4ySDM4NHptNjQgMTM2YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA5NmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjU2aDk2VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OHpNMCAxNDRDMCA4Mi4xIDUwLjEgMzIgMTEyIDMyczExMiA1MC4xIDExMiAxMTJWMzY4YzAgNjEuOS01MC4xIDExMi0xMTIgMTEyUzAgNDI5LjkgMCAzNjhWMTQ0ek01NTQuOSAzOTkuNGMtNy4xIDEyLjMtMjMuNyAxMy4xLTMzLjggMy4xTDMzMy41IDIxNC45Yy0xMC0xMC05LjMtMjYuNyAzLjEtMzMuOEMzNjAgMTY3LjcgMzg3LjEgMTYwIDQxNiAxNjBjODguNCAwIDE2MCA3MS42IDE2MCAxNjBjMCAyOC45LTcuNyA1Ni0yMS4xIDc5LjR6bS01OS41IDU5LjVDNDcyIDQ3Mi4zIDQ0NC45IDQ4MCA0MTYgNDgwYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MGMwLTI4LjkgNy43LTU2IDIxLjEtNzkuNGM3LjEtMTIuMyAyMy43LTEzLjEgMzMuOC0zLjFMNDk4LjUgNDI1LjFjMTAgMTAgOS4zIDI2LjctMy4xIDMzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpenphU2xpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY5LjcgLjljLTIyLjgtMS42LTQxLjkgMTQtNDcuNSAzNC43TDExMC40IDgwYy41IDAgMS4xIDAgMS42IDBjMTc2LjcgMCAzMjAgMTQzLjMgMzIwIDMyMGMwIC41IDAgMS4xIDAgMS42bDQ0LjQtMTEuOGMyMC44LTUuNSAzNi4zLTI0LjcgMzQuNy00Ny41QzQ5OC41IDE1OS41IDM1Mi41IDEzLjUgMTY5LjcgLjl6TTM5OS44IDQxMC4yYy4xLTMuNCAuMi02LjggLjItMTAuMmMwLTE1OS4xLTEyOC45LTI4OC0yODgtMjg4Yy0zLjQgMC02LjggLjEtMTAuMiAuMkwuNSA0OTEuOWMtMS41IDUuNSAuMSAxMS40IDQuMSAxNS40czkuOSA1LjYgMTUuNCA0LjFMMzk5LjggNDEwLjJ6TTE3NiAyMDhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NCAxMjhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNOTYgMzg0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYWNlT2ZXb3JzaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMDkuM1YyMTcuNkwxODMuMyAyNDJjLTE0LjUgOC43LTIzLjMgMjQuMy0yMy4zIDQxLjJWNTEyaDk2VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0djk2aDk2VjI4My4yYzAtMTYuOS04LjgtMzIuNS0yMy4zLTQxLjJMNDE2IDIxNy42VjEwOS4zYzAtOC41LTMuNC0xNi42LTkuNC0yMi42TDMzMS4zIDExLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDIzMy40IDg2LjZjLTYgNi05LjQgMTQuMS05LjQgMjIuNnpNMjQuOSAzMzAuM0M5LjUgMzM4LjggMCAzNTQuOSAwIDM3Mi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MFYyNzMuNkwyNC45IDMzMC4zek01OTIgNTEyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM3Mi40YzAtMTcuNS05LjUtMzMuNi0yNC45LTQyLjFMNTEyIDI3My42VjUxMmg4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVBcnJpdmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS4zIDE2Ni45TDAgNjhDMCA1Ny43IDkuNSA1MC4xIDE5LjUgNTIuM2wzNS42IDcuOWMxMC42IDIuMyAxOS4yIDkuOSAyMyAyMEw5NiAxMjhsMTI3LjMgMzcuNkwxODEuOCAyMC40QzE3OC45IDEwLjIgMTg2LjYgMCAxOTcuMiAwaDQwLjFjMTEuNiAwIDIyLjIgNi4yIDI3LjkgMTYuM2wxMDkgMTkzLjggMTA3LjIgMzEuN2MxNS45IDQuNyAzMC44IDEyLjUgNDMuNyAyMi44bDM0LjQgMjcuNmMyNCAxOS4yIDE4LjEgNTcuMy0xMC43IDY4LjJjLTQxLjIgMTUuNi04Ni4yIDE4LjEtMTI4LjggN0wxMjEuNyAyODkuOGMtMTEuMS0yLjktMjEuMi04LjctMjkuMy0xNi45TDkuNSAxODkuNGMtNS45LTYtOS4zLTE0LjEtOS4zLTIyLjV6TTMyIDQ0OEg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTk2LTgwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTEyOC0xNmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43djg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45djY1LjVjMCAxMC42IDEwLjIgMTguMyAyMC40IDE1LjRsMTcxLjYtNDkgMCA3MC45LTU3LjYgNDMuMmMtNCAzLTYuNCA3LjgtNi40IDEyLjh2NDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zVjkzLjdDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTY0MCAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43djg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45djY1LjVjMCAxMC42IDEwLjIgMTguMyAyMC40IDE1LjRsMTcxLjYtNDkgMCA3MC45LTU3LjYgNDMuMmMtNCAzLTYuNCA3LjgtNi40IDEyLjh2NDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zVjkzLjdDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43djg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45djY1LjVjMCAxMC42IDEwLjIgMTguMyAyMC40IDE1LjRsMTcxLjYtNDkgMCA3MC45LTU3LjYgNDMuMmMtNCAzLTYuNCA3LjgtNi40IDEyLjh2NDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zVjkzLjdDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZURlcGFydHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODEgMTE0LjlMMTg2LjEgNDEuOGMtMTYuNy02LjItMzUuMi01LjMtNTEuMSAyLjdMODkuMSA2Ny40Qzc4IDczIDc3LjIgODguNSA4Ny42IDk1LjJsMTQ2LjkgOTQuNUwxMzYgMjQwIDc3LjggMjE0LjFjLTguNy0zLjktMTguOC0zLjctMjcuMyAuNkwxOC4zIDIzMC44Yy05LjMgNC43LTExLjggMTYuOC01IDI0LjdsNzMuMSA4NS4zYzYuMSA3LjEgMTUgMTEuMiAyNC4zIDExLjJIMjQ4LjRjNSAwIDkuOS0xLjIgMTQuMy0zLjRMNTM1LjYgMjEyLjJjNDYuNS0yMy4zIDgyLjUtNjMuMyAxMDAuOC0xMTJDNjQ1LjkgNzUgNjI3LjIgNDggNjAwLjIgNDhINTQyLjhjLTIwLjIgMC00MC4yIDQuOC01OC4yIDE0TDM4MSAxMTQuOXpNMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5My43QzE5MiA1OS41IDIyMSAwIDI1NiAwYzM2IDAgNjQgNTkuNSA2NCA5My43djg0LjZsMTAxLjggNTguMkM0MTggMjQ3LjYgNDE2IDI1OS42IDQxNiAyNzJ2MjQuNmMtMTcuOSAxMC40LTMwLjMgMjkuMS0zMS44IDUwLjlMMzIwIDMyOS4xVjQwMGw1Ny42IDQzLjJjNCAzIDYuNCA3LjggNi40IDEyLjh2MjQgMThjMCA3LjgtNi4zIDE0LTE0IDE0Yy0xLjMgMC0yLjYtLjItMy45LS41TDI1NiA0ODAgMTQ1LjkgNTExLjVjLTEuMyAuNC0yLjYgLjUtMy45IC41Yy03LjggMC0xNC02LjMtMTQtMTRWNDU2YzAtNSAyLjQtOS44IDYuNC0xMi44TDE5MiA0MDBsMC03MC45LTE3MS42IDQ5QzEwLjIgMzgxLjEgMCAzNzMuNCAwIDM2Mi44VjI5Ny4zYzAtNS43IDMuMS0xMSA4LjEtMTMuOUwxOTIgMTc4LjNWOTMuN3pNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC42IDMyMGg3My44YzM0LjIgMCA5My43LTI4IDkzLjctNjRjMC0zNS01OS41LTY0LTkzLjctNjRsLTExNi42IDBMMjk3LjIgMTYuMUMyOTEuNSA2LjIgMjgwLjkgMCAyNjkuNCAwSDIxMy4yYy0xMC42IDAtMTguMyAxMC4yLTE1LjQgMjAuNGw0MC4zIDE0MC45TDM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDQwLjYgMzIwem0tNzguMSA2MS42TDQxLjUgMTI4LjdDMzYgMTMwLjYgMzIgMTM1LjkgMzIgMTQyYzAgMS4zIC4yIDIuNiAuNSAzLjlMNjQgMjU2IDMyLjUgMzY2LjFjLS40IDEuMy0uNSAyLjYtLjUgMy45YzAgNy44IDYuMyAxNCAxNCAxNEg4OGM1IDAgOS44LTIuNCAxMi44LTYuNEwxNDQgMzIwSDI0Ni45bC00OSAxNzEuNmMtMi45IDEwLjIgNC44IDIwLjQgMTUuNCAyMC40bDU2LjIgMGMxMS41IDAgMjIuMS02LjIgMjcuOC0xNi4xbDY1LjMtMTE0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDkzLjdDMTkyIDU5LjUgMjIxIDAgMjU2IDBjMzYgMCA2NCA1OS41IDY0IDkzLjdsMCA2Ni4zTDQ5Ny44IDI3OC41YzguOSA1LjkgMTQuMiAxNS45IDE0LjIgMjYuNnY1Ni43YzAgMTAuOS0xMC43IDE4LjYtMjEuMSAxNS4yTDMyMCAzMjB2ODBsNTcuNiA0My4yYzQgMyA2LjQgNy44IDYuNCAxMi44djQyYzAgNy44LTYuMyAxNC0xNCAxNGMtMS4zIDAtMi42LS4yLTMuOS0uNUwyNTYgNDgwIDE0NS45IDUxMS41Yy0xLjMgLjQtMi42IC41LTMuOSAuNWMtNy44IDAtMTQtNi4zLTE0LTE0VjQ1NmMwLTUgMi40LTkuOCA2LjQtMTIuOEwxOTIgNDAwVjMyMEwyMS4xIDM3N0MxMC43IDM4MC40IDAgMzcyLjcgMCAzNjEuOFYzMDUuMWMwLTEwLjcgNS4zLTIwLjcgMTQuMi0yNi42TDE5MiAxNjBWOTMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgyLjMgMTkyYzM0LjIgMCA5My43IDI5IDkzLjcgNjRjMCAzNi01OS41IDY0LTkzLjcgNjRsLTExNi42IDBMMjY1LjIgNDk1LjljLTUuNyAxMC0xNi4zIDE2LjEtMjcuOCAxNi4xbC01Ni4yIDBjLTEwLjYgMC0xOC4zLTEwLjItMTUuNC0yMC40bDQ5LTE3MS42TDExMiAzMjAgNjguOCAzNzcuNmMtMyA0LTcuOCA2LjQtMTIuOCA2LjRsLTQyIDBjLTcuOCAwLTE0LTYuMy0xNC0xNGMwLTEuMyAuMi0yLjYgLjUtMy45TDMyIDI1NiAuNSAxNDUuOWMtLjQtMS4zLS41LTIuNi0uNS0zLjljMC03LjggNi4zLTE0IDE0LTE0bDQyIDBjNSAwIDkuOCAyLjQgMTIuOCA2LjRMMTEyIDE5MmwxMDIuOSAwLTQ5LTE3MS42QzE2Mi45IDEwLjIgMTcwLjYgMCAxODEuMiAwbDU2LjIgMGMxMS41IDAgMjIuMSA2LjIgMjcuOCAxNi4xTDM2NS43IDE5MmwxMTYuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFudFdpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDEyMGMwLTMwLjkgMjUuMS01NiA1Ni01NnM1NiAyNS4xIDU2IDU2djEzYy0yOS4zIDEwLTQ4IDM0LjUtNDggNzAuMWMwIDI3LjkgMjUuMyA3NC44IDY2IDExMS42YzMuOCAzLjUgOC45IDUuMyAxNCA1LjNzMTAuMi0xLjggMTQtNS4zYzQwLjctMzYuOCA2Ni04My43IDY2LTExMS42YzAtMzUuNi0xOC43LTYwLjItNDgtNzAuMVYxMjBDNDY0IDUzLjcgNDEwLjMgMCAzNDQgMFMyMjQgNTMuNyAyMjQgMTIwdjIxLjhDMjA3LjMgMTMzIDE4OC4yIDEyOCAxNjggMTI4Yy02Ni4zIDAtMTIwIDUzLjctMTIwIDEyMHYxM2MtMjkuMyAxMC00OCAzNC41LTQ4IDcwLjFDMCAzNTkgMjUuMyA0MDUuOSA2NiA0NDIuN2MzLjggMy41IDguOSA1LjMgMTQgNS4zczEwLjItMS44IDE0LTUuM2M0MC43LTM2LjggNjYtODMuNyA2Ni0xMTEuNmMwLTM1LjYtMTguNy02MC4yLTQ4LTcwLjFWMjQ4YzAtMzAuOSAyNS4xLTU2IDU2LTU2czU2IDI1LjEgNTYgNTZ2MzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjgwIDI0OCAxMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYXRlV2hlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDMyYzQ0LjIgMCA4MCAzNS44IDgwIDgwdjE2YzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODBWNDhjMC04LjggNy4yLTE2IDE2LTE2ek01NiA2NGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNMjQgMTM2SDEzNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptOCA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTI3MiA0OGMwLTguOCA3LjItMTYgMTYtMTZjNDQuMiAwIDgwIDM1LjggODAgODB2MTZjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MFY0OHpNNDAwIDMyYzQ0LjIgMCA4MCAzNS44IDgwIDgwdjE2YzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODBWNDhjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNjB2MTZjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNTZjMC00NC4yIDM1LjgtODAgODAtODBjOC44IDAgMTYgNy4yIDE2IDE2ek0zNTIgMTc2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI1NmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTk2IDE2djE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZWMjU2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzguOCAwIDE2IDcuMiAxNiAxNnpNMy41IDM0Ny42QzEuNiAzMzIuOSAxMyAzMjAgMjcuOCAzMjBINDg0LjJjMTQuOCAwIDI2LjIgMTIuOSAyNC40IDI3LjZDNTAyLjMgMzk3LjggNDY0LjIgNDM3IDQxNiA0NDZ2MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi0yYy00OC4yLTktODYuMy00OC4yLTkyLjUtOTguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MyAzOWMtMTQuOC05LjEtMzMuNC05LjQtNDguNS0uOVMwIDYyLjYgMCA4MFY0MzJjMCAxNy40IDkuNCAzMy40IDI0LjUgNDEuOXMzMy43IDguMSA0OC41LS45TDM2MSAyOTdjMTQuMy04LjcgMjMtMjQuMiAyMy00MXMtOC43LTMyLjItMjMtNDFMNzMgMzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWdDaXJjbGVCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMydjMyYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxMi44YzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNDcuOS0yMjVjNC4zIDMuNyA1LjQgOS45IDIuNiAxNC45TDQ1Mi40IDM1Nkg0ODhjNS4yIDAgOS44IDMuMyAxMS40IDguMnMtLjEgMTAuMy00LjIgMTMuNGwtOTYgNzJjLTQuNSAzLjQtMTAuOCAzLjItMTUuMS0uNnMtNS40LTkuOS0yLjYtMTQuOUw0MTEuNiAzODBIMzc2Yy01LjIgMC05LjgtMy4zLTExLjQtOC4ycy4xLTEwLjMgNC4yLTEzLjRsOTYtNzJjNC41LTMuNCAxMC44LTMuMiAxNS4xIC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVnQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6TTU3NiAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQxNiAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWdDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzc4LjMgMCA2NCAxNC4zIDY0IDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnYzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MTIuOGMxMi4zLTIuNSAyNC4xLTYuNCAzNS4xLTExLjVjLTIuMS0xMC44LTMuMS0yMS45LTMuMS0zMy4zYzAtODAuMyA1My44LTE0OCAxMjcuMy0xNjkuMmMuNS0yLjIgLjctNC41IC43LTYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1Z0NpcmNsZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMydjMyYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxMi44YzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek01NzYgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS02NCAwYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZINDk2YzguOCAwIDE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1Z0NpcmNsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6TTQzMiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0xNi0yMDh2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINDQ4djQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjM4NEgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNDhWMzA0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWdDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzc4LjMgMCA2NCAxNC4zIDY0IDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnYzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MTIuOGMxMi4zLTIuNSAyNC4xLTYuNCAzNS4xLTExLjVjLTIuMS0xMC44LTMuMS0yMS45LTMuMS0zMy4zYzAtODAuMyA1My44LTE0OCAxMjcuMy0xNjkuMmMuNS0yLjIgLjctNC41IC43LTYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNDU0LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQzMiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQwOS40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDMyIDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhDMjk3IDM5OCAzNTIgMzMzLjQgMzUyIDI1NlYyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdXNNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTQ0SDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE2MFYzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMDhIMzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIyNFYzMnpNMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgODBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjI0SDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE5MlY0MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhINDAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI1NlY4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9kY2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTkuNCAzNzJjNDguNS0zMS4zIDgwLjYtODUuOSA4MC42LTE0OGMwLTk3LjItNzguOC0xNzYtMTc2LTE3NlM0OCAxMjYuOCA0OCAyMjRjMCA2Mi4xIDMyLjEgMTE2LjYgODAuNiAxNDhjMS4yIDE3LjMgNCAzOCA3LjIgNTcuMWwuMiAxQzU2IDM5NS44IDAgMzE2LjUgMCAyMjRDMCAxMDAuMyAxMDAuMyAwIDIyNCAwUzQ0OCAxMDAuMyA0NDggMjI0YzAgOTIuNS01NiAxNzEuOS0xMzYgMjA2LjFsLjItMS4xYzMuMS0xOS4yIDYtMzkuOCA3LjItNTd6bS0yLjMtMzguMWMtMS42LTUuNy0zLjktMTEuMS03LTE2LjJjLTUuOC05LjctMTMuNS0xNy0yMS45LTIyLjRjMTkuNS0xNy42IDMxLjgtNDMgMzEuOC03MS4zYzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMjguMyAxMi4zIDUzLjggMzEuOCA3MS4zYy04LjQgNS40LTE2LjEgMTIuNy0yMS45IDIyLjRjLTMuMSA1LjEtNS40IDEwLjUtNyAxNi4yQzk5LjggMzA3LjUgODAgMjY4IDgwIDIyNGMwLTc5LjUgNjQuNS0xNDQgMTQ0LTE0NHMxNDQgNjQuNSAxNDQgMTQ0YzAgNDQtMTkuOCA4My41LTUwLjkgMTA5Ljl6TTIyNCAzMTJjMzIuOSAwIDY0IDguNiA2NCA0My44YzAgMzMtMTIuOSAxMDQuMS0yMC42IDEzMi45Yy01LjEgMTktMjQuNSAyMy40LTQzLjQgMjMuNHMtMzguMi00LjQtNDMuNC0yMy40Yy03LjgtMjguNS0yMC42LTk5LjctMjAuNi0xMzIuOGMwLTM1LjEgMzEuMS00My44IDY0LTQzLjh6bTAtMTQ0YTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb29TdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzYuOSAuMmMtNS41LS43LTExIDEuNC0xNC41IDUuN3MtNC42IDEwLjEtMi44IDE1LjNjMi44IDguMiA0LjMgMTYuOSA0LjMgMjYuMWMwIDIxLjctOC41IDM3LjItMjEuOSA0Ny42Yy0xMy44IDEwLjgtMzQgMTctNTcuOCAxN0gxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0YzAgMTIuMiAzLjQgMjMuNSA5LjMgMzMuMkMzMS43IDIxNi4yIDAgMjUyLjQgMCAyOTZjMCA0MC45IDI4IDc1LjQgNjUuOCA4NS4yYy01LjMtMTguNSAxLTM4LjUgMTYuMi01MC43bDE2MC0xMjhjMTcuNi0xNC4xIDQyLjYtMTQgNjAuMiAuMnMyMi44IDM4LjYgMTIuOCA1OC44TDI4NS43IDMyMEgzMDRjMjAuNCAwIDM4LjUgMTIuOSA0NS4zIDMyLjFjMy43IDEwLjYgMy41IDIxLjggMCAzMS45SDM2MGM0OC42IDAgODgtMzkuNCA4OC04OGMwLTQzLjYtMzEuNy03OS44LTczLjMtODYuOGM1LjktOS43IDkuMy0yMS4xIDkuMy0zMy4yYzAtMzUuMy0yOC43LTY0LTY0LTY0aC0xLjRjLjktNS40IDEuNC0xMC45IDEuNC0xNi42YzAtNDguNy0zNi4xLTg4LjktODMuMS05NS4yem00NS4xIDIyNy40Yy01LjgtNC43LTE0LjItNC43LTIwLjEtLjFsLTE2MCAxMjhjLTUuMyA0LjItNy40IDExLjQtNS4xIDE3LjhzOC4zIDEwLjcgMTUuMSAxMC43aDcwLjFMMTI5LjcgNDg4LjhjLTMuNCA2LjctMS42IDE0LjkgNC4zIDE5LjZzMTQuMiA0LjcgMjAuMSAuMWwxNjAtMTI4YzUuMy00LjIgNy40LTExLjQgNS4xLTE3LjhzLTguMy0xMC43LTE1LjEtMTAuN0gyMzMuOWw1Mi40LTEwNC44YzMuNC02LjcgMS42LTE0LjktNC4zLTE5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjguOSAuOWMtNS41LS43LTExIDEuNC0xNC41IDUuN3MtNC42IDEwLjEtMi44IDE1LjRjMi44IDguMiA0LjMgMTYuOSA0LjMgMjYuMWMwIDQ0LjEtMzUuNyA3OS45LTc5LjggODBIMTYwYy0zNS4zIDAtNjQgMjguNy02NCA2NGMwIDE5LjEgOC40IDM2LjMgMjEuNyA0OEgxMDRjLTM5LjggMC03MiAzMi4yLTcyIDcyYzAgMjMuMiAxMSA0My44IDI4IDU3Yy0zNC4xIDUuNy02MCAzNS4zLTYwIDcxYzAgMzkuOCAzMi4yIDcyIDcyIDcySDQ0MGMzOS44IDAgNzItMzIuMiA3Mi03MmMwLTM1LjctMjUuOS02NS4zLTYwLTcxYzE3LTEzLjIgMjgtMzMuOCAyOC01N2MwLTM5LjgtMzIuMi03Mi03Mi03MkgzOTQuM2MxMy4zLTExLjcgMjEuNy0yOC45IDIxLjctNDhjMC0zNS4zLTI4LjctNjQtNjQtNjRoLTUuNWMzLjUtMTAgNS41LTIwLjggNS41LTMyYzAtNDguNi0zNi4yLTg4LjgtODMuMS05NS4xek0xOTIgMjU2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptNjQgMTA4LjNjMCAyLjQtLjcgNC44LTIuMiA2LjdjLTguMiAxMC41LTM5LjUgNDUtOTMuOCA0NXMtODUuNi0zNC42LTkzLjgtNDVjLTEuNS0xLjktMi4yLTQuMy0yLjItNi43YzAtNi44IDUuNS0xMi4zIDEyLjMtMTIuM0gzMzkuN2M2LjggMCAxMi4zIDUuNSAxMi4zIDEyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU0LjQgNi42YzMuNS00LjMgOS02LjUgMTQuNS01LjdDMzE1LjggNy4yIDM1MiA0Ny40IDM1MiA5NmMwIDExLjItMS45IDIyLTUuNSAzMkgzNTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAxOS4xLTguNCAzNi4zLTIxLjcgNDhINDA4YzM5LjggMCA3MiAzMi4yIDcyIDcyYzAgMjMuMi0xMSA0My44LTI4IDU3YzM0LjEgNS43IDYwIDM1LjMgNjAgNzFjMCAzOS44LTMyLjIgNzItNzIgNzJINzJjLTM5LjggMC03Mi0zMi4yLTcyLTcyYzAtMzUuNyAyNS45LTY1LjMgNjAtNzFjLTE3LTEzLjItMjgtMzMuOC0yOC01N2MwLTM5LjggMzIuMi03MiA3Mi03MmgxMy43QzEwNC40IDIyOC4zIDk2IDIxMS4xIDk2IDE5MmMwLTM1LjMgMjguNy02NCA2NC02NGgxNi4yYzQ0LjEtLjEgNzkuOC0zNS45IDc5LjgtODBjMC05LjItMS41LTE3LjktNC4zLTI2LjFjLTEuOC01LjItLjgtMTEuMSAyLjgtMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG93ZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyek0xNDMuNSAxMjAuNmMxMy42LTExLjMgMTUuNC0zMS41IDQuMS00NS4xcy0zMS41LTE1LjQtNDUuMS00LjFDNDkuNyAxMTUuNCAxNiAxODEuOCAxNiAyNTZjMCAxMzIuNSAxMDcuNSAyNDAgMjQwIDI0MHMyNDAtMTA3LjUgMjQwLTI0MGMwLTc0LjItMzMuOC0xNDAuNi04Ni42LTE4NC42Yy0xMy42LTExLjMtMzMuOC05LjQtNDUuMSA0LjFzLTkuNCAzMy44IDQuMSA0NS4xYzM4LjkgMzIuMyA2My41IDgxIDYzLjUgMTM1LjRjMCA5Ny4yLTc4LjggMTc2LTE3NiAxNzZzLTE3Ni03OC44LTE3Ni0xNzZjMC01NC40IDI0LjctMTAzLjEgNjMuNS0xMzUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uQm90dGxlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NFYzMnptMzIgOTZIMzUyVjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4ek0xNjAgMjQwdjQ4SDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjM1Mmg0OGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNkgyMjRWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uQm90dGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0VjMyem0zMiA5NkgzNTJWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFY0MTZIMTQ0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMyVjMyMEgxNDRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzJWMjI0SDE0NGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMlYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByZXNjcmlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlYxOTJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRoNTAuN2wxMjggMTI4TDEzNy40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDI4OCAzOTcuMyAzOTMuNCA1MDIuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDMzMy4zIDM1MiA0MzguNiAyNDYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyODggMzA2LjdsLTg1LjgtODUuOEMyNTEuNCAyMDkuMSAyODggMTY0LjggMjg4IDExMkMyODggNTAuMSAyMzcuOSAwIDE3NiAwSDMyek0xNzYgMTYwSDY0VjY0SDE3NmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBDOTIuNyAwIDY0IDI4LjcgNjQgNjR2OTZoNjRWNjRIMzU0LjdMMzg0IDkzLjNWMTYwaDY0VjkzLjNjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNDAwIDE4LjdDMzg4IDYuNyAzNzEuNyAwIDM1NC43IDBIMTI4ek0zODQgMzUydjMyIDY0SDEyOFYzODQgMzY4IDM1MkgzODR6bTY0IDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTM1LjMtMjguNy02NC02NC02NEg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJINjR2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjM4NHpNNDMyIDI0OGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1bXBNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAzMnY5NkgyNTZWOTZoNjAuMWM0LjIgMCA4LjMgMS43IDExLjMgNC43bDMzLjkgMzMuOWMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDM3Mi43IDU1LjRjLTE1LTE1LTM1LjQtMjMuNC01Ni42LTIzLjRIMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTExNy40IDE2MGMtMzMuMyAwLTYxIDI1LjUtNjMuOCA1OC43TDM1IDQ0Mi43QzMxLjkgNDgwIDYxLjMgNTEyIDk4LjggNTEySDI4NS4yYzM3LjQgMCA2Ni45LTMyIDYzLjgtNjkuM2wtMTguNy0yMjRjLTIuOC0zMy4yLTMwLjUtNTguNy02My44LTU4LjdIMTE3LjR6TTIxNiAyODB2MzJoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjE2djMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM2MEgxMzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMzJWMjgwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1bXBTb2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAzMnY5NkgyNTZWOTZoNjAuMWM0LjIgMCA4LjMgMS43IDExLjMgNC43bDMzLjkgMzMuOWMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDM3Mi43IDU1LjRjLTE1LTE1LTM1LjQtMjMuNC01Ni42LTIzLjRIMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTExNy40IDE2MGMtMzMuMyAwLTYxIDI1LjUtNjMuOCA1OC43TDM1IDQ0Mi43QzMxLjkgNDgwIDYxLjMgNTEyIDk4LjggNTEySDI4NS4yYzM3LjQgMCA2Ni45LTMyIDYzLjgtNjkuM2wtMTguNy0yMjRjLTIuOC0zMy4yLTMwLjUtNTguNy02My44LTU4LjdIMTE3LjR6TTI1NiAzNjBjMCAzNS4zLTI4LjcgNTYtNjQgNTZzLTY0LTIwLjctNjQtNTZjMC0zMi41IDM3LTgwLjkgNTAuOS05Ny45YzMuMi0zLjkgOC4xLTYuMSAxMy4xLTYuMXM5LjkgMi4yIDEzLjEgNi4xQzIxOSAyNzkuMSAyNTYgMzI3LjUgMjU2IDM2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHV6emxlUGllY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDEwNC44YzAtOS4yLTUuOC0xNy4zLTEzLjItMjIuOEMxNjcuMiA3My4zIDE2MCA2MS4zIDE2MCA0OGMwLTI2LjUgMjguNy00OCA2NC00OHM2NCAyMS41IDY0IDQ4YzAgMTMuMy03LjIgMjUuMy0xOC44IDM0Yy03LjQgNS41LTEzLjIgMTMuNi0xMy4yIDIyLjhjMCAxMi44IDEwLjQgMjMuMiAyMy4yIDIzLjJIMzM2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djU2LjhjMCAxMi44IDEwLjQgMjMuMiAyMy4yIDIzLjJjOS4yIDAgMTcuMy01LjggMjIuOC0xMy4yYzguNy0xMS42IDIwLjctMTguOCAzNC0xOC44YzI2LjUgMCA0OCAyOC43IDQ4IDY0cy0yMS41IDY0LTQ4IDY0Yy0xMy4zIDAtMjUuMy03LjItMzQtMTguOGMtNS41LTcuNC0xMy42LTEzLjItMjIuOC0xMy4yYy0xMi44IDAtMjMuMiAxMC40LTIzLjIgMjMuMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjc5LjJjLTEyLjggMC0yMy4yLTEwLjQtMjMuMi0yMy4yYzAtOS4yIDUuOC0xNy4zIDEzLjItMjIuOGMxMS42LTguNyAxOC44LTIwLjcgMTguOC0zNGMwLTI2LjUtMjguNy00OC02NC00OHMtNjQgMjEuNS02NCA0OGMwIDEzLjMgNy4yIDI1LjMgMTguOCAzNGM3LjQgNS41IDEzLjIgMTMuNiAxMy4yIDIyLjhjMCAxMi44LTEwLjQgMjMuMi0yMy4yIDIzLjJINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM0My4yQzAgMzMwLjQgMTAuNCAzMjAgMjMuMiAzMjBjOS4yIDAgMTcuMyA1LjggMjIuOCAxMy4yQzU0LjcgMzQ0LjggNjYuNyAzNTIgODAgMzUyYzI2LjUgMCA0OC0yOC43IDQ4LTY0cy0yMS41LTY0LTQ4LTY0Yy0xMy4zIDAtMjUuMyA3LjItMzQgMTguOEM0MC41IDI1MC4yIDMyLjQgMjU2IDIzLjIgMjU2QzEwLjQgMjU2IDAgMjQ1LjYgMCAyMzIuOFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDhIMTY4LjhjMTIuOCAwIDIzLjItMTAuNCAyMy4yLTIzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjU2YzAgODguNCA3MS42IDE2MCAxNjAgMTYwYzI4LjkgMCA1Ni03LjcgNzkuNC0yMS4xbC03Mi04Ni40Yy0xMS4zLTEzLjYtOS41LTMzLjggNC4xLTQ1LjFzMzMuOC05LjUgNDUuMSA0LjFsNzAuOSA4NS4xQzM3MS45IDMyNS44IDM4NCAyOTIuMyAzODQgMjU2YzAtODguNC03MS42LTE2MC0xNjAtMTYwUzY0IDE2Ny42IDY0IDI1NnpNMzQ0LjkgNDQ0LjZDMzEwIDQ2NyAyNjguNSA0ODAgMjI0IDQ4MEMxMDAuMyA0ODAgMCAzNzkuNyAwIDI1NlMxMDAuMyAzMiAyMjQgMzJzMjI0IDEwMC4zIDIyNCAyMjRjMCA1Ni4xLTIwLjYgMTA3LjQtNTQuNyAxNDYuN2w0Ny4zIDU2LjhjMTEuMyAxMy42IDkuNSAzMy44LTQuMSA0NS4xcy0zMy44IDkuNS00NS4xLTQuMWwtNDYuNi01NS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODB6TTY0IDk2djY0aDY0Vjk2SDY0ek0wIDMzNmMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzM2em02NCAxNnY2NGg2NFYzNTJINjR6TTMwNCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEgzMDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em04MCA2NEgzMjB2NjRoNjRWOTZ6TTI1NiAzMDRjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNnM3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2czcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2cy03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMzA0ek0zNjggNDgwYTE2IDE2IDAgMSAxIDAtMzIgMTYgMTYgMCAxIDEgMCAzMnptNjQgMGExNiAxNiAwIDEgMSAwLTMyIDE2IDE2IDAgMSAxIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1ZXN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDE2MGMwLTM1LjMgMjguNy02NCA2NC02NGgzMmMzNS4zIDAgNjQgMjguNyA2NCA2NHYzLjZjMCAyMS44LTExLjEgNDIuMS0yOS40IDUzLjhsLTQyLjIgMjcuMWMtMjUuMiAxNi4yLTQwLjQgNDQuMS00MC40IDc0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMydi0xLjRjMC04LjIgNC4yLTE1LjggMTEtMjAuMmw0Mi4yLTI3LjFjMzYuNi0yMy42IDU4LjgtNjQuMSA1OC44LTEwNy43VjE2MGMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEgxNDRDNzMuMyAzMiAxNiA4OS4zIDE2IDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyem04MCAzMjBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdW90ZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMTZDMCAxNDkuNyA1My43IDk2IDEyMCA5Nmg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyaC04Yy0zMC45IDAtNTYgMjUuMS01NiA1NnY4aDY0YzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzMjAgMjg4IDIxNnptMjU2IDBjMC02Ni4zIDUzLjctMTIwIDEyMC0xMjBoOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmgtOGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZ2OGg2NGMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMjBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjMyMCAyODggMjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdW90ZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAyOTZjMCA2Ni4zLTUzLjcgMTIwLTEyMCAxMjBoLThjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOGMzMC45IDAgNTYtMjUuMSA1Ni01NnYtOEgzMjBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MGMwLTM1LjMgMjguNy02NCA2NC02NGg2NGMzNS4zIDAgNjQgMjguNyA2NCA2NHYzMiAzMiA3MnptLTI1NiAwYzAgNjYuMy01My43IDEyMC0xMjAgMTIwSDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDhjMzAuOSAwIDU2LTI1LjEgNTYtNTZ2LThINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MGMwLTM1LjMgMjguNy02NCA2NC02NGg2NGMzNS4zIDAgNjQgMjguNyA2NCA2NHYzMiAzMiA3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjI4OCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjBoOTUuM0wyNjEuOCA0NjYuNGMxMC4xIDE0LjUgMzAuMSAxOCA0NC42IDcuOXMxOC0zMC4xIDcuOS00NC42TDIzMC4xIDMwOS41QzI4Mi44IDI4OC4xIDMyMCAyMzYuNCAzMjAgMTc2YzAtNzkuNS02NC41LTE0NC0xNDQtMTQ0SDY0ek0xNzYgMjU2SDY0Vjk2SDE3NmM0NC4yIDAgODAgMzUuOCA4MCA4MHMtMzUuOCA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFkaWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNiAxODYuN2MtMjMuOSAxMy44LTQwIDM5LjctNDAgNjkuM0wzMiAyNTZDMTQuMyAyNTYtLjIgMjQxLjYgMiAyMjQuMUMxMC43IDE1NCA0Ny44IDkyLjcgMTAxLjMgNTJjMTQuMS0xMC43IDMzLjgtNS4zIDQyLjcgMTBsNzIgMTI0Ljd6TTI1NiAzMzZjMTQuNiAwIDI4LjItMy45IDQwLTEwLjdsNzIgMTI0LjhjOC44IDE1LjMgMy43IDM1LjEtMTIuNiA0MS45Yy0zMC42IDEyLjktNjQuMiAyMC05OS40IDIwcy02OC45LTcuMS05OS40LTIwYy0xNi4zLTYuOS0yMS40LTI2LjYtMTIuNi00MS45bDcyLTEyNC44YzExLjggNi44IDI1LjQgMTAuNyA0MCAxMC43em0yMjQtODBsLTE0NCAwYzAtMjkuNi0xNi4xLTU1LjUtNDAtNjkuM0wzNjggNjJjOC44LTE1LjMgMjguNi0yMC43IDQyLjctMTBjNTMuNiA0MC43IDkwLjYgMTAyIDk5LjQgMTcyLjFjMi4yIDE3LjUtMTIuNCAzMS45LTMwIDMxLjl6TTI1NiAyMDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTQuOCA0N2MxMi43LTMuNyAyMC0xNy4xIDE2LjMtMjkuOFM0OTQtMi44IDQ4MS4yIDFMNTEuNyAxMjYuOWMtOS40IDIuNy0xNy45IDcuMy0yNS4xIDEzLjJDMTAuNSAxNTEuNyAwIDE3MC42IDAgMTkydjRWMzA0IDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDIxOC41TDQ5NC44IDQ3ek0zNjggMjQwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwek04MCAyNTZjMC04LjggNy4yLTE2IDE2LTE2aDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZ6TTY0IDMyMGMwLTguOCA3LjItMTYgMTYtMTZIMjA4YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZ6bTE2IDY0YzAtOC44IDcuMi0xNiAxNi0xNmg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYWluYm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NkMxNzguNiA5NiA2NCAyMTAuNiA2NCAzNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyQzAgMTc1LjMgMTQzLjMgMzIgMzIwIDMyczMyMCAxNDMuMyAzMjAgMzIwdjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkM1NzYgMjEwLjYgNDYxLjQgOTYgMzIwIDk2em0wIDE5MmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyYzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4czEyOCA1Ny4zIDEyOCAxMjh2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyYzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xNjAgMzUydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MmMwLTEyMy43IDEwMC4zLTIyNCAyMjQtMjI0czIyNCAxMDAuMyAyMjQgMjI0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MmMwLTg4LjQtNzEuNi0xNjAtMTYwLTE2MHMtMTYwIDcxLjYtMTYwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFua2luZ1N0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUzLjggNTQuMUwzMzAuMiA2LjNjLTMuOS04LjMtMTYuMS04LjYtMjAuNCAwTDI4Ni4yIDU0LjFsLTUyLjMgNy41Yy05LjMgMS40LTEzLjMgMTIuOS02LjQgMTkuOGwzOCAzNy05IDUyLjFjLTEuNCA5LjMgOC4yIDE2LjUgMTYuOCAxMi4ybDQ2LjktMjQuOCA0Ni42IDI0LjRjOC42IDQuMyAxOC4zLTIuOSAxNi44LTEyLjJsLTktNTIuMSAzOC0zNi42YzYuOC02LjggMi45LTE4LjMtNi40LTE5LjhsLTUyLjMtNy41ek0yNTYgMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI4OGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZ6TTMyIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDE2MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6bTQxNiA5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDE2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY2VpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMi4yQzIyLjUtMS43IDMyLjUtLjMgMzkuNiA1LjhMODAgNDAuNCAxMjAuNCA1LjhjOS03LjcgMjIuMy03LjcgMzEuMiAwTDE5MiA0MC40IDIzMi40IDUuOGM5LTcuNyAyMi4zLTcuNyAzMS4yIDBMMzA0IDQwLjQgMzQ0LjQgNS44YzcuMS02LjEgMTcuMS03LjUgMjUuNi0zLjZzMTQgMTIuNCAxNCAyMS44VjQ4OGMwIDkuNC01LjUgMTcuOS0xNCAyMS44cy0xOC41IDIuNS0yNS42LTMuNkwzMDQgNDcxLjZsLTQwLjQgMzQuNmMtOSA3LjctMjIuMyA3LjctMzEuMiAwTDE5MiA0NzEuNmwtNDAuNCAzNC42Yy05IDcuNy0yMi4zIDcuNy0zMS4yIDBMODAgNDcxLjYgMzkuNiA1MDYuMmMtNy4xIDYuMS0xNy4xIDcuNS0yNS42IDMuNlMwIDQ5Ny40IDAgNDg4VjI0QzAgMTQuNiA1LjUgNi4xIDE0IDIuMnpNOTYgMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDI4OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg5NnpNODAgMzUyYzAgOC44IDcuMiAxNiAxNiAxNkgyODhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIOTZjLTguOCAwLTE2IDcuMi0xNiAxNnpNOTYgMjQwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDI4OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjb3JkVmlueWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYtOTZhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6bTAgMjI0YTEyOCAxMjggMCAxIDAgMC0yNTYgMTI4IDEyOCAwIDEgMCAwIDI1NnptMC05NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY3RhbmdsZUFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjI5LjUgMTczLjNsNzIgMTQ0YzUuOSAxMS45IDEuMSAyNi4zLTEwLjcgMzIuMnMtMjYuMyAxLjEtMzIuMi0xMC43TDI1My4yIDMyOEgxNjIuOGwtNS40IDEwLjdjLTUuOSAxMS45LTIwLjMgMTYuNy0zMi4yIDEwLjdzLTE2LjctMjAuMy0xMC43LTMyLjJsNzItMTQ0YzQuMS04LjEgMTIuNC0xMy4zIDIxLjUtMTMuM3MxNy40IDUuMSAyMS41IDEzLjN6TTIwOCAyMzcuN0wxODYuOCAyODBoNDIuM0wyMDggMjM3Ljd6TTM5MiAyNTZhMjQgMjQgMCAxIDAgMCA0OCAyNCAyNCAwIDEgMCAwLTQ4em0yNC00My45VjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djk2IDQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0Yy02LjYgMC0xMi42LTIuNy0xNy03Yy05LjQgNC41LTE5LjkgNy0zMSA3Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcyYzguNCAwIDE2LjUgMS40IDI0IDQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjdGFuZ2xlTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek0xMjggMjg4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMzItMTI4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTEyOCAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em05Ni0yNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIyNHptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg0NDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjI0em0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDQ0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY3RhbmdsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMTc1IDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3IDQ3IDQ3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ3LTQ3LTQ3IDQ3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ3LTQ3LTQ3LTQ3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjeWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzQuNyA0NS4xQzE5Mi4yIDE3IDIyMyAwIDI1NiAwczYzLjggMTcgODEuMyA0NS4xbDM4LjYgNjEuNyAyNy0xNS42YzguNC00LjkgMTguOS00LjIgMjYuNiAxLjdzMTEuMSAxNS45IDguNiAyNS4zbC0yMy40IDg3LjRjLTMuNCAxMi44LTE2LjYgMjAuNC0yOS40IDE3bC04Ny40LTIzLjRjLTkuNC0yLjUtMTYuMy0xMC40LTE3LjYtMjBzMy40LTE5LjEgMTEuOC0yMy45bDI4LjQtMTYuNEwyODMgNzljLTUuOC05LjMtMTYtMTUtMjctMTVzLTIxLjIgNS43LTI3IDE1bC0xNy41IDI4Yy05LjIgMTQuOC0yOC42IDE5LjUtNDMuNiAxMC41Yy0xNS4zLTkuMi0yMC4yLTI5LjItMTAuNy00NC40bDE3LjUtMjh6TTQyOS41IDI1MS45YzE1LTkgMzQuNC00LjMgNDMuNiAxMC41bDI0LjQgMzkuMWM5LjQgMTUuMSAxNC40IDMyLjQgMTQuNiA1MC4yYy4zIDUzLjEtNDIuNyA5Ni40LTk1LjggOTYuNEwzMjAgNDQ4djMyYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw2NC02NGM2LjktNi45IDE3LjItOC45IDI2LjItNS4yczE0LjggMTIuNSAxNC44IDIyLjJ2MzJsOTYuMiAwYzE3LjYgMCAzMS45LTE0LjQgMzEuOC0zMmMwLTUuOS0xLjctMTEuNy00LjgtMTYuN2wtMjQuNC0zOS4xYy05LjUtMTUuMi00LjctMzUuMiAxMC43LTQ0LjR6bS0zNjQuNi0zMUwzNiAyMDQuMmMtOC40LTQuOS0xMy4xLTE0LjMtMTEuOC0yMy45czguMi0xNy41IDE3LjYtMjBsODcuNC0yMy40YzEyLjgtMy40IDI2IDQuMiAyOS40IDE3TDE4MiAyNDEuMmMyLjUgOS40LS45IDE5LjMtOC42IDI1LjNzLTE4LjIgNi42LTI2LjYgMS43bC0yNi41LTE1LjNMNjguOCAzMzUuM2MtMy4xIDUtNC44IDEwLjgtNC44IDE2LjdjLS4xIDE3LjYgMTQuMiAzMiAzMS44IDMybDMyLjIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIuMiAwQzQyLjcgNDQ4LS4zIDQwNC44IDAgMzUxLjZjLjEtMTcuOCA1LjEtMzUuMSAxNC42LTUwLjJsNTAuMy04MC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdpc3RlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjAgMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0aDg4YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgMjgtMTQuNCA1Mi43LTM2LjMgNjdsMzQuMSA3NS4xYzUuNSAxMi4xIC4xIDI2LjMtMTEuOSAzMS44cy0yNi4zIC4xLTMxLjgtMTEuOUwyNjguOSAyODhIMjA4djcyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI2NCAxNTJ6bTQ4IDg4aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIwOHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC01MyA0My05NiA5Ni05NkgzMjB2MzJjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTkuMi05LjItMjIuOS0xMS45LTM0LjktNi45UzMyMCAxOS4xIDMyMCAzMlY2NEgxNjBDNzEuNiA2NCAwIDEzNS42IDAgMjI0em01MTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJjMCA1My00MyA5Ni05NiA5NkgxOTJWMzUyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45bC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlY0NDhIMzUyYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseUFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDkuNCAzOS41Yy05LjEtOS42LTI0LjMtMTAtMzMuOS0uOUwzMy44IDE3My4yYy0xOS45IDE4LjktMTkuOSA1MC43IDAgNjkuNkwxNzUuNSAzNzcuNGM5LjYgOS4xIDI0LjggOC43IDMzLjktLjlzOC43LTI0LjgtLjktMzMuOUw2Ni44IDIwOCAyMDguNSA3My40YzkuNi05LjEgMTAtMjQuMyAuOS0zMy45ek0zNTIgNjRjMC0xMi42LTcuNC0yNC4xLTE5LTI5LjJzLTI1LTMtMzQuNCA1LjRsLTE2MCAxNDRjLTYuNyA2LjEtMTAuNiAxNC43LTEwLjYgMjMuOHMzLjkgMTcuNyAxMC42IDIzLjhsMTYwIDE0NGM5LjQgOC41IDIyLjkgMTAuNiAzNC40IDUuNHMxOS0xNi42IDE5LTI5LjJWMjg4aDMyYzUzIDAgOTYgNDMgOTYgOTZjMCAzMC40LTEyLjggNDcuOS0yMi4yIDU2LjdjLTUuNSA1LjEtOS44IDEyLTkuOCAxOS41YzAgMTAuOSA4LjggMTkuNyAxOS43IDE5LjdjMi44IDAgNS42LS42IDguMS0xLjlDNDk0LjUgNDY3LjkgNTc2IDQxNy4zIDU3NiAzMDRjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZIMzUyVjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUgMzQuOGMxMS41IDUuMSAxOSAxNi42IDE5IDI5LjJ2NjRIMzM2Yzk3LjIgMCAxNzYgNzguOCAxNzYgMTc2YzAgMTEzLjMtODEuNSAxNjMuOS0xMDAuMiAxNzQuMWMtMi41IDEuNC01LjMgMS45LTguMSAxLjljLTEwLjkgMC0xOS43LTguOS0xOS43LTE5LjdjMC03LjUgNC4zLTE0LjQgOS44LTE5LjVjOS40LTguOCAyMi4yLTI2LjQgMjIuMi01Ni43YzAtNTMtNDMtOTYtOTYtOTZIMjI0djY0YzAgMTIuNi03LjQgMjQuMS0xOSAyOS4ycy0yNSAzLTM0LjQtNS40bC0xNjAtMTQ0QzMuOSAyMjUuNyAwIDIxNy4xIDAgMjA4czMuOS0xNy43IDEwLjYtMjMuOGwxNjAtMTQ0YzkuNC04LjUgMjIuOS0xMC42IDM0LjQtNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXB1YmxpY2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkyQzAgMTAzLjYgNzEuNiAzMiAxNjAgMzJIMzg0Yzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwdjY0SDBWMTkyem00MTUuOS02NGMtMi40IDAtNC43IDEuMy01LjcgMy40bC0xMi42IDI0LjYtMjguMiA0Yy0yLjQgLjMtNC40IDItNS4yIDQuMnMtLjEgNC43IDEuNiA2LjNsMjAuNCAxOS4yLTQuOCAyNy4xYy0uNCAyLjMgLjYgNC43IDIuNSA2czQuNiAxLjYgNi43IC41bDI1LjItMTIuOCAyNS4yIDEyLjhjMi4yIDEuMSA0LjggLjkgNi43LS41czMtMy43IDIuNS02bC00LjgtMjcuMUw0NjYgMTcwLjVjMS43LTEuNiAyLjQtNC4xIDEuNi02LjNzLTIuOC0zLjktNS4yLTQuMmwtMjguMi00LTEyLjYtMjQuNmMtMS4xLTIuMS0zLjMtMy40LTUuNy0zLjR6bS0xMzguMyAzLjRjLTEuMS0yLjEtMy4zLTMuNC01LjctMy40cy00LjcgMS4zLTUuNyAzLjRsLTEyLjYgMjQuNi0yOC4yIDRjLTIuNCAuMy00LjQgMi01LjIgNC4ycy0uMSA0LjcgMS42IDYuM2wyMC40IDE5LjItNC44IDI3LjFjLS40IDIuMyAuNiA0LjcgMi41IDZzNC42IDEuNiA2LjcgLjVsMjUuMi0xMi44IDI1LjIgMTIuOGMyLjIgMS4xIDQuOCAuOSA2LjctLjVzMy0zLjcgMi41LTZsLTQuOC0yNy4xTDMyMiAxNzAuNWMxLjctMS42IDIuNC00LjEgMS42LTYuM3MtMi44LTMuOS01LjItNC4ybC0yOC4yLTQtMTIuNi0yNC42ek0xMjcuOSAxMjhjLTIuNCAwLTQuNyAxLjMtNS43IDMuNGwtMTIuNiAyNC42LTI4LjIgNGMtMi40IC4zLTQuNCAyLTUuMiA0LjJzLS4xIDQuNyAxLjYgNi4zbDIwLjQgMTkuMi00LjggMjcuMWMtLjQgMi4zIC42IDQuNyAyLjUgNnM0LjYgMS42IDYuNyAuNWwyNS4yLTEyLjggMjUuMiAxMi44YzIuMiAxLjEgNC44IC45IDYuNy0uNXMzLTMuNyAyLjUtNmwtNC44LTI3LjFMMTc4IDE3MC41YzEuNy0xLjYgMi40LTQuMSAxLjYtNi4zcy0yLjgtMy45LTUuMi00LjJsLTI4LjItNC0xMi42LTI0LjZjLTEuMS0yLjEtMy4zLTMuNC01LjctMy40em0uMSAxNjBIMzIwaDk2IDMyIDY0IDMydjMyIDgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzUyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NDhjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBWMzUySDQ0OHYzMiA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NEgxMjh2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NCAyODhIMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXN0cm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA0OGE0OCA0OCAwIDEgMSA5NiAwQTQ4IDQ4IDAgMSAxIDgwIDQ4em00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMyNS4yYy04LjEgOS4yLTIxLjEgMTMuMi0zMy41IDkuNGMtMTYuOS01LjMtMjYuMy0yMy4yLTIxLTQwLjFsMzAuOS05OS4xQzQ0LjkgMTU1LjMgODIgMTI4IDEyNCAxMjhoOGM0MiAwIDc5LjEgMjcuMyA5MS42IDY3LjRsMzAuOSA5OS4xYzUuMyAxNi45LTQuMSAzNC44LTIxIDQwLjFjLTEyLjQgMy45LTI1LjQtLjItMzMuNS05LjRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxMjB6TTMyMCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNDY0IDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTQ0MCA0ODBWMzg0SDQyMi4yYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMWw5LTI2LjljLTMuMiAwLTYuNC0uNS05LjUtMS41Yy0xNi45LTUuMy0yNi4zLTIzLjItMjEtNDAuMWwyOS43LTk1LjJDNDI4LjQgMTU2LjkgNDY3LjYgMTI4IDUxMiAxMjhzODMuNiAyOC45IDk2LjggNzEuMmwyOS43IDk1LjJjNS4zIDE2LjktNC4xIDM0LjgtMjEgNDAuMWMtMy4yIDEtNi40IDEuNS05LjUgMS41bDkgMjYuOWMzLjUgMTAuNC00LjMgMjEuMS0xNS4yIDIxLjFINTg0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NEg1MDR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJldHdlZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE5MmgzMmMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44bDMyIDAgMCAxMjhjMCA1MyA0MyA5NiA5NiA5NkgyNzJ6TTMwNCA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOEg0MTZjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44bC0zMiAwVjE5MmMwLTUzLTQzLTk2LTk2LTk2TDMwNCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmliYm9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMy4yIDMyMi44bDAgMC0xMzMuOS0xNDYgMCAwTDE0NiAxMTguNmM3LjgtNS4xIDM3LTIyLjYgNzgtMjIuNnM3MC4yIDE3LjQgNzggMjIuNkwyNDUuNyAxODBsODUuNiA5My40IDI3LjQtMjkuOGMxNi4zLTE3LjcgMjUuMy00MC45IDI1LjMtNjVWMTQ5LjFjMC0xOS01LjYtMzcuNS0xNi4xLTUzLjNMMzI3LjggMzUuNkMzMTIuOSAxMy40IDI4Ny45IDAgMjYxLjIgMGgtNzZjLTI1LjggMC01MC4xIDEyLjUtNjUuMSAzMy41TDgxLjkgODdDNzAuMyAxMDMuMiA2NCAxMjIuOCA2NCAxNDIuOFYxNjRjMCAyMy4yIDguNCA0NS42IDIzLjYgNjMuMWw1NiA2NC4yIDAgMCA4My4zIDk1LjYgMCAwIDkxLjggMTA1LjNjMTAgMTEuNSAyNi44IDE0LjMgNDAgNi44bDU0LjUtMzEuMWMxNy44LTEwLjIgMjEuNi0zNC4zIDcuNy00OS40bC04Ny43LTk1Ljd6TTIwNS4yIDQxMC42bC04My4zLTk1LjZMMjcuMSA0MTguNWMtMTMuOSAxNS4xLTEwLjEgMzkuMiA3LjcgNDkuNGw1NS4xIDMxLjVjMTMgNy40IDI5LjMgNC45IDM5LjQtNi4xbDc1LjktODIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmlnaHRGcm9tQnJhY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzcuOSAxMDUuOUw1MDAuNyAyMjguN2M3LjIgNy4yIDExLjMgMTcuMSAxMS4zIDI3LjNzLTQuMSAyMC4xLTExLjMgMjcuM0wzNzcuOSA0MDYuMWMtNi40IDYuNC0xNSA5LjktMjQgOS45Yy0xOC43IDAtMzMuOS0xNS4yLTMzLjktMzMuOWwwLTYyLjEtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTI4IDAgMC02Mi4xYzAtMTguNyAxNS4yLTMzLjkgMzMuOS0zMy45YzkgMCAxNy42IDMuNiAyNCA5Ljl6TTE2MCA5Nkw5NiA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMGMtNTMgMC05Ni00My05Ni05NkwwIDEyOEMwIDc1IDQzIDMyIDk2IDMybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpZ2h0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA5NmwzMjAgMFYzMmMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDk2IDk2YzYgNiA5LjQgMTQuMSA5LjQgMjIuNnMtMy40IDE2LjYtOS40IDIyLjZsLTk2IDk2Yy05LjIgOS4yLTIyLjkgMTEuOS0zNC45IDYuOXMtMTkuOC0xNi42LTE5LjgtMjkuNlYxNjBMMzIgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyek00ODAgMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MHY2NGMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtOTYtOTZjLTYtNi05LjQtMTQuMS05LjQtMjIuNnMzLjQtMTYuNiA5LjQtMjIuNmw5Ni05NmM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOXMxOS44IDE2LjYgMTkuOCAyOS42bDAgNjRINDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSaWdodExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM0LjUgNDE0YzguOCAzLjggMTkgMiAyNi00LjZsMTQ0LTEzNmM0LjgtNC41IDcuNS0xMC44IDcuNS0xNy40cy0yLjctMTIuOS03LjUtMTcuNGwtMTQ0LTEzNmMtNy02LjYtMTcuMi04LjQtMjYtNC42cy0xNC41IDEyLjUtMTQuNSAyMmwwIDcyTDMyIDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwyODggMCAwIDcyYzAgOS42IDUuNyAxOC4yIDE0LjUgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpZ2h0VG9CcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNy45IDEwNS45TDM0MC43IDIyOC43YzcuMiA3LjIgMTEuMyAxNy4xIDExLjMgMjcuM3MtNC4xIDIwLjEtMTEuMyAyNy4zTDIxNy45IDQwNi4xYy02LjQgNi40LTE1IDkuOS0yNCA5LjljLTE4LjcgMC0zMy45LTE1LjItMzMuOS0zMy45bDAtNjIuMUwzMiAzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTI4IDAgMC02Mi4xYzAtMTguNyAxNS4yLTMzLjkgMzMuOS0zMy45YzkgMCAxNy42IDMuNiAyNCA5Ljl6TTM1MiA0MTZsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwYzUzIDAgOTYgNDMgOTYgOTZsMCAyNTZjMCA1My00MyA5Ni05NiA5NmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAyMDhjMCA3LjggNC40IDE4LjcgMTcuMSAzMC4zQzEyNi41IDIxNC4xIDE4OC45IDIwMCAyNTYgMjAwczEyOS41IDE0LjEgMTc0LjkgMzguM0M0NDMuNiAyMjYuNyA0NDggMjE1LjggNDQ4IDIwOGMwLTEyLjMtMTAuOC0zMi00Ny45LTUwLjZDMzY0LjkgMTM5LjggMzE0IDEyOCAyNTYgMTI4cy0xMDguOSAxMS44LTE0NC4xIDI5LjRDNzQuOCAxNzYgNjQgMTk1LjcgNjQgMjA4em0xOTIgNDBjLTQ3IDAtODkuMyA3LjYtMTIyLjkgMTkuN0MxNjYuMyAyODAuMiAyMDguOCAyODggMjU2IDI4OHM4OS43LTcuOCAxMjIuOS0yMC4zQzM0NS4zIDI1NS42IDMwMyAyNDggMjU2IDI0OHpNMCAyMDhjMC00OS42IDM5LjQtODUuOCA4My4zLTEwNy44QzEyOS4xIDc3LjMgMTkwLjMgNjQgMjU2IDY0czEyNi45IDEzLjMgMTcyLjcgMzYuMmM0My45IDIyIDgzLjMgNTguMiA4My4zIDEwNy44djk2YzAgNDkuNi0zOS40IDg1LjgtODMuMyAxMDcuOEMzODIuOSA0MzQuNyAzMjEuNyA0NDggMjU2IDQ0OHMtMTI2LjktMTMuMy0xNzIuNy0zNi4yQzM5LjQgMzg5LjggMCAzNTMuNiAwIDMwNFYyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWRCYXJyaWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjY2LjNMMTQ5LjIgOTZINjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQwNS4yIDk2SDMzMC44bC01LjQgMTAuN0wyMzQuOCAyODhoNzQuM2w1LjQtMTAuN0w0MDUuMiA5NnpNMzYyLjggMjg4aDc0LjNsNS40LTEwLjdMNTMzLjIgOTZINDU4LjhsLTUuNCAxMC43TDM2Mi44IDI4OHpNMjAyLjggOTZsLTUuNCAxMC43TDEwNi44IDI4OGg3NC4zbDUuNC0xMC43TDI3Ny4yIDk2SDIwMi44em0yODggMTkySDU3NlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY1My43TDQ5MC44IDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZEJyaWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMEg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ4MCAyMDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djY0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzODR6TTQ4MCA0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY2NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNMzIgOTZIMjg4djY0SDI0OHY2NGg0MHY5NmMtNTMgMC05NiA0My05NiA5NnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTUzLTQzLTk2LTk2LTk2VjIyNEg3MlYxNjBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTE2OCA2NEgxMjB2NjRoODBWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEzLjIgMzJIMjg4Vjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJoNzQuOGMyNy4xIDAgNTEuMyAxNy4xIDYwLjMgNDIuNmw0Mi43IDEyMC42Yy0xMC45LTIuMS0yMi4yLTMuMi0zMy44LTMuMmMtNTkuNSAwLTExMi4xIDI5LjYtMTQ0IDc0LjhWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyYzIuMyAwIDQuNi0uMyA2LjgtLjdjLTQuNSAxNS41LTYuOCAzMS44LTYuOCA0OC43YzAgNS40IC4yIDEwLjcgLjcgMTZsLS43IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0SDg2LjZDNTYuNSA0ODAgMzIgNDU1LjUgMzIgNDI1LjRjMC02LjIgMS4xLTEyLjQgMy4xLTE4LjJMMTUyLjkgNzQuNkMxNjIgNDkuMSAxODYuMSAzMiAyMTMuMiAzMnpNMzUyIDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0ODAgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZENpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMy4yIDMySDI4OFY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyaDc0LjhjMjcuMSAwIDUxLjMgMTcuMSA2MC4zIDQyLjZsNDIuNyAxMjAuNmMtMTAuOS0yLjEtMjIuMi0zLjItMzMuOC0zLjJjLTU5LjUgMC0xMTIuMSAyOS42LTE0NCA3NC44VjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmMyLjMgMCA0LjYtLjMgNi44LS43Yy00LjUgMTUuNS02LjggMzEuOC02LjggNDguN2MwIDUuNCAuMiAxMC43IC43IDE2bC0uNyAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NEg4Ni42QzU2LjUgNDgwIDMyIDQ1NS41IDMyIDQyNS40YzAtNi4yIDEuMS0xMi40IDMuMS0xOC4yTDE1Mi45IDc0LjZDMTYyIDQ5LjEgMTg2LjEgMzIgMjEzLjIgMzJ6TTQ5NiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDI0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTAtMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2ODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyODhjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEzLjIgMzJIMjg4Vjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJoNzQuOGMyNy4xIDAgNTEuMyAxNy4xIDYwLjMgNDIuNmw0Mi43IDEyMC42Yy0xMC45LTIuMS0yMi4yLTMuMi0zMy44LTMuMmMtNTkuNSAwLTExMi4xIDI5LjYtMTQ0IDc0LjhWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyYzIuMyAwIDQuNi0uMyA2LjgtLjdjLTQuNSAxNS41LTYuOCAzMS44LTYuOCA0OC43YzAgNS40IC4yIDEwLjcgLjcgMTZsLS43IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0SDg2LjZDNTYuNSA0ODAgMzIgNDU1LjUgMzIgNDI1LjRjMC02LjIgMS4xLTEyLjQgMy4xLTE4LjJMMTUyLjkgNzQuNkMxNjIgNDkuMSAxODYuMSAzMiAyMTMuMiAzMnpNNDk2IDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTIyLjYgMTQ0bDM2LjctMzYuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQ5NiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQ3My40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDk2IDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNTE4LjYgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJIMjEzLjJjLTI3LjEgMC01MS4zIDE3LjEtNjAuMyA0Mi42TDM1LjEgNDA3LjJjLTIuMSA1LjktMy4xIDEyLTMuMSAxOC4yQzMyIDQ1NS41IDU2LjUgNDgwIDg2LjYgNDgwSDI4OFY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGgzMlYzNTJjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjI3MmMwLTU4LjMgNDQuNi0xMDYuMiAxMDEuNS0xMTEuNUw0ODcuMSA3NC42QzQ3OCA0OS4xIDQ1My45IDMyIDQyNi44IDMySDM1MlY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMnptNjQgMTkydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyem0xNzYgMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NDhINDk2VjI3MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTgwIDMydjQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMlYyNzJjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWRTcGlrZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTE2LjhjMC0xNS44IDIwLjUtMjIgMjkuMy04LjlMMTkyIDI1NlYxMTYuOGMwLTE1LjggMjAuNS0yMiAyOS4zLTguOUwzMjAgMjU2VjExNi44YzAtMTUuOCAyMC41LTIyIDI5LjMtOC45TDQ0OCAyNTZWMTE2LjhjMC0xNS44IDIwLjUtMjIgMjkuMy04LjlMNjA2LjggMzAyLjJjMTQuMiAyMS4zLTEuMSA0OS43LTI2LjYgNDkuN0g1MTIgNDQ4IDM4NCAzMjAgMjU2IDE5MiA2NFYxMTYuOHpNMzIgMzg0SDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJIMTgxLjJjLTI3LjEgMC01MS4zIDE3LjEtNjAuMyA0Mi42TDMuMSA0MDcuMkMxLjEgNDEzIDAgNDE5LjIgMCA0MjUuNEMwIDQ1NS41IDI0LjUgNDgwIDU0LjYgNDgwSDI1NlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NEg1MjEuNGMzMC4yIDAgNTQuNi0yNC41IDU0LjYtNTQuNmMwLTYuMi0xLjEtMTIuNC0zLjEtMTguMkw0NTUuMSA3NC42QzQ0NiA0OS4xIDQyMS45IDMyIDM5NC44IDMySDMyMFY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMnptNjQgMTkydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2JvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY5Nkg0NzJjMzkuOCAwIDcyIDMyLjIgNzIgNzJWNDQwYzAgMzkuOC0zMi4yIDcyLTcyIDcySDE2OGMtMzkuOCAwLTcyLTMyLjItNzItNzJWMTY4YzAtMzkuOCAzMi4yLTcyIDcyLTcySDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMjA4IDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyMDh6bTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzA0em05NiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDQwMHpNMjY0IDI1NmE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwem0xNTIgNDBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek00OCAyMjRINjRWNDE2SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyNzJjMC0yNi41IDIxLjUtNDggNDgtNDh6bTU0NCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4djk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDU3NlYyMjRoMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTYuNiAzODQuOUwxMjUuNyAzNTRjLTguNS04LjUtMTEuNS0yMC44LTcuNy0zMi4yYzMtOC45IDctMjAuNSAxMS44LTMzLjhMMjQgMjg4Yy04LjYgMC0xNi42LTQuNi0yMC45LTEyLjFzLTQuMi0xNi43IC4yLTI0LjFsNTIuNS04OC41YzEzLTIxLjkgMzYuNS0zNS4zIDYxLjktMzUuM2w4Mi4zIDBjMi40LTQgNC44LTcuNyA3LjItMTEuM0MyODkuMS00LjEgNDExLjEtOC4xIDQ4My45IDUuM2MxMS42IDIuMSAyMC42IDExLjIgMjIuOCAyMi44YzEzLjQgNzIuOSA5LjMgMTk0LjgtMTExLjQgMjc2LjdjLTMuNSAyLjQtNy4zIDQuOC0xMS4zIDcuMnY4Mi4zYzAgMjUuNC0xMy40IDQ5LTM1LjMgNjEuOWwtODguNSA1Mi41Yy03LjQgNC40LTE2LjYgNC41LTI0LjEgLjJzLTEyLjEtMTIuMi0xMi4xLTIwLjlWMzgwLjhjLTE0LjEgNC45LTI2LjQgOC45LTM1LjcgMTEuOWMtMTEuMiAzLjYtMjMuNCAuNS0zMS44LTcuOHpNMzg0IDE2OGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvdGF0ZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDguNSAyMjRINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjcyYzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMkw5OC42IDk2LjZjODcuNi04Ni41IDIyOC43LTg2LjIgMzE1LjggMWM4Ny41IDg3LjUgODcuNSAyMjkuMyAwIDMxNi44cy0yMjkuMyA4Ny41LTMxNi44IDBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBjNjIuNSA2Mi41IDE2My44IDYyLjUgMjI2LjMgMHM2Mi41LTE2My44IDAtMjI2LjNjLTYyLjItNjIuMi0xNjIuNy02Mi41LTIyNS4zLTFMMTg1IDE4M2M2LjkgNi45IDguOSAxNy4yIDUuMiAyNi4ycy0xMi41IDE0LjgtMjIuMiAxNC44SDQ4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvdGF0ZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2My41IDIyNEg0NzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNzJjMC05LjctNS44LTE4LjUtMTQuOC0yMi4ycy0xOS4zLTEuNy0yNi4yIDUuMkw0MTMuNCA5Ni42Yy04Ny42LTg2LjUtMjI4LjctODYuMi0zMTUuOCAxYy04Ny41IDg3LjUtODcuNSAyMjkuMyAwIDMxNi44czIyOS4zIDg3LjUgMzE2LjggMGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGMtNjIuNSA2Mi41LTE2My44IDYyLjUtMjI2LjMgMHMtNjIuNS0xNjMuOCAwLTIyNi4zYzYyLjItNjIuMiAxNjIuNy02Mi41IDIyNS4zLTFMMzI3IDE4M2MtNi45IDYuOS04LjkgMTcuMi01LjIgMjYuMnMxMi41IDE0LjggMjIuMiAxNC44SDQ2My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb3RhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQyLjkgMTQyLjljNjIuMi02Mi4yIDE2Mi43LTYyLjUgMjI1LjMtMUwzMjcgMTgzYy02LjkgNi45LTguOSAxNy4yLTUuMiAyNi4yczEyLjUgMTQuOCAyMi4yIDE0LjhINDYzLjVjMCAwIDAgMCAwIDBINDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0VjcyYzAtOS43LTUuOC0xOC41LTE0LjgtMjIuMnMtMTkuMy0xLjctMjYuMiA1LjJMNDEzLjQgOTYuNmMtODcuNi04Ni41LTIyOC43LTg2LjItMzE1LjggMUM3My4yIDEyMiA1NS42IDE1MC43IDQ0LjggMTgxLjRjLTUuOSAxNi43IDIuOSAzNC45IDE5LjUgNDAuOHMzNC45LTIuOSA0MC44LTE5LjVjNy43LTIxLjggMjAuMi00Mi4zIDM3LjgtNTkuOHpNMTYgMzEydjcuNiAuN1Y0NDBjMCA5LjcgNS44IDE4LjUgMTQuOCAyMi4yczE5LjMgMS43IDI2LjItNS4ybDQxLjYtNDEuNmM4Ny42IDg2LjUgMjI4LjcgODYuMiAzMTUuOC0xYzI0LjQtMjQuNCA0Mi4xLTUzLjEgNTIuOS04My43YzUuOS0xNi43LTIuOS0zNC45LTE5LjUtNDAuOHMtMzQuOSAyLjktNDAuOCAxOS41Yy03LjcgMjEuOC0yMC4yIDQyLjMtMzcuOCA1OS44Yy02Mi4yIDYyLjItMTYyLjcgNjIuNS0yMjUuMyAxTDE4NSAzMjljNi45LTYuOSA4LjktMTcuMiA1LjItMjYuMnMtMTIuNS0xNC44LTIyLjItMTQuOEg0OC40aC0uN0g0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA5NmMwIDUwLjItNTkuMSAxMjUuMS04NC42IDE1NWMtMy44IDQuNC05LjQgNi4xLTE0LjUgNUgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTZjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZIMTM5LjZjOC43LTkuOSAxOS4zLTIyLjYgMzAtMzYuOGM2LjMtOC40IDEyLjgtMTcuNiAxOS0yNy4ySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTZoMzkuOGMtMjEtMzEuNS0zOS44LTY3LjctMzkuOC05NmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2ek0xMTcuMSA0ODkuMWMtMy44IDQuMy03LjIgOC4xLTEwLjEgMTEuM2wtMS44IDItLjItLjJjLTYgNC42LTE0LjYgNC0yMC0xLjhDNTkuOCA0NzMgMCA0MDIuNSAwIDM1MmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2YzAgMzAtMjEuMSA2Ny00My41IDk3LjljLTEwLjcgMTQuNy0yMS43IDI4LTMwLjggMzguNWwtLjYgLjd6TTEyOCAzNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDE2IDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyYzIyOS44IDAgNDE2IDE4Ni4yIDQxNiA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJDMzg0IDI1My42IDIyNi40IDk2IDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjR6TTAgNDE2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDAgNDE2ek0zMiAxNjBjMTU5LjEgMCAyODggMTI4LjkgMjg4IDI4OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTEyMy43LTEwMC4zLTIyNC0yMjQtMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWJsZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDNzguMyAzMiA2NCA0Ni4zIDY0IDY0VjI1NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHYzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxNkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTI4VjMyMEgyNDBjNzkuNSAwIDE0NC02NC41IDE0NC0xNDRzLTY0LjUtMTQ0LTE0NC0xNDRIOTZ6TTI0MCAyNTZIMTI4Vjk2SDI0MGM0NC4yIDAgODAgMzUuOCA4MCA4MHMtMzUuOCA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDY0SDU2IDgwVjg4djg4IDgwIDgwIDg4IDI0SDU2IDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMzYwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMjgwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMjAwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMTEySDI0QzEwLjcgMTEyIDAgMTAxLjMgMCA4OFMxMC43IDY0IDI0IDY0em04OCAwSDUyOFY0NDhIMTEyVjY0ek02NDAgODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRoLTh2NDBoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGgtOHYzMmg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0aC04djMyaDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRoLTh2NDBoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1ODQgNTYwVjQyNCAzMzYgMjU2IDE3NiA4OCA2NGgyNCAzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXJDb21iaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMiA0NjguOUMyLjcgNDkzLjEgMjMuMSA1MTIgNDggNTEybDk2IDAgMzIwIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC05NmMwLTI2LjUtMjEuNS00OC00OC00OGwtNDggMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNjQtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNjQtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMEMyMS41IDAgMCAyMS41IDAgNDhMMCAzNjhsMCA5NmMwIDEuNyAuMSAzLjMgLjIgNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlckhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMzZjMCAyNi41IDIxLjUgNDggNDggNDhsNTQ0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0xNjBjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4TDAgMzM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlclZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDIwOGMyNi41IDAgNDggMjEuNSA0OCA0OFY5NkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NjRIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDgwdjY0SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4MHY2NEgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NDhjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcuOSA0OTQuMWMtMTguNyAxOC43LTQ5LjEgMTguNy02Ny45IDBMMTcuOSA0MDEuOWMtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3LjlsNTAuNy01MC43IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNTAuNy01MC43YzE4LjctMTguNyA0OS4xLTE4LjcgNjcuOSAwbDkyLjEgOTIuMWMxOC43IDE4LjcgMTguNyA0OS4xIDAgNjcuOUwxNzcuOSA0OTQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVwZWVTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJoODBjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRjMCA1OC44LTM1LjIgMTA5LjMtODUuNyAxMzEuN2w1MS40IDEyOC40YzYuNiAxNi40LTEuNCAzNS0xNy44IDQxLjZzLTM1LTEuNC00MS42LTE3LjhMMTA2LjMgMzIwSDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyODggNjR6TTY0IDI1Nmg0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MEg2NFYyNTZ6bTI1Ni41IDE2LjRjLS45IDYgMCA4LjcgLjQgOS44Yy40IDEuMSAxLjQgMi42IDQuMiA0LjljNy4yIDUuNyAxOC43IDEwIDM3LjkgMTYuOGwxLjMgLjVjMTYgNS42IDM4LjcgMTMuNiA1NS43IDI4LjFjOS41IDguMSAxNy45IDE4LjYgMjMuMSAzMi4zYzUuMSAxMy43IDYuMSAyOC41IDMuOCA0NGMtNC4yIDI4LjEtMjAuNSA0OS4zLTQzLjggNjAuOWMtMjIuMSAxMS00OC4xIDEyLjUtNzMuMiA4bC0uMiAwIDAgMGMtOS4zLTEuOC0yMC41LTUuNy0yOS4zLTljLTYtMi4zLTEyLjYtNC45LTE3LjctNi45bDAgMGMtMi41LTEtNC42LTEuOC02LjMtMi41Yy0xNi41LTYuNC0yNC42LTI1LTE4LjItNDEuNHMyNC45LTI0LjYgNDEuNC0xOC4yYzIuNiAxIDUuMiAyIDcuOSAzLjFsMCAwYzQuOCAxLjkgOS44IDMuOSAxNS40IDZjOC44IDMuMyAxNS4zIDUuNCAxOC43IDZjMTUuNyAyLjggMjYuNyAuOCAzMi45LTIuM2M1LTIuNSA4LTYgOS4xLTEzYzEtNi45IC4yLTEwLjUtLjUtMTIuM2MtLjYtMS43LTEuOC0zLjYtNC41LTUuOWMtNi45LTUuOC0xOC4yLTEwLjQtMzYuOS0xN2wtMy0xLjFjLTE1LjUtNS40LTM3LTEzLTUzLjMtMjUuOWMtOS41LTcuNS0xOC4zLTE3LjYtMjMuNy0zMWMtNS41LTEzLjQtNi42LTI4LTQuNC00My4yYzguNC01Ny4xIDY3LTc4IDExNi45LTY4LjljNi45IDEuMyAyNy4zIDUuOCAzNS40IDguNGMxNi45IDUuMiAyNi4zIDIzLjIgMjEuMSA0MC4xcy0yMy4yIDI2LjMtNDAuMSAyMS4xYy00LjctMS40LTIyLjMtNS41LTI3LjktNi41Yy0xNC42LTIuNy0yNS44LS40LTMyLjYgMy4yYy02LjMgMy4zLTguOSA3LjYtOS41IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdXBpYWhTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJoODBjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRjMCA1OC44LTM1LjIgMTA5LjMtODUuNyAxMzEuN2w1MS40IDEyOC40YzYuNiAxNi40LTEuNCAzNS0xNy44IDQxLjZzLTM1LTEuNC00MS42LTE3LjhMMTA2LjMgMzIwSDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyODggNjR6TTY0IDI1Nmg0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MEg2NFYyNTZ6bTI1Ni05Nmg4MGM2MS45IDAgMTEyIDUwLjEgMTEyIDExMnMtNTAuMSAxMTItMTEyIDExMkgzNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptODAgMTYwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4SDM1MnY5Nmg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05OS4xIDEwNS40Qzc5IDExNCA2OC4yIDEyNy4yIDY1LjIgMTQ0LjhjLTIuNCAxNC4xLS43IDIzLjIgMiAyOS40YzIuOCA2LjMgNy45IDEyLjQgMTYuNyAxOC42YzE5LjIgMTMuNCA0OC4zIDIyLjEgODQuOSAzMi41YzEgLjMgMS45IC42IDIuOSAuOGMzMi43IDkuMyA3MiAyMC42IDEwMC45IDQwLjdjMTUuNyAxMC45IDI5LjkgMjUuNSAzOC42IDQ1LjFjOC44IDE5LjggMTAuOCA0MiA2LjYgNjYuM2MtNy4zIDQyLjUtMzUuMyA3MS43LTcxLjggODcuM2MtMzUuNCAxNS4yLTc5LjEgMTcuOS0xMjMuNyAxMC45bC0uMiAwIDAgMGMtMjQtMy45LTYyLjctMTcuMS04Ny42LTI1LjZjLTQuOC0xLjctOS4yLTMuMS0xMi44LTQuM0M1LjEgNDQwLjgtMy45IDQyMi43IDEuNiA0MDUuOXMyMy43LTI1LjggNDAuNS0yMC4zYzQuOSAxLjYgMTAuMiAzLjQgMTUuOSA1LjRjMjUuNCA4LjYgNTYuNCAxOS4yIDc0LjQgMjIuMWMzNi44IDUuNyA2Ny41IDIuNSA4OC41LTYuNWMyMC4xLTguNiAzMC44LTIxLjggMzMuOS0zOS40YzIuNC0xNC4xIC43LTIzLjItMi0yOS40Yy0yLjgtNi4zLTcuOS0xMi40LTE2LjctMTguNmMtMTkuMi0xMy40LTQ4LjMtMjIuMS04NC45LTMyLjVjLTEtLjMtMS45LS42LTIuOS0uOGMtMzIuNy05LjMtNzItMjAuNi0xMDAuOS00MC43Yy0xNS43LTEwLjktMjkuOS0yNS41LTM4LjYtNDUuMWMtOC44LTE5LjgtMTAuOC00Mi02LjYtNjYuM2wzMS41IDUuNUwyLjEgMTMzLjlDOS40IDkxLjQgMzcuNCA2Mi4yIDczLjkgNDYuNmMzNS40LTE1LjIgNzkuMS0xNy45IDEyMy43LTEwLjljMTMgMiA1Mi40IDkuNiA2Ni42IDEzLjRjMTcuMSA0LjUgMjcuMiAyMi4xIDIyLjcgMzkuMnMtMjIuMSAyNy4yLTM5LjIgMjIuN2MtMTEuMi0zLTQ4LjEtMTAuMi02MC4xLTEybDQuOS0zMS41LTQuOSAzMS41Yy0zNi45LTUuOC02Ny41LTIuNS04OC42IDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Fja0RvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTZIMTkyTDE0NC42IDI0LjlDMTM3LjUgMTQuMiAxNDUuMSAwIDE1Ny45IDBIMzU0LjFjMTIuOCAwIDIwLjQgMTQuMiAxMy4zIDI0LjlMMzIwIDk2ek0xOTIgMTI4SDMyMGMzLjggMi41IDguMSA1LjMgMTMgOC40QzM4OS43IDE3Mi43IDUxMiAyNTAuOSA1MTIgNDE2YzAgNTMtNDMgOTYtOTYgOTZIOTZjLTUzIDAtOTYtNDMtOTYtOTZDMCAyNTAuOSAxMjIuMyAxNzIuNyAxNzkgMTM2LjRsMCAwIDAgMGM0LjgtMy4xIDkuMi01LjkgMTMtOC40em04NCA4OGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjB2MTRjLTcuNiAxLjctMTUuMiA0LjQtMjIuMiA4LjVjLTEzLjkgOC4zLTI1LjkgMjIuOC0yNS44IDQzLjljLjEgMjAuMyAxMiAzMy4xIDI0LjcgNDAuN2MxMSA2LjYgMjQuNyAxMC44IDM1LjYgMTRsMS43IC41YzEyLjYgMy44IDIxLjggNi44IDI4IDEwLjdjNS4xIDMuMiA1LjggNS40IDUuOSA4LjJjLjEgNS0xLjggOC01LjkgMTAuNWMtNSAzLjEtMTIuOSA1LTIxLjQgNC43Yy0xMS4xLS40LTIxLjUtMy45LTM1LjEtOC41Yy0yLjMtLjgtNC43LTEuNi03LjItMi40Yy0xMC41LTMuNS0yMS44IDIuMi0yNS4zIDEyLjZzMi4yIDIxLjggMTIuNiAyNS4zYzEuOSAuNiA0IDEuMyA2LjEgMi4xbDAgMCAwIDBjOC4zIDIuOSAxNy45IDYuMiAyOC4yIDguNFY0MjRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWNDEwLjJjOC0xLjcgMTYtNC41IDIzLjItOWMxNC4zLTguOSAyNS4xLTI0LjEgMjQuOC00NWMtLjMtMjAuMy0xMS43LTMzLjQtMjQuNi00MS42Yy0xMS41LTcuMi0yNS45LTExLjYtMzcuMS0xNWwwIDAtLjctLjJjLTEyLjgtMy45LTIxLjktNi43LTI4LjMtMTAuNWMtNS4yLTMuMS01LjMtNC45LTUuMy02LjdjMC0zLjcgMS40LTYuNSA2LjItOS4zYzUuNC0zLjIgMTMuNi01LjEgMjEuNS01YzkuNiAuMSAyMC4yIDIuMiAzMS4yIDUuMmMxMC43IDIuOCAyMS42LTMuNSAyNC41LTE0LjJzLTMuNS0yMS42LTE0LjItMjQuNWMtNi41LTEuNy0xMy43LTMuNC0yMS4xLTQuN1YyMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhY2tYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgOTZIMzIwbDQ3LjQtNzEuMUMzNzQuNSAxNC4yIDM2Ni45IDAgMzU0LjEgMEgxNTcuOWMtMTIuOCAwLTIwLjQgMTQuMi0xMy4zIDI0LjlMMTkyIDk2em0xMjggMzJIMTkyYy0zLjggMi41LTguMSA1LjMtMTMgOC40bDAgMCAwIDBDMTIyLjMgMTcyLjcgMCAyNTAuOSAwIDQxNmMwIDUzIDQzIDk2IDk2IDk2SDQxNmM1MyAwIDk2LTQzIDk2LTk2YzAtMTY1LjEtMTIyLjMtMjQzLjMtMTc5LTI3OS42Yy00LjgtMy4xLTkuMi01LjktMTMtOC40ek0yODkuOSAzMzZsNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWlsYm9hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMTZjMC03IDQuNS0xMy4yIDExLjItMTUuM3MxMy45IC40IDE3LjkgNi4xbDIyNCAzMjBjMy40IDQuOSAzLjggMTEuMyAxLjEgMTYuNnMtOC4yIDguNi0xNC4yIDguNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxNnpNMjEyLjEgOTYuNWM3IDEuOSAxMS45IDguMiAxMS45IDE1LjVWMzM2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtNS43IDAtMTEtMy0xMy44LThzLTIuOS0xMS0uMS0xNmwxMjgtMjI0YzMuNi02LjMgMTEtOS40IDE4LTcuNXpNNS43IDQwNC4zQzIuOCAzOTQuMSAxMC41IDM4NCAyMS4xIDM4NEg1NTQuOWMxMC42IDAgMTguMyAxMC4xIDE1LjQgMjAuM2wtNCAxNC4zQzU1MC43IDQ3My45IDUwMC40IDUxMiA0NDMgNTEySDEzM0M3NS42IDUxMiAyNS4zIDQ3My45IDkuNyA0MTguN2wtNC0xNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXRlbGxpdGVEaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkMzODMuMSAwIDUxMiAxMjguOSA1MTIgMjg4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyQzQ0OCAxNjQuMyAzNDcuNyA2NCAyMjQgNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek02MC42IDIyMC42TDE2NC43IDMyNC43bDI4LjQtMjguNGMtLjctMi42LTEuMS01LjQtMS4xLTguM2MwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyYy0yLjkgMC01LjYtLjQtOC4zLTEuMWwtMjguNCAyOC40TDI5MS40IDQ1MS40YzE0LjUgMTQuNSAxMS44IDM4LjgtNy4zIDQ2LjNDMjYwLjUgNTA2LjkgMjM0LjkgNTEyIDIwOCA1MTJDOTMuMSA1MTIgMCA0MTguOSAwIDMwNGMwLTI2LjkgNS4xLTUyLjUgMTQuNC03Ni4xYzcuNS0xOSAzMS44LTIxLjggNDYuMy03LjN6TTIyNCA5NmMxMDYgMCAxOTIgODYgMTkyIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2F0ZWxsaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMyA3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtOTYgOTZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDg5LjQgODkuNC0xNS41IDE1LjVDMTUyLjMgMjMwLjQgMTI0LjkgMjI0IDk2IDIyNGMtMzEuNyAwLTYxLjUgNy43LTg3LjggMjEuMmMtOSA0LjctMTAuMyAxNi43LTMuMSAyMy44TDExMi43IDM3Ni43IDk2LjMgMzkzLjFjLTIuNi0uNy01LjQtMS4xLTguMy0xLjFjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTIuOS0uNC01LjYtMS4xLTguM2wxNi40LTE2LjRMMjQyLjkgNTA2LjljNy4yIDcuMiAxOS4yIDUuOSAyMy44LTMuMUMyODAuMyA0NzcuNSAyODggNDQ3LjcgMjg4IDQxNmMwLTI4LjktNi40LTU2LjMtMTcuOC04MC45bDE1LjUtMTUuNUwzNzUgNDA5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDk2LTk2YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC04OS40LTg5LjQgNTUtNTVjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTQ4LTQ4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNTUgNTVMMjMzIDd6bTE1OSAzNTFsLTcyLjQtNzIuNCA2Mi4xLTYyLjFMNDU0LjEgMjk2IDM5MiAzNTguMXpNMjI2LjMgMTkyLjRMMTUzLjkgMTIwIDIxNiA1Ny45bDcyLjQgNzIuNC02Mi4xIDYyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjYWxlQmFsYW5jZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDUxMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzOTguNGMtNS4yIDI1LjgtMjIuOSA0Ny4xLTQ2LjQgNTcuM1Y0NDhINTEyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMCAxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMjg4VjE1My4zYy0yMy41LTEwLjMtNDEuMi0zMS42LTQ2LjQtNTcuM0gxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMjU2YzE0LjYtMTkuNCAzNy44LTMyIDY0LTMyczQ5LjQgMTIuNiA2NCAzMnptNTUuNiAyODhINTg0LjRMNTEyIDE5NS44IDQzOS42IDMyMHpNNTEyIDQxNmMtNjIuOSAwLTExNS4yLTM0LTEyNi03OC45Yy0yLjYtMTEgMS0yMi4zIDYuNy0zMi4xbDk1LjItMTYzLjJjNS04LjYgMTQuMi0xMy44IDI0LjEtMTMuOHMxOS4xIDUuMyAyNC4xIDEzLjhsOTUuMiAxNjMuMmM1LjcgOS44IDkuMyAyMS4xIDYuNyAzMi4xQzYyNy4yIDM4MiA1NzQuOSA0MTYgNTEyIDQxNnpNMTI2LjggMTk1LjhMNTQuNCAzMjBIMTk5LjNMMTI2LjggMTk1Ljh6TS45IDMzNy4xYy0yLjYtMTEgMS0yMi4zIDYuNy0zMi4xbDk1LjItMTYzLjJjNS04LjYgMTQuMi0xMy44IDI0LjEtMTMuOHMxOS4xIDUuMyAyNC4xIDEzLjhsOTUuMiAxNjMuMmM1LjcgOS44IDkuMyAyMS4xIDYuNyAzMi4xQzI0MiAzODIgMTg5LjcgNDE2IDEyNi44IDQxNlMxMS43IDM4MiAuOSAzMzcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NhbGVVbmJhbGFuY2VkRmxpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTcuOSA2Mi40Yy0xNi44LTUuNi0yNS44LTIzLjctMjAuMi00MC41czIzLjctMjUuOCA0MC41LTIwLjJsMTEzIDM3LjdDMjY1IDE1LjggMjkwLjcgMCAzMjAgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDMtLjIgNS45LS41IDguOGwxMjIuNiA0MC45YzE2LjggNS42IDI1LjggMjMuNyAyMC4yIDQwLjVzLTIzLjcgMjUuOC00MC41IDIwLjJMMzY2LjQgMTQ1LjJjLTQuNSAzLjItOS4zIDUuOS0xNC40IDguMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI4OFYxNTMuM2MtMjEtOS4yLTM3LjItMjctNDQuMi00OWwtMTI1LjktNDJ6TTIwMC40IDI4OEwxMjggMTYzLjggNTUuNiAyODhIMjAwLjR6TTEyOCAzODRDNjUuMSAzODQgMTIuOCAzNTAgMiAzMDUuMWMtMi42LTExIDEtMjIuMyA2LjctMzIuMWw5NS4yLTE2My4yYzUtOC42IDE0LjItMTMuOCAyNC4xLTEzLjhzMTkuMSA1LjMgMjQuMSAxMy44bDk1LjIgMTYzLjJjNS43IDkuOCA5LjMgMjEuMSA2LjcgMzIuMUMyNDMuMiAzNTAgMTkwLjkgMzg0IDEyOCAzODR6bTM4Mi44LTkyLjJMNDM4LjQgNDE2SDU4My4zTDUxMC44IDI5MS44em0xMjYgMTQxLjNDNjI2IDQ3OCA1NzMuNyA1MTIgNTEwLjggNTEycy0xMTUuMi0zNC0xMjYtNzguOWMtMi42LTExIDEtMjIuMyA2LjctMzIuMWw5NS4yLTE2My4yYzUtOC42IDE0LjItMTMuOCAyNC4xLTEzLjhzMTkuMSA1LjMgMjQuMSAxMy44bDk1LjIgMTYzLjJjNS43IDkuOCA5LjMgMjEuMSA2LjcgMzIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NhbGVVbmJhbGFuY2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyMi4xIDYyLjRjMTYuOC01LjYgMjUuOC0yMy43IDIwLjItNDAuNVM1MTguNi0zLjkgNTAxLjkgMS42bC0xMTMgMzcuN0MzNzUgMTUuOCAzNDkuMyAwIDMyMCAwYy00NC4yIDAtODAgMzUuOC04MCA4MGMwIDMgLjIgNS45IC41IDguOEwxMTcuOSAxMjkuNmMtMTYuOCA1LjYtMjUuOCAyMy43LTIwLjIgNDAuNXMyMy43IDI1LjggNDAuNSAyMC4ybDEzNS41LTQ1LjJjNC41IDMuMiA5LjMgNS45IDE0LjQgOC4yVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1MTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjE1My4zYzIxLTkuMiAzNy4yLTI3IDQ0LjItNDlsMTI1LjktNDJ6TTQzOS42IDI4OEw1MTIgMTYzLjggNTg0LjQgMjg4SDQzOS42ek01MTIgMzg0YzYyLjkgMCAxMTUuMi0zNCAxMjYtNzguOWMyLjYtMTEtMS0yMi4zLTYuNy0zMi4xTDUzNi4xIDEwOS44Yy01LTguNi0xNC4yLTEzLjgtMjQuMS0xMy44cy0xOS4xIDUuMy0yNC4xIDEzLjhMMzkyLjcgMjczLjFjLTUuNyA5LjgtOS4zIDIxLjEtNi43IDMyLjFDMzk2LjggMzUwIDQ0OS4xIDM4NCA1MTIgMzg0ek0xMjkuMiAyOTEuOEwyMDEuNiA0MTZINTYuN2w3Mi40LTEyNC4yek0zLjIgNDMzLjFDMTQgNDc4IDY2LjMgNTEyIDEyOS4yIDUxMnMxMTUuMi0zNCAxMjYtNzguOWMyLjYtMTEtMS0yMi4zLTYuNy0zMi4xTDE1My4yIDIzNy44Yy01LTguNi0xNC4yLTEzLjgtMjQuMS0xMy44cy0xOS4xIDUuMy0yNC4xIDEzLjhMOS45IDQwMS4xYy01LjcgOS44LTkuMyAyMS4xLTYuNyAzMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2xDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzcuOCA1LjRDMzI3LTEuOCAzMTMtMS44IDMwMi4yIDUuNEwxNjYuMyA5Nkg0OEMyMS41IDk2IDAgMTE3LjUgMCAxNDRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDMyMHYwSDI1NlY0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsLjMgMGguNWMzLjQtMzcuNyAxOC43LTcyLjEgNDIuMi05OS4xQzM1MC4yIDI2MCAzMzUuNiAyNjQgMzIwIDI2NGMtNDguNiAwLTg4LTM5LjQtODgtODhzMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMTguMy01LjYgMzUuMy0xNS4xIDQ5LjRjMjktMjEgNjQuNi0zMy40IDEwMy4xLTMzLjRjNTkuNSAwIDExMi4xIDI5LjYgMTQ0IDc0LjhWMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ3My43TDMzNy44IDUuNHpNOTYgMTkyaDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYyMDhjMC04LjggNy4yLTE2IDE2LTE2em0wIDEyOGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnpNMzIwIDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMzZWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tOTkuMy00My4zYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaG9vbENpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNy44IDUuNEMzMjctMS44IDMxMy0xLjggMzAyLjIgNS40TDE2Ni4zIDk2SDQ4QzIxLjUgOTYgMCAxMTcuNSAwIDE0NFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMzIwdjBIMjU2VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NGwuMyAwaC41YzMuNC0zNy43IDE4LjctNzIuMSA0Mi4yLTk5LjFDMzUwLjIgMjYwIDMzNS42IDI2NCAzMjAgMjY0Yy00OC42IDAtODgtMzkuNC04OC04OHMzOS40LTg4IDg4LTg4czg4IDM5LjQgODggODhjMCAxOC4zLTUuNiAzNS4zLTE1LjEgNDkuNGMyOS0yMSA2NC42LTMzLjQgMTAzLjEtMzMuNGM1OS41IDAgMTEyLjEgMjkuNiAxNDQgNzQuOFYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhINDczLjdMMzM3LjggNS40ek05NiAxOTJoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjIwOGMwLTguOCA3LjItMTYgMTYtMTZ6bTAgMTI4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2ek0zMjAgMTI4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMzNlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2ek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2xDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzcuOCA1LjRDMzI3LTEuOCAzMTMtMS44IDMwMi4yIDUuNEwxNjYuMyA5Nkg0OEMyMS41IDk2IDAgMTE3LjUgMCAxNDRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDMyMHYwSDI1NlY0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsLjMgMGguNWMzLjQtMzcuNyAxOC43LTcyLjEgNDIuMi05OS4xQzM1MC4yIDI2MCAzMzUuNiAyNjQgMzIwIDI2NGMtNDguNiAwLTg4LTM5LjQtODgtODhzMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMTguMy01LjYgMzUuMy0xNS4xIDQ5LjRjMjktMjEgNjQuNi0zMy40IDEwMy4xLTMzLjRjNTkuNSAwIDExMi4xIDI5LjYgMTQ0IDc0LjhWMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ3My43TDMzNy44IDUuNHpNOTYgMTkyaDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYyMDhjMC04LjggNy4yLTE2IDE2LTE2em0wIDEyOGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnpNMzIwIDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMzZWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTIyLjYtMTQ0bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQ5NiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQ3My40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDk2IDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZMNTE4LjYgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2xGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAwSDQwMGM4LjggMCAxNiA3LjIgMTYgMTZWODBjMCA4LjgtNy4yIDE2LTE2IDE2SDMyMC43bDg5LjYgNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMzZWNDAwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4VjUxMkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0SDE2NS43TDI1NiA5NS41VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem00OCAyNDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNODAgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDgwem0zNjggMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDQ2NGMtOC44IDAtMTYgNy4yLTE2IDE2ek04MCAzNTJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZIODB6bTM4NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDQ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Nob29sTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMiA1LjRjMTAuNy03LjIgMjQuOC03LjIgMzUuNSAwTDQ3My43IDk2SDU5MmMyNi41IDAgNDggMjEuNSA0OCA0OFYyNzJjMC02MS45LTUwLjEtMTEyLTExMi0xMTJzLTExMiA1MC4xLTExMiAxMTJ2MjQuNmMtMTkuMSAxMS4xLTMyIDMxLjctMzIgNTUuNEgzMjAuM2wtLjMgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZoNjR2MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDE2Ni4zTDMwMi4yIDUuNHpNODAgMjA4djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2em0wIDEyOHY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMzNmMwLTguOC03LjItMTYtMTYtMTZIOTZjLTguOCAwLTE2IDcuMi0xNiAxNnptMjQwLTcyYTg4IDg4IDAgMSAwIDAtMTc2IDg4IDg4IDAgMSAwIDAgMTc2em0xNi0xMjB2MTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzIwYy04LjggMC0xNi03LjItMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTE5MiA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM3LjggNS40QzMyNy0xLjggMzEzLTEuOCAzMDIuMiA1LjRMMTY2LjMgOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyNTZWNDE2YzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR2OTZINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OEg0NzMuN0wzMzcuOCA1LjR6TTk2IDE5MmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMjA4YzAtOC44IDcuMi0xNiAxNi0xNnptNDAwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDUxMmMtOC44IDAtMTYtNy4yLTE2LTE2VjIwOHpNOTYgMzIwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em00MDAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZINTEyYy04LjggMC0xNi03LjItMTYtMTZWMzM2ek0yMzIgMTc2YTg4IDg4IDAgMSAxIDE3NiAwIDg4IDg4IDAgMSAxIC0xNzYgMHptODgtNDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzM2VjE0NGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaXNzb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxOTJsLTM5LjUtMzkuNWM0LjktMTIuNiA3LjUtMjYuMiA3LjUtNDAuNUMyMjQgNTAuMSAxNzMuOSAwIDExMiAwUzAgNTAuMSAwIDExMnM1MC4xIDExMiAxMTIgMTEyYzE0LjMgMCAyNy45LTIuNyA0MC41LTcuNUwxOTIgMjU2bC0zOS41IDM5LjVjLTEyLjYtNC45LTI2LjItNy41LTQwLjUtNy41QzUwLjEgMjg4IDAgMzM4LjEgMCA0MDBzNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyYzAtMTQuMy0yLjctMjcuOS03LjUtNDAuNUw0OTkuMiA3Ni44YzcuMS03LjEgNy4xLTE4LjUgMC0yNS42Yy0yOC4zLTI4LjMtNzQuMS0yOC4zLTEwMi40IDBMMjU2IDE5MnptMjIuNiAxNTAuNkwzOTYuOCA0NjAuOGMyOC4zIDI4LjMgNzQuMSAyOC4zIDEwMi40IDBjNy4xLTcuMSA3LjEtMTguNSAwLTI1LjZMMzQyLjYgMjc4LjZsLTY0IDY0ek02NCAxMTJhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDggMjQwYTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyZXdkcml2ZXJXcmVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzguNiA1QzY5LjEtMi40IDU1LjYtMS41IDQ3IDdMNyA0N2MtOC41IDguNS05LjQgMjItMi4xIDMxLjZsODAgMTA0YzQuNSA1LjkgMTEuNiA5LjQgMTkgOS40aDU0LjFsMTA5IDEwOWMtMTQuNyAyOS0xMCA2NS40IDE0LjMgODkuNmwxMTIgMTEyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMTItMTEyYy0yNC4yLTI0LjItNjAuNi0yOS04OS42LTE0LjNsLTEwOS0xMDlWMTA0YzAtNy41LTMuNS0xNC41LTkuNC0xOUw3OC42IDV6TTE5LjkgMzk2LjFDNy4yIDQwOC44IDAgNDI2LjEgMCA0NDQuMUMwIDQ4MS42IDMwLjQgNTEyIDY3LjkgNTEyYzE4IDAgMzUuMy03LjIgNDgtMTkuOUwyMzMuNyAzNzQuM2MtNy44LTIwLjktOS00My42LTMuNi02NS4xbC02MS43LTYxLjdMMTkuOSAzOTYuMXpNNTEyIDE0NGMwLTEwLjUtMS4xLTIwLjctMy4yLTMwLjVjLTIuNC0xMS4yLTE2LjEtMTQuMS0yNC4yLTZsLTYzLjkgNjMuOWMtMyAzLTcuMSA0LjctMTEuMyA0LjdIMzUyYy04LjggMC0xNi03LjItMTYtMTZWMTAyLjZjMC00LjIgMS43LTguMyA0LjctMTEuM2w2My45LTYzLjljOC4xLTguMSA1LjItMjEuOC02LTI0LjJDMzg4LjcgMS4xIDM3OC41IDAgMzY4IDBDMjg4LjUgMCAyMjQgNjQuNSAyMjQgMTQ0bDAgLjggODUuMyA4NS4zYzM2LTkuMSA3NS44IC41IDEwNCAyOC43TDQyOSAyNzQuNWM0OS0yMyA4My03Mi44IDgzLTEzMC41ek01NiA0MzJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyZXdkcml2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY1IDdjLTguNS04LjUtMjItOS40LTMxLjYtMi4xbC0xMDQgODBjLTUuOSA0LjUtOS40IDExLjYtOS40IDE5djU0LjFsLTg1LjYgODUuNmM2LjcgNC4yIDEzIDkuMyAxOC44IDE1LjFzMTAuOSAxMi4yIDE1LjEgMTguOEwzNTMuOSAxOTJINDA4YzcuNSAwIDE0LjUtMy41IDE5LTkuNGw4MC0xMDRjNy40LTkuNiA2LjUtMjMuMS0yLjEtMzEuNkw0NjUgN3pNMTIxLjQgMjgxLjRsLTExMiAxMTJjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDExMi0xMTJjMzAuMi0zMC4yIDMwLjItNzkuMSAwLTEwOS4zcy03OS4xLTMwLjItMTA5LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Nyb2xsVG9yYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNDgwVjMyQzk2IDE0LjMgNzQuNSAwIDQ4IDBTMCAxNC4zIDAgMzJWNDgwYzAgMTcuNyAyMS41IDMyIDQ4IDMyczQ4LTE0LjMgNDgtMzJ6TTUxMiAzMkgxMjhWNDgwSDUxMlYzMnpNNTkyIDBjLTI2LjUgMC00OCAxNC4zLTQ4IDMyVjQ4MGMwIDE3LjcgMjEuNSAzMiA0OCAzMnM0OC0xNC4zIDQ4LTMyVjMyYzAtMTcuNy0yMS41LTMyLTQ4LTMyek0xOTYgMzEzLjdjMC0zLjIgLjktNi40IDIuNS05LjJMMjI2LjcgMjU2bC0yOC4zLTQ4LjVjLTEuNi0yLjgtMi41LTYtMi41LTkuMmMwLTEwLjEgOC4yLTE4LjMgMTguMy0xOC4zSDI3MWwzMS40LTUzLjljMy42LTYuMyAxMC4zLTEwLjEgMTcuNi0xMC4xczEzLjkgMy44IDE3LjYgMTAuMUwzNjkgMTgwaDU2LjdjMTAuMSAwIDE4LjMgOC4yIDE4LjMgMTguM2MwIDMuMi0uOSA2LjQtMi41IDkuMkw0MTMuMyAyNTZsMjguMyA0OC41YzEuNiAyLjggMi41IDYgMi41IDkuMmMwIDEwLjEtOC4yIDE4LjMtMTguMyAxOC4zSDM2OWwtMzEuNCA1My45Yy0zLjYgNi4zLTEwLjMgMTAuMS0xNy42IDEwLjFzLTEzLjktMy44LTE3LjYtMTAuMUwyNzEgMzMySDIxNC4zYy0xMC4xIDAtMTguMy04LjItMTguMy0xOC4zem0xMjQgNTQuN0wzNDEuMiAzMzJIMjk4LjhMMzIwIDM2OC40ek0yNTQuNSAyNTZsMzAuMyA1Mmg3MC40bDMwLjMtNTItMzAuMy01MkgyODQuOGwtMzAuMyA1MnptMTQ0LjkgMjMuOEwzODMgMzA4aDMyLjhsLTE2LjQtMjguMnpNNDE1LjggMjA0SDM4M2wxNi40IDI4LjJMNDE1LjggMjA0ek0zMjAgMTQzLjZMMjk4LjggMTgwaDQyLjRMMzIwIDE0My42ek0yMjQuMiAyMDRsMTYuNCAyOC4yTDI1NyAyMDRIMjI0LjJ6TTI1NyAzMDhsLTE2LjQtMjguMkwyMjQuMiAzMDhIMjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3JvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0OCA5NlY4MGMwLTI2LjUtMjEuNS00OC00OC00OFMwIDUzLjUgMCA4MHpNMTEyIDMyYzEwIDEzLjQgMTYgMzAgMTYgNDhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR2LTUuM2MwLTMyLjQgMjYuMy01OC43IDU4LjctNTguN0g0ODBWMTI4YzAtNTMtNDMtOTYtOTYtOTZIMTEyek00NjQgNDgwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgzMTQuN2MtMTQuNyAwLTI2LjcgMTEuOS0yNi43IDI2LjdWMzg0YzAgNTMtNDMgOTYtOTYgOTZIMzY4aDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBIMTQxLjNDMTI0LjMgMCAxMDggNi43IDk2IDE4LjdMMTguNyA5NkM2LjcgMTA4IDAgMTI0LjMgMCAxNDEuM1Y0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xNjAgODh2NDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWODhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHptODAgMHY0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY4OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0em04MCAwdjQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0Vjg4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQuOSA5NkM2Ny4xIDg0LjQgNzMuNyA3Ni4yIDg2IDcwLjZjMTMuOC02LjIgMzQuOC04LjkgNjEuMi00LjVjOC44IDEuNCAzNi4xIDcuMSA0NC4xIDkuM2MxNyA0LjggMzQuNy01LjEgMzkuNS0yMi4ycy01LjEtMzQuNy0yMi4yLTM5LjVjLTExLjEtMy4xLTQxLTkuMi01MC45LTEwLjhDMTIzLTIuNyA4OC4zLS42IDU5LjcgMTIuM0MyOS45IDI1LjggNy41IDUwLjkgMS42IDg2LjVjLS4xIC41LS4yIDEuMS0uMiAxLjZjLTIuMiAxOS43IC4zIDM3LjkgOC4xIDU0LjFjNy43IDE2LjEgMTkuNCAyOCAzMiAzNi45Yy42IC41IDEuMyAuOSAyIDEuNEMyMi4zIDE5NC4yIDYuNSAyMTUuMSAxLjcgMjQzYy0uMSAuNi0uMiAxLjEtLjIgMS43Yy0yLjMgMTkuMyAuNCAzNy4xIDguNCA1M2M3LjkgMTUuNiAxOS44IDI3IDMyLjMgMzUuNWMyMi40IDE1LjIgNTEuOSAyNCA3NS40IDMxbDAgMCAzLjcgMS4xYzI3LjIgOC4yIDQ2LjkgMTQuNiA1OS40IDIzLjhjNS41IDQgOC4yIDcuNiA5LjUgMTAuOWMxLjMgMy4yIDIuNiA4LjYgLjkgMTguMWMtMS43IDEwLjEtNy43IDE4LTIwLjcgMjMuNWMtMTQgNi0zNS40IDguNS02MiA0LjRjLTEyLjgtMi4xLTM1LjEtOS43LTU0LjEtMTYuMmwwIDBjLTQuMy0xLjUtOC41LTIuOS0xMi4zLTQuMkMyNS4zIDQyMCA3LjIgNDI5LjEgMS42IDQ0NS44czMuNSAzNC45IDIwLjMgNDAuNWMyLjYgLjggNS43IDEuOSA5LjIgMy4xYzE4LjYgNi4zIDQ4LjUgMTYuNiA2Ny4zIDE5LjZsMCAwIC4yIDBjMzQuNSA1LjQgNjguOCAzLjQgOTcuMi04LjdjMjkuNC0xMi42IDUyLjUtMzYuNSA1OC41LTcxLjVjMy4zLTE5LjMgMS45LTM3LjQtNS01My45Yy02LjMtMTUtMTYuNC0yNi40LTI3LjYtMzUuMmMxNi41LTEzLjkgMjguNS0zMy4yIDMyLjYtNTguMmMzLjItMTkuOCAxLjktMzguMy00LjgtNTUuMWMtNi43LTE2LjgtMTcuOC0yOS40LTMwLjItMzljLTIyLjgtMTcuNi01My42LTI3LjQtNzcuNy0zNWwtMS40LS41Yy0yNy40LTguNy00Ny44LTE1LjMtNjEuNS0yNWMtNi4xLTQuNC05LjUtOC41LTExLjQtMTIuNGMtMS44LTMuNy0zLjItOS4zLTIuMy0xOC41em03Ni43IDIwOC41Yy0uMi0uMS0uNC0uMS0uNi0uMmwtMS40LS40Yy0yNy40LTguMi00Ny45LTE0LjUtNjEuNy0yMy44Yy02LjItNC4yLTkuMy03LjktMTEtMTEuM2MtMS41LTMtMi45LTcuNy0yLjEtMTUuN2MxLjktOS43IDcuOS0xNy4zIDIwLjUtMjIuN2MxNC02IDM1LjQtOC41IDYyLjEtNC4zbDE2LjQgMi42YzYuMyAyLjkgMTEuNyA2IDE2LjIgOS41YzUuNSA0LjIgOC40IDguMiAxMCAxMi4yYzEuNiA0IDIuOCAxMC40IDEuMSAyMC45Yy0yLjQgMTQuNy0xMi44IDI2LjQtMzcuMSAzMWwtMTIuNCAyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlZWRsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAzMmMwIDExMy42LTg0LjYgMjA3LjUtMTk0LjIgMjIyYy03LjEtNTMuNC0zMC42LTEwMS42LTY1LjMtMTM5LjNDMjkwLjggNDYuMyAzNjQgMCA0NDggMGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NEg2NGMxMjMuNyAwIDIyNCAxMDAuMyAyMjQgMjI0djMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMjBDMTAwLjMgMzIwIDAgMjE5LjcgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZ2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em0yODAgNzJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em00OCAyNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek02NCAyODhjLTM1LjMgMC02NCAyOC43LTY0IDY0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzNTJjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTI4MCA3MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTU2IDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXBlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTUuNCAxNS41QzMwOS43IDUuOSAyOTkuMiAwIDI4OCAwcy0yMS43IDUuOS0yNy40IDE1LjVsLTk2IDE2MGMtNS45IDkuOS02LjEgMjIuMi0uNCAzMi4yczE2LjMgMTYuMiAyNy44IDE2LjJIMzg0YzExLjUgMCAyMi4yLTYuMiAyNy44LTE2LjJzNS41LTIyLjMtLjQtMzIuMmwtOTYtMTYwek0yODggMzEyVjQ1NmMwIDIyLjEgMTcuOSA0MCA0MCA0MEg0NzJjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMzEyYzAtMjIuMS0xNy45LTQwLTQwLTQwSDMyOGMtMjIuMSAwLTQwIDE3LjktNDAgNDB6TTEyOCA1MTJhMTI4IDEyOCAwIDEgMCAwLTI1NiAxMjggMTI4IDAgMSAwIDAgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZUZyb21TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDIyNEgzMDUuNWMtNDUgMC04MS41IDM2LjUtODEuNSA4MS41YzAgMjIuMyAxMC4zIDM0LjMgMTkuMiA0MC41YzYuOCA0LjcgMTIuOCAxMiAxMi44IDIwLjNjMCA5LjgtOCAxNy44LTE3LjggMTcuOGgtMi41Yy0yLjQgMC00LjgtLjQtNy4xLTEuNEMyMTAuOCAzNzQuOCAxMjggMzMzLjQgMTI4IDI0MGMwLTc5LjUgNjQuNS0xNDQgMTQ0LTE0NGg4MFYzNC43QzM1MiAxNS41IDM2Ny41IDAgMzg2LjcgMGM4LjYgMCAxNi44IDMuMiAyMy4yIDguOUw1NDguMSAxMzMuM2M3LjYgNi44IDExLjkgMTYuNSAxMS45IDI2LjdzLTQuMyAxOS45LTExLjkgMjYuN2wtMTM5IDEyNS4xYy01LjkgNS4zLTEzLjUgOC4yLTIxLjQgOC4ySDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0ek04MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2VjQzMmMwIDguOCA3LjIgMTYgMTYgMTZINDAwYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY0OGMwIDQ0LjItMzUuOCA4MC04MCA4MEg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTEyQzAgNjcuOCAzNS44IDMyIDgwIDMyaDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZU5vZGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAyMjRjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgNCAuMiA4IC43IDExLjlsLTk0LjEgNDdDMTQ1LjQgMTcwLjIgMTIxLjkgMTYwIDk2IDE2MGMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyNS45IDAgNDkuNC0xMC4yIDY2LjYtMjYuOWw5NC4xIDQ3Yy0uNSAzLjktLjcgNy44LS43IDExLjljMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZjLTI1LjkgMC00OS40IDEwLjItNjYuNiAyNi45bC05NC4xLTQ3Yy41LTMuOSAuNy03LjggLjctMTEuOXMtLjItOC0uNy0xMS45bDk0LjEtNDdDMzAyLjYgMjEzLjggMzI2LjEgMjI0IDM1MiAyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNyAzNC44Yy0xMS41IDUuMS0xOSAxNi42LTE5IDI5LjJ2NjRIMTc2Qzc4LjggMTI4IDAgMjA2LjggMCAzMDRDMCA0MTcuMyA4MS41IDQ2Ny45IDEwMC4yIDQ3OC4xYzIuNSAxLjQgNS4zIDEuOSA4LjEgMS45YzEwLjkgMCAxOS43LTguOSAxOS43LTE5LjdjMC03LjUtNC4zLTE0LjQtOS44LTE5LjVDMTA4LjggNDMxLjkgOTYgNDE0LjQgOTYgMzg0YzAtNTMgNDMtOTYgOTYtOTZoOTZ2NjRjMCAxMi42IDcuNCAyNC4xIDE5IDI5LjJzMjUgMyAzNC40LTUuNGwxNjAtMTQ0YzYuNy02LjEgMTAuNi0xNC43IDEwLjYtMjMuOHMtMy44LTE3LjctMTAuNi0yMy44bC0xNjAtMTQ0Yy05LjQtOC41LTIyLjktMTAuNi0zNC40LTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hlZXRQbGFzdGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDIyNFYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJIMzg0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMCAwIDI4LjcgMCA2NFY0NDh6TTE3MS4zIDc1LjNsLTk2IDk2Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDk2LTk2YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnptOTYgMzJsLTE2MCAxNjBjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZsMTYwLTE2MGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6TTM4NCAzODRIMjU2VjUxMkwzODQgMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGVrZWxTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWOTZIMTkyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEgzMnpNMzIwIDQ4MGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYzNTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMTkyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGllbGRDYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjJjLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yYzE2LjcgOCAzNi4xIDggNTIuOCAwQzQ1NC43IDQyMC43IDQ5NS41IDIzOS4yIDQ5NiAxNDBjLjEtMjYuMi0xNi4zLTQ3LjktMzguMy01Ny4yTDI2OS40IDIuOXpNMTYwIDE1NC40YzAtNS44IDQuNy0xMC40IDEwLjQtMTAuNGguMmMzLjQgMCA2LjUgMS42IDguNSA0LjNsNDAgNTMuM2MzIDQgNy44IDYuNCAxMi44IDYuNGg0OGM1IDAgOS44LTIuNCAxMi44LTYuNGw0MC01My4zYzItMi43IDUuMi00LjMgOC41LTQuM2guMmM1LjggMCAxMC40IDQuNyAxMC40IDEwLjRWMjcyYzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2VjE1NC40ek0yMTYgMjg4YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptOTYtMTZhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkRG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OS40IDIuOUMyNjUuMiAxIDI2MC43IDAgMjU2IDBzLTkuMiAxLTEzLjQgMi45TDU0LjMgODIuOGMtMjIgOS4zLTM4LjQgMzEtMzguMyA1Ny4yYy41IDk5LjIgNDEuMyAyODAuNyAyMTMuNiAzNjMuMmMxNi43IDggMzYuMSA4IDUyLjggMEM0NTQuNyA0MjAuNyA0OTUuNSAyMzkuMiA0OTYgMTQwYy4xLTI2LjItMTYuMy00Ny45LTM4LjMtNTcuMkwyNjkuNCAyLjl6TTE2MC45IDI4Ni4yYzQuOCAxLjIgOS45IDEuOCAxNS4xIDEuOGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBoNDQuMmMxMi4xIDAgMjMuMiA2LjggMjguNiAxNy43TDMyMCAxOTJoNjRjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgNDQuMi0zNS44IDgwLTgwIDgwSDI3MnY1MC43YzAgNy4zLTUuOSAxMy4zLTEzLjMgMTMuM2MtMS44IDAtMy42LS40LTUuMi0xLjFsLTk4LjctNDIuM2MtNi42LTIuOC0xMC44LTkuMy0xMC44LTE2LjRjMC0yLjggLjYtNS41IDEuOS04bDE1LTMwek0xNjAgMTYwaDQwIDh2MzIgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTc2YzAtOC44IDcuMi0xNiAxNi0xNnptMTI4IDQ4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZEhhbHZlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGM0LjYgMCA5LjIgMSAxMy40IDIuOUw0NTcuNyA4Mi44YzIyIDkuMyAzOC40IDMxIDM4LjMgNTcuMmMtLjUgOTkuMi00MS4zIDI4MC43LTIxMy42IDM2My4yYy0xNi43IDgtMzYuMSA4LTUyLjggMEM1Ny4zIDQyMC43IDE2LjUgMjM5LjIgMTYgMTQwYy0uMS0yNi4yIDE2LjMtNDcuOSAzOC4zLTU3LjJMMjQyLjcgMi45QzI0Ni44IDEgMjUxLjQgMCAyNTYgMHptMCA2Ni44VjQ0NC44QzM5NCAzNzggNDMxLjEgMjMwLjEgNDMyIDE0MS40TDI1NiA2Ni44bDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjJjLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yYzE2LjcgOCAzNi4xIDggNTIuOCAwQzQ1NC43IDQyMC43IDQ5NS41IDIzOS4yIDQ5NiAxNDBjLjEtMjYuMi0xNi4zLTQ3LjktMzguMy01Ny4yTDI2OS40IDIuOXpNMTQ0IDIyMS4zYzAtMzMuOCAyNy40LTYxLjMgNjEuMy02MS4zYzE2LjIgMCAzMS44IDYuNSA0My4zIDE3LjlsNy40IDcuNCA3LjQtNy40YzExLjUtMTEuNSAyNy4xLTE3LjkgNDMuMy0xNy45YzMzLjggMCA2MS4zIDI3LjQgNjEuMyA2MS4zYzAgMTYuMi02LjUgMzEuOC0xNy45IDQzLjNsLTgyLjcgODIuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTgyLjctODIuN2MtMTEuNS0xMS41LTE3LjktMjcuMS0xNy45LTQzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZFZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OS40IDIuOUMyNjUuMiAxIDI2MC43IDAgMjU2IDBzLTkuMiAxLTEzLjQgMi45TDU0LjMgODIuOGMtMjIgOS4zLTM4LjQgMzEtMzguMyA1Ny4yYy41IDk5LjIgNDEuMyAyODAuNyAyMTMuNiAzNjMuMmMxNi43IDggMzYuMSA4IDUyLjggMEM0NTQuNyA0MjAuNyA0OTUuNSAyMzkuMiA0OTYgMTQwYy4xLTI2LjItMTYuMy00Ny45LTM4LjMtNTcuMkwyNjkuNCAyLjl6TTI1NiAxMTJjOC44IDAgMTYgNy4yIDE2IDE2YzAgMzMgMzkuOSA0OS41IDYzLjIgMjYuMmM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZDMzM0LjUgMjAwLjEgMzUxIDI0MCAzODQgMjQwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy0zMyAwLTQ5LjUgMzkuOS0yNi4yIDYzLjJjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEMzMTEuOSAzMzQuNSAyNzIgMzUxIDI3MiAzODRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZjMC0zMy0zOS45LTQ5LjUtNjMuMi0yNi4yYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42QzE3Ny41IDMxMS45IDE2MSAyNzIgMTI4IDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmMzMyAwIDQ5LjUtMzkuOSAyNi4yLTYzLjJjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEMyMDAuMSAxNzcuNSAyNDAgMTYxIDI0MCAxMjhjMC04LjggNy4yLTE2IDE2LTE2ek0yMzIgMjU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptNzIgMzJhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzQuNiAwIDkuMiAxIDEzLjQgMi45TDQ1Ny43IDgyLjhjMjIgOS4zIDM4LjQgMzEgMzguMyA1Ny4yYy0uNSA5OS4yLTQxLjMgMjgwLjctMjEzLjYgMzYzLjJjLTE2LjcgOC0zNi4xIDgtNTIuOCAwQzU3LjMgNDIwLjcgMTYuNSAyMzkuMiAxNiAxNDBjLS4xLTI2LjIgMTYuMy00Ny45IDM4LjMtNTcuMkwyNDIuNyAyLjlDMjQ2LjggMSAyNTEuNCAwIDI1NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMjQwbDQ0LjQgMTQuOGMyMy4xIDcuNyAyOS41IDM3LjUgMTEuNSA1My45bC0xMDEgOTIuNmMtMTYuMiA5LjQtMzQuNyAxNS4xLTUwLjkgMTUuMWMtMTkuNiAwLTQwLjgtNy43LTU5LjItMjAuM2MtMjIuMS0xNS41LTUxLjYtMTUuNS03My43IDBjLTE3LjEgMTEuOC0zOCAyMC4zLTU5LjIgMjAuM2MtMTYuMiAwLTM0LjctNS43LTUwLjktMTUuMWwtMTAxLTkyLjZjLTE4LTE2LjUtMTEuNi00Ni4yIDExLjUtNTMuOUw5NiAyNDBWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjMyek0xNjAgMjE4LjdsMTA3LjgtMzUuOWMxMy4xLTQuNCAyNy4zLTQuNCA0MC41IDBMNDE2IDIxOC43VjEyOEgxNjB2OTAuN3pNMzA2LjUgNDIxLjlDMzI5IDQzNy40IDM1Ni41IDQ0OCAzODQgNDQ4YzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDUwMS43IDQxNyA1MTIgMzg0IDUxMmMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDQzNy4yIDE2NS4xIDQ0OCAxOTIgNDQ4YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGlydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEuOCAwYzcuOCAwIDE0LjMgNS43IDE2LjcgMTMuMkMyNDAuOCA1MS45IDI3Ny4xIDgwIDMyMCA4MHM3OS4yLTI4LjEgOTEuNS02Ni44QzQxMy45IDUuNyA0MjAuNCAwIDQyOC4yIDBoMTIuNmMyMi41IDAgNDQuMiA3LjkgNjEuNSAyMi4zTDYyOC41IDEyNy40YzYuNiA1LjUgMTAuNyAxMy41IDExLjQgMjIuMXMtMi4xIDE3LjEtNy44IDIzLjZsLTU2IDY0Yy0xMS40IDEzLjEtMzEuMiAxNC42LTQ0LjYgMy41TDQ4MCAxOTcuN1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMjI0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTcuN2wtNTEuNSA0Mi45Yy0xMy4zIDExLjEtMzMuMSA5LjYtNDQuNi0zLjVsLTU2LTY0Yy01LjctNi41LTguNS0xNS03LjgtMjMuNnM0LjgtMTYuNiAxMS40LTIyLjFMMTM3LjcgMjIuM0MxNTUgNy45IDE3Ni43IDAgMTk5LjIgMGgxMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9lUHJpbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwQzM1Mi4zIDAgMjU2IDMyIDI1NiAzMlYxNjBjNDggMCA3NiAxNiAxMDQgMzJzNTYgMzIgMTA0IDMyYzU2LjQgMCAxNzYtMTYgMTc2LTk2UzUxMiAwIDQxNiAwek0xMjggOTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMzJWMzJIMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHpNMjg4IDUxMmM5NiAwIDIyNC00OCAyMjQtMTI4cy0xMTkuNi05Ni0xNzYtOTZjLTQ4IDAtNzYgMTYtMTA0IDMycy01NiAzMi0xMDQgMzJWNDgwczk2LjMgMzIgMTYwIDMyek0wIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg5NlYzNTJINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9wTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNi44IDE5Mkg0NDkuNmMyMC4yLTE5LjggNDcuOS0zMiA3OC40LTMyYzMwLjUgMCA1OC4xIDEyLjIgNzguMyAzMS45YzE4LjktMS42IDMzLjctMTcuNCAzMy43LTM2LjdjMC03LjMtMi4yLTE0LjQtNi4yLTIwLjRMNTU4LjIgMjEuNEM1NDkuMyA4IDUzNC40IDAgNTE4LjMgMEgxMjEuN2MtMTYgMC0zMSA4LTM5LjkgMjEuNEw2LjIgMTM0LjdjLTQgNi4xLTYuMiAxMy4yLTYuMiAyMC40QzAgMTc1LjUgMTYuNSAxOTIgMzYuOCAxOTJ6TTM4NCAyMjRIMzIwVjM4NEgxMjhWMjI0SDY0VjM4NHY4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMzZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzg0IDM1MiAyMjR6bTE0NCAxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTU0LjgtNDNWMjI0SDUxMlYzNzZMMzg0IDI3NS43VjIyNEgzMjB2MS41TDI3Ny4yIDE5Mkg2MDMuMmMyMC4zIDAgMzYuOC0xNi41IDM2LjgtMzYuOGMwLTcuMy0yLjItMTQuNC02LjItMjAuNEw1NTguMiAyMS40QzU0OS4zIDggNTM0LjQgMCA1MTguMyAwSDEyMS43Yy0xNiAwLTMxIDgtMzkuOSAyMS40TDc0LjEgMzIuOCAzOC44IDUuMXpNMzYuOCAxOTJoODVMMjEgMTEyLjUgNi4yIDEzNC43Yy00IDYuMS02LjIgMTMuMi02LjIgMjAuNEMwIDE3NS41IDE2LjUgMTkyIDM2LjggMTkyek0zMjAgMzg0SDEyOFYyMjRINjRWMzg0djgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDMzNmMyNi41IDAgNDgtMjEuNSA0OC00OFYzOTguNWwtNjQtNTAuNFYzODR6TTU0NCA1MTJsLS4zIDBoLjZsLS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYuOCAxOTJINjAzLjJjMjAuMyAwIDM2LjgtMTYuNSAzNi44LTM2LjhjMC03LjMtMi4yLTE0LjQtNi4yLTIwLjRMNTU4LjIgMjEuNEM1NDkuMyA4IDUzNC40IDAgNTE4LjMgMEgxMjEuN2MtMTYgMC0zMSA4LTM5LjkgMjEuNEw2LjIgMTM0LjdjLTQgNi4xLTYuMiAxMy4yLTYuMiAyMC40QzAgMTc1LjUgMTYuNSAxOTIgMzYuOCAxOTJ6TTY0IDIyNFYzODR2ODBjMCAyNi41IDIxLjUgNDggNDggNDhIMzM2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM4NCAyMjRIMzIwVjM4NEgxMjhWMjI0SDY0em00NDggMFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRINTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTMxLjlDNjQgMTEyLjEgODAuMSA5NiA5OS45IDk2YzkuNSAwIDE4LjYgMy44IDI1LjQgMTAuNWwxNi4yIDE2LjJjLTIxIDM4LjktMTcuNCA4Ny41IDEwLjkgMTIzTDE1MSAyNDdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMEwzNDUgMTIxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTEuMyAxLjNjLTM1LjUtMjguMy04NC4yLTMxLjktMTIzLTEwLjlMMTcwLjUgNjEuM0MxNTEuOCA0Mi41IDEyNi40IDMyIDk5LjkgMzJDNDQuNyAzMiAwIDc2LjcgMCAxMzEuOVY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxMzEuOXpNMjU2IDM1MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTY0IDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTAtMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptNjQgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMC0xMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em02NCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0zMi0zMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNocmltcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2czI4LjcgNjQgNjQgNjRoMWMzLjcgODguOSA3NyAxNjAgMTY3IDE2MGg1NlYxMjhIMjY0IDg4LjggNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDY0ek0yMjQgNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDcyVjQwNy44bC02NC4xLTIyLjRjLTEyLjUtNC40LTI2LjIgMi4yLTMwLjYgMTQuN3MyLjIgMjYuMiAxNC43IDMwLjZsNC41IDEuNkMyMzMgNDMzLjkgMjI0IDQ0My45IDIyNCA0NTZ6bTEyOCAyMy4zYzM2LjQtMy4zIDY5LjUtMTcuNiA5Ni4xLTM5LjZsLTg2LjUtMzQuNmMtMyAxLjgtNi4yIDMuMi05LjYgNC4zdjY5Ljl6TTQ3Mi42IDQxNWMyNC42LTMwLjMgMzkuNC02OC45IDM5LjQtMTExYzAtMTIuMy0xLjMtMjQuMy0zLjctMzUuOUwzODIuOCAzNTUuMWMuOCAzLjQgMS4yIDcgMS4yIDEwLjZjMCA0LjYtLjcgOS0xLjkgMTMuMUw0NzIuNiA0MTV6TTMzNiAxMjhIMzIwVjMyMGgxOC4zYzkuOSAwIDE5LjEgMy4yIDI2LjYgOC41bDEzMy41LTkyLjRDNDcxLjggMTcyLjYgNDA5LjEgMTI4IDMzNiAxMjh6TTE2OCAxOTJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2h1ZmZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDMuOCAzNC40YzEyLTUgMjUuNy0yLjIgMzQuOSA2LjlsNjQgNjRjNiA2IDkuNCAxNC4xIDkuNCAyMi42cy0zLjQgMTYuNi05LjQgMjIuNmwtNjQgNjRjLTkuMiA5LjItMjIuOSAxMS45LTM0LjkgNi45cy0xOS44LTE2LjYtMTkuOC0yOS42VjE2MEgzNTJjLTEwLjEgMC0xOS42IDQuNy0yNS42IDEyLjhMMjg0IDIyOS4zIDI0NCAxNzZsMzEuMi00MS42QzI5My4zIDExMC4yIDMyMS44IDk2IDM1MiA5NmgzMlY2NGMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42ek0xNjQgMjgyLjdMMjA0IDMzNmwtMzEuMiA0MS42QzE1NC43IDQwMS44IDEyNi4yIDQxNiA5NiA0MTZIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTZjMTAuMSAwIDE5LjYtNC43IDI1LjYtMTIuOEwxNjQgMjgyLjd6bTI3NC42IDE4OGMtOS4yIDkuMi0yMi45IDExLjktMzQuOSA2LjlzLTE5LjgtMTYuNi0xOS44LTI5LjZWNDE2SDM1MmMtMzAuMiAwLTU4LjctMTQuMi03Ni44LTM4LjRMMTIxLjYgMTcyLjhjLTYtOC4xLTE1LjUtMTIuOC0yNS42LTEyLjhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTZjMzAuMiAwIDU4LjcgMTQuMiA3Ni44IDM4LjRMMzI2LjQgMzM5LjJjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOGgzMlYzMjBjMC0xMi45IDcuOC0yNC42IDE5LjgtMjkuNnMyNS43LTIuMiAzNC45IDYuOWw2NCA2NGM2IDYgOS40IDE0LjEgOS40IDIyLjZzLTMuNCAxNi42LTkuNCAyMi42bC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2h1dHRsZVNwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzMCA0ODBjNDAuNiAwIDgwLjQtMTEgMTE1LjItMzEuOUwzNTIgMzg0bC0yMjQgMCAwIDk2aDJ6TTM1MiAxMjhMMjQ1LjIgNjMuOUMyMTAuNCA0MyAxNzAuNiAzMiAxMzAgMzJoLTJ2OTZsMjI0IDB6TTk2IDEyOGwwLTk2SDgwQzUzLjUgMzIgMzIgNTMuNSAzMiA4MHY0OGg4Yy0yMi4xIDAtNDAgMTcuOS00MCA0MHYxNlYzMjh2MTZjMCAyMi4xIDE3LjkgNDAgNDAgNDBIMzJ2NDhjMCAyNi41IDIxLjUgNDggNDggNDhIOTZsMC05Nmg4YzI2LjIgMCA0OS40LTEyLjYgNjQtMzJINDU2YzY5LjMgMCAxMzUtMjIuNyAxNzkuMi04MS42YzYuNC04LjUgNi40LTIwLjMgMC0yOC44QzU5MSAxODIuNyA1MjUuMyAxNjAgNDU2IDE2MEgxNjhjLTE0LjYtMTkuNC0zNy44LTMyLTY0LTMybC04IDB6TTUxMiAyNDMuNnYyNC45YzAgMTkuNi0xNS45IDM1LjYtMzUuNiAzNS42Yy0yLjUgMC00LjQtMi00LjQtNC40VjIxMi40YzAtMi41IDItNC40IDQuNC00LjRjMTkuNiAwIDM1LjYgMTUuOSAzNS42IDM1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25IYW5naW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRsMzUyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTM1MiAwVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMjhIMzJDMTQuMyAxMjggMCAxMTMuNyAwIDk2UzE0LjMgNjQgMzIgNjRINjRWMzJDNjQgMTQuMyA3OC4zIDAgOTYgMHptOTYgMTYwSDQ0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ0OCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zNTIgMjI0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnpNMTkyIDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyek05NiA0MTZ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2Ny44YzAgMjcuNy0yLjQgNTUuMy03LjEgODIuNWwtODQuNCAyNS4zYy00MC42IDEyLjItNjguNCA0OS42LTY4LjQgOTJ2NzEuOWMwIDQwIDMyLjUgNzIuNSA3Mi41IDcyLjVjMjYgMCA1MC0xMy45IDYyLjktMzYuNWwxMy45LTI0LjNjMjYuOC00NyA0Ni41LTk3LjcgNTguNC0xNTAuNWw5NC40LTI4LjMtMTIuNSAzNy41Yy0zLjMgOS44LTEuNiAyMC41IDQuNCAyOC44czE1LjcgMTMuMyAyNiAxMy4zSDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NjAuNGwxOC01My45YzMuOC0xMS4zIC45LTIzLjgtNy40LTMyLjRzLTIwLjctMTEuOC0zMi4yLTguNEwzMTYuNCAxOTguMWMyLjQtMjAuNyAzLjYtNDEuNCAzLjYtNjIuM1YxMjhjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxMjh6bS05LjIgMTc3bDQ5LTE0LjdjLTEwLjQgMzMuOC0yNC41IDY2LjQtNDIuMSA5Ny4ybC0xMy45IDI0LjNjLTEuNSAyLjYtNC4zIDQuMy03LjQgNC4zYy00LjcgMC04LjUtMy44LTguNS04LjVWMzM1LjZjMC0xNC4xIDkuMy0yNi42IDIyLjgtMzAuN3pNMjQgMzY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDY0LjNjLS4yLTIuOC0uMy01LjYtLjMtOC41VjM2OEgyNHptNTkyIDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDMwNS45Yy02LjcgMTYuMy0xNC4yIDMyLjMtMjIuMyA0OEg2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25zUG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzJINjRDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQ0MS40YzQuMiAwIDguMy0xLjcgMTEuMy00LjdsNDgtNDhjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTQ4LTQ4Yy0zLTMtNy4xLTQuNy0xMS4zLTQuN0gyODhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6TTQ4MCAyNTZjMC0xNy43LTE0LjMtMzItMzItMzJIMjg4VjE5MkgyMjR2MzJINzAuNmMtNC4yIDAtOC4zIDEuNy0xMS4zIDQuN2wtNDggNDhjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42bDQ4IDQ4YzMgMyA3LjEgNC43IDExLjMgNC43SDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyNTZ6TTI4OCA0ODBWMzg0SDIyNHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW1DYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBIMjQyLjdjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMMzY1LjMgOTZjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0QzAgMjguNyAyOC43IDAgNjQgMHpNOTYgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmg2NFYxOTJIOTZ6TTY0IDM1Mmg4MCA5NiA4MFYyODhIMjQwIDE0NCA2NHY2NHpNMzIwIDIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZ2NjRoNjRWMjI0ek0xNjAgMTkydjY0aDY0VjE5MkgxNjB6TTI4OCA0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0SDI1NnY2NGgzMnpNMTYwIDM4NHY2NGg2NFYzODRIMTYwek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJWMzg0SDY0djMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyczE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NlYyODhIMTYwVjI2NGMwLTMwLjktMjUuMS01Ni01Ni01Nkg1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg0OGM0LjQgMCA4IDMuNiA4IDh2MjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMjU2IDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MDBWMjY0YzAtNC40IDMuNi04IDgtOGg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0MDhjLTMwLjkgMC01NiAyNS4xLTU2IDU2djI0SDI4OFY5NnpNNDgwIDQxNlYzODRIMzJ2MzJjMCA1MyA0MyA5NiA5NiA5NkgzODRjNTMgMCA5Ni00MyA5Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2l0ZW1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNjRjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhoLTh2NDBINDY0YzMwLjkgMCA1NiAyNS4xIDU2IDU2djMyaDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNjhjMC0yNi41IDIxLjUtNDggNDgtNDhoOFYyODhjMC00LjQtMy42LTgtOC04SDMxMnY0MGg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDI1NmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzY4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDhWMjgwSDExMmMtNC40IDAtOCAzLjYtOCA4djMyaDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM2OGMwLTI2LjUgMjEuNS00OCA0OC00OGg4VjI4OGMwLTMwLjkgMjUuMS01NiA1Ni01NkgyNjRWMTkyaC04Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t1bGxDcm9zc2JvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCAxMjhjMCA0NC40LTI1LjQgODMuNS02NCAxMDYuNFYyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTc2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMzQuNGMtMzguNi0yMy02NC02Mi4xLTY0LTEwNi40QzgwIDU3LjMgMTQ0LjUgMCAyMjQgMHMxNDQgNTcuMyAxNDQgMTI4ek0xNjggMTc2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTQ0LTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMuNCAyNzMuN2M3LjktMTUuOCAyNy4xLTIyLjIgNDIuOS0xNC4zTDIyNCAzNDguMmwxNzcuNy04OC44YzE1LjgtNy45IDM1LTEuNSA0Mi45IDE0LjNzMS41IDM1LTE0LjMgNDIuOUwyOTUuNiAzODRsMTM0LjggNjcuNGMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zTDIyNCA0MTkuOCA0Ni4zIDUwOC42Yy0xNS44IDcuOS0zNSAxLjUtNDIuOS0xNC4zcy0xLjUtMzUgMTQuMy00Mi45TDE1Mi40IDM4NCAxNy43IDMxNi42QzEuOSAzMDguNy00LjUgMjg5LjUgMy40IDI3My43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa3VsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzk4LjljNTguNS00MS4xIDk2LTEwNC4xIDk2LTE3NC45QzUxMiAxMDAuMyAzOTcuNCAwIDI1NiAwUzAgMTAwLjMgMCAyMjRjMCA3MC43IDM3LjUgMTMzLjggOTYgMTc0LjljMCAuNCAwIC43IDAgMS4xdjY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4VjQ2NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djQ4aDY0VjQ2NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djQ4aDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQwMGMwLS40IDAtLjcgMC0xLjF6TTk2IDI1NmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA5NiAyNTZ6bTI1Ni02NGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4xIDkuMkMxMy4zLTEuMiAyOC40LTMuMSAzOC44IDUuMWw1OTIgNDY0YzEwLjQgOC4yIDEyLjMgMjMuMyA0LjEgMzMuN3MtMjMuMyAxMi4zLTMzLjcgNC4xTDkuMiA0Mi45Qy0xLjIgMzQuNy0zLjEgMTkuNiA1LjEgOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGVpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2VjI1NmMwIDUzIDQzIDk2IDk2IDk2djMyaDY0VjM1MkgzODR2MzJoNjRWMzUyYzUzIDAgOTYtNDMgOTYtOTZWMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDUxMiA0ODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjQxLjNjMCAzMC4yLTI0LjUgNTQuNy01NC43IDU0LjdjLTc1LjUgMC0xNDUuNi0zOC45LTE4NS42LTEwMi45bC00LjMtNi45QzE3NC4yIDY3LjYgMTI1IDM3LjYgNzAuNyAzMi43Yy0yLjItLjUtNC40LS43LTYuNy0uN0g1NSAzMnpNNjQwIDM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU1MmM0OC42IDAgODgtMzkuNCA4OC04OHYtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xpZGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw1NC43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhMNDgwIDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjQ2LjcgMGMtMTIuMy0yOC4zLTQwLjUtNDgtNzMuMy00OHMtNjEgMTkuNy03My4zIDQ4TDMyIDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTEyOCAwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTMyMCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzItODBjLTMyLjggMC02MSAxOS43LTczLjMgNDhMMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI0Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhsNTQuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC01NC43IDBjLTEyLjMtMjguMy00MC41LTQ4LTczLjMtNDh6TTE5MiAxMjhhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em03My4zLTY0QzI1MyAzNS43IDIyNC44IDE2IDE5MiAxNnMtNjEgMTkuNy03My4zIDQ4TDMyIDY0QzE0LjMgNjQgMCA3OC4zIDAgOTZzMTQuMyAzMiAzMiAzMmw4Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhMNDgwIDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwyNjUuMyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21vZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxNDRjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRIMjk5LjNjMjIuNiAxOS45IDUyLjIgMzIgODQuNyAzMnM2Mi4xLTEyLjEgODQuNy0zMkg0OTZjNjEuOSAwIDExMi01MC4xIDExMi0xMTJzLTUwLjEtMTEyLTExMi0xMTJjLTEwLjcgMC0yMSAxLjUtMzAuOCA0LjNDNDQzLjggMjcuNyA0MDEuMSAwIDM1MiAwYy0zMi42IDAtNjIuNCAxMi4yLTg1LjEgMzIuM0MyNDIuMSAxMi4xIDIxMC41IDAgMTc2IDBDOTYuNSAwIDMyIDY0LjUgMzIgMTQ0ek02MTYgMzY4SDI4MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2MTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjR6bS02NCA5Nkg0NDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINTUyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0em0tMTkyIDBIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzYwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0ek0yMjQgMzkyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDIwMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21va2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzJWNDNjMCAzOC4yIDE1LjIgNzQuOCA0Mi4yIDEwMS44bDIxIDIxYzIxIDIxIDMyLjggNDkuNSAzMi44IDc5LjJ2MTFjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjQ1YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlsLTIxLTIxQzQwNS45IDE1MS4xIDM4NCA5OC4xIDM4NCA0M1YzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyek01NzYgMjU2VjI0NWMwLTM4LjItMTUuMi03NC44LTQyLjItMTAxLjhsLTIxLTIxYy0yMS0yMS0zMi44LTQ5LjUtMzIuOC03OS4yVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNDNjMCAxMi43IDUuMSAyNC45IDE0LjEgMzMuOWwyMSAyMWMzOSAzOSA2MC45IDkxLjkgNjAuOSAxNDcuMXYxMWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpNMCA0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY0MTZ6bTIyNCAwdjMySDM4NFY0MTZIMjI0em0yODgtNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjYyLjFsMTUtMTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00OSA0OXY3MC4zbDYxLjQtMzUuOCAxNy43LTY2LjFjMy40LTEyLjggMTYuNi0yMC40IDI5LjQtMTdzMjAuNCAxNi42IDE3IDI5LjRsLTUuMiAxOS4zIDIzLjYtMTMuOGMxNS4zLTguOSAzNC45LTMuNyA0My44IDExLjVzMy44IDM0LjktMTEuNSA0My44bC0yNS4zIDE0LjggMjEuNyA1LjhjMTIuOCAzLjQgMjAuNCAxNi42IDE3IDI5LjRzLTE2LjYgMjAuNC0yOS40IDE3bC02Ny43LTE4LjFMMjg3LjUgMjU2bDYwLjkgMzUuNSA2Ny43LTE4LjFjMTIuOC0zLjQgMjYgNC4yIDI5LjQgMTdzLTQuMiAyNi0xNyAyOS40bC0yMS43IDUuOCAyNS4zIDE0LjhjMTUuMyA4LjkgMjAuNCAyOC41IDExLjUgNDMuOHMtMjguNSAyMC40LTQzLjggMTEuNWwtMjMuNi0xMy44IDUuMiAxOS4zYzMuNCAxMi44LTQuMiAyNi0xNyAyOS40cy0yNi00LjItMjkuNC0xN2wtMTcuNy02Ni4xTDI1NiAzMTEuN3Y3MC4zbDQ5IDQ5YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTE1LTE1VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDkuOWwtMTUgMTVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDktNDlWMzExLjdsLTYxLjQgMzUuOC0xNy43IDY2LjFjLTMuNCAxMi44LTE2LjYgMjAuNC0yOS40IDE3cy0yMC40LTE2LjYtMTctMjkuNGw1LjItMTkuM0w0OC4xIDM5NS42Yy0xNS4zIDguOS0zNC45IDMuNy00My44LTExLjVzLTMuNy0zNC45IDExLjUtNDMuOGwyNS4zLTE0LjgtMjEuNy01LjhjLTEyLjgtMy40LTIwLjQtMTYuNi0xNy0yOS40czE2LjYtMjAuNCAyOS40LTE3bDY3LjcgMTguMUwxNjAuNSAyNTYgOTkuNiAyMjAuNSAzMS45IDIzOC42Yy0xMi44IDMuNC0yNi00LjItMjkuNC0xN3M0LjItMjYgMTctMjkuNGwyMS43LTUuOEwxNS45IDE3MS42Qy42IDE2Mi43LTQuNSAxNDMuMSA0LjQgMTI3LjlzMjguNS0yMC40IDQzLjgtMTEuNWwyMy42IDEzLjgtNS4yLTE5LjNjLTMuNC0xMi44IDQuMi0yNiAxNy0yOS40czI2IDQuMiAyOS40IDE3bDE3LjcgNjYuMUwxOTIgMjAwLjNWMTI5LjlMMTQzIDgxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMTUgMTVWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNub3dtYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQxLjEgMTQwLjZjLTIgMy45LTEuNiA4LjYgMS4yIDEyYzcgOC41IDEyLjkgMTguMSAxNy4yIDI4LjRMNDA4IDE2MC4yVjEyMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djE5LjZsMjIuNS05LjdjMTIuMi01LjIgMjYuMyAuNCAzMS41IDEyLjZzLS40IDI2LjMtMTIuNiAzMS41bC01NiAyNC03My42IDMxLjVjLS41IDkuNS0yLjEgMTguNi00LjggMjcuM2MtMS4yIDMuOC0uMSA4IDIuOCAxMC44QzM5Ni43IDI5Ni45IDQxNiAzMzguMiA0MTYgMzg0YzAgNDQuNy0xOC4zIDg1LTQ3LjggMTE0LjFjLTkuOSA5LjctMjMuNyAxMy45LTM3LjUgMTMuOUgxODEuM2MtMTMuOSAwLTI3LjctNC4yLTM3LjUtMTMuOUMxMTQuMyA0NjkgOTYgNDI4LjcgOTYgMzg0YzAtNDUuOCAxOS4zLTg3LjEgNTAuMS0xMTYuM2MyLjktMi44IDQtNi45IDIuOC0xMC44Yy0yLjctOC43LTQuMy0xNy45LTQuOC0yNy4zTDcwLjUgMTk4LjFsLTU2LTI0QzIuNCAxNjguOC0zLjMgMTU0LjcgMS45IDE0Mi41czE5LjMtMTcuOCAzMS41LTEyLjZMNTYgMTM5LjZWMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NDAuMkwxNTIuNiAxODFjNC4zLTEwLjMgMTAuMS0xOS45IDE3LjItMjguNGMyLjgtMy40IDMuMy04LjEgMS4yLTEyQzE2NCAxMjcuMiAxNjAgMTEyLjEgMTYwIDk2YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZjMCAxNi4xLTQgMzEuMi0xMC45IDQ0LjZ6TTIyNCA5NmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTQ4IDEyOGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tMTYgODBhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0xNiA0OGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwek0yODggOTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0tNDggMjR2My4yYzAgMy4yIC44IDYuMyAyLjMgOWw5IDE2LjljLjkgMS43IDIuNyAyLjggNC43IDIuOHMzLjgtMS4xIDQuNy0yLjhsOS0xNi45YzEuNS0yLjggMi4zLTUuOSAyLjMtOVYxMjBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNub3dwbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC45IDY0bDY4LjYgMTYwSDI1NmwtNjQtNjRWNjRIMjk4Ljl6TTQ0NS4xIDI0Mi43bC04Ny40LTIwNEMzNDcuNiAxNS4zIDMyNC41IDAgMjk4LjkgMEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjE2MEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMjk4LjhDMjYuMiAzMTYuOCAwIDM1NS4zIDAgNDAwYzAgNjEuOSA1MC4xIDExMiAxMTIgMTEySDM2OGM2MS45IDAgMTEyLTUwLjEgMTEyLTExMmMwLTE3LjItMy45LTMzLjUtMTAuOC00OEg1MTJ2NTAuN2MwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2w1NC42IDU0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w1NzYgNDAyLjdWMzIwIDIzNS4yTDYzMyAxNjRjMTEtMTMuOCA4LjgtMzMuOS01LTQ1cy0zMy45LTguOC00NSA1bC01NyA3MS4yYy05LjEgMTEuMy0xNCAyNS40LTE0IDQwVjI4OEg0NDhWMjU2LjdjLjEtMi40LS4yLTQuOC0uNi03LjFzLTEuMi00LjctMi4yLTYuOHpNMzY4IDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDhIMzY4ek0xNDQgNDAwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTIxNiAyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bS01Ni0yNGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwek0yMDAgNDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0zMjAgMjU2YTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek00MTYgMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMCAxNjBjMCAyNy42LTExLjcgNTIuNS0zMC40IDcwLjFDNDIyLjEgMjc1LjcgNDQ4IDMxMC44IDQ0OCAzNTJjMCA1My00MyA5Ni05NiA5NkgxNjBjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTZoODguNGMtMTUuMi0xNy0yNC40LTM5LjQtMjQuNC02NEg5NmMtNTMgMC05NiA0My05NiA5NlY0MTZjMCA1MyA0MyA5NiA5NiA5Nkg0MTZjNTMgMCA5Ni00MyA5Ni05NlYyODhjMC01My00My05Ni05Ni05NnpNMTYwIDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NEgzNTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRIMzIwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ja3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc1LjIgNDc2LjZjLTkuNy0xOC0xNS4yLTM4LjctMTUuMi02MC42YzAtNDAuMyAxOS03OC4yIDUxLjItMTAyLjRsNjQtNDhjOC4xLTYgMTIuOC0xNS41IDEyLjgtMjUuNlY5NkgxMjhWMjQwYzAgMjAuMS05LjUgMzkuMS0yNS42IDUxLjJsLTY0IDQ4QzE0LjIgMzU3LjMgMCAzODUuOCAwIDQxNmMwIDUzIDQzIDk2IDk2IDk2YzIwLjggMCA0MS02LjcgNTcuNi0xOS4ybDIxLjYtMTYuMnpNMTI4IDY0SDI4OFY0OGMwLTE0LjUgMy45LTI4LjIgMTAuNy0zOS45QzI5MSAzIDI4MS45IDAgMjcyIDBIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OFY2NHpNMzIwIDk2VjI0MGMwIDIwLjEtOS41IDM5LjEtMjUuNiA1MS4ybC02NCA0OEMyMDYuMiAzNTcuMyAxOTIgMzg1LjggMTkyIDQxNmMwIDUzIDQzIDk2IDk2IDk2YzIwLjggMCA0MS02LjcgNTcuNi0xOS4ybDExNS4yLTg2LjRDNDkzIDM4Mi4yIDUxMiAzNDQuMyA1MTIgMzA0Vjk2SDMyMHpNNTEyIDY0VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDM2OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWNjRINTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb2xhclBhbmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMi4yIDBDOTEuNyAwIDY1LjUgMjEuNSA1OS41IDUxLjRMOC4zIDMwNy40Qy40IDM0NyAzMC42IDM4NCA3MSAzODRIMjg4djY0SDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjM4NEg1NjljNDAuNCAwIDcwLjctMzYuOSA2Mi44LTc2LjZsLTUxLjItMjU2QzU3NC41IDIxLjUgNTQ4LjMgMCA1MTcuOCAwSDEyMi4yek0yNjAuOSA2NEgzNzkuMWwxMC40IDEwNGgtMTM5TDI2MC45IDY0ek0yMDIuMyAxNjhIMTAxLjRMMTIyLjIgNjRoOTAuNEwyMDIuMyAxNjh6TTkxLjggMjE2SDE5Ny41TDE4Ny4xIDMyMEg3MUw5MS44IDIxNnptMTUzLjkgMEgzOTQuM2wxMC40IDEwNC0xNjkuNCAwIDEwLjQtMTA0em0xOTYuOCAwSDU0OC4yTDU2OSAzMjBoLTExNkw0NDIuNSAyMTZ6bTk2LTQ4SDQzNy43TDQyNy4zIDY0aDkwLjRsMzEuNC02LjNMNTE3LjggNjRsMjAuOCAxMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Mi42IDQ3MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtOS4yLTkuMi0xMS45LTIyLjktNi45LTM0LjlzMTYuNi0xOS44IDI5LjYtMTkuOEgyODhjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOWwtMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Mi42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44SDI4OGMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC0xMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNy40IDQxLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTI4IDEyOGM5LjIgOS4yIDExLjkgMjIuOSA2LjkgMzQuOXMtMTYuNiAxOS44LTI5LjYgMTkuOEgzMmMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0LjlsMTI4LTEyOHptMCA0MjkuM2wtMTI4LTEyOGMtOS4yLTkuMi0xMS45LTIyLjktNi45LTM0LjlzMTYuNi0xOS44IDI5LjYtMTkuOEgyODhjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOWwtMTI4IDEyOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuMSAyMzUuM2MzMy43IDIwLjcgNjIuOSA0OC4xIDg1LjggODAuNWM3IDkuOSAxMy40IDIwLjMgMTkuMSAzMWM1LjctMTAuOCAxMi4xLTIxLjEgMTkuMS0zMWMyMi45LTMyLjQgNTIuMS01OS44IDg1LjgtODAuNUM0MzcuNiAyMDcuOCA0OTAuMSAxOTIgNTQ2IDE5Mmg5LjljMTEuMSAwIDIwLjEgOSAyMC4xIDIwLjFDNTc2IDM2MC4xIDQ1Ni4xIDQ4MCAzMDguMSA0ODBIMjg4IDI2Ny45QzExOS45IDQ4MCAwIDM2MC4xIDAgMjEyLjFDMCAyMDEgOSAxOTIgMjAuMSAxOTJIMzBjNTUuOSAwIDEwOC40IDE1LjggMTUzLjEgNDMuM3pNMzAxLjUgMzcuNmMxNS43IDE2LjkgNjEuMSA3MS44IDg0LjQgMTY0LjZjLTM4IDIxLjYtNzEuNCA1MC44LTk3LjkgODUuNmMtMjYuNS0zNC44LTU5LjktNjMuOS05Ny45LTg1LjZjMjMuMi05Mi44IDY4LjYtMTQ3LjcgODQuNC0xNjQuNkMyNzggMzMuOSAyODIuOSAzMiAyODggMzJzMTAgMS45IDEzLjUgNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGFnaGV0dGlNb25zdGVyRmx5aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA2NGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAwYzAgMTYuMi02IDMxLjEtMTYgNDIuM2wxNS42IDMxLjJjMTguNy02IDM5LjktOS41IDY0LjQtOS41czQ1LjggMy41IDY0LjQgOS41TDQwMCAxMDYuM0MzOTAgOTUuMSAzODQgODAuMiAzODQgNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGMtMS43IDAtMy40LS4xLTUuMS0uMkw0MjcuOCAxNThjMjEuMSAxMy42IDM3LjcgMzAuMiA1MS40IDQ2LjRjNy4xIDguMyAxMy41IDE2LjYgMTkuMyAyNGwxLjQgMS44YzYuMyA4LjEgMTEuNiAxNC44IDE2LjcgMjAuNEM1MjcuMyAyNjIuMyA1MzIuNyAyNjQgNTM2IDI2NGMyLjUgMCA0LjMtLjYgNy4xLTMuM2MzLjctMy41IDcuMS04LjggMTIuNS0xNy40bC42LS45YzQuNi03LjQgMTEtMTcuNiAxOS40LTI1LjdjOS43LTkuMyAyMi45LTE2LjcgNDAuNC0xNi43YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0yLjUgMC00LjMgLjYtNy4xIDMuM2MtMy43IDMuNS03LjEgOC44LTEyLjUgMTcuNGwtLjYgLjljLTQuNiA3LjQtMTEgMTcuNi0xOS40IDI1LjdjLTkuNyA5LjMtMjIuOSAxNi43LTQwLjQgMTYuN2MtMTguNSAwLTMyLjktOC41LTQ0LjMtMTguNmMtMy4xIDQtNi42IDguMy0xMC41IDEyLjdjMS40IDQuMyAyLjggOC41IDQgMTIuNWMuOSAzIDEuOCA1LjggMi42IDguNmMzIDkuOCA1LjUgMTguMiA4LjYgMjUuOWMzLjkgOS44IDcuNCAxNS40IDEwLjggMTguNWMyLjYgMi40IDUuOSA0LjMgMTIuOCA0LjNjOC43IDAgMTYuOS00LjIgMzMuNy0xMy4yYzE1LTggMzUuNy0xOC44IDYyLjMtMTguOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMTMuNCAwLTI0LjcgNS4yLTM5LjcgMTMuMmMtMSAuNi0yLjEgMS4xLTMuMiAxLjdDNTU5LjkgNDE0IDU0MS40IDQyNCA1MjAgNDI0Yy0xOC40IDAtMzMuNi02LjEtNDUuNS0xNy4yYy0xMS4xLTEwLjMtMTcuOS0yMy43LTIyLjctMzZjLTMuNi05LTYuNy0xOS4xLTkuNS0yOC41Yy0xNi40IDEyLjMtMzYuMSAyMy42LTU4LjkgMzEuM2MzLjYgMTAuOCA4LjQgMjMuNSAxNC40IDM2LjJjNy41IDE1LjkgMTYuMiAzMC40IDI1LjggNDAuNUM0MzMgNDYwLjUgNDQxLjIgNDY0IDQ0OCA0NjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTI1LjIgMC00NS0xMy41LTU5LjUtMjguOGMtMTQuNS0xNS40LTI1LjctMzQuOS0zNC4yLTUzYy04LTE3LTE0LjEtMzMuOC0xOC4zLTQ2LjljLTUuMiAuNC0xMC42IC42LTE2IC42cy0xMC44LS4yLTE2LS42Yy00LjIgMTMtMTAuMyAyOS45LTE4LjMgNDYuOWMtOC41IDE4LjEtMTkuOCAzNy42LTM0LjIgNTNDMjM3IDQ5OC41IDIxNy4yIDUxMiAxOTIgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzYuOCAwIDE1LTMuNSAyNC41LTEzLjdjOS41LTEwLjEgMTguMy0yNC42IDI1LjgtNDAuNWM1LjktMTIuNiAxMC43LTI1LjQgMTQuNC0zNi4yYy0yMi44LTcuNy00Mi41LTE5LTU4LjktMzEuM2MtMi45IDkuNC02IDE5LjUtOS41IDI4LjVjLTQuOCAxMi4yLTExLjYgMjUuNi0yMi43IDM2QzE1My42IDQxNy45IDEzOC40IDQyNCAxMjAgNDI0Yy0yMS40IDAtMzkuOS0xMC01My4xLTE3LjFsMCAwYy0xLjEtLjYtMi4yLTEuMi0zLjItMS43Yy0xNS04LTI2LjMtMTMuMi0zOS43LTEzLjJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRjMjYuNiAwIDQ3LjMgMTAuOCA2Mi4zIDE4LjhjMTYuOCA5IDI1IDEzLjIgMzMuNyAxMy4yYzYuOCAwIDEwLjItMS45IDEyLjgtNC4zYzMuNC0zLjIgNy04LjggMTAuOC0xOC41YzMtNy43IDUuNi0xNi4xIDguNi0yNS45Yy44LTIuNyAxLjctNS42IDIuNi04LjZjMS4yLTQgMi42LTguMiA0LTEyLjVjLTMuOS00LjUtNy40LTguOC0xMC41LTEyLjdDMTM2LjkgMzAzLjUgMTIyLjUgMzEyIDEwNCAzMTJjLTE3LjUgMC0zMC43LTcuNC00MC40LTE2LjdjLTguNC04LjEtMTQuOC0xOC4zLTE5LjQtMjUuN2wtLjYtLjljLTUuNC04LjYtOC44LTEzLjktMTIuNS0xNy40Yy0yLjgtMi43LTQuNi0zLjMtNy4xLTMuM2MtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMxNy41IDAgMzAuNyA3LjQgNDAuNCAxNi43YzguNCA4LjEgMTQuOCAxOC4zIDE5LjQgMjUuN2wuNiAuOWM1LjQgOC42IDguOCAxMy45IDEyLjUgMTcuNGMyLjggMi43IDQuNiAzLjMgNy4xIDMuM2MzLjMgMCA4LjctMS43IDE5LjQtMTMuNGM1LjEtNS42IDEwLjQtMTIuMyAxNi43LTIwLjRsMS40LTEuOGM1LjgtNy40IDEyLjItMTUuNyAxOS4zLTI0YzEzLjgtMTYuMiAzMC4zLTMyLjggNTEuNC00Ni40bC0xNS4xLTMwLjJjLTEuNyAuMS0zLjQgLjItNS4xIC4yYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR6bTIwOCAwYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwZWxsQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDBDOTkuMSAwIDg3LjQgNy44IDgyLjUgMTkuN2wtNjYuNyAxNjAtMTMuMyAzMmMtNi44IDE2LjMgLjkgMzUgMTcuMiA0MS44czM1LS45IDQxLjgtMTcuMkw2Ni43IDIyNGg5MC43bDUuMSAxMi4zYzYuOCAxNi4zIDI1LjUgMjQgNDEuOCAxNy4yczI0LTI1LjUgMTcuMi00MS44bC0xMy4zLTMyLTY2LjctMTYwQzEzNi42IDcuOCAxMjQuOSAwIDExMiAwem0xOC43IDE2MEg5My4zTDExMiAxMTUuMiAxMzAuNyAxNjB6TTI1NiAzMnY5NiA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MGM0NC4yIDAgODAtMzUuOCA4MC04MGMwLTIzLjEtOS44LTQzLjgtMjUuNC01OC40YzYtMTEuMiA5LjQtMjQgOS40LTM3LjZjMC00NC4yLTM1LjgtODAtODAtODBIMjg4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnptOTYgNjRIMzIwVjY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2em0tMzIgNjRoMzIgMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzIwVjE2MHpNNTY2LjYgMzEwLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzUyIDQzNC43bC03My40LTczLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwaWRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTguNCAzMi42YzQuOC0xMi40LTEuNC0yNi4zLTEzLjgtMzFzLTI2LjMgMS40LTMxIDEzLjhMODEuMSAxMDBjLTcuOSAyMC43LTMgNDQuMSAxMi43IDU5LjdsNTcuNCA1Ny40TDcwLjggMTkwLjNjLTIuNC0uOC00LjMtMi43LTUuMS01LjFMNDYuOCAxMjguNEM0Mi42IDExNS44IDI5IDEwOSAxNi40IDExMy4yUy0zIDEzMSAxLjIgMTQzLjZsMTguOSA1Ni44YzUuNiAxNi43IDE4LjcgMjkuOCAzNS40IDM1LjRMMTE2LjEgMjU2IDU1LjYgMjc2LjJjLTE2LjcgNS42LTI5LjggMTguNy0zNS40IDM1LjRMMS4yIDM2OC40Qy0zIDM4MSAzLjggMzk0LjYgMTYuNCAzOTguOHMyNi4yLTIuNiAzMC40LTE1LjJsMTguOS01Ni44Yy44LTIuNCAyLjctNC4zIDUuMS01LjFsODAuNC0yNi44TDkzLjcgMzUyLjNDNzguMSAzNjggNzMuMSAzOTEuNCA4MS4xIDQxMmwzMi41IDg0LjZjNC44IDEyLjQgMTguNiAxOC41IDMxIDEzLjhzMTguNS0xOC42IDEzLjgtMzFsLTMyLjUtODQuNmMtMS4xLTMtLjQtNi4zIDEuOC04LjVMMTYwIDM1My45YzEgNTIuMSA0My42IDk0LjEgOTYgOTQuMXM5NS00MS45IDk2LTk0LjFsMzIuMyAzMi4zYzIuMiAyLjIgMi45IDUuNiAxLjggOC41bC0zMi41IDg0LjZjLTQuOCAxMi40IDEuNCAyNi4zIDEzLjggMzFzMjYuMy0xLjQgMzEtMTMuOEw0MzAuOSA0MTJjNy45LTIwLjcgMy00NC4xLTEyLjctNTkuN2wtNTcuNC01Ny40IDgwLjQgMjYuOGMyLjQgLjggNC4zIDIuNyA1LjEgNS4xbDE4LjkgNTYuOGM0LjIgMTIuNiAxNy44IDE5LjQgMzAuNCAxNS4yczE5LjQtMTcuOCAxNS4yLTMwLjRsLTE4LjktNTYuOGMtNS42LTE2LjctMTguNy0yOS44LTM1LjQtMzUuNEwzOTUuOSAyNTZsNjAuNS0yMC4yYzE2LjctNS42IDI5LjgtMTguNyAzNS40LTM1LjRsMTguOS01Ni44YzQuMi0xMi42LTIuNi0yNi4yLTE1LjItMzAuNHMtMjYuMiAyLjYtMzAuNCAxNS4ybC0xOC45IDU2LjhjLS44IDIuNC0yLjcgNC4zLTUuMSA1LjFsLTgwLjQgMjYuOCA1Ny40LTU3LjRjMTUuNi0xNS42IDIwLjYtMzkgMTIuNy01OS43TDM5OC40IDE1LjRDMzkzLjYgMyAzNzkuOC0zLjIgMzY3LjQgMS42cy0xOC41IDE4LjYtMTMuOCAzMWwzMi41IDg0LjZjMS4xIDMgLjQgNi4zLTEuOCA4LjVMMzM2IDE3NC4xVjE2MGMwLTMxLjgtMTguNi01OS4zLTQ1LjUtNzIuMmMtOS4xLTQuNC0xOC41IDMuMy0xOC41IDEzLjRWMTEyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjEwMS4yYzAtMTAuMS05LjQtMTcuNy0xOC41LTEzLjRDMTk0LjYgMTAwLjcgMTc2IDEyOC4yIDE3NiAxNjB2MTQuMWwtNDguMy00OC4zYy0yLjItMi4yLTIuOS01LjYtMS44LTguNWwzMi41LTg0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwaW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTAgNDE2YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQ4IDMwNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ2NC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNDIuOSA0MzdBNDggNDggMCAxIDAgNzUgMzY5LjEgNDggNDggMCAxIDAgMTQyLjkgNDM3em0wLTI5NC4yQTQ4IDQ4IDAgMSAwIDc1IDc1YTQ4IDQ4IDAgMSAwIDY3LjkgNjcuOXpNMzY5LjEgNDM3QTQ4IDQ4IDAgMSAwIDQzNyAzNjkuMSA0OCA0OCAwIDEgMCAzNjkuMSA0Mzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwbG90Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4LjUgNjIuM2wyOC4xLTM2LjlDMjQ4LjggOS40IDI2Ny44IDAgMjg4IDBjMjguNSAwIDUzLjYgMTguNyA2MS44IDQ2bDE3LjggNTkuNGMxMC4zIDM0LjQgMzYuMSA2MiA2OS44IDc0LjZsMzkuOCAxNC45YzIwLjkgNy45IDM0LjggMjcuOSAzNC44IDUwLjJjMCAxNi45LTcuOSAzMi44LTIxLjUgNDIuOWwtNjcuMyA1MC41Yy0yNC4zIDE4LjItMzcuMiA0Ny45LTMzLjggNzguMWwyLjUgMjIuN2M0LjMgMzguNy0yNiA3Mi42LTY1IDcyLjZjLTE0LjggMC0yOS4zLTUuMS00MC44LTE0LjNsLTU1LjQtNDQuM2MtNC41LTMuNi05LjMtNi43LTE0LjUtOS4yYy0xNS44LTcuOS0zMy43LTEwLjQtNTEtNy4zTDgyLjQgNDUxLjlDNDcuOCA0NTguMiAxNiA0MzEuNiAxNiAzOTYuNWMwLTEzLjIgNC43LTI2IDEzLjEtMzYuMmwxMS4yLTEzLjRjMTQuNi0xNy40IDIyLjYtMzkuNCAyMi42LTYyLjFjMC0xOC44LTUuNS0zNy4yLTE1LjgtNTNMOC44IDE3My41QzMuMSAxNjQuNyAwIDE1NC40IDAgMTQzLjljMC0zMy40IDMwLjEtNTguOCA2My01My4ybDUxLjMgOC43YzM1LjkgNi4xIDcyLjItOC4yIDk0LjItMzcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Bvb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ1LjggMjIwLjljLTE0LjUtMTcuNi0yMS44LTM5LjItMjEuOC02MC44QzIyNCA4MCAzMjAgMCA0MTYgMGM1MyAwIDk2IDQzIDk2IDk2YzAgOTYtODAgMTkyLTE2MC4yIDE5MmMtMjEuNiAwLTQzLjItNy4zLTYwLjgtMjEuOEw1NC42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyNDUuOCAyMjAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ByYXlDYW5TcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMnY5NkgyMjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4QzExMC4zIDAgOTYgMTQuMyA5NiAzMnptMCAxMjhjLTUzIDAtOTYgNDMtOTYgOTZWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDI3MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZjMC01My00My05Ni05Ni05Nkg5NnptNjQgOTZhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6TTM4NCA0OGMwLTEuNC0xLTMtMi4yLTMuNkwzNTIgMzIgMzM5LjYgMi4yQzMzOSAxIDMzNy40IDAgMzM2IDBzLTMgMS0zLjYgMi4yTDMyMCAzMiAyOTAuMiA0NC40QzI4OSA0NSAyODggNDYuNiAyODggNDhjMCAxLjQgMSAzIDIuMiAzLjZMMzIwIDY0bDEyLjQgMjkuOEMzMzMgOTUgMzM0LjYgOTYgMzM2IDk2czMtMSAzLjYtMi4yTDM1MiA2NGwyOS44LTEyLjRDMzgzIDUxIDM4NCA0OS40IDM4NCA0OHptNzYuNCA0NS44QzQ2MSA5NSA0NjIuNiA5NiA0NjQgOTZzMy0xIDMuNi0yLjJMNDgwIDY0bDI5LjgtMTIuNEM1MTEgNTEgNTEyIDQ5LjQgNTEyIDQ4YzAtMS40LTEtMy0yLjItMy42TDQ4MCAzMiA0NjcuNiAyLjJDNDY3IDEgNDY1LjQgMCA0NjQgMHMtMyAxLTMuNiAyLjJMNDQ4IDMyIDQxOC4yIDQ0LjRDNDE3IDQ1IDQxNiA0Ni42IDQxNiA0OGMwIDEuNCAxIDMgMi4yIDMuNkw0NDggNjRsMTIuNCAyOS44em03LjIgMTAwLjRjLS42LTEuMi0yLjItMi4yLTMuNi0yLjJzLTMgMS0zLjYgMi4yTDQ0OCAyMjRsLTI5LjggMTIuNGMtMS4yIC42LTIuMiAyLjItMi4yIDMuNmMwIDEuNCAxIDMgMi4yIDMuNkw0NDggMjU2bDEyLjQgMjkuOGMuNiAxLjIgMi4yIDIuMiAzLjYgMi4yczMtMSAzLjYtMi4yTDQ4MCAyNTZsMjkuOC0xMi40YzEuMi0uNiAyLjItMi4yIDIuMi0zLjZjMC0xLjQtMS0zLTIuMi0zLjZMNDgwIDIyNGwtMTIuNC0yOS44ek00NDggMTQ0YzAtMS40LTEtMy0yLjItMy42TDQxNiAxMjggNDAzLjYgOTguMkM0MDMgOTcgNDAxLjQgOTYgNDAwIDk2cy0zIDEtMy42IDIuMkwzODQgMTI4bC0yOS44IDEyLjRjLTEuMiAuNi0yLjIgMi4yLTIuMiAzLjZjMCAxLjQgMSAzIDIuMiAzLjZMMzg0IDE2MGwxMi40IDI5LjhjLjYgMS4yIDIuMiAyLjIgMy42IDIuMnMzLTEgMy42LTIuMkw0MTYgMTYwbDI5LjgtMTIuNGMxLjItLjYgMi4yLTIuMiAyLjItMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcHJheUNhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5Nkg5NlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAyNTZjMC01MyA0My05NiA5Ni05NkgyMjRjNTMgMCA5NiA0MyA5NiA5NlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjI1NnptMjQwIDgwQTgwIDgwIDAgMSAwIDgwIDMzNmE4MCA4MCAwIDEgMCAxNjAgMHpNMjU2IDY0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTM4NCAzMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTMyIDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNNDQ4IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0zODQgMTI4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQXJyb3dVcFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NHpNMTYwIDE0NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg5NC4xTDExOSAzMjdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwxMzUtMTM1VjMyOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE2OGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUNhcmV0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgNDgwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDB6TTIyNCAzNTJjLTYuNyAwLTEzLTIuOC0xNy42LTcuN2wtMTA0LTExMmMtNi41LTctOC4yLTE3LjItNC40LTI1LjlzMTIuNS0xNC40IDIyLTE0LjRsMjA4IDBjOS41IDAgMTguMiA1LjcgMjIgMTQuNHMyLjEgMTguOS00LjQgMjUuOWwtMTA0IDExMmMtNC41IDQuOS0xMC45IDcuNy0xNy42IDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQ2FyZXRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZ6TTEyOCAyNTZjMC02LjcgMi44LTEzIDcuNy0xNy42bDExMi0xMDRjNy02LjUgMTcuMi04LjIgMjUuOS00LjRzMTQuNCAxMi41IDE0LjQgMjJsMCAyMDhjMCA5LjUtNS43IDE4LjItMTQuNCAyMnMtMTguOSAyLjEtMjUuOS00LjRsLTExMi0xMDRjLTQuOS00LjUtNy43LTEwLjktNy43LTE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUNhcmV0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTMyMCAyNTZjMCA2LjctMi44IDEzLTcuNyAxNy42bC0xMTIgMTA0Yy03IDYuNS0xNy4yIDguMi0yNS45IDQuNHMtMTQuNC0xMi41LTE0LjQtMjJsMC0yMDhjMC05LjUgNS43LTE4LjIgMTQuNC0yMnMxOC45LTIuMSAyNS45IDQuNGwxMTIgMTA0YzQuOSA0LjUgNy43IDEwLjkgNy43IDE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUNhcmV0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgMTYwYzYuNyAwIDEzIDIuOCAxNy42IDcuN2wxMDQgMTEyYzYuNSA3IDguMiAxNy4yIDQuNCAyNS45cy0xMi41IDE0LjQtMjIgMTQuNEgxMjBjLTkuNSAwLTE4LjItNS43LTIyLTE0LjRzLTIuMS0xOC45IDQuNC0yNS45bDEwNC0xMTJjNC41LTQuOSAxMC45LTcuNyAxNy42LTcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0zMzcgMjA5TDIwOSAzMzdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDMwMyAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVFbnZlbG9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIxOCAyNzEuN0w2NC4yIDE3Mi40QzY2IDE1Ni40IDc5LjUgMTQ0IDk2IDE0NEgzNTJjMTYuNSAwIDMwIDEyLjQgMzEuOCAyOC40TDIzMCAyNzEuN2MtMS44IDEuMi0zLjkgMS44LTYgMS44cy00LjItLjYtNi0xLjh6bTI5LjQgMjYuOUwzODQgMjEwLjRWMzM2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMTAuNGwxMzYuNiA4OC4yYzcgNC41IDE1LjEgNi45IDIzLjQgNi45czE2LjQtMi40IDIzLjQtNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMEg1MTJWNTEySDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTMzNiAxNTJWMjU2IDM2MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyODBIMTYwbDAgODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0yMDhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY4MEgyODhWMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptODggMjAwSDI5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxNTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZU5maSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em03NS43IDY0LjZDNjguOCAxNjIuNSA2NCAxNjguOCA2NCAxNzZWMzM2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjMzLjhsNjYuMyAxMTAuNWMzLjcgNi4yIDExLjEgOS4xIDE4IDcuMnMxMS43LTguMiAxMS43LTE1LjRWMTc2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjI3OC4yTDkzLjcgMTY3LjhjLTMuNy02LjItMTEuMS05LjEtMTgtNy4yek0yMjQgMTc2djY0IDk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjU2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDI1NlYxOTJoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMjQwYy04LjggMC0xNiA3LjItMTYgMTZ6bTE2MCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjMzNmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGFya2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTE5MiAyNTZoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkydjY0em00OCA2NEgxOTJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjg4IDE2OGMwLTIyLjEgMTcuOS00MCA0MC00MGg3MmM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMzI1LjggMTM5LjdsMTQuNCAxNC40YzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42bC0yMS40IDIxLjQtNzEtNzEgMjEuNC0yMS40YzE1LjYtMTUuNiA0MC45LTE1LjYgNTYuNiAwek0xMTkuOSAyODlMMjI1LjEgMTgzLjhsNzEgNzFMMTkwLjkgMzU5LjljLTQuMSA0LjEtOS4yIDctMTQuOSA4LjRsLTYwLjEgMTVjLTUuNSAxLjQtMTEuMi0uMi0xNS4yLTQuMnMtNS42LTkuNy00LjItMTUuMmwxNS02MC4xYzEuNC01LjYgNC4zLTEwLjggOC40LTE0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBlcnNvbkNvbmZpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptOTYgMTEyYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTgwIDEwNGMwLTMwLjkgMjUuMS01NiA1Ni01NnM1NiAyNS4xIDU2IDU2VjM1MC4xYzAgMzYuNC0yOS41IDY1LjktNjUuOSA2NS45Yy0xNy41IDAtMzQuMy02LjktNDYuNi0xOS4zTDE4NC44IDM0MmwtMjguMSA1Ni4zYy03LjkgMTUuOC0yNy4xIDIyLjItNDIuOSAxNC4zcy0yMi4yLTI3LjEtMTQuMy00Mi45bDQ4LTk2YzQuNi05LjIgMTMuMy0xNS42IDIzLjUtMTcuM3MyMC41IDEuNyAyNy44IDlMMjQwIDMwNi43VjI0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGhvbmVGbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NHptLTkwLjcgOTYuN2MtOS43LTIuNi0xOS45IDIuMy0yMy43IDExLjZsLTIwIDQ4Yy0zLjQgOC4yLTEgMTcuNiA1LjggMjMuMkwyODAgMjMxLjdjLTE2LjYgMzUuMi00NS4xIDYzLjctODAuMyA4MC4zbC0yMC4yLTI0LjdjLTUuNi02LjgtMTUtOS4yLTIzLjItNS44bC00OCAyMGMtOS4zIDMuOS0xNC4yIDE0LTExLjYgMjMuN2wxMiA0NEMxMTEuMSAzNzggMTE5IDM4NCAxMjggMzg0YzEyMy43IDAgMjI0LTEwMC4zIDIyNC0yMjRjMC05LTYtMTYuOS0xNC43LTE5LjNsLTQ0LTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTkwLjcgOTYuN2M5LjctMi42IDE5LjkgMi4zIDIzLjcgMTEuNmwyMCA0OGMzLjQgOC4yIDEgMTcuNi01LjggMjMuMkwxNjggMjMxLjdjMTYuNiAzNS4yIDQ1LjEgNjMuNyA4MC4zIDgwLjNsMjAuMi0yNC43YzUuNi02LjggMTUtOS4yIDIzLjItNS44bDQ4IDIwYzkuMyAzLjkgMTQuMiAxNCAxMS42IDIzLjdsLTEyIDQ0QzMzNi45IDM3OCAzMjkgMzg0IDMyMCAzODRDMTk2LjMgMzg0IDk2IDI4My43IDk2IDE2MGMwLTkgNi0xNi45IDE0LjctMTkuM2w0NC0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIwMCAzNDRWMjgwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg2NFYxNjhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY2NGg2NGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNDh2NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBvbGxIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwek0yNTYgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTY0IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxOTIgMHpNMTkyIDM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQb2xsVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCAxOTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem02NC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjB6TTMyMCAyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVSb290VmFyaWFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgyLjYgNzguMWM4LTI3LjMgMzMtNDYuMSA2MS40LTQ2LjFINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM0NEwyMzguNyA0NTdjLTMuNiAxMi4zLTE0LjEgMjEuMi0yNi44IDIyLjhzLTI1LjEtNC42LTMxLjUtMTUuNkw3Ny42IDI4OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg3Ny42YzIyLjggMCA0My44IDEyLjEgNTUuMyAzMS44bDY1LjIgMTExLjhMMjgyLjYgNzguMXpNMzkzLjQgMjMzLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBMNDgwIDI3NC43bDQxLjQtNDEuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zTDUyNS4zIDMyMGw0MS40IDQxLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMNDgwIDM2NS4zbC00MS40IDQxLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDQzNC43IDMyMGwtNDEuNC00MS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUnNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNOTYgMTM2YzAtMTMuMyAxMC43LTI0IDI0LTI0YzEzNyAwIDI0OCAxMTEgMjQ4IDI0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTExMC41LTg5LjUtMjAwLTIwMC0yMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0YzgzLjkgMCAxNTIgNjguMSAxNTIgMTUyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNTcuNC00Ni42LTEwNC0xMDQtMTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMCAxMjBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlU2hhcmVOb2RlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTM4NCAxNjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTE1LjQgMC0yOS41LTUuNC00MC42LTE0LjVMMTk0LjEgMjU2bDg1LjMgNDYuNWMxMS05LjEgMjUuMi0xNC41IDQwLjYtMTQuNWMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NGMwLTIuNSAuMS00LjkgLjQtNy4zTDE3NC41IDMwMGMtMTEuNyAxMi4zLTI4LjIgMjAtNDYuNSAyMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NGMxOC4zIDAgMzQuOCA3LjcgNDYuNSAyMGw4MS45LTQ0LjdjLS4zLTIuNC0uNC00LjktLjQtNy4zYzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVVwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0ek0zMjAgMzEzLjRWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgxNjYuNmMtMTIuNSAwLTIyLjYgMTAuMS0yMi42IDIyLjZjMCA2IDIuNCAxMS44IDYuNiAxNkwxODQgMjMybC02Ni4zIDY2LjNDMTE0IDMwMiAxMTIgMzA2LjkgMTEyIDMxMnMyIDEwIDUuNyAxMy43bDM2LjcgMzYuN2MzLjYgMy42IDguNSA1LjcgMTMuNyA1LjdzMTAtMiAxMy43LTUuN0wyNDggMjk2bDMzLjQgMzMuNGM0LjIgNC4yIDEwIDYuNiAxNiA2LjZjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjIzLjggOTMuN2MxMy4zIDAgMjQgMTAuNyAyNCAyNGMwIDI5LjMgMzUuNCA0My45IDU2LjEgMjMuMmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjljLTIwLjcgMjAuNy02IDU2LjEgMjMuMiA1Ni4xYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0yOS4zIDAtNDMuOSAzNS40LTIzLjIgNTYuMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwYy0yMC43LTIwLjctNTYuMS02LTU2LjEgMjMuMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTI5LjMtMzUuNC00My45LTU2LjEtMjMuMmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWMyMC43LTIwLjcgNi01Ni4xLTIzLjItNTYuMWMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyOS4zIDAgNDMuOS0zNS40IDIzLjItNTYuMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwYzIwLjcgMjAuNyA1Ni4xIDYgNTYuMS0yMy4yYzAtMTMuMyAxMC43LTI0IDI0LTI0ek0xOTIgMjU2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptODggMzJhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em03OSAxNDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFmZlNuYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMi42IDQzLjJsLS4xIDQuOEgyODhjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZIMjQ4VjE2MGg0MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyNDggMjIwbC00LjUgMTQ0SDI1NmM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NkgyNDBWMzg0aDE2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDIxM2wtMy4xIDk5LjVMMjA4LjUgNDk1bDAgMWMtLjMgOC45LTcuNiAxNi0xNi41IDE2cy0xNi4yLTcuMS0xNi41LTE2bDAtMS0xLTMxSDEzNmMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MGgzNmwtMS0zMkgxNTJjLTUzIDAtOTYtNDMtOTYtOTZjMC00Ny42IDM0LjYtODcuMSA4MC05NC43VjI1NmMwIDguOCA3LjIgMTYgMTYgMTZoMTYuNUwxNjQgMTI4SDEzNiAxMjIuNmMtOSAxOC45LTI4LjMgMzItNTAuNiAzMkg1NmMtMzAuOSAwLTU2LTI1LjEtNTYtNTZTMjUuMSA0OCA1NiA0OGg4IDggODkuNWwtLjEtNC44TDE2MSAzMmMwLS43IDAtMS4zIDAtMS45Yy41LTE2LjYgMTQuMS0zMCAzMS0zMHMzMC41IDEzLjQgMzEgMzBjMCAuNiAwIDEuMyAwIDEuOWwtLjQgMTEuMnpNNjQgMTEyYTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhaXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDQ4djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyMHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTZWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2VjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NlY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDIwMS44YzAtMTcuNCA5LjItMzMuMiAxOS45LTQ3QzM0NC41IDEzOC41IDM1MiAxMTguMSAzNTIgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyMi4xIDcuNSA0Mi41IDIwLjEgNTguOGMxMC43IDEzLjggMTkuOSAyOS42IDE5LjkgNDdjMCAyOS45LTI0LjMgNTQuMi01NC4yIDU0LjJIMTEyQzUwLjEgMjU2IDAgMzA2LjEgMCAzNjhjMCAyMC45IDEzLjQgMzguNyAzMiA0NS4zVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDEzLjNjMTguNi02LjYgMzItMjQuNCAzMi00NS4zYzAtNjEuOS01MC4xLTExMi0xMTItMTEySDM2Ni4yYy0yOS45IDAtNTQuMi0yNC4zLTU0LjItNTQuMnpNNDE2IDQxNnYzMkg5NlY0MTZINDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFwbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyOTkuM1YzMDQgNDMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDUxMiA0NDggNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDQ4VjM2OEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjE5LjRMMzMuOCAyMTRDMTQuMiAyMTAuNSAwIDE5My41IDAgMTczLjdjMC04LjkgMi45LTE3LjUgOC4yLTI0LjZsMzUuNi00Ny41Qzc2LjcgNTcuOCAxMjguMiAzMiAxODIuOSAzMmMyNyAwIDUzLjYgNi4zIDc3LjggMTguNEw1ODYuOSAyMTMuNUM2MTkuNSAyMjkuNyA2NDAgMjYzIDY0MCAyOTkuM3pNNDQ4IDMwNFYyODhMMTI4IDIzMC45VjMwNEg0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJBbmRDcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBjMzMgMCA2NC42IDYuMyA5My42IDE3LjdjNy40IDIuOSAxMS41IDEwLjcgOS44IDE4LjRzLTguOCAxMy0xNi43IDEyLjRjLTQuOC0uMy05LjctLjUtMTQuNi0uNWMtMTE0LjkgMC0yMDggOTMuMS0yMDggMjA4czkzLjEgMjA4IDIwOCAyMDhjNC45IDAgOS44LS4yIDE0LjYtLjVjNy45LS41IDE1IDQuNyAxNi43IDEyLjRzLTIuNCAxNS41LTkuOCAxOC40QzMyMC42IDUwNS43IDI4OSA1MTIgMjU2IDUxMkMxMTQuNiA1MTIgMCAzOTcuNCAwIDI1NnpNMzc1LjQgMTM3LjRjMy41LTcuMSAxMy43LTcuMSAxNy4yIDBsMzEuNSA2My44YzEuNCAyLjggNC4xIDQuOCA3LjIgNS4zbDcwLjQgMTAuMmM3LjkgMS4xIDExIDEwLjggNS4zIDE2LjRsLTUwLjkgNDkuNmMtMi4zIDIuMi0zLjMgNS40LTIuOCA4LjVsMTIgNzAuMWMxLjMgNy44LTYuOSAxMy44LTEzLjkgMTAuMWwtNjMtMzMuMWMtMi44LTEuNS02LjEtMS41LTguOSAwbC02MyAzMy4xYy03IDMuNy0xNS4zLTIuMy0xMy45LTEwLjFsMTItNzAuMWMuNS0zLjEtLjUtNi4zLTIuOC04LjVMMjYxIDIzMy4xYy01LjctNS42LTIuNi0xNS4yIDUuMy0xNi40bDcwLjQtMTAuMmMzLjEtLjUgNS44LTIuNCA3LjItNS4zbDMxLjUtNjMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckhhbGZTdHJva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDM3Ni40bC4xLS4xIDI2LjQgMTQuMSA4NS4yIDQ1LjUtMTYuNS05Ny42LTQuOC0yOC43IDIwLjctMjAuNSA3MC4xLTY5LjMtOTYuMS0xNC4yLTI5LjMtNC4zLTEyLjktMjYuNkwyODguMSA4Ni45bC0uMSAuM1YzNzYuNHptMTc1LjEgOTguM2MyIDEyLTMgMjQuMi0xMi45IDMxLjNzLTIzIDgtMzMuOCAyLjNMMjg4LjEgNDM5LjggMTU5LjggNTA4LjNDMTQ5IDUxNCAxMzUuOSA1MTMuMSAxMjYgNTA2cy0xNC45LTE5LjMtMTIuOS0zMS4zTDEzNy44IDMyOSAzMy42IDIyNS45Yy04LjYtOC41LTExLjctMjEuMi03LjktMzIuN3MxMy43LTE5LjkgMjUuNy0yMS43TDE5NSAxNTAuMyAyNTkuNCAxOGM1LjQtMTEgMTYuNS0xOCAyOC44LTE4czIzLjQgNyAyOC44IDE4bDY0LjMgMTMyLjMgMTQzLjYgMjEuMmMxMiAxLjggMjIgMTAuMiAyNS43IDIxLjdzLjcgMjQuMi03LjkgMzIuN0w0MzguNSAzMjlsMjQuNiAxNDUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjLTEyLjIgLjEtMjMuMyA3LTI4LjYgMThMMTk1IDE1MC4zIDUxLjQgMTcxLjVjLTEyIDEuOC0yMiAxMC4yLTI1LjcgMjEuN3MtLjcgMjQuMiA3LjkgMzIuN0wxMzcuOCAzMjkgMTEzLjIgNDc0LjdjLTIgMTIgMyAyNC4yIDEyLjkgMzEuM3MyMyA4IDMzLjggMi4zTDI4OCA0MzkuOFYwek00MjkuOSA1MTJjMS4xIC4xIDIuMSAuMSAzLjIgMGgtMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyT2ZEYXZpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDQuMiAzMDkuNUwzODMuMSAzNDRoNDIuM2wtMjEuMS0zNC41ek0zNzEuNCAyNTZsLTU0LTg4SDE5NC42bC01NCA4OCA1NCA4OEgzMTcuNGw1NC04OHptNjUuNyAwbDUzLjQgODdjMy42IDUuOSA1LjUgMTIuNyA1LjUgMTkuNmMwIDIwLjctMTYuOCAzNy40LTM3LjQgMzcuNEgzNDguN2wtNTYuMiA5MS41QzI4NC44IDUwNC4zIDI3MC45IDUxMiAyNTYgNTEycy0yOC44LTcuNy0zNi42LTIwLjVMMTYzLjMgNDAwSDUzLjRDMzIuOCA0MDAgMTYgMzgzLjIgMTYgMzYyLjZjMC02LjkgMS45LTEzLjcgNS41LTE5LjZsNTMuNC04N0wyMS41IDE2OWMtMy42LTUuOS01LjUtMTIuNy01LjUtMTkuNkMxNiAxMjguOCAzMi44IDExMiA1My40IDExMkgxNjMuM2w1Ni4yLTkxLjVDMjI3LjIgNy43IDI0MS4xIDAgMjU2IDBzMjguOCA3LjcgMzYuNiAyMC41TDM0OC43IDExMkg0NTguNmMyMC43IDAgMzcuNCAxNi44IDM3LjQgMzcuNGMwIDYuOS0xLjkgMTMuNy01LjUgMTkuNmwtNTMuNCA4N3ptLTU0LTg4bDIxLjEgMzQuNUw0MjUuNCAxNjhIMzgzLjF6TTI4MyAxMTJMMjU2IDY4bC0yNyA0NGg1NHpNMTI4LjkgMTY4SDg2LjZsMjEuMSAzNC41TDEyOC45IDE2OHpNMTA3LjggMzA5LjVMODYuNiAzNDRoNDIuM2wtMjEuMS0zNC41ek0yMjkgNDAwbDI3IDQ0IDI3LTQ0SDIyOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Rhck9mTGlmZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMzJjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTcyLjlsMTIyLTcwLjRjMTUuMy04LjggMzQuOS0zLjYgNDMuNyAxMS43bDE2IDI3LjdjOC44IDE1LjMgMy42IDM0LjktMTEuNyA0My43TDM1MiAyNTZsMTIyIDcwLjRjMTUuMyA4LjggMjAuNSAyOC40IDExLjcgNDMuN2wtMTYgMjcuN2MtOC44IDE1LjMtMjguNCAyMC42LTQzLjcgMTEuN0wzMDQgMzM5LjFWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDI0MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzM5LjFMODYgNDA5LjZjLTE1LjMgOC44LTM0LjkgMy42LTQzLjctMTEuN2wtMTYtMjcuN2MtOC44LTE1LjMtMy42LTM0LjkgMTEuNy00My43TDE2MCAyNTYgMzggMTg1LjZjLTE1LjMtOC44LTIwLjUtMjguNC0xMS43LTQzLjdsMTYtMjcuN0M1MS4xIDk4LjggNzAuNyA5My42IDg2IDEwMi40bDEyMiA3MC40VjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNi45IDE4QzMxMS42IDcgMzAwLjQgMCAyODguMSAwcy0yMy40IDctMjguOCAxOEwxOTUgMTUwLjMgNTEuNCAxNzEuNWMtMTIgMS44LTIyIDEwLjItMjUuNyAyMS43cy0uNyAyNC4yIDcuOSAzMi43TDEzNy44IDMyOSAxMTMuMiA0NzQuN2MtMiAxMiAzIDI0LjIgMTIuOSAzMS4zczIzIDggMzMuOCAyLjNsMTI4LjMtNjguNSAxMjguMyA2OC41YzEwLjggNS43IDIzLjkgNC45IDMzLjgtMi4zczE0LjktMTkuMyAxMi45LTMxLjNMNDM4LjUgMzI5IDU0Mi43IDIyNS45YzguNi04LjUgMTEuNy0yMS4yIDcuOS0zMi43cy0xMy43LTE5LjktMjUuNy0yMS43TDM4MS4yIDE1MC4zIDMxNi45IDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVybGluZ1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDE2MC40YzAtMzUuNSAyOC44LTY0LjQgNjQuNC02NC40YzYuOSAwIDEzLjggMS4xIDIwLjQgMy4zbDgxLjIgMjcuMWMxNi44IDUuNiAzNC45LTMuNSA0MC41LTIwLjJzLTMuNS0zNC45LTIwLjItNDAuNUwyMTcgMzguNmMtMTMuMS00LjQtMjYuOC02LjYtNDAuNi02LjZDMTA1LjUgMzIgNDggODkuNSA0OCAxNjAuNFYyMjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDh2NDQuNWMwIDE3LjQtNC43IDM0LjUtMTMuNyA0OS40TDQuNiA0MzEuNWMtNS45IDkuOS02LjEgMjIuMi0uNCAzMi4yUzIwLjUgNDgwIDMyIDQ4MEgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODguNWwuNy0xLjFDMTA0LjEgMzkwIDExMiAzNjEuNSAxMTIgMzMyLjVWMjg4SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWMTYwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0ZXRob3Njb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Mi40IDIxLjljNS42IDE2LjgtMy41IDM0LjktMjAuMiA0MC41TDk2IDcxLjFWMTkyYzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZWNzEuMWwtMjYuMS04LjdjLTE2LjgtNS42LTI1LjgtMjMuNy0yMC4yLTQwLjVzMjMuNy0yNS44IDQwLjUtMjAuMmwyNi4xIDguN0MzMzQuNCAxOS4xIDM1MiA0My41IDM1MiA3MS4xVjE5MmMwIDc3LjItNTQuNiAxNDEuNi0xMjcuMyAxNTYuN0MyMzEgNDA0LjYgMjc4LjQgNDQ4IDMzNiA0NDhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJWMjY1LjNjLTI4LjMtMTIuMy00OC00MC41LTQ4LTczLjNjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDMyLjgtMTkuNyA2MS00OCA3My4zVjMzNmMwIDk3LjItNzguOCAxNzYtMTc2IDE3NmMtOTIuOSAwLTE2OC45LTcxLjktMTc1LjUtMTYzLjFDODcuMiAzMzQuMiAzMiAyNjkuNiAzMiAxOTJWNzEuMWMwLTI3LjUgMTcuNi01MiA0My44LTYwLjdsMjYuMS04LjdjMTYuOC01LjYgMzQuOSAzLjUgNDAuNSAyMC4yek00ODAgMjI0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3B3YXRjaDIwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDE2Vjk4LjRDOTIuMyAxMTMuOCAxNiAyMDAgMTYgMzA0YzAgMTE0LjkgOTMuMSAyMDggMjA4IDIwOHMyMDgtOTMuMSAyMDgtMjA4YzAtNDEuOC0xMi4zLTgwLjctMzMuNS0xMTMuMmwyNC4xLTI0LjFjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzU1LjcgMTQzYy0yOC4xLTIzLTYyLjItMzguOC05OS43LTQ0LjZWNjRoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTc2ek0yODggMjA0YzI4LjcgMCA1MiAyMy4zIDUyIDUydjk2YzAgMjguNy0yMy4zIDUyLTUyIDUycy01Mi0yMy4zLTUyLTUyVjI1NmMwLTI4LjcgMjMuMy01MiA1Mi01MnptLTEyIDUydjk2YzAgNi42IDUuNCAxMiAxMiAxMnMxMi01LjQgMTItMTJWMjU2YzAtNi42LTUuNC0xMi0xMi0xMnMtMTIgNS40LTEyIDEyek0xNTkuNSAyNDRjLTUuNCAwLTEwLjIgMy41LTExLjkgOC42bC0uNiAxLjdjLTMuNSAxMC41LTE0LjggMTYuMS0yNS4zIDEyLjZzLTE2LjEtMTQuOC0xMi42LTI1LjNsLjYtMS43YzcuMi0yMS41IDI3LjItMzUuOSA0OS44LTM1LjljMjkgMCA1Mi41IDIzLjUgNTIuNSA1Mi41djIuMmMwIDEzLjQtNC45IDI2LjQtMTMuOCAzNi40bC0zOSA0My45Yy02LjIgNy0xMCAxNS43LTEwLjkgMjQuOUgxOTJjMTEgMCAyMCA5IDIwIDIwcy05IDIwLTIwIDIwSDEyOGMtMTEgMC0yMC05LTIwLTIwVjM2OC4zYzAtMjAuNiA3LjUtNDAuNCAyMS4yLTU1LjhsMzktNDMuOWMyLjQtMi43IDMuNy02LjIgMy43LTkuOHYtMi4yYzAtNi45LTUuNi0xMi41LTEyLjUtMTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcHdhdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDE2Vjk4LjRDOTIuMyAxMTMuOCAxNiAyMDAgMTYgMzA0YzAgMTE0LjkgOTMuMSAyMDggMjA4IDIwOHMyMDgtOTMuMSAyMDgtMjA4YzAtNDEuOC0xMi4zLTgwLjctMzMuNS0xMTMuMmwyNC4xLTI0LjFjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzU1LjcgMTQzYy0yOC4xLTIzLTYyLjItMzguOC05OS43LTQ0LjZWNjRoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjI0IDE3NnptNzIgMTkyVjMyMGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYxOTJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcmVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC04Ni44LTY4VjM4NCAyNTIuNmMtNCAxLTggMS44LTEyLjMgMi4zbC0uMSAwYy01LjMgLjctMTAuNyAxLjEtMTYuMiAxLjFjLTEyLjQgMC0yNC4zLTEuOS0zNS40LTUuM1YzNTAuOUwzMDEuMiAyMTAuN2M3LTQuNCAxMy4zLTkuNyAxOC44LTE1LjdjMTUuOSAxNy42IDM5LjEgMjkgNjUuMiAyOWMyNi4yIDAgNDkuMy0xMS40IDY1LjItMjljMTYgMTcuNiAzOS4xIDI5IDY1LjIgMjljNC4xIDAgOC4xLS4zIDEyLjEtLjhjNTUuNS03LjQgODEuOC03Mi41IDUyLjEtMTE5LjRMNTIyLjMgMTMuMUM1MTcuMiA1IDUwOC4xIDAgNDk4LjQgMEgxNDEuNmMtOS43IDAtMTguOCA1LTIzLjkgMTMuMWwtMjIuNyAzNkwzOC44IDUuMXpNNTE0LjkgNTAxLjdMMzY1LjUgMzg0SDE2MFYyNTAuNmMtMTEuMiAzLjUtMjMuMiA1LjQtMzUuNiA1LjRjLTUuNSAwLTExLS40LTE2LjMtMS4xbC0uMSAwYy00LjEtLjYtOC4xLTEuMy0xMi0yLjNWMzg0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ4MGMxMi45IDAgMjQuOC0zLjggMzQuOS0xMC4zek0xNTUuMyAyMTguNEw0OC45IDEzNC41Yy02LjEgNDAuNiAxOS41IDgyLjggNjMuMyA4OC43YzQgLjUgOC4xIC44IDEyLjEgLjhjMTEgMCAyMS40LTIgMzEtNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDcuNiAxMDMuOEw0OTAuMyAxMy4xQzQ4NS4yIDUgNDc2LjEgMCA0NjYuNCAwSDEwOS42Qzk5LjkgMCA5MC44IDUgODUuNyAxMy4xTDI4LjMgMTAzLjhjLTI5LjYgNDYuOC0zLjQgMTExLjkgNTEuOSAxMTkuNGM0IC41IDguMSAuOCAxMi4xIC44YzI2LjEgMCA0OS4zLTExLjQgNjUuMi0yOWMxNS45IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzI2LjEgMCA0OS4zLTExLjQgNjUuMi0yOWMxNS45IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzI2LjIgMCA0OS4zLTExLjQgNjUuMi0yOWMxNiAxNy42IDM5LjEgMjkgNjUuMiAyOWM0LjEgMCA4LjEtLjMgMTIuMS0uOGM1NS41LTcuNCA4MS44LTcyLjUgNTIuMS0xMTkuNHpNNDk5LjcgMjU0LjlsLS4xIDBjLTUuMyAuNy0xMC43IDEuMS0xNi4yIDEuMWMtMTIuNCAwLTI0LjMtMS45LTM1LjQtNS4zVjM4NEgxMjhWMjUwLjZjLTExLjIgMy41LTIzLjIgNS40LTM1LjYgNS40Yy01LjUgMC0xMS0uNC0xNi4zLTEuMWwtLjEgMGMtNC4xLS42LTguMS0xLjMtMTItMi4zVjM4NHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzg0IDI1Mi42Yy00IDEtOCAxLjgtMTIuMyAyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmVldFZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0QTY0IDY0IDAgMSAwIDE5MiA2NGE2NCA2NCAwIDEgMCAxMjggMHptLTk2IDk2Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxLjhsMTEuMSA5OS41YzEuOCAxNi4yIDE1LjUgMjguNSAzMS44IDI4LjVoMzguN2MxNi4zIDAgMzAtMTIuMyAzMS44LTI4LjVMMzE4LjIgMzA0SDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjI0ek0xMzIuMyAzOTQuMmMxMy0yLjQgMjEuNy0xNC45IDE5LjMtMjcuOXMtMTQuOS0yMS43LTI3LjktMTkuM2MtMzIuNCA1LjktNjAuOSAxNC4yLTgyIDI0LjhjLTEwLjUgNS4zLTIwLjMgMTEuNy0yNy44IDE5LjZDNi40IDM5OS41IDAgNDEwLjUgMCA0MjRjMCAyMS40IDE1LjUgMzYuMSAyOS4xIDQ1YzE0LjcgOS42IDM0LjMgMTcuMyA1Ni40IDIzLjRDMTMwLjIgNTA0LjcgMTkwLjQgNTEyIDI1NiA1MTJzMTI1LjgtNy4zIDE3MC40LTE5LjZjMjIuMS02LjEgNDEuOC0xMy44IDU2LjQtMjMuNGMxMy43LTguOSAyOS4xLTIzLjYgMjkuMS00NWMwLTEzLjUtNi40LTI0LjUtMTQtMzIuNmMtNy41LTcuOS0xNy4zLTE0LjMtMjcuOC0xOS42Yy0yMS0xMC42LTQ5LjUtMTguOS04Mi0yNC44Yy0xMy0yLjQtMjUuNSA2LjMtMjcuOSAxOS4zczYuMyAyNS41IDE5LjMgMjcuOWMzMC4yIDUuNSA1My43IDEyLjggNjkgMjAuNWMzLjIgMS42IDUuOCAzLjEgNy45IDQuNWMzLjYgMi40IDMuNiA3LjIgMCA5LjZjLTguOCA1LjctMjMuMSAxMS44LTQzIDE3LjNDMzc0LjMgNDU3IDMxOC41IDQ2NCAyNTYgNDY0cy0xMTguMy03LTE1Ny43LTE3LjljLTE5LjktNS41LTM0LjItMTEuNi00My0xNy4zYy0zLjYtMi40LTMuNi03LjIgMC05LjZjMi4xLTEuNCA0LjgtMi45IDcuOS00LjVjMTUuMy03LjcgMzguOC0xNC45IDY5LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmlrZXRocm91Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYxLjMgMTQ0YzMuMi0xNy4yIDE0LTMwLjEgMzMuNy0zOC42YzIxLjEtOSA1MS44LTEyLjMgODguNi02LjVjMTEuOSAxLjkgNDguOCA5LjEgNjAuMSAxMmMxNy4xIDQuNSAzNC42LTUuNiAzOS4yLTIyLjdzLTUuNi0zNC42LTIyLjctMzkuMmMtMTQuMy0zLjgtNTMuNi0xMS40LTY2LjYtMTMuNGMtNDQuNy03LTg4LjMtNC4yLTEyMy43IDEwLjljLTM2LjUgMTUuNi02NC40IDQ0LjgtNzEuOCA4Ny4zYy0uMSAuNi0uMiAxLjEtLjIgMS43Yy0yLjggMjMuOSAuNSA0NS42IDEwLjEgNjQuNmM0LjUgOSAxMC4yIDE2LjkgMTYuNyAyMy45SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNzAuMWMtLjEgMC0uMy0uMS0uNC0uMWwtMS4xLS4zYy0zNi0xMC44LTY1LjItMTkuNi04NS4yLTMzLjFjLTkuMy02LjMtMTUtMTIuNi0xOC4yLTE5LjFjLTMuMS02LjEtNS4yLTE0LjYtMy44LTI3LjR6TTM0OC45IDMzNy4yYzIuNyA2LjUgNC40IDE1LjggMS45IDMwLjFjLTMgMTcuNi0xMy44IDMwLjgtMzMuOSAzOS40Yy0yMS4xIDktNTEuNyAxMi4zLTg4LjUgNi41Yy0xOC0yLjktNDkuMS0xMy41LTc0LjQtMjIuMWMtNS42LTEuOS0xMS0zLjctMTUuOS01LjRjLTE2LjgtNS42LTM0LjkgMy41LTQwLjUgMjAuM3MzLjUgMzQuOSAyMC4zIDQwLjVjMy42IDEuMiA3LjkgMi43IDEyLjcgNC4zbDAgMCAwIDBjMjQuOSA4LjUgNjMuNiAyMS43IDg3LjYgMjUuNmwwIDAgLjIgMGM0NC43IDcgODguMyA0LjIgMTIzLjctMTAuOWMzNi41LTE1LjYgNjQuNC00NC44IDcxLjgtODcuM2MzLjYtMjEgMi43LTQwLjQtMy4xLTU4LjFIMzM1LjFjNyA1LjYgMTEuNCAxMS4yIDEzLjkgMTcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Ryb29wd2FmZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0zMTIuNiA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgOTcuNiAyMjIuMSA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDMzLjkgMzMuOS00NS4zIDQ1LjMtNTYuNi01Ni42Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDU2LjYgNTYuNi00NS4zIDQ1LjNMODYuMyAxOTkuNGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNkw5Ny42IDI1NiA2My43IDI4OS45Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsMzMuOS0zMy45IDQ1LjMgNDUuMy01Ni42IDU2LjZjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw1Ni42LTU2LjYgNDUuMyA0NS4zLTMzLjkgMzMuOWMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwTDI1NiA0MTQuNGwzMy45IDMzLjljNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC0zMy45LTMzLjkgNDUuMy00NS4zIDU2LjYgNTYuNmM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU2LjYtNTYuNiA0NS4zLTQ1LjMgMzMuOSAzMy45YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0MTQuNCAyNTZsMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTMzLjkgMzMuOS00NS4zLTQ1LjMgNTYuNi01Ni42YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTU2LjYgNTYuNi00NS4zLTQ1LjMgMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42ek0xNDIuOSAyNTZsNDUuMy00NS4zTDIzMy40IDI1NmwtNDUuMyA0NS4zTDE0Mi45IDI1NnptNjcuOSA2Ny45TDI1NiAyNzguNmw0NS4zIDQ1LjNMMjU2IDM2OS4xbC00NS4zLTQ1LjN6TTI3OC42IDI1Nmw0NS4zLTQ1LjNMMzY5LjEgMjU2bC00NS4zIDQ1LjNMMjc4LjYgMjU2em0yMi42LTY3LjlMMjU2IDIzMy40bC00NS4zLTQ1LjNMMjU2IDE0Mi45bDQ1LjMgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Vic2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0QzE0LjMgNjQgMCA3OC4zIDAgOTZzMTQuMyAzMiAzMiAzMkg0Ny4zbDg5LjYgMTI4TDQ3LjMgMzg0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0YzEwLjQgMCAyMC4yLTUuMSAyNi4yLTEzLjZMMTc2IDMxMS44bDg1LjggMTIyLjZjNiA4LjYgMTUuOCAxMy42IDI2LjIgMTMuNmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMDQuN0wyMTUuMSAyNTZsODkuNi0xMjhIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OGMtMTAuNCAwLTIwLjIgNS4xLTI2LjIgMTMuNkwxNzYgMjAwLjIgOTAuMiA3Ny42Qzg0LjIgNjkuMSA3NC40IDY0IDY0IDY0SDMyek00ODAgMzIwYzAtMTEuMS01LjctMjEuNC0xNS4yLTI3LjJzLTIxLjItNi40LTMxLjEtMS40bC0zMiAxNmMtMTUuOCA3LjktMjIuMiAyNy4xLTE0LjMgNDIuOUMzOTMgMzYxLjUgNDA0LjMgMzY4IDQxNiAzNjh2ODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzIgMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdWl0Y2FzZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZ2MzJWNDgwSDM4NFYxMjggOTYgNTZjMC0zMC45LTI1LjEtNTYtNTYtNTZIMTg0Yy0zMC45IDAtNTYgMjUuMS01NiA1NnpNOTYgOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg5NlY5NnpNNDE2IDQ4MGgzMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRINDE2VjQ4MHpNMjI0IDIwOGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjg4djQ4YzAgOC44LTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNlYzMjBIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmg0OFYyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1aXRjYXNlUm9sbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNTZjMC00LjQgMy42LTggOC04aDgwYzQuNCAwIDggMy42IDggOHY3MkgxNDRWNTZ6bTE3NiA3MkgyODhWNTZjMC0zMC45LTI1LjEtNTYtNTYtNTZIMTUyQzEyMS4xIDAgOTYgMjUuMSA5NiA1NnY3Mkg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJIMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xMTIgMjI0SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgMTI4SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1aXRjYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA1NlY5NkgzMzZWNTZjMC00LjQtMy42LTgtOC04SDE4NGMtNC40IDAtOCAzLjYtOCA4ek0xMjggOTZWNTZjMC0zMC45IDI1LjEtNTYgNTYtNTZIMzI4YzMwLjkgMCA1NiAyNS4xIDU2IDU2Vjk2djMyVjQ4MEgxMjhWMTI4IDk2ek02NCA5Nkg5NlY0ODBINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MGMwLTM1LjMgMjguNy02NCA2NC02NHpNNDQ4IDQ4MEg0MTZWOTZoMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdW5QbGFudFdpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBjLTYuMyAwLTEyIDMuNy0xNC42IDkuNUwxMjAuNiA2NC45IDYzLjkgNDMuMmMtNS45LTIuMy0xMi42LS44LTE3IDMuNnMtNS45IDExLjEtMy42IDE3bDIxLjcgNTYuN0w5LjUgMTQ1LjRDMy43IDE0OCAwIDE1My43IDAgMTYwczMuNyAxMiA5LjUgMTQuNmw1NS40IDI0LjhMNDMuMiAyNTYuMWMtMi4zIDUuOS0uOCAxMi42IDMuNiAxN3MxMS4xIDUuOSAxNyAzLjZsNTYuNy0yMS43IDI0LjggNTUuNGMyLjYgNS44IDguMyA5LjUgMTQuNiA5LjVzMTItMy43IDE0LjYtOS41bDI0LjgtNTUuNCA1Ni43IDIxLjdjNS45IDIuMyAxMi42IC44IDE3LTMuNnM1LjktMTEuMSAzLjYtMTdsLTIxLjctNTYuNyA1NS40LTI0LjhjNS44LTIuNiA5LjUtOC4zIDkuNS0xNC42cy0zLjctMTItOS41LTE0LjZsLTU1LjQtMjQuOCAyMS43LTU2LjdjMi4zLTUuOSAuOC0xMi42LTMuNi0xN3MtMTEuMS01LjktMTctMy42TDE5OS40IDY0LjkgMTc0LjYgOS41QzE3MiAzLjcgMTY2LjMgMCAxNjAgMHptMCA5NmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptMzIgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMzEyIDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NTMuNGMtMTQuOCA3LjctMjQgMjMuMS0yNCA0NC42YzAgMTYuOCAxNiA0NCAzNy40IDY3LjJjNS44IDYuMiAxNS41IDYuMiAyMS4yIDBDNjI0IDMxOCA2NDAgMjkwLjcgNjQwIDI3NGMwLTIxLjUtOS4yLTM3LTI0LTQ0LjZWMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwdjIyLjdjLTkuOC00LjMtMjAuNi02LjctMzItNi43Yy00NC4yIDAtODAgMzUuOC04MCA4MHYyMS40Yy0xNC44IDcuNy0yNCAyMy4xLTI0IDQ0LjZjMCAxNi44IDE2IDQ0IDM3LjQgNjcuMmM1LjggNi4yIDE1LjUgNi4yIDIxLjIgMEM0MDAgMzgyIDQxNiAzNTQuNyA0MTYgMzM4YzAtMjEuNS05LjItMzctMjQtNDQuNlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY4VjQ0OEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINTA0VjI4MHYtOFYxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjEuNSAxLjJjNSAyLjEgOC42IDYuNiA5LjYgMTEuOUwzOTEgMTIxbDEwNy45IDE5LjhjNS4zIDEgOS44IDQuNiAxMS45IDkuNnMxLjUgMTAuNy0xLjYgMTUuMkw0NDYuOSAyNTZsNjIuMyA5MC4zYzMuMSA0LjUgMy43IDEwLjIgMS42IDE1LjJzLTYuNiA4LjYtMTEuOSA5LjZMMzkxIDM5MSAzNzEuMSA0OTguOWMtMSA1LjMtNC42IDkuOC05LjYgMTEuOXMtMTAuNyAxLjUtMTUuMi0xLjZMMjU2IDQ0Ni45bC05MC4zIDYyLjNjLTQuNSAzLjEtMTAuMiAzLjctMTUuMiAxLjZzLTguNi02LjYtOS42LTExLjlMMTIxIDM5MSAxMy4xIDM3MS4xYy01LjMtMS05LjgtNC42LTExLjktOS42cy0xLjUtMTAuNyAxLjYtMTUuMkw2NS4xIDI1NiAyLjggMTY1LjdjLTMuMS00LjUtMy43LTEwLjItMS42LTE1LjJzNi42LTguNiAxMS45LTkuNkwxMjEgMTIxIDE0MC45IDEzLjFjMS01LjMgNC42LTkuOCA5LjYtMTEuOXMxMC43LTEuNSAxNS4yIDEuNkwyNTYgNjUuMSAzNDYuMyAyLjhjNC41LTMuMSAxMC4yLTMuNyAxNS4yLTEuNnpNMTYwIDI1NmE5NiA5NiAwIDEgMSAxOTIgMCA5NiA5NiAwIDEgMSAtMTkyIDB6bTIyNCAwYTEyOCAxMjggMCAxIDAgLTI1NiAwIDEyOCAxMjggMCAxIDAgMjU2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cGVyc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMmMwLTExLjEtNS43LTIxLjQtMTUuMi0yNy4ycy0yMS4yLTYuNC0zMS4xLTEuNGwtMzIgMTZjLTE1LjggNy45LTIyLjIgMjcuMS0xNC4zIDQyLjlDMzkzIDczLjUgNDA0LjMgODAgNDE2IDgwdjgwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyIDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjMyek0zMiA2NEMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJINDcuM2w4OS42IDEyOEw0Ny4zIDM4NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NGMxMC40IDAgMjAuMi01LjEgMjYuMi0xMy42TDE3NiAzMTEuOGw4NS44IDEyMi42YzYgOC42IDE1LjggMTMuNiAyNi4yIDEzLjZoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzA0LjdMMjE1LjEgMjU2bDg5LjYtMTI4SDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyODhjLTEwLjQgMC0yMC4yIDUuMS0yNi4yIDEzLjZMMTc2IDIwMC4yIDkwLjIgNzcuNkM4NC4yIDY5LjEgNzQuNCA2NCA2NCA2NEgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dhdGNoYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEgxNjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDE2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2VjMyek0yMjMuNiA0MjUuOWMuMy0zLjMgLjQtNi42IC40LTkuOVYxNTRsNzUuNC03NS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDkwLjUgOTAuNWMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM0wyMjMuNiA0MjUuOXpNMTgyLjggNTEybDE5Mi0xOTJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxODIuOHpNMTI4IDY0SDY0djY0aDY0VjY0ek02NCAxOTJ2NjRoNjRWMTkySDY0ek05NiA0NDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTeW5hZ29ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA5LjggMy43YzUuOS00LjkgMTQuNi00LjkgMjAuNSAwbDEyMSAxMDAuOEM0NjkuNSAxMTkuNyA0ODAgMTQyLjIgNDgwIDE2NlYyODAuMSA1MTJINDY0IDM1MlY0MTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZIMTc2IDE2MFYyODAuMSAxNjZjMC0yMy43IDEwLjUtNDYuMyAyOC44LTYxLjVMMzA5LjggMy43ek01MTIgNTEyVjI0NC41bDI4LjEtMzEuMmMzLTMuNCA3LjQtNS4zIDExLjktNS4zczguOSAxLjkgMTEuOSA1LjNsNjMuOCA3MC45YzcuOSA4LjggMTIuMyAyMC4zIDEyLjMgMzIuMVY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINTEyek0xMjggMjQ0LjVWNTEySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzMTYuM2MwLTExLjkgNC40LTIzLjMgMTIuMy0zMi4xbDYzLjgtNzAuOWMzLTMuNCA3LjQtNS4zIDExLjktNS4zczguOSAxLjkgMTEuOSA1LjNMMTI4IDI0NC41ek0zMjcgMTI0LjNjLTMuMS01LjQtMTAuOS01LjQtMTMuOSAwbC0xNS45IDI4LjEtMzIuMy0uM2MtNi4yLS4xLTEwLjEgNi43LTcgMTIuMUwyNzQuMyAxOTJsLTE2LjQgMjcuOGMtMy4yIDUuNCAuNyAxMi4xIDcgMTIuMWwzMi4zLS4zTDMxMyAyNTkuN2MzLjEgNS40IDEwLjkgNS40IDEzLjkgMGwxNS45LTI4LjEgMzIuMyAuM2M2LjIgLjEgMTAuMS02LjcgNy0xMi4xTDM2NS43IDE5MmwxNi40LTI3LjhjMy4yLTUuNC0uNy0xMi4xLTctMTIuMWwtMzIuMyAuM0wzMjcgMTI0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5cmluZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQxIDdsMzIgMzIgMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtMTUtMTVMNDE3LjkgMTI4bDU1IDU1YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTcyLTcyTDI5NSA3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDU1IDU1TDQyMi4xIDU2IDQwNyA0MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwek0yMTAuMyAxNTUuN2w2MS4xLTYxLjFjLjMgLjMgLjYgLjcgMSAxbDE2IDE2IDU2IDU2IDU2IDU2IDE2IDE2Yy4zIC4zIC42IC42IDEgMWwtMTkxIDE5MWMtMTAuNSAxMC41LTI0LjcgMTYuNC0zOS42IDE2LjRIOTcuOUw0MSA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNTctNTdWMzI1LjNjMC0xNC45IDUuOS0yOS4xIDE2LjQtMzkuNmw0My4zLTQzLjMgNTcgNTdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC01Ny01NyA0MS40LTQxLjQgNTcgNTdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC01Ny01N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZIMTYwVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjk2SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlQ2VsbHNDb2x1bW5Mb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA2NS4xYy0zNy44IDUuNC02OS40IDI5LjYtODUuMiA2Mi45TDM2MCAyMjRsMCA2NCA1NiAwIDAgOC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40bC0yNCAwIDAgNjQgMjQgMCAwIDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnptMjA4IDBsMCA2NCA4OCAwIDAtNjQtODggMHptMjQwIDBsLTg4IDAgMCA2NCA4OCAwIDAtNjR6TTIwOCAyMjRsMCA2NCA4OCAwIDAtNjQtODggMHptMCAxMjhsMCA2NCA4OCAwIDAtNjQtODggMHpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA0OCA2NCAwIDAtNDhjMC0xNy43LTE0LjMtMzItMzItMzJ6bS04MCAzMmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwbDAgNDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE2MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZUNlbGxzTGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2VjIyNEgyODhWOTZINDQ4em0wIDE5MlY0MTZIMjg4VjI4OEg0NDh6TTIyNCAyMjRINjRWOTZIMjI0VjIyNHpNNjQgMjg4SDIyNFY0MTZINjRWMjg4ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlQ2VsbHNSb3dMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA2NS4xYy0zNy44IDUuNC02OS40IDI5LjYtODUuMiA2Mi45TDM2MCAyMjRsMCA2NCA1NiAwIDAgOC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40bC0yNCAwIDAgNjQgMjQgMCAwIDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnpNNjQgMjI0bDAgNjQgODggMCAwLTY0LTg4IDB6bTIzMiAwbC04OCAwIDAgNjQgODggMCAwLTY0ek0xNTIgMzUybC04OCAwIDAgNjQgODggMCAwLTY0em01NiAwbDAgNjQgODggMCAwLTY0LTg4IDB6TTUyOCAyNDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNDggNjQgMCAwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwwIDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xNjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xMjhjMC0xNy43IDE0LjMtMzIgMzItMzJsMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGVDZWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTg4IDY0djY0SDY0Vjk2aDg4em01NiAwaDg4djY0SDIwOFY5NnptMjQwIDB2NjRIMzYwVjk2aDg4ek02NCAyMjRoODh2NjRINjRWMjI0em0yMzIgMHY2NEgyMDhWMjI0aDg4em02NCAwaDg4djY0SDM2MFYyMjR6TTE1MiAzNTJ2NjRINjRWMzUyaDg4em01NiAwaDg4djY0SDIwOFYzNTJ6bTI0MCAwdjY0SDM2MFYzNTJoODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlQ29sdW1ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em02NCA2NFY0MTZIMjI0VjE2MEg2NHptMzg0IDBIMjg4VjQxNkg0NDhWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZUxpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnptNjQgMHY2NGg2NFY5Nkg2NHptMzg0IDBIMTkydjY0SDQ0OFY5NnpNNjQgMjI0djY0aDY0VjIyNEg2NHptMzg0IDBIMTkydjY0SDQ0OFYyMjR6TTY0IDM1MnY2NGg2NFYzNTJINjR6bTM4NCAwSDE5MnY2NEg0NDhWMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZVRlbm5pc1BhZGRsZUJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDI4OGMtNTAuMSAwLTkzLjYgMjguOC0xMTQuNiA3MC44TDEzMi45IDEyNi4zbC42LS42IDYwLjEtNjAuMWM4Ny41LTg3LjUgMjI5LjMtODcuNSAzMTYuOCAwYzY3LjEgNjcuMSA4Mi43IDE2Ni4zIDQ2LjggMjQ4LjNDNTM1LjggMjk3LjYgNTA5IDI4OCA0ODAgMjg4ek0xMTMuMyAxNTEuOUwzNTQuMSAzOTIuN2MtMS40IDcuNS0yLjEgMTUuMy0yLjEgMjMuM2MwIDIzLjIgNi4yIDQ0LjkgMTYuOSA2My43Yy0zIC4yLTYuMSAuMy05LjIgLjNIMzU3Yy0zMy45IDAtNjYuNS0xMy41LTkwLjUtMzcuNWwtOS44LTkuOGMtMTMuMS0xMy4xLTM0LjYtMTIuNC00Ni44IDEuN0wxNTIuMiA1MDFjLTUuOCA2LjctMTQuMiAxMC43LTIzIDExcy0xNy41LTMuMS0yMy44LTkuNGwtMzItMzJjLTYuMy02LjMtOS43LTE0LjktOS40LTIzLjhzNC4zLTE3LjIgMTEtMjNsNjYuNi01Ny43YzE0LTEyLjIgMTQuOC0zMy43IDEuNy00Ni44bC05LjgtOS44Yy0yNC0yNC0zNy41LTU2LjYtMzcuNS05MC41di0yLjdjMC0yMi44IDYuMS00NC45IDE3LjMtNjQuM3pNNDgwIDMyMGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjU2VjE2MEgyMjR2OTZINjR6bTAgNjRIMjI0djk2SDY0VjMyMHptMjI0IDk2VjMyMEg0NDh2OTZIMjg4ek00NDggMjU2SDI4OFYxNjBINDQ4djk2ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldEJ1dHRvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgNDAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGV0U2NyZWVuQnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0yNTYgNDQ4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTM4NCA2NEg2NFYzODRIMzg0VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMTc2IDQzMmg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE0LjMgMjQ3YzE2LjMtMjUgMjUuNy01NC45IDI1LjctODdDNjQwIDcxLjYgNTY4LjQgMCA0ODAgMGMtMzIuMSAwLTYxLjkgOS40LTg3IDI1LjdjLTcuOSA1LjItOC41IDE2LjItMS44IDIyLjlMNTkxLjQgMjQ4LjhjNi43IDYuNyAxNy44IDYuMiAyMi45LTEuOHpNNTY3IDI5NC4zYzcuOS01LjIgOC41LTE2LjIgMS44LTIyLjlMMzY4LjYgNzEuMmMtNi43LTYuNy0xNy44LTYuMi0yMi45IDEuOGMtMTYuMyAyNS0yNS43IDU0LjktMjUuNyA4N2MwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGMzMi4xIDAgNjEuOS05LjQgODctMjUuN3pNMzAxLjUgMzY4SDE4LjVjLTkuNSAwLTE2LjkgOC4yLTE1IDE3LjVDMTguOSA0NTcuOCA4My4xIDUxMiAxNjAgNTEyczE0MS4xLTU0LjIgMTU2LjUtMTI2LjVjMi05LjMtNS41LTE3LjUtMTUtMTcuNXptMC0zMmM5LjUgMCAxNi45LTguMiAxNS0xNy41QzMwMS4xIDI0Ni4yIDIzNi45IDE5MiAxNjAgMTkyUzE4LjkgMjQ2LjIgMy41IDMxOC41Yy0yIDkuMyA1LjUgMTcuNSAxNSAxNy41SDMwMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWNob2dyYXBoRGlnaXRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptMzIgNjRIMzIwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTY0IDM2OGMwLTguOCA3LjItMTYgMTYtMTZIMzM2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZ6bTMyMCAwYzAtOC44IDcuMi0xNiAxNi0xNkg1NjBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINDAwYy04LjggMC0xNi03LjItMTYtMTZ6TTgwIDI4OGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTQ4IDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bTgwLTE2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptNDggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptODAtMTZhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MFYyMjkuNWMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2wxNzYgMTc2YzI1IDI1IDY1LjUgMjUgOTAuNSAwTDQxOC43IDMxNy4zYzI1LTI1IDI1LTY1LjUgMC05MC41bC0xNzYtMTc2Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQ4QzIxLjUgMzIgMCA1My41IDAgODB6bTExMiAzMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ1IDM5LjFMNDcyLjggMTY4LjRjNTIuNCA1MyA1Mi40IDEzOC4yIDAgMTkxLjJMMzYwLjggNDcyLjljLTkuMyA5LjQtMjQuNSA5LjUtMzMuOSAuMnMtOS41LTI0LjUtLjItMzMuOUw0MzguNiAzMjUuOWMzMy45LTM0LjMgMzMuOS04OS40IDAtMTIzLjdMMzEwLjkgNzIuOWMtOS4zLTkuNC05LjItMjQuNiAuMi0zMy45czI0LjYtOS4yIDMzLjkgLjJ6TTAgMjI5LjVWODBDMCA1My41IDIxLjUgMzIgNDggMzJIMTk3LjVjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdsMTY4IDE2OGMyNSAyNSAyNSA2NS41IDAgOTAuNUwyNzcuMyA0NDIuN2MtMjUgMjUtNjUuNSAyNS05MC41IDBsLTE2OC0xNjhDNi43IDI2Mi43IDAgMjQ2LjUgMCAyMjkuNXpNMTQ0IDE0NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4MC44IDQxNmM0MS41LTQwLjcgNjcuMi05Ny4zIDY3LjItMTYwQzQ0OCAxMzIuMyAzNDcuNyAzMiAyMjQgMzJTMCAxMzIuMyAwIDI1NlMxMDAuMyA0ODAgMjI0IDQ4MEg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzgwLjh6TTIyNCAxNjBhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6bTY0IDk2YTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFycERyb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE2MGMtMzUuMyAwLTY0LTI2LjktNjQtNjBjMC0yNCAzMy43LTcwLjEgNTIuMi05My41YzYuMS03LjcgMTcuNS03LjcgMjMuNiAwQzMxOC4zIDI5LjkgMzUyIDc2IDM1MiAxMDBjMCAzMy4xLTI4LjcgNjAtNjQgNjB6TTY0IDEyOEgxOTcuNWMxMy4yIDM3LjMgNDguNyA2NCA5MC41IDY0czc3LjQtMjYuNyA5MC41LTY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFYzNTJINDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDEyOEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MmMwLTM1LjMgMjguNy02NCA2NC02NHpNNDQ4IDUxMmwwLTEyOEg1NzZMNDQ4IDUxMnpNOTYgMjU2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFycCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzNTIgMCAwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NzZWMTI4ek00NDggNDQ4TDU3NiAzMjBINDQ4bDAgMTI4ek05NiAxMjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXhpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY2NGMwIC4xIDAgLjEgMCAuMmMtMzguNiAyLjItNzIuMyAyNy4zLTg1LjIgNjQuMUwzOS42IDIyOC44QzE2LjQgMjM4LjQgMCAyNjEuMyAwIDI4OFY0MzJ2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJINjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDMySDQxNnY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlY0MzIgMjg4YzAtMjYuNy0xNi40LTQ5LjYtMzkuNi01OS4yTDQzNy4yIDEyOC4zYy0xMi45LTM2LjgtNDYuNi02Mi04NS4yLTY0LjFjMC0uMSAwLS4xIDAtLjJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyek0xNjUuNCAxMjhIMzQ2LjZjMTMuNiAwIDI1LjcgOC42IDMwLjIgMjEuNEw0MDIuOSAyMjRIMTA5LjFsMjYuMS03NC42YzQuNS0xMi44IDE2LjYtMjEuNCAzMC4yLTIxLjR6TTk2IDI4OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTI4OCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWV0aE9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDNDMgMzIgMCA3NSAwIDEyOHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtNTMtNDMtOTYtOTYtOTZIOTZ6TTIyNCA5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNEgyMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHptODAgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNEgzMjhjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE0NHpNOTYgMTI4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0SDcyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDh6bTMzNiA0OGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0SDQ1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTc2ek05NiA0ODBINDgwYzUzIDAgOTYtNDMgOTYtOTZWMzUyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHYzMmMwIDUzIDQzIDk2IDk2IDk2em0wLTY0Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MjRjMCAyNi41LTIxLjUgNDgtNDggNDh6bTgwLTQ4VjM0NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyNGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHptMTc2IDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MjRjMCAyNi41LTIxLjUgNDgtNDggNDh6bTgwLTQ4VjM0NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyNGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVldGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMjhDMCA3NSA0MyAzMiA5NiAzMkg0ODBjNTMgMCA5NiA0MyA5NiA5NlYzODRjMCA1My00MyA5Ni05NiA5Nkg5NmMtNTMgMC05Ni00My05Ni05NlYxMjh6bTE3NiA0OHY1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh6bTE3Ni00OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAyMDh2MjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjA4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4ek05NiAzODRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNGMwIDI2LjUgMjEuNSA0OCA0OCA0OHptODAtNDhjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OFYzMTJjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNHptMTc2IDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4em04MC0xNzZ2MjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjA4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4em00OCAxNzZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQ1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjRjMCAyNi41IDIxLjUgNDggNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbXBlcmF0dXJlQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OFYyNzYuNWMwIDE3LjMgNy4xIDMxLjkgMTUuMyA0Mi41QzI0OS44IDMzMi42IDI1NiAzNDkuNSAyNTYgMzY4YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMTguNSA2LjItMzUuNCAxNi43LTQ4LjljOC4yLTEwLjYgMTUuMy0yNS4yIDE1LjMtNDIuNVYxMTJ6TTE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJWMjc2LjRjMCAuMS0uMSAuMy0uMiAuNmMtLjIgLjYtLjggMS42LTEuNyAyLjhDNDMuMiAzMDQuMiAzMiAzMzQuOCAzMiAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI4OCA1MC4xIDIzNy45IDAgMTc2IDB6bTAgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM1YyNzJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NTAuN2MtMTguNiA2LjYtMzIgMjQuNC0zMiA0NS4zYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4em0zMzYtNjRINDgwVjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjM1MkgzODRjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzYgNiAxNC4xIDkuNCAyMi42IDkuNHMxNi42LTMuNCAyMi42LTkuNGw2NC02NGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OFYyNzYuNWMwIDE3LjMgNy4xIDMxLjkgMTUuMyA0Mi41QzI0OS44IDMzMi42IDI1NiAzNDkuNSAyNTYgMzY4YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMTguNSA2LjItMzUuNCAxNi43LTQ4LjljOC4yLTEwLjYgMTUuMy0yNS4yIDE1LjMtNDIuNVYxMTJ6TTE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJWMjc2LjRjMCAuMS0uMSAuMy0uMiAuNmMtLjIgLjYtLjggMS42LTEuNyAyLjhDNDMuMiAzMDQuMiAzMiAzMzQuOCAzMiAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI4OCA1MC4xIDIzNy45IDAgMTc2IDB6bTAgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM1YxMTJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzIyLjdjLTE4LjYgNi42LTMyIDI0LjQtMzIgNDUuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OHpNNDgwIDE2MGgzMmMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44aDMyVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhWMjc2LjVjMCAxNy4zIDcuMSAzMS45IDE1LjMgNDIuNUMyMzMuOCAzMzIuNiAyNDAgMzQ5LjUgMjQwIDM2OGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTE4LjUgNi4yLTM1LjQgMTYuNy00OC45YzguMi0xMC42IDE1LjMtMjUuMiAxNS4zLTQyLjVWMTEyek0xNjAgMEM5OC4xIDAgNDggNTAuMiA0OCAxMTJWMjc2LjVjMCAuMS0uMSAuMy0uMiAuNmMtLjIgLjYtLjggMS42LTEuNyAyLjhDMjcuMiAzMDQuMiAxNiAzMzQuOCAxNiAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI3MiA1MC4yIDIyMS45IDAgMTYwIDB6bTAgNDE2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM4Ni4yIDMzMi42IDgwIDM0OS41IDgwIDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMxNiA0NDcuNSAxNiAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNlYxMTJ6TTIwOCAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zVjExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjMyMi43YzE4LjYgNi42IDMyIDI0LjQgMzIgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM4Ni4yIDMzMi42IDgwIDM0OS41IDgwIDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMxNiA0NDcuNSAxNiAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNlYxMTJ6TTIwOCAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zVjIwOGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjMyMi43YzE4LjYgNi42IDMyIDI0LjQgMzIgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAgMTI4QTk2IDk2IDAgMSAwIDQxNiAwYTk2IDk2IDAgMSAwIDAgMTkyek05NiAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OFYyNzYuNWMwIDE3LjMgNy4xIDMxLjkgMTUuMyA0Mi41QzIxNy44IDMzMi42IDIyNCAzNDkuNSAyMjQgMzY4YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMTguNSA2LjItMzUuNCAxNi43LTQ4LjlDODguOSAzMDguNCA5NiAyOTMuOCA5NiAyNzYuNVYxMTJ6TTE0NCAwQzgyLjEgMCAzMiA1MC4yIDMyIDExMlYyNzYuNWMwIC4xLS4xIC4zLS4yIC42Yy0uMiAuNi0uOCAxLjYtMS43IDIuOEMxMS4yIDMwNC4yIDAgMzM0LjggMCAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI1NiA1MC4yIDIwNS45IDAgMTQ0IDB6bTAgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM1YxMTJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzIyLjdjLTE4LjYgNi42LTMyIDI0LjQtMzIgNDUuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMyMCA5NmE5NiA5NiAwIDEgMSAxOTIgMEE5NiA5NiAwIDEgMSAzMjAgOTZ6TTE0NCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM3MC4yIDMzMi42IDY0IDM0OS41IDY0IDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0zMiAxMTJDMzIgNTAuMiA4Mi4xIDAgMTQ0IDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMwIDQ0Ny41IDAgMzY4YzAtMzMuMiAxMS4yLTYzLjggMzAuMS04OC4xYy45LTEuMiAxLjUtMi4yIDEuNy0yLjhjLjEtLjMgLjItLjUgLjItLjZWMTEyek0xOTIgMzY4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM1YyNzJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY1MC43YzE4LjYgNi42IDMyIDI0LjQgMzIgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVRdWFydGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM4Ni4yIDMzMi42IDgwIDM0OS41IDgwIDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMxNiA0NDcuNSAxNiAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNlYxMTJ6TTIwOCAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zVjI3MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djUwLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW1wZXJhdHVyZVRocmVlUXVhcnRlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDY0Yy0yNi41IDAtNDggMjEuNS00OCA0OFYyNzYuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41Qzg2LjIgMzMyLjYgODAgMzQ5LjUgODAgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNVYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4IDExMkM0OCA1MC4yIDk4LjEgMCAxNjAgMHMxMTIgNTAuMSAxMTIgMTEyVjI3Ni41YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzE2IDQ0Ny41IDE2IDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42VjExMnpNMjA4IDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWMzIyLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW5nZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJIMTkyIDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRBcnJvd0Rvd25Ub0xpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQxLjggMTExLjljOC45IDkuOSA4LjEgMjUtMS44IDMzLjlsLTgwIDcyYy05LjEgOC4yLTIzIDguMi0zMi4xIDBsLTgwLTcyYy05LjktOC45LTEwLjctMjQtMS44LTMzLjlzMjQtMTAuNyAzMy45LTEuOGwzOS45IDM2TDEyMCAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMTIyLjEgMzkuOS0zNmM5LjktOC45IDI1LTguMSAzMy45IDEuOHptMTIyLjggMjIuNmMxMS41LTguNyAyNy4zLTguNyAzOC44IDBsMTY4IDEyOGM2LjYgNSAxMSAxMi41IDEyLjMgMjAuN2wyNCAxNjAgLjcgNC43YzE3LjUgLjIgMzEuNiAxNC40IDMxLjYgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMTU5LjZsLjctNC43IDI0LTE2MGMxLjItOC4yIDUuNi0xNS43IDEyLjMtMjAuN2wxNjgtMTI4ek0zODQgNDQ4aDgwTDQwMi43IDMyNS41Yy0xLjctMy40LTUuMS01LjUtOC44LTUuNWMtNS41IDAtOS45IDQuNC05LjkgOS45VjQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVudEFycm93TGVmdFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC4xIDYuMmMtOS45LTguOS0yNS04LjEtMzMuOSAxLjhzLTguMSAyNSAxLjggMzMuOUw0ODkuNSA3MiA4Ni41IDcybDMzLjUtMzAuMmM5LjktOC45IDEwLjctMjQgMS44LTMzLjlTOTcuOC0yLjcgODcuOSA2LjJsLTgwIDcyQzIuOSA4Mi43IDAgODkuMiAwIDk2czIuOSAxMy4zIDcuOSAxNy44bDgwIDcyYzkuOSA4LjkgMjUgOC4xIDMzLjktMS44czguMS0yNS0xLjgtMzMuOUw4Ni41IDEyMGw0MDIuOSAwLTMzLjUgMzAuMmMtOS45IDguOS0xMC43IDI0LTEuOCAzMy45czI0IDEwLjcgMzMuOSAxLjhsODAtNzJjNS4xLTQuNiA3LjktMTEgNy45LTE3LjhzLTIuOS0xMy4zLTcuOS0xNy44bC04MC03MnpNMzA3LjQgMTY2LjVjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMGwtMTY4IDEyOGMtNi42IDUtMTEgMTIuNS0xMi4zIDIwLjdsLTI0IDE2MGMtMS40IDkuMiAxLjMgMTguNiA3LjQgMjUuNlM4Ni43IDUxMiA5NiA1MTJIMjQwaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM2MS45YzAtNS41IDQuNC05LjkgOS45LTkuOWMzLjcgMCA3LjIgMi4xIDguOCA1LjVsNjguNCAxMzYuOGM1LjQgMTAuOCAxNi41IDE3LjcgMjguNiAxNy43SDQ2NGgxNmM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRBcnJvd1R1cm5MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMC4xIDQxLjhjOS45LTguOSAxMC43LTI0IDEuOC0zMy45Uzk3LjgtMi43IDg3LjkgNi4ybC04MCA3MkMyLjkgODIuNyAwIDg5LjIgMCA5NnMyLjkgMTMuMyA3LjkgMTcuOGw4MCA3MmM5LjkgOC45IDI1IDguMSAzMy45LTEuOHM4LjEtMjUtMS44LTMzLjlMODYuNSAxMjAgNDU2IDEyMGMzOS44IDAgNzIgMzIuMiA3MiA3MnY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE5MmMwLTY2LjMtNTMuNy0xMjAtMTIwLTEyMEw4Ni41IDcybDMzLjUtMzAuMnpNMzA3LjQgMTY2LjVjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMGwtMTY4IDEyOGMtNi42IDUtMTEgMTIuNS0xMi4zIDIwLjdsLTI0IDE2MGMtMS40IDkuMiAxLjMgMTguNiA3LjQgMjUuNlM4Ni43IDUxMiA5NiA1MTJIMjQwaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM2MS45YzAtNS41IDQuNC05LjkgOS45LTkuOWMzLjcgMCA3LjIgMi4xIDguOCA1LjVsNjguNCAxMzYuOGM1LjQgMTAuOCAxNi41IDE3LjcgMjguNiAxNy43SDQ2NGgxNmM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRBcnJvd3NEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS44IDExMS45Yy04LjktOS45LTI0LTEwLjctMzMuOS0xLjhsLTM5LjkgMzZMMTM2IDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0Uzg4IDEwLjcgODggMjRsMCAxMjIuMS0zOS45LTM2Yy05LjktOC45LTI1LTguMS0zMy45IDEuOHMtOC4xIDI1IDEuOCAzMy45bDgwIDcyYzkuMSA4LjIgMjMgOC4yIDMyLjEgMGw4MC03MmM5LjktOC45IDEwLjctMjQgMS44LTMzLjl6bTM1MiAwYy04LjktOS45LTI0LTEwLjctMzMuOS0xLjhsLTM5LjkgMzZWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWMTQ2LjFsLTM5LjktMzZjLTkuOS04LjktMjUtOC4xLTMzLjkgMS44cy04LjEgMjUgMS44IDMzLjlsODAgNzJjOS4xIDguMiAyMyA4LjIgMzIuMSAwbDgwLTcyYzkuOS04LjkgMTAuNy0yNCAxLjgtMzMuOXpNMzA3LjQgMTY2LjVjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMGwtMTY4IDEyOGMtNi42IDUtMTEgMTIuNS0xMi4zIDIwLjdsLTI0IDE2MGMtMS40IDkuMiAxLjMgMTguNiA3LjQgMjUuNlM4Ni43IDUxMiA5NiA1MTJIMjQwaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM2MS45YzAtNS41IDQuNC05LjkgOS45LTkuOWMzLjcgMCA3LjIgMi4xIDguOCA1LjVsNjguNCAxMzYuOGM1LjQgMTAuOCAxNi41IDE3LjcgMjguNiAxNy43SDQ2NGgxNmM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjQgNkMyODAuNS0yIDI5NS41LTIgMzA2LjYgNmwyMjQgMTYwYzcuNCA1LjMgMTIuMiAxMy41IDEzLjIgMjIuNWwzMiAyODhjMSA5LTEuOSAxOC4xLTggMjQuOXMtMTQuNyAxMC43LTIzLjggMTAuN0g0NjQgNDM1LjhjLTEyLjEgMC0yMy4yLTYuOC0yOC42LTE3LjdMMzA2LjcgMjkzLjVjLTEuNy0zLjQtNS4xLTUuNS04LjgtNS41Yy01LjUgMC05LjkgNC40LTkuOSA5LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDI0MCAzMmMtOS4xIDAtMTcuOC0zLjktMjMuOC0xMC43cy05LTE1LjgtOC0yNC45bDMyLTI4OGMxLTkgNS44LTE3LjIgMTMuMi0yMi41TDI2OS40IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Ni42IDYuNUwyMzUuOCAxMjkuMWM5LjYgMS44IDE4LjkgNS44IDI3IDEybDE2OCAxMjhjMTMuMiAxMC4xIDIyIDI0LjkgMjQuNSA0MS40bDYuMiA0MS41SDYwOGM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjhjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMHptLTE1My4yIDE2MGMtMTEuNS04LjctMjcuMy04LjctMzguOCAwbC0xNjggMTI4Yy02LjYgNS0xMSAxMi41LTEyLjMgMjAuN2wtMjQgMTYwYy0xLjQgOS4yIDEuMyAxOC42IDcuNCAyNS42UzIyLjcgNTEyIDMyIDUxMkgxNzZoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzYxLjljMC01LjUgNC40LTkuOSA5LjktOS45YzMuNyAwIDcuMiAyLjEgOC44IDUuNWw2OC40IDEzNi44YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdINDAwaDE2YzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDg2LjZDLTMuMSA3NC4xLTMuMSA1My45IDkuNCA0MS40czMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTkyIDE5MmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMTc4LjcgMjU2IDkuNCA4Ni42ek0yNTYgNDE2SDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRleHRIZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTI4Vjk2aDY0bDAgMzIwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJsMC0zMjBoNjR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgxNjAgNDhDMjEuNSAzMiAwIDUzLjUgMCA4MHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyek01MDIuNiA0MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhoMzJWMzUySDQxNmMtMTIuOSAwLTI0LjYgNy44LTI5LjYgMTkuOHMtMi4yIDI1LjcgNi45IDM0LjlsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsNjQtNjRjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlzLTE2LjYtMTkuOC0yOS42LTE5LjhINTEyVjE2MGgzMmMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGV4dFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzU1LjcgMjUzLjUgNDAwLjIgOTZINTAzTDQ5NyAxMjAuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wxMS00NC4xQzU3Ny42IDYxLjMgNTU0LjcgMzIgNTIzLjUgMzJIMzc2LjFoLS4zSDIwNC41Yy0yMiAwLTQxLjIgMTUtNDYuNiAzNi40bC02LjMgMjUuMkwzOC44IDUuMXptMTY4IDEzMS43Yy4xLS4zIC4yLS43IC4zLTFMMjE3IDk2SDMzMy43TDMwMS4zIDIxMC44bC05NC41LTc0LjF6TTMyNy4zIDM1My45TDI3Mi45IDMxMSAyNDMuMyA0MTZIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMDkuOGwxNy42LTYyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRleHRXaWR0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMjhWOTZIMTkybDAgMTI4SDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNTZsMC0xMjhIMzg0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjI0IDQ4QzIxLjUgMzIgMCA1My41IDAgODB2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpNOS40IDM2MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGM5LjIgOS4yIDIyLjkgMTEuOSAzNC45IDYuOXMxOS44LTE2LjYgMTkuOC0yOS42VjQxNkgzMjB2MzJjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTkuMi05LjItMjIuOS0xMS45LTM0LjktNi45cy0xOS44IDE2LjYtMTkuOCAyOS42djMySDEyOFYzMjBjMC0xMi45LTcuOC0yNC42LTE5LjgtMjkuNnMtMjUuNy0yLjItMzQuOSA2LjlsLTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzODIuMVYyOTMuM2MwLTE0LjkgNS45LTI5LjEgMTYuNC0zOS42bDI3LjMtMjcuMyA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQxLjQtNDEuNCA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQxLjQtNDEuNCA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQ1LjUtNDUuNUMzNTUuMiAxMC45IDM4MS40IDAgNDA4LjggMEM0NjUuOCAwIDUxMiA0Ni4yIDUxMiAxMDMuMmMwIDI3LjQtMTAuOSA1My42LTMwLjIgNzNMMjU4LjMgMzk5LjZjLTEwLjUgMTAuNS0yNC43IDE2LjQtMzkuNiAxNi40SDEyOS45TDQxIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw4OS04OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGh1bWJzRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNCA0NzkuMWMyNi01LjIgNDIuOS0zMC41IDM3LjctNTYuNWwtMi4zLTExLjRjLTUuMy0yNi43LTE1LjEtNTIuMS0yOC44LTc1LjJINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMTguNS0xMC41LTM0LjYtMjUuOS00Mi42QzQ5NyAyMzYuNiA1MDQgMjIzLjEgNTA0IDIwOGMwLTIzLjQtMTYuOC00Mi45LTM4LjktNDcuMWM0LjQtNy4zIDYuOS0xNS44IDYuOS0yNC45YzAtMjEuMy0xMy45LTM5LjQtMzMuMS00NS42Yy43LTMuMyAxLjEtNi44IDEuMS0xMC40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI5NC41Yy0xOSAwLTM3LjUgNS42LTUzLjMgMTYuMUwyMDIuNyA3My44QzE3NiA5MS42IDE2MCAxMjEuNiAxNjAgMTUzLjdWMTkydjQ4IDI0LjljMCAyOS4yIDEzLjMgNTYuNyAzNiA3NWw3LjQgNS45YzI2LjUgMjEuMiA0NC42IDUxIDUxLjIgODQuMmwyLjMgMTEuNGM1LjIgMjYgMzAuNSA0Mi45IDU2LjUgMzcuN3pNMzIgMzg0SDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDk2IDAgMTEwLjMgMCAxMjhWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHVtYnNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNCAzMi45YzI2IDUuMiA0Mi45IDMwLjUgMzcuNyA1Ni41bC0yLjMgMTEuNGMtNS4zIDI2LjctMTUuMSA1Mi4xLTI4LjggNzUuMkg0NjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhjMCAxOC41LTEwLjUgMzQuNi0yNS45IDQyLjZDNDk3IDI3NS40IDUwNCAyODguOSA1MDQgMzA0YzAgMjMuNC0xNi44IDQyLjktMzguOSA0Ny4xYzQuNCA3LjMgNi45IDE1LjggNi45IDI0LjljMCAyMS4zLTEzLjkgMzkuNC0zMy4xIDQ1LjZjLjcgMy4zIDEuMSA2LjggMS4xIDEwLjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjk0LjVjLTE5IDAtMzcuNS01LjYtNTMuMy0xNi4xbC0zOC41LTI1LjdDMTc2IDQyMC40IDE2MCAzOTAuNCAxNjAgMzU4LjNWMzIwIDI3MiAyNDcuMWMwLTI5LjIgMTMuMy01Ni43IDM2LTc1bDcuNC01LjljMjYuNS0yMS4yIDQ0LjYtNTEgNTEuMi04NC4ybDIuMy0xMS40YzUuMi0yNiAzMC41LTQyLjkgNTYuNS0zNy43ek0zMiAxOTJIOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRodW1idGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMzMiAxNC4zIDQ2LjMgMCA2NCAwSDMyMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyOTAuNWwxMS40IDE0OC4yYzM2LjcgMTkuOSA2NS43IDUzLjIgNzkuNSA5NC43bDEgM2MzLjMgOS44IDEuNiAyMC41LTQuNCAyOC44cy0xNS43IDEzLjMtMjYgMTMuM0gzMmMtMTAuMyAwLTE5LjktNC45LTI2LTEzLjNzLTcuNy0xOS4xLTQuNC0yOC44bDEtM2MxMy44LTQxLjUgNDIuOC03NC44IDc5LjUtOTQuN0w5My41IDY0SDY0QzQ2LjMgNjQgMzIgNDkuNyAzMiAzMnpNMTYwIDM4NGg2NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpY2tldFNpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjRjMCA4LjgtNy40IDE1LjctMTUuNyAxOC42QzU0MS41IDIxNy4xIDUyOCAyMzUgNTI4IDI1NnMxMy41IDM4LjkgMzIuMyA0NS40YzguMyAyLjkgMTUuNyA5LjggMTUuNyAxOC42djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzMjBjMC04LjggNy40LTE1LjcgMTUuNy0xOC42QzM0LjUgMjk0LjkgNDggMjc3IDQ4IDI1NnMtMTMuNS0zOC45LTMyLjMtNDUuNEM3LjQgMjA3LjcgMCAyMDAuOCAwIDE5MlYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHY2NGMwIDguOCA3LjQgMTUuNyAxNS43IDE4LjZDMzQuNSAyMTcuMSA0OCAyMzUgNDggMjU2cy0xMy41IDM4LjktMzIuMyA0NS40QzcuNCAzMDQuMyAwIDMxMS4yIDAgMzIwdjY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYzMjBjMC04LjgtNy40LTE1LjctMTUuNy0xOC42QzU0MS41IDI5NC45IDUyOCAyNzcgNTI4IDI1NnMxMy41LTM4LjkgMzIuMy00NS40YzguMy0yLjkgMTUuNy05LjggMTUuNy0xOC42VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNjQgMTEybDAgMTYwYzAgOC44IDcuMiAxNiAxNiAxNkg0MzJjOC44IDAgMTYtNy4yIDE2LTE2VjE3NmMwLTguOC03LjItMTYtMTYtMTZIMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZ6TTk2IDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaW1lbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNzJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0zMiA5Ny4zYzI4LjMtMTIuMyA0OC00MC41IDQ4LTczLjNjMC00NC4yLTM1LjgtODAtODAtODBTNDggNTEuOCA0OCA5NmMwIDMyLjggMTkuNyA2MSA0OCA3My4zVjIyNEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgyODh2NTQuN2MtMjguMyAxMi4zLTQ4IDQwLjUtNDggNzMuM2MwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMzIuOC0xOS43LTYxLTQ4LTczLjNWMjg4SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1NDRWMTY5LjNjMjguMy0xMi4zIDQ4LTQwLjUgNDgtNzMuM2MwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDMyLjggMTkuNyA2MSA0OCA3My4zVjIyNEgxNjBWMTY5LjN6TTQ4OCA5NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek0zMjAgMzkyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjhjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjhIMTkyYy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOHM1Ny4zLTEyOCAxMjgtMTI4SDM4NHpNNTc2IDI1NmMwLTEwNi04Ni0xOTItMTkyLTE5MkgxOTJDODYgNjQgMCAxNTAgMCAyNTZTODYgNDQ4IDE5MiA0NDhIMzg0YzEwNiAwIDE5Mi04NiAxOTItMTkyek0xOTIgMzUyYTk2IDk2IDAgMSAwIDAtMTkyIDk2IDk2IDAgMSAwIDAgMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2dnbGVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjRDODYgNjQgMCAxNTAgMCAyNTZTODYgNDQ4IDE5MiA0NDhIMzg0YzEwNiAwIDE5Mi04NiAxOTItMTkycy04Ni0xOTItMTkyLTE5MkgxOTJ6bTE5MiA5NmE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9pbGV0UGFwZXJTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC0xMDkuNy04NkM1NjkuOSAzNzQgNjA4IDI5MS45IDYwOCAxOTJDNjA4IDg2IDU2NSAwIDUxMiAwcy05NiA4Ni05NiAxOTJjMCA0OS4xIDkuMiA5My45IDI0LjQgMTI3LjlsLTU5LTQ2LjJjMS42LTI0LjggMi42LTUyIDIuNi04MS42YzAtNjUuNSAxMy4yLTE0Mi40IDYwLjItMTkySDE2MGMtMjQuOCAwLTQ3LjQgMTguOC02NC40IDQ5LjZMMzguOCA1LjF6TTM2Ny4zIDM4NS40TDY2LjUgMTQ4LjRDNjQuOSAxNjIuNCA2NCAxNzcgNjQgMTkyYzAgMTAxLjUtMTEuNyAxNzAuOC0yMyAyMTMuOWMtNS4xIDE5LjQtMTAuNyAzOS45LTIwLjUgNTcuN2MtNS45IDkuOS02LjEgMjIuMS0uNCAzMi4yUzM2LjUgNTEyIDQ4IDUxMkgyODUuOWMyMi4zIDAgNDUuNC0xMi4xIDU1LjQtMzYuMWM3LjQtMTcuNyAxNy41LTQ3LjIgMjYtOTAuNnpNNTQ0IDE5MmMwIDM1LjMtMTQuMyA2NC0zMiA2NHMtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvaWxldFBhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NC4yIDBDMzk3LjIgNDkuNiAzODQgMTI2LjUgMzg0IDE5MmMwIDE1OC44LTI3LjMgMjQ3LTQyLjcgMjgzLjljLTEwIDI0LTMzLjIgMzYuMS01NS40IDM2LjFINDhjLTExLjUgMC0yMi4yLTYuMi0yNy44LTE2LjJzLTUuNi0yMi4zIC40LTMyLjJjOS44LTE3LjcgMTUuNC0zOC4yIDIwLjUtNTcuN0M1Mi4zIDM2Mi44IDY0IDI5My41IDY0IDE5MkM2NCA4NiAxMDcgMCAxNjAgMEg0NDQuMnpNNTEyIDM4NGMtNTMgMC05Ni04Ni05Ni0xOTJTNDU5IDAgNTEyIDBzOTYgODYgOTYgMTkycy00MyAxOTItOTYgMTkyem0wLTEyOGMxNy43IDAgMzItMjguNyAzMi02NHMtMTQuMy02NC0zMi02NHMtMzIgMjguNy0zMiA2NHMxNC4zIDY0IDMyIDY0ek0xNDQgMjA4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTY0IDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptNDggMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem04MC0xNmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXRQb3J0YWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyVjY0SDMyMFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDAgMCAxNC4zIDAgMzJ6TTI0IDk2SDB2MjRWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjR2LThIMjcydjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxMjAgOTZIMjk2IDI0ek0yNTYgMjQwdjY0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMEMxMC43IDAgMCAxMC43IDAgMjRTMTAuNyA0OCAyNCA0OGg4VjE5Ni45Yy0xLjkgMS40LTMuOCAyLjktNS42IDQuNEMxMC45IDIxNC41IDAgMjMyLjkgMCAyNTZjMCA0Ni45IDE0LjMgODQuMSAzNyAxMTIuNWMxNC4yIDE3LjcgMzEuMSAzMS4zIDQ4LjUgNDEuOEw2NS42IDQ2OS45Yy0zLjMgOS44LTEuNiAyMC41IDQuNCAyOC44czE1LjcgMTMuMyAyNiAxMy4zSDM1MmMxMC4zIDAgMTkuOS00LjkgMjYtMTMuM3M3LjctMTkuMSA0LjQtMjguOGwtMTkuOC01OS41YzE3LjQtMTAuNSAzNC4zLTI0LjEgNDguNS00MS44YzIyLjctMjguNCAzNy02NS41IDM3LTExMi41YzAtMjMuMS0xMC45LTQxLjUtMjYuNC01NC42Yy0xLjgtMS41LTMuNy0zLTUuNi00LjRWNDhoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyNHpNMzg0IDI1Ni4zYzAgMS0uMyAyLjYtMy44IDUuNmMtNC44IDQuMS0xNCA5LTI5LjMgMTMuNEMzMjAuNSAyODQgMjc2LjEgMjg4IDIyNCAyODhzLTk2LjUtNC0xMjYuOS0xMi44Yy0xNS4zLTQuNC0yNC41LTkuMy0yOS4zLTEzLjRjLTMuNS0zLTMuOC00LjYtMy44LTUuNmwwLS4zIDAtLjFjMC0xIDAtMi41IDMuOC01LjhjNC44LTQuMSAxNC05IDI5LjMtMTMuNEMxMjcuNSAyMjggMTcxLjkgMjI0IDIyNCAyMjRzOTYuNSA0IDEyNi45IDEyLjhjMTUuMyA0LjQgMjQuNSA5LjMgMjkuMyAxMy40YzMuOCAzLjIgMy44IDQuOCAzLjggNS44bDAgLjEgMCAuM3pNMzI4LjIgMzg0bC0uMiAuNSAwLS41aC4yek0xMTIgNjRoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXRzUG9ydGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEgyMjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMFYzMkMwIDE0LjMgMTQuMyAwIDMyIDB6TTAgOTZIMjQgMjMyaDI0djI0VjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHYtOEg0OHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjEyMCA5NnpNMTkyIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNnpNMzUyIDBINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDMyMFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzIwIDk2aDI0SDU1MmgyNHYyNFY0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR2LThIMzY4djhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTIwIDk2ek01MTIgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb29sYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA4OGwwIDQwIDE2MCAwIDAtNDBjMC00LjQtMy42LTgtOC04TDE4NCA4MGMtNC40IDAtOCAzLjYtOCA4em0tNDggNDBsMC00MGMwLTMwLjkgMjUuMS01NiA1Ni01NmwxNDQgMGMzMC45IDAgNTYgMjUuMSA1NiA1NmwwIDQwIDI4LjEgMGMxMi43IDAgMjQuOSA1LjEgMzMuOSAxNC4xbDUxLjkgNTEuOWM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOWwwIDkyLjEtMTI4IDAgMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMyLTEyOCAwIDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAzMkwwIDMyMGwwLTkyLjFjMC0xMi43IDUuMS0yNC45IDE0LjEtMzMuOWw1MS45LTUxLjljOS05IDIxLjItMTQuMSAzMy45LTE0LjFsMjguMSAwek0wIDQxNmwwLTY0IDEyOCAwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMTI4IDBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwxMjggMCAwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvb3RoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xIDUyLjFDMTY5LjMgMzkuMSAxNDguNyAzMiAxMjcuNSAzMkM3NC43IDMyIDMyIDc0LjcgMzIgMTI3LjV2Ni4yYzAgMTUuOCAzLjcgMzEuMyAxMC43IDQ1LjVsMjMuNSA0Ny4xYzQuNSA4LjkgNy42IDE4LjQgOS40IDI4LjJsMzYuNyAyMDUuOGMyIDExLjIgMTEuNiAxOS40IDIyLjkgMTkuOHMyMS40LTcuNCAyNC0xOC40bDI4LjktMTIxLjNDMTkyLjIgMzIzLjcgMjA3IDMxMiAyMjQgMzEyczMxLjggMTEuNyAzNS44IDI4LjNsMjguOSAxMjEuM2MyLjYgMTEuMSAxMi43IDE4LjggMjQgMTguNHMyMC45LTguNiAyMi45LTE5LjhsMzYuNy0yMDUuOGMxLjgtOS44IDQuOS0xOS4zIDkuNC0yOC4ybDIzLjUtNDcuMWM3LjEtMTQuMSAxMC43LTI5LjcgMTAuNy00NS41di0yLjFjMC01NS00NC42LTk5LjYtOTkuNi05OS42Yy0yNC4xIDAtNDcuNCA4LjgtNjUuNiAyNC42bC0zLjIgMi44IDE5LjUgMTUuMmM3IDUuNCA4LjIgMTUuNSAyLjggMjIuNXMtMTUuNSA4LjItMjIuNSAyLjhsLTI0LjQtMTktMzctMjguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9yaWlHYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODBjMCAyNi41IDIxLjUgNDggNDggNDhINjR2NjRoNjRWMTI4aDk2djY0aDY0VjEyOGg5NnY2NGg2NFYxMjhoMTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMuNEM1MTIgNiA1MDYgMCA0OTguNiAwYy0xLjcgMC0zLjQgLjMtNSAxbC00OSAxOS42QzQyNS43IDI4LjEgNDA1LjUgMzIgMzg1LjIgMzJIMTI2LjhjLTIwLjQgMC00MC41LTMuOS01OS40LTExLjRMMTguNCAxYy0xLjYtLjYtMy4zLTEtNS0xQzYgMCAwIDYgMCAxMy40Vjgwek02NCAyODhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4SDM4NFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvcm5hZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMlY0NS42QzAgNjIuNyAxLjcgNzkuNiA1IDk2SDM1Ny44YzMuMi02LjkgNy41LTEzLjMgMTMtMTguOGwzOC42LTM4LjZjNC4yLTQuMiA2LjYtMTAgNi42LTE2QzQxNiAxMC4xIDQwNS45IDAgMzkzLjQgMEgzMkMxNC4zIDAgMCAxNC4zIDAgMzJ6bTM1Mi4yIDk2SDEzLjZjMTIuMiAzNS45IDMyLjMgNjguNyA1OC44IDk2SDQxMmwtNDcuMi02Mi45Yy03LjMtOS43LTExLjYtMjEuMi0xMi42LTMzLjF6bS0yMjYgMTM4LjJsMTE2LjQgNjguNWM4LjIgNC44IDE1LjggMTAuNyAyMi41IDE3LjNINDQ1YzItOS44IDMtMTkuOSAzLTMwLjFjMC0yMy01LjMtNDUuNS0xNS4zLTY1LjlIMTEwLjJjNS4yIDMuNiAxMC41IDcgMTYgMTAuMnpNMjg4IDM4NGMxMC4zIDIxLjQgMTMuOCA0NS41IDkuOSA2OWwtNS45IDM1LjdjLTIgMTIuMiA3LjQgMjMuNCAxOS44IDIzLjRjNS4zIDAgMTAuNC0yLjEgMTQuMi01LjlsNzguMi03OC4yYzEyLjgtMTIuOCAyMy4xLTI3LjcgMzAuNC00My45SDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG93ZXJCcm9hZGNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAuMyA0NEM2OS44IDY5LjkgNjQgOTguMiA2NCAxMjhzNS44IDU4LjEgMTYuMyA4NGM2LjYgMTYuNC0xLjMgMzUtMTcuNyA0MS43cy0zNS0xLjMtNDEuNy0xNy43QzcuNCAyMDIuNiAwIDE2Ni4xIDAgMTI4UzcuNCA1My40IDIwLjkgMjBDMjcuNiAzLjYgNDYuMi00LjMgNjIuNiAyLjNTODYuOSAyNy42IDgwLjMgNDR6TTU1NS4xIDIwQzU2OC42IDUzLjQgNTc2IDg5LjkgNTc2IDEyOHMtNy40IDc0LjYtMjAuOSAxMDhjLTYuNiAxNi40LTI1LjMgMjQuMy00MS43IDE3LjdTNDg5LjEgMjI4LjQgNDk1LjcgMjEyYzEwLjUtMjUuOSAxNi4zLTU0LjIgMTYuMy04NHMtNS44LTU4LjEtMTYuMy04NEM0ODkuMSAyNy42IDQ5NyA5IDUxMy40IDIuM3MzNSAxLjMgNDEuNyAxNy43ek0zNTIgMTI4YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTgzLjRjLTE5LjEtMTEuMS0zMi0zMS43LTMyLTU1LjRjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHpNMTcwLjYgNzYuOEMxNjMuOCA5Mi40IDE2MCAxMDkuNyAxNjAgMTI4czMuOCAzNS42IDEwLjYgNTEuMmM3LjEgMTYuMi0uMyAzNS4xLTE2LjUgNDIuMXMtMzUuMS0uMy00Mi4xLTE2LjVjLTEwLjMtMjMuNi0xNi00OS42LTE2LTc2LjhzNS43LTUzLjIgMTYtNzYuOGM3LjEtMTYuMiAyNS45LTIzLjYgNDIuMS0xNi41czIzLjYgMjUuOSAxNi41IDQyLjF6TTQ2NCA1MS4yYzEwLjMgMjMuNiAxNiA0OS42IDE2IDc2LjhzLTUuNyA1My4yLTE2IDc2LjhjLTcuMSAxNi4yLTI1LjkgMjMuNi00Mi4xIDE2LjVzLTIzLjYtMjUuOS0xNi41LTQyLjFjNi44LTE1LjYgMTAuNi0zMi45IDEwLjYtNTEuMnMtMy44LTM1LjYtMTAuNi01MS4yYy03LjEtMTYuMiAuMy0zNS4xIDE2LjUtNDIuMXMzNS4xIC4zIDQyLjEgMTYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG93ZXJDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyLjYgMi4zQzQ2LjItNC4zIDI3LjYgMy42IDIwLjkgMjBDNy40IDUzLjQgMCA4OS45IDAgMTI4czcuNCA3NC42IDIwLjkgMTA4YzYuNiAxNi40IDI1LjMgMjQuMyA0MS43IDE3LjdTODYuOSAyMjguNCA4MC4zIDIxMkM2OS44IDE4Ni4xIDY0IDE1Ny44IDY0IDEyOHM1LjgtNTguMSAxNi4zLTg0Qzg2LjkgMjcuNiA3OSA5IDYyLjYgMi4zem00NTAuOCAwQzQ5NyA5IDQ4OS4xIDI3LjYgNDk1LjcgNDRDNTA2LjIgNjkuOSA1MTIgOTguMiA1MTIgMTI4cy01LjggNTguMS0xNi4zIDg0Yy02LjYgMTYuNCAxLjMgMzUgMTcuNyA0MS43czM1LTEuMyA0MS43LTE3LjdjMTMuNS0zMy40IDIwLjktNjkuOSAyMC45LTEwOHMtNy40LTc0LjYtMjAuOS0xMDhDNTQ4LjQgMy42IDUyOS44LTQuMyA1MTMuNCAyLjN6TTM0MC4xIDE2NS4yYzcuNS0xMC41IDExLjktMjMuMyAxMS45LTM3LjJjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRjMCAxMy45IDQuNCAyNi43IDExLjkgMzcuMkw5OC45IDQ2Ni44Yy03LjMgMTYuMS0uMiAzNS4xIDE1LjkgNDIuNHMzNS4xIC4yIDQyLjQtMTUuOUwxNzcuNyA0NDhIMzk4LjNsMjAuNiA0NS4yYzcuMyAxNi4xIDI2LjMgMjMuMiA0Mi40IDE1LjlzMjMuMi0yNi4zIDE1LjktNDIuNEwzNDAuMSAxNjUuMnpNMzY5LjIgMzg0SDIwNi44bDE0LjUtMzJIMzU0LjdsMTQuNSAzMnpNMjg4IDIwNS4zTDMyNS42IDI4OEgyNTAuNEwyODggMjA1LjN6TTE2My4zIDczLjZjNS4zLTEyLjEtLjItMjYuMy0xMi40LTMxLjZzLTI2LjMgLjItMzEuNiAxMi40QzEwOS41IDc3IDEwNCAxMDEuOSAxMDQgMTI4czUuNSA1MSAxNS4zIDczLjZjNS4zIDEyLjEgMTkuNSAxNy43IDMxLjYgMTIuNHMxNy43LTE5LjUgMTIuNC0zMS42QzE1NiAxNjUuOCAxNTIgMTQ3LjQgMTUyIDEyOHM0LTM3LjggMTEuMy01NC40ek00NTYuNyA1NC40Yy01LjMtMTIuMS0xOS41LTE3LjctMzEuNi0xMi40cy0xNy43IDE5LjUtMTIuNCAzMS42QzQyMCA5MC4yIDQyNCAxMDguNiA0MjQgMTI4cy00IDM3LjgtMTEuMyA1NC40Yy01LjMgMTIuMSAuMiAyNi4zIDEyLjQgMzEuNnMyNi4zLS4yIDMxLjYtMTIuNEM0NjYuNSAxNzkgNDcyIDE1NC4xIDQ3MiAxMjhzLTUuNS01MS0xNS4zLTczLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvd2VyT2JzZXJ2YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQxLjcgMy40YzktNC41IDE5LjYtNC41IDI4LjYgMGwxNjAgODBjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOUM0MzkgMTM3LjUgNDI3LjcgMTQ0IDQxNiAxNDR2ODBjMCAxNy43LTE0LjMgMzItMzIgMzJoLTQuOWwzMiAxOTJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NC41Yy0uNCAwLS44IDAtMS4xIDBIMTI4LjZjLS40IDAtLjggMC0xLjEgMEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg2OC45bDMyLTE5MkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE0NGMtMTEuNyAwLTIzLTYuNS0yOC42LTE3LjdjLTcuOS0xNS44LTEuNS0zNSAxNC4zLTQyLjlsMTYwLTgwek0zMTQuNSA0NDhMMjU2IDM5OS4yIDE5Ny41IDQ0OGgxMTd6TTE5Ny44IDI1NmwtNC43IDI4LjNMMjU2IDMzNi44bDYyLjktNTIuNUwzMTQuMiAyNTZIMTk3Ljh6bS0xMy45IDgzLjJsLTExLjIgNjdMMjE4LjUgMzY4bC0zNC42LTI4Ljh6TTI5My41IDM2OGw0NS44IDM4LjEtMTEuMi02N0wyOTMuNSAzNjh6TTE3NiAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMzM2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhY3RvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGMwLTM1LjMgMjguNy02NCA2NC02NEgyNjYuM2MyNi4yIDAgNDkuNyAxNS45IDU5LjQgNDAuMkwzNzMuNyAxNjBINDgwVjEyNi4yYzAtMjQuOCA1LjgtNDkuMyAxNi45LTcxLjZsMi41LTVjNy45LTE1LjggMjcuMS0yMi4yIDQyLjktMTQuM3MyMi4yIDI3LjEgMTQuMyA0Mi45bC0yLjUgNWMtNi43IDEzLjMtMTAuMSAyOC0xMC4xIDQyLjlWMTYwaDU2YzIyLjEgMCA0MCAxNy45IDQwIDQwdjQ1LjRjMCAxNi41LTguNSAzMS45LTIyLjYgNDAuN2wtNDMuMyAyNy4xYy0xNC4yLTUuOS0yOS44LTkuMi00Ni4xLTkuMmMtMzkuMyAwLTc0LjEgMTguOS05NiA0OEgzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJoLTguMmMtMS43IDQuOC0zLjcgOS41LTUuOCAxNC4xbDUuOCA1LjhjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTIyLjYgMjIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTUuOC01LjhjLTQuNiAyLjItOS4zIDQuMS0xNC4xIDUuOFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnYtOC4yYy00LjgtMS43LTkuNS0zLjctMTQuMS01LjhsLTUuOCA1LjhjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwTDQwLjIgNDQ5LjFjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDUuOC01LjhjLTIuMi00LjYtNC4xLTkuMy01LjgtMTQuMUgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDguMmMxLjctNC44IDMuNy05LjUgNS44LTE0LjFsLTUuOC01LjhjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDIyLjYtMjIuNmM5LTkgMjEuOS0xMS41IDMzLjEtNy42VjE5MiAxNjAgNjR6bTE3MC4zIDBIMTYwdjk2aDMySDMwNC43TDI2Ni4zIDY0ek0xNzYgMjU2YTgwIDgwIDAgMSAwIDAgMTYwIDgwIDgwIDAgMSAwIDAtMTYwek01MjggNDQ4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMCA2NGMtNDguNiAwLTg4LTM5LjQtODgtODhjMC0yOS44IDE0LjgtNTYuMSAzNy40LTcyYzE0LjMtMTAuMSAzMS44LTE2IDUwLjYtMTZjMi43IDAgNS4zIC4xIDcuOSAuM2M0NC45IDQgODAuMSA0MS43IDgwLjEgODcuN2MwIDQ4LjYtMzkuNCA4OC04OCA4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhZGVtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NS42IDEwOC44Yy04LjMtMTEtMjIuNy0xNS41LTM1LjctMTEuMlMyODggMTE0LjIgMjg4IDEyOFYzODRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRsODYuNCAxMTUuMmM2IDguMSAxNS41IDEyLjggMjUuNiAxMi44czE5LjYtNC43IDI1LjYtMTIuOEw1NzYgMjI0VjM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjEyOGMwLTEzLjgtOC44LTI2LTIxLjktMzAuNHMtMjcuNSAuMS0zNS43IDExLjJMNDY0IDI2Ni43IDM0NS42IDEwOC44ek0wIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NlYzODRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNjBoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJDMTQuMyA5NiAwIDExMC4zIDAgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFmZmljTGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwczE2MC03MS42IDE2MC0xNjBWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTk2IDQxNmE0OCA0OCAwIDEgMSAwLTk2IDQ4IDQ4IDAgMSAxIDAgOTZ6bTQ4LTE3NmE0OCA0OCAwIDEgMSAtOTYgMCA0OCA0OCAwIDEgMSA5NiAwem0tNDgtODBhNDggNDggMCAxIDEgMC05NiA0OCA0OCAwIDEgMSAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODBWMzM2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDY1LjFjNy44LTU0LjMgNTQuNC05NiAxMTAuOS05NnMxMDMuMSA0MS43IDExMC45IDk2SDQ4OGg4SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1NDRWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTgwIDk2YzguOCAwIDE2IDcuMiAxNiAxNmwwIDEzMS4yYy0xMS40IDUuOS0yMi4yIDEyLjktMzIgMjFWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptOTYgMTI4Yy01LjQgMC0xMC43IC4yLTE2IC43TDE2MCAxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDExMi43Yy01LjMtLjUtMTAuNi0uNy0xNi0uN3ptODAgMTkuMkwyNTYgMTEyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAxNTIuMmMtOS44LTguMS0yMC42LTE1LjItMzItMjF6TTM2OCA5NmM4LjggMCAxNiA3LjIgMTYgMTZsMCAxOTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xOTJjMC04LjggNy4yLTE2IDE2LTE2em0xMTIgMTZsMCAxOTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpNMTc2IDQ4MGE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMC0xMTJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpblN1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzQzIDAgMCA0MyAwIDk2VjM1MmMwIDQ4IDM1LjIgODcuNyA4MS4xIDk0LjlsLTQ2IDQ2QzI4LjEgNDk5LjkgMzMuMSA1MTIgNDMgNTEySDgyLjdjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMMTYwIDQ0OEgyODhsNTQuNiA1NC42YzYgNiAxNC4xIDkuNCAyMi42IDkuNEg0MDVjMTAgMCAxNS0xMi4xIDcuOS0xOS4xbC00Ni00NmM0Ni03LjEgODEuMS00Ni45IDgxLjEtOTQuOVY5NmMwLTUzLTQzLTk2LTk2LTk2SDk2ek02NCAxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJoODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOHpNMjcyIDk2aDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDI3MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyek02NCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMjg4LTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhaW5UcmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg2LjggNDhjLTEyLjIgMC0yMy42IDUuNS0zMS4yIDE1TDQyLjcgNzlDMzQuNSA4OS4zIDE5LjQgOTEgOSA4Mi43Uy0zIDU5LjQgNS4zIDQ5TDE4IDMzQzM0LjcgMTIuMiA2MCAwIDg2LjggMEgzNjEuMmMyNi43IDAgNTIgMTIuMiA2OC43IDMzbDEyLjggMTZjOC4zIDEwLjQgNi42IDI1LjUtMy44IDMzLjdzLTI1LjUgNi42LTMzLjctMy43TDM5Mi41IDYzYy03LjYtOS41LTE5LjEtMTUtMzEuMi0xNUgyNDhWOTZoNDBjNTMgMCA5NiA0MyA5NiA5NlYzNTJjMCAzMC42LTE0LjMgNTcuOC0zNi42IDc1LjRsNjUuNSA2NS41YzcuMSA3LjEgMi4xIDE5LjEtNy45IDE5LjFIMzY1LjNjLTguNSAwLTE2LjYtMy40LTIyLjYtOS40TDI4OCA0NDhIMTYwbC01NC42IDU0LjZjLTYgNi0xNC4xIDkuNC0yMi42IDkuNEg0M2MtMTAgMC0xNS0xMi4xLTcuOS0xOS4xbDY1LjUtNjUuNUM3OC4zIDQwOS44IDY0IDM4Mi42IDY0IDM1MlYxOTJjMC01MyA0My05NiA5Ni05Nmg0MFY0OEg4Ni44ek0xNjAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MHptMzIgMTkyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTk2IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM0MyAwIDAgNDMgMCA5NlYzNTJjMCA0OCAzNS4yIDg3LjcgODEuMSA5NC45bC00NiA0NkMyOC4xIDQ5OS45IDMzLjEgNTEyIDQzIDUxMkg4Mi43YzguNSAwIDE2LjYtMy40IDIyLjYtOS40TDE2MCA0NDhIMjg4bDU0LjYgNTQuNmM2IDYgMTQuMSA5LjQgMjIuNiA5LjRINDA1YzEwIDAgMTUtMTIuMSA3LjktMTkuMWwtNDYtNDZjNDYtNy4xIDgxLjEtNDYuOSA4MS4xLTk0LjlWOTZjMC01My00My05Ni05Ni05Nkg5NnpNNjQgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NnpNMjI0IDI4OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYW5zZ2VuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAwYzYuNSAwIDEyLjMgMy45IDE0LjggOS45czEuMSAxMi45LTMuNSAxNy40bC0zMSAzMUwxMTIgNzguMWw3LTdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC03IDcgMTUuMiAxNS4yQzE4Ny43IDEwNy42IDIyMC41IDk2IDI1NiA5NnM2OC4zIDExLjYgOTQuOSAzMS4ybDY4LjgtNjguOC0zMS0zMWMtNC42LTQuNi01LjktMTEuNS0zLjUtMTcuNHM4LjMtOS45IDE0LjgtOS45aDk2YzguOCAwIDE2IDcuMiAxNiAxNnY5NmMwIDYuNS0zLjkgMTIuMy05LjkgMTQuOHMtMTIuOSAxLjEtMTcuNC0zLjVsLTMxLTMxLTY4LjggNjguOEM0MDQuNCAxODcuNyA0MTYgMjIwLjUgNDE2IDI1NmMwIDgwLjItNTkgMTQ2LjYtMTM2IDE1OC4yVjQzMmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODB2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHYtOEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMTZWNDE0LjJDMTU1IDQwMi42IDk2IDMzNi4yIDk2IDI1NmMwLTM1LjUgMTEuNi02OC4zIDMxLjItOTQuOUwxMTIgMTQ1LjlsLTcgN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw3LTdMNTguMyA5Mi4zbC0zMSAzMWMtNC42IDQuNi0xMS41IDUuOS0xNy40IDMuNVMwIDExOC41IDAgMTEyVjE2QzAgNy4yIDcuMiAwIDE2IDBoOTZ6TTM1MiAyNTZhOTYgOTYgMCAxIDAgLTE5MiAwIDk2IDk2IDAgMSAwIDE5MiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaEFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYzLjggMEgyODQuMmMxMi4xIDAgMjMuMiA2LjggMjguNiAxNy43TDMyMCAzMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0UzE0LjMgMzIgMzIgMzJoOTZsNy4yLTE0LjNDMTQwLjYgNi44IDE1MS43IDAgMTYzLjggMHpNMzIgMTI4SDQxNkwzOTQuOCA0NjdjLTEuNiAyNS4zLTIyLjYgNDUtNDcuOSA0NUgxMDEuMWMtMjUuMyAwLTQ2LjMtMTkuNy00Ny45LTQ1TDMyIDEyOHptMTkyIDY0Yy02LjQgMC0xMi41IDIuNS0xNyA3bC04MCA4MGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDM5LTM5VjQwOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI3My45bDM5IDM5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtODAtODBjLTQuNS00LjUtMTAuNi03LTE3LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoQ2FuQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjMuOCAwSDI4NC4yYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMmg5Nmw3LjItMTQuM0MxNDAuNiA2LjggMTUxLjcgMCAxNjMuOCAwek0zMiAxMjhINDE2VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4em0xOTIgNjRjLTYuNCAwLTEyLjUgMi41LTE3IDdsLTgwIDgwYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMzktMzlWNDA4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjczLjlsMzkgMzljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC04MC04MGMtNC41LTQuNS0xMC42LTctMTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhc2hDYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM1LjIgMTcuN0MxNDAuNiA2LjggMTUxLjcgMCAxNjMuOCAwSDI4NC4yYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMmg5Nmw3LjItMTQuM3pNMzIgMTI4SDQxNlY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOHptOTYgNjRjLTguOCAwLTE2IDcuMi0xNiAxNlY0MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2em05NiAwYy04LjggMC0xNiA3LjItMTYgMTZWNDMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnptOTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2VjQzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNS4yIDE3LjdMMTI4IDMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwbC03LjItMTQuM0MzMDcuNCA2LjggMjk2LjMgMCAyODQuMiAwSDE2My44Yy0xMi4xIDAtMjMuMiA2LjgtMjguNiAxNy43ek00MTYgMTI4SDMyTDUzLjIgNDY3YzEuNiAyNS4zIDIyLjYgNDUgNDcuOSA0NUgzNDYuOWMyNS4zIDAgNDYuMy0xOS43IDQ3LjktNDVMNDE2IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJlZUNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjE5Mmg0MFYxMjBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY3MmgyNGMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDMyIDMzNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6bTY0IDMydjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNiA4MGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgzNjh6TTM1MiAyNzJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNzYtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZINTI4ek01MTIgMzY4djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg1MjhjLTguOCAwLTE2IDcuMi0xNiAxNnpNMjI0IDE2MGMwIDYtMSAxMS0yIDE2YzIwIDE0IDM0IDM4IDM0IDY0YzAgNDUtMzYgODAtODAgODBIMTYwVjQ4MGMwIDE4LTE1IDMyLTMyIDMyYy0xOCAwLTMyLTE0LTMyLTMyVjMyMEg4MGMtNDUgMC04MC0zNS04MC04MGMwLTI2IDEzLTUwIDMzLTY0Yy0xLTUtMS0xMC0xLTE2YzAtNTMgNDItOTYgOTYtOTZjNTMgMCA5NiA0MyA5NiA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTAuNiA1LjlMNjIgMTY5LjRjLTMuOSA0LjItNiA5LjgtNiAxNS41QzU2IDE5Ny43IDY2LjMgMjA4IDc5LjEgMjA4SDEwNEwzMC42IDI4MS40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMjQgMzA5LjkgMzQuMSAzMjAgNDYuNiAzMjBIODBMNS40IDQwOS41QzEuOSA0MTMuNyAwIDQxOSAwIDQyNC41YzAgMTMgMTAuNSAyMy41IDIzLjUgMjMuNUgxOTJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDhINDI0LjVjMTMgMCAyMy41LTEwLjUgMjMuNS0yMy41YzAtNS41LTEuOS0xMC44LTUuNC0xNUwzNjggMzIwaDMzLjRjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZjMC02LTIuNC0xMS44LTYuNi0xNkwzNDQgMjA4aDI0LjljMTIuNyAwIDIzLjEtMTAuMyAyMy4xLTIzLjFjMC01LjctMi4xLTExLjMtNi0xNS41TDIzNy40IDUuOUMyMzQgMi4xIDIyOS4xIDAgMjI0IDBzLTEwIDIuMS0xMy40IDUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJpYW5nbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjMTQuMiAwIDI3LjMgNy41IDM0LjUgMTkuOGwyMTYgMzY4YzcuMyAxMi40IDcuMyAyNy43IC4yIDQwLjFTNDg2LjMgNDgwIDQ3MiA0ODBINDBjLTE0LjMgMC0yNy42LTcuNy0zNC43LTIwLjFzLTctMjcuOCAuMi00MC4xbDIxNi0zNjhDMjI4LjcgMzkuNSAyNDEuOCAzMiAyNTYgMzJ6bTAgMTI4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYyOTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxODRjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTMyIDIyNGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcm9waHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBIMTc2Yy0yNi41IDAtNDguMSAyMS44LTQ3LjEgNDguMmMuMiA1LjMgLjQgMTAuNiAuNyAxNS44SDI0QzEwLjcgNjQgMCA3NC43IDAgODhjMCA5Mi42IDMzLjUgMTU3IDc4LjUgMjAwLjdjNDQuMyA0My4xIDk4LjMgNjQuOCAxMzguMSA3NS44YzIzLjQgNi41IDM5LjQgMjYgMzkuNCA0NS42YzAgMjAuOS0xNyAzNy45LTM3LjkgMzcuOUgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM1Ny45QzMzNyA0NDggMzIwIDQzMSAzMjAgNDEwLjFjMC0xOS42IDE1LjktMzkuMiAzOS40LTQ1LjZjMzkuOS0xMSA5My45LTMyLjcgMTM4LjItNzUuOEM1NDIuNSAyNDUgNTc2IDE4MC42IDU3NiA4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNEg0NDYuNGMuMy01LjIgLjUtMTAuNCAuNy0xNS44QzQ0OC4xIDIxLjggNDI2LjUgMCA0MDAgMHpNNDguOSAxMTJoODQuNGM5LjEgOTAuMSAyOS4yIDE1MC4zIDUxLjkgMTkwLjZjLTI0LjktMTEtNTAuOC0yNi41LTczLjItNDguM2MtMzItMzEuMS01OC03Ni02My0xNDIuM3pNNDY0LjEgMjU0LjNjLTIyLjQgMjEuOC00OC4zIDM3LjMtNzMuMiA0OC4zYzIyLjctNDAuMyA0Mi44LTEwMC41IDUxLjktMTkwLjZoODQuNGMtNS4xIDY2LjMtMzEuMSAxMTEuMi02MyAxNDIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJvd2VsQnJpY2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MC44IDQuOEMyNTAuMyAxMC42IDI1NiAyMC45IDI1NiAzMnY3Mmg4OWMzLjYtMTMuOCAxNi4xLTI0IDMxLTI0aDg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDM3NmMtMTQuOSAwLTI3LjQtMTAuMi0zMS0yNEgyNTZ2NzJjMCAxMS4xLTUuNyAyMS40LTE1LjIgMjcuMnMtMjEuMiA2LjQtMzEuMSAxLjRsLTE5Mi05NkM2LjggMTUxLjIgMCAxNDAuMSAwIDEyOHM2LjgtMjMuMiAxNy43LTI4LjZsMTkyLTk2YzkuOS01IDIxLjctNC40IDMxLjEgMS40ek0yODggMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI1NnpNMzIgMzg0aDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAwSDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJvd2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0My45IDIxMy40TDI0NS4zIDMxMmw2NS40IDY1LjRjNy45IDcuOSAxMS4xIDE5LjQgOC40IDMwLjNzLTEwLjggMTkuNi0yMS41IDIyLjlsLTI1NiA4MGMtMTEuNCAzLjUtMjMuOCAuNS0zMi4yLTcuOVMtMi4xIDQ4MS44IDEuNSA0NzAuNWw4MC0yNTZjMy4zLTEwLjcgMTItMTguOSAyMi45LTIxLjVzMjIuNCAuNSAzMC4zIDguNEwyMDAgMjY2LjdsOTguNi05OC42Yy0xNC4zLTE0LjYtMTQuMi0zOCAuMy01Mi41bDk1LjQtOTUuNGMyNi45LTI2LjkgNzAuNS0yNi45IDk3LjUgMHMyNi45IDcwLjUgMCA5Ny41bC05NS40IDk1LjRjLTE0LjUgMTQuNS0zNy45IDE0LjYtNTIuNSAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDM2OGMyNi41IDAgNDggMjEuNSA0OCA0OFY5Nmg1MC43YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDU4OS4zIDE5MmMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zVjI1NnYzMiA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1NzZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZIMjU2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OHpNNDE2IDI1Nkg1NDRWMjM3LjNMNDY2LjcgMTYwSDQxNnY5NnpNMTYwIDQ2NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTM2OC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0yNTcgOTVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMzkgMzlIOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjYyLjFsLTM5IDM5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsODAtODBjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMjU3IDk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0Ryb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBIMzY4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4Vjk2aDUwLjdjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMNTg5LjMgMTkyYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWMjU2djMyIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDU3NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgyNTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4ek00MTYgMjU2SDU0NFYyMzcuM0w0NjYuNyAxNjBINDE2djk2ek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMzY4LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTIwOCAyNzJjMzkuOCAwIDcyLTI5LjYgNzItNjZjMC0yNy0zOS40LTgyLjktNTkuOS0xMTAuM2MtNi4xLTguMi0xOC4xLTguMi0yNC4yIDBDMTc1LjQgMTIzIDEzNiAxNzkgMTM2IDIwNmMwIDM2LjUgMzIuMiA2NiA3MiA2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tGYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAwQzg1LjUgMCA2NCAyMS41IDY0IDQ4Vjk2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDY0IDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg2NCA0OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg2NCAyNDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINjQgMTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINjQgMjA4YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDY0VjQxNmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2SDM4NGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjI4OCAyNTYgMjM3LjNjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNTEyIDExNC43Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQxNlY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgxMTJ6TTU0NCAyMzcuM1YyNTZINDE2VjE2MGg1MC43TDU0NCAyMzcuM3pNMTYwIDM2OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTI3MiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0ZpZWxkVW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDNjAuNyAzMiAzMiA2MC43IDMyIDk2djMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnYzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2SDM4NGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjI4OGMwLTM1LjMtMjguNy02NC02NC02NGgtNC4yYy0uNC0xLjEtLjktMi4xLTEuMy0zLjJMNDg1LjcgMTAyYy0xMC4zLTIzLjEtMzMuMi0zOC01OC41LTM4SDM3NS40QzM2NC40IDQ0LjkgMzQzLjcgMzIgMzIwIDMySDk2em0yODggOTZoNDMuMmw0Mi43IDk2SDM4NFYxMjh6TTExMiAzODRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzY4LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpNMjUzLjMgMTM1LjFsMzQuNyA1MlYxNDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40bC0zNC43LTUyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxNDRjMC03LjEgNC42LTEzLjMgMTEuNC0xNS4zczE0IC42IDE3LjkgNi40ek0xMjggMTQ0djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrRmllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRIMzIwYzIzLjcgMCA0NC40IDEyLjkgNTUuNCAzMmg1MS44YzI1LjMgMCA0OC4yIDE0LjkgNTguNSAzOGw1Mi44IDExOC44Yy41IDEuMSAuOSAyLjEgMS4zIDMuMkg1NDRjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTc2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDI1NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlYyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMlY5NnpNMzg0IDIyNGg4NS45bC00Mi43LTk2SDM4NHY5NnpNMTYwIDQzMmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTM2OC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0Zyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODBDMCAzNS44IDM1LjggMCA4MCAwSDQzMmM0NC4yIDAgODAgMzUuOCA4MCA4MFYzNjhjMCAyNi4yLTEyLjYgNDkuNC0zMiA2NHY0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0OEgxMjh2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQzMkMxMi42IDQxNy40IDAgMzk0LjIgMCAzNjhWODB6bTEyOS45IDcyLjJMMTEyIDIyNEg0MDBsLTE3LjktNzEuOEMzNzguNSAxMzggMzY1LjcgMTI4IDM1MSAxMjhIMTYxYy0xNC43IDAtMjcuNSAxMC0zMSAyNC4yek0xMjggMzIwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTI4OCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEgzNjhjMjYuNSAwIDQ4IDIxLjUgNDggNDhWOTZoNTAuN2MxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0w1ODkuMyAxOTJjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1YyNTZ2MzIgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTc2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDI1NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05Nkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTQxNiAyNTZINTQ0VjIzNy4zTDQ2Ni43IDE2MEg0MTZ2OTZ6TTE2MCA0NjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0zNjgtNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMTc2IDgwdjQ4bC00OCAwYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTkyaDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2SDI0MFY4MGMwLTguOC03LjItMTYtMTYtMTZIMTkyYy04LjggMC0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTW9uc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggNjR2NjRINDE2TDM2OCA2NEgyODh6TTQxOS4yIDI1LjZMNDk2IDEyOGg4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmMtMjkuMi0zOC45LTc1LjctNjQtMTI4LTY0cy05OC44IDI1LjEtMTI4IDY0SDI4OGMtMjkuMi0zOC45LTc1LjctNjQtMTI4LTY0cy05OC44IDI1LjEtMTI4IDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgyMjRWNDhjMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNnpNMTUyIDI1NmgxNmMxMi4xIDAgMjIuMSA4LjkgMjMuOCAyMC42YzcuNiAyLjIgMTQuOSA1LjMgMjEuNyA5YzkuNC03IDIyLjgtNi4zIDMxLjMgMi4zbDExLjMgMTEuM2M4LjYgOC42IDkuMyAyMS45IDIuMyAzMS4zYzMuNyA2LjggNi44IDE0LjEgOSAyMS43YzExLjYgMS43IDIwLjYgMTEuNyAyMC42IDIzLjh2MTZjMCAxMi4xLTguOSAyMi4xLTIwLjYgMjMuOGMtMi4yIDcuNi01LjMgMTQuOS05IDIxLjdjNyA5LjQgNi4zIDIyLjgtMi4zIDMxLjNsLTExLjMgMTEuM2MtOC42IDguNi0yMS45IDkuMy0zMS4zIDIuMmMtNi44IDMuNy0xNC4xIDYuOC0yMS43IDlDMTkwLjEgNTAzLjEgMTgwLjEgNTEyIDE2OCA1MTJIMTUyYy0xMi4xIDAtMjIuMS04LjktMjMuOC0yMC42Yy03LjYtMi4yLTE0LjktNS4zLTIxLjctOWMtOS40IDcuMS0yMi44IDYuMy0zMS4zLTIuMkw2My44IDQ2OC45Yy04LjYtOC42LTkuMy0yMS45LTIuMy0zMS4zYy0zLjctNi45LTYuOC0xNC4xLTktMjEuOEM0MC45IDQxNC4xIDMyIDQwNC4xIDMyIDM5MlYzNzZjMC0xMi4xIDguOS0yMi4xIDIwLjYtMjMuOGMyLjItNy42IDUuMy0xNC45IDktMjEuOGMtNy05LjQtNi4zLTIyLjggMi4zLTMxLjNsMTEuMy0xMS4zYzguNi04LjYgMjEuOS05LjMgMzEuMy0yLjNjNi44LTMuNyAxNC4xLTYuOCAyMS43LTljMS43LTExLjYgMTEuNy0yMC42IDIzLjgtMjAuNnptOCAxNzZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek00NDguMiAyNzYuNmMxLjctMTEuNiAxMS43LTIwLjYgMjMuOC0yMC42aDE2YzEyLjEgMCAyMi4xIDguOSAyMy44IDIwLjZjNy42IDIuMiAxNC45IDUuMyAyMS44IDljOS40LTcgMjIuOC02LjMgMzEuMyAyLjNsMTEuMyAxMS4zYzguNiA4LjYgOS4zIDIxLjkgMi4yIDMxLjNjMy43IDYuOCA2LjggMTQuMSA5IDIxLjdjMTEuNiAxLjcgMjAuNiAxMS43IDIwLjYgMjMuOHYxNmMwIDEyLjEtOC45IDIyLjEtMjAuNiAyMy44Yy0yLjIgNy42LTUuMyAxNC45LTkgMjEuN2M3IDkuNCA2LjMgMjIuOC0yLjIgMzEuM2wtMTEuMyAxMS4zYy04LjYgOC42LTIxLjkgOS4zLTMxLjMgMi4yYy02LjkgMy43LTE0LjEgNi44LTIxLjggOUM1MTAuMSA1MDMuMSA1MDAuMSA1MTIgNDg4IDUxMkg0NzJjLTEyLjEgMC0yMi4xLTguOS0yMy44LTIwLjZjLTcuNi0yLjItMTQuOS01LjMtMjEuNy05Yy05LjQgNy4xLTIyLjggNi4zLTMxLjMtMi4ybC0xMS4zLTExLjNjLTguNi04LjYtOS4zLTIxLjktMi4yLTMxLjNjLTMuNy02LjktNi44LTE0LjEtOS0yMS44QzM2MC45IDQxNC4xIDM1MiA0MDQuMSAzNTIgMzkyVjM3NmMwLTEyLjEgOC45LTIyLjEgMjAuNi0yMy44YzIuMi03LjYgNS4zLTE0LjkgOS0yMS44Yy03LTkuNC02LjMtMjIuOCAyLjItMzEuM2wxMS4zLTExLjNjOC42LTguNiAyMS45LTkuMyAzMS4zLTIuM2M2LjgtMy43IDE0LjEtNi44IDIxLjctOXpNNTI4IDM4NGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja01vdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjMwNHY4MCAxNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGMyNi4yIDAgNDkuNC0xMi42IDY0LTMyYzE0LjYgMTkuNCAzNy44IDMyIDY0IDMyYzQ0LjIgMCA4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDQxNmgzMy42Yy0xIDUuMi0xLjYgMTAuNS0xLjYgMTZjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTUuNS0uNi0xMC44LTEuNi0xNkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjg4IDI3MiAyNjEuN2MwLTkuMi0zLjItMTguMi05LTI1LjNsLTU4LjgtNzEuOGMtMTAuNi0xMy0yNi41LTIwLjUtNDMuMy0yMC41SDQ4MFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNNTg1IDI1Nkg0ODBWMTkyaDQ4LjhjMi40IDAgNC43IDEuMSA2LjIgMi45TDU4NSAyNTZ6TTUyOCAzNjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNzYgNDAwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTgwIDM2OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrUGlja3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OC42IDk2bDc2LjggOTZIMjg4Vjk2aDgwLjZ6TTIyNCA4MFYxOTJINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY1LjFjLS43IDUuMi0xLjEgMTAuNi0xLjEgMTZjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJzMTEyLTUwLjEgMTEyLTExMmMwLTUuNC0uNC0xMC44LTEuMS0xNmg2Ni4zYy0uNyA1LjItMS4xIDEwLjYtMS4xIDE2YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJjMC01LjQtLjQtMTAuOC0xLjEtMTZINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMkg1MjcuNEw0MTguNiA1NmMtMTIuMS0xNS4yLTMwLjUtMjQtNTAtMjRIMjcyYy0yNi41IDAtNDggMjEuNS00OCA0OHptMCAyODhhNDggNDggMCAxIDEgLTk2IDAgNDggNDggMCAxIDEgOTYgMHptMjg4IDBhNDggNDggMCAxIDEgLTk2IDAgNDggNDggMCAxIDEgOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDAgMGMtMzAuNiAwLTU2IDU0LjctNTYgODYuMVYxOTIuNUw3LjggMjc0LjNDMi45IDI3Ny4yIDAgMjgyLjQgMCAyODh2NjRjMCA1LjEgMi40IDkuOCA2LjQgMTIuOHM5LjMgMy45IDE0LjEgMi41bDEyMy40LTM3djgxLjJsLTUwIDQwYy0zLjggMy02IDcuNi02IDEyLjV2MzJjMCA1LjEgMi41IDEwIDYuNiAxM3M5LjUgMy44IDE0LjQgMi4yTDIwMCA0ODAuOSAyOTAuNCA1MTFjLTEuNi00LjctMi40LTkuOC0yLjQtMTVWNDYzLjRjLTE4LjItMTAuNS0zMC43LTI5LjctMzEuOS01MS44bC0uMS0uMVY0MDggMzI1LjUgMTg0bDAtMS4xIDAgMFY4Ni4xQzI1NiA1NC43IDIzMS41IDAgMjAwIDB6bTg4IDE3NlY0MDBjMCAyMC45IDEzLjQgMzguNyAzMiA0NS4zVjQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY0NDhINTQ0djQwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjQ0NS4zYzE4LjYtNi42IDMyLTI0LjQgMzItNDUuM1YxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzM2Yy0yNi41IDAtNDggMjEuNS00OCA0OHptNzkuOCA3OC43YzMuMy04LjcgMTEuMi0xNC43IDIwLjUtMTQuN0g1MzkuN2M5LjIgMCAxNy4yIDYgMjAuNSAxNC43TDU3NiAzMDRIMzUybDE1LjgtNDkuM3pNNTY4IDM1MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTMzNiAzNzZhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tSYW1wQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAwVjQwMGMwIDYxLjktNTAuMSAxMTItMTEyIDExMmMtNjEgMC0xMTAuNS00OC43LTExMi0xMDkuM0w0OC40IDUwMi45Yy0xNy4xIDQuNi0zNC42LTUuNC0zOS4zLTIyLjVzNS40LTM0LjYgMjIuNS0zOS4zTDM1MiAzNTMuOFY2NGMwLTM1LjMgMjguNy02NCA2NC02NEg2NDB6TTU3NiA0MDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMjMuMSAyMDcuN2MtNC42LTE3LjEgNS42LTM0LjYgMjIuNi0zOS4ybDQ2LjQtMTIuNCAyMC43IDc3LjNjMi4zIDguNSAxMS4xIDEzLjYgMTkuNiAxMS4zbDMwLjktOC4zYzguNS0yLjMgMTMuNi0xMS4xIDExLjMtMTkuNmwtMjAuNy03Ny4zIDQ2LjQtMTIuNGMxNy4xLTQuNiAzNC42IDUuNiAzOS4yIDIyLjZsNDEuNCAxNTQuNWM0LjYgMTcuMS01LjYgMzQuNi0yMi42IDM5LjJMMTAzLjcgMzg0LjljLTE3LjEgNC42LTM0LjYtNS42LTM5LjItMjIuNkwyMy4xIDIwNy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFYzNjhjMCAyNi41IDIxLjUgNDggNDggNDhINjRjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NkgzODRjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlYyODggMjU2IDIzNy4zYzAtMTctNi43LTMzLjMtMTguNy00NS4zTDUxMiAxMTQuN2MtMTItMTItMjguMy0xOC43LTQ1LjMtMTguN0g0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTQxNiAxNjBoNTAuN0w1NDQgMjM3LjNWMjU2SDQxNlYxNjB6TTExMiA0MTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzY4LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjMgMjQxLjNMMTUuMSAyMDAuNmMtOS4yLTE2LjItOC40LTM2LjUgNC41LTUwQzYxLjQgMTA2LjggMTQ0LjcgNDggMjU2IDQ4czE5NC42IDU4LjggMjM2LjQgMTAyLjZjMTIuOSAxMy41IDEzLjcgMzMuOCA0LjUgNTBsLTIzLjEgNDAuN2MtNy41IDEzLjItMjMuMyAxOS4zLTM3LjggMTQuNmwtODEuMS0yNi42Yy0xMy4xLTQuMy0yMi0xNi42LTIyLTMwLjRWMTQ0Yy00OS42LTE4LjEtMTA0LTE4LjEtMTUzLjYgMHY1NC44YzAgMTMuOC04LjkgMjYuMS0yMiAzMC40TDc2LjEgMjU1LjhjLTE0LjUgNC43LTMwLjMtMS40LTM3LjgtMTQuNnpNMzIgMzM2YzAtOC44IDcuMi0xNiAxNi0xNkg4MGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ4Yy04LjggMC0xNi03LjItMTYtMTZWMzM2em0wIDk2YzAtOC44IDcuMi0xNiAxNi0xNkg4MGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ4Yy04LjggMC0xNi03LjItMTYtMTZWNDMyek0xNDQgMzIwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTQ0Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZWMzM2em0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzMzZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0MzJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZ6bTE2IDgwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINDMyYy04LjggMC0xNi03LjItMTYtMTZWNDMyYzAtOC44IDcuMi0xNiAxNi0xNnpNMTI4IDQzMmMwLTguOCA3LjItMTYgMTYtMTZIMzY4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTQ0Yy04LjggMC0xNi03LjItMTYtMTZWNDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdXJraXNoTGlyYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTkuM0wyNDcuMiA2NS4yYzE3LTQuOSAzNC43IDUgMzkuNiAyMnMtNSAzNC43LTIyIDM5LjZMMTI4IDE2NS45djI5LjRsMTE5LjItMzQuMWMxNy00LjkgMzQuNyA1IDM5LjYgMjJzLTUgMzQuNy0yMiAzOS42TDEyOCAyNjEuOVY0MTZoNjMuOGM2OC4yIDAgMTI0LjQtNTMuNSAxMjcuOC0xMjEuNmwuNC04Yy45LTE3LjcgMTUuOS0zMS4yIDMzLjYtMzAuNHMzMS4yIDE1LjkgMzAuNCAzMy42bC0uNCA4QzM3OC41IDM5OS44IDI5NC4xIDQ4MCAxOTEuOCA0ODBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI4MC4xbC0yMy4yIDYuNmMtMTcgNC45LTM0LjctNS0zOS42LTIyczUtMzQuNyAyMi0zOS42TDY0IDIxMy42VjE4NC4xbC0yMy4yIDYuNmMtMTcgNC45LTM0LjctNS0zOS42LTIyczUtMzQuNyAyMi0zOS42TDY0IDExNy42VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdXJuRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTAgMzM0LjVjMy44IDguOCAyIDE5LTQuNiAyNmwtMTM2IDE0NGMtNC41IDQuOC0xMC44IDcuNS0xNy40IDcuNXMtMTIuOS0yLjctMTcuNC03LjVsLTEzNi0xNDRjLTYuNi03LTguNC0xNy4yLTQuNi0yNnMxMi41LTE0LjUgMjItMTQuNWg4OGwwLTE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0VjMyQzAgMTQuMyAxNC4zIDAgMzIgMGw4MCAwYzcwLjcgMCAxMjggNTcuMyAxMjggMTI4bDAgMTkyaDg4YzkuNiAwIDE4LjIgNS43IDIyIDE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR1cm5VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTAgMTc3LjVjMy44LTguOCAyLTE5LTQuNi0yNmwtMTM2LTE0NEMyMDQuOSAyLjcgMTk4LjYgMCAxOTIgMHMtMTIuOSAyLjctMTcuNCA3LjVsLTEzNiAxNDRjLTYuNiA3LTguNCAxNy4yLTQuNiAyNnMxMi41IDE0LjUgMjIgMTQuNWg4OGwwIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsODAgMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGwwLTE5Mmg4OGM5LjYgMCAxOC4yLTUuNyAyMi0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NFYzNTJINTc2VjY0SDY0ek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTI4IDQ0OEg1MTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjI4OGMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMjg4YzAgMTA2LTg2IDE5Mi0xOTIgMTkyUzAgMzk0IDAgMjg4VjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbWJyZWxsYUJlYWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ni4zIDI3MS44bC02MC4xLTIxLjlMMjE0IDQ0OEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjgyLjFsNjQuMS0xNzYuMnptMTIxLjEtLjJsLTMuMyA5LjEgNjcuNyAyNC42YzE4LjEgNi42IDM4LTQuMiAzOS42LTIzLjRjNi41LTc4LjUtMjMuOS0xNTUuNS04MC44LTIwOC41YzIgOCAzLjIgMTYuMyAzLjQgMjQuOGwuMiA2YzEuOCA1Ny03LjMgMTEzLjgtMjYuOCAxNjcuNHpNNDYyIDk5LjFjLTEuMS0zNC40LTIyLjUtNjQuOC01NC40LTc3LjRjLS45LS40LTEuOS0uNy0yLjgtMS4xYy0zMy0xMS43LTY5LjgtMi40LTkzLjEgMjMuOGwtNCA0LjVDMjcyLjQgODguMyAyNDUgMTM0LjIgMjI2LjggMTg0bC0zLjMgOS4xTDQzNCAyNjkuN2wzLjMtOS4xYzE4LjEtNDkuOCAyNi42LTEwMi41IDI0LjktMTU1LjVsLS4yLTZ6TTEwNy4yIDExMi45Yy0xMS4xIDE1LjctMi44IDM2LjggMTUuMyA0My40bDcxIDI1LjggMy4zLTkuMWMxOS41LTUzLjYgNDkuMS0xMDMgODcuMS0xNDUuNWw0LTQuNWM2LjItNi45IDEzLjEtMTMgMjAuNS0xOC4yYy03OS42IDIuNS0xNTQuNyA0Mi4yLTIwMS4yIDEwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW1icmVsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDkuN0M0NTEuOCA2My40IDU1Ny43IDE2MSA1NzMuOSAyODUuOWMyIDE1LjYtMTcuMyAyNC40LTI3LjggMTIuN0M1MzIuMSAyODMgNTA0LjggMjcyIDQ4MCAyNzJjLTM4LjcgMC03MSAyNy41LTc4LjQgNjQuMWMtMS43IDguNy04LjcgMTUuOS0xNy42IDE1LjlzLTE1LjgtNy4yLTE3LjYtMTUuOUMzNTkgMjk5LjUgMzI2LjcgMjcyIDI4OCAyNzJzLTcxIDI3LjUtNzguNCA2NC4xYy0xLjcgOC43LTguNyAxNS45LTE3LjYgMTUuOXMtMTUuOC03LjItMTcuNi0xNS45QzE2NyAyOTkuNSAxMzQuNyAyNzIgOTYgMjcyYy0yNC44IDAtNTIuMSAxMS02Ni4xIDI2LjdDMTkuNCAzMTAuNCAuMSAzMDEuNSAyLjEgMjg1LjlDMTguMyAxNjEgMTI0LjIgNjMuNCAyNTYgNDkuN1YzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMCAzMDRjMTIuMyAwIDIzLjUgNC42IDMyIDEyLjJWNDMwLjZjMCA0NS0zNi41IDgxLjQtODEuNCA4MS40Yy0zMC44IDAtNTktMTcuNC03Mi44LTQ1bC0yLjMtNC43Yy03LjktMTUuOC0xLjUtMzUgMTQuMy00Mi45czM1LTEuNSA0Mi45IDE0LjNsMi4zIDQuN2MzIDUuOSA5IDkuNiAxNS42IDkuNmM5LjYgMCAxNy40LTcuOCAxNy40LTE3LjRWMzE2LjJjOC41LTcuNiAxOS43LTEyLjIgMzItMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5kZXJsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDEyOFYyMjRjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NlY5NkgzMDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0VjIyNGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MHMtMTYwLTcxLjYtMTYwLTE2MFY5Nkg0OEMzMC4zIDk2IDE2IDgxLjcgMTYgNjR6TTAgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXZlcnNhbEFjY2VzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE2MS41LTg2LjFjLTEyLjItNS4yLTI2LjMgLjQtMzEuNSAxMi42cy40IDI2LjMgMTIuNiAzMS41bDExLjkgNS4xYzE3LjMgNy40IDM1LjIgMTIuOSA1My42IDE2LjN2NTAuMWMwIDQuMy0uNyA4LjYtMi4xIDEyLjZsLTI4LjcgODYuMWMtNC4yIDEyLjYgMi42IDI2LjIgMTUuMiAzMC40czI2LjItMi42IDMwLjQtMTUuMmwyNC40LTczLjJjMS4zLTMuOCA0LjgtNi40IDguOC02LjRzNy42IDIuNiA4LjggNi40bDI0LjQgNzMuMmM0LjIgMTIuNiAxNy44IDE5LjQgMzAuNCAxNS4yczE5LjQtMTcuOCAxNS4yLTMwLjRsLTI4LjctODYuMWMtMS40LTQuMS0yLjEtOC4zLTIuMS0xMi42VjIzNS41YzE4LjQtMy41IDM2LjMtOC45IDUzLjYtMTYuM2wxMS45LTUuMWMxMi4yLTUuMiAxNy44LTE5LjMgMTIuNi0zMS41cy0xOS4zLTE3LjgtMzEuNS0xMi42TDMzOC43IDE3NWMtMjYuMSAxMS4yLTU0LjIgMTctODIuNyAxN3MtNTYuNS01LjgtODIuNy0xN2wtMTEuOS01LjF6TTI1NiAxNjBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxvY2tLZXlob2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA2NGMtNDQuMiAwLTgwIDM1LjgtODAgODB2NDhIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjU2YzAtMzUuMyAyOC43LTY0IDY0LTY0SDgwVjE0NEM4MCA2NC41IDE0NC41IDAgMjI0IDBjNTcuNSAwIDEwNyAzMy43IDEzMC4xIDgyLjNjNy42IDE2IC44IDM1LjEtMTUuMiA0Mi42cy0zNS4xIC44LTQyLjYtMTUuMkMyODMuNCA4Mi42IDI1NS45IDY0IDIyNCA2NHptMzIgMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxNDRjMC00NC4yIDM1LjgtODAgODAtODBjMzEuOSAwIDU5LjQgMTguNiA3Mi4zIDQ1LjdjNy42IDE2IDI2LjcgMjIuOCA0Mi42IDE1LjJzMjIuOC0yNi43IDE1LjItNDIuNkMzMzEgMzMuNyAyODEuNSAwIDIyNCAwQzE0NC41IDAgODAgNjQuNSA4MCAxNDR2NDhINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE0NFYxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwRG93bkxlZnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzguNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOGgzMnY5NkgxMjhWMTkyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45bC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlYyODhoOTZ2OTZIMTkyYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOWw2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw2NC02NGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEgyODhWMjg4aDk2djMyYzAgMTIuOSA3LjggMjQuNiAxOS44IDI5LjZzMjUuNyAyLjIgMzQuOS02LjlsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0Yy05LjItOS4yLTIyLjktMTEuOS0zNC45LTYuOXMtMTkuOCAxNi42LTE5LjggMjkuNnYzMkgyODhWMTI4aDMyYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ1LjYgNy43QzE0MSAyLjggMTM0LjcgMCAxMjggMHMtMTMgMi44LTE3LjYgNy43bC0xMDQgMTEyYy02LjUgNy04LjIgMTcuMi00LjQgMjUuOVMxNC41IDE2MCAyNCAxNjBIODBWMzUySDI0Yy05LjUgMC0xOC4yIDUuNy0yMiAxNC40cy0yLjEgMTguOSA0LjQgMjUuOWwxMDQgMTEyYzQuNSA0LjkgMTAuOSA3LjcgMTcuNiA3LjdzMTMtMi44IDE3LjYtNy43bDEwNC0xMTJjNi41LTcgOC4yLTE3LjIgNC40LTI1LjlzLTEyLjUtMTQuNC0yMi0xNC40SDE3NlYxNjBoNTZjOS41IDAgMTguMi01LjcgMjItMTQuNHMyLjEtMTguOS00LjQtMjUuOWwtMTA0LTExMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXBMb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOCAxNzcuNWMzLjgtOC44IDItMTktNC42LTI2bC0xMzYtMTQ0QzE3Mi45IDIuNyAxNjYuNiAwIDE2MCAwcy0xMi45IDIuNy0xNy40IDcuNWwtMTM2IDE0NGMtNi42IDctOC40IDE3LjItNC42IDI2UzE0LjQgMTkyIDI0IDE5Mkg5NmwwIDI4OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTI4OGg3MmM5LjYgMCAxOC4yLTUuNyAyMi0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcFJpZ2h0QW5kRG93bkxlZnRGcm9tQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NCAwSDQ4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxNjhjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtMzktMzktODcgODdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC0zMi0zMmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsODctODdMMzI3IDQxYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yUzMzNC4zIDAgMzQ0IDB6TTE2OCA1MTJIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjM0NGMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsMzkgMzkgODctODdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDM5IDM5YzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJzLTEyLjUgMTQuOC0yMi4yIDE0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwUmlnaHRGcm9tU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAwYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOUwzNzAuNyA5NiAyMDEuNCAyNjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0MTYgMTQxLjNsNDEuNCA0MS40YzkuMiA5LjIgMjIuOSAxMS45IDM0LjkgNi45czE5LjgtMTYuNiAxOS44LTI5LjZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyek04MCAzMkMzNS44IDMyIDAgNjcuOCAwIDExMlY0MzJjMCA0NC4yIDM1LjggODAgODAgODBINDAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwVjMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNkgxOTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTA5LjNWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjEwOS4zbC03My40IDczLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDEyOC0xMjhjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTI4IDEyOGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyODggMTA5LjN6TTY0IDM1MkgxOTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MzJjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NHpNNDMyIDQ1NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJBc3Ryb25hdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcwLjcgOTYuMUMzNDYuMSAzOS41IDI4OS43IDAgMjI0IDBTMTAxLjkgMzkuNSA3Ny4zIDk2LjFDNjAuOSA5Ny41IDQ4IDExMS4yIDQ4IDEyOHY2NGMwIDE2LjggMTIuOSAzMC41IDI5LjMgMzEuOUMxMDEuOSAyODAuNSAxNTguMyAzMjAgMjI0IDMyMHMxMjIuMS0zOS41IDE0Ni43LTk2LjFjMTYuNC0xLjQgMjkuMy0xNS4xIDI5LjMtMzEuOVYxMjhjMC0xNi44LTEyLjktMzAuNS0yOS4zLTMxLjl6TTMzNiAxNDR2MTZjMCA1My00MyA5Ni05NiA5NkgyMDhjLTUzIDAtOTYtNDMtOTYtOTZWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDI4OGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTg5LjMgMTYyLjdsLTYtMjEuMmMtLjktMy4zLTMuOS01LjUtNy4zLTUuNXMtNi40IDIuMi03LjMgNS41bC02IDIxLjItMjEuMiA2Yy0zLjMgLjktNS41IDMuOS01LjUgNy4zczIuMiA2LjQgNS41IDcuM2wyMS4yIDYgNiAyMS4yYy45IDMuMyAzLjkgNS41IDcuMyA1LjVzNi40LTIuMiA3LjMtNS41bDYtMjEuMiAyMS4yLTZjMy4zLS45IDUuNS0zLjkgNS41LTcuM3MtMi4yLTYuNC01LjUtNy4zbC0yMS4yLTZ6TTExMi43IDMxNi41QzQ2LjcgMzQyLjYgMCA0MDcgMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDEyOFY0NDhjMC0xNy43IDE0LjMtMzIgMzItMzJIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0bDk4LjMgMGMxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN2MwLTc1LjMtNDYuNy0xMzkuNy0xMTIuNy0xNjUuOEMzMDMuOSAzMzguOCAyNjUuNSAzNTIgMjI0IDM1MnMtNzkuOS0xMy4yLTExMS4zLTM1LjV6TTE3NiA0NDhjLTguOCAwLTE2IDcuMi0xNiAxNnY0OGgzMlY0NjRjMC04LjgtNy4yLTE2LTE2LTE2em05NiAzMmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek02MjUgMTc3TDQ5NyAzMDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDU5MSAxNDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBhMTI4IDEyOCAwIDEgMSAwIDI1NkExMjggMTI4IDAgMSAxIDIyNCAwek0xNzguMyAzMDRoOTEuNGMyMC42IDAgNDAuNCAzLjUgNTguOCA5LjlDMzIzIDMzMSAzMjAgMzQ5LjEgMzIwIDM2OGMwIDU5LjUgMjkuNSAxMTIuMSA3NC44IDE0NEgyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNHpNMzUyIDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xNDQtODBjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINTEyVjMwNGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJEb2N0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDIyNCAwYTEyOCAxMjggMCAxIDAgMCAyNTZ6bS05NiA1NS4yQzU0IDMzMi45IDAgNDAxLjMgMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDQxOC4zYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43YzAtODEtNTQtMTQ5LjQtMTI4LTE3MS4xVjM2MmMyNy42IDcuMSA0OCAzMi4yIDQ4IDYydjQwYzAgOC44LTcuMiAxNi0xNiAxNkgzMzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZWNDI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjI0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDI1NmMtOC44IDAtMTYtNy4yLTE2LTE2VjQyNGMwLTI5LjggMjAuNC01NC45IDQ4LTYyVjMwNC45Yy02LS42LTEyLjEtLjktMTguMy0uOUgxNzguM2MtNi4yIDAtMTIuMyAuMy0xOC4zIC45djY1LjRjMjMuMSA2LjkgNDAgMjguMyA0MCA1My43YzAgMzAuOS0yNS4xIDU2LTU2IDU2cy01Ni0yNS4xLTU2LTU2YzAtMjUuNCAxNi45LTQ2LjggNDAtNTMuN1YzMTEuMnpNMTQ0IDQ0OGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJHZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYTEyOCAxMjggMCAxIDEgMCAyNTZBMTI4IDEyOCAwIDEgMSAyMjQgMHpNMTc4LjMgMzA0aDkxLjRjMTEuOCAwIDIzLjQgMS4yIDM0LjUgMy4zYy0yLjEgMTguNSA3LjQgMzUuNiAyMS44IDQ0LjhjLTE2LjYgMTAuNi0yNi43IDMxLjYtMjAgNTMuM2M0IDEyLjkgOS40IDI1LjUgMTYuNCAzNy42czE1LjIgMjMuMSAyNC40IDMzYzE1LjcgMTYuOSAzOS42IDE4LjQgNTcuMiA4Ljd2LjljMCA5LjIgMi43IDE4LjUgNy45IDI2LjNIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjNDMCAzODMuOCA3OS44IDMwNCAxNzguMyAzMDR6TTQzNiAyMTguMmMwLTcgNC41LTEzLjMgMTEuMy0xNC44YzEwLjUtMi40IDIxLjUtMy43IDMyLjctMy43czIyLjIgMS4zIDMyLjcgMy43YzYuOCAxLjUgMTEuMyA3LjggMTEuMyAxNC44djE3LjdjMCA3LjggNC44IDE0LjggMTEuNiAxOC43YzYuOCAzLjkgMTUuMSA0LjUgMjEuOCAuNmwxMy44LTcuOWM2LjEtMy41IDEzLjctMi43IDE4LjUgMi40YzcuNiA4LjEgMTQuMyAxNy4yIDIwLjEgMjcuMnMxMC4zIDIwLjQgMTMuNSAzMWMyLjEgNi43LTEuMSAxMy43LTcuMiAxNy4ybC0xNC40IDguM2MtNi41IDMuNy0xMCAxMC45LTEwIDE4LjRzMy41IDE0LjcgMTAgMTguNGwxNC40IDguM2M2LjEgMy41IDkuMiAxMC41IDcuMiAxNy4yYy0zLjMgMTAuNi03LjggMjEtMTMuNSAzMXMtMTIuNSAxOS4xLTIwLjEgMjcuMmMtNC44IDUuMS0xMi41IDUuOS0xOC41IDIuNGwtMTMuOC03LjljLTYuNy0zLjktMTUuMS0zLjMtMjEuOCAuNmMtNi44IDMuOS0xMS42IDEwLjktMTEuNiAxOC43djE3LjdjMCA3LTQuNSAxMy4zLTExLjMgMTQuOGMtMTAuNSAyLjQtMjEuNSAzLjctMzIuNyAzLjdzLTIyLjItMS4zLTMyLjctMy43Yy02LjgtMS41LTExLjMtNy44LTExLjMtMTQuOFY0NjcuOGMwLTcuOS00LjktMTQuOS0xMS43LTE4LjljLTYuOC0zLjktMTUuMi00LjUtMjItLjZsLTEzLjUgNy44Yy02LjEgMy41LTEzLjcgMi43LTE4LjUtMi40Yy03LjYtOC4xLTE0LjMtMTcuMi0yMC4xLTI3LjJzLTEwLjMtMjAuNC0xMy41LTMxYy0yLjEtNi43IDEuMS0xMy43IDcuMi0xNy4ybDE0LTguMWM2LjUtMy44IDEwLjEtMTEuMSAxMC4xLTE4LjZzLTMuNS0xNC44LTEwLjEtMTguNmwtMTQtOC4xYy02LjEtMy41LTkuMi0xMC41LTcuMi0xNy4yYzMuMy0xMC42IDcuNy0yMSAxMy41LTMxczEyLjUtMTkuMSAyMC4xLTI3LjJjNC44LTUuMSAxMi40LTUuOSAxOC41LTIuNGwxMy42IDcuOGM2LjggMy45IDE1LjIgMy4zIDIyLS42YzYuOS0zLjkgMTEuNy0xMSAxMS43LTE4LjlWMjE4LjJ6bTkyLjEgMTMzLjVhNDguMSA0OC4xIDAgMSAwIC05Ni4xIDAgNDguMSA0OC4xIDAgMSAwIDk2LjEgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckdyYWR1YXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxOS4zIC41YzMuMS0uNiA2LjMtLjYgOS40IDBsMjAwIDQwQzQzOS45IDQyLjcgNDQ4IDUyLjYgNDQ4IDY0cy04LjEgMjEuMy0xOS4zIDIzLjVMMzUyIDEwMi45VjE2MGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOHMtMTI4LTU3LjMtMTI4LTEyOFYxMDIuOUw0OCA5My4zdjY1LjFsMTUuNyA3OC40Yy45IDQuNy0uMyA5LjYtMy4zIDEzLjNzLTcuNiA1LjktMTIuNCA1LjlIMTZjLTQuOCAwLTkuMy0yLjEtMTIuNC01LjlzLTQuMy04LjYtMy4zLTEzLjNMMTYgMTU4LjRWODYuNkM2LjUgODMuMyAwIDc0LjMgMCA2NEMwIDUyLjYgOC4xIDQyLjcgMTkuMyA0MC41bDIwMC00MHpNMTExLjkgMzI3LjdjMTAuNS0zLjQgMjEuOCAuNCAyOS40IDguNWw3MSA3NS41YzYuMyA2LjcgMTcgNi43IDIzLjMgMGw3MS03NS41YzcuNi04LjEgMTguOS0xMS45IDI5LjQtOC41QzQwMSAzNDguNiA0NDggNDA5LjQgNDQ4IDQ4MS4zYzAgMTctMTMuOCAzMC43LTMwLjcgMzAuN0gzMC43QzEzLjggNTEyIDAgNDk4LjIgMCA0ODEuM2MwLTcxLjkgNDctMTMyLjcgMTExLjktMTUzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek02MDkuMyA1MTJINDcxLjRjNS40LTkuNCA4LjYtMjAuMyA4LjYtMzJ2LThjMC02MC43LTI3LjEtMTE1LjItNjkuOC0xNTEuOGMyLjQtLjEgNC43LS4yIDcuMS0uMmg2MS40QzU2Ny44IDMyMCA2NDAgMzkyLjIgNjQwIDQ4MS4zYzAgMTctMTMuOCAzMC43LTMwLjcgMzAuN3pNNDMyIDI1NmMtMzEgMC01OS0xMi42LTc5LjMtMzIuOUMzNzIuNCAxOTYuNSAzODQgMTYzLjYgMzg0IDEyOGMwLTI2LjgtNi42LTUyLjEtMTguMy03NC4zQzM4NC4zIDQwLjEgNDA3LjIgMzIgNDMyIDMyYzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEycy01MC4xIDExMi0xMTIgMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VySW5qdXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAgODBIMzQyLjdjLTcuOS0xOS41LTIwLjQtMzYuNS0zNi4yLTQ5LjlMMjQwIDgwem0zNy43LTY4LjJDMjYxLjMgNC4yIDI0My4yIDAgMjI0IDBjLTUzLjcgMC05OS43IDMzLjEtMTE4LjcgODBoODEuNGw5MS02OC4yek0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4YzAtNS40LS4zLTEwLjgtMS0xNkg5N2MtLjcgNS4yLTEgMTAuNi0xIDE2YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4ek0xMjQgMzEyLjRjLTkuNyAzLjEtMTkuMSA3LTI4IDExLjdWNTEySDI0My43TDE4MS41IDQwOC4yIDEyNCAzMTIuNHptMzMtNy4yTDIwNC4zIDM4NEgyNzJjNDQuMiAwIDgwIDM1LjggODAgODBjMCAxOC02IDM0LjYtMTYgNDhoODIuM2MxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN0M0NDggMzgzLjggMzY4LjIgMzA0IDI2OS43IDMwNEgxNzguM2MtNy4yIDAtMTQuMyAuNC0yMS4zIDEuM3pNMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDY0VjM0NS40QzI0LjkgMzc4LjEgMCA0MjcuMyAwIDQ4Mi4zek0zMjAgNDY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDIyMy41bDU3LjEgOTUuMkMzMDMgNTA3LjIgMzIwIDQ4Ny42IDMyMCA0NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJMYXJnZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzgxLjkgMjc0YzQ4LjUtMjMuMiA4Mi4xLTcyLjcgODIuMS0xMzBDNDY0IDY0LjUgMzk5LjUgMCAzMjAgMEMyNTAuNCAwIDE5Mi40IDQ5LjMgMTc4LjkgMTE0LjlMMzguOCA1LjF6TTU0NS41IDUxMkg1MjhMMjg0LjMgMzIwaC01OUMxMzYuMiAzMjAgNjQgMzkyLjIgNjQgNDgxLjNjMCAxNyAxMy44IDMwLjcgMzAuNyAzMC43SDU0NS4zbC4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMjg4QTE0NCAxNDQgMCAxIDAgMjU2IDBhMTQ0IDE0NCAwIDEgMCAwIDI4OHptLTk0LjcgMzJDNzIuMiAzMjAgMCAzOTIuMiAwIDQ4MS4zYzAgMTcgMTMuOCAzMC43IDMwLjcgMzAuN0g0ODEuM2MxNyAwIDMwLjctMTMuOCAzMC43LTMwLjdDNTEyIDM5Mi4yIDQzOS44IDMyMCAzNTAuNyAzMjBIMTYxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkgzOTIuNmMtNS40LTkuNC04LjYtMjAuMy04LjYtMzJWMzUyYzAtMi4xIC4xLTQuMiAuMy02LjNjLTMxLTI2LTcxLTQxLjctMTE0LjYtNDEuN0gxNzguM3pNNTI4IDI0MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGExMjggMTI4IDAgMSAxIDI1NiAwQTEyOCAxMjggMCAxIDEgOTYgMTI4ek0wIDQ4Mi4zQzAgMzgzLjggNzkuOCAzMDQgMTc4LjMgMzA0aDkxLjRDMzY4LjIgMzA0IDQ0OCAzODMuOCA0NDggNDgyLjNjMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjN6TTQ3MiAyMDBINjE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDQ3MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck5pbmphIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZjLTU3LjIgMC0xMDUuNi0zNy41LTEyMi04OS4zYy0xLjEgMS4zLTIuMiAyLjYtMy41IDMuOGMtMTUuOCAxNS44LTM4LjggMjAuNy01My42IDIyLjFjLTguMSAuOC0xNC42LTUuNy0xMy44LTEzLjhjMS40LTE0LjcgNi4zLTM3LjggMjIuMS01My42YzUuOC01LjggMTIuNi0xMC4xIDE5LjYtMTMuNGMtNy0zLjItMTMuOC03LjYtMTkuNi0xMy40QzM3LjQgODIuNyAzMi42IDU5LjcgMzEuMSA0NC45Yy0uOC04LjEgNS43LTE0LjYgMTMuOC0xMy44YzE0LjcgMS40IDM3LjggNi4zIDUzLjYgMjIuMWM0LjggNC44IDguNyAxMC40IDExLjcgMTYuMUMxMzEuNCAyOC4yIDE3NC40IDAgMjI0IDBjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjh6TTAgNDgyLjNDMCAzOTkuNSA1Ni40IDMzMCAxMzIuOCAzMDkuOWM2LTEuNiAxMi4yIC45IDE1LjkgNS44bDYyLjUgODMuM2M2LjQgOC41IDE5LjIgOC41IDI1LjYgMGw2Mi41LTgzLjNjMy43LTQuOSA5LjktNy40IDE1LjktNS44QzM5MS42IDMzMCA0NDggMzk5LjUgNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek0xNjAgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMjg4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck51cnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOFY3MC4yYzAtMTMuMyA4LjMtMjUuMyAyMC44LTMwbDk2LTM2YzcuMi0yLjcgMTUuMi0yLjcgMjIuNSAwbDk2IDM2YzEyLjUgNC43IDIwLjggMTYuNiAyMC44IDMwVjEyOGgtLjNjLjIgMi42IC4zIDUuMyAuMyA4djQwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4VjEzNmMwLTIuNyAuMS01LjQgLjMtOEg5NnptNDggNDhjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MFYxNjBIMTQ0djE2ek0xMTEuOSAzMjcuN2MxMC41LTMuNCAyMS44IC40IDI5LjQgOC41bDcxIDc1LjVjNi4zIDYuNyAxNyA2LjcgMjMuMyAwbDcxLTc1LjVjNy42LTguMSAxOC45LTExLjkgMjkuNC04LjVDNDAxIDM0OC42IDQ0OCA0MDkuNCA0NDggNDgxLjNjMCAxNy0xMy44IDMwLjctMzAuNyAzMC43SDMwLjdDMTMuOCA1MTIgMCA0OTguMiAwIDQ4MS4zYzAtNzEuOSA0Ny0xMzIuNyAxMTEuOS0xNTMuNnpNMjA4IDQ4VjY0SDE5MmMtNC40IDAtOCAzLjYtOCA4Vjg4YzAgNC40IDMuNiA4IDggOGgxNnYxNmMwIDQuNCAzLjYgOCA4IDhoMTZjNC40IDAgOC0zLjYgOC04Vjk2aDE2YzQuNCAwIDgtMy42IDgtOFY3MmMwLTQuNC0zLjYtOC04LThIMjQwVjQ4YzAtNC40LTMuNi04LTgtOEgyMTZjLTQuNCAwLTggMy42LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgMjI0IDBhMTI4IDEyOCAwIDEgMCAwIDI1NnptLTQ1LjcgNDhDNzkuOCAzMDQgMCAzODMuOCAwIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJIMzIyLjhjLTMuMS04LjgtMy43LTE4LjQtMS40LTI3LjhsMTUtNjAuMWMyLjgtMTEuMyA4LjYtMjEuNSAxNi44LTI5LjdsNDAuMy00MC4zYy0zMi4xLTMxLTc1LjctNTAuMS0xMjMuOS01MC4xSDE3OC4zem00MzUuNS02OC4zYy0xNS42LTE1LjYtNDAuOS0xNS42LTU2LjYgMGwtMjkuNCAyOS40IDcxIDcxIDI5LjQtMjkuNGMxNS42LTE1LjYgMTUuNi00MC45IDAtNTYuNmwtMTQuNC0xNC40ek0zNzUuOSA0MTdjLTQuMSA0LjEtNyA5LjItOC40IDE0LjlsLTE1IDYwLjFjLTEuNCA1LjUgLjIgMTEuMiA0LjIgMTUuMnM5LjcgNS42IDE1LjIgNC4ybDYwLjEtMTVjNS42LTEuNCAxMC44LTQuMyAxNC45LTguNEw1NzYuMSAzNTguN2wtNzEtNzFMMzc1LjkgNDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek01MDQgMzEyVjI0OEg0NDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNjRWMTM2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NjRoNjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTUydjY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2VjcmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxNmMtNi43IDAtMTAuOC0yLjgtMTUuNS02LjFDMjAxLjkgNS40IDE5NCAwIDE3NiAwYy0zMC41IDAtNTIgNDMuNy02NiA4OS40QzYyLjcgOTguMSAzMiAxMTIuMiAzMiAxMjhjMCAxNC4zIDI1IDI3LjEgNjQuNiAzNS45Yy0uNCA0LS42IDgtLjYgMTIuMWMwIDE3IDMuMyAzMy4yIDkuMyA0OEg0NS40QzM4IDIyNCAzMiAyMzAgMzIgMjM3LjRjMCAxLjcgLjMgMy40IDEgNWwzOC44IDk2LjlDMjguMiAzNzEuOCAwIDQyMy44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN2MwLTU4LjUtMjguMi0xMTAuNC03MS43LTE0M0w0MTUgMjQyLjRjLjYtMS42IDEtMy4zIDEtNWMwLTcuNC02LTEzLjQtMTMuNC0xMy40SDM0Mi43YzYtMTQuOCA5LjMtMzEgOS4zLTQ4YzAtNC4xLS4yLTguMS0uNi0xMi4xQzM5MSAxNTUuMSA0MTYgMTQyLjMgNDE2IDEyOGMwLTE1LjgtMzAuNy0yOS45LTc4LTM4LjZDMzI0IDQzLjcgMzAyLjUgMCAyNzIgMGMtMTggMC0yNS45IDUuNC0zMi41IDkuOWMtNC44IDMuMy04LjggNi4xLTE1LjUgNi4xem01NiAyMDhIMjY3LjZjLTE2LjUgMC0zMS4xLTEwLjYtMzYuMy0yNi4yYy0yLjMtNy0xMi4yLTctMTQuNSAwYy01LjIgMTUuNi0xOS45IDI2LjItMzYuMyAyNi4ySDE2OGMtMjIuMSAwLTQwLTE3LjktNDAtNDBWMTY5LjZjMjguMiA0LjEgNjEgNi40IDk2IDYuNHM2Ny44LTIuMyA5Ni02LjRWMTg0YzAgMjIuMS0xNy45IDQwLTQwIDQwem0tODggOTZsMTYgMzJMMTc2IDQ4MCAxMjggMjg4bDY0IDMyem0xMjgtMzJMMjcyIDQ4MCAyNDAgMzUybDE2LTMyIDY0LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxLjggMCAzLjUtLjIgNS4zLS41Yy03Ni4zLTU1LjEtOTkuOC0xNDEtMTAzLjEtMjAwLjJjLTE2LjEtNC44LTMzLjEtNy4zLTUwLjctNy4zSDE3OC4zem0zMDguOC03OC4zbC0xMjAgNDhDMzU4IDI3Ny40IDM1MiAyODYuMiAzNTIgMjk2YzAgNjMuMyAyNS45IDE2OC44IDEzNC44IDIxNC4yYzUuOSAyLjUgMTIuNiAyLjUgMTguNSAwQzYxNC4xIDQ2NC44IDY0MCAzNTkuMyA2NDAgMjk2YzAtOS44LTYtMTguNi0xNS4xLTIyLjNsLTEyMC00OGMtNS43LTIuMy0xMi4xLTIuMy0xNy44IDB6TTU5MS40IDMxMmMtMy45IDUwLjctMjcuMiAxMTYuNy05NS40IDE0OS43VjI3My44TDU5MS40IDMxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzUzLjMgMjUxLjZDNDA3LjkgMjM3IDQ0OCAxODcuMiA0NDggMTI4QzQ0OCA1Ny4zIDM5MC43IDAgMzIwIDBDMjUwLjIgMCAxOTMuNSA1NS44IDE5MiAxMjUuMkwzOC44IDUuMXpNMjY0LjMgMzA0LjNDMTcwLjUgMzA5LjQgOTYgMzg3LjIgOTYgNDgyLjNjMCAxNi40IDEzLjMgMjkuNyAyOS43IDI5LjdINTE0LjNjMy45IDAgNy42LS43IDExLTIuMWwtMjYxLTIwNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxMCAwIDE4LjgtNC45IDI0LjItMTIuNWwtOTkuMi05OS4yYy0xNC45LTE0LjktMjMuMy0zNS4xLTIzLjMtNTYuMXYtMzNjLTE1LjktNC43LTMyLjgtNy4yLTUwLjMtNy4ySDE3OC4zek0zODQgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4Mi43YzAgMTcgNi43IDMzLjMgMTguNyA0NS4zTDQ3OC4xIDQ5MS4zYzE4LjcgMTguNyA0OS4xIDE4LjcgNjcuOSAwbDczLjQtNzMuNGMxOC43LTE4LjcgMTguNy00OS4xIDAtNjcuOUw1MTIgMjQyLjdjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdIMzg0em0yNCA4MGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGExMjggMTI4IDAgMSAwIDI1NiAwQTEyOCAxMjggMCAxIDAgOTYgMTI4em05NC41IDIwMC4ybDE4LjYgMzFMMTc1LjggNDgzLjFsLTM2LTE0Ni45Yy0yLTguMS05LjgtMTMuNC0xNy45LTExLjNDNTEuOSAzNDIuNCAwIDQwNS44IDAgNDgxLjNjMCAxNyAxMy44IDMwLjcgMzAuNyAzMC43SDE2Mi41YzAgMCAwIDAgLjEgMEgxNjggMjgwaDUuNWMwIDAgMCAwIC4xIDBINDE3LjNjMTcgMCAzMC43LTEzLjggMzAuNy0zMC43YzAtNzUuNS01MS45LTEzOC45LTEyMS45LTE1Ni40Yy04LjEtMi0xNS45IDMuMy0xNy45IDExLjNsLTM2IDE0Ni45TDIzOC45IDM1OS4ybDE4LjYtMzFjNi40LTEwLjctMS4zLTI0LjItMTMuNy0yNC4ySDIyNCAyMDQuM2MtMTIuNCAwLTIwLjEgMTMuNi0xMy43IDI0LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek00NzEgMTQzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN0M0NDggMzgzLjggMzY4LjIgMzA0IDI2OS43IDMwNEgxNzguM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNCZXR3ZWVuTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNEMwIDEwLjcgMTAuNyAwIDI0IDBINjE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0QzEwLjcgNDggMCAzNy4zIDAgMjR6TTAgNDg4YzAtMTMuMyAxMC43LTI0IDI0LTI0SDYxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTgzLjIgMTYwYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMzIgMzIwYzAtMzUuMyAyOC43LTY0IDY0LTY0aDk2YzEyLjIgMCAyMy43IDMuNCAzMy40IDkuNGMtMzcuMiAxNS4xLTY1LjYgNDcuMi03NS44IDg2LjZINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem00NjEuNiAzMmMtMTAuMy00MC4xLTM5LjYtNzIuNi03Ny43LTg3LjRjOS40LTUuNSAyMC40LTguNiAzMi4xLTguNmg5NmMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0OTMuNnpNMzkxLjIgMjkwLjRjMzIuMSA3LjQgNTguMSAzMC45IDY4LjkgNjEuNmMzLjUgMTAgNS41IDIwLjggNS41IDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMyaC0yMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyYzAtMTEuMiAxLjktMjIgNS41LTMyYzEwLjUtMjkuNyAzNS4zLTUyLjggNjYuMS02MC45YzcuOC0yLjEgMTYtMy4xIDI0LjUtMy4xaDk2YzcuNCAwIDE0LjcgLjggMjEuNiAyLjR6bTQ0LTEzMC40YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMzIxLjYgOTZhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzR2VhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMTYwQTgwIDgwIDAgMSAwIDE0NCAwYTgwIDgwIDAgMSAwIDAgMTYwem0zNjggMEE4MCA4MCAwIDEgMCA1MTIgMGE4MCA4MCAwIDEgMCAwIDE2MHpNMCAyOTguN0MwIDMxMC40IDkuNiAzMjAgMjEuMyAzMjBIMjM0LjdjLjIgMCAuNCAwIC43IDBjLTI2LjYtMjMuNS00My4zLTU3LjgtNDMuMy05NmMwLTcuNiAuNy0xNSAxLjktMjIuM2MtMTMuNi02LjMtMjguNy05LjctNDQuNi05LjdIMTA2LjdDNDcuOCAxOTIgMCAyMzkuOCAwIDI5OC43ek0zMjAgMzIwYzI0IDAgNDUuOS04LjggNjIuNy0yMy4zYzIuNS0zLjcgNS4yLTcuMyA4LTEwLjdjMi43LTMuMyA1LjctNi4xIDktOC4zQzQxMCAyNjIuMyA0MTYgMjQzLjkgNDE2IDIyNGMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnM0MyA5NiA5NiA5NnptNjUuNCA2MC4yYy0xMC4zLTUuOS0xOC4xLTE2LjItMjAuOC0yOC4ySDI2MS4zQzE4Ny43IDM1MiAxMjggNDExLjcgMTI4IDQ4NS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43SDQ1NS4yYy0yLjEtNS4yLTMuMi0xMC45LTMuMi0xNi40di0zYy0xLjMtLjctMi43LTEuNS00LTIuM2wtMi42IDEuNWMtMTYuOCA5LjctNDAuNSA4LTU0LjctOS43Yy00LjUtNS42LTguNi0xMS41LTEyLjQtMTcuNmwtLjEtLjItLjEtLjItMi40LTQuMS0uMS0uMi0uMS0uMmMtMy40LTYuMi02LjQtMTIuNi05LTE5LjNjLTguMi0yMS4yIDIuMi00Mi42IDE5LTUyLjNsMi43LTEuNWMwLS44IDAtMS41IDAtMi4zczAtMS41IDAtMi4zbC0yLjctMS41ek01MzMuMyAxOTJINDkwLjdjLTE1LjkgMC0zMSAzLjUtNDQuNiA5LjdjMS4zIDcuMiAxLjkgMTQuNyAxLjkgMjIuM2MwIDE3LjQtMy41IDMzLjktOS43IDQ5YzIuNSAuOSA0LjkgMiA3LjEgMy4zbDIuNiAxLjVjMS4zLS44IDIuNi0xLjYgNC0yLjN2LTNjMC0xOS40IDEzLjMtMzkuMSAzNS44LTQyLjZjNy45LTEuMiAxNi0xLjkgMjQuMi0xLjlzMTYuMyAuNiAyNC4yIDEuOWMyMi41IDMuNSAzNS44IDIzLjIgMzUuOCA0Mi42djNjMS4zIC43IDIuNyAxLjUgNCAyLjNsMi42LTEuNWMxNi44LTkuNyA0MC41LTggNTQuNyA5LjdjMi4zIDIuOCA0LjUgNS44IDYuNiA4LjdjLTIuMS01Ny4xLTQ5LTEwMi43LTEwNi42LTEwMi43em05MS4zIDE2My45YzYuMy0zLjYgOS41LTExLjEgNi44LTE4Yy0yLjEtNS41LTQuNi0xMC44LTcuNC0xNS45bC0yLjMtNGMtMy4xLTUuMS02LjUtOS45LTEwLjItMTQuNWMtNC42LTUuNy0xMi43LTYuNy0xOS0zbC0yLjkgMS43Yy05LjIgNS4zLTIwLjQgNC0yOS42LTEuM3MtMTYuMS0xNC41LTE2LjEtMjUuMXYtMy40YzAtNy4zLTQuOS0xMy44LTEyLjEtMTQuOWMtNi41LTEtMTMuMS0xLjUtMTkuOS0xLjVzLTEzLjQgLjUtMTkuOSAxLjVjLTcuMiAxLjEtMTIuMSA3LjYtMTIuMSAxNC45djMuNGMwIDEwLjYtNi45IDE5LjgtMTYuMSAyNS4xcy0yMC40IDYuNi0yOS42IDEuM2wtMi45LTEuN2MtNi4zLTMuNi0xNC40LTIuNi0xOSAzYy0zLjcgNC42LTcuMSA5LjUtMTAuMiAxNC42bC0yLjMgMy45Yy0yLjggNS4xLTUuMyAxMC40LTcuNCAxNS45Yy0yLjYgNi44IC41IDE0LjMgNi44IDE3LjlsMi45IDEuN2M5LjIgNS4zIDEzLjcgMTUuOCAxMy43IDI2LjRzLTQuNSAyMS4xLTEzLjcgMjYuNGwtMyAxLjdjLTYuMyAzLjYtOS41IDExLjEtNi44IDE3LjljMi4xIDUuNSA0LjYgMTAuNyA3LjQgMTUuOGwyLjQgNC4xYzMgNS4xIDYuNCA5LjkgMTAuMSAxNC41YzQuNiA1LjcgMTIuNyA2LjcgMTkgM2wyLjktMS43YzkuMi01LjMgMjAuNC00IDI5LjYgMS4zczE2LjEgMTQuNSAxNi4xIDI1LjF2My40YzAgNy4zIDQuOSAxMy44IDEyLjEgMTQuOWM2LjUgMSAxMy4xIDEuNSAxOS45IDEuNXMxMy40LS41IDE5LjktMS41YzcuMi0xLjEgMTIuMS03LjYgMTIuMS0xNC45di0zLjRjMC0xMC42IDYuOS0xOS44IDE2LjEtMjUuMXMyMC40LTYuNiAyOS42LTEuM2wyLjkgMS43YzYuMyAzLjYgMTQuNCAyLjYgMTktM2MzLjctNC42IDcuMS05LjQgMTAuMS0xNC41bDIuNC00LjJjMi44LTUuMSA1LjMtMTAuMyA3LjQtMTUuOGMyLjYtNi44LS41LTE0LjMtNi44LTE3LjlsLTMtMS43Yy05LjItNS4zLTEzLjctMTUuOC0xMy43LTI2LjRzNC41LTIxLjEgMTMuNy0yNi40bDMtMS43ek00NzIgMzg0YTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEuMiA5NmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTMyIDI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4NS42YzEwLjEtMzkuNCAzOC42LTcxLjUgNzUuOC04Ni42Yy05LjctNi0yMS4yLTkuNC0zMy40LTkuNEg5NmMtMzUuMyAwLTY0IDI4LjctNjQgNjR6bTQ2MS42IDMySDU3NmMxNy43IDAgMzItMTQuMyAzMi0zMmMwLTM1LjMtMjguNy02NC02NC02NEg0NDhjLTExLjcgMC0yMi43IDMuMS0zMi4xIDguNmMzOC4xIDE0LjggNjcuNCA0Ny4zIDc3LjcgODcuNHpNMzkxLjIgMjI2LjRjLTYuOS0xLjYtMTQuMi0yLjQtMjEuNi0yLjRoLTk2Yy04LjUgMC0xNi43IDEuMS0yNC41IDMuMWMtMzAuOCA4LjEtNTUuNiAzMS4xLTY2LjEgNjAuOWMtMy41IDEwLTUuNSAyMC44LTUuNSAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC0xMS4yLTEuOS0yMi01LjUtMzJjLTEwLjgtMzAuNy0zNi44LTU0LjItNjguOS02MS42ek01NjMuMiA5NmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTMyMS42IDE5MmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHpNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNSYXlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxIDdDMzEuNi0yLjMgMTYuNC0yLjMgNyA3Uy0yLjMgMzEuNiA3IDQxbDcyIDcyYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw0MSA3ek01OTkgN0w1MjcgNzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwek03IDUwNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDcgNDcxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXptNTkyIDBjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC03Mi03MmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw3MiA3MnpNMzIwIDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMjEyLjEgMzM2Yy0yLjcgNy41LTQuMSAxNS42LTQuMSAyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg0MDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC04LjQtMS40LTE2LjUtNC4xLTI0Yy0uNS0xLjQtMS0yLjctMS42LTRjLTkuNC0yMi4zLTI5LjgtMzguOS01NC4zLTQzYy0zLjktLjctNy45LTEtMTItMUgyODBjLTQuMSAwLTguMSAuMy0xMiAxYy0uOCAuMS0xLjcgLjMtMi41IC41Yy0yNC45IDUuMS00NS4xIDIzLTUzLjQgNDYuNXpNMTc1LjggMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTI2LjUgMzJDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43aDU2LjFjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRIMTQ5LjN6bTM2OCA4MGMxNC43IDAgMjYuNy0xMS45IDI2LjctMjYuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0g0MjEuM2MtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZoNTYuMXpNNDY0IDIyNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzUmVjdGFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNDMgMCAwIDQzIDAgOTZWNDE2YzAgNTMgNDMgOTYgOTYgOTZINTQ0YzUzIDAgOTYtNDMgOTYtOTZWOTZjMC01My00My05Ni05Ni05Nkg5NnpNNjQgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWOTZ6bTE1OS44IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43aDU2LjFjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRIMTQ5LjNDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zek00NjEuMiAzMzZoNTYuMWMxNC43IDAgMjYuNy0xMS45IDI2LjctMjYuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0g0MjEuM2MtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZ6TTM3MiAyODljLTMuOS0uNy03LjktMS0xMi0xSDI4MGMtNC4xIDAtOC4xIC4zLTEyIDFjLTI2IDQuNC00Ny4zIDIyLjctNTUuOSA0N2MtMi43IDcuNS00LjEgMTUuNi00LjEgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDA4YzEzLjMgMCAyNC0xMC43IDI0LTI0YzAtOC40LTEuNC0xNi41LTQuMS0yNGMtOC42LTI0LjMtMjkuOS00Mi42LTU1LjktNDd6TTUxMiAxNzZhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMzIwIDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ0MC42IDMyMEg2MTguN2MxMS44IDAgMjEuMy05LjYgMjEuMy0yMS4zQzY0MCAyMzkuOCA1OTIuMiAxOTIgNTMzLjMgMTkySDQ5MC43Yy0xNS45IDAtMzEgMy41LTQ0LjYgOS43YzEuMyA3LjIgMS45IDE0LjcgMS45IDIyLjNjMCAzMC4yLTEwLjUgNTgtMjggNzkuOWwtMjUuMi0xOS43QzQwOC4xIDI2Ny43IDQxNiAyNDYuOCA0MTYgMjI0YzAtNTMtNDMtOTYtOTYtOTZjLTMxLjEgMC01OC43IDE0LjgtNzYuMyAzNy43bC00MC42LTMxLjhjMTMtMTQuMiAyMC45LTMzLjEgMjAuOS01My45YzAtNDQuMi0zNS44LTgwLTgwLTgwQzExNi4zIDAgOTEuOSAxNC4xIDc3LjUgMzUuNUwzOC44IDUuMXpNMTA2LjcgMTkyQzQ3LjggMTkyIDAgMjM5LjggMCAyOTguN0MwIDMxMC40IDkuNiAzMjAgMjEuMyAzMjBIMjM0LjdjLjIgMCAuNCAwIC43IDBjLTIwLjYtMTguMi0zNS4yLTQyLjgtNDAuOC03MC44TDEyMS44IDE5MkgxMDYuN3pNMjYxLjMgMzUyQzE4Ny43IDM1MiAxMjggNDExLjcgMTI4IDQ4NS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43SDQ4NS4zYzEwLjUgMCAxOS41LTYgMjMuOS0xNC44TDMyNC45IDM1MkgyNjEuM3pNNTEyIDE2MEE4MCA4MCAwIDEgMCA1MTIgMGE4MCA4MCAwIDEgMCAwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNWaWV3ZmluZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQ4aDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDMyQzE0LjMgMCAwIDE0LjMgMCAzMlYxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0OHpNMTc1LjggMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTI2LjUgMzJDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43aDU2LjFjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRIMTQ5LjN6bTM2OCA4MGMxNC43IDAgMjYuNy0xMS45IDI2LjctMjYuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0g0MjEuM2MtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZoNTYuMXptLTg5LjQgMGMtOC42LTI0LjMtMjkuOS00Mi42LTU1LjktNDdjLTMuOS0uNy03LjktMS0xMi0xSDI4MGMtNC4xIDAtOC4xIC4zLTEyIDFjLTI2IDQuNC00Ny4zIDIyLjctNTUuOSA0N2MtMi43IDcuNS00LjEgMTUuNi00LjEgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDA4YzEzLjMgMCAyNC0xMC43IDI0LTI0YzAtOC40LTEuNC0xNi41LTQuMS0yNHpNNDY0IDIyNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04MC0zMmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTUwNCA0OGg4OHY4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDUwNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNHpNNDggNDY0VjM3NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTM2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ4em00NTYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzc2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djg4SDUwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDBhODAgODAgMCAxIDEgMCAxNjBBODAgODAgMCAxIDEgMTQ0IDB6TTUxMiAwYTgwIDgwIDAgMSAxIDAgMTYwQTgwIDgwIDAgMSAxIDUxMiAwek0wIDI5OC43QzAgMjM5LjggNDcuOCAxOTIgMTA2LjcgMTkyaDQyLjdjMTUuOSAwIDMxIDMuNSA0NC42IDkuN2MtMS4zIDcuMi0xLjkgMTQuNy0xLjkgMjIuM2MwIDM4LjIgMTYuOCA3Mi41IDQzLjMgOTZjLS4yIDAtLjQgMC0uNyAwSDIxLjNDOS42IDMyMCAwIDMxMC40IDAgMjk4Ljd6TTQwNS4zIDMyMGMtLjIgMC0uNCAwLS43IDBjMjYuNi0yMy41IDQzLjMtNTcuOCA0My4zLTk2YzAtNy42LS43LTE1LTEuOS0yMi4zYzEzLjYtNi4zIDI4LjctOS43IDQ0LjYtOS43aDQyLjdDNTkyLjIgMTkyIDY0MCAyMzkuOCA2NDAgMjk4LjdjMCAxMS44LTkuNiAyMS4zLTIxLjMgMjEuM0g0MDUuM3pNMjI0IDIyNGE5NiA5NiAwIDEgMSAxOTIgMCA5NiA5NiAwIDEgMSAtMTkyIDB6TTEyOCA0ODUuM0MxMjggNDExLjcgMTg3LjcgMzUyIDI2MS4zIDM1MkgzNzguN0M0NTIuMyAzNTIgNTEyIDQxMS43IDUxMiA0ODUuM2MwIDE0LjctMTEuOSAyNi43LTI2LjcgMjYuN0gxNTQuN2MtMTQuNyAwLTI2LjctMTEuOS0yNi43LTI2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVV0ZW5zaWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwQzQwMCAwIDI4OCAzMiAyODggMTc2VjI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NGgzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNTIgMjQwIDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek02NCAxNkM2NCA3LjggNTcuOSAxIDQ5LjcgLjFTMzQuMiA0LjYgMzIuNCAxMi41TDIuMSAxNDguOEMuNyAxNTUuMSAwIDE2MS41IDAgMTY3LjljMCA0NS45IDM1LjEgODMuNiA4MCA4Ny43VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1NS42YzQ0LjktNC4xIDgwLTQxLjggODAtODcuN2MwLTYuNC0uNy0xMi44LTIuMS0xOS4xTDE5MS42IDEyLjVjLTEuOC04LTkuMy0xMy4zLTE3LjQtMTIuNFMxNjAgNy44IDE2MCAxNlYxNTAuMmMwIDUuNC00LjQgOS44LTkuOCA5LjhjLTUuMSAwLTkuMy0zLjktOS44LTlMMTI3LjkgMTQuNkMxMjcuMiA2LjMgMTIwLjMgMCAxMTIgMHMtMTUuMiA2LjMtMTUuOSAxNC42TDgzLjcgMTUxYy0uNSA1LjEtNC43IDktOS44IDljLTUuNCAwLTkuOC00LjQtOS44LTkuOFYxNnptNDguMyAxNTJsLS4zIDAtLjMgMCAuMy0uNyAuMyAuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43IDM0LjVjMTYuMy02LjggMzUgLjkgNDEuOCAxNy4yTDE5MiAzNjQuOCAzMjIuNSA1MS43YzYuOC0xNi4zIDI1LjUtMjQgNDEuOC0xNy4yczI0IDI1LjUgMTcuMiA0MS44bC0xNjAgMzg0Yy01IDExLjktMTYuNiAxOS43LTI5LjUgMTkuN3MtMjQuNi03LjgtMjkuNS0xOS43TDIuNSA3Ni4zYy02LjgtMTYuMyAuOS0zNSAxNy4yLTQxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZhblNodXR0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTA0djg4aDk2Vjk2SDcyYy00LjQgMC04IDMuNi04IDh6bTQ4MiA4OEw0NjUuMSA5NkgzODR2OTZINTQ2em0tMjI2IDBWOTZIMjI0djk2aDk2ek01OTIgMzg0SDU3NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgyNTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjEwNEMwIDY0LjIgMzIuMiAzMiA3MiAzMkgxOTIgMzUyIDQ2NS4xYzE4LjkgMCAzNi44IDguMyA0OSAyMi44TDYyNSAxODYuNWM5LjcgMTEuNSAxNSAyNi4xIDE1IDQxLjJWMzM2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0tNjQgMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNjAgNDMyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmF1bHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDgwbDE2IDMyaDY0bDE2LTMySDQwMGwxNiAzMmg2NGwxNi0zMmgxNmMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjI0IDMyMGE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMC0yNDBhMTYwIDE2MCAwIDEgMSAwIDMyMCAxNjAgMTYwIDAgMSAxIDAtMzIwek00ODAgMjIxLjNWMzM2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjIyMS4zYy0xOC42LTYuNi0zMi0yNC40LTMyLTQ1LjNjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGMwIDIwLjktMTMuNCAzOC43LTMyIDQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlY3RvclNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggODBoMzJ2MzJIMzY4Vjgwek0zNTIgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMySDEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyVjM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJIMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMlYxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyek05NiAxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJIMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyVjM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJIMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE2MHpNNDggNDAwSDgwdjMySDQ4VjQwMHptMzIwIDMyVjQwMGgzMnYzMkgzNjh6TTQ4IDExMlY4MEg4MHYzMkg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVudXNEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDI4OGExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6TTM2OCAxNzZjMCA4Ni4zLTYyLjEgMTU4LjEtMTQ0IDE3My4xVjM4NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjR2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgzMlYzNDkuMUM3OC4xIDMzNC4xIDE2IDI2Mi4zIDE2IDE3NkMxNiA3OC44IDk0LjggMCAxOTIgMHMxNzYgNzguOCAxNzYgMTc2ek0zNDQgMzE4YzE0LjYtMTUuNiAyNi44LTMzLjQgMzYtNTNjMTguOCAxNC40IDQyLjQgMjMgNjggMjNjNjEuOSAwIDExMi01MC4xIDExMi0xMTJzLTUwLjEtMTEyLTExMi0xMTJjLTI1LjYgMC00OS4xIDguNi02OCAyM2MtOS4zLTE5LjUtMjEuNS0zNy40LTM2LTUzQzM3My4xIDEyLjYgNDA5LjEgMCA0NDggMGM5Ny4yIDAgMTc2IDc4LjggMTc2IDE3NmMwIDg2LjMtNjIuMSAxNTguMS0xNDQgMTczLjFWMzg0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4MHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyVjM0OS4xYy0yNi42LTQuOS01MS4xLTE1LjctNzItMzEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVudXNNYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAyODhhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0ek0zNTIgMTc2YzAgODYuMy02Mi4xIDE1OC4xLTE0NCAxNzMuMVYzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjA4djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgxMTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMzJWMzQ5LjFDNjIuMSAzMzQuMSAwIDI2Mi4zIDAgMTc2QzAgNzguOCA3OC44IDAgMTc2IDBzMTc2IDc4LjggMTc2IDE3NnpNMjcxLjkgMzYwLjZjMTkuMy0xMC4xIDM2LjktMjMuMSA1Mi4xLTM4LjRjMjAgMTguNSA0Ni43IDI5LjggNzYuMSAyOS44YzYxLjkgMCAxMTItNTAuMSAxMTItMTEycy01MC4xLTExMi0xMTItMTEyYy03LjIgMC0xNC4zIC43LTIxLjEgMmMtNC45LTIxLjUtMTMtNDEuNy0yNC02MC4yQzM2OS4zIDY2IDM4NC40IDY0IDQwMCA2NGMzNyAwIDcxLjQgMTEuNCA5OS44IDMxbDIwLjYtMjAuNkw0ODcgNDFjLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJTNDk0LjMgMCA1MDQgMEg2MTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTM2YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTMzLjQtMzMuNEw1NDUgMTQwLjJjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOGMwIDk3LjItNzguOCAxNzYtMTc2IDE3NmMtNTAuNSAwLTk2LTIxLjMtMTI4LjEtNTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVudXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTc2YTExMiAxMTIgMCAxIDEgMjI0IDBBMTEyIDExMiAwIDEgMSA4MCAxNzZ6TTIyNCAzNDkuMWM4MS45LTE1IDE0NC04Ni44IDE0NC0xNzMuMUMzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgODYuMyA2Mi4xIDE1OC4xIDE0NCAxNzMuMVYzODRIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMydjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIyNFYzNDkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVzdFBhdGNoZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjIgNjkuN2w1NS45IDE2Ny43LTExIDMzLjFjLTIuNyA4LjItNC4xIDE2LjctNC4xIDI1LjNWNDY0YzAgMTQuNSAzLjkgMjguMiAxMC43IDM5LjlDMTk1IDUwOSAxODUuOSA1MTIgMTc2IDUxMkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjcwLjVjMC05LjUgMi44LTE4LjcgOC4xLTI2LjZsNDcuOS03MS44YzUuMy03LjkgOC4xLTE3LjEgOC4xLTI2LjZWMTI4IDU0LjMgNDhDNjQgMjEuNSA4NS41IDAgMTEyIDBoNC41Yy4yIDAgLjQgMCAuNiAwYy40IDAgLjggMCAxLjIgMGMxOC44IDAgMzQuMSA5LjcgNDQuMSAxOC44QzE3MS42IDI3LjIgMTkwLjggNDAgMjI0IDQwczUyLjQtMTIuOCA2MS43LTIxLjJDMjk1LjcgOS43IDMxMSAwIDMyOS43IDBjLjQgMCAuOCAwIDEuMiAwYy4yIDAgLjQgMCAuNiAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OHY2LjNWMTI4djE3LjVjMCA5LjUgMi44IDE4LjcgOC4xIDI2LjZsNDcuOSA3MS44YzUuMyA3LjkgOC4xIDE3LjEgOC4xIDI2LjZWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDI3MmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjk1LjhjMC01LjIgLjgtMTAuMyAyLjUtMTUuMkwyOTYuOCA2OS43QzI3OS40IDc5LjcgMjU1LjQgODggMjI0IDg4cy01NS40LTguMy03Mi44LTE4LjN6TTk2IDQ1NmE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTYzLjUgMjU1LjVjLTQuNyA0LjctNC43IDEyLjMgMCAxN0w3OSAyODggNjMuNSAzMDMuNWMtNC43IDQuNy00LjcgMTIuMyAwIDE3czEyLjMgNC43IDE3IDBMOTYgMzA1bDE1LjUgMTUuNWM0LjcgNC43IDEyLjMgNC43IDE3IDBzNC43LTEyLjMgMC0xN0wxMTMgMjg4bDE1LjUtMTUuNWM0LjctNC43IDQuNy0xMi4zIDAtMTdzLTEyLjMtNC43LTE3IDBMOTYgMjcxIDgwLjUgMjU1LjVjLTQuNy00LjctMTIuMy00LjctMTcgMHpNMzA0IDI4MHY4IDMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMiA4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0aC04di04YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNy4xIDIzNy40TDE1MS4yIDY5LjdDMTY4LjYgNzkuNyAxOTIuNiA4OCAyMjQgODhzNTUuNC04LjMgNzIuOC0xOC4zTDIyNi41IDI4MC42Yy0xLjYgNC45LTIuNSAxMC0yLjUgMTUuMlY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINDAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI3MC41YzAtOS41LTIuOC0xOC43LTguMS0yNi42bC00Ny45LTcxLjhjLTUuMy03LjktOC4xLTE3LjEtOC4xLTI2LjZWMTI4IDU0LjMgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQuNWMtLjIgMC0uNCAwLS42IDBjLS40IDAtLjggMC0xLjIgMEMzMTEgMCAyOTUuNyA5LjcgMjg1LjcgMTguOEMyNzYuNCAyNy4yIDI1Ny4yIDQwIDIyNCA0MHMtNTIuNC0xMi44LTYxLjctMjEuMkMxNTIuMyA5LjcgMTM3IDAgMTE4LjMgMGMtLjQgMC0uOCAwLTEuMiAwYy0uMiAwLS40IDAtLjYgMEgxMTJDODUuNSAwIDY0IDIxLjUgNjQgNDh2Ni4zVjEyOHYxNy41YzAgOS41LTIuOCAxOC43LTguMSAyNi42TDguMSAyNDMuOUMyLjggMjUxLjggMCAyNjEuMSAwIDI3MC41VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgxNzZjOS45IDAgMTktMyAyNi43LTguMUMxOTUuOSA0OTIuMiAxOTIgNDc4LjUgMTkyIDQ2NFYyOTUuOGMwLTguNiAxLjQtMTcuMSA0LjEtMjUuM2wxMS0zMy4xek0zNDcuMyAzNTYuN2w0OCA0OGM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC00OC00OGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwem0tMjk0LjYgNDhsNDgtNDhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42bC00OCA0OGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhbENpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIOTZoNjQgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJWMjY2LjhjLTIwLjIgMjguNi0zMiA2My41LTMyIDEwMS4yYzAgMjUuMiA1LjMgNDkuMSAxNC44IDcwLjhDMTg5LjUgNDYzLjcgMTYwLjYgNDgwIDEyOCA0ODBjLTUzIDAtOTYtNDMtOTYtOTZWOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNOTYgOTZ2OTZoNjRWOTZIOTZ6TTIyNCAzNjhhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjExLjMtNDMuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMzUyIDM4NS40bC0yOC43LTI4LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsNDAgNDBjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsNzItNzJjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWxWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZWMzg0YzAgNTMgNDMgOTYgOTYgOTZjMjguNiAwIDU0LjItMTIuNSA3MS44LTMyLjNjLjEtMTQuMiA1LjYtMjguMyAxNi40LTM5LjFjLjItLjIgLjEtLjYtLjItLjZjLTMwLjkgMC01Ni0yNS4xLTU2LTU2czI1LjEtNTYgNTYtNTZjLjMgMCAuNC0uNCAuMi0uNmMtMjEuOS0yMS45LTIxLjktNTcuMyAwLTc5LjJjMi40LTIuNCA1LTQuNiA3LjgtNi41Vjk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MCA5NiAzMnpNOTYgMTkyVjk2aDY0djk2SDk2ek0yMTYgMzc2YzI4LjggMCA0My4yIDM0LjggMjIuOSA1NS4yYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBjMjAuNC0yMC40IDU1LjItNS45IDU1LjIgMjIuOWMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMjguOCAzNC44LTQzLjIgNTUuMi0yMi45YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUM0NDQuOCA0MTAuOCA0NTkuMiAzNzYgNDg4IDM3NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGMtMjguOCAwLTQzLjItMzQuOC0yMi45LTU1LjJjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEM0MTAuOCAyNTkuMiAzNzYgMjQ0LjggMzc2IDIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGMwIDI4LjgtMzQuOCA0My4yLTU1LjIgMjIuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWMyMC40IDIwLjQgNS45IDU1LjItMjIuOSA1NS4yYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0em0xMDQtODhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em00MCA5NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Mi42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOS40IDkuNEwyOC4xIDM0Mi42QzEwLjEgMzYwLjYgMCAzODUgMCA0MTAuNVY0MTZjMCA1MyA0MyA5NiA5NiA5Nmg1LjVjMjUuNSAwIDQ5LjktMTAuMSA2Ny45LTI4LjFMNDQ4IDIwNS4zbDkuNCA5LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMzItMzItOTYtOTYtMzItMzJ6TTIwNS4zIDI1NkwzNTIgMTA5LjMgNDAyLjcgMTYwbC05NiA5NkgyMDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg4OGg0OCA1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMlY0MDBjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBWOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMTM2IDk2SDg4VjI1Nmg0OFY5NnpNMjg4IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDU2IDQ4IDU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjQwMGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MFY5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQyNCA5NkgzNzZWMjU2aDQ4Vjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWRlb1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTg2LjQtNjcuNyAxMy44IDkuMmM5LjggNi41IDIyLjQgNy4yIDMyLjkgMS42czE2LjktMTYuNCAxNi45LTI4LjJWMTI4YzAtMTEuOC02LjUtMjIuNi0xNi45LTI4LjJzLTIzLTUtMzIuOSAxLjZsLTk2IDY0TDQ0OCAxNzQuOVYxOTIgMzIwdjUuOGwtMzItMjUuMVYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTEzLjlMMzguOCA1LjF6TTQwNyA0MTYuN0wzMi4zIDEyMS41Yy0uMiAyLjEtLjMgNC4zLS4zIDYuNVYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzUyYzIzLjQgMCA0My45LTEyLjYgNTUtMzEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4ek01NTkuMSA5OS44YzEwLjQgNS42IDE2LjkgMTYuNCAxNi45IDI4LjJWMzg0YzAgMTEuOC02LjUgMjIuNi0xNi45IDI4LjJzLTIzIDUtMzIuOS0xLjZsLTk2LTY0TDQxNiAzMzcuMVYzMjAgMTkyIDE3NC45bDE0LjItOS41IDk2LTY0YzkuOC02LjUgMjIuNC03LjIgMzIuOS0xLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpaGFyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODEgMjJMMzA1LjggNC43YzEuMy0uOSAyLjctMS44IDQuMS0yLjRDMzEzLjEgLjcgMzE2LjYgMCAzMjAgMHM2LjkgLjcgMTAuMSAyLjJjMS40IC43IDIuOCAxLjUgNC4xIDIuNEwzNTkgMjJDMzkzIDQ1LjggNDMwLjggNjMuNSA0NzAuOCA3NC40bDIzIDYuM2MxLjggLjUgMy42IDEuMSA1LjIgMmMzLjIgMS43IDUuOSA0IDguMSA2LjhjMy44IDQuOSA1LjYgMTEuMyA0LjcgMTcuOGMtLjQgMi44LTEuMiA1LjQtMi41IDcuOGMtMS43IDMuMi00IDUuOS02LjggOC4xYy00LjMgMy4yLTkuNiA1LjEtMTUuMSA0LjlINDgwdjU2LjFsNi40IDUuMSA1LjIgNC4xYzIxLjEgMTYuNyA0NSAyOS42IDcwLjUgMzguMWwyOC45IDkuNmMxLjYgLjUgMy4yIDEuMiA0LjYgMmMzLjEgMS43IDUuOCA0LjEgNy44IDYuOXMzLjUgNi4xIDQuMSA5LjZjLjUgMi43IC42IDUuNSAuMSA4LjNzLTEuNCA1LjQtMi43IDcuOGMtMS43IDMuMS00LjEgNS44LTYuOSA3LjhzLTYuMSAzLjUtOS42IDQuMWMtMS42IC4zLTMuMyAuNC01IC40SDU0NHY2NS45YzIwLjUgMjIuOCA0Ny40IDM5LjIgNzcuNCA0Ni43QzYzMiA0MDMgNjQwIDQxMi42IDY0MCA0MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRINTc2djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgzNTJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDEyOHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0YzAtMTEuNCA4LTIxIDE4LjYtMjMuNGMzMC03LjYgNTYuOS0yMy45IDc3LjQtNDYuN1YyODhINTYuNmMtMS43IDAtMy40LS4xLTUtLjRjLTMuNS0uNy02LjgtMi4xLTkuNi00LjFzLTUuMi00LjctNy03LjhjLTEuMy0yLjQtMi4zLTUtMi43LTcuOHMtLjQtNS42IC4xLTguM2MuNy0zLjUgMi4xLTYuOCA0LjEtOS42czQuNy01LjIgNy44LTYuOWMxLjQtLjggMy0xLjUgNC42LTJsMjguOS05LjZjMjUuNS04LjUgNDkuNC0yMS40IDcwLjUtMzguMWw1LjItNC4xIDYuNC01LjFWMTc2IDEyOGgtNy41Yy01LjUgLjEtMTAuOC0xLjctMTUuMS00LjljLTIuOC0yLjEtNS4xLTQuOC02LjgtOC4xYy0xLjItMi40LTIuMS01LTIuNS03LjhjLS45LTYuNSAuOS0xMi44IDQuNy0xNy44YzIuMS0yLjggNC44LTUuMSA4LjEtNi44YzEuNi0uOCAzLjQtMS41IDUuMi0ybDIzLTYuM0MyMDkuMiA2My41IDI0NyA0NS44IDI4MSAyMnpNNDE2IDEyOEgzMjAgMjI0djY0aDcyIDQ4IDcyVjEyOHpNMTYwIDI4OHY2NEgyOTZoMjQgMjRINDgwVjI4OEgzNDQgMzIwaDBIMjk2IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXNDb3ZpZFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDcyLjEgMzQ0LjdjMTEuNC0xOS41IDE5LjEtNDEuNCAyMi4zLTY0LjdINTI4djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djE2SDQ5NC40Yy00LjItMzAuNy0xNi4zLTU4LjgtMzQuMS04Mi4zTDQ4NCAxMjUuOWwxMS4zIDExLjNjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDQ3Mi43IDQ2LjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlMNDUwLjEgOTJsLTIzLjggMjMuOEM0MDIuOCA5Ny45IDM3NC43IDg1LjggMzQ0IDgxLjZWNDhoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjgwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDE2VjgxLjZjLTMwLjcgNC4yLTU4LjggMTYuMy04Mi4zIDM0LjFMMTg5LjkgOTJsMTEuMy0xMS4zYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMTM0LjEgNzkuOCAzOC44IDUuMXptMzYyLjUgNDA3TDE0OS4yIDIxMy41Yy0xLjUgNi0yLjcgMTIuMi0zLjUgMTguNUgxMTJWMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjgwaDMzLjZjNC4yIDMwLjcgMTYuMyA1OC44IDM0LjEgODIuM0wxNTYgMzg2LjFsLTExLjMtMTEuM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw1Ni42IDU2LjZjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDE4OS45IDQyMGwyMy44LTIzLjhjMjMuNSAxNy45IDUxLjcgMjkuOSA4Mi4zIDM0LjFWNDY0SDI4MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNDRWNDMwLjRjMjAuNC0yLjggMzkuNy05LjEgNTcuMy0xOC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c0NvdmlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODBWODEuNmMzMC43IDQuMiA1OC44IDE2LjMgODIuMyAzNC4xTDM4Ni4xIDkyIDM3NC44IDgwLjZjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw1Ni42IDU2LjZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw0MjAgMTI1LjlsLTIzLjggMjMuOGMxNy45IDIzLjUgMjkuOSA1MS43IDM0LjEgODIuM0g0NjRWMjE2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2ODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDQzMC40Yy00LjIgMzAuNy0xNi4zIDU4LjgtMzQuMSA4Mi4zTDQyMCAzODYuMWwxMS4zLTExLjNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01Ni42IDU2LjZjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMzg2LjEgNDIwbC0yMy44LTIzLjhjLTIzLjUgMTcuOS01MS43IDI5LjktODIuMyAzNC4xVjQ2NGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMTZWNDMwLjRjLTMwLjctNC4yLTU4LjgtMTYuMy04Mi4zLTM0LjFMMTI1LjkgNDIwbDExLjMgMTEuM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDQ2LjcgNDA4LjdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMEw5MiAzODYuMWwyMy44LTIzLjhDOTcuOSAzMzguOCA4NS44IDMxMC43IDgxLjYgMjgwSDQ4djE2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjIxNmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djE2SDgxLjZjNC4yLTMwLjcgMTYuMy01OC44IDM0LjEtODIuM0w5MiAxMjUuOSA4MC42IDEzNy4yYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU2LjYtNTYuNmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMMTI1LjkgOTJsMjMuOCAyMy44YzIzLjUtMTcuOSA1MS43LTI5LjkgODIuMy0zNC4xVjQ4SDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTQ4IDIwMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem02NCAxMDRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTE1NC4zLTEyMWMtMi0zMC4xIDIwLjgtNjAuMSA1Ni02MC4xSDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1MzIuNWMtNDkuOSAwLTc0LjktNjAuMy0zOS42LTk1LjZsOC4yLTguMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtOC4yIDguMkM0MTIuMyAxMTguNCAzNTIgOTMuNCAzNTIgNDMuNVYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0My41YzAgNDkuOS02MC4zIDc0LjktOTUuNiAzOS42TDE4NC4yIDc1Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGMtMS42IDEuNi0zLjEgMy40LTQuMyA1LjNMMzguOCA1LjF6bTIyNS44IDE3N2M2LjktMy45IDE0LjktNi4xIDIzLjQtNi4xYzI2LjUgMCA0OCAyMS41IDQ4IDQ4YzAgNC40LS42IDguNy0xLjcgMTIuN2wtNjkuNy01NC42ek00MDIgNDEyLjdMMTQ0LjcgMjEwYy05LjUgOC41LTIyLjIgMTQtMzcuMiAxNEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgxMS41YzQ5LjkgMCA3NC45IDYwLjMgMzkuNiA5NS42bC04LjIgOC4yYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDguMi04LjJjMzUuMy0zNS4zIDk1LjYtMTAuMyA5NS42IDM5LjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDY4LjVjMC0zMS4yIDIzLjYtNTIuNyA1MC01NS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDMuNWMwIDQ5LjktNjAuMyA3NC45LTk1LjYgMzkuNkwxMjAuMiA3NUMxMDcuNyA2Mi41IDg3LjUgNjIuNSA3NSA3NXMtMTIuNSAzMi44IDAgNDUuM2w4LjIgOC4yQzExOC40IDE2My43IDkzLjQgMjI0IDQzLjUgMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQzLjVjNDkuOSAwIDc0LjkgNjAuMyAzOS42IDk1LjZMNzUgMzkxLjhjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsOC4yLTguMmMzNS4zLTM1LjMgOTUuNi0xMC4zIDk1LjYgMzkuNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NjguNWMwLTQ5LjkgNjAuMy03NC45IDk1LjYtMzkuNmw4LjIgOC4yYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTguMi04LjJjLTM1LjMtMzUuMy0xMC4zLTk1LjYgMzkuNi05NS42SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NjguNWMtNDkuOSAwLTc0LjktNjAuMy0zOS42LTk1LjZsOC4yLTguMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtOC4yIDguMkMzNDguMyAxMTguNCAyODggOTMuNCAyODggNDMuNVYzMnpNMTc2IDIyNGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0xMjggNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjM3LjVjMCAzNS42IDQzLjEgNTMuNSA2OC4zIDI4LjNsOS41LTkuNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTkuNSA5LjVDMjkzIDEyNC45IDMxMC45IDE2OCAzNDYuNSAxNjhIMzYwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDM0Ni41Yy0zNS42IDAtNTMuNSA0My4xLTI4LjMgNjguM2w5LjUgOS41YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTkuNS05LjVDMjU5LjEgMjkzIDIxNiAzMTAuOSAyMTYgMzQ2LjVWMzYwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM0Ni41YzAtMzUuNi00My4xLTUzLjUtNjguMy0yOC4zbC05LjUgOS41Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDkuNS05LjVDOTEgMjU5LjEgNzMuMSAyMTYgMzcuNSAyMTZIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMzcuNWMzNS42IDAgNTMuNS00My4xIDI4LjMtNjguM2wtOS41LTkuNWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDkuNSA5LjVDMTI0LjkgOTEgMTY4IDczLjEgMTY4IDM3LjVWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTQ4IDIyNGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bS00OC02NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0zMjAgODBjMCAzMyAzOS45IDQ5LjUgNjMuMiAyNi4yYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkM1NzQuNSAzMTIuMSA1OTEgMzUyIDYyNCAzNTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTMzIDAtNDkuNSAzOS45LTI2LjIgNjMuMmM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwQzU1MS45IDQ0Ni41IDUxMiA0NjMgNTEyIDQ5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmMwLTMzLTM5LjktNDkuNS02My4yLTI2LjJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZDNDE3LjUgNDIzLjkgNDAxIDM4NCAzNjggMzg0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2YzMzIDAgNDkuNS0zOS45IDI2LjItNjMuMmMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwQzQ0MC4xIDI4OS41IDQ4MCAyNzMgNDgwIDI0MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2em0wIDExMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2ljZW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDMyMGE4MCA4MCAwIDEgMSAwLTE2MCA4MCA4MCAwIDEgMSAwIDE2MHptMTE5LjggMGMxNS4zLTIyLjkgMjQuMi01MC40IDI0LjItODBjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCAxNjAuNSAwIDI0MHM2NC41IDE0NCAxNDQgMTQ0SDQ5NmM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NHMtNjQuNS0xNDQtMTQ0LTE0NHMtMTQ0IDY0LjUtMTQ0IDE0NGMwIDI5LjYgOC45IDU3LjEgMjQuMiA4MEgyNjMuOHpNNDk2IDE2MGE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sY2FubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMTQ0Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzE1LjcgMCAzMCA1LjYgNDEuMiAxNUMyMTIuNCAxMi40IDIzMi43IDAgMjU2IDBzNDMuNiAxMi40IDU0LjggMzFDMzIyIDIxLjYgMzM2LjMgMTYgMzUyIDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0Yy0xNC43IDAtMjguMy01LTM5LjEtMTMuM2wtMzIgNDhDMjc1LjMgMTg3IDI2NiAxOTIgMjU2IDE5MnMtMTkuMy01LTI0LjktMTMuM2wtMzItNDhDMTg4LjMgMTM5IDE3NC43IDE0NCAxNjAgMTQ0ek0xNDQgMzUybDQ4LjQtMjQuMmMxMC4yLTUuMSAyMS42LTcuOCAzMy03LjhjMTkuNiAwIDM4LjQgNy44IDUyLjIgMjEuNmwzMi41IDMyLjVjNi4zIDYuMyAxNC45IDkuOSAyMy44IDkuOWMxMS4zIDAgMjEuOC01LjYgMjgtMTVsOS43LTE0LjYtNTguOS02Ni4zYy05LjEtMTAuMi0yMi4yLTE2LjEtMzUuOS0xNi4xSDIzNS4xYy0xMy43IDAtMjYuOCA1LjktMzUuOSAxNi4xbC01OS45IDY3LjRMMTQ0IDM1MnptMTkuNC05NS44YzE4LjItMjAuNSA0NC4zLTMyLjIgNzEuOC0zMi4yaDQxLjhjMjcuNCAwIDUzLjUgMTEuNyA3MS44IDMyLjJsMTUwLjIgMTY5YzguNSA5LjUgMTMuMiAyMS45IDEzLjIgMzQuN2MwIDI4LjgtMjMuNCA1Mi4yLTUyLjIgNTIuMkg1Mi4yQzIzLjQgNTEyIDAgNDg4LjYgMCA0NTkuOGMwLTEyLjggNC43LTI1LjEgMTMuMi0zNC43bDE1MC4yLTE2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sbGV5YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuOCAyNjcuNGMtMjYuMSA4LjctNTMuNCAxMy44LTgxIDE1LjFjOS4yLTEwNS4zLTMxLjUtMjA0LjItMTAzLjItMjcyLjRDNDM0LjEgNDEuMSA1MTIgMTM5LjUgNTEyIDI1NmMwIDMuOC0uMSA3LjYtLjIgMTEuNHptLTMuOSAzNC43Yy01LjggMzItMTcuNiA2Mi0zNC4yIDg4LjdjLTk3LjUgNDguNS0yMTcuNyA0Mi42LTMxMS45LTI0LjVjMjMuNy0zNi4yIDU1LjQtNjcuNyA5NC41LTkxLjhjNzkuOSA0My4yIDE3MC4xIDUwLjggMjUxLjYgMjcuNnptLTIzNi01NS41Yy0yLjUtOTAuOS00MS4xLTE3Mi43LTEwMS45LTIzMS43QzE5Ni44IDUuMiAyMjUuOCAwIDI1NiAwYzIuNyAwIDUuMyAwIDcuOSAuMWM5MC44IDYwLjIgMTQ1LjcgMTY3LjIgMTM0LjcgMjgyLjNjLTQzLjEtMi40LTg2LjQtMTQuMS0xMjYuOC0zNS45ek0xMzggMjguOGMyMC42IDE4LjMgMzguNyAzOS40IDUzLjcgNjIuNkM5NS45IDEzNi4xIDMwLjYgMjIwLjggNy4zIDMxNi45QzIuNSAyOTcuNCAwIDI3NyAwIDI1NkMwIDE1Ny4yIDU2IDcxLjUgMTM4IDI4Ljh6bTY5LjYgOTAuNWMxOS41IDM4LjYgMzEgODEuOSAzMi4zIDEyNy43QzE2Mi41IDI5NC42IDExMC45IDM2OC45IDkwLjIgNDUxQzY2IDQzMC40IDQ1LjYgNDA1LjQgMzAuNCAzNzcuMmM2LjctMTA4LjcgNzEuOS0yMDkuOSAxNzcuMS0yNTcuOXpNMjU2IDUxMmMtNTAuNyAwLTk4LTE0LjctMTM3LjgtNDAuMmM1LjYtMjcgMTQuOC01My4xIDI3LjQtNzcuN0MyMzIuMiA0NTQuNiAzMzguMSA0NjguOCA0MzMgNDQxYy00NiA0NC0xMDguMyA3MS0xNzcgNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbHVtZUhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTMzLjYgMzIuNUM1OTguNSA4NS4yIDY0MCAxNjUuOCA2NDAgMjU2cy00MS41IDE3MC43LTEwNi40IDIyMy41Yy0xMC4zIDguNC0yNS40IDYuOC0zMy44LTMuNXMtNi44LTI1LjQgMy41LTMzLjhDNTU3LjUgMzk4LjIgNTkyIDMzMS4yIDU5MiAyNTZzLTM0LjUtMTQyLjItODguNy0xODYuM2MtMTAuMy04LjQtMTEuOC0yMy41LTMuNS0zMy44czIzLjUtMTEuOCAzMy44LTMuNXpNNDczLjEgMTA3YzQzLjIgMzUuMiA3MC45IDg4LjkgNzAuOSAxNDlzLTI3LjcgMTEzLjgtNzAuOSAxNDljLTEwLjMgOC40LTI1LjQgNi44LTMzLjgtMy41cy02LjgtMjUuNCAzLjUtMzMuOEM0NzUuMyAzNDEuMyA0OTYgMzAxLjEgNDk2IDI1NnMtMjAuNy04NS4zLTUzLjItMTExLjhjLTEwLjMtOC40LTExLjgtMjMuNS0zLjUtMzMuOHMyMy41LTExLjggMzMuOC0zLjV6bS02MC41IDc0LjVDNDM0LjEgMTk5LjEgNDQ4IDIyNS45IDQ0OCAyNTZzLTEzLjkgNTYuOS0zNS40IDc0LjVjLTEwLjMgOC40LTI1LjQgNi44LTMzLjgtMy41cy02LjgtMjUuNCAzLjUtMzMuOEMzOTMuMSAyODQuNCA0MDAgMjcxIDQwMCAyNTZzLTYuOS0yOC40LTE3LjctMzcuM2MtMTAuMy04LjQtMTEuOC0yMy41LTMuNS0zMy44czIzLjUtMTEuOCAzMy44LTMuNXpNMzAxLjEgMzQuOEMzMTIuNiA0MCAzMjAgNTEuNCAzMjAgNjRWNDQ4YzAgMTIuNi03LjQgMjQtMTguOSAyOS4ycy0yNSAzLjEtMzQuNC01LjNMMTMxLjggMzUySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyMjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoNjcuOEwyNjYuNyA0MC4xYzkuNC04LjQgMjIuOS0xMC40IDM0LjQtNS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAxLjEgMzQuOEMzMTIuNiA0MCAzMjAgNTEuNCAzMjAgNjRWNDQ4YzAgMTIuNi03LjQgMjQtMTguOSAyOS4ycy0yNSAzLjEtMzQuNC01LjNMMTMxLjggMzUySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyMjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoNjcuOEwyNjYuNyA0MC4xYzkuNC04LjQgMjIuOS0xMC40IDM0LjQtNS4zek00MTIuNiAxODEuNUM0MzQuMSAxOTkuMSA0NDggMjI1LjkgNDQ4IDI1NnMtMTMuOSA1Ni45LTM1LjQgNzQuNWMtMTAuMyA4LjQtMjUuNCA2LjgtMzMuOC0zLjVzLTYuOC0yNS40IDMuNS0zMy44QzM5My4xIDI4NC40IDQwMCAyNzEgNDAwIDI1NnMtNi45LTI4LjQtMTcuNy0zNy4zYy0xMC4zLTguNC0xMS44LTIzLjUtMy41LTMzLjhzMjMuNS0xMS44IDMzLjgtMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0YzAtMTIuNi03LjQtMjQtMTguOS0yOS4ycy0yNS0zLjEtMzQuNCA1LjNMMTMxLjggMTYwSDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGg2Ny44TDI2Ni43IDQ3MS45YzkuNCA4LjQgMjIuOSAxMC40IDM0LjQgNS4zUzMyMCA0NjAuNiAzMjAgNDQ4VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDEuMSAzNC44QzMxMi42IDQwIDMyMCA1MS40IDMyMCA2NFY0NDhjMCAxMi42LTcuNCAyNC0xOC45IDI5LjJzLTI1IDMuMS0zNC40LTUuM0wxMzEuOCAzNTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjIyNGMwLTM1LjMgMjguNy02NCA2NC02NGg2Ny44TDI2Ni43IDQwLjFjOS40LTguNCAyMi45LTEwLjQgMzQuNC01LjN6TTQyNSAxNjdsNTUgNTUgNTUtNTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01NSA1NSA1NSA1NWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC01NS01NS01NSA1NWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw1NS01NS01NS01NWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWckNhcmRib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDE4NC40YzI0LjIgMCA0Ni40LTEzLjcgNTcuMi0zNS40bDMyLTY0YzguOC0xNy41IDI2LjctMjguNiA0Ni4zLTI4LjZzMzcuNSAxMS4xIDQ2LjMgMjguNmwzMiA2NGMxMC44IDIxLjcgMzMgMzUuNCA1Ny4yIDM1LjRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NHpNOTYgMjQwYTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDk2IDI0MHptMzg0LTY0YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjggMzRjMTYuNS02LjIgMzUgMi4yIDQxLjIgMTguN2wxMTAuMiAyOTRMMjU3LjMgNTVjNC0xMy43IDE2LjUtMjMgMzAuNy0yM3MyNi43IDkuNCAzMC43IDIzbDg1LjEgMjkxLjdMNTE0IDUyLjhjNi4yLTE2LjUgMjQuNi0yNC45IDQxLjItMTguN3MyNC45IDI0LjcgMTguNyA0MS4ybC0xNDQgMzg0Yy00LjggMTIuOS0xNy40IDIxLjMtMzEuMiAyMC43cy0yNS43LTkuOC0yOS41LTIzTDI4OCAxNzguMyAyMDYuNyA0NTdjLTMuOSAxMy4yLTE1LjggMjIuNS0yOS41IDIzcy0yNi4zLTcuOC0zMS4yLTIwLjdMMiA3NS4yQy00LjIgNTguNyA0LjIgNDAuMiAyMC44IDM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYWxraWVUYWxraWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0UzY0IDEwLjcgNjQgMjRWOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjMwMC4xYzAgMTIuNyA1LjEgMjQuOSAxNC4xIDMzLjlsMy45IDMuOWM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOVY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMzA0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM3MS45YzAtMTIuNyA1LjEtMjQuOSAxNC4xLTMzLjlsMy45LTMuOWM5LTkgMTQuMS0yMS4yIDE0LjEtMzMuOVYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMySDIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMkgxMTJWMjR6bTAgMTM2SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MmMwLTM1LjMtMjguNy02NC02NC02NEg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNkg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6TTQxNiAyNzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYW5kTWFnaWNTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzQuNyA0Mi43TDE5NyA1Ni44Yy0zIDEuMS01IDQtNSA3LjJzMiA2LjEgNSA3LjJsMzcuNyAxNC4xTDI0OC44IDEyM2MxLjEgMyA0IDUgNy4yIDVzNi4xLTIgNy4yLTVsMTQuMS0zNy43TDMxNSA3MS4yYzMtMS4xIDUtNCA1LTcuMnMtMi02LjEtNS03LjJMMjc3LjMgNDIuNyAyNjMuMiA1Yy0xLjEtMy00LTUtNy4yLTVzLTYuMSAyLTcuMiA1TDIzNC43IDQyLjd6TTQ2LjEgMzk1LjRjLTE4LjcgMTguNy0xOC43IDQ5LjEgMCA2Ny45bDM0LjYgMzQuNmMxOC43IDE4LjcgNDkuMSAxOC43IDY3LjkgMEw1MjkuOSAxMTYuNWMxOC43LTE4LjcgMTguNy00OS4xIDAtNjcuOUw0OTUuMyAxNC4xYy0xOC43LTE4LjctNDkuMS0xOC43LTY3LjkgMEw0Ni4xIDM5NS40ek00ODQuNiA4Mi42bC0xMDUgMTA1LTIzLjMtMjMuMyAxMDUtMTA1IDIzLjMgMjMuM3pNNy41IDExNy4yQzMgMTE4LjkgMCAxMjMuMiAwIDEyOHMzIDkuMSA3LjUgMTAuOEw2NCAxNjBsMjEuMiA1Ni41YzEuNyA0LjUgNiA3LjUgMTAuOCA3LjVzOS4xLTMgMTAuOC03LjVMMTI4IDE2MGw1Ni41LTIxLjJjNC41LTEuNyA3LjUtNiA3LjUtMTAuOHMtMy05LjEtNy41LTEwLjhMMTI4IDk2IDEwNi44IDM5LjVDMTA1LjEgMzUgMTAwLjggMzIgOTYgMzJzLTkuMSAzLTEwLjggNy41TDY0IDk2IDcuNSAxMTcuMnptMzUyIDI1NmMtNC41IDEuNy03LjUgNi03LjUgMTAuOHMzIDkuMSA3LjUgMTAuOEw0MTYgNDE2bDIxLjIgNTYuNWMxLjcgNC41IDYgNy41IDEwLjggNy41czkuMS0zIDEwLjgtNy41TDQ4MCA0MTZsNTYuNS0yMS4yYzQuNS0xLjcgNy41LTYgNy41LTEwLjhzLTMtOS4xLTcuNS0xMC44TDQ4MCAzNTJsLTIxLjItNTYuNWMtMS43LTQuNS02LTcuNS0xMC44LTcuNXMtOS4xIDMtMTAuOCA3LjVMNDE2IDM1MmwtNTYuNSAyMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYW5kTWFnaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMSA0NjMuM2MtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3LjlMMzk1LjQgMTQuMWMxOC43LTE4LjcgNDkuMS0xOC43IDY3LjkgMGwzNC42IDM0LjZjMTguNyAxOC43IDE4LjcgNDkuMSAwIDY3LjlMMTE2LjUgNDk3LjljLTE4LjcgMTguNy00OS4xIDE4LjctNjcuOSAwTDE0LjEgNDYzLjN6TTM0Ny42IDE4Ny42bDEwNS0xMDVMNDI5LjQgNTkuM2wtMTA1IDEwNSAyMy4zIDIzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbmRTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNi4xYzkuNS04LjUgMjQtOC4xIDMzIC45bDggOGM5IDkgOS40IDIzLjUgLjkgMzNsLTg1LjggOTUuOWMtMi42IDIuOS00LjEgNi43LTQuMSAxMC43VjE3NmMwIDguOC03LjIgMTYtMTYgMTZIMzg0LjJjLTQuNiAwLTguOSAxLjktMTEuOSA1LjNMMTAwLjcgNTAwLjlDOTQuMyA1MDggODUuMyA1MTIgNzUuOCA1MTJjLTguOCAwLTE3LjMtMy41LTIzLjUtOS44TDkuNyA0NTkuN0MzLjUgNDUzLjQgMCA0NDUgMCA0MzYuMmMwLTkuNSA0LTE4LjUgMTEuMS0yNC44bDExMS42LTk5LjhjMy40LTMgNS4zLTcuNCA1LjMtMTEuOVYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDM0LjZjMy45IDAgNy43LTEuNSAxMC43LTQuMUw0NjQgNi4xek00MzIgMjg4YzMuNiAwIDYuNyAyLjQgNy43IDUuOGwxNC44IDUxLjcgNTEuNyAxNC44YzMuNCAxIDUuOCA0LjEgNS44IDcuN3MtMi40IDYuNy01LjggNy43bC01MS43IDE0LjgtMTQuOCA1MS43Yy0xIDMuNC00LjEgNS44LTcuNyA1LjhzLTYuNy0yLjQtNy43LTUuOGwtMTQuOC01MS43LTUxLjctMTQuOGMtMy40LTEtNS44LTQuMS01LjgtNy43czIuNC02LjcgNS44LTcuN2w1MS43LTE0LjggMTQuOC01MS43YzEtMy40IDQuMS01LjggNy43LTUuOHpNODcuNyA2OS44bDE0LjggNTEuNyA1MS43IDE0LjhjMy40IDEgNS44IDQuMSA1LjggNy43cy0yLjQgNi43LTUuOCA3LjdsLTUxLjcgMTQuOEw4Ny43IDIxOC4yYy0xIDMuNC00LjEgNS44LTcuNyA1LjhzLTYuNy0yLjQtNy43LTUuOEw1Ny41IDE2Ni41IDUuOCAxNTEuN2MtMy40LTEtNS44LTQuMS01LjgtNy43czIuNC02LjcgNS44LTcuN2w1MS43LTE0LjhMNzIuMyA2OS44YzEtMy40IDQuMS01LjggNy43LTUuOHM2LjcgMi40IDcuNyA1Ljh6TTIwOCAwYzMuNyAwIDYuOSAyLjUgNy44IDYuMWw2LjggMjcuMyAyNy4zIDYuOGMzLjYgLjkgNi4xIDQuMSA2LjEgNy44cy0yLjUgNi45LTYuMSA3LjhsLTI3LjMgNi44LTYuOCAyNy4zYy0uOSAzLjYtNC4xIDYuMS03LjggNi4xcy02LjktMi41LTcuOC02LjFsLTYuOC0yNy4zLTI3LjMtNi44Yy0zLjYtLjktNi4xLTQuMS02LjEtNy44czIuNS02LjkgNi4xLTcuOGwyNy4zLTYuOCA2LjgtMjcuM2MuOS0zLjYgNC4xLTYuMSA3LjgtNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXJlaG91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0ODhWMTcxLjNjMC0yNi4yIDE1LjktNDkuNyA0MC4yLTU5LjRMMzA4LjEgNC44YzcuNi0zLjEgMTYuMS0zLjEgMjMuOCAwTDU5OS44IDExMS45YzI0LjMgOS43IDQwLjIgMzMuMyA0MC4yIDU5LjRWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDU2OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptNDg4IDI0bC0zMzYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNDMySDUxMmwwIDU2YzAgMTMuMy0xMC43IDI0LTI0IDI0ek0xMjggNDAwVjMzNkg1MTJ2NjRIMTI4em0wLTk2VjIyNEg1MTJsMCA4MEgxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhdGVyTGFkZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMjcuN0MxMjggNzQuOSAxNzAuOSAzMiAyMjMuNyAzMmM0OC4zIDAgODkgMzYgOTUgODMuOWwxIDguMmMyLjIgMTcuNS0xMC4yIDMzLjUtMjcuOCAzNS43cy0zMy41LTEwLjItMzUuNy0yNy44bC0xLTguMmMtMi0xNS45LTE1LjUtMjcuOC0zMS41LTI3LjhjLTE3LjUgMC0zMS43IDE0LjItMzEuNyAzMS43VjIyNEgzODRWMTI3LjdDMzg0IDc0LjkgNDI2LjkgMzIgNDc5LjcgMzJjNDguMyAwIDg5IDM2IDk1IDgzLjlsMSA4LjJjMi4yIDE3LjUtMTAuMiAzMy41LTI3LjggMzUuN3MtMzMuNS0xMC4yLTM1LjctMjcuOGwtMS04LjJjLTItMTUuOS0xNS41LTI3LjgtMzEuNS0yNy44Yy0xNy41IDAtMzEuNyAxNC4yLTMxLjcgMzEuN1YzNjFjLTEuNiAxLTMuMyAyLTQuOCAzLjFjLTE4IDEyLjQtNDAuMSAyMC4zLTU5LjIgMjAuM2gwVjI4OEgxOTJ2OTYuNWMtMTkgMC00MS4yLTcuOS01OS4xLTIwLjNjLTEuNi0xLjEtMy4yLTIuMi00LjktMy4xVjEyNy43ek0zMDYuNSAzODkuOUMzMjkgNDA1LjQgMzU2LjUgNDE2IDM4NCA0MTZjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNDY5LjcgNDE3IDQ4MCAzODQgNDgwYy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2wwIDBDMTM2LjcgNDA1LjIgMTY1LjEgNDE2IDE5MiA0MTZjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xYzExLjEtNy45IDI1LjktNy45IDM3IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OS41IDY5LjljMTEuMS03LjkgMjUuOS03LjkgMzcgMEMzMjkgODUuNCAzNTYuNSA5NiAzODQgOTZjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgMTQ5LjcgNDE3IDE2MCAzODQgMTYwYy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNEM0Mi44IDkyLjYgNjEgODMuNSA3NS4zIDcxLjZjMTEuMS05LjUgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA4NS4yIDE2NS4xIDk2IDE5MiA5NmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjF6bTM3IDI4OEMzMjkgMzczLjQgMzU2LjUgMzg0IDM4NCAzODRjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNDM3LjcgNDE3IDQ0OCAzODQgNDQ4Yy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2wwIDBDMTM2LjcgMzczLjIgMTY1LjEgMzg0IDE5MiAzODRjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xYzExLjEtNy45IDI1LjktNy45IDM3IDB6bTAtMTQ0QzMyOSAyMjkuNCAzNTYuNSAyNDAgMzg0IDI0MGMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSAyOTMuNyA0MTcgMzA0IDM4NCAzMDRjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjUgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyAyMjkuMiAxNjUuMSAyNDAgMTkyIDI0MGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F2ZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJIMzIwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQxNmg5NlYyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJINjA4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDUxMlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NkgxOTJWMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDk2VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWlnaHRIYW5naW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA5NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xMjIuNSAzMmMzLjUtMTAgNS41LTIwLjggNS41LTMyYzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMTEuMiAxLjkgMjIgNS41IDMySDEyMGMtMjIgMC00MS4yIDE1LTQ2LjYgMzYuNGwtNzIgMjg4Yy0zLjYgMTQuMy0uNCAyOS41IDguNyA0MS4yUzMzLjIgNTEyIDQ4IDUxMkg0NjRjMTQuOCAwIDI4LjctNi44IDM3LjgtMTguNXMxMi4zLTI2LjggOC43LTQxLjJsLTcyLTI4OEM0MzMuMiAxNDMgNDE0IDEyOCAzOTIgMTI4SDM0Ni41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWlnaHRTY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMTc2YTEyOCAxMjggMCAxIDEgMjU2IDAgMTI4IDEyOCAwIDEgMSAtMjU2IDB6TTM5MS44IDY0QzM1OS41IDI0LjkgMzEwLjcgMCAyNTYgMFMxNTIuNSAyNC45IDEyMC4yIDY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM5MS44ek0yOTYgMjI0YzAtMTAuNi00LjEtMjAuMi0xMC45LTI3LjRsMzMuNi03OC4zYzMuNS04LjEtLjMtMTcuNS04LjQtMjFzLTE3LjUgLjMtMjEgOC40TDI1NS43IDE4NGMtMjIgLjEtMzkuNyAxOC0zOS43IDQwYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoZWF0QXduQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1IDQxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMzgzIDk1Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsODgtODh6TTMwNS41IDI3LjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDI3MS41IDM4LjZjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44bC0xMS4zLTExLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0xMS4zIDExLjNjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44TDEwMS44IDIzMWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNjcuOSAyNDIuM2MtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNEw5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjguOS02OC45IDEyLjIgMTIuMmMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBsMTEuMy0xMS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0xMS4zLTExLjNjLTIxLjgtMjEuOC00OS42LTM0LjEtNzguMS0zNi45bDMxLjktMzEuOSAxMi4yIDEyLjJjMjIuNSAyMi41IDUzLjMgMzEuNSA4Mi40IDI3YzAtMSAwLTIuMSAwLTMuMWMwLTMzLjEgOS4xLTY0LjEgMjUtOTAuNmMtMTUuNS04LjctMzIuNS0xMy44LTQ5LjgtMTUuNWwzMS45LTMxLjkgMTIuMiAxMi4yYzYgNiAxMi42IDExLjEgMTkuNyAxNS4yYzI3LjUtMzQgNjcuMy01Ny41IDExMi42LTYzLjhjLTQuMS0zLjgtOC40LTcuMy0xMi45LTEwLjVMNTA1IDEzN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC01OS40IDU5LjRjLTIwLjYtNC40LTQyLTMuNy02Mi4zIDIuMWM2LjEtMjEuMyA2LjYtNDMuOCAxLjQtNjUuM0w0MDkgNDFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwzMjkuMSA1Mi45Yy0zLjctNS03LjgtOS44LTEyLjQtMTQuM0wzMDUuNSAyNy4zek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGVhdEF3biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDUgNDFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwzODMgOTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw4OC04OHpNMzA1LjUgMjcuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMjcxLjUgMzguNmMtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNC0zMC41IDMwLjVjLTMuNC0yNy4zLTE1LjUtNTMuOC0zNi41LTc0LjhsLTExLjMtMTEuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTExLjMgMTEuM2MtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNC0zMC41IDMwLjVjLTMuNC0yNy4zLTE1LjUtNTMuOC0zNi41LTc0LjhMMTAxLjggMjMxYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw2Ny45IDI0Mi4zYy0zNy41IDM3LjUtMzcuNSA5OC4zIDAgMTM1LjhsMTAuNCAxMC40TDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw2OC45LTY4LjkgMTIuMiAxMi4yYzM3LjUgMzcuNSA5OC4zIDM3LjUgMTM1LjggMGwxMS4zLTExLjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTExLjMtMTEuM2MtMjEuOC0yMS44LTQ5LjYtMzQuMS03OC4xLTM2LjlsMzEuOS0zMS45IDEyLjIgMTIuMmMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBsMTEuMy0xMS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0xMS4zLTExLjNjLTIxLjgtMjEuOC00OS42LTM0LjEtNzguMS0zNi45bDMxLjktMzEuOSAxMi4yIDEyLjJjMzcuNSAzNy41IDk4LjMgMzcuNSAxMzUuOCAwTDQ4Ni41IDIzMWM2LjItNi4yIDYuMi0xNi40IDAtMjIuNkw0NzUuMiAxOTdjLTUuMi01LjItMTAuNi05LjgtMTYuNC0xMy45TDUwNSAxMzdjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNTkuNCA1OS40Yy0yMC42LTQuNC00Mi0zLjctNjIuMyAyLjFjNi4xLTIxLjMgNi42LTQzLjggMS40LTY1LjNMNDA5IDQxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMzI5LjEgNTIuOWMtMy43LTUtNy44LTkuOC0xMi40LTE0LjNMMzA1LjUgMjcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2hlZWxjaGFpck1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTIwNC41IDEyMS4zYy01LjQtMi41LTExLjctMS45LTE2LjQgMS43bC00MC45IDMwLjdjLTE0LjEgMTAuNi0zNC4yIDcuNy00NC44LTYuNHMtNy43LTM0LjIgNi40LTQ0LjhsNDAuOS0zMC43YzIzLjctMTcuOCA1NS4zLTIxIDgyLjEtOC40bDkwLjQgNDIuNWMyOS4xIDEzLjcgMzYuOCA1MS42IDE1LjIgNzUuNUwyOTkuMSAyMjRoOTcuNGMzMC4zIDAgNTMgMjcuNyA0Ny4xIDU3LjRMNDE1LjQgNDIyLjNjLTMuNSAxNy4zLTIwLjMgMjguNi0zNy43IDI1LjFzLTI4LjYtMjAuMy0yNS4xLTM3LjdMMzc3IDI4OEgzMDYuN2M4LjYgMTkuNiAxMy4zIDQxLjIgMTMuMyA2NGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQ0MC40IDAgMzUyczcxLjYtMTYwIDE2MC0xNjBjMTEuMSAwIDIyIDEuMSAzMi40IDMuM2w1NC4yLTU0LjItNDIuMS0xOS44ek0xNjAgNDQ4YTk2IDk2IDAgMSAwIDAtMTkyIDk2IDk2IDAgMSAwIDAgMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGVlbGNoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTEyMC41IDI0Ny4yYzEyLjQtNC43IDE4LjctMTguNSAxNC0zMC45cy0xOC41LTE4LjctMzAuOS0xNEM0My4xIDIyNS4xIDAgMjgzLjUgMCAzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBjNjEuMiAwIDExNC4zLTM0LjMgMTQxLjItODQuN2M2LjItMTEuNyAxLjgtMjYuMi05LjktMzIuNXMtMjYuMi0xLjgtMzIuNSA5LjlDMjQwIDQ0MCAyMDIuOCA0NjQgMTYwIDQ2NEM5OC4xIDQ2NCA0OCA0MTMuOSA0OCAzNTJjMC00Ny45IDMwLjEtODguOCA3Mi41LTEwNC44ek0yNTkuOCAxNzZsLTEuOS05LjdjLTQuNS0yMi4zLTI0LTM4LjMtNDYuOC0zOC4zYy0zMC4xIDAtNTIuNyAyNy41LTQ2LjggNTdsMjMuMSAxMTUuNWM2IDI5LjkgMzIuMiA1MS40IDYyLjggNTEuNGg1LjFjLjQgMCAuOCAwIDEuMyAwaDk0LjFjNi43IDAgMTIuNiA0LjEgMTUgMTAuNEw0MDIgNDU5LjJjNiAxNi4xIDIzLjggMjQuNiA0MC4xIDE5LjFsNDgtMTZjMTYuOC01LjYgMjUuOC0yMy43IDIwLjItNDAuNXMtMjMuNy0yNS44LTQwLjUtMjAuMmwtMTguNyA2LjItMjUuNS02OGMtMTEuNy0zMS4yLTQxLjYtNTEuOS03NC45LTUxLjlIMjgyLjJsLTkuNi00OEgzMzZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjU5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoaXNrZXlHbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMmMtOS4zIDAtMTguMSA0LTI0LjIgMTEuMVMtMSA1OS40IC4zIDY4LjZsNTAgMzQyLjljNS43IDM5LjMgMzkuNCA2OC41IDc5LjIgNjguNWgyNTNjMzkuNyAwIDczLjQtMjkuMSA3OS4yLTY4LjVsNTAtMzQyLjljMS4zLTkuMi0xLjQtMTguNS03LjUtMjUuNVM0ODkuMyAzMiA0ODAgMzJIMzJ6TTg3LjcgMjI0TDY5IDk2SDQ0M0w0MjQuMyAyMjRIODcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NC4yIDIwMi45QzEyMy4yIDEzNi43IDIxNi44IDk2IDMyMCA5NnMxOTYuOCA0MC43IDI2NS44IDEwNi45YzEyLjggMTIuMiAzMyAxMS44IDQ1LjItLjlzMTEuOC0zMy0uOS00NS4yQzU0OS43IDc5LjUgNDQwLjQgMzIgMzIwIDMyUzkwLjMgNzkuNSA5LjggMTU2LjdDLTIuOSAxNjktMy4zIDE4OS4yIDguOSAyMDJzMzIuNSAxMy4yIDQ1LjIgLjl6TTMyMCAyNTZjNTYuOCAwIDEwOC42IDIxLjEgMTQ4LjIgNTZjMTMuMyAxMS43IDMzLjUgMTAuNCA0NS4yLTIuOHMxMC40LTMzLjUtMi44LTQ1LjJDNDU5LjggMjE5LjIgMzkzIDE5MiAzMjAgMTkycy0xMzkuOCAyNy4yLTE5MC41IDcyYy0xMy4zIDExLjctMTQuNSAzMS45LTIuOCA0NS4yczMxLjkgMTQuNSA0NS4yIDIuOGMzOS41LTM0LjkgOTEuMy01NiAxNDguMi01NnptNjQgMTYwYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzUyYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2SDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTY0IDM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMTI4IDUxMmgzMmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgxNjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dNYXhpbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTk2IDk2SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93TWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93UmVzdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgNjRIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZWOTZIMTI4VjgwYzAtNDQuMiAzNS44LTgwIDgwLTgwSDQzMmM0NC4yIDAgODAgMzUuOCA4MCA4MFYzMDRjMCA0NC4yLTM1LjggODAtODAgODBINDE2VjMyMGgxNmM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2ek0wIDE5MmMwLTM1LjMgMjguNy02NCA2NC02NEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTJ6bTY0IDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVCb3R0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkzLjQgOS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zYy0xMS44IDExLjgtMzAuNyAxMi41LTQzLjIgMS45bC05LjUgOS41LTQ4LjggNDguOGMtOS4yIDkuMi0xMS41IDIyLjktOC42IDM1LjZjOS40IDQwLjktMS45IDg1LjYtMzMuOCAxMTcuNUwxOTcuMyA0OTMuM2MtMjUgMjUtNjUuNSAyNS05MC41IDBsLTg4LTg4Yy0yNS0yNS0yNS02NS41IDAtOTAuNUwxODAuMiAxNTMuM2MzMS45LTMxLjkgNzYuNi00My4xIDExNy41LTMzLjhjMTIuNiAyLjkgMjYuNCAuNSAzNS41LTguNmw0OC44LTQ4LjggOS41LTkuNWMtMTAuNi0xMi42LTEwLTMxLjQgMS45LTQzLjJ6TTk5LjMgMzQ3LjNsNjUuNCA2NS40YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDk3LjQtOTcuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNjUuNC02NS40Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw5OS4zIDMyNC43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZUdsYXNzRW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEM0Ny40IDAgMzMuNSAxMi44IDMyLjEgMjkuM2wtMTQgMTY4LjRjLTYgNzIgNDIuNSAxMzUuMiAxMDkuOSAxNTAuNlY0NDhIODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoODAgODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyVjM0OC40YzY3LjQtMTUuNCAxMTUuOS03OC42IDEwOS45LTE1MC42bC0xNC0xNjguNEMyODYuNSAxMi44IDI3Mi42IDAgMjU2IDBINjR6TTgxLjkgMjAzLjFMOTMuNCA2NEgyMjYuNmwxMS42IDEzOS4xQzI0MiAyNDguOCAyMDUuOSAyODggMTYwIDI4OHMtODItMzkuMi03OC4xLTg0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVHbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMi4xIDI5LjNDMzMuNSAxMi44IDQ3LjQgMCA2NCAwSDI1NmMxNi42IDAgMzAuNSAxMi44IDMxLjkgMjkuM2wxNCAxNjguNGM2IDcyLTQyLjUgMTM1LjItMTA5LjkgMTUwLjZWNDQ4aDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MCA4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg0OFYzNDguNEM2MC42IDMzMyAxMi4xIDI2OS44IDE4LjEgMTk3LjhsMTQtMTY4LjR6bTU2IDk4LjdIMjMxLjlsLTUuMy02NEg5My40bC01LjMgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIuNCA1My45QzU2LjggMzcuMSAzOC42IDI4LjEgMjEuOSAzMy42Uy0zLjkgNTcuNCAxLjYgNzQuMUw1MS42IDIyNEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg3Mi45bDU2LjcgMTcwLjFjNC41IDEzLjUgMTcuNCAyMi40IDMxLjYgMjEuOXMyNi40LTEwLjQgMjkuOC0yNC4yTDIzMyAyODhoNDZMMzIxIDQ1NS44YzMuNCAxMy44IDE1LjYgMjMuNyAyOS44IDI0LjJzMjcuMS04LjQgMzEuNi0yMS45TDQzOS4xIDI4OEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDYwLjRsNTAtMTQ5LjljNS42LTE2LjgtMy41LTM0LjktMjAuMi00MC41cy0zNC45IDMuNS00MC41IDIwLjJMMzkyLjkgMjI0SDMyOUwyODcgNTYuMkMyODMuNSA0MiAyNzAuNyAzMiAyNTYgMzJzLTI3LjUgMTAtMzEgMjQuMkwxODMgMjI0aC02NEw2Mi40IDUzLjl6bTc4IDIzNC4xSDE2N2wtMTEuNCA0NS42TDE0MC40IDI4OHpNMjQ5IDIyNGw3LTI4LjEgNyAyOC4xSDI0OXptOTYgNjRoMjYuNmwtMTUuMiA0NS42TDM0NSAyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDk2YzAtNTMgNDMtOTYgOTYtOTZoMzguNEM0MzkuOSAwIDQ4MCA0MC4xIDQ4MCA4OS42VjE3NnYxNlYzNzZjMCA3NS4xLTYwLjkgMTM2LTEzNiAxMzZzLTEzNi02MC45LTEzNi0xMzZWMjk2YzAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYyOTZjMC03NS4xIDYwLjktMTM2IDEzNi0xMzZzMTM2IDYwLjkgMTM2IDEzNnY4MGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwVjE5MkgzNTJjLTUzIDAtOTYtNDMtOTYtOTZ6bTE0NC04YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdyZW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMzIwYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwYzAtMTUuMy0yLjItMzAuMS02LjItNDQuMmMtMy4xLTEwLjgtMTYuNC0xMy4yLTI0LjMtNS4zbC03Ni44IDc2LjhjLTMgMy03LjEgNC43LTExLjMgNC43SDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2VjExOC42YzAtNC4yIDEuNy04LjMgNC43LTExLjNsNzYuOC03Ni44YzcuOS03LjkgNS40LTIxLjItNS4zLTI0LjNDMzgyLjEgMi4yIDM2Ny4zIDAgMzUyIDBDMjYzLjYgMCAxOTIgNzEuNiAxOTIgMTYwYzAgMTkuMSAzLjQgMzcuNSA5LjUgNTQuNUwxOS45IDM5Ni4xQzcuMiA0MDguOCAwIDQyNi4xIDAgNDQ0LjFDMCA0ODEuNiAzMC40IDUxMiA2Ny45IDUxMmMxOCAwIDM1LjMtNy4yIDQ4LTE5LjlMMjk3LjUgMzEwLjVjMTcgNi4yIDM1LjQgOS41IDU0LjUgOS41ek04MCA0MDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYUmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlY5NkMxNC4zIDk2IDAgODEuNyAwIDY0ek0yNTYgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMkgxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NDhIMTI4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDI0MHY3MC42TDE4OS4xIDMwN2MtNS4yLTItMTAuNi0zLTE2LjItM2gtMi4xYy0yMy42IDAtNDIuOCAxOS4yLTQyLjggNDIuOGMwIDkuNiAzLjIgMTguOSA5LjEgMjYuNGwxOC4yIDIzLjJjOS43IDEyLjQgMjQuNiAxOS42IDQwLjMgMTkuNkgzMTYuNGMxNS43IDAgMzAuNi03LjIgNDAuMy0xOS42bDE4LjItMjMuMmM1LjktNy41IDkuMS0xNi44IDkuMS0yNi40YzAtMjMuNi0xOS4yLTQyLjgtNDIuOC00Mi44SDMzOWMtNS41IDAtMTEgMS0xNi4yIDNMMjcyIDMyNi42VjI1NkgzODRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMjcyVjE3Nmg4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyNzJWMTEyYzAtOC44LTcuMi0xNi0xNi0xNnpNMjA4IDM1MmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTgwIDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc2LjYgODQuNWMxMS4zLTEzLjYgOS41LTMzLjgtNC4xLTQ1LjFzLTMzLjgtOS41LTQ1LjEgNC4xTDE5MiAyMDYgNTYuNiA0My41QzQ1LjMgMjkuOSAyNS4xIDI4LjEgMTEuNSAzOS40Uy0zLjkgNzAuOSA3LjQgODQuNUwxNTAuMyAyNTYgNy40IDQyNy41Yy0xMS4zIDEzLjYtOS41IDMzLjggNC4xIDQ1LjFzMzMuOCA5LjUgNDUuMS00LjFMMTkyIDMwNiAzMjcuNCA0NjguNWMxMS4zIDEzLjYgMzEuNSAxNS40IDQ1LjEgNC4xczE1LjQtMzEuNSA0LjEtNDUuMUwyMzMuNyAyNTYgMzc2LjYgODQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQyLjYgMTUwLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTkyIDIxMC43IDg2LjYgMTA1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDE0Ni43IDI1NiA0MS40IDM2MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE5MiAzMDEuMyAyOTcuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDIzNy4zIDI1NiAzNDIuNiAxNTAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWG1hcmtzTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnptMCAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyek03IDE2N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNTUgNTVMNyAzMTFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1NS01NSA1NSA1NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU1LTU1IDU1LTU1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU1IDU1TDQxIDE2N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6TTI2NSAxNjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNTUgNTUtNTUgNTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1NS01NSA1NSA1NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU1LTU1IDU1LTU1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU1IDU1LTU1LTU1ek00NTUgMTY3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw1NSA1NS01NSA1NWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU1LTU1IDU1IDU1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTUtNTUgNTUtNTVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNTUgNTUtNTUtNTVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4IDQ1LjRDNDcuOCAzMSAyNy44IDI3LjcgMTMuNCAzOFMtNC4zIDY4LjIgNiA4Mi42TDE2MCAyOTguM1Y0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyOTguM0wzNzggODIuNmMxMC4zLTE0LjQgNi45LTM0LjQtNy40LTQ0LjZTMzM2LjIgMzEgMzI2IDQ1LjRMMTkyIDIzMi45IDU4IDQ1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVllblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTguNiA0Ni4yQzQ4LjggMzEuNSAyOSAyNy42IDE0LjMgMzcuNFMtNC40IDY3IDUuNCA4MS43TDEwMC4yIDIyNEg0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4MHYzMkg0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4MHY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJWMjg4aDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIxOS44TDMxNC42IDgxLjdjOS44LTE0LjcgNS44LTM0LjYtOC45LTQ0LjRzLTM0LjYtNS44LTQ0LjQgOC45TDE2MCAxOTguMyA1OC42IDQ2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlpbllhbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDY0YzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2cy05NiA0My05NiA5NnM0MyA5NiA5NiA5NkMxNTAgNDQ4IDY0IDM2MiA2NCAyNTZTMTUwIDY0IDI1NiA2NHptMCA0NDhBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem0zMi0zNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMjI0IDM1MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFaIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIMzUyYzEyLjQgMCAyMy43IDcuMiAyOSAxOC40czMuNiAyNC41LTQuNCAzNC4xTDEwMC4zIDQxNkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTEyLjQgMC0yMy43LTcuMi0yOS0xOC40cy0zLjYtMjQuNSA0LjQtMzQuMUwyODMuNyA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgNDhjOC44IDAgMTYgNy4yIDE2IDE2VjQ0OGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZIMzg0ek05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIOTZ6TTI0MCAyNTZhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6bS0zMiAzMmMtNDQuMiAwLTgwIDM1LjgtODAgODBjMCA4LjggNy4yIDE2IDE2IDE2SDMzNmM4LjggMCAxNi03LjIgMTYtMTZjMC00NC4yLTM1LjgtODAtODAtODBIMjA4ek01MTIgODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY4MHpNNDk2IDE5MmMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnptMTYgMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgODBjOC44IDAgMTYgNy4yIDE2IDE2VjQxNmMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlY5NmMwLTguOCA3LjItMTYgMTYtMTZINTEyek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIwOCAyNTZhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6bS0zMiAzMmMtNDQuMiAwLTgwIDM1LjgtODAgODBjMCA4LjggNy4yIDE2IDE2IDE2SDMwNGM4LjggMCAxNi03LjIgMTYtMTZjMC00NC4yLTM1LjgtODAtODAtODBIMTc2ek0zNzYgMTQ0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM3NnptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0JlbGxTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDU0Mi42IDQwMGMyLjctNy44IDEuMy0xNi41LTMuOS0yM2wtMTQuOS0xOC42QzQ5NS41IDMyMi45IDQ4MCAyNzguOCA0ODAgMjMzLjRWMjA4YzAtNzcuNC01NS0xNDItMTI4LTE1Ni44VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjUxLjJjLTQyLjYgOC42LTc5IDM0LjItMTAyIDY5LjNMMzguOCA1LjF6TTIyNCAxNTAuM0MyNDMuNiAxMTcuNyAyNzkuMyA5NiAzMjAgOTZjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJ2MjUuNGMwIDMyLjcgNi40IDY0LjggMTguNyA5NC41TDIyNCAxNTAuM3pNNDA2LjIgNDE2bC02MC45LTQ4SDE2OC4zYzIxLjItMzIuOCAzNC40LTcwLjMgMzguNC0xMDkuMUwxNjAgMjIyLjF2MTEuNGMwIDQ1LjQtMTUuNSA4OS41LTQzLjggMTI0LjlMMTAxLjMgMzc3Yy01LjggNy4yLTYuOSAxNy4xLTIuOSAyNS40czEyLjQgMTMuNiAyMS42IDEzLjZINDA2LjJ6TTM4NCA0NDhIMzIwIDI1NmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM3MyOC4zIDE4LjcgNDUuMyAxOC43czMzLjMtNi43IDQ1LjMtMTguN3MxOC43LTI4LjMgMTguNy00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdCZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY1MS4yQzExOSA2NiA2NCAxMzAuNiA2NCAyMDh2MjUuNGMwIDQ1LjQtMTUuNSA4OS41LTQzLjggMTI0LjlMNS4zIDM3N2MtNS44IDcuMi02LjkgMTcuMS0yLjkgMjUuNFMxNC44IDQxNiAyNCA0MTZINDI0YzkuMiAwIDE3LjYtNS4zIDIxLjYtMTMuNnMyLjktMTguMi0yLjktMjUuNGwtMTQuOS0xOC42QzM5OS41IDMyMi45IDM4NCAyNzguOCAzODQgMjMzLjRWMjA4YzAtNzcuNC01NS0xNDItMTI4LTE1Ni44VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0wIDk2YzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEydjI1LjRjMCA0Ny45IDEzLjkgOTQuNiAzOS43IDEzNC42SDcyLjNDOTguMSAzMjggMTEyIDI4MS4zIDExMiAyMzMuNFYyMDhjMC02MS45IDUwLjEtMTEyIDExMi0xMTJ6bTY0IDM1MkgyMjQgMTYwYzAgMTcgNi43IDMzLjMgMTguNyA0NS4zczI4LjMgMTguNyA0NS4zIDE4LjdzMzMuMy02LjcgNDUuMy0xOC43czE4LjctMjguMyAxOC43LTQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwbDAgNDhWNDQxLjRsMTMwLjEtOTIuOWM4LjMtNiAxOS42LTYgMjcuOSAwTDMzNiA0NDEuNFY0OEg0OFYwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0ODhjMCA5LTUgMTcuMi0xMyAyMS4zcy0xNy42IDMuNC0yNC45LTEuOEwxOTIgMzk3LjUgMzcuOSA1MDcuNWMtNy4zIDUuMi0xNi45IDUuOS0yNC45IDEuOFMwIDQ5NyAwIDQ4OFY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQnVpbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDhjLTguOCAwLTE2IDcuMi0xNiAxNlY0NDhjMCA4LjggNy4yIDE2IDE2IDE2aDgwVjQwMGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djY0aDgwYzguOCAwIDE2LTcuMiAxNi0xNlY2NGMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDMyMGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em04OCA0MGMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djQ4YzAgOC44LTcuMiAxNi0xNiAxNkgxMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYxMDR6TTIzMiA4OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDIzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjEwNGMwLTguOCA3LjItMTYgMTYtMTZ6TTg4IDIzMmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djQ4YzAgOC44LTcuMiAxNi0xNiAxNkgxMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYyMzJ6bTE0NC0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDIzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjIzMmMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNjRIMjk2VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRWNjRoNDBjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MTYgNDhWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTIgMTQ0IDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGg0MFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNDAwIDE5Mkg0OFY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDM4NGM4LjggMCAxNi03LjIgMTYtMTZWMTkyek0zMjkgMjk3TDIxNyA0MDljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDk1LTk1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJEYXlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHYxNiA0OFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MiAxNDQgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM0NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgxNTJWMjR6TTQ4IDE5Mmg4MHY1Nkg0OFYxOTJ6bTAgMTA0aDgwdjY0SDQ4VjI5NnptMTI4IDBoOTZ2NjRIMTc2VjI5NnptMTQ0IDBoODB2NjRIMzIwVjI5NnptODAtNDhIMzIwVjE5Mmg4MHY1NnptMCAxNjB2NDBjMCA4LjgtNy4yIDE2LTE2IDE2SDMyMFY0MDhoODB6bS0xMjggMHY1NkgxNzZWNDA4aDk2em0tMTQ0IDB2NTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlY0MDhoODB6TTI3MiAyNDhIMTc2VjE5Mmg5NnY1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY2NEgyOTZWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY2NGg0MGMzNS4zIDAgNjQgMjguNyA2NCA2NHYxNiA0OFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MiAxNDQgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek00MDAgMTkySDQ4VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlYxOTJ6TTI5NiAzNTJIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDI5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHYxNiA0OFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MiAxNDQgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM0NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgxNTJWMjR6TTQ4IDE5Mkg0MDBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MnptMTc2IDQwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0OEgxNTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNDh2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNTJoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjQ4VjI1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY2NEgyOTZWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY2NGg0MGMzNS4zIDAgNjQgMjguNyA2NCA2NHYxNiA0OFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MiAxNDQgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek00MDAgMTkySDQ4VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlYxOTJ6bS05NSA4OWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHYxNiA0OFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MiAxNDQgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM0NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgxNTJWMjR6TTQ4IDE5Mkg0MDBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNDA4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQ4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg3MmMtMzkuOCAwLTcyLTMyLjItNzItNzJWNTZDMCA0Mi43IDEwLjcgMzIgMjQgMzJ6TTEyOCAxMzZjMC0xMy4zIDEwLjctMjQgMjQtMjRsMjA4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTIwOCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMjQgNzJIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMCA5Nkg0MjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc0Jpc2hvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQgMEM5MC43IDAgODAgMTAuNyA4MCAyNGMwIDExLjIgNy42IDIwLjYgMTggMjMuMmMtNy44IDgtMTYuMSAxNy0yNC40IDI3QzM4LjIgMTE2LjcgMCAxNzguOCAwIDI1MC45YzAgNDQuOCAyNC42IDcyLjIgNDggODcuOFYzNTJIOTZWMzI1YzAtOS01LTE3LjItMTMtMjEuM2MtMTgtOS4zLTM1LTI0LjctMzUtNTIuN2MwLTU1LjUgMjkuOC0xMDYuOCA2Mi40LTE0NS45YzE2LTE5LjIgMzIuMS0zNC44IDQ0LjItNDUuNWMxLjktMS43IDMuNy0zLjIgNS4zLTQuNmMxLjcgMS40IDMuNCAzIDUuMyA0LjZjMTIuMSAxMC43IDI4LjIgMjYuMyA0NC4yIDQ1LjVjNS4zIDYuMyAxMC41IDEzIDE1LjUgMjBMMTU5IDE5MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU3LjgtNTcuOGMxMi44IDI1LjkgMjEuMiA1NC4zIDIxLjIgODMuOGMwIDI4LTE3IDQzLjQtMzUgNTIuN2MtOCA0LjEtMTMgMTIuMy0xMyAyMS4zdjI3aDQ4VjMzOC43YzIzLjQtMTUuNiA0OC00Mi45IDQ4LTg3LjhjMC03Mi4xLTM4LjItMTM0LjItNzMuNi0xNzYuN2MtOC4zLTkuOS0xNi42LTE5LTI0LjQtMjdjMTAuMy0yLjcgMTgtMTIuMSAxOC0yMy4yYzAtMTMuMy0xMC43LTI0LTI0LTI0SDE2MCAxMDR6TTUyLjcgNDY0bDE2LjYtMzJIMjUwLjhsMTYuNiAzMkg1Mi43em0yMDcuOS04MEg1OS41Yy0xMiAwLTIyLjkgNi43LTI4LjQgMTcuM0w0LjYgNDUyLjVjLTMgNS44LTQuNiAxMi4yLTQuNiAxOC43QzAgNDkzLjggMTguMiA1MTIgNDAuOCA1MTJIMjc5LjJjMjIuNSAwIDQwLjgtMTguMiA0MC44LTQwLjhjMC02LjUtMS42LTEyLjktNC42LTE4LjdsLTI2LjUtNTEuMmMtNS41LTEwLjYtMTYuNS0xNy4zLTI4LjQtMTcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hlc3NLaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY1NkgxNjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMzJ2NDBINTkuNkMyNi43IDE0NCAwIDE3MC43IDAgMjAzLjZjMCA4LjIgMS43IDE2LjMgNC45IDIzLjhMNTkuMSAzNTJoNTIuM0w0OSAyMDguMmMtLjYtMS41LTEtMy0xLTQuNmMwLTYuNCA1LjItMTEuNiAxMS42LTExLjZIMjI0IDM4OC40YzYuNCAwIDExLjYgNS4yIDExLjYgMTEuNmMwIDEuNi0uMyAzLjItMSA0LjZMMzM2LjUgMzUyaDUyLjNsNTQuMi0xMjQuNmMzLjMtNy41IDQuOS0xNS42IDQuOS0yMy44YzAtMzIuOS0yNi43LTU5LjYtNTkuNi01OS42SDI0OFYxMDRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjQ4VjI0ek0xMDEuMiA0MzJIMzQ2LjhsMTYuNiAzMkg4NC43bDE2LjYtMzJ6bTI4My43LTMwLjdjLTUuNS0xMC42LTE2LjUtMTcuMy0yOC40LTE3LjNIOTEuNWMtMTIgMC0yMi45IDYuNy0yOC40IDE3LjNMMzYuNiA0NTIuNWMtMyA1LjgtNC42IDEyLjItNC42IDE4LjdDMzIgNDkzLjggNTAuMiA1MTIgNzIuOCA1MTJIMzc1LjJjMjIuNSAwIDQwLjgtMTguMiA0MC44LTQwLjhjMC02LjUtMS42LTEyLjktNC42LTE4LjdsLTI2LjUtNTEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hlc3NLbmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI2LjYgNDhIMTE3LjNsMTcuMSAxMi44YzYgNC41IDkuNiAxMS42IDkuNiAxOS4ycy0zLjYgMTQuNy05LjYgMTkuMmwtNi41IDQuOWMtMTAgNy41LTE2IDE5LjMtMTYgMzEuOWwtLjMgOTFjMCAxMC4yIDQuOSAxOS45IDEzLjIgMjUuOGwxLjkgMS4zYzkuOSA3LjEgMjMuMyA3IDMzLjItLjFsNDkuOS0zNi4zYzEwLjctNy44IDI1LjctNS40IDMzLjUgNS4zczUuNCAyNS43LTUuMyAzMy41bC00OS45IDM2LjMtNTMuOCAzOS4xYy03LjMgNS4zLTEzIDEyLjItMTYuOSAyMC4xSDY2LjhjNS4zLTIyLjEgMTcuOC00MS45IDM1LjktNTYuM2MtMS4zLS44LTIuNi0xLjctMy44LTIuNkw5NyAyOTEuOGMtMjEtMTUtMzMuNC0zOS4yLTMzLjMtNjVsLjMtOTFjLjEtMTkuOCA2LjctMzguNyAxOC42LTUzLjlsLS40LS4zQzcwLjcgNzMgNjQgNTkuNiA2NCA0NS4zQzY0IDIwLjMgODQuMyAwIDEwOS4zIDBIMjI2LjZDMzMxLjIgMCA0MTYgODQuOCA0MTYgMTg5LjRjMCAxMS4xLTEgMjIuMi0yLjkgMzMuMkwzOTAuMSAzNTJIMzQxLjNsMjQuNS0xMzcuOGMxLjUtOC4yIDIuMi0xNi41IDIuMi0yNC44QzM2OCAxMTEuMyAzMDQuNyA0OCAyMjYuNiA0OHpNODUuMiA0MzJMNjguNyA0NjRIMzc5LjNsLTE2LjYtMzJIODUuMnptMzE1LjctMzAuN2wyNi41IDUxLjJjMyA1LjggNC42IDEyLjIgNC42IDE4LjdjMCAyMi41LTE4LjIgNDAuOC00MC44IDQwLjhINTYuOEMzNC4yIDUxMiAxNiA0OTMuOCAxNiA0NzEuMmMwLTYuNSAxLjYtMTIuOSA0LjYtMTguN2wyNi41LTUxLjJDNTIuNSAzOTAuNyA2My41IDM4NCA3NS41IDM4NGgyOTdjMTIgMCAyMi45IDYuNyAyOC40IDE3LjN6TTE3MiAxMjhhMjAgMjAgMCAxIDEgMCA0MCAyMCAyMCAwIDEgMSAwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc1Bhd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyIDE1MkE3MiA3MiAwIDEgMCA4OCAxNTJhNzIgNzIgMCAxIDAgMTQ0IDB6bTI0IDEyMEgyNDMuNGwxMC43IDgwSDIwNS43TDE5NSAyNzJIMTYwIDEyNWwtMTAuNyA4MEg2NS45bDEwLjctODBINjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRjLTE1LjEtMjAuMS0yNC00NS0yNC03MkM0MCA4NS43IDkzLjcgMzIgMTYwIDMyczEyMCA1My43IDEyMCAxMjBjMCAyNy04LjkgNTEuOS0yNCA3MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNHpNNTIuNyA0NjRIMjY3LjNsLTE2LjYtMzJINjkuMkw1Mi43IDQ2NHptMjA3LjktODBjMTIgMCAyMi45IDYuNyAyOC40IDE3LjNsMjYuNSA1MS4yYzMgNS44IDQuNiAxMi4yIDQuNiAxOC43YzAgMjIuNS0xOC4yIDQwLjgtNDAuOCA0MC44SDQwLjhDMTguMiA1MTIgMCA0OTMuOCAwIDQ3MS4yYzAtNi41IDEuNi0xMi45IDQuNi0xOC43bDI2LjUtNTEuMkMzNi41IDM5MC43IDQ3LjUgMzg0IDU5LjUgMzg0aDIwMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hlc3NRdWVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOTUuMi04Yy0xOC4xIDAtMzEuMyAxMi44LTM1LjYgMjYuOWMtOCAyNi4yLTMyLjQgNDUuMi02MS4yIDQ1LjJjLTEwIDAtMTkuNC0yLjMtMjcuNy02LjNjLTcuNi0zLjctMTYuNy0zLjMtMjQgMS4yQy43IDE2Mi4xLTMuMSAxNzcuMSAzLjcgMTg4LjlMOTcuNiAzNTJIMTUzbC04My0xNDQuMWM0MC41LTIuMiA3NS4zLTI1LjkgOTMuMS01OS44YzIyIDI2LjggNTUuNCA0My45IDkyLjggNDMuOXM3MC44LTE3LjEgOTIuOC00My45YzE3LjggMzQgNTIuNiA1Ny43IDkzLjEgNTkuOEwzNTkgMzUyaDU1LjRsOTMuOS0xNjMuMWM2LjgtMTEuNyAzLTI2LjctOC42LTMzLjhjLTcuMy00LjUtMTYuNC00LjktMjQtMS4yYy04LjQgNC0xNy43IDYuMy0yNy43IDYuM2MtMjguOCAwLTUzLjItMTktNjEuMi00NS4yQzM4Mi41IDEwMC44IDM2OS4zIDg4IDM1MS4yIDg4Yy0xNC41IDAtMjYuMyA4LjUtMzIuNCAxOS4zYy0xMi40IDIyLTM1LjkgMzYuNy02Mi44IDM2LjdzLTUwLjQtMTQuOC02Mi44LTM2LjdDMTg3LjEgOTYuNSAxNzUuNCA4OCAxNjAuOCA4OHpNMTMzLjIgNDMySDM3OC44bDE2LjYgMzJIMTE2LjdsMTYuNi0zMnptMjgzLjctMzAuN2MtNS41LTEwLjYtMTYuNS0xNy4zLTI4LjQtMTcuM2gtMjY1Yy0xMiAwLTIyLjkgNi43LTI4LjQgMTcuM0w2OC42IDQ1Mi41Yy0zIDUuOC00LjYgMTIuMi00LjYgMTguN2MwIDIyLjUgMTguMiA0MC44IDQwLjggNDAuOEg0MDcuMmMyMi41IDAgNDAuOC0xOC4yIDQwLjgtNDAuOGMwLTYuNS0xLjYtMTIuOS00LjYtMTguN2wtMjYuNS01MS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc1Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgODBWMTkyYzAgMi41IDEuMiA0LjkgMy4yIDYuNGw1MS4yIDM4LjRjNi44IDUuMSAxMC40IDEzLjQgOS41IDIxLjlMMTMzLjUgMzUySDg1LjJsOS40LTg1TDU0LjQgMjM2LjhDNDAuMyAyMjYuMiAzMiAyMDkuNiAzMiAxOTJWNzJjMC0yMi4xIDE3LjktNDAgNDAtNDBIMzc2YzIyLjEgMCA0MCAxNy45IDQwIDQwVjE5MmMwIDE3LjYtOC4zIDM0LjItMjIuNCA0NC44TDM1My40IDI2N2w5LjQgODVIMzE0LjVsLTEwLjQtOTMuM2MtLjktOC40IDIuNy0xNi44IDkuNS0yMS45bDUxLjItMzguNGMyLTEuNSAzLjItMy45IDMuMi02LjRWODBIMzA0djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjgwSDE5MnYyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY4MEg4MHptNC43IDM4NEgzNjMuM2wtMTYuNi0zMkgxMDEuMkw4NC43IDQ2NHptMjcxLjktODBjMTIgMCAyMi45IDYuNyAyOC40IDE3LjNsMjYuNSA1MS4yYzMgNS44IDQuNiAxMi4yIDQuNiAxOC43YzAgMjIuNS0xOC4yIDQwLjgtNDAuOCA0MC44SDcyLjhDNTAuMiA1MTIgMzIgNDkzLjggMzIgNDcxLjJjMC02LjUgMS42LTEyLjkgNC42LTE4LjdsMjYuNS01MS4yQzY4LjUgMzkwLjcgNzkuNSAzODQgOTEuNSAzODRoMjY1ek0yMDggMjg4Yy04LjggMC0xNi03LjItMTYtMTZWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zNjkgMjA5YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTExMSAxMTEtNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMzY5IDIwOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlRG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYtOTZhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ2NGEyMDggMjA4IDAgMSAxIDAtNDE2IDIwOCAyMDggMCAxIDEgMCA0MTZ6TTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMzc2LjkgMjk0LjZjNC41LTQuMiA3LjEtMTAuMSA3LjEtMTYuM2MwLTEyLjMtMTAtMjIuMy0yMi4zLTIyLjNIMzA0VjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZIMTUwLjNDMTM4IDI1NiAxMjggMjY2IDEyOCAyNzguM2MwIDYuMiAyLjYgMTIuMSA3LjEgMTYuM2wxMDcuMSA5OS45YzMuOCAzLjUgOC43IDUuNSAxMy44IDUuNXMxMC4xLTIgMTMuOC01LjVsMTA3LjEtOTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAyNTZhMjA4IDIwOCAwIDEgMSA0MTYgMEEyMDggMjA4IDAgMSAxIDQ4IDI1NnptNDY0IDBBMjU2IDI1NiAwIDEgMCAwIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwek0yMTcuNCAzNzYuOWM0LjIgNC41IDEwLjEgNy4xIDE2LjMgNy4xYzEyLjMgMCAyMi4zLTEwIDIyLjMtMjIuM1YzMDRoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjQwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NlYxNTAuM2MwLTEyLjMtMTAtMjIuMy0yMi4zLTIyLjNjLTYuMiAwLTEyLjEgMi42LTE2LjMgNy4xTDExNy41IDI0Mi4yYy0zLjUgMy44LTUuNSA4LjctNS41IDEzLjhzMiAxMC4xIDUuNSAxMy44bDk5LjkgMTA3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVBhdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yMjQtNzJWMzI4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0em0xMTIgMFYzMjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE4OC4zIDE0Ny4xYzcuNi00LjIgMTYuOC00LjEgMjQuMyAuNWwxNDQgODhjNy4xIDQuNCAxMS41IDEyLjEgMTEuNSAyMC41cy00LjQgMTYuMS0xMS41IDIwLjVsLTE0NCA4OGMtNy40IDQuNS0xNi43IDQuNy0yNC4zIC41cy0xMi4zLTEyLjItMTIuMy0yMC45VjE2OGMwLTguNyA0LjctMTYuNyAxMi4zLTIwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVF1ZXN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNjkuOC05MC43YzcuOS0yMi4zIDI5LjEtMzcuMyA1Mi44LTM3LjNoNTguM2MzNC45IDAgNjMuMSAyOC4zIDYzLjEgNjMuMWMwIDIyLjYtMTIuMSA0My41LTMxLjcgNTQuOEwyODAgMjY0LjRjLS4yIDEzLTEwLjkgMjMuNi0yNCAyMy42Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYyNTAuNWMwLTguNiA0LjYtMTYuNSAxMi4xLTIwLjhsNDQuMy0yNS40YzQuNy0yLjcgNy42LTcuNyA3LjYtMTMuMWMwLTguNC02LjgtMTUuMS0xNS4xLTE1LjFIMjIyLjZjLTMuNCAwLTYuNCAyLjEtNy41IDUuM2wtLjQgMS4yYy00LjQgMTIuNS0xOC4yIDE5LTMwLjYgMTQuNnMtMTktMTguMi0xNC42LTMwLjZsLjQtMS4yek0yMjQgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMSA0OCAyNTZhMjA4IDIwOCAwIDEgMSA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yOTQuNiAxMzUuMWMtNC4yLTQuNS0xMC4xLTcuMS0xNi4zLTcuMUMyNjYgMTI4IDI1NiAxMzggMjU2IDE1MC4zVjIwOEgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDk2djU3LjdjMCAxMi4zIDEwIDIyLjMgMjIuMyAyMi4zYzYuMiAwIDEyLjEtMi42IDE2LjMtNy4xbDk5LjktMTA3LjFjMy41LTMuOCA1LjUtOC43IDUuNS0xMy44cy0yLTEwLjEtNS41LTEzLjhMMjk0LjYgMTM1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE5Mi05NkgzMjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTEzNS4xIDIxNy40Yy00LjUgNC4yLTcuMSAxMC4xLTcuMSAxNi4zYzAgMTIuMyAxMCAyMi4zIDIyLjMgMjIuM0gyMDh2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2aDU3LjdjMTIuMyAwIDIyLjMtMTAgMjIuMy0yMi4zYzAtNi4yLTIuNi0xMi4xLTcuMS0xNi4zTDI2OS44IDExNy41Yy0zLjgtMy41LTguNy01LjUtMTMuOC01LjVzLTEwLjEgMi0xMy44IDUuNUwxMzUuMSAyMTcuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDYuNSAzOTkuNkMzODcuNCAzNTIuOSAzNDEuNSAzMjAgMjg4IDMyMEgyMjRjLTUzLjUgMC05OS40IDMyLjktMTE4LjUgNzkuNkM2OS45IDM2Mi4yIDQ4IDMxMS43IDQ4IDI1NkM0OCAxNDEuMSAxNDEuMSA0OCAyNTYgNDhzMjA4IDkzLjEgMjA4IDIwOGMwIDU1LjctMjEuOSAxMDYuMi01Ny41IDE0My42em0tNDAuMSAzMi43QzMzNC40IDQ1Mi40IDI5Ni42IDQ2NCAyNTYgNDY0cy03OC40LTExLjYtMTEwLjUtMzEuN2M3LjMtMzYuNyAzOS43LTY0LjMgNzguNS02NC4zaDY0YzM4LjggMCA3MS4yIDI3LjYgNzguNSA2NC4zek0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMC0yNzJhNDAgNDAgMCAxIDEgMC04MCA0MCA0MCAwIDEgMSAwIDgwem0tODgtNDBhODggODggMCAxIDAgMTc2IDAgODggODggMCAxIDAgLTE3NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3NSAxNzVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDQ3IDQ3LTQ3IDQ3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNDctNDcgNDcgNDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC00Ny00NyA0Ny00N2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC00NyA0Ny00Ny00N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2xpcGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MCA2NGg0MGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGg0MCA5LjZDMTIxIDI3LjUgMTUzLjMgMCAxOTIgMHM3MSAyNy41IDc4LjQgNjRIMjgwek02NCAxMTJjLTguOCAwLTE2IDcuMi0xNiAxNlY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDMyMGM4LjggMCAxNi03LjIgMTYtMTZWMTI4YzAtOC44LTcuMi0xNi0xNi0xNkgzMDR2MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMTkyIDEwNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTEySDY0em0xMjgtOGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMSA0OCAyNTZhMjA4IDIwOCAwIDEgMSA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yMzIgMTIwVjI1NmMwIDggNCAxNS41IDEwLjcgMjBsOTYgNjRjMTEgNy40IDI1LjkgNC40IDMzLjMtNi43czQuNC0yNS45LTYuNy0zMy4zTDI4MCAyNDMuMlYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NEgyODhjOC44IDAgMTYtNy4yIDE2LTE2VjM4NGg0OHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDY0djQ4SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNnpNMjI0IDMwNEg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtOC44LTcuMi0xNi0xNi0xNkgyMjRjLTguOCAwLTE2IDcuMi0xNiAxNlYyODhjMCA4LjggNy4yIDE2IDE2IDE2em0tNjQtMTZWNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjI4OGMwIDM1LjMtMjguNyA2NC02NCA2NEgyMjRjLTM1LjMgMC02NC0yOC43LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDbG9zZWRDYXB0aW9uaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA4MGM4LjggMCAxNiA3LjIgMTYgMTZWNDE2YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2Vjk2YzAtOC44IDcuMi0xNiAxNi0xNkg1MTJ6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjAwIDIwOGMxNC4yIDAgMjcgNi4xIDM1LjggMTZjOC44IDkuOSAyNCAxMC43IDMzLjkgMS45czEwLjctMjQgMS45LTMzLjljLTE3LjUtMTkuNi00My4xLTMyLTcxLjUtMzJjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZjMjguNCAwIDU0LTEyLjQgNzEuNS0zMmM4LjgtOS45IDgtMjUtMS45LTMzLjlzLTI1LTgtMzMuOSAxLjljLTguOCA5LjktMjEuNiAxNi0zNS44IDE2Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4em0xNDQgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhjMTQuMiAwIDI3IDYuMSAzNS44IDE2YzguOCA5LjkgMjQgMTAuNyAzMy45IDEuOXMxMC43LTI0IDEuOS0zMy45Yy0xNy41LTE5LjYtNDMuMS0zMi03MS41LTMyYy01MyAwLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2YzI4LjQgMCA1NC0xMi40IDcxLjUtMzJjOC44LTkuOSA4LTI1LTEuOS0zMy45cy0yNS04LTMzLjkgMS45Yy04LjggOS45LTIxLjYgMTYtMzUuOCAxNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnREb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OC4yIDM4NC45Yy0xNS01LjQtMzEuNy0zLjEtNDQuNiA2LjRjLTguMiA2LTIyLjMgMTQuOC0zOS40IDIyLjdjNS42LTE0LjcgOS45LTMxLjMgMTEuMy00OS40YzEtMTIuOS0zLjMtMjUuNy0xMS44LTM1LjVDNjAuNCAzMDIuOCA0OCAyNzIgNDggMjQwYzAtNzkuNSA4My4zLTE2MCAyMDgtMTYwczIwOCA4MC41IDIwOCAxNjBzLTgzLjMgMTYwLTIwOCAxNjBjLTMxLjYgMC02MS4zLTUuNS04Ny44LTE1LjF6TTI2LjMgNDIzLjhjLTEuNiAyLjctMy4zIDUuNC01LjEgOC4xbC0uMyAuNWMtMS42IDIuMy0zLjIgNC42LTQuOCA2LjljLTMuNSA0LjctNy4zIDkuMy0xMS4zIDEzLjVjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWM1LjEgMCAxMC4yLS4zIDE1LjMtLjhsLjctLjFjNC40LS41IDguOC0xLjEgMTMuMi0xLjljLjgtLjEgMS42LS4zIDIuNC0uNWMxNy44LTMuNSAzNC45LTkuNSA1MC4xLTE2LjFjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3LjljMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMlMwIDEyNS4xIDAgMjQwYzAgNDUuMSAxNy43IDg2LjggNDcuNyAxMjAuOWMtMS45IDI0LjUtMTEuNCA0Ni4zLTIxLjQgNjIuOXpNMTQ0IDI3MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTE0NC0zMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem04MCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIzLjYgMzkxLjNjMTIuOS05LjQgMjkuNi0xMS44IDQ0LjYtNi40YzI2LjUgOS42IDU2LjIgMTUuMSA4Ny44IDE1LjFjMTI0LjcgMCAyMDgtODAuNSAyMDgtMTYwcy04My4zLTE2MC0yMDgtMTYwUzQ4IDE2MC41IDQ4IDI0MGMwIDMyIDEyLjQgNjIuOCAzNS43IDg5LjJjOC42IDkuNyAxMi44IDIyLjUgMTEuOCAzNS41Yy0xLjQgMTguMS01LjcgMzQuNy0xMS4zIDQ5LjRjMTctNy45IDMxLjEtMTYuNyAzOS40LTIyLjd6TTIxLjIgNDMxLjljMS44LTIuNyAzLjUtNS40IDUuMS04LjFjMTAtMTYuNiAxOS41LTM4LjQgMjEuNC02Mi45QzE3LjcgMzI2LjggMCAyODUuMSAwIDI0MEMwIDEyNS4xIDExNC42IDMyIDI1NiAzMnMyNTYgOTMuMSAyNTYgMjA4cy0xMTQuNiAyMDgtMjU2IDIwOGMtMzcuMSAwLTcyLjMtNi40LTEwNC4xLTE3LjljLTExLjkgOC43LTMxLjMgMjAuNi01NC4zIDMwLjZjLTE1LjEgNi42LTMyLjMgMTIuNi01MC4xIDE2LjFjLS44IC4yLTEuNiAuMy0yLjQgLjVjLTQuNCAuOC04LjcgMS41LTEzLjIgMS45Yy0uMiAwLS41IC4xLS43IC4xYy01LjEgLjUtMTAuMiAuOC0xNS4zIC44Yy02LjUgMC0xMi4zLTMuOS0xNC44LTkuOWMtMi41LTYtMS4xLTEyLjggMy40LTE3LjRjNC4xLTQuMiA3LjgtOC43IDExLjMtMTMuNWMxLjctMi4zIDMuMy00LjYgNC44LTYuOWMuMS0uMiAuMi0uMyAuMy0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODguMiAzMDkuMWM5LjgtMTguMyA2LjgtNDAuOC03LjUtNTUuOEM1OS40IDIzMC45IDQ4IDIwNCA0OCAxNzZjMC02My41IDYzLjgtMTI4IDE2MC0xMjhzMTYwIDY0LjUgMTYwIDEyOHMtNjMuOCAxMjgtMTYwIDEyOGMtMTMuMSAwLTI1LjgtMS4zLTM3LjgtMy42Yy0xMC40LTItMjEuMi0uNi0zMC43IDQuMmMtNC4xIDIuMS04LjMgNC4xLTEyLjYgNmMtMTYgNy4yLTMyLjkgMTMuNS00OS45IDE4YzIuOC00LjYgNS40LTkuMSA3LjktMTMuNmMxLjEtMS45IDIuMi0zLjkgMy4yLTUuOXpNMCAxNzZjMCA0MS44IDE3LjIgODAuMSA0NS45IDExMC4zYy0uOSAxLjctMS45IDMuNS0yLjggNS4xYy0xMC4zIDE4LjQtMjIuMyAzNi41LTM2LjYgNTIuMWMtNi42IDctOC4zIDE3LjItNC42IDI1LjlDNS44IDM3OC4zIDE0LjQgMzg0IDI0IDM4NGM0MyAwIDg2LjUtMTMuMyAxMjIuNy0yOS43YzQuOC0yLjIgOS42LTQuNSAxNC4yLTYuOGMxNS4xIDMgMzAuOSA0LjUgNDcuMSA0LjVjMTE0LjkgMCAyMDgtNzguOCAyMDgtMTc2UzMyMi45IDAgMjA4IDBTMCA3OC44IDAgMTc2ek00MzIgNDgwYzE2LjIgMCAzMS45LTEuNiA0Ny4xLTQuNWM0LjYgMi4zIDkuNCA0LjYgMTQuMiA2LjhDNTI5LjUgNDk4LjcgNTczIDUxMiA2MTYgNTEyYzkuNiAwIDE4LjItNS43IDIyLTE0LjVjMy44LTguOCAyLTE5LTQuNi0yNS45Yy0xNC4yLTE1LjYtMjYuMi0zMy43LTM2LjYtNTIuMWMtLjktMS43LTEuOS0zLjQtMi44LTUuMUM2MjIuOCAzODQuMSA2NDAgMzQ1LjggNjQwIDMwNGMwLTk0LjQtODcuOS0xNzEuNS0xOTguMi0xNzUuOGM0LjEgMTUuMiA2LjIgMzEuMiA2LjIgNDcuOGwwIC42Yzg3LjIgNi43IDE0NCA2Ny41IDE0NCAxMjcuNGMwIDI4LTExLjQgNTQuOS0zMi43IDc3LjJjLTE0LjMgMTUtMTcuMyAzNy42LTcuNSA1NS44YzEuMSAyIDIuMiA0IDMuMiA1LjljMi41IDQuNSA1LjIgOSA3LjkgMTMuNmMtMTctNC41LTMzLjktMTAuNy00OS45LTE4Yy00LjMtMS45LTguNS0zLjktMTIuNi02Yy05LjUtNC44LTIwLjMtNi4yLTMwLjctNC4yYy0xMi4xIDIuNC0yNC43IDMuNi0zNy44IDMuNmMtNjEuNyAwLTExMC0yNi41LTEzNi44LTYyLjNjLTE2IDUuNC0zMi44IDkuNC01MCAxMS44QzI3OSA0MzkuOCAzNTAgNDgwIDQzMiA0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMwNi43IDY5LjFMMTYyLjQgMzgwLjZjLTE5LjQgNy41LTM4LjUtMTEuNi0zMS0zMWw1NS41LTE0NC4zYzMuMy04LjUgOS45LTE1LjEgMTguNC0xOC40bDE0NC4zLTU1LjVjMTkuNC03LjUgMzguNSAxMS42IDMxIDMxTDMyNS4xIDMwNi43Yy0zLjIgOC41LTkuOSAxNS4xLTE4LjQgMTguNHpNMjg4IDI1NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMzZIMTkyYy04LjggMC0xNi03LjItMTYtMTZWNjRjMC04LjggNy4yLTE2IDE2LTE2bDE0MC4xIDBMNDAwIDExNS45VjMyMGMwIDguOC03LjIgMTYtMTYgMTZ6TTE5MiAzODRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjExNS45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMMzY2LjEgMTQuMWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFIMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NFYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjR6TTY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NFY0MTZIMjcydjMyYzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MmMwLTguOCA3LjItMTYgMTYtMTZIOTZWMTI4SDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xOTkuNCAzMTIuNmMtMzEuMi0zMS4yLTMxLjItODEuOSAwLTExMy4xczgxLjktMzEuMiAxMTMuMSAwYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWMtNTAtNTAtMTMxLTUwLTE4MSAwcy01MCAxMzEgMCAxODFzMTMxIDUwIDE4MSAwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBjLTMxLjIgMzEuMi04MS45IDMxLjItMTEzLjEgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ3JlZGl0Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgODBjOC44IDAgMTYgNy4yIDE2IDE2djMySDQ4Vjk2YzAtOC44IDcuMi0xNiAxNi0xNkg1MTJ6bTE2IDE0NFY0MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDY0Yy04LjggMC0xNi03LjItMTYtMTZWMjI0SDUyOHpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em01NiAzMDRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTIwem0xMjggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgzNjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFbnZlbG9wZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjQgNDguMmMuMi0uMSAuNC0uMiAuNi0uMnMuNCAuMSAuNiAuMkw0NjAuNiAxOTRjMi4xIDEuNSAzLjQgMy45IDMuNCA2LjV2MTMuNkwyOTEuNSAzNTUuN2MtMjAuNyAxNy01MC40IDE3LTcxLjEgMEw0OCAyMTQuMVYyMDAuNWMwLTIuNiAxLjItNSAzLjQtNi41TDI1NS40IDQ4LjJ6TTQ4IDI3Ni4yTDE5MCAzOTIuOGMzOC40IDMxLjUgOTMuNyAzMS41IDEzMiAwTDQ2NCAyNzYuMlY0NTZjMCA0LjQtMy42IDgtOCA4SDU2Yy00LjQgMC04LTMuNi04LThWMjc2LjJ6TTI1NiAwYy0xMC4yIDAtMjAuMiAzLjItMjguNSA5LjFMMjMuNSAxNTQuOUM4LjcgMTY1LjQgMCAxODIuNCAwIDIwMC41VjQ1NmMwIDMwLjkgMjUuMSA1NiA1NiA1Nkg0NTZjMzAuOSAwIDU2LTI1LjEgNTYtNTZWMjAwLjVjMC0xOC4xLTguNy0zNS4xLTIzLjQtNDUuNkwyODQuNSA5LjFDMjc2LjIgMy4yIDI2Ni4yIDAgMjU2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0VudmVsb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djIyLjFMMjIwLjUgMjkxLjdjMjAuNyAxNyA1MC40IDE3IDcxLjEgMEw0NjQgMTUwLjFWMTI4YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNNDggMjEyLjJWMzg0YzAgOC44IDcuMiAxNiAxNiAxNkg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjIxMi4yTDMyMiAzMjguOGMtMzguNCAzMS41LTkzLjcgMzEuNS0xMzIgMEw0OCAyMTIuMnpNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFeWVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDUyNS42IDM4Ni43YzM5LjYtNDAuNiA2Ni40LTg2LjEgNzkuOS0xMTguNGMzLjMtNy45IDMuMy0xNi43IDAtMjQuNmMtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMUM0NjUuNSA2OC44IDQwMC44IDMyIDMyMCAzMmMtNjguMiAwLTEyNSAyNi4zLTE2OS4zIDYwLjhMMzguOCA1LjF6bTE1MSAxMTguM0MyMjYgOTcuNyAyNjkuNSA4MCAzMjAgODBjNjUuMiAwIDExOC44IDI5LjYgMTU5LjkgNjcuN0M1MTguNCAxODMuNSA1NDUgMjI2IDU1OC42IDI1NmMtMTIuNiAyOC0zNi42IDY2LjgtNzAuOSAxMDAuOWwtNTMuOC00Mi4yYzkuMS0xNy42IDE0LjItMzcuNSAxNC4yLTU4LjdjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhjLTMyLjIgMC02MS43IDExLjktODQuMiAzMS41bC00Ni4xLTM2LjF6TTM5NC45IDI4NC4ybC04MS41LTYzLjljNC4yLTguNSA2LjYtMTguMiA2LjYtMjguM2MwLTUuNS0uNy0xMC45LTItMTZjLjcgMCAxLjMgMCAyIDBjNDQuMiAwIDgwIDM1LjggODAgODBjMCA5LjktMS44IDE5LjQtNS4xIDI4LjJ6bTUxLjMgMTYzLjNsLTQxLjktMzNDMzc4LjggNDI1LjQgMzUwLjcgNDMyIDMyMCA0MzJjLTY1LjIgMC0xMTguOC0yOS42LTE1OS45LTY3LjdDMTIxLjYgMzI4LjUgOTUgMjg2IDgxLjQgMjU2YzguMy0xOC40IDIxLjUtNDEuNSAzOS40LTY0LjhMODMuMSAxNjEuNUM2MC4zIDE5MS4yIDQ0IDIyMC44IDM0LjUgMjQzLjdjLTMuMyA3LjktMy4zIDE2LjcgMCAyNC42YzE0LjkgMzUuNyA0Ni4yIDg3LjcgOTMgMTMxLjFDMTc0LjUgNDQzLjIgMjM5LjIgNDgwIDMyMCA0ODBjNDcuOCAwIDg5LjktMTIuOSAxMjYuMi0zMi41em0tODgtNjkuM0wzMDIgMzM0Yy0yMy41LTUuNC00My4xLTIxLjItNTMuNy00Mi4zbC01Ni4xLTQ0LjJjLS4yIDIuOC0uMyA1LjYtLjMgOC41YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4YzEzLjMgMCAyNi4xLTIgMzguMi01Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggODBjLTY1LjIgMC0xMTguOCAyOS42LTE1OS45IDY3LjdDODkuNiAxODMuNSA2MyAyMjYgNDkuNCAyNTZjMTMuNiAzMCA0MC4yIDcyLjUgNzguNiAxMDguM0MxNjkuMiA0MDIuNCAyMjIuOCA0MzIgMjg4IDQzMnMxMTguOC0yOS42IDE1OS45LTY3LjdDNDg2LjQgMzI4LjUgNTEzIDI4NiA1MjYuNiAyNTZjLTEzLjYtMzAtNDAuMi03Mi41LTc4LjYtMTA4LjNDNDA2LjggMTA5LjYgMzUzLjIgODAgMjg4IDgwek05NS40IDExMi42QzE0Mi41IDY4LjggMjA3LjIgMzIgMjg4IDMyczE0NS41IDM2LjggMTkyLjYgODAuNmM0Ni44IDQzLjUgNzguMSA5NS40IDkzIDEzMS4xYzMuMyA3LjkgMy4zIDE2LjcgMCAyNC42Yy0xNC45IDM1LjctNDYuMiA4Ny43LTkzIDEzMS4xQzQzMy41IDQ0My4yIDM2OC44IDQ4MCAyODggNDgwcy0xNDUuNS0zNi44LTE5Mi42LTgwLjZDNDguNiAzNTYgMTcuMyAzMDQgMi41IDI2OC4zYy0zLjMtNy45LTMuMy0xNi43IDAtMjQuNkMxNy4zIDIwOCA0OC42IDE1NiA5NS40IDExMi42ek0yODggMzM2YzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwYy0uNyAwLTEuMyAwLTIgMGMxLjMgNS4xIDIgMTAuNSAyIDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy01LjUgMC0xMC45LS43LTE2LTJjMCAuNyAwIDEuMyAwIDJjMCA0NC4yIDM1LjggODAgODAgODB6bTAtMjA4YTEyOCAxMjggMCAxIDEgMCAyNTYgMTI4IDEyOCAwIDEgMSAwLTI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUFuZ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptNzIuNC0xMTguNWM5LjctOSAxMC4yLTI0LjIgMS4yLTMzLjlDMzE1LjMgMzQ0LjMgMjkwLjYgMzI4IDI1NiAzMjhzLTU5LjMgMTYuMy03My41IDMxLjZjLTkgOS43LTguNSAyNC45IDEuMiAzMy45czI0LjkgOC41IDMzLjktMS4yYzcuNC03LjkgMjAtMTYuNCAzOC41LTE2LjRzMzEuMSA4LjUgMzguNSAxNi40YzkgOS43IDI0LjIgMTAuMiAzMy45IDEuMnpNMTc2LjQgMjcyYzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAtMS41LS4xLTMtLjMtNC40bDEwLjkgMy42YzguNCAyLjggMTcuNC0xLjcgMjAuMi0xMC4xcy0xLjctMTcuNC0xMC4xLTIwLjJsLTk2LTMyYy04LjQtMi44LTE3LjQgMS43LTIwLjIgMTAuMXMxLjcgMTcuNCAxMC4xIDIwLjJsMzAuNyAxMC4yYy01LjggNS44LTkuMyAxMy44LTkuMyAyMi42YzAgMTcuNyAxNC4zIDMyIDMyIDMyem0xOTItMzJjMC04LjktMy42LTE3LTkuNS0yMi44bDMwLjItMTAuMWM4LjQtMi44IDEyLjktMTEuOSAxMC4xLTIwLjJzLTExLjktMTIuOS0yMC4yLTEwLjFsLTk2IDMyYy04LjQgMi44LTEyLjkgMTEuOS0xMC4xIDIwLjJzMTEuOSAxMi45IDIwLjIgMTAuMWwxMS43LTMuOWMtLjIgMS41LS4zIDMuMS0uMyA0LjdjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZURpenp5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgMzJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTEwMyAxMzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjMgMjMgMjMtMjNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC0yMyAyMyAyMyAyM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0yMy0yMy0yMyAyM2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwyMy0yMy0yMy0yM2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6bTE5MiAwYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIzIDIzIDIzLTIzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtMjMgMjMgMjMgMjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtMjMtMjMtMjMgMjNjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMjMtMjMtMjMtMjNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlRmx1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDEgNDggMjU2YTIwOCAyMDggMCAxIDEgNDE2IDB6TTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTYwLjQgMjQ4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjE2LTI0YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTE5MiAzMzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzIwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDE5MnpNMTYwIDE3NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTAgMTI4YTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0xNDQtODBhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMTI4IDBhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlRnJvd25PcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0xODIuNCAzODIuNWMtMTIuNCA1LjItMjYuNS00LjEtMjEuMS0xNi40YzE2LTM2LjYgNTIuNC02Mi4xIDk0LjgtNjIuMXM3OC44IDI1LjYgOTQuOCA2Mi4xYzUuNCAxMi4zLTguNyAyMS42LTIxLjEgMTYuNGMtMjIuNC05LjUtNDcuNC0xNC44LTczLjctMTQuOHMtNTEuMyA1LjMtNzMuNyAxNC44ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUZyb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0xNzQuNiAzODQuMWMtNC41IDEyLjUtMTguMiAxOC45LTMwLjcgMTQuNHMtMTguOS0xOC4yLTE0LjQtMzAuN0MxNDYuOSAzMTkuNCAxOTguOSAyODggMjU2IDI4OHMxMDkuMSAzMS40IDEyNi42IDc5LjljNC41IDEyLjUtMiAyNi4yLTE0LjQgMzAuN3MtMjYuMi0yLTMwLjctMTQuNEMzMjguMiAzNTguNSAyOTcuMiAzMzYgMjU2IDMzNnMtNzIuMiAyMi41LTgxLjQgNDguMXpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAwIDAgNDE2IDIwOCAyMDggMCAxIDAgMC00MTZ6TTUxMiAyNTZBMjU2IDI1NiAwIDEgMSAwIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwek0xNjggMzIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDhWMzIwaC04em00MCA0OGgzMlYzMjBIMjA4djQ4em05NiAwVjMyMEgyNzJ2NDhoMzJ6bTMyIDBoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGgtOHY0OHpNMTY4IDI4OEgzNDRjMzAuOSAwIDU2IDI1LjEgNTYgNTZzLTI1LjEgNTYtNTYgNTZIMTY4Yy0zMC45IDAtNTYtMjUuMS01Ni01NnMyNS4xLTU2IDU2LTU2em0tMjMuNi04MGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpbkJlYW1Td2VhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYuOCAxMjYuM0M0OTcuMSAxMjAuOCA1MTIgMTAyLjcgNTEyIDgxYzAtMjAtMjguNi02MC40LTQxLjYtNzcuN2MtMy4yLTQuNC05LjYtNC40LTEyLjggMGMtOS41IDEyLjYtMjcuMSAzNy4yLTM2IDU3LjVjLS4zIC43LS42IDEuNC0uOSAyLjFDNDE3LjggNjkuNyA0MTYgNzYgNDE2IDgxYzAgMjYgMjEuNSA0NyA0OCA0N2M0LjQgMCA4LjctLjYgMTIuOC0xLjd6TTM5NS40IDQxLjJDMzU1LjMgMTUuMiAzMDcuNCAwIDI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NlMxMTQuNiA1MTIgMjU2IDUxMnMyNTYtMTE0LjYgMjU2LTI1NmMwLTM1LjgtNy4zLTY5LjktMjAuNi0xMDAuOGMtOC42IDMuMS0xNy44IDQuOC0yNy40IDQuOGMtOC45IDAtMTcuNi0xLjUtMjUuNy00LjJDNDU0LjcgMTg1LjUgNDY0IDIxOS43IDQ2NCAyNTZjMCAxMTQuOS05My4xIDIwOC0yMDggMjA4UzQ4IDM3MC45IDQ4IDI1NlMxNDEuMSA0OCAyNTYgNDhjNDguNyAwIDkzLjQgMTYuNyAxMjguOSA0NC43Yy0uNi0zLjgtLjktNy43LS45LTExLjdjMC0xMS40IDMuOC0yMi40IDcuMS0zMC41YzEuMy0zLjEgMi43LTYuMiA0LjMtOS4zek0zNzUgMzM2LjVjMTAuNC0xNi4xLTYuOC0zMi41LTI1LjUtMjguMWMtMjguOSA2LjgtNjAuNSAxMC41LTkzLjYgMTAuNXMtNjQuNy0zLjctOTMuNi0xMC41Yy0xOC43LTQuNC0zNS45IDEyLTI1LjUgMjguMWMyNC42IDM4LjEgNjguNyA2My41IDExOS4xIDYzLjVzOTQuNS0yNS40IDExOS4xLTYzLjV6TTIxNy42IDIyOC44bDAgMCAwIDAgMCAwYzIuMSAyLjggNS43IDMuOSA4LjkgMi44czUuNS00LjEgNS41LTcuNmMwLTE3LjktNi43LTM1LjYtMTYuNi00OC44Yy05LjgtMTMtMjMuOS0yMy4yLTM5LjQtMjMuMnMtMjkuNiAxMC4yLTM5LjQgMjMuMkMxMjYuNyAxODguNCAxMjAgMjA2LjEgMTIwIDIyNGMwIDMuNCAyLjIgNi41IDUuNSA3LjZzNi45IDAgOC45LTIuOGwwIDAgMCAwIDAgMCAuMi0uMmMuMi0uMiAuNC0uNSAuNy0uOWMuNi0uOCAxLjYtMiAyLjgtMy40YzIuNS0yLjggNi02LjYgMTAuMi0xMC4zYzguOC03LjggMTguOC0xNCAyNy43LTE0czE4LjkgNi4yIDI3LjcgMTRjNC4yIDMuNyA3LjcgNy41IDEwLjIgMTAuM2MxLjIgMS40IDIuMiAyLjYgMi44IDMuNGMuMyAuNCAuNiAuNyAuNyAuOWwuMiAuMiAwIDB6bTE2MCAwbDAgMCAwIDBjMi4xIDIuOCA1LjcgMy45IDguOSAyLjhzNS41LTQuMSA1LjUtNy42YzAtMTcuOS02LjctMzUuNi0xNi42LTQ4LjhjLTkuOC0xMy0yMy45LTIzLjItMzkuNC0yMy4ycy0yOS42IDEwLjItMzkuNCAyMy4yQzI4Ni43IDE4OC40IDI4MCAyMDYuMSAyODAgMjI0YzAgMy40IDIuMiA2LjUgNS41IDcuNnM2LjkgMCA4LjktMi44bDAgMCAwIDAgMCAwIC4yLS4yYy4yLS4yIC40LS41IC43LS45Yy42LS44IDEuNi0yIDIuOC0zLjRjMi41LTIuOCA2LTYuNiAxMC4yLTEwLjNjOC44LTcuOCAxOC44LTE0IDI3LjctMTRzMTguOSA2LjIgMjcuNyAxNGM0LjIgMy43IDcuNyA3LjUgMTAuMiAxMC4zYzEuMiAxLjQgMi4yIDIuNiAyLjggMy40Yy4zIC40IC42IC43IC43IC45bC4yIC4yIDAgMCAwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXpNMjE3LjYgMjI4LjhsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW5IZWFydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTM0OS41IDUyLjRjMTguNy00LjQgMzUuOSAxMiAyNS41IDI4LjFDMzUwLjQgMzc0LjYgMzA2LjMgNDAwIDI1NS45IDQwMHMtOTQuNS0yNS40LTExOS4xLTYzLjVjLTEwLjQtMTYuMSA2LjgtMzIuNSAyNS41LTI4LjFjMjguOSA2LjggNjAuNSAxMC41IDkzLjYgMTAuNXM2NC43LTMuNyA5My42LTEwLjV6TTIxNS4zIDEzNy4xYzE3LjggNC44IDI4LjQgMjMuMSAyMy42IDQwLjhsLTE3LjQgNjVjLTIuMyA4LjUtMTEuMSAxMy42LTE5LjYgMTEuM2wtNjUuMS0xNy40Yy0xNy44LTQuOC0yOC40LTIzLjEtMjMuNi00MC44czIzLjEtMjguNCA0MC44LTIzLjZsMTYuMSA0LjMgNC4zLTE2LjFjNC44LTE3LjggMjMuMS0yOC40IDQwLjgtMjMuNnptMTIyLjMgMjMuNmw0LjMgMTYuMSAxNi4xLTQuM2MxNy44LTQuOCAzNi4xIDUuOCA0MC44IDIzLjZzLTUuOCAzNi4xLTIzLjYgNDAuOGwtNjUuMSAxNy40Yy04LjUgMi4zLTE3LjMtMi44LTE5LjYtMTEuM2wtMTcuNC02NWMtNC44LTE3LjggNS44LTM2LjEgMjMuNi00MC44czM2LjEgNS44IDQwLjkgMjMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW5TcXVpbnRUZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjYuOCAxNC4yQzQ0Ni01IDQ3Ny41LTQuNiA0OTcuMSAxNC45czIwIDUxIC43IDcwLjNjLTE0LjggMTQuOC02NS43IDIzLjYtODguMyAyNi43Yy01LjYgLjktMTAuMy0zLjktOS41LTkuNUM0MDMuMyA3OS45IDQxMiAyOSA0MjYuOCAxNC4yek03NSA3NUMxNTguMi04LjMgMjg0LjUtMjIuMiAzODIuMiAzMy4yYy0xLjUgNC44LTIuOSA5LjYtNC4xIDE0LjNjLTMuMSAxMi4yLTUuNSAyNC42LTcuMyAzNWMtODAuOC01My42LTE5MC43LTQ0LjgtMjYxLjkgMjYuNEMzNy43IDE4MC4xIDI4LjkgMjkwIDgyLjUgMzcwLjhjLTEwLjUgMS44LTIyLjkgNC4yLTM1IDcuM2MtNC43IDEuMi05LjUgMi41LTE0LjMgNC4xQy0yMi4yIDI4NC41LTguMiAxNTguMiA3NSA3NXptMzg5LjYgNTguOWM0LjctMS4yIDkuNS0yLjUgMTQuMy00LjFDNTM0LjIgMjI3LjUgNTIwLjIgMzUzLjggNDM3IDQzN2MtODMuMiA4My4yLTIwOS41IDk3LjItMzA3LjIgNDEuOGMxLjUtNC44IDIuOC05LjYgNC0xNC4zYzMuMS0xMi4yIDUuNS0yNC42IDcuMy0zNWM4MC44IDUzLjYgMTkwLjcgNDQuOCAyNjEuOS0yNi40YzcxLjItNzEuMiA4MC0xODEuMSAyNi40LTI2MS45YzEwLjUtMS44IDIyLjktNC4yIDM1LTcuM3ptLTEwNS40IDkzYzEwLjEtMTYuMyAzMy45LTE2LjkgMzcuOSAxLjljOS41IDQ0LjQtMy43IDkzLjUtMzkuMyAxMjkuMXMtODQuOCA0OC44LTEyOS4xIDM5LjNjLTE4LjctNC0xOC4yLTI3LjgtMS45LTM3LjljMjUuMi0xNS43IDUwLjItMzUuNCA3My42LTU4LjhzNDMuMS00OC40IDU4LjgtNzMuNnpNOTIgMjY1LjNsOTcuNC0yOS43YzExLjYtMy41IDIyLjUgNy4zIDE5IDE5bC0yOS43IDk3LjRjLTIuNiA4LjYtMTMuNCAxMS4zLTE5LjggNC45Yy0yLTItMy4yLTQuNi0zLjQtNy4zbC01LjEtNTYuMS01Ni4xLTUuMWMtMi44LS4zLTUuNC0xLjUtNy4zLTMuNGMtNi4zLTYuMy0zLjYtMTcuMiA0LjktMTkuOHptMTkzLTE3OC4yYzIgMiAzLjIgNC42IDMuNCA3LjNsNS4xIDU2LjEgNTYuMSA1LjFjMi44IC4zIDUuNCAxLjUgNy4zIDMuNGM2LjMgNi4zIDMuNiAxNy4yLTQuOSAxOS44bC05Ny40IDI5LjdjLTExLjYgMy41LTIyLjUtNy4zLTE5LTE5TDI2NS4zIDkyYzIuNi04LjYgMTMuNC0xMS4zIDE5LjgtNC45ek0xNC45IDQ5Ny4xYy0xOS42LTE5LjYtMjAtNTEtLjctNzAuM0MyOSA0MTIgNzkuOCA0MDMuMiAxMDIuNCA0MDAuMWM1LjYtLjkgMTAuMyAzLjkgOS41IDkuNWMtMy4yIDIyLjUtMTEuOSA3My41LTI2LjcgODguM0M2NiA1MTcgMzQuNSA1MTYuNiAxNC45IDQ5Ny4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXptLTIxNi0xNjEuN2w4OS45IDQ3LjljMTAuNyA1LjcgMTAuNyAyMS4xIDAgMjYuOGwtODkuOSA0Ny45Yy03LjkgNC4yLTE3LjUtMS41LTE3LjUtMTAuNWMwLTIuOCAxLTUuNSAyLjgtNy42bDM2LTQzLjItMzYtNDMuMmMtMS44LTIuMS0yLjgtNC44LTIuOC03LjZjMC05IDkuNi0xNC43IDE3LjUtMTAuNXpNMzk2IDE1Ny4xYzAgMi44LTEgNS41LTIuOCA3LjZsLTM2IDQzLjIgMzYgNDMuMmMxLjggMi4xIDIuOCA0LjggMi44IDcuNmMwIDktOS42IDE0LjctMTcuNSAxMC41bC04OS45LTQ3LjljLTEwLjctNS43LTEwLjctMjEuMSAwLTI2LjhsODkuOS00Ny45YzcuOS00LjIgMTcuNSAxLjUgMTcuNSAxMC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblN0YXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTgzLjIgMTMyLjZjLTEuMy0yLjgtNC4xLTQuNi03LjItNC42cy01LjkgMS44LTcuMiA0LjZsLTE2LjYgMzQuNy0zOC4xIDVjLTMuMSAuNC01LjYgMi41LTYuNiA1LjVzLS4xIDYuMiAyLjEgOC4zbDI3LjkgMjYuNS03IDM3LjhjLS42IDMgLjcgNi4xIDMuMiA3LjlzNS44IDIgOC41IC42TDE3NiAyNDAuNWwzMy44IDE4LjNjMi43IDEuNSA2IDEuMyA4LjUtLjZzMy43LTQuOSAzLjItNy45bC03LTM3LjhMMjQyLjQgMTg2YzIuMi0yLjEgMy4xLTUuMyAyLjEtOC4zcy0zLjUtNS4xLTYuNi01LjVsLTM4LjEtNS0xNi42LTM0Ljd6bTE2MCAwYy0xLjMtMi44LTQuMS00LjYtNy4yLTQuNnMtNS45IDEuOC03LjIgNC42bC0xNi42IDM0LjctMzguMSA1Yy0zLjEgLjQtNS42IDIuNS02LjYgNS41cy0uMSA2LjIgMi4xIDguM2wyNy45IDI2LjUtNyAzNy44Yy0uNiAzIC43IDYuMSAzLjIgNy45czUuOCAyIDguNSAuNkwzMzYgMjQwLjVsMzMuOCAxOC4zYzIuNyAxLjUgNiAxLjMgOC41LS42czMuNy00LjkgMy4yLTcuOWwtNy0zNy44TDQwMi40IDE4NmMyLjItMi4xIDMuMS01LjMgMi4xLTguM3MtMy41LTUuMS02LjYtNS41bC0zOC4xLTUtMTYuNi0zNC43em02LjMgMTc1LjhjLTI4LjkgNi44LTYwLjUgMTAuNS05My42IDEwLjVzLTY0LjctMy43LTkzLjYtMTAuNWMtMTguNy00LjQtMzUuOSAxMi0yNS41IDI4LjFjMjQuNiAzOC4xIDY4LjcgNjMuNSAxMTkuMSA2My41czk0LjUtMjUuNCAxMTkuMS02My41YzEwLjQtMTYuMS02LjgtMzIuNS0yNS41LTI4LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluVGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTE2LjEgMzI1LjVjMSAzIDIuMSA2IDMuMyA4LjljMy4zIDguMSA4LjQgMTguNSAxNi41IDI2LjZjMy45IDMuOSA4LjIgNy40IDEyLjcgMTAuM0M1MDYuNCA0NTQuOCA0MTkuOSA1MTIgMzIwIDUxMnMtMTg2LjQtNTcuMi0yMjguNi0xNDAuNmM0LjUtMi45IDguNy02LjMgMTIuNy0xMC4zYzguMS04LjEgMTMuMi0xOC42IDE2LjUtMjYuNmMxLjItMi45IDIuMy01LjkgMy4zLTguOUMxNTIuNSA0MDYuMiAyMjkuNSA0NjQgMzIwIDQ2NHMxNjcuNS01Ny44IDE5Ni4xLTEzOC41ek0zMjAgNDhjLTEwMS40IDAtMTg1LjggNzIuNS0yMDQuMyAxNjguNWMtNi43LTMuMS0xNC4zLTQuMy0yMi4zLTMuMWMtNi44IC45LTE2LjIgMi40LTI2LjYgNC40Qzg1LjMgOTQuNSAxOTEuNiAwIDMyMCAwUzU1NC43IDk0LjUgNTczLjIgMjE3LjdjLTEwLjMtMi0xOS44LTMuNS0yNi42LTQuNGMtOC0xLjItMTUuNyAuMS0yMi4zIDMuMUM1MDUuOCAxMjAuNSA0MjEuNCA0OCAzMjAgNDh6TTc4LjUgMzQxLjFDNjAgMzU2LjcgMzIgMzU1LjUgMTQuMyAzMzcuN2MtMTguNy0xOC43LTE5LjEtNDguOC0uNy02Ny4yYzguNi04LjYgMzAuMS0xNS4xIDUwLjUtMTkuNmMxMy0yLjggMjUuNS00LjggMzMuOS02YzUuNC0uOCA5LjkgMy43IDkgOWMtMy4xIDIxLjUtMTEuNCA3MC4yLTI1LjUgODQuNGMtLjkgMS0xLjkgMS44LTIuOSAyLjd6bTQ4MyAwYy0uOC0uNi0xLjUtMS4zLTIuMy0yYy0uMi0uMi0uNS0uNC0uNy0uN2MtMTQuMS0xNC4xLTIyLjUtNjIuOS0yNS41LTg0LjRjLS44LTUuNCAzLjctOS45IDktOWMxIC4xIDIuMiAuMyAzLjMgLjVjOC4yIDEuMiAxOS4yIDMgMzAuNiA1LjVjMjAuNCA0LjQgNDEuOSAxMC45IDUwLjUgMTkuNmMxOC40IDE4LjQgMTggNDguNS0uNyA2Ny4yYy0xNy43IDE3LjctNDUuNyAxOS02NC4yIDMuNHpNNDM5IDMzNi41QzQxNC40IDM3NC42IDM3MC4zIDQwMCAzMTkuOSA0MDBzLTk0LjUtMjUuNC0xMTkuMS02My41Yy0xMC40LTE2LjEgNi44LTMyLjUgMjUuNS0yOC4xYzI4LjkgNi44IDYwLjUgMTAuNSA5My42IDEwLjVzNjQuNy0zLjcgOTMuNi0xMC41YzE4LjctNC40IDM1LjkgMTIgMjUuNSAyOC4xek0yODEuNiAyMjguOGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwem0xNjAgMGwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblRvbmd1ZVNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2YzAtMTE0LjktOTMuMS0yMDgtMjA4LTIwOFM0OCAxNDEuMSA0OCAyNTZjMCA4MS43IDQ3LjEgMTUyLjQgMTE1LjcgMTg2LjRjLTIuNC04LjQtMy43LTE3LjMtMy43LTI2LjRWMzkyLjdjLTI0LTE3LjUtNDMuMS00MS40LTU0LjgtNjkuMmMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTljMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43Yy0xMS44IDI4LTMxLjEgNTItNTUuNCA2OS42VjQxNmMwIDkuMi0xLjMgMTgtMy43IDI2LjRDNDE2LjkgNDA4LjQgNDY0IDMzNy43IDQ2NCAyNTZ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTE2LTk4LjljMC05IDkuNi0xNC43IDE3LjUtMTAuNWw4OS45IDQ3LjljMTAuNyA1LjcgMTAuNyAyMS4xIDAgMjYuOGwtODkuOSA0Ny45Yy03LjkgNC4yLTE3LjUtMS41LTE3LjUtMTAuNWMwLTIuOCAxLTUuNSAyLjgtNy42bDM2LTQzLjItMzYtNDMuMmMtMS44LTIuMS0yLjgtNC44LTIuOC03LjZ6bTI2Mi41LTEwLjVjNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjVjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3Ljl6TTMyMCA0MTZWMzc4LjZjMC0xNC43LTExLjktMjYuNi0yNi42LTI2LjZoLTJjLTExLjMgMC0yMS4xIDcuOS0yMy42IDE4LjljLTIuOCAxMi42LTIwLjggMTIuNi0yMy42IDBjLTIuNS0xMS4xLTEyLjMtMTguOS0yMy42LTE4LjloLTJjLTE0LjcgMC0yNi42IDExLjktMjYuNiAyNi42VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblRvbmd1ZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ4LjMgNDQyLjRjMi40LTguNCAzLjctMTcuMyAzLjctMjYuNFYzNjMuNWM4LjgtOCAxNi42LTE3LjEgMjMtMjdjMTAuNC0xNi4xLTYuOC0zMi41LTI1LjUtMjguMWMtMjguOSA2LjgtNjAuNSAxMC41LTkzLjYgMTAuNXMtNjQuNy0zLjctOTMuNi0xMC41Yy0xOC43LTQuNC0zNS45IDEyLTI1LjUgMjguMWM2LjUgMTAgMTQuMyAxOS4xIDIzLjEgMjcuMVY0MTZjMCA5LjIgMS4zIDE4IDMuNyAyNi40Qzk1LjEgNDA4LjQgNDggMzM3LjcgNDggMjU2QzQ4IDE0MS4xIDE0MS4xIDQ4IDI1NiA0OHMyMDggOTMuMSAyMDggMjA4YzAgODEuNy00Ny4xIDE1Mi40LTExNS43IDE4Ni40ek0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTU5LjYgMjIwYzEwLjYgMCAxOS45IDMuOCAyNS40IDkuN2M3LjYgOC4xIDIwLjIgOC41IDI4LjMgLjlzOC41LTIwLjIgLjktMjguM0MxOTkuNyAxODYuOCAxNzkgMTgwIDE1OS42IDE4MHMtNDAuMSA2LjgtNTQuNiAyMi4zYy03LjYgOC4xLTcuMSAyMC43IC45IDI4LjNzMjAuNyA3LjEgMjguMy0uOWM1LjUtNS44IDE0LjgtOS43IDI1LjQtOS43em0xNzYuNyAxMmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bS0uNC03MmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTAgMTI4YTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwek0zMjAgNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0VjM3OC42YzAtMTQuNyAxMS45LTI2LjYgMjYuNi0yNi42aDJjMTEuMyAwIDIxLjEgNy45IDIzLjYgMTguOWMyLjggMTIuNiAyMC44IDEyLjYgMjMuNiAwYzIuNS0xMS4xIDEyLjMtMTguOSAyMy42LTE4LjloMmMxNC43IDAgMjYuNiAxMS45IDI2LjYgMjYuNlY0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluVG9uZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZjMC0xMTQuOS05My4xLTIwOC0yMDgtMjA4UzQ4IDE0MS4xIDQ4IDI1NmMwIDgxLjcgNDcuMSAxNTIuNCAxMTUuNyAxODYuNGMtMi40LTguNC0zLjctMTcuMy0zLjctMjYuNFYzNjMuNmMtOC45LTgtMTYuNy0xNy4xLTIzLjEtMjcuMWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNWMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMWMtNi40IDkuOS0xNC4yIDE5LTIzIDI3VjQxNmMwIDkuMi0xLjMgMTgtMy43IDI2LjRDNDE2LjkgNDA4LjQgNDY0IDMzNy43IDQ2NCAyNTZ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTc2LjQtODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzIwIDQxNlYzNzguNmMwLTE0LjctMTEuOS0yNi42LTI2LjYtMjYuNmgtMmMtMTEuMyAwLTIxLjEgNy45LTIzLjYgMTguOWMtMi44IDEyLjYtMjAuOCAxMi42LTIzLjYgMGMtMi41LTExLjEtMTIuMy0xOC45LTIzLjYtMTguOWgtMmMtMTQuNyAwLTI2LjYgMTEuOS0yNi42IDI2LjZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluV2lkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXpNMjI0IDE5MmMwIDM1LjMtMTQuMyA2NC0zMiA2NHMtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjR6bTk2IDY0Yy0xNy43IDAtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjRzLTE0LjMgNjQtMzIgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE2NS44IDIxLjdjLTcuNiA4LjEtMjAuMiA4LjUtMjguMyAuOXMtOC41LTIwLjItLjktMjguM2MxNC41LTE1LjUgMzUuMi0yMi4zIDU0LjYtMjIuM3M0MC4xIDYuOCA1NC42IDIyLjNjNy42IDguMSA3LjEgMjAuNy0uOSAyOC4zcy0yMC43IDcuMS0yOC4zLS45Yy01LjUtNS44LTE0LjgtOS43LTI1LjQtOS43cy0xOS45IDMuOC0yNS40IDkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTM0OS41IDUyLjRjMTguNy00LjQgMzUuOSAxMiAyNS41IDI4LjFDMzUwLjQgMzc0LjYgMzA2LjMgNDAwIDI1NS45IDQwMHMtOTQuNS0yNS40LTExOS4xLTYzLjVjLTEwLjQtMTYuMSA2LjgtMzIuNSAyNS41LTI4LjFjMjguOSA2LjggNjAuNSAxMC41IDkzLjYgMTAuNXM2NC43LTMuNyA5My42LTEwLjV6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlS2lzc0JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMwNC43IDQxLjdjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNzQuNyA0MjcuMSAyNTcuNCA0MzIgMjQwIDQzMmMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xYy0uNC0uMi0uNy0uNC0uOS0uNWwtLjItLjEgMCAwIDAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03bDAgMCAwIDAgMCAwIDAgMCAwIDAgLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFjLS40LS4yLS43LS40LS45LS41bC0uMi0uMSAwIDAgMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjR6bS04Ny4xLTY4LjlsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUtpc3NXaW5rSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM4LjkgNDQ2LjhjLTI1LjQgMTEtNTMuNCAxNy4yLTgyLjkgMTcuMkMxNDEuMSA0NjQgNDggMzcwLjkgNDggMjU2UzE0MS4xIDQ4IDI1NiA0OHMyMDggOTMuMSAyMDggMjA4YzAgMjIuNC0zLjUgNDMuOS0xMC4xIDY0LjFjMy4xIDQuNSA1LjcgOS40IDcuOCAxNC42YzEyLjctMS42IDI1LjEgLjQgMzYuMiA1YzkuMS0yNi4yIDE0LTU0LjQgMTQtODMuN0M1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMFMwIDExNC42IDAgMjU2UzExNC42IDUxMiAyNTYgNTEyYzM1LjQgMCA2OS4xLTcuMiA5OS43LTIwLjJjLTQuOC01LjUtOC41LTEyLjItMTAuNC0xOS43bC02LjUtMjUuM3pNMjk2IDMxNmMwLTYuOS0zLjEtMTMuMi03LjMtMTguM2MtNC4zLTUuMi0xMC4xLTkuNy0xNi43LTEzLjRDMjU4LjcgMjc2LjkgMjQxLjQgMjcyIDIyNCAyNzJjLTMuNiAwLTYuOCAyLjUtNy43IDZzLjYgNy4yIDMuOCA5bDAgMCAwIDAgMCAwIC4yIC4xYy4yIC4xIC41IC4zIC45IC41Yy44IC41IDIgMS4yIDMuNCAyLjFjMi44IDEuOSA2LjUgNC41IDEwLjIgNy42YzMuNyAzLjEgNy4yIDYuNiA5LjYgMTAuMWMyLjUgMy41IDMuNSA2LjQgMy41IDguNnMtMSA1LTMuNSA4LjZjLTIuNSAzLjUtNS45IDYuOS05LjYgMTAuMWMtMy43IDMuMS03LjQgNS43LTEwLjIgNy42Yy0xLjQgLjktMi42IDEuNi0zLjQgMi4xYy0uNCAuMi0uNyAuNC0uOSAuNWwtLjIgLjEgMCAwIDAgMCAwIDAgMCAwIDAgMGMtMi41IDEuNC00LjEgNC4xLTQuMSA3czEuNiA1LjYgNC4xIDdsMCAwIDAgMCAwIDAgLjIgLjFjLjIgLjEgLjUgLjMgLjkgLjVjLjggLjUgMiAxLjIgMy40IDIuMWMyLjggMS45IDYuNSA0LjUgMTAuMiA3LjZjMy43IDMuMSA3LjIgNi42IDkuNiAxMC4xYzIuNSAzLjUgMy41IDYuNCAzLjUgOC42cy0xIDUtMy41IDguNmMtMi41IDMuNS01LjkgNi45LTkuNiAxMC4xYy0zLjcgMy4xLTcuNCA1LjctMTAuMiA3LjZjLTEuNCAuOS0yLjYgMS42LTMuNCAyLjFjLS40IC4yLS43IC40LS45IC41bC0uMiAuMSAwIDAgMCAwIDAgMCAwIDBjLTMuMiAxLjgtNC43IDUuNS0zLjggOXM0LjEgNiA3LjcgNmMxNy40IDAgMzQuNy00LjkgNDcuOS0xMi4zYzYuNi0zLjcgMTIuNS04LjIgMTYuNy0xMy40YzQuMy01LjEgNy4zLTExLjQgNy4zLTE4LjNzLTMuMS0xMy4yLTcuMy0xOC4zYy00LjMtNS4yLTEwLjEtOS43LTE2LjctMTMuNGMtMi43LTEuNS01LjctMy04LjctNC4zYzMuMS0xLjMgNi0yLjcgOC43LTQuM2M2LjYtMy43IDEyLjUtOC4yIDE2LjctMTMuNGM0LjMtNS4xIDcuMy0xMS40IDcuMy0xOC4zek0xNzYuNCAyNDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xNTkuMy0yMGMxMC42IDAgMTkuOSAzLjggMjUuNCA5LjdjNy42IDguMSAyMC4yIDguNSAyOC4zIC45czguNS0yMC4yIC45LTI4LjNDMzc1LjcgMTg2LjggMzU1IDE4MCAzMzUuNiAxODBzLTQwLjEgNi44LTU0LjYgMjIuM2MtNy42IDguMS03LjEgMjAuNyAuOSAyOC4zczIwLjcgNy4xIDI4LjMtLjljNS41LTUuOCAxNC44LTkuNyAyNS40LTkuN3pNNDM0IDM1Mi4zYy02LTIzLjItMjguOC0zNy01MS4xLTMwLjhzLTM1LjQgMzAuMS0yOS41IDUzLjRsMjIuOSA4OS4zYzIuMiA4LjcgMTEuMiAxMy45IDE5LjggMTEuNGw4NC45LTIzLjhjMjIuMi02LjIgMzUuNC0zMC4xIDI5LjUtNTMuNHMtMjguOC0zNy01MS4xLTMwLjhsLTIwLjIgNS42LTUuNC0yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUtpc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMwNC43IDI1LjdjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNzQuNyA0MTEuMSAyNTcuNCA0MTYgMjQwIDQxNmMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xbC0uOC0uNS0uMS0uMS0uMi0uMSAwIDAgMCAwIDAgMGMtMi41LTEuNC00LjEtNC4xLTQuMS03czEuNi01LjYgNC4xLTdsMCAwIDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWMtLjQtLjItLjctLjQtLjktLjVsLS4yLS4xIDAgMCAwIDAgMCAwYy0zLjItMS44LTQuNy01LjUtMy44LTlzNC4xLTYgNy43LTZjMTcuNCAwIDM0LjcgNC45IDQ3LjkgMTIuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VMYXVnaEJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTEzMC43IDU3LjljLTQuMi0xMy42IDcuMS0yNS45IDIxLjMtMjUuOUgzNjQuNWMxNC4yIDAgMjUuNSAxMi40IDIxLjMgMjUuOUMzNjkgMzY4LjQgMzE4LjIgNDA4IDI1OC4yIDQwOHMtMTEwLjgtMzkuNi0xMjcuNS05NC4xem04Ni45LTg1LjFsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUxhdWdoU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xMzAuNyA1Ny45Yy00LjItMTMuNiA3LjEtMjUuOSAyMS4zLTI1LjlIMzY0LjVjMTQuMiAwIDI1LjUgMTIuNCAyMS4zIDI1LjlDMzY5IDM2OC40IDMxOC4yIDQwOCAyNTguMiA0MDhzLTExMC44LTM5LjYtMTI3LjUtOTQuMXptMi44LTE4My4zbDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTQxLjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VMYXVnaFdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTEzMC43IDU3LjljLTQuMi0xMy42IDcuMS0yNS45IDIxLjMtMjUuOUgzNjQuNWMxNC4yIDAgMjUuNSAxMi40IDIxLjMgMjUuOUMzNjkgMzY4LjQgMzE4LjIgNDA4IDI1OC4yIDQwOHMtMTEwLjgtMzkuNi0xMjcuNS05NC4xek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTY1LjggMjEuN2MtNy42IDguMS0yMC4yIDguNS0yOC4zIC45cy04LjUtMjAuMi0uOS0yOC4zYzE0LjUtMTUuNSAzNS4yLTIyLjMgNTQuNi0yMi4zczQwLjEgNi44IDU0LjYgMjIuM2M3LjYgOC4xIDcuMSAyMC43LS45IDI4LjNzLTIwLjcgNy4xLTI4LjMtLjljLTUuNS01LjgtMTQuOC05LjctMjUuNC05LjdzLTE5LjkgMy44LTI1LjQgOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlTGF1Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTEzMC43IDU3LjljLTQuMi0xMy42IDcuMS0yNS45IDIxLjMtMjUuOUgzNjQuNWMxNC4yIDAgMjUuNSAxMi40IDIxLjMgMjUuOUMzNjkgMzY4LjQgMzE4LjIgNDA4IDI1OC4yIDQwOHMtMTEwLjgtMzkuNi0xMjcuNS05NC4xek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZU1laEJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAwIDAgNDE2IDIwOCAyMDggMCAxIDAgMC00MTZ6TTUxMiAyNTZBMjU2IDI1NiAwIDEgMSAwIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZU1laCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDEgNDggMjU2YTIwOCAyMDggMCAxIDEgNDE2IDB6TTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTc2LjQgMjQwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTkyLTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTE4NCAzMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzI4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDE4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVJvbGxpbmdFeWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY4IDM3NmMwIDEzLjMgMTAuNyAyNCAyNCAyNEgzMjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTkyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptLTgtMTA0Yy0yNi41IDAtNDgtMjEuNS00OC00OGMwLTE0LjMgNi4zLTI3LjIgMTYuMi0zNmMtLjIgMS4zLS4yIDIuNi0uMiA0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0xLjQtLjEtMi43LS4yLTRjMTAgOC44IDE2LjIgMjEuNyAxNi4yIDM2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0wIDMyYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0xOTItMzJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtMTQuMyA2LjMtMjcuMiAxNi4yLTM2Yy0uMiAxLjMtLjIgMi42LS4yIDRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTEuNC0uMS0yLjctLjItNGMxMCA4LjggMTYuMiAyMS43IDE2LjIgMzZjMCAyNi41LTIxLjUgNDgtNDggNDh6bTAgMzJhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VTYWRDcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQwNi4xVjI4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY0NDAuNmMtMjguNyAxNS02MS40IDIzLjQtOTYgMjMuNHMtNjcuMy04LjUtOTYtMjMuNFYyODhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWNDA2LjFDNzIuNiAzNjguMiA0OCAzMTUgNDggMjU2QzQ4IDE0MS4xIDE0MS4xIDQ4IDI1NiA0OHMyMDggOTMuMSAyMDggMjA4YzAgNTktMjQuNiAxMTIuMi02NCAxNTAuMXpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE1OS42IDIyMGMxMC42IDAgMTkuOSAzLjggMjUuNCA5LjdjNy42IDguMSAyMC4yIDguNSAyOC4zIC45czguNS0yMC4yIC45LTI4LjNDMTk5LjcgMTg2LjggMTc5IDE4MCAxNTkuNiAxODBzLTQwLjEgNi44LTU0LjYgMjIuM2MtNy42IDguMS03LjEgMjAuNyAuOSAyOC4zczIwLjcgNy4xIDI4LjMtLjljNS41LTUuOCAxNC44LTkuNyAyNS40LTkuN3ptMTY2LjYgOS43YzUuNS01LjggMTQuOC05LjcgMjUuNC05LjdzMTkuOSAzLjggMjUuNCA5LjdjNy42IDguMSAyMC4yIDguNSAyOC4zIC45czguNS0yMC4yIC45LTI4LjNDMzkxLjcgMTg2LjggMzcxIDE4MCAzNTEuNiAxODBzLTQwLjEgNi44LTU0LjYgMjIuM2MtNy42IDguMS03LjEgMjAuNyAuOSAyOC4zczIwLjcgNy4xIDI4LjMtLjl6TTIwOCAzMjB2MzJjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OFYzMjBjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VTYWRUZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NS45IDQ0OGMtMzUtLjEtNjUuNS0yMi42LTc2LTU0LjZDNjcuNiAzNTYuOCA0OCAzMDguNyA0OCAyNTZDNDggMTQxLjEgMTQxLjEgNDggMjU2IDQ4czIwOCA5My4xIDIwOCAyMDhzLTkzLjEgMjA4LTIwOCAyMDhjLTI4LjQgMC01NS41LTUuNy04MC4xLTE2ek0wIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwQTI1NiAyNTYgMCAxIDAgMCAyNTZ6TTEyOCAzNjljMCAyNiAyMS41IDQ3IDQ4IDQ3czQ4LTIxIDQ4LTQ3YzAtMjAtMjguNC02MC40LTQxLjYtNzcuN2MtMy4yLTQuNC05LjYtNC40LTEyLjggMEMxNTYuNiAzMDguNiAxMjggMzQ5IDEyOCAzNjl6bTEyOC02NWMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGMzMC43IDAgNTguNyAxMS41IDgwIDMwLjZjOS45IDguOCAyNSA4IDMzLjktMS45czgtMjUtMS45LTMzLjlDMzM4LjMgMzIwLjIgMjk5IDMwNCAyNTYgMzA0em00Ny42LTk2YTMyIDMyIDAgMSAwIDY0IDAgMzIgMzIgMCAxIDAgLTY0IDB6bS0xMjggMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlU21pbGVCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzcuNiA2Mi4xQzE5Mi44IDMzNC41IDIxOC44IDM1MiAyNTYgMzUyczYzLjItMTcuNSA3OC40LTMzLjljOS05LjcgMjQuMi0xMC40IDMzLjktMS40czEwLjQgMjQuMiAxLjQgMzMuOWMtMjIgMjMuOC02MCA0OS40LTExMy42IDQ5LjRzLTkxLjctMjUuNS0xMTMuNi00OS40Yy05LTkuNy04LjQtMjQuOSAxLjQtMzMuOXMyNC45LTguNCAzMy45IDEuNHptNDAtODkuM2wwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlU21pbGVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzcuNiA2Mi4xQzE5Mi44IDMzNC41IDIxOC44IDM1MiAyNTYgMzUyczYzLjItMTcuNSA3OC40LTMzLjljOS05LjcgMjQuMi0xMC40IDMzLjktMS40czEwLjQgMjQuMiAxLjQgMzMuOWMtMjIgMjMuOC02MCA0OS40LTExMy42IDQ5LjRzLTkxLjctMjUuNS0xMTMuNi00OS40Yy05LTkuNy04LjQtMjQuOSAxLjQtMzMuOXMyNC45LTguNCAzMy45IDEuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE2NS44IDIxLjdjLTcuNiA4LjEtMjAuMiA4LjUtMjguMyAuOXMtOC41LTIwLjItLjktMjguM2MxNC41LTE1LjUgMzUuMi0yMi4zIDU0LjYtMjIuM3M0MC4xIDYuOCA1NC42IDIyLjNjNy42IDguMSA3LjEgMjAuNy0uOSAyOC4zcy0yMC43IDcuMS0yOC4zLS45Yy01LjUtNS44LTE0LjgtOS43LTI1LjQtOS43cy0xOS45IDMuOC0yNS40IDkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVNtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzcuNiA2Mi4xQzE5Mi44IDMzNC41IDIxOC44IDM1MiAyNTYgMzUyczYzLjItMTcuNSA3OC40LTMzLjljOS05LjcgMjQuMi0xMC40IDMzLjktMS40czEwLjQgMjQuMiAxLjQgMzMuOWMtMjIgMjMuOC02MCA0OS40LTExMy42IDQ5LjRzLTkxLjctMjUuNS0xMTMuNi00OS40Yy05LTkuNy04LjQtMjQuOSAxLjQtMzMuOXMyNC45LTguNCAzMy45IDEuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VTdXJwcmlzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTc2LjQtODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMjU2IDI4OGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVRpcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzYuNSA2NC4zQzE5Ni4xIDMwMi4xIDIyMy44IDI4OCAyNTYgMjg4czU5LjkgMTQuMSA3OS41IDMyLjNDMzU0LjUgMzM4LjEgMzY4IDM2MiAzNjggMzg0YzAgNS40LTIuNyAxMC40LTcuMiAxMy40cy0xMC4yIDMuNC0xNS4yIDEuM2wtMTcuMi03LjVjLTIyLjgtMTAtNDcuNS0xNS4xLTcyLjQtMTUuMXMtNDkuNiA1LjItNzIuNCAxNS4xbC0xNy4yIDcuNWMtNC45IDIuMi0xMC43IDEuNy0xNS4yLTEuM3MtNy4yLTgtNy4yLTEzLjRjMC0yMiAxMy41LTQ1LjkgMzIuNS02My43em0tNDMtMTczLjZsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42YzAtOSA5LjYtMTQuNyAxNy41LTEwLjV6TTM5NiAxNTcuMWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUF1ZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NEgzMjBjOC44IDAgMTYtNy4yIDE2LTE2VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ4SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNnpNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI5LjVjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdsOTAuNSA5MC41YzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTkyIDI3MlY0MDBjMCA2LjUtMy45IDEyLjMtOS45IDE0LjhzLTEyLjkgMS4xLTE3LjQtMy41TDEyOS40IDM3NkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMTJjMC04LjggNy4yLTE2IDE2LTE2aDE3LjRsMzUuMy0zNS4zYzQuNi00LjYgMTEuNS01LjkgMTcuNC0zLjVzOS45IDguMyA5LjkgMTQuOHptODUuOC00YzExLjYgMjAgMTguMiA0My4zIDE4LjIgNjhzLTYuNiA0OC0xOC4yIDY4Yy02LjYgMTEuNS0yMS4zIDE1LjQtMzIuOCA4LjhzLTE1LjQtMjEuMy04LjgtMzIuOGM3LjUtMTIuOSAxMS44LTI3LjkgMTEuOC00NHMtNC4zLTMxLjEtMTEuOC00NGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhzMjYuMi0yLjcgMzIuOCA4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0YzAtOC44IDcuMi0xNiAxNi0xNkgyMjR2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NHpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTk3IDI4OWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDc5IDMwM2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNDggNDhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0zMS0zMSAzMS0zMXpNMjU3IDI1NWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzMSAzMS0zMSAzMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDQ4LTQ4YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUV4Y2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQ0OFY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNnpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTkwLjkgMjMzLjNjLTguMS0xMC41LTIzLjItMTIuMy0zMy43LTQuMnMtMTIuMyAyMy4yLTQuMiAzMy43TDE2MS42IDMyMGwtNDQuNSA1Ny4zYy04LjEgMTAuNS02LjMgMjUuNSA0LjIgMzMuN3MyNS41IDYuMyAzMy43LTQuMkwxOTIgMzU5LjFsMzcuMSA0Ny42YzguMSAxMC41IDIzLjIgMTIuMyAzMy43IDQuMnMxMi4zLTIzLjIgNC4yLTMzLjdMMjIyLjQgMzIwbDQ0LjUtNTcuM2M4LjEtMTAuNSA2LjMtMjUuNS00LjItMzMuN3MtMjUuNS02LjMtMzMuNyA0LjJMMTkyIDI4MC45bC0zNy4xLTQ3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjR6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTU0LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjc0LjcgMTguN0MyNjIuNyA2LjcgMjQ2LjUgMCAyMjkuNSAwSDY0em05NiAyNTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptNjkuMiA0Ni45Yy0zLTQuMy03LjktNi45LTEzLjItNi45cy0xMC4yIDIuNi0xMy4yIDYuOWwtNDEuMyA1OS43LTExLjktMTkuMWMtMi45LTQuNy04LjEtNy41LTEzLjYtNy41cy0xMC42IDIuOC0xMy42IDcuNWwtNDAgNjRjLTMuMSA0LjktMy4yIDExLjEtLjQgMTYuMnM4LjIgOC4yIDE0IDguMmg0OCAzMiA0MCA3MmM2IDAgMTEuNC0zLjMgMTQuMi04LjZzMi40LTExLjYtMS0xNi41bC03Mi0xMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVMaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjR6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTU0LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjc0LjcgMTguN0MyNjIuNyA2LjcgMjQ2LjUgMCAyMjkuNSAwSDY0em01NiAyNTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjY0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDEyMHptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgyNjRjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NGw0OCAwIDAgNDgtNDggMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMjI5LjUgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2w5MC41IDkwLjVjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM0wzODQgMzA0bC00OCAwIDAtMTQ0LTgwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtODBMNjQgNDhjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDM4NGMwIDguOCA3LjIgMTYgMTYgMTZ6TTE3NiAzNTJsMzIgMGMzMC45IDAgNTYgMjUuMSA1NiA1NnMtMjUuMSA1Ni01NiA1NmwtMTYgMCAwIDMyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDggMC04MGMwLTguOCA3LjItMTYgMTYtMTZ6bTMyIDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNiAwIDAgNDggMTYgMHptOTYtODBsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xMjhjMC04LjggNy4yLTE2IDE2LTE2em0zMiAxMjhjOC44IDAgMTYtNy4yIDE2LTE2bDAtNjRjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwIDAgOTYgMTYgMHptODAtMTEyYzAtOC44IDcuMi0xNiAxNi0xNmw0OCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwIDAgMzIgMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMzIgMCAwIDQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNjQgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY0Yy04LjggMC0xNi03LjItMTYtMTZWNjRjMC04LjggNy4yLTE2IDE2LTE2SDIyNHY4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MFY0NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDY0ek02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE1NC41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI3NC43IDE4LjdDMjYyLjcgNi43IDI0Ni41IDAgMjI5LjUgMEg2NHptNzIgMjA4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYzMzZ2NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNjBoNDRjNDIgMCA3Ni0zNCA3Ni03NnMtMzQtNzYtNzYtNzZIMTM2em02OCAxMDRIMTYwVjI1Nmg0NGMxNS41IDAgMjggMTIuNSAyOCAyOHMtMTIuNSAyOC0yOCAyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0NjRjOC44IDAgMTYtNy4yIDE2LTE2VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ4SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNkgzMjB6TTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyOS41YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43bDkwLjUgOTAuNWMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zVjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTgwIDI4OGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnYxNmw0NC45LTI5LjljMi0xLjMgNC40LTIuMSA2LjgtMi4xYzYuOCAwIDEyLjMgNS41IDEyLjMgMTIuM1YzODcuN2MwIDYuOC01LjUgMTIuMy0xMi4zIDEyLjNjLTIuNCAwLTQuOC0uNy02LjgtMi4xTDI0MCAzNjh2MTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQ0OFY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNnpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTU1IDI0MS4xYy0zLjgtMTIuNy0xNy4yLTE5LjktMjkuOS0xNi4xcy0xOS45IDE3LjItMTYuMSAyOS45bDQ4IDE2MGMzIDEwLjIgMTIuNCAxNy4xIDIzIDE3LjFzMTkuOS03IDIzLTE3LjFsMjUtODMuNCAyNSA4My40YzMgMTAuMiAxMi40IDE3LjEgMjMgMTcuMXMxOS45LTcgMjMtMTcuMWw0OC0xNjBjMy44LTEyLjctMy40LTI2LjEtMTYuMS0yOS45cy0yNi4xIDMuNC0yOS45IDE2LjFsLTI1IDgzLjQtMjUtODMuNGMtMy0xMC4yLTEyLjQtMTcuMS0yMy0xNy4xcy0xOS45IDctMjMgMTcuMWwtMjUgODMuNC0yNS04My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlWmlwcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0YzAtOC44IDcuMi0xNiAxNi0xNmg0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2aDQ4djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjR6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTU0LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjc0LjcgMTguN0MyNjIuNyA2LjcgMjQ2LjUgMCAyMjkuNSAwSDY0em00OCAxMTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2em0wIDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnptLTYuMyA3MS44TDgyLjEgMzM1LjljLTEuNCA1LjQtMi4xIDEwLjktMi4xIDE2LjRjMCAzNS4yIDI4LjggNjMuNyA2NCA2My43czY0LTI4LjUgNjQtNjMuN2MwLTUuNS0uNy0xMS4xLTIuMS0xNi40bC0yMy41LTg4LjJjLTMuNy0xNC0xNi40LTIzLjgtMzAuOS0yMy44SDEzNi42Yy0xNC41IDAtMjcuMiA5LjctMzAuOSAyMy44ek0xMjggMzM2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDEyOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDY0YzguOCAwIDE2LTcuMiAxNi0xNlYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0OEg2NGMtOC44IDAtMTYgNy4yLTE2IDE2VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzIwek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjkuNWMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2w5MC41IDkwLjVjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDI0QzQ4IDEwLjcgMzcuMyAwIDI0IDBTMCAxMC43IDAgMjRWNjQgMzUwLjUgNDAwdjg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzg4bDgwLjMtMjAuMWM0MS4xLTEwLjMgODQuNi01LjUgMTIyLjUgMTMuNGM0NC4yIDIyLjEgOTUuNSAyNC44IDE0MS43IDcuNGwzNC43LTEzYzEyLjUtNC43IDIwLjgtMTYuNiAyMC44LTMwVjY2LjFjMC0yMy0yNC4yLTM4LTQ0LjgtMjcuN2wtOS42IDQuOGMtNDYuMyAyMy4yLTEwMC44IDIzLjItMTQ3LjEgMGMtMzUuMS0xNy42LTc1LjQtMjItMTEzLjUtMTIuNUw0OCA1MlYyNHptMCA3Ny41bDk2LjYtMjQuMmMyNy02LjcgNTUuNS0zLjYgODAuNCA4LjhjNTQuOSAyNy40IDExOC43IDI5LjcgMTc1IDYuOFYzMzQuN2wtMjQuNCA5LjFjLTMzLjcgMTIuNi03MS4yIDEwLjctMTAzLjQtNS40Yy00OC4yLTI0LjEtMTAzLjMtMzAuMS0xNTUuNi0xNy4xTDQ4IDMzOC41di0yMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Zsb3BweURpc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggOTZWNDE2YzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2VjE3MC41YzAtNC4yLTEuNy04LjMtNC43LTExLjNsMzMuOS0zMy45YzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzMDkuNWMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2w3NC41IDc0LjUtMzMuOSAzMy45TDMyMC44IDg0LjdjLS4zLS4zLS41LS41LS44LS44VjE4NGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgxMDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjgwSDY0Yy04LjggMC0xNiA3LjItMTYgMTZ6bTgwLTE2djgwSDI3MlY4MEgxMjh6bTMyIDI0MGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbGRlckNsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4OS45TDI0NyA1My4xQzIzMy41IDM5LjYgMjE1LjIgMzIgMTk2LjEgMzJINjR6TTQ4IDk2YzAtOC44IDcuMi0xNiAxNi0xNkgxOTYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDQ1LjMgNDUuM2M3LjUgNy41IDE3LjcgMTEuNyAyOC4zIDExLjdINDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMkg0OFY5NnptMCAxNDRINDY0VjQxNmMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ4MGg0OGMxMS40IDAgMjEuOS02IDI3LjYtMTUuOWwxMTItMTkyYzUuOC05LjkgNS44LTIyLjEgLjEtMzIuMVM1NTUuNSAyMjQgNTQ0IDIyNEgxNDRjLTExLjQgMC0yMS45IDYtMjcuNiAxNS45TDQ4IDM1Ny4xVjk2YzAtOC44IDcuMi0xNiAxNi0xNkgxODEuNWM0LjIgMCA4LjMgMS43IDExLjMgNC43bDI2LjUgMjYuNWMyMSAyMSA0OS41IDMyLjggNzkuMiAzMi44SDQxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJoNDhWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDI5OC41Yy0xNyAwLTMzLjMtNi43LTQ1LjMtMTguN0wyMjYuNyA1MC43Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDg3LjcgMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTYuMWMxOS4xIDAgMzcuNCA3LjYgNTAuOSAyMS4xTDI4OS45IDk2SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZINDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYxNjBjMC04LjgtNy4yLTE2LTE2LTE2SDI4Ni42Yy0xMC42IDAtMjAuOC00LjItMjguMy0xMS43TDIxMy4xIDg3Yy00LjUtNC41LTEwLjYtNy0xNy03SDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGb250QXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS43IDk2QzEwNi4zIDg2LjggMTE2IDcwLjUgMTE2IDUyQzExNiAyMy4zIDkyLjcgMCA2NCAwUzEyIDIzLjMgMTIgNTJjMCAxNi43IDcuOCAzMS41IDIwIDQxbDAgMyAwIDQ4IDAgMjU2IDAgNDggMCA2NCA0OCAwIDAtNjQgMzg5LjYgMGMxNC42IDAgMjYuNC0xMS44IDI2LjQtMjYuNGMwLTMuNy0uOC03LjMtMi4zLTEwLjdMNDMyIDI3Mmw2MS43LTEzOC45YzEuNS0zLjQgMi4zLTcgMi4zLTEwLjdjMC0xNC42LTExLjgtMjYuNC0yNi40LTI2LjRMOTEuNyA5NnpNODAgNDAwbDAtMjU2IDM1Ni40IDBMMzg4LjEgMjUyLjVjLTUuNSAxMi40LTUuNSAyNi42IDAgMzlMNDM2LjQgNDAwIDgwIDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRnV0Ym9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNS40IDM2MS4zbC04OS43LTZjLTUuMi0uMy0xMC4zIDEuMS0xNC41IDQuMnMtNy4yIDcuNC04LjQgMTIuNWwtMjIgODcuMmMtMTQuNCAzLjItMjkuNCA0LjgtNDQuOCA0LjhzLTMwLjMtMS43LTQ0LjgtNC44bC0yMi04Ny4yYy0xLjMtNS00LjMtOS40LTguNC0xMi41cy05LjMtNC41LTE0LjUtNC4ybC04OS43IDZDNjEuNyAzMzUuOSA1MS45IDMwNyA0OSAyNzYuMkwxMjUgMjI4LjNjNC40LTIuOCA3LjYtNyA5LjItMTEuOXMxLjQtMTAuMi0uNS0xNUwxMDAuNCAxMThjMTkuOS0yMi40IDQ0LjYtNDAuNSA3Mi40LTUyLjdsNjkuMSA1Ny42YzQgMy4zIDkgNS4xIDE0LjEgNS4xczEwLjItMS44IDE0LjEtNS4xbDY5LjEtNTcuNmMyNy44IDEyLjIgNTIuNSAzMC4zIDcyLjQgNTIuN2wtMzMuNCA4My40Yy0xLjkgNC44LTIuMSAxMC4xLS41IDE1czQuOSA5LjEgOS4yIDExLjlMNDYzIDI3Ni4yYy0zIDMwLjgtMTIuNyA1OS43LTI3LjYgODUuMXpNMjU2IDQ4bC45IDBoLTEuOGwuOSAwek01Ni43IDE5Ni4yYy45LTMgMS45LTYuMSAyLjktOS4xbC0yLjkgOS4xek0xMzIgNDIzbDMuOCAyLjdjLTEuMy0uOS0yLjUtMS44LTMuOC0yLjd6bTI0OC4xLS4xYy0xLjMgMS0yLjcgMi00IDIuOWw0LTIuOXptNzUuMi0yMjYuNmwtMy05LjJjMS4xIDMgMi4xIDYuMSAzIDkuMnpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTE0LjEtMzI1LjdjLTguNC02LjEtMTkuOC02LjEtMjguMiAwTDE5NCAyMjFjLTguNCA2LjEtMTEuOSAxNi45LTguNyAyNi44bDE4LjMgNTYuM2MzLjIgOS45IDEyLjQgMTYuNiAyMi44IDE2LjZoNTkuMmMxMC40IDAgMTkuNi02LjcgMjIuOC0xNi42bDE4LjMtNTYuM2MzLjItOS45LS4zLTIwLjctOC43LTI2LjhsLTQ3LjktMzQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR2VtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OC41IDcyTDI1NiAxNjVsODcuNS05M2gtMTc1ek0zODMuOSA5OS4xTDMxMS41IDE3NmgxMjlMMzgzLjkgOTkuMXptNTAgMTI0LjlIMjU2IDc4LjFMMjU2IDQyMC4zIDQzMy45IDIyNHpNNzEuNSAxNzZoMTI5TDEyOC4xIDk5LjEgNzEuNSAxNzZ6bTQzNC4zIDQwLjFsLTIzMiAyNTZjLTQuNSA1LTExIDcuOS0xNy44IDcuOXMtMTMuMi0yLjktMTcuOC03LjlsLTIzMi0yNTZjLTcuNy04LjUtOC4zLTIxLjItMS41LTMwLjRsMTEyLTE1MmM0LjUtNi4xIDExLjctOS44IDE5LjMtOS44SDM3NmM3LjYgMCAxNC44IDMuNiAxOS4zIDkuOGwxMTIgMTUyYzYuOCA5LjIgNi4xIDIxLjktMS41IDMwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRCYWNrRmlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmMwIDkuMSA1LjEgMTcuNCAxMy4zIDIxLjVzMTcuOSAzLjIgMjUuMS0yLjNjMi43LTIgNi0zLjIgOS42LTMuMmM4LjggMCAxNiA3LjIgMTYgMTZjMCA5LjEgNS4xIDE3LjQgMTMuMyAyMS41czE3LjkgMy4yIDI1LjEtMi4zYzIuNy0yIDYtMy4yIDkuNi0zLjJjOC44IDAgMTYgNy4yIDE2IDE2YzAgOS4xIDUuMSAxNy40IDEzLjMgMjEuNXMxNy45IDMuMiAyNS4xLTIuM2MyLjctMiA2LTMuMiA5LjYtMy4yYzguOCAwIDE2IDcuMiAxNiAxNlYyNjRjMCAzMS4zLTIwIDU4LTQ4IDY3LjljLTkuNiAzLjQtMTYgMTIuNS0xNiAyMi42VjQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjM3MC4yYzM4LTIwLjEgNjQtNjAuMSA2NC0xMDYuMlYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTIuOCAwLTUuNiAuMi04LjMgLjVDMzMyLjggNzcuMSAzMTEuOSA2NCAyODggNjRjLTIuOCAwLTUuNiAuMi04LjMgLjVDMjY4LjggNDUuMSAyNDcuOSAzMiAyMjQgMzJjLTIuOCAwLTUuNiAuMi04LjMgLjVDMjA0LjggMTMuMSAxODMuOSAwIDE2MCAwQzEyNC43IDAgOTYgMjguNyA5NiA2NHY2NC4zYy0xMS43IDcuNC0yMi41IDE2LjQtMzIgMjYuOWwxNy44IDE2LjFMNjQgMTU1LjJsLTkuNCAxMC41QzQwIDE4MS44IDMyIDIwMi44IDMyIDIyNC42djEyLjhjMCA0OS42IDI0LjIgOTYuMSA2NC44IDEyNC41bDEzLjgtMTkuN0w5Ni44IDM2MS45bDguOSA2LjJjNi45IDQuOCAxNC40IDguNiAyMi4zIDExLjNWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzU5LjljMC0xMi42LTkuOC0yMy4xLTIyLjQtMjMuOWMtNy4zLS41LTE0LjMtMi45LTIwLjMtNy4xbC0xMy4xIDE4LjcgMTMuMS0xOC43LTguOS02LjJDOTYuNiAzMDMuMSA4MCAyNzEuMyA4MCAyMzcuNFYyMjQuNmMwLTkuOSAzLjctMTkuNCAxMC4zLTI2LjhsOS40LTEwLjVjMy44LTQuMiA3LjktOC4xIDEyLjMtMTEuNlYyMDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxNDIuMyAxMjggNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzIgMTEyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDI0MGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NEgxMzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjg4YzQuNSAwIDguOSAxLjMgMTIuNyAzLjZsNjQgNDBjNyA0LjQgMTEuMyAxMi4xIDExLjMgMjAuNHYyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0MTMuM0wyODEuMSAzODRIMTM2Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcySDI0MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg3MmMtMzkuOCAwLTcyLTMyLjItNzItNzJTMzIuMiA2NCA3MiA2NEgyODEuNmM0Ni43IDAgOTAuOSAyMS41IDExOS43IDU4LjNsNzguNCAxMDAuMWMyMC45IDI2LjcgMzIuMyA1OS43IDMyLjMgOTMuN1Y0MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzE2LjFjMC0yMy4yLTcuOC00NS44LTIyLjEtNjQuMUwzNjMuNSAxNTEuOWMtMTkuNy0yNS4yLTQ5LjktMzkuOS04MS45LTM5LjlINzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQZWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTAuOCAxLjRjLTM1LjItMy43LTY2LjYgMjEuOC03MC4zIDU3TDE3NCAxMTkgMTU2LjcgNjkuNkMxNDUgMzYuMyAxMDguNCAxOC44IDc1LjEgMzAuNVMyNC4yIDc4LjggMzUuOSAxMTIuMUw4OC43IDI2Mi4yQzczLjUgMjc2LjcgNjQgMjk3LjMgNjQgMzIwdjAgMjRjMCA5Mi44IDc1LjIgMTY4IDE2OCAxNjhoNDhjOTIuOCAwIDE2OC03NS4yIDE2OC0xNjhWMjcyIDI1NiAyMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTcuOSAwLTE1LjQgMS40LTIyLjQgNGMtMTAuNC0yMS4zLTMyLjMtMzYtNTcuNi0zNmMtLjcgMC0xLjUgMC0yLjIgMGw1LjktNTYuM2MzLjctMzUuMi0yMS44LTY2LjYtNTctNzAuM3ptLS4yIDE1NS40QzI0My45IDE2Ni45IDI0MCAxNzkgMjQwIDE5MnY0OGMwIC43IDAgMS40IDAgMmMtNS4xLTEuMy0xMC41LTItMTYtMmgtNy40bC01LjQtMTUuMyAxNy0xNjEuM2MuOS04LjggOC44LTE1LjIgMTcuNi0xNC4yczE1LjIgOC44IDE0LjIgMTcuNmwtOS41IDkwLjF6TTExMS40IDg1LjZMMTY1LjcgMjQwSDE0NGMtNCAwLTggLjMtMTEuOSAuOUw4MS4yIDk2LjJjLTIuOS04LjMgMS41LTE3LjUgOS44LTIwLjRzMTcuNSAxLjUgMjAuNCA5Ljh6TTI4OCAxOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYzMiAxNmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxOTJ6bTM4LjQgMTA4YzEwLjQgMjEuMyAzMi4zIDM2IDU3LjYgMzZjNS41IDAgMTAuOS0uNyAxNi0ydjEwYzAgNjYuMy01My43IDEyMC0xMjAgMTIwSDIzMmMtNjYuMyAwLTEyMC01My43LTEyMC0xMjBsMC0yNCAwIDBjMC0xNy43IDE0LjMtMzIgMzItMzJoODBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDQwYzM1LjMgMCA2NC0yOC43IDY0LTY0YzAtLjcgMC0xLjQgMC0yYzUuMSAxLjMgMTAuNSAyIDE2IDJjNy45IDAgMTUuNC0xLjQgMjIuNC00ek00MDAgMjcyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI0MCAyMjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYzMiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NDhsMC0xNzcuNmM1LjIgMSAxMC41IDEuNiAxNiAxLjZsMTYgMCAwIDMyIDAgMTQ0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2ek04MCAyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyYzAgMCAwIDAgMCAwbDAtMjRjMC02Ni4zIDUzLjctMTIwIDEyMC0xMjBsNDggMGM1Mi41IDAgOTcuMSAzMy43IDExMy40IDgwLjdjLTMuMS0uNS02LjItLjctOS40LS43Yy0yMCAwLTM3LjkgOS4yLTQ5LjcgMjMuNmMtOS00LjktMTkuNC03LjYtMzAuMy03LjZjLTE1LjEgMC0yOSA1LjMtNDAgMTRjLTExLTguOC0yNC45LTE0LTQwLTE0bC00MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQwIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTQwIDAtNDAgMHpNMCAxOTJzMCAwIDAgMGMwIDE4IDYgMzQuNiAxNiA0OGwwIDIwOGMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0bDAtODJjNS4xIDEuMyAxMC41IDIgMTYgMmMyNS4zIDAgNDcuMi0xNC43IDU3LjYtMzZjNyAyLjYgMTQuNSA0IDIyLjQgNGMyMCAwIDM3LjktOS4yIDQ5LjctMjMuNmM5IDQuOSAxOS40IDcuNiAzMC4zIDcuNmMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0IDAtMjRDMzg0IDc1LjIgMzA4LjggMCAyMTYgMEwxNjggMEM3NS4yIDAgMCA3NS4yIDAgMTY4bDAgMjR6bTMzNiA2NGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTQ4IDAtMTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDY0ek0xNjAgMjcyYzUuNSAwIDEwLjktLjcgMTYtMmwwIDIgMCAzMmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTMyIDE2IDB6bTY0LTI0bDAtNDBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDQ4IDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMjhsMTc3LjYgMGMtMSA1LjItMS42IDEwLjUtMS42IDE2bDAgMTYtMzIgMEw2NCAxNjBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTIyNCAxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMmMwIDAgMCAwIDAgMGwyNCAwYzY2LjMgMCAxMjAgNTMuNyAxMjAgMTIwbDAgNDhjMCA1Mi41LTMzLjcgOTcuMS04MC43IDExMy40Yy41LTMuMSAuNy02LjIgLjctOS40YzAtMjAtOS4yLTM3LjktMjMuNi00OS43YzQuOS05IDcuNi0xOS40IDcuNi0zMC4zYzAtMTUuMS01LjMtMjktMTQtNDBjOC44LTExIDE0LTI0LjkgMTQtNDBsMC00MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDAgMC00MHptMzItODBzMCAwIDAgMGMtMTggMC0zNC42IDYtNDggMTZMNjQgODBDMjguNyA4MCAwIDEwOC43IDAgMTQ0czI4LjcgNjQgNjQgNjRsODIgMGMtMS4zIDUuMS0yIDEwLjUtMiAxNmMwIDI1LjMgMTQuNyA0Ny4yIDM2IDU3LjZjLTIuNiA3LTQgMTQuNS00IDIyLjRjMCAyMCA5LjIgMzcuOSAyMy42IDQ5LjdjLTQuOSA5LTcuNiAxOS40LTcuNiAzMC4zYzAgMzUuMyAyOC43IDY0IDY0IDY0bDY0IDAgMjQgMGM5Mi44IDAgMTY4LTc1LjIgMTY4LTE2OGwwLTQ4YzAtOTIuOC03NS4yLTE2OC0xNjgtMTY4bC0yNCAwek0yNTYgNDAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDQ4IDAgMTYgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNjQgMHpNMjQwIDIyNGMwIDUuNSAuNyAxMC45IDIgMTZsLTIgMC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDMyIDAgMCAxNnptMjQgNjRsNDAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNDggMC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDI0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxMjhsLTE3Ny42IDBjMSA1LjIgMS42IDEwLjUgMS42IDE2bDAgMTYgMzIgMCAxNDQgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNnpNMjI0IDE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMmMwIDAgMCAwIDAgMGwtMjQgMGMtNjYuMyAwLTEyMCA1My43LTEyMCAxMjBsMCA0OGMwIDUyLjUgMzMuNyA5Ny4xIDgwLjcgMTEzLjRjLS41LTMuMS0uNy02LjItLjctOS40YzAtMjAgOS4yLTM3LjkgMjMuNi00OS43Yy00LjktOS03LjYtMTkuNC03LjYtMzAuM2MwLTE1LjEgNS4zLTI5IDE0LTQwYy04LjgtMTEtMTQtMjQuOS0xNC00MGwwLTQwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA0MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtNDAgMC00MHpNMTkyIDY0czAgMCAwIDBjMTggMCAzNC42IDYgNDggMTZsMjA4IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRsLTgyIDBjMS4zIDUuMSAyIDEwLjUgMiAxNmMwIDI1LjMtMTQuNyA0Ny4yLTM2IDU3LjZjMi42IDcgNCAxNC41IDQgMjIuNGMwIDIwLTkuMiAzNy45LTIzLjYgNDkuN2M0LjkgOSA3LjYgMTkuNCA3LjYgMzAuM2MwIDM1LjMtMjguNyA2NC02NCA2NGwtNjQgMC0yNCAwQzc1LjIgNDQ4IDAgMzcyLjggMCAyODBsMC00OEMwIDEzOS4yIDc1LjIgNjQgMTY4IDY0bDI0IDB6bTY0IDMzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtNDggMC0xNiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDY0IDB6bTE2LTE3NmMwIDUuNS0uNyAxMC45LTIgMTZsMiAwIDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTMyIDAgMCAxNnptLTI0IDY0bC00MCAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDQ4IDAgMTYgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRWMjQxLjZjNS4yLTEgMTAuNS0xLjYgMTYtMS42SDk2VjIwOCA2NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnpNODAgMjg4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmMwIDAgMCAwIDAgMHYyNGMwIDY2LjMgNTMuNyAxMjAgMTIwIDEyMGg0OGM1Mi41IDAgOTcuMS0zMy43IDExMy40LTgwLjdjLTMuMSAuNS02LjIgLjctOS40IC43Yy0yMCAwLTM3LjktOS4yLTQ5LjctMjMuNmMtOSA0LjktMTkuNCA3LjYtMzAuMyA3LjZjLTE1LjEgMC0yOS01LjMtNDAtMTRjLTExIDguOC0yNC45IDE0LTQwIDE0SDEyMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg0MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMjAgODB6TTAgMzIwczAgMCAwIDBjMC0xOCA2LTM0LjYgMTYtNDhWNjRDMTYgMjguNyA0NC43IDAgODAgMHM2NCAyOC43IDY0IDY0djgyYzUuMS0xLjMgMTAuNS0yIDE2LTJjMjUuMyAwIDQ3LjIgMTQuNyA1Ny42IDM2YzctMi42IDE0LjUtNCAyMi40LTRjMjAgMCAzNy45IDkuMiA0OS43IDIzLjZjOS00LjkgMTkuNC03LjYgMzAuMy03LjZjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjQgMjRjMCA5Mi44LTc1LjIgMTY4LTE2OCAxNjhIMTY4Qzc1LjIgNTEyIDAgNDM2LjggMCAzNDRWMzIwem0zMzYtNjRjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDggMTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNTZ6TTE2MCAyNDBjNS41IDAgMTAuOSAuNyAxNiAydi0yVjIwOGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYzMmgxNnptNjQgMjR2NDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNTYgMjQwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlYyMDBjMCAxMC4zIDYuNiAxOS41IDE2LjQgMjIuOHMyMC42LS4xIDI2LjgtOC4zYzMtMy45IDcuNi02LjQgMTIuOC02LjRjOC44IDAgMTYgNy4yIDE2IDE2YzAgMTAuMyA2LjYgMTkuNSAxNi40IDIyLjhzMjAuNi0uMSAyNi44LTguM2MzLTMuOSA3LjYtNi40IDEyLjgtNi40YzcuOCAwIDE0LjMgNS42IDE1LjcgMTNjMS42IDguMiA3LjMgMTUuMSAxNS4xIDE4czE2LjcgMS42IDIzLjMtMy42YzIuNy0yLjEgNi4xLTMuNCA5LjktMy40YzguOCAwIDE2IDcuMiAxNiAxNmwwIDE2VjM5MmMwIDM5LjgtMzIuMiA3Mi03MiA3MkgyNzIgMjEyLjNoLS45Yy0zNy40IDAtNzIuNC0xOC43LTkzLjItNDkuOUw1MC43IDMxMi45Yy00LjktNy40LTIuOS0xNy4zIDQuNC0yMi4yczE3LjMtMi45IDIyLjIgNC40TDExNiAzNTMuMmM1LjkgOC44IDE2LjggMTIuNyAyNi45IDkuN3MxNy0xMi40IDE3LTIzVjMyMCA2NHpNMTc2IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0VjI2MS43QzkxLjIgMjM4IDU1LjUgMjMyLjggMjguNSAyNTAuN0MtLjkgMjcwLjQtOC45IDMxMC4xIDEwLjggMzM5LjVMNzguMyA0NDAuOGMyOS43IDQ0LjUgNzkuNiA3MS4yIDEzMy4xIDcxLjJoLjlIMjcyaDU2YzY2LjMgMCAxMjAtNTMuNyAxMjAtMTIwVjI4OGwwLTE2YzAtMzUuMy0yOC43LTY0LTY0LTY0Yy00LjUgMC04LjggLjUtMTMgMS4zYy0xMS43LTE1LjQtMzAuMi0yNS4zLTUxLTI1LjNjLTYuOSAwLTEzLjUgMS4xLTE5LjcgMy4xQzI4OC43IDE3MC43IDI2OS42IDE2MCAyNDggMTYwYy0yLjcgMC01LjQgLjItOCAuNVY2NGMwLTM1LjMtMjguNy02NC02NC02NHptNDggMzA0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0em00OC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnptODAgMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMiAyNzYuM2MtMS4yLTM1LjMgMjYuNC02NSA2MS43LTY2LjJsMy4zLS4xTDU3IDIwOC4xQzIyLjUgMjAwLjUgLjcgMTY2LjMgOC4zIDEzMS44UzUwLjIgNzUuNSA4NC43IDgzLjJsMTczIDM4LjNjMi4zLTIuOSA0LjctNS43IDcuMS04LjVsMTguNC0yMC4zQzI5OS45IDc0LjUgMzIzLjUgNjQgMzQ4LjMgNjRsMTAuMiAwYzU0LjEgMCAxMDQuMSAyOC43IDEzMS4zIDc1LjRsMS41IDIuNmMxMy42IDIzLjIgMjAuNyA0OS43IDIwLjcgNzYuNkw1MTIgMzQ0YzAgNjYuMy01My43IDEyMC0xMjAgMTIwbC04IDAtOTYgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0yLjggLjItNS42IC41LTguM2MtMTkuNC0xMS0zMi41LTMxLjgtMzIuNS01NS43YzAtLjggMC0xLjYgMC0yLjRMNjYuNCAzMzhjLTM1LjMgMS4yLTY1LTI2LjQtNjYuMi02MS43em02My40LTE4LjJjLTguOCAuMy0xNS43IDcuNy0xNS40IDE2LjVzNy43IDE1LjcgMTYuNSAxNS40bDE2MS41LTUuNmM5LjgtLjMgMTguNyA1LjMgMjIuNyAxNC4yczIuMiAxOS4zLTQuNSAyNi40Yy0yLjggMi45LTQuNCA2LjctNC40IDExYzAgOC44IDcuMiAxNiAxNiAxNmM5LjEgMCAxNy40IDUuMSAyMS41IDEzLjNzMy4yIDE3LjktMi4zIDI1LjFjLTIgMi43LTMuMiA2LTMuMiA5LjZjMCA4LjggNy4yIDE2IDE2IDE2bDk2IDAgOCAwYzM5LjggMCA3Mi0zMi4yIDcyLTcybDAtMTI1LjRjMC0xOC40LTQuOS0zNi41LTE0LjItNTIuNGwtMS41LTIuNmMtMTguNi0zMi01Mi44LTUxLjYtODkuOC01MS42bC0xMC4yIDBjLTExLjMgMC0yMiA0LjgtMjkuNiAxMy4xbC0xNy41LTE1LjkgMTcuNSAxNS45LTE4LjQgMjAuM2MtLjYgLjYtMS4xIDEuMy0xLjcgMS45bDU3IDEzLjJjOC42IDIgMTQgMTAuNiAxMiAxOS4ycy0xMC42IDE0LTE5LjIgMTJsLTg1LjYtMTkuN0w3NC4zIDEzMGMtOC42LTEuOS0xNy4yIDMuNS0xOS4xIDEyLjJzMy41IDE3LjIgMTIuMiAxOS4xbDE4Ny41IDQxLjZjMTAuMiAyLjMgMTcuOCAxMC45IDE4LjcgMjEuNGwuMSAxYy42IDYuNi0xLjUgMTMuMS01LjggMTguMXMtMTAuNiA3LjktMTcuMiA4LjJMNjMuNiAyNTguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFNwb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MC4yIDgwLjhDMTYxIDQ3IDE4MC44IDEyIDIxNC42IDIuNGMzNC05LjYgNjkuNCAxMC4yIDc5IDQ0LjJsMzAuMyAxMDcuMUwzMzcuMSA4NGM2LjYtMzQuNyA0MC4xLTU3LjUgNzQuOC01MC45YzMxLjQgNiA1MyAzMy45IDUyIDY0LjljMTAtMi42IDIwLjgtMi44IDMxLjUtLjFjMzQuMyA4LjYgNTUuMSA0My4zIDQ2LjYgNzcuNkw0ODYuNyAzOTcuMkM0NjkuOCA0NjQuNyA0MDkuMiA1MTIgMzM5LjYgNTEyYy0xMS4yIDAtMjIuNSAwLTMzLjcgMGMtNTYuOSAwLTExMi4yLTE5LTE1Ny4yLTUzLjlsLTkyLTcxLjZjLTI3LjktMjEuNy0zMi45LTYxLjktMTEuMi04OS44czYxLjktMzIuOSA4OS44LTExLjJsMTcgMTMuMkwxMDAuNSAxNjcuNWMtMTMtMzIuOSAzLjItNzAuMSAzNi04M2MxMS4xLTQuNCAyMi43LTUuNCAzMy43LTMuN3ptNzcuMS0yMS4yYy0yLjQtOC41LTExLjItMTMuNC0xOS43LTExcy0xMy40IDExLjItMTEgMTkuN2w1NC44IDE4Mi40YzMuNSAxMi4zLTMuMyAyNS4yLTE1LjQgMjkuM3MtMjUuMy0yLTMwLTEzLjlMMTc0LjkgMTM4LjFjLTMuMi04LjItMTIuNS0xMi4zLTIwLjgtOXMtMTIuMyAxMi41LTkgMjAuOGw3My4zIDE4NS42YzEyIDMwLjMtMjMuNyA1Ny00OS40IDM3bC02My4xLTQ5LjFjLTctNS40LTE3LTQuMi0yMi41IDIuOHMtNC4yIDE3IDIuOCAyMi41bDkyIDcxLjZjMzYuNSAyOC40IDgxLjQgNDMuOCAxMjcuNyA0My44YzExLjIgMCAyMi41IDAgMzMuNyAwYzQ3LjUgMCA4OS0zMi40IDEwMC41LTc4LjVsNTUuNC0yMjEuNmMyLjEtOC42LTMuMS0xNy4zLTExLjYtMTkuNHMtMTcuMyAzLjEtMTkuNCAxMS42bC0yNiAxMDRDNDM1LjYgMjcxLjggNDI1IDI4MCA0MTMgMjgwYy0xNi41IDAtMjguOS0xNS0yNS44LTMxLjJMNDE1LjcgOTljMS43LTguNy00LTE3LjEtMTIuNy0xOC43cy0xNy4xIDQtMTguNyAxMi43TDM1Mi41IDI2MGMtMi4yIDExLjYtMTIuNCAyMC0yNC4yIDIwYy0xMSAwLTIwLjctNy4zLTIzLjctMTcuOUwyNDcuNCA1OS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYy0yNS4zIDAtNDcuMiAxNC43LTU3LjYgMzZjLTctMi42LTE0LjUtNC0yMi40LTRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjI2MS41bC0yLjctMi43Yy0yNS0yNS02NS41LTI1LTkwLjUgMHMtMjUgNjUuNSAwIDkwLjVMMTA2LjUgNDM3YzQ4IDQ4IDExMy4xIDc1IDE4MSA3NUgyOTZoOGMxLjUgMCAzLS4xIDQuNS0uNGM5MS43LTYuMiAxNjUtNzkuNCAxNzEuMS0xNzEuMWMuMy0xLjUgLjQtMyAuNC00LjVWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0Yy01LjUgMC0xMC45IC43LTE2IDJWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTcuOSAwLTE1LjQgMS40LTIyLjQgNEMzMDMuMiAxNC43IDI4MS4zIDAgMjU2IDB6TTI0MCA5Ni4xYzAgMCAwLS4xIDAtLjFWNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlY5NS45YzAgMCAwIC4xIDAgLjFWMjMyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWOTZjMCAwIDAgMCAwLS4xYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NTUuOWMwIDAgMCAuMSAwIC4xdjgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTYwLjFjMCAwIDAtLjEgMC0uMWMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjMzMi45Yy0uMSAuNi0uMSAxLjMtLjIgMS45Yy0zLjQgNjkuNy01OS4zIDEyNS42LTEyOSAxMjljLS42IDAtMS4zIC4xLTEuOSAuMkgyOTZoLTguNWMtNTUuMiAwLTEwOC4xLTIxLjktMTQ3LjEtNjAuOUw1Mi43IDMxNS4zYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMMTE5IDMzNi40YzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMlY5NmMwLTguOCA3LjItMTYgMTYtMTZjOC44IDAgMTYgNy4xIDE2IDE1LjlWMjMyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWOTYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Mi4yIDY0LjZsLTUxLjEgNTEuMWMtMTUuMyA0LjItMjkuNSAxMS45LTQxLjUgMjIuNUwxNTMgMTYxLjlDMTQyLjggMTcxIDEyOS41IDE3NiAxMTUuOCAxNzZIOTZWMzA0YzIwLjQgLjYgMzkuOCA4LjkgNTQuMyAyMy40bDM1LjYgMzUuNiA3IDcgMCAwTDIxOS45IDM5N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGMxLjctMS43IDMtMy43IDMuNy01LjhjMi44LTcuNyA5LjMtMTMuNSAxNy4zLTE1LjNzMTYuNCAuNiAyMi4yIDYuNUwyOTYuNSAzOTNjMTEuNiAxMS42IDMwLjQgMTEuNiA0MS45IDBjNS40LTUuNCA4LjMtMTIuMyA4LjYtMTkuNGMuNC04LjggNS42LTE2LjYgMTMuNi0yMC40czE3LjMtMyAyNC40IDIuMWM5LjQgNi43IDIyLjUgNS44IDMwLjktMi42YzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDM0MC4xIDI0M2wtMzUuOCAzM2MtMjcuMyAyNS4yLTY5LjIgMjUuNi05NyAuOWMtMzEuNy0yOC4yLTMyLjQtNzcuNC0xLjYtMTA2LjVsNzAuMS02Ni4yQzMwMy4yIDc4LjQgMzM5LjQgNjQgMzc3LjEgNjRjMzYuMSAwIDcxIDEzLjMgOTcuOSAzNy4yTDUwNS4xIDEyOEg1NDRoNDAgNDBjOC44IDAgMTYgNy4yIDE2IDE2VjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMkg1NzZjLTExLjggMC0yMi4yLTYuNC0yNy43LTE2SDQ2My40Yy0zLjQgNi43LTcuOSAxMy4xLTEzLjUgMTguN2MtMTcuMSAxNy4xLTQwLjggMjMuOC02MyAyMC4xYy0zLjYgNy4zLTguNSAxNC4xLTE0LjYgMjAuMmMtMjcuMyAyNy4zLTcwIDMwLTEwMC40IDguMWMtMjUuMSAyMC44LTYyLjUgMTkuNS04Ni00LjFMMTU5IDQwNGwtNy03LTM1LjYtMzUuNmMtNS41LTUuNS0xMi43LTguNy0yMC40LTkuM0M5NiAzNjkuNyA4MS42IDM4NCA2NCAzODRIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE0NGMwLTguOCA3LjItMTYgMTYtMTZINTYgOTZoMTkuOGMyIDAgMy45LS43IDUuMy0ybDI2LjUtMjMuNkMxNzUuNSA3Ny43IDIxMS40IDY0IDI0OC43IDY0SDI1OWM0LjQgMCA4LjkgLjIgMTMuMiAuNnpNNTQ0IDMyMFYxNzZINDk2Yy01LjkgMC0xMS42LTIuMi0xNS45LTYuMWwtMzYuOS0zMi44Yy0xOC4yLTE2LjItNDEuNy0yNS4xLTY2LjEtMjUuMWMtMjUuNCAwLTQ5LjggOS43LTY4LjMgMjcuMWwtNzAuMSA2Ni4yYy0xMC4zIDkuOC0xMC4xIDI2LjMgLjUgMzUuN2M5LjMgOC4zIDIzLjQgOC4xIDMyLjUtLjNsNzEuOS02Ni40YzkuNy05IDI0LjktOC40IDMzLjkgMS40czguNCAyNC45LTEuNCAzMy45bC0uOCAuOCA3NC40IDc0LjRjMTAgMTAgMTYuNSAyMi4zIDE5LjQgMzUuMUg1NDR6TTY0IDMzNmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem01MjggMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYXJkRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNlYyNThjNS4xLTEuMyAxMC41LTIgMTYtMkg0NDhjNS41IDAgMTAuOSAuNyAxNiAyVjk2YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNNDggMzIwdjk2YzAgOC44IDcuMiAxNiAxNiAxNkg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTguOC03LjItMTYtMTYtMTZINjRjLTguOCAwLTE2IDcuMi0xNiAxNnpNMCAzMjBWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjMyMHY5NmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzIwem0yODAgNDhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTIwLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI1LjggNDY4LjJsLTIuNS0yLjNMNDguMSAzMDMuMkMxNy40IDI3NC43IDAgMjM0LjcgMCAxOTIuOHYtMy4zYzAtNzAuNCA1MC0xMzAuOCAxMTkuMi0xNDRDMTU4LjYgMzcuOSAxOTguOSA0NyAyMzEgNjkuNmM5IDYuNCAxNy40IDEzLjggMjUgMjIuM2M0LjItNC44IDguNy05LjIgMTMuNS0xMy4zYzMuNy0zLjIgNy41LTYuMiAxMS41LTljMCAwIDAgMCAwIDBDMzEzLjEgNDcgMzUzLjQgMzcuOSAzOTIuOCA0NS40QzQ2MiA1OC42IDUxMiAxMTkuMSA1MTIgMTg5LjV2My4zYzAgNDEuOS0xNy40IDgxLjktNDguMSAxMTAuNEwyODguNyA0NjUuOWwtMi41IDIuM2MtOC4yIDcuNi0xOSAxMS45LTMwLjIgMTEuOXMtMjItNC4yLTMwLjItMTEuOXpNMjM5LjEgMTQ1Yy0uNC0uMy0uNy0uNy0xLTEuMWwtMTcuOC0yMGMwIDAtLjEtLjEtLjEtLjFjMCAwIDAgMCAwIDBjLTIzLjEtMjUuOS01OC0zNy43LTkyLTMxLjJDODEuNiAxMDEuNSA0OCAxNDIuMSA0OCAxODkuNXYzLjNjMCAyOC41IDExLjkgNTUuOCAzMi44IDc1LjJMMjU2IDQzMC43IDQzMS4yIDI2OGMyMC45LTE5LjQgMzIuOC00Ni43IDMyLjgtNzUuMnYtMy4zYzAtNDcuMy0zMy42LTg4LTgwLjEtOTYuOWMtMzQtNi41LTY5IDUuNC05MiAzMS4yYzAgMCAwIDAtLjEgLjFzMCAwLS4xIC4xbC0xNy44IDIwYy0uMyAuNC0uNyAuNy0xIDEuMWMtNC41IDQuNS0xMC42IDctMTYuOSA3cy0xMi40LTIuNS0xNi45LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hvc3BpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAwYy0zOS44IDAtNzIgMzIuMi03MiA3MnY4SDcyQzMyLjIgODAgMCAxMTIuMiAwIDE1MlY0NDBjMCAzOS44IDMyLjIgNzIgNzIgNzJoLjIgLjIgLjIgLjIgLjJINzNoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJINzVoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJINzdoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJINzloLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJIODJoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJIODVoLjIgLjIgLjIgLjJIODZoLjIgLjIgLjIgLjJIODdoLjIgLjIgLjIgLjJIODhoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJIOThoLjIgLjIgLjIgLjJIOTloLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJ2MEg0NTZoOHYwSDU2OGMzOS44IDAgNzItMzIuMiA3Mi03MlYxNTJjMC0zOS44LTMyLjItNzItNzItNzJINDgwVjcyYzAtMzkuOC0zMi4yLTcyLTcyLTcySDIzMnpNNDgwIDEyOGg4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY0MEg1MzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNTZ2NDhINTM2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDU2VjQ0MGMwIDEzLjMtMTAuNyAyNC0yNCAyNEg0ODBWMzM2IDEyOHpNNzIgMTI4aDg4VjQ2NGgtLjEtLjItLjItLjJIMTU5aC0uMi0uMi0uMkgxNThoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDE1NGgtLjItLjItLjJIMTUzaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxNTBoLS4yLS4yLS4ySDE0OWgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTQ2aC0uMi0uMi0uMkgxNDVoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDE0MmgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTM5aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMzZoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEzM2gtLjItLjItLjItLjItLjItLjItLjItLjJIMTMxaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMjhoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEyNmgtLjItLjItLjItLjItLjItLjItLjItLjJIMTI0aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMjJoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEyMGgtLjItLjItLjItLjItLjItLjItLjItLjJIMTE4aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMTZoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDExNGgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTExaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMDhoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEwNWgtLjItLjItLjItLjJIMTA0aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMDBoLS4yLS4yLS4yLS4ySDk5aC0uMi0uMi0uMi0uMkg5OGgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIODhoLS4yLS4yLS4yLS4ySDg3aC0uMi0uMi0uMi0uMkg4NmgtLjItLjItLjItLjJIODVoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDgyaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkg3OWgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJINzdoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDc1aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkg3M2gtLjItLjItLjItLjItLjJINzJjLTEzLjIgMC0yNC0xMC43LTI0LTI0VjMzNmg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0OFYyNDBoNTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDhWMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0ek0yMDggNzJjMC0xMy4zIDEwLjctMjQgMjQtMjRINDA4YzEzLjMgMCAyNCAxMC43IDI0IDI0VjMzNiA0NjRIMzY4VjQwMGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY2NEgyMDhWNzJ6bTg4IDI0djI0SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgyNHYyNGMwIDguOCA3LjIgMTYgMTYgMTZoMTZjOC44IDAgMTYtNy4yIDE2LTE2VjE2OGgyNGM4LjggMCAxNi03LjIgMTYtMTZWMTM2YzAtOC44LTcuMi0xNi0xNi0xNkgzNDRWOTZjMC04LjgtNy4yLTE2LTE2LTE2SDMxMmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIb3VyZ2xhc3NIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjRDMCAxMC43IDEwLjcgMCAyNCAwSDM2MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGgtOFY2N2MwIDQwLjMtMTYgNzktNDQuNSAxMDcuNUwyMjUuOSAyNTZsODEuNSA4MS41QzMzNiAzNjYgMzUyIDQwNC43IDM1MiA0NDV2MTloOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg4VjQ0NWMwLTQwLjMgMTYtNzkgNDQuNS0xMDcuNUwxNTguMSAyNTYgNzYuNSAxNzQuNUM0OCAxNDYgMzIgMTA3LjMgMzIgNjdWNDhIMjRDMTAuNyA0OCAwIDM3LjMgMCAyNHpNMTEwLjUgMzcxLjVjLTMuOSAzLjktNy41IDguMS0xMC43IDEyLjVIMjg0LjJjLTMuMi00LjQtNi44LTguNi0xMC43LTEyLjVMMTkyIDI4OS45bC04MS41IDgxLjV6TTI4NC4yIDEyOEMyOTcgMTEwLjQgMzA0IDg5IDMwNCA2N1Y0OEg4MFY2N2MwIDIyLjEgNyA0My40IDE5LjggNjFIMjg0LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hvdXJnbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCAwQzEwLjcgMCAwIDEwLjcgMCAyNFMxMC43IDQ4IDI0IDQ4aDhWNjdjMCA0MC4zIDE2IDc5IDQ0LjUgMTA3LjVMMTU4LjEgMjU2IDc2LjUgMzM3LjVDNDggMzY2IDMyIDQwNC43IDMyIDQ0NXYxOUgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgzNjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRoLThWNDQ1YzAtNDAuMy0xNi03OS00NC41LTEwNy41TDIyNS45IDI1Nmw4MS41LTgxLjVDMzM2IDE0NiAzNTIgMTA3LjMgMzUyIDY3VjQ4aDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjR6TTE5MiAyODkuOWw4MS41IDgxLjVDMjkzIDM5MSAzMDQgNDE3LjQgMzA0IDQ0NXYxOUg4MFY0NDVjMC0yNy42IDExLTU0IDMwLjUtNzMuNUwxOTIgMjg5Ljl6bTAtNjcuOWwtODEuNS04MS41QzkxIDEyMSA4MCA5NC42IDgwIDY3VjQ4SDMwNFY2N2MwIDI3LjYtMTEgNTQtMzAuNSA3My41TDE5MiAyMjIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSWRCYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0OEg2NGMtOC44IDAtMTYgNy4yLTE2IDE2VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzIwYzguOCAwIDE2LTcuMiAxNi0xNlY2NGMwLTguOC03LjItMTYtMTYtMTZIMjU2ek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTYwIDMyMGg2NGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTMyLTk2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSWRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAxNjBWNDE2YzAgOC44LTcuMiAxNi0xNiAxNkgzMjBjMC00NC4yLTM1LjgtODAtODAtODBIMTc2Yy00NC4yIDAtODAgMzUuOC04MCA4MEg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE2MEg1Mjh6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjcyIDI1NmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6bTEwNC00OGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNzZ6bTAgOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODBjOC44IDAgMTYgNy4yIDE2IDE2VjQxNS44bC01LTYuNS0xMzYtMTc2Yy00LjUtNS45LTExLjYtOS4zLTE5LTkuM3MtMTQuNCAzLjQtMTkgOS4zTDIwMiAzNDAuN2wtMzAuNS00Mi43QzE2NyAyOTEuNyAxNTkuOCAyODggMTUyIDI4OHMtMTUgMy43LTE5LjUgMTAuMWwtODAgMTEyTDQ4IDQxNi4zbDAtLjNWOTZjMC04LjggNy4yLTE2IDE2LTE2SDQ0OHpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em04MCAxOTJhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJbWFnZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDgwSDUxMmM4LjggMCAxNiA3LjIgMTYgMTZWMzIwYzAgOC44LTcuMiAxNi0xNiAxNkg0OTAuOEwzODguMSAxNzguOWMtNC40LTYuOC0xMi0xMC45LTIwLjEtMTAuOXMtMTUuNyA0LjEtMjAuMSAxMC45bC01Mi4yIDc5LjgtMTIuNC0xNi45Yy00LjUtNi4yLTExLjctOS44LTE5LjQtOS44cy0xNC44IDMuNi0xOS40IDkuOEwxNzUuNiAzMzZIMTYwYy04LjggMC0xNi03LjItMTYtMTZWOTZjMC04LjggNy4yLTE2IDE2LTE2ek05NiA5NlYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE2MGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6TTQ4IDEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNFMwIDEwNi43IDAgMTIwVjM0NGMwIDc1LjEgNjAuOSAxMzYgMTM2IDEzNkg0NTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTM2Yy00OC42IDAtODgtMzkuNC04OC04OFYxMjB6bTIwOCAyNGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdLZXlib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMTJjLTguOCAwLTE2IDcuMi0xNiAxNlYzODRjMCA4LjggNy4yIDE2IDE2IDE2SDUxMmM4LjggMCAxNi03LjIgMTYtMTZWMTI4YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4ek0xNzYgMzIwSDQwMGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6bS03Mi03MmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgxMjBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDh6bTE2LTk2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMTIwYy04LjggMC0xNi03LjItMTYtMTZWMTY4YzAtOC44IDcuMi0xNiAxNi0xNnptNjQgOTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMjAwYy04LjggMC0xNi03LjItMTYtMTZWMjQ4em0xNi05NmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDIwMGMtOC44IDAtMTYtNy4yLTE2LTE2VjE2OGMwLTguOCA3LjItMTYgMTYtMTZ6bTY0IDk2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDI4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0OHptMTYtOTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgyODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNjhjMC04LjggNy4yLTE2IDE2LTE2em02NCA5NmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgzNjBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDh6bTE2LTk2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMzYwYy04LjggMC0xNi03LjItMTYtMTZWMTY4YzAtOC44IDcuMi0xNiAxNi0xNnptNjQgOTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZINDQwYy04LjggMC0xNi03LjItMTYtMTZWMjQ4em0xNi05NmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDQ0MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE2OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA4MGMtMy4yIDAtNi4yIC40LTguOSAxLjNDMzQwIDg2LjggMzEzIDkxLjkgMjg0LjggODQuNkMyMjcuNCA2OS43IDE2MC4yIDkyIDExMC4xIDE0Mi4xUzM3LjcgMjU5LjQgNTIuNiAzMTYuOGM3LjMgMjguMiAyLjIgNTUuMi0zLjMgNzQuM2MtLjggMi44LTEuMyA1LjgtMS4zIDguOWMwIDE3LjcgMTQuMyAzMiAzMiAzMmMzLjIgMCA2LjItLjQgOC45LTEuM2MxOS4xLTUuNSA0Ni4xLTEwLjcgNzQuMy0zLjNjNTcuNCAxNC45IDEyNC42LTcuNCAxNzQuNy01Ny41czcyLjQtMTE3LjMgNTcuNS0xNzQuN2MtNy4zLTI4LjItMi4yLTU1LjIgMy4zLTc0LjNjLjgtMi44IDEuMy01LjggMS4zLTguOWMwLTE3LjctMTQuMy0zMi0zMi0zMnptMC00OGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDcuNy0xLjEgMTUuMi0zLjEgMjIuM2MtNC42IDE1LjgtNy4xIDMyLjktMyA0OC45YzIwLjEgNzcuNi0xMC45IDE2MS41LTcwIDIyMC43cy0xNDMuMSA5MC4yLTIyMC43IDcwYy0xNi00LjEtMzMtMS42LTQ4LjkgM2MtNy4xIDItMTQuNiAzLjEtMjIuMyAzLjFjLTQ0LjIgMC04MC0zNS44LTgwLTgwYzAtNy43IDEuMS0xNS4yIDMuMS0yMi4zYzQuNi0xNS44IDcuMS0zMi45IDMtNDguOUMtMTQgMjUxLjMgMTcgMTY3LjMgNzYuMiAxMDguMlMyMTkuMyAxOCAyOTYuOCAzOC4xYzE2IDQuMSAzMyAxLjYgNDguOS0zYzcuMS0yIDE0LjYtMy4xIDIyLjMtMy4xek0yNDYuNyAxNjdjLTUyIDE1LjItOTYuNSA1OS43LTExMS43IDExMS43Yy0zLjcgMTIuNy0xNy4xIDIwLTI5LjggMTYuM3MtMjAtMTcuMS0xNi4zLTI5LjhjMTkuOC02Ny43IDc2LjYtMTI0LjUgMTQ0LjMtMTQ0LjNjMTIuNy0zLjcgMjYuMSAzLjYgMjkuOCAxNi4zcy0zLjYgMjYuMS0xNi4zIDI5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xpZmVSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NS4xIDQxOS4xQzM0OS43IDQ0Ny4yIDMwNC44IDQ2NCAyNTYgNDY0cy05My43LTE2LjgtMTI5LjEtNDQuOWw4MC40LTgwLjRjMTQuMyA4LjQgMzEgMTMuMyA0OC44IDEzLjNzMzQuNS00LjggNDguOC0xMy4zbDgwLjQgODAuNHptNjguMSAuMkM0ODkuOSAzNzQuOSA1MTIgMzE4LjEgNTEyIDI1NnMtMjIuMS0xMTguOS01OC44LTE2My4zTDQ2NSA4MWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDQxOS4zIDU4LjhDMzc0LjkgMjIuMSAzMTguMSAwIDI1NiAwUzEzNy4xIDIyLjEgOTIuNyA1OC44TDgxIDQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45TDU4LjggOTIuN0MyMi4xIDEzNy4xIDAgMTkzLjkgMCAyNTZzMjIuMSAxMTguOSA1OC44IDE2My4zTDQ3IDQzMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDExLjgtMTEuOEMxMzcuMSA0ODkuOSAxOTMuOSA1MTIgMjU2IDUxMnMxMTguOS0yMi4xIDE2My4zLTU4LjhMNDMxIDQ2NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTExLjgtMTEuOHptLTM0LjEtMzQuMWwtODAuNC04MC40YzguNC0xNC4zIDEzLjMtMzEgMTMuMy00OC44cy00LjgtMzQuNS0xMy4zLTQ4LjhsODAuNC04MC40QzQ0Ny4yIDE2Mi4zIDQ2NCAyMDcuMiA0NjQgMjU2cy0xNi44IDkzLjctNDQuOSAxMjkuMXpNMzg1LjEgOTIuOWwtODAuNCA4MC40Yy0xNC4zLTguNC0zMS0xMy4zLTQ4LjgtMTMuM3MtMzQuNSA0LjgtNDguOCAxMy4zTDEyNi45IDkyLjlDMTYyLjMgNjQuOCAyMDcuMiA0OCAyNTYgNDhzOTMuNyAxNi44IDEyOS4xIDQ0Ljl6TTE3My4zIDMwNC44TDkyLjkgMzg1LjFDNjQuOCAzNDkuNyA0OCAzMDQuOCA0OCAyNTZzMTYuOC05My43IDQ0LjktMTI5LjFsODAuNCA4MC40Yy04LjQgMTQuMy0xMy4zIDMxLTEzLjMgNDguOHM0LjggMzQuNSAxMy4zIDQ4Ljh6TTIwOCAyNTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5Ny4yIDI0OC45QzMxMS42IDIyOC4zIDMyMCAyMDMuMiAzMjAgMTc2YzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4UzY0IDEwNS4zIDY0IDE3NmMwIDI3LjIgOC40IDUyLjMgMjIuOCA3Mi45YzMuNyA1LjMgOC4xIDExLjMgMTIuOCAxNy43bDAgMGMxMi45IDE3LjcgMjguMyAzOC45IDM5LjggNTkuOGMxMC40IDE5IDE1LjcgMzguOCAxOC4zIDU3LjVIMTA5Yy0yLjItMTItNS45LTIzLjctMTEuOC0zNC41Yy05LjktMTgtMjIuMi0zNC45LTM0LjUtNTEuOGwwIDAgMCAwYy01LjItNy4xLTEwLjQtMTQuMi0xNS40LTIxLjRDMjcuNiAyNDcuOSAxNiAyMTMuMyAxNiAxNzZDMTYgNzguOCA5NC44IDAgMTkyIDBzMTc2IDc4LjggMTc2IDE3NmMwIDM3LjMtMTEuNiA3MS45LTMxLjQgMTAwLjNjLTUgNy4yLTEwLjIgMTQuMy0xNS40IDIxLjRsMCAwIDAgMGMtMTIuMyAxNi44LTI0LjYgMzMuNy0zNC41IDUxLjhjLTUuOSAxMC44LTkuNiAyMi41LTExLjggMzQuNUgyMjYuNGMyLjYtMTguNyA3LjktMzguNiAxOC4zLTU3LjVjMTEuNS0yMC45IDI2LjktNDIuMSAzOS44LTU5LjhsMCAwIDAgMCAwIDBjNC43LTYuNCA5LTEyLjQgMTIuNy0xNy43ek0xOTIgMTI4Yy0yNi41IDAtNDggMjEuNS00OCA0OGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNnptMCAzODRjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjQxNkgyNzJ2MTZjMCA0NC4yLTM1LjggODAtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjUuNiAzNi4yQzU3Mi4xIDQwLjcgNTc2IDQ4LjEgNTc2IDU2VjM5MmMwIDEwLTYuMiAxOC45LTE1LjUgMjIuNGwtMTY4IDY0Yy01LjIgMi0xMC45IDIuMS0xNi4xIC4zTDE5Mi41IDQxNy41bC0xNjAgNjFjLTcuNCAyLjgtMTUuNyAxLjgtMjIuMi0yLjdTMCA0NjMuOSAwIDQ1NlYxMjBjMC0xMCA2LjEtMTguOSAxNS41LTIyLjRsMTY4LTY0YzUuMi0yIDEwLjktMi4xIDE2LjEtLjNMMzgzLjUgOTQuNWwxNjAtNjFjNy40LTIuOCAxNS43LTEuOCAyMi4yIDIuN3pNNDggMTM2LjVWNDIxLjJsMTIwLTQ1LjdWOTAuOEw0OCAxMzYuNXpNMzYwIDQyMi43VjEzNy4zbC0xNDQtNDhWMzc0LjdsMTQ0IDQ4em00OC0xLjVsMTIwLTQ1LjdWOTAuOEw0MDggMTM2LjVWNDIxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01lc3NhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDM2OGMyNi41IDAgNDggMjEuNSA0OCA0OHYxNmw3Mi41LTU0LjRjOC4zLTYuMiAxOC40LTkuNiAyOC44LTkuNkg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtOC44LTcuMi0xNi0xNi0xNkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2VjM1MmMwIDguOCA3LjIgMTYgMTYgMTZoOTZ6bTQ4IDEyNGwtLjIgLjItNS4xIDMuOC0xNy4xIDEyLjhjLTQuOCAzLjYtMTEuMyA0LjItMTYuOCAxLjVzLTguOC04LjItOC44LTE0LjNWNDc0Ljd2LTYuNFY0Njh2LTRWNDE2SDExMiA2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjRDMCAyOC43IDI4LjcgMCA2NCAwSDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFYzNTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzA5LjNMMjA4IDQ5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTW9uZXlCaWxsMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMTEyYzAgMzUuMy0yOC43IDY0LTY0IDY0VjMzNmMzNS4zIDAgNjQgMjguNyA2NCA2NEg0NjRjMC0zNS4zIDI4LjctNjQgNjQtNjRWMTc2Yy0zNS4zIDAtNjQtMjguNy02NC02NEgxMTJ6TTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFYzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOHpNMTc2IDI1NmExMTIgMTEyIDAgMSAxIDIyNCAwIDExMiAxMTIgMCAxIDEgLTIyNCAwem04MC00OGMwIDguOCA3LjIgMTYgMTYgMTZ2NjRoLThjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMjQgMjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZoLThWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQuNyA5OC43Yy0yMSAzNC4xLTMzLjEgNzQuMy0zMy4xIDExNy4zYzAgOTggNjIuOCAxODEuNCAxNTAuNCAyMTEuN2MtMTIuNCAyLjgtMjUuMyA0LjMtMzguNiA0LjNDMTI2LjYgNDMyIDQ4IDM1My4zIDQ4IDI1NmMwLTY4LjkgMzkuNC0xMjguNCA5Ni44LTE1Ny4zem02Mi4xLTY2QzkxLjEgNDEuMiAwIDEzNy45IDAgMjU2QzAgMzc5LjcgMTAwIDQ4MCAyMjMuNSA0ODBjNDcuOCAwIDkyLTE1IDEyOC40LTQwLjZjMS45LTEuMyAzLjctMi43IDUuNS00YzQuOC0zLjYgOS40LTcuNCAxMy45LTExLjRjMi43LTIuNCA1LjMtNC44IDcuOS03LjNjNS00LjkgNi4zLTEyLjUgMy4xLTE4LjdzLTEwLjEtOS43LTE3LTguNWMtMy43IC42LTcuNCAxLjItMTEuMSAxLjZjLTUgLjUtMTAuMSAuOS0xNS4zIDFjLTEuMiAwLTIuNSAwLTMuNyAwYy0uMSAwLS4yIDAtLjMgMGMtOTYuOC0uMi0xNzUuMi03OC45LTE3NS4yLTE3NmMwLTU0LjggMjQuOS0xMDMuNyA2NC4xLTEzNmMxLS45IDIuMS0xLjcgMy4yLTIuNmM0LTMuMiA4LjItNi4yIDEyLjUtOWMzLjEtMiA2LjMtNCA5LjYtNS44YzYuMS0zLjUgOS4yLTEwLjUgNy43LTE3LjNzLTcuMy0xMS45LTE0LjMtMTIuNWMtMy42LS4zLTcuMS0uNS0xMC43LS42Yy0yLjctLjEtNS41LS4xLTguMi0uMWMtMy4zIDAtNi41IC4xLTkuOCAuMmMtMi4zIC4xLTQuNiAuMi02LjkgLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ05ld3NwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjggODBjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjQwOGMwIDguNC0xLjQgMTYuNS00LjEgMjRINDQwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjEwNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxNjh6TTcyIDQ4MGMtMzkuOCAwLTcyLTMyLjItNzItNzJWMTEyQzAgOTguNyAxMC43IDg4IDI0IDg4czI0IDEwLjcgMjQgMjRWNDA4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTA0YzAtMzkuOCAzMi4yLTcyIDcyLTcySDQ0MGMzOS44IDAgNzIgMzIuMiA3MiA3MlY0MDhjMCAzOS44LTMyLjIgNzItNzIgNzJINzJ6TTE3NiAxMzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjR2ODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxMzZ6bTIwMC0yNGgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTAgODBoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMzc2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0ek0yMDAgMjcySDQwOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTAgODBINDA4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIwMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTm90ZVN0aWNreSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZIMjg4VjM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4MFY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTI4OCA0ODBINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFYzMjB2NS41YzAgMTctNi43IDMzLjMtMTguNyA0NS4zbC05MC41IDkwLjVjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdIMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdPYmplY3RHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAxMTUuOEMzOC4yIDEwNyAzMiA5NC4yIDMyIDgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4YzE0LjIgMCAyNyA2LjIgMzUuOCAxNkg0NjAuMmM4LjgtOS44IDIxLjYtMTYgMzUuOC0xNmMyNi41IDAgNDggMjEuNSA0OCA0OGMwIDE0LjItNi4yIDI3LTE2IDM1LjhWMzk2LjJjOS44IDguOCAxNiAyMS42IDE2IDM1LjhjMCAyNi41LTIxLjUgNDgtNDggNDhjLTE0LjIgMC0yNy02LjItMzUuOC0xNkgxMTUuOGMtOC44IDkuOC0yMS42IDE2LTM1LjggMTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtMTQuMiA2LjItMjcgMTYtMzUuOFYxMTUuOHpNMTI1LjMgOTZjLTQuOCAxMy42LTE1LjYgMjQuNC0yOS4zIDI5LjNWMzg2LjdjMTMuNiA0LjggMjQuNCAxNS42IDI5LjMgMjkuM0g0NTAuN2M0LjgtMTMuNiAxNS42LTI0LjQgMjkuMy0yOS4zVjEyNS4zYy0xMy42LTQuOC0yNC40LTE1LjYtMjkuMy0yOS4zSDEyNS4zem0yLjcgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwek0yNTYgMzIwaDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjIyNGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnT2JqZWN0VW5ncm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OC4yIDY2LjhjLS4xLS44LS4yLTEuNy0uMi0yLjVjMC0uMSAwLS4xIDAtLjJjMC04LjggNy4yLTE2IDE2LTE2Yy45IDAgMS45IC4xIDIuOCAuMkM3NC4zIDQ5LjUgODAgNTYuMSA4MCA2NGMwIDguOC03LjIgMTYtMTYgMTZjLTcuOSAwLTE0LjUtNS43LTE1LjgtMTMuMnpNMCA2NGMwIDI2LjkgMTYuNSA0OS45IDQwIDU5LjNWMjI4LjdDMTYuNSAyMzguMSAwIDI2MS4xIDAgMjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0YzI2LjkgMCA0OS45LTE2LjUgNTkuMy00MEgzMjQuN2M5LjUgMjMuNSAzMi41IDQwIDU5LjMgNDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC0yNi45LTE2LjUtNDkuOS00MC01OS4zVjEyMy4zYzIzLjUtOS41IDQwLTMyLjUgNDAtNTkuM2MwLTM1LjMtMjguNy02NC02NC02NGMtMjYuOSAwLTQ5LjkgMTYuNS01OS4zIDQwSDEyMy4zQzExMy45IDE2LjUgOTAuOSAwIDY0IDBDMjguNyAwIDAgMjguNyAwIDY0em0zNjggMGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwek0zMjQuNyA4OGM2LjUgMTYgMTkuMyAyOC45IDM1LjMgMzUuM1YyMjguN2MtMTYgNi41LTI4LjkgMTkuMy0zNS4zIDM1LjNIMTIzLjNjLTYuNS0xNi0xOS4zLTI4LjktMzUuMy0zNS4zVjEyMy4zYzE2LTYuNSAyOC45LTE5LjMgMzUuMy0zNS4zSDMyNC43ek0zODQgMjcyYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpNODAgMjg4YzAgNy45LTUuNyAxNC41LTEzLjIgMTUuOGMtLjggLjEtMS43IC4yLTIuNSAuMmwtLjIgMGMtOC44IDAtMTYtNy4yLTE2LTE2YzAtLjkgLjEtMS45IC4yLTIuOEM0OS41IDI3Ny43IDU2LjEgMjcyIDY0IDI3MmM4LjggMCAxNiA3LjIgMTYgMTZ6bTM5MS4zLTQwaDQ1LjRjNi41IDE2IDE5LjMgMjguOSAzNS4zIDM1LjNWMzg4LjdjLTE2IDYuNS0yOC45IDE5LjMtMzUuMyAzNS4zSDMxNS4zYy02LjUtMTYtMTkuMy0yOC45LTM1LjMtMzUuM1YzNTJIMjMydjM2LjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuM2MwIDM1LjMgMjguNyA2NCA2NCA2NGMyNi45IDAgNDkuOS0xNi41IDU5LjMtNDBINTE2LjdjOS41IDIzLjUgMzIuNSA0MCA1OS4zIDQwYzM1LjMgMCA2NC0yOC43IDY0LTY0YzAtMjYuOS0xNi41LTQ5LjktNDAtNTkuM1YyODMuM2MyMy41LTkuNSA0MC0zMi41IDQwLTU5LjNjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTI2LjkgMC00OS45IDE2LjUtNTkuMyA0MEg0NDh2MTYuNGM5LjggOC44IDE3LjggMTkuNSAyMy4zIDMxLjZ6bTg4LjktMjYuN2ExNiAxNiAwIDEgMSAzMS41IDUuNSAxNiAxNiAwIDEgMSAtMzEuNS01LjV6TTI3MS44IDQ1MC43YTE2IDE2IDAgMSAxIC0zMS41LTUuNSAxNiAxNiAwIDEgMSAzMS41IDUuNXptMzAxLjUgMTNjLTcuNS0xLjMtMTMuMi03LjktMTMuMi0xNS44YzAtOC44IDcuMi0xNiAxNi0xNmM3LjkgMCAxNC41IDUuNyAxNS44IDEzLjJsMCAuMWMuMSAuOSAuMiAxLjggLjIgMi43YzAgOC44LTcuMiAxNi0xNiAxNmMtLjkgMC0xLjktLjEtMi44LS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQYXBlclBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjEgMjYwLjJjLTIyLjYgMTIuOS0yMC41IDQ3LjMgMy42IDU3LjNMMTYwIDM3NlY0NzkuM2MwIDE4LjEgMTQuNiAzMi43IDMyLjcgMzIuN2M5LjcgMCAxOC45LTQuMyAyNS4xLTExLjhsNjItNzQuMyAxMjMuOSA1MS42YzE4LjkgNy45IDQwLjgtNC41IDQzLjktMjQuN2w2NC00MTZjMS45LTEyLjEtMy40LTI0LjMtMTMuNS0zMS4ycy0yMy4zLTcuNS0zNC0xLjRsLTQ0OCAyNTZ6bTUyLjEgMjUuNUw0MDkuNyA5MC42IDE5MC4xIDMzNmwxLjIgMUw2OC4yIDI4NS43ek00MDMuMyA0MjUuNEwyMzYuNyAzNTUuOSA0NTAuOCAxMTYuNiA0MDMuMyA0MjUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUGFzdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA0LjYgNDhINjRDMjguNyA0OCAwIDc2LjcgMCAxMTJWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2VjQwMEg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZIODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzIuNEMyMDIgMTA4LjQgMjI3LjYgOTYgMjU2IDk2aDYyYy03LjEtMjcuNi0zMi4yLTQ4LTYyLTQ4SDIxNS40QzIxMS42IDIwLjkgMTg4LjIgMCAxNjAgMHMtNTEuNiAyMC45LTU1LjQgNDh6TTE0NCA1NmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwek00NDggNDY0SDI1NmMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MmMwLTguOCA3LjItMTYgMTYtMTZsMTQwLjEgMEw0NjQgMjQzLjlWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNnpNMjU2IDUxMkg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjQzLjljMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOWwtNjcuOS02Ny45Yy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUgyNTZjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUGVuVG9TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQxIDU4LjlMNDUzLjEgNzFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMNDI0IDEzNC4xIDM3Ny45IDg4IDQwNyA1OC45YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwek0yMDkuOCAyNTYuMkwzNDQgMTIxLjkgMzkwLjEgMTY4IDI1NS44IDMwMi4yYy0yLjkgMi45LTYuNSA1LTEwLjQgNi4xbC01OC41IDE2LjcgMTYuNy01OC41YzEuMS0zLjkgMy4yLTcuNSA2LjEtMTAuNHpNMzczLjEgMjVMMTc1LjggMjIyLjJjLTguNyA4LjctMTUgMTkuNC0xOC4zIDMxLjFsLTI4LjYgMTAwYy0yLjQgOC40LS4xIDE3LjQgNi4xIDIzLjZzMTUuMiA4LjUgMjMuNiA2LjFsMTAwLTI4LjZjMTEuOC0zLjQgMjIuNS05LjcgMzEuMS0xOC4zTDQ4NyAxMzguOWMyOC4xLTI4LjEgMjguMS03My43IDAtMTAxLjhMNDc0LjkgMjVDNDQ2LjgtMy4xIDQwMS4yLTMuMSAzNzMuMSAyNXpNODggNjRDMzkuNCA2NCAwIDEwMy40IDAgMTUyVjQyNGMwIDQ4LjYgMzkuNCA4OCA4OCA4OEgzNjBjNDguNiAwIDg4LTM5LjQgODgtODhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjQyNGMwIDIyLjEtMTcuOSA0MC00MCA0MEg4OGMtMjIuMSAwLTQwLTE3LjktNDAtNDBWMTUyYzAtMjIuMSAxNy45LTQwIDQwLTQwSDIwMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUmVjdGFuZ2xlTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZINTEyYzguOCAwIDE2LTcuMiAxNi0xNlY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTk2IDY0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTEwNCAwYzAtMTMuMyAxMC43LTI0IDI0LTI0SDQ0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0SDQ0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0SDQ0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tNzItNjRhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek05NiAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUmVjdGFuZ2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNlY0MTZjMCA4LjggNy4yIDE2IDE2IDE2SDQ0OGM4LjggMCAxNi03LjIgMTYtMTZWOTZjMC04LjgtNy4yLTE2LTE2LTE2SDY0ek0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em0xNzUgNzljOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1JlZ2lzdGVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjAgMTUyVjI2NHY5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI4OGg2MC45bDM3LjIgODEuOWM1LjUgMTIuMSAxOS43IDE3LjQgMzEuOCAxMS45czE3LjQtMTkuNyAxMS45LTMxLjhMMzE1LjcgMjc1YzIxLjgtMTQuMyAzNi4zLTM5IDM2LjMtNjdjMC00NC4yLTM1LjgtODAtODAtODBIMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptNDggODhWMTc2aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU2hhcmVGcm9tU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAyNTUuNFYyNDAgMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgzNTIgMzM2IDI4OS41Yy01MC45IDAtOTMuOSAzMy41LTEwOC4zIDc5LjZjLTMuMy05LjQtNS4yLTE5LjgtNS4yLTMxLjZjMC02MS45IDUwLjEtMTEyIDExMi0xMTJoNDggMTYgMzJjOC44IDAgMTYtNy4yIDE2LTE2VjgwIDY0LjZMNTA2IDE2MCA0MDAgMjU1LjR6TTMzNiAyNDBoMTZ2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMy43YzcuOSAwIDE1LjUtMi45IDIxLjQtOC4ybDEzOS0xMjUuMWM3LjYtNi44IDExLjktMTYuNSAxMS45LTI2LjdzLTQuMy0xOS45LTExLjktMjYuN0w0MDkuOSA4LjlDNDAzLjUgMy4yIDM5NS4zIDAgMzg2LjcgMEMzNjcuNSAwIDM1MiAxNS41IDM1MiAzNC43VjgwSDMzNiAzMDQgMjg4Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MGMwIDYwLjQgMzQuNiA5OS4xIDYzLjkgMTIwLjljNS45IDQuNCAxMS41IDguMSAxNi43IDExLjJjNC40IDIuNyA4LjUgNC45IDExLjkgNi42YzMuNCAxLjcgNi4yIDMgOC4yIDMuOWMyLjIgMSA0LjYgMS40IDcuMSAxLjRoMi41YzkuOCAwIDE3LjgtOCAxNy44LTE3LjhjMC03LjgtNS4zLTE0LjctMTEuNi0xOS41bDAgMGMtLjQtLjMtLjctLjUtMS4xLS44Yy0xLjctMS4xLTMuNC0yLjUtNS00LjFjLS44LS44LTEuNy0xLjYtMi41LTIuNnMtMS42LTEuOS0yLjQtMi45Yy0xLjgtMi41LTMuNS01LjMtNS04LjVjLTIuNi02LTQuMy0xMy4zLTQuMy0yMi40YzAtMzYuMSAyOS4zLTY1LjUgNjUuNS02NS41SDMwNGgzMnpNNzIgMzJDMzIuMiAzMiAwIDY0LjIgMCAxMDRWNDQwYzAgMzkuOCAzMi4yIDcyIDcyIDcySDQwOGMzOS44IDAgNzItMzIuMiA3Mi03MlYzNzZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRINzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjEwNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg2NGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjcwLjFsMjMtMjNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01NyA1N3Y3Ni41bDY2LjItMzguMiAyMC45LTc3LjhjMy40LTEyLjggMTYuNi0yMC40IDI5LjQtMTdzMjAuNCAxNi42IDE3IDI5LjRMMzczIDE0Mi4ybDM3LjEtMjEuNGMxMS41LTYuNiAyNi4yLTIuNyAzMi44IDguOHMyLjcgMjYuMi04LjggMzIuOEwzOTcgMTgzLjhsMzEuNSA4LjRjMTIuOCAzLjQgMjAuNCAxNi42IDE3IDI5LjRzLTE2LjYgMjAuNC0yOS40IDE3bC03Ny44LTIwLjlMMjcyIDI1Nmw2Ni4yIDM4LjIgNzcuOC0yMC45YzEyLjgtMy40IDI2IDQuMiAyOS40IDE3cy00LjIgMjYtMTcgMjkuNEwzOTcgMzI4LjJsMzcuMSAyMS40YzExLjUgNi42IDE1LjQgMjEuMyA4LjggMzIuOHMtMjEuMyAxNS40LTMyLjggOC44TDM3MyAzNjkuOGw4LjQgMzEuNWMzLjQgMTIuOC00LjIgMjYtMTcgMjkuNHMtMjYtNC4yLTI5LjQtMTdsLTIwLjktNzcuOEwyNDggMjk3LjZ2NzYuNWw1NyA1N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0yMy0yM1Y0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWNDQxLjlsLTIzIDIzYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU3LTU3VjI5Ny42bC02Ni4yIDM4LjItMjAuOSA3Ny44Yy0zLjQgMTIuOC0xNi42IDIwLjQtMjkuNCAxN3MtMjAuNC0xNi42LTE3LTI5LjRMNzUgMzY5LjggMzcuOSAzOTEuMmMtMTEuNSA2LjYtMjYuMiAyLjctMzIuOC04LjhzLTIuNy0yNi4yIDguOC0zMi44TDUxIDMyOC4ybC0zMS41LTguNGMtMTIuOC0zLjQtMjAuNC0xNi42LTE3LTI5LjRzMTYuNi0yMC40IDI5LjQtMTdsNzcuOCAyMC45TDE3NiAyNTZsLTY2LjItMzguMkwzMS45IDIzOC42Yy0xMi44IDMuNC0yNi00LjItMjkuNC0xN3M0LjItMjYgMTctMjkuNEw1MSAxODMuOCAxMy45IDE2Mi40Yy0xMS41LTYuNi0xNS40LTIxLjMtOC44LTMyLjhzMjEuMy0xNS40IDMyLjgtOC44TDc1IDE0Mi4ybC04LjQtMzEuNWMtMy40LTEyLjggNC4yLTI2IDE3LTI5LjRzMjYgNC4yIDI5LjQgMTdsMjAuOSA3Ny44TDIwMCAyMTQuNFYxMzcuOUwxNDMgODFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMyAyM1YyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlQ2FyZXREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA0MzJjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzIwYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzIwYzAgOC44IDcuMiAxNiAxNiAxNmwzMjAgMHptNjQtMTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwek0yMjQgMzUyYy02LjcgMC0xMy0yLjgtMTcuNi03LjdsLTEwNC0xMTJjLTYuNS03LTguMi0xNy4yLTQuNC0yNS45czEyLjUtMTQuNCAyMi0xNC40bDIwOCAwYzkuNSAwIDE4LjIgNS43IDIyIDE0LjRzMi4xIDE4LjktNC40IDI1LjlsLTEwNCAxMTJjLTQuNSA0LjktMTAuOSA3LjctMTcuNiA3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCA0MTZjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyMGMwLTguOC03LjItMTYtMTYtMTZMNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyMHptMTYgNjRjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwem02NC0yMjRjMC02LjcgMi44LTEzIDcuNy0xNy42bDExMi0xMDRjNy02LjUgMTcuMi04LjIgMjUuOS00LjRzMTQuNCAxMi41IDE0LjQgMjJsMCAyMDhjMCA5LjUtNS43IDE4LjItMTQuNCAyMnMtMTguOSAyLjEtMjUuOS00LjRsLTExMi0xMDRjLTQuOS00LjUtNy43LTEwLjktNy43LTE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNhcmV0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDk2YzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzIwYzAgOC44IDcuMiAxNiAxNiAxNmwzMjAgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMjB6TTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDB6TTMyMCAyNTZjMCA2LjctMi44IDEzLTcuNyAxNy42bC0xMTIgMTA0Yy03IDYuNS0xNy4yIDguMi0yNS45IDQuNHMtMTQuNC0xMi41LTE0LjQtMjJsMC0yMDhjMC05LjUgNS43LTE4LjIgMTQuNC0yMnMxOC45LTIuMSAyNS45IDQuNGwxMTIgMTA0YzQuOSA0LjUgNy43IDEwLjkgNy43IDE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNhcmV0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyMGMwIDguOCA3LjIgMTYgMTYgMTZsMzIwIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzIwYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTIyNCA2NGM2LjcgMCAxMyAyLjggMTcuNiA3LjdsMTA0IDExMmM2LjUgNyA4LjIgMTcuMiA0LjQgMjUuOXMtMTIuNSAxNC40LTIyIDE0LjRsLTIwOCAwYy05LjUgMC0xOC4yLTUuNy0yMi0xNC40cy0yLjEtMTguOSA0LjQtMjUuOWwxMDQtMTEyYzQuNS00LjkgMTAuOS03LjcgMTcuNi03Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZWNDE2YzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2Vjk2YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzODRjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnpNMzM3IDIwOUwyMDkgMzM3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0N0wzMDMgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNDhWNDY0SDQ4VjQ4SDQ2NHpNNDggMEgwVjQ4IDQ2NHY0OEg0OCA0NjRoNDhWNDY0IDQ4IDBINDY0IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTcXVhcmVNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTE1MiAyMzJIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTIwMCAzNDRWMjgwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg2NFYxNjhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY2NGg2NGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNDh2NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgODBjOC44IDAgMTYgNy4yIDE2IDE2VjQxNmMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlY5NmMwLTguOCA3LjItMTYgMTYtMTZIMzg0ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N0YXJIYWxmU3Ryb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOS41IDEzLjVDMzA1LjUgNS4yIDI5Ny4xIDAgMjg3LjkgMHMtMTcuNiA1LjItMjEuNiAxMy41TDE5Ny43IDE1NC44IDQ0LjUgMTc3LjVjLTkgMS4zLTE2LjUgNy42LTE5LjMgMTYuM3MtLjUgMTguMSA1LjkgMjQuNUwxNDIuMiAzMjguNCAxMTYgNDgzLjljLTEuNSA5IDIuMiAxOC4xIDkuNyAyMy41czE3LjMgNiAyNS4zIDEuN2wxMzctNzMuMiAxMzcgNzMuMmM4LjEgNC4zIDE3LjkgMy43IDI1LjMtMS43czExLjItMTQuNSA5LjctMjMuNUw0MzMuNiAzMjguNCA1NDQuOCAyMTguMmM2LjUtNi40IDguNy0xNS45IDUuOS0yNC41cy0xMC4zLTE0LjktMTkuMy0xNi4zTDM3OC4xIDE1NC44IDMwOS41IDEzLjV6TTI4OCAzODQuN1Y3OS4xbDUyLjUgMTA4LjFjMy41IDcuMSAxMC4yIDEyLjEgMTguMSAxMy4zbDExOC4zIDE3LjVMMzkxIDMwM2MtNS41IDUuNS04LjEgMTMuMy02LjggMjFsMjAuMiAxMTkuNkwyOTkuMiAzODcuNWMtMy41LTEuOS03LjQtMi44LTExLjItMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTdGFySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTMuMyAuNmMxMC45IDIuNSAxOC42IDEyLjIgMTguNiAyMy40VjQwOC43YzAgOC45LTQuOSAxNy0xMi43IDIxLjJMMTUxIDUwOS4xYy04LjEgNC4zLTE3LjkgMy43LTI1LjMtMS43cy0xMS4yLTE0LjUtOS43LTIzLjVsMjYuMi0xNTUuNkwzMS4xIDIxOC4zYy02LjUtNi40LTguNy0xNS45LTUuOS0yNC41czEwLjMtMTQuOSAxOS4zLTE2LjNsMTUzLjItMjIuNkwyNjYuMyAxMy41YzQuOS0xMC4xIDE2LjEtMTUuNCAyNy0xMi45ek0yNjMuOSAxMjguNGwtMjguNiA1OC44Yy0zLjUgNy4xLTEwLjIgMTIuMS0xOC4xIDEzLjNMOTkgMjE3LjkgMTg0LjkgMzAzYzUuNSA1LjUgOC4xIDEzLjMgNi44IDIxTDE3MS40IDQ0My43bDkyLjUtNDkuNFYxMjguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODcuOSAwYzkuMiAwIDE3LjYgNS4yIDIxLjYgMTMuNWw2OC42IDE0MS4zIDE1My4yIDIyLjZjOSAxLjMgMTYuNSA3LjYgMTkuMyAxNi4zcy41IDE4LjEtNS45IDI0LjVMNDMzLjYgMzI4LjRsMjYuMiAxNTUuNmMxLjUgOS0yLjIgMTguMS05LjcgMjMuNXMtMTcuMyA2LTI1LjMgMS43bC0xMzctNzMuMkwxNTEgNTA5LjFjLTguMSA0LjMtMTcuOSAzLjctMjUuMy0xLjdzLTExLjItMTQuNS05LjctMjMuNWwyNi4yLTE1NS42TDMxLjEgMjE4LjJjLTYuNS02LjQtOC43LTE1LjktNS45LTI0LjVzMTAuMy0xNC45IDE5LjMtMTYuM2wxNTMuMi0yMi42TDI2Ni4zIDEzLjVDMjcwLjQgNS4yIDI3OC43IDAgMjg3LjkgMHptMCA3OUwyMzUuNCAxODcuMmMtMy41IDcuMS0xMC4yIDEyLjEtMTguMSAxMy4zTDk5IDIxNy45IDE4NC45IDMwM2M1LjUgNS41IDguMSAxMy4zIDYuOCAyMUwxNzEuNCA0NDMuN2wxMDUuMi01Ni4yYzcuMS0zLjggMTUuNi0zLjggMjIuNiAwbDEwNS4yIDU2LjJMMzg0LjIgMzI0LjFjLTEuMy03LjcgMS4yLTE1LjUgNi44LTIxbDg1LjktODUuMUwzNTguNiAyMDAuNWMtNy44LTEuMi0xNC42LTYuMS0xOC4xLTEzLjNMMjg3LjkgNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzUuNyAxOS43Yy0xLjUtOC02LjktMTQuNy0xNC40LTE3LjhzLTE2LjEtMi4yLTIyLjggMi40TDI1NiA2MS4xIDE3My41IDQuMmMtNi43LTQuNi0xNS4zLTUuNS0yMi44LTIuNHMtMTIuOSA5LjgtMTQuNCAxNy44bC0xOC4xIDk4LjVMMTkuNyAxMzYuM2MtOCAxLjUtMTQuNyA2LjktMTcuOCAxNC40cy0yLjIgMTYuMSAyLjQgMjIuOEw2MS4xIDI1NiA0LjIgMzM4LjVjLTQuNiA2LjctNS41IDE1LjMtMi40IDIyLjhzOS44IDEzIDE3LjggMTQuNGw5OC41IDE4LjEgMTguMSA5OC41YzEuNSA4IDYuOSAxNC43IDE0LjQgMTcuOHMxNi4xIDIuMiAyMi44LTIuNEwyNTYgNDUwLjlsODIuNSA1Ni45YzYuNyA0LjYgMTUuMyA1LjUgMjIuOCAyLjRzMTIuOS05LjggMTQuNC0xNy44bDE4LjEtOTguNSA5OC41LTE4LjFjOC0xLjUgMTQuNy02LjkgMTcuOC0xNC40czIuMi0xNi4xLTIuNC0yMi44TDQ1MC45IDI1Nmw1Ni45LTgyLjVjNC42LTYuNyA1LjUtMTUuMyAyLjQtMjIuOHMtOS44LTEyLjktMTcuOC0xNC40bC05OC41LTE4LjFMMzc1LjcgMTkuN3pNMjY5LjYgMTEwbDY1LjYtNDUuMiAxNC40IDc4LjNjMS44IDkuOCA5LjUgMTcuNSAxOS4zIDE5LjNsNzguMyAxNC40TDQwMiAyNDIuNGMtNS43IDguMi01LjcgMTkgMCAyNy4ybDQ1LjIgNjUuNi03OC4zIDE0LjRjLTkuOCAxLjgtMTcuNSA5LjUtMTkuMyAxOS4zbC0xNC40IDc4LjNMMjY5LjYgNDAyYy04LjItNS43LTE5LTUuNy0yNy4yIDBsLTY1LjYgNDUuMi0xNC40LTc4LjNjLTEuOC05LjgtOS41LTE3LjUtMTkuMy0xOS4zTDY0LjggMzM1LjIgMTEwIDI2OS42YzUuNy04LjIgNS43LTE5IDAtMjcuMkw2NC44IDE3Ni44bDc4LjMtMTQuNGM5LjgtMS44IDE3LjUtOS41IDE5LjMtMTkuM2wxNC40LTc4LjNMMjQyLjQgMTEwYzguMiA1LjcgMTkgNS43IDI3LjIgMHpNMjU2IDM2OGExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6TTE5MiAyNTZhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy44IDQ3Ny4yYy0zOC4yIDEwLjktNzguMS0xMS4yLTg5LTQ5LjRsLTUuNy0yMGMtMy43LTEzLTEwLjQtMjUtMTkuNS0zNWwtNTEuMy01Ni40Yy04LjktOS44LTguMi0yNSAxLjYtMzMuOXMyNS04LjIgMzMuOSAxLjZsNTEuMyA1Ni40YzE0LjEgMTUuNSAyNC40IDM0IDMwLjEgNTQuMWw1LjcgMjBjMy42IDEyLjcgMTYuOSAyMC4xIDI5LjcgMTYuNXMyMC4xLTE2LjkgMTYuNS0yOS43bC01LjctMjBjLTUuNy0xOS45LTE0LjctMzguNy0yNi42LTU1LjVjLTUuMi03LjMtNS44LTE2LjktMS43LTI0LjlzMTIuMy0xMyAyMS4zLTEzTDQ0OCAyODhjOC44IDAgMTYtNy4yIDE2LTE2YzAtNi44LTQuMy0xMi43LTEwLjQtMTVjLTcuNC0yLjgtMTMtOS0xNC45LTE2LjdzLjEtMTUuOCA1LjMtMjEuN2MyLjUtMi44IDQtNi41IDQtMTAuNmMwLTcuOC01LjYtMTQuMy0xMy0xNS43Yy04LjItMS42LTE1LjEtNy4zLTE4LTE1LjJzLTEuNi0xNi43IDMuNi0yMy4zYzIuMS0yLjcgMy40LTYuMSAzLjQtOS45YzAtNi43LTQuMi0xMi42LTEwLjItMTQuOWMtMTEuNS00LjUtMTcuNy0xNi45LTE0LjQtMjguOGMuNC0xLjMgLjYtMi44IC42LTQuM2MwLTguOC03LjItMTYtMTYtMTZIMjg2LjVjLTEyLjYgMC0yNSAzLjctMzUuNSAxMC43bC02MS43IDQxLjFjLTExIDcuNC0yNS45IDQuNC0zMy4zLTYuN3MtNC40LTI1LjkgNi43LTMzLjNsNjEuNy00MS4xYzE4LjQtMTIuMyA0MC0xOC44IDYyLjEtMTguOEgzODRjMzQuNyAwIDYyLjkgMjcuNiA2NCA2MmMxNC42IDExLjcgMjQgMjkuNyAyNCA1MGMwIDQuNS0uNSA4LjgtMS4zIDEzYzE1LjQgMTEuNyAyNS4zIDMwLjIgMjUuMyA1MWMwIDYuNS0xIDEyLjgtMi44IDE4LjdDNTA0LjggMjM4LjMgNTEyIDI1NC4zIDUxMiAyNzJjMCAzNS4zLTI4LjYgNjQtNjQgNjRsLTkyLjMgMGM0LjcgMTAuNCA4LjcgMjEuMiAxMS44IDMyLjJsNS43IDIwYzEwLjkgMzguMi0xMS4yIDc4LjEtNDkuNCA4OXpNMzIgMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJIOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjMuOCAzNC44Yy0zOC4yLTEwLjktNzguMSAxMS4yLTg5IDQ5LjRsLTUuNyAyMGMtMy43IDEzLTEwLjQgMjUtMTkuNSAzNWwtNTEuMyA1Ni40Yy04LjkgOS44LTguMiAyNSAxLjYgMzMuOXMyNSA4LjIgMzMuOS0xLjZsNTEuMy01Ni40YzE0LjEtMTUuNSAyNC40LTM0IDMwLjEtNTQuMWw1LjctMjBjMy42LTEyLjcgMTYuOS0yMC4xIDI5LjctMTYuNXMyMC4xIDE2LjkgMTYuNSAyOS43bC01LjcgMjBjLTUuNyAxOS45LTE0LjcgMzguNy0yNi42IDU1LjVjLTUuMiA3LjMtNS44IDE2LjktMS43IDI0LjlzMTIuMyAxMyAyMS4zIDEzTDQ0OCAyMjRjOC44IDAgMTYgNy4yIDE2IDE2YzAgNi44LTQuMyAxMi43LTEwLjQgMTVjLTcuNCAyLjgtMTMgOS0xNC45IDE2LjdzLjEgMTUuOCA1LjMgMjEuN2MyLjUgMi44IDQgNi41IDQgMTAuNmMwIDcuOC01LjYgMTQuMy0xMyAxNS43Yy04LjIgMS42LTE1LjEgNy4zLTE4IDE1LjJzLTEuNiAxNi43IDMuNiAyMy4zYzIuMSAyLjcgMy40IDYuMSAzLjQgOS45YzAgNi43LTQuMiAxMi42LTEwLjIgMTQuOWMtMTEuNSA0LjUtMTcuNyAxNi45LTE0LjQgMjguOGMuNCAxLjMgLjYgMi44IC42IDQuM2MwIDguOC03LjIgMTYtMTYgMTZIMjg2LjVjLTEyLjYgMC0yNS0zLjctMzUuNS0xMC43bC02MS43LTQxLjFjLTExLTcuNC0yNS45LTQuNC0zMy4zIDYuN3MtNC40IDI1LjkgNi43IDMzLjNsNjEuNyA0MS4xYzE4LjQgMTIuMyA0MCAxOC44IDYyLjEgMTguOEgzODRjMzQuNyAwIDYyLjktMjcuNiA2NC02MmMxNC42LTExLjcgMjQtMjkuNyAyNC01MGMwLTQuNS0uNS04LjgtMS4zLTEzYzE1LjQtMTEuNyAyNS4zLTMwLjIgMjUuMy01MWMwLTYuNS0xLTEyLjgtMi44LTE4LjdDNTA0LjggMjczLjcgNTEyIDI1Ny43IDUxMiAyNDBjMC0zNS4zLTI4LjYtNjQtNjQtNjRsLTkyLjMgMGM0LjctMTAuNCA4LjctMjEuMiAxMS44LTMyLjJsNS43LTIwYzEwLjktMzguMi0xMS4yLTc4LjEtNDkuNC04OXpNMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJIOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUcmFzaENhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzAuNSA1MS42TDE1MS41IDgwaDE0NWwtMTktMjguNGMtMS41LTIuMi00LTMuNi02LjctMy42SDE3Ny4xYy0yLjcgMC01LjIgMS4zLTYuNyAzLjZ6bTE0Ny0yNi42TDM1NC4yIDgwSDM2OGg0OCA4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0aC04VjQzMmMwIDQ0LjItMzUuOCA4MC04MCA4MEgxMTJjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjEyOEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRTMTAuNyA4MCAyNCA4MGg4SDgwIDkzLjhsMzYuNy01NS4xQzE0MC45IDkuNCAxNTguNCAwIDE3Ny4xIDBoOTMuN2MxOC43IDAgMzYuMiA5LjQgNDYuNiAyNC45ek04MCAxMjhWNDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDMzNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjhIODB6bTgwIDY0VjQwMGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptODAgMFY0MDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMTkyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTgwIDBWNDAwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE5MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAxMjhhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNNDkuMyA0NjRIMzk4LjdjLTguOS02My4zLTYzLjMtMTEyLTEyOS0xMTJIMTc4LjNjLTY1LjcgMC0xMjAuMSA0OC43LTEyOSAxMTJ6TTAgNDgyLjNDMCAzODMuOCA3OS44IDMwNCAxNzguMyAzMDRoOTEuNEMzNjguMiAzMDQgNDQ4IDM4My44IDQ0OCA0ODIuM2MwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0gyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnV2luZG93TWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjMgODkuNUMuMSA5MS42IDAgOTMuOCAwIDk2VjIyNCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjI0IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0Yy0yLjIgMC00LjQgLjEtNi41IC4zYy05LjIgLjktMTcuOCAzLjgtMjUuNSA4LjJDMjEuOCA0Ni41IDEzLjQgNTUuMSA3LjcgNjUuNWMtMy45IDcuMy02LjUgMTUuNC03LjQgMjR6TTQ4IDIyNEg0NjRsMCAxOTJjMCA4LjgtNy4yIDE2LTE2IDE2TDY0IDQzMmMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dNaW5pbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA0MzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA0OEgyMDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjk2SDEyOFY4MGMwLTQ0LjIgMzUuOC04MCA4MC04MEg0MzJjNDQuMiAwIDgwIDM1LjggODAgODBWMzA0YzAgNDQuMi0zNS44IDgwLTgwIDgwSDQxNlYzMzZoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWODBjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQ4IDQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzIwYzguOCAwIDE2LTcuMiAxNi0xNlYyNTZINDhWNDQ4ek02NCAxMjhIMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG4iLCJjb25zdCBjb3B5VG9DbGlwYm9hcmQgPSAodmFsdWVUb0NvcHksIHNldElzSnVzdENvcGllZCkgPT4ge1xuICBzZXRJc0p1c3RDb3BpZWQodHJ1ZSk7XG4gIG5hdmlnYXRvcj8uY2xpcGJvYXJkPy53cml0ZVRleHQodmFsdWVUb0NvcHkpLnRoZW4oKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKFwiQ29weSBTdWNjZXNzZnVsbFwiKTtcbiAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBDb3B5IHRleHQ6IFwiLCBlcnJvcik7XG4gICAgc2V0SXNKdXN0Q29waWVkKGZhbHNlKTtcbiAgfSk7XG4gIHNldFRpbWVvdXQoKCkgPT4gc2V0SXNKdXN0Q29waWVkKGZhbHNlKSwgNGUzKTtcbn07XG5cbmV4cG9ydCB7IGNvcHlUb0NsaXBib2FyZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZhQ2hlY2ssIEZhQ2xpcGJvYXJkTGlzdCB9IGZyb20gJ3JlYWN0LWljb25zL2ZhNic7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBjb3B5VG9DbGlwYm9hcmQgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcblxuY29uc3QgQ2xpcGJvYXJkV2l0aEljb24gPSBmb3J3YXJkUmVmKFxuICAoeyB2YWx1ZVRvQ29weSwgaWNvbjogSWNvbiA9IEZhQ2xpcGJvYXJkTGlzdCwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIGNsYXNzTmFtZSwgLi4ucmVzdCB9LCByZWYpID0+IHtcbiAgICBjb25zdCBbaXNKdXN0Q29waWVkLCBzZXRJc0p1c3RDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuY2xpcGJvYXJkLndpdGhJY29uLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImJ1dHRvblwiLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgb25DbGljazogKCkgPT4gY29weVRvQ2xpcGJvYXJkKHZhbHVlVG9Db3B5LCBzZXRJc0p1c3RDb3BpZWQpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgICByZWYsXG4gICAgICAgIGNoaWxkcmVuOiBpc0p1c3RDb3BpZWQgPyAvKiBAX19QVVJFX18gKi8ganN4KEZhQ2hlY2ssIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24uc3VjY2Vzc0ljb24gfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24uZGVmYXVsdEljb24gfSlcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuXG5leHBvcnQgeyBDbGlwYm9hcmRXaXRoSWNvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2xpcGJvYXJkV2l0aEljb24ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBGYUNoZWNrLCBGYUNsaXBib2FyZExpc3QgfSBmcm9tICdyZWFjdC1pY29ucy9mYTYnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgY29weVRvQ2xpcGJvYXJkIH0gZnJvbSAnLi9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IENsaXBib2FyZFdpdGhJY29uVGV4dCA9IGZvcndhcmRSZWYoXG4gICh7IHZhbHVlVG9Db3B5LCBpY29uOiBJY29uID0gRmFDbGlwYm9hcmRMaXN0LCBsYWJlbCA9IFwiQ29weVwiLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgY2xhc3NOYW1lLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IFtpc0p1c3RDb3BpZWQsIHNldElzSnVzdENvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5jbGlwYm9hcmQud2l0aEljb25UZXh0LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImJ1dHRvblwiLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgb25DbGljazogKCkgPT4gY29weVRvQ2xpcGJvYXJkKHZhbHVlVG9Db3B5LCBzZXRJc0p1c3RDb3BpZWQpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgICByZWYsXG4gICAgICAgIGNoaWxkcmVuOiBpc0p1c3RDb3BpZWQgPyAvKiBAX19QVVJFX18gKi8ganN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChGYUNoZWNrLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pY29uLnN1Y2Nlc3NJY29uIH0pLFxuICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5sYWJlbC5zdWNjZXNzVGV4dCwgY2hpbGRyZW46IFwiQ29waWVkXCIgfSlcbiAgICAgICAgXSB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGFiZWwuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24uZGVmYXVsdEljb24gfSksXG4gICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLmRlZmF1bHRUZXh0LCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgXSB9KVxuICAgICAgfVxuICAgICk7XG4gIH1cbik7XG5cbmV4cG9ydCB7IENsaXBib2FyZFdpdGhJY29uVGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2xpcGJvYXJkV2l0aEljb25UZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJy4uL1Rvb2x0aXAvVG9vbHRpcC5tanMnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkV2l0aEljb24gfSBmcm9tICcuL0NsaXBib2FyZFdpdGhJY29uLm1qcyc7XG5pbXBvcnQgeyBDbGlwYm9hcmRXaXRoSWNvblRleHQgfSBmcm9tICcuL0NsaXBib2FyZFdpdGhJY29uVGV4dC5tanMnO1xuaW1wb3J0IHsgY29weVRvQ2xpcGJvYXJkIH0gZnJvbSAnLi9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IENsaXBib2FyZENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gICh7IGNsYXNzTmFtZSwgdmFsdWVUb0NvcHksIGxhYmVsLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucmVzdCB9LCByZWYpID0+IHtcbiAgICBjb25zdCBbaXNKdXN0Q29waWVkLCBzZXRJc0p1c3RDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuY2xpcGJvYXJkLmJ1dHRvbiwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFRvb2x0aXAsIHsgY29udGVudDogaXNKdXN0Q29waWVkID8gXCJDb3BpZWRcIiA6IFwiQ29weSB0byBjbGlwYm9hcmRcIiwgY2xhc3NOYW1lOiBcIlsmXypdOmN1cnNvci1wb2ludGVyXCIsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJidXR0b25cIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IGNvcHlUb0NsaXBib2FyZCh2YWx1ZVRvQ29weSwgc2V0SXNKdXN0Q29waWVkKSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgcmVmLFxuICAgICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgIH1cbiAgICApIH0pO1xuICB9XG4pO1xuQ2xpcGJvYXJkQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJDbGlwYm9hcmRcIjtcbkNsaXBib2FyZFdpdGhJY29uLmRpc3BsYXlOYW1lID0gXCJDbGlwYm9hcmQuV2l0aEljb25cIjtcbkNsaXBib2FyZFdpdGhJY29uVGV4dC5kaXNwbGF5TmFtZSA9IFwiQ2xpcGJvYXJkLldpdGhJY29uVGV4dFwiO1xuY29uc3QgQ2xpcGJvYXJkID0gT2JqZWN0LmFzc2lnbihDbGlwYm9hcmRDb21wb25lbnQsIHtcbiAgV2l0aEljb246IENsaXBib2FyZFdpdGhJY29uLFxuICBXaXRoSWNvblRleHQ6IENsaXBib2FyZFdpdGhJY29uVGV4dFxufSk7XG5cbmV4cG9ydCB7IENsaXBib2FyZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2xpcGJvYXJkLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgSGVscGVyVGV4dCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbG9yID0gXCJkZWZhdWx0XCIsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB2YWx1ZSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5oZWxwZXJUZXh0LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwicFwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIHRoZW1lLnJvb3QuY29sb3JzW2NvbG9yXSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiB2YWx1ZSA/PyBjaGlsZHJlbiA/PyBcIlwiIH0pO1xufTtcbkhlbHBlclRleHQuZGlzcGxheU5hbWUgPSBcIkhlbHBlclRleHRcIjtcblxuZXhwb3J0IHsgSGVscGVyVGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SGVscGVyVGV4dC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEhlbHBlclRleHQgfSBmcm9tICcuLi9IZWxwZXJUZXh0L0hlbHBlclRleHQubWpzJztcblxuY29uc3QgVGV4dElucHV0ID0gZm9yd2FyZFJlZihcbiAgKHtcbiAgICBhZGRvbixcbiAgICBjbGFzc05hbWUsXG4gICAgY29sb3IgPSBcImdyYXlcIixcbiAgICBoZWxwZXJUZXh0LFxuICAgIGljb246IEljb24sXG4gICAgcmlnaHRJY29uOiBSaWdodEljb24sXG4gICAgc2hhZG93LFxuICAgIHNpemluZyA9IFwibWRcIixcbiAgICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgICB0eXBlID0gXCJ0ZXh0XCIsXG4gICAgLi4ucHJvcHNcbiAgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS50ZXh0SW5wdXQsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbXG4gICAgICAgIGFkZG9uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5hZGRvbiwgY2hpbGRyZW46IGFkZG9uIH0pLFxuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuZmllbGQuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uYmFzZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uc3ZnIH0pIH0pLFxuICAgICAgICAgIFJpZ2h0SWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcInJpZ2h0LWljb25cIiwgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5yaWdodEljb24uYmFzZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goUmlnaHRJY29uLCB7IGNsYXNzTmFtZTogdGhlbWUuZmllbGQucmlnaHRJY29uLnN2ZyB9KSB9KSxcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQuYmFzZSxcbiAgICAgICAgICAgICAgICB0aGVtZS5maWVsZC5pbnB1dC5jb2xvcnNbY29sb3JdLFxuICAgICAgICAgICAgICAgIHRoZW1lLmZpZWxkLmlucHV0LnNpemVzW3NpemluZ10sXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQud2l0aEljb25bSWNvbiA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICAgICAgICAgIHRoZW1lLmZpZWxkLmlucHV0LndpdGhSaWdodEljb25bUmlnaHRJY29uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQud2l0aEFkZG9uW2FkZG9uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQud2l0aFNoYWRvd1tzaGFkb3cgPyBcIm9uXCIgOiBcIm9mZlwiXVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICAgICAgcmVmXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICBdIH0pXG4gICAgICBdIH0pLFxuICAgICAgaGVscGVyVGV4dCAmJiAvKiBAX19QVVJFX18gKi8ganN4KEhlbHBlclRleHQsIHsgY29sb3IsIGNoaWxkcmVuOiBoZWxwZXJUZXh0IH0pXG4gICAgXSB9KTtcbiAgfVxuKTtcblRleHRJbnB1dC5kaXNwbGF5TmFtZSA9IFwiVGV4dElucHV0XCI7XG5cbmV4cG9ydCB7IFRleHRJbnB1dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dElucHV0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IERhdGVwaWNrZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlRGF0ZVBpY2tlckNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVwaWNrZXJDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlRGF0ZVBpY2tlckNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBEYXRlUGlja2VyQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IERhdGVwaWNrZXJDb250ZXh0LCB1c2VEYXRlUGlja2VyQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGF0ZXBpY2tlckNvbnRleHQubWpzLm1hcFxuIiwidmFyIFZpZXdzID0gLyogQF9fUFVSRV9fICovICgoVmlld3MyKSA9PiB7XG4gIFZpZXdzMltWaWV3czJbXCJEYXlzXCJdID0gMF0gPSBcIkRheXNcIjtcbiAgVmlld3MyW1ZpZXdzMltcIk1vbnRoc1wiXSA9IDFdID0gXCJNb250aHNcIjtcbiAgVmlld3MyW1ZpZXdzMltcIlllYXJzXCJdID0gMl0gPSBcIlllYXJzXCI7XG4gIFZpZXdzMltWaWV3czJbXCJEZWNhZGVzXCJdID0gM10gPSBcIkRlY2FkZXNcIjtcbiAgcmV0dXJuIFZpZXdzMjtcbn0pKFZpZXdzIHx8IHt9KTtcbnZhciBXZWVrU3RhcnQgPSAvKiBAX19QVVJFX18gKi8gKChXZWVrU3RhcnQyKSA9PiB7XG4gIFdlZWtTdGFydDJbV2Vla1N0YXJ0MltcIlN1bmRheVwiXSA9IDBdID0gXCJTdW5kYXlcIjtcbiAgV2Vla1N0YXJ0MltXZWVrU3RhcnQyW1wiTW9uZGF5XCJdID0gMV0gPSBcIk1vbmRheVwiO1xuICBXZWVrU3RhcnQyW1dlZWtTdGFydDJbXCJUdWVzZGF5XCJdID0gMl0gPSBcIlR1ZXNkYXlcIjtcbiAgV2Vla1N0YXJ0MltXZWVrU3RhcnQyW1wiV2VkbmVzZGF5XCJdID0gM10gPSBcIldlZG5lc2RheVwiO1xuICBXZWVrU3RhcnQyW1dlZWtTdGFydDJbXCJUaHVyc2RheVwiXSA9IDRdID0gXCJUaHVyc2RheVwiO1xuICBXZWVrU3RhcnQyW1dlZWtTdGFydDJbXCJGcmlkYXlcIl0gPSA1XSA9IFwiRnJpZGF5XCI7XG4gIFdlZWtTdGFydDJbV2Vla1N0YXJ0MltcIlNhdHVyZGF5XCJdID0gNl0gPSBcIlNhdHVyZGF5XCI7XG4gIHJldHVybiBXZWVrU3RhcnQyO1xufSkoV2Vla1N0YXJ0IHx8IHt9KTtcbmNvbnN0IGlzRGF0ZUluUmFuZ2UgPSAoZGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSkgPT4ge1xuICBjb25zdCBkYXRlVGltZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSkuZ2V0VGltZSgpO1xuICBpZiAobWluRGF0ZSAmJiBtYXhEYXRlKSB7XG4gICAgY29uc3QgbWluRGF0ZVRpbWUgPSBuZXcgRGF0ZShtaW5EYXRlLmdldEZ1bGxZZWFyKCksIG1pbkRhdGUuZ2V0TW9udGgoKSwgbWluRGF0ZS5nZXREYXRlKCkpLmdldFRpbWUoKTtcbiAgICBjb25zdCBtYXhEYXRlVGltZSA9IG5ldyBEYXRlKG1heERhdGUuZ2V0RnVsbFllYXIoKSwgbWF4RGF0ZS5nZXRNb250aCgpLCBtYXhEYXRlLmdldERhdGUoKSkuZ2V0VGltZSgpO1xuICAgIHJldHVybiBkYXRlVGltZSA+PSBtaW5EYXRlVGltZSAmJiBkYXRlVGltZSA8PSBtYXhEYXRlVGltZTtcbiAgfVxuICBpZiAobWluRGF0ZSkge1xuICAgIGNvbnN0IG1pbkRhdGVUaW1lID0gbmV3IERhdGUobWluRGF0ZS5nZXRGdWxsWWVhcigpLCBtaW5EYXRlLmdldE1vbnRoKCksIG1pbkRhdGUuZ2V0RGF0ZSgpKS5nZXRUaW1lKCk7XG4gICAgcmV0dXJuIGRhdGVUaW1lID49IG1pbkRhdGVUaW1lO1xuICB9XG4gIGlmIChtYXhEYXRlKSB7XG4gICAgY29uc3QgbWF4RGF0ZVRpbWUgPSBuZXcgRGF0ZShtYXhEYXRlLmdldEZ1bGxZZWFyKCksIG1heERhdGUuZ2V0TW9udGgoKSwgbWF4RGF0ZS5nZXREYXRlKCkpLmdldFRpbWUoKTtcbiAgICByZXR1cm4gZGF0ZVRpbWUgPD0gbWF4RGF0ZVRpbWU7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuY29uc3QgaXNEYXRlRXF1YWwgPSAoZGF0ZSwgc2VsZWN0ZWREYXRlKSA9PiB7XG4gIGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xuICBzZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShzZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSwgc2VsZWN0ZWREYXRlLmdldE1vbnRoKCksIHNlbGVjdGVkRGF0ZS5nZXREYXRlKCkpO1xuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgPT09IHNlbGVjdGVkRGF0ZS5nZXRUaW1lKCk7XG59O1xuY29uc3QgZ2V0Rmlyc3REYXRlSW5SYW5nZSA9IChkYXRlLCBtaW5EYXRlLCBtYXhEYXRlKSA9PiB7XG4gIGlmICghaXNEYXRlSW5SYW5nZShkYXRlLCBtaW5EYXRlLCBtYXhEYXRlKSkge1xuICAgIGlmIChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB7XG4gICAgICBkYXRlID0gbWluRGF0ZTtcbiAgICB9IGVsc2UgaWYgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpIHtcbiAgICAgIGRhdGUgPSBtYXhEYXRlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0ZTtcbn07XG5jb25zdCBnZXRGaXJzdERheU9mVGhlTW9udGggPSAoZGF0ZSwgd2Vla1N0YXJ0KSA9PiB7XG4gIGNvbnN0IGZpcnN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKTtcbiAgY29uc3QgZGF5T2ZXZWVrID0gZmlyc3REYXlPZk1vbnRoLmdldERheSgpO1xuICBsZXQgZGlmZiA9IGRheU9mV2VlayAtIHdlZWtTdGFydDtcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIHJldHVybiBhZGREYXlzKGZpcnN0RGF5T2ZNb250aCwgLWRpZmYpO1xufTtcbmNvbnN0IGdldFdlZWtEYXlzID0gKGxhbmcsIHdlZWtTdGFydCkgPT4ge1xuICBjb25zdCB3ZWVrZGF5cyA9IFtdO1xuICBjb25zdCBkYXRlID0gLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKDApO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkYXRlLmdldERheSgpICsgd2Vla1N0YXJ0KTtcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobGFuZywgeyB3ZWVrZGF5OiBcInNob3J0XCIgfSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgd2Vla2RheXMucHVzaChmb3JtYXR0ZXIuZm9ybWF0KGFkZERheXMoZGF0ZSwgaSkpKTtcbiAgfVxuICByZXR1cm4gd2Vla2RheXM7XG59O1xuY29uc3QgYWRkRGF5cyA9IChkYXRlLCBhbW91bnQpID0+IHtcbiAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICBuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkgKyBhbW91bnQpO1xuICByZXR1cm4gbmV3RGF0ZTtcbn07XG5jb25zdCBhZGRNb250aHMgPSAoZGF0ZSwgYW1vdW50KSA9PiB7XG4gIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgbmV3RGF0ZS5zZXRNb250aChuZXdEYXRlLmdldE1vbnRoKCkgKyBhbW91bnQpO1xuICByZXR1cm4gbmV3RGF0ZTtcbn07XG5jb25zdCBhZGRZZWFycyA9IChkYXRlLCBhbW91bnQpID0+IHtcbiAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICBuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSArIGFtb3VudCk7XG4gIHJldHVybiBuZXdEYXRlO1xufTtcbmNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAobGFuZ3VhZ2UsIGRhdGUsIG9wdGlvbnMpID0+IHtcbiAgbGV0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGRheTogXCJudW1lcmljXCIsXG4gICAgbW9udGg6IFwibG9uZ1wiLFxuICAgIHllYXI6IFwibnVtZXJpY1wiXG4gIH07XG4gIGlmIChvcHRpb25zKSB7XG4gICAgZGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG4gIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsYW5ndWFnZSwgZGVmYXVsdE9wdGlvbnMpLmZvcm1hdChkYXRlKTtcbn07XG5jb25zdCBzdGFydE9mWWVhclBlcmlvZCA9IChkYXRlLCB5ZWFycykgPT4ge1xuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICByZXR1cm4gTWF0aC5mbG9vcih5ZWFyIC8geWVhcnMpICogeWVhcnM7XG59O1xuY29uc3QgaXNEYXRlSW5EZWNhZGUgPSAoZGF0ZSwgc3RhcnRZZWFyKSA9PiB7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IGVuZFllYXIgPSBzdGFydFllYXIgKyA5O1xuICByZXR1cm4geWVhciA+PSBzdGFydFllYXIgJiYgeWVhciA8PSBlbmRZZWFyO1xufTtcblxuZXhwb3J0IHsgVmlld3MsIFdlZWtTdGFydCwgYWRkRGF5cywgYWRkTW9udGhzLCBhZGRZZWFycywgZ2V0Rmlyc3REYXRlSW5SYW5nZSwgZ2V0Rmlyc3REYXlPZlRoZU1vbnRoLCBnZXRGb3JtYXR0ZWREYXRlLCBnZXRXZWVrRGF5cywgaXNEYXRlRXF1YWwsIGlzRGF0ZUluRGVjYWRlLCBpc0RhdGVJblJhbmdlLCBzdGFydE9mWWVhclBlcmlvZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRGF0ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgZ2V0V2Vla0RheXMsIGdldEZpcnN0RGF5T2ZUaGVNb250aCwgYWRkRGF5cywgZ2V0Rm9ybWF0dGVkRGF0ZSwgaXNEYXRlRXF1YWwsIGlzRGF0ZUluUmFuZ2UgfSBmcm9tICcuLi9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IERhdGVwaWNrZXJWaWV3c0RheXMgPSAoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICB0aGVtZTogcm9vdFRoZW1lLFxuICAgIHdlZWtTdGFydCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgdmlld0RhdGUsXG4gICAgc2VsZWN0ZWREYXRlLFxuICAgIGNoYW5nZVNlbGVjdGVkRGF0ZSxcbiAgICBsYW5ndWFnZVxuICB9ID0gdXNlRGF0ZVBpY2tlckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLnZpZXdzLmRheXMsIGN1c3RvbVRoZW1lKTtcbiAgY29uc3Qgd2Vla0RheXMgPSBnZXRXZWVrRGF5cyhsYW5ndWFnZSwgd2Vla1N0YXJ0KTtcbiAgY29uc3Qgc3RhcnREYXRlID0gZ2V0Rmlyc3REYXlPZlRoZU1vbnRoKHZpZXdEYXRlLCB3ZWVrU3RhcnQpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5oZWFkZXIuYmFzZSwgY2hpbGRyZW46IHdlZWtEYXlzLm1hcCgoZGF5LCBpbmRleCkgPT4gLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmhlYWRlci50aXRsZSwgY2hpbGRyZW46IGRheSB9LCBpbmRleCkpIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLml0ZW1zLmJhc2UsIGNoaWxkcmVuOiBbLi4uQXJyYXkoNDIpXS5tYXAoKF9kYXRlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudERhdGUgPSBhZGREYXlzKHN0YXJ0RGF0ZSwgaW5kZXgpO1xuICAgICAgY29uc3QgZGF5ID0gZ2V0Rm9ybWF0dGVkRGF0ZShsYW5ndWFnZSwgY3VycmVudERhdGUsIHsgZGF5OiBcIm51bWVyaWNcIiB9KTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBzZWxlY3RlZERhdGUgJiYgaXNEYXRlRXF1YWwoc2VsZWN0ZWREYXRlLCBjdXJyZW50RGF0ZSk7XG4gICAgICBjb25zdCBpc0Rpc2FibGVkID0gIWlzRGF0ZUluUmFuZ2UoY3VycmVudERhdGUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgIHRoZW1lLml0ZW1zLml0ZW0uYmFzZSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5zZWxlY3RlZCxcbiAgICAgICAgICAgIGlzRGlzYWJsZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICksXG4gICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkRGF0ZShjdXJyZW50RGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGlsZHJlbjogZGF5XG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4XG4gICAgICApO1xuICAgIH0pIH0pXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBEYXRlcGlja2VyVmlld3NEYXlzIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXlzLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZURhdGVQaWNrZXJDb250ZXh0IH0gZnJvbSAnLi4vRGF0ZXBpY2tlckNvbnRleHQubWpzJztcbmltcG9ydCB7IHN0YXJ0T2ZZZWFyUGVyaW9kLCBhZGRZZWFycywgaXNEYXRlSW5EZWNhZGUsIGlzRGF0ZUluUmFuZ2UsIFZpZXdzIH0gZnJvbSAnLi4vaGVscGVycy5tanMnO1xuXG5jb25zdCBEYXRlcGlja2VyVmlld3NEZWNhZGVzID0gKHsgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30gfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIHZpZXdEYXRlLCBzZWxlY3RlZERhdGUsIG1pbkRhdGUsIG1heERhdGUsIHNldFZpZXdEYXRlLCBzZXRWaWV3IH0gPSB1c2VEYXRlUGlja2VyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUudmlld3MuZGVjYWRlcywgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBmaXJzdCA9IHN0YXJ0T2ZZZWFyUGVyaW9kKHZpZXdEYXRlLCAxMDApO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaXRlbXMuYmFzZSwgY2hpbGRyZW46IFsuLi5BcnJheSgxMildLm1hcCgoX3llYXIsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgeWVhciA9IGZpcnN0IC0gMTAgKyBpbmRleCAqIDEwO1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh2aWV3RGF0ZS5nZXRUaW1lKCkpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIoeWVhciArIHZpZXdEYXRlLmdldEZ1bGxZZWFyKCkgJSAxMCk7XG4gICAgY29uc3QgZmlyc3REYXRlID0gbmV3IERhdGUoeWVhciwgMCwgMSk7XG4gICAgY29uc3QgbGFzdERhdGUgPSBhZGRZZWFycyhmaXJzdERhdGUsIDkpO1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBzZWxlY3RlZERhdGUgJiYgaXNEYXRlSW5EZWNhZGUoc2VsZWN0ZWREYXRlLCB5ZWFyKTtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gIWlzRGF0ZUluUmFuZ2UoZmlyc3REYXRlLCBtaW5EYXRlLCBtYXhEYXRlKSAmJiAhaXNEYXRlSW5SYW5nZShsYXN0RGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImJ1dHRvblwiLFxuICAgICAge1xuICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgIHRoZW1lLml0ZW1zLml0ZW0uYmFzZSxcbiAgICAgICAgICBpc1NlbGVjdGVkICYmIHRoZW1lLml0ZW1zLml0ZW0uc2VsZWN0ZWQsXG4gICAgICAgICAgaXNEaXNhYmxlZCAmJiB0aGVtZS5pdGVtcy5pdGVtLmRpc2FibGVkXG4gICAgICAgICksXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgICAgIHNlbGVjdGVkRGF0ZSAmJiBzZXRWaWV3RGF0ZShhZGRZZWFycyh2aWV3RGF0ZSwgeWVhciAtIHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpKSk7XG4gICAgICAgICAgc2V0VmlldyhWaWV3cy5ZZWFycyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiB5ZWFyXG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9KSB9KTtcbn07XG5cbmV4cG9ydCB7IERhdGVwaWNrZXJWaWV3c0RlY2FkZXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlY2FkZXMubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRGF0ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSwgaXNEYXRlRXF1YWwsIGlzRGF0ZUluUmFuZ2UsIFZpZXdzIH0gZnJvbSAnLi4vaGVscGVycy5tanMnO1xuXG5jb25zdCBEYXRlcGlja2VyVmlld3NNb250aCA9ICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9IH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHRoZW1lOiByb290VGhlbWUsXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNlbGVjdGVkRGF0ZSxcbiAgICB2aWV3RGF0ZSxcbiAgICBsYW5ndWFnZSxcbiAgICBzZXRWaWV3RGF0ZSxcbiAgICBzZXRWaWV3XG4gIH0gPSB1c2VEYXRlUGlja2VyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUudmlld3MubW9udGhzLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5pdGVtcy5iYXNlLCBjaGlsZHJlbjogWy4uLkFycmF5KDEyKV0ubWFwKChfbW9udGgsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuICAgIG5ld0RhdGUuc2V0TW9udGgoaW5kZXgsIDEpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIodmlld0RhdGUuZ2V0RnVsbFllYXIoKSk7XG4gICAgY29uc3QgbW9udGggPSBnZXRGb3JtYXR0ZWREYXRlKGxhbmd1YWdlLCBuZXdEYXRlLCB7IG1vbnRoOiBcInNob3J0XCIgfSk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkRGF0ZSAmJiBpc0RhdGVFcXVhbChzZWxlY3RlZERhdGUsIG5ld0RhdGUpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAhaXNEYXRlSW5SYW5nZShuZXdEYXRlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgdGhlbWUuaXRlbXMuaXRlbS5iYXNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5zZWxlY3RlZCxcbiAgICAgICAgICBpc0Rpc2FibGVkICYmIHRoZW1lLml0ZW1zLml0ZW0uZGlzYWJsZWRcbiAgICAgICAgKSxcbiAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICAgICAgc2V0Vmlld0RhdGUobmV3RGF0ZSk7XG4gICAgICAgICAgc2V0VmlldyhWaWV3cy5EYXlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IG1vbnRoXG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9KSB9KTtcbn07XG5cbmV4cG9ydCB7IERhdGVwaWNrZXJWaWV3c01vbnRoIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Nb250aHMubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRGF0ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgc3RhcnRPZlllYXJQZXJpb2QsIGlzRGF0ZUVxdWFsLCBpc0RhdGVJblJhbmdlLCBWaWV3cyB9IGZyb20gJy4uL2hlbHBlcnMubWpzJztcblxuY29uc3QgRGF0ZXBpY2tlclZpZXdzWWVhcnMgPSAoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgc2VsZWN0ZWREYXRlLCBtaW5EYXRlLCBtYXhEYXRlLCB2aWV3RGF0ZSwgc2V0Vmlld0RhdGUsIHNldFZpZXcgfSA9IHVzZURhdGVQaWNrZXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS52aWV3cy55ZWFycywgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaXRlbXMuYmFzZSwgY2hpbGRyZW46IFsuLi5BcnJheSgxMildLm1hcCgoX3llYXIsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgZmlyc3QgPSBzdGFydE9mWWVhclBlcmlvZCh2aWV3RGF0ZSwgMTApO1xuICAgIGNvbnN0IHllYXIgPSBmaXJzdCArIGluZGV4O1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh2aWV3RGF0ZS5nZXRUaW1lKCkpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIoeWVhcik7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkRGF0ZSAmJiBpc0RhdGVFcXVhbChzZWxlY3RlZERhdGUsIG5ld0RhdGUpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAhaXNEYXRlSW5SYW5nZShuZXdEYXRlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgdGhlbWUuaXRlbXMuaXRlbS5iYXNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5zZWxlY3RlZCxcbiAgICAgICAgICBpc0Rpc2FibGVkICYmIHRoZW1lLml0ZW1zLml0ZW0uZGlzYWJsZWRcbiAgICAgICAgKSxcbiAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICAgICAgc2V0Vmlld0RhdGUobmV3RGF0ZSk7XG4gICAgICAgICAgc2V0VmlldyhWaWV3cy5Nb250aHMpO1xuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogeWVhclxuICAgICAgfSxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfSkgfSk7XG59O1xuXG5leHBvcnQgeyBEYXRlcGlja2VyVmlld3NZZWFycyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9WWVhcnMubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlTWVtbywgdXNlU3RhdGUsIHVzZVJlZiwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSGlDYWxlbmRhciwgSGlBcnJvd0xlZnQsIEhpQXJyb3dSaWdodCB9IGZyb20gJ3JlYWN0LWljb25zL2hpJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRleHRJbnB1dCB9IGZyb20gJy4uL1RleHRJbnB1dC9UZXh0SW5wdXQubWpzJztcbmltcG9ydCB7IERhdGVwaWNrZXJDb250ZXh0IH0gZnJvbSAnLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgZ2V0Rmlyc3REYXRlSW5SYW5nZSwgVmlld3MsIGlzRGF0ZUVxdWFsLCBnZXRGb3JtYXR0ZWREYXRlLCBXZWVrU3RhcnQsIHN0YXJ0T2ZZZWFyUGVyaW9kLCBhZGRZZWFycywgYWRkTW9udGhzIH0gZnJvbSAnLi9oZWxwZXJzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NEYXlzIH0gZnJvbSAnLi9WaWV3cy9EYXlzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NEZWNhZGVzIH0gZnJvbSAnLi9WaWV3cy9EZWNhZGVzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NNb250aCB9IGZyb20gJy4vVmlld3MvTW9udGhzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NZZWFycyB9IGZyb20gJy4vVmlld3MvWWVhcnMubWpzJztcblxuY29uc3QgRGF0ZXBpY2tlclJlbmRlciA9ICh7XG4gIHRpdGxlLFxuICBvcGVuLFxuICBpbmxpbmUgPSBmYWxzZSxcbiAgYXV0b0hpZGUgPSB0cnVlLFxuICAvLyBIaWRlIHdoZW4gc2VsZWN0ZWQgdGhlIGRheVxuICBzaG93Q2xlYXJCdXR0b24gPSB0cnVlLFxuICBsYWJlbENsZWFyQnV0dG9uID0gXCJDbGVhclwiLFxuICBzaG93VG9kYXlCdXR0b24gPSB0cnVlLFxuICBsYWJlbFRvZGF5QnV0dG9uID0gXCJUb2RheVwiLFxuICBkZWZhdWx0VmFsdWUsXG4gIG1pbkRhdGUsXG4gIG1heERhdGUsXG4gIGxhbmd1YWdlID0gXCJlblwiLFxuICB3ZWVrU3RhcnQgPSBXZWVrU3RhcnQuU3VuZGF5LFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBvbkNoYW5nZSxcbiAgbGFiZWwsXG4gIHZhbHVlLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZGF0ZXBpY2tlciwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBpbml0aWFsRGF0ZSA9IGRlZmF1bHRWYWx1ZSA/IGdldEZpcnN0RGF0ZUluUmFuZ2UoZGVmYXVsdFZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKSA6IG51bGw7XG4gIGNvbnN0IGVmZmVjdGl2ZURlZmF1bHRWaWV3ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSA/IGdldEZpcnN0RGF0ZUluUmFuZ2UoZGVmYXVsdFZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKSA6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuICB9LCBbXSk7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShvcGVuKTtcbiAgY29uc3QgW3ZpZXcsIHNldFZpZXddID0gdXNlU3RhdGUoVmlld3MuRGF5cyk7XG4gIGNvbnN0IFtzZWxlY3RlZERhdGUsIHNldFNlbGVjdGVkRGF0ZV0gPSB1c2VTdGF0ZSh2YWx1ZSA/PyBpbml0aWFsRGF0ZSk7XG4gIGNvbnN0IFt2aWV3RGF0ZSwgc2V0Vmlld0RhdGVdID0gdXNlU3RhdGUodmFsdWUgPz8gZWZmZWN0aXZlRGVmYXVsdFZpZXcpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgZGF0ZXBpY2tlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgY2hhbmdlU2VsZWN0ZWREYXRlID0gKGRhdGUsIHVzZUF1dG9oaWRlKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRlKGRhdGUpO1xuICAgIGlmICgoZGF0ZSA9PT0gbnVsbCB8fCBkYXRlKSAmJiBvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UoZGF0ZSk7XG4gICAgfVxuICAgIGlmIChhdXRvSGlkZSAmJiB2aWV3ID09PSBWaWV3cy5EYXlzICYmIHVzZUF1dG9oaWRlID09IHRydWUgJiYgIWlubGluZSkge1xuICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGNsZWFyRGF0ZSA9ICgpID0+IHtcbiAgICBjaGFuZ2VTZWxlY3RlZERhdGUoaW5pdGlhbERhdGUsIHRydWUpO1xuICAgIGlmIChkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHNldFZpZXdEYXRlKGRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICB9O1xuICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gKHtcbiAgICBmb2N1cygpIHtcbiAgICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIGNsZWFyRGF0ZSgpO1xuICAgIH1cbiAgfSkpO1xuICBjb25zdCByZW5kZXJWaWV3ID0gKHR5cGUpID0+IHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgVmlld3MuRGVjYWRlczpcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRGF0ZXBpY2tlclZpZXdzRGVjYWRlcywgeyB0aGVtZTogdGhlbWUudmlld3MuZGVjYWRlcyB9KTtcbiAgICAgIGNhc2UgVmlld3MuWWVhcnM6XG4gICAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KERhdGVwaWNrZXJWaWV3c1llYXJzLCB7IHRoZW1lOiB0aGVtZS52aWV3cy55ZWFycyB9KTtcbiAgICAgIGNhc2UgVmlld3MuTW9udGhzOlxuICAgICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChEYXRlcGlja2VyVmlld3NNb250aCwgeyB0aGVtZTogdGhlbWUudmlld3MubW9udGhzIH0pO1xuICAgICAgY2FzZSBWaWV3cy5EYXlzOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRGF0ZXBpY2tlclZpZXdzRGF5cywgeyB0aGVtZTogdGhlbWUudmlld3MuZGF5cyB9KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGdldE5leHRWaWV3ID0gKCkgPT4ge1xuICAgIHN3aXRjaCAodmlldykge1xuICAgICAgY2FzZSBWaWV3cy5EYXlzOlxuICAgICAgICByZXR1cm4gVmlld3MuTW9udGhzO1xuICAgICAgY2FzZSBWaWV3cy5Nb250aHM6XG4gICAgICAgIHJldHVybiBWaWV3cy5ZZWFycztcbiAgICAgIGNhc2UgVmlld3MuWWVhcnM6XG4gICAgICAgIHJldHVybiBWaWV3cy5EZWNhZGVzO1xuICAgIH1cbiAgICByZXR1cm4gdmlldztcbiAgfTtcbiAgY29uc3QgZ2V0Vmlld1RpdGxlID0gKCkgPT4ge1xuICAgIHN3aXRjaCAodmlldykge1xuICAgICAgY2FzZSBWaWV3cy5EZWNhZGVzOlxuICAgICAgICByZXR1cm4gYCR7c3RhcnRPZlllYXJQZXJpb2Qodmlld0RhdGUsIDEwMCkgLSAxMH0gLSAke3N0YXJ0T2ZZZWFyUGVyaW9kKHZpZXdEYXRlLCAxMDApICsgMTAwfWA7XG4gICAgICBjYXNlIFZpZXdzLlllYXJzOlxuICAgICAgICByZXR1cm4gYCR7c3RhcnRPZlllYXJQZXJpb2Qodmlld0RhdGUsIDEwKX0gLSAke3N0YXJ0T2ZZZWFyUGVyaW9kKHZpZXdEYXRlLCAxMCkgKyAxMX1gO1xuICAgICAgY2FzZSBWaWV3cy5Nb250aHM6XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKGxhbmd1YWdlLCB2aWV3RGF0ZSwgeyB5ZWFyOiBcIm51bWVyaWNcIiB9KTtcbiAgICAgIGNhc2UgVmlld3MuRGF5czpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKGxhbmd1YWdlLCB2aWV3RGF0ZSwgeyBtb250aDogXCJsb25nXCIsIHllYXI6IFwibnVtZXJpY1wiIH0pO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2V0Vmlld0RhdGVQYWdlID0gKHZpZXcyLCBkYXRlLCB2YWx1ZTIpID0+IHtcbiAgICBzd2l0Y2ggKHZpZXcyKSB7XG4gICAgICBjYXNlIFZpZXdzLkRheXM6XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShhZGRNb250aHMoZGF0ZSwgdmFsdWUyKSk7XG4gICAgICBjYXNlIFZpZXdzLk1vbnRoczpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGFkZFllYXJzKGRhdGUsIHZhbHVlMikpO1xuICAgICAgY2FzZSBWaWV3cy5ZZWFyczpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGFkZFllYXJzKGRhdGUsIHZhbHVlMiAqIDEwKSk7XG4gICAgICBjYXNlIFZpZXdzLkRlY2FkZXM6XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShhZGRZZWFycyhkYXRlLCB2YWx1ZTIgKiAxMDApKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShhZGRZZWFycyhkYXRlLCB2YWx1ZTIgKiAxMCkpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVEYXRlcGlja2VyID0gZGF0ZXBpY2tlclJlZj8uY3VycmVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVJbnB1dCA9IGlucHV0UmVmPy5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgaWYgKCFjbGlja2VkSW5zaWRlRGF0ZXBpY2tlciAmJiAhY2xpY2tlZEluc2lkZUlucHV0KSB7XG4gICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICB9O1xuICB9LCBbaW5wdXRSZWYsIGRhdGVwaWNrZXJSZWYsIHNldElzT3Blbl0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVmZmVjdGl2ZVZhbHVlID0gdmFsdWUgJiYgZ2V0Rmlyc3REYXRlSW5SYW5nZShuZXcgRGF0ZSh2YWx1ZSksIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIGNvbnN0IGVmZmVjdGl2ZVNlbGVjdGVkRGF0ZSA9IHNlbGVjdGVkRGF0ZSAmJiBnZXRGaXJzdERhdGVJblJhbmdlKG5ldyBEYXRlKHNlbGVjdGVkRGF0ZSksIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIGlmIChlZmZlY3RpdmVTZWxlY3RlZERhdGUgJiYgZWZmZWN0aXZlVmFsdWUgJiYgIWlzRGF0ZUVxdWFsKGVmZmVjdGl2ZVZhbHVlLCBlZmZlY3RpdmVTZWxlY3RlZERhdGUpKSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGUoZWZmZWN0aXZlVmFsdWUpO1xuICAgIH1cbiAgICBpZiAoc2VsZWN0ZWREYXRlID09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0ZShpbml0aWFsRGF0ZSk7XG4gICAgfVxuICB9LCBbdmFsdWUsIHNldFNlbGVjdGVkRGF0ZSwgc2V0Vmlld0RhdGUsIHNlbGVjdGVkRGF0ZV0pO1xuICBjb25zdCBkaXNwbGF5VmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IGxhYmVsIDogZ2V0Rm9ybWF0dGVkRGF0ZShsYW5ndWFnZSwgc2VsZWN0ZWREYXRlIHx8IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgRGF0ZXBpY2tlckNvbnRleHQuUHJvdmlkZXIsXG4gICAge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdGhlbWUsXG4gICAgICAgIGxhbmd1YWdlLFxuICAgICAgICBtaW5EYXRlLFxuICAgICAgICBtYXhEYXRlLFxuICAgICAgICB3ZWVrU3RhcnQsXG4gICAgICAgIGlzT3BlbixcbiAgICAgICAgc2V0SXNPcGVuLFxuICAgICAgICB2aWV3LFxuICAgICAgICBzZXRWaWV3LFxuICAgICAgICB2aWV3RGF0ZSxcbiAgICAgICAgc2V0Vmlld0RhdGUsXG4gICAgICAgIHNlbGVjdGVkRGF0ZSxcbiAgICAgICAgc2V0U2VsZWN0ZWREYXRlLFxuICAgICAgICBjaGFuZ2VTZWxlY3RlZERhdGVcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCBjaGlsZHJlbjogW1xuICAgICAgICAhaW5saW5lICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgVGV4dElucHV0LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRoZW1lOiB0aGVtZS5yb290LmlucHV0LFxuICAgICAgICAgICAgaWNvbjogSGlDYWxlbmRhcixcbiAgICAgICAgICAgIHJlZjogaW5wdXRSZWYsXG4gICAgICAgICAgICBvbkZvY3VzOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGUgJiYgIWlzRGF0ZUVxdWFsKHZpZXdEYXRlLCBzZWxlY3RlZERhdGUpKSB7XG4gICAgICAgICAgICAgICAgc2V0Vmlld0RhdGUoc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRJc09wZW4odHJ1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmFsdWU6IGRpc3BsYXlWYWx1ZSxcbiAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBpbml0aWFsRGF0ZSA/IGdldEZvcm1hdHRlZERhdGUobGFuZ3VhZ2UsIGluaXRpYWxEYXRlKSA6IGxhYmVsLFxuICAgICAgICAgICAgLi4ucHJvcHNcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIChpc09wZW4gfHwgaW5saW5lKSAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgcmVmOiBkYXRlcGlja2VyUmVmLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucG9wdXAucm9vdC5iYXNlLCBpbmxpbmUgJiYgdGhlbWUucG9wdXAucm9vdC5pbmxpbmUpLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnBvcHVwLnJvb3QuaW5uZXIsIGNoaWxkcmVuOiBbXG4gICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnBvcHVwLmhlYWRlci5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgICAgICAgdGl0bGUgJiYgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucG9wdXAuaGVhZGVyLnRpdGxlLCBjaGlsZHJlbjogdGl0bGUgfSksXG4gICAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucG9wdXAuaGVhZGVyLnNlbGVjdG9ycy5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUucG9wdXAuaGVhZGVyLnNlbGVjdG9ycy5idXR0b24uYmFzZSxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUucG9wdXAuaGVhZGVyLnNlbGVjdG9ycy5idXR0b24ucHJldlxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldFZpZXdEYXRlKGdldFZpZXdEYXRlUGFnZSh2aWV3LCB2aWV3RGF0ZSwgLTEpKSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KEhpQXJyb3dMZWZ0LCB7fSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgICAgICAgICB0aGVtZS5wb3B1cC5oZWFkZXIuc2VsZWN0b3JzLmJ1dHRvbi5iYXNlLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZS5wb3B1cC5oZWFkZXIuc2VsZWN0b3JzLmJ1dHRvbi52aWV3XG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4gc2V0VmlldyhnZXROZXh0VmlldygpKSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBnZXRWaWV3VGl0bGUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLnBvcHVwLmhlYWRlci5zZWxlY3RvcnMuYnV0dG9uLmJhc2UsXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLnBvcHVwLmhlYWRlci5zZWxlY3RvcnMuYnV0dG9uLm5leHRcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBzZXRWaWV3RGF0ZShnZXRWaWV3RGF0ZVBhZ2Uodmlldywgdmlld0RhdGUsIDEpKSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KEhpQXJyb3dSaWdodCwge30pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdIH0pXG4gICAgICAgICAgXSB9KSxcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5wb3B1cC52aWV3LmJhc2UsIGNoaWxkcmVuOiByZW5kZXJWaWV3KHZpZXcpIH0pLFxuICAgICAgICAgIChzaG93Q2xlYXJCdXR0b24gfHwgc2hvd1RvZGF5QnV0dG9uKSAmJiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucG9wdXAuZm9vdGVyLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICBzaG93VG9kYXlCdXR0b24gJiYgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnBvcHVwLmZvb3Rlci5idXR0b24uYmFzZSwgdGhlbWUucG9wdXAuZm9vdGVyLmJ1dHRvbi50b2RheSksXG4gICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkRGF0ZSh0b2RheSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICBzZXRWaWV3RGF0ZSh0b2RheSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogbGFiZWxUb2RheUJ1dHRvblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc2hvd0NsZWFyQnV0dG9uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5wb3B1cC5mb290ZXIuYnV0dG9uLmJhc2UsIHRoZW1lLnBvcHVwLmZvb3Rlci5idXR0b24uY2xlYXIpLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkRGF0ZShudWxsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBsYWJlbENsZWFyQnV0dG9uXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICBdIH0pXG4gICAgICAgIF0gfSkgfSlcbiAgICAgIF0gfSlcbiAgICB9XG4gICk7XG59O1xuY29uc3QgRGF0ZXBpY2tlciA9IGZvcndhcmRSZWYoRGF0ZXBpY2tlclJlbmRlcik7XG5EYXRlcGlja2VyLmRpc3BsYXlOYW1lID0gXCJEYXRlcGlja2VyXCI7XG5cbmV4cG9ydCB7IERhdGVwaWNrZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhdGVwaWNrZXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgRHJhd2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZURyYXdlckNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERyYXdlckNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VEcmF3ZXJDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgRHJhd2VyQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IERyYXdlckNvbnRleHQsIHVzZURyYXdlckNvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyYXdlckNvbnRleHQubWpzLm1hcFxuIiwiLy8gVEhJUyBGSUxFIElTIEFVVE8gR0VORVJBVEVEXG5pbXBvcnQgeyBHZW5JY29uIH0gZnJvbSAnLi4vbGliL2luZGV4Lm1qcyc7XG5leHBvcnQgZnVuY3Rpb24gTWQxMjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE1SDUuNXYtNC41SDRWOWgzdjZ6bTYuNS0xLjVoLTN2LTFoMmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xSDl2MS41aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxVjE1aDQuNXYtMS41em02IC41di00YzAtLjU1LS40NS0xLTEtMUgxNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1aDMuNWMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDNkUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUyIDIxLjQ4QTEwLjQ4NyAxMC40ODcgMCAwIDEgMS41NSAxM0guMDVDLjU2IDE5LjE2IDUuNzEgMjQgMTIgMjRsLjY2LS4wMy0zLjgxLTMuODEtMS4zMyAxLjMyem0uODktNi41MmMtLjE5IDAtLjM3LS4wMy0uNTItLjA4YTEuMDcgMS4wNyAwIDAgMS0uNC0uMjRjLS4xMS0uMS0uMi0uMjItLjI2LS4zNy0uMDYtLjE0LS4wOS0uMy0uMDktLjQ3aC0xLjNjMCAuMzYuMDcuNjguMjEuOTUuMTQuMjcuMzMuNS41Ni42OS4yNC4xOC41MS4zMi44Mi40MS4zLjEuNjIuMTUuOTYuMTUuMzcgMCAuNzItLjA1IDEuMDMtLjE1LjMyLS4xLjYtLjI1LjgzLS40NHMuNDItLjQzLjU1LS43MmMuMTMtLjI5LjItLjYxLjItLjk3IDAtLjE5LS4wMi0uMzgtLjA3LS41NmExLjY3IDEuNjcgMCAwIDAtLjIzLS41MWMtLjEtLjE2LS4yNC0uMy0uNC0uNDMtLjE3LS4xMy0uMzctLjIzLS42MS0uMzFhMi4wOTggMi4wOTggMCAwIDAgLjg5LS43NWMuMS0uMTUuMTctLjMuMjItLjQ2LjA1LS4xNi4wNy0uMzIuMDctLjQ4IDAtLjM2LS4wNi0uNjgtLjE4LS45NmExLjc4IDEuNzggMCAwIDAtLjUxLS42OWMtLjItLjE5LS40Ny0uMzMtLjc3LS40M0M5LjEgOC4wNSA4Ljc2IDggOC4zOSA4Yy0uMzYgMC0uNjkuMDUtMSAuMTYtLjMuMTEtLjU3LjI2LS43OS40NS0uMjEuMTktLjM4LjQxLS41MS42Ny0uMTIuMjYtLjE4LjU0LS4xOC44NWgxLjNjMC0uMTcuMDMtLjMyLjA5LS40NXMuMTQtLjI1LjI1LS4zNGMuMTEtLjA5LjIzLS4xNy4zOC0uMjIuMTUtLjA1LjMtLjA4LjQ4LS4wOC40IDAgLjcuMS44OS4zMS4xOS4yLjI5LjQ5LjI5Ljg2IDAgLjE4LS4wMy4zNC0uMDguNDlhLjg3Ljg3IDAgMCAxLS4yNS4zN2MtLjExLjEtLjI1LjE4LS40MS4yNC0uMTYuMDYtLjM2LjA5LS41OC4wOUg3LjV2MS4wM2guNzdjLjIyIDAgLjQyLjAyLjYuMDdzLjMzLjEzLjQ1LjIzYy4xMi4xMS4yMi4yNC4yOS40LjA3LjE2LjEuMzUuMS41NyAwIC40MS0uMTIuNzItLjM1LjkzLS4yMy4yMy0uNTUuMzMtLjk1LjMzem04LjU1LTUuOTJjLS4zMi0uMzMtLjctLjU5LTEuMTQtLjc3LS40My0uMTgtLjkyLS4yNy0xLjQ2LS4yN0gxMnY4aDIuM2MuNTUgMCAxLjA2LS4wOSAxLjUxLS4yNy40NS0uMTguODQtLjQzIDEuMTYtLjc2LjMyLS4zMy41Ny0uNzMuNzQtMS4xOS4xNy0uNDcuMjYtLjk5LjI2LTEuNTd2LS40YzAtLjU4LS4wOS0xLjEtLjI2LTEuNTctLjE4LS40Ny0uNDMtLjg3LS43NS0xLjJ6bS0uMzkgMy4xNmMwIC40Mi0uMDUuNzktLjE0IDEuMTMtLjEuMzMtLjI0LjYyLS40My44NS0uMTkuMjMtLjQzLjQxLS43MS41My0uMjkuMTItLjYyLjE4LS45OS4xOGgtLjkxVjkuMTJoLjk3Yy43MiAwIDEuMjcuMjMgMS42NC42OS4zOC40Ni41NyAxLjEyLjU3IDEuOTl2LjR6TTEyIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMzYzMuMjcgMS41NSA1LjYxIDQuNzIgNS45NiA4LjQ4aDEuNUMyMy40NCA0Ljg0IDE4LjI5IDAgMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWJjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTFoLTEuNXYtLjVoLTJ2M2gyVjEzSDIxdjFjMCAuNTUtLjQ1IDEtMSAxaC0zYy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MXpNOCAxMHY1SDYuNXYtMS41aC0yVjE1SDN2LTVjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF6bS0xLjUuNWgtMlYxMmgydi0xLjV6bTcgMS41Yy41NSAwIDEgLjQ1IDEgMXYxYzAgLjU1LS40NSAxLTEgMWgtNFY5aDRjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek0xMSAxMC41di43NWgydi0uNzVoLTJ6bTIgMi4yNWgtMnYuNzVoMnYtLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NpYmlsaXR5TmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSA2Yy0yLjYxLjctNS42NyAxLTguNSAxcy01Ljg5LS4zLTguNS0xTDMgOGMxLjg2LjUgNCAuODMgNiAxdjEzaDJ2LTZoMnY2aDJWOWMyLS4xNyA0LjE0LS41IDYtMWwtLjUtMnpNMTIgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY2Vzc2liaWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3aC02djEzaC0ydi02aC0ydjZIOVY5SDNWN2gxOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NpYmxlRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI0LjU0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE3aC0yYzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zIDEuMzUtMyAzLTN2LTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNXptMy0zLjVoLTEuODZsMS42Ny0zLjY3QzE3LjQyIDguNSAxNi40NCA3IDE0Ljk2IDdoLTUuMmMtLjgxIDAtMS41NC40Ny0xLjg3IDEuMkw3LjIyIDEwbDEuOTIuNTNMOS43OSA5SDEybC0xLjgzIDQuMWMtLjYgMS4zMy4zOSAyLjkgMS44NSAyLjlIMTd2NWgydi01LjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY2Vzc2libGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM3YtMmMtMS41NC4wMi0zLjA5LS43NS00LjA3LTEuODNsLTEuMjktMS40M2MtLjE3LS4xOS0uMzgtLjM0LS42MS0uNDUtLjAxIDAtLjAxLS4wMS0uMDItLjAxSDEzYy0uMzUtLjItLjc1LS4zLTEuMTktLjI2QzEwLjc2IDcuMTEgMTAgOC4wNCAxMCA5LjA5VjE1YzAgMS4xLjkgMiAyIDJoNXY1aDJ2LTUuNWMwLTEuMS0uOS0yLTItMmgtM3YtMy40NWMxLjI5IDEuMDcgMy4yNSAxLjk0IDUgMS45NXptLTYuMTcgNWMtLjQxIDEuMTYtMS41MiAyLTIuODMgMi0xLjY2IDAtMy0xLjM0LTMtMyAwLTEuMzEuODQtMi40MSAyLTIuODNWMTIuMWE1IDUgMCAxIDAgNS45IDUuOWgtMi4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjb3VudEJhbGFuY2VXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxOHYxYzAgMS4xLS45IDItMiAySDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ2MWgtOWEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg5em0tOS0yaDEwVjhIMTJ2OHptNC0yLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2NvdW50QmFsYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTBoM3Y3SDR6TTEwLjUgMTBoM3Y3aC0zek0yIDE5aDIwdjNIMnpNMTcgMTBoM3Y3aC0zek0xMiAxIDIgNnYyaDIwVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY291bnRCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgM2MxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMy45MyAxMyAxMiAxM3MtMy41LTEuNTctMy41LTMuNVMxMC4wNyA2IDEyIDZ6bTcgMTNINXYtLjIzYzAtLjYyLjI4LTEuMi43Ni0xLjU4QzcuNDcgMTUuODIgOS42NCAxNSAxMiAxNXM0LjUzLjgyIDYuMjQgMi4xOWMuNDguMzguNzYuOTcuNzYgMS41OFYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjb3VudENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgNGMxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMy45MyAxMyAxMiAxM3MtMy41LTEuNTctMy41LTMuNVMxMC4wNyA2IDEyIDZ6bTAgMTRjLTIuMDMgMC00LjQzLS44Mi02LjE0LTIuODhhOS45NDcgOS45NDcgMCAwIDEgMTIuMjggMEMxNi40MyAxOS4xOCAxNC4wMyAyMCAxMiAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDEwdi0ySDR2LTZoMThWNmMwLTEuMTEtLjg5LTItMi0yem0wIDRINFY2aDE2djJ6bTQgOXYyaC0zdjNoLTJ2LTNoLTN2LTJoM3YtM2gydjNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExYy43IDAgMS4zNy4xIDIgLjI5VjlsLTgtNi04IDZ2MTJoNy42OEE2Ljk5NSA2Ljk5NSAwIDAgMSAxOCAxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIxaC0xdi0yLjVIMTV2LTFoMi41VjE1aDF2Mi41SDIxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTE4LjMxIDYtMi43NiA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA5aDJWNmgzVjRoLTNWMWgtMnYzSDh2MmgzdjN6bS00IDljLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOS44My0zLjI1LjAzLS4xMi45LTEuNjNoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy44Ni03LjAxTDE5LjQyIDRoLS4wMWwtMS4xIDItMi43NiA1SDguNTNsLS4xMy0uMjdMNi4xNiA2bC0uOTUtMi0uOTQtMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoMTJ2LTJINy40MmMtLjEzIDAtLjI1LS4xMS0uMjUtLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRUYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNS4xOCAxMC41OSAxNi42bC00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44MyAxMC0xMEwyMiA1LjE4ek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOGMxLjU3IDAgMy4wNC40NiA0LjI4IDEuMjVsMS40NS0xLjQ1QTEwLjAyIDEwLjAyIDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBjMS43MyAwIDMuMzYtLjQ0IDQuNzgtMS4yMmwtMS41LTEuNWMtMSAuNDYtMi4xMS43Mi0zLjI4Ljcyem03LTVoLTN2MmgzdjNoMnYtM2gzdi0yaC0zdi0zaC0ydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFRvRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyMXYtM2gzdi0yaC0zdi0zaC0ydjNoLTN2MmgzdjNoMnptLTQuOTcuNUg1LjY2Yy0uNzIgMC0xLjM4LS4zOC0xLjczLTFsLTIuMzYtNC4xYy0uMzYtLjYyLS4zNS0xLjM4LjAxLTJMNy45MiAzLjQ5Yy4zNi0uNjEgMS4wMi0uOTkgMS43My0uOTloNC43Yy43MSAwIDEuMzcuMzggMS43My45OWw0LjQ4IDcuNzFhNi4xNzYgNi4xNzYgMCAwIDAtMi40LS4xNEwxNC4zNSA0LjVoLTQuN0wzLjMxIDE1LjQxbDIuMzUgNC4wOWg3Ljg5Yy4zNS43Ny44NSAxLjQ1IDEuNDggMnpNMTMuMzQgMTVjLS4yMi42My0uMzQgMS4zLS4zNCAySDcuMjVsLS43My0xLjI3IDQuNTgtNy45OGgxLjhsMi41MyA0LjQyYy0uNTYuNDItMS4wNS45My0xLjQ0IDEuNTFsLTItMy40OUw5LjI1IDE1aDQuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZGNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNXYyaC0zdjNoLTJWN2gtM1Y1aDNWMmgydjNoM3ptLTMgMTRINVY1aDZWM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi02aC0ydjZ6bS00LTZ2NGgydi00aC0yem0tNCA0aDJWOWgtMnY4em0tMiAwdi02SDd2NmgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZG1pblBhbmVsU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMWMuMzQgMCAuNjcuMDQgMSAuMDlWNi4yN0wxMC41IDMgMyA2LjI3djQuOTFjMCA0LjU0IDMuMiA4Ljc5IDcuNSA5LjgyLjU1LS4xMyAxLjA4LS4zMiAxLjYtLjU1LS42OS0uOTgtMS4xLTIuMTctMS4xLTMuNDUgMC0zLjMxIDIuNjktNiA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEzYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCAxLjM4Yy42MiAwIDEuMTIuNTEgMS4xMiAxLjEycy0uNTEgMS4xMi0xLjEyIDEuMTItMS4xMi0uNTEtMS4xMi0xLjEyLjUtMS4xMiAxLjEyLTEuMTJ6bTAgNS4zN2MtLjkzIDAtMS43NC0uNDYtMi4yNC0xLjE3LjA1LS43MiAxLjUxLTEuMDggMi4yNC0xLjA4czIuMTkuMzYgMi4yNCAxLjA4Yy0uNS43MS0xLjMxIDEuMTctMi4yNCAxLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZHNDbGljayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjcxIDE3Ljk5QTUuOTkzIDUuOTkzIDAgMCAxIDYgMTJjMC0zLjMxIDIuNjktNiA2LTYgMy4yMiAwIDUuODQgMi41MyA1Ljk5IDUuNzFsLTIuMS0uNjNhMy45OTkgMy45OTkgMCAxIDAtNC44MSA0LjgxbC42MyAyLjF6TTIyIDEyYzAgLjMtLjAxLjYtLjA0LjlsLTEuOTctLjU5Yy4wMS0uMS4wMS0uMjEuMDEtLjMxIDAtNC40Mi0zLjU4LTgtOC04cy04IDMuNTgtOCA4IDMuNTggOCA4IDhjLjEgMCAuMjEgMCAuMzEtLjAxbC41OSAxLjk3Yy0uMy4wMy0uNi4wNC0uOS4wNC01LjUyIDAtMTAtNC40OC0xMC0xMFM2LjQ4IDIgMTIgMnMxMCA0LjQ4IDEwIDEwem0tMy43NyA0LjI2TDIyIDE1bC0xMC0zIDMgMTAgMS4yNi0zLjc3IDQuMjcgNC4yNyAxLjk4LTEuOTgtNC4yOC00LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGFybUFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODggMy4zOSA2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMTh6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0xLTExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxhcm1PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzMuODcgMCA3IDMuMTMgNyA3IDAgLjg0LS4xNiAxLjY1LS40MyAyLjRsMS41MiAxLjUyYy41OC0xLjE5LjkxLTIuNTEuOTEtMy45MmE5IDkgMCAwIDAtOS05Yy0xLjQxIDAtMi43My4zMy0zLjkyLjkxTDkuNiA2LjQzQzEwLjM1IDYuMTYgMTEuMTYgNiAxMiA2em0xMC0uMjgtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTIuOTIgMi4yOSAxLjY1IDMuNTcgMi45OCA0LjlsLTEuMTEuOTMgMS40MiAxLjQyIDEuMTEtLjk0LjguOEE4Ljk2NCA4Ljk2NCAwIDAgMCAzIDEzYzAgNC45NyA0LjAyIDkgOSA5IDIuMjUgMCA0LjMxLS44MyA1Ljg5LTIuMmwyLjIgMi4yIDEuMjctMS4yN0wzLjg5IDMuMjdsLS45Ny0uOTh6bTEzLjU1IDE2LjFDMTUuMjYgMTkuMzkgMTMuNyAyMCAxMiAyMGMtMy44NyAwLTctMy4xMy03LTcgMC0xLjcuNjEtMy4yNiAxLjYxLTQuNDdsOS44NiA5Ljg2ek04LjAyIDMuMjggNi42IDEuODZsLS44Ni43MSAxLjQyIDEuNDIuODYtLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGFybU9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43Mi00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNNy44OCAzLjM5IDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptLTEuNDYtNS40N0w4LjQxIDEyLjRsLTEuMDYgMS4wNiAzLjE4IDMuMTggNi02LTEuMDYtMS4wNi00LjkzIDQuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsYXJtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43Mi00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNNy44OCAzLjM5IDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0xMi41IDhIMTF2Nmw0Ljc1IDIuODUuNzUtMS4yMy00LTIuMzdWOHpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE5IDkgMCAwIDAgMC0xOHptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsbEluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDZoLTRjMCAxLjYyLTEuMzggMy0zIDNzLTMtMS4zOC0zLTNINVY1aDE0djR6bS00IDdoNnYzYzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0ydi0zaDZjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxsT3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi4yMSA0LjE2IDQgNHYtNHptNCAxMi00IDRoNHptLTEyIDQtNC00djR6bS00LTEyIDQtNGgtNHptMTIuOTUtLjk1Yy0yLjczLTIuNzMtNy4xNy0yLjczLTkuOSAwcy0yLjczIDcuMTcgMCA5LjkgNy4xNyAyLjczIDkuOSAwIDIuNzMtNy4xNiAwLTkuOXptLTEuMSA4LjhjLTIuMTMgMi4xMy01LjU3IDIuMTMtNy43IDBzLTIuMTMtNS41NyAwLTcuNyA1LjU3LTIuMTMgNy43IDAgMi4xMyA1LjU3IDAgNy43elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0uMjEuMTZoMjR2MjRoLTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbmFseXRpY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di01aDJ2NXptNCAwaC0ydi0zaDJ2M3ptMC01aC0ydi0yaDJ2MnptNCA1aC0yVjdoMnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQW5jaG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTUgMS41NSAxLjU1Yy0uOTYgMS42OS0zLjMzIDMuMDQtNS41NSAzLjM3VjExaDNWOWgtM1Y3LjgyQzE0LjE2IDcuNCAxNSA2LjMgMTUgNWMwLTEuNjUtMS4zNS0zLTMtM1M5IDMuMzUgOSA1YzAgMS4zLjg0IDIuNCAyIDIuODJWOUg4djJoM3Y4LjkyYy0yLjIyLS4zMy00LjU5LTEuNjgtNS41NS0zLjM3TDcgMTVsLTQtM3YzYzAgMy44OCA0LjkyIDcgOSA3czktMy4xMiA5LTd2LTNsLTQgM3pNMTIgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy42IDkuNDggMS44NC0zLjE4Yy4xNi0uMzEuMDQtLjY5LS4yNi0uODVhLjYzNy42MzcgMCAwIDAtLjgzLjIybC0xLjg4IDMuMjRhMTEuNDYzIDExLjQ2MyAwIDAgMC04Ljk0IDBMNS42NSA1LjY3YS42NDMuNjQzIDAgMCAwLS44Ny0uMmMtLjI4LjE4LS4zNy41NC0uMjIuODNMNi40IDkuNDhBMTAuNzggMTAuNzggMCAwIDAgMSAxOGgyMmExMC43OCAxMC43OCAwIDAgMC01LjQtOC41MnpNNyAxNS4yNWExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41em0xMCAwYTEuMjUgMS4yNSAwIDEgMSAwLTIuNSAxLjI1IDEuMjUgMCAwIDEgMCAyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFubm91bmNlbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNyA5aC0yVjVoMnY2em0wIDRoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCAxMi0yIDItMi0yIDItMiAyIDJ6bS0yLTYgMi4xMiAyLjEyIDIuNS0yLjVMMTIgMSA3LjM4IDUuNjJsMi41IDIuNUwxMiA2em0tNiA2IDIuMTItMi4xMi0yLjUtMi41TDEgMTJsNC42MiA0LjYyIDIuNS0yLjVMNiAxMnptMTIgMC0yLjEyIDIuMTIgMi41IDIuNUwyMyAxMmwtNC42Mi00LjYyLTIuNSAyLjVMMTggMTJ6bS02IDYtMi4xMi0yLjEyLTIuNSAyLjVMMTIgMjNsNC42Mi00LjYyLTIuNS0yLjVMMTIgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcEJsb2NraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bS0yLjUgNEEyLjUgMi41IDAgMCAxIDE4IDkuNWMuNDIgMCAuOC4xMSAxLjE1LjI5bC0zLjM2IDMuMzZjLS4xOC0uMzUtLjI5LS43My0uMjktMS4xNXptMi41IDIuNWMtLjQyIDAtLjgtLjExLTEuMTUtLjI5bDMuMzYtMy4zNmMuMTguMzUuMjkuNzMuMjkgMS4xNWEyLjUgMi41IDAgMCAxLTIuNSAyLjV6TTE3IDE4SDdWNmgxMHYxaDJWM2MwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi00aC0ydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcFNob3J0Y3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMThIN1Y2aDEwdjFoMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2MXpNMjAuMzggOS42MiAyMSAxMWwuNjItMS4zOEwyMyA5bC0xLjM4LS42MkwyMSA3bC0uNjIgMS4zOEwxOSA5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA4LTEuMjUgMi43NUwxMiAxMmwyLjc1IDEuMjVMMTYgMTZsMS4yNS0yLjc1TDIwIDEybC0yLjc1LTEuMjV6TTIxIDEzbC0uNjIgMS4zOEwxOSAxNWwxLjM4LjYyTDIxIDE3bC42Mi0xLjM4TDIzIDE1bC0xLjM4LS42MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDEwVjhoLTJ2NEg4bDQgNCA0LTRoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93Q2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTBzMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDIgMiA2LjQ4IDIgMTJ6bTEwLTFoNHYyaC00djNsLTQtNCA0LTR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMHptLTEwIDFIOHYtMmg0VjhsNCA0LTQgNHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOG0wIDJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bS0xLTEwdjRoMnYtNGgzbC00LTQtNCA0aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93T3V0d2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNnYyaDguNTlMNSAxNy41OSA2LjQxIDE5IDE2IDkuNDFWMThoMlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd1JpZ2h0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMDEgMTFINHYyaDEyLjAxdjNMMjAgMTJsLTMuOTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJ0aWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNSAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3BlY3RSYXRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyaC0ydjNoLTN2Mmg1di01ek03IDloM1Y3SDV2NWgyVjl6bTE0LTZIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzZXNzbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3NpZ25tZW50QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIxaC0xdi0yLjVIMTV2LTFoMi41VjE1aDF2Mi41SDIxdjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjY5IDE1Yy4zNi0uNzUuODQtMS40MyAxLjQzLTJIN3YtMmgxMWMxLjA3IDAgMi4wOS4yNSAzIC42OVY1YzAtMS4xLS45LTItMi0yaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDYuNjljLS40NC0uOTEtLjY5LTEuOTMtLjY5LTMgMC0uMzQuMDMtLjY3LjA4LTFIN3YtMmg0LjY5ek0xMiAyLjc1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNNyA3aDEwdjJIN1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3NpZ25tZW50SW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTAgNGMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJINnYtMS40YzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMVYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzaWdubWVudExhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02IDE1aC0ydi0yaDJ2MnptMC00aC0yVjhoMnY2em0tMS05Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnRSZXR1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNCAxMmgtNHYzbC01LTUgNS01djNoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3NpZ25tZW50UmV0dXJuZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMCAxNS01LTVoM1Y5aDR2NGgzbC01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnRUdXJuZWRJbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMiAxNC00LTQgMS40MS0xLjQxTDEwIDE0LjE3bDYuNTktNi41OUwxOCA5bC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMiAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3N1cmVkV29ya2xvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEwaDJ2N0g1ek0xMSAxMGgydjdoLTJ6TTIyIDYgMTIgMSAyIDZ2MmgyMHpNMiAxOXYyaDEyLjRjLS4yMS0uNjQtLjMyLTEuMzEtLjM2LTJIMnpNMTkgMTIuMjZWMTBoLTJ2My4yNnpNMjAgMTRsLTQgMnYyLjU1YzAgMi41MiAxLjcxIDQuODggNCA1LjQ1IDIuMjktLjU3IDQtMi45MyA0LTUuNDVWMTZsLTQtMnptLS43MiA3LTIuMDMtMi4wMyAxLjA2LTEuMDYuOTcuOTcgMi40MS0yLjM4IDEuMDYgMS4wNkwxOS4yOCAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b3JlbmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNnYzbDQtNC00LTR2M2MtNC40MiAwLTggMy41OC04IDggMCAxLjU3LjQ2IDMuMDMgMS4yNCA0LjI2TDYuNyAxNC44QTUuODcgNS44NyAwIDAgMSA2IDEyYzAtMy4zMSAyLjY5LTYgNi02em02Ljc2IDEuNzRMMTcuMyA5LjJjLjQ0Ljg0LjcgMS43OS43IDIuOCAwIDMuMzEtMi42OSA2LTYgNnYtM2wtNCA0IDQgNHYtM2M0LjQyIDAgOC0zLjU4IDgtOCAwLTEuNTctLjQ2LTMuMDMtMS4yNC00LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWNrdXBUYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZ2MTRINnYyaDE0YzEuMSAwIDItLjkgMi0yVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek05IDE2SDR2LTVoNXY1em03IDBoLTV2LTVoNXY1em0wLTdINFY0aDEydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTQgMTN2NGgtNHYtNEg3bDUtNSA1IDVoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhbGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3LjgzYy44NS0uMyAxLjUzLS45OCAxLjgzLTEuODNIMThsLTMgN2MwIDEuNjYgMS41NyAzIDMuNSAzczMuNS0xLjM0IDMuNS0zbC0zLTdoMlY0aC02LjE3Yy0uNDEtMS4xNy0xLjUyLTItMi44My0ycy0yLjQyLjgzLTIuODMgMkgzdjJoMmwtMyA3YzAgMS42NiAxLjU3IDMgMy41IDNTOSAxNC42NiA5IDEzTDYgNmgzLjE3Yy4zLjg1Ljk4IDEuNTMgMS44MyAxLjgzVjE5SDJ2MmgyMHYtMmgtOVY3Ljgzek0yMC4zNyAxM2gtMy43NGwxLjg3LTQuMzZMMjAuMzcgMTN6bS0xMyAwSDMuNjNMNS41IDguNjQgNy4zNyAxM3pNMTIgNmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXJjb2RlUmVhZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOC43NWgtNHYtMS41aDR2MS41em0tLjM4LTQuMzhMMjIgM2wtMy42MiAxLjYzTDE5IDZsMy42Mi0xLjYzek0xOSAxMGwtLjYyIDEuMzdMMjIgMTNsLjYyLTEuMzdMMTkgMTB6bS04IDNjLjU1IDAgMSAuNDUgMSAxdjJjMCAuNTUtLjQ1IDEtMSAxSDkuNjRsLS43NCAyLjc4QTIuOTk5IDIuOTk5IDAgMCAxIDYgMjJhMi45OTUgMi45OTUgMCAwIDEtMi45LTMuNzdsMS44Mi02LjhBNC4wMjggNC4wMjggMCAwIDEgMyA4YzAtMi4yMSAxLjc5LTQgNC00aDhjMS40OSAwIDIuNDUgMS41NiAxLjc5IDIuODlsLTIgNEMxNC40NSAxMS41NyAxMy43NSAxMiAxMyAxMmgtMi4wMmwtLjI3IDFIMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdGNoUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDhIN2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTQgMTIuNWgtMlYxOWgydjEuNXptMC0yLjVoLTJjMC0xLjUtMi41LTMtMi41LTUgMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNWMwIDItMi41IDMuNS0yLjUgNXptNS0xMS41SDZDNiA1LjY3IDYuNjcgNSA3LjUgNWg5Yy44MyAwIDEuNS42NyAxLjUgMS41em0tMS0zSDdDNyAyLjY3IDcuNjcgMiA4LjUgMmg3Yy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb29rT25saW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6TTcgMThWNmgxMHYxMkg3em05LTdWOS4xNEMxNiA4LjUxIDE1LjU1IDggMTUgOEg5Yy0uNTUgMC0xIC41MS0xIDEuMTR2MS45NmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMXYxLjc2YzAgLjYzLjQ1IDEuMTQgMSAxLjE0aDZjLjU1IDAgMS0uNTEgMS0xLjE0VjEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xem0tMy41IDMuNWgtMXYtMWgxdjF6bTAtMmgtMXYtMWgxdjF6bTAtMmgtMXYtMWgxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA0aDV2OGwtMi41LTEuNUw2IDEyVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvb2ttYXJrQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgN2gtMnYyaC0yVjdoLTJWNWgyVjNoMnYyaDJ2MnptLTIgMTQtNy0zLTcgM1Y1YzAtMS4xLjktMiAyLTJoN2E1LjAwMiA1LjAwMiAwIDAgMCA1IDcuOVYyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9va21hcmtBZGRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDIxLTctMy03IDNWNWMwLTEuMS45LTIgMi0yaDdhNS4wMDIgNS4wMDIgMCAwIDAgNSA3LjlWMjF6TTE3LjgzIDkgMTUgNi4xN2wxLjQxLTEuNDEgMS40MSAxLjQxIDMuNTQtMy41NCAxLjQxIDEuNDFMMTcuODMgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9va21hcmtCb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAyMWw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTUtNS0yLjE4TDcgMThWNWgxMHYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9va21hcmtSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA3aC02VjVoNnYyem0tMiAzLjlBNS4wMDIgNS4wMDIgMCAwIDEgMTQgM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb29rbWFya3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDE4IDIgMVYzYzAtMS4xLS45LTItMi0ySDguOTlDNy44OSAxIDcgMS45IDcgM2gxMGMxLjEgMCAyIC45IDIgMnYxM3pNMTUgNUg1Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjdjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb3dzZUdhbGxlcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDNhOSA5IDAgMSAwIC4wMDEgMTguMDAxQTkgOSAwIDAgMCA5IDN6bTIuNzkgMTMuMjFMOCAxMi40MVY3aDJ2NC41OWwzLjIxIDMuMjEtMS40MiAxLjQxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45OSAzLjUydjIuMTZBNi45OSA2Ljk5IDAgMCAxIDIyIDEyYzAgMi43OS0xLjY0IDUuMi00LjAxIDYuMzJ2Mi4xNkMyMS40OCAxOS4yNCAyNCAxNS45MSAyNCAxMnMtMi41Mi03LjI0LTYuMDEtOC40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVnUmVwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOGgtMi44MWE1Ljk4NSA1Ljk4NSAwIDAgMC0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJ1aWxkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTQuOSAxMy40OS0xLjQgMS40Yy0uMi4yLS41MS4yLS43MSAwbC0zLjQxLTMuNDFjLTEuMjIuNDMtMi42NC4xNy0zLjYyLS44MWEzLjQ2OCAzLjQ2OCAwIDAgMS0uNTktNC4xbDIuMzUgMi4zNSAxLjQxLTEuNDEtMi4zNS0yLjM0YzEuMzItLjcxIDIuOTktLjUyIDQuMS41OS45OC45OCAxLjI0IDIuNC44MSAzLjYybDMuNDEgMy40MWMuMTkuMTkuMTkuNTEgMCAuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVpbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuNyAxOS05LjEtOS4xYy45LTIuMy40LTUtMS41LTYuOS0yLTItNS0yLjQtNy40LTEuM0w5IDYgNiA5IDEuNiA0LjdDLjQgNy4xLjkgMTAuMSAyLjkgMTIuMWMxLjkgMS45IDQuNiAyLjQgNi45IDEuNWw5LjEgOS4xYy40LjQgMSAuNCAxLjQgMGwyLjMtMi4zYy41LS40LjUtMS4xLjEtMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA4LTQgNGgzYzAgMy4zMS0yLjY5IDYtNiA2YTUuODcgNS44NyAwIDAgMS0yLjgtLjdsLTEuNDYgMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgMjBjNC40MiAwIDgtMy41OCA4LThoM2wtNC00ek02IDEyYzAtMy4zMSAyLjY5LTYgNi02IDEuMDEgMCAxLjk3LjI1IDIuOC43bDEuNDYtMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgNGMtNC40MiAwLTggMy41OC04IDhIMWw0IDQgNC00SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyTW9udGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC0xVjJoLTJ2Mkg4VjJINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMjBhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDVWMTBoMTR2MTB6TTkgMTRIN3YtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bS04IDRIN3YtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTQgMGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyVG9kYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzaC0xVjFoLTJ2Mkg3VjFINXYySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxOEg0VjhoMTZ2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTdoMTh2Mkgzem0wLTdoMTh2NUgzem0wLTRoMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxlbmRhclZpZXdNb250aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTggMTFINFY2aDR2NXptNiAwaC00VjZoNHY1em02IDBoLTRWNmg0djV6TTggMThINHYtNWg0djV6bTYgMGgtNHYtNWg0djV6bTYgMGgtNHYtNWg0djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyVmlld1dlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNyAyaDIuNXYxMkgxM1Y2em0tMiAxMkg4LjVWNkgxMXYxMnpNNCA2aDIuNXYxMkg0VjZ6bTE2IDEyaC0yLjVWNkgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhRW5oYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAzIDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJoLTMuMTdMMTUgM0g5em0zIDE1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMTcgMS4yNS0yLjc1TDE2IDEzbC0yLjc1LTEuMjVMMTIgOWwtMS4yNSAyLjc1TDggMTNsMi43NSAxLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW5jZWxTY2hlZHVsZVNlbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDljLS40MiAwLS44My4wNC0xLjI0LjExTDEuMDEgMyAxIDEwbDkgMi05IDIgLjAxIDcgOC4wNy0zLjQ2QzkuNTkgMjEuMTkgMTIuNzEgMjQgMTYuNSAyNGM0LjE0IDAgNy41LTMuMzYgNy41LTcuNVMyMC42NCA5IDE2LjUgOXptMCAxM2MtMy4wMyAwLTUuNS0yLjQ3LTUuNS01LjVzMi40Ny01LjUgNS41LTUuNSA1LjUgMi40NyA1LjUgNS41LTIuNDcgNS41LTUuNSA1LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjI3IDE0LjAzLTEuNzcgMS43Ni0xLjc3LTEuNzYtLjcuNyAxLjc2IDEuNzctMS43NiAxLjc3LjcuNyAxLjc3LTEuNzYgMS43NyAxLjc2LjctLjctMS43Ni0xLjc3IDEuNzYtMS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FyZEdpZnRjYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtMi4xOGMuMTEtLjMxLjE4LS42NS4xOC0xYTIuOTk2IDIuOTk2IDAgMCAwLTUuNS0xLjY1bC0uNS42Ny0uNS0uNjhDMTAuOTYgMi41NCAxMC4wNSAyIDkgMiA3LjM0IDIgNiAzLjM0IDYgNWMwIC4zNS4wNy42OS4xOCAxSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTUtMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek05IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDUuMDhMNyAxMC44MyA4LjYyIDEyIDExIDguNzZsMS0xLjM2IDEgMS4zNkwxNS4zOCAxMiAxNyAxMC44MyAxNC45MiA4SDIwdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhcmRNZW1iZXJzaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjExIDAtMiAuODktMiAydjExYzAgMS4xMS44OSAyIDIgMmg0djVsNC0yIDQgMnYtNWg0YzEuMTEgMCAyLS44OSAyLTJWNGMwLTEuMTEtLjg5LTItMi0yem0wIDEzSDR2LTJoMTZ2MnptMC01SDRWNGgxNnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXJkVHJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtM1Y0YzAtMS4xMS0uODktMi0yLTJIOWMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTFjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yek05IDRoNnYySDlWNHptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDN2MmgyVjhoNnYyaDJWOGgzdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYW5nZUhpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDcuNzcgMTguMzkgMThINS42MUwxMiA3Ljc3TTEyIDQgMiAyMGgyMEwxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGVja0NpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU5IDcuNTggMTAgMTQuMTdsLTMuNTktMy41OEw1IDEybDUgNSA4LTh6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE1LTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hyb21lUmVhZGVyTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNLTc0IDI5aDQ4djQ4aC00OFYyOXpNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTJoN3YxLjVoLTd6bTAtMi41aDdWMTFoLTd6bTAgNWg3VjE2aC03ek0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNWgtOVY2aDl2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENpcmNsZU5vdGlmaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE2LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNXptNS0yLjVIN3YtMWwxLTF2LTIuNjFDOCA5LjI3IDkuMDMgNy40NyAxMSA3di0uNWMwLS41Ny40My0xIDEtMXMxIC40MyAxIDFWN2MxLjk3LjQ3IDMgMi4yOCAzIDQuMzlWMTRsMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgNGg1djhsLTIuNS0xLjVMNiAxMlY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG9zZUZ1bGxzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzLjQxIDE2LjcxIDguNyAyMCAxMmgtOFY0bDMuMjkgMy4yOUwyMC41OSAyIDIyIDMuNDF6TTMuNDEgMjJsNS4yOS01LjI5TDEyIDIwdi04SDRsMy4yOSAzLjI5TDIgMjAuNTkgMy40MSAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29kZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjE3IDEyLTQuNTgtNC41OUwxNiA2bDYgNi0zLjU5IDMuNTlMMTcgMTQuMTcgMTkuMTcgMTJ6TTEuMzkgNC4yMmw0LjE5IDQuMTlMMiAxMmw2IDYgMS40MS0xLjQxTDQuODMgMTIgNyA5LjgzbDEyLjc4IDEyLjc4IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQgMTYuNiA0LjggMTJsNC42LTQuNkw4IDZsLTYgNiA2IDYgMS40LTEuNHptNS4yIDAgNC42LTQuNi00LjYtNC42TDE2IDZsNiA2LTYgNi0xLjQtMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb21tZW50QmFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0xIDExLTIuNS0xLjVMMTQgMTNWNWg1djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbW1pdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjkgMTFhNSA1IDAgMCAwLTkuOCAwSDJ2Mmg1LjFhNSA1IDAgMCAwIDkuOCAwSDIydi0yaC01LjF6TTEyIDE1Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tbXV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRINUMzLjM0IDQgMiA1LjM0IDIgN3Y4YzAgMS42NiAxLjM0IDMgMyAzbC0xIDF2MWgxbDItMi4wM0w5IDE4di01SDRWNS45OEwxMyA2djJoMlY3YzAtMS42Ni0xLjM0LTMtMy0zek01IDE0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTE1LjU3LTQuMzRjLS4xNC0uNC0uNTItLjY2LS45Ny0uNjZoLTcuMTljLS40NiAwLS44My4yNi0uOTguNjZMMTAgMTMuNzdsLjAxIDUuNTFjMCAuMzguMzEuNzIuNjkuNzJoLjYyYy4zOCAwIC42OC0uMzguNjgtLjc2VjE4aDh2MS4yNGMwIC4zOC4zMS43Ni42OS43NmguNjFjLjM4IDAgLjY5LS4zNC42OS0uNzJsLjAxLTEuMzd2LTQuMTRsLTEuNDMtNC4xMXptLTguMTYuMzRoNy4xOWwxLjAzIDNoLTkuMjVsMS4wMy0zek0xMiAxNmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem04IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tcGFyZUFycm93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDEgMTRIMnYyaDcuMDF2M0wxMyAxNWwtMy45OS00djN6bTUuOTgtMXYtM0gyMlY4aC03LjAxVjVMMTEgOWwzLjk5IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbXByZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxOWgzdjNoMnYtM2gzbC00LTQtNCA0em04LTE1aC0zVjFoLTJ2M0g4bDQgNCA0LTR6TTQgOXYyaDE2VjlINHpNNCAxMmgxNnYySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RQYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnptLTIgOGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOEg4di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMTYgMTcuNDNWMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RTdXBwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSAyQzYuODEgMiAzIDUuODEgMyAxMC41UzYuODEgMTkgMTEuNSAxOWguNXYzYzQuODYtMi4zNCA4LTcgOC0xMS41QzIwIDUuODEgMTYuMTkgMiAxMS41IDJ6bTEgMTQuNWgtMnYtMmgydjJ6bTAtMy41aC0yYzAtMy4yNSAzLTMgMy01IDAtMS4xLS45LTItMi0ycy0yIC45LTIgMmgtMmMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMi41LTMgMi43NS0zIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RsZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOC40NiAxNC40NWwtMS4zNi0uNjJjLjI4LS42MS40MS0xLjI0LjQtMS44NmE0LjQyIDQuNDIgMCAwIDAtLjQtMS44bDEuMzYtLjYzYy4zNS43NS41MyAxLjU2LjU0IDIuNC4wMS44Ni0uMTcgMS43LS41NCAyLjUxem0zLjA3IDEuNTYtMS4zLS43NGMuNTItLjkyLjc4LTEuOTguNzgtMy4xNSAwLTEuMTktLjI3LTIuMzMtLjgtMy40bDEuMzQtLjY3Yy42NCAxLjI4Ljk2IDIuNjUuOTYgNC4wNyAwIDEuNDMtLjMzIDIuNzQtLjk4IDMuODl6bTMuMTQgMS4zMi0xLjM1LS42NmMuNzgtMS42IDEuMTgtMy4xOCAxLjE4LTQuNjkgMC0xLjUxLS40LTMuMDctMS4xOC00LjY0bDEuMzQtLjY3Yy45IDEuNzggMS4zNCAzLjU2IDEuMzQgNS4zMSAwIDEuNzQtLjQ0IDMuNTQtMS4zMyA1LjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS44OCA5LjE0YzEuMjguMDYgMS42MSAxLjE1IDEuNjMgMS42NmgxLjc5Yy0uMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQgNy42MSA4IDkgOCAxMi4xNGMwIDEuOTQuOTMgNC4yNCAzLjg0IDQuMjQgMi4yMiAwIDMuNDEtMS42NSAzLjQ0LTIuOTVoLTEuNzljLS4wMy41OS0uNDUgMS4zOC0xLjYzIDEuNDQtMS4zMS0uMDQtMS44Ni0xLjA2LTEuODYtMi43MyAwLTIuODkgMS4yOC0yLjk4IDEuODgtM3pNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyZWRpdENhcmRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45IDIxLjkgMi4xIDIuMS42OSAzLjUxbDEuNTUgMS41NWMtLjE1LjI4LS4yMy42LS4yMy45NEwyIDE4YzAgMS4xMS44OSAyIDIgMmgxMy4xN2wzLjMxIDMuMzEgMS40Mi0xLjQxek00IDEyVjhoMS4xN2w0IDRINHptMi44My04SDIwYzEuMTEgMCAyIC44OSAyIDJ2MTJjMCAuMzQtLjA4LjY2LS4yMy45NEwxNC44MyAxMkgyMFY4aC05LjE3bC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxNHYtMUgxMXYuNWgydi0xaC0yLjVjLS41NSAwLTEtLjQ1LTEtMVYxMGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxSDEzdi0uNWgtMnYxaDIuNWMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxaC0zYy0uNTUgMC0xLS40NS0xLTF6bTcuNSAxaDNjLjU1IDAgMS0uNDUgMS0xdi0xLjVjMC0uNTUtLjQ1LTEtMS0xaC0yLjV2LTFoMnYuNUgyMXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFoMi41djFoLTJWMTNIMTZ2MWMwIC41NS40NSAxIDEgMXptLTktNWMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTF2LTFINi41di41aC0ydi0zaDJ2LjVIOHYtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lFeGNoYW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjg5IDExLjFjLTEuNzgtLjU5LTIuNjQtLjk2LTIuNjQtMS45IDAtMS4wMiAxLjExLTEuMzkgMS44MS0xLjM5IDEuMzEgMCAxLjc5Ljk5IDEuOSAxLjM0bDEuNTgtLjY3Yy0uMTUtLjQ1LS44Mi0xLjkyLTIuNTQtMi4yNFY1aC0ydjEuMjZjLTIuNDguNTYtMi40OSAyLjg2LTIuNDkgMi45NiAwIDIuMjcgMi4yNSAyLjkxIDMuMzUgMy4zMSAxLjU4LjU2IDIuMjggMS4wNyAyLjI4IDIuMDMgMCAxLjEzLTEuMDUgMS42MS0xLjk4IDEuNjEtMS44MiAwLTIuMzQtMS44Ny0yLjQtMi4wOWwtMS42Ni42N2MuNjMgMi4xOSAyLjI4IDIuNzggMi45IDIuOTZWMTloMnYtMS4yNGMuNC0uMDkgMi45LS41OSAyLjktMy4yMiAwLTEuMzktLjYxLTIuNjEtMy4wMS0zLjQ0ek0zIDIxSDF2LTZoNnYySDQuNTJjMS42MSAyLjQxIDQuMzYgNCA3LjQ4IDRhOSA5IDAgMCAwIDktOWgyYzAgNi4wOC00LjkyIDExLTExIDExLTMuNzIgMC03LjAxLTEuODUtOS00LjY3VjIxem0tMi05QzEgNS45MiA1LjkyIDEgMTIgMWMzLjcyIDAgNy4wMSAxLjg1IDkgNC42N1YzaDJ2NmgtNlY3aDIuNDhDMTcuODcgNC41OSAxNS4xMiAzIDEyIDNhOSA5IDAgMCAwLTkgOUgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYW5nZXJvdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTcgMTUuNzQgMTUuNzQgMTcgMTIgMTMuMjYgOC4yNiAxNyA3IDE1Ljc0IDEwLjc0IDEyIDcgOC4yNiA4LjI2IDcgMTIgMTAuNzQgMTUuNzQgNyAxNyA4LjI2IDEzLjI2IDEyIDE3IDE1Ljc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXNoYm9hcmRDdXN0b21pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDNoOHY4SDN6bTEwIDBoOHY4aC04ek0zIDEzaDh2OEgzem0xNSAwaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXNoYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDhWM0gzdjEwem0wIDhoOHYtNkgzdjZ6bTEwIDBoOFYxMWgtOHYxMHptMC0xOHY2aDhWM2gtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YUV4cGxvcmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJjMCAxLjMzLjI2IDIuNjEuNzQgMy43N0w4IDEwLjVsMy4zIDIuNzhMMTQuNTggMTBIMTNWOGg1djVoLTJ2LTEuNThMMTEuNDEgMTZsLTMuMjktMi43OS00LjQgNC40QTkuOTk2IDkuOTk2IDAgMCAwIDEyIDIyaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUyLTQuNDgtMTAtMTAtMTB6bTcuNSAxOC41Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhdGFUaHJlc2hvbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTguMzMgNS4xNyAyIDIgMy42Ny0zLjY3IDEuNDEgMS40MUwxMi42NyAxM2wtMi0yLTMgMy0xLjQxLTEuNDEgNC40MS00LjQyek01IDE2aDEuNzJMNSAxNy43MlYxNnptLjg0IDMgMy0zaDEuODNsLTMgM0g1Ljg0em0zLjk2IDAgMy0zaDEuNjJsLTMgM0g5Ljh6bTMuNzMgMCAzLTNoMS42MmwtMyAzaC0xLjYyek0xOSAxOWgtMS43M0wxOSAxNy4yN1YxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0ZVJhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMUg3djJoMnYtMnptNCAwaC0ydjJoMnYtMnptNCAwaC0ydjJoMnYtMnptMi03aC0xVjJoLTJ2Mkg4VjJINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMjBhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOWgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVsZXRlRm9yZXZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnptMi40Ni03LjEyIDEuNDEtMS40MUwxMiAxMi41OWwyLjEyLTIuMTIgMS40MSAxLjQxTDEzLjQxIDE0bDIuMTIgMi4xMi0xLjQxIDEuNDFMMTIgMTUuNDFsLTIuMTIgMi4xMi0xLjQxLTEuNDFMMTAuNTkgMTRsLTIuMTMtMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVsZXRlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek04IDloOHYxMEg4Vjl6bTcuNS01LTEtMWgtNWwtMSAxSDV2MmgxNFY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlbnNpdHlMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6TTMgMTloMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZW5zaXR5TWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djJIM3pNMyAxOWgxOHYySDN6TTMgMTFoMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZW5zaXR5U21hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDJoMTh2Mkgzek0zIDIwaDE4djJIM3pNMyAxNGgxOHYySDN6TTMgOGgxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0yIDE2SDh2LTJoOHYyem0wLTRIOHYtMmg4djJ6bS0zLTVWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlzYWJsZWRCeURlZmF1bHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2MThoMThWM0gzem0xNCAxMi41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpc2FibGVkVmlzaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk5IDEyLjM0Yy4wMS0uMTEuMDEtLjIzLjAxLS4zNCAwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMmMwIDUuMTcgMy45MyA5LjQzIDguOTYgOS45NWE5LjM0MyA5LjM0MyAwIDAgMS0yLjMyLTIuNjhBOC4wMSA4LjAxIDAgMCAxIDQgMTJjMC0xLjg1LjYzLTMuNTUgMS42OS00LjlsNS42NiA1LjY2Yy41Ni0uNCAxLjE3LS43MyAxLjgyLTFMNy4xIDUuNjlBNy45MDIgNy45MDIgMCAwIDEgMTIgNGM0LjI0IDAgNy43IDMuMjkgNy45OCA3LjQ1LjcxLjIyIDEuMzkuNTIgMi4wMS44OXpNMTcgMTNjLTMuMTggMC01LjkgMS44Ny03IDQuNSAxLjEgMi42MyAzLjgyIDQuNSA3IDQuNXM1LjktMS44NyA3LTQuNWMtMS4xLTIuNjMtMy44Mi00LjUtNy00LjV6bTAgN2EyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXptMS41LTIuNWMwIC44My0uNjcgMS41LTEuNSAxLjVzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlzcGxheVNldHRpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDguMjVoOHYxLjVINnpNMTYuNSA5Ljc1SDE4di0xLjVoLTEuNVY3SDE1djRoMS41ek0xMCAxMi4yNWg4djEuNWgtOHpNNy41IDE1SDl2LTRINy41djEuMjVINnYxLjVoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxM0g0Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTF2LTZjMC0uNTUtLjQ1LTEtMS0xek03IDE5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMjAgM0g0Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTFWNGMwLS41NS0uNDUtMS0xLTF6TTcgOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbmVBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA3LTEuNDEtMS40MS02LjM0IDYuMzQgMS40MSAxLjQxTDE4IDd6bTQuMjQtMS40MUwxMS42NiAxNi4xNyA3LjQ4IDEybC0xLjQxIDEuNDFMMTEuNjYgMTlsMTItMTItMS40Mi0xLjQxek0uNDEgMTMuNDEgNiAxOWwxLjQxLTEuNDFMMS44MyAxMiAuNDEgMTMuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbmVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyA1LjAzIDEuNCAxLjRMOC40MyAxOS4xN2wtNS42LTUuNiAxLjQtMS40IDQuMiA0LjJMMTkuNzcgNS4wM20wLTIuODNMOC40MyAxMy41NGwtNC4yLTQuMkwwIDEzLjU3IDguNDMgMjIgMjQgNi40MyAxOS43NyAyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2LjIgNC44IDEybC0xLjQgMS40TDkgMTkgMjEgN2wtMS40LTEuNEw5IDE2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbnV0TGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1LjA4VjJjLTUgLjUtOSA0LjgxLTkgMTBzNCA5LjUgOSAxMHYtMy4wOGMtMy0uNDgtNi0zLjQtNi02LjkyczMtNi40NCA2LTYuOTJ6TTE4Ljk3IDExSDIyYy0uNDctNS00LTguNTMtOS05djMuMDhDMTYgNS41MSAxOC41NCA4IDE4Ljk3IDExek0xMyAxOC45MlYyMmM1LS40NyA4LjUzLTQgOS05aC0zLjAzYy0uNDMgMy0yLjk3IDUuNDktNS45NyA1LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb251dFNtYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOS4xNlYyYy01IC41LTkgNC43OS05IDEwczQgOS41IDkgMTB2LTcuMTZjLTEtLjQxLTItMS41Mi0yLTIuODRzMS0yLjQzIDItMi44NHpNMTQuODYgMTFIMjJjLS40OC00Ljc1LTQtOC41My05LTl2Ny4xNmMxIC4zIDEuNTIuOTggMS44NiAxLjg0ek0xMyAxNC44NFYyMmM1LS40NyA4LjUyLTQuMjUgOS05aC03LjE0Yy0uMzQuODYtLjg2IDEuNTQtMS44NiAxLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcmFnSW5kaWNhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxOGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6bS0yLThjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDRjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREeW5hbWljRm9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIwdi05aC0yVjRoN2wtMiA1aDJsLTUgMTF6bS0yLTd2N0g0Yy0xLjEgMC0yLS45LTItMnYtM2MwLTEuMS45LTIgMi0yaDExem0tOC43NSAyLjc1aC0xLjV2MS41aDEuNXYtMS41ek0xMyA0djdINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDl6TTYuMjUgNi43NWgtMS41djEuNWgxLjV2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wNSA4LjA1YTcuMDAxIDcuMDAxIDAgMCAwLS4wMiA5Ljg4YzEuNDctMy40IDQuMDktNi4yNCA3LjM2LTcuOTNBMTUuOTUyIDE1Ljk1MiAwIDAgMCA4IDE5LjMyYzIuNiAxLjIzIDUuOC43OCA3Ljk1LTEuMzdDMTkuNDMgMTQuNDcgMjAgNCAyMCA0UzkuNTMgNC41NyA2LjA1IDguMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXRDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIySDVhMiAyIDAgMCAxLTItMmwuMDEtMTRjMC0xLjEuODgtMiAxLjk5LTJoMVYyaDJ2Mmg4VjJoMnYyaDFjMS4xIDAgMiAuOSAyIDJ2NmgtMnYtMkg1djEwaDd2MnptMTAuMTMtNS4wMS43MS0uNzFhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0uNzEtLjcxYS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtLjcxLjcxIDIuMTIgMi4xMnptLS43MS43MS01LjMgNS4zSDE0di0yLjEybDUuMy01LjMgMi4xMiAyLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0RG9jdW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxOS44OFYyMmgyLjEybDUuMTctNS4xNy0yLjEyLTIuMTJ6TTIwIDhsLTYtNkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMTJ2LTIuOTVsOC04Vjh6bS03IDFWMy41TDE4LjUgOUgxM3pNMjIuNzEgMTRsLS43MS0uNzFhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0uNzEuNzFMMjIgMTYuMTJsLjcxLS43MWEuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuMTI2IDguMTI1IDEuOTM3LTEuOTM3IDMuNzQ3IDMuNzQ3LTEuOTM3IDEuOTM4ek0yMC43MSA1LjYzbC0yLjM0LTIuMzRhMSAxIDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NUwyMC43MSA3YTEgMSAwIDAgMCAwLTEuMzd6TTIgNWw2LjYzIDYuNjNMMyAxNy4yNVYyMWgzLjc1bDUuNjMtNS42MkwxOCAyMWwyLTJMNCAzIDIgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWRpdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTdWOS45M0wxMy45MyAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTguOTNMMTQuMDcgMTdIN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNWg0LjI0bDcuMi03LjItNC4yNC00LjI0LTcuMiA3LjJ6TTIyLjkxIDIuNDkgMjEuNSAxLjA4Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtMS4wNiAxLjA2IDQuMjQgNC4yNCAxLjA2LTEuMDZjLjc5LS43OC43OS0yLjA1IDAtMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMjRWMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE3aDE0djJINXptNy0xMkw1LjMzIDE1aDEzLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdXJvU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTguNUE2LjQ4IDYuNDggMCAwIDEgOS4yNCAxNUgxNXYtMkg4LjU4Yy0uMDUtLjMzLS4wOC0uNjYtLjA4LTFzLjAzLS42Ny4wOC0xSDE1VjlIOS4yNEE2LjQ5MSA2LjQ5MSAwIDAgMSAxNSA1LjVjMS42MSAwIDMuMDkuNTkgNC4yMyAxLjU3TDIxIDUuM0E4Ljk1NSA4Ljk1NSAwIDAgMCAxNSAzYy0zLjkyIDAtNy4yNCAyLjUxLTguNDggNkgzdjJoMy4wNmE4LjI2MiA4LjI2MiAwIDAgMCAwIDJIM3YyaDMuNTJjMS4yNCAzLjQ5IDQuNTYgNiA4LjQ4IDYgMi4zMSAwIDQuNDEtLjg3IDYtMi4zbC0xLjc4LTEuNzdjLTEuMTMuOTgtMi42IDEuNTctNC4yMiAxLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdmVudFJlcGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEyVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg3di0ySDVWMTBoMTR2Mmgyem0tNS4zNiA4YTMuNTA0IDMuNTA0IDAgMCAwIDYuODYtMWMwLTEuOTMtMS41Ny0zLjUtMy41LTMuNS0uOTUgMC0xLjgyLjM4LTIuNDUgMUgxOFYxOGgtNHYtNGgxLjV2MS40M2MuOS0uODggMi4xNC0xLjQzIDMuNS0xLjQzIDIuNzYgMCA1IDIuMjQgNSA1YTUuMDAyIDUuMDAyIDAgMCAxLTkuOSAxaDEuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV2ZW50U2VhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTh2M2gzdi0zaDEwdjNoM3YtNkg0djN6bTE1LThoM3YzaC0zdi0zek0yIDEwaDN2M0gydi0zem0xNSAzSDdWNWMwLTEuMS45LTIgMi0yaDZjMS4xIDAgMiAuOSAyIDJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmgtNXY1aDV2LTV6TTE2IDF2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yaC0xVjFoLTJ6bTMgMThINVY4aDE0djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeGl0VG9BcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wOSAxNS41OSAxMS41IDE3bDUtNS01LTUtMS40MSAxLjQxTDEyLjY3IDExSDN2Mmg5LjY3bC0yLjU4IDIuNTl6TTE5IDNINWEyIDIgMCAwIDAtMiAydjRoMlY1aDE0djE0SDV2LTRIM3Y0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMGgxNnYySDR6TTQgMmgxNnYySDR6bTkgN2gzbC00LTQtNCA0aDN2Nkg4bDQgNCA0LTRoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cGxvcmVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjE5IDE0LjE5LTEuNDEtMS40MS0xLjU2LTEuNTZMMTEgMTEgOS44MSA5LjgxIDQuOTMgNC45MyAyLjI3IDIuMjcgMSAzLjU0bDIuNzggMi43OGMtLjExLjE2LS4yMS4zMi0uMzEuNDgtLjA0LjA3LS4wOS4xNC0uMTMuMjEtLjA5LjE1LS4xNy4zMS0uMjUuNDctLjA1LjEtLjEuMjEtLjE2LjMyLS4wNi4xNC0uMTMuMjgtLjE5LjQzLS4xLjI0LS4xOS40OC0uMjcuNzNsLS4wOS4zYy0uMDUuMi0uMS4zOS0uMTQuNTktLjAyLjExLS4wNC4yMi0uMDcuMzMtLjA0LjItLjA3LjQtLjA5LjYxLS4wMS4xLS4wMy4yLS4wMy4zLS4wMy4yOS0uMDUuNi0uMDUuOTEgMCA1LjUyIDQuNDggMTAgMTAgMTAgLjMxIDAgLjYyLS4wMi45Mi0uMDVsLjMtLjAzYy4yLS4wMi40MS0uMDYuNjEtLjA5LjExLS4wMi4yMi0uMDQuMzMtLjA3LjItLjA0LjM5LS4wOS41OC0uMTUuMS0uMDMuMi0uMDUuMy0uMDkuMjUtLjA4LjQ5LS4xNy43My0uMjcuMTUtLjA2LjI5LS4xMy40My0uMTkuMTEtLjA1LjIyLS4xLjMzLS4xNi4xNi0uMDguMzEtLjE2LjQ2LS4yNS4wNy0uMDQuMTQtLjA5LjIxLS4xMy4xNi0uMS4zMi0uMi40OC0uMzFMMjAuNDYgMjNsMS4yNy0xLjI3LTIuNjYtMi42Ni00Ljg4LTQuODh6TTYgMThsMy02LjQ2TDEyLjQ2IDE1IDYgMTh6bTE2LTZjMCAuMzEtLjAyLjYyLS4wNS45MmwtLjAzLjNjLS4wMi4yLS4wNi40MS0uMDkuNjEtLjAyLjExLS4wNC4yMi0uMDcuMzMtLjA0LjItLjA5LjM5LS4xNS41OC0uMDMuMS0uMDUuMjEtLjA5LjMxLS4wOC4yNS0uMTcuNDktLjI3LjczLS4wNi4xNS0uMTMuMjktLjE5LjQzLS4wNS4xMS0uMS4yMi0uMTYuMzMtLjA4LjE2LS4xNi4zMS0uMjUuNDYtLjA0LjA3LS4wOS4xNC0uMTMuMjEtLjEuMTYtLjIuMzItLjMxLjQ4TDE1IDEyLjQ2IDE4IDZsLTYuNDYgMy01LjIyLTUuMjJjLjE2LS4xMS4zMi0uMjEuNDgtLjMxLjA3LS4wNC4xNC0uMDkuMjEtLjEzLjE1LS4wOS4zMS0uMTcuNDYtLjI1LjExLS4wNS4yMi0uMS4zMy0uMTYuMTQtLjA2LjI4LS4xMy40My0uMTkuMjQtLjEuNDgtLjE5LjczLS4yN2wuMzEtLjA5Yy4xOS0uMDUuMzgtLjExLjU4LS4xNS4xMS0uMDIuMjItLjA0LjMzLS4wNy4yLS4wNC40LS4wNy42MS0uMDkuMS0uMDEuMi0uMDMuMy0uMDMuMjktLjAyLjYtLjA0LjkxLS4wNCA1LjUyIDAgMTAgNC40OCAxMCAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwbG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwLjljLS42MSAwLTEuMS40OS0xLjEgMS4xcy40OSAxLjEgMS4xIDEuMWMuNjEgMCAxLjEtLjQ5IDEuMS0xLjFzLS40OS0xLjEtMS4xLTEuMXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMi4xOSAxMi4xOUw2IDE4bDMuODEtOC4xOUwxOCA2bC0zLjgxIDguMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4dGVuc2lvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc4IDIyLjYxLTEuNjMtMS42M2MtLjA1IDAtLjEuMDItLjE1LjAyaC0zLjhjMC0yLjcxLTIuMTYtMy0yLjctM3MtMi43LjI5LTIuNyAzSDVjLTEuMSAwLTItLjktMi0ydi0zLjhjMi43MSAwIDMtMi4xNiAzLTIuN3MtLjMtMi43LTIuOTktMi43VjZjMC0uMDUuMDItLjA5LjAyLS4xNEwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6bS4yMi01LjQ0VjE1YTIuNSAyLjUgMCAwIDAgMC01VjZjMC0xLjEtLjktMi0yLTJoLTRhMi41IDIuNSAwIDAgMC01IDBINi44M0wyMCAxNy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAxMUgxOVY3YzAtMS4xLS45LTItMi0yaC00VjMuNWEyLjUgMi41IDAgMCAwLTUgMFY1SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2My44SDMuNWMxLjQ5IDAgMi43IDEuMjEgMi43IDIuN3MtMS4yMSAyLjctMi43IDIuN0gyVjIwYzAgMS4xLjkgMiAyIDJoMy44di0xLjVjMC0xLjQ5IDEuMjEtMi43IDIuNy0yLjcgMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdWMjJIMTdjMS4xIDAgMi0uOSAyLTJ2LTRoMS41YTIuNSAyLjUgMCAwIDAgMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMS43NWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41em02IDBhMS4yNSAxLjI1IDAgMSAwIDAgMi41IDEuMjUgMS4yNSAwIDAgMCAwLTIuNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LTggMC0uMjkuMDItLjU4LjA1LS44NiAyLjM2LTEuMDUgNC4yMy0yLjk4IDUuMjEtNS4zN2E5Ljk3NCA5Ljk3NCAwIDAgMCAxMC40MSAzLjk3Yy4yMS43MS4zMyAxLjQ3LjMzIDIuMjYgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY3RDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMCAzSDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNMTAgMTdINXYtMmg1djJ6bTAtNEg1di0yaDV2MnptMC00SDVWN2g1djJ6bTQuODIgNkwxMiAxMi4xNmwxLjQxLTEuNDEgMS40MSAxLjQyTDE3Ljk5IDlsMS40MiAxLjQyTDE0LjgyIDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXZvcml0ZUJvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgM2MtMS43NCAwLTMuNDEuODEtNC41IDIuMDlDMTAuOTEgMy44MSA5LjI0IDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDMuNzggMy40IDYuODYgOC41NSAxMS41NEwxMiAyMS4zNWwxLjQ1LTEuMzJDMTguNiAxNS4zNiAyMiAxMi4yOCAyMiA4LjUgMjIgNS40MiAxOS41OCAzIDE2LjUgM3ptLTQuNCAxNS41NS0uMS4xLS4xLS4xQzcuMTQgMTQuMjQgNCAxMS4zOSA0IDguNSA0IDYuNSA1LjUgNSA3LjUgNWMxLjU0IDAgMy4wNC45OSAzLjU3IDIuMzZoMS44N0MxMy40NiA1Ljk5IDE0Ljk2IDUgMTYuNSA1YzIgMCAzLjUgMS41IDMuNSAzLjUgMCAyLjg5LTMuMTQgNS43NC03LjkgMTAuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhdm9yaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMjEuMzUtMS40NS0xLjMyQzUuNCAxNS4zNiAyIDEyLjI4IDIgOC41IDIgNS40MiA0LjQyIDMgNy41IDNjMS43NCAwIDMuNDEuODEgNC41IDIuMDlDMTMuMDkgMy44MSAxNC43NiAzIDE2LjUgMyAxOS41OCAzIDIyIDUuNDIgMjIgOC41YzAgMy43OC0zLjQgNi44Ni04LjU1IDExLjU0TDEyIDIxLjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5aC0xVjRIOHYxNmgxNHYtOGMwLTEuNjYtMS4zNC0zLTMtM3ptLTktM2g2djNoLTZWNnptNCAxMWgtNHYtNWg0djV6bTIgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0wLTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMyAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAtM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxek00LjUgOEEyLjUgMi41IDAgMCAwIDIgMTAuNXY4YTIuNSAyLjUgMCAwIDAgNSAwdi04QTIuNSAyLjUgMCAwIDAgNC41IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZlZWRiYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDEyaC0ydi0yaDJ2MnptMC00aC0yVjZoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWxlUHJlc2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjdsLTUtNXpNNiAyMFY0aDh2NGg0djEySDZ6bTEwLTEwdjVjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRWOC41YTIuNSAyLjUgMCAwIDEgMi43Ni0yLjQ5YzEuMy4xMyAyLjI0IDEuMzIgMi4yNCAyLjYzVjE1aC0yVjguNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTVjMCAxLjEuOSAyIDIgMnMyLS45IDItMnYtNWgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJBbHRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43OSA1LjYxQS45OTguOTk4IDAgMCAwIDE5IDRINi44M2w3Ljk3IDcuOTcgNC45OS02LjM2ek0yLjgxIDIuODEgMS4zOSA0LjIyIDEwIDEzdjZjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTIuMTdsNS43OCA1Ljc4IDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0bTAgMjRIMFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjI1IDUuNjFDNi4yNyA4LjIgMTAgMTMgMTAgMTN2NmMwIC41NS40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXYtNnMzLjcyLTQuOCA1Ljc0LTcuMzlBLjk5OC45OTggMCAwIDAgMTguOTUgNEg1LjA0Yy0uODMgMC0xLjMuOTUtLjc5IDEuNjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckxpc3RBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6TTAgMGgyNG0wIDI0SDBcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4yNSA1LjY2Yy4xLjEzIDUuNzQgNy4zMyA1Ljc0IDcuMzNWMTljMCAuNTUuNDUgMSAxLjAxIDFoMi4wMWMuNTUgMCAxLjAxLS40NSAxLjAxLTF2LTYuMDJzNS40OS03LjAyIDUuNzUtNy4zNEMyMC4wMyA1LjMyIDIwIDUgMjAgNWMwLS41NS0uNDUtMS0xLjAxLTFINS4wMUM0LjQgNCA0IDQuNDggNCA1YzAgLjIuMDYuNDQuMjUuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbmRJblBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOS41OVY4bC02LTZINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4Yy40NSAwIC44NS0uMTUgMS4xOS0uNGwtNC40My00LjQzYy0uOC41Mi0xLjc0LjgzLTIuNzYuODMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1YzAgMS4wMi0uMzEgMS45Ni0uODMgMi43NUwyMCAxOS41OXpNOSAxM2MwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmluZFJlcGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA2YzEuMzggMCAyLjYzLjU2IDMuNTQgMS40NkwxMiAxMGg2VjRsLTIuMDUgMi4wNUE2Ljk3NiA2Ljk3NiAwIDAgMCAxMSA0Yy0zLjUzIDAtNi40MyAyLjYxLTYuOTIgNkg2LjFBNSA1IDAgMCAxIDExIDZ6bTUuNjQgOS4xNEE2Ljg5IDYuODkgMCAwIDAgMTcuOTIgMTJIMTUuOWE1IDUgMCAwIDEtNC45IDRjLTEuMzggMC0yLjYzLS41Ni0zLjU0LTEuNDZMMTAgMTJINHY2bDIuMDUtMi4wNUE2Ljk3NiA2Ljk3NiAwIDAgMCAxMSAxOGMxLjU1IDAgMi45OC0uNTEgNC4xNC0xLjM2TDIwIDIxLjQ5IDIxLjQ5IDIwbC00Ljg1LTQuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbmdlcnByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODEgNC40N2MtLjA4IDAtLjE2LS4wMi0uMjMtLjA2QzE1LjY2IDMuNDIgMTQgMyAxMi4wMSAzYy0xLjk4IDAtMy44Ni40Ny01LjU3IDEuNDEtLjI0LjEzLS41NC4wNC0uNjgtLjJhLjUwNi41MDYgMCAwIDEgLjItLjY4QzcuODIgMi41MiA5Ljg2IDIgMTIuMDEgMmMyLjEzIDAgMy45OS40NyA2LjAzIDEuNTIuMjUuMTMuMzQuNDMuMjEuNjdhLjQ5LjQ5IDAgMCAxLS40NC4yOHpNMy41IDkuNzJhLjQ5OS40OTkgMCAwIDEtLjQxLS43OWMuOTktMS40IDIuMjUtMi41IDMuNzUtMy4yN0M5Ljk4IDQuMDQgMTQgNC4wMyAxNy4xNSA1LjY1YzEuNS43NyAyLjc2IDEuODYgMy43NSAzLjI1YS41LjUgMCAwIDEtLjEyLjdjLS4yMy4xNi0uNTQuMTEtLjctLjEyYTkuMzg4IDkuMzg4IDAgMCAwLTMuMzktMi45NGMtMi44Ny0xLjQ3LTYuNTQtMS40Ny05LjQuMDEtMS4zNi43LTIuNSAxLjctMy40IDIuOTYtLjA4LjE0LS4yMy4yMS0uMzkuMjF6bTYuMjUgMTIuMDdhLjQ3LjQ3IDAgMCAxLS4zNS0uMTVjLS44Ny0uODctMS4zNC0xLjQzLTIuMDEtMi42NC0uNjktMS4yMy0xLjA1LTIuNzMtMS4wNS00LjM0IDAtMi45NyAyLjU0LTUuMzkgNS42Ni01LjM5czUuNjYgMi40MiA1LjY2IDUuMzljMCAuMjgtLjIyLjUtLjUuNXMtLjUtLjIyLS41LS41YzAtMi40Mi0yLjA5LTQuMzktNC42Ni00LjM5LTIuNTcgMC00LjY2IDEuOTctNC42NiA0LjM5IDAgMS40NC4zMiAyLjc3LjkzIDMuODUuNjQgMS4xNSAxLjA4IDEuNjQgMS44NSAyLjQyLjE5LjIuMTkuNTEgMCAuNzEtLjExLjEtLjI0LjE1LS4zNy4xNXptNy4xNy0xLjg1Yy0xLjE5IDAtMi4yNC0uMy0zLjEtLjg5LTEuNDktMS4wMS0yLjM4LTIuNjUtMi4zOC00LjM5IDAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41YzAgMS40MS43MiAyLjc0IDEuOTQgMy41Ni43MS40OCAxLjU0LjcxIDIuNTQuNzEuMjQgMCAuNjQtLjAzIDEuMDQtLjEuMjctLjA1LjUzLjEzLjU4LjQxLjA1LjI3LS4xMy41My0uNDEuNTgtLjU3LjExLTEuMDcuMTItMS4yMS4xMnpNMTQuOTEgMjJjLS4wNCAwLS4wOS0uMDEtLjEzLS4wMi0xLjU5LS40NC0yLjYzLTEuMDMtMy43Mi0yLjFhNy4yOTcgNy4yOTcgMCAwIDEtMi4xNy01LjIyYzAtMS42MiAxLjM4LTIuOTQgMy4wOC0yLjk0IDEuNyAwIDMuMDggMS4zMiAzLjA4IDIuOTQgMCAxLjA3LjkzIDEuOTQgMi4wOCAxLjk0czIuMDgtLjg3IDIuMDgtMS45NGMwLTMuNzctMy4yNS02LjgzLTcuMjUtNi44My0yLjg0IDAtNS40NCAxLjU4LTYuNjEgNC4wMy0uMzkuODEtLjU5IDEuNzYtLjU5IDIuOCAwIC43OC4wNyAyLjAxLjY3IDMuNjEuMS4yNi0uMDMuNTUtLjI5LjY0LS4yNi4xLS41NS0uMDQtLjY0LS4yOWExMS4xNCAxMS4xNCAwIDAgMS0uNzMtMy45NmMwLTEuMi4yMy0yLjI5LjY4LTMuMjQgMS4zMy0yLjc5IDQuMjgtNC42IDcuNTEtNC42IDQuNTUgMCA4LjI1IDMuNTEgOC4yNSA3LjgzIDAgMS42Mi0xLjM4IDIuOTQtMy4wOCAyLjk0cy0zLjA4LTEuMzItMy4wOC0yLjk0YzAtMS4wNy0uOTMtMS45NC0yLjA4LTEuOTRzLTIuMDguODctMi4wOCAxLjk0YzAgMS43MS42NiAzLjMxIDEuODcgNC41MS45NS45NCAxLjg2IDEuNDYgMy4yNyAxLjg1LjI3LjA3LjQyLjM1LjM1LjYxLS4wNS4yMy0uMjYuMzgtLjQ3LjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaXRTY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA0aDNjMS4xIDAgMiAuOSAyIDJ2MmgtMlY2aC0zVjR6TTQgOFY2aDNWNEg0Yy0xLjEgMC0yIC45LTIgMnYyaDJ6bTE2IDh2MmgtM3YyaDNjMS4xIDAgMi0uOSAyLTJ2LTJoLTJ6TTcgMThINHYtMkgydjJjMCAxLjEuOSAyIDIgMmgzdi0yek0xOCA4SDZ2OGgxMlY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFreSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIm0xNC4wNSAxNy41OC0uMDEuMDEtMi40LTIuNCAxLjA2LTEuMDYgMS4zNSAxLjM1TDE2LjU0IDEzbDEuMDYgMS4wNi0zLjU0IDMuNTQtLjAxLS4wMnpNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6TTcuMzQgNi4yOGwxLjQxIDEuNDEgMS40MS0xLjQxIDEuMDYgMS4wNi0xLjQxIDEuNDEgMS40MSAxLjQxLTEuMDYgMS4wNi0xLjQxLTEuNDEtMS40MSAxLjQxLTEuMDYtMS4wNiAxLjQxLTEuNDEtMS40MS0xLjQxIDEuMDYtMS4wNnpNMTIgMjBjLTIuMiAwLTQuMi0uOS01LjctMi4zTDE3LjcgNi4zQzE5LjEgNy44IDIwIDkuOCAyMCAxMmMwIDQuNC0zLjYgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaWdodExhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgMTloMTl2MmgtMTl2LTJ6bTE2Ljg0LTMuMTVjLjguMjEgMS42Mi0uMjYgMS44NC0xLjA2LjIxLS44LS4yNi0xLjYyLTEuMDYtMS44NGwtNS4zMS0xLjQyLTIuNzYtOS4wMkwxMC4xMiAydjguMjhMNS4xNSA4Ljk1bC0uOTMtMi4zMi0xLjQ1LS4zOXY1LjE3bDE2LjU3IDQuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaWdodFRha2VvZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgMTloMTl2MmgtMTl2LTJ6bTE5LjU3LTkuMzZjLS4yMS0uOC0xLjA0LTEuMjgtMS44NC0xLjA2TDE0LjkyIDEwbC02LjktNi40My0xLjkzLjUxIDQuMTQgNy4xNy00Ljk3IDEuMzMtMS45Ny0xLjU0LTEuNDUuMzkgMi41OSA0LjQ5czcuMTItMS45IDE2LjU3LTQuNDNjLjgxLS4yMyAxLjI4LTEuMDUgMS4wNy0xLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlwVG9CYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA3SDd2MmgyVjd6bTAgNEg3djJoMnYtMnptMC04YTIgMiAwIDAgMC0yIDJoMlYzem00IDEyaC0ydjJoMnYtMnptNi0xMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS02IDBoLTJ2MmgyVjN6TTkgMTd2LTJIN2EyIDIgMCAwIDAgMiAyem0xMC00aDJ2LTJoLTJ2MnptMC00aDJWN2gtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnpNNSA3SDN2MTJhMiAyIDAgMCAwIDIgMmgxMnYtMkg1Vjd6bTEwLTJoMlYzaC0ydjJ6bTAgMTJoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlwVG9Gcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMiA0di0ySDNhMiAyIDAgMCAwIDIgMnpNMyA5aDJWN0gzdjJ6bTEyIDEyaDJ2LTJoLTJ2MnptNC0xOEg5YTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmgxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEySDlWNWgxMHYxMHptLTggNmgydi0yaC0ydjJ6bS00IDBoMnYtMkg3djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsdXR0ZXJEYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDcgMTEuN2MuMjktLjM5LjgxLS41NiAxLjI3LS4zNy4xNy4wNy4zMi4xOC40My4zMy4yMi4yOC4yNS41OS4yMi44NS0uMDUuMzMtLjI1LjYzLS41NC43OSAwIDAtNC44NyAyLjk1LTUuMDcgMi42OXMzLjY5LTQuMjkgMy42OS00LjI5ek0yMiAxMGMwIDIuNS0xIDMtMS41IDMtLjIzIDAtLjQ0LS4xLS42Mi0uMjYtLjQ4IDMuMzItMi4zNiA1LjMxLTUuMzMgNS45OS4xMS40NC40OC43Ny45NS43N2guNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uNzgtLjE2LTEuMzktLjc4LTEuNTUtMS41Ni0uNDkuMDYtMSAuMS0xLjU0LjEtLjg4IDAtMS43LS4wOS0yLjQ1LS4yNS0uMDIuMDgtLjA1LjE2LS4wNS4yNSAwIC41NS40NSAxIDEgMWguNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uOS0uMTktMS41OS0xLTEuNTktMS45NiAwLS4xOC4wMy0uMzYuMDgtLjUzLTIuNDYtLjg2LTQuMDMtMi43OC00LjQ2LTUuNzQtLjE4LjE3LS4zOC4yNy0uNjIuMjdDMyAxMyAyIDEyLjUgMiAxMGMwLTIuMjcgMS43LTQuNSAzLTQuNS40MyAwIC40OS40OS41Ljg1YTcuOTg5IDcuOTg5IDAgMCAxIDUuNTUtMy4yOWMuMi0uOTYgMS4wOC0xLjU2IDEuOTUtMS41NnYxcy4zMy0uNSAxLS41Yy42NyAwIDEgLjUgMSAuNS0uNDkgMC0uODUuMzUtLjk2Ljc3IDEuODIuNDggMy4zOSAxLjU5IDQuNDYgMy4wOC4wMS0uMzYuMDctLjg1LjUtLjg1IDEuMyAwIDMgMi4yMyAzIDQuNXpNNSAxMWMwIC44MS4xIDEuNTMuMjUgMi4yMS4xOC0uNjkuNDYtMS4zMy44My0xLjkyYTMuNzcgMy43NyAwIDAgMS0uMzQtMS41NEEzLjc2NiAzLjc2NiAwIDAgMSA5LjUgNmMuOTYgMCAxLjg0LjM3IDIuNS45Ny42Ni0uNiAxLjU0LS45NyAyLjUtLjk3IDIuMDcgMCAzLjc1IDEuNjggMy43NSAzLjc1IDAgLjU1LS4xMiAxLjA3LS4zNCAxLjU0LjM3LjU5LjY2IDEuMjQuODQgMS45NC4xNS0uNjguMjUtMS40MS4yNS0yLjIzIDAtMy44Ni0zLjE0LTctNy03cy03IDMuMTQtNyA3em0xMi45OCA0LjI5YzAtLjEuMDItLjE5LjAyLS4yOSAwLTEuMDEtLjI2LTEuOTUtLjctMi43OC0uNjkuNzgtMS42OCAxLjI4LTIuOCAxLjI4LS4yNyAwLS41NC0uMDMtLjc5LS4wOS4xNC0uMjMuMjMtLjQ5LjI3LS43Ny4wMS0uMDcuMDEtLjEzLjAyLS4xOS4xNy4wMy4zMy4wNS41LjA1IDEuNTIgMCAyLjc1LTEuMjMgMi43NS0yLjc1UzE2LjAyIDcgMTQuNSA3Yy0uNjcgMC0xLjMyLjI1LTEuODMuNzJsLS42Ny42LS42Ny0uNkMxMC44MiA3LjI1IDEwLjE3IDcgOS41IDcgNy45OCA3IDYuNzUgOC4yMyA2Ljc1IDkuNzVjMCAxLjM0Ljk2IDIuNDYgMi4yMyAyLjdsLS43Ni44M2MtLjYtLjIyLTEuMTItLjU5LTEuNTMtMS4wNUE2LjAxIDYuMDEgMCAwIDAgNiAxNWMwIC4wOC4wMS4xNS4wMS4yNEM3LjEzIDE3LjA2IDkuMTQgMTggMTIgMThjMi44OCAwIDQuODgtLjkxIDUuOTgtMi43MXpNMTYgOS43NWMwIC45Ny0uNjcgMS43NS0xLjUgMS43NVMxMyAxMC43MiAxMyA5Ljc1IDEzLjY3IDggMTQuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6TTExIDkuNzVjMCAuOTctLjY3IDEuNzUtMS41IDEuNzVTOCAxMC43MiA4IDkuNzUgOC42NyA4IDkuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZyZWVDYW5jZWxsYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yMSAyMEg1VjEwaDE0djQuMzhsMi0yVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGEyIDIgMCAwIDAgMiAyaDguMjFsLTItMnptNS4zMyAyLjVMMTMgMTguOTZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxLTUuNjQgNS42NnpNMTAuNDEgMTQgMTIgMTUuNTkgMTAuNTkgMTcgOSAxNS40MSA3LjQxIDE3IDYgMTUuNTkgNy41OSAxNCA2IDEyLjQxIDcuNDEgMTEgOSAxMi41OSAxMC41OSAxMSAxMiAxMi40MSAxMC40MSAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR1RyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNEgxMWwtMS0zSDNjLTEuMSAwLTIgLjktMiAydjE1YzAgMS4xLjkgMiAyIDJoOGwxIDNoOWMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek03IDE2Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01YzEuMzUgMCAyLjQ4LjUgMy4zNSAxLjNMOS4wMyA4LjU3Yy0uMzgtLjM2LTEuMDQtLjc4LTIuMDMtLjc4LTEuNzQgMC0zLjE1IDEuNDQtMy4xNSAzLjIxUzUuMjYgMTQuMjEgNyAxNC4yMWMyLjAxIDAgMi44NC0xLjQ0IDIuOTItMi40MUg3di0xLjcxaDQuNjhjLjA3LjMxLjEyLjYxLjEyIDEuMDJDMTEuOCAxMy45NyA5Ljg5IDE2IDcgMTZ6bTYuMTctNS40MmgzLjdjLS40MyAxLjI1LTEuMTEgMi40My0yLjA1IDMuNDctLjMxLS4zNS0uNi0uNzItLjg2LTEuMWwtLjc5LTIuMzd6bTguMzMgOS45MmMwIC41NS0uNDUgMS0xIDFIMTRsMi0yLjUtMS4wNC0zLjEgMy4xIDMuMS45Mi0uOTItMy4zLTMuMjUuMDItLjAyYzEuMTMtMS4yNSAxLjkzLTIuNjkgMi40LTQuMjJIMjB2LTEuM2gtNC41M1Y4aC0xLjI5djEuMjloLTEuNDRMMTEuNDYgNS41aDkuMDRjLjU1IDAgMSAuNDUgMSAxdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNS4yNSA4LjA2OSAyLjgzLTIuODI3IDE0LjEzNCAxNC4xNS0yLjgzIDIuODI3ek05LjQ4NiAzLjgyNyAxMi4zMTQuOTk4bDUuNjU3IDUuNjU2LTIuODI4IDIuODN6TS45OTkgMTIuMzE1bDIuODI4LTIuODI5IDUuNjU3IDUuNjU3LTIuODI4IDIuODI4ek0xIDIxaDEydjJIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2VuZXJhdGluZ1Rva2VucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04LTMuNTgtOC04LTh6bTMgNi41aC0ydjVIOHYtNUg2VjloNnYxLjV6bTguMjUtNi43NUwyMyA1bC0yLjc1IDEuMjVMMTkgOWwtMS4yNS0yLjc1TDE1IDVsMi43NS0xLjI1TDE5IDFsMS4yNSAyLjc1em0wIDE0TDIzIDE5bC0yLjc1IDEuMjVMMTkgMjNsLTEuMjUtMi43NUwxNSAxOWwyLjc1LTEuMjVMMTkgMTVsMS4yNSAyLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHZXRBcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5aC00VjNIOXY2SDVsNyA3IDctN3pNNSAxOHYyaDE0di0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdpZkJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05LjUgMTN2LTFoMXYxYzAgLjU1LS40NSAxLTEgMWgtMWMtLjU1IDAtMS0uNDUtMS0xdi0yYzAtLjU1LjQ1LTEgMS0xaDFjLjU1IDAgMSAuNDUgMSAxaC0ydjJoMXptMyAxaC0xdi00aDF2NHptNC0zaC0ydi41SDE2djFoLTEuNVYxNGgtMXYtNGgzdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdpZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgOUgxM3Y2aC0xLjV6TTkgOUg2Yy0uNiAwLTEgLjUtMSAxdjRjMCAuNS40IDEgMSAxaDNjLjYgMCAxLS41IDEtMXYtMkg4LjV2MS41aC0ydi0zSDEwVjEwYzAtLjUtLjQtMS0xLTF6TTE5IDEwLjVWOWgtNC41djZIMTZ2LTJoMnYtMS41aC0ydi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmFkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE3LjI3IDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmFkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA3aDE2djJINFY3em0wIDZoMTZ2LTJINHYyem0wIDRoN3YtMkg0djJ6bTAgNGg3di0ySDR2MnptMTEuNDEtMi44M0wxNCAxNi43NWwtMS40MSAxLjQxTDE1LjQxIDIxIDIwIDE2LjQyIDE4LjU4IDE1bC0zLjE3IDMuMTd6TTQgM3YyaDE2VjNINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOCAxNy41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1ek05LjUgOGEyLjUgMi41IDAgMCAxIDUgMCAyLjUgMi41IDAgMCAxLTUgMHptNi41IDkuNWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVscENlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNi45OSAxNWMtLjcgMC0xLjI2LS41Ni0xLjI2LTEuMjYgMC0uNzEuNTYtMS4yNSAxLjI2LTEuMjUuNzEgMCAxLjI1LjU0IDEuMjUgMS4yNS0uMDEuNjktLjU0IDEuMjYtMS4yNSAxLjI2em0zLjAxLTcuNGMtLjc2IDEuMTEtMS40OCAxLjQ2LTEuODcgMi4xNy0uMTYuMjktLjIyLjQ4LS4yMiAxLjQxaC0xLjgyYzAtLjQ5LS4wOC0xLjI5LjMxLTEuOTguNDktLjg3IDEuNDItMS4zOSAxLjk2LTIuMTYuNTctLjgxLjI1LTIuMzMtMS4zNy0yLjMzLTEuMDYgMC0xLjU4LjgtMS44IDEuNDhsLTEuNjUtLjdDOS4wMSA3LjE1IDEwLjIyIDYgMTEuOTkgNmMxLjQ4IDAgMi40OS42NyAzLjAxIDEuNTIuNDQuNzIuNyAyLjA3LjAyIDMuMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlbHBPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMThoMnYtMmgtMnYyem0xLTE2QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMC0xNGMtMi4yMSAwLTQgMS43OS00IDRoMmMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgMi0zIDEuNzUtMyA1aDJjMC0yLjI1IDMtMi41IDMtNSAwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTdoLTJ2LTJoMnYyem0yLjA3LTcuNzUtLjkuOTJDMTMuNDUgMTIuOSAxMyAxMy41IDEzIDE1aC0ydi0uNWMwLTEuMS40NS0yLjEgMS4xNy0yLjgzbDEuMjQtMS4yNmMuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMkg4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAuODgtLjM2IDEuNjgtLjkzIDIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhpZGVTb3VyY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODF6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZsMTAuOTQgMTAuOTRDMTQuODYgMTkuNTkgMTMuNDggMjAgMTIgMjB6TTcuOTQgNS4xMiA2LjQ5IDMuNjZBOS45MSA5LjkxIDAgMCAxIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTAgMCAyLjA0LS42MSAzLjkzLTEuNjYgNS41MWwtMS40Ni0xLjQ2QTcuODY5IDcuODY5IDAgMCAwIDIwIDEyYzAtNC40MS0zLjU5LTgtOC04LTEuNDggMC0yLjg2LjQxLTQuMDYgMS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlnaGxpZ2h0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNWgtMlYzaDJ2MnptLTIgMTZoMnYtMi41OUwxOS41OSAyMSAyMSAxOS41OSAxOC40MSAxN0gyMXYtMmgtNnY2em00LTEyaDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyem0tOCA4aDJ2LTJoLTJ2MnpNNyA1aDJWM0g3djJ6TTMgMTdoMnYtMkgzdjJ6bTIgNHYtMkgzYzAgMS4xLjkgMiAyIDJ6TTE5IDN2MmgyYzAtMS4xLS45LTItMi0yem0tOCAyaDJWM2gtMnYyek0zIDloMlY3SDN2MnptNCAxMmgydi0ySDd2MnptLTQtOGgydi0ySDN2MnptMC04aDJWM2MtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhpZ2hsaWdodE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDggMTIgMTAuNTkgOS40MSA4IDggOS40MSAxMC41OSAxMiA4IDE0LjU5IDkuNDEgMTYgMTIgMTMuNDEgMTQuNTkgMTYgMTYgMTQuNTkgMTMuNDEgMTIgMTYgOS40MSAxNC41OSA4ek0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlzdG9yeVRvZ2dsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjEgMTkuMzcgMSAxLjc0Yy0uOTYuNDQtMi4wMS43My0zLjEuODR2LTIuMDJjLjc0LS4wOSAxLjQ0LS4yOCAyLjEtLjU2ek00LjA3IDEzSDIuMDVjLjExIDEuMS40IDIuMTQuODQgMy4xbDEuNzQtMWMtLjI4LS42Ni0uNDctMS4zNi0uNTYtMi4xek0xNS4xIDQuNjNsMS0xLjc0Yy0uOTYtLjQ0LTItLjczLTMuMS0uODR2Mi4wMmMuNzQuMDkgMS40NC4yOCAyLjEuNTZ6TTE5LjkzIDExaDIuMDJjLS4xMS0xLjEtLjQtMi4xNC0uODQtMy4xbC0xLjc0IDFjLjI4LjY2LjQ3IDEuMzYuNTYgMi4xek04LjkgMTkuMzdsLTEgMS43NGMuOTYuNDQgMi4wMS43MyAzLjEuODR2LTIuMDJjLS43NC0uMDktMS40NC0uMjgtMi4xLS41NnpNMTEgNC4wN1YyLjA1Yy0xLjEuMTEtMi4xNC40LTMuMS44NGwxIDEuNzRjLjY2LS4yOCAxLjM2LS40NyAyLjEtLjU2em03LjM2IDMuMSAxLjc0LTEuMDFjLS42My0uODctMS40LTEuNjQtMi4yNy0yLjI3bC0xLjAxIDEuNzRjLjU5LjQ1IDEuMS45NiAxLjU0IDEuNTR6TTQuNjMgOC45bC0xLjc0LTFjLS40NC45Ni0uNzMgMi0uODQgMy4xaDIuMDJjLjA5LS43NC4yOC0xLjQ0LjU2LTIuMXptMTUuMyA0LjFjLS4wOS43NC0uMjggMS40NC0uNTYgMi4xbDEuNzQgMWMuNDQtLjk2LjczLTIuMDEuODQtMy4xaC0yLjAyem0tMy4xIDUuMzYgMS4wMSAxLjc0Yy44Ny0uNjMgMS42NC0xLjQgMi4yNy0yLjI3bC0xLjc0LTEuMDFjLS40NS41OS0uOTYgMS4xLTEuNTQgMS41NHpNNy4xNyA1LjY0bC0xLTEuNzVjLS44OC42NC0xLjY0IDEuNC0yLjI3IDIuMjhsMS43NCAxLjAxYTcuNyA3LjcgMCAwIDEgMS41My0xLjU0ek01LjY0IDE2LjgzbC0xLjc0IDFjLjYzLjg3IDEuNCAxLjY0IDIuMjcgMi4yN2wxLjAxLTEuNzRhNy43IDcuNyAwIDAgMS0xLjU0LTEuNTN6TTEzIDdoLTJ2NS40MWw0LjI5IDQuMjkgMS40MS0xLjQxLTMuNy0zLjdWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNhOSA5IDAgMCAwLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJBOC45NTQgOC45NTQgMCAwIDAgMTMgMjFhOSA5IDAgMCAwIDAtMTh6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIbHNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44MyAxNWgxLjY3Yy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUgxN3YtMWgydi41aDEuNXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFIMTl2MWgtMlYxM2gtMS4xN2wyIDJ6TTggMTAuODNWMTVINi41di0yLjVoLTJWMTVIM1Y5aDEuNXYyaDJWOS4zM0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxLTcuNi03LjZIMTB2LTIuMTdsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDlIOHY2SDYuNXYtMi41aC0yVjE1SDNWOWgxLjV2MmgyVjl6bTEwIDZoM2MuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFIMTd2LTFoMnYuNWgxLjV2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2MS41YzAgLjU1LjQ1IDEgMSAxSDE5djFoLTJWMTNoLTEuNXYxYzAgLjU1LjQ1IDEgMSAxek0xNCAxNXYtMS41aC0yLjVWOUgxMHY2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmg1di03aDZ2N2g1Vjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvcml6b250YWxTcGxpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOWgxOHYtNkgzdjZ6bTAtOGgxOFY5SDN2MnptMC02djJoMThWNUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3RlbENsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41OCAxMEgxbDYuMTcgNC40MUw0LjgzIDIyIDExIDE3LjMxIDE3LjE4IDIybC0yLjM1LTcuNTlMMjEgMTBoLTcuNThMMTEgMmwtMi40MiA4em0xMi43OCAxMi0xLjg2LTYuMDFMMjMuNjggMTNoLTMuNDRsLTMuMDggMi4yIDEuNDYgNC43MkwyMS4zNiAyMnpNMTcgOGwtMS44Mi02LTEuMDQgMy40NS43NyAyLjU1SDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3VyZ2xhc3NEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNGg4djMuNWwtMi44NCAyLjg0IDEuMjUgMS4yNUwxOCA4LjAxIDE3Ljk5IDhIMThWMkg2djEuMTdsMiAyek0yLjEgMi4xLjY5IDMuNTFsOC45IDguOUw2IDE2bC4wMS4wMUg2VjIyaDEydi0xLjE3bDIuNDkgMi40OSAxLjQxLTEuNDFMMi4xIDIuMXpNMTYgMjBIOHYtMy41bDIuODQtMi44NEwxNiAxOC44M1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG91cmdsYXNzRW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMnY2aC4wMUw2IDguMDEgMTAgMTJsLTQgNCAuMDEuMDFINlYyMmgxMnYtNS45OWgtLjAxTDE4IDE2bC00LTQgNC0zLjk5LS4wMS0uMDFIMThWMkg2em0xMCAxNC41VjIwSDh2LTMuNWw0LTQgNCA0em0tNC01LTQtNFY0aDh2My41bC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXJnbGFzc0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMnY2aC4wMUw2IDguMDEgMTAgMTJsLTQgNCAuMDEuMDFINlYyMmgxMnYtNS45OWgtLjAxTDE4IDE2bC00LTQgNC0zLjk5LS4wMS0uMDFIMThWMkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIdG1sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDlINXY2SDMuNXYtMi41aC0yVjE1SDBWOWgxLjV2MmgyVjl6bTE0IDBIMTNjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNXYtNC41aDFWMTRIMTZ2LTMuNTFoMVYxNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xek0xMSA5SDZ2MS41aDEuNzVWMTVoMS41di00LjVIMTFWOXptMTMgNnYtMS41aC0yLjVWOUgyMHY2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEh0dHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSAxMWgtMlY5SDF2NmgxLjV2LTIuNWgyVjE1SDZWOUg0LjV2MnptMi41LS41aDEuNVYxNUgxMHYtNC41aDEuNVY5SDd2MS41em01LjUgMEgxNFYxNWgxLjV2LTQuNUgxN1Y5aC00LjV2MS41em05LTEuNUgxOHY2aDEuNXYtMmgyYy44IDAgMS41LS43IDEuNS0xLjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNXptMCAyLjVoLTJ2LTFoMnYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEh0dHBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNiA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMy4xLTlIOC45VjZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjEgMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1wb3J0YW50RGV2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTEuMDEgMTggMTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xdi05YzAtLjU1LS40NS0uOTktMS0uOTl6TTIzIDIwaC01di03aDV2N3pNMjAgMkgyQy44OSAyIDAgMi44OSAwIDR2MTJhMiAyIDAgMCAwIDIgMmg3djJIN3YyaDh2LTJoLTJ2LTJoMnYtMkgyVjRoMTh2NWgyVjRhMiAyIDAgMCAwLTItMnptLTguMDMgN0wxMSA2bC0uOTcgM0g3bDIuNDcgMS43Ni0uOTQgMi45MSAyLjQ3LTEuOCAyLjQ3IDEuOC0uOTQtMi45MUwxNSA5aC0zLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbmZvT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjJoLTJWN3ptMCA0aDJ2NmgtMnYtNnptMS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5mbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZElucHV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMy4wMUgzYy0xLjEgMC0yIC45LTIgMlY5aDJWNC45OWgxOHYxNC4wM0gzVjE1SDF2NC4wMWMwIDEuMS45IDEuOTggMiAxLjk4aDE4YzEuMSAwIDItLjg4IDItMS45OHYtMTRhMiAyIDAgMCAwLTItMnpNMTEgMTZsNC00LTQtNHYzSDF2MmgxMHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnN0YWxsRGVza3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE3SDRWNWg4VjNINGMtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDR2Mmg4di0yaDRjMS4xIDAgMi0uOSAyLTJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTQgNS01LTEuNDEtMS40MUwxOCAxMC4xN1YzaC0ydjcuMTdsLTIuNTktMi41OEwxMiA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnN0YWxsTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMThIN1Y2aDdWMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi01aC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDE0IDUtNS0xLjQxLTEuNDFMMTkgMTAuMTdWM2gtMnY3LjE3bC0yLjU5LTIuNThMMTMgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW50ZWdyYXRpb25JbnN0cnVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIuNzVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjMuNVwiLFwiclwiOlwiLjc1XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIzLjVcIixcInJcIjpcIi43NVwiLFwiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0uMTQgMC0uMjcuMDEtLjQuMDRhMi4wMDggMi4wMDggMCAwIDAtMS40NCAxLjE5Yy0uMS4yMy0uMTYuNDktLjE2Ljc3djE0YzAgLjI3LjA2LjU0LjE2Ljc4cy4yNS40NS40My42NGMuMjcuMjcuNjIuNDcgMS4wMS41NS4xMy4wMi4yNi4wMy40LjAzaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDExLjE3LTEuNDEgMS40Mkw2IDEybDMuNTktMy41OUwxMSA5LjgzIDguODMgMTIgMTEgMTQuMTd6bTEtOS45MmMtLjQxIDAtLjc1LS4zNC0uNzUtLjc1cy4zNC0uNzUuNzUtLjc1Ljc1LjM0Ljc1Ljc1LS4zNC43NS0uNzUuNzV6bTIuNDEgMTEuMzRMMTMgMTQuMTcgMTUuMTcgMTIgMTMgOS44M2wxLjQxLTEuNDJMMTggMTJsLTMuNTkgMy41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW52ZXJ0Q29sb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0LjgxVjE5Yy0zLjMxIDAtNi0yLjYzLTYtNS44NyAwLTEuNTYuNjItMy4wMyAxLjc1LTQuMTRMMTIgNC44MU02LjM1IDcuNTZDNC45IDguOTkgNCAxMC45NiA0IDEzLjEzIDQgMTcuNDggNy41OCAyMSAxMiAyMXM4LTMuNTIgOC03Ljg3YzAtMi4xNy0uOS00LjE0LTIuMzUtNS41N0wxMiAyIDYuMzUgNy41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSmF2YXNjcmlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0di0xaDEuNXYuNWgydi0xSDEzYy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MWgtMS41di0uNWgtMnYxSDE2Yy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXpNOSA5djQuNUg3LjV2LTFINnYxYzAgLjgzLjY3IDEuNSAxLjUgMS41SDljLjgzIDAgMS41LS42NyAxLjUtMS41VjlIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSm9pbkZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEyYzAtLjk3LjIzLTQuMTYgMy4wMy02LjVDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtMi44LTIuMzQtMy4wMy01LjUzLTMuMDMtNi41ek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41IDIuOCAyLjM0IDMuMDMgNS41MyAzLjAzIDYuNSAwIC45Ny0uMjMgNC4xNi0zLjAzIDYuNS43OC4zMSAxLjYzLjUgMi41My41IDMuODYgMCA3LTMuMTQgNy03cy0zLjE0LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRKb2luSW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wNCAxNi44N2MtLjMzLjA4LS42OC4xMy0xLjA0LjEzLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTVjLjM2IDAgLjcxLjA1IDEuMDQuMTMuMzktLjU2Ljg4LTEuMTIgMS40OS0xLjYzQzkuNzUgNS4xOSA4LjkgNSA4IDVjLTMuODYgMC03IDMuMTQtNyA3czMuMTQgNyA3IDdjLjkgMCAxLjc1LS4xOSAyLjUzLS41LS42MS0uNTEtMS4xLTEuMDctMS40OS0xLjYzek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41LjYxLjUxIDEuMSAxLjA3IDEuNDkgMS42My4zMy0uMDguNjgtLjEzIDEuMDQtLjEzIDIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1Yy0uMzYgMC0uNzEtLjA1LTEuMDQtLjEzLS4zOS41Ni0uODggMS4xMi0xLjQ5IDEuNjMuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSm9pbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEyYzAtLjk3LjIzLTQuMTYgMy4wMy02LjVDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtMi44LTIuMzQtMy4wMy01LjUzLTMuMDMtNi41ek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41LjYxLjUxIDEuMSAxLjA3IDEuNDkgMS42My4zMy0uMDguNjgtLjEzIDEuMDQtLjEzIDIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1Yy0uMzYgMC0uNzEtLjA1LTEuMDQtLjEzLS4zOS41Ni0uODggMS4xMi0xLjQ5IDEuNjMuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSm9pblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwicnhcIjpcIjNcIixcInJ5XCI6XCI1Ljc0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTJjMCAuOTctLjIzIDQuMTYtMy4wMyA2LjUuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN2MtLjkgMC0xLjc1LjE5LTIuNTMuNSAyLjggMi4zNCAzLjAzIDUuNTMgMy4wMyA2LjV6TTggMTljLjkgMCAxLjc1LS4xOSAyLjUzLS41LS42MS0uNTEtMS4xLTEuMDctMS40OS0xLjYzLS4zMy4wOC0uNjguMTMtMS4wNC4xMy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01Yy4zNiAwIC43MS4wNSAxLjA0LjEzLjM5LS41Ni44OC0xLjEyIDEuNDktMS42M0M5Ljc1IDUuMTkgOC45IDUgOCA1Yy0zLjg2IDAtNyAzLjE0LTcgN3MzLjE0IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYWJlbEltcG9ydGFudE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE5SDNsNC41LTdMMyA1aDEyYy42NSAwIDEuMjYuMzEgMS42My44NEwyMSAxMmwtNC4zNyA2LjE2Yy0uMzcuNTItLjk4Ljg0LTEuNjMuODR6bS04LjUtMkgxNWwzLjUtNUwxNSA3SDYuNWwzLjUgNS0zLjUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFiZWxJbXBvcnRhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuNSAxOC45OSAxMSAuMDFjLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjAuNSAxMmwtNC4zNy02LjE2Yy0uMzYtLjUxLS45Ni0uODQtMS42My0uODRsLTExIC4wMUw4LjM0IDEyIDMuNSAxOC45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFiZWxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuMjUgMi43NSAxNyAxN0wxOSAyMWwtMi0ySDVjLTEuMSAwLTItLjktMi0yVjdjMC0uNTUuMjMtMS4wNS41OS0xLjQxTDIgNGwxLjI1LTEuMjV6TTIyIDEybC00LjM3LTYuMTZDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVIOGwxMSAxMSAzLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhYmVsT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVMNSA1LjAxQzMuOSA1LjAxIDMgNS45IDMgN3YxMGMwIDEuMS45IDEuOTkgMiAxLjk5TDE2IDE5Yy42NyAwIDEuMjctLjMzIDEuNjMtLjg0TDIyIDEybC00LjM3LTYuMTZ6TTE2IDE3SDVWN2gxMWwzLjU1IDVMMTYgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUw1IDUuMDFDMy45IDUuMDEgMyA1LjkgMyA3djEwYzAgMS4xLjkgMS45OSAyIDEuOTlMMTYgMTljLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjIgMTJsLTQuMzctNi4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFuZ3VhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem02LjkzIDZoLTIuOTVhMTUuNjUgMTUuNjUgMCAwIDAtMS4zOC0zLjU2QTguMDMgOC4wMyAwIDAgMSAxOC45MiA4ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMiAwIC42OC4wNiAxLjM0LjE0IDJINC4yNnptLjgyIDJoMi45NWMuMzIgMS4yNS43OCAyLjQ1IDEuMzggMy41NkE3Ljk4NyA3Ljk4NyAwIDAgMSA1LjA4IDE2em0yLjk1LThINS4wOGE3Ljk4NyA3Ljk4NyAwIDAgMSA0LjMzLTMuNTZBMTUuNjUgMTUuNjUgMCAwIDAgOC4wMyA4ek0xMiAxOS45NmMtLjgzLTEuMi0xLjQ4LTIuNTMtMS45MS0zLjk2aDMuODJjLS40MyAxLjQzLTEuMDggMi43Ni0xLjkxIDMuOTZ6TTE0LjM0IDE0SDkuNjZjLS4wOS0uNjYtLjE2LTEuMzItLjE2LTIgMC0uNjguMDctMS4zNS4xNi0yaDQuNjhjLjA5LjY1LjE2IDEuMzIuMTYgMiAwIC42OC0uMDcgMS4zNC0uMTYgMnptLjI1IDUuNTZjLjYtMS4xMSAxLjA2LTIuMzEgMS4zOC0zLjU2aDIuOTVhOC4wMyA4LjAzIDAgMCAxLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTIgMC0uNjgtLjA2LTEuMzQtLjE0LTJoMy4zOGMuMTYuNjQuMjYgMS4zMS4yNiAycy0uMSAxLjM2LS4yNiAyaC0zLjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoN1YzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMZWFkZXJib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAyMUgyVjloNS41djEyem03LjI1LTE4aC01LjV2MThoNS41VjN6TTIyIDExaC01LjV2MTBIMjJWMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpZ2h0YnVsYkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNXptMy0yLjVIOVYxNWg2djEuNXptLS4wMy0yLjVIOS4wM0E0Ljk2NiA0Ljk2NiAwIDAgMSA3IDEwYzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVjMCAxLjY0LS44IDMuMDktMi4wMyA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWdodGJ1bGJPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyMWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMUg5djF6bTMtMTlDOC4xNCAyIDUgNS4xNCA1IDljMCAyLjM4IDEuMTkgNC40NyAzIDUuNzRWMTdjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTF2LTIuMjZjMS44MS0xLjI3IDMtMy4zNiAzLTUuNzQgMC0zLjg2LTMuMTQtNy03LTd6bTIgMTEuN1YxNmgtNHYtMi4zQzguNDggMTIuNjMgNyAxMS41MyA3IDljMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWMwIDIuNDktMS41MSAzLjY1LTMgNC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWdodGJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIxYzAgLjUuNCAxIDEgMWg0Yy42IDAgMS0uNSAxLTF2LTFIOXYxem0zLTE5QzguMSAyIDUgNS4xIDUgOWMwIDIuNCAxLjIgNC41IDMgNS43VjE3YzAgLjUuNCAxIDEgMWg2Yy42IDAgMS0uNSAxLTF2LTIuM2MxLjgtMS4zIDMtMy40IDMtNS43IDAtMy45LTMuMS03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGluZVN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNmg1di0ySDN2MnptNi41IDBoNXYtMmgtNXYyem02LjUgMGg1di0yaC01djJ6TTMgMjBoMnYtMkgzdjJ6bTQgMGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMyAxMmg4di0ySDN2MnptMTAgMGg4di0yaC04djJ6TTMgNHY0aDE4VjRIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGluZVdlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTdoMTh2LTJIM3Yyem0wIDNoMTh2LTFIM3Yxem0wLTdoMTh2LTNIM3Yzem0wLTl2NGgxOFY0SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem00IDRoMTR2LTJIN3Yyem0wIDRoMTR2LTJIN3Yyek03IDd2MmgxNFY3SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuNSAxNC4yIDIuOSAxLjctLjggMS4zTDEzIDE1di01aDEuNXY0LjJ6TTIyIDE0YzAgNC40MS0zLjU5IDgtOCA4LTIuMDIgMC0zLjg2LS43Ni01LjI3LTJINGMtMS4xNSAwLTItLjg1LTItMlY5YzAtMS4xMi44OS0xLjk2IDItMnYtLjVDNCA0LjAxIDYuMDEgMiA4LjUgMmMyLjM0IDAgNC4yNCAxLjc5IDQuNDYgNC4wOC4zNC0uMDUuNjktLjA4IDEuMDQtLjA4IDQuNDEgMCA4IDMuNTkgOCA4ek02IDdoNXYtLjc0QTIuNTA5IDIuNTA5IDAgMCAwIDguNSA0IDIuNSAyLjUgMCAwIDAgNiA2LjVWN3ptMTQgN2MwLTMuMzEtMi42OS02LTYtNnMtNiAyLjY5LTYgNiAyLjY5IDYgNiA2IDYtMi42OSA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02LTloLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2aDEuOWMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bTAgMTJINlYxMGgxMnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9ja091dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtOWgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMXMzLjEgMS4zOSAzLjEgMy4xdjJIOC45VjZ6TTE4IDIwSDZWMTBoMTJ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMWMuNyAwIDEuMzcuMSAyIC4yOVYxMGMwLTEuMS0uOS0yLTItMmgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDYuMjZBNi45OTUgNi45OTUgMCAwIDEgMTggMTF6TTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2Mkg4LjlWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDJjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTguODMgMTggMTggMThzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptMCA2Yy0xLjAzIDAtMS45NC0uNTItMi40OC0xLjMyLjczLS40MiAxLjU3LS42OCAyLjQ4LS42OHMxLjc1LjI2IDIuNDguNjhjLS41NC44LTEuNDUgMS4zMi0yLjQ4IDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tSZXNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNhOSA5IDAgMCAwLTkgOUgxbDQgNCA0LTRINmMwLTMuODYgMy4xNC03IDctN3M3IDMuMTQgNyA3LTMuMTQgNy03IDdjLTEuOSAwLTMuNjItLjc2LTQuODgtMS45OUw2LjcgMTguNDJBOC45ODIgOC45ODIgMCAwIDAgMTMgMjFhOSA5IDAgMCAwIDAtMTh6bTIgOHYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNiA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMy4xLTlIOC45VjZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjEgMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9naW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3IDkuNiA4LjRsMi42IDIuNkgydjJoMTAuMmwtMi42IDIuNkwxMSAxN2w1LTUtNS01em05IDEyaC04djJoOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yaC04djJoOHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9nb3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgNy0xLjQxIDEuNDFMMTguMTcgMTFIOHYyaDEwLjE3bC0yLjU4IDIuNThMMTcgMTdsNS01ek00IDVoOFYzSDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoOHYtMkg0VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExveWFsdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS40MSAxMS41OC05LTlDMTIuMDUgMi4yMiAxMS41NSAyIDExIDJINGMtMS4xIDAtMiAuOS0yIDJ2N2MwIC41NS4yMiAxLjA1LjU5IDEuNDJsOSA5Yy4zNi4zNi44Ni41OCAxLjQxLjU4LjU1IDAgMS4wNS0uMjIgMS40MS0uNTlsNy03Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDEgMC0uNTUtLjIzLTEuMDYtLjU5LTEuNDJ6TTUuNSA3QzQuNjcgNyA0IDYuMzMgNCA1LjVTNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNSA2LjMzIDcgNS41IDd6bTExLjc3IDguMjdMMTMgMTkuNTRsLTQuMjctNC4yN0EyLjUgMi41IDAgMCAxIDEwLjUgMTFjLjY5IDAgMS4zMi4yOCAxLjc3Ljc0bC43My43Mi43My0uNzNhMi41IDIuNSAwIDAgMSAzLjU0IDMuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hbmFnZUFjY291bnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC42NyAxMy4wMmMtLjIyLS4wMS0uNDQtLjAyLS42Ny0uMDItMi40MiAwLTQuNjguNjctNi42MSAxLjgyLS44OC41Mi0xLjM5IDEuNS0xLjM5IDIuNTNWMjBoOS4yNmE2Ljk2MyA2Ljk2MyAwIDAgMS0uNTktNi45OHpNMjAuNzUgMTZjMC0uMjItLjAzLS40Mi0uMDYtLjYzbDEuMTQtMS4wMS0xLTEuNzMtMS40NS40OWMtLjMyLS4yNy0uNjgtLjQ4LTEuMDgtLjYzTDE4IDExaC0ybC0uMyAxLjQ5Yy0uNC4xNS0uNzYuMzYtMS4wOC42M2wtMS40NS0uNDktMSAxLjczIDEuMTQgMS4wMWMtLjAzLjIxLS4wNi40MS0uMDYuNjNzLjAzLjQyLjA2LjYzbC0xLjE0IDEuMDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE2IDIxaDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMS4wMWMuMDMtLjIxLjA2LS40MS4wNi0uNjN6TTE3IDE4Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFuYWdlSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjY5IDE4LjM3IDEuMTQtMS0xLTEuNzMtMS40NS40OWMtLjMyLS4yNy0uNjgtLjQ4LTEuMDgtLjYzTDIwIDE0aC0ybC0uMyAxLjQ5Yy0uNC4xNS0uNzYuMzYtMS4wOC42M2wtMS40NS0uNDktMSAxLjczIDEuMTQgMWMtLjA4LjUtLjA4Ljc2IDAgMS4yNmwtMS4xNCAxIDEgMS43MyAxLjQ1LS40OWMuMzIuMjcuNjguNDggMS4wOC42M0wxOCAyNGgybC4zLTEuNDljLjQtLjE1Ljc2LS4zNiAxLjA4LS42M2wxLjQ1LjQ5IDEtMS43My0xLjE0LTFjLjA4LS41MS4wOC0uNzcgMC0xLjI3ek0xOSAyMWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTExIDd2NS40MWwyLjM2IDIuMzYgMS4wNC0xLjc5LTEuNC0xLjM5VjdoLTJ6bTEwIDVhOSA5IDAgMCAwLTktOUM5LjE3IDMgNi42NSA0LjMyIDUgNi4zNlY0SDN2Nmg2VjhINi4yNkE3LjAxIDcuMDEgMCAwIDEgMTIgNWMzLjg2IDAgNyAzLjE0IDcgN2gyem0tMTAuMTQgNi45MWMtMi45OS0uNDktNS4zNS0yLjktNS43OC01LjkxSDMuMDZjLjUgNC41IDQuMzEgOCA4Ljk0IDhoLjA3bC0xLjIxLTIuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtBc1VucmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguODMgN2gtMi42TDEwLjUgNCA0IDcuNFYxN2MtMS4xIDAtMi0uOS0yLTJWNy4xN2MwLS41My4zMi0xLjA5LjgtMS4zNEwxMC41IDJsNy41NCAzLjgzYy40My4yMy43My43Ljc5IDEuMTd6TTIwIDhIN2MtMS4xIDAtMiAuOS0yIDJ2OWMwIDEuMS45IDIgMiAyaDEzYzEuMSAwIDItLjkgMi0ydi05YzAtMS4xLS45LTItMi0yem0wIDMuNjdMMTMuNSAxNSA3IDExLjY3VjEwbDYuNSAzLjMzTDIwIDEwdjEuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmt1bnJlYWRNYWlsYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0tNjE4LTMwMDBINzgyVjYwMEgtNjE4ek0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNkgxMHY2SDhWNGg2VjBINnY2SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lZGlhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDEyLTQgNC0xLjQxLTEuNDFMMTguMTcgMTNoLTUuMjNBOC45NzQgOC45NzQgMCAwIDEgOCAyMC4wNSAzLjAwNSAzLjAwNSAwIDAgMSA1IDIzYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zYy45NSAwIDEuNzguNDUgMi4zMyAxLjE0QTYuOTY5IDYuOTY5IDAgMCAwIDEwLjkxIDEzaC0zLjFDNy40IDE0LjE2IDYuMyAxNSA1IDE1Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zYzEuMyAwIDIuNC44NCAyLjgyIDJoMy4xYy0uMzItMi4yMy0xLjY5LTQuMS0zLjU5LTUuMTRDNi43OCA2LjU1IDUuOTUgNyA1IDcgMy4zNCA3IDIgNS42NiAyIDRzMS4zNC0zIDMtM2EyLjk5IDIuOTkgMCAwIDEgMi45OSAyLjk1QTguOTc0IDguOTc0IDAgMCAxIDEyLjkzIDExaDUuMjNsLTEuNTgtMS41OUwxOCA4bDQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTloMTJ2Mkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlbFRyYWluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxMy41YzAgMi0yLjUgMy41LTIuNSA1aC0yYzAtMS41LTIuNS0zLTIuNS01IDAtMS45MyAxLjU3LTMuNSAzLjUtMy41czMuNSAxLjU3IDMuNSAzLjV6bS0yLjUgNmgtMlYyMWgydi0xLjV6bTYtNi41YzAgMS42OC0uNTkgMy4yMS0xLjU4IDQuNDJsMS40MiAxLjQyYTguOTc4IDguOTc4IDAgMCAwLTEtMTIuNjhsLTEuNDIgMS40MkE2Ljk5MyA2Ljk5MyAwIDAgMSAxOSAxM3ptLTMtOC00LTR2M2E5IDkgMCAwIDAtOSA5YzAgMi4yMy44MiA0LjI3IDIuMTYgNS44NGwxLjQyLTEuNDJBNi45MzggNi45MzggMCAwIDEgNSAxM2MwLTMuODYgMy4xNC03IDctN3YzbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1BpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNC42NyAzLjQxIDYuMDkgMiA3LjVsOC41IDguNUg0djJoMTZ2LTJoLTYuNWw1LjE1LTUuMTVBMi41IDIuNSAwIDEgMCAxOS41IDYgMi41IDIuNSAwIDAgMCAxNyA4LjVjMCAuMzUuMDcuNjcuMi45N2wtNS4yIDUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV3TGFiZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxMi00LjM3IDYuMTZjLS4zNy41Mi0uOTguODQtMS42My44NGgtM3YtNkg5di0zSDNWN2MwLTEuMS45LTIgMi0yaDEwYy42NSAwIDEuMjYuMzEgMS42My44NEwyMSAxMnptLTExIDNIN3YtM0g1djNIMnYyaDN2M2gydi0zaDN2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5leHRQbGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNiAxMS45N2gtNWwyLjI2LTIuMjZhNC45NCA0Ljk0IDAgMCAwLTMuNzYtMS43NGMtMi4zNyAwLTQuMzUgMS42Ni00Ljg2IDMuODhsLS45Ni0uMzJjLjY0LTIuNjIgMy00LjU2IDUuODItNC41NiAxLjc4IDAgMy4zNy43OSA0LjQ3IDIuMDNMMTggOC45N3Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodGxpZ2h0Um91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDEyYzAtMy41NyAyLjItNi42MiA1LjMxLTcuODcuODktLjM2Ljc1LTEuNjktLjE5LTEuOS0xLjEtLjI0LTIuMjctLjMtMy40OC0uMTQtNC41MS42LTguMTIgNC4zMS04LjU5IDguODNDNC40NCAxNi45MyA5LjEzIDIyIDE1LjAxIDIyYy43MyAwIDEuNDMtLjA4IDIuMTItLjIzLjk1LS4yMSAxLjEtMS41My4yLTEuOUE4LjQ2IDguNDYgMCAwIDEgMTIuMDEgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vQWNjb3VudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4xOCAxMC45NGMuMi0uNDQuMzItLjkyLjMyLTEuNDRDMTUuNSA3LjU3IDEzLjkzIDYgMTIgNmMtLjUyIDAtMSAuMTItMS40NC4zMmw0LjYyIDQuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTNjLTIuMzIgMC00LjQ1LjgtNi4xNCAyLjEyQTcuOTU3IDcuOTU3IDAgMCAxIDQgMTJjMC0xLjg1LjYzLTMuNTUgMS42OS00LjlsMi44NiAyLjg2YTMuNDcgMy40NyAwIDAgMCAyLjk5IDIuOTlsMi4yIDIuMmMtLjU3LS4xLTEuMTUtLjE1LTEuNzQtLjE1em02LjMxIDEuOUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NC0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9pc2VBd2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE1aC0yYTEuMDAzIDEuMDAzIDAgMCAxLTEuOTUuMzJjLS4xNS0uNDQtLjQtMS4wOC0uOTMtMS42MWwtMS4zNi0xLjM2QzkuMjggMTEuODcgOSAxMS4xOSA5IDEwLjVhMi41IDIuNSAwIDAgMSA0Ljk1LS41aDIuMDJjLS4yNS0yLjI1LTIuMTYtNC00LjQ3LTRDOS4wMiA2IDcgOC4wMiA3IDEwLjVjMCAxLjIyLjQ5IDIuNDEgMS4zNSAzLjI3bDEuMzYgMS4zNmMuMTcuMTcuMzEuNDQuNDQuODJBMy4wMTMgMy4wMTMgMCAwIDAgMTMgMThjMS42NSAwIDMtMS4zNSAzLTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTMuNVwiLFwiY3lcIjpcIjEyLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zLjYgNi41OCAxLjU4IDEuMjZjLjM1LS41Ny43Ny0xLjEgMS4yNC0xLjU3TDQuODUgNS4wMmMtLjQ3LjQ3LS44OCAxLTEuMjUgMS41NnpNOS40NiA0LjQybC0uODctMS44MWMtLjYzLjIzLTEuMjQuNTItMS44Ljg3bC44NyAxLjgxYy41Ni0uMzYgMS4xNi0uNjUgMS44LS44N3pNNC40OSA5LjI2bC0xLjk2LS40NWMtLjIxLjYzLS4zNiAxLjI4LS40NCAxLjk1bDEuOTYuNDVhNy45IDcuOSAwIDAgMSAuNDQtMS45NXpNMjAuNCA2LjU4YTkuNCA5LjQgMCAwIDAtMS4yNS0xLjU2bC0xLjU4IDEuMjZjLjQ4LjQ3Ljg5Ljk5IDEuMjQgMS41N2wxLjU5LTEuMjd6TTQuMDQgMTIuNzlsLTEuOTYuNDVjLjA4LjY3LjIzIDEuMzMuNDQgMS45NWwxLjk3LS40NWMtLjIyLS42Mi0uMzgtMS4yNy0uNDUtMS45NXpNMTcuMjEgMy40OGMtLjU3LS4zNS0xLjE3LS42NC0xLjgtLjg3bC0uODcgMS44MWMuNjQuMjIgMS4yNC41MSAxLjguODdsLjg3LTEuODF6TTEzIDQuMDdWMi4wNWMtLjMzLS4wMy0uNjYtLjA1LTEtLjA1cy0uNjcuMDItMSAuMDV2Mi4wMmMuMzMtLjA0LjY2LS4wNyAxLS4wN3MuNjcuMDMgMSAuMDd6TTExIDE5LjkzdjIuMDJjLjMzLjAzLjY2LjA1IDEgLjA1cy42Ny0uMDIgMS0uMDV2LTIuMDJjLS4zMy4wNC0uNjYuMDctMSAuMDdzLS42Ny0uMDMtMS0uMDd6TTE5LjUxIDE0Ljc0bDEuOTcuNDVjLjIxLS42My4zNi0xLjI4LjQ0LTEuOTVsLTEuOTYtLjQ1Yy0uMDcuNjgtLjIzIDEuMzMtLjQ1IDEuOTV6TTE5Ljk2IDExLjIxbDEuOTYtLjQ1YTkuNjkgOS42OSAwIDAgMC0uNDQtMS45NWwtMS45Ny40NWMuMjIuNjIuMzggMS4yNy40NSAxLjk1ek0xNy41OCAxNy43M2wxLjU4IDEuMjZjLjQ3LS40OC44OC0xIDEuMjUtMS41NmwtMS41OC0xLjI2YTkuNCA5LjQgMCAwIDEtMS4yNSAxLjU2ek02Ljc5IDIwLjUyYy41Ny4zNSAxLjE3LjY0IDEuOC44N2wuODctMS44MWMtLjY0LS4yMi0xLjI0LS41MS0xLjgtLjg3bC0uODcgMS44MXpNMTQuNTQgMTkuNThsLjg3IDEuODFjLjYzLS4yMyAxLjI0LS41MiAxLjgtLjg3bC0uODctMS44MWMtLjU2LjM2LTEuMTYuNjUtMS44Ljg3ek0zLjYgMTcuNDJhOS40IDkuNCAwIDAgMCAxLjI1IDEuNTZsMS41OC0xLjI2YTcuODcgNy44NyAwIDAgMS0xLjI0LTEuNTdMMy42IDE3LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb2lzZUNvbnRyb2xPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzEuNDQgMCAyLjc5LjM4IDMuOTUgMS4wNUwxNy40IDMuNkMxNS44NSAyLjU5IDEzLjk5IDIgMTIgMnMtMy44NS41OS01LjQxIDEuNTlsMS40NSAxLjQ1QTguMDM0IDguMDM0IDAgMCAxIDEyIDR6TTIwIDEyYzAgMS40NC0uMzggMi43OS0xLjA1IDMuOTVsMS40NSAxLjQ1YzEuMDEtMS41NSAxLjYtMy40MSAxLjYtNS40cy0uNTktMy44NS0xLjU5LTUuNDFsLTEuNDUgMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAyMCAxMnpNMTIgMjBjLTEuNDQgMC0yLjc5LS4zOC0zLjk1LTEuMDVMNi42IDIwLjRDOC4xNSAyMS40MSAxMC4wMSAyMiAxMiAyMnMzLjg1LS41OSA1LjQxLTEuNTlsLTEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAxMiAyMHpNNCAxMmMwLTEuNDQuMzgtMi43OSAxLjA1LTMuOTVMMy41OSA2LjU5QzIuNTkgOC4xNSAyIDEwLjAxIDIgMTJzLjU5IDMuODUgMS41OSA1LjQxbDEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSA0IDEyek0xMS41IDZDOS4wMiA2IDcgOC4wMiA3IDEwLjVjMCAxLjIyLjQ5IDIuNDEgMS4zNSAzLjI3bDEuMzYgMS4zNmMuMTcuMTcuMzEuNDQuNDQuODJBMy4wMTMgMy4wMTMgMCAwIDAgMTMgMThjMS42NSAwIDMtMS4zNSAzLTNoLTJhMS4wMDMgMS4wMDMgMCAwIDEtMS45NS4zMmMtLjE1LS40NC0uNC0xLjA4LS45My0xLjYxbC0xLjM2LTEuMzZDOS4yOCAxMS44NyA5IDExLjE5IDkgMTAuNWEyLjUgMi41IDAgMCAxIDQuOTUtLjVoMi4wMmMtLjI1LTIuMjUtMi4xNi00LTQuNDctNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiMTIuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdEFjY2Vzc2libGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCAxMS4wNS0zLjQyLTMuNDJjLjMyLS4zNC43NC0uNTcgMS4yMy0uNjEuNDgtLjA0Ljg0LjA3IDEuMi4yNi4xOS4xLjM5LjIyLjYzLjQ2bDEuMjkgMS40M2MuOTggMS4wOCAyLjUzIDEuODUgNC4wNyAxLjgzdjJjLTEuNzUtLjAxLTMuNzEtLjg4LTUtMS45NXpNMTIgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTIuODEgMi44MSAxLjM5IDQuMjIgMTAgMTIuODNWMTVjMCAxLjEuOSAyIDIgMmgyLjE3bDUuNjEgNS42MSAxLjQxLTEuNDFMMi44MSAyLjgxek0xMCAyMGMtMS42NiAwLTMtMS4zNC0zLTMgMC0xLjMxLjg0LTIuNDEgMi0yLjgzVjEyLjFhNSA1IDAgMSAwIDUuOSA1LjloLTIuMDdjLS40MSAxLjE2LTEuNTIgMi0yLjgzIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdFN0YXJ0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNEg5VjhoMnY4em0xIDBWOGw1IDQtNSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RlQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0yIDE0aC0zdjNoLTJ2LTNIOHYtMmgzdi0zaDJ2M2gzdjJ6bS0zLTdWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT2ZmbGluZUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyLjAyYy01LjUxIDAtOS45OCA0LjQ3LTkuOTggOS45OHM0LjQ3IDkuOTggOS45OCA5Ljk4IDkuOTgtNC40NyA5Ljk4LTkuOThTMTcuNTEgMi4wMiAxMiAyLjAyek0xMS40OCAyMHYtNi4yNkg4TDEzIDR2Ni4yNmgzLjM1TDExLjQ4IDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPZmZsaW5lUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTUgMTZIN3YtMmgxMHYyem0tNi43LTRMNyAxMC43bDEuNC0xLjQgMS45IDEuOSA1LjMtNS4zTDE3IDcuMyAxMC4zIDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPbkRldmljZVRyYWluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTZoMnYxaC0yek0xMiAxMWMtMS4xIDAtMiAuOS0yIDIgMCAuNzQuNCAxLjM4IDEgMS43MnYuNzhoMnYtLjc4Yy42LS4zNSAxLS45OCAxLTEuNzIgMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEuMDEgNiAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE4IDE4SDZWNmgxMnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMDEgMTUuOTVjLjYyLS44My45OS0xLjg0Ljk5LTIuOTVzLS4zNy0yLjEyLS45OS0yLjk1bC0xLjA3IDEuMDdjLjM1LjU0LjU2IDEuMTkuNTYgMS44OHMtLjIxIDEuMzQtLjU2IDEuODhsMS4wNyAxLjA3ek05LjA2IDE0Ljg4Yy0uMzUtLjU0LS41Ni0xLjE5LS41Ni0xLjg4IDAtMS45MyAxLjU3LTMuNSAzLjUtMy41djEuMjVsMi4yNS0yLTIuMjUtMlY4Yy0yLjc2IDAtNSAyLjI0LTUgNSAwIDEuMTEuMzcgMi4xMi45OSAyLjk1bDEuMDctMS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT25saW5lUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTEuNWMwIDItMi41IDMuNS0yLjUgNWgtMmMwLTEuNS0yLjUtMy0yLjUtNUM4LjUgOS41NyAxMC4wNyA4IDEyIDhzMy41IDEuNTcgMy41IDMuNXptLTIuNSA2aC0yVjE5aDJ2LTEuNXptOS01LjVjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDdsLTEuMDYgMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAyMC41IDEyYzAgMi4zNC0uOTUgNC40Ny0yLjQ5IDYuMDFsMS4wNiAxLjA2QTkuOTY5IDkuOTY5IDAgMCAwIDIyIDEyek0zLjUgMTJjMC0yLjM0Ljk1LTQuNDcgMi40OS02LjAxTDQuOTMgNC45M0E5Ljk2OSA5Ljk2OSAwIDAgMCAyIDEyYzAgMi43NiAxLjEyIDUuMjYgMi45MyA3LjA3bDEuMDYtMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAzLjUgMTJ6bTE0IDBjMCAxLjUyLS42MiAyLjg5LTEuNjEgMy44OWwxLjA2IDEuMDZBNi45NzYgNi45NzYgMCAwIDAgMTkgMTJjMC0xLjkzLS43OC0zLjY4LTIuMDUtNC45NWwtMS4wNiAxLjA2Yy45OSAxIDEuNjEgMi4zNyAxLjYxIDMuODl6TTcuMDUgMTYuOTVsMS4wNi0xLjA2Yy0xLTEtMS42MS0yLjM3LTEuNjEtMy44OXMuNjItMi44OSAxLjYxLTMuODlMNy4wNSA3LjA1QTYuOTc2IDYuOTc2IDAgMCAwIDUgMTJjMCAxLjkzLjc4IDMuNjggMi4wNSA0Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPcGFjaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAwSDB2MjRoMjRWMHptMCAwSDB2MjRoMjRWMHpNMCAyNGgyNFYwSDB2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjY2IDggMTIgMi4zNSA2LjM0IDhBOC4wMiA4LjAyIDAgMCAwIDQgMTMuNjRjMCAyIC43OCA0LjExIDIuMzQgNS42N2E3Ljk5IDcuOTkgMCAwIDAgMTEuMzIgMGMxLjU2LTEuNTYgMi4zNC0zLjY3IDIuMzQtNS42N1MxOS4yMiA5LjU2IDE3LjY2IDh6TTYgMTRjLjAxLTIgLjYyLTMuMjcgMS43Ni00LjRMMTIgNS4yN2w0LjI0IDQuMzhDMTcuMzggMTAuNzcgMTcuOTkgMTIgMTggMTRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbkluQnJvd3NlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYtMkg1VjhoMTR2MTBoLTR2Mmg0YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptLTcgNi00IDRoM3Y2aDJ2LTZoM2wtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPcGVuSW5GdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTFWM2gtOGwzLjI5IDMuMjktMTAgMTBMMyAxM3Y4aDhsLTMuMjktMy4yOSAxMC0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbkluTmV3T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNzkgNS44IDE0IDNoN3Y3bC0yLjc5LTIuOC00LjA5IDQuMDktMS40MS0xLjQxIDQuMDgtNC4wOHpNMTkgMTJ2NC4xN2wyIDJWMTJoLTJ6bS43OCAxMC42MUwxOC4xNyAyMUg1YTIgMiAwIDAgMS0yLTJWNS44M0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTE2LjE3IDE5bC00Ljg4LTQuODgtMS41OSAxLjU5LTEuNDEtMS40MSAxLjU5LTEuNTlMNSA3LjgzVjE5aDExLjE3ek03LjgzIDVIMTJWM0g1LjgzbDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbkluTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbldpdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5aDRWNmgzbC01LTUtNSA1aDN2M3ptLTEgMUg2VjdsLTUgNSA1IDV2LTNoM3YtNHptMTQgMi01LTV2M2gtM3Y0aDN2M2w1LTV6bS05IDNoLTR2M0g3bDUgNSA1LTVoLTN2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGJvbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0Ym91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0Ym94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDQuOTljLTEuMTEgMC0xLjk4LjktMS45OCAyTDMgMTljMCAxLjEuODggMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxMmgtNGMwIDEuNjYtMS4zNSAzLTMgM3MtMy0xLjM0LTMtM0g0Ljk5VjVIMTl2MTB6TTggMTFoMnYzaDR2LTNoMmwtNC00LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0Z29pbmdNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxMWMuMTcgMCAuMzQuMDEuNS4wM1Y2Ljg3QzE5IDUuODQgMTguMTYgNSAxNy4xMyA1SDMuODdDMi44NCA1IDIgNS44NCAyIDYuODd2MTAuMjZDMiAxOC4xNiAyLjg0IDE5IDMuODcgMTloOS43M2MtLjM4LS43NS0uNi0xLjYtLjYtMi41IDAtMy4wNCAyLjQ2LTUuNSA1LjUtNS41em0tOC4xIDJMNCA5LjE5VjdoLjIzbDYuMTggMy42OEwxNi43NCA3SDE3djIuMTZMMTAuNCAxM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkgMTMtMS40MSAxLjQxTDE5LjE3IDE2SDE1djJoNC4xN2wtMS41OCAxLjU5TDE5IDIxbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOSAxMmMtLjU1IDAtMS0uNDUtMS0xVjhjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjNjMCAuNTUtLjQ1IDEtMSAxem01IDZoLTR2LTJjMC0xLjEuOS0yIDItMnMyIC45IDIgMnYyem0yLTdjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTFWOGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0cHV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTcgNS01LTUtNS0xLjQxIDEuNDFMMTguMTcgMTFIOXYyaDkuMTdsLTIuNTggMi41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDE0djJoMlY1YTIgMiAwIDAgMC0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGEyIDIgMCAwIDAgMi0ydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhZ2V2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSA5YTIuNSAyLjUgMCAwIDAgMCA1IDIuNSAyLjUgMCAwIDAgMC01ek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTMuMjEgMTQuMjEtMi45MS0yLjkxYy0uNjkuNDQtMS41MS43LTIuMzkuN0M5LjAxIDE2IDcgMTMuOTkgNyAxMS41UzkuMDEgNyAxMS41IDcgMTYgOS4wMSAxNiAxMS41YzAgLjg4LS4yNiAxLjY5LS43IDIuMzlsMi45MSAyLjktMS40MiAxLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLjg4IDE1Ljc2VjE5aC0xLjc1di0xLjI5Yy0uNzQtLjE4LTIuMzktLjc3LTMuMDItMi45NmwxLjY1LS42N2MuMDYuMjIuNTggMi4wOSAyLjQgMi4wOS45MyAwIDEuOTgtLjQ4IDEuOTgtMS42MSAwLS45Ni0uNy0xLjQ2LTIuMjgtMi4wMy0xLjEtLjM5LTMuMzUtMS4wMy0zLjM1LTMuMzEgMC0uMS4wMS0yLjQgMi42Mi0yLjk2VjVoMS43NXYxLjI0YzEuODQuMzIgMi41MSAxLjc5IDIuNjYgMi4yM2wtMS41OC42N2MtLjExLS4zNS0uNTktMS4zNC0xLjktMS4zNC0uNyAwLTEuODEuMzctMS44MSAxLjM5IDAgLjk1Ljg2IDEuMzEgMi42NCAxLjkgMi40LjgzIDMuMDEgMi4wNSAzLjAxIDMuNDUgMCAyLjYzLTIuNSAzLjEzLTMuMDIgMy4yMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFuVG9vbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljk4IDE0LjgyLS42MyA0LjQ2Yy0uMTQuOTktLjk5IDEuNzItMS45OCAxLjcyaC02LjE2Yy0uNTMgMC0xLjI5LS4yMS0xLjY2LS41OUw1IDE1LjYybC44My0uODRjLjI0LS4yNC41OC0uMzUuOTItLjI4bDMuMjUuNzRWNC41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41djZoLjkxYy4zMSAwIC42Mi4wNy44OS4yMWw0LjA5IDIuMDRjLjc3LjM5IDEuMjEgMS4yMiAxLjA5IDIuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhblRvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA1LjVWMjBjMCAyLjItMS44IDQtNCA0aC03LjNjLTEuMDggMC0yLjEtLjQzLTIuODUtMS4xOUwxIDE0LjgzczEuMjYtMS4yMyAxLjMtMS4yNWMuMjItLjE5LjQ5LS4yOS43OS0uMjkuMjIgMCAuNDIuMDYuNi4xNi4wNC4wMSA0LjMxIDIuNDYgNC4zMSAyLjQ2VjRjMC0uODMuNjctMS41IDEuNS0xLjVTMTEgMy4xNyAxMSA0djdoMVYxLjVjMC0uODMuNjctMS41IDEuNS0xLjVTMTUgLjY3IDE1IDEuNVYxMWgxVjIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxMWgxVjUuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGF5bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDR2LTZoMTZ2NnptMC0xMEg0VjZoMTZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVuZGluZ0FjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTEuNjUgNy4zNUwxNi41IDE3LjJWMTRoMXYyLjc5bDEuODUgMS44NS0uNy43MXpNMTggM2gtMy4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINmMtMS4xIDAtMiAuOS0yIDJ2MTVjMCAxLjEuOSAyIDIgMmg2LjExYTYuNzQzIDYuNzQzIDAgMCAxLTEuNDItMkg2VjVoMnYzaDhWNWgydjUuMDhjLjcxLjEgMS4zOC4zMSAyIC42VjVjMC0xLjEtLjktMi0yLTJ6bS02IDJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVuZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTcgMTMuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcmNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTFDOS40MyAxMSAxMSA5LjQzIDExIDcuNVM5LjQzIDQgNy41IDQgNCA1LjU3IDQgNy41IDUuNTcgMTEgNy41IDExem0wLTVDOC4zMyA2IDkgNi42NyA5IDcuNVM4LjMzIDkgNy41IDkgNiA4LjMzIDYgNy41IDYuNjcgNiA3LjUgNnpNNC4wMDIgMTguNTgzIDE4LjU5IDMuOTk2bDEuNDE0IDEuNDE0TDUuNDE3IDE5Ljk5N3pNMTYuNSAxM2MtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNSAzLjUtMS41NyAzLjUtMy41LTEuNTctMy41LTMuNS0zLjV6bTAgNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1DYW1lcmFNaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg3di0yLjA5Yy0yLjgzLS40OC01LTIuOTQtNS01LjkxaDJjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGgyYzAgMi45Ny0yLjE3IDUuNDMtNSA1LjkxVjIxaDdjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptLTYgOGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yczIgLjkgMiAydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1Db250YWN0Q2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDNjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem02IDEySDZ2LTFjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1EYXRhU2V0dGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk5IDExLjVjLjM0IDAgLjY3LjAzIDEgLjA3TDIwIDAgMCAyMGgxMS41NmMtLjA0LS4zMy0uMDctLjY2LS4wNy0xIDAtNC4xNCAzLjM2LTcuNSA3LjUtNy41em0zLjcxIDcuOTljLjAyLS4xNi4wNC0uMzIuMDQtLjQ5IDAtLjE3LS4wMS0uMzMtLjA0LS40OWwxLjA2LS44M2EuMjYuMjYgMCAwIDAgLjA2LS4zMmwtMS0xLjczYy0uMDYtLjExLS4xOS0uMTUtLjMxLS4xMWwtMS4yNC41Yy0uMjYtLjItLjU0LS4zNy0uODUtLjQ5bC0uMTktMS4zMmMtLjAxLS4xMi0uMTItLjIxLS4yNC0uMjFoLTJjLS4xMiAwLS4yMy4wOS0uMjUuMjFsLS4xOSAxLjMyYy0uMy4xMy0uNTkuMjktLjg1LjQ5bC0xLjI0LS41Yy0uMTEtLjA0LS4yNCAwLS4zMS4xMWwtMSAxLjczYy0uMDYuMTEtLjA0LjI0LjA2LjMybDEuMDYuODNhMy45MDggMy45MDggMCAwIDAgMCAuOThsLTEuMDYuODNhLjI2LjI2IDAgMCAwLS4wNi4zMmwxIDEuNzNjLjA2LjExLjE5LjE1LjMxLjExbDEuMjQtLjVjLjI2LjIuNTQuMzcuODUuNDlsLjE5IDEuMzJjLjAyLjEyLjEyLjIxLjI1LjIxaDJjLjEyIDAgLjIzLS4wOS4yNS0uMjFsLjE5LTEuMzJjLjMtLjEzLjU5LS4yOS44NC0uNDlsMS4yNS41Yy4xMS4wNC4yNCAwIC4zMS0uMTFsMS0xLjczYS4yNi4yNiAwIDAgMC0uMDYtLjMybC0xLjA3LS44M3ptLTMuNzEgMS4wMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1EZXZpY2VJbmZvcm1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2MmgyVjd6bTAgNGgtMnY2aDJ2LTZ6bTQtOS45OUw3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJtSWRlbnRpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1LjlhMi4xIDIuMSAwIDEgMSAwIDQuMiAyLjEgMi4xIDAgMCAxIDAtNC4ybTAgOWMyLjk3IDAgNi4xIDEuNDYgNi4xIDIuMXYxLjFINS45VjE3YzAtLjY0IDMuMTMtMi4xIDYuMS0yLjFNMTIgNEM5Ljc5IDQgOCA1Ljc5IDggOHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA5Yy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJtTWVkaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZIMHY1aC4wMUwwIDIwYzAgMS4xLjkgMiAyIDJoMTh2LTJIMlY2em0yMC0yaC04bC0yLTJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNyAxNWw0LjUtNiAzLjUgNC41MSAyLjUtMy4wMUwyMSAxNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJtUGhvbmVNc2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2ExLjAyIDEuMDIgMCAwIDAtMS4wMi4yNGwtMi4yIDIuMmExNS4wNzQgMTUuMDc0IDAgMCAxLTYuNTktNi41OGwyLjItMi4yMWMuMjgtLjI3LjM2LS42Ni4yNS0xLjAxQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek0xMiAzdjEwbDMtM2g2VjNoLTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1TY2FuV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNDNi45NSAzIDMuMTUgNC44NSAwIDcuMjNMMTIgMjIgMjQgNy4yNUMyMC44NSA0Ljg3IDE3LjA1IDMgMTIgM3ptMSAxM2gtMnYtNmgydjZ6bS0yLThWNmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjQuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4zNCAxNC44NmMtLjg3LTEuMDItMS42LTEuODktMi40OC0yLjkxLS40Ni0uNTQtMS4wNS0xLjA4LTEuNzUtMS4zMi0uMTEtLjA0LS4yMi0uMDctLjMzLS4wOS0uMjUtLjA0LS41Mi0uMDQtLjc4LS4wNHMtLjUzIDAtLjc5LjA1Yy0uMTEuMDItLjIyLjA1LS4zMy4wOS0uNy4yNC0xLjI4Ljc4LTEuNzUgMS4zMi0uODcgMS4wMi0xLjYgMS44OS0yLjQ4IDIuOTEtMS4zMSAxLjMxLTIuOTIgMi43Ni0yLjYyIDQuNzkuMjkgMS4wMiAxLjAyIDIuMDMgMi4zMyAyLjMyLjczLjE1IDMuMDYtLjQ0IDUuNTQtLjQ0aC4xOGMyLjQ4IDAgNC44MS41OCA1LjU0LjQ0IDEuMzEtLjI5IDIuMDQtMS4zMSAyLjMzLTIuMzIuMzEtMi4wNC0xLjMtMy40OS0yLjYxLTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOWgxLjV2NkgxM3YtMi41aC0yVjE1SDkuNVY5SDExdjJoMlY5em0tNSAxLjV2MWMwIC44LS43IDEuNS0xLjUgMS41aC0ydjJIM1Y5aDMuNWMuOCAwIDEuNS43IDEuNSAxLjV6bS0xLjUgMGgtMnYxaDJ2LTF6bTE1IDB2MWMwIC44LS43IDEuNS0xLjUgMS41aC0ydjJoLTEuNVY5SDIwYy44IDAgMS41LjcgMS41IDEuNXptLTEuNSAwaC0ydjFoMnYtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGljdHVyZUluUGljdHVyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFoLTh2Nmg4di02em00IDhWNC45OEMyMyAzLjg4IDIyLjEgMyAyMSAzSDNjLTEuMSAwLTIgLjg4LTIgMS45OFYxOWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yem0tMiAuMDJIM1Y0Ljk3aDE4djE0LjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaWN0dXJlSW5QaWN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2gtOHY2aDhWN3ptMi00SDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4VjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk4aDE4djE0LjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaW5FbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMlY2SDR2MTJoMTB2Mkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJ2NmgtMnptLTEgMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bS00LjM0LTZIOXY1LjY2bDIuMTItMi4xMiAyLjgzIDIuODMgMS40MS0xLjQxLTIuODMtMi44M0wxNC42NiA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaW5JbnZva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMnY2YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxMHYySDR2MTJoMTZ2LTZoMnptMC01YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzIDEuMzQgMyAzIDMgMy0xLjM0IDMtM3ptLTEwLjUzIDUuMTItMi44MyAyLjgzIDEuNDEgMS40MSAyLjgzLTIuODNMMTUgMTUuNjZWMTBIOS4zNGwyLjEzIDIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpbmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyLjVWMWg1djVIOS41VjMuNTZMMy41NiA5LjVINlYxMUgxVjZoMS41djIuNDRMOC40NCAyLjVINnptMTYuOTggMTQuMzItLjYzIDQuNDZjLS4xNC45OS0uOTkgMS43Mi0xLjk4IDEuNzJoLTYuMTZjLS41MyAwLTEuMjktLjIxLTEuNjYtLjU5TDggMTcuNjJsLjgzLS44NGMuMjQtLjI0LjU4LS4zNS45Mi0uMjhsMy4yNS43NFY2LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2NmguOTFjLjMxIDAgLjYyLjA3Ljg5LjIxbDQuMDkgMi4wNGMuNzcuMzkgMS4yMSAxLjIyIDEuMDkgMi4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxhZ2lhcmlzbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0xLjA0IDE3LjQ1LTEuODgtMS44OGMtMS4zMy43MS0zLjAxLjUzLTQuMTMtLjU5YTMuNDk1IDMuNDk1IDAgMCAxIDAtNC45NSAzLjQ5NSAzLjQ5NSAwIDAgMSA0Ljk1IDAgMy40OCAzLjQ4IDAgMCAxIC41OSA0LjEzbDEuODggMS44OC0xLjQxIDEuNDF6TTEzIDlWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMS41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlGb3JXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNXY1LjU5SDcuNWw0LjUgNC41IDQuNS00LjVIMTNWNWgtMnptLTUgOWMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02aC0yYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvbHltZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC00TDcuMTEgMTYuNjMgNC41IDEyIDkgNEg1TC41IDEyIDUgMjBoNGw3Ljg5LTEyLjYzTDE5LjUgMTIgMTUgMjBoNGw0LjUtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG93ZXJTZXR0aW5nc05ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNoLTJ2MTBoMlYzem00LjgzIDIuMTctMS40MiAxLjQyQTYuOTIgNi45MiAwIDAgMSAxOSAxMmMwIDMuODctMy4xMyA3LTcgN0E2Ljk5NSA2Ljk5NSAwIDAgMSA3LjU4IDYuNThMNi4xNyA1LjE3QTguOTMyIDguOTMyIDAgMCAwIDMgMTJhOSA5IDAgMCAwIDE4IDBjMC0yLjc0LTEuMjMtNS4xOC0zLjE3LTYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByZWduYW50V29tYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRjMC0xLjExLjg5LTIgMi0yczIgLjg5IDIgMi0uODkgMi0yIDItMi0uODktMi0yem03IDlhMy4yODUgMy4yODUgMCAwIDAtMi0zYzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzdjdoMnY1aDN2LTVoM3YtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJldmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWN2gxNHYxMnptLTUuNS02YzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41ek0xMiA5Yy0yLjczIDAtNS4wNiAxLjY2LTYgNCAuOTQgMi4zNCAzLjI3IDQgNiA0czUuMDYtMS42NiA2LTRjLS45NC0yLjM0LTMuMjctNC02LTR6bTAgNi41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDhINWMtMS42NiAwLTMgMS4zNC0zIDN2Nmg0djRoMTJ2LTRoNHYtNmMwLTEuNjYtMS4zNC0zLTMtM3ptLTMgMTFIOHYtNWg4djV6bTMtN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMS05SDZ2NGgxMlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcml2YWN5VGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bS0xIDZoMnYyaC0yVjd6bTAgNGgydjZoLTJ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaXZhdGVDb25uZWN0aXZpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MyAxMWMtLjQ5LTMuMzktMy40LTYtNi45My02cy02LjQ0IDIuNjEtNi45MyA2SDJ2MmgzLjA3Yy40OSAzLjM5IDMuNCA2IDYuOTMgNnM2LjQ0LTIuNjEgNi45My02SDIydi0yaC0zLjA3ek0xNSAxNC41YzAgLjU1LS40NSAxLTEgMWgtNGMtLjU1IDAtMS0uNDUtMS0xdi0zYzAtLjU1LjQ1LTEgMS0xdi0xYTIgMiAwIDAgMSAyLjM0LTEuOTdjLjk4LjE2IDEuNjYgMS4wOCAxLjY2IDIuMDh2Ljg5Yy41NSAwIDEgLjQ1IDEgMXYzek0xMi43NSAxM2MwIC40MS0uMzQuNzUtLjc1Ljc1cy0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NS43NS4zNC43NS43NXpNMTMgOS41djFoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcm9kdWN0aW9uUXVhbnRpdHlMaW1pdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMGgtMlY4aDJ2MnptMC00aC0yVjFoMnY1ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTguOS01aDcuNDVjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzTDIxIDQuOTYgMTkuMjUgNGwtMy43IDdIOC41M0w0LjI3IDJIMXYyaDJsMy42IDcuNTktMS4zNSAyLjQ0QzQuNTIgMTUuMzcgNS40OCAxNyA3IDE3aDEydi0ySDdsMS4xLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFB1Ymxpc2hlZFdpdGhDaGFuZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNjYgOS41My03LjA3IDcuMDctNC4yNC00LjI0IDEuNDEtMS40MSAyLjgzIDIuODMgNS42Ni01LjY2IDEuNDEgMS40MXpNNCAxMmMwLTIuMzMgMS4wMi00LjQyIDIuNjItNS44OEw5IDguNXYtNkgzbDIuMiAyLjJDMy4yNCA2LjUyIDIgOS4xMSAyIDEyYzAgNS4xOSAzLjk1IDkuNDUgOSA5Ljk1di0yLjAyYy0zLjk0LS40OS03LTMuODYtNy03Ljkzem0xOCAwYzAtNS4xOS0zLjk1LTkuNDUtOS05Ljk1djIuMDJjMy45NC40OSA3IDMuODYgNyA3LjkzIDAgMi4zMy0xLjAyIDQuNDItMi42MiA1Ljg4TDE1IDE1LjV2Nmg2bC0yLjItMi4yYzEuOTYtMS44MiAzLjItNC40MSAzLjItNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWVyeUJ1aWxkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgN0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWVzdGlvbkFuc3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZoLTJ2OUg2djJjMCAuNTUuNDUgMSAxIDFoMTFsNCA0VjdjMC0uNTUtLjQ1LTEtMS0xem0tNCA2VjNjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXYxNGw0LTRoMTBjLjU1IDAgMS0uNDUgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWVzdGlvbk1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4wNyAxMi44NWMuNzctMS4zOSAyLjI1LTIuMjEgMy4xMS0zLjQ0LjkxLTEuMjkuNC0zLjctMi4xOC0zLjctMS42OSAwLTIuNTIgMS4yOC0yLjg3IDIuMzRMNi41NCA2Ljk2QzcuMjUgNC44MyA5LjE4IDMgMTEuOTkgM2MyLjM1IDAgMy45NiAxLjA3IDQuNzggMi40MS43IDEuMTUgMS4xMSAzLjMuMDMgNC45LTEuMiAxLjc3LTIuMzUgMi4zMS0yLjk3IDMuNDUtLjI1LjQ2LS4zNS43Ni0uMzUgMi4yNGgtMi44OWMtLjAxLS43OC0uMTMtMi4wNS40OC0zLjE1ek0xNCAyMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1aWNrcmVwbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoOXYtOGg3VjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjUgMTZoLTIuMmwxLjctNGgtNXY2aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmViYXNlRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTlcIixcImN5XCI6XCI1XCIsXCJyXCI6XCIzXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjc2IDkuMjQgMTUgNSAxMC43Ni43NiA5LjM0IDIuMTcgMTEuMTcgNEg3LjgyQzcuNCAyLjg0IDYuMyAyIDUgMiAzLjM0IDIgMiAzLjM0IDIgNWMwIDEuMy44NCAyLjQgMiAyLjgydjguMzdDMi44NCAxNi42IDIgMTcuNyAyIDE5YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNjMC0xLjMtLjg0LTIuNC0yLTIuODJWNy44MmMuODUtLjMxIDEuNTEtLjk3IDEuODItMS44MmgzLjM2TDkuMzQgNy44M2wxLjQyIDEuNDF6TTEwIDE5djNoM2w2LjI2LTYuMjYtMy0zek0yMC4xMiAxMC4yOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuMzggMS4zOCAzIDMgMS4zOC0xLjM4YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMS41OS0xLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWNlaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTdINnYtMmgxMnYyem0wLTRINnYtMmgxMnYyem0wLTRINlY3aDEydjJ6TTMgMjJsMS41LTEuNUw2IDIybDEuNS0xLjVMOSAyMmwxLjUtMS41TDEyIDIybDEuNS0xLjVMMTUgMjJsMS41LTEuNUwxOCAyMmwxLjUtMS41TDIxIDIyVjJsLTEuNSAxLjVMMTggMmwtMS41IDEuNUwxNSAybC0xLjUgMS41TDEyIDJsLTEuNSAxLjVMOSAyIDcuNSAzLjUgNiAyIDQuNSAzLjUgMyAydjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWNvcmRWb2ljZU92ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCI5XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTVjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bTcuNzYtOS42NC0xLjY4IDEuNjljLjg0IDEuMTguODQgMi43MSAwIDMuODlsMS42OCAxLjY5YzIuMDItMi4wMiAyLjAyLTUuMDcgMC03LjI3ek0yMC4wNyAybC0xLjYzIDEuNjNjMi43NyAzLjAyIDIuNzcgNy41NiAwIDEwLjc0TDIwLjA3IDE2YzMuOS0zLjg5IDMuOTEtOS45NSAwLTE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWRlZW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTFhMi45OTYgMi45OTYgMCAwIDAtNS41LTEuNjVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEuNzkgMTIgNS41OCA1LjU5TDUuOTYgMTkgLjM3IDEzLjQxIDEuNzkgMTJ6bS40NS03Ljc4TDEyLjkgMTQuODlsLTEuMjggMS4yOEw3LjQ0IDEybC0xLjQxIDEuNDFMMTEuNjIgMTlsMi42OS0yLjY5IDQuODkgNC44OSAxLjQxLTEuNDFMMy42NSAyLjgxIDIuMjQgNC4yMnptMTQuOSA5LjI3TDIzLjYyIDcgMjIuMiA1LjU5bC02LjQ4IDYuNDggMS40MiAxLjQyek0xNy45NiA3bC0xLjQxLTEuNDEtMy42NSAzLjY2IDEuNDEgMS40MUwxNy45NiA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmVTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi43MyAyMi43MyAyLjc3IDIuNzcgMiAybC0uNzMtLjczTDAgMi41NGw0LjM5IDQuMzkgMi4yMSA0LjY2LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmg3LjQ2bDEuMzggMS4zOEExLjk5NyAxLjk5NyAwIDAgMCAxNyAyMmMuNjcgMCAxLjI2LS4zMyAxLjYyLS44NEwyMS40NiAyNGwxLjI3LTEuMjd6TTcuNDIgMTVjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2gyLjM2bDIgMkg3LjQyem04LjEzLTJjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OUExLjAwMyAxLjAwMyAwIDAgMCAyMCA0SDYuNTRsOS4wMSA5ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNWgxOHYtMkgzdjJ6bTAgNGgxOHYtMkgzdjJ6bTAtOGgxOFY5SDN2MnptMC02djJoMThWNUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBhcnRpdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTZIM3Y2em03LjMzLTJ2LTJoMy4zM3YyaC0zLjMzek0xOSAxOWgtMy4zM3YtMkgxOXYyek01IDE3aDMuMzN2Mkg1di0yek02IDEwbDEuNDItMS40Mkw1LjgzIDdIMTdjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAySDN2MmgxNGMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNEg1LjgzbDEuNTktMS41OUw2IDIgMiA2bDQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwb3J0UHJvYmxlbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVxdWVzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0xIDloLTR2MWgzYy41NSAwIDEgLjQ1IDEgMXYzYzAgLjU1LS40NSAxLTEgMWgtMXYxaC0ydi0xSDl2LTJoNHYtMWgtM2MtLjU1IDAtMS0uNDUtMS0xdi0zYzAtLjU1LjQ1LTEgMS0xaDFWOGgydjFoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXN0b3JlRnJvbVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTR6TTYgN3YxMmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2em04IDd2NGgtNHYtNEg4bDQtNCA0IDRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RvcmVQYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMiAxNmMtMi4wNSAwLTMuODEtMS4yNC00LjU4LTNoMS43MWMuNjMuOSAxLjY4IDEuNSAyLjg3IDEuNSAxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMy45MyA5LjUgMTIgOS41YTMuNSAzLjUgMCAwIDAtMy4xIDEuOWwxLjYgMS42aC00VjlsMS4zIDEuM0M4LjY5IDguOTIgMTAuMjMgOCAxMiA4YzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2E5IDkgMCAwIDAtOSA5SDFsMy44OSAzLjg5LjA3LjE0TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkE4Ljk1NCA4Ljk1NCAwIDAgMCAxMyAyMWE5IDkgMCAwIDAgMC0xOHptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvY2tldExhdW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMTkgNi4zNWMtMi4wNCAyLjI5LTMuNDQgNS41OC0zLjU3IDUuODlMMiAxMC42OWw0LjA1LTQuMDVjLjQ3LS40NyAxLjE1LS42OCAxLjgxLS41NWwxLjMzLjI2ek0xMS4xNyAxN3MzLjc0LTEuNTUgNS44OS0zLjdjNS40LTUuNCA0LjUtOS42MiA0LjIxLTEwLjU3LS45NS0uMy01LjE3LTEuMTktMTAuNTcgNC4yMUM4LjU1IDkuMDkgNyAxMi44MyA3IDEyLjgzTDExLjE3IDE3em02LjQ4LTIuMTljLTIuMjkgMi4wNC01LjU4IDMuNDQtNS44OSAzLjU3TDEzLjMxIDIybDQuMDUtNC4wNWMuNDctLjQ3LjY4LTEuMTUuNTUtMS44MWwtLjI2LTEuMzN6TTkgMThjMCAuODMtLjM0IDEuNTgtLjg4IDIuMTJDNi45NCAyMS4zIDIgMjIgMiAyMnMuNy00Ljk0IDEuODgtNi4xMkEyLjk5NiAyLjk5NiAwIDAgMSA5IDE4em00LTljMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMi41czQuNSAyLjA0IDQuNSAxMC41YzAgMi40OS0xLjA0IDUuNTctMS42IDdIOS4xYy0uNTYtMS40My0xLjYtNC41MS0xLjYtN0M3LjUgNC41NCAxMiAyLjUgMTIgMi41em0yIDguNWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS02LjMxIDkuNTJjLS40OC0xLjIzLTEuNTItNC4xNy0xLjY3LTYuODdsLTEuMTMuNzVjLS41Ni4zOC0uODkgMS0uODkgMS42N1YyMmwzLjY5LTEuNDh6TTIwIDIydi01LjkzYzAtLjY3LS4zMy0xLjI5LS44OS0xLjY2bC0xLjEzLS43NWMtLjE1IDIuNjktMS4yIDUuNjQtMS42NyA2Ljg3TDIwIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjEzIDIgNSA1LjEzIDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ny0zLjEzLTctNy03em0wIDkuNWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm91bmRlZENvcm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5aDJ2MmgtMnYtMnptMC0yaDJ2LTJoLTJ2MnpNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0wLThoMlY3SDN2MnptMC00aDJWM0gzdjJ6bTQgMGgyVjNIN3Yyem04IDE2aDJ2LTJoLTJ2MnptLTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6bS04IDBoMnYtMkg3djJ6bS00IDBoMnYtMkgzdjJ6TTIxIDhjMC0yLjc2LTIuMjQtNS01LTVoLTV2Mmg1YzEuNjUgMCAzIDEuMzUgMyAzdjVoMlY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb3dpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTQuNSA0IDE5bDEuNSAxLjVMOSAxN2gybC0yLjUtMi41ek0xNSAxYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiAyMC4wMUwxOCAyNGwtMi45OS0zLjAxVjE5LjVsLTcuMS03LjA5Yy0uMzEuMDUtLjYxLjA3LS45MS4wN3YtMi4xNmMxLjY2LjAzIDMuNjEtLjg3IDQuNjctMi4wNGwxLjQtMS41NWMuMzUtLjM5Ljk5LS43MyAxLjY1LS43M2guMDNDMTUuOTkgNi4wMSAxNyA3LjAyIDE3IDguMjZ2NS43NWMwIC44NC0uMzUgMS42MS0uOTIgMi4xNmwtMy41OC0zLjU4di0yLjI3Yy0uNjMuNTItMS40MyAxLjAyLTIuMjkgMS4zOUwxNi41IDE4SDE4bDMgMy4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU0IDExIDEzIDcuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDE2LjU0IDExek0xMSA3SDJ2Mmg5Vjd6bTEwIDYuNDFMMTkuNTkgMTIgMTcgMTQuNTkgMTQuNDEgMTIgMTMgMTMuNDEgMTUuNTkgMTYgMTMgMTguNTkgMTQuNDEgMjAgMTcgMTcuNDEgMTkuNTkgMjAgMjEgMTguNTkgMTguNDEgMTYgMjEgMTMuNDF6TTExIDE1SDJ2Mmg5di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXRlbGxpdGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS40NC41OS0zLjE4IDMuMThjLS43OC43OC0uNzggMi4wNSAwIDIuODNsMS4yNCAxLjI0LS43MS43MS0xLjI0LTEuMjVjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwTDcuMyA4LjcyYy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDEuMjQgMS4yNC0uNzEuNzEtMS4yMy0xLjI1Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMEwuNTkgMTUuNDNjLS43OC43OC0uNzggMi4wNSAwIDIuODNsMy41NCAzLjU0Yy43OC43OCAyLjA1Ljc4IDIuODMgMGwzLjE4LTMuMThjLjc4LS43OC43OC0yLjA1IDAtMi44M0w4LjkgMTQuNTVsLjcxLS43MSAxLjI0IDEuMjRjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDEuNDEtMS40MWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDEzLjg0IDkuNmwuNzEtLjcxIDEuMjQgMS4yNGMuNzguNzggMi4wNS43OCAyLjgzIDBsMy4xOC0zLjE4Yy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTguMjYuNThjLS43OC0uNzgtMi4wNC0uNzgtMi44Mi4wMXpNNi42IDE5LjMybC0xLjA2IDEuMDZMMiAxNi44NWwxLjA2LTEuMDYgMy41NCAzLjUzem0yLjEyLTIuMTItMS4wNiAxLjA2LTMuNTQtMy41NCAxLjA2LTEuMDYgMy41NCAzLjU0em05LjU0LTkuNTRMMTcuMiA4LjcybC0zLjU0LTMuNTQgMS4wNi0xLjA2IDMuNTQgMy41NHptMi4xMi0yLjEyTDE5LjMyIDYuNmwtMy41NC0zLjU0TDE2Ljg1IDJsMy41MyAzLjU0ek0xNCAyMXYyYTkgOSAwIDAgMCA5LTloLTJjMCAzLjg3LTMuMTMgNy03IDd6bTAtNHYyYzIuNzYgMCA1LTIuMjQgNS01aC0yYzAgMS42Ni0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXZlZFNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0em0tMi4xNy0xLjUgMi4xNC0xLjUzIDIuMTQgMS41My0uODMtMi40NiAyLjE1LTEuNWgtMi42Mkw5LjQ3IDZsLS44NCAyLjU0SDZsMi4xNCAxLjQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXZpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuODMgNy41LTIuMjctMi4yN2MuMDctLjQyLjE4LS44MS4zMi0xLjE1QTEuNDk4IDEuNDk4IDAgMCAwIDE2LjUgMmMtMS42NCAwLTMuMDkuNzktNCAyaC01QzQuNDYgNCAyIDYuNDYgMiA5LjVTNC41IDIxIDQuNSAyMUgxMHYtMmgydjJoNS41bDEuNjgtNS41OSAyLjgyLS45NFY3LjVoLTIuMTd6TTEzIDlIOFY3aDV2MnptMyAyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjaGVkdWxlU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMi41SDE1djRsMyAyIC43NS0xLjIzLTIuMjUtMS41MlYxMi41ek0xNiA5IDIgM3Y3bDkgMi05IDJ2N2w3LjI3LTMuMTFDMTAuMDkgMjAuODMgMTIuNzkgMjMgMTYgMjNjMy44NiAwIDctMy4xNCA3LTdzLTMuMTQtNy03LTd6bTAgMTJjLTIuNzUgMC00Ljk4LTIuMjItNS00Ljk3di0uMDdhNS4wMDggNS4wMDggMCAwIDEgNS00Ljk3YzIuNzYgMCA1IDIuMjQgNSA1UzE4Ljc2IDIxIDE2IDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY2hlZHVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlYXJjaE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDAgMCA5LjUgM0M2LjA4IDMgMy4yOCA1LjY0IDMuMDMgOWgyLjAyQzUuMyA2Ljc1IDcuMTggNSA5LjUgNSAxMS45OSA1IDE0IDcuMDEgMTQgOS41UzExLjk5IDE0IDkuNSAxNGMtLjE3IDAtLjMzLS4wMy0uNS0uMDV2Mi4wMmMuMTcuMDIuMzMuMDMuNS4wMyAxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNDcgMTAuODIgNCAxMy4yOWwtMi40Ny0yLjQ3LS43MS43MUwzLjI5IDE0IC44MiAxNi40N2wuNzEuNzFMNCAxNC43MWwyLjQ3IDIuNDcuNzEtLjcxTDQuNzEgMTRsMi40Ny0yLjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdBNi40NzEgNi40NzEgMCAwIDAgMTYgOS41IDYuNSA2LjUgMCAxIDAgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VnbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxOGgxMnYtMkg5djJ6TTMgNnYyaDE4VjZIM3ptNiA3aDEydi0ySDl2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VuZEFuZEFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEwaC0zTDIgM3Y3bDkgMi05IDJ2N2w4LTMuNVYyMWMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJ2LTljMC0xLjEtLjktMi0yLTJ6bTAgMTFoLTl2LTloOXY5em0tNC41LTFMMTMgMTZoMnYtM2gzdjNoMmwtMy41IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnNvcnNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjE0IDEwLjk2Yy0uMDkuMzMtLjE0LjY4LS4xNCAxLjA0IDAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsLTEuNDIgMS40MkE2LjAxOCA2LjAxOCAwIDAgMSA2IDEyYzAtLjkzLjIxLTEuOC41OC0yLjU5TDUuMTEgNy45NEE3Ljg5NyA3Ljg5NyAwIDAgMCA0IDEyYzAgMi4yMS45IDQuMjEgMi4zNSA1LjY1bC0xLjQyIDEuNDJBOS45NjkgOS45NjkgMCAwIDEgMiAxMmMwLTIuMDQuNjEtMy45MyAxLjY2LTUuNTFMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MUw4LjE0IDEwLjk2em05LjI4IDMuNjNjLjM3LS43OS41OC0xLjY2LjU4LTIuNTkgMC0xLjY2LS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MiAxLjQyYTMuOTUxIDMuOTUxIDAgMCAxIDEuMDQgMy44NmwxLjU2IDEuNTV6TTIwIDEyYzAgMS40OC0uNCAyLjg3LTEuMTEgNC4wNmwxLjQ1IDEuNDVBOS45MSA5LjkxIDAgMCAwIDIyIDEyYzAtMi43Ni0xLjEyLTUuMjYtMi45My03LjA3bC0xLjQyIDEuNDJBNy45NCA3Ljk0IDAgMCAxIDIwIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5zb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43NiAxNi4yNEM2LjY3IDE1LjE2IDYgMTMuNjYgNiAxMnMuNjctMy4xNiAxLjc2LTQuMjRsMS40MiAxLjQyQzguNDUgOS45IDggMTAuOSA4IDEyYzAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsLTEuNDEgMS40MXptOC40OCAwQzE3LjMzIDE1LjE2IDE4IDEzLjY2IDE4IDEycy0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDIgMS40MkMxNS41NSA5LjkgMTYgMTAuOSAxNiAxMmMwIDEuMS0uNDUgMi4xLTEuMTcgMi44M2wxLjQxIDEuNDF6TTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptOCAyYzAgMi4yMS0uOSA0LjIxLTIuMzUgNS42NWwxLjQyIDEuNDJDMjAuODggMTcuMjYgMjIgMTQuNzYgMjIgMTJzLTEuMTItNS4yNi0yLjkzLTcuMDdsLTEuNDIgMS40MkE3Ljk0IDcuOTQgMCAwIDEgMjAgMTJ6TTYuMzUgNi4zNSA0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyczEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQzQuOSAxNi4yMSA0IDE0LjIxIDQgMTJzLjktNC4yMSAyLjM1LTUuNjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzQWNjZXNzaWJpbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgNGMtMi42MS43LTUuNjcgMS04LjUgMXMtNS44OS0uMy04LjUtMUwzIDZjMS44Ni41IDQgLjgzIDYgMXYxMmgydi02aDJ2NmgyVjdjMi0uMTcgNC4xNC0uNSA2LTFsLS41LTJ6TTEyIDRjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0FwcGxpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNy03SDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJWNWEyIDIgMCAwIDAtMi0yem0tMS43NSA5YzAgLjIzLS4wMi40Ni0uMDUuNjhsMS40OCAxLjE2Yy4xMy4xMS4xNy4zLjA4LjQ1bC0xLjQgMi40MmMtLjA5LjE1LS4yNy4yMS0uNDMuMTVsLTEuNzQtLjdjLS4zNi4yOC0uNzYuNTEtMS4xOC42OWwtLjI2IDEuODVjLS4wMy4xNy0uMTguMy0uMzUuM2gtMi44Yy0uMTcgMC0uMzItLjEzLS4zNS0uMjlsLS4yNi0xLjg1Yy0uNDMtLjE4LS44Mi0uNDEtMS4xOC0uNjlsLTEuNzQuN2MtLjE2LjA2LS4zNCAwLS40My0uMTVsLTEuNC0yLjQyYS4zNTMuMzUzIDAgMCAxIC4wOC0uNDVsMS40OC0xLjE2Yy0uMDMtLjIzLS4wNS0uNDYtLjA1LS42OSAwLS4yMy4wMi0uNDYuMDUtLjY4bC0xLjQ4LTEuMTZhLjM1My4zNTMgMCAwIDEtLjA4LS40NWwxLjQtMi40MmMuMDktLjE1LjI3LS4yMS40My0uMTVsMS43NC43Yy4zNi0uMjguNzYtLjUxIDEuMTgtLjY5bC4yNi0xLjg1Yy4wMy0uMTcuMTgtLjMuMzUtLjNoMi44Yy4xNyAwIC4zMi4xMy4zNS4yOWwuMjYgMS44NWMuNDMuMTguODIuNDEgMS4xOC42OWwxLjc0LS43Yy4xNi0uMDYuMzQgMCAuNDMuMTVsMS40IDIuNDJjLjA5LjE1LjA1LjM0LS4wOC40NWwtMS40OCAxLjE2Yy4wMy4yMy4wNS40Ni4wNS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NCYWNrdXBSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyIC45IDIgMiAyIDItLjkgMi0yem0tMi05YTkgOSAwIDAgMC05IDlIMGw0IDQgNC00SDVjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgN2E2Ljk5NSA2Ljk5NSAwIDAgMS0xMS4wNiA1LjdsLTEuNDIgMS40NEE5IDkgMCAxIDAgMTIgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyNGgydi0yaC0ydjJ6bS00IDBoMnYtMkg3djJ6bTggMGgydi0yaC0ydjJ6bTIuNzEtMTguMjlMMTIgMGgtMXY3LjU5TDYuNDEgMyA1IDQuNDEgMTAuNTkgMTAgNSAxNS41OSA2LjQxIDE3IDExIDEyLjQxVjIwaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyAzLjgzbDEuODggMS44OEwxMyA3LjU5VjMuODN6bTEuODggMTAuNDZMMTMgMTYuMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0JyaWdodG5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6TTggMTZoMi41bDEuNSAxLjUgMS41LTEuNUgxNnYtMi41bDEuNS0xLjUtMS41LTEuNVY4aC0yLjVMMTIgNi41IDEwLjUgOEg4djIuNUw2LjUgMTIgOCAxMy41VjE2em00LTdjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyNGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMTYgLjAxIDggMEM2LjkgMCA2IC45IDYgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMTZIOFY0aDh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzRXRoZXJuZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc3IDYuNzYgNi4yMyA1LjQ4LjgyIDEybDUuNDEgNi41MiAxLjU0LTEuMjhMMy40MiAxMmw0LjM1LTUuMjR6TTcgMTNoMnYtMkg3djJ6bTEwLTJoLTJ2Mmgydi0yem0tNiAyaDJ2LTJoLTJ2MnptNi43Ny03LjUyLTEuNTQgMS4yOEwyMC41OCAxMmwtNC4zNSA1LjI0IDEuNTQgMS4yOEwyMy4xOCAxMmwtNS40MS02LjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0lucHV0QW50ZW5uYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVjLTMuODcgMC03IDMuMTMtNyA3aDJjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0xIDkuMjljLjg4LS4zOSAxLjUtMS4yNiAxLjUtMi4yOWEyLjUgMi41IDAgMCAwLTUgMGMwIDEuMDIuNjIgMS45IDEuNSAyLjI5djMuM0w3LjU5IDIxIDkgMjIuNDFsMy0zIDMgM0wxNi40MSAyMSAxMyAxNy41OXYtMy4zek0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMmgyYTkgOSAwIDAgMSAxOCAwaDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRDb21wb25lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjZoNlY2SDVWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMkg5djJ6bS04IDBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4QzYuMTYgMTguNCA3IDE3LjMgNyAxNnYtMkgxdjJ6TTIxIDZWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0aC0ydjZoNlY2aC0yem0tOC00YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIOXY2aDZWNmgtMlYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0yaC02djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRDb21wb3NpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjZoNlY2SDVWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMkg5djJ6bS04IDBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4QzYuMTYgMTguNCA3IDE3LjMgNyAxNnYtMkgxdjJ6TTIxIDZWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0aC0ydjZoNlY2aC0yem0tOC00YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIOXY2aDZWNmgtMlYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0yaC02djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRIZG1pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggN1Y0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNINXY2bDMgNnYzaDh2LTNsMy02VjdoLTF6TTggNGg4djNoLTJWNWgtMXYyaC0yVjVoLTF2Mkg4VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRTdmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41UzUgMTAuNjcgNSAxMS41IDUuNjcgMTMgNi41IDEzIDggMTIuMzMgOCAxMS41em03LTVjMC0uODMtLjY3LTEuNS0xLjUtMS41aC0zQzkuNjcgNSA5IDUuNjcgOSA2LjVTOS42NyA4IDEwLjUgOGgzYy44MyAwIDEuNS0uNjcgMS41LTEuNXpNOC41IDE1Yy0uODMgMC0xLjUuNjctMS41IDEuNVM3LjY3IDE4IDguNSAxOHMxLjUtLjY3IDEuNS0xLjVTOS4zMyAxNSA4LjUgMTV6TTEyIDFDNS45MyAxIDEgNS45MyAxIDEyczQuOTMgMTEgMTEgMTEgMTEtNC45MyAxMS0xMVMxOC4wNyAxIDEyIDF6bTAgMjBjLTQuOTYgMC05LTQuMDQtOS05czQuMDQtOSA5LTkgOSA0LjA0IDkgOS00LjA0IDktOSA5em01LjUtMTFjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0tMiA1Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NPdmVyc2NhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDUuNSAxMCA4aDRsLTEuOTktMi41ek0xOCAxMHY0bDIuNS0xLjk5TDE4IDEwek02IDEwbC0yLjUgMi4wMUw2IDE0di00em04IDZoLTRsMi4wMSAyLjVMMTQgMTZ6bTctMTNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDloLTJ2MmgyVjl6bTQgMGgtMnYyaDJWOXptMyA2LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA3NCAxNS4wNzQgMCAwIDEtNi41OS02LjU4bDIuMi0yLjIxYy4yOC0uMjcuMzYtLjY2LjI1LTEuMDFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTE5IDl2MmgyVjloLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem0yLTIyaC0ydjEwaDJWMnptMy41NiAyLjQ0LTEuNDUgMS40NUE1Ljk2OSA1Ljk2OSAwIDAgMSAxOCAxMWMwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNmMwLTIuMTcgMS4xNi00LjA2IDIuODgtNS4xMkw3LjQ0IDQuNDRBNy45NjEgNy45NjEgMCAwIDAgNCAxMWMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi43Mi0xLjM2LTUuMTItMy40NC02LjU2ek0xNSAyNGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzUmVtb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOUg5Yy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xem0tMyA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNNy4wNSA2LjA1bDEuNDEgMS40MWE1LjAyMiA1LjAyMiAwIDAgMSA3LjA4IDBsMS40MS0xLjQxQzE1LjY4IDQuNzggMTMuOTMgNCAxMiA0cy0zLjY4Ljc4LTQuOTUgMi4wNXpNMTIgMEM4Ljk2IDAgNi4yMSAxLjIzIDQuMjIgMy4yMmwxLjQxIDEuNDFDNy4yNiAzLjAxIDkuNTEgMiAxMiAyczQuNzQgMS4wMSA2LjM2IDIuNjRsMS40MS0xLjQxQzE3Ljc5IDEuMjMgMTUuMDQgMCAxMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc1ZvaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyNGgydi0ySDd2MnptNS0xMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA0YzAtMS42Ni0xLjM0LTMtMy0zUzkgMi4zNCA5IDR2NmMwIDEuNjYgMS4zNCAzIDMgM3ptLTEgMTFoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyem00LTE0aC0xLjdjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDEzIDYuNyAxMEg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIwaDJ2LTMuMjhjMy4yOC0uNDkgNi0zLjMxIDYtNi43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjE0IDEyLjk0Yy4wNC0uMy4wNi0uNjEuMDYtLjk0IDAtLjMyLS4wMi0uNjQtLjA3LS45NGwyLjAzLTEuNThhLjQ5LjQ5IDAgMCAwIC4xMi0uNjFsLTEuOTItMy4zMmEuNDg4LjQ4OCAwIDAgMC0uNTktLjIybC0yLjM5Ljk2Yy0uNS0uMzgtMS4wMy0uNy0xLjYyLS45NGwtLjM2LTIuNTRhLjQ4NC40ODQgMCAwIDAtLjQ4LS40MWgtMy44NGMtLjI0IDAtLjQzLjE3LS40Ny40MWwtLjM2IDIuNTRjLS41OS4yNC0xLjEzLjU3LTEuNjIuOTRsLTIuMzktLjk2Yy0uMjItLjA4LS40NyAwLS41OS4yMkwyLjc0IDguODdjLS4xMi4yMS0uMDguNDcuMTIuNjFsMi4wMyAxLjU4Yy0uMDUuMy0uMDkuNjMtLjA5Ljk0cy4wMi42NC4wNy45NGwtMi4wMyAxLjU4YS40OS40OSAwIDAgMC0uMTIuNjFsMS45MiAzLjMyYy4xMi4yMi4zNy4yOS41OS4yMmwyLjM5LS45NmMuNS4zOCAxLjAzLjcgMS42Mi45NGwuMzYgMi41NGMuMDUuMjQuMjQuNDEuNDguNDFoMy44NGMuMjQgMCAuNDQtLjE3LjQ3LS40MWwuMzYtMi41NGMuNTktLjI0IDEuMTMtLjU2IDEuNjItLjk0bDIuMzkuOTZjLjIyLjA4LjQ3IDAgLjU5LS4yMmwxLjkyLTMuMzJjLjEyLS4yMi4wNy0uNDctLjEyLS42MWwtMi4wMS0xLjU4ek0xMiAxNS42Yy0xLjk4IDAtMy42LTEuNjItMy42LTMuNnMxLjYyLTMuNiAzLjYtMy42IDMuNiAxLjYyIDMuNiAzLjYtMS42MiAzLjYtMy42IDMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTZ2LTJIM1Y5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1VjNjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDV2MTFjMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJWNWgtNXptLTYtMmg0djJoLTRWM3ptMCAxMlY4bDUuNSAzLjVMMTIgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3BUd28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMkgzVjl6bTE1LTRWM2MwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem0wIDEyVjhsNS41IDMtNS41IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDJ2MTNjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmgtNnptLTYtMmg0djJoLTRWNHpNOSAxOFY5bDcuNSA0TDkgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNmgtMmMwLTIuMjEtMS43OS00LTQtNFM4IDMuNzkgOCA2SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTggNGMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVY4aDJ2MnptMi02YzEuMSAwIDIgLjkgMiAyaC00YzAtMS4xLjktMiAyLTJ6bTQgNmMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVY4aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcHBpbmdCYXNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4yMSA5LTQuMzgtNi41NmEuOTkzLjk5MyAwIDAgMC0uODMtLjQyYy0uMzIgMC0uNjQuMTQtLjgzLjQzTDYuNzkgOUgyYy0uNTUgMC0xIC40NS0xIDEgMCAuMDkuMDEuMTguMDQuMjdsMi41NCA5LjI3Yy4yMy44NCAxIDEuNDYgMS45MiAxLjQ2aDEzYy45MiAwIDEuNjktLjYyIDEuOTMtMS40NmwyLjU0LTkuMjdMMjMgMTBjMC0uNTUtLjQ1LTEtMS0xaC00Ljc5ek05IDlsMy00LjRMMTUgOUg5em0zIDhjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaG9wcGluZ0NhcnRDaGVja291dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOC45LTVoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNMMjEgNC45NiAxOS4yNSA0bC0zLjcgN0g4LjUzTDQuMjcgMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMnpNMTIgMmw0IDQtNCA0LTEuNDEtMS40MUwxMi4xNyA3SDhWNWg0LjE3bC0xLjU5LTEuNTlMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcHBpbmdDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnpNMSAydjJoMmwzLjYgNy41OS0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoMTJ2LTJINy40MmMtLjE0IDAtLjI1LS4xMS0uMjUtLjI1bC4wMy0uMTIuOS0xLjYzaDcuNDVjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OUExLjAwMyAxLjAwMyAwIDAgMCAyMCA0SDUuMjFsLS45NC0ySDF6bTE2IDE2Yy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU21hcnRCdXR0b24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5djZjMCAxLjEtLjkgMi0yIDJoLTF2LTJoMVY5SDR2Nmg2djJINGMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAyem0tNy41IDEwIDEuMDktMi40MUwxOCAxNS41bC0yLjQxLTEuMDlMMTQuNSAxMmwtMS4wOSAyLjQxTDExIDE1LjVsMi40MSAxLjA5TDE0LjUgMTl6bTIuNS01IC42Mi0xLjM4TDE5IDEybC0xLjM4LS42MkwxNyAxMGwtLjYyIDEuMzhMMTUgMTJsMS4zOC42MkwxNyAxNHptLTIuNSA1IDEuMDktMi40MUwxOCAxNS41bC0yLjQxLTEuMDlMMTQuNSAxMmwtMS4wOSAyLjQxTDExIDE1LjVsMi40MSAxLjA5TDE0LjUgMTl6bTIuNS01IC42Mi0xLjM4TDE5IDEybC0xLjM4LS42MkwxNyAxMGwtLjYyIDEuMzhMMTUgMTJsMS4zOC42MkwxNyAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU291cmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS02IDEwSDZ2LTJoOHYyem00LTRINnYtMmgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGFjZURhc2hib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIxSDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmg2djE4em0yIDBoNmMxLjEgMCAyLS45IDItMnYtN2gtOHY5em04LTExVjVjMC0xLjEtLjktMi0yLTJoLTZ2N2g4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGF0aWFsQXVkaW9PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiOVwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4zOSAxNS41NkMxNC43MSAxNC43IDEyLjUzIDE0IDEwIDE0cy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAyIDE4LjIyVjIxaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTIwLjM2IDFsLTEuNDEgMS40MWE3LjAwNyA3LjAwNyAwIDAgMSAwIDkuOWwxLjQxIDEuNDFhOC45OCA4Ljk4IDAgMCAwIDAtMTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjU0IDEwLjlhNS4wMDMgNS4wMDMgMCAwIDAgMC03LjA3bC0xLjQxIDEuNDFhMyAzIDAgMCAxIDAgNC4yNGwxLjQxIDEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwYXRpYWxBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI5XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjM5IDE1LjU2QzE0LjcxIDE0LjcgMTIuNTMgMTQgMTAgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDIgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTYgMWgtMmE5IDkgMCAwIDAgOSA5VjhjLTMuODYgMC03LTMuMTQtNy03elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxaC0yYzAgMi43NiAyLjI0IDUgNSA1VjRjLTEuNjUgMC0zLTEuMzUtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGF0aWFsVHJhY2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiOVwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4zOSAxNS41NkMxNC43MSAxNC43IDEyLjUzIDE0IDEwIDE0cy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAyIDE4LjIyVjIxaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTIwLjA1IDIuNDEgMTguNjQgMWMtMy41MSAzLjUxLTMuNTEgOS4yMSAwIDEyLjczbDEuNDEtMS40MWMtMi43My0yLjc0LTIuNzMtNy4xOCAwLTkuOTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjg4IDUuMjQtMS40MS0xLjQxYTUuMDAzIDUuMDAzIDAgMCAwIDAgNy4wN2wxLjQxLTEuNDFhMy4wMTIgMy4wMTIgMCAwIDEgMC00LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVha2VyTm90ZXNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC41NCAxMS0uNTQtLjU0TDcuNTQgOCA2IDYuNDYgMi4zOCAyLjg0IDEuMjcgMS43MyAwIDNsMi4wMSAyLjAxTDIgMjJsNC00aDlsNS43MyA1LjczTDIyIDIyLjQ2IDE3LjU0IDE4bC03LTd6TTggMTRINnYtMmgydjJ6bS0yLTNWOWwyIDJINnptMTQtOUg0LjA4TDEwIDcuOTJWNmg4djJoLTcuOTJsMSAxSDE4djJoLTQuOTJsNi45OSA2Ljk5QzIxLjE0IDE3Ljk1IDIyIDE3LjA4IDIyIDE2VjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwZWFrZXJOb3RlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDE0SDZ2LTJoMnYyem0wLTNINlY5aDJ2MnptMC0zSDZWNmgydjJ6bTcgNmgtNXYtMmg1djJ6bTMtM2gtOFY5aDh2MnptMC0zaC04VjZoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVsbGNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNDUgMTZoMi4wOUw5LjQzIDNINy41N0wyLjQ2IDE2aDIuMDlsMS4xMi0zaDUuNjRsMS4xNCAzem0tNi4wMi01TDguNSA1LjQ4IDEwLjU3IDExSDYuNDN6bTE1LjE2LjU5LTguMDkgOC4wOUw5LjgzIDE2bC0xLjQxIDEuNDEgNS4wOSA1LjA5TDIzIDEzbC0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YXJSYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNDMgMTAgMTIgMmwtMi40MyA4SDJsNi4xOCA0LjQxTDUuODMgMjIgMTIgMTcuMzEgMTguMTggMjJsLTIuMzUtNy41OUwyMiAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem00LjI0IDE2TDEyIDE1LjQ1IDcuNzcgMThsMS4xMi00LjgxLTMuNzMtMy4yMyA0LjkyLS40MkwxMiA1bDEuOTIgNC41MyA0LjkyLjQyLTMuNzMgMy4yM0wxNi4yMyAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RpY2t5Tm90ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDQuOTlDMy44OSAzIDMgMy45IDMgNWwuMDEgMTRjMCAxLjEuODkgMiAxLjk5IDJoMTBsNi02VjVjMC0xLjEtLjktMi0yLTJ6TTcgOGgxMHYySDdWOHptNSA2SDd2LTJoNXYyem0yIDUuNVYxNGg1LjVMMTQgMTkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDR2MmgxNlY0em0xIDEwdi0ybC0xLTVINGwtMSA1djJoMXY2aDEwdi02aDR2Nmgydi02aDF6bS05IDRINnYtNGg2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1YmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxN0g0djJoMTB2LTJ6bTYtOEg0djJoMTZWOXpNNCAxNWgxNnYtMkg0djJ6TTQgNXYyaDE2VjVINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VidGl0bGVzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg2LjgzbDggOEgyMHYyaC0zLjE3bDQuOTMgNC45M2MuMTUtLjI4LjI0LS41OS4yNC0uOTNWNmMwLTEuMS0uOS0yLTItMnpNMS4wNCAzLjg3bDEuMiAxLjJDMi4wOSA1LjM1IDIgNS42NiAyIDZ2MTJjMCAxLjEuOSAyIDIgMmgxMy4xN2wyLjk2IDIuOTYgMS40MS0xLjQxTDIuNDUgMi40NSAxLjA0IDMuODd6TTggMTJ2Mkg0di0yaDR6bTYgNC44M1YxOEg0di0yaDkuMTdsLjgzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdXBlcnZpc2VkVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJjLTUuNTIgMC0xMCA0LjQ4LTEwIDEwczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMC00LjQ4LTEwLTEwLTEwem0zLjYxIDYuMzRjMS4wNyAwIDEuOTMuODYgMS45MyAxLjkzIDAgMS4wNy0uODYgMS45My0xLjkzIDEuOTMtMS4wNyAwLTEuOTMtLjg2LTEuOTMtMS45My0uMDEtMS4wNy44Ni0xLjkzIDEuOTMtMS45M3ptLTYtMS41OGMxLjMgMCAyLjM2IDEuMDYgMi4zNiAyLjM2IDAgMS4zLTEuMDYgMi4zNi0yLjM2IDIuMzZzLTIuMzYtMS4wNi0yLjM2LTIuMzZjMC0xLjMxIDEuMDUtMi4zNiAyLjM2LTIuMzZ6bTAgOS4xM3YzLjc1Yy0yLjQtLjc1LTQuMy0yLjYtNS4xNC00Ljk2IDEuMDUtMS4xMiAzLjY3LTEuNjkgNS4xNC0xLjY5LjUzIDAgMS4yLjA4IDEuOS4yMi0xLjY0Ljg3LTEuOSAyLjAyLTEuOSAyLjY4ek0xMS45OSAyMGMtLjI3IDAtLjUzLS4wMS0uNzktLjA0di00LjA3YzAtMS40MiAyLjk0LTIuMTMgNC40LTIuMTMgMS4wNyAwIDIuOTIuMzkgMy44NCAxLjE1LTEuMTcgMi45Ny00LjA2IDUuMDktNy40NSA1LjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdXBlcnZpc29yQWNjb3VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTJjMS4zOCAwIDIuNDktMS4xMiAyLjQ5LTIuNVMxNy44OCA3IDE2LjUgN2EyLjUgMi41IDAgMCAwIDAgNXpNOSAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxMC42NiA1IDkgNUM3LjM0IDUgNiA2LjM0IDYgOHMxLjM0IDMgMyAzem03LjUgM2MtMS44MyAwLTUuNS45Mi01LjUgMi43NVYxOWgxMXYtMi4yNWMwLTEuODMtMy42Ny0yLjc1LTUuNS0yLjc1ek05IDEzYy0yLjMzIDAtNyAxLjE3LTcgMy41VjE5aDd2LTIuMjVjMC0uODUuMzMtMi4zNCAyLjM3LTMuNDdDMTAuNSAxMy4xIDkuNjYgMTMgOSAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTcuNDYgNy4xMi0yLjc4IDEuMTVhNC45ODIgNC45ODIgMCAwIDAtMi45NS0yLjk0bDEuMTUtMi43OGMyLjEuOCAzLjc3IDIuNDcgNC41OCA0LjU3ek0xMiAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6TTkuMTMgNC41NGwxLjE3IDIuNzhhNSA1IDAgMCAwLTIuOTggMi45N0w0LjU0IDkuMTNhNy45ODQgNy45ODQgMCAwIDEgNC41OS00LjU5ek00LjU0IDE0Ljg3bDIuNzgtMS4xNWE0Ljk2OCA0Ljk2OCAwIDAgMCAyLjk3IDIuOTZsLTEuMTcgMi43OGE3Ljk5NiA3Ljk5NiAwIDAgMS00LjU4LTQuNTl6bTEwLjM0IDQuNTktMS4xNS0yLjc4YTQuOTc4IDQuOTc4IDAgMCAwIDIuOTUtMi45N2wyLjc4IDEuMTdhOC4wMDcgOC4wMDcgMCAwIDEtNC41OCA0LjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2FwSG9yaXogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljk5IDExIDMgMTVsMy45OSA0di0zSDE0di0ySDYuOTl2LTN6TTIxIDlsLTMuOTktNHYzSDEwdjJoNy4wMXYzTDIxIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBIb3Jpem9udGFsQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTB6bS03LTUuNSAzLjUgMy41LTMuNSAzLjVWMTFoLTRWOWg0VjYuNXptLTYgMTFMNS41IDE0IDkgMTAuNVYxM2g0djJIOXYyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBWZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTcuMDFWMTBoLTJ2Ny4wMWgtM0wxNSAyMWw0LTMuOTloLTN6TTkgMyA1IDYuOTloM1YxNGgyVjYuOTloM0w5IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBWZXJ0aWNhbENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTYuNSA5IDEwIDUuNSAxMy41IDlIMTF2NEg5VjlINi41em0xMSA2TDE0IDE4LjUgMTAuNSAxNUgxM3YtNGgydjRoMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZURvd25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMy45YTUgNSAwIDEgMC0yIDB2NC4yN2wtMS41OS0xLjU5TDggMThsNCA0IDQtNC0xLjQxLTEuNDFMMTMgMTguMTdWMTMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpcGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy44IDEyLjE4Yy0uMi0uODYtLjMtMS43Ni0uMy0yLjY4IDAtMi44NC45OS01LjQ1IDIuNjMtNy41TDcuMiAzLjA3YTEwLjQ1NyAxMC40NTcgMCAwIDAtMS44OCA4Ljk5bDEuNjItMS42Mkw4IDExLjUgNC41IDE1IDEgMTEuNWwxLjA2LTEuMDYgMS43NCAxLjc0em0xMC4wNS0uNTYtMi42OC01LjM3YTEuNDk4IDEuNDk4IDAgMCAwLTIuMDEtLjY3Yy0uNzUuMzgtMS4wNSAxLjI4LS42OCAyLjAybDQuODEgOS42LTMuMjQuOGMtLjMzLjA5LS41OS4zMy0uNy42Nkw5IDE5Ljc4bDYuMTkgMi4yNWMuNS4xNyAxLjI4LjAyIDEuNzUtLjIybDUuNTEtMi43NWMuODktLjQ1IDEuMzItMS40OCAxLTIuNDJsLTEuNDMtNC4yN2EyIDIgMCAwIDAtMS45LTEuMzdoLTQuNTZjLS4zMSAwLS42Mi4wNy0uODkuMjFsLS44Mi40MVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZUxlZnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4xIDEzYTUgNSAwIDEgMCAwLTJINS44M2wxLjU5LTEuNTlMNiA4bC00IDQgNCA0IDEuNDEtMS40MUw1LjgzIDEzaDQuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljk4IDE2LjgyLS42MyA0LjQ2Yy0uMTQuOTktLjk5IDEuNzItMS45OCAxLjcyaC02LjE2Yy0uNTMgMC0xLjI5LS4yMS0xLjY2LS41OUw1IDE3LjYybC44My0uODRjLjI0LS4yNC41OC0uMzUuOTItLjI4bDMuMjUuNzRWNi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41djZoLjkxYy4zMSAwIC42Mi4wNy44OS4yMWw0LjA5IDIuMDRjLjc3LjM5IDEuMjEgMS4yMiAxLjA5IDIuMDd6TTEyIDIuNWM0Ljc0IDAgNy42NyAyLjUyIDguNDMgNC41SDIyYy0uNzMtMi44OC00LjUxLTYtMTAtNi0zLjIyIDAtNi4xOCAxLjEzLTguNSAzLjAyVjJIMnY1aDVWNS41SDQuMDljMi4xMi0xLjg2IDQuODgtMyA3LjkxLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlUmlnaHRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45IDExYTUgNSAwIDEgMCAwIDJoNC4yN2wtMS41OSAxLjU5TDE4IDE2bDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDExSDEzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS45OCAxNi44Mi0uNjMgNC40NmMtLjE0Ljk5LS45OSAxLjcyLTEuOTggMS43MmgtNi4xNmMtLjUzIDAtMS4yOS0uMjEtMS42Ni0uNTlMNSAxNy42MmwuODMtLjg0Yy4yNC0uMjQuNTgtLjM1LjkyLS4yOGwzLjI1Ljc0VjYuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXY2aC45MWMuMzEgMCAuNjIuMDcuODkuMjFsNC4wOSAyLjA0Yy43Ny4zOSAxLjIxIDEuMjIgMS4wOSAyLjA3ek0xOS45MSA1LjVIMTdWN2g1VjJoLTEuNXYyLjAyQTEzLjQxMyAxMy40MTMgMCAwIDAgMTIgMUM2LjUxIDEgMi43MyA0LjEyIDIgN2gxLjU3QzQuMzMgNS4wMiA3LjI2IDIuNSAxMiAyLjVjMy4wMyAwIDUuNzkgMS4xNCA3LjkxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlVXBBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA1LjgzIDEuNTkgMS41OUwxNiA2bC00LTQtNCA0IDEuNDEgMS40MUwxMSA1LjgzdjQuMjdhNSA1IDAgMSAwIDIgMFY1LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4wNiA1LjU2IDEgNC41IDQuNSAxIDggNC41IDYuOTQgNS41NiA1LjMyIDMuOTRhMTAuNDU3IDEwLjQ1NyAwIDAgMCAxLjg4IDguOTlMNi4xMyAxNEExMS45NzQgMTEuOTc0IDAgMCAxIDMuNSA2LjVjMC0uOTIuMS0xLjgyLjMtMi42OEwyLjA2IDUuNTZ6bTExLjc5IDYuMDYtMi42OC01LjM3YTEuNDk4IDEuNDk4IDAgMCAwLTIuMDEtLjY3Yy0uNzUuMzgtMS4wNSAxLjI4LS42OCAyLjAybDQuODEgOS42LTMuMjQuOGMtLjMzLjA5LS41OS4zMy0uNy42Nkw5IDE5Ljc4bDYuMTkgMi4yNWMuNS4xNyAxLjI4LjAyIDEuNzUtLjIybDUuNTEtMi43NWMuODktLjQ1IDEuMzItMS40OCAxLTIuNDJsLTEuNDMtNC4yN2EyIDIgMCAwIDAtMS45LTEuMzdoLTQuNTZjLS4zMSAwLS42Mi4wNy0uODkuMjFsLS44Mi40MVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZVZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAzLjVoMi4wMkMxLjEzIDUuODIgMCA4Ljc4IDAgMTJzMS4xMyA2LjE4IDMuMDIgOC41SDFWMjJoNXYtNUg0LjV2Mi45MWMtMS44Ni0yLjExLTMtNC44OC0zLTcuOTFzMS4xNC01Ljc5IDMtNy45MVY3SDZWMkgxdjEuNXptMTIuODUgOC4xMi0yLjY4LTUuMzdhMS40OTggMS40OTggMCAwIDAtMi4wMS0uNjdjLS43NS4zOC0xLjA1IDEuMjgtLjY4IDIuMDJsNC44MSA5LjYtMy4yNC44Yy0uMzMuMDktLjU5LjMzLS43LjY2TDkgMTkuNzhsNi4xOSAyLjI1Yy41LjE3IDEuMjguMDIgMS43NS0uMjJsNS41MS0yLjc1Yy44OS0uNDUgMS4zMi0xLjQ4IDEtMi40MmwtMS40My00LjI3YTIgMiAwIDAgMC0xLjktMS4zN2gtNC41NmMtLjMxIDAtLjYyLjA3LS44OS4yMWwtLjgyLjQxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODkgMTQuNzUtNC4wOS0yLjA0Yy0uMjgtLjE0LS41OC0uMjEtLjg5LS4yMUgxM3YtNmMwLS44My0uNjctMS41LTEuNS0xLjVTMTAgNS42NyAxMCA2LjV2MTAuNzRsLTMuMjUtLjc0YS45OS45OSAwIDAgMC0uOTIuMjhsLS44My44NCA0LjU0IDQuNzljLjM4LjM4IDEuMTQuNTkgMS42Ny41OWg2LjE2YzEgMCAxLjg0LS43MyAxLjk4LTEuNzJsLjYzLTQuNDZjLjEyLS44NS0uMzItMS42OC0xLjA5LTIuMDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjEzIDMuODdDMTguNjkgMi4xNyAxNS42IDEgMTIgMVM1LjMxIDIuMTcgMy44NyAzLjg3TDIgMnY1aDVMNC45MyA0LjkzYzEtMS4yOSAzLjctMi40MyA3LjA3LTIuNDNzNi4wNyAxLjE0IDcuMDcgMi40M0wxNyA3aDVWMmwtMS44NyAxLjg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2l0Y2hBY2Nlc3NTaG9ydGN1dEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDE0aC0ydi0yaC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yek03LjA2IDguOTQgNSA4bDIuMDYtLjk0TDggNWwuOTQgMi4wNkwxMSA4bC0yLjA2Ljk0TDggMTFsLS45NC0yLjA2ek04IDIxbC45NC0yLjA2TDExIDE4bC0yLjA2LS45NEw4IDE1bC0uOTQgMi4wNkw1IDE4bDIuMDYuOTRMOCAyMXptLTMuNjMtOC42M0wzIDEzbDEuMzcuNjNMNSAxNWwuNjMtMS4zN0w3IDEzbC0xLjM3LS42M0w1IDExbC0uNjMgMS4zN3pNMTIgMTJjMC0yLjczIDEuMDgtNS4yNyAyLjc1LTcuMjVMMTIgMmg3djdsLTIuODItMi44MkMxNC44NCA3LjgyIDE0IDkuODggMTQgMTJjMCAzLjMyIDIuMSA2LjM2IDUgNy44MlYyMmMtNC4wOS0xLjU5LTctNS42NS03LTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2l0Y2hBY2Nlc3NTaG9ydGN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDYgOC45NCA1IDhsMi4wNi0uOTRMOCA1bC45NCAyLjA2TDExIDhsLTIuMDYuOTRMOCAxMWwtLjk0LTIuMDZ6TTggMjFsLjk0LTIuMDZMMTEgMThsLTIuMDYtLjk0TDggMTVsLS45NCAyLjA2TDUgMThsMi4wNi45NEw4IDIxem0tMy42My04LjYzTDMgMTNsMS4zNy42M0w1IDE1bC42My0xLjM3TDcgMTNsLTEuMzctLjYzTDUgMTFsLS42MyAxLjM3ek0xMiAxMmMwLTIuNzMgMS4wOC01LjI3IDIuNzUtNy4yNUwxMiAyaDd2N2wtMi44Mi0yLjgyQzE0Ljg0IDcuODIgMTQgOS44OCAxNCAxMmMwIDMuMzIgMi4xIDYuMzYgNSA3LjgyVjIyYy00LjA5LTEuNTktNy01LjY1LTctMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5bmNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxMiA0LTQtNC00djNIM3YyaDE1ek02IDEybC00IDQgNCA0di0zaDE1di0ySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVVwZGF0ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAuNWgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNi41IDQtNGgtM3YtOWgtMnY5SDhsNCA0em05LTEzaC02djEuOTloNnYxNC4wM0gzVjUuNDloNlYzLjVIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtMTRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYlVuc2VsZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDloMlY3SDF2MnptMCA0aDJ2LTJIMXYyem0wLThoMlYzYy0xLjEgMC0yIC45LTIgMnptOCAxNmgydi0ySDl2MnptLTgtNGgydi0ySDF2MnptMiA0di0ySDFjMCAxLjEuOSAyIDIgMnpNMjEgM2gtOHY2aDEwVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTRoMnYtMmgtMnYyek05IDVoMlYzSDl2MnpNNSAyMWgydi0ySDV2MnpNNSA1aDJWM0g1djJ6bTE2IDE2YzEuMSAwIDItLjkgMi0yaC0ydjJ6bTAtOGgydi0yaC0ydjJ6bS04IDhoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkgzVjVoMTB2NGg4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZVZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3SDljLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCAydjJIOVY5aDEwem0tNiA2di0yaDJ2MmgtMnptMiAydjJoLTJ2LTJoMnptLTQtMkg5di0yaDJ2MnptNi0yaDJ2MmgtMnYtMnptLTggNGgydjJIOXYtMnptOCAydi0yaDJ2MmgtMnpNNiAxN0g1Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDJ2MWgtMlY1SDV2MTBoMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYXNrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNS4xOCAxMC41OSAxNi42bC00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44MyAxMC0xMEwyMiA1LjE4em0tMi4yMSA1LjA0Yy4xMy41Ny4yMSAxLjE3LjIxIDEuNzggMCA0LjQyLTMuNTggOC04IDhzLTgtMy41OC04LTggMy41OC04IDgtOGMxLjU4IDAgMy4wNC40NiA0LjI4IDEuMjVsMS40NC0xLjQ0QTkuOSA5LjkgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtMS4xOS0uMjItMi4zMy0uNi0zLjM5bC0xLjYxIDEuNjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRlcm1pbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY4aDE2djEwem0tMi0xaC02di0yaDZ2MnpNNy41IDE3bC0xLjQxLTEuNDFMOC42NyAxM2wtMi41OS0yLjU5TDcuNSA5bDQgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTJ2MS41bDExIDQuNzV2LTIuMWwtMi4yLS45di01bDIuMi0uOXYtMi4xTDMgMTJ6bTcgMi42Mi01LjAyLTEuODdMMTAgMTAuODh2My43NHptOC0xMC4zNy0zIDNoMnYxMi41aDJWNy4yNWgybC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGVWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljc1IDVoLTEuNUw5LjUgMTZoMi4xbC45LTIuMmg1bC45IDIuMmgyLjFMMTUuNzUgNXptLTIuNjIgN0wxNSA2Ljk4IDE2Ljg3IDEyaC0zLjc0ek02IDE5Ljc1bDMtM0g3VjQuMjVINXYxMi41SDNsMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXh0Um90YXRpb25BbmdsZWRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS40IDQuOTEtMS4wNi0xLjA2TDcuMiA4LjI3bDEuNDggMS40OCAyLjE5LS45MiAzLjU0IDMuNTQtLjkyIDIuMTkgMS40OCAxLjQ4TDE5LjQgNC45MXptLTYuODEgMy4xIDQuODctMi4yMy0yLjIzIDQuODctMi42NC0yLjY0ek0xNC4yNyAyMXYtNC4yNGwtMS40MSAxLjQxLTguODQtOC44NC0xLjQyIDEuNDIgOC44NCA4Ljg0TDEwLjAzIDIxaDQuMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGlvbkFuZ2xldXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjQ5IDQuMjEgMy40MyA1LjI3IDcuODUgMTYuNGwxLjQ4LTEuNDgtLjkyLTIuMTkgMy41NC0zLjU0IDIuMTkuOTIgMS40OC0xLjQ4TDQuNDkgNC4yMXptMy4wOSA2LjhMNS4zNiA2LjE0bDQuODcgMi4yMy0yLjY1IDIuNjR6bTEyLjk5LTEuNjhoLTQuMjRsMS40MSAxLjQxLTguODQgOC44NEwxMC4zMiAyMWw4Ljg0LTguODQgMS40MSAxLjQxVjkuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGlvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMnYtMS41TDEwIDUuNzV2Mi4xbDIuMi45djVsLTIuMi45djIuMUwyMSAxMnptLTctMi42MiA1LjAyIDEuODdMMTQgMTMuMTJWOS4zOHpNNiAxOS43NWwzLTNIN1Y0LjI1SDV2MTIuNUgzbDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dFJvdGF0aW9uTm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjc1IDNoLTEuNUw2LjUgMTRoMi4xbC45LTIuMmg1bC45IDIuMmgyLjFMMTIuNzUgM3ptLTIuNjIgN0wxMiA0Ljk4IDEzLjg3IDEwaC0zLjc0em0xMC4zNyA4LTMtM3YySDV2MmgxMi41djJsMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaGVhdGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDN2MmgtMlYzSDh2Mkg2VjNINHYxOGgydi0yaDJ2Mmg4di0yaDJ2MmgyVjNoLTJ6TTggMTdINnYtMmgydjJ6bTAtNEg2di0yaDJ2MnptMC00SDZWN2gydjJ6bTEwIDhoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRodW1iRG93bk9mZkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC44OSAxOC4yOC41Ny0yLjg5Yy4xMi0uNTktLjA0LTEuMi0uNDItMS42Ni0uMzgtLjQ2LS45NC0uNzMtMS41NC0uNzNINHYtMS4wOEw2LjU3IDZoOC4wOWMuMTggMCAuMzQuMTYuMzQuMzR2Ny44NGwtNC4xMSA0LjFNMTAgMjJsNi40MS02LjQxYy4zOC0uMzguNTktLjg5LjU5LTEuNDJWNi4zNEMxNyA1LjA1IDE1Ljk1IDQgMTQuNjYgNGgtOC4xYy0uNzEgMC0xLjM2LjM3LTEuNzIuOTdsLTIuNjcgNi4xNWMtLjExLjI1LS4xNy41Mi0uMTcuOFYxM2MwIDEuMS45IDIgMiAyaDUuNWwtLjkyIDQuNjVjLS4wNS4yMi0uMDIuNDYuMDguNjYuMjMuNDUuNTIuODYuODggMS4yMkwxMCAyMnptMTAtN2gyVjRoLTJjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVtYkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MmMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OS02LjU5Yy4zNi0uMzYuNTgtLjg2LjU4LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptNCAwdjEyaDRWM2gtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGh1bWJVcE9mZkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuMTEgNS43Mi0uNTcgMi44OWMtLjEyLjU5LjA0IDEuMi40MiAxLjY2LjM4LjQ2Ljk0LjczIDEuNTQuNzNIMjB2MS4wOEwxNy40MyAxOEg5LjM0YS4zNS4zNSAwIDAgMS0uMzQtLjM0VjkuODJsNC4xMS00LjFNMTQgMiA3LjU5IDguNDFDNy4yMSA4Ljc5IDcgOS4zIDcgOS44M3Y3LjgzQzcgMTguOTUgOC4wNSAyMCA5LjM0IDIwaDguMWMuNzEgMCAxLjM2LS4zNyAxLjcyLS45N2wyLjY3LTYuMTVjLjExLS4yNS4xNy0uNTIuMTctLjhWMTFjMC0xLjEtLjktMi0yLTJoLTUuNWwuOTItNC42NWMuMDUtLjIyLjAyLS40Ni0uMDgtLjY2YTQuOCA0LjggMCAwIDAtLjg4LTEuMjJMMTQgMnpNNCA5SDJ2MTFoMmMuNTUgMCAxLS40NSAxLTF2LTljMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVtYlVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDIxaDRWOUgxdjEyem0yMi0xMWMwLTEuMS0uOS0yLTItMmgtNi4zMWwuOTUtNC41Ny4wMy0uMzJjMC0uNDEtLjE3LS43OS0uNDQtMS4wNkwxNC4xNyAxIDcuNTkgNy41OUM3LjIyIDcuOTUgNyA4LjQ1IDcgOXYxMGMwIDEuMS45IDIgMiAyaDljLjgzIDAgMS41NC0uNSAxLjg0LTEuMjJsMy4wMi03LjA1Yy4wOS0uMjMuMTQtLjQ3LjE0LS43M3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGh1bWJzVXBEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMwLS41NS0uNDUtMS0xLTFINS44MmwuNjYtMy4xOC4wMi0uMjNjMC0uMzEtLjEzLS41OS0uMzMtLjhMNS4zOCAwIC40NCA0Ljk0Qy4xNyA1LjIxIDAgNS41OSAwIDZ2Ni41YzAgLjgzLjY3IDEuNSAxLjUgMS41aDYuNzVjLjYyIDAgMS4xNS0uMzggMS4zOC0uOTFsMi4yNi01LjI5Yy4wNy0uMTcuMTEtLjM2LjExLS41NVY2em0xMC41IDRoLTYuNzVjLS42MiAwLTEuMTUuMzgtMS4zOC45MWwtMi4yNiA1LjI5Yy0uMDcuMTctLjExLjM2LS4xMS41NVYxOGMwIC41NS40NSAxIDEgMWg1LjE4bC0uNjYgMy4xOC0uMDIuMjRjMCAuMzEuMTMuNTkuMzMuOGwuNzkuNzggNC45NC00Ljk0Yy4yNy0uMjcuNDQtLjY1LjQ0LTEuMDZ2LTYuNWMwLS44My0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOGMwIDEuMS0uOSAyLTIgMmExLjcgMS43IDAgMCAxLS41MS0uMDdsLTMuNTYgMy41NWMuMDUuMTYuMDcuMzQuMDcuNTIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjE4LjAyLS4zNi4wNy0uNTJsLTIuNTUtMi41NWMtLjE2LjA1LS4zNC4wNy0uNTIuMDdzLS4zNi0uMDItLjUyLS4wN2wtNC41NSA0LjU2Yy4wNS4xNi4wNy4zMy4wNy41MSAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTJjLjE4IDAgLjM1LjAyLjUxLjA3bDQuNTYtNC41NUM4LjAyIDkuMzYgOCA5LjE4IDggOWMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgLjE4LS4wMi4zNi0uMDcuNTJsMi41NSAyLjU1Yy4xNi0uMDUuMzQtLjA3LjUyLS4wN3MuMzYuMDIuNTIuMDdsMy41NS0zLjU2QTEuNyAxLjcgMCAwIDEgMTkgOGMwLTEuMS45LTIgMi0yczIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaXBzQW5kVXBkYXRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjBoNGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ6bS0yLTFoOHYtMkg1djJ6bTExLjUtOS41YzAgMy44Mi0yLjY2IDUuODYtMy43NyA2LjVINS4yN2MtMS4xMS0uNjQtMy43Ny0yLjY4LTMuNzctNi41QzEuNSA1LjM2IDQuODYgMiA5IDJzNy41IDMuMzYgNy41IDcuNXptNC44Ny0yLjEzTDIwIDhsMS4zNy42M0wyMiAxMGwuNjMtMS4zN0wyNCA4bC0xLjM3LS42M0wyMiA2bC0uNjMgMS4zN3pNMTkgNmwuOTQtMi4wNkwyMiAzbC0yLjA2LS45NEwxOSAwbC0uOTQgMi4wNkwxNiAzbDIuMDYuOTRMMTkgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5aDE0VjdIM3Yyem0wIDRoMTR2LTJIM3Yyem0wIDRoMTR2LTJIM3Yyem0xNiAwaDJ2LTJoLTJ2MnptMC0xMHYyaDJWN2gtMnptMCA2aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9kYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpNNyAxMGg1djVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9rZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45NyA2LjQzIDEyIDIgNC4wMyA2LjQzIDkuMSA5LjI0QzkuODMgOC40OCAxMC44NiA4IDEyIDhzMi4xNy40OCAyLjkgMS4yNGw1LjA3LTIuODF6TTEwIDEyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTEgOS40NEwzIDE3VjguMTRsNS4xMyAyLjg1Yy0uMDkuMzItLjEzLjY2LS4xMyAxLjAxIDAgMS44NiAxLjI3IDMuNDMgMyAzLjg3djUuNTd6bTIgMHYtNS41N2MxLjczLS40NCAzLTIuMDEgMy0zLjg3IDAtLjM1LS4wNC0uNjktLjEzLTEuMDFMMjEgOC4xNFYxN2wtOCA0LjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6TTMgMTJhNS45OSA1Ljk5IDAgMCAxIDQtNS42NVY0LjI2QzMuNTUgNS4xNSAxIDguMjcgMSAxMnMyLjU1IDYuODUgNiA3Ljc0di0yLjA5QTUuOTkgNS45OSAwIDAgMSAzIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb3VjaEFwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTEuMjRWNy41YTIuNSAyLjUgMCAwIDEgNSAwdjMuNzRjMS4yMS0uODEgMi0yLjE4IDItMy43NEMxNiA1LjAxIDEzLjk5IDMgMTEuNSAzUzcgNS4wMSA3IDcuNWMwIDEuNTYuNzkgMi45MyAyIDMuNzR6bTkuODQgNC42My00LjU0LTIuMjZjLS4xNy0uMDctLjM1LS4xMS0uNTQtLjExSDEzdi02YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCA2LjY3IDEwIDcuNXYxMC43NGMtMy42LS43Ni0zLjU0LS43NS0zLjY3LS43NS0uMzEgMC0uNTkuMTMtLjc5LjMzbC0uNzkuOCA0Ljk0IDQuOTRjLjI3LjI3LjY1LjQ0IDEuMDYuNDRoNi43OWMuNzUgMCAxLjMzLS41NSAxLjQ0LTEuMjhsLjc1LTUuMjdjLjAxLS4wNy4wMi0uMTQuMDItLjIgMC0uNjItLjM4LTEuMTYtLjkxLTEuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDdWMkg1djIwaDJ2LThoMTRsLTItNSAyLTV6bS02IDVjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFja0NoYW5nZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjA3IDQuOTMtMS40MSAxLjQxQTguMDE0IDguMDE0IDAgMCAxIDIwIDEyYzAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04YzAtNC4wOCAzLjA1LTcuNDQgNy03LjkzdjIuMDJDOC4xNiA2LjU3IDYgOS4wMyA2IDEyYzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0xLjY2LS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MSAxLjQxQzE1LjU1IDkuOSAxNiAxMC45IDE2IDEyYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00YzAtMS44NiAxLjI4LTMuNDEgMy0zLjg2djIuMTRjLS42LjM1LTEgLjk4LTEgMS43MiAwIDEuMS45IDIgMiAyczItLjkgMi0yYzAtLjc0LS40LTEuMzgtMS0xLjcyVjJoLTFDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNjcmliZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjkzIDE2IDEuNjMtMS42M2MtMi43Ny0zLjAyLTIuNzctNy41NiAwLTEwLjc0TDE3LjkzIDJjLTMuOSAzLjg5LTMuOTEgOS45NSAwIDE0em00Ljk5LTUuMDVhMy4zMTcgMy4zMTcgMCAwIDEgMC0zLjg5bC0xLjY4LTEuNjljLTIuMDIgMi4wMi0yLjAyIDUuMDcgMCA3LjI3bDEuNjgtMS42OXpNOSAxM2MyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTYuMzkgMi41NkMxMy43MSAxNC43IDExLjUzIDE0IDkgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuODcgMTUuMDctMi41NC0yLjUxLjAzLS4wM0ExNy41MiAxNy41MiAwIDAgMCAxNC4wNyA2SDE3VjRoLTdWMkg4djJIMXYxLjk5aDExLjE3QzExLjUgNy45MiAxMC40NCA5Ljc1IDkgMTEuMzUgOC4wNyAxMC4zMiA3LjMgOS4xOSA2LjY5IDhoLTJjLjczIDEuNjMgMS43MyAzLjE3IDIuOTggNC41NmwtNS4wOSA1LjAyTDQgMTlsNS01IDMuMTEgMy4xMS43Ni0yLjA0ek0xOC41IDEwaC0yTDEyIDIyaDJsMS4xMi0zaDQuNzVMMjEgMjJoMmwtNC41LTEyem0tMi42MiA3IDEuNjItNC4zM0wxOS4xMiAxN2gtMy4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJlbmRpbmdEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgMTggMi4yOS0yLjI5LTQuODgtNC44OC00IDRMMiA3LjQxIDMuNDEgNmw2IDYgNC00IDYuMyA2LjI5TDIyIDEydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyZW5kaW5nRmxhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDEyLTQtNHYzSDN2MmgxNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmVuZGluZ1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgNiAyLjI5IDIuMjktNC44OCA0Ljg4LTQtNEwyIDE2LjU5IDMuNDEgMThsNi02IDQgNCA2LjMtNi4yOUwyMiAxMlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcm91Ymxlc2hvb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiAyMC41OS00LjY5LTQuNjlBNy45MDIgNy45MDIgMCAwIDAgMTkgMTFjMC00LjQyLTMuNTgtOC04LTgtNC4wOCAwLTcuNDQgMy4wNS03LjkzIDdoMi4wMkM1LjU3IDcuMTcgOC4wMyA1IDExIDVjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDZjLTIuNDIgMC00LjUtMS40NC01LjQ1LTMuNUgzLjRDNC40NSAxNi42OSA3LjQ2IDE5IDExIDE5YzEuODUgMCAzLjU1LS42MyA0LjktMS42OUwyMC41OSAyMiAyMiAyMC41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40MyA5LjY5IDkuNjUgMTVoMS42NGwxLjI2LTMuNzguOTUgMi4yOGgyVjEyaC0xbC0xLjI1LTNoLTEuNTRsLTEuMTIgMy4zN0w5LjM1IDdINy43bC0xLjI1IDRIMXYxLjVoNi41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYuNDMgOS41N0wxMiAxNWwtMS41Ny0zLjQzTDcgMTBsMy40My0xLjU3TDEyIDVsMS41NyAzLjQzTDE3IDEwbC0zLjQzIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1cm5lZEluTm90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yem0wIDE1LTUtMi4xOEw3IDE4VjVoMTB2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1cm5lZEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbmZvbGRMZXNzRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTggMS40MSAxNS4xNiAwbC0zLjE3IDMuMTdMOC44MiAwIDcuNDEgMS40MSAxMS45OSA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41OCA2LjQxIDE1LjE2IDVsLTMuMTcgMy4xN0w4LjgyIDUgNy40MSA2LjQxIDExLjk5IDExek03LjQyIDE3LjU5IDguODQgMTlsMy4xNy0zLjE3TDE1LjE4IDE5bDEuNDEtMS40MUwxMi4wMSAxM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40MiAyMi41OSA4Ljg0IDI0bDMuMTctMy4xN0wxNS4xOCAyNGwxLjQxLTEuNDFMMTIuMDEgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVuZm9sZE1vcmVEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3LjgzIDE1LjE3IDExbDEuNDEtMS40MUwxMiA1IDcuNDEgOS41OSA4LjgzIDExIDEyIDcuODN6bTAtNUwxNS4xNyA2bDEuNDEtMS40MUwxMiAwIDcuNDEgNC41OSA4LjgzIDYgMTIgMi44M3ptMCAxOC4zNEw4LjgzIDE4bC0xLjQxIDEuNDFMMTIgMjRsNC41OS00LjU5TDE1LjE3IDE4IDEyIDIxLjE3em0wLTVMOC44MyAxM2wtMS40MSAxLjQxTDEyIDE5bDQuNTktNC41OUwxNS4xNyAxMyAxMiAxNi4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5wdWJsaXNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIybDIuMjcgMi4yN0E5LjkxIDkuOTEgMCAwIDAgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAyLjA0IDAgMy45My0uNjEgNS41MS0xLjY2bDIuMjcgMi4yNyAxLjQxLTEuNDJ6bS0xMC42LTQuNTktNC4yNC00LjI0IDEuNDEtMS40MSAyLjgzIDIuODMuMTgtLjE4IDEuNDEgMS40MS0xLjU5IDEuNTl6bTMtNS44NC03LjEtNy4xQTkuOTEgOS45MSAwIDAgMSAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwIDAgMi4wNC0uNjEgMy45My0xLjY2IDUuNTFMMTUgMTIuMTdsMi42NS0yLjY1LTEuNDEtMS40MS0yLjY1IDIuNjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVwZGF0ZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC42NyA1Ljg0IDcuMjIgNC4zOUE4Ljg2IDguODYgMCAwIDEgMTIgM2MyLjc0IDAgNS4xOSAxLjIzIDYuODQgMy4xNkwyMSA0djZoLTZsMi40MS0yLjQxQzE2LjEyIDYuMDIgMTQuMTggNSAxMiA1Yy0xLjIgMC0yLjM0LjMxLTMuMzMuODR6TTEzIDdoLTJ2MS4xN2wyIDJWN3ptNi43OCAxNS42MS0zLTNBOC45NzMgOC45NzMgMCAwIDEgMTIgMjFhOSA5IDAgMCAxLTktOWMwLTEuNzYuNTEtMy40IDEuMzktNC43OGwtMy0zTDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyem0tNC40Ni00LjQ2TDUuODQgOC42N0E3LjA2IDcuMDYgMCAwIDAgNSAxMmMwIDMuODYgMy4xNCA3IDcgNyAxLjIgMCAyLjM0LS4zMSAzLjMyLS44NXpNMjAuOTQgMTNoLTIuMDJjLS4xMi44My0uMzkgMS42MS0uNzcgMi4zMmwxLjQ3IDEuNDdjLjctMS4xMiAxLjE3LTIuNDEgMS4zMi0zLjc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGRhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMC4xMmgtNi43OGwyLjc0LTIuODJjLTIuNzMtMi43LTcuMTUtMi44LTkuODgtLjEtMi43MyAyLjcxLTIuNzMgNy4wOCAwIDkuNzlzNy4xNSAyLjcxIDkuODggMEMxOC4zMiAxNS42NSAxOSAxNC4wOCAxOSAxMi4xaDJjMCAxLjk4LS44OCA0LjU1LTIuNjQgNi4yOS0zLjUxIDMuNDgtOS4yMSAzLjQ4LTEyLjcyIDAtMy41LTMuNDctMy41My05LjExLS4wMi0xMi41OHM5LjE0LTMuNDcgMTIuNjUgMEwyMSAzdjcuMTJ6TTEyLjUgOHY0LjI1bDMuNSAyLjA4LS43MiAxLjIxTDExIDEzVjhoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGdyYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTh2Mkg4di0yaDh6TTExIDcuOTlWMTZoMlY3Ljk5aDNMMTIgNCA4IDcuOTloM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmVyaWZpZWRVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bS0yIDE2LTQtNCAxLjQxLTEuNDFMMTAgMTQuMTdsNi41OS02LjU5TDE4IDlsLTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmVyaWZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMyAxMi0yLjQ0LTIuNzkuMzQtMy42OS0zLjYxLS44Mi0xLjg5LTMuMkwxMiAyLjk2IDguNiAxLjUgNi43MSA0LjY5IDMuMSA1LjVsLjM0IDMuN0wxIDEybDIuNDQgMi43OS0uMzQgMy43IDMuNjEuODJMOC42IDIyLjVsMy40LTEuNDcgMy40IDEuNDYgMS44OS0zLjE5IDMuNjEtLjgyLS4zNC0zLjY5TDIzIDEyem0tMTIuOTEgNC43Mi0zLjgtMy44MSAxLjQ4LTEuNDggMi4zMiAyLjMzIDUuODUtNS44NyAxLjQ4IDEuNDgtNy4zMyA3LjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWZXJ0aWNhbFNwbGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE1aDh2LTJIM3Yyem0wIDRoOHYtMkgzdjJ6bTAtOGg4VjlIM3Yyem0wLTZ2Mmg4VjVIM3ptMTAgMGg4djE0aC04VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdBZ2VuZGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM0g1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTRjMC0xLjEtLjktMi0yLTJ6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdBcnJheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVoLTN2MTRoM1Y1em0tNCAwSDd2MTRoMTBWNXpNNiA1SDN2MTRoM1Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q2Fyb3VzZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDdoNHYxMEgyVjd6bTUgMTJoMTBWNUg3djE0ek0xOCA3aDR2MTBoLTRWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0NvbHVtbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjY3IDV2MTRIOS4zM1Y1aDUuMzR6bTEgMTRIMjFWNWgtNS4zM3YxNHptLTcuMzQgMFY1SDN2MTRoNS4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0NvbWZ5QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS05IDEzSDd2LTRoNHY0em0wLTZIN1Y3aDR2NHptNiA2aC00di00aDR2NHptMC02aC00VjdoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q29tcGFjdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tOC41IDEyLjVoLTR2LTRoNHY0em0wLTVoLTR2LTRoNHY0em01IDVoLTR2LTRoNHY0em0wLTVoLTR2LTRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q296eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tOC43NSAxMi43NWgtNHYtNGg0djR6bTAtNS41aC00di00aDR2NHptNS41IDUuNWgtNHYtNGg0djR6bTAtNS41aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjFoMTl2LTNIMnYzek0yMCA4SDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXpNMiAzdjNoMTlWM0gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3SGVhZGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTVoMTZ2LTJINHYyem0wIDRoMTZ2LTJINHYyem0wLThoMTZWOUg0djJ6bTAtNnYyaDE2VjVINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0luQXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4yNSA3LjYtNS41LTMuMThhMS40OSAxLjQ5IDAgMCAwLTEuNSAwTDUuNzUgNy42Yy0uNDYuMjctLjc1Ljc2LS43NSAxLjN2Ni4zNWMwIC41NC4yOSAxLjAzLjc1IDEuM2w1LjUgMy4xOGMuNDYuMjcgMS4wNC4yNyAxLjUgMGw1LjUtMy4xOGMuNDYtLjI3Ljc1LS43Ni43NS0xLjNWOC45YzAtLjU0LS4yOS0xLjAzLS43NS0xLjN6TTcgMTQuOTZ2LTQuNjJsNCAyLjMydjQuNjFsLTQtMi4zMXptNS00LjAzTDggOC42MWw0LTIuMzEgNCAyLjMxLTQgMi4zMnptMSA2LjM0di00LjYxbDQtMi4zMnY0LjYybC00IDIuMzF6TTcgMkgzLjVDMi42NyAyIDIgMi42NyAyIDMuNVY3aDJWNGgzVjJ6bTEwIDBoMy41Yy44MyAwIDEuNS42NyAxLjUgMS41VjdoLTJWNGgtM1Yyek03IDIySDMuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjE3aDJ2M2gzdjJ6bTEwIDBoMy41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVYxN2gtMnYzaC0zdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdLYW5iYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3VjdoMnYxMHptNC01aC0yVjdoMnY1em00IDNoLTJWN2gydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGg0di00SDN2NHptMCA1aDR2LTRIM3Y0ek0zIDloNFY1SDN2NHptNSA1aDEzdi00SDh2NHptMCA1aDEzdi00SDh2NHpNOCA1djRoMTNWNUg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3TW9kdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNjcgNXY2LjVIOS4zM1Y1aDUuMzR6bTEgNi41SDIxVjVoLTUuMzN2Ni41em0tMSA3LjV2LTYuNUg5LjMzVjE5aDUuMzR6bTEtNi41VjE5SDIxdi02LjVoLTUuMzN6bS03LjM0IDBIM1YxOWg1LjMzdi02LjV6bTAtMVY1SDN2Ni41aDUuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdRdWlsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDV2Ni41SDkuMzNWNUgyMXptLTYuMzMgMTR2LTYuNUg5LjMzVjE5aDUuMzR6bTEtNi41VjE5SDIxdi02LjVoLTUuMzN6TTguMzMgMTlWNUgzdjE0aDUuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdTaWRlYmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMjBIMlY0aDE0djE2em0yLTEyaDRWNGgtNHY0em0wIDEyaDR2LTRoLTR2NHptMC02aDR2LTRoLTR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld1N0cmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTd2LTJjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnYyYzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0yek0zIDd2MmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdUaW1lbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNEg2di0yaDZ2MnptMy00SDl2LTJoNnYyem0zLTRoLTZWN2g2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4zMyAyMEg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMS4zM2MxLjEgMCAyIC45IDIgMnYxMmEyIDIgMCAwIDEtMiAyek0yMiAxOFY2YzAtMS4xLS45LTItMi0yaC0xLjMzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAySDIwYTIgMiAwIDAgMCAyLTJ6bS03LjMzIDBWNmMwLTEuMS0uOS0yLTItMmgtMS4zM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxLjMzYzEuMSAwIDItLjkgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaXNpYmlsaXR5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MyLjc2IDAgNSAyLjI0IDUgNSAwIC42NS0uMTMgMS4yNi0uMzYgMS44M2wyLjkyIDIuOTJjMS41MS0xLjI2IDIuNy0yLjg5IDMuNDMtNC43NS0xLjczLTQuMzktNi03LjUtMTEtNy41LTEuNCAwLTIuNzQuMjUtMy45OC43bDIuMTYgMi4xNkMxMC43NCA3LjEzIDExLjM1IDcgMTIgN3pNMiA0LjI3bDIuMjggMi4yOC40Ni40NkExMS44MDQgMTEuODA0IDAgMCAwIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNSAxLjU1IDAgMy4wMy0uMyA0LjM4LS44NGwuNDIuNDJMMTkuNzMgMjIgMjEgMjAuNzMgMy4yNyAzIDIgNC4yN3pNNy41MyA5LjhsMS41NSAxLjU1Yy0uMDUuMjEtLjA4LjQzLS4wOC42NSAwIDEuNjYgMS4zNCAzIDMgMyAuMjIgMCAuNDQtLjAzLjY1LS4wOGwxLjU1IDEuNTVjLS42Ny4zMy0xLjQxLjUzLTIuMi41My0yLjc2IDAtNS0yLjI0LTUtNSAwLS43OS4yLTEuNTMuNTMtMi4yem00LjMxLS43OCAzLjE1IDMuMTUuMDItLjE2YzAtMS42Ni0xLjM0LTMtMy0zbC0uMTcuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpc2liaWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0LjVDNyA0LjUgMi43MyA3LjYxIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNXM5LjI3LTMuMTEgMTEtNy41Yy0xLjczLTQuMzktNi03LjUtMTEtNy41ek0xMiAxN2MtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtOGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvaWNlT3Zlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOTkgOS4xOGMwLS4wNi4wMS0uMTIuMDEtLjE4IDAtMi4yMS0xLjc5LTQtNC00LS4wNiAwLS4xMi4wMS0uMTguMDFsNC4xNyA0LjE3em0tNi4xLTMuNTZMNC4yNyAzIDMgNC4yN2wyLjYyIDIuNjJDNS4yMyA3LjUgNSA4LjIyIDUgOWMwIDIuMjEgMS43OSA0IDQgNCAuNzggMCAxLjUtLjIzIDIuMTEtLjYyTDE5LjczIDIxIDIxIDE5LjczbC04LjYyLTguNjItNS40OS01LjQ5ek05IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00em03Ljc2LTkuNjQtMS42OCAxLjY5Yy44NCAxLjE4Ljg0IDIuNzEgMCAzLjg5bDEuNjggMS42OWMyLjAyLTIuMDIgMi4wMi01LjA3IDAtNy4yN3pNMjAuMDcgMmwtMS42MyAxLjYzYzIuNzcgMy4wMiAyLjc3IDcuNTYgMCAxMC43NEwyMC4wNyAxNmMzLjktMy44OSAzLjkxLTkuOTUgMC0xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0Y2hMYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem00LjIgMTQuMkwxMSAxM1Y3aDEuNXY1LjJsNC41IDIuNy0uOCAxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdlYmhvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNWg1Ljg4Yy4yNy0uMzEuNjctLjUgMS4xMi0uNS44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVjLS40NCAwLS44NC0uMTktMS4xMi0uNUgxMS45QTUgNSAwIDEgMSA2IDExLjF2Mi4wN2MtMS4xNi40MS0yIDEuNTMtMiAyLjgzIDAgMS42NSAxLjM1IDMgMyAzczMtMS4zNSAzLTN2LTF6bTIuNS0xMWMxLjY1IDAgMyAxLjM1IDMgM2gyYzAtMi43Ni0yLjI0LTUtNS01YTUuMDAyIDUuMDAyIDAgMCAwLTMuNDUgOC42MmwtMi4zNSAzLjljLS42OC4xNC0xLjIuNzUtMS4yIDEuNDggMCAuODMuNjcgMS41IDEuNSAxLjVhMS40OTggMS40OTggMCAwIDAgMS40My0xLjk1bDMuMzgtNS42M0EzLjAwMyAzLjAwMyAwIDAgMSA5LjUgN2MwLTEuNjUgMS4zNS0zIDMtM3ptNC41IDljLS42NCAwLTEuMjMuMi0xLjcyLjU0bC0zLjA1LTUuMDdDMTEuNTMgOC4zNSAxMSA3Ljc0IDExIDdjMC0uODMuNjctMS41IDEuNS0xLjVTMTQgNi4xNyAxNCA3YzAgLjE1LS4wMi4yOS0uMDYuNDNsMi4xOSAzLjY1Yy4yOC0uMDUuNTctLjA4Ljg3LS4wOCAyLjc2IDAgNSAyLjI0IDUgNXMtMi4yNCA1LTUgNWE1IDUgMCAwIDEtNC4zMy0yLjVoMi42N2MuNDguMzIgMS4wNS41IDEuNjYuNSAxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lkdGhGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgNmgxdjEySDRWNnptMTYgMTJoLTFWNmgxdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWR0aE5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDZoNHYxMkg0VjZ6bTE2IDEyaC00VjZoNHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lkdGhXaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgNmgydjEySDRWNnptMTYgMTJoLTJWNmgydjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpUHJvdGVjdGVkU2V0dXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43MSA1LjI5IDE5IDNoLTh2OGwyLjMtMi4zYzEuOTcgMS40NiAzLjI1IDMuNzggMy4yNSA2LjQyIDAgMS4zMS0uMzIgMi41NC0uODggMy42MyAyLjMzLTEuNTIgMy44OC00LjE0IDMuODgtNy4xMyAwLTIuNTItMS4xMS00Ljc3LTIuODQtNi4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40NiA4Ljg4YzAtMS4zMS4zMi0yLjU0Ljg4LTMuNjNhOC40NzkgOC40NzkgMCAwIDAtMy44OCA3LjEzYzAgMi41MiAxLjEgNC43NyAyLjg0IDYuMzNMNSAyMWg4di04bC0yLjMgMi4zYy0xLjk2LTEuNDYtMy4yNC0zLjc4LTMuMjQtNi40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV29ya0hpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMWMxLjQ5IDAgMi44Ny40NyA0IDEuMjZWOGMwLTEuMTEtLjg5LTItMi0yaC00VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmg3LjY4QTYuOTk1IDYuOTk1IDAgMCAxIDE4IDExem0tOC03aDR2MmgtNFY0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTEuNjUgNy4zNUwxNy41IDE4LjJWMTVoMXYyLjc5bDEuODUgMS44NS0uNy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV29ya09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzIDIxLjc0LTEuNDYtMS40Nkw3LjIxIDUuOTUgMy4yNSAxLjk5IDEuOTkgMy4yNWwyLjcgMi43aC0uNjRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMmwtLjAxIDExYzAgMS4xMS44OSAyIDIgMmgxNS42NEwyMS43NCAyMyAyMyAyMS43NHpNMjIgNy45NWMuMDUtMS4xMS0uODQtMi0xLjk1LTEuOTVoLTRWMy45NWMwLTEuMTEtLjg5LTItMi0xLjk1aC00Yy0xLjExLS4wNS0yIC44NC0yIDEuOTV2LjMybDEzLjk1IDE0VjcuOTV6TTE0LjA1IDZIMTBWMy45NWg0LjA1VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvcmtPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE0IDZWNGgtNHYyaDR6TTQgOHYxMWgxNlY4SDR6bTE2LTJjMS4xMSAwIDIgLjg5IDIgMnYxMWMwIDEuMTEtLjg5IDItMiAySDRjLTEuMTEgMC0yLS44OS0yLTJsLjAxLTExYzAtMS4xMS44OC0yIDEuOTktMmg0VjRjMC0xLjExLjg5LTIgMi0yaDRjMS4xMSAwIDIgLjg5IDIgMnYyaDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC00VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTYgMGgtNFY0aDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV3lzaXd5ZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWN2gxNHYxMnptLTItN0g3di0yaDEwdjJ6bS00IDRIN3YtMmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFlvdXR1YmVTZWFyY2hlZEZvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMDEgMTRoLS44bC0uMjctLjI3YTYuNDUxIDYuNDUxIDAgMCAwIDEuNTctNC4yM2MwLTMuNTktMi45MS02LjUtNi41LTYuNXMtNi41IDMtNi41IDYuNUgybDMuODQgNCA0LjE2LTRINi41MWE0LjUgNC41IDAgMCAxIDkgMCA0LjUwNyA0LjUwNyAwIDAgMS02LjMyIDQuMTJMNy43MSAxNS4xYTYuNDc0IDYuNDc0IDAgMCAwIDcuNTItLjY3bC4yNy4yN3YuNzlsNS4wMSA0Ljk5TDIyIDE5bC00Ljk5LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFpvb21JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwaC0ydjJIOXYtMkg3VjloMlY3aDF2MmgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFpvb21PdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0ek03IDloNXYxSDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wMSAyMS4wMWMwIDEuMS44OSAxLjk5IDEuOTkgMS45OXMxLjk5LS44OSAxLjk5LTEuOTloLTMuOTh6bTguODctNC4xOVYxMWMwLTMuMjUtMi4yNS01Ljk3LTUuMjktNi42OXYtLjcyQzEzLjU5IDIuNzEgMTIuODggMiAxMiAycy0xLjU5LjcxLTEuNTkgMS41OXYuNzJBNi44NzMgNi44NzMgMCAwIDAgNS4xMiAxMXY1LjgyTDMgMTguOTRWMjBoMTh2LTEuMDZsLTIuMTItMi4xMnpNMTYgMTMuMDFoLTN2M2gtMnYtM0g4VjExaDNWOGgydjNoM3YyLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvRGVsZXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMmgtMy41bC0xLTFoLTVsLTEgMUgxdjJoMTR6TTE2IDljLS43IDAtMS4zNy4xLTIgLjI5VjVIMnYxMmMwIDEuMS45IDIgMiAyaDUuNjhBNi45OTkgNi45OTkgMCAwIDAgMjMgMTZjMC0zLjg3LTMuMTMtNy03LTd6bTAgMTJjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEySDE1djVsMy42IDIuMS44LTEuMi0yLjktMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFcnJvck91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2MmgtMnptMC04aDJ2NmgtMnptLjk5LTVDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25JbXBvcnRhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE2di01YzAtMy4wNy0xLjY0LTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjYzIDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTUgMGgtMnYtMmgydjJ6bTAtNGgtMlY4aDJ2NHptLTEgMTBjMS4xIDAgMi0uOSAyLTJoLTRhMiAyIDAgMCAwIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2FybmluZ0FtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS45OSAxOS41MyAxOUg0LjQ3TDEyIDUuOTlNMTIgMiAxIDIxaDIyTDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDE2aC0ydjJoMnpNMTMgMTBoLTJ2NWgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxMEsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEwLjVoMS41djNIMTB6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek03LjUgMTVINnYtNC41SDQuNVY5aDN2NnptNS41LTFjMCAuNTUtLjQ1IDEtMSAxSDkuNWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xSDEyYy41NSAwIDEgLjQ1IDEgMXY0em02LjUgMWgtMS43NUwxNiAxMi43NVYxNWgtMS41VjlIMTZ2Mi4yNUwxNy43NSA5aDEuNzVsLTIuMjUgMyAyLjI1IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDFrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMTVINy41di00LjVINlY5aDN2NnptNC43NSAwTDEyIDEyLjc1VjE1aC0xLjVWOUgxMnYyLjI1TDEzLjc1IDloMS43NWwtMi4yNSAzIDIuMjUgM2gtMS43NXptNS43NS0yLjVIMThWMTRoLTF2LTEuNWgtMS41di0xSDE3VjEwaDF2MS41aDEuNXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04LjUgMTJIOXYtNC41SDcuNVY5aDN2NnptNyAwaC0xLjc1TDE0IDEyLjc1VjE1aC0xLjVWOUgxNHYyLjI1TDE1Ljc1IDloMS43NWwtMi4yNSAzIDIuMjUgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMmtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkuNSA4LjVjMCAuNTUtLjQ1IDEtMSAxaC0ydjFoM1YxNUg1di0yLjVjMC0uNTUuNDUtMSAxLTFoMnYtMUg1VjloMy41Yy41NSAwIDEgLjQ1IDEgMXYxLjV6bTQuNzUgMy41LTEuNzUtMi4yNVYxNUgxMVY5aDEuNXYyLjI1TDE0LjI1IDlIMTZsLTIuMjUgM0wxNiAxNWgtMS43NXpNMjAgMTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDJLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkgOS41SDh2MWgzVjE1SDYuNXYtMi41YzAtLjU1LjQ1LTEgMS0xaDJ2LTFoLTNWOUgxMGMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMXptOCAyLjVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kM2tQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE0YzAgLjU1LS40NSAxLTEgMUg1di0xLjVoM3YtMUg2di0xaDJ2LTFINVY5aDMuNWMuNTUgMCAxIC40NSAxIDF2NHptNi41IDFoLTEuNzVsLTEuNzUtMi4yNVYxNUgxMVY5aDEuNXYyLjI1TDE0LjI1IDlIMTZsLTIuMjUgM0wxNiAxNXptNC0yLjVoLTEuNVYxNGgtMXYtMS41SDE2di0xaDEuNVYxMGgxdjEuNUgyMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDExYzAgLjU1LS40NSAxLTEgMUg2LjV2LTEuNWgzdi0xaC0ydi0xaDJ2LTFoLTNWOUgxMGMuNTUgMCAxIC40NSAxIDF2NHptNyAxaC0xLjc1bC0xLjc1LTIuMjVWMTVIMTNWOWgxLjV2Mi4yNUwxNi4yNSA5SDE4bC0yLjI1IDNMMTggMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDRrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04LjUgMTAuNWgtMVYxNUg4di0xLjVINVY5aDEuNXYzSDhWOWgxLjV2M2gxdjEuNXpNMTYgMTVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxMVY5aDEuNXYyLjI1TDE0LjI1IDlIMTZsLTIuMjUgM0wxNiAxNXptNC0yLjVoLTEuNVYxNGgtMXYtMS41SDE2di0xaDEuNVYxMGgxdjEuNUgyMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ0SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDEwLjVoLTFWMTVIOS41di0xLjVoLTNWOUg4djNoMS41VjlIMTF2M2gxdjEuNXptNiAxLjVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNUcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxM2gydjJoLTVWOWg3YzAtMS4xLS45LTItMi0yaC01Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNHYyek0zIDEzaDV2MkgzdjJoNWMxLjEgMCAyLS45IDItMnYtMmMwLTEuMS0uOS0yLTItMkg1VjloNVY3SDN2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNWtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkuNSA3LjVoLTN2MWgyYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFINXYtMS41aDN2LTFINVY5aDQuNXYxLjV6TTE2IDE1aC0xLjc1bC0xLjc1LTIuMjVWMTVIMTFWOWgxLjV2Mi4yNUwxNC4yNSA5SDE2bC0yLjI1IDNMMTYgMTV6bTQtMi41aC0xLjVWMTRoLTF2LTEuNUgxNnYtMWgxLjVWMTBoMXYxLjVIMjB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNUsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOCA3LjVIOHYxaDJjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg2LjV2LTEuNWgzdi0xaC0zVjlIMTF2MS41em03IDQuNWgtMS43NWwtMS43NS0yLjI1VjE1SDEzVjloMS41djIuMjVMMTYuMjUgOUgxOGwtMi4yNSAzTDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ2a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxMi41SDhWMTRINi41ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkuNSA3LjVoLTN2MWgyYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFINmMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDMuNXYxLjV6TTE2IDE1aC0xLjc1bC0xLjc1LTIuMjVWMTVIMTFWOWgxLjV2Mi4yNUwxNC4yNSA5SDE2bC0yLjI1IDNMMTYgMTV6bTQtMi41aC0xLjVWMTRoLTF2LTEuNUgxNnYtMWgxLjVWMTBoMXYxLjVIMjB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNksgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTIuNWgxLjVWMTRIOHpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDcuNUg4djFoMmMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxSDcuNWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xSDExdjEuNXptNyA0LjVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kN2tQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOCAxNUg2LjI1bDEuMzgtNC41SDVWOWgzLjVjLjY3IDAgMS4xNS42NS45NiAxLjI5TDggMTV6bTggMGgtMS43NWwtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1em00LTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDdLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE1SDcuNzVsMS4zOC00LjVINi41VjlIMTBjLjY3IDAgMS4xNS42NS45NiAxLjI5TDkuNSAxNXptOC41IDBoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOGtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMTIuNUg4VjE0SDYuNXptMC0yLjVIOHYxLjVINi41ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE0YzAgLjU1LS40NSAxLTEgMUg2Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em02LjUgMWgtMS43NWwtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1em00LTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDhLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEyLjVoMS41VjE0SDh6TTggMTBoMS41djEuNUg4em0xMS03SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTggMTFjMCAuNTUtLjQ1IDEtMSAxSDcuNWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xSDEwYy41NSAwIDEgLjQ1IDEgMXY0em03IDFoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOWtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMTBIOHYxLjVINi41ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE0YzAgLjU1LS40NSAxLTEgMUg1di0xLjVoM3YtMUg2Yy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em02LjUgMWgtMS43NWwtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1em00LTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDlLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEwaDEuNXYxLjVIOHptMTEtN0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDExYzAgLjU1LS40NSAxLTEgMUg2LjV2LTEuNWgzdi0xaC0yYy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFIMTBjLjU1IDAgMSAuNDUgMSAxdjR6bTcgMWgtMS43NWwtMS43NS0yLjI1VjE1SDEzVjloMS41djIuMjVMMTYuMjUgOUgxOGwtMi4yNSAzTDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRUb1F1ZXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg1djJoOHYtMmg1YzEuMSAwIDEuOTktLjkgMS45OS0yTDIzIDVhMiAyIDAgMCAwLTItMnptMCAxNEgzVjVoMTh2MTJ6bS01LTd2MmgtM3YzaC0ydi0zSDh2LTJoM1Y3aDJ2M2gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyMmgxMmwtNi02elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNHYtMkgzVjVoMTh2MTJoLTR2Mmg0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsYnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxNC41Yy0yLjQ5IDAtNC41LTIuMDEtNC41LTQuNVM5LjUxIDcuNSAxMiA3LjVzNC41IDIuMDEgNC41IDQuNS0yLjAxIDQuNS00LjUgNC41em0wLTUuNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnRUcmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEzaC04di0yaDh2MnptMC02aC04djJoOFY3em0tOCAxMGg4di0yaC04djJ6bS0yLTh2NmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNmMxLjEgMCAyIC45IDIgMnptLTEuNSA2LTIuMjUtMy0xLjc1IDIuMjYtMS4yNS0xLjUxTDMuNSAxNWg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdWRpb0ZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTIgMTFoLTN2My43NWMwIDEuMjQtMS4wMSAyLjI1LTIuMjUgMi4yNVM4LjUgMTcuOTkgOC41IDE2Ljc1czEuMDEtMi4yNSAyLjI1LTIuMjVjLjQ2IDAgLjg5LjE0IDEuMjUuMzhWMTFoNHYyem0tMy00VjMuNUwxOC41IDlIMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF2VGltZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxN2MwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXptMC0xNHY0aDJWNS4wOGMzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAzLjg3LTMuMTMgNy03IDdzLTctMy4xMy03LTdjMC0xLjY4LjU5LTMuMjIgMS41OC00LjQyTDEyIDEzbDEuNDEtMS40MS02LjgtNi44di4wMkM0LjQyIDYuNDUgMyA5LjA1IDMgMTJjMCA0Ljk3IDQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMThoLTF6bTcgOWMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xek02IDEyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMS0uNDUtMS0xLTEtMSAuNDUtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmFuZGluZ1dhdGVybWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTl2LTZoOXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsVG9BY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDN2LTNoMTh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvc2VkQ2FwdGlvbkRpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi44MyA0SDE5YzEuMSAwIDIgLjkgMiAydjEyYzAgLjA1LS4wMS4xLS4wMi4xNmwtMy4zOC0zLjM4Yy4yNC0uMTkuNC0uNDYuNC0uNzh2LTFoLTEuNXYuNWgtLjE3bC0xLjgzLTEuODNWMTAuNWgydi41SDE4di0xYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdi4xN0w2LjgzIDR6bTEyLjk1IDE4LjYxTDE3LjE3IDIwSDVhMiAyIDAgMCAxLTItMlY2YzAtLjA1LjAyLS4xLjAyLS4xNUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTExIDEzLjgzbC0uODMtLjgzSDkuNXYuNWgtMnYtM2guMTdMNi40IDkuMjJjLS4yNC4xOS0uNC40Ni0uNC43OHY0YzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xdi0uMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3NlZENhcHRpb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgNS41djEzaC0xNXYtMTNoMTV6TTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTggN0g5LjV2LS41aC0ydjNoMlYxM0gxMXYxYzAgLjU1LS40NSAxLTEgMUg3Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MXptNyAwaC0xLjV2LS41aC0ydjNoMlYxM0gxOHYxYzAgLjU1LS40NSAxLTEgMWgtM2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3NlZENhcHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS04IDdIOS41di0uNWgtMnYzaDJWMTNIMTF2MWMwIC41NS0uNDUgMS0xIDFIN2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjF6bTcgMGgtMS41di0uNWgtMnYzaDJWMTNIMTh2MWMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250cm9sQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTQgNS41NCAxMy43NyA3LjMgMTIgNS41NCAxMC4yMyA3LjMgOC40NiA1LjU0IDEyIDJ6bTIuOTIgMTAtMS43Ni0xLjc3TDE4LjQ2IDEybC0xLjc2LTEuNzcgMS43Ni0xLjc3TDIyIDEyem0tMTAgMi45MiAxLjc3LTEuNzZMMTIgMTguNDZsMS43Ny0xLjc2IDEuNzcgMS43NkwxMiAyMnptLTIuOTItMTAgMS43NiAxLjc3TDUuNTQgMTJsMS43NiAxLjc3LTEuNzYgMS43N0wyIDEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXF1YWxpemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBoNFY0aC00djE2em0tNiAwaDR2LThINHY4ek0xNiA5djExaDRWOWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwbGljaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNmgtNHYyaDR2MmgtNHYyaDR2Mkg5VjdoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQgMTggOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhc3RSZXdpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxOFY2bC04LjUgNiA4LjUgNnptLjUtNiA4LjUgNlY2bC04LjUgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmVhdHVyZWRQbGF5TGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDhIM1Y5aDl2MnptMC00SDNWNWg5djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZlYXR1cmVkVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSA5SDNWNWg5djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyRHZyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAxMC41aDJ2MWgtMnYtMXptLTEzIDBoMnYzaC0ydi0zek0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxOGEyIDIgMCAwIDAgMi0yVjVjMC0xLjExLS44OS0yLTItMnpNOCAxMy41YzAgLjg1LS42NSAxLjUtMS41IDEuNUgzVjloMy41Yy44NSAwIDEuNS42NSAxLjUgMS41djN6bTQuNjIgMS41aC0xLjVMOS4zNyA5aDEuNWwxIDMuNDMgMS0zLjQzaDEuNWwtMS43NSA2ek0yMSAxMS41YzAgLjYtLjQgMS4xNS0uOSAxLjRMMjEgMTVoLTEuNWwtLjg1LTJIMTcuNXYySDE2VjloMy41Yy44NSAwIDEuNS42NSAxLjUgMS41djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyTWFudWFsUmVjb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWJlck5ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yek04LjUgMTVINy4zbC0yLjU1LTMuNVYxNUgzLjVWOWgxLjI1bDIuNSAzLjVWOUg4LjV2NnptNS00Ljc0SDExdjEuMTJoMi41djEuMjZIMTF2MS4xMWgyLjVWMTVoLTRWOWg0djEuMjZ6bTcgMy43NGMwIC41NS0uNDUgMS0xIDFoLTRjLS41NSAwLTEtLjQ1LTEtMVY5aDEuMjV2NC41MWgxLjEzVjkuOTloMS4yNXYzLjUxaDEuMTJWOWgxLjI1djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDEwLjVoMnYxaC0yek0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnpNOSAxMS41YzAgLjg1LS42NSAxLjUtMS41IDEuNWgtMnYySDRWOWgzLjVjLjg1IDAgMS41LjY1IDEuNSAxLjV2MXptMy41IDMuNUgxMVY5aDEuNXY2em03LjUgMGgtMS4ybC0yLjU1LTMuNVYxNUgxNVY5aDEuMjVsMi41IDMuNVY5SDIwdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyU21hcnRSZWNvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHYyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjhcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNC4yNnYyLjA5YTUuOTkgNS45OSAwIDAgMSAwIDExLjN2Mi4wOWMzLjQ1LS44OSA2LTQuMDEgNi03Ljc0cy0yLjU1LTYuODUtNi03Ljc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3J3YXJkMTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNiAyLjY5LTYgNi02djRsNS01LTUtNXY0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LThoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjg2IDE1Ljk0di00LjI3aC0uMDlMOSAxMi4zdi42OWwxLjAxLS4zMXYzLjI2ek0xMi4yNSAxMy40NHYuNzRjMCAxLjkgMS4zMSAxLjgyIDEuNDQgMS44Mi4xNCAwIDEuNDQuMDkgMS40NC0xLjgydi0uNzRjMC0xLjktMS4zMS0xLjgyLTEuNDQtMS44Mi0uMTQgMC0xLjQ0LS4wOS0xLjQ0IDEuODJ6bTIuMDQtLjEydi45N2MwIC43Ny0uMjEgMS4wMy0uNTkgMS4wM3MtLjYtLjI2LS42LTEuMDN2LS45N2MwLS43NS4yMi0xLjAxLjU5LTEuMDEuMzgtLjAxLjYuMjYuNiAxLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3J3YXJkMzAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNiAyLjY5LTYgNi02djRsNS01LTUtNXY0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LThoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA2IDE1LjM4Yy0uMjkgMC0uNjItLjE3LS42Mi0uNTRoLS44NWMwIC45Ny45IDEuMjMgMS40NSAxLjIzLjg3IDAgMS41MS0uNDYgMS41MS0xLjI1IDAtLjY2LS40NS0uOS0uNzEtMSAuMTEtLjA1LjY1LS4zMi42NS0uOTIgMC0uMjEtLjA1LTEuMjItMS40NC0xLjIyLS42MiAwLTEuNC4zNS0xLjQgMS4xNmguODVjMC0uMzQuMzEtLjQ4LjU3LS40OC41OSAwIC41OC41LjU4LjU0IDAgLjUyLS40MS41OS0uNjMuNTloLS40NnYuNjZoLjQ1Yy42NSAwIC43LjQyLjcuNjQgMCAuMzItLjIxLjU5LS42NS41OXpNMTMuODUgMTEuNjhjLS4xNCAwLTEuNDQtLjA4LTEuNDQgMS44MnYuNzRjMCAxLjkgMS4zMSAxLjgyIDEuNDQgMS44Mi4xNCAwIDEuNDQuMDkgMS40NC0xLjgydi0uNzRjLjAxLTEuOTEtMS4zLTEuODItMS40NC0xLjgyem0uNiAyLjY3YzAgLjc3LS4yMSAxLjAzLS41OSAxLjAzcy0uNi0uMjYtLjYtMS4wM3YtLjk3YzAtLjc1LjIyLTEuMDEuNTktMS4wMS4zOCAwIC42LjI2LjYgMS4wMXYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcndhcmQ1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMyAxNS4zOGMtLjQ0IDAtLjU4LS4zMS0uNi0uNTZoLS44NGMuMDMuODUuNzkgMS4yNSAxLjQ0IDEuMjUuOTMgMCAxLjQ0LS42MyAxLjQ0LTEuNDMgMC0xLjMzLS45Ny0xLjQ0LTEuMy0xLjQ0LS4yIDAtLjQzLjA1LS42NC4xNmwuMTEtLjkyaDEuN3YtLjcxaC0yLjM5bC0uMjUgMi4xNy42Ny4xN2MuMTMtLjEzLjI4LS4yMy41Ny0uMjMuNCAwIC42OS4yMy42OS43NS0uMDEuMDUuMDIuNzktLjYuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhbWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNy41VjJIOXY1LjVsMyAzIDMtM3pNNy41IDlIMnY2aDUuNWwzLTMtMy0zek05IDE2LjVWMjJoNnYtNS41bC0zLTMtMyAzek0xNi41IDlsLTMgMyAzIDNIMjJWOWgtNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTggMTJIOS41di0yaC0ydjJINlY5aDEuNXYyLjVoMlY5SDExdjZ6bTItNmg0Yy41NSAwIDEgLjQ1IDEgMXY0YzAgLjU1LS40NSAxLTEgMWgtNFY5em0xLjUgNC41aDJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhcmluZ0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wMyAzLjJDNy4xNSAyLjQ0IDguNTEgMiAxMCAyYzMuOTMgMCA3IDMuMDcgNyA3IDAgMS4yNi0uMzggMi42NS0xLjA3IDMuOS0uMDIuMDQtLjA1LjA4LS4wOC4xM2wtMS40OC0xLjQ4Yy40LS44Ni42My0xLjc1LjYzLTIuNTUgMC0yLjgtMi4yLTUtNS01LS45MiAwLTEuNzYuMjYtMi41LjY3TDYuMDMgMy4yem0xMS4xOCAxMS4xOCAxLjQzIDEuNDNDMjAuMTEgMTMuOTMgMjEgMTEuNTcgMjEgOWMwLTMuMDQtMS4yMy01Ljc5LTMuMjItNy43OGwtMS40MiAxLjQyQTguOTM3IDguOTM3IDAgMCAxIDE5IDljMCAyLjAyLS42NyAzLjg4LTEuNzkgNS4zOHpNMTAgNi41Yy0uMjEgMC0uNC4wMy0uNTkuMDhsMy4wMSAzLjAxYy4wNS0uMTkuMDgtLjM4LjA4LS41OUEyLjUgMi41IDAgMCAwIDEwIDYuNXptMTEuMTkgMTQuNjlMMi44MSAyLjgxIDEuMzkgNC4yMmwyLjEzIDIuMTNDMy4xOSA3LjE2IDMgOC4wNSAzIDloMmMwLS4zNi4wNS0uNzEuMTItMS4wNWw2LjYxIDYuNjFjLS44OC42OC0xLjc4IDEuNDEtMi4yNyAyLjktLjUgMS41LTEgMi4wMS0xLjcxIDIuMzgtLjE5LjEtLjQ2LjE2LS43NS4xNi0xLjEgMC0yLS45LTItMkgzYTMuOTk5IDMuOTk5IDAgMCAwIDUuNjQgMy42NWMxLjM2LS43MSAyLjEzLTEuNzMgMi43My0zLjU1LjMyLS45OC45LTEuNDMgMS43MS0yLjA1LjAzLS4wMi4wNS0uMDQuMDgtLjA2bDYuNjIgNi42MiAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlYXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMGMtLjI5IDAtLjU2LS4wNi0uNzYtLjE1LS43MS0uMzctMS4yMS0uODgtMS43MS0yLjM4LS41MS0xLjU2LTEuNDctMi4yOS0yLjM5LTMtLjc5LS42MS0xLjYxLTEuMjQtMi4zMi0yLjUzQzkuMjkgMTAuOTggOSA5LjkzIDkgOWMwLTIuOCAyLjItNSA1LTVzNSAyLjIgNSA1aDJjMC0zLjkzLTMuMDctNy03LTdTNyA1LjA3IDcgOWMwIDEuMjYuMzggMi42NSAxLjA3IDMuOS45MSAxLjY1IDEuOTggMi40OCAyLjg1IDMuMTUuODEuNjIgMS4zOSAxLjA3IDEuNzEgMi4wNS42IDEuODIgMS4zNyAyLjg0IDIuNzMgMy41NUEzLjk5OSAzLjk5OSAwIDAgMCAyMSAxOGgtMmMwIDEuMS0uOSAyLTIgMnpNNy42NCAyLjY0IDYuMjIgMS4yMkM0LjIzIDMuMjEgMyA1Ljk2IDMgOXMxLjIzIDUuNzkgMy4yMiA3Ljc4bDEuNDEtMS40MUM2LjAxIDEzLjc0IDUgMTEuNDkgNSA5czEuMDEtNC43NCAyLjY0LTYuMzZ6TTExLjUgOWEyLjUgMi41IDAgMCAwIDUgMCAyLjUgMi41IDAgMCAwLTUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlnaFF1YWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS04IDExSDkuNXYtMmgtMnYySDZWOWgxLjV2Mi41aDJWOUgxMXY2em03LTFjMCAuNTUtLjQ1IDEtMSAxaC0uNzV2MS41aC0xLjVWMTVIMTRjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXY0em0tMy41LS41aDJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW50ZXJwcmV0ZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAxNi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjV2LTIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxNWMwIC44My0uNjcgMS41LTEuNSAxLjV6TTIwIDIwaDF2LTEuNTRjMS42OS0uMjQgMy0xLjcgMy0zLjQ2aC0xYTIuNSAyLjUgMCAwIDEtNSAwaC0xYzAgMS43NiAxLjMxIDMuMjIgMyAzLjQ2VjIwek05IDEyYy0yLjIxIDAtNC0xLjc5LTQtNGEzLjk5OSAzLjk5OSAwIDAgMSA1LjM0LTMuNzdBNS45MzggNS45MzggMCAwIDAgOSA4YzAgMS40My41IDIuNzQgMS4zNCAzLjc3LS40Mi4xNS0uODcuMjMtMS4zNC4yM3ptLTEuODkgMS4xM0E0Ljk2NSA0Ljk2NSAwIDAgMCA1IDE3LjIyVjIwSDF2LTIuNzhjMC0xLjEyLjYxLTIuMTUgMS42MS0yLjY2IDEuMjQtLjY0IDIuNzYtMS4xOSA0LjUtMS40M3pNMTEgOGMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0LTEuNzkgNC00IDQtNC0xLjc5LTQtNHptNy4zMiAxMmE0Ljk5NyA0Ljk5NyAwIDAgMS0yLjgyLTQuNWMwLS44OS4yMy0xLjczLjY0LTIuNDUtLjM3LS4wMy0uNzUtLjA1LTEuMTQtLjA1LTIuNTMgMC00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA3IDE3LjIyVjIwaDExLjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWJyYXJ5QWRkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcuNTMgMTJMOSAxMC41bDEuNC0xLjQxIDIuMDcgMi4wOEwxNy42IDYgMTkgNy40MSAxMi40NyAxNHpNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpYnJhcnlBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0xIDloLTR2NGgtMnYtNEg5VjloNFY1aDJ2NGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpYnJhcnlCb29rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgOUg5VjloMTB2MnptLTQgNEg5di0yaDZ2MnptNC04SDlWNWgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWJyYXJ5TXVzaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTIgNWgtM3Y1LjVhMi41IDIuNSAwIDAgMS01IDAgMi41IDIuNSAwIDAgMSAyLjUtMi41Yy41NyAwIDEuMDguMTkgMS41LjUxVjVoNHYyek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9vcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRWMUw4IDVsNCA0VjZjMy4zMSAwIDYgMi42OSA2IDYgMCAxLjAxLS4yNSAxLjk3LS43IDIuOGwxLjQ2IDEuNDZBNy45MyA3LjkzIDAgMCAwIDIwIDEyYzAtNC40Mi0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNiAwLTEuMDEuMjUtMS45Ny43LTIuOEw1LjI0IDcuNzRBNy45MyA3LjkzIDAgMCAwIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEx5cmljcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDljMC0yLjA0IDEuMjQtMy43OSAzLTQuNTdWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDljMS4xIDAgMi0uOSAyLTJ2LTIuNDJjLTEuNzYtLjc4LTMtMi41My0zLTQuNTh6bS00IDVINnYtMmg0djJ6bTMtM0g2VjloN3Yyem0wLTNINlY2aDd2MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNi4xOGMtLjMxLS4xMS0uNjUtLjE4LTEtLjE4LTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtM1YzaDJWMWgtNHY1LjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWNOb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNMMTUgNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djZjMCAxLjY2IDEuMzQgMyAzIDN6bS0xLjItOS4xYzAtLjY2LjU0LTEuMiAxLjItMS4yLjY2IDAgMS4yLjU0IDEuMiAxLjJsLS4wMSA2LjJjMCAuNjYtLjUzIDEuMi0xLjE5IDEuMi0uNjYgMC0xLjItLjU0LTEuMi0xLjJWNC45em02LjUgNi4xYzAgMy0yLjU0IDUuMS01LjMgNS4xUzYuNyAxNCA2LjcgMTFINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMWgydi0zLjI4YzMuMjgtLjQ4IDYtMy4zIDYtNi43MmgtMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFoLTEuN2MwIC43NC0uMTYgMS40My0uNDMgMi4wNWwxLjIzIDEuMjNjLjU2LS45OC45LTIuMDkuOS0zLjI4em0tNC4wMi4xN2MwLS4wNi4wMi0uMTEuMDItLjE3VjVjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNXYuMThsNS45OCA1Ljk5ek00LjI3IDMgMyA0LjI3bDYuMDEgNi4wMVYxMWMwIDEuNjYgMS4zMyAzIDIuOTkgMyAuMjIgMCAuNDQtLjAzLjY1LS4wOGwxLjY2IDEuNjZjLS43MS4zMy0xLjUuNTItMi4zMS41Mi0yLjc2IDAtNS4zLTIuMS01LjMtNS4xSDVjMCAzLjQxIDIuNzIgNi4yMyA2IDYuNzJWMjFoMnYtMy4yOGMuOTEtLjEzIDEuNzctLjQ1IDIuNTQtLjlMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2NmMwIDEuNjYgMS4zNCAzIDMgM3ptNS4zLTNjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDE0IDYuNyAxMUg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIxaDJ2LTMuMjhjMy4yOC0uNDggNi0zLjMgNi02LjcyaC0xLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pc3NlZFZpZGVvQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTAuNVY3YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xMWwtNCA0ek0xMCAxNWwtMy44OS0zLjg5djIuNTVINVY5LjIyaDQuNDR2MS4xMUg2Ljg5bDMuMTEgMy4xIDQuMjItNC4yMi43OC43OS01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vdmllRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTBoMThWNmMwLTEuMS0uOS0yLTItMmgtM2wyIDRoLTNsLTItNGgtMmwyIDRoLTNMOSA0SDdsMiA0SDZMNCA0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmg4di0ySDR2LTh6TTE0IDE4Ljg4VjIxaDIuMTJsNS4xNy01LjE3LTIuMTItMi4xMnpNMjIuNzEgMTNsLS43MS0uNzFhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0uNzEuNzFMMjIgMTUuMTJsLjcxLS43MWEuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vdmllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNCAyIDRoLTNsLTItNGgtMmwyIDRoLTNsLTItNEg4bDIgNEg3TDUgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdXNpY1ZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkgzVjVoMTh2MTR6TTggMTVjMC0xLjY2IDEuMzQtMyAzLTMgLjM1IDAgLjY5LjA3IDEgLjE4VjZoNXYyaC0zdjcuMDNBMy4wMDMgMy4wMDMgMCAwIDEgMTEgMThjLTEuNjYgMC0zLTEuMzQtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXdSZWxlYXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzIDEyLTIuNDQtMi43OC4zNC0zLjY4LTMuNjEtLjgyLTEuODktMy4xOEwxMiAzIDguNiAxLjU0IDYuNzEgNC43MmwtMy42MS44MS4zNCAzLjY4TDEgMTJsMi40NCAyLjc4LS4zNCAzLjY5IDMuNjEuODIgMS44OSAzLjE4TDEyIDIxbDMuNCAxLjQ2IDEuODktMy4xOCAzLjYxLS44Mi0uMzQtMy42OEwyMyAxMnptLTEwIDVoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdEludGVyZXN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMTAtNi02SDRjLTEuMSAwLTIgLjktMiAydjEyLjAxYzAgMS4xLjkgMS45OSAyIDEuOTlsMTYtLjAxYzEuMSAwIDItLjg5IDItMS45OXYtOHptLTctNC41IDUuNSA1LjVIMTVWNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXVzZUNpcmNsZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE0SDlWOGgydjh6bTQgMGgtMlY4aDJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGF1c2VDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmgyVjhIOXY4em0zLTE0QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMS00aDJWOGgtMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXVzZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE0SDlWOGgydjh6bTQgMGgtMlY4aDJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5aDRWNUg2djE0em04LTE0djE0aDRWNWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheUFycm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1djE0bDExLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlDaXJjbGVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNC41di05bDYgNC41LTYgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5Q2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE2LjUgNi00LjUtNi00LjV2OXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek05LjUgMTYuNXYtOWw3IDQuNS03IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0xMS43NSAxMS40Ny0uMTEtLjExLjExLjExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDUuMTlWNWwxMSA3LTIuNTUgMS42M0w4IDUuMTl6bTEyIDE0LjU0LTUuMTEtNS4xMUw4IDcuNzMgNC4yNyA0IDMgNS4yN2w1IDVWMTlsNS4zMy0zLjQgNS40IDUuNEwyMCAxOS43M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheWxpc3RBZGRDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTcgN2g3djJIN1Y3em0wIDNoN3YySDd2LTJ6bTMgNUg3di0yaDN2MnptNC4wNSAzLjM2LTIuODMtMi44MyAxLjQxLTEuNDEgMS40MSAxLjQxTDE3LjU5IDEyIDE5IDEzLjQxbC00Ljk1IDQuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlsaXN0QWRkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEwaDExdjJIM3pNMyA2aDExdjJIM3pNMyAxNGg3djJIM3pNMjAuNTkgMTEuOTNsLTQuMjUgNC4yNC0yLjEyLTIuMTItMS40MSAxLjQxTDE2LjM0IDE5IDIyIDEzLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5bGlzdEFkZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTcgN2g3djJIN1Y3em0zIDhIN3YtMmgzdjJ6bS0zLTN2LTJoN3YySDd6bTEyIDNoLTJ2MmgtMnYtMmgtMnYtMmgydi0yaDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlsaXN0QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBIM3YyaDExdi0yem0wLTRIM3YyaDExVjZ6bTQgOHYtNGgtMnY0aC00djJoNHY0aDJ2LTRoNHYtMmgtNHpNMyAxNmg3di0ySDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheWxpc3RQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMGgxMXYySDN6TTMgNmgxMXYySDN6TTMgMTRoN3YySDN6TTE2IDEzdjhsNi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5bGlzdFJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDN2MmgxMXYtMnptMC00SDN2MmgxMVY2ek0zIDE2aDd2LTJIM3Yyem0xMS40MSA2TDE3IDE5LjQxIDE5LjU5IDIyIDIxIDIwLjU5IDE4LjQxIDE4IDIxIDE1LjQxIDE5LjU5IDE0IDE3IDE2LjU5IDE0LjQxIDE0IDEzIDE1LjQxIDE1LjU5IDE4IDEzIDIwLjU5IDE0LjQxIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWV1ZU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNkgzdjJoMTJWNnptMCA0SDN2MmgxMnYtMnpNMyAxNmg4di0ySDN2MnpNMTcgNnY4LjE4Yy0uMzEtLjExLS42NS0uMTgtMS0uMTgtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zVjhoM1Y2aC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWV1ZVBsYXlOZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNXYyaDh2LTJoMnYtMkgzVjVoMTh2OGgyVjVhMiAyIDAgMCAwLTItMnptLTggN1Y3aC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6bTExIDgtNC41IDQuNUwxOCAyMWwzLTMtMy0zIDEuNS0xLjVMMjQgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1ZXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSA5aC00djRoLTJ2LTRIOVY5aDRWNWgydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMjQgNi4xNUMyLjUxIDYuNDMgMiA3LjE3IDIgOHYxMmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJWOGMwLTEuMTEtLjg5LTItMi0ySDguM2w4LjI2LTMuMzRMMTUuODggMSAzLjI0IDYuMTV6TTcgMjBjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0xMy04aC0ydi0yaC0ydjJINFY4aDE2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlY2VudEFjdG9ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDV2MTRoMlY1aC0yem0tNCAxNGgyVjVoLTJ2MTR6TTE0IDVIMmMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXpNOCA3Ljc1YzEuMjQgMCAyLjI1IDEuMDEgMi4yNSAyLjI1UzkuMjQgMTIuMjUgOCAxMi4yNSA1Ljc1IDExLjI0IDUuNzUgMTAgNi43NiA3Ljc1IDggNy43NXpNMTIuNSAxN2gtOXYtLjc1YzAtMS41IDMtMi4yNSA0LjUtMi4yNXM0LjUuNzUgNC41IDIuMjVWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZUZyb21RdWV1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnptLTUtN3YySDh2LTJoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0T24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0T25lT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHptLTQtMlY5aC0xbC0yIDF2MWgxLjV2NEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0T25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHptLTQtMlY5aC0xbC0yIDF2MWgxLjV2NEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwbGF5MTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSA1VjFsLTUgNSA1IDVWN2MzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02aC0yYzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODkgMTZoLS44NXYtMy4yNmwtMS4wMS4zMXYtLjY5bDEuNzctLjYzaC4wOVYxNnpNMTUuMTcgMTQuMjRjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzIuMDQtLjI5LjA0LS40OHYtLjk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBsYXkzMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMUw3IDZsNSA1VjdjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNkg0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41NiAxMy40OWguNDVjLjIxIDAgLjM3LS4wNS40OC0uMTZzLjE2LS4yNS4xNi0uNDNhLjUzOC41MzggMCAwIDAtLjE1LS4zOWMtLjA1LS4wNS0uMTEtLjA5LS4xOC0uMTFzLS4xNi0uMDQtLjI1LS4wNGMtLjA4IDAtLjE1LjAxLS4yMi4wM3MtLjEzLjA1LS4xOC4xLS4wOS4wOS0uMTIuMTUtLjA1LjEzLS4wNS4yaC0uODVhMS4wNiAxLjA2IDAgMCAxIC40MS0uODVjLjEzLS4xLjI3LS4xOC40NC0uMjNzLjM1LS4wOC41NC0uMDhjLjIxIDAgLjQxLjAzLjU5LjA4cy4zMy4xMy40Ni4yMy4yMy4yMy4zLjM4LjExLjMzLjExLjUzYS44NDIuODQyIDAgMCAxLS4xNy41MiAxLjEgMS4xIDAgMCAxLS40OC4zOWMuMjQuMDkuNDIuMjEuNTQuMzlzLjE4LjM4LjE4LjYxYzAgLjItLjA0LjM4LS4xMi41M3MtLjE4LjI5LS4zMi4zOS0uMjkuMTktLjQ4LjI0LS4zOC4wOC0uNi4wOGMtLjE4IDAtLjM2LS4wMi0uNTMtLjA3cy0uMzMtLjEyLS40Ni0uMjMtLjI1LS4yMy0uMzMtLjM4LS4xMi0uMzQtLjEyLS41NWguODVjMCAuMDguMDIuMTUuMDUuMjJzLjA3LjEyLjEzLjE3LjEyLjA5LjIuMTEuMTYuMDQuMjUuMDRjLjEgMCAuMTktLjAxLjI3LS4wNHMuMTUtLjA3LjItLjEyLjEtLjExLjEzLS4xOC4wNC0uMTUuMDQtLjI0YzAtLjExLS4wMi0uMjEtLjA1LS4yOXMtLjA4LS4xNS0uMTQtLjItLjEzLS4wOS0uMjItLjExLS4xOC0uMDQtLjI5LS4wNGgtLjQ3di0uNjV6TTE1LjMgMTQuMjRjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzJjLjAzLS4xMy4wNC0uMjkuMDQtLjQ4di0uOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcGxheTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjY5IDEzLjkuMjUtMi4xN2gyLjM5di43MWgtMS43bC0uMTEuOTJjLjAzLS4wMi4wNy0uMDMuMTEtLjA1cy4wOS0uMDQuMTUtLjA1LjEyLS4wMy4xOC0uMDQuMTMtLjAyLjItLjAyYy4yMSAwIC4zOS4wMy41NS4xcy4zLjE2LjQxLjI4LjIuMjcuMjUuNDUuMDkuMzguMDkuNmMwIC4xOS0uMDMuMzctLjA5LjU0cy0uMTUuMzItLjI3LjQ1LS4yNy4yNC0uNDUuMzEtLjM5LjEyLS42NC4xMmMtLjE4IDAtLjM2LS4wMy0uNTMtLjA4cy0uMzItLjE0LS40Ni0uMjQtLjI0LS4yNC0uMzItLjM5LS4xMy0uMzMtLjEzLS41M2guODRjLjAyLjE4LjA4LjMyLjE5LjQxcy4yNS4xNS40Mi4xNWEuNDkuNDkgMCAwIDAgLjQ1LS4yM2MuMDQtLjA3LjA4LS4xNS4xMS0uMjVzLjAzLS4yLjAzLS4zMS0uMDEtLjIxLS4wNC0uMzEtLjA3LS4xNy0uMTMtLjI0LS4xMy0uMTItLjIxLS4xNS0uMTktLjA1LS4zLS4wNWMtLjA4IDAtLjE1LjAxLS4yLjAycy0uMTEuMDMtLjE1LjA1LS4wOC4wNS0uMTIuMDctLjA3LjA2LS4xLjA5bC0uNjctLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBsYXlDaXJjbGVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem02IDEwYzAgMy4zMS0yLjY5IDYtNiA2cy02LTIuNjktNi02aDJjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNC0xLjc5LTQtNC00djNMOCA3bDQtNHYzYzMuMzEgMCA2IDIuNjkgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02IDZoNGMuNTUgMCAxIC40NSAxIDF2NGMwIC41NS0uNDUgMS0xIDFoLTRWOXptLTMuNSA0LjV2LTFIN2MtLjU1IDAtMS0uNDUtMS0xVjEwYzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjFIOS41di0uNWgtMnYxSDEwYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFIN2MtLjU1IDAtMS0uNDUtMS0xdi0xaDEuNXYuNWgyem01IDBoMnYtM2gtMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaHVmZmxlT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNMTAuNTkgOS4xNyA1LjQxIDQgNCA1LjQxbDUuMTcgNS4xNyAxLjQyLTEuNDF6TTE0LjUgNGwyLjA0IDIuMDRMNCAxOC41OSA1LjQxIDIwIDE3Ljk2IDcuNDYgMjAgOS41VjRoLTUuNXptLjMzIDkuNDEtMS40MSAxLjQxIDMuMTMgMy4xM0wxNC41IDIwSDIwdi01LjVsLTIuMDQgMi4wNC0zLjEzLTMuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNodWZmbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41OSA5LjE3IDUuNDEgNCA0IDUuNDFsNS4xNyA1LjE3IDEuNDItMS40MXpNMTQuNSA0bDIuMDQgMi4wNEw0IDE4LjU5IDUuNDEgMjAgMTcuOTYgNy40NiAyMCA5LjVWNGgtNS41em0uMzMgOS40MS0xLjQxIDEuNDEgMy4xMyAzLjEzTDE0LjUgMjBIMjB2LTUuNWwtMi4wNCAyLjA0LTMuMTMtMy4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2tpcE5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDE4IDguNS02TDYgNnYxMnpNMTYgNnYxMmgyVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNraXBQcmV2aW91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNmgydjEySDZ6bTMuNSA2IDguNSA2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNsb3dNb3Rpb25WaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMDUgOS43OSAxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJ6bTAgMEwxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJ6bTAgMEwxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJ6TTExIDQuMDdWMi4wNWMtMi4wMS4yLTMuODQgMS01LjMyIDIuMjFMNy4xIDUuNjlBNy45NDEgNy45NDEgMCAwIDEgMTEgNC4wN3pNNS42OSA3LjEgNC4yNiA1LjY4QTkuOTQ5IDkuOTQ5IDAgMCAwIDIuMDUgMTFoMi4wMmMuMTgtMS40Ni43Ni0yLjc5IDEuNjItMy45ek00LjA3IDEzSDIuMDVjLjIgMi4wMSAxIDMuODQgMi4yMSA1LjMybDEuNDMtMS40M0E3Ljg2OCA3Ljg2OCAwIDAgMSA0LjA3IDEzem0xLjYxIDYuNzRBOS45ODEgOS45ODEgMCAwIDAgMTEgMjEuOTV2LTIuMDJhNy45NDEgNy45NDEgMCAwIDEtMy45LTEuNjJsLTEuNDIgMS40M3pNMjIgMTJjMCA1LjE2LTMuOTIgOS40Mi04Ljk1IDkuOTV2LTIuMDJDMTYuOTcgMTkuNDEgMjAgMTYuMDUgMjAgMTJzLTMuMDMtNy40MS02Ljk1LTcuOTNWMi4wNUMxOC4wOCAyLjU4IDIyIDYuODQgMjIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub296ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODggMy4zOSA2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMTh6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0tMy05aDMuNjNMOSAxNS4yVjE3aDZ2LTJoLTMuNjNMMTUgMTAuOFY5SDl2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU29ydEJ5QWxwaGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bS43NS43NWgyMi41djIyLjVILjc1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC45NCA0LjY2aC00LjcybDIuMzYtMi4zNnptLTQuNjkgMTQuNzFoNC42NmwtMi4zMyAyLjMzek02LjEgNi4yNyAxLjYgMTcuNzNoMS44NGwuOTItMi40NWg1LjExbC45MiAyLjQ1aDEuODRMNy43NCA2LjI3SDYuMXptLTEuMTMgNy4zNyAxLjk0LTUuMTggMS45NCA1LjE4SDQuOTd6bTEwLjc2IDIuNWg2LjEydjEuNTloLTguNTN2LTEuMjlsNS45Mi04LjU2aC01Ljg4di0xLjZoOC4zdjEuMjZsLTUuOTMgOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjM4IDguNTctMS4yMyAxLjg1YTggOCAwIDAgMS0uMjIgNy41OEg1LjA3QTggOCAwIDAgMSAxNS41OCA2Ljg1bDEuODUtMS4yM0ExMCAxMCAwIDAgMCAzLjM1IDE5YTIgMiAwIDAgMCAxLjcyIDFoMTMuODVhMiAyIDAgMCAwIDEuNzQtMSAxMCAxMCAwIDAgMC0uMjctMTAuNDR6bS05Ljc5IDYuODRhMiAyIDAgMCAwIDIuODMgMGw1LjY2LTguNDktOC40OSA1LjY2YTIgMiAwIDAgMCAwIDIuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3BDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem00IDE0SDhWOGg4djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDZoMTJ2MTJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Vic2NyaXB0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhINFY2aDE2djJ6bS0yLTZINnYyaDEyVjJ6bTQgMTB2OGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMnYtOGMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAyem0tNiA0LTYtMy4yN3Y2LjUzTDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdWJ0aXRsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCAxMmg0djJINHYtMnptMTAgNkg0di0yaDEwdjJ6bTYgMGgtNHYtMmg0djJ6bTAtNEgxMHYtMmgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdXJyb3VuZFNvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTcuNzYgMTYuMjRsLTEuNDEgMS40MUE3LjkwOSA3LjkwOSAwIDAgMSA0IDEyYzAtMi4wNS43OC00LjEgMi4zNC01LjY2bDEuNDEgMS40MUM2LjU5IDguOTMgNiAxMC40NiA2IDEycy41OSAzLjA3IDEuNzYgNC4yNHpNMTIgMTZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em01LjY2IDEuNjYtMS40MS0xLjQxQzE3LjQxIDE1LjA3IDE4IDEzLjU0IDE4IDEycy0uNTktMy4wNy0xLjc2LTQuMjRsMS40MS0xLjQxQTcuOTA5IDcuOTA5IDAgMCAxIDIwIDEyYzAgMi4wNS0uNzggNC4xLTIuMzQgNS42NnpNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb0NhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwLjVWN2MwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMXYtMy41bDQgNHYtMTFsLTQgNHpNMTQgMTNoLTN2M0g5di0zSDZ2LTJoM1Y4aDJ2M2gzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINi4wMWEyIDIgMCAwIDAtMiAyTDQgMjBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY4bC02LTZ6bS0xIDdWMy41TDE4LjUgOUgxM3ptMSA1IDItMS4wNnY0LjEyTDE0IDE2djFjMCAuNTUtLjQ1IDEtMSAxSDljLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb0xhYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxM0gzVjVoMTh2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvTGlicmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTggMTIuNXYtOWw2IDQuNS02IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9TZXR0aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNmgxOHY1aDJWNmMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDl2LTJIM1Y2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMiA5IDh2OHpNMjIuNzEgMTguNDNjLjAzLS4yOS4wNC0uNTguMDEtLjg2bDEuMDctLjg1Yy4xLS4wOC4xMi0uMjEuMDYtLjMybC0xLjAzLTEuNzljLS4wNi0uMTEtLjE5LS4xNS0uMzEtLjExbC0xLjI4LjVhMy40NCAzLjQ0IDAgMCAwLS43NS0uNDJsLS4yLTEuMzZhLjI0OS4yNDkgMCAwIDAtLjI1LS4yMmgtMi4wN2MtLjEyIDAtLjIzLjA5LS4yNS4yMWwtLjIgMS4zNmMtLjI2LjExLS41MS4yNi0uNzQuNDJsLTEuMjgtLjVjLS4xMi0uMDUtLjI1IDAtLjMxLjExbC0xLjAzIDEuNzljLS4wNi4xMS0uMDQuMjQuMDYuMzJsMS4wNy44NmMtLjAzLjI5LS4wNC41OC0uMDEuODZsLTEuMDcuODVjLS4xLjA4LS4xMi4yMS0uMDYuMzJsMS4wMyAxLjc5Yy4wNi4xMS4xOS4xNS4zMS4xMWwxLjI3LS41Yy4yMy4xNy40OC4zMS43NS40MmwuMiAxLjM2Yy4wMi4xMi4xMi4yMS4yNS4yMWgyLjA3Yy4xMiAwIC4yMy0uMDkuMjUtLjIxbC4yLTEuMzZjLjI2LS4xMS41MS0uMjYuNzQtLjQybDEuMjguNWMuMTIuMDUuMjUgMCAuMzEtLjExbDEuMDMtMS43OWMuMDYtLjExLjA0LS4yNC0uMDYtLjMybC0xLjA2LS44NXpNMTkgMTkuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvY2FtT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDYuNS00IDRWN2MwLS41NS0uNDUtMS0xLTFIOS44MkwyMSAxNy4xOFY2LjV6TTMuMjcgMiAyIDMuMjcgNC43MyA2SDRjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWgxMmMuMjEgMCAuMzktLjA4LjU0LS4xOEwxOS43MyAyMSAyMSAxOS43MyAzLjI3IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvY2FtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTAuNVY3YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xMWwtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWb2x1bWVEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNy45N3Y4LjA1YzEuNDgtLjczIDIuNS0yLjI1IDIuNS00LjAyUzE1LjQ4IDguNzEgMTQgNy45N3pNMyA5djZoNGw1IDVWNEw3IDlIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9sdW1lRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgMTJBNC41IDQuNSAwIDAgMCAxNiA3Ljk3djguMDVjMS40OC0uNzMgMi41LTIuMjUgMi41LTQuMDJ6TTUgOXY2aDRsNSA1VjRMOSA5SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvbHVtZU11dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDl2Nmg0bDUgNVY0bC01IDVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9sdW1lT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMkE0LjUgNC41IDAgMCAwIDE0IDcuOTd2Mi4yMWwyLjQ1IDIuNDVjLjAzLS4yLjA1LS40MS4wNS0uNjN6bTIuNSAwYzAgLjk0LS4yIDEuODItLjU0IDIuNjRsMS41MSAxLjUxQTguNzk2IDguNzk2IDAgMCAwIDIxIDEyYzAtNC4yOC0yLjk5LTcuODYtNy04Ljc3djIuMDZjMi44OS44NiA1IDMuNTQgNSA2Ljcxek00LjI3IDMgMyA0LjI3IDcuNzMgOUgzdjZoNGw1IDV2LTYuNzNsNC4yNSA0LjI1Yy0uNjcuNTItMS40Mi45My0yLjI1IDEuMTh2Mi4wNmE4Ljk5IDguOTkgMCAwIDAgMy42OS0xLjgxTDE5LjczIDIxIDIxIDE5LjczbC05LTlMNC4yNyAzek0xMiA0IDkuOTEgNi4wOSAxMiA4LjE4VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvbHVtZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5djZoNGw1IDVWNEw3IDlIM3ptMTMuNSAzQTQuNSA0LjUgMCAwIDAgMTQgNy45N3Y4LjA1YzEuNDgtLjczIDIuNS0yLjI1IDIuNS00LjAyek0xNCAzLjIzdjIuMDZjMi44OS44NiA1IDMuNTQgNSA2Ljcxcy0yLjExIDUuODUtNSA2LjcxdjIuMDZjNC4wMS0uOTEgNy00LjQ5IDctOC43N3MtMi45OS03Ljg2LTctOC43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2ViQXNzZXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgzIDRIMjBhMiAyIDAgMCAxIDIgMnYxMmMwIC4zNC0uMDkuNjYtLjIzLjk0TDIwIDE3LjE3VjhoLTkuMTdsLTQtNHptMTMuNjYgMTkuMzFMMTcuMTcgMjBINGEyIDIgMCAwIDEtMi0yVjZjMC0uMzQuMDgtLjY2LjIzLS45NEwuNjkgMy41MSAyLjEgMi4xbDE5LjggMTkuOC0xLjQxIDEuNDF6TTE1LjE3IDE4bC0xMC0xMEg0djEwaDExLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXZWJBc3NldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmEyIDIgMCAwIDAtMi0yem0wIDE0SDVWOGgxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2ViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzUCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINC4wMWMtMS4xIDAtMiAuOS0yIDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTggNGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOEg4di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMTYgMTMuNDNWMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZEljQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMjEgNmgtM1YzaC0ydjNoLTN2MmgzdjNoMlY4aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsdGVybmF0ZUVtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMGg1di0yaC01Yy00LjM0IDAtOC0zLjY2LTgtOHMzLjY2LTggOC04IDggMy42NiA4IDh2MS40M2MwIC43OS0uNzEgMS41Ny0xLjUgMS41N3MtMS41LS43OC0xLjUtMS41N1YxMmMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNSAyLjI0IDUgNSA1YzEuMzggMCAyLjY0LS41NiAzLjU0LTEuNDcuNjUuODkgMS43NyAxLjQ3IDIuOTYgMS40NyAxLjk3IDAgMy41LTEuNiAzLjUtMy41N1YxMmMwLTUuNTItNC40OC0xMC0xMC0xMHptMCAxM2MtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcFJlZ2lzdHJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDRoNHY0aC00ek00IDE2aDR2NEg0ek00IDEwaDR2NEg0ek00IDRoNHY0SDR6TTE0IDEyLjQyVjEwaC00djRoMi40MnpNMjAuODggMTEuMjlsLTEuMTctMS4xN2EuNDEuNDEgMCAwIDAtLjU4IDBsLS44OC44OEwyMCAxMi43NWwuODgtLjg4YS40MS40MSAwIDAgMCAwLS41OHpNMTEgMTguMjVWMjBoMS43NWw2LjY3LTYuNjctMS43NS0xLjc1ek0xNiA0aDR2NGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVzaW5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgyMFY3SDEyek02IDE5SDR2LTJoMnYyem0wLTRINHYtMmgydjJ6bTAtNEg0VjloMnYyem0wLTRINFY1aDJ2MnptNCAxMkg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0wLTRIOFY5aDJ2MnptMC00SDhWNWgydjJ6bTEwIDEyaC04di0yaDJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDh2MTB6bS0yLThoLTJ2Mmgydi0yem0wIDRoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsRW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMtMS42IDAtMy4xNS4yNS00LjYuNzJ2My4xYzAgLjM5LS4yMy43NC0uNTYuOS0uOTguNDktMS44NyAxLjEyLTIuNjYgMS44NS0uMTguMTgtLjQzLjI4LS43LjI4LS4yOCAwLS41My0uMTEtLjcxLS4yOUwuMjkgMTMuMDhhLjk1Ni45NTYgMCAwIDEtLjI5LS43YzAtLjI4LjExLS41My4yOS0uNzFDMy4zNCA4Ljc4IDcuNDYgNyAxMiA3czguNjYgMS43OCAxMS43MSA0LjY3Yy4xOC4xOC4yOS40My4yOS43MSAwIC4yOC0uMTEuNTMtLjI5LjcxbC0yLjQ4IDIuNDhjLS4xOC4xOC0uNDMuMjktLjcxLjI5LS4yNyAwLS41Mi0uMTEtLjctLjI4YTExLjI3IDExLjI3IDAgMCAwLTIuNjctMS44NS45OTYuOTk2IDAgMCAxLS41Ni0uOXYtMy4xQzE1LjE1IDkuMjUgMTMuNiA5IDEyIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxNYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA1djJoNi41OUw0IDE4LjU5IDUuNDEgMjAgMTcgOC40MVYxNWgyVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIwLjQxIDE4LjQxIDE5IDE1IDE1LjU5IDEzLjU5IDE3IDE3IDIwLjQxek03LjUgOEgxMXY1LjU5TDUuNTkgMTkgNyAyMC40MWw2LTZWOGgzLjVMMTIgMy41IDcuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsTWlzc2VkT3V0Z29pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zIDguNDEgOSA5IDctN1YxNWgyVjdoLTh2Mmg0LjU5TDEyIDE0LjU5IDQuNDEgNyAzIDguNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxNaXNzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41OSA3IDEyIDE0LjU5IDYuNDEgOUgxMVY3SDN2OGgydi00LjU5bDcgNyA5LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxSZWNlaXZlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDUuNDEgMTguNTkgNCA3IDE1LjU5VjlINXYxMGgxMHYtMkg4LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsU3BsaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA0IDIuMjkgMi4yOS0yLjg4IDIuODggMS40MiAxLjQyIDIuODgtMi44OEwyMCAxMFY0em0tNCAwSDR2NmwyLjI5LTIuMjkgNC43MSA0LjdWMjBoMnYtOC40MWwtNS4yOS01LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4wMSAxNS4zOGMtMS4yMyAwLTIuNDItLjItMy41My0uNTZhLjk3Ny45NzcgMCAwIDAtMS4wMS4yNGwtMS41NyAxLjk3Yy0yLjgzLTEuMzUtNS40OC0zLjktNi44OS02LjgzbDEuOTUtMS42NmMuMjctLjI4LjM1LS42Ny4yNC0xLjAyLS4zNy0xLjExLS41Ni0yLjMtLjU2LTMuNTMgMC0uNTQtLjQ1LS45OS0uOTktLjk5SDQuMTlDMy42NSAzIDMgMy4yNCAzIDMuOTkgMyAxMy4yOCAxMC43MyAyMSAyMC4wMSAyMWMuNzEgMCAuOTktLjYzLjk5LTEuMTh2LTMuNDVjMC0uNTQtLjQ1LS45OS0uOTktLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW5jZWxQcmVzZW50YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxOS4xSDNWNWgxOHYxNC4xek0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjEgMTkuMUgzVjVoMTh2MTQuMXpNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDggMTIgMTAuNTkgOS40MSA4IDggOS40MSAxMC41OSAxMiA4IDE0LjU5IDkuNDEgMTYgMTIgMTMuNDEgMTQuNTkgMTYgMTYgMTQuNTkgMTMuNDEgMTIgMTYgOS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2VsbFRvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNy4zIDE0LjcgMS4yLTEuMmMtMS0xLTEuNS0yLjMtMS41LTMuNSAwLTEuMy41LTIuNiAxLjUtMy41TDcuMyA1LjNjLTEuMyAxLjMtMiAzLTIgNC43cy43IDMuNCAyIDQuN3pNMTkuMSAyLjlsLTEuMiAxLjJjMS42IDEuNiAyLjQgMy44IDIuNCA1LjkgMCAyLjEtLjggNC4zLTIuNCA1LjlsMS4yIDEuMmMyLTIgMi45LTQuNSAyLjktNy4xIDAtMi42LTEtNS4xLTIuOS03LjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMSA0LjEgNC45IDIuOUMzIDQuOSAyIDcuNCAyIDEwYzAgMi42IDEgNS4xIDIuOSA3LjFsMS4yLTEuMmMtMS42LTEuNi0yLjQtMy44LTIuNC01LjkgMC0yLjEuOC00LjMgMi40LTUuOXpNMTYuNyAxNC43YzEuMy0xLjMgMi0zIDItNC43LS4xLTEuNy0uNy0zLjQtMi00LjdsLTEuMiAxLjJjMSAxIDEuNSAyLjMgMS41IDMuNSAwIDEuMy0uNSAyLjYtMS41IDMuNWwxLjIgMS4yek0xNC41IDEwYTIuNSAyLjUgMCAwIDAtNSAwYzAgLjc2LjM0IDEuNDIuODcgMS44OEw3IDIyaDJsLjY3LTJoNC42N2wuNjYgMmgybC0zLjM3LTEwLjEyYy41My0uNDYuODctMS4xMi44Ny0xLjg4em0tNC4xNyA4TDEyIDEzbDEuNjcgNWgtMy4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2VsbFdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5Ljk4IDYgMjJoMTZWNS45N2wtNCA0LjAxek0yMCAyMGgtMnYtNy4yMmwyLTJWMjB6TTUuMjIgNy4yMiAzLjkzIDUuOTNjMy45LTMuOTEgMTAuMjQtMy45MSAxNC4xNSAwbC0xLjI5IDEuMjljLTMuMTktMy4xOS04LjM4LTMuMTktMTEuNTcgMHptNy43MSAzLjg1TDExIDEzbC0xLjkzLTEuOTNhMi43NCAyLjc0IDAgMCAxIDMuODYgMHptMS4yOS0xLjI4Yy0xLjc4LTEuNzctNC42Ni0xLjc3LTYuNDMgMEw2LjUgOC41YTYuMzc0IDYuMzc0IDAgMCAxIDkgMGwtMS4yOCAxLjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGF0QnViYmxlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hhdEJ1YmJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA5aDEydjJINlY5em04IDVINnYtMmg4djJ6bTQtNkg2VjZoMTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xlYXJBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEzaDE0di0ySDV2MnptLTIgNGgxNHYtMkgzdjJ6TTcgN3YyaDE0VjdIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29QcmVzZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnY4aDJWNWgxOHYxNmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4zOSAxNi41NkMxMy43MSAxNS43IDExLjUzIDE1IDkgMTVzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTkuMjJWMjJoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk5IDRjMC0xLjEtLjg5LTItMS45OS0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0LS4wMS0xOHpNMTggMTRINnYtMmgxMnYyem0wLTNINlY5aDEydjJ6bTAtM0g2VjZoMTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tbWVudHNEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjgzIDE0SDE4di0yaC0zLjE3bC0xLTFIMThWOWgtNi4xN2wtMS0xSDE4VjZIOC44M2wtNC00SDIwYzEuMSAwIDIgLjkgMiAydjE1LjE3TDE2LjgzIDE0ek0yLjEgMi4xLjY5IDMuNTEgMiA0LjgzVjE2YzAgMS4xLjkgMiAyIDJoMTEuMTdsNS4zMSA1LjMxIDEuNDEtMS40MUwyLjEgMi4xek02IDloLjE3bDIgMkg2Vjl6bTAgNXYtMmgzLjE3bDIgMkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250YWN0RW1lcmdlbmN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0gyQy45IDMgMCAzLjkgMCA1djE0YzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjQgNWMwLTEuMS0uOS0yLTItMnpNOSA4YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM3pNMi4wOCAxOWMxLjM4LTIuMzkgMy45Ni00IDYuOTItNHM1LjU0IDEuNjEgNi45MiA0SDIuMDh6bTE4Ljg5LTkuMTUtLjc1IDEuMy0xLjQ3LS44NVYxMmgtMS41di0xLjdsLTEuNDcuODUtLjc1LTEuM0wxNi41IDlsLTEuNDctLjg1Ljc1LTEuMyAxLjQ3Ljg1VjZoMS41djEuN2wxLjQ3LS44NS43NSAxLjNMMTkuNSA5bDEuNDcuODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDhWN2wtMyAyLTMtMnYxbDMgMiAzLTJ6bTEtNUgyQy45IDMgMCAzLjkgMCA1djE0YzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjQgNWMwLTEuMS0uOS0yLTItMnpNOCA2YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptNiAxMkgydi0xYzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMXYxem04LTZoLThWNmg4djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIMkMuOSAzIDAgMy45IDAgNXYxNGMwIDEuMS45IDIgMiAyaDIwYzEuMSAwIDEuOTktLjkgMS45OS0yTDI0IDVjMC0xLjEtLjktMi0yLTJ6TTggNmMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJIMnYtMWMwLTIgNC0zLjEgNi0zLjFzNiAxLjEgNiAzLjF2MXptMy44NS00aDEuNjRMMjEgMTZsLTEuOTkgMS45OUE3LjUxMiA3LjUxMiAwIDAgMSAxNi4yOCAxNGMtLjE4LS42NC0uMjgtMS4zMS0uMjgtMnMuMS0xLjM2LjI4LTJhNy40NzQgNy40NzQgMCAwIDEgMi43My0zLjk5TDIxIDhsLTEuNTEgMmgtMS42NGMtLjIyLjYzLS4zNSAxLjMtLjM1IDJzLjEzIDEuMzcuMzUgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGFjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDBINHYyaDE2VjB6TTQgMjRoMTZ2LTJINHYyek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTggMi43NWMxLjI0IDAgMi4yNSAxLjAxIDIuMjUgMi4yNXMtMS4wMSAyLjI1LTIuMjUgMi4yNVM5Ljc1IDEwLjI0IDkuNzUgOSAxMC43NiA2Ljc1IDEyIDYuNzV6TTE3IDE3SDd2LTEuNWMwLTEuNjcgMy4zMy0yLjUgNS0yLjVzNSAuODMgNSAyLjVWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2t0b3BBY2Nlc3NEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTZjMCAxLjEtLjkgMi0yIDJoLTFsLTItMmgzVjRINkw0IDJoMTdjMS4xIDAgMiAuOSAyIDJ2MTJ6bS01LjUgMi0yLTJ6bS0yLjYgMCA2IDYgMS4zLTEuMy00LjctNC43LTItMkwxLjIgMS44IDAgMy4xbDEgMVYxNmMwIDEuMS45IDIgMiAyaDd2Mkg4djJoOHYtMmgtMnYtMmguOXpNMyAxNlY2LjFsOS45IDkuOUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaWFsZXJTaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzaC0xdjVoMVYzem0tMiAyaC0yVjRoMlYzaC0zdjNoMnYxaC0ydjFoM1Y1em0zLTJ2NWgxVjZoMlYzaC0zem0yIDJoLTFWNGgxdjF6bTAgMTAuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhLjk5OC45OTggMCAwIDAtMS4wMS4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWMuMjctLjI2LjM1LS42NS4yNC0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaWFscGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTljLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek02IDFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMi04YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptLTYgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTYgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb2N1bWVudFNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDNINHYzSDJWMWg1djJ6bTE1IDNWMWgtNXYyaDN2M2gyek03IDIxSDR2LTNIMnY1aDV2LTJ6bTEzLTN2M2gtM3YyaDV2LTVoLTJ6bS0xIDBjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAydjEyek0xNSA4SDl2Mmg2Vjh6bTAgM0g5djJoNnYtMnptMCAzSDl2Mmg2di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb21haW5EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1aDJ2MmgtLjlMMTIgOS45VjloOHY4LjlsMiAyVjdIMTJWM0g1LjFMOCA1Ljl6bTggNmgydjJoLTJ6TTEuMyAxLjguMSAzLjEgMiA1djE2aDE2bDMgMyAxLjMtMS4zLTIxLTIwLjl6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTQgOEg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0yIDR2LTJoMmwyIDJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbWFpblZlcmlmaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjYgMTAuODgtMS40Mi0xLjQyLTQuMjQgNC4yNS0yLjEyLTIuMTNMNy40IDEzbDMuNTQgMy41NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YTIgMiAwIDAgMC0yLTJ6bTAgMTRINVY4aDE0djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREdW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyaC04QzYuMzggMiAyIDYuNjYgMiAxMi4yOCAyIDE3LjUgNi40OSAyMiAxMS43MiAyMiAxNy4zOSAyMiAyMiAxNy42MiAyMiAxMlY0YzAtMS4xLS45LTItMi0yem0tMyAxMy0zLTJ2Mkg3VjloN3YybDMtMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0LTggNS04LTVWNmw4IDUgOC01djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNmgtMnY5SDZ2MmMwIC41NS40NSAxIDEgMWgxMWw0IDRWN2MwLS41NS0uNDUtMS0xLTF6bS00IDZWM2MwLS41NS0uNDUtMS0xLTFIM2MtLjU1IDAtMSAuNDUtMSAxdjE0bDQtNGgxMGMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcndhcmRUb0luYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDl2LTJINFY4bDggNSA4LTV2NWgyVjZjMC0xLjEtLjktMi0yLTJ6bS04IDdMNCA2aDE2bC04IDV6bTcgNCA0IDQtNCA0di0zaC00di0yaDR2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXJnbGFzc0JvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDIyLS4wMS02TDE0IDEybDMuOTktNC4wMUwxOCAySDZ2Nmw0IDQtNCAzLjk5VjIyaDEyek04IDcuNVY0aDh2My41bC00IDQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3VyZ2xhc3NUb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDIgLjAxIDZMMTAgMTJsLTMuOTkgNC4wMUw2IDIyaDEydi02bC00LTQgNC0zLjk5VjJINnptMTAgMTQuNVYyMEg4di0zLjVsNC00IDQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40IDE4LjJjLjM4LjUuNiAxLjEyLjYgMS44IDAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTNjLjQ0IDAgLjg1LjA5IDEuMjMuMjZsMS40MS0xLjc3YTQuNTA0IDQuNTA0IDAgMCAxLTEuMDktMy42OWwtMi4wMy0uNjhBMi45OTcgMi45OTcgMCAwIDEgMCA5LjVjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2MwIC4wNyAwIC4xNC0uMDEuMjFsMi4wMy42OGE0LjQ2OCA0LjQ2OCAwIDAgMSAzLjIyLTIuMzJWNS45MUEzLjAxOCAzLjAxOCAwIDAgMSA5IDNjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2MwIDEuNC0uOTYgMi41Ny0yLjI1IDIuOTF2Mi4xNmMxLjQuMjMgMi41OCAxLjExIDMuMjIgMi4zMkwxOCA5LjcxVjkuNWMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzLTEuMzQgMy0zIDNjLTEuMDYgMC0xLjk4LS41NS0yLjUyLTEuMzdsLTIuMDMuNjhhNC40OSA0LjQ5IDAgMCAxLTEuMDkgMy42OWwxLjQxIDEuNzdjLjM4LS4xOC43OS0uMjcgMS4yMy0uMjcgMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtM2MwLS42OC4yMi0xLjMuNi0xLjhsLTEuNDEtMS43N2MtMS4zNS43NS0zLjAxLjc2LTQuMzcgMEw4LjQgMTguMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1wb3J0Q29udGFjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDQuNWMtMS45NSAwLTQuMDUuNC01LjUgMS41LTEuNDUtMS4xLTMuNTUtMS41LTUuNS0xLjVTMi40NSA0LjkgMSA2djE0LjY1YzAgLjY1LjczLjQ1Ljc1LjQ1QzMuMSAyMC40NSA1LjA1IDIwIDYuNSAyMGMxLjk1IDAgNC4wNS40IDUuNSAxLjUgMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuNjUgMCAzLjM1LjMgNC43NSAxLjA1LjQxLjIxLjc1LS4xOS43NS0uNDVWNmMtMS40OS0xLjEyLTMuNjMtMS41LTUuNS0xLjV6bTMuNSAxNGMtMS4xLS4zNS0yLjMtLjUtMy41LS41LTEuNyAwLTQuMTUuNjUtNS41IDEuNVY4YzEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjIgMCAyLjQuMTUgMy41LjV2MTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1wb3J0RXhwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3ptNyAxNC4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW52ZXJ0Q29sb3JzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMmw0LjIgNC4yYTcuNzMgNy43MyAwIDAgMC0xLjYgNC43QzQgMTcuNDggNy41OCAyMSAxMiAyMWMxLjc1IDAgMy4zNi0uNTYgNC42Ny0xLjVsMy4xIDMuMSAxLjQyLTEuNDF6TTEyIDE5Yy0zLjMxIDAtNi0yLjYzLTYtNS44NyAwLTEuMTkuMzYtMi4zMiAxLjAyLTMuMjhMMTIgMTQuODNWMTl6TTguMzggNS41NiAxMiAybDUuNjUgNS41NkMxOS4xIDguOTkgMjAgMTAuOTYgMjAgMTMuMTNjMCAxLjE4LS4yNyAyLjI5LS43NCAzLjNMMTIgOS4xN1Y0LjgxTDkuOCA2Ljk3IDguMzggNS41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuOTEgMTQuMDkgMTcgMTRsMiAyIDQtNC4wNEwyMSAxMGgtOC4xN2w0LjA4IDQuMDl6TTMuOTggNi44MUE2LjAxMiA2LjAxMiAwIDAgMCAxIDEyYzAgMy4zMSAyLjY5IDYgNiA2IDIuMjEgMCA0LjE1LTEuMiA1LjE4LTIuOTlsNy41OSA3LjU5IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIybDIuNTkgMi41OXptNS45MyA1LjkzQTMuMDE1IDMuMDE1IDAgMCAxIDcgMTVjLTEuNjUgMC0zLTEuMzUtMy0zIDAtMS40Ljk3LTIuNTggMi4yNi0yLjkxbDMuNjUgMy42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBoLTguMzVBNS45OSA1Ljk5IDAgMCAwIDcgNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNmE1Ljk5IDUuOTkgMCAwIDAgNS42NS00SDEzbDIgMiAyLTIgMiAyIDQtNC4wNEwyMSAxMHpNNyAxNWMtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpc3RBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaXZlSGVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYgMTZoLTJ2LTJoMnYyem0yLjA3LTcuNzUtLjkuOTJDMTMuNDUgMTEuOSAxMyAxMi41IDEzIDE0aC0ydi0uNWMwLTEuMS40NS0yLjEgMS4xNy0yLjgzbDEuMjQtMS4yNmMuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMkg4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAuODgtLjM2IDEuNjgtLjkzIDIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2F0aW9uT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMTEuNzUgMTEuNDctLjExLS4xMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNi41QTIuNSAyLjUgMCAwIDEgMTQuNSA5YzAgLjc0LS4zMyAxLjM5LS44MyAxLjg1bDMuNjMgMy42M2MuOTgtMS44NiAxLjctMy44IDEuNy01LjQ4IDAtMy44Ny0zLjEzLTctNy03YTcgNyAwIDAgMC01LjA0IDIuMTVsMy4xOSAzLjE5Yy40Ni0uNTIgMS4xMS0uODQgMS44NS0uODR6bTQuMzcgOS42LTQuNjMtNC42My0uMTEtLjExTDMuMjcgMyAyIDQuMjdsMy4xOCAzLjE4QzUuMDcgNy45NSA1IDguNDcgNSA5YzAgNS4yNSA3IDEzIDcgMTNzMS42Ny0xLjg1IDMuMzgtNC4zNUwxOC43MyAyMSAyMCAxOS43M2wtMy42My0zLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjEzIDIgNSA1LjEzIDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ny0zLjEzLTctNy03em0wIDkuNWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFpbExvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5Ljk3VjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTJ2LTUuMDNjMC0yLjc2IDIuMjQtNSA1LTVoMXpNMjAgOGwtOCA1LTgtNVY2bDggNSA4LTV2MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTV2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFpbE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY4bDggNSA4LTV2MTB6bS04LTdMNCA2aDE2bC04IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtDaGF0UmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjM0IDIwLTMuNTQtMy41NCAxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNEwyMyAxNC4zNCAxNy4zNCAyMHpNMTIgMTdhNi45OTUgNi45OTUgMCAwIDEgMTAtNi4zMlY0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGg2YzAtLjE3LjAxLS4zMy4wMy0uNUE0LjA3IDQuMDcgMCAwIDEgMTIgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtDaGF0VW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNi45OFYxNmMwIDEuMS0uOSAyLTIgMkg2bC00IDRWNGMwLTEuMS45LTIgMi0yaDEwLjFBNS4wMDIgNS4wMDIgMCAwIDAgMTkgOGMxLjEzIDAgMi4xNi0uMzkgMy0xLjAyek0xNiAzYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXJrRW1haWxSZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTlhNi45OTUgNi45OTUgMCAwIDEgMTAtNi4zMlY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOC4wOGMtLjA1LS4zMy0uMDgtLjY2LS4wOC0xek00IDZsOCA1IDgtNXYybC04IDUtOC01VjZ6bTEzLjM0IDE2LTMuNTQtMy41NCAxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNEwyMyAxNi4zNCAxNy4zNCAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFya0VtYWlsVW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOC45OFYxOGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTAuMWMtLjA2LjMyLS4xLjY2LS4xIDEgMCAxLjQ4LjY1IDIuNzkgMS42NyAzLjcxTDEyIDExIDQgNnYybDggNSA1LjMtMy4zMmMuNTQuMiAxLjEuMzIgMS43LjMyIDEuMTMgMCAyLjE2LS4zOSAzLTEuMDJ6TTE2IDVjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zLTMgMS4zNC0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtVbnJlYWRDaGF0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOVwiLFwiY3lcIjpcIjNcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA4VjZoOS4wM2E0LjkwNiA0LjkwNiAwIDAgMS0uOTItNEg0LjAxYTIgMiAwIDAgMC0yIDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNi45N0MyMS4xNiA3LjYxIDIwLjEzIDggMTkgOEg2em04IDZINnYtMmg4djJ6bTQtM0g2VjloMTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVzc2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMiAxMkg2di0yaDEydjJ6bTAtM0g2VjloMTJ2MnptMC0zSDZWNmgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2JpbGVTY3JlZW5TaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2MThjMCAxLjEuODkgMiAxLjk5IDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0em0tNC4yLTUuNzh2MS43NWwzLjItMi45OUwxMi44IDl2MS43Yy0zLjExLjQzLTQuMzUgMi41Ni00LjggNC43IDEuMTEtMS41IDIuNTgtMi4xOCA0LjgtMi4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9yZVRpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA4djZsNC43IDIuOS44LTEuMi00LTIuNFY4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45MiAxMkE2Ljk1NyA2Ljk1NyAwIDAgMSAxMSAyMGMtMy45IDAtNy0zLjEtNy03czMuMS03IDctN2MuNyAwIDEuMzcuMSAyIC4yOVY0LjIzYy0uNjQtLjE1LTEuMzEtLjIzLTItLjIzLTUgMC05IDQtOSA5czQgOSA5IDlhOC45NjMgOC45NjMgMCAwIDAgOC45NC0xMGgtMi4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNVYyaC0ydjNoLTN2MmgzdjNoMlY3aDNWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi44MiAxM0gxMXYtMkg2LjgyQzYuNCA5Ljg0IDUuMyA5IDQgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2MxLjMgMCAyLjQtLjg0IDIuODItMnpNNCAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMyAxMi00LTN2MmgtNC4wNWMtLjUtNS4wNS00Ljc2LTktOS45NS05djJjNC40MiAwIDggMy41OCA4IDhzLTMuNTggOC04IDh2MmM1LjE5IDAgOS40NS0zLjk1IDkuOTUtOUgxOXYybDQtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9TaW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45OSA1YzAtMS4xLS44OS0yLTEuOTktMmgtN0w3LjY2IDUuMzQgMTkgMTYuNjggMTguOTkgNXpNMy42NSAzLjg4IDIuMzggNS4xNSA1IDcuNzdWMTljMCAxLjEuOSAyIDIgMmgxMC4wMWMuMzUgMCAuNjctLjEuOTYtLjI2bDEuODggMS44OCAxLjI3LTEuMjdMMy42NSAzLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXVzZVByZXNlbnRhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE5LjFIM1Y1aDE4djE0LjF6TTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yMSAxOS4xSDNWNWgxOHYxNC4xek0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA4aDJ2OEg5em00IDBoMnY4aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25BZGREaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMjB2LTJjMC0yLjMtNC4xLTMuNy02LjktMy45bDYgNS45aC45em0tMTEuNi01LjVDOS4yIDE1LjEgNyAxNi4zIDcgMTh2Mmg5LjlsNCA0IDEuMy0xLjMtMjEtMjAuOUwwIDMuMWw0IDRWMTBIMXYyaDN2M2gydi0zaDIuOWwyLjUgMi41ek02IDEwdi0uOWwuOS45SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvblNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI4XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjM1IDE0LjAxQzcuNjIgMTMuOTEgMiAxNS4yNyAyIDE4djJoOS41NGMtMi40Ny0yLjc2LTEuMjMtNS44OS0xLjE5LTUuOTl6TTE5LjQzIDE4LjAyYy4zNi0uNTkuNTctMS4yOC41Ny0yLjAyIDAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0IDEuNzkgNCA0IDRjLjc0IDAgMS40My0uMjIgMi4wMi0uNTdMMjAuNTkgMjIgMjIgMjAuNTlsLTIuNTctMi41N3pNMTYgMThjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTQuNTQtMS40My0xLjQzYy41Ni0uNzMgMS4wNS0xLjUgMS40Ny0yLjMybC0yLjItMi4yYy0uMjgtLjI4LS4zNi0uNjctLjI1LTEuMDIuMzctMS4xMi41Ny0yLjMyLjU3LTMuNTcgMC0uNTUuNDUtMSAxLTFIMjBjLjU1IDAgMSAuNDUgMSAxIDAgMy45OC0xLjM3IDcuNjQtMy42NiAxMC41NHptLTIuODIgMi44MUExNi44ODQgMTYuODg0IDAgMCAxIDQgMjFjLS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4zNS0uMTIuNzUtLjAzIDEuMDIuMjRsMi4yIDIuMmMuODEtLjQyIDEuNTgtLjkgMi4zLTEuNDZMMS4zOSA0LjIybDEuNDItMS40MUwyMS4xOSAyMS4ybC0xLjQxIDEuNDEtNS4yNi01LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZUVuYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4zOCAxMC43OS0yLjItMi4yYy0uMjgtLjI4LS4zNi0uNjctLjI1LTEuMDIuMzctMS4xMi41Ny0yLjMyLjU3LTMuNTcgMC0uNTUuNDUtMSAxLTFIMjBjLjU1IDAgMSAuNDUgMSAxIDAgOS4zOS03LjYxIDE3LTE3IDE3LS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4zNS0uMTIuNzUtLjAzIDEuMDIuMjRsMi4yIDIuMmMyLjgzLTEuNDUgNS4xNS0zLjc2IDYuNTktNi41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjYyIDEwLjc5YzEuNDQgMi44MyAzLjc2IDUuMTQgNi41OSA2LjU5bDIuMi0yLjJjLjI3LS4yNy42Ny0uMzYgMS4wMi0uMjQgMS4xMi4zNyAyLjMzLjU3IDMuNTcuNTcuNTUgMCAxIC40NSAxIDFWMjBjMCAuNTUtLjQ1IDEtMSAxLTkuMzkgMC0xNy03LjYxLTE3LTE3IDAtLjU1LjQ1LTEgMS0xaDMuNWMuNTUgMCAxIC40NSAxIDEgMCAxLjI1LjIgMi40NS41NyAzLjU3LjExLjM1LjAzLjc0LS4yNSAxLjAybC0yLjIgMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZWxpbmtFcmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgOC4yLTEtMS00IDQtNC00LTEgMSA0IDQtNCA0IDEgMSA0LTQgNCA0IDEtMS00LTQgNC00ek0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVsaW5rTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMUg5Yy0xLjEgMC0yIC45LTIgMnYzaDJWNGgxMHYxNkg5di0ySDd2M2MwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bS04LjIgMTBWOS41QzEwLjggOC4xIDkuNCA3IDggN1M1LjIgOC4xIDUuMiA5LjVWMTFjLS42IDAtMS4yLjYtMS4yIDEuMnYzLjVjMCAuNy42IDEuMyAxLjIgMS4zaDUuNWMuNyAwIDEuMy0uNiAxLjMtMS4ydi0zLjVjMC0uNy0uNi0xLjMtMS4yLTEuM3ptLTEuMyAwaC0zVjkuNWMwLS44LjctMS4zIDEuNS0xLjNzMS41LjUgMS41IDEuM1YxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVsaW5rUmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMSA3LjctMSAxYzEuOCAxLjggMS44IDQuNiAwIDYuNWwxIDFjMi41LTIuMyAyLjUtNi4xIDAtOC41ek0xOCA5LjhsLTEgMWMuNS43LjUgMS42IDAgMi4zbDEgMWMxLjItMS4yIDEuMi0zIDAtNC4zek0xNCAxSDRjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxOUg0VjRoMTB2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lbGlua1NldHVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODIgMTIuNDljLjAyLS4xNi4wNC0uMzIuMDQtLjQ5IDAtLjE3LS4wMi0uMzMtLjA0LS40OWwxLjA4LS44MmMuMS0uMDcuMTItLjIxLjA2LS4zMmwtMS4wMy0xLjczYy0uMDYtLjExLS4yLS4xNS0uMzEtLjExbC0xLjI4LjVjLS4yNy0uMi0uNTYtLjM2LS44Ny0uNDlsLS4yLTEuMzNjMC0uMTItLjExLS4yMS0uMjQtLjIxSDUuOThhLjI2LjI2IDAgMCAwLS4yNi4yMWwtLjIgMS4zMmMtLjMxLjEyLS42LjMtLjg3LjQ5bC0xLjI4LS41Yy0uMTItLjA1LS4yNSAwLS4zMS4xMWwtMS4wMyAxLjczYy0uMDYuMTItLjAzLjI1LjA3LjMzbDEuMDguODJjLS4wMi4xNi0uMDMuMzMtLjAzLjQ5IDAgLjE3LjAyLjMzLjA0LjQ5bC0xLjA5LjgzYy0uMS4wNy0uMTIuMjEtLjA2LjMybDEuMDMgMS43M2MuMDYuMTEuMi4xNS4zMS4xMWwxLjI4LS41Yy4yNy4yLjU2LjM2Ljg3LjQ5bC4yIDEuMzJjLjAxLjEyLjEyLjIxLjI1LjIxaDIuMDZjLjEzIDAgLjI0LS4wOS4yNS0uMjFsLjItMS4zMmMuMzEtLjEyLjYtLjMuODctLjQ5bDEuMjguNWMuMTIuMDUuMjUgMCAuMzEtLjExbDEuMDMtMS43M2MuMDYtLjExLjA0LS4yNC0uMDYtLjMybC0xLjEtLjgzek03IDEzLjc1Yy0uOTkgMC0xLjgtLjc4LTEuOC0xLjc1cy44MS0xLjc1IDEuOC0xLjc1IDEuOC43OCAxLjggMS43NVM4IDEzLjc1IDcgMTMuNzV6TTE4IDEuMDEgOCAxYy0xLjEgMC0yIC45LTIgMnYzaDJWNWgxMHYxNEg4di0xSDZ2M2MwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvcnRhYmxlV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41NiAxNC4yNGMuMjgtLjY5LjQ0LTEuNDUuNDQtMi4yNCAwLTMuMzEtMi42OS02LTYtNi0uNzkgMC0xLjU1LjE2LTIuMjQuNDRsMS42MiAxLjYyYy4yLS4wMy40MS0uMDYuNjItLjA2YTMuOTk5IDMuOTk5IDAgMCAxIDMuOTUgNC42M2wxLjYxIDEuNjF6TTEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjM1LS4zNSAyLjYyLS45NSAzLjc0bDEuNDcgMS40N0E5Ljg2IDkuODYgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMS45MSAwLTMuNjkuNTUtNS4yMSAxLjQ3bDEuNDYgMS40NkM5LjM3IDQuMzQgMTAuNjUgNCAxMiA0ek0zLjI3IDIuNSAyIDMuNzdsMi4xIDIuMUMyLjc5IDcuNTcgMiA5LjY5IDIgMTJjMCAzLjcgMi4wMSA2LjkyIDQuOTkgOC42NWwxLTEuNzNDNS42MSAxNy41MyA0IDE0Ljk2IDQgMTJjMC0xLjc2LjU3LTMuMzggMS41My00LjY5bDEuNDMgMS40NEM2LjM2IDkuNjggNiAxMC44IDYgMTJjMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTlsMS0xLjc0Yy0xLjE5LS43LTItMS45Ny0yLTMuNDUgMC0uNjUuMTctMS4yNS40NC0xLjc5bDEuNTggMS41OEwxMCAxMmMwIDEuMS45IDIgMiAybC4yMS0uMDIuMDEuMDEgNy41MSA3LjUxTDIxIDIwLjIzIDQuMjcgMy41bC0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByZXNlbnRUb0FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjE0YzAgMS4xMS44OSAyIDIgMmgxOGMxLjExIDAgMi0uODkgMi0yVjVjMC0xLjExLS44OS0yLTItMnptMCAxNi4wMkgzVjQuOThoMTh2MTQuMDR6TTEwIDEySDhsNC00IDQgNGgtMnY0aC00di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcmludERpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4xIDE3SDIydi02YzAtMS43LTEuMy0zLTMtM2gtOWw5LjEgOXptLS4xLTdjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptLTEtM1YzSDZ2MS4xTDkgN3pNMS4yIDEuOCAwIDNsNC45IDVDMy4zIDguMSAyIDkuNCAyIDExdjZoNHY0aDExLjlsMyAzIDEuMy0xLjMtMjEtMjAuOXpNOCAxOXYtNWgyLjlsNSA1SDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFFyQ29kZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgtMnYtMmgydjJ6bS0yLTdoLTJ2NWgydi01em04LTJoLTJ2NGgydi00em0tMi0yaC0ydjJoMnYtMnpNNyAxMkg1djJoMnYtMnptLTItMkgzdjJoMnYtMnptNy01aDJWM2gtMnYyem0tNy41LS41djNoM3YtM2gtM3pNOSA5SDNWM2g2djZ6bS00LjUgNy41djNoM3YtM2gtM3pNOSAyMUgzdi02aDZ2NnptNy41LTE2LjV2M2gzdi0zaC0zek0yMSA5aC02VjNoNnY2em0tMiAxMHYtM2gtNHYyaDJ2M2g0di0yaC0yem0tMi03aC00djJoNHYtMnptLTQtMkg3djJoMnYyaDJ2LTJoMnYtMnptMS0xVjdoLTJWNWgtMnY0aDR6TTYuNzUgNS4yNWgtMS41djEuNWgxLjV2LTEuNXptMCAxMmgtMS41djEuNWgxLjV2LTEuNXptMTItMTJoLTEuNXYxLjVoMS41di0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFFyQ29kZVNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgNi41djNoLTN2LTNoM00xMSA1SDV2Nmg2VjV6bS0xLjUgOS41djNoLTN2LTNoM00xMSAxM0g1djZoNnYtNnptNi41LTYuNXYzaC0zdi0zaDNNMTkgNWgtNnY2aDZWNXptLTYgOGgxLjV2MS41SDEzVjEzem0xLjUgMS41SDE2VjE2aC0xLjV2LTEuNXpNMTYgMTNoMS41djEuNUgxNlYxM3ptLTMgM2gxLjV2MS41SDEzVjE2em0xLjUgMS41SDE2VjE5aC0xLjV2LTEuNXpNMTYgMTZoMS41djEuNUgxNlYxNnptMS41LTEuNUgxOVYxNmgtMS41di0xLjV6bTAgM0gxOVYxOWgtMS41di0xLjV6TTIyIDdoLTJWNGgtM1YyaDV2NXptMCAxNXYtNWgtMnYzaC0zdjJoNXpNMiAyMmg1di0ySDR2LTNIMnY1ek0yIDJ2NWgyVjRoM1YySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFFyQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTFoOFYzSDN2OHptMi02aDR2NEg1VjV6TTMgMjFoOHYtOEgzdjh6bTItNmg0djRINXYtNHpNMTMgM3Y4aDhWM2gtOHptNiA2aC00VjVoNHY0ek0xOSAxOWgydjJoLTJ6TTEzIDEzaDJ2MmgtMnpNMTUgMTVoMnYyaC0yek0xMyAxN2gydjJoLTJ6TTE1IDE5aDJ2MmgtMnpNMTcgMTdoMnYyaC0yek0xNyAxM2gydjJoLTJ6TTE5IDE1aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVhZE1vcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aDl2MmgtOXpNMTMgMTVoOXYyaC05ek0xNiAxMWg2djJoLTZ6TTEzIDEyIDggN3Y0SDJ2Mmg2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJpbmdWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMy43MSAxNi42N0ExNi45NzEgMTYuOTcxIDAgMCAwIDEyIDEyQzcuNDYgMTIgMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43M3MzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NiAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxYS45OS45OSAwIDAgMC0uMjktLjd6TTIxLjE2IDYuMjZsLTEuNDEtMS40MS0zLjU2IDMuNTUgMS40MSAxLjQxczMuNDUtMy41MiAzLjU2LTMuNTV6TTEzIDJoLTJ2NWgyVjJ6TTYuNCA5LjgxIDcuODEgOC40IDQuMjYgNC44NCAyLjg0IDYuMjZjLjExLjAzIDMuNTYgMy41NSAzLjU2IDMuNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJzc0ZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuMThcIixcImN5XCI6XCIxNy44MlwiLFwiclwiOlwiMi4xOFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDQuNDR2Mi44M2M3LjAzIDAgMTIuNzMgNS43IDEyLjczIDEyLjczaDIuODNjMC04LjU5LTYuOTctMTUuNTYtMTUuNTYtMTUuNTZ6bTAgNS42NnYyLjgzYzMuOSAwIDcuMDcgMy4xNyA3LjA3IDcuMDdoMi44M2MwLTUuNDctNC40My05LjktOS45LTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnR0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4wMyAzLTEuMTEgNy4wN2gyLjYybC43LTQuNWgyLjU4TDExLjggMTguNDNIOS40N0w5LjA2IDIxaDcuMjdsLjQtMi41N2gtMi4zNWwyLTEyLjg2aDIuNThsLS43MSA0LjVoMi42NUwyMiAzSDkuMDN6TTggNUg0bC0uMzEgMmg0TDggNXptLS42MSA0aC00bC0uMzEgMmg0bC4zMS0yem0uOTIgOGgtNkwyIDE5aDZsLjMxLTJ6bS42Mi00aC02bC0uMzEgMmg2LjAxbC4zLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlblNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGMxLjEgMCAxLjk5LS45IDEuOTktMkwyMiA2YTIgMiAwIDAgMC0yLTJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMGEyIDIgMCAwIDAgMiAySDB2MmgyNHYtMmgtNHptLTctMy41M3YtMi4xOWMtMi43OCAwLTQuNjEuODUtNiAyLjcyLjU2LTIuNjcgMi4xMS01LjMzIDYtNS44N1Y3bDQgMy43My00IDMuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbmRUaW1lRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmMwLTEuMS0uOS0yLTItMmgtNGEyLjUgMi41IDAgMCAwLTUgMEg1LjAxYy0xLjEgMC0yIC45LTIgMnYzLjhDNS43IDkuOCA2IDExLjk2IDYgMTIuNXMtLjI5IDIuNy0zIDIuN1YxOWMwIDEuMS45IDIgMiAyaDMuOGMwLTIuMTYgMS4zNy0yLjc4IDIuMi0yLjk0di05LjNsOSA0LjVWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTJ2NGw0IDEtNCAxdjRsMTAtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VudGltZW50U2F0aXNmaWVkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0wLTIuNWMyLjMzIDAgNC4zMi0xLjQ1IDUuMTItMy41aC0xLjY3Yy0uNjkgMS4xOS0xLjk3IDItMy40NSAycy0yLjc1LS44MS0zLjQ1LTJINi44OGMuOCAyLjA1IDIuNzkgMy41IDUuMTIgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDEwLjVoMnYxaC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTEwIDYuNUg2LjV2Ljc1SDljLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg1di0xLjVoMy41di0uNzVINmMtLjU1IDAtMS0uNDUtMS0xVjEwYzAtLjU1LjQ1LTEgMS0xaDR2MS41em0zIDQuNWgtMlY5aDJ2NnptNi0zYzAgLjU1LS40NSAxLTEgMWgtMi41djJIMTRWOWg0Yy41NSAwIDEgLjQ1IDEgMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVha2VyUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNy4wNyA4LjQzIDguNWMuOTEtLjkxIDIuMTgtMS40OCAzLjU3LTEuNDhzMi42Ni41NyAzLjU3IDEuNDhMMTcgNy4wN0MxNS43MiA1Ljc5IDEzLjk1IDUgMTIgNXMtMy43Mi43OS01IDIuMDd6TTEyIDFDOC45OCAxIDYuMjQgMi4yMyA0LjI1IDQuMjFsMS40MSAxLjQxQzcuMjggNCA5LjUzIDMgMTIgM3M0LjcyIDEgNi4zNCAyLjYybDEuNDEtMS40MUExMC45NjMgMTAuOTYzIDAgMCAwIDEyIDF6bTIuODYgOS4wMUw5LjE0IDEwQzguNTEgMTAgOCAxMC41MSA4IDExLjE0djkuNzFjMCAuNjMuNTEgMS4xNCAxLjE0IDEuMTRoNS43MWMuNjMgMCAxLjE0LS41MSAxLjE0LTEuMTR2LTkuNzFjLjAxLS42My0uNS0xLjEzLTEuMTMtMS4xM3pNMTUgMjBIOXYtOGg2djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2MwIDIuMjEtMS43OSA0LTQgNFM4IDkuMjEgOCA3czEuNzktNCA0LTQgNCAxLjc5IDQgNHptLTkgNmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTEwIDBjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGF5Q3VycmVudExhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMDEgNyAxIDE3YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0xLjk5LjktMS45OSAyek0xOSA3djEwSDVWN2gxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RheUN1cnJlbnRQb3J0cmFpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0xLjk5LjktMS45OSAydjE4YzAgMS4xLjg5IDIgMS45OSAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE5SDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RheVByaW1hcnlMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjAxIDcgMSAxN2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMS45OS45LTEuOTkgMnpNMTkgN3YxMEg1VjdoMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YXlQcmltYXJ5UG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMS45OS45LTEuOTkgMnYxOGMwIDEuMS44OSAyIDEuOTkgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3BTY3JlZW5TaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuMjIgMTguMDIgMiAySDI0di0yaC0yLjc4em0uNzctMiAuMDEtMTBhMiAyIDAgMCAwLTItMkg3LjIybDUuMjMgNS4yM2MuMTgtLjA0LjM2LS4wNy41NS0uMVY3LjAybDQgMy43My0xLjU4IDEuNDcgNS41NCA1LjU0Yy42MS0uMzMgMS4wMy0uOTkgMS4wMy0xLjc0ek0yLjM5IDEuNzMgMS4xMSAzbDEuNTQgMS41NGMtLjQuMzYtLjY1Ljg5LS42NSAxLjQ4djEwYTIgMiAwIDAgMCAyIDJIMHYyaDE4LjEzbDIuNzEgMi43MSAxLjI3LTEuMjdMMi4zOSAxLjczek03IDE1LjAyYy4zMS0xLjQ4LjkyLTIuOTUgMi4wNy00LjA2bDEuNTkgMS41OWMtMS41NC4zOC0yLjcgMS4xOC0zLjY2IDIuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBDYWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDQtNCA0aDN2N2MwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4djdIMmw0IDQgNC00SDdWOGMwLTEuMS45LTIgMi0yczIgLjkgMiAydjdjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNFY4aDNsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dHNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek05IDExSDdWOWgydjJ6bTQgMGgtMlY5aDJ2MnptNCAwaC0yVjloMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbnN1YnNjcmliZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxM2MtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNSAzLjUtMS41NyAzLjUtMy41LTEuNTctMy41LTMuNS0zLjV6bTIgNGgtNHYtMWg0djF6bS02Ljk1IDBjLS4wMi0uMTctLjA1LS4zMy0uMDUtLjUgMC0yLjc2IDIuMjQtNSA1LTUgLjkyIDAgMS43Ni4yNiAyLjUuNjlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDguNTV6TTEyIDEwLjUgNSA3VjVsNyAzLjVMMTkgNXYybC03IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9pY2VtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSA2QzE1LjQ2IDYgMTMgOC40NiAxMyAxMS41YzAgMS4zMy40NyAyLjU1IDEuMjYgMy41SDkuNzRjLjc5LS45NSAxLjI2LTIuMTcgMS4yNi0zLjVDMTEgOC40NiA4LjU0IDYgNS41IDZTMCA4LjQ2IDAgMTEuNSAyLjQ2IDE3IDUuNSAxN2gxM2MzLjA0IDAgNS41LTIuNDYgNS41LTUuNVMyMS41NCA2IDE4LjUgNnptLTEzIDlDMy41NyAxNSAyIDEzLjQzIDIgMTEuNVMzLjU3IDggNS41IDggOSA5LjU3IDkgMTEuNSA3LjQzIDE1IDUuNSAxNXptMTMgMGMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVTMTYuNTcgOCAxOC41IDggMjIgOS41NyAyMiAxMS41IDIwLjQzIDE1IDE4LjUgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZwbktleU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjgzIDE4SDIxdi00aDJ2LTRIMTIuODNsOCA4em0tMS4wNSA0LjYxIDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIybDIuNTkgMi41OUE2LjAxMiA2LjAxMiAwIDAgMCAxIDEyYzAgMy4zMSAyLjY5IDYgNiA2IDIuMjEgMCA0LjE1LTEuMiA1LjE4LTIuOTlsNy42IDcuNnpNOC45OSAxMS44MmMuMDEuMDYuMDEuMTIuMDEuMTggMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yYy4wNiAwIC4xMiAwIC4xOC4wMWwxLjgxIDEuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZwbktleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjY1IDEwQTUuOTkgNS45OSAwIDAgMCA3IDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDZhNS45OSA1Ljk5IDAgMCAwIDUuNjUtNEgxN3Y0aDR2LTRoMnYtNEgxMi42NXpNNyAxNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlDYWxsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNC45NUMyMS43OSA0Ljc4IDE5LjY3IDMgMTYuNSAzYy0zLjE4IDAtNS4yOSAxLjc4LTUuNSAxLjk1TDE2LjUgMTIgMjIgNC45NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNTFjLTEuMjQgMC0yLjQ1LS4yLTMuNTctLjU3YS45OTQuOTk0IDAgMCAwLTEuMDIuMjRsLTIuMiAyLjJhMTUuMTQ5IDE1LjE0OSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMmMuMjgtLjI4LjM2LS42Ny4yNS0xLjAyQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMGgtNHY0aC0ydi00SDd2LTJoNFY3aDJ2NGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExaDh2Mkg4em0xMi4xIDFIMjJjMC0yLjc2LTIuMjQtNS01LTVoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF6TTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTE5IDEyaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFtcFN0b3JpZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDRoMTB2MTVIN3pNMyA2aDJ2MTFIM3pNMTkgNmgydjExaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNTQgNS4yMy0xLjM5LTEuNjhDMTguODggMy4yMSAxOC40NyAzIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTYuNTVMMy40NiA1LjIzQzMuMTcgNS41NyAzIDYuMDIgMyA2LjVWMTljMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDgtLjE3LS45My0uNDYtMS4yN3pNMTIgMTcuNSA2LjUgMTJIMTB2LTJoNHYyaDMuNUwxMiAxNy41ek01LjEyIDVsLjgxLTFoMTJsLjk0IDFINS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXR0cmlidXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4LjVjLS45MSAwLTIuNzUuNDYtMi43NSAxLjM4djQuNjJoMS41VjE5aDIuNXYtNC41aDEuNVY5Ljg4YzAtLjkxLTEuODQtMS4zOC0yLjc1LTEuMzh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0g3Yy0uNjkgMC0xLjIzLjM1LTEuNTkuODhMMCAxMmw1LjQxIDguMTFjLjM2LjUzLjkuODkgMS41OS44OWgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMyAxMi41OUwxNy41OSAxNyAxNCAxMy40MSAxMC40MSAxNyA5IDE1LjU5IDEyLjU5IDEyIDkgOC40MSAxMC40MSA3IDE0IDEwLjU5IDE3LjU5IDcgMTkgOC40MSAxNS40MSAxMiAxOSAxNS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFsbG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEzIDkuNWg1di0yaC01djJ6bTAgN2g1di0yaC01djJ6bTYgNC41SDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnYxNGMwIDEuMS0uOSAyLTIgMnpNNiAxMWg1VjZINnY1em0xLTRoM3YzSDdWN3pNNiAxOGg1di01SDZ2NXptMS00aDN2M0g3di0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCaW90ZWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOWMtMS4xIDAtMiAuOS0yIDJoMTRjMC0xLjEtLjktMi0yLTJoLTR2LTJoM2MxLjEgMCAyLS45IDItMmgtOGMtMS42NiAwLTMtMS4zNC0zLTMgMC0xLjA5LjU5LTIuMDQgMS40Ni0yLjU2QzguMTcgOS4wMyA4IDguNTQgOCA4YzAtLjIxLjA0LS40Mi4wOS0uNjJBNS4wMSA1LjAxIDAgMCAwIDUgMTJjMCAyLjc2IDIuMjQgNSA1IDV2Mkg3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41NiA1LjUxQzExLjkxIDUuNTQgMTMgNi42NCAxMyA4YzAgLjc1LS4zMyAxLjQxLS44NSAxLjg3bC41OSAxLjYyLjk0LS4zNC4zNC45NCAxLjg4LS42OC0uMzQtLjk0Ljk0LS4zNC0yLjc0LTcuNTMtLjk0LjM0LS4zNC0uOTQtMS44OC42OC4zNC45NC0uOTQuMzUuNTYgMS41NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMC41XCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsb2NrRmxpcHBlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41LTQuNS0xMC0xMC0xMFMyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTB6TTUuNyA3LjFsMTEuMiAxMS4yYy0xLjMgMS4xLTMgMS43LTQuOSAxLjctNC40IDAtOC0zLjYtOC04IDAtMS45LjYtMy42IDEuNy00Ljl6TTIwIDEyYzAgMS45LS42IDMuNi0xLjcgNC45TDcuMSA1LjdDOC40IDQuNiAxMC4xIDQgMTIgNGM0LjQgMCA4IDMuNiA4IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNCAxMmMwLTQuNDIgMy41OC04IDgtOCAxLjg1IDAgMy41NS42MyA0LjkgMS42OUw1LjY5IDE2LjlBNy45MDIgNy45MDIgMCAwIDEgNCAxMnptOCA4Yy0xLjg1IDAtMy41NS0uNjMtNC45LTEuNjlMMTguMzEgNy4xQTcuOTAyIDcuOTAyIDAgMCAxIDIwIDEyYzAgNC40Mi0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMWgtMWwxLTdINy41Yy0uNTggMC0uNTctLjMyLS4zOC0uNjYuMTktLjM0LjA1LS4wOC4wNy0uMTJDOC40OCAxMC45NCAxMC40MiA3LjU0IDEzIDNoMWwtMSA3aDMuNWMuNDkgMCAuNTYuMzMuNDcuNTFsLS4wNy4xNUMxMi45NiAxNy41NSAxMSAyMSAxMSAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsY3VsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01Ljk3IDQuMDZMMTQuMDkgNmwxLjQxIDEuNDFMMTYuOTEgNmwxLjA2IDEuMDYtMS40MSAxLjQxIDEuNDEgMS40MS0xLjA2IDEuMDYtMS40MS0xLjQtMS40MSAxLjQxLTEuMDYtMS4wNiAxLjQxLTEuNDEtMS40MS0xLjQyem0tNi43OC42Nmg1djEuNWgtNXYtMS41ek0xMS41IDE2aC0ydjJIOHYtMkg2di0xLjVoMnYtMmgxLjV2MmgyVjE2em02LjUgMS4yNWgtNXYtMS41aDV2MS41em0wLTIuNWgtNXYtMS41aDV2MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGFuZ2VDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0uMDYgMTd2LTIuMDFIMTJjLTEuMjggMC0yLjU2LS40OS0zLjU0LTEuNDZhNS4wMDYgNS4wMDYgMCAwIDEtLjY0LTYuMjlsMS4xIDEuMWMtLjcxIDEuMzMtLjUzIDMuMDEuNTkgNC4xMy43LjcgMS42MiAxLjAzIDIuNTQgMS4wMXYtMi4xNGwyLjgzIDIuODNMMTIuMDYgMTl6bTQuMTEtNC4yNC0xLjEtMS4xYy43MS0xLjMzLjUzLTMuMDEtLjU5LTQuMTNBMy40ODIgMy40ODIgMCAwIDAgMTIgOC41aC0uMDZ2Mi4xNUw5LjExIDcuODMgMTEuOTQgNXYyLjAyYzEuMy0uMDIgMi42MS40NSAzLjYgMS40NSAxLjcgMS43IDEuOTEgNC4zNS42MyA2LjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDYuNDEgMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGVudENvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxSDRjLTEuMSAwLTIgLjktMiAydjE0aDJWM2gxMlYxem0zIDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMWMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE2SDhWN2gxMXYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGVudEN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIyXCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiLjVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMlwiLFwiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjY0IDcuNjRjLjIzLS41LjM2LTEuMDUuMzYtMS42NCAwLTIuMjEtMS43OS00LTQtNFMyIDMuNzkgMiA2czEuNzkgNCA0IDRjLjU5IDAgMS4xNC0uMTMgMS42NC0uMzZMMTAgMTJsLTIuMzYgMi4zNkM3LjE0IDE0LjEzIDYuNTkgMTQgNiAxNGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00YzAtLjU5LS4xMy0xLjE0LS4zNi0xLjY0TDEyIDE0bDcgN2gzdi0xTDkuNjQgNy42NHpNNiA4Yy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem0wIDEyYy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem02LTcuNWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41LjUuMjIuNS41LS4yMi41LS41LjV6TTE5IDNsLTYgNiAyIDIgNy03VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRlbnRQYXN0ZUdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1aDJ2M2gxMFY1aDJ2NmgyVjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYtMkg1VjV6bTctMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4wMSAxMy0xLjQyIDEuNDEgMS41OCAxLjU4SDEydjJoNi4xN2wtMS41OCAxLjU5IDEuNDIgMS40MSAzLjk5LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRlbnRQYXN0ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjIgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMS42MSAxLjYxIDEuNDEtMS40MnpNNSAxOVY3LjgzTDE2LjE3IDE5SDV6TTE3IDhWNWgydjExLjE3bDIgMlY1YzAtMS4xLS45LTItMi0yaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1LjgzbDUgNUgxN3ptLTUtNWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250ZW50UGFzdGVTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDVoMnYzaDEwVjVoMnY1aDJWNWMwLTEuMS0uOS0yLTItMmgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1di0ySDVWNXptNy0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjMgMTguOWMuNC0uNy43LTEuNS43LTIuNCAwLTIuNS0yLTQuNS00LjUtNC41UzEyIDE0IDEyIDE2LjVzMiA0LjUgNC41IDQuNWMuOSAwIDEuNy0uMyAyLjQtLjdsMi43IDIuNyAxLjQtMS40LTIuNy0yLjd6bS0zLjguMWMtMS40IDAtMi41LTEuMS0yLjUtMi41czEuMS0yLjUgMi41LTIuNSAyLjUgMS4xIDIuNSAyLjUtMS4xIDIuNS0yLjUgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250ZW50UGFzdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAyaC00LjE4QzE0LjQuODQgMTMuMyAwIDEyIDBjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTcgMThINVY0aDJ2M2gxMFY0aDJ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvcHlBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDljLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOWMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDlWNGg5djEyek0zIDE1di0yaDJ2Mkgzem0wLTUuNWgydjJIM3YtMnpNMTAgMjBoMnYyaC0ydi0yem0tNy0xLjV2LTJoMnYySDN6TTUgMjJjLTEuMSAwLTItLjktMi0yaDJ2MnptMy41IDBoLTJ2LTJoMnYyem01IDB2LTJoMmMwIDEuMS0uOSAyLTIgMnpNNSA2djJIM2MwLTEuMS45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcmVhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVsZXRlU3dlZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNmg0djJoLTR6bTAtOGg3djJoLTd6bTAgNGg2djJoLTZ6TTMgMThjMCAxLjEuOSAyIDIgMmg2YzEuMSAwIDItLjkgMi0yVjhIM3YxMHpNMTQgNWgtM2wtMS0xSDZMNSA1SDJ2MmgxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVzZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6bTYtMThoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyem04IDRoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wLTRoMlY3aC0ydjJ6bS00LTRoMlYzaC0ydjJ6TTcuODMgNSA3IDQuMTdWM2gydjJINy44M3ptMTIgMTItLjgzLS44M1YxNWgydjJoLTEuMTd6bTEuMzYgNC4xOUwyLjgxIDIuODEgMS4zOSA0LjIyIDQuMTcgN0gzdjJoMlY3LjgzbDIgMlYxN2g3LjE3bDIgMkgxNXYyaDJ2LTEuMTdsMi43OCAyLjc4IDEuNDEtMS40MnpNOSAxNXYtMy4xN0wxMi4xNyAxNUg5em02LTIuODNWOWgtMy4xN2wtMi0ySDE3djcuMTdsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJhZnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTkgOGMwLS43Mi0uMzctMS4zNS0uOTQtMS43TDEyIDEgMi45NSA2LjNDMi4zOCA2LjY1IDIgNy4yOCAyIDh2MTBjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMmwtLjAxLTEwek0xMiAxMyAzLjc0IDcuODQgMTIgM2w4LjI2IDQuODRMMTIgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZER5bmFtaWNGZWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA4SDZ2N2MwIDEuMS45IDIgMiAyaDl2LTJIOFY4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzaC04Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDhoLThWN2g4djR6TTQgMTJIMnY3YzAgMS4xLjkgMiAyIDJoOXYtMkg0di03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWxlQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFINGMtMS4xIDAtMiAuOS0yIDJ2MTRoMlYzaDEyVjF6bS0xIDQgNiA2djEwYzAgMS4xLS45IDItMiAySDcuOTlDNi44OSAyMyA2IDIyLjEgNiAyMWwuMDEtMTRjMC0xLjEuODktMiAxLjk5LTJoN3ptLTEgN2g1LjVMMTQgNi41VjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJMaXN0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODMgOEgyMVY2SDguODNsMiAyem01IDVIMTh2LTJoLTQuMTdsMiAyek0xNCAxNi44M1YxOGgtNHYtMmgzLjE3bC0zLTNINnYtMmgyLjE3bC0zLTNIM1Y2aC4xN0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxTDE0IDE2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMThoNHYtMmgtNHYyek0zIDZ2MmgxOFY2SDN6bTMgN2gxMnYtMkg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYWdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem02IDEzaC01bC0xLTJIOS41djVIOFY3aDZsMSAyaDN2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjQgNiAxNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbnREb3dubG9hZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjU4IDkuNzUtLjg3LS44Ny4yMy0uNjZoLjFsLjU0IDEuNTN6bS0yLjIzLTIuMjNMMTAuOTIgNmgyLjE0bDIuNTUgNi43OUwyMiAxOS4xN1Y0YzAtMS4xLS45LTItMi0ySDQuODNsNS41MiA1LjUyem0xMC4xNCAxNS43OUwxOS4xNyAyMkg0Yy0xLjEgMC0yLS45LTItMlY0LjgzTC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MXptLTguMzktOC4zOC0zLjMtMy4zTDYuNDEgMThoMi4wOGwxLjA5LTMuMDdoMi41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9udERvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImJhc2VQcm9maWxlXCI6XCJ0aW55XCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS45MyAxMy41aDQuMTRMMTIgNy45OHpNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS00LjA1IDE2LjUtMS4xNC0zSDkuMTdsLTEuMTIgM0g1Ljk2bDUuMTEtMTNoMS44Nmw1LjExIDEzaC0yLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOFY0bDggOC04IDh2LTRINFY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHZXN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41OSA2Ljg5Yy43LS43MSAxLjQtMS4zNSAxLjcxLTEuMjIuNS4yIDAgMS4wMy0uMyAxLjUyLS4yNS40Mi0yLjg2IDMuODktMi44NiA2LjMxIDAgMS4yOC40OCAyLjM0IDEuMzQgMi45OC43NS41NiAxLjc0LjczIDIuNjQuNDYgMS4wNy0uMzEgMS45NS0xLjQgMy4wNi0yLjc3IDEuMjEtMS40OSAyLjgzLTMuNDQgNC4wOC0zLjQ0IDEuNjMgMCAxLjY1IDEuMDEgMS43NiAxLjc5LTMuNzguNjQtNS4zOCAzLjY3LTUuMzggNS4zNyAwIDEuNyAxLjQ0IDMuMDkgMy4yMSAzLjA5IDEuNjMgMCA0LjI5LTEuMzMgNC42OS02LjFIMjF2LTIuNWgtMi40N2MtLjE1LTEuNjUtMS4wOS00LjItNC4wMy00LjItMi4yNSAwLTQuMTggMS45MS00Ljk0IDIuODQtLjU4LjczLTIuMDYgMi40OC0yLjI5IDIuNzItLjI1LjMtLjY4Ljg0LTEuMTEuODQtLjQ1IDAtLjcyLS44My0uMzYtMS45Mi4zNS0xLjA5IDEuNC0yLjg2IDEuODUtMy41Mi43OC0xLjE0IDEuMy0xLjkyIDEuMy0zLjI4QzguOTUgMy42OSA3LjMxIDMgNi40NCAzIDUuMTIgMyAzLjk3IDQgMy43MiA0LjI1Yy0uMzYuMzYtLjY2LjY2LS44OC45M2wxLjc1IDEuNzF6bTkuMjkgMTEuNjZjLS4zMSAwLS43NC0uMjYtLjc0LS43MiAwLS42LjczLTIuMiAyLjg3LTIuNzYtLjMgMi42OS0xLjQzIDMuNDgtMi4xMyAzLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3dUb1JlZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOSAxNyAzLTIuOTRhOS4zNCA5LjM0IDAgMCAwLTEtLjA2Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDlsLTMtM3ptMi01YzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNE0xNS40NyAyMC41IDEyIDE3bDEuNC0xLjQxIDIuMDcgMi4wOCA1LjEzLTUuMTcgMS40IDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG93VG9Wb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2gtLjY4bC0yIDJoMS45MUwxOSAxN0g1bDEuNzgtMmgyLjA1bC0yLTJINmwtMyAzdjRjMCAxLjEuODkgMiAxLjk5IDJIMTlhMiAyIDAgMCAwIDItMnYtNGwtMy0zem0tMS01LjA1LTQuOTUgNC45NS0zLjU0LTMuNTQgNC45NS00Ljk1TDE3IDcuOTV6bS00LjI0LTUuNjZMNi4zOSA4LjY2YS45OTYuOTk2IDAgMCAwIDAgMS40MWw0Ljk1IDQuOTVjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDYuMzYtNi4zNmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFMMTQuMTYgMi4zYS45NzUuOTc1IDAgMCAwLTEuNC0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDQuOTljLTEuMTEgMC0xLjk4Ljg5LTEuOTggMkwzIDE5YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxMmgtNGMwIDEuNjYtMS4zNSAzLTMgM3MtMy0xLjM0LTMtM0g0Ljk5VjVIMTl2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc2lnaHRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOGMtMS40NSAwLTIuMjYgMS40NC0xLjkzIDIuNTFsLTMuNTUgMy41NmMtLjMtLjA5LS43NC0uMDktMS4wNCAwbC0yLjU1LTIuNTVDMTIuMjcgMTAuNDUgMTEuNDYgOSAxMCA5Yy0xLjQ1IDAtMi4yNyAxLjQ0LTEuOTMgMi41MmwtNC41NiA0LjU1QzIuNDQgMTUuNzQgMSAxNi41NSAxIDE4YzAgMS4xLjkgMiAyIDIgMS40NSAwIDIuMjYtMS40NCAxLjkzLTIuNTFsNC41NS00LjU2Yy4zLjA5Ljc0LjA5IDEuMDQgMGwyLjU1IDIuNTVDMTIuNzMgMTYuNTUgMTMuNTQgMTggMTUgMThjMS40NSAwIDIuMjctMS40NCAxLjkzLTIuNTJsMy41Ni0zLjU1YzEuMDcuMzMgMi41MS0uNDggMi41MS0xLjkzIDAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSA5IC45NC0yLjA3TDE4IDZsLTIuMDYtLjkzTDE1IDNsLS45MiAyLjA3TDEyIDZsMi4wOC45M3pNMy41IDExIDQgOWwyLS41TDQgOGwtLjUtMkwzIDhsLTIgLjVMMyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnZlbnRvcnkyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xIDAtMiAuOS0yIDJ2My4wMWMwIC43Mi40MyAxLjM0IDEgMS42OVYyMGMwIDEuMSAxLjEgMiAyIDJoMTRjLjkgMCAyLS45IDItMlY4LjdjLjU3LS4zNSAxLS45NyAxLTEuNjlWNGMwLTEuMS0xLTItMi0yem0tNSAxMkg5di0yaDZ2MnptNS03SDRWNGgxNnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnZlbnRvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMSAwLTIgLjktMiAydjMuMDFjMCAuNzIuNDMgMS4zNCAxIDEuNjlWMjBjMCAxLjEgMS4xIDIgMiAyaDE0Yy45IDAgMi0uOSAyLTJWOC43Yy41Ny0uMzUgMS0uOTcgMS0xLjY5VjRjMC0xLjEtMS0yLTItMnptLTUgMTJIOXYtMmg2djJ6bTUtN0g0VjRsMTYtLjAyVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpbmtPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDdoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjEgMCAxLjQzLS45OCAyLjYzLTIuMzEgMi45OGwxLjQ2IDEuNDZDMjAuODggMTUuNjEgMjIgMTMuOTUgMjIgMTJjMC0yLjc2LTIuMjQtNS01LTV6bS0xIDRoLTIuMTlsMiAySDE2ek0yIDQuMjdsMy4xMSAzLjExQTQuOTkxIDQuOTkxIDAgMCAwIDIgMTJjMCAyLjc2IDIuMjQgNSA1IDVoNHYtMS45SDdjLTEuNzEgMC0zLjEtMS4zOS0zLjEtMy4xIDAtMS41OSAxLjIxLTIuOSAyLjc2LTMuMDdMOC43MyAxMUg4djJoMi43M0wxMyAxNS4yN1YxN2gxLjczbDQuMDEgNEwyMCAxOS43NCAzLjI3IDMgMiA0LjI3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDI0VjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb3dQcmlvcml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDVoOHYyaC04em0wIDUuNWg4djJoLTh6bTAgNS41aDh2MmgtOHpNMiAxMS41QzIgMTUuMDggNC45MiAxOCA4LjUgMThIOXYybDMtMy0zLTN2MmgtLjVDNi4wMiAxNiA0IDEzLjk4IDQgMTEuNVM2LjAyIDcgOC41IDdIMTJWNUg4LjVDNC45MiA1IDIgNy45MiAyIDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgNC04IDUtOC01VjZsOCA1IDgtNXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXJrdW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDQtOCA1LTgtNVY2bDggNSA4LTV2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92ZVRvSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINC45OWMtMS4xMSAwLTEuOTguOS0xLjk4IDJMMyAxOWMwIDEuMS44OCAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEyaC00YzAgMS42Ni0xLjM1IDMtMyAzcy0zLTEuMzQtMy0zSDQuOTlWNUgxOXYxMHptLTMtNWgtMlY3aC00djNIOGw0IDQgNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXh0V2VlayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDdoLTRWNWMwLS41NS0uMjItMS4wNS0uNTktMS40MUMxNS4wNSAzLjIyIDE0LjU1IDMgMTQgM2gtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6bTEgMTMuNS0xLTEgMy0zLTMtMyAxLTEgNCA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZWRGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0xLTJINXYxN2gydi03aDVsMSAyaDdWNmgtNnptNCA4aC00bC0xLTJIN1Y2aDVsMSAyaDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9saWN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgNS05LTQtOSA0djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiAyLjMtLjU2IDQuMzMtMS45IDUuODgtMy43MWwtMy4xMi0zLjEyYTQuOTk0IDQuOTk0IDAgMCAxLTYuMjktLjY0IDUuMDAzIDUuMDAzIDAgMCAxIDAtNy4wNyA1LjAwMyA1LjAwMyAwIDAgMSA3LjA3IDAgNS4wMDYgNS4wMDYgMCAwIDEgLjY0IDYuMjlsMi45IDIuOUMyMC4yOSAxNS42OSAyMSAxMy4zOCAyMSAxMVY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHVzaFBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNiA5VjRoMWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDF2NWMwIDEuNjYtMS4zNCAzLTMgM3YyaDUuOTd2N2wxIDEgMS0xdi03SDE5di0yYy0xLjY2IDAtMy0xLjM0LTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVkbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZhOC4wMDIgOC4wMDIgMCAwIDEgNy42LTUuNWMxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmVDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMXYyaDEwdi0ySDd6bTUtOUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFIN3YtMmgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM0g1di0yaDE0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcGx5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA4VjVsLTcgNyA3IDd2LTNsLTQtNCA0LTR6bTYgMVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDlWNWwtNyA3IDcgN3YtNC4xYzUgMCA4LjUgMS42IDExIDUuMS0xLTUtNC0xMC0xMS0xMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwb3J0R21haWxlcnJvcnJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjczIDNIOC4yN0wzIDguMjd2Ny40Nkw4LjI3IDIxaDcuNDZMMjEgMTUuNzNWOC4yN0wxNS43MyAzek0xOSAxNC45IDE0LjkgMTlIOS4xTDUgMTQuOVY5LjFMOS4xIDVoNS44TDE5IDkuMXY1Ljh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnY2aC0yek0xMSAxNWgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcG9ydE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnYyLjkybDYuOTEgNi45MSAxLjA5LTEuMVY4LjI3TDE1LjczIDNIOC4yN0w3LjE4IDQuMSAxMSA3Ljkyem0xMS4yNyAxNC43My0yMC0yMC4wMUwxIDIuOTlsMy42NCAzLjY0TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NmwxLjY0LTEuNjNMMjEgMjNsMS4yNy0xLjI3ek0xMiAxNy4zYy0uNzIgMC0xLjMtLjU4LTEuMy0xLjNzLjU4LTEuMyAxLjMtMS4zIDEuMy41OCAxLjMgMS4zLS41OCAxLjMtMS4zIDEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzMgM0g4LjI3TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NkwyMSAxNS43M1Y4LjI3TDE1LjczIDN6TTEyIDE3LjNjLS43MiAwLTEuMy0uNTgtMS4zLTEuMyAwLS43Mi41OC0xLjMgMS4zLTEuMy43MiAwIDEuMy41OCAxLjMgMS4zIDAgLjcyLS41OCAxLjMtMS4zIDEuM3ptMS00LjNoLTJWN2gydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhdmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMnY3SDV2LTdIM3Y3YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ6bS02IC42NyAyLjU5LTIuNThMMTcgMTEuNWwtNSA1LTUtNSAxLjQxLTEuNDFMMTEgMTIuNjdWM2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXZlQXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMi40VjdsLTQtNEg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg3LjRsOC42LTguNnpNMTUgMTVjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzek02IDZoOXY0SDZWNnptMTMuOTkgMTAuMjUgMS43NyAxLjc3TDE2Ljc3IDIzSDE1di0xLjc3bDQuOTktNC45OHptMy4yNi4yNi0uODUuODUtMS43Ny0xLjc3Ljg1LS44NWMuMi0uMi41MS0uMi43MSAwbDEuMDYgMS4wNmMuMi4yLjIuNTIgMCAuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWxlY3RBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6TTcgMTdoMTBWN0g3djEwem0yLThoNnY2SDlWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuMDEgMjEgMjMgMTIgMi4wMSAzIDIgMTBsMTUgMi0xNSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU29ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMThoNnYtMkgzdjJ6TTMgNnYyaDE4VjZIM3ptMCA3aDEydi0ySDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3F1YXJlRm9vdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjY2IDE3LjY2LTEuMDYgMS4wNi0uNzEtLjcxIDEuMDYtMS4wNi0xLjk0LTEuOTQtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMOS43IDkuN2wtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMNCA0djE0YzAgMS4xLjkgMiAyIDJoMTRsLTIuMzQtMi4zNHpNNyAxN3YtNS43NkwxMi43NiAxN0g3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFja2VkQmFyQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloNHYxMUg0ek00IDRoNHY0SDR6TTEwIDdoNHY0aC00ek0xNiAxMGg0djRoLTR6TTE2IDE1aDR2NWgtNHpNMTAgMTJoNHY4aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjIwXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI0XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjIwXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA1IDguNTkgNi4wMyA0LjU1aC0uMDFsLS4zMS0uMzItMS40MiAxLjQxIDQuMDIgNC4wNS4wMS0uMDEuMzEuMzJ6bTMuODkzLjAyNyA0LjQwNS00LjM5MkwxOS43NiA1LjY0bC00LjQwNSA0LjM5M3pNMTAuMDEgMTUuMzZsLTEuNDItMS40MS00LjAzIDQuMDEtLjMyLjMzIDEuNDEgMS40MSA0LjAzLTQuMDJ6bTkuNzUgMi45NC0zLjk5LTQuMDEtLjM2LS4zNUwxNCAxNS4zNWwzLjk5IDQuMDEuMzUuMzV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTBWOGgtNFY0aC0ydjRoLTRWNEg4djRINHYyaDR2NEg0djJoNHY0aDJ2LTRoNHY0aDJ2LTRoNHYtMmgtNHYtNGg0em0tNiA0aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dEZvcm1hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTd2MmgxNHYtMkg1em00LjUtNC4yaDVsLjkgMi4yaDIuMUwxMi43NSA0aC0xLjVMNi41IDE1aDIuMWwuOS0yLjJ6TTEyIDUuOTggMTMuODcgMTFoLTMuNzRMMTIgNS45OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5hcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNTUgNS4yMi0xLjM5LTEuNjhBMS41MSAxLjUxIDAgMCAwIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTUuNTVMMy40NiA1LjIyQzMuMTcgNS41NyAzIDYuMDEgMyA2LjVWMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDktLjE3LS45My0uNDUtMS4yOHpNMTIgOS41bDUuNSA1LjVIMTR2MmgtNHYtMkg2LjVMMTIgOS41ek01LjEyIDVsLjgyLTFoMTJsLjkzIDFINS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5kbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGNvbWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjE2IDcuMjYtMS40MS0xLjQxLTMuNTYgMy41NSAxLjQxIDEuNDFzMy40NS0zLjUyIDMuNTYtMy41NXpNMTEgM2gydjVoLTJ6TTYuNCAxMC44MSA3LjgxIDkuNCA0LjI2IDUuODQgMi44NCA3LjI2Yy4xMS4wMyAzLjU2IDMuNTUgMy41NiAzLjU1ek0yMCAxMmgtNWMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtM0g0Yy0xLjEgMC0yIC45LTIgMnY1YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhdmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNi45OWMtMS4zNSAwLTIuMi40Mi0yLjk1LjgtLjY1LjMzLTEuMTguNi0yLjA1LjYtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjU3LS44LTIuOTUtLjhzLTIuMi40Mi0yLjk1LjhjLS42NS4zMy0xLjE3LjYtMi4wNS42djEuOTVjMS4zNSAwIDIuMi0uNDIgMi45NS0uOC42NS0uMzMgMS4xNy0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MiAyLjk1LS44Yy42NS0uMzMgMS4xOC0uNiAyLjA1LS42LjkgMCAxLjQuMjUgMi4wNS42Ljc1LjM4IDEuNTguOCAyLjk1Ljh2LTEuOTVjLS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzgtMS42LS44LTIuOTUtLjh6bTAtNC40NWMtMS4zNSAwLTIuMi40My0yLjk1LjgtLjY1LjMyLTEuMTguNi0yLjA1LjYtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjU3LS44LTIuOTUtLjhzLTIuMi40My0yLjk1LjhjLS42NS4zMi0xLjE3LjYtMi4wNS42djEuOTVjMS4zNSAwIDIuMi0uNDMgMi45NS0uOC42NS0uMzUgMS4xNS0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MyAyLjk1LS44Yy42NS0uMzUgMS4xNS0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTguOCAyLjk1Ljh2LTEuOTVjLS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzgtMS42LS44LTIuOTUtLjh6bTIuOTUtOC4wOGMtLjc1LS4zOC0xLjU4LS44LTIuOTUtLjhzLTIuMi40Mi0yLjk1LjhjLS42NS4zMi0xLjE4LjYtMi4wNS42LS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzctMS41Ny0uOC0yLjk1LS44cy0yLjIuNDItMi45NS44Yy0uNjUuMzMtMS4xNy42LTIuMDUuNnYxLjkzYzEuMzUgMCAyLjItLjQzIDIuOTUtLjguNjUtLjMzIDEuMTctLjYgMi4wNS0uNnMxLjQuMjUgMi4wNS42Yy43NS4zOCAxLjU3LjggMi45NS44czIuMi0uNDMgMi45NS0uOGMuNjUtLjMyIDEuMTgtLjYgMi4wNS0uNi45IDAgMS40LjI1IDIuMDUuNi43NS4zOCAxLjU4LjggMi45NS44VjUuMDRjLS45IDAtMS40LS4yNS0yLjA1LS41OHpNMTcgOC4wOWMtMS4zNSAwLTIuMi40My0yLjk1LjgtLjY1LjM1LTEuMTUuNi0yLjA1LjZzLTEuNC0uMjUtMi4wNS0uNmMtLjc1LS4zOC0xLjU3LS44LTIuOTUtLjhzLTIuMi40My0yLjk1LjhjLS42NS4zNS0xLjE1LjYtMi4wNS42djEuOTVjMS4zNSAwIDIuMi0uNDMgMi45NS0uOC42NS0uMzIgMS4xOC0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MyAyLjk1LS44Yy42NS0uMzIgMS4xOC0uNiAyLjA1LS42LjkgMCAxLjQuMjUgMi4wNS42Ljc1LjM4IDEuNTguOCAyLjk1LjhWOS40OWMtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjYtLjgtMi45NS0uOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2ViU3RvcmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDRjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJWNHpNMiAyMGMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxNnptMTktMmMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTljMC0uODMtLjY3LTEuNS0xLjUtMS41djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXZWVrZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBjLTEuMSAwLTIgLjktMiAydjNINXYtM2EyIDIgMCAxIDAtNCAwdjVjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtNWMwLTEuMS0uOS0yLTItMnptLTMtNUg2Yy0xLjEgMC0yIC45LTIgMnYyLjE1YzEuMTYuNDEgMiAxLjUyIDIgMi44MVYxNGgxMnYtMi4wM2MwLTEuMy44NC0yLjQgMi0yLjgxVjdjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdoZXJlVG9Wb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzMuODYgMCA3IDMuMTQgNyA3IDAgNS4yNS03IDEzLTcgMTNTNSAxNC4yNSA1IDljMC0zLjg2IDMuMTQtNyA3LTd6bS0xLjUzIDEyTDE3IDcuNDEgMTUuNiA2bC01LjEzIDUuMThMOC40IDkuMDkgNyAxMC41bDMuNDcgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxeE1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgN2g0djEwSDZWOUg0Vjd6bTExLjgzIDQuNzJMMTguNjYgN2gtMi4zM2wtMS42NiAyLjc3TDEzIDdoLTIuMzNsMi44MyA0LjcyTDEwLjMzIDE3aDIuMzNsMi0zLjM0IDIgMy4zNEgxOWwtMy4xNy01LjI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzMEZwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA1djNoNnYyLjVIM3YzaDVWMTZIMnYzaDZjMS42NiAwIDMtMS4zNCAzLTN2LTEuOUEyLjEgMi4xIDAgMCAwIDguOSAxMiAyLjEgMi4xIDAgMCAwIDExIDkuOVY4YzAtMS42Ni0xLjM0LTMtMy0zSDJ6bTE3IDN2OGgtNFY4aDRtMC0zaC00Yy0xLjY2IDAtMyAxLjM0LTMgM3Y4YzAgMS42NiAxLjM0IDMgMyAzaDRjMS42NiAwIDMtMS4zNCAzLTNWOGMwLTEuNjYtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kM2dNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDd2Mmg1djJINHYyaDR2MkgzdjJoNWMxLjEgMCAyLS45IDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY5YzAtMS4xLS45LTItMi0ySDN6bTE4IDR2NGMwIDEuMS0uOSAyLTIgMmgtNWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDVjMS4xIDAgMiAuOSAyIDJoLTd2Nmg1di0yaC0yLjV2LTJIMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDRnTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA3SDd2NUg1VjdIM3Y3aDR2M2gydi0zaDJ2LTJIOVY3em04IDR2MmgydjJoLTVWOWg3YzAtMS4xLS45LTItMi0yaC01Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNGdQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTF2MmgydjJoLTRWOWg2YzAtMS4xLS45LTItMi0yaC00Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNGMxLjEgMCAyLS45IDItMnYtNGgtNHptMTEgMGgtMlY5aC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yek03IDdINXY1SDNWN0gxdjdoNHYzaDJ2LTNoMXYtMkg3Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDYwRnBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4djhoLTRWOGg0bTAtM2gtNGMtMS42NiAwLTMgMS4zNC0zIDN2OGMwIDEuNjYgMS4zNCAzIDMgM2g0YzEuNjYgMCAzLTEuMzQgMy0zVjhjMC0xLjY2LTEuMzQtMy0zLTN6bS05IDNWNUg1QzMuMzQgNSAyIDYuMzQgMiA4djhjMCAxLjY2IDEuMzQgMyAzIDNoM2MxLjY2IDAgMy0xLjM0IDMtM3YtM2MwLTEuNjYtMS4zNC0zLTMtM0g1VjhoNXptLTIgNXYzSDV2LTNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjZXNzQWxhcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA1LjcyLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyLjUgOEgxMXY2bDQuNzUgMi44NS43NS0xLjIzLTQtMi4zN1Y4ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjZXNzQWxhcm1zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0tNjE4LTU2OEg3ODJ2MzYwMEgtNjE4ek0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43LTQuNi0zLjktMS4zIDEuNSA0LjYgMy45TDIyIDUuN3pNNy45IDMuNCA2LjYgMS45IDIgNS43bDEuMyAxLjUgNC42LTMuOHpNMTIuNSA4SDExdjZsNC43IDIuOS44LTEuMi00LTIuNFY4ek0xMiA0Yy01IDAtOSA0LTkgOXM0IDkgOSA5IDktNCA5LTktNC05LTktOXptMCAxNmMtMy45IDAtNy0zLjEtNy03czMuMS03IDctNyA3IDMuMSA3IDctMy4xIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NUaW1lRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem0zLjMgMTQuNzFMMTEgMTIuNDFWN2gydjQuNTlsMy43MSAzLjcxLTEuNDIgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjZXNzVGltZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkVW5pdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxOEg3VjVoMTB2MTR6TTggNmg4djJIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQWxhcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptMS0xMWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFRvSG9tZVNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMS4wMSA4IDFjLTEuMSAwLTIgLjktMiAydjNoMlY1aDEwdjE0SDh2LTFINnYzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTAgMTVoMlY4SDV2MmgzLjU5TDMgMTUuNTkgNC40MSAxNyAxMCAxMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDE3YzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zaDJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMUgydi0yaDkuNWMxLjY1IDAgMyAxLjM1IDMgM3pNMTkgNi41QzE5IDQuNTcgMTcuNDMgMyAxNS41IDNTMTIgNC41NyAxMiA2LjVoMmMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVMxNi4zMyA4IDE1LjUgOEgydjJoMTMuNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNXptLS41IDQuNUgydjJoMTYuNWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41djJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMjAuNDMgMTEgMTguNSAxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlycGxhbmVUaWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjE5IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMnY0YzEuMSAwIDEuOTkuOSAxLjk5IDJzLS44OSAyLTIgMnY0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uODEtMi0xLjgxLTJ6bS0yLjQ2IDkuMy04Ljg2IDIuMzYtMS42Ni0yLjg4LjkzLS4yNSAxLjI2Ljk5IDIuMzktLjY0LTIuNC00LjE2IDEuNC0uMzggNC4wMSAzLjc0IDIuNDQtLjY1YS45NjcuOTY3IDAgMCAxIDEuMTguNjguOTg4Ljk4OCAwIDAgMS0uNjkgMS4xOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlycGxhbmVtb2RlQWN0aXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtMmwtOC41LTVWMy41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjVWOUwyIDE0djJsOC41LTIuNVYxOUw4IDIwLjVWMjJsNC0xIDQgMXYtMS41TDEzLjUgMTl2LTUuNUwyMiAxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlycGxhbmVtb2RlSW5hY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUgNy42N1YzLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWOWw4LjUgNXYybC00LjQ5LTEuMzItNy4wMS03LjAxem05LjI4IDE0Ljk0IDEuNDEtMS40MS03LjY5LTcuNy0zLjk0LTMuOTQtNi43NS02Ljc1LTEuNDIgMS40MSA2LjM4IDYuMzhMMiAxNHYybDguNS0yLjVWMTlMOCAyMC41VjIybDQtMSA0IDF2LTEuNUwxMy41IDE5di0yLjY3bDYuMjggNi4yOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQW9kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOEg3VjZoMTB2MTJ6bS05LThoOHYxLjVIOFYxMHptMSAzaDZ2MS41SDlWMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnkwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djE0aDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTJoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5MkJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXYxMGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnkzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djhoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5NEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXY2aDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTVCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2NGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnk2QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djJoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5QWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpNMTMgMThoLTJ2LTJoMnYyem0wLTRoLTJWOWgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZ0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpNMTEgMjB2LTUuNUg5TDEzIDd2NS41aDJMMTEgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlTYXZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMlYyaC00djJIOGMtLjU1IDAtMSAuNDUtMSAxdjE2YzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xVjVjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMGgtMnYyaC0ydi0ySDl2LTJoMnYtMmgydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5U3RkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlVbmtub3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6bS0yLjcyIDEzLjk1aC0xLjl2LTEuOWgxLjl2MS45em0xLjM1LTUuMjZzLS4zOC40Mi0uNjcuNzFjLS40OC40OC0uODMgMS4xNS0uODMgMS42aC0xLjZjMC0uODMuNDYtMS41Mi45My0ybC45My0uOTRBMS40OTggMS40OTggMCAwIDAgMTIgOS41Yy0uODMgMC0xLjUuNjctMS41IDEuNUg5YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDNjMCAuNjYtLjI3IDEuMjYtLjcgMS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmxvb2R0eXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy01LjMzIDQuNTUtOCA4LjQ4LTggMTEuOCAwIDQuOTggMy44IDguMiA4IDguMnM4LTMuMjIgOC04LjJjMC0zLjMyLTIuNjctNy4yNS04LTExLjh6bTMgMTZIOXYtMmg2djJ6bTAtNWgtMnYyaC0ydi0ySDl2LTJoMlY5aDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsdWV0b290aENvbm5lY3RlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcgMTItMi0yLTIgMiAyIDIgMi0yem0xMC43MS00LjI5TDEyIDJoLTF2Ny41OUw2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgNS44M2wxLjg4IDEuODhMMTMgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDEzIDE4LjE3di0zLjc2bDEuODggMS44OHpNMTkgMTBsLTIgMiAyIDIgMi0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ZXRvb3RoRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA1LjgzIDEuODggMS44OC0xLjYgMS42IDEuNDEgMS40MSAzLjAyLTMuMDJMMTIgMmgtMXY1LjAzbDIgMnYtMy4yek01LjQxIDQgNCA1LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDQuMjktNC4yOSAyLjMgMi4yOUwyMCAxOC41OSA1LjQxIDR6TTEzIDE4LjE3di0zLjc2bDEuODggMS44OEwxMyAxOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ZXRvb3RoRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEwSDQuODFsMS4wNC0zSDE1VjVINS41Yy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwyIDEydjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGgtM2MtMS4xIDAtMi0uOS0yLTJ6bS04LjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTMgNi41IDEzczEuNS42NyAxLjUgMS41UzcuMzMgMTYgNi41IDE2em05IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzLjg1IDE5LjE1IDFoLS41djMuNzlsLTIuMy0yLjI5LS43LjdMMTguNDQgNmwtMi43OSAyLjc5LjcuNzEgMi4zLTIuM1YxMWguNUwyMiA4LjE0IDE5Ljg1IDYgMjIgMy44NXptLTIuMzUtLjk0Ljk0Ljk0LS45NC45NFYyLjkxem0uOTQgNS4yMy0uOTQuOTRWNy4ybC45NC45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ZXRvb3RoU2VhcmNoaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMjQgMTIuMDEgMi4zMiAyLjMyYy4yOC0uNzIuNDQtMS41MS40NC0yLjMzIDAtLjgyLS4xNi0xLjU5LS40My0yLjMxbC0yLjMzIDIuMzJ6bTUuMjktNS4zLTEuMjYgMS4yNmMuNjMgMS4yMS45OCAyLjU3Ljk4IDQuMDJzLS4zNiAyLjgyLS45OCA0LjAybDEuMiAxLjJhOS45MzYgOS45MzYgMCAwIDAgMS41NC01LjMxYy0uMDEtMS44OS0uNTUtMy42Ny0xLjQ4LTUuMTl6bS0zLjgyIDFMMTAgMkg5djcuNTlMNC40MSA1IDMgNi40MSA4LjU5IDEyIDMgMTcuNTkgNC40MSAxOSA5IDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMSA1LjgzbDEuODggMS44OEwxMSA5LjU5VjUuODN6bTEuODggMTAuNDZMMTEgMTguMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy43MSA3LjcxIDEyIDJoLTF2Ny41OUw2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgNS44M2wxLjg4IDEuODhMMTMgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDEzIDE4LjE3di0zLjc2bDEuODggMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJpZ2h0bmVzc0F1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44NSAxMi42NWgyLjNMMTIgOWwtMS4xNSAzLjY1ek0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5ek0xNC4zIDE2bC0uNy0yaC0zLjJsLS43IDJINy44TDExIDdoMmwzLjIgOWgtMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzSGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMC0xMGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3NMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS4zMSAyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzTWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuMzEgMjMuMzEgMTIgMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjl6TTEyIDE4VjZjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1VjRjMC0uNTUtLjQ1LTEtMS0xaC0yYy0uNTUgMC0xIC40NS0xIDF2MWgtMXY0YzAgLjU1LjQ1IDEgMSAxaDF2N2MwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWN2MwLTIuMjEtMS43OS00LTQtNFM1IDQuNzkgNSA3djdINGMtLjU1IDAtMSAuNDUtMSAxdjRoMXYxYzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi0xaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDdWN2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjEwYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTR2LTdoMWMuNTUgMCAxLS40NSAxLTFWNWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhc3dpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3aC0xbC0xLTFoLTRMOSA3SDhjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bS00IDdjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjU3LjUxIDQuNDggNC40OFYyLjA0YzQuNzIuNDcgOC40OCA0LjIzIDguOTUgOC45NWgyQzIzLjM0IDMuMDIgMTUuNDktMS41OSA4LjU3LjUxek0xMC45NSAyMS45NmMtNC43Mi0uNDctOC40OC00LjIzLTguOTUtOC45NUgwYy42NiA3Ljk3IDguNTEgMTIuNTggMTUuNDMgMTAuNDhsLTQuNDgtNC40OHYyLjk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcmVkaXRTY29yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoNXYtMkg0di02aDE4VjZjMC0xLjExLS44OS0yLTItMnptMCA0SDRWNmgxNnYyem0tNS4wNyAxMS4xNy0yLjgzLTIuODMtMS40MSAxLjQxTDE0LjkzIDIyIDIyIDE0LjkzbC0xLjQxLTEuNDEtNS42NiA1LjY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXJrTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNhOSA5IDAgMSAwIDkgOWMwLS40Ni0uMDQtLjkyLS4xLTEuMzZhNS4zODkgNS4zODkgMCAwIDEtNC40IDIuMjYgNS40MDMgNS40MDMgMCAwIDEtMy4xNC05LjhjLS40NC0uMDYtLjktLjEtMS4zNi0uMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YVNhdmVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyLjA1djMuMDNjMy4zOS40OSA2IDMuMzkgNiA2LjkyIDAgLjktLjE4IDEuNzUtLjQ4IDIuNTRsMi42IDEuNTNjLjU2LTEuMjQuODgtMi42Mi44OC00LjA3IDAtNS4xOC0zLjk1LTkuNDUtOS05Ljk1ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTcgMC0zLjUzIDIuNjEtNi40MyA2LTYuOTJWMi4wNWMtNS4wNi41LTkgNC43Ni05IDkuOTUgMCA1LjUyIDQuNDcgMTAgOS45OSAxMCAzLjMxIDAgNi4yNC0xLjYxIDguMDYtNC4wOWwtMi42LTEuNTNBNi45NSA2Ljk1IDAgMCAxIDEyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRhU2F2ZXJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOHYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zVjhoLTJ6bTItNS45NXYzLjAzYzMuMzkuNDkgNiAzLjM5IDYgNi45MiAwIC45LS4xOCAxLjc1LS40OCAyLjU0bDIuNiAxLjUzYy41Ni0xLjI0Ljg4LTIuNjIuODgtNC4wNyAwLTUuMTgtMy45NS05LjQ1LTktOS45NXpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03IDAtMy41MyAyLjYxLTYuNDMgNi02LjkyVjIuMDVjLTUuMDYuNS05IDQuNzYtOSA5Ljk1IDAgNS41MiA0LjQ3IDEwIDkuOTkgMTAgMy4zMSAwIDYuMjQtMS42MSA4LjA2LTQuMDlsLTIuNi0xLjUzQTYuOTUgNi45NSAwIDAgMSAxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YVVzYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMi4wNXYzLjAzYzMuMzkuNDkgNiAzLjM5IDYgNi45MiAwIC45LS4xOCAxLjc1LS40OCAyLjU0bDIuNiAxLjUzYy41Ni0xLjI0Ljg4LTIuNjIuODgtNC4wNyAwLTUuMTgtMy45NS05LjQ1LTktOS45NXpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03IDAtMy41MyAyLjYxLTYuNDMgNi02LjkyVjIuMDVjLTUuMDYuNS05IDQuNzYtOSA5Ljk1IDAgNS41MiA0LjQ3IDEwIDkuOTkgMTAgMy4zMSAwIDYuMjQtMS42MSA4LjA2LTQuMDlsLTIuNi0xLjUzQTYuOTUgNi45NSAwIDAgMSAxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YXNldExpbmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMDkgMTdIN3YtNGgzLjY5Yy45NS0uNjMgMi4wOS0xIDMuMzEtMWg2Yy4zNCAwIC42Ny4wNCAxIC4wOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMy44MUM4LjMgMjAuMTIgOCAxOS4wOSA4IDE4YzAtLjM0LjA0LS42Ny4wOS0xek0xMyA3aDR2NGgtNFY3ek03IDdoNHY0SDdWN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMThjMC0xLjEuOS0yIDItMmgydi0yaC0yYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0aDJ2LTJoLTJjLTEuMSAwLTItLjktMi0yek0yMCAxNGgtMnYyaDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyaC0ydjJoMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTdoNnYyaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRhc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDE0SDd2LTRoNHY0em0wLTZIN1Y3aDR2NHptNiA2aC00di00aDR2NHptMC02aC00VjdoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZlbG9wZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1aDEwdjJoMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5TDcgMWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTguNDEgMTEuNTlMMjAgMTJsLTQuNTktNC41OUwxNCA4LjgzIDE3LjE3IDEyIDE0IDE1LjE3bDEuNDEgMS40MnpNMTAgMTUuMTcgNi44MyAxMiAxMCA4LjgzIDguNTkgNy40MSA0IDEybDQuNTkgNC41OUwxMCAxNS4xN3pNMTcgMTlIN3YtMkg1djRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNGgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZpY2VUaGVybW9zdGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djhjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wOS0yLTR6bS00LThjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxaC0xdjFoMXYyaC0xdjFoMXYyaC0yVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmljZXNGb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM2gtM2MwLTEuNDMtMS40Ny0yLjQtMi43OS0xLjg0bC0zIDEuMjlDMTAuNDggMi43NiAxMCAzLjQ5IDEwIDQuMjlWMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTUuMzNsMS4xMi0uNDhjLjczLS4zMiAxLjIxLTEuMDQgMS4yMS0xLjg0VjVoM3YxNHpNMiAzaDJ2Mkgyek0yIDE5aDJ2Mkgyek0yIDE1aDJ2Mkgyek0yIDExaDJ2Mkgyek0yIDdoMnYySDJ6TTYgM2gydjJINnpNNiAxOWgydjJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxOFY0SDRjLTEuMSAwLTIgLjktMiAydjExSDB2M2gxNHYtM0g0VjZ6bTE5IDJoLTZjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXptLTEgOWgtNHYtN2g0djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpc2NvdW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNzkgMjEgMyAxMS4yMXYyYzAgLjUzLjIxIDEuMDQuNTkgMS40MWw3Ljc5IDcuNzljLjc4Ljc4IDIuMDUuNzggMi44MyAwbDYuMjEtNi4yMWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDEyLjc5IDIxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4zOCAxNy40MWMuNzguNzggMi4wNS43OCAyLjgzIDBsNi4yMS02LjIxYy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTIuNjMuNThBMi4wNCAyLjA0IDAgMCAwIDExLjIxIDBINUMzLjkgMCAzIC45IDMgMnY2LjIxYzAgLjUzLjIxIDEuMDQuNTkgMS40MWw3Ljc5IDcuNzl6TTcuMjUgM2ExLjI1IDEuMjUgMCAxIDEgMCAyLjUgMS4yNSAxLjI1IDAgMCAxIDAtMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdERpc3R1cmJPblRvdGFsU2lsZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTMuMyAwLTYgMi43LTYgNnMyLjcgNiA2IDYgNi0yLjcgNi02LTIuNi02LTYtNnptMyA3SDl2LTJoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREdnIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNXYyaDh2LTJoNWMxLjEgMCAxLjk5LS45IDEuOTktMkwyMyA1YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNWgxOHYxMnptLTItOUg4djJoMTFWOHptMCA0SDh2MmgxMXYtMnpNNyA4SDV2MmgyVjh6bTAgNEg1djJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRU1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDlWN0g4djEwaDh2LTJoLTZ2LTJoNnYtMmgtNlY5aDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkZ2VzZW5zb3JIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDdoMnY3SDNWN3ptLTMgM2gydjdIMHYtN3ptMjItM2gydjdoLTJWN3ptLTMgM2gydjdoLTJ2LTd6bS0zLTcuOTlMOCAyYy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMTdIOFY3aDh2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkZ2VzZW5zb3JMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgN2gydjdIMlY3em0xOCAzaDJ2N2gtMnYtN3ptLTQtNy45OUw4IDJjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNiAxN0g4VjdoOHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhc2hsaWdodE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNVYySDZ2MS4xN0w3LjgzIDV6TTE2IDExbDItM1Y3SDkuODNMMTYgMTMuMTd6TTIuODEgMi44MSAxLjM5IDQuMjIgOCAxMC44M1YyMmg4di0zLjE3bDMuNzggMy43OCAxLjQxLTEuNDFMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFzaGxpZ2h0T24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMmgxMnYzSDZ6TTYgN3YxbDIgM3YxMWg4VjExbDItM1Y3SDZ6bTYgOC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxvdXJlc2NlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgOWgxNHY2SDV6TTExIDJoMnYzaC0yek0xNy4yODYgNi4zOTlsMS43OS0xLjgwMyAxLjQyIDEuNDEtMS43OSAxLjgwMnpNMTEgMTloMnYzaC0yek0xNy4yOSAxNy43MWwxLjc5IDEuOCAxLjQyLTEuNDItMS44LTEuNzl6TTMuNDk1IDYuMDFsMS40MDctMS40MDhMNi42OSA2LjM5MSA1LjI4NCA3Ljc5OHpNMy40OTIgMTguMDc2bDEuODAzLTEuNzkgMS40MDkgMS40Mi0xLjgwMyAxLjc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbHVvcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA5aDE0djZINXpNMTEgMmgydjNoLTJ6TTE3LjI4NiA2LjM5OWwxLjc5LTEuODAzIDEuNDIgMS40MS0xLjc5IDEuODAyek0xMSAxOWgydjNoLTJ6TTE3LjI5IDE3LjcxbDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNMy40OTUgNi4wMWwxLjQwNy0xLjQwOEw2LjY5IDYuMzkxIDUuMjg0IDcuNzk4ek0zLjQ5MiAxOC4wNzZsMS44MDMtMS43OSAxLjQwOSAxLjQyLTEuODAzIDEuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZtZEJhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC4yIDAtOCAzLjIyLTggOC4yIDAgMy4zMiAyLjY3IDcuMjUgOCAxMS44IDUuMzMtNC41NSA4LTguNDggOC0xMS44QzIwIDUuMjIgMTYuMiAyIDEyIDJ6bTEgMTNoLTJ2LTJoMnYyem0wLTRoLTJWNmgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZtZEdvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuMiAwLTggMy4yMi04IDguMiAwIDMuMzIgMi42NyA3LjI1IDggMTEuOCA1LjMzLTQuNTUgOC04LjQ4IDgtMTEuOEMyMCA1LjIyIDE2LjIgMiAxMiAyem0wIDEwYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR01vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExdjJoMnYySDlWOWg3YzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg1YzEuMSAwIDItLjkgMi0ydi00aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcHBCYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6bTMuNSAxMi4wOS0xLjQxIDEuNDFMMTIgMTMuNDIgOS45MSAxNS41IDguNSAxNC4wOSAxMC41OSAxMiA4LjUgOS45MSA5LjkxIDguNSAxMiAxMC41OWwyLjA5LTIuMDkgMS40MSAxLjQxTDEzLjQyIDEybDIuMDggMi4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3BwR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptLTEuMDYgMTMuNTRMNy40IDEybDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0IDEuNDEgMS40MS01LjY0IDUuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdwcE1heWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem0xIDE0aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcHNGaXhlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em04Ljk0IDNBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdwc05vdEZpeGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTQgMTFBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdwc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDExQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2Yy0xLjEzLjEyLTIuMTkuNDYtMy4xNi45N2wxLjUgMS41QTYuOTk1IDYuOTk1IDAgMCAxIDE5IDEyYzAgLjk0LS4xOSAxLjg0LS41MiAyLjY1bDEuNSAxLjVjLjUtLjk2Ljg0LTIuMDIuOTctMy4xNUgyM3YtMmgtMi4wNnpNMyA0LjI3bDIuMDQgMi4wNEE4LjkxNCA4LjkxNCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZjMS43Ny0uMiAzLjM4LS45MSA0LjY5LTEuOThMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzIDMgNC4yN3ptMTMuMjcgMTMuMjdhNi45OTUgNi45OTUgMCAwIDEtOS44MS05LjgxbDkuODEgOS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JhcGhpY0VxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGgyVjZIN3YxMnptNCA0aDJWMmgtMnYyMHptLTgtOGgydi00SDN2NHptMTIgNGgyVjZoLTJ2MTJ6bTQtOHY0aDJ2LTRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyaWQzWDMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwVjhoLTRWNGgtMnY0aC00VjRIOHY0SDR2Mmg0djRINHYyaDR2NGgydi00aDR2NGgydi00aDR2LTJoLTR2LTRoNHptLTYgNGgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyaWQ0WDQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDdWNWgtM1YyaC0ydjNoLTRWMmgtMnYzSDdWMkg1djNIMnYyaDN2NEgydjJoM3Y0SDJ2MmgzdjNoMnYtM2g0djNoMnYtM2g0djNoMnYtM2gzdi0yaC0zdi00aDN2LTJoLTNWN2gzek03IDdoNHY0SDdWN3ptMCAxMHYtNGg0djRIN3ptMTAgMGgtNHYtNGg0djR6bTAtNmgtNFY3aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JpZEdvbGRlbnJhdGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5aC03VjJoLTJ2N2gtMlYySDl2N0gydjJoN3YySDJ2Mmg3djdoMnYtN2gydjdoMnYtN2g3di0yaC03di0yaDd6bS05IDJoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRITW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTFIOVY3SDd2MTBoMnYtNGg2djRoMlY3aC0ydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTFINlY3SDR2MTBoMnYtNGg2djRoMlY3aC0ydjR6bTEwIDBoLTJWOWgtMnYyaC0ydjJoMnYyaDJ2LTJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyQXV0b1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTZINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3pNMTYuNSAxNkgxM3Y2aDEuNXYtMmgxLjFsLjkgMkgxOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LTFjMC0uOC0uNy0xLjUtMS41LTEuNXptMCAyLjVoLTJ2LTFoMnYxek0zLjUgMThoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV6TTIyIDE4LjV2LTJoLTEuNXYyaC0yVjIwaDJ2MkgyMnYtMmgydi0xLjV6TTExLjk3IDUuM2wtMS4wMiAyLjg5aDIuMUwxMi4wMyA1LjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC42OSAyIDYgNC42OSA2IDhzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTIuMDQgOS0uNjMtMS43OWgtMi44M0w5Ljk2IDExSDguNzRsMi42My03aDEuMjVsMi42MyA3aC0xLjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wNCA4LjA0aC0uMDlsLTEuNiA0LjU1aDMuMjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTMuMjEgMTUtLjk4LTIuODFIOS43OGwtMSAyLjgxaC0xLjlsNC4xMy0xMWgxLjk3bDQuMTMgMTFoLTEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyT2ZmU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxOC41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTN2NmgxLjV2LTJoMS4xbC45IDJIMThsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV2MnptNi41LTJINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3ptMTQtLjVoLTJ2MmgtMS41di0yaC0ydi0xLjVoMnYtMkgyMnYyaDJWMjB6TTEwLjk4IDQuMTUgOS40MiAyLjU5YzUuMS0yLjQyIDEwLjQxIDIuODkgNy45OSA3Ljk5bC0xLjU2LTEuNTZjLjgxLTIuOTYtMS45MS01LjY4LTQuODctNC44N3pNNi4zNCAyLjM0IDQuOTMgMy43NmwxLjY2IDEuNjZjLTIuNDIgNS4xIDIuODkgMTAuNDEgNy45OSA3Ljk5bDEuNjYgMS42NiAxLjQxLTEuNDFMNi4zNCAyLjM0em0xLjgxIDQuNjQgNC44NyA0Ljg3Yy0yLjk2LjgxLTUuNjgtMS45MS00Ljg3LTQuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkck9uU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxOC41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTN2NmgxLjV2LTJoMS4xbC45IDJIMThsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV2MnptNi41LTJINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3ptMTQtLjVoLTJ2MmgtMS41di0yaC0ydi0xLjVoMnYtMkgyMnYyaDJWMjB6TTEyIDRjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDQtNC0xLjc5LTQtNCAxLjc5LTQgNC00bTAtMkM4LjY5IDIgNiA0LjY5IDYgOHMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMjJoOHYtN2gtM3YtNGgtNVY5aDNWMkg4djdoM3YySDZ2NEgzdjdoOHYtN0g4di0yaDh2MmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVuc0JsdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0tMyAuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xNSA1LjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtMy41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptLTExIDEwYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNyA3Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0xN2MuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEwIDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA1LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em04IC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLThjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC00Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMgOC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTQgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCAzLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tNC0xMmMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAgOC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTQtNC41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMC00Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGlnaHRNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6TTIgMTNoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUgyYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxem0xOCAwaDJjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTJjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF6TTExIDJ2MmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTFWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXptMCAxOHYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXpNNS45OSA0LjU4YS45OTYuOTk2IDAgMCAwLTEuNDEgMCAuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMS4wNiAxLjA2Yy4zOS4zOSAxLjAzLjM5IDEuNDEgMHMuMzktMS4wMyAwLTEuNDFMNS45OSA0LjU4em0xMi4zNyAxMi4zN2EuOTk2Ljk5NiAwIDAgMC0xLjQxIDAgLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDEuMDYgMS4wNmMuMzkuMzkgMS4wMy4zOSAxLjQxIDBhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0xLjA2LTEuMDZ6bTEuMDYtMTAuOTZhLjk5Ni45OTYgMCAwIDAgMC0xLjQxLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjA2IDEuMDZjLS4zOS4zOS0uMzkgMS4wMyAwIDEuNDFzMS4wMy4zOSAxLjQxIDBsMS4wNi0xLjA2ek03LjA1IDE4LjM2YS45OTYuOTk2IDAgMCAwIDAtMS40MS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS4wNiAxLjA2Yy0uMzkuMzktLjM5IDEuMDMgMCAxLjQxczEuMDMuMzkgMS40MSAwbDEuMDYtMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYXRpb25EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDExQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2Yy0xLjEzLjEyLTIuMTkuNDYtMy4xNi45N2wxLjUgMS41QTYuOTk1IDYuOTk1IDAgMCAxIDE5IDEyYzAgLjk0LS4xOSAxLjg0LS41MiAyLjY1bDEuNSAxLjVjLjUtLjk2Ljg0LTIuMDIuOTctMy4xNUgyM3YtMmgtMi4wNnpNMyA0LjI3bDIuMDQgMi4wNEE4LjkxNCA4LjkxNCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZjMS43Ny0uMiAzLjM4LS45MSA0LjY5LTEuOThMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzIDMgNC4yN3ptMTMuMjcgMTMuMjdhNi45OTUgNi45OTUgMCAwIDEtOS44MS05LjgxbDkuODEgOS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYXRpb25TZWFyY2hpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45NCAxMUE4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMjAuOTQgMTNIMjN2LTJoLTIuMDZ6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTHRlTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNGgzdjJINFY4aDJ2NnptMy00aDJ2Nmgydi02aDJWOEg5djJ6bTEyIDBWOGgtNXY4aDV2LTJoLTN2LTFoM3YtMmgtM3YtMWgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMdGVQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGgzdjJIMVY4aDJ2NnptMi00aDJ2Nmgydi02aDJWOEg1djJ6bTcgNmg1di0yaC0zdi0xaDN2LTJoLTN2LTFoM1Y4aC01djh6bTEyLTVoLTJWOWgtMnYyaC0ydjJoMnYyaDJ2LTJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFjcm9PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45OCAxNy4xNUE4LjkwOSA4LjkwOSAwIDAgMCAyMSAxM2MtMS41IDAtMi45MS4zNy00LjE1IDEuMDJsMy4xMyAzLjEzek0zIDEzYTkgOSAwIDAgMCA5IDkgOSA5IDAgMCAwLTktOXpNMTIgNS41QTIuNSAyLjUgMCAwIDEgMTQuNSA4YzAgLjk5LS41OCAxLjg0LTEuNDIgMi4yNWwyLjQ4IDIuNDhjLjExLjAyLjIzLjAzLjM1LjAzYTIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLTEtLjU5LTEuODUtMS40My0yLjI1Ljg0LS40IDEuNDMtMS4yNSAxLjQzLTIuMjVhMi41IDIuNSAwIDAgMC0zLjkyLTIuMDZsLjAxLS4yYTIuNSAyLjUgMCAwIDAtNSAwbC4wMi4xOWEyLjQ4NSAyLjQ4NSAwIDAgMC0yLjkzLjA4bDMuMTYgMy4xNmMuNDEtLjg1IDEuMjYtMS40MyAyLjI1LTEuNDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjJsNC42NCA0LjY0Yy0uMjcuNC0uNDMuODctLjQzIDEuMzlhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy41MiAwIC45OS0uMTYgMS40LS40M2wuMDIuMDItLjAyLjE2QTIuNSAyLjUgMCAwIDAgMTIgMTVjLjA1IDAgLjEtLjAxLjE2LS4wMmwxLjY0IDEuNjRBOC45MDUgOC45MDUgMCAwIDAgMTIgMjJjMi4wMiAwIDMuODgtLjY3IDUuMzgtMS44bDIuNCAyLjQgMS40MS0xLjQxTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVkaWFCbHVldG9vdGhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNi4xN1YzaDZ2NGgtNHYxLjE3bC0yLTJ6TTE5LjQyIDE1IDIyIDE3LjU3bC0uOC44LTYuNzgtNi43OC44LS44IDIuNzUgMi43NVY5aC42TDIyIDEyLjQzIDE5LjQyIDE1em0tLjI1LTEuNDUgMS4xMy0xLjEzLTEuMTMtMS4xM3YyLjI2em0yLjAyIDcuNjQtMS40MSAxLjQxLTMuOTgtMy45OC0uNTguNTgtLjg1LS44NS41OC0uNThMMTEgMTMuODNWMTdjMCAyLjIxLTEuNzggNC0zLjk5IDRTMyAxOS4yMSAzIDE3czEuNzktNCA0LjAxLTRjLjczIDAgMS40MS4yMSAyIC41NXYtMS43MkwxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lZGlhQmx1ZXRvb3RoT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkgMyAuMDEgMTAuNTVjLS42LS4zNC0xLjI4LS41NS0yLS41NWE0LjAwMSA0LjAwMSAwIDEgMCAwIDhDOS4yMyAyMSAxMSAxOS4yMSAxMSAxN1Y3aDRWM0g5em0xMiA5LjQzTDE3LjU3IDloLS42djQuNTVsLTIuNzUtMi43NS0uODUuODVMMTYuNzMgMTVsLTMuMzUgMy4zNS44NS44NSAyLjc1LTIuNzVWMjFoLjZMMjEgMTcuNTcgMTguNDIgMTUgMjEgMTIuNDN6bS0yLjgzLTEuMTMgMS4xMyAxLjEzLTEuMTMgMS4xM1YxMS4zem0xLjEzIDYuMjctMS4xMyAxLjEzdi0yLjI2bDEuMTMgMS4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVkaWNhdGlvbkxpcXVpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxMnYySDN6TTE0IDZINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tMSA5aC0yLjV2Mi41aC0zVjE1SDV2LTNoMi41VjkuNWgzVjEySDEzdjN6TTIwIDZjLTEuNjggMC0zIDEuNzYtMyA0IDAgMS43Ny44MyAzLjIyIDIgMy43NlYyMGMwIC41NS40NSAxIDEgMXMxLS40NSAxLTF2LTYuMjRjMS4xNy0uNTQgMi0xLjk5IDItMy43NiAwLTIuMjQtMS4zMi00LTMtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVkaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzaDEydjJINnpNMTcgNkg3Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0xIDloLTIuNXYyLjVoLTNWMTVIOHYtM2gyLjVWOS41aDNWMTJIMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9iaWxlRnJpZW5kbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNy4wMSAxMy40N2wtMi41NS0yLjU1LTEuMjcgMS4yN0w3IDE2bDcuMTktNy4xOS0xLjI3LTEuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vYmlsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNzYgMi40OSAxLjQ5IDMuNzYgNSA3LjI3VjIxYzAgMS4xLjkgMiAyIDJoMTBjMS4wMiAwIDEuODUtLjc3IDEuOTgtMS43NWwxLjcyIDEuNzIgMS4yNy0xLjI3TDIuNzYgMi40OXpNNyAxOVY5LjI3TDE2LjczIDE5SDd6TTE3IDV2OS4xN2wyIDJWM2MwLTEuMS0uOS0yLTItMkg3Yy0uODUgMC0xLjU4LjU0LTEuODcgMS4zTDcuODMgNUgxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9iaWxlZGF0YU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2gzbC00LTQtNCA0aDN2NC4xN2wyIDJ6TTIuODEgMi44MSAxLjM5IDQuMjIgOCAxMC44M3Y2LjE4bC0zIC4wMUw5IDIxbDQtNC0zIC4wMXYtNC4xOGw5Ljc4IDkuNzggMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlTmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAyYy0xLjgyIDAtMy41My41LTUgMS4zNSAyLjk5IDEuNzMgNSA0Ljk1IDUgOC42NXMtMi4wMSA2LjkyLTUgOC42NWMxLjQ3Ljg1IDMuMTggMS4zNSA1IDEuMzUgNS41MiAwIDEwLTQuNDggMTAtMTBTMTUuMDIgMiA5LjUgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9kZVN0YW5kYnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0zLThjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb25pdG9ySGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4xMSAxMi40NSAxNCAxMC4yNGwtMy4xMSA2LjIxYy0uMTYuMzQtLjUxLjU1LS44OS41NXMtLjczLS4yMS0uODktLjU1TDcuMzggMTNIMnY1YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTVoLTZjLS4zOCAwLS43My0uMjEtLjg5LS41NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnY1aDZjLjM4IDAgLjczLjIxLjg5LjU1TDEwIDEzLjc2bDMuMTEtNi4yMWMuMzQtLjY4IDEuNDUtLjY4IDEuNzkgMEwxNi42MiAxMUgyMlY2YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb25pdG9yV2VpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgOWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDguNWgxdjFoLTF6TTExLjUgOC41aDF2MWgtMXpNMTMgOC41aDF2MWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmVhcmJ5RXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDcuNTcgNC40MiA0LjQyTDEyIDE2LjQxbC00LjQyLTQuNDJMMTIgNy41N3ptMCAxMS42Mi03LjItNy4yIDcuMi03LjIgNiA2VjcuMTZsLTQuNTgtNC41OGMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTguMDEgOGMtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2w4LjAxIDhjLjc4Ljc4IDIuMDUuNzggMi44MyAwTDE4IDE2Ljgydi0zLjYzbC02IDZ6bTggLjgxaDJ2MmgtMnYtMnptMi0xMGgtMnY4aDJ2LThcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmVhcmJ5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS40MSAxMy40MiAxOC44MyAxNmwtMS44MS0xLjgxTDE5LjIgMTIgMTIgNC44IDkuODEgNi45OSA4IDUuMTdsMi41OC0yLjU4Yy43OC0uNzggMi4wNS0uNzggMi44MyAwbDggOGMuNzkuNzguNzkgMi4wNCAwIDIuODN6bS0uMjIgNy43Ny0xLjQxIDEuNDFMMTYgMTguODNsLTIuNTggMi41OGMtLjc4Ljc4LTIuMDUuNzgtMi44MyAwbC04LThjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzTDUuMTcgOCAxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6bS03LTQuMTctMS4zOS0xLjM5LS44LjhMNy41OCAxMmwuOC0uOC0xLjQtMS4zOUw0LjggMTJsNy4yIDcuMiAyLjE5LTIuMTh6TTE2LjQyIDEyIDEyIDcuNThsLS44LjggNC40MiA0LjQyLjgtLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5ldHdvcmtDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMmgyMFYyTDIgMjJ6bTE4LTJoLTNWOS44M2wzLTNWMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5ldHdvcmtXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTMuMzIgMTAuODRDMTQuMzQgMTQuMyAxMy4yIDE0IDEyIDE0Yy0xLjIgMC0yLjM0LjMtMy4zMi44NEwyLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTUuNzYgNS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1dpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHptNC43OCA5LjM4QTguODUzIDguODUzIDAgMCAwIDEyIDEyYy0xLjc2IDAtMy40LjUtNC43OCAxLjM4bC00LjMtNC4zQzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3bC00LjMgNC4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1dpZmkzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpNMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3bC0yLjg1IDIuODZBMTAuOTQ1IDEwLjk0NSAwIDAgMCAxMiAxMGMtMi4zMSAwLTQuNDYuNzEtNi4yMyAxLjkzTDIuOTIgOS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1dpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4em0tMjEuMDguMDlDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTEuNDMgMS40M0MxNy41IDguOTQgMTQuODYgOCAxMiA4cy01LjUuOTQtNy42NSAyLjUxTDIuOTIgOS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmZjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNNCAyMGgxNlY0SDR2MTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDRWNGgxNnYxNnpNMTggNmgtNWMtMS4xIDAtMiAuOS0yIDJ2Mi4yOGMtLjYuMzUtMSAuOTgtMSAxLjcyIDAgMS4xLjkgMiAyIDJzMi0uOSAyLTJjMC0uNzQtLjQtMS4zOC0xLTEuNzJWOGgzdjhIOFY4aDJWNkg2djEyaDEyVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5pZ2h0bGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJjMS44MiAwIDMuNTMuNSA1IDEuMzUtMi45OSAxLjczLTUgNC45NS01IDguNjVzMi4wMSA2LjkyIDUgOC42NUE5Ljk3MyA5Ljk3MyAwIDAgMSAxNCAyMkM4LjQ4IDIyIDQgMTcuNTIgNCAxMlM4LjQ4IDIgMTQgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek05LjEgMTdIN3YtMi4xNGw1Ljk2LTUuOTYgMi4xMiAyLjEyTDkuMSAxN3ptNy43NS03LjczLTEuMDYgMS4wNi0yLjEyLTIuMTIgMS4wNi0xLjA2Yy4yLS4yLjUxLS4yLjcxIDBsMS40MSAxLjQxYy4yLjIuMi41MSAwIC43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFzc3dvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTdoMjB2Mkgydi0yem0xLjE1LTQuMDVMNCAxMS40N2wuODUgMS40OCAxLjMtLjc1LS44NS0xLjQ4SDd2LTEuNUg1LjNsLjg1LTEuNDdMNC44NSA3IDQgOC40NyAzLjE1IDdsLTEuMy43NS44NSAxLjQ3SDF2MS41aDEuN2wtLjg1IDEuNDggMS4zLjc1em02LjctLjc1IDEuMy43NS44NS0xLjQ4Ljg1IDEuNDggMS4zLS43NS0uODUtMS40OEgxNXYtMS41aC0xLjdsLjg1LTEuNDctMS4zLS43NUwxMiA4LjQ3IDExLjE1IDdsLTEuMy43NS44NSAxLjQ3SDl2MS41aDEuN2wtLjg1IDEuNDh6TTIzIDkuMjJoLTEuN2wuODUtMS40Ny0xLjMtLjc1TDIwIDguNDcgMTkuMTUgN2wtMS4zLjc1Ljg1IDEuNDdIMTd2MS41aDEuN2wtLjg1IDEuNDggMS4zLjc1Ljg1LTEuNDguODUgMS40OCAxLjMtLjc1LS44NS0xLjQ4SDIzdi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhdHRlcm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem0yIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02LTZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02IDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tLjAyIDZjLS43NCAwLTEuMzcuNC0xLjcyIDFoLTIuNTRhMS45OCAxLjk4IDAgMCAwLTMuNDQgMEg4LjQxbDMuMDctMy4wN2MuMTcuMDQuMzQuMDcuNTIuMDcgMS4xIDAgMi0uOSAyLTIgMC0uMTgtLjAzLS4zNS0uMDctLjUxbDMuNTYtMy41NmMuMTYuMDQuMzMuMDcuNTEuMDcgMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyYzAgLjE4LjAzLjM1LjA3LjUxbC0zLjU2IDMuNTZjLS4xNi0uMDQtLjMzLS4wNy0uNTEtLjA3LTEuMSAwLTIgLjktMiAyIDAgLjE4LjAzLjM1LjA3LjUxbC0zLjU2IDMuNTZDNi4zNSAxNi4wMyA2LjE4IDE2IDYgMTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyYy43NCAwIDEuMzctLjQgMS43Mi0xaDIuNTdhMS45OCAxLjk4IDAgMCAwIDMuNDQgMGgyLjU1Yy4zNC42Ljk4IDEgMS43MiAxIDEuMSAwIDItLjkgMi0yLS4wMi0xLjEtLjkyLTItMi4wMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaGlzaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDljMC0xLjMtLjg0LTIuNC0yLTIuODJWMmgtMnY0LjE4QzEzLjg0IDYuNiAxMyA3LjcgMTMgOXMuODQgMi40IDIgMi44MlYxNWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNHYtMWgzTDUgOXY2YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZ2LTMuMThjMS4xNi0uNDIgMi0xLjUyIDItMi44MnptLTMgMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek03LjY0IDE1SDYuNDl2LTQuNWwtLjkuNjYtLjU4LS44OUw2Ljc3IDloLjg3djZ6bTUuODYgMEg5LjYxdi0xLjAyYzEuMDctMS4wNyAxLjc3LTEuNzcgMi4xMy0yLjE1LjQtLjQyLjU0LS42OS41NC0xLjA2IDAtLjQtLjMxLS43Mi0uODEtLjcyLS41MiAwLS44LjM5LS45LjcybC0xLjAxLS40MmMuMDEtLjAyLjE4LS43NiAxLTEuMTUuNjktLjMzIDEuNDgtLjIgMS45NS4wMy44Ni40NC45MSAxLjI0LjkxIDEuNDggMCAuNjQtLjMxIDEuMjYtLjkyIDEuODYtLjI1LjI1LS43Mi43MS0xLjQgMS4zOWwuMDMuMDVoMi4zN1YxNXptNS4yNS0uODVjLS4wOC4xMy0uNTYuODUtMS43Ni44NS0uMDQgMC0xLjYuMDgtMi4wNS0xLjUxbDEuMDMtLjQxYy4wMy4xLjE5Ljg2IDEuMDIuODYuNDEgMCAuODktLjI4Ljg5LS43NyAwLS41NS0uNDgtLjc5LTEuMDQtLjc5aC0uNXYtMWguNDZjLjMzIDAgLjg4LS4xNC44OC0uNzIgMC0uMzktLjMxLS42NS0uNzUtLjY1LS41IDAtLjc0LjMyLS44NS42NGwtLjk5LS40MUMxNS4yIDkuOSAxNS42OCA5IDE2Ljk0IDljMS4wOSAwIDEuNTQuNjQgMS42Mi43NS4zMy41LjI4IDEuMTYuMDIgMS41Ny0uMTUuMjItLjMyLjM4LS41Mi40OHYuMDdjLjI4LjExLjUxLjI4LjY4LjUyLjM3LjUyLjMzIDEuMjcuMDEgMS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheUxlc3NvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTFjLjM0IDAgLjY3LjAzIDEgLjA4VjRjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmg3LjI2QTYuOTk1IDYuOTk1IDAgMCAxIDE4IDExek03IDExVjRoNXY3TDkuNSA5LjUgNyAxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0tMS4yNSA3LjV2LTVsNCAyLjUtNCAyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaWNlQ2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptLTggNkg4djFoM2MuNTUgMCAxIC40NSAxIDF2M2MwIC41NS0uNDUgMS0xIDFoLTF2MUg4di0xSDZ2LTJoNHYtMUg3Yy0uNTUgMC0xLS40NS0xLTFWOWMwLS41NS40NS0xIDEtMWgxVjdoMnYxaDJ2MnptNCA2LjI1LTItMmg0bC0yIDJ6TTE0IDEwbDItMiAyIDJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaWNlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEzVjljMC0uNTUtLjQ1LTEtMS0xSDdWNmg1VjRIOS41VjNoLTJ2MUg2Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg0djJINXYyaDIuNXYxaDJ2LTFIMTFjLjU1IDAgMS0uNDUgMS0xek0xOS41OSAxMi41MmwtNS42NiA1LjY1LTIuODMtMi44My0xLjQxIDEuNDJMMTMuOTMgMjEgMjEgMTMuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFB1bmNoQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2aC0xVjFINnY1SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpNOCAzaDh2M0g4VjN6bTQgMTZjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDExLjVoLTF2Mi43MWwxLjY0IDEuNjQuNzEtLjcxLTEuMzUtMS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUXVpeiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNS45OSAxM2MtLjU5IDAtMS4wNS0uNDctMS4wNS0xLjA1IDAtLjU5LjQ3LTEuMDQgMS4wNS0xLjA0LjU5IDAgMS4wNC40NSAxLjA0IDEuMDQtLjAxLjU4LS40NSAxLjA1LTEuMDQgMS4wNXptMi41LTYuMTdjLS42My45My0xLjIzIDEuMjEtMS41NiAxLjgxLS4xMy4yNC0uMTguNC0uMTggMS4xOGgtMS41MmMwLS40MS0uMDYtMS4wOC4yNi0xLjY1LjQxLS43MyAxLjE4LTEuMTYgMS42My0xLjguNDgtLjY4LjIxLTEuOTQtMS4xNC0xLjk0LS44OCAwLTEuMzIuNjctMS41IDEuMjNsLTEuMzctLjU3QzExLjUxIDUuOTYgMTIuNTIgNSAxMy45OSA1YzEuMjMgMCAyLjA4LjU2IDIuNTEgMS4yNi4zNy42MS41OCAxLjczLjAxIDIuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjggNy4yIDkgMTBIN0w1Ljg3IDcuMzNINFYxMEgyVjJoNWMxLjEzIDAgMiAuODcgMiAydjEuMzNjMCAuOC0uNTMgMS41NC0xLjIgMS44N3pNNyA0SDR2MS4zM2gzVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43NCAxOC4zM0E5Ljk4NCA5Ljk4NCAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwYTkuOTg0IDkuOTg0IDAgMCAwIDcuMTEtMi45N2MuMDMtLjAzLjA1LS4wNi4wNy0uMDguMi0uMi4zOS0uNDEuNTYtLjYyek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4YzAgMS44NS0uNjMgMy41NC0xLjY5IDQuOWwtMS40My0xLjQzYy42OS0uOTggMS4xLTIuMTcgMS4xLTMuNDYgMC0zLjMxLTIuNjktNi02LTZzLTYgMi42OS02IDYgMi42OSA2IDYgNmMxLjMgMCAyLjUxLS40MiAzLjQ5LTEuMTNsMS40MiAxLjQyQTcuODIyIDcuODIyIDAgMCAxIDEyIDIwem0xLjkyLTcuNDljLjE3LS42Ni4wMi0xLjM4LS40OS0xLjlsLS4wMi0uMDJjLS43Ny0uNzctMi0uNzgtMi43OC0uMDQtLjAxLjAxLS4wMy4wMi0uMDUuMDQtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wuMDIuMDJjLjUyLjUxIDEuMjUuNjcgMS45MS40OWwxLjUxIDEuNTFjLS42LjM2LTEuMjkuNTgtMi4wNC41OC0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDRjMCAuNzMtLjIxIDEuNDEtLjU2IDJsLTEuNS0xLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1lbWJlck1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNC4yMWMtMS41LS43Ny0zLjItMS4yMS01LTEuMjFzLTMuNS40NC01IDEuMjFWNmgxMHY5LjIxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVzZXRUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBoLTguMDFWN0w5IDExbDMuOTkgNHYtM0gyMXY1SDNWNWgxOHYzaDJWNWMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJ2LTVIMjNjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RhcnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMkw4IDZsNCA0VjdjMy4zMSAwIDYgMi42OSA2IDYgMCAyLjk3LTIuMTcgNS40My01IDUuOTF2Mi4wMmMzLjk1LS40OSA3LTMuODUgNy03LjkzIDAtNC40Mi0zLjU4LTgtOC04ek02IDEzYzAtMS42NS42Ny0zLjE1IDEuNzYtNC4yNEw2LjM0IDcuMzRBOC4wMTQgOC4wMTQgMCAwIDAgNCAxM2MwIDQuMDggMy4wNSA3LjQ0IDcgNy45M3YtMi4wMmMtMi44My0uNDgtNS0yLjk0LTUtNS45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmV2aWV3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYuNDMgOS41N0wxMiAxNWwtMS41Ny0zLjQzTDcgMTBsMy40My0xLjU3TDEyIDVsMS41NyAzLjQzTDE3IDEwbC0zLjQzIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJzdnAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDloMS41bC0xLjc1IDZoLTEuNUwxMi41IDlIMTRsMSAzLjQzTDE2IDl6TTUuMSAxMi45IDYgMTVINC41bC0uODUtMkgyLjV2MkgxVjloMy41Yy44NSAwIDEuNS42NSAxLjUgMS41djFjMCAuNi0uNCAxLjE1LS45IDEuNHptLS42LTIuNGgtMnYxaDJ2LTF6bTE3IDIuNWgtMnYySDE4VjloMy41Yy44MyAwIDEuNS42NyAxLjUgMS41djFjMCAuODMtLjY3IDEuNS0xLjUgMS41em0wLTIuNWgtMnYxaDJ2LTF6TTExLjUgOXYxLjVoLTN2Ljc1aDJjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg3di0xLjVoM3YtLjc1SDcuNzVjLS40MSAwLS43NS0uMzQtLjc1LS43NXYtMmMwLS41NS40NS0xIDEtMWgzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlbkxvY2tMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1SDNjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptLTIgMTJINVY3aDE0djEwem0tOS0xaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXYtMWEyIDIgMCAxIDAtNCAwdjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxem0uOC02YzAtLjY2LjU0LTEuMiAxLjItMS4yLjY2IDAgMS4yLjU0IDEuMiAxLjJ2MWgtMi40di0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5Mb2NrUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNmg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF2LTFhMiAyIDAgMSAwLTQgMHYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMXptLjgtNmMwLS42Ni41NC0xLjIgMS4yLTEuMi42NiAwIDEuMi41NCAxLjIgMS4ydjFoLTIuNHYtMXpNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMThIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5Mb2NrUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMy4yNSAxMi43Ny0yLjU3LTIuNTctMS40MSAxLjQxIDIuMjIgMi4yMi01LjY2IDUuNjZMNC41MSA4LjE3bDUuNjYtNS42NiAyLjEgMi4xIDEuNDEtMS40MUwxMS4yMy43NWExLjQ5IDEuNDkgMCAwIDAtMi4xMiAwTDIuNzUgNy4xMWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDEyLjAyIDEyLjAyYy41OS41OSAxLjU0LjU5IDIuMTIgMGw2LjM2LTYuMzZjLjU5LS41OS41OS0xLjU0IDAtMi4xMnpNOC40NyAyMC40OEExMC40ODcgMTAuNDg3IDAgMCAxIDIuNSAxMkgxYy41MSA2LjE2IDUuNjYgMTEgMTEuOTUgMTFsLjY2LS4wMy0zLjgxLTMuODItMS4zMyAxLjMzek0xNiA5aDVjLjU1IDAgMS0uNDUgMS0xVjRjMC0uNTUtLjQ1LTEtMS0xdi0uNWEyLjUgMi41IDAgMCAwLTUgMFYzYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjgtNi41YzAtLjk0Ljc2LTEuNyAxLjctMS43czEuNy43NiAxLjcgMS43VjNoLTMuNHYtLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlblJvdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDggMi41MmMzLjI3IDEuNTUgNS42MSA0LjcyIDUuOTcgOC40OGgxLjVDMjMuNDQgNC44NCAxOC4yOSAwIDEyIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMyem0tNi4yNS0uNzdhMS40OSAxLjQ5IDAgMCAwLTIuMTIgMEwxLjc1IDguMTFhMS40OSAxLjQ5IDAgMCAwIDAgMi4xMmwxMi4wMiAxMi4wMmMuNTkuNTkgMS41NC41OSAyLjEyIDBsNi4zNi02LjM2Yy41OS0uNTkuNTktMS41NCAwLTIuMTJMMTAuMjMgMS43NXptNC42IDE5LjQ0TDIuODEgOS4xN2w2LjM2LTYuMzYgMTIuMDIgMTIuMDItNi4zNiA2LjM2em0tNy4zMS4yOUExMC40ODcgMTAuNDg3IDAgMCAxIDEuNTUgMTNILjA1Qy41NiAxOS4xNiA1LjcxIDI0IDEyIDI0bC42Ni0uMDMtMy44MS0zLjgxLTEuMzMgMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NyZWVuU2VhcmNoRGVza3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImVuYWJsZUJhY2tncm91bmRcIjpcIm5ldyAwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42IDE2LjhoNC44djEuOEg5LjZ6XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDZhMiAyIDAgMCAwLTItMkg0Yy0xLjExIDAtMiAuODktMiAydjEwYTIgMiAwIDAgMCAyIDJIMHYyaDI0di0yaC00Wk00IDE2VjZoMTZ2MTAuMDFMNCAxNlptNS4wOTctNi4wNDdjMC0xLjAyNy44MzYtMS44NjQgMS44NjQtMS44NjQgMS4wMjcgMCAxLjg2NC44MzcgMS44NjQgMS44NjRhMS44NjcgMS44NjcgMCAwIDEtMS44NjQgMS44NjQgMS44NjcgMS44NjcgMCAwIDEtMS44NjQtMS44NjRabTcuMDMyIDQuMjM2LTIuNDgyLTIuNDgyYTMuMTkgMy4xOSAwIDAgMCAuNTI3LTEuNzU0QTMuMjE2IDMuMjE2IDAgMCAwIDEwLjk2IDYuNzRhMy4yMTcgMy4yMTcgMCAwIDAtMy4yMTQgMy4yMTMgMy4yMTggMy4yMTggMCAwIDAgMy4yMTQgMy4yMTQgMy4xOSAzLjE5IDAgMCAwIDEuNzI0LS41MWwyLjQ4OSAyLjQ4Ny45NTUtLjk1NVpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlbnNob3RNb25pdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgNy41SDlWNkg1djRoMS41ek0xOSAxMmgtMS41djIuNUgxNVYxNmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5zaG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOEg3VjZoMTB2MTJ6TTkuNSA4LjVIMTJWN0g4djRoMS41VjguNXpNMTIgMTdoNHYtNGgtMS41djIuNUgxMlYxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2RTdG9yYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0LjAyIDggNCAyMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS02IDZoLTJWNGgydjR6bTMgMGgtMlY0aDJ2NHptMyAwaC0yVjRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWN1cml0eVVwZGF0ZUdvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE3SDdWNmgxMHYxMnptLTEtNy45NS0xLjQxLTEuNDEtMy41NCAzLjU0LTEuNDEtMS40MS0xLjQxIDEuNDFMMTEuMDUgMTUgMTYgMTAuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlY3VyaXR5VXBkYXRlV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yek0xMSA3aDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0xLjk5LjktMS45OSAydjE4YzAgMS4xLjg5IDIgMS45OSAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTdIN1Y2aDEwdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWN1cml0eVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzdjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnptMTIgMTVIN1Y2aDEwdjEyem0tMS02aC0zVjhoLTJ2NEg4bDQgNCA0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjQxIDExLjQxLTguODMtOC44M2MtLjM3LS4zNy0uODgtLjU4LTEuNDEtLjU4SDRjLTEuMSAwLTIgLjktMiAydjcuMTdjMCAuNTMuMjEgMS4wNC41OSAxLjQxbDguODMgOC44M2MuNzguNzggMi4wNS43OCAyLjgzIDBsNy4xNy03LjE3Yy43OC0uNzguNzgtMi4wNC0uMDEtMi44M3pNNi41IDhDNS42NyA4IDUgNy4zMyA1IDYuNVM1LjY3IDUgNi41IDUgOCA1LjY3IDggNi41IDcuMzMgOCA2LjUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VuZFRvTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTdoMnY0YzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjNjMC0xLjEuOS0xLjk5IDItMS45OUwxNyAxYzEuMSAwIDIgLjkgMiAydjRoLTJWNkg3djEyaDEwdi0xem01LTUtNC00djNoLTV2Mmg1djNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc1N1Z2dlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy40MSA2LjU5IDE1IDUuNWwyLjQxLTEuMDlMMTguNSAybDEuMDkgMi40MUwyMiA1LjVsLTIuNDEgMS4wOUwxOC41IDlsLTEuMDktMi40MXptMy44NyA2LjEzTDIwLjUgMTFsLS43OCAxLjcyLTEuNzIuNzggMS43Mi43OC43OCAxLjcyLjc4LTEuNzJMMjMgMTMuNWwtMS43Mi0uNzh6bS01LjA0IDEuNjUgMS45NCAxLjQ3LTIuNSA0LjMzLTIuMjQtLjk0Yy0uMi4xMy0uNDIuMjYtLjY0LjM3bC0uMyAyLjRoLTVsLS4zLTIuNDFjLS4yMi0uMTEtLjQzLS4yMy0uNjQtLjM3bC0yLjI0Ljk0LTIuNS00LjMzIDEuOTQtMS40N2MtLjAxLS4xMS0uMDEtLjI0LS4wMS0uMzZzMC0uMjUuMDEtLjM3bC0xLjk0LTEuNDcgMi41LTQuMzMgMi4yNC45NGMuMi0uMTMuNDItLjI2LjY0LS4zN0w3LjUgNmg1bC4zIDIuNDFjLjIyLjExLjQzLjIzLjY0LjM3bDIuMjQtLjk0IDIuNSA0LjMzLTEuOTQgMS40N2MuMDEuMTIuMDEuMjQuMDEuMzdzMCAuMjQtLjAxLjM2ek0xMyAxNGMwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzIDMtMS4zNCAzLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzU3lzdGVtRGF5ZHJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2aDYuNWEyLjUgMi41IDAgMCAwIDAtNWgtLjA1Yy0uMjQtMS42OS0xLjY5LTMtMy40NS0zLTEuNCAwLTIuNi44My0zLjE2IDIuMDJoLS4xNkEyLjk5NCAyLjk5NCAwIDAgMCA2IDEzYzAgMS42NiAxLjM0IDMgMyAzek0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoYXJlTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjAyIDE5LjkzdjIuMDJjMi4wMS0uMiAzLjg0LTEgNS4zMi0yLjIxbC0xLjQyLTEuNDNhNy45NDEgNy45NDEgMCAwIDEtMy45IDEuNjJ6TTQuMDMgMTJjMC00LjA1IDMuMDMtNy40MSA2Ljk1LTcuOTNWMi4wNUM1Ljk1IDIuNTggMi4wMyA2Ljg0IDIuMDMgMTJjMCA1LjE2IDMuOTIgOS40MiA4Ljk1IDkuOTV2LTIuMDJjLTMuOTItLjUyLTYuOTUtMy44OC02Ljk1LTcuOTN6TTE5Ljk1IDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMmwtMS40MyAxLjQzYy44NiAxLjEgMS40NCAyLjQzIDEuNjIgMy44OXpNMTguMzQgNC4yNmE5Ljk4MSA5Ljk4MSAwIDAgMC01LjMyLTIuMjF2Mi4wMmMxLjQ2LjE4IDIuNzkuNzYgMy45IDEuNjJsMS40Mi0xLjQzek0xOC4zMyAxNi45bDEuNDMgMS40MkE5Ljk0OSA5Ljk0OSAwIDAgMCAyMS45NyAxM2gtMi4wMmE3Ljk0MSA3Ljk0MSAwIDAgMS0xLjYyIDMuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTEuMUMxNiA4LjYxIDE0LjEgNyAxMiA3cy00IDEuNjEtNCA0LjFjMCAxLjY2IDEuMzMgMy42MyA0IDUuOSAyLjY3LTIuMjcgNC00LjI0IDQtNS45em0tNCAuOWExLjA3MSAxLjA3MSAwIDAgMSAwLTIuMTRBMS4wNzEgMS4wNzEgMCAwIDEgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3J0Y3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxMS02LTZ2NUg4Yy0yLjc2IDAtNSAyLjI0LTUgNXY0aDJ2LTRjMC0xLjY1IDEuMzUtMyAzLTNoN3Y1bDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXIwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNi44M1YyMEg2LjgzTDIwIDYuODNNMjIgMiAyIDIyaDIwVjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyNEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjJoMjBWMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJBbHQxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNGgzdjZINXYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJBbHQyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNGgzdjZINXYtNnptNi01aDN2MTFoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA0aDN2MTZoLTN6TTUgMTRoM3Y2SDV6bTYtNWgzdjExaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhckNvbm5lY3RlZE5vSW50ZXJuZXQwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThoMnYtOGgtMnY4em0wIDRoMnYtMmgtMnYyem0tMi0ydjJIMkwyMiAydjZoLTJWNi44M0w2LjgzIDIwSDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhckNvbm5lY3RlZE5vSW50ZXJuZXQ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGgydi04aC0ydjh6bTAgNGgydi0yaC0ydjJ6TTIgMjJoMTZWOGg0VjJMMiAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJOb1NpbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNLTYxOC0yODcySDc4MlY3MjhILTYxOHpNLTEgMGgyNnYyNEgtMXptMSAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk5IDVjMC0xLjEtLjg5LTItMS45OS0yaC03TDcuNjYgNS4zNCAxOSAxNi42OCAxOC45OSA1ek0zLjY1IDMuODggMi4zOCA1LjE1IDUgNy43N1YxOWMwIDEuMS45IDIgMiAyaDEwLjAxYy4zNSAwIC42Ny0uMS45Ni0uMjZsMS44OCAxLjg4IDEuMjctMS4yN0wzLjY1IDMuODh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS4wMSAwaDI0djI0aC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJOb2RhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEzaC05djlIMkwyMiAydjExem0tMSAyLjQxTDE5LjU5IDE0bC0yLjA5IDIuMDlMMTUuNDEgMTQgMTQgMTUuNDFsMi4wOSAyLjA5TDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhck51bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2LjgzVjIwSDYuODNMMjAgNi44M00yMiAyIDIgMjJoMjBWMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxLTguNTkgOC41OUwyMSAxOC4xOFYxek00Ljc3IDQuNSAzLjUgNS43N2w2LjM2IDYuMzZMMSAyMWgxNy43M2wyIDJMMjIgMjEuNzMgNC43NyA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMzLjMzIDAgNi40OSAxLjA4IDkuMDggMy4wN0wxMiAxOC4xN2wtOS4wOC05LjFDNS41MSA3LjA4IDguNjcgNiAxMiA2bTAtMkM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaTRCYXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OCAxMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGw2LjM1IDYuMzZMMTIgMjFsMy4wNS0zLjA1VjE1YzAtLjQ1LjA5LS44OC4yMy0xLjI5LjU0LTEuNTcgMi4wMS0yLjcxIDMuNzctMi43MWgyLjkzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpNEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDIxLjQ5IDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdsMTEuNjMgMTQuNDkuMDEuMDEuMDEtLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMXYtOWg4Ljk5TDI0IDguOTh6TTE5LjU5IDE0bC0yLjA5IDIuMDlMMTUuNDEgMTQgMTQgMTUuNDFsMi4wOSAyLjA5TDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxIDE5LjU5IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxdi05aDguOTlMMjQgOC45OHpNMTkuNTkgMTRsLTIuMDkgMi4wOUwxNS40MSAxNCAxNCAxNS40MWwyLjA5IDIuMDlMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDEgMTkuNTkgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMy42NCA3Yy0uNDUtLjM0LTQuOTMtNC0xMS42NC00LTEuNSAwLTIuODkuMTktNC4xNS40OEwxOC4xOCAxMy44IDIzLjY0IDd6bS02LjYgOC4yMkwzLjI3IDEuNDQgMiAyLjcybDIuMDUgMi4wNkMxLjkxIDUuNzYuNTkgNi44Mi4zNiA3bDExLjYzIDE0LjQ5LjAxLjAxLjAxLS4wMSAzLjktNC44NiAzLjMyIDMuMzIgMS4yNy0xLjI3LTMuNDYtMy40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhcjRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXJDb25uZWN0ZWROb0ludGVybmV0NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxbDUtNS4wMVY4aDUuOTJDMTkuOTcgNS41MSAxNi4xNiA0IDEyIDR6TTE5IDE4aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTBoMnY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyTnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpNMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3TDEyIDE4LjE3bC05LjA4LTkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2ltQ2FyZERvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQgOHYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS02IDE1LTQtNGgzVjkuMDJMMTMgOXY0aDNsLTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BsaXRzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDR2NUg2VjRoMTJtMC0ySDZjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDEzdjVINnYtNWgxMm0wLTJINmMtMS4xIDAtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi01YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNTY29yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNkg5VjRoMnYyem00LTJoLTJ2MmgyVjR6TTkgMTRoMnYtMkg5djJ6bTEwLTRWOGgtMnYyaDJ6bTAgNHYtMmgtMnYyaDJ6bS02IDBoMnYtMmgtMnYyem02LTEwaC0ydjJoMlY0em0tNiA0VjZoLTJ2Mmgyem0tNiAyVjhoMlY2SDdWNEg1djE2aDJ2LThoMnYtMkg3em04IDJoMnYtMmgtMnYyem0tNC0ydjJoMnYtMmgtMnpNOSA4djJoMlY4SDl6bTQgMmgyVjhoLTJ2MnptMi00djJoMlY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTc2lkQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1LjQ3IDEyIDEyIDcuNjIgNy42MiAzIDExVjguNTJMNy44MyA1bDQuMzggNC4zOEwyMSAzdjIuNDd6TTIxIDE1aC00LjdsLTQuMTcgMy4zNEw2IDEyLjQxbC0zIDIuMTNWMTdsMi44LTIgNi4yIDYgNS00aDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3JhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIwaDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yek0yIDR2NGgyMFY0SDJ6bTQgM0g0VjVoMnYyem0tNCA3aDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTMgOEMxNi43MiA0LjE4IDExLjgyIDIuODcgOCA1LjA3Yy0xLjQxLjgyLTIuNDggMi0zLjE2IDMuMzctLjEzLTIuMi4yMi00LjQgMS4wMi02LjQ0SDMuNzRDMi4yIDYuNDkgMi41MiAxMS41OCA1LjA3IDE2YTcuOTYgNy45NiAwIDAgMCA0Ljg2IDMuNzJjMS45OC41MyA0LjE2LjMxIDYuMDctLjc5IDEuNDEtLjgyIDIuNDgtMiAzLjE2LTMuMzcuMTMgMi4yLS4yMSA0LjQtMS4wMSA2LjQ0aDIuMTFjMS41My00LjQ5IDEuMjItOS41OC0xLjMzLTE0ek0xNSAxNy4yQTYuMDEyIDYuMDEyIDAgMCAxIDYuOCAxNWMtLjExLS4yLS4yMS0uNC0uMy0uNi0xLjItMi43Ni0uMTctNi4wNiAyLjUtNy42IDIuODYtMS42NSA2LjU0LS42NyA4LjIgMi4yLjExLjIuMjEuNC4zLjYgMS4yIDIuNzYuMTcgNi4wNi0yLjUgNy42ek0xMiAxMGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJtMC0yYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VtbWFyaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS44OSAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY5bC02LTZ6TTggMTdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMC00Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAtNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem02IDFWNC41bDUuNSA1LjVIMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVNlY3VyaXR5VXBkYXRlR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTdIN1Y2aDEwdjEyem0tMS03Ljk1LTEuNDEtMS40MS0zLjU0IDMuNTQtMS40MS0xLjQxLTEuNDEgMS40MUwxMS4wNSAxNSAxNiAxMC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3lzdGVtU2VjdXJpdHlVcGRhdGVXYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNWgydjJoLTJ6TTExIDdoMnY2aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2MThjMCAxLjEuODkgMiAxLjk5IDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxN0g3VjZoMTB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVNlY3VyaXR5VXBkYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDN2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAyem0xMiAxNUg3VjZoMTB2MTJ6bS0xLTZoLTNWOGgtMnY0SDhsNCA0IDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMy4wNiAxNkw3LjQgMTQuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDEwLjk0IDE4ek0xMyA5VjMuNUwxOC41IDlIMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRoZXJtb3N0YXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEzVjVjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNXY4Yy0xLjIxLjkxLTIgMi4zNy0yIDQgMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNWMwLTEuNjMtLjc5LTMuMDktMi00em0tNC0yVjVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjFoLTF2MWgxdjJoLTF2MWgxdjFoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVyMTBTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA4djhoLTNWOGgzbTAtM2gtM0M4LjM0IDUgNyA2LjM0IDcgOHY4YzAgMS42NiAxLjM0IDMgMyAzaDNjMS42NiAwIDMtMS4zNCAzLTNWOGMwLTEuNjYtMS4zNC0zLTMtM3pNMSA4aDJ2MTFoM1Y1SDF2M3ptMTcuNSAzYy0uODMgMC0xLjUuNjgtMS41IDEuNXYyYzAgLjgyLjY3IDEuNSAxLjUgMS41SDIxdjFoLTR2Mmg0LjVjLjgzIDAgMS41LS42NyAxLjUtMS41di0yYzAtLjgzLS42Ny0xLjUtMS41LTEuNUgxOXYtMWg0di0yaC00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVyM1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExdjJoLTR2MWgyLjVjLjgzIDAgMS41LjY4IDEuNSAxLjV2MmMwIC44My0uNjcgMS41LTEuNSAxLjVIMTV2LTJoNHYtMWgtMi41Yy0uODIgMC0xLjUtLjY4LTEuNS0xLjV2LTJjMC0uODIuNjgtMS41IDEuNS0xLjVIMjF6TTQgNXYzaDZ2Mi41SDR2M2g2VjE2SDR2M2g2YzEuNjYgMCAzLTEuMzQgMy0zdi0xLjlhMi4xIDIuMSAwIDAgMC0yLjEtMi4xQTIuMSAyLjEgMCAwIDAgMTMgOS45VjhjMC0xLjY2LTEuMzQtMy0zLTNINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVuZ3N0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE5aDJ2M2gtMnpNMiAxMWgzdjJIMnpNMTkgMTFoM3YyaC0zek0xNS44OTQgMTcuODAxbDEuNDA3LTEuNDA3IDIuMTIyIDIuMTIyLTEuNDA4IDEuNDA3ek00LjU4NCAxOC41MDlsMi4xMjEtMi4xMjIgMS40MDggMS40MDctMi4xMjIgMi4xMjJ6TTE1IDguMDJWM0g5djUuMDJjLTEuMjEuOTItMiAyLjM1LTIgMy45OCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wNi0yLTMuOTh6TTExIDVoMnYyLjFjLS4zMi0uMDYtLjY2LS4xLTEtLjFzLS42OC4wNC0xIC4xVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVzYk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDhoNHY0aC0xdjJjMCAuMzQtLjA4LjY2LS4yMy45NEwxNiAxMy4xN1YxMmgtMVY4em0tNCAuMTcgMiAyVjZoMmwtMy00LTMgNGgydjIuMTd6TTEzIDE2djIuMjhjLjYuMzQgMSAuOTggMSAxLjcyIDAgMS4xLS45IDItMiAycy0yLS45LTItMmMwLS43NC40LTEuMzcgMS0xLjcyVjE2SDhjLTEuMTEgMC0yLS44OS0yLTJ2LTIuMjhjLS42LS4zNC0xLS45OC0xLTEuNzIgMC0uNTkuMjYtMS4xMy42OC0xLjQ5TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDEtNi42LTYuNkgxM3ptLTItMnYtLjE3bC0yLjUxLTIuNTFjLS4xNC4xNi0uMzEuMjktLjQ5LjRWMTRoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgN3Y0aDF2MmgtM1Y1aDJsLTMtNC0zIDRoMnY4SDh2LTIuMDdjLjctLjM3IDEuMi0xLjA4IDEuMi0xLjkzIDAtMS4yMS0uOTktMi4yLTIuMi0yLjItMS4yMSAwLTIuMi45OS0yLjIgMi4yIDAgLjg1LjUgMS41NiAxLjIgMS45M1YxM2MwIDEuMTEuODkgMiAyIDJoM3YzLjA1Yy0uNzEuMzctMS4yIDEuMS0xLjIgMS45NWEyLjIgMi4yIDAgMCAwIDQuNCAwYzAtLjg1LS40OS0xLjU4LTEuMi0xLjk1VjE1aDNjMS4xMSAwIDItLjg5IDItMnYtMmgxVjdoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhbGxwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGg3VjJINGMtMS4xIDAtMiAuOS0yIDJ2N2gyVjR6bTYgOS00IDVoMTJsLTMtNC0yLjAzIDIuNzFMMTAgMTN6bTctNC41YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxNCA3LjY3IDE0IDguNXMuNjcgMS41IDEuNSAxLjVTMTcgOS4zMyAxNyA4LjV6TTIwIDJoLTd2Mmg3djdoMlY0YzAtMS4xLS45LTItMi0yem0wIDE4aC03djJoN2MxLjEgMCAyLS45IDItMnYtN2gtMnY3ek00IDEzSDJ2N2MwIDEuMS45IDIgMiAyaDd2LTJINHYtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk4IDE0SDIyaC0uMDJ6TTUuMzUgMTNjMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNC45OCAzLjMxIDF2LTJjLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxdjJjMS45IDAgMi4xNy0xIDMuMzUtMXptMTMuMzIgMmMtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMSAxLTMuMzQgMS0xLjI0IDAtMS4zOC0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxdjJjMS45NSAwIDIuMTEtMSAzLjM0LTEgMS4yNCAwIDEuMzggMSAzLjMzIDEgMS45NSAwIDIuMS0xIDMuMzQtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk0IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMXYtMmMtMS4yNCAwLTEuMzgtMS0zLjMzLTF6TTUuMzUgOWMxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzEgMVY4Yy0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMUMzLjM4IDcgMy4yNCA4IDIgOHYyYzEuOSAwIDIuMTctMSAzLjM1LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZGdldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxM3Y4aDh2LThoLTh6TTMgMjFoOHYtOEgzdjh6TTMgM3Y4aDhWM0gzem0xMy42Ni0xLjMxTDExIDcuMzQgMTYuNjYgMTNsNS42Ni01LjY2LTUuNjYtNS42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaTFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41MyAxNy40NiAxMiAyMWwtMy41My0zLjU0Yy45LS45IDIuMTUtMS40NiAzLjUzLTEuNDZzMi42My41NiAzLjUzIDEuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMzLjAzIDAgNS43OCAxLjIzIDcuNzYgMy4yMmwtMi4xMiAyLjEyQTcuOTY3IDcuOTY3IDAgMCAwIDEyIDEzYy0yLjIgMC00LjIuOS01LjY0IDIuMzVsLTIuMTItMi4xMkM2LjIyIDExLjIzIDguOTcgMTAgMTIgMTB6bTAgNmMtMS4zOCAwLTIuNjMuNTYtMy41MyAxLjQ2TDEyIDIxbDMuNTMtMy41NEE0Ljk4IDQuOTggMCAwIDAgMTIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlDYWxsaW5nMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgM2MtMi4yMSAwLTQuMjEuOS01LjY2IDIuMzRsMS4wNiAxLjA2YTYuNDcgNi40NyAwIDAgMSA5LjE4IDBsMS4wNi0xLjA2QTcuOTMyIDcuOTMyIDAgMCAwIDE2LjQ5IDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjAzIDcuNDZhNS4wMjIgNS4wMjIgMCAwIDAtNy4wOCAwbDEuMDYgMS4wNmMuNjMtLjYzIDEuNTEtMS4wMyAyLjQ3LTEuMDNzMS44NC4zOSAyLjQ3IDEuMDNsMS4wOC0xLjA2ek0xNS4wOCA5LjU5IDE2LjQ5IDExbDEuNDEtMS40MWMtLjM2LS4zNy0uODYtLjU5LTEuNDEtLjU5cy0xLjA1LjIyLTEuNDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjYzIDE0LjQtMi41MiAyLjVjLTIuNS0xLjQzLTQuNTctMy41LTYtNmwyLjUtMi41MmMuMjMtLjI0LjMzLS41Ny4yNy0uOUw5LjEzIDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhINGMtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjA1IDUuNiAyLjQzIDcuOTcgMS41OCAyLjczIDMuODUgNC45OSA2LjU3IDYuNTcgMi4zNyAxLjM3IDUuMDggMi4yNiA3Ljk3IDIuNDMuNTYuMDMgMS4wMy0uNDQgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4bC0zLjY3LS43M2EuOTg1Ljk4NSAwIDAgMC0uOS4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUNoYW5uZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAzYy0yLjUxIDAtMy43NyA1LjYxLTQuNCAxMC41N0MxMC43OSAxMC42NiA5LjYxIDggOCA4IDQuNDMgOCAzIDIxIDMgMjFoMi4wMWMuNjEtNS4yNyAyLTkuODIgMi45OS0xMC44Ny45OCAxLjA1IDIuMzggNS42MSAyLjk5IDEwLjg3SDEzYy41LTIuNTMgMi02IDMtNnMyLjUgMy41MyAzIDZoMnMtLjUtMTgtNS0xOHptMCAxMGMtLjk5IDAtMS44Mi42Mi0yLjUgMS41LjU3LTQuNzcgMS41NC04LjYyIDIuNS05LjQ0Ljk3LjgxIDEuOTEgNC42NyAyLjQ5IDkuNDNDMTcuODEgMTMuNjIgMTYuOTggMTMgMTYgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlGaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTRjMC0zLjM2IDIuNjQtNiA2LTYgMi4yIDAgNC4wOCAxLjEzIDUuMTMgMi44NkwyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMWwxLjg2LTEuODdDMTIuMTQgMTguMDkgMTEgMTYuMiAxMSAxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRjMC0yLjI0LTEuNzYtNC00LTRzLTQgMS43Ni00IDQgMS43NiA0IDQgNGMuNzUgMCAxLjQ0LS4yMSAyLjAzLS41NkwyMS41OSAyMCAyMyAxOC41OWwtMi41Ni0yLjU2Yy4zNS0uNTkuNTYtMS4yOC41Ni0yLjAzem0tNiAwYzAtMS4xMi44OC0yIDItMnMyIC44OCAyIDItLjg4IDItMiAyLTItLjg4LTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk4IDExIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4bDYuMzUgNi4zNkwxMiAyMWwzLjA1LTMuMDVWMTVjMC0uNDUuMDktLjg4LjIzLTEuMjkuNTQtMS41NyAyLjAxLTIuNzEgMy43Ny0yLjcxaDIuOTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlQYXNzd29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE5di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6bTItMTAuMDItMi4xMiAyLjEzQzE5LjM1IDguNTcgMTUuODUgNyAxMiA3cy03LjM1IDEuNTctOS44OCA0LjExTDAgOC45OEMzLjA3IDUuOSA3LjMxIDQgMTIgNHM4LjkzIDEuOSAxMiA0Ljk4ek0xMiAxMGMzLjAzIDAgNS43OCAxLjIzIDcuNzYgMy4yMmwtMi4xMiAyLjEyQTcuOTY3IDcuOTY3IDAgMCAwIDEyIDEzYy0yLjIgMC00LjIuOS01LjY0IDIuMzVsLTIuMTItMi4xMkM2LjIyIDExLjIzIDguOTcgMTAgMTIgMTB6bTMuNTMgNy40NkwxMiAyMWwtMy41My0zLjU0Yy45LS45IDIuMTUtMS40NiAzLjUzLTEuNDZzMi42My41NiAzLjUzIDEuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlUZXRoZXJpbmdFcnJvclJvdW5kZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTMuMzEgMC02IDIuNjktNiA2IDAgMS42Ni42OCAzLjE1IDEuNzYgNC4yNGwxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMS4xMS0uNDUgMi4xLTEuMTggMi44MmwxLjQyIDEuNDJBNi4wMDMgNi4wMDMgMCAwIDAgMTggMTNjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQTcuOTQgNy45NCAwIDAgMSA0IDEzYzAtNC40MiAzLjU4LTggOC04IDIuNTMgMCA0Ljc4IDEuMTcgNi4yNCAzaDIuNDJDMTguOTMgNS4wMSAxNS43IDMgMTIgM3ptMCA4Yy0xLjEgMC0yIC45LTIgMiAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OXMxLjA1LS4yMyAxLjQxLS41OWMuMzYtLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0yem04LTFoMnY2aC0ydi02em0wIDhoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpVGV0aGVyaW5nRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTMuMzEgMC02IDIuNjktNiA2IDAgMS42Ni42OCAzLjE1IDEuNzYgNC4yNGwxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMS4xMS0uNDUgMi4xLTEuMTggMi44MmwxLjQyIDEuNDJBNi4wMDMgNi4wMDMgMCAwIDAgMTggMTNjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQTcuOTQgNy45NCAwIDAgMSA0IDEzYzAtNC40MiAzLjU4LTggOC04IDIuNTMgMCA0Ljc4IDEuMTcgNi4yNCAzaDIuNDJDMTguOTMgNS4wMSAxNS43IDMgMTIgM3ptMCA4Yy0xLjEgMC0yIC45LTIgMiAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OXMxLjA1LS4yMyAxLjQxLS41OWMuMzYtLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0yem04LTFoMnY2aC0ydi02em0wIDhoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpVGV0aGVyaW5nT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIybDIuNjkgMi42OUE5Ljk1OCA5Ljk1OCAwIDAgMCAyIDEzYzAgMi43NiAxLjEyIDUuMjYgMi45MyA3LjA3bDEuNDItMS40MmE3Ljk1NyA3Ljk1NyAwIDAgMS0uODQtMTAuMzFsMS40MyAxLjQzYTYuMDAzIDYuMDAzIDAgMCAwIC44MiA3LjQ3bDEuNDItMS40MkEzLjkzNCAzLjkzNCAwIDAgMSA4IDEzYzAtLjYzLjE1LTEuMjMuNDEtMS43NmwxLjYxIDEuNjFjMCAuMDUtLjAyLjEtLjAyLjE1IDAgLjU1LjIzIDEuMDUuNTkgMS40MS4zNi4zNi44Ni41OSAxLjQxLjU5LjA1IDAgLjEtLjAxLjE2LS4wMmw3LjYyIDcuNjIgMS40MS0xLjQxTDIuODEgMi44MXpNMTcuNyAxNC44N2MuMTktLjU5LjMtMS4yMi4zLTEuODcgMC0zLjMxLTIuNjktNi02LTYtLjY1IDAtMS4yOC4xLTEuODcuM2wxLjcxIDEuNzFDMTEuODkgOSAxMS45NSA5IDEyIDljMi4yMSAwIDQgMS43OSA0IDQgMCAuMDUgMCAuMTEtLjAxLjE2bDEuNzEgMS43MXpNMTIgNWM0LjQyIDAgOCAzLjU4IDggOCAwIDEuMjItLjI3IDIuMzctLjc3IDMuNGwxLjQ5IDEuNDlBOS45NTMgOS45NTMgMCAwIDAgMjIgMTNjMC01LjUyLTQuNDgtMTAtMTAtMTAtMS43OCAwLTMuNDQuNDYtNC44OSAxLjI4bDEuNDggMS40OEM5LjYzIDUuMjcgMTAuNzggNSAxMiA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpVGV0aGVyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDJjMC0zLjMxLTIuNjktNi02LTZzLTYgMi42OS02IDZjMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTlsMS0xLjc0Yy0xLjE5LS43LTItMS45Ny0yLTMuNDUgMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIDEuNDgtLjgxIDIuNzUtMiAzLjQ1bDEgMS43NGMxLjc5LTEuMDQgMy0yLjk3IDMtNS4xOXpNMTIgM0M2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAzLjcgMi4wMSA2LjkyIDQuOTkgOC42NWwxLTEuNzNDNS42MSAxOC41MyA0IDE1Ljk2IDQgMTNjMC00LjQyIDMuNTgtOCA4LThzOCAzLjU4IDggOGMwIDIuOTYtMS42MSA1LjUzLTQgNi45MmwxIDEuNzNjMi45OS0xLjczIDUtNC45NSA1LTguNjUgMC01LjUyLTQuNDgtMTAtMTAtMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDkuOTloMnY3SDZ6bTggM2gydjRoLTJ6bS00LTZoMnYxMGgtMnpNMjAgN1Y0aC0ydjNoLTN2MmgzdjNoMlY5aDNWN3ptLTIgMTJINFY1aDEyVjNINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNWgtMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OSA0YzAtMS4xLS44OS0yLTEuOTktMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNC0uMDEtMTh6TTE3IDExaC00djRoLTJ2LTRIN1Y5aDRWNWgydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGlnbkhvcml6b250YWxDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyaDJ2NWg4djNoLTh2NGg1djNoLTV2NWgtMnYtNUg2di0zaDV2LTRIM1Y3aDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsaWduSG9yaXpvbnRhbExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIySDJWMmgydjIwek0yMiA3SDZ2M2gxNlY3em0tNiA3SDZ2M2gxMHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25Ib3Jpem9udGFsUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyaDJ2MjBoLTJWMnpNMiAxMGgxNlY3SDJ2M3ptNiA3aDEwdi0zSDh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25WZXJ0aWNhbEJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIySDJ2LTJoMjB2MnpNMTAgMkg3djE2aDNWMnptNyA2aC0zdjEwaDNWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25WZXJ0aWNhbENlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExaC01VjZoLTN2NWgtNFYzSDd2OEgxLjg0djJIN3Y4aDN2LThoNHY1aDN2LTVoNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25WZXJ0aWNhbFRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDJ2MkgyVjJoMjB6TTcgMjJoM1Y2SDd2MTZ6bTctNmgzVjZoLTN2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFyZWFDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTN2N2gxOHYtMS41bC05LTdMOCAxN2wtNS00em0wLTYgNCAzIDUtNyA1IDRoNHY4Ljk3bC05LjQtNy4zMS0zLjk4IDUuNDhMMyAxMC40NFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdHRhY2hGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSA2djExLjVjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRWNWEyLjUgMi41IDAgMCAxIDUgMHYxMC41YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjZIMTB2OS41YTIuNSAyLjUgMCAwIDAgNSAwVjVjMC0yLjIxLTEuNzktNC00LTRTNyAyLjc5IDcgNXYxMi41YzAgMy4wNCAyLjQ2IDUuNSA1LjUgNS41czUuNS0yLjQ2IDUuNS01LjVWNmgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdHRhY2hNb25leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjggMTAuOWMtMi4yNy0uNTktMy0xLjItMy0yLjE1IDAtMS4wOSAxLjAxLTEuODUgMi43LTEuODUgMS43OCAwIDIuNDQuODUgMi41IDIuMWgyLjIxYy0uMDctMS43Mi0xLjEyLTMuMy0zLjIxLTMuODFWM2gtM3YyLjE2Yy0xLjk0LjQyLTMuNSAxLjY4LTMuNSAzLjYxIDAgMi4zMSAxLjkxIDMuNDYgNC43IDQuMTMgMi41LjYgMyAxLjQ4IDMgMi40MSAwIC42OS0uNDkgMS43OS0yLjcgMS43OS0yLjA2IDAtMi44Ny0uOTItMi45OC0yLjFoLTIuMmMuMTIgMi4xOSAxLjc2IDMuNDIgMy42OCAzLjgzVjIxaDN2LTIuMTVjMS45NS0uMzcgMy41LTEuNSAzLjUtMy41NSAwLTIuODQtMi40My0zLjgxLTQuNy00LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9HcmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjA2IDkuOTQgMTIgOWwyLjA2LS45NEwxNSA2bC45NCAyLjA2TDE4IDlsLTIuMDYuOTRMMTUgMTJsLS45NC0yLjA2ek00IDE0bC45NC0yLjA2TDcgMTFsLTIuMDYtLjk0TDQgOGwtLjk0IDIuMDZMMSAxMWwyLjA2Ljk0TDQgMTR6bTQuNS01IDEuMDktMi40MUwxMiA1LjUgOS41OSA0LjQxIDguNSAyIDcuNDEgNC40MSA1IDUuNWwyLjQxIDEuMDlMOC41IDl6bS00IDExLjUgNi02LjAxIDQgNEwyMyA4LjkzbC0xLjQxLTEuNDEtNy4wOSA3Ljk3LTQtNEwzIDE5bDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhckNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA5aDR2MTFINHpNMTYgMTNoNHY3aC00ek0xMCA0aDR2MTZoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM3YxOGgxOFYzSDN6bTggMTZINXYtNmg2djZ6bTAtOEg1VjVoNnY2em04IDhoLTZ2LTZoNnY2em0wLThoLTZWNWg2djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlckJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTFIN3YyaDJ2LTJ6bTQgNGgtMnYyaDJ2LTJ6TTkgM0g3djJoMlYzem00IDhoLTJ2Mmgydi0yek01IDNIM3YyaDJWM3ptOCA0aC0ydjJoMlY3em00IDRoLTJ2Mmgydi0yem0tNC04aC0ydjJoMlYzem00IDBoLTJ2MmgyVjN6bTIgMTBoMnYtMmgtMnYyem0wIDRoMnYtMmgtMnYyek01IDdIM3YyaDJWN3ptMTQtNHYyaDJWM2gtMnptMCA2aDJWN2gtMnYyek01IDExSDN2Mmgydi0yek0zIDIxaDE4di0ySDN2MnptMi02SDN2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNWgyVjNIN3Yyem0wIDhoMnYtMkg3djJ6bTAgOGgydi0ySDd2MnptNC00aDJ2LTJoLTJ2MnptMCA0aDJ2LTJoLTJ2MnptLTggMGgydi0ySDN2MnptMC00aDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6bTAtNGgyVjdIM3Yyem0wLTRoMlYzSDN2MnptOCA4aDJ2LTJoLTJ2MnptOCA0aDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptLTggMGgyVjdoLTJ2MnptOC02djJoMlYzaC0yem0tOCAyaDJWM2gtMnYyem00IDE2aDJ2LTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptMC04aDJWM2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJDb2xvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDI0SDJ2LTRoMjB2NHpNMTMuMDYgNS4xOWwzLjc1IDMuNzVMNy43NSAxOEg0di0zLjc1bDkuMDYtOS4wNnptNC44MiAyLjY4LTMuNzUtMy43NSAxLjgzLTEuODNhLjk5Ni45OTYgMCAwIDEgMS40MSAwbDIuMzQgMi4zNGMuMzkuMzkuMzkgMS4wMiAwIDEuNDFsLTEuODMgMS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVySG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMnYtMkgzdjJ6TTUgN0gzdjJoMlY3ek0zIDE3aDJ2LTJIM3Yyem00IDRoMnYtMkg3djJ6TTUgM0gzdjJoMlYzem00IDBIN3YyaDJWM3ptOCAwaC0ydjJoMlYzem0tNCA0aC0ydjJoMlY3em0wLTRoLTJ2MmgyVjN6bTYgMTRoMnYtMmgtMnYyem0tOCA0aDJ2LTJoLTJ2MnptLTgtOGgxOHYtMkgzdjJ6TTE5IDN2MmgyVjNoLTJ6bTAgNmgyVjdoLTJ2MnptLTggOGgydi0yaC0ydjJ6bTQgNGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlcklubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgydi0ySDN2MnptNCAwaDJ2LTJIN3Yyek01IDdIM3YyaDJWN3pNMyAxN2gydi0ySDN2MnpNOSAzSDd2MmgyVjN6TTUgM0gzdjJoMlYzem0xMiAwaC0ydjJoMlYzem0yIDZoMlY3aC0ydjJ6bTAtNnYyaDJWM2gtMnptLTQgMThoMnYtMmgtMnYyek0xMyAzaC0ydjhIM3YyaDh2OGgydi04aDh2LTJoLThWM3ptNiAxOGgydi0yaC0ydjJ6bTAtNGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlckxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMWgydi0yaC0ydjJ6bTAtNGgydi0yaC0ydjJ6bTAtMTJoMlYzaC0ydjJ6bTAgNGgyVjdoLTJ2MnptMCA0aDJ2LTJoLTJ2MnptLTQgOGgydi0ySDd2MnpNNyA1aDJWM0g3djJ6bTAgOGgydi0ySDd2MnptLTQgOGgyVjNIM3YxOHpNMTkgOWgyVjdoLTJ2MnptLTQgMTJoMnYtMmgtMnYyem00LTRoMnYtMmgtMnYyem0wLTE0djJoMlYzaC0yem0wIDEwaDJ2LTJoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQtOGgydi0yaC0ydjJ6bTAtOGgyVjNoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVyT3V0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aC0ydjJoMlY3em0wIDRoLTJ2Mmgydi0yem00IDBoLTJ2Mmgydi0yek0zIDN2MThoMThWM0gzem0xNiAxNkg1VjVoMTR2MTR6bS02LTRoLTJ2Mmgydi0yem0tNC00SDd2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjFoMnYtMkg3djJ6TTMgNWgyVjNIM3Yyem00IDBoMlYzSDd2MnptMCA4aDJ2LTJIN3Yyem0tNCA4aDJ2LTJIM3Yyem04IDBoMnYtMmgtMnYyem0tOC04aDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem04IDhoMnYtMmgtMnYyem00LTRoMnYtMmgtMnYyem00LTEwdjE4aDJWM2gtMnptLTQgMThoMnYtMmgtMnYyem0wLTE2aDJWM2gtMnYyem0tNCA4aDJ2LTJoLTJ2MnptMC04aDJWM2gtMnYyem0wIDRoMlY3aC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlclN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMjFoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyek03IDIxaDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem04LTRoMnYtMmgtMnYyem0wLTRoMnYtMmgtMnYyek0zIDN2MThoMlY1aDE2VjNIM3ptMTYgNmgyVjdoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVyVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMWgydi0ySDd2MnptMC04aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0tOC00aDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgydi0ySDN2MnptMC00aDJWN0gzdjJ6bTggOGgydi0yaC0ydjJ6bTgtOGgyVjdoLTJ2MnptMCA0aDJ2LTJoLTJ2MnpNMyAzdjJoMThWM0gzem0xNiAxNGgydi0yaC0ydjJ6bS00IDRoMnYtMmgtMnYyek0xMSA5aDJWN2gtMnYyem04IDEyaDJ2LTJoLTJ2MnptLTQtOGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlclZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5aDJWN0gzdjJ6bTAtNGgyVjNIM3Yyem00IDE2aDJ2LTJIN3Yyem0wLThoMnYtMkg3djJ6bS00IDBoMnYtMkgzdjJ6bTAgOGgydi0ySDN2MnptMC00aDJ2LTJIM3Yyek03IDVoMlYzSDd2MnptMTIgMTJoMnYtMmgtMnYyem0tOCA0aDJWM2gtMnYxOHptOCAwaDJ2LTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptMC0xMHYyaDJWM2gtMnptMCA2aDJWN2gtMnYyem0tNC00aDJWM2gtMnYyem0wIDE2aDJ2LTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnViYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuMlwiLFwiY3lcIjpcIjE0LjRcIixcInJcIjpcIjMuMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjhcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjJcIixcImN5XCI6XCI4LjhcIixcInJcIjpcIjQuOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW5kbGVzdGlja0NoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0SDd2Mkg1djEyaDJ2Mmgydi0yaDJWNkg5ek0xOSA4aC0yVjRoLTJ2NGgtMnY3aDJ2NWgydi01aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrbGlzdFJ0bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdIMnYyaDlWN3ptMCA4SDJ2Mmg5di0yem01LjM0LTRMMTIuOCA3LjQ2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0TDIyIDUuMzQgMTYuMzQgMTF6bTAgOC0zLjU0LTMuNTQgMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjRMMjIgMTMuMzQgMTYuMzQgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrbGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDdoLTl2Mmg5Vjd6bTAgOGgtOXYyaDl2LTJ6TTUuNTQgMTEgMiA3LjQ2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0IDEuNDEgMS40MUw1LjU0IDExem0wIDhMMiAxNS40NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNCAxLjQxIDEuNDFMNS41NCAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YUFycmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNHYyaDN2MTJoLTN2Mmg1VjR6TTQgMjBoNXYtMkg2VjZoM1Y0SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhdGFPYmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDd2MmMwIC41NS0uNDUgMS0xIDFIMnY0aDFjLjU1IDAgMSAuNDUgMSAxdjJjMCAxLjY1IDEuMzUgMyAzIDNoM3YtMkg3Yy0uNTUgMC0xLS40NS0xLTF2LTJjMC0xLjMtLjg0LTIuNDItMi0yLjgzdi0uMzRDNS4xNiAxMS40MiA2IDEwLjMgNiA5VjdjMC0uNTUuNDUtMSAxLTFoM1Y0SDdDNS4zNSA0IDQgNS4zNSA0IDd6TTIxIDEwYy0uNTUgMC0xLS40NS0xLTFWN2MwLTEuNjUtMS4zNS0zLTMtM2gtM3YyaDNjLjU1IDAgMSAuNDUgMSAxdjJjMCAxLjMuODQgMi40MiAyIDIuODN2LjM0Yy0xLjE2LjQxLTIgMS41Mi0yIDIuODN2MmMwIC41NS0uNDUgMS0xIDFoLTN2MmgzYzEuNjUgMCAzLTEuMzUgMy0zdi0yYzAtLjU1LjQ1LTEgMS0xaDF2LTRoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERyYWdIYW5kbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA5SDR2MmgxNlY5ek00IDE1aDE2di0ySDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4Ljg1IDEwLjM5IDEuMDYtMS4wNmMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDE4LjUgNS4wOWMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTEuMDYgMS4wNiA0LjI0IDQuMjR6bS01LjY2LTIuODNMNCAxNi43NlYyMWg0LjI0bDkuMTktOS4xOS00LjI0LTQuMjV6TTE5IDE3LjVjMCAyLjE5LTIuNTQgMy41LTUgMy41LS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFjMS41NCAwIDMtLjczIDMtMS41IDAtLjQ3LS40OC0uODctMS4yMy0xLjJsMS40OC0xLjQ4YzEuMDcuNjMgMS43NSAxLjQ3IDEuNzUgMi42OHpNNC41OCAxMy4zNUMzLjYxIDEyLjc5IDMgMTIuMDYgMyAxMWMwLTEuOCAxLjg5LTIuNjMgMy41Ni0zLjM2QzcuNTkgNy4xOCA5IDYuNTYgOSA2YzAtLjQxLS43OC0xLTItMS0xLjI2IDAtMS44LjYxLTEuODMuNjQtLjM1LjQxLS45OC40Ni0xLjQuMTJhLjk5Mi45OTIgMCAwIDEtLjE1LTEuMzhDMy43MyA0LjI0IDQuNzYgMyA3IDNzNCAxLjMyIDQgM2MwIDEuODctMS45MyAyLjcyLTMuNjQgMy40N0M2LjQyIDkuODggNSAxMC41IDUgMTFjMCAuMzEuNDMuNiAxLjA3Ljg2bC0xLjQ5IDEuNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXROb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMGgxMXYySDN2LTJ6bTAtMmgxMVY2SDN2MnptMCA4aDd2LTJIM3Yyem0xNS4wMS0zLjEzLjcxLS43MWEuOTk2Ljk5NiAwIDAgMSAxLjQxIDBsLjcxLjcxYy4zOS4zOS4zOSAxLjAyIDAgMS40MWwtLjcxLjcxLTIuMTItMi4xMnptLS43MS43MS01LjMgNS4zVjIxaDIuMTJsNS4zLTUuMy0yLjEyLTIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdEFsaWduQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNXYyaDEwdi0ySDd6bS00IDZoMTh2LTJIM3Yyem0wLThoMTh2LTJIM3Yyem00LTZ2MmgxMFY3SDd6TTMgM3YyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0QWxpZ25KdXN0aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgxOHYtMkgzdjJ6bTAtNGgxOHYtMkgzdjJ6bTAtNGgxOHYtMkgzdjJ6bTAtNGgxOFY3SDN2MnptMC02djJoMThWM0gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRBbGlnbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0QWxpZ25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTJIM3Yyem02LTRoMTJ2LTJIOXYyem0tNi00aDE4di0ySDN2MnptNi00aDEyVjdIOXYyek0zIDN2MmgxOFYzSDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdEJvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42IDEwLjc5Yy45Ny0uNjcgMS42NS0xLjc3IDEuNjUtMi43OSAwLTIuMjYtMS43NS00LTQtNEg3djE0aDcuMDRjMi4wOSAwIDMuNzEtMS43IDMuNzEtMy43OSAwLTEuNTItLjg2LTIuODItMi4xNS0zLjQyek0xMCA2LjVoM2MuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41aC0zdi0zem0zLjUgOUgxMHYtM2gzLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0Q2xlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjI3IDUgMiA2LjI3bDYuOTcgNi45N0w2LjUgMTloM2wxLjU3LTMuNjZMMTYuNzMgMjEgMTggMTkuNzMgMy41NSA1LjI3IDMuMjcgNXpNNiA1di4xOEw4LjgyIDhoMi40bC0uNzIgMS42OCAyLjEgMi4xTDE0LjIxIDhIMjBWNUg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRDb2xvckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41NiA4Ljk0IDcuNjIgMCA2LjIxIDEuNDFsMi4zOCAyLjM4LTUuMTUgNS4xNWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDUuNSA1LjVjLjI5LjI5LjY4LjQ0IDEuMDYuNDRzLjc3LS4xNSAxLjA2LS40NGw1LjUtNS41Yy41OS0uNTguNTktMS41MyAwLTIuMTJ6TTUuMjEgMTAgMTAgNS4yMSAxNC43OSAxMEg1LjIxek0xOSAxMS41cy0yIDIuMTctMiAzLjVjMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLTEuMzMtMi0zLjUtMi0zLjV6TTIgMjBoMjB2NEgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRDb2xvclJlc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNGMwLTQtNi0xMC44LTYtMTAuOHMtMS4zMyAxLjUxLTIuNzMgMy41Mmw4LjU5IDguNTljLjA5LS40Mi4xNC0uODYuMTQtMS4zMXptLS44OCAzLjEyTDEyLjUgMTIuNSA1LjI3IDUuMjcgNCA2LjU1bDMuMzIgMy4zMkM2LjU1IDExLjMyIDYgMTIuNzkgNiAxNGMwIDMuMzEgMi42OSA2IDYgNiAxLjUyIDAgMi45LS41NyAzLjk2LTEuNWwyLjYzIDIuNjMgMS4yNy0xLjI3LTIuNzQtMi43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0Q29sb3JUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMGgyMHY0SDJ2LTR6bTMuNDktM2gyLjQybDEuMjctMy41OGg1LjY1TDE2LjA5IDE3aDIuNDJMMTMuMjUgM2gtMi41TDUuNDkgMTd6bTQuNDItNS42MSAyLjAzLTUuNzloLjEybDIuMDMgNS43OUg5LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRJbmRlbnREZWNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDEwdi0ySDExdjJ6bS04LTUgNCA0VjhsLTQgNHptMCA5aDE4di0ySDN2MnpNMyAzdjJoMThWM0gzem04IDZoMTBWN0gxMXYyem0wIDRoMTB2LTJIMTF2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0SW5kZW50SW5jcmVhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDE4di0ySDN2MnpNMyA4djhsNC00LTQtNHptOCA5aDEwdi0ySDExdjJ6TTMgM3YyaDE4VjNIM3ptOCA2aDEwVjdIMTF2MnptMCA0aDEwdi0ySDExdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdEl0YWxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDR2M2gyLjIxbC0zLjQyIDhINnYzaDh2LTNoLTIuMjFsMy40Mi04SDE4VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdExpbmVTcGFjaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA3aDIuNUw1IDMuNSAxLjUgN0g0djEwSDEuNUw1IDIwLjUgOC41IDE3SDZWN3ptNC0ydjJoMTJWNUgxMHptMCAxNGgxMnYtMkgxMHYyem0wLTZoMTJ2LTJIMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0TGlzdEJ1bGxldGVkQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIxaC0xdi0yLjVIMTV2LTFoMi41VjE1aDF2Mi41SDIxdjF6TTcgNWgxM3YySDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMy41XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMUg3djJoNi4xMWMxLjI2LTEuMjQgMi45OS0yIDQuODktMnpNNyAxN3YyaDQuMDhjLS4wNS0uMzMtLjA4LS42Ni0uMDgtMXMuMDMtLjY3LjA4LTFIN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzLjVcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzLjVcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdExpc3RCdWxsZXRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMC41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMC02Yy0uODMgMC0xLjUuNjctMS41IDEuNVMzLjE3IDcuNSA0IDcuNSA1LjUgNi44MyA1LjUgNiA0LjgzIDQuNSA0IDQuNXptMCAxMmMtLjgzIDAtMS41LjY4LTEuNSAxLjVzLjY4IDEuNSAxLjUgMS41IDEuNS0uNjggMS41LTEuNS0uNjctMS41LTEuNS0xLjV6TTcgMTloMTR2LTJIN3Yyem0wLTZoMTR2LTJIN3Yyem0wLTh2MmgxNFY1SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdExpc3ROdW1iZXJlZFJ0bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE3aDJ2LjVoLTF2MWgxdi41aC0ydjFoM3YtNGgtM3ptMS05aDFWNGgtMnYxaDF6bS0xIDNoMS44TDE4IDEzLjF2LjloM3YtMWgtMS44bDEuOC0yLjFWMTBoLTN6TTIgNWgxNHYySDJ6bTAgMTJoMTR2Mkgyem0wLTZoMTR2MkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRMaXN0TnVtYmVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3aDJ2LjVIM3YxaDF2LjVIMnYxaDN2LTRIMnYxem0xLTloMVY0SDJ2MWgxdjN6bS0xIDNoMS44TDIgMTMuMXYuOWgzdi0xSDMuMkw1IDEwLjlWMTBIMnYxem01LTZ2MmgxNFY1SDd6bTAgMTRoMTR2LTJIN3Yyem0wLTZoMTR2LTJIN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRQYWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRWM2MwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZoMXY0SDl2MTFjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTloOFY0aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRRdW90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTdoM2wyLTRWN0g1djZoM3ptOCAwaDNsMi00VjdoLTZ2NmgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRTaGFwZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA3VjFoLTZ2Mkg3VjFIMXY2aDJ2MTBIMXY2aDZ2LTJoMTB2Mmg2di02aC0yVjdoMnpNMyAzaDJ2MkgzVjN6bTIgMThIM3YtMmgydjJ6bTEyLTJIN3YtMkg1VjdoMlY1aDEwdjJoMnYxMGgtMnYyem00IDJoLTJ2LTJoMnYyek0xOSA1VjNoMnYyaC0yem0tNS4yNyA5aC0zLjQ5bC0uNzMgMkg3Ljg5bDMuNC05aDEuNGwzLjQxIDloLTEuNjNsLS43NC0yem0tMy4wNC0xLjI2aDIuNjFMMTIgOC45MWwtMS4zMSAzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRTaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djNoNXYxMmgzVjdoNVY0SDl6bS02IDhoM3Y3aDN2LTdoM1Y5SDN2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0U3RyaWtldGhyb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE5aDR2LTNoLTR2M3pNNSA0djNoNXYzaDRWN2g1VjRINXpNMyAxNGgxOHYtMkgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdFRleHRkaXJlY3Rpb25MVG9SIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMHY1aDJWNGgydjExaDJWNGgyVjJIOUM2Ljc5IDIgNSAzLjc5IDUgNnMxLjc5IDQgNCA0em0xMiA4LTQtNHYzSDV2MmgxMnYzbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0VGV4dGRpcmVjdGlvblJUb0wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMHY1aDJWNGgydjExaDJWNGgyVjJoLThDNy43OSAyIDYgMy43OSA2IDZzMS43OSA0IDQgNHptLTIgN3YtM2wtNCA0IDQgNHYtM2gxMnYtMkg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRVbmRlcmxpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjMy4zMSAwIDYtMi42OSA2LTZWM2gtMi41djhjMCAxLjkzLTEuNTcgMy41LTMuNSAzLjVTOC41IDEyLjkzIDguNSAxMVYzSDZ2OGMwIDMuMzEgMi42OSA2IDYgNnptLTcgMnYyaDE0di0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZ1bmN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRINnYybDYuNSA2TDYgMTh2MmgxMnYtM2gtN2w1LTUtNS01aDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDYuOTloM0wxMiAzIDggNi45OWgzdjEwLjAySDhMMTIgMjFsNC0zLjk5aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZXhhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMiAzSDYuOGwtNS4yIDkgNS4yIDloMTAuNGw1LjItOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlnaGxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxNCAzIDN2NWg2di01bDMtM1Y5SDZ2NXptNS0xMmgydjNoLTJWMnpNMy41IDUuODhsMS40MS0xLjQxIDIuMTIgMi4xMkw1LjYyIDggMy41IDUuODh6bTEzLjQ2LjcxIDIuMTItMi4xMiAxLjQxIDEuNDFMMTguMzggOGwtMS40Mi0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3Jpem9udGFsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjJIMlYyaDJ2MjB6TTIyIDJoLTJ2MjBoMlYyem0tOC41IDVoLTN2MTBoM1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3Jpem9udGFsUnVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDExaDE2djJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5zZXJ0Q2hhcnRPdXRsaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTdIN3YtN2gydjd6bTQgMGgtMlY3aDJ2MTB6bTQgMGgtMnYtNGgydjR6bTIuNSAyLjFoLTE1VjVoMTV2MTQuMXptMC0xNi4xaC0xNWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNFY0YzAtMS4xLS45LTItMi0yem0tMiAxMkg2di0yaDEydjJ6bTAtM0g2VjloMTJ2MnptMC0zSDZWNmgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnREcml2ZUZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDJjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZINnptNyA3VjMuNUwxOC41IDlIMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc2VydEVtb3RpY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRJbnZpdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJoLTV2NWg1di01ek0xNiAxdjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMmgtMVYxaC0yem0zIDE4SDVWOGgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5zZXJ0TGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRQYWdlQnJlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0ydi0zSDR2M3pNMjAgOGwtNi02SDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2N0gyMFY4em0tNyAxVjMuNUwxOC41IDlIMTN6TTkgMTNoNnYySDl6TTE3IDEzaDZ2MmgtNnpNMSAxM2g2djJIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5zZXJ0UGhvdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMy41bDIuNSAzLjAxTDE0LjUgMTJsNC41IDZINWwzLjUtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaW5lQXhpcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDcuNDMtMS40MS0xLjQxLTQuMDMgNC41M0w5LjUgNCAyIDExLjUxbDEuNSAxLjUgNi4xNC02LjE1IDUuNTkgNS4xOC0xLjczIDEuOTUtNC00TDIgMTcuNSAzLjUgMTlsNi02LjAxIDQgNCAzLjE5LTMuNTkgMy45IDMuNjFMMjIgMTUuNmwtMy45OC0zLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpbmVhclNjYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSA5LjVjLTEuMDMgMC0xLjkuNjItMi4yOSAxLjVoLTIuOTJjLS4zOS0uODgtMS4yNi0xLjUtMi4yOS0xLjVzLTEuOS42Mi0yLjI5IDEuNUg2Ljc5Yy0uMzktLjg4LTEuMjYtMS41LTIuMjktMS41YTIuNSAyLjUgMCAwIDAgMCA1YzEuMDMgMCAxLjktLjYyIDIuMjktMS41aDIuOTJjLjM5Ljg4IDEuMjYgMS41IDIuMjkgMS41czEuOS0uNjIgMi4yOS0xLjVoMi45MmMuMzkuODggMS4yNiAxLjUgMi4yOSAxLjVhMi41IDIuNSAwIDAgMCAwLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmdpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM3YxOGgxOFYzSDN6bTE2IDE2SDVWNWgxNHYxNHpNMTEgN2gydjJoLTJ6TTcgN2gydjJIN3ptOCAwaDJ2MmgtMnptLTggNGgydjJIN3ptNCAwaDJ2MmgtMnptNCAwaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVyZ2VUeXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMjAuNDEgMTguNDEgMTkgMTUgMTUuNTkgMTMuNTkgMTcgMTcgMjAuNDF6TTcuNSA4SDExdjUuNTlMNS41OSAxOSA3IDIwLjQxbDYtNlY4aDMuNUwxMiAzLjUgNy41IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGVDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTkgNGMwLTEuMS0uODktMi0xLjk5LTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGw0IDQtLjAxLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlRWRpdE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1ek0yMC43MSA1LjYzbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGVFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1ek0yMC43MSA1LjYzbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbmV0aXphdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMS40MSAxNi4wOVYyMGgtMi42N3YtMS45M2MtMS43MS0uMzYtMy4xNi0xLjQ2LTMuMjctMy40aDEuOTZjLjEgMS4wNS44MiAxLjg3IDIuNjUgMS44NyAxLjk2IDAgMi40LS45OCAyLjQtMS41OSAwLS44My0uNDQtMS42MS0yLjY3LTIuMTQtMi40OC0uNi00LjE4LTEuNjItNC4xOC0zLjY3IDAtMS43MiAxLjM5LTIuODQgMy4xMS0zLjIxVjRoMi42N3YxLjk1YzEuODYuNDUgMi43OSAxLjg2IDIuODUgMy4zOUgxNC4zYy0uMDUtMS4xMS0uNjQtMS44Ny0yLjIyLTEuODctMS41IDAtMi40LjY4LTIuNCAxLjY0IDAgLjg0LjY1IDEuMzkgMi42NyAxLjkxczQuMTggMS4zOSA0LjE4IDMuOTFjLS4wMSAxLjgzLTEuMzggMi44My0zLjEyIDMuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbmV5T2ZmQ3NyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41MyA3LjQzYy40Mi0uMzEuOTMtLjQ3IDEuNTQtLjQ3czEuMTEuMTYgMS41LjQ5Yy4zOS4zMi42NS43Ljc5IDEuMTJsMS44OS0uOGMtLjI0LS43MS0uNzEtMS4zNS0xLjQtMS45Mi0uNS0uNC0xLjEyLS42NS0xLjg1LS43N1YzaC0ydjIuMTFjLS40MS4wOC0uNzkuMjEtMS4xNC4zOS0uMzUuMTgtLjY0LjM5LS45LjYzbDEuNDMgMS40M2MuMDQtLjA0LjA5LS4wOS4xNC0uMTN6TTIuODEgMi44MSAxLjM5IDQuMjJsMTIuMzUgMTIuMzVjLS40My4yOC0uOTUuNDMtMS41NS40My0uNzEgMC0xLjMyLS4yMy0xLjgzLS43LS41LS40Ny0uODYtMS4wNy0xLjA2LTEuODFsLTEuOTguOGMuMzQgMS4xNy45NSAyLjA4IDEuODMgMi43My41Ny40MiAxLjE5LjY4IDEuODUuODNWMjFoMnYtMi4wOGMuNDQtLjA3Ljg3LS4xNyAxLjI5LS4zNS4zNC0uMTQuNjQtLjMyLjkyLS41M2w0LjU3IDQuNTcgMS40MS0xLjQxTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9uZXlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDYuOWMxLjc4IDAgMi40NC44NSAyLjUgMi4xaDIuMjFjLS4wNy0xLjcyLTEuMTItMy4zLTMuMjEtMy44MVYzaC0zdjIuMTZjLS41My4xMi0xLjAzLjMtMS40OC41NGwxLjQ3IDEuNDdjLjQxLS4xNy45MS0uMjcgMS41MS0uMjd6TTUuMzMgNC4wNiA0LjA2IDUuMzMgNy41IDguNzdjMCAyLjA4IDEuNTYgMy4yMSAzLjkxIDMuOTFsMy41MSAzLjUxYy0uMzQuNDgtMS4wNS45MS0yLjQyLjkxLTIuMDYgMC0yLjg3LS45Mi0yLjk4LTIuMWgtMi4yYy4xMiAyLjE5IDEuNzYgMy40MiAzLjY4IDMuODNWMjFoM3YtMi4xNWMuOTYtLjE4IDEuODItLjU1IDIuNDUtMS4xMmwyLjIyIDIuMjIgMS4yNy0xLjI3TDUuMzMgNC4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92ZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDExYzAgMi40NSAxLjc2IDQuNDcgNC4wOCA0LjkxbC0xLjQ5LTEuNDlMNyAxM2w0IDQuMDFMNyAyMWwtMS40MS0xLjQxIDEuNTgtMS41OHYtLjA2QTcuMDA3IDcuMDA3IDAgMCAxIDEgMTFjMC0zLjg3IDMuMTMtNyA3LTdoM3YySDhjLTIuNzYgMC01IDIuMjQtNSA1ek0yMiAxMVY0aC05djdoOXptLTItMmgtNVY2aDV2M3pNMTMgMTNoOXY3aC05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3ZlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzYzAtMi40NSAxLjc2LTQuNDcgNC4wOC00LjkxbC0xLjQ5IDEuNUw3IDExbDQtNC4wMUw3IDMgNS41OSA0LjQxbDEuNTggMS41OHYuMDZBNy4wMDcgNy4wMDcgMCAwIDAgMSAxM2MwIDMuODcgMy4xMyA3IDcgN2gzdi0ySDhjLTIuNzYgMC01LTIuMjQtNS01ek0xMyAxM3Y3aDl2LTdoLTl6bTcgNWgtNXYtM2g1djN6TTEzIDRoOXY3aC05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdWx0aWxpbmVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDYuOTItMS40MS0xLjQxLTIuODUgMy4yMUMxNS42OCA2LjQgMTIuODMgNSA5LjYxIDUgNi43MiA1IDQuMDcgNi4xNiAyIDhsMS40MiAxLjQyQzUuMTIgNy45MyA3LjI3IDcgOS42MSA3YzIuNzQgMCA1LjA5IDEuMjYgNi43NyAzLjI0bC0yLjg4IDMuMjQtNC00TDIgMTYuOTlsMS41IDEuNSA2LTYuMDEgNCA0IDQuMDUtNC41NWMuNzUgMS4zNSAxLjI1IDIuOSAxLjQ0IDQuNTVIMjFjLS4yMi0yLjMtLjk1LTQuMzktMi4wNC02LjE0TDIyIDYuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE4aDEydi0ySDN2MnpNMyA2djJoMThWNkgzem0wIDdoMTh2LTJIM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROdW1iZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNSAxMCAuNS0yaC00bDEtNGgtMmwtMSA0aC00bDEtNGgtMkw5IDhINWwtLjUgMmg0bC0xIDRoLTRMMyAxNmg0bC0xIDRoMmwxLTRoNGwtMSA0aDJsMS00aDRsLjUtMmgtNGwxLTRoNHptLTcgNGgtNGwxLTRoNGwtMSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYWRkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptMTYgMTZINVY1aDE0djE0ek0xMSA3aDJ2MmgtMnpNNyA3aDJ2Mkg3em04IDBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZW50YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgOSA0IDEyaDEybDQtMTItMTAtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGllQ2hhcnRPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTEgMi4wN2MzLjYxLjQ1IDYuNDggMy4zMyA2LjkzIDYuOTNIMTNWNC4wN3pNNCAxMmMwLTQuMDYgMy4wNy03LjQ0IDctNy45M3YxNS44N2MtMy45My0uNS03LTMuODgtNy03Ljk0em05IDcuOTNWMTNoNi45M0E4LjAwMiA4LjAwMiAwIDAgMSAxMyAxOS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGllQ2hhcnRPdXRsaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTEgMi4wN2MzLjYxLjQ1IDYuNDggMy4zMyA2LjkzIDYuOTNIMTNWNC4wN3pNNCAxMmMwLTQuMDYgMy4wNy03LjQ0IDctNy45M3YxNS44N2MtMy45My0uNS03LTMuODgtNy03Ljk0em05IDcuOTNWMTNoNi45M0E4LjAwMiA4LjAwMiAwIDAgMSAxMyAxOS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGllQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDJ2MjBjLTUuMDctLjUtOS00Ljc5LTktMTBzMy45My05LjUgOS0xMHptMi4wMyAwdjguOTlIMjJjLS40Ny00Ljc0LTQuMjQtOC41Mi04Ljk3LTguOTl6bTAgMTEuMDFWMjJjNC43NC0uNDcgOC41LTQuMjUgOC45Ny04Ljk5aC04Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQb2x5bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE2djEuMjZsLTYtM3YtMy4xN0wxMS43IDhIMTZWMmgtNnY0LjlMNy4zIDEwSDN2Nmg1bDcgMy41VjIyaDZ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvc3RBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxOS4yMkg1VjdoN1Y1SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2Ny4yMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMmgtMnYzaC0zYy4wMS4wMSAwIDIgMCAyaDN2Mi45OWMuMDEuMDEgMiAwIDIgMFY3aDNWNWgtM1Yyek03IDloOHYySDd6TTcgMTJ2Mmg4di0yaC0zek03IDE1aDh2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQdWJsaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0djJoMTRWNEg1em0wIDEwaDR2Nmg2di02aDRsLTctNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1ZXJ5U3RhdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS44OCAxOC40N2MuNDQtLjcuNy0xLjUxLjctMi4zOSAwLTIuNDktMi4wMS00LjUtNC41LTQuNXMtNC41IDIuMDEtNC41IDQuNSAyLjAxIDQuNSA0LjQ5IDQuNWMuODggMCAxLjctLjI2IDIuMzktLjdMMjEuNTggMjMgMjMgMjEuNThsLTMuMTItMy4xMXptLTMuOC4xMWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXptLS4zNi04LjVjLS43NC4wMi0xLjQ1LjE4LTIuMS40NWwtLjU1LS44My0zLjggNi4xOC0zLjAxLTMuNTItMy42MyA1LjgxTDEgMTdsNS04IDMgMy41TDEzIDZsMi43MiA0LjA4em0yLjU5LjVjLS42NC0uMjgtMS4zMy0uNDUtMi4wNS0uNDlMMjEuMzggMiAyMyAzLjE4bC00LjY5IDcuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVjdGFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0aDIwdjE2SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjYXR0ZXJQbG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiM1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiM1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjZcIixcImN5XCI6XCIxNy42XCIsXCJyXCI6XCIzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjaGVtYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDl2MmgtM1Y5SDguNVY3SDExVjFINHY2aDIuNXYySDR2NmgyLjV2Mkg0djZoN3YtNkg4LjV2LTJIMTF2LTJoM3YyaDdWOWgtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMmgxLjV2M2wyLTNoMS43bC0yIDMgMiAzaC0xLjdsLTItM3YzSDEyVjV6TTcgNy4yNWgyLjVWNi41SDdWNWg0djMuNzVIOC41di43NUgxMVYxMUg3VjcuMjV6TTE5IDEzbC02IDYtNC00LTQgNHYtMi41bDQtNCA0IDQgNi02VjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaGFwZUxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDExYzIuNzYgMCA1LTIuMjQgNS01UzguNzYgMSA2IDEgMSAzLjI0IDEgNnMyLjI0IDUgNSA1ek0yMSAxNGgtNWMtMS4xIDAtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDVjMS4xIDAgMi0uOSAyLTJ2LTVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcxIDcuN2MuNC4xOS44My4zIDEuMjkuMyAxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzYzAgLjQ2LjExLjg5LjMgMS4yOUw2LjI5IDE2LjNjLS40LS4xOS0uODMtLjMtMS4yOS0uMy0xLjY1IDAtMyAxLjM1LTMgM3MxLjM1IDMgMyAzIDMtMS4zNSAzLTNjMC0uNDYtLjExLS44OS0uMy0xLjI5TDE3LjcxIDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcnRUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA5aDE2djJINFY5em0wIDRoMTB2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaG93Q2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zLjUgMTguNDkgNi02LjAxIDQgNEwyMiA2LjkybC0xLjQxLTEuNDEtNy4wOSA3Ljk3LTQtNEwyIDE2Ljk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGFjZUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOXY0SDZWOUg0djZoMTZWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djE4SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YWNrZWRMaW5lQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yIDE5Ljk5IDcuNS03LjUxIDQgNCA3LjA5LTcuOTdMMjIgOS45MmwtOC41IDkuNTYtNC00LTYgNi4wMS0xLjUtMS41em0xLjUtNC41IDYtNi4wMSA0IDRMMjIgMy45MmwtMS40MS0xLjQxLTcuMDkgNy45Ny00LTRMMiAxMy45OWwxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJpa2V0aHJvdWdoUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuODUgNy4wOEM2Ljg1IDQuMzcgOS40NSAzIDEyLjI0IDNjMS42NCAwIDMgLjQ5IDMuOSAxLjI4Ljc3LjY1IDEuNDYgMS43MyAxLjQ2IDMuMjRoLTMuMDFjMC0uMzEtLjA1LS41OS0uMTUtLjg1LS4yOS0uODYtMS4yLTEuMjgtMi4yNS0xLjI4LTEuODYgMC0yLjM0IDEuMDItMi4zNCAxLjcgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjIxLS4zNC0uNTQtLjg5LS41NC0xLjkyek0yMSAxMnYtMkgzdjJoOS42MmMxLjE1LjQ1IDEuOTYuNzUgMS45NiAxLjk3IDAgMS0uODEgMS42Ny0yLjI4IDEuNjctMS41NCAwLTIuOTMtLjU0LTIuOTMtMi41MUg2LjRjMCAuNTUuMDggMS4xMy4yNCAxLjU4LjgxIDIuMjkgMy4yOSAzLjMgNS42NyAzLjMgMi4yNyAwIDUuMy0uODkgNS4zLTQuMDUgMC0uMy0uMDEtMS4xNi0uNDgtMS45NEgyMVYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Vic2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMThoLTJ2MWgzdjFoLTR2LTJjMC0uNTUuNDUtMSAxLTFoMnYtMWgtM3YtMWgzYy41NSAwIDEgLjQ1IDEgMXYxYzAgLjU1LS40NSAxLTEgMXpNNS44OCAxOGgyLjY2bDMuNC01LjQyaC4xMmwzLjQgNS40MmgyLjY2bC00LjY1LTcuMjdMMTcuODEgNGgtMi42OGwtMy4wNyA0Ljk5aC0uMTJMOC44NSA0SDYuMTlsNC4zMiA2LjczTDUuODggMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1cGVyc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN2gtMnYxaDN2MWgtNFY3YzAtLjU1LjQ1LTEgMS0xaDJWNWgtM1Y0aDNjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek01Ljg4IDIwaDIuNjZsMy40LTUuNDJoLjEybDMuNCA1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSA2aC0yLjY4bC0zLjA3IDQuOTloLS4xMkw4Ljg1IDZINi4xOWw0LjMyIDYuNzNMNS44OCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFibGVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTAuMDJoNVYyMWgtNXpNMTcgMjFoM2MxLjEgMCAyLS45IDItMnYtOWgtNXYxMXptMy0xOEg1Yy0xLjEgMC0yIC45LTIgMnYzaDE5VjVjMC0xLjEtLjktMi0yLTJ6TTMgMTljMCAxLjEuOSAyIDIgMmgzVjEwSDN2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFibGVSb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOEgzVjRoMTh2NHptMCAySDN2NGgxOHYtNHptMCA2SDN2NGgxOHYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dERlY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk5IDE5aDIuNDJsMS4yNy0zLjU4aDUuNjVMMTEuNTkgMTloMi40Mkw4Ljc1IDVoLTIuNUwuOTkgMTl6bTQuNDItNS42MUw3LjQ0IDcuNmguMTJsMi4wMyA1Ljc5SDUuNDF6TTIzIDExdjJoLTh2LTJoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dEZpZWxkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSA0djNoNXYxMmgzVjdoNVY0aC0xM3ptMTkgNWgtOXYzaDN2N2gzdi03aDNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dEluY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk5IDE5aDIuNDJsMS4yNy0zLjU4aDUuNjVMMTEuNTkgMTloMi40Mkw4Ljc1IDVoLTIuNUwuOTkgMTl6bTQuNDItNS42MUw3LjQ0IDcuNmguMTJsMi4wMyA1Ljc5SDUuNDF6TTIwIDExaDN2MmgtM3YzaC0ydi0zaC0zdi0yaDNWOGgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpdGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDR2M2g1LjV2MTJoM1Y3SDE5VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR5cGVTcGVjaW1lbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTMuMzcgMTIuNS0uOC0yLjNIMTIuMmwtLjgyIDIuM0g5LjgxbDMuMzgtOWgxLjYxbDMuMzggOWgtMS41NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuOTYgNy4xNy0xLjMxIDMuNzJoMi42OWwtMS4zLTMuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsQWxpZ25Cb3R0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxM2gtM1YzaC0ydjEwSDhsNCA0IDQtNHpNNCAxOXYyaDE2di0ySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE5aDN2NGgydi00aDNsLTQtNC00IDR6bTgtMTRoLTNWMWgtMnY0SDhsNCA0IDQtNHpNNCAxMXYyaDE2di0ySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsQWxpZ25Ub3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExaDN2MTBoMlYxMWgzbC00LTQtNCA0ek00IDN2MmgxNlYzSDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDJ2MkgyVjJoMjB6TTcgMTAuNXYzaDEwdi0zSDd6TTIgMjB2MmgyMHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXcmFwVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTloNnYtMkg0djJ6TTIwIDVINHYyaDE2VjV6bS0zIDZINHYyaDEzLjI1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMkgxNXYtMmwtMyAzIDMgM3YtMmgyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcHByb3ZhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTZ2NmgxNnYtNmMwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnptMTQgMkg2di0yaDEydjJ6TTEyIDJDOS4yNCAyIDcgNC4yNCA3IDdsNSA3IDUtN2MwLTIuNzYtMi4yNC01LTUtNXptMCA5TDkgN2MwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzbC0zIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF0dGFjaEVtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBWNGMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0xLjk5LjktMS45OSAyTDEgMTZjMCAxLjEuOSAyIDIgMmgxMXYtNWMwLTEuNjYgMS4zNC0zIDMtM2g0em0tMTAgMUwzIDZWNGw4IDUgOC01djJsLTggNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTR2NGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ2LTQuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxOGgydi00LjVhMi41IDIuNSAwIDAgMC01IDBWMThjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXR0YWNobWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMi41QzIgOS40NiA0LjQ2IDcgNy41IDdIMThjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDRIOS41YTIuNSAyLjUgMCAwIDEgMC01SDE3djJIOS40MWMtLjU1IDAtLjU1IDEgMCAxSDE4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMkg3LjVDNS41NyA5IDQgMTAuNTcgNCAxMi41UzUuNTcgMTYgNy41IDE2SDE3djJINy41QzQuNDYgMTggMiAxNS41NCAyIDEyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNC41IDE0SDhjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTNsLjE0LjAxQTMuOTggMy45OCAwIDAgMSAxMiA3YzIuMjEgMCA0IDEuNzkgNCA0aC41YTIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZERvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNEM5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTEwIDE3bC0zLjUtMy41IDEuNDEtMS40MUwxMCAxNC4xNyAxNS4xOCA5bDEuNDEgMS40MUwxMCAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTcgMTNsLTUgNS01LTVoM1Y5aDR2NGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0Yy0xLjQ4IDAtMi44NS40My00LjAxIDEuMTdsMS40NiAxLjQ2YTUuNDk3IDUuNDk3IDAgMCAxIDguMDUgNC44N3YuNUgxOWMxLjY2IDAgMyAxLjM0IDMgMyAwIDEuMTMtLjY0IDIuMTEtMS41NiAyLjYybDEuNDUgMS40NUMyMy4xNiAxOC4xNiAyNCAxNi42OCAyNCAxNWMwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMyA1LjI3bDIuNzUgMi43NEMyLjU2IDguMTUgMCAxMC43NyAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDExLjczbDIgMkwyMSAyMC43MyA0LjI3IDQgMyA1LjI3ek03LjczIDEwbDggOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aDEuNzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNEM5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoLjcxQzcuMzcgNy42OSA5LjQ4IDYgMTIgNmMzLjA0IDAgNS41IDIuNDYgNS41IDUuNXYuNUgxOWMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWRTeW5jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuNSAxNC45OGMtLjAyIDAtLjAzIDAtLjA1LjAxQTMuNDkgMy40OSAwIDAgMCAxOCAxMmMtMS40IDAtMi42LjgzLTMuMTYgMi4wMkEyLjk4OCAyLjk4OCAwIDAgMCAxMiAxN2MwIDEuNjYgMS4zNCAzIDMgM2w2LjUtLjAyYTIuNSAyLjUgMCAwIDAgMC01ek0xMCA0LjI2djIuMDlDNy42NyA3LjE4IDYgOS4zOSA2IDEyYzAgMS43Ny43OCAzLjM0IDIgNC40NFYxNGgydjZINHYtMmgyLjczQTcuOTQyIDcuOTQyIDAgMCAxIDQgMTJjMC0zLjczIDIuNTUtNi44NSA2LTcuNzR6TTIwIDZoLTIuNzNhNy45OCA3Ljk4IDAgMCAxIDIuNjYgNWgtMi4wMmMtLjIzLTEuMzYtLjkzLTIuNTUtMS45MS0zLjQ0VjEwaC0yVjRoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZFVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTQgMTN2NGgtNHYtNEg3bDUtNSA1IDVoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcmVhdGVOZXdGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlmZmVyZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDIzSDRjLTEuMSAwLTItLjktMi0yVjdoMnYxNGgxNHYyek0xNSAxSDhjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNiAxN2MwIDEuMS44OSAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY3bC02LTZ6bTEuNSAxNGgtNnYtMmg2djJ6bTAtNmgtMnYyaC0yVjloLTJWN2gyVjVoMnYyaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG93bmxvYWREb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTMgNS40MSAxOC43MiA0bC05LjE5IDkuMTktNC4yNS00LjI0LTEuNDEgMS40MSA1LjY2IDUuNjZ6TTUgMThoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb3dubG9hZEZvck9mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0tMSA4VjZoMnY0aDNsLTQgNC00LTRoM3ptNiA3SDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIwaDE0di0ySDV2MnpNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvd25sb2FkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzIgNC4yNkE5Ljk0OSA5Ljk0OSAwIDAgMCAxMyAyLjA1djIuMDJjMS40Ni4xOCAyLjc5Ljc2IDMuOSAxLjYybDEuNDItMS40M3pNMTkuOTMgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMyTDE4LjMxIDcuMWE3Ljk0MSA3Ljk0MSAwIDAgMSAxLjYyIDMuOXptLTEuNjIgNS45IDEuNDMgMS40M2E5Ljk4MSA5Ljk4MSAwIDAgMCAyLjIxLTUuMzJoLTIuMDJhNy45NDUgNy45NDUgMCAwIDEtMS42MiAzLjg5ek0xMyAxOS45M3YyLjAyYzIuMDEtLjIgMy44NC0xIDUuMzItMi4yMWwtMS40My0xLjQzYy0xLjEuODYtMi40MyAxLjQ0LTMuODkgMS42MnpNMTMgMTJWN2gtMnY1SDdsNSA1IDUtNWgtNHptLTIgNy45M3YyLjAyYy01LjA1LS41LTktNC43Ni05LTkuOTVzMy45NS05LjQ1IDktOS45NXYyLjAyQzcuMDUgNC41NiA0IDcuOTIgNCAxMnMzLjA1IDcuNDQgNyA3LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUZpbGVNb3ZlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWOGgxNnYxMHptLTguMDEtOS0xLjQxIDEuNDFMMTIuMTYgMTJIOHYyaDQuMTZsLTEuNTkgMS41OUwxMS45OSAxNyAxNiAxMy4wMSAxMS45OSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUZpbGVNb3ZlUnRsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTggMTEtNC00IDQtNHYzaDR2MmgtNHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUZpbGVNb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tNiAxMnYtM2gtNHYtNGg0VjhsNSA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJpdmVGaWxlUmVuYW1lT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQxIDUuOCAxNy4yIDQuNTljLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC0yLjY4IDIuNjhMMyAxNS45NlYyMGg0LjA0bDguNzQtOC43NCAyLjYzLTIuNjNjLjc5LS43OC43OS0yLjA1IDAtMi44M3pNNi4yMSAxOEg1di0xLjIxbDguNjYtOC42NiAxLjIxIDEuMjFMNi4yMSAxOHpNMTEgMjBsNC00aDZ2NEgxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJpdmVGb2xkZXJVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjhoMTZ2MTB6TTggMTMuMDFsMS40MSAxLjQxTDExIDEyLjg0VjE3aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDEzLjAxIDEyLjAxIDkgOCAxMy4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZURvd25sb2FkRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxOGgxNHYySDV2LTJ6bTQuNi0yLjdMNSAxMC43bDItMS45IDIuNiAyLjZMMTcgNGwyIDItOS40IDkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZURvd25sb2FkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2LjE3VjNoNnY2aDRsLTMuNTkgMy41OUw5IDYuMTd6bTEyLjE5IDE1LjAyTDIuODEgMi44MSAxLjM5IDQuMjIgNi4xNyA5SDVsNyA3IC41OS0uNTlMMTUuMTcgMThINXYyaDEyLjE3bDIuNjEgMi42MSAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbGVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjg5IDIgMS45OSAySDE1di04aDVWOGwtNi02em0tMSA3VjMuNUwxOC41IDlIMTN6bTQgMTIuNjZWMTZoNS42NnYyaC0yLjI0bDIuOTUgMi45NS0xLjQxIDEuNDFMMTkgMTkuNDF2Mi4yNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZVVwbG9hZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsNC43IDQuNjlMNSAxMGgyLjE3TDkgMTEuODNWMTZoNC4xN2wyIDJINXYyaDEyLjE3bDIuNjEgMi42MXpNMTUgMTBoNGwtNy03LTMuMDkgMy4wOUwxNSAxMi4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA2SDF2MTNjMCAxLjEuOSAyIDIgMmgxN3YtMkgzVjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDRoLTdsLTItMkg3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMTVjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJEZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA4djEwYzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0ybC4wMS0xMmMwLTEuMS44OS0yIDEuOTktMmg2bDIgMmg4YzEuMSAwIDIgLjkgMiAyem0tNS41IDJWOWgtMnYxSDEydjEuNWgxdjRjMCAuODMuNjcgMS41IDEuNSAxLjVoMmMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTRoMVYxMGgtMi41em0wIDUuNWgtMnYtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbGRlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg2LjgzbDE0LjkzIDE0LjkzYy4xNS0uMjguMjQtLjU5LjI0LS45M1Y4YzAtMS4xLS45LTItMi0yek0yLjEgMi4xLjY5IDMuNTFsMS41NiAxLjU2Yy0uMTUuMjgtLjI0LjU5LS4yNC45M0wyIDE4YzAgMS4xLjkgMiAyIDJoMTMuMTdsMy4zMSAzLjMxIDEuNDEtMS40MUwyLjEgMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY4aDE2djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJTaGFyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTUgM2MxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOGgtOHYtMWMwLTEuMzMgMi42Ny0yIDQtMnM0IC42NyA0IDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9sZGVyWmlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yIDZoLTJ2MmgydjJoLTJ2MmgtMnYtMmgydi0yaC0ydi0yaDJ2LTJoLTJWOGgydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJoLThsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0T3ZlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzdjJINVYzaDE0em0tNyA0Yy0zLjg3IDAtNyAzLjEzLTcgN3MzLjEzIDcgNyA3IDctMy4xMyA3LTctMy4xMy03LTctN3ptMCAxMS41Yy0yLjQ5IDAtNC41LTIuMDEtNC41LTQuNVM5LjUxIDkuNSAxMiA5LjVzNC41IDIuMDEgNC41IDQuNS0yLjAxIDQuNS00LjUgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmlkVmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjhoOFYzSDN6bTYgNkg1VjVoNHY0em0tNiA0djhoOHYtOEgzem02IDZINXYtNGg0djR6bTQtMTZ2OGg4VjNoLTh6bTYgNmgtNFY1aDR2NHptLTYgNHY4aDh2LThoLTh6bTYgNmgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMy0xLjY3IDEuNjdMMTguNjcgMyAxNyA0LjY3IDE1LjMzIDNsLTEuNjYgMS42N0wxMiAzbC0xLjY3IDEuNjdMOC42NyAzIDcgNC42NyA1LjMzIDMgMy42NyA0LjY3IDIgM3YxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjN6TTExIDE5SDR2LTZoN3Y2em05IDBoLTd2LTJoN3Yyem0wLTRoLTd2LTJoN3Yyem0wLTRINFY4aDE2djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcXVlc3RRdW90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMSAxMGgtNHYxaDNjLjU1IDAgMSAuNDUgMSAxdjNjMCAuNTUtLjQ1IDEtMSAxaC0xdjFoLTJ2LTFIOXYtMmg0di0xaC0zYy0uNTUgMC0xLS40NS0xLTF2LTNjMC0uNTUuNDUtMSAxLTFoMVY5aDJ2MWgydjJ6bS0yLTRWMy41TDE3LjUgOEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnVsZUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yek03LjgzIDE2IDUgMTMuMTdsMS40MS0xLjQxIDEuNDEgMS40MSAzLjU0LTMuNTQgMS40MSAxLjQxTDcuODMgMTZ6bTkuNTgtM0wxOSAxNC41OSAxNy41OSAxNiAxNiAxNC40MSAxNC40MSAxNiAxMyAxNC41OSAxNC41OSAxMyAxMyAxMS40MSAxNC40MSAxMCAxNiAxMS41OSAxNy41OSAxMCAxOSAxMS40MSAxNy40MSAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU25pcHBldEZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljg4IDEwLjUgMS42MiAxLjYydjMuMzhoLTN2LTVoMS4zOHpNMjIgOHYxMGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMmwuMDEtMTJjMC0xLjEuODktMiAxLjk5LTJoNmwyIDJoOGMxLjEgMCAyIC45IDIgMnptLTMgMy41TDE2LjUgOUgxM3Y4aDZ2LTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dFNuaXBwZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC40MSA4LjQxLTQuODMtNC44M2MtLjM3LS4zNy0uODgtLjU4LTEuNDEtLjU4SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOS44M2MwLS41My0uMjEtMS4wNC0uNTktMS40MnpNNyA3aDd2Mkg3Vjd6bTEwIDEwSDd2LTJoMTB2MnptMC00SDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9waWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTYgMTBINnYtMmg4djJ6bTQtNEg2di0yaDEydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVwbG9hZEZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoN3Y1aDV2MTF6TTggMTUuMDFsMS40MSAxLjQxTDExIDE0Ljg0VjE5aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDE1LjAxIDEyLjAxIDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIwaDE0di0ySDV2MnptMC0xMGg0djZoNnYtNmg0bC03LTctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VzRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LTEwQzkuOCAzIDggNC44IDggN3MxLjggNCA0IDQgNC0xLjggNC00LTEuOC00LTQtNHptNiAxMGMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VzT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTVjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LThjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMkM5LjggMyA4IDQuOCA4IDdzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6bTYgMTJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LTEwQzkuOCAzIDggNC44IDggN3MxLjggNCA0IDQgNC0xLjggNC00LTEuOC00LTQtNHptNiAxMGMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGZTY2FubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoLTFWNEg2djhINWMtMS42NiAwLTMgMS4zNC0zIDN2NWgyMHYtNWMwLTEuNjYtMS4zNC0zLTMtM3ptLTMgMEg4VjZoOHY2em0yIDVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJvd3Nlck5vdFN1cHBvcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZ2MTAuNWwxLjk1IDEuOTVjLjAzLS4xNS4wNS0uMy4wNS0uNDVWNmMwLTEuMS0uOS0yLTItMkg2LjVsMiAySDE5ek0zLjIyIDMuMzIgMS45NSA0LjU5IDMgNS42NFYxOGMwIDEuMS45IDIgMiAyaDEyLjM2bDIuMDYgMi4wNiAxLjI3LTEuMjdMMy4yMiAzLjMyek0xNSAxOEg1VjcuNjRMMTUuMzYgMThIMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb3dzZXJVcGRhdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTN2M2MwIDEuMS0uOSAyLTIgMmgtM2wxIDF2Mkg2di0ybDEtMUg0Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoOHYySDR2MTFoMTZ2LTNoMnptLTcgMi01LTVoNFYzaDJ2N2g0bC01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhc3RDb25uZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIixcIm9wYWNpdHlcIjpcIi4xXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTh2M2gzYzAtMS42Ni0xLjM0LTMtMy0zem0wLTR2MmMyLjc2IDAgNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0xOC03SDV2MS42M2MzLjk2IDEuMjggNy4wOSA0LjQxIDguMzcgOC4zN0gxOVY3ek0xIDEwdjJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0yMC03SDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXN0Rm9yRWR1Y2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek0xIDE4djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC00djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMC00djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0xMCAxLjA5djJMMTQuNSAxNWwzLjUtMS45MXYtMkwxNC41IDEzIDExIDExLjA5ek0xNC41IDYgOSA5bDUuNSAzTDIwIDlsLTUuNS0zelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCIsXCJvcGFjaXR5XCI6XCIuMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek0xIDE4djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC00djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMC00djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb21wdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMkgwdjJoMjR2LTJoLTR6TTQgNmgxNnYxMEg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbm5lY3RlZFR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6TTQgMTR2MmgyYzAtMS4xMS0uODktMi0yLTJ6bTAtM3YxLjQzYzEuOTcgMCAzLjU3IDEuNiAzLjU3IDMuNTdIOWMwLTIuNzYtMi4yNC01LTUtNXptMC0zdjEuNDVjMy42MSAwIDYuNTUgMi45MyA2LjU1IDYuNTVIMTJjMC00LjQyLTMuNTktOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnZleW9yQmVsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE1SDVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNoMTRjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTN6bTAgNEg1Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDE0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxek05IDR2OGMwIC41NS40NSAxIDEgMWg4Yy41NSAwIDEtLjQ1IDEtMVY0YzAtLjU1LS40NS0xLTEtMWgtOGMtLjU1IDAtMSAuNDUtMSAxem03IDRoLTRWNi4wMmg0Vjh6TTIgOS4wMmg0Ljk0djEuOTFIMlY5LjAyem0yLjAxLTNoMi45M3YxLjk2SDQuMDFWNi4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVza3RvcE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmg2bC0yIDJ2MWg4di0xbC0yLTJoNmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2t0b3BXaW5kb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDZ2Mkg4djJoOHYtMmgtMnYtMmg2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2ZWxvcGVyQm9hcmRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjgzIDVIMTh2MTAuMTdMMTkuODMgMTdIMjJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDJWN2gtMlY1YzAtMS4xLS45LTItMi0ySDUuODNsMiAyek0xMiA5LjE3VjdoNHYzaC0zLjE3TDEyIDkuMTd6TTkuODMgN0gxMXYxLjE3TDkuODMgN3ptNCA0SDE2djIuMTdMMTMuODMgMTF6TTE4IDIxYy4wNiAwIC4xMSAwIC4xNi0uMDFsMi4zMiAyLjMyIDEuNDEtMS40MUwyLjEgMi4xLjY5IDMuNTFsMS4zMiAxLjMyQzIgNC44OSAyIDQuOTQgMiA1djE0YzAgMS4xLjkgMiAyIDJoMTR6TTQgMTlWNi44M2wyIDJWMTJoMy4xN2wxIDFINnY0aDV2LTMuMTdsMSAxVjE3aDIuMTdsMiAySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmVsb3BlckJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5VjdoLTJWNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi0yaDJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDJ6bS00IDEwSDRWNWgxNHYxNHpNNiAxM2g1djRINnptNi02aDR2M2gtNHpNNiA3aDV2NUg2em02IDRoNHY2aC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmljZUh1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDE2LTQtNFY4LjgyQzE0LjE2IDguNCAxNSA3LjMgMTUgNmMwLTEuNjYtMS4zNC0zLTMtM1M5IDQuMzQgOSA2YzAgMS4zLjg0IDIuNCAyIDIuODJWMTJsLTQgNEgzdjVoNXYtMy4wNWw0LTQuMiA0IDQuMlYyMWg1di01aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZpY2VVbmtub3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMThIN1Y1aDEwdjE0ek0xMiA2LjcyYy0xLjk2IDAtMy41IDEuNTItMy41IDMuNDdoMS43NWMwLS45My44Mi0xLjc1IDEuNzUtMS43NXMxLjc1LjgyIDEuNzUgMS43NWMwIDEuNzUtMi42MyAxLjU3LTIuNjMgNC40NWgxLjc2YzAtMS45NiAyLjYyLTIuMTkgMi42Mi00LjQ1IDAtMS45Ni0xLjU0LTMuNDctMy41LTMuNDd6bS0uODggOC44aDEuNzZ2MS43NmgtMS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2aWNlc090aGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA2aDE4VjRIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg0di0ySDNWNnptMTAgNkg5djEuNzhjLS42MS41NS0xIDEuMzMtMSAyLjIycy4zOSAxLjY3IDEgMi4yMlYyMGg0di0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMnMtLjM5LTEuNjctMS0yLjIyVjEyem0tMiA1LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek0yMiA4aC02Yy0uNSAwLTEgLjUtMSAxdjEwYzAgLjUuNSAxIDEgMWg2Yy41IDAgMS0uNSAxLTFWOWMwLS41LS41LTEtMS0xem0tMSAxMGgtNHYtOGg0djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDIzaDh2LTJIOHYyem04LTIxLjk5TDggMWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE2IDE1SDhWNWg4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFYXJidWRzQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDdoLTFWNmgtMnYxaC0xYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMVY4YzAtLjU1LS40NS0xLTEtMXpNMTAuNjIgNkM4Ljc2IDYgNy4yNSA3LjUxIDcuMjUgOS4zOHY1LjI1YzAgMS4wNC0uODQgMS44OC0xLjg4IDEuODhzLTEuODctLjg1LTEuODctMS44OXYtNC43Yy4xNi4wNS4zMy4wOC41LjA4IDEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMnY2LjYyQzIgMTYuNDkgMy41MSAxOCA1LjM4IDE4czMuMzgtMS41MSAzLjM4LTMuMzhWOS4zOGMwLTEuMDQuODQtMS44OCAxLjg4LTEuODhzMS44OC44NCAxLjg4IDEuODh2NC43Yy0uMTgtLjA1LS4zNS0uMDgtLjUyLS4wOC0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMlY5LjM4QzE0IDcuNTEgMTIuNDkgNiAxMC42MiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFYXJidWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4yIDMuMDFDNC40NCAyLjg5IDMgNC40MiAzIDYuMTlWMTZjMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNVY4YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDN2N2gtLjgzYy0xLjYxIDAtMy4wNiAxLjE4LTMuMTcgMi43OUEzIDMgMCAwIDAgMTcuOCAyMWMxLjc2LjEyIDMuMi0xLjQyIDMuMi0zLjE4VjhjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDV2OGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtM1Y5aC44M0M3LjQ0IDkgOC44OSA3LjgyIDkgNi4yMWMuMTEtMS42OC0xLjE3LTMuMS0yLjgtMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JrbGlmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE3djJoLTVWM2gydjE0aDN6bS02LjI3LTEuODVjLjE3LjQyLjI3Ljg3LjI3IDEuMzUgMCAxLjkzLTEuNTcgMy41LTMuNSAzLjUtMS40IDAtMi42LS44Mi0zLjE2LTJINi44M0EyLjk5IDIuOTkgMCAwIDEgNCAyMGMtMS42NiAwLTMtMS4zNC0zLTMgMC0uODkuMzktMS42OSAxLTIuMjRWMTBoMlY0aDhsNC43MyAxMS4xNXpNNSAxN2MwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xem04LjY1LTQtMi45Ny03SDZ2NGwyLjkyIDNoNC43M3pNMTUgMTYuNWMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRnJvbnRMb2FkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS41IDYuNS0xLjkxIDEuOTFjLS4zOC4zOC0uNTkuODktLjU5IDEuNDJWMTFoLTFWN2MwLTEuNjYtMS4zNC0zLTMtM0g4djVIM2MtMS4xIDAtMiAuOS0yIDJ2NS44NWMwIDEuNTggMS4xNiAzLjAxIDIuNzQgMy4xNGEyLjk5IDIuOTkgMCAwIDAgMy4wNy0xLjk4bDQuMzctLjAxYTIuOTc5IDIuOTc5IDAgMCAwIDMuNDEgMS45NCAzLjAxMyAzLjAxMyAwIDAgMCAyLjM1LTIuMzljLjItMS4xMS0uMjItMi4xMS0uOTUtMi43N1YxM2gxYzAgMS4xLjkgMiAyIDJoNUwxOS41IDYuNXpNNCAxOGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem02LTEyaDNjLjU1IDAgMSAuNDUgMSAxdjRoLTRWNnptNCAxMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHYW1lcGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNy41VjJIOXY1LjVsMyAzIDMtM3pNNy41IDlIMnY2aDUuNWwzLTMtMy0zek05IDE2LjVWMjJoNnYtNS41bC0zLTMtMyAzek0xNi41IDlsLTMgMyAzIDNIMjJWOWgtNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFkcGhvbmVzQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDdoLTFWNmgtMnYxaC0xYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMVY4YzAtLjU1LS40NS0xLTEtMXpNOCA2Yy0zLjMxIDAtNiAyLjY5LTYgNnY0YzAgMS4xLjkgMiAyIDJoMnYtNUgzLjV2LTFjMC0yLjQ4IDIuMDItNC41IDQuNS00LjVzNC41IDIuMDIgNC41IDQuNXYxSDEwdjVoMmMxLjEgMCAyLS45IDItMnYtNGMwLTMuMzEtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhZHBob25lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNhOSA5IDAgMCAwLTkgOXY3YzAgMS4xLjkgMiAyIDJoNHYtOEg1di0xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDd2MWgtNHY4aDRjMS4xIDAgMi0uOSAyLTJ2LTdhOSA5IDAgMCAwLTktOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhZHNldE1pYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCIsXCJvcGFjaXR5XCI6XCIuMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxYTkgOSAwIDAgMC05IDl2N2MwIDEuNjYgMS4zNCAzIDMgM2gzdi04SDV2LTJjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgN3YyaC00djhoNHYxaC03djJoNmMxLjY2IDAgMy0xLjM0IDMtM1YxMGE5IDkgMCAwIDAtOS05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFkc2V0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzMuODcgMCA3IDMuMTMgNyA3djJoLTIuOTJMMjEgMTcuOTJWMTFhOSA5IDAgMCAwLTktOWMtMS45NSAwLTMuNzYuNjItNS4yMyAxLjY4bDEuNDQgMS40NEE2LjkxNCA2LjkxNCAwIDAgMSAxMiA0ek0yLjI3IDEuNzIgMSAzbDMuMzMgMy4zMkE4Ljg5OSA4Ljg5OSAwIDAgMCAzIDExdjdjMCAxLjY2IDEuMzQgMyAzIDNoM3YtOEg1di0yYzAtMS4xNy4yOS0yLjI2Ljc5LTMuMjJMMTUgMTd2NGgzYy4zIDAgLjU5LS4wNi44Ni0uMTRMMjEgMjNsMS4yNy0xLjI3LTIwLTIwLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIixcIm9wYWNpdHlcIjpcIi4xXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDFhOSA5IDAgMCAwLTkgOXY3YzAgMS42NiAxLjM0IDMgMyAzaDN2LThINXYtMmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3djJoLTR2OGgzYzEuNjYgMCAzLTEuMzQgMy0zdi03YTkgOSAwIDAgMC05LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWVNYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVDMi43OSA1IDEgNi43OSAxIDl2NWMwIDIuMjEgMS43OSA0IDQgNGgydjFoMTB2LTFoMmMyLjIxIDAgNC0xLjc5IDQtNFY5YzAtMi4yMS0xLjc5LTQtNC00em0yIDljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDE0YzEuMSAwIDIgLjkgMiAydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWVNaW5pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNUM0LjE5IDUgMiA5LjQ4IDIgMTJjMCAzLjg2IDMuMTMgNyA2Ljk5IDdoNi4wMkMxNy43IDE5IDIyIDE2LjkyIDIyIDEyYzAgMCAwLTctMTAtN3ptMCAyYzcuNjQgMCA3Ljk5IDQuNTEgOCA1SDRjMC0uMi4wOS01IDgtNXptMi44NiAxMEg5LjE0Yy0yLjEgMC0zLjkyLTEuMjQtNC43MS0zaDE1LjE1Yy0uOCAxLjc2LTIuNjIgMy00LjcyIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNEgzYy0xLjEgMC0yIC45LTIgMnYxM2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTcgMTJ2Mkg1di0yaDJ6bS0yLTJWOGgydjJINXptNiAydjJIOXYtMmgyem0tMi0yVjhoMnYySDl6bTcgNnYxSDh2LTFoOHptLTEtNHYyaC0ydi0yaDJ6bS0yLTJWOGgydjJoLTJ6bTQgNHYtMmgydjJoLTJ6bTItNGgtMlY4aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgOC41OSAxMiAxMy4xN2w0LjU5LTQuNThMMTggMTBsLTYgNi02LTYgMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDEgMTYuNTkgMTAuODMgMTJsNC41OC00LjU5TDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNTkgMTYuNTkgMTMuMTcgMTIgOC41OSA3LjQxIDEwIDZsNiA2LTYgNi0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgMTUuNDEgMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0bC02LTYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEJhY2tzcGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExSDYuODNsMy41OC0zLjU5TDkgNmwtNiA2IDYgNiAxLjQxLTEuNDFMNi44MyAxM0gyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRDYXBzbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDguNDEgMTYuNTkgMTMgMTggMTEuNTlsLTYtNi02IDZMNy40MSAxMyAxMiA4LjQxek02IDE4aDEydi0ySDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRDb21tYW5kS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAzQzE1LjU3IDMgMTQgNC41NyAxNCA2LjVWOGgtNFY2LjVDMTAgNC41NyA4LjQzIDMgNi41IDNTMyA0LjU3IDMgNi41IDQuNTcgMTAgNi41IDEwSDh2NEg2LjVDNC41NyAxNCAzIDE1LjU3IDMgMTcuNVM0LjU3IDIxIDYuNSAyMXMzLjUtMS41NyAzLjUtMy41VjE2aDR2MS41YzAgMS45MyAxLjU3IDMuNSAzLjUgMy41czMuNS0xLjU3IDMuNS0zLjUtMS41Ny0zLjUtMy41LTMuNUgxNnYtNGgxLjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTkuNDMgMyAxNy41IDN6TTE2IDhWNi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzE4LjMzIDggMTcuNSA4SDE2ek02LjUgOEM1LjY3IDggNSA3LjMzIDUgNi41UzUuNjcgNSA2LjUgNSA4IDUuNjcgOCA2LjVWOEg2LjV6bTMuNSA2di00aDR2NGgtNHptNy41IDVjLS44MyAwLTEuNS0uNjctMS41LTEuNVYxNmgxLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNXptLTExIDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDE2IDYuNSAxNkg4djEuNWMwIC44My0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQ29udHJvbEtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUgMTIgMS40MSAxLjQxTDEyIDcuODNsNS41OSA1LjU4TDE5IDEybC03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkRG91YmxlQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNi40MSAxNi41OSA1IDEyIDkuNTggNy40MSA1IDYgNi40MWw2IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDEzLTEuNDEtMS40MUwxMiAxNi4xN2wtNC41OS00LjU4TDYgMTNsNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZERvdWJsZUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjU5IDE4IDE5IDE2LjU5IDE0LjQyIDEyIDE5IDcuNDEgMTcuNTkgNmwtNiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSAxOCAxLjQxLTEuNDFMNy44MyAxMmw0LjU4LTQuNTlMMTEgNmwtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZERvdWJsZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQxIDYgNSA3LjQxIDkuNTggMTIgNSAxNi41OSA2LjQxIDE4bDYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNi0xLjQxIDEuNDFMMTYuMTcgMTJsLTQuNTggNC41OUwxMyAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkRG91YmxlQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTcuNTkgNy40MSAxOSAxMiAxNC40MiAxNi41OSAxOSAxOCAxNy41OWwtNi02elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDExIDEuNDEgMS40MUwxMiA3LjgzbDQuNTkgNC41OEwxOCAxMWwtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEhpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxNWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDNoMnYyaC0yVjZ6bTAgM2gydjJoLTJWOXpNOCA2aDJ2Mkg4VjZ6bTAgM2gydjJIOFY5em0tMSAySDVWOWgydjJ6bTAtM0g1VjZoMnYyem05IDdIOHYtMmg4djJ6bTAtNGgtMlY5aDJ2MnptMC0zaC0yVjZoMnYyem0zIDNoLTJWOWgydjJ6bTAtM2gtMlY2aDJ2MnptLTcgMTUgNC00SDhsNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZE9wdGlvbktleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDVoNnYyaC02ek05IDVIM3YyaDQuODVsNi45MiAxMkgyMXYtMmgtNS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRSZXR1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3djRINS44M2wzLjU4LTMuNTlMOCA2bC02IDYgNiA2IDEuNDEtMS40MUw1LjgzIDEzSDIxVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkVGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNTkgNy40MSAxNS4xNyAxMUgxdjJoMTQuMTdsLTMuNTkgMy41OUwxMyAxOGw2LTYtNi02LTEuNDEgMS40MXpNMjAgNnYxMmgyVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkVm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA2YzAtMS42Ni0xLjM0LTMtMy0zUzkgNC4zNCA5IDZ2NmMwIDEuNjYgMS4zNCAzIDMgM3ptNS4zLTNjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDE1IDYuNyAxMkg1YzAgMy40MiAyLjcyIDYuMjMgNiA2LjcyVjIyaDJ2LTMuMjhjMy4yOC0uNDggNi0zLjMgNi02LjcyaC0xLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxN2MwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS05IDNoMnYyaC0yVjh6bTAgM2gydjJoLTJ2LTJ6TTggOGgydjJIOFY4em0wIDNoMnYySDh2LTJ6bS0xIDJINXYtMmgydjJ6bTAtM0g1VjhoMnYyem05IDdIOHYtMmg4djJ6bTAtNGgtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnptMyAzaC0ydi0yaDJ2MnptMC0zaC0yVjhoMnYyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhcHRvcENocm9tZWJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOFYzSDJ2MTVIMHYyaDI0di0yaC0yem0tOCAwaC00di0xaDR2MXptNi0zSDRWNWgxNnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFwdG9wTWFjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAySDBjMCAxLjEuOSAyIDIgMmgyMGMxLjEgMCAyLS45IDItMmgtNHpNNCA1aDE2djExSDRWNXptOCAxNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXB0b3BXaW5kb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTh2LTFjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAydjFIMHYyaDI0di0yaC00ek00IDVoMTZ2MTBINFY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXB0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJIMHYyaDI0di0yaC00ek00IDZoMTZ2MTBINFY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZW1vcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA5SDl2Nmg2Vjl6bS0yIDRoLTJ2LTJoMnYyem04LTJWOWgtMlY3YzAtMS4xLS45LTItMi0yaC0yVjNoLTJ2MmgtMlYzSDl2Mkg3Yy0xLjEgMC0yIC45LTIgMnYySDN2MmgydjJIM3YyaDJ2MmMwIDEuMS45IDIgMiAyaDJ2Mmgydi0yaDJ2Mmgydi0yaDJjMS4xIDAgMi0uOSAyLTJ2LTJoMnYtMmgtMnYtMmgyem0tNCA2SDdWN2gxMHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9uaXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDNsLTEgMXYyaDEydi0ybC0xLTFoM2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEzSDRWNWgxNnYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxLjA3VjloN2MwLTQuMDgtMy4wNS03LjQ0LTctNy45M3pNNCAxNWMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04di00SDR2NHptNy0xMy45M0M3LjA1IDEuNTYgNCA0LjkyIDQgOWg3VjEuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTh2NGgzdi0yaDUuNXYyaDN2LTJIMTl2Mmgzdi00ek0xOCAySDZjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bS0zIDZIOVY2aDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMUg4QzYuMzQgMSA1IDIuMzQgNSA0djE2YzAgMS42NiAxLjM0IDMgMyAzaDhjMS42NiAwIDMtMS4zNCAzLTNWNGMwLTEuNjYtMS4zNC0zLTMtM3ptLTIgMjBoLTR2LTFoNHYxem0zLjI1LTNINi43NVY0aDEwLjV2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lSXBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxaC04QTIuNSAyLjUgMCAwIDAgNSAzLjV2MTdBMi41IDIuNSAwIDAgMCA3LjUgMjNoOGEyLjUgMi41IDAgMCAwIDIuNS0yLjV2LTE3QTIuNSAyLjUgMCAwIDAgMTUuNSAxem0tNCAyMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQuNS00SDdWNGg5djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZWxpbmtPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNlY0SDYuODJsMiAySDIyek0xLjkyIDEuNjUuNjUgMi45MmwxLjgyIDEuODJDMi4xOCA1LjA4IDIgNS41MiAyIDZ2MTFIMHYzaDE3LjczbDIuMzUgMi4zNSAxLjI3LTEuMjdMMy44OSAzLjYyIDEuOTIgMS42NXpNNCA2LjI3IDE0LjczIDE3SDRWNi4yN3pNMjMgOGgtNmMtLjU1IDAtMSAuNDUtMSAxdjQuMThsMiAyVjEwaDR2N2gtMi4xOGwzIDNIMjNjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZWxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZoMThWNEg0Yy0xLjEgMC0yIC45LTIgMnYxMUgwdjNoMTR2LTNINFY2em0xOSAyaC02Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTR2LTdoNHY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQb2ludE9mU2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN2MtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgNEg3VjRoMTB2MnptMyAxNkg0Yy0xLjEgMC0yLS45LTItMnYtMWgyMHYxYzAgMS4xLS45IDItMiAyem0tMS40Ny0xMS44MUEyLjAwOCAyLjAwOCAwIDAgMCAxNi43IDlINy4zYy0uNzkgMC0xLjUxLjQ3LTEuODMgMS4xOUwyIDE4aDIwbC0zLjQ3LTcuODF6TTkuNSAxNmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvd2VySW5wdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgOXYyaDE5VjlIMnptMCA2aDV2LTJIMnYyem03IDBoNXYtMkg5djJ6bTcgMGg1di0yaC01djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIgNS45LjgtLjhDMTkuNiAzLjcgMTcuOCAzIDE2IDNzLTMuNi43LTUgMi4xbC44LjhDMTMgNC44IDE0LjUgNC4yIDE2IDQuMnMzIC42IDQuMiAxLjd6bS0uOS44Yy0uOS0uOS0yLjEtMS40LTMuMy0xLjRzLTIuNC41LTMuMyAxLjRsLjguOGMuNy0uNyAxLjYtMSAyLjUtMSAuOSAwIDEuOC4zIDIuNSAxbC44LS44ek0xOSAxM2gtMlY5aC0ydjRINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi00YzAtMS4xLS45LTItMi0yek04IDE4SDZ2LTJoMnYyem0zLjUgMGgtMnYtMmgydjJ6bTMuNSAwaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2Nhbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjggMTAuNyA0LjIgNWwtLjcgMS45TDE3LjYgMTJINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01LjVjMC0uOC0uNS0xLjYtMS4yLTEuOHpNNyAxN0g1di0yaDJ2MnptMTIgMEg5di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlY3VyaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bTAgMTAuOTloN2MtLjUzIDQuMTItMy4yOCA3Ljc5LTcgOC45NFYxMkg1VjYuM2w3LTMuMTF2OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaW1DYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTkgNGMwLTEuMS0uODktMi0xLjk5LTJoLThMNCA4djEyYzAgMS4xLjkgMiAyIDJoMTIuMDFjMS4xIDAgMS45OS0uOSAxLjk5LTJsLS4wMS0xNnpNOSAxOUg3di0yaDJ2MnptOCAwaC0ydi0yaDJ2MnptLTgtNEg3di00aDJ2NHptNCA0aC0ydi00aDJ2NHptMC02aC0ydi0yaDJ2MnptNCAyaC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU21hcnREaXNwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuNSAxNi41di05bDcgNC41LTcgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbWFydFNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVIM2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tMyAxMkg2VjdoMTJ2MTB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExLjI1aDEuNXYxLjVIMTV6TTEyLjUgMTEuMjVIMTR2MS41aC0xLjV6TTEwIDExLjI1aDEuNXYxLjVIMTB6TTcuNSAxMS4yNUg5djEuNUg3LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNtYXJ0VG95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOVY3YzAtMS4xLS45LTItMi0yaC0zYzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDVINmMtMS4xIDAtMiAuOS0yIDJ2MmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM3Y0YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTRjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTN6TTcuNSAxMS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzkuODMgMTMgOSAxM3MtMS41LS42Ny0xLjUtMS41ek0xNiAxN0g4di0yaDh2MnptLTEtNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE0LjE3IDEwIDE1IDEwczEuNS42NyAxLjUgMS41UzE1LjgzIDEzIDE1IDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbWFydHBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVha2VyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4yIDFIOS44QzguODEgMSA4IDEuODEgOCAyLjh2MTQuNGMwIC45OS44MSAxLjc5IDEuOCAxLjc5bDguNC4wMWMuOTkgMCAxLjgtLjgxIDEuOC0xLjhWMi44YzAtLjk5LS44MS0xLjgtMS44LTEuOHpNMTQgM2MxLjEgMCAyIC44OSAyIDJzLS45IDItMiAyLTItLjg5LTItMiAuOS0yIDItMnptMCAxMy41Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjEyLjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDVINHYxNmEyIDIgMCAwIDAgMiAyaDEwdi0ySDZWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BlYWtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN2MtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAxLjk5IDIgMS45OUwxNyAyMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNSAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMmEyIDIgMCAxIDEgMC00em0wIDE2Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMC04Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41OSA3LjQxIDE4LjE3IDExSDZ2MmgxMi4xN2wtMy41OSAzLjU5TDE2IDE4bDYtNi02LTYtMS40MSAxLjQxek0yIDZ2MTJoMlY2SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYmxldEFuZHJvaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAwSDZDNC4zNCAwIDMgMS4zNCAzIDN2MThjMCAxLjY2IDEuMzQgMyAzIDNoMTJjMS42NiAwIDMtMS4zNCAzLTNWM2MwLTEuNjYtMS4zNC0zLTMtM3ptLTQgMjJoLTR2LTFoNHYxem01LjI1LTNINC43NVYzaDE0LjV2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYmxldE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAwaC0xNEEyLjUgMi41IDAgMCAwIDIgMi41djE5QTIuNSAyLjUgMCAwIDAgNC41IDI0aDE0YTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtMTlBMi41IDIuNSAwIDAgMCAxOC41IDB6bS03IDIzYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNy41LTRINFYzaDE1djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNmMwLTEuMS0uOS0yLTItMnptLTIgMTRINVY2aDE0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb3lzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNGMwLTEuOTUtMS40LTMuNTctMy4yNS0zLjkyTDE3LjQgNi4wNUEyLjk3OCAyLjk3OCAwIDAgMCAxNC41NiA0SDkuNDRDOC4xNSA0IDcgNC44MiA2LjYgNi4wNUw1LjgxIDguNCA0LjQxIDdsLjI5LS4yOUEuOTk2Ljk5NiAwIDEgMCAzLjI5IDUuM2wtMiAyQS45OTYuOTk2IDAgMSAwIDIuNyA4LjcxbC4zLS4zIDEuNzkgMS43OUMzLjE4IDEwLjcyIDIgMTIuMjIgMiAxNGMwIDEuNS44MyAyLjc5IDIuMDUgMy40OEEzIDMgMCAwIDAgNyAyMGMxLjMgMCAyLjQtLjg0IDIuODItMmg0LjM3Yy40MSAxLjE2IDEuNTEgMiAyLjgyIDJhMyAzIDAgMCAwIDIuOTUtMi41MkMyMS4xNyAxNi43OSAyMiAxNS41IDIyIDE0ek03IDE4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTQtOEg3LjQxbC0uMDItLjAyIDEuMS0zLjNBMSAxIDAgMCAxIDkuNDQgNkgxMXY0em0yLTRoMS41NmExIDEgMCAwIDEgLjk1LjY4bDEuMSAzLjMySDEzVjZ6bTQgMTJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJvbGxleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE0djJINFY0SDJWMmg0djEyaDE1ek01Ljk5IDE3QzQuODkgMTcgNCAxNy45IDQgMTlzLjg5IDIgMS45OSAyQzcuMSAyMSA4IDIwLjEgOCAxOXMtLjktMi0yLjAxLTJ6bTEzIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyUzIxIDIwLjEgMjEgMTlzLS45LTItMi4wMS0yek0xMyAxM0g3VjdoNnY2em03IDBoLTZWN2g2djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvZ2FtZUFzc2V0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiAzLjMgNi4xM0MyLjU0IDYuNDEgMiA3LjE1IDIgOHY4YzAgMS4xLjkgMiAyIDJoMTEuMTdsNC42MSA0LjYxIDEuNDEtMS40MnpNOSAxM3YySDd2LTJINXYtMmgyVjkuODNMMTAuMTcgMTNIOXptMTEuNyA0Ljg3Yy43Ni0uMjggMS4zLTEuMDIgMS4zLTEuODdWOGMwLTEuMS0uOS0yLTItMkg4LjgzTDIwLjcgMTcuODd6TTE3LjUgOWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41LTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9nYW1lQXNzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMHYyNGgyNFYwSDB6bTIzIDE2YzAgMS4xLS45IDItMiAySDNjLTEuMSAwLTItLjktMi0yVjhjMC0xLjEuOS0yIDItMmgxOGMxLjEgMCAyIC45IDIgMnY4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2SDNjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tMTAgN0g4djNINnYtM0gzdi0yaDNWOGgydjNoM3Yyem00LjUgMmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQtM2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE4LjY3IDkgMTkuNSA5czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0Y2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY0LS4xMyAxLjI1LS4zNSAxLjgybDEuNSAxLjVhNi45NjMgNi45NjMgMCAwIDAtMS43OS04Ljc5TDE1IDJIOWwtLjk2IDMuMjEgMi4xNCAyLjE0QzEwLjc1IDcuMTMgMTEuMzYgNyAxMiA3ek0yLjgxIDIuODEgMS4zOSA0LjIybDQuNDYgNC40NmE2Ljk2MyA2Ljk2MyAwIDAgMCAxLjc5IDguNzlMOSAyMmg2bC45Ni0zLjIxIDMuODIgMy44MiAxLjQxLTEuNDFMMi44MSAyLjgxek0xMiAxN2MtMi43NiAwLTUtMi4yNC01LTUgMC0uNjQuMTMtMS4yNS4zNS0xLjgybDYuNDcgNi40N2MtLjU3LjIyLTEuMTguMzUtMS44Mi4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwiLFwib3BhY2l0eVwiOlwiLjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJjMC0yLjU0LTEuMTktNC44MS0zLjA0LTYuMjdMMTYgMEg4bC0uOTUgNS43M0M1LjE5IDcuMTkgNCA5LjQ1IDQgMTJzMS4xOSA0LjgxIDMuMDUgNi4yN0w4IDI0aDhsLjk2LTUuNzNBNy45NzYgNy45NzYgMCAwIDAgMjAgMTJ6TTYgMTJjMC0zLjMxIDIuNjktNiA2LTZzNiAyLjY5IDYgNi0yLjY5IDYtNiA2LTYtMi42OS02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9Nb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDMgMy41NmMtMS42Ny0xLjM5LTMuNzQtMi4zLTYuMDMtMi41MXYyLjAxYzEuNzMuMTkgMy4zMS44OCA0LjYxIDEuOTJsMS40Mi0xLjQyek0xMSAzLjA2VjEuMDVjLTIuMjkuMi00LjM2IDEuMTItNi4wMyAyLjUxbDEuNDIgMS40MkE4LjkyOCA4LjkyOCAwIDAgMSAxMSAzLjA2ek00Ljk4IDYuMzkgMy41NiA0Ljk3QzIuMTcgNi42NCAxLjI2IDguNzEgMS4wNSAxMWgyLjAxYy4xOS0xLjczLjg4LTMuMzEgMS45Mi00LjYxek0yMC45NCAxMWgyLjAxYy0uMjEtMi4yOS0xLjEyLTQuMzYtMi41MS02LjAzbC0xLjQyIDEuNDJBOC45MjggOC45MjggMCAwIDEgMjAuOTQgMTF6TTcgMTJsMy40NCAxLjU2TDEyIDE3bDEuNTYtMy40NEwxNyAxMmwtMy40NC0xLjU2TDEyIDdsLTEuNTYgMy40NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjFhOC45NiA4Ljk2IDAgMCAxLTcuNDYtNEg3di0ySDF2Nmgydi0yLjdjMS45OSAyLjg0IDUuMjcgNC43IDkgNC43IDQuODcgMCA5LTMuMTcgMTAuNDQtNy41NmwtMS45Ni0uNDVDMTkuMjUgMTguNDggMTUuOTIgMjEgMTIgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsaW5kc0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMTEuMjVjMCAuOTcuNzggMS43NSAxLjc1IDEuNzVzMS43NS0uNzggMS43NS0xLjc1SDIydi0yaC0yem0tMi04aC0yVjloMnYyem0tNCAwSDZWOWg4djJ6bTAgMnYySDZ2LTJoOHptMiAwaDJ2MmgtMnYtMnptMi02aC0yVjVoMnYyem0tNC0ydjJINlY1aDh6TTYgMTl2LTJoOHYySDZ6bTEwIDB2LTJoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbGluZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xNiA5aDJ2MmgtMlY5em0tMiAySDZWOWg4djJ6bTQtNGgtMlY1aDJ2MnptLTQtMnYySDZWNWg4ek02IDE5di02aDh2MS44MkExLjc0NiAxLjc0NiAwIDAgMCAxNSAxOGExLjc0NiAxLjc0NiAwIDAgMCAxLTMuMThWMTNoMnY2SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb2FkY2FzdE9uSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDZjMC0xLjEtLjktMi0yLTJINHYyaDE2djIuNTljLjczLjI5IDEuNC42OSAyIDEuMTdWNnpNOCA5SDNjLS41IDAtMSAuNS0xIDF2OWMwIC41LjUgMSAxIDFoNWMuNSAwIDEtLjUgMS0xdi05YzAtLjUtLjUtMS0xLTF6bS0xIDlINHYtN2gzdjd6TTE3Ljc1IDE2Ljk3Yy4zLS4yMy41LS41Ny41LS45N2ExLjI1IDEuMjUgMCAwIDAtMi41IDBjMCAuNC4yLjc1LjUuOTdWMjJoMS41di01LjAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMy41YTIuNSAyLjUgMCAwIDEgMi41IDIuNWMwIC42OS0uMjggMS4zMS0uNzMgMS43NmwxLjA2IDEuMDZDMjAuNTUgMTguMSAyMSAxNy4xIDIxIDE2YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0YzAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsMS4wNi0xLjA2QTIuNSAyLjUgMCAwIDEgMTcgMTMuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOS41YTYuNSA2LjUgMCAwIDAtNi41IDYuNWMwIDEuNzkuNzMgMy40MiAxLjkgNC42bDEuMDYtMS4wNkMxMi41NiAxOC42MyAxMiAxNy4zOCAxMiAxNmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS4zNy0uNTYgMi42Mi0xLjQ2IDMuNTJsMS4wNyAxLjA2QTYuNSA2LjUgMCAwIDAgMTcgOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcm9hZGNhc3RPblBlcnNvbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOGMuNyAwIDEuMzguMSAyLjAyLjI3TDEyIDMgNCA5djEyaDYuNzZBNy45OTggNy45OTggMCAwIDEgMTcgOHpNMTcgMTQuNzVjLS42OSAwLTEuMjUuNTYtMS4yNSAxLjI1IDAgLjQuMi43NS41Ljk3VjIyaDEuNXYtNS4wM2MuMy0uMjMuNS0uNTcuNS0uOTcgMC0uNjktLjU2LTEuMjUtMS4yNS0xLjI1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmMtMi4yMSAwLTQgMS43OS00IDQgMCAxLjEuNDUgMi4xIDEuMTcgMi44M2wxLjA2LTEuMDZBMi41IDIuNSAwIDEgMSAxOS41IDE2YzAgLjY5LS4yOCAxLjMxLS43MyAxLjc2bDEuMDYgMS4wNkMyMC41NSAxOC4xIDIxIDE3LjEgMjEgMTZjMC0yLjIxLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDkuNWE2LjUgNi41IDAgMCAwLTYuNSA2LjVjMCAxLjc5LjczIDMuNDIgMS45IDQuNmwxLjA2LTEuMDZDMTIuNTYgMTguNjMgMTIgMTcuMzggMTIgMTZjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWMwIDEuMzctLjU2IDIuNjItMS40NiAzLjUybDEuMDcgMS4wNkE2LjUgNi41IDAgMCAwIDE3IDkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWR5U25vd2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMThjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bTEyIDBjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bS05IDRjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bTMtNGMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXptMyA0YzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMS0uNDUtMS0xLTEtMSAuNDUtMSAxem0zLjUtNmgtMTBBNS41MSA1LjUxIDAgMCAxIDIgMTAuNWMwLTIuNzYgMi4wOS01LjA5IDQuNzgtNS40NEE1Ljk3NSA1Ljk3NSAwIDAgMSAxMiAyYzIuOTcgMCA1LjQ1IDIuMTggNS45MiA1LjAyQTQuNSA0LjUgMCAwIDEgMjIgMTEuNWMwIDIuNDgtMi4wMiA0LjUtNC41IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VydGFpbnNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xMSA1aDJ2MTRoLTJWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VydGFpbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek04LjE5IDEyYzIuMDQtMS4zNSAzLjUtMy45NCAzLjc2LTdoLjA5Yy4yNiAzLjA2IDEuNzIgNS42NSAzLjc2IDctMi4wNCAxLjM1LTMuNSAzLjk0LTMuNzYgN2gtLjA5Yy0uMjYtMy4wNi0xLjcyLTUuNjUtMy43Ni03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY0JvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC42OSAyLjIxIDQuMzMgMTEuNDljLS42NC41OC0uMjggMS42NS41OCAxLjczTDEzIDE0bC00Ljg1IDYuNzZjLS4yMi4zMS0uMTkuNzQuMDggMS4wMS4zLjMuNzcuMzEgMS4wOC4wMmwxMC4zNi05LjI4Yy42NC0uNTguMjgtMS42NS0uNTgtMS43M0wxMSAxMGw0Ljg1LTYuNzZjLjIyLS4zMS4xOS0uNzQtLjA4LTEuMDFhLjc3Ljc3IDAgMCAwLTEuMDgtLjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY01ldGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC45NiAwLTkgNC4wNC05IDkgMCAzLjkxIDIuNTEgNy4yNCA2IDguNDdWMjJoMnYtMi4wNmE4LjI2MiA4LjI2MiAwIDAgMCAyIDBWMjJoMnYtMi41M2MzLjQ5LTEuMjQgNi00LjU3IDYtOC40NyAwLTQuOTYtNC4wNC05LTktOXptMi4yNSAxMi0zIDMtMS41LTEuNUwxMSAxNC4yNSA5Ljc1IDEzbDMtMyAxLjUgMS41TDEzIDEyLjc1IDE0LjI1IDE0ek0xNiA5SDhWN2g4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVuZXJneVNhdmluZ3NMZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM2MtNC44IDAtOSAzLjg2LTkgOSAwIDIuMTIuNzQgNC4wNyAxLjk3IDUuNjFMMyAxOS41OSA0LjQxIDIxbDEuOTctMS45N0E5LjAxMiA5LjAxMiAwIDAgMCAxMiAyMWMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjRBOC45NSA4Ljk1IDAgMCAwIDIxIDEyVjNoLTl6bTMuODMgOS4yNi01LjE2IDQuNjNjLS4xNi4xNS0uNDEuMTQtLjU2LS4wMWEuMzk3LjM5NyAwIDAgMS0uMDQtLjUybDIuNDQtMy4zMy00LjA1LS40YS41MTQuNTE0IDAgMCAxLS4zLS44OWw1LjE2LTQuNjNjLjE2LS4xNS40MS0uMTQuNTYuMDEuMTQuMTQuMTYuMzYuMDQuNTJsLTIuNDQgMy4zMyA0LjA1LjRjLjQ1LjA0LjYzLjU5LjMuODl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvZ2d5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTIgNy4wMkMxNy40NSA0LjE4IDE0Ljk3IDIgMTIgMiA5LjgyIDIgNy44MyAzLjE4IDYuNzggNS4wNiA0LjA5IDUuNDEgMiA3Ljc0IDIgMTAuNSAyIDEzLjUzIDQuNDcgMTYgNy41IDE2aDEwYzIuNDggMCA0LjUtMi4wMiA0LjUtNC41YTQuNSA0LjUgMCAwIDAtNC4wOC00LjQ4em0uMDggOS45OWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMTEgM2MuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMS0zaDljLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDFINmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMXptNCAzaDdjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDFoLTdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhc01ldGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMVYyaC0ydjJoLTJWMkg5djJIOEM1Ljc5IDQgNCA1Ljc5IDQgOHYxMGMwIDIuMjEgMS43OSA0IDQgNGg4YzIuMjEgMCA0LTEuNzkgNC00VjhjMC0yLjIxLTEuNzktNC00LTR6bS00IDE0Yy0xLjM4IDAtMi41LTEuMS0yLjUtMi40NiAwLTEuMDkuNDMtMS4zOSAyLjUtMy43OSAyLjA1IDIuMzggMi41IDIuNyAyLjUgMy43OUMxNC41IDE2LjkgMTMuMzggMTggMTIgMTh6bTQtOEg4VjhoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWF0UHVtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNi4yNSA0LjA4Yy44Mi4xMiAxLjU3LjQ0IDIuMi45MWwtMi4yIDIuMlY3LjA4em0tMS41IDB2My4xMWwtMi4yLTIuMmMuNjMtLjQ3IDEuMzgtLjc5IDIuMi0uOTF6TTcuOTkgOS4wNWwyLjIgMi4ySDcuMDhjLjEyLS44Mi40NC0xLjU3LjkxLTIuMnptLS45MSAzLjdoMy4xMWwtMi4yIDIuMmMtLjQ3LS42My0uNzktMS4zOC0uOTEtMi4yem00LjE3IDQuMTdjLS44Mi0uMTItMS41Ny0uNDQtMi4yLS45MWwyLjItMi4ydjMuMTF6TTEyIDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS43NSAzLjkydi0zLjExbDIuMiAyLjJjLS42My40Ny0xLjM4Ljc5LTIuMi45MXptMy4yNi0xLjk3LTIuMi0yLjJoMy4xMWMtLjEyLjgyLS40NCAxLjU3LS45MSAyLjJ6bS0yLjItMy43IDIuMi0yLjJjLjQ3LjY0Ljc5IDEuMzkuOTEgMi4yaC0zLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlRmFuT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuMzQgOC4zNi0yLjI5LjgyYy0uMTgtLjEzLS4zOC0uMjUtLjU4LS4zNC4xNy0uODMuNjMtMS41OCAxLjM2LTIuMDZDMTYuODUgNS40NCAxNi4xOCAyIDEzLjM5IDJjLTMuMDggMC00LjkgMS40Ny01LjMgMy4yNkwxOC43MyAxNS45YzEuNS4zOSAzLjI3LS41MSAzLjI3LTIuNTEgMC00LjM5LTMuMDEtNi4yMy01LjY2LTUuMDN6TTIuODEgMi44MSAxLjM5IDQuMjIgNS4yNyA4LjFDMy43NyA3LjcgMiA4LjYxIDIgMTAuNjFjMCA0LjQgMy4wMSA2LjI0IDUuNjYgNS4wM2wyLjI5LS44MmMuMTguMTMuMzguMjUuNTguMzQtLjE3LjgzLS42MyAxLjU4LTEuMzYgMi4wNkM3LjE1IDE4LjU2IDcuODIgMjIgMTAuNjEgMjJjMy4wOCAwIDQuOS0xLjQ3IDUuMy0zLjI2bDMuODcgMy44NyAxLjQxLTEuNDFMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXN0Q2FtV2lyZWRTdGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjgzIDEuMDEtNC4xMS40MkM4LjQ3IDEuNzUgNiA0LjQ4IDYgNy43NXMyLjQ3IDYgNS43MiA2LjMzbDEuOS4xOS0uNTYuODVjLS4zNS0uMDgtLjctLjEyLTEuMDYtLjEyLTIuNzYgMC01IDIuMjQtNSA1djJjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF2LTJjMC0xLjY3LS44My0zLjE1LTIuMDktNC4wNmwuOTctMS40NWMxLjE0LjA3IDIuMTItLjgzIDIuMTItMS45OVYzYzAtMS4xNy0xLTIuMDktMi4xNy0xLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPaWxCYXJyZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMVY1aDFjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxdjZINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxdjZINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMXYtNmgxem0tOCAzYy0xLjY2IDAtMy0xLjMyLTMtMi45NSAwLTEuMy41Mi0xLjY3IDMtNC41NSAyLjQ3IDIuODYgMyAzLjI0IDMgNC41NSAwIDEuNjMtMS4zNCAyLjk1LTMgMi45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJvcGFuZVRhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE1djNjMCAyLjIxIDEuNzkgNCA0IDRoOGMyLjIxIDAgNC0xLjc5IDQtNHYtM0g0ek0yMCAxM3YtM2MwLTEuODYtMS4yOC0zLjQxLTMtMy44NlY0YzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAydjIuMTRjLTEuNzIuNDUtMyAyLTMgMy44NnYzaDE2ek05IDRoNnYyaC0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxSDlWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJvcGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZoLTFWNWMwLTEuMS0uOS0yLTItMmgtNGMtMS4xIDAtMiAuOS0yIDJ2MUg3Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2djNoMnYtM2g2djNoMnYtM2MzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNnptLTctMWg0djFoLTRWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9sbGVyU2hhZGVzQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2Mmg4LjI1YzAgLjk3Ljc4IDEuNzUgMS43NSAxLjc1czEuNzUtLjc4IDEuNzUtMS43NUgyMnYtMmgtMnpNNiAxOXYtMmg1djJINnptNyAwdi0yaDV2MmgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9sbGVyU2hhZGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnpNNiAxOXYtNmg1djEuOGMtLjQuMy0uOC44LS44IDEuNCAwIDEgLjggMS44IDEuOCAxLjhzMS44LS44IDEuOC0xLjhjMC0uNi0uMy0xLjEtLjgtMS40VjEzaDV2Nkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5zb3JEb29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxOGgxNlY0YzAtMS4xLS45LTItMi0yem0tMi41IDExLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5zb3JPY2N1cGllZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pNMTIgMTJjLTEuODQgMC0zLjU2LjUtNS4wMyAxLjM3LS42MS4zNS0uOTcgMS4wMi0uOTcgMS43MlYxN2gxMnYtMS45MWMwLS43LS4zNi0xLjM2LS45Ny0xLjcyQTkuODQ0IDkuODQ0IDAgMCAwIDEyIDEyek0yMS4yMyA4LjE1bDEuODUtLjc3QTEyLjA1NiAxMi4wNTYgMCAwIDAgMTYuNjIuOTJsLS43NyAxLjg1YzIuNDIgMS4wMiA0LjM2IDIuOTYgNS4zOCA1LjM4ek04LjE1IDIuNzcgNy4zOC45MkExMi4wODkgMTIuMDg5IDAgMCAwIC45MiA3LjM4bDEuODUuNzdjMS4wMi0yLjQyIDIuOTYtNC4zNiA1LjM4LTUuMzh6TTIuNzcgMTUuODVsLTEuODUuNzdjMS4yMiAyLjkxIDMuNTUgNS4yNSA2LjQ2IDYuNDZsLjc3LTEuODVhMTAuMTE3IDEwLjExNyAwIDAgMS01LjM4LTUuMzh6TTE1Ljg1IDIxLjIzbC43NyAxLjg1YzIuOTEtMS4yMiA1LjI1LTMuNTUgNi40Ni02LjQ2bC0xLjg1LS43N2ExMC4xMTcgMTAuMTE3IDAgMCAxLTUuMzggNS4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2Vuc29yV2luZG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNHYxNkg2VjRoMTJtMC0ySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNyAxOWgxMHYtNkg3djZ6bTMtOWg0djFoM1Y1SDd2Nmgzdi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaGVsdmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMXYySDVWMUgzdjIyaDJ2LTJoMTR2MmgyVjFoLTJ6bTAgNHY2aC02VjdIN3Y0SDVWNWgxNHptLTIgMTR2LTRoLTZ2NEg1di02aDE0djZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoaWVsZE1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem0zLjk3IDEyLjQxYy0xLjg0IDIuMTctNS4yMSAyLjEtNi45Ni0uMDctMi4xOS0yLjcyLS42NS02LjcyIDIuNjktNy4zMy4zNC0uMDYuNjMuMjcuNTEuNi0uNDYgMS4yMy0uMzkgMi42NC4zMiAzLjg2YTQuNTEgNC41MSAwIDAgMCAzLjE4IDIuMmMuMzQuMDUuNDkuNDcuMjYuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub3dpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEyLjc1YTEuMjUgMS4yNSAwIDEgMSAwIDIuNSAxLjI1IDEuMjUgMCAwIDEgMC0yLjV6TTQuNzUgNmExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0xMiA4YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTAtOGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0tOSAxMmExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0wLThhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHptMyA0YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTAtOGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0zIDEyYTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTAtOGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb2xhclBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy4zMyAxNkgxMXYtM0g0ek0xMyAxNmg3LjY3TDIwIDEzaC03ek0yMS4xMSAxOEgxM3Y0aDl6TTIgMjJoOXYtNEgyLjg5ek0xMSA4aDJ2M2gtMnpNMTUuNzY0IDcuMjA1bDEuNDE1LTEuNDE0TDE5LjMgNy45MTJsLTEuNDE0IDEuNDE0ek00LjcwNSA3LjkxMyA2LjgyNiA1Ljc5IDguMjQgNy4yMDYgNi4xMiA5LjMyN3pNMyAyaDN2Mkgzek0xOCAyaDN2MmgtM3pNMTIgN2MyLjc2IDAgNS0yLjI0IDUtNUg3YzAgMi43NiAyLjI0IDUgNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdW5ueVNub3dpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1aC0yVjFoMnY0ek0xIDExaDR2Mkgxdi0yem0xOCAydi0yaDR2MmgtNHptLTEuMzQtNS4yNC0xLjQxLTEuNDEgMi44My0yLjgzIDEuNDEgMS40MS0yLjgzIDIuODN6TTMuNTEgNC45M2wxLjQxLTEuNDEgMi44MyAyLjgzLTEuNDEgMS40MS0yLjgzLTIuODN6TTQuNzUgMTdhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHptMTIgMGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0tOSA0YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTMtNGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0zIDRhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHpNMTcgMTN2LTFjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDV2MWgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VubnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA0VjJjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjJjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF6bTcuMzYgMy4wNSAxLjQxLTEuNDJhLjk5Ni45OTYgMCAxIDAtMS40MS0xLjQxbC0xLjQxIDEuNDJhLjk5Ni45OTYgMCAxIDAgMS40MSAxLjQxek0yMiAxMWgtMmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xem0tMTAgOGMtLjU1IDAtMSAuNDUtMSAxdjJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0yYzAtLjU1LS40NS0xLTEtMXpNNS42NCA3LjA1IDQuMjIgNS42NGMtLjM5LS4zOS0uMzktMS4wMyAwLTEuNDFzMS4wMy0uMzkgMS40MSAwbDEuNDEgMS40MWMuMzkuMzkuMzkgMS4wMyAwIDEuNDFzLTEuMDIuMzktMS40IDB6bTExLjMxIDkuOWEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMS40MSAxLjQxYy4zOS4zOSAxLjAzLjM5IDEuNDEgMGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTEuNDEtMS40MWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDB6TTIgMTNoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUgyYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxem0zLjY0IDYuNzggMS40MS0xLjQxYy4zOS0uMzkuMzktMS4wMyAwLTEuNDFzLTEuMDMtLjM5LTEuNDEgMGwtMS40MSAxLjQxYS45OTYuOTk2IDAgMCAwIDAgMS40MWMuMzguMzkgMS4wMi4zOSAxLjQxIDB6TTEyIDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWZXJ0aWNhbFNoYWRlc0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTEzIDVoMS41djE0SDEzVjV6bS0yIDE0SDkuNVY1SDExdjE0ek02IDVoMS41djE0SDZWNXptMTAuNSAxNFY1SDE4djE0aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsU2hhZGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnptLTEwIDBWNWg0djE0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaW5kUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDNoNnYySDR6TTEgN2g1djJIMXpNMyAxOWg1djJIM3pNMTMuNzMgMTAuNjFjLjc1LjIzIDEuMy43OCAxLjU3IDEuNDZsNC4yNy03LjExYTIuMjggMi4yOCAwIDAgMC0zLjUxLTIuODRsLTMuNDMgMy4yMWMtLjQuMzctLjYzLjktLjYzIDEuNDV2My45M2MuMzYtLjE1Ljk4LS4zMyAxLjczLS4xek0xMC42MSAxMi4yN2MuMTYtLjUyLjQ4LS45Ni44OS0xLjI3SDMuMjhhMi4yNzkgMi4yNzkgMCAwIDAtLjYzIDQuNDdsNC41MSAxLjI5Yy41My4xNSAxLjEuMDggMS41OC0uMjFsMi42OS0xLjYxYTIuNDg3IDIuNDg3IDAgMCAxLS44Mi0yLjY3ek0yMi4yMSAxOC42MWwtMi4yOC00LjFhMi4wNSAyLjA1IDAgMCAwLTEuMjYtLjk3bC0zLjE4LS44Yy4wMy4zMiAwIC42Ni0uMS45OUEyLjQ3OCAyLjQ3OCAwIDAgMSAxMyAxNS41Yy0uNjEgMC0uOTktLjIyLTEtLjIyVjIxYy0xLjEgMC0yIC45LTIgMmg2YzAtMS4xLS45LTItMi0ydi00LjI4bDQuNjEgNC42MWMuODkuODkgMi4zMy44OSAzLjIyIDAgLjcyLS43Mi44OC0xLjgzLjM4LTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjU2IDE0LjQzYy43OS4yNCAxLjYzLS4yIDEuODctMSAuMjQtLjc5LS4yLTEuNjMtMS0xLjg3LS43OS0uMjQtMS42My4yLTEuODcgMS0uMjQuNzkuMjEgMS42MyAxIDEuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDEwTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgN0gxNXYzaC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem02LjUgNWMwIC41NS0uNDUgMS0xIDFIMTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjR6bS0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTFNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTExIDUuNXY2SDkuNVY3SDhWNS41aDN6bTUgMHY2aC0xLjVWN0gxM1Y1LjVoM3ptLS41IDguNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTJNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDUuNXY2SDguNVY3SDdWNS41aDN6TTE1LjUgOWgtMnYxaDN2MS41SDEyVjljMC0uNTUuNDUtMSAxLTFoMlY3aC0zVjUuNWgzLjVjLjU1IDAgMSAuNDUgMSAxVjhjMCAuNTUtLjQ1IDEtMSAxem0wIDVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDEzTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem02LjUgNWMwIC41NS0uNDUgMS0xIDFIMTJWMTBoM1Y5aC0yVjhoMlY3aC0zVjUuNWgzLjVjLjU1IDAgMSAuNDUgMSAxdjR6bS0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTRNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDUuNXY2SDguNVY3SDdWNS41aDN6bTcuNSA0LjVoLTF2MS41SDE1VjEwaC0zVjUuNWgxLjV2M0gxNXYtM2gxLjV2M2gxVjEwem0tMiA0SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxNU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTAgNS41djZIOC41VjdIN1Y1LjVoM3pNMTYuNSA3aC0zdjFoMmMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMUgxMlYxMGgzVjloLTNWNS41aDQuNVY3em0tMSA3SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxNk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDlIMTV2MS41aC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem0zIDZjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzLjVWN2gtM3YxaDJjLjU1IDAgMSAuNDUgMSAxdjEuNWMwIC41NS0uNDUgMS0xIDFIMTN6bTIuNSAyLjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDE3TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem01IDZoLTEuNzVMMTQuNjIgN0gxMlY1LjVoMy41Yy42NyAwIDEuMTUuNjUuOTYgMS4yOUwxNSAxMS41em0uNSAyLjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDE4TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem02LjUgNWMwIC41NS0uNDUgMS0xIDFIMTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjR6bS0zIDBIMTVWOWgtMS41djEuNXptMC0yLjVIMTVWNi41aC0xLjVWOHptMiA2SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxOU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgN2gzVjloLTJjLS41NSAwLTEtLjQ1LTEtMVY2LjVjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0YzAgLjU1LS40NSAxLTEgMUgxMlYxMHptMS41LTJIMTVWNi41aC0xLjVWOHpNNyA1LjVoM3Y2SDguNVY3SDdWNS41em01IDEzaC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptNi41LTIuNWMwIC41NS0uNDUgMS0xIDFoLTJ2MS41SDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZ6bS0zLTJIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDIwTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgN0gxNnYzaC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0yLThjMCAuNTUtLjQ1IDEtMSAxSDE0Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0ek0xMCA5SDh2MWgzdjEuNUg2LjVWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41SDEwYy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptNS41IDVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDIxTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMSA5SDl2MWgzdjEuNUg3LjVWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41SDExYy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptMy0zLjVoM3Y2aC0xLjVWN0gxNFY1LjV6bTEuNSA4LjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDIyTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA5SDh2MWgzdjEuNUg2LjVWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41SDEwYy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptNi41IDBoLTJ2MWgzdjEuNUgxM1Y5YzAtLjU1LjQ1LTEgMS0xaDJWN2gtM1Y1LjVoMy41Yy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptLTEgNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMjNNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDlIOHYxaDN2MS41SDYuNVY5YzAtLjU1LjQ1LTEgMS0xaDJWN2gtM1Y1LjVIMTBjLjU1IDAgMSAuNDUgMSAxVjhjMCAuNTUtLjQ1IDEtMSAxem03LjUgMS41YzAgLjU1LS40NSAxLTEgMUgxM1YxMGgzVjloLTJWOGgyVjdoLTNWNS41aDMuNWMuNTUgMCAxIC40NSAxIDF2NHptLTIgMy41SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQyNE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTAgOUg4djFoM3YxLjVINi41VjljMC0uNTUuNDUtMSAxLTFoMlY3aC0zVjUuNUgxMGMuNTUgMCAxIC40NSAxIDFWOGMwIC41NS0uNDUgMS0xIDF6bTguNSAxaC0xdjEuNUgxNlYxMGgtM1Y1LjVoMS41djNIMTZ2LTNoMS41djNoMVYxMHptLTMgNEgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXptLTItOS41aC0ydjFoM3YxLjVIMTBWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41aDMuNWMuNTUgMCAxIC40NSAxIDFWOGMwIC41NS0uNDUgMS0xIDF6bTIgNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMzBGcHNTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDR2Mmg1djJINXYyaDR2Mkg0djJoNWMxLjEgMCAyLS45IDItMnYtMS41YzAtLjgzLS4xNy0xLjUtMS0xLjUuODMgMCAxLS42NyAxLTEuNVY2YzAtMS4xLS45LTItMi0ySDR6bTE0IDBjMS4xIDAgMiAuOSAyIDJ2NmMwIDEuMS0uOSAyLTIgMmgtM2MtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDN6bTAgMmgtM3Y2aDNWNnpNNSAyMkgzdi01aDJ2NXptNCAwSDd2LTVoMnY1em00IDBoLTJ2LTVoMnY1em04IDBoLTZ2LTVoNnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0tMS04YzAgLjU1LS40NSAxLTEgMUgxMFYxMGgzVjloLTJWOGgyVjdoLTNWNS41aDMuNWMuNTUgMCAxIC40NSAxIDF2NHptMSAzLjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDRNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLTguNWgtMXYxLjVoLTEuNVYxMGgtM1Y1LjVIMTF2M2gxLjV2LTNIMTR2M2gxVjEwem0uNSA4LjVIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0wLTQuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTQuNSA3aC0zdjFoMmMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMUgxMFYxMGgzVjloLTNWNS41aDQuNVY3em0xIDdIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDYwRnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNnY2aC0zVjZoM3ptMC0yaC0zYy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNyAyVjRINmMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDNjMS4xIDAgMi0uOSAyLTJ2LTJjMC0xLjEtLjktMi0yLTJINlY2aDV6bS0yIDR2Mkg2di0yaDN6TTUgMjJIM3YtNWgydjV6bTQgMEg3di01aDJ2NXptNCAwaC0ydi01aDJ2NXptOCAwaC02di01aDZ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDlIMTN2MS41aC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptLTEtN2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDMuNVY3aC0zdjFoMmMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMUgxMXptNC41IDdIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0wLTQuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kN01wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXptLTIuNS03aC0xLjc1TDEyLjYyIDdIMTBWNS41aDMuNWMuNjcgMCAxLjE1LjY1Ljk2IDEuMjlMMTMgMTEuNXptMi41IDIuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDlIMTN2MS41aC0xLjV6bTAtMi41SDEzVjhoLTEuNXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6bS0xLThjMCAuNTUtLjQ1IDEtMSAxSDExYy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDYuNUgxM1Y4aC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0tMS04YzAgLjU1LS40NSAxLTEgMUgxMFYxMGgzVjloLTJjLS41NSAwLTEtLjQ1LTEtMVY2LjVjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQVBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0VjFoMnYzaDN2Mkg1djNIM1Y2SDBWNGgzem0zIDZWN2gzVjRoN2wxLjgzIDJIMjFjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJWMTBoM3ptNyA5YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01LTUgMi4yNC01IDUgMi4yNCA1IDUgNXptLTMuMi01YzAgMS43NyAxLjQzIDMuMiAzLjIgMy4yczMuMi0xLjQzIDMuMi0zLjItMS40My0zLjItMy4yLTMuMi0zLjIgMS40My0zLjIgMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRQaG90b0FsdGVybmF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDd2Mi45OXMtMS45OS4wMS0yIDBWN2gtM3MuMDEtMS45OSAwLTJoM1YyaDJ2M2gzdjJoLTN6bS0zIDRWOGgtM1Y1SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LThoLTN6TTUgMTlsMy00IDIgMyAzLTQgNCA1SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFRvUGhvdG9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSA5aC00djRoLTJ2LTRIOVY5aDRWNWgydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGp1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMy04YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQW5pbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMmMtMi43MSAwLTUuMDUgMS41NC02LjIyIDMuNzhhNy4wNjIgNy4wNjIgMCAwIDAtMyAzQTcuMDE0IDcuMDE0IDAgMCAwIDIgMTVjMCAzLjg3IDMuMTMgNyA3IDcgMi43MSAwIDUuMDUtMS41NCA2LjIyLTMuNzhhNy4wNjIgNy4wNjIgMCAwIDAgMy0zQTcuMDE0IDcuMDE0IDAgMCAwIDIyIDljMC0zLjg3LTMuMTMtNy03LTd6TTkgMjBhNS4wMDIgNS4wMDIgMCAwIDEtNC04YzAgMy44NyAzLjEzIDcgNyA3LS44NC42My0xLjg4IDEtMyAxem0zLTNhNS4wMDIgNS4wMDIgMCAwIDEtNC04YzAgMy44NiAzLjEzIDYuOTkgNyA3LS44NC42My0xLjg4IDEtMyAxem00LjctMy4zYy0uNTMuMTktMS4xLjMtMS43LjMtMi43NiAwLTUtMi4yNC01LTUgMC0uNi4xMS0xLjE3LjMtMS43LjUzLS4xOSAxLjEtLjMgMS43LS4zIDIuNzYgMCA1IDIuMjQgNSA1IDAgLjYtLjExIDEuMTctLjMgMS43ek0xOSAxMmMwLTMuODYtMy4xMy02Ljk5LTctN2E1LjAwMiA1LjAwMiAwIDAgMSA3IDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzaXN0YW50UGhvdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC40IDYgMTQgNEg1djE3aDJ2LTdoNS42bC40IDJoN1Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3Npc3RhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTUuMTIgMTAuODhMMTIgMTdsLTEuODgtNC4xMkw2IDExbDQuMTItMS44OEwxMiA1bDEuODggNC4xMkwxOCAxMWwtNC4xMiAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdWRpb3RyYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM3Y5LjI4YTQuMzkgNC4zOSAwIDAgMC0xLjUtLjI4QzguMDEgMTIgNiAxNC4wMSA2IDE2LjVTOC4wMSAyMSAxMC41IDIxYzIuMzEgMCA0LjItMS43NSA0LjQ1LTRIMTVWNmg0VjNoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9Bd2Vzb21lTW9zYWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djE0YTIgMiAwIDAgMCAyIDJoNlYzSDVhMiAyIDAgMCAwLTIgMnptMTYtMmgtNnY4aDhWNWMwLTEuMS0uOS0yLTItMnptLTYgMThoNmMxLjEgMCAyLS45IDItMnYtNmgtOHY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvQXdlc29tZU1vdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINGEyIDIgMCAwIDAtMiAydjEwaDJWNGgxMFYyem00IDRIOGEyIDIgMCAwIDAtMiAydjEwaDJWOGgxMFY2em0yIDRoLThhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoOGMxLjEgMCAyLS45IDItMnYtOGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0F3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA5IDEuMjUtMi43NUwyMyA1bC0yLjc1LTEuMjVMMTkgMWwtMS4yNSAyLjc1TDE1IDVsMi43NSAxLjI1TDE5IDl6bS03LjUuNUw5IDQgNi41IDkuNSAxIDEybDUuNSAyLjVMOSAyMGwyLjUtNS41TDE3IDEybC01LjUtMi41ek0xOSAxNWwtMS4yNSAyLjc1TDE1IDE5bDIuNzUgMS4yNUwxOSAyM2wxLjI1LTIuNzVMMjMgMTlsLTIuNzUtMS4yNUwxOSAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0ZpeEhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgNS42IDEwIDcgOC42IDQuNSAxMCAyIDcuNSAzLjQgNSAybDEuNCAyLjVMNSA3em0xMiA5LjhMMTcgMTRsMS40IDIuNUwxNyAxOWwyLjUtMS40TDIyIDE5bC0xLjQtMi41TDIyIDE0ek0yMiAybC0yLjUgMS40TDE3IDJsMS40IDIuNUwxNyA3bDIuNS0xLjRMMjIgN2wtMS40LTIuNXptLTcuNjMgNS4yOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBMMS4yOSAxOC45NmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi4zNCAyLjM0Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMEwxNi43IDExLjA1YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zMy0yLjM1em0tMS4wMyA1LjQ5LTIuMTItMi4xMiAyLjQ0LTIuNDQgMi4xMiAyLjEyLTIuNDQgMi40NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0ZpeE5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDItMi41IDEuNEwxNyAybDEuNCAyLjVMMTcgN2wyLjUtMS40TDIyIDdsLTEuNC0yLjV6bS03LjYzIDUuMjlhLjk5Ni45OTYgMCAwIDAtMS40MSAwTDEuMjkgMTguOTZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDIuMzQgMi4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBMMTYuNyAxMS4wNWEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzMtMi4zNXptLTEuMDMgNS40OS0yLjEyLTIuMTIgMi40NC0yLjQ0IDIuMTIgMi4xMi0yLjQ0IDIuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9GaXhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgMS0yLjUgMS40TDE4IDFsMS40IDIuNUwxOCA2bDIuNS0xLjRMMjMgNmwtMS40LTIuNUwyMyAxem0tOC4zNCA2LjIyIDIuMTIgMi4xMi0yLjQ0IDIuNDQuODEuODEgMi41NS0yLjU1YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMEwxMS40IDguODRsLjgxLjgxIDIuNDUtMi40M3ptLS43OCA2LjY1LTMuNzUtMy43NS02Ljg2LTYuODZMMiA0LjUzbDYuODYgNi44Ni02LjU3IDYuNTdhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDIuMzQgMi4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNi41Ny02LjU3TDE5LjQ3IDIybDEuMjctMS4yNy02Ljg2LTYuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9TdG9yaWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxLTUgNXYxMWw1LTQuNVYxek0xIDZ2MTQuNjVjMCAuMjUuMjUuNS41LjUuMSAwIC4xNS0uMDUuMjUtLjA1QzMuMSAyMC40NSA1LjA1IDIwIDYuNSAyMGMxLjk1IDAgNC4wNS40IDUuNSAxLjVWNmMtMS40NS0xLjEtMy41NS0xLjUtNS41LTEuNVMyLjQ1IDQuOSAxIDZ6bTIyIDEzLjVWNmMtLjYtLjQ1LTEuMjUtLjc1LTItMXYxMy41Yy0xLjEtLjM1LTIuMy0uNS0zLjUtLjUtMS43IDAtNC4xNS42NS01LjUgMS41djJjMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuNjUgMCAzLjM1LjMgNC43NSAxLjA1LjEuMDUuMTUuMDUuMjUuMDUuMjUgMCAuNS0uMjUuNS0uNXYtMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvZnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDMgNi4zaC0uMDZsLTEuMDIgMi44OWgyLjF6TTMgMTdoMnY1SDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE1YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnptLS42My0xMGgxLjI1bDIuNjMgN2gtMS4yMWwtLjYzLTEuNzloLTIuODNMOS45NiAxMkg4Ljc0bDIuNjMtN3pNNyAxN2gydjVIN3pNMTEgMTdoMnY1aC0yek0xNSAxN2g2djVoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlZHRpbWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIybDIuMjcgMi4yN0E5Ljk1OSA5Ljk1OSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MiA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MnpNMTIuMzQgMi4wMmMtMi4xOC0uMDctNC4xOS41NS01Ljg1IDEuNjRsNC41OSA0LjU5Yy0uMjctMi4wNS4xLTQuMjIgMS4yNi02LjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWR0aW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMzQgMi4wMkM2LjU5IDEuODIgMiA2LjQyIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMy43MSAwIDYuOTMtMi4wMiA4LjY2LTUuMDItNy41MS0uMjUtMTIuMDktOC40My04LjMyLTE0Ljk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVyQ2lyY3VsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek03IDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTMgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS0zLTNjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zLTZjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtMS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptMyA2Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC00Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTItMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0zLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ckxpbmVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTcuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXpNMyAyMWgxOHYtMkgzdjJ6TTUgOS41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjgzIDYuNSA1IDYuNSAzLjUgNy4xNyAzLjUgOCA0LjE3IDkuNSA1IDkuNXptMCA0Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek05IDE3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTgtLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0zIDN2MmgxOFYzSDN6bTE0IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTAgNGMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEzIDljLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA0Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0tLjIgNC40OC4yLjAyYy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41bC4wMi4yYy4wOS42Ny42MSAxLjE5IDEuMjggMS4yOHpNMTQgMy41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptLTQgMGMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTExIDdjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTggOGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC00Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bS00IDEzLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0yLjUgNS4yN2wzLjc4IDMuNzhMNiA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMWMwLS4xLS4wMy0uMTktLjA2LS4yOGwyLjgxIDIuODFjLS43MS4xMS0xLjI1LjczLTEuMjUgMS40NyAwIC44My42NyAxLjUgMS41IDEuNS43NCAwIDEuMzYtLjU0IDEuNDctMS4yNWwyLjgxIDIuODFBLjg3NS44NzUgMCAwIDAgMTQgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xYzAtLjEtLjAzLS4xOS0uMDYtLjI4bDMuNzggMy43OEwyMCAyMC4yMyAzLjc3IDQgMi41IDUuMjd6TTEwIDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTExLTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgMTNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNMyA5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDExYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0tMy0zLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVyT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLThjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptLTMgLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek02IDVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMTUgNS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTQgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTMuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bS0xMSAxMGMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTcgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtMTdjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNS41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptOCAuNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0zIDguNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTE0IDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptLTQtMTJjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wIDguNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem00LTQuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAtNGMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3MxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxMFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDJjLTEuODIgMC0zLjUzLjUtNSAxLjM1QzcuOTkgNS4wOCAxMCA4LjMgMTAgMTJzLTIuMDEgNi45Mi01IDguNjVDNi40NyAyMS41IDguMTggMjIgMTAgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTUuNTIgMiAxMCAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMmMtMS4wNSAwLTIuMDUuMTYtMyAuNDYgNC4wNiAxLjI3IDcgNS4wNiA3IDkuNTQgMCA0LjQ4LTIuOTQgOC4yNy03IDkuNTQuOTUuMyAxLjk1LjQ2IDMgLjQ2IDUuNTIgMCAxMC00LjQ4IDEwLTEwUzE0LjUyIDIgOSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0uODkgMC0xLjc0LS4yLTIuNS0uNTVDMTEuNTYgMTYuNSAxMyAxNC40MiAxMyAxMnMtMS40NC00LjUtMy41LTUuNDVDMTAuMjYgNi4yIDExLjExIDYgMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJpZ2h0bmVzczUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS4zMSAyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjMxIDIzLjMxIDEyIDIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5ek0xMiAxOFY2YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzNyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMC0xMGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb2tlbkltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0yMSAxOWMwIDEuMS0uOSAyLTIgMkg1Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNXY2LjU5bC0zLTMuMDEtNCA0LjAxLTQtNC00IDQtMy0zLjAxVjVjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnptLTMgNi40MiAzIDMuMDFWMTljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJ2LTYuNThsMyAyLjk5IDQtNCA0IDQgNC0zLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTRjLTEuNjYgMC0zIDEuMzQtMyAzIDAgMS4zMS0xLjE2IDItMiAyIC45MiAxLjIyIDIuNDkgMiA0IDIgMi4yMSAwIDQtMS43OSA0LTQgMC0xLjY2LTEuMzQtMy0zLTN6bTEzLjcxLTkuMzctMS4zNC0xLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMEw5IDEyLjI1IDExLjc1IDE1bDguOTYtOC45NmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJ1cnN0TW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA1aDJ2MTRIMXptNCAwaDJ2MTRINXptMTcgMEgxMGMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXpNMTEgMTdsMi41LTMuMTVMMTUuMjkgMTZsMi41LTMuMjJMMjEgMTdIMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMy4yXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMiA3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDJIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYUZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6TTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTEuOTkuOS0xLjk5IDJTMTAuOSA4IDEyIDh6bTUtOEg3QzUuOSAwIDUgLjkgNSAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMnpNNyAyaDEwdjEwLjVjMC0xLjY3LTMuMzMtMi41LTUtMi41cy01IC44My01IDIuNVYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1lcmFSZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6bTMtMjBIN0M1LjkgMCA1IC45IDUgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMi0yLTJ6bS01IDZjLTEuMTEgMC0yLS45LTItMnMuODktMiAxLjk5LTIgMiAuOSAyIDJDMTQgNS4xIDEzLjEgNiAxMiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1lcmFSb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNWMwLTEuMS0uOS0yLTItMmgtMVYyYzAtLjU1LS40NS0xLTEtMUg2Yy0uNTUgMC0xIC40NS0xIDF2MUg0Yy0xLjEgMC0yIC45LTIgMnYxNWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJoOFY1aC04em0tMiAxM2gtMnYtMmgydjJ6bTAtOWgtMlY3aDJ2MnptNCA5aC0ydi0yaDJ2MnptMC05aC0yVjdoMnYyem00IDloLTJ2LTJoMnYyem0wLTloLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkuNCAxMC41IDQuNzctOC4yNmE5Ljk4NCA5Ljk4NCAwIDAgMC04LjQ5IDIuMDFsMy42NiA2LjM1LjA2LS4xek0yMS41NCA5Yy0uOTItMi45Mi0zLjE1LTUuMjYtNi02LjM0TDExLjg4IDloOS42NnptLjI2IDFoLTcuNDlsLjI5LjUgNC43NiA4LjI1QTkuOTEgOS45MSAwIDAgMCAyMiAxMmMwLS42OS0uMDctMS4zNS0uMi0yek04LjU0IDEybC0zLjktNi43NUE5Ljk1OCA5Ljk1OCAwIDAgMCAyLjIgMTRoNy40OWwtMS4xNS0yem0tNi4wOCAzYy45MiAyLjkyIDMuMTUgNS4yNiA2IDYuMzRMMTIuMTIgMTVIMi40NnptMTEuMjcgMC0zLjkgNi43NmE5Ljk4NCA5Ljk4NCAwIDAgMCA4LjQ5LTIuMDFsLTMuNjYtNi4zNS0uOTMgMS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDZWNGwtMi0yaC01TDkgNHYySDV2MTFzMSAyIDIgMmgxM3MyLS45OCAyLTJWNmgtNHpNNCA5SDJ2MTFjMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJINFY5em03LTRjMC0uNTUuNTMtMSAxLTFoM2MuNDYgMCAxIC41NCAxIDF2MWgtNVY1ek01IDZoMTd2MTFjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2VudGVyRm9jdXNTdHJvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptLTcgN0gzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDZW50ZXJGb2N1c1dlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6TTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2xsZWN0aW9uc0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTAtMi41LTEuNUwxNSAxMlY0aDV2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29sbGVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNlY0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ6bS0xMS00IDIuMDMgMi43MUwxNiAxMWw0IDVIOGwzLTR6TTIgNnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2xvckxlbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzYTkgOSAwIDAgMCAwIDE4Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLS4zOS0uMTUtLjc0LS4zOS0xLjAxLS4yMy0uMjYtLjM4LS42MS0uMzgtLjk5IDAtLjgzLjY3LTEuNSAxLjUtMS41SDE2YzIuNzYgMCA1LTIuMjQgNS01IDAtNC40Mi00LjAzLTgtOS04em0tNS41IDljLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDkgNi41IDkgOCA5LjY3IDggMTAuNSA3LjMzIDEyIDYuNSAxMnptMy00QzguNjcgOCA4IDcuMzMgOCA2LjVTOC42NyA1IDkuNSA1czEuNS42NyAxLjUgMS41UzEwLjMzIDggOS41IDh6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzEzLjY3IDUgMTQuNSA1czEuNS42NyAxLjUgMS41UzE1LjMzIDggMTQuNSA4em0zIDRjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNi42NyA5IDE3LjUgOXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbG9yaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNzEgNS42My0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0zLjEyIDMuMTItMS45My0xLjkxLTEuNDEgMS40MSAxLjQyIDEuNDJMMyAxNi4yNVYyMWg0Ljc1bDguOTItOC45MiAxLjQyIDEuNDIgMS40MS0xLjQxLTEuOTItMS45MiAzLjEyLTMuMTJjLjQtLjQuNC0xLjAzLjAxLTEuNDJ6TTYuOTIgMTkgNSAxNy4wOGw4LjA2LTguMDYgMS45MiAxLjkyTDYuOTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbXBhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYyaDJWMWgtMnYyem0wIDE1SDVsNS02djZ6bTktMTVoLTV2Mmg1djEzbC01LTZ2OWg1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRyYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bTEtMTcuOTNjMy45NC40OSA3IDMuODUgNyA3Ljkzcy0zLjA1IDcuNDQtNyA3LjkzVjQuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRyb2xQb2ludER1cGxpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTN6TTIgMTJjMC0yLjc5IDEuNjQtNS4yIDQuMDEtNi4zMlYzLjUyQzIuNTIgNC43NiAwIDguMDkgMCAxMnMyLjUyIDcuMjQgNi4wMSA4LjQ4di0yLjE2QTYuOTkgNi45OSAwIDAgMSAyIDEyem0xMy05Yy00Ljk2IDAtOSA0LjA0LTkgOXM0LjA0IDkgOSA5IDktNC4wNCA5LTktNC4wNC05LTktOXptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRyb2xQb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcDE2OSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdINWMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bTAgOEg1VjloMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcDMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNkg1Yy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEg1VjhoMTR2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcDU0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINVY2aDE0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wNzUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxMkg1VjdoMTR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3BEaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3BGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wTGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNUg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTJINVY3aDE0djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wT3JpZ2luYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS01LjA0LTYuNzEtMi43NSAzLjU0LTEuOTYtMi4zNkw2LjUgMTdoMTFsLTMuNTQtNC43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcFBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wUm90YXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQ3IDIxLjQ5QzQuMiAxOS45MyAxLjg2IDE2Ljc2IDEuNSAxM0gwYy41MSA2LjE2IDUuNjYgMTEgMTEuOTUgMTEgLjIzIDAgLjQ0LS4wMi42Ni0uMDNMOC44IDIwLjE1bC0xLjMzIDEuMzR6TTEyLjA1IDBjLS4yMyAwLS40NC4wMi0uNjYuMDRsMy44MSAzLjgxIDEuMzMtMS4zM0MxOS44IDQuMDcgMjIuMTQgNy4yNCAyMi41IDExSDI0Yy0uNTEtNi4xNi01LjY2LTExLTExLjk1LTExek0xNiAxNGgyVjhhMiAyIDAgMCAwLTItMmgtNnYyaDZ2NnptLTggMlY0SDZ2Mkg0djJoMnY4YTIgMiAwIDAgMCAyIDJoOHYyaDJ2LTJoMnYtMkg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNEg2Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINlY2aDEydjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTVoMlY3YzAtMS4xLS45LTItMi0ySDl2Mmg4djh6TTcgMTdWMUg1djRIMXYyaDR2MTBjMCAxLjEuOSAyIDIgMmgxMHY0aDJ2LTRoNHYtMkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJyZW5jeUJpdGNvaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4wNiAxMS41N2MuNTktLjY5Ljk0LTEuNTkuOTQtMi41NyAwLTEuODYtMS4yNy0zLjQzLTMtMy44N1YzaC0ydjJoLTJWM0g5djJINnYyaDJ2MTBINnYyaDN2Mmgydi0yaDJ2Mmgydi0yYzIuMjEgMCA0LTEuNzkgNC00IDAtMS40NS0uNzgtMi43My0xLjk0LTMuNDN6TTEwIDdoNGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJoLTRWN3ptNSAxMGgtNXYtNGg1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lGcmFuYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDVWM0g3djEzSDV2MmgydjNoMnYtM2g0di0ySDl2LTNoOHYtMkg5VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEN1cnJlbmN5TGlyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOC43NlYzaDJ2NC41MUwxNSA1djIuMzZsLTQgMi41MS4wMSAyLjM1TDE1IDkuNzJ2Mi4zNmwtNCAyLjUxVjE5YzIuNzYgMCA1LTIuMjQgNS01aDJjMCAzLjg3LTMuMTMgNy03IDdIOXYtNS4xNmwtMyAxLjg4di0yLjM2bDMtMS44OHYtMi4zNkw2IDEzdi0yLjM2bDMtMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lQb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDIxYzEuOTMgMCAzLjYyLTEuMTcgNC0zbC0xLjc1LS44OEMxNiAxOC4yMSAxNS4zMyAxOSAxNCAxOUg5LjFjLjgzLTEgMS41LTIuMzQgMS41LTQgMC0uMzUtLjAzLS42OS0uMDgtMUgxNHYtMkg5LjgyQzkgMTAuNDIgOCA5LjYgOCA4YTMuNSAzLjUgMCAwIDEgNi43OC0xLjIyTDE2LjYzIDZjLS44LTIuMDUtMi43OS0zLjUtNS4xMy0zLjVDOC40NiAyLjUgNiA0Ljk2IDYgOGMwIDEuNzguNzkgMi45IDEuNDkgNEg2djJoMi40N2MuMDguMzEuMTMuNjQuMTMgMSAwIDIuNy0yLjYgNC0yLjYgNHYyaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEN1cnJlbmN5UnVibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDNIN3Y5SDV2MmgydjJINXYyaDJ2M2gydi0zaDR2LTJIOXYtMmg0LjVjMy4wNCAwIDUuNS0yLjQ2IDUuNS01LjVTMTYuNTQgMyAxMy41IDN6bTAgOUg5VjVoNC41QzE1LjQzIDUgMTcgNi41NyAxNyA4LjVTMTUuNDMgMTIgMTMuNSAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lSdXBlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjY2IDdjLS41Ni0xLjE4LTEuNzYtMi0zLjE2LTJINlYzaDEydjJoLTMuMjZjLjQ4LjU4Ljg0IDEuMjYgMS4wNSAySDE4djJoLTIuMDJjLS4yNSAyLjgtMi42MSA1LTUuNDggNWgtLjczbDYuNzMgN2gtMi43N0w3IDE0di0yaDMuNWMxLjc2IDAgMy4yMi0xLjMgMy40Ni0zSDZWN2g3LjY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJyZW5jeVllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDExSDE4djJoLTV2Mmg1djJoLTV2NGgtMnYtNEg2di0yaDV2LTJINnYtMmg0LjA4TDUgM2gyLjM3TDEyIDEwLjI5IDE2LjYzIDNIMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEN1cnJlbmN5WXVhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjI4IDEySDE4djJoLTV2N2gtMnYtN0g2di0yaDQuNzJMNSAzaDIuMzdMMTIgMTAuMjkgMTYuNjMgM0gxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVibHVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM3YxOGE5IDkgMCAwIDAgMC0xOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIyMVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjNcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZWhhemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE1LjV2MmgyMHYtMkgyem0wLTV2MmgyMHYtMkgyem0wLTV2MmgyMHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXRhaWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyAyIDIxaDIwTDEyIDN6bTEgNS45MkwxOC42IDE5SDEzVjguOTJ6bS0yIDBWMTlINS40TDExIDguOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcnR5TGVucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjk1IDE5SDIwVjdINHYxMmg3LjI0Yy4xNC0uOTguNDItMi4wNS0uMTYtMi40My0uODktLjU5LTEuMjcgMi4wNi0yLjggMS4zNS0xLjM5LTEuMTIgMS4wNS0xLjI5LjUtMy4yNy0uMjItLjc5LTIuMjguMzYtMi40LTEuMjQtLjA4LTEgMS40OS0uNzQgMS41MS0xLjQ5LjAzLS43NS0xLjAzLTEuMDUtLjI1LTEuOTEuMjItLjI0LjcxLS4yNi45MS0uMTkuNzkuMjcgMS41NSAxLjgyIDIuNTEgMS4xOSAxLjAzLS42Ni0xLjg4LTIuMzUgMC0yLjg2IDEuNjQtLjQ0IDEuMzEgMi4wOCAyLjY1IDIuNDQgMS45NC41MiAyLjY1LTQuNTUgNC40MS0yLjMzIDEuODUgMi4zMy0zLjQzIDIuMjctMi44NSA0LjAxLjM0IDEuMDEgMi4xNS0xLjIgMi43Ni41My42NCAxLjgzLTMuMDkuODItMy4wNCAxLjY2LjA2LjgzIDIuNDEuNTUgMS42NCAyLjEyLTEuMTQgMS44Ni0zLTEuMDMtMy44MS4wOS0uMzkuNTctLjA5IDEuNDkuMTMgMi4zM3pNMjAgNWMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY3YzAtMS4xLjktMiAyLTJoMy4xN0w5IDNoNmwxLjgzIDJIMjB6bS0xLjg2IDEzLjAxYy0uNDcgMC0uODYtLjM4LS44Ni0uODZzLjM4LS44Ni44Ni0uODZjLjQ3IDAgLjg2LjM4Ljg2Ljg2cy0uMzguODYtLjg2Ljg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV1cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOC41QTYuNDggNi40OCAwIDAgMSA5LjI0IDE1SDE1bDEtMkg4LjU4Yy0uMDUtLjMzLS4wOC0uNjYtLjA4LTFzLjAzLS42Ny4wOC0xSDE1bDEtMkg5LjI0QTYuNDkxIDYuNDkxIDAgMCAxIDE1IDUuNWMxLjYxIDAgMy4wOS41OSA0LjIzIDEuNTdMMjEgNS4zQTguOTU1IDguOTU1IDAgMCAwIDE1IDNjLTMuOTIgMC03LjI0IDIuNTEtOC40OCA2SDNsLTEgMmg0LjA2YTguMjYyIDguMjYyIDAgMCAwIDAgMkgzbC0xIDJoNC41MmMxLjI0IDMuNDkgNC41NiA2IDguNDggNiAyLjMxIDAgNC40MS0uODcgNi0yLjNsLTEuNzgtMS43N2MtMS4xMy45OC0yLjYgMS41Ny00LjIyIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cG9zdXJlTmVnMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExdjJoOHYtMkg0em0xNSA3aC0yVjcuMzhMMTQgOC40VjYuN0wxOC43IDVoLjN2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cG9zdXJlTmVnMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS4wNSAxNi4yOSAyLjg2LTMuMDdjLjM4LS4zOS43Mi0uNzkgMS4wNC0xLjE4LjMyLS4zOS41OS0uNzguODItMS4xNy4yMy0uMzkuNDEtLjc4LjU0LTEuMTdzLjE5LS43OS4xOS0xLjE4YzAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2LS4xOC0uNDQtLjQ0LS44MS0uNzgtMS4xMS0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzFBNS43MiA1LjcyIDAgMCAwIDE2LjQ3IDVjLS42OSAwLTEuMzEuMTEtMS44NS4zMi0uNTQuMjEtMSAuNTEtMS4zNi44OC0uMzcuMzctLjY1LjgtLjg0IDEuMy0uMTguNDctLjI3Ljk3LS4yOCAxLjVoMi4xNGMuMDEtLjMxLjA1LS42LjEzLS44Ny4wOS0uMjkuMjMtLjU0LjQtLjc1LjE4LS4yMS40MS0uMzcuNjgtLjQ5LjI3LS4xMi42LS4xOC45Ni0uMTguMzEgMCAuNTguMDUuODEuMTUuMjMuMS40My4yNS41OS40My4xNi4xOC4yOC40LjM3LjY1LjA4LjI1LjEzLjUyLjEzLjgxIDAgLjIyLS4wMy40My0uMDguNjUtLjA2LjIyLS4xNS40NS0uMjkuNy0uMTQuMjUtLjMyLjUzLS41Ni44My0uMjMuMy0uNTIuNjUtLjg4IDEuMDNsLTQuMTcgNC41NVYxOEgyMXYtMS43MWgtNS45NXpNMiAxMXYyaDh2LTJIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwb3N1cmVQbHVzMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA3SDh2NEg0djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0xMCAxMWgtMlY3LjM4TDE1IDguNFY2LjdMMTkuNyA1aC4zdjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBvc3VyZVBsdXMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjA1IDE2LjI5IDIuODYtMy4wN2MuMzgtLjM5LjcyLS43OSAxLjA0LTEuMTguMzItLjM5LjU5LS43OC44Mi0xLjE3LjIzLS4zOS40MS0uNzguNTQtMS4xNy4xMy0uMzkuMTktLjc5LjE5LTEuMTggMC0uNTMtLjA5LTEuMDItLjI3LTEuNDYtLjE4LS40NC0uNDQtLjgxLS43OC0xLjExLS4zNC0uMzEtLjc3LS41NC0xLjI2LS43MUE1LjcyIDUuNzIgMCAwIDAgMTcuNDcgNWMtLjY5IDAtMS4zMS4xMS0xLjg1LjMyLS41NC4yMS0xIC41MS0xLjM2Ljg4LS4zNy4zNy0uNjUuOC0uODQgMS4zLS4xOC40Ny0uMjcuOTctLjI4IDEuNWgyLjE0Yy4wMS0uMzEuMDUtLjYuMTMtLjg3LjA5LS4yOS4yMy0uNTQuNC0uNzUuMTgtLjIxLjQxLS4zNy42OC0uNDkuMjctLjEyLjYtLjE4Ljk2LS4xOC4zMSAwIC41OC4wNS44MS4xNS4yMy4xLjQzLjI1LjU5LjQzLjE2LjE4LjI4LjQuMzcuNjUuMDguMjUuMTMuNTIuMTMuODEgMCAuMjItLjAzLjQzLS4wOC42NS0uMDYuMjItLjE1LjQ1LS4yOS43LS4xNC4yNS0uMzIuNTMtLjU2LjgzLS4yMy4zLS41Mi42NS0uODggMS4wM2wtNC4xNyA0LjU1VjE4SDIydi0xLjcxaC01Ljk1ek04IDdINnY0SDJ2Mmg0djRoMnYtNGg0di0ySDhWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwb3N1cmVaZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMTQgMTIuNWMwIDEtLjEgMS44NS0uMyAyLjU1LS4yLjctLjQ4IDEuMjctLjgzIDEuNy0uMzYuNDQtLjc5Ljc1LTEuMy45NS0uNTEuMi0xLjA3LjMtMS43LjMtLjYyIDAtMS4xOC0uMS0xLjY5LS4zLS41MS0uMi0uOTUtLjUxLTEuMzEtLjk1LS4zNi0uNDQtLjY1LTEuMDEtLjg1LTEuNy0uMi0uNy0uMy0xLjU1LS4zLTIuNTV2LTIuMDRjMC0xIC4xLTEuODUuMy0yLjU1LjItLjcuNDgtMS4yNi44NC0xLjY5LjM2LS40My44LS43NCAxLjMxLS45M0MxMC44MSA1LjEgMTEuMzggNSAxMiA1Yy42MyAwIDEuMTkuMSAxLjcuMjkuNTEuMTkuOTUuNSAxLjMxLjkzLjM2LjQzLjY0Ljk5Ljg0IDEuNjkuMi43LjMgMS41NC4zIDIuNTV2Mi4wNHptLTIuMTEtMi4zNmMwLS42NC0uMDUtMS4xOC0uMTMtMS42Mi0uMDktLjQ0LS4yMi0uNzktLjQtMS4wNi0uMTctLjI3LS4zOS0uNDYtLjY0LS41OC0uMjUtLjEzLS41NC0uMTktLjg2LS4xOS0uMzIgMC0uNjEuMDYtLjg2LjE4cy0uNDcuMzEtLjY0LjU4Yy0uMTcuMjctLjMxLjYyLS40IDEuMDZzLS4xMy45OC0uMTMgMS42MnYyLjY3YzAgLjY0LjA1IDEuMTguMTQgMS42Mi4wOS40NS4yMy44MS40IDEuMDlzLjM5LjQ4LjY0LjYxLjU0LjE5Ljg3LjE5Yy4zMyAwIC42Mi0uMDYuODctLjE5cy40Ni0uMzMuNjMtLjYxYy4xNy0uMjguMy0uNjQuMzktMS4wOS4wOS0uNDUuMTMtLjk5LjEzLTEuNjJ2LTIuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cG9zdXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNNiA3aDV2MS41SDZWN3ptMTMgMTJINUwxOSA1djE0em0tNC41LTN2MkgxNnYtMmgydi0xLjVoLTJ2LTJoLTEuNXYyaC0yVjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlUmV0b3VjaGluZ05hdHVyYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC43NyA4LjU4LS45MiAyLjAxYy4wOS40Ni4xNS45My4xNSAxLjQxIDAgNC40MS0zLjU5IDgtOCA4cy04LTMuNTktOC04YzAtLjA1LjAxLS4xIDAtLjE0IDIuNi0uOTggNC42OS0yLjk5IDUuNzQtNS41NUExMCAxMCAwIDAgMCAxNy41IDEwYy40NSAwIC44OS0uMDQgMS4zMy0uMWwtLjYtMS4zMi0uODgtMS45My0xLjkzLS44OC0yLjc5LTEuMjcgMi43OS0xLjI3LjcxLS4zMkE5Ljg2IDkuODYgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtMS40Ny0uMzMtMi44Ny0uOS00LjEzbC0uMzMuNzF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC42IDUuNiAxOS41IDhsLTEuMS0yLjRMMTYgNC41bDIuNC0xLjFMMTkuNSAxbDEuMSAyLjRMMjMgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlUmV0b3VjaGluZ09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTBjLjc1IDAgMS40Ny0uMDkgMi4xNy0uMjQuMjEuNzEuMzMgMS40Ni4zMyAyLjI0IDAgMS4yMi0uMjggMi4zNy0uNzcgMy40bDEuNDkgMS40OUE5Ljk4MSA5Ljk4MSAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0xLjc4IDAtMy40NC40Ny00Ljg5IDEuMjhsNS4zMyA1LjMzYzEuNDkuODggMy4yMSAxLjM5IDUuMDYgMS4zOXpNMS44OSAzLjcybDIuMTkgMi4xOUE5Ljk1OCA5Ljk1OCAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMjkgMCA0LjQtLjc4IDYuMDktMi4wOGwyLjE5IDIuMTkgMS40MS0xLjQxTDMuMzEgMi4zMSAxLjg5IDMuNzJ6bTE0Ljc3IDE0Ljc3QTcuOTEgNy45MSAwIDAgMSAxMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0uMDUuMDEtLjEgMC0uMTRhOS45NDYgOS45NDYgMCAwIDAgMy42NC0yLjM5bDkuMDIgOS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSAxMGgyVjVoLTR2Mmgydjh6bTctMTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS00LTRoLTR2LTJoMmEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMmgtNHYyaDR2MmgtMmEyIDIgMCAwIDAtMiAydjRoNnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE0IDh2LTEuNWMwLS44My0uNjctMS41LTEuNS0xLjUuODMgMCAxLjUtLjY3IDEuNS0xLjVWN2EyIDIgMCAwIDAtMi0yaC00djJoNHYyaC0ydjJoMnYyaC00djJoNGEyIDIgMCAwIDAgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXI0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTEyIDEwaDJWNWgtMnY0aC0yVjVoLTJ2Nmg0djR6bTYtMTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE0IDh2LTJhMiAyIDAgMCAwLTItMmgtMlY3aDRWNWgtNnY2aDR2MmgtNHYyaDRhMiAyIDAgMCAwIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmEyIDIgMCAwIDAgMi0ydi0yYTIgMiAwIDAgMC0yLTJoLTJWN2g0VjVoLTRhMiAyIDAgMCAwLTIgMnY2YTIgMiAwIDAgMCAyIDJ6bTAtNGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlcjcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yIDQtOFY1aC02djJoNGwtNCA4aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlcjggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yaDJhMiAyIDAgMCAwIDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YTIgMiAwIDAgMC0yLTJoLTJhMiAyIDAgMCAwLTIgMnYxLjVjMCAuODMuNjcgMS41IDEuNSAxLjUtLjgzIDAtMS41LjY3LTEuNSAxLjVWMTNhMiAyIDAgMCAwIDIgMnptMC04aDJ2MmgtMlY3em0wIDRoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXI5UGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSA3VjhhMiAyIDAgMCAwLTItMmgtMWEyIDIgMCAwIDAtMiAydjFhMiAyIDAgMCAwIDIgMmgxdjFIOXYyaDNhMiAyIDAgMCAwIDItMnptLTMtM1Y4aDF2MWgtMXptMTAtOEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgOGgtMlY3aC0ydjJoLTJ2MmgydjJoMnYtMmgydjZIN1YzaDE0djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlcjkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0xNSA1aC0yYTIgMiAwIDAgMC0yIDJ2MmEyIDIgMCAwIDAgMiAyaDJ2MmgtNHYyaDRhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJ6bTAgNGgtMlY3aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyQkFuZFcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi03LTh2OEg1bDctOFY1aDd2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckNlbnRlckZvY3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNUgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0ek0xMiA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyRHJhbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNGE3LjQ4IDcuNDggMCAwIDAtNi42NCA0LjA0QTUuOTk2IDUuOTk2IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNGgyYzAtMi43Ni0xLjg2LTUuMDgtNC40LTUuNzhDOC42MSA2Ljg4IDEwLjIgNiAxMiA2YzMuMDMgMCA1LjUgMi40NyA1LjUgNS41di41SDE5YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJGcmFtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC00bC00LTQtNCA0SDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNkg0VjZoNC41MmwzLjUyLTMuNUwxNS41MiA2SDIwdjE0ek0xOCA4SDZ2MTBoMTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVySGRyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0zLjc1IDUgMi44NSAzLjgtMS42IDEuMkM5LjgxIDEzLjc1IDcgMTAgNyAxMGwtNiA4aDIyTDE0IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlck5vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJUaWx0U2hpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA0LjA3VjIuMDVjLTIuMDEuMi0zLjg0IDEtNS4zMiAyLjIxTDcuMSA1LjY5QTcuOTQxIDcuOTQxIDAgMCAxIDExIDQuMDd6bTcuMzIuMTlBOS45NDkgOS45NDkgMCAwIDAgMTMgMi4wNXYyLjAyYzEuNDYuMTggMi43OS43NiAzLjkgMS42MmwxLjQyLTEuNDN6TTE5LjkzIDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMkwxOC4zMSA3LjFhNy45NDEgNy45NDEgMCAwIDEgMS42MiAzLjl6TTUuNjkgNy4xIDQuMjYgNS42OEE5Ljk0OSA5Ljk0OSAwIDAgMCAyLjA1IDExaDIuMDJjLjE4LTEuNDYuNzYtMi43OSAxLjYyLTMuOXpNNC4wNyAxM0gyLjA1Yy4yIDIuMDEgMSAzLjg0IDIuMjEgNS4zMmwxLjQzLTEuNDNBNy44NjggNy44NjggMCAwIDEgNC4wNyAxM3pNMTUgMTJjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDMgMS4zNCAzIDMgMyAzLTEuMzQgMy0zem0zLjMxIDQuOSAxLjQzIDEuNDNhOS45ODEgOS45ODEgMCAwIDAgMi4yMS01LjMyaC0yLjAyYTcuOTQ1IDcuOTQ1IDAgMCAxLTEuNjIgMy44OXpNMTMgMTkuOTN2Mi4wMmMyLjAxLS4yIDMuODQtMSA1LjMyLTIuMjFsLTEuNDMtMS40M2MtMS4xLjg2LTIuNDMgMS40NC0zLjg5IDEuNjJ6bS03LjMyLS4xOUE5Ljk4MSA5Ljk4MSAwIDAgMCAxMSAyMS45NXYtMi4wMmE3Ljk0MSA3Ljk0MSAwIDAgMS0zLjktMS42MmwtMS40MiAxLjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJWaW50YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNyAxMi40YTYuMDYgNi4wNiAwIDAgMC0uODYtLjRjLjI5LS4xMS41OC0uMjQuODYtLjRhNi4wMTIgNi4wMTIgMCAwIDAgMy01LjE5IDYuMDA3IDYuMDA3IDAgMCAwLTYgMGMtLjI4LjE2LS41NC4zNS0uNzguNTQuMDUtLjMxLjA4LS42My4wOC0uOTUgMC0yLjIyLTEuMjEtNC4xNS0zLTUuMTlDMTAuMjEgMS44NSA5IDMuNzggOSA2YzAgLjMyLjAzLjY0LjA4Ljk1LS4yNC0uMi0uNS0uMzktLjc4LS41NWE2LjAwOCA2LjAwOCAwIDAgMC02IDAgNS45NyA1Ljk3IDAgMCAwIDMgNS4xOWMuMjguMTYuNTcuMjkuODYuNC0uMjkuMTEtLjU4LjI0LS44Ni40YTYuMDEyIDYuMDEyIDAgMCAwLTMgNS4xOSA2LjAwNyA2LjAwNyAwIDAgMCA2IDBjLjI4LS4xNi41NC0uMzUuNzgtLjU0LS4wNS4zMi0uMDguNjQtLjA4Ljk2IDAgMi4yMiAxLjIxIDQuMTUgMyA1LjE5IDEuNzktMS4wNCAzLTIuOTcgMy01LjE5IDAtLjMyLS4wMy0uNjQtLjA4LS45NS4yNC4yLjUuMzguNzguNTRhNi4wMDggNi4wMDggMCAwIDAgNiAwIDYuMDEyIDYuMDEyIDAgMCAwLTMtNS4xOXpNMTIgMTZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS45NiAxMC4yOS0yLjc1IDMuNTQtMS45Ni0yLjM2TDguNSAxNWgxMWwtMy41NC00Ljcxek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTFIMXYyaDZ2LTJ6bTIuMTctMy4yNEw3LjA1IDUuNjQgNS42NCA3LjA1bDIuMTIgMi4xMiAxLjQxLTEuNDF6TTEzIDFoLTJ2NmgyVjF6bTUuMzYgNi4wNS0xLjQxLTEuNDEtMi4xMiAyLjEyIDEuNDEgMS40MSAyLjEyLTIuMTJ6TTE3IDExdjJoNnYtMmgtNnptLTUtMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTIuODMgNy4yNCAyLjEyIDIuMTIgMS40MS0xLjQxLTIuMTItMi4xMi0xLjQxIDEuNDF6bS05LjE5LjcxIDEuNDEgMS40MSAyLjEyLTIuMTItMS40MS0xLjQxLTIuMTIgMi4xMnpNMTEgMjNoMnYtNmgtMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFzaEF1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDJ2MTJoM3Y5bDctMTJIOWw0LTlIM3ptMTYgMGgtMmwtMy4yIDloMS45bC43LTJoMy4ybC43IDJoMS45TDE5IDJ6bS0yLjE1IDUuNjVMMTggNGwxLjE1IDMuNjVoLTIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhc2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjI3IDMgMiA0LjI3bDUgNVYxM2gzdjlsMy41OC02LjE0TDE3LjczIDIwIDE5IDE4LjczIDMuMjcgM3pNMTcgMTBoLTRsNC04SDd2Mi4xOGw4LjQ2IDguNDZMMTcgMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYXNoT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDJ2MTFoM3Y5bDctMTJoLTRsNC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlwQ2FtZXJhQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zLTMgMS4zNC0zIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTBWOEg1LjA5QzYuNDcgNS42MSA5LjA1IDQgMTIgNGMzLjcyIDAgNi44NSAyLjU2IDcuNzQgNmgyLjA2Yy0uOTMtNC41Ni00Ljk2LTgtOS44LTgtMy4yNyAwLTYuMTggMS41OC04IDQuMDFWNEgydjZoNnpNMTYgMTR2MmgyLjkxYy0xLjM4IDIuMzktMy45NiA0LTYuOTEgNC0zLjcyIDAtNi44NS0yLjU2LTcuNzQtNkgyLjJjLjkzIDQuNTYgNC45NiA4IDkuOCA4IDMuMjcgMCA2LjE4LTEuNTggOC00LjAxVjIwaDJ2LTZoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaXBDYW1lcmFJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOCAxM2MtMi43NiAwLTUtMi4yNC01LTVINWwyLjUtMi41TDEwIDEzSDhjMCAyLjIxIDEuNzkgNCA0IDQgLjU4IDAgMS4xMy0uMTMgMS42Mi0uMzVsLjc0Ljc0Yy0uNzEuMzctMS41LjYxLTIuMzYuNjF6bTQuNS0yLjVMMTQgMTNoMmMwLTIuMjEtMS43OS00LTQtNC0uNTggMC0xLjEzLjEzLTEuNjIuMzVsLS43NC0uNzNDMTAuMzUgOC4yNCAxMS4xNCA4IDEyIDhjMi43NiAwIDUgMi4yNCA1IDVoMmwtMi41IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDIxaDJ2LTJoLTJ2MnptNC0xMmgyVjdoLTJ2MnpNMyA1djE0YzAgMS4xLjkgMiAyIDJoNHYtMkg1VjVoNFYzSDVjLTEuMSAwLTIgLjktMiAyem0xNi0ydjJoMmMwLTEuMS0uOS0yLTItMnptLTggMjBoMlYxaC0ydjIyem04LTZoMnYtMmgtMnYyek0xNSA1aDJWM2gtMnYyem00IDhoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JhZGllbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA5aDJ2MmgtMnptLTIgMmgydjJIOXptNCAwaDJ2MmgtMnptMi0yaDJ2MmgtMnpNNyA5aDJ2Mkg3em0xMi02SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxOEg3di0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptMi03aC0ydjJoMnYyaC0ydi0yaC0ydjJoLTJ2LTJoLTJ2Mkg5di0ySDd2Mkg1di0yaDJ2LTJINVY1aDE0djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek02IDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMi04YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptLTQgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JpZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNHYxLjQ1bDIgMlY0aDR2NGgtMy40NWwyIDJIMTR2MS40NWwyIDJWMTBoNHY0aC0zLjQ1bDIgMkgyMHYxLjQ1bDIgMlY0YzAtMS4xLS45LTItMi0ySDQuNTVsMiAySDh6bTggMGg0djRoLTRWNHpNMS4yNyAxLjI3IDAgMi41NWwyIDJWMjBjMCAxLjEuOSAyIDIgMmgxNS40NmwyIDIgMS4yNy0xLjI3TDEuMjcgMS4yN3pNMTAgMTIuNTUgMTEuNDUgMTRIMTB2LTEuNDV6bS02LTZMNS40NSA4SDRWNi41NXpNOCAyMEg0di00aDR2NHptMC02SDR2LTRoMy40NWwuNTUuNTVWMTR6bTYgNmgtNHYtNGgzLjQ1bC41NS41NFYyMHptMiAwdi0xLjQ2TDE3LjQ2IDIwSDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmlkT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOCAyMEg0di00aDR2NHptMC02SDR2LTRoNHY0em0wLTZINFY0aDR2NHptNiAxMmgtNHYtNGg0djR6bTAtNmgtNHYtNGg0djR6bTAtNmgtNFY0aDR2NHptNiAxMmgtNHYtNGg0djR6bTAtNmgtNHYtNGg0djR6bTAtNmgtNFY0aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyRW5oYW5jZWRTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTYgMi42OS02IDYtNnptMCAyQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0xIDdoLTJWOUg5VjdoMlY1aDJ2MmgydjJoLTJ2MnptMTEgOWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHptLTYtMS41YzAgLjYtLjQgMS4xLS45IDEuNEwxOCAyMmgtMS41bC0uOS0yaC0xLjF2MkgxM3YtNmgzLjVjLjggMCAxLjUuNyAxLjUgMS41djF6bS0xLjUgMHYtMWgtMnYxaDJ6bS0xMy0uNXYtMkg1djZIMy41di0yLjVoLTJWMjJIMHYtNmgxLjV2Mmgyem02LjUtMmMuOCAwIDEuNS43IDEuNSAxLjV2M2MwIC44LS43IDEuNS0xLjUgMS41SDYuNXYtNkgxMHptMCA0LjV2LTNIOHYzaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAxNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4yLjktLjguOS0xLjR2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY0LjlsMS4xIDEuMWguNHptMC00LjVoMnYxaC0ydi0xem0tNC41IDB2LjRsMS41IDEuNXYtMS45YzAtLjgtLjctMS41LTEuNS0xLjVoLTEuOWwxLjUgMS41aC40em0tMy41LTEtNy03LTEuMSAxTDYuOSA5aC0uNHYyaC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOHYtNC45bDEuNSAxLjVWMTVoMy40bDcuNiA3LjYgMS4xLTEuMS0xMi4xLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTEuNXYtMWMwLS44LS43LTEuNS0xLjUtMS41SDE2djZoMS41di0yaDEuMWwuOSAySDIxbC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHptLTEuNSAwaC0ydi0xaDJ2MXptLTEzLS41aC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOFY5SDYuNXYyek0xMyA5SDkuNXY2SDEzYy44IDAgMS41LS43IDEuNS0xLjV2LTNjMC0uOC0uNy0xLjUtMS41LTEuNXptMCA0LjVoLTJ2LTNoMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDE0LjVoMnYxaC0yek0xNC41IDcuNUgxNnYzaC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTMuNWMwIC42LS40IDEuMS0uOSAxLjRMMTIgMTloLTEuNWwtLjktMkg4LjV2Mkg3di02aDMuNWMuOCAwIDEuNS43IDEuNSAxLjV2MXptMC0zLjVoLTEuNVY5LjVoLTJWMTJIN1Y2aDEuNXYyaDJWNkgxMnY2em01LjUgNEgxNnYxLjVoLTEuNVYxNkgxM3YtMS41aDEuNVYxM0gxNnYxLjQ5aDEuNVYxNnptMC01LjVjMCAuOC0uNyAxLjUtMS41IDEuNWgtM1Y2aDNjLjggMCAxLjUuNyAxLjUgMS41djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkclN0cm9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02ek01IDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJXZWFrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMTItMmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTAgMTBjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNzMgMTIuMDIgMy45OC0zLjk4YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtNC4zNC00LjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMy45OCAzLjk4TDggMi4yOWExLjAwMSAxLjAwMSAwIDAgMC0xLjQxIDBMMi4yNSA2LjYzYS45OTYuOTk2IDAgMCAwIDAgMS40MWwzLjk4IDMuOThMMi4yNSAxNmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsNC4zNCA0LjM0Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwzLjk4LTMuOTggMy45OCAzLjk4Yy4yLjIuNDUuMjkuNzEuMjkuMjYgMCAuNTEtLjEuNzEtLjI5bDQuMzQtNC4zNGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTMuOTktMy45OHpNMTIgOWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tNC43MSAxLjk2TDMuNjYgNy4zNGwzLjYzLTMuNjMgMy42MiAzLjYyLTMuNjIgMy42M3pNMTAgMTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMiAyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTItNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0yLjY2IDkuMzQtMy42My0zLjYyIDMuNjMtMy42MyAzLjYyIDMuNjItMy42MiAzLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZXZjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDExaC0xVjlIM3Y2aDEuNXYtMi41aDFWMTVIN1Y5SDUuNXpNMjEgMTF2LTFjMC0uNTUtLjQ1LTEtMS0xaC0yYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXYtMWgtMS41di41aC0xdi0zaDF2LjVIMjF6TTE0LjI1IDEzLjUgMTMuNSA5SDEybDEgNmgyLjVsMS02SDE1ek04IDl2NmgzLjV2LTEuNWgtMnYtMWgyVjExaC0ydi0uNWgyVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhpZGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVjMC0xLjEtLjktMi0yLTJINS44M0wyMSAxOC4xN1Y1ek0yLjgxIDIuODEgMS4zOSA0LjIyIDMgNS44M1YxOWMwIDEuMS45IDIgMiAyaDEzLjE3bDEuNjEgMS42MSAxLjQxLTEuNDFMMi44MSAyLjgxek02IDE3bDMtNCAyLjI1IDMgLjgyLTEuMSAyLjEgMi4xSDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEltYWdlQXNwZWN0UmF0aW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6bS04LTRINnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTgtNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbWFnZU5vdFN1cHBvcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjkgMjEuOS04LjQ5LTguNDktOS44Mi05LjgyTDIuMSAyLjEuNjkgMy41MSAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wyLjMxIDIuMzEgMS40Mi0xLjQxek01IDE4bDMuNS00LjUgMi41IDMuMDFMMTIuMTcgMTVsMyAzSDV6bTE2IC4xN0w1LjgzIDNIMTljMS4xIDAgMiAuOSAyIDJ2MTMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEltYWdlU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTN2N0g0VjZoNS4wMmMuMDUtLjcxLjIyLTEuMzguNDgtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01bC0yLTJ6bS0xLjUgNWgtMTFsMi43NS0zLjUzIDEuOTYgMi4zNiAyLjc1LTMuNTR6bTIuOC05LjExYy40NC0uNy43LTEuNTEuNy0yLjM5QzIwIDQuMDEgMTcuOTkgMiAxNS41IDJTMTEgNC4wMSAxMSA2LjVzMi4wMSA0LjUgNC40OSA0LjVjLjg4IDAgMS43LS4yNiAyLjM5LS43TDIxIDEzLjQyIDIyLjQyIDEyIDE5LjMgOC44OXpNMTUuNSA5YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnpNOC41IDEzLjVsMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1bDMuNS00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluY29tcGxldGVDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0yLjc2IDEuMTItNS4yNiAyLjkzLTcuMDdMMTIgMTJWMmM1LjUyIDAgMTAgNC40OCAxMCAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSXNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01LjUgNy41aDJ2LTJIOXYyaDJWOUg5djJINy41VjloLTJWNy41ek0xOSAxOUg1TDE5IDV2MTR6bS0yLTJ2LTEuNWgtNVYxN2g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTMuNzUgNSAyLjg1IDMuOC0xLjYgMS4yQzkuODEgMTMuNzUgNyAxMCA3IDEwbC02IDhoMjJMMTQgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVha0FkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM0gzdjNjMS42NiAwIDMtMS4zNCAzLTN6bTggMGgtMmE5IDkgMCAwIDEtOSA5djJjNi4wOCAwIDExLTQuOTMgMTEtMTF6bS00IDBIOGMwIDIuNzYtMi4yNCA1LTUgNXYyYzMuODcgMCA3LTMuMTMgNy03em0wIDE4aDJhOSA5IDAgMCAxIDktOXYtMmMtNi4wNyAwLTExIDQuOTMtMTEgMTF6bTggMGgzdi0zYy0xLjY2IDAtMyAxLjM0LTMgM3ptLTQgMGgyYzAtMi43NiAyLjI0LTUgNS01di0yYy0zLjg3IDAtNyAzLjEzLTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVha1JlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNIOGMwIC4zNy0uMDQuNzItLjEyIDEuMDZsMS41OSAxLjU5QzkuODEgNC44NCAxMCAzLjk0IDEwIDN6TTMgNC4yN2wyLjg0IDIuODRDNS4wMyA3LjY3IDQuMDYgOCAzIDh2MmMxLjYxIDAgMy4wOS0uNTUgNC4yNy0xLjQ2TDguNyA5Ljk3QTguOTkgOC45OSAwIDAgMSAzIDEydjJjMi43MSAwIDUuMTktLjk5IDcuMTEtMi42MmwyLjUgMi41QTExLjA0NCAxMS4wNDQgMCAwIDAgMTAgMjFoMmMwLTIuMTYuNzYtNC4xNCAyLjAzLTUuNjlsMS40MyAxLjQzQTYuOTIyIDYuOTIyIDAgMCAwIDE0IDIxaDJjMC0xLjA2LjMzLTIuMDMuODktMi44NEwxOS43MyAyMSAyMSAxOS43MyA0LjI3IDMgMyA0LjI3ek0xNCAzaC0yYzAgMS41LS4zNyAyLjkxLTEuMDIgNC4xNmwxLjQ2IDEuNDZDMTMuNDIgNi45OCAxNCA1LjA2IDE0IDN6bTUuOTQgMTMuMTJjLjM0LS4wOC42OS0uMTIgMS4wNi0uMTJ2LTJjLS45NCAwLTEuODQuMTktMi42Ni41MmwxLjYgMS42em0tNC41Ni00LjU2IDEuNDYgMS40NkE4Ljk4IDguOTggMCAwIDEgMjEgMTJ2LTJjLTIuMDYgMC0zLjk4LjU4LTUuNjIgMS41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpbmtlZENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIzLjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCI1XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDMuMzNjMi41OCAwIDQuNjcgMi4wOSA0LjY3IDQuNjdIMjJjMC0zLjMxLTIuNjktNi02LTZ2MS4zM00xNiA2YzEuMTEgMCAyIC44OSAyIDJoMS4zM2MwLTEuODQtMS40OS0zLjMzLTMuMzMtMy4zM1Y2XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDBIMHYyNGgyNFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA5YzAtMS4xMS0uODktMi0yLTJWNEg5TDcuMTcgNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjloLTV6bS01IDEwYy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9nb0RldiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek03LjY4IDE0Ljk4SDZWOWgxLjcxYzEuMjggMCAxLjcxIDEuMDMgMS43MSAxLjcxdjIuNTZjMCAuNjgtLjQyIDEuNzEtMS43NCAxLjcxem00LjctMy41MnYxLjA3SDExLjJ2MS4zOWgxLjkzdjEuMDdoLTIuMjVjLS40LjAxLS43NC0uMzEtLjc1LS43MVY5Ljc1Yy0uMDEtLjQuMzEtLjc0LjcxLS43NWgyLjI4djEuMDdIMTEuMnYxLjM5aDEuMTh6bTQuNSAyLjc3Yy0uNDggMS4xMS0xLjMzLjg5LTEuNzEgMEwxMy43NyA5aDEuMThsMS4wNyA0LjExTDE3LjA5IDloMS4xOGwtMS4zOSA1LjIzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc3IDEwLjEyaC0uNjN2My43N2guNjNjLjE0IDAgLjI4LS4wNS40Mi0uMTYuMTQtLjEuMjEtLjI2LjIxLS40N3YtMi41MmMwLS4yMS0uMDctLjM3LS4yMS0uNDdhLjcyLjcyIDAgMCAwLS40Mi0uMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNLjAxIDBoMjR2MjRoLTI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wMSAzaC0xNGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA3LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41LjgzIDAgMS41LjY3IDEuNSAxLjVWMTVhMiAyIDAgMCAxLTIgMmgtNHYtMmg0di0yaC0ydi0yaDJWOWgtNFY3aDRhMiAyIDAgMCAxIDIgMnYxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCAxNGgtMnYtNEg5VjdoMnY0aDJWN2gydjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb29rczUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNmgtNHYyaDJhMiAyIDAgMCAxIDIgMnYyYTIgMiAwIDAgMS0yIDJIOXYtMmg0di0ySDlWN2g2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2LTJoLTJ2MnptOC0xMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDZoLTR2MmgyYTIgMiAwIDAgMSAyIDJ2MmEyIDIgMCAwIDEtMiAyaC0yYTIgMiAwIDAgMS0yLTJWOWEyIDIgMCAwIDEgMi0yaDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9va3NPbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTUgMTRoLTJWOWgtMlY3aDR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzVHdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDhhMiAyIDAgMCAxLTIgMmgtMnYyaDR2Mkg5di00YTIgMiAwIDAgMSAyLTJoMlY5SDlWN2g0YTIgMiAwIDAgMSAyIDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9va3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMtMy44NiAwLTcgMy4xNC03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg2LTMuMTQtNy03LTd6bTAtNEM1LjkzIDYgMSAxMC45MyAxIDE3aDJjMC00Ljk2IDQuMDQtOSA5LTlzOSA0LjA0IDkgOWgyYzAtNi4wNy00LjkzLTExLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb3VwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUxLTQuNDktMTAtMTAtMTB6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWNFeHRlcm5hbE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjIgNS4xNyA4SDRsMSAxMGgxYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTR2LTEuMTdsNS43OCA1Ljc4IDEuNDEtMS40MnpNMTIgMThjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yaDFsLjU2LTUuNjFMMTIgMTQuODNWMTh6bTItMTJ2NS4xN2wtMi0yVjZjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNHYxMS4xN2wtMi0yVjZjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyem0tNC0xYzAgLjYyLS4yIDEuMTgtLjUyIDEuNjZMNS4zMyAyLjUxQTIuOTk2IDIuOTk2IDAgMCAxIDEwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pY0V4dGVybmFsT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjIyIDdINC43OEM0LjMgNi40NyA0IDUuNzcgNCA1YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDNjMCAuNzctLjMgMS40Ny0uNzggMnpNMTYgMmMyLjIxIDAgNCAxLjc5IDQgNHYxNmgtMlY2YzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNEg1TDQgOGg2TDkgMThIOGMwIDEuMS45IDIgMiAyczItLjkgMi0yVjZjMC0yLjIxIDEuNzktNCA0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbm9jaHJvbWVQaG90b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6TS03NCAyOWg0OHY0OGgtNDhWMjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMkwxNSAzSDlMNy4yIDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC04di0xYy0yLjggMC01LTIuMi01LTVzMi4yLTUgNS01VjdoOHYxMnptLTMtNmMwLTIuOC0yLjItNS01LTV2MS44YzEuOCAwIDMuMiAxLjQgMy4yIDMuMnMtMS40IDMuMi0zLjIgMy4yVjE4YzIuOCAwIDUtMi4yIDUtNXptLTguMiAwYzAgMS44IDEuNCAzLjIgMy4yIDMuMlY5LjhjLTEuOCAwLTMuMiAxLjQtMy4yIDMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW90aW9uUGhvdG9zQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuODggNy44OCAxLjU0IDEuNTRDNC4xNSAxMC4yMyA0IDExLjEgNCAxMmMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04LTMuNTktOC04LThjLS45IDAtMS43Ny4xNS0yLjU4LjQyTDcuODkgMi44OUM5LjE1IDIuMzIgMTAuNTQgMiAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTEuNDcuMzItMi44Ni44OC00LjEyek03IDUuNUM3IDYuMzMgNi4zMyA3IDUuNSA3UzQgNi4zMyA0IDUuNSA0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41em01LjAzIDMuNDloLS4wN0wxMC44IDEyLjNoMi4zOWwtMS4xNi0zLjMxek0xMiAxOGMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNi02IDIuNjktNiA2IDIuNjkgNiA2IDZ6bS0uNzEtMTAuNWgxLjQzbDMuMDEgOGgtMS4zOWwtLjcyLTIuMDRoLTMuMjNsLS43MyAyLjA0SDguMjhsMy4wMS04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3Rpb25QaG90b3NPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC44NCAyMC44NCAzLjE2IDMuMTYgMS44OSA0LjQzbDEuODkgMS44OUE5LjkyIDkuOTIgMCAwIDAgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAyLjExIDAgNC4wNy0uNjYgNS42OC0xLjc3bDEuODkgMS44OSAxLjI3LTEuMjh6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNTUuNDUtMyAxLjIyLTQuMjNsMS40NiAxLjQ2QzYuMjUgMTAuMDYgNiAxMSA2IDEyYzAgMy4zMSAyLjY5IDYgNiA2IDEgMCAxLjk0LS4yNSAyLjc3LS42OGwxLjQ2IDEuNDZBNy45NTEgNy45NTEgMCAwIDEgMTIgMjB6TTYuMzIgMy43N0E5Ljk4NiA5Ljk4NiAwIDAgMSAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwIDAgMi4xMS0uNjYgNC4wNy0xLjc3IDUuNjhsLTEuNDUtMS40NUE3Ljk1MSA3Ljk1MSAwIDAgMCAyMCAxMmMwLTQuNDEtMy41OS04LTgtOC0xLjU1IDAtMyAuNDUtNC4yMyAxLjIyTDYuMzIgMy43N3pNMTggMTJjMCAxLS4yNSAxLjk0LS42OCAyLjc3TDkuMjMgNi42OEMxMC4wNiA2LjI1IDExIDYgMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW90aW9uUGhvdG9zT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjg4IDcuODggMS41NCAxLjU0QzQuMTUgMTAuMjMgNCAxMS4xIDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOSAwLTEuNzcuMTUtMi41OC40Mkw3Ljg5IDIuODlDOS4xNSAyLjMyIDEwLjU0IDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHMtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjQ3LjMyLTIuODYuODgtNC4xMnpNNiAxMmMwLTMuMzEgMi42OS02IDYtNnM2IDIuNjkgNiA2LTIuNjkgNi02IDYtNi0yLjY5LTYtNnptMS02LjVDNyA2LjMzIDYuMzMgNyA1LjUgN1M0IDYuMzMgNCA1LjUgNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW90aW9uUGhvdG9zUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjg4IDcuODggMS41NCAxLjU0QzQuMTUgMTAuMjMgNCAxMS4xIDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOSAwLTEuNzcuMTUtMi41OC40Mkw3Ljg5IDIuODlDOS4xNSAyLjMyIDEwLjU0IDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHMtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjQ3LjMyLTIuODYuODgtNC4xMnpNNyA1LjVDNyA2LjMzIDYuMzMgNyA1LjUgN1M0IDYuMzMgNCA1LjUgNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNXptNSAuNWMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bS0xIDlIOVY5aDJ2NnptNCAwaC0yVjloMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3Rpb25QaG90b3NQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjE5LjIyLTIuMzIuNi0zLjM4bDEuODguNjhDNC4xNyAxMC4xNCA0IDExLjA1IDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOTUgMC0xLjg1LjE3LTIuNjkuNDhsLS42OC0xLjg5QzkuNjkgMi4yMiAxMC44MiAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTB6TTUuNSA0QzQuNjcgNCA0IDQuNjcgNCA1LjVTNC42NyA3IDUuNSA3IDcgNi4zMyA3IDUuNSA2LjMzIDQgNS41IDR6TTExIDE2VjhIOXY4aDJ6bTQgMFY4aC0ydjhoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92aWVDcmVhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDQgMiA0aC0zbC0yLTRoLTJsMiA0aC0zbC0yLTRIOGwyIDRIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92aWVGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA0IDIgM2gtM2wtMi0zaC0ybDIgM2gtM2wtMi0zSDhsMiAzSDdMNSA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRoLTR6bS02Ljc1IDExLjI1TDEwIDE4bC0xLjI1LTIuNzVMNiAxNGwyLjc1LTEuMjVMMTAgMTBsMS4yNSAyLjc1TDE0IDE0bC0yLjc1IDEuMjV6bTUuNjktMy4zMUwxNiAxNGwtLjk0LTIuMDZMMTMgMTFsMi4wNi0uOTRMMTYgOGwuOTQgMi4wNkwxOSAxMWwtMi4wNi45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek02LjUgOUgxMWMuNTUgMCAxIC40NSAxIDF2NWgtMS41di00LjVoLTF2M0g4di0zSDdWMTVINS41di01YzAtLjU1LjQ1LTEgMS0xem05IDZIMTRWOWgzLjVjLjU1IDAgMSAuNDUgMSAxdjIuNWMwIC41NS0uNDUgMS0xIDFoLTJWMTV6bTAtM0gxN3YtMS41aC0xLjVWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE11c2ljTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDN2MTAuNTVjLS41OS0uMzQtMS4yNy0uNTUtMi0uNTUtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00VjdoNFYzaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdXNpY09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMjcgMyAzIDQuMjdsOSA5di4yOGMtLjU5LS4zNC0xLjI3LS41NS0yLS41NS0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTR2LTEuNzNMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzek0xNCA3aDRWM2gtNnY1LjE4bDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF0dXJlUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuMTcgOS4xN2MwLTMuODctMy4xMy03LTctN3MtNyAzLjEzLTcgN0E2Ljk4IDYuOTggMCAwIDAgMTQgMTYuMDZWMjBINnYtM2gxdi00YzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2NGgxdjVoMTZ2LTJoLTN2LTMuODhhNyA3IDAgMCAwIDYuMTctNi45NXpNNC41IDExYy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjMzIDggNC41IDggMyA4LjY3IDMgOS41IDMuNjcgMTEgNC41IDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxNi4xMmE3IDcgMCAwIDAgNi4xNy02Ljk1YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3QTYuOTggNi45OCAwIDAgMCAxMSAxNi4wNlYyMEg1djJoMTR2LTJoLTZ2LTMuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5hdmlnYXRlQmVmb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDEgNy40MSAxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF2aWdhdGVOZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNiA4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbGV0dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwYTIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLS42MS0uMjMtMS4yLS42NC0xLjY3YS41MjguNTI4IDAgMCAxLS4xMy0uMzNjMC0uMjguMjItLjUuNS0uNUgxNmMzLjMxIDAgNi0yLjY5IDYtNiAwLTQuOTYtNC40OS05LTEwLTl6bTUuNSAxMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bS0zLTRjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA2IDE0LjUgNnMxLjUuNjcgMS41IDEuNVMxNS4zMyA5IDE0LjUgOXpNNSAxMS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzcuMzMgMTMgNi41IDEzIDUgMTIuMzMgNSAxMS41em02LTRjMCAuODMtLjY3IDEuNS0xLjUgMS41UzggOC4zMyA4IDcuNSA4LjY3IDYgOS41IDZzMS41LjY3IDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hRmlzaEV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYW5vcmFtYUhvcml6b250YWxTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS40MyA0Yy0uMSAwLS4yLjAyLS4zMS4wNkMxOC4xOCA1LjE2IDE1LjA5IDUuNyAxMiA1LjdzLTYuMTgtLjU1LTkuMTItMS42NEEuOTQuOTQgMCAwIDAgMi41NyA0Yy0uMzQgMC0uNTcuMjMtLjU3LjYzdjE0Ljc1YzAgLjM5LjIzLjYyLjU3LjYyLjEgMCAuMi0uMDIuMzEtLjA2IDIuOTQtMS4xIDYuMDMtMS42NCA5LjEyLTEuNjRzNi4xOC41NSA5LjEyIDEuNjRjLjExLjA0LjIxLjA2LjMxLjA2LjMzIDAgLjU3LS4yMy41Ny0uNjNWNC42M2MwLS40LS4yNC0uNjMtLjU3LS42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNi41NHYxMC45MWMtMi42LS43Ny01LjI4LTEuMTYtOC0xLjE2LTIuNzIgMC01LjQuMzktOCAxLjE2VjYuNTRjMi42Ljc3IDUuMjggMS4xNiA4IDEuMTYgMi43Mi4wMSA1LjQtLjM4IDgtMS4xNk0yMS40MyA0Yy0uMSAwLS4yLjAyLS4zMS4wNkMxOC4xOCA1LjE2IDE1LjA5IDUuNyAxMiA1LjdjLTMuMDkgMC02LjE4LS41NS05LjEyLTEuNjRBLjk0Ljk0IDAgMCAwIDIuNTcgNGMtLjM0IDAtLjU3LjIzLS41Ny42M3YxNC43NWMwIC4zOS4yMy42Mi41Ny42Mi4xIDAgLjItLjAyLjMxLS4wNiAyLjk0LTEuMSA2LjAzLTEuNjQgOS4xMi0xLjY0IDMuMDkgMCA2LjE4LjU1IDkuMTIgMS42NC4xMS4wNC4yMS4wNi4zMS4wNi4zMyAwIC41Ny0uMjMuNTctLjYzVjQuNjNjMC0uNC0uMjQtLjYzLS41Ny0uNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hUGhvdG9zcGhlcmVTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi40OSA4LjUxYy0uNDctLjIzLS45My0uNDQtMS40LS42NEMxOS41MiA0LjQxIDE2LjA1IDIgMTIgMlM0LjQ3IDQuNDEgMi45IDcuODhjLS40Ny4yLS45My40MS0xLjQuNjMtLjMxLjE1LS41LjQ4LS41LjgzdjUuMzJjMCAuMzUuMTkuNjguNTEuODMuNDcuMjMuOTMuNDQgMS4zOS42NCAzLjU1IDcuODMgMTQuNjUgNy44MiAxOC4yIDAgLjQ3LS4yLjkzLS40MSAxLjM5LS42My4zMS0uMTcuNTEtLjQ5LjUxLS44NFY5LjM0YS45MS45MSAwIDAgMC0uNTEtLjgzek0xMiAzLjhjMi42IDAgNC45MSAxLjIzIDYuNDEgMy4xMi00LjEtMS4xOS04LjQ4LTEuMjYtMTIuODMuMDFDNy4wOCA1LjAzIDkuNCAzLjggMTIgMy44ek01LjYgMTcuMDhjNC4xOSAxLjIyIDguNTcgMS4yMyAxMi44Mi0uMDFhOC4xMzYgOC4xMzYgMCAwIDEtMTIuODIuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hUGhvdG9zcGhlcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS40IDExLjMydjIuOTNjLS4xLjA1LTIuMTcuODUtMy4zMyAxLjE3LS45NC4yNi0zLjg0LjczLTYuMDcuNzMtMy43IDAtNy0uNy05LjE2LTEuOC0uMDgtLjA0LS4xNi0uMDYtLjI0LS4xVjkuNzZjNi4wMi0yLjg0IDEyLjYtMi45MiAxOC44IDB2MS41NnptLTkuMzkgOC44OGMtMi41IDAtNC44Ny0xLjE1LTYuNDEtMy4xMiA0LjE5IDEuMjIgOC41NyAxLjIzIDEyLjgyLS4wMWE4LjEzNiA4LjEzNiAwIDAgMS02LjQxIDMuMTN6TTEyIDMuOGMyLjYgMCA0LjkxIDEuMjMgNi40MSAzLjEyLTQuMS0xLjE5LTguNDgtMS4yNi0xMi44My4wMUM3LjA4IDUuMDMgOS40IDMuOCAxMiAzLjh6bTEwLjQ5IDQuNzFjLS40Ny0uMjMtLjkzLS40NC0xLjQtLjY0QzE5LjUyIDQuNDEgMTYuMDUgMiAxMiAyUzQuNDcgNC40MSAyLjkgNy44OGMtLjQ3LjItLjkzLjQxLTEuNC42My0uMzEuMTUtLjUuNDgtLjUuODN2NS4zMmMwIC4zNS4xOS42OC41MS44My40Ny4yMy45My40NCAxLjM5LjY0IDMuNTUgNy44MyAxNC42NSA3LjgyIDE4LjIgMCAuNDctLjIuOTMtLjQxIDEuMzktLjYzLjMxLS4xNy41MS0uNDkuNTEtLjg0VjkuMzRhLjkxLjkxIDAgMCAwLS41MS0uODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hVmVydGljYWxTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45MyAyMS4xMmMtMS4xLTIuOTQtMS42NC02LjAzLTEuNjQtOS4xMnMuNTUtNi4xOCAxLjY0LTkuMTJjLjA1LS4xMS4wNy0uMjIuMDctLjMxIDAtLjM0LS4yNC0uNTctLjY0LS41N0g0LjYyYy0uNCAwLS42My4yMy0uNjMuNTcgMCAuMS4wMi4yLjA2LjMxQzUuMTYgNS44MiA1LjcgOC45MSA1LjcgMTJzLS41NSA2LjE4LTEuNjQgOS4xMmMtLjA1LjExLS4wNy4yMi0uMDcuMzEgMCAuMzMuMjMuNTcuNjMuNTdoMTQuNzVjLjM5IDAgLjYzLS4yNC42My0uNTcgMC0uMS0uMDItLjItLjA3LS4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk0IDIxLjEyYy0xLjEtMi45NC0xLjY0LTYuMDMtMS42NC05LjEyIDAtMy4wOS41NS02LjE4IDEuNjQtOS4xMmEuOTQuOTQgMCAwIDAgLjA2LS4zMWMwLS4zNC0uMjMtLjU3LS42My0uNTdINC42M2MtLjQgMC0uNjMuMjMtLjYzLjU3IDAgLjEuMDIuMi4wNi4zMUM1LjE2IDUuODIgNS43MSA4LjkxIDUuNzEgMTJjMCAzLjA5LS41NSA2LjE4LTEuNjQgOS4xMi0uMDUuMTEtLjA3LjIyLS4wNy4zMSAwIC4zMy4yMy41Ny42My41N2gxNC43NWMuMzkgMCAuNjMtLjI0LjYzLS41Ny0uMDEtLjEtLjAzLS4yLS4wNy0uMzF6TTYuNTQgMjBjLjc3LTIuNiAxLjE2LTUuMjggMS4xNi04IDAtMi43Mi0uMzktNS40LTEuMTYtOGgxMC45MWMtLjc3IDIuNi0xLjE2IDUuMjgtMS4xNiA4IDAgMi43Mi4zOSA1LjQgMS4xNiA4SDYuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hV2lkZUFuZ2xlU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGMtMi43MyAwLTUuMjIuMjQtNy45NS43MmwtLjkzLjE2LS4yNS45QzIuMjkgNy44NSAyIDkuOTMgMiAxMnMuMjkgNC4xNS44NyA2LjIybC4yNS44OS45My4xNmMyLjczLjQ5IDUuMjIuNzMgNy45NS43M3M1LjIyLS4yNCA3Ljk1LS43MmwuOTMtLjE2LjI1LS44OWMuNTgtMi4wOC44Ny00LjE2Ljg3LTYuMjNzLS4yOS00LjE1LS44Ny02LjIybC0uMjUtLjg5LS45My0uMTZDMTcuMjIgNC4yNCAxNC43MyA0IDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hV2lkZUFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMyLjQ1IDAgNC43MS4yIDcuMjkuNjRBMjEgMjEgMCAwIDEgMjAgMTJhMjEgMjEgMCAwIDEtLjcxIDUuMzZjLTIuNTguNDQtNC44NC42NC03LjI5LjY0cy00LjcxLS4yLTcuMjktLjY0QTIxIDIxIDAgMCAxIDQgMTJhMjEgMjEgMCAwIDEgLjcxLTUuMzZDNy4yOSA2LjIgOS41NSA2IDEyIDZtMC0yYy0yLjczIDAtNS4yMi4yNC03Ljk1LjcybC0uOTMuMTYtLjI1LjlDMi4yOSA3Ljg1IDIgOS45MyAyIDEycy4yOSA0LjE1Ljg3IDYuMjJsLjI1Ljg5LjkzLjE2YzIuNzMuNDkgNS4yMi43MyA3Ljk1LjczczUuMjItLjI0IDcuOTUtLjcybC45My0uMTYuMjUtLjg5Yy41OC0yLjA4Ljg3LTQuMTYuODctNi4yM3MtLjI5LTQuMTUtLjg3LTYuMjJsLS4yNS0uODktLjkzLS4xNkMxNy4yMiA0LjI0IDE0LjczIDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxOFY2YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMi41bDIuNSAzLjAxTDE0LjUgMTFsNC41IDZINWwzLjUtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG90b0FsYnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDJoNXY3bC0yLjUtMS41TDExIDExVjR6TTcgMThsMi4zOC0zLjE3TDExIDE3bDIuNjItMy41TDE3IDE4SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvQ2FtZXJhQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWN2MwLTEuMS45LTIgMi0yaDMuMTdMOSAzaDZsMS44MyAySDIwem0wIDE0VjdINHYxMmgxNnptLTYtNy0zIDMuNzJMOSAxM2wtMyA0aDEybC00LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxMC40OCA0LTMuOTh2MTFsLTQtMy45OFYxOGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTJjMS4xIDAgMiAuOSAyIDJ2NC40OHptLTItLjc5VjZINHYxMmgxMlY5LjY5ek0xMCAxMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTAgMWMxLjM0IDAgNCAuNjcgNCAydjFINnYtMWMwLTEuMzMgMi42Ni0yIDQtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9DYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjMuMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIgNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAySDl6bTMgMTVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG90b0ZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDIgMTB2OUg1VjVoOVYzSDUuMDJjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ6TTE3IDEwbC45NC0yLjA2TDIwIDdsLTIuMDYtLjk0TDE3IDRsLS45NCAyLjA2TDE0IDdsMi4wNi45NHptLTMuNzUuNzVMMTIgOGwtMS4yNSAyLjc1TDggMTJsMi43NSAxLjI1TDEyIDE2bDEuMjUtMi43NUwxNiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9MaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTZWNGMwLTEuMS0uOS0yLTItMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yem0tMTEtNCAyLjAzIDIuNzFMMTYgMTFsNCA1SDhsMy00ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9TaXplU2VsZWN0QWN0dWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM0MyIDMgMSA0IDEgNXYxNGMwIDEuMS45IDIgMiAyaDE4YzEgMCAyLTEgMi0yVjVjMC0xLTEtMi0yLTJ6TTUgMTdsMy41LTQuNSAyLjUgMy4wMUwxNC41IDExbDQuNSA2SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvU2l6ZVNlbGVjdExhcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE1aDJ2MmgtMnYtMnptMC00aDJ2MmgtMnYtMnptMiA4aC0ydjJjMSAwIDItMSAyLTJ6TTEzIDNoMnYyaC0yVjN6bTggNGgydjJoLTJWN3ptMC00djJoMmMwLTEtMS0yLTItMnpNMSA3aDJ2MkgxVjd6bTE2LTRoMnYyaC0yVjN6bTAgMTZoMnYyaC0ydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem02IDBoMnYySDlWM3pNNSAzaDJ2Mkg1VjN6bS00IDh2OGMwIDEuMS45IDIgMiAyaDEyVjExSDF6bTIgOCAyLjUtMy4yMSAxLjc5IDIuMTUgMi41LTMuMjJMMTMgMTlIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9TaXplU2VsZWN0U21hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTI0IDI0SDBWMGgyNHYyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTVoLTJ2Mmgydi0yem0wLTRoLTJ2Mmgydi0yem0wIDhoLTJ2MmMxIDAgMi0xIDItMnpNMTUgM2gtMnYyaDJWM3ptOCA0aC0ydjJoMlY3em0tMi00djJoMmMwLTEtMS0yLTItMnpNMyAyMWg4di02SDF2NGMwIDEuMS45IDIgMiAyek0zIDdIMXYyaDJWN3ptMTIgMTJoLTJ2Mmgydi0yem00LTE2aC0ydjJoMlYzem0wIDE2aC0ydjJoMnYtMnpNMyAzQzIgMyAxIDQgMSA1aDJWM3ptMCA4SDF2Mmgydi0yem04LThIOXYyaDJWM3pNNyAzSDV2MmgyVjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yek04LjUgMTMuNWwyLjUgMy4wMUwxNC41IDEybDQuNSA2SDVsMy41LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGljdHVyZUFzUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS04LjUgNy41YzAgLjgzLS42NyAxLjUtMS41IDEuNUg5djJINy41VjdIMTBjLjgzIDAgMS41LjY3IDEuNSAxLjV2MXptNSAyYzAgLjgzLS42NyAxLjUtMS41IDEuNWgtMi41VjdIMTVjLjgzIDAgMS41LjY3IDEuNSAxLjV2M3ptNC0zSDE5djFoMS41VjExSDE5djJoLTEuNVY3aDN2MS41ek05IDkuNWgxdi0xSDl2MXpNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTEwIDUuNWgxdi0zaC0xdjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTIuMjVjMS4yNCAwIDIuMjUtMS4wMSAyLjI1LTIuMjVTMTMuMjQgNy43NSAxMiA3Ljc1IDkuNzUgOC43NiA5Ljc1IDEwczEuMDEgMi4yNSAyLjI1IDIuMjV6bTQuNSA0YzAtMS41LTMtMi4yNS00LjUtMi4yNXMtNC41Ljc1LTQuNSAyLjI1VjE3aDl2LS43NXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYXdPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4xNSAxNC4zMi41OS0yLjM2Ljc2IDMuMDRoMS40OGwxLjUtNmgtMS41bC0uNzQgMy0uNzQtM2gtMS41MmwtLjc0IDMtLjc0LTNIMTRsLjcyIDIuOXpNMS4zOSA0LjIyIDYuMTcgOUgzdjZoMS41di0yaDEuMWwuOSAySDhsLS45LTIuMWMuNS0uMy45LS44LjktMS40di0uNjdsMS40MyAxLjQzTDguNzUgMTVoMS41bC4zOC0xLjVoLjA0bDkuMTEgOS4xMSAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnpNNi41IDExLjVoLTJ2LTFoMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYXdPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA5SDN2NmgxLjV2LTJoMS4xbC45IDJIOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LTFDOCA5LjcgNy4zIDkgNi41IDl6bTAgMi41aC0ydi0xaDJ2MXpNMTAuMjUgOWwtMS41IDZoMS41bC4zOC0xLjVoMS43NWwuMzcgMS41aDEuNWwtMS41LTZoLTIuNXptLjc1IDMgLjI1LTFoLjVsLjI1IDFoLTF6TTE5Ljk4IDlsLS43NCAzLS43NC0zaC0xLjUybC0uNzQgMy0uNzQtM0gxNGwxLjUgNmgxLjQ4bC43Ni0zLjA0Ljc2IDMuMDRoMS40OGwxLjUtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVjZWlwdExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgMy41IDE4IDJsLTEuNSAxLjVMMTUgMmwtMS41IDEuNUwxMiAybC0xLjUgMS41TDkgMiA3LjUgMy41IDYgMnYxNEgzdjNjMCAxLjY2IDEuMzQgMyAzIDNoMTJjMS42NiAwIDMtMS4zNCAzLTNWMmwtMS41IDEuNXpNMTkgMTljMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTNIOFY1aDExdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdoNnYySDl6TTE2IDdoMnYyaC0yek05IDEwaDZ2Mkg5ek0xNiAxMGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZVJlZEV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDQuNUM3IDQuNSAyLjczIDcuNjEgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41czkuMjctMy4xMSAxMS03LjVjLTEuNzMtNC4zOS02LTcuNS0xMS03LjV6TTEyIDE3Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMC04Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm90YXRlOTBEZWdyZWVzQ2N3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4zNCA2LjQxLjg2IDEyLjlsNi40OSA2LjQ4IDYuNDktNi40OC02LjUtNi40OXpNMy42OSAxMi45bDMuNjYtMy42NkwxMSAxMi45bC0zLjY2IDMuNjYtMy42NS0zLjY2em0xNS42Ny02LjI2QTguOTUgOC45NSAwIDAgMCAxMyA0Vi43Nkw4Ljc2IDUgMTMgOS4yNFY2YzEuNzkgMCAzLjU4LjY4IDQuOTUgMi4wNWE3LjAwNyA3LjAwNyAwIDAgMSAwIDkuOSA2Ljk3MyA2Ljk3MyAwIDAgMS03Ljc5IDEuNDRsLTEuNDkgMS40OUMxMC4wMiAyMS42MiAxMS41MSAyMiAxMyAyMmMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjRhOC45OCA4Ljk4IDAgMCAwIDAtMTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdGF0ZTkwRGVncmVlc0N3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC42NCAxOS4zN2MzLjAzIDMuMDMgNy42NyAzLjQ0IDExLjE1IDEuMjVsLTEuNDYtMS40NmMtMi42NiAxLjQzLTYuMDQgMS4wMy04LjI4LTEuMjFhNy4wMDcgNy4wMDcgMCAwIDEgMC05LjlDNy40MiA2LjY5IDkuMjEgNi4wMyAxMSA2LjAzVjlsNC00LTQtNHYzLjAxYy0yLjMgMC00LjYxLjg3LTYuMzYgMi42My0zLjUyIDMuNTEtMy41MiA5LjIxIDAgMTIuNzN6TTExIDEzbDYgNiA2LTYtNi02LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMTEgOC41MyA1LjcgNy4xMUM0LjggOC4yNyA0LjI0IDkuNjEgNC4wNyAxMWgyLjAyYy4xNC0uODcuNDktMS43MiAxLjAyLTIuNDd6TTYuMDkgMTNINC4wN2MuMTcgMS4zOS43MiAyLjczIDEuNjIgMy44OWwxLjQxLTEuNDJjLS41Mi0uNzUtLjg3LTEuNTktMS4wMS0yLjQ3em0xLjAxIDUuMzJjMS4xNi45IDIuNTEgMS40NCAzLjkgMS42MVYxNy45Yy0uODctLjE1LTEuNzEtLjQ5LTIuNDYtMS4wM0w3LjEgMTguMzJ6TTEzIDQuMDdWMUw4LjQ1IDUuNTUgMTMgMTBWNi4wOWMyLjg0LjQ4IDUgMi45NCA1IDUuOTFzLTIuMTYgNS40My01IDUuOTF2Mi4wMmMzLjk1LS40OSA3LTMuODUgNy03Ljkzcy0zLjA1LTcuNDQtNy03LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb3RhdGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjU1IDUuNTUgMTEgMXYzLjA3QzcuMDYgNC41NiA0IDcuOTIgNCAxMnMzLjA1IDcuNDQgNyA3Ljkzdi0yLjAyYy0yLjg0LS40OC01LTIuOTQtNS01LjkxczIuMTYtNS40MyA1LTUuOTFWMTBsNC41NS00LjQ1ek0xOS45MyAxMWE3LjkwNiA3LjkwNiAwIDAgMC0xLjYyLTMuODlsLTEuNDIgMS40MmMuNTQuNzUuODggMS42IDEuMDIgMi40N2gyLjAyek0xMyAxNy45djIuMDJjMS4zOS0uMTcgMi43NC0uNzEgMy45LTEuNjFsLTEuNDQtMS40NGMtLjc1LjU0LTEuNTkuODktMi40NiAxLjAzem0zLjg5LTIuNDIgMS40MiAxLjQxYy45LTEuMTYgMS40NS0yLjUgMS42Mi0zLjg5aC0yLjAyYy0uMTQuODctLjQ4IDEuNzItMS4wMiAyLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaHV0dGVyU3BlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDFIOXYyaDZWMXptNC4wMyA2LjM5IDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJBOC45NjIgOC45NjIgMCAwIDAgMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE4Ljk5NCA4Ljk5NCAwIDAgMCA3LjAzLTE0LjYxek0xMiAyMGMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bS0uMzItNUg2LjM1YTUuOTkyIDUuOTkyIDAgMCAwIDMuNDEgMy41NmwtLjExLS4wNiAyLjAzLTMuNXptNS45Ny00YTYuMDEyIDYuMDEyIDAgMCAwLTMuMzQtMy41NEwxMi4yNiAxMWg1LjM5em0tNy4wNCA3LjgzYy40NS4xMS45MS4xNyAxLjM5LjE3IDEuMzQgMCAyLjU3LS40NSAzLjU3LTEuMTlsLTIuMTEtMy45LTIuODUgNC45MnpNNy41NSA4Ljk5QTUuOTY1IDUuOTY1IDAgMCAwIDYgMTNjMCAuMzQuMDQuNjcuMDkgMWg0LjcyTDcuNTUgOC45OXptOC43OSA4LjE0QTUuOTQgNS45NCAwIDAgMCAxOCAxM2MwLS4zNC0uMDQtLjY3LS4wOS0xaC00LjM0bDIuNzcgNS4xM3ptLTMuMDEtOS45OEMxMi45IDcuMDYgMTIuNDYgNyAxMiA3Yy0xLjQgMC0yLjY5LjQ5LTMuNzEgMS4yOWwyLjMyIDMuNTYgMi43Mi00Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNsaWRlc2hvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDh2OGw1LTQtNS00em05LTVINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RyYWlnaHRlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBIM1Y4aDJ2NGgyVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuNTMgMTkuNjUgMS4zNC41NnYtOS4wM2wtMi40MyA1Ljg2Yy0uNDEgMS4wMi4wOCAyLjE5IDEuMDkgMi42MXptMTkuNS0zLjdMMTcuMDcgMy45OGEyLjAxMyAyLjAxMyAwIDAgMC0xLjgxLTEuMjNjLS4yNiAwLS41My4wNC0uNzkuMTVMNy4xIDUuOTVhMS45OTkgMS45OTkgMCAwIDAtMS4wOCAyLjZsNC45NiAxMS45N2ExLjk5OCAxLjk5OCAwIDAgMCAyLjYgMS4wOGw3LjM2LTMuMDVhMS45OTQgMS45OTQgMCAwIDAgMS4wOS0yLjZ6TTcuODggOC43NWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMiAxMWMwIDEuMS45IDIgMiAyaDEuNDVsLTMuNDUtOC4zNHY2LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2l0Y2hDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC0zLjE3TDE1IDJIOUw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxMS41VjEzSDl2Mi41TDUuNSAxMiA5IDguNVYxMWg2VjguNWwzLjUgMy41LTMuNSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXRjaFZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOS41VjZjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgxNGMuNTUgMCAxLS40NSAxLTF2LTMuNWw0IDR2LTEzbC00IDR6bS01IDZWMTNIN3YyLjVMMy41IDEyIDcgOC41VjExaDZWOC41bDMuNSAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFnRmFjZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSA2LjVjMi4zMyAwIDQuMzEtMS40NiA1LjExLTMuNUg2Ljg5Yy44IDIuMDQgMi43OCAzLjUgNS4xMSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41MSAzLjA4IDMuMDggMTkuNTFjLjA5LjM0LjI3LjY1LjUxLjkuMjUuMjQuNTYuNDIuOS41MUwyMC45MyA0LjQ5Yy0uMTktLjY5LS43My0xLjIzLTEuNDItMS40MXpNMTEuODggMyAzIDExLjg4djIuODNMMTQuNzEgM2gtMi44M3pNNSAzYy0xLjEgMC0yIC45LTIgMnYybDQtNEg1em0xNCAxOGMuNTUgMCAxLjA1LS4yMiAxLjQxLS41OS4zNy0uMzYuNTktLjg2LjU5LTEuNDF2LTJsLTQgNGgyem0tOS43MSAwaDIuODNMMjEgMTIuMTJWOS4yOUw5LjI5IDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaGVybW9zdGF0QXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEyVjZjMC0xLjY2LTEuMzQtMy0zLTNTNSA0LjM0IDUgNnY2Yy0xLjIxLjkxLTIgMi4zNy0yIDQgMCAxLjEyLjM4IDIuMTQgMSAyLjk3VjE5aC4wMmMuOTEgMS4yMSAyLjM1IDIgMy45OCAyczMuMDYtLjc5IDMuOTgtMkgxMnYtLjAzYy42Mi0uODMgMS0xLjg1IDEtMi45NyAwLTEuNjMtLjc5LTMuMDktMi00em0tNiA0YzAtLjk0LjQ1LTEuODQgMS4yLTIuNEw3IDEzVjZjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjdsLjguNmMuNzUuNTcgMS4yIDEuNDYgMS4yIDIuNEg1ek0xOC42MiA0aC0xLjYxbC0zLjM4IDloMS41NmwuODEtMi4zaDMuNjNsLjggMi4zSDIybC0zLjM4LTl6bS0yLjE1IDUuMzkgMS4zMS0zLjcyaC4wOGwxLjMxIDMuNzJoLTIuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZWxhcHNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjQgNy43NkE1Ljk3NCA1Ljk3NCAwIDAgMCAxMiA2djZsLTQuMjQgNC4yNGMyLjM0IDIuMzQgNi4xNCAyLjM0IDguNDkgMGE1Ljk5IDUuOTkgMCAwIDAtLjAxLTguNDh6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lcjEwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNy43MlY5LjRsMy0xVjE4aDJWNmgtLjI1TDAgNy43MnptMjMuNzggNi42NWMtLjE0LS4yOC0uMzUtLjUzLS42My0uNzQtLjI4LS4yMS0uNjEtLjM5LTEuMDEtLjUzcy0uODUtLjI3LTEuMzUtLjM4YTYuNjQgNi42NCAwIDAgMS0uODctLjIzIDIuNjEgMi42MSAwIDAgMS0uNTUtLjI1LjcxNy43MTcgMCAwIDEtLjI4LS4zLjk3OC45NzggMCAwIDEgLjAxLS44Yy4wNi0uMTMuMTUtLjI1LjI3LS4zNC4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExLjE5LjA3LjM1LjE3LjQ4LjI5LjEzLjEyLjIyLjI2LjI5LjQyLjA2LjE2LjEuMzIuMS40OWgxLjk1YTIuNTE3IDIuNTE3IDAgMCAwLS45My0xLjk3Yy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OUMyMS40OSA5LjA3IDIxIDkgMjAuNDYgOWMtLjUxIDAtLjk4LjA3LTEuMzkuMjEtLjQxLjE0LS43Ny4zMy0xLjA2LjU3LS4yOS4yNC0uNTEuNTItLjY3Ljg0LS4xNi4zMi0uMjMuNjUtLjIzIDEuMDFzLjA4LjY5LjIzLjk2Yy4xNS4yOC4zNi41Mi42NC43My4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43Ny0uMjcuMi0uNjYuMjktMS4xNy4yOS0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNGExLjMzMyAxLjMzMyAwIDAgMS0uNTktMS4xMWgtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1LjE2LjM0LjM5LjY1LjcuOTMuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnptLTkuOTYtNy4zMmMtLjM0LS40LS43NS0uNy0xLjIzLS44OC0uNDctLjE4LTEuMDEtLjI3LTEuNTktLjI3LS41OCAwLTEuMTEuMDktMS41OS4yNy0uNDguMTgtLjg5LjQ3LTEuMjMuODgtLjM0LjQxLS42LjkzLS43OSAxLjU5LS4xOC42NS0uMjggMS40NS0uMjggMi4zOXYxLjkyYzAgLjk0LjA5IDEuNzQuMjggMi4zOS4xOS42Ni40NSAxLjE5LjggMS42LjM0LjQxLjc1LjcxIDEuMjMuODkuNDguMTggMS4wMS4yOCAxLjU5LjI4LjU5IDAgMS4xMi0uMDkgMS41OS0uMjguNDgtLjE4Ljg4LS40OCAxLjIyLS44OS4zNC0uNDEuNi0uOTQuNzgtMS42LjE4LS42NS4yOC0xLjQ1LjI4LTIuMzl2LTEuOTJjMC0uOTQtLjA5LTEuNzQtLjI4LTIuMzktLjE4LS42Ni0uNDQtMS4xOS0uNzgtMS41OXptLS45MiA2LjE3YzAgLjYtLjA0IDEuMTEtLjEyIDEuNTMtLjA4LjQyLS4yLjc2LS4zNiAxLjAyLS4xNi4yNi0uMzYuNDUtLjU5LjU3LS4yMy4xMi0uNTEuMTgtLjgyLjE4LS4zIDAtLjU4LS4wNi0uODItLjE4cy0uNDQtLjMxLS42LS41N2MtLjE2LS4yNi0uMjktLjYtLjM4LTEuMDItLjA5LS40Mi0uMTMtLjkzLS4xMy0xLjUzdi0yLjVjMC0uNi4wNC0xLjExLjEzLTEuNTIuMDktLjQxLjIxLS43NC4zOC0xIC4xNi0uMjUuMzYtLjQzLjYtLjU1LjI0LS4xMS41MS0uMTcuODEtLjE3LjMxIDAgLjU4LjA2LjgxLjE3LjI0LjExLjQ0LjI5LjYuNTUuMTYuMjUuMjkuNTguMzcuOTkuMDguNDEuMTMuOTIuMTMgMS41MnYyLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lcjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNjEgMTIuOTdjLS4xNi0uMjQtLjM2LS40Ni0uNjItLjY1YTMuMzggMy4zOCAwIDAgMC0uOTMtLjQ4Yy4zLS4xNC41Ny0uMy44LS41LjIzLS4yLjQyLS40MS41Ny0uNjQuMTUtLjIzLjI3LS40Ni4zNC0uNzEuMDgtLjI0LjExLS40OS4xMS0uNzMgMC0uNTUtLjA5LTEuMDQtLjI4LTEuNDYtLjE4LS40Mi0uNDQtLjc3LS43OC0xLjA2LS4zMy0uMjgtLjczLS41LTEuMi0uNjQtLjQ1LS4xMy0uOTctLjItMS41My0uMi0uNTUgMC0xLjA2LjA4LTEuNTIuMjQtLjQ3LjE3LS44Ny40LTEuMi42OS0uMzMuMjktLjYuNjMtLjc4IDEuMDMtLjIuMzktLjI5LjgzLS4yOSAxLjI5aDEuOThjMC0uMjYuMDUtLjQ5LjE0LS42OS4wOS0uMi4yMi0uMzguMzgtLjUyLjE3LS4xNC4zNi0uMjUuNTgtLjMzLjIyLS4wOC40Ni0uMTIuNzMtLjEyLjYxIDAgMS4wNi4xNiAxLjM2LjQ3LjMuMzEuNDQuNzUuNDQgMS4zMiAwIC4yNy0uMDQuNTItLjEyLjc0LS4wOC4yMi0uMjEuNDEtLjM4LjU3LS4xNy4xNi0uMzguMjgtLjYzLjM3LS4yNS4wOS0uNTUuMTMtLjg5LjEzSDYuNzJ2MS41N0g3LjljLjM0IDAgLjY0LjA0LjkxLjExLjI3LjA4LjUuMTkuNjkuMzUuMTkuMTYuMzQuMzYuNDQuNjEuMS4yNC4xNi41NC4xNi44NyAwIC42Mi0uMTggMS4wOS0uNTMgMS40Mi0uMzUuMzMtLjg0LjQ5LTEuNDUuNDktLjI5IDAtLjU2LS4wNC0uOC0uMTMtLjI0LS4wOC0uNDQtLjItLjYxLS4zNi0uMTctLjE2LS4zLS4zNC0uMzktLjU2LS4wOS0uMjItLjE0LS40Ni0uMTQtLjcySDQuMTljMCAuNTUuMTEgMS4wMy4zMiAxLjQ1LjIxLjQyLjUuNzcuODYgMS4wNXMuNzcuNDkgMS4yNC42My45Ni4yMSAxLjQ4LjIxYy41NyAwIDEuMDktLjA4IDEuNTgtLjIzLjQ5LS4xNS45MS0uMzggMS4yNi0uNjguMzYtLjMuNjQtLjY2Ljg0LTEuMS4yLS40My4zLS45My4zLTEuNDggMC0uMjktLjA0LS41OC0uMTEtLjg2LS4wOC0uMjUtLjE5LS41MS0uMzUtLjc2em05LjI2IDEuNGMtLjE0LS4yOC0uMzUtLjUzLS42My0uNzQtLjI4LS4yMS0uNjEtLjM5LTEuMDEtLjUzcy0uODUtLjI3LTEuMzUtLjM4YTYuNjQgNi42NCAwIDAgMS0uODctLjIzIDIuNjEgMi42MSAwIDAgMS0uNTUtLjI1LjcxNy43MTcgMCAwIDEtLjI4LS4zYy0uMDUtLjExLS4wOC0uMjQtLjA4LS4zOWEuOTQ2Ljk0NiAwIDAgMSAuMzYtLjc1Yy4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExLjE5LjA3LjM1LjE3LjQ4LjI5LjEzLjEyLjIyLjI2LjI5LjQyLjA2LjE2LjEuMzIuMS40OWgxLjk1YTIuNTE3IDIuNTE3IDAgMCAwLS45My0xLjk3Yy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OS0uNDMtLjE1LS45Mi0uMjItMS40Ni0uMjItLjUxIDAtLjk4LjA3LTEuMzkuMjEtLjQxLjE0LS43Ny4zMy0xLjA2LjU3LS4yOS4yNC0uNTEuNTItLjY3Ljg0LS4xNi4zMi0uMjMuNjUtLjIzIDEuMDFzLjA4LjY4LjIzLjk2Yy4xNS4yOC4zNy41Mi42NC43My4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43Ny0uMjcuMi0uNjYuMjktMS4xNy4yOS0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNGExLjMzMyAxLjMzMyAwIDAgMS0uNTktMS4xMWgtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1LjE2LjM0LjM5LjY1LjcuOTMuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDFoNnYySDl6TTEzIDh2Mi4xN2w2Ljk4IDYuOThhOC45NjMgOC45NjMgMCAwIDAtLjk1LTkuNzZsMS40Mi0xLjQyYy0uNDMtLjUxLS45LS45OS0xLjQxLTEuNDFsLTEuNDIgMS40MmE4Ljk2MiA4Ljk2MiAwIDAgMC05Ljc3LS45NkwxMC44MyA4SDEzek0yLjgxIDIuODEgMS4zOSA0LjIybDMuNCAzLjRhOC45OTQgOC45OTQgMCAwIDAgMTIuNTkgMTIuNTlsMi40IDIuNCAxLjQxLTEuNDFMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMWg2djJIOXpNMTkuMDMgNy4zOWwxLjQyLTEuNDJjLS40My0uNTEtLjktLjk5LTEuNDEtMS40MWwtMS40MiAxLjQyQTguOTYyIDguOTYyIDAgMCAwIDEyIDRhOSA5IDAgMCAwLTkgOWMwIDQuOTcgNC4wMiA5IDkgOWE4Ljk5NCA4Ljk5NCAwIDAgMCA3LjAzLTE0LjYxek0xMyAxNGgtMlY4aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9uYWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNy45M2MtMy45NC0uNDktNy0zLjg1LTctNy45M3MzLjA1LTcuNDQgNy03LjkzdjE1Ljg2em0yLTE1Ljg2YzEuMDMuMTMgMiAuNDUgMi44Ny45M0gxM3YtLjkzek0xMyA3aDUuMjRjLjI1LjMxLjQ4LjY1LjY4IDFIMTNWN3ptMCAzaDYuNzRjLjA4LjMzLjE1LjY2LjE5IDFIMTN2LTF6bTAgOS45M1YxOWgyLjg3Yy0uODcuNDgtMS44NC44LTIuODcuOTN6TTE4LjI0IDE3SDEzdi0xaDUuOTJjLS4yLjM1LS40My42OS0uNjggMXptMS41LTNIMTN2LTFoNi45M2MtLjA0LjM0LS4xMS42Ny0uMTkgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNmb3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTh2LTJIOFY0aDJMNyAxIDQgNGgydjJIMnYyaDR2OGMwIDEuMS45IDIgMiAyaDh2MmgtMmwzIDMgMy0zaC0ydi0yaDR6TTEwIDhoNnY2aDJWOGMwLTEuMS0uOS0yLTItMmgtNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxN3YyaDZ2LTJIM3pNMyA1djJoMTBWNUgzem0xMCAxNnYtMmg4di0yaC04di0yaC0ydjZoMnpNNyA5djJIM3YyaDR2MmgyVjlIN3ptMTQgNHYtMkgxMXYyaDEwem0tNi00aDJWN2g0VjVoLTRWM2gtMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb0NhbWVyYUJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek01IDE2bDIuMzgtMy4xN0w5IDE1bDIuNjItMy41TDE1IDE2SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek0xMCA4YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptNCA4SDZ2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAxNCAxNS40M1YxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9TdGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCAxOFY2aDIuOTVsLTIuMzMgOC43M0wxNi44MiAxOEg0em0xNiAwaC0yLjk1bDIuMzQtOC43M0w3LjE4IDZIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdDb21meSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNHY3aDIwVjRIMnptOCAxNmgxMnYtN0gxMHY3em0tOCAwaDZ2LTdIMnY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q29tcGFjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMThoMi41di0yLjVINFYxOHptMC00Ljc1aDIuNXYtMi41SDR2Mi41ek00IDguNWgyLjVWNkg0djIuNXpNMTcuNSA2djIuNUgyMFY2aC0yLjV6TTEzIDguNWgyLjVWNkgxM3YyLjV6bTQuNSA5LjVIMjB2LTIuNWgtMi41VjE4em0wLTQuNzVIMjB2LTIuNWgtMi41djIuNXpNOC41IDE4SDExdi0yLjVIOC41VjE4em00LjUgMGgyLjV2LTIuNUgxM1YxOHpNOC41IDguNUgxMVY2SDguNXYyLjV6bTQuNSA0Ljc1aDIuNXYtMi41SDEzdjIuNXptLTQuNSAwSDExdi0yLjVIOC41djIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlnbmV0dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxNWMtNC40MiAwLTgtMi42OS04LTZzMy41OC02IDgtNiA4IDIuNjkgOCA2LTMuNTggNi04IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZycGFubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjY5IDQuMDVDMTguNjYgNC43MyAxNS44NiA1LjUgMTIgNS41Yy0zLjg5IDAtNi45NS0uODQtOC42OS0xLjQzQS45OTMuOTkzIDAgMCAwIDIgNS4wMlYxOWMwIC42OC42NiAxLjE3IDEuMzEuOTVDNS4zNiAxOS4yNiA4LjEgMTguNSAxMiAxOC41YzMuODcgMCA2LjY2Ljc2IDguNjkgMS40NUEuOTk5Ljk5OSAwIDAgMCAyMiAxOVY1YzAtLjY4LS42Ni0xLjE2LTEuMzEtLjk1ek0xMiAxNWMtMi4zNCAwLTQuNTIuMTUtNi41Mi40MWwzLjY5LTQuNDIgMiAyLjRMMTQgMTBsNC41MSA1LjRjLTEuOTktLjI1LTQuMjEtLjQtNi41MS0uNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi44NSAxMi42NWgyLjNMOCA5bC0xLjE1IDMuNjV6TTIyIDdsLTEuMiA2LjI5TDE5LjMgN2gtMS42bC0xLjQ5IDYuMjlMMTUgN2gtLjc2QzEyLjc3IDUuMTcgMTAuNTMgNCA4IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDhjMy4xMyAwIDUuODQtMS44MSA3LjE1LTQuNDNsLjEuNDNIMTdsMS41LTYuMUwyMCAxNmgxLjc1bDIuMDUtOUgyMnptLTExLjcgOS0uNy0ySDYuNGwtLjcgMkgzLjhMNyA3aDJsMy4yIDloLTEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JDbG91ZHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNiAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY0LTQuOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdiSW5jYW5kZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy41NSAxOC41NCAxLjQxIDEuNDEgMS43OS0xLjgtMS40MS0xLjQxLTEuNzkgMS44ek0xMSAyMi40NWgyVjE5LjVoLTJ2Mi45NXpNNCAxMC41SDF2Mmgzdi0yem0xMS00LjE5VjEuNUg5djQuODFDNy4yMSA3LjM1IDYgOS4yOCA2IDExLjVjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNmMwLTIuMjItMS4yMS00LjE1LTMtNS4xOXptNSA0LjE5djJoM3YtMmgtM3ptLTIuNzYgNy42NiAxLjc5IDEuOCAxLjQxLTEuNDEtMS44LTEuNzktMS40IDEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JJcmlkZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE0LjVoMTR2LTZINXY2ek0xMSAuNTVWMy41aDJWLjU1aC0yem04LjA0IDIuNS0xLjc5IDEuNzkgMS40MSAxLjQxIDEuOC0xLjc5LTEuNDItMS40MXpNMTMgMjIuNDVWMTkuNWgtMnYyLjk1aDJ6bTcuNDUtMy45MS0xLjgtMS43OS0xLjQxIDEuNDEgMS43OSAxLjggMS40Mi0xLjQyek0zLjU1IDQuNDZsMS43OSAxLjc5IDEuNDEtMS40MS0xLjc5LTEuNzktMS40MSAxLjQxem0xLjQxIDE1LjQ5IDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuNzkgMS40MSAxLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYlNoYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMnYyLjVsNS41IDUuNUgyMnptMCA4aDNsLTMtM3pNOCA0bC02IDZoMnYxMGg4VjEwaDJMOCA0em0xIDEwSDd2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYlN1bm55IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNi43NiA0Ljg0LTEuOC0xLjc5LTEuNDEgMS40MSAxLjc5IDEuNzkgMS40Mi0xLjQxek00IDEwLjVIMXYyaDN2LTJ6bTktOS45NWgtMlYzLjVoMlYuNTV6bTcuNDUgMy45MS0xLjQxLTEuNDEtMS43OSAxLjc5IDEuNDEgMS40MSAxLjc5LTEuNzl6bS0zLjIxIDEzLjcgMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5LTEuNCAxLjR6TTIwIDEwLjV2Mmgzdi0yaC0zem0tOC01Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptLTEgMTYuOTVoMlYxOS41aC0ydjIuOTV6bS03LjQ1LTMuOTEgMS40MSAxLjQxIDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JUd2lnaGxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45NTQgOC42NiAyLjEyLTIuMTIgMS40MTUgMS40MTQtMi4xMyAyLjEyek0xNy45IDE0Yy0uNS0yLjg1LTIuOTUtNS01LjktNXMtNS40NSAyLjE1LTUuOSA1aDExLjh6TTIgMTZoMjB2NEgyem05LTEyaDJ2M2gtMnpNMy41NCA3LjkyNSA0Ljk1NCA2LjUxbDIuMTIyIDIuMTIyLTEuNDE1IDEuNDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYlR3aWxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuOTU1IDguNjYyIDIuMTItMi4xMjIgMS40MTYgMS40MTQtMi4xMjEgMi4xMjJ6TTIgMThoMjB2Mkgyek0xMSA0aDJ2M2gtMnpNMy41NDMgNy45MjUgNC45NTcgNi41MWwyLjEyMSAyLjEyLTEuNDE0IDEuNDE1ek01IDE2aDE0YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzNjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3QzYuNDggNyAyIDkuMjQgMiAxMmMwIDIuMjQgMi45NCA0LjEzIDcgNC43N1YyMGw0LTQtNC00djIuNzNjLTMuMTUtLjU2LTUtMS45LTUtMi43MyAwLTEuMDYgMy4wNC0zIDgtM3M4IDEuOTQgOCAzYzAgLjczLTEuNDYgMS44OS00IDIuNTN2Mi4wNWMzLjUzLS43NyA2LTIuNTMgNi00LjU4IDAtMi43Ni00LjQ4LTUtMTAtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQnVzaW5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxN2gydi0zaDF2LTJsLTEtNUgybC0xIDV2MmgxdjZoOXYtNmg0djN6bS02IDFINHYtNGg1djR6TTIgNGgxNXYySDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4di0zaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRMb2NhdGlvbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDF2M2gzdjJoLTN2M2gtMlY2aC0zVjRoM1YxaDJ6bS04IDEyYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMi05Ljc1VjdoM3YzaDIuOTJjLjA1LjM5LjA4Ljc5LjA4IDEuMiAwIDMuMzItMi42NyA3LjI1LTggMTEuOC01LjMzLTQuNTUtOC04LjQ4LTgtMTEuOEM0IDYuMjIgNy44IDMgMTIgM2MuNjggMCAxLjM1LjA4IDIgLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjE0IDIgNSA1LjE0IDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ni0zLjE0LTctNy03em00IDhoLTN2M2gtMnYtM0g4VjhoM1Y1aDJ2M2gzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFJvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOHYtM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMnpNMTggNGgydjloLTJ6TTQgNGgydjE2SDR6TTExIDRoMnY0aC0yek0xMSAxMGgydjRoLTJ6TTExIDE2aDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWdyaWN1bHR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDEyYy45MyAwIDEuNzguMjggMi41Ljc2VjhjMC0xLjEtLjktMi0yLTJoLTYuMjlsLTEuMDYtMS4wNiAxLjQxLTEuNDEtLjcxLS43MS0zLjUzIDMuNTMuNzEuNzEgMS40MS0xLjQxTDEzIDYuNzFWOWMwIDEuMS0uOSAyLTIgMmgtLjU0QTUuOTggNS45OCAwIDAgMSAxMiAxNWMwIC4zNC0uMDQuNjctLjA5IDFoMy4xNGMuMjUtMi4yNSAyLjE0LTQgNC40NS00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDEzYy0xLjkzIDAtMy41IDEuNTctMy41IDMuNXMxLjU3IDMuNSAzLjUgMy41IDMuNS0xLjU3IDMuNS0zLjUtMS41Ny0zLjUtMy41LTMuNXptMCA1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNCA5aDVjMC0xLjEtLjktMi0yLTJINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXpNOS44MyAxMy44MmwtLjE4LS40Ny45My0uMzVhNC45MiA0LjkyIDAgMCAwLTIuMzEtMi40M2wtLjQuODktLjQ2LS4yMS40LS45QzcuMjYgMTAuMTMgNi42NCAxMCA2IDEwYy0uNTMgMC0xLjA0LjExLTEuNTIuMjZsLjM0LjkxLS40Ny4xOC0uMzUtLjkzYTQuOTIgNC45MiAwIDAgMC0yLjQzIDIuMzFsLjg5LjQtLjIxLjQ2LS45LS40QzEuMTMgMTMuNzQgMSAxNC4zNiAxIDE1YzAgLjUzLjExIDEuMDQuMjYgMS41MmwuOTEtLjM0LjE4LjQ3LS45My4zNWE0LjkyIDQuOTIgMCAwIDAgMi4zMSAyLjQzbC40LS44OS40Ni4yMS0uNC45Yy41NS4yMiAxLjE3LjM1IDEuODEuMzUuNTMgMCAxLjA0LS4xMSAxLjUyLS4yNmwtLjM0LS45MS40Ny0uMTguMzUuOTNhNC45MiA0LjkyIDAgMCAwIDIuNDMtMi4zMWwtLjg5LS40LjIxLS40Ni45LjRjLjIyLS41NS4zNS0xLjE3LjM1LTEuODEgMC0uNTMtLjExLTEuMDQtLjI2LTEuNTJsLS45MS4zNHptLTIuNjggMy45NWMtMS41My42My0zLjI5LS4wOS0zLjkyLTEuNjItLjYzLTEuNTMuMDktMy4yOSAxLjYyLTMuOTIgMS41My0uNjMgMy4yOS4wOSAzLjkyIDEuNjIuNjQgMS41My0uMDkgMy4yOS0xLjYyIDMuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTdG9wcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjIxIDkuMjFDMTUuOTMgMTAuNzggMTMuNDUgMTMuMyAxMyAxN2gydjJIOXYtMmgyYy0uNS00LjUtNC4zNy04LTktOFY3YzQuMzkgMCA4LjIyIDIuNTUgMTAgNi4zIDEuMTMtMi40MyAyLjk5LTQuMjUgNC43OC01LjUyTDE0IDVoN3Y3bC0yLjc5LTIuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNCAyIDIwaDE3bDMtMTZoLTl6bTEuNSAxMGEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWx0Um91dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05Ljc4IDExLjE2LTEuNDIgMS40MmE3LjI4MiA3LjI4MiAwIDAgMS0xLjc5LTIuOTRsMS45NC0uNDljLjMyLjg5Ljc3IDEuNSAxLjI3IDIuMDF6TTExIDYgNyAyIDMgNmgzLjAyYy4wMi44MS4wOCAxLjU0LjE5IDIuMTdsMS45NC0uNDlDOC4wOCA3LjIgOC4wMyA2LjYzIDguMDIgNkgxMXptMTAgMC00LTQtNCA0aDIuOTljLS4xIDMuNjgtMS4yOCA0Ljc1LTIuNTQgNS44OC0uNS40NC0xLjAxLjkyLTEuNDUgMS41NS0uMzQtLjQ5LS43My0uODgtMS4xMy0xLjI0TDkuNDYgMTMuNmMuOTMuODUgMS41NCAxLjU0IDEuNTQgMy40djVoMnYtNWMwLTIuMDIuNzEtMi42NiAxLjc5LTMuNjMgMS4zOC0xLjI0IDMuMDgtMi43OCAzLjItNy4zN0gyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXRtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5djEuNWgyLjI1VjE1aDEuNXYtNC41SDE0Vjl6TTYgOUgzYy0uNTUgMC0xIC40NS0xIDF2NWgxLjV2LTEuNWgyVjE1SDd2LTVjMC0uNTUtLjQ1LTEtMS0xem0tLjUgM2gtMnYtMS41aDJWMTJ6TTIxIDloLTQuNWMtLjU1IDAtMSAuNDUtMSAxdjVIMTd2LTQuNWgxVjE0aDEuNXYtMy41MWgxVjE1SDIydi01YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXR0cmFjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC40MyAxOC43NWMuMzctLjQ2Ljk0LS43NSAxLjU3LS43NS42MyAwIDEuMTkuMjkgMS41Ni43NS4zOS0uMDkuNzYtLjIxIDEuMTItLjM2bC0xLjQyLTMuMThhMy41MjIgMy41MjIgMCAwIDEtMi41Ni0uMDJsLTEuNDMgMy4xOWMuMzguMTYuNzYuMjkgMS4xNi4zN3pNNS4xNSAxMGE3LjA2IDcuMDYgMCAwIDAgLjA4IDRjLjYzLjA1IDEuMjIuNCAxLjU2Ljk5LjMzLjU3LjM1IDEuMjMuMTEgMS43OS4yNy4yNy41Ni41My44Ny43NmwxLjUyLTMuMzljLS40Ny0uNTgtLjc1LTEuMzItLjc1LTIuMTMgMC0xLjg5IDEuNTUtMy40MSAzLjQ2LTMuNDFzMy40NiAxLjUzIDMuNDYgMy40MWMwIC44Mi0uMjkgMS41Ny0uNzggMi4xNmwxLjUgMy4zNWMuMzItLjI0LjYyLS41LjktLjc5LS4yMi0uNTUtLjItMS4yLjEyLTEuNzUuMzMtLjU3LjktLjkyIDEuNTItLjk5YTcuMDI1IDcuMDI1IDAgMCAwIC4wOS00LjAyYy0uNjQtLjA0LTEuMjYtLjM5LTEuNi0xLS4zNi0uNjItLjM1LTEuMzYtLjAzLTEuOTUtLjkxLS45OC0yLjEtMS43MS0zLjQ0LTIuMDVDMTMuMzkgNS42IDEyLjc0IDYgMTIgNnMtMS4zOS0uNDEtMS43NC0xLjAxYTcuMDUzIDcuMDUzIDAgMCAwLTMuNDQgMi4wM2MuMzMuNi4zNSAxLjM1LS4wMiAxLjk4LS4zNS42Mi0uOTkuOTctMS42NSAxem0tMS4zLS40MmMtLjc4LS42LTEuMDItMS43LS41MS0yLjU4LjUxLS44OCAxLjU4LTEuMjMgMi40OS0uODVhOC41MyA4LjUzIDAgMCAxIDQuMTgtMi40MkMxMC4xNSAyLjc1IDEwLjk5IDIgMTIgMnMxLjg1Ljc1IDEuOTggMS43M2MxLjYzLjM5IDMuMDcgMS4yNCA0LjE4IDIuNDJhMS45OSAxLjk5IDAgMCAxIDIuNDkuODVjLjUxLjg4LjI3IDEuOTgtLjUxIDIuNTguMjMuNzcuMzUgMS41OC4zNSAyLjQycy0uMTIgMS42NS0uMzUgMi40MmMuNzguNiAxLjAyIDEuNy41MSAyLjU4LS41MS44OC0xLjU4IDEuMjMtMi40OS44NS0uNC40My0uODUuODEtMS4zNCAxLjE1bDEuMzQgM0gxNi4zbC0uOTctMi4xN2MtLjQzLjE4LS44OC4zMy0xLjM0LjQ0LS4xNC45OC0uOTggMS43My0xLjk5IDEuNzNzLTEuODUtLjc1LTEuOTgtMS43M2MtLjQ4LS4xMi0uOTQtLjI3LTEuMzgtLjQ2TDcuNjYgMjJINS43OGwxLjM2LTMuMDNhOC43MiA4LjcyIDAgMCAxLTEuMy0xLjEyYy0uOTIuMzgtMS45OS4wMy0yLjUtLjg1cy0uMjctMS45OC41MS0yLjU4Yy0uMjMtLjc3LS4zNS0xLjU4LS4zNS0yLjQycy4xMi0xLjY1LjM1LTIuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gtNVY0YzAtMS4xLS45LTItMi0yaC0yYy0xLjEgMC0yIC45LTIgMnYzSDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnpNOSAxMmMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjgzIDE1IDkgMTVzLTEuNS0uNjctMS41LTEuNVM4LjE3IDEyIDkgMTJ6bTMgNkg2di0uNzVjMC0xIDItMS41IDMtMS41czMgLjUgMyAxLjVWMTh6bTEtOWgtMlY0aDJ2NXptNSA3LjVoLTRWMTVoNHYxLjV6bTAtM2gtNFYxMmg0djEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFrZXJ5RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE5LjI4IDE2LjM0IDE3LjQ2IDE1cy4zMi0uNTkuOTYtMS43OGEuOTQ0Ljk0NCAwIDAgMSAxLjYgMGwuODEgMS4yNmMuMTkuMy4yMS42OC4wNiAxbC0uMjIuNDdhLjk0Ljk0IDAgMCAxLTEuMzkuMzl6bS0xNC41NiAwYS45NDYuOTQ2IDAgMCAxLTEuMzktLjM4bC0uMjMtLjQ3Yy0uMTUtLjMyLS4xMy0uNy4wNi0xbC44MS0xLjI2YS45NDQuOTQ0IDAgMCAxIDEuNiAwYy42NSAxLjE4Ljk3IDEuNzcuOTcgMS43N2wtMS44MiAxLjM0em0xMC42NC02Ljk3Yy4wOS0uNjguNzMtMS4wNiAxLjI3LS43NWwxLjU5LjljLjQ2LjI2LjYzLjkxLjM2IDEuNDFMMTYuNSAxNWgtMS44bC42Ni01LjYzem0tNi43MyAwTDkuMyAxNUg3LjVsLTIuMDktNC4wOGMtLjI3LS41LS4xLTEuMTUuMzYtMS40MWwxLjU5LS45Yy41My0uMyAxLjE4LjA4IDEuMjcuNzZ6TTEzLjggMTVoLTMuNmwtLjc0LTYuODhjLS4wNy0uNTkuMzUtMS4xMi44OC0xLjEyaDMuM2MuNTMgMCAuOTQuNTMuODggMS4xMkwxMy44IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWVuaGVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDFINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDE1LjkzYzAgLjY5LjM1IDEuMy44OCAxLjY2TDEyIDIzbDguMTEtNS40MWMuNTMtLjM2Ljg4LS45Ny44OC0xLjY2TDIxIDNjMC0xLjEtLjktMi0yLTJ6bS05IDE1LTUtNSAxLjQxLTEuNDFMMTAgMTMuMTdsNy41OS03LjU5TDE5IDdsLTkgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmlrZVNjb290ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNGguNzRMOC44MiA1LjU2QTIuMDA5IDIuMDA5IDAgMCAwIDYuODcgNEgzdjJoMy44N2wxLjQyIDYuMjVoLS4wMUE2LjAwOCA2LjAwOCAwIDAgMCA0LjA5IDE3SDB2Mmg2di0xYzAtMi4yMSAxLjc5LTQgNC00ek0xOSA4aC0uODJsLTEuMzUtMy42OUExLjk3NiAxLjk3NiAwIDAgMCAxNC45NiAzSDExdjJoMy45NmwxLjEgM0gxMC40bC40NiAySDE1Yy0uNDMuNTgtLjc1IDEuMjUtLjkgMmgtMi43OWwuNDYgMmgyLjMzYy40NCAyLjIzIDIuMzEgMy44OCA0LjY1IDMuOTkgMi44LjEzIDUuMjUtMi4xOSA1LjI1LTVDMjQgMTAuMiAyMS44IDggMTkgOHptMCA4Yy0xLjY4IDAtMy0xLjMyLTMtMyAwLS45My40MS0xLjczIDEuMDUtMi4yOGwuOTYgMi42NCAxLjg4LS42OC0uOTctMi42N2MuMDMgMCAuMDYtLjAxLjA5LS4wMSAxLjY4IDAgMyAxLjMyIDMgM3MtMS4zMyAzLTMuMDEgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJlYWtmYXN0RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDNINkMzLjc5IDMgMiA0Ljc5IDIgN2MwIDEuNDguODEgMi43NSAyIDMuNDVWMTljMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtOC41NWMxLjE5LS42OSAyLTEuOTcgMi0zLjQ1IDAtMi4yMS0xLjc5LTQtNC00em0tNCAxMmgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJydW5jaERpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xOCA4aDJWNGgtMnY0em0tMi40OSAxNEgyLjQ5Yy0uMjcgMC0uNDktLjIyLS40OS0uNVYyMGgxNHYxLjVjMCAuMjgtLjIyLjUtLjQ5LjV6TTE4IDE1Ljg5bC0uNC0uNDJhNS44NTIgNS44NTIgMCAwIDEtMS42LTRWMmg2djkuNTFjMCAxLjQ2LS41NCAyLjg3LTEuNTMgMy45NGwtLjQ3LjUyVjIwaDJ2MmgtNHYtNi4xMXpNNyAxNnYtMmg0djJoNC41Yy4yOCAwIC41LjIyLjUuNXYxYzAgLjI4LS4yMi41LS41LjVoLTEzYy0uMjggMC0uNS0uMjItLjUtLjV2LTFjMC0uMjguMjItLjUuNS0uNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCdXNBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMWE3IDcgMCAwIDAtNS43OCAzLjA1bC4wMi0uMDNDOS44NCA0IDkuNDIgNCA5IDRjLTQuNDIgMC04IC41LTggNHYxMGMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMmExIDEgMCAwIDAgMSAxaDFhMSAxIDAgMCAwIDEtMXYtMWg4djFhMSAxIDAgMCAwIDEgMWgxYTEgMSAwIDAgMCAxLTF2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIydi0zLjA4QTcgNyAwIDAgMCAxNiAxek00LjUgMTlhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6TTMgMTNWOGg2YzAgMS45Ni44MSAzLjczIDIuMTEgNUgzem0xMC41IDZhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6bTIuNS02YTUgNSAwIDEgMSAwLTEwIDUgNSAwIDAgMSAwIDEwem0tMS05aDJ2NWgtMnptMCA2aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FyQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLjUgNmgtMVYzaDF2NHptMCAxdjFoLTFWOGgxem0tLjU5IDVjLjA2LjE2LjA5LjMzLjA5LjUgMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjVjMC0uMzkuMTUtLjc0LjM5LTEuMDFBNy4wMzIgNy4wMzIgMCAwIDEgMTEuNjggOUg1LjgxbDEuMDQtM0gxMWMwLS42OS4xLTEuMzcuMjktMkg2LjVjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTF2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi02LjY4Yy0xLjA1LjUxLTIuMTYuNjktMy4wOS42OHpNNy41IDE1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNi42NyAxMiA3LjUgMTJzMS41LjY3IDEuNSAxLjVTOC4zMyAxNSA3LjUgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhclJlbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjM5IDlINy42MWMtLjQzIDAtLjgxLjI4LS45NS42OGwtMS42NiA1djYuODFjMCAuMjkuMjMuNTEuNS41MWgxYy4yOCAwIC41LS4yMi41LS41VjIwaDEwdjEuNWMwIC4yOC4yMi41LjUuNWgxYy4yOCAwIC41LS4yMi41LS41di02LjgxbC0xLjY2LTVhMS4wMSAxLjAxIDAgMCAwLS45NS0uNjl6bS04LjYxIDljLS42OCAwLTEuMjItLjU0LTEuMjItMS4yMnMuNTQtMS4yMiAxLjIyLTEuMjJTOSAxNi4xMSA5IDE2Ljc4IDguNDYgMTggNy43OCAxOHptOC40NCAwYy0uNjcgMC0xLjIyLS41NC0xLjIyLTEuMjJzLjU0LTEuMjIgMS4yMi0xLjIyIDEuMjIuNTQgMS4yMiAxLjIyUzE2LjkgMTggMTYuMjIgMTh6bS05LjkzLTQgMS4zMy00aDguNzhsMS4zMyA0SDYuMjl6TTEwLjgzIDNBMy4wMSAzLjAxIDAgMCAwIDggMUM2LjM0IDEgNSAyLjM0IDUgNGMwIDEuNjUgMS4zNCAzIDMgMyAxLjMgMCAyLjQxLS44NCAyLjgzLTJIMTZ2MmgyVjVoMVYzaC04LjE3ek04IDVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FyUmVwYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjIgMTJjLjY4IDAgMS4yMi0uNTQgMS4yMi0xLjIyIDAtLjY3LS41NC0xLjIyLTEuMjItMS4yMlMxNSAxMC4xMSAxNSAxMC43OGMwIC42OC41NSAxLjIyIDEuMjIgMS4yMnptLTkuNjYtMS4yMmMwIC42Ny41NCAxLjIyIDEuMjIgMS4yMlM5IDExLjQ2IDkgMTAuNzhjMC0uNjctLjU0LTEuMjItMS4yMi0xLjIycy0xLjIyLjU1LTEuMjIgMS4yMnpNNy42MSA0IDYuMjggOGgxMS40M2wtMS4zMy00SDcuNjF6bTguNjctMXMuNTQuMDEuOTIuNTRjLjAyLjAyLjAzLjA0LjA1LjA3LjA3LjExLjE0LjI0LjE5LjQuMjIuNjUgMS41NiA0LjY4IDEuNTYgNC42OHY2LjVjMCAuNDUtLjM1LjgxLS43OC44MWgtLjQ0Yy0uNDMgMC0uNzgtLjM2LS43OC0uODFWMTRIN3YxLjE5YzAgLjQ1LS4zNS44MS0uNzguODFoLS40NGMtLjQzIDAtLjc4LS4zNi0uNzgtLjgxdi02LjVTNi4zNCA0LjY3IDYuNTUgNGMuMDUtLjE2LjEyLS4yOC4xOS0uNC4wMy0uMDIuMDQtLjA0LjA2LS4wNi4zOC0uNTMuOTItLjU0LjkyLS41NGg4LjU2ek00IDE3LjAxaDE2VjE5aC03djNoLTJ2LTNINHYtMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FzdGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOXYyaC0yVjNoLTJ2MmgtMlYzaC0ydjJoLTJWM0g5djJIN1YzSDV2OEgzVjlIMXYxMmg5di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g5VjloLTJ6bS0xMCAzSDlWOWgydjN6bTQgMGgtMlY5aDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2F0ZWdvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAyLTUuNSA5aDExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3LjVcIixcImN5XCI6XCIxNy41XCIsXCJyXCI6XCI0LjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMy41aDh2OEgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDZWxlYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgMjIgMTQtNS05LTl6TTE0LjUzIDEyLjUzbDUuNTktNS41OWExLjI1IDEuMjUgMCAwIDEgMS43NyAwbC41OS41OSAxLjA2LTEuMDYtLjU5LS41OWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDBsLTUuNTkgNS41OSAxLjA2IDEuMDZ6TTEwLjA2IDYuODhsLS41OS41OSAxLjA2IDEuMDYuNTktLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtLjU5LS41OS0xLjA2IDEuMDcuNTkuNTljLjQ4LjQ4LjQ4IDEuMjggMCAxLjc2ek0xNy4wNiAxMS44OGwtMS41OSAxLjU5IDEuMDYgMS4wNiAxLjU5LTEuNTlhMS4yNSAxLjI1IDAgMCAxIDEuNzcgMGwxLjYxIDEuNjEgMS4wNi0xLjA2LTEuNjEtMS42MWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDB6TTE1LjA2IDUuODhsLTMuNTkgMy41OSAxLjA2IDEuMDYgMy41OS0zLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtMS41OS0xLjU5LTEuMDYgMS4wNiAxLjU5IDEuNTljLjQ4LjQ5LjQ4IDEuMjkgMCAxLjc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaHVyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMi4yMlY5bC01LTIuNVY1aDJWM2gtMlYxaC0ydjJIOXYyaDJ2MS41TDYgOXYzLjIyTDIgMTR2OGg4di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g4di04bC00LTEuNzh6bS02IDEuMjhjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbGVhbmluZ1NlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTFoLTFWM2MwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJ2OEg4Yy0yLjc2IDAtNSAyLjI0LTUgNXY3aDE4di03YzAtMi43Ni0yLjI0LTUtNS01em0zIDEwaC0ydi0zYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNoLTJ2LTNjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2M0g5di0zYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNINXYtNWMwLTEuNjUgMS4zNS0zIDMtM2g4YzEuNjUgMCAzIDEuMzUgMyAzdjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbXBhc3NDYWxpYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxN1wiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMC4wN2MxLjk1IDAgMy43Mi43OSA1IDIuMDdsNS01QzE5LjQ0IDQuNTkgMTUuOSAzIDEyIDNTNC41NiA0LjU5IDIgNy4xNWw1IDVhNy4wNiA3LjA2IDAgMCAxIDUtMi4wOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29ubmVjdGluZ0FpcnBvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNCAxNyAxLjMgNC40aC0xLjFMMTMgMTdoLTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoM2wyLjYtNC40aDEuMUwxNS40IDE1aDIuODVsLjc1LTFoMWwtLjYgMiAuNiAyaC0xbC0uNzUtMUgxNS40ek01Ljc1IDcgNSA2SDRsLjYgMi0uNiAyaDFsLjc1LTFIOC42bC0xLjMgNC40aDEuMUwxMSA5aDNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTNMOC40IDIuNkg3LjNMOC42IDdINS43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3Jpc2lzQWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDIuNWMwIDEuNS0xLjUgNi0xLjUgNmgtMlM5LjUgNCA5LjUgMi41YTIuNSAyLjUgMCAwIDEgNSAwek0xMiAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTQuMDgtNC44OWMuMTgtLjc1LjMzLTEuNDcuMzktMi4wNkE5Ljk5NiA5Ljk5NiAwIDAgMSAyMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0zLjkyIDIuMjUtNy4zMSA1LjUzLTguOTUuMDcuNTkuMjEgMS4zMi4zOSAyLjA2QTguMDI4IDguMDI4IDAgMCAwIDQgMTJjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuOTMtMS41OC01LjQ5LTMuOTItNi44OXpNMTggMTJjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTZjMC0yIC45OC0zLjc3IDIuNDgtNC44Ni4yMy44MS42NSAyLjA3LjY1IDIuMDdDOC40MyA5LjkzIDggMTAuOTIgOCAxMmMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00YzAtMS4wOC0uNDMtMi4wNy0xLjEzLTIuNzkgMCAwIC40MS0xLjIyLjY1LTIuMDdBNS45OTggNS45OTggMCAwIDEgMTggMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlbGl2ZXJ5RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2MwLTEuMS0uOS0yLTItMmgtM3YyaDN2Mi42NUwxMy41MiAxNEgxMFY5SDZjLTIuMjEgMC00IDEuNzktNCA0djNoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDQuNDhMMTkgMTAuMzVWN3pNNyAxN2MtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDZoNXYySDV6TTE5IDEzYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlcGFydHVyZUJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxYy0yLjQgMC00LjUyIDEuMjEtNS43OCAzLjA1LjAxLS4wMS4wMS0uMDIuMDItLjAzQzkuODQgNCA5LjQyIDQgOSA0Yy00LjQyIDAtOCAuNS04IDR2MTBjMCAuODguMzkgMS42NyAxIDIuMjJWMjJjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoOHYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMnYtMy4wOGMzLjM5LS40OSA2LTMuMzkgNi02LjkyIDAtMy44Ny0zLjEzLTctNy03ek00LjUgMTljLS44MyAwLTEuNS0uNjctMS41LTEuNVMzLjY3IDE2IDQuNSAxNnMxLjUuNjcgMS41IDEuNVM1LjMzIDE5IDQuNSAxOXpNMyAxM1Y4aDZjMCAxLjk2LjgxIDMuNzMgMi4xMSA1SDN6bTEwLjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTIuNS02Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptLjUtOUgxNXY1bDMuNjIgMi4xNi43NS0xLjIzLTIuODctMS42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVzaWduU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi4yNCAxMS41MSAxLjU3LTEuNTctMy43NS0zLjc1LTEuNTcgMS41Ny00LjE0LTQuMTNjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC0xLjkgMS45Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDQuMTMgNC4xM0wzIDE3LjI1VjIxaDMuNzVsNC43Ni00Ljc2IDQuMTMgNC4xM2MuOTUuOTUgMi4yMy42IDIuODMgMGwxLjktMS45Yy43OC0uNzguNzgtMi4wNSAwLTIuODNsLTQuMTMtNC4xM3ptLTcuMDYtLjQ0TDUuMDQgNi45NGwxLjg5LTEuOUw4LjIgNi4zMSA3LjAyIDcuNWwxLjQxIDEuNDEgMS4xOS0xLjE5IDEuNDUgMS40NS0xLjg5IDEuOXptNy44OCA3Ljg5LTQuMTMtNC4xMyAxLjktMS45IDEuNDUgMS40NS0xLjE5IDEuMTkgMS40MSAxLjQxIDEuMTktMS4xOSAxLjI3IDEuMjctMS45IDEuOXpNMjAuNzEgNy4wNGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGMtLjQ3LS40Ny0xLjEyLS4yOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaWFtb25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMTYgM2gtLjMyTDkuMjEgOC4yNWg1LjU4ek0xNi40NiA4LjI1aDUuMTZMMTkgM2gtNS4xNnpNMjEuMzggOS43NWgtOC42M1YyMC4xek0xMS4yNSAyMC4xVjkuNzVIMi42MnpNNy41NCA4LjI1IDEwLjE2IDNINUwyLjM4IDguMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpbm5lckRpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTloMjBsLTIgMkg0bC0yLTJ6TTUgNmgxdjFINVY2em0wLTJoMXYxSDVWNHptNCAwdjFIN1Y0aDJ6bTAgM0g3VjZoMnYxem0tMyA4LjIzYy0uMzYuMTEtLjY5LjI4LTEgLjQ3VjhoMXY3LjIzem0tMiAxLjI5Yy0uMzguNDQtLjY4LjkzLS44NCAxLjQ4aDE2LjgyYy4wMS0uMTYuMDMtLjMzLjAzLS41YTUuNDk3IDUuNDk3IDAgMCAwLTEwLjU4LTIuMWMtLjU5LS4yNS0xLjI0LS40LTEuOTMtLjQtLjE3IDAtLjMzLjAyLS41LjA0VjhoMmMxLjAzLjA2IDEuOS0uOTYgMi0yaDEwVjVIMTFjLS4xLTEuMDUtLjk3LTEuOTctMi0ySDN2MWgxdjFIM3YxaDF2MUgzdjFoMXY4LjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zQmlrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNNSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41em01LjgtMTAgMi40LTIuNC44LjhjMS4zIDEuMyAzIDIuMSA1LjEgMi4xVjljLTEuNSAwLTIuNy0uNi0zLjYtMS41bC0xLjktMS45Yy0uNS0uNC0xLS42LTEuNi0uNnMtMS4xLjItMS40LjZMNy44IDguNGMtLjQuNC0uNi45LS42IDEuNCAwIC42LjIgMS4xLjYgMS40TDExIDE0djVoMnYtNi4ybC0yLjItMi4zek0xOSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zQm9hdEZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDIxYy0xLjM5IDAtMi43OC0uNDctNC0xLjMyLTIuNDQgMS43MS01LjU2IDEuNzEtOCAwQzYuNzggMjAuNTMgNS4zOSAyMSA0IDIxSDJ2MmgyYzEuMzggMCAyLjc0LS4zNSA0LS45OWE4Ljc1MiA4Ljc1MiAwIDAgMCA4IDBjMS4yNi42NSAyLjYyLjk5IDQgLjk5aDJ2LTJoLTJ6TTMuOTUgMTlINGMxLjYgMCAzLjAyLS44OCA0LTIgLjk4IDEuMTIgMi40IDIgNCAyczMuMDItLjg4IDQtMmMuOTggMS4xMiAyLjQgMiA0IDJoLjA1bDEuOS02LjY4Yy4xMS0uMzcuMDQtMS4wNi0uNjYtMS4yOEwyMCAxMC42MlY2YzAtMS4xLS45LTItMi0yaC0zVjFIOXYzSDZjLTEuMSAwLTIgLjktMiAydjQuNjJsLTEuMjkuNDJjLS42My4xOS0uODEuODQtLjY2IDEuMjhMMy45NSAxOXpNNiA2aDEydjMuOTdMMTIgOCA2IDkuOTdWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0JvYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyMWMtMS4zOSAwLTIuNzgtLjQ3LTQtMS4zMi0yLjQ0IDEuNzEtNS41NiAxLjcxLTggMEM2Ljc4IDIwLjUzIDUuMzkgMjEgNCAyMUgydjJoMmMxLjM4IDAgMi43NC0uMzUgNC0uOTlhOC43NTIgOC43NTIgMCAwIDAgOCAwYzEuMjYuNjUgMi42Mi45OSA0IC45OWgydi0yaC0yek0zLjk1IDE5SDRjMS42IDAgMy4wMi0uODggNC0yIC45OCAxLjEyIDIuNCAyIDQgMnMzLjAyLS44OCA0LTJjLjk4IDEuMTIgMi40IDIgNCAyaC4wNWwxLjg5LTYuNjhjLjA4LS4yNi4wNi0uNTQtLjA2LS43OHMtLjM0LS40Mi0uNi0uNUwyMCAxMC42MlY2YzAtMS4xLS45LTItMi0yaC0zVjFIOXYzSDZjLTEuMSAwLTIgLjktMiAydjQuNjJsLTEuMjkuNDJhMS4wMDcgMS4wMDcgMCAwIDAtLjY2IDEuMjhMMy45NSAxOXpNNiA2aDEydjMuOTdMMTIgOCA2IDkuOTdWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0J1c0ZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQgMC04IC41LTggNHY5LjVjMCAuOTUuMzggMS44MSAxIDIuNDRWMjBjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoOHYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0yLjA2Yy42Mi0uNjMgMS0xLjQ5IDEtMi40NFY2YzAtMy41LTMuNTgtNC04LTR6TTguNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuNjcgMTMgOC41IDEzczEuNS42NyAxLjUgMS41UzkuMzMgMTYgOC41IDE2em03IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0yLjUtNkg2VjdoMTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0J1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTZjMCAuODguMzkgMS42NyAxIDIuMjJWMjBjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoOHYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMlY2YzAtMy41LTMuNTgtNC04LTRzLTggLjUtOCA0djEwem0zLjUgMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTQgNy41IDE0czEuNS42NyAxLjUgMS41UzguMzMgMTcgNy41IDE3em05IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0xLjUtNkg2VjZoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0NhckZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTcuNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTMgNy41IDEzczEuNS42NyAxLjUgMS41UzguMzMgMTYgNy41IDE2em05IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01LjgxIDEwbDEuMDQtM2gxMC4yOWwxLjA0IDNINS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0NhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTMgNi41IDEzczEuNS42NyAxLjUgMS41UzcuMzMgMTYgNi41IDE2em0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNSAxMWwxLjUtNC41aDExTDE5IDExSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcmVjdGlvbnNSYWlsd2F5RmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjB2MWgxMnYtMWwtMS41LTFjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00em0wIDE0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTEuMTcgMTMgMTIgMTNzMS41LjY3IDEuNSAxLjVTMTIuODMgMTYgMTIgMTZ6bTYtNkg2VjdoMTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1JhaWx3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE1LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwLjV2LjVoMTJ2LS41TDE2LjUgMTljMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNWMwLTMuNS0zLjU4LTQtOC00cy04IC41LTggNHYxMC41em04IDEuNWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTYtN0g2VjVoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1J1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjQ5IDUuNDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tMy42IDEzLjkgMS00LjQgMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNjMS4zIDEuNSAzLjMgMi41IDUuNSAyLjV2LTJjLTEuOSAwLTMuNS0xLTQuMy0yLjRsLTEtMS42Yy0uNC0uNi0xLTEtMS43LTEtLjMgMC0uNS4xLS44LjFsLTUuMiAyLjJ2NC43aDJ2LTMuNGwxLjgtLjctMS42IDguMS00LjktMS0uNCAyIDcgMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zU3Vid2F5RmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjB2MWgxMnYtMWwtMS41LTFjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00ek04LjUgMTZjLS44MyAwLTEuNS0uNjctMS41LTEuNVM3LjY3IDEzIDguNSAxM3MxLjUuNjcgMS41IDEuNVM5LjMzIDE2IDguNSAxNnptMi41LTZINlY3aDV2M3ptNC41IDZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0yLjUtNmgtNVY3aDV2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1N1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuNDIgMC04IC41LTggNHY5LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwLjV2LjVoMTJ2LS41TDE2LjUgMTljMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00ek03LjUgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE0IDcuNSAxNHMxLjUuNjcgMS41IDEuNVM4LjMzIDE3IDcuNSAxN3ptMy41LTZINlY2aDV2NXptNS41IDZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0xLjUtNmgtNVY2aDV2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1RyYW5zaXRGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMHYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6TTguNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuNjcgMTMgOC41IDEzczEuNS42NyAxLjUgMS41UzkuMzMgMTYgOC41IDE2em0yLjUtNkg2VjdoNXYzem00LjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTIuNS02aC01VjdoNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zVHJhbnNpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuNDIgMC04IC41LTggNHY5LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwLjV2LjVoMTJ2LS41TDE2LjUgMTljMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00ek03LjUgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE0IDcuNSAxNHMxLjUuNjcgMS41IDEuNVM4LjMzIDE3IDcuNSAxN3ptMy41LTZINlY2aDV2NXptNS41IDZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0xLjUtNmgtNVY2aDV2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1dhbGsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTkuOCA4LjkgNyAyM2gyLjFsMS44LTggMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNDMTQuOCAxMiAxNi44IDEzIDE5IDEzdi0yYy0xLjkgMC0zLjUtMS00LjMtMi40bC0xLTEuNmMtLjQtLjYtMS0xLTEuNy0xLS4zIDAtLjUuMS0uOC4xTDYgOC4zVjEzaDJWOS42bDEuOC0uN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTAuNTktNy45OS04Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtOC4wMSA4Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDguMDEgOGMuNzguNzggMi4wNS43OCAyLjgzIDBsNy45OS04Yy43OS0uNzkuNzktMi4wNSAwLTIuODN6TTEzLjUgMTQuNVYxMkgxMHYzSDh2LTRjMC0uNTUuNDUtMSAxLTFoNC41VjcuNUwxNyAxMWwtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJ5Q2xlYW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41NiAxMS4zNiAxMyA4LjQ0VjdjMC0uNTUtLjQ1LTEtMS0xcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMWgyYzAtMS44NC0xLjY2LTMuMy0zLjU2LTIuOTUtMS4xOC4yMi0yLjE1IDEuMTctMi4zOCAyLjM1LS4zIDEuNTYuNiAyLjk0IDEuOTQgMy40MnYuNjNsLTYuNTYgMi45MmMtLjg4LjM4LTEuNDQgMS4yNS0xLjQ0IDIuMnYuMDFDMyAxNC45MiA0LjA4IDE2IDUuNDIgMTZIN3Y2aDEwdi02aDEuNThjMS4zNCAwIDIuNDItMS4wOCAyLjQyLTIuNDJ2LS4wMWMwLS45NS0uNTYtMS44Mi0xLjQ0LTIuMjF6TTE4LjU4IDE0SDE3di0xSDd2MUg1LjQyYy0uMjMgMC0uNDItLjE5LS40Mi0uNDMgMC0uMTcuMS0uMzIuMjUtLjM4bDYuNzUtMyA2Ljc1IDNhLjQyMy40MjMgMCAwIDEtLjE3LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0QXR0cmlidXRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDdINi4zN0MzLjk2IDcgMiA5LjI0IDIgMTJzMS45NiA1IDQuMzcgNWgxMS4yNmMyLjQxIDAgNC4zNy0yLjI0IDQuMzctNXMtMS45Ni01LTQuMzctNXpNNy4yNCAxNC40NmwtMi41Ny0yLjU3LjctLjcgMS44NyAxLjg3IDMuNTItMy41Mi43LjctNC4yMiA0LjIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0TG9jYXRpb25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45NSAxM0g5VjguMDVsNS42MS01LjYxQTguMTcgOC4xNyAwIDAgMCAxMiAyYy00LjIgMC04IDMuMjItOCA4LjIgMCAzLjMyIDIuNjcgNy4yNSA4IDExLjggNS4zMy00LjU1IDgtOC40OCA4LTExLjggMC0xLjAxLS4xNi0xLjk0LS40NS0yLjhsLTUuNiA1LjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDExaDIuMTJsNi4xNi02LjE2LTIuMTItMi4xMkwxMSA4Ljg4ek0yMC43MSAyIDIwIDEuMjljLS4yLS4xOS0uNDUtLjI5LS43MS0uMjktLjEzIDAtLjQ4LjA3LS43MS4yOWwtLjcyLjcyIDIuMTIgMi4xMi43Mi0uNzJjLjQtLjM5LjQtMS4wMi4wMS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0TG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTQgMiA1IDUuMTQgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg2LTMuMTQtNy03LTd6bS0xLjU2IDEwSDl2LTEuNDRsMy4zNS0zLjM0IDEuNDMgMS40M0wxMC40NCAxMnptNC40NS00LjQ1LS43LjctMS40NC0xLjQ0LjctLjdhLjM4LjM4IDAgMCAxIC41NCAwbC45LjljLjE1LjE1LjE1LjM5IDAgLjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0Um9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoLTJ2Ny45bDItMnpNNCA0aDJ2MTZINHpNMTAgNGgydjRoLTJ6TTEwIDEwaDJ2NGgtMnpNMTAgMTZoMnY0aC0yek0yMi41NiAxMi41OWwtMS4xNS0xLjE1YTEuNDkgMS40OSAwIDAgMC0yLjEyIDBMMTQgMTYuNzNWMjBoMy4yN2w1LjI5LTUuMjljLjU5LS41OS41OS0xLjU0IDAtMi4xMnptLTUuOTggNS44NmgtMS4wM3YtMS4wM0wxOSAxMy45NyAyMC4wMyAxNWwtMy40NSAzLjQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZ2dBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5Yy0yLTItMy4wMS03LTkuMDMtN0M0Ljk1IDIgMS45NCA2IDIgMTEuNTIgMi4wNiAxNy4wNCA2Ljk2IDE5IDkuOTcgMTljMi4wMSAwIDIuMDEgMyA2LjAyIDNDMTkgMjIgMjIgMTkgMjIgMTUuMDIgMjIgMTIgMjEuMDEgMTEgMTkgOXptLTcgNi41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM0M4LjUgMyA1IDkuMzMgNSAxNGMwIDMuODcgMy4xMyA3IDcgN3M3LTMuMTMgNy03YzAtNC42Ny0zLjUtMTEtNy0xMXptMSAxNWMtMyAwLTUtMS45OS01LTUgMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxYzAgMi45MiAyLjQyIDMgMyAzIC41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY0Jpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3aC0uODJsLTEuNy00LjY4QTIuMDA4IDIuMDA4IDAgMCAwIDE0LjYgMUgxMnYyaDIuNmwxLjQ2IDRoLTQuODFsLS4zNi0xSDEyVjRIN3YyaDEuNzVsMS44MiA1SDkuOWMtLjQ0LTIuMjMtMi4zMS0zLjg4LTQuNjUtMy45OUMyLjQ1IDYuODcgMCA5LjIgMCAxMmMwIDIuOCAyLjIgNSA1IDUgMi40NiAwIDQuNDUtMS42OSA0LjktNGg0LjJjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNUMyNCA5LjIgMjEuOCA3IDE5IDd6TTcuODIgMTNjLS40IDEuMTctMS40OSAyLTIuODIgMi0xLjY4IDAtMy0xLjMyLTMtM3MxLjMyLTMgMy0zYzEuMzMgMCAyLjQyLjgzIDIuODIgMkg1djJoMi44MnptNi4yOC0yaC0xLjRsLS43My0ySDE1Yy0uNDQuNTgtLjc2IDEuMjUtLjkgMnptNC45IDRjLTEuNjggMC0zLTEuMzItMy0zIDAtLjkzLjQxLTEuNzMgMS4wNS0yLjI4bC45NiAyLjY0IDEuODgtLjY4LS45Ny0yLjY3Yy4wMiAwIC4wNS0uMDEuMDgtLjAxIDEuNjggMCAzIDEuMzIgMyAzcy0xLjMyIDMtMyAzek0xMSAyMEg3bDYgM3YtMmg0bC02LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZWN0cmljQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgMi4wMUMxOC43MiAxLjQyIDE4LjE2IDEgMTcuNSAxaC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyA4djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMVY4bC0yLjA4LTUuOTl6TTYuNSAxMmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyem0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01IDdsMS41LTQuNWgxMUwxOSA3SDV6TTcgMjBoNHYtMmw2IDNoLTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxlY3RyaWNNb3BlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVjMC0xLjEtLjktMi0yLTJoLTN2MmgzdjIuNjVMMTMuNTIgMTJIMTBWN0g2Yy0yLjIxIDAtNCAxLjc5LTQgNHYzaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g0LjQ4TDE5IDguMzVWNXpNNyAxNWMtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDRoNXYySDV6TTE5IDExYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTcgMjBoNHYtMmw2IDNoLTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxlY3RyaWNSaWNrc2hhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExLjE4VjkuNzJjMC0uNDctLjE2LS45Mi0uNDYtMS4yOEwxNi42IDMuNzJjLS4zOC0uNDYtLjk0LS43Mi0xLjU0LS43MkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoLjE4QzMuNiAxNi4xNiA0LjcgMTcgNiAxN3MyLjQtLjg0IDIuODItMmg4LjM3YTIuOTk2IDIuOTk2IDAgMCAwIDUuODItMWMtLjAxLTEuMy0uODUtMi40LTIuMDEtMi44MnpNMTguNCA5SDE2VjYuMTJMMTguNCA5ek0zIDVoNHY0SDNWNXptMyAxMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0zLTJ2LTJoM1Y5SDlWNWg1djhIOXptMTEgMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxek03IDIwaDR2LTJsNiAzaC00djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZWN0cmljU2Nvb3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODIgMTZIMTV2LTFjMC0yLjIxIDEuNzktNCA0LTRoLjc0bC0xLjktOC40NEEyLjAwOSAyLjAwOSAwIDAgMCAxNS44OSAxSDEydjJoMy44OWwxLjQgNi4yNWgtLjAxQTYuMDA4IDYuMDA4IDAgMCAwIDEzLjA5IDE0SDcuODJhMi45OTYgMi45OTYgMCAwIDAtMy40Mi0xLjk0Yy0xLjE4LjIzLTIuMTMgMS4yLTIuMzUgMi4zOEEzLjAwMiAzLjAwMiAwIDAgMCA1IDE4YzEuMyAwIDIuNC0uODQgMi44Mi0yek01IDE2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTExIDIwSDdsNiAzdi0yaDRsLTYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxlY3RyaWNhbFNlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRjMC0uNTUtLjQ1LTEtMS0xaC0ydjJoMmMuNTUgMCAxLS40NSAxLTF6TTIwIDE3aC0ydjJoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMXpNMTIgMTRoLTJ2NGgyYzAgMS4xLjkgMiAyIDJoM3YtOGgtM2MtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTNjMC0xLjEuOS0yIDItMmgxLjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuNDMgNCA4LjUgNEg1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDMuNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjMzIDkgOC41IDlIN2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNGgydi0ySDdjLTEuMSAwLTItLjktMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbWVyZ2VuY3lSZWNvcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek0xMiAxMmwzIDEuNzMtMSAxLjczLTMtMS43M1YxN0g5di0zLjI3bC0zIDEuNzMtMS0xLjczTDggMTJsLTMtMS43MyAxLTEuNzMgMyAxLjczVjdoMnYzLjI3bDMtMS43MyAxIDEuNzNMMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtZXJnZW5jeVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMtMy4xNSAwLTYgMi40MS02IDYuMTUgMCAyLjQ5IDIgNS40NCA2IDguODUgNC0zLjQxIDYtNi4zNiA2LTguODVDMTggMTEuNDEgMTUuMTUgOSAxMiA5em0wIDcuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTEyIDRjMS45MyAwIDMuNjguNzggNC45NSAyLjA1bC0xLjQxIDEuNDFhNS4wMjIgNS4wMjIgMCAwIDAtNy4wOCAwTDcuMDUgNi4wNUE2Ljk3NiA2Ljk3NiAwIDAgMSAxMiA0em03Ljc4LS43Ny0xLjQxIDEuNDFDMTYuNzQgMy4wMSAxNC40OSAyIDEyLjAxIDJTNy4yNyAzLjAxIDUuNjQgNC42M0w0LjIyIDMuMjJDNi4yMiAxLjIzIDguOTcgMCAxMi4wMSAwczUuNzggMS4yMyA3Ljc3IDMuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtZXJnZW5jeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjc5IDkuMjMtMi0zLjQ2TDE0IDguNTRWM2gtNHY1LjU0TDUuMjEgNS43N2wtMiAzLjQ2TDggMTJsLTQuNzkgMi43NyAyIDMuNDZMMTAgMTUuNDZWMjFoNHYtNS41NGw0Ljc5IDIuNzcgMi0zLjQ2TDE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdlN0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDcuMjMuMDEtLjAxLTMuNzItMy43MkwxNSA0LjU2bDIuMTEgMi4xMWMtLjk0LjM2LTEuNjEgMS4yNi0xLjYxIDIuMzNhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy4zNiAwIC42OS0uMDggMS0uMjF2Ny4yMWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVYxNGMwLTEuMS0uOS0yLTItMmgtMVY1YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAydjE2aDEwdi03LjVoMS41djVhMi41IDIuNSAwIDAgMCA1IDBWOWMwLS42OS0uMjgtMS4zMi0uNzMtMS43N3pNMTggMTBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNOCAxOHYtNC41SDZMMTAgNnY1aDJsLTQgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEwdjEySDJWMTBsNy0zdjJsNS0ydjNoOHptLTQuOC0xLjVMMTggMmgzbC44IDYuNWgtNC42ek0xMSAxOGgydi00aC0ydjR6bS00IDBoMnYtNEg3djR6bTEwLTRoLTJ2NGgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXN0Zm9vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjA2IDIyLjk5aDEuNjZjLjg0IDAgMS41My0uNjQgMS42My0xLjQ2TDIzIDUuMDVoLTVWMWgtMS45N3Y0LjA1aC00Ljk3bC4zIDIuMzRjMS43MS40NyAzLjMxIDEuMzIgNC4yNyAyLjI2IDEuNDQgMS40MiAyLjQzIDIuODkgMi40MyA1LjI5djguMDV6TTEgMjEuOTlWMjFoMTUuMDN2Ljk5YzAgLjU1LS40NSAxLTEuMDEgMUgyLjAxYy0uNTYgMC0xLjAxLS40NS0xLjAxLTF6bTE1LjAzLTdjMC04LTE1LjAzLTgtMTUuMDMgMGgxNS4wM3pNMS4wMiAxN2gxNXYyaC0xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmVzdGl2YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1LjdWNGgzbC0xLTEuNDlMMTYgMWgtNXY0LjdMMiAxMnYxMGg3di01bDMuMDMtMkwxNSAxN3Y1aDdWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVIeWRyYW50QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFoLTFWOGgyVjZoLTIuMzVhNS45OSA1Ljk5IDAgMCAwLTExLjMgMEg0djJoMnYzSDVjLTEuMSAwLTIgLjktMiAydjJjMCAxLjEuOSAyIDIgMmgxdjNINHYyaDE2di0yaC0ydi0zaDFjMS4xIDAgMi0uOSAyLTJ2LTJjMC0xLjEtLjktMi0yLTJ6bS03IDYuNWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVzMS41Ny0zLjUgMy41LTMuNSAzLjUgMS41NyAzLjUgMy41LTEuNTcgMy41LTMuNSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVUcnVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjkgMTAuNjktMS40NC00LjMyQTIuMDEgMi4wMSAwIDAgMCAxOS41NiA1SDE5VjRjMC0uNTUtLjQ1LTEtMS0xaC0xYy0uNTUgMC0xIC40NS0xIDF2MWgtMmMtMS4xIDAtMiAuOS0yIDJ2NEgxdjVjMCAxLjEuOSAyIDIgMmgxYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNGMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDN2LTYuNjhjMC0uMjEtLjAzLS40Mi0uMS0uNjN6TTcgMTljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTAgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMy04VjdoNS41NmwxLjMzIDRIMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDguNWgtMXYtMmgxVjVIMXYxLjVoMXYySDFWMTBoMTBWOC41em0tNS43NSAwSDMuNXYtMmgxLjc1djJ6bTMuMjUgMEg2Ljc1di0ySDguNXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlnaHRDbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRoLTJjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuNSAxNkgxOHYySDkuNDljLS44OCAwLTEuNjYtLjU4LTEuOTItMS40M0w1IDhWNGgydjRsMi41IDh6TTggMTloMTB2Mkg4di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNnYtMmwtOC01VjMuNWMwLS44My0uNjctMS41LTEuNS0xLjVTMTAgMi42NyAxMCAzLjVWOWwtOCA1djJsOC0yLjVWMTlsLTIgMS41VjIybDMuNS0xIDMuNSAxdi0xLjVMMTMgMTl2LTUuNWw4IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9yZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTIgOSAyIDIgMTJoMS44NkwwIDE4aDd2NGg0di00aDdsLTMuODYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTQgMTJIMjJMMTUgMmwtMi4zOSAzLjQxTDE3LjkyIDEzaC0xLjk1bDMuMjIgNUgyNHpNMTMgMTloNHYzaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JrTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNDEgMTUuNTkgOCAxN2wtNC00IDQtNCAxLjQxIDEuNDFMNy44MyAxMmMxLjUxLS4zMyAzLjczLjA4IDUuMTcgMS4zNlY2LjgzbC0xLjU5IDEuNTlMMTAgN2w0LTQgNCA0LTEuNDEgMS40MUwxNSA2LjgzVjIxaC0ydi00Yy0uNzMtMi41OC0zLjA3LTMuNDctNS4xNy0zbDEuNTggMS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ya1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNTkgMTUuNTkgMTYgMTdsNC00LTQtNC0xLjQxIDEuNDFMMTYuMTcgMTJjLTEuNTEtLjMzLTMuNzMuMDgtNS4xNyAxLjM2VjYuODNsMS41OSAxLjU5TDE0IDdsLTQtNC00IDQgMS40MSAxLjQxTDkgNi44M1YyMWgydi00Yy43My0yLjU4IDMuMDctMy40NyA1LjE3LTNsLTEuNTggMS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDN2MmgtMlYzaC0ydjJoLTJWM2gtMnY0bDIgMnYxSDlWOWwyLTJWM0g5djJIN1YzSDV2MkgzVjNIMXY0bDIgMnY2bC0yIDJ2NGg5di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g5di00bC0yLTJWOWwyLTJWM2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem01LTRoMnYuNGMtLjEgMi4yLS44IDMuOS0yLjMgNS4xLS41LjQtMS4xLjctMS43LjlWMjJoLTJ2LTZoLTJ2Nkg5VjEwLjFjLS4zLjEtLjUuMi0uNi4zLS45LjctMS4zOSAxLjYtMS40IDMuMXYuNUg1di0uNWMwLTIgLjcxLTMuNTkgMi4xMS00Ljc5QzguMjEgNy44MSAxMCA3IDEyIDdzMi42OC0uNDYgMy40OC0xLjA2QzE2LjQ4IDUuMTQgMTcgNCAxNyAyLjVWMnpNNCAxNmgzdjZINHYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFuZHltYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS42NyAxOC4xNy01LjMtNS4zaC0uOTlsLTIuNTQgMi41NHYuOTlsNS4zIDUuM2MuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMi4xMi0yLjEyYS45OTYuOTk2IDAgMCAwIDAtMS40MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTAuMTkgMS40MS0xLjQxIDIuMTIgMi4xMmEzIDMgMCAwIDAgMC00LjI0bC0zLjU0LTMuNTQtMS40MSAxLjQxVjEuNzFsLS43LS43MS0zLjU0IDMuNTQuNzEuNzFoMi44M2wtMS40MSAxLjQxIDEuMDYgMS4wNi0yLjg5IDIuODktNC4xMy00LjEzVjUuMDZMNC44MyAyLjA0IDIgNC44NyA1LjAzIDcuOWgxLjQxbDQuMTMgNC4xMy0uODUuODVINy42bC01LjMgNS4zYS45OTYuOTk2IDAgMCAwIDAgMS40MWwyLjEyIDIuMTJjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDUuMy01LjN2LTIuMTJsNS4xNS01LjE1IDEuMDYgMS4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFyZHdhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAzLTMgM1YzSDlDNi4yNCAzIDQgNS4yNCA0IDhoNXYzaDZWOGwzIDNoMlYzaC0yek05IDEzdjdjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTdIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9tZVJlcGFpclNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNmgtMnYtMUg4djFINnYtMUgydjVoMjB2LTVoLTR6TTIwIDhoLTNWNmMwLTEuMS0uOS0yLTItMkg5Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjRoNHYtMmgydjJoOHYtMmgydjJoNHYtNGMwLTEuMS0uOS0yLTItMnptLTUgMEg5VjZoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTNjMS42NiAwIDMtMS4zNCAzLTNTOC42NiA3IDcgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzem0xMi02aC04djdIM1Y1SDF2MTVoMnYtM2gxOHYzaDJ2LTljMC0yLjIxLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEh2YWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNmMxLjAxIDAgMS45MS0uMzkgMi42Mi0xSDkuMzhjLjcxLjYxIDEuNjEgMSAyLjYyIDF6TTguNTYgMTRoNi44OWMuMjYtLjQ1LjQ0LS45Ni41MS0xLjVoLTcuOWMuMDYuNTQuMjMgMS4wNS41IDEuNXpNMTIgOGMtMS4wMSAwLTEuOTEuMzktMi42MiAxaDUuMjRjLS43MS0uNjEtMS42MS0xLTIuNjItMXpNOC41NiAxMGMtLjI2LjQ1LS40NC45Ni0uNTEgMS41aDcuOWMtLjA3LS41NC0uMjQtMS4wNS0uNTEtMS41SDguNTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNWMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEljZWNyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwibTguNzkgMTIuNCAzLjI2IDYuMjIgMy4xNy02LjIxYy0uMTEtLjA4LS4yMS0uMTYtLjMtLjI1LS44NC41My0xLjg1Ljg0LTIuOTIuODRzLTIuMDgtLjMxLTIuOTItLjg0Yy0uMDkuMDktLjE5LjE3LS4yOS4yNHptLTEuOTYuNTlBMi45OTUgMi45OTUgMCAwIDEgNCAxMGEzIDMgMCAwIDEgMi41Mi0yLjk2QzYuNzUgNC4yMiA5LjEyIDIgMTIgMnM1LjI1IDIuMjIgNS40OCA1LjA0QTMgMyAwIDAgMSAyMCAxMGMwIDEuNTktMS4yNCAyLjktMi44MSAyLjk5TDEyLjA3IDIzIDYuODMgMTIuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtlYmFiRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43NSA4SDExdjVINy43NXYxaC43NWEyLjUgMi41IDAgMCAxIDAgNWgtLjc1djRoLTEuNXYtNEg1LjVhMi41IDIuNSAwIDAgMSAwLTVoLjc1di0xSDNWOGgzLjI1VjdINS41YTIuNSAyLjUgMCAwIDEgMC01aC43NVYxaDEuNXYxaC43NWEyLjUgMi41IDAgMCAxIDAgNWgtLjc1djF6bTEwLTFoLjc1YTIuNSAyLjUgMCAwIDAgMC01aC0uNzVWMWgtMS41djFoLS43NWEyLjUgMi41IDAgMCAwIDAgNWguNzV2MUgxM3Y1aDMuMjV2MWgtLjc1YTIuNSAyLjUgMCAwIDAgMCA1aC43NXY0aDEuNXYtNGguNzVhMi41IDIuNSAwIDAgMCAwLTVoLS43NXYtMUgyMVY4aC0zLjI1Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExheWVyc0NsZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuODEgMTQuOTkgMS4xOS0uOTItMS40My0xLjQzLTEuMTkuOTIgMS40MyAxLjQzem0tLjQ1LTQuNzJMMjEgOWwtOS03LTIuOTEgMi4yNyA3Ljg3IDcuODggMi40LTEuODh6TTMuMjcgMSAyIDIuMjdsNC4yMiA0LjIyTDMgOWwxLjYzIDEuMjdMMTIgMTZsMi4xLTEuNjMgMS40MyAxLjQzTDEyIDE4LjU0bC03LjM3LTUuNzNMMyAxNC4wN2w5IDcgNC45NS0zLjg1TDIwLjczIDIxIDIyIDE5LjczIDMuMjcgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGF5ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuOTkgMTguNTQtNy4zNy01LjczTDMgMTQuMDdsOSA3IDktNy0xLjYzLTEuMjctNy4zOCA1Ljc0ek0xMiAxNmw3LjM2LTUuNzNMMjEgOWwtOS03LTkgNyAxLjYzIDEuMjdMMTIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpcXVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyMEgzdjJoNnYtMkg3di0zLjE4QzguMTYgMTYuNCA5IDE1LjMgOSAxNFY2SDN2OHptMi02aDJ2M0g1Vjh6TTIwLjYzIDguNTRsLS45NS0uMzJhLjk5MS45OTEgMCAwIDEtLjY4LS45NFYzYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdjQuMjhjMCAuNDMtLjI4LjgxLS42OC45NWwtLjk1LjMyYy0uODIuMjctMS4zNyAxLjAzLTEuMzcgMS44OVYyMGMwIDEuMS45IDIgMiAyaDdjMS4xIDAgMi0uOSAyLTJ2LTkuNTZjMC0uODYtLjU1LTEuNjItMS4zNy0xLjl6TTE2IDRoMXYxaC0xVjR6bS0zIDYuNDQuOTUtLjMyQzE1LjE4IDkuNzIgMTYgOC41NyAxNiA3LjI4VjdoMXYuMjhhMyAzIDAgMCAwIDIuMDUgMi44NWwuOTUuMzFWMTJoLTd2LTEuNTZ6TTIwIDIwaC03di0yaDd2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxBY3Rpdml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyYzAtMS4xLjktMiAyLTJWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJ6bS00LjQyIDQuOEwxMiAxNC41bC0zLjU4IDIuMyAxLjA4LTQuMTItMy4yOS0yLjY5IDQuMjQtLjI1TDEyIDUuOGwxLjU0IDMuOTUgNC4yNC4yNS0zLjI5IDIuNjkgMS4wOSA0LjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEFpcnBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0ybC04LjUtNVYzLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNVY5TDIgMTR2Mmw4LjUtMi41VjE5TDggMjAuNVYyMmw0LTEgNCAxdi0xLjVMMTMuNSAxOXYtNS41TDIyIDE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEF0bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDJ2LTFoMWMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xaC0zdi0xaDRWOGgtMlY3aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDN2MUg5djJoMnYxem05LTEzSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNVYzSDN2Mmw4IDl2NUg2djJoMTJ2LTJoLTV2LTVsOC05ek03LjQzIDcgNS42NiA1aDEyLjY5bC0xLjc4IDJINy40M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxDYWZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDR2MTBjMCAyLjIxIDEuNzkgNCA0IDRoNmMyLjIxIDAgNC0xLjc5IDQtNHYtM2gyYTIgMiAwIDAgMCAyLTJWNWMwLTEuMTEtLjg5LTItMi0yem0wIDVoLTJWNWgydjN6TTQgMTloMTZ2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbENhcldhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLTEtMS41LTIuNy0xLjUtMi43cy0xLjUgMS43LTEuNSAyLjdjMCAuODMuNjcgMS41IDEuNSAxLjV6bS01IDBjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtMS0xLjUtMi43LTEuNS0yLjdzLTEuNSAxLjctMS41IDIuN2MwIC44My42NyAxLjUgMS41IDEuNXpNNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNUM4LjUgMi41IDcgLjggNyAuOFM1LjUgMi41IDUuNSAzLjVDNS41IDQuMzMgNi4xNyA1IDcgNXptMTEuOTIgMy4wMUMxOC43MiA3LjQyIDE4LjE2IDcgMTcuNSA3aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxNHY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi41IDE4Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyAxNSA2LjUgMTVzMS41LjY3IDEuNSAxLjVTNy4zMyAxOCA2LjUgMTh6bTExIDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01IDEzbDEuNS00LjVoMTFMMTkgMTNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxDb252ZW5pZW5jZVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN1Y0SDV2M0gydjEzaDh2LTRoNHY0aDhWN2gtM3ptLTggM0g5djFoMnYxSDhWOWgyVjhIOFY3aDN2M3ptNSAyaC0xdi0yaC0yVjdoMXYyaDFWN2gxdjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC4xIDEzLjM0IDIuODMtMi44M0wzLjkxIDMuNWE0LjAwOCA0LjAwOCAwIDAgMCAwIDUuNjZsNC4xOSA0LjE4em02Ljc4LTEuODFjMS41My43MSAzLjY4LjIxIDUuMjctMS4zOCAxLjkxLTEuOTEgMi4yOC00LjY1LjgxLTYuMTItMS40Ni0xLjQ2LTQuMi0xLjEtNi4xMi44MS0xLjU5IDEuNTktMi4wOSAzLjc0LTEuMzggNS4yN0wzLjcgMTkuODdsMS40MSAxLjQxTDEyIDE0LjQxbDYuODggNi44OCAxLjQxLTEuNDFMMTMuNDEgMTNsMS40Ny0xLjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbERyaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMyAyIDIuMDEgMTguMjNDNS4xMyAyMS4yMyA1Ljk3IDIyIDcgMjJoMTBjMS4wMyAwIDEuODctLjc3IDEuOTktMS43N0wyMSAySDN6bTkgMTdjLTEuNjYgMC0zLTEuMzQtMy0zIDAtMiAzLTUuNCAzLTUuNHMzIDMuNCAzIDUuNGMwIDEuNjYtMS4zNCAzLTMgM3ptNi4zMy0xMUg1LjY3bC0uNDQtNGgxMy41M2wtLjQzIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsRmlyZURlcGFydG1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxMi45LTIuMTMgMi4wOWMtLjU2LjU2LS44NyAxLjI5LS44NyAyLjA3QzkgMTguNjggMTAuMzUgMjAgMTIgMjBzMy0xLjMyIDMtMi45NGMwLS43OC0uMzEtMS41Mi0uODctMi4wN0wxMiAxMi45elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA2LS40NC41NUMxNC4zOCA4LjAyIDEyIDcuMTkgMTIgNS4zVjJTNCA2IDQgMTNjMCAyLjkyIDEuNTYgNS40NyAzLjg5IDYuODYtLjU2LS43OS0uODktMS43Ni0uODktMi44IDAtMS4zMi41Mi0yLjU2IDEuNDctMy41TDEyIDEwLjFsMy41MyAzLjQ3Yy45NS45MyAxLjQ3IDIuMTcgMS40NyAzLjUgMCAxLjAyLS4zMSAxLjk2LS44NSAyLjc1IDEuODktMS4xNSAzLjI5LTMuMDYgMy43MS01LjMuNjYtMy41NS0xLjA3LTYuOS0zLjg2LTguNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsRmxvcmlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYTkgOSAwIDAgMCA5LTkgOSA5IDAgMCAwLTkgOXpNNS42IDEwLjI1YTIuNSAyLjUgMCAwIDAgMy45MiAyLjA2bC0uMDIuMTlhMi41IDIuNSAwIDAgMCA1IDBsLS4wMi0uMTljLjQuMjguODkuNDQgMS40Mi40NGEyLjUgMi41IDAgMCAwIDIuNS0yLjVjMC0xLS41OS0xLjg1LTEuNDMtMi4yNS44NC0uNCAxLjQzLTEuMjUgMS40My0yLjI1YTIuNSAyLjUgMCAwIDAtMy45Mi0yLjA2bC4wMi0uMTlhMi41IDIuNSAwIDAgMC01IDBsLjAyLjE5Yy0uNC0uMjgtLjg5LS40NC0xLjQyLS40NGEyLjUgMi41IDAgMCAwLTIuNSAyLjVjMCAxIC41OSAxLjg1IDEuNDMgMi4yNS0uODQuNC0xLjQzIDEuMjUtMS40MyAyLjI1ek0xMiA1LjVhMi41IDIuNSAwIDAgMSAwIDUgMi41IDIuNSAwIDAgMSAwLTV6TTMgMTNhOSA5IDAgMCAwIDkgOSA5IDkgMCAwIDAtOS05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEdhc1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyA3LjIzLjAxLS4wMS0zLjcyLTMuNzJMMTUgNC41NmwyLjExIDIuMTFjLS45NC4zNi0xLjYxIDEuMjYtMS42MSAyLjMzYTIuNSAyLjUgMCAwIDAgMi41IDIuNWMuMzYgMCAuNjktLjA4IDEtLjIxdjcuMjFjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTFWMTRjMC0xLjEtLjktMi0yLTJoLTFWNWMwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmgxMHYtNy41aDEuNXY1YTIuNSAyLjUgMCAwIDAgNSAwVjljMC0uNjktLjI4LTEuMzItLjczLTEuNzd6TTEyIDEwSDZWNWg2djV6bTYgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEdyb2NlcnlTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6TTEgMnYyaDJsMy42IDcuNTktMS4zNSAyLjQ1Yy0uMTYuMjgtLjI1LjYxLS4yNS45NiAwIDEuMS45IDIgMiAyaDEydi0ySDcuNDJjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2g3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjU4LTYuNDlBMS4wMDMgMS4wMDMgMCAwIDAgMjAgNEg1LjIxbC0uOTQtMkgxem0xNiAxNmMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0xIDExaC00djRoLTR2LTRINnYtNGg0VjZoNHY0aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTNjMS42NiAwIDMtMS4zNCAzLTNTOC42NiA3IDcgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzem0xMi02aC04djdIM1Y1SDF2MTVoMnYtM2gxOHYzaDJ2LTljMC0yLjIxLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsTGF1bmRyeVNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjE3IDE2LjgzYTQuMDA4IDQuMDA4IDAgMCAwIDUuNjYgMCA0LjAwOCA0LjAwOCAwIDAgMCAwLTUuNjZsLTUuNjYgNS42NnpNMTggMi4wMSA2IDJjLTEuMTEgMC0yIC44OS0yIDJ2MTZjMCAxLjExLjg5IDIgMiAyaDEyYzEuMTEgMCAyLS44OSAyLTJWNGMwLTEuMTEtLjg5LTEuOTktMi0xLjk5ek0xMCA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTcgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem01IDE2Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxMaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTEuNTVDOS42NCA5LjM1IDYuNDggOCAzIDh2MTFjMy40OCAwIDYuNjQgMS4zNSA5IDMuNTUgMi4zNi0yLjE5IDUuNTItMy41NSA5LTMuNTVWOGMtMy40OCAwLTYuNjQgMS4zNS05IDMuNTV6TTEyIDhjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTMtMyAxLjM0LTMgMyAxLjM0IDMgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbE1hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2aC0yYzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDIwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTctM2MxLjY2IDAgMyAxLjM0IDMgM0g5YzAtMS42NiAxLjM0LTMgMy0zem0wIDEwYy0yLjc2IDAtNS0yLjI0LTUtNWgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoMmMwIDIuNzYtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxNb3ZpZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAzdjJoLTJWM0g4djJINlYzSDR2MThoMnYtMmgydjJoOHYtMmgydjJoMlYzaC0yek04IDE3SDZ2LTJoMnYyem0wLTRINnYtMmgydjJ6bTAtNEg2VjdoMnYyem0xMCA4aC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnptMC00aC0yVjdoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbE9mZmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNTgtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OC41NSAwIDEuMDUtLjIyIDEuNDEtLjU5bDctN2MuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtLjU1LS4yMy0xLjA2LS41OS0xLjQyek01LjUgN0M0LjY3IDcgNCA2LjMzIDQgNS41UzQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjUgNi4zMyA3IDUuNSA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFBhcmtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzSDZ2MThoNHYtNmgzYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0uMiA4SDEwVjdoMy4yYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxQaGFybWFjeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVoLTIuNjRsMS4xNC0zLjE0TDE3LjE1IDFsLTEuNDYgNEgzdjJsMiA2LTIgNnYyaDE4di0ybC0yLTYgMi02VjV6bS01IDloLTN2M2gtMnYtM0g4di0yaDNWOWgydjNoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi42MiAxMC43OWMxLjQ0IDIuODMgMy43NiA1LjE0IDYuNTkgNi41OWwyLjItMi4yYy4yNy0uMjcuNjctLjM2IDEuMDItLjI0IDEuMTIuMzcgMi4zMy41NyAzLjU3LjU3LjU1IDAgMSAuNDUgMSAxVjIwYzAgLjU1LS40NSAxLTEgMS05LjM5IDAtMTctNy42MS0xNy0xNyAwLS41NS40NS0xIDEtMWgzLjVjLjU1IDAgMSAuNDUgMSAxIDAgMS4yNS4yIDIuNDUuNTcgMy41Ny4xMS4zNS4wMy43NC0uMjUgMS4wMmwtMi4yIDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxQaXp6YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC40MyAyIDUuMjMgMy41NCAzLjAxIDZMMTIgMjJsOC45OS0xNkMxOC43OCAzLjU1IDE1LjU3IDIgMTIgMnpNNyA3YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTUgOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyYzAtMS4xLjktMiAyLTJWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJ6bS00LjQyIDQuOEwxMiAxNC41bC0zLjU4IDIuMyAxLjA4LTQuMTItMy4yOS0yLjY5IDQuMjQtLjI1TDEyIDUuOGwxLjU0IDMuOTUgNC4yNC4yNS0zLjI5IDIuNjkgMS4wOSA0LjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFBvbGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00em0yLjUgMTEuNTkuOSAzLjg4LTMuNC0yLjA1LTMuNCAyLjA1LjktMy44Ny0zLTIuNTkgMy45Ni0uMzRMMTIgNi4wMmwxLjU0IDMuNjQgMy45Ni4zNC0zIDIuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUG9zdE9mZmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0LTggNS04LTVWNmw4IDUgOC01djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUHJpbnRzaG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOEg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zem0tMyAxMUg4di01aDh2NXptMy03Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0xLTlINnY0aDEyVjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsU2VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzLjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyIDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJoLTMuMTdMMTUgMkg5em0zIDE1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxTaGlwcGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhoLTNWNEgzYy0xLjEgMC0yIC45LTIgMnYxMWgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDJ2LTVsLTMtNHpNNiAxOC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptMTMuNS05IDEuOTYgMi41SDE3VjkuNWgyLjV6bS0xLjUgOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsVGF4aSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNUgxNVYzSDl2Mkg2LjVjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTMgNi41IDEzczEuNS42NyAxLjUgMS41UzcuMzMgMTYgNi41IDE2em0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNSAxMWwxLjUtNC41aDExTDE5IDExSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2F0aW9uUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjEzIDIgNSA1LjEzIDUgOWMwIDEuNzQuNSAzLjM3IDEuNDEgNC44NC45NSAxLjU0IDIuMiAyLjg2IDMuMTYgNC40LjQ3Ljc1LjgxIDEuNDUgMS4xNyAyLjI2LjI2LjU1LjQ3IDEuNSAxLjI2IDEuNXMxLS45NSAxLjI1LTEuNWMuMzctLjgxLjctMS41MSAxLjE3LTIuMjYuOTYtMS41MyAyLjIxLTIuODUgMy4xNi00LjRDMTguNSAxMi4zNyAxOSAxMC43NCAxOSA5YzAtMy44Ny0zLjEzLTctNy03em0wIDkuNzVhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEx1bmNoRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMGMuMzItMy4yOC00LjI4LTYtOS45OS02UzEuNyA2LjcyIDIuMDIgMTBIMjJ6TTUuMzUgMTMuNWMuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43My0uMzcgMi4xOC0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43My0uMzcgMi4xOC0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjYzIDIuMTcuNjR2LTEuOThzLS43OS0uMTYtMS4xNi0uMzhjLS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOC42NGMtLjM3LjIzLS42LjM2LTEuMTUuMzZzLS43OC0uMTQtMS4xNS0uMzZjLS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOC42NGMtLjM3LjIzLS41OS4zNi0xLjE1LjM2LS41NSAwLS43OC0uMTQtMS4xNS0uMzYtLjQ1LS4yNy0xLjA3LS42NC0yLjE4LS42NHMtMS43My4zNy0yLjE4LjY0Yy0uMzcuMjMtLjU5LjM2LTEuMTUuMzZ2MmMxLjExIDAgMS43My0uMzcgMi4yMS0uNjQuMzctLjIzLjU5LS4zNiAxLjE0LS4zNnpNMiAxNnYyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTJIMnpcIn0sXCJjaGlsZFwiOltdfV19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC41IDMtLjE2LjAzTDE1IDUuMSA5IDMgMy4zNiA0LjljLS4yMS4wNy0uMzYuMjUtLjM2LjQ4VjIwLjVjMCAuMjguMjIuNS41LjVsLjE2LS4wM0w5IDE4LjlsNiAyLjEgNS42NC0xLjljLjIxLS4wNy4zNi0uMjUuMzYtLjQ4VjMuNWMwLS4yOC0uMjItLjUtLjUtLjV6TTE1IDE5bC02LTIuMTFWNWw2IDIuMTFWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcHNVZ2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJjMCAxLjU0LjM2IDIuOTguOTcgNC4yOUwxIDIzbDYuNzEtMS45N2MxLjMxLjYxIDIuNzUuOTcgNC4yOS45NyA1LjUyIDAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTQgMTFoLTN2M2gtMnYtM0g4di0yaDNWOGgydjNoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWRpY2FsSW5mb3JtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aC01VjRjMC0xLjEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjktMiAydjNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0tOS0zaDJ2NWgtMlY0em0wIDEySDl2Mkg3di0ySDV2LTJoMnYtMmgydjJoMnYyem0yLTEuNVYxM2g2djEuNWgtNnptMCAzVjE2aDR2MS41aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWRpY2FsU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC00VjRjMC0xLjEtLjktMi0yLTJoLTRjLTEuMSAwLTIgLjktMiAydjJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yek0xMCA0aDR2MmgtNFY0em02IDExaC0zdjNoLTJ2LTNIOHYtMmgzdi0zaDJ2M2gzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lbnVCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWMtMS4xMS0uMzUtMi4zMy0uNS0zLjUtLjUtMS45NSAwLTQuMDUuNC01LjUgMS41LTEuNDUtMS4xLTMuNTUtMS41LTUuNS0xLjVTMi40NSA0LjkgMSA2djE0LjY1YzAgLjI1LjI1LjUuNS41LjEgMCAuMTUtLjA1LjI1LS4wNUMzLjEgMjAuNDUgNS4wNSAyMCA2LjUgMjBjMS45NSAwIDQuMDUuNCA1LjUgMS41IDEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjY1IDAgMy4zNS4zIDQuNzUgMS4wNS4xLjA1LjE1LjA1LjI1LjA1LjI1IDAgLjUtLjI1LjUtLjVWNmMtLjYtLjQ1LTEuMjUtLjc1LTItMXptMCAxMy41Yy0xLjEtLjM1LTIuMy0uNS0zLjUtLjUtMS43IDAtNC4xNS42NS01LjUgMS41VjhjMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuMiAwIDIuNC4xNSAzLjUuNXYxMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDEwLjVjLjg4IDAgMS43My4wOSAyLjUuMjZWOS4yNGMtLjc5LS4xNS0xLjY0LS4yNC0yLjUtLjI0LTEuNyAwLTMuMjQuMjktNC41LjgzdjEuNjZjMS4xMy0uNjQgMi43LS45OSA0LjUtLjk5ek0xMyAxMi40OXYxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2VjExLjljLS43OS0uMTUtMS42NC0uMjQtMi41LS4yNC0xLjcgMC0zLjI0LjMtNC41Ljgzek0xNy41IDE0LjMzYy0xLjcgMC0zLjI0LjI5LTQuNS44M3YxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2di0xLjUyYy0uNzktLjE2LTEuNjQtLjI0LTIuNS0uMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi40MSAyMSA1IDE5LjU5bDQuODMtNC44M2MuNzUtLjc1IDEuMTctMS43NyAxLjE3LTIuODN2LTUuMUw5LjQxIDguNDEgOCA3bDQtNCA0IDQtMS40MSAxLjQxTDEzIDYuODN2NS4xYzAgMS4wNi40MiAyLjA4IDEuMTcgMi44M0wxOSAxOS41OSAxNy41OSAyMSAxMiAxNS40MSA2LjQxIDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaW5vckNyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgOS4wMUMxOC43MiA4LjQyIDE4LjE2IDggMTcuNSA4aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxNXY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi44NSAxMGgxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTYgMTcuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVM4LjMzIDE5IDcuNSAxOSA2IDE4LjMzIDYgMTcuNXptOSAwYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNS0xLjUtLjY3LTEuNS0xLjV6TTkuNDEgNSA4IDYuNDFsLTMtM0w2LjQxIDJsMyAzek0xNiA2LjQxIDE0LjU5IDVsMy0zTDE5IDMuNDFsLTMgM3pNMTMgNWgtMlYwaDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWlzY2VsbGFuZW91c1NlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMTcgMTMuNzEgMS40LTIuNDJjLjA5LS4xNS4wNS0uMzQtLjA4LS40NWwtMS40OC0xLjE2Yy4wMy0uMjIuMDUtLjQ1LjA1LS42OHMtLjAyLS40Ni0uMDUtLjY5bDEuNDgtMS4xNmMuMTMtLjExLjE3LS4zLjA4LS40NWwtMS40LTIuNDJjLS4wOS0uMTUtLjI3LS4yMS0uNDMtLjE1bC0xLjc0LjdjLS4zNi0uMjgtLjc1LS41MS0xLjE4LS42OWwtLjI2LTEuODVhLjM2NC4zNjQgMCAwIDAtLjM1LS4yOWgtMi44Yy0uMTcgMC0uMzIuMTMtLjM1LjNMNi44IDQuMTVjLS40Mi4xOC0uODIuNDEtMS4xOC42OWwtMS43NC0uN2MtLjE2LS4wNi0uMzQgMC0uNDMuMTVsLTEuNCAyLjQyYy0uMDkuMTUtLjA1LjM0LjA4LjQ1bDEuNDggMS4xNmMtLjAzLjIyLS4wNS40NS0uMDUuNjhzLjAyLjQ2LjA1LjY5bC0xLjQ4IDEuMTZjLS4xMy4xMS0uMTcuMy0uMDguNDVsMS40IDIuNDJjLjA5LjE1LjI3LjIxLjQzLjE1bDEuNzQtLjdjLjM2LjI4Ljc1LjUxIDEuMTguNjlsLjI2IDEuODVjLjAzLjE2LjE4LjI5LjM1LjI5aDIuOGMuMTcgMCAuMzItLjEzLjM1LS4zbC4yNi0xLjg1Yy40Mi0uMTguODItLjQxIDEuMTgtLjY5bDEuNzQuN2MuMTYuMDYuMzQgMCAuNDMtLjE1ek04LjgxIDExYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMjEuOTIgMTguNjdsLS45Ni0uNzRjLjAyLS4xNC4wNC0uMjkuMDQtLjQ0IDAtLjE1LS4wMS0uMy0uMDQtLjQ0bC45NS0uNzRjLjA4LS4wNy4xMS0uMTkuMDUtLjI5bC0uOS0xLjU1Yy0uMDUtLjEtLjE3LS4xMy0uMjgtLjFsLTEuMTEuNDVjLS4yMy0uMTgtLjQ4LS4zMy0uNzYtLjQ0bC0uMTctMS4xOGEuMjE2LjIxNiAwIDAgMC0uMjEtLjJoLTEuNzljLS4xMSAwLS4yMS4wOC0uMjIuMTlsLS4xNyAxLjE4Yy0uMjcuMTItLjUzLjI2LS43Ni40NGwtMS4xMS0uNDVhLjIzLjIzIDAgMCAwLS4yOC4xbC0uOSAxLjU1Yy0uMDUuMS0uMDQuMjIuMDUuMjlsLjk1Ljc0YTMuMTQ1IDMuMTQ1IDAgMCAwIDAgLjg4bC0uOTUuNzRjLS4wOC4wNy0uMTEuMTktLjA1LjI5bC45IDEuNTVjLjA1LjEuMTcuMTMuMjguMWwxLjExLS40NWMuMjMuMTguNDguMzMuNzYuNDRsLjE3IDEuMThjLjAyLjExLjExLjE5LjIyLjE5aDEuNzljLjExIDAgLjIxLS4wOC4yMi0uMTlsLjE3LTEuMThjLjI3LS4xMi41My0uMjYuNzUtLjQ0bDEuMTIuNDVjLjEuMDQuMjIgMCAuMjgtLjFsLjktMS41NWMuMDYtLjA5LjAzLS4yMS0uMDUtLjI4em0tNC4yOS4xNmExLjM1IDEuMzUgMCAxIDEgLjAwMS0yLjcwMSAxLjM1IDEuMzUgMCAwIDEtLjAwMSAyLjcwMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9kZU9mVHJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMzEgMTguOWMtLjk2IDEtMi4wNiAyLjAzLTMuMzEgMy4xLTUuMzMtNC41NS04LTguNDgtOC0xMS44QzQgNS4yMiA3LjggMiAxMiAyYzQgMCA3LjY0IDIuOTIgNy45NyA3LjVoMy41M0wxOSAxNGwtNC41LTQuNWgzLjQ3QzE3LjY1IDYuMjQgMTUuMTMgNCAxMiA0Yy0zLjM1IDAtNiAyLjU3LTYgNi4yIDAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0LjY0LS41OSAxLjIzLTEuMTYgMS43Ny0xLjcxYTIuNSAyLjUgMCAwIDEtLjI3LTEuMTIgMi41IDIuNSAwIDAgMSA1IDAgMi40OTIgMi40OTIgMCAwIDEtMy4xOSAyLjM5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb25leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA4aDJ2OEg1em03IDBIOWMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDZoLTF2LTRoMXY0em03LTZoLTNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xem0tMSA2aC0xdi00aDF2NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNNCA2aDE2djEySDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNHYxNmgyMFY0SDJ6bTIgMTRWNmgxNnYxMkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3BlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdjMC0xLjEtLjktMi0yLTJoLTN2MmgzdjIuNjVMMTMuNTIgMTRIMTBWOUg2Yy0yLjIxIDAtNCAxLjc5LTQgNHYzaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g0LjQ4TDE5IDEwLjM1Vjd6TTcgMTdjLS41NSAwLTEtLjQ1LTEtMWgyYzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2aDV2Mkg1ek0xOSAxM2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3NxdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDhoMTBjLjI5IDAgLjU3LjA2Ljg0LjEzLjA5LS4zMy4xNi0uNjcuMTYtMS4wNCAwLTEuMzEtLjY1LTIuNTMtMS43NC0zLjI1TDEyIDEgNy43NCAzLjg0QTMuODg3IDMuODg3IDAgMCAwIDYgNy4wOWMwIC4zNy4wNy43MS4xNiAxLjA0LjI3LS4wNy41NS0uMTMuODQtLjEzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA3YzAtMS4xLTItMy0yLTNzLTIgMS45LTIgM2MwIC43NC40IDEuMzggMSAxLjcyVjEzaC0ydi0yYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjJIM1Y4LjcyYy42LS4zNCAxLS45OCAxLTEuNzIgMC0xLjEtMi0zLTItM1MwIDUuOSAwIDdjMCAuNzQuNCAxLjM4IDEgMS43MlYyMWg5di00YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2NGg5VjguNzJjLjYtLjM0IDEtLjk4IDEtMS43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNzEgOS43MSAyMiAxMlY2aC02bDIuMjkgMi4yOS00LjE3IDQuMTdhLjk5Ni45OTYgMCAwIDEtMS40MSAwbC0xLjE3LTEuMTdhMyAzIDAgMCAwLTQuMjQgMEwyIDE2LjU5IDMuNDEgMThsNS4yOS01LjI5YS45OTYuOTk2IDAgMCAxIDEuNDEgMGwxLjE3IDEuMTdhMyAzIDAgMCAwIDQuMjQgMGw0LjE5LTQuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE11bHRpcGxlU3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDQgNCA0LTQgNFY5aC00VjdoNFY0em0tNyAzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6TTYgN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xIDEwaDR2LTJIN3YtM2wtNCA0IDQgNHYtM3ptNyAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTQgMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdXNldW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5TDEyIDIgMiA5djJoMnY5SDJ2MmgyMHYtMmgtMnYtOWgyem0tNiA3aC0ydi00bC0yIDMtMi0zdjRIOHYtN2gybDIgMyAyLTNoMnY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNeUxvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTguOTQgM0E4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMjAuOTQgMTNIMjN2LTJoLTIuMDZ6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF2aWdhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIgNC41IDIwLjI5bC43MS43MUwxMiAxOGw2Ljc5IDMgLjcxLS43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmVhck1lRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2LjM0IDIxIDNsLTMuMzQgOUwxMiA2LjM0em0xMC42MSAxMy40NEw0LjIyIDEuMzkgMi44MSAyLjgxbDUuMDcgNS4wN0wzIDkuNjl2MS40MWw3LjA3IDIuODNMMTIuOSAyMWgxLjQxbDEuODEtNC44OCA1LjA3IDUuMDcgMS40Mi0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZWFyTWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDMgMyAxMC41M3YuOThsNi44NCAyLjY1TDEyLjQ4IDIxaC45OEwyMSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodGxpZmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDVoMTRsLTYgOXY0aDJ2Mkg1di0yaDJ2LTRMMSA1em05LjEgNCAxLjQtMkg0LjQ5bDEuNCAyaDQuMjF6TTE3IDVoNXYzaC0zdjljMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM2EzIDMgMCAwIDEgMSAuMTdWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9DcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDkuMDFDMTguNzIgOC40MiAxOC4xNiA4IDE3LjUgOGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTV2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgMTBoMTAuMjlsMS4wNCAzSDUuODFsMS4wNC0zek02IDE3LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTOC4zMyAxOSA3LjUgMTkgNiAxOC4zMyA2IDE3LjV6bTkgMGMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41ek0xMiA2LjM2IDkuMTcgMy41NGwxLjQxLTEuNDFMMTIgMy41NCAxNS41NCAwbDEuNDEgMS40MUwxMiA2LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb01lYWxzT3VsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTRWNmMwLTEuNzYgMi4yNC00IDUtNHYxNi4xN2wtMi0yVjE0aC0zem00LjQ5IDkuMzFMMTAuMDIgMTIuODVjLS4zMy4wOS0uNjYuMTUtMS4wMi4xNXY5SDd2LTljLTIuMjEgMC00LTEuNzktNC00VjUuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek02LjE3IDkgNSA3LjgzVjloMS4xN3pNOSAySDd2Mi4xN2wyIDJWMnptNCA3VjJoLTJ2Ni4xN2wxLjg1IDEuODVjLjA5LS4zMy4xNS0uNjYuMTUtMS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9NZWFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE0VjZjMC0xLjc2IDIuMjQtNCA1LTR2MTYuMTdsLTItMlYxNGgtM3ptNC40OSA5LjMxTDEwLjAyIDEyLjg1Yy0uMzMuMDktLjY2LjE1LTEuMDIuMTV2OUg3di05Yy0yLjIxIDAtNC0xLjc5LTQtNFY1LjgzTC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MXpNNi4xNyA5IDUgNy44M1Y5aDEuMTd6TTkgMkg3djIuMTdsMiAyVjJ6bTQgN1YyaC0ydjYuMTdsMS44NSAxLjg1Yy4wOS0uMzMuMTUtLjY2LjE1LTEuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vVHJhbnNmZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIyIDQgNi44M1YxNmMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuMDUgMCAuMDktLjAyLjE0LS4wM2wxLjY0IDEuNjQgMS40MS0xLjQyek03LjUgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE0IDcuNSAxNHMxLjUuNjcgMS41IDEuNVM4LjMzIDE3IDcuNSAxN3pNNiAxMVY4LjgzTDguMTcgMTFINnptMi44My01TDUuNzggMi45NUM3LjI0IDIuMTYgOS40OCAyIDEyIDJjNC40MiAwIDggLjUgOCA0djEwYzAgLjM1LS4wOC42Ny0uMTkuOThMMTMuODMgMTFIMThWNkg4LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RMaXN0ZWRMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjE0IDIgNSA1LjE0IDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ni0zLjE0LTctNy03em0uODggMTMuNzVoLTEuNzVWMTRoMS43NXYxLjc1em0wLTIuODdoLTEuNzVjMC0yLjg0IDIuNjItMi42MiAyLjYyLTQuMzggMC0uOTYtLjc5LTEuNzUtMS43NS0xLjc1cy0xLjc1Ljc5LTEuNzUgMS43NUg4LjVDOC41IDYuNTcgMTAuMDcgNSAxMiA1czMuNSAxLjU3IDMuNSAzLjVjMCAyLjE5LTIuNjIgMi40MS0yLjYyIDQuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmgyTDEyIDIgNS4wNSAxMkg3bC0zLjkgNmg2LjkydjRoMy45NnYtNEgyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVkYWxCaWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguMTggMTAtMS43LTQuNjhBMi4wMDggMi4wMDggMCAwIDAgMTQuNiA0SDEydjJoMi42bDEuNDYgNGgtNC44MWwtLjM2LTFIMTJWN0g3djJoMS43NWwxLjgyIDVIOS45Yy0uNDQtMi4yMy0yLjMxLTMuODgtNC42NS0zLjk5QzIuNDUgOS44NyAwIDEyLjIgMCAxNWMwIDIuOCAyLjIgNSA1IDUgMi40NiAwIDQuNDUtMS42OSA0LjktNGg0LjJjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNSAwLTIuOC0yLjItNS01LTVoLS44MnpNNy44MiAxNmMtLjQgMS4xNy0xLjQ5IDItMi44MiAyLTEuNjggMC0zLTEuMzItMy0zczEuMzItMyAzLTNjMS4zMyAwIDIuNDIuODMgMi44MiAySDV2MmgyLjgyem02LjI4LTJoLTEuNGwtLjczLTJIMTVjLS40NC41OC0uNzYgMS4yNS0uOSAyem00LjkgNGMtMS42OCAwLTMtMS4zMi0zLTMgMC0uOTMuNDEtMS43MyAxLjA1LTIuMjhsLjk2IDIuNjQgMS44OC0uNjgtLjk3LTIuNjdjLjAzIDAgLjA2LS4wMS4wOS0uMDEgMS42OCAwIDMgMS4zMiAzIDNzLTEuMzMgMy0zLjAxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvblBpbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC4xNCAyIDUgNS4xNCA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODYtMy4xNC03LTctN3ptMCAyYTIgMiAwIDEgMSAuMDAxIDQuMDAxQTIgMiAwIDAgMSAxMiA0em0wIDEwYy0xLjY3IDAtMy4xNC0uODUtNC0yLjE1LjAyLTEuMzIgMi42Ny0yLjA1IDQtMi4wNXMzLjk4LjczIDQgMi4wNUE0Ljc4MyA0Ljc4MyAwIDAgMSAxMiAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmE5IDkgMCAwIDAtOSA5YzAgNC4xNyAyLjg0IDcuNjcgNi42OSA4LjY5TDEyIDIybDIuMzEtMi4zMUMxOC4xNiAxOC42NyAyMSAxNS4xNyAyMSAxMWE5IDkgMCAwIDAtOS05em0wIDJjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem0wIDE0LjNhNy4yIDcuMiAwIDAgMS02LTMuMjJjLjAzLTEuOTkgNC0zLjA4IDYtMy4wOCAxLjk5IDAgNS45NyAxLjA5IDYgMy4wOGE3LjIgNy4yIDAgMCAxLTYgMy4yMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVzdENvbnRyb2xSb2RlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS4zMSAxNy4zOC0yLjM5LTIuMTNjLjUyLTIuMzYtMS4zNi00LjI1LTMuNDItNC4yNS0xLjE2IDAtMy41LjktMy41IDMuNSAwIC45Ny4zOSAxLjg0IDEuMDMgMi40N2wtLjcxLjcxQTQuNDU3IDQuNDU3IDAgMCAxIDExIDE0LjVjMC0xLjcuOTYtMy4xNyAyLjM1LTMuOTNhNSA1IDAgMCAwLTIuMjgtLjU3Yy0yLjM4IDAtNC4zNyAxLjY1LTQuOTEgMy44N0EyLjk5NyAyLjk5NyAwIDAgMSA0IDExYzAtMS42NiAxLjM0LTMgMy0zaDIuNWEyLjUgMi41IDAgMCAwIDAtNUg4Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDEuNWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVIN2E1LjAwMiA1LjAwMiAwIDAgMC0xIDkuOXYuMDNDNiAxOC43MyA4LjI3IDIxIDExLjA3IDIxaDguODZjMS44NyAwIDIuODEtMi4zNCAxLjM4LTMuNjJ6TTE4IDE5Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlc3RDb250cm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTV2LTJoLTMuMDdjLS4wNS0uMzktLjEyLS43Ny0uMjItMS4xNGwyLjU4LTEuNDktMS0xLjczTDE2LjkyIDEwYy0uMjgtLjQ4LS42Mi0uOTEtLjk5LTEuMjkuMDQtLjIzLjA3LS40Ni4wNy0uNzEgMC0uOC0uMjQtMS41NS0uNjUtMi4xOEwxNyA0LjE3bC0xLjQxLTEuNDEtMS43MiAxLjcyYy0xLjY4LS44OS0zLjEtLjMzLTMuNzMgMEw4LjQxIDIuNzYgNyA0LjE3bDEuNjUgMS42NUEzLjk5IDMuOTkgMCAwIDAgOCA4YzAgLjI1LjAzLjQ4LjA3LjcyLS4zNy4zOC0uNzEuODEtLjk5IDEuMjhMNC43MSA4LjYzbC0xIDEuNzMgMi41OCAxLjQ5Yy0uMS4zNy0uMTcuNzUtLjIyIDEuMTRIM3YyaDMuMDdjLjA1LjM5LjEyLjc3LjIyIDEuMTRsLTIuNTggMS40OSAxIDEuNzNMNy4wOCAxOGMxLjA4IDEuODEgMi44OCAzIDQuOTIgM3MzLjg0LTEuMTkgNC45Mi0zbDIuMzcgMS4zNyAxLTEuNzMtMi41OC0xLjQ5Yy4xLS4zNy4xNy0uNzUuMjItMS4xNEgyMXptLTggMmgtMnYtNmgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpbkRyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4YzAtMy4zMS0yLjY5LTYtNi02UzYgNC42OSA2IDhjMCA0LjUgNiAxMSA2IDExczYtNi41IDYtMTF6bS04IDBjMC0xLjEuOS0yIDItMnMyIC45IDIgMmEyIDIgMCAxIDEtNCAwek01IDIwdjJoMTR2LTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6bTAgOS41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbHVtYmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjI4IDQuOTMtMi4xMi0yLjEyYy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMEwxMS41IDUuNjRsMi4xMiAyLjEyIDIuMTItMi4xMiAzLjU0IDMuNTRhMy4wMTIgMy4wMTIgMCAwIDAgMC00LjI1ek01LjQ5IDEzLjc3Yy41OS41OSAxLjU0LjU5IDIuMTIgMGwyLjQ3LTIuNDctMi4xMi0yLjEzLTIuNDcgMi40N2MtLjU5LjU5LS41OSAxLjU0IDAgMi4xM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuMDQgNy43Ni0uNzEuNzEtLjcxLjcxTDEwLjQ0IDZjLS41OS0uNi0xLjU0LS42LTIuMTItLjAxYTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsMy4xOCAzLjE4LS43MS43MS02LjM2IDYuMzZjLS43OC43OC0uNzggMi4wNSAwIDIuODMuNzguNzggMi4wNS43OCAyLjgzIDBMMTYuNDUgMTJhLjk5Ni45OTYgMCAxIDAgMS40MS0xLjQxbC0yLjgyLTIuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhaWx3YXlBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOGE3IDcgMCAwIDAtMTEuOTUtNC45NUEzMy44IDMzLjggMCAwIDAgOSAzYy00LjQyIDAtOCAuNS04IDR2MTAuNUEzLjUgMy41IDAgMCAwIDQuNSAyMUwzIDIyLjV2LjVoMTJ2LS41TDEzLjUgMjFhMy41IDMuNSAwIDAgMCAzLjUtMy41di0yLjU4QTcgNyAwIDAgMCAyMyA4ek0zIDEyVjdoNi4wOGE2Ljk2IDYuOTYgMCAwIDAgMS4xOCA1SDN6bTYgN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTcuNzEtNi4wNi0uMi4wM0wxNiAxM2wtLjQ3LS4wMi0uMTYtLjAyLS4yOS0uMDQtLjItLjA0LS4yMi0uMDZhMS41NSAxLjU1IDAgMCAxLS4yMy0uMDdsLS4xMy0uMDVBNC45OSA0Ljk5IDAgMCAxIDExLjEgN2MuMDQtLjE5LjA5LS4zNy4xNS0uNTRsLjA1LS4xNC4xNS0uMzguMDctLjE1LjItLjM2LjA3LS4xMi4zLS40Mi4wMi0uMDJjLjI0LS4zLjUyLS41Ny44Mi0uODFsLjAxLS4wMS40Ni0uMzIuMDMtLjAyQTUuMjUgNS4yNSAwIDAgMSAxNiAzYTUgNSAwIDAgMSAuNzEgOS45NHpNMTUgNGgydjVoLTJ6bTAgNmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhbWVuRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2SDhWNC42NWwxLS4xMlY2em0wIDZIOFY3aDF2NXpNNiA3aDF2NUg2Vjd6bTAtMi4xMiAxLS4xMlY2SDZWNC44OHpNMjIgM1YyTDUgNHY4SDJjMCAzLjY5IDIuNDcgNi44NiA2IDguMjVWMjJoOHYtMS43NWMzLjUzLTEuMzkgNi00LjU2IDYtOC4yNUgxMFY3aDEyVjZIMTBWNC40MUwyMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYW1wTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIxaC0yVjYuODNMOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzVjljMCA0LjI3IDQuMDMgNy4xMyA2IDguMjdsLTEuNDYgMS40NmMtMS45MS0xLjE2LTMuNDQtMi41My00LjU0LTQuMDJWMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhbXBSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIxaDJWNi44M2wxLjU5IDEuNTlMMTYgN2wtNC00LTQgNCAxLjQxIDEuNDFMMTEgNi44M1Y5YzAgNC4yNy00LjAzIDcuMTMtNiA4LjI3bDEuNDYgMS40NkM4LjM3IDE3LjU2IDkuOSAxNi4xOSAxMSAxNC43VjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYXRlUmV2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMTUuMzUgNi40MS0xLjc3LTEuNzdjLS4yLS4yLS41MS0uMi0uNzEgMEw2IDExLjUzVjE0aDIuNDdsNi44OC02Ljg4Yy4yLS4xOS4yLS41MSAwLS43MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgMTR2LTIuNDdsNi44OC02Ljg4Yy4yLS4yLjUxLS4yLjcxIDBsMS43NyAxLjc3Yy4yLjIuMi41MSAwIC43MUw4LjQ3IDE0SDZ6bTEyIDBoLTcuNWwyLTJIMTh2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlUm9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoMnY5aC0yek00IDRoMnYxNkg0ek0xMSA0aDJ2NGgtMnpNMTEgMTBoMnY0aC0yek0xMSAxNmgydjRoLTJ6TTIyLjUgMTYuNDEgMjEuMDkgMTUgMTkgMTcuMDkgMTYuOTEgMTVsLTEuNDEgMS40MSAyLjA5IDIuMDktMi4wOSAyLjA5TDE2LjkxIDIyIDE5IDE5LjkxIDIxLjA5IDIybDEuNDEtMS40MS0yLjA5LTIuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RhdXJhbnRNZW51IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC4xIDEzLjM0IDIuODMtMi44M0wzLjkxIDMuNWE0LjAwOCA0LjAwOCAwIDAgMCAwIDUuNjZsNC4xOSA0LjE4em02Ljc4LTEuODFjMS41My43MSAzLjY4LjIxIDUuMjctMS4zOCAxLjkxLTEuOTEgMi4yOC00LjY1LjgxLTYuMTItMS40Ni0xLjQ2LTQuMi0xLjEtNi4xMi44MS0xLjU5IDEuNTktMi4wOSAzLjc0LTEuMzggNS4yN0wzLjcgMTkuODdsMS40MSAxLjQxTDEyIDE0LjQxbDYuODggNi44OCAxLjQxLTEuNDFMMTMuNDEgMTNsMS40Ny0xLjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXN0YXVyYW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOUg5VjJIN3Y3SDVWMkgzdjdjMCAyLjEyIDEuNjYgMy44NCAzLjc1IDMuOTdWMjJoMi41di05LjAzQzExLjM0IDEyLjg0IDEzIDExLjEyIDEzIDlWMmgtMnY3em01LTN2OGgyLjV2OEgyMVYyYy0yLjc2IDAtNSAyLjI0LTUgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm91bmRhYm91dExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wOCA4QTYgNiAwIDAgMSAxNiAzYzMuMzEgMCA2IDIuNjkgNiA2IDAgMi45Ny0yLjE2IDUuNDQtNSA1LjkyVjIxaC0ydi02LjA5YzAtLjk4LjcxLTEuOCAxLjY3LTEuOTdhMy45OTkgMy45OTkgMCAxIDAtNC42MS00LjYxYy0uMTcuOTYtLjk5IDEuNjctMS45NyAxLjY3SDUuODNsMS41OSAxLjU5TDYgMTMgMiA5bDQtNCAxLjQxIDEuNDFMNS44MyA4aDQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdW5kYWJvdXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDhDMTMuNDQgNS4xNiAxMC45NyAzIDggMyA0LjY5IDMgMiA1LjY5IDIgOWMwIDIuOTcgMi4xNiA1LjQ0IDUgNS45MlYyMWgydi02LjA5YzAtLjk4LS43MS0xLjgtMS42Ny0xLjk3YTMuOTk5IDMuOTk5IDAgMSAxIDQuNjEtNC42MWMuMTcuOTYuOTkgMS42NyAxLjk3IDEuNjdoNC4yNmwtMS41OSAxLjU5TDE4IDEzbDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDhoLTQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTUuMThWN2MwLTIuMjEtMS43OS00LTQtNHMtNCAxLjc5LTQgNHYxMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWOC44MkM4LjE2IDguNCA5IDcuMyA5IDZjMC0xLjY2LTEuMzQtMy0zLTNTMyA0LjM0IDMgNmMwIDEuMy44NCAyLjQgMiAyLjgyVjE3YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRWN2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjguMThBMi45OTYgMi45OTYgMCAwIDAgMTggMjFjMS42NiAwIDMtMS4zNCAzLTMgMC0xLjMtLjg0LTIuNC0yLTIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJ1bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEuNSA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTIuNSA2Yy0uNyAwLTIuMDEtLjU0LTIuOTEtMS43NmwtLjQxIDIuMzVMMTQgMTQuMDNWMThoLTF2LTMuNThsLTEuMTEtMS4yMS0uNTIgMi42NC0zLjc3LS43Ny4yLS45OCAyLjc4LjU3Ljk2LTQuODktMS41NC41N1YxMkg5VjkuNjVsMy4yOC0xLjIxYy40OS0uMTggMS4wMy4wNiAxLjI2LjUzLjgzIDEuNyAyLjA1IDIuMDMgMi40NiAyLjAzdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhZmV0eUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptMCAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTEuNjUtMi42NUwxMS41IDEyLjJWOWgxdjIuNzlsMS44NSAxLjg1LS43LjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYWlsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTMuNVYyTDMgMTMuNWg4em0xMCAwQzIxIDYuNSAxNC41IDEgMTIuNSAxYzAgMCAxIDMgMSA2LjVzLTEgNi0xIDZIMjF6bTEgMS41SDJhNi4yMzMgNi4yMzMgMCAwIDAgMi4zMyAzLjczYy42NS0uMjcgMS4yMi0uNzIgMS42Ny0xLjIzLjczLjg0IDEuOCAxLjUgMyAxLjVzMi4yNy0uNjYgMy0xLjVjLjczLjg0IDEuOCAxLjUgMyAxLjVzMi4yNi0uNjYgMy0xLjVjLjQ1LjUxIDEuMDIuOTYgMS42NyAxLjIzIDEuMTctLjg5IDIuMDItMi4yIDIuMzMtMy43M3ptMCA4di0yaC0xYy0xLjA0IDAtMi4wOC0uMzUtMy0xLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0xLjgzIDEuMy00LjE3IDEuMy02IDAtLjkxLjY1LTEuOTYgMS0zIDFIMnYyaDFjMS4wMyAwIDIuMDUtLjI1IDMtLjc1IDEuODkgMSA0LjExIDEgNiAwIDEuODkgMSA0LjExIDEgNiAwIC45NS41IDEuOTcuNzUgMyAuNzVoMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2F0ZWxsaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTUgNC45OWgzQzggNi42NSA2LjY2IDggNSA4VjQuOTl6TTUgMTJ2LTJjMi43NiAwIDUtMi4yNSA1LTUuMDFoMkMxMiA4Ljg2IDguODcgMTIgNSAxMnptMCA2IDMuNS00LjUgMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5Sb3RhdGlvbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQgNy41OSA1LTVjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBMMjAuMjQgMTFoLTIuODNMMTAuNCA0IDUuNDEgOUg4djJIMlY1aDJ2Mi41OXpNMjAgMTloMnYtNmgtNnYyaDIuNTlsLTQuOTkgNS03LjAxLTdIMy43Nmw4LjQxIDguNDFjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDUtNVYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0TWVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjA1IDE3LjU2LTE3Ljk3Ljk0TDMgMTdsMTcuOTgtLjk0LjA3IDEuNXpNMjEgMTkuNDhIM3YxLjVoMTh2LTEuNXpNMjIgNXY3YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxNmMxLjEgMCAyIC45IDIgMnptLTIgMWMtMS42OCAwLTMuMDQuOTgtMy4yMSAyLjIzLS42NC0uNzMtMi43My0yLjczLTYuNTQtMi43My00LjY3IDAtNi43NSAzLTYuNzUgM3MyLjA4IDMgNi43NSAzYzMuODEgMCA1LjktMiA2LjU0LTIuNzNDMTYuOTYgMTAuMDIgMTguMzIgMTEgMjAgMTFWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbnBvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMGg1bDMtMy0zLTNoLTVWMmgtMnYySDR2Nmg3djJINmwtMyAzIDMgM2g1djRoMnYtNGg3di02aC03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbm93bW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTdjMCAuNTUtLjQ1IDEtMSAxaC0uMTdsLTIuMi0yLjJDMjAuNTggMTUuMzcgMjIgMTQuNCAyMiAxM2MwLTEtOC04LTgtOGgtM3YyaDIuMjVsMS40NSAxLjNMMTEgMTFsLTkuNS0xTDAgMTNsNC41NCAxLjM2LTMuNDkgMS44OEMtLjc3IDE3LjIyLS4wNyAyMCAyIDIwaDZjMi4yMSAwIDQtMS43OSA0LTRoNGwyIDJoLTN2Mmg2YzEuNjYgMCAzLTEuMzQgMy0zaC0yek04IDE4SDJsNS4yNS0yLjgzTDEwIDE2YTIgMiAwIDAgMS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgN2gtM2MtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDNjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCA4aC0zVjloM3Y2ek0xIDE1aDR2LTJIM2MtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDR2MkgzdjJoMmMxLjEgMCAyIC45IDIgMnYyYzAgMS4xLS45IDItMiAySDF2LTJ6bTE2IDBoNHYtMmgtMmMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDR2MmgtNHYyaDJjMS4xIDAgMiAuOSAyIDJ2MmMwIDEuMS0uOSAyLTIgMmgtNHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU291cEtpdGNoZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQgN2MtLjM0LjU1LS40Ljk3LS40IDEuMzhDNiA5LjE1IDcgMTEgNyAxMmMwIC45NS0uNCAxLjUtLjQgMS41SDUuMXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgxLjV6bTUgMGMtLjM0LjU1LS40Ljk3LS40IDEuMzggMCAuNzcgMSAyLjYyIDEgMy42MiAwIC45NS0uNCAxLjUtLjQgMS41aDEuNXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgtMS41ek04LjE1IDdjLS4zNC41NS0uNC45Ny0uNCAxLjM4IDAgLjc3IDEgMi42MyAxIDMuNjIgMCAuOTUtLjQgMS41LS40IDEuNWgxLjVzLjQtLjU1LjQtMS41YzAtMS0xLTIuODUtMS0zLjYyIDAtLjQxLjA2LS44My40LTEuMzhoLTEuNXptMTMuMzItLjVzLjEzLTEuMDYuMTMtMS41YzAtMS42NS0xLjM1LTMtMy0zLTEuNTQgMC0yLjgxIDEuMTYtMi45OCAyLjY1TDE0LjUzIDE1SDQuMDFjLS42IDAtMS4wOS41My0xIDEuMTNDMy41MyAxOS40NiA2LjM5IDIyIDkuNzUgMjJjMy40OCAwIDYuMzQtMi43MyA2LjcxLTYuMjNMMTcuNjEgNC45Yy4wNS0uNTEuNDctLjkuOTktLjkuNTUgMCAxIC40NSAxIDEgMCAuMy0uMSAxLjI1LS4xIDEuMjVsMS45Ny4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhZGl1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNSAzIDdWM2w0IDJ6bTExLTJ2NGw0LTItNC0yem0tNy0xdjRsNC0yLTQtMnptLTYgOC4wNGMxLjM4LjQ5IDMuNzcuOTYgNyAuOTZzNS42Mi0uNDcgNy0uOTZDMTkgOS44NiAxNi4yMiA5IDEyIDlzLTcgLjg2LTcgMS4wNHpNMTUgMTdIOXY0Ljg4Yy00LjA2LS4zOS03LTEuNTQtNy0yLjg4di05YzAtMS42NiA0LjQ4LTMgMTAtM3MxMCAxLjM0IDEwIDN2OWMwIDEuMzQtMi45NCAyLjQ4LTcgMi44N1YxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcmVNYWxsRGlyZWN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0djJoMTZWNHptMSAxMHYtMmwtMS01SDRsLTEgNXYyaDF2NmgxMHYtNmg0djZoMnYtNmgxem0tOSA0SDZ2LTRoNnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJhaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDYuODMgOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzVjIxaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJlZXR2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNTYgMTQuMzNjLS4zNC4yNy0uNTYuNy0uNTYgMS4xN1YyMWg3YzEuMSAwIDItLjkgMi0ydi01Ljk4Yy0uOTQtLjMzLTEuOTUtLjUyLTMtLjUyLTIuMDMgMC0zLjkzLjctNS40NCAxLjgzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDZjMC0xLjA4LjI3LTIuMS43NC0zSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgLjU1LjIzIDEuMDUuNTkgMS40MWw5LjgyLTkuODJBNi40MzUgNi40MzUgMCAwIDEgMTEuNSA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdWJ3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMHYyNGgyNFYwSDB6bTIyIDIySDJWOC44NkMyIDYuMDUgMy41MyAzLjg0IDYuMiAyLjggOCAyLjA5IDEwLjE0IDIgMTIgMmMxLjg2IDAgNCAuMDkgNS44LjhDMjAuNDcgMy44NCAyMiA2LjA1IDIyIDguODZWMjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMSA5aDEwdjVoLTEwek0xNy44IDIuOEMxNiAyLjA5IDEzLjg2IDIgMTIgMmMtMS44NiAwLTQgLjA5LTUuOC44QzMuNTMgMy44NCAyIDYuMDUgMiA4Ljg2VjIyaDIwVjguODZjMC0yLjgxLTEuNTMtNS4wMi00LjItNi4wNnptLjIgMTMuMDhjMCAxLjQ1LTEuMTggMi42Mi0yLjYzIDIuNjJsMS4xMyAxLjEyVjIwSDE1bC0xLjUtMS41aC0yLjgzTDkuMTcgMjBINy41di0uMzhsMS4xMi0xLjEyQzcuMTggMTguNSA2IDE3LjMyIDYgMTUuODhWOWMwLTIuNjMgMy0zIDYtMyAzLjMyIDAgNiAuMzggNiAzdjYuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5bmFnb2d1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgOHYxM2g0di01YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2NWg0VjhsLTYtNS02IDV6bTcuNSAyYzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41ek0zIDVjLTEuMSAwLTIgLjktMiAydjFoNFY3YzAtMS4xLS45LTItMi0yek0xIDloNHYxMkgxek0yMSA1Yy0xLjEgMC0yIC45LTIgMnYxaDRWN2MwLTEuMS0uOS0yLTItMnpNMTkgOWg0djEyaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWtlb3V0RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuMjYgMTFoMTMuNDhsLS42NyA5SDUuOTNsLS42Ny05em0zLjc2LTdoNS45NUwxOSA3LjM4bDEuNTktMS41OUwyMiA3LjIxIDE5LjIxIDEwSDQuNzlMMiA3LjIxIDMuNDEgNS44IDUgNy4zOCA5LjAyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRheGlBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOEE3IDcgMCAwIDAgOS42OCA1SDd2Mkg0LjVhMS41IDEuNSAwIDAgMC0xLjQyIDEuMDFMMSAxNHY4YTEgMSAwIDAgMCAxIDFoMWExIDEgMCAwIDAgMS0xdi0xaDEydjFhMSAxIDAgMCAwIDEgMWgxYTEgMSAwIDAgMCAxLTF2LTcuNjhBNy4wMSA3LjAxIDAgMCAwIDIzIDh6bS0xOC41LjVoNC41M2E2LjkzIDYuOTMgMCAwIDAgMi4wOCA0LjVIM2wxLjUtNC41em0wIDkuNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptMTEgMGExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptMi45My01LjYzLS4yMS4xMS0uMTguMDlhNC45NyA0Ljk3IDAgMCAxLS40Mi4xNmwtLjIyLjA3LS4yMy4wNi0uMi4wNWE1IDUgMCAwIDEtNS45NC00LjQxQTQuMDcgNC4wNyAwIDAgMSAxMSA4bC4wMi0uNDcuMDItLjE3LjA0LS4yOC4wNC0uMjEuMDUtLjIxLjA3LS4yNC4wNS0uMTNhNC45OSA0Ljk5IDAgMCAxIDkuNjkgMS43IDQuOTYgNC45NiAwIDAgMS0yLjU1IDQuMzh6TTE1IDRoMnY1aC0yem0wIDZoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZW1wbGVCdWRkaGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDkuMDJjMCAxLjA5LS44OSAxLjk4LTEuOTggMS45OEg0Ljk4QzMuODkgMTEgMyAxMC4xMSAzIDkuMDJIMWMwIDEuODYgMS4yOCAzLjQgMyAzLjg0VjIyaDZ2LTNjMC0xLjEuOS0yIDItMnMyIC45IDIgMnYzaDZ2LTkuMTRjLjU1LS4xNCAzLTEuMDQgMy0zLjg2bC0yIC4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA4Ljg2VjEwaDEyVjguODZjLjU1LS4xNCAzLTEuMDQgMy0zLjg2bC0yIC4wMkMxOSA2LjExIDE4LjExIDcgMTcuMDIgN0g2Ljk4QzUuODkgNyA1IDYuMTEgNSA1LjAySDNjMCAxLjg1IDEuMjggMy40IDMgMy44NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSA4LjI1IDZoNy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZW1wbGVIaW5kdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNiAxMWgxMC44bC0uOS0zaC05ek0yMCAxMXYySDR2LTJIMnYxMWg4di01aDR2NWg4VjExek0xNS45IDYgMTUgM1YxaC0ydjJoLTIuMDNWMWgtMnYyLjEyTDguMSA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXJyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0zLjc1IDUgMi44NSAzLjgtMS42IDEuMkM5LjgxIDEzLjc1IDcgMTAgNyAxMGwtNiA4aDIyTDE0IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRoZWF0ZXJDb21lZHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2LjVDMiAxOS41NCA0LjQ2IDIyIDcuNSAyMnM1LjUtMi40NiA1LjUtNS41VjEwSDJ2Ni41em01LjUgMkM2LjEyIDE4LjUgNSAxNy44MyA1IDE3aDVjMCAuODMtMS4xMiAxLjUtMi41IDEuNXpNMTAgMTNjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptLTUgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAzdjZoM3YyLjVjMC0uODMgMS4xMi0xLjUgMi41LTEuNXMyLjUuNjcgMi41IDEuNWgtNXYyLjg5Yy43NS4zOCAxLjYuNjEgMi41LjYxIDMuMDQgMCA1LjUtMi40NiA1LjUtNS41VjNIMTF6bTMgNS4wOGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDFjMCAuNTYtLjQ1IDEtMSAxem01IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxYzAgLjU2LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGlyZVJlcGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDdhMS4wMDMgMS4wMDMgMCAwIDAgMS43MS43MWMuNC0uNCAxLjA0LTIuNDYgMS4wNC0yLjQ2cy0yLjA2LjY0LTIuNDYgMS4wNGMtLjE4LjE4LS4yOS40My0uMjkuNzF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJjLTIuNzYgMC01IDIuMjQtNSA1IDAgMi4wNSAxLjIzIDMuODEgMyA0LjU4VjEzaDF2NWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXYtMmEzLjAwOSAzLjAwOSAwIDAgMC00LTIuODNWNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDZjMS4xIDAgMi0uOSAyLTJ2LTNjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjJjMCAxLjY1IDEuMzUgMyAzIDNzMy0xLjM1IDMtM3YtNWgxdi0xLjQyYzEuNzctLjc3IDMtMi41MyAzLTQuNTggMC0yLjc2LTIuMjQtNS01LTV6TTYgMTkuNWwtMi0ydi0yLjgzbDIgMnYyLjgzem0wLTUtMi0yVjkuNjdsMiAydjIuODN6bTAtNS0yLTJWNC42N2wyIDJWOS41em00IDgtMiAydi0yLjgzbDItMnYyLjgzem0wLTUtMiAydi0yLjgzbDItMnYyLjgzem0wLTUtMiAyVjYuNjdsMi0yVjcuNXptOSAyLjVjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFmZmljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTBoLTNWOC44NmMxLjcyLS40NSAzLTIgMy0zLjg2aC0zVjRjMC0uNTUtLjQ1LTEtMS0xSDhjLS41NSAwLTEgLjQ1LTEgMXYxSDRjMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMTBINGMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYxNUg0YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjIwYzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xdi0xLjE0YzEuNzItLjQ1IDMtMiAzLTMuODZoLTN2LTEuMTRjMS43Mi0uNDUgMy0yIDMtMy44NnptLTggOWEyIDIgMCAxIDEtLjAwMS0zLjk5OUEyIDIgMCAwIDEgMTIgMTl6bTAtNWEyIDIgMCAxIDEtLjAwMS0zLjk5OUEyIDIgMCAwIDEgMTIgMTR6bTAtNWEyIDIgMCAwIDEtMi0yYzAtMS4xMS44OS0yIDItMmEyIDIgMCAxIDEgMCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgyLjIzbDItMkgxNGwyIDJoMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6TTcuNSAxN2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTQgNy41IDE0czEuNS42NyAxLjUgMS41UzguMzMgMTcgNy41IDE3em0zLjUtN0g2VjZoNXY0em0yIDBWNmg1djRoLTV6bTMuNSA3Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTYuOTRWOC41YzAtMi43OS0yLjYxLTMuNC02LjAxLTMuNDlsLjc2LTEuNTFIMTdWMkg3djEuNWg0Ljc1bC0uNzYgMS41MkM3Ljg2IDUuMTEgNSA1LjczIDUgOC41djguNDRjMCAxLjQ1IDEuMTkgMi42NiAyLjU5IDIuOTdMNiAyMS41di41aDIuMjNsMi0ySDE0bDIgMmgydi0uNUwxNi41IDIwaC0uMDhjMS42OSAwIDIuNTgtMS4zNyAyLjU4LTMuMDZ6bS03IDEuNTZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em01LTQuNUg3VjloMTB2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNmZXJXaXRoaW5BU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ5IDE1LjV2LTEuNzVMMTQgMTYuMjVsMi40OSAyLjVWMTdIMjJ2LTEuNXptMy4wMiA0LjI1SDE0djEuNWg1LjUxVjIzTDIyIDIwLjUgMTkuNTEgMTh6TTkuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek01Ljc1IDguOSAzIDIzaDIuMWwxLjc1LThMOSAxN3Y2aDJ2LTcuNTVMOC45NSAxMy40bC42LTNDMTAuODUgMTIgMTIuOCAxMyAxNSAxM3YtMmMtMS44NSAwLTMuNDUtMS00LjM1LTIuNDVsLS45NS0xLjZDOS4zNSA2LjM1IDguNyA2IDggNmMtLjI1IDAtLjUuMDUtLjc1LjE1TDIgOC4zVjEzaDJWOS42NWwxLjc1LS43NVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFuc2l0RW50ZXJleGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMThINlY4aDN2NC43N0wxNS45OCA2IDE4IDguMDMgMTEuMTUgMTVIMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJpcE9yaWdpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEyQzIgNi40OCA2LjQ4IDIgMTIgMnMxMCA0LjQ4IDEwIDEwLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyem0xMCA2YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVybkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02LjgzIDExIDEuNTkgMS41OUw3IDE0bC00LTQgNC00IDEuNDEgMS40MUw2LjgzIDlIMTVjMS4xIDAgMiAuOSAyIDJ2OWgtMnYtOUg2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdXJuUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4xNyAxMS0xLjU5IDEuNTlMMTcgMTRsNC00LTQtNC0xLjQxIDEuNDFMMTcuMTcgOUg5Yy0xLjEgMC0yIC45LTIgMnY5aDJ2LTloOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVyblNoYXJwTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNi44MyA0LjQxIDguNDEgMyA3bDQtNCA0IDQtMS40MSAxLjQxTDggNi44M1YxM2g4YzEuMSAwIDIgLjkgMiAydjZoLTJ2LTZIOGMtMS4xIDAtMi0uOS0yLTJWNi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVyblNoYXJwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA2LjgzIDEuNTkgMS41OUwyMSA3bC00LTQtNCA0IDEuNDEgMS40MUwxNiA2LjgzVjEzSDhjLTEuMSAwLTIgLjktMiAydjZoMnYtNmg4YzEuMSAwIDItLjkgMi0yVjYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1cm5TbGlnaHRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNjYgNlY0SDZ2NS42NmgyVjcuNDFsNSA1VjIwaDJ2LTcuNThjMC0uNTMtLjIxLTEuMDQtLjU5LTEuNDFsLTUtNWgyLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdXJuU2xpZ2h0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4zNCA2VjRIMTh2NS42NmgtMlY3LjQxbC01IDVWMjBIOXYtNy41OGMwLS41My4yMS0xLjA0LjU5LTEuNDFsNS01aC0yLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUd29XaGVlbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTFjLS4xOCAwLS4zNi4wMy0uNTMuMDVMMTcuNDEgOUgyMFY2bC0zLjcyIDEuODZMMTMuNDEgNUg5djJoMy41OWwyIDJIMTFsLTQgMi0yLTJIMHYyaDRjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNGwyIDJoM2wzLjQ5LTYuMSAxLjAxIDEuMDFjLS45MS43My0xLjUgMS44NC0xLjUgMy4wOSAwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00LTEuNzktNC00LTR6TTQgMTdjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0xNiAwYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVVR1cm5MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOXYxMmgtMlY5YzAtMi4yMS0xLjc5LTQtNC00UzggNi43OSA4IDl2NC4xN2wxLjU5LTEuNTlMMTEgMTNsLTQgNC00LTQgMS40MS0xLjQxTDYgMTMuMTdWOWMwLTMuMzEgMi42OS02IDYtNnM2IDIuNjkgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA5djEyaDJWOWMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0djQuMTdsLTEuNTktMS41OUwxMyAxM2w0IDQgNC00LTEuNDEtMS40MUwxOCAxMy4xN1Y5YzAtMy4zMS0yLjY5LTYtNi02UzYgNS42OSA2IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvbHVudGVlckFjdGl2aXNtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxMWg0djExSDF6TTE2IDMuMjVDMTYuNjUgMi40OSAxNy42NiAyIDE4LjcgMiAyMC41NSAyIDIyIDMuNDUgMjIgNS4zYzAgMi4yNy0yLjkxIDQuOS02IDcuNy0zLjA5LTIuODEtNi01LjQ0LTYtNy43QzEwIDMuNDUgMTEuNDUgMiAxMy4zIDJjMS4wNCAwIDIuMDUuNDkgMi43IDEuMjV6TTIwIDE3aC03bC0yLjA5LS43My4zMy0uOTRMMTMgMTZoMi44MmMuNjUgMCAxLjE4LS41MyAxLjE4LTEuMTggMC0uNDktLjMxLS45My0uNzctMS4xMUw4Ljk3IDExSDd2OS4wMkwxNCAyMmw4LjAxLTNjLS4wMS0xLjEtLjktMi0yLjAxLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhcmVob3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIxVjdMMTIgMyAyIDd2MTRoNXYtOWgxMHY5aDV6bS0xMS0ySDl2Mmgydi0yem0yLTNoLTJ2Mmgydi0yem0yIDNoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaW5lQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzdjZjMCAyLjk3IDIuMTYgNS40MyA1IDUuOTFWMTlIOHYyaDh2LTJoLTN2LTQuMDljMi44NC0uNDggNS0yLjk0IDUtNS45MVYzSDZ6bTEwIDVIOFY1aDh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV3JvbmdMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwVjMuMjZjLS42NS0uMTctMS4zMi0uMjYtMi0uMjYtNC4yIDAtOCAzLjIyLTggOC4yIDAgMy4zMiAyLjY3IDcuMjUgOCAxMS44IDUuMzMtNC41NSA4LTguNDggOC0xMS44IDAtLjQxLS4wNC0uODEtLjA5LTEuMkgxNHptLTIgM2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjU0IDIuODgtMS40Mi0xLjQyTDE5IDMuNTlsLTIuMTItMi4xMy0xLjQyIDEuNDJMMTcuNTkgNWwtMi4xMyAyLjEyIDEuNDIgMS40MkwxOSA2LjQxbDIuMTIgMi4xMyAxLjQyLTEuNDJMMjAuNDEgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kWm9vbUluTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA5VjNIN3YyLjU5TDMuOTEgMi41IDIuNSAzLjkxIDUuNTkgN0gzdjJoNnptMTIgMFY3aC0yLjU5bDMuMDktMy4wOS0xLjQxLTEuNDFMMTcgNS41OVYzaC0ydjZoNnpNMyAxNXYyaDIuNTlMMi41IDIwLjA5bDEuNDEgMS40MUw3IDE4LjQxVjIxaDJ2LTZIM3ptMTIgMHY2aDJ2LTIuNTlsMy4wOSAzLjA5IDEuNDEtMS40MUwxOC40MSAxN0gyMXYtMmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kWm9vbU91dE1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDMgMi4zIDIuMy0yLjg5IDIuODcgMS40MiAxLjQyTDE4LjcgNi43IDIxIDlWM2gtNnpNMyA5bDIuMy0yLjMgMi44NyAyLjg5IDEuNDItMS40Mkw2LjcgNS4zIDkgM0gzdjZ6bTYgMTItMi4zLTIuMyAyLjg5LTIuODctMS40Mi0xLjQyTDUuMyAxNy4zIDMgMTV2Nmg2em0xMi02LTIuMyAyLjMtMi44Ny0yLjg5LTEuNDIgMS40MiAyLjg5IDIuODdMMTUgMjFoNnYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkSG9tZVdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMS42OFYxMUw4IDZsLTcgNXYxMGg1di02aDR2NmgxLjY4Yy0uNDMtLjkxLS42OC0xLjkyLS42OC0zIDAtMi43OSAxLjY0LTUuMTkgNC02LjMyek0yMyAxMy4xMVYzSDEwdjEuOTdsNyA1djEuMTFjLjMzLS4wNS42Ni0uMDggMS0uMDggMS45NiAwIDMuNzMuODEgNSAyLjExek0xNyA3aDJ2MmgtMlY3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxOGMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNSAyLjI0IDUgNSA1IDUtMi4yNCA1LTV6bS01LjUgM3YtMi41SDE1di0xaDIuNVYxNWgxdjIuNUgyMXYxaC0yLjVWMjFoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcFNldHRpbmdzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuODEgMTIuNzQtLjgyLS42M3YtLjIybC44LS42M2MuMTYtLjEyLjItLjM0LjEtLjUxbC0uODUtMS40OGEuMzk1LjM5NSAwIDAgMC0uMzUtLjJjLS4wNSAwLS4xLjAxLS4xNS4wM2wtLjk1LjM4Yy0uMDgtLjA1LS4xMS0uMDctLjE5LS4xMWwtLjE1LTEuMDFhLjQwOC40MDggMCAwIDAtLjQtLjM2aC0xLjcxYy0uMiAwLS4zNy4xNS0uNC4zNGwtLjE0IDEuMDFjLS4wMy4wMi0uMDcuMDMtLjEuMDVsLS4wOS4wNi0uOTUtLjM4YS40MDEuNDAxIDAgMCAwLS41LjE3bC0uODUgMS40OGMtLjEuMTctLjA2LjM5LjEuNTFsLjguNjN2LjIzbC0uOC42M2EuMzkuMzkgMCAwIDAtLjEuNTFsLjg1IDEuNDhjLjA3LjEzLjIxLjIuMzUuMi4wNSAwIC4xLS4wMS4xNS0uMDNsLjk1LS4zN2MuMDguMDUuMTIuMDcuMi4xMWwuMTUgMS4wMWMuMDMuMi4yLjM0LjQuMzRoMS43MWMuMiAwIC4zNy0uMTUuNC0uMzRsLjE1LTEuMDFjLjAzLS4wMi4wNy0uMDMuMS0uMDVsLjA5LS4wNi45NS4zOGEuNDAxLjQwMSAwIDAgMCAuNS0uMTdsLjg1LTEuNDhhLjM5LjM5IDAgMCAwLS4xLS41MXpNMTggMTMuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTE3IDE3aDJ2NGMwIDEuMS0uOSAyLTIgMkg3Yy0xLjEgMC0yLS45LTItMlYzYzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDJ2NGgtMlY2SDd2MTJoMTB2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcHNPdXRhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDhoNFY0SDR2NHptNiAxMmg0di00aC00djR6bS02IDBoNHYtNEg0djR6bTAtNmg0di00SDR2NHptNiAwaDR2LTRoLTR2NHptNiA2aDR2LTRoLTR2NHptMy0yMGMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS41IDhoLTFWN2gxdjF6bTAtMmgtMVYyaDF2NHpNMTYgMTRoNHYtMi4wN2MtLjMzLjA1LS42Ni4wNy0xIC4wNy0xLjA3IDAtMi4wOS0uMjQtMy0uNjhWMTR6TTEwIDR2NGgyLjY4Yy0uNDQtLjkxLS42OC0xLjkzLS42OC0zIDAtLjM0LjAyLS42Ny4wNy0xSDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcHBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA4aDRWNEg0djR6bTYgMTJoNHYtNGgtNHY0em0tNiAwaDR2LTRINHY0em0wLTZoNHYtNEg0djR6bTYgMGg0di00aC00djR6bTYtMTB2NGg0VjRoLTR6bS02IDRoNFY0aC00djR6bTYgNmg0di00aC00djR6bTAgNmg0di00aC00djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93QmFja0lvc05ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljc3IDMuNzcgMTYgMiA2IDEybDEwIDEwIDEuNzctMS43N0w5LjU0IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0JhY2tJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS42NyAzLjg3IDkuOSAyLjEgMCAxMmw5LjkgOS45IDEuNzctMS43N0wzLjU0IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0JhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMUg3LjgzbDUuNTktNS41OUwxMiA0bC04IDggOCA4IDEuNDEtMS40MUw3LjgzIDEzSDIwdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0Rvd253YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMCAxMi0xLjQxLTEuNDFMMTMgMTYuMTdWNGgtMnYxMi4xN2wtNS41OC01LjU5TDQgMTJsOCA4IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dEcm9wRG93bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTItNC00aDhsLTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dEcm9wRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcgMTAgNSA1IDUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dEcm9wVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm03IDE0IDUtNSA1IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93Rm9yd2FyZElvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4yMyAyMC4yMyA4IDIybDEwLTEwTDggMiA2LjIzIDMuNzcgMTQuNDYgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDQtMS40MSAxLjQxTDE2LjE3IDExSDR2MmgxMi4xN2wtNS41OCA1LjU5TDEyIDIwbDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA3LTUgNSA1IDVWN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMHYyNEgwVjBoMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE3IDUtNS01LTV2MTB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMjRWMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd1Vwd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNCAxMiAxLjQxIDEuNDFMMTEgNy44M1YyMGgyVjcuODNsNS41OCA1LjU5TDIwIDEybC04LTgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3Npc3RhbnREaXJlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDljLS42IDAtMSAuNC0xIDF2NGgydi0zaDR2Mi41bDMuNS0zLjVMMTQgNy41VjEwem0tMi05QzUuOSAxIDEgNS45IDEgMTJzNC45IDExIDExIDExIDExLTQuOSAxMS0xMVMxOC4xIDEgMTIgMXptNy43MyAxMS41OC03LjE5IDcuMjJjLS4zNS4yNy0uNzkuMjctMS4xNSAwTDQuMiAxMi41OGEuOTMyLjkzMiAwIDAgMSAwLTEuMTZsNy4xOS03LjIyYy4zNS0uMjcuNzktLjI3IDEuMTUgMGw3LjE5IDcuMjJjLjM2LjI3LjM2LjggMCAxLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3Npc3RhbnROYXZpZ2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMnM0LjkzIDExIDExIDExIDExLTQuOTMgMTEtMTFTMTguMDcgMSAxMiAxem0zLjU3IDE2TDEyIDE1LjQyIDguNDMgMTdsLS4zNy0uMzdMMTIgN2wzLjk1IDkuNjMtLjM4LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1wYWlnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExdjJoNHYtMmgtNHptLTIgNi42MWMuOTYuNzEgMi4yMSAxLjY1IDMuMiAyLjM5LjQtLjUzLjgtMS4wNyAxLjItMS42LS45OS0uNzQtMi4yNC0xLjY4LTMuMi0yLjQtLjQuNTQtLjggMS4wOC0xLjIgMS42MXpNMjAuNCA1LjZjLS40LS41My0uOC0xLjA3LTEuMi0xLjYtLjk5Ljc0LTIuMjQgMS42OC0zLjIgMi40LjQuNTMuOCAxLjA3IDEuMiAxLjYuOTYtLjcyIDIuMjEtMS42NSAzLjItMi40ek00IDljLTEuMSAwLTIgLjktMiAydjJjMCAxLjEuOSAyIDIgMmgxdjRoMnYtNGgxbDUgM1Y2TDggOUg0em0xMS41IDNjMC0xLjMzLS41OC0yLjUzLTEuNS0zLjM1djYuNjljLjkyLS44MSAxLjUtMi4wMSAxLjUtMy4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FuY2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptNSAxMy41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNi4xNyA0LjgzIDEybC0xLjQyIDEuNDFMOSAxOSAyMSA3bC0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZXZyb25MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDEgNy40MSAxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNiA4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3NlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNi40MSAxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb3VibGVBcnJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNUgxMWw1IDctNSA3aDQuNWw1LTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA1SDRsNSA3LTUgN2g0LjVsNS03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgNS0xLjQxIDEuNDFMMTguMTcgMTFIMnYyaDE2LjE3bC00LjU5IDQuNTlMMTUgMTlsNy03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwYW5kQ2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTMuNUw3LjUgMTFsMS40Mi0xLjQxTDEyIDEyLjY3bDMuMDgtMy4wOEwxNi41IDExIDEyIDE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cGFuZExlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA4LTYgNiAxLjQxIDEuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBhbmRNb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTkgOC41OSAxMiAxMy4xNyA3LjQxIDguNTkgNiAxMGw2IDYgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaXJzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQxIDE2LjU5IDEzLjgyIDEybDQuNTktNC41OUwxNyA2bC02IDYgNiA2ek02IDZoMnYxMkg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZ1bGxzY3JlZW5FeGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNmgzdjNoMnYtNUg1djJ6bTMtOEg1djJoNVY1SDh2M3ptNiAxMWgydi0zaDN2LTJoLTV2NXptMi0xMVY1aC0ydjVoNVY4aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGdWxsc2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNEg1djVoNXYtMkg3di0zem0tMi00aDJWN2gzVjVINXY1em0xMiA3aC0zdjJoNXYtNWgtMnYzek0xNCA1djJoM3YzaDJWNWgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9tZVdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDExdjEwaDV2LTZoNHY2aDVWMTFMOCA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzdjEuOTdsNyA1VjExaDJ2MmgtMnYyaDJ2MmgtMnY0aDZWM0gxMHptOSA2aC0yVjdoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41OSA3LjQxIDEwLjE4IDEybC00LjU5IDQuNTlMNyAxOGw2LTYtNi02ek0xNiA2aDJ2MTJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExlZ2VuZFRvZ2dsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1SDR2LTJoMTZ2MnptMCAySDR2MmgxNnYtMnptLTUtNiA1LTMuNTVWNWwtNSAzLjU1TDEwIDUgNCA4LjY2VjExbDUuOTItMy42MUwxNSAxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFwc0hvbWVXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDExdjEwaDV2LTZoNHY2aDVWMTFMOCA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzdjEuOTdsNyA1VjExaDJ2MmgtMnYyaDJ2MmgtMnY0aDZWM0gxMHptOSA2aC0yVjdoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZW51T3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOGgxM3YtMkgzdjJ6bTAtNWgxMHYtMkgzdjJ6bTAtN3YyaDEzVjZIM3ptMTggOS41OUwxNy40MiAxMiAyMSA4LjQxIDE5LjU5IDdsLTUgNSA1IDVMMjEgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3JlSG9yaXogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTIgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3JlVmVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3J0aEVhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDV2Mmg2LjU5TDQgMTguNTkgNS40MSAyMCAxNyA4LjQxVjE1aDJWNUg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3J0aFdlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1aDJWOC40MUwxOC41OSAyMCAyMCAxOC41OSA4LjQxIDdIMTVWNUg1djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3J0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUgOSAxLjQxIDEuNDFMMTEgNS44M1YyMmgyVjUuODNsNC41OSA0LjU5TDE5IDlsLTctNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE9mZmxpbmVTaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjYgMTAuMjZ2MS4zMUwxNyA5LjMzIDE0LjYgNy4xdjEuMjhjLTIuMzMuMzItMy4yNiAxLjkyLTMuNiAzLjUyLjgzLTEuMTMgMS45My0xLjY0IDMuNi0xLjY0ek0xNiAyM0g2Yy0xLjEgMC0yLS45LTItMlY1aDJ2MTZoMTB2MnptMi0yMmgtOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTVoLThWNGg4djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXltZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE0VjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yem0tOS0xYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3ptMTMtNnYxMWMwIDEuMS0uOSAyLTIgMkg0di0yaDE3VjdoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGl2b3RUYWJsZUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOGgxMVY1YzAtMS4xLS45LTItMi0yaC05djV6TTMgOGg1VjNINWMtMS4xIDAtMiAuOS0yIDJ2M3ptMiAxM2gzVjEwSDN2OWMwIDEuMS45IDIgMiAyem04IDEtNC00IDQtNHptMS05IDQtNCA0IDR6TTE0LjU4IDE5SDEzdi0yaDEuNThjMS4zMyAwIDIuNDItMS4wOCAyLjQyLTIuNDJWMTNoMnYxLjU4YzAgMi40NC0xLjk4IDQuNDItNC40MiA0LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWZyZXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjUgNi4zNUE3Ljk1OCA3Ljk1OCAwIDAgMCAxMiA0Yy00LjQyIDAtNy45OSAzLjU4LTcuOTkgOHMzLjU3IDggNy45OSA4YzMuNzMgMCA2Ljg0LTIuNTUgNy43My02aC0yLjA4QTUuOTkgNS45OSAwIDAgMSAxMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNvdXRoRWFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTJ2Ni41OUw1LjQxIDQgNCA1LjQxIDE1LjU5IDE3SDl2MmgxMFY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb3V0aFdlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOXYtMkg4LjQxTDIwIDUuNDEgMTguNTkgNCA3IDE1LjU5VjlINXYxMGgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU291dGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxNS0xLjQxLTEuNDFMMTMgMTguMTdWMmgtMnYxNi4xN2wtNC41OS00LjU5TDUgMTVsNyA3IDctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3ViZGlyZWN0b3J5QXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSA5IDEuNDIgMS40Mkw4LjgzIDE0SDE4VjRoMnYxMkg4LjgzbDMuNTkgMy41OEwxMSAyMWwtNi02IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3ViZGlyZWN0b3J5QXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkgMTUtNiA2LTEuNDItMS40MkwxNS4xNyAxNkg0VjRoMnYxMGg5LjE3bC0zLjU5LTMuNThMMTMgOWw2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXRjaExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgOC42MnY2Ljc2TDUuMTIgMTIgOC41IDguNjJNMTAgNWwtNyA3IDcgN1Y1em00IDB2MTRsNy03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpdGNoUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNS4zOFY4LjYyTDE4Ljg4IDEybC0zLjM4IDMuMzhNMTQgMTlsNy03LTctN3YxNHptLTQgMFY1bC03IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbmZvbGRMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40MSAxOC41OSA4LjgzIDIwIDEyIDE2LjgzIDE1LjE3IDIwbDEuNDEtMS40MUwxMiAxNGwtNC41OSA0LjU5em05LjE4LTEzLjE4TDE1LjE3IDQgMTIgNy4xNyA4LjgzIDQgNy40MSA1LjQxIDEyIDEwbDQuNTktNC41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5mb2xkTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuODMgMTUuMTcgOWwxLjQxLTEuNDFMMTIgMyA3LjQxIDcuNTkgOC44MyA5IDEyIDUuODN6bTAgMTIuMzRMOC44MyAxNWwtMS40MSAxLjQxTDEyIDIxbDQuNTktNC41OUwxNS4xNyAxNSAxMiAxOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0ZXJmYWxsQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0aDN2MTZoLTN6TTMgMTNoM3Y3SDN6bTExLTloM3YzaC0zem0tNCAxaDN2NGgtM3ptLTMgNWgzdjRIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkgMTkgMS40MS0xLjQxTDUuODMgMTNIMjJ2LTJINS44M2w0LjU5LTQuNTlMOSA1bC03IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2NvdW50VHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExVjNoLTd2M0g5VjNIMnY4aDdWOGgydjEwaDR2M2g3di04aC03djNoLTJWOGgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTZjMCAzLjg3IDMuMTMgNyA3IDdzNy0zLjEzIDctN3YtNEg1djR6TTE2LjEyIDQuMzdsMi4xLTIuMS0uODItLjgzLTIuMyAyLjMxQzE0LjE2IDMuMjggMTMuMTIgMyAxMiAzcy0yLjE2LjI4LTMuMDkuNzVMNi42IDEuNDRsLS44Mi44MyAyLjEgMi4xQzYuMTQgNS42NCA1IDcuNjggNSAxMHYxaDE0di0xYzAtMi4zMi0xLjE0LTQuMzYtMi44OC01LjYzek05IDljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNiAwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMjEgNmgtM1YzaC0ydjNoLTN2MmgzdjNoMlY4aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0RmxhdEFuZ2xlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjI1IDE0LjI5LS42OSAxLjg5TDkuMiAxMS43MWwyLjA4LTUuNjYgOC41NiAzLjA5YTQgNCAwIDAgMSAyLjQxIDUuMTV6TTEuNSAxMi4xNCA4IDE0LjQ4VjE5aDh2LTEuNjNMMjAuNTIgMTlsLjY5LTEuODktMTkuMDItNi44Ni0uNjkgMS44OXptNS44LTEuOTRhMy4wMSAzLjAxIDAgMCAwIDEuNDEtNEEzLjAwNSAzLjAwNSAwIDAgMCA0LjcgNC44YTIuOTkgMi45OSAwIDAgMC0xLjQgNCAyLjk5IDIuOTkgMCAwIDAgNCAxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0RmxhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExdjJIOVY3aDljMi4yMSAwIDQgMS43OSA0IDR6TTIgMTR2Mmg2djJoOHYtMmg2di0ySDJ6bTUuMTQtMS45YTMgMyAwIDAgMC0uMDQtNC4yNCAzIDMgMCAwIDAtNC4yNC4wNCAzIDMgMCAwIDAgLjA0IDQuMjQgMyAzIDAgMCAwIDQuMjQtLjA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJsaW5lU2VhdEluZGl2aWR1YWxTdWl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxM2MxLjY1IDAgMy0xLjM1IDMtM1M4LjY1IDcgNyA3cy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTEyLTZoLTh2N0gzVjdIMXYxMGgyMnYtNmMwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlybGluZVNlYXRMZWdyb29tRXh0cmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEyVjNIMnY5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIN2MtMS42NiAwLTMtMS4zNC0zLTN6bTE4LjgzIDUuMjRjLS4zOC0uNzItMS4yOS0uOTctMi4wMy0uNjNsLTEuMDkuNS0zLjQxLTYuOThhMi4wMSAyLjAxIDAgMCAwLTEuNzktMS4xMkwxMSA5VjNINXY4YzAgMS42NiAxLjM0IDMgMyAzaDdsMy40MSA3IDMuNzItMS43Yy43Ny0uMzYgMS4xLTEuMy43LTIuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0TGVncm9vbU5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTJWM0gzdjljMCAyLjc2IDIuMjQgNSA1IDVoNnYtMkg4Yy0xLjY2IDAtMy0xLjM0LTMtM3ptMTUuNSA2SDE5di03YzAtMS4xLS45LTItMi0yaC01VjNINnY4YzAgMS42NSAxLjM1IDMgMyAzaDd2N2g0LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0TGVncm9vbVJlZHVjZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45NyAxOS4yYy4xOC45Ni0uNTUgMS44LTEuNDcgMS44SDE0di0zbDEtNEg5Yy0xLjY1IDAtMy0xLjM1LTMtM1YzaDZ2Nmg1YzEuMSAwIDIgLjkgMiAybC0yIDdoMS40NGMuNzMgMCAxLjM5LjQ5IDEuNTMgMS4yek01IDEyVjNIM3Y5YzAgMi43NiAyLjI0IDUgNSA1aDR2LTJIOGMtMS42NiAwLTMtMS4zNC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0UmVjbGluZUV4dHJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4zNSA1LjY0Yy0uOS0uNjQtMS4xMi0xLjg4LS40OS0yLjc5LjYzLS45IDEuODgtMS4xMiAyLjc5LS40OS45LjY0IDEuMTIgMS44OC40OSAyLjc5LS42NC45LTEuODggMS4xMi0yLjc5LjQ5ek0xNiAxOUg4LjkzYy0xLjQ4IDAtMi43NC0xLjA4LTIuOTYtMi41NEw0IDdIMmwxLjk5IDkuNzZBNS4wMSA1LjAxIDAgMCAwIDguOTQgMjFIMTZ2LTJ6bS4yMy00aC00Ljg4bC0xLjAzLTQuMWMxLjU4Ljg5IDMuMjggMS41NCA1LjE1IDEuMjJWOS45OWMtMS42My4zMS0zLjQ0LS4yNy00LjY5LTEuMjVMOS4xNCA3LjQ3Yy0uMjMtLjE4LS40OS0uMy0uNzYtLjM4YTIuMjEgMi4yMSAwIDAgMC0uOTktLjA2aC0uMDJhMi4yNjggMi4yNjggMCAwIDAtMS44NCAyLjYxbDEuMzUgNS45MkEzLjAwOCAzLjAwOCAwIDAgMCA5LjgzIDE4aDYuODVsMy44MiAzIDEuNS0xLjUtNS43Ny00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0UmVjbGluZU5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNTkgNS40MWMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODMuNzgtLjc4IDIuMDUtLjc4IDIuODMgMCAuNzguNzguNzggMi4wNSAwIDIuODMtLjc5Ljc5LTIuMDUuNzktMi44MyAwek02IDE2VjdINHY5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIOWMtMS42NiAwLTMtMS4zNC0zLTN6bTE0IDQuMDdMMTQuOTMgMTVIMTEuNXYtMy42OGMxLjQgMS4xNSAzLjYgMi4xNiA1LjUgMi4xNnYtMi4xNmMtMS42Ni4wMi0zLjYxLS44Ny00LjY3LTIuMDRsLTEuNC0xLjU1Yy0uMTktLjIxLS40My0uMzgtLjY5LS41LS4yOS0uMTQtLjYyLS4yMy0uOTYtLjIzaC0uMDNDOC4wMSA3IDcgOC4wMSA3IDkuMjVWMTVjMCAxLjY2IDEuMzQgMyAzIDNoNS4wN2wzLjUgMy41TDIwIDIwLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVldG9vdGhBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjI0IDEyLjAxIDIuMzIgMi4zMmMuMjgtLjcyLjQ0LTEuNTEuNDQtMi4zMyAwLS44Mi0uMTYtMS41OS0uNDMtMi4zMWwtMi4zMyAyLjMyem01LjI5LTUuMy0xLjI2IDEuMjZjLjYzIDEuMjEuOTggMi41Ny45OCA0LjAycy0uMzYgMi44Mi0uOTggNC4wMmwxLjIgMS4yYTkuOTM2IDkuOTM2IDAgMCAwIDEuNTQtNS4zMWMtLjAxLTEuODktLjU1LTMuNjctMS40OC01LjE5em0tMy44MiAxTDEwIDJIOXY3LjU5TDQuNDEgNSAzIDYuNDEgOC41OSAxMiAzIDE3LjU5IDQuNDEgMTkgOSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTEgNS44M2wxLjg4IDEuODhMMTEgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDExIDE4LjE3di0zLjc2bDEuODggMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29uZmlybWF0aW9uTnVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWNmEyIDIgMCAwIDAtMi0ySDRjLTEuMSAwLTEuOTkuODktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJ6bS05IDcuNWgtMnYtMmgydjJ6bTAtNC41aC0ydi0yaDJ2MnptMC00LjVoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuODMgMTBoLjY3VjcuNUwxNyAxMWwtMS41OSAxLjU5TDE4LjgzIDE2bDIuNTktMi41OWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzbC03Ljk5LThjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwTDggNS4xNyAxMi44MyAxMHpNMi44MSAyLjgxIDEuMzkgNC4yMiA1LjE3IDhsLTIuNTkgMi41OWMtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2w4LjAxIDhjLjc4Ljc4IDIuMDUuNzggMi44MyAwTDE2IDE4LjgzbDMuNzggMy43OCAxLjQxLTEuNDFMMi44MSAyLjgxek0xMCAxNUg4di00YzAtLjA1LjAyLS4wOS4wMy0uMTRMMTAgMTIuODNWMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpc2NGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTZoMnYtMmgtMnYyem0wLTl2NWgyVjdoLTJ6TTEwIDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04em0wIDEwYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9EaXN0dXJiQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9EaXN0dXJiT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMXYyaC0xLjE3bDQuNTEgNC41MUE5LjkxIDkuOTEgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMi4wNCAwLTMuOTMuNjEtNS41MSAxLjY2TDEzLjgzIDExSDE3ek0xLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyek03IDExaDEuMTdsMiAySDd2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvRGlzdHVyYk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9EaXN0dXJiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnpNNCAxMmMwLTQuNCAzLjYtOCA4LTggMS44IDAgMy41LjYgNC45IDEuN0w1LjcgMTYuOUM0LjYgMTUuNSA0IDEzLjggNCAxMnptOCA4Yy0xLjggMC0zLjUtLjYtNC45LTEuN0wxOC4zIDcuMUMxOS40IDguNSAyMCAxMC4yIDIwIDEyYzAgNC40LTMuNiA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9Ob3REaXN0dXJiQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0tNjE4LTE0NjRINzgydjM2MDBILTYxOHpNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyek00IDEyYzAtNC40IDMuNi04IDgtOCAxLjggMCAzLjUuNiA0LjkgMS43TDUuNyAxNi45QzQuNiAxNS41IDQgMTMuOCA0IDEyem04IDhjLTEuOCAwLTMuNS0uNi00LjktMS43TDE4LjMgNy4xQzE5LjQgOC41IDIwIDEwLjIgMjAgMTJjMCA0LjQtMy42IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdERpc3R1cmJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExdjJoLTEuNDZsNC42OCA0LjY4QTkuOTIgOS45MiAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0yLjExIDAtNC4wNy42Ni01LjY4IDEuNzhMMTMuNTQgMTFIMTd6TTIuMjcgMi4yNyAxIDMuNTRsMi43OCAyLjc4QTkuOTIgOS45MiAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMTEgMCA0LjA3LS42NiA1LjY4LTEuNzhMMjAuNDYgMjNsMS4yNy0xLjI3TDExIDExIDIuMjcgMi4yN3pNNyAxM3YtMmgxLjQ2bDIgMkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdERpc3R1cmJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMUg3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvTm90RGlzdHVyYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04IDAtMS44NS42My0zLjU1IDEuNjktNC45TDE2LjkgMTguMzFBNy45MDIgNy45MDIgMCAwIDEgMTIgMjB6bTYuMzEtMy4xTDcuMSA1LjY5QTcuOTAyIDcuOTAyIDAgMCAxIDEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjg1LS42MyAzLjU1LTEuNjkgNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUV0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDUuMDFDMTguNzIgNC40MiAxOC4xNiA0IDE3LjUgNGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTF2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuNSAxNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTIgNi41IDEyczEuNS42NyAxLjUgMS41UzcuMzMgMTUgNi41IDE1em0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNSAxMGwxLjUtNC41aDExTDE5IDEwSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVuaGFuY2VkRW5jcnlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6TTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2Mkg4LjlWNnpNMTYgMTZoLTN2M2gtMnYtM0g4di0yaDN2LTNoMnYzaDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnRBdmFpbGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41MyAxMS4wNiAxNS40NyAxMGwtNC44OCA0Ljg4LTIuMTItMi4xMi0xLjA2IDEuMDZMMTAuNTkgMTdsNS45NC01Ljk0ek0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnRCdXN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4zMSAxNyAyLjQ0LTIuNDRMMTQuMTkgMTdsMS4wNi0xLjA2LTIuNDQtMi40NCAyLjQ0LTIuNDRMMTQuMTkgMTBsLTIuNDQgMi40NEw5LjMxIDEwbC0xLjA2IDEuMDYgMi40NCAyLjQ0LTIuNDQgMi40NEw5LjMxIDE3ek0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnROb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTBIN3YyaDEwdi0yem0yLTdoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExem0tNS01SDd2Mmg3di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJTcGVjaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tMi4wNiAxMUwxNSAxNS4yOCAxMi4wNiAxN2wuNzgtMy4zMy0yLjU5LTIuMjQgMy40MS0uMjlMMTUgOGwxLjM0IDMuMTQgMy40MS4yOS0yLjU5IDIuMjQuNzggMy4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1hZ2VzZWFyY2hSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAydjZINlY2SDR2NGgxMHY1aDJ2OGgtNnYtOGgydi0zSDJWNGg0VjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGl2ZVR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2aC03LjU5bDMuMjktMy4yOUwxNiAybC00IDQtNC00LS43MS43MUwxMC41OSA2SDNhMiAyIDAgMCAwLTIgMnYxMmMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhhMiAyIDAgMCAwLTItMnptMCAxNEgzVjhoMTh2MTJ6TTkgMTB2OGw3LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1tcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek01IDE0bDMuNS00LjUgMi41IDMuMDFMMTQuNSA4bDQuNSA2SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDdjLS42OSAwLTEuMjMuMzUtMS41OS44OEwwIDEybDUuNDEgOC4xMWMuMzYuNTMuOTcuODkgMS42Ni44OUgyMmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDEzLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXR3b3JrQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS45IDVjLS4xNyAwLS4zMi4wOS0uNDEuMjNsLS4wNy4xNS01LjE4IDExLjY1Yy0uMTYuMjktLjI2LjYxLS4yNi45NiAwIDEuMTEuOSAyLjAxIDIuMDEgMi4wMS45NiAwIDEuNzctLjY4IDEuOTYtMS41OWwuMDEtLjAzTDE2LjQgNS41YzAtLjI4LS4yMi0uNS0uNS0uNXpNMSA5bDIgMmMyLjg4LTIuODggNi43OS00LjA4IDEwLjUzLTMuNjJsMS4xOS0yLjY4QzkuODkgMy44NCA0Ljc0IDUuMjcgMSA5em0yMCAyIDItMmExNS4zNjcgMTUuMzY3IDAgMCAwLTUuNTktMy41N2wtLjUzIDIuODJjMS41LjYyIDIuOSAxLjUzIDQuMTIgMi43NXptLTQgNCAyLTJjLS44LS44LTEuNy0xLjQyLTIuNjYtMS44OWwtLjU1IDIuOTJjLjQyLjI3LjgzLjU5IDEuMjEuOTd6TTUgMTNsMiAyYTcuMSA3LjEgMCAwIDEgNC4wMy0ybDEuMjgtMi44OGMtMi42My0uMDgtNS4zLjg3LTcuMzEgMi44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya0xvY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDEwYy4xNyAwIC4zMy4wMy41LjA1VjFMMSAyMGgxM3YtM2MwLS44OS4zOS0xLjY4IDEtMi4yM3YtLjI3YzAtMi40OCAyLjAyLTQuNSA0LjUtNC41em0yLjUgNnYtMS41YTIuNSAyLjUgMCAwIDAtNSAwVjE2Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg1Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTN2LTEuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9FbmNyeXB0aW9uR21haWxlcnJvcnJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC45IDZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFzMy4xIDEuMzkgMy4xIDMuMXYyaC00LjI3TDIwIDE3LjE3VjEwYzAtMS4xLS45LTItMi0yaC0xVjZjMC0yLjc2LTIuMjQtNS01LTUtMi4yMSAwLTQuMDcgMS40NS00LjczIDMuNDRMOC45IDYuMDdWNnpNMi4xIDIuMS42OSAzLjUxIDUuMyA4LjEzQzQuNTUgOC40MiA0IDkuMTUgNCAxMHYxMGMwIDEuMS45IDIgMiAyaDEyYy4zNCAwIC42NS0uMDkuOTMtLjI0bDEuNTYgMS41NiAxLjQxLTEuNDFMMi4xIDIuMXpNMTIgMTdjLTEuMSAwLTItLjktMi0yIDAtLjU5LjI3LTEuMTIuNjgtMS40OWwyLjgxIDIuODFjLS4zNy40MS0uOS42OC0xLjQ5LjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb0VuY3J5cHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMjEuNzggNC4yMiA1IDMgNi4yMmwyLjA0IDIuMDRDNC40MiA4LjYgNCA5LjI1IDQgMTB2MTBjMCAxLjEuOSAyIDIgMmgxMmMuMjMgMCAuNDUtLjA1LjY2LS4xMkwxOS43OCAyMyAyMSAyMS43OHpNOC45IDZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFzMy4xIDEuMzkgMy4xIDMuMXYySDkuNjZMMjAgMTguMzRWMTBjMC0xLjEtLjktMi0yLTJoLTFWNmMwLTIuNzYtMi4yNC01LTUtNS0yLjU2IDAtNC42NCAxLjkzLTQuOTQgNC40TDguOSA3LjI0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE9uZGVtYW5kVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnptLTUtNi03IDRWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uYWxWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVCbHVldG9vdGhTcGVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNzEgOS41IDE3IDcuMjFWMTFoLjVsMi44NS0yLjg1TDE4LjIxIDZsMi4xNS0yLjE1TDE3LjUgMUgxN3YzLjc5TDE0LjcxIDIuNWwtLjcxLjcxTDE2Ljc5IDYgMTQgOC43OWwuNzEuNzF6TTE4IDIuOTFsLjk0Ljk0LS45NC45NFYyLjkxem0wIDQuMy45NC45NC0uOTQuOTRWNy4yMXptMiA4LjI5Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2ExLjAyIDEuMDIgMCAwIDAtMS4wMi4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lQ2FsbGJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjYyIDEwLjc5YzEuNDQgMi44MyAzLjc2IDUuMTQgNi41OSA2LjU5bDIuMi0yLjJjLjI3LS4yNy42Ny0uMzYgMS4wMi0uMjQgMS4xMi4zNyAyLjMzLjU3IDMuNTcuNTcuNTUgMCAxIC40NSAxIDFWMjBjMCAuNTUtLjQ1IDEtMSAxLTkuMzkgMC0xNy03LjYxLTE3LTE3IDAtLjU1LjQ1LTEgMS0xaDMuNWMuNTUgMCAxIC40NSAxIDEgMCAxLjI1LjIgMi40NS41NyAzLjU3LjExLjM1LjAzLjc0LS4yNSAxLjAybC0yLjIgMi4yem0xMy41NC03LjEtLjcxLS43TDEzIDkuMjlWNWgtMXY2aDZ2LTFoLTQuMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lRm9yd2FyZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMTEgNS01LTUtNXYzaC00djRoNHYzem0yIDQuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhMS4wMiAxLjAyIDAgMCAwLTEuMDIuMjRsLTIuMiAyLjJhMTUuMDQ1IDE1LjA0NSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMjFhLjk2Ljk2IDAgMCAwIC4yNS0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZUluVGFsayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTkgMTJoMmE5IDkgMCAwIDAtOS05djJjMy44NyAwIDcgMy4xMyA3IDd6bS00IDBoMmMwLTIuNzYtMi4yNC01LTUtNXYyYzEuNjYgMCAzIDEuMzQgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZUxvY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNVY0YzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxaC0xdjVoNlY1aC0xem0tMSAwaC0yVjRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjYzIDE0LjQtMi41MiAyLjVjLTIuNS0xLjQzLTQuNTctMy41LTYtNmwyLjUtMi41MmMuMjMtLjI0LjMzLS41Ny4yNy0uOUw5LjEzIDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhINGMtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjA1IDUuNiAyLjQzIDcuOTcgMS41OCAyLjczIDMuODUgNC45OSA2LjU3IDYuNTcgMi4zNyAxLjM3IDUuMDggMi4yNiA3Ljk3IDIuNDMuNTYuMDMgMS4wMy0uNDQgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4bC0zLjY3LS43M2EuOTg1Ljk4NSAwIDAgMC0uOS4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVNaXNzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgNS41IDEyIDExbDctNy0xLTEtNiA2LTQuNS00LjVIMTFWM0g1djZoMS41VjUuNXptMTcuMjEgMTEuMTdBMTYuOTcxIDE2Ljk3MSAwIDAgMCAxMiAxMkM3LjQ2IDEyIDMuMzQgMTMuNzguMjkgMTYuNjdjLS4xOC4xOC0uMjkuNDMtLjI5Ljcxcy4xMS41My4yOS43MWwyLjQ4IDIuNDhjLjE4LjE4LjQzLjI5LjcxLjI5LjI3IDAgLjUyLS4xMS43LS4yOC43OS0uNzQgMS42OS0xLjM2IDIuNjYtMS44NS4zMy0uMTYuNTYtLjUuNTYtLjl2LTMuMWMxLjQ1LS40OCAzLS43MyA0LjYtLjczIDEuNiAwIDMuMTUuMjUgNC42LjcydjMuMWMwIC4zOS4yMy43NC41Ni45Ljk4LjQ5IDEuODcgMS4xMiAyLjY3IDEuODUuMTguMTguNDMuMjguNy4yOC4yOCAwIC41My0uMTEuNzEtLjI5bDIuNDgtMi40OGMuMTgtLjE4LjI5LS40My4yOS0uNzFzLS4xMi0uNTItLjMtLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lUGF1c2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM2gtMnY3aDJWM3ptMyAxMi41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2ExLjAyIDEuMDIgMCAwIDAtMS4wMi4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTE5IDN2N2gyVjNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvd2VyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNC40OVY5YzAtMS0xLjAxLTIuMDEtMi0yVjNoLTJ2NGgtNFYzSDh2Mi40OGw5LjUxIDkuNS40OS0uNDl6bS0xLjc2IDEuNzdMNy4yIDcuMmwtLjAxLjAxTDMuOTggNCAyLjcxIDUuMjVsMy4zNiAzLjM2QzYuMDQgOC43NCA2IDguODcgNiA5djUuNDhMOS41IDE4djNoNXYtM2wuNDgtLjQ4TDE5LjQ1IDIybDEuMjYtMS4yOC00LjQ3LTQuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMDEgNyAxNiAzaC0ydjRoLTRWM0g4djRoLS4wMUM3IDYuOTkgNiA3Ljk5IDYgOC45OXY1LjQ5TDkuNSAxOHYzaDV2LTNsMy41LTMuNTF2LTUuNWMwLTEtMS0yLTEuOTktMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJpb3JpdHlIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE5XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNoNHYxMmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnVubmluZ1dpdGhFcnJvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMHY4aC0ydi04aDJ6bS0yIDEwdjJoMnYtMmgtMnptLTItMi43MUE3Ljk5IDcuOTkgMCAwIDEgMTIgMjBjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTh2OWw3LjU1LTcuNTVBOS45NjUgOS45NjUgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMGMyLjI1IDAgNC4zMy0uNzQgNi0ydi0yLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZENhcmRBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0LjAyIDggNCAyMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS01IDE1aC0ydi0yaDJ2MnptMC00aC0yVjhoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQuMDIgOCA0IDIwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYgNmgtMlY0aDJ2NHptMyAwaC0yVjRoMnY0em0zIDBoLTJWNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpbUNhcmRBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNC4wMiA4IDQgMjBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNSAxNWgtMnYtMmgydjJ6bTAtNGgtMlY4aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU21zRmFpbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDEyaC0ydi0yaDJ2MnptMC00aC0yVjZoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOSAxMUg3VjloMnYyem00IDBoLTJWOWgydjJ6bTQgMGgtMlY5aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VwcG9ydEFnZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTIuMjJDMjEgNi43MyAxNi43NCAzIDEyIDNjLTQuNjkgMC05IDMuNjUtOSA5LjI4LS42LjM0LTEgLjk4LTEgMS43MnYyYzAgMS4xLjkgMiAyIDJoMXYtNi4xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDdWMTloLTh2Mmg4YzEuMSAwIDItLjkgMi0ydi0xLjIyYy41OS0uMzEgMS0uOTIgMS0xLjY0di0yLjNjMC0uNy0uNDEtMS4zMS0xLTEuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMS4wM0E2LjA0IDYuMDQgMCAwIDAgMTIuMDUgNmMtMy4wMyAwLTYuMjkgMi41MS02LjAzIDYuNDVhOC4wNzUgOC4wNzUgMCAwIDAgNC44Ni01Ljg5YzEuMzEgMi42MyA0IDQuNDQgNy4xMiA0LjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTeW5jRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNi4zNVY0LjI2Yy0uOC4yMS0xLjU1LjU0LTIuMjMuOTZsMS40NiAxLjQ2Yy4yNS0uMTIuNS0uMjQuNzctLjMzem0tNy4xNC0uOTQgMi4zNiAyLjM2YTcuOTI1IDcuOTI1IDAgMCAwIDEuMTQgOS44N0w0IDIwaDZ2LTZsLTIuMjQgMi4yNEE2LjAwMyA2LjAwMyAwIDAgMSA2IDEyYzAtMSAuMjUtMS45NC42OC0yLjc3bDguMDggOC4wOGMtLjI1LjEzLS41LjI1LS43Ny4zNHYyLjA5Yy44LS4yMSAxLjU1LS41NCAyLjIzLS45NmwyLjM2IDIuMzYgMS4yNy0xLjI3TDQuMTQgNC4xNCAyLjg2IDUuNDF6TTIwIDRoLTZ2NmwyLjI0LTIuMjRBNi4wMDMgNi4wMDMgMCAwIDEgMTggMTJjMCAxLS4yNSAxLjk0LS42OCAyLjc3bDEuNDYgMS40NmE3LjkyNSA3LjkyNSAwIDAgMC0xLjE0LTkuODdMMjAgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3luY0xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0LjI2djIuMDlDNy42NyA3LjE4IDYgOS4zOSA2IDEyYzAgMS43Ny43OCAzLjM0IDIgNC40NFYxNGgydjZINHYtMmgyLjczQTcuOTQyIDcuOTQyIDAgMCAxIDQgMTJjMC0zLjczIDIuNTUtNi44NSA2LTcuNzR6TTIwIDRoLTZ2NmgyVjcuNTZjMS4yMiAxLjEgMiAyLjY3IDIgNC40NGgyYzAtMi40LTEuMDYtNC41NC0yLjczLTZIMjBWNHptMCAxM3YtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTeW5jUHJvYmxlbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTJjMCAyLjIxLjkxIDQuMiAyLjM2IDUuNjRMMyAyMGg2di02bC0yLjI0IDIuMjRBNi4wMDMgNi4wMDMgMCAwIDEgNSAxMmE1Ljk5IDUuOTkgMCAwIDEgNC01LjY1VjQuMjZDNS41NSA1LjE1IDMgOC4yNyAzIDEyem04IDVoMnYtMmgtMnYyek0yMSA0aC02djZsMi4yNC0yLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDE5IDEyYTUuOTkgNS45OSAwIDAgMS00IDUuNjV2Mi4wOWMzLjQ1LS44OSA2LTQuMDEgNi03Ljc0IDAtMi4yMS0uOTEtNC4yLTIuMzYtNS42NEwyMSA0em0tMTAgOWgyVjdoLTJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3luYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRWMUw4IDVsNCA0VjZjMy4zMSAwIDYgMi42OSA2IDYgMCAxLjAxLS4yNSAxLjk3LS43IDIuOGwxLjQ2IDEuNDZBNy45MyA3LjkzIDAgMCAwIDIwIDEyYzAtNC40Mi0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNiAwLTEuMDEuMjUtMS45Ny43LTIuOEw1LjI0IDcuNzRBNy45MyA3LjkzIDAgMCAwIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE5SDdWNWgxMHYxNHptLTEtNmgtM1Y4aC0ydjVIOGw0IDQgNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYXBBbmRQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNnYyYzIuNzYgMCA1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTAgNHYzaDNjMC0xLjY2LTEuMzQtMy0zLTN6bTAtOHYyYTkgOSAwIDAgMSA5IDloMmMwLTYuMDgtNC45Mi0xMS0xMS0xMXpNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjcuMzdjLjY5LjE2IDEuMzYuMzcgMiAuNjRWNWgxMHYxM2gtMy4wM2MuNTIgMS4yNS44NCAyLjU5Ljk1IDRIMTdjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZVRvTGVhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA1LjAxQzE4LjcyIDQuNDIgMTguMTYgNCAxNy41IDRoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDExdjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02LjUgMTVjLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDEyIDYuNSAxMnMxLjUuNjcgMS41IDEuNVM3LjMzIDE1IDYuNSAxNXptMTEgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTUgMTBsMS41LTQuNWgxMUwxOSAxMEg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMSAzLjU0IDEuNTMgMS41M0MxLjY1IDUuMjggMSA2LjA2IDEgN3YxMmMwIDEuMS45IDIgMiAyaDE1LjQ2bDIgMiAxLjI2LTEuMjdMMi4yNyAyLjI3IDEgMy41NHpNMyAxOVY3aDEuNDZsMTIgMTJIM3pNMjEgNWgtNy41OGwzLjI5LTMuM0wxNiAxbC00IDQtNC00LS43LjdMMTAuNTggNUg3LjUybDIgMkgyMXYxMS40OGwxLjY1IDEuNjVjLjIyLS4zMi4zNS0uNzEuMzUtMS4xM1Y3YzAtMS4xMS0uODktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTVoMlY5SDB2NnptMyAyaDJWN0gzdjEwem0xOS04djZoMlY5aC0yem0tMyA4aDJWN2gtMnYxMHpNMTYuNSAzaC05QzYuNjcgMyA2IDMuNjcgNiA0LjV2MTVjMCAuODMuNjcgMS41IDEuNSAxLjVoOWMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTE1YzAtLjgzLS42Ny0xLjUtMS41LTEuNXpNMTYgMTlIOFY1aDh2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0zIDExLTItMS45OVYxM2MwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjdjMC0uNTUuNDUtMSAxLTFoNmMuNTUgMCAxIC40NSAxIDF2MS45OUwxNyA3djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvaWNlQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINmwtMiAyVjRoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjI1IDVoMS41djEwaC0xLjV6TTguNSA3SDEwdjZIOC41ek02IDloMS41djJINnpNMTQgN2gxLjV2NkgxNHpNMTYuNSA5SDE4djJoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVnBuTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDR2LS41YTIuNSAyLjUgMCAwIDAtNSAwVjRjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xVjVjMC0uNTUtLjQ1LTEtMS0xem0tLjggMGgtMy40di0uNWMwLS45NC43Ni0xLjcgMS43LTEuN3MxLjcuNzYgMS43IDEuN1Y0em0tMi4yOCA4Yy4wNC4zMy4wOC42Ni4wOCAxIDAgMi4wOC0uOCAzLjk3LTIuMSA1LjM5LS4yNi0uODEtMS0xLjM5LTEuOS0xLjM5aC0xdi0zYzAtLjU1LS40NS0xLTEtMUg3di0yaDJjLjU1IDAgMS0uNDUgMS0xVjhoMmMxLjEgMCAyLS45IDItMlYzLjQ2Yy0uOTUtLjMtMS45NS0uNDYtMy0uNDZDNS40OCAzIDEgNy40OCAxIDEzczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLS4zNC0uMDItLjY3LS4wNS0xaC0yLjAzek0xMCAyMC45M2MtMy45NS0uNDktNy0zLjg1LTctNy45MyAwLS42Mi4wOC0xLjIxLjIxLTEuNzlMOCAxNnYxYzAgMS4xLjkgMiAyIDJ2MS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSAyMnYtNy41SDRWOWMwLTEuMS45LTIgMi0yaDNjMS4xIDAgMiAuOSAyIDJ2NS41SDkuNVYyMmgtNHpNMTggMjJ2LTZoM2wtMi41NC03LjYzQTIuMDEgMi4wMSAwIDAgMCAxNi41NiA3aC0uMTJhMiAyIDAgMCAwLTEuOSAxLjM3TDEyIDE2aDN2Nmgzek03LjUgNmMxLjExIDAgMi0uODkgMi0ycy0uODktMi0yLTItMiAuODktMiAyIC44OSAyIDIgMnptOSAwYzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAuMDFjMC0uMDEgMC0uMDEgMCAwTDAgMHYyNGgyNFYuMDF6TTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjk5IDlDMTkuMTUgNS4xNiAxMy44IDMuNzYgOC44NCA0Ljc4bDIuNTIgMi41MmMzLjQ3LS4xNyA2Ljk5IDEuMDUgOS42MyAzLjdsMi0yem0tNCA0YTkuNzkzIDkuNzkzIDAgMCAwLTQuNDktMi41NmwzLjUzIDMuNTMuOTYtLjk3ek0yIDMuMDUgNS4wNyA2LjFDMy42IDYuODIgMi4yMiA3Ljc4IDEgOWwxLjk5IDJjMS4yNC0xLjI0IDIuNjctMi4xNiA0LjItMi43N2wyLjI0IDIuMjRBOS42ODQgOS42ODQgMCAwIDAgNSAxM3YuMDFMNi45OSAxNWE3LjA0MiA3LjA0MiAwIDAgMSA0LjkyLTIuMDZMMTguOTggMjBsMS4yNy0xLjI2TDMuMjkgMS43OSAyIDMuMDV6TTkgMTdsMyAzIDMtM2E0LjIzNyA0LjIzNyAwIDAgMC02IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xIDkgMiAyYzQuOTctNC45NyAxMy4wMy00Ljk3IDE4IDBsMi0yQzE2LjkzIDIuOTMgNy4wOCAyLjkzIDEgOXptOCA4IDMgMyAzLTNhNC4yMzcgNC4yMzcgMCAwIDAtNiAwem0tNC00IDIgMmE3LjA3NCA3LjA3NCAwIDAgMSAxMCAwbDItMkMxNS4xNCA5LjE0IDguODcgOS4xNCA1IDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY1VuaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMWgtNC4xN2wzLjI0LTMuMjQtMS40MS0xLjQyTDE1IDExaC0yVjlsNC42Ni00LjY2LTEuNDItMS40MUwxMyA2LjE3VjJoLTJ2NC4xN0w3Ljc2IDIuOTMgNi4zNCA0LjM0IDExIDl2Mkg5TDQuMzQgNi4zNCAyLjkzIDcuNzYgNi4xNyAxMUgydjJoNC4xN2wtMy4yNCAzLjI0IDEuNDEgMS40Mkw5IDEzaDJ2MmwtNC42NiA0LjY2IDEuNDIgMS40MUwxMSAxNy44M1YyMmgydi00LjE3bDMuMjQgMy4yNCAxLjQyLTEuNDFMMTMgMTV2LTJoMmw0LjY2IDQuNjYgMS40MS0xLjQyTDE3LjgzIDEzSDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJwb3J0U2h1dHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVIM2EyIDIgMCAwIDAtMiAydjloMmMwIDEuNjUgMS4zNCAzIDMgM3MzLTEuMzUgMy0zaDUuNWMwIDEuNjUgMS4zNCAzIDMgM3MzLTEuMzUgMy0zSDIzdi01bC02LTZ6TTMgMTFWN2g0djRIM3ptMyA2LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em03LTYuNUg5VjdoNHY0em00LjUgNi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNMTUgMTFWN2gxbDQgNGgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxsSW5jbHVzaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC42IDYuNjJjLTEuNDQgMC0yLjguNTYtMy43NyAxLjUzTDEyIDEwLjY2IDEwLjQ4IDEyaC4wMUw3LjggMTQuMzljLS42NC42NC0xLjQ5Ljk5LTIuNC45OS0xLjg3IDAtMy4zOS0xLjUxLTMuMzktMy4zOFMzLjUzIDguNjIgNS40IDguNjJjLjkxIDAgMS43Ni4zNSAyLjQ0IDEuMDNsMS4xMyAxIDEuNTEtMS4zNEw5LjIyIDguMkE1LjM3IDUuMzcgMCAwIDAgNS40IDYuNjJDMi40MiA2LjYyIDAgOS4wNCAwIDEyczIuNDIgNS4zOCA1LjQgNS4zOGMxLjQ0IDAgMi44LS41NiAzLjc3LTEuNTNsMi44My0yLjUuMDEuMDFMMTMuNTIgMTJoLS4wMWwyLjY5LTIuMzljLjY0LS42NCAxLjQ5LS45OSAyLjQtLjk5IDEuODcgMCAzLjM5IDEuNTEgMy4zOSAzLjM4cy0xLjUyIDMuMzgtMy4zOSAzLjM4Yy0uOSAwLTEuNzYtLjM1LTIuNDQtMS4wM2wtMS4xNC0xLjAxLTEuNTEgMS4zNCAxLjI3IDEuMTJhNS4zODYgNS4zODYgMCAwIDAgMy44MiAxLjU3YzIuOTggMCA1LjQtMi40MSA1LjQtNS4zOHMtMi40Mi01LjM3LTUuNC01LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcGFydG1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMVYzSDd2NEgzdjE0aDh2LTRoMnY0aDhWMTFoLTR6TTcgMTlINXYtMmgydjJ6bTAtNEg1di0yaDJ2MnptMC00SDVWOWgydjJ6bTQgNEg5di0yaDJ2MnptMC00SDlWOWgydjJ6bTAtNEg5VjVoMnYyem00IDhoLTJ2LTJoMnYyem0wLTRoLTJWOWgydjJ6bTAtNGgtMlY1aDJ2MnptNCAxMmgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhYnlDaGFuZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA4djJoLTNMOC4zMSA4LjgyIDcgMTIuNzVWMjJIM1YxMmwxLjU4LTQuNjNBMi4wMDMgMi4wMDMgMCAwIDEgNy4zIDYuMThsNC4xNSAxLjgzTDE0IDh6TTggMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEgMThoMTJ2LTJIOXYyem0xMC41LTNjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6TTEzIDEyYzAtLjU1LS40NS0xLTEtMUg5djJoMnYxYzAgMS4xLjkgMiAyIDJoMmMxLjEgMCAyLS45IDItMnYtM2gtMnYyaC0ydi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDh2MTJjMCAxLjEtLjkgMi0yIDJINmMtMS4xIDAtMi0uOS0yLTJWOGMwLTEuODYgMS4yOC0zLjQxIDMtMy44NlYyaDN2Mmg0VjJoM3YyLjE0YzEuNzIuNDUgMyAyIDMgMy44NnpNNiAxMnYyaDEwdjJoMnYtNEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWxjb255IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTB2Mkg4di0yaDJ6bTYgMnYtMmgtMnYyaDJ6bTUgMnY4SDN2LThoMXYtNGMwLTQuNDIgMy41OC04IDgtOHM4IDMuNTggOCA4djRoMXpNNyAxNkg1djRoMnYtNHptNCAwSDl2NGgydi00em0wLTExLjkyQzguMTYgNC41NiA2IDcuMDMgNiAxMHY0aDVWNC4wOHpNMTMgMTRoNXYtNGMwLTIuOTctMi4xNi01LjQ0LTUtNS45MlYxNHptMiAyaC0ydjRoMnYtNHptNCAwaC0ydjRoMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0aHR1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiN1wiLFwiY3lcIjpcIjdcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTNWNC44M0MyMCAzLjI3IDE4LjczIDIgMTcuMTcgMmMtLjc1IDAtMS40Ny4zLTIgLjgzbC0xLjI1IDEuMjVjLS4xNi0uMDUtLjMzLS4wOC0uNTEtLjA4LS40IDAtLjc3LjEyLTEuMDguMzJsMi43NiAyLjc2Yy4yLS4zMS4zMi0uNjguMzItMS4wOCAwLS4xOC0uMDMtLjM0LS4wNy0uNTFsMS4yNS0xLjI1YS44MjguODI4IDAgMCAxIDEuNDEuNTlWMTNoLTYuODVjLS4zLS4yMS0uNTctLjQ1LS44Mi0uNzJsLTEuNC0xLjU1Yy0uMTktLjIxLS40My0uMzgtLjY5LS41QTIuMjUxIDIuMjUxIDAgMCAwIDUgMTIuMjVWMTNIMnY2YzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFoMTRjLjU1IDAgMS0uNDUgMS0xIDEuMSAwIDItLjkgMi0ydi02aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWFjaEFjY2VzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjEyNyAxNC41NiAxLjQzLTEuNDMgNi40NCA2LjQ0M0wxOS41NyAyMXptNC4yOTMtNS43MyAyLjg2LTIuODZjLTMuOTUtMy45NS0xMC4zNS0zLjk2LTE0LjMtLjAyIDMuOTMtMS4zIDguMzEtLjI1IDExLjQ0IDIuODh6TTUuOTUgNS45OGMtMy45NCAzLjk1LTMuOTMgMTAuMzUuMDIgMTQuM2wyLjg2LTIuODZDNS43IDE0LjI5IDQuNjUgOS45MSA1Ljk1IDUuOTh6bS4wMi0uMDItLjAxLjAxYy0uMzggMy4wMSAxLjE3IDYuODggNC4zIDEwLjAybDUuNzMtNS43M2MtMy4xMy0zLjEzLTcuMDEtNC42OC0xMC4wMi00LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlbnRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTFWNWg0YzEuMSAwIDIgLjkgMiAydjRoLTZ6bTQgOGMxLjEgMCAyLS45IDItMnYtNGgtNnY2aDR6TTE0IDV2MTRINGMtMS4xIDAtMi0uOS0yLTJWN2MwLTEuMS45LTIgMi0yaDEwem0tNC41IDdjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJ1bmdhbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA0LjIgMTUuNWwxLjcgMS4wNkw3IDE0LjhWMjFoNHYtNWgydjVoNHYtNi4yMWwxLjEgMS43NyAxLjctMS4wNkwxMiAzem0xIDExaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVzaW5lc3NDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0xMCA1aDR2MmgtNHptMCAwaDR2MmgtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTZ2LTFIMy4wMUwzIDE5YzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0ydi00aC03djFoLTR6bTEwLTloLTQuMDFWNWwtMi0yaC00bC0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYzYzAgMS4xMS44OSAyIDIgMmg2di0yaDR2Mmg2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bS02IDBoLTRWNWg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhYmluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMWMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnptMiAyTDYgNy41OFY2SDR2My4xMUwxIDExLjRsMS4yMSAxLjU5TDQgMTEuNjJWMjFoMTZ2LTkuMzhsMS43OSAxLjM2TDIzIDExLjQgMTIgM3ptMS45NCA0aC0zLjg5TDEyIDUuNTIgMTMuOTQgN3ptLTYuNSAyaDkuMTJMMTggMTAuMXYuOUg2di0uOUw3LjQ0IDl6TTE4IDEzdjJINnYtMmgxMnpNNiAxOXYtMmgxMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhcnBlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjczIDE0LjIzIDcgMS41IDMuMTEgNS4zOWw4LjEzIDExLjY3Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDEuNDEgMS40MWMuNzguNzggMi4wNS43OCAyLjgzIDBsNC4yNC00LjI0Yy43OS0uNzguNzktMi4wNS4wMS0yLjgzem0tNS42NiA1LjY1LTEuNDEtMS40MSA0LjI0LTQuMjQgMS40MSAxLjQxLTQuMjQgNC4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FzaW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMjEuMDIgMTljMCAxLjEtLjkgMi0yIDJoLTE0Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek03LjUgMThjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE1IDcuNSAxNXMxLjUuNjcgMS41IDEuNVM4LjMzIDE4IDcuNSAxOHptMC05QzYuNjcgOSA2IDguMzMgNiA3LjVTNi42NyA2IDcuNSA2IDkgNi42NyA5IDcuNSA4LjMzIDkgNy41IDl6bTQuNSA0LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em00LjUgNC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptMC05Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTUuNjcgNiAxNi41IDZzMS41LjY3IDEuNSAxLjVTMTcuMzMgOSAxNi41IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYWxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDcuNSA3LjUgNy41LTEuNDEgMS40MUwxNSAxNS4zM1YyMGgtNHYtNUg5djVINXYtNC42N2wtMS4wOSAxLjA5TDIuNSAxNSAxMCA3LjV6bTEyLTFoLTEuMTlsLjc1LS43NS0uNzEtLjcxLTEuNDYgMS40NmgtLjg5di0uODlsMS40NS0xLjQ1LS43MS0uNzEtLjc0Ljc0VjNoLTF2MS4xOWwtLjc1LS43NS0uNzEuNzEgMS40NSAxLjQ1di45aC0uODlsLTEuNDUtMS40NS0uNzEuNzEuNzUuNzVIMTR2MWgxLjE5bC0uNzUuNzUuNzEuNzEgMS40NS0xLjQ1aC44OXYuODlsLTEuNDUgMS40NS43MS43MS43NS0uNzVWMTFoMVY5LjgxbC43NS43NS43MS0uNzEtMS40Ni0xLjQ2VjcuNWguODlsMS40NSAxLjQ1LjcxLS43MS0uNzQtLjc0SDIydi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGFyZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC41IDExLTMgNnYtNGgtMmwzLTZ2NGgyek03IDFoMTBjMS4xIDAgMiAuOSAyIDJ2MThjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWM2MwLTEuMS45LTIgMi0yem0wIDV2MTJoMTBWNkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGVja3Jvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS42IDE4LjIgMTMgMTEuNzV2LS45MWEzLjQ5NiAzLjQ5NiAwIDAgMC0uMTgtNi43NUEzLjUxIDMuNTEgMCAwIDAgOC41IDcuNWgyYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41YzAgLjg0LS42OSAxLjUyLTEuNTMgMS41LS41NC0uMDEtLjk3LjQ1LS45Ny45OXYxLjc2TDIuNCAxOC4yYy0uNzcuNTgtLjM2IDEuOC42IDEuOGgxOGMuOTYgMCAxLjM3LTEuMjIuNi0xLjh6TTYgMThsNi00LjUgNiA0LjVINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hpbGRDYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjkuNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuOTQgMTIuNjZjLjA0LS4yMS4wNi0uNDMuMDYtLjY2cy0uMDItLjQ1LS4wNi0uNjZhNC4wMDggNC4wMDggMCAwIDAtMi44MS0zLjE3IDkuMTE0IDkuMTE0IDAgMCAwLTIuMTktMi45MUMxNi4zNiAzLjg1IDE0LjI4IDMgMTIgM3MtNC4zNi44NS01Ljk0IDIuMjZjLS45Mi44MS0xLjY3IDEuOC0yLjE5IDIuOTFhMy45OTQgMy45OTQgMCAwIDAtMi44MSAzLjE3Yy0uMDQuMjEtLjA2LjQzLS4wNi42NnMuMDIuNDUuMDYuNjZhNC4wMDggNC4wMDggMCAwIDAgMi44MSAzLjE3IDguOTc3IDguOTc3IDAgMCAwIDIuMTcgMi44OUM3LjYyIDIwLjE0IDkuNzEgMjEgMTIgMjFzNC4zOC0uODYgNS45Ny0yLjI4Yy45LS44IDEuNjUtMS43OSAyLjE3LTIuODlhMy45OTggMy45OTggMCAwIDAgMi44LTMuMTd6TTE5IDE0Yy0uMSAwLS4xOS0uMDItLjI5LS4wMy0uMi42Ny0uNDkgMS4yOS0uODYgMS44NkMxNi42IDE3Ljc0IDE0LjQ1IDE5IDEyIDE5cy00LjYtMS4yNi01Ljg1LTMuMTdjLS4zNy0uNTctLjY2LTEuMTktLjg2LTEuODYtLjEuMDEtLjE5LjAzLS4yOS4wMy0xLjEgMC0yLS45LTItMnMuOS0yIDItMmMuMSAwIC4xOS4wMi4yOS4wMy4yLS42Ny40OS0xLjI5Ljg2LTEuODZDNy40IDYuMjYgOS41NSA1IDEyIDVzNC42IDEuMjYgNS44NSAzLjE3Yy4zNy41Ny42NiAxLjE5Ljg2IDEuODYuMS0uMDEuMTktLjAzLjI5LS4wMyAxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJ6TTcuNSAxNGMuNzYgMS43NyAyLjQ5IDMgNC41IDNzMy43NC0xLjIzIDQuNS0zaC05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGlsZEZyaWVuZGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMnY4aDhjMC00LjQyLTMuNTgtOC04LTh6bTYuMzIgMTMuODlBNy45NDggNy45NDggMCAwIDAgMjEgMTFINi40NGwtLjk1LTJIMnYyaDIuMjJzMS44OSA0LjA3IDIuMTIgNC40MmMtMS4xLjU5LTEuODQgMS43NS0xLjg0IDMuMDhDNC41IDIwLjQzIDYuMDcgMjIgOCAyMmMxLjc2IDAgMy4yMi0xLjMgMy40Ni0zaDIuMDhjLjI0IDEuNyAxLjcgMyAzLjQ2IDMgMS45MyAwIDMuNS0xLjU3IDMuNS0zLjUgMC0xLjA0LS40Ni0xLjk3LTEuMTgtMi42MXpNOCAyMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuMTcgMTcgOCAxN3MxLjUuNjcgMS41IDEuNVM4LjgzIDIwIDggMjB6bTkgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjE3IDE3IDE3IDE3czEuNS42NyAxLjUgMS41UzE3LjgzIDIwIDE3IDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb3Jwb3JhdGVGYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN1YzSDJ2MThoMjBWN0gxMnptLTIgMTJINHYtMmg2djJ6bTAtNEg0di0yaDZ2MnptMC00SDRWOWg2djJ6bTAtNEg0VjVoNnYyem0xMCAxMmgtOFY5aDh2MTB6bS0yLThoLTR2Mmg0di0yem0wIDRoLTR2Mmg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb3R0YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA2IDcuNThWNkg0djMuMTFMMSAxMS40bDEuMjEgMS41OUw0IDExLjYyVjIxaDd2LTZoMnY2aDd2LTkuMzhsMS43OSAxLjM2TDIzIDExLjQgMTIgM3ptLTItMmMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ291bnRlcnRvcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMFY3YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzaDJjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjNIOGMxLjEgMCAyLS45IDItMlY0SDR2NGMwIDEuMS45IDIgMiAySDJ2MmgydjhoMTZ2LThoMnYtMmgtNHptLTUgOGgtMnYtNmgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyaWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5aC02VjRIOEM1Ljc5IDQgNCA1Ljc5IDQgOHY2YzAgMS4xLjkgMiAyIDJoMnYyLjkzYy0uNjEtLjM1LTEuMTYtLjc4LTEuNjUtMS4yN2wtMS40MiAxLjQyQzYuNzQgMjAuODggOS4yNCAyMiAxMiAyMmMyLjc2IDAgNS4yNi0xLjEyIDcuMDctMi45M2wtMS40Mi0xLjQyYy0uNDkuNDktMS4wNS45Mi0xLjY1IDEuMjdWMTZoMmMxLjEgMCAyLS45IDItMnYtM2MwLTEuMS0uOS0yLTItMnptLTQgMTAuNzVjLS42NC4xNi0xLjMxLjI1LTIgLjI1cy0xLjM2LS4wOS0yLS4yNVYxNmg0djMuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZ2MTJoMlY4aDEwdjEwaDJ2LTJoNHYyaDJWNkgyem0xOCAydjJoLTRWOGg0em0tNCA2di0yaDR2MmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9Ob3RTdGVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMS4zOSA0LjIyIDcuOSA3LjljLjE4LjIuMTguNS0uMDEuN2EuNDg1LjQ4NSAwIDAgMS0uNyAwTDYuODcgMTEuMWMtLjExLjQtLjI2Ljc4LS40NSAxLjEybDEuNCAxLjRjLjIuMi4yLjUxIDAgLjcxYS40ODUuNDg1IDAgMCAxLS43IDBsLTEuMjctMS4yN2MtLjI0LjI5LS41LjU2LS43Ny44bDEuMjggMS4yOGMuMi4yLjIuNTEgMCAuNzEtLjEuMS0uMjMuMTUtLjM2LjE1cy0uMjYtLjA1LS4zNS0uMTVsLTEuMzgtMS4zOGMtLjY5LjQ2LTEuMzkuNzktMS45NyAxLjAyLS43OC4zMS0xLjMgMS4wNC0xLjMgMS44OFYyMGg5LjVsMy4zMy0zLjMzIDUuOTQgNS45NCAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptMTcuMTIgMTEuNDYtMS40MS0xLjQxIDQuNDgtNC40OEwyMyAxMS4ybC00LjQ5IDQuNDh6bTIuMzctNi42LTQuNDggNC40OC03LjEtNy4wOUwxMy44IDJsNy4wOCA3LjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdFRvdWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgMTAuMTctMi41LTIuNVYyLjI1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMHY3Ljkyem03IDIuNTh2LTcuNWExLjI1IDEuMjUgMCAwIDAtMi41IDBWMTFoLTFWMy4yNWExLjI1IDEuMjUgMCAwIDAtMi41IDB2Ny45Mmw2IDZ2LTQuNDJ6TTkuNSA0LjI1QzkuNSAzLjU2IDguOTQgMyA4LjI1IDNjLS42NyAwLTEuMi41My0xLjI0IDEuMThMOS41IDYuNjdWNC4yNXptMy41IDUuOTItMi41LTIuNVYyLjI1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMHY3Ljkyem03IDIuNTh2LTcuNWExLjI1IDEuMjUgMCAwIDAtMi41IDBWMTFoLTFWMy4yNWExLjI1IDEuMjUgMCAwIDAtMi41IDB2Ny45Mmw2IDZ2LTQuNDJ6TTkuNSA0LjI1QzkuNSAzLjU2IDguOTQgMyA4LjI1IDNjLS42NyAwLTEuMi41My0xLjI0IDEuMThMOS41IDYuNjdWNC4yNXptMTEuNjkgMTYuOTRMMi44MSAyLjgxIDEuMzkgNC4yMmw1LjYzIDUuNjNMNyA5LjgzdjQuM2MtMS4xMS0uNjQtMi41OC0xLjQ3LTIuNi0xLjQ4LS4xNy0uMDktLjM0LS4xNC0uNTQtLjE0LS4yNiAwLS41LjA5LS43LjI2LS4wNC4wMS0xLjE2IDEuMTEtMS4xNiAxLjExbDYuOCA3LjE4Yy41Ny42IDEuMzUuOTQgMi4xOC45NEgxN2MuNjIgMCAxLjE4LS4xOSAxLjY1LS41MmwtLjAyLS4wMiAxLjE1IDEuMTUgMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS42NSA0Ljg2LS4wNy0uMDdjLS41Ny0uNjItLjgyLTEuNDEtLjY3LTIuMkwxNSAyaC0xLjg5bC0uMDYuNDNjLS4yIDEuMzYuMjcgMi43MSAxLjMgMy43MmwuMDcuMDZjLjU3LjYyLjgyIDEuNDEuNjcgMi4ybC0uMTEuNTloMS45MWwuMDYtLjQzYy4yMS0xLjM2LS4yNy0yLjcxLTEuMy0zLjcxem00IDAtLjA3LS4wN2MtLjU3LS42Mi0uODItMS40MS0uNjctMi4yTDE5IDJoLTEuODlsLS4wNi40M2MtLjIgMS4zNi4yNyAyLjcxIDEuMyAzLjcybC4wNy4wNmMuNTcuNjIuODIgMS40MS42NyAyLjJsLS4xMS41OWgxLjkxbC4wNi0uNDNjLjIxLTEuMzYtLjI3LTIuNzEtMS4zLTMuNzF6TTkuMTIgNWwtNy4xOCA2Ljc5Yy0uNi41Ni0uOTQgMS4zNS0uOTQgMi4xOFYyMGMwIDEuNjYgMS4zNCAzIDMgM2gxMy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoOC43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNi43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIOC44NmMuNjQtMS4xMSAxLjQ4LTIuNTggMS40OS0yLjYxYTEuMDY1IDEuMDY1IDAgMCAwLS4xMi0xLjIzQzEwLjIyIDYuMTIgOS4xMiA1IDkuMTIgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxldmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOC41IDZhMS4yNSAxLjI1IDAgMSAxIDAgMi41IDEuMjUgMS4yNSAwIDAgMSAwLTIuNXptMi41IDhoLTF2NEg3di00SDZ2LTIuNWMwLTEuMS45LTIgMi0yaDFjMS4xIDAgMiAuOSAyIDJWMTR6bTQuNSAzTDEzIDEzaDVsLTIuNSA0ek0xMyAxMWwyLjUtNCAyLjUgNGgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXNjYWxhdG9yV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3LjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41UzE3LjgzIDggMTcgOHMtMS41LjY3LTEuNSAxLjV6bTMgMi41aC0yLjg0Yy0uNTguMDEtMS4xNC4zMi0xLjQ1Ljg2bC0uOTIgMS4zMkw5LjcyIDhhMi4wMiAyLjAyIDAgMCAwLTEuNzEtMUg1Yy0xLjEgMC0yIC45LTIgMnY2aDEuNXY3aDVWMTEuNjFMMTIuMDMgMTZoMi4ybC43Ny0xLjFWMjJoNHYtNWgxdi0zLjVjMC0uODItLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFc2NhbGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTIgNmgtMS43bC01IDlIN2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuMTcgMTUgNyAxNWgxLjdsNS05SDE3Yy44MyAwIDEuNS42NyAxLjUgMS41UzE3LjgzIDkgMTcgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFtaWx5UmVzdHJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNCAxOHYtNmgyLjVsLTIuNTQtNy42M0EyLjAxIDIuMDEgMCAwIDAgMTguMDYgN2gtLjEyYTIgMiAwIDAgMC0xLjkgMS4zN2wtLjg2IDIuNThjMS4wOC42IDEuODIgMS43MyAxLjgyIDMuMDV2OGgzem0tNy41LTEwLjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjVTMTEgOS4xNyAxMSAxMHMuNjcgMS41IDEuNSAxLjV6TTUuNSA2YzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyem0yIDE2di03SDlWOWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnY2aDEuNXY3aDR6bTYuNSAwdi00aDF2LTRjMC0uODItLjY4LTEuNS0xLjUtMS41aC0yYy0uODIgMC0xLjUuNjgtMS41IDEuNXY0aDF2NGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEydi0yaC0yVjdsLTMtMy0yIDItMi0yLTIgMi0yLTItMyAzdjNIM3YyaDJ2MkgzdjJoMnY0aDE0di00aDJ2LTJoLTJ2LTJoMnptLTUtNS4xNyAxIDFWMTBoLTJWNy44M2wuNDEtLjQxLjU5LS41OXptLTQgMCAuNTkuNTkuNDEuNDFWMTBoLTJWNy44M2wuNDEtLjQxLjU5LS41OXpNMTEgMTR2LTJoMnYyaC0yem0yIDJ2MmgtMnYtMmgyek03IDcuODNsMS0xIC41OS41OS40MS40MVYxMEg3VjcuODN6TTcgMTJoMnYySDd2LTJ6bTAgNGgydjJIN3YtMnptMTAgMmgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVFeHRpbmd1aXNoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE5aDEwdjFjMCAxLjEtLjkgMi0yIDJIOWMtMS4xIDAtMi0uOS0yLTJ2LTF6bTAtMWgxMHYtNUg3djV6TTE3IDN2NmwtMy4xNS0uNjZjLS4wMSAwLS4wMS4wMS0uMDIuMDIgMS41NS42MiAyLjcyIDEuOTggMy4wNyAzLjY0SDcuMWMuMzQtMS42NiAxLjUyLTMuMDIgMy4wNy0zLjY0LS4zMy0uMjYtLjYtLjU4LS44LS45NUw1IDYuNXYtMWw0LjM3LS45MUM5Ljg3IDMuNjUgMTAuODYgMyAxMiAzYy43IDAgMS4zNC4yNSAxLjg1LjY2TDE3IDN6bS00IDNjLS4wMy0uNTktLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRml0bmVzc0NlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjU3IDE0Ljg2IDIyIDEzLjQzIDIwLjU3IDEyIDE3IDE1LjU3IDguNDMgNyAxMiAzLjQzIDEwLjU3IDIgOS4xNCAzLjQzIDcuNzEgMiA1LjU3IDQuMTQgNC4xNCAyLjcxIDIuNzEgNC4xNGwxLjQzIDEuNDNMMiA3LjcxbDEuNDMgMS40M0wyIDEwLjU3IDMuNDMgMTIgNyA4LjQzIDE1LjU3IDE3IDEyIDIwLjU3IDEzLjQzIDIybDEuNDMtMS40M0wxNi4yOSAyMmwyLjE0LTIuMTQgMS40MyAxLjQzIDEuNDMtMS40My0xLjQzLTEuNDNMMjIgMTYuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvb2RCYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA0IDl2MTJoMTZWOWwtOC02em0uNSA5LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41djRoLTF2LTRjLS44MyAwLTEuNS0uNjctMS41LTEuNXYtM2gxdjNoLjV2LTNoMXYzaC41di0zaDF2M3pNMTUgMThoLTF2LTMuNWgtMXYtM2MwLTEuMS45LTIgMi0yVjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3VuZGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoM0wxMiAzIDIgMTJoM3YzSDN2MmgydjNoMnYtM2g0djNoMnYtM2g0djNoMnYtM2gydi0yaC0ydi0zek03IDE1di00LjgxbDQtMy42VjE1SDd6bTYgMFY2LjU5bDQgMy42VjE1aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGcmVlQnJlYWtmYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDR2MTBjMCAyLjIxIDEuNzkgNCA0IDRoNmMyLjIxIDAgNC0xLjc5IDQtNHYtM2gyYTIgMiAwIDAgMCAyLTJWNWMwLTEuMTEtLjg5LTItMi0yem0wIDVoLTJWNWgydjN6TTQgMTloMTZ2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNkg5VjRIN3YySDZsLTQgNHY5aDIwdi05bC00LTR6TTQgMTJoMTB2NUg0di01em0xNiA1aC00di02LjE3bDItMiAyIDJWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdvbGZDb3Vyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTkuNVwiLFwiY3lcIjpcIjE5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1LjkyIDkgMnYxOEg3di0xLjczYy0xLjc5LjM1LTMgLjk5LTMgMS43MyAwIDEuMSAyLjY5IDIgNiAyczYtLjkgNi0yYzAtLjk5LTIuMTYtMS44MS01LTEuOTdWOC45OGw2LTMuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjBIMnYtMmg1Ljc1QTguMDMyIDguMDMyIDAgMCAwIDIgMTIuMjZjLjY0LS4xNiAxLjMxLS4yNiAyLS4yNiA0LjQyIDAgOCAzLjU4IDggOHptMTAtNy43NGMtLjY0LS4xNi0xLjMxLS4yNi0yLS4yNi0yLjkzIDAtNS40OCAxLjU4LTYuODggMy45M2E5LjgyIDkuODIgMCAwIDEgLjg3IDQuMDdoOHYtMmgtNS43NUE4LjA2MSA4LjA2MSAwIDAgMSAyMiAxMi4yNnptLTYuMzYtMS4yNGExMC4wMyAxMC4wMyAwIDAgMSA0LjA5LTVDMTUuNDQgNi4xNiAxMiA5LjY3IDEyIDE0di4wMmMuOTUtMS4yNyAyLjItMi4zIDMuNjQtM3ptLTQuMjItMi4xN0E4LjUyNyA4LjUyNyAwIDAgMCA2LjcgNEM4LjE0IDUuODYgOSA4LjE4IDkgMTAuNzFjMCAuMjEtLjAzLjQxLS4wNC42MS40My4yNC44My41MiAxLjIyLjgyYTkuOTEgOS45MSAwIDAgMSAxLjI0LTMuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbGlkYXlWaWxsYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjBWOC4zNUwxMy42NSA0aC0yLjgzTDE2IDkuMThWMjBoMnptNCAwVjYuNjlMMTkuMzEgNGgtMi44M0wyMCA3LjUyVjIwaDJ6TTggNGwtNiA2djEwaDV2LTVoMnY1aDVWMTBMOCA0em0xIDlIN3YtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdFR1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiN1wiLFwiY3lcIjpcIjZcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMTUgMTJjLS4zMS0uMjItLjU5LS40Ni0uODItLjcybC0xLjQtMS41NWMtLjE5LS4yMS0uNDMtLjM4LS42OS0uNS0uMjktLjE0LS42Mi0uMjMtLjk2LS4yM2gtLjAzQzYuMDEgOSA1IDEwLjAxIDUgMTEuMjVWMTJIMnY4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LThIMTEuMTV6TTcgMjBINXYtNmgydjZ6bTQgMEg5di02aDJ2NnptNCAwaC0ydi02aDJ2NnptNCAwaC0ydi02aDJ2NnptLS4zNS0xNC4xNC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTggM2gtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2Yy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MXptLTQgMC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTQgM2gtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2Yy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG91c2VTaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMmgzTDEyIDMgMiAxMmgzdjhoMnYtMmgxMHYyaDJ2LTh6TTcuMjEgMTBoOS41OGwuMjEuMTlWMTJIN3YtMS44MWwuMjEtLjE5em03LjM2LTJIOS40M0wxMiA1LjY5IDE0LjU3IDh6TTcgMTZ2LTJoMTB2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDkuM1Y0aC0zdjIuNkwxMiAzIDIgMTJoM3Y4aDV2LTZoNHY2aDV2LThoM2wtMy0yLjd6bS05IC43YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXNlYm9hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE2Yy0xLjk1IDAtMi4xIDEtMy4zNCAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxdjJjMS45IDAgMi4xNy0xIDMuMzUtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOC0xIDMuMzItMXMxLjM3IDEgMy4zMiAxYzEuOTEgMCAyLjE0LTEgMy4zMy0xIDEuMTggMCAxLjQ1IDEgMy4zNSAxdi0yYy0xLjI0IDAtMS4zOC0xLTMuMzMtMS0xLjkxIDAtMi4xNCAxLTMuMzMgMS0xLjI0IDAtMS4zOS0xLTMuMzQtMXptOC4zNC00LjY2LTEuMzcgMS4zN2MtLjE5LjE4LS40NS4yOS0uNzEuMjlIMTdWOS42NWwxLjMyLjk3TDE5LjUgOSAxMiAzLjUgNC41IDlsMS4xOCAxLjYxTDcgOS42NVYxM0g1Ljc0Yy0uMjcgMC0uNTItLjExLS43MS0uMjlsLTEuMzctMS4zNy0xLjQxIDEuNDEgMS4zNyAxLjM3Yy41Ni41NiAxLjMzLjg4IDIuMTIuODhoMTIuNTFjLjggMCAxLjU2LS4zMiAyLjEyLS44OGwxLjM3LTEuMzctMS40LTEuNDF6TTEzIDEzaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSXJvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZjLTEuNjYgMC0zIDEuMzQtMyAzdjRjMCAuNTUtLjQ1IDEtMSAxdi00YzAtMS42Ni0xLjM0LTMtMy0zaC00Yy0xLjY2IDAtMyAxLjM0LTMgM2gyYzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjFINmMtMi4yMSAwLTQgMS43OS00IDR2M2gxNXYtMmMxLjY2IDAgMy0xLjM0IDMtM1Y5YzAtLjU1LjQ1LTEgMS0xaDFWNmgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2l0Y2hlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDlWNGMwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnY1aDE2ek04IDVoMnYzSDhWNXptLTQgNnY5YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTlINHptNiA2SDh2LTVoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWV0aW5nUm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNnYxNUgzdi0yaDJWM2g5djFoNXYxNWgydjJoLTRWNmgtM3ptLTQgNXYyaDJ2LTJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pY3Jvd2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuOCAxMC42MSA1LjM3IDkuMTlDNS43MyA4Ljc5IDYuNTkgOCA3Ljc1IDhjLjggMCAxLjM5LjM5IDEuODEuNjcuMzEuMjEuNTEuMzMuNjkuMzMuMzcgMCAuOC0uNDEuOTUtLjYxbDEuNDIgMS40MmMtLjM2LjQtMS4yMiAxLjE5LTIuMzcgMS4xOS0uNzkgMC0xLjM3LS4zOC0xLjc5LS42Ni0uMzMtLjIyLS41Mi0uMzQtLjcxLS4zNC0uMzcgMC0uOC40MS0uOTUuNjF6TTcuNzUgMTVjLjE5IDAgLjM4LjEyLjcxLjM0LjQyLjI4IDEgLjY2IDEuNzkuNjYgMS4xNiAwIDIuMDEtLjc5IDIuMzctMS4xOWwtMS40Mi0xLjQyYy0uMTUuMi0uNTkuNjEtLjk1LjYxLS4xOCAwLS4zOC0uMTItLjY5LS4zMy0uNDItLjI4LTEuMDEtLjY3LTEuODEtLjY3LTEuMTYgMC0yLjAyLjc5LTIuMzggMS4xOWwxLjQyIDEuNDJjLjE2LS4yLjU5LS42MS45Ni0uNjF6TTIyIDZ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAyem0tOCAwSDR2MTJoMTBWNnptNSAxMGMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xem0wLTRjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXptMC01aC0ydjJoMlY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodFNoZWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bS0yLjI1IDkuNWExLjI1IDEuMjUgMCAxIDEgMCAyLjUgMS4yNSAxLjI1IDAgMCAxIDAtMi41ek0xNyAxOGgtMXYtMS41SDhWMThIN3YtN2gxdjQuNWgzLjVWMTJIMTVjMS4xIDAgMiAuOSAyIDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9CYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsMi43NiAyLjc2QzQuMDYgNy4zMSA0IDcuNjQgNCA4djEyYzAgMS4xLjkgMiAyIDJoMTJjLjM0IDAgLjY1LS4wOS45My0uMjRsLjg1Ljg1IDEuNDEtMS40MnpNNiAxNHYtMmgzLjE3bDIgMkg2em04LjgzLTJMNi45OCA0LjE1Yy4wMSAwIC4wMS0uMDEuMDItLjAxVjJoM3YyaDRWMmgzdjIuMTRjMS43Mi40NSAzIDIgMyAzLjg2djkuMTdsLTItMlYxMmgtMy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9DZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC44MyA2LTMuNy0zLjdDNS40MiAxLjU1IDYuMTUgMSA3IDFsMTAgLjAxYzEuMSAwIDIgLjg5IDIgMS45OXYxMy4xN2wtMi0yVjZIOC44M3ptMTAuOTUgMTYuNjEtLjkxLS45MWMtLjI5Ljc1LTEuMDIgMS4zLTEuODcgMS4zSDdjLTEuMSAwLTItLjktMi0yVjcuODNMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyek0xNS4xNyAxOCA3IDkuODNWMThoOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9Ecmlua3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjgzIDNIMjF2MmwtNi4yIDYuOTdMOS44MyA3aDYuNzRsMS43OC0ySDcuODNsLTItMnptMTMuOTUgMTkuNjFMMTggMjAuODNWMjFINnYtMmg1di01bC0xLjM3LTEuNTQtOC4yNC04LjI0TDIuOCAyLjgxIDMgM2wxOC4xOSAxOC4xOS0xLjQxIDEuNDJ6TTE2LjE3IDE5IDEzIDE1LjgzVjE5aDMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vRmxhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45MyAxMy45MyAyLjQ1IDIuNDUgMS4wNCAzLjg3bDUuMyA1LjMtLjIuMjNIMy42Yy0uODggMC0xLjYuNzItMS42IDEuNnY5LjRjMCAuODguNzIgMS42IDEuNiAxLjZoMTIuOGMuNzUgMCAxLjM4LS41MiAxLjU1LTEuMjJsMi4xOCAyLjE4IDEuNDEtMS40MUwxOCAxOGwtNC4wNy00LjA3ek0xMCAyMGMtMi4yMSAwLTQtMS43OS00LTQgMC0xLjk1IDEuNC0zLjU3IDMuMjUtMy45MmwxLjU3IDEuNTdjLS4yNi0uMDktLjUzLS4xNS0uODItLjE1YTIuNSAyLjUgMCAwIDAgMCA1IDIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLS4yOS0uMDYtLjU2LS4xNS0uODJsMS41NyAxLjU3QTMuOTkzIDMuOTkzIDAgMCAxIDEwIDIwem04LTQuODNMMTAuODMgOGgxLjc1bDEuMjggMS40aDIuNTRjLjg4IDAgMS42LjcyIDEuNiAxLjZ2NC4xN3ptMi40LTkuNTdIMjJMMTkgMTFWN2gtMVYyaDRsLTEuNiAzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vRm9vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjM1IDguNTIgMTEgNWg1VjFoMnY0aDVsLTEuMzggMTMuNzlMMTEuMzUgOC41MnpNMSAyMXYxYzAgLjU1LjQ1IDEgMSAxaDEzYy41NSAwIDEtLjQ1IDEtMXYtMUgxem0yMC45LjlMMi4xIDIuMS42OSAzLjUxbDUuNyA1LjdDMy4yOCA5Ljg3IDEgMTEuOTkgMSAxNWgxMS4xN2wyIDJIMXYyaDE1di0uMTdsNC40OSA0LjQ5IDEuNDEtMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9NZWV0aW5nUm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTFoLTF2Mmgydi0xbDkuNzMgOS43M0wyMC40NiAyMyAxNCAxNi41NFYyMUgzdi0yaDJWNy41NGwtNC00IDEuMjctMS4yN0wxMSAxMXptMyAuNDlMNS41MSAzSDE0djFoNXYxMi40OWwtMi0yVjZoLTN2NS40OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9QaG90b2dyYXBoeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjk0IDguMTIgNy40OCA0LjY2IDkgM2g2bDEuODMgMkgyMGMxLjEgMCAyIC45IDIgMnYxMmMwIC4wNS0uMDEuMS0uMDIuMTZsLTUuMS01LjFjLjA4LS4zNS4xMi0uNy4xMi0xLjA2IDAtMi43Ni0yLjI0LTUtNS01LS4zNiAwLS43MS4wNC0xLjA2LjEyem05LjU1IDE1LjE5TDE4LjE3IDIxSDRjLTEuMSAwLTItLjktMi0yVjdjMC0uNTkuMjctMS4xMi42OC0xLjQ5bC0yLTJMMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxem0tNi01Ljk5LTEuNS0xLjVjLS4zMi4xLS42NC4xOC0uOTkuMTgtMS42NiAwLTMtMS4zNC0zLTMgMC0uMzUuMDgtLjY3LjE5LS45OGwtMS41LTEuNUE0Ljc0IDQuNzQgMCAwIDAgNyAxM2MwIDIuNzYgMi4yNCA1IDUgNSAuOTEgMCAxLjc2LS4yNSAyLjQ5LS42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9TdHJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMThjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yek0xOC42NSAzYy0xLjY2IDAtMi41NCAxLjI3LTMuMTggMi4wM2wtMy41IDQuMTFMMTcgMTQuMTd2LTcuOWMuNTgtLjY4Ljk3LTEuMjcgMS42NS0xLjI3Ljc3IDAgMS4zNS42NiAxLjM1IDEuNDhWN2gydi0uNTJDMjIgNC41NiAyMC41MiAzIDE4LjY1IDN6bS03Ljk4IDcuNjdMMi44MSAyLjgxIDEuMzkgNC4yMmw3Ljk3IDcuOTctMi42NiAzLjEyYy0uNTUuNjUtLjA5IDEuNjUuNzYgMS42NWg2LjY2bDEuMTcgMS4xN0MxNC41NCAxOC40MiAxNCAxOS4xNCAxNCAyMGMwIDEuMS45IDIgMiAyIC44NiAwIDEuNTgtLjU0IDEuODctMS4zbDEuOTEgMS45MSAxLjQxLTEuNDEtNC44LTQuOC01LjcyLTUuNzN6bTIuOC01LjY0Yy4yNy0uMzIuNTgtLjcyLjk4LTEuMDlhOS4zNDcgOS4zNDcgMCAwIDAtNy44MS0uMTNsNC4yNSA0LjI1IDIuNTgtMy4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3RoZXJIb3VzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDEgMTEuNGwxLjIxIDEuNTlMNCAxMS42MlYyMWgxNnYtOS4zOGwxLjc5IDEuMzZMMjMgMTEuNCAxMiAzek04IDE1Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTQgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem00IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9vbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIxYy0xLjExIDAtMS43My0uMzctMi4xOC0uNjQtLjM3LS4yMi0uNi0uMzYtMS4xNS0uMzYtLjU2IDAtLjc4LjEzLTEuMTUuMzYtLjQ2LjI3LTEuMDcuNjQtMi4xOC42NHMtMS43My0uMzctMi4xOC0uNjRjLS4zNy0uMjItLjYtLjM2LTEuMTUtLjM2LS41NiAwLS43OC4xMy0xLjE1LjM2LS40Ni4yNy0xLjA4LjY0LTIuMTkuNjQtMS4xMSAwLTEuNzMtLjM3LTIuMTgtLjY0LS4zNy0uMjMtLjYtLjM2LTEuMTUtLjM2cy0uNzguMTMtMS4xNS4zNmMtLjQ2LjI3LTEuMDguNjQtMi4xOS42NHYtMmMuNTYgMCAuNzgtLjEzIDEuMTUtLjM2LjQ2LS4yNyAxLjA4LS42NCAyLjE5LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIzLjU5LjM2IDEuMTUuMzYuNTYgMCAuNzgtLjEzIDEuMTUtLjM2LjQ2LS4yNyAxLjA4LS42NCAyLjE5LS42NCAxLjExIDAgMS43My4zNyAyLjE4LjY0LjM3LjIyLjYuMzYgMS4xNS4zNnMuNzgtLjEzIDEuMTUtLjM2Yy40NS0uMjcgMS4wNy0uNjQgMi4xOC0uNjRzMS43My4zNyAyLjE4LjY0Yy4zNy4yMy41OS4zNiAxLjE1LjM2djJ6bTAtNC41Yy0xLjExIDAtMS43My0uMzctMi4xOC0uNjQtLjM3LS4yMi0uNi0uMzYtMS4xNS0uMzYtLjU2IDAtLjc4LjEzLTEuMTUuMzYtLjQ1LjI3LTEuMDcuNjQtMi4xOC42NHMtMS43My0uMzctMi4xOC0uNjRjLS4zNy0uMjItLjYtLjM2LTEuMTUtLjM2LS41NiAwLS43OC4xMy0xLjE1LjM2LS40NS4yNy0xLjA3LjY0LTIuMTguNjRzLTEuNzMtLjM3LTIuMTgtLjY0Yy0uMzctLjIyLS42LS4zNi0xLjE1LS4zNnMtLjc4LjEzLTEuMTUuMzZjLS40Ny4yNy0xLjA5LjY0LTIuMi42NHYtMmMuNTYgMCAuNzgtLjEzIDEuMTUtLjM2LjQ1LS4yNyAxLjA3LS42NCAyLjE4LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIyLjYuMzYgMS4xNS4zNi41NiAwIC43OC0uMTMgMS4xNS0uMzYuNDUtLjI3IDEuMDctLjY0IDIuMTgtLjY0czEuNzMuMzcgMi4xOC42NGMuMzcuMjIuNi4zNiAxLjE1LjM2cy43OC0uMTMgMS4xNS0uMzZjLjQ1LS4yNyAxLjA3LS42NCAyLjE4LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIyLjYuMzYgMS4xNS4zNnYyek04LjY3IDEyYy41NiAwIC43OC0uMTMgMS4xNS0uMzYuNDYtLjI3IDEuMDgtLjY0IDIuMTktLjY0IDEuMTEgMCAxLjczLjM3IDIuMTguNjQuMzcuMjIuNi4zNiAxLjE1LjM2cy43OC0uMTMgMS4xNS0uMzZjLjEyLS4wNy4yNi0uMTUuNDEtLjIzTDEwLjQ4IDVDOC45MyAzLjQ1IDcuNSAyLjk5IDUgM3YyLjVjMS44Mi0uMDEgMi44OS4zOSA0IDEuNWwxIDEtMy4yNSAzLjI1Yy4zMS4xMi41Ni4yNy43Ny4zOS4zNy4yMy41OS4zNiAxLjE1LjM2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSaWNlQm93bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyYzAgMy42OSAyLjQ3IDYuODYgNiA4LjI1VjIyaDh2LTEuNzVjMy41My0xLjM5IDYtNC41NiA2LTguMjV6bS0yIDBoLTRWNS4wOGMyLjM5IDEuMzkgNCAzLjk3IDQgNi45MnptLTYtNy43NFYxMmgtNFY0LjI2Yy42NC0uMTYgMS4zMS0uMjYgMi0uMjZzMS4zNi4xIDIgLjI2ek00IDEyYzAtMi45NSAxLjYxLTUuNTMgNC02LjkyVjEySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvb2ZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxOGgtMnYtMmgydjJ6bTItNEg5djZoNnYtNnptNC00LjdWNGgtM3YyLjZMMTIgMyAyIDEyaDNsNy02LjMxTDE5IDEyaDNsLTMtMi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb29tUHJlZmVyZW5jZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMS4yNlY2aDN2NGgyVjRoLTVWM0g1djE2SDN2Mmg5LjI2QTYuOTYzIDYuOTYzIDAgMCAxIDExIDE3YzAtMi4zOCAxLjE5LTQuNDcgMy01Ljc0ek0xMCAxMWgydjJoLTJ2LTJ6bTExLjY5IDUuMzcgMS4xNC0xLTEtMS43My0xLjQ1LjQ5Yy0uMzItLjI3LS42OC0uNDgtMS4wOC0uNjNMMTkgMTJoLTJsLS4zIDEuNDljLS40LjE1LS43Ni4zNi0xLjA4LjYzbC0xLjQ1LS40OS0xIDEuNzMgMS4xNCAxYy0uMDguNS0uMDguNzYgMCAxLjI2bC0xLjE0IDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE3IDIyaDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMWMuMDgtLjUxLjA4LS43NyAwLTEuMjd6TTE4IDE5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9vbVNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTdoMjB2Mkgyem0xMS44NC05LjIxQTIuMDA2IDIuMDA2IDAgMCAwIDEyIDVhMi4wMDYgMi4wMDYgMCAwIDAtMS44NCAyLjc5QzYuMjUgOC42IDMuMjcgMTEuOTMgMyAxNmgxOGMtLjI3LTQuMDctMy4yNS03LjQtNy4xNi04LjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSdkhvb2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTE0IDExaDR2M2gtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTd2LTZjMC0xLjEtLjktMi0yLTJIN1Y3bC0zIDMgMyAzdi0yaDR2M0g0djNjMCAxLjEuOSAyIDIgMmgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoOHYtMmgtMnptLTkgM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem03LTZoLTR2LTNoNHYzek0xNyAydjJIOXYyaDh2MmwzLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNtb2tlRnJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgNiA2Ljk5IDdIMnYzaDkuOTlsNyA3IDEuMjYtMS4yNS0xNy0xN3ptMTguNSA3SDIydjNoLTEuNXpNMTggMTNoMS41djNIMTh6bS44NS04LjEyYy42Mi0uNjEgMS0xLjQ1IDEtMi4zOGgtMS41YzAgMS4wMi0uODMgMS44NS0xLjg1IDEuODV2MS41YzIuMjQgMCA0IDEuODMgNCA0LjA3VjEySDIyVjkuOTJjMC0yLjIzLTEuMjgtNC4xNS0zLjE1LTUuMDR6TTE0LjUgOC43aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjEyaDEuNXYtMS41OWMwLTEuOC0xLjYtMy4xNi0zLjQ3LTMuMTZIMTQuNWMtMS4wMiAwLTEuODUtLjk4LTEuODUtMnMuODMtMS43NSAxLjg1LTEuNzVWMmEzLjM1IDMuMzUgMCAwIDAgMCA2Ljd6bTIuNSA3LjIzVjEzaC0yLjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbW9raW5nUm9vbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2aDE1djNIMnptMTguNSAwSDIydjNoLTEuNXpNMTggMTZoMS41djNIMTh6bS44NS04LjI3Yy42Mi0uNjEgMS0xLjQ1IDEtMi4zOEMxOS44NSAzLjUgMTguMzUgMiAxNi41IDJ2MS41YzEuMDIgMCAxLjg1LjgzIDEuODUgMS44NVMxNy41MiA3LjIgMTYuNSA3LjJ2MS41YzIuMjQgMCA0IDEuODMgNCA0LjA3VjE1SDIydi0yLjI0YzAtMi4yMi0xLjI4LTQuMTQtMy4xNS01LjAzem0tMi44MiAyLjQ3SDE0LjVjLTEuMDIgMC0xLjg1LS45OC0xLjg1LTJzLjgzLTEuNzUgMS44NS0xLjc1di0xLjVhMy4zNSAzLjM1IDAgMCAwIDAgNi43aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjE1aDEuNXYtMS42NGMwLTEuODEtMS42LTMuMTYtMy40Ny0zLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4xMiA1LTcuMTggNi43OWMtLjYuNTYtLjk0IDEuMzUtLjk0IDIuMThWMjBjMCAxLjY2IDEuMzQgMyAzIDNoMTMuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDcuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDguNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDYuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDguODZjLjY0LTEuMTEgMS40OC0yLjU4IDEuNDktMi42MWExLjA2NSAxLjA2NSAwIDAgMC0uMTItMS4yM0MxMC4yMiA2LjEyIDkuMTIgNSA5LjEyIDV6TTE0IDYuMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1bTAtMS41Yy0xLjI0IDAtMi4yNSAxLjAxLTIuMjUgMi4yNVMxMi43NiA5LjI1IDE0IDkuMjUgMTYuMjUgOC4yNCAxNi4yNSA3IDE1LjI0IDQuNzUgMTQgNC43NXptNS43NS43NWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjUtLjUtLjIyLS41LS41LjIyLS41LjUtLjVtMC0xLjVjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek0xNi41IDFjLS44MyAwLTEuNS42Ny0xLjUgMS41UzE1LjY3IDQgMTYuNSA0IDE4IDMuMzMgMTggMi41IDE3LjMzIDEgMTYuNSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTEzLjk3IDIxLjQ5Yy0uNjMuMjMtMS4yOS40LTEuOTcuNTEuNjgtLjEyIDEuMzMtLjI5IDEuOTctLjUxek0xMiAyMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41NSAxMnptMTAuNDMtMS42MXpNMTUuNDkgOS42M2MtLjE4LTIuNzktMS4zMS01LjUxLTMuNDMtNy42M2ExMi4xODggMTIuMTg4IDAgMCAwLTMuNTUgNy42M2MxLjI4LjY4IDIuNDYgMS41NiAzLjQ5IDIuNjMgMS4wMy0xLjA2IDIuMjEtMS45NCAzLjQ5LTIuNjN6bS02LjUgMi42NWMtLjE0LS4xLS4zLS4xOS0uNDUtLjI5LjE1LjExLjMxLjE5LjQ1LjI5em02LjQyLS4yNWMtLjEzLjA5LS4yNy4xNi0uNC4yNi4xMy0uMS4yNy0uMTcuNC0uMjZ6TTEyIDE1LjQ1QzkuODUgMTIuMTcgNi4xOCAxMCAyIDEwYzAgNS4zMiAzLjM2IDkuODIgOC4wMyAxMS40OS42My4yMyAxLjI5LjQgMS45Ny41MS42OC0uMTIgMS4zMy0uMjkgMS45Ny0uNTFDMTguNjQgMTkuODIgMjIgMTUuMzIgMjIgMTBjLTQuMTggMC03Ljg1IDIuMTctMTAgNS40NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWgtMS41NmMuMzUtLjU5LjU2LTEuMjcuNTYtMiAwLTIuMjEtMS43OS00LTQtNC0uMzQgMC0uNjYuMDUtLjk4LjEzQTQuNzA3IDQuNzA3IDAgMCAwIDEwIDIuMDJjLTEuODkgMC0zLjUxIDEuMTEtNC4yNyAyLjcxQzQuMTUgNS4yNiAzIDYuNzQgMyA4LjVjMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMjFoMTF2LTJoMmMxLjEgMCAyLS45IDItMnYtNmMwLTEuMS0uOS0yLTItMnpNNyAxMC41Yy0xLjEgMC0yLS45LTItMiAwLS44NS41NS0xLjYgMS4zNy0xLjg4bC44LS4yNy4zNi0uNzZDOCA0LjYyIDguOTQgNC4wMiAxMCA0LjAyYy43OSAwIDEuMzkuMzUgMS43NC42NWwuNzguNjVTMTMuMTYgNSAxMy45OSA1YzEuMSAwIDIgLjkgMiAyaC0zQzkuNjcgNyA5LjE1IDEwLjUgNyAxMC41ek0xOSAxN2gtMnYtNmgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YWlycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMSA1aC0yLjQydjMuMzNIMTN2My4zM2gtMi41OFYxOEg2di0yaDIuNDJ2LTMuMzNIMTFWOS4zM2gyLjU4VjZIMTh2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcmVmcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjkgOC44OS0xLjA1LTQuMzdjLS4yMi0uOS0xLTEuNTItMS45MS0xLjUySDUuMDVjLS45IDAtMS42OS42My0xLjkgMS41MkwyLjEgOC44OWMtLjI0IDEuMDItLjAyIDIuMDYuNjIgMi44OC4wOC4xMS4xOS4xOS4yOC4yOVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi02Ljk0Yy4wOS0uMDkuMi0uMTguMjgtLjI4LjY0LS44Mi44Ny0xLjg3LjYyLTIuODl6bS0yLjk5LTMuOSAxLjA1IDQuMzdjLjEuNDIuMDEuODQtLjI1IDEuMTctLjE0LjE4LS40NC40Ny0uOTQuNDctLjYxIDAtMS4xNC0uNDktMS4yMS0xLjE0TDE2Ljk4IDVsMS45My0uMDF6TTEzIDVoMS45NmwuNTQgNC41MmMuMDUuMzktLjA3Ljc4LS4zMyAxLjA3LS4yMi4yNi0uNTQuNDEtLjk1LjQxLS42NyAwLTEuMjItLjU5LTEuMjItMS4zMVY1ek04LjQ5IDkuNTIgOS4wNCA1SDExdjQuNjljMCAuNzItLjU1IDEuMzEtMS4yOSAxLjMxLS4zNCAwLS42NS0uMTUtLjg5LS40MWExLjQyIDEuNDIgMCAwIDEtLjMzLTEuMDd6bS00LjQ1LS4xNkw1LjA1IDVoMS45N2wtLjU4IDQuODZjLS4wOC42NS0uNiAxLjE0LTEuMjEgMS4xNC0uNDkgMC0uOC0uMjktLjkzLS40Ny0uMjctLjMyLS4zNi0uNzUtLjI2LTEuMTd6TTUgMTl2LTYuMDNjLjA4LjAxLjE1LjAzLjIzLjAzLjg3IDAgMS42Ni0uMzYgMi4yNC0uOTUuNi42IDEuNC45NSAyLjMxLjk1Ljg3IDAgMS42NS0uMzYgMi4yMy0uOTMuNTkuNTcgMS4zOS45MyAyLjI5LjkzLjg0IDAgMS42NC0uMzUgMi4yNC0uOTUuNTguNTkgMS4zNy45NSAyLjI0Ljk1LjA4IDAgLjE1LS4wMi4yMy0uMDNWMTlINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Ryb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN3YtLjUyQzIyIDQuNTYgMjAuNTIgMyAxOC42NSAzYy0xLjY2IDAtMi41NCAxLjI3LTMuMTggMi4wM2wtOC44IDEwLjMyQzYuMTIgMTYgNi41OCAxNyA3LjQzIDE3SDE1YzEuMSAwIDItLjkgMi0yVjYuMjdjLjU4LS42OC45Ny0xLjI3IDEuNjUtMS4yNy43NyAwIDEuMzUuNjYgMS4zNSAxLjQ4VjdoMnpNMTQuMyA0LjFhOC45NjIgOC45NjIgMCAwIDAtOS41OC42Mmw0Ljg5IDQuODlMMTQuMyA0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhcGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWMWgtOHY5YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjIxaC0ydjJoNnYtMmgtMnYtNy4xNGMxLjcyLS40NSAzLTIgMy0zLjg2em0tMi03djNoLTRWM2g0em0tNy41IDguNUEyLjUgMi41IDAgMCAxIDEwIDE0SDh2OUg2di05SDRhMi41IDIuNSAwIDAgMSAwLTVoMlY4SDRhMi41IDIuNSAwIDAgMSAwLTVoMlYxaDJ2MmgyYTIuNSAyLjUgMCAwIDEgMCA1SDh2MWgyYTIuNSAyLjUgMCAwIDEgMi41IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNGgydjJoLTJWNHptLTEgM2gydjJoLTJWN3ptLTItM2gydjJoLTJWNHptNyA1aC0yVjdoMnYyem0xLTNoLTJWNGgydjJ6bTIgM2gtMlY3aDJ2MnptMS0zaC0yVjRoMnYyem0tNy4zOCA4LjM4TDEyLjEgMTYuOWMtMi41LTEuNDMtNC41Ny0zLjUtNi02bDIuNTItMi41MmMuMjQtLjI0LjM0LS41OC4yOC0uOUw4LjE2IDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhIMy4wM2MtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjAyIDUuNiAyLjQgNy45NyAxLjU4IDIuNzMgMy44NSA0Ljk5IDYuNTcgNi41NyAyLjM3IDEuMzcgNS4wOCAyLjIzIDcuOTcgMi40LjU2LjAzIDEuMDMtLjQ0IDEuMDMtMXYtNC4xNWMwLS40OC0uMzQtLjg5LS44LS45OGwtMy42Ny0uNzNhLjk5Ljk5IDAgMCAwLS45MS4yN3pNMTQgMTBoMnYyaC0ydi0yem0tMyAwaDJ2MmgtMnYtMnptOCAyaC0ydi0yaDJ2MnptMyAwaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW1icmVsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDYuOTIgMTMgNS43N1YzLjRjMC0uMjYuMjItLjQ4LjUtLjQ4cy41LjIxLjUuNDhWNGgydi0uNkMxNiAyLjA3IDE0Ljg4IDEgMTMuNSAxUzExIDIuMDcgMTEgMy40djIuMzdMOS41IDYuOTIgNiA2LjA3bDUuMDUgMTUuMjVjLjE1LjQ1LjU1LjY4Ljk1LjY4cy44LS4yMy45NS0uNjlMMTggNi4wN2wtMy41Ljg1ek0xMy4yOCA4LjVsLjc2LjU4LjkyLS4yM0wxMyAxNC44VjguMjlsLjI4LjIxem0tMy4zMi41OS43Ni0uNTguMjgtLjIydjYuNTFMOS4wMyA4Ljg2bC45My4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmFwZUZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2LjVoMWMxLjMzIDAgMi43MS0uMTggNC0uNXYzYy0xLjI5LS4zMi0yLjY3LS41LTQtLjVIMnYtMnpNMTYuMTcgMTlIOHYtM2g1LjE3TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDEtMy42LTMuNnptMi42Ni0zSDIydjNoLS4xN2wtMy0zek0xMSAxNy41YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNS4yMi41LjUuNS41LS4yMi41LS41em0xMS00Ljc0VjE1aC0xLjV2LTIuMjNjMC0yLjI0LTEuNzYtNC4wNy00LTQuMDdWNy4yYzEuMDIgMCAxLjg1LS44MyAxLjg1LTEuODVTMTcuNTIgMy41IDE2LjUgMy41VjJjMS44NSAwIDMuMzUgMS41IDMuMzUgMy4zNSAwIC45My0uMzggMS43Ny0xIDIuMzggMS44Ny44OSAzLjE1IDIuODEgMy4xNSA1LjAzek0xMS4xNSA4LjMyVjguM2MwLTEuODUgMS41LTMuMzUgMy4zNS0zLjM1djEuNWMtMS4wMiAwLTEuODUuNzMtMS44NSAxLjc1cy44MyAyIDEuODUgMmgxLjUzYzEuODcgMCAzLjQ3IDEuMzUgMy40NyAzLjE2VjE1SDE4di0xLjNjMC0xLjMxLS45Mi0yLjA1LTEuOTctMi4wNWgtMS41NWwtMy4zMy0zLjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWYXBpbmdSb29tcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTYuNWgxYzEuMzMgMCAyLjcxLS4xOCA0LS41djNjLTEuMjktLjMyLTIuNjctLjUtNC0uNUgydi0yem0yMC0uNXYzSDh2LTNoMTR6bS0xMSAxLjVjMC0uMjgtLjIyLS41LS41LS41cy0uNS4yMi0uNS41LjIyLjUuNS41LjUtLjIyLjUtLjV6bTExLTQuNzRWMTVoLTEuNXYtMi4yM2MwLTIuMjQtMS43Ni00LjA3LTQtNC4wN1Y3LjJjMS4wMiAwIDEuODUtLjgzIDEuODUtMS44NVMxNy41MiAzLjUgMTYuNSAzLjVWMmMxLjg1IDAgMy4zNSAxLjUgMy4zNSAzLjM1IDAgLjkzLS4zOCAxLjc3LTEgMi4zOCAxLjg3Ljg5IDMuMTUgMi44MSAzLjE1IDUuMDN6bS0yLjUuNlYxNUgxOHYtMS4zYzAtMS4zMS0uOTItMi4wNS0xLjk3LTIuMDVIMTQuNWEzLjM1IDMuMzUgMCAwIDEgMC02Ljd2MS41Yy0xLjAyIDAtMS44NS43My0xLjg1IDEuNzVzLjgzIDIgMS44NSAyaDEuNTNjMS44NyAwIDMuNDcgMS4zNSAzLjQ3IDMuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpbGxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMUgzVjhsMTMtNXY3SDd2MTF6bTEyLTExYy0xLjEgMC0yIC45LTIgMkg5djloNXYtNWgydjVoNXYtOWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgOEEyLjUgMi41IDAgMCAwIDIxIDUuNUMyMSAzLjgzIDE4LjUgMSAxOC41IDFTMTYgMy44MyAxNiA1LjVBMi41IDIuNSAwIDAgMCAxOC41IDh6bS01IDFjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjg0LTEuNS0yLjUtMS41LTIuNVMxMiA2LjY2IDEyIDcuNWMwIC44My42NyAxLjUgMS41IDEuNXpNOS4xMiA1bC03LjE4IDYuNzljLS42LjU2LS45NCAxLjM1LS45NCAyLjE4VjIwYzAgMS42NiAxLjM0IDMgMyAzaDEzLjc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg3Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg4Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg2Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUg4Ljg2Yy42NC0xLjExIDEuNDgtMi41OCAxLjQ5LTIuNjFhMS4wNjUgMS4wNjUgMCAwIDAtLjEyLTEuMjNDMTAuMjIgNi4xMiA5LjEyIDUgOS4xMiA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXRlckRhbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMiAxMmgzdjhoMTR2LThoM0wxMiAzem0wIDEzYy0xLjEgMC0yLS45LTItMnMyLTQgMi00IDIgMi45IDIgNC0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2hlZWxjaGFpclBpY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNS41IDYuOTVWOWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2gzLjV2LS4xMWMtMS4yNC0xLjI2LTItMi45OS0yLTQuODkgMC0yLjU4IDEuNDEtNC44NCAzLjUtNi4wNXpNMTYuNSAxN2MwIDEuNjUtMS4zNSAzLTMgM3MtMy0xLjM1LTMtM2MwLTEuMTEuNjEtMi4wNiAxLjUtMi41OHYtMi4xNmMtMi4wMi42NC0zLjUgMi41MS0zLjUgNC43NCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01aC0yem0zLjA0LTNIMTVWOGgtMnY4aDUuNDZsMi40NyAzLjcxIDEuNjYtMS4xMS0zLjA1LTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0aHJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek05IDE4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAtM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0zIDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMC0zYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTMgM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0wLTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi0zSDd2LTFjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMC43OFY4YzAtMS42NS0xLjM1LTMtMy0zaC00Yy0uNzcgMC0xLjQ3LjMtMiAuNzgtLjUzLS40OC0xLjIzLS43OC0yLS43OEg2QzQuMzUgNSAzIDYuMzUgMyA4djIuNzhjLS42MS41NS0xIDEuMzQtMSAyLjIydjZoMnYtMmgxNnYyaDJ2LTZjMC0uODgtLjM5LTEuNjctMS0yLjIyek0xNCA3aDRjLjU1IDAgMSAuNDUgMSAxdjJoLTZWOGMwLS41NS40NS0xIDEtMXpNNSA4YzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjJINVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWRyb29tQmFieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS04IDE2Yy0yLjY0IDAtNS4xMy0xLjAzLTctMi45bDEuMDYtMS4wNmMuMzQuMzQuNzEuNjUgMS4xLjkyTDggMTMuNVY5LjUxbC0xLjU1Ljk5LS45NS0xTDcgNy43NiA2IDdoMy42NWwxLjczIDNIMTd2MWgtMXYyLjVsLjg0IDEuNDZjLjM5LS4yOC43Ni0uNTggMS4xLS45MkwxOSAxNS4xYTkuODQyIDkuODQyIDAgMCAxLTcgMi45elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC42OSAxNC4yNGE3LjcyIDcuNzIgMCAwIDEtNS40IDBsLS44MSAxLjQxLS4wMy4wNmMxLjEuNTIgMi4yOC43OSAzLjUzLjc5czIuNDUtLjI4IDMuNTUtLjc5bC0uMDMtLjA2LS44MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWRyb29tQ2hpbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOC41aDZ2Mkg5ek0xNS42NCAxMkg4LjM3YS44Ny44NyAwIDAgMC0uODcuODdoLjAxVjE0aDl2LTEuMTNhLjg3Ljg3IDAgMCAwLS44Ny0uODd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMiAxNWgtMS41di0xLjVoLTlWMTdINnYtNC4xM2MwLTEgLjYyLTEuODUgMS41LTIuMlY5YzAtMS4xLjktMiAyLTJoNWMxLjEgMCAyIC45IDIgMnYxLjY3Yy44OC4zNSAxLjUgMS4yIDEuNSAyLjJWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlZHJvb21QYXJlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTJoLTljLS41NSAwLTEgLjQ1LTEgMXYxaDExdi0xYzAtLjU1LS40NS0xLTEtMXpNNy4yNSA4LjVoNHYyaC00ek0xMi43NSA4LjVoNHYyaC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgMTVoLTEuNXYtMS41aC0xMVYxN0g1di0zLjgzYzAtLjY2LjI1LTEuMjYuNjUtMS43MlY5YzAtMS4xLjktMiAyLTJIMTFjLjM3IDAgLjcyLjEyIDEgLjMyLjI4LS4yLjYzLS4zMiAxLS4zMmgzLjM1YzEuMSAwIDIgLjkgMiAydjIuNDVjLjQuNDYuNjUgMS4wNi42NSAxLjcyVjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbGVuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4xMyAxNS4xMyAxOCAzaC00VjJoLTR2MUg1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMi4yM2wuNjQgNC4xM0M2Ljc0IDE2LjA1IDYgMTcuNDMgNiAxOXYxYzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMnYtMWMwLTEuNTctLjc0LTIuOTUtMS44Ny0zLjg3ek01IDlWNWgxLjMxbC42MiA0SDV6bTcgMTBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi4yOS01SDkuNzJMOC4zMyA1aDcuMzRsLTEuMzggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhSW5kb29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bTQgMTMuMDZMMTQgMTV2MWMwIC41NS0uNDUgMS0xIDFIOWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjFsMi0xLjA2djQuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYU91dGRvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzYzAtLjU1LS40NS0xLTEtMWgtNGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTFsMiAxLjA2di00LjEyTDE4IDE0di0xek0xMiAzIDQgOXYxMmgxNnYtMkg2di05bDYtNC41IDYgNC41djFoMlY5bC04LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYWlyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjNjMCAxLjEuOSAyIDIgMmgxdjJIN2MtMS4xIDAtMiAuOS0yIDJ2N2gydi0zaDEwdjNoMnYtN2MwLTEuMS0uOS0yLTItMmgtMXYtMmgxek03IDhWNWgxMHYzSDd6bTEwIDhIN3YtMmgxMHYyem0tMy00aC00di0yaDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTF2MmgxMHYtMmMwLTEuODYgMS4yOC0zLjQxIDMtMy44NlY2YzAtMS42NS0xLjM1LTMtMy0zSDdDNS4zNSAzIDQgNC4zNSA0IDZ2MS4xNGMxLjcyLjQ1IDMgMiAzIDMuODZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDljLTEuMSAwLTIgLjktMiAydjRINXYtNGMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2NWMwIDEuNjUgMS4zNSAzIDMgM3YxYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtMWMxLjY1IDAgMy0xLjM1IDMtM3YtNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29mZmVlTWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDZWNGgyVjJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNHYtMmgtNC4wM0E0Ljk2NiA0Ljk2NiAwIDAgMCAxOCAxNnYtNUg4djVjMCAxLjY0LjgxIDMuMDkgMi4wMyA0SDZWNGgydjJjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTNcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvZmZlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAzSDZjLTEuMSAwLTIgLjktMiAydjUuNzFjMCAzLjgzIDIuOTUgNy4xOCA2Ljc4IDcuMjkgMy45Ni4xMiA3LjIyLTMuMDYgNy4yMi03di0xaC41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzIwLjQzIDMgMTguNSAzek0xNiA1djNINlY1aDEwem0yLjUgM0gxOFY1aC41Yy44MyAwIDEuNS42NyAxLjUgMS41UzE5LjMzIDggMTguNSA4ek00IDE5aDE2djJINHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTkgOC4zYzAgLjkzLS42NCAxLjcxLTEuNSAxLjkzVjE5SDh2LTYuNzdjLS44Ni0uMjItMS41LTEtMS41LTEuOTNWNi41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjloLjc1VjYuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVY5SDEwVjYuNWMwLS4yOC4yMy0uNS41LS41LjI4IDAgLjUuMjIuNS41djMuOHptNC41OCAyLjI5LS4wOC4wM1YxOUgxNHYtNi4zOGwtLjA4LS4wNGMtLjk3LS40Ny0xLjY3LTEuNy0xLjY3LTMuMTggMC0xLjg4IDEuMTMtMy40IDIuNS0zLjQgMS4zOCAwIDIuNSAxLjUzIDIuNSAzLjQxIDAgMS40OC0uNyAyLjcxLTEuNjcgMy4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9vckJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5VjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MTRIM3YyaDE4di0yaC0yem0tOC02SDl2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb29yRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5VjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MTRIM3YyaDE4di0yaC0yem0tNC02aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9vclNsaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjVjMC0xLjEtLjktMi0yLTJoLTUuMjV2MTZoLTEuNVYzSDZjLTEuMSAwLTIgLjktMiAydjE0SDN2MmgxOHYtMmgtMXptLTEwLTZIOHYtMmgydjJ6bTYgMGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvb3JiZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bTAgMTQuNWMtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxem00LTEuNUg4di0xaDF2LTIuMzRjMC0xLjU0LjgyLTIuODIgMi4yNS0zLjE2di0uMjVjMC0uNDEuMzQtLjc1Ljc1LS43NXMuNzUuMzQuNzUuNzV2LjI1YzEuNDQuMzQgMi4yNSAxLjYyIDIuMjUgMy4xNlYxNWgxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4bC01LTV6TTcgN2g1djJIN1Y3em0xMCAxMEg3di0yaDEwdjJ6bTAtNEg3di0yaDEwdjJ6bS0yLTRWNWw0IDRoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYXR3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3LjA4YzAgMS43Ny0uODQgMy4yNS0yIDMuODJWMjFoLTJWMTAuOWMtMS4xNi0uNTctMi0yLjA1LTItMy44MkMxMC4wMSA0LjgzIDExLjM1IDMgMTMgM2MxLjY2IDAgMyAxLjgzIDMgNC4wOHpNMTcgM3YxOGgydi04aDJWN2MwLTEuNzYtMS4yNC00LTQtNHpNOC4yOCAzYy0uNCAwLS43Mi4zMi0uNzIuNzJWN2gtLjg0VjMuNzJDNi43MiAzLjMyIDYuNCAzIDYgM3MtLjcyLjMyLS43Mi43MlY3aC0uODRWMy43MmMwLS40LS4zMi0uNzItLjcyLS43MlMzIDMuMzIgMyAzLjcyVjljMCAxLjEuOSAyIDIgMnYxMGgyVjExYzEuMSAwIDItLjkgMi0yVjMuNzJjMC0uNC0uMzItLjcyLS43Mi0uNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhcmFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguMzMgNy41LS42NiAyaDguNjZsLS42Ni0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgMTUuNjljMCAuNDUtLjM1LjgxLS43OC44MWgtLjQ0Yy0uNDQgMC0uNzgtLjM2LS43OC0uODFWMTYuNUg3djEuMTljMCAuNDUtLjM1LjgxLS43OC44MWgtLjQ0Yy0uNDMgMC0uNzgtLjM2LS43OC0uODF2LTYuNWMuODItMi40NyAxLjM0LTQuMDMgMS41Ni00LjY5LjA1LS4xNi4xMi0uMjkuMTktLjQuMDItLjAyLjAzLS4wNC4wNS0uMDYuMzgtLjUzLjkyLS41NC45Mi0uNTRoOC41NnMuNTQuMDEuOTIuNTNjLjAyLjAzLjAzLjA1LjA1LjA3LjA3LjExLjE0LjI0LjE5LjQuMjIuNjYuNzQgMi4yMyAxLjU2IDQuNjl2Ni41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNi4wNlYzaC0ydjMuMDZjLTQuNS41LTggNC4zMS04IDguOTNDMyAxNi4xIDMuOSAxNyA1LjAxIDE3SDhjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGgyLjk5YzEuMTEgMCAyLjAxLS45IDIuMDEtMi4wMSAwLTQuNjItMy41LTguNDMtOC04Ljkzek0xMiAxNUg1YzAtMy44NiAzLjE0LTcgNy03czcgMy4xNCA3IDdoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMS41Yy0uNTUgMC0xIC40NS0xIDF2MmgtN3YtMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMVYxNmMwIC4yOC4yMi41LjUuNWgxMGMuMjggMCAuNS0uMjIuNS0uNXYtMy41YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTIuNXYuNWg0di0uNWMwLTEuMy45OS0yLjM1IDIuMjUtMi40N1Y5YzAtLjgzLS42Ny0xLjUtMS41LTEuNWgtNS41Yy0uODMgMC0xLjUuNjctMS41IDEuNXYxLjAzQTIuNDggMi40OCAwIDAgMSAxMCAxMi41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgMTRjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJ2LTMuNWMwLS45Mi41MS0xLjcyIDEuMjUtMi4xNVY5YzAtMS42NiAxLjM0LTMgMy0zaDUuNWMxLjY2IDAgMyAxLjM0IDMgM3YxLjM1Yy43NC40MyAxLjI1IDEuMjMgMS4yNSAyLjE1VjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYW5hZ2VTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOUgyVjdoNXYyem0wIDNIMnYyaDV2LTJ6bTEzLjU5IDctMy44My0zLjgzYy0uOC41Mi0xLjc0LjgzLTIuNzYuODMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1YzAgMS4wMi0uMzEgMS45Ni0uODMgMi43NUwyMiAxNy41OSAyMC41OSAxOXpNMTcgMTFjMC0xLjY1LTEuMzUtMy0zLTNzLTMgMS4zNS0zIDMgMS4zNSAzIDMgMyAzLTEuMzUgMy0zek0yIDE5aDEwdi0ySDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9kY2FzdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEyYzAgLjc0LS40IDEuMzgtMSAxLjcyVjIyaC0ydi04LjI4Yy0uNi0uMzUtMS0uOTgtMS0xLjcyIDAtMS4xLjktMiAyLTJzMiAuOSAyIDJ6bS0yLTZjLTMuMzEgMC02IDIuNjktNiA2IDAgMS43NC43NSAzLjMxIDEuOTQgNC40bDEuNDItMS40MkEzLjk1NyAzLjk1NyAwIDAgMSA4IDEyYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjE5LS41MyAyLjI1LTEuMzYgMi45OGwxLjQyIDEuNDJBNS45NTcgNS45NTcgMCAwIDAgMTggMTJjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDIgMiA2LjQ4IDIgMTJjMCAyLjg1IDEuMiA1LjQxIDMuMTEgNy4yNGwxLjQyLTEuNDJBNy45ODcgNy45ODcgMCAwIDEgNCAxMmMwLTQuNDEgMy41OS04IDgtOHM4IDMuNTkgOCA4YzAgMi4yOS0uOTggNC4zNi0yLjUzIDUuODJsMS40MiAxLjQyQzIwLjggMTcuNDEgMjIgMTQuODUgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMTdcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE3XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIxN1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1LjA4VjNoLTJ2Mi4wOEM3LjYxIDUuNTcgNSA4LjQ3IDUgMTJ2MmgxNHYtMmMwLTMuNTMtMi42MS02LjQzLTYtNi45MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjIwXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIyMFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDcuNUMyMiA1LjU3IDE3LjUyIDQgMTIgNFMyIDUuNTcgMiA3LjVjMCAxLjgxIDMuOTUgMy4zMSA5IDMuNDhWMTVIOS4zNWMtLjgyIDAtMS41NS41LTEuODYgMS4yNkw2IDIwaDJsMS4yLTNoNS42bDEuMiAzaDJsLTEuNS0zLjc0Yy0uMy0uNzYtMS4wNC0xLjI2LTEuODUtMS4yNkgxM3YtNC4wMmM1LjA1LS4xNyA5LTEuNjcgOS0zLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZVJlc3RhdXJhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS45NiA5LjczLTEuNDMtNWEuOTk2Ljk5NiAwIDAgMC0uOTYtLjczSDQuNDNjLS40NSAwLS44NC4zLS45Ni43M2wtMS40MyA1Yy0uMTguNjMuMyAxLjI3Ljk2IDEuMjdoMi4yTDQgMjBoMmwuNjctNWgxMC42N2wuNjYgNWgybC0xLjItOUgyMWMuNjYgMCAxLjE0LS42NC45Ni0xLjI3ek02LjkzIDEzbC4yNy0yaDkuNmwuMjcgMkg2LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaW5kb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMVYzSDVjLTEuMSAwLTIgLjktMiAydjZoOHptMiAwaDhWNWMwLTEuMS0uOS0yLTItMmgtNnY4em0tMiAySDN2NmMwIDEuMS45IDIgMiAyaDZ2LTh6bTIgMHY4aDZjMS4xIDAgMi0uOSAyLTJ2LTZoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFlhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDguMjJhMS41NjIgMS41NjIgMCAwIDEgMi40NS0xLjI4bC0uMDEtLjEyYzAtLjg2LjctMS41NiAxLjU2LTEuNTZzMS41Ni43IDEuNTYgMS41NmwtLjAxLjEyQTEuNTYyIDEuNTYyIDAgMCAxIDE2IDguMjJjMCAuNjItLjM3IDEuMTYtLjg5IDEuNC41Mi4yNS44OS43OS44OSAxLjQxIDAgLjg2LS43IDEuNTYtMS41NiAxLjU2LS4zMyAwLS42NC0uMTEtLjg5LS4yOGwuMDEuMTJjMCAuODYtLjcgMS41Ni0xLjU2IDEuNTZzLTEuNTYtLjctMS41Ni0xLjU2bC4wMS0uMTJBMS41NjIgMS41NjIgMCAwIDEgOCAxMS4wM2MwLS42Mi4zNy0xLjE2Ljg5LTEuNEM4LjM3IDkuMzggOCA4Ljg0IDggOC4yMnpNMTIgMTljLTMuMzEgMC02LTIuNjktNi02IDMuMzEgMCA2IDIuNjkgNiA2IDAtMy4zMSAyLjY5LTYgNi02IDAgMy4zMS0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiOS42MlwiLFwiclwiOlwiMS41NlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxOFVwUmF0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTIuNWgxLjVWMTRIMTN6TTEzIDEwaDEuNXYxLjVIMTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxMkg4LjV2LTQuNUg3VjloM3Y2em02LTFjMCAuNTUtLjQ1IDEtMSAxaC0yLjVjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMUgxNWMuNTUgMCAxIC40NSAxIDF2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNkZ0QXBhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem00IDMuNDNjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDIgOS40M1YxMGg4di0uNTd6TTE4IDZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem00IDMuNDNjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDE0IDkuNDNWMTBoOHYtLjU3ek0xOSAxN3YtMi4wMUw1IDE1djJsLTMtMyAzLTN2Mi4wMUwxOSAxM3YtMmwzIDMtMyAzem0tOSAydi0xSDcuNWMtLjI4IDAtLjUuMjItLjUuNXYzYzAgLjI4LjIyLjUuNS41aDJjLjI4IDAgLjUtLjIyLjUtLjVWMjBjMC0uMjgtLjIyLS41LS41LS41SDhWMTloMnptLTEgMS41di41SDh2LS41aDF6bTguNS0xLjVoLTF2M2gtMXYtM2gtMXYtMWgzdjF6bS01IDB2LjVoMXYxaC0xVjIyaC0xdi00SDE0djFoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkTW9kZXJhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjIyIDIyLjYxYy0uNC4xNS0uOC4yOS0xLjIyLjM5LTUuMTYtMS4yNi05LTYuNDUtOS0xMlY1bDktNCA5IDR2NmMwIC45LS4xMSAxLjc4LS4zIDIuNjUtLjgxLS40MS0xLjczLS42NS0yLjctLjY1LTMuMzEgMC02IDIuNjktNiA2IDAgMS4zNi40NiAyLjYxIDEuMjIgMy42MXpNMTkgMjB2Mi45OXMtMS45OS4wMS0yIDBWMjBoLTN2LTJoM3YtM2gydjNoM3YyaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRSZWFjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDlWN2gtMlYyLjg0QTkuOTI5IDkuOTI5IDAgMCAwIDExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMmMwLTEuMDUtLjE3LTIuMDUtLjQ3LTNIMTh6bS0yLjUtMWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41LTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptLTcgMGMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjMzIDExIDguNSAxMSA3IDEwLjMzIDcgOS41IDcuNjcgOCA4LjUgOHptMy41IDkuNWMtMi4zMyAwLTQuMzEtMS40Ni01LjExLTMuNWgxMC4yMmMtLjggMi4wNC0yLjc4IDMuNS01LjExIDMuNXpNMjIgM2gydjJoLTJ2MmgtMlY1aC0yVjNoMlYxaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJjaGl0ZWN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4zNiAxOC43OCA2LjYxIDIxbDEuNjItMS41NCAyLjc3LTcuNmMtLjY4LS4xNy0xLjI4LS41MS0xLjc3LS45OGwtMi44NyA3Ljl6TTE0Ljc3IDEwLjg4Yy0uNDkuNDctMS4xLjgxLTEuNzcuOThsMi43NyA3LjZMMTcuMzkgMjFsLjI2LTIuMjItMi44OC03Ljl6TTE1IDhjMC0xLjMtLjg0LTIuNC0yLTIuODJWM2gtMnYyLjE4QzkuODQgNS42IDkgNi43IDkgOGMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zem0tMyAxYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lzdFdhbGtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTIuNVwiLFwiY3lcIjpcIjQuNVwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyAxNy43Mi0uNjQtNi4zN0ExLjQ5IDEuNDkgMCAwIDAgMTcuNjQgMTBIMTZjLTEuNS0uMDItMi44Ni0uNTQtMy43Ni0xLjQ0bC0yLTEuOThBMS45NSAxLjk1IDAgMCAwIDguODMgNmMtLjUxIDAtMS4wMi4yLTEuNDEuNTlMNC4wOCA5LjkxYy0uNTMuNjgtLjUxIDEuNTctLjIxIDIuMTNsMS40MyAyLjgtMy4xNSA0LjA1IDEuNTcgMS4yNEw3LjQgMTUuNGwtLjE3LTEuMzYuNzcuNzFWMjBoMnYtNi4xMmwtMi4xMi0yLjEyIDIuMzYtMi4zNmMuOTQuOTQgMS43MiAxLjgyIDMuNTkgMi4zMkwxMyAyMGgxLjVsLjQxLTMuNWgzLjE4bC4xNCAxLjIyYy0uNDQuMjYtLjczLjc0LS43MyAxLjI4IDAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNWMwLS41NC0uMjktMS4wMi0uNzMtMS4yOHpNMTUuMDkgMTVsLjQxLTMuNWgybC40MSAzLjVoLTIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhY2tIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMjRjLTMuMjYgMC02LjE5LTEuOTktNy40LTUuMDJsLTMuMDMtNy42MWExIDEgMCAwIDEgMS4yNC0xLjMybC43OS4yNmMuNTYuMTggMS4wMi42MSAxLjI0IDEuMTZMNy4yNSAxNUg4VjMuMjVhMS4yNSAxLjI1IDAgMCAxIDIuNSAwVjEyaDFWMS4yNWExLjI1IDEuMjUgMCAwIDEgMi41IDBWMTJoMVYyLjc1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMFYxMmgxVjUuNzVhMS4yNSAxLjI1IDAgMCAxIDIuNSAwVjE2YzAgNC40Mi0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbGluZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTEuNVwiLFwiY3lcIjpcIjMuNVwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4xMyA3LjEyYy0uMTctLjM1LS40NC0uNjUtLjgtLjg1YTEuOTggMS45OCAwIDAgMC0xLjkzLS4wM3YtLjAxTDQgOS4zVjE0aDJ2LTMuNTRsMS41LS44NUM3LjE4IDEwLjcxIDcgMTEuODUgNyAxM3Y1LjMzTDQuNCAyMS44IDYgMjNsMy00IC4yMi0zLjU0TDExIDE4djVoMnYtNi41bC0xLjk3LTIuODFjLS4wNC0uNTItLjE0LTEuNzYuNDUtMy40Ljc1IDEuMTQgMS44OCAxLjk4IDMuMiAyLjQxTDIwLjYzIDIzbC44Ny0uNS01LjQ4LTkuNUgxN3YtMmMtLjQ5IDAtMi44OC4xNy00LjA4LTIuMjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNy41Yy45NyAwIDEuNzUtLjc4IDEuNzUtMS43NVMxMi45NyA0IDEyIDRzLTEuNzUuNzgtMS43NSAxLjc1UzExLjAzIDcuNSAxMiA3LjV6TTE0IDIwdi01aDF2LTQuNWMwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJWMTVoMXY1aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YTIgMiAwIDAgMCAyLTJjMC0uMzgtLjEtLjczLS4yOS0xLjAzTDEyIDBsLTEuNzEgMi45N2MtLjE5LjMtLjI5LjY1LS4yOSAxLjAzIDAgMS4xLjkgMiAyIDJ6bTQuNiA5Ljk5LTEuMDctMS4wNy0xLjA4IDEuMDdjLTEuMyAxLjMtMy41OCAxLjMxLTQuODkgMGwtMS4wNy0xLjA3LTEuMDkgMS4wN0M2Ljc1IDE2LjY0IDUuODggMTcgNC45NiAxN2MtLjczIDAtMS40LS4yMy0xLjk2LS42MVYyMWMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTF2LTQuNjFjLS41Ni4zOC0xLjIzLjYxLTEuOTYuNjEtLjkyIDAtMS43OS0uMzYtMi40NC0xLjAxek0xOCA5aC01VjdoLTJ2Mkg2Yy0xLjY2IDAtMyAxLjM0LTMgM3YxLjU0YzAgMS4wOC44OCAxLjk2IDEuOTYgMS45Ni41MiAwIDEuMDItLjIgMS4zOC0uNTdsMi4xNC0yLjEzIDIuMTMgMi4xM2MuNzQuNzQgMi4wMy43NCAyLjc3IDBsMi4xNC0yLjEzIDIuMTMgMi4xM2MuMzcuMzcuODYuNTcgMS4zOC41NyAxLjA4IDAgMS45Ni0uODggMS45Ni0xLjk2VjEyQzIxIDEwLjM0IDE5LjY2IDkgMTggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2F0Y2hpbmdQb2tlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAxMmEyLjUgMi41IDAgMCAxLTUgMCAyLjUgMi41IDAgMCAxIDUgMHptNy41IDBjMCA1LjUyLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyIDYuNDggMiAxMiAyczEwIDQuNDggMTAgMTB6bS0yIDBoLTRjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDRINGMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbGVhbkhhbmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuOTkgNSAuNjMgMS4zNyAxLjM3LjYzLTEuMzcuNjNMMTYuOTkgOWwtLjYzLTEuMzdMMTQuOTkgN2wxLjM3LS42My42My0xLjM3TTExIDYuMTNWNGgyYy41NyAwIDEuMS4xNyAxLjU1LjQ1bDEuNDMtMS40M0E0Ljg5OSA0Ljg5OSAwIDAgMCAxMyAySDcuNXYySDl2Mi4xNEE1LjAwNyA1LjAwNyAwIDAgMCA1LjI2IDkuNWgzLjk4TDE1IDExLjY1di0uNjJhNSA1IDAgMCAwLTQtNC45ek0xIDIyaDRWMTFIMXYxMXptMTktNWgtN2wtMi4wOS0uNzMuMzMtLjk0TDEzIDE2aDIuODJjLjY1IDAgMS4xOC0uNTMgMS4xOC0xLjE4IDAtLjQ5LS4zMS0uOTMtLjc3LTEuMTFMOC45NyAxMUg3djkuMDJMMTQgMjJsOC0zYy0uMDEtMS4xLS44OS0yLTItMnptMC0zYzEuMSAwIDItLjkgMi0ycy0yLTQtMi00LTIgMi45LTIgNCAuOSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ28yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgtM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xem0tLjUgNC41aC0ydi0zaDJ2M3pNOCAxM3YxYzAgLjU1LS40NSAxLTEgMUg0Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MUg2LjV2LS41aC0ydjNoMlYxM0g4em0xMi41IDIuNWgtMnYxaDNWMThIMTd2LTIuNWMwLS41NS40NS0xIDEtMWgydi0xaC0zVjEyaDMuNWMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tcG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjg3IDExLjgxQTIuNSAyLjUgMCAwIDEgMTUgOGgxYzEuNTEgMCAyLTEgMi0xcy41NSA2LTMgNmMtLjQ5IDAtLjk0LS4xNC0xLjMyLS4zOC0uMjQuNjQtLjU5IDEuNzYtLjc2IDIuOTYgMS4yNi4yMiAyLjI4Ljg5IDIuNzcgMS43N0E2LjUwNSA2LjUwNSAwIDAgMCAxOC41IDEyaDNjMCA1LjI0LTQuMjYgOS41LTkuNSA5LjVTMi41IDE3LjI0IDIuNSAxMiA2Ljc2IDIuNSAxMiAyLjVWMGw0IDQtNCA0VjUuNWMtMy41OCAwLTYuNSAyLjkyLTYuNSA2LjUgMCAyLjIxIDEuMTEgNC4xNyAyLjgxIDUuMzUuNTEtLjkyIDEuNjMtMS42MiAyLjk4LTEuOC0uMDktLjY5LS4yNi0xLjQyLS40OS0yLjAzLS4zNS4zLS44LjQ4LTEuMy40OC0xLjEgMC0yLS45LTItMnYtLjk5YzAtLjU2LS4xOS0xLjA5LS41LTEuNTEgMCAwIDQuNDUtLjIzIDQuNSAyLjUgMCAuMjktLjA2LjU2LS4xNy44LS40Mi0uMzItLjg2LS42LTEuMzMtLjguNTguNDMgMS4zNyAxLjM3IDIgMi42LjY3LTEuNjIgMS42OC0zLjI3IDMtNC42LS43Ni41Mi0xLjQ3IDEuMTItMi4xMyAxLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb25uZWN0V2l0aG91dENvbnRhY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNEg5YTkgOSAwIDAgMSA5LTl2MmMtMy44NyAwLTcgMy4xMy03IDd6bTctM1Y5Yy0yLjc2IDAtNSAyLjI0LTUgNWgyYzAtMS42NiAxLjM0LTMgMy0zek03IDRjMC0xLjExLS44OS0yLTItMnMtMiAuODktMiAyIC44OSAyIDIgMiAyLS44OSAyLTJ6bTQuNDUuNWgtMkEyLjk5IDIuOTkgMCAwIDEgNi41IDdoLTNDMi42NyA3IDIgNy42NyAyIDguNVYxMWg2VjguNzRhNC45NyA0Ljk3IDAgMCAwIDMuNDUtNC4yNHpNMTkgMTdjMS4xMSAwIDItLjg5IDItMnMtLjg5LTItMi0yLTIgLjg5LTIgMiAuODkgMiAyIDJ6bTEuNSAxaC0zYTIuOTkgMi45OSAwIDAgMS0yLjk1LTIuNWgtMkE0Ljk3IDQuOTcgMCAwIDAgMTYgMTkuNzRWMjJoNnYtMi41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29uc3RydWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuNzgzIDE1LjE3MiAyLjEyMS0yLjEyMSA1Ljk5NiA1Ljk5Ni0yLjEyMSAyLjEyMXpNMTcuNSAxMGMxLjkzIDAgMy41LTEuNTcgMy41LTMuNSAwLS41OC0uMTYtMS4xMi0uNDEtMS42bC0yLjcgMi43LTEuNDktMS40OSAyLjctMi43Yy0uNDgtLjI1LTEuMDItLjQxLTEuNi0uNDFDMTUuNTcgMyAxNCA0LjU3IDE0IDYuNWMwIC40MS4wOC44LjIxIDEuMTZsLTEuODUgMS44NS0xLjc4LTEuNzguNzEtLjcxLTEuNDEtMS40MUwxMiAzLjQ5YTMgMyAwIDAgMC00LjI0IDBMNC4yMiA3LjAzbDEuNDEgMS40MUgyLjgxbC0uNzEuNzEgMy41NCAzLjU0LjcxLS43MVY5LjE1bDEuNDEgMS40MS43MS0uNzEgMS43OCAxLjc4LTcuNDEgNy40MSAyLjEyIDIuMTJMMTYuMzQgOS43OWMuMzYuMTMuNzUuMjEgMS4xNi4yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29va2llIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTUgMTAuOTljLTEuNzktLjAzLTMuNy0xLjk1LTIuNjgtNC4yMi0yLjk4IDEtNS43Ny0xLjU5LTUuMTktNC41NkM2Ljk1LjcxIDIgNi41OCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDUuODkgMCAxMC41NC01LjA4IDkuOTUtMTEuMDF6TTguNSAxNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuNjcgMTIgOC41IDEyczEuNS42NyAxLjUgMS41UzkuMzMgMTUgOC41IDE1em0yLTVDOS42NyAxMCA5IDkuMzMgOSA4LjVTOS42NyA3IDEwLjUgN3MxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQuNSA2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvcm9uYXZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMjUgMTAuNWMtLjQxIDAtLjc1LjM0LS43NS43NWgtMS41NGE2Ljk3OCA2Ljk3OCAwIDAgMC0xLjUyLTMuNjVsMS4wOS0xLjA5LjAxLjAxYy4yOS4yOS43Ny4yOSAxLjA2IDBzLjI5LS43NyAwLTEuMDZMMTguNTQgNC40YS43NTQuNzU0IDAgMCAwLTEuMDYgMGMtLjI5LjI5LS4yOS43Ni0uMDEgMS4wNWwtMS4wOSAxLjA5YTcuMDE1IDcuMDE1IDAgMCAwLTMuNjQtMS41MVYzLjVoLjAxYy40MSAwIC43NS0uMzQuNzUtLjc1UzEzLjE2IDIgMTIuNzUgMmgtMS41Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zMy43NC43NC43NXYxLjU1Yy0xLjM3LjE0LTIuNjIuNjktMy42NCAxLjUxTDYuNTEgNS40N2wuMDEtLjAxYy4yOS0uMjkuMjktLjc3IDAtMS4wNmEuNzU0Ljc1NCAwIDAgMC0xLjA2IDBMNC40IDUuNDZjLS4yOS4yOS0uMjkuNzcgMCAxLjA2LjI5LjI5Ljc2LjI5IDEuMDUuMDFsMS4wOSAxLjA5YTYuODkgNi44OSAwIDAgMC0xLjUgMy42M0gzLjVjMC0uNDEtLjM0LS43NS0uNzUtLjc1cy0uNzUuMzQtLjc1Ljc1djEuNWMwIC40MS4zNC43NS43NS43NXMuNzUtLjM0Ljc1LS43NWgxLjU0Yy4xNSAxLjM3LjY5IDIuNjEgMS41IDMuNjNsLTEuMDkgMS4wOWEuNzQyLjc0MiAwIDAgMC0xLjA1LjAxYy0uMjkuMjktLjI5Ljc3IDAgMS4wNmwxLjA2IDEuMDZjLjI5LjI5Ljc3LjI5IDEuMDYgMCAuMjktLjI5LjI5LS43NyAwLTEuMDZsLS4wMS0uMDEgMS4wOS0xLjA5YzEuMDIuODIgMi4yNiAxLjM2IDMuNjMgMS41MXYxLjU1Yy0uNDEuMDEtLjc0LjM0LS43NC43NXMuMzQuNzUuNzUuNzVoMS41Yy40MSAwIC43NS0uMzQuNzUtLjc1cy0uMzQtLjc1LS43NS0uNzVoLS4wMXYtMS41NGMxLjM3LS4xNCAyLjYyLS42OSAzLjY0LTEuNTFsMS4wOSAxLjA5Yy0uMjkuMjktLjI4Ljc2LjAxIDEuMDUuMjkuMjkuNzcuMjkgMS4wNiAwbDEuMDYtMS4wNmMuMjktLjI5LjI5LS43NyAwLTEuMDZhLjc1NC43NTQgMCAwIDAtMS4wNiAwbC0uMDEuMDEtMS4wOS0xLjA5YTcuMDI1IDcuMDI1IDAgMCAwIDEuNTItMy42NWgxLjU0YzAgLjQxLjM0Ljc1Ljc1Ljc1cy43NS0uMzQuNzUtLjc1di0xLjVjLjAxLS40LS4zMy0uNzQtLjc0LS43NHpNMTMuNzUgOGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek0xMiAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMS43NS01Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTguNSAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0xLjc1IDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMy41IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLjc1LTRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxLS40NSAxLTEgMS0xLS40NS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENydWVsdHlGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuODQgMTQuNTJjLS4yNi0uMTktLjYyLS42My0uNzktLjg0QzE3LjI0IDEyLjAxIDE5IDguODcgMTkgNWMwLTEuOTUtLjc0LTMtMi0zLTEuNTQgMC0zLjk2IDIuMDYtNSA1Ljk3QzEwLjk2IDQuMDYgOC41NCAyIDcgMiA1Ljc0IDIgNSAzLjA1IDUgNWMwIDMuODcgMS43NiA3LjAxIDIuOTUgOC42OC0uMTcuMjEtLjUzLjY1LS43OS44NC0uNS40MS0xLjY2IDEuMzctMS42NiAyLjk4IDAgMi4yMSAxLjc5IDQgNCA0IDEuNTUgMCAyLjUtLjU2IDIuNS0uNTZzLjk1LjU2IDIuNS41NmMyLjIxIDAgNC0xLjc5IDQtNCAwLTEuNjEtMS4xNi0yLjU3LTEuNjYtMi45OHpNOS4zNSAxMi4yQzguMzQgMTAuNyA3IDguMTIgNyA1YzAtLjQ5LjA2LS44LjEyLS45Ny45NC4zMSAzLjI0IDIuNzEgMy4zOCA3LjY0LS40Ny4xMi0uODQuMy0xLjE1LjUzem0xLjE1IDQuNTVjLS4yOCAwLS41LS4zNC0uNS0uNzVzLjIyLS43NS41LS43NS41LjM0LjUuNzUtLjIyLjc1LS41Ljc1ek0xMiAxOS41Yy0uNTUgMC0xLS43Mi0xLTFzLjQ1LS41IDEtLjUgMSAuMjIgMSAuNS0uNDUgMS0xIDF6bTEuNS0yLjc1Yy0uMjggMC0uNS0uMzQtLjUtLjc1cy4yMi0uNzUuNS0uNzUuNS4zNC41Ljc1LS4yMi43NS0uNS43NXptMC01LjA4Yy4xNC00LjkzIDIuNDQtNy4zMyAzLjM4LTcuNjQuMDYuMTcuMTIuNDguMTIuOTcgMCAzLjEyLTEuMzQgNS43LTIuMzUgNy4yLS4zMS0uMjMtLjY4LS40MS0xLjE1LS41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3ljbG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA3LjQ3VjUuMzVDMjAuMDUgNC43NyAxNi41NiA0IDEyIDRjLTIuMTUgMC00LjExLjg2LTUuNTQgMi4yNC4xMy0uODUuNC0yLjQgMS4wMS00LjI0SDUuMzVDNC43NyAzLjk1IDQgNy40NCA0IDEyYzAgMi4xNS44NiA0LjExIDIuMjQgNS41NC0uODUtLjE0LTIuNC0uNC00LjI0LTEuMDF2Mi4xMkMzLjk1IDE5LjIzIDcuNDQgMjAgMTIgMjBjMi4xNSAwIDQuMTEtLjg2IDUuNTQtMi4yNC0uMTQuODUtLjQgMi40LTEuMDEgNC4yNGgyLjEyYy41OC0xLjk1IDEuMzUtNS40NCAxLjM1LTEwIDAtMi4xNS0uODYtNC4xMS0yLjI0LTUuNTQuODUuMTMgMi40LjQgNC4yNCAxLjAxek0xMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5IDEyIDIgMiA5aDl2MTNoMlY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm00LjE0IDEyLTEuOTYuMzcuODIgNC4zN1YyMmgybC4wMi00SDd2NGgydi02SDQuOXpNMTkuMSAxNkgxNXY2aDJ2LTRoMS45OGwuMDIgNGgydi01LjI2bC44Mi00LjM3LTEuOTYtLjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXdQb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEzVjVjMC0xLjY2LTEuMzQtMy0zLTNTNiAzLjM0IDYgNXY4Yy0xLjIxLjkxLTIgMi4zNy0yIDQgMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNWMwLTEuNjMtLjc5LTMuMDktMi00em0tNC0yVjVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjFIOXYxaDF2Mkg5djFoMXYxSDh6bTEzLTQuNWMwLS44NC0xLjUtMi41LTEuNS0yLjVTMTggNS42NiAxOCA2LjVjMCAuODMuNjcgMS41IDEuNSAxLjVTMjEgNy4zMyAyMSA2LjV6bS00IDNjMC0uODQtMS41LTIuNS0xLjUtMi41UzE0IDguNjYgMTQgOS41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNXptNCAzYzAtLjg0LTEuNS0yLjUtMS41LTIuNVMxOCAxMS42NiAxOCAxMi41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGl2ZXJzaXR5MSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNFwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMjIgMTcuNThBMi4wMSAyLjAxIDAgMCAwIDAgMTkuNDNWMjFoNC41di0xLjYxYzAtLjgzLjIzLTEuNjEuNjMtMi4yOS0uMzctLjA2LS43NC0uMS0xLjEzLS4xLS45OSAwLTEuOTMuMjEtMi43OC41OHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIyMFwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjc4IDE3LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxN2MtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYyMUgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTE2LjI0IDE2LjY1Yy0xLjE3LS41Mi0yLjYxLS45LTQuMjQtLjktMS42MyAwLTMuMDcuMzktNC4yNC45QTIuOTg4IDIuOTg4IDAgMCAwIDYgMTkuMzlWMjFoMTJ2LTEuNjFjMC0xLjE4LS42OC0yLjI2LTEuNzYtMi43NHpNOSAxMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi40OCAxMC44NkMyLjE3IDEwLjEgMiA5LjM2IDIgOC42IDIgNi4wMiA0LjAyIDQgNi42IDRjMi42OCAwIDMuODIgMS43NCA1LjQgMy41OUMxMy41NyA1Ljc2IDE0LjcgNCAxNy40IDQgMTkuOTggNCAyMiA2LjAyIDIyIDguNmMwIC43Ni0uMTcgMS41LS40OCAyLjI2LjY1LjMxIDEuMTguODIgMS41MyAxLjQ0LjYtMS4yLjk1LTIuNDIuOTUtMy43QzI0IDQuOSAyMS4xIDIgMTcuNCAyYy0yLjA5IDAtNC4wOS45Ny01LjQgMi41MUMxMC42OSAyLjk3IDguNjkgMiA2LjYgMiAyLjkgMiAwIDQuOSAwIDguNmMwIDEuMjguMzUgMi41Ljk2IDMuNy4zNS0uNjIuODgtMS4xMyAxLjUyLTEuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpdmVyc2l0eTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC4xIDE1LjkgMS40Mi0xLjQyQzguNzkgMTIuMDUgNyAxMC40MSA3IDguODUgNyA3LjggNy44IDcgOC44NSA3YzEuMTEgMCAxLjU0LjY1IDIuNjggMmguOTNjMS4xMi0xLjMxIDEuNTMtMiAyLjY4LTIgLjg3IDAgMS41NS41NCAxLjc3IDEuMzIuMzUtLjA0LjY4LS4wNiAxLS4wNi4zNiAwIC43LjAzIDEuMDMuMDhDMTguNyA2LjQzIDE3LjEzIDUgMTUuMTUgNWMtLjEyIDAtLjIzLjAzLS4zNS4wNC4xMi0uMzMuMi0uNjcuMi0xLjA0IDAtMS42Ni0xLjM0LTMtMy0zUzkgMi4zNCA5IDRjMCAuMzcuMDguNzEuMiAxLjA0LS4xMi0uMDEtLjIzLS4wNC0uMzUtLjA0QzYuNjkgNSA1IDYuNjkgNSA4Ljg1YzAgMi40MiAyLjA0IDQuMzEgNS4xIDcuMDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjUgMTYuMjRjLS4zMi0uMTgtLjY2LS4yOS0xLS4zNS4wNy0uMS4xNS0uMTguMjEtLjI4IDEuMDgtMS44Ny40Ni00LjE4LTEuNDEtNS4yNi0yLjA5LTEuMjEtNC43Ni0uMzktOC42NS45bC41MiAxLjk0YzMuNDctMS4xNCA1Ljc5LTEuODggNy4xNC0xLjEuOTEuNTMgMS4yIDEuNjEuNjggMi41My0uNTYuOTYtMS4zMyAxLTMuMDcgMS4zMmwtLjQ3LjgxYy41OCAxLjYyLjk3IDIuMzMuMzkgMy4zMi0uNTMuOTEtMS42MSAxLjItMi41My42OC0uMDYtLjAzLS4xMS0uMDktLjE3LS4xMy0uMy42Ny0uNjQgMS4yNC0xLjAzIDEuNzMuMDcuMDQuMTMuMDkuMi4xNCAxLjg3IDEuMDggNC4xOC40NiA1LjI2LTEuNDEuMDYtLjEuMDktLjIxLjE0LS4zMi4yMi4yNy40OC41MS44LjY5IDEuNDMuODMgMy4yNy4zNCA0LjEtMS4xcy4zMi0zLjI5LTEuMTEtNC4xMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMzIgMTQuMDFjLS43NCAzLjU4LTEuMjcgNS45NS0yLjYyIDYuNzMtLjkxLjUzLTIgLjI0LTIuNTMtLjY4LS41Ni0uOTYtLjItMS42Ni4zOS0zLjMybC0uNDYtLjgxYy0xLjctLjMxLTIuNS0uMzMtMy4wNy0xLjMyLS41My0uOTEtLjI0LTIgLjY4LTIuNTMuMDktLjA1LjE5LS4wOC4yOS0uMTEtLjM1LS41Ni0uNjQtMS4xNy0uODItMS44NS0uMTYuMDctLjMyLjE0LS40OC4yMy0xLjg3IDEuMDgtMi40OSAzLjM5LTEuNDEgNS4yNi4wNi4xLjE0LjE4LjIxLjI4LS4zNC4wNi0uNjguMTctMSAuMzUtMS40My44My0xLjkzIDIuNjYtMS4xIDQuMXMyLjY2IDEuOTMgNC4xIDEuMWMuMzItLjE4LjU4LS40Mi44LS42OS4wNS4xMS4wOC4yMi4xNC4zMiAxLjA4IDEuODcgMy4zOSAyLjQ5IDUuMjYgMS40MSAyLjA5LTEuMjEgMi43MS0zLjkzIDMuNTUtNy45NGwtMS45My0uNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpdmVyc2l0eTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjMyIDEzLjAxYy45Ni4wMiAxLjg1LjUgMi40NSAxLjM0QTMuOTYxIDMuOTYxIDAgMCAwIDEyIDE2YzEuMjkgMCAyLjUtLjYyIDMuMjMtMS42Ni42LS44NCAxLjQ5LTEuMzIgMi40NS0xLjM0LS43Mi0xLjIyLTMuNi0yLTUuNjgtMi0yLjA3IDAtNC45Ni43OC01LjY4IDIuMDF6TTQgMTNjMS42NiAwIDMtMS4zNCAzLTNTNS42NiA3IDQgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzek0yMCAxM2MxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6TTEyIDEwYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRoLTMuMjdjLS43NyAwLTEuMzUuNDUtMS42OC45Mi0uMDQuMDYtMS4zNiAyLjA4LTQuMDUgMi4wOC0xLjQzIDAtMy4wMy0uNjQtNC4wNS0yLjA4LS4zOS0uNTUtMS0uOTItMS42OC0uOTJIM2MtMS4xIDAtMiAuOS0yIDJ2NGg3di0yLjI2YzEuMTUuOCAyLjU0IDEuMjYgNCAxLjI2czIuODUtLjQ2IDQtMS4yNlYyMGg3di00YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb21haW5BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgxNHYtMmgtNHYtMmgydi0yaC0ydi0yaDJ2LTJoLTJWOWg4djZoMlY3SDEyek02IDE5SDR2LTJoMnYyem0wLTRINHYtMmgydjJ6bTAtNEg0VjloMnYyem0wLTRINFY1aDJ2MnptNCAxMkg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0wLTRIOFY5aDJ2MnptMC00SDhWNWgydjJ6bTE0IDEydjJoLTJ2MmgtMnYtMmgtMnYtMmgydi0yaDJ2Mmgyem0tNi04aC0ydjJoMnYtMnptMCA0aC0ydjJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9tYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgyMFY3SDEyek02IDE5SDR2LTJoMnYyem0wLTRINHYtMmgydjJ6bTAtNEg0VjloMnYyem0wLTRINFY1aDJ2MnptNCAxMkg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0wLTRIOFY5aDJ2MnptMC00SDhWNWgydjJ6bTEwIDEyaC04di0yaDJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDh2MTB6bS0yLThoLTJ2Mmgydi0yem0wIDRoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb3duaGlsbFNraWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgNC41YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptLTIuNzIgMTYuNC43Ni4yN2E1LjkzMyA1LjkzMyAwIDAgMCA0LjM0LS4xN0wyMiAyMi4xM2MtMS4wNS41NS0yLjI0Ljg3LTMuNS44Ny0uODYgMC0xLjY4LS4xNC0yLjQ1LS40MUwyIDE3LjQ3bC41LTEuNDEgNi45IDIuNTEgMS43Mi00LjQ0LTMuNTctMy43M2MtLjg5LS45NC0uNjctMi40Ny40NS0zLjEybDMuNDgtMi4wMWMxLjEtLjY0IDIuNTItLjEgMi45MSAxLjExbC4zMyAxLjA4YTUuMDE3IDUuMDE3IDAgMCAwIDIuODMgMy4xNGwuNTItMS42IDEuNDMuNDYtMS4xMiAzLjQ1QTcuMDI5IDcuMDI5IDAgMCAxIDEzIDguNTlsLTIuNTMgMS40NSAzLjAzIDMuNDYtMi4yMiA1Ljc2IDMuMDkgMS4xMiAyLjEtNi40NGMuNDYuMTguOTQuMzEgMS40NC40MWwtMi4xMyA2LjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0Tm90aWZpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjU4IDYuMjUgMS43NyAxLjc3TDE0LjM3IDEzSDEyLjZ2LTEuNzdsNC45OC00Ljk4em0zLjI3LS40NC0xLjA2LTEuMDZjLS4yLS4yLS41MS0uMi0uNzEgMGwtLjg1Ljg1TDIwIDcuMzdsLjg1LS44NWMuMi0uMi4yLS41MiAwLS43MXpNMTggMTIuMlYxN2gydjJINHYtMmgydi03YzAtMi43OSAxLjkxLTUuMTQgNC41LTUuOHYtLjdjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2LjdjLjgyLjIxIDEuNTcuNTkgMi4yMSAxLjA5TDEwLjYgMTAuNFYxNWg0LjZsMi44LTIuOHpNMTAgMjBoNGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZGVybHlXb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgMTFjLTEuNTYgMC0yLjkyLS45LTMuNTgtMi4yMWwtLjc5LTEuNjdDMTQuMTIgNy4xIDEzLjYzIDYgMTIuMzQgNiA4LjcyIDYgNiAxNi42OSA2IDE5aDIuNWwtMi4xIDIuOEw4IDIzbDMtNGgydjRoMnYtNC4wM0wxMyAxM2wuNDktMi43MUE2LjAyIDYuMDIgMCAwIDAgMTcgMTIuODF2LjY5aDF2LTFjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVWMjNoMVYxMi41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXpNMTEuNiAyLjkxYy0uMDYuMTktLjEuMzgtLjEuNTkgMCAxLjEuOSAyIDIgMnMyLS45IDItMi0uOS0yLTItMmMtLjIxIDAtLjQuMDQtLjU5LjEtLjE1LS4zNS0uNS0uNi0uOTEtLjYtLjU1IDAtMSAuNDUtMSAxIDAgLjQxLjI1Ljc2LjYuOTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZGVybHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYuNSA3VjIzaC0xVjEyLjVjMC0uMjgtLjIyLS41LS41LS41cy0uNS4yMi0uNS41djFoLTF2LS42OWE2LjAyIDYuMDIgMCAwIDEtMy41MS0yLjUyYy0uMzEuODctLjQ5IDEuNzgtLjQ5IDIuNzEgMCAuMjMuMDIuNDYuMDMuNjlMMTUgMTYuNVYyM2gtMnYtNWwtMS43OC0yLjU0TDExIDE5bC0zIDQtMS42LTEuMkw5IDE4LjMzVjEzYzAtMS4xNS4xOC0yLjI5LjUtMy4zOWwtMS41Ljg1VjE0SDZWOS4zbDUuNC0zLjA3di4wMWEyIDIgMCAwIDEgMS45NC4wM2MuMzYuMjEuNjMuNTEuOC44NWwuNzkgMS42N0EzLjk4NyAzLjk4NyAwIDAgMCAxOC41IDExYy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaUVtb3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNOC41IDhjLjgzIDAgMS41LjY3IDEuNSAxLjVTOS4zMyAxMSA4LjUgMTEgNyAxMC4zMyA3IDkuNSA3LjY3IDggOC41IDh6TTEyIDE4Yy0yLjI4IDAtNC4yMi0xLjY2LTUtNGgxMGMtLjc4IDIuMzQtMi43MiA0LTUgNHptMy41LTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNC42NyA4IDE1LjUgOHMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtb2ppRXZlbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNWgtMlYzSDd2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxYzAgMi41NSAxLjkyIDQuNjMgNC4zOSA0Ljk0QTUuMDEgNS4wMSAwIDAgMCAxMSAxNS45VjE5SDd2MmgxMHYtMmgtNHYtMy4xYTUuMDEgNS4wMSAwIDAgMCAzLjYxLTIuOTZDMTkuMDggMTIuNjMgMjEgMTAuNTUgMjEgOFY3YzAtMS4xLS45LTItMi0yek01IDhWN2gydjMuODJDNS44NCAxMC40IDUgOS4zIDUgOHptMTQgMGMwIDEuMy0uODQgMi40LTIgMi44MlY3aDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW1vamlGbGFncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDktMS0ySDdWNS43MmMuNi0uMzQgMS0uOTggMS0xLjcyIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMmMwIC43NC40IDEuMzggMSAxLjcyVjIxaDJ2LTRoNWwxIDJoN1Y5aC02em00IDhoLTRsLTEtMkg3VjloNWwxIDJoNXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaUZvb2RCZXZlcmFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNIOXYyLjRsMS44MSAxLjQ1Yy4xMi4wOS4xOS4yNC4xOS4zOXY0LjI2YzAgLjI4LS4yMi41LS41LjVoLTRjLS4yOCAwLS41LS4yMi0uNS0uNVY3LjI0YzAtLjE1LjA3LS4zLjE5LS4zOUw4IDUuNFYzSDR2MTBjMCAyLjIxIDEuNzkgNCA0IDRoNmMyLjIxIDAgNC0xLjc5IDQtNHYtM2gyYTIgMiAwIDAgMCAyLTJWNWMwLTEuMTEtLjg5LTItMi0yem0wIDVoLTJWNWgydjN6TTQgMTloMTZ2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaU5hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk0IDQuODhBMS4zMiAxLjMyIDAgMCAwIDIwLjY4IDRIMTkuNmwtLjMxLS45N0MxOS4xNSAyLjQzIDE4LjYxIDIgMTggMnMtMS4xNS40My0xLjI5IDEuMDRMMTYuNCA0aC0xLjA3Yy0uNTcgMC0xLjA4LjM1LTEuMjYuODgtLjE5LjU2LjA0IDEuMTcuNTYgMS40OGwuODcuNTItLjQgMS4yNGMtLjIzLjU4LS4wNCAxLjI1LjQ1IDEuNjIuMjMuMTcuNTEuMjYuNzguMjYuMzEgMCAuNjEtLjExLjg2LS4zMmwuODEtLjcuODEuN2MuMjUuMjEuNTUuMzIuODYuMzIuMjcgMCAuNTUtLjA5Ljc4LS4yNi41LS4zNy42OC0xLjA0LjQ1LTEuNjJsLS4zOS0xLjI0Ljg3LS41MmMuNTEtLjMxLjc0LS45Mi41Ni0xLjQ4ek0xOCA3Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTEzLjQ5IDEwLjUxYy0uNDMtLjQzLS45NC0uNzMtMS40OS0uOTNWOGgtMXYxLjM4Yy0uMTEtLjAxLS4yMy0uMDMtLjM0LS4wMy0xLjAyIDAtMi4wNS4zOS0yLjgzIDEuMTctLjE2LjE2LS4zLjM0LS40My41M0w2IDEwLjUyYTMuMDEgMy4wMSAwIDAgMC0zLjgzIDEuODJjLS4yNy43NS0uMjMgMS41Ny4xMiAyLjI5LjIzLjQ4LjU4Ljg3IDEgMS4xNi0uMzggMS4zNS0uMDYgMi44NSAxIDMuOTFhMy45ODEgMy45ODEgMCAwIDAgMy45MSAxYy4yOS40Mi42OC43NyAxLjE2IDEgLjQyLjIuODUuMyAxLjI5LjMuMzQgMCAuNjgtLjA2IDEuMDEtLjE3YTMuMDA3IDMuMDA3IDAgMCAwIDEuODItMy44NWwtLjUyLTEuMzdjLjE4LS4xMy4zNi0uMjcuNTMtLjQzLjg3LS44NyAxLjI0LTIuMDQgMS4xNC0zLjE3SDE2di0xaC0xLjU5Yy0uMTktLjU1LS40OS0xLjA2LS45Mi0xLjV6bS04LjgyIDMuNzhjLS4yNS0uMDktLjQ1LS4yNy0uNTctLjUxcy0uMTMtLjUxLS4wNC0uNzZjLjE5LS41Mi43Ni0uNzkgMS4yNi0uNjFsMy4xNiAxLjE5Yy0xLjE1LjYtMi42MyAxLjExLTMuODEuNjl6bTYuMzIgNS42NWMtLjI1LjA5LS41Mi4wOC0uNzYtLjA0YS45ODkuOTg5IDAgMCAxLS41MS0uNTdjLS40Mi0xLjE4LjA5LTIuNjUuNy0zLjhsMS4xOCAzLjEzYy4xOC41Mi0uMDkgMS4xLS42MSAxLjI4em0xLjIxLTUuMzQtLjYxLTEuNjFjMC0uMDEtLjAxLS4wMi0uMDItLjAzbC0uMDYtLjEyYS42NzMuNjczIDAgMCAwLS4wNy0uMTFsLS4wOS0uMDktLjA5LS4wOWMtLjAzLS4wMy0uMDctLjA1LS4xMS0uMDctLjA0LS4wMi0uMDctLjA1LS4xMi0uMDYtLjAxIDAtLjAyLS4wMS0uMDMtLjAybC0xLjYtLjZhMS45NjYgMS45NjYgMCAwIDEgMi42Ny4xM2MuNzMuNzMuNzcgMS44OC4xMyAyLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaU9iamVjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzYy0uNDYgMC0uOTMuMDQtMS40LjE0LTIuNzYuNTMtNC45NiAyLjc2LTUuNDggNS41Mi0uNDggMi42MS40OCA1LjAxIDIuMjIgNi41Ni40My4zOC42Ni45MS42NiAxLjQ3VjE5YzAgMS4xLjkgMiAyIDJoLjI4YTEuOTggMS45OCAwIDAgMCAzLjQ0IDBIMTRjMS4xIDAgMi0uOSAyLTJ2LTIuMzFjMC0uNTUuMjItMS4wOS42NC0xLjQ2QTYuOTU2IDYuOTU2IDAgMCAwIDE5IDEwYzAtMy44Ny0zLjEzLTctNy03em0yIDE2aC00di0xaDR2MXptMC0yaC00di0xaDR2MXptLTEuNS01LjU5VjE0aC0xdi0yLjU5TDkuNjcgOS41OWwuNzEtLjcxTDEyIDEwLjVsMS42Mi0xLjYyLjcxLjcxLTEuODMgMS44MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW1vamlQZW9wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS44OSA4LjExQzE1LjUgNy43MiAxNC44MyA3IDEzLjUzIDdoLTIuNTRDOC4yNCA2Ljk5IDYgNC43NSA2IDJINGMwIDMuMTYgMi4xMSA1Ljg0IDUgNi43MVYyMmgydi02aDJ2NmgyVjEwLjA1TDE4Ljk1IDE0bDEuNDEtMS40MS00LjQ3LTQuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtb2ppU3ltYm9scyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMmg4djJIM3pNNiAxMWgyVjdoM1Y1SDN2Mmgzek0xMi40MDQgMjAuMTgybDcuNzc4LTcuNzc4IDEuNDE0IDEuNDE0LTcuNzc4IDcuNzc4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOS41XCIsXCJjeVwiOlwiMTkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTFBMi41IDIuNSAwIDAgMCAxOCA4LjVWNGgzVjJoLTR2NC41MWMtLjQyLS4zMi0uOTMtLjUxLTEuNS0uNTFhMi41IDIuNSAwIDAgMCAwIDV6TTkuNzQgMTUuOTZsLTEuNDEgMS40MS0uNzEtLjcxLjM1LS4zNWEyLjQ5OSAyLjQ5OSAwIDAgMC0xLjc3LTQuMjcgMi40OTkgMi40OTkgMCAwIDAtMS43NyA0LjI3bC4zNS4zNS0xLjA2IDEuMDZjLS45OC45OC0uOTggMi41NiAwIDMuNTQuNS41IDEuMTQuNzQgMS43OC43NHMxLjI4LS4yNCAxLjc3LS43M2wxLjA2LTEuMDYgMS40MSAxLjQxIDEuNDEtMS40MS0xLjQxLTEuNDEgMS40MS0xLjQxLTEuNDEtMS40M3pNNS44NSAxNC4yYy4xMi0uMTIuMjYtLjE1LjM1LS4xNXMuMjMuMDMuMzUuMTVjLjE5LjIuMTkuNTEgMCAuNzFsLS4zNS4zNS0uMzUtLjM2YS41MDEuNTAxIDAgMCAxIDAtLjd6bTAgNS42NWMtLjEyLjEyLS4yNi4xNS0uMzUuMTVzLS4yMy0uMDMtLjM1LS4xNWEuNTEzLjUxMyAwIDAgMSAwLS43MWwxLjA2LTEuMDYuNzEuNzEtMS4wNyAxLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaVRyYW5zcG9ydGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNTcgMTAuNjZjLS4xNC0uNC0uNTItLjY2LS45Ny0uNjZoLTcuMTljLS40NiAwLS44My4yNi0uOTguNjZMMTAgMTQuNzdsLjAxIDUuNTFjMCAuMzguMzEuNzIuNjkuNzJoLjYyYy4zOCAwIC42OC0uMzguNjgtLjc2VjE5aDh2MS4yNGMwIC4zOC4zMS43Ni42OS43NmguNjFjLjM4IDAgLjY5LS4zNC42OS0uNzJsLjAxLTEuMzd2LTQuMTRsLTEuNDMtNC4xMXptLTguMTYuMzRoNy4xOWwxLjAzIDNoLTkuMjVsMS4wMy0zek0xMiAxN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem04IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgxVjNIN3Y1SDJ2MTNoMVY5aDVWNGg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDExaDJ2Mkg1ek0xMCA1aDJ2MmgtMnpNNSAxNWgydjJINXpNNSAxOWgydjJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW5naW5lZXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00ek0yMi4xIDYuODRjLjAxLS4xMS4wMi0uMjIuMDItLjM0IDAtLjEyLS4wMS0uMjMtLjAzLS4zNGwuNzQtLjU4Yy4wNy0uMDUuMDgtLjE1LjA0LS4yMmwtLjctMS4yMWMtLjA0LS4wOC0uMTQtLjEtLjIxLS4wOGwtLjg2LjM1Yy0uMTgtLjE0LS4zOC0uMjUtLjU5LS4zNGwtLjEzLS45M0EuMTgyLjE4MiAwIDAgMCAyMC4yIDNoLTEuNGMtLjA5IDAtLjE2LjA2LS4xNy4xNWwtLjEzLjkzYy0uMjEuMDktLjQxLjIxLS41OS4zNGwtLjg3LS4zNWMtLjA4LS4wMy0uMTcgMC0uMjEuMDhsLS43IDEuMjFjLS4wNC4wOC0uMDMuMTcuMDQuMjJsLjc0LjU4YTEuOTUzIDEuOTUzIDAgMCAwIDAgLjY4bC0uNzQuNThjLS4wNy4wNS0uMDguMTUtLjA0LjIybC43IDEuMjFjLjA0LjA4LjE0LjEuMjEuMDhsLjg3LS4zNWMuMTguMTQuMzguMjUuNTkuMzRsLjEzLjkzYy4wMS4wOS4wOC4xNS4xNy4xNWgxLjRjLjA5IDAgLjE2LS4wNi4xNy0uMTVsLjEzLS45M2MuMjEtLjA5LjQxLS4yMS41OS0uMzRsLjg3LjM1Yy4wOC4wMy4xNyAwIC4yMS0uMDhsLjctMS4yMWMuMDQtLjA4LjAzLS4xNy0uMDQtLjIybC0uNzMtLjU4em0tMi42LjkxYTEuMjUgMS4yNSAwIDEgMSAwLTIuNSAxLjI1IDEuMjUgMCAwIDEgMCAyLjV6TTE5LjkyIDExLjY4bC0uNS0uODdjLS4wMy0uMDYtLjEtLjA4LS4xNS0uMDZsLS42Mi4yNWMtLjEzLS4xLS4yNy0uMTgtLjQyLS4yNGwtLjA5LS42NkEuMTUuMTUgMCAwIDAgMTggMTBoLTFjLS4wNiAwLS4xMS4wNC0uMTIuMTFsLS4wOS42NmMtLjE1LjA2LS4yOS4xNS0uNDIuMjRsLS42Mi0uMjVjLS4wNi0uMDItLjEyIDAtLjE1LjA2bC0uNS44N2MtLjAzLjA2LS4wMi4xMi4wMy4xNmwuNTMuNDFjLS4wMS4wOC0uMDIuMTYtLjAyLjI0IDAgLjA4LjAxLjE3LjAyLjI0bC0uNTMuNDFjLS4wNS4wNC0uMDYuMTEtLjAzLjE2bC41Ljg3Yy4wMy4wNi4xLjA4LjE1LjA2bC42Mi0uMjVjLjEzLjEuMjcuMTguNDIuMjRsLjA5LjY2Yy4wMS4wNy4wNi4xMS4xMi4xMWgxYy4wNiAwIC4xMi0uMDQuMTItLjExbC4wOS0uNjZjLjE1LS4wNi4yOS0uMTUuNDItLjI0bC42Mi4yNWMuMDYuMDIuMTIgMCAuMTUtLjA2bC41LS44N2MuMDMtLjA2LjAyLS4xMi0uMDMtLjE2bC0uNTItLjQxYy4wMS0uMDguMDItLjE2LjAyLS4yNCAwLS4wOC0uMDEtLjE3LS4wMi0uMjRsLjUzLS40MWMuMDUtLjA0LjA2LS4xMS4wNC0uMTd6bS0yLjQyIDEuNjVjLS40NiAwLS44My0uMzgtLjgzLS44MyAwLS40Ni4zOC0uODMuODMtLjgzcy44My4zOC44My44M2MwIC40Ni0uMzcuODMtLjgzLjgzek00Ljc0IDloOC41M2MuMjcgMCAuNDktLjIyLjQ5LS40OXYtLjAyYS40OS40OSAwIDAgMC0uNDktLjQ5SDEzYzAtMS40OC0uODEtMi43NS0yLTMuNDV2Ljk1YzAgLjI4LS4yMi41LS41LjVzLS41LS4yMi0uNS0uNVY0LjE0QzkuNjggNC4wNiA5LjM1IDQgOSA0cy0uNjguMDYtMSAuMTRWNS41YzAgLjI4LS4yMi41LS41LjVTNyA1Ljc4IDcgNS41di0uOTVDNS44MSA1LjI1IDUgNi41MiA1IDhoLS4yNmEuNDkuNDkgMCAwIDAtLjQ5LjQ5di4wM2MwIC4yNi4yMi40OC40OS40OHpNOSAxM2MxLjg2IDAgMy40MS0xLjI4IDMuODYtM0g1LjE0Yy40NSAxLjcyIDIgMyAzLjg2IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY2UyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTcgMTMuNTJ2LS4wNEMyMy4yMSAxMi4zOCAyNCAxMC43OCAyNCA5YzAtMy4zMS0yLjY5LTYtNi02LS4yNiAwLS41Mi4wMi0uNzguMDZhNS45OCA1Ljk4IDAgMCAwLTEwLjQ0IDBDNi41MiAzLjAyIDYuMjYgMyA2IDMgMi42OSAzIDAgNS42OSAwIDljMCAxLjc4Ljc5IDMuMzggMi4wMiA0LjQ4di4wNEE2LjAwOCA2LjAwOCAwIDAgMCAwIDE4YzAgMy4zMSAyLjY5IDYgNiA2IDEuMzkgMCAyLjY3LS40OCAzLjY5LTEuMjguNzQuMTggMS41MS4yOCAyLjMxLjI4czEuNTctLjEgMi4zMS0uMjhjMS4wMi44IDIuMyAxLjI4IDMuNjkgMS4yOCAzLjMxIDAgNi0yLjY5IDYtNiAwLTEuNzgtLjc5LTMuMzgtMi4wMy00LjQ4ek0xMiAyMWMtNC40MSAwLTgtMy41OS04LTggMC0zLjcyIDIuNTYtNi44NSA2LTcuNzR2LjA1YzAgMy4zNCAyLjcyIDYuMDYgNi4wNiA2LjA2IDEuMjYgMCAyLjQ1LS4zOSAzLjQ1LTEuMDkuMzEuODYuNDkgMS43Ny40OSAyLjcyIDAgNC40MS0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuOTEgMTEuOTZDMjIuMzkgNi4zMiAxNy42NiAyIDEyIDJTMS42MSA2LjMyIDEuMDkgMTEuOTZsLS45IDkuODZjLS4xIDEuMTcuODIgMi4xOCAyIDIuMThoMTkuNjJjMS4xOCAwIDIuMS0xLjAxIDEuOTktMi4xOGwtLjg5LTkuODZ6TTQuNTQgOS4xM2MuODcuNTUgMS44OS44NyAyLjk2Ljg3IDEuODYgMCAzLjUtLjkzIDQuNS0yLjM1QzEzIDkuMDcgMTQuNjQgMTAgMTYuNSAxMGMxLjA3IDAgMi4wOS0uMzIgMi45Ni0uODcuMzQuODkuNTQgMS44Ni41NCAyLjg3IDAgNC40MS0zLjU5IDgtOCA4cy04LTMuNTktOC04YzAtMS4wMS4yLTEuOTguNTQtMi44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy0uOTYgMC0xLjg4LjE0LTIuNzUuMzlBNC45ODYgNC45ODYgMCAwIDAgNSAwQzIuMjQgMCAwIDIuMjQgMCA1YzAgMS44Ljk2IDMuMzcgMi4zOSA0LjI1QzIuMTQgMTAuMTIgMiAxMS4wNCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwczEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOCAwLS4wNS4wMS0uMS4wMS0uMTUgMi42LS45OCA0LjY4LTIuOTkgNS43NC01LjU1YTkuOTQyIDkuOTQyIDAgMCAwIDkuOTIgMy40NmMuMjEuNzEuMzMgMS40Ni4zMyAyLjI0IDAgNC40MS0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuMTIuMjMtMi4xOC42NS0zLjE1YS40OTUuNDk1IDAgMCAwIC44NS0uMzVjMC0uMjUtLjE5LS40NS0uNDMtLjQ5LjE1LS4yNi4zMi0uNTEuNDktLjc1LS4wMy4wOC0uMDYuMTUtLjA2LjI0IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41UzYuMjggNyA2IDdjLS4xMyAwLS4yNS4wNS0uMzQuMTMuNTItLjY4IDEuMTUtMS4yOCAxLjg2LTEuNzZBLjQ5NS40OTUgMCAwIDAgOCA2YS40OTUuNDk1IDAgMCAwIC4xLS45OGMuMTYtLjA5LjMyLS4xNy40OS0uMjUuMDkuMTQuMjQuMjMuNDEuMjMuMjggMCAuNS0uMjIuNS0uNSAwLS4wMy0uMDEtLjA2LS4wMi0uMDkuMzktLjEzLjc5LS4yMyAxLjIxLS4zLS4xMS4xLS4xOS4yMy0uMTkuMzkgMCAuMjguMjIuNS41LjVzLjUtLjIyLjUtLjVhLjUxLjUxIDAgMCAwLS4zLS40NmMuMjYtLjAzLjUzLS4wNC44LS4wNHMuNTQuMDEuOC4wNGMtLjE4LjA4LS4zLjI1LS4zLjQ2IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41YzAtLjE2LS4wOC0uMjktLjE5LS4zOC40MS4wNy44Mi4xNyAxLjIxLjMtLjAxLjAyLS4wMi4wNS0uMDIuMDggMCAuMjguMjIuNS41LjUuMTcgMCAuMzItLjA5LjQxLS4yMy4xNy4wOC4zMy4xNi40OS4yNUEuNDk1LjQ5NSAwIDAgMCAxNiA2Yy4yOCAwIC41LS4yMi41LS41IDAtLjA1LS4wMS0uMDktLjAzLS4xMy43MS40OCAxLjM0IDEuMDggMS44NiAxLjc2YS40OTUuNDk1IDAgMCAwLS44My4zN2MwIC4yOC4yMi41LjUuNXMuNS0uMjIuNS0uNWMwLS4wOS0uMDMtLjE2LS4wNy0uMjMuMTguMjQuMzQuNDkuNDkuNzUtLjIzLjAzLS40Mi4yMy0uNDIuNDhhLjQ5NS40OTUgMCAwIDAgLjg1LjM1Yy40Mi45Ny42NSAyLjAzLjY1IDMuMTUgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHYtLjAzYzIuMzEtLjIyIDMuNDMtMS41OSA0LjM0LTMuNDEuMTctLjM1LjUxLS41Ni45LS41Nmg1LjUzYy4zOCAwIC43Mi4yMS44OS41NS45IDEuOCAxLjk5IDMuMTkgNC4zNCAzLjQxdi4wM2MwIDQuNDItMy41OSA4LjAxLTggOC4wMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY2Vib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTBTMiA2LjQ4IDIgMTJjMCA0Ljg0IDMuNDQgOC44NyA4IDkuOFYxNUg4di0zaDJWOS41QzEwIDcuNTcgMTEuNTcgNiAxMy41IDZIMTZ2M2gtMmMtLjU1IDAtMSAuNDUtMSAxdjJoM3YzaC0zdjYuOTVjNS4wNS0uNSA5LTQuNzYgOS05Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGZW1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDkuNUMxNy41IDYuNDYgMTUuMDQgNCAxMiA0UzYuNSA2LjQ2IDYuNSA5LjVjMCAyLjcgMS45NCA0LjkzIDQuNSA1LjRWMTdIOXYyaDJ2Mmgydi0yaDJ2LTJoLTJ2LTIuMWMyLjU2LS40NyA0LjUtMi43IDQuNS01LjR6bS05IDBDOC41IDcuNTcgMTAuMDcgNiAxMiA2czMuNSAxLjU3IDMuNSAzLjVTMTMuOTMgMTMgMTIgMTNzLTMuNS0xLjU3LTMuNS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVwbGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMnYyMGgyMFYySDJ6bTkuODYgMTQuOTZjLjc2LS4yNCAxLjQtMS4wNCAxLjUzLTEuNjMuMTMtLjU2LS4xLTEuMDUtLjItMS42LS4wOC0uNDYtLjA3LS44NS4wOC0xLjI4LjU0IDEuMjEgMi4xNSAxLjY0IDEuOTggMy4xOC0uMTkgMS43LTIuMTEgMi4zOC0zLjM5IDEuMzN6TTIwIDIwaC0ydi0yaC0yLjAyQTQuOTggNC45OCAwIDAgMCAxNyAxNWMwLTEuODktMS4wOS0yLjg1LTEuODUtMy4zN0MxMi4yIDkuNjEgMTMgNyAxMyA3Yy02LjczIDMuNTctNi4wMiA3LjQ3LTYgOCAuMDMuOTYuNDkgMi4wNyAxLjIzIDNINnYySDRWNGgxNnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRml0Yml0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuODkgMTMuODljMS4wNCAwIDEuODktLjg1IDEuODktMS44OXMtLjg1LTEuODktMS44OS0xLjg5UzE4IDEwLjk2IDE4IDEycy44NSAxLjg5IDEuODkgMS44OXptLTQuMjQtLjIxYy45MyAwIDEuNjgtLjc1IDEuNjgtMS42OHMtLjc1LTEuNjgtMS42OC0xLjY4Yy0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OHMuNzUgMS42OCAxLjY4IDEuNjh6bTAtNC4yNmMuOTMgMCAxLjY4LS43NSAxLjY4LTEuNjggMC0uOTMtLjc1LTEuNjgtMS42OC0xLjY4LS45MyAwLTEuNjguNzUtMS42OCAxLjY4IDAgLjkzLjc1IDEuNjggMS42OCAxLjY4em0wIDguNTFjLjkzIDAgMS42OC0uNzUgMS42OC0xLjY4IDAtLjkzLS43NS0xLjY4LTEuNjgtMS42OC0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OCAwIC45Mi43NSAxLjY4IDEuNjggMS42OHptLTQuMjQtNC40NmMuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDdzLS42Ni0xLjQ3LTEuNDctMS40N2MtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0wLTQuMjZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3cy0uNjYtMS40Ny0xLjQ3LTEuNDdjLS44MSAwLTEuNDcuNjYtMS40NyAxLjQ3cy42NSAxLjQ3IDEuNDcgMS40N3ptMCA4LjUyYy44MSAwIDEuNDctLjY2IDEuNDctMS40NyAwLS44MS0uNjYtMS40Ny0xLjQ3LTEuNDctLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDctLjAxLjgxLjY1IDEuNDcgMS40NyAxLjQ3em0wIDQuMjdjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3IDAtLjgxLS42Ni0xLjQ3LTEuNDctMS40Ny0uODEgMC0xLjQ3LjY2LTEuNDcgMS40Ny0uMDEuODEuNjUgMS40NyAxLjQ3IDEuNDd6bTAtMTcuMDZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3UzEyLjIyIDIgMTEuNDEgMmMtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0tNC4yNSA4LjMyYy43IDAgMS4yNi0uNTcgMS4yNi0xLjI2cy0uNTctMS4yNi0xLjI2LTEuMjZhMS4yNjEgMS4yNjEgMCAwIDAgMCAyLjUyem0wIDQuMjVhMS4yNjEgMS4yNjEgMCAwIDAgMC0yLjUyIDEuMjYxIDEuMjYxIDAgMCAwIDAgMi41MnptMC04LjQ5YTEuMjYxIDEuMjYxIDAgMCAwIDAtMi41MiAxLjI2MSAxLjI2MSAwIDAgMCAwIDIuNTJ6bS0zLjg3IDQuMDNhMS4wNSAxLjA1IDAgMSAwIDAtMi4xIDEuMDUgMS4wNSAwIDAgMCAwIDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC42NyAxOWMtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMSAxLTMuMzQgMS0xLjI0IDAtMS4zOC0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxdjJjMS45NSAwIDIuMTEtMSAzLjM0LTEgMS4yNCAwIDEuMzggMSAzLjMzIDEgMS45NSAwIDIuMS0xIDMuMzQtMSAxLjIyIDAgMS40IDEgMy4zMyAxIDEuOTMgMCAyLjEtMSAzLjMzLTEgMS4yMiAwIDEuNCAxIDMuMzMgMXYtMmMtMS4yNCAwLTEuMzgtMS0zLjMzLTF6TTguNjggMTcuNWMxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzEgMXYtMmMtLjYzIDAtMS0uMjgtMS40OC0uNTVsLTIuMDItNy41MyAyLjA5Ljg1Ljc0LTEuODZMOS43OCAyIDIgMTEuNjFsMS41NyAxLjIzIDEuMzktMS43OC45MyAzLjQ4Yy0uMTgtLjAyLS4zNS0uMDUtLjU2LS4wNS0xLjk1IDAtMi4wOSAxLTMuMzMgMXYyYzEuOSAwIDIuMTctMSAzLjM1LTEgMS4xOS4wMSAxLjQyIDEuMDEgMy4zMyAxLjAxem01LjM2LTcuMzIgMS40MiA1LjMxYy0xLjM0LjA5LTEuNDctLjk5LTMuNDctLjk5LS4zNiAwLS42NS4wNC0uOTEuMWwtLjkxLTMuMzkgMy44Ny0xLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xsb3dUaGVTaWducyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek01Ljc1IDguOSAzIDIzaDIuMWwxLjc1LThMOSAxN3Y2aDJ2LTcuNTVMOC45NSAxMy40bC42LTNDMTAuODUgMTIgMTIuOCAxMyAxNSAxM3YtMmMtMS44NSAwLTMuNDUtMS00LjM1LTIuNDVsLS45NS0xLjZDOS4zNSA2LjM1IDguNyA2IDggNmMtLjI1IDAtLjUuMDUtLjc1LjE1TDIgOC4zVjEzaDJWOS42NWwxLjc1LS43NU0xMyAydjdoMy43NXYxNGgxLjVWOUgyMlYyaC05em01LjAxIDZWNi4yNUgxNC41di0xLjVoMy41MVYzbDIuNDkgMi41TDE4LjAxIDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZyb250SGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljc1IDhjLS42OSAwLTEuMjUuNTYtMS4yNSAxLjI1VjE1SDE4Yy0xLjY1IDAtMyAxLjM1LTMgM2gtMWMwLTIuMDQgMS41My0zLjcyIDMuNS0zLjk3VjMuMjVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwVjExaC0xVjEuMjVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwVjExaC0xVjIuNzVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwVjEySDdWNS43NWExLjI1IDEuMjUgMCAwIDAtMi41IDB2MTBjMCA0LjU2IDMuNjkgOC4yNSA4LjI1IDguMjVTMjEgMjAuMzEgMjEgMTUuNzV2LTYuNUMyMSA4LjU2IDIwLjQ0IDggMTkuNzUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2lybCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDcuNWMuOTcgMCAxLjc1LS43OCAxLjc1LTEuNzVTMTIuOTcgNCAxMiA0cy0xLjc1Ljc4LTEuNzUgMS43NVMxMS4wMyA3LjUgMTIgNy41em0yIDguNXY0aC00di00SDhsMi4zOC02LjM4YTEuNzMzIDEuNzMzIDAgMCAxIDMuMjQgMEwxNiAxNmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOVY3aC0ydjJoLTJ2MmgydjJoMnYtMmgyVjl6TTggMTJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0ek04IDEzYy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00ek0xMi41MSA0LjA1QzEzLjQzIDUuMTEgMTQgNi40OSAxNCA4cy0uNTcgMi44OS0xLjQ5IDMuOTVDMTQuNDcgMTEuNyAxNiAxMC4wNCAxNiA4cy0xLjUzLTMuNy0zLjQ5LTMuOTV6TTE2LjUzIDEzLjgzQzE3LjQyIDE0LjY2IDE4IDE1LjcgMTggMTd2M2gydi0zYzAtMS40NS0xLjU5LTIuNTEtMy40Ny0zLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDhjMC0xLjQyLS41LTIuNzMtMS4zMy0zLjc2LjQyLS4xNC44Ni0uMjQgMS4zMy0uMjQgMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDRoLS4xOGwtLjc3LS43N2MuNi0uOTQuOTUtMi4wNS45NS0zLjIzem03LjgzIDEySDIzdi0zYzAtMi4xOC0zLjU4LTMuNDctNi4zNC0zLjg3IDEuMS43NSAxLjk1IDEuNzEgMi4yMyAyLjk0TDIyLjgzIDIwek03LjI0IDQuNDFhMy45OTYgMy45OTYgMCAwIDEgNS4zNSA1LjM1TDcuMjQgNC40MXpNOS4xNyAxMkg5Yy0yLjIxIDAtNC0xLjc5LTQtNHYtLjE3TC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MUwxNyAxOS44M1YyMEgxdi0zYzAtMi42NiA1LjMzLTQgOC00IC4zNyAwIC44LjAzIDEuMjUuMDhMOS4xNyAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA5djJoLTZWOWg2ek04IDRDNS43OSA0IDQgNS43OSA0IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgOWMtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHptNC41MS04Ljk1QzEzLjQzIDUuMTEgMTQgNi40OSAxNCA4cy0uNTcgMi44OS0xLjQ5IDMuOTVDMTQuNDcgMTEuNyAxNiAxMC4wNCAxNiA4cy0xLjUzLTMuNy0zLjQ5LTMuOTV6bTQuMDIgOS43OEMxNy40MiAxNC42NiAxOCAxNS43IDE4IDE3djNoMnYtM2MwLTEuNDUtMS41OS0yLjUxLTMuNDctMy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxNy42NiA1IDE2IDVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDN6bS04IDBjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTOS42NiA1IDggNUM2LjM0IDUgNSA2LjM0IDUgOHMxLjM0IDMgMyAzem0wIDJjLTIuMzMgMC03IDEuMTctNyAzLjVWMTloMTR2LTIuNWMwLTIuMzMtNC42Ny0zLjUtNy0zLjV6bTggMGMtLjI5IDAtLjYyLjAyLS45Ny4wNSAxLjE2Ljg0IDEuOTcgMS45NyAxLjk3IDMuNDVWMTloNnYtMi41YzAtMi4zMy00LjY3LTMuNS03LTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBzMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjI3IDEyaDMuNDZhMS41IDEuNSAwIDAgMCAxLjQ4LTEuNzVsLS4zLTEuNzlhMi45NTEgMi45NTEgMCAwIDAtNS44Mi4wMWwtLjMgMS43OWMtLjE1LjkxLjU1IDEuNzQgMS40OCAxLjc0ek0xLjY2IDExLjExYy0uMTMuMjYtLjE4LjU3LS4xLjg4LjE2LjY5Ljc2IDEuMDMgMS41MyAxaDEuOTVjLjgzIDAgMS41MS0uNTggMS41MS0xLjI5IDAtLjE0LS4wMy0uMjctLjA3LS40LS4wMS0uMDMtLjAxLS4wNS4wMS0uMDguMDktLjE2LjE0LS4zNC4xNC0uNTMgMC0uMzEtLjE0LS42LS4zNi0uODItLjAzLS4wMy0uMDMtLjA2LS4wMi0uMS4wNy0uMi4wNy0uNDMuMDEtLjY1YTEuMTIgMS4xMiAwIDAgMC0uOTktLjc0LjA5LjA5IDAgMCAxLS4wNy0uMDNDNS4wMyA4LjE0IDQuNzIgOCA0LjM3IDhjLS4zIDAtLjU3LjEtLjc1LjI2LS4wMy4wMy0uMDYuMDMtLjA5LjAyYTEuMjQgMS4yNCAwIDAgMC0xLjcgMS4wM2MwIC4wMi0uMDEuMDQtLjAzLjA2LS4yOS4yNi0uNDYuNjUtLjQxIDEuMDUuMDMuMjIuMTIuNDMuMjUuNi4wMy4wMi4wMy4wNi4wMi4wOXpNMTYuMjQgMTMuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek0xLjIyIDE0LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjktLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNTh6TTIyLjc4IDE0LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxNGMtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYxOEgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTIyIDExdi0uNWMwLTEuMS0uOS0yLTItMmgtMmMtLjQyIDAtLjY1LjQ4LS4zOS44MWwuNy42M2MtLjE5LjMxLS4zMS42Ny0uMzEgMS4wNiAwIDEuMS45IDIgMiAyczItLjkgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cHMzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjQgMTMuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek0xLjIyIDE0LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjktLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNTh6TTIyLjc4IDE0LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxNGMtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYxOEgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTEyIDEyYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pNMS40OTcgMTEgNCA4LjQ5NyA2LjUwMyAxMSA0IDEzLjUwM3pNMjAgOWwtMi41IDRoNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTIuNzVjMS42MyAwIDMuMDcuMzkgNC4yNC45IDEuMDguNDggMS43NiAxLjU2IDEuNzYgMi43M1YxOEg2di0xLjYxYzAtMS4xOC42OC0yLjI2IDEuNzYtMi43MyAxLjE3LS41MiAyLjYxLS45MSA0LjI0LS45MXpNNCAxM2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTEuMTMgMS4xYy0uMzctLjA2LS43NC0uMS0xLjEzLS4xLS45OSAwLTEuOTMuMjEtMi43OC41OEEyLjAxIDIuMDEgMCAwIDAgMCAxNi40M1YxOGg0LjV2LTEuNjFjMC0uODMuMjMtMS42MS42My0yLjI5ek0yMCAxM2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVBNi45NSA2Ljk1IDAgMCAwIDIwIDE0Yy0uMzkgMC0uNzYuMDQtMS4xMy4xLjQuNjguNjMgMS40Ni42MyAyLjI5VjE4SDI0di0xLjU3ek0xMiA2YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDggMTAuNDFjLS4zOS4zOS0xLjA0LjM5LTEuNDMgMGwtNC40Ny00LjQ2LTcuMDUgNy4wNC0uNjYtLjYzYTMgMyAwIDAgMSAwLTQuMjRsNC4yNC00LjI0YTMgMyAwIDAgMSA0LjI0IDBMMTYuNDggOWMuMzkuMzkuMzkgMS4wMiAwIDEuNDF6bS43LTIuMTJjLjc4Ljc4Ljc4IDIuMDUgMCAyLjgzLTEuMjcgMS4yNy0yLjYxLjIyLTIuODMgMGwtMy43Ni0zLjc2LTUuNTcgNS41N2EuOTk2Ljk5NiAwIDAgMCAwIDEuNDFjLjM5LjM5IDEuMDIuMzkgMS40MiAwbDQuNjItNC42Mi43MS43MS00LjYyIDQuNjJhLjk5Ni45OTYgMCAwIDAgMCAxLjQxYy4zOS4zOSAxLjAyLjM5IDEuNDIgMGw0LjYyLTQuNjIuNzEuNzEtNC42MiA0LjYyYS45OTYuOTk2IDAgMSAwIDEuNDEgMS40MWw0LjYyLTQuNjIuNzEuNzEtNC42MiA0LjYyYS45OTYuOTk2IDAgMSAwIDEuNDEgMS40MWw4LjMyLTguMzRhMyAzIDAgMCAwIDAtNC4yNGwtNC4yNC00LjI0YTMuMDAxIDMuMDAxIDAgMCAwLTQuMTgtLjA2bDQuNDcgNC40N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhbHRoQW5kU2FmZXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSAxM0g4di0zaDIuNVY3LjVoM1YxMEgxNnYzaC0yLjV2Mi41aC0zVjEzek0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFydEJyb2tlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgM2MtLjk2IDAtMS45LjI1LTIuNzMuNjlMMTIgOWgzbC0zIDEwIDEtOWgtM2wxLjU0LTUuMzlDMTAuNDcgMy42MSA5LjAxIDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDQuMTMgNC4xNiA3LjE4IDEwIDEyLjUgNS40Ny00Ljk0IDEwLTguMjYgMTAtMTIuNUMyMiA1LjQyIDE5LjU4IDMgMTYuNSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaWtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgNS4yOGMtMS4yMy0uMzctMi4yMi0xLjE3LTIuOC0yLjE4bC0xLTEuNmMtLjQxLS42NS0xLjExLTEtMS44NC0xLS43OCAwLTEuNTkuNS0xLjc4IDEuNDRTNyAyMyA3IDIzaDIuMWwxLjgtOCAyLjEgMnY2aDJ2LTcuNWwtMi4xLTIgLjYtM2MxIDEuMTUgMi40MSAyLjAxIDQgMi4zNFYyM0gxOVY5aC0xLjV2MS43OHpNNy40MyAxMy4xM2wtMi4xMi0uNDFhLjk5OS45OTkgMCAwIDEtLjc5LTEuMTdsLjc2LTMuOTNhMiAyIDAgMCAxIDIuMzQtMS41OGwxLjE2LjIzLTEuMzUgNi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlzdG9yeUVkdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNHYxLjM4Yy0uODMtLjMzLTEuNzItLjUtMi42MS0uNS0xLjc5IDAtMy41OC42OC00Ljk1IDIuMDVsMy4zMyAzLjMzaDEuMTF2MS4xMWMuODYuODYgMS45OCAxLjMxIDMuMTEgMS4zNlYxNUg2djNjMCAxLjEuOSAyIDIgMmgxMGMxLjY2IDAgMy0xLjM0IDMtM1Y0SDl6bS0xLjExIDYuNDFWOC4yNkg1LjYxTDQuNTcgNy4yMmE1LjA3IDUuMDcgMCAwIDEgMS44Mi0uMzRjMS4zNCAwIDIuNTkuNTIgMy41NCAxLjQ2bDEuNDEgMS40MS0uMi4yYTIuNyAyLjcgMCAwIDEtMS45Mi44Yy0uNDcgMC0uOTMtLjEyLTEuMzMtLjM0ek0xOSAxN2MwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXYtMmgtNnYtMi41OWMuNTctLjIzIDEuMS0uNTcgMS41Ni0xLjAzbC4yLS4yTDE1LjU5IDE0SDE3di0xLjQxbC02LTUuOTdWNmg4djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuNzkgOCAxLjgtMy0xLjgtM2gtMy41OGwtMS44IDMgMS44IDN6TTEwLjIxIDlsLTEuOCAzIDEuOCAzaDMuNThsMS44LTMtMS44LTN6TTE2LjQ1IDExLjUxaDMuNTlsMS43OS0zLTEuNzktM2gtMy41OWwtMS44IDN6TTIwLjA0IDEyLjUxaC0zLjU5bC0xLjggMyAxLjggM2gzLjU5bDEuNzktM3pNNy41NSAxMS41MWwxLjgtMy0xLjgtM0gzLjk2bC0xLjc5IDMgMS43OSAzek03LjU1IDEyLjUxSDMuOTZsLTEuNzkgMyAxLjc5IDNoMy41OWwxLjgtM3pNMTAuMjEgMTZsLTEuOCAzIDEuOCAzaDMuNThsMS44LTMtMS44LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEljZVNrYXRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDguNWMwLS4yOC4yMi0uNS41LS41aDIuNTJMMTEgN0g4LjVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNUgxMVYzSDN2MTVoM3YySDJ2MmgxNmMyLjc2IDAgNS0yLjI0IDUtNWgtMmMwIDEuNjYtMS4zNCAzLTMgM2gtMnYtMmgzdi0yLjg4YzAtMi4xLTEuNTUtMy41My0zLjAzLTMuODhsLTIuNy0uNjdjLS44Ny0uMjItMS41Ny0uODEtMS45NS0xLjU3SDguNWMtLjI4IDAtLjUtLjIyLS41LS41ek0xNCAyMEg4di0yaDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW50ZXJlc3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMiAxM2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6TTEzIDEzdjhoOHYtOGgtOHpNNyAybC01IDloMTBMNyAyem0xMi4yNS41Yy0xLjA2IDAtMS44MS41Ni0yLjI1IDEuMTctLjQ0LS42MS0xLjE5LTEuMTctMi4yNS0xLjE3QzEzLjE5IDIuNSAxMiAzLjc4IDEyIDUuMjVjMCAyIDIuNDIgMy40MiA1IDUuNzUgMi41OC0yLjMzIDUtMy43NSA1LTUuNzUgMC0xLjQ3LTEuMTktMi43NS0yLjc1LTIuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZElvc1NoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA1LTEuNDIgMS40Mi0xLjU5LTEuNTlWMTZoLTEuOThWNC44M0w5LjQyIDYuNDIgOCA1bDQtNCA0IDR6bTQgNXYxMWMwIDEuMS0uOSAyLTIgMkg2YTIgMiAwIDAgMS0yLTJWMTBjMC0xLjExLjg5LTIgMi0yaDN2Mkg2djExaDEyVjEwaC0zVjhoM2EyIDIgMCAwIDEgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLYXlha2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDIzYy0xLjAzIDAtMi4wNi0uMjUtMy0uNzUtMS44OSAxLTQuMTEgMS02IDAtMS44OSAxLTQuMTEgMS02IDAtLjk1LjUtMS45Ny43NS0zIC43NUgydi0yaDFjMS4wNCAwIDIuMDgtLjM1IDMtMSAxLjgzIDEuMyA0LjE3IDEuMyA2IDAgMS44MyAxLjMgNC4xNyAxLjMgNiAwIC45MS42NSAxLjk2IDEgMyAxaDF2MmgtMXpNMTIgNS41Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTIgMTJzLTEuNTIuNzEtMy45MyAxLjM3Yy0uODItLjIzLTEuNTMtLjc1LTIuMDctMS4zNy0uNzMuODQtMS44IDEuNS0zIDEuNXMtMi4yNy0uNjYtMy0xLjVjLS43My44NC0xLjggMS41LTMgMS41cy0yLjI3LS42Ni0zLTEuNWMtLjU0LjYxLTEuMjUgMS4xMy0yLjA3IDEuMzdDMS41MiAxOC4yMSAwIDE3LjUgMCAxNy41czIuOTMtMS4zNiA3LjEzLTIuMDhsMS4zNS00LjE3Yy4zMS0uOTUgMS4zMi0xLjQ3IDIuMjctMS4xNi4wOS4wMy4xOS4wNy4yNy4xMWwyLjQ3IDEuMyAyLjg0LTEuNSAxLjY1LTMuNzEtLjUxLTEuMzJMMTguOCAyIDIyIDMuNDMgMjAuNjcgNi40bC0xLjMxLjUtMy43MiA4LjM0YzQuODUuNjMgOC4zNiAyLjI2IDguMzYgMi4yNnptLTguOTgtNC41NC0xLjUyLjgtMS43NS0uOTItLjcxIDIuMTdjLjMyIDAgLjY0LS4wMS45Ni0uMDEuNzEgMCAxLjQuMDMgMi4wNy4wOGwuOTUtMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2luZ0JlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTYgN2g1djNINnpNMTMgN2g1djNoLTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwVjdjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ2M2MtMS4xIDAtMiAuOS0yIDJ2NWgxLjMzTDQgMTloMWwuNjctMmgxMi42N2wuNjYgMmgxbC42Ny0ySDIydi01YzAtMS4xLS45LTItMi0yem0tOSAwSDZWN2g1djN6bTcgMGgtNVY3aDV2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2l0ZXN1cmZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDNjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptMTQuMDYtMmgtMi4xMkwxNS41IDMuNDRsMS4wNiAxLjA2IDMuNS0zLjV6TTIyIDIzdi0yaC0xYy0xLjA0IDAtMi4wOC0uMzUtMy0xLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0xLjgzIDEuMy00LjE3IDEuMy02IDAtLjkxLjY1LTEuOTYgMS0zIDFIMnYyaDFjMS4wMyAwIDIuMDUtLjI1IDMtLjc1IDEuODkgMSA0LjExIDEgNiAwIDEuODkgMSA0LjExIDEgNiAwIC45NS41IDEuOTcuNzUgMyAuNzVoMXptLTEtOS43MmMwIDEuNDQtMi4xOSAzLjYyLTUuMDQgNS41OC0uMzEuMDktLjYzLjE0LS45Ni4xNC0xLjIgMC0yLjI3LS42Ni0zLTEuNS0uNzMuODQtMS44IDEuNS0zIDEuNS0uOTQgMC0xLjgxLS40MS0yLjQ5LS45OS40Ni0uMzkuOTYtLjc4IDEuNDktMS4xN2wtMS41NS0yLjk3QTQuMDYgNC4wNiAwIDAgMSA2IDEyVjhjMC0xLjEuOS0yIDItMmgzYzEuMzggMCAyLjYzLS41NiAzLjU0LTEuNDZsMS40MSAxLjQxQTcuMDE4IDcuMDE4IDAgMCAxIDExIDhIOS42djMuNWgyLjhsMS42OSAxLjg4YzEuOTUtLjg0IDMuNzctMS4zOCA1LjA2LTEuMzguODQgMCAxLjg1LjI1IDEuODUgMS4yOHptLTguOC45OS0uNy0uNzctMi41LjEuODMgMi4wMWMuNTktLjM4IDEuODEtMS4wNiAyLjM3LTEuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhbmRzbGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjQ3IDEzLjc5LTIuNTgtMS4wM0w2IDE1LjA1bC00LTEuNTR2Mi4xbDQgMS4zNHpNMTAuNTcgMTEuNDIgOCA4SDJ2My42MWw0IDEuMzR6TTYgMTkuMDVsLTQtMS4zM1YyMmgyMGwtNC45Ny02LjYyek0xNyA2VjFsLTUtMS0zIDJ2NGwzIDJ6TTE4LjUgNyAxNiA5djNsMi41IDIgNC41LTJWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYXRpb25DaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTFWNWwtMy0zLTMgM3YySDN2MTRoMThWMTFoLTZ6bS04IDhINXYtMmgydjJ6bTAtNEg1di0yaDJ2MnptMC00SDVWOWgydjJ6bTYgOGgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6bTAtNGgtMlY5aDJ2MnptMC00aC0yVjVoMnYyem02IDEyaC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTHVnZ2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZoLTJWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzSDdjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xaDZjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xYzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6TTkuNSAxOEg4VjloMS41djl6bTMuMjUgMGgtMS41VjloMS41djl6bS43NS0xMmgtM1YzLjVoM1Y2ek0xNiAxOGgtMS41VjlIMTZ2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxMWMxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMS40MyAxOCA5LjUgMTggNiAxNi40MyA2IDE0LjUgNy41NyAxMSA5LjUgMTF6bTAtMkM2LjQ2IDkgNCAxMS40NiA0IDE0LjVTNi40NiAyMCA5LjUgMjBzNS41LTIuNDYgNS41LTUuNWMwLTEuMTYtLjM2LTIuMjMtLjk3LTMuMTJMMTggNy40MlYxMGgyVjRoLTZ2MmgyLjU4bC0zLjk3IDMuOTdDMTEuNzMgOS4zNiAxMC42NiA5IDkuNSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYW4yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgN2gtNGMtMS4xIDAtMiAuOS0yIDJ2NmgyLjV2N2gzdi03SDE2VjljMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hbjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2g0di03aDJWOWMwLTEuMS0uOS0yLTItMnpNMTIgMS43NTEgMTQuMjQ4IDQgMTIgNi4yNDggOS43NSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYW40IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNzUgN2gtMy41QzkuMDQgNyA4LjExIDguMDcgOC4yNyA5LjI2TDEwIDIyaDRsMS43My0xMi43NEMxNS44OSA4LjA3IDE0Ljk2IDcgMTMuNzUgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgN2gtNGMtMS4xIDAtMiAuOS0yIDJ2NmgydjdoNHYtN2gyVjljMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hc2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSA2Yy0xLjMxIDAtMi4zNyAxLjAxLTIuNDggMi4zLTEuODgtLjUtMi44NC0xLjgtNS4wMi0xLjgtMi4xOSAwLTMuMTQgMS4zLTUuMDIgMS44QzYuODcgNy4wMiA1LjgxIDYgNC41IDZBMi41IDIuNSAwIDAgMCAyIDguNVY5YzAgNiAzLjYgNy44MSA2LjUyIDcuOThDOS41MyAxNy42MiAxMC43MiAxOCAxMiAxOHMyLjQ3LS4zOCAzLjQ4LTEuMDJDMTguNCAxNi44MSAyMiAxNSAyMiA5di0uNUEyLjUgMi41IDAgMCAwIDE5LjUgNnptLTE2IDN2LS41YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYzYzAgMS4yOC4zOCAyLjQ3IDEuMDEgMy40OEM0Ljk5IDE0LjI3IDMuNSAxMi42NSAzLjUgOXptMTcgMGMwIDMuNjUtMS40OSA1LjI3LTMuMDEgNS45OC42NC0xLjAxIDEuMDEtMi4yIDEuMDEtMy40OHYtM2MwLS41NS40NS0xIDEtMXMxIC40NSAxIDFWOXptLTkuODEgMS40OGMtLjQ0LjI2LS45Ni41Ni0xLjY5Ljc2VjEwLjJjLjQ4LS4xNy44NC0uMzggMS4xOC0uNThDMTAuNzIgOS4zIDExLjIzIDkgMTIgOXMxLjI3LjMgMS44LjYyYy4zNC4yLjcxLjQyIDEuMi41OXYxLjA0Yy0uNzUtLjIxLTEuMjYtLjUxLTEuNzEtLjc4LS40Ni0uMjctLjgtLjQ3LTEuMjktLjQ3cy0uODQuMi0xLjMxLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWxpdGFyeVRlY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMC40M1YySDd2OC40M2MwIC4zNS4xOC42OC40OS44Nmw0LjE4IDIuNTEtLjk5IDIuMzQtMy40MS4yOSAyLjU5IDIuMjRMOS4wNyAyMiAxMiAyMC4yMyAxNC45MyAyMmwtLjc4LTMuMzMgMi41OS0yLjI0LTMuNDEtLjI5LS45OS0yLjM0IDQuMTgtMi41MWMuMy0uMTguNDgtLjUuNDgtLjg2em0tNCAxLjgtMSAuNi0xLS42VjNoMnY5LjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb29kQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSAzYy0yLjMzIDAtNC4zMSAxLjQ2LTUuMTEgMy41aDEwLjIyYy0uOC0yLjA0LTIuNzgtMy41LTUuMTEtMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodHNTdGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMSAxMi4wOGMtMi4zMy00LjUxLS41LTguNDguNTMtMTAuMDdDNi4yNyAyLjIgMS45OCA2LjU5IDEuOTggMTJjMCAuMTQuMDIuMjguMDIuNDIuNjItLjI3IDEuMjktLjQyIDItLjQyIDEuNjYgMCAzLjE4LjgzIDQuMSAyLjE1QTQuMDEgNC4wMSAwIDAgMSAxMSAxOGMwIDEuNTItLjg3IDIuODMtMi4xMiAzLjUxLjk4LjMyIDIuMDMuNSAzLjExLjUgMy41IDAgNi41OC0xLjggOC4zNy00LjUyLTIuMzYuMjMtNi45OC0uOTctOS4yNi01LjQxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE2aC0uMThDNi40IDE0Ljg0IDUuMyAxNCA0IDE0Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzaDNjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb0FkdWx0Q29udGVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC0xLjg1LjYzLTMuNTQgMS42OS00LjlMNy41OSA5aDIuODNMNy4xIDUuNjlBNy45MjQgNy45MjQgMCAwIDEgMTIgNGM0LjQxIDAgOCAzLjU5IDggOCAwIDEuODUtLjYzIDMuNTQtMS42OSA0LjlsLTEuOS0xLjloLTIuODNsMy4zMSAzLjMxQTcuODc0IDcuODc0IDAgMCAxIDEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMjUgMTQtMS41LTIgMS41LTJoLTEuNUwxMiAxMWwtLjc1LTFoLTEuNWwxLjUgMi0xLjUgMmgxLjVsLjc1LTEgLjc1IDF6TTggMTBsLS43NSAxLS43NS0xSDVsMS41IDJMNSAxNGgxLjVsLjc1LTFMOCAxNGgxLjVMOCAxMmwxLjUtMnpNMTYgMTRsLjc1LTEgLjc1IDFIMTlsLTEuNS0yIDEuNS0yaC0xLjVsLS43NSAxLS43NS0xaC0xLjVsMS41IDItMS41IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vTHVnZ2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjc1IDl2LjkybDEuNzUgMS43NVY5SDE2djQuMTdsMyAzVjhjMC0xLjEtLjktMi0yLTJoLTJWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzaC0uMTdsMyAzaC45MnpNMTAuNSAzLjVoM1Y2aC0zVjMuNXptMTAuNjkgMTcuNjlMMi44MSAyLjgxIDEuMzkgNC4yMmwzLjYzIDMuNjNjMCAuMDUtLjAyLjEtLjAyLjE1djExYzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xaDZjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xYy4zNCAwIC42NS0uMDkuOTMtLjI0bDEuODUgMS44NSAxLjQxLTEuNDJ6TTggMTh2LTcuMTdsMS41IDEuNVYxOEg4em00Ljc1IDBoLTEuNXYtMy45MmwxLjUgMS41VjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3JkaWNXYWxraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMjNoLTEuNXYtOUgxOXY5ek03LjUzIDE0SDZsLTIgOWgxLjUzbDItOXptNS45Ny04LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek05LjggOC45IDcgMjNoMi4xbDEuOC04IDIuMSAydjZoMnYtNy41bC0yLjEtMiAuNi0zQzE0LjggMTIgMTYuOCAxMyAxOSAxM3YtMmMtMS45IDAtMy41LTEtNC4zLTIuNGwtMS0xLjZhMi4xNDUgMi4xNDUgMCAwIDAtMi42NS0uODRMNiA4LjNWMTNoMlY5LjZsMS44LS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyMGg0YzAgMS4xLS45IDItMiAycy0yLS45LTItMnptNC0xMWMwIDIuNjEgMS42NyA0LjgzIDQgNS42NlYxN2gydjJINHYtMmgydi03YzAtMi43OSAxLjkxLTUuMTQgNC41LTUuOHYtLjdjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2LjdjLjcxLjE4IDEuMzYuNDkgMS45NS45QTUuOTAyIDUuOTAyIDAgMCAwIDE0IDl6bTEwLTFoLTNWNWgtMnYzaC0zdjJoM3YzaDJ2LTNoM1Y4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zQWN0aXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41OCA0LjA4IDYuMTUgMi42NUMzLjc1IDQuNDggMi4xNyA3LjMgMi4wMyAxMC41aDJhOC40NDUgOC40NDUgMCAwIDEgMy41NS02LjQyem0xMi4zOSA2LjQyaDJjLS4xNS0zLjItMS43My02LjAyLTQuMTItNy44NWwtMS40MiAxLjQzYTguNDk1IDguNDk1IDAgMCAxIDMuNTQgNi40MnpNMTggMTFjMC0zLjA3LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjMgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0ydi01em0tNiAxMWMuMTQgMCAuMjctLjAxLjQtLjA0LjY1LS4xNCAxLjE4LS41OCAxLjQ0LTEuMTguMS0uMjQuMTUtLjUuMTUtLjc4aC00Yy4wMSAxLjEuOSAyIDIuMDEgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90aWZpY2F0aW9uc05vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjQgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tMiAxSDh2LTZjMC0yLjQ4IDEuNTEtNC41IDQtNC41czQgMi4wMiA0IDQuNXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTguNjkgNy44NCA2LjE0IDUuMjcgMy40OSA0IDQuNzZsMi44IDIuOHYuMDFjLS41Mi45OS0uOCAyLjE2LS44IDMuNDJ2NWwtMiAydjFoMTMuNzNsMiAyTDIxIDE5LjcybC0xLTEuMDN6TTEyIDIyYzEuMTEgMCAyLS44OSAyLTJoLTRjMCAxLjExLjg5IDIgMiAyem02LTcuMzJWMTFjMC0zLjA4LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4Yy0uMTUuMDMtLjI5LjA4LS40Mi4xMi0uMS4wMy0uMi4wNy0uMy4xMWgtLjAxYy0uMDEgMC0uMDEgMC0uMDIuMDEtLjIzLjA5LS40Ni4yLS42OC4zMSAwIDAtLjAxIDAtLjAxLjAxTDE4IDE0LjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zUGF1c2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjMS4xIDAgMi0uOSAyLTJoLTRhMiAyIDAgMCAwIDIgMnptNi02di01YzAtMy4wNy0xLjY0LTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjYzIDUuMzYgNiA3LjkzIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTMuNS02LjItMi44IDMuNGgyLjhWMTVoLTV2LTEuOGwyLjgtMy40SDkuNVY4aDV2MS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGEyIDIgMCAwIDAgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjMgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRkb29yR3JpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMmMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtM2MtMS4zIDAtMi40Ljg0LTIuODIgMkg5LjE0bDEuOTktMy4wNmE2LjM2IDYuMzYgMCAwIDAgMS43NCAwbDEuMDIgMS41N2MuNDItLjUzLjk2LS45NSAxLjYtMS4yMWwtLjYtLjkzQTYuOTkyIDYuOTkyIDAgMCAwIDE5IDhINWMwIDIuODQgMS42OSA1LjI3IDQuMTIgNi4zN2wtMy45NSA2LjA4YTEgMSAwIDAgMCAuMjkgMS4zOCAxIDEgMCAwIDAgMS4zOC0uMjlsMS0xLjU1aDYuMzRDMTQuNiAyMS4xNiAxNS43IDIyIDE3IDIyem0wLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNOS40MSA3aDFjLjE1LTEuMTUuMjMtMS42NC0uODktMi45Ni0uNDItLjUtLjY4LS43Ny0uNDYtMi4wNGgtLjk5Yy0uMjEgMS4xMS4wMyAyLjA1Ljg5IDIuOTYuMjIuMjQuNzkuNjcuNDUgMi4wNHpNMTEuODkgN2gxYy4xNS0xLjE1LjIzLTEuNjQtLjg5LTIuOTYtLjQyLS41LS42OC0uNzgtLjQ2LTIuMDRoLS45OWMtLjIxIDEuMTEuMDMgMi4wNS44OSAyLjk2LjIzLjI0LjguNjcuNDUgMi4wNHpNMTQuNDEgN2gxYy4xNS0xLjE1LjIzLTEuNjQtLjg5LTIuOTYtLjQyLS41LS42OC0uNzctLjQ2LTIuMDRoLS45OWMtLjIxIDEuMTEuMDMgMi4wNS44OSAyLjk2LjIyLjI0Ljc5LjY3LjQ1IDIuMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djZoNUw3IDdsNCAxVjNINWMtMS4xIDAtMiAuOS0yIDJ6bTUgOEgzdjZjMCAxLjEuOSAyIDIgMmg2di01bC00IDEgMS00em05IDQtNC0xdjVoNmMxLjEgMCAyLS45IDItMnYtNmgtNWwxIDR6bTItMTRoLTZ2NWw0LTEtMSA0aDVWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFyYWdsaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bS0zLjQ4Ljk0QzguMDQgMTcuNTUgNyAxNi43NiA3IDE0SDVjMCAyLjcuOTMgNC40MSAyLjMgNS41LjUuNCAxLjEuNyAxLjcuOVYyNGg2di0zLjZjLjYtLjIgMS4yLS41IDEuNy0uOSAxLjM3LTEuMDkgMi4zLTIuOCAyLjMtNS41aC0yYzAgMi43Ni0xLjA0IDMuNTUtMS41MiAzLjk0QzE0LjY4IDE4LjU0IDE0IDE5IDEyIDE5cy0yLjY4LS40Ni0zLjQ4LTEuMDZ6TTEyIDBDNS45MiAwIDEgMS45IDEgNC4yNXYzLjQ5YzAgLjgxLjg4IDEuMjYgMS41Ni44My4xNC0uMDkuMjgtLjE4LjQ0LS4yNkw1IDEzaDJsMS41LTYuMjhhMjcuODUyIDI3Ljg1MiAwIDAgMSA3IDBMMTcgMTNoMmwyLTQuNjljLjE2LjA5LjMuMTcuNDQuMjYuNjguNDMgMS41Ni0uMDIgMS41Ni0uODNWNC4yNUMyMyAxLjkgMTguMDggMCAxMiAwek01Ljg4IDExLjI0IDQuMzcgNy42OWMuNzUtLjI4IDEuNi0uNTIgMi41My0uNzFsLTEuMDIgNC4yNnptMTIuMjQgMEwxNy4xIDYuOThjLjkzLjE5IDEuNzguNDMgMi41My43MWwtMS41MSAzLjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXJ0eU1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC0zLjE3TDE1IDJIOUw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tOCAzYzEuNjMgMCAzLjA2Ljc5IDMuOTggMkgxMmMtMS42NiAwLTMgMS4zNC0zIDMgMCAuMzUuMDcuNjkuMTggMUg3LjFBNS4wMDIgNS4wMDIgMCAwIDEgMTIgN3ptMCAxMGMtMS42MyAwLTMuMDYtLjc5LTMuOTgtMkgxMmMxLjY2IDAgMy0xLjM0IDMtMyAwLS4zNS0uMDctLjY5LS4xOC0xaDIuMDhhNS4wMDIgNS4wMDIgMCAwIDEtNC45IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlb3BsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNi42NyAxMy4xM0MxOC4wNCAxNC4wNiAxOSAxNS4zMiAxOSAxN3YzaDR2LTNjMC0yLjE4LTMuNTctMy40Ny02LjMzLTMuODd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjRcIixcImZpbGxSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNGMtLjQ3IDAtLjkxLjEtMS4zMy4yNGE1Ljk4IDUuOTggMCAwIDEgMCA3LjUyYy40Mi4xNC44Ni4yNCAxLjMzLjI0ek05IDEzYy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZW9wbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxM2MtMS4yIDAtMy4wNy4zNC00LjUgMS0xLjQzLS42Ny0zLjMtMS00LjUtMUM1LjMzIDEzIDEgMTQuMDggMSAxNi4yNVYxOWgyMnYtMi43NWMwLTIuMTctNC4zMy0zLjI1LTYuNS0zLjI1em0tNCA0LjVoLTEwdi0xLjI1YzAtLjU0IDIuNTYtMS43NSA1LTEuNzVzNSAxLjIxIDUgMS43NXYxLjI1em05IDBIMTR2LTEuMjVjMC0uNDYtLjItLjg2LS41Mi0xLjIyLjg4LS4zIDEuOTYtLjUzIDMuMDItLjUzIDIuNDQgMCA1IDEuMjEgNSAxLjc1djEuMjV6TTcuNSAxMmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVM5LjQzIDUgNy41IDUgNCA2LjU3IDQgOC41IDUuNTcgMTIgNy41IDEyem0wLTUuNWMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTkgNS41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzE4LjQzIDUgMTYuNSA1IDEzIDYuNTcgMTMgOC41czEuNTcgMy41IDMuNSAzLjV6bTAtNS41YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTFjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTMTcuNjYgNSAxNiA1Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzem0tOCAwYzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zUzkuNjYgNSA4IDVDNi4zNCA1IDUgNi4zNCA1IDhzMS4zNCAzIDMgM3ptMCAyYy0yLjMzIDAtNyAxLjE3LTcgMy41VjE5aDE0di0yLjVjMC0yLjMzLTQuNjctMy41LTctMy41em04IDBjLS4yOSAwLS42Mi4wMi0uOTcuMDUgMS4xNi44NCAxLjk3IDEuOTcgMS45NyAzLjQ1VjE5aDZ2LTIuNWMwLTIuMzMtNC42Ny0zLjUtNy0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTkuNzggMTJoNC40NGMxLjIxIDAgMi4xNC0xLjA2IDEuOTgtMi4yNmwtLjMyLTIuNDVDMTUuNTcgNS4zOSAxMy45MiA0IDEyIDRTOC40MyA1LjM5IDguMTIgNy4yOUw3LjggOS43NGMtLjE2IDEuMi43NyAyLjI2IDEuOTggMi4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM5IDE0LjU2QzE2LjcxIDEzLjcgMTQuNTMgMTMgMTIgMTNzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDQgMTcuMjJWMjBoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTAgMTJoNGMxLjY2IDAgMy0xLjM0IDMtMyAwLS43My0uMjctMS40LS43MS0xLjkyLjEzLS4zMy4yMS0uNy4yMS0xLjA4YTMgMyAwIDAgMC0xLjg2LTIuNzdDMTQgMi40OCAxMy4wNiAyIDEyIDJzLTIgLjQ4LTIuNjQgMS4yM0EzIDMgMCAwIDAgNy41IDZjMCAuMzguMDguNzUuMjEgMS4wOEM3LjI3IDcuNiA3IDguMjcgNyA5YzAgMS42NiAxLjM0IDMgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb240IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzkgMTQuNTZDMTYuNzEgMTMuNyAxNC41MyAxMyAxMiAxM3MtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgNCAxNy4yMlYyMGgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNFY0LjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LS41MiAwLS45OC4yNy0xLjI1LjY3LS4yNy0uNC0uNzMtLjY3LTEuMjUtLjY3cy0uOTguMjctMS4yNS42N2MtLjI3LS40LS43My0uNjctMS4yNS0uNjdDOC42NyAzIDggMy42NyA4IDQuNVY4YzAgMi4yMSAxLjc5IDQgNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25BZGRBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptMiAydjJoM3YzaDJ2LTNoM3YtMmgtM1Y3aC0ydjNoLTN6TTEgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uQWRkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTEgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzggMS4yOCA2IDJIM3ptMTctM3YtM2gzdi0yaC0zVjdoLTJ2M2gtM3YyaDN2M2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bS05LTJWN0g0djNIMXYyaDN2M2gydi0zaDN2LTJINnptOSA0Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjY1IDUuODJhMy45OTkgMy45OTkgMCAxIDEgNS41MyA1LjUzTDguNjUgNS44MnpNMjAgMTcuMTdjLS4wMi0xLjEtLjYzLTIuMTEtMS42MS0yLjYyLS41NC0uMjgtMS4xMy0uNTQtMS43Ny0uNzZMMjAgMTcuMTd6bTEuMTkgNC4wMkwyLjgxIDIuODEgMS4zOSA0LjIybDguODkgOC44OWMtMS44MS4yMy0zLjM5Ljc5LTQuNjcgMS40NUEyLjk3IDIuOTcgMCAwIDAgNCAxNy4yMlYyMGgxMy4xN2wyLjYxIDIuNjEgMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25PdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS45YTIuMSAyLjEgMCAxIDEgMCA0LjIgMi4xIDIuMSAwIDAgMSAwLTQuMm0wIDljMi45NyAwIDYuMSAxLjQ2IDYuMSAyLjF2MS4xSDUuOVYxN2MwLS42NCAzLjEzLTIuMSA2LjEtMi4xTTEyIDRDOS43OSA0IDggNS43OSA4IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgOWMtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uUmVtb3ZlQWx0MSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDhjMC0yLjIxLTEuNzktNC00LTRTNiA1Ljc5IDYgOHMxLjc5IDQgNCA0IDQtMS43OSA0LTR6bTMgMnYyaDZ2LTJoLTZ6TTIgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOGMwLTIuMjEtMS43OS00LTQtNFM2IDUuNzkgNiA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptMyAydjJoNnYtMmgtNnpNMiAxOHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00cy04IDEuMzQtOCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAgMmMtMi42NyAwLTggMS4zNC04IDR2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uYWxJbmp1cnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDZjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNC0xLjc5IDQtNCA0LTQtMS43OS00LTR6bTkgMTZoMWMxLjEgMCAyLS45IDItMnYtNC43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2LS40My0uMjItLjktLjQzLTEuMzktLjYyVjIyem0tNC42Ni01TDE1IDExLjMzYy0uOTMtLjIxLTEuOTMtLjMzLTMtLjMzLTIuNTMgMC00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE1LjIyVjIyaDIuMzRjLS4yMi0uNDUtLjM0LS45Ni0uMzQtMS41QzYgMTguNTcgNy41NyAxNyA5LjUgMTdoMi44NHpNMTAgMjJsMS40MS0zSDkuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVTOC42NyAyMiA5LjUgMjJoLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpYW5vT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wxLjYxIDEuNjEgMS40MS0xLjQyek04LjI1IDE5SDVWNy44M2wyIDJ2My42N2MwIC41NS40NSAxIDEgMWguMjVWMTl6bTEuNSAwdi00LjVIMTBjLjQ2IDAgLjgyLS4zMS45NC0uNzNsMy4zMSAzLjMxVjE5aC00LjV6TTExIDguMTcgNS44MyAzSDE5YzEuMSAwIDIgLjkgMiAydjEzLjE3bC0yLTJWNWgtMnY4LjVjMCAuMTktLjA3LjM2LS4xNi41MUwxMyAxMC4xN1Y1aC0ydjMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01IDExLjVoLjI1VjE5aC00LjV2LTQuNUgxMGMuNTUgMCAxLS40NSAxLTFWNWgydjguNWMwIC41NS40NSAxIDEgMXpNNSA1aDJ2OC41YzAgLjU1LjQ1IDEgMSAxaC4yNVYxOUg1VjV6bTE0IDE0aC0zLjI1di00LjVIMTZjLjU1IDAgMS0uNDUgMS0xVjVoMnYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNDUgMTYuNTItMy4wMS0zLjAxYy0uMTEtLjExLS4yNC0uMTMtLjMxLS4xM3MtLjIuMDItLjMxLjEzTDguOCAxNi41M2MtLjM0LjM0LS44Ny44OS0yLjY0Ljg5bDMuNzEgMy43YTMgMyAwIDAgMCA0LjI0IDBsMy43Mi0zLjcxYy0uOTEgMC0xLjY3LS4xOC0yLjM4LS44OXpNOC44IDcuNDdsMy4wMiAzLjAyYy4wOC4wOC4yLjEzLjMxLjEzcy4yMy0uMDUuMzEtLjEzbDIuOTktMi45OWMuNzEtLjc0IDEuNTItLjkxIDIuNDMtLjkxbC0zLjcyLTMuNzFhMyAzIDAgMCAwLTQuMjQgMGwtMy43MSAzLjdjMS43NiAwIDIuMy41OCAyLjYxLjg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS4xMSA5Ljg1LTIuMjUtMi4yNkgxNy42Yy0uNTQgMC0xLjA4LjIyLTEuNDUuNjFsLTMgM2MtLjI4LjI4LS42NS40Mi0xLjAyLjQyYTEuNSAxLjUgMCAwIDEtMS4wMi0uNDJMOC4wOSA4LjE3Yy0uMzgtLjM4LS45LS42LTEuNDUtLjZINS4xN2wtMi4yOSAyLjNhMyAzIDAgMCAwIDAgNC4yNGwyLjI5IDIuM2gxLjQ4Yy41NCAwIDEuMDYtLjIyIDEuNDUtLjZsMy4wMi0zLjAyYy4yOC0uMjguNjUtLjQyIDEuMDItLjQycy43NC4xNCAxLjAyLjQybDMuMDEgMy4wMWMuMzguMzguOS42IDEuNDUuNmgxLjI2bDIuMjUtMi4yNmEzLjA0MiAzLjA0MiAwIDAgMC0uMDItNC4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGx1c09uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDhIOHY0SDR2Mmg0djRoMnYtNGg0di0yaC00em00LjUtMS45MlY3LjlsMi41LS41VjE4aDJWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcmVjaXNpb25NYW51ZmFjdHVyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuOTMgOC4yMS0zLjYgMS42OEwxNCA3LjdWNi4zbDIuMzMtMi4xOSAzLjYgMS42OGMuMzguMTguODIuMDEgMS0uMzYuMTgtLjM4LjAxLS44Mi0uMzYtMUwxNi42NSAyLjZhLjk5My45OTMgMCAwIDAtMS4xMy4ybC0xLjc0IDEuNkEuOTc1Ljk3NSAwIDAgMCAxMyA0Yy0uNTUgMC0xIC40NS0xIDF2MUg4LjgyQzguMzQgNC42NSA2Ljk4IDMuNzMgNS40IDQuMDdjLTEuMTYuMjUtMi4xNSAxLjI1LTIuMzYgMi40My0uMjIgMS4zMi40NiAyLjQ3IDEuNDggMy4wOEw3LjA4IDE4SDR2M2gxM3YtM2gtMy42Mkw4LjQxIDguNzdjLjE3LS4yNC4zMS0uNDkuNDEtLjc3SDEydjFjMCAuNTUuNDUgMSAxIDEgLjMyIDAgLjYtLjE2Ljc4LS40bDEuNzQgMS42Yy4zLjMuNzUuMzggMS4xMy4ybDMuOTItMS44M2MuMzgtLjE4LjU0LS42Mi4zNi0xYS43NTMuNzUzIDAgMCAwLTEtLjM2ek02IDhjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHN5Y2hvbG9neUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk0IDkuMDZDMTkuNSA1LjczIDE2LjU3IDMgMTMgMyA5LjQ3IDMgNi41NyA1LjYxIDYuMDggOWwtMS45MyAzLjQ4Yy0uNDEuNjYuMDcgMS41Mi44NSAxLjUyaDF2MmMwIDEuMS45IDIgMiAyaDF2M2g3di00LjY4YTcuMDE2IDcuMDE2IDAgMCAwIDMuOTQtNy4yNnpNMTIuNSAxNGMtLjQxIDAtLjc0LS4zMy0uNzQtLjc0cy4zMy0uNzMuNzQtLjczLjczLjMyLjczLjczLS4zMS43NC0uNzMuNzR6bTEuNzYtNC4zMmMtLjQ0LjY1LS44Ni44NS0xLjA5IDEuMjctLjA5LjE3LS4xMy4yOC0uMTMuODJoLTEuMDZjMC0uMjktLjA0LS43NS4xOC0xLjE2LjI4LS41MS44My0uODEgMS4xNC0xLjI2LjMzLS40Ny4xNS0xLjM2LS44LTEuMzYtLjYyIDAtLjkyLjQ3LTEuMDUuODZsLS45Ni0uNGMuMjctLjc4Ljk3LTEuNDUgMi4wMS0xLjQ1Ljg2IDAgMS40NS4zOSAxLjc1Ljg4LjI2LjQzLjQxIDEuMjIuMDEgMS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQc3ljaG9sb2d5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOC41N2ExLjQzIDEuNDMgMCAxIDAgMCAyLjg2IDEuNDMgMS40MyAwIDAgMCAwLTIuODZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNDOS4yNSAzIDYuMiA1Ljk0IDYuMDIgOS42NEw0LjEgMTIuMmEuNS41IDAgMCAwIC40LjhINnYzYzAgMS4xLjkgMiAyIDJoMXYzaDd2LTQuNjhBNi45OTkgNi45OTkgMCAwIDAgMTMgM3ptMyA3YzAgLjEzLS4wMS4yNi0uMDIuMzlsLjgzLjY2Yy4wOC4wNi4xLjE2LjA1LjI1bC0uOCAxLjM5Yy0uMDUuMDktLjE2LjEyLS4yNC4wOWwtLjk5LS40Yy0uMjEuMTYtLjQzLjI5LS42Ny4zOUwxNCAxMy44M2MtLjAxLjEtLjEuMTctLjIuMTdoLTEuNmMtLjEgMC0uMTgtLjA3LS4yLS4xN2wtLjE1LTEuMDZjLS4yNS0uMS0uNDctLjIzLS42OC0uMzlsLS45OS40Yy0uMDkuMDMtLjIgMC0uMjUtLjA5bC0uOC0xLjM5YS4xOS4xOSAwIDAgMSAuMDUtLjI1bC44NC0uNjZjLS4wMS0uMTMtLjAyLS4yNi0uMDItLjM5cy4wMi0uMjcuMDQtLjM5bC0uODUtLjY2Yy0uMDgtLjA2LS4xLS4xNi0uMDUtLjI2bC44LTEuMzhjLjA1LS4wOS4xNS0uMTIuMjQtLjA5bDEgLjRjLjItLjE1LjQzLS4yOS42Ny0uMzlMMTIgNi4xN2MuMDItLjEuMS0uMTcuMi0uMTdoMS42Yy4xIDAgLjE4LjA3LjIuMTdsLjE1IDEuMDZjLjI0LjEuNDYuMjMuNjcuMzlsMS0uNGMuMDktLjAzLjIgMCAuMjQuMDlsLjggMS4zOGEuMi4yIDAgMCAxLS4wNS4yNmwtLjg1LjY2Yy4wMy4xMi4wNC4yNS4wNC4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHVibGljT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOC4xNyA2LjQ5IDMuNjZBOS45MSA5LjkxIDAgMCAxIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTAgMCAyLjA0LS42MSAzLjkzLTEuNjYgNS41MWwtMS40Ni0xLjQ2QTcuODQyIDcuODQyIDAgMCAwIDIwIDEyYzAtMy4zNS0yLjA3LTYuMjItNS03LjQxVjVjMCAxLjEtLjkgMi0yIDJoLTJ2MS4xN3ptMTAuMTkgMTMuMDItMS40MSAxLjQxLTIuMjctMi4yN0E5LjgzOSA5LjgzOSAwIDAgMSAxMiAyMkM2LjQ4IDIyIDIgMTcuNTIgMiAxMmMwLTIuMDQuNjEtMy45MyAxLjY2LTUuNTFMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM5IDE4LjM4ek0xMSAxOGMtMS4xIDAtMi0uOS0yLTJ2LTFsLTQuNzktNC43OUM0LjA4IDEwLjc5IDQgMTEuMzggNCAxMmMwIDQuMDggMy4wNSA3LjQ0IDcgNy45M1YxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHVibGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTEgMTcuOTNjLTMuOTUtLjQ5LTctMy44NS03LTcuOTMgMC0uNjIuMDgtMS4yMS4yMS0xLjc5TDkgMTV2MWMwIDEuMS45IDIgMiAydjEuOTN6bTYuOS0yLjU0Yy0uMjYtLjgxLTEtMS4zOS0xLjktMS4zOWgtMXYtM2MwLS41NS0uNDUtMS0xLTFIOHYtMmgyYy41NSAwIDEtLjQ1IDEtMVY3aDJjMS4xIDAgMi0uOSAyLTJ2LS40MWMyLjkzIDEuMTkgNSA0LjA2IDUgNy40MSAwIDIuMDgtLjggMy45Ny0yLjEgNS4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVhbEVzdGF0ZUFnZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyMmg0VjExSDF2MTF6bTE5LTVoLTdsLTIuMDktLjczLjMzLS45NEwxMyAxNmgyLjgyYy42NSAwIDEuMTgtLjUzIDEuMTgtMS4xOCAwLS40OS0uMzEtLjkzLS43Ny0xLjExTDguOTcgMTFIN3Y5LjAyTDE0IDIybDgtM2MtLjAxLTEuMS0uODktMi0yLTJ6TTE0IDEuNWwtNyA1VjloMmw4LjE0IDMuMjZDMTguMjYgMTIuNzEgMTkgMTMuNzkgMTkgMTVoMlY2LjVsLTctNXptLS41IDguNWgtMVY5aDF2MXptMC0yaC0xVjdoMXYxem0yIDJoLTFWOWgxdjF6bTAtMmgtMVY3aDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVjb21tZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmExMCAxMCAwIDEgMCAxMCAxMEExMCAxMCAwIDAgMCAxMiAyem02IDkuOGEuOS45IDAgMCAxLS4xLjVsLTIuMSA0LjlhMS4zNCAxLjM0IDAgMCAxLTEuMy44SDlhMiAyIDAgMCAxLTItMnYtNWExLjI4IDEuMjggMCAwIDEgLjQtMUwxMiA1bC42OS42OWExLjA4IDEuMDggMCAwIDEgLjMuN3YuMkwxMi40MSAxMEgxN2ExIDEgMCAwIDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWN5Y2xpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc3IDcuMTUgNy4yIDQuNzhsMS4wMy0xLjcxYy4zOS0uNjUgMS4zMy0uNjUgMS43MiAwbDEuNDggMi40Ni0xLjIzIDIuMDYtMSAxLjYyLTMuNDMtMi4wNnptMTUuOTUgNS44Mi0xLjYtMi42Ni0zLjQ2IDJMMTguODcgMTZIMjBhMiAyIDAgMCAwIDItMmMwLS4zNi0uMS0uNzEtLjI4LTEuMDN6TTE2IDIxaDEuNWEyIDIgMCAwIDAgMS43OS0xLjExTDIwLjc0IDE3SDE2di0ybC00IDQgNCA0di0yem0tNi00SDUuN2wtLjg0IDEuNDFjLS4zLjUtLjMyIDEuMTItLjA2IDEuNjUuMjguNTcuODcuOTQgMS41Mi45NEgxMHYtNHptLTMuODgtMi42NSAxLjczIDEuMDRMNi40OCA5LjkgMSAxMS4yN2wxLjcgMS4wMi0uNDEuNjljLS4zNS41OS0uMzggMS4zMS0uMDcgMS45MmwxLjYzIDMuMjYgMi4yNy0zLjgxem0xMC45LTkuMjEtMS4zLTIuMTdDMTUuMzUgMi4zNyAxNC43IDIgMTQgMmgtMy41M2wzLjEyIDUuMi0xLjcyIDEuMDMgNS40OSAxLjM3IDEuMzctNS40OS0xLjcxIDEuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlZHVjZUNhcGFjaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem00Ljc4IDMuNThBNi45NSA2Ljk1IDAgMCAwIDE4IDdjLS42NyAwLTEuMzEuMS0xLjkyLjI4LjU4LjU1LjkyIDEuMzIuOTIgMi4xNVYxMGg1di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek02IDZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0xLjkyIDEuMjhDNy4zMSA3LjEgNi42NyA3IDYgN2MtLjk5IDAtMS45My4yMS0yLjc4LjU4QTIuMDEgMi4wMSAwIDAgMCAyIDkuNDNWMTBoNXYtLjU3YzAtLjgzLjM0LTEuNi45Mi0yLjE1ek0xMCA0YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTYgNkg4di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMTYgOS40M1YxMHptLTEgNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem02IDZoLTh2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAyMSAyMS40M1YyMnpNNSAxNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem02IDZIM3YtLjU3YzAtLjgxLjQ4LTEuNTMgMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMSA1LjU2IDBBMi4wMSAyLjAxIDAgMCAxIDExIDIxLjQzVjIyem0xLjc1LTl2LTJoLTEuNXYySDlsMyAzIDMtM2gtMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlTW9kZXJhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuMjcgMjEuNzMtMy41NC0zLjU1TDUuNzggNS4yMyAyLjI3IDEuNzIgMSAyLjk5IDMuMDEgNUgzdjZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiAyLjE2LS41MyA0LjA4LTEuNzYgNS42LTMuNDFMMjEgMjNsMS4yNy0xLjI3ek0xMyA5LjkybDYuNjcgNi42N0MyMC41MSAxNC44NyAyMSAxMi45NiAyMSAxMVY1bC05LTQtNS40OCAyLjQ0TDExIDcuOTJsMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb2xsZXJTa2F0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2LjVjMC0uMjguMjItLjUuNS0uNWgyLjUyTDEyIDVIOS41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVIMTJWMUg0djE1aDE2di0yLjg4YzAtMi4xLTEuNTUtMy41My0zLjAzLTMuODhsLTIuNy0uNjdjLS44Ny0uMjItMS41Ny0uODEtMS45NS0xLjU3SDkuNWMtLjI4IDAtLjUtLjIyLS41LS41ek01IDIzYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3ptMTQgMGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6bS03IDBjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYWZldHlEaXZpZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNWgydjE0aC0yVjV6bS02IDdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0yLjc4IDEuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0xOSAxMmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTIuNzggMS41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxNSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYW5pdGl6ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0czEuNSAxLjY2IDEuNSAyLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjV6bTQgOC41YTIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLTEuNjctMi41LTQuNS0yLjUtNC41UzE3IDEwLjgzIDE3IDEyLjVhMi41IDIuNSAwIDAgMCAyLjUgMi41ek0xMyAxNGgtMnYtMkg5djJIN3YyaDJ2Mmgydi0yaDJ2LTJ6bTMtMnYxMEg0VjEyYzAtMi45NyAyLjE2LTUuNDMgNS01LjkxVjRIN1YyaDZjMS4xMyAwIDIuMTUuMzkgMi45OSAxLjAxbC0xLjQzIDEuNDNDMTQuMSA0LjE3IDEzLjU3IDQgMTMgNGgtMnYyLjA5YzIuODQuNDggNSAyLjk0IDUgNS45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMVY4YzQuNTYtLjU4IDgtMy4xIDgtNkgyYzAgMi45IDMuNDQgNS40MiA4IDZ2M2MtMy42OC43My04IDMuNjEtOCAxMWg2di0ySDQuMTNjLjkzLTYuODMgNi42NS03LjIgNy44Ny03LjJzNi45NC4zNyA3Ljg3IDcuMkgxNnYyaDZjMC03LjM5LTQuMzItMTAuMjctOC0xMXptLTIgMTFjLTEuMSAwLTItLjktMi0yIDAtLjU1LjIyLTEuMDUuNTktMS40MUMxMS4zOSAxNy43OSAxNiAxNiAxNiAxNnMtMS43OSA0LjYxLTIuNTkgNS40MWMtLjM2LjM3LS44Ni41OS0xLjQxLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY2hvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEzLjE4djRMMTIgMjFsNy0zLjgydi00TDEyIDE3bC03LTMuODJ6TTEyIDMgMSA5bDExIDYgOS00LjkxVjE3aDJWOUwxMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY2llbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOCAxOC40IDE0IDEwLjY3VjYuNWwxLjM1LTEuNjljLjI2LS4zMy4wMy0uODEtLjM5LS44MUg5LjA0Yy0uNDIgMC0uNjUuNDgtLjM5LjgxTDEwIDYuNXY0LjE3TDQuMiAxOC40Yy0uNDkuNjYtLjAyIDEuNi44IDEuNmgxNGMuODIgMCAxLjI5LS45NC44LTEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NvcmVib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTMuNUgxNnYtM2gxLjV2M3pNMjAgNGgtM1YyaC0ydjJIOVYySDd2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuNSAxMS41YzAgLjU1LS40NSAxLTEgMWgtMnYxaDNWMTVINXYtMi41YzAtLjU1LjQ1LTEgMS0xaDJ2LTFINVY5aDMuNWMuNTUgMCAxIC40NSAxIDF2MS41em0zLjI1IDYuNWgtMS41di0xLjVoMS41VjE4em0wLTMuNWgtMS41VjEzaDEuNXYxLjV6bTAtMy41aC0xLjVWOS41aDEuNVYxMXptMC0zLjVoLTEuNVY2aDEuNXYxLjV6TTE5IDE0YzAgLjU1LS40NSAxLTEgMWgtMi41Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFIMThjLjU1IDAgMSAuNDUgMSAxdjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjdWJhRGl2aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxM2MwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem03Ljg5LTIuODkgNC41My0xLjIxLS43OC0yLjktNC41MyAxLjIxYy0uOC4yMS0xLjI4IDEuMDQtMS4wNiAxLjg0LjIyLjggMS4wNCAxLjI4IDEuODQgMS4wNnpNMjAuNSA1LjkgMjMgM2wtMS0xLTMgMy0yIDQtOS40OCAyLjg3Yy0uODIuMi0xLjM5Ljg5LTEuNSAxLjY4TDUuMjQgMTggMi40IDIxLjggNCAyM2wzLTQgMS4xNC0zLjE0TDE0IDE0bDUtMy41IDEuNS00LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbGZJbXByb3ZlbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE2di0yYy0yLjI0IDAtNC4xNi0uOTYtNS42LTIuNjhsLTEuMzQtMS42QTEuOTggMS45OCAwIDAgMCAxMi41MyA5aC0xLjA1Yy0uNTkgMC0xLjE1LjI2LTEuNTMuNzJsLTEuMzQgMS42QzcuMTYgMTMuMDQgNS4yNCAxNCAzIDE0djJjMi43NyAwIDUuMTktMS4xNyA3LTMuMjVWMTVsLTMuODggMS41NWMtLjY3LjI3LTEuMTIuOTMtMS4xMiAxLjY2QzUgMTkuMiA1LjggMjAgNi43OSAyMEg5di0uNWEyLjUgMi41IDAgMCAxIDIuNS0yLjVoM2MuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTNjLS44MyAwLTEuNS42Ny0xLjUgMS41di41aDcuMjFjLjk5IDAgMS43OS0uOCAxLjc5LTEuNzkgMC0uNzMtLjQ1LTEuMzktMS4xMi0xLjY2TDE0IDE1di0yLjI1YzEuODEgMi4wOCA0LjIzIDMuMjUgNyAzLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW50aW1lbnREaXNzYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0wLTMuNWMuNzMgMCAxLjM5LjE5IDEuOTcuNTMuMTItLjE0Ljg2LS45OCAxLjAxLTEuMTRBNS4zOSA1LjM5IDAgMCAwIDEyIDE1Yy0xLjExIDAtMi4xMy4zMy0yLjk5Ljg4Ljk3IDEuMDkuMDEuMDIgMS4wMSAxLjE0LjU5LS4zMyAxLjI1LS41MiAxLjk4LS41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VudGltZW50TmV1dHJhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNS41aDZ2MUg5di0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VudGltZW50U2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMC00Yy0uNzMgMC0xLjM4LS4xOC0xLjk2LS41Mi0uMTIuMTQtLjg2Ljk4LTEuMDEgMS4xNWE1LjQ5IDUuNDkgMCAwIDAgNS45NS0uMDFjLS45Ny0xLjA5LS4wMS0uMDItMS4wMS0xLjE1LS41OS4zNS0xLjI0LjUzLTEuOTcuNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnRpbWVudFZlcnlEaXNzYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0wLTZjLTIuMzMgMC00LjMyIDEuNDUtNS4xMiAzLjVoMS42N2MuNjktMS4xOSAxLjk3LTIgMy40NS0yczIuNzUuODEgMy40NSAyaDEuNjdjLS44LTIuMDUtMi43OS0zLjUtNS4xMi0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnRpbWVudFZlcnlTYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0tNS02Yy43OCAyLjM0IDIuNzIgNCA1IDRzNC4yMi0xLjY2IDUtNEg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXZlcmVDb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMTAuNDEgNC00TDE0LjU5IDUgMTIgNy41OVY0aC0ydjMuNTlMNy40MSA1IDYgNi40MWw0IDRWMTJIOC40MWwtNC00TDMgOS40MSA1LjU5IDEySDJ2MmgzLjU5TDMgMTYuNTkgNC40MSAxOGw0LTRIMTB2MS41OWwtNCA0TDcuNDEgMjEgMTAgMTguNDFWMjJoMnYtMy41OUwxNC41OSAyMSAxNiAxOS41OWwtNC00VjE0aDEuNTlsNCA0TDE5IDE2LjU5IDE2LjQxIDE0SDIwdi0yaC04ek0xOSAyaDJ2NWgtMnpNMTkgOGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTYuMDhjLS43NiAwLTEuNDQuMy0xLjk2Ljc3TDguOTEgMTIuN2MuMDUtLjIzLjA5LS40Ni4wOS0uN3MtLjA0LS40Ny0uMDktLjdsNy4wNS00LjExYy41NC41IDEuMjUuODEgMi4wNC44MSAxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzYzAgLjI0LjA0LjQ3LjA5LjdMOC4wNCA5LjgxQzcuNSA5LjMxIDYuNzkgOSA2IDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNjLjc5IDAgMS41LS4zMSAyLjA0LS44MWw3LjEyIDQuMTZjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42MSAxLjMxIDIuOTIgMi45MiAyLjkyIDEuNjEgMCAyLjkyLTEuMzEgMi45Mi0yLjkycy0xLjMxLTIuOTItMi45Mi0yLjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOWMtMS4xIDAtMi0uOS0yLTJzMi00IDItNCAyIDIuOSAyIDQtLjkgMi0yIDJ6bS0zLjUtMmMwLS43My40MS0xLjcxLjkyLTIuNjZBOS45NjUgOS45NjUgMCAwIDAgMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyYzAtLjU1LS4wNi0xLjA5LS4xNC0xLjYyYTMuNSAzLjUgMCAwIDEtLjg2LjEyYy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXptLTEuODguMzggMS4wNiAxLjA2LTEuMDYgMS4wNiAxLjA2IDEuMDYtMS4wNiAxLjA2TDEzLjUgOS41bDIuMTItMi4xMnptLTguMyAxLjA2IDEuMDYtMS4wNkwxMC41IDkuNWwtMi4xMiAyLjEyLTEuMDYtMS4wNkw4LjM4IDkuNSA3LjMyIDguNDR6TTE1LjQ0IDE3Yy0uNjktMS4xOS0xLjk3LTItMy40NC0ycy0yLjc1LjgxLTMuNDQgMkg2Ljg4Yy4zLS43Ni43Ni0xLjQzIDEuMzQtMS45OUw1LjI0IDEzLjNjLS40NS4yNi0xLjAxLjI4LTEuNDkgMGExLjUwMSAxLjUwMSAwIDAgMSAxLjUtMi42Yy40OC4yOC43NC43OC43NCAxLjI5bDMuNTggMi4wN2MuNzMtLjM2IDEuNTUtLjU2IDIuNDMtLjU2IDIuMzMgMCA0LjMyIDEuNDUgNS4xMiAzLjVoLTEuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25MYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjQ5IDEzLS45My0xLjg2Yy0uMzctLjc0LS4wNy0xLjY0LjY3LTIuMDFsLjI2LS4xMyA1LjczIDUuNDZjLjUuNDcuNzggMS4xMy43OCAxLjgxdjUuMjNhMi41IDIuNSAwIDAgMS0yLjUgMi41aC0xMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMUgxMHYtMUg0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDZ2LTFIM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg3di0xSDQuNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg3Ljk5em0tLjcxLTUuODhjLS44NC40LTEuMTcuNjItMS42MyAxLjE5bC0yLjctMi44NUEuOTk2Ljk5NiAwIDEgMSA4LjkgNC4wOWwyLjg4IDMuMDN6TTkuNjQgOS4yMWEzLjQ2IDMuNDYgMCAwIDAtLjIgMS43OWgtLjg2TDYuMzEgOC42MWEuOTg3Ljk4NyAwIDAgMSAuMDQtMS40MS45OTYuOTk2IDAgMCAxIDEuNDEuMDRsMS44OCAxLjk3em0xMC42OSA0LjcuODgtLjgzYy41LS40Ny43OS0xLjEzLjc5LTEuODJWMy4zNWwtLjI3LS4xYy0uNzgtLjI4LTEuNjQuMTItMS45Mi45bC0uNzEgMS45Ni01LjUtNS44YS45OTYuOTk2IDAgMSAwLTEuNDUgMS4zN2wzLjc5IDMuOTktLjczLjY5LTQuODItNS4wOGEuOTk2Ljk5NiAwIDEgMC0xLjQ1IDEuMzdsMy43OCAzLjk4TDE1LjM4IDlsMy42MSAzLjQzLjYxLjU4Yy4yOS4yNy41My41Ny43My45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaW5nbGVCZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMmMwLTEuMS0uOS0yLTItMlY3YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNjLTEuMSAwLTIgLjktMiAydjVoMS4zM0w2IDE5aDFsLjY3LTJoOC42N2wuNjYgMmgxbC42Ny0ySDIwdi01em0tNC0yaC0zVjdoM3Yzek04IDdoM3YzSDhWN3ptLTIgNWgxMnYzSDZ2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNrYXRlYm9hcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6TTcuMjUgMjIuNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzUuNzUtLjM0Ljc1LS43NS0uMzQtLjc1LS43NS0uNzV6bTguNSAwYy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NS43NS0uMzQuNzUtLjc1LS4zNC0uNzUtLjc1LS43NXptMy40OS0zLjVhLjcyLjcyIDAgMCAwLS41OS4zYy0uNTUuNzMtMS40MiAxLjItMi40IDEuMkgxNnYtNmwtNC4zMi0yLjY3IDEuOC0yLjg5QTYuNTA3IDYuNTA3IDAgMCAwIDE5IDEydi0yYy0xLjg1IDAtMy40NC0xLjEyLTQuMTMtMi43MmwtLjUyLTEuMjFDMTQuMTYgNS42NCAxMy42MSA1IDEyLjcgNUg3TDQuNSA5bDEuNyAxLjA2TDguMSA3aDIuMzVsLTIuNCAzLjg0Yy0uMzEuNS0uMzkgMS4xMS0uMjEgMS42N2wxLjM0IDQuMTUtMy4xMiAzLjc2Yy0uNy0uMTYtMS4zLS41Ny0xLjcxLTEuMTJhLjc0OS43NDkgMCAxIDAtMS4yLjljLjgyIDEuMSAyLjEzIDEuOCAzLjYgMS44aDkuNWMxLjQ3IDAgMi43OC0uNyAzLjYtMS44LjEtLjE0LjE1LS4zLjE1LS40NSAwLS4zOS0uMzItLjc1LS43Ni0uNzV6TTE0IDIwLjVIOC42bDIuOS0zLjUtMS0zLjMgMy41IDIuMnY0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNsZWRkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNC41YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptOC44IDE1Ljc0YTQuMDAzIDQuMDAzIDAgMCAxLTUuMDQgMi41N0wxIDE3LjM2bC40Ni0xLjQzIDMuOTMgMS4yOC40Ni0xLjQzLTMuOTItMS4yOC40Ni0xLjQzTDQgMTMuNlY5LjVsNS40Ny0yLjM1Yy4zOS0uMTcuODQtLjIxIDEuMjgtLjA3Ljk1LjMxIDEuNDYgMS4zMiAxLjE2IDIuMjdsLTEuMDUgMy4yNCAyLjE0LS4zNGMuODktLjE1IDEuNzYuMzIgMi4xNCAxLjE0bDIuMDggNC41MSAxLjkzLjYzLS40NiAxLjQzLTMuMzItMS4wOC0uNDcgMS40MiAzLjMyIDEuMDhjMS4zMS40MyAyLjcyLS4yOSAzLjE1LTEuNjEuNDMtMS4zMS0uMjktMi43Mi0xLjYxLTMuMTVsLjQ2LTEuNDNjMi4xMS42OSAzLjI3IDIuOTUgMi41OCA1LjA1ek02IDE0LjI1bDEuMDEuMzNjLS4yMi0uNDItLjI4LS45Mi0uMTItMS40TDcuOTIgMTAgNiAxMC44MnYzLjQzem03Ljk0IDQuMTYtNi42Ni0yLjE2LS40NiAxLjQzIDYuNjYgMi4xNi40Ni0xLjQzem0uNjktMS4zNi0xLjE4LTIuNTYtMy45Ny44OSA1LjE1IDEuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub3dib2FyZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDNjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNy40IDE3LjA5YS43NDguNzQ4IDAgMCAwLS42NC4xN2MtLjY5LjYtMS42NC44OC0yLjYuNjdMMTcgMjAuNjlsLTEtNi4xOS0zLjMyLTIuNjcgMS44LTIuODlBNi41MDcgNi41MDcgMCAwIDAgMjAgMTJ2LTJjLTEuODUgMC0zLjQ0LTEuMTItNC4xMy0yLjcybC0uNTItMS4yMUMxNS4xNiA1LjY0IDE0LjYxIDUgMTMuNyA1SDhMNS41IDlsMS43IDEuMDZMOS4xIDdoMi4zNWwtMi41MSAzLjk5Yy0uMjguNDUtLjM3IDEtLjI1IDEuNTJMOS41IDE2IDYgMTguMzVsLS40Ny0uMWMtLjk2LS4yLTEuNzEtLjg1LTIuMS0xLjY3YS43NDQuNzQ0IDAgMCAwLS41MS0uNDJjLS40My0uMDktLjgyLjItLjkuNTgtLjA0LjE0LS4wMi4zMS4wNS40Ni41OCAxLjI0IDEuNzEgMi4yIDMuMTUgMi41MWwxMi42MyAyLjY5YzEuNDQuMzEgMi44Ni0uMTEgMy45LTEuMDEuMTMtLjExLjIxLS4yNi4yNC0uNDEuMDctLjM4LS4xNi0uOC0uNTktLjg5ek04LjczIDE4LjkzbDMuMDItMi4wMy0uNDQtMy4zMiAyLjg0IDIuMDIuNzUgNC42NC02LjE3LTEuMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub3dzaG9laW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAzLjVjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNNi4zMiAxOS4wM2wtMS4xNC0xLjQ3TDQgMTguNWwyLjM4IDMuMDRjLjUxLjY1IDEuMTYgMS4xNSAxLjg4IDEuNDEuMjguMS41My4wNC43Mi0uMTEuMy0uMjMuNDItLjcuMTItMS4wN2EuODQuODQgMCAwIDAtLjMxLS4yMiAyLjk3IDIuOTcgMCAwIDEtMS4xNC0uODNsLS4wOC0uMUwxMSAxOC4ybC44OS0zLjIyIDIuMTEgMnY0LjUyaC0yVjIzaDMuODdjLjgyIDAgMS42MS0uMjEgMi4yNi0uNjEuMjYtLjE2LjM3LS4zOS4zNy0uNjQgMC0uMzgtLjMtLjc1LS43Ny0uNzUtLjEzIDAtLjI2LjA0LS4zNy4xLS40LjIzLS44Ny4zNy0xLjM2LjR2LTYuMDJsLTIuMTEtMiAuNi0zQzE1Ljc5IDExLjk4IDE3LjggMTMgMjAgMTN2LTJjLTEuOSAwLTMuNTEtMS4wMi00LjMxLTIuNDJsLTEtMS41OGMtLjQtLjYtMS0xLTEuNy0xLS43NSAwLTEuNDEuMzQtNS45OSAyLjI4VjEzaDJWOS41OGwxLjc5LS43TDkuMiAxN2wtMi44OCAyLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb2NpYWxEaXN0YW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNWMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem00Ljc4IDMuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMiAxMC40M1YxMWg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0xOCA3YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMi43OCAxLjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDE0IDEwLjQzVjExaDh2LS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTIyIDE3bC00LTR2M0g2di0zbC00IDQgNCA0di0zaDEydjNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb3V0aEFtZXJpY2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtMS45NS43LTMuNzQgMS44Ny01LjEzTDkgMTB2MWMwIDEuMS45IDIgMiAydjUuNTljMCAuMjcuMTEuNTIuMjkuNzFsLjcxLjdjLTQuNDIgMC04LTMuNTgtOC04em05IDcuOTRWMThsMy43NS01LjYyYy4xNi0uMjUuMjUtLjU0LjI1LS44M1YxMC41YzAtLjU1LS40NS0xLTEtMWgtMS41bC0xLjQtMS43NWMtLjM4LS40Ny0uOTUtLjc1LTEuNTYtLjc1SDhWNS4wN0E3Ljk3MSA3Ljk3MSAwIDAgMSAxMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgNC4wNy0zLjA2IDcuNDQtNyA3Ljk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNCYXNlYmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuODEgNi4yOEMyLjY3IDcuOSAyIDkuODcgMiAxMnMuNjcgNC4xIDEuODEgNS43MkM2LjIzIDE2Ljk1IDggMTQuNjggOCAxMlM2LjIzIDcuMDUgMy44MSA2LjI4ek0yMC4xOSA2LjI4QzE3Ljc3IDcuMDUgMTYgOS4zMiAxNiAxMnMxLjc3IDQuOTUgNC4xOSA1LjcyQzIxLjMzIDE2LjEgMjIgMTQuMTMgMjIgMTJzLS42Ny00LjEtMS44MS01LjcyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMmMwLTMuMjggMS45Ny02LjA5IDQuNzktNy4zM0MxNy4wMSAzLjAyIDE0LjYzIDIgMTIgMlM2Ljk5IDMuMDIgNS4yMSA0LjY3QzguMDMgNS45MSAxMCA4LjcyIDEwIDEycy0xLjk3IDYuMDktNC43OSA3LjMzQzYuOTkgMjAuOTggOS4zNyAyMiAxMiAyMnM1LjAxLTEuMDIgNi43OS0yLjY3QTguMDAyIDguMDAyIDAgMCAxIDE0IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNCYXNrZXRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMDkgMTFoNC44NmE5Ljk1MSA5Ljk1MSAwIDAgMC0xLjU0LTQuNCA1Ljk4NyA1Ljk4NyAwIDAgMC0zLjMyIDQuNHpNNi45MSAxMWE1Ljk4NyA1Ljk4NyAwIDAgMC0zLjMyLTQuNEE5Ljk1MSA5Ljk1MSAwIDAgMCAyLjA1IDExaDQuODZ6TTE1LjA3IDExYTcuOTk0IDcuOTk0IDAgMCAxIDQuMDYtNkE5Ljk2OSA5Ljk2OSAwIDAgMCAxMyAyLjA1VjExaDIuMDd6TTguOTMgMTFIMTFWMi4wNUE5Ljk0MyA5Ljk0MyAwIDAgMCA0Ljg3IDVhNy45OTQgNy45OTQgMCAwIDEgNC4wNiA2ek0xNS4wNyAxM0gxM3Y4Ljk1QTkuOTQzIDkuOTQzIDAgMCAwIDE5LjEzIDE5YTcuOTk0IDcuOTk0IDAgMCAxLTQuMDYtNnpNMy41OSAxNy40QTYuMDI5IDYuMDI5IDAgMCAwIDYuOTEgMTNIMi4wNWMuMTYgMS42MS43MSAzLjExIDEuNTQgNC40ek0xNy4wOSAxM2E1Ljk4NyA1Ljk4NyAwIDAgMCAzLjMyIDQuNCA5Ljk1MSA5Ljk1MSAwIDAgMCAxLjU0LTQuNGgtNC44NnpNOC45MyAxM2E3Ljk5NCA3Ljk5NCAwIDAgMS00LjA2IDZBOS45NjkgOS45NjkgMCAwIDAgMTEgMjEuOTVWMTNIOC45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzQ3JpY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjA1IDEyLjgxIDYuNTYgNC4zMmEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBMMi4zMiA3LjE1YS45OTYuOTk2IDAgMCAwIDAgMS40MWw4LjQ5IDguNDljLjM5LjM5IDEuMDIuMzkgMS40MSAwbDIuODMtMi44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6TTE0LjM0MSAxNy43NTZsMS40MTQtMS40MTQgNC4yNDMgNC4yNDMtMS40MTQgMS40MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTguNVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMy41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0VzcG9ydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS41OCAxNi4wOS0xLjA5LTcuNjZBMy45OTYgMy45OTYgMCAwIDAgMTYuNTMgNUg3LjQ3QzUuNDggNSAzLjc5IDYuNDYgMy41MSA4LjQzbC0xLjA5IDcuNjZDMi4yIDE3LjYzIDMuMzkgMTkgNC45NCAxOWMuNjggMCAxLjMyLS4yNyAxLjgtLjc1TDkgMTZoNmwyLjI1IDIuMjVjLjQ4LjQ4IDEuMTMuNzUgMS44Ljc1IDEuNTYgMCAyLjc1LTEuMzcgMi41My0yLjkxek0xMSAxMUg5djJIOHYtMkg2di0xaDJWOGgxdjJoMnYxem00LTFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMiAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0Zvb3RiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy4wMiAxNS42MmMtLjA4IDIuNDIuMzIgNC4zNC42NyA0LjY5czIuMjguNzYgNC42OS42N2wtNS4zNi01LjM2ek0xMy4wOCAzLjI4Yy0yLjMzLjQyLTQuNzkgMS4zNC02LjYyIDMuMThzLTIuNzYgNC4yOS0zLjE4IDYuNjJsNy42MyA3LjYzYzIuMzQtLjQxIDQuNzktMS4zNCA2LjYyLTMuMThzMi43Ni00LjI5IDMuMTgtNi42MmwtNy42My03LjYzek05LjkgMTUuNWwtMS40LTEuNCA1LjYtNS42IDEuNCAxLjQtNS42IDUuNnpNMjAuOTggOC4zOGMuMDgtMi40Mi0uMzItNC4zNC0uNjctNC42OXMtMi4yOC0uNzYtNC42OS0uNjdsNS4zNiA1LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNHb2xmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjMy44NyAwIDctMy4xMyA3LTdzLTMuMTMtNy03LTctNyAzLjEzLTcgNyAzLjEzIDcgNyA3em0wLTEyYzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1LTUtMi4yNC01LTUgMi4yNC01IDUtNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOWgyYzEuMSAwIDIgLjkgMiAydjFoMnYtMWMwLTEuMS45LTIgMi0yaDJ2LTJIN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNHeW1uYXN0aWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6TTEgOWg2bDctNSAxLjMxIDEuNTItNC4xNyAyLjk4SDE0TDIxLjggNCAyMyA1LjQgMTQuNSAxMiAxNCAyMmgtMmwtLjUtMTBMOCAxMUgxVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0hhbmRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMjcgNmMtLjU1Ljk1LS4yMiAyLjE4LjczIDIuNzMuOTUuNTUgMi4xOC4yMiAyLjczLS43My41NS0uOTUuMjItMi4xOC0uNzMtMi43My0uOTUtLjU1LTIuMTgtLjIyLTIuNzMuNzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljg0IDEwLjQxLTIuNi0xLjVjLTIuMzgtMS4zOC0zLjItNC40NC0xLjgyLTYuODJsLTEuNzMtMUM4LjEgMy44MyA4LjYgNy4yMSAxMC42NiA5LjRsLTUuMTUgOC45MiAxLjczIDEgMS41LTIuNiAxLjczIDEtMyA1LjIgMS43MyAxIDYuMjktMTAuODlhNS4wMDIgNS4wMDIgMCAwIDEgLjMxIDUuNDZsMS43MyAxYzEuNi0yLjc1IDEuMjgtNi41OC0xLjY5LTkuMDh6TTEyLjc1IDMuOGMuNzIuNDEgMS42My4xNyAyLjA1LS41NS40MS0uNzIuMTctMS42My0uNTUtMi4wNWExLjUwMSAxLjUwMSAwIDAgMC0xLjUgMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNIb2NrZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3djNoMnYtNEgzYy0uNTUgMC0xIC40NS0xIDF6TTkgMTZINXY0bDQuNjktLjAxYy4zOCAwIC43Mi0uMjEuODktLjU1bC44Ny0xLjktMS41OS0zLjQ4TDkgMTZ6TTIxLjcxIDE2LjI5QS45OTcuOTk3IDAgMCAwIDIxIDE2aC0xdjRoMnYtM2MwLS4yOC0uMTEtLjUzLS4yOS0uNzF6TTEzLjYgMTIuODQgMTcuNjUgNEgxNC4zbC0xLjc2IDMuOTctLjQ5IDEuMS0uMDUuMTRMOS43IDRINi4zNWw0LjA1IDguODQgMS41MiAzLjMyLjA4LjE4IDEuNDIgMy4xYy4xNy4zNC41MS41NS44OS41NUwxOSAyMHYtNGgtNGwtMS40LTMuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0thYmFkZGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIyLjM4XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDExLjg4di00LjdsLTUuMDUtMi4xNGMtLjk3LS40MS0yLjA5LS4wNi0yLjY1Ljg0bC0xIDEuNmMtLjY3IDEuMTgtMS45MSAyLjA2LTMuNDEgMi4zMmwuMDYuMDZjLjY5LjY5IDEuNTIgMS4wNyAyLjQ2IDEuMTcuOC0uNDIgMS41Mi0uOTggMi4wOS0xLjY0bC42IDMtMS4xNiAxLjEtLjk0Ljg5djcuNWgydi02bDIuMS0yIDEuOCA4SDIzbC0yLjE4LTExLS42Mi0zLjEgMS44Ljd2My40aDJ6TTEwLjI5IDguMDljLjIyLjE1LjQ3LjI0LjcyLjI5LjEzLjAyLjI1LjA0LjM4LjA0cy4yNi0uMDEuMzgtLjA0Yy4xMy0uMDIuMjUtLjA2LjM3LS4xMS4yNC0uMS40Ny0uMjQuNjYtLjQ0LjQ5LS40OS42Ny0xLjE3LjU1LTEuOC0uMDctLjM3LS4yNS0uNzQtLjU1LTEuMDMtLjE5LS4xOS0uNDItLjM0LS42Ni0uNDQtLjEyLS4wNS0uMjQtLjA5LS4zNy0uMTFzLS4yNS0uMDQtLjM4LS4wNGMtLjEyIDAtLjIzLjAxLS4zNS4wMy0uMTQuMDItLjI4LjA2LS40MS4xMS0uMjMuMTEtLjQ2LjI2LS42NS40NS0uMy4yOS0uNDguNjYtLjU1IDEuMDMtLjEyLjYzLjA2IDEuMzEuNTUgMS44LjA5LjEuMi4xOC4zMS4yNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuMjQgMTAuNTYtMi0yYy0uMS0uMS0uMi0uMTgtLjMxLS4yNmExLjkzIDEuOTMgMCAwIDAtLjcyLS4yOGMtLjEzLS4wMy0uMjUtLjA0LS4zOC0uMDQtLjUxIDAtMS4wMi4yLTEuNDEuNTlsLTMuMzQgMy4zNGMtLjQxLjQxLS42Mi45OC0uNTggMS41NCAwIC4xOC4wNC4zNy4xMS41NWwxLjA3IDIuOTUtMy42MyAzLjYzTDEuNDYgMjJsNC4yNC00LjI0di0yLjIyTDcgMTYuNzV2NS4xM2gydi02bC0yLjEyLTIuMTIgMi4zNi0yLjM2LjcxLjcxYzEuMjkgMS4yNiAyLjk3IDIuMDQgNS4wMyAyLjA0bC0uMTQtMi4wN2MtMS41LS4wMi0yLjctLjYyLTMuNi0xLjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNNYXJ0aWFsQXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjggMi04LjIgNi43LTEuMjEtMS4wNCAzLjYtMi4wOEw5LjQxIDEgOCAyLjQxbDIuNzQgMi43NEw1IDguNDZsLTEuMTkgNC4yOUw2LjI3IDE3IDggMTZsLTIuMDMtMy41Mi4zNS0xLjNMOS41IDEzbC41IDloMmwuNS0xMEwyMSAzLjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNVwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzTW1hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMGMwIC41NS40NSAxIDEgMWg4Yy41NSAwIDEtLjQ1IDEtMXYtM0g3djN6TTE4IDdjLS41NSAwLTEgLjQ1LTEgMVY1YzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjUuOGMwIC4xMy4wMS4yNi4wNC4zOWwuOCA0Yy4wOS40Ny41LjguOTguOGgxMC4zNmMuNDUgMCAuODktLjM2Ljk4LS44bC44LTRjLjAzLS4xMy4wNC0uMjYuMDQtLjM5VjhjMC0uNTUtLjQ1LTEtMS0xem0tMyAzSDdWN2g4djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c01vdG9yc3BvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTEuMzljMC0uNjUtLjM5LTEuMjMtLjk4LTEuNDhMNS40NCA3LjU1Yy0xLjQ4IDEuNjgtMi4zMiAzLjctMi44IDUuNDVoNy43NWMuODkgMCAxLjYxLS43MiAxLjYxLTEuNjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk2IDExLjIyYy0uNDEtNC40MS00LjU2LTcuNDktOC45OC03LjItMi41MS4xNi00LjQ0Ljk0LTUuOTMgMi4wNGw0Ljc0IDIuMDFjMS4zMy41NyAyLjIgMS44NyAyLjIgMy4zMiAwIDEuOTktMS42MiAzLjYxLTMuNjEgMy42MUgyLjIxQzIgMTYuMzEgMiAxNy4yIDIgMTcuMnYuOGMwIDEuMS45IDIgMiAyaDEwYzQuNjcgMCA4LjQxLTQuMDEgNy45Ni04Ljc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNSdWdieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjQ5IDMuNTFjLS41Ni0uNTYtMi4xNS0uOTctNC4xNi0uOTctMy4wOCAwLTcuMTUuOTYtOS45OCAzLjc5LTQuNjkgNC43LTQuMjUgMTIuNzQtMi44NCAxNC4xNi41Ni41NiAyLjE1Ljk3IDQuMTYuOTcgMy4wOCAwIDcuMTUtLjk2IDkuOTgtMy43OSA0LjY5LTQuNyA0LjI1LTEyLjc0IDIuODQtMTQuMTZ6TTcuNzYgNy43NmMyLjY0LTIuNjQgNi4zNS0zLjEyIDguMDMtMy4xOS0yLjA1Ljk0LTQuNDYgMi40NS02LjYxIDQuNjFhMjMuNDYyIDIzLjQ2MiAwIDAgMC00LjYyIDYuNjNjLjEtMi40OC44OC01Ljc0IDMuMi04LjA1em04LjQ4IDguNDhjLTIuNjQgMi42NC02LjM1IDMuMTItOC4wMyAzLjE5IDIuMDUtLjk0IDQuNDYtMi40NSA2LjYxLTQuNjEgMi4xNi0yLjE2IDMuNjctNC41OCA0LjYyLTYuNjMtLjEgMi40OC0uODggNS43NC0zLjIgOC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzU29jY2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAzLjMgMS4zNS0uOTVhOC4wMSA4LjAxIDAgMCAxIDQuMzggMy4zNGwtLjM5IDEuMzQtMS4zNS40NkwxMyA2LjdWNS4zem0tMy4zNS0uOTVMMTEgNS4zdjEuNEw3LjAxIDkuNDlsLTEuMzUtLjQ2LS4zOS0xLjM0YTguMTAzIDguMTAzIDAgMCAxIDQuMzgtMy4zNHpNNy4wOCAxNy4xMWwtMS4xNC4xQTcuOTM4IDcuOTM4IDAgMCAxIDQgMTJjMC0uMTIuMDEtLjIzLjAyLS4zNWwxLS43MyAxLjM4LjQ4IDEuNDYgNC4zNC0uNzggMS4zN3ptNy40MiAyLjQ4Yy0uNzkuMjYtMS42My40MS0yLjUuNDFzLTEuNzEtLjE1LTIuNS0uNDFsLS42OS0xLjQ5LjY0LTEuMWg1LjExbC42NCAxLjExLS43IDEuNDh6TTE0LjI3IDE1SDkuNzNsLTEuMzUtNC4wMkwxMiA4LjQ0bDMuNjMgMi41NEwxNC4yNyAxNXptMy43OSAyLjIxLTEuMTQtLjEtLjc5LTEuMzcgMS40Ni00LjM0IDEuMzktLjQ3IDEgLjczYy4wMS4xMS4wMi4yMi4wMi4zNCAwIDEuOTktLjczIDMuODEtMS45NCA1LjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNUZW5uaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41MiAyLjQ5QzE3LjE4LjE1IDEyLjkuNjIgOS45NyAzLjU1Yy0xLjYgMS42LTIuNTIgMy44Ny0yLjU0IDUuNDYtLjAyIDEuNTguMjYgMy44OS0xLjM1IDUuNWwtNC4yNCA0LjI0IDEuNDIgMS40MiA0LjI0LTQuMjRjMS42MS0xLjYxIDMuOTItMS4zMyA1LjUtMS4zNXMzLjg2LS45NCA1LjQ2LTIuNTRjMi45Mi0yLjkzIDMuNC03LjIxIDEuMDYtOS41NXptLTkuMiA5LjE5Yy0xLjUzLTEuNTMtMS4wNS00LjYxIDEuMDYtNi43MnM1LjE4LTIuNTkgNi43Mi0xLjA2YzEuNTMgMS41MyAxLjA1IDQuNjEtMS4wNiA2Ljcycy01LjE4IDIuNTktNi43MiAxLjA2ek0xOCAxN2MuNTMgMCAxLjA0LjIxIDEuNDEuNTkuNzguNzguNzggMi4wNSAwIDIuODMtLjM3LjM3LS44OC41OC0xLjQxLjU4cy0xLjA0LS4yMS0xLjQxLS41OWMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODMuMzctLjM3Ljg4LS41OCAxLjQxLS41OG0wLTJhMy45OTggMy45OTggMCAwIDAtMi44MyA2LjgzYy43OC43OCAxLjgxIDEuMTcgMi44MyAxLjE3YTMuOTk4IDMuOTk4IDAgMCAwIDIuODMtNi44M0EzLjk5OCAzLjk5OCAwIDAgMCAxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzVm9sbGV5YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNC4wMUMzLjU4IDUuODQgMiA4LjczIDIgMTJjMCAxLjQ2LjMyIDIuODUuODkgNC4xMUw2IDE0LjMxVjQuMDF6TTExIDExLjQyVjIuMDVjLTEuMDYuMTEtMi4wNy4zOC0zIC43OXYxMC4zMmwzLTEuNzR6TTEyIDEzLjE1bC04LjExIDQuNjhjLjYxLjg0IDEuMzQgMS41OSAyLjE4IDIuMkwxNSAxNC44OWwtMy0xLjc0ek0xMyA3Ljk2djMuNDZsOC4xMSA0LjY4Yy40Mi0uOTMuNy0xLjkzLjgyLTIuOThMMTMgNy45NnpNOC4wNyAyMS4yYzEuMjEuNTEgMi41My44IDMuOTMuOCAzLjM0IDAgNi4yOS0xLjY1IDguMTEtNC4xNkwxNyAxNi4wNCA4LjA3IDIxLjJ6TTIxLjkyIDEwLjgxYy0uNTUtNC42My00LjI2LTguMy04LjkyLTguNzZ2My42bDguOTIgNS4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjMgNmMtMS42NiAwLTMuMjIuNjYtNC4zNiAxLjczQzYuNTQgNi43MyA1LjYxIDYgNC41IDZhMi41IDIuNSAwIDAgMCAwIDVjLjIxIDAgLjQxLS4wMy42MS0uMDgtLjA1LjI1LS4wOS41MS0uMS43OGE2LjAwNiA2LjAwNiAwIDAgMCA2LjY4IDYuMjdjMi41NS0uMjggNC42OC0yLjI2IDUuMTktNC43Ny4xNS0uNzEuMTUtMS40LjA2LTIuMDYtLjA5LS42LjM4LTEuMTMuOTktMS4xM0gyMlY2SDExLjIzek00LjUgOWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41LjUuMjIuNS41LS4yMi41LS41LjV6bTYuNSA2Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1cmZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAyM2MtMS4wMyAwLTIuMDYtLjI1LTMtLjc1LTEuODkgMS00LjExIDEtNiAwLTEuODkgMS00LjExIDEtNiAwLS45NS41LTEuOTcuNzUtMyAuNzVIMnYtMmgxYzEuMDQgMCAyLjA4LS4zNSAzLTEgMS44MyAxLjMgNC4xNyAxLjMgNiAwIDEuODMgMS4zIDQuMTcgMS4zIDYgMCAuOTEuNjUgMS45NiAxIDMgMWgxdjJoLTF6TTE3IDEuNWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0yLjU3IDYuOThMMTIuMTggMTAgMTYgMTN2My44NGMuNTMuMzggMS4wMy43OCAxLjQ5IDEuMTctLjY4LjU4LTEuNTUuOTktMi40OS45OS0xLjIgMC0yLjI3LS42Ni0zLTEuNS0uNzMuODQtMS44IDEuNS0zIDEuNS0uMzMgMC0uNjUtLjA1LS45Ni0uMTRDNS4xOSAxNi45IDMgMTQuNzIgMyAxMy4yOCAzIDEyLjI1IDQuMDEgMTIgNC44NSAxMmMuOTggMCAyLjI4LjMxIDMuNy44M2wtLjUzLTMuMWMtLjExLS42Ny4xOC0xLjM4Ljc4LTEuNzlsMi4xNS0xLjQ1LTItLjM3LTIuODIgMS45M0w1IDYuNCA4LjUgNGw1LjU1IDEuMDNjLjQ1LjA5LjkzLjM3IDEuMjIuODlsLjg4IDEuNTVBNS4wMDcgNS4wMDcgMCAwIDAgMjAuNSAxMHYyYTcuMDEgNy4wMSAwIDAgMS02LjA3LTMuNTJ6TTEwLjMgMTEuMWwuNDQgMi42NWMuOTIuNDIgMi40OCAxLjI3IDMuMjYgMS43NVYxNGwtMy43LTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpdGNoQWNjb3VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYgMmMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJIOHYtMS41YzAtMS45OSA0LTMgNi0zczYgMS4wMSA2IDNWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRodW1iRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA0aC0yYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWgyVjR6TTIuMTcgMTEuMTJjLS4xMS4yNS0uMTcuNTItLjE3LjhWMTNjMCAxLjEuOSAyIDIgMmg1LjVsLS45MiA0LjY1Yy0uMDUuMjItLjAyLjQ2LjA4LjY2LjIzLjQ1LjUyLjg2Ljg4IDEuMjJMMTAgMjJsNi40MS02LjQxYy4zOC0uMzguNTktLjg5LjU5LTEuNDJWNi4zNEMxNyA1LjA1IDE1Ljk1IDQgMTQuNjYgNGgtOC4xYy0uNzEgMC0xLjM2LjM3LTEuNzIuOTdsLTIuNjcgNi4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGh1bWJVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIwaDJjLjU1IDAgMS0uNDUgMS0xdi05YzAtLjU1LS40NS0xLTEtMUgydjExem0xOS44My03LjEyYy4xMS0uMjUuMTctLjUyLjE3LS44VjExYzAtMS4xLS45LTItMi0yaC01LjVsLjkyLTQuNjVjLjA1LS4yMi4wMi0uNDYtLjA4LS42NmE0LjggNC44IDAgMCAwLS44OC0xLjIyTDE0IDIgNy41OSA4LjQxQzcuMjEgOC43OSA3IDkuMyA3IDkuODN2Ny44NEEyLjM0IDIuMzQgMCAwIDAgOS4zNCAyMGg4LjExYy43IDAgMS4zNi0uMzcgMS43Mi0uOTdsMi42Ni02LjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVuZGVyc3Rvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45MiA3LjAyQzE3LjQ1IDQuMTggMTQuOTcgMiAxMiAyIDkuODIgMiA3LjgzIDMuMTggNi43OCA1LjA2IDQuMDkgNS40MSAyIDcuNzQgMiAxMC41IDIgMTMuNTMgNC40NyAxNiA3LjUgMTZoMTBjMi40OCAwIDQuNS0yLjAyIDQuNS00LjVhNC41IDQuNSAwIDAgMC00LjA4LTQuNDh6TTE0LjggMTdsLTIuOSAzLjMyIDIgMUwxMS41NSAyNGgyLjY1bDIuOS0zLjMyLTItMUwxNy40NSAxN3pNOC44IDE3bC0yLjkgMy4zMiAyIDFMNS41NSAyNEg4LjJsMi45LTMuMzItMi0xTDExLjQ1IDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb3JuYWRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTEgOCAyMyAzSDFsMi44OSA1ek03Ljk1IDE1IDEyIDIybDQuMDUtN3pNMTguOTUgMTBINS4wNWwxLjc0IDNoMTAuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyYW5zZ2VuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMy45MyAxNSAxMiAxNXMtMy41LTEuNTctMy41LTMuNVMxMC4wNyA4IDEyIDh6bTQuNTMuMzggMy45Ny0zLjk2VjdoMlYxaC02djJoMi41OGwtMy45NyAzLjk3QzE0LjIzIDYuMzYgMTMuMTYgNiAxMiA2cy0yLjIzLjM2LTMuMTEuOTdsLS42NS0uNjUgMS40MS0xLjQxLTEuNDEtMS40Mkw2LjgyIDQuOSA0LjkyIDNINy41VjFoLTZ2NmgyVjQuNDJsMS45MSAxLjktMS40MiAxLjQyTDUuNCA5LjE1bDEuNDEtMS40MS42NS42NWMtLjYuODgtLjk2IDEuOTUtLjk2IDMuMTFhNS41IDUuNSAwIDAgMCA0LjUgNS40MVYxOUg5djJoMnYyaDJ2LTJoMnYtMmgtMnYtMi4wOWE1LjUgNS41IDAgMCAwIDMuNTMtOC41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhdmVsRXhwbG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjMgMTYuOWMuNC0uNy43LTEuNS43LTIuNCAwLTIuNS0yLTQuNS00LjUtNC41UzExIDEyIDExIDE0LjVzMiA0LjUgNC41IDQuNWMuOSAwIDEuNy0uMyAyLjQtLjdsMy4yIDMuMiAxLjQtMS40LTMuMi0zLjJ6bS0zLjguMWMtMS40IDAtMi41LTEuMS0yLjUtMi41czEuMS0yLjUgMi41LTIuNSAyLjUgMS4xIDIuNSAyLjUtMS4xIDIuNS0yLjUgMi41ek0xMiAyMHYyQzYuNDggMjIgMiAxNy41MiAyIDEyUzYuNDggMiAxMiAyYzQuODQgMCA4Ljg3IDMuNDQgOS44IDhoLTIuMDdBOCA4IDAgMCAwIDE1IDQuNTlWNWMwIDEuMS0uOSAyLTIgMmgtMnYyYzAgLjU1LS40NSAxLTEgMUg4djJoMnYzSDlsLTQuNzktNC43OUM0LjA4IDEwLjc5IDQgMTEuMzggNCAxMmMwIDQuNDEgMy41OSA4IDggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHN1bmFtaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjY3IDE3LjYzYy0zLjggMi44LTYuMTIuNC02LjY3IDAtLjY2LjQ5LTIuOTIgMi43Ni02LjY3IDBDMy40MyAxOS4wMyAyLjY1IDE5IDIgMTl2MmMxLjE2IDAgMi4zLS4zMiAzLjMzLS45M2E2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDAgNi41MzUgNi41MzUgMCAwIDAgNi42NyAwYzEuMDMuNjEgMi4xNy45MyAzLjMzLjkzdi0yYy0uNjYgMC0xLjUtLjAyLTMuMzMtMS4zN3pNMTkuMzMgMTJIMjJ2LTJoLTIuNjdDMTcuNSAxMCAxNiA4LjUgMTYgNi42N2MwLTEuMDIuMzgtMS43NCAxLjA5LTMuMzQtMS4zNy0uMjEtMi0uMzMtMy4wOS0uMzNDNy4zNiAzIDIuMTUgOC4wMyAyLjAxIDE0LjVsLS4wMSAyYzEuMTYgMCAyLjMtLjMyIDMuMzMtLjkzYTYuNTM1IDYuNTM1IDAgMCAwIDYuNjcgMCA2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDBjMS4wMy42MSAyLjE3LjkzIDMuMzMuOTN2LTJjLS42NiAwLTEuNS0uMDItMy4zMy0xLjM3LTMuOCAyLjgtNi4xMi40LTYuNjcgMC0uOS42Ny0uNTQuNDEtLjkxLjYzLS43LS45NC0xLjA5LTIuMDYtMS4wOS0zLjI2IDAtMi41OCAxLjc3LTQuNzQgNC4yMS01LjMzLS4xMy41MS0uMjEgMS4wMi0uMjEgMS41QzE0IDkuNjEgMTYuMzkgMTIgMTkuMzMgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZhY2NpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNS41SDhWNGguNWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMUg2djEuNUgzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxVjE1YzAgMS4xLjkgMiAyIDJoMXY0bDIgMS41VjE3aDFjMS4xIDAgMi0uOSAyLTJWNy41Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xek05IDlINy4yNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzVIOVYxMkg3LjI1Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NUg5VjE1SDVWNy41aDRWOXptMTAuNSAxLjVWMTBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF2LjVjMCAuNS0xLjUgMS4xNi0xLjUgM1YyMGMwIDEuMS45IDIgMiAyaDRjMS4xIDAgMi0uOSAyLTJ2LTYuNWMwLTEuODQtMS41LTIuNS0xLjUtM3ptLTMgMFYxMGgxdi41YzAgMS42IDEuNSAyIDEuNSAzdi41aC00di0uNWMwLTEgMS41LTEuNCAxLjUtM3pNMTUgMjB2LTEuNWg0VjIwaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWb2xjYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtN2wtMiA1SDZsLTQgOWgyMHpNMTMgMWgydjRoLTJ6TTE2LjEyMSA1LjQ2OCAxOC45NSAyLjY0bDEuNDE0IDEuNDE0LTIuODI5IDIuODI4ek03LjY0IDQuMDVsMS40MTQtMS40MTQgMi44MjggMi44MjktMS40MTQgMS40MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRINkMzLjc5IDQgMiA1Ljc5IDIgOHY4YzAgMi4yMSAxLjc5IDQgNCA0aDEyYzIuMjEgMCA0LTEuNzkgNC00VjhjMC0yLjIxLTEuNzktNC00LTR6bS0xLjg2IDkuNzdjLS4yNC4yLS41Ny4yOC0uODguMkw0LjE1IDExLjI1QzQuNDUgMTAuNTIgNS4xNiAxMCA2IDEwaDEyYy42NyAwIDEuMjYuMzQgMS42My44NGwtMy40OSAyLjkzek02IDZoMTJjMS4xIDAgMiAuOSAyIDJ2LjU1Yy0uNTktLjM0LTEuMjctLjU1LTItLjU1SDZjLS43MyAwLTEuNDEuMjEtMiAuNTVWOGMwLTEuMS45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXRlckRyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy01LjMzIDQuNTUtOCA4LjQ4LTggMTEuOCAwIDQuOTggMy44IDguMiA4IDguMnM4LTMuMjIgOC04LjJjMC0zLjMyLTIuNjctNy4yNS04LTExLjh6TTcuODMgMTRjLjM3IDAgLjY3LjI2Ljc0LjYyLjQxIDIuMjIgMi4yOCAyLjk4IDMuNjQgMi44Ny40My0uMDIuNzkuMzIuNzkuNzUgMCAuNC0uMzIuNzMtLjcyLjc1LTIuMTMuMTMtNC42Mi0xLjA5LTUuMTktNC4xMmEuNzUuNzUgMCAwIDEgLjc0LS44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F2aW5nSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE3YzAgMy4zMS0yLjY5IDYtNiA2di0xLjVjMi40OCAwIDQuNS0yLjAyIDQuNS00LjVIMjN6TTEgN2MwLTMuMzEgMi42OS02IDYtNnYxLjVDNC41MiAyLjUgMi41IDQuNTIgMi41IDdIMXptNy4wMS0yLjY4LTQuNiA0LjZjLTMuMjIgMy4yMi0zLjIyIDguNDUgMCAxMS42N3M4LjQ1IDMuMjIgMTEuNjcgMGw3LjA3LTcuMDdjLjQ5LS40OS40OS0xLjI4IDAtMS43N2ExLjI1IDEuMjUgMCAwIDAtMS43NyAwbC00LjQyIDQuNDItLjcxLS43MSA2LjU0LTYuNTRjLjQ5LS40OS40OS0xLjI4IDAtMS43N3MtMS4yOC0uNDktMS43NyAwbC01LjgzIDUuODMtLjcxLS43MSA2Ljg5LTYuODljLjQ5LS40OS40OS0xLjI4IDAtMS43N3MtMS4yOC0uNDktMS43NyAwbC02Ljg5IDYuODktLjY5LS43IDUuNDgtNS40OGMuNDktLjQ5LjQ5LTEuMjggMC0xLjc3cy0xLjI4LS40OS0xLjc3IDBsLTcuNjIgNy42MmE0LjAwMyA0LjAwMyAwIDAgMS0uMzMgNS4yOGwtLjcxLS43MWEzIDMgMCAwIDAgMC00LjI0bC0uMzUtLjM1IDQuMDctNC4wN2MuNDktLjQ5LjQ5LTEuMjggMC0xLjc3YTEuMjcgMS4yNyAwIDAgMC0xLjc4LjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaGF0c2FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjA1IDQuOTFBOS44MTYgOS44MTYgMCAwIDAgMTIuMDQgMmMtNS40NiAwLTkuOTEgNC40NS05LjkxIDkuOTEgMCAxLjc1LjQ2IDMuNDUgMS4zMiA0Ljk1TDIuMDUgMjJsNS4yNS0xLjM4YzEuNDUuNzkgMy4wOCAxLjIxIDQuNzQgMS4yMSA1LjQ2IDAgOS45MS00LjQ1IDkuOTEtOS45MSAwLTIuNjUtMS4wMy01LjE0LTIuOS03LjAxem0tNy4wMSAxNS4yNGMtMS40OCAwLTIuOTMtLjQtNC4yLTEuMTVsLS4zLS4xOC0zLjEyLjgyLjgzLTMuMDQtLjItLjMxYTguMjY0IDguMjY0IDAgMCAxLTEuMjYtNC4zOGMwLTQuNTQgMy43LTguMjQgOC4yNC04LjI0IDIuMiAwIDQuMjcuODYgNS44MiAyLjQyYTguMTgzIDguMTgzIDAgMCAxIDIuNDEgNS44M2MuMDIgNC41NC0zLjY4IDguMjMtOC4yMiA4LjIzem00LjUyLTYuMTZjLS4yNS0uMTItMS40Ny0uNzItMS42OS0uODEtLjIzLS4wOC0uMzktLjEyLS41Ni4xMi0uMTcuMjUtLjY0LjgxLS43OC45Ny0uMTQuMTctLjI5LjE5LS41NC4wNi0uMjUtLjEyLTEuMDUtLjM5LTEuOTktMS4yMy0uNzQtLjY2LTEuMjMtMS40Ny0xLjM4LTEuNzItLjE0LS4yNS0uMDItLjM4LjExLS41MS4xMS0uMTEuMjUtLjI5LjM3LS40M3MuMTctLjI1LjI1LS40MWMuMDgtLjE3LjA0LS4zMS0uMDItLjQzcy0uNTYtMS4zNC0uNzYtMS44NGMtLjItLjQ4LS40MS0uNDItLjU2LS40M2gtLjQ4Yy0uMTcgMC0uNDMuMDYtLjY2LjMxLS4yMi4yNS0uODYuODUtLjg2IDIuMDcgMCAxLjIyLjg5IDIuNCAxLjAxIDIuNTYuMTIuMTcgMS43NSAyLjY3IDQuMjMgMy43NC41OS4yNiAxLjA1LjQxIDEuNDEuNTIuNTkuMTkgMS4xMy4xNiAxLjU2LjEuNDgtLjA3IDEuNDctLjYgMS42Ny0xLjE4LjIxLS41OC4yMS0xLjA3LjE0LTEuMThzLS4yMi0uMTYtLjQ3LS4yOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2hhdHNob3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41LjY3cy43NCAyLjY1Ljc0IDQuOGMwIDIuMDYtMS4zNSAzLjczLTMuNDEgMy43My0yLjA3IDAtMy42My0xLjY3LTMuNjMtMy43M2wuMDMtLjM2QzUuMjEgNy41MSA0IDEwLjYyIDQgMTRjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOEMyMCA4LjYxIDE3LjQxIDMuOCAxMy41LjY3ek0xMS43MSAxOWMtMS43OCAwLTMuMjItMS40LTMuMjItMy4xNCAwLTEuNjIgMS4wNS0yLjc2IDIuODEtMy4xMiAxLjc3LS4zNiAzLjYtMS4yMSA0LjYyLTIuNTguMzkgMS4yOS41OSAyLjY1LjU5IDQuMDQgMCAyLjY1LTIuMTUgNC44LTQuOCA0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvbWFuMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk0IDguMzFDMTMuNjIgNy41MiAxMi44NSA3IDEyIDdzLTEuNjIuNTItMS45NCAxLjMxTDcgMTZoMy41djZoM3YtNkgxN2wtMy4wNi03LjY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk0IDguMzFDMTMuNjIgNy41MiAxMi44NSA3IDEyIDdzLTEuNjIuNTItMS45NCAxLjMxTDcgMTZoM3Y2aDR2LTZoM2wtMy4wNi03LjY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VQcmVtaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42OCAxMy42OSAxMiAxMS45M2wyLjMxIDEuNzYtLjg4LTIuODVMMTUuNzUgOWgtMi44NEwxMiA2LjE5IDExLjA5IDlIOC4yNWwyLjMxIDEuODQtLjg4IDIuODV6TTIwIDEwYzAtNC40Mi0zLjU4LTgtOC04cy04IDMuNTgtOCA4YzAgMi4wMy43NiAzLjg3IDIgNS4yOFYyM2w2LTIgNiAydi03LjcyQTcuOTYgNy45NiAwIDAgMCAyMCAxMHptLTgtNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02IDIuNjktNiA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrQm94T3V0bGluZUJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hlY2tCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJWNWEyIDIgMCAwIDAtMi0yem0tOSAxNC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluZGV0ZXJtaW5hdGVDaGVja0JveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMEg3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhZGlvQnV0dG9uQ2hlY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYWRpb0J1dHRvblVuY2hlY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFyQm9yZGVyUHVycGxlNTAwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA4Ljg5Ljk0IDMuMTFoMi44MmwtMi4yNyAxLjYyLjkzIDMuMDFMMTIgMTQuNzlsLTIuNDIgMS44NC45My0zLjAxTDguMjQgMTJoMi44MkwxMiA4Ljg5TTEyIDJsLTIuNDIgOEgybDYuMTcgNC40MUw1LjgzIDIyIDEyIDE3LjMxIDE4LjE4IDIybC0yLjM1LTcuNTlMMjIgMTBoLTcuNThMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhckJvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA5LjI0LTcuMTktLjYyTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yNyAxOC4xOCAyMWwtMS42My03LjAzTDIyIDkuMjR6TTEyIDE1LjRWNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Rhck91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhclB1cnBsZTUwMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgOC44OS45NCAzLjExaDIuODJsLTIuMjcgMS42Mi45MyAzLjAxTDEyIDE0Ljc5bC0yLjQyIDEuODQuOTMtMy4wMUw4LjI0IDEyaDIuODJMMTIgOC44OU0xMiAybC0yLjQyIDhIMmw2LjE3IDQuNDFMNS44MyAyMiAxMiAxNy4zMSAxOC4xOCAyMmwtMi4zNS03LjU5TDIyIDEwaC03LjU4TDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTcuMjcgMTguMTggMjFsLTEuNjQtNy4wM0wyMiA5LjI0bC03LjE5LS42MUwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvZ2dsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWgxMGMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXpNNyAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvZ2dsZU9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDEwYzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01em0wIDhjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yNSAxM2ExLjI1IDEuMjUgMCAxIDEtMi41IDAgMS4yNSAxLjI1IDAgMCAxIDIuNSAwek0xNSAxMS43NWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41em03IC4yNWMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTIgNi40OCAyIDEyIDJzMTAgNC40OCAxMCAxMHpNMTAuNjYgNC4xMkMxMi4wNiA2LjQ0IDE0LjYgOCAxNy41IDhjLjQ2IDAgLjkxLS4wNSAxLjM0LS4xMkMxNy40NCA1LjU2IDE0LjkgNCAxMiA0Yy0uNDYgMC0uOTEuMDUtMS4zNC4xMnpNNC40MiA5LjQ3YTguMDQ2IDguMDQ2IDAgMCAwIDMuNjYtNC40NCA4LjA0NiA4LjA0NiAwIDAgMC0zLjY2IDQuNDR6TTIwIDEyYzAtLjc4LS4xMi0xLjUzLS4zMy0yLjI0LS43LjE1LTEuNDIuMjQtMi4xNy4yNGExMCAxMCAwIDAgMS03Ljc2LTMuNjlBMTAuMDE2IDEwLjAxNiAwIDAgMSA0IDExLjg2Yy4wMS4wNCAwIC4wOSAwIC4xNCAwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5MjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTd2My42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxN0g3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM1YxN2gxMFY1LjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5MzAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjE1aDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTV2NS42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5NTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjEzaDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTN2Ny42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxM0g3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5NjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjExaDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTF2OS42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxMUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5ODAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjloMTBWNS4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA5djExLjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjlIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTkwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM1Y4aDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOHYxMi42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y4SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzIwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMHYtM0g3djMuNjdDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWMTdoLTQuNEwxMSAyMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM1YxN2g0di0yLjVIOUwxMyA3djUuNWgyTDEyLjYgMTdIMTdWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzMwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjkuMTdoMkwxMyA3djUuNWgybC0xLjA3IDJIMTdWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIwdi01LjVIN3Y2LjE3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjE0LjVoLTMuMDdMMTEgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzUwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC40NyAxMy41IDExIDIwdi01LjVIOWwuNTMtMUg3djcuMTdDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWMTMuNWgtMi41M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3Y4LjE3aDIuNTNMMTMgN3Y1LjVoMmwtLjUzIDFIMTdWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzYwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjExaDMuODdMMTMgN3Y0aDRWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEyLjVoMkwxMSAyMHYtNS41SDlsMS44Ny0zLjVIN3Y5LjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjExaC00djEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUNoYXJnaW5nODAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzNWOWg0LjkzTDEzIDd2Mmg0VjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMi41aDJMMTEgMjB2LTUuNUg5TDExLjkzIDlIN3YxMS42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y5aC00djMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUNoYXJnaW5nOTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzNWOGg1LjQ3TDEzIDd2MWg0VjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMi41aDJMMTEgMjB2LTUuNUg5TDEyLjQ3IDhIN3YxMi42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y4aC00djQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXIxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIgMjJoMjBWMkwyIDIyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMiAyIDIyaDEwVjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhcjJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMiAyMmgyMFYyTDIgMjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwIDIgMjJoMTJWMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyM0JhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0yIDIyaDIwVjJMMiAyMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNyAyIDIyaDE1Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjIgOFYyTDIgMjJoMTZWOGg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMHY4aDJ2LThoLTJ6bS04IDEyVjEyTDIgMjJoMTB6bTggMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjIgOFYyTDIgMjJoMTZWOGg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAyMlYxMEwyIDIyaDEyem02LTEydjhoMnYtOGgtMnptMCAxMmgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjIgOFYyTDIgMjJoMTZWOGg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyMlY2TDIgMjJoMTZ6bTItMTJ2OGgydi04aC0yem0wIDEyaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaTFCYXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjUgMTQuNWMwLTIuOCAyLjItNSA1LTUgLjM2IDAgLjcxLjA0IDEuMDUuMTFMMjMuNjQgN2MtLjQ1LS4zNC00LjkzLTQtMTEuNjQtNEM1LjI4IDMgLjgxIDYuNjYuMzYgN0wxMiAyMS41bDMuNS00LjM2VjE0LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTQuNWMwLS4yMy4wNC0uNDYuMDctLjY4LS45Mi0uNDMtMi4xNC0uODItMy41Ny0uODItMyAwLTUuMSAxLjctNS4zIDEuOWw1LjMgNi42IDMuNS00LjM2VjE0LjV6TTIzIDE2di0xLjVjMC0xLjQtMS4xLTIuNS0yLjUtMi41UzE4IDEzLjEgMTggMTQuNVYxNmMtLjUgMC0xIC41LTEgMXY0YzAgLjUuNSAxIDEgMWg1Yy41IDAgMS0uNSAxLTF2LTRjMC0uNS0uNS0xLTEtMXptLTEgMGgtM3YtMS41YzAtLjguNy0xLjUgMS41LTEuNXMxLjUuNyAxLjUgMS41VjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xMi4wMSAyMS40OSAyMy42NCA3Yy0uNDUtLjM0LTQuOTMtNC0xMS42NC00QzUuMjggMyAuODEgNi42Ni4zNiA3bDExLjYzIDE0LjQ5LjAxLjAxLjAxLS4wMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi42NyAxNC44NiAxMiAyMS40OXYuMDFsLjAxLS4wMSA1LjMzLTYuNjNDMTcuMDYgMTQuNjUgMTUuMDMgMTMgMTIgMTNzLTUuMDYgMS42NS01LjMzIDEuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkyQmFyTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS41IDE0LjVjMC0yLjggMi4yLTUgNS01IC4zNiAwIC43MS4wNCAxLjA1LjExTDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdMMTIgMjEuNWwzLjUtNC4zNlYxNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE0LjVjMC0xLjM0LjUxLTIuNTMgMS4zNC0zLjQyQzE1LjYyIDEwLjUxIDEzLjk4IDEwIDEyIDEwYy00LjEgMC02LjggMi4yLTcuMiAyLjVsNy4yIDkgMy41LTQuMzhWMTQuNXpNMjMgMTZ2LTEuNWMwLTEuNC0xLjEtMi41LTIuNS0yLjVTMTggMTMuMSAxOCAxNC41VjE2Yy0uNSAwLTEgLjUtMSAxdjRjMCAuNS41IDEgMSAxaDVjLjUgMCAxLS41IDEtMXYtNGMwLS41LS41LTEtMS0xem0tMSAwaC0zdi0xLjVjMC0uOC43LTEuNSAxLjUtMS41czEuNS43IDEuNSAxLjVWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdMMTIgMjEuNSAyMy42NCA3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljc5IDEyLjUyIDEyIDIxLjVsNy4yMS04Ljk5QzE4Ljg1IDEyLjI0IDE2LjEgMTAgMTIgMTBzLTYuODUgMi4yNC03LjIxIDIuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkzQmFyTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS41IDE0LjVjMC0yLjggMi4yLTUgNS01IC4zNiAwIC43MS4wNCAxLjA1LjExTDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdMMTIgMjEuNWwzLjUtNC4zNlYxNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxNnYtMS41YzAtMS40LTEuMS0yLjUtMi41LTIuNVMxOCAxMy4xIDE4IDE0LjVWMTZjLS41IDAtMSAuNS0xIDF2NGMwIC41LjUgMSAxIDFoNWMuNSAwIDEtLjUgMS0xdi00YzAtLjUtLjUtMS0xLTF6bS0xIDBoLTN2LTEuNWMwLS44LjctMS41IDEuNS0xLjVzMS41LjcgMS41IDEuNVYxNnptLTYuNS0xLjVhNC45MiA0LjkyIDAgMCAxIDMuMjctNC42OEMxNy4yOSA4Ljk4IDE0Ljk0IDggMTIgOGMtNC44MSAwLTguMDQgMi42Mi04LjQ3IDIuOTVMMTIgMjEuNWwzLjUtNC4zNlYxNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpM0JhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0yMy42NCA3Yy0uNDUtLjM0LTQuOTMtNC0xMS42NC00QzUuMjggMyAuODEgNi42Ni4zNiA3TDEyIDIxLjUgMjMuNjQgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41MyAxMC45NSAxMiAyMS41bDguNDctMTAuNTVDMjAuMDQgMTAuNjIgMTYuODEgOCAxMiA4cy04LjA0IDIuNjItOC40NyAyLjk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjF2LTloOC45OUwyNCA4Ljk4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS41OSAxNC0yLjA5IDIuMDktLjMtLjNMMTUuNDEgMTQgMTQgMTUuNDFsMS43OSAxLjc5LjMuM0wxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaUNvbm5lY3RlZE5vSW50ZXJuZXQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTEyIDEyaDguOTlMMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNi4zNSA2LjM2QTcuOTMyIDcuOTMyIDAgMCAxIDEyIDEzdi0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMXYtOGMtMi4yMSAwLTQuMi44OS01LjY1IDIuMzRMMTIgMjF6bTktNS41OUwxOS41OSAxNGwtMi4wOSAyLjA5TDE1LjQxIDE0IDE0IDE1LjQxbDIuMDkgMi4wOUwxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaUNvbm5lY3RlZE5vSW50ZXJuZXQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE4LjMxIDEyaDIuNjdMMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNC4yMyA0LjI0QTEwLjk2IDEwLjk2IDAgMCAxIDEyIDEwYzIuMzUgMCA0LjUyLjc0IDYuMzEgMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTBjLTMuMDMgMC01Ljc4IDEuMjMtNy43NyAzLjIyTDEyIDIxdi05aDYuMzJjLTEuOC0xLjI2LTMuOTctMi02LjMyLTJ6bTkgNS40MUwxOS41OSAxNGwtMi4wOSAyLjA5TDE1LjQxIDE0IDE0IDE1LjQxbDIuMDkgMi4wOUwxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaUNvbm5lY3RlZE5vSW50ZXJuZXQzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIxLjE4IDExLjggMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsMi44MiAyLjgyQzUuMTcgOS40NSA4LjQxIDggMTIgOHM2LjgzIDEuNDUgOS4xOCAzLjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE4IDExLjhDMTguODMgOS40NSAxNS41OSA4IDEyIDhzLTYuODMgMS40NS05LjE4IDMuOEwxMiAyMXYtOWg4Ljk5bC4xOS0uMnpNMTkuNTkgMTRsLTIuMDkgMi4wOUwxNS40MSAxNCAxNCAxNS40MWwyLjA5IDIuMDlMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDEgMTkuNTkgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXIxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3LjY1IDE1LjM0IDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4bDYuMzUgNi4zNkM3LjggMTMuODkgOS43OSAxMyAxMiAxM3M0LjIuODkgNS42NSAyLjM0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42NSAxNS4zNEMxNi4yIDEzLjg5IDE0LjIxIDEzIDEyIDEzcy00LjIuODktNS42NSAyLjM0TDEyIDIxbDUuNjUtNS42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhcjJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTkuNzcgMTMuMjIgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNC4yMyA0LjI0QzYuMjIgMTEuMjMgOC45NyAxMCAxMiAxMHM1Ljc4IDEuMjMgNy43NyAzLjIyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43NyAxMy4yMkMxNy43OCAxMS4yMyAxNS4wMyAxMCAxMiAxMHMtNS43OCAxLjIzLTcuNzcgMy4yMkwxMiAyMWw3Ljc3LTcuNzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXIzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIxLjE4IDExLjggMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsMi44MiAyLjgyQzUuMTcgOS40NSA4LjQxIDggMTIgOHM2LjgzIDEuNDUgOS4xOCAzLjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE4IDExLjhDMTguODMgOS40NSAxNS41OSA4IDEyIDhzLTYuODMgMS40NS05LjE4IDMuOEwxMiAyMWw5LjE4LTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhckNvbm5lY3RlZE5vSW50ZXJuZXQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDE0Ljc2VjhoNS45MkMxOS45NyA1LjUxIDE2LjE2IDQgMTIgNCA3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4bDYuMzUgNi4zNkE3Ljk1IDcuOTUgMCAwIDEgMTIgMTNjMS44OSAwIDMuNjMuNjYgNSAxLjc2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjM1IDE1LjM0IDEyIDIxbDUtNS4wMXYtMS4yM0E3Ljk2MyA3Ljk2MyAwIDAgMCAxMiAxM2MtMi4yMSAwLTQuMi44OS01LjY1IDIuMzR6TTE5IDE4aDJ2MmgtMnpNMTkgMTBoMnY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyQ29ubmVjdGVkTm9JbnRlcm5ldDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgMTEuMjFWOGg1LjkyQzE5Ljk3IDUuNTEgMTYuMTYgNCAxMiA0IDcuMzEgNCAzLjA3IDUuOSAwIDguOThsNC4yMyA0LjI0QTEwLjk2IDEwLjk2IDAgMCAxIDE3IDExLjIxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjIzIDEzLjIyIDEyIDIxbDUtNS4wMXYtNC43OGExMC45NiAxMC45NiAwIDAgMC0xMi43NyAyLjAxek0xOSAxOGgydjJoLTJ6TTE5IDEwaDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhckNvbm5lY3RlZE5vSW50ZXJuZXQzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDlWOGg1LjkyQzE5Ljk3IDUuNTEgMTYuMTYgNCAxMiA0IDcuMzEgNCAzLjA3IDUuOSAwIDguOThsMi44MiAyLjgyQTEyLjkzIDEyLjkzIDAgMCAxIDEyIDhjMS43NyAwIDMuNDYuMzYgNSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgyIDExLjggMTIgMjFsNS01LjAxVjljLTEuNTQtLjY0LTMuMjMtMS01LTEtMy41OSAwLTYuODMgMS40NS05LjE4IDMuOHpNMTkgMThoMnYyaC0yek0xOSAxMGgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXJDb25uZWN0ZWROb0ludGVybmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOGgydjJoLTJ6TTE5IDEwaDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOGg1LjkyQzE5Ljk3IDUuNTEgMTYuMTYgNCAxMiA0IDcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjFsNS01LjAxVjh6XCIsXCJvcGFjaXR5XCI6XCIuM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyTm90Q29ubmVjdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41MiAxNS4xNmMuNDEtLjczIDEuMTgtMS4xNiAxLjYzLTEuOC40OC0uNjguMjEtMS45NC0xLjE0LTEuOTQtLjg4IDAtMS4zMi42Ny0xLjUgMS4yM2wtMS4zNy0uNTdDMTYuNTEgMTAuOTYgMTcuNTIgMTAgMTkgMTBjMS4yMyAwIDIuMDguNTYgMi41MSAxLjI2LjM3LjYuNTggMS43My4wMSAyLjU3LS42My45My0xLjIzIDEuMjEtMS41NiAxLjgxLS4xMy4yNC0uMTguNC0uMTggMS4xOGgtMS41MmMwLS40MS0uMDctMS4wOC4yNi0xLjY2em0tLjU3IDMuNzljMC0uNTkuNDctMS4wNCAxLjA1LTEuMDQuNTkgMCAxLjA0LjQ1IDEuMDQgMS4wNCAwIC41OC0uNDQgMS4wNS0xLjA0IDEuMDUtLjU4IDAtMS4wNS0uNDctMS4wNS0xLjA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE0IDEzYzAtMi43NiAyLjI0LTUgNS01IDEuNjMgMCAzLjA3Ljc5IDMuOTggMkwyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMWw0LjAxLTQuMDJDMTQuOCAxNi4wNyAxNCAxNC42MyAxNCAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUNhbGxpbmcxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE2LjQ5IDQuNWMxLjc5IDAgMy40Mi43MyA0LjU5IDEuOTFsMS4wNi0xLjA2QTcuOTQgNy45NCAwIDAgMCAxNi40OSAzYy0yLjIxIDAtNC4yMS45LTUuNjYgMi4zNGwxLjA2IDEuMDZhNi41NDUgNi41NDUgMCAwIDEgNC42LTEuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNi40OSA2Yy0xLjM4IDAtMi42My41Ni0zLjU0IDEuNDZsMS4wNiAxLjA2Yy42My0uNjMgMS41MS0xLjAzIDIuNDctMS4wM3MxLjg0LjM5IDIuNDcgMS4wM2wxLjA2LTEuMDZBNC45NCA0Ljk0IDAgMCAwIDE2LjQ5IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ5IDljLS41NSAwLTEuMDUuMjItMS40MS41OUwxNi40OSAxMWwxLjQxLTEuNDFjLS4zNi0uMzctLjg2LS41OS0xLjQxLS41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTcuODNjMS4yOS41NCAyLjYzLjg5IDQgMS4wN3YtMi4yM2wtMi4zNS0uNDdMMTUgMTcuODN6TTcuMzMgNUg1LjFjLjE4IDEuMzcuNTMgMi43IDEuMDcgNEw3LjggNy4zNSA3LjMzIDV6XCIsXCJvcGFjaXR5XCI6XCIuM1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4yIDE0Ljg3LTMuNjctLjczYy0uNS0uMS0uODMuMi0uOS4yN2wtMi41MiAyLjVjLTIuNS0xLjQzLTQuNTctMy41LTYtNmwyLjUtMi41MmMuMjMtLjI0LjMzLS41Ny4yNy0uOUw5LjEzIDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhINGMtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjA1IDUuNiAyLjQzIDcuOTcgMS41OCAyLjczIDMuODUgNC45OSA2LjU3IDYuNTcgMi4zNyAxLjM3IDUuMDggMi4yNiA3Ljk3IDIuNDMuNTUuMDMgMS4wMy0uNDMgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4ek01LjEgNWgyLjIzbC40NyAyLjM1TDYuMTcgOWMtLjU0LTEuMy0uOS0yLjYzLTEuMDctNHpNMTkgMTguOWMtMS4zNy0uMTgtMi43LS41My00LTEuMDdsMS42NS0xLjYzIDIuMzUuNDd2Mi4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUNhbGxpbmcyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE2LjQ5IDQuNWMxLjc5IDAgMy40Mi43MyA0LjU5IDEuOTFsMS4wNi0xLjA2QTcuOTQgNy45NCAwIDAgMCAxNi40OSAzYy0yLjIxIDAtNC4yMS45LTUuNjYgMi4zNGwxLjA2IDEuMDZhNi41NDUgNi41NDUgMCAwIDEgNC42LTEuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgNmMtMS4zOCAwLTIuNjMuNTYtMy41NCAxLjQ2bDEuMDYgMS4wNmMuNjMtLjYzIDEuNTEtMS4wMyAyLjQ3LTEuMDNzMS44NC4zOSAyLjQ3IDEuMDNsMS4wNi0xLjA2QTQuOTQgNC45NCAwIDAgMCAxNi40OSA2ek0xNi40OSA5Yy0uNTUgMC0xLjA1LjIyLTEuNDEuNTlMMTYuNDkgMTFsMS40MS0xLjQxYy0uMzYtLjM3LS44Ni0uNTktMS40MS0uNTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE3LjgzYzEuMjkuNTQgMi42My44OSA0IDEuMDd2LTIuMjNsLTIuMzUtLjQ3TDE1IDE3Ljgzek03LjMzIDVINS4xYy4xOCAxLjM3LjUzIDIuNyAxLjA3IDRMNy44IDcuMzUgNy4zMyA1elwiLFwib3BhY2l0eVwiOlwiLjNcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMiAxNC44Ny0zLjY3LS43M2MtLjUtLjEtLjgzLjItLjkuMjdsLTIuNTIgMi41Yy0yLjUtMS40My00LjU3LTMuNS02LTZsMi41LTIuNTJjLjIzLS4yNC4zMy0uNTcuMjctLjlMOS4xMyAzLjhjLS4wOS0uNDYtLjUtLjgtLjk4LS44SDRjLS41NiAwLTEuMDMuNDctMSAxLjAzLjE3IDIuODkgMS4wNSA1LjYgMi40MyA3Ljk3IDEuNTggMi43MyAzLjg1IDQuOTkgNi41NyA2LjU3IDIuMzcgMS4zNyA1LjA4IDIuMjYgNy45NyAyLjQzLjU1LjAzIDEuMDMtLjQzIDEuMDMtMXYtNC4xNWMwLS40OC0uMzQtLjg5LS44LS45OHpNNS4xIDVoMi4yM2wuNDcgMi4zNUw2LjE3IDljLS41NC0xLjMtLjktMi42My0xLjA3LTR6TTE5IDE4LjljLTEuMzctLjE4LTIuNy0uNTMtNC0xLjA3bDEuNjUtMS42MyAyLjM1LjQ3djIuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxMjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE1SDUuNXYtNC41SDRWOWgzdjZ6bTYuNS0xLjVoLTN2LTFoMmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xSDl2MS41aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxVjE1aDQuNXYtMS41em02IC41di00YzAtLjU1LS40NS0xLTEtMUgxNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1aDMuNWMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzZFJvdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUzIDIxLjQ4QTEwLjQ4NyAxMC40ODcgMCAwIDEgMS41NiAxM0guMDZjLjUxIDYuMTYgNS42NiAxMSAxMS45NSAxMWwuNjYtLjAzLTMuODEtMy44MS0xLjMzIDEuMzJ6bS44OS02LjUyYy0uMTkgMC0uMzctLjAzLS41Mi0uMDhhMS4wNyAxLjA3IDAgMCAxLS40LS4yNGMtLjExLS4xLS4yLS4yMi0uMjYtLjM3LS4wNi0uMTQtLjA5LS4zLS4wOS0uNDdoLTEuM2MwIC4zNi4wNy42OC4yMS45NS4xNC4yNy4zMy41LjU2LjY5LjI0LjE4LjUxLjMyLjgyLjQxLjMuMS42Mi4xNS45Ni4xNS4zNyAwIC43Mi0uMDUgMS4wMy0uMTUuMzItLjEuNi0uMjUuODMtLjQ0cy40Mi0uNDMuNTUtLjcyLjItLjYxLjItLjk3YzAtLjE5LS4wMi0uMzgtLjA3LS41NmExLjY3IDEuNjcgMCAwIDAtLjIzLS41MWMtLjEtLjE2LS4yNC0uMy0uNC0uNDMtLjE3LS4xMy0uMzctLjIzLS42MS0uMzFhMi4wOTggMi4wOTggMCAwIDAgLjg5LS43NWMuMS0uMTUuMTctLjMuMjItLjQ2cy4wNy0uMzIuMDctLjQ4YzAtLjM2LS4wNi0uNjgtLjE4LS45NnMtLjI5LS41MS0uNTEtLjY5Yy0uMi0uMTktLjQ3LS4zMy0uNzctLjQzQzkuMTEgOC4wNSA4Ljc3IDggOC40IDhjLS4zNiAwLS42OS4wNS0xIC4xNi0uMy4xMS0uNTcuMjYtLjc5LjQ1LS4yMS4xOS0uMzguNDEtLjUxLjY3LS4xMi4yNi0uMTguNTQtLjE4Ljg1aDEuM2MwLS4xNy4wMy0uMzIuMDktLjQ1cy4xNC0uMjUuMjUtLjM0LjIzLS4xNy4zOC0uMjIuMy0uMDguNDgtLjA4Yy40IDAgLjcuMS44OS4zMS4xOS4yLjI5LjQ5LjI5Ljg2IDAgLjE4LS4wMy4zNC0uMDguNDlzLS4xNC4yNy0uMjUuMzdjLS4xMS4xLS4yNS4xOC0uNDEuMjQtLjE2LjA2LS4zNi4wOS0uNTguMDloLS43N3YxLjAzaC43N2MuMjIgMCAuNDIuMDIuNi4wN3MuMzMuMTMuNDUuMjNjLjEyLjExLjIyLjI0LjI5LjRzLjEuMzUuMS41N2MwIC40MS0uMTIuNzItLjM1LjkzLS4yMy4yMy0uNTUuMzMtLjk1LjMzem04LjU1LTUuOTJjLS4zMi0uMzMtLjctLjU5LTEuMTQtLjc3LS40NC0uMTgtLjkzLS4yNy0xLjQ3LS4yN0gxMnY4aDIuM2MuNTUgMCAxLjA2LS4wOSAxLjUxLS4yN3MuODQtLjQzIDEuMTYtLjc2Yy4zMi0uMzMuNTctLjczLjc0LTEuMTkuMTctLjQ3LjI2LS45OS4yNi0xLjU3di0uNGMwLS41OC0uMDktMS4xLS4yNi0xLjU3cy0uNDItLjg3LS43NC0xLjJ6bS0uMzkgMy4xNmMwIC40Mi0uMDUuNzktLjE0IDEuMTMtLjEuMzMtLjI0LjYyLS40My44NS0uMTkuMjMtLjQzLjQxLS43MS41My0uMjkuMTItLjYyLjE4LS45OS4xOGgtLjkxVjkuMTJoLjk3Yy43MiAwIDEuMjcuMjMgMS42NC42OS4zOC40Ni41NyAxLjEyLjU3IDEuOTl2LjR6TTEyLjAxIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMzYzMuMjcgMS41NSA1LjYxIDQuNzIgNS45NiA4LjQ4aDEuNUMyMy40NSA0Ljg0IDE4LjMgMCAxMi4wMSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWJjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTFoLTEuNXYtLjVoLTJ2M2gyVjEzSDIxdjFjMCAuNTUtLjQ1IDEtMSAxaC0zYy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MXpNOCAxMHY1SDYuNXYtMS41aC0yVjE1SDN2LTVjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF6bS0xLjUuNWgtMlYxMmgydi0xLjV6bTcgMS41Yy41NSAwIDEgLjQ1IDEgMXYxYzAgLjU1LS40NSAxLTEgMWgtNFY5aDRjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek0xMSAxMC41di43NWgydi0uNzVoLTJ6bTIgMi4yNWgtMnYuNzVoMnYtLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzaWJpbGl0eU5ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSA2Yy0yLjYxLjctNS42NyAxLTguNSAxcy01Ljg5LS4zLTguNS0xTDMgOGMxLjg2LjUgNCAuODMgNiAxdjEzaDJ2LTZoMnY2aDJWOWMyLS4xNyA0LjE0LS41IDYtMWwtLjUtMnpNMTIgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2Nlc3NpYmlsaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3aC02djEzaC0ydi02aC0ydjZIOVY5SDNWN2gxOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzaWJsZUZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCI0LjU0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE3aC0yYzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zIDEuMzUtMyAzLTN2LTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNXptMy0zLjVoLTEuODZsMS42Ny0zLjY3QzE4LjQyIDguNSAxNy40NCA3IDE1Ljk2IDdoLTUuMmMtLjgxIDAtMS41NC40Ny0xLjg3IDEuMkw4LjIyIDEwbDEuOTIuNTMuNjUtMS41M0gxM2wtMS44MyA0LjFjLS42IDEuMzMuMzkgMi45IDEuODUgMi45SDE4djVoMnYtNS41YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTN2LTJjLTEuNTQuMDItMy4wOS0uNzUtNC4wNy0xLjgzbC0xLjI5LTEuNDNjLS4xNy0uMTktLjM4LS4zNC0uNjEtLjQ1LS4wMSAwLS4wMS0uMDEtLjAyLS4wMUgxM2MtLjM1LS4yLS43NS0uMy0xLjE5LS4yNkMxMC43NiA3LjExIDEwIDguMDQgMTAgOS4wOVYxNWMwIDEuMS45IDIgMiAyaDV2NWgydi01LjVjMC0xLjEtLjktMi0yLTJoLTN2LTMuNDVjMS4yOSAxLjA3IDMuMjUgMS45NCA1IDEuOTV6bS05IDdjLTEuNjYgMC0zLTEuMzQtMy0zIDAtMS4zMS44NC0yLjQxIDItMi44M1YxMi4xYTUgNSAwIDEgMCA1LjkgNS45aC0yLjA3Yy0uNDEgMS4xNi0xLjUyIDItMi44MyAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjb3VudEJhbGFuY2VXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDcuMjhWNWMwLTEuMS0uOS0yLTItMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtMi4yOEEyIDIgMCAwIDAgMjIgMTVWOWEyIDIgMCAwIDAtMS0xLjcyek0yMCA5djZoLTdWOWg3ek01IDE5VjVoMTR2MmgtNmMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDZ2Mkg1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjb3VudEJhbGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxMGgtMnY3aDJ2LTd6bTYgMGgtMnY3aDJ2LTd6bTguNSA5SDJ2MmgxOXYtMnptLTIuNS05aC0ydjdoMnYtN3ptLTctNi43NEwxNi43MSA2SDYuMjlsNS4yMS0yLjc0bTAtMi4yNkwyIDZ2MmgxOVY2bC05LjUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY291bnRCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTIgMTZIN3YtLjI0QzguNDIgMTcuNjIgMTAuMTYgMTcgMTIgMTdzMy41OC42MiA1IDEuNzZWMTl6bTItMS4xNEMxNy4yIDE2LjA5IDE0LjczIDE1IDEyIDE1cy01LjIgMS4wOS03IDIuODZWNWgxNHYxMi44NnpNMTIgMTNjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTMuOTMgNiAxMiA2IDguNSA3LjU3IDguNSA5LjUgMTAuMDcgMTMgMTIgMTN6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNVMxMi44MyAxMSAxMiAxMXMtMS41LS42Ny0xLjUtMS41UzExLjE3IDggMTIgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY291bnRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek03LjM1IDE4LjVDOC42NiAxNy41NiAxMC4yNiAxNyAxMiAxN3MzLjM0LjU2IDQuNjUgMS41Yy0xLjMxLjk0LTIuOTEgMS41LTQuNjUgMS41cy0zLjM0LS41Ni00LjY1LTEuNXptMTAuNzktMS4zOGE5Ljk0NyA5Ljk0NyAwIDAgMC0xMi4yOCAwQTcuOTU3IDcuOTU3IDAgMCAxIDQgMTJjMC00LjQyIDMuNTgtOCA4LThzOCAzLjU4IDggOGMwIDEuOTUtLjcgMy43My0xLjg2IDUuMTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjLTEuOTMgMC0zLjUgMS41Ny0zLjUgMy41UzEwLjA3IDEzIDEyIDEzczMuNS0xLjU3IDMuNS0zLjVTMTMuOTMgNiAxMiA2em0wIDVjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMS4xNyA4IDEyIDhzMS41LjY3IDEuNSAxLjVTMTIuODMgMTEgMTIgMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTB2LTJINHYtNmgxOFY2YzAtMS4xMS0uODktMi0yLTJ6bTAgNEg0VjZoMTZ2MnptNCA5djJoLTN2M2gtMnYtM2gtM3YtMmgzdi0zaDJ2M2gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDUuNSA2IDQuNXYxYy43IDAgMS4zNy4xIDIgLjI5VjlsLTgtNi04IDZ2MTJoNy42OGMtLjMtLjYyLS41LTEuMjktLjYtMkg2di05bDYtNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTMgNS41aC0yLjVWMjFoLTF2LTIuNUgxNXYtMWgyLjVWMTVoMXYyLjVIMjF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOWgyVjZoM1Y0aC0zVjFoLTJ2M0g4djJoM3Yzem0tNCA5Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTguOS01aDcuNDVjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuODYtNy4wMUwxOS40MiA0bC0zLjg3IDdIOC41M0w0LjI3IDJIMXYyaDJsMy42IDcuNTktMS4zNSAyLjQ0QzQuNTIgMTUuMzcgNS40OCAxNyA3IDE3aDEydi0ySDdsMS4xLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRUYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNS4xOCAxMC41OSAxNi42bC00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44MyAxMC0xMEwyMiA1LjE4ek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOGMxLjU3IDAgMy4wNC40NiA0LjI4IDEuMjVsMS40NS0xLjQ1QTEwLjAyIDEwLjAyIDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBjMS43MyAwIDMuMzYtLjQ0IDQuNzgtMS4yMmwtMS41LTEuNWMtMSAuNDYtMi4xMS43Mi0zLjI4Ljcyem03LTVoLTN2MmgzdjNoMnYtM2gzdi0yaC0zdi0zaC0ydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRUb0RyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFjLjE3IDAgLjMzLjAxLjQ5LjAyTDE1IDNIOWw1LjY4IDkuODRBNS45ODYgNS45ODYgMCAwIDEgMTkgMTF6TTguMTUgNC41MiAyIDE1LjUgNSAyMWw2LjMzLTEwLjk3ek0xMy4yIDE1LjVIOS45TDYuNzMgMjFoNy44MUE1LjkzIDUuOTMgMCAwIDEgMTMgMTdjMC0uNTIuMDctMS4wMi4yLTEuNXpNMjAgMTZ2LTNoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRjaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDV2MmgtM3YzaC0yVjdoLTNWNWgzVjJoMnYzaDN6bS0zIDE0SDVWNWg2VjNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNmgtMnY2em0tNC02djRoMnYtNGgtMnptLTQgNGgyVjloLTJ2OHptLTIgMHYtNkg3djZoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkbWluUGFuZWxTZXR0aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxN1wiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuMTJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTcuNWMtLjczIDAtMi4xOS4zNi0yLjI0IDEuMDguNS43MSAxLjMyIDEuMTcgMi4yNCAxLjE3czEuNzQtLjQ2IDIuMjQtMS4xN2MtLjA1LS43Mi0xLjUxLTEuMDgtMi4yNC0xLjA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMS4wOVY2LjI3TDEwLjUgMyAzIDYuMjd2NC45MWMwIDQuNTQgMy4yIDguNzkgNy41IDkuODIuNTUtLjEzIDEuMDgtLjMyIDEuNi0uNTVBNS45NzMgNS45NzMgMCAwIDAgMTcgMjNjMy4zMSAwIDYtMi42OSA2LTYgMC0yLjk3LTIuMTYtNS40My01LTUuOTF6TTExIDE3YzAgLjU2LjA4IDEuMTEuMjMgMS42Mi0uMjQuMTEtLjQ4LjIyLS43My4zLTMuMTctMS01LjUtNC4yNC01LjUtNy43NHYtMy42bDUuNS0yLjQgNS41IDIuNHYzLjUxYy0yLjg0LjQ4LTUgMi45NC01IDUuOTF6bTYgNGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkc0NsaWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNzEgMTcuOTlBNS45OTMgNS45OTMgMCAwIDEgNiAxMmMwLTMuMzEgMi42OS02IDYtNiAzLjIyIDAgNS44NCAyLjUzIDUuOTkgNS43MWwtMi4xLS42M2EzLjk5OSAzLjk5OSAwIDEgMC00LjgxIDQuODFsLjYzIDIuMXpNMjIgMTJjMCAuMy0uMDEuNi0uMDQuOWwtMS45Ny0uNTljLjAxLS4xLjAxLS4yMS4wMS0uMzEgMC00LjQyLTMuNTgtOC04LThzLTggMy41OC04IDggMy41OCA4IDggOGMuMSAwIC4yMSAwIC4zMS0uMDFsLjU5IDEuOTdjLS4zLjAzLS42LjA0LS45LjA0LTUuNTIgMC0xMC00LjQ4LTEwLTEwUzYuNDggMiAxMiAyczEwIDQuNDggMTAgMTB6bS0zLjc3IDQuMjZMMjIgMTVsLTEwLTMgMyAxMCAxLjI2LTMuNzcgNC4yNyA0LjI3IDEuOTgtMS45OC00LjI4LTQuMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGFybUFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzM3IDEuODEgNC42MDcgMy44NDUtMS4yOCAxLjUzNS00LjYxLTMuODQzem0tMTAuNjc0IDAgMS4yODIgMS41MzZMMy4zMzcgNy4xOWwtMS4yOC0xLjUzNnpNMTIgNGE5IDkgMCAxIDAgLjAwMSAxOC4wMDFBOSA5IDAgMCAwIDEyIDR6bTAgMTZjLTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTcgNyAzLjE0IDcgNy0zLjE0IDctNyA3em0xLTExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGFybU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDQgNi4yOUMxMC42NiA2LjExIDExLjMyIDYgMTIgNmMzLjg2IDAgNyAzLjE0IDcgNyAwIC42OC0uMTEgMS4zNC0uMjkgMS45NmwxLjU2IDEuNTZjLjQ3LTEuMDguNzMtMi4yNy43My0zLjUyQTkgOSAwIDAgMCA4LjQ3IDQuNzJsMS41NyAxLjU3em03LjI5Ny00LjQ4IDQuNjA3IDMuODQ1LTEuMjggMS41MzUtNC42MS0zLjg0M3pNMy4wMiAyLjEgMS42MSAzLjUxbDEuMzcgMS4zNy0uOTIuNzcgMS4yOCAxLjU0IDEuMDYtLjg4LjguOEE4Ljk2NCA4Ljk2NCAwIDAgMCAzIDEzYTkgOSAwIDAgMCA5IDljMi4yNSAwIDQuMzEtLjgzIDUuODktMi4ybDIuMSAyLjEgMS40MS0xLjQxTDMuMDIgMi4xek0xMiAyMGMtMy44NiAwLTctMy4xNC03LTcgMC0xLjcuNjEtMy4yNiAxLjYyLTQuNDdsOS44NSA5Ljg1QTYuOTU2IDYuOTU2IDAgMCAxIDEyIDIwek03LjQ4IDMuNzNsLjQ2LS4zOC0xLjI4LTEuNTQtLjYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsYXJtT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjU0IDE0LjUzIDguNDEgMTIuNGwtMS4wNiAxLjA2IDMuMTggMy4xOCA2LTYtMS4wNi0xLjA2em02Ljc5Ny0xMi43MiA0LjYwNyAzLjg0NS0xLjI4IDEuNTM1LTQuNjEtMy44NDN6bS0xMC42NzQgMCAxLjI4MiAxLjUzNkwzLjMzNyA3LjE5bC0xLjI4LTEuNTM2ek0xMiA0YTkgOSAwIDEgMCAuMDAxIDE4LjAwMUE5IDkgMCAwIDAgMTIgNHptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGFybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3em00LjgzNy02LjE5IDQuNjA3IDMuODQ1LTEuMjggMS41MzUtNC42MS0zLjg0M3ptLTEwLjY3NCAwIDEuMjgyIDEuNTM2TDMuMzM3IDcuMTlsLTEuMjgtMS41MzZ6TTEyIDRhOSA5IDAgMSAwIC4wMDEgMTguMDAxQTkgOSAwIDAgMCAxMiA0em0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsbEluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01IDEwaDMuMTNjLjIxLjc4LjY3IDEuNDcgMS4yNyAySDV2LTJ6bTE0IDJoLTQuNGMuNi0uNTMgMS4wNi0xLjIyIDEuMjctMkgxOXYyem0wLTRoLTV2MWMwIDEuMDctLjkzIDItMiAycy0yLS45My0yLTJWOEg1VjVoMTR2M3ptLTIgN2gtM3YxYzAgLjQ3LS4xOS45LS40OCAxLjI1LS4zNy40NS0uOTIuNzUtMS41Mi43NXMtMS4xNS0uMy0xLjUyLS43NWMtLjI5LS4zNS0uNDgtLjc4LS40OC0xLjI1di0xSDN2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi00aC00ek01IDE3aDMuMTNjLjAyLjA5LjA2LjE3LjA5LjI1LjI0LjY4LjY1IDEuMjggMS4xOCAxLjc1SDV2LTJ6bTE0IDJoLTQuNGMuNTQtLjQ3Ljk1LTEuMDcgMS4xOC0xLjc1LjAzLS4wOC4wNy0uMTYuMDktLjI1SDE5djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGxPdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNHY0bDQtNHptMTIgMCA0IDRWNHptNCAxNnYtNGwtNCA0ek00IDIwaDRsLTQtNHptMTUtOGMwLTMuODctMy4xMy03LTctN3MtNyAzLjEzLTcgNyAzLjEzIDcgNyA3IDctMy4xMyA3LTd6bS03IDVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5hbHl0aWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDEyaDJ2NUg3ek0xNSA3aDJ2MTBoLTJ6TTExIDE0aDJ2M2gtMnpNMTEgMTBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5jaG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTUgMS41NSAxLjU1Yy0uOTYgMS42OS0zLjMzIDMuMDQtNS41NSAzLjM3VjExaDNWOWgtM1Y3LjgyQzE0LjE2IDcuNCAxNSA2LjMgMTUgNWMwLTEuNjUtMS4zNS0zLTMtM1M5IDMuMzUgOSA1YzAgMS4zLjg0IDIuNCAyIDIuODJWOUg4djJoM3Y4LjkyYy0yLjIyLS4zMy00LjU5LTEuNjgtNS41NS0zLjM3TDcgMTVsLTQtM3YzYzAgMy44OCA0LjkyIDcgOSA3czktMy4xMiA5LTd2LTNsLTQgM3pNMTIgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNiA5LjQ4IDEuODQtMy4xOGMuMTYtLjMxLjA0LS42OS0uMjYtLjg1YS42MzcuNjM3IDAgMCAwLS44My4yMmwtMS44OCAzLjI0YTExLjQ2MyAxMS40NjMgMCAwIDAtOC45NCAwTDUuNjUgNS42N2EuNjQzLjY0MyAwIDAgMC0uODctLjJjLS4yOC4xOC0uMzcuNTQtLjIyLjgzTDYuNCA5LjQ4QTEwLjc4IDEwLjc4IDAgMCAwIDEgMThoMjJhMTAuNzggMTAuNzggMCAwIDAtNS40LTguNTJ6TTcgMTUuMjVhMS4yNSAxLjI1IDAgMSAxIDAtMi41IDEuMjUgMS4yNSAwIDAgMSAwIDIuNXptMTAgMGExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5ub3VuY2VtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyek0xMSA1aDJ2NmgtMnptMCA4aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDEyLTIgMi0yLTIgMi0yIDIgMnptLTItNiAyLjEyIDIuMTIgMi41LTIuNUwxMiAxIDcuMzggNS42MmwyLjUgMi41TDEyIDZ6bS02IDYgMi4xMi0yLjEyLTIuNS0yLjVMMSAxMmw0LjYyIDQuNjIgMi41LTIuNUw2IDEyem0xMiAwLTIuMTIgMi4xMiAyLjUgMi41TDIzIDEybC00LjYyLTQuNjItMi41IDIuNUwxOCAxMnptLTYgNi0yLjEyLTIuMTItMi41IDIuNUwxMiAyM2w0LjYyLTQuNjItMi41LTIuNUwxMiAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwcEJsb2NraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bS0yLjUgNEEyLjUgMi41IDAgMCAxIDE4IDkuNWMuNDIgMCAuOC4xMSAxLjE1LjI5bC0zLjM2IDMuMzZjLS4xOC0uMzUtLjI5LS43My0uMjktMS4xNXptMi41IDIuNWMtLjQyIDAtLjgtLjExLTEuMTUtLjI5bDMuMzYtMy4zNmMuMTguMzUuMjkuNzMuMjkgMS4xNWEyLjUgMi41IDAgMCAxLTIuNSAyLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE4SDdWNmgxMHYxaDJWM2MwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi00aC0ydjF6TTcgM2gxMHYxSDdWM3ptMTAgMThIN3YtMWgxMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBwU2hvcnRjdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxOEg3VjZoMTB2MWgyVjNjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNGgtMnYxek03IDNoMTB2MUg3VjN6bTEwIDE4SDd2LTFoMTB2MXpNMjAuMzggOS42MiAyMSAxMWwuNjItMS4zOEwyMyA5bC0xLjM4LS42MkwyMSA3bC0uNjIgMS4zOEwxOSA5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA4LTEuMjUgMi43NUwxMiAxMmwyLjc1IDEuMjVMMTYgMTZsMS4yNS0yLjc1TDIwIDEybC0yLjc1LTEuMjV6TTIxIDEzbC0uNjIgMS4zOEwxOSAxNWwxLjM4LjYyTDIxIDE3bC42Mi0xLjM4TDIzIDE1bC0xLjM4LS42MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93Q2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04bTAtMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxMFY4aC0ydjRIOGw0IDQgNC00aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMHMxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMiAyIDYuNDggMiAxMnptMTggMGMwIDQuNDItMy41OCA4LTggOHMtOC0zLjU4LTgtOCAzLjU4LTggOC04IDggMy41OCA4IDh6TTggMTJsNC00IDEuNDEgMS40MUwxMS44MyAxMUgxNnYyaC00LjE3bDEuNTkgMS41OUwxMiAxNmwtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMHpNNCAxMmMwLTQuNDIgMy41OC04IDgtOHM4IDMuNTggOCA4LTMuNTggOC04IDgtOC0zLjU4LTgtOHptMTIgMC00IDQtMS40MS0xLjQxTDEyLjE3IDEzSDh2LTJoNC4xN2wtMS41OS0xLjU5TDEyIDhsNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOG0wIDJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bS0xLTEwdjRoMnYtNGgzbC00LTQtNCA0aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd091dHdhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDZ2Mmg4LjU5TDUgMTcuNTkgNi40MSAxOSAxNiA5LjQxVjE4aDJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93UmlnaHRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjAxIDExSDR2MmgxMi4wMXYzTDIwIDEybC0zLjk5LTR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFydGljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxN0g3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNwZWN0UmF0aW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyaC0ydjNoLTN2Mmg1di01ek03IDloM1Y3SDV2NWgyVjl6bTE0LTZIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2Vzc21lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNNyAxMGgydjdIN3ptNC0zaDJ2MTBoLTJ6bTQgNmgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3NpZ25tZW50SW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03LS4yNWMuMjIgMCAuNDEuMS41NS4yNS4xMi4xMy4yLjMxLjIuNSAwIC40MS0uMzQuNzUtLjc1Ljc1cy0uNzUtLjM0LS43NS0uNzVjMC0uMTkuMDgtLjM3LjItLjUuMTQtLjE1LjMzLS4yNS41NS0uMjV6TTE5IDE5SDVWNWgxNHYxNHpNMTIgNmMtMS42NSAwLTMgMS4zNS0zIDNzMS4zNSAzIDMgMyAzLTEuMzUgMy0zLTEuMzUtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tNiA2LjQ3VjE4aDEydi0xLjUzYzAtMi41LTMuOTctMy41OC02LTMuNThzLTYgMS4wNy02IDMuNTh6TTguMzEgMTZjLjY5LS41NiAyLjM4LTEuMTIgMy42OS0xLjEyczMuMDEuNTYgMy42OSAxLjEySDguMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3NpZ25tZW50TGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yem0wLThoMnY2aC0yem04LTRoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLS4xNCAwLS4yNy4wMS0uNC4wNGEyLjAwOCAyLjAwOCAwIDAgMC0xLjQ0IDEuMTljLS4xLjIzLS4xNi40OS0uMTYuNzd2MTRjMCAuMjcuMDYuNTQuMTYuNzhzLjI1LjQ1LjQzLjY0Yy4yNy4yNy42Mi40NyAxLjAxLjU1LjEzLjAyLjI2LjAzLjQuMDNoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaWdubWVudFJldHVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRoNHYtNGgtNFY3bC01IDUgNSA1em03LTExaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0uMTQgMC0uMjcuMDEtLjQuMDRhMi4wMDggMi4wMDggMCAwIDAtMS40NCAxLjE5Yy0uMS4yMy0uMTYuNDktLjE2Ljc3djE0YzAgLjI3LjA2LjU0LjE2Ljc4cy4yNS40NS40My42NGMuMjcuMjcuNjIuNDcgMS4wMS41NS4xMy4wMi4yNi4wMy40LjAzaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03LS4yNWMuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzUtLjc1LS4zNC0uNzUtLjc1LjM0LS43NS43NS0uNzV6TTE5IDE5SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lnbm1lbnRSZXR1cm5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJoLTNWOGgtNHY0SDdsNSA1em0yLTloLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLS4xNCAwLS4yNy4wMS0uNC4wNGEyLjAwOCAyLjAwOCAwIDAgMC0xLjQ0IDEuMTljLS4xLjIzLS4xNi40OS0uMTYuNzd2MTRjMCAuMjcuMDYuNTQuMTYuNzhzLjI1LjQ1LjQzLjY0Yy4yNy4yNy42Mi40NyAxLjAxLjU1LjEzLjAyLjI2LjAzLjQuMDNoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaWdubWVudFR1cm5lZEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA5LTEuNDEtMS40MkwxMCAxNC4xN2wtMi41OS0yLjU4TDYgMTNsNCA0em0xLTZoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLS4xNCAwLS4yNy4wMS0uNC4wNGEyLjAwOCAyLjAwOCAwIDAgMC0xLjQ0IDEuMTljLS4xLjIzLS4xNi40OS0uMTYuNzd2MTRjMCAuMjcuMDYuNTQuMTYuNzhzLjI1LjQ1LjQzLjY0Yy4yNy4yNy42Mi40NyAxLjAxLjU1LjEzLjAyLjI2LjAzLjQuMDNoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaWdubWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNWg3djJIN3ptMC00aDEwdjJIN3ptMC00aDEwdjJIN3ptMTItNGgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtLjE0IDAtLjI3LjAxLS40LjA0YTIuMDA4IDIuMDA4IDAgMCAwLTEuNDQgMS4xOWMtLjEuMjMtLjE2LjQ5LS4xNi43N3YxNGMwIC4yNy4wNi41NC4xNi43OHMuMjUuNDUuNDMuNjRjLjI3LjI3LjYyLjQ3IDEuMDEuNTUuMTMuMDIuMjYuMDMuNC4wM2gxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek0xOSAxOUg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3N1cmVkV29ya2xvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEwaDJ2N0g1ek0xMSAxMGgydjdoLTJ6TTIyIDYgMTIgMSAyIDZ2MmgyMFY2ek02LjQ3IDYgMTIgMy4yNCAxNy41MyA2SDYuNDd6TTIgMTl2MmgxMi40Yy0uMjEtLjY0LS4zMi0xLjMxLS4zNi0ySDJ6TTE5IDEyLjI2VjEwaC0ydjMuMjZ6TTIwIDE0bC00IDJ2Mi41NWMwIDIuNTIgMS43MSA0Ljg4IDQgNS40NSAyLjI5LS41NyA0LTIuOTMgNC01LjQ1VjE2bC00LTJ6bS0uNzIgNy0yLjAzLTIuMDMgMS4wNi0xLjA2Ljk3Ljk3IDIuNDEtMi4zOCAxLjA2IDEuMDZMMTkuMjggMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvcmVuZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZ2M2w0LTQtNC00djNjLTQuNDIgMC04IDMuNTgtOCA4IDAgMS41Ny40NiAzLjAzIDEuMjQgNC4yNkw2LjcgMTQuOEE1Ljg3IDUuODcgMCAwIDEgNiAxMmMwLTMuMzEgMi42OS02IDYtNnptNi43NiAxLjc0TDE3LjMgOS4yYy40NC44NC43IDEuNzkuNyAyLjggMCAzLjMxLTIuNjkgNi02IDZ2LTNsLTQgNCA0IDR2LTNjNC40MiAwIDgtMy41OCA4LTggMC0xLjU3LS40Ni0zLjAzLTEuMjQtNC4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhY2t1cFRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNnYxNEg2djJoMTRjMS4xIDAgMi0uOSAyLTJWNmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgMTZINHYtNWg1djV6bTcgMGgtNXYtNWg1djV6bTAtN0g0VjRoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ2OSA1LjQ2OSAwIDAgMSAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExQTIuOTggMi45OCAwIDAgMSAyMiAxNWMwIDEuNjUtMS4zNSAzLTMgM3pNOCAxM2gyLjU1djNoMi45di0zSDE2bC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWxhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNy44M2MuODUtLjMgMS41My0uOTggMS44My0xLjgzSDE4bC0zIDdjMCAxLjY2IDEuNTcgMyAzLjUgM3MzLjUtMS4zNCAzLjUtM2wtMy03aDJWNGgtNi4xN2MtLjQxLTEuMTctMS41Mi0yLTIuODMtMnMtMi40Mi44My0yLjgzIDJIM3YyaDJsLTMgN2MwIDEuNjYgMS41NyAzIDMuNSAzUzkgMTQuNjYgOSAxM0w2IDZoMy4xN2MuMy44NS45OCAxLjUzIDEuODMgMS44M1YxOUgydjJoMjB2LTJoLTlWNy44M3pNMjAuMzcgMTNoLTMuNzRsMS44Ny00LjM2TDIwLjM3IDEzem0tMTMgMEgzLjYzTDUuNSA4LjY0IDcuMzcgMTN6TTEyIDZjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdGNoUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDhIN2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTQgMTIuNWgtMlYxOWgydjEuNXptMC0yLjVoLTJjMC0xLjUtMi41LTMtMi41LTUgMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNWMwIDItMi41IDMuNS0yLjUgNXptNS0xMS41SDZDNiA1LjY3IDYuNjcgNSA3LjUgNWg5Yy44MyAwIDEuNS42NyAxLjUgMS41em0tMS0zSDdDNyAyLjY3IDcuNjcgMiA4LjUgMmg3Yy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va09ubGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDRIN1YzaDEwdjF6bTAgMTdIN3YtMWgxMHYxem0wLTIwSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNyA2aDEwdjEySDdWNnptOSA1VjkuMTRDMTYgOC41MSAxNS41NSA4IDE1IDhIOWMtLjU1IDAtMSAuNTEtMSAxLjE0djEuOTZjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDF2MS43NmMwIC42My40NSAxLjE0IDEgMS4xNGg2Yy41NSAwIDEtLjUxIDEtMS4xNFYxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMXptLTMuNSAzLjVoLTF2LTFoMXYxem0wLTJoLTF2LTFoMXYxem0wLTJoLTF2LTFoMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgNGgydjVsLTEtLjc1TDkgOVY0em05IDE2SDZWNGgxdjlsMy0yLjI1TDEzIDEzVjRoNXYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvb2ttYXJrQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTF2Ni45N2wtNS0yLjE0LTUgMi4xNFY1aDZWM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjExaC0yem00LTRoLTJ2MmgtMlY3aC0yVjVoMlYzaDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb29rbWFya0FkZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTF2Ni45N2wtNS0yLjE0LTUgMi4xNFY1aDZWM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjExaC0yem0uODMtMkwxNSA2LjE3bDEuNDEtMS40MSAxLjQxIDEuNDEgMy41NC0zLjU0IDEuNDEgMS40MUwxNy44MyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va21hcmtCb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yem0wIDE1LTUtMi4xOEw3IDE4VjVoMTB2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb29rbWFya1JlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExdjYuOTdsLTUtMi4xNC01IDIuMTRWNWg2VjNIN2MtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1YxMWgtMnptNC00aC02VjVoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va21hcmtzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3djEyLjk3bC00LjIxLTEuODEtLjc5LS4zNC0uNzkuMzRMNSAxOS45N1Y3aDEwbTQtNkg4Ljk5QzcuODkgMSA3IDEuOSA3IDNoMTBjMS4xIDAgMiAuOSAyIDJ2MTNsMiAxVjNjMC0xLjEtLjktMi0yLTJ6bS00IDRINWMtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1Y3YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJvd3NlR2FsbGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgM2E5IDkgMCAxIDAgLjAwMSAxOC4wMDFBOSA5IDAgMCAwIDkgM3ptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDdIOHY1LjQxbDMuNzkgMy44IDEuNDItMS40Mi0zLjIxLTMuMnpNMTcuOTkgMy41MnYyLjE2QTYuOTkgNi45OSAwIDAgMSAyMiAxMmMwIDIuNzktMS42NCA1LjItNC4wMSA2LjMydjIuMTZDMjEuNDggMTkuMjQgMjQgMTUuOTEgMjQgMTJzLTIuNTItNy4yNC02LjAxLTguNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdWdSZXBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhoLTIuODFhNS45ODUgNS45ODUgMCAwIDAtMS44Mi0xLjk2TDE3IDQuNDEgMTUuNTkgM2wtMi4xNyAyLjE3QzEyLjk2IDUuMDYgMTIuNDkgNSAxMiA1cy0uOTYuMDYtMS40MS4xN0w4LjQxIDMgNyA0LjQxbDEuNjIgMS42M0M3Ljg4IDYuNTUgNy4yNiA3LjIyIDYuODEgOEg0djJoMi4wOWMtLjA1LjMzLS4wOS42Ni0uMDkgMXYxSDR2MmgydjFjMCAuMzQuMDQuNjcuMDkgMUg0djJoMi44MWMxLjA0IDEuNzkgMi45NyAzIDUuMTkgM3M0LjE1LTEuMjEgNS4xOS0zSDIwdi0yaC0yLjA5Yy4wNS0uMzMuMDktLjY2LjA5LTF2LTFoMnYtMmgtMnYtMWMwLS4zNC0uMDQtLjY3LS4wOS0xSDIwVjh6bS00IDR2M2MwIC4yMi0uMDMuNDctLjA3LjdsLS4xLjY1LS4zNy42NWMtLjcyIDEuMjQtMi4wNCAyLTMuNDYgMnMtMi43NC0uNzctMy40Ni0ybC0uMzctLjY0LS4xLS42NUE0LjI3IDQuMjcgMCAwIDEgOCAxNXYtNGMwLS4yMy4wMy0uNDguMDctLjdsLjEtLjY1LjM3LS42NWMuMy0uNTIuNzItLjk3IDEuMjEtMS4zMWwuNTctLjM5Ljc0LS4xOGEzLjc4NyAzLjc4NyAwIDAgMSAxLjg5IDBsLjY4LjE2LjYxLjQyYy41LjM0LjkxLjc4IDEuMjEgMS4zMWwuMzguNjUuMS42NWMuMDQuMjIuMDcuNDcuMDcuNjl2MXptLTYgMmg0djJoLTR6bTAtNGg0djJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdWlsZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjQ5IDExLjM4Yy40My0xLjIyLjE3LTIuNjQtLjgxLTMuNjJhMy40NjggMy40NjggMCAwIDAtNC4xLS41OWwyLjM1IDIuMzUtMS40MSAxLjQxLTIuMzUtMi4zNWMtLjcxIDEuMzItLjUyIDIuOTkuNTkgNC4xLjk4Ljk4IDIuNCAxLjI0IDMuNjIuODFsMy40MSAzLjQxYy4yLjIuNTEuMi43MSAwbDEuNC0xLjRjLjItLjIuMi0uNTEgMC0uNzFsLTMuNDEtMy40MXpcIn0sXCJjaGlsZFwiOltdfV19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnVpbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjYxIDE4Ljk5LTkuMDgtOS4wOGMuOTMtMi4zNC40NS01LjEtMS40NC03QzkuNzkuNjEgNi4yMS40IDMuNjYgMi4yNkw3LjUgNi4xMSA2LjA4IDcuNTIgMi4yNSAzLjY5Qy4zOSA2LjIzLjYgOS44MiAyLjkgMTIuMTFjMS44NiAxLjg2IDQuNTcgMi4zNSA2Ljg5IDEuNDhsOS4xMSA5LjExYy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwyLjMtMi4zYy40LS4zOC40LTEuMDEgMC0xLjQxem0tMyAxLjYtOS40Ni05LjQ2Yy0uNjEuNDUtMS4yOS43Mi0yIC44Mi0xLjM2LjItMi43OS0uMjEtMy44My0xLjI1QzMuMzcgOS43NiAyLjkzIDguNSAzIDcuMjZsMy4wOSAzLjA5IDQuMjQtNC4yNC0zLjA5LTMuMDljMS4yNC0uMDcgMi40OS4zNyAzLjQ0IDEuMzFhNC40NjkgNC40NjkgMCAwIDEgMS4yNCAzLjk2IDQuMzUgNC4zNSAwIDAgMS0uODggMS45Nmw5LjQ1IDkuNDUtLjg4Ljg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FjaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA4LTQgNGgzYzAgMy4zMS0yLjY5IDYtNiA2YTUuODcgNS44NyAwIDAgMS0yLjgtLjdsLTEuNDYgMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgMjBjNC40MiAwIDgtMy41OCA4LThoM2wtNC00ek02IDEyYzAtMy4zMSAyLjY5LTYgNi02IDEuMDEgMCAxLjk3LjI1IDIuOC43bDEuNDYtMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgNGMtNC40MiAwLTggMy41OC04IDhIMWw0IDQgNC00SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxlbmRhck1vbnRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjEwaDE0djEwem0wLTEySDVWNmgxNHYyek05IDE0SDd2LTJoMnYyem00IDBoLTJ2LTJoMnYyem00IDBoLTJ2LTJoMnYyem0tOCA0SDd2LTJoMnYyem00IDBoLTJ2LTJoMnYyem00IDBoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsZW5kYXJUb2RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM2gtMVYxaC0ydjJIN1YxSDV2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMThINFYxMGgxNnYxMXptMC0xM0g0VjVoMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGVuZGFyVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxN2gxOHYySDN6bTE2LTV2MUg1di0xaDE0bTItMkgzdjVoMTh2LTV6TTMgNmgxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxlbmRhclZpZXdNb250aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTggMTFINFY2aDR2NXptNiAwaC00VjZoNHY1em02IDBoLTRWNmg0djV6TTggMThINHYtNWg0djV6bTYgMGgtNHYtNWg0djV6bTYgMGgtNHYtNWg0djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxlbmRhclZpZXdXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTcgMmgyLjV2MTJIMTNWNnptLTIgMTJIOC41VjZIMTF2MTJ6TTQgNmgyLjV2MTJINFY2em0xNiAxMmgtMi41VjZIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmFFbmhhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxMC0uOTQgMi4wNkw5IDEzbDIuMDYuOTRMMTIgMTZsLjk0LTIuMDZMMTUgMTNsLTIuMDYtLjk0em04LTVoLTMuMTdMMTUgM0g5TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY3aDQuMDVsLjU5LS42NUw5Ljg4IDVoNC4yNGwxLjI0IDEuMzUuNTkuNjVIMjB2MTJ6TTEyIDhjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDhjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FuY2VsU2NoZWR1bGVTZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSA5Yy0uNDIgMC0uODMuMDQtMS4yNC4xMUwxLjAxIDMgMSAxMGwxMC4wNiAxLjM0Yy0uNDIuNDQtLjc4LjkzLTEuMDkgMS40NkwxIDE0bC4wMSA3IDguMDctMy40NkM5LjU5IDIxLjE5IDEyLjcxIDI0IDE2LjUgMjRjNC4xNCAwIDcuNS0zLjM2IDcuNS03LjVTMjAuNjQgOSAxNi41IDl6TTMgOC4yNWwuMDEtMi4yMiA3LjUxIDMuMjItNy41Mi0xem02LjEgNy4xMUwzIDE3Ljk3di0yLjIybDYuMTctLjgyYy0uMDMuMTQtLjA1LjI4LS4wNy40M3pNMTYuNSAyMmMtMy4wMyAwLTUuNS0yLjQ3LTUuNS01LjVzMi40Ny01LjUgNS41LTUuNSA1LjUgMi40NyA1LjUgNS41LTIuNDcgNS41LTUuNSA1LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjI3IDE0LjAzLTEuNzcgMS43Ni0xLjc3LTEuNzYtLjcuNyAxLjc2IDEuNzctMS43NiAxLjc3LjcuNyAxLjc3LTEuNzYgMS43NyAxLjc2LjctLjctMS43Ni0xLjc3IDEuNzYtMS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhcmRHaWZ0Y2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtMi4xOGMuMTEtLjMxLjE4LS42NS4xOC0xYTIuOTk2IDIuOTk2IDAgMCAwLTUuNS0xLjY1bC0uNS42Ny0uNS0uNjhDMTAuOTYgMi41NCAxMC4wNSAyIDkgMiA3LjM0IDIgNiAzLjM0IDYgNWMwIC4zNS4wNy42OS4xOCAxSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTUtMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek05IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDUuMDhMNyAxMC44MyA4LjYyIDEyIDEyIDcuNGwzLjM4IDQuNkwxNyAxMC44MyAxNC45MiA4SDIwdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXJkTWVtYmVyc2hpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjExIDAtMiAuODktMiAydjExYzAgMS4xMS44OSAyIDIgMmg0djVsNC0yIDQgMnYtNWg0YzEuMTEgMCAyLS44OSAyLTJWNGMwLTEuMTEtLjg5LTItMi0yem0wIDEzSDR2LTJoMTZ2MnptMC01SDRWNGgxNnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FyZFRyYXZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtM1Y0YzAtMS4xMS0uODktMi0yLTJIOWMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTFjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yek05IDRoNnYySDlWNHptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDN2MmgyVjhoNnYyaDJWOGgzdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGFuZ2VIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3Ljc3IDE4LjM5IDE4SDUuNjFMMTIgNy43N00xMiA0IDIgMjBoMjBMMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrQ2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTQuNTktMTIuNDJMMTAgMTQuMTdsLTIuNTktMi41OEw2IDEzbDQgNCA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTQuNTktMTIuNDJMMTAgMTQuMTdsLTIuNTktMi41OEw2IDEzbDQgNCA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaHJvbWVSZWFkZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNMyAxOVY2aDh2MTNIM3ptMTggMGgtOFY2aDh2MTN6bS03LTkuNWg2VjExaC02em0wIDIuNWg2djEuNWgtNnptMCAyLjVoNlYxNmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNpcmNsZU5vdGlmaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE4LjVjLjgzIDAgMS41LS42NyAxLjUtMS41aC0zYzAgLjgzLjY3IDEuNSAxLjUgMS41ek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptNC04LjYxYzAtMi4xMS0xLjAzLTMuOTItMy00LjM5di0uNWMwLS41Ny0uNDMtMS0xLTFzLTEgLjQzLTEgMVY3Yy0xLjk3LjQ3LTMgMi4yNy0zIDQuMzlWMTRIN3YyaDEwdi0yaC0xdi0yLjYxek0xNCAxNGgtNHYtM2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgNGgydjVsLTEtLjc1TDkgOVY0em05IDE2SDZWNGgxdjlsMy0yLjI1TDEzIDEzVjRoNXYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3NlRnVsbHNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDMuNDEgMTYuNzEgOC43IDIwIDEyaC04VjRsMy4yOSAzLjI5TDIwLjU5IDIgMjIgMy40MXpNMy40MSAyMmw1LjI5LTUuMjlMMTIgMjB2LThINGwzLjI5IDMuMjlMMiAyMC41OSAzLjQxIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29kZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjE3IDEyLTQuNTgtNC41OUwxNiA2bDYgNi0zLjU5IDMuNTlMMTcgMTQuMTcgMTkuMTcgMTJ6TTEuMzkgNC4yMmw0LjE5IDQuMTlMMiAxMmw2IDYgMS40MS0xLjQxTDQuODMgMTIgNyA5LjgzbDEyLjc4IDEyLjc4IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDE2LjYgNC44IDEybDQuNi00LjZMOCA2bC02IDYgNiA2IDEuNC0xLjR6bTUuMiAwIDQuNi00LjYtNC42LTQuNkwxNiA2bDYgNi02IDYtMS40LTEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbW1lbnRCYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTRWNmgtNXY4bDIuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINmwtMiAyVjRoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21taXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi45IDExYTUgNSAwIDAgMC05LjggMEgydjJoNS4xYTUgNSAwIDAgMCA5LjggMEgyMnYtMmgtNS4xek0xMiAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21tdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0SDVDMy4zNCA0IDIgNS4zNCAyIDd2OGMwIDEuNjYgMS4zNCAzIDMgM2wtMSAxdjFoMWwyLTJoMnYtNUg0VjZoOXYyaDJWN2MwLTEuNjYtMS4zNC0zLTMtM3pNNSAxNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xNS41Ny00LjM0Yy0uMTQtLjQtLjUyLS42Ni0uOTctLjY2aC03LjE5Yy0uNDYgMC0uODMuMjYtLjk4LjY2bC0xLjQyIDQuMTF2NS41MWMwIC4zOC4zMS43Mi42OS43MmguNjJjLjM4IDAgLjY4LS4zOC42OC0uNzZWMThoOHYxLjI0YzAgLjM4LjMxLjc2LjY5Ljc2aC42MWMuMzggMCAuNjktLjM0LjY5LS43MmwuMDEtMS4zN3YtNC4xNGwtMS40My00LjExem0tOC4xNi4zNGg3LjE5bDEuMDMgM2gtOS4yNWwxLjAzLTN6TTEyIDE2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTggMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29tcGFyZUFycm93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wMSAxNEgydjJoNy4wMXYzTDEzIDE1bC0zLjk5LTR2M3ptNS45OC0xdi0zSDIyVjhoLTcuMDFWNUwxMSA5bDMuOTkgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbXByZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDl2MmgxNlY5SDR6bTEyLTUtMS40MS0xLjQxTDEzIDQuMTdWMWgtMnYzLjE5TDkuMzkgMi42MSA4IDRsNCA0IDQtNHpNNCAxNGgxNnYtMkg0djJ6bTQgNSAxLjM5IDEuMzlMMTEgMTguODFWMjJoMnYtMy4xN2wxLjU5IDEuNTlMMTYgMTlsLTQtNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250YWN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjE3IDQgMTggOC44M1YyMEg2VjRoNy4xN00xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMiAxMmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgOCAxNy40M1YxOGg4di0uNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250YWN0U3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjMuNTl2LTMuNmMtNS4wMS0uMjYtOS00LjQyLTktOS40OUMyIDUuMjYgNi4yNiAxIDExLjUgMVMyMSA1LjI2IDIxIDEwLjVjMCA0Ljk1LTMuNDQgOS45My04LjU3IDEyLjRsLTEuNDMuNjl6TTExLjUgM0M3LjM2IDMgNCA2LjM2IDQgMTAuNVM3LjM2IDE4IDExLjUgMThIMTN2Mi4zYzMuNjQtMi4zIDYtNi4wOCA2LTkuOEMxOSA2LjM2IDE1LjY0IDMgMTEuNSAzem0tMSAxMS41aDJ2MmgtMnptMi0xLjVoLTJjMC0zLjI1IDMtMyAzLTUgMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyaC0yYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAyLjUtMyAyLjc1LTMgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRhY3RsZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMSAxMC4xOGE0LjM4NCA0LjM4NCAwIDAgMSAwIDMuNjZsMS4zNy42MmMuMzctLjgxLjU1LTEuNjUuNTQtMi41LS4wMS0uODQtLjE5LTEuNjUtLjU0LTIuNGwtMS4zNy42MnpNMTMuMzMgNy4zM2MuNzggMS41NyAxLjE4IDMuMTQgMS4xOCA0LjY0IDAgMS41MS0uNCAzLjA5LTEuMTggNC42OWwxLjM1LjY2Yy44OC0xLjgxIDEuMzMtMy42MSAxLjMzLTUuMzUgMC0xLjc0LS40NS0zLjUzLTEuMzMtNS4zMWwtMS4zNS42N3pNMTAuMiA4LjcyYy41MyAxLjA3LjggMi4yMS44IDMuNCAwIDEuMTctLjI2IDIuMjMtLjc4IDMuMTVsMS4zLjc0Yy42NS0xLjE1Ljk4LTIuNDUuOTgtMy44OSAwLTEuNDItLjMyLTIuNzktLjk2LTQuMDdsLTEuMzQuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA4IDEwLjg2Yy4wNS0uMzMuMTYtLjYyLjMtLjg3cy4zNC0uNDYuNTktLjYyYy4yNC0uMTUuNTQtLjIyLjkxLS4yMy4yMy4wMS40NC4wNS42My4xMy4yLjA5LjM4LjIxLjUyLjM2cy4yNS4zMy4zNC41My4xMy40Mi4xNC42NGgxLjc5Yy0uMDItLjQ3LS4xMS0uOS0uMjgtMS4yOXMtLjQtLjczLS43LTEuMDEtLjY2LS41LTEuMDgtLjY2LS44OC0uMjMtMS4zOS0uMjNjLS42NSAwLTEuMjIuMTEtMS43LjM0cy0uODguNTMtMS4yLjkyLS41Ni44NC0uNzEgMS4zNlM4IDExLjI5IDggMTEuODd2LjI3YzAgLjU4LjA4IDEuMTIuMjMgMS42NHMuMzkuOTcuNzEgMS4zNS43Mi42OSAxLjIuOTFjLjQ4LjIyIDEuMDUuMzQgMS43LjM0LjQ3IDAgLjkxLS4wOCAxLjMyLS4yM3MuNzctLjM2IDEuMDgtLjYzLjU2LS41OC43NC0uOTQuMjktLjc0LjMtMS4xNWgtMS43OWMtLjAxLjIxLS4wNi40LS4xNS41OHMtLjIxLjMzLS4zNi40Ni0uMzIuMjMtLjUyLjNjLS4xOS4wNy0uMzkuMDktLjYuMS0uMzYtLjAxLS42Ni0uMDgtLjg5LS4yMy0uMjUtLjE2LS40NS0uMzctLjU5LS42MnMtLjI1LS41NS0uMy0uODgtLjA4LS42Ny0uMDgtMXYtLjI3YzAtLjM1LjAzLS42OC4wOC0xLjAxek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyZWRpdENhcmRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgzIDRIMjBjMS4xMSAwIDIgLjg5IDIgMnYxMmMwIC4zNC0uMDguNjYtLjIzLjk0TDIwIDE3LjE3VjEyaC01LjE3bC00LTRIMjBWNkg4LjgzbC0yLTJ6bTEzLjY2IDE5LjMxTDE3LjE3IDIwSDRjLTEuMTEgMC0yLS44OS0yLTJsLjAxLTEyYzAtLjM0LjA4LS42Ni4yMy0uOTNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek00IDYuODNWOGgxLjE3TDQgNi44M3pNMTUuMTcgMThsLTYtNkg0djZoMTEuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTR2LTFIMTF2LjVoMnYtMWgtMi41Yy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MUgxM3YtLjVoLTJ2MWgyLjVjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMWgtM2MtLjU1IDAtMS0uNDUtMS0xem03LjUgMWgzYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMWgtMi41di0xaDJ2LjVIMjF2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2MS41YzAgLjU1LjQ1IDEgMSAxaDIuNXYxaC0yVjEzSDE2djFjMCAuNTUuNDUgMSAxIDF6bS05LTVjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xdi0xSDYuNXYuNWgtMnYtM2gydi41SDh2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeUV4Y2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuODkgMTEuMWMtMS43OC0uNTktMi42NC0uOTYtMi42NC0xLjkgMC0xLjAyIDEuMTEtMS4zOSAxLjgxLTEuMzkgMS4zMSAwIDEuNzkuOTkgMS45IDEuMzRsMS41OC0uNjdjLS4xNS0uNDUtLjgyLTEuOTItMi41NC0yLjI0VjVoLTJ2MS4yNmMtMi40OC41Ni0yLjQ5IDIuODYtMi40OSAyLjk2IDAgMi4yNyAyLjI1IDIuOTEgMy4zNSAzLjMxIDEuNTguNTYgMi4yOCAxLjA3IDIuMjggMi4wMyAwIDEuMTMtMS4wNSAxLjYxLTEuOTggMS42MS0xLjgyIDAtMi4zNC0xLjg3LTIuNC0yLjA5bC0xLjY2LjY3Yy42MyAyLjE5IDIuMjggMi43OCAyLjkgMi45NlYxOWgydi0xLjI0Yy40LS4wOSAyLjktLjU5IDIuOS0zLjIyIDAtMS4zOS0uNjEtMi42MS0zLjAxLTMuNDR6TTMgMjFIMXYtNmg2djJINC41MmMxLjYxIDIuNDEgNC4zNiA0IDcuNDggNGE5IDkgMCAwIDAgOS05aDJjMCA2LjA4LTQuOTIgMTEtMTEgMTEtMy43MiAwLTcuMDEtMS44NS05LTQuNjdWMjF6bS0yLTlDMSA1LjkyIDUuOTIgMSAxMiAxYzMuNzIgMCA3LjAxIDEuODUgOSA0LjY3VjNoMnY2aC02VjdoMi40OEMxNy44NyA0LjU5IDE1LjEyIDMgMTIgM2E5IDkgMCAwIDAtOSA5SDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYW5nZXJvdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjczIDNIOC4yN0wzIDguMjd2Ny40Nkw4LjI3IDIxaDcuNDZMMjEgMTUuNzNWOC4yN0wxNS43MyAzek0xOSAxNC45IDE0LjkgMTlIOS4xTDUgMTQuOVY5LjFMOS4xIDVoNS44TDE5IDkuMXY1Ljh6bS00LjE3LTcuMTRMMTIgMTAuNTkgOS4xNyA3Ljc2IDcuNzYgOS4xNyAxMC41OSAxMmwtMi44MyAyLjgzIDEuNDEgMS40MUwxMiAxMy40MWwyLjgzIDIuODMgMS40MS0xLjQxTDEzLjQxIDEybDIuODMtMi44My0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXNoYm9hcmRDdXN0b21pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTFoOFYzSDN2OHptMi02aDR2NEg1VjV6TTEzIDN2OGg4VjNoLTh6bTYgNmgtNFY1aDR2NHpNMyAyMWg4di04SDN2OHptMi02aDR2NEg1di00ek0xOCAxM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhc2hib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYyaC00VjVoNE05IDV2Nkg1VjVoNG0xMCA4djZoLTR2LTZoNE05IDE3djJINXYtMmg0TTIxIDNoLTh2Nmg4VjN6TTExIDNIM3YxMGg4VjN6bTEwIDhoLTh2MTBoOFYxMXptLTEwIDRIM3Y2aDh2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhRXhwbG9yYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUyLTQuNDgtMTAtMTAtMTB6bTAgMThjLTIuODkgMC01LjQzLTEuNTQtNi44My0zLjg0bDIuOTUtMi45NUwxMS40MSAxNiAxNiAxMS40MlYxM2gyVjhoLTV2MmgxLjU4bC0zLjI4IDMuMjhMOCAxMC41bC0zLjY5IDMuN0M0LjExIDEzLjUgNCAxMi43NiA0IDEyYzAtNC40MSAzLjU5LTggOC04czggMy41OSA4IDgtMy41OSA4LTggOHptNy41LjVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhdGFUaHJlc2hvbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtMS43M0wxOSAxNy4yN1YxOXptMC0zaC0uODVsLTMgM2gtMS42MmwzLTNoLTIuMTJsLTMgM0g5LjhsMy0zaC0yLjEybC0zIDNINS44NGwzLTNINi43Mkw1IDE3LjcyVjVoMTR2MTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjY3IDExIDIgMiA1LjA4LTUuMDktMS40MS0xLjQxLTMuNjcgMy42Ny0yLTItNC40MiA0LjQyTDcuNjYgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRlUmFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTFoMnYySDd2LTJ6bTE0LTV2MTRjMCAxLjEtLjkgMi0yIDJINWEyIDIgMCAwIDEtMi0ybC4wMS0xNGMwLTEuMS44OC0yIDEuOTktMmgxVjJoMnYyaDhWMmgydjJoMWMxLjEgMCAyIC45IDIgMnpNNSA4aDE0VjZINXYyem0xNCAxMlYxMEg1djEwaDE0em0tNC03aDJ2LTJoLTJ2MnptLTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWxldGVGb3JldmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4xMiAxMC40NyAxMiAxMi41OWwtMi4xMy0yLjEyLTEuNDEgMS40MUwxMC41OSAxNGwtMi4xMiAyLjEyIDEuNDEgMS40MUwxMiAxNS40MWwyLjEyIDIuMTIgMS40MS0xLjQxTDEzLjQxIDE0bDIuMTItMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek04IDloOHYxMEg4Vjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWxldGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTggOWg4djEwSDhWOXptNy41LTUtMS0xaC01bC0xIDFINXYyaDE0VjRoLTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbGV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOXYxMEg4VjloOG0tMS41LTZoLTVsLTEgMUg1djJoMTRWNGgtMy41bC0xLTF6TTE4IDdINnYxMmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbnNpdHlMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6TTMgMTloMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVuc2l0eU1lZGl1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6TTMgMTloMTh2Mkgzek0zIDExaDE4djJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbnNpdHlTbWFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMmgxOHYySDN6TTMgMjBoMTh2Mkgzek0zIDE0aDE4djJIM3pNMyA4aDE4djJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2aDh2Mkg4em0wLTRoOHYySDh6bTYtMTBINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpc2FibGVkQnlEZWZhdWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDE0djE0ek0zIDN2MThoMThWM0gzem0xNCAxMi41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXNhYmxlZFZpc2libGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNWMxLjk1IDAgMy43Ni45OCA0Ljc1IDIuNS0uOTkgMS41Mi0yLjggMi41LTQuNzUgMi41cy0zLjc2LS45OC00Ljc1LTIuNWMuOTktMS41MiAyLjgtMi41IDQuNzUtMi41em0wLTJjLTMuMTggMC01LjkgMS44Ny03IDQuNSAxLjEgMi42MyAzLjgyIDQuNSA3IDQuNXM1LjktMS44NyA3LTQuNWMtMS4xLTIuNjMtMy44Mi00LjUtNy00LjV6bTAgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjE3IDE2IDE3IDE2czEuNS42NyAxLjUgMS41UzE3LjgzIDE5IDE3IDE5em00Ljk5LTYuNjZjLjAxLS4xMS4wMS0uMjMuMDEtLjM0IDAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyYzAgNS4xNyAzLjkzIDkuNDMgOC45NiA5Ljk1YTkuMzQzIDkuMzQzIDAgMCAxLTIuMzItMi42OEE4LjAxIDguMDEgMCAwIDEgNCAxMmMwLTEuODUuNjMtMy41NSAxLjY5LTQuOWw1LjY2IDUuNjZjLjU2LS40IDEuMTctLjczIDEuODItMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuMjQgMCA3LjcgMy4yOSA3Ljk4IDcuNDUuNzEuMjIgMS4zOS41MiAyLjAxLjg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlzcGxheVNldHRpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDguMjVoOHYxLjVINnpNMTYuNSA5Ljc1SDE4di0xLjVoLTEuNVY3SDE1djRoMS41ek0xMCAxMi4yNWg4djEuNWgtOHpNNy41IDE1SDl2LTRINy41djEuMjVINnYxLjVoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNXY0SDV2LTRoMTRtMS0ySDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMXYtNmMwLS41NS0uNDUtMS0xLTF6TTcgMTguNWMtLjgyIDAtMS41LS42Ny0xLjUtMS41cy42OC0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTE5IDV2NEg1VjVoMTRtMS0ySDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMVY0YzAtLjU1LS40NS0xLTEtMXpNNyA4LjVjLS44MiAwLTEuNS0uNjctMS41LTEuNVM2LjE4IDUuNSA3IDUuNXMxLjUuNjggMS41IDEuNVM3LjgzIDguNSA3IDguNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbmVBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDctMS40MS0xLjQxLTYuMzQgNi4zNCAxLjQxIDEuNDFMMTggN3ptNC4yNC0xLjQxTDExLjY2IDE2LjE3IDcuNDggMTJsLTEuNDEgMS40MUwxMS42NiAxOWwxMi0xMi0xLjQyLTEuNDF6TS40MSAxMy40MSA2IDE5bDEuNDEtMS40MUwxLjgzIDEyIC40MSAxMy40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbmVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyA0LjkzIDEuNCAxLjRMOC40MyAxOS4wN2wtNS42LTUuNiAxLjQtMS40IDQuMiA0LjJMMTkuNzcgNC45M20wLTIuODNMOC40MyAxMy40NGwtNC4yLTQuMkwwIDEzLjQ3bDguNDMgOC40M0wyNCA2LjMzIDE5Ljc3IDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTYuMiA0LjggMTJsLTEuNCAxLjRMOSAxOSAyMSA3bC0xLjQtMS40TDkgMTYuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbnV0TGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDUuMDhBNyA3IDAgMCAxIDE4LjkyIDExaDMuMDNjLS40Ny00LjcyLTQuMjMtOC40OC04Ljk1LTguOTV2My4wM3pNMTguOTIgMTNBNyA3IDAgMCAxIDEzIDE4LjkydjMuMDNjNC43Mi0uNDcgOC40OC00LjIzIDguOTUtOC45NWgtMy4wM3pNMTEgMTguOTJjLTMuMzktLjQ5LTYtMy40LTYtNi45MnMyLjYxLTYuNDMgNi02LjkyVjIuMDVjLTUuMDUuNS05IDQuNzYtOSA5Ljk1IDAgNS4xOSAzLjk1IDkuNDUgOSA5Ljk1di0zLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9udXRTbWFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuODIgMTFoNy4xM2MtLjQ3LTQuNzItNC4yMy04LjQ4LTguOTUtOC45NXY3LjEzYy44NS4zMSAxLjUxLjk3IDEuODIgMS44MnpNMTUgNC41OEMxNyA1LjQgMTguNiA3IDE5LjQyIDloLTMuNDNjLS4yOC0uMzctLjYyLS43MS0uOTktLjk5VjQuNTh6TTIgMTJjMCA1LjE5IDMuOTUgOS40NSA5IDkuOTV2LTcuMTNDOS44NCAxNC40IDkgMTMuMyA5IDEyYzAtMS4zLjg0LTIuNCAyLTIuODJWMi4wNWMtNS4wNS41LTkgNC43Ni05IDkuOTV6bTctNy40MnYzLjQ0Yy0xLjIzLjkyLTIgMi4zOS0yIDMuOTggMCAxLjU5Ljc3IDMuMDYgMiAzLjk5djMuNDRDNi4wNCAxOC4yNCA0IDE1LjM1IDQgMTJjMC0zLjM1IDIuMDQtNi4yNCA1LTcuNDJ6bTQgMTAuMjR2Ny4xM2M0LjcyLS40NyA4LjQ4LTQuMjMgOC45NS04Ljk1aC03LjEzYy0uMzEuODUtLjk3IDEuNTEtMS44MiAxLjgyem0yIDEuMTdjLjM3LS4yOC43MS0uNjEuOTktLjk5aDMuNDNDMTguNiAxNyAxNyAxOC42IDE1IDE5LjQydi0zLjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJhZ0luZGljYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMThjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyem0tMi04Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMC02Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiA0YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUR5bmFtaWNGb3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTFINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDl2N3pNNCA5aDdWNkg0djN6bTExIDExSDRjLTEuMSAwLTItLjktMi0ydi0zYzAtMS4xLjktMiAyLTJoMTF2N3pNNCAxOGg5di0zSDR2M3ptMTgtOWgtMmwyLTVoLTd2N2gydjlsNS0xMXpNNC43NSAxNy4yNWgxLjV2LTEuNWgtMS41djEuNXptMC05aDEuNXYtMS41aC0xLjV2MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wNSA4LjA1YTcuMDA3IDcuMDA3IDAgMCAwIDAgOS45QzcuNDIgMTkuMzIgOS4yMSAyMCAxMSAyMHMzLjU4LS42OCA0Ljk1LTIuMDVDMTkuNDMgMTQuNDcgMjAgNCAyMCA0UzkuNTMgNC41NyA2LjA1IDguMDV6bTguNDkgOC40OWMtLjk1Ljk0LTIuMiAxLjQ2LTMuNTQgMS40Ni0uODkgMC0xLjczLS4yNS0yLjQ4LS42OC45Mi0yLjg4IDIuNjItNS40MSA0Ljg4LTcuMzItMi42MyAxLjM2LTQuODQgMy40Ni02LjM3IDYtMS40OC0xLjk2LTEuMzUtNC43NS40NC02LjU0QzkuMjEgNy43MiAxNC4wNCA2LjY1IDE3LjggNi4yYy0uNDUgMy43Ni0xLjUyIDguNTktMy4yNiAxMC4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkaXRDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTBoMTR2MmgyVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGEyIDIgMCAwIDAgMiAyaDd2LTJINVYxMHptMC00aDE0djJINVY2em0xNy44NCAxMC4yOC0uNzEuNzEtMi4xMi0yLjEyLjcxLS43MWEuOTk2Ljk5NiAwIDAgMSAxLjQxIDBsLjcxLjcxYy4zOS4zOS4zOSAxLjAyIDAgMS40MXptLTMuNTQtLjcgMi4xMiAyLjEyLTUuMyA1LjNIMTR2LTIuMTJsNS4zLTUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkaXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjA2IDkuMDIuOTIuOTItMS4xMSAxLjExIDEuNDEgMS40MSAyLjUyLTIuNTItMy43NS0zLjc1LTIuNTIgMi41MiAxLjQxIDEuNDEgMS4xMi0xLjF6bTYuNjUtMS45OGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGMtLjItLjItLjQ1LS4yOS0uNzEtLjI5cy0uNTEuMS0uNy4yOWwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6TTIuODEgMi44MSAxLjM5IDQuMjJsNy4zMiA3LjMyTDMgMTcuMjVWMjFoMy43NWw1LjcxLTUuNzEgNy4zMiA3LjMyIDEuNDEtMS40MUwyLjgxIDIuODF6TTUuOTIgMTlINXYtLjkybDUuMTMtNS4xMy45Mi45Mkw1LjkyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTdoMTR2Mkg1em03LTEyTDUuMzMgMTVoMTMuMzRMMTIgNXptMCAzLjYgMi45MyA0LjRIOS4wN0wxMiA4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdXJvU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOC41QTYuNDggNi40OCAwIDAgMSA5LjI0IDE1SDE1di0ySDguNThjLS4wNS0uMzMtLjA4LS42Ni0uMDgtMXMuMDMtLjY3LjA4LTFIMTVWOUg5LjI0QTYuNDkxIDYuNDkxIDAgMCAxIDE1IDUuNWMxLjYxIDAgMy4wOS41OSA0LjIzIDEuNTdMMjEgNS4zQTguOTU1IDguOTU1IDAgMCAwIDE1IDNjLTMuOTIgMC03LjI0IDIuNTEtOC40OCA2SDN2MmgzLjA2YTguMjYyIDguMjYyIDAgMCAwIDAgMkgzdjJoMy41MmMxLjI0IDMuNDkgNC41NiA2IDguNDggNiAyLjMxIDAgNC40MS0uODcgNi0yLjNsLTEuNzgtMS43N2MtMS4xMy45OC0yLjYgMS41Ny00LjIyIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdmVudFJlcGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEyVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg3di0ySDVWMTBoMTR2Mmgyem0tMi00SDVWNmgxNHYyem0tMy4zNiAxMmEzLjUwNCAzLjUwNCAwIDAgMCA2Ljg2LTFjMC0xLjkzLTEuNTctMy41LTMuNS0zLjUtLjk1IDAtMS44Mi4zOC0yLjQ1IDFIMThWMThoLTR2LTRoMS41djEuNDNjLjktLjg4IDIuMTQtMS40MyAzLjUtMS40MyAyLjc2IDAgNSAyLjI0IDUgNWE1LjAwMiA1LjAwMiAwIDAgMS05LjkgMWgxLjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXZlbnRTZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA1djdIOVY1aDZtMC0ySDljLTEuMSAwLTIgLjktMiAydjloMTBWNWMwLTEuMS0uOS0yLTItMnptNyA3aC0zdjNoM3YtM3pNNSAxMEgydjNoM3YtM3ptMTUgNUg0djZoMnYtNGgxMnY0aDJ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjEwaDE0djEwem0wLTEySDVWNmgxNHYyem0tNyA1aDV2NWgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4aXRUb0FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDkgMTUuNTkgMTEuNSAxN2w1LTUtNS01LTEuNDEgMS40MUwxMi42NyAxMUgzdjJoOS42N2wtMi41OCAyLjU5ek0xOSAzSDVhMiAyIDAgMCAwLTIgMnY0aDJWNWgxNHYxNEg1di00SDN2NGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjBoMTZ2Mkg0ek00IDJoMTZ2Mkg0ek05LjQxIDEzLjU5IDggMTVsNCA0IDQtNC0xLjQxLTEuNDFMMTMgMTUuMTdWOC44M2wxLjU5IDEuNThMMTYgOWwtNC00LTQgNCAxLjQxIDEuNDFMMTEgOC44M3Y2LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwbG9yZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOCAwIDEuNDgtLjQxIDIuODYtMS4xMiA0LjA2bDEuNDYgMS40NkE5Ljk2NyA5Ljk2NyAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0yLjA0IDAtMy45My42MS01LjUxIDEuNjZsMS40NiAxLjQ2QTcuODY5IDcuODY5IDAgMCAxIDEyIDR6bTIuOTEgOC4wOEwxNy41IDYuNWwtNS41OCAyLjU5IDIuOTkgMi45OXpNMi4xIDQuOTNsMS41NiAxLjU2QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMS41NiAxLjU2IDEuNDEtMS40MUwzLjUxIDMuNTEgMi4xIDQuOTN6bTMuMDIgMy4wMSAzLjk4IDMuOTgtMi42IDUuNTggNS41OC0yLjU5IDMuOTggMy45OGMtMS4yLjctMi41OCAxLjExLTQuMDYgMS4xMS00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBsb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLTUuNS0yLjUgNy41MS0zLjQ5TDE3LjUgNi41IDkuOTkgOS45OSA2LjUgMTcuNXptNS41LTYuNmMuNjEgMCAxLjEuNDkgMS4xIDEuMXMtLjQ5IDEuMS0xLjEgMS4xLTEuMS0uNDktMS4xLTEuMS40OS0xLjEgMS4xLTEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4dGVuc2lvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEuMzkgNC4yMiAxLjYyIDEuNjJjMCAuMDUtLjAxLjEtLjAxLjE2djMuOGMyLjcgMCAzIDIuMTYgMyAyLjdzLS4yOSAyLjctMyAyLjdWMTljMCAxLjEuOSAyIDIgMmgzLjhjMC0yLjcxIDIuMTYtMyAyLjctM3MyLjcuMjkgMi43IDNIMThjLjA2IDAgLjExIDAgLjE2LS4wMWwxLjYxIDEuNjEgMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJ6TTExLjUgMTZjLTEuNSAwLTMuNTcuODMtNC4zNyAzSDV2LTIuMTNjMi4xNy0uOCAzLTIuODcgMy00LjM3IDAtLjY5LS4xOC0xLjUtLjU4LTIuMjVsNi4zMyA2LjMzQTQuODkgNC44OSAwIDAgMCAxMS41IDE2ek04LjgzIDZsLTItMkg5YTIuNSAyLjUgMCAwIDEgNSAwaDRjMS4xIDAgMiAuOSAyIDJ2NGEyLjUgMi41IDAgMCAxIDAgNXYyLjE3bC0yLTJWMTNoMmMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41aC0yVjZoLTZWNGMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjV2Mkg4LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41IDQuNWMuMjggMCAuNS4yMi41LjV2Mmg2djZoMmMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTJ2NmgtMi4xMmMtLjY4LTEuNzUtMi4zOS0zLTQuMzgtM3MtMy43IDEuMjUtNC4zOCAzSDR2LTIuMTJjMS43NS0uNjggMy0yLjM5IDMtNC4zOCAwLTEuOTktMS4yNC0zLjctMi45OS00LjM4TDQgN2g2VjVjMC0uMjguMjItLjUuNS0uNW0wLTJBMi41IDIuNSAwIDAgMCA4IDVINGMtMS4xIDAtMS45OS45LTEuOTkgMnYzLjhoLjI5YzEuNDkgMCAyLjcgMS4yMSAyLjcgMi43cy0xLjIxIDIuNy0yLjcgMi43SDJWMjBjMCAxLjEuOSAyIDIgMmgzLjh2LS4zYzAtMS40OSAxLjIxLTIuNyAyLjctMi43czIuNyAxLjIxIDIuNyAyLjd2LjNIMTdjMS4xIDAgMi0uOSAyLTJ2LTRhMi41IDIuNSAwIDAgMCAwLTVWN2MwLTEuMS0uOS0yLTItMmgtNGEyLjUgMi41IDAgMCAwLTIuNS0yLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yNSAxM2ExLjI1IDEuMjUgMCAxIDEtMi41IDAgMS4yNSAxLjI1IDAgMCAxIDIuNSAwek0xNSAxMS43NWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41em03IC4yNWMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTIgNi40OCAyIDEyIDJzMTAgNC40OCAxMCAxMHpNMTAuNjYgNC4xMkMxMi4wNiA2LjQ0IDE0LjYgOCAxNy41IDhjLjQ2IDAgLjkxLS4wNSAxLjM0LS4xMkMxNy40NCA1LjU2IDE0LjkgNCAxMiA0Yy0uNDYgMC0uOTEuMDUtMS4zNC4xMnpNNC40MiA5LjQ3YTguMDQ2IDguMDQ2IDAgMCAwIDMuNjYtNC40NCA4LjA0NiA4LjA0NiAwIDAgMC0zLjY2IDQuNDR6TTIwIDEyYzAtLjc4LS4xMi0xLjUzLS4zMy0yLjI0LS43LjE1LTEuNDIuMjQtMi4xNy4yNGExMCAxMCAwIDAgMS03Ljc2LTMuNjlBMTAuMDE2IDEwLjAxNiAwIDAgMSA0IDExLjg2Yy4wMS4wNCAwIC4wOSAwIC4xNCAwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMjUgMTNhMS4yNSAxLjI1IDAgMSAxLTIuNSAwIDEuMjUgMS4yNSAwIDAgMSAyLjUgMHpNMTUgMTEuNzVhMS4yNSAxLjI1IDAgMSAwIDAgMi41IDEuMjUgMS4yNSAwIDAgMCAwLTIuNXptNyAuMjVjMCA1LjUyLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyIDYuNDggMiAxMiAyczEwIDQuNDggMTAgMTB6TTEwLjY2IDQuMTJDMTIuMDYgNi40NCAxNC42IDggMTcuNSA4Yy40NiAwIC45MS0uMDUgMS4zNC0uMTJDMTcuNDQgNS41NiAxNC45IDQgMTIgNGMtLjQ2IDAtLjkxLjA1LTEuMzQuMTJ6TTQuNDIgOS40N2E4LjA0NiA4LjA0NiAwIDAgMCAzLjY2LTQuNDQgOC4wNDYgOC4wNDYgMCAwIDAtMy42NiA0LjQ0ek0yMCAxMmMwLS43OC0uMTItMS41My0uMzMtMi4yNC0uNy4xNS0xLjQyLjI0LTIuMTcuMjRhMTAgMTAgMCAwIDEtNy43Ni0zLjY5QTEwLjAxNiAxMC4wMTYgMCAwIDEgNCAxMS44NmMuMDEuMDQgMCAuMDkgMCAuMTQgMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY3RDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINFY1aDE2djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS40MSAxMC40MiAxNy45OSA5bC0zLjE3IDMuMTctMS40MS0xLjQyTDEyIDEyLjE2IDE0LjgyIDE1ek01IDdoNXYySDV6TTUgMTFoNXYySDV6TTUgMTVoNXYySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhdm9yaXRlQm9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDNjLTEuNzQgMC0zLjQxLjgxLTQuNSAyLjA5QzEwLjkxIDMuODEgOS4yNCAzIDcuNSAzIDQuNDIgMyAyIDUuNDIgMiA4LjVjMCAzLjc4IDMuNCA2Ljg2IDguNTUgMTEuNTRMMTIgMjEuMzVsMS40NS0xLjMyQzE4LjYgMTUuMzYgMjIgMTIuMjggMjIgOC41IDIyIDUuNDIgMTkuNTggMyAxNi41IDN6bS00LjQgMTUuNTUtLjEuMS0uMS0uMUM3LjE0IDE0LjI0IDQgMTEuMzkgNCA4LjUgNCA2LjUgNS41IDUgNy41IDVjMS41NCAwIDMuMDQuOTkgMy41NyAyLjM2aDEuODdDMTMuNDYgNS45OSAxNC45NiA1IDE2LjUgNWMyIDAgMy41IDEuNSAzLjUgMy41IDAgMi44OS0zLjE0IDUuNzQtNy45IDEwLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmF2b3JpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDIxLjM1LTEuNDUtMS4zMkM1LjQgMTUuMzYgMiAxMi4yOCAyIDguNSAyIDUuNDIgNC40MiAzIDcuNSAzYzEuNzQgMCAzLjQxLjgxIDQuNSAyLjA5QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDMgMTkuNTggMyAyMiA1LjQyIDIyIDguNWMwIDMuNzgtMy40IDYuODYtOC41NSAxMS41NEwxMiAyMS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZheCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTFWNEg4djVoLS43OEM2LjY3IDguMzkgNS44OSA4IDUgOGMtMS42NiAwLTMgMS4zNC0zIDN2N2MwIDEuNjYgMS4zNCAzIDMgMyAuODkgMCAxLjY3LS4zOSAyLjIyLTFIMjJ2LThjMC0xLjY2LTEuMzQtMy0zLTN6TTYgMThjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTdjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjd6bTQtMTJoNnYzaC02VjZ6bTEwIDEySDh2LTdoMTFjLjU1IDAgMSAuNDUgMSAxdjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEyaDR2NUg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmVlZGJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdsLS41OS41OS0uNTguNThWNGgxNnYxMnptLTktNGgydjJoLTJ6bTAtNmgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlUHJlc2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoOHY0aDR2MTJ6bS02LTNjLTEuMSAwLTItLjktMi0yVjkuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxNWgyVjkuNWEyLjUgMi41IDAgMCAwLTUgMFYxNWMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00di00aC0ydjRjMCAxLjEtLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJBbHRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45NSA2LTMuNTcgNC41NSAxLjQzIDEuNDNjMS4wMy0xLjMxIDQuOTgtNi4zNyA0Ljk4LTYuMzdBLjk5OC45OTggMCAwIDAgMTkgNEg2LjgzbDIgMmg4LjEyek0yLjgxIDIuODEgMS4zOSA0LjIyIDEwIDEzdjZjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTIuMTdsNS43OCA1Ljc4IDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNG0wIDI0SDBcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA2aDEwbC01LjAxIDYuM0w3IDZ6bS0yLjc1LS4zOUM2LjI3IDguMiAxMCAxMyAxMCAxM3Y2YzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi02czMuNzItNC44IDUuNzQtNy4zOUEuOTk4Ljk5OCAwIDAgMCAxOC45NSA0SDUuMDRjLS44MyAwLTEuMy45NS0uNzkgMS42MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbmRJblBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiA0aDdsNSA1djguNThsLTEuODQtMS44NGE0Ljk5MiA0Ljk5MiAwIDAgMC0uNjQtNi4yOEE0Ljk2IDQuOTYgMCAwIDAgMTIgOGE1IDUgMCAwIDAtMy41MyAxLjQ2IDQuOTggNC45OCAwIDAgMCAwIDcuMDUgNC45ODIgNC45ODIgMCAwIDAgNi4yOC42M0wxNy42IDIwSDZWNHptOC4xMSAxMS4xYy0uNTYuNTYtMS4zMS44OC0yLjExLjg4cy0xLjU1LS4zMS0yLjExLS44OGMtLjU2LS41Ni0uODgtMS4zMS0uODgtMi4xMXMuMzEtMS41NS44OC0yLjExYy41Ni0uNTcgMS4zMS0uODggMi4xMS0uODhzMS41NS4zMSAyLjExLjg4Yy41Ni41Ni44OCAxLjMxLjg4IDIuMTFzLS4zMSAxLjU1LS44OCAyLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmluZFJlcGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZjMS4zOCAwIDIuNjMuNTYgMy41NCAxLjQ2TDEyIDEwaDZWNGwtMi4wNSAyLjA1QTYuOTc2IDYuOTc2IDAgMCAwIDExIDRjLTMuNTMgMC02LjQzIDIuNjEtNi45MiA2SDYuMUE1IDUgMCAwIDEgMTEgNnptNS42NCA5LjE0QTYuODkgNi44OSAwIDAgMCAxNy45MiAxMkgxNS45YTUgNSAwIDAgMS00LjkgNGMtMS4zOCAwLTIuNjMtLjU2LTMuNTQtMS40NkwxMCAxMkg0djZsMi4wNS0yLjA1QTYuOTc2IDYuOTc2IDAgMCAwIDExIDE4YzEuNTUgMCAyLjk4LS41MSA0LjE0LTEuMzZMMjAgMjEuNDkgMjEuNDkgMjBsLTQuODUtNC44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbmdlcnByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44MSA0LjQ3Yy0uMDggMC0uMTYtLjAyLS4yMy0uMDZDMTUuNjYgMy40MiAxNCAzIDEyLjAxIDNjLTEuOTggMC0zLjg2LjQ3LTUuNTcgMS40MS0uMjQuMTMtLjU0LjA0LS42OC0uMmEuNTA2LjUwNiAwIDAgMSAuMi0uNjhDNy44MiAyLjUyIDkuODYgMiAxMi4wMSAyYzIuMTMgMCAzLjk5LjQ3IDYuMDMgMS41Mi4yNS4xMy4zNC40My4yMS42N2EuNDkuNDkgMCAwIDEtLjQ0LjI4ek0zLjUgOS43MmEuNDk5LjQ5OSAwIDAgMS0uNDEtLjc5Yy45OS0xLjQgMi4yNS0yLjUgMy43NS0zLjI3QzkuOTggNC4wNCAxNCA0LjAzIDE3LjE1IDUuNjVjMS41Ljc3IDIuNzYgMS44NiAzLjc1IDMuMjVhLjUuNSAwIDAgMS0uMTIuN2MtLjIzLjE2LS41NC4xMS0uNy0uMTJhOS4zODggOS4zODggMCAwIDAtMy4zOS0yLjk0Yy0yLjg3LTEuNDctNi41NC0xLjQ3LTkuNC4wMS0xLjM2LjctMi41IDEuNy0zLjQgMi45Ni0uMDguMTQtLjIzLjIxLS4zOS4yMXptNi4yNSAxMi4wN2EuNDcuNDcgMCAwIDEtLjM1LS4xNWMtLjg3LS44Ny0xLjM0LTEuNDMtMi4wMS0yLjY0LS42OS0xLjIzLTEuMDUtMi43My0xLjA1LTQuMzQgMC0yLjk3IDIuNTQtNS4zOSA1LjY2LTUuMzlzNS42NiAyLjQyIDUuNjYgNS4zOWMwIC4yOC0uMjIuNS0uNS41cy0uNS0uMjItLjUtLjVjMC0yLjQyLTIuMDktNC4zOS00LjY2LTQuMzlzLTQuNjYgMS45Ny00LjY2IDQuMzljMCAxLjQ0LjMyIDIuNzcuOTMgMy44NS42NCAxLjE1IDEuMDggMS42NCAxLjg1IDIuNDIuMTkuMi4xOS41MSAwIC43MS0uMTEuMS0uMjQuMTUtLjM3LjE1em03LjE3LTEuODVjLTEuMTkgMC0yLjI0LS4zLTMuMS0uODktMS40OS0xLjAxLTIuMzgtMi42NS0yLjM4LTQuMzkgMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVjMCAxLjQxLjcyIDIuNzQgMS45NCAzLjU2LjcxLjQ4IDEuNTQuNzEgMi41NC43MS4yNCAwIC42NC0uMDMgMS4wNC0uMS4yNy0uMDUuNTMuMTMuNTguNDEuMDUuMjctLjEzLjUzLS40MS41OC0uNTcuMTEtMS4wNy4xMi0xLjIxLjEyek0xNC45MSAyMmMtLjA0IDAtLjA5LS4wMS0uMTMtLjAyLTEuNTktLjQ0LTIuNjMtMS4wMy0zLjcyLTIuMWE3LjI5NyA3LjI5NyAwIDAgMS0yLjE3LTUuMjJjMC0xLjYyIDEuMzgtMi45NCAzLjA4LTIuOTRzMy4wOCAxLjMyIDMuMDggMi45NGMwIDEuMDcuOTMgMS45NCAyLjA4IDEuOTRzMi4wOC0uODcgMi4wOC0xLjk0YzAtMy43Ny0zLjI1LTYuODMtNy4yNS02LjgzLTIuODQgMC01LjQ0IDEuNTgtNi42MSA0LjAzLS4zOS44MS0uNTkgMS43Ni0uNTkgMi44IDAgLjc4LjA3IDIuMDEuNjcgMy42MS4xLjI2LS4wMy41NS0uMjkuNjQtLjI2LjEtLjU1LS4wNC0uNjQtLjI5YTExLjE0IDExLjE0IDAgMCAxLS43My0zLjk2YzAtMS4yLjIzLTIuMjkuNjgtMy4yNCAxLjMzLTIuNzkgNC4yOC00LjYgNy41MS00LjYgNC41NSAwIDguMjUgMy41MSA4LjI1IDcuODMgMCAxLjYyLTEuMzggMi45NC0zLjA4IDIuOTRzLTMuMDgtMS4zMi0zLjA4LTIuOTRjMC0xLjA3LS45My0xLjk0LTIuMDgtMS45NHMtMi4wOC44Ny0yLjA4IDEuOTRjMCAxLjcxLjY2IDMuMzEgMS44NyA0LjUxLjk1Ljk0IDEuODYgMS40NiAzLjI3IDEuODUuMjcuMDcuNDIuMzUuMzUuNjEtLjA1LjIzLS4yNi4zOC0uNDcuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXRTY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTZoMTJWOEg2djh6bTItNmg4djRIOHYtNHptLTQgNUgydjNjMCAxLjEuOSAyIDIgMmgzdi0ySDR2LTN6bTAtOWgzVjRINGMtMS4xIDAtMiAuOS0yIDJ2M2gyVjZ6bTE2LTJoLTN2MmgzdjNoMlY2YzAtMS4xLS45LTItMi0yem0wIDE0aC0zdjJoM2MxLjEgMCAyLS45IDItMnYtM2gtMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxha3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJtMTQuMDUgMTcuNTgtLjAxLjAxLTIuNC0yLjQgMS4wNi0xLjA2IDEuMzUgMS4zNUwxNi41NCAxM2wxLjA2IDEuMDYtMy41NCAzLjU0LS4wMS0uMDJ6TTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyek03LjM0IDYuMjhsMS40MSAxLjQxIDEuNDEtMS40MSAxLjA2IDEuMDYtMS40MSAxLjQxIDEuNDEgMS40MS0xLjA2IDEuMDYtMS40MS0xLjQxLTEuNDEgMS40MS0xLjA2LTEuMDYgMS40MS0xLjQxLTEuNDEtMS40MSAxLjA2LTEuMDZ6TTEyIDIwYy0yLjIgMC00LjItLjktNS43LTIuM0wxNy43IDYuM0MxOS4xIDcuOCAyMCA5LjggMjAgMTJjMCA0LjQtMy42IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxpZ2h0TGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDE5aDE5djJoLTE5di0yem0xNi44NC0zLjE1Yy44LjIxIDEuNjItLjI2IDEuODQtMS4wNi4yMS0uOC0uMjYtMS42Mi0xLjA2LTEuODRsLTUuMzEtMS40Mi0yLjc2LTkuMDJMMTAuMTIgMnY4LjI4TDUuMTUgOC45NWwtLjkzLTIuMzItMS40NS0uMzl2NS4xN2wxNi41NyA0LjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxpZ2h0VGFrZW9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDE5aDE5djJoLTE5di0yem0xOS41Ny05LjM2Yy0uMjEtLjgtMS4wNC0xLjI4LTEuODQtMS4wNkwxNC45MiAxMGwtNi45LTYuNDMtMS45My41MSA0LjE0IDcuMTctNC45NyAxLjMzLTEuOTctMS41NC0xLjQ1LjM5IDIuNTkgNC40OUwyMSAxMS40OWMuODEtLjIzIDEuMjgtMS4wNSAxLjA3LTEuODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwVG9CYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdIN3YyaDJWN3ptMCA0SDd2Mmgydi0yem0wLThhMiAyIDAgMCAwLTIgMmgyVjN6bTQgMTJoLTJ2Mmgydi0yem02LTEydjJoMmMwLTEuMS0uOS0yLTItMnptLTYgMGgtMnYyaDJWM3pNOSAxN3YtMkg3YTIgMiAwIDAgMCAyIDJ6bTEwLTRoMnYtMmgtMnYyem0wLTRoMlY3aC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyek01IDdIM3YxMmEyIDIgMCAwIDAgMiAyaDEydi0ySDVWN3ptMTAtMmgyVjNoLTJ2MnptMCAxMmgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwVG9Gcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0yIDR2LTJIM2EyIDIgMCAwIDAgMiAyek0zIDloMlY3SDN2MnptMTIgMTJoMnYtMmgtMnYyem00LTE4SDlhMiAyIDAgMCAwLTIgMnYxMGEyIDIgMCAwIDAgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJIOVY1aDEwdjEwem0tOCA2aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsdXR0ZXJEYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDcgMTEuN2MuMjktLjM5LjgxLS41NiAxLjI3LS4zNy4xNy4wNy4zMi4xOC40My4zMy4yMi4yOC4yNS41OS4yMi44NS0uMDUuMzMtLjI1LjYzLS41NC43OSAwIDAtNC44NyAyLjk1LTUuMDcgMi42OXMzLjY5LTQuMjkgMy42OS00LjI5ek0yMiAxMGMwIDIuNS0xIDMtMS41IDMtLjIzIDAtLjQ0LS4xLS42Mi0uMjYtLjQ4IDMuMzItMi4zNiA1LjMxLTUuMzMgNS45OS4xMS40NC40OC43Ny45NS43N2guNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uNzgtLjE2LTEuMzktLjc4LTEuNTUtMS41Ni0uNDkuMDYtMSAuMS0xLjU0LjEtLjg4IDAtMS43LS4wOS0yLjQ1LS4yNS0uMDIuMDgtLjA1LjE2LS4wNS4yNSAwIC41NS40NSAxIDEgMWguNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uOS0uMTktMS41OS0xLTEuNTktMS45NiAwLS4xOC4wMy0uMzYuMDgtLjUzLTIuNDYtLjg2LTQuMDMtMi43OC00LjQ2LTUuNzQtLjE4LjE3LS4zOC4yNy0uNjIuMjdDMyAxMyAyIDEyLjUgMiAxMGMwLTIuMjcgMS43LTQuNSAzLTQuNS40MyAwIC40OS40OS41Ljg1YTcuOTg5IDcuOTg5IDAgMCAxIDUuNTUtMy4yOWMuMi0uOTYgMS4wOC0xLjU2IDEuOTUtMS41NnYxcy4zMy0uNSAxLS41Yy42NyAwIDEgLjUgMSAuNS0uNDkgMC0uODUuMzUtLjk2Ljc3IDEuODIuNDggMy4zOSAxLjU5IDQuNDYgMy4wOC4wMS0uMzYuMDctLjg1LjUtLjg1IDEuMyAwIDMgMi4yMyAzIDQuNXpNNSAxMWMwIC44MS4xIDEuNTMuMjUgMi4yMS4xOC0uNjkuNDYtMS4zMy44My0xLjkyYTMuNzcgMy43NyAwIDAgMS0uMzQtMS41NEEzLjc2NiAzLjc2NiAwIDAgMSA5LjUgNmMuOTYgMCAxLjg0LjM3IDIuNS45Ny42Ni0uNiAxLjU0LS45NyAyLjUtLjk3IDIuMDcgMCAzLjc1IDEuNjggMy43NSAzLjc1IDAgLjU1LS4xMiAxLjA3LS4zNCAxLjU0LjM3LjU5LjY2IDEuMjQuODQgMS45NC4xNS0uNjguMjUtMS40MS4yNS0yLjIzIDAtMy44Ni0zLjE0LTctNy03cy03IDMuMTQtNyA3em0xMi45OCA0LjI5YzAtLjEuMDItLjE5LjAyLS4yOSAwLTEuMDEtLjI2LTEuOTUtLjctMi43OC0uNjkuNzgtMS42OCAxLjI4LTIuOCAxLjI4LS4yNyAwLS41NC0uMDMtLjc5LS4wOS4xNC0uMjMuMjMtLjQ5LjI3LS43Ny4wMS0uMDcuMDEtLjEzLjAyLS4xOS4xNy4wMy4zMy4wNS41LjA1IDEuNTIgMCAyLjc1LTEuMjMgMi43NS0yLjc1UzE2LjAyIDcgMTQuNSA3Yy0uNjcgMC0xLjMyLjI1LTEuODMuNzJsLS42Ny42LS42Ny0uNkMxMC44MiA3LjI1IDEwLjE3IDcgOS41IDcgNy45OCA3IDYuNzUgOC4yMyA2Ljc1IDkuNzVjMCAxLjM0Ljk2IDIuNDYgMi4yMyAyLjdsLS43Ni44M2MtLjYtLjIyLTEuMTItLjU5LTEuNTMtMS4wNUE2LjAxIDYuMDEgMCAwIDAgNiAxNWMwIC4wOC4wMS4xNS4wMS4yNEM3LjEzIDE3LjA2IDkuMTQgMTggMTIgMThjMi44OCAwIDQuODgtLjkxIDUuOTgtMi43MXpNMTYgOS43NWMwIC45Ny0uNjcgMS43NS0xLjUgMS43NVMxMyAxMC43MiAxMyA5Ljc1IDEzLjY3IDggMTQuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6TTExIDkuNzVjMCAuOTctLjY3IDEuNzUtMS41IDEuNzVTOCAxMC43MiA4IDkuNzUgOC42NyA4IDkuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGcmVlQ2FuY2VsbGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjEgMjBINVYxMGgxNHY0LjM4bDItMlY2YzAtMS4xLS45LTItMi0yaC0xVjJoLTJ2Mkg4VjJINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMjBhMiAyIDAgMCAwIDIgMmg4LjIxbC0yLTJ6TTUgNmgxNHYySDVWNnptMTEuNTQgMTYuNUwxMyAxOC45NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNCAxLjQxIDEuNDEtNS42NCA1LjY2ek0xMC40MSAxNCAxMiAxNS41OSAxMC41OSAxNyA5IDE1LjQxIDcuNDEgMTcgNiAxNS41OSA3LjU5IDE0IDYgMTIuNDEgNy40MSAxMSA5IDEyLjU5IDEwLjU5IDExIDEyIDEyLjQxIDEwLjQxIDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR1RyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtOS4xMkwxMCAySDRjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoN2wxIDNoOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yek03LjE3IDE0LjU5Yy0yLjI1IDAtNC4wOS0xLjgzLTQuMDktNC4wOXMxLjgzLTQuMDkgNC4wOS00LjA5YzEuMDQgMCAxLjk5LjM3IDIuNzQgMS4wN2wuMDcuMDYtMS4yMyAxLjE4LS4wNi0uMDVjLS4yOS0uMjctLjc4LS41OS0xLjUyLS41OS0xLjMxIDAtMi4zOCAxLjA5LTIuMzggMi40MnMxLjA3IDIuNDIgMi4zOCAyLjQyYzEuMzcgMCAxLjk2LS44NyAyLjEyLTEuNDZINy4wOFY5LjkxaDMuOTVsLjAxLjA3Yy4wNC4yMS4wNS40LjA1LjYxIDAgMi4zNS0xLjYxIDQtMy45MiA0em02LjAzLTEuNzFjLjMzLjYuNzQgMS4xOCAxLjE5IDEuN2wtLjU0LjUzLS42NS0yLjIzem0uNzctLjc2aC0uOTlsLS4zMS0xLjA0aDMuOTlzLS4zNCAxLjMxLTEuNTYgMi43NGMtLjUyLS42Mi0uODktMS4yMy0xLjEzLTEuN3pNMjEgMjBjMCAuNTUtLjQ1IDEtMSAxaC03bDItMi0uODEtMi43Ny45Mi0uOTJMMTcuNzkgMThsLjczLS43My0yLjcxLTIuNjhjLjktMS4wMyAxLjYtMi4yNSAxLjkyLTMuNTFIMTl2LTEuMDRoLTMuNjRWOWgtMS4wNHYxLjA0aC0xLjk2TDExLjE4IDZIMjBjLjU1IDAgMSAuNDUgMSAxdjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2F2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjFoMTJ2Mkgxdi0yek01LjI0IDguMDdsMi44My0yLjgzIDE0LjE0IDE0LjE0LTIuODMgMi44M0w1LjI0IDguMDd6TTEyLjMyIDFsNS42NiA1LjY2LTIuODMgMi44My01LjY2LTUuNjZMMTIuMzIgMXpNMy44MyA5LjQ4bDUuNjYgNS42Ni0yLjgzIDIuODNMMSAxMi4zMWwyLjgzLTIuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHZW5lcmF0aW5nVG9rZW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6bTMtNy41aC0ydjVIOHYtNUg2VjloNnYxLjV6bTguMjUtNi43NUwyMyA1bC0yLjc1IDEuMjVMMTkgOWwtMS4yNS0yLjc1TDE1IDVsMi43NS0xLjI1TDE5IDFsMS4yNSAyLjc1em0wIDE0TDIzIDE5bC0yLjc1IDEuMjVMMTkgMjNsLTEuMjUtMi43NUwxNSAxOWwyLjc1LTEuMjVMMTkgMTVsMS4yNSAyLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2V0QXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1djZoMS4xN0wxMiAxMy4xNyA5LjgzIDExSDExVjVoMm0yLTJIOXY2SDVsNyA3IDctN2gtNFYzem00IDE1SDV2MmgxNHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdpZkJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5SDVWNWgxNHYxNHpNNSAzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJINXptNi41IDExaDF2LTRoLTF2NHptMiAwaDF2LTEuNUgxNnYtMWgtMS41VjExaDJ2LTFoLTN2NHptLTQtMnYxaC0xdi0yaDJjMC0uNTUtLjQ1LTEtMS0xaC0xYy0uNTUgMC0xIC40NS0xIDF2MmMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdpZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSA5SDEzdjZoLTEuNVY5ek05IDlINmMtLjYgMC0xIC41LTEgMXY0YzAgLjUuNCAxIDEgMWgzYy42IDAgMS0uNSAxLTF2LTJIOC41djEuNWgtMnYtM0gxMFYxMGMwLS41LS40LTEtMS0xem0xMCAxLjVWOWgtNC41djZIMTZ2LTJoMnYtMS41aC0ydi0xaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmFkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNy4xMy45NyAyLjI5LjQ3IDEuMTEgMS4yLjEgMi40Ny4yMS0xLjg4IDEuNjMtLjkxLjc5LjI3IDEuMTguNTYgMi40MS0yLjEyLTEuMjgtMS4wMy0uNjQtMS4wMy42Mi0yLjEyIDEuMjguNTYtMi40MS4yNy0xLjE4LS45MS0uNzktMS44OC0xLjYzIDIuNDctLjIxIDEuMi0uMS40Ny0xLjExLjk3LTIuMjdNMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDdoMTZ2Mkg0Vjd6bTAgNmgxNnYtMkg0djJ6bTAgNGg3di0ySDR2MnptMCA0aDd2LTJINHYyem0xMS40MS0yLjgzTDE0IDE2Ljc1bC0xLjQxIDEuNDFMMTUuNDEgMjEgMjAgMTYuNDIgMTguNTggMTVsLTMuMTcgMy4xN3pNNCAzdjJoMTZWM0g0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXBXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWxwQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMjUgMTYuNzRjMCAuNjktLjUzIDEuMjYtMS4yNSAxLjI2LS43IDAtMS4yNi0uNTYtMS4yNi0xLjI2IDAtLjcxLjU2LTEuMjUgMS4yNi0xLjI1LjcxIDAgMS4yNS41NSAxLjI1IDEuMjV6TTExLjk5IDZjLTEuNzcgMC0yLjk4IDEuMTUtMy40MyAyLjQ5bDEuNjQuNjljLjIyLS42Ny43NC0xLjQ4IDEuOC0xLjQ4IDEuNjIgMCAxLjk0IDEuNTIgMS4zNyAyLjMzLS41NC43Ny0xLjQ3IDEuMjktMS45NiAyLjE2LS4zOS42OS0uMzEgMS40OS0uMzEgMS45OGgxLjgyYzAtLjkzLjA3LTEuMTIuMjItMS40MS4zOS0uNzIgMS4xMS0xLjA2IDEuODctMi4xNy42OC0xIC40Mi0yLjM2LS4wMi0zLjA4LS41MS0uODQtMS41Mi0xLjUxLTMtMS41MXpNMTkgNUg1djE0aDE0VjVtMC0yYzEuMSAwIDIgLjkgMiAydjE0YzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlbHBPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxOGgydi0yaC0ydjJ6bTEtMTZDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTE0Yy0yLjIxIDAtNCAxLjc5LTQgNGgyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAyLTMgMS43NS0zIDVoMmMwLTIuMjUgMy0yLjUgMy01IDAtMi4yMS0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxN2gtMnYtMmgydjJ6bTIuMDctNy43NS0uOS45MkMxMy40NSAxMi45IDEzIDEzLjUgMTMgMTVoLTJ2LS41YzAtMS4xLjQ1LTIuMSAxLjE3LTIuODNsMS4yNC0xLjI2Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDEgMC0xLjEtLjktMi0yLTJzLTIgLjktMiAySDhjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIC44OC0uMzYgMS42OC0uOTMgMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZGVTb3VyY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODF6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZsMTAuOTQgMTAuOTRDMTQuODYgMTkuNTkgMTMuNDggMjAgMTIgMjB6TTcuOTQgNS4xMiA2LjQ5IDMuNjZBOS45MSA5LjkxIDAgMCAxIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTAgMCAyLjA0LS42MSAzLjkzLTEuNjYgNS41MWwtMS40Ni0xLjQ2QTcuODY5IDcuODY5IDAgMCAwIDIwIDEyYzAtNC40MS0zLjU5LTgtOC04LTEuNDggMC0yLjg2LjQxLTQuMDYgMS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZ2hsaWdodEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVoLTJWM2gydjJ6bS0yIDEwdjZsMi4yOS0yLjI5IDIuMyAyLjI5TDIxIDE5LjU5bC0yLjI5LTIuMjlMMjEgMTVoLTZ6bTQtNmgyVjdoLTJ2MnptMCA0aDJ2LTJoLTJ2MnptLTggOGgydi0yaC0ydjJ6TTcgNWgyVjNIN3Yyek0zIDE3aDJ2LTJIM3Yyem0yIDR2LTJIM2MwIDEuMS45IDIgMiAyek0xOSAzdjJoMmMwLTEuMS0uOS0yLTItMnptLTggMmgyVjNoLTJ2MnpNMyA5aDJWN0gzdjJ6bTQgMTJoMnYtMkg3djJ6bS00LThoMnYtMkgzdjJ6bTAtOGgyVjNjLTEuMSAwLTIgLjktMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlnaGxpZ2h0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41OSA4IDEyIDEwLjU5IDkuNDEgOCA4IDkuNDEgMTAuNTkgMTIgOCAxNC41OSA5LjQxIDE2IDEyIDEzLjQxIDE0LjU5IDE2IDE2IDE0LjU5IDEzLjQxIDEyIDE2IDkuNDEgMTQuNTkgOHpNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaXN0b3J5VG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuMSAxOS4zNyAxIDEuNzRjLS45Ni40NC0yLjAxLjczLTMuMS44NHYtMi4wMmMuNzQtLjA5IDEuNDQtLjI4IDIuMS0uNTZ6TTQuMDcgMTNIMi4wNWMuMTEgMS4xLjQgMi4xNC44NCAzLjFsMS43NC0xYy0uMjgtLjY2LS40Ny0xLjM2LS41Ni0yLjF6TTE1LjEgNC42M2wxLTEuNzRjLS45Ni0uNDQtMi0uNzMtMy4xLS44NHYyLjAyYy43NC4wOSAxLjQ0LjI4IDIuMS41NnpNMTkuOTMgMTFoMi4wMmMtLjExLTEuMS0uNC0yLjE0LS44NC0zLjFsLTEuNzQgMWMuMjguNjYuNDcgMS4zNi41NiAyLjF6TTguOSAxOS4zN2wtMSAxLjc0Yy45Ni40NCAyLjAxLjczIDMuMS44NHYtMi4wMmMtLjc0LS4wOS0xLjQ0LS4yOC0yLjEtLjU2ek0xMSA0LjA3VjIuMDVjLTEuMS4xMS0yLjE0LjQtMy4xLjg0bDEgMS43NGMuNjYtLjI4IDEuMzYtLjQ3IDIuMS0uNTZ6bTcuMzYgMy4xIDEuNzQtMS4wMWMtLjYzLS44Ny0xLjQtMS42NC0yLjI3LTIuMjdsLTEuMDEgMS43NGMuNTkuNDUgMS4xLjk2IDEuNTQgMS41NHpNNC42MyA4LjlsLTEuNzQtMWMtLjQ0Ljk2LS43MyAyLS44NCAzLjFoMi4wMmMuMDktLjc0LjI4LTEuNDQuNTYtMi4xem0xNS4zIDQuMWMtLjA5Ljc0LS4yOCAxLjQ0LS41NiAyLjFsMS43NCAxYy40NC0uOTYuNzMtMi4wMS44NC0zLjFoLTIuMDJ6bS0zLjEgNS4zNiAxLjAxIDEuNzRjLjg3LS42MyAxLjY0LTEuNCAyLjI3LTIuMjdsLTEuNzQtMS4wMWMtLjQ1LjU5LS45NiAxLjEtMS41NCAxLjU0ek03LjE3IDUuNjRsLTEtMS43NWMtLjg4LjY0LTEuNjQgMS40LTIuMjcgMi4yOGwxLjc0IDEuMDFhNy43IDcuNyAwIDAgMSAxLjUzLTEuNTR6TTUuNjQgMTYuODNsLTEuNzQgMWMuNjMuODcgMS40IDEuNjQgMi4yNyAyLjI3bDEuMDEtMS43NGE3LjcgNy43IDAgMCAxLTEuNTQtMS41M3pNMTMgN2gtMnY1LjQxbDQuMjkgNC4yOSAxLjQxLTEuNDEtMy43LTMuN1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2E5IDkgMCAwIDAtOSA5SDFsMy44OSAzLjg5LjA3LjE0TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkE4Ljk1NCA4Ljk1NCAwIDAgMCAxMyAyMWE5IDkgMCAwIDAgMC0xOHptLTEgNXY1bDQuMjUgMi41Mi43Ny0xLjI4LTMuNTItMi4wOVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGxzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODMgMTVoMS42N2MuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFIMTd2LTFoMnYuNWgxLjV2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2MS41YzAgLjU1LjQ1IDEgMSAxSDE5djFoLTJWMTNoLTEuMTdsMiAyek04IDEwLjgzVjE1SDYuNXYtMi41aC0yVjE1SDNWOWgxLjV2MmgyVjkuMzNMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MS03LjYtNy42SDEwdi0yLjE3bC0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgOUg4djZINi41di0yLjVoLTJWMTVIM1Y5aDEuNXYyaDJWOXptMTAgNmgzYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUgxN3YtMWgydi41aDEuNXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFIMTl2MWgtMlYxM2gtMS41djFjMCAuNTUuNDUgMSAxIDF6TTE0IDE1di0xLjVoLTIuNVY5SDEwdjZoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDUuNjkgNSA0LjVWMThoLTJ2LTZIOXY2SDd2LTcuODFsNS00LjVNMTIgMyAyIDEyaDN2OGg2di02aDJ2Nmg2di04aDNMMTIgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvcml6b250YWxTcGxpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTV2Mkg1di0yaDE0bTItMTBIM3YyaDE4VjV6bTAgNEgzdjJoMThWOXptMCA0SDN2NmgxOHYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdGVsQ2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSA4Ljg5Ljk0IDMuMTFoMi44MmwtMi4yNyAxLjYyLjkzIDMuMDFMMTEgMTQuNzlsLTIuNDIgMS44NC45My0zLjAxTDcuMjQgMTJoMi44MkwxMSA4Ljg5ek04LjU4IDEwSDFsNi4xNyA0LjQxTDQuODMgMjIgMTEgMTcuMzEgMTcuMTggMjJsLTIuMzUtNy41OUwyMSAxMGgtNy41OEwxMSAybC0yLjQyIDh6bTEyLjc4IDEyLTEuODYtNi4wMUwyMy42OCAxM2gtMy40NGwtMy4wOCAyLjIgMS40NiA0LjcyTDIxLjM2IDIyek0xNyA4bC0xLjgyLTYtMS4wNCAzLjQ1Ljc3IDIuNTVIMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3VyZ2xhc3NEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNGg4djMuNWwtMi44NCAyLjg0IDEuMjUgMS4yNUwxOCA4LjAxIDE3Ljk5IDhIMThWMkg2djEuMTdsMiAyek0yLjEgMi4xLjY5IDMuNTFsOC45IDguOUw2IDE2bC4wMS4wMUg2VjIyaDEydi0xLjE3bDIuNDkgMi40OSAxLjQxLTEuNDFMMi4xIDIuMXpNMTYgMjBIOHYtMy41bDIuODQtMi44NEwxNiAxOC44M1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXJnbGFzc0VtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDJ2NmguMDFMNiA4LjAxIDEwIDEybC00IDQgLjAxLjAxSDZWMjJoMTJ2LTUuOTloLS4wMUwxOCAxNmwtNC00IDQtMy45OS0uMDEtLjAxSDE4VjJINnptMTAgMTQuNVYyMEg4di0zLjVsNC00IDQgNHptLTQtNS00LTRWNGg4djMuNWwtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91cmdsYXNzRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAydjZoLjAxTDYgOC4wMSAxMCAxMmwtNCA0IC4wMS4wMUg2VjIyaDEydi01Ljk5aC0uMDFMMTggMTZsLTQtNCA0LTMuOTktLjAxLS4wMUgxOFYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdG1sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDlINXY2SDMuNXYtMi41aC0yVjE1SDBWOWgxLjV2MmgyVjl6bTE0IDBIMTNjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNXYtNC41aDFWMTRIMTZ2LTMuNTFoMVYxNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xek0xMSA5SDZ2MS41aDEuNzVWMTVoMS41di00LjVIMTFWOXptMTMgNnYtMS41aC0yLjVWOUgyMHY2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdHRwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDExaC0yVjlIMXY2aDEuNXYtMi41aDJWMTVINlY5SDQuNXYyem0yLjUtLjVoMS41VjE1SDEwdi00LjVoMS41VjlIN3YxLjV6bTUuNSAwSDE0VjE1aDEuNXYtNC41SDE3VjloLTQuNXYxLjV6bTktMS41SDE4djZoMS41di0yaDJjLjggMCAxLjUtLjcgMS41LTEuNXYtMWMwLS44LS43LTEuNS0xLjUtMS41em0wIDIuNWgtMnYtMWgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdHRwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek05IDZjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM3YySDlWNnptOSAxNEg2VjEwaDEydjEwem0tNi0zYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltcG9ydGFudERldmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDExLjAxIDE4IDExYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWg1Yy41NSAwIDEtLjQ1IDEtMXYtOWMwLS41NS0uNDUtLjk5LTEtLjk5ek0yMyAyMGgtNXYtN2g1djd6TTIwIDJIMkMuODkgMiAwIDIuODkgMCA0djEyYTIgMiAwIDAgMCAyIDJoN3YySDd2Mmg4di0yaC0ydi0yaDJ2LTJIMlY0aDE4djVoMlY0YTIgMiAwIDAgMC0yLTJ6bS04LjAzIDdMMTEgNmwtLjk3IDNIN2wyLjQ3IDEuNzYtLjk0IDIuOTEgMi40Ny0xLjggMi40NyAxLjgtLjk0LTIuOTFMMTUgOWgtMy4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluZm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnYyaC0yem0wIDRoMnY2aC0yem0xLTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5wdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMy4wMUgzYy0xLjEgMC0yIC45LTIgMlY5aDJWNC45OWgxOHYxNC4wM0gzVjE1SDF2NC4wMWMwIDEuMS45IDEuOTggMiAxLjk4aDE4YzEuMSAwIDItLjg4IDItMS45OHYtMTRhMiAyIDAgMCAwLTItMnpNMTEgMTZsNC00LTQtNHYzSDF2MmgxMHYzek0yMSAzLjAxSDNjLTEuMSAwLTIgLjktMiAyVjloMlY0Ljk5aDE4djE0LjAzSDNWMTVIMXY0LjAxYzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4di0xNGEyIDIgMCAwIDAtMi0yek0xMSAxNmw0LTQtNC00djNIMXYyaDEwdjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnN0YWxsRGVza3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE3SDRWNWg4VjNINGMtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDR2Mmg4di0yaDRjMS4xIDAgMi0uOSAyLTJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTQgNS01LTEuNDEtMS40MUwxOCAxMC4xN1YzaC0ydjcuMTdsLTIuNTktMi41OEwxMiA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zdGFsbE1vYmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE4SDdWNmg3VjRIN1YzaDdWMS4wMUw3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTVoLTJ2MnptMCAzSDd2LTFoMTB2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMTQgNS01LTEuNDEtMS40MUwxOSAxMC4xN1YzaC0ydjcuMTdsLTIuNTktMi41OEwxMyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW50ZWdyYXRpb25JbnN0cnVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIuNzVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjMuNVwiLFwiclwiOlwiLjc1XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTUgMTV2NGgxNFY1SDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0LjE3IDguODMgMTIgMTEgOS44MyA5LjU5IDguNDEgNiAxMmwzLjU5IDMuNTl6TTE0LjQxIDE1LjU5IDE4IDEybC0zLjU5LTMuNTlMMTMgOS44MyAxNS4xNyAxMiAxMyAxNC4xN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtLjE0IDAtLjI3LjAxLS40LjA0YTIuMDA4IDIuMDA4IDAgMCAwLTEuNDQgMS4xOWMtLjEuMjMtLjE2LjQ5LS4xNi43N3YxNGMwIC4yNy4wNi41NC4xNi43OHMuMjUuNDUuNDMuNjRjLjI3LjI3LjYyLjQ3IDEuMDEuNTUuMTMuMDIuMjYuMDMuNC4wM2gxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek0xOSAxNXY0SDVWNWgxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUludmVydENvbG9ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNC44MVYxOWMtMy4zMSAwLTYtMi42My02LTUuODcgMC0xLjU2LjYyLTMuMDMgMS43NS00LjE0TDEyIDQuODFNMTIgMiA2LjM1IDcuNTZDNC45IDguOTkgNCAxMC45NiA0IDEzLjEzIDQgMTcuNDggNy41OCAyMSAxMiAyMXM4LTMuNTIgOC03Ljg3YzAtMi4xNy0uOS00LjE0LTIuMzUtNS41N0wxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSmF2YXNjcmlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0di0xaDEuNXYuNWgydi0xSDEzYy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MWgtMS41di0uNWgtMnYxSDE2Yy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXpNOSA5djQuNUg3LjV2LTFINnYxYzAgLjgzLjY3IDEuNSAxLjUgMS41SDljLjgzIDAgMS41LS42NyAxLjUtMS41VjlIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUpvaW5GdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwicnhcIjpcIjNcIixcInJ5XCI6XCI1Ljc0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxMmMwLS45Ny4yMy00LjE2IDMuMDMtNi41QzkuNzUgNS4xOSA4LjkgNSA4IDVjLTMuODYgMC03IDMuMTQtNyA3czMuMTQgNyA3IDdjLjkgMCAxLjc1LS4xOSAyLjUzLS41LTIuOC0yLjM0LTMuMDMtNS41My0zLjAzLTYuNXpNMTYgNWMtLjkgMC0xLjc1LjE5LTIuNTMuNSAyLjggMi4zNCAzLjAzIDUuNTMgMy4wMyA2LjUgMCAuOTctLjIzIDQuMTYtMy4wMyA2LjUuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUpvaW5Jbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJ4XCI6XCIzXCIsXCJyeVwiOlwiNS43NFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjA0IDE2Ljg3Yy0uMzMuMDgtLjY4LjEzLTEuMDQuMTMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNWMuMzYgMCAuNzEuMDUgMS4wNC4xMy4zOS0uNTYuODgtMS4xMiAxLjQ5LTEuNjNDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtLjYxLS41MS0xLjEtMS4wNy0xLjQ5LTEuNjN6TTE2IDVjLS45IDAtMS43NS4xOS0yLjUzLjUuNjEuNTEgMS4xIDEuMDcgMS40OSAxLjYzLjMzLS4wOC42OC0uMTMgMS4wNC0uMTMgMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDVjLS4zNiAwLS43MS0uMDUtMS4wNC0uMTMtLjM5LjU2LS44OCAxLjEyLTEuNDkgMS42My43OC4zMSAxLjYzLjUgMi41My41IDMuODYgMCA3LTMuMTQgNy03cy0zLjE0LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSm9pbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEyYzAtLjk3LjIzLTQuMTYgMy4wMy02LjVDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtMi44LTIuMzQtMy4wMy01LjUzLTMuMDMtNi41ek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41LjYxLjUxIDEuMSAxLjA3IDEuNDkgMS42My4zMy0uMDguNjgtLjEzIDEuMDQtLjEzIDIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1Yy0uMzYgMC0uNzEtLjA1LTEuMDQtLjEzLS4zOS41Ni0uODggMS4xMi0xLjQ5IDEuNjMuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUpvaW5SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJ4XCI6XCIzXCIsXCJyeVwiOlwiNS43NFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEyYzAgLjk3LS4yMyA0LjE2LTMuMDMgNi41Ljc4LjMxIDEuNjMuNSAyLjUzLjUgMy44NiAwIDctMy4xNCA3LTdzLTMuMTQtNy03LTdjLS45IDAtMS43NS4xOS0yLjUzLjUgMi44IDIuMzQgMy4wMyA1LjUzIDMuMDMgNi41ek04IDE5Yy45IDAgMS43NS0uMTkgMi41My0uNS0uNjEtLjUxLTEuMS0xLjA3LTEuNDktMS42My0uMzMuMDgtLjY4LjEzLTEuMDQuMTMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNWMuMzYgMCAuNzEuMDUgMS4wNC4xMy4zOS0uNTYuODgtMS4xMiAxLjQ5LTEuNjNDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhYmVsSW1wb3J0YW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE4Ljk5aDExYy42NyAwIDEuMjctLjMyIDEuNjMtLjgzTDIxIDEybC00LjM3LTYuMTZDMTYuMjcgNS4zMyAxNS42NyA1IDE1IDVINGw1IDctNSA2Ljk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFiZWxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDcgMy41NSA1LTEuNjMgMi4yOSAxLjQzIDEuNDNMMjIgMTJsLTQuMzctNi4xNkMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNWwtNy4zNy4wMSAyIDEuOTlIMTZ6TTIgNC4wM2wxLjU4IDEuNThDMy4yMiA1Ljk2IDMgNi40NiAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuMjggMCAuNTUtLjA3Ljc5LS4xOEwxOC45NyAyMWwxLjQxLTEuNDFMMy40MSAyLjYyIDIgNC4wM3pNMTQuOTcgMTdINVY3LjAzTDE0Ljk3IDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFiZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVMNSA1LjAxQzMuOSA1LjAxIDMgNS45IDMgN3YxMGMwIDEuMS45IDEuOTkgMiAxLjk5TDE2IDE5Yy42NyAwIDEuMjctLjMzIDEuNjMtLjg0TDIyIDEybC00LjM3LTYuMTZ6TTE2IDE3SDVWN2gxMWwzLjU1IDVMMTYgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNi45MyA2aC0yLjk1YTE1LjY1IDE1LjY1IDAgMCAwLTEuMzgtMy41NkE4LjAzIDguMDMgMCAwIDEgMTguOTIgOHpNMTIgNC4wNGMuODMgMS4yIDEuNDggMi41MyAxLjkxIDMuOTZoLTMuODJjLjQzLTEuNDMgMS4wOC0yLjc2IDEuOTEtMy45NnpNNC4yNiAxNEM0LjEgMTMuMzYgNCAxMi42OSA0IDEycy4xLTEuMzYuMjYtMmgzLjM4Yy0uMDguNjYtLjE0IDEuMzItLjE0IDJzLjA2IDEuMzQuMTQgMkg0LjI2em0uODIgMmgyLjk1Yy4zMiAxLjI1Ljc4IDIuNDUgMS4zOCAzLjU2QTcuOTg3IDcuOTg3IDAgMCAxIDUuMDggMTZ6bTIuOTUtOEg1LjA4YTcuOTg3IDcuOTg3IDAgMCAxIDQuMzMtMy41NkExNS42NSAxNS42NSAwIDAgMCA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMnMuMDctMS4zNS4xNi0yaDQuNjhjLjA5LjY1LjE2IDEuMzIuMTYgMnMtLjA3IDEuMzQtLjE2IDJ6bS4yNSA1LjU2Yy42LTEuMTEgMS4wNi0yLjMxIDEuMzgtMy41NmgyLjk1YTguMDMgOC4wMyAwIDAgMS00LjMzIDMuNTZ6TTE2LjM2IDE0Yy4wOC0uNjYuMTQtMS4zMi4xNC0ycy0uMDYtMS4zNC0uMTQtMmgzLjM4Yy4xNi42NC4yNiAxLjMxLjI2IDJzLS4xIDEuMzYtLjI2IDJoLTMuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYXVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5SDVWNWg3VjNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2N3pNMTQgM3YyaDMuNTlsLTkuODMgOS44MyAxLjQxIDEuNDFMMTkgNi40MVYxMGgyVjNoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMZWFkZXJib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDExVjNIOHY2SDJ2MTJoMjBWMTFoLTZ6bS02LTZoNHYxNGgtNFY1em0tNiA2aDR2OEg0di04em0xNiA4aC00di02aDR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpZ2h0YnVsYkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVoLTNjMCAuODMuNjcgMS41IDEuNSAxLjV6TTkgMTVoNnYxLjVIOXpNMTIgNWMtMi43NiAwLTUgMi4yNC01IDUgMCAxLjY0LjggMy4wOSAyLjAzIDRoNS45NUE0Ljk4NSA0Ljk4NSAwIDAgMCAxNyAxMGMwLTIuNzYtMi4yNC01LTUtNXptMi40MyA3LjVIOS41N0EzLjQ3MyAzLjQ3MyAwIDAgMSA4LjUgMTBjMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNWMwIC45NS0uMzkgMS44NC0xLjA3IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpZ2h0YnVsYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMjFjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTFIOXYxem0zLTE5QzguMTQgMiA1IDUuMTQgNSA5YzAgMi4zOCAxLjE5IDQuNDcgMyA1Ljc0VjE3YzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xdi0yLjI2YzEuODEtMS4yNyAzLTMuMzYgMy01Ljc0IDAtMy44Ni0zLjE0LTctNy03em0yLjg1IDExLjEtLjg1LjZWMTZoLTR2LTIuM2wtLjg1LS42QTQuOTk3IDQuOTk3IDAgMCAxIDcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS42My0uOCAzLjE2LTIuMTUgNC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGluZVN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNmg1di0ySDN2MnptNi41IDBoNXYtMmgtNXYyem02LjUgMGg1di0yaC01djJ6TTMgMjBoMnYtMkgzdjJ6bTQgMGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMyAxMmg4di0ySDN2MnptMTAgMGg4di0yaC04djJ6TTMgNHY0aDE4VjRIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpbmVXZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3aDE4di0ySDN2MnptMCAzaDE4di0xSDN2MXptMC03aDE4di0zSDN2M3ptMC05djRoMThWNEgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem00IDRoMTR2LTJIN3Yyem0wIDRoMTR2LTJIN3Yyek03IDd2MmgxNFY3SDd6bS00IDZoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTQgNGgxNHYtMkg3djJ6bTAgNGgxNHYtMkg3djJ6TTcgN3YyaDE0VjdIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2tDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyMFYxMGgxMnYxYy43IDAgMS4zNy4xIDIgLjI5VjEwYzAtMS4xLS45LTItMi0yaC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoNi4yNmMtLjQyLS42LS43NS0xLjI4LS45Ny0ySDZ6TTkgNmMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzdjJIOVY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTEuNjUgNy4zNUwxNy41IDE4LjJWMTVoMXYyLjc5bDEuODUgMS44NS0uNy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNmgyYzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDN2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0wIDEySDZWMTBoMTJ2MTB6bS02LTNjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9ja1BlcnNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMjBWMTBoMTJ2MWMuNyAwIDEuMzcuMSAyIC4yOVYxMGMwLTEuMS0uOS0yLTItMmgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDYuMjZjLS40Mi0uNi0uNzUtMS4yOC0uOTctMkg2ek05IDZjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM3YySDlWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDJjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTguODMgMTggMTggMThzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptMCA2Yy0xLjAzIDAtMS45NC0uNTItMi40OC0xLjMyLjczLS40MiAxLjU3LS42OCAyLjQ4LS42OHMxLjc1LjI2IDIuNDguNjhjLS41NC44LTEuNDUgMS4zMi0yLjQ4IDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NrUmVzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYTkgOSAwIDAgMC05IDljMCAuMDYuMDEuMTIuMDEuMTlsLTEuODQtMS44NC0xLjQxIDEuNDFMNSAxNmw0LjI0LTQuMjQtMS40MS0xLjQxLTEuODIgMS44MmMwLS4wNi0uMDEtLjExLS4wMS0uMTcgMC0zLjg2IDMuMTQtNyA3LTdzNyAzLjE0IDcgNy0zLjE0IDctNyA3Yy0xLjkgMC0zLjYyLS43Ni00Ljg4LTEuOTlMNi43IDE4LjQyQTguOTgyIDguOTgyIDAgMCAwIDEzIDIxYTkgOSAwIDAgMCAwLTE4em0yIDh2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek05IDZjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM3YySDlWNnptOSAxNEg2VjEwaDEydjEwem0tNi0zYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNyA5LjYgOC40bDIuNiAyLjZIMnYyaDEwLjJsLTIuNiAyLjZMMTEgMTdsNS01LTUtNXptOSAxMmgtOHYyaDhjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMmgtOHYyaDh2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2dvdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDgtMS40MSAxLjQxTDE3LjE3IDExSDl2Mmg4LjE3bC0xLjU4IDEuNThMMTcgMTZsNC00LTQtNHpNNSA1aDdWM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDd2LTJINVY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG95YWx0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNTgtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OHMxLjA1LS4yMiAxLjQxLS41OWw3LTdjLjM3LS4zNi41OS0uODYuNTktMS40MXMtLjIzLTEuMDYtLjU5LTEuNDJ6TTEzIDIwLjAxIDQgMTFWNGg3di0uMDFsOSA5LTcgNy4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjkgMTIuNTVjMCAuNTcuMjMgMS4wNy42IDEuNDVsMy41IDMuNSAzLjUtMy41YTIuMDUzIDIuMDUzIDAgMCAwLTIuOS0yLjlsLS42LjYtLjYtLjU5Yy0uMzctLjM4LS44OS0uNjEtMS40NS0uNjEtMS4xMyAwLTIuMDUuOTItMi4wNSAyLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFuYWdlQWNjb3VudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTh2LS42NWMwLS4zNC4xNi0uNjYuNDEtLjgxQzYuMSAxNS41MyA4LjAzIDE1IDEwIDE1Yy4wMyAwIC4wNSAwIC4wOC4wMS4xLS43LjMtMS4zNy41OS0xLjk4LS4yMi0uMDItLjQ0LS4wMy0uNjctLjAzLTIuNDIgMC00LjY4LjY3LTYuNjEgMS44Mi0uODguNTItMS4zOSAxLjUtMS4zOSAyLjUzVjIwaDkuMjZjLS40Mi0uNi0uNzUtMS4yOC0uOTctMkg0ek0xMCAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTIwLjc1IDE2YzAtLjIyLS4wMy0uNDItLjA2LS42M2wxLjE0LTEuMDEtMS0xLjczLTEuNDUuNDljLS4zMi0uMjctLjY4LS40OC0xLjA4LS42M0wxOCAxMWgtMmwtLjMgMS40OWMtLjQuMTUtLjc2LjM2LTEuMDguNjNsLTEuNDUtLjQ5LTEgMS43MyAxLjE0IDEuMDFjLS4wMy4yMS0uMDYuNDEtLjA2LjYzcy4wMy40Mi4wNi42M2wtMS4xNCAxLjAxIDEgMS43MyAxLjQ1LS40OWMuMzIuMjcuNjguNDggMS4wOC42M0wxNiAyMWgybC4zLTEuNDljLjQtLjE1Ljc2LS4zNiAxLjA4LS42M2wxLjQ1LjQ5IDEtMS43My0xLjE0LTEuMDFjLjAzLS4yMS4wNi0uNDEuMDYtLjYzek0xNyAxOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYW5hZ2VIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuNjkgMTguMzcgMS4xNC0xLTEtMS43My0xLjQ1LjQ5Yy0uMzItLjI3LS42OC0uNDgtMS4wOC0uNjNMMjAgMTRoLTJsLS4zIDEuNDljLS40LjE1LS43Ni4zNi0xLjA4LjYzbC0xLjQ1LS40OS0xIDEuNzMgMS4xNCAxYy0uMDguNS0uMDguNzYgMCAxLjI2bC0xLjE0IDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE4IDI0aDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMWMuMDgtLjUxLjA4LS43NyAwLTEuMjd6TTE5IDIxYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMTEgN3Y1LjQxbDIuMzYgMi4zNiAxLjA0LTEuNzktMS40LTEuMzlWN2gtMnptMTAgNWE5IDkgMCAwIDAtOS05QzkuMTcgMyA2LjY1IDQuMzIgNSA2LjM2VjRIM3Y2aDZWOEg2LjI2QTcuMDEgNy4wMSAwIDAgMSAxMiA1YzMuODYgMCA3IDMuMTQgNyA3aDJ6bS0xMC4xNCA2LjkxYy0yLjk5LS40OS01LjM1LTIuOS01Ljc4LTUuOTFIMy4wNmMuNSA0LjUgNC4zMSA4IDguOTQgOGguMDdsLTEuMjEtMi4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hcmtBc1VucmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjMgN2gyLjZjLS4wNi0uNDctLjM2LS45NC0uNzktMS4xN0wxMC41IDIgMi44IDUuODNjLS40OC4yNi0uOC44MS0uOCAxLjM0VjE1YzAgMS4xLjkgMiAyIDJWNy40TDEwLjUgNGw1LjczIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhIN2MtMS4xIDAtMiAuOS0yIDJ2OWMwIDEuMS45IDIgMiAyaDEzYzEuMSAwIDItLjkgMi0ydi05YzAtMS4xLS45LTItMi0yem0wIDExSDd2LTdsNi41IDMuMzNMMjAgMTJ2N3ptLTYuNS01LjY3TDcgMTBoMTNsLTYuNSAzLjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya3VucmVhZE1haWxib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2SDEwdjJoMTB2MTJINFY4aDJ2NGgyVjRoNlYwSDZ2Nkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXhpbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djJIM1YzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMTYgNC00LTQtNHYzaC01LjA2QTguOTc0IDguOTc0IDAgMCAwIDggMy45NSAzLjAwNSAzLjAwNSAwIDAgMCA1IDFDMy4zNCAxIDIgMi4zNCAyIDRzMS4zNCAzIDMgM2MuOTUgMCAxLjc4LS40NSAyLjMzLTEuMTRDOS4yMyA2LjkgMTAuNiA4Ljc3IDEwLjkyIDExaC0zLjFDNy40IDkuODQgNi4zIDkgNSA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzYzEuMyAwIDIuNC0uODQgMi44Mi0yaDMuMWMtLjMyIDIuMjMtMS42OSA0LjEtMy41OCA1LjE0QzYuNzggMTcuNDUgNS45NSAxNyA1IDE3Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzYTIuOTkgMi45OSAwIDAgMCAyLjk5LTIuOTVBOC45NzQgOC45NzQgMCAwIDAgMTIuOTMgMTNIMTh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pbmltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5aDEydjJINnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVsVHJhaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDEzLjVjMCAyLTIuNSAzLjUtMi41IDVoLTJjMC0xLjUtMi41LTMtMi41LTUgMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNXptLTIuNSA2aC0yVjIxaDJ2LTEuNXptNi02LjVjMCAxLjY4LS41OSAzLjIxLTEuNTggNC40MmwxLjQyIDEuNDJhOC45NzggOC45NzggMCAwIDAtMS0xMi42OGwtMS40MiAxLjQyQTYuOTkzIDYuOTkzIDAgMCAxIDE5IDEzem0tMy04LTQtNHYzYTkgOSAwIDAgMC05IDljMCAyLjIzLjgyIDQuMjcgMi4xNiA1Ljg0bDEuNDItMS40MkE2LjkzOCA2LjkzOCAwIDAgMSA1IDEzYzAtMy44NiAzLjE0LTcgNy03djNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV0d29ya1BpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNC42NyAzLjQxIDYuMDkgMiA3LjVsOC41IDguNUg0djJoMTZ2LTJoLTYuNWw1LjE1LTUuMTVBMi41IDIuNSAwIDEgMCAxOS41IDYgMi41IDIuNSAwIDAgMCAxNyA4LjVjMCAuMzUuMDcuNjcuMi45N2wtNS4yIDUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ld0xhYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgMTItNC4zNyA2LjE2Yy0uMzcuNTItLjk4Ljg0LTEuNjMuODRoLTN2LTJoM2wzLjU1LTVMMTUgN0g1djNIM1Y3YzAtMS4xLjktMiAyLTJoMTBjLjY1IDAgMS4yNi4zMSAxLjYzLjg0TDIxIDEyem0tMTEgM0g3di0zSDV2M0gydjJoM3YzaDJ2LTNoM3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5leHRQbGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljk3IDExLjAzQzE0Ljg3IDkuNzkgMTMuMjggOSAxMS41IDljLTIuODIgMC01LjE4IDEuOTUtNS44MiA0LjU2bC45Ni4zMkM3LjE1IDExLjY2IDkuMTMgMTAgMTEuNSAxMGMxLjUxIDAgMi44NS42OCAzLjc2IDEuNzRMMTMgMTRoNVY5bC0yLjAzIDIuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOaWdodGxpZ2h0Um91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDIyYzEuMDUgMCAyLjA1LS4xNiAzLS40Ni00LjA2LTEuMjctNy01LjA2LTctOS41NHMyLjk0LTguMjcgNy05LjU0Yy0uOTUtLjMtMS45NS0uNDYtMy0uNDYtNS41MiAwLTEwIDQuNDgtMTAgMTBzNC40OCAxMCAxMCAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQWNjb3VudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4xOCAxMC45NGMuMi0uNDQuMzItLjkyLjMyLTEuNDRDMTUuNSA3LjU3IDEzLjkzIDYgMTIgNmMtLjUyIDAtMSAuMTItMS40NC4zMmw0LjYyIDQuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC0xLjg1LjYzLTMuNTUgMS42OS00LjlsMi44NiAyLjg2YTMuNDcgMy40NyAwIDAgMCAyLjk5IDIuOTlsMi4yIDIuMmMtLjU3LS4xLTEuMTUtLjE1LTEuNzQtLjE1LTIuMzIgMC00LjQ1LjgtNi4xNCAyLjEyQTcuOTU3IDcuOTU3IDAgMCAxIDQgMTJ6bTggOGMtMS43NCAwLTMuMzQtLjU2LTQuNjUtMS41QzguNjYgMTcuNTYgMTAuMjYgMTcgMTIgMTdzMy4zNC41NiA0LjY1IDEuNWMtMS4zMS45NC0yLjkxIDEuNS00LjY1IDEuNXptNi4zMS0zLjFMNy4xIDUuNjlBNy45MDIgNy45MDIgMCAwIDEgMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuODUtLjYzIDMuNTQtMS42OSA0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb2lzZUF3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTVoLTJhMS4wMDMgMS4wMDMgMCAwIDEtMS45NS4zMmMtLjE1LS40NC0uNC0xLjA4LS45My0xLjYxbC0xLjM2LTEuMzZDOS4yOCAxMS44NyA5IDExLjE5IDkgMTAuNWEyLjUgMi41IDAgMCAxIDQuOTUtLjVoMi4wMmMtLjI1LTIuMjUtMi4xNi00LTQuNDctNEM5LjAyIDYgNyA4LjAyIDcgMTAuNWMwIDEuMjIuNDkgMi40MSAxLjM1IDMuMjdsMS4zNiAxLjM2Yy4xNy4xNy4zMS40NC40NC44MkEzLjAxMyAzLjAxMyAwIDAgMCAxMyAxOGMxLjY1IDAgMy0xLjM1IDMtM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiMTIuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuNiA2LjU4IDEuNTggMS4yNmMuMzUtLjU3Ljc3LTEuMSAxLjI0LTEuNTdMNC44NSA1LjAyYy0uNDcuNDctLjg4IDEtMS4yNSAxLjU2ek05LjQ2IDQuNDJsLS44Ny0xLjgxYy0uNjMuMjMtMS4yNC41Mi0xLjguODdsLjg3IDEuODFjLjU2LS4zNiAxLjE2LS42NSAxLjgtLjg3ek00LjQ5IDkuMjZsLTEuOTYtLjQ1Yy0uMjEuNjMtLjM2IDEuMjgtLjQ0IDEuOTVsMS45Ni40NWE3LjkgNy45IDAgMCAxIC40NC0xLjk1ek0yMC40IDYuNThhOS40IDkuNCAwIDAgMC0xLjI1LTEuNTZsLTEuNTggMS4yNmMuNDguNDcuODkuOTkgMS4yNCAxLjU3bDEuNTktMS4yN3pNNC4wNCAxMi43OWwtMS45Ni40NWMuMDguNjcuMjMgMS4zMy40NCAxLjk1bDEuOTctLjQ1Yy0uMjItLjYyLS4zOC0xLjI3LS40NS0xLjk1ek0xNy4yMSAzLjQ4Yy0uNTctLjM1LTEuMTctLjY0LTEuOC0uODdsLS44NyAxLjgxYy42NC4yMiAxLjI0LjUxIDEuOC44N2wuODctMS44MXpNMTMgNC4wN1YyLjA1Yy0uMzMtLjAzLS42Ni0uMDUtMS0uMDVzLS42Ny4wMi0xIC4wNXYyLjAyYy4zMy0uMDQuNjYtLjA3IDEtLjA3cy42Ny4wMyAxIC4wN3pNMTEgMTkuOTN2Mi4wMmMuMzMuMDMuNjYuMDUgMSAuMDVzLjY3LS4wMiAxLS4wNXYtMi4wMmMtLjMzLjA0LS42Ni4wNy0xIC4wN3MtLjY3LS4wMy0xLS4wN3pNMTkuNTEgMTQuNzRsMS45Ny40NWMuMjEtLjYzLjM2LTEuMjguNDQtMS45NWwtMS45Ni0uNDVjLS4wNy42OC0uMjMgMS4zMy0uNDUgMS45NXpNMTkuOTYgMTEuMjFsMS45Ni0uNDVhOS42OSA5LjY5IDAgMCAwLS40NC0xLjk1bC0xLjk3LjQ1Yy4yMi42Mi4zOCAxLjI3LjQ1IDEuOTV6TTE3LjU4IDE3LjczbDEuNTggMS4yNmMuNDctLjQ4Ljg4LTEgMS4yNS0xLjU2bC0xLjU4LTEuMjZhOS40IDkuNCAwIDAgMS0xLjI1IDEuNTZ6TTYuNzkgMjAuNTJjLjU3LjM1IDEuMTcuNjQgMS44Ljg3bC44Ny0xLjgxYy0uNjQtLjIyLTEuMjQtLjUxLTEuOC0uODdsLS44NyAxLjgxek0xNC41NCAxOS41OGwuODcgMS44MWMuNjMtLjIzIDEuMjQtLjUyIDEuOC0uODdsLS44Ny0xLjgxYy0uNTYuMzYtMS4xNi42NS0xLjguODd6TTMuNiAxNy40MmE5LjQgOS40IDAgMCAwIDEuMjUgMS41NmwxLjU4LTEuMjZhNy44NyA3Ljg3IDAgMCAxLTEuMjQtMS41N0wzLjYgMTcuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb2lzZUNvbnRyb2xPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzEuNDQgMCAyLjc5LjM4IDMuOTUgMS4wNUwxNy40IDMuNkMxNS44NSAyLjU5IDEzLjk5IDIgMTIgMnMtMy44NS41OS01LjQxIDEuNTlsMS40NSAxLjQ1QTguMDM0IDguMDM0IDAgMCAxIDEyIDR6TTIwIDEyYzAgMS40NC0uMzggMi43OS0xLjA1IDMuOTVsMS40NSAxLjQ1YzEuMDEtMS41NSAxLjYtMy40MSAxLjYtNS40cy0uNTktMy44NS0xLjU5LTUuNDFsLTEuNDUgMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAyMCAxMnpNMTIgMjBjLTEuNDQgMC0yLjc5LS4zOC0zLjk1LTEuMDVMNi42IDIwLjRDOC4xNSAyMS40MSAxMC4wMSAyMiAxMiAyMnMzLjg1LS41OSA1LjQxLTEuNTlsLTEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAxMiAyMHpNNCAxMmMwLTEuNDQuMzgtMi43OSAxLjA1LTMuOTVMMy41OSA2LjU5QzIuNTkgOC4xNSAyIDEwLjAxIDIgMTJzLjU5IDMuODUgMS41OSA1LjQxbDEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSA0IDEyek0xMS41IDZDOS4wMiA2IDcgOC4wMiA3IDEwLjVjMCAxLjIyLjQ5IDIuNDEgMS4zNSAzLjI3bDEuMzYgMS4zNmMuMTcuMTcuMzEuNDQuNDQuODJBMy4wMTMgMy4wMTMgMCAwIDAgMTMgMThjMS42NSAwIDMtMS4zNSAzLTNoLTJhMS4wMDMgMS4wMDMgMCAwIDEtMS45NS4zMmMtLjE1LS40NC0uNC0xLjA4LS45My0xLjYxbC0xLjM2LTEuMzZDOS4yOCAxMS44NyA5IDExLjE5IDkgMTAuNWEyLjUgMi41IDAgMCAxIDQuOTUtLjVoMi4wMmMtLjI1LTIuMjUtMi4xNi00LTQuNDctNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiMTIuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RBY2Nlc3NpYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem05IDl2LTJjLTEuNTQuMDItMy4wOS0uNzUtNC4wNy0xLjgzbC0xLjI5LTEuNDNjLS4yNC0uMjQtLjQ0LS4zNi0uNjMtLjQ2LS4zNi0uMTktLjcyLS4zLTEuMi0uMjYtLjQ5LjA0LS45MS4yNy0xLjIzLjYxTDE0IDExLjA1YzEuMjkgMS4wNyAzLjI1IDEuOTQgNSAxLjk1em0tOSA3Yy0xLjY2IDAtMy0xLjM0LTMtMyAwLTEuMzEuODQtMi40MSAyLTIuODNWMTIuMWE1IDUgMCAxIDAgNS45IDUuOWgtMi4wN2MtLjQxIDEuMTYtMS41MiAyLTIuODMgMnpNMi44MSAyLjgxIDEuMzkgNC4yMiAxMCAxMi44M1YxNWMwIDEuMS45IDIgMiAyaDIuMTdsNS42MSA1LjYxIDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RTdGFydGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSA2SDl2OGgyVjh6bTYgNC01LTR2OGw1LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RlQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zem0xLTlINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9mZmxpbmVCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMi4wMmMtNS41MSAwLTkuOTggNC40Ny05Ljk4IDkuOThzNC40NyA5Ljk4IDkuOTggOS45OCA5Ljk4LTQuNDcgOS45OC05Ljk4UzE3LjUxIDIuMDIgMTIgMi4wMnptMCAxNy45NmMtNC40IDAtNy45OC0zLjU4LTcuOTgtNy45OFM3LjYgNC4wMiAxMiA0LjAyIDE5Ljk4IDcuNiAxOS45OCAxMiAxNi40IDE5Ljk4IDEyIDE5Ljk4ek0xMi43NSA1bC00LjUgOC41aDMuMTRWMTlsNC4zNi04LjVoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPZmZsaW5lUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0tNS01aDEwdjJIN3ptMy4zLTMuOEw4LjQgOS4zIDcgMTAuN2wzLjMgMy4zTDE3IDcuM2wtMS40LTEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9uRGV2aWNlVHJhaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNmgydjFoLTJ6TTEyIDExYy0xLjEgMC0yIC45LTIgMiAwIC43NC40IDEuMzggMSAxLjcydi43OGgydi0uNzhjLjYtLjM1IDEtLjk4IDEtMS43MiAwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMS4wMSA2IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTggMjFINnYtMWgxMnYxem0wLTNINlY2aDEydjEyem0wLTE0SDZWM2gxMnYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4wMSAxNS45NWMuNjItLjgzLjk5LTEuODQuOTktMi45NXMtLjM3LTIuMTItLjk5LTIuOTVsLTEuMDcgMS4wN2MuMzUuNTQuNTYgMS4xOS41NiAxLjg4cy0uMjEgMS4zNC0uNTYgMS44OGwxLjA3IDEuMDd6TTkuMDYgMTQuODhjLS4zNS0uNTQtLjU2LTEuMTktLjU2LTEuODggMC0xLjkzIDEuNTctMy41IDMuNS0zLjV2MS4yNWwyLjI1LTItMi4yNS0yVjhjLTIuNzYgMC01IDIuMjQtNSA1IDAgMS4xMS4zNyAyLjEyLjk5IDIuOTVsMS4wNy0xLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT25saW5lUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTEuNWMwIDItMi41IDMuNS0yLjUgNWgtMmMwLTEuNS0yLjUtMy0yLjUtNUM4LjUgOS41NyAxMC4wNyA4IDEyIDhzMy41IDEuNTcgMy41IDMuNXptLTIuNSA2aC0yVjE5aDJ2LTEuNXptOS01LjVjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDdsLTEuMDYgMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAyMC41IDEyYzAgMi4zNC0uOTUgNC40Ny0yLjQ5IDYuMDFsMS4wNiAxLjA2QTkuOTY5IDkuOTY5IDAgMCAwIDIyIDEyek0zLjUgMTJjMC0yLjM0Ljk1LTQuNDcgMi40OS02LjAxTDQuOTMgNC45M0E5Ljk2OSA5Ljk2OSAwIDAgMCAyIDEyYzAgMi43NiAxLjEyIDUuMjYgMi45MyA3LjA3bDEuMDYtMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAzLjUgMTJ6bTE0IDBjMCAxLjUyLS42MiAyLjg5LTEuNjEgMy44OWwxLjA2IDEuMDZBNi45NzYgNi45NzYgMCAwIDAgMTkgMTJjMC0xLjkzLS43OC0zLjY4LTIuMDUtNC45NWwtMS4wNiAxLjA2Yy45OSAxIDEuNjEgMi4zNyAxLjYxIDMuODl6TTcuMDUgMTYuOTVsMS4wNi0xLjA2Yy0xLTEtMS42MS0yLjM3LTEuNjEtMy44OXMuNjItMi44OSAxLjYxLTMuODlMNy4wNSA3LjA1QTYuOTc2IDYuOTc2IDAgMCAwIDUgMTJjMCAxLjkzLjc4IDMuNjggMi4wNSA0Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3BhY2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMEgwdjI0aDI0VjB6bTAgMEgwdjI0aDI0VjB6TTAgMjRoMjRWMEgwdjI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42NiA4IDEyIDIuMzUgNi4zNCA4QTguMDIgOC4wMiAwIDAgMCA0IDEzLjY0YzAgMiAuNzggNC4xMSAyLjM0IDUuNjdhNy45OSA3Ljk5IDAgMCAwIDExLjMyIDBjMS41Ni0xLjU2IDIuMzQtMy42NyAyLjM0LTUuNjdTMTkuMjIgOS41NiAxNy42NiA4ek02IDE0Yy4wMS0yIC42Mi0zLjI3IDEuNzYtNC40TDEyIDUuMjdsNC4yNCA0LjM4QzE3LjM4IDEwLjc3IDE3Ljk5IDEyIDE4IDE0SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPcGVuSW5Ccm93c2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDR2LTJINVY4aDE0djEwaC00djJoNGMxLjEgMCAyLS45IDItMlY2YTIgMiAwIDAgMC0yLTJ6bS03IDYtNCA0aDN2Nmgydi02aDNsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9wZW5JbkZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMVYzaC04bDMuMjkgMy4yOS0xMCAxMEwzIDEzdjhoOGwtMy4yOS0zLjI5IDEwLTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3BlbkluTmV3T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNzkgNS44IDE0IDNoN3Y3bC0yLjc5LTIuOC00LjA5IDQuMDktMS40MS0xLjQxIDQuMDgtNC4wOHpNMTkgMTJ2NC4xN2wyIDJWMTJoLTJ6bS43OCAxMC42MUwxOC4xNyAyMUg1YTIgMiAwIDAgMS0yLTJWNS44M0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTE2LjE3IDE5bC00Ljg4LTQuODgtMS41OSAxLjU5LTEuNDEtMS40MSAxLjU5LTEuNTlMNSA3LjgzVjE5aDExLjE3ek03LjgzIDVIMTJWM0g1LjgzbDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9wZW5Jbk5ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9wZW5XaXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5aDRWNmgzbC01LTUtNSA1aDN2M3ptLTEgMUg2VjdsLTUgNSA1IDV2LTNoM3YtNHptMTQgMi01LTV2M2gtM3Y0aDN2M2w1LTV6bS05IDNoLTR2M0g3bDUgNSA1LTVoLTN2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPdXRib25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGJvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDkuODNWMTRoMlY5LjgzbDEuNTkgMS41OEwxNiAxMGwtNC00LTQgNCAxLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDV2LTNoMy4wMmMuOTEgMS4yMSAyLjM1IDIgMy45OCAyczMuMDYtLjc5IDMuOTgtMkgxOXYzem0wLTVoLTQuMThjLS40MSAxLjE2LTEuNTEgMi0yLjgyIDJzLTIuNC0uODQtMi44Mi0ySDVWNWgxNHY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3V0bGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiA5VjhjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMXMxLS40NSAxLTF6bTYgMFY4YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xem0tMiA1YzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYyaDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPdXRwdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyAxNyA1LTUtNS01LTEuNDEgMS40MUwxOC4xNyAxMUg5djJoOS4xN2wtMi41OCAyLjU5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoMTR2MmgyVjVhMiAyIDAgMCAwLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhZ2V2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS40OSAxNmMuODggMCAxLjctLjI2IDIuMzktLjdsMi40NCAyLjQ0IDEuNDItMS40Mi0yLjQ0LTIuNDNjLjQ0LS43LjctMS41MS43LTIuMzlDMTYgOS4wMSAxMy45OSA3IDExLjUgN1M3IDkuMDEgNyAxMS41IDkuMDEgMTYgMTEuNDkgMTZ6bS4wMS03YTIuNSAyLjUgMCAwIDEgMCA1IDIuNSAyLjUgMCAwIDEgMC01ek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bS44OS04LjljLTEuNzgtLjU5LTIuNjQtLjk2LTIuNjQtMS45IDAtMS4wMiAxLjExLTEuMzkgMS44MS0xLjM5IDEuMzEgMCAxLjc5Ljk5IDEuOSAxLjM0bDEuNTgtLjY3Yy0uMTUtLjQ0LS44Mi0xLjkxLTIuNjYtMi4yM1Y1aC0xLjc1djEuMjZjLTIuNi41Ni0yLjYyIDIuODUtMi42MiAyLjk2IDAgMi4yNyAyLjI1IDIuOTEgMy4zNSAzLjMxIDEuNTguNTYgMi4yOCAxLjA3IDIuMjggMi4wMyAwIDEuMTMtMS4wNSAxLjYxLTEuOTggMS42MS0xLjgyIDAtMi4zNC0xLjg3LTIuNC0yLjA5bC0xLjY2LjY3Yy42MyAyLjE5IDIuMjggMi43OCAzLjAyIDIuOTZWMTloMS43NXYtMS4yNGMuNTItLjA5IDMuMDItLjU5IDMuMDItMy4yMi4wMS0xLjM5LS42LTIuNjEtMy0zLjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFuVG9vbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4Ljg5IDExLjc3LTMuOC0xLjY3Yy0uMTMtLjA2LS4yOC0uMS0uNDQtLjFIMTRWNS41YTIuNSAyLjUgMCAwIDAtNSAwdjguMTVsLTEuODctLjRjLS4xOS0uMDMtMS4wMi0uMTUtMS43My41Nkw0IDE1LjIybDUuMTIgNS4xOWMuMzcuMzguODguNTkgMS40MS41OWg2LjU1Yy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC45Mi01LjQ0YTIgMiAwIDAgMC0xLjA4LTIuMTJ6TTE3LjA4IDE5aC02LjU1bC0zLjctMy43OCA0LjE3Ljg5VjUuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY2LjE4aDEuNzZMMTggMTMuNTYgMTcuMDggMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5Ub29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjRoLTYuNTVjLTEuMDggMC0yLjE0LS40NS0yLjg5LTEuMjNsLTcuMy03LjYxIDIuMDctMS44M2MuNjItLjU1IDEuNTMtLjY2IDIuMjYtLjI3TDggMTQuMzRWNC43OWEyLjUgMi41IDAgMCAxIDMuMDEtMi40NUMxMS4xIDEuMDQgMTIuMTguMDEgMTMuNS4wMWMuODYgMCAxLjYxLjQzIDIuMDYgMS4wOS4yOS0uMTIuNjEtLjE4Ljk0LS4xOGEyLjUgMi41IDAgMCAxIDIuNSAyLjV2LjI4YTIuNSAyLjUgMCAwIDEgMyAyLjQ1VjIwYzAgMi4yMS0xLjc5IDQtNCA0ek00LjE0IDE1LjI4bDUuODYgNi4xYy4zOC4zOS45LjYyIDEuNDQuNjJIMThjMS4xIDAgMi0uOSAyLTJWNi4xNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTJoLTJWMy40MmMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTJoLTJWMi41MWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTJoLTJWNC43OWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIzLS41LjV2MTIuODdsLTUuMzUtMi44My0uNTEuNDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXltZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZW5kaW5nQWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDE2LjUgMTcuMlYxNGgxdjIuNzlsMS44NSAxLjg1LS43Ljcxek0xOCAzaC0zLjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNWMwIDEuMS45IDIgMiAyaDYuMTFhNi43NDMgNi43NDMgMCAwIDEtMS40Mi0ySDZWNWgydjNoOFY1aDJ2NS4wOGMuNzEuMSAxLjM4LjMxIDIgLjZWNWMwLTEuMS0uOS0yLTItMnptLTYgMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVuZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDRDNS41NyA0IDQgNS41NyA0IDcuNVM1LjU3IDExIDcuNSAxMSAxMSA5LjQzIDExIDcuNSA5LjQzIDQgNy41IDR6bTAgNUM2LjY3IDkgNiA4LjMzIDYgNy41UzYuNjcgNiA3LjUgNiA5IDYuNjcgOSA3LjUgOC4zMyA5IDcuNSA5em05IDRjLTEuOTMgMC0zLjUgMS41Ny0zLjUgMy41czEuNTcgMy41IDMuNSAzLjUgMy41LTEuNTcgMy41LTMuNS0xLjU3LTMuNS0zLjUtMy41em0wIDVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01LjQxIDIwIDQgMTguNTkgMTguNTkgNCAyMCA1LjQxIDUuNDEgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtQ2FtZXJhTWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJzMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptOC0xaC0zLjE3bC0xLjg2LTJIOC45Nkw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC03di0xLjA5YzIuODMtLjQ4IDUtMi45NCA1LTUuOTFoLTJjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRINmMwIDIuOTcgMi4xNyA1LjQzIDUgNS45MVYxOUg0VjdoNC4yMWwuNTktLjY1TDEwLjA0IDVoNC4yNGwxLjI0IDEuMzUuNTkuNjVIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtQ29udGFjdENhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC44NCA0LjIyYy0uMDUtLjEyLS4xMS0uMjMtLjE4LS4zNC0uMTQtLjIxLS4zMy0uNC0uNTQtLjU0LS4xMS0uMDctLjIyLS4xMy0uMzQtLjE4LS4yNC0uMS0uNS0uMTYtLjc4LS4xNmgtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0uNDIgMC0uOC4xMy0xLjEyLjM0LS4yMS4xNC0uNC4zMy0uNTQuNTQtLjA3LjExLS4xMy4yMi0uMTguMzQtLjEuMjQtLjE2LjUtLjE2Ljc4djE0YTIgMiAwIDAgMCAyIDJoMTRjLjI4IDAgLjU0LS4wNi43OC0uMTYuMTItLjA1LjIzLS4xMS4zNC0uMTguMjEtLjE0LjQtLjMzLjU0LS41NC4yMS0uMzIuMzQtLjcxLjM0LTEuMTJWNWMwLS4yOC0uMDYtLjU0LS4xNi0uNzh6TTUgMTlWNWgxNHYxNEg1em03LTYuMTJjLTIuMDMgMC02IDEuMDgtNiAzLjU4VjE4aDEydi0xLjUzYzAtMi41MS0zLjk3LTMuNTktNi0zLjU5ek04LjMxIDE2Yy42OS0uNTYgMi4zOC0xLjEyIDMuNjktMS4xMnMzLjAxLjU2IDMuNjkgMS4xMkg4LjMxek0xMiAxMmMxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVybURhdGFTZXR0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45OSAxMS41N0gyMFYwTDAgMjBoMTEuNTZ2LTJINC44M0wxNy45OSA0LjgzdjYuNzR6bTUuNzggOC43NS0xLjA3LS44M2MuMDItLjE2LjA0LS4zMi4wNC0uNDkgMC0uMTctLjAxLS4zMy0uMDQtLjQ5bDEuMDYtLjgzYS4yNi4yNiAwIDAgMCAuMDYtLjMybC0xLTEuNzNjLS4wNi0uMTEtLjE5LS4xNS0uMzEtLjExbC0xLjI0LjVjLS4yNi0uMi0uNTQtLjM3LS44NS0uNDlsLS4xOS0xLjMyYy0uMDEtLjEyLS4xMi0uMjEtLjI0LS4yMWgtMmMtLjEyIDAtLjIzLjA5LS4yNS4yMWwtLjE5IDEuMzJjLS4zLjEzLS41OS4yOS0uODUuNDlsLTEuMjQtLjVjLS4xMS0uMDQtLjI0IDAtLjMxLjExbC0xIDEuNzNjLS4wNi4xMS0uMDQuMjQuMDYuMzJsMS4wNi44M2EzLjkwOCAzLjkwOCAwIDAgMCAwIC45OGwtMS4wNi44M2EuMjYuMjYgMCAwIDAtLjA2LjMybDEgMS43M2MuMDYuMTEuMTkuMTUuMzEuMTFsMS4yNC0uNWMuMjYuMi41NC4zNy44NS40OWwuMTkgMS4zMmMuMDIuMTIuMTIuMjEuMjUuMjFoMmMuMTIgMCAuMjMtLjA5LjI1LS4yMWwuMTktMS4zMmMuMy0uMTMuNTktLjI5Ljg0LS40OWwxLjI1LjVjLjExLjA0LjI0IDAgLjMxLS4xMWwxLTEuNzNhLjI2LjI2IDAgMCAwLS4wNi0uMzJ6bS00Ljc4LjE4Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcm1EZXZpY2VJbmZvcm1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjJoLTJ6bTAgNGgydjZoLTJ6bTYtOS45OUw3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyek03IDRWM2gxMHYxSDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtSWRlbnRpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAgOWMyLjcgMCA1LjggMS4yOSA2IDJ2MUg2di0uOTljLjItLjcyIDMuMy0yLjAxIDYtMi4wMW0wLTExQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDljLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtTWVkaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNkgwdjVoLjAxTDAgMjBjMCAxLjEuOSAyIDIgMmgxOHYtMkgyVjZ6bTUgOWgxNGwtMy41LTQuNS0yLjUgMy4wMUwxMS41IDl6TTIyIDRoLThsLTItMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDEySDZWNGg1LjE3bDEuNDEgMS40MS41OS41OUgyMnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcm1QaG9uZU1zZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjEtLjAzLS4yMS0uMDUtLjMxLS4wNS0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMDc0IDE1LjA3NCAwIDAgMS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NiAyLjU5TDUuNzkgOC44Yy0uNDEtMS4yMS0uNjctMi40OC0uNzYtMy44ek0xOSAxOC45N2MtMS4zMi0uMDktMi42LS4zNS0zLjgtLjc2bDEuMi0xLjJjLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNTF6TTEyIDN2MTBsMy0zaDZWM2gtOXptNyA1aC01VjVoNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVybVNjYW5XaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzQzYuOTUgMyAzLjE1IDQuODUgMCA3LjIzTDEyIDIyIDI0IDcuMjVDMjAuODUgNC44NyAxNy4wNSAzIDEyIDN6TTIuOTIgNy42NUM1LjggNS44NSA4Ljc0IDUgMTIgNWMzLjI1IDAgNi4xOC44NSA5LjA4IDIuNjdMMTIgMTguODMgMi45MiA3LjY1ek0xMSAxMGgydjZoLTJ6bTAtNGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjQuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4zNCAxNC44NmMtLjg3LTEuMDItMS42LTEuODktMi40OC0yLjkxLS40Ni0uNTQtMS4wNS0xLjA4LTEuNzUtMS4zMi0uMTEtLjA0LS4yMi0uMDctLjMzLS4wOS0uMjUtLjA0LS41Mi0uMDQtLjc4LS4wNHMtLjUzIDAtLjc5LjA1Yy0uMTEuMDItLjIyLjA1LS4zMy4wOS0uNy4yNC0xLjI4Ljc4LTEuNzUgMS4zMi0uODcgMS4wMi0xLjYgMS44OS0yLjQ4IDIuOTEtMS4zMSAxLjMxLTIuOTIgMi43Ni0yLjYyIDQuNzkuMjkgMS4wMiAxLjAyIDIuMDMgMi4zMyAyLjMyLjczLjE1IDMuMDYtLjQ0IDUuNTQtLjQ0aC4xOGMyLjQ4IDAgNC44MS41OCA1LjU0LjQ0IDEuMzEtLjI5IDIuMDQtMS4zMSAyLjMzLTIuMzIuMzEtMi4wNC0xLjMtMy40OS0yLjYxLTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBocCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDloMS41djZIMTN2LTIuNWgtMlYxNUg5LjVWOUgxMXYyaDJWOXptLTUgMS41djFjMCAuOC0uNyAxLjUtMS41IDEuNWgtMnYySDNWOWgzLjVjLjggMCAxLjUuNyAxLjUgMS41em0tMS41IDBoLTJ2MWgydi0xem0xNSAwdjFjMCAuOC0uNyAxLjUtMS41IDEuNWgtMnYyaC0xLjVWOUgyMGMuOCAwIDEuNS43IDEuNSAxLjV6bS0xLjUgMGgtMnYxaDJ2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWN0dXJlSW5QaWN0dXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMWgtOHY2aDh2LTZ6bS0yIDRoLTR2LTJoNHYyem00LTEySDNjLTEuMSAwLTIgLjg4LTIgMS45OFYxOWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjQuOThDMjMgMy44OCAyMi4xIDMgMjEgM3ptMCAxNi4wMkgzVjQuOTdoMTh2MTQuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWN0dXJlSW5QaWN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3aC04djZoOFY3em0tMiA0aC00VjloNHYyem00LThIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOThWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOThoMTh2MTQuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaW5FbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMlY2SDR2MTJoMTB2Mkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJ2NmgtMnptLTEgMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bS00LjM0LTZIOXY1LjY2aDJ2LTIuMjRsMi45NSAyLjk1IDEuNDEtMS40MUwxMi40MSAxMGgyLjI0Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaW5JbnZva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMnY2YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxMHYySDR2MTJoMTZ2LTZoMnptMC01YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzIDEuMzQgMyAzIDMgMy0xLjM0IDMtM3pNOS4zNCAxMmgyLjI0bC0yLjk1IDIuOTUgMS40MSAxLjQxTDEzIDEzLjQydjIuMjRoMlYxMEg5LjM0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMi41VjFoNXY1SDkuNVYzLjU2TDMuNTYgOS41SDZWMTFIMVY2aDEuNXYyLjQ0TDguNDQgMi41SDZ6bTE1Ljg5IDExLjI3LTMuOC0xLjY3Yy0uMTMtLjA2LS4yOC0uMS0uNDQtLjFIMTdWNy41YTIuNSAyLjUgMCAwIDAtNSAwdjguMTVsLTEuODctLjRjLS4xOS0uMDMtMS4wMi0uMTUtMS43My41Nkw3IDE3LjIybDUuMTIgNS4xOWMuMzcuMzguODguNTkgMS40MS41OWg2LjU1Yy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC45Mi01LjQ0YTIgMiAwIDAgMC0xLjA4LTIuMTJ6TTIwLjA4IDIxaC02LjU1bC0zLjctMy43OCA0LjE3Ljg5VjcuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY2LjE4aDEuNzZMMjEgMTUuNTYgMjAuMDggMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGFnaWFyaXNtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTQgMThINlY0aDd2NWg1djExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjAzIDExLjAzYTMuNDk1IDMuNDk1IDAgMCAwIDAgNC45NSAzLjQ4IDMuNDggMCAwIDAgNC4xMy41OWwxLjg4IDEuODggMS40MS0xLjQxLTEuODgtMS44OGMuNzEtMS4zMy41My0zLjAxLS41OS00LjEzYTMuNDk1IDMuNDk1IDAgMCAwLTQuOTUgMHptMy41MyAzLjUzYy0uNTkuNTktMS41NC41OS0yLjEyIDBhMS40OSAxLjQ5IDAgMCAxIDAtMi4xMiAxLjQ5IDEuNDkgMCAwIDEgMi4xMiAwYy41OS41OS41OSAxLjUzIDAgMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlGb3JXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1djUuNTlINy41bDQuNSA0LjUgNC41LTQuNUgxM1Y1aC0yem0tNSA5YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZoLTJjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvbHltZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRoLTRMNy4xMSAxNi42MyA0LjUgMTIgOSA0SDVMLjUgMTIgNSAyMGg0bDcuODktMTIuNjNMMTkuNSAxMiAxNSAyMGg0bDQuNS04TDE5IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlclNldHRpbmdzTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzaC0ydjEwaDJWM3ptNC44MyAyLjE3LTEuNDIgMS40MkE2LjkyIDYuOTIgMCAwIDEgMTkgMTJjMCAzLjg3LTMuMTMgNy03IDdBNi45OTUgNi45OTUgMCAwIDEgNy41OCA2LjU4TDYuMTcgNS4xN0E4LjkzMiA4LjkzMiAwIDAgMCAzIDEyYTkgOSAwIDAgMCAxOCAwYzAtMi43NC0xLjIzLTUuMTgtMy4xNy02LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJlZ25hbnRXb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNGMwLTEuMTEuODktMiAyLTJzMiAuODkgMiAyLS44OSAyLTIgMi0yLS44OS0yLTJ6bTcgOWEzLjI4NSAzLjI4NSAwIDAgMC0yLTNjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDN2N2gydjVoM3YtNWgzdi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJldmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWN2gxNHYxMnptLTctOC41YzEuODQgMCAzLjQ4Ljk2IDQuMzQgMi41LS44NiAxLjU0LTIuNSAyLjUtNC4zNCAyLjVzLTMuNDgtLjk2LTQuMzQtMi41Yy44Ni0xLjU0IDIuNS0yLjUgNC4zNC0yLjVNMTIgOWMtMi43MyAwLTUuMDYgMS42Ni02IDQgLjk0IDIuMzQgMy4yNyA0IDYgNHM1LjA2LTEuNjYgNi00Yy0uOTQtMi4zNC0zLjI3LTQtNi00em0wIDUuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOGgtMVYzSDZ2NUg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zek04IDVoOHYzSDhWNXptOCAxMnYySDh2LTRoOHYyem0yLTJ2LTJINnYySDR2LTRjMC0uNTUuNDUtMSAxLTFoMTRjLjU1IDAgMSAuNDUgMSAxdjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcml2YWN5VGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMy4xOSA3IDMuMTFWMTFjMCA0LjUyLTIuOTggOC42OS03IDkuOTMtNC4wMi0xLjI0LTctNS40MS03LTkuOTNWNi4zbDctMy4xMU0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHptLTEgNmgydjJoLTJWN3ptMCA0aDJ2NmgtMnYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaXZhdGVDb25uZWN0aXZpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1LTUtMi4yNC01LTUgMi4yNC01IDUtNXptLTYuOTMgNmMuNDkgMy4zOSAzLjQgNiA2LjkzIDZzNi40NC0yLjYxIDYuOTMtNkgyMnYtMmgtMy4wN2MtLjQ5LTMuMzktMy40LTYtNi45My02cy02LjQ0IDIuNjEtNi45MyA2SDJ2MmgzLjA3ek0xNCAxMC41di0uODljMC0xLS42OC0xLjkyLTEuNjYtMi4wOEEyIDIgMCAwIDAgMTAgOS41djFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTIgMy4yNWMtLjQxIDAtLjc1LS4zNC0uNzUtLjc1cy4zNC0uNzUuNzUtLjc1Ljc1LjM0Ljc1Ljc1LS4zNC43NS0uNzUuNzV6bTEtMy4yNWgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByb2R1Y3Rpb25RdWFudGl0eUxpbWl0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwaC0yVjhoMnYyem0wLTRoLTJWMWgydjV6TTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOC45LTVoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNMMjEgNC45NiAxOS4yNSA0bC0zLjcgN0g4LjUzTDQuMjcgMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVB1Ymxpc2hlZFdpdGhDaGFuZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNiAxOS41SDIxdjJoLTZ2LTZoMnYyLjczYzEuODMtMS40NyAzLTMuNzEgMy02LjIzIDAtNC4wNy0zLjA2LTcuNDQtNy03LjkzVjIuMDVjNS4wNS41IDkgNC43NiA5IDkuOTUgMCAyLjk5LTEuMzIgNS42Ny0zLjQgNy41ek00IDEyYzAtMi41MiAxLjE3LTQuNzcgMy02LjIzVjguNWgydi02SDN2MmgyLjRBOS45NjYgOS45NjYgMCAwIDAgMiAxMmMwIDUuMTkgMy45NSA5LjQ1IDkgOS45NXYtMi4wMmMtMy45NC0uNDktNy0zLjg2LTctNy45M3ptMTIuMjQtMy44OS01LjY2IDUuNjYtMi44My0yLjgzLTEuNDEgMS40MSA0LjI0IDQuMjQgNy4wNy03LjA3LTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVF1ZXJ5QnVpbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0uNS0xM0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVlc3Rpb25BbnN3ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDR2N0g1LjE3bC0uNTkuNTktLjU4LjU4VjRoMTFtMS0ySDNjLS41NSAwLTEgLjQ1LTEgMXYxNGw0LTRoMTBjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem01IDRoLTJ2OUg2djJjMCAuNTUuNDUgMSAxIDFoMTFsNCA0VjdjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVlc3Rpb25NYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDcgMTIuODVjLjc3LTEuMzkgMi4yNS0yLjIxIDMuMTEtMy40NC45MS0xLjI5LjQtMy43LTIuMTgtMy43LTEuNjkgMC0yLjUyIDEuMjgtMi44NyAyLjM0TDYuNTQgNi45NkM3LjI1IDQuODMgOS4xOCAzIDExLjk5IDNjMi4zNSAwIDMuOTYgMS4wNyA0Ljc4IDIuNDEuNyAxLjE1IDEuMTEgMy4zLjAzIDQuOS0xLjIgMS43Ny0yLjM1IDIuMzEtMi45NyAzLjQ1LS4yNS40Ni0uMzUuNzYtLjM1IDIuMjRoLTIuODljLS4wMS0uNzgtLjEzLTIuMDUuNDgtMy4xNXpNMTQgMjBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVpY2tyZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTcuMTdWNGgxNnY2aDJWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDl2LTJINS4xN0w0IDE3LjE3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi41IDE2aC0yLjJsMS43LTRoLTV2NmgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWNlaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDMuNSAxOCAybC0xLjUgMS41TDE1IDJsLTEuNSAxLjVMMTIgMmwtMS41IDEuNUw5IDIgNy41IDMuNSA2IDIgNC41IDMuNSAzIDJ2MjBsMS41LTEuNUw2IDIybDEuNS0xLjVMOSAyMmwxLjUtMS41TDEyIDIybDEuNS0xLjVMMTUgMjJsMS41LTEuNUwxOCAyMmwxLjUtMS41TDIxIDIyVjJsLTEuNSAxLjV6TTE5IDE5LjA5SDVWNC45MWgxNHYxNC4xOHpNNiAxNWgxMnYySDZ6bTAtNGgxMnYySDZ6bTAtNGgxMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWNvcmRWb2ljZU92ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTNjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem0wIDhjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bS02IDRjLjIyLS43MiAzLjMxLTIgNi0yIDIuNyAwIDUuOCAxLjI5IDYgMkgzek0xNS4wOCA3LjA1Yy44NCAxLjE4Ljg0IDIuNzEgMCAzLjg5bDEuNjggMS42OWMyLjAyLTIuMDIgMi4wMi01LjA3IDAtNy4yN2wtMS42OCAxLjY5ek0yMC4wNyAybC0xLjYzIDEuNjNjMi43NyAzLjAyIDIuNzcgNy41NiAwIDEwLjc0TDIwLjA3IDE2YzMuOS0zLjg5IDMuOTEtOS45NSAwLTE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVkZWVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTFhMi45OTYgMi45OTYgMCAwIDAtNS41LTEuNjVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZURvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljg0IDEuOTggMy40MyAzLjM5bDEwLjM4IDEwLjM4LTEuNDEgMS40MS00LjI0LTQuMjQtMS40MSAxLjQxIDUuNjYgNS42NiAyLjgzLTIuODMgNi42IDYuNiAxLjQxLTEuNDFMNC44NCAxLjk4em0xMy4yMSAxMC4zOEwyMyA3LjQgMjEuNTcgNmwtNC45NCA0Ljk0IDEuNDIgMS40MnptLS43MS00Ljk2LTEuNDEtMS40MS0yLjEyIDIuMTIgMS40MSAxLjQxIDIuMTItMi4xMnpNMS4wOCAxMi4zNWw1LjY2IDUuNjYgMS40MS0xLjQxLTUuNjYtNS42Ni0xLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNDEgMS4xMyAwIDIuNTRsNC4zOSA0LjM5IDIuMjEgNC42Ni0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoNy40NmwxLjM4IDEuMzhBMS45OTcgMS45OTcgMCAwIDAgMTcgMjJjLjY3IDAgMS4yNi0uMzMgMS42Mi0uODRMMjEuNDYgMjRsMS40MS0xLjQxTDEuNDEgMS4xM3pNNyAxNWwxLjEtMmgyLjM2bDIgMkg3ek0yMCA0SDcuMTJsMiAyaDkuMTlsLTIuNzYgNWgtMS40NGwxLjk0IDEuOTRjLjU0LS4xNC45OS0uNDkgMS4yNS0uOTdsMy41OC02LjQ5QzIxLjI1IDQuODIgMjAuNzYgNCAyMCA0ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNWgxOHYtMkgzdjJ6bTAgNGgxOHYtMkgzdjJ6bTAtOGgxOFY5SDN2MnptMC02djJoMThWNUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwYXJ0aXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDE4di02SDN2NnptNy4zMy0ydi0yaDMuMzN2MmgtMy4zM3pNMTkgMTloLTMuMzN2LTJIMTl2MnpNNSAxN2gzLjMzdjJINXYtMnpNNiAxMGwxLjQyLTEuNDJMNS44MyA3SDE3YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMkgzdjJoMTRjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTRINS44M2wxLjU5LTEuNTlMNiAyIDIgNmw0IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBvcnRQcm9ibGVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1Ljk5IDE5LjUzIDE5SDQuNDdMMTIgNS45OU0xMiAyIDEgMjFoMjJMMTIgMnptMSAxNGgtMnYyaDJ2LTJ6bTAtNmgtMnY0aDJ2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXF1ZXN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjE3IDQgMTggOC44M1YyMEg2VjRoNy4xN00xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0xIDloLTR2MWgzYy41NSAwIDEgLjQ1IDEgMXYzYzAgLjU1LS40NSAxLTEgMWgtMXYxaC0ydi0xSDl2LTJoNHYtMWgtM2MtLjU1IDAtMS0uNDUtMS0xdi0zYzAtLjU1LjQ1LTEgMS0xaDFWOGgydjFoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdG9yZUZyb21UcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNSA0LTEtMWgtNWwtMSAxSDV2MmgxNFY0ek02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6bTItNVY5aDh2MTBIOHYtNXptMiA0aDR2LTRoMmwtNC00LTQgNGgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdG9yZVBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoNy4xN0wxOCA4LjgzVjIwem0tOS41NS05LjQzTDcuMjggOS40VjEzaDMuNmwtMS40NC0xLjQ0YTMuMTUgMy4xNSAwIDAgMSAyLjc5LTEuNzEgMy4xNSAzLjE1IDAgMSAxIDAgNi4zIDMuMTQgMy4xNCAwIDAgMS0yLjU4LTEuMzVIOC4xYTQuNTEgNC41MSAwIDAgMCA0LjEyIDIuN2MyLjQ4IDAgNC41LTIuMDIgNC41LTQuNXMtMi4wMi00LjUtNC41LTQuNWMtMS41OSAwLTIuOTcuODMtMy43NyAyLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2E5IDkgMCAwIDAtOSA5SDFsNCAzLjk5TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkE4Ljk1NCA4Ljk1NCAwIDAgMCAxMyAyMWE5IDkgMCAwIDAgMC0xOHptLTEgNXY1bDQuMjUgMi41Mi43Ny0xLjI4LTMuNTItMi4wOVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm9ja2V0TGF1bmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNWMtLjgzIDAtMS41OC4zNC0yLjEyLjg4QzIuNyAxNy4wNiAyIDIyIDIgMjJzNC45NC0uNyA2LjEyLTEuODhBMi45OTYgMi45OTYgMCAwIDAgNiAxNXptLjcxIDMuNzFjLS4yOC4yOC0yLjE3Ljc2LTIuMTcuNzZzLjQ3LTEuODguNzYtMi4xN2MuMTctLjE5LjQyLS4zLjctLjNhMS4wMDMgMS4wMDMgMCAwIDEgLjcxIDEuNzF6bTEwLjcxLTUuMDZjNi4zNi02LjM2IDQuMjQtMTEuMzEgNC4yNC0xMS4zMVMxNi43MS4yMiAxMC4zNSA2LjU4bC0yLjQ5LS41YTIuMDMgMi4wMyAwIDAgMC0xLjgxLjU1TDIgMTAuNjlsNSAyLjE0TDExLjE3IDE3bDIuMTQgNSA0LjA1LTQuMDVjLjQ3LS40Ny42OC0xLjE1LjU1LTEuODFsLS40OS0yLjQ5ek03LjQxIDEwLjgzbC0xLjkxLS44MiAxLjk3LTEuOTcgMS40NC4yOWMtLjU3LjgzLTEuMDggMS43LTEuNSAyLjV6bTYuNTggNy42Ny0uODItMS45MWMuOC0uNDIgMS42Ny0uOTMgMi40OS0xLjVsLjI5IDEuNDQtMS45NiAxLjk3ek0xNiAxMi4yNGMtMS4zMiAxLjMyLTMuMzggMi40LTQuMDQgMi43M2wtMi45My0yLjkzYy4zMi0uNjUgMS40LTIuNzEgMi43My00LjA0IDQuNjgtNC42OCA4LjIzLTMuOTkgOC4yMy0zLjk5cy42OSAzLjU1LTMuOTkgOC4yM3pNMTUgMTFjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyIC45IDIgMiAyIDItLjkgMi0yem0tNi4wMiA3LjI1Yy0uMjktLjktLjU3LTEuOTQtLjc2LTNMNiAxNi4wN3YyLjk4bDEuOTgtLjh6TTEyIDJzNSAyIDUgMTFsMi4xMSAxLjQxYy41Ni4zNy44OSAxIC44OSAxLjY2VjIybC01LTJIOWwtNSAydi01LjkzYzAtLjY3LjMzLTEuMjkuODktMS42Nkw3IDEzYzAtOSA1LTExIDUtMTF6bTAgMi4zNlM5IDYuMzggOSAxM2MwIDIuMjUgMSA1IDEgNWg0czEtMi43NSAxLTVjMC02LjYyLTMtOC42NC0zLTguNjR6bTYgMTQuNjl2LTIuOThsLTEuMjItLjgxYy0uMTkgMS4wNS0uNDcgMi4xLS43NiAzbDEuOTguNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6TTcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMi44OC0yLjg4IDcuMTktNSA5Ljg4QzkuOTIgMTYuMjEgNyAxMS44NSA3IDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdW5kZWRDb3JuZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOWgydjJoLTJ2LTJ6bTAtMmgydi0yaC0ydjJ6TTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTAtNGgyVjNIM3Yyem00IDBoMlYzSDd2MnptOCAxNmgydi0yaC0ydjJ6bS00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyem0tOCAwaDJ2LTJIN3Yyem0tNCAwaDJ2LTJIM3Yyek0yMSA4YzAtMi43Ni0yLjI0LTUtNS01aC01djJoNWMxLjY1IDAgMyAxLjM1IDMgM3Y1aDJWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvd2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxNC41IDQgMTlsMS41IDEuNUw5IDE3aDJsLTIuNS0yLjV6TTE1IDFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDIwLjAxTDE4IDI0bC0yLjk5LTMuMDFWMTkuNWwtNy4xLTcuMDljLS4zMS4wNS0uNjEuMDctLjkxLjA3di0yLjE2YzEuNjYuMDMgMy42MS0uODcgNC42Ny0yLjA0bDEuNC0xLjU1Yy4xOS0uMjEuNDMtLjM4LjY5LS41LjI5LS4xNC42Mi0uMjMuOTYtLjIzaC4wM0MxNS45OSA2LjAxIDE3IDcuMDIgMTcgOC4yNnY1Ljc1YzAgLjg0LS4zNSAxLjYxLS45MiAyLjE2bC0zLjU4LTMuNTh2LTIuMjdjLS42My41Mi0xLjQzIDEuMDItMi4yOSAxLjM5TDE2LjUgMThIMThsMyAzLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUnVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU0IDExIDEzIDcuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDE2LjU0IDExek0xMSA3SDJ2Mmg5Vjd6bTEwIDYuNDFMMTkuNTkgMTIgMTcgMTQuNTkgMTQuNDEgMTIgMTMgMTMuNDEgMTUuNTkgMTYgMTMgMTguNTkgMTQuNDEgMjAgMTcgMTcuNDEgMTkuNTkgMjAgMjEgMTguNTkgMTguNDEgMTYgMjEgMTMuNDF6TTExIDE1SDJ2Mmg5di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F0ZWxsaXRlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRoMmE5IDkgMCAwIDEtOSA5di0yYzMuODcgMCA3LTMuMTMgNy03em0tNyAzdjJjMi43NiAwIDUtMi4yNCA1LTVoLTJjMCAxLjY2LTEuMzQgMy0zIDN6TTE4LjI2LjU5bDMuNTQgMy41NGMuNzguNzguNzggMi4wNSAwIDIuODNsLTMuMTggMy4xOGMtLjc4Ljc4LTIuMDUuNzgtMi44MyAwTDE0LjU1IDguOWwtLjcxLjcgMS4yNCAxLjI0Yy43OC43OC43OCAyLjA1IDAgMi44M2wtMS40MSAxLjQxYy0uNzguNzgtMi4wNS43OC0yLjgzIDBMOS42IDEzLjg0bC0uNzEuNzEgMS4yNCAxLjI0Yy43OC43OC43OCAyLjA1IDAgMi44M0w2Ljk1IDIxLjhjLS43OC43OC0yLjA1Ljc4LTIuODMgMEwuNTggMTguMjZjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzbDMuMTgtMy4xOGMuNzgtLjc4IDIuMDUtLjc4IDIuODMgMGwxLjI0IDEuMjQuNzEtLjcxLTEuMjQtMS4yM2MtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNMOC43MiA3LjNjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBsMS4yNCAxLjI0LjcxLS43MS0xLjI1LTEuMjNjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzTDE1LjQzLjU5Yy43OS0uNzkgMi4wNS0uNzkgMi44MyAwem0tMTUuMiAxNS4yTDIgMTYuODVsMy41NCAzLjU0IDEuMDYtMS4wNi0zLjU0LTMuNTR6bTIuMTItMi4xMi0xLjA2IDEuMDYgMy41NCAzLjU0IDEuMDYtMS4wNi0zLjU0LTMuNTR6bTQuOTUtNC45NS0xLjQxIDEuNDEgMy41NCAzLjU0IDEuNDEtMS40MS0zLjU0LTMuNTR6bTQuNi00LjYtMS4wNiAxLjA2IDMuNTQgMy41NCAxLjA2LTEuMDYtMy41NC0zLjU0ek0xNi44NSAybC0xLjA2IDEuMDYgMy41NCAzLjU0IDEuMDYtMS4wNkwxNi44NSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F2ZWRTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC43MyAxMy4zMUE2LjM4OCA2LjM4OCAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS40MyAwIDIuNzQtLjQ4IDMuODEtMS4yN0wxOS41OSAyMSAyMSAxOS41OWwtNi4yNy02LjI4ek05LjUgMTRDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjI5IDguNDQgOS41IDZsLS43OSAyLjQ0SDYuMjVsMi4wMSAxLjU5LS43NyAyLjQ3IDIuMDEtMS41MyAyLjAxIDEuNTMtLjc3LTIuNDcgMi4wMS0xLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F2aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEwYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMS0uNDUgMS0xIDEtMS0uNDUtMS0xek04IDloNVY3SDh2MnptMTQtMS41djYuOTdsLTIuODIuOTRMMTcuNSAyMUgxMnYtMmgtMnYySDQuNVMyIDEyLjU0IDIgOS41IDQuNDYgNCA3LjUgNGg1Yy45MS0xLjIxIDIuMzYtMiA0LTJhMS40OTggMS40OTggMCAwIDEgMS4zOCAyLjA4Yy0uMTQuMzQtLjI2LjczLS4zMiAxLjE1bDIuMjcgMi4yN0gyMnptLTIgMmgtMUwxNS41IDZjMC0uNjUuMDktMS4yOS4yNi0xLjkxLS45Ny4yNS0xLjc2Ljk3LTIuMDkgMS45MUg3LjVDNS41NyA2IDQgNy41NyA0IDkuNWMwIDEuODggMS4yMiA2LjY1IDIuMDEgOS41SDh2LTJoNnYyaDIuMDFsMS41NS01LjE1IDIuNDQtLjgyVjkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjaGVkdWxlU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDE2LjUgMTcuMlYxNGgxdjIuNzlsMS44NSAxLjg1LS43LjcxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSAxMi02LTEuNVY3LjAxbDguODcgMy43NGMuOTQtLjQ3IDItLjc1IDMuMTMtLjc1LjEgMCAuMTkuMDEuMjguMDFMMyA0djE2bDctMi45NVYxN2MwLS44LjE0LTEuNTYuMzktMi4yOEw1IDE2Ljk5VjEzLjVsNi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY2hlZHVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0uNS0xM0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VhcmNoT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMCAwIDkuNSAzQzYuMDggMyAzLjI4IDUuNjQgMy4wMyA5aDIuMDJDNS4zIDYuNzUgNy4xOCA1IDkuNSA1IDExLjk5IDUgMTQgNy4wMSAxNCA5LjVTMTEuOTkgMTQgOS41IDE0Yy0uMTcgMC0uMzMtLjAzLS41LS4wNXYyLjAyYy4xNy4wMi4zMy4wMy41LjAzIDEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi40NyAxMC44MiA0IDEzLjI5bC0yLjQ3LTIuNDctLjcxLjcxTDMuMjkgMTQgLjgyIDE2LjQ3bC43MS43MUw0IDE0LjcxbDIuNDcgMi40Ny43MS0uNzFMNC43MSAxNGwyLjQ3LTIuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VnbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMThoMTJ2LTJIOXYyek0zIDZ2MmgxOFY2SDN6bTYgN2gxMnYtMkg5djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW5kQW5kQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDEyLTYtMS41VjcuMDFsOC44NyAzLjczYy45NC0uNDcgMi0uNzUgMy4xMy0uNzUuMSAwIC4xOS4wMS4yOC4wMUwzIDR2MTZsNy0yLjk1VjE3YzAtLjguMTQtMS41Ni4zOS0yLjI4TDUgMTYuOTlWMTMuNWw2LTEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDgtMy0zIC43MS0uNzEgMS43OSAxLjc5VjE0aDF2NC4wOWwxLjc5LTEuNzkuNzEuNy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW5zb3JzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4xNCAxMC45NmMtLjA5LjMzLS4xNC42OC0uMTQgMS4wNCAwIDEuMS40NSAyLjEgMS4xNyAyLjgzbC0xLjQyIDEuNDJBNi4wMTggNi4wMTggMCAwIDEgNiAxMmMwLS45My4yMS0xLjguNTgtMi41OUw1LjExIDcuOTRBNy44OTcgNy44OTcgMCAwIDAgNCAxMmMwIDIuMjEuOSA0LjIxIDIuMzUgNS42NWwtMS40MiAxLjQyQTkuOTY5IDkuOTY5IDAgMCAxIDIgMTJjMC0yLjA0LjYxLTMuOTMgMS42Ni01LjUxTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDFMOC4xNCAxMC45NnptOS4yOCAzLjYzYy4zNy0uNzkuNTgtMS42Ni41OC0yLjU5IDAtMS42Ni0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDIgMS40MmEzLjk1MSAzLjk1MSAwIDAgMSAxLjA0IDMuODZsMS41NiAxLjU1ek0yMCAxMmMwIDEuNDgtLjQgMi44Ny0xLjExIDQuMDZsMS40NSAxLjQ1QTkuOTEgOS45MSAwIDAgMCAyMiAxMmMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN2wtMS40MiAxLjQyQTcuOTQgNy45NCAwIDAgMSAyMCAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnNvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc2IDE2LjI0QzYuNjcgMTUuMTYgNiAxMy42NiA2IDEycy42Ny0zLjE2IDEuNzYtNC4yNGwxLjQyIDEuNDJDOC40NSA5LjkgOCAxMC45IDggMTJjMCAxLjEuNDUgMi4xIDEuMTcgMi44M2wtMS40MSAxLjQxem04LjQ4IDBDMTcuMzMgMTUuMTYgMTggMTMuNjYgMTggMTJzLS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MiAxLjQyQzE1LjU1IDkuOSAxNiAxMC45IDE2IDEyYzAgMS4xLS40NSAyLjEtMS4xNyAyLjgzbDEuNDEgMS40MXpNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem04IDJjMCAyLjIxLS45IDQuMjEtMi4zNSA1LjY1bDEuNDIgMS40MkMyMC44OCAxNy4yNiAyMiAxNC43NiAyMiAxMnMtMS4xMi01LjI2LTIuOTMtNy4wN2wtMS40MiAxLjQyQTcuOTQgNy45NCAwIDAgMSAyMCAxMnpNNi4zNSA2LjM1IDQuOTMgNC45M0MzLjEyIDYuNzQgMiA5LjI0IDIgMTJzMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJDNC45IDE2LjIxIDQgMTQuMjEgNCAxMnMuOS00LjIxIDIuMzUtNS42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzQWNjZXNzaWJpbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgNGMtMi42MS43LTUuNjcgMS04LjUgMXMtNS44OS0uMy04LjUtMUwzIDZjMS44Ni41IDQgLjgzIDYgMXYxMmgydi02aDJ2NmgyVjdjMi0uMTcgNC4xNC0uNSA2LTFsLS41LTJ6TTEyIDRjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NBcHBsaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYuMjEgMTMuOTcgMS4yIDIuMDdjLjA4LjEzLjIzLjE4LjM3LjEzbDEuNDktLjZjLjMxLjI0LjY0LjQ0IDEuMDEuNTlsLjIyIDEuNTljLjAzLjE0LjE1LjI1LjMuMjVoMi40Yy4xNSAwIC4yNy0uMTEuMy0uMjZsLjIyLTEuNTljLjM2LS4xNS43LS4zNSAxLjAxLS41OWwxLjQ5LjZjLjE0LjA1LjI5IDAgLjM3LS4xM2wxLjItMi4wN2MuMDgtLjEzLjA0LS4yOS0uMDctLjM5bC0xLjI3LS45OWMuMDMtLjE5LjA0LS4zOS4wNC0uNTggMC0uMi0uMDItLjM5LS4wNC0uNTlsMS4yNy0uOTljLjExLS4wOS4xNS0uMjYuMDctLjM5bC0xLjItMi4wN2EuMzA2LjMwNiAwIDAgMC0uMzctLjEzbC0xLjQ5LjZjLS4zMS0uMjQtLjY0LS40NC0xLjAxLS41OWwtLjIyLTEuNTlhLjMxLjMxIDAgMCAwLS4zLS4yNWgtMi40YS4zMS4zMSAwIDAgMC0uMy4yNmwtLjIyIDEuNTljLS4zNi4xNS0uNzEuMzQtMS4wMS41OGwtMS40OS0uNmMtLjE0LS4wNS0uMjkgMC0uMzcuMTNsLTEuMiAyLjA3Yy0uMDguMTMtLjA0LjI5LjA3LjM5bDEuMjcuOTljLS4wMy4yLS4wNS4zOS0uMDUuNTkgMCAuMi4wMi4zOS4wNC41OWwtMS4yNy45OWMtLjExLjEtLjE0LjI2LS4wNi4zOXpNMTIgMTAuMjljLjk0IDAgMS43MS43NyAxLjcxIDEuNzFzLS43NyAxLjcxLTEuNzEgMS43MS0xLjcxLS43Ny0xLjcxLTEuNzEuNzctMS43MSAxLjcxLTEuNzF6TTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NCYWNrdXBSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMmMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS0yLTlhOSA5IDAgMCAwLTkgOUgwbDQgNCA0LTRINWMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3YTYuOTk1IDYuOTk1IDAgMCAxLTExLjA2IDUuN2wtMS40MiAxLjQ0QTkgOSAwIDEgMCAxMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDI0aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnptOCAwaDJ2LTJoLTJ2MnptMi43MS0xOC4yOUwxMiAwaC0xdjcuNTlMNi40MSAzIDUgNC40MSAxMC41OSAxMCA1IDE1LjU5IDYuNDEgMTcgMTEgMTIuNDFWMjBoMWw1LjcxLTUuNzEtNC4zLTQuMjkgNC4zLTQuMjl6TTEzIDMuODNsMS44OCAxLjg4TDEzIDcuNTlWMy44M3ptMS44OCAxMC40NkwxMyAxNi4xN3YtMy43NmwxLjg4IDEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0JyaWdodG5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpNOCAxNmgyLjVsMS41IDEuNSAxLjUtMS41SDE2di0yLjVsMS41LTEuNS0xLjUtMS41VjhoLTIuNUwxMiA2LjUgMTAuNSA4SDh2Mi41TDYuNSAxMiA4IDEzLjVWMTZ6bTQtN2MxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIyaDJ2Mkg3em00IDBoMnYyaC0yem00IDBoMnYyaC0yek0xNiAuMDEgOCAwQzYuOSAwIDYgLjkgNiAydjE2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlYyYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNiAxOEg4di0xaDh2MXptMC0zSDhWNWg4djEwem0wLTEySDhWMmg4djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0V0aGVybmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc3IDYuNzYgNi4yMyA1LjQ4LjgyIDEybDUuNDEgNi41MiAxLjU0LTEuMjhMMy40MiAxMmw0LjM1LTUuMjR6TTcgMTNoMnYtMkg3djJ6bTEwLTJoLTJ2Mmgydi0yem0tNiAyaDJ2LTJoLTJ2MnptNi43Ny03LjUyLTEuNTQgMS4yOEwyMC41OCAxMmwtNC4zNSA1LjI0IDEuNTQgMS4yOEwyMy4xOCAxMmwtNS40MS02LjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NJbnB1dEFudGVubmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVjLTMuODcgMC03IDMuMTMtNyA3aDJjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0xIDkuMjljLjg4LS4zOSAxLjUtMS4yNiAxLjUtMi4yOWEyLjUgMi41IDAgMCAwLTUgMGMwIDEuMDIuNjIgMS45IDEuNSAyLjI5djMuM0w3LjU5IDIxIDkgMjIuNDFsMy0zIDMgM0wxNi40MSAyMSAxMyAxNy41OXYtMy4zek0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMmgyYTkgOSAwIDAgMSAxOCAwaDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0Q29tcG9uZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOEM2LjE2IDE4LjQgNyAxNy4zIDcgMTZWNkg1VjJ6TTQgMTdjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0SDN6TTEzIDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MiAyLTEuNTIgMi0yLjgyVjZoLTJWMnptLTEgMTVjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0aC0yem0xMC02VjJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NGgtMnYxMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDIgMi0xLjUyIDItMi44MlY2aC0yem0tMSAxMWMtLjU1IDAtMS0uNDUtMS0xdi0yaDJ2MmMwIC41NS0uNDUgMS0xIDF6bS0xLTVWOGgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0Q29tcG9zaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOEM2LjE2IDE4LjQgNyAxNy4zIDcgMTZWNkg1VjJ6TTQgMTdjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0SDN6TTEzIDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MiAyLTEuNTIgMi0yLjgyVjZoLTJWMnptLTEgMTVjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0aC0yem0xMC02VjJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NGgtMnYxMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDIgMi0xLjUyIDItMi44MlY2aC0yem0tMSAxMWMtLjU1IDAtMS0uNDUtMS0xdi0yaDJ2MmMwIC41NS0uNDUgMS0xIDF6bS0xLTVWOGgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0SGRtaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggN1Y0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNINXY2bDMgNnYzaDh2LTNsMy02VjdoLTF6TTggNGg4djNoLTIuMDFWNWgtMXYySDExVjVoLTF2Mkg4VjR6bTkgOC41My0zIDZWMjBoLTR2LTEuNDdsLTMtNlY5aDEwdjMuNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0U3ZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41UzUgMTAuNjcgNSAxMS41IDUuNjcgMTMgNi41IDEzIDggMTIuMzMgOCAxMS41em03LTVjMC0uODMtLjY3LTEuNS0xLjUtMS41aC0zQzkuNjcgNSA5IDUuNjcgOSA2LjVTOS42NyA4IDEwLjUgOGgzYy44MyAwIDEuNS0uNjcgMS41LTEuNXpNOC41IDE1Yy0uODMgMC0xLjUuNjctMS41IDEuNVM3LjY3IDE4IDguNSAxOHMxLjUtLjY3IDEuNS0xLjVTOS4zMyAxNSA4LjUgMTV6TTEyIDFDNS45MyAxIDEgNS45MyAxIDEyczQuOTMgMTEgMTEgMTEgMTEtNC45MyAxMS0xMVMxOC4wNyAxIDEyIDF6bTAgMjBjLTQuOTYgMC05LTQuMDQtOS05czQuMDQtOSA5LTkgOSA0LjA0IDkgOS00LjA0IDktOSA5em01LjUtMTFjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0tMiA1Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzT3ZlcnNjYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDUuNSAxMCA4aDRsLTEuOTktMi41ek0xOCAxMHY0bDIuNS0xLjk5TDE4IDEwek02IDEwbC0yLjUgMi4wMUw2IDE0di00em04IDZoLTRsMi4wMSAyLjVMMTQgMTZ6bTctMTNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDloMnYyaC0yem00IDBoMnYyaC0yem01IDYuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjEtLjAzLS4yMS0uMDUtLjMxLS4wNS0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMDc0IDE1LjA3NCAwIDAgMS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NiAyLjU5TDUuNzkgOC44Yy0uNDEtMS4yMS0uNjctMi40OC0uNzYtMy44ek0xOSAxOC45N2MtMS4zMi0uMDktMi42LS4zNS0zLjgtLjc2bDEuMi0xLjJjLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNTF6TTE5IDloMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NQb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyNGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptMi0yMmgtMnYxMGgyVjJ6bTMuNTYgMi40NC0xLjQ1IDEuNDVBNS45NjkgNS45NjkgMCAwIDEgMTggMTFjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTZjMC0yLjE3IDEuMTYtNC4wNiAyLjg4LTUuMTJMNy40NCA0LjQ0QTcuOTYxIDcuOTYxIDAgMCAwIDQgMTFjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuNzItMS4zNi01LjEyLTMuNDQtNi41NnpNMTUgMjRoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NSZW1vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDlIOWMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMXptLTEgMTJoLTRWMTFoNHYxMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcuMDUgNi4wNSAxLjQxIDEuNDFhNS4wMjIgNS4wMjIgMCAwIDEgNy4wOCAwbDEuNDEtMS40MUMxNS42OCA0Ljc4IDEzLjkzIDQgMTIgNHMtMy42OC43OC00Ljk1IDIuMDV6TTEyIDBDOC45NiAwIDYuMjEgMS4yMyA0LjIyIDMuMjJsMS40MSAxLjQxQzcuMjYgMy4wMSA5LjUxIDIgMTIgMnM0Ljc0IDEuMDEgNi4zNiAyLjY0bDEuNDEtMS40MUMxNy43OSAxLjIzIDE1LjA0IDAgMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzVm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjJoMnYySDd6bTUtOWMxLjY2IDAgMy0xLjM0IDMtM1Y0YzAtMS42Ni0xLjM0LTMtMy0zUzkgMi4zNCA5IDR2NmMwIDEuNjYgMS4zNCAzIDMgM3ptLTEtOWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NmMwIC41Ni0uNDQgMS0xIDEtLjU1IDAtMS0uNDUtMS0xVjR6bTAgMThoMnYyaC0yem00IDBoMnYyaC0yem00LTEyaC0xLjdjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDEzIDYuNyAxMEg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIwaDJ2LTMuMjhjMy4yOC0uNDkgNi0zLjMxIDYtNi43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS40MyAxMi45OGMuMDQtLjMyLjA3LS42NC4wNy0uOTggMC0uMzQtLjAzLS42Ni0uMDctLjk4bDIuMTEtMS42NWMuMTktLjE1LjI0LS40Mi4xMi0uNjRsLTItMy40NmEuNS41IDAgMCAwLS42MS0uMjJsLTIuNDkgMWMtLjUyLS40LTEuMDgtLjczLTEuNjktLjk4bC0uMzgtMi42NUEuNDg4LjQ4OCAwIDAgMCAxNCAyaC00Yy0uMjUgMC0uNDYuMTgtLjQ5LjQybC0uMzggMi42NWMtLjYxLjI1LTEuMTcuNTktMS42OS45OGwtMi40OS0xYS41NjYuNTY2IDAgMCAwLS4xOC0uMDNjLS4xNyAwLS4zNC4wOS0uNDMuMjVsLTIgMy40NmMtLjEzLjIyLS4wNy40OS4xMi42NGwyLjExIDEuNjVjLS4wNC4zMi0uMDcuNjUtLjA3Ljk4IDAgLjMzLjAzLjY2LjA3Ljk4bC0yLjExIDEuNjVjLS4xOS4xNS0uMjQuNDItLjEyLjY0bDIgMy40NmEuNS41IDAgMCAwIC42MS4yMmwyLjQ5LTFjLjUyLjQgMS4wOC43MyAxLjY5Ljk4bC4zOCAyLjY1Yy4wMy4yNC4yNC40Mi40OS40Mmg0Yy4yNSAwIC40Ni0uMTguNDktLjQybC4zOC0yLjY1Yy42MS0uMjUgMS4xNy0uNTkgMS42OS0uOThsMi40OSAxYy4wNi4wMi4xMi4wMy4xOC4wMy4xNyAwIC4zNC0uMDkuNDMtLjI1bDItMy40NmMuMTItLjIyLjA3LS40OS0uMTItLjY0bC0yLjExLTEuNjV6bS0xLjk4LTEuNzFjLjA0LjMxLjA1LjUyLjA1LjczIDAgLjIxLS4wMi40My0uMDUuNzNsLS4xNCAxLjEzLjg5LjcgMS4wOC44NC0uNyAxLjIxLTEuMjctLjUxLTEuMDQtLjQyLS45LjY4Yy0uNDMuMzItLjg0LjU2LTEuMjUuNzNsLTEuMDYuNDMtLjE2IDEuMTMtLjIgMS4zNWgtMS40bC0uMTktMS4zNS0uMTYtMS4xMy0xLjA2LS40M2MtLjQzLS4xOC0uODMtLjQxLTEuMjMtLjcxbC0uOTEtLjctMS4wNi40My0xLjI3LjUxLS43LTEuMjEgMS4wOC0uODQuODktLjctLjE0LTEuMTNjLS4wMy0uMzEtLjA1LS41NC0uMDUtLjc0cy4wMi0uNDMuMDUtLjczbC4xNC0xLjEzLS44OS0uNy0xLjA4LS44NC43LTEuMjEgMS4yNy41MSAxLjA0LjQyLjktLjY4Yy40My0uMzIuODQtLjU2IDEuMjUtLjczbDEuMDYtLjQzLjE2LTEuMTMuMi0xLjM1aDEuMzlsLjE5IDEuMzUuMTYgMS4xMyAxLjA2LjQzYy40My4xOC44My40MSAxLjIzLjcxbC45MS43IDEuMDYtLjQzIDEuMjctLjUxLjcgMS4yMS0xLjA3Ljg1LS44OS43LjE0IDEuMTN6TTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2hvcDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTZ2LTJIM1Y5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1VjNjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDV2MTFjMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJWNWgtNXptLTYtMmg0djJoLTRWM3ptOSAxM0g3VjdoMTR2OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOHY3bDUuNS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wVHdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMkgzVjl6bTE1LTRWM2MwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem05IDEzSDdWN2gxNHY5em0tOS0xIDUuNS00TDEyIDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDJ2MTNjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmgtNnptLTYtMmg0djJoLTRWNHptMTAgMTVINFY4aDE2djExek05IDE4bDcuNS01TDkgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNmgtMmMwLTIuMjEtMS43OS00LTQtNFM4IDMuNzkgOCA2SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTYtMmMxLjEgMCAyIC45IDIgMmgtNGMwLTEuMS45LTIgMi0yem02IDE2SDZWOGgydjJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xVjhoNHYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMVY4aDJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wcGluZ0Jhc2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOWgtNC43OWwtNC4zOC02LjU2Yy0uMTktLjI4LS41MS0uNDItLjgzLS40MnMtLjY0LjE0LS44My40M0w2Ljc5IDlIMmMtLjU1IDAtMSAuNDUtMSAxIDAgLjA5LjAxLjE4LjA0LjI3bDIuNTQgOS4yN2MuMjMuODQgMSAxLjQ2IDEuOTIgMS40NmgxM2MuOTIgMCAxLjY5LS42MiAxLjkzLTEuNDZsMi41NC05LjI3TDIzIDEwYzAtLjU1LS40NS0xLTEtMXpNMTIgNC44IDE0LjggOUg5LjJMMTIgNC44ek0xOC41IDE5bC0xMi45OS4wMUwzLjMxIDExSDIwLjdsLTIuMiA4ek0xMiAxM2MtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wcGluZ0NhcnRDaGVja291dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOC45LTVoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNMMjEgNC45NiAxOS4yNSA0bC0zLjcgN0g4LjUzTDQuMjcgMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMnpNMTIgMmw0IDQtNCA0LTEuNDEtMS40MUwxMi4xNyA3SDhWNWg0LjE3bC0xLjU5LTEuNTlMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTUgMTNjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OUEuOTk2Ljk5NiAwIDAgMCAyMC4wMSA0SDUuMjFsLS45NC0ySDF2MmgybDMuNiA3LjU5LTEuMzUgMi40NEM0LjUyIDE1LjM3IDUuNDggMTcgNyAxN2gxMnYtMkg3bDEuMS0yaDcuNDV6TTYuMTYgNmgxMi4xNWwtMi43NiA1SDguNTNMNi4xNiA2ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNtYXJ0QnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOXY2YzAgMS4xLS45IDItMiAyaC0xdi0yaDFWOUg0djZoNnYySDRjLTEuMSAwLTItLjktMi0yVjljMC0xLjEuOS0yIDItMmgxNmMxLjEgMCAyIC45IDIgMnptLTcuNSAxMCAxLjA5LTIuNDFMMTggMTUuNWwtMi40MS0xLjA5TDE0LjUgMTJsLTEuMDkgMi40MUwxMSAxNS41bDIuNDEgMS4wOUwxNC41IDE5em0yLjUtNSAuNjItMS4zOEwxOSAxMmwtMS4zOC0uNjJMMTcgMTBsLS42MiAxLjM4TDE1IDEybDEuMzguNjJMMTcgMTR6bS0yLjUgNSAxLjA5LTIuNDFMMTggMTUuNWwtMi40MS0xLjA5TDE0LjUgMTJsLTEuMDkgMi40MUwxMSAxNS41bDIuNDEgMS4wOUwxNC41IDE5em0yLjUtNSAuNjItMS4zOEwxOSAxMmwtMS4zOC0uNjJMMTcgMTBsLS42MiAxLjM4TDE1IDEybDEuMzguNjJMMTcgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3VyY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS0yLTZINnYtMmgxMnYyem0tNCA0SDZ2LTJoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BhY2VEYXNoYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNNSAxOVY1aDZ2MTRINXptMTQgMGgtNnYtN2g2djd6bTAtOWgtNlY1aDZ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwYXRpYWxBdWRpb09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpNMTYuMzkgMTUuNTZDMTQuNzEgMTQuNyAxMi41MyAxNCAxMCAxNHMtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgMiAxOC4yMlYyMWgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xNiAxOUg0di0uNzhjMC0uMzguMi0uNzIuNTItLjg4QzUuNzEgMTYuNzMgNy42MyAxNiAxMCAxNmMyLjM3IDAgNC4yOS43MyA1LjQ4IDEuMzQuMzIuMTYuNTIuNS41Mi44OFYxOXpNMjAuMzYgMWwtMS40MSAxLjQxYTcuMDA3IDcuMDA3IDAgMCAxIDAgOS45bDEuNDEgMS40MWE4Ljk4IDguOTggMCAwIDAgMC0xMi43MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNTQgMTAuOWE1LjAwMyA1LjAwMyAwIDAgMCAwLTcuMDdsLTEuNDEgMS40MWEzIDMgMCAwIDEgMCA0LjI0bDEuNDEgMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwYXRpYWxBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpNMTYuMzkgMTUuNTZDMTQuNzEgMTQuNyAxMi41MyAxNCAxMCAxNHMtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgMiAxOC4yMlYyMWgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xNiAxOUg0di0uNzhjMC0uMzguMi0uNzIuNTItLjg4QzUuNzEgMTYuNzMgNy42MyAxNiAxMCAxNmMyLjM3IDAgNC4yOS43MyA1LjQ4IDEuMzQuMzIuMTYuNTIuNS41Mi44OFYxOXpNMTYgMWgtMmE5IDkgMCAwIDAgOSA5VjhjLTMuODYgMC03LTMuMTQtNy03elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxaC0yYzAgMi43NiAyLjI0IDUgNSA1VjRjLTEuNjUgMC0zLTEuMzUtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BhdGlhbFRyYWNraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTNjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yek0xNi4zOSAxNS41NkMxNC43MSAxNC43IDEyLjUzIDE0IDEwIDE0cy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAyIDE4LjIyVjIxaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE2IDE5SDR2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNS43MSAxNi43MyA3LjYzIDE2IDEwIDE2YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE5ek0yMC4wNSAyLjQxIDE4LjY0IDFjLTMuNTEgMy41MS0zLjUxIDkuMjEgMCAxMi43M2wxLjQxLTEuNDFjLTIuNzMtMi43NC0yLjczLTcuMTggMC05LjkxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMi44OCA1LjI0LTEuNDEtMS40MWE1LjAwMyA1LjAwMyAwIDAgMCAwIDcuMDdsMS40MS0xLjQxYTMuMDEyIDMuMDEyIDAgMCAxIDAtNC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwZWFrZXJOb3Rlc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHYxMmgtMS4zNGwxLjkxIDEuOTFBMi4wMSAyLjAxIDAgMCAwIDIyIDE2VjRjMC0xLjEtLjktMi0yLTJINC42NmwyIDJIMjB6TTYgMTJoMnYySDZ6bTEyLTNoLTYuMzRsMiAySDE4em0wLTNoLTh2MS4zNGwuNjYuNjZIMTh6TTEuNDEgMS41OSAwIDNsMi4wMSAyLjAxTDIgMjJsNC00aDlsNS43MyA1LjczIDEuNDEtMS40MUwxLjQxIDEuNTl6TTUuMTcgMTYgNCAxNy4xN1Y3bDIgMnYyaDJsNSA1SDUuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVha2VyTm90ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdsLS41OS41OS0uNTguNThWNGgxNnYxMnpNNiAxMmgydjJINnptMC0zaDJ2Mkg2em0wLTNoMnYySDZ6bTQgNmg1djJoLTV6bTAtM2g4djJoLTh6bTAtM2g4djJoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVsbGNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi40NSAxNmgyLjA5TDkuNDMgM0g3LjU3TDIuNDYgMTZoMi4wOWwxLjEyLTNoNS42NGwxLjE0IDN6bS02LjAyLTVMOC41IDUuNDggMTAuNTcgMTFINi40M3ptMTUuMTYuNTktOC4wOSA4LjA5TDkuODMgMTZsLTEuNDEgMS40MSA1LjA5IDUuMDlMMjMgMTNsLTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJSYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgOC44OS45NCAzLjExaDIuODJsLTIuMjcgMS42Mi45MyAzLjAxTDEyIDE0Ljc5bC0yLjQyIDEuODQuOTMtMy4wMUw4LjI0IDEyaDIuODJMMTIgOC44OU0xMiAybC0yLjQyIDhIMmw2LjE3IDQuNDFMNS44MyAyMiAxMiAxNy4zMSAxOC4xOCAyMmwtMi4zNS03LjU5TDIyIDEwaC03LjU4TDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNy40OCA3LjE2LTUuMDEtLjQzLTItNC43MWMzLjIxLjE5IDUuOTEgMi4yNyA3LjAxIDUuMTR6bS01LjA3IDYuMjZMMTIgMTMuOThsLTIuMzkgMS40NC42My0yLjcyLTIuMTEtMS44MyAyLjc4LS4yNEwxMiA4LjA2bDEuMDkgMi41NiAyLjc4LjI0LTIuMTEgMS44My42NCAyLjczem0tMi44Ni0xMS40LTIgNC43Mi01LjAyLjQzYzEuMS0yLjg4IDMuOC00Ljk3IDcuMDItNS4xNXpNNCAxMmMwLS42NC4wOC0xLjI2LjIzLTEuODZsMy43OSAzLjI4LTEuMTEgNC43NUE3Ljk4MiA3Ljk4MiAwIDAgMSA0IDEyem0zLjg0IDYuODJMMTIgMTYuMzFsNC4xNiAyLjVBNy45MjQgNy45MjQgMCAwIDEgMTEuOTkgMjBjLTEuNTIgMC0yLjk0LS40NC00LjE1LTEuMTh6bTkuMjUtLjY1LTEuMTEtNC43NSAzLjc5LTMuMjhjLjE0LjU5LjIzIDEuMjIuMjMgMS44NiAwIDIuNDgtMS4xNCA0LjctMi45MSA2LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RpY2t5Tm90ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djloLTV2NUg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTBsNi02VjVjMC0xLjEtLjktMi0yLTJ6bS03IDExSDd2LTJoNXYyem01LTRIN1Y4aDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguMzYgOSAuNiAzSDUuMDRsLjYtM2gxMi43Mk0yMCA0SDR2MmgxNlY0em0wIDNINGwtMSA1djJoMXY2aDEwdi02aDR2Nmgydi02aDF2LTJsLTEtNXpNNiAxOHYtNGg2djRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE3SDR2MmgxMHYtMnptNi04SDR2MmgxNlY5ek00IDE1aDE2di0ySDR2MnpNNCA1djJoMTZWNUg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VidGl0bGVzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg2LjgzbDIgMkgyMHYxMS4xN2wxLjc2IDEuNzZjLjE1LS4yOC4yNC0uNTkuMjQtLjkzVjZjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEwaC01LjE3bDIgMkgxOHpNMS4wNCAzLjg3bDEuMiAxLjJDMi4wOSA1LjM1IDIgNS42NiAyIDZ2MTJjMCAxLjEuOSAyIDIgMmgxMy4xN2wyLjk2IDIuOTYgMS40MS0xLjQxTDIuNDUgMi40NSAxLjA0IDMuODd6TTQgNi44MyA3LjE3IDEwSDZ2Mmgydi0xLjE3TDExLjE3IDE0SDZ2Mmg3LjE3bDIgMkg0VjYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdXBlcnZpc2VkVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAxMGMwLTEuNjUtMS4zNS0zLTMtM3MtMyAxLjM1LTMgMyAxLjM1IDMgMyAzIDMtMS4zNSAzLTN6bS0zIDFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNi41IDJjMS4xMSAwIDItLjg5IDItMiAwLTEuMTEtLjg5LTItMi0yLTEuMTEgMC0yLjAxLjg5LTIgMiAwIDEuMTEuODkgMiAyIDJ6TTExLjk5IDIuMDFjLTUuNTIgMC0xMCA0LjQ4LTEwIDEwczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMC00LjQ4LTEwLTEwLTEwek01Ljg0IDE3LjEyYy42OC0uNTQgMi4yNy0xLjExIDMuNjYtMS4xMS4wNyAwIC4xNS4wMS4yMy4wMS4yNC0uNjQuNjctMS4yOSAxLjMtMS44NkE5LjA1IDkuMDUgMCAwIDAgOS41IDE0Yy0xLjMgMC0zLjM5LjQ1LTQuNzMgMS40My0uNS0xLjA0LS43OC0yLjItLjc4LTMuNDMgMC00LjQxIDMuNTktOCA4LThzOCAzLjU5IDggOGMwIDEuMi0uMjcgMi4zNC0uNzUgMy4zNy0xLS41OS0yLjM2LS44Ny0zLjI0LS44Ny0xLjUyIDAtNC41LjgxLTQuNSAyLjd2Mi43OGE3LjkzNSA3LjkzNSAwIDAgMS01LjY2LTIuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdXBlcnZpc29yQWNjb3VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMC45MyA1IDkgNSA1LjUgNi41NyA1LjUgOC41IDcuMDcgMTIgOSAxMnptMC01Yy44MyAwIDEuNS42NyAxLjUgMS41UzkuODMgMTAgOSAxMHMtMS41LS42Ny0xLjUtMS41UzguMTcgNyA5IDd6bS4wNSAxMEg0Ljc3Yy45OS0uNSAyLjctMSA0LjIzLTEgLjExIDAgLjIzLjAxLjM0LjAxLjM0LS43My45My0xLjMzIDEuNjQtMS44MS0uNzMtLjEzLTEuNDItLjItMS45OC0uMi0yLjM0IDAtNyAxLjE3LTcgMy41VjE5aDd2LTEuNWMwLS4xNy4wMi0uMzQuMDUtLjV6bTcuNDUtMi41Yy0xLjg0IDAtNS41IDEuMDEtNS41IDNWMTloMTF2LTEuNWMwLTEuOTktMy42Ni0zLTUuNS0zem0xLjIxLTEuODJjLjc2LS40MyAxLjI5LTEuMjQgMS4yOS0yLjE4YTIuNSAyLjUgMCAwIDAtNSAwYzAgLjk0LjUzIDEuNzUgMS4yOSAyLjE4LjM2LjIuNzcuMzIgMS4yMS4zMnMuODUtLjEyIDEuMjEtLjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTcuNDYgNy4xMi0yLjc4IDEuMTVhNC45ODIgNC45ODIgMCAwIDAtMi45NS0yLjk0bDEuMTUtMi43OGMyLjEuOCAzLjc3IDIuNDcgNC41OCA0LjU3ek0xMiAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6TTkuMTMgNC41NGwxLjE3IDIuNzhhNSA1IDAgMCAwLTIuOTggMi45N0w0LjU0IDkuMTNhNy45ODQgNy45ODQgMCAwIDEgNC41OS00LjU5ek00LjU0IDE0Ljg3bDIuNzgtMS4xNWE0Ljk2OCA0Ljk2OCAwIDAgMCAyLjk3IDIuOTZsLTEuMTcgMi43OGE3Ljk5NiA3Ljk5NiAwIDAgMS00LjU4LTQuNTl6bTEwLjM0IDQuNTktMS4xNS0yLjc4YTQuOTc4IDQuOTc4IDAgMCAwIDIuOTUtMi45N2wyLjc4IDEuMTdhOC4wMDcgOC4wMDcgMCAwIDEtNC41OCA0LjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dhcEhvcml6IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljk5IDExIDMgMTVsMy45OSA0di0zSDE0di0ySDYuOTl2LTN6TTIxIDlsLTMuOTktNHYzSDEwdjJoNy4wMXYzTDIxIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2FwSG9yaXpvbnRhbENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMtMTMuNVY5aC00djJoNHYyLjVsMy41LTMuNXptLTYgNEw1LjUgMTQgOSAxNy41VjE1aDR2LTJIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3YXBWZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNy4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3ptNyAxNC4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3YXBWZXJ0aWNhbENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6TTYuNSA5IDEwIDUuNSAxMy41IDlIMTF2NEg5Vjl6bTExIDZMMTQgMTguNSAxMC41IDE1SDEzdi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEzLjlhNSA1IDAgMSAwLTIgMHY0LjI3bC0xLjU5LTEuNTlMOCAxOGw0IDQgNC00LTEuNDEtMS40MUwxMyAxOC4xN1YxMy45ek0xNSA5YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIyIDEwLTQuMTUuMDFhLjk3NS45NzUgMCAwIDAtLjQ1LjA4bC0uNTkuMjYtMS44My00LjFjLS41Ni0xLjI2LTIuMDQtMS44My0zLjMtMS4yN3MtMS44MyAyLjA0LTEuMjcgMy4zbDMuMyA3LjQ1LTEuODcuMzljLS4xOS4wNS0uOTkuMjctMS4zNiAxLjIxTDggMTkuMTlsNi43OCAyLjY3Yy40OS4xOSAxLjA1LjE4IDEuNTMtLjA0bDUuOTktMi42NWMuODktLjQgMS4zNy0xLjM4IDEuMTMtMi4zMmwtMS4zNi01LjM0Yy0uMjItLjg2LS45Ny0xLjQ3LTEuODUtMS41MXptMS4yNyA3LjM0TDE1LjUgMjBsLTQuOTItMS45NiA0LjE4LS44OC00LjMtOS43Yy0uMTEtLjI1IDAtLjU1LjI1LS42Ni4yNS0uMTEuNTUgMCAuNjYuMjVsMi41IDUuNjUgMS42MS0uNzEgNC42NS4wMSAxLjM2IDUuMzR6TTMuOCAxMi4xOGMtLjItLjg2LS4zLTEuNzYtLjMtMi42OCAwLTIuODQuOTktNS40NSAyLjYzLTcuNUw3LjIgMy4wN2ExMC40NTcgMTAuNDU3IDAgMCAwLTEuODggOC45OWwxLjYyLTEuNjJMOCAxMS41IDQuNSAxNSAxIDExLjVsMS4wNi0xLjA2IDEuNzQgMS43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlTGVmdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjEgMTNhNSA1IDAgMSAwIDAtMkg1LjgzbDEuNTktMS41OUw2IDhsLTQgNCA0IDQgMS40MS0xLjQxTDUuODMgMTNoNC4yN3ptNC45IDJjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODkgMTMuNzctMy44LTEuNjdjLS4xMy0uMDYtLjI4LS4xLS40NC0uMUgxNFY3LjVhMi41IDIuNSAwIDAgMC01IDB2OC4xNWwtMS44Ny0uNGMtLjE5LS4wMy0xLjAyLS4xNS0xLjczLjU2TDQgMTcuMjJsNS4xMiA1LjE5Yy4zNy4zOC44OC41OSAxLjQxLjU5aDYuNTVjLjk4IDAgMS44MS0uNyAxLjk3LTEuNjdsLjkyLTUuNDRhMiAyIDAgMCAwLTEuMDgtMi4xMnpNMTcuMDggMjFoLTYuNTVsLTMuNy0zLjc4IDQuMTcuODlWNy41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djYuMThoMS43NkwxOCAxNS41NiAxNy4wOCAyMXpNNC4wOSA1LjVIN1Y3SDJWMmgxLjV2Mi4wMkM1LjgyIDIuMTMgOC43OCAxIDEyIDFjNS40OSAwIDkuMjcgMy4xMiAxMCA2aC0xLjU3Yy0uNzYtMS45OC0zLjY5LTQuNS04LjQzLTQuNS0zLjAzIDAtNS43OSAxLjE0LTcuOTEgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlUmlnaHRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45IDExYTUgNSAwIDEgMCAwIDJoNC4yN2wtMS41OSAxLjU5TDE4IDE2bDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDExSDEzLjl6TTkgOWMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2lwZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODkgMTMuNzctMy44LTEuNjdjLS4xMy0uMDYtLjI4LS4xLS40NC0uMUgxNFY3LjVhMi41IDIuNSAwIDAgMC01IDB2OC4xNWwtMS44Ny0uNGMtLjE5LS4wMy0xLjAyLS4xNS0xLjczLjU2TDQgMTcuMjJsNS4xMiA1LjE5Yy4zNy4zOC44OC41OSAxLjQxLjU5aDYuNTVjLjk4IDAgMS44MS0uNyAxLjk3LTEuNjdsLjkyLTUuNDRhMiAyIDAgMCAwLTEuMDgtMi4xMnpNMTcuMDggMjFoLTYuNTVsLTMuNy0zLjc4IDQuMTcuODlWNy41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djYuMThoMS43NkwxOCAxNS41NiAxNy4wOCAyMXpNMTIgMi41QzcuMjYgMi41IDQuMzMgNS4wMiAzLjU3IDdIMmMuNzMtMi44OCA0LjUxLTYgMTAtNiAzLjIyIDAgNi4xOCAxLjEzIDguNSAzLjAyVjJIMjJ2NWgtNVY1LjVoMi45MWMtMi4xMi0xLjg2LTQuODgtMy03LjkxLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2lwZVVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNS44MyAxLjU5IDEuNTlMMTYgNmwtNC00LTQgNCAxLjQxIDEuNDFMMTEgNS44M3Y0LjI3YTUgNSAwIDEgMCAyIDBWNS44M3pNMTIgMThjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIyIDEwLTQuMTUuMDFhLjk3NS45NzUgMCAwIDAtLjQ1LjA4bC0uNTkuMjYtMS44My00LjFjLS41Ni0xLjI2LTIuMDQtMS44My0zLjMtMS4yN3MtMS44MyAyLjA0LTEuMjcgMy4zbDMuMyA3LjQ1LTEuODcuMzljLS4xOS4wNS0uOTkuMjctMS4zNiAxLjIxTDggMTkuMTlsNi43OCAyLjY3Yy40OS4xOSAxLjA1LjE4IDEuNTMtLjA0bDUuOTktMi42NWMuODktLjQgMS4zNy0xLjM4IDEuMTMtMi4zMmwtMS4zNi01LjM0Yy0uMjItLjg2LS45Ny0xLjQ3LTEuODUtMS41MXptMS4yNyA3LjM0TDE1LjUgMjBsLTQuOTItMS45NiA0LjE4LS44OC00LjMtOS43Yy0uMTEtLjI1IDAtLjU1LjI1LS42Ni4yNS0uMTEuNTUgMCAuNjYuMjVsMi41IDUuNjUgMS42MS0uNzEgNC42NS4wMSAxLjM2IDUuMzR6TTIuMDYgNS41NiAxIDQuNSA0LjUgMSA4IDQuNSA2Ljk0IDUuNTYgNS4zMiAzLjk0YTEwLjQ1NyAxMC40NTcgMCAwIDAgMS44OCA4Ljk5TDYuMTMgMTRBMTEuOTc0IDExLjk3NCAwIDAgMSAzLjUgNi41YzAtLjkyLjEtMS44Mi4zLTIuNjhMMi4wNiA1LjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMmg1djVINC41VjQuMDljLTEuODYgMi4xMS0zIDQuODgtMyA3LjkxczEuMTQgNS43OSAzIDcuOTFWMTdINnY1SDF2LTEuNWgyLjAyQzEuMTMgMTguMTggMCAxNS4yMiAwIDEyczEuMTMtNi4xOCAzLjAyLTguNUgxVjJ6bTE5LjIyIDgtNC4xNS4wMWEuOTc1Ljk3NSAwIDAgMC0uNDUuMDhsLS41OS4yNi0xLjgzLTQuMWMtLjU2LTEuMjYtMi4wNC0xLjgzLTMuMy0xLjI3cy0xLjgzIDIuMDQtMS4yNyAzLjNsMy4zIDcuNDUtMS44Ny4zOWMtLjE5LjA1LS45OS4yNy0xLjM2IDEuMjFMOCAxOS4xOWw2Ljc4IDIuNjdjLjQ5LjE5IDEuMDUuMTggMS41My0uMDRsNS45OS0yLjY1Yy44OS0uNCAxLjM3LTEuMzggMS4xMy0yLjMybC0xLjM2LTUuMzRjLS4yMi0uODYtLjk3LTEuNDctMS44NS0xLjUxem0xLjI3IDcuMzRMMTUuNSAyMGwtNC45Mi0xLjk2IDQuMTgtLjg4LTQuMy05LjdjLS4xMS0uMjUgMC0uNTUuMjUtLjY2LjI1LS4xMS41NSAwIC42Ni4yNWwyLjUgNS42NSAxLjYxLS43MSA0LjY1LjAxIDEuMzYgNS4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAydjIuMDJDMTguMTggMi4xMyAxNS4yMiAxIDEyIDFTNS44MiAyLjEzIDMuNSA0LjAyVjJIMnY1aDVWNS41SDQuMDljMi4xMS0xLjg2IDQuODgtMyA3LjkxLTNzNS43OSAxLjE0IDcuOTEgM0gxN1Y3aDVWMmgtMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC44OSAxMy43Ny0zLjgtMS42N2MtLjEzLS4wNi0uMjgtLjEtLjQ0LS4xSDE0VjcuNjNjMC0xLjMyLS45Ni0yLjUtMi4yNy0yLjYyQTIuNTA4IDIuNTA4IDAgMCAwIDkgNy41djguMTVsLTEuODctLjRjLS4xOS0uMDMtMS4wMi0uMTUtMS43My41Nkw0IDE3LjIybDUuMTIgNS4xOWMuMzcuMzguODguNTkgMS40MS41OWg2LjU1Yy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC45Mi01LjQ0YTIgMiAwIDAgMC0xLjA4LTIuMTJ6TTE4IDE1LjU2IDE3LjA4IDIxaC02LjU1bC0zLjctMy43OCA0LjE3Ljg5VjcuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY2LjE4aDEuNzZMMTggMTUuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hBY2Nlc3NTaG9ydGN1dEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDYgOC45NCA1IDhsMi4wNi0uOTRMOCA1bC45NCAyLjA2TDExIDhsLTIuMDYuOTRMOCAxMWwtLjk0LTIuMDZ6TTggMjFsLjk0LTIuMDZMMTEgMThsLTIuMDYtLjk0TDggMTVsLS45NCAyLjA2TDUgMThsMi4wNi45NEw4IDIxem0tMy42My04LjYzTDMgMTNsMS4zNy42M0w1IDE1bC42My0xLjM3TDcgMTNsLTEuMzctLjYzTDUgMTFsLS42MyAxLjM3ek0xMiAxMmMwLTMuMDkgMS4zOC01Ljk0IDMuNDQtOEgxMlYyaDd2N2gtMlY1LjI4Yy0xLjggMS43NC0zIDQuMi0zIDYuNzIgMCAzLjMyIDIuMSA2LjM2IDUgNy44MlYyMmMtNC4wOS0xLjU5LTctNS42NS03LTEwem0xMiAyaC0ydi0yaC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpdGNoQWNjZXNzU2hvcnRjdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjA2IDguOTQgNSA4bDIuMDYtLjk0TDggNWwuOTQgMi4wNkwxMSA4bC0yLjA2Ljk0TDggMTFsLS45NC0yLjA2ek04IDIxbC45NC0yLjA2TDExIDE4bC0yLjA2LS45NEw4IDE1bC0uOTQgMi4wNkw1IDE4bDIuMDYuOTRMOCAyMXptLTMuNjMtOC42M0wzIDEzbDEuMzcuNjNMNSAxNWwuNjMtMS4zN0w3IDEzbC0xLjM3LS42M0w1IDExbC0uNjMgMS4zN3pNMTIgMTJjMC0zLjA5IDEuMzgtNS45NCAzLjQ0LThIMTJWMmg3djdoLTJWNS4yOGMtMS44IDEuNzQtMyA0LjItMyA2LjcyIDAgMy4zMiAyLjEgNi4zNiA1IDcuODJWMjJjLTQuMDktMS41OS03LTUuNjUtNy0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5bmNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQxIDEzLjQxIDYgMTJsLTQgNCA0IDQgMS40MS0xLjQxTDUuODMgMTdIMjF2LTJINS44M3pNMTYuNTkgMTAuNTkgMTggMTJsNC00LTQtNC0xLjQxIDEuNDFMMTguMTcgN0gzdjJoMTUuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTeXN0ZW1VcGRhdGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDE2IDQtNGgtM1YzaC0ydjlIOGw0IDR6bTktMTNoLTZ2MS45OWg2djE0LjAzSDNWNC45OWg2VjNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxMyA0LTRoLTNWM2gtMnY5SDhsNCA0em05LTEzaC02djEuOTloNnYxNC4wM0gzVjQuOTloNlYzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYlVuc2VsZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgOWgyVjdIMXYyem0wIDRoMnYtMkgxdjJ6bTAtOGgyVjNjLTEuMSAwLTIgLjktMiAyem04IDE2aDJ2LTJIOXYyem0tOC00aDJ2LTJIMXYyem0yIDR2LTJIMWMwIDEuMS45IDIgMiAyek0yMSAzaC04djZoMTBWNWMwLTEuMS0uOS0yLTItMnptMCAxNGgydi0yaC0ydjJ6TTkgNWgyVjNIOXYyek01IDIxaDJ2LTJINXYyek01IDVoMlYzSDV2MnptMTYgMTZjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptLTggOGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWJsZVZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3SDljLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCAydjJIOVY5aDEwem0tNiA2di0yaDJ2MmgtMnptMiAydjJoLTJ2LTJoMnptLTQtMkg5di0yaDJ2MnptNi0yaDJ2MmgtMnYtMnptLTggNGgydjJIOXYtMnptOCAydi0yaDJ2MmgtMnpNNiAxN0g1Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDJ2MWgtMlY1SDV2MTBoMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFza0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDUuMTggMTAuNTkgMTYuNmwtNC4yNC00LjI0IDEuNDEtMS40MSAyLjgzIDIuODMgMTAtMTBMMjIgNS4xOHptLTIuMjEgNS4wNGMuMTMuNTcuMjEgMS4xNy4yMSAxLjc4IDAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04IDMuNTgtOCA4LThjMS41OCAwIDMuMDQuNDYgNC4yOCAxLjI1bDEuNDQtMS40NEE5LjkgOS45IDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTEuMTktLjIyLTIuMzMtLjYtMy4zOWwtMS42MSAxLjYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptMCAxNEg0VjhoMTZ2MTB6bS0yLTFoLTZ2LTJoNnYyek03LjUgMTdsLTEuNDEtMS40MUw4LjY3IDEzbC0yLjU5LTIuNTlMNy41IDlsNCA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRSb3RhdGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNC0zIDNoMnYxM2gyVjdoMmwtMy0zem0tNi4yIDExLjV2LTVsMi4yLS45VjcuNUwzIDEyLjI1djEuNWwxMSA0Ljc1di0yLjFsLTIuMi0uOXpNNC45OCAxMyAxMCAxMS4xM3YzLjc0TDQuOTggMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0Um90YXRlVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljc1IDVoLTEuNUw5LjUgMTZoMi4xbC45LTIuMmg1bC45IDIuMmgyLjFMMTUuNzUgNXptLTIuNjIgN0wxNSA2Ljk4IDE2Ljg3IDEyaC0zLjc0ek02IDIwbDMtM0g3VjRINXYxM0gzbDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRSb3RhdGlvbkFuZ2xlZG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMjF2LTQuMjRsLTEuNDEgMS40MS05LjItOS4xOS0xLjQxIDEuNDEgOS4xOSA5LjE5TDEwLjc2IDIxSDE1ek0xMS4yNSA4LjQ4bDMuNTQgMy41NC0uOTIgMi4xOSAxLjQ4IDEuNDggNC40Mi0xMS4xNC0xLjA2LTEuMDVMNy41NyA3LjkyIDkuMDYgOS40bDIuMTktLjkyem02LjU5LTMuMDUtMi4yMyA0Ljg3LTIuNjQtMi42NCA0Ljg3LTIuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0Um90YXRpb25BbmdsZXVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi43NiA5IDEuNDEgMS40MS05LjE5IDkuMTkgMS40MSAxLjQxIDkuMTktOS4xOUwyMSAxMy4yNFY5aC00LjI0em0tOC4yOCAzLjc1IDMuNTQtMy41NCAyLjE5LjkyIDEuNDgtMS40OEw0LjU2IDQuMjMgMy41IDUuMjlsNC40MiAxMS4xNCAxLjQ4LTEuNDgtLjkyLTIuMnptLS44Mi0xLjcyTDUuNDMgNi4xNmw0Ljg3IDIuMjMtMi42NCAyLjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dFJvdGF0aW9uRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAyMCAzLTNIN1Y0SDV2MTNIM2wzIDN6bTYuMi0xMS41djVsLTIuMi45djIuMWwxMS00Ljc1di0xLjVMMTAgNS41djIuMWwyLjIuOXptNi44MiAyLjVMMTQgMTIuODdWOS4xM0wxOS4wMiAxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRSb3RhdGlvbk5vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDE4LTMtM3YySDV2MmgxM3YybDMtM3pNOS41IDExLjhoNWwuOSAyLjJoMi4xTDEyLjc1IDNoLTEuNUw2LjUgMTRoMi4xbC45LTIuMnpNMTIgNC45OCAxMy44NyAxMGgtMy43NEwxMiA0Ljk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGhlYXRlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDN2MmgtMlYzSDh2Mkg2VjNINHYxOGgydi0yaDJ2Mmg4di0yaDJ2MmgyVjNoLTJ6TTggMTdINnYtMmgydjJ6bTAtNEg2di0yaDJ2MnptMC00SDZWN2gydjJ6bTYgMTBoLTRWNWg0djE0em00LTJoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaHVtYkRvd25PZmZBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MmMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OS02LjU5Yy4zNi0uMzYuNTgtLjg2LjU4LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptMCAxMi00LjM0IDQuMzRMMTIgMTRIM3YtMmwzLTdoOXYxMHptNC0xMmg0djEyaC00VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaHVtYkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDNINmMtLjgzIDAtMS41NC41LTEuODQgMS4yMmwtMy4wMiA3LjA1Yy0uMDkuMjMtLjE0LjQ3LS4xNC43M3YyYzAgMS4xLjkgMiAyIDJoNi4zMWwtLjk1IDQuNTctLjAzLjMyYzAgLjQxLjE3Ljc5LjQ0IDEuMDZMOS44MyAyM2w2LjU5LTYuNTljLjM2LS4zNi41OC0uODYuNTgtMS40MVY1YzAtMS4xLS45LTItMi0yem0wIDEyLTQuMzQgNC4zNEwxMiAxNEgzdi0ybDMtN2g5djEwem00LTEyaDR2MTJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaHVtYlVwT2ZmQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyMWg5Yy44MyAwIDEuNTQtLjUgMS44NC0xLjIybDMuMDItNy4wNWMuMDktLjIzLjE0LS40Ny4xNC0uNzN2LTJjMC0xLjEtLjktMi0yLTJoLTYuMzFsLjk1LTQuNTcuMDMtLjMyYzAtLjQxLS4xNy0uNzktLjQ0LTEuMDZMMTQuMTcgMSA3LjU4IDcuNTlDNy4yMiA3Ljk1IDcgOC40NSA3IDl2MTBjMCAxLjEuOSAyIDIgMnpNOSA5bDQuMzQtNC4zNEwxMiAxMGg5djJsLTMgN0g5Vjl6TTEgOWg0djEySDFWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW1iVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMjFoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0yYzAtMS4xLS45LTItMi0yaC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OCA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJ6TTkgOWw0LjM0LTQuMzRMMTIgMTBoOXYybC0zIDdIOVY5ek0xIDloNHYxMkgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGh1bWJzVXBEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzAtLjU1LS40NS0xLTEtMUg1LjgybC42Ni0zLjE4LjAyLS4yM2MwLS4zMS0uMTMtLjU5LS4zMy0uOEw1LjM4IDAgLjQ0IDQuOTRDLjE3IDUuMjEgMCA1LjU5IDAgNnY2LjVjMCAuODMuNjcgMS41IDEuNSAxLjVoNi43NWMuNjIgMCAxLjE1LS4zOCAxLjM4LS45MWwyLjI2LTUuMjljLjA3LS4xNy4xMS0uMzYuMTEtLjU1VjZ6bS0yIDEuMTNMNy45MiAxMkgyVjYuMjFsMS45My0xLjkzTDMuMzYgN0gxMHYuMTN6TTIyLjUgMTBoLTYuNzVjLS42MiAwLTEuMTUuMzgtMS4zOC45MWwtMi4yNiA1LjI5Yy0uMDcuMTctLjExLjM2LS4xMS41NVYxOGMwIC41NS40NSAxIDEgMWg1LjE4bC0uNjYgMy4xOC0uMDIuMjRjMCAuMzEuMTMuNTkuMzMuOGwuNzkuNzggNC45NC00Ljk0Yy4yNy0uMjcuNDQtLjY1LjQ0LTEuMDZ2LTYuNWMwLS44My0uNjctMS41LTEuNS0xLjV6bS0uNSA3Ljc5LTEuOTMgMS45My41Ny0yLjcySDE0di0uMTNMMTYuMDggMTJIMjJ2NS43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRpbWVsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOGMwIDEuMS0uOSAyLTIgMmExLjcgMS43IDAgMCAxLS41MS0uMDdsLTMuNTYgMy41NWMuMDUuMTYuMDcuMzQuMDcuNTIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjE4LjAyLS4zNi4wNy0uNTJsLTIuNTUtMi41NWMtLjE2LjA1LS4zNC4wNy0uNTIuMDdzLS4zNi0uMDItLjUyLS4wN2wtNC41NSA0LjU2Yy4wNS4xNi4wNy4zMy4wNy41MSAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTJjLjE4IDAgLjM1LjAyLjUxLjA3bDQuNTYtNC41NUM4LjAyIDkuMzYgOCA5LjE4IDggOWMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgLjE4LS4wMi4zNi0uMDcuNTJsMi41NSAyLjU1Yy4xNi0uMDUuMzQtLjA3LjUyLS4wN3MuMzYuMDIuNTIuMDdsMy41NS0zLjU2QTEuNyAxLjcgMCAwIDEgMTkgOGMwLTEuMS45LTIgMi0yczIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGlwc0FuZFVwZGF0ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIwaDRjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yem0tMi0xaDh2LTJINXYyem0xMS41LTkuNWMwIDMuODItMi42NiA1Ljg2LTMuNzcgNi41SDUuMjdjLTEuMTEtLjY0LTMuNzctMi42OC0zLjc3LTYuNUMxLjUgNS4zNiA0Ljg2IDIgOSAyczcuNSAzLjM2IDcuNSA3LjV6bS0yIDBDMTQuNSA2LjQ3IDEyLjAzIDQgOSA0UzMuNSA2LjQ3IDMuNSA5LjVjMCAyLjQ3IDEuNDkgMy44OSAyLjM1IDQuNWg2LjNjLjg2LS42MSAyLjM1LTIuMDMgMi4zNS00LjV6bTYuODctMi4xM0wyMCA4bDEuMzcuNjNMMjIgMTBsLjYzLTEuMzdMMjQgOGwtMS4zNy0uNjNMMjIgNmwtLjYzIDEuMzd6TTE5IDZsLjk0LTIuMDZMMjIgM2wtMi4wNi0uOTRMMTkgMGwtLjk0IDIuMDZMMTYgM2wyLjA2Ljk0TDE5IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOWgxNFY3SDN2MnptMCA0aDE0di0ySDN2MnptMCA0aDE0di0ySDN2MnptMTYgMGgydi0yaC0ydjJ6bTAtMTB2MmgyVjdoLTJ6bTAgNmgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOWgxNHYxMHptMC0xMkg1VjVoMTR2MnpNNyAxMWg1djVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRva2VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgNy05LTUtOSA1djEwbDkgNSA5LTVWN3ptLTktMi43MSA1LjkxIDMuMjgtMy4wMSAxLjY3QzE0LjE3IDguNDggMTMuMTQgOCAxMiA4cy0yLjE3LjQ4LTIuOSAxLjI0TDYuMDkgNy41NyAxMiA0LjI5em0tMSAxNC44Ny02LTMuMzNWOS4yNkw4LjEzIDExYy0uMDkuMzEtLjEzLjY1LS4xMyAxIDAgMS44NiAxLjI3IDMuNDMgMyAzLjg3djMuMjl6TTEwIDEyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTMgNy4xNnYtMy4yOGMxLjczLS40NCAzLTIuMDEgMy0zLjg3IDAtLjM1LS4wNC0uNjktLjEzLTEuMDFMMTkgOS4yNnY2LjU3bC02IDMuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6TTMgMTJhNS45OSA1Ljk5IDAgMCAxIDQtNS42NVY0LjI2QzMuNTUgNS4xNSAxIDguMjcgMSAxMnMyLjU1IDYuODUgNiA3Ljc0di0yLjA5QTUuOTkgNS45OSAwIDAgMSAzIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG91Y2hBcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4xOSAxMi40NC0zLjI0LTEuNjJjMS4yOS0xIDIuMTItMi41NiAyLjEyLTQuMzIgMC0zLjAzLTIuNDctNS41LTUuNS01LjVzLTUuNSAyLjQ3LTUuNSA1LjVjMCAyLjEzIDEuMjIgMy45OCAzIDQuODl2My4yNmMtMi4xNS0uNDYtMi4wMi0uNDQtMi4yNi0uNDQtLjUzIDAtMS4wMy4yMS0xLjQxLjU5TDQgMTYuMjJsNS4wOSA1LjA5Yy40My40NCAxLjAzLjY5IDEuNjUuNjloNi4zYy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC44LTQuNzFjLjIyLTEuMy0uNDMtMi41OC0xLjYyLTMuMTh6bS0uMzUgMi44NS0uOCA0LjcxaC02LjNjLS4wOSAwLS4xNy0uMDQtLjI0LS4xbC0zLjY4LTMuNjggNC4yNS44OVY2LjVjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2NmgxLjc2bDMuNDYgMS43M2MuNC4yLjYyLjYzLjU1IDEuMDZ6TTguMDcgNi41YzAtMS45MyAxLjU3LTMuNSAzLjUtMy41czMuNSAxLjU3IDMuNSAzLjVjMCAuOTUtLjM4IDEuODEtMSAyLjQ0VjYuNWEyLjUgMi41IDAgMCAwLTUgMHYyLjQ0Yy0uNjItLjYzLTEtMS40OS0xLTIuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb3VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNEg3VjJINXYyMGgydi04aDE0bC0yLTUgMi01em0tMy44NiA1Ljc0LjkgMi4yNkg3VjZoMTEuMDVsLS45IDIuMjYtLjMuNzQuMjkuNzR6TTE0IDljMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhY2tDaGFuZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS4wNyA0LjkzLTEuNDEgMS40MUE4LjAxNCA4LjAxNCAwIDAgMSAyMCAxMmMwIDQuNDItMy41OCA4LTggOHMtOC0zLjU4LTgtOGMwLTQuMDggMy4wNS03LjQ0IDctNy45M3YyLjAyQzguMTYgNi41NyA2IDkuMDMgNiAxMmMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02YzAtMS42Ni0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDEgMS40MUMxNS41NSA5LjkgMTYgMTAuOSAxNiAxMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNGMwLTEuODYgMS4yOC0zLjQxIDMtMy44NnYyLjE0Yy0uNi4zNS0xIC45OC0xIDEuNzIgMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLS43NC0uNC0xLjM4LTEtMS43MlYyaC0xQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFuc2NyaWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxM2MyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTYuMzkgOC41NkMxMy43MSAxNC43IDExLjUzIDE0IDkgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTUgMTlIM3YtLjc4YzAtLjM4LjItLjcyLjUyLS44OEM0LjcxIDE2LjczIDYuNjMgMTYgOSAxNmMyLjM3IDAgNC4yOS43MyA1LjQ4IDEuMzQuMzIuMTYuNTIuNS41Mi44OFYxOXptMi45My0zIDEuNjMtMS42M2MtMi43Ny0zLjAyLTIuNzctNy41NiAwLTEwLjc0TDE3LjkzIDJjLTMuOSAzLjg5LTMuOTEgOS45NSAwIDE0em00Ljk5LTUuMDVhMy4zMTcgMy4zMTcgMCAwIDEgMC0zLjg5bC0xLjY4LTEuNjljLTIuMDIgMi4wMi0yLjAyIDUuMDcgMCA3LjI3bDEuNjgtMS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuODcgMTUuMDctMi41NC0yLjUxLjAzLS4wM0ExNy41MiAxNy41MiAwIDAgMCAxNC4wNyA2SDE3VjRoLTdWMkg4djJIMXYxLjk5aDExLjE3QzExLjUgNy45MiAxMC40NCA5Ljc1IDkgMTEuMzUgOC4wNyAxMC4zMiA3LjMgOS4xOSA2LjY5IDhoLTJjLjczIDEuNjMgMS43MyAzLjE3IDIuOTggNC41NmwtNS4wOSA1LjAyTDQgMTlsNS01IDMuMTEgMy4xMS43Ni0yLjA0ek0xOC41IDEwaC0yTDEyIDIyaDJsMS4xMi0zaDQuNzVMMjEgMjJoMmwtNC41LTEyem0tMi42MiA3IDEuNjItNC4zM0wxOS4xMiAxN2gtMy4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyZW5kaW5nRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgMTggMi4yOS0yLjI5LTQuODgtNC44OC00IDRMMiA3LjQxIDMuNDEgNmw2IDYgNC00IDYuMyA2LjI5TDIyIDEydjZoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmVuZGluZ0ZsYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDEyLTQtNHYzSDN2MmgxNXYzbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyZW5kaW5nVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDYgMi4yOSAyLjI5LTQuODggNC44OC00LTRMMiAxNi41OSAzLjQxIDE4bDYtNiA0IDQgNi4zLTYuMjlMMjIgMTJWNmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyb3VibGVzaG9vdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDIwLjU5LTQuNjktNC42OUE3LjkwMiA3LjkwMiAwIDAgMCAxOSAxMWMwLTQuNDItMy41OC04LTgtOC00LjA4IDAtNy40NCAzLjA1LTcuOTMgN2gyLjAyQzUuNTcgNy4xNyA4LjAzIDUgMTEgNWMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNmMtMi40MiAwLTQuNS0xLjQ0LTUuNDUtMy41SDMuNEM0LjQ1IDE2LjY5IDcuNDYgMTkgMTEgMTljMS44NSAwIDMuNTUtLjYzIDQuOS0xLjY5TDIwLjU5IDIyIDIyIDIwLjU5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjQzIDkuNjkgOS42NSAxNWgxLjY0bDEuMjYtMy43OC45NSAyLjI4aDJWMTJoLTFsLTEuMjUtM2gtMS41NGwtMS4xMiAzLjM3TDkuMzUgN0g3LjdsLTEuMjUgNEgxdjEuNWg2LjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg1LjE3TDQgMTcuMTdWNGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMTUgMS41Ny0zLjQzTDE3IDEwbC0zLjQzLTEuNTdMMTIgNWwtMS41NyAzLjQzTDcgMTBsMy40MyAxLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVybmVkSW5Ob3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnptMCAxNS01LTIuMThMNyAxOFY1aDEwdjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVybmVkSW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVuZm9sZExlc3NEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41OCAxLjQxIDE1LjE2IDBsLTMuMTcgMy4xN0w4LjgyIDAgNy40MSAxLjQxIDExLjk5IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU4IDYuNDEgMTUuMTYgNWwtMy4xNyAzLjE3TDguODIgNSA3LjQxIDYuNDEgMTEuOTkgMTF6TTcuNDIgMTcuNTkgOC44NCAxOWwzLjE3LTMuMTdMMTUuMTggMTlsMS40MS0xLjQxTDEyLjAxIDEzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQyIDIyLjU5IDguODQgMjRsMy4xNy0zLjE3TDE1LjE4IDI0bDEuNDEtMS40MUwxMi4wMSAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVuZm9sZE1vcmVEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3LjgzIDE1LjE3IDExbDEuNDEtMS40MUwxMiA1IDcuNDEgOS41OSA4LjgzIDExIDEyIDcuODN6bTAtNUwxNS4xNyA2bDEuNDEtMS40MUwxMiAwIDcuNDEgNC41OSA4LjgzIDYgMTIgMi44M3ptMCAxOC4zNEw4LjgzIDE4bC0xLjQxIDEuNDFMMTIgMjRsNC41OS00LjU5TDE1LjE3IDE4IDEyIDIxLjE3em0wLTVMOC44MyAxM2wtMS40MSAxLjQxTDEyIDE5bDQuNTktNC41OUwxNS4xNyAxMyAxMiAxNi4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVucHVibGlzaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy45NCA1LjEyIDYuNDkgMy42NkE5LjkxIDkuOTEgMCAwIDEgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMCAwIDIuMDQtLjYxIDMuOTMtMS42NiA1LjUxbC0xLjQ2LTEuNDZBNy44NjkgNy44NjkgMCAwIDAgMjAgMTJjMC00LjQxLTMuNTktOC04LTgtMS40OCAwLTIuODYuNDEtNC4wNiAxLjEyem05LjcyIDQuNDEtMS40MS0xLjQxLTIuNjUgMi42NSAxLjQxIDEuNDEgMi42NS0yLjY1em0yLjEyIDEzLjA4LTIuMjctMi4yN0E5LjkxIDkuOTEgMCAwIDEgMTIgMjJDNi40OCAyMiAyIDE3LjUyIDIgMTJjMC0yLjA0LjYxLTMuOTMgMS42Ni01LjUxTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnptLTMuNzItMy43M0wxMi4xOCAxNWwtMS41OSAxLjU5LTQuMjQtNC4yNCAxLjQxLTEuNDEgMi44MyAyLjgzLjE4LS4xOC01LjY1LTUuNjVBNy45MzIgNy45MzIgMCAwIDAgNCAxMmMwIDQuNDEgMy41OSA4IDggOCAxLjQ4IDAgMi44Ni0uNDEgNC4wNi0xLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXBkYXRlRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45NCAxM2E4Ljg2NSA4Ljg2NSAwIDAgMS0xLjMzIDMuNzlsLTEuNDctMS40N2MuMzgtLjcxLjY1LTEuNDkuNzctMi4zMmgyLjAzek04LjY3IDUuODRBNy4wNiA3LjA2IDAgMCAxIDEyIDVhNy4wMSA3LjAxIDAgMCAxIDUuNzQgM0gxNXYyaDZWNGgtMnYyLjM2QzE3LjM1IDQuMzIgMTQuODMgMyAxMiAzYy0xLjc2IDAtMy40LjUxLTQuNzggMS4zOWwxLjQ1IDEuNDV6TTExIDd2MS4xN2wyIDJWN2gtMnptOC43OCAxNS42MS0zLTNBOC45NzMgOC45NzMgMCAwIDEgMTIgMjFhOSA5IDAgMCAxLTktOWMwLTEuNzYuNTEtMy40IDEuMzktNC43OGwtMy0zTDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyem0tNC40Ni00LjQ2TDUuODQgOC42N0E3LjA2IDcuMDYgMCAwIDAgNSAxMmMwIDMuODYgMy4xNCA3IDcgNyAxLjIgMCAyLjM0LS4zMSAzLjMyLS44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDh2NWw0LjI1IDIuNTIuNzctMS4yOC0zLjUyLTIuMDlWOEgxMXptMTAgMlYzbC0yLjY0IDIuNjRBOC45MzcgOC45MzcgMCAwIDAgMTIgM2E5IDkgMCAxIDAgOSA5aC0yYzAgMy44Ni0zLjE0IDctNyA3cy03LTMuMTQtNy03IDMuMTQtNyA3LTdjMS45MyAwIDMuNjguNzkgNC45NSAyLjA1TDE0IDEwaDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVcGdyYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTh2Mkg4di0yaDh6TTExIDcuOTlWMTZoMlY3Ljk5aDNMMTIgNCA4IDcuOTloM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcmlmaWVkVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bTcgMTBjMCA0LjUyLTIuOTggOC42OS03IDkuOTMtNC4wMi0xLjI0LTctNS40MS03LTkuOTNWNi4zbDctMy4xMSA3IDMuMTFWMTF6bS0xMS41OS41OUw2IDEzbDQgNCA4LTgtMS40MS0xLjQyTDEwIDE0LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVyaWZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxMS45OSAyMC41NiA5LjJsLjM0LTMuNjktMy42MS0uODJMMTUuNCAxLjUgMTIgMi45NiA4LjYgMS41IDYuNzEgNC42OSAzLjEgNS41bC4zNCAzLjdMMSAxMS45OWwyLjQ0IDIuNzktLjM0IDMuNyAzLjYxLjgyIDEuODkgMy4yIDMuNC0xLjQ3IDMuNCAxLjQ2IDEuODktMy4xOSAzLjYxLS44Mi0uMzQtMy42OSAyLjQ0LTIuOHptLTMuOTUgMS40OC0uNTYuNjUuMDguODUuMTggMS45NS0xLjkuNDMtLjg0LjE5LS40NC43NC0uOTkgMS42OC0xLjc4LS43Ny0uOC0uMzQtLjc5LjM0LTEuNzguNzctLjk5LTEuNjctLjQ0LS43NC0uODQtLjE5LTEuOS0uNDMuMTgtMS45Ni4wOC0uODUtLjU2LS42NUwzLjY3IDEybDEuMjktMS40OC41Ni0uNjUtLjA5LS44Ni0uMTgtMS45NCAxLjktLjQzLjg0LS4xOS40NC0uNzQuOTktMS42OCAxLjc4Ljc3LjguMzQuNzktLjM0IDEuNzgtLjc3Ljk5IDEuNjguNDQuNzQuODQuMTkgMS45LjQzLS4xOCAxLjk1LS4wOC44NS41Ni42NSAxLjI5IDEuNDctMS4yOCAxLjQ4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC4wOSAxMy43NS0yLjMyLTIuMzMtMS40OCAxLjQ5IDMuOCAzLjgxIDcuMzQtNy4zNi0xLjQ4LTEuNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWZXJ0aWNhbFNwbGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDh2Mkgzem0wIDRoOHYySDN6bTAtOGg4djJIM3ptMC00aDh2Mkgzem0xNiAydjEwaC00VjdoNG0yLTJoLTh2MTRoOFY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0FnZW5kYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzSDVjLTEuMSAwLTIgLjktMiAydjRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNGMwLTEuMS0uOS0yLTItMnptMCA2SDV2LTRoMTR2NHpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA2SDVWNWgxNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0FycmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgN3YxMEg5VjdoNnptNi0yaC0zdjE0aDNWNXptLTQgMEg3djE0aDEwVjV6TTYgNUgzdjE0aDNWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdDYXJvdXNlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgN2g0djEwSDJWN3ptNSAxMmgxMFY1SDd2MTR6TTkgN2g2djEwSDlWN3ptOSAwaDR2MTBoLTRWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdDb2x1bW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRoMThWNUgzem01LjMzIDEySDVWN2gzLjMzdjEwem01LjM0IDBoLTMuMzNWN2gzLjMzdjEwek0xOSAxN2gtMy4zM1Y3SDE5djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0NvbWZ5QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDR2NEg3ek0xMyA3aDR2NGgtNHpNNyAxM2g0djRIN3pNMTMgMTNoNHY0aC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3Q29tcGFjdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDcuNWg0djRoLTR6TTEyLjUgNy41aDR2NGgtNHpNNy41IDEyLjVoNHY0aC00ek0xMi41IDEyLjVoNHY0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0NvenkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjI1IDcuMjVoNHY0aC00ek0xMi43NSA3LjI1aDR2NGgtNHpNNy4yNSAxMi43NWg0djRoLTR6TTEyLjc1IDEyLjc1aDR2NGgtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMThIMnYyaDE5di0yem0tMi04djRINHYtNGgxNW0xLTJIM2MtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTdjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xem0xLTRIMnYyaDE5VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3SGVhZGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTVoMTZ2LTJINHYyem0wIDRoMTZ2LTJINHYyem0wLThoMTZWOUg0djJ6bTAtNnYyaDE2VjVINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdJbkFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0YzAtLjU1LjQ1LTEgMS0xaDJWMUg0QzIuMzQgMSAxIDIuMzQgMSA0djJoMlY0ek0zIDIwdi0ySDF2MmMwIDEuNjYgMS4zNCAzIDMgM2gydi0ySDRjLS41NSAwLTEtLjQ1LTEtMXpNMjAgMWgtMnYyaDJjLjU1IDAgMSAuNDUgMSAxdjJoMlY0YzAtMS42Ni0xLjM0LTMtMy0zek0yMSAyMGMwIC41NS0uNDUgMS0xIDFoLTJ2MmgyYzEuNjYgMCAzLTEuMzQgMy0zdi0yaC0ydjJ6TTE5IDE0Ljg3VjkuMTNjMC0uNzItLjM4LTEuMzgtMS0xLjczbC01LTIuODhjLS4zMS0uMTgtLjY1LS4yNy0xLS4yN3MtLjY5LjA5LTEgLjI3TDYgNy4zOWMtLjYyLjM2LTEgMS4wMi0xIDEuNzR2NS43NGMwIC43Mi4zOCAxLjM4IDEgMS43M2w1IDIuODhjLjMxLjE4LjY1LjI3IDEgLjI3cy42OS0uMDkgMS0uMjdsNS0yLjg4Yy42Mi0uMzUgMS0xLjAxIDEtMS43M3ptLTggMi4zLTQtMi4zdi00LjYzbDQgMi4zM3Y0LjZ6bTEtNi4zM0w4LjA0IDguNTMgMTIgNi4yNWwzLjk2IDIuMjhMMTIgMTAuODR6bTUgNC4wMy00IDIuM3YtNC42bDQtMi4zM3Y0LjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0thbmJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgN2gydjEwSDd6TTExIDdoMnY1aC0yek0xNSA3aDJ2OGgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0xpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRoMThWNUgzem00IDJ2Mkg1VjdoMnptLTIgNnYtMmgydjJINXptMCAyaDJ2Mkg1di0yem0xNCAySDl2LTJoMTB2MnptMC00SDl2LTJoMTB2MnptMC00SDlWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld01vZHVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGgxOFY1SDN6bTE2IDZoLTMuMzNWN0gxOXY0em0tNS4zMyAwaC0zLjMzVjdoMy4zM3Y0ek04LjMzIDd2NEg1VjdoMy4zM3pNNSAxN3YtNGgzLjMzdjRINXptNS4zMyAwdi00aDMuMzN2NGgtMy4zM3ptNS4zNCAwdi00SDE5djRoLTMuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3UXVpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRoMThWNUgzem01LjMzIDEySDVWN2gzLjMzdjEwem01LjM0IDBoLTMuMzN2LTRoMy4zM3Y0ek0xOSAxN2gtMy4zM3YtNEgxOXY0em0wLTZoLTguNjdWN0gxOXY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld1NpZGViYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDR2MTZoMjBWNEgyem0xOCA0LjY3aC0yLjVWNkgyMHYyLjY3em0tMi41IDJIMjB2Mi42N2gtMi41di0yLjY3ek00IDZoMTEuNXYxMkg0VjZ6bTEzLjUgMTJ2LTIuNjdIMjBWMThoLTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdTdHJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDd2MTBjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAyem0xNiAxMEg1di00aDE0djR6TTUgMTFWN2gxNHY0SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3VGltZWxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE1aDZ2Mkg2ek0xMiA3aDZ2MmgtNnpNOSAxMWg2djJIOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld1dlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNOCAxOEg0VjZoNHYxMnptNiAwaC00VjZoNHYxMnptNiAwaC00VjZoNHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpc2liaWxpdHlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZhOS43NyA5Ljc3IDAgMCAxIDguODIgNS41IDkuNjQ3IDkuNjQ3IDAgMCAxLTIuNDEgMy4xMmwxLjQxIDEuNDFjMS4zOS0xLjIzIDIuNDktMi43NyAzLjE4LTQuNTNDMjEuMjcgNy4xMSAxNyA0IDEyIDRjLTEuMjcgMC0yLjQ5LjItMy42NC41N2wxLjY1IDEuNjVDMTAuNjYgNi4wOSAxMS4zMiA2IDEyIDZ6bS0xLjA3IDEuMTRMMTMgOS4yMWMuNTcuMjUgMS4wMy43MSAxLjI4IDEuMjhsMi4wNyAyLjA3Yy4wOC0uMzQuMTQtLjcuMTQtMS4wN0MxNi41IDkuMDEgMTQuNDggNyAxMiA3Yy0uMzcgMC0uNzIuMDUtMS4wNy4xNHpNMi4wMSAzLjg3bDIuNjggMi42OEExMS43MzggMTEuNzM4IDAgMCAwIDEgMTEuNUMyLjczIDE1Ljg5IDcgMTkgMTIgMTljMS41MiAwIDIuOTgtLjI5IDQuMzItLjgybDMuNDIgMy40MiAxLjQxLTEuNDFMMy40MiAyLjQ1IDIuMDEgMy44N3ptNy41IDcuNSAyLjYxIDIuNjFjLS4wNC4wMS0uMDguMDItLjEyLjAyYTIuNSAyLjUgMCAwIDEtMi41LTIuNWMwLS4wNS4wMS0uMDguMDEtLjEzem0tMy40LTMuNCAxLjc1IDEuNzVhNC42IDQuNiAwIDAgMC0uMzYgMS43OCA0LjUwNyA0LjUwNyAwIDAgMCA2LjI3IDQuMTRsLjk4Ljk4Yy0uODguMjQtMS44LjM4LTIuNzUuMzhhOS43NyA5Ljc3IDAgMCAxLTguODItNS41Yy43LTEuNDMgMS43Mi0yLjYxIDIuOTMtMy41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpc2liaWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZhOS43NyA5Ljc3IDAgMCAxIDguODIgNS41QzE5LjE3IDE0Ljg3IDE1Ljc5IDE3IDEyIDE3cy03LjE3LTIuMTMtOC44Mi01LjVBOS43NyA5Ljc3IDAgMCAxIDEyIDZtMC0yQzcgNCAyLjczIDcuMTEgMSAxMS41IDIuNzMgMTUuODkgNyAxOSAxMiAxOXM5LjI3LTMuMTEgMTEtNy41QzIxLjI3IDcuMTEgMTcgNCAxMiA0em0wIDVhMi41IDIuNSAwIDAgMSAwIDUgMi41IDIuNSAwIDAgMSAwLTVtMC0yYy0yLjQ4IDAtNC41IDIuMDItNC41IDQuNVM5LjUyIDE2IDEyIDE2czQuNS0yLjAyIDQuNS00LjVTMTQuNDggNyAxMiA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVm9pY2VPdmVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi43NiA1LjM2LTEuNjggMS42OWMuOCAxLjEzLjgzIDIuNTguMDkgMy43NGwxLjcgMS43YzEuOS0yLjAyIDEuODctNC45OC0uMTEtNy4xM3pNMjAuMDcgMmwtMS42MyAxLjYzYzIuNzIgMi45NyAyLjc2IDcuMzkuMTQgMTAuNTZsMS42NCAxLjY0YzMuNzQtMy44OSAzLjcxLTkuODQtLjE1LTEzLjgzek05LjQzIDUuMDRsMy41MyAzLjUzYTMuOTc5IDMuOTc5IDAgMCAwLTMuNTMtMy41M3pNNC40MSAyLjg2IDMgNC4yN2wyLjYyIDIuNjJDNS4yMyA3LjUgNSA4LjIyIDUgOWMwIDIuMjEgMS43OSA0IDQgNCAuNzggMCAxLjUtLjIzIDIuMTEtLjYybDQuNCA0LjRDMTMuNzQgMTUuNiAxMC43OCAxNSA5IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtLjM3LS4xMS0uNy0uMjktMS4wMkwxOS43MyAyMWwxLjQxLTEuNDFMNC40MSAyLjg2ek0zIDE5Yy4yMi0uNzIgMy4zMS0yIDYtMiAyLjcgMCA1LjggMS4yOSA2IDJIM3ptNi04Yy0xLjEgMC0yLS45LTItMiAwLS4yMi4wNC0uNDIuMTEtLjYybDIuNTEgMi41MWMtLjIuMDctLjQuMTEtLjYyLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0Y2hMYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLjUtMTNIMTF2Nmw1LjIgMy4yLjgtMS4zLTQuNS0yLjdWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdlYmhvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNWg1Ljg4Yy4yNy0uMzEuNjctLjUgMS4xMi0uNS44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVjLS40NCAwLS44NC0uMTktMS4xMi0uNUgxMS45QTUgNSAwIDEgMSA2IDExLjF2Mi4wN2MtMS4xNi40MS0yIDEuNTMtMiAyLjgzIDAgMS42NSAxLjM1IDMgMyAzczMtMS4zNSAzLTN2LTF6bTIuNS0xMWMxLjY1IDAgMyAxLjM1IDMgM2gyYzAtMi43Ni0yLjI0LTUtNS01YTUuMDAyIDUuMDAyIDAgMCAwLTMuNDUgOC42MmwtMi4zNSAzLjljLS42OC4xNC0xLjIuNzUtMS4yIDEuNDggMCAuODMuNjcgMS41IDEuNSAxLjVhMS40OTggMS40OTggMCAwIDAgMS40My0xLjk1bDMuMzgtNS42M0EzLjAwMyAzLjAwMyAwIDAgMSA5LjUgN2MwLTEuNjUgMS4zNS0zIDMtM3ptNC41IDljLS42NCAwLTEuMjMuMi0xLjcyLjU0bC0zLjA1LTUuMDdDMTEuNTMgOC4zNSAxMSA3Ljc0IDExIDdjMC0uODMuNjctMS41IDEuNS0xLjVTMTQgNi4xNyAxNCA3YzAgLjE1LS4wMi4yOS0uMDYuNDNsMi4xOSAzLjY1Yy4yOC0uMDUuNTctLjA4Ljg3LS4wOCAyLjc2IDAgNSAyLjI0IDUgNXMtMi4yNCA1LTUgNWE1IDUgMCAwIDEtNC4zMy0yLjVoMi42N2MuNDguMzIgMS4wNS41IDEuNjYuNSAxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZHRoRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDE4VjZoMXYxMkg0em0zIDBWNmgxMHYxMkg3em0xMyAwaC0xVjZoMXYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZHRoTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgMThWNmg0djEySDR6bTYgMFY2aDR2MTJoLTR6bTEwIDBoLTRWNmg0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lkdGhXaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgMThWNmgydjEySDR6bTQgMFY2aDh2MTJIOHptMTIgMGgtMlY2aDJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpUHJvdGVjdGVkU2V0dXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43MSA1LjI5IDE5IDNoLTh2OGwyLjMtMi4zYzEuOTcgMS40NiAzLjI1IDMuNzggMy4yNSA2LjQyIDAgMS4zMS0uMzIgMi41NC0uODggMy42MyAyLjMzLTEuNTIgMy44OC00LjE0IDMuODgtNy4xMyAwLTIuNTItMS4xMS00Ljc3LTIuODQtNi4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40NiA4Ljg4YzAtMS4zMS4zMi0yLjU0Ljg4LTMuNjNhOC40NzkgOC40NzkgMCAwIDAtMy44OCA3LjEzYzAgMi41MiAxLjEgNC43NyAyLjg0IDYuMzNMNSAyMWg4di04bC0yLjMgMi4zYy0xLjk2LTEuNDYtMy4yNC0zLjc4LTMuMjQtNi40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvcmtIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOVY4aDE2djMuMjljLjcyLjIyIDEuNC41NCAyIC45N1Y4YzAtMS4xMS0uODktMi0yLTJoLTRWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDcuNjhjLS4zLS42Mi0uNS0xLjI5LS42LTJINHptNi0xNWg0djJoLTRWNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0xLjY1IDcuMzVMMTcuNSAxOC4yVjE1aDF2Mi43OWwxLjg1IDEuODUtLjcuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXb3JrT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0aDR2MmgtMy42bDIgMkgyMHY3LjZsMiAyVjhjMC0xLjExLS44OS0yLTItMmgtNFY0YzAtMS4xMS0uODktMi0yLTJoLTRjLS45OSAwLTEuOC43LTEuOTYgMS42NEwxMCA1LjZWNHpNMy40IDEuODQgMS45OSAzLjI1IDQuNzQgNkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTUuNzRsMiAyIDEuNDEtMS40MUwzLjQgMS44NHpNNCAxOVY4aDIuNzRsMTEgMTFINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvcmtPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA2VjRoLTR2Mmg0ek00IDh2MTFoMTZWOEg0em0xNi0yYzEuMTEgMCAyIC44OSAyIDJ2MTFjMCAxLjExLS44OSAyLTIgMkg0Yy0xLjExIDAtMi0uODktMi0ybC4wMS0xMWMwLTEuMTEuODgtMiAxLjk5LTJoNFY0YzAtMS4xMS44OS0yIDItMmg0YzEuMTEgMCAyIC44OSAyIDJ2Mmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtNFY0YzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS02IDBoLTRWNGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXeXNpd3lnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTZINVY3aDE0djEyem0tMi03SDd2LTJoMTB2MnptLTQgNEg3di0yaDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVlvdXR1YmVTZWFyY2hlZEZvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMDEgMTRoLS44bC0uMjctLjI3YTYuNDUxIDYuNDUxIDAgMCAwIDEuNTctNC4yM2MwLTMuNTktMi45MS02LjUtNi41LTYuNXMtNi41IDMtNi41IDYuNUgybDMuODQgNCA0LjE2LTRINi41MWE0LjUgNC41IDAgMCAxIDkgMCA0LjUwNyA0LjUwNyAwIDAgMS02LjMyIDQuMTJMNy43MSAxNS4xYTYuNDc0IDYuNDc0IDAgMCAwIDcuNTItLjY3bC4yNy4yN3YuNzlsNS4wMSA0Ljk5TDIyIDE5bC00Ljk5LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVab29tSW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0em0uNS03SDl2Mkg3djFoMnYyaDF2LTJoMlY5aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lWm9vbU91dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6TTcgOWg1djFIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wMSAyMS4wMWMwIDEuMS44OSAxLjk5IDEuOTkgMS45OXMxLjk5LS44OSAxLjk5LTEuOTloLTMuOTh6TTEyIDZjMi43NiAwIDUgMi4yNCA1IDV2N0g3di03YzAtMi43NiAyLjI0LTUgNS01em0wLTQuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjV2MS4xN0M3LjM2IDQuODUgNSA3LjY1IDUgMTF2NmwtMiAydjFoMTh2LTFsLTItMnYtNmMwLTMuMzUtMi4zNi02LjE1LTUuNS02LjgzVjNjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xMyA4aC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvRGVsZXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMmgtMy41bC0xLTFoLTVsLTEgMUgxdjJoMTR6TTE2IDljLS43IDAtMS4zNy4xLTIgLjI5VjVIMnYxMmMwIDEuMS45IDIgMiAyaDUuNjhBNi45OTkgNi45OTkgMCAwIDAgMjMgMTZjMC0zLjg3LTMuMTMtNy03LTd6bS03IDdjMCAuMzQuMDMuNjcuMDggMUg0VjdoOHYzLjI2Yy0xLjgxIDEuMjctMyAzLjM2LTMgNS43NHptNyA1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMkgxNXY1bDMuNiAyLjEuOC0xLjItMi45LTEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVycm9yT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0ydi0yem0wLThoMnY2aC0yVjd6bS45OS01QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFcnJvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGlmaWNhdGlvbkltcG9ydGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDEgMjEuMDFjMCAxLjEuODkgMS45OSAxLjk5IDEuOTlzMS45OS0uODkgMS45OS0xLjk5aC0zLjk4ek0xMiA2YzIuNzYgMCA1IDIuMjQgNSA1djdIN3YtN2MwLTIuNzYgMi4yNC01IDUtNXptMC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41djEuMTdDNy4zNiA0Ljg1IDUgNy42NSA1IDExdjZsLTIgMnYxaDE4di0xbC0yLTJ2LTZjMC0zLjM1LTIuMzYtNi4xNS01LjUtNi44M1YzYzAtLjgzLS42Ny0xLjUtMS41LTEuNXpNMTEgOGgydjRoLTJ6bTAgNmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXJuaW5nQW1iZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuOTkgMTkuNTMgMTlINC40N0wxMiA1Ljk5TTEyIDIgMSAyMWgyMkwxMiAyem0xIDE0aC0ydjJoMnYtMnptMC02aC0ydjRoMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdhcm5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTEwSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDZ2MTBINXYtOC41aDFWMTVoMS41VjlINVY1aDE0djR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTEuMjVWOUgxNHY2aDEuNXYtMi4yNUwxNy4yNSAxNUgxOWwtMi4yNS0zTDE5IDloLTEuNzV6TTkuNSAxNUgxMmMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDkuNWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTQuNWgxLjV2M0gxMHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTFrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE1SDlWOUg2djEuNWgxLjV6TTEyIDEyLjc1IDEzLjc1IDE1aDEuNzVsLTIuMjUtMyAyLjI1LTNoLTEuNzVMMTIgMTEuMjVWOWgtMS41djZIMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDE1SDEwVjlIN3YxLjVoMS41ek0xMy41IDEyLjc1IDE1LjI1IDE1SDE3bC0yLjI1LTNMMTcgOWgtMS43NWwtMS43NSAyLjI1VjlIMTJ2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUya1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzLjVINy41di0xSDljLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMUg2djEuNWgyLjV2MUg3Yy0uNTUgMC0xIC40NS0xIDFWMTVoNHYtMS41ek0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUySyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTMuNUg4di0xaDJjLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMUg2LjV2MS41aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxVjE1SDExdi0xLjV6TTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTNrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTR2LTRjMC0uNTUtLjQ1LTEtMS0xSDUuNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1SDljLjU1IDAgMS0uNDUgMS0xek0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTR2LTRjMC0uNTUtLjQ1LTEtMS0xSDYuNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1SDEwYy41NSAwIDEtLjQ1IDEtMXpNMTQuNSAxMi43NSAxNi4yNSAxNUgxOGwtMi4yNS0zTDE4IDloLTEuNzVsLTEuNzUgMi4yNVY5SDEzdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNGtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTVIMTB2LTEuNWgxVjEyaC0xVjlIOC41djNIN1Y5SDUuNXY0LjVoM3pNMTMgMTIuNzUgMTQuNzUgMTVoMS43NWwtMi4yNS0zIDIuMjUtM2gtMS43NUwxMyAxMS4yNVY5aC0xLjV2NkgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTRLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWNWgxNHYxNHptLTkuNS00SDExdi0xLjQ5aDFWMTJoLTFWOUg5LjV2M0g4VjlINi41djQuNWgzem04LjcgMC0yLTMgMi0zaC0xLjdsLTIgMyAyIDN6bS0zLjctM1Y5SDEzdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNUcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEzSDE5djJoLTVWOWg3YzAtMS4xLS45LTItMi0yaC01Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNC41djJ6TTMgMTNoNXYySDN2Mmg1YzEuMSAwIDItLjkgMi0ydi0yYzAtMS4xLS45LTItMi0ySDVWOWg1VjdIM3Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNWtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNHYtMS41YzAtLjU1LS40NS0xLTEtMUg3LjV2LTFIMTBWOUg2djMuNWgyLjV2MUg2VjE1aDNjLjU1IDAgMS0uNDUgMS0xek0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU1SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTR2LTEuNWMwLS41NS0uNDUtMS0xLTFIOHYtMWgzVjlINi41djMuNWgzdjFoLTNWMTVIMTBjLjU1IDAgMS0uNDUgMS0xek0xNC41IDEyLjc1IDE2LjI1IDE1SDE4bC0yLjI1LTNMMTggOWgtMS43NWwtMS43NSAyLjI1VjlIMTN2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU2a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTIuNzUgMTQuMjUgMTVIMTZsLTIuMjUtM0wxNiA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxMXY2aDEuNXpNNyAxNWgyYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUg3LjV2LTFIMTBWOUg3Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtMi41aDFWMTRoLTF2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTZLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEyLjc1IDE2LjI1IDE1SDE4bC0yLjI1LTNMMTggOWgtMS43NWwtMS43NSAyLjI1VjlIMTN2NmgxLjV6TTcuNSAxNUgxMGMuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFIOHYtMWgzVjlINy41Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtMi41aDEuNVYxNEg4di0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU3a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNzUgMTVIOC41bDEuNDYtNC43MUMxMC4xNSA5LjY1IDkuNjcgOSA5IDlINS41djEuNWgyLjYzTDYuNzUgMTV6TTEyLjUgMTIuNzUgMTQuMjUgMTVIMTZsLTIuMjUtM0wxNiA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxMXY2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTdLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc1IDE1SDkuNWwxLjQ2LTQuNzFDMTEuMTUgOS42NSAxMC42NyA5IDEwIDlINi41djEuNWgyLjYzTDcuNzUgMTV6TTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZThrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTVoMmMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS01aDF2MS41aC0xVjEwem0wIDIuNWgxVjE0aC0xdi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAxMi43NSAxNC4yNSAxNUgxNmwtMi4yNS0zTDE2IDloLTEuNzVsLTEuNzUgMi4yNVY5SDExdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lOEsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTVIMTBjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMUg3LjVjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS01aDEuNXYxLjVIOFYxMHptMCAyLjVoMS41VjE0SDh2LTEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEyLjc1IDE2LjI1IDE1SDE4bC0yLjI1LTNMMTggOWgtMS43NWwtMS43NSAyLjI1VjlIMTN2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU5a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNHYtNGMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjEuNWMwIC41NS40NSAxIDEgMWgxLjV2MUg2VjE1aDNjLjU1IDAgMS0uNDUgMS0xem0tMS41LTIuNWgtMVYxMGgxdjEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU5SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0di00YzAtLjU1LS40NS0xLTEtMUg3LjVjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFoMnYxaC0zVjE1SDEwYy41NSAwIDEtLjQ1IDEtMXptLTEuNS0yLjVIOFYxMGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFRvUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2LTNoM3YtMmgtM1Y3aC0ydjNIOHYyaDN6TTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcnBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMjJoMTJsLTYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDR2LTJIM1Y1aDE4djEyaC00djJoNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxidW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTEyLjVjLTIuNDkgMC00LjUgMi4wMS00LjUgNC41czIuMDEgNC41IDQuNSA0LjUgNC41LTIuMDEgNC41LTQuNS0yLjAxLTQuNS00LjUtNC41em0wIDUuNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJ0VHJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEzaC04di0yaDh2MnptMC02aC04djJoOFY3em0tOCAxMGg4di0yaC04djJ6bS0yLTh2NmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNmMxLjEgMCAyIC45IDIgMnptLTEuNSA2LTIuMjUtMy0xLjc1IDIuMjYtMS4yNS0xLjUxTDMuNSAxNWg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXVkaW9GaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiAyMFY0aDd2NWg1djExSDZ6bTEwLTloLTR2My44OGEyLjI0NyAyLjI0NyAwIDAgMC0zLjUgMS44N2MwIDEuMjQgMS4wMSAyLjI1IDIuMjUgMi4yNVMxMyAxNy45OSAxMyAxNi43NVYxM2gzdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXZUaW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTdjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bTAtMTR2NGgyVjUuMDhjMy4zOS40OSA2IDMuMzkgNiA2LjkyIDAgMy44Ny0zLjEzIDctNyA3cy03LTMuMTMtNy03YzAtMS42OC41OS0zLjIyIDEuNTgtNC40MkwxMiAxM2wxLjQxLTEuNDEtNi44LTYuOHYuMDJDNC40MiA2LjQ1IDMgOS4wNSAzIDEyYzAgNC45NyA0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4aC0xem03IDljMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXpNNiAxMmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyYW5kaW5nV2F0ZXJtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkgzVjVoMTh2MTR6bS0xMC03aDl2NmgtOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxUb0FjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDE4djE0ek01IDE1aDE0djNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3NlZENhcHRpb25EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwYzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjFoLTEuNXYtLjVoLTJ2MUwxMyAxMHptMy41IDMuNSAxLjIxIDEuMjFjLjE4LS4xOS4yOS0uNDQuMjktLjcxdi0xaC0xLjV2LjV6TTguODMgNkgxOXYxMC4xN2wxLjk4IDEuOThjMC0uMDUuMDItLjEuMDItLjE2VjZjMC0xLjEtLjktMi0yLTJINi44M2wyIDJ6bTEwLjk1IDE2LjYxTDE3LjE3IDIwSDVhMiAyIDAgMCAxLTItMlY2YzAtLjA1LjAyLS4xLjAyLS4xNUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTcuNSAxMy41aDJWMTNoLjY3bC0yLjUtMi41SDcuNXYzem03LjY3IDQuNUwxMSAxMy44M1YxNGMwIC41NS0uNDUgMS0xIDFIN2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjMyLjE2LS41OS40LS43OEw1IDcuODNWMThoMTAuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG9zZWRDYXB0aW9uT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDVWNmgxNHYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNWgzYy41NSAwIDEtLjQ1IDEtMXYtMUg5LjV2LjVoLTJ2LTNoMnYuNUgxMXYtMWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6TTE0IDE1aDNjLjU1IDAgMS0uNDUgMS0xdi0xaC0xLjV2LjVoLTJ2LTNoMnYuNUgxOHYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvc2VkQ2FwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDVWNmgxNHYxMnpNNyAxNWgzYy41NSAwIDEtLjQ1IDEtMXYtMUg5LjV2LjVoLTJ2LTNoMnYuNUgxMXYtMWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bTcgMGgzYy41NSAwIDEtLjQ1IDEtMXYtMWgtMS41di41aC0ydi0zaDJ2LjVIMTh2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRyb2xDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNTQgOC40NiAyIDEybDMuNTQgMy41NCAxLjc2LTEuNzdMNS41NCAxMmwxLjc2LTEuNzd6bTYuNDYgMTAtMS43Ny0xLjc2LTEuNzcgMS43NkwxMiAyMmwzLjU0LTMuNTQtMS43Ny0xLjc2em02LjQ2LTEwLTEuNzYgMS43N0wxOC40NiAxMmwtMS43NiAxLjc3IDEuNzYgMS43N0wyMiAxMnptLTEwLTIuOTIgMS43NyAxLjc2TDEyIDUuNTRsMS43NyAxLjc2IDEuNzctMS43NkwxMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVxdWFsaXplciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBoNFY0aC00djE2em0tNiAwaDR2LThINHY4ek0xNiA5djExaDRWOWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4cGxpY2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS00LTRoLTR2LTJoNHYtMmgtNFY5aDRWN0g5djEwaDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOS44NiAxOC4wMyAxMiAxNSAxNC4xNFY5Ljg2bS05IDBMOS4wMyAxMiA2IDE0LjE0VjkuODZNMTMgNnYxMmw4LjUtNkwxMyA2ek00IDZ2MTJsOC41LTZMNCA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFzdFJld2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOS44NnY0LjI4TDE0Ljk3IDEyIDE4IDkuODZtLTkgMHY0LjI4TDUuOTcgMTIgOSA5Ljg2TTIwIDZsLTguNSA2IDguNSA2VjZ6bS05IDAtOC41IDYgOC41IDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZlYXR1cmVkUGxheUxpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxOHYxNHpNNSAxMGg5djJINXptMC0zaDl2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmVhdHVyZWRWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDE4djE0ek00IDZoOXY3SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWJlckR2ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuODcgMTIuNDMtMS0zLjQzaC0xLjVsMS43NSA2aDEuNWwxLjc1LTZoLTEuNXpNMjEgMTEuNXYtMWMwLS44NS0uNjUtMS41LTEuNS0xLjVIMTZ2NmgxLjV2LTJoMS4xNWwuODUgMkgyMWwtLjktMi4xYy41LS4yNS45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxek02LjUgOUgzdjZoMy41Yy44NSAwIDEuNS0uNjUgMS41LTEuNXYtM0M4IDkuNjUgNy4zNSA5IDYuNSA5em0wIDQuNWgtMnYtM2gydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWJlck1hbnVhbFJlY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02IDIuNjktNiA2LTZtMC0yYy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpYmVyTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjI1IDEyLjUgNC43NSA5SDMuNXY2aDEuMjV2LTMuNUw3LjMgMTVoMS4yVjlINy4yNXpNOS41IDE1aDR2LTEuMjVIMTF2LTEuMTFoMi41di0xLjI2SDExdi0xLjEyaDIuNVY5aC00em05Ljc1LTZ2NC41aC0xLjEyVjkuOTloLTEuMjV2My41MmgtMS4xM1Y5SDE0LjV2NWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMVY5aC0xLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmliZXJQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDEuNVY5SDExdjZ6bTcuNzUtNnYzLjVMMTYuMjUgOUgxNXY2aDEuMjV2LTMuNUwxOC44IDE1SDIwVjloLTEuMjV6TTcuNSA5SDR2NmgxLjV2LTJoMmMuODUgMCAxLjUtLjY1IDEuNS0xLjV2LTFDOSA5LjY1IDguMzUgOSA3LjUgOXptMCAyLjVoLTJ2LTFoMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmliZXJTbWFydFJlY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6bTgtMTMuNzR2Mi4wOWE1Ljk5IDUuOTkgMCAwIDEgMCAxMS4zdjIuMDljMy40NS0uODkgNi00LjAxIDYtNy43NCAwLTMuNzMtMi41NS02Ljg1LTYtNy43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcndhcmQxMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC45IDE2di00LjI3aC0uMDlsLTEuNzcuNjN2LjY5bDEuMDEtLjMxVjE2ek0xNC4zMiAxMS43OGMtLjE4LS4wNy0uMzctLjEtLjU5LS4xcy0uNDEuMDMtLjU5LjEtLjMzLjE4LS40NS4zMy0uMjMuMzQtLjI5LjU3LS4xLjUtLjEuODJ2Ljc0YzAgLjMyLjA0LjYuMTEuODJzLjE3LjQyLjMuNTcuMjguMjYuNDYuMzMuMzcuMS41OS4xLjQxLS4wMy41OS0uMS4zMy0uMTguNDUtLjMzLjIyLS4zNC4yOS0uNTcuMS0uNS4xLS44MnYtLjc0YzAtLjMyLS4wNC0uNi0uMTEtLjgycy0uMTctLjQyLS4zLS41Ny0uMjktLjI2LS40Ni0uMzN6bS4wMSAyLjU3YzAgLjE5LS4wMS4zNS0uMDQuNDhzLS4wNi4yNC0uMTEuMzItLjExLjE0LS4xOS4xNy0uMTYuMDUtLjI1LjA1LS4xOC0uMDItLjI1LS4wNS0uMTQtLjA5LS4xOS0uMTctLjA5LS4xOS0uMTItLjMyLS4wNC0uMjktLjA0LS40OHYtLjk3YzAtLjE5LjAxLS4zNS4wNC0uNDhzLjA2LS4yMy4xMi0uMzEuMTEtLjE0LjE5LS4xNy4xNi0uMDUuMjUtLjA1LjE4LjAyLjI1LjA1LjE0LjA5LjE5LjE3LjA5LjE4LjEyLjMxLjA0LjI5LjA0LjQ4di45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcndhcmQzMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yem0tNy40NiAyLjIyYy0uMDYuMDUtLjEyLjA5LS4yLjEycy0uMTcuMDQtLjI3LjA0YS42OS42OSAwIDAgMS0uNDUtLjE1Yy0uMDYtLjA1LS4xLS4xLS4xMy0uMTdzLS4wNS0uMTQtLjA1LS4yMmgtLjg1YzAgLjIxLjA0LjM5LjEyLjU1cy4xOS4yOC4zMy4zOC4yOS4xOC40Ni4yMy4zNS4wNy41My4wN2MuMjEgMCAuNDEtLjAzLjYtLjA4cy4zNC0uMTQuNDgtLjI0LjI0LS4yNC4zMi0uMzkuMTItLjMzLjEyLS41M2MwLS4yMy0uMDYtLjQ0LS4xOC0uNjFzLS4zLS4zLS41NC0uMzljLjEtLjA1LjItLjEuMjgtLjE3cy4xNS0uMTQuMi0uMjIuMS0uMTYuMTMtLjI1LjA0LS4xOC4wNC0uMjdjMC0uMi0uMDQtLjM3LS4xMS0uNTNzLS4xNy0uMjgtLjMtLjM4LS4yOC0uMTgtLjQ2LS4yMy0uMzctLjA4LS41OS0uMDhjLS4xOSAwLS4zOC4wMy0uNTQuMDhzLS4zMi4xMy0uNDQuMjMtLjIzLjIyLS4zLjM3LS4xMS4zLS4xMS40OGguODVhLjQ1NS40NTUgMCAwIDEgLjE3LS4zNWMuMDUtLjA0LjExLS4wNy4xOC0uMXMuMTQtLjAzLjIyLS4wM2MuMSAwIC4xOC4wMS4yNS4wNHMuMTMuMDYuMTguMTEuMDguMTEuMTEuMTcuMDQuMTQuMDQuMjJjMCAuMTgtLjA1LjMyLS4xNi40M3MtLjI2LjE2LS40OC4xNmgtLjQzdi42NmguNDVjLjExIDAgLjIuMDEuMjkuMDRzLjE2LjA2LjIyLjExLjExLjEyLjE0LjIuMDUuMTguMDUuMjljMCAuMDktLjAxLjE3LS4wNC4yNHMtLjA4LjExLS4xMy4xN3ptMy45LTMuNDRjLS4xOC0uMDctLjM3LS4xLS41OS0uMXMtLjQxLjAzLS41OS4xLS4zMy4xOC0uNDUuMzMtLjIzLjM0LS4yOS41Ny0uMS41LS4xLjgydi43NGMwIC4zMi4wNC42LjExLjgycy4xNy40Mi4zLjU3LjI4LjI2LjQ2LjMzLjM3LjEuNTkuMS40MS0uMDMuNTktLjEuMzMtLjE4LjQ1LS4zMy4yMi0uMzQuMjktLjU3LjEtLjUuMS0uODJ2LS43NGMwLS4zMi0uMDQtLjYtLjExLS44MnMtLjE3LS40Mi0uMy0uNTctLjI4LS4yNi0uNDYtLjMzem0uMDEgMi41N2MwIC4xOS0uMDEuMzUtLjA0LjQ4cy0uMDYuMjQtLjExLjMyLS4xMS4xNC0uMTkuMTctLjE2LjA1LS4yNS4wNS0uMTgtLjAyLS4yNS0uMDUtLjE0LS4wOS0uMTktLjE3LS4wOS0uMTktLjEyLS4zMi0uMDQtLjI5LS4wNC0uNDh2LS45N2MwLS4xOS4wMS0uMzUuMDQtLjQ4cy4wNi0uMjMuMTItLjMxLjExLS4xNC4xOS0uMTcuMTYtLjA1LjI1LS4wNS4xOC4wMi4yNS4wNS4xNC4wOS4xOS4xNy4wOS4xOC4xMi4zMS4wNC4yOS4wNC40OHYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3J3YXJkNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTUgMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yem0tNS41MiAyLjE1Yy0uMDUuMDctLjExLjEzLS4xOC4xN3MtLjE3LjA2LS4yNy4wNmMtLjE3IDAtLjMxLS4wNS0uNDItLjE1cy0uMTctLjI0LS4xOS0uNDFoLS44NGMuMDEuMi4wNS4zNy4xMy41M3MuMTkuMjguMzIuMzkuMjkuMTkuNDYuMjQuMzUuMDguNTMuMDhjLjI0IDAgLjQ2LS4wNC42NC0uMTJzLjMzLS4xOC40NS0uMzEuMjEtLjI4LjI3LS40NS4wOS0uMzUuMDktLjU0YzAtLjIyLS4wMy0uNDMtLjA5LS42cy0uMTQtLjMzLS4yNS0uNDUtLjI1LS4yMi0uNDEtLjI4LS4zNC0uMS0uNTUtLjFjLS4wNyAwLS4xNC4wMS0uMi4wMnMtLjEzLjAyLS4xOC4wNC0uMS4wMy0uMTUuMDUtLjA4LjA0LS4xMS4wNWwuMTEtLjkyaDEuN3YtLjcxSDEwLjlsLS4yNSAyLjE3LjY3LjE3Yy4wMy0uMDMuMDYtLjA2LjEtLjA5cy4wNy0uMDUuMTItLjA3LjEtLjA0LjE1LS4wNS4xMy0uMDIuMi0uMDJjLjEyIDAgLjIyLjAyLjMuMDVzLjE2LjA5LjIxLjE1LjEuMTQuMTMuMjQuMDQuMTkuMDQuMzEtLjAxLjIyLS4wMy4zMS0uMDYuMTctLjExLjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2FtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDR2Mi42N2wtMSAxLTEtMVY0aDJtNyA3djJoLTIuNjdsLTEtMSAxLTFIMjBNNi42NyAxMWwxIDEtMSAxSDR2LTJoMi42N00xMiAxNi4zM2wxIDFWMjBoLTJ2LTIuNjdsMS0xTTE1IDJIOXY1LjVsMyAzIDMtM1Yyem03IDdoLTUuNWwtMyAzIDMgM0gyMlY5ek03LjUgOUgydjZoNS41bDMtMy0zLTN6bTQuNSA0LjUtMyAzVjIyaDZ2LTUuNWwtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTcuNSAxM2gydjJIMTFWOUg5LjV2Mi41aC0yVjlINnY2aDEuNXpNMTggMTR2LTRjMC0uNTUtLjQ1LTEtMS0xaC00djZoNGMuNTUgMCAxLS40NSAxLTF6bS0xLjUtLjVoLTJ2LTNoMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhcmluZ0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wMyAzLjJDNy4xNSAyLjQ0IDguNTEgMiAxMCAyYzMuOTMgMCA3IDMuMDcgNyA3IDAgMS4yNi0uMzggMi42NS0xLjA3IDMuOS0uMDIuMDQtLjA1LjA4LS4wOC4xM2wtMS40OC0xLjQ4Yy40LS44Ni42My0xLjc1LjYzLTIuNTUgMC0yLjgtMi4yLTUtNS01LS45MiAwLTEuNzYuMjYtMi41LjY3TDYuMDMgMy4yem0xMS4xOCAxMS4xOCAxLjQzIDEuNDNDMjAuMTEgMTMuOTMgMjEgMTEuNTcgMjEgOWMwLTMuMDQtMS4yMy01Ljc5LTMuMjItNy43OGwtMS40MiAxLjQyQTguOTM3IDguOTM3IDAgMCAxIDE5IDljMCAyLjAyLS42NyAzLjg4LTEuNzkgNS4zOHpNMTAgNi41Yy0uMjEgMC0uNC4wMy0uNTkuMDhsMy4wMSAzLjAxYy4wNS0uMTkuMDgtLjM4LjA4LS41OUEyLjUgMi41IDAgMCAwIDEwIDYuNXptMTEuMTkgMTQuNjlMMi44MSAyLjgxIDEuMzkgNC4yMmwyLjEzIDIuMTNDMy4xOSA3LjE2IDMgOC4wNSAzIDloMmMwLS4zNi4wNS0uNzEuMTItMS4wNWw2LjYxIDYuNjFjLS44OC42OC0xLjc4IDEuNDEtMi4yNyAyLjktLjUgMS41LTEgMi4wMS0xLjcxIDIuMzgtLjE5LjEtLjQ2LjE2LS43NS4xNi0xLjEgMC0yLS45LTItMkgzYTMuOTk5IDMuOTk5IDAgMCAwIDUuNjQgMy42NWMxLjM2LS43MSAyLjEzLTEuNzMgMi43My0zLjU1LjMyLS45OC45LTEuNDMgMS43MS0yLjA1LjAzLS4wMi4wNS0uMDQuMDgtLjA2bDYuNjIgNi42MiAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMGMtLjI5IDAtLjU2LS4wNi0uNzYtLjE1LS43MS0uMzctMS4yMS0uODgtMS43MS0yLjM4LS41MS0xLjU2LTEuNDctMi4yOS0yLjM5LTMtLjc5LS42MS0xLjYxLTEuMjQtMi4zMi0yLjUzQzkuMjkgMTAuOTggOSA5LjkzIDkgOWMwLTIuOCAyLjItNSA1LTVzNSAyLjIgNSA1aDJjMC0zLjkzLTMuMDctNy03LTdTNyA1LjA3IDcgOWMwIDEuMjYuMzggMi42NSAxLjA3IDMuOS45MSAxLjY1IDEuOTggMi40OCAyLjg1IDMuMTUuODEuNjIgMS4zOSAxLjA3IDEuNzEgMi4wNS42IDEuODIgMS4zNyAyLjg0IDIuNzMgMy41NUEzLjk5OSAzLjk5OSAwIDAgMCAyMSAxOGgtMmMwIDEuMS0uOSAyLTIgMnpNNy42NCAyLjY0IDYuMjIgMS4yMkM0LjIzIDMuMjEgMyA1Ljk2IDMgOXMxLjIzIDUuNzkgMy4yMiA3Ljc4bDEuNDEtMS40MUM2LjAxIDEzLjc0IDUgMTEuNDkgNSA5czEuMDEtNC43NCAyLjY0LTYuMzZ6TTExLjUgOWEyLjUgMi41IDAgMCAwIDUgMCAyLjUgMi41IDAgMCAwLTUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZ2hRdWFsaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINVY2aDE0djEyek03LjUgMTNoMnYySDExVjlIOS41djIuNWgtMlY5SDZ2NmgxLjV6bTYuNSAyaC43NXYxLjVoMS41VjE1SDE3Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS00LjVoMnYzaC0ydi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW50ZXJwcmV0ZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAxNi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjV2LTIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxNWMwIC44My0uNjcgMS41LTEuNSAxLjV6TTIwIDIwaDF2LTEuNTRjMS42OS0uMjQgMy0xLjcgMy0zLjQ2aC0xYTIuNSAyLjUgMCAwIDEtNSAwaC0xYzAgMS43NiAxLjMxIDMuMjIgMyAzLjQ2VjIwek05IDEyYy0yLjIxIDAtNC0xLjc5LTQtNGEzLjk5OSAzLjk5OSAwIDAgMSA1LjM0LTMuNzdBNS45MzggNS45MzggMCAwIDAgOSA4YzAgMS40My41IDIuNzQgMS4zNCAzLjc3LS40Mi4xNS0uODcuMjMtMS4zNC4yM3ptLTEuODkgMS4xM0E0Ljk2NSA0Ljk2NSAwIDAgMCA1IDE3LjIyVjIwSDF2LTIuNzhjMC0xLjEyLjYxLTIuMTUgMS42MS0yLjY2IDEuMjQtLjY0IDIuNzYtMS4xOSA0LjUtMS40M3pNMTEgOGMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0LTEuNzkgNC00IDQtNC0xLjc5LTQtNHptMiAwYzAgMS4xLjkgMiAyIDJzMi0uOSAyLTItLjktMi0yLTItMiAuOS0yIDJ6bTIgN2MtMi4zNyAwLTQuMjkuNzMtNS40OCAxLjM0LS4zMi4xNi0uNTIuNS0uNTIuODhWMThoNy4xN2MuNS44NiAxLjI1IDEuNTYgMi4xNSAySDd2LTIuNzhjMC0xLjEyLjYxLTIuMTUgMS42MS0yLjY2QzEwLjI5IDEzLjcgMTIuNDcgMTMgMTUgMTNjLjM5IDAgLjc3LjAyIDEuMTQuMDUtLjMzLjU5LS41NSAxLjI2LS42MiAxLjk2LS4xNy0uMDEtLjM0LS4wMS0uNTItLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlicmFyeUFkZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0djEySDhWNGgxMm0wLTJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNy41MyAxMkw5IDEwLjVsMS40LTEuNDEgMi4wNyAyLjA4TDE3LjYgNiAxOSA3LjQxIDEyLjQ3IDE0ek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpYnJhcnlBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6bS03LTJoMnYtM2gzVjloLTNWNmgtMnYzaC0zdjJoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpYnJhcnlCb29rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDhWNGgxMnYxMnpNMTAgOWg4djJoLTh6bTAgM2g0djJoLTR6bTAtNmg4djJoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaWJyYXJ5TXVzaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDhWNGgxMnYxMnptLTcuNS0xYTIuNSAyLjUgMCAwIDAgMi41LTIuNVY3aDNWNWgtNHY1LjUxYy0uNDItLjMyLS45My0uNTEtMS41LS41MWEyLjUgMi41IDAgMCAwIDAgNXpNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0VjFMOCA1bDQgNFY2YzMuMzEgMCA2IDIuNjkgNiA2IDAgMS4wMS0uMjUgMS45Ny0uNyAyLjhsMS40NiAxLjQ2QTcuOTMgNy45MyAwIDAgMCAyMCAxMmMwLTQuNDItMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTYgMC0xLjAxLjI1LTEuOTcuNy0yLjhMNS4yNCA3Ljc0QTcuOTMgNy45MyAwIDAgMCA0IDEyYzAgNC40MiAzLjU4IDggOCA4djNsNC00LTQtNHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTHlyaWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2aDd2Mkg2ek02IDEyaDR2Mkg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMS45N1YxNkg2bC0yIDJWNGgxMXYyLjAzYy41Mi0uNjkgMS4yLTEuMjUgMi0xLjZWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDljMS4xIDAgMi0uOSAyLTJ2LTIuNDJhNS4xNiA1LjE2IDAgMCAxLTItMS42MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA5aDd2Mkg2ek0yMCA2LjE4Yy0uMzEtLjExLS42NS0uMTgtMS0uMTgtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zVjNoMlYxaC00djUuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaWNOb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGMxLjY2IDAgMy0xLjM0IDMtM1Y1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2NmMwIDEuNjYgMS4zNCAzIDMgM3ptLTEtOWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NmMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVY1em02IDZjMCAyLjc2LTIuMjQgNS01IDVzLTUtMi4yNC01LTVINWMwIDMuNTMgMi42MSA2LjQzIDYgNi45MlYyMWgydi0zLjA4YzMuMzktLjQ5IDYtMy4zOSA2LTYuOTJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjggNC45YzAtLjY2LjU0LTEuMiAxLjItMS4yczEuMi41NCAxLjIgMS4ybC0uMDEgMy45MUwxNSAxMC42VjVjMC0xLjY2LTEuMzQtMy0zLTMtMS41NCAwLTIuNzkgMS4xNi0yLjk2IDIuNjVsMS43NiAxLjc2VjQuOXpNMTkgMTFoLTEuN2MwIC41OC0uMSAxLjEzLS4yNyAxLjY0bDEuMjcgMS4yN2MuNDQtLjg4LjctMS44Ny43LTIuOTF6TTQuNDEgMi44NiAzIDQuMjdsNiA2VjExYzAgMS42NiAxLjM0IDMgMyAzIC4yMyAwIC40NC0uMDMuNjUtLjA4bDEuNjYgMS42NmMtLjcxLjMzLTEuNS41Mi0yLjMxLjUyLTIuNzYgMC01LjMtMi4xLTUuMy01LjFINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMWgydi0zLjI4YTcuMTMgNy4xMyAwIDAgMCAyLjU1LS45bDQuMiA0LjIgMS40MS0xLjQxTDQuNDEgMi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRjMS42NiAwIDMtMS4zNCAzLTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djZjMCAxLjY2IDEuMzQgMyAzIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExYzAgMi43Ni0yLjI0IDUtNSA1cy01LTIuMjQtNS01SDVjMCAzLjUzIDIuNjEgNi40MyA2IDYuOTJWMjFoMnYtMy4wOGMzLjM5LS40OSA2LTMuMzkgNi02LjkyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWlzc2VkVmlkZW9DYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMC41VjdjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTF2LTMuNWw0IDR2LTExbC00IDR6bS0yLTEuODNWMTZINVY4aDEwdi42N3ptLTcuODkgMi40NEwxMSAxNWwzLjc3LTMuNzktLjc4LS43OUwxMSAxMy40M2wtMy4xMS0zLjFoMi41NVY5LjIySDZ2NC40NGgxLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW92aWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNi40NyA1Ljc2IDEwSDIwdjhINFY2LjQ3TTIyIDRoLTRsMiA0aC0zbC0yLTRoLTJsMiA0aC0zbC0yLTRIOGwyIDRIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU11c2ljVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxOHYxNHpNOCAxNWMwLTEuNjYgMS4zNC0zIDMtMyAuMzUgMCAuNjkuMDcgMSAuMThWNmg1djJoLTN2Ny4wM0EzLjAwMyAzLjAwMyAwIDAgMSAxMSAxOGMtMS42NiAwLTMtMS4zNC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXdSZWxlYXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgMTItMi40NC0yLjc4LjM0LTMuNjgtMy42MS0uODItMS44OS0zLjE4TDEyIDMgOC42IDEuNTQgNi43MSA0LjcybC0zLjYxLjgxLjM0IDMuNjhMMSAxMmwyLjQ0IDIuNzgtLjM0IDMuNjkgMy42MS44MiAxLjg5IDMuMThMMTIgMjFsMy40IDEuNDYgMS44OS0zLjE4IDMuNjEtLjgyLS4zNC0zLjY4TDIzIDEyem0tNC41MSAyLjExLjI2IDIuNzktMi43NC42Mi0xLjQzIDIuNDFMMTIgMTguODJsLTIuNTggMS4xMS0xLjQzLTIuNDEtMi43NC0uNjIuMjYtMi44TDMuNjYgMTJsMS44NS0yLjEyLS4yNi0yLjc4IDIuNzQtLjYxIDEuNDMtMi40MUwxMiA1LjE4bDIuNTgtMS4xMSAxLjQzIDIuNDEgMi43NC42Mi0uMjYgMi43OUwyMC4zNCAxMmwtMS44NSAyLjExek0xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RJbnRlcmVzdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTIuMDFjMCAxLjEuOSAxLjk5IDIgMS45OWgxNmMxLjEgMCAyLS45IDItMnYtOGwtNi02ek00IDE4LjAxVjZoMTF2NWg1djcuMDFINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhdXNlQ2lyY2xlRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNEg5VjhoMnY4em00IDBoLTJWOGgydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXVzZUNpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTZoMlY4SDl2OHptMy0xNEM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTEtNGgyVjhoLTJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhdXNlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmgyVjhIOXY4em0zLTE0QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMS00aDJWOGgtMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTloNFY1SDZ2MTR6bTgtMTR2MTRoNFY1aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheUFycm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA4LjY0IDE1LjI3IDEyIDEwIDE1LjM2VjguNjRNOCA1djE0bDExLTdMOCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheUNpcmNsZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTQuNXYtOWw2IDQuNS02IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMCAxNi41IDYtNC41LTYtNC41ek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLTIuNS0zLjUgNy00LjUtNy00LjV2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ1IDEzLjYyIDE5IDEyIDggNXYuMTd6TTIuODEgMi44MSAxLjM5IDQuMjIgOCAxMC44M1YxOWw0Ljk5LTMuMTggNi43OCA2Ljc4IDEuNDEtMS40MUwyLjgxIDIuODF6TTEwIDE1LjM2di0yLjUzbDEuNTUgMS41NS0xLjU1Ljk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheWxpc3RBZGRDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04em0wLTJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTIgOEg3djJoN3YtMnptMC0zSDd2Mmg3Vjd6bS03IDhoM3YtMkg3djJ6bTEyLTEuNTlMMTcuNTkgMTJsLTMuNTQgMy41NC0xLjQxLTEuNDEtMS40MSAxLjQxIDIuODMgMi44M0wxOSAxMy40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlsaXN0QWRkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEwaDExdjJIM3pNMyA2aDExdjJIM3pNMyAxNGg3djJIM3pNMjAuNTkgMTEuOTNsLTQuMjUgNC4yNC0yLjEyLTIuMTItMS40MSAxLjQxTDE2LjM0IDE5IDIyIDEzLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheWxpc3RBZGRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMi0xMEg3djJoN3YtMnptMC0zSDd2Mmg3Vjd6bS03IDhoM3YtMkg3djJ6bTEyLTJ2MmgtMnYyaC0ydi0yaC0ydi0yaDJ2LTJoMnYyaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5bGlzdEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDN2MmgxMXYtMnptMC00SDN2MmgxMVY2em00IDh2LTRoLTJ2NGgtNHYyaDR2NGgydi00aDR2LTJoLTR6TTMgMTZoN3YtMkgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5bGlzdFBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEwaDExdjJIM3pNMyA2aDExdjJIM3pNMyAxNGg3djJIM3pNMTYgMTN2OGw2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5bGlzdFJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDN2MmgxMXYtMnptMC00SDN2MmgxMVY2ek0zIDE2aDd2LTJIM3Yyem0xMS40MSA2TDE3IDE5LjQxIDE5LjU5IDIyIDIxIDIwLjU5IDE4LjQxIDE4IDIxIDE1LjQxIDE5LjU5IDE0IDE3IDE2LjU5IDE0LjQxIDE0IDEzIDE1LjQxIDE1LjU5IDE4IDEzIDIwLjU5IDE0LjQxIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVldWVNdXNpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDZoLTV2OC4xOGMtLjMxLS4xMS0uNjUtLjE4LTEtLjE4LTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtM1Y4aDNWNnptLTcgMEgzdjJoMTJWNnptMCA0SDN2MmgxMnYtMnptLTQgNEgzdjJoOHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVF1ZXVlUGxheU5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDJ2LTJIM1Y1aDE4djhoMlY1YTIgMiAwIDAgMC0yLTJ6bS04IDdWN2gtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zem0xMSA4LTQuNSA0LjVMMTggMjFsMy0zLTMtMyAxLjUtMS41TDI0IDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6bS03LTFoMnYtNGg0VjloLTRWNWgtMnY0SDl2Mmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFkaW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZIOC4zbDguMjYtMy4zNEwxNS44OCAxIDMuMjQgNi4xNUMyLjUxIDYuNDMgMiA3LjE3IDIgOHYxMmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0wIDJ2M2gtMlY5aC0ydjJINFY4aDE2ek00IDIwdi03aDE2djdINHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMTYuNDhcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVjZW50QWN0b3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1aDJ2MTRoLTJ6bS00IDBoMnYxNGgtMnptLTMgMEgyYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgzVjdoMTB2MTB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOFwiLFwiY3lcIjpcIjkuOTRcIixcInJcIjpcIjEuOTVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuODkgMTUuMzVjMC0xLjMtMi41OS0xLjk1LTMuODktMS45NXMtMy44OS42NS0zLjg5IDEuOTVWMTZoNy43OHYtLjY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVtb3ZlRnJvbVF1ZXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg1djJoOHYtMmg1YzEuMSAwIDItLjkgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxNEgzVjVoMTh2MTJ6bS01LTd2Mkg4di0yaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBlYXRPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIM2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0tMiAxOEg2LjgzbDEuNTggMS41OEw3IDIybC00LTQgNC00IDEuNDEgMS40Mkw2LjgzIDE3SDE3di00aDJ2NnptLTItOS0xLjQxLTEuNDJMMTcuMTcgN0g3djRINVY1aDEyLjE3bC0xLjU4LTEuNThMMTcgMmw0IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwZWF0T25lT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptLTIgMThINi44M2wxLjU4IDEuNThMNyAyMmwtNC00IDQtNCAxLjQxIDEuNDJMNi44MyAxN0gxN3YtNGgydjZ6bS05LTguNVY5aDN2NmgtMS41di00LjVIMTB6bTctLjUtMS40MS0xLjQyTDE3LjE3IDdIN3Y0SDVWNWgxMi4xN2wtMS41OC0xLjU4TDE3IDJsNCA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGVhdE9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHptLTQtMlY5aC0xbC0yIDF2MWgxLjV2NEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGxheTEwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSA1VjFsLTUgNSA1IDVWN2MzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02aC0yYzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHptLTEuMSAxMWgtLjg1di0zLjI2bC0xLjAxLjMxdi0uNjlsMS43Ny0uNjNoLjA5VjE2em00LjI4LTEuNzZjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzIuMDQtLjI5LjA0LS40OHYtLjk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwbGF5MzAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMUw3IDZsNSA1VjdjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNkg0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHptLTIuNDQgOC40OWguNDVjLjIxIDAgLjM3LS4wNS40OC0uMTZzLjE2LS4yNS4xNi0uNDNhLjUzOC41MzggMCAwIDAtLjE1LS4zOWMtLjA1LS4wNS0uMTEtLjA5LS4xOC0uMTFzLS4xNi0uMDQtLjI1LS4wNGMtLjA4IDAtLjE1LjAxLS4yMi4wM3MtLjEzLjA1LS4xOC4xLS4wOS4wOS0uMTIuMTUtLjA1LjEzLS4wNS4yaC0uODVhMS4wNiAxLjA2IDAgMCAxIC40MS0uODVjLjEzLS4xLjI3LS4xOC40NC0uMjNzLjM1LS4wOC41NC0uMDhjLjIxIDAgLjQxLjAzLjU5LjA4cy4zMy4xMy40Ni4yMy4yMy4yMy4zLjM4LjExLjMzLjExLjUzYS44NDIuODQyIDAgMCAxLS4xNy41MiAxLjEgMS4xIDAgMCAxLS40OC4zOWMuMjQuMDkuNDIuMjEuNTQuMzlzLjE4LjM4LjE4LjYxYzAgLjItLjA0LjM4LS4xMi41M3MtLjE4LjI5LS4zMi4zOS0uMjkuMTktLjQ4LjI0LS4zOC4wOC0uNi4wOGMtLjE4IDAtLjM2LS4wMi0uNTMtLjA3cy0uMzMtLjEyLS40Ni0uMjMtLjI1LS4yMy0uMzMtLjM4LS4xMi0uMzQtLjEyLS41NWguODVjMCAuMDguMDIuMTUuMDUuMjJzLjA3LjEyLjEzLjE3LjEyLjA5LjIuMTEuMTYuMDQuMjUuMDRjLjEgMCAuMTktLjAxLjI3LS4wNHMuMTUtLjA3LjItLjEyLjEtLjExLjEzLS4xOC4wNC0uMTUuMDQtLjI0YzAtLjExLS4wMi0uMjEtLjA1LS4yOXMtLjA4LS4xNS0uMTQtLjItLjEzLS4wOS0uMjItLjExLS4xOC0uMDQtLjI5LS4wNGgtLjQ3di0uNjV6bTUuNzQuNzVjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzJjLjAzLS4xMy4wNC0uMjkuMDQtLjQ4di0uOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBsYXk1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6bS0xLjMxIDguOS4yNS0yLjE3aDIuMzl2LjcxaC0xLjdsLS4xMS45MmMuMDMtLjAyLjA3LS4wMy4xMS0uMDVzLjA5LS4wNC4xNS0uMDUuMTItLjAzLjE4LS4wNC4xMy0uMDIuMi0uMDJjLjIxIDAgLjM5LjAzLjU1LjFzLjMuMTYuNDEuMjguMi4yNy4yNS40NS4wOS4zOC4wOS42YzAgLjE5LS4wMy4zNy0uMDkuNTRzLS4xNS4zMi0uMjcuNDUtLjI3LjI0LS40NS4zMS0uMzkuMTItLjY0LjEyYy0uMTggMC0uMzYtLjAzLS41My0uMDhzLS4zMi0uMTQtLjQ2LS4yNC0uMjQtLjI0LS4zMi0uMzktLjEzLS4zMy0uMTMtLjUzaC44NGMuMDIuMTguMDguMzIuMTkuNDFzLjI1LjE1LjQyLjE1YS40OS40OSAwIDAgMCAuNDUtLjIzYy4wNC0uMDcuMDgtLjE1LjExLS4yNXMuMDMtLjIuMDMtLjMxLS4wMS0uMjEtLjA0LS4zMS0uMDctLjE3LS4xMy0uMjQtLjEzLS4xMi0uMjEtLjE1LS4xOS0uMDUtLjMtLjA1Yy0uMDggMC0uMTUuMDEtLjIuMDJzLS4xMS4wMy0uMTUuMDUtLjA4LjA1LS4xMi4wNy0uMDcuMDYtLjEuMDlsLS42Ny0uMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBsYXlDaXJjbGVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE2LjVjLTMuMzEgMC02LTIuNjktNi02aDJjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGMwLTIuMjQtMS44NS00LjA5LTQuMTYtMy45OWwxLjU3IDEuNTdMMTIgMTEuNWwtNC00IDQtNCAxLjQxIDEuNDEtMS42IDEuNkMxNS4yOCA2LjQgMTggOS4xOCAxOCAxMi41YzAgMy4zMS0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTVoM2MuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFINy41di0xaDJ2LjVIMTF2LTFjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFoMi41djFoLTJWMTNINnYxYzAgLjU1LjQ1IDEgMSAxek0xOCAxNHYtNGMwLS41NS0uNDUtMS0xLTFoLTR2Nmg0Yy41NSAwIDEtLjQ1IDEtMXptLTEuNS0uNWgtMnYtM2gydjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaHVmZmxlT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNS40MSA0bDUuMTggNS4xNy0xLjQxIDEuNDJMNCA1LjQyIDUuNDEgNHpNMjAgMjBoLTZ2LTJoMi42MWwtMy4yLTMuMiAxLjQyLTEuNDIgMy4xMyAzLjEzLjA0LjA0VjE0aDJ2NnptMC0xMGgtMlY3LjQyTDUuNDEgMjAgNCAxOC41OSAxNi41OCA2SDE0VjRoNnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2h1ZmZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNTkgOS4xNyA1LjQxIDQgNCA1LjQxbDUuMTcgNS4xNyAxLjQyLTEuNDF6TTE0LjUgNGwyLjA0IDIuMDRMNCAxOC41OSA1LjQxIDIwIDE3Ljk2IDcuNDYgMjAgOS41VjRoLTUuNXptLjMzIDkuNDEtMS40MSAxLjQxIDMuMTMgMy4xM0wxNC41IDIwSDIwdi01LjVsLTIuMDQgMi4wNC0zLjEzLTMuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTa2lwTmV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxOCA4LjUtNkw2IDZ2MTJ6bTItOC4xNEwxMS4wMyAxMiA4IDE0LjE0VjkuODZ6TTE2IDZoMnYxMmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNraXBQcmV2aW91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2aDJ2MTJINnptMy41IDYgOC41IDZWNmwtOC41IDZ6bTYuNSAyLjE0TDEyLjk3IDEyIDE2IDkuODZ2NC4yOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNsb3dNb3Rpb25WaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMDUgOS43OSAxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJsLTIuOTUtMi4yMXptMCAwTDEwIDcuNXY5bDMuMDUtMi4yOUwxNiAxMmwtMi45NS0yLjIxem0wIDBMMTAgNy41djlsMy4wNS0yLjI5TDE2IDEybC0yLjk1LTIuMjF6TTExIDQuMDdWMi4wNWMtMi4wMS4yLTMuODQgMS01LjMyIDIuMjFMNy4xIDUuNjlBNy45NDEgNy45NDEgMCAwIDEgMTEgNC4wN3pNNS42OSA3LjEgNC4yNiA1LjY4QTkuOTQ5IDkuOTQ5IDAgMCAwIDIuMDUgMTFoMi4wMmMuMTgtMS40Ni43Ni0yLjc5IDEuNjItMy45ek00LjA3IDEzSDIuMDVjLjIgMi4wMSAxIDMuODQgMi4yMSA1LjMybDEuNDMtMS40M0E3Ljg2OCA3Ljg2OCAwIDAgMSA0LjA3IDEzem0xLjYxIDYuNzRBOS45ODEgOS45ODEgMCAwIDAgMTEgMjEuOTV2LTIuMDJhNy45NDEgNy45NDEgMCAwIDEtMy45LTEuNjJsLTEuNDIgMS40M3pNMjIgMTJjMCA1LjE2LTMuOTIgOS40Mi04Ljk1IDkuOTV2LTIuMDJDMTYuOTcgMTkuNDEgMjAgMTYuMDUgMjAgMTJzLTMuMDMtNy40MS02Ljk1LTcuOTNWMi4wNUMxOC4wOCAyLjU4IDIyIDYuODQgMjIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbm9vemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTFoMy42M0w5IDE1LjJWMTdoNnYtMmgtMy42M0wxNSAxMC44VjlIOXYyem03LjA1Ni03LjY1NCAxLjI4Mi0xLjUzNSA0LjYwNyAzLjg1LTEuMjggMS41NHpNMy4zMzYgNy4xOWwtMS4yOC0xLjUzNkw2LjY2MiAxLjgxbDEuMjggMS41MzZ6TTEyIDZjMy44NiAwIDcgMy4xNCA3IDdzLTMuMTQgNy03IDctNy0zLjE0LTctNyAzLjE0LTcgNy03bTAtMmE5IDkgMCAxIDAgLjAwMSAxOC4wMDFBOSA5IDAgMCAwIDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3J0QnlBbHBoYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuOTQgNC42NmgtNC43MmwyLjM2LTIuMzYgMi4zNiAyLjM2em0tNC42OSAxNC43MWg0LjY2bC0yLjMzIDIuMzMtMi4zMy0yLjMzek02LjEgNi4yNyAxLjYgMTcuNzNoMS44NGwuOTItMi40NWg1LjExbC45MiAyLjQ1aDEuODRMNy43NCA2LjI3SDYuMXptLTEuMTMgNy4zNyAxLjk0LTUuMTggMS45NCA1LjE4SDQuOTd6bTEwLjc2IDIuNWg2LjEydjEuNTloLTguNTN2LTEuMjlsNS45Mi04LjU2aC01Ljg4di0xLjZoOC4zdjEuMjZsLTUuOTMgOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4zOCA4LjU3LTEuMjMgMS44NWE4IDggMCAwIDEtLjIyIDcuNThINS4wN0E4IDggMCAwIDEgMTUuNTggNi44NWwxLjg1LTEuMjNBMTAgMTAgMCAwIDAgMy4zNSAxOWEyIDIgMCAwIDAgMS43MiAxaDEzLjg1YTIgMiAwIDAgMCAxLjc0LTEgMTAgMTAgMCAwIDAtLjI3LTEwLjQ0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41OSAxNS40MWEyIDIgMCAwIDAgMi44MyAwbDUuNjYtOC40OS04LjQ5IDUuNjZhMiAyIDAgMCAwIDAgMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0b3BDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptNC00SDhWOGg4djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4djhIOFY4aDhtMi0ySDZ2MTJoMTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YnNjcmlwdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxNnYySDR6bTItNGgxMnYySDZ6bTE0IDhINGMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi04YzAtMS4xLS45LTItMi0yem0wIDEwSDR2LThoMTZ2OHptLTEwLTcuMjd2Ni41M0wxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YnRpdGxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyek02IDEwaDJ2Mkg2em0wIDRoOHYySDZ6bTEwIDBoMnYyaC0yem0tNi00aDh2MmgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1cnJvdW5kU291bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4yOSAxNS43MUE1LjIzMyA1LjIzMyAwIDAgMSA2Ljc1IDEyYzAtMS4zNS41Mi0yLjY5IDEuNTMtMy43Mkw3LjA1IDcuMDVDNS42OCA4LjQxIDUgMTAuMjEgNSAxMnMuNjggMy41OSAyLjA2IDQuOTRsMS4yMy0xLjIzek0xMiAxNS41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzEzLjkzIDguNSAxMiA4LjUgOC41IDEwLjA3IDguNSAxMnMxLjU3IDMuNSAzLjUgMy41em0wLTVjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNS0xLjUtLjY3LTEuNS0xLjUuNjctMS41IDEuNS0xLjV6TTE1LjcyIDE1LjcybDEuMjMgMS4yM0MxOC4zMiAxNS41OSAxOSAxMy43OSAxOSAxMnMtLjY4LTMuNTktMi4wNi00Ljk0bC0xLjIzIDEuMjNBNS4yMzMgNS4yMzMgMCAwIDEgMTcuMjUgMTJjMCAxLjM1LS41MiAyLjY5LTEuNTMgMy43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTAuNVY3YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xMWwtNCA0ek0xNSAxNkg1VjhoMTB2OHptLTYtMWgydi0yaDJ2LTJoLTJWOUg5djJIN3YyaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb0ZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02ek02IDIwVjRoN3Y1aDV2MTFINnptOC02IDItMS4wNnY0LjEyTDE0IDE2djFjMCAuNTUtLjQ1IDEtMSAxSDljLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9MYWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTNIM1Y1aDE4djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9MaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyek0xMiA1LjV2OWw2LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDZoMTh2NWgyVjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg5di0ySDNWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTIgOSA4djh6TTIyLjcxIDE4LjQzYy4wMy0uMjkuMDQtLjU4LjAxLS44NmwxLjA3LS44NWMuMS0uMDguMTItLjIxLjA2LS4zMmwtMS4wMy0xLjc5Yy0uMDYtLjExLS4xOS0uMTUtLjMxLS4xMWwtMS4yOC41YTMuNDQgMy40NCAwIDAgMC0uNzUtLjQybC0uMi0xLjM2YS4yNDkuMjQ5IDAgMCAwLS4yNS0uMjJoLTIuMDdjLS4xMiAwLS4yMy4wOS0uMjUuMjFsLS4yIDEuMzZjLS4yNi4xMS0uNTEuMjYtLjc0LjQybC0xLjI4LS41Yy0uMTItLjA1LS4yNSAwLS4zMS4xMWwtMS4wMyAxLjc5Yy0uMDYuMTEtLjA0LjI0LjA2LjMybDEuMDcuODZjLS4wMy4yOS0uMDQuNTgtLjAxLjg2bC0xLjA3Ljg1Yy0uMS4wOC0uMTIuMjEtLjA2LjMybDEuMDMgMS43OWMuMDYuMTEuMTkuMTUuMzEuMTFsMS4yNy0uNWMuMjMuMTcuNDguMzEuNzUuNDJsLjIgMS4zNmMuMDIuMTIuMTIuMjEuMjUuMjFoMi4wN2MuMTIgMCAuMjMtLjA5LjI1LS4yMWwuMi0xLjM2Yy4yNi0uMTEuNTEtLjI2Ljc0LS40MmwxLjI4LjVjLjEyLjA1LjI1IDAgLjMxLS4xMWwxLjAzLTEuNzljLjA2LS4xMS4wNC0uMjQtLjA2LS4zMmwtMS4wNi0uODV6TTE5IDE5LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9jYW1PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkuNTYgOC0yLTItNC4xNS00LjE0TDIgMy4yNyA0LjczIDZINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy4yMSAwIC4zOS0uMDguNTUtLjE4TDE5LjczIDIxbDEuNDEtMS40MS04Ljg2LTguODZMOS41NiA4ek01IDE2VjhoMS43M2w4IDhINXptMTAtOHYyLjYxbDYgNlY2LjVsLTQgNFY3YzAtLjU1LS40NS0xLTEtMWgtNS42MWwyIDJIMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb2NhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOHY4SDVWOGgxMG0xLTJINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMXYtMy41bDQgNHYtMTFsLTQgNFY3YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbHVtZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDcuOTd2OC4wNWMxLjQ4LS43MyAyLjUtMi4yNSAyLjUtNC4wMkE0LjUgNC41IDAgMCAwIDE2IDcuOTd6TTUgOXY2aDRsNSA1VjRMOSA5SDV6bTctLjE3djYuMzRMOS44MyAxM0g3di0yaDIuODNMMTIgOC44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbHVtZU11dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDguODN2Ni4zNEwxMS44MyAxM0g5di0yaDIuODNMMTQgOC44M00xNiA0bC01IDVIN3Y2aDRsNSA1VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMzQgMi45MyAyLjkzIDQuMzQgNy4yOSA4LjcgNyA5SDN2Nmg0bDUgNXYtNi41OWw0LjE4IDQuMThjLS42NS40OS0xLjM4Ljg4LTIuMTggMS4xMXYyLjA2YTguOTQgOC45NCAwIDAgMCAzLjYxLTEuNzVsMi4wNSAyLjA1IDEuNDEtMS40MUw0LjM0IDIuOTN6TTEwIDE1LjE3IDcuODMgMTNINXYtMmgyLjgzbC44OC0uODhMMTAgMTEuNDF2My43NnpNMTkgMTJjMCAuODItLjE1IDEuNjEtLjQxIDIuMzRsMS41MyAxLjUzYy41Ni0xLjE3Ljg4LTIuNDguODgtMy44NyAwLTQuMjgtMi45OS03Ljg2LTctOC43N3YyLjA2YzIuODkuODYgNSAzLjU0IDUgNi43MXptLTctOC0xLjg4IDEuODhMMTIgNy43NnptNC41IDhBNC41IDQuNSAwIDAgMCAxNCA3Ljk3djEuNzlsMi40OCAyLjQ4Yy4wMS0uMDguMDItLjE2LjAyLS4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbHVtZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDl2Nmg0bDUgNVY0TDcgOUgzem03LS4xN3Y2LjM0TDcuODMgMTNINXYtMmgyLjgzTDEwIDguODN6TTE2LjUgMTJBNC41IDQuNSAwIDAgMCAxNCA3Ljk3djguMDVjMS40OC0uNzMgMi41LTIuMjUgMi41LTQuMDJ6TTE0IDMuMjN2Mi4wNmMyLjg5Ljg2IDUgMy41NCA1IDYuNzFzLTIuMTEgNS44NS01IDYuNzF2Mi4wNmM0LjAxLS45MSA3LTQuNDkgNy04Ljc3IDAtNC4yOC0yLjk5LTcuODYtNy04Ljc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2ViQXNzZXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgzIDRIMjBhMiAyIDAgMCAxIDIgMnYxMmMwIC4zNC0uMDkuNjYtLjIzLjk0TDIwIDE3LjE3VjhoLTkuMTdsLTQtNHptMTMuNjYgMTkuMzFMMTcuMTcgMjBINGEyIDIgMCAwIDEtMi0yVjZjMC0uMzQuMDgtLjY2LjIzLS45NEwuNjkgMy41MSAyLjEgMi4xbDE5LjggMTkuOC0xLjQxIDEuNDF6TTE1LjE3IDE4bC0xMC0xMEg0djEwaDExLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2ViQXNzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmEyIDIgMCAwIDAtMi0yem0wIDE0SDVWOGgxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdlYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDloMTAuNXYzLjVINFY5em0wIDUuNWgxMC41VjE4SDR2LTMuNXpNMjAgMThoLTMuNVY5SDIwdjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzUCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINC4wMWMtMS4xIDAtMiAuOS0yIDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg1LjE3TDQgMTcuMTdWNGgxNnYxMnptLTgtNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgOCAxMy40M1YxNGg4di0uNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRJY0NhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjQ1Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMS0uMDMtLjIxLS4wNS0uMzEtLjA1LS4yNiAwLS41MS4xLS43MS4yOWwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTEgMTEuMzYgMTEuMzYgMCAwIDEtLjU3LTMuNTdjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTUuMDMgNC45NWgxLjVjLjA3Ljg4LjIyIDEuNzUuNDUgMi41OGwtMS4yIDEuMjFjLS40LTEuMjEtLjY2LTIuNDctLjc1LTMuNzl6TTE5IDE4LjkyYy0xLjMyLS4wOS0yLjYtLjM1LTMuOC0uNzZsMS4yLTEuMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS41MXpNMTggNS45NXYtM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsdGVybmF0ZUVtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxLjk1Yy01LjUyIDAtMTAgNC40OC0xMCAxMHM0LjQ4IDEwIDEwIDEwaDV2LTJoLTVjLTQuMzQgMC04LTMuNjYtOC04czMuNjYtOCA4LTggOCAzLjY2IDggOHYxLjQzYzAgLjc5LS43MSAxLjU3LTEuNSAxLjU3cy0xLjUtLjc4LTEuNS0xLjU3di0xLjQzYzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1IDIuMjQgNSA1IDVjMS4zOCAwIDIuNjQtLjU2IDMuNTQtMS40Ny42NS44OSAxLjc3IDEuNDcgMi45NiAxLjQ3IDEuOTcgMCAzLjUtMS42IDMuNS0zLjU3di0xLjQzYzAtNS41Mi00LjQ4LTEwLTEwLTEwem0wIDEzYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwcFJlZ2lzdHJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDRoNHY0aC00ek00IDE2aDR2NEg0ek00IDEwaDR2NEg0ek00IDRoNHY0SDR6TTE2IDRoNHY0aC00ek0xMSAxNy44NlYyMGgyLjFsNS45OC01Ljk3LTIuMTItMi4xMnpNMTQgMTIuMDNWMTBoLTR2NGgyLjAzek0yMC44NSAxMS41NmwtMS40MS0xLjQxYy0uMi0uMi0uNTEtLjItLjcxIDBsLTEuMDYgMS4wNiAyLjEyIDIuMTIgMS4wNi0xLjA2Yy4yLS4yLjItLjUxIDAtLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnVzaW5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdWM0gydjE4aDIwVjdIMTJ6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTAtNEg0VjVoMnYyem00IDEySDh2LTJoMnYyem0wLTRIOHYtMmgydjJ6bTAtNEg4VjloMnYyem0wLTRIOFY1aDJ2MnptMTAgMTJoLTh2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloOHYxMHptLTItOGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxsRW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41OSAxMC41MmMxLjA1LjUxIDIuMDQgMS4xNSAyLjk2IDEuOTFsLTEuMDcgMS4wN2MtLjU4LS40Ny0xLjIxLS44OS0xLjg4LTEuMjd2LTEuNzFtLTEzLjIgMHYxLjdjLS42NS4zNy0xLjI4Ljc5LTEuODcgMS4yN2wtMS4wNy0xLjA3Yy45MS0uNzUgMS45LTEuMzggMi45NC0xLjlNMTIgN0M3LjQ2IDcgMy4zNCA4Ljc4LjI5IDExLjY3Yy0uMTguMTgtLjI5LjQzLS4yOS43MXMuMTEuNTMuMjkuN2wyLjQ4IDIuNDhjLjE4LjE4LjQzLjI5LjcxLjI5LjI3IDAgLjUyLS4xLjctLjI4Ljc5LS43MyAxLjY4LTEuMzYgMi42Ni0xLjg1LjMzLS4xNi41Ni0uNTEuNTYtLjl2LTMuMUM4Ljg1IDkuMjUgMTAuNCA5IDEyIDlzMy4xNS4yNSA0LjU5LjczdjMuMWMwIC40LjIzLjc0LjU2LjkuOTguNDkgMS44OCAxLjExIDIuNjcgMS44NS4xOC4xNy40My4yOC43LjI4LjI4IDAgLjUzLS4xMS43MS0uMjlsMi40OC0yLjQ4Yy4xOC0uMTguMjktLjQzLjI5LS43MXMtLjExLS41My0uMjktLjcxQTE2Ljk3MSAxNi45NzEgMCAwIDAgMTIgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxNYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDV2Mmg2LjU5TDQgMTguNTkgNS40MSAyMCAxNyA4LjQxVjE1aDJWNUg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbE1lcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMC40MSAxOC40MSAxOSAxNSAxNS41OSAxMy41OSAxNyAxNyAyMC40MXpNNy41IDhIMTF2NS41OUw1LjU5IDE5IDcgMjAuNDFsNi02VjhoMy41TDEyIDMuNSA3LjUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxNaXNzZWRPdXRnb2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMgOC40MSA5IDkgNy03VjE1aDJWN2gtOHYyaDQuNTlMMTIgMTQuNTkgNC40MSA3IDMgOC40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxNaXNzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjU5IDcgMTIgMTQuNTkgNi40MSA5SDExVjdIM3Y4aDJ2LTQuNTlsNyA3IDktOUwxOS41OSA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbFJlY2VpdmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1LjQxIDE4LjU5IDQgNyAxNS41OVY5SDV2MTBoMTB2LTJIOC40MUwyMCA1LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbFNwbGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA0IDIuMjkgMi4yOS0yLjg4IDIuODggMS40MiAxLjQyIDIuODgtMi44OEwyMCAxMFY0aC02em0tNCAwSDR2NmwyLjI5LTIuMjkgNC43MSA0LjdWMjBoMnYtOC40MWwtNS4yOS01LjNMMTAgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODkuMjEgMS43Ni40NSAyLjU5bC0xLjIgMS4yYy0uNDEtMS4yLS42Ny0yLjQ3LS43Ni0zLjc5aDEuNTFtOS44NiAxMi4wMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OWMtMS4zMi0uMDktMi41OS0uMzUtMy44LS43NWwxLjItMS4xOU03LjUgM0g0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMS0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW5jZWxQcmVzZW50YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxOHYxNHpNOS40MSAxNS45NSAxMiAxMy4zNmwyLjU5IDIuNTlMMTYgMTQuNTRsLTIuNTktMi41OUwxNiA5LjM2bC0xLjQxLTEuNDFMMTIgMTAuNTQgOS40MSA3Ljk1IDggOS4zNmwyLjU5IDIuNTlMOCAxNC41NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNlbGxUb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcuMyAxNC43IDEuMi0xLjJjLTEtMS0xLjUtMi4zLTEuNS0zLjUgMC0xLjMuNS0yLjYgMS41LTMuNUw3LjMgNS4zYy0xLjMgMS4zLTIgMy0yIDQuN3MuNyAzLjQgMiA0Ljd6TTE5LjEgMi45bC0xLjIgMS4yYzEuNiAxLjYgMi40IDMuOCAyLjQgNS45IDAgMi4xLS44IDQuMy0yLjQgNS45bDEuMiAxLjJjMi0yIDIuOS00LjUgMi45LTcuMSAwLTIuNi0xLTUuMS0yLjktNy4xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjEgNC4xIDQuOSAyLjlDMyA0LjkgMiA3LjQgMiAxMGMwIDIuNiAxIDUuMSAyLjkgNy4xbDEuMi0xLjJjLTEuNi0xLjYtMi40LTMuOC0yLjQtNS45IDAtMi4xLjgtNC4zIDIuNC01Ljl6TTE2LjcgMTQuN2MxLjMtMS4zIDItMyAyLTQuNy0uMS0xLjctLjctMy40LTItNC43bC0xLjIgMS4yYzEgMSAxLjUgMi4zIDEuNSAzLjUgMCAxLjMtLjUgMi42LTEuNSAzLjVsMS4yIDEuMnpNMTQuNSAxMGEyLjUgMi41IDAgMCAwLTUgMGMwIC43Ni4zNCAxLjQyLjg3IDEuODhMNyAyMmgybC42Ny0yaDQuNjdsLjY2IDJoMmwtMy4zNy0xMC4xMmMuNTMtLjQ2Ljg3LTEuMTIuODctMS44OHptLTQuMTcgOEwxMiAxM2wxLjY3IDVoLTMuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDZWxsV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMjJoMTZWNS45N0w2IDIyem0xNC0yaC0ydi03LjIybDItMlYyMHpNNS4yMiA3LjIyIDMuOTMgNS45M2MzLjktMy45MSAxMC4yNC0zLjkxIDE0LjE1IDBsLTEuMjkgMS4yOWMtMy4xOS0zLjE5LTguMzgtMy4xOS0xMS41NyAwem03LjcxIDMuODVMMTEgMTNsLTEuOTMtMS45M2EyLjc0IDIuNzQgMCAwIDEgMy44NiAwem0xLjI5LTEuMjhjLTEuNzgtMS43Ny00LjY2LTEuNzctNi40MyAwTDYuNSA4LjVhNi4zNzQgNi4zNzQgMCAwIDEgOSAwbC0xLjI4IDEuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGF0QnViYmxlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYXRCdWJibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoMTZ2MTJINS4xN0w0IDE3LjE3VjRtMC0yYy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJINHptMiAxMGg4djJINnYtMnptMC0zaDEydjJINlY5em0wLTNoMTJ2Mkg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbGVhckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxM2gxNHYtMkg1djJ6bS0yIDRoMTR2LTJIM3Yyek03IDd2MmgxNFY3SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb1ByZXNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjhoMlY1aDE4djE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwYzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0IDEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTYgMGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yek0xNS4zOSAxNi41NkMxMy43MSAxNS43IDExLjUzIDE1IDkgMTVzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTkuMjJWMjJoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTUgMjBIM2MwLS43Mi0uMS0xLjM0LjUyLTEuNjZDNC43MSAxNy43MyA2LjYzIDE3IDkgMTdjMi4zNyAwIDQuMjkuNzMgNS40OCAxLjM0LjYzLjMyLjUyLjk1LjUyIDEuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OSA0YzAtMS4xLS44OS0yLTEuOTktMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNC0uMDEtMTh6TTIwIDR2MTMuMTdMMTguODMgMTZINFY0aDE2ek02IDEyaDEydjJINnptMC0zaDEydjJINnptMC0zaDEydjJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbW1lbnRzRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC44MyAxNkgyMFY0SDYuODNsLTItMkgyMGMxLjEgMCAyIC45IDIgMnYxNS4xN0wxOC44MyAxNnpNMTggNkg4LjgzbDIgMkgxOFY2em0wIDNoLTYuMTdsMiAySDE4Vjl6bTAgNXYtMmgtMy4xN2wyIDJIMTh6bTMuOSA3LjktMS40MSAxLjQxTDE1LjE3IDE4SDRjLTEuMSAwLTItLjktMi0yVjQuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5Ljh6TTEzLjE3IDE2bC0yLTJINnYtMmgzLjE3bC0xLTFINlY5aC4xN0w0IDYuODNWMTZoOS4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRhY3RFbWVyZ2VuY3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE0YzEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zLTMgMS4zNS0zIDMgMS4zNSAzIDMgM3ptMC00Yy41NCAwIDEgLjQ2IDEgMXMtLjQ2IDEtMSAxLTEtLjQ2LTEtMSAuNDYtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIMkMuOSAzIDAgMy45IDAgNXYxNGMwIDEuMS45IDIgMiAyaDIwYzEuMSAwIDEuOTktLjkgMS45OS0yTDI0IDVjMC0xLjEtLjktMi0yLTJ6TTQuNTQgMTljMS4xLTEuMjIgMi42OS0yIDQuNDYtMnMzLjM2Ljc4IDQuNDYgMkg0LjU0ek0yMiAxOWgtNi4wOGMtMS4zOC0yLjM5LTMuOTYtNC02LjkyLTRzLTUuNTQgMS42MS02LjkyIDRIMlY1aDIwdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS43OCAxMS4xNSAxLjQ3LS44NVYxMmgxLjV2LTEuN2wxLjQ3Ljg1Ljc1LTEuM0wxOS41IDlsMS40Ny0uODUtLjc1LTEuMy0xLjQ3Ljg1VjZoLTEuNXYxLjdsLTEuNDctLjg1LS43NSAxLjNMMTYuNSA5bC0xLjQ3Ljg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGFjdE1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDJDLjkgMyAwIDMuOSAwIDV2MTRjMCAxLjEuOSAyIDIgMmgyMGMxLjEgMCAxLjk5LS45IDEuOTktMkwyNCA1YzAtMS4xLS45LTItMi0yem0wIDE2SDJWNWgyMHYxNHpNMjEgNmgtN3Y1aDdWNnptLTEgMi0yLjUgMS43NUwxNSA4VjdsMi41IDEuNzVMMjAgN3Yxek05IDEyYzEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zLTMgMS4zNS0zIDMgMS4zNSAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTYgOC41OWMwLTIuNS0zLjk3LTMuNTgtNi0zLjU4cy02IDEuMDgtNiAzLjU4VjE4aDEydi0xLjQxek01LjQ4IDE2Yy43NC0uNSAyLjIyLTEgMy41Mi0xczIuNzcuNDkgMy41MiAxSDUuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250YWN0UGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIMkMuOSAzIDAgMy45IDAgNXYxNGMwIDEuMS45IDIgMiAyaDIwYzEuMSAwIDEuOTktLjkgMS45OS0yTDI0IDVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIMlY1aDIwdjE0em0tMi45OS0xLjAxTDIxIDE2bC0xLjUxLTJoLTEuNjRjLS4yMi0uNjMtLjM1LTEuMy0uMzUtMnMuMTMtMS4zNy4zNS0yaDEuNjRMMjEgOGwtMS45OS0xLjk5QTcuNDc0IDcuNDc0IDAgMCAwIDE2LjI4IDEwYy0uMTguNjQtLjI4IDEuMzEtLjI4IDJzLjEgMS4zNi4yOCAyYTcuNTEyIDcuNTEyIDAgMCAwIDIuNzMgMy45OXpNOSAxMmMxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem02IDguNTljMC0yLjUtMy45Ny0zLjU4LTYtMy41OHMtNiAxLjA4LTYgMy41OFYxOGgxMnYtMS40MXpNNS40OCAxNmMuNzQtLjUgMi4yMi0xIDMuNTItMXMyLjc3LjQ5IDMuNTIgMUg1LjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGFjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpNNCAwaDE2djJINHptMCAyMmgxNnYySDR6bTgtMTBhMi41IDIuNSAwIDAgMCAwLTUgMi41IDIuNSAwIDAgMCAwIDV6bTAtMy41Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTUgNy40OUMxNyAxMy45IDEzLjY5IDEzIDEyIDEzcy01IC45LTUgMi45OVYxN2gxMHYtMS4wMXptLTguMTktLjQ5Yy42MS0uNTIgMi4wMy0xIDMuMTktMSAxLjE3IDAgMi41OS40OCAzLjIgMUg4LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVza3RvcEFjY2Vzc0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjQxIDEuNjkgMCAzLjFsMSAuOTlWMTZjMCAxLjEuODkgMiAxLjk5IDJIMTB2Mkg4djJoOHYtMmgtMnYtMmguOWw2IDYgMS40MS0xLjQxLTIwLjktMjAuOXpNMi45OSAxNlY2LjA5TDEyLjkgMTZIMi45OXpNNC41NSAybDIgMkgyMXYxMmgtMi40NWwyIDJoLjQ0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJINC41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpYWxlclNpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgM2gxdjVoLTF6bS0xIDJoLTJWNGgyVjNoLTN2M2gydjFoLTJ2MWgzem0zLTJ2NWgxVjZoMlYzaC0zem0yIDJoLTFWNGgxdjF6bTAgMTAuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhLjk4NC45ODQgMCAwIDAtMS4wMS4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWMuMjctLjI2LjM1LS42NS4yNC0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek01LjAzIDVoMS41Yy4wNy44OC4yMiAxLjc1LjQ2IDIuNTlMNS43OSA4LjhjLS40MS0xLjIxLS42Ny0yLjQ4LS43Ni0zLjh6TTE5IDE4Ljk3Yy0xLjMyLS4wOS0yLjU5LS4zNS0zLjgtLjc1bDEuMi0xLjJjLjg1LjI0IDEuNzEuMzkgMi41OS40NXYxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaWFscGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTYgMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyLThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tNiA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiAwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMC02Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTYgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb2N1bWVudFNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDNINHYzSDJWMWg1djJ6bTE1IDNWMWgtNXYyaDN2M2gyek03IDIxSDR2LTNIMnY1aDV2LTJ6bTEzLTN2M2gtM3YyaDV2LTVoLTJ6TTE3IDZIN3YxMmgxMFY2em0yIDEyYzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMnYxMnpNMTUgOEg5djJoNlY4em0wIDNIOXYyaDZ2LTJ6bTAgM0g5djJoNnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbWFpbkRpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjQxIDEuNjkgMCAzLjFsMiAyVjIxaDE1LjlsMyAzIDEuNDEtMS40MS0yMC45LTIwLjl6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptLTItNFY5aDJ2Mkg0em02IDhIOHYtMmgydjJ6bS0yLTR2LTJoMnYySDh6bTQgNHYtMmgxLjlsMiAySDEyek04IDVoMnYyaC0uNDVMMTIgOS40NVY5aDh2OC40NWwyIDJWN0gxMlYzSDUuNTVMOCA1LjQ1em04IDZoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9tYWluVmVyaWZpY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuNiAxMC44OC0xLjQyLTEuNDItNC4yNCA0LjI1LTIuMTItMi4xM0w3LjQgMTNsMy41NCAzLjU0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptMCAxNEg1VjhoMTR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEdW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJoLThDNi4zOCAyIDIgNi42NiAyIDEyLjI4IDIgMTcuNSA2LjQ5IDIyIDExLjcyIDIyIDE3LjM5IDIyIDIyIDE3LjYyIDIyIDEyVjRjMC0xLjEtLjktMi0yLTJ6bS0zIDEzLTMtMnYySDdWOWg3djJsMy0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZ6bS0yIDAtOCA1LTgtNWgxNnptMCAxMkg0VjhsOCA1IDgtNXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0djdINS4xN0w0IDEyLjE3VjRoMTFtMS0ySDNjLS41NSAwLTEgLjQ1LTEgMXYxNGw0LTRoMTBjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem01IDRoLTJ2OUg2djJjMCAuNTUuNDUgMSAxIDFoMTFsNCA0VjdjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9yd2FyZFRvSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOXYtMkg0VjhsOCA1IDgtNXY1aDJWNmMwLTEuMS0uOS0yLTItMnptLTggN0w0IDZoMTZsLTggNXptNyA0IDQgNC00IDR2LTNoLTR2LTJoNHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXJnbGFzc0JvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDIyLS4wMS02TDE0IDEybDMuOTktNC4wMUwxOCAySDZ2Nmw0IDQtNCAzLjk5VjIyaDEyek04IDcuNVY0aDh2My41bC00IDQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91cmdsYXNzVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAyIC4wMSA2TDEwIDEybC0zLjk5IDQuMDFMNiAyMmgxMnYtNmwtNC00IDQtMy45OVYySDZ6bTEwIDE0LjVWMjBIOHYtMy41bDQtNCA0IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2LjVhMi45OTYgMi45OTYgMCAwIDAtMi45OSAzLjIxbC0yLjAzLjY4YTQuNDY4IDQuNDY4IDAgMCAwLTMuMjItMi4zMlY1LjkxQTMuMDE4IDMuMDE4IDAgMCAwIDE1IDNjMC0xLjY2LTEuMzQtMy0zLTNTOSAxLjM0IDkgM2MwIDEuNC45NiAyLjU3IDIuMjUgMi45MXYyLjE2Yy0xLjQuMjMtMi41OCAxLjExLTMuMjIgMi4zMmwtMi4wNC0uNjhDNiA5LjY0IDYgOS41NyA2IDkuNWMwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzYzEuMDYgMCAxLjk4LS41NSAyLjUyLTEuMzdsMi4wMy42OGMtLjIgMS4yOS4xNyAyLjY2IDEuMDkgMy42OWwtMS40MSAxLjc3QzYuODUgMTcuMDkgNi40NCAxNyA2IDE3Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTNjMC0uNjgtLjIyLTEuMy0uNi0xLjhsMS40MS0xLjc3YzEuMzYuNzYgMy4wMi43NSA0LjM3IDBsMS40MSAxLjc3Yy0uMzcuNS0uNTkgMS4xMi0uNTkgMS44IDAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtM2MtLjQ0IDAtLjg1LjA5LTEuMjMuMjZsLTEuNDEtMS43N2E0LjQ5IDQuNDkgMCAwIDAgMS4wOS0zLjY5bDIuMDMtLjY4Yy41My44MiAxLjQ2IDEuMzcgMi41MiAxLjM3IDEuNjYgMCAzLTEuMzQgMy0zUzIyLjY2IDYuNSAyMSA2LjV6bS0xOCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTYgMjFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNS0xOGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDEtLjQ1IDEtMSAxLTEtLjQ1LTEtMXptMSAxMmEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXptNiA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTMtOC41Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbXBvcnRDb250YWN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVjLTEuMTEtLjM1LTIuMzMtLjUtMy41LS41LTEuOTUgMC00LjA1LjQtNS41IDEuNS0xLjQ1LTEuMS0zLjU1LTEuNS01LjUtMS41UzIuNDUgNC45IDEgNnYxNC42NWMwIC4yNS4yNS41LjUuNS4xIDAgLjE1LS4wNS4yNS0uMDVDMy4xIDIwLjQ1IDUuMDUgMjAgNi41IDIwYzEuOTUgMCA0LjA1LjQgNS41IDEuNSAxLjM1LS44NSAzLjgtMS41IDUuNS0xLjUgMS42NSAwIDMuMzUuMyA0Ljc1IDEuMDUuMS4wNS4xNS4wNS4yNS4wNS4yNSAwIC41LS4yNS41LS41VjZjLS42LS40NS0xLjI1LS43NS0yLTF6bTAgMTMuNWMtMS4xLS4zNS0yLjMtLjUtMy41LS41LTEuNyAwLTQuMTUuNjUtNS41IDEuNVY4YzEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjIgMCAyLjQuMTUgMy41LjV2MTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltcG9ydEV4cG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3ptNyAxNC4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUludmVydENvbG9yc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsNC4yIDQuMmE3LjczIDcuNzMgMCAwIDAtMS42IDQuN0M0IDE3LjQ4IDcuNTggMjEgMTIgMjFjMS43NSAwIDMuMzYtLjU2IDQuNjctMS41bDMuMSAzLjEgMS40Mi0xLjQxek0xMiAxOWMtMy4zMSAwLTYtMi42My02LTUuODcgMC0xLjE5LjM2LTIuMzIgMS4wMi0zLjI4TDEyIDE0LjgzVjE5ek04LjM4IDUuNTYgMTIgMmw1LjY1IDUuNTZDMTkuMSA4Ljk5IDIwIDEwLjk2IDIwIDEzLjEzYzAgMS4xOC0uMjcgMi4yOS0uNzQgMy4zTDEyIDkuMTdWNC44MUw5LjggNi45NyA4LjM4IDUuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC43IDEzLjUzLTEuNzEtMS43MWMuMDEuMDYuMDEuMTIuMDEuMTggMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yYy4wNiAwIC4xMiAwIC4xOC4wMUw1LjQ3IDguM0M0LjAyIDguOSAzIDEwLjMzIDMgMTJjMCAyLjIxIDEuNzkgNCA0IDQgMS42NyAwIDMuMS0xLjAyIDMuNy0yLjQ3em0xLjQ5IDEuNDlBNi4wMTIgNi4wMTIgMCAwIDEgNyAxOGMtMy4zMSAwLTYtMi42OS02LTYgMC0yLjIxIDEuMi00LjE1IDIuOTgtNS4xOUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxLTcuNTgtNy41OHptNC4wNy0xLjU5IDEuMjQtLjkzIDEuODEgMS4zNkwyMS4xNyAxMmwtMS0xaC02LjM0bC0yLTJIMjFsMyAzLTQuNSA0LjUtLjY5LS41MS0yLjU1LTIuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMGgtOC4zNUE1Ljk5IDUuOTkgMCAwIDAgNyA2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2YTUuOTkgNS45OSAwIDAgMCA1LjY1LTRIMTNsMiAyIDItMiAyIDIgNC00LjA0TDIxIDEwek03IDE1Yy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpc3RBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoNnYyaC02em0wIDRoNnYyaC02em0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3ek0yMC4xIDNIMy45Yy0uNSAwLS45LjQtLjkuOXYxNi4yYzAgLjQuNC45LjkuOWgxNi4yYy40IDAgLjktLjUuOS0uOVYzLjljMC0uNS0uNS0uOS0uOS0uOXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGl2ZUhlbHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNmgtNC44M2wtLjU5LjU5TDEyIDIwLjE3bC0xLjU5LTEuNTktLjU4LS41OEg1VjRoMTR2MTR6bS04LTNoMnYyaC0yem0xLThjMS4xIDAgMiAuOSAyIDIgMCAyLTMgMS43NS0zIDVoMmMwLTIuMjUgMy0yLjUgMy01IDAtMi4yMS0xLjc5LTQtNC00UzggNi43OSA4IDloMmMwLTEuMS45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYXRpb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjMi43NiAwIDUgMi4yNCA1IDUgMCAxLjA2LS4zOSAyLjMyLTEgMy42MmwxLjQ5IDEuNDlDMTguMzcgMTIuMzYgMTkgMTAuNTcgMTkgOWMwLTMuODctMy4xMy03LTctNy0xLjg0IDAtMy41LjcxLTQuNzUgMS44NmwxLjQzIDEuNDNDOS41NiA0LjUgMTAuNzIgNCAxMiA0em0wIDIuNWMtLjU5IDAtMS4xMy4yMS0xLjU2LjU2bDMuNSAzLjVjLjM1LS40My41Ni0uOTcuNTYtMS41NkEyLjUgMi41IDAgMCAwIDEyIDYuNXpNMy40MSAyLjg2IDIgNC4yN2wzLjE4IDMuMThDNS4wNyA3Ljk1IDUgOC40NyA1IDljMCA1LjI1IDcgMTMgNyAxM3MxLjY3LTEuODUgMy4zOC00LjM1TDE4LjczIDIxbDEuNDEtMS40MUwzLjQxIDIuODZ6TTEyIDE4Ljg4Yy0yLjAxLTIuNTgtNC44LTYuNzQtNC45OC05LjU5bDYuOTIgNi45MmMtLjY1Ljk4LTEuMzMgMS44OS0xLjk0IDIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6TTcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMi44OC0yLjg4IDcuMTktNSA5Ljg4QzkuOTIgMTYuMjEgNyAxMS44NSA3IDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1haWxMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNCA4IDggNSA4LTV2MmgyVjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTJ2LTJINFY4em0xNi0yLTggNS04LTVoMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE1di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0zIDB2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjFoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYWlsT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWOGw4IDUgOC01djEwem0tOC03TDQgNmgxNmwtOCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya0NoYXRSZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMThINmwtNCA0VjRjMC0xLjEuOS0yIDItMmgxNmMxLjEgMCAyIC45IDIgMnY3aC0yVjRINHYxMmg4djJ6bTExLTMuNjYtMS40MS0xLjQxLTQuMjQgNC4yNC0yLjEyLTIuMTItMS40MSAxLjQxTDE3LjM0IDIwIDIzIDE0LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya0NoYXRVbnJlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2Ljk4VjE2YzAgMS4xLS45IDItMiAySDZsLTQgNFY0YzAtMS4xLjktMiAyLTJoMTAuMWMtLjA2LjMyLS4xLjY2LS4xIDFzLjA0LjY4LjEgMUg0djEyaDE2VjcuOWMuNzQtLjE1IDEuNDItLjQ4IDItLjkyek0xNiAzYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya0VtYWlsUmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoOHYtMkg0VjhsOCA1IDgtNXY1aDJWNmMwLTEuMS0uOS0yLTItMnptLTggN0w0IDZoMTZsLTggNXptNS4zNCAxMS0zLjU0LTMuNTQgMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjRMMjMgMTYuMzQgMTcuMzQgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXJrRW1haWxVbnJlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA4Ljk4VjE4YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0ybC4wMS0xMmMwLTEuMS44OS0yIDEuOTktMmgxMC4xYy0uMDYuMzItLjEuNjYtLjEgMXMuMDQuNjguMSAxSDRsOCA1IDMuNjctMi4yOWMuNDcuNDMgMS4wMi43NiAxLjYzLjk4TDEyIDEzIDQgOHYxMGgxNlY5LjljLjc0LS4xNSAxLjQyLS40OCAyLS45MnpNMTYgNWMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hcmtVbnJlYWRDaGF0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTZINFY0aDEwLjFhNSA1IDAgMCAxIDAtMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNi45OGMtLjU4LjQ0LTEuMjYuNzctMiAuOTJWMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTlcIixcImN5XCI6XCIzXCIsXCJyXCI6XCIzXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTJoOHYySDZ6TTYgOWgxMnYySDZ6TTYgOGgxMnYtLjFBNS4wMTMgNS4wMTMgMCAwIDEgMTUuMDMgNkg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZXNzYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoMTZ2MTJINS4xN0w0IDE3LjE3VjRtMC0yYy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJINHptMiAxMGgxMnYySDZ2LTJ6bTAtM2gxMnYySDZWOXptMC0zaDEydjJINlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9iaWxlU2NyZWVuU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMS45OS44NS0xLjk5IDEuOTV2MThDNS4wMSAyMi4wNSA1LjkgMjMgNyAyM2gxMGMxLjEgMCAyLS45NSAyLTIuMDV2LTE4QzE5IDEuODUgMTguMSAxIDE3IDF6bTAgMThIN1Y1aDEwdjE0em0tNC4yLTUuNzZ2MS43NUwxNiAxMmwtMy4yLTIuOTh2MS43Yy0zLjExLjQzLTQuMzUgMi41Ni00LjggNC43IDEuMTEtMS41IDIuNTgtMi4xOCA0LjgtMi4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcmVUaW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOHY2bDQuNyAyLjkuOC0xLjItNC0yLjRWOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTIgMTJBNi45NTcgNi45NTcgMCAwIDEgMTEgMjBjLTMuOSAwLTctMy4xLTctN3MzLjEtNyA3LTdjLjcgMCAxLjM3LjEgMiAuMjlWNC4yM2MtLjY0LS4xNS0xLjMxLS4yMy0yLS4yMy01IDAtOSA0LTkgOXM0IDkgOSA5YTguOTYzIDguOTYzIDAgMCAwIDguOTQtMTBoLTIuMDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVWMmgtMnYzaC0zdjJoM3YzaDJWN2gzVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgyIDEzSDExdi0ySDYuODJDNi40IDkuODQgNS4zIDkgNCA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzYzEuMyAwIDIuNC0uODQgMi44Mi0yek00IDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzIDEyLTQtM3YyaC00LjA1Yy0uNS01LjA1LTQuNzYtOS05Ljk1LTl2MmM0LjQyIDAgOCAzLjU4IDggOHMtMy41OCA4LTggOHYyYzUuMTkgMCA5LjQ1LTMuOTUgOS45NS05SDE5djJsNC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9TaW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4yNiAyMS4yMSAzLjc5IDMuNzQgMi4zOCA1LjE1bDIuNzQgMi43NC0uMTIuMTJWMTljMCAxLjEuOSAyIDIgMmgxMGMuMzUgMCAuNjgtLjEuOTctLjI2bDEuODggMS44OCAxLjQxLTEuNDF6TTcgMTlWOS43N0wxNi4yMyAxOUg3em0zLjg0LTE0SDE3djkuMTFsMiAyVjVjMC0xLjEtLjktMi0yLTJoLTYuOTlMNy45NSA1LjA2bDEuNDEgMS40MUwxMC44NCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF1c2VQcmVzZW50YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuODUtMiAxLjk1djE0YzAgMS4xLjkgMi4wNSAyIDIuMDVoMThjMS4xIDAgMi0uOTUgMi0yLjA1di0xNEMyMyAzLjg1IDIyLjEgMyAyMSAzem0wIDE2SDNWNWgxOHYxNHpNOSA4aDJ2OEg5em00IDBoMnY4aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uQWRkRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDZjMS4xIDAgMiAuOSAyIDJhMiAyIDAgMCAxLTEuNjcgMS45N2wtMi4zMS0yLjMxQzEzLjE5IDYuNzIgMTQuMDEgNiAxNSA2bTAtMmMtMi4yMSAwLTQgMS43OS00IDQgMCAuMTguMDMuMzUuMDUuNTJsMy40MyAzLjQzYy4xNy4wMi4zNC4wNS41Mi4wNSAyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNHptMS42OSAxMC4xNkwyMi41MyAyMEgyM3YtMmMwLTIuMTQtMy41Ni0zLjUtNi4zMS0zLjg0em0tMy42OCAxLjk3TDE0Ljg4IDE4SDljLjA4LS4yNC44OC0xLjAxIDIuOTEtMS41N2wxLjEtLjNNMS40MSAxLjcxIDAgMy4xMmw0IDRWMTBIMXYyaDN2M2gydi0zaDIuODhsMi41MSAyLjUxQzkuMTkgMTUuMTEgNyAxNi4zIDcgMTh2Mmg5Ljg4bDQgNCAxLjQxLTEuNDFMMS40MSAxLjcxek02IDEwdi0uODhsLjg4Ljg4SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25TZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTQgMThjLjIyLS43MiAzLjMxLTIgNi0yIDAtLjcuMTMtMS4zNy4zNS0xLjk5QzcuNjIgMTMuOTEgMiAxNS4yNyAyIDE4djJoOS41NGMtLjUyLS41OC0uOTMtMS4yNS0xLjE5LTJINHpNMTkuNDMgMTguMDJjLjM2LS41OS41Ny0xLjI4LjU3LTIuMDIgMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDQgMS43OSA0IDQgNGMuNzQgMCAxLjQzLS4yMiAyLjAyLS41N0wyMC41OSAyMiAyMiAyMC41OWMtMS41LTEuNS0uNzktLjgtMi41Ny0yLjU3ek0xNiAxOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTQuNTQtMS40My0xLjQzYy41Ni0uNzMgMS4wNS0xLjUgMS40Ny0yLjMybC0yLjItMi4yYy0uMjgtLjI4LS4zNi0uNjctLjI1LTEuMDIuMzctMS4xMi41Ny0yLjMyLjU3LTMuNTcgMC0uNTUuNDUtMSAxLTFIMjBjLjU1IDAgMSAuNDUgMSAxIDAgMy45OC0xLjM3IDcuNjQtMy42NiAxMC41NHptLTIuODIgMi44MUExNi44ODQgMTYuODg0IDAgMCAxIDQgMjFjLS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4xLS4wNC4yMS0uMDUuMzEtLjA1LjI2IDAgLjUxLjEuNzEuMjlsMi4yIDIuMmMuODEtLjQyIDEuNTgtLjkgMi4zLTEuNDZMMS4zOSA0LjIybDEuNDItMS40MUwyMS4xOSAyMS4ybC0xLjQxIDEuNDEtNS4yNi01LjI2em0tNi45Mi0uMzNjLS44NS4yNC0xLjcyLjM5LTIuNi40NXYxLjQ5YzEuMzItLjA5IDIuNTktLjM1IDMuOC0uNzVsLTEuMi0xLjE5ek0xNy40NiA1Yy0uMDYuODktLjIxIDEuNzYtLjQ1IDIuNTlsMS4yIDEuMmMuNDEtMS4yLjY3LTIuNDcuNzYtMy43OWgtMS41MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lRW5hYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjQ2IDVjLS4wNi44OS0uMjEgMS43Ni0uNDUgMi41OWwxLjIgMS4yYy40MS0xLjIuNjctMi40Ny43Ni0zLjc5aC0xLjUxek03LjYgMTcuMDJjLS44NS4yNC0xLjcyLjM5LTIuNi40NXYxLjQ5YzEuMzItLjA5IDIuNTktLjM1IDMuOC0uNzVsLTEuMi0xLjE5ek0xNi41IDNIMjBjLjU1IDAgMSAuNDUgMSAxIDAgOS4zOS03LjYxIDE3LTE3IDE3LS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4xLS4wNC4yMS0uMDUuMzEtLjA1LjI2IDAgLjUxLjEuNzEuMjlsMi4yIDIuMmMyLjgzLTEuNDUgNS4xNS0zLjc2IDYuNTktNi41OWwtMi4yLTIuMmMtLjI4LS4yOC0uMzYtLjY3LS4yNS0xLjAyLjM3LTEuMTIuNTctMi4zMi41Ny0zLjU3IDAtLjU1LjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODkuMjEgMS43Ni40NSAyLjU5bC0xLjIgMS4yYy0uNDEtMS4yLS42Ny0yLjQ3LS43Ni0zLjc5aDEuNTFtOS44NiAxMi4wMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OWMtMS4zMi0uMDktMi41OS0uMzUtMy44LS43NWwxLjItMS4xOU03LjUgM0g0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMS0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZWxpbmtFcmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgOC4yLTEtMS00IDQtNC00LTEgMSA0IDQtNCA0IDEgMSA0LTQgNCA0IDEtMS00LTQgNC00ek0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lbGlua0xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDFIOWMtMS4xIDAtMiAuOS0yIDJ2M2gyVjRoMTB2MTZIOXYtMkg3djNjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0tOC4yIDEwVjkuNUMxMC44IDguMSA5LjQgNyA4IDdTNS4yIDguMSA1LjIgOS41VjExYy0uNiAwLTEuMi42LTEuMiAxLjJ2My41YzAgLjcuNiAxLjMgMS4yIDEuM2g1LjVjLjcgMCAxLjMtLjYgMS4zLTEuMnYtMy41YzAtLjctLjYtMS4zLTEuMi0xLjN6bS0xLjMgMGgtM1Y5LjVjMC0uOC43LTEuMyAxLjUtMS4zczEuNS41IDEuNSAxLjNWMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZWxpbmtSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4xIDcuNy0xIDFjMS44IDEuOCAxLjggNC42IDAgNi41bDEgMWMyLjUtMi4zIDIuNS02LjEgMC04LjV6TTE4IDkuOGwtMSAxYy41LjcuNSAxLjYgMCAyLjNsMSAxYzEuMi0xLjIgMS4yLTMgMC00LjN6TTE0IDFINGMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE5SDRWNGgxMHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lbGlua1NldHVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDN2M2gyVjRoMTB2MTZIOXYtMkg3djNjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAyem0yLjUgMTIuNWMuMjktLjEyLjU1LS4yOS44LS40OGwtLjAyLjAzIDEuMDEuMzljLjIzLjA5LjQ5IDAgLjYxLS4yMmwuODQtMS40NmMuMTItLjIxLjA3LS40OS0uMTItLjY0bC0uODUtLjY4LS4wMi4wM2MuMDItLjE2LjA1LS4zMi4wNS0uNDhzLS4wMy0uMzItLjA1LS40OGwuMDIuMDMuODUtLjY4Yy4xOS0uMTUuMjQtLjQzLjEyLS42NGwtLjg0LTEuNDZhLjQ5OS40OTkgMCAwIDAtLjYxLS4yMmwtMS4wMS4zOS4wMi4wM2MtLjI1LS4xNy0uNTEtLjM0LS44LS40NmwtLjE3LTEuMDhBLjQ4OC40ODggMCAwIDAgOC44NCA3SDcuMTZjLS4yNSAwLS40Ni4xOC0uNDkuNDJMNi41IDguNWMtLjI5LjEyLS41NS4yOS0uOC40OGwuMDItLjAzLTEuMDItLjM5Yy0uMjMtLjA5LS40OSAwLS42MS4yMmwtLjg0IDEuNDZjLS4xMi4yMS0uMDcuNDkuMTIuNjRsLjg1LjY4LjAyLS4wM2MtLjAyLjE1LS4wNS4zMS0uMDUuNDdzLjAzLjMyLjA1LjQ4bC0uMDItLjAzLS44NS42OGMtLjE5LjE1LS4yNC40My0uMTIuNjRsLjg0IDEuNDZjLjEyLjIxLjM4LjMxLjYxLjIybDEuMDEtLjM5LS4wMS0uMDRjLjI1LjE5LjUxLjM2LjguNDhsLjE3IDEuMDdjLjAzLjI1LjI0LjQzLjQ5LjQzaDEuNjhjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjE3LTEuMDh6TTYgMTJjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvcnRhYmxlV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy40MiAyLjM2IDIuMDEgMy43OCA0LjEgNS44N0MyLjc5IDcuNTcgMiA5LjY5IDIgMTJjMCAzLjcgMi4wMSA2LjkyIDQuOTkgOC42NWwxLTEuNzNDNS42MSAxNy41MyA0IDE0Ljk2IDQgMTJjMC0xLjc2LjU3LTMuMzggMS41My00LjY5bDEuNDMgMS40NEM2LjM2IDkuNjggNiAxMC44IDYgMTJjMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTlsMS0xLjc0Yy0xLjE5LS43LTItMS45Ny0yLTMuNDUgMC0uNjUuMTctMS4yNS40NC0xLjc5bDEuNTggMS41OEwxMCAxMmMwIDEuMS45IDIgMiAybC4yMS0uMDIgNy41MiA3LjUyIDEuNDEtMS40MUwzLjQyIDIuMzZ6bTE0LjI5IDExLjQ2Yy4xOC0uNTcuMjktMS4xOS4yOS0xLjgyIDAtMy4zMS0yLjY5LTYtNi02LS42MyAwLTEuMjUuMTEtMS44Mi4yOWwxLjcyIDEuNzJjLjAzIDAgLjA2LS4wMS4xLS4wMSAyLjIxIDAgNCAxLjc5IDQgNCAwIC4wNC0uMDEuMDctLjAxLjExbDEuNzIgMS43MXpNMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuMi0uMjkgMi4zMi0uNzcgMy4zNWwxLjQ5IDEuNDlBOS44MiA5LjgyIDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTEuNzYgMC0zLjQuNDgtNC44NCAxLjI4bDEuNDggMS40OEM5LjY2IDQuMjggMTAuOCA0IDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmVzZW50VG9BbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxNGMwIDEuMTEuODkgMiAyIDJoMThjMS4xMSAwIDItLjg5IDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bTAgMTYuMDJIM1Y0Ljk4aDE4djE0LjA0ek0xMCAxMkg4bDQtNCA0IDRoLTJ2NGgtNHYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaW50RGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjQxIDEuNiAwIDMuMDEgNSA4Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMmwyLjk1IDIuOTYgMS40MS0xLjQxTDEuNDEgMS42ek02IDE1SDR2LTRjMC0uNTUuNDUtMSAxLTFoMmwzIDNINnYyem0yIDR2LTRoNGw0IDRIOHpNOCA1aDh2M2gtNS4zNGwyIDJIMTljLjU1IDAgMSAuNDUgMSAxdjRsLTIgLjAxVjEzaC0yLjM0bDQgNEgyMnYtNmMwLTEuNjYtMS4zNC0zLTMtM2gtMVYzSDZ2LjM2bDIgMlY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTEuNTFcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVFyQ29kZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgtMnYtMmgydjJ6bS0yLTdoLTJ2NWgydi01em04LTJoLTJ2NGgydi00em0tMi0yaC0ydjJoMnYtMnpNNyAxMkg1djJoMnYtMnptLTItMkgzdjJoMnYtMnptNy01aDJWM2gtMnYyem0tNy41LS41djNoM3YtM2gtM3pNOSA5SDNWM2g2djZ6bS00LjUgNy41djNoM3YtM2gtM3pNOSAyMUgzdi02aDZ2NnptNy41LTE2LjV2M2gzdi0zaC0zek0yMSA5aC02VjNoNnY2em0tMiAxMHYtM2gtNHYyaDJ2M2g0di0yaC0yem0tMi03aC00djJoNHYtMnptLTQtMkg3djJoMnYyaDJ2LTJoMnYtMnptMS0xVjdoLTJWNWgtMnY0aDR6TTYuNzUgNS4yNWgtMS41djEuNWgxLjV2LTEuNXptMCAxMmgtMS41djEuNWgxLjV2LTEuNXptMTItMTJoLTEuNXYxLjVoMS41di0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVRckNvZGVTY2FubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDYuNXYzaC0zdi0zaDNNMTEgNUg1djZoNlY1em0tMS41IDkuNXYzaC0zdi0zaDNNMTEgMTNINXY2aDZ2LTZ6bTYuNS02LjV2M2gtM3YtM2gzTTE5IDVoLTZ2Nmg2VjV6bS02IDhoMS41djEuNUgxM1YxM3ptMS41IDEuNUgxNlYxNmgtMS41di0xLjV6TTE2IDEzaDEuNXYxLjVIMTZWMTN6bS0zIDNoMS41djEuNUgxM1YxNnptMS41IDEuNUgxNlYxOWgtMS41di0xLjV6TTE2IDE2aDEuNXYxLjVIMTZWMTZ6bTEuNS0xLjVIMTlWMTZoLTEuNXYtMS41em0wIDNIMTlWMTloLTEuNXYtMS41ek0yMiA3aC0yVjRoLTNWMmg1djV6bTAgMTV2LTVoLTJ2M2gtM3YyaDV6TTIgMjJoNXYtMkg0di0zSDJ2NXpNMiAydjVoMlY0aDNWMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXJDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMWg4VjNIM3Y4em0yLTZoNHY0SDVWNXpNMyAyMWg4di04SDN2OHptMi02aDR2NEg1di00ek0xMyAzdjhoOFYzaC04em02IDZoLTRWNWg0djR6TTE5IDE5aDJ2MmgtMnpNMTMgMTNoMnYyaC0yek0xNSAxNWgydjJoLTJ6TTEzIDE3aDJ2MmgtMnpNMTUgMTloMnYyaC0yek0xNyAxN2gydjJoLTJ6TTE3IDEzaDJ2MmgtMnpNMTkgMTVoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVhZE1vcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aDl2MmgtOXpNMTMgMTVoOXYyaC05ek0xNiAxMWg2djJoLTZ6TTEzIDEyIDggN3Y0SDJ2Mmg2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSaW5nVm9sdW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMy43MSAxNi42N0ExNi45NzEgMTYuOTcxIDAgMCAwIDEyIDEyQzcuNDYgMTIgMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43MyAxLjYgMCAzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NiAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxYS45OS45OSAwIDAgMC0uMjktLjd6bS0xOC4zMS41NmMtLjY2LjM3LTEuMjkuOC0xLjg3IDEuMjdsLTEuMDctMS4wN2MuOTEtLjc1IDEuOS0xLjM5IDIuOTUtMS45djEuN3ptMTUuMDcgMS4yNmMtLjU5LS40OC0xLjIxLS45LTEuODctMS4yN3YtMS43YzEuMDQuNTEgMi4wMyAxLjE1IDIuOTQgMS45bC0xLjA3IDEuMDd6bS42OS0xMi4yMy0xLjQxLTEuNDEtMy41NiAzLjU1IDEuNDEgMS40MXMzLjQ1LTMuNTIgMy41Ni0zLjU1ek0xMSAyaDJ2NWgtMnpNNi40IDkuODEgNy44MSA4LjQgNC4yNiA0Ljg0IDIuODQgNi4yNmMuMTEuMDMgMy41NiAzLjU1IDMuNTYgMy41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJzc0ZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNi4xOFwiLFwiY3lcIjpcIjE3LjgyXCIsXCJyXCI6XCIyLjE4XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNC40NHYyLjgzYzcuMDMgMCAxMi43MyA1LjcgMTIuNzMgMTIuNzNoMi44M2MwLTguNTktNi45Ny0xNS41Ni0xNS41Ni0xNS41NnptMCA1LjY2djIuODNjMy45IDAgNy4wNyAzLjE3IDcuMDcgNy4wN2gyLjgzYzAtNS40Ny00LjQzLTkuOS05LjktOS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUnR0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4wMyAzLTEuMTEgNy4wN2gyLjYybC43LTQuNWgyLjU4TDExLjggMTguNDNIOS40N0w5LjA2IDIxaDcuMjdsLjQtMi41N2gtMi4zNWwyLTEyLjg2aDIuNThsLS43MSA0LjVoMi42NUwyMiAzSDkuMDN6TTggNUg0bC0uMzEgMmg0TDggNXptLS42MSA0aC00bC0uMzEgMmg0bC4zMS0yem0uOTIgOGgtNkwyIDE5aDZsLjMxLTJ6bS42Mi00aC02bC0uMzEgMmg2LjAxbC4zLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5TaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNmEyIDIgMCAwIDAtMi0ySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTBhMiAyIDAgMCAwIDIgMkgwdjJoMjR2LTJoLTR6TTQgMTZWNmgxNnYxMC4wMUw0IDE2em05LTYuODdjLTMuODkuNTQtNS40NCAzLjItNiA1Ljg3IDEuMzktMS44NyAzLjIyLTIuNzIgNi0yLjcydjIuMTlsNC0zLjc0TDEzIDd2Mi4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbmRUaW1lRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNnY2LjI2bDIgMVY2YzAtMS4xLS45LTItMi0yaC00YTIuNSAyLjUgMCAwIDAtNSAwSDUuMDFjLTEuMSAwLTIgLjktMiAydjMuOEM1LjcgOS44IDYgMTEuOTYgNiAxMi41cy0uMjkgMi43LTMgMi43VjE5YzAgMS4xLjkgMiAyIDJoMy44YzAtMi4xNiAxLjM3LTIuNzggMi4yLTIuOTR2LTIuMDNjLTEuNDMuMTctMy4xNSAxLjA0LTMuODcgMi45N0g1di0yLjEzYzIuMTctLjggMy0yLjg3IDMtNC4zNyAwLTEuNDktLjgzLTMuNTYtMi45OS00LjM3VjZIMTFWNGMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXYyaDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEydjRsNCAxLTQgMXY0bDEwLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnRTYXRpc2ZpZWRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjLTEuNDggMC0yLjc1LS44MS0zLjQ1LTJINi44OGE1LjQ5NSA1LjQ5NSAwIDAgMCAxMC4yNCAwaC0xLjY3Yy0uNjkgMS4xOS0xLjk3IDItMy40NSAyem0tLjAxLTE0QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoMTZjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yem0wIDJ2MTJoMTZWNkg0em03IDNoMnY2aC0yVjl6bTMgMGg0Yy41NSAwIDEgLjQ1IDEgMXYyYzAgLjU1LS40NSAxLTEgMWgtMi41djJIMTRWOXptMy41IDEuNWgtMnYxaDJ2LTF6bS0xMSAuNzVIOWMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxSDV2LTEuNWgzLjV2LS43NUg2Yy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoNHYxLjVINi41di43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwZWFrZXJQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3LjA3IDguNDMgOC41Yy45MS0uOTEgMi4xOC0xLjQ4IDMuNTctMS40OHMyLjY2LjU3IDMuNTcgMS40OEwxNyA3LjA3QzE1LjcyIDUuNzkgMTMuOTUgNSAxMiA1cy0zLjcyLjc5LTUgMi4wN3pNMTIgMUM4Ljk4IDEgNi4yNCAyLjIzIDQuMjUgNC4yMWwxLjQxIDEuNDFDNy4yOCA0IDkuNTMgMyAxMiAzczQuNzIgMSA2LjM0IDIuNjJsMS40MS0xLjQxQTEwLjk2MyAxMC45NjMgMCAwIDAgMTIgMXptMi44NiA5LjAxTDkuMTQgMTBDOC41MSAxMCA4IDEwLjUxIDggMTEuMTR2OS43MWMwIC42My41MSAxLjE0IDEuMTQgMS4xNGg1LjcxYy42MyAwIDEuMTQtLjUxIDEuMTQtMS4xNHYtOS43MWMuMDEtLjYzLS41LTEuMTMtMS4xMy0xLjEzek0xNSAyMEg5di04aDZ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2MwLTIuMjEtMS43OS00LTQtNFM4IDQuNzkgOCA3czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTQgMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bS01IDRjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0xMC02Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXlDdXJyZW50TGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjAxIDcgMSAxN2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMS45OS45LTEuOTkgMnpNMTkgN3YxMEg1VjdoMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGF5Q3VycmVudFBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMS45OS45LTEuOTkgMnYxOGMwIDEuMS44OSAyIDEuOTkgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGF5UHJpbWFyeUxhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS4wMSA3IDEgMTdjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTEuOTkuOS0xLjk5IDJ6TTE5IDd2MTBINVY3aDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RheVByaW1hcnlQb3J0cmFpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2MThjMCAxLjEuODkgMiAxLjk5IDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RvcFNjcmVlblNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNzkgMTggMiAySDI0di0yaC0yLjIxek0xLjExIDIuOThsMS41NSAxLjU2Yy0uNDEuMzctLjY2Ljg5LS42NiAxLjQ4VjE2YzAgMS4xLjkgMiAyLjAxIDJIMHYyaDE4LjEzbDIuNzEgMi43MSAxLjQxLTEuNDFMMi41MiAxLjU3IDEuMTEgMi45OHpNNCA2LjAyaC4xM2w0Ljk1IDQuOTNDNy45NCAxMi4wNyA3LjMxIDEzLjUyIDcgMTVjLjk2LTEuMjkgMi4xMy0yLjA4IDMuNjctMi40NmwzLjQ2IDMuNDhINHYtMTB6bTE2IDB2MTAuMTlsMS4zIDEuM2MuNDItLjM3LjctLjg5LjctMS40OXYtMTBhMiAyIDAgMCAwLTItMkg3LjhsMiAySDIwem0tNy4wNyAzLjEzIDIuNzkgMi43OCAxLjI4LTEuMkwxMyA3djIuMTNsLS4wNy4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3YXBDYWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNC00IDRoM3Y3YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY4YzAtMi4yMS0xLjc5LTQtNC00UzUgNS43OSA1IDh2N0gybDQgNCA0LTRIN1Y4YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2N2MwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00VjhoM2wtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dHNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnpNNyA5aDJ2Mkg3em00IDBoMnYyaC0yem00IDBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW5zdWJzY3JpYmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk5IDE0LjA0VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMC4wNWMuMjggMS45MiAyLjEgMy4zNSA0LjE4IDIuOTMgMS4zNC0uMjcgMi40My0xLjM3IDIuNy0yLjcxLjI1LTEuMjQtLjE2LTIuMzktLjk0LTMuMTh6bS0yLTkuMDRMMTIgOC41IDUgNWgxMy45OXptLTMuNjQgMTBINVY3bDcgMy41TDE5IDd2Ni4wNWMtLjE2LS4wMi0uMzMtLjA1LS41LS4wNS0xLjM5IDAtMi41OS44Mi0zLjE1IDJ6bTUuMTUgMmgtNHYtMWg0djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2ljZW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgNkMxNS40NiA2IDEzIDguNDYgMTMgMTEuNWMwIDEuMzMuNDcgMi41NSAxLjI2IDMuNUg5Ljc0Yy43OS0uOTUgMS4yNi0yLjE3IDEuMjYtMy41QzExIDguNDYgOC41NCA2IDUuNSA2UzAgOC40NiAwIDExLjUgMi40NiAxNyA1LjUgMTdoMTNjMy4wNCAwIDUuNS0yLjQ2IDUuNS01LjVTMjEuNTQgNiAxOC41IDZ6bS0xMyA5QzMuNTcgMTUgMiAxMy40MyAyIDExLjVTMy41NyA4IDUuNSA4IDkgOS41NyA5IDExLjUgNy40MyAxNSA1LjUgMTV6bTEzIDBjLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41UzE2LjU3IDggMTguNSA4IDIyIDkuNTcgMjIgMTEuNSAyMC40MyAxNSAxOC41IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVnBuS2V5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmwyLjU5IDIuNTlBNi4wMTIgNi4wMTIgMCAwIDAgMSAxMmMwIDMuMzEgMi42OSA2IDYgNiAyLjIyIDAgNC4xNS0xLjIxIDUuMTktM2w3LjU5IDcuNjEgMS40MS0xLjQxTDIuODEgMi44MXpNNyAxNmMtMi4yMSAwLTQtMS43OS00LTQgMC0xLjY3IDEuMDItMy4xIDIuNDctMy43bDEuNzEgMS43MUM3LjEyIDEwIDcuMDYgMTAgNyAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTJjMC0uMDYgMC0uMTItLjAxLS4xOGwxLjc0IDEuNzRDMTAuMjIgMTQuNDggOS4xNCAxNiA3IDE2em0xMC0xLjgzVjEzaC0xLjE3TDE3IDE0LjE3ek0xMy44MyAxMUgyMXYyaC0ydjNsMiAydi0zaDJWOUgxMS44M2wyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWcG5LZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE5aC02di00aC0yLjY4Yy0xLjE0IDIuNDItMy42IDQtNi4zMiA0LTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTdjMi43MiAwIDUuMTcgMS41OCA2LjMyIDRIMjR2NmgtMnY0em0tNC0yaDJ2LTRoMnYtMkgxMS45NGwtLjIzLS42N0MxMS4wMSA4LjM0IDkuMTEgNyA3IDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVjMi4xMSAwIDQuMDEtMS4zNCA0LjcxLTMuMzNsLjIzLS42N0gxOHY0ek03IDE1Yy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3ptMC00Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpQ2FsbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjUxYy0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy40OWMwLS41NS0uNDUtMS0xLTF6TTUuMDMgNWgxLjVhMTMgMTMgMCAwIDAgLjQ2IDIuNTlsLTEuMiAxLjJjLS40MS0xLjItLjY3LTIuNDctLjc2LTMuNzl6TTE5IDE4Ljk3Yy0xLjMyLS4wOS0yLjU5LS4zNS0zLjgtLjc1bDEuMTktMS4xOWMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNC45NUMyMS43OSA0Ljc4IDE5LjY3IDMgMTYuNSAzYy0zLjE4IDAtNS4yOSAxLjc4LTUuNSAxLjk1TDE2LjUgMTIgMjIgNC45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHptLTgtMmgydi00aDR2LTJoLTRWN2gtMnY0SDd2Mmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQ2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExaC00djRoLTJ2LTRIN3YtMmg0VjdoMnY0aDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZExpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExaDh2Mkg4di0yem0xMi4xIDFIMjJjMC0yLjc2LTIuMjQtNS01LTVoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF6TTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTE5IDEyaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zdi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbXBTdG9yaWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOWgxMFY0SDd2MTV6TTkgNmg2djExSDlWNnpNMyA2aDJ2MTFIM3pNMTkgNmgydjExaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNTQgNS4yMy0xLjM5LTEuNjhDMTguODggMy4yMSAxOC40NyAzIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTYuNTVMMy40NiA1LjIzQzMuMTcgNS41NyAzIDYuMDIgMyA2LjVWMTljMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDgtLjE3LS45My0uNDYtMS4yN3pNNi4yNCA1aDExLjUybC44MS45N0g1LjQ0bC44LS45N3pNNSAxOVY4aDE0djExSDV6bTguNDUtOWgtMi45djNIOGw0IDQgNC00aC0yLjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0cmlidXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDguNWMtLjkxIDAtMi43NS40Ni0yLjc1IDEuMzh2NC42MmgxLjVWMTloMi41di00LjVoMS41VjkuODhjMC0uOTEtMS44NC0xLjM4LTIuNzUtMS4zOHpNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDdjLS42OSAwLTEuMjMuMzUtMS41OS44OEwwIDEybDUuNDEgOC4xMWMuMzYuNTMuOS44OSAxLjU5Ljg5aDE1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINy4wN0wyLjQgMTJsNC42Ni03SDIydjE0em0tMTEuNTktMkwxNCAxMy40MSAxNy41OSAxNyAxOSAxNS41OSAxNS40MSAxMiAxOSA4LjQxIDE3LjU5IDcgMTQgMTAuNTkgMTAuNDEgNyA5IDguNDEgMTIuNTkgMTIgOSAxNS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhbGxvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNy41aDV2MmgtNXptMCA3aDV2MmgtNXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0ek0xMSA2SDZ2NWg1VjZ6bS0xIDRIN1Y3aDN2M3ptMSAzSDZ2NWg1di01em0tMSA0SDd2LTNoM3YzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmlvdGVjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTljLTEuMSAwLTIgLjktMiAyaDE0YzAtMS4xLS45LTItMi0yaC00di0yaDNjMS4xIDAgMi0uOSAyLTJoLThjLTEuNjYgMC0zLTEuMzQtMy0zYTMgMyAwIDAgMSAxLjQ3LTIuNTdjLjQxLjU5IDEuMDYgMSAxLjgzIDEuMDYuNy4wNiAxLjM2LS4xOSAxLjg1LS42MmwuNTkgMS42MS45NC0uMzQuMzQuOTQgMS44OC0uNjgtLjM0LS45NC45NC0uMzQtMi43NC03LjUyLS45NC4zNC0uMzQtLjk0LTEuODguNjguMzQuOTQtLjk0LjM1LjU2IDEuNTVjLTEuMTctLjA0LTIuMTkuNzUtMi40OCAxLjg2QTUuMDEgNS4wMSAwIDAgMCA1IDEyYzAgMi43NiAyLjI0IDUgNSA1djJIN3ptNS44Ni0xNC40OCAxLjcxIDQuNy0uOTQuMzQtMS43MS00LjcuOTQtLjM0ek0xMC41IDdjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtNC40MiAzLjU4LTggOC04IDEuODUgMCAzLjU1LjYzIDQuOSAxLjY5TDUuNjkgMTYuOUE3LjkwMiA3LjkwMiAwIDAgMSA0IDEyem04IDhjLTEuODUgMC0zLjU1LS42My00LjktMS42OUwxOC4zMSA3LjFBNy45MDIgNy45MDIgMCAwIDEgMjAgMTJjMCA0LjQyLTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjFoLTFsMS03SDcuNWMtLjg4IDAtLjMzLS43NS0uMzEtLjc4QzguNDggMTAuOTQgMTAuNDIgNy41NCAxMy4wMSAzaDFsLTEgN2gzLjUxYy40IDAgLjYyLjE5LjQuNjZDMTIuOTcgMTcuNTUgMTEgMjEgMTEgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxjdWxhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjUgNy43Mmg1djEuNWgtNXpNMTMgMTUuNzVoNXYxLjVoLTV6TTEzIDEzLjI1aDV2MS41aC01ek04IDE4aDEuNXYtMmgydi0xLjVoLTJ2LTJIOHYySDZWMTZoMnpNMTQuMDkgMTAuOTVsMS40MS0xLjQxIDEuNDEgMS40MSAxLjA2LTEuMDYtMS40MS0xLjQyIDEuNDEtMS40MUwxNi45MSA2IDE1LjUgNy40MSAxNC4wOSA2bC0xLjA2IDEuMDYgMS40MSAxLjQxLTEuNDEgMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYW5nZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em00LjE3LTUuMjQtMS4xLTEuMWMuNzEtMS4zMy41My0zLjAxLS41OS00LjEzQTMuNDgyIDMuNDgyIDAgMCAwIDEyIDguNWMtLjAzIDAtLjA2LjAxLS4wOS4wMUwxMyA5LjZsLTEuMDYgMS4wNi0yLjgzLTIuODNMMTEuOTQgNSAxMyA2LjA2bC0uOTYuOTZjMS4yNy4wMSAyLjUzLjQ4IDMuNSAxLjQ0IDEuNyAxLjcxIDEuOTEgNC4zNi42MyA2LjN6bS0xLjI4IDEuNDFMMTIuMDYgMTkgMTEgMTcuOTRsLjk1LS45NWE0Ljk3IDQuOTcgMCAwIDEtMy40OC0xLjQ2IDUuMDA2IDUuMDA2IDAgMCAxLS42NC02LjI5bDEuMSAxLjFjLS43MSAxLjMzLS41MyAzLjAxLjU5IDQuMTMuNy43IDEuNjMgMS4wNCAyLjU2IDEuMDFMMTEgMTQuNGwxLjA2LTEuMDYgMi44MyAyLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDYuNDEgMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMiAxOSA2LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudENvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFINGMtMS4xIDAtMiAuOS0yIDJ2MTRoMlYzaDEyVjF6bTMgNEg4Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDExYzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTZIOFY3aDExdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudEN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42NCA3LjY0Yy4yMy0uNS4zNi0xLjA1LjM2LTEuNjQgMC0yLjIxLTEuNzktNC00LTRTMiAzLjc5IDIgNnMxLjc5IDQgNCA0Yy41OSAwIDEuMTQtLjEzIDEuNjQtLjM2TDEwIDEybC0yLjM2IDIuMzZDNy4xNCAxNC4xMyA2LjU5IDE0IDYgMTRjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNGMwLS41OS0uMTMtMS4xNC0uMzYtMS42NEwxMiAxNGw3IDdoM3YtMUw5LjY0IDcuNjR6TTYgOGMtMS4xIDAtMi0uODktMi0ycy45LTIgMi0yIDIgLjg5IDIgMi0uOSAyLTIgMnptMCAxMmMtMS4xIDAtMi0uODktMi0ycy45LTIgMi0yIDIgLjg5IDIgMi0uOSAyLTIgMnptNi03LjVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNS41LjIyLjUuNS0uMjIuNS0uNS41ek0xOSAzbC02IDYgMiAyIDctN1YzaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudFBhc3RlR28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDVoMnYzaDEwVjVoMnY2aDJWNWMwLTEuMS0uOS0yLTItMmgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1di0ySDVWNXptNy0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjAxIDEzLTEuNDIgMS40MSAxLjU4IDEuNThIMTJ2Mmg2LjE3bC0xLjU4IDEuNTkgMS40MiAxLjQxIDMuOTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRlbnRQYXN0ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjIgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMS42MSAxLjYxIDEuNDEtMS40MnpNNSAxOVY3LjgzTDE2LjE3IDE5SDV6TTE3IDhWNWgydjExLjE3bDIgMlY1YzAtMS4xLS45LTItMi0yaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1LjgzbDUgNUgxN3ptLTUtNWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudFBhc3RlU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1aDJ2M2gxMFY1aDJ2NWgyVjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYtMkg1VjV6bTctMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4zIDE4LjljLjQtLjcuNy0xLjUuNy0yLjQgMC0yLjUtMi00LjUtNC41LTQuNVMxMiAxNCAxMiAxNi41czIgNC41IDQuNSA0LjVjLjkgMCAxLjctLjMgMi40LS43bDIuNyAyLjcgMS40LTEuNC0yLjctMi43em0tMy44LjFjLTEuNCAwLTIuNS0xLjEtMi41LTIuNXMxLjEtMi41IDIuNS0yLjUgMi41IDEuMSAyLjUgMi41LTEuMSAyLjUtMi41IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRlbnRQYXN0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMmgtNC4xOEMxNC40Ljg0IDEzLjMgMCAxMiAwUzkuNi44NCA5LjE4IDJINWMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTcgMThINVY0aDJ2M2gxMFY0aDJ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb3B5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg5Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg5VjRoOXYxMnpNMyAxNXYtMmgydjJIM3ptMC01LjVoMnYySDN2LTJ6TTEwIDIwaDJ2MmgtMnYtMnptLTctMS41di0yaDJ2Mkgzek01IDIyYy0xLjEgMC0yLS45LTItMmgydjJ6bTMuNSAwaC0ydi0yaDJ2MnptNSAwdi0yaDJjMCAxLjEtLjkgMi0yIDJ6TTUgNnYySDNjMC0xLjEuOS0yIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyZWF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek01LjkyIDE5SDV2LS45Mmw5LjA2LTkuMDYuOTIuOTJMNS45MiAxOXpNMjAuNzEgNS42M2wtMi4zNC0yLjM0Yy0uMi0uMi0uNDUtLjI5LS43MS0uMjlzLS41MS4xLS43LjI5bC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWxldGVTd2VlcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTZoNHYyaC00em0wLThoN3YyaC03em0wIDRoNnYyaC02ek0zIDE4YzAgMS4xLjkgMiAyIDJoNmMxLjEgMCAyLS45IDItMlY4SDN2MTB6bTItOGg2djhINXYtOHptNS02SDZMNSA1SDJ2MmgxMlY1aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVzZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6bTYtMThoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyem04IDRoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wLTRoMlY3aC0ydjJ6bS00LTRoMlYzaC0ydjJ6TTcuODMgNSA3IDQuMTdWM2gydjJINy44M3ptMTIgMTItLjgzLS44M1YxNWgydjJoLTEuMTd6bTEuMzYgNC4xOUwyLjgxIDIuODEgMS4zOSA0LjIyIDQuMTcgN0gzdjJoMlY3LjgzbDIgMlYxN2g3LjE3bDIgMkgxNXYyaDJ2LTEuMTdsMi43OCAyLjc4IDEuNDEtMS40MnpNOSAxNXYtMy4xN0wxMi4xNyAxNUg5em02LTIuODNWOWgtMy4xN2wtMi0ySDE3djcuMTdsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyYWZ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTkgOGMwLS43Mi0uMzctMS4zNS0uOTQtMS43TDEyIDEgMi45NSA2LjNDMi4zOCA2LjY1IDIgNy4yOCAyIDh2MTBjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMmwtLjAxLTEwem0tMiAwdi4wMUwxMiAxMyA0IDhsOC00LjY4TDE5Ljk5IDh6TTQgMTh2LTcuNjZsOCA1LjAyIDcuOTktNC45OUwyMCAxOEg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHluYW1pY0ZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDhINnY3YzAgMS4xLjkgMiAyIDJoOXYtMkg4Vjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNoLThjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOGgtOFY3aDh2NHpNNCAxMkgydjdjMCAxLjEuOSAyIDIgMmg5di0ySDR2LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMUg0Yy0xLjEgMC0yIC45LTIgMnYxNGgyVjNoMTJWMXptLTEgNEg4Yy0xLjEgMC0xLjk5LjktMS45OSAyTDYgMjFjMCAxLjEuODkgMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWMTFsLTYtNnpNOCAyMVY3aDZ2NWg1djlIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckxpc3RPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44MyA4SDIxVjZIOC44M2wyIDJ6bTUgNUgxOHYtMmgtNC4xN2wyIDJ6TTE0IDE2LjgzVjE4aC00di0yaDMuMTdsLTMtM0g2di0yaDIuMTdsLTMtM0gzVjZoLjE3TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDFMMTQgMTYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxOGg0di0yaC00djJ6TTMgNnYyaDE4VjZIM3ptMyA3aDEydi0ySDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsYWdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgOS0xLTJIOHYxMWgxLjV2LTVIMTJsMSAyaDVWOWgtM3ptMS41IDQuNWgtMi41N2wtMS0ySDkuNXYtM2gzLjU3bDEgMmgyLjQzdjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi4zNiA2IC40IDJIMTh2NmgtMy4zNmwtLjQtMkg3VjZoNS4zNk0xNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZoLTUuNkwxNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9udERvd25sb2FkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC44MyAySDIwYzEuMSAwIDIgLjkgMiAydjE1LjE3bC0yLTJWNEg2LjgzbC0yLTJ6bTYuMDkgNC0uNTcgMS41MiAxLjM2IDEuMzYuMjMtLjY2aC4xbC41NCAxLjUyIDMuMDQgMy4wNEwxMy4wNyA2aC0yLjE1em05LjU3IDE3LjMxTDE5LjE3IDIySDRjLTEuMSAwLTItLjktMi0yVjQuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek0xNy4xNyAyMGwtNS4wNy01LjA3SDkuNThMOC40OSAxOEg2LjQxbDIuMzktNi4zN0w0IDYuODNWMjBoMTMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb250RG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMTcgMTUuNWg1LjY0bDEuMTQgM2gyLjA5bC01LjExLTEzaC0xLjg2bC01LjExIDEzaDIuMDlsMS4xMi0zek0xMiA3Ljk4bDIuMDcgNS41Mkg5LjkzTDEyIDcuOTh6TTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDRWNGgxNnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDguODMgMTcuMTcgMTIgMTQgMTUuMTdWMTRINnYtNGg4VjguODNNMTIgNHY0SDR2OGg4djRsOC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdlc3R1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTkgNi44OWMuNy0uNzEgMS40LTEuMzUgMS43MS0xLjIyLjUuMiAwIDEuMDMtLjMgMS41Mi0uMjUuNDItMi44NiAzLjg5LTIuODYgNi4zMSAwIDEuMjguNDggMi4zNCAxLjM0IDIuOTguNzUuNTYgMS43NC43MyAyLjY0LjQ2IDEuMDctLjMxIDEuOTUtMS40IDMuMDYtMi43NyAxLjIxLTEuNDkgMi44My0zLjQ0IDQuMDgtMy40NCAxLjYzIDAgMS42NSAxLjAxIDEuNzYgMS43OS0zLjc4LjY0LTUuMzggMy42Ny01LjM4IDUuMzcgMCAxLjcgMS40NCAzLjA5IDMuMjEgMy4wOSAxLjYzIDAgNC4yOS0xLjMzIDQuNjktNi4xSDIxdi0yLjVoLTIuNDdjLS4xNS0xLjY1LTEuMDktNC4yLTQuMDMtNC4yLTIuMjUgMC00LjE4IDEuOTEtNC45NCAyLjg0LS41OC43My0yLjA2IDIuNDgtMi4yOSAyLjcyLS4yNS4zLS42OC44NC0xLjExLjg0LS40NSAwLS43Mi0uODMtLjM2LTEuOTIuMzUtMS4wOSAxLjQtMi44NiAxLjg1LTMuNTIuNzgtMS4xNCAxLjMtMS45MiAxLjMtMy4yOEM4Ljk1IDMuNjkgNy4zMSAzIDYuNDQgMyA1LjEyIDMgMy45NyA0IDMuNzIgNC4yNWMtLjM2LjM2LS42Ni42Ni0uODguOTNsMS43NSAxLjcxem05LjI5IDExLjY2Yy0uMzEgMC0uNzQtLjI2LS43NC0uNzIgMC0uNi43My0yLjIgMi44Ny0yLjc2LS4zIDIuNjktMS40MyAzLjQ4LTIuMTMgMy40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvd1RvUmVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTUgMThjLjItLjYzIDIuNTctMS42OCA0Ljk2LTEuOTRsMi4wNC0yYTkuMzQgOS4zNCAwIDAgMC0xLS4wNmMtMi42NyAwLTggMS4zNC04IDR2Mmg5bC0yLTJINXptMTUuNi01LjUtNS4xMyA1LjE3LTIuMDctMi4wOEwxMiAxN2wzLjQ3IDMuNUwyMiAxMy45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvd1RvVm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNoLS42OGwtMiAyaDEuOTFMMTkgMTdINWwxLjc4LTJoMi4wNWwtMi0ySDZsLTMgM3Y0YzAgMS4xLjg5IDIgMS45OSAySDE5YTIgMiAwIDAgMCAyLTJ2LTRsLTMtM3ptMSA3SDV2LTFoMTR2MXptLTcuNjYtNC45OGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNi4zNi02LjM2YS45OTYuOTk2IDAgMCAwIDAtMS40MUwxNC4xNiAyLjNhLjk3NS45NzUgMCAwIDAtMS40LS4wMUw2LjM5IDguNjZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDQuOTUgNC45NXptMi4xMi0xMC42MUwxNyA3Ljk1bC00Ljk1IDQuOTUtMy41NC0zLjU0IDQuOTUtNC45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1di0zaDMuNTZjLjY5IDEuMTkgMS45NyAyIDMuNDUgMnMyLjc1LS44MSAzLjQ1LTJIMTl2M3ptMC01aC00Ljk5YzAgMS4xLS45IDItMiAycy0yLS45LTItMkg1VjVoMTR2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc2lnaHRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOGMtMS40NSAwLTIuMjYgMS40NC0xLjkzIDIuNTFsLTMuNTUgMy41NmMtLjMtLjA5LS43NC0uMDktMS4wNCAwbC0yLjU1LTIuNTVDMTIuMjcgMTAuNDUgMTEuNDYgOSAxMCA5Yy0xLjQ1IDAtMi4yNyAxLjQ0LTEuOTMgMi41MmwtNC41NiA0LjU1QzIuNDQgMTUuNzQgMSAxNi41NSAxIDE4YzAgMS4xLjkgMiAyIDIgMS40NSAwIDIuMjYtMS40NCAxLjkzLTIuNTFsNC41NS00LjU2Yy4zLjA5Ljc0LjA5IDEuMDQgMGwyLjU1IDIuNTVDMTIuNzMgMTYuNTUgMTMuNTQgMTggMTUgMThjMS40NSAwIDIuMjctMS40NCAxLjkzLTIuNTJsMy41Ni0zLjU1YzEuMDcuMzMgMi41MS0uNDggMi41MS0xLjkzIDAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSA5IC45NC0yLjA3TDE4IDZsLTIuMDYtLjkzTDE1IDNsLS45MiAyLjA3TDEyIDZsMi4wOC45M3pNMy41IDExIDQgOWwyLS41TDQgOGwtLjUtMkwzIDhsLTIgLjVMMyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW52ZW50b3J5MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMSAwLTIgLjktMiAydjMuMDFjMCAuNzIuNDMgMS4zNCAxIDEuNjlWMjBjMCAxLjEgMS4xIDIgMiAyaDE0Yy45IDAgMi0uOSAyLTJWOC43Yy41Ny0uMzUgMS0uOTcgMS0xLjY5VjRjMC0xLjEtMS0yLTItMnptLTEgMThINVY5aDE0djExem0xLTEzSDRWNGgxNnYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEyaDZ2Mkg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW52ZW50b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1aDJ2M2gxMFY1aDJ2NWgyVjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNnYtMkg1VjV6bTctMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMS41IDE1LjUxIDE3bC0zLjAxLTMtMS41IDEuNSA0LjUxIDQuNSA2Ljk5LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaW5rT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4zOSAxMSAxNiAxMi42MVYxMXpNMTcgN2gtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMSAwIDEuMjctLjc3IDIuMzctMS44NyAyLjg0bDEuNCAxLjRBNC45ODYgNC45ODYgMCAwIDAgMjIgMTJjMC0yLjc2LTIuMjQtNS01LTV6TTIgNC4yN2wzLjExIDMuMTFBNC45OTEgNC45OTEgMCAwIDAgMiAxMmMwIDIuNzYgMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjEgMC0xLjU5IDEuMjEtMi45IDIuNzYtMy4wN0w4LjczIDExSDh2MmgyLjczTDEzIDE1LjI3VjE3aDEuNzNsNC4wMSA0LjAxIDEuNDEtMS40MUwzLjQxIDIuODYgMiA0LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgN2gtNHYyaDRjMS42NSAwIDMgMS4zNSAzIDNzLTEuMzUgMy0zIDNoLTR2Mmg0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01em0tNiA4SDdjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTNoNFY3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoNHYtMnptLTMtNGg4djJIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvd1ByaW9yaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA1aDh2MmgtOFY1em0wIDUuNWg4djJoLTh2LTJ6bTAgNS41aDh2MmgtOHYtMnpNMiAxMS41QzIgMTUuMDggNC45MiAxOCA4LjUgMThIOXYybDMtMy0zLTN2MmgtLjVDNi4wMiAxNiA0IDEzLjk4IDQgMTEuNVM2LjAyIDcgOC41IDdIMTJWNUg4LjVDNC45MiA1IDIgNy45MiAyIDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNnptLTIgMC04IDQuOTlMNCA2aDE2em0wIDEySDRWOGw4IDUgOC01djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya3VucmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZ6bS0yIDAtOCA1LTgtNWgxNnptMCAxMkg0VjhsOCA1IDgtNXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmVUb0luYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA5aC0yLjU1VjZoLTIuOXYzSDhsNCA0em0zLTZINC45OUMzLjg4IDMgMyAzLjkgMyA1djE0YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINXYtM2gzLjU2Yy42OSAxLjE5IDEuOTcgMiAzLjQ1IDJzMi43NS0uODEgMy40NS0ySDE5djN6bTAtNWgtNC45OWMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJINWwtLjAxLTlIMTl2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5leHRXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSAxOC41IDQtNC00LTQtMSAxIDMgMy0zIDN6TTIwIDdoLTRWNWMwLS41NS0uMjItMS4wNS0uNTktMS40MUMxNS4wNSAzLjIyIDE0LjU1IDMgMTQgM2gtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6bTEwIDE1SDRWOWgxNnYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGxpbmVkRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0xLTJINXYxN2gydi03aDVsMSAyaDdWNmgtNnptNCA4aC00bC0xLTJIN1Y2aDVsMSAyaDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvbGljeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00em03IDEwYzAgMS44NS0uNTEgMy42NS0xLjM4IDUuMjFsLTEuNDUtMS40NWE0Ljk5NCA0Ljk5NCAwIDAgMC0uNjQtNi4yOSA1LjAwMyA1LjAwMyAwIDAgMC03LjA3IDAgNS4wMDMgNS4wMDMgMCAwIDAgMCA3LjA3IDUuMDA2IDUuMDA2IDAgMCAwIDYuMjkuNjRsMS43MiAxLjcyYy0xLjE5IDEuNDItMi43MyAyLjUxLTQuNDcgMy4wNC00LjAyLTEuMjUtNy01LjQyLTctOS45NFY2LjNsNy0zLjExIDcgMy4xMVYxMXptLTcgNGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQdXNoUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNHY1YzAgMS4xMi4zNyAyLjE2IDEgM0g5Yy42NS0uODYgMS0xLjkgMS0zVjRoNG0zLTJIN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxdjVjMCAxLjY2LTEuMzQgMy0zIDN2Mmg1Ljk3djdsMSAxIDEtMXYtN0gxOXYtMmMtMS42NiAwLTMtMS4zNC0zLTNWNGgxYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVkbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmE4LjAwMiA4LjAwMiAwIDAgMSA3LjYtNS41YzEuOTUgMCAzLjczLjcyIDUuMTIgMS44OEwxMyAxNmg5VjdsLTMuNiAzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDExdjJoMTB2LTJIN3ptNS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMUg3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzSDV2LTJoMTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGx5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDhWNWwtNyA3IDcgN3YtM2wtNC00IDQtNHptNiAxVjVsLTcgNyA3IDd2LTQuMWM1IDAgOC41IDEuNiAxMSA1LjEtMS01LTQtMTAtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwb3J0R21haWxlcnJvcnJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzMgM0g4LjI3TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NkwyMSAxNS43M1Y4LjI3TDE1LjczIDN6TTE5IDE0LjkgMTQuOSAxOUg5LjFMNSAxNC45VjkuMUw5LjEgNWg1LjhMMTkgOS4xdjUuOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnY3aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwb3J0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjEgNWg1LjhMMTkgOS4xdjUuOGwtLjIyLjIyIDEuNDIgMS40MS44LS44VjguMjdMMTUuNzMgM0g4LjI3bC0uOC44IDEuNDEgMS40MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDkuMzNWN2gtMnYuMzN6TTIuNDEgMS41OCAxIDIuOTlsMy42NCAzLjY0TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NmwxLjY0LTEuNjRMMjEuMDEgMjNsMS40MS0xLjQxTDIuNDEgMS41OHpNMTQuOSAxOUg5LjFMNSAxNC45VjkuMWwxLjA1LTEuMDUgOS45IDkuOUwxNC45IDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTkgMTQuOSAxNC45IDE5SDkuMUw1IDE0LjlWOS4xTDkuMSA1aDUuOEwxOSA5LjF2NS44elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjdoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYXZlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMnY3SDV2LTdIM3Y3YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ6bS02IC42NyAyLjU5LTIuNThMMTcgMTEuNWwtNSA1LTUtNSAxLjQxLTEuNDFMMTEgMTIuNjdWM2gydjkuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYXZlQXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMi40VjdsLTQtNEg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg3LjRsMi0ySDVWNWgxMS4xN0wxOSA3LjgzdjYuNTdsMi0yek0xNSAxNWMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6TTYgNmg5djRINlY2em0xMy45OSAxMC4yNSAxLjc3IDEuNzdMMTYuNzcgMjNIMTV2LTEuNzdsNC45OS00Ljk4em0zLjI2LjI2LS44NS44NS0xLjc3LTEuNzcuODUtLjg1Yy4yLS4yLjUxLS4yLjcxIDBsMS4wNiAxLjA2Yy4yLjIuMi41MiAwIC43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2wtNC00em0yIDE2SDVWNWgxMS4xN0wxOSA3LjgzVjE5em0tNy03Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pNNiA2aDl2NEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VsZWN0QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6TTcgMTdoMTBWN0g3djEwem0yLThoNnY2SDlWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQuMDEgNi4wMyA3LjUxIDMuMjItNy41Mi0xIC4wMS0yLjIybTcuNSA4LjcyTDQgMTcuOTd2LTIuMjJsNy41MS0xTTIuMDEgMyAyIDEwbDE1IDItMTUgMiAuMDEgN0wyMyAxMiAyLjAxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M3YtNC43bDYtMi4yNSA2IDIuMjV2NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU29ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOGg2di0ySDN2MnpNMyA2djJoMThWNkgzem0wIDdoMTJ2LTJIM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3F1YXJlRm9vdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjY2IDE3LjY2LTEuMDYgMS4wNi0uNzEtLjcxIDEuMDYtMS4wNi0xLjk0LTEuOTQtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMOS43IDkuN2wtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMNCA0djE0YzAgMS4xLjkgMiAyIDJoMTRsLTIuMzQtMi4zNHpNNyAxN3YtNS43NkwxMi43NiAxN0g3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhY2tlZEJhckNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA5aDR2MTFINHpNNCA0aDR2NEg0ek0xMCA3aDR2NGgtNHpNMTYgMTBoNHY0aC00ek0xNiAxNWg0djVoLTR6TTEwIDEyaDR2OGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0cmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMjBcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjRcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuOTQzIDguNjE5IDQuNDA0LTQuMzkyIDEuNDEzIDEuNDE2LTQuNDA1IDQuMzkyek04LjMyIDkuNjhsLjMxLjMyIDEuNDItMS40MS00LjAyLTQuMDRoLS4wMWwtLjMxLS4zMi0xLjQyIDEuNDEgNC4wMiA0LjA1ek0xNS40MSAxMy45NCAxNCAxNS4zNWwzLjk5IDQuMDEuMzUuMzUgMS40Mi0xLjQxLTMuOTktNC4wMXpNOC41OSAxMy45NWwtNC4wMyA0LjAxLS4zMi4zMyAxLjQxIDEuNDEgNC4wMy00LjAyLjMzLS4zMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwVjhoLTRWNGgtMnY0aC00VjRIOHY0SDR2Mmg0djRINHYyaDR2NGgydi00aDR2NGgydi00aDR2LTJoLTR2LTRoNHptLTYgNGgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0Rm9ybWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE3djJoMTR2LTJINXptNC41LTQuMmg1bC45IDIuMmgyLjFMMTIuNzUgNGgtMS41TDYuNSAxNWgyLjFsLjktMi4yek0xMiA1Ljk4IDEzLjg3IDExaC0zLjc0TDEyIDUuOTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVbmFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjU0IDUuMjMtMS4zOS0xLjY4QzE4Ljg4IDMuMjEgMTguNDcgMyAxOCAzSDZjLS40NyAwLS44OC4yMS0xLjE2LjU1TDMuNDYgNS4yM0MzLjE3IDUuNTcgMyA2LjAyIDMgNi41VjE5YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNi41YzAtLjQ4LS4xNy0uOTMtLjQ2LTEuMjd6TTYuMjQgNWgxMS41MmwuODMgMUg1LjQybC44Mi0xek01IDE5VjhoMTR2MTFINXptMy01aDIuNTV2M2gyLjl2LTNIMTZsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVuZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXBjb21pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42IDEwLjgxIDE2LjE5IDkuNGwzLjU2LTMuNTUgMS40MSAxLjQxYy0uMTEuMDMtMy41NiAzLjU1LTMuNTYgMy41NXpNMTMgM2gtMnY1aDJWM3ptLTYuNiA3LjgxTDcuODEgOS40IDQuMjYgNS44NCAyLjg0IDcuMjZjLjExLjAzIDMuNTYgMy41NSAzLjU2IDMuNTV6TTIwIDE0aC0zLjQyYy0uNzcgMS43Ni0yLjU0IDMtNC41OCAzcy0zLjgxLTEuMjQtNC41OC0zSDR2NWgxNnYtNW0wLTJjMS4xIDAgMiAuOSAyIDJ2NWMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMnYtNWMwLTEuMS45LTIgMi0yaDVjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F2ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE2Ljk5Yy0xLjM1IDAtMi4yLjQyLTIuOTUuOC0uNjUuMzMtMS4xOC42LTIuMDUuNi0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQyLTIuOTUuOGMtLjY1LjMzLTEuMTcuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MiAyLjk1LS44LjY1LS4zMyAxLjE3LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQyIDIuOTUtLjhjLjY1LS4zMyAxLjE4LS42IDIuMDUtLjYuOSAwIDEuNC4yNSAyLjA1LjYuNzUuMzggMS41OC44IDIuOTUuOHYtMS45NWMtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjYtLjgtMi45NS0uOHptMC00LjQ1Yy0xLjM1IDAtMi4yLjQzLTIuOTUuOC0uNjUuMzItMS4xOC42LTIuMDUuNi0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQzLTIuOTUuOGMtLjY1LjMyLTEuMTcuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MyAyLjk1LS44LjY1LS4zNSAxLjE1LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQzIDIuOTUtLjhjLjY1LS4zNSAxLjE1LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41OC44IDIuOTUuOHYtMS45NWMtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjYtLjgtMi45NS0uOHptMi45NS04LjA4Yy0uNzUtLjM4LTEuNTgtLjgtMi45NS0uOHMtMi4yLjQyLTIuOTUuOGMtLjY1LjMyLTEuMTguNi0yLjA1LjYtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zNy0xLjU3LS44LTIuOTUtLjhzLTIuMi40Mi0yLjk1LjhjLS42NS4zMy0xLjE3LjYtMi4wNS42djEuOTNjMS4zNSAwIDIuMi0uNDMgMi45NS0uOC42NS0uMzMgMS4xNy0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MyAyLjk1LS44Yy42NS0uMzIgMS4xOC0uNiAyLjA1LS42LjkgMCAxLjQuMjUgMi4wNS42Ljc1LjM4IDEuNTguOCAyLjk1LjhWNS4wNGMtLjkgMC0xLjQtLjI1LTIuMDUtLjU4ek0xNyA4LjA5Yy0xLjM1IDAtMi4yLjQzLTIuOTUuOC0uNjUuMzUtMS4xNS42LTIuMDUuNnMtMS40LS4yNS0yLjA1LS42Yy0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQzLTIuOTUuOGMtLjY1LjM1LTEuMTUuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MyAyLjk1LS44LjY1LS4zMiAxLjE4LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQzIDIuOTUtLjhjLjY1LS4zMiAxLjE4LS42IDIuMDUtLjYuOSAwIDEuNC4yNSAyLjA1LjYuNzUuMzggMS41OC44IDIuOTUuOFY5LjQ5Yy0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNi0uOC0yLjk1LS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2ViU3RvcmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDR2MTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNMTMgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg0VjRoOXYxNnpNMjEgNnYxMmMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTljMC0uODMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2Vla2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOVY3YzAtMS42NS0xLjM1LTMtMy0zSDZDNC4zNSA0IDMgNS4zNSAzIDd2MmMtMS42NSAwLTMgMS4zNS0zIDN2NWMwIDEuNjUgMS4zNSAzIDMgM2gxOGMxLjY1IDAgMy0xLjM1IDMtM3YtNWMwLTEuNjUtMS4zNS0zLTMtM3pNNSA3YzAtLjU1LjQ1LTEgMS0xaDEyYy41NSAwIDEgLjQ1IDEgMXYyLjc4Yy0uNjEuNTUtMSAxLjM0LTEgMi4yMnYySDZ2LTJjMC0uODgtLjM5LTEuNjctMS0yLjIyVjd6bTE3IDEwYzAgLjU1LS40NSAxLTEgMUgzYy0uNTUgMC0xLS40NS0xLTF2LTVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjRoMTZ2LTRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaGVyZVRvVm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMUM3LjU5IDEgNCA0LjU5IDQgOWMwIDUuNTcgNi45NiAxMy4zNCA3LjI2IDEzLjY3bC43NC44Mi43NC0uODJDMTMuMDQgMjIuMzQgMjAgMTQuNTcgMjAgOWMwLTQuNDEtMy41OS04LTgtOHptMCAxOS40N0M5LjgyIDE3Ljg2IDYgMTIuNTQgNiA5YzAtMy4zMSAyLjY5LTYgNi02czYgMi42OSA2IDZjMCAzLjgzLTQuMjUgOS4zNi02IDExLjQ3em0tMS41My05LjNMOC43MSA5LjRsLTEuNDIgMS40MkwxMC40NyAxNGw2LjAxLTYuMDEtMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMXhNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDdoNHYxMEg2VjlINFY3em0xMS44MyA0LjcyTDE4LjY2IDdoLTIuMzNsLTEuNjYgMi43N0wxMyA3aC0yLjMzbDIuODMgNC43MkwxMC4zMyAxN2gyLjMzbDItMy4zNCAyIDMuMzRIMTlsLTMuMTctNS4yOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTMwRnBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDV2M2g2djIuNUgzdjNoNVYxNkgydjNoNmMxLjY2IDAgMy0xLjM0IDMtM3YtMS45QTIuMSAyLjEgMCAwIDAgOC45IDEyIDIuMSAyLjEgMCAwIDAgMTEgOS45VjhjMC0xLjY2LTEuMzQtMy0zLTNIMnptMTcgM3Y4aC00VjhoNG0wLTNoLTRjLTEuNjYgMC0zIDEuMzQtMyAzdjhjMCAxLjY2IDEuMzQgMyAzIDNoNGMxLjY2IDAgMy0xLjM0IDMtM1Y4YzAtMS42Ni0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lM2dNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDd2Mmg1djJINHYyaDR2MkgzdjJoNWMxLjEgMCAyLS45IDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY5YzAtMS4xLS45LTItMi0ySDN6bTE4IDR2NGMwIDEuMS0uOSAyLTIgMmgtNWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDVjMS4xIDAgMiAuOSAyIDJoLTd2Nmg1di0yaC0yLjV2LTJIMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU0Z01vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgN0g3djVINVY3SDN2N2g0djNoMnYtM2gydi0ySDlWN3ptOCA0djJoMnYyaC01VjloN2MwLTEuMS0uOS0yLTItMmgtNWMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDVjMS4xIDAgMi0uOSAyLTJ2LTRoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU0Z1BsdXNNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMXYyaDJ2MmgtNFY5aDZjMC0xLjEtLjktMi0yLTJoLTRjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg0YzEuMSAwIDItLjkgMi0ydi00aC00em0xMSAwaC0yVjloLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2LTJ6TTcgN0g1djVIM1Y3SDF2N2g0djNoMnYtM2gxdi0ySDdWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTYwRnBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4djhoLTRWOGg0bTAtM2gtNGMtMS42NiAwLTMgMS4zNC0zIDN2OGMwIDEuNjYgMS4zNCAzIDMgM2g0YzEuNjYgMCAzLTEuMzQgMy0zVjhjMC0xLjY2LTEuMzQtMy0zLTN6bS05IDNWNUg1QzMuMzQgNSAyIDYuMzQgMiA4djhjMCAxLjY2IDEuMzQgMyAzIDNoM2MxLjY2IDAgMy0xLjM0IDMtM3YtM2MwLTEuNjYtMS4zNC0zLTMtM0g1VjhoNXptLTIgNXYzSDV2LTNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY2Vzc0FsYXJtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA1LjcyLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyLjUgOEgxMXY2bDQuNzUgMi44NS43NS0xLjIzLTQtMi4zN1Y4ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY2Vzc0FsYXJtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43LTQuNi0zLjktMS4zIDEuNSA0LjYgMy45TDIyIDUuN3pNNy45IDMuNCA2LjYgMS45IDIgNS43bDEuMyAxLjUgNC42LTMuOHpNMTIuNSA4SDExdjZsNC43IDIuOS44LTEuMi00LTIuNFY4ek0xMiA0Yy01IDAtOSA0LTkgOXM0IDkgOSA5IDktNCA5LTktNC05LTktOXptMCAxNmMtMy45IDAtNy0zLjEtNy03czMuMS03IDctNyA3IDMuMSA3IDctMy4xIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzVGltZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptMy4zIDE0LjcxTDExIDEyLjQxVjdoMnY0LjU5bDMuNzEgMy43MS0xLjQyIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2Nlc3NUaW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bS41LTEzSDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZFVuaXRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6TTcgNFYzaDEwdjFIN3ptMCAxNFY2aDEwdjEySDd6bTAgM3YtMWgxMHYxSDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDdIOHYyaDhWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEFsYXJtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptMS0xMWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRUb0hvbWVTY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEuMDEgOCAxYy0xLjEgMC0yIC45LTIgMnYzaDJWNWgxMHYxNEg4di0xSDZ2M2MwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTEwIDE1aDJWOEg1djJoMy41OUwzIDE1LjU5IDQuNDEgMTcgMTAgMTEuNDFWMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTdjMCAxLjY1LTEuMzUgMy0zIDNzLTMtMS4zNS0zLTNoMmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xSDJ2LTJoOS41YzEuNjUgMCAzIDEuMzUgMyAzek0xOSA2LjVDMTkgNC41NyAxNy40MyAzIDE1LjUgM1MxMiA0LjU3IDEyIDYuNWgyYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzE2LjMzIDggMTUuNSA4SDJ2MmgxMy41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41em0tLjUgNC41SDJ2MmgxNi41Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjV2MmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMyMC40MyAxMSAxOC41IDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlycGxhbmVUaWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjE5IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMnY0YzEuMSAwIDEuOTkuOSAxLjk5IDJzLS44OSAyLTIgMnY0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uODEtMi0xLjgxLTJ6TTIwIDE4SDR2LTIuNTRjMS4xOS0uNjkgMi0xLjk5IDItMy40NiAwLTEuNDgtLjgtMi43Ny0xLjk5LTMuNDZMNCA2aDE2djEyek04Ljg3IDE1LjY2bC0xLjY2LTIuODguOTMtLjI1IDEuMjYuOTkgMi4zOS0uNjQtMi40LTQuMTYgMS40LS4zOCA0LjAxIDMuNzQgMi40NC0uNjVhLjk2Ny45NjcgMCAwIDEgMS4xOC42OC45ODguOTg4IDAgMCAxLS42OSAxLjE5bC04Ljg2IDIuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJwbGFuZW1vZGVBY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0ybC04LjUtNVYzLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNVY5TDIgMTR2Mmw4LjUtMi41VjE5TDggMjAuNVYyMmw0LTEgNCAxdi0xLjVMMTMuNSAxOXYtNS41TDIyIDE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlycGxhbmVtb2RlSW5hY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUgNy42N1YzLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWOWw4LjUgNXYybC00LjQ5LTEuMzItNy4wMS03LjAxem05LjI4IDE0Ljk0IDEuNDEtMS40MS03LjY5LTcuNy0zLjk0LTMuOTQtNi43NS02Ljc1LTEuNDIgMS40MSA2LjM4IDYuMzhMMiAxNHYybDguNS0yLjVWMTlMOCAyMC41VjIybDQtMSA0IDF2LTEuNUwxMy41IDE5di0yLjY3bDYuMjggNi4yOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFvZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxem0tOSA2aDh2MS41SDhWMTB6bTEgM2g2djEuNUg5VjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTRoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTJoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTBoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2OGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5NEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXY2aDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnk1QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djRoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTZCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2Mmg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5QWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjE1LjMzQzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0ek0xMyAxOGgtMnYtMmgydjJ6bTAtNGgtMlY5aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnlDaGFyZ2luZ0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjE1LjMzQzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0ek0xMSAyMHYtNS41SDlMMTMgN3Y1LjVoMkwxMSAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnlGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnlTYXZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMlYyaC00djJIOGMtLjU1IDAtMSAuNDUtMSAxdjE2YzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xVjVjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMGgtMnYyaC0ydi0ySDl2LTJoMnYtMmgydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeVN0ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5VW5rbm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6TTEzIDE4aC0ydi0yaDJ2MnptMS4zLTUuMzFzLS4zOC40Mi0uNjcuNzFjLS40OC40OC0uODMgMS4xNS0uODMgMS42aC0xLjZjMC0uODMuNDYtMS41Mi45My0ybC45My0uOTRBMS40OTggMS40OTggMCAwIDAgMTIgOS41Yy0uODMgMC0xLjUuNjctMS41IDEuNUg5YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDNjMCAuNjYtLjI3IDEuMjYtLjcgMS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsb29kdHlwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmg2djJIOXpNMTMgOWgtMnYySDl2MmgydjJoMnYtMmgydi0yaC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy01LjMzIDQuNTUtOCA4LjQ4LTggMTEuOCAwIDQuOTggMy44IDguMiA4IDguMnM4LTMuMjIgOC04LjJjMC0zLjMyLTIuNjctNy4yNS04LTExLjh6bTAgMThjLTMuMzUgMC02LTIuNTctNi02LjIgMC0yLjM0IDEuOTUtNS40NCA2LTkuMTQgNC4wNSAzLjcgNiA2Ljc5IDYgOS4xNCAwIDMuNjMtMi42NSA2LjItNiA2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVldG9vdGhDb25uZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcgMTItMi0yLTIgMiAyIDIgMi0yem0xMC43MS00LjI5TDEyIDJoLTF2Ny41OUw2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgNS44M2wxLjg4IDEuODhMMTMgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDEzIDE4LjE3di0zLjc2bDEuODggMS44OHpNMTkgMTBsLTIgMiAyIDIgMi0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aERpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA1LjgzIDEuODggMS44OC0xLjYgMS42IDEuNDEgMS40MSAzLjAyLTMuMDJMMTIgMmgtMXY1LjAzbDIgMnYtMy4yek01LjQxIDQgNCA1LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDQuMjktNC4yOSAyLjMgMi4yOUwyMCAxOC41OSA1LjQxIDR6TTEzIDE4LjE3di0zLjc2bDEuODggMS44OEwxMyAxOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aERyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTdINHYtNWgxMXYtMkg0LjgxbDEuMDQtM0gxNVY1SDUuNWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMiAxMnY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThoLTJ2NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMy44NSAxOS4xNSAxaC0uNXYzLjc5bC0yLjMtMi4yOS0uNy43TDE4LjQ0IDZsLTIuNzkgMi43OS43LjcxIDIuMy0yLjNWMTFoLjVMMjIgOC4xNCAxOS44NSA2IDIyIDMuODV6bS0yLjM1LS45NC45NC45NC0uOTQuOTRWMi45MXptLjk0IDUuMjMtLjk0Ljk0VjcuMmwuOTQuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVldG9vdGhTZWFyY2hpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjI0IDEyLjAxIDIuMzIgMi4zMmMuMjgtLjcyLjQ0LTEuNTEuNDQtMi4zM3MtLjE2LTEuNTktLjQzLTIuMzFsLTIuMzMgMi4zMnptNS4yOS01LjMtMS4yNiAxLjI2Yy42MyAxLjIxLjk4IDIuNTcuOTggNC4wMnMtLjM2IDIuODItLjk4IDQuMDJsMS4yIDEuMmE5LjkzNiA5LjkzNiAwIDAgMCAxLjU0LTUuMzFjLS4wMS0xLjg5LS41NS0zLjY3LTEuNDgtNS4xOXptLTMuODIgMUwxMCAySDl2Ny41OUw0LjQxIDUgMyA2LjQxIDguNTkgMTIgMyAxNy41OSA0LjQxIDE5IDkgMTQuNDFWMjJoMWw1LjcxLTUuNzEtNC4zLTQuMjkgNC4zLTQuMjl6TTExIDUuODNsMS44OCAxLjg4TDExIDkuNTlWNS44M3ptMS44OCAxMC40NkwxMSAxOC4xN3YtMy43NmwxLjg4IDEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcxIDcuNzEgMTIgMmgtMXY3LjU5TDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDExIDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyA1LjgzbDEuODggMS44OEwxMyA5LjU5VjUuODN6bTEuODggMTAuNDZMMTMgMTguMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzc0F1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDctMy4yIDloMS45bC43LTJoMy4ybC43IDJoMS45TDEzIDdoLTJ6bS0uMTUgNS42NUwxMiA5bDEuMTUgMy42NWgtMi4zek0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcmlnaHRuZXNzSGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjlMMjMuMzEgMTIgMjAgOC42OXptLTIgNS43OVYxOGgtMy41MkwxMiAyMC40OCA5LjUyIDE4SDZ2LTMuNTJMMy41MiAxMiA2IDkuNTJWNmgzLjUyTDEyIDMuNTIgMTQuNDggNkgxOHYzLjUyTDIwLjQ4IDEyIDE4IDE0LjQ4ek0xMiA2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptMCAxMGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcmlnaHRuZXNzTG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6TTEyIDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02em0wIDEwYy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3NNZWRpdW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIgNnYxMmMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1VjRjMC0uNTUtLjQ1LTEtMS0xaC0yYy0uNTUgMC0xIC40NS0xIDF2MWgtMXY0YzAgLjU1LjQ1IDEgMSAxaDF2N2MwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWN2MwLTIuMjEtMS43OS00LTQtNFM1IDQuNzkgNSA3djdINGMtLjU1IDAtMSAuNDUtMSAxdjRoMXYxYzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi0xaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDdWN2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjEwYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTR2LTdoMWMuNTUgMCAxLS40NSAxLTFWNWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYXN3aXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2gtMWwtMS0xaC00TDkgN0g4Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDhIOFY5aDEuODNsMS0xaDIuMzRsMSAxSDE2djZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjU3LjUyIDEzLjA1IDVsMS40MS0xLjQxLTEuNTQtMS41NEMxNy43IDIuNDYgMjEuNTMgNi4yNCAyMiAxMWgyQzIzLjM2IDMuMyAxNS43OS0xLjY3IDguNTcuNTJ6TTkuNTQgMjAuNDFsMS41NCAxLjU0QzYuMyAyMS41NCAyLjQ3IDE3Ljc2IDIgMTNIMGMuNjQgNy43IDguMjEgMTIuNjcgMTUuNDMgMTAuNDhMMTAuOTUgMTlsLTEuNDEgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyZWRpdFNjb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmg1di0ySDR2LTZoMThWNmMwLTEuMTEtLjg5LTItMi0yem0wIDRINFY2aDE2djJ6bS01LjA3IDExLjE3LTIuODMtMi44My0xLjQxIDEuNDFMMTQuOTMgMjIgMjIgMTQuOTNsLTEuNDEtMS40MS01LjY2IDUuNjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXJrTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMzcgNS41MUE3LjM1IDcuMzUgMCAwIDAgOS4xIDcuNWMwIDQuMDggMy4zMiA3LjQgNy40IDcuNC42OCAwIDEuMzUtLjA5IDEuOTktLjI3QTcuMDE0IDcuMDE0IDAgMCAxIDEyIDE5Yy0zLjg2IDAtNy0zLjE0LTctNyAwLTIuOTMgMS44MS01LjQ1IDQuMzctNi40OXpNMTIgM2E5IDkgMCAxIDAgOSA5YzAtLjQ2LS4wNC0uOTItLjEtMS4zNmE1LjM4OSA1LjM4OSAwIDAgMS00LjQgMi4yNiA1LjQwMyA1LjQwMyAwIDAgMS0zLjE0LTkuOGMtLjQ0LS4wNi0uOS0uMS0xLjM2LS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YVNhdmVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyLjA1djMuMDNjMy4zOS40OSA2IDMuMzkgNiA2LjkyIDAgLjktLjE4IDEuNzUtLjQ4IDIuNTRsMi42IDEuNTNjLjU2LTEuMjQuODgtMi42Mi44OC00LjA3IDAtNS4xOC0zLjk1LTkuNDUtOS05Ljk1ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTcgMC0zLjUzIDIuNjEtNi40MyA2LTYuOTJWMi4wNWMtNS4wNi41LTkgNC43Ni05IDkuOTUgMCA1LjUyIDQuNDcgMTAgOS45OSAxMCAzLjMxIDAgNi4yNC0xLjYxIDguMDYtNC4wOWwtMi42LTEuNTNBNi45NSA2Ljk1IDAgMCAxIDEyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YVNhdmVyT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDh2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM1Y4aC0yem0yLTUuOTV2My4wM2MzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAuOS0uMTggMS43NS0uNDggMi41NGwyLjYgMS41M2MuNTYtMS4yNC44OC0yLjYyLjg4LTQuMDcgMC01LjE4LTMuOTUtOS40NS05LTkuOTV6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctNyAwLTMuNTMgMi42MS02LjQzIDYtNi45MlYyLjA1Yy01LjA2LjUtOSA0Ljc2LTkgOS45NSAwIDUuNTIgNC40NyAxMCA5Ljk5IDEwIDMuMzEgMCA2LjI0LTEuNjEgOC4wNi00LjA5bC0yLjYtMS41M0E2Ljk1IDYuOTUgMCAwIDEgMTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhVXNhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIuMDV2My4wM2MzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAuOS0uMTggMS43NS0uNDggMi41NGwyLjYgMS41M2MuNTYtMS4yNC44OC0yLjYyLjg4LTQuMDcgMC01LjE4LTMuOTUtOS40NS05LTkuOTV6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctNyAwLTMuNTMgMi42MS02LjQzIDYtNi45MlYyLjA1Yy01LjA2LjUtOSA0Ljc2LTkgOS45NSAwIDUuNTIgNC40NyAxMCA5Ljk5IDEwIDMuMzEgMCA2LjI0LTEuNjEgOC4wNi00LjA5bC0yLjYtMS41M0E2Ljk1IDYuOTUgMCAwIDEgMTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhc2V0TGlua2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxN2gxLjA5Yy4yOC0xLjY3IDEuMjQtMy4xIDIuNi00SDd2NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxOVY1aDE0djdoMWMuMzQgMCAuNjcuMDQgMSAuMDlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDMuODFjLS4zNS0uNjEtLjYtMS4yOC0uNzItMkg1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoNHY0SDd6TTEzIDdoNHY0aC00ek0xNiAyMGgtMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJoMnYtMmgtMmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNGgydi0yek0yMCAxNGgtMnYyaDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyaC0ydjJoMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTl2LTJoLTZ2Mmg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YXNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTNoNHY0SDd6TTEzIDEzaDR2NGgtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoNHY0SDd6TTEzIDdoNHY0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2ZWxvcGVyTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1aDEwdjJoMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5TDcgMWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTguNDEgMTEuNTlMMjAgMTJsLTQuNTktNC41OUwxNCA4LjgzIDE3LjE3IDEyIDE0IDE1LjE3bDEuNDEgMS40MnpNMTAgMTUuMTcgNi44MyAxMiAxMCA4LjgzIDguNTkgNy40MSA0IDEybDQuNTkgNC41OUwxMCAxNS4xN3pNMTcgMTlIN3YtMkg1djRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNGgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2aWNlVGhlcm1vc3RhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djhjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wOS0yLTR6bS00LTJWNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MWgtMXYxaDF2MmgtMXYxaDF2MWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURldmljZXNGb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM2gtM2MwLTEuNDQtMS40Ny0yLjQtMi43OS0xLjg0bC0zIDEuMjlDMTAuNDggMi43NiAxMCAzLjQ5IDEwIDQuMjlWMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01IDEzLjY4LTMgMS4yOVY0LjI5TDE1IDN2MTMuNjh6TTIwIDE5aC01LjMzbDEuMTItLjQ4Yy43My0uMzIgMS4yMS0xLjA0IDEuMjEtMS44NFY1aDN2MTR6TTIgM2gydjJIMnpNMiAxOWgydjJIMnpNMiAxNWgydjJIMnpNMiAxMWgydjJIMnpNMiA3aDJ2Mkgyek02IDNoMnYySDZ6TTYgMTloMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZoMThWNEg0Yy0xLjEgMC0yIC45LTIgMnYxMUgwdjNoMTR2LTNINFY2em0xOSAyaC02Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTR2LTdoNHY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlzY291bnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi43OSAyMSAzIDExLjIxdjJjMCAuNTMuMjEgMS4wNC41OSAxLjQxbDcuNzkgNy43OWMuNzguNzggMi4wNS43OCAyLjgzIDBsNi4yMS02LjIxYy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTIuNzkgMjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjM4IDE3LjQxYy4zOS4zOS45LjU5IDEuNDEuNTkuNTEgMCAxLjAyLS4yIDEuNDEtLjU5bDYuMjEtNi4yMWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDEyLjYyLjU4QzEyLjI1LjIxIDExLjc0IDAgMTEuMjEgMEg1QzMuOSAwIDMgLjkgMyAydjYuMjFjMCAuNTMuMjEgMS4wNC41OSAxLjQxbDcuNzkgNy43OXpNNSAyaDYuMjFMMTkgOS43OSAxMi43OSAxNiA1IDguMjFWMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjI1XCIsXCJjeVwiOlwiNC4yNVwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9Ob3REaXN0dXJiT25Ub3RhbFNpbGVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTE0Yy0zLjMgMC02IDIuNy02IDZzMi43IDYgNiA2IDYtMi43IDYtNi0yLjYtNi02LTZ6bTMgN0g5di0yaDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUR2ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6bS0yLTlIOHYyaDExVjh6bTAgNEg4djJoMTF2LTJ6TTcgOEg1djJoMlY4em0wIDRINXYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOVY3SDh2MTBoOHYtMmgtNnYtMmg2di0yaC02VjloNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkZ2VzZW5zb3JIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDdoMnY3SDNWN3ptLTMgM2gydjdIMHYtN3ptMjItM2gydjdoLTJWN3ptLTMgM2gydjdoLTJ2LTd6bS0zLTcuOTlMOCAyYy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMjBIOHYtMWg4djF6bTAtM0g4VjdoOHYxMHpNOCA1VjRoOHYxSDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGdlc2Vuc29yTG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDdoMnY3SDJWN3ptMTggM2gydjdoLTJ2LTd6bS00LTcuOTlMOCAyYy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMjBIOHYtMWg4djF6bTAtM0g4VjdoOHYxMHpNOCA1VjRoOHYxSDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFzaGxpZ2h0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIyIDggMTAuODNWMjJoOHYtMy4xN2wzLjc4IDMuNzggMS40MS0xLjQxTDIuODEgMi44MXpNMTQgMjBoLTR2LTcuMTdsNCA0VjIwek0xNiA0djFINy44M2wyIDJIMTZ2LjM5bC0yIDMuMDF2Ljc3bDIgMlYxMWwyLTNWMkg2djEuMTdsLjgzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxhc2hsaWdodE9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZ2NmwyIDN2MTFoOFYxMWwyLTNWMnptLTIgMnYxSDhWNGg4em0tMiA2LjRWMjBoLTR2LTkuNjFsLTItM1Y3aDh2LjM5bC0yIDMuMDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbG91cmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNWgxNFY5SDV2NnptMi00aDEwdjJIN3YtMnpNMTEgMmgydjNoLTJ6TTE3LjI4NiA2LjM5OWwxLjc5LTEuODAzIDEuNDIgMS40MS0xLjc5IDEuODAyek0xMSAxOWgydjNoLTJ6TTE3LjI5IDE3LjcxbDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNMy40OTUgNi4wMWwxLjQwNy0xLjQwOEw2LjY5IDYuMzkxIDUuMjg0IDcuNzk4ek0zLjQ5MiAxOC4wNzZsMS44MDMtMS43OSAxLjQwOSAxLjQyLTEuODAzIDEuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbHVvcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNWgxNFY5SDV2NnptMi00aDEwdjJIN3YtMnpNMTEgMmgydjNoLTJ6TTE3LjI4NiA2LjM5OWwxLjc5LTEuODAzIDEuNDIgMS40MS0xLjc5IDEuODAyek0xMSAxOWgydjNoLTJ6TTE3LjI5IDE3LjcxbDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNMy40OTUgNi4wMWwxLjQwNy0xLjQwOEw2LjY5IDYuMzkxIDUuMjg0IDcuNzk4ek0zLjQ5MiAxOC4wNzZsMS44MDMtMS43OSAxLjQwOSAxLjQyLTEuODAzIDEuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbWRCYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuMiAwLTggMy4yMi04IDguMiAwIDMuMzIgMi42NyA3LjI1IDggMTEuOCA1LjMzLTQuNTUgOC04LjQ4IDgtMTEuOEMyMCA1LjIyIDE2LjIgMiAxMiAyem0wIDE3LjMzYy00LjA1LTMuNy02LTYuNzktNi05LjE0QzYgNi41NyA4LjY1IDQgMTIgNHM2IDIuNTcgNiA2LjJjMCAyLjM0LTEuOTUgNS40NC02IDkuMTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZoMnY1aC0yek0xMSAxM2gydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbWRHb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTYtMS44QzE4IDYuNTcgMTUuMzUgNCAxMiA0cy02IDIuNTctNiA2LjJjMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQgNC4wNS0zLjcgNi02LjggNi05LjE0ek0xMiAyYzQuMiAwIDggMy4yMiA4IDguMiAwIDMuMzItMi42NyA3LjI1LTggMTEuOC01LjMzLTQuNTUtOC04LjQ4LTgtMTEuOEM0IDUuMjIgNy44IDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMXYyaDJ2Mkg5VjloN2MwLTEuMS0uOS0yLTItMkg5Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdwcEJhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptNiA5LjA5YzAgNC0yLjU1IDcuNy02IDguODMtMy40NS0xLjEzLTYtNC44Mi02LTguODN2LTQuN2w2LTIuMjUgNiAyLjI1djQuN3pNOS45MSA4LjUgOC41IDkuOTEgMTAuNTkgMTIgOC41IDE0LjA5bDEuNDEgMS40MUwxMiAxMy40MmwyLjA5IDIuMDggMS40MS0xLjQxTDEzLjQyIDEybDIuMDgtMi4wOS0xLjQxLTEuNDFMMTIgMTAuNTkgOS45MSA4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcHBHb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M1Y2LjMxbDYtMi4xMiA2IDIuMTJ2NC43OHptLTkuMTgtLjVMNy40IDEybDMuNTQgMy41NCA1LjY2LTUuNjYtMS40MS0xLjQxLTQuMjQgNC4yNC0yLjEzLTIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcHBNYXliZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptNiA5LjA5YzAgNC0yLjU1IDcuNy02IDguODMtMy40NS0xLjEzLTYtNC44Mi02LTguODN2LTQuN2w2LTIuMjUgNiAyLjI1djQuN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTRoMnYyaC0yek0xMSA3aDJ2NWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdwc0ZpeGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptOC45NCAzQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAyMC45NCAxM0gyM3YtMmgtMi4wNnpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3BzTm90Rml4ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDExQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAyMC45NCAxM0gyM3YtMmgtMi4wNnpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3BzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45NCAxMUE4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNmMtLjk4LjExLTEuOTEuMzgtMi43Ny43OGwxLjUzIDEuNTNhNi45OTUgNi45OTUgMCAwIDEgOC44NyA4Ljg3bDEuNTMgMS41M2MuNC0uODYuNjctMS43OS43OC0yLjc3SDIzdi0yaC0yLjA2ek0zIDQuMjdsMi4wNCAyLjA0QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNmMxLjc3LS4yIDMuMzgtLjkxIDQuNjktMS45OEwxOS43MyAyMWwxLjQxLTEuNDFMNC40MSAyLjg2IDMgNC4yN3ptMTMuMjcgMTMuMjdhNi45OTUgNi45OTUgMCAwIDEtOS44MS05LjgxbDkuODEgOS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYXBoaWNFcSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGgyVjZIN3YxMnptNCA0aDJWMmgtMnYyMHptLTgtOGgydi00SDN2NHptMTIgNGgyVjZoLTJ2MTJ6bTQtOHY0aDJ2LTRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmlkM1gzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMFY4aC00VjRoLTJ2NGgtNFY0SDh2NEg0djJoNHY0SDR2Mmg0djRoMnYtNGg0djRoMnYtNGg0di0yaC00di00aDR6bS02IDRoLTR2LTRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZDRYNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN1Y1aC0zVjJoLTJ2M2gtNFYyaC0ydjNIN1YySDV2M0gydjJoM3Y0SDJ2MmgzdjRIMnYyaDN2M2gydi0zaDR2M2gydi0zaDR2M2gydi0zaDN2LTJoLTN2LTRoM3YtMmgtM1Y3aDN6TTcgN2g0djRIN1Y3em0wIDEwdi00aDR2NEg3em0xMCAwaC00di00aDR2NHptMC02aC00VjdoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZEdvbGRlbnJhdGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5aC03VjJoLTJ2N2gtMlYySDl2N0gydjJoN3YySDJ2Mmg3djdoMnYtN2gydjdoMnYtN2g3di0yaC03di0yaDd6bS05IDJoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSE1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExSDlWN0g3djEwaDJ2LTRoNnY0aDJWN2gtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSFBsdXNNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMUg2VjdINHYxMGgydi00aDZ2NGgyVjdoLTJ2NHptMTAgMGgtMlY5aC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyQXV0b1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTZINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3pNMy41IDE4aC0ydi0ySDB2NmgxLjV2LTIuNWgyVjIySDV2LTZIMy41ek0yMiAxOC41di0yaC0xLjV2MmgtMlYyMGgydjJIMjJ2LTJoMnYtMS41ek0xNi41IDE2SDEzdjZoMS41di0yaDEuMWwuOSAySDE4bC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHYtMWMwLS44LS43LTEuNS0xLjUtMS41em0wIDIuNWgtMnYtMWgydjF6TTExLjk3IDUuM2wtMS4wMiAyLjg5aDIuMUwxMi4wMyA1LjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC42OSAyIDYgNC42OSA2IDhzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTIuMDQgOS0uNjMtMS43OWgtMi44M0w5Ljk2IDExSDguNzRsMi42My03aDEuMjVsMi42MyA3aC0xLjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bS0uOTktMTRMNi44OCAxN2gxLjlsMS0yLjgxaDQuNDRsLjk5IDIuODFoMS45TDEyLjk4IDZoLTEuOTd6bS0uNjYgNi41OSAxLjYtNC41NWguMDlsMS42IDQuNTVoLTMuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZHJPZmZTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE4LjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxM3Y2aDEuNXYtMmgxLjFsLjkgMkgxOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMnYtMkgwdjZoMS41di0yLjVoMlYyMkg1di02SDMuNXYyem02LjUtMkg2LjV2NkgxMGMuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41SDh2LTNoMnYzem0xNC0uNWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHpNMTAuOTggNC4xNSA5LjQyIDIuNTljNS4xLTIuNDIgMTAuNDEgMi44OSA3Ljk5IDcuOTlsLTEuNTYtMS41NmMuODEtMi45Ni0xLjkxLTUuNjgtNC44Ny00Ljg3ek02LjM0IDIuMzQgNC45MyAzLjc2bDEuNjYgMS42NmMtMi40MiA1LjEgMi44OSAxMC40MSA3Ljk5IDcuOTlsMS42NiAxLjY2IDEuNDEtMS40MUw2LjM0IDIuMzR6bTEuODEgNC42NCA0Ljg3IDQuODdjLTIuOTYuODEtNS42OC0xLjkxLTQuODctNC44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhkck9uU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxOC41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTN2NmgxLjV2LTJoMS4xbC45IDJIMThsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV2MnptNi41LTJINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3ptMTQtLjVoLTJ2MmgtMS41di0yaC0ydi0xLjVoMnYtMkgyMnYyaDJWMjB6TTEyIDRjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDQtNC0xLjc5LTQtNCAxLjc5LTQgNC00bTAtMkM4LjY5IDIgNiA0LjY5IDYgOHMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIyaDh2LTdoLTN2LTRoLTVWOWgzVjJIOHY3aDN2Mkg2djRIM3Y3aDh2LTdIOHYtMmg4djJoLTN2N3pNMTAgN1Y0aDR2M2gtNHpNOSAxN3YzSDV2LTNoNHptMTAgMHYzaC00di0zaDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMZW5zQmx1ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zIC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiA1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTE1IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC0zLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tMTEgMTBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTE3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDUuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTggLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMyA4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0xNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS00LTEyYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMCA4LjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wLTRjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlnaHRNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMxLjY1IDAgMyAxLjM1IDMgM3MtMS4zNSAzLTMgMy0zLTEuMzUtMy0zIDEuMzUtMyAzLTNtMC0yYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXpNMiAxM2gyYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xSDJjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF6bTE4IDBoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXpNMTEgMnYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMVYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxem0wIDE4djJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxek01Ljk5IDQuNThhLjk5Ni45OTYgMCAwIDAtMS40MSAwIC45OTYuOTk2IDAgMCAwIDAgMS40MWwxLjA2IDEuMDZjLjM5LjM5IDEuMDMuMzkgMS40MSAwcy4zOS0xLjAzIDAtMS40MUw1Ljk5IDQuNTh6bTEyLjM3IDEyLjM3YS45OTYuOTk2IDAgMCAwLTEuNDEgMCAuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMS4wNiAxLjA2Yy4zOS4zOSAxLjAzLjM5IDEuNDEgMGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTEuMDYtMS4wNnptMS4wNi0xMC45NmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuMDYgMS4wNmMtLjM5LjM5LS4zOSAxLjAzIDAgMS40MXMxLjAzLjM5IDEuNDEgMGwxLjA2LTEuMDZ6TTcuMDUgMTguMzZhLjk5Ni45OTYgMCAwIDAgMC0xLjQxLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjA2IDEuMDZjLS4zOS4zOS0uMzkgMS4wMyAwIDEuNDFzMS4wMy4zOSAxLjQxIDBsMS4wNi0xLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYXRpb25EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTN2LTJoLTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZjLS45OC4xMS0xLjkxLjM4LTIuNzcuNzhsMS41MyAxLjUzYTYuOTk1IDYuOTk1IDAgMCAxIDguODcgOC44N2wxLjUzIDEuNTNjLjQtLjg2LjY3LTEuNzkuNzgtMi43N0gyM3pNNC40MSAyLjg2IDMgNC4yN2wyLjA0IDIuMDRBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2YzEuNzctLjIgMy4zOC0uOTEgNC42OS0xLjk4TDE5LjczIDIxbDEuNDEtMS40MUw0LjQxIDIuODZ6TTEyIDE5QTYuOTk1IDYuOTk1IDAgMCAxIDYuNDYgNy43M2w5LjgxIDkuODFBNi45NzIgNi45NzIgMCAwIDEgMTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhdGlvblNlYXJjaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTQgMTFBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMdGVNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE0aDN2Mkg0VjhoMnY2em0zLTRoMnY2aDJ2LTZoMlY4SDl2MnptMTIgMFY4aC01djhoNXYtMmgtM3YtMWgzdi0yaC0zdi0xaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMdGVQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGgzdjJIMVY4aDJ2NnptMi00aDJ2Nmgydi02aDJWOEg1djJ6bTcgNmg1di0yaC0zdi0xaDN2LTJoLTN2LTFoM1Y4aC01djh6bTEyLTVoLTJWOWgtMnYyaC0ydjJoMnYyaDJ2LTJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hY3JvT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC42NiA0LjkzYy4yNCAwIC40Ni4wNy42NC4ybC44MS41NmMtLjI5LjI0LS41NC41NC0uNzIuODdsMS42NiAxLjY2QzExLjAzIDguMTQgMTEgOC4wOCAxMSA4YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMS0uNDUgMS0xIDFjLS4wOCAwLS4xNC0uMDMtLjIyLS4wNGw0LjA2IDQuMDZhMy4xMyAzLjEzIDAgMCAwIDIuNjMtMy4wOWMwLS43MS0uMjUtMS4zOS0uNjctMS45My40My0uNTQuNjctMS4yMi42Ny0xLjkzYTMuMTQ1IDMuMTQ1IDAgMCAwLTMuNTctMy4xMUMxNC40NCAxLjgxIDEzLjMxIDEgMTIgMXMtMi40NC44MS0yLjkxIDEuOTZhMy4xMzIgMy4xMzIgMCAwIDAtMi41Mi43OGwxLjQyIDEuNDJjLjItLjEzLjQyLS4yMy42Ny0uMjN6bTYuNjggNi4xNGMtLjI0IDAtLjQ2LS4wNy0uNjQtLjJsLS44MS0uNTdjLjU1LS40NS45NC0xLjA5IDEuMDYtMS44M2wuODguNDJjLjQuMTkuNjYuNTkuNjYgMS4wMyAwIC42NC0uNTIgMS4xNS0xLjE1IDEuMTV6bS0uNjUtNS45NGMuMi0uMTMuNDItLjIuNjUtLjIuNjMgMCAxLjE0LjUxIDEuMTQgMS4xNCAwIC40NC0uMjUuODMtLjY2IDEuMDNsLS44OC40MmMtLjEyLS43NC0uNTEtMS4zOC0xLjA3LTEuODNsLjgyLS41NnpNMTIgM2MuNjIgMCAxLjEyLjQ5IDEuMTQgMS4xbC0uMTEgMS4wOUMxMi43MSA1LjA3IDEyLjM2IDUgMTIgNXMtLjcuMDctMS4wMi4xOWwtLjEyLTEuMDljLjAyLS42MS41Mi0xLjEgMS4xNC0xLjF6TTE5Ljk4IDE3LjE1QTguOTA5IDguOTA5IDAgMCAwIDIxIDEzYy0xLjUgMC0yLjkxLjM3LTQuMTUgMS4wMmwzLjEzIDMuMTN6TTMgMTNhOSA5IDAgMCAwIDkgOSA5IDkgMCAwIDAtOS05em0yLjQ0IDIuNDRjMS45LjcxIDMuNDIgMi4yMiA0LjEyIDQuMTJhNy4wNCA3LjA0IDAgMCAxLTQuMTItNC4xMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmw0LjQyIDQuNDJjLS4xOS40LS4zLjg0LS4zIDEuMjlhMy4xNDcgMy4xNDcgMCAwIDAgMy41OCAzLjExQTMuMTUgMy4xNSAwIDAgMCAxMiAxNWMuMDUgMCAuMTEtLjAxLjE2LS4wMWwxLjY0IDEuNjRBOC44NTMgOC44NTMgMCAwIDAgMTIgMjJjMi4wMiAwIDMuODgtLjY3IDUuMzgtMS44bDIuNCAyLjQgMS40MS0xLjQxTDIuODEgMi44MXptMTEuNjMgMTYuNzVjLjItLjU0LjQ3LTEuMDQuNzktMS41bC43Mi43MmMtLjQ3LjMxLS45Ny41OC0xLjUxLjc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWFCbHVldG9vdGhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNi4xN1YzaDZ2NGgtNHYxLjE3bC0yLTJ6TTE5LjQyIDE1IDIyIDE3LjU3bC0uOC44LTYuNzgtNi43OC44LS44IDIuNzUgMi43NVY5aC42TDIyIDEyLjQzIDE5LjQyIDE1em0tLjI1LTEuNDUgMS4xMy0xLjEzLTEuMTMtMS4xM3YyLjI2em0yLjAyIDcuNjQtMS40MSAxLjQxLTMuOTgtMy45OC0uNTguNTgtLjg1LS44NS41OC0uNThMMTEgMTMuODNWMTdjMCAyLjIxLTEuNzggNC0zLjk5IDRTMyAxOS4yMSAzIDE3czEuNzktNCA0LjAxLTRjLjczIDAgMS40MS4yMSAyIC41NXYtMS43MkwxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZWRpYUJsdWV0b290aE9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05IDMgLjAxIDEwLjU1Yy0uNi0uMzQtMS4yOC0uNTUtMi0uNTVhNC4wMDEgNC4wMDEgMCAxIDAgMCA4QzkuMjMgMjEgMTEgMTkuMjEgMTEgMTdWN2g0VjNIOXptMTIgOS40M0wxNy41NyA5aC0uNnY0LjU1bC0yLjc1LTIuNzUtLjg1Ljg1TDE2LjczIDE1bC0zLjM1IDMuMzUuODUuODUgMi43NS0yLjc1VjIxaC42TDIxIDE3LjU3IDE4LjQyIDE1IDIxIDEyLjQzem0tMi44My0xLjEzIDEuMTMgMS4xMy0xLjEzIDEuMTNWMTEuM3ptMS4xMyA2LjI3LTEuMTMgMS4xM3YtMi4yNmwxLjEzIDEuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZWRpY2F0aW9uTGlxdWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDEydjJIM3pNMiAyMWgxNFY2SDJ2MTV6bTMtOWgyLjVWOS41aDNWMTJIMTN2M2gtMi41djIuNWgtM1YxNUg1di0zek0yMCA2Yy0xLjY4IDAtMyAxLjc2LTMgNCAwIDEuNzcuODMgMy4yMiAyIDMuNzZWMjFoMnYtNy4yNGMxLjE3LS41NCAyLTEuOTkgMi0zLjc2IDAtMi4yNC0xLjMyLTQtMy00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSAxNUg4di0zaDIuNVY5LjVoM1YxMkgxNnYzaC0yLjV2Mi41aC0zVjE1ek0xOSA4djExYzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjhjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMnptLTIgMEg3djExaDEwVjh6bTEtNUg2djJoMTJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vYmlsZUZyaWVuZGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNy4wMSAxMy40N2wtMi41NS0yLjU1LTEuMjcgMS4yN0w3IDE2bDcuMTktNy4xOS0xLjI3LTEuMjctNS45MSA1LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9iaWxlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djguNjFsMiAyVjNjMC0xLjEtLjktMi0yLTJIN2MtLjcxIDAtMS4zMy4zNy0xLjY4LjkzTDguMzkgNUgxN3pNMS40OSAzLjc2IDUgNy4yN1YyMWMwIDEuMS45IDIgMiAyaDEwYzEuMDIgMCAxLjg1LS43NyAxLjk4LTEuNzVsMS43MiAxLjcyIDEuNDEtMS40MUwyLjkgMi4zNSAxLjQ5IDMuNzZ6TTcgOS4yNyAxNi43MyAxOUg3VjkuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2JpbGVkYXRhT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA2LjgyIDEuNTkgMS41OUwxOSA3bC00LTQtNCA0IDEuNDEgMS40MUwxNCA2LjgydjQuMzVsMiAyek0xLjM5IDQuMjIgOCAxMC44M3Y2LjM1bC0xLjU5LTEuNTlMNSAxN2w0IDQgNC00LTEuNDEtMS40MUwxMCAxNy4xOHYtNC4zNWw5Ljc4IDkuNzggMS40MS0xLjQyTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVOaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDhjLS4zNCAwLS42OC0uMDItMS4wMS0uMDcgMS45MS0yLjE2IDMuMDEtNC45OCAzLjAxLTcuOTNzLTEuMS01Ljc3LTMuMDEtNy45M0M4LjgyIDQuMDIgOS4xNiA0IDkuNSA0bTAtMmMtMS44MiAwLTMuNTMuNS01IDEuMzUgMi45OSAxLjczIDUgNC45NSA1IDguNjVzLTIuMDEgNi45Mi01IDguNjVjMS40Ny44NSAzLjE4IDEuMzUgNSAxLjM1IDUuNTIgMCAxMC00LjQ4IDEwLTEwUzE1LjAyIDIgOS41IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2RlU3RhbmRieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMCAxMC00LjQ5IDEwLTEwUzE3LjUxIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMtOGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25pdG9ySGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjNoMlY2aDE2djNoMlY2YzAtMS4xLS45LTItMi0yek0yMCAxOEg0di0zSDJ2M2MwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi0zaC0ydjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljg5IDcuNTVjLS4zNC0uNjgtMS40NS0uNjgtMS43OSAwTDEwIDEzLjc2bC0xLjExLTIuMjFBLjk4OC45ODggMCAwIDAgOCAxMUgydjJoNS4zOGwxLjcyIDMuNDVjLjE4LjM0LjUyLjU1LjkuNTVzLjcyLS4yMS44OS0uNTVMMTQgMTAuMjRsMS4xMSAyLjIxYy4xNy4zNC41MS41NS44OS41NWg2di0yaC01LjM4bC0xLjczLTMuNDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25pdG9yV2VpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTEyIDZjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0tMSAzLjVoLTF2LTFoMXYxem0xLjUgMGgtMXYtMWgxdjF6bTEuNSAwaC0xdi0xaDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5lYXJieUVycm9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA3LjU3IDQuNDIgNC40MkwxMiAxNi40MWwtNC40Mi00LjQyTDEyIDcuNTd6bTAgMTEuNjItNy4yLTcuMiA3LjItNy4yIDYgNlY3LjE2bC00LjU4LTQuNThjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC04LjAxIDhjLS43OC43OC0uNzggMi4wNSAwIDIuODNsOC4wMSA4Yy43OC43OCAyLjA1Ljc4IDIuODMgMEwxOCAxNi44MnYtMy42M2wtNiA2em04IC44MWgydjJoLTJ2LTJ6bTItMTBoLTJ2OGgydi04XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZWFyYnlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjQxIDEzLjQyIDE4LjgzIDE2bC0xLjgxLTEuODFMMTkuMiAxMiAxMiA0LjggOS44MSA2Ljk5IDggNS4xN2wyLjU4LTIuNThjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBsOCA4Yy43OS43OC43OSAyLjA0IDAgMi44M3ptLS4yMiA3Ljc3LTEuNDEgMS40MUwxNiAxOC44M2wtMi41OCAyLjU4Yy0uNzguNzgtMi4wNS43OC0yLjgzIDBsLTgtOGMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNMNS4xNyA4IDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOSAxOC4zOHptLTctNC4xNy0xLjM5LTEuMzktLjguOEw3LjU4IDEybC44LS44LTEuNC0xLjM5TDQuOCAxMmw3LjIgNy4yIDIuMTktMi4xOHpNMTYuNDIgMTIgMTIgNy41OGwtLjguOCA0LjQyIDQuNDIuOC0uOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIyaDIwVjJMMiAyMnptMTgtMmgtM1Y5LjgzbDMtM1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTMuMzIgMTAuODRDMTQuMzQgMTQuMyAxMy4yIDE0IDEyIDE0Yy0xLjIgMC0yLjM0LjMtMy4zMi44NEwyLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTUuNzYgNS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtXaWZpMkJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTQuNzggOS4zOEE4Ljg1MyA4Ljg1MyAwIDAgMCAxMiAxMmMtMS43NiAwLTMuNC41LTQuNzggMS4zOGwtNC4zLTQuM0M1LjUxIDcuMDggOC42NyA2IDEyIDZzNi40OSAxLjA4IDkuMDggMy4wN2wtNC4zIDQuMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXR3b3JrV2lmaTNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0ek0yLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTIuODUgMi44NkExMC45NDUgMTAuOTQ1IDAgMCAwIDEyIDEwYy0yLjMxIDAtNC40Ni43MS02LjIzIDEuOTNMMi45MiA5LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV0d29ya1dpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTAgNGMtMi44NiAwLTUuNS45NC03LjY1IDIuNTFMMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3bC0xLjQzIDEuNDNBMTIuOTkgMTIuOTkgMCAwIDAgMTIgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5mYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMThINFY0aDE2djE2ek0xOCA2aC01Yy0xLjEgMC0yIC45LTIgMnYyLjI4Yy0uNi4zNS0xIC45OC0xIDEuNzIgMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLS43NC0uNC0xLjM4LTEtMS43MlY4aDN2OEg4VjhoMlY2SDZ2MTJoMTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5pZ2h0bGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDRjLjM0IDAgLjY4LjAyIDEuMDEuMDdDMTMuMSA2LjIzIDEyIDkuMDUgMTIgMTJzMS4xIDUuNzcgMy4wMSA3LjkzYy0uMzMuMDUtLjY3LjA3LTEuMDEuMDctNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOG0wLTJDOC40OCAyIDQgNi40OCA0IDEyczQuNDggMTAgMTAgMTBjMS44MiAwIDMuNTMtLjUgNS0xLjM1LTIuOTktMS43My01LTQuOTUtNS04LjY1czIuMDEtNi45MiA1LTguNjVBOS45NzMgOS45NzMgMCAwIDAgMTQgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS4wOCAxMS4wMy0yLjEyLTIuMTJMNyAxNC44NlYxN2gyLjF6TTE2Ljg1IDkuMjdjLjItLjIuMi0uNTEgMC0uNzFsLTEuNDEtMS40MWMtLjItLjItLjUxLS4yLS43MSAwbC0xLjA2IDEuMDYgMi4xMiAyLjEyIDEuMDYtMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhc3N3b3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3aDIwdjJIMnYtMnptMS4xNS00LjA1TDQgMTEuNDdsLjg1IDEuNDggMS4zLS43NS0uODUtMS40OEg3di0xLjVINS4zbC44NS0xLjQ3TDQuODUgNyA0IDguNDcgMy4xNSA3bC0xLjMuNzUuODUgMS40N0gxdjEuNWgxLjdsLS44NSAxLjQ4IDEuMy43NXptNi43LS43NSAxLjMuNzUuODUtMS40OC44NSAxLjQ4IDEuMy0uNzUtLjg1LTEuNDhIMTV2LTEuNWgtMS43bC44NS0xLjQ3LTEuMy0uNzVMMTIgOC40NyAxMS4xNSA3bC0xLjMuNzUuODUgMS40N0g5djEuNWgxLjdsLS44NSAxLjQ4ek0yMyA5LjIyaC0xLjdsLjg1LTEuNDctMS4zLS43NUwyMCA4LjQ3IDE5LjE1IDdsLTEuMy43NS44NSAxLjQ3SDE3djEuNWgxLjdsLS44NSAxLjQ4IDEuMy43NS44NS0xLjQ4Ljg1IDEuNDggMS4zLS43NS0uODUtMS40OEgyM3YtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF0dGVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTIgOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0uMDIgNmMtLjc0IDAtMS4zNy40LTEuNzIgMWgtMi41NGExLjk4IDEuOTggMCAwIDAtMy40NCAwSDguNDFsMy4wNy0zLjA3Yy4xNy4wNC4zNC4wNy41Mi4wNyAxLjEgMCAyLS45IDItMiAwLS4xOC0uMDMtLjM1LS4wNy0uNTFsMy41Ni0zLjU2Yy4xNi4wNC4zMy4wNy41MS4wNyAxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDJjMCAuMTguMDMuMzUuMDcuNTFsLTMuNTYgMy41NmMtLjE2LS4wNC0uMzMtLjA3LS41MS0uMDctMS4xIDAtMiAuOS0yIDIgMCAuMTguMDMuMzUuMDcuNTFsLTMuNTYgMy41NkM2LjM1IDE2LjAzIDYuMTggMTYgNiAxNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDJjLjc0IDAgMS4zNy0uNCAxLjcyLTFoMi41N2ExLjk4IDEuOTggMCAwIDAgMy40NCAwaDIuNTVjLjM0LjYuOTggMSAxLjcyIDEgMS4xIDAgMi0uOSAyLTItLjAyLTEuMS0uOTItMi0yLjAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaGlzaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDYuMThWMmgtMnY0LjE4QzEzLjg0IDYuNiAxMyA3LjcgMTMgOXMuODQgMi40IDIgMi44MlYxNWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNHYtMS4xN2wxLjU5IDEuNTlMMTAgMTQgNSA5djZjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNnYtMy4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgycy0uODQtMi40LTItMi44MnpNMTYgMTBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQ5IDEwLjVWMTVoMS4xNVY5aC0uODdsLTEuNzYgMS4yNy41OC44OXpNMTEuNDcgMTAuMDVjLjUgMCAuODEuMzIuODEuNzIgMCAuMzctLjE0LjY0LS41NCAxLjA2LS4zNi4zOC0xLjA2IDEuMDgtMi4xMyAyLjE1VjE1aDMuODl2LS45OWgtMi4zN2wtLjAzLS4wNWMuNjgtLjY4IDEuMTUtMS4xNCAxLjQtMS4zOS42MS0uNi45Mi0xLjIyLjkyLTEuODYgMC0uMjQtLjA1LTEuMDQtLjkxLTEuNDgtLjQ3LS4yMy0xLjI2LS4zNi0xLjk1LS4wMy0uODIuMzktLjk5IDEuMTMtMSAxLjE1bDEuMDEuNDJjLjEtLjMzLjM4LS43Mi45LS43MnpNMTYuOTkgMTMuOTRjLS44MyAwLS45OS0uNzYtMS4wMi0uODZsLTEuMDMuNDFjLjQ1IDEuNTkgMi4wMSAxLjUxIDIuMDUgMS41MSAxLjIgMCAxLjY4LS43MiAxLjc2LS44NS4zMi0uNDkuMzYtMS4yNC0uMDEtMS43Ni0uMTctLjI0LS40LS40MS0uNjgtLjUydi0uMDdjLjItLjEuMzctLjI2LjUyLS40OC4yNi0uNDEuMzEtMS4wNy0uMDItMS41Ny0uMDgtLjExLS41My0uNzUtMS42Mi0uNzUtMS4yNiAwLTEuNzQuOS0xLjg1IDEuMjRsLjk5LjQxYy4xMS0uMzIuMzUtLjY0Ljg1LS42NC40NCAwIC43NS4yNi43NS42NSAwIC41OC0uNTUuNzItLjg4LjcyaC0uNDZ2MWguNWMuNTYgMCAxLjA0LjI0IDEuMDQuNzkgMCAuNDktLjQ4Ljc3LS44OS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlMZXNzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMjBWNGgydjdsMi41LTEuNUwxMiAxMVY0aDV2Ny4wOGMuMzMtLjA1LjY2LS4wOCAxLS4wOHMuNjcuMDMgMSAuMDhWNGMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDcuMjZjLS40Mi0uNi0uNzUtMS4yOC0uOTctMkg1em0xMy03Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLTEuMjUgNy41di01bDQgMi41LTQgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJpY2VDaGFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTdoMnYtMWgxYy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTFIOHYtMWg0VjhoLTJWN0g4djFIN2MtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoM3YxSDZ2MmgydjF6TTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDRWNmgxNnYxMnptLTYtOCAyLTIgMiAybTAgNC4yNS0yIDItMi0yXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmljZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxM1Y5YzAtLjU1LS40NS0xLTEtMUg2VjZoNVY0SDguNVYzaC0ydjFINWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoNHYySDR2MmgyLjV2MWgydi0xSDEwYy41NSAwIDEtLjQ1IDEtMXpNMTkuNTkgMTIuNTJsLTUuNjYgNS42NS0yLjgzLTIuODMtMS40MSAxLjQyTDEzLjkzIDIxIDIxIDEzLjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHVuY2hDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZoLTFWMUg2djVINWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yek04IDNoOHYzSDhWM3ptMTEgMTdINVY4aDE0djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA5Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMCA4LjVjLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41czEuNTctMy41IDMuNS0zLjUgMy41IDEuNTcgMy41IDMuNS0xLjU3IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDExLjVoLTF2Mi43MWwxLjY0IDEuNjQuNzEtLjcxLTEuMzUtMS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVF1aXogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6bS02LjQ5LTUuODRjLjQxLS43MyAxLjE4LTEuMTYgMS42My0xLjguNDgtLjY4LjIxLTEuOTQtMS4xNC0xLjk0LS44OCAwLTEuMzIuNjctMS41IDEuMjNsLTEuMzctLjU3QzExLjUxIDUuOTYgMTIuNTIgNSAxMy45OSA1YzEuMjMgMCAyLjA4LjU2IDIuNTEgMS4yNi4zNy42LjU4IDEuNzMuMDEgMi41Ny0uNjMuOTMtMS4yMyAxLjIxLTEuNTYgMS44MS0uMTMuMjQtLjE4LjQtLjE4IDEuMThoLTEuNTJjLjAxLS40MS0uMDYtMS4wOC4yNi0xLjY2em0tLjU2IDMuNzljMC0uNTkuNDctMS4wNCAxLjA1LTEuMDQuNTkgMCAxLjA0LjQ1IDEuMDQgMS4wNCAwIC41OC0uNDQgMS4wNS0xLjA0IDEuMDUtLjU4IDAtMS4wNS0uNDctMS4wNS0xLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUk1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuOCA3LjIgOSAxMEg3TDUuODcgNy4zM0g0VjEwSDJWMmg1YzEuMTMgMCAyIC44NyAyIDJ2MS4zM2MwIC44LS41MyAxLjU0LTEuMiAxLjg3ek03IDRINHYxLjMzaDNWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43NCAxOC4zM0E5Ljk4NCA5Ljk4NCAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwYTkuOTg0IDkuOTg0IDAgMCAwIDcuMTEtMi45N2MuMDMtLjAzLjA1LS4wNi4wNy0uMDguMi0uMi4zOS0uNDEuNTYtLjYyek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4YzAgMS44NS0uNjMgMy41NC0xLjY5IDQuOWwtMS40My0xLjQzYy42OS0uOTggMS4xLTIuMTcgMS4xLTMuNDYgMC0zLjMxLTIuNjktNi02LTZzLTYgMi42OS02IDYgMi42OSA2IDYgNmMxLjMgMCAyLjUxLS40MiAzLjQ5LTEuMTNsMS40MiAxLjQyQTcuODIyIDcuODIyIDAgMCAxIDEyIDIwem0xLjkyLTcuNDljLjE3LS42Ni4wMi0xLjM4LS40OS0xLjlsLS4wMi0uMDJjLS43Ny0uNzctMi0uNzgtMi43OC0uMDQtLjAxLjAxLS4wMy4wMi0uMDUuMDQtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wuMDIuMDJjLjUyLjUxIDEuMjUuNjcgMS45MS40OWwxLjUxIDEuNTFjLS42LjM2LTEuMjkuNTgtMi4wNC41OC0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDRjMCAuNzMtLjIxIDEuNDEtLjU2IDJsLTEuNS0xLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVtZW1iZXJNZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMjBIN3YtMWgxMHYxem0wLTNIN3YtLjQ4YzEuNDctLjk5IDMuMjItMS41MiA1LTEuNTJzMy41My41MyA1IDEuNTJWMTh6bTAtMi43OWMtMS41LS43Ny0zLjItMS4yMS01LTEuMjFzLTMuNS40NC01IDEuMjFWNmgxMHY5LjIxek0xNyA0SDdWM2gxMHYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxM2MxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzZXRUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOFY1YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNHYyaDh2LTJoNGMxLjEgMCAxLjk5LS45IDEuOTktMnYtNUgyMmMwLTEuMS0uOS0yLTItMmgtNy4xN2wxLjgzLTEuODMtMS40MS0xLjQxQzkuNjkgMTAuMzEgMTAuODggOS4xMiA5IDExbDQuMjQgNC4yNCAxLjQxLTEuNDFMMTIuODMgMTJIMjB2NUg0VjVoMTZ2M2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdGFydEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MwLTEuNjUuNjctMy4xNSAxLjc2LTQuMjRMNi4zNCA3LjM0QTguMDE0IDguMDE0IDAgMCAwIDQgMTNjMCA0LjA4IDMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODMtLjQ4LTUtMi45NC01LTUuOTF6bTE0IDBjMC00LjQyLTMuNTgtOC04LTgtLjA2IDAtLjEyLjAxLS4xOC4wMWwxLjA5LTEuMDlMMTEuNSAyLjUgOCA2bDMuNSAzLjUgMS40MS0xLjQxLTEuMDgtMS4wOGMuMDYgMCAuMTItLjAxLjE3LS4wMSAzLjMxIDAgNiAyLjY5IDYgNiAwIDIuOTctMi4xNyA1LjQzLTUgNS45MXYyLjAyYzMuOTUtLjQ5IDctMy44NSA3LTcuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXZpZXdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNSAxLjU3LTMuNDNMMTcgMTBsLTMuNDMtMS41N0wxMiA1bC0xLjU3IDMuNDNMNyAxMGwzLjQzIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSc3ZwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA5aDEuNWwtMS43NSA2aC0xLjVMMTIuNSA5SDE0bDEgMy40M0wxNiA5ek01LjEgMTIuOSA2IDE1SDQuNWwtLjg1LTJIMi41djJIMVY5aDMuNWMuODUgMCAxLjUuNjUgMS41IDEuNXYxYzAgLjYtLjQgMS4xNS0uOSAxLjR6bS0uNi0yLjRoLTJ2MWgydi0xem0xNyAyLjVoLTJ2MkgxOFY5aDMuNWMuODMgMCAxLjUuNjcgMS41IDEuNXYxYzAgLjgzLS42NyAxLjUtMS41IDEuNXptMC0yLjVoLTJ2MWgydi0xek0xMS41IDl2MS41aC0zdi43NWgyYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFIN3YtMS41aDN2LS43NUg3Ljc1Yy0uNDEgMC0uNzUtLjM0LS43NS0uNzV2LTJjMC0uNTUuNDUtMSAxLTFoMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuTG9ja0xhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNUgzYy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS0yIDEySDVWN2gxNHYxMHptLTktMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF2LTFhMiAyIDAgMSAwLTQgMHYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMXptLjgtNmMwLS42Ni41NC0xLjIgMS4yLTEuMnMxLjIuNTQgMS4yIDEuMnYxaC0yLjR2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5Mb2NrUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE2aDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXYtMWEyIDIgMCAxIDAtNCAwdjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxem0uOC02YzAtLjY2LjU0LTEuMiAxLjItMS4yczEuMi41NCAxLjIgMS4ydjFoLTIuNHYtMXpNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMThIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuTG9ja1JvdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMi4zIDEzLjc3LTIuNTctMi41Ny0xLjQxIDEuNDEgMi4yMiAyLjIyLTUuNjYgNS42NkwzLjU2IDkuMTdsNS42Ni01LjY2IDIuMSAyLjEgMS40MS0xLjQxLTIuNDUtMi40NWExLjQ5IDEuNDkgMCAwIDAtMi4xMiAwTDEuOCA4LjExYTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsMTIuMDIgMTIuMDJjLjU5LjU5IDEuNTQuNTkgMi4xMiAwbDYuMzYtNi4zNmMuNTktLjU5LjU5LTEuNTQgMC0yLjEyek03LjUyIDIxLjQ4QTEwLjQ4NyAxMC40ODcgMCAwIDEgMS41NSAxM0guMDVDLjU2IDE5LjE2IDUuNzEgMjQgMTIgMjRsLjY2LS4wMy0zLjgxLTMuODItMS4zMyAxLjMzek0xNS4wNSAxMGg1Yy41NSAwIDEtLjQ1IDEtMVY1YzAtLjU1LS40NS0xLTEtMXYtLjVhMi41IDIuNSAwIDAgMC01IDBWNGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS44LTYuNWMwLS45NC43Ni0xLjcgMS43LTEuN3MxLjcuNzYgMS43IDEuN1Y0aC0zLjR2LS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ4IDIuNTJjMy4yNyAxLjU1IDUuNjEgNC43MiA1Ljk3IDguNDhoMS41QzIzLjQ0IDQuODQgMTguMjkgMCAxMiAwbC0uNjYuMDMgMy44MSAzLjgxIDEuMzMtMS4zMnptLTYuMjUtLjc3YTEuNDkgMS40OSAwIDAgMC0yLjEyIDBMMS43NSA4LjExYTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsMTIuMDIgMTIuMDJjLjU5LjU5IDEuNTQuNTkgMi4xMiAwbDYuMzYtNi4zNmMuNTktLjU5LjU5LTEuNTQgMC0yLjEyTDEwLjIzIDEuNzV6bTQuNiAxOS40NEwyLjgxIDkuMTdsNi4zNi02LjM2IDEyLjAyIDEyLjAyLTYuMzYgNi4zNnptLTcuMzEuMjlBMTAuNDg3IDEwLjQ4NyAwIDAgMSAxLjU1IDEzSC4wNUMuNTYgMTkuMTYgNS43MSAyNCAxMiAyNGwuNjYtLjAzLTMuODEtMy44MS0xLjMzIDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5TZWFyY2hEZXNrdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE4aDE2YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDVjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMnpNNCA1aDE2djExSDRWNXpNMSAxOWgyMnYySDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk3IDcuNTNjLTEuMzctMS4zNy0zLjU4LTEuMzctNC45NSAwcy0xLjM3IDMuNTggMCA0Ljk1YzEuMTggMS4xOCAzIDEuMzQgNC4zNi40N2wyLjA5IDIuMDkgMS4wNi0xLjA2LTIuMDktMi4wOWMuODctMS4zNi43Mi0zLjE4LS40Ny00LjM2em0tMS4wNiAzLjg4Yy0uNzguNzgtMi4wNS43OC0yLjgzIDAtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNzMi4wNS0uNzggMi44MyAwYy43OC43OS43OCAyLjA1IDAgMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjcmVlbnNob3RNb25pdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgNy41SDlWNkg1djRoMS41ek0xOSAxMmgtMS41djIuNUgxNVYxNmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuc2hvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxek05LjUgOC41SDEyVjdIOHY0aDEuNVY4LjV6TTEyIDE3aDR2LTRoLTEuNXYyLjVIMTJWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZFN0b3JhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDR2MTZINlY4LjgzTDEwLjgzIDRIMThtMC0yaC04TDQgOHYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgN2gydjRIOXptMyAwaDJ2NGgtMnptMyAwaDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlY3VyaXR5VXBkYXRlR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxem0tMSA2LjA1LTEuNDEtMS40MS0zLjU0IDMuNTQtMS40MS0xLjQxLTEuNDEgMS40MUwxMS4wNSAxNSAxNiAxMC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlY3VyaXR5VXBkYXRlV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yek0xMSA3aDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VjdXJpdHlVcGRhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDIxSDd2LTFoMTB2MXptMC0zSDdWNmgxMHYxMnpNNyA0VjNoMTB2MUg3em05IDgtNCA0LTQtNCAxLjQxLTEuNDFMMTEgMTIuMTdWOGgydjQuMTdsMS41OS0xLjU5TDE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNDEtOC44My04LjgzYy0uMzctLjM3LS44OC0uNTgtMS40MS0uNThINGMtMS4xIDAtMiAuOS0yIDJ2Ny4xN2MwIC41My4yMSAxLjA0LjU5IDEuNDFsOC44MyA4LjgzYy43OC43OCAyLjA1Ljc4IDIuODMgMGw3LjE3LTcuMTdjLjc4LS43OC43OC0yLjA0LS4wMS0yLjgzek0xMi44MyAyMCA0IDExLjE3VjRoNy4xN0wyMCAxMi44MyAxMi44MyAyMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VuZFRvTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA4IDQgNC00IDQtMS40MS0xLjQxTDE4LjE3IDEzSDEzdi0yaDUuMTdsLTEuNTktMS41OUwxOCA4ek03IDEuMDEgMTcgMWMxLjEgMCAyIC45IDIgMnY0aC0yVjZIN3YxMmgxMHYtMWgydjRjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWM2MwLTEuMS45LTEuOTkgMi0xLjk5ek03IDIxaDEwdi0xSDd2MXpNNyA0aDEwVjNIN3YxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NTdWdnZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTNjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMW0wLTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem04LjUtMiAxLjA5LTIuNDFMMjIgNS41bC0yLjQxLTEuMDlMMTguNSAybC0xLjA5IDIuNDFMMTUgNS41bDIuNDEgMS4wOUwxOC41IDl6bTIuNzggMy43MkwyMC41IDExbC0uNzggMS43Mi0xLjcyLjc4IDEuNzIuNzguNzggMS43Mi43OC0xLjcyTDIzIDEzLjVsLTEuNzItLjc4ek0xNi4yNSAxNGMwLS4xMiAwLS4yNS0uMDEtLjM3bDEuOTQtMS40Ny0yLjUtNC4zMy0yLjI0Ljk0Yy0uMi0uMTMtLjQyLS4yNi0uNjQtLjM3TDEyLjUgNmgtNWwtLjMgMi40MWMtLjIyLjExLS40My4yNC0uNjQuMzdsLTIuMjQtLjk1LTIuNSA0LjMzIDEuOTQgMS40N2MtLjAxLjEyLS4wMS4yNS0uMDEuMzdzMCAuMjUuMDEuMzdsLTEuOTQgMS40NyAyLjUgNC4zMyAyLjI0LS45NGMuMi4xMy40Mi4yNi42NC4zN2wuMyAyLjRoNWwuMy0yLjQxYy4yMi0uMTEuNDMtLjIzLjY0LS4zN2wyLjI0Ljk0IDIuNS00LjMzLTEuOTQtMS40N2MuMDEtLjExLjAxLS4yNC4wMS0uMzZ6bS0xLjQyIDMuNjQtMS43My0uNzNjLS41Ni42LTEuMyAxLjA0LTIuMTMgMS4yM0wxMC43MyAyMEg5LjI3bC0uMjMtMS44NmMtLjgzLS4xOS0xLjU3LS42My0yLjEzLTEuMjNsLTEuNzMuNzMtLjczLTEuMjcgMS40OS0xLjEzYy0uMTItLjM5LS4xOC0uOC0uMTgtMS4yMyAwLS40My4wNi0uODQuMTgtMS4yM2wtMS40OS0xLjEzLjczLTEuMjcgMS43My43M2MuNTYtLjYgMS4zLTEuMDQgMi4xMy0xLjIzTDkuMjcgOGgxLjQ3bC4yMyAxLjg2Yy44My4xOSAxLjU3LjYzIDIuMTMgMS4yM2wxLjczLS43My43MyAxLjI3LTEuNDkgMS4xM2MuMTIuMzkuMTguOC4xOCAxLjIzIDAgLjQzLS4wNi44NC0uMTggMS4yM2wxLjQ5IDEuMTMtLjczIDEuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc1N5c3RlbURheWRyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE3SDljLTIuMjEgMC00LTEuNzktNC00YTMuOTggMy45OCAwIDAgMSAzLjIyLTMuOTJBNC41MTQgNC41MTQgMCAwIDEgMTIgN2MxLjk1IDAgMy42NiAxLjI4IDQuMjYgMy4wOSAxLjU4LjM2IDIuNzQgMS43NSAyLjc0IDMuNDEgMCAxLjkzLTEuNTcgMy41LTMuNSAzLjV6bS02Ljc2LTUuOThDNy43NCAxMS4xNSA3IDExLjk5IDcgMTNjMCAxLjEuOSAyIDIgMmg2LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjVoLS44N2wtLjE3LS44NkEyLjQ5NiAyLjQ5NiAwIDAgMCAxMiA5Yy0uOTYgMC0xLjg0LjU3LTIuMjYgMS40NWwtLjI3LjU3aC0uNzN6TTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNoYXJlTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjAyIDE5LjkzdjIuMDJjMi4wMS0uMiAzLjg0LTEgNS4zMi0yLjIxbC0xLjQyLTEuNDNhNy45NDEgNy45NDEgMCAwIDEtMy45IDEuNjJ6TTQuMDMgMTJjMC00LjA1IDMuMDMtNy40MSA2Ljk1LTcuOTNWMi4wNUM1Ljk1IDIuNTggMi4wMyA2Ljg0IDIuMDMgMTJjMCA1LjE2IDMuOTIgOS40MiA4Ljk1IDkuOTV2LTIuMDJjLTMuOTItLjUyLTYuOTUtMy44OC02Ljk1LTcuOTN6TTE5Ljk1IDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMmwtMS40MyAxLjQzYy44NiAxLjEgMS40NCAyLjQzIDEuNjIgMy44OXpNMTguMzQgNC4yNmE5Ljk4MSA5Ljk4MSAwIDAgMC01LjMyLTIuMjF2Mi4wMmMxLjQ2LjE4IDIuNzkuNzYgMy45IDEuNjJsMS40Mi0xLjQzek0xOC4zMyAxNi45bDEuNDMgMS40MkE5Ljk0OSA5Ljk0OSAwIDAgMCAyMS45NyAxM2gtMi4wMmE3Ljk0MSA3Ljk0MSAwIDAgMS0xLjYyIDMuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTEuMUMxNiA4LjYxIDE0LjEgNyAxMiA3cy00IDEuNjEtNCA0LjFjMCAxLjY2IDEuMzMgMy42MyA0IDUuOSAyLjY3LTIuMjcgNC00LjI0IDQtNS45em0tNCAuOWExLjA3MSAxLjA3MSAwIDAgMSAwLTIuMTRBMS4wNzEgMS4wNzEgMCAwIDEgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9ydGN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgNS0xLjQxIDEuNDFMMTUgNy44MyAxNy4xNyAxMEg4Yy0yLjc2IDAtNSAyLjI0LTUgNXY0aDJ2LTRjMC0xLjY1IDEuMzUtMyAzLTNoOS4xN0wxNSAxNC4xN2wtMS40MSAxLjQxTDE1IDE3bDYtNi02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhcjBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjJoMjBWMkwyIDIyem0xOC0ySDYuODNMMjAgNi44M1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyNEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMmgyMFYyTDIgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhckFsdDFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE0aDN2Nkg1di02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsQ2VsbHVsYXJBbHQyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNGgzdjZINXYtNnptNi01aDN2MTFoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA0aDN2MTZoLTNWNHpNNSAxNGgzdjZINXYtNnptNi01aDN2MTFoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGgydi04aC0ydjh6bTAgNGgydi0yaC0ydjJ6bS0yLTJ2MkgyTDIyIDJ2NmgtMlY2LjgzTDYuODMgMjBIMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhckNvbm5lY3RlZE5vSW50ZXJuZXQ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGgydi04aC0ydjh6bTAgNGgydi0yaC0ydjJ6TTIgMjJoMTZWOGg0VjJMMiAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyTm9TaW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjgzIDVIMTd2OS4xMWwyIDJWNWMwLTEuMS0uOS0yLTItMmgtN0w3Ljk0IDUuMDZsMS40MiAxLjQyTDEwLjgzIDV6bTEwLjQzIDE2LjIxTDMuNzkgMy43NCAyLjM4IDUuMTUgNSA3Ljc3VjE5YTIgMiAwIDAgMCAyIDJoMTEuMjNsMS42MiAxLjYyIDEuNDEtMS40MXpNNyAxOVY5Ljc5TDE2LjIzIDE5SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhck5vZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTNoLTl2OUgyTDIyIDJ2MTF6bS0xIDIuNDFMMTkuNTkgMTRsLTIuMDkgMi4wOUwxNS40MSAxNCAxNCAxNS40MWwyLjA5IDIuMDlMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhck51bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDYuODNWMjBINi44M0wyMCA2LjgzTTIyIDIgMiAyMmgyMFYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsQ2VsbHVsYXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDEtOC4zMSA4LjMxIDguMzEgOC4zek00LjkxIDQuMzYgMy41IDUuNzdsNi4zNiA2LjM3TDEgMjFoMTcuNzNsMiAyIDEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbFdpZmkwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0ek0yLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdMMTIgMTguMTdsLTkuMDgtOS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaTRCYXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OCAxMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGw2LjM1IDYuMzZMMTIgMjFsMy4wNS0zLjA1VjE1YzAtLjQ1LjA5LS44OC4yMy0xLjI5LjU0LTEuNTcgMi4wMS0yLjcxIDMuNzctMi43MWgyLjkzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaTRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDIxLjQ5IDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdsMTEuNjMgMTQuNDkuMDEuMDEuMDEtLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaUJhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjF2LTloOC45OUwyNCA4Ljk4ek0xOS41OSAxNGwtMi4wOSAyLjA5LS4zLS4zTDE1LjQxIDE0IDE0IDE1LjQxbDEuNzkgMS43OS4zLjNMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDEgMTkuNTkgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxdi05aDguOTlMMjQgOC45OHpNMTkuNTkgMTRsLTIuMDkgMi4wOS0uMy0uM0wxNS40MSAxNCAxNCAxNS40MWwxLjc5IDEuNzkuMy4zTDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxIDE5LjU5IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMuNjQgN2MtLjQ1LS4zNC00LjkzLTQtMTEuNjQtNC0xLjMyIDAtMi41NS4xNC0zLjY5LjM4TDE4LjQzIDEzLjUgMjMuNjQgN3pNMy40MSAxLjMxIDIgMi43MmwyLjA1IDIuMDVDMS45MSA1Ljc2LjU5IDYuODIuMzYgN0wxMiAyMS41bDMuOTEtNC44NyAzLjMyIDMuMzIgMS40MS0xLjQxTDMuNDEgMS4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbFdpZmlTdGF0dXNiYXI0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaVN0YXR1c2JhckNvbm5lY3RlZE5vSW50ZXJuZXQ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjFsNS01LjAxVjhoNS45MkMxOS45NyA1LjUxIDE2LjE2IDQgMTIgNHpNMTkgMThoMnYyaC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMGgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxXaWZpU3RhdHVzYmFyTnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpNMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3TDEyIDE4LjE3bC05LjA4LTkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpbUNhcmREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0IDh2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDJ2MTZINlY4LjgzTDEwLjgzIDRIMTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDEzLTQgNC00LTQgMS40MS0xLjQxTDExIDEzLjE3VjkuMDJMMTMgOXY0LjE3bDEuNTktMS41OUwxNiAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwbGl0c2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0djVINlY0aDEybTAtMkg2Yy0xLjEgMC0yIC45LTIgMnY1YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxM3Y1SDZ2LTVoMTJtMC0ySDZjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c1Njb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA2SDlWNGgydjJ6bTQtMmgtMnYyaDJWNHpNOSAxNGgydi0ySDl2MnptMTAtNFY4aC0ydjJoMnptMCA0di0yaC0ydjJoMnptLTYgMGgydi0yaC0ydjJ6bTYtMTBoLTJ2MmgyVjR6bS02IDRWNmgtMnYyaDJ6bS02IDJWOGgyVjZIN1Y0SDV2MTZoMnYtOGgydi0ySDd6bTggMmgydi0yaC0ydjJ6bS00LTJ2Mmgydi0yaC0yek05IDh2MmgyVjhIOXptNCAyaDJWOGgtMnYyem0yLTR2MmgyVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTc2lkQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1LjQ3IDEyIDEyIDcuNjIgNy42MiAzIDExVjguNTJMNy44MyA1bDQuMzggNC4zOEwyMSAzdjIuNDd6TTIxIDE1aC00LjdsLTQuMTcgMy4zNEw2IDEyLjQxbC0zIDIuMTNWMTdsMi44LTIgNi4yIDYgNS00aDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9yYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIwaDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yek0yIDR2NGgyMFY0SDJ6bTQgM0g0VjVoMnYyem0tNCA3aDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3Rvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkzIDhDMTYuNzIgNC4xOCAxMS44MiAyLjg3IDggNS4wN2MtMS40MS44Mi0yLjQ4IDItMy4xNiAzLjM3LS4xMy0yLjIuMjItNC40IDEuMDItNi40NEgzLjc0QzIuMiA2LjQ5IDIuNTIgMTEuNTggNS4wNyAxNmE3Ljk2IDcuOTYgMCAwIDAgNC44NiAzLjcyYzEuOTguNTMgNC4xNi4zMSA2LjA3LS43OSAxLjQxLS44MiAyLjQ4LTIgMy4xNi0zLjM3LjEzIDIuMi0uMjEgNC40LTEuMDEgNi40NGgyLjExYzEuNTMtNC40OSAxLjIyLTkuNTgtMS4zMy0xNHpNMTUgMTcuMkE2LjAxMiA2LjAxMiAwIDAgMSA2LjggMTVjLS4xMS0uMi0uMjEtLjQtLjMtLjYtMS4yLTIuNzYtLjE3LTYuMDYgMi41LTcuNiAyLjg2LTEuNjUgNi41NC0uNjcgOC4yIDIuMi4xMS4yLjIxLjQuMy42IDEuMiAyLjc2LjE3IDYuMDYtMi41IDcuNnpNMTIgMTBjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdW1tYXJpemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDNINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjlsLTYtNnpNNSAxOVY1aDl2NWg1djlINXpNOSA4YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6bTAgNGMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMSAuNDUtMSAxLTEgMSAuNDUgMSAxem0wIDRjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5c3RlbVNlY3VyaXR5VXBkYXRlR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxem0tMSA2LjA1LTEuNDEtMS40MS0zLjU0IDMuNTQtMS40MS0xLjQxLTEuNDEgMS40MUwxMS4wNSAxNSAxNiAxMC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5c3RlbVNlY3VyaXR5VXBkYXRlV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yek0xMSA3aDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3lzdGVtU2VjdXJpdHlVcGRhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDIxSDd2LTFoMTB2MXptMC0zSDdWNmgxMHYxMnpNNyA0VjNoMTB2MUg3em05IDgtNCA0LTQtNCAxLjQxLTEuNDFMMTEgMTIuMTdWOGgydjQuMTdsMS41OS0xLjU5TDE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXptLTkuMTgtNi45NUw3LjQgMTQuNDYgMTAuOTQgMThsNS42Ni01LjY2LTEuNDEtMS40MS00LjI0IDQuMjQtMi4xMy0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGhlcm1vc3RhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djhjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wOS0yLTR6bS00LThjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxaC0xdjFoMXYyaC0xdjFoMXYyaC0yVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lcjEwU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOHY4aC0zVjhoM20wLTNoLTNDOC4zNCA1IDcgNi4zNCA3IDh2OGMwIDEuNjYgMS4zNCAzIDMgM2gzYzEuNjYgMCAzLTEuMzQgMy0zVjhjMC0xLjY2LTEuMzQtMy0zLTN6TTEgOGgydjExaDNWNUgxdjN6bTE3LjUgM2MtLjgzIDAtMS41LjY4LTEuNSAxLjV2MmMwIC44Mi42NyAxLjUgMS41IDEuNUgyMXYxaC00djJoNC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXYtMmMwLS44My0uNjctMS41LTEuNS0xLjVIMTl2LTFoNHYtMmgtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZXIzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTF2MmgtNHYxaDIuNWMuODMgMCAxLjUuNjggMS41IDEuNXYyYzAgLjgzLS42NyAxLjUtMS41IDEuNUgxNXYtMmg0di0xaC0yLjVjLS44MiAwLTEuNS0uNjgtMS41LTEuNXYtMmMwLS44Mi42OC0xLjUgMS41LTEuNUgyMXpNNCA1djNoNnYyLjVINHYzaDZWMTZINHYzaDZjMS42NiAwIDMtMS4zNCAzLTN2LTEuOWEyLjEgMi4xIDAgMCAwLTIuMS0yLjFBMi4xIDIuMSAwIDAgMCAxMyA5LjlWOGMwLTEuNjYtMS4zNC0zLTMtM0g0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVuZ3N0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE5aDJ2M2gtMnpNMiAxMWgzdjJIMnpNMTkgMTFoM3YyaC0zek0xNS44OTQgMTcuODAxbDEuNDA3LTEuNDA3IDIuMTIyIDIuMTIyLTEuNDA4IDEuNDA3ek00LjU4NCAxOC41MDlsMi4xMjEtMi4xMjIgMS40MDggMS40MDctMi4xMjIgMi4xMjJ6TTE1IDguMDJWM0g5djUuMDJjLTEuMjEuOTItMiAyLjM1LTIgMy45OCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wNi0yLTMuOTh6TTExIDVoMnYyLjFjLS4zMi0uMDYtLjY2LS4xLTEtLjFzLS42OC4wNC0xIC4xVjV6bTEgMTBjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXNiT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOGg0djRoLTF2MmMwIC4zNC0uMDguNjYtLjIzLjk0TDE2IDEzLjE3VjEyaC0xVjh6bS00IC4xNyAyIDJWNmgybC0zLTQtMyA0aDJ2Mi4xN3pNMTMgMTZ2Mi4yOGMuNi4zNCAxIC45OCAxIDEuNzIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjc0LjQtMS4zNyAxLTEuNzJWMTZIOGMtMS4xMSAwLTItLjg5LTItMnYtMi4yOGMtLjYtLjM0LTEtLjk4LTEtMS43MiAwLS41OS4yNi0xLjEzLjY4LTEuNDlMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MS02LjYtNi42SDEzem0tMi0ydi0uMTdsLTIuNTEtMi41MWMtLjE0LjE2LS4zMS4yOS0uNDkuNFYxNGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3djRoMXYyaC0zVjVoMmwtMy00LTMgNGgydjhIOHYtMi4wN2MuNy0uMzcgMS4yLTEuMDggMS4yLTEuOTMgMC0xLjIxLS45OS0yLjItMi4yLTIuMlM0LjggNy43OSA0LjggOWMwIC44NS41IDEuNTYgMS4yIDEuOTNWMTNjMCAxLjExLjg5IDIgMiAyaDN2My4wNWMtLjcxLjM3LTEuMiAxLjEtMS4yIDEuOTVhMi4yIDIuMiAwIDAgMCA0LjQgMGMwLS44NS0uNDktMS41OC0xLjItMS45NVYxNWgzYzEuMTEgMCAyLS44OSAyLTJ2LTJoMVY3aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2FsbHBhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoN1YySDRjLTEuMSAwLTIgLjktMiAydjdoMlY0em02IDktNCA1aDEybC0zLTQtMi4wMyAyLjcxTDEwIDEzem03LTQuNWMwLS44My0uNjctMS41LTEuNS0xLjVTMTQgNy42NyAxNCA4LjVzLjY3IDEuNSAxLjUgMS41UzE3IDkuMzMgMTcgOC41ek0yMCAyaC03djJoN3Y3aDJWNGMwLTEuMS0uOS0yLTItMnptMCAxOGgtN3YyaDdjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2N3pNNCAxM0gydjdjMCAxLjEuOSAyIDIgMmg3di0ySDR2LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTggMTRIMjJoLS4wMnpNNS4zNSAxM2MxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzEgMXYtMmMtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDF2MmMxLjkgMCAyLjE3LTEgMy4zNS0xem0xMy4zMiAyYy0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxLTEuMjQgMC0xLjM4LTEtMy4zMy0xLTEuOTUgMC0yLjEgMS0zLjM0IDF2MmMxLjk1IDAgMi4xMS0xIDMuMzQtMSAxLjI0IDAgMS4zOCAxIDMuMzMgMSAxLjk1IDAgMi4xLTEgMy4zNC0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTQgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxdi0yYy0xLjI0IDAtMS4zOC0xLTMuMzMtMXpNNS4zNSA5YzEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQuOTggMy4zMSAxVjhjLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xQzMuMzggNyAzLjI0IDggMiA4djJjMS45IDAgMi4xNy0xIDMuMzUtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZGdldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjY2IDQuNTIgMi44MyAyLjgzLTIuODMgMi44My0yLjgzLTIuODMgMi44My0yLjgzTTkgNXY0SDVWNWg0bTEwIDEwdjRoLTR2LTRoNE05IDE1djRINXYtNGg0bTcuNjYtMTMuMzFMMTEgNy4zNCAxNi42NiAxM2w1LjY2LTUuNjYtNS42Ni01LjY1ek0xMSAzSDN2OGg4VjN6bTEwIDEwaC04djhoOHYtOHptLTEwIDBIM3Y4aDh2LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUzIDE3LjQ2IDEyIDIxbC0zLjUzLTMuNTRjLjktLjkgMi4xNS0xLjQ2IDMuNTMtMS40NnMyLjYzLjU2IDMuNTMgMS40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMzLjAzIDAgNS43OCAxLjIzIDcuNzYgMy4yMmwtMi4xMiAyLjEyQTcuOTY3IDcuOTY3IDAgMCAwIDEyIDEzYy0yLjIgMC00LjIuOS01LjY0IDIuMzVsLTIuMTItMi4xMkM2LjIyIDExLjIzIDguOTcgMTAgMTIgMTB6bTAgNmMtMS4zOCAwLTIuNjMuNTYtMy41MyAxLjQ2TDEyIDIxbDMuNTMtMy41NEE0Ljk4IDQuOTggMCAwIDAgMTIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpQ2FsbGluZzMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ5IDQuNWMxLjc5IDAgMy40Mi43MyA0LjU5IDEuOTFsMS4wNi0xLjA2QTcuOTQgNy45NCAwIDAgMCAxNi40OSAzYy0yLjIxIDAtNC4yMS45LTUuNjYgMi4zNGwxLjA2IDEuMDZhNi41NDUgNi41NDUgMCAwIDEgNC42LTEuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgNmMtMS4zOCAwLTIuNjMuNTYtMy41NCAxLjQ2bDEuMDYgMS4wNmMuNjMtLjYzIDEuNTEtMS4wMyAyLjQ3LTEuMDNzMS44NC4zOSAyLjQ3IDEuMDNsMS4wNi0xLjA2QTQuOTQgNC45NCAwIDAgMCAxNi40OSA2ek0xNi40OSA5Yy0uNTUgMC0xLjA1LjIyLTEuNDEuNTlMMTYuNDkgMTFsMS40MS0xLjQxYy0uMzYtLjM3LS44Ni0uNTktMS40MS0uNTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIgMTQuODctMy42Ny0uNzNjLS41LS4xLS44My4yLS45LjI3bC0yLjUyIDIuNWMtMi41LTEuNDMtNC41Ny0zLjUtNi02bDIuNS0yLjUyYy4yMy0uMjQuMzMtLjU3LjI3LS45TDkuMTMgMy44Yy0uMDktLjQ2LS41LS44LS45OC0uOEg0Yy0uNTYgMC0xLjAzLjQ3LTEgMS4wMy4xNyAyLjg5IDEuMDUgNS42IDIuNDMgNy45NyAxLjU4IDIuNzMgMy44NSA0Ljk5IDYuNTcgNi41NyAyLjM3IDEuMzcgNS4wOCAyLjI2IDcuOTcgMi40My41NS4wMyAxLjAzLS40MyAxLjAzLTF2LTQuMTVjMC0uNDgtLjM0LS44OS0uOC0uOTh6TTUuMSA1aDIuMjNsLjQ3IDIuMzVMNi4xNyA5Yy0uNTQtMS4zLS45LTIuNjMtMS4wNy00ek0xOSAxOC45Yy0xLjM3LS4xOC0yLjctLjUzLTQtMS4wN2wxLjY1LTEuNjMgMi4zNS40N3YyLjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaUNoYW5uZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAzYy0yLjUxIDAtMy43NyA1LjYxLTQuNCAxMC41N0MxMC43OSAxMC42NiA5LjYxIDggOCA4IDQuNDMgOCAzIDIxIDMgMjFoMi4wMWMuNjEtNS4yNyAyLTkuODIgMi45OS0xMC44Ny45OCAxLjA1IDIuMzggNS42MSAyLjk5IDEwLjg3SDEzYy41LTIuNTMgMi02IDMtNnMyLjUgMy41MyAzIDZoMnMtLjUtMTgtNS0xOHptMCAxMGMtLjk5IDAtMS44Mi42Mi0yLjUgMS41LjU3LTQuNzcgMS41NC04LjYyIDIuNS05LjQ0Ljk3LjgxIDEuOTEgNC42NyAyLjQ5IDkuNDNDMTcuODEgMTMuNjIgMTYuOTggMTMgMTYgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpRmluZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjNC4xNCAwIDcuODggMS42OCAxMC41OSA0LjM5TDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxbDEuNDEtMS40MkwyLjkzIDkuMDhDNS40NSA3LjE2IDguNTkgNiAxMiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNGMwLTIuMjQtMS43Ni00LTQtNHMtNCAxLjc2LTQgNCAxLjc2IDQgNCA0Yy43NSAwIDEuNDQtLjIxIDIuMDMtLjU2TDIxLjU5IDIwIDIzIDE4LjU5bC0yLjU2LTIuNTZjLjM1LS41OS41Ni0xLjI4LjU2LTIuMDN6bS00IDJjLTEuMTIgMC0yLS44OC0yLTJzLjg4LTIgMi0yIDIgLjg4IDIgMi0uODggMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTggMTEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNi4zNSA2LjM2TDEyIDIxbDMuMDUtMy4wNVYxNWMwLS40NS4wOS0uODguMjMtMS4yOS41NC0xLjU3IDIuMDEtMi43MSAzLjc3LTIuNzFoMi45M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTZ2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlQYXNzd29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTI0IDguOTgtMi4xMiAyLjEzQzE5LjM1IDguNTcgMTUuODUgNyAxMiA3cy03LjM1IDEuNTctOS44OCA0LjExTDAgOC45OEMzLjA3IDUuOSA3LjMxIDQgMTIgNHM4LjkzIDEuOSAxMiA0Ljk4ek00LjI0IDEzLjIybDIuMTIgMi4xMkE3Ljk2NyA3Ljk2NyAwIDAgMSAxMiAxM2MyLjIgMCA0LjIuOSA1LjY0IDIuMzVsMi4xMi0yLjEyQzE3Ljc4IDExLjIzIDE1LjAzIDEwIDEyIDEwYy0zLjAzIDAtNS43OCAxLjIzLTcuNzYgMy4yMnpNMjQgMjB2M2MwIC41NS0uNDUgMS0xIDFoLTRjLS41NSAwLTEtLjQ1LTEtMXYtM2MwLS41NS40NS0xIDEtMXYtMWMwLTEuMS45LTIgMi0yczIgLjkgMiAydjFjLjU1IDAgMSAuNDUgMSAxem0tMi0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjFoMnYtMXptLTEwLTJjLTEuMzggMC0yLjYzLjU2LTMuNTMgMS40NkwxMiAyMWwzLjUzLTMuNTRBNC45OCA0Ljk4IDAgMCAwIDEyIDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaVRldGhlcmluZ0Vycm9yUm91bmRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMy4zMSAwLTYgMi42OS02IDYgMCAxLjY2LjY4IDMuMTUgMS43NiA0LjI0bDEuNDItMS40MkEzLjkzNCAzLjkzNCAwIDAgMSA4IDEzYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjExLS40NSAyLjEtMS4xOCAyLjgybDEuNDIgMS40MkE2LjAwMyA2LjAwMyAwIDAgMCAxOCAxM2MwLTMuMzEtMi42OS02LTYtNnptMC00QzYuNDggMyAyIDcuNDggMiAxM2MwIDIuNzYgMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJBNy45NCA3Ljk0IDAgMCAxIDQgMTNjMC00LjQyIDMuNTgtOCA4LTggMi41MyAwIDQuNzggMS4xNyA2LjI0IDNoMi40MkMxOC45MyA1LjAxIDE1LjcgMyAxMiAzem0wIDhjLTEuMSAwLTIgLjktMiAyIDAgLjU1LjIzIDEuMDUuNTkgMS40MS4zNi4zNi44Ni41OSAxLjQxLjU5czEuMDUtLjIzIDEuNDEtLjU5Yy4zNi0uMzYuNTktLjg2LjU5LTEuNDEgMC0xLjEtLjktMi0yLTJ6bTgtMWgydjZoLTJ2LTZ6bTAgOGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpVGV0aGVyaW5nRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTMuMzEgMC02IDIuNjktNiA2IDAgMS42Ni42OCAzLjE1IDEuNzYgNC4yNGwxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMS4xMS0uNDUgMi4xLTEuMTggMi44MmwxLjQyIDEuNDJBNi4wMDMgNi4wMDMgMCAwIDAgMTggMTNjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQTcuOTQgNy45NCAwIDAgMSA0IDEzYzAtNC40MiAzLjU4LTggOC04IDIuNTMgMCA0Ljc4IDEuMTcgNi4yNCAzaDIuNDJDMTguOTMgNS4wMSAxNS43IDMgMTIgM3ptMCA4Yy0xLjEgMC0yIC45LTIgMiAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OXMxLjA1LS4yMyAxLjQxLS41OWMuMzYtLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0yem04LTFoMnY2aC0ydi02em0wIDhoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaVRldGhlcmluZ09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmwyLjY5IDIuNjlBOS45NTggOS45NTggMCAwIDAgMiAxM2MwIDIuNzYgMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJhNy45NTcgNy45NTcgMCAwIDEtLjg0LTEwLjMxbDEuNDMgMS40M2E2LjAwMyA2LjAwMyAwIDAgMCAuODIgNy40N2wxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLS42My4xNS0xLjIzLjQxLTEuNzZsMS42MSAxLjYxYzAgLjA1LS4wMi4xLS4wMi4xNSAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OS4wNSAwIC4xLS4wMS4xNi0uMDJsNy42MiA3LjYyIDEuNDEtMS40MUwyLjgxIDIuODF6TTE3LjcgMTQuODdjLjE5LS41OS4zLTEuMjIuMy0xLjg3IDAtMy4zMS0yLjY5LTYtNi02LS42NSAwLTEuMjguMS0xLjg3LjNsMS43MSAxLjcxQzExLjg5IDkgMTEuOTUgOSAxMiA5YzIuMjEgMCA0IDEuNzkgNCA0IDAgLjA1IDAgLjExLS4wMS4xNmwxLjcxIDEuNzF6TTEyIDVjNC40MiAwIDggMy41OCA4IDggMCAxLjIyLS4yNyAyLjM3LS43NyAzLjRsMS40OSAxLjQ5QTkuOTUzIDkuOTUzIDAgMCAwIDIyIDEzYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTEuNzggMC0zLjQ0LjQ2LTQuODkgMS4yOGwxLjQ4IDEuNDhDOS42MyA1LjI3IDEwLjc4IDUgMTIgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlUZXRoZXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiAyYzAtMy4zMS0yLjY5LTYtNi02cy02IDIuNjktNiA2YzAgMi4yMiAxLjIxIDQuMTUgMyA1LjE5bDEtMS43NGMtMS4xOS0uNy0yLTEuOTctMi0zLjQ1IDAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjQ4LS44MSAyLjc1LTIgMy40NWwxIDEuNzRjMS43OS0xLjA0IDMtMi45NyAzLTUuMTl6TTEyIDNDNi40OCAzIDIgNy40OCAyIDEzYzAgMy43IDIuMDEgNi45MiA0Ljk5IDguNjVsMS0xLjczQzUuNjEgMTguNTMgNCAxNS45NiA0IDEzYzAtNC40MiAzLjU4LTggOC04czggMy41OCA4IDhjMCAyLjk2LTEuNjEgNS41My00IDYuOTJsMSAxLjczYzIuOTktMS43MyA1LTQuOTUgNS04LjY1IDAtNS41Mi00LjQ4LTEwLTEwLTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoOVYzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ2OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNoMnY0aC0yek03IDEwaDJ2N0g3ek0xMSA3aDJ2MTBoLTJ6TTE5IDVWM2gtMnYyaC0ydjJoMnYyaDJWN2gyVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0VjR6bS0yIDEzLjE3TDE4LjgzIDE2SDRWNGgxNnYxMy4xN3pNMTMgNWgtMnY0SDd2Mmg0djRoMnYtNGg0VjloLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnbkhvcml6b250YWxDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyaDJ2NWg4djNoLTh2NGg1djNoLTV2NWgtMnYtNUg2di0zaDV2LTRIM1Y3aDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnbkhvcml6b250YWxMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMkgyVjJoMnYyMHpNMjIgN0g2djNoMTZWN3ptLTYgN0g2djNoMTB2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnbkhvcml6b250YWxSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJoMnYyMGgtMlYyek0yIDEwaDE2VjdIMnYzem02IDdoMTB2LTNIOHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxpZ25WZXJ0aWNhbEJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIySDJ2LTJoMjB2MnpNMTAgMkg3djE2aDNWMnptNyA2aC0zdjEwaDNWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsaWduVmVydGljYWxDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMWgtNVY2aC0zdjVoLTRWM0g3djhIMS44NHYySDd2OGgzdi04aDR2NWgzdi01aDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnblZlcnRpY2FsVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMnYySDJWMmgyMHpNNyAyMmgzVjZIN3YxNnptNy02aDNWNmgtM3YxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFyZWFDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDctNS00LTUgNy00LTN2MTNoMThWN2gtNHptMiA5Ljk1LTctNS40NUw4IDE3bC0zLTIuNFYxMWwyLjQ0IDEuODMgNC45Ni02Ljk1TDE2LjMgOUgxOXY3Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0YWNoRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSA2djExLjVjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRWNWEyLjUgMi41IDAgMCAxIDUgMHYxMC41YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjZIMTB2OS41YTIuNSAyLjUgMCAwIDAgNSAwVjVjMC0yLjIxLTEuNzktNC00LTRTNyAyLjc5IDcgNXYxMi41YzAgMy4wNCAyLjQ2IDUuNSA1LjUgNS41czUuNS0yLjQ2IDUuNS01LjVWNmgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0YWNoTW9uZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjggMTAuOWMtMi4yNy0uNTktMy0xLjItMy0yLjE1IDAtMS4wOSAxLjAxLTEuODUgMi43LTEuODUgMS43OCAwIDIuNDQuODUgMi41IDIuMWgyLjIxYy0uMDctMS43Mi0xLjEyLTMuMy0zLjIxLTMuODFWM2gtM3YyLjE2Yy0xLjk0LjQyLTMuNSAxLjY4LTMuNSAzLjYxIDAgMi4zMSAxLjkxIDMuNDYgNC43IDQuMTMgMi41LjYgMyAxLjQ4IDMgMi40MSAwIC42OS0uNDkgMS43OS0yLjcgMS43OS0yLjA2IDAtMi44Ny0uOTItMi45OC0yLjFoLTIuMmMuMTIgMi4xOSAxLjc2IDMuNDIgMy42OCAzLjgzVjIxaDN2LTIuMTVjMS45NS0uMzcgMy41LTEuNSAzLjUtMy41NSAwLTIuODQtMi40My0zLjgxLTQuNy00LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvR3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4wNiA5Ljk0IDEyIDlsMi4wNi0uOTRMMTUgNmwuOTQgMi4wNkwxOCA5bC0yLjA2Ljk0TDE1IDEybC0uOTQtMi4wNnpNNCAxNGwuOTQtMi4wNkw3IDExbC0yLjA2LS45NEw0IDhsLS45NCAyLjA2TDEgMTFsMi4wNi45NEw0IDE0em00LjUtNSAxLjA5LTIuNDFMMTIgNS41IDkuNTkgNC40MSA4LjUgMiA3LjQxIDQuNDEgNSA1LjVsMi40MSAxLjA5TDguNSA5em0tNCAxMS41IDYtNi4wMSA0IDRMMjMgOC45M2wtMS40MS0xLjQxLTcuMDkgNy45Ny00LTRMMyAxOWwxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFyQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloNHYxMUg0ek0xNiAxM2g0djdoLTR6TTEwIDRoNHYxNmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptOCAxNkg1di02aDZ2NnptMC04SDVWNWg2djZ6bTggOGgtNnYtNmg2djZ6bTAtOGgtNlY1aDZ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlckJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMUg3djJoMnYtMnptNCA0aC0ydjJoMnYtMnpNOSAzSDd2MmgyVjN6bTQgOGgtMnYyaDJ2LTJ6TTUgM0gzdjJoMlYzem04IDRoLTJ2MmgyVjd6bTQgNGgtMnYyaDJ2LTJ6bS00LThoLTJ2MmgyVjN6bTQgMGgtMnYyaDJWM3ptMiAxMGgydi0yaC0ydjJ6bTAgNGgydi0yaC0ydjJ6TTUgN0gzdjJoMlY3em0xNC00djJoMlYzaC0yem0wIDZoMlY3aC0ydjJ6TTUgMTFIM3YyaDJ2LTJ6TTMgMjFoMTh2LTJIM3Yyem0yLTZIM3YyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1aDJWM0g3djJ6bTAgOGgydi0ySDd2MnptMCA4aDJ2LTJIN3Yyem00LTRoMnYtMmgtMnYyem0wIDRoMnYtMmgtMnYyem0tOCAwaDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6bTAtNGgydi0ySDN2MnptMC00aDJWN0gzdjJ6bTAtNGgyVjNIM3Yyem04IDhoMnYtMmgtMnYyem04IDRoMnYtMmgtMnYyem0wLTRoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0wLTEyaDJWN2gtMnYyem0tOCAwaDJWN2gtMnYyem04LTZ2MmgyVjNoLTJ6bS04IDJoMlYzaC0ydjJ6bTQgMTZoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyem0wLThoMlYzaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJDb2xvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjgxIDguOTQtMy43NS0zLjc1TDQgMTQuMjVWMThoMy43NWw5LjA2LTkuMDZ6TTYgMTZ2LS45Mmw3LjA2LTcuMDYuOTIuOTJMNi45MiAxNkg2ek0xOS43MSA2LjA0YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YTEuMDAxIDEuMDAxIDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6TTIgMjBoMjB2NEgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVySG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgydi0ySDN2MnpNNSA3SDN2MmgyVjd6TTMgMTdoMnYtMkgzdjJ6bTQgNGgydi0ySDd2MnpNNSAzSDN2MmgyVjN6bTQgMEg3djJoMlYzem04IDBoLTJ2MmgyVjN6bS00IDRoLTJ2MmgyVjd6bTAtNGgtMnYyaDJWM3ptNiAxNGgydi0yaC0ydjJ6bS04IDRoMnYtMmgtMnYyem0tOC04aDE4di0ySDN2MnpNMTkgM3YyaDJWM2gtMnptMCA2aDJWN2gtMnYyem0tOCA4aDJ2LTJoLTJ2MnptNCA0aDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlcklubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDJ2LTJIM3Yyem00IDBoMnYtMkg3djJ6TTUgN0gzdjJoMlY3ek0zIDE3aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3pNNSAzSDN2MmgyVjN6bTEyIDBoLTJ2MmgyVjN6bTIgNmgyVjdoLTJ2MnptMC02djJoMlYzaC0yem0tNCAxOGgydi0yaC0ydjJ6TTEzIDNoLTJ2OEgzdjJoOHY4aDJ2LThoOHYtMmgtOFYzem02IDE4aDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlckxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIxaDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnptMC0xMmgyVjNoLTJ2MnptMCA0aDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyem0tNCA4aDJ2LTJIN3Yyek03IDVoMlYzSDd2MnptMCA4aDJ2LTJIN3Yyem0tNCA4aDJWM0gzdjE4ek0xOSA5aDJWN2gtMnYyem0tNCAxMmgydi0yaC0ydjJ6bTQtNGgydi0yaC0ydjJ6bTAtMTR2MmgyVjNoLTJ6bTAgMTBoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0tNC04aDJ2LTJoLTJ2MnptMC04aDJWM2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVyT3V0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2MmgyVjd6bTAgNGgtMnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6TTMgM3YxOGgxOFYzSDN6bTE2IDE2SDVWNWgxNHYxNHptLTYtNGgtMnYyaDJ2LTJ6bS00LTRIN3YyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMWgydi0ySDd2MnpNMyA1aDJWM0gzdjJ6bTQgMGgyVjNIN3Yyem0wIDhoMnYtMkg3djJ6bS00IDhoMnYtMkgzdjJ6bTggMGgydi0yaC0ydjJ6bS04LThoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTggOGgydi0yaC0ydjJ6bTQtNGgydi0yaC0ydjJ6bTQtMTB2MThoMlYzaC0yem0tNCAxOGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6bS00IDhoMnYtMmgtMnYyem0wLThoMlYzaC0ydjJ6bTAgNGgyVjdoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlclN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6TTcgMjFoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTgtNGgydi0yaC0ydjJ6bTAtNGgydi0yaC0ydjJ6TTMgM3YxOGgyVjVoMTZWM0gzem0xNiA2aDJWN2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVyVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIxaDJ2LTJIN3Yyem0wLThoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTAgOGgydi0yaC0ydjJ6bS04LTRoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJ2LTJIM3Yyem0wLTRoMlY3SDN2MnptOCA4aDJ2LTJoLTJ2MnptOC04aDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyek0zIDN2MmgxOFYzSDN6bTE2IDE0aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6TTExIDloMlY3aC0ydjJ6bTggMTJoMnYtMmgtMnYyem0tNC04aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlclZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDloMlY3SDN2MnptMC00aDJWM0gzdjJ6bTQgMTZoMnYtMkg3djJ6bTAtOGgydi0ySDd2MnptLTQgMGgydi0ySDN2MnptMCA4aDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6TTcgNWgyVjNIN3Yyem0xMiAxMmgydi0yaC0ydjJ6bS04IDRoMlYzaC0ydjE4em04IDBoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyem0wLTEwdjJoMlYzaC0yem0wIDZoMlY3aC0ydjJ6bS00LTRoMlYzaC0ydjJ6bTAgMTZoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnViYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTBjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem04LjAxLTFjLTEuNjUgMC0zIDEuMzUtMyAzczEuMzUgMyAzIDMgMy0xLjM1IDMtMy0xLjM1LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNMTYuNSAzQzEzLjQ3IDMgMTEgNS40NyAxMSA4LjVzMi40NyA1LjUgNS41IDUuNVMyMiAxMS41MyAyMiA4LjUgMTkuNTMgMyAxNi41IDN6bTAgOWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVTMTQuNTcgNSAxNi41IDUgMjAgNi41NyAyMCA4LjUgMTguNDMgMTIgMTYuNSAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbmRsZXN0aWNrQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRIN3YySDV2MTJoMnYyaDJ2LTJoMlY2SDlWNHptMCAxMkg3VjhoMnY4ek0xOSA4aC0yVjRoLTJ2NGgtMnY3aDJ2NWgydi01aDJWOHptLTIgNWgtMnYtM2gydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGVja2xpc3RSdGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3SDJ2Mmg5Vjd6bTAgOEgydjJoOXYtMnptNS4zNC00TDEyLjggNy40NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNEwyMiA1LjM0IDE2LjM0IDExem0wIDgtMy41NC0zLjU0IDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0TDIyIDEzLjM0IDE2LjM0IDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hlY2tsaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN2gtOXYyaDlWN3ptMCA4aC05djJoOXYtMnpNNS41NCAxMSAyIDcuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDUuNTQgMTF6bTAgOEwyIDE1LjQ2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0IDEuNDEgMS40MUw1LjU0IDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YUFycmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNHYyaDN2MTJoLTN2Mmg1VjR6TTQgMjBoNXYtMkg2VjZoM1Y0SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhT2JqZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA3djJjMCAuNTUtLjQ1IDEtMSAxSDJ2NGgxYy41NSAwIDEgLjQ1IDEgMXYyYzAgMS42NSAxLjM1IDMgMyAzaDN2LTJIN2MtLjU1IDAtMS0uNDUtMS0xdi0yYzAtMS4zLS44NC0yLjQyLTItMi44M3YtLjM0QzUuMTYgMTEuNDIgNiAxMC4zIDYgOVY3YzAtLjU1LjQ1LTEgMS0xaDNWNEg3QzUuMzUgNCA0IDUuMzUgNCA3ek0yMSAxMGMtLjU1IDAtMS0uNDUtMS0xVjdjMC0xLjY1LTEuMzUtMy0zLTNoLTN2MmgzYy41NSAwIDEgLjQ1IDEgMXYyYzAgMS4zLjg0IDIuNDIgMiAyLjgzdi4zNGMtMS4xNi40MS0yIDEuNTItMiAyLjgzdjJjMCAuNTUtLjQ1IDEtMSAxaC0zdjJoM2MxLjY1IDAgMy0xLjM1IDMtM3YtMmMwLS41NS40NS0xIDEtMWgxdi00aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJhZ0hhbmRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDlINHYyaDE2Vjl6TTQgMTVoMTZ2LTJINHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4Ljg1IDEwLjM5IDEuMDYtMS4wNmMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDE4LjUgNS4wOWMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTEuMDYgMS4wNiA0LjI0IDQuMjR6bS00LjI0IDEuNDJMNy40MSAxOUg2di0xLjQxbDcuMTktNy4xOSAxLjQyIDEuNDF6bS0xLjQyLTQuMjVMNCAxNi43NlYyMWg0LjI0bDkuMTktOS4xOS00LjI0LTQuMjV6TTE5IDE3LjVjMCAyLjE5LTIuNTQgMy41LTUgMy41LS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFjMS41NCAwIDMtLjczIDMtMS41IDAtLjQ3LS40OC0uODctMS4yMy0xLjJsMS40OC0xLjQ4YzEuMDcuNjMgMS43NSAxLjQ3IDEuNzUgMi42OHpNNC41OCAxMy4zNUMzLjYxIDEyLjc5IDMgMTIuMDYgMyAxMWMwLTEuOCAxLjg5LTIuNjMgMy41Ni0zLjM2QzcuNTkgNy4xOCA5IDYuNTYgOSA2YzAtLjQxLS43OC0xLTItMS0xLjI2IDAtMS44LjYxLTEuODMuNjQtLjM1LjQxLS45OC40Ni0xLjQuMTJhLjk5Mi45OTIgMCAwIDEtLjE1LTEuMzhDMy43MyA0LjI0IDQuNzYgMyA3IDNzNCAxLjMyIDQgM2MwIDEuODctMS45MyAyLjcyLTMuNjQgMy40N0M2LjQyIDkuODggNSAxMC41IDUgMTFjMCAuMzEuNDMuNiAxLjA3Ljg2bC0xLjQ5IDEuNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0Tm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTBoMTF2Mkgzdi0yem0wLTJoMTFWNkgzdjJ6bTAgOGg3di0ySDN2MnptMTUuMDEtMy4xMy43MS0uNzFhLjk5Ni45OTYgMCAwIDEgMS40MSAwbC43MS43MWMuMzkuMzkuMzkgMS4wMiAwIDEuNDFsLS43MS43MS0yLjEyLTIuMTJ6bS0uNzEuNzEtNS4zIDUuM1YyMWgyLjEybDUuMy01LjMtMi4xMi0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0QWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTV2MmgxMHYtMkg3em0tNCA2aDE4di0ySDN2MnptMC04aDE4di0ySDN2MnptNC02djJoMTBWN0g3ek0zIDN2MmgxOFYzSDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRBbGlnbkp1c3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTJIM3Yyem0wLTRoMTh2LTJIM3Yyem0wLTRoMTh2LTJIM3Yyem0wLTRoMThWN0gzdjJ6bTAtNnYyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdEFsaWduTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTVIM3YyaDEydi0yem0wLThIM3YyaDEyVjd6TTMgMTNoMTh2LTJIM3Yyem0wIDhoMTh2LTJIM3Yyek0zIDN2MmgxOFYzSDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRBbGlnblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDE4di0ySDN2MnptNi00aDEydi0ySDl2MnptLTYtNGgxOHYtMkgzdjJ6bTYtNGgxMlY3SDl2MnpNMyAzdjJoMThWM0gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0Qm9sZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNiAxMC43OWMuOTctLjY3IDEuNjUtMS43NyAxLjY1LTIuNzkgMC0yLjI2LTEuNzUtNC00LTRIN3YxNGg3LjA0YzIuMDkgMCAzLjcxLTEuNyAzLjcxLTMuNzkgMC0xLjUyLS44Ni0yLjgyLTIuMTUtMy40MnpNMTAgNi41aDNjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNWgtM3YtM3ptMy41IDlIMTB2LTNoMy41Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOFY1SDYuMzlsMyAzaDEuODNsLS41NSAxLjI4IDIuMDkgMi4xTDE0LjIxIDh6TTMuNDEgNC44NiAyIDYuMjdsNi45NyA2Ljk3TDYuNSAxOWgzbDEuNTctMy42NkwxNi43MyAyMWwxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRDb2xvckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41NiA4Ljk0IDcuNjIgMCA2LjIxIDEuNDFsMi4zOCAyLjM4LTUuMTUgNS4xNWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDUuNSA1LjVjLjI5LjI5LjY4LjQ0IDEuMDYuNDRzLjc3LS4xNSAxLjA2LS40NGw1LjUtNS41Yy41OS0uNTguNTktMS41MyAwLTIuMTJ6TTUuMjEgMTAgMTAgNS4yMSAxNC43OSAxMEg1LjIxek0xOSAxMS41cy0yIDIuMTctMiAzLjVjMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLTEuMzMtMi0zLjUtMi0zLjV6TTIgMjBoMjB2NEgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0Q29sb3JSZXNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNi4zNmMxLjUzIDIgMy4wOCA0LjQzIDMuNzEgNi4yNGwyLjIzIDIuMjNjLjAzLS4yNy4wNi0uNTUuMDYtLjgzIDAtMy45OC02LTEwLjgtNi0xMC44cy0xLjE4IDEuMzUtMi41IDMuMTlsMS40NCAxLjQ0Yy4zNC0uNTEuNy0xIDEuMDYtMS40N3pNNS40MSA1LjE0IDQgNi41NWwzLjMyIDMuMzJDNi41NSAxMS4zMyA2IDEyLjc5IDYgMTRjMCAzLjMxIDIuNjkgNiA2IDYgMS41MiAwIDIuOS0uNTcgMy45NS0xLjVsMi42MyAyLjYzTDIwIDE5LjcyIDUuNDEgNS4xNHpNMTIgMThjLTIuMjEgMC00LTEuNzktNC00IDAtLjY5LjMyLTEuNjIuODEtMi42NGw1LjcyIDUuNzJjLS43LjU2LTEuNTcuOTItMi41My45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdENvbG9yVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjBoMjB2NEgydi00em0zLjQ5LTNoMi40MmwxLjI3LTMuNThoNS42NUwxNi4wOSAxN2gyLjQyTDEzLjI1IDNoLTIuNUw1LjQ5IDE3em00LjQyLTUuNjEgMi4wMy01Ljc5aC4xMmwyLjAzIDUuNzlIOS45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdEluZGVudERlY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxN2gxMHYtMkgxMXYyem0tOC01IDQgNFY4bC00IDR6bTAgOWgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3ptOCA2aDEwVjdIMTF2MnptMCA0aDEwdi0ySDExdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRJbmRlbnRJbmNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgxOHYtMkgzdjJ6TTMgOHY4bDQtNC00LTR6bTggOWgxMHYtMkgxMXYyek0zIDN2MmgxOFYzSDN6bTggNmgxMFY3SDExdjJ6bTAgNGgxMHYtMkgxMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0SXRhbGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0djNoMi4yMWwtMy40MiA4SDZ2M2g4di0zaC0yLjIxbDMuNDItOEgxOFY0aC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0TGluZVNwYWNpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgN2gyLjVMNSAzLjUgMS41IDdINHYxMEgxLjVMNSAyMC41IDguNSAxN0g2Vjd6bTQtMnYyaDEyVjVIMTB6bTAgMTRoMTJ2LTJIMTB2MnptMC02aDEydi0ySDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRMaXN0QnVsbGV0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTAuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAtNmMtLjgzIDAtMS41LjY3LTEuNSAxLjVTMy4xNyA3LjUgNCA3LjUgNS41IDYuODMgNS41IDYgNC44MyA0LjUgNCA0LjV6bTAgMTJjLS44MyAwLTEuNS42OC0xLjUgMS41cy42OCAxLjUgMS41IDEuNSAxLjUtLjY4IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41ek03IDE5aDE0di0ySDd2MnptMC02aDE0di0ySDd2MnptMC04djJoMTRWNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0TGlzdE51bWJlcmVkUnRsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxN2gydi41aC0xdjFoMXYuNWgtMnYxaDN2LTRoLTN2MXptMS05aDFWNGgtMnYxaDF2M3ptLTEgM2gxLjhMMTggMTMuMXYuOWgzdi0xaC0xLjhsMS44LTIuMVYxMGgtM3Yxek0yIDVoMTR2MkgyVjV6bTAgMTJoMTR2Mkgydi0yem0wLTZoMTR2Mkgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0TGlzdE51bWJlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3aDJ2LjVIM3YxaDF2LjVIMnYxaDN2LTRIMnYxem0xLTloMVY0SDJ2MWgxdjN6bS0xIDNoMS44TDIgMTMuMXYuOWgzdi0xSDMuMkw1IDEwLjlWMTBIMnYxem01LTZ2MmgxNFY1SDd6bTAgMTRoMTR2LTJIN3Yyem0wLTZoMTR2LTJIN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0UGFpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRWM2MwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZoMXY0SDl2MTFjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTloOFY0aC0zem0tMiAySDZWNGgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0UXVvdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjYyIDE4aC01LjI0bDItNEgxM1Y2aDh2Ny4yNEwxOC42MiAxOHptLTItMmguNzZMMTkgMTIuNzZWOGgtNHY0aDMuNjJsLTIgNHptLTggMkgzLjM4bDItNEgzVjZoOHY3LjI0TDguNjIgMTh6bS0yLTJoLjc2TDkgMTIuNzZWOEg1djRoMy42MmwtMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0U2hhcGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA3VjFoLTZ2Mkg3VjFIMXY2aDJ2MTBIMXY2aDZ2LTJoMTB2Mmg2di02aC0yVjdoMnpNMyAzaDJ2MkgzVjN6bTIgMThIM3YtMmgydjJ6bTEyLTJIN3YtMkg1VjdoMlY1aDEwdjJoMnYxMGgtMnYyem00IDJoLTJ2LTJoMnYyek0xOSA1VjNoMnYyaC0yem0tNS4yNyA5aC0zLjQ5bC0uNzMgMkg3Ljg5bDMuNC05aDEuNGwzLjQxIDloLTEuNjNsLS43NC0yem0tMy4wNC0xLjI2aDIuNjFMMTIgOC45MWwtMS4zMSAzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0U2l6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djNoNXYxMmgzVjdoNVY0SDl6bS02IDhoM3Y3aDN2LTdoM1Y5SDN2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdFN0cmlrZXRocm91Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE5aDR2LTNoLTR2M3pNNSA0djNoNXYzaDRWN2g1VjRINXpNMyAxNGgxOHYtMkgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRUZXh0ZGlyZWN0aW9uTFRvUiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djRjLTEuMSAwLTItLjktMi0ycy45LTIgMi0ybTgtMkg5QzYuNzkgMiA1IDMuNzkgNSA2czEuNzkgNCA0IDR2NWgyVjRoMnYxMWgyVjRoMlYyem0wIDEydjNINXYyaDEydjNsNC00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdFRleHRkaXJlY3Rpb25SVG9MIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0djRjLTEuMSAwLTItLjktMi0ycy45LTIgMi0ybTgtMmgtOEM3Ljc5IDIgNiAzLjc5IDYgNnMxLjc5IDQgNCA0djVoMlY0aDJ2MTFoMlY0aDJWMnpNOCAxNGwtNCA0IDQgNHYtM2gxMnYtMkg4di0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0VW5kZXJsaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjMy4zMSAwIDYtMi42OSA2LTZWM2gtMi41djhjMCAxLjkzLTEuNTcgMy41LTMuNSAzLjVTOC41IDEyLjkzIDguNSAxMVYzSDZ2OGMwIDMuMzEgMi42OSA2IDYgNnptLTcgMnYyaDE0di0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGdW5jdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRINnYybDYuNSA2TDYgMTh2MmgxMnYtM2gtN2w1LTUtNS01aDdWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDYuOTloM0wxMiAzIDggNi45OWgzdjEwLjAySDhMMTIgMjFsNC0zLjk5aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGV4YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjIgM0g2LjhsLTUuMiA5IDUuMiA5aDEwLjRsNS4yLTktNS4yLTl6bS0xLjE1IDE2aC04LjFsLTQuMDQtNyA0LjA0LTdoOC4wOWw0LjA0IDctNC4wMyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlnaGxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxNCAzIDN2NWg2di01bDMtM1Y5SDZ2NXptMi0zaDh2Mi4xN2wtMyAzVjIwaC0ydi0zLjgzbC0zLTNWMTF6bTMtOWgydjNoLTJ6TTMuNTAyIDUuODc0IDQuOTE2IDQuNDZsMi4xMjIgMi4xMi0xLjQxNCAxLjQxNXptMTMuNDU4LjcwOCAyLjEyMy0yLjEyIDEuNDEzIDEuNDE2LTIuMTIzIDIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3Jpem9udGFsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjJIMlYyaDJ2MjB6TTIyIDJoLTJ2MjBoMlYyem0tOC41IDVoLTN2MTBoM1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG9yaXpvbnRhbFJ1bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCAxMWgxNnYySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRDaGFydE91dGxpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0em0yIDJINVY1aDE0djE0em0wLTE2SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc2VydENoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTcgMTBoMnY3SDd6bTQtM2gydjEwaC0yem00IDZoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zZXJ0Q29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHYxMy4xN0wxOC44MyAxNkg0VjRoMTZtMC0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0VjRjMC0xLjEtLjktMi0yLTJ6bS0yIDEwSDZ2MmgxMnYtMnptMC0zSDZ2MmgxMlY5em0wLTNINnYyaDEyVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnREcml2ZUZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiAyMFY0aDd2NWg1djExSDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRFbW90aWNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zZXJ0SW52aXRhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjloMTR2MTB6bTAtMTJINVY1aDE0djJ6bS0yIDVoLTV2NWg1di01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zZXJ0TGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOCAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRQYWdlQnJlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyMEg2di0zSDR2M2MwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi0zaC0ydjN6TTYgNGg3djVoNXYyaDJWOGwtNi02SDZjLTEuMSAwLTIgLjktMiAydjdoMlY0ek05IDEzaDZ2Mkg5ek0xNyAxM2g2djJoLTZ6TTEgMTNoNnYySDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRQaG90byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQuODYgOC44Ni0zIDMuODdMOSAxMy4xNCA2IDE3aDEybC0zLjg2LTUuMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaW5lQXhpcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDcuNDMtMS40MS0xLjQxLTQuMDMgNC41M0w5LjUgNCAyIDExLjUxbDEuNSAxLjUgNi4xNC02LjE1IDUuNTkgNS4xOC0xLjczIDEuOTUtNC00TDIgMTcuNSAzLjUgMTlsNi02LjAxIDQgNCAzLjE5LTMuNTkgMy45IDMuNjFMMjIgMTUuNmwtMy45OC0zLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaW5lYXJTY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgOS41Yy0xLjAzIDAtMS45LjYyLTIuMjkgMS41aC0yLjkyYy0uMzktLjg4LTEuMjYtMS41LTIuMjktMS41cy0xLjkuNjItMi4yOSAxLjVINi43OWMtLjM5LS44OC0xLjI2LTEuNS0yLjI5LTEuNWEyLjUgMi41IDAgMCAwIDAgNWMxLjAzIDAgMS45LS42MiAyLjI5LTEuNWgyLjkyYy4zOS44OCAxLjI2IDEuNSAyLjI5IDEuNXMxLjktLjYyIDIuMjktMS41aDIuOTJjLjM5Ljg4IDEuMjYgMS41IDIuMjkgMS41YTIuNSAyLjUgMCAwIDAgMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFyZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptMTYgMTZINVY1aDE0djE0ek0xMSA3aDJ2MmgtMlY3ek03IDdoMnYySDdWN3ptOCAwaDJ2MmgtMlY3em0tOCA0aDJ2Mkg3di0yem00IDBoMnYyaC0ydi0yem00IDBoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVyZ2VUeXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMC40MSAxOC40MSAxOSAxNSAxNS41OSAxMy41OSAxNyAxNyAyMC40MXpNNy41IDhIMTF2NS41OUw1LjU5IDE5IDcgMjAuNDFsNi02VjhoMy41TDEyIDMuNSA3LjUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNy4xNyAxOC44MyAxNkg0VjRoMTZ2MTMuMTd6TTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGw0IDRWNGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVFZGl0T3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNVYyMXptMi0yLjkyIDkuMDYtOS4wNi45Mi45Mkw1LjkyIDE5SDV2LS45MnpNMTguMzcgMy4yOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzYS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9kZUVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjVWMjF6bTItMi45MiA5LjA2LTkuMDYuOTIuOTJMNS45MiAxOUg1di0uOTJ6TTE4LjM3IDMuMjlhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjA2IDkuMDIuOTIuOTJMNS45MiAxOUg1di0uOTJsOS4wNi05LjA2TTE3LjY2IDNjLS4yNSAwLS41MS4xLS43LjI5bC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGMtLjItLjItLjQ1LS4yOS0uNzEtLjI5em0tMy42IDMuMTlMMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbmV0aXphdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLjMxLTguODZjLTEuNzctLjQ1LTIuMzQtLjk0LTIuMzQtMS42NyAwLS44NC43OS0xLjQzIDIuMS0xLjQzIDEuMzggMCAxLjkuNjYgMS45NCAxLjY0aDEuNzFjLS4wNS0xLjM0LS44Ny0yLjU3LTIuNDktMi45N1Y1SDEwLjl2MS42OWMtMS41MS4zMi0yLjcyIDEuMy0yLjcyIDIuODEgMCAxLjc5IDEuNDkgMi42OSAzLjY2IDMuMjEgMS45NS40NiAyLjM0IDEuMTUgMi4zNCAxLjg3IDAgLjUzLS4zOSAxLjM5LTIuMSAxLjM5LTEuNiAwLTIuMjMtLjcyLTIuMzItMS42NEg4LjA0Yy4xIDEuNyAxLjM2IDIuNjYgMi44NiAyLjk3VjE5aDIuMzR2LTEuNjdjMS41Mi0uMjkgMi43Mi0xLjE2IDIuNzMtMi43Ny0uMDEtMi4yLTEuOS0yLjk2LTMuNjYtMy40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbmV5T2ZmQ3NyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgNi45YzEuNzggMCAyLjQ0Ljg1IDIuNSAyLjFoMi4yMWMtLjA3LTEuNzItMS4xMi0zLjMtMy4yMS0zLjgxVjNoLTN2Mi4xNmMtLjM5LjA4LS43NS4yMS0xLjEuMzZsMS41MSAxLjUxYy4zMi0uMDguNjktLjEzIDEuMDktLjEzek01LjQ3IDMuOTIgNC4wNiA1LjMzIDcuNSA4Ljc3YzAgMi4wOCAxLjU2IDMuMjIgMy45MSAzLjkxbDMuNTEgMy41MWMtLjM0LjQ5LTEuMDUuOTEtMi40Mi45MS0yLjA2IDAtMi44Ny0uOTItMi45OC0yLjFoLTIuMmMuMTIgMi4xOSAxLjc2IDMuNDIgMy42OCAzLjgzVjIxaDN2LTIuMTVjLjk2LS4xOCAxLjgzLS41NSAyLjQ2LTEuMTJsMi4yMiAyLjIyIDEuNDEtMS40MUw1LjQ3IDMuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25leU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA2LjljMS43OCAwIDIuNDQuODUgMi41IDIuMWgyLjIxYy0uMDctMS43Mi0xLjEyLTMuMy0zLjIxLTMuODFWM2gtM3YyLjE2Yy0uMzkuMDgtLjc1LjIxLTEuMS4zNmwxLjUxIDEuNTFjLjMyLS4wOC42OS0uMTMgMS4wOS0uMTN6TTUuNDcgMy45MiA0LjA2IDUuMzMgNy41IDguNzdjMCAyLjA4IDEuNTYgMy4yMiAzLjkxIDMuOTFsMy41MSAzLjUxYy0uMzQuNDktMS4wNS45MS0yLjQyLjkxLTIuMDYgMC0yLjg3LS45Mi0yLjk4LTIuMWgtMi4yYy4xMiAyLjE5IDEuNzYgMy40MiAzLjY4IDMuODNWMjFoM3YtMi4xNWMuOTYtLjE4IDEuODMtLjU1IDIuNDYtMS4xMmwyLjIyIDIuMjIgMS40MS0xLjQxTDUuNDcgMy45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMWMwIDIuNDUgMS43NiA0LjQ3IDQuMDggNC45MWwtMS40OS0xLjQ5TDcgMTNsNCA0LjAxTDcgMjFsLTEuNDEtMS40MSAxLjU4LTEuNTh2LS4wNkE3LjAwNyA3LjAwNyAwIDAgMSAxIDExYzAtMy44NyAzLjEzLTcgNy03aDN2Mkg4Yy0yLjc2IDAtNSAyLjI0LTUgNXpNMjIgMTFWNGgtOXY3aDl6bS0yLTJoLTVWNmg1djN6TTEzIDEzaDl2N2gtOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNjMC0yLjQ1IDEuNzYtNC40NyA0LjA4LTQuOTFsLTEuNDkgMS41TDcgMTFsNC00LjAxTDcgMyA1LjU5IDQuNDFsMS41OCAxLjU4di4wNkE3LjAwNyA3LjAwNyAwIDAgMCAxIDEzYzAgMy44NyAzLjEzIDcgNyA3aDN2LTJIOGMtMi43NiAwLTUtMi4yNC01LTV6TTEzIDEzdjdoOXYtN2gtOXptNyA1aC01di0zaDV2M3pNMTMgNGg5djdoLTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNdWx0aWxpbmVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNi45Mi0xLjQxLTEuNDEtMi44NSAzLjIxQzE1LjY4IDYuNCAxMi44MyA1IDkuNjEgNSA2LjcyIDUgNC4wNyA2LjE2IDIgOGwxLjQyIDEuNDJDNS4xMiA3LjkzIDcuMjcgNyA5LjYxIDdjMi43NCAwIDUuMDkgMS4yNiA2Ljc3IDMuMjRsLTIuODggMy4yNC00LTRMMiAxNi45OWwxLjUgMS41IDYtNi4wMSA0IDQgNC4wNS00LjU1Yy43NSAxLjM1IDEuMjUgMi45IDEuNDQgNC41NUgyMWMtLjIyLTIuMy0uOTUtNC4zOS0yLjA0LTYuMTRMMjIgNi45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMS4wMSAzIDExdjJoMTh6TTMgMTZoMTJ2Mkgzek0yMSA2SDN2Mi4wMUwyMSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTnVtYmVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjUgMTAgLjUtMmgtNGwxLTRoLTJsLTEgNGgtNGwxLTRoLTJMOSA4SDVsLS41IDJoNGwtMSA0aC00TDMgMTZoNGwtMSA0aDJsMS00aDRsLTEgNGgybDEtNGg0bC41LTJoLTRsMS00aDR6bS03IDRoLTRsMS00aDRsLTEgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhZGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAyem0xNiAxNEg1VjVoMTR2MTR6TTExIDdoMnYyaC0yVjd6TTcgN2gydjJIN1Y3em04IDBoMnYyaC0yVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZW50YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjYzIDkuNzggMTYuNTYgMTlINy40NEw0LjM3IDkuNzggMTIgNC40NGw3LjYzIDUuMzR6TTIgOWw0IDEyaDEybDQtMTItMTAtN0wyIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWVDaGFydE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem0xIDIuMDdjMy42MS40NSA2LjQ4IDMuMzMgNi45MyA2LjkzSDEzVjQuMDd6TTQgMTJjMC00LjA2IDMuMDctNy40NCA3LTcuOTN2MTUuODdjLTMuOTMtLjUtNy0zLjg4LTctNy45NHptOSA3LjkzVjEzaDYuOTNBOC4wMDIgOC4wMDIgMCAwIDEgMTMgMTkuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNy45MyA5SDEzVjQuMDdjMy42MS40NSA2LjQ4IDMuMzIgNi45MyA2Ljkzek00IDEyYzAtNC4wNyAzLjA2LTcuNDQgNy03LjkzdjE1Ljg2Yy0zLjk0LS40OS03LTMuODYtNy03Ljkzem05IDcuOTNWMTNoNi45M0E4LjAwMiA4LjAwMiAwIDAgMSAxMyAxOS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvbHlsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTZ2MS4yNmwtNi0zdi0zLjE3TDExLjcgOEgxNlYyaC02djQuOUw3LjMgMTBIM3Y2aDVsNyAzLjVWMjJoNnYtNmgtNnpNMTIgNGgydjJoLTJWNHpNNyAxNEg1di0yaDJ2MnptMTIgNmgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3N0QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTkuMjJINVY3aDdWNUg1Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi03aC0ydjcuMjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJoLTJ2M2gtM2MuMDEuMDEgMCAyIDAgMmgzdjIuOTljLjAxLjAxIDIgMCAyIDBWN2gzVjVoLTNWMnpNNyA5aDh2Mkg3ek03IDEydjJoOHYtMmgtM3pNNyAxNWg4djJIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVB1Ymxpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNGgxNHYySDV6bTAgMTBoNHY2aDZ2LTZoNGwtNy03LTcgN3ptOC0ydjZoLTJ2LTZIOS44M0wxMiA5LjgzIDE0LjE3IDEySDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVlcnlTdGF0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljg4IDE4LjQ3Yy40NC0uNy43LTEuNTEuNy0yLjM5IDAtMi40OS0yLjAxLTQuNS00LjUtNC41cy00LjUgMi4wMS00LjUgNC41IDIuMDEgNC41IDQuNDkgNC41Yy44OCAwIDEuNy0uMjYgMi4zOS0uN0wyMS41OCAyMyAyMyAyMS41OGwtMy4xMi0zLjExem0tMy44LjExYTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1em0tLjM2LTguNWMtLjc0LjAyLTEuNDUuMTgtMi4xLjQ1bC0uNTUtLjgzLTMuOCA2LjE4LTMuMDEtMy41Mi0zLjYzIDUuODFMMSAxN2w1LTggMyAzLjVMMTMgNmwyLjcyIDQuMDh6bTIuNTkuNWMtLjY0LS4yOC0xLjMzLS40NS0yLjA1LS40OUwyMS4zOCAyIDIzIDMuMThsLTQuNjkgNy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVjdGFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0djE2aDIwVjRIMnptMTggMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NhdHRlclBsb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem00LTJjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem01LjYgMTcuNmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY2hlbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA5djJoLTNWOUg4LjVWN0gxMVYxSDR2NmgyLjV2Mkg0djZoMi41djJINHY2aDd2LTZIOC41di0ySDExdi0yaDN2Mmg3VjloLTd6TTYgM2gzdjJINlYzem0zIDE4SDZ2LTJoM3Yyem0wLThINnYtMmgzdjJ6bTEwIDBoLTN2LTJoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVsNC00IDQgNCA2LTZ2NnptMC04LjUtNiA2LTQtNC00IDRWNWgxNHY1LjV6TTEzLjUgOVY2SDEydjZoMS41em0zLjcgMy0yLTMgMi0zaC0xLjdsLTIgMyAyIDN6TTExIDEwLjVIOC41di0uNzVIMTFWNkg3djEuNWgyLjV2Ljc1SDdWMTJoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNoYXBlTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTFjMi43NiAwIDUtMi4yNCA1LTVTOC43NiAxIDYgMSAxIDMuMjQgMSA2czIuMjQgNSA1IDV6bTAtOGMxLjY1IDAgMyAxLjM1IDMgM1M3LjY1IDkgNiA5IDMgNy42NSAzIDZzMS4zNS0zIDMtM3pNMjEgMTRoLTVjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmg1YzEuMSAwIDItLjkgMi0ydi01YzAtMS4xLS45LTItMi0yem0wIDdoLTV2LTVoNXY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy43MSA3LjdjLjQuMTkuODMuMyAxLjI5LjMgMS42NSAwIDMtMS4zNSAzLTNzLTEuMzUtMy0zLTMtMyAxLjM1LTMgM2MwIC40Ni4xMS44OS4zIDEuMjlMNi4yOSAxNi4zYy0uNC0uMTktLjgzLS4zLTEuMjktLjMtMS42NSAwLTMgMS4zNS0zIDNzMS4zNSAzIDMgMyAzLTEuMzUgMy0zYzAtLjQ2LS4xMS0uODktLjMtMS4yOUwxNy43MSA3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9ydFRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloMTZ2Mkg0Vjl6bTAgNGgxMHYySDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG93Q2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuNSAxOC40OSA2LTYuMDEgNCA0TDIyIDYuOTJsLTEuNDEtMS40MS03LjA5IDcuOTctNC00TDIgMTYuOTlsMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwYWNlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5djRINlY5SDR2NmgxNlY5aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptMTYgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhY2tlZExpbmVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgMTkuOTkgNy41LTcuNTEgNCA0IDcuMDktNy45N0wyMiA5LjkybC04LjUgOS41Ni00LTQtNiA2LjAxLTEuNS0xLjV6bTEuNS00LjUgNi02LjAxIDQgNEwyMiAzLjkybC0xLjQxLTEuNDEtNy4wOSA3Ljk3LTQtNEwyIDEzLjk5bDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdHJpa2V0aHJvdWdoUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMjQgOC43NWMtLjI2LS40OC0uMzktMS4wMy0uMzktMS42NyAwLS42MS4xMy0xLjE2LjQtMS42Ny4yNi0uNS42My0uOTMgMS4xMS0xLjI5YTUuNzMgNS43MyAwIDAgMSAxLjctLjgzYy42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzcy4zOCAxLjE1LjM4IDEuODFoLTMuMDFjMC0uMzEtLjA1LS41OS0uMTUtLjg1LS4wOS0uMjctLjI0LS40OS0uNDQtLjY4LS4yLS4xOS0uNDUtLjMzLS43NS0uNDQtLjMtLjEtLjY2LS4xNi0xLjA2LS4xNi0uMzkgMC0uNzQuMDQtMS4wMy4xM3MtLjUzLjIxLS43Mi4zNmMtLjE5LjE2LS4zNC4zNC0uNDQuNTUtLjEuMjEtLjE1LjQzLS4xNS42NiAwIC40OC4yNS44OC43NCAxLjIxLjM4LjI1Ljc3LjQ4IDEuNDEuN0g3LjM5Yy0uMDUtLjA4LS4xMS0uMTctLjE1LS4yNXpNMjEgMTJ2LTJIM3YyaDkuNjJjLjE4LjA3LjQuMTQuNTUuMi4zNy4xNy42Ni4zNC44Ny41MXMuMzUuMzYuNDMuNTdjLjA3LjIuMTEuNDMuMTEuNjkgMCAuMjMtLjA1LjQ1LS4xNC42Ni0uMDkuMi0uMjMuMzgtLjQyLjUzLS4xOS4xNS0uNDIuMjYtLjcxLjM1LS4yOS4wOC0uNjMuMTMtMS4wMS4xMy0uNDMgMC0uODMtLjA0LTEuMTgtLjEzcy0uNjYtLjIzLS45MS0uNDJjLS4yNS0uMTktLjQ1LS40NC0uNTktLjc1cy0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNThzLjM3Ljg1LjY1IDEuMjFjLjI4LjM1LjYuNjYuOTguOTIuMzcuMjYuNzguNDggMS4yMi42NS40NC4xNy45LjMgMS4zOC4zOS40OC4wOC45Ni4xMyAxLjQ0LjEzLjggMCAxLjUzLS4wOSAyLjE4LS4yOHMxLjIxLS40NSAxLjY3LS43OWMuNDYtLjM0LjgyLS43NyAxLjA3LTEuMjdzLjM4LTEuMDcuMzgtMS43MWMwLS42LS4xLTEuMTQtLjMxLTEuNjEtLjA1LS4xMS0uMTEtLjIzLS4xNy0uMzNIMjFWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdWJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOGgtMnYxaDN2MWgtNHYtMmMwLS41NS40NS0xIDEtMWgydi0xaC0zdi0xaDNjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek01Ljg4IDE4aDIuNjZsMy40LTUuNDJoLjEybDMuNCA1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSA0aC0yLjY4bC0zLjA3IDQuOTloLS4xMkw4Ljg1IDRINi4xOWw0LjMyIDYuNzNMNS44OCAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1cGVyc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN2gtMnYxaDN2MWgtNFY3YzAtLjU1LjQ1LTEgMS0xaDJWNWgtM1Y0aDNjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek01Ljg4IDIwaDIuNjZsMy40LTUuNDJoLjEybDMuNCA1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSA2aC0yLjY4bC0zLjA3IDQuOTloLS4xMkw4Ljg1IDZINi4xOWw0LjMyIDYuNzNMNS44OCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDJ2M0g1VjVoMTV6bS01IDE0aC01di05aDV2OXpNNSAxMGgzdjlINXYtOXptMTIgOXYtOWgzdjloLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWJsZVJvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAydjNINVY1aDE0em0wIDV2NEg1di00aDE0ek01IDE5di0zaDE0djNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHREZWNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS45OSAxOWgyLjQybDEuMjctMy41OGg1LjY1TDExLjU5IDE5aDIuNDJMOC43NSA1aC0yLjVMLjk5IDE5em00LjQyLTUuNjFMNy40NCA3LjZoLjEybDIuMDMgNS43OUg1LjQxek0yMyAxMXYyaC04di0yaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0RmllbGRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDR2M2g1djEyaDNWN2g1VjRoLTEzem0xOSA1aC05djNoM3Y3aDN2LTdoM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dEluY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk5IDE5aDIuNDJsMS4yNy0zLjU4aDUuNjVMMTEuNTkgMTloMi40Mkw4Ljc1IDVoLTIuNUwuOTkgMTl6bTQuNDItNS42MUw3LjQ0IDcuNmguMTJsMi4wMyA1Ljc5SDUuNDF6TTIwIDExaDN2MmgtM3YzaC0ydi0zaC0zdi0yaDNWOGgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaXRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0djNoNS41djEyaDNWN0gxOVY0SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUeXBlU3BlY2ltZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4xOSAxMi4yaDMuNjNsLjggMi4zaDEuNTZsLTMuMzgtOWgtMS42bC0zLjM4IDloMS41NmwuODEtMi4zem0xLjc3LTUuMDNoLjA4bDEuMzEgMy43MmgtMi42OWwxLjMtMy43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsQWxpZ25Cb3R0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEzaC0zVjNoLTJ2MTBIOGw0IDQgNC00ek00IDE5djJoMTZ2LTJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTloM3Y0aDJ2LTRoM2wtNC00LTQgNHptOC0xNGgtM1YxaC0ydjRIOGw0IDQgNC00ek00IDExdjJoMTZ2LTJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsQWxpZ25Ub3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTFoM3YxMGgyVjExaDNsLTQtNC00IDR6TTQgM3YyaDE2VjNINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDJ2MkgyVjJoMjB6TTcgMTAuNXYzaDEwdi0zSDd6TTIgMjB2MmgyMHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV3JhcFRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTloNnYtMkg0djJ6TTIwIDVINHYyaDE2VjV6bS0zIDZINHYyaDEzLjI1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMkgxNXYtMmwtMyAzIDMgM3YtMmgyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBwcm92YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE2djZoMTZ2LTZjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ6bTE0IDJINnYtMmgxMnYyek0xMiAyQzkuMjQgMiA3IDQuMjQgNyA3bDUgNyA1LTdjMC0yLjc2LTIuMjQtNS01LTV6bTAgOUw5IDdjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2wtMyA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0YWNoRW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zIDYgOCA1IDgtNXYzaDJWNGMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0xLjk5LjktMS45OSAyTDEgMTZjMCAxLjEuOSAyIDIgMmgxMHYtMkgzVjZ6bTE2LTItOCA1LTgtNWgxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTR2NGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ2LTQuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxOGgydi00LjVhMi41IDIuNSAwIDAgMC01IDBWMThjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF0dGFjaG1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgMTZIN2MtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGgxMi41YTIuNSAyLjUgMCAwIDEgMCA1SDljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoOS41VjkuNUg5YTIuNSAyLjUgMCAwIDAgMCA1aDEwLjVjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTRIN2MtMy4wNCAwLTUuNSAyLjQ2LTUuNSA1LjVzMi40NiA1LjUgNS41IDUuNWgxMS41VjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvdWRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em00LjI5LTkuODFhNC4zNzMgNC4zNzMgMCAwIDAtOC4xNy0xLjE2QTMuNDgzIDMuNDgzIDAgMCAwIDUgMTIuNUM1IDE0LjQzIDYuNTcgMTYgOC41IDE2aDcuNThjMS42MSAwIDIuOTItMS4zMSAyLjkyLTIuOTIgMC0xLjU0LTEuMi0yLjc5LTIuNzEtMi44OXpNMTYgMTRIOC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNy42NyAxMSA4LjUgMTFoLjlsLjQ5LTEuMDVhMi4zNzcgMi4zNzcgMCAwIDEgNC40NC42M2wuMjggMS40MkgxNmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ2OSA1LjQ2OSAwIDAgMSAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExQTIuOTggMi45OCAwIDAgMSAyMiAxNWMwIDEuNjUtMS4zNSAzLTMgM3ptLTktMy44Mi0yLjA5LTIuMDlMNi41IDEzLjUgMTAgMTdsNi4wMS02LjAxLTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTQgMC0yLjA1IDEuNTMtMy43NiAzLjU2LTMuOTdsMS4wNy0uMTEuNS0uOTVBNS40NjkgNS40NjkgMCAwIDEgMTIgNmMyLjYyIDAgNC44OCAxLjg2IDUuMzkgNC40M2wuMyAxLjUgMS41My4xMUEyLjk4IDIuOTggMCAwIDEgMjIgMTVjMCAxLjY1LTEuMzUgMy0zIDN6bS01LjU1LThoLTIuOXYzSDhsNCA0IDQtNGgtMi41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCAxNWMwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NkE3LjQ5IDcuNDkgMCAwIDAgMTIgNGMtMS4zMyAwLTIuNTcuMzYtMy42NS45N2wxLjQ5IDEuNDlDMTAuNTEgNi4xNyAxMS4yMyA2IDEyIDZjMy4wNCAwIDUuNSAyLjQ2IDUuNSA1LjV2LjVIMTlhMi45OTYgMi45OTYgMCAwIDEgMS43OSA1LjRsMS40MSAxLjQxYzEuMDktLjkyIDEuOC0yLjI3IDEuOC0zLjgxek00LjQxIDMuODYgMyA1LjI3bDIuNzcgMi43N2gtLjQyQTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTEuNzNsMiAyIDEuNDEtMS40MUw0LjQxIDMuODZ6TTYgMThjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMS43M2w4IDhINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGguNzFDNy4zNyA3LjY5IDkuNDggNiAxMiA2YzMuMDQgMCA1LjUgMi40NiA1LjUgNS41di41SDE5YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvdWRTeW5jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuNSAxNC45OGMtLjAyIDAtLjAzIDAtLjA1LjAxQTMuNDkgMy40OSAwIDAgMCAxOCAxMmMtMS40IDAtMi42LjgzLTMuMTYgMi4wMkEyLjk4OCAyLjk4OCAwIDAgMCAxMiAxN2MwIDEuNjYgMS4zNCAzIDMgM2w2LjUtLjAyYTIuNSAyLjUgMCAwIDAgMC01em0uMDEgMy4wMkgxNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWgxLjI1di0uMjVjMC0uOTcuNzgtMS43NSAxLjc1LTEuNzVzMS43NS43OCAxLjc1IDEuNzVWMTdoMS43NmMuMjggMCAuNS4yMi41LjUtLjAxLjI3LS4yMy41LS41LjV6TTEwIDQuMjZ2Mi4wOUM3LjY3IDcuMTggNiA5LjM5IDYgMTJjMCAxLjc3Ljc4IDMuMzQgMiA0LjQ0VjE0aDJ2Nkg0di0yaDIuNzNBNy45NDIgNy45NDIgMCAwIDEgNCAxMmMwLTMuNzMgMi41NS02Ljg1IDYtNy43NHpNMjAgNmgtMi43M2E3Ljk4IDcuOTggMCAwIDEgMi42NiA1aC0yLjAyYy0uMjMtMS4zNi0uOTMtMi41NS0xLjkxLTMuNDRWMTBoLTJWNGg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG91ZFVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ2OSA1LjQ2OSAwIDAgMSAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExQTIuOTggMi45OCAwIDAgMSAyMiAxNWMwIDEuNjUtMS4zNSAzLTMgM3pNOCAxM2gyLjU1djNoMi45di0zSDE2bC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMyLjYyIDAgNC44OCAxLjg2IDUuMzkgNC40M2wuMyAxLjUgMS41My4xMUEyLjk4IDIuOTggMCAwIDEgMjIgMTVjMCAxLjY1LTEuMzUgMy0zIDNINmMtMi4yMSAwLTQtMS43OS00LTQgMC0yLjA1IDEuNTMtMy43NiAzLjU2LTMuOTdsMS4wNy0uMTEuNS0uOTVBNS40NjkgNS40NjkgMCAwIDEgMTIgNm0wLTJDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2QTcuNDkgNy40OSAwIDAgMCAxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JlYXRlTmV3Rm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHptLTgtNGgydjJoMnYtMmgydi0yaC0ydi0yaC0ydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaWZmZXJlbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjNINGMtMS4xIDAtMi0uOS0yLTJWN2gydjE0aDE0djJ6TTE0LjUgN1Y1aC0ydjJoLTJ2MmgydjJoMlY5aDJWN2gtMnptMiA2aC02djJoNnYtMnpNMTUgMUg4Yy0xLjEgMC0xLjk5LjktMS45OSAyTDYgMTdjMCAxLjEuODkgMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWN2wtNi02em00IDE2SDhWM2g2LjE3TDE5IDcuODNWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3dubG9hZERvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMThoMTR2Mkg1di0yem00LjYtMi43TDUgMTAuN2wyLTEuOSAyLjYgMi42TDE3IDRsMiAyLTkuNCA5LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3dubG9hZEZvck9mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMi41OS0xMS40MUwxNiAxMGwtNCA0LTQtNCAxLjQxLTEuNDFMMTEgMTAuMTdWNmgydjQuMTdsMS41OS0xLjU4ek0xNyAxN0g3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6bS04IDJWNWgydjZoMS4xN0wxMiAxMy4xNyA5LjgzIDExSDExem0tNiA3aDE0djJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvd25sb2FkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzIgNC4yNkE5Ljk0OSA5Ljk0OSAwIDAgMCAxMyAyLjA1djIuMDJjMS40Ni4xOCAyLjc5Ljc2IDMuOSAxLjYybDEuNDItMS40M3pNMTkuOTMgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMyTDE4LjMxIDcuMWE3Ljk0MSA3Ljk0MSAwIDAgMSAxLjYyIDMuOXptLTEuNjIgNS45IDEuNDMgMS40M2E5Ljk4MSA5Ljk4MSAwIDAgMCAyLjIxLTUuMzJoLTIuMDJhNy45NDUgNy45NDUgMCAwIDEtMS42MiAzLjg5ek0xMyAxOS45M3YyLjAyYzIuMDEtLjIgMy44NC0xIDUuMzItMi4yMWwtMS40My0xLjQzYy0xLjEuODYtMi40MyAxLjQ0LTMuODkgMS42MnptMi41OS05LjM0TDEzIDEzLjE3VjdoLTJ2Ni4xN2wtMi41OS0yLjU5TDcgMTJsNSA1IDUtNS0xLjQxLTEuNDF6TTExIDE5LjkzdjIuMDJjLTUuMDUtLjUtOS00Ljc2LTktOS45NXMzLjk1LTkuNDUgOS05Ljk1djIuMDJDNy4wNSA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEcml2ZUZpbGVNb3ZlUnRsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS02LjU5LTIuNDFMMTIgMTdsLTQtNCA0LTQgMS40MSAxLjQxTDExLjgzIDEySDE2djJoLTQuMTdsMS41OCAxLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJpdmVGaWxlTW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY2aDUuMTdsMS40MSAxLjQxLjU5LjU5SDIwdjEwem0tNy44NC02SDh2Mmg0LjE2bC0xLjU5IDEuNTlMMTEuOTkgMTcgMTYgMTMuMDEgMTEuOTkgOWwtMS40MSAxLjQxTDEyLjE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJpdmVGaWxlUmVuYW1lT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDE2LTQgNGgxMHYtNHpNMTIuMDYgNy4xOSAzIDE2LjI1VjIwaDMuNzVsOS4wNi05LjA2LTMuNzUtMy43NXpNNS45MiAxOEg1di0uOTJsNy4wNi03LjA2LjkyLjkyTDUuOTIgMTh6TTE4LjcxIDguMDRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRhMS4wMDEgMS4wMDEgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyaXZlRm9sZGVyVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY2aDUuMTdsMiAySDIwdjEwek05LjQxIDE0LjQyIDExIDEyLjg0VjE3aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDEzLjAxIDEyLjAxIDkgOCAxMy4wMWwxLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlRG93bmxvYWREb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTMgNS40MSAxOC43MiA0bC05LjE5IDkuMTktNC4yNS00LjI0LTEuNDEgMS40MSA1LjY2IDUuNjZ6TTUgMThoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsZURvd25sb2FkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTUuMTdWMTVoMnYyLjE3bC0yLTJ6bS0yLjU5LTIuNThMMTcgMTFsLTEuNDEtMS40MUwxNCAxMS4xN2wxLjQxIDEuNDJ6TTEzIDEwLjE3VjRoLTJ2NC4xN2wyIDJ6bTguMTkgMTEuMDItMS43OC0xLjc4LTE2LjYtMTYuNi0xLjQyIDEuNDEgNi4xOSA2LjE5TDcgMTFsNSA1IC41OS0uNTlMMTUuMTcgMThINnYtM0g0djNjMCAxLjEuOSAyIDIgMmgxMS4xN2wyLjYxIDIuNjEgMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsZURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTV2M0g2di0zSDR2M2MwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi0zaC0yem0tMS00LTEuNDEtMS40MUwxMyAxMi4xN1Y0aC0ydjguMTdMOC40MSA5LjU5IDcgMTFsNSA1IDUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbGVPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMjJINmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDhsNiA2djZoLTJWOWgtNVY0SDZ2MTZoOXYyem00LS4zNHYtMi4yNGwyLjk1IDIuOTUgMS40MS0xLjQxTDIwLjQxIDE4aDIuMjR2LTJIMTd2NS42NmgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsZVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE1djNINnYtM0g0djNjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtM2gtMnpNNyA5bDEuNDEgMS40MUwxMSA3LjgzVjE2aDJWNy44M2wyLjU5IDIuNThMMTcgOWwtNS01LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGRlckNvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE5aDE3djJIM2MtMS4xIDAtMi0uOS0yLTJWNmgydjEzek0yMyA2djljMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJsLjAxLTExYzAtMS4xLjg5LTIgMS45OS0yaDVsMiAyaDdjMS4xIDAgMiAuOSAyIDJ6TTcgMTVoMTRWNmgtNy44M2wtMi0ySDd2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJEZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEwVjloLTJ2MUgxMnYxLjVoMXY0YzAgLjgzLjY3IDEuNSAxLjUgMS41aDJjLjgzIDAgMS41LS42NyAxLjUtMS41di00aDFWMTBoLTIuNXptMCA1LjVoLTJ2LTRoMnY0ek0yMCA2aC04bC0yLTJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGRlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg3LjE3bDQgNEgyMHY5LjE3bDEuNzYgMS43NmMuMTUtLjI4LjI0LS41OS4yNC0uOTNWOGMwLTEuMS0uOS0yLTItMnpNMi4xIDIuMS42OSAzLjUxbDEuNTYgMS41NmMtLjE1LjI4LS4yNC41OS0uMjQuOTNMMiAxOGMwIDEuMS45IDIgMiAyaDEzLjE3bDMuMzEgMy4zMSAxLjQxLTEuNDFMMi4xIDIuMXpNNCAxOFY2LjgzTDE1LjE3IDE4SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjhoMTZ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJTaGFyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHptLTUtNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bS00IDRoOHYtMWMwLTEuMzMtMi42Ny0yLTQtMnMtNCAuNjctNCAydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJaaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTQgMTBoMnYtMmgtMnYtMmgydi0yaC0yVjhoNHYxMGgtNHYtMnptMCAwaC0ydjJINFY2aDUuMTdsMiAySDE0djJoMnYyaC0ydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05LjE3IDYgMiAySDIwdjEwSDRWNmg1LjE3TTEwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMmgtOGwtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0T3ZlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzdjJINVYzaDE0em0tNyA0Yy0zLjg3IDAtNyAzLjEzLTcgN3MzLjEzIDcgNyA3IDctMy4xMyA3LTctMy4xMy03LTctN3ptMCAxMS41Yy0yLjQ5IDAtNC41LTIuMDEtNC41LTQuNVM5LjUxIDkuNSAxMiA5LjVzNC41IDIuMDEgNC41IDQuNS0yLjAxIDQuNS00LjUgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZFZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2OGg4VjNIM3ptNiA2SDVWNWg0djR6bS02IDR2OGg4di04SDN6bTYgNkg1di00aDR2NHptNC0xNnY4aDhWM2gtOHptNiA2aC00VjVoNHY0em0tNiA0djhoOHYtOGgtOHptNiA2aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ld3NwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDMtMS42NyAxLjY3TDE4LjY3IDMgMTcgNC42NyAxNS4zMyAzbC0xLjY2IDEuNjdMMTIgM2wtMS42NyAxLjY3TDguNjcgMyA3IDQuNjcgNS4zMyAzIDMuNjcgNC42NyAyIDN2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlYzek0xMSAxOUg0di02aDd2NnptOSAwaC03di0yaDd2MnptMC00aC03di0yaDd2MnptMC00SDRWOGgxNnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVxdWVzdFF1b3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiAyMFY0aDd2NGg1djEySDZ6bTUtMWgydi0xaDFjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMWgtM3YtMWg0di0yaC0yVjloLTJ2MWgtMWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoM3YxSDl2MmgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSdWxlRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44MyAxNiA1IDEzLjE3bDEuNDEtMS40MSAxLjQxIDEuNDEgMy41NC0zLjU0IDEuNDEgMS40MUw3LjgzIDE2em05LjU4LTNMMTkgMTQuNTkgMTcuNTkgMTYgMTYgMTQuNDEgMTQuNDEgMTYgMTMgMTQuNTkgMTQuNTkgMTMgMTMgMTEuNDEgMTQuNDEgMTAgMTYgMTEuNTkgMTcuNTkgMTAgMTkgMTEuNDEgMTcuNDEgMTN6TTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNuaXBwZXRGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS0yLjUtNS44OHYzLjM4aC0zdi01aDEuMzhsMS42MiAxLjYyek0xMyA5djhoNnYtNS41TDE2LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRTbmlwcGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMTcgNSAxOSA5LjgzVjE5SDVWNWg5LjE3bTAtMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjkuODNjMC0uNTMtLjIxLTEuMDQtLjU5LTEuNDFsLTQuODMtNC44M2MtLjM3LS4zOC0uODgtLjU5LTEuNDEtLjU5ek03IDE1aDEwdjJIN3YtMnptMC00aDEwdjJIN3YtMnptMC00aDd2Mkg3Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb3BpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNi43N2MuNjggMCAxLjIzLS41NiAxLjIzLTEuMjNWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS0yLTZINnYtMmgxMnYyem0tNCA0SDZ2LTJoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXBsb2FkRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoN3Y1aDV2MTF6TTggMTUuMDFsMS40MSAxLjQxTDExIDE0Ljg0VjE5aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDE1LjAxIDEyLjAxIDExIDggMTUuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTZoNnYtNmg0bC03LTctNyA3aDR2NnptMy0xMC4xN0wxNC4xNyA4SDEzdjZoLTJWOEg5LjgzTDEyIDUuODN6TTUgMThoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV29ya3NwYWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTVjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LThjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMkM5LjggMyA4IDQuOCA4IDdzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6bTYgMTJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRmU2Nhbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyaC0xVjRINnY4SDVjLTEuNjYgMC0zIDEuMzQtMyAzdjVoMjB2LTVjMC0xLjY2LTEuMzQtMy0zLTN6TTggNmg4djZIOFY2em0xMiAxMkg0di0zYzAtLjU1LjQ1LTEgMS0xaDE0Yy41NSAwIDEgLjQ1IDEgMXYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyb3dzZXJOb3RTdXBwb3J0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2djEwLjVsMS45NSAxLjk1Yy4wMy0uMTUuMDUtLjMuMDUtLjQ1VjZjMC0xLjEtLjktMi0yLTJINi41bDIgMkgxOXpNMy4yMiAzLjMyIDEuOTUgNC41OSAzIDUuNjRWMThjMCAxLjEuOSAyIDIgMmgxMi4zNmwyLjA2IDIuMDYgMS4yNy0xLjI3TDMuMjIgMy4zMnpNMTUgMThINVY3LjY0TDE1LjM2IDE4SDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJvd3NlclVwZGF0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxM3YzYzAgMS4xLS45IDItMiAyaC0zbDEgMXYySDZ2LTJsMS0xSDRjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmg4djJINHYxMWgxNnYtM2gyem0tNyAyLTUtNSAxLjQxLTEuNDFMMTQgMTEuMTdWM2gydjguMTdsMi41OS0yLjU4TDIwIDEwbC01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXN0Q29ubmVjdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDE4djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC00djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMC00djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0yMC03SDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01IDd2MmgxMnY2aC0zdjJoNVY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FzdEZvckVkdWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYzaDJWNWgxOHYxNGgtN3YyaDdjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNMSAxOHYzaDNjMC0xLjY2LTEuMzQtMy0zLTN6bTAtNHYyYzIuNzYgMCA1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTAtNHYyYTkgOSAwIDAgMSA5IDloMmMwLTYuMDgtNC45My0xMS0xMS0xMXptMTAgMS4wOXYyTDE0LjUgMTVsMy41LTEuOTF2LTJMMTQuNSAxMyAxMSAxMS4wOXpNMTQuNSA2IDkgOWw1LjUgM0wyMCA5bC01LjUtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2M2gyVjVoMTh2MTRoLTd2Mmg3YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTEgMTh2M2gzYzAtMS42Ni0xLjM0LTMtMy0zem0wLTR2MmMyLjc2IDAgNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0wLTR2MmE5IDkgMCAwIDEgOSA5aDJjMC02LjA4LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21wdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAySDB2MmgyNHYtMmgtNHpNNCA2aDE2djEwSDRWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbm5lY3RlZFR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDR2Mmg4di0yaDRjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjVoMTZ2MTJ6TTUgMTR2MmgyYzAtMS4xMS0uODktMi0yLTJ6bTAtM3YxLjQzYzEuOTcgMCAzLjU3IDEuNiAzLjU3IDMuNTdIMTBjMC0yLjc2LTIuMjQtNS01LTV6bTAtM3YxLjQ1YzMuNjEgMCA2LjU1IDIuOTMgNi41NSA2LjU1SDEzYzAtNC40Mi0zLjU5LTgtOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVza3RvcE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDdsLTIgM3YxaDh2LTFsLTItM2g3YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTJIM1Y0aDE4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVza3RvcFdpbmRvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDJIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg3djJIOHYyaDh2LTJoLTJ2LTJoN2MxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNGgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURldmVsb3BlckJvYXJkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44MyA1SDE4djEwLjE3TDE5LjgzIDE3SDIydi0yaC0ydi0yaDJ2LTJoLTJWOWgyVjdoLTJWNWMwLTEuMS0uOS0yLTItMkg1LjgzbDIgMnpNMTIgOS4xN1Y3aDR2M2gtMy4xN0wxMiA5LjE3ek05LjgzIDdIMTF2MS4xN0w5LjgzIDd6bTQgNEgxNnYyLjE3TDEzLjgzIDExek0xOCAyMWMuMDYgMCAuMTEgMCAuMTYtLjAxbDIuMzIgMi4zMiAxLjQxLTEuNDFMMi4xIDIuMS42OSAzLjUxbDEuMzIgMS4zMkMyIDQuODkgMiA0Ljk0IDIgNXYxNGMwIDEuMS45IDIgMiAyaDE0ek00IDE5VjYuODNsMiAyVjEyaDMuMTdsMSAxSDZ2NGg1di0zLjE3bDEgMVYxN2gyLjE3bDIgMkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2ZWxvcGVyQm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDlWN2gtMlY1YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloMnptLTQgMTBINFY1aDE0djE0ek02IDEzaDV2NEg2di00em02LTZoNHYzaC00Vjd6TTYgN2g1djVINlY3em02IDRoNHY2aC00di02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2aWNlSHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyAxNi00LTRWOC44MkMxNC4xNiA4LjQgMTUgNy4zIDE1IDZjMC0xLjY2LTEuMzQtMy0zLTNTOSA0LjM0IDkgNmMwIDEuMy44NCAyLjQgMiAyLjgyVjEybC00IDRIM3Y1aDV2LTMuMDVsNC00LjIgNCA0LjJWMjFoNXYtNWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURldmljZVVua25vd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE4SDdWNWgxMHYxNHpNMTIgNi43MmMtMS45NiAwLTMuNSAxLjUyLTMuNSAzLjQ3aDEuNzVjMC0uOTMuODItMS43NSAxLjc1LTEuNzVzMS43NS44MiAxLjc1IDEuNzVjMCAxLjc1LTIuNjMgMS41Ny0yLjYzIDQuNDVoMS43NmMwLTEuOTYgMi42Mi0yLjE5IDIuNjItNC40NSAwLTEuOTYtMS41NC0zLjQ3LTMuNS0zLjQ3ek0xMSAxNmgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXZpY2VzT3RoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNmgxOFY0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNHYtMkgzVjZ6bTEwIDZIOXYxLjc4Yy0uNjEuNTUtMSAxLjMzLTEgMi4yMiAwIC44OS4zOSAxLjY3IDEgMi4yMlYyMGg0di0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMnMtLjM5LTEuNjctMS0yLjIyVjEyem0tMiA1LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek0yMiA4aC02Yy0uNSAwLTEgLjUtMSAxdjEwYzAgLjUuNSAxIDEgMWg2Yy41IDAgMS0uNSAxLTFWOWMwLS41LS41LTEtMS0xem0tMSAxMGgtNHYtOGg0djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDIzaDh2LTJIOHYyem04LTIxLjk5TDggMWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE2IDE1SDhWNWg4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWFyYnVkc0JhdHRlcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA3aC0xVjZoLTJ2MWgtMWMtLjU1IDAtMSAuNDUtMSAxdjljMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTFWOGMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTJWOWgydjd6bS02LTYuNjJDMTQgNy41MSAxMi40OSA2IDEwLjYyIDZTNy4yNSA3LjUxIDcuMjUgOS4zOHY1LjI1YzAgMS4wNC0uODQgMS44OC0xLjg4IDEuODhzLTEuODctLjg1LTEuODctMS44OXYtNC43Yy4xNi4wNS4zMy4wOC41LjA4IDEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMnY2LjYyQzIgMTYuNDkgMy41MSAxOCA1LjM4IDE4czMuMzgtMS41MSAzLjM4LTMuMzhWOS4zOGMwLTEuMDQuODQtMS44OCAxLjg4LTEuODhzMS44OC44NCAxLjg4IDEuODh2NC43Yy0uMTgtLjA1LS4zNS0uMDgtLjUyLS4wOC0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMlY5LjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWFyYnVkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNjLTIuNzYgMC01IDIuMjQtNSA1djhjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTNWOWguODNDNy40NCA5IDguODkgNy44MiA5IDYuMjFBMyAzIDAgMCAwIDYuMiAzQzQuNDQgMi44OSAzIDQuNDIgMyA2LjE5VjE2YzAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVWOGMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzdjdoLS44M2MtMS42MSAwLTMuMDYgMS4xOC0zLjE3IDIuNzlBMyAzIDAgMCAwIDE3LjggMjFjMS43Ni4xMiAzLjItMS40MiAzLjItMy4xOFY4YzAtMi43Ni0yLjI0LTUtNS01ek01IDZjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxLS40NSAxLTEgMUg1VjZ6bTE0IDEyYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMWgxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHYW1lcGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA0djIuNjdsLTEgMS0xLTFWNGgybTcgN3YyaC0yLjY3bC0xLTEgMS0xSDIwTTYuNjcgMTFsMSAxLTEgMUg0di0yaDIuNjdNMTIgMTYuMzNsMSAxVjIwaC0ydi0yLjY3bDEtMU0xNSAySDl2NS41bDMgMyAzLTNWMnptNyA3aC01LjVsLTMgMyAzIDNIMjJWOXpNNy41IDlIMnY2aDUuNWwzLTMtMy0zem00LjUgNC41LTMgM1YyMmg2di01LjVsLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYWRwaG9uZXNCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgN2gtMVY2aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xVjhjMC0uNTUtLjQ1LTEtMS0xem0tMSA5aC0yVjloMnY3ek04IDZjLTMuMzEgMC02IDIuNjktNiA2djRjMCAxLjEuOSAyIDIgMmgydi01SDMuNXYtMWMwLTIuNDggMi4wMi00LjUgNC41LTQuNXM0LjUgMi4wMiA0LjUgNC41djFIMTB2NWgyYzEuMSAwIDItLjkgMi0ydi00YzAtMy4zMS0yLjY5LTYtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhZHBob25lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNhOSA5IDAgMCAwLTkgOXY3YzAgMS4xLjkgMiAyIDJoNHYtOEg1di0xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDd2MWgtNHY4aDRjMS4xIDAgMi0uOSAyLTJ2LTdhOSA5IDAgMCAwLTktOXpNNyAxNXY0SDV2LTRoMnptMTIgNGgtMnYtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFkc2V0TWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNHY0aC0ydi00aDJNNyAxNHY0SDZjLS41NSAwLTEtLjQ1LTEtMXYtM2gybTUtMTNhOSA5IDAgMCAwLTkgOXY3YzAgMS42NiAxLjM0IDMgMyAzaDN2LThINXYtMmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3djJoLTR2OGg0djFoLTd2Mmg2YzEuNjYgMCAzLTEuMzQgMy0zVjEwYTkgOSAwIDAgMC05LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFkc2V0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGMzLjg3IDAgNyAzLjEzIDcgN3YxaC00di4xN0wxNi44MyAxNEgxOXYyLjE3bDIgMlYxMWE5IDkgMCAwIDAtOS05Yy0yLjAyIDAtMy44OC42Ny01LjM4IDEuOGwxLjQzIDEuNDNBNi44NzggNi44NzggMCAwIDEgMTIgNHpNMi4xIDIuMS42OSAzLjUxbDMuMzMgMy4zM0E4Ljk4IDguOTggMCAwIDAgMyAxMXY3YzAgMS4xLjkgMiAyIDJoNHYtOEg1di0xYzAtLjk0LjE5LTEuODMuNTItMi42NUwxNSAxNy44M1YyMGgyLjE3bDEgMUgxMnYyaDdjLjM0IDAgLjY1LS4wOS45My0uMjRsLjU1LjU1IDEuNDEtMS40MUwyLjEgMi4xek03IDE0djRINXYtNGgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhZHNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTR2M2MwIC41NS0uNDUgMS0xIDFoLTF2LTRoMk03IDE0djRINmMtLjU1IDAtMS0uNDUtMS0xdi0zaDJtNS0xM2E5IDkgMCAwIDAtOSA5djdjMCAxLjY2IDEuMzQgMyAzIDNoM3YtOEg1di0yYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDd2MmgtNHY4aDNjMS42NiAwIDMtMS4zNCAzLTN2LTdhOSA5IDAgMCAwLTktOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvbWVNYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVDMi43OSA1IDEgNi43OSAxIDl2NWMwIDIuMjEgMS43OSA0IDQgNGgydjFoMTB2LTFoMmMyLjIxIDAgNC0xLjc5IDQtNFY5YzAtMi4yMS0xLjc5LTQtNC00em0yIDljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDE0YzEuMSAwIDIgLjkgMiAydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb21lTWluaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVDNC4xOSA1IDIgOS40OCAyIDEyYzAgMy44NiAzLjEzIDcgNi45OSA3aDYuMDJDMTcuNyAxOSAyMiAxNi45MiAyMiAxMmMwIDAgMC03LTEwLTd6bTAgMmM3LjY0IDAgNy45OSA0LjUxIDggNUg0YzAtLjIuMDktNSA4LTV6bTIuODYgMTBIOS4xNGMtMi4xIDAtMy45Mi0xLjI0LTQuNzEtM2gxNS4xNWMtLjggMS43Ni0yLjYyIDMtNC43MiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNUgzVjZoMTh2MTN6TTkgOGgydjJIOVY4ek01IDhoMnYySDVWOHptMyA4aDh2MUg4di0xem01LThoMnYyaC0yVjh6bS00IDRoMnYySDl2LTJ6bS00IDBoMnYySDV2LTJ6bTggMGgydjJoLTJ2LTJ6bTQtNGgydjJoLTJWOHptMCA0aDJ2MmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQxIDguNTkgMTIgMTMuMTdsNC41OS00LjU4TDE4IDEwbC02IDYtNi02IDEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS40MSAxNi41OSAxMC44MyAxMmw0LjU4LTQuNTlMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZEFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNTkgMTYuNTkgMTMuMTcgMTIgOC41OSA3LjQxIDEwIDZsNiA2LTYgNi0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZEFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgMTUuNDEgMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0bC02LTYtNiA2IDEuNDEgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMUg2LjgzbDMuNTgtMy41OUw5IDZsLTYgNiA2IDYgMS40MS0xLjQxTDYuODMgMTNIMjF2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZENhcHNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4LjQxIDE2LjU5IDEzIDE4IDExLjU5bC02LTYtNiA2TDcuNDEgMTMgMTIgOC40MXpNNiAxOGgxMnYtMkg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZENvbW1hbmRLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDNDMTUuNTcgMyAxNCA0LjU3IDE0IDYuNVY4aC00VjYuNUMxMCA0LjU3IDguNDMgMyA2LjUgM1MzIDQuNTcgMyA2LjUgNC41NyAxMCA2LjUgMTBIOHY0SDYuNUM0LjU3IDE0IDMgMTUuNTcgMyAxNy41UzQuNTcgMjEgNi41IDIxczMuNS0xLjU3IDMuNS0zLjVWMTZoNHYxLjVjMCAxLjkzIDEuNTcgMy41IDMuNSAzLjVzMy41LTEuNTcgMy41LTMuNS0xLjU3LTMuNS0zLjUtMy41SDE2di00aDEuNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxOS40MyAzIDE3LjUgM3pNMTYgOFY2LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTMTguMzMgOCAxNy41IDhIMTZ6TTYuNSA4QzUuNjcgOCA1IDcuMzMgNSA2LjVTNS42NyA1IDYuNSA1IDggNS42NyA4IDYuNVY4SDYuNXptMy41IDZ2LTRoNHY0aC00em03LjUgNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjE2aDEuNWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41em0tMTEgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTYgNi41IDE2SDh2MS41YzAgLjgzLS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQ29udHJvbEtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUgMTIgMS40MSAxLjQxTDEyIDcuODNsNS41OSA1LjU4TDE5IDEybC03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZERvdWJsZUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDYuNDEgMTYuNTkgNSAxMiA5LjU4IDcuNDEgNSA2IDYuNDFsNiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxMy0xLjQxLTEuNDFMMTIgMTYuMTdsLTQuNTktNC41OEw2IDEzbDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkRG91YmxlQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNTkgMTggMTkgMTYuNTkgMTQuNDIgMTIgMTkgNy40MSAxNy41OSA2bC02IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDE4IDEuNDEtMS40MUw3LjgzIDEybDQuNTgtNC41OUwxMSA2bC02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZERvdWJsZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQxIDYgNSA3LjQxIDkuNTggMTIgNSAxNi41OSA2LjQxIDE4bDYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNi0xLjQxIDEuNDFMMTYuMTcgMTJsLTQuNTggNC41OUwxMyAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZERvdWJsZUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE3LjU5IDcuNDEgMTkgMTIgMTQuNDIgMTYuNTkgMTkgMTggMTcuNTlsLTYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxMSAxLjQxIDEuNDFMMTIgNy44M2w0LjU5IDQuNThMMTggMTFsLTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkSGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTVjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEySDRWNWgxNnYxMHptLTktOWgydjJoLTJ6bTAgM2gydjJoLTJ6TTggNmgydjJIOHptMCAzaDJ2Mkg4ek01IDloMnYySDV6bTAtM2gydjJINXptMyA2aDh2Mkg4em02LTNoMnYyaC0yem0wLTNoMnYyaC0yem0zIDNoMnYyaC0yem0wLTNoMnYyaC0yem0tNSAxNyA0LTRIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkT3B0aW9uS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNWg2djJoLTZ6TTkgNUgzdjJoNC44NWw2LjkyIDEySDIxdi0yaC01LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRSZXR1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDd2NEg1LjgzbDMuNTgtMy41OUw4IDZsLTYgNiA2IDYgMS40MS0xLjQxTDUuODMgMTNIMjFWN2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkVGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41OSA3LjQxIDE1LjE3IDExSDF2MmgxNC4xN2wtMy41OSAzLjU5TDEzIDE4bDYtNi02LTYtMS40MSAxLjQxek0yMCA2djEyaDJWNmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkVm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE1YzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zTDE1IDZjMC0xLjY2LTEuMzQtMy0zLTNTOSA0LjM0IDkgNnY2YzAgMS42NiAxLjM0IDMgMyAzem0tMS4yLTkuMWMwLS42Ni41NC0xLjIgMS4yLTEuMnMxLjIuNTQgMS4yIDEuMmwtLjAxIDYuMmMwIC42Ni0uNTMgMS4yLTEuMTkgMS4ycy0xLjItLjU0LTEuMi0xLjJWNS45em02LjUgNi4xYzAgMy0yLjU0IDUuMS01LjMgNS4xUzYuNyAxNSA2LjcgMTJINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMmgydi0zLjI4YzMuMjgtLjQ4IDYtMy4zIDYtNi43MmgtMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDd2MTBINFY3aDE2bTAtMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMnptMCAzaDJ2MmgtMnpNOCA4aDJ2Mkg4em0wIDNoMnYySDh6bS0zIDBoMnYySDV6bTAtM2gydjJINXptMyA2aDh2Mkg4em02LTNoMnYyaC0yem0wLTNoMnYyaC0yem0zIDNoMnYyaC0yem0wLTNoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFwdG9wQ2hyb21lYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMThWM0gydjE1SDB2MmgyNHYtMmgtMnptLTggMGgtNHYtMWg0djF6bTYtM0g0VjVoMTZ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYXB0b3BNYWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDVjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMkgwYzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMi0uOSAyLTJoLTR6TTQgNWgxNnYxMUg0VjV6bTggMTRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhcHRvcFdpbmRvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4di0xYzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDVjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMnYxSDB2MmgyNHYtMmgtNHpNNCA1aDE2djEwSDRWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMkgwdjJoMjR2LTJoLTR6TTQgNmgxNnYxMEg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZW1vcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9uaXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgzbC0xIDF2MmgxMnYtMmwtMS0xaDNjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxM0g0VjVoMTZ2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOWMtLjA0LTQuMzktMy42LTcuOTMtOC03LjkzUzQuMDQgNC42MSA0IDl2NmMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04Vjl6bS0yIDBoLTVWMy4xNmMyLjgxLjQ3IDQuOTYgMi45IDUgNS44NHptLTctNS44NFY5SDZhNi4wMDUgNi4wMDUgMCAwIDEgNS01Ljg0ek0xOCAxNWMwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNnYtNGgxMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxSDhDNi4zNCAxIDUgMi4zNCA1IDR2MTZjMCAxLjY2IDEuMzQgMyAzIDNoOGMxLjY2IDAgMy0xLjM0IDMtM1Y0YzAtMS42Ni0xLjM0LTMtMy0zem0xIDE3SDdWNGgxMHYxNHptLTMgM2gtNHYtMWg0djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZUlwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxaC04QTIuNSAyLjUgMCAwIDAgNSAzLjV2MTdBMi41IDIuNSAwIDAgMCA3LjUgMjNoOGEyLjUgMi41IDAgMCAwIDIuNS0yLjV2LTE3QTIuNSAyLjUgMCAwIDAgMTUuNSAxem0tNCAyMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQuNS00SDdWNGg5djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVsaW5rT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2VjRINy4zOWwyIDJ6bTIgMTNWOWMwLS41NS0uNDUtMS0xLTFoLTZjLS41NSAwLTEgLjQ1LTEgMXYzLjYxbDIgMlYxMGg0djdoLTEuNjFsMi45MyAyLjkzYy4zOS0uMTMuNjgtLjQ5LjY4LS45M3pNMi4wNiAxLjUxLjY1IDIuOTJsMS44MiAxLjgyQzIuMTggNS4wOCAyIDUuNTIgMiA2djExSDB2M2gxNy43M2wyLjM1IDIuMzUgMS40MS0xLjQxTDIuMDYgMS41MXpNNCAxN1Y2LjI3TDE0LjczIDE3SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZWxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxOFY0SDRjLTEuMSAwLTIgLjktMiAydjExSDB2M2gxNHYtM0g0VjZ6bTE5IDJoLTZjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXptLTEgOWgtNHYtN2g0djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb2ludE9mU2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN2MtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgNEg3VjRoMTB2MnptMyAxNkg0Yy0xLjEgMC0yLS45LTItMnYtMWgyMHYxYzAgMS4xLS45IDItMiAyem0tMS40Ny0xMS44MUEyLjAwOCAyLjAwOCAwIDAgMCAxNi43IDlINy4zYy0uNzkgMC0xLjUxLjQ3LTEuODMgMS4xOUwyIDE4aDIwbC0zLjQ3LTcuODF6TTkuNSAxNmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlcklucHV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDl2MmgxOVY5SDJ6bTAgNmg1di0ySDJ2MnptNyAwaDV2LTJIOXYyem03IDBoNXYtMmgtNXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm91dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0LjJjMS41IDAgMyAuNiA0LjIgMS43bC44LS44QzE5LjYgMy43IDE3LjggMyAxNiAzcy0zLjYuNy01IDIuMWwuOC44QzEzIDQuOCAxNC41IDQuMiAxNiA0LjJ6bS0zLjMgMi41LjguOGMuNy0uNyAxLjYtMSAyLjUtMXMxLjguMyAyLjUgMWwuOC0uOGMtLjktLjktMi4xLTEuNC0zLjMtMS40cy0yLjQuNS0zLjMgMS40ek0xOSAxM2gtMlY5aC0ydjRINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi00YzAtMS4xLS45LTItMi0yem0wIDZINXYtNGgxNHY0ek02IDE2aDJ2Mkg2em0zLjUgMGgydjJoLTJ6bTMuNSAwaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjggMTAuNyA0LjIgNWwtLjcgMS45TDE3LjYgMTJINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01LjVjMC0uOC0uNS0xLjYtMS4yLTEuOHpNMTkgMThINXYtNGgxNHY0ek02IDE1aDJ2Mkg2em00IDBoOHYyaC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VjdXJpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00em0wIDEwLjk5aDdjLS41MyA0LjEyLTMuMjggNy43OS03IDguOTRWMTJINVY2LjNsNy0zLjExdjguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpbUNhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNCA4djEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAydjE2SDZWOC44M0wxMC44MyA0SDE4ek03IDE3aDJ2Mkg3em04IDBoMnYyaC0yem0tOC02aDJ2NEg3em00IDRoMnY0aC0yem0wLTRoMnYyaC0yem00IDBoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU21hcnREaXNwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDcuNXY5bDctNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNC4wMUg0VjUuOTloMTZ2MTIuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbWFydFNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTEuMjVIMTR2MS41aC0xLjV6TTE1IDExLjI1aDEuNXYxLjVIMTV6TTEwIDExLjI1aDEuNXYxLjVIMTB6TTcuNSAxMS4yNUg5djEuNUg3LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVIM2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yek00IDE3SDNWN2gxdjEwem0xNCAwSDZWN2gxMnYxMHptMyAwaC0xVjdoMXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNtYXJ0VG95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOVY3YzAtMS4xLS45LTItMi0yaC0zYzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDVINmMtMS4xIDAtMiAuOS0yIDJ2MmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM3Y0YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTRjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTN6bS0yIDEwSDZWN2gxMnYxMnptLTktNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzguMTcgMTAgOSAxMHMxLjUuNjcgMS41IDEuNVM5LjgzIDEzIDkgMTN6bTcuNS0xLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjUuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjV6TTggMTVoOHYySDh2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbWFydHBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVha2VyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjIgMUg5LjhDOC44MSAxIDggMS44MSA4IDIuOHYxNC40YzAgLjk5LjgxIDEuNzkgMS44IDEuNzlsOC40LjAxYy45OSAwIDEuOC0uODEgMS44LTEuOFYyLjhjMC0uOTktLjgxLTEuOC0xLjgtMS44ek0xOCAxN2wtOC0uMDFWM2g4djE0em0tNC05YzEuMSAwIDItLjg5IDItMnMtLjktMi0yLTItMiAuODktMiAyIC45IDIgMiAyem0wIDhjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTUuOTMgOSAxNCA5cy0zLjUgMS41Ny0zLjUgMy41UzEyLjA3IDE2IDE0IDE2em0wLTVjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTQuODMgMTQgMTQgMTRzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXpNNiA1SDR2MTZhMiAyIDAgMCAwIDIgMmgxMHYtMkg2VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAySDdjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMS45OSAyIDEuOTlMMTcgMjJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNyAyMFY0aDEwdjE2SDd6bTUtMTFjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yYTIgMiAwIDEgMCAwIDR6bTAgMmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDcuNDEgMTguMTcgMTFINnYyaDEyLjE3bC0zLjU5IDMuNTlMMTYgMThsNi02LTYtNi0xLjQxIDEuNDF6TTIgNnYxMmgyVjZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxldEFuZHJvaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDBINkM0LjM0IDAgMyAxLjM0IDMgM3YxOGMwIDEuNjYgMS4zNCAzIDMgM2gxMmMxLjY2IDAgMy0xLjM0IDMtM1YzYzAtMS42Ni0xLjM0LTMtMy0zem0tNCAyMmgtNHYtMWg0djF6bTUuMjUtM0g0Ljc1VjNoMTQuNXYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxldE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAwaC0xNEEyLjUgMi41IDAgMCAwIDIgMi41djE5QTIuNSAyLjUgMCAwIDAgNC41IDI0aDE0YTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtMTlBMi41IDIuNSAwIDAgMCAxOC41IDB6bS03IDIzYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNy41LTRINFYzaDE1djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFibGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNmMwLTEuMS0uOS0yLTItMnptLTIgMTRINVY2aDE0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG95cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNzUgMTAuMDggMTcuNCA2LjA1QTIuOTc4IDIuOTc4IDAgMCAwIDE0LjU2IDRIOS40NEM4LjE1IDQgNyA0LjgyIDYuNiA2LjA1TDUuODEgOC40IDQuNDEgN2wuMjktLjI5QS45OTYuOTk2IDAgMSAwIDMuMjkgNS4zbC0yIDJBLjk5Ni45OTYgMCAxIDAgMi43IDguNzFsLjMtLjMgMS43OSAxLjc5QzMuMTggMTAuNzIgMiAxMi4yMiAyIDE0YzAgMS40OS44MyAyLjc4IDIuMDUgMy40N0EyLjk5MSAyLjk5MSAwIDAgMCA3IDIwYzEuMyAwIDIuNC0uODQgMi44Mi0yaDQuMzdjLjQxIDEuMTYgMS41MSAyIDIuODIgMiAxLjQ5IDAgMi43My0xLjEgMi45NS0yLjUzQzIxLjE3IDE2Ljc4IDIyIDE1LjQ5IDIyIDE0YzAtMS45NS0xLjQtMy41Ny0zLjI1LTMuOTJ6TTEzIDZoMS41NmExIDEgMCAwIDEgLjk1LjY4bDEuMSAzLjMySDEzVjZ6bS00LjUxLjY4QTEgMSAwIDAgMSA5LjQ0IDZIMTF2NEg3LjQxbC0uMDItLjAyIDEuMS0zLjN6TTcgMThjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTAgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yLjQ5LTIuNjhBMy4wMjggMy4wMjggMCAwIDAgMTcgMTRjLTEuMyAwLTIuNC44NC0yLjgyIDJIOS44MkM5LjQgMTQuODQgOC4zIDE0IDcgMTRjLTEuMDMgMC0xLjk1LjUzLTIuNDkgMS4zMkM0LjIgMTQuOTcgNCAxNC41MSA0IDE0YzAtMS4xLjktMiAyLTJoMTJjMS4xIDAgMiAuOSAyIDIgMCAuNTEtLjIuOTctLjUxIDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb2dhbWVBc3NldE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgOWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41LTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptLTYuNjctMUgyMHY4aC0xLjE3bDEuODcgMS44N2MuNzUtLjI5IDEuMy0xLjAyIDEuMy0xLjg3VjhjMC0xLjEtLjktMi0yLTJIOC44M2wyIDJ6bTguOTUgMTQuNjFMMTUuMTcgMThINGMtMS4xIDAtMi0uOS0yLTJWOGMwLS44NS41NS0xLjU4IDEuMy0xLjg3TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnpNMTMuMTcgMTZsLTMtM0g5djJIN3YtMkg1di0yaDJWOS44M0w1LjE3IDhINHY4aDkuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb2dhbWVBc3NldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEgzVjhoMTh2OHpNNiAxNWgydi0yaDJ2LTJIOFY5SDZ2Mkg0djJoMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTguNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0Y2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY0LS4xMyAxLjI1LS4zNSAxLjgybDEuNSAxLjVhNi45NjMgNi45NjMgMCAwIDAtMS43OS04Ljc5TDE1IDJIOWwtLjk2IDMuMjEgMi4xNCAyLjE0QzEwLjc1IDcuMTMgMTEuMzYgNyAxMiA3em0tMS41MS0zaDMuMDJsLjM4IDEuMjdjLS41NS0uMTYtMS45Ny0uNTEtMy43OCAwTDEwLjQ5IDR6TTIuODEgMi44MSAxLjM5IDQuMjJsNC40NiA0LjQ2YTYuOTYzIDYuOTYzIDAgMCAwIDEuNzkgOC43OUw5IDIyaDZsLjk2LTMuMjEgMy44MiAzLjgyIDEuNDEtMS40MUwyLjgxIDIuODF6TTEzLjUxIDIwaC0zLjAybC0uMzgtMS4yN2MuNTUuMTUgMS45Ny41MSAzLjc4IDBMMTMuNTEgMjB6TTEyIDE3Yy0yLjc2IDAtNS0yLjI0LTUtNSAwLS42NC4xMy0xLjI1LjM1LTEuODJsNi40NyA2LjQ3Yy0uNTcuMjItMS4xOC4zNS0xLjgyLjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjMxIDIgLjQxIDIuNDhDMTMuODcgNC4xNyAxMi45NiA0IDEyIDRjLS45NSAwLTEuODcuMTctMi43MS40N0w5LjcgMmg0LjYxbS40MSAxNy41MkwxNC4zMSAyMkg5LjdsLS40MS0yLjQ3Yy44NC4zIDEuNzYuNDcgMi43MS40Ny45NiAwIDEuODctLjE3IDIuNzItLjQ4TTE2IDBIOGwtLjk1IDUuNzNDNS4xOSA3LjE5IDQgOS40NSA0IDEyczEuMTkgNC44MSAzLjA1IDYuMjdMOCAyNGg4bC45Ni01LjczQzE4LjgxIDE2LjgxIDIwIDE0LjU0IDIwIDEycy0xLjE5LTQuODEtMy4wNC02LjI3TDE2IDB6bS00IDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9Nb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDMgMy41NmMtMS42Ny0xLjM5LTMuNzQtMi4zLTYuMDMtMi41MXYyLjAxYzEuNzMuMTkgMy4zMS44OCA0LjYxIDEuOTJsMS40Mi0xLjQyek0xMSAzLjA2VjEuMDVjLTIuMjkuMi00LjM2IDEuMTItNi4wMyAyLjUxbDEuNDIgMS40MkE4LjkyOCA4LjkyOCAwIDAgMSAxMSAzLjA2ek00Ljk4IDYuMzkgMy41NiA0Ljk3QzIuMTcgNi42NCAxLjI2IDguNzEgMS4wNSAxMWgyLjAxYy4xOS0xLjczLjg4LTMuMzEgMS45Mi00LjYxek0yMC45NCAxMWgyLjAxYy0uMjEtMi4yOS0xLjEyLTQuMzYtMi41MS02LjAzbC0xLjQyIDEuNDJBOC45MjggOC45MjggMCAwIDEgMjAuOTQgMTF6TTcgMTJsMy40NCAxLjU2TDEyIDE3bDEuNTYtMy40NEwxNyAxMmwtMy40NC0xLjU2TDEyIDdsLTEuNTYgMy40NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjFhOC45NiA4Ljk2IDAgMCAxLTcuNDYtNEg3di0ySDF2Nmgydi0yLjdjMS45OSAyLjg0IDUuMjcgNC43IDkgNC43IDQuODcgMCA5LTMuMTcgMTAuNDQtNy41NmwtMS45Ni0uNDVDMTkuMjUgMTguNDggMTUuOTIgMjEgMTIgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbGluZHNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDExLjI1YzAgLjk3Ljc4IDEuNzUgMS43NSAxLjc1czEuNzUtLjc4IDEuNzUtMS43NUgyMnYtMmgtMnptLTItOGgtMlY5aDJ2MnptLTQgMEg2VjloOHYyem0wIDJ2Mkg2di0yaDh6bTIgMGgydjJoLTJ2LTJ6bTItNmgtMlY1aDJ2MnptLTQtMnYySDZWNWg4ek02IDE5di0yaDh2Mkg2em0xMCAwdi0yaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsaW5kcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTE2IDloMnYyaC0yVjl6bS0yIDJINlY5aDh2MnptNC00aC0yVjVoMnYyem0tNC0ydjJINlY1aDh6TTYgMTl2LTZoOHYxLjgyQTEuNzQ2IDEuNzQ2IDAgMCAwIDE1IDE4YTEuNzQ2IDEuNzQ2IDAgMCAwIDEtMy4xOFYxM2gydjZINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyb2FkY2FzdE9uSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDZjMC0xLjEtLjktMi0yLTJINHYyaDE2djIuNTljLjczLjI5IDEuNC42OSAyIDEuMTdWNnpNOCA5SDNjLS41IDAtMSAuNS0xIDF2OWMwIC41LjUgMSAxIDFoNWMuNSAwIDEtLjUgMS0xdi05YzAtLjUtLjUtMS0xLTF6bS0xIDlINHYtN2gzdjd6TTE3Ljc1IDE2Ljk3Yy4zLS4yMy41LS41Ny41LS45N2ExLjI1IDEuMjUgMCAwIDAtMi41IDBjMCAuNC4yLjc1LjUuOTdWMjJoMS41di01LjAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMy41YTIuNSAyLjUgMCAwIDEgMi41IDIuNWMwIC42OS0uMjggMS4zMS0uNzMgMS43NmwxLjA2IDEuMDZDMjAuNTUgMTguMSAyMSAxNy4xIDIxIDE2YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0YzAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsMS4wNi0xLjA2QTIuNSAyLjUgMCAwIDEgMTcgMTMuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOS41YTYuNSA2LjUgMCAwIDAtNi41IDYuNWMwIDEuNzkuNzMgMy40MiAxLjkgNC42bDEuMDYtMS4wNkMxMi41NiAxOC42MyAxMiAxNy4zOCAxMiAxNmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS4zNy0uNTYgMi42Mi0xLjQ2IDMuNTJsMS4wNyAxLjA2QTYuNSA2LjUgMCAwIDAgMTcgOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJvYWRjYXN0T25QZXJzb25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTl2LTlsNi00LjUgNC4wOCAzLjA2Yy44MS0uMzIgMS42OS0uNTEgMi42MS0uNTRMMTAgMyAyIDl2MTJoOC43NmMtLjQ4LS42LS44OC0xLjI3LTEuMTctMkg0ek0xNyAxNC43NWMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjUgMCAuNC4yLjc1LjUuOTdWMjJoMS41di01LjAzYy4zLS4yMy41LS41Ny41LS45NyAwLS42OS0uNTYtMS4yNS0xLjI1LTEuMjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYy0yLjIxIDAtNCAxLjc5LTQgNCAwIDEuMS40NSAyLjEgMS4xNyAyLjgzbDEuMDYtMS4wNkEyLjUgMi41IDAgMSAxIDE5LjUgMTZjMCAuNjktLjI4IDEuMzEtLjczIDEuNzZsMS4wNiAxLjA2QzIwLjU1IDE4LjEgMjEgMTcuMSAyMSAxNmMwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOS41YTYuNSA2LjUgMCAwIDAtNi41IDYuNWMwIDEuNzkuNzMgMy40MiAxLjkgNC42bDEuMDYtMS4wNkMxMi41NiAxOC42MyAxMiAxNy4zOCAxMiAxNmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS4zNy0uNTYgMi42Mi0xLjQ2IDMuNTJsMS4wNyAxLjA2QTYuNSA2LjUgMCAwIDAgMTcgOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3VydGFpbnNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xMyA1djE0aC0yVjVoMnpNNiA1aDN2MTRINlY1em05IDE0VjVoM3YxNGgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnRhaW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnptLTItOC4xNGMtMi4wNS0uNTgtMy42NC0yLjkzLTMuOTQtNS44NkgxOHY1Ljg2ek0xNS44MSAxMmMtMi4wNCAxLjM1LTMuNSAzLjk0LTMuNzYgN2gtLjA5Yy0uMjYtMy4wNi0xLjcyLTUuNjUtMy43Ni03IDIuMDQtMS4zNSAzLjUtMy45NCAzLjc2LTdoLjA5Yy4yNiAzLjA2IDEuNzIgNS42NSAzLjc2IDd6TTkuOTQgNWMtLjMgMi45My0xLjg5IDUuMjctMy45NCA1Ljg2VjVoMy45NHpNNiAxMy4xNGMyLjA1LjU4IDMuNjQgMi45MyAzLjk0IDUuODZINnYtNS44NnpNMTQuMDYgMTljLjMtMi45MyAxLjg5LTUuMjcgMy45NC01Ljg2VjE5aC0zLjk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNjkgMi4yMSA0LjMzIDExLjQ5Yy0uNjQuNTgtLjI4IDEuNjUuNTggMS43M0wxMyAxNGwtNC44NSA2Ljc2Yy0uMjIuMzEtLjE5Ljc0LjA4IDEuMDEuMy4zLjc3LjMxIDEuMDguMDJsMTAuMzYtOS4yOGMuNjQtLjU4LjI4LTEuNjUtLjU4LTEuNzNMMTEgMTBsNC44NS02Ljc2Yy4yMi0uMzEuMTktLjc0LS4wOC0xLjAxYS43Ny43NyAwIDAgMC0xLjA4LS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZWN0cmljTWV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMWE5IDkgMCAwIDAtMTggMGMwIDMuOTIgMi41MSA3LjI0IDYgOC40OFYyMmgydi0yLjA2YTguMjYyIDguMjYyIDAgMCAwIDIgMFYyMmgydi0yLjUyYzMuNDktMS4yNCA2LTQuNTYgNi04LjQ4em0tOSA3Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA3aDh2Mkg4ek0xMi43NSAxMGwtMyAzTDExIDE0LjI1IDkuNzUgMTUuNWwxLjUgMS41IDMtM0wxMyAxMi43NWwxLjI1LTEuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbmVyZ3lTYXZpbmdzTGVhZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNjLTQuOCAwLTkgMy44Ni05IDkgMCAyLjEyLjc0IDQuMDcgMS45NyA1LjYxTDMgMTkuNTkgNC40MSAyMWwxLjk3LTEuOTdBOS4wMTIgOS4wMTIgMCAwIDAgMTIgMjFjMi4zIDAgNC42MS0uODggNi4zNi0yLjY0QTguOTUgOC45NSAwIDAgMCAyMSAxMlYzaC05em03IDljMCAxLjg3LS43MyAzLjYzLTIuMDUgNC45NUE2Ljk2IDYuOTYgMCAwIDEgMTIgMTljLTMuODYgMC03LTMuMTQtNy03IDAtMS45Ljc0LTMuNjggMi4xLTQuOTlBNi45NCA2Ljk0IDAgMCAxIDEyIDVoN3Y3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjQ2IDEyLjYzIDQuMDUuNC0yLjQ0IDMuMzNjLS4xMS4xNi0uMS4zOC4wNC41Mi4xNS4xNS40LjE2LjU2LjAxbDUuMTYtNC42M2MuMzMtLjMuMTUtLjg1LS4zLS44OWwtNC4wNS0uNCAyLjQ0LTMuMzNjLjExLS4xNi4xLS4zOC0uMDQtLjUyYS40MDUuNDA1IDAgMCAwLS41Ni0uMDFsLTUuMTYgNC42M2MtLjMyLjMtLjE0Ljg1LjMuODl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHYXNNZXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRoLTFWMmgtMnYyaC0yVjJIOXYySDhDNS43OSA0IDQgNS43OSA0IDh2MTBjMCAyLjIxIDEuNzkgNCA0IDRoOGMyLjIxIDAgNC0xLjc5IDQtNFY4YzAtMi4yMS0xLjc5LTQtNC00em0yIDE0YzAgMS4xLS45IDItMiAySDhjLTEuMSAwLTItLjktMi0yVjhjMC0xLjEuOS0yIDItMmg4YzEuMSAwIDIgLjkgMiAydjEwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTUuNTRDOS41IDE2LjkgMTAuNjIgMTggMTIgMThzMi41LTEuMSAyLjUtMi40NmMwLTEuMDktLjQ1LTEuNDEtMi41LTMuNzktMi4wNyAyLjQtMi41IDIuNzEtMi41IDMuNzl6TTggOGg4djJIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYXRQdW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOGMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNi02IDIuNjktNiA2IDIuNjkgNiA2IDZ6bS0uNzUtMi4wOGMtLjU1LS4xLTEuMDUtLjMyLTEuNS0uNjJsMS41LTEuNXYyLjEyem0xLjUgMHYtMi4xMWwxLjUgMS41Yy0uNDUuMy0uOTUuNTEtMS41LjYxem0yLjU2LTEuNjctMS41LTEuNWgyLjExYy0uMS41NS0uMzEgMS4wNS0uNjEgMS41em0uNjEtM2gtMi4xMWwxLjUtMS41Yy4zLjQ1LjUxLjk1LjYxIDEuNXptLTMuMTctMy4xN2MuNTUuMSAxLjA1LjMyIDEuNS42MmwtMS41IDEuNVY4LjA4ek0xMiAxMWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tLjc1LTIuOTJ2Mi4xMWwtMS41LTEuNWMuNDUtLjMuOTUtLjUxIDEuNS0uNjF6TTguNjkgOS43NWwxLjUgMS41SDguMDhjLjEtLjU1LjMxLTEuMDUuNjEtMS41em0xLjUgMy0xLjUgMS41Yy0uMy0uNDQtLjUxLS45NS0uNjItMS41aDIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2RlRmFuT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGMtMS4wNiAwLTEuNjQuMjktMy45MSAxLjE5LS4xOS0uMTQtLjQtLjI3LS42Mi0uMzcuMjUtMS4wMy42MS0xLjUzIDEuMzMtMi4wNC44MS0uNTcgMS4yLTEuMzQgMS4yLTIuMjggMC0xLjIyLS45NS0yLjUtMi42LTIuNS0zLjA4IDAtNC45MiAxLjQ3LTUuMzIgMy4yNmwyLjMzIDIuMzNDMTAuMDcgNi42OSAxMCA2LjM4IDEwIDZjMC0xLjE4IDEuNC0yIDMuNC0yIC41NyAwIC42LjQyLjYuNSAwIC4yNy0uMDUuNDMtLjM1LjY1LTEuMjcuOS0xLjgzIDEuOTEtMi4xNiAzLjM5bC0uMDIuMSA3LjI1IDcuMjVjLjI0LjA2LjUuMTEuNzguMTEgMS4yMiAwIDIuNS0uOTUgMi41LTIuNkMyMiA5LjkxIDIwLjExIDggMTggOHptMS41IDZjLS4yNyAwLS40My0uMDUtLjY1LS4zNS0uOS0xLjI3LTEuOTEtMS44My0zLjM5LTIuMTZhMy4xMiAzLjEyIDAgMCAwLS4xNS0uNjJjMS44LS43NSAyLjE4LS44NyAyLjY5LS44NyAxLjE4IDAgMiAxLjQgMiAzLjQgMCAuNTctLjQyLjYtLjUuNnpNMS4zOSA0LjIybDMuODkgMy44OUM1LjA0IDguMDUgNC43OCA4IDQuNSA4IDMuMjggOCAyIDguOTUgMiAxMC42IDIgMTQuMDkgMy44OSAxNiA2IDE2YzEuMDYgMCAxLjY0LS4yOSAzLjkxLTEuMTkuMTkuMTQuNC4yNy42Mi4zNy0uMjUgMS4wMy0uNjEgMS41My0xLjMzIDIuMDQtLjgxLjU3LTEuMiAxLjM0LTEuMiAyLjI4IDAgMS4yMi45NSAyLjUgMi42IDIuNSAzLjA4IDAgNC45Mi0xLjQ3IDUuMzItMy4yNmwzLjg2IDMuODYgMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJ6bTExLjEzIDExLjI0Yy4wMyAwIC4wNi0uMDIuMDktLjAybC45Ny45N2MuMzUuOS40MiAxLjIxLjQyIDEuNTkgMCAxLjE4LTEuNCAyLTMuNCAyLS41NyAwLS42LS40Mi0uNi0uNSAwLS4yNy4wNS0uNDMuMzUtLjY1IDEuMjgtLjg5IDEuODMtMS45MSAyLjE3LTMuMzl6bS0zLjk4LTIuOTRjLjAzLjIyLjA4LjQyLjE1LjYyLTEuOC43NC0yLjE4Ljg2LTIuNjkuODYtMS4xOCAwLTItMS40LTItMy40IDAtLjU3LjQyLS42LjUtLjYuMjcgMCAuNDMuMDUuNjUuMzUuODkgMS4yOCAxLjkxIDEuODMgMy4zOSAyLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmVzdENhbVdpcmVkU3RhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxYy0uMTUgMCAuMTEtLjAyLTQuMjguNDJDOC40NyAxLjc1IDYgNC40OCA2IDcuNzVzMi40NyA2IDUuNzIgNi4zM2wxLjkuMTktLjU2Ljg1Yy0uMzUtLjA4LS43LS4xMi0xLjA2LS4xMi0yLjc2IDAtNSAyLjI0LTUgNXYyYzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xdi0yYzAtMS42Ny0uODMtMy4xNS0yLjA5LTQuMDZsLjk3LTEuNDVjLjA0IDAgLjA5LjAxLjEzLjAxIDEuMDkgMCAyLS44OSAyLTJWM0MxOCAxLjg5IDE3LjA5IDEgMTYgMXptLTEgMjBIOXYtMWMwLTEuNjUgMS4zNS0zIDMtM3MzIDEuMzUgMyAzdjF6TTggNy43NWMwLTIuMjUgMS42OS00LjExIDMuOTItNC4zNEwxNiAzbC4wMyA5LjUtNC4xMS0uNDJBNC4zMzYgNC4zMzYgMCAwIDEgOCA3Ljc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT2lsQmFycmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMy4wNUM5IDE0LjY4IDEwLjM0IDE2IDEyIDE2czMtMS4zMiAzLTIuOTVjMC0xLjMxLS41My0xLjY5LTMtNC41NS0yLjQ4IDIuODgtMyAzLjI1LTMgNC41NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTFWNWgxYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMXY2SDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMXY2SDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMTZjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTF2LTZoMXptLTMgNkg3di02Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xVjVoMTB2NmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJvcGFuZVRhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA2LjE0VjRjMC0xLjEtLjktMi0yLTJIOWMtMS4xIDAtMiAuOS0yIDJ2Mi4xNGMtMS43Mi40NS0zIDItMyAzLjg2djhjMCAyLjIxIDEuNzkgNCA0IDRoOGMyLjIxIDAgNC0xLjc5IDQtNHYtOGMwLTEuODYtMS4yOC0zLjQxLTMtMy44NnpNOSA0aDZ2MmgtMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMUg5VjR6TTggOGg4YzEuMSAwIDIgLjkgMiAydjNINnYtM2MwLTEuMS45LTIgMi0yem04IDEySDhjLTEuMSAwLTItLjktMi0ydi0zaDEydjNjMCAxLjEtLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcm9wYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNmgtMVY1YzAtMS4xLS45LTItMi0yaC00Yy0xLjEgMC0yIC45LTIgMnYxSDdjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDZ2M2gydi0zaDZ2M2gydi0zYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0tNy0xaDR2MWgtNFY1em03IDExSDdjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMTBjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb2xsZXJTaGFkZXNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDguMjVjMCAuOTcuNzggMS43NSAxLjc1IDEuNzVzMS43NS0uNzggMS43NS0xLjc1SDIydi0yaC0yek0xOCA1djEwSDZWNWgxMnpNNiAxOXYtMmg1djJINnptNyAwdi0yaDV2MmgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvbGxlclNoYWRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTE4IDV2Nkg2VjVoMTJ6TTYgMTl2LTZoNXYxLjgyQTEuNzQ2IDEuNzQ2IDAgMCAwIDEyIDE4YTEuNzQ2IDEuNzQ2IDAgMCAwIDEtMy4xOFYxM2g1djZINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnNvckRvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0djE2SDZWNGgxMm0wLTJINmMtMS4xIDAtMiAuOS0yIDJ2MThoMTZWNGMwLTEuMS0uOS0yLTItMnptLTIuNSA4LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNVMxNyAxMi44MyAxNyAxMnMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2Vuc29yT2NjdXBpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMWMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek0xMiAxMmMtMS44NCAwLTMuNTYuNS01LjAzIDEuMzctLjYxLjM1LS45NyAxLjAyLS45NyAxLjcyVjE3aDEydi0xLjkxYzAtLjctLjM2LTEuMzYtLjk3LTEuNzJBOS44NDQgOS44NDQgMCAwIDAgMTIgMTJ6bS0zLjg2IDNjMS4xOC0uNjUgMi41MS0xIDMuODYtMXMyLjY4LjM1IDMuODUgMUg4LjE0ek0yMS4yMyA4LjE1bDEuODUtLjc3QTEyLjA1NiAxMi4wNTYgMCAwIDAgMTYuNjIuOTJsLS43NyAxLjg1YzIuNDIgMS4wMiA0LjM2IDIuOTYgNS4zOCA1LjM4ek04LjE1IDIuNzcgNy4zOC45MkExMi4wODkgMTIuMDg5IDAgMCAwIC45MiA3LjM4bDEuODUuNzdjMS4wMi0yLjQyIDIuOTYtNC4zNiA1LjM4LTUuMzh6TTIuNzcgMTUuODVsLTEuODUuNzdjMS4yMiAyLjkxIDMuNTUgNS4yNSA2LjQ2IDYuNDZsLjc3LTEuODVhMTAuMTE3IDEwLjExNyAwIDAgMS01LjM4LTUuMzh6TTE1Ljg1IDIxLjIzbC43NyAxLjg1YzIuOTEtMS4yMiA1LjI1LTMuNTUgNi40Ni02LjQ2bC0xLjg1LS43N2ExMC4xMTcgMTAuMTE3IDAgMCAxLTUuMzggNS4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnNvcldpbmRvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDJ2N2gtNHYtMWgtNHYxSDZWNGgxMnpNNiAyMHYtN2gxMnY3SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaGllbGRNb29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptNiA5LjA5YzAgNC0yLjU1IDcuNy02IDguODMtMy40NS0xLjEzLTYtNC44Mi02LTguODN2LTQuN2w2LTIuMjUgNiAyLjI1djQuN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wMSAxNC4zM2MxLjc1IDIuMTcgNS4xMiAyLjI0IDYuOTYuMDcuMjMtLjI3LjA4LS42OC0uMjYtLjc0YTQuNDkxIDQuNDkxIDAgMCAxLTMuMTgtMi4yIDQuNTAzIDQuNTAzIDAgMCAxLS4zMi0zLjg2LjQ1My40NTMgMCAwIDAtLjUxLS42Yy0zLjM0LjYyLTQuODkgNC42MS0yLjY5IDcuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb2xhclBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJINEwyIDIyaDIwbC0yLTEwem0tMS42NCAyIC40IDJIMTN2LTJoNS4zNnpNMTEgMTR2Mkg1LjI0bC40LTJIMTF6bS02LjE2IDRIMTF2Mkg0LjQ0bC40LTJ6TTEzIDIwdi0yaDYuMTZsLjQgMkgxM3pNMTEgOGgydjNoLTJ6TTE1Ljc2NCA3LjIwNWwxLjQxNS0xLjQxNEwxOS4zIDcuOTEybC0xLjQxNCAxLjQxNHpNNC43MDUgNy45MTMgNi44MjYgNS43OSA4LjI0IDcuMjA2IDYuMTIgOS4zMjd6TTMgMmgzdjJIM3pNMTggMmgzdjJoLTN6TTEyIDdjMi43NiAwIDUtMi4yNCA1LTVoLTJjMCAxLjY1LTEuMzUgMy0zIDNTOSAzLjY1IDkgMkg3YzAgMi43NiAyLjI0IDUgNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVydGljYWxTaGFkZXNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xMyA1aDEuNXYxNEgxM1Y1em0tMiAxNEg5LjVWNUgxMXYxNHpNNiA1aDEuNXYxNEg2VjV6bTEwLjUgMTRWNUgxOHYxNGgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVydGljYWxTaGFkZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xNCA1djE0aC00VjVoNHpNNiA1aDJ2MTRINlY1em0xMCAxNFY1aDJ2MTRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaW5kUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDNoNnYySDR6TTEgN2g1djJIMXpNMyAxOWg1djJIM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuMjEgMTguNjEtMi4yOC00LjFhMi4wNSAyLjA1IDAgMCAwLTEuMjYtLjk3bC0yLjY5LS42N2EyLjk1IDIuOTUgMCAwIDAtLjM3LTEuMzNsMy45Ni02LjU5Yy42NS0xLjA4LjMtMi40OC0uNzgtMy4xM2EyLjI4OCAyLjI4OCAwIDAgMC0yLjczLjNsLTMuNDMgMy4yMWMtLjQuMzctLjYzLjktLjYzIDEuNDV2My40Yy0uNDcuMTctLjg5LjQ1LTEuMjMuODJIMy4yOGEyLjI3OSAyLjI3OSAwIDAgMC0uNjMgNC40N2w0LjUxIDEuMjljLjE4LjA1LjM3LjA4LjU1LjA4LjM2IDAgLjcyLS4xIDEuMDMtLjI5bDIuMjQtMS4zNGMuMjkuMjYuNjMuNDcgMS4wMi42MVYyMWMtMS4xIDAtMiAuOS0yIDJoNmMwLTEuMS0uOS0yLTItMnYtNC4yOGw0LjYxIDQuNjFjLjQ1LjQ1IDEuMDMuNjcgMS42MS42Ny41OCAwIDEuMTctLjIyIDEuNjEtLjY3LjcyLS43Mi44OC0xLjgzLjM4LTIuNzJ6TTcuNzIgMTQuODQgMy4yIDEzLjU1YS4yNzkuMjc5IDAgMCAxLS4yLS4yN2MwLS4xNS4xMy0uMjguMjgtLjI4aDYuNzNjMCAuMTUuMDEuMy4wMy40NGwtMi4zMiAxLjR6TTEzIDE0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTEtMy44NlY2Ljc4bDMuNDMtMy4yMWMuMDUtLjA1LjE5LS4xMi4zNC0uMDQuMTMuMDguMTguMjUuMS4zOGwtMy43NCA2LjI0LS4xMy0uMDF6bTYuNDIgOS43OGMtLjA1LjA1LS4yNC4xNi0uNCAwbC00Ljg1LTQuODVjLjA4LS4wOS4xNi0uMTguMjQtLjI4bDIuNzguNjkgMi4yOCA0LjFjLjA2LjExLjA0LjI1LS4wNS4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTEwTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMS41aDIuNWMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDEzYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtNC41SDE1djNoLTEuNVY3ek03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek04LjUgMTEuNUgxMHYtNkg3VjdoMS41ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxMU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTEuNUgxMXYtNkg4VjdoMS41ek0xNC41IDExLjVIMTZ2LTZoLTNWN2gxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxMk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTEuNUgxMHYtNkg3VjdoMS41ek0xNi41IDEwaC0zVjloMmMuNTUgMCAxLS40NSAxLTFWNi41YzAtLjU1LS40NS0xLTEtMUgxMlY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNWg0LjVWMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxM01wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTYuNSAxMC41di00YzAtLjU1LS40NS0xLTEtMUgxMlY3aDN2MWgtMnYxaDJ2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTRNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxMS41SDEwdi02SDdWN2gxLjV6TTE1IDExLjVoMS41VjEwaDFWOC41aC0xdi0zSDE1djNoLTEuNXYtM0gxMlYxMGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTVNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTYuNSAxMC41VjljMC0uNTUtLjQ1LTEtMS0xaC0yVjdoM1Y1LjVIMTJWOWgzdjFoLTN2MS41aDMuNWMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxNk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMS41aDIuNWMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTFoLTJWN2gzVjUuNUgxM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTIuNUgxNXYxLjVoLTEuNVY5ek04LjUgMTEuNUgxMHYtNkg3VjdoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTdNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTMuMjUgMTEuNUgxNWwxLjQ2LTQuNzFjLjE5LS42NC0uMjktMS4yOS0uOTYtMS4yOUgxMlY3aDIuNjJsLTEuMzcgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMThNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTMgMTEuNWgyLjVjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMUgxM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTVIMTVWOGgtMS41VjYuNXptMCAyLjVIMTV2MS41aC0xLjVWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTE5TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxMS41SDEwdi02SDdWN2gxLjV6TTE2LjUgMTAuNXYtNGMwLS41NS0uNDUtMS0xLTFIMTNjLS41NSAwLTEgLjQ1LTEgMVY4YzAgLjU1LjQ1IDEgMSAxaDJ2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpNMTUgOGgtMS41VjYuNUgxNVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMjBNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDExLjVoMi41Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFIMTRjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS00LjVIMTZ2M2gtMS41Vjd6TTExIDEwSDhWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDYuNVY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNUgxMVYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTIxTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTEuNUgxNnYtNmgtM1Y3aDEuNXpNMTIgMTBIOVY5aDJjLjU1IDAgMS0uNDUgMS0xVjYuNWMwLS41NS0uNDUtMS0xLTFINy41VjdoM3YxaC0yYy0uNTUgMC0xIC40NS0xIDF2Mi41SDEyVjEwek03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xNSAxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZIMTVWMTd6bTAtM2gxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMjJNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEwSDhWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDYuNVY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNUgxMVYxMHpNMTcuNSAxMGgtM1Y5aDJjLjU1IDAgMS0uNDUgMS0xVjYuNWMwLS41NS0uNDUtMS0xLTFIMTNWN2gzdjFoLTJjLS41NSAwLTEgLjQ1LTEgMXYyLjVoNC41VjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMjNNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEwSDhWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDYuNVY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNUgxMVYxMHpNMTcuNSAxMC41di00YzAtLjU1LS40NS0xLTEtMUgxM1Y3aDN2MWgtMnYxaDJ2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTI0TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xNyAxMi41aC0zLjV2NkgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMXptLS41IDNIMTVWMTRoMS41djEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMEg4VjloMmMuNTUgMCAxLS40NSAxLTFWNi41YzAtLjU1LS40NS0xLTEtMUg2LjVWN2gzdjFoLTJjLS41NSAwLTEgLjQ1LTEgMXYyLjVIMTFWMTB6TTE2IDExLjVoMS41VjEwaDFWOC41aC0xdi0zSDE2djNoLTEuNXYtM0gxM1YxMGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwaC0zVjloMmMuNTUgMCAxLS40NSAxLTFWNi41YzAtLjU1LS40NS0xLTEtMUgxMFY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNWg0LjVWMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzMEZwc1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNHYyaDV2Mkg1djJoNHYySDR2Mmg1YzEuMSAwIDItLjkgMi0ydi0xLjVjMC0uODMtLjE3LTEuNS0xLTEuNS44MyAwIDEtLjY3IDEtMS41VjZjMC0xLjEtLjktMi0yLTJINHptMTQgMGMxLjEgMCAyIC45IDIgMnY2YzAgMS4xLS45IDItMiAyaC0zYy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoM3ptMCAyaC0zdjZoM1Y2ek01IDIySDN2LTVoMnY1em00IDBIN3YtNWgydjV6bTQgMGgtMnYtNWgydjV6bTggMGgtNnYtNWg2djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDEyLjV2NkgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41em0zIDNIMTVWMTRoMS41djEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwLjV2LTRjMC0uNTUtLjQ1LTEtMS0xSDEwVjdoM3YxaC0ydjFoMnYxaC0zdjEuNWgzLjVjLjU1IDAgMS0uNDUgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDExLjVIMTRWMTBoMVY4LjVoLTF2LTNoLTEuNXYzSDExdi0zSDkuNVYxMGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwLjVWOWMwLS41NS0uNDUtMS0xLTFoLTJWN2gzVjUuNUgxMFY5aDN2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTYwRnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNnY2aC0zVjZoM3ptMC0yaC0zYy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNyAyVjRINmMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDNjMS4xIDAgMi0uOSAyLTJ2LTJjMC0xLjEtLjktMi0yLTJINlY2aDV6bS0yIDR2Mkg2di0yaDN6TTUgMjJIM3YtNWgydjV6bTQgMEg3di01aDJ2NXptNCAwaC0ydi01aDJ2NXptOCAwaC02di01aDZ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTZNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTEuNWgyLjVjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xaC0yVjdoM1Y1LjVIMTFjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS0yLjVIMTN2MS41aC0xLjVWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTdNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjUgMTEuNUgxM2wxLjQ2LTQuNzFjLjE5LS42NC0uMjktMS4yOS0uOTYtMS4yOUgxMFY3aDIuNjJsLTEuMzcgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lOE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMS41aDIuNWMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDExYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtNUgxM1Y4aC0xLjVWNi41em0wIDIuNUgxM3YxLjVoLTEuNVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lOU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwLjV2LTRjMC0uNTUtLjQ1LTEtMS0xSDExYy0uNTUgMC0xIC40NS0xIDFWOGMwIC41NS40NSAxIDEgMWgydjFoLTN2MS41aDMuNWMuNTUgMCAxLS40NSAxLTF6TTEzIDhoLTEuNVY2LjVIMTNWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEFQaG90byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZoLTMuMTdMMTYgNGgtNnYyaDUuMTJsMS44MyAySDIxdjEySDV2LTlIM3Y5YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpNOCAxNGMwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01LTIuMjQtNS01LTUtNSAyLjI0LTUgNXptNS0zYzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM3pNNSA2aDNWNEg1VjFIM3YzSDB2MmgzdjNoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFBob3RvQWx0ZXJuYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyMEg0VjZoOVY0SDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ2OXptLTcuNzktMy4xNy0xLjk2LTIuMzZMNS41IDE4aDExbC0zLjU0LTQuNzF6TTIwIDRWMWgtMnYzaC0zYy4wMS4wMSAwIDIgMCAyaDN2Mi45OWMuMDEuMDEgMiAwIDIgMFY2aDNWNGgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFRvUGhvdG9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyem0tNy0xaDJ2LTRoNFY5aC00VjVoLTJ2NEg5djJoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkanVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMCAxMC00LjQ5IDEwLTEwUzE3LjUxIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMtOGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbmltYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyYy0yLjcxIDAtNS4wNSAxLjU0LTYuMjIgMy43OGE3LjA2MiA3LjA2MiAwIDAgMC0zIDNBNy4wMTQgNy4wMTQgMCAwIDAgMiAxNWMwIDMuODcgMy4xMyA3IDcgNyAyLjcxIDAgNS4wNS0xLjU0IDYuMjItMy43OGE3LjA2MiA3LjA2MiAwIDAgMCAzLTNBNy4wMTQgNy4wMTQgMCAwIDAgMjIgOWMwLTMuODctMy4xMy03LTctN3pNOSAyMGE1LjAwMiA1LjAwMiAwIDAgMS00LThjMCAzLjg3IDMuMTMgNyA3IDctLjg0LjYzLTEuODggMS0zIDF6bTMtM2E1LjAwMiA1LjAwMiAwIDAgMS00LThjMCAzLjg2IDMuMTMgNi45OSA3IDctLjg0LjYzLTEuODggMS0zIDF6bTQuNy0zLjNjLS41My4xOS0xLjEuMy0xLjcuMy0yLjc2IDAtNS0yLjI0LTUtNSAwLS42LjExLTEuMTcuMy0xLjcuNTMtLjE5IDEuMS0uMyAxLjctLjMgMi43NiAwIDUgMi4yNCA1IDUgMCAuNi0uMTEgMS4xNy0uMyAxLjd6TTE5IDEyYzAtMy44Ni0zLjEzLTYuOTktNy03YTUuMDAyIDUuMDAyIDAgMCAxIDcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lzdGFudFBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi4zNiA2IC4wOC4zOS4zMiAxLjYxSDE4djZoLTMuMzZsLS4wOC0uMzktLjMyLTEuNjFIN1Y2aDUuMzZNMTQgNEg1djE3aDJ2LTdoNS42bC40IDJoN1Y2aC01LjZMMTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lzdGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDRsMyAzIDMtM2g0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTQuODNsLS41OS41OUwxMiAyMC4xN2wtMS41OS0xLjU5LS41OC0uNThINVY0aDE0djE0em0tNy0xIDEuODgtNC4xMkwxOCAxMWwtNC4xMi0xLjg4TDEyIDVsLTEuODggNC4xMkw2IDExbDQuMTIgMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1ZGlvdHJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDN2MTAuNTVjLS41OS0uMzQtMS4yNy0uNTUtMi0uNTUtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00VjdoNFYzaC02em0tMiAxNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvQXdlc29tZU1vc2FpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGEyIDIgMCAwIDAgMiAyaDZWM0g1YTIgMiAwIDAgMC0yIDJ6bTYgMTRINVY1aDR2MTR6TTE5IDNoLTZ2OGg4VjVjMC0xLjEtLjktMi0yLTJ6bTAgNmgtNFY1aDR2NHpNMTMgMjFoNmMxLjEgMCAyLS45IDItMnYtNmgtOHY4em0yLTZoNHY0aC00di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXV0b0F3ZXNvbWVNb3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDRjLTEuMSAwLTIgLjktMiAydjEwaDJWNGgxMFYyem00IDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTBoMlY4aDEwVjZ6bTIgNGgtOGMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC0xLjEtLjktMi0yLTJ6bTAgMTBoLTh2LThoOHY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXV0b0F3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA5IDEuMjUtMi43NUwyMyA1bC0yLjc1LTEuMjVMMTkgMWwtMS4yNSAyLjc1TDE1IDVsMi43NSAxLjI1ek0xOSAxNWwtMS4yNSAyLjc1TDE1IDE5bDIuNzUgMS4yNUwxOSAyM2wxLjI1LTIuNzVMMjMgMTlsLTIuNzUtMS4yNXpNMTEuNSA5LjUgOSA0IDYuNSA5LjUgMSAxMmw1LjUgMi41TDkgMjBsMi41LTUuNUwxNyAxMmwtNS41LTIuNXptLTEuNTEgMy40OUw5IDE1LjE3bC0uOTktMi4xOEw1LjgzIDEybDIuMTgtLjk5TDkgOC44M2wuOTkgMi4xOCAyLjE4Ljk5LTIuMTguOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvRml4SGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwIDcgLjk0LTIuMDZMMjMgNGwtMi4wNi0uOTRMMjAgMWwtLjk0IDIuMDZMMTcgNGwyLjA2Ljk0ek04LjUgN2wuOTQtMi4wNkwxMS41IDRsLTIuMDYtLjk0TDguNSAxbC0uOTQgMi4wNkw1LjUgNGwyLjA2Ljk0ek0yMCAxMi41bC0uOTQgMi4wNi0yLjA2Ljk0IDIuMDYuOTQuOTQgMi4wNi45NC0yLjA2TDIzIDE1LjVsLTIuMDYtLjk0ek0xNy43MSA5LjEybC0yLjgzLTIuODNjLS4yLS4xOS0uNDUtLjI5LS43MS0uMjktLjI2IDAtLjUxLjEtLjcxLjI5TDIuMjkgMTcuNDZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDIuODMgMi44M2MuMi4yLjQ1LjMuNzEuM3MuNTEtLjEuNzEtLjI5bDExLjE3LTExLjE3Yy4zOS0uMzkuMzktMS4wMyAwLTEuNDJ6bS0zLjU0LS43IDEuNDEgMS40MUwxNC40MSAxMSAxMyA5LjU5bDEuMTctMS4xN3pNNS44MyAxOS41OWwtMS40MS0xLjQxTDExLjU5IDExIDEzIDEyLjQxbC03LjE3IDcuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvRml4Tm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAgNyAuOTQtMi4wNkwyMyA0bC0yLjA2LS45NEwyMCAxbC0uOTQgMi4wNkwxNyA0bDIuMDYuOTR6TTE3LjcxIDkuMTJsLTIuODMtMi44M2MtLjItLjE5LS40NS0uMjktLjcxLS4yOS0uMjYgMC0uNTEuMS0uNzEuMjlMMi4yOSAxNy40NmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi44MyAyLjgzYy4yLjIuNDUuMy43MS4zcy41MS0uMS43MS0uMjlsMTEuMTctMTEuMTdjLjM5LS4zOS4zOS0xLjAzIDAtMS40MnptLTMuNTQtLjcgMS40MSAxLjQxTDE0LjQxIDExIDEzIDkuNTlsMS4xNy0xLjE3ek01LjgzIDE5LjU5bC0xLjQxLTEuNDFMMTEuNTkgMTEgMTMgMTIuNDFsLTcuMTcgNy4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9GaXhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMCA3IC45NC0yLjA2TDIzIDRsLTIuMDYtLjk0TDIwIDFsLS45NCAyLjA2TDE3IDRsMi4wNi45NHpNMTQuMTcgOC40MmwxLjQxIDEuNDEtMS40NiAxLjQ2IDEuNDEgMS40MSAyLjE3LTIuMTdhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjgzLTIuODNhLjk4NC45ODQgMCAwIDAtLjctLjI5Yy0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMTcgMi4xNyAxLjQxIDEuNDEgMS40Ny0xLjQ1ek0xLjM5IDQuMjJsNy4wNyA3LjA3LTYuMTcgNi4xN2EuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi44MyAyLjgzYy4yLjIuNDUuMy43MS4zcy41MS0uMS43MS0uMjlsNi4xNy02LjE3IDcuMDcgNy4wNyAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptOS45IDkuOS01LjQ2IDUuNDYtMS40MS0xLjQxIDUuNDYtNS40NiAxLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvU3RvcmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjQ3IDUuMmMtLjQ3LS4yNC0uOTYtLjQ0LTEuNDctLjYxdjEyLjAzYy0xLjE0LS40MS0yLjMxLS42Mi0zLjUtLjYyLTEuOSAwLTMuNzguNTQtNS41IDEuNThWNS40OEMxMC4zOCA0LjU1IDguNTEgNCA2LjUgNGMtMS43OSAwLTMuNDguNDQtNC45NyAxLjItLjMzLjE2LS41My41MS0uNTMuODh2MTIuMDhjMCAuNTguNDcuOTkgMSAuOTkuMTYgMCAuMzItLjA0LjQ4LS4xMkMzLjY5IDE4LjQgNS4wNSAxOCA2LjUgMThjMi4wNyAwIDMuOTguODIgNS41IDIgMS41Mi0xLjE4IDMuNDMtMiA1LjUtMiAxLjQ1IDAgMi44MS40IDQuMDIgMS4wNC4xNi4wOC4zMi4xMi40OC4xMi41MiAwIDEtLjQxIDEtLjk5VjYuMDhjMC0uMzctLjItLjcyLS41My0uODh6TTEwIDE2LjYyQzguODYgMTYuMjEgNy42OSAxNiA2LjUgMTZzLTIuMzYuMjEtMy41LjYyVjYuNzFDNC4xMSA2LjI0IDUuMjggNiA2LjUgNmMxLjIgMCAyLjM5LjI1IDMuNS43MnY5Ljl6TTE5IC41bC01IDVWMTVsNS00LjVWLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvZnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDMgNi4zaC0uMDZsLTEuMDIgMi44OWgyLjF6TTMgMTdoMnY1SDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE1YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnptLS42My0xMGgxLjI1bDIuNjMgN2gtMS4yMWwtLjYzLTEuNzloLTIuODNMOS45NiAxMkg4Ljc0bDIuNjMtN3pNNyAxN2gydjVIN3pNMTEgMTdoMnY1aC0yek0xNSAxN2g2djVoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCZWR0aW1lT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yNyA0LjQ5Yy0uMTMuNTktLjIgMS4xNS0uMjQgMS43MWwyLjA1IDIuMDVjLS4yNy0yLjA1LjEtNC4yMiAxLjI2LTYuMjMtLjEyIDAtLjIzLS4wMS0uMzUtLjAxYTkuOSA5LjkgMCAwIDAtNS41IDEuNjVsMS40NiAxLjQ2Yy40Mi0uMjQuODYtLjQ2IDEuMzItLjYzem0tNy44OC0uMjcgMi4yNyAyLjI3QTkuOTM0IDkuOTM0IDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4wNCAwIDMuOTItLjYzIDUuNS0xLjY3bDIuMjggMi4yOCAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptMy43NCAzLjc0IDEwLjkyIDEwLjkyQzE0Ljg0IDE5LjYgMTMuNDUgMjAgMTIgMjBjLTQuNDEgMC04LTMuNTktOC04IDAtMS40OC40Mi0yLjg1IDEuMTMtNC4wNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZHRpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI3IDQuNDljLTEuNjMgNy41NCAzLjc1IDEyLjQxIDcuNjYgMTMuOEE3Ljk5MyA3Ljk5MyAwIDAgMSAxMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0zLjQ1IDIuMi02LjQgNS4yNy03LjUxbTIuNzItMi40OEM2LjQgMi4wMSAyIDYuNTQgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAzLjcxIDAgNi45My0yLjAyIDguNjYtNS4wMi03LjUxLS4yNS0xMi4wOS04LjQzLTguMzItMTQuOTdoLS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdXJDaXJjdWxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNNyA5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zIDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tMy0zYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMy02Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTQgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTEuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTMgNmMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtNGMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0yLTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtMy41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVyTGluZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE3LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6TTkgMTNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC00Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6TTMgMjFoMTh2LTJIM3Yyek01IDkuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTNS44MyA2LjUgNSA2LjUgMy41IDcuMTcgMy41IDggNC4xNyA5LjUgNSA5LjV6bTAgNGMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem04LS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMyAzdjJoMThWM0gzem0xNCA1LjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0wIDRjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMyA5Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjggMTEuNDguMi4wMmMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNWwuMDIuMmMuMDkuNjcuNjEgMS4xOSAxLjI4IDEuMjh6TTE0IDMuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bS00IDBjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTAuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAyMC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNy03Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptLTE4IDBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDExYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDUuMjcgNiA4Ljc3bC4yOC4yOEw2IDljLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xYzAtLjEtLjAzLS4xOS0uMDYtLjI4bDIuODEgMi44MWMtLjcxLjExLTEuMjUuNzMtMS4yNSAxLjQ3IDAgLjgzLjY3IDEuNSAxLjUgMS41Ljc0IDAgMS4zNi0uNTQgMS40Ny0xLjI1bDIuODEgMi44MUEuODc1Ljg3NSAwIDAgMCAxNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTFjMC0uMS0uMDMtLjE5LS4wNi0uMjhsMy43OCAzLjc4aC4wMWwxLjQxLTEuNDFMMy45MSAzLjg2IDIuNSA1LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmx1ck9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zIC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiA1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTE1IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC0zLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tMTEgMTBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTE3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDUuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTggLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMyA4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0xNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS00LTEyYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMCA4LjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wLTRjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04bTAtMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3MyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0YzQuNDEgMCA4IDMuNTkgOCA4cy0zLjU5IDgtOCA4Yy0uMzQgMC0uNjgtLjAyLTEuMDEtLjA3QzEwLjkgMTcuNzcgMTIgMTQuOTUgMTIgMTJzLTEuMS01Ljc3LTMuMDEtNy45M0M5LjMyIDQuMDIgOS42NiA0IDEwIDRtMC0yYy0xLjgyIDAtMy41My41LTUgMS4zNUM3Ljk5IDUuMDggMTAgOC4zIDEwIDEycy0yLjAxIDYuOTItNSA4LjY1QzYuNDcgMjEuNSA4LjE4IDIyIDEwIDIyYzUuNTIgMCAxMC00LjQ4IDEwLTEwUzE1LjUyIDIgMTAgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3MzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi43IDQuOTFBOCA4IDAgMCAxIDE3IDEyYTggOCAwIDAgMS00LjMgNy4wOWMxLjQ2LTIgMi4zLTQuNDYgMi4zLTcuMDlzLS44NC01LjA5LTIuMy03LjA5TTkgMmMtMS4wNSAwLTIuMDUuMTYtMyAuNDYgNC4wNiAxLjI3IDcgNS4wNiA3IDkuNTRzLTIuOTQgOC4yNy03IDkuNTRjLjk1LjMgMS45NS40NiAzIC40NiA1LjUyIDAgMTAtNC40OCAxMC0xMFMxNC41MiAyIDkgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3M0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6TTEyLjI5IDdjLS43NCAwLTEuNDUuMTctMi4wOC40NiAxLjcyLjc5IDIuOTIgMi41MyAyLjkyIDQuNTRzLTEuMiAzLjc1LTIuOTIgNC41NGMuNjMuMjkgMS4zNC40NiAyLjA4LjQ2IDIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIgNi41Yy0zLjAzIDAtNS41IDIuNDctNS41IDUuNXMyLjQ3IDUuNSA1LjUgNS41IDUuNS0yLjQ3IDUuNS01LjUtMi40Ny01LjUtNS41LTUuNXptMCA5Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3M2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6TTEyIDYuNXYxMWMzLjAzIDAgNS41LTIuNDcgNS41LTUuNVMxNS4wMyA2LjUgMTIgNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIgNi41Yy0zLjAzIDAtNS41IDIuNDctNS41IDUuNXMyLjQ3IDUuNSA1LjUgNS41IDUuNS0yLjQ3IDUuNS01LjUtMi40Ny01LjUtNS41LTUuNXptMCA5Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcm9rZW5JbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINXYtNC41OGwuOTkuOTkgNC00IDQgNCA0LTMuOTlMMTkgMTIuNDNWMTl6bTAtOS40MS0xLjAxLTEuMDEtNCA0LjAxLTQtNC00IDQtLjk5LTFWNWgxNHY0LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJ1c2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTZjLjU1IDAgMSAuNDUgMSAxIDAgMS4xLS45IDItMiAyLS4xNyAwLS4zMy0uMDItLjUtLjA1LjMxLS41NS41LTEuMjEuNS0xLjk1IDAtLjU1LjQ1LTEgMS0xTTE4LjY3IDNjLS4yNiAwLS41MS4xLS43MS4yOUw5IDEyLjI1IDExLjc1IDE1bDguOTYtOC45NmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTEuMzQtMS4zNGMtLjItLjItLjQ1LS4yOS0uNy0uMjl6TTcgMTRjLTEuNjYgMC0zIDEuMzQtMyAzIDAgMS4zMS0xLjE2IDItMiAyIC45MiAxLjIyIDIuNDkgMiA0IDIgMi4yMSAwIDQtMS43OSA0LTQgMC0xLjY2LTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdXJzdE1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDVoMnYxNEgxem00IDBoMnYxNEg1em0xNyAwSDEwYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgxMVY3aDEwdjEwem0tMy41Ny00LjM4LTIgMi41N0wxNCAxMy40N2wtMiAyLjUyaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmFBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRoLTMuMTdMMTUgMkg5TDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDQuMDVsMS44My0yaDQuMjRsMS44MyAySDIwdjEyek0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMCA4Yy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYUZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIwdjJoNXYybDMtMy0zLTN2MnptOSAwaDV2MmgtNXpNMTEuOTkgOEMxMy4xIDggMTQgNy4xIDE0IDZzLS45LTItMi4wMS0yUzEwIDQuOSAxMCA2cy44OSAyIDEuOTkgMnpNMTcgMEg3QzUuOSAwIDUgLjkgNSAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMnptMCAxNkg3di0yaDEwdjJ6bTAtMy41YzAtMS42Ny0zLjMzLTIuNS01LTIuNXMtNSAuODMtNSAyLjVWMmgxMHYxMC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtZXJhUmVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyMHYyaDV2MmwzLTMtMy0zdjJ6bTkgMGg1djJoLTV6bTMtMjBIN0M1LjkgMCA1IC45IDUgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YyaDEwdjE0em0tNS05YzEuMSAwIDItLjkgMS45OS0yIDAtMS4xLS45LTItMi0yUzEwIDMuOSAxMCA1cy44OSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYVJvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDVjMC0xLjEtLjktMi0yLTJoLTFWMmMwLS41NS0uNDUtMS0xLTFINmMtLjU1IDAtMSAuNDUtMSAxdjFINGMtMS4xIDAtMiAuOS0yIDJ2MTVjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yaDhWNWgtOHptNiAxM2gtOHYySDRWNWgzVjNoMnYyaDN2Mmg4djExek05IDE1aDJ2Mkg5em0wLTdoMnYySDl6bTQgN2gydjJoLTJ6bTAtN2gydjJoLTJ6bTQgN2gydjJoLTJ6bTAtN2gydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjI1IDIuMjYtLjA4LS4wNC0uMDEuMDJDMTMuNDYgMi4wOSAxMi43NCAyIDEyIDIgNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTQuNzUtMy4zMS04LjcyLTcuNzUtOS43NHpNMTkuNDEgOWgtNy45OWwyLjcxLTQuN2MyLjQuNjYgNC4zNSAyLjQyIDUuMjggNC43ek0xMy4xIDQuMDggMTAuMjcgOWwtMS4xNSAyTDYuNCA2LjNBNy45NTggNy45NTggMCAwIDEgMTIgNGMuMzcgMCAuNzQuMDMgMS4xLjA4ek01LjcgNy4wOSA4LjU0IDEybDEuMTUgMkg0LjI2QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJjMC0xLjg1LjY0LTMuNTUgMS43LTQuOTF6TTQuNTkgMTVoNy45OGwtMi43MSA0LjdBOC4wMzMgOC4wMzMgMCAwIDEgNC41OSAxNXptNi4zMSA0LjkxTDE0Ljg5IDEzbDIuNzIgNC43QTggOCAwIDAgMSAxMiAyMGMtLjM4IDAtLjc0LS4wNC0xLjEtLjA5em03LjQtMy00LTYuOTFoNS40M2MuMTcuNjQuMjcgMS4zMS4yNyAyIDAgMS44NS0uNjQgMy41NS0xLjcgNC45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhc2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5SDF2MTFjMCAxLjExLjg5IDIgMiAyaDE3di0ySDNWOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNVYzYzAtMS4xLS45LTItMi0yaC00Yy0xLjEgMC0yIC45LTIgMnYySDV2MTFjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem05IDEzSDdWN2gxNHY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2VudGVyRm9jdXNTdHJvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1IDIuMjQgNSA1IDUgNS0yLjI0IDUtNXptLTUgM2MtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6bS03IDBIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00ek01IDVoNFYzSDVjLTEuMSAwLTIgLjktMiAydjRoMlY1em0xNC0yaC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtNHYyaDRjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNlbnRlckZvY3VzV2VhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNUgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTcgM2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTctMTFoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2xsZWN0aW9uc0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0zIDJ2NWwtMS0uNzVMMTUgOVY0aDJ6bTMgMTJIOFY0aDV2OWwzLTIuMjVMMTkgMTNWNGgxdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29sbGVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDR2MTJIOFY0aDEybTAtMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS04LjUgOS42NyAxLjY5IDIuMjYgMi40OC0zLjFMMTkgMTVIOXpNMiA2djE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2xvckxlbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMkM2LjQ5IDIyIDIgMTcuNTEgMiAxMlM2LjQ5IDIgMTIgMnMxMCA0LjA0IDEwIDljMCAzLjMxLTIuNjkgNi02IDZoLTEuNzdjLS4yOCAwLS41LjIyLS41LjUgMCAuMTIuMDUuMjMuMTMuMzMuNDEuNDcuNjQgMS4wNi42NCAxLjY3QTIuNSAyLjUgMCAwIDEgMTIgMjJ6bTAtMThjLTQuNDEgMC04IDMuNTktOCA4czMuNTkgOCA4IDhjLjI4IDAgLjUtLjIyLjUtLjVhLjU0LjU0IDAgMCAwLS4xNC0uMzVjLS40MS0uNDYtLjYzLTEuMDUtLjYzLTEuNjVhMi41IDIuNSAwIDAgMSAyLjUtMi41SDE2YzIuMjEgMCA0LTEuNzkgNC00IDAtMy44Ni0zLjU5LTctOC03elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjExLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjkuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTQuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTcuNVwiLFwiY3lcIjpcIjExLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29sb3JpemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjY2IDUuNDEuOTIuOTItMi42OSAyLjY5LS45Mi0uOTIgMi42OS0yLjY5TTE3LjY3IDNjLS4yNiAwLS41MS4xLS43MS4yOWwtMy4xMiAzLjEyLTEuOTMtMS45MS0xLjQxIDEuNDEgMS40MiAxLjQyTDMgMTYuMjVWMjFoNC43NWw4LjkyLTguOTIgMS40MiAxLjQyIDEuNDEtMS40MS0xLjkyLTEuOTIgMy4xMi0zLjEyYy40LS40LjQtMS4wMy4wMS0xLjQybC0yLjM0LTIuMzRjLS4yLS4xOS0uNDUtLjI5LS43LS4yOXpNNi45MiAxOSA1IDE3LjA4bDguMDYtOC4wNiAxLjkyIDEuOTJMNi45MiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbXBhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1djJoMlYxaC0ydjJ6bTAgMTVINWw1LTZ2NnptOS0xNWgtNXYyaDV2MTNsLTUtNnY5aDVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRyYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bTEtMTcuOTNjMy45NC40OSA3IDMuODUgNyA3Ljkzcy0zLjA1IDcuNDQtNyA3LjkzVjQuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250cm9sUG9pbnREdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTNWOHpNMiAxMmMwLTIuNzkgMS42NC01LjIgNC4wMS02LjMyVjMuNTJDMi41MiA0Ljc2IDAgOC4wOSAwIDEyczIuNTIgNy4yNCA2LjAxIDguNDh2LTIuMTZBNi45OSA2Ljk5IDAgMCAxIDIgMTJ6bTEzLTljLTQuOTYgMC05IDQuMDQtOSA5czQuMDQgOSA5IDkgOS00LjA0IDktOS00LjA0LTktOS05em0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRyb2xQb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JvcDE2OSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdINWMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bTAgOEg1VjloMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3AzMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZINWMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBINVY4aDE0djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wNTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg1VjZoMTR2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wNzUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxMkg1VjdoMTR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wRGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JvcEZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXY0aDJWNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ6bTIgMTBIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00em0xNCA0aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0em0wLTE2aC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVINWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDEySDVWN2gxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BPcmlnaW5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNS4wNC02LjcxLTIuNzUgMy41NC0xLjk2LTIuMzZMNi41IDE3aDExbC0zLjU0LTQuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BSb3RhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDcgMjEuNDlDNC4yIDE5LjkzIDEuODYgMTYuNzYgMS41IDEzSDBjLjUxIDYuMTYgNS42NiAxMSAxMS45NSAxMSAuMjMgMCAuNDQtLjAyLjY2LS4wM0w4LjggMjAuMTVsLTEuMzMgMS4zNHpNMTIuMDUgMGMtLjIzIDAtLjQ0LjAyLS42Ni4wNGwzLjgxIDMuODEgMS4zMy0xLjMzQzE5LjggNC4wNyAyMi4xNCA3LjI0IDIyLjUgMTFIMjRjLS41MS02LjE2LTUuNjYtMTEtMTEuOTUtMTF6TTE2IDE0aDJWOGEyIDIgMCAwIDAtMi0yaC02djJoNnY2em0tOCAyVjRINnYySDR2MmgydjhhMiAyIDAgMCAwIDIgMmg4djJoMnYtMmgydi0ySDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg2VjZoMTJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNWgyVjdjMC0xLjEtLjktMi0yLTJIOXYyaDh2OHpNNyAxN1YxSDV2NEgxdjJoNHYxMGMwIDEuMS45IDIgMiAyaDEwdjRoMnYtNGg0di0ySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeUJpdGNvaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4wNiAxMS41N2MuNTktLjY5Ljk0LTEuNTkuOTQtMi41NyAwLTEuODYtMS4yNy0zLjQzLTMtMy44N1YzaC0ydjJoLTJWM0g5djJINnYyaDJ2MTBINnYyaDN2Mmgydi0yaDJ2Mmgydi0yYzIuMjEgMCA0LTEuNzkgNC00IDAtMS40NS0uNzgtMi43My0xLjk0LTMuNDN6TTEwIDdoNGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJoLTRWN3ptNSAxMGgtNXYtNGg1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnJlbmN5RnJhbmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1VjNIN3YxM0g1djJoMnYzaDJ2LTNoNHYtMkg5di0zaDh2LTJIOVY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3VycmVuY3lMaXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA4Ljc2VjNoMnY0LjUxTDE1IDV2Mi4zNmwtNCAyLjUxLjAxIDIuMzVMMTUgOS43MnYyLjM2bC00IDIuNTFWMTljMi43NiAwIDUtMi4yNCA1LTVoMmMwIDMuODctMy4xMyA3LTcgN0g5di01LjE2bC0zIDEuODh2LTIuMzZsMy0xLjg4di0yLjM2TDYgMTN2LTIuMzZsMy0xLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3VycmVuY3lQb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDIxYzEuOTMgMCAzLjYyLTEuMTcgNC0zbC0xLjc1LS44OEMxNiAxOC4yMSAxNS4zMyAxOSAxNCAxOUg5LjFjLjgzLTEgMS41LTIuMzQgMS41LTQgMC0uMzUtLjAzLS42OS0uMDgtMUgxNHYtMkg5LjgyQzkgMTAuNDIgOCA5LjYgOCA4YTMuNSAzLjUgMCAwIDEgNi43OC0xLjIyTDE2LjYzIDZjLS44LTIuMDUtMi43OS0zLjUtNS4xMy0zLjVDOC40NiAyLjUgNiA0Ljk2IDYgOGMwIDEuNzguNzkgMi45IDEuNDkgNEg2djJoMi40N2MuMDguMzEuMTMuNjQuMTMgMSAwIDIuNy0yLjYgNC0yLjYgNHYyaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVJ1YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSAzSDd2OUg1djJoMnYySDV2MmgydjNoMnYtM2g0di0ySDl2LTJoNC41YzMuMDQgMCA1LjUtMi40NiA1LjUtNS41UzE2LjU0IDMgMTMuNSAzem0wIDlIOVY1aDQuNUMxNS40MyA1IDE3IDYuNTcgMTcgOC41UzE1LjQzIDEyIDEzLjUgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVJ1cGVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNjYgN2MtLjU2LTEuMTgtMS43Ni0yLTMuMTYtMkg2VjNoMTJ2MmgtMy4yNmMuNDguNTguODQgMS4yNiAxLjA1IDJIMTh2MmgtMi4wMmMtLjI1IDIuOC0yLjYxIDUtNS40OCA1aC0uNzNsNi43MyA3aC0yLjc3TDcgMTR2LTJoMy41YzEuNzYgMCAzLjIyLTEuMyAzLjQ2LTNINlY3aDcuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDExSDE4djJoLTV2Mmg1djJoLTV2NGgtMnYtNEg2di0yaDV2LTJINnYtMmg0LjA4TDUgM2gyLjM3TDEyIDEwLjI5IDE2LjYzIDNIMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVl1YW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4yOCAxMkgxOHYyaC01djdoLTJ2LTdINnYtMmg0LjcyTDUgM2gyLjM3TDEyIDEwLjI5IDE2LjYzIDNIMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWJsdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjNcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjNcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjIxXCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiM1wiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjEwXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDN2MmMzLjg2IDAgNyAzLjE0IDcgN3MtMy4xNCA3LTcgN3YyYzQuOTYgMCA5LTQuMDQgOS05cy00LjA0LTktOS05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVoYXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2djJoMjB2LTJIMnptMC01djJoMjB2LTJIMnptMC01djJoMjBWNkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV0YWlscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMiAyMWgyMEwxMiAzem0xIDUuOTJMMTguNiAxOUgxM1Y4Ljkyem0tMiAwVjE5SDUuNEwxMSA4LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlydHlMZW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtMy4xN0wxNSAzSDlMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNGgtNy4wMmMtLjIyLS44NC0uNTItMS43Ni0uMTMtMi4zMy44MS0xLjEyIDIuNjcgMS43NyAzLjgxLS4wOS43Ny0xLjU3LTEuNTgtMS4yOS0xLjY0LTIuMTItLjA1LS44NCAzLjY4LjE3IDMuMDQtMS42Ni0uNjEtMS43My0yLjQyLjQ4LTIuNzYtLjUzLS41OC0xLjc0IDQuNy0xLjY4IDIuODUtNC4wMS0xLjc2LTIuMjItMi40NyAyLjg1LTQuNDEgMi4zMy0xLjM0LS4zNi0xLjAxLTIuODgtMi42NS0yLjQ0LTEuODguNTEgMS4wMyAyLjIgMCAyLjg2LS45Ni42My0xLjcyLS45Mi0yLjUxLTEuMTktLjItLjA3LS42OS0uMDUtLjkxLjE5LS43OC44Ni4yOCAxLjE2LjI1IDEuOTEtLjAyLjc1LTEuNTkuNDktMS41MSAxLjQ5LjEyIDEuNiAyLjE4LjQ1IDIuNCAxLjI0LjU1IDEuOTgtMS44OSAyLjE1LS41IDMuMjcgMS41My43MSAxLjkxLTEuOTQgMi44LTEuMzUuNTguMzguMyAxLjQ1LjE2IDIuNDNINFY3aDQuMDVsMS44My0yaDQuMjRsMS44MyAySDIwdjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4yOCAxNy4xNWMwIC40OC4zOS44Ni44Ni44Ni40OCAwIC44Ni0uMzguODYtLjg2cy0uMzktLjg2LS44Ni0uODZjLS40OCAwLS44Ni4zOC0uODYuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4wNiA5LjAyLjkyLjkyTDUuOTIgMTlINXYtLjkybDkuMDYtOS4wNk0xNy42NiAzYy0uMjUgMC0uNTEuMS0uNy4yOWwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRjLS4yLS4yLS40NS0uMjktLjcxLS4yOXptLTMuNiAzLjE5TDMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTguNUE2LjQ4IDYuNDggMCAwIDEgOS4yNCAxNUgxNWwxLTJIOC41OGMtLjA1LS4zMy0uMDgtLjY2LS4wOC0xcy4wMy0uNjcuMDgtMUgxNWwxLTJIOS4yNEE2LjQ5MSA2LjQ5MSAwIDAgMSAxNSA1LjVjMS42MSAwIDMuMDkuNTkgNC4yMyAxLjU3TDIxIDUuM0E4Ljk1NSA4Ljk1NSAwIDAgMCAxNSAzYy0zLjkyIDAtNy4yNCAyLjUxLTguNDggNkgzbC0xIDJoNC4wNmE4LjI2MiA4LjI2MiAwIDAgMCAwIDJIM2wtMSAyaDQuNTJjMS4yNCAzLjQ5IDQuNTYgNiA4LjQ4IDYgMi4zMSAwIDQuNDEtLjg3IDYtMi4zbC0xLjc4LTEuNzdjLTEuMTMuOTgtMi42IDEuNTctNC4yMiAxLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwb3N1cmVOZWcxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExdjJoOHYtMkg0em0xNSA3aC0yVjcuMzhMMTQgOC40VjYuN0wxOC43IDVoLjN2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBvc3VyZU5lZzIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjA1IDE2LjI5IDIuODYtMy4wN2MuMzgtLjM5LjcyLS43OSAxLjA0LTEuMTguMzItLjM5LjU5LS43OC44Mi0xLjE3cy40MS0uNzguNTQtMS4xNy4xOS0uNzkuMTktMS4xOGMwLS41My0uMDktMS4wMi0uMjctMS40NnMtLjQ0LS44MS0uNzgtMS4xMWMtLjM0LS4zMS0uNzctLjU0LTEuMjYtLjcxQTUuNzIgNS43MiAwIDAgMCAxNi40NyA1Yy0uNjkgMC0xLjMxLjExLTEuODUuMzItLjU0LjIxLTEgLjUxLTEuMzYuODgtLjM3LjM3LS42NS44LS44NCAxLjMtLjE4LjQ3LS4yNy45Ny0uMjggMS41aDIuMTRjLjAxLS4zMS4wNS0uNi4xMy0uODcuMDktLjI5LjIzLS41NC40LS43NS4xOC0uMjEuNDEtLjM3LjY4LS40OXMuNi0uMTguOTYtLjE4Yy4zMSAwIC41OC4wNS44MS4xNXMuNDMuMjUuNTkuNDMuMjguNC4zNy42NWMuMDguMjUuMTMuNTIuMTMuODEgMCAuMjItLjAzLjQzLS4wOC42NS0uMDYuMjItLjE1LjQ1LS4yOS43LS4xNC4yNS0uMzIuNTMtLjU2LjgzLS4yMy4zLS41Mi42NS0uODggMS4wM2wtNC4xNyA0LjU1VjE4SDIxdi0xLjcxaC01Ljk1ek0yIDExdjJoOHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwb3N1cmVQbHVzMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgN0g4djRINHYyaDR2NGgydi00aDR2LTJoLTRWN3ptMTAgMTFoLTJWNy4zOEwxNSA4LjRWNi43TDE5LjcgNWguM3YxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4cG9zdXJlUGx1czIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjA1IDE2LjI5IDIuODYtMy4wN2MuMzgtLjM5LjcyLS43OSAxLjA0LTEuMTguMzItLjM5LjU5LS43OC44Mi0xLjE3cy40MS0uNzguNTQtMS4xN2MuMTMtLjM5LjE5LS43OS4xOS0xLjE4IDAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2cy0uNDQtLjgxLS43OC0xLjExYy0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzFBNS43MiA1LjcyIDAgMCAwIDE3LjQ3IDVjLS42OSAwLTEuMzEuMTEtMS44NS4zMi0uNTQuMjEtMSAuNTEtMS4zNi44OC0uMzcuMzctLjY1LjgtLjg0IDEuMy0uMTguNDctLjI3Ljk3LS4yOCAxLjVoMi4xNGMuMDEtLjMxLjA1LS42LjEzLS44Ny4wOS0uMjkuMjMtLjU0LjQtLjc1LjE4LS4yMS40MS0uMzcuNjgtLjQ5cy42LS4xOC45Ni0uMThjLjMxIDAgLjU4LjA1LjgxLjE1cy40My4yNS41OS40My4yOC40LjM3LjY1Yy4wOC4yNS4xMy41Mi4xMy44MSAwIC4yMi0uMDMuNDMtLjA4LjY1LS4wNi4yMi0uMTUuNDUtLjI5LjctLjE0LjI1LS4zMi41My0uNTYuODMtLjIzLjMtLjUyLjY1LS44OCAxLjAzbC00LjE3IDQuNTVWMThIMjJ2LTEuNzFoLTUuOTV6TTggN0g2djRIMnYyaDR2NGgydi00aDR2LTJIOFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwb3N1cmVaZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4xNCAxMi41YzAgMS0uMSAxLjg1LS4zIDIuNTVzLS40OCAxLjI3LS44MyAxLjdjLS4zNi40NC0uNzkuNzUtMS4zLjk1cy0xLjA3LjMtMS43LjNjLS42MiAwLTEuMTgtLjEtMS42OS0uMy0uNTEtLjItLjk1LS41MS0xLjMxLS45NXMtLjY1LTEuMDEtLjg1LTEuN2MtLjItLjctLjMtMS41NS0uMy0yLjU1di0yLjA0YzAtMSAuMS0xLjg1LjMtMi41NS4yLS43LjQ4LTEuMjYuODQtMS42OS4zNi0uNDMuOC0uNzQgMS4zMS0uOTNDMTAuODEgNS4xIDExLjM4IDUgMTIgNWMuNjMgMCAxLjE5LjEgMS43LjI5LjUxLjE5Ljk1LjUgMS4zMS45My4zNi40My42NC45OS44NCAxLjY5LjIuNy4zIDEuNTQuMyAyLjU1djIuMDRoLS4wMXptLTIuMTEtMi4zNmMwLS42NC0uMDUtMS4xOC0uMTMtMS42Mi0uMDktLjQ0LS4yMi0uNzktLjQtMS4wNi0uMTctLjI3LS4zOS0uNDYtLjY0LS41OC0uMjUtLjEzLS41NC0uMTktLjg2LS4xOXMtLjYxLjA2LS44Ni4xOC0uNDcuMzEtLjY0LjU4LS4zMS42Mi0uNCAxLjA2LS4xMy45OC0uMTMgMS42MnYyLjY3YzAgLjY0LjA1IDEuMTguMTQgMS42Mi4wOS40NS4yMy44MS40IDEuMDlzLjM5LjQ4LjY0LjYxLjU0LjE5Ljg3LjE5LjYyLS4wNi44Ny0uMTkuNDYtLjMzLjYzLS42MS4zLS42NC4zOS0xLjA5LjEzLS45OS4xMy0xLjYydi0yLjY2aC0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBvc3VyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMS40MSAyTDUgMTcuNTlWNWgxMi41OXpNNi40MSAxOSAxOSA2LjQxVjE5SDYuNDF6TTYgN2g1djEuNUg2em0xMCA1LjVoLTEuNXYyaC0yVjE2aDJ2MkgxNnYtMmgydi0xLjVoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlUmV0b3VjaGluZ05hdHVyYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS44OSAxMC43NWMuMDcuNDEuMTEuODIuMTEgMS4yNSAwIDQuNDEtMy41OSA4LTggOHMtOC0zLjU5LTgtOGMwLS4wNS4wMS0uMSAwLS4xNCAyLjYtLjk4IDQuNjktMi45OSA1Ljc0LTUuNTUgMy4zOCA0LjE0IDcuOTcgMy43MyA4Ljk5IDMuNjFsLS44OS0xLjkzYy0uMTMuMDEtNC42Mi4zOC03LjE4LTMuODYgMS4wMS0uMTYgMS43MS0uMTUgMi41OS0uMDEgMi41Mi0xLjE1IDEuOTMtLjg5IDIuNzYtMS4yNkE5LjYyIDkuNjIgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtMS40My0uMy0yLjc4LS44NC00LjAxbC0xLjI3IDIuNzZ6TTguMDggNS4wM2E4LjA0NiA4LjA0NiAwIDAgMS0zLjY2IDQuNDQgOC4wNDYgOC4wNDYgMCAwIDEgMy42Ni00LjQ0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgNC41LTIuNC0xLjFMMTkuNSAxbC0xLjEgMi40TDE2IDQuNWwyLjQgMS4xTDE5LjUgOGwxLjEtMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZVJldG91Y2hpbmdPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDEwYy43NSAwIDEuNDctLjA5IDIuMTctLjI0LjIxLjcxLjMzIDEuNDYuMzMgMi4yNCAwIDEuMjItLjI4IDIuMzctLjc3IDMuNGwxLjQ5IDEuNDlBOS45ODEgOS45ODEgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMS43OCAwLTMuNDQuNDctNC44OSAxLjI4bDUuMzMgNS4zM2MxLjQ5Ljg4IDMuMjEgMS4zOSA1LjA2IDEuMzl6bS02Ljg0LTUuODhjLjQzLS4wNy44OC0uMTIgMS4zNC0uMTIgMi45IDAgNS40NCAxLjU2IDYuODQgMy44OC0uNDMuMDctLjg4LjEyLTEuMzQuMTItMi45IDAtNS40NC0xLjU2LTYuODQtMy44OHpNMS44OSAzLjcybDIuMTkgMi4xOUE5Ljk1OCA5Ljk1OCAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMjkgMCA0LjQtLjc4IDYuMDktMi4wOGwyLjE5IDIuMTkgMS40MS0xLjQxTDMuMzEgMi4zMSAxLjg5IDMuNzJ6bTE0Ljc3IDE0Ljc3QTcuOTEgNy45MSAwIDAgMSAxMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0uMDUuMDEtLjEgMC0uMTRhOS45NDYgOS45NDYgMCAwIDAgMy42NC0yLjM5bDkuMDIgOS4wMnpNNi4yMyA4LjA2Yy0uNTMuNTUtMS4xNCAxLjAzLTEuODEgMS40MS4yNi0uNzcuNjMtMS40OCAxLjA5LTIuMTNsLjcyLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTExIDEwaDJWNWgtNHYyaDJ2OHptNy0xNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE4LTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHptLTQtNGgtNHYtMmgyYTIgMiAwIDAgMCAyLTJWN2EyIDIgMCAwIDAtMi0yaC00djJoNHYyaC0yYTIgMiAwIDAgMC0yIDJ2NGg2di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMUg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTQgOHYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YTIgMiAwIDAgMC0yLTJoLTR2Mmg0djJoLTJ2MmgydjJoLTR2Mmg0YTIgMiAwIDAgMCAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTIgMTBoMlY1aC0ydjRoLTJWNWgtMnY2aDR2NHptNi0xNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE0IDh2LTJhMiAyIDAgMCAwLTItMmgtMlY3aDRWNWgtNnY2aDR2MmgtNHYyaDRhMiAyIDAgMCAwIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlcjYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmEyIDIgMCAwIDAgMi0ydi0yYTIgMiAwIDAgMC0yLTJoLTJWN2g0VjVoLTRhMiAyIDAgMCAwLTIgMnY2YTIgMiAwIDAgMCAyIDJ6bTAtNGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yIDQtOFY1aC02djJoNGwtNCA4aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yaDJhMiAyIDAgMCAwIDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YTIgMiAwIDAgMC0yLTJoLTJhMiAyIDAgMCAwLTIgMnYxLjVjMCAuODMuNjcgMS41IDEuNSAxLjUtLjgzIDAtMS41LjY3LTEuNSAxLjVWMTNhMiAyIDAgMCAwIDIgMnptMC04aDJ2MmgtMlY3em0wIDRoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyOVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSA3VjhhMiAyIDAgMCAwLTItMmgtMWEyIDIgMCAwIDAtMiAydjFhMiAyIDAgMCAwIDIgMmgxdjFIOXYyaDNhMiAyIDAgMCAwIDItMnptLTMtM1Y4aDF2MWgtMXptMTAtOEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgOGgtMlY3aC0ydjJoLTJ2MmgydjJoMnYtMmgydjZIN1YzaDE0djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0xNSA1aC0yYTIgMiAwIDAgMC0yIDJ2MmEyIDIgMCAwIDAgMiAyaDJ2MmgtNHYyaDRhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJ6bTAgNGgtMlY3aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckJBbmRXIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi03LTh2OEg1bDctOFY1aDd2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJDZW50ZXJGb2N1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNUgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0ek0xMiA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckRyYW1hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNGE3LjQ4IDcuNDggMCAwIDAtNi42NCA0LjA0QTUuOTk2IDUuOTk2IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNGgyYzAtMi43Ni0xLjg2LTUuMDgtNC40LTUuNzhDOC42MSA2Ljg4IDEwLjIgNiAxMiA2YzMuMDMgMCA1LjUgMi40NyA1LjUgNS41di41SDE5YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyRnJhbWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtNGwtNC00LTQgNEg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINFY2aDQuNTJsMy41Mi0zLjVMMTUuNTIgNkgyMHYxNHpNNiAxOGgxMlY4SDZ2MTB6bTItOGg4djZIOHYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckhkciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi00LjIyIDUuNjMgMS4yNSAxLjY3TDE0IDkuMzMgMTkgMTZoLTguNDZsLTQuMDEtNS4zN0wxIDE4aDIyTDE0IDZ6TTUgMTZsMS41Mi0yLjAzTDguMDQgMTZINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlck5vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJUaWx0U2hpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDQuMDdWMi4wNWMtMi4wMS4yLTMuODQgMS01LjMyIDIuMjFMNy4xIDUuNjlBNy45NDEgNy45NDEgMCAwIDEgMTEgNC4wN3ptNy4zMi4xOUE5Ljk0OSA5Ljk0OSAwIDAgMCAxMyAyLjA1djIuMDJjMS40Ni4xOCAyLjc5Ljc2IDMuOSAxLjYybDEuNDItMS40M3pNMTkuOTMgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMyTDE4LjMxIDcuMWE3Ljk0MSA3Ljk0MSAwIDAgMSAxLjYyIDMuOXpNNS42OSA3LjEgNC4yNiA1LjY4QTkuOTQ5IDkuOTQ5IDAgMCAwIDIuMDUgMTFoMi4wMmMuMTgtMS40Ni43Ni0yLjc5IDEuNjItMy45ek00LjA3IDEzSDIuMDVjLjIgMi4wMSAxIDMuODQgMi4yMSA1LjMybDEuNDMtMS40M0E3Ljg2OCA3Ljg2OCAwIDAgMSA0LjA3IDEzek0xNSAxMmMwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzIDMtMS4zNCAzLTN6bTMuMzEgNC45IDEuNDMgMS40M2E5Ljk4MSA5Ljk4MSAwIDAgMCAyLjIxLTUuMzJoLTIuMDJhNy45NDUgNy45NDUgMCAwIDEtMS42MiAzLjg5ek0xMyAxOS45M3YyLjAyYzIuMDEtLjIgMy44NC0xIDUuMzItMi4yMWwtMS40My0xLjQzYy0xLjEuODYtMi40MyAxLjQ0LTMuODkgMS42MnptLTcuMzItLjE5QTkuOTgxIDkuOTgxIDAgMCAwIDExIDIxLjk1di0yLjAyYTcuOTQxIDcuOTQxIDAgMCAxLTMuOS0xLjYybC0xLjQyIDEuNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJWaW50YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC43IDEyLjRhNi4wNiA2LjA2IDAgMCAwLS44Ni0uNGMuMjktLjExLjU4LS4yNC44Ni0uNGE2LjAxMiA2LjAxMiAwIDAgMCAzLTUuMTljLS45MS0uNTItMS45NS0uOC0zLjAxLS44LTEuMDIgMC0yLjA1LjI2LTIuOTkuOC0uMjguMTYtLjU0LjM1LS43OC41NC4wNS0uMzEuMDgtLjYzLjA4LS45NSAwLTIuMjItMS4yMS00LjE1LTMtNS4xOUMxMC4yMSAxLjg1IDkgMy43OCA5IDZjMCAuMzIuMDMuNjQuMDguOTUtLjI0LS4yLS41LS4zOS0uNzgtLjU1LS45NC0uNTQtMS45Ny0uOC0yLjk5LS44LTEuMDUgMC0yLjEuMjgtMy4wMS44YTUuOTcgNS45NyAwIDAgMCAzIDUuMTljLjI4LjE2LjU3LjI5Ljg2LjQtLjI5LjExLS41OC4yNC0uODYuNGE2LjAxMiA2LjAxMiAwIDAgMC0zIDUuMTljLjkxLjUyIDEuOTUuOCAzLjAxLjggMS4wMiAwIDIuMDUtLjI2IDIuOTktLjguMjgtLjE2LjU0LS4zNS43OC0uNTQtLjA1LjMyLS4wOC42NC0uMDguOTYgMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTkgMS43OS0xLjA0IDMtMi45NyAzLTUuMTkgMC0uMzItLjAzLS42NC0uMDgtLjk1LjI0LjIuNS4zOC43OC41NC45NC41NCAxLjk3LjggMi45OS44IDEuMDUgMCAyLjEtLjI4IDMuMDEtLjhhNi4wMTIgNi4wMTIgMCAwIDAtMy01LjE5em0tMi41NC0zLjg4Yy4yMS0uMTcuMzgtLjI5LjU0LS4zNy42MS0uMzUgMS4zLS41NCAyLS41NC4yNyAwIC41My4wMy43OS4wOC0uMzEuOTEtLjk0IDEuNjktMS43OCAyLjE4LS4xNy4xLS4zNi4xOC0uNTguMjdsLTEuMzguNTJjLS4xNy0uNDYtLjQxLS44Ny0uNzItMS4yNGwxLjEzLS45ek0xMiAzLjM3Yy42My43MiAxIDEuNjYgMSAyLjYzIDAgLjE5LS4wMi40MS0uMDUuNjNsLS4yMyAxLjQ0QzEyLjQ4IDguMDMgMTIuMjQgOCAxMiA4cy0uNDguMDMtLjcxLjA3bC0uMjMtMS40NEMxMS4wMiA2LjQxIDExIDYuMTkgMTEgNmMwLS45OC4zNy0xLjkxIDEtMi42M3pNNC41MSA3LjY4Yy4yNi0uMDYuNTMtLjA4LjgtLjA4LjY5IDAgMS4zOC4xOCAxLjk5LjU0LjE1LjA5LjMyLjIuNDkuMzVsMS4xNS45NmMtLjMuMzYtLjUzLjc2LS43IDEuMmwtMS4zOC0uNTJjLS4yMS0uMDktLjQtLjE4LS41Ni0uMjctLjg3LS41LTEuNDktMS4yNy0xLjc5LTIuMTh6bTMuMzMgNy43OWMtLjIxLjE3LS4zOC4yOS0uNTQuMzctLjYxLjM1LTEuMy41NC0yIC41NC0uMjcgMC0uNTMtLjAzLS43OS0uMDguMzEtLjkxLjk0LTEuNjkgMS43OC0yLjE4LjE3LS4xLjM2LS4xOC41OC0uMjdsMS4zOC0uNTJjLjE2LjQ2LjQxLjg4LjcyIDEuMjRsLTEuMTMuOXpNMTIgMjAuNjNjLS42My0uNzItMS0xLjY2LTEtMi42MyAwLS4yLjAyLS40MS4wNi0uNjVsLjIyLTEuNDJjLjIzLjA0LjQ3LjA3LjcyLjA3LjI0IDAgLjQ4LS4wMy43MS0uMDdsLjIzIDEuNDRjLjA0LjIyLjA2LjQ0LjA2LjYzIDAgLjk4LS4zNyAxLjkxLTEgMi42M3ptNi42OS00LjI0YTMuOTE2IDMuOTE2IDAgMCAxLTIuNDgtLjg4bC0xLjE1LS45NmMuMy0uMzYuNTQtLjc2LjctMS4yMWwxLjM4LjUyYy4yMi4wOC40MS4xNy41Ny4yNi44NS40OSAxLjQ3IDEuMjcgMS43OCAyLjE4LS4yNy4wNy0uNTQuMDktLjguMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljk2IDEwLjI5LTIuNzUgMy41NC0xLjk2LTIuMzZMOC41IDE1aDExbC0zLjU0LTQuNzF6TTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMUgxdjJoNnYtMnptMi4xNy0zLjI0TDcuMDUgNS42NCA1LjY0IDcuMDVsMi4xMiAyLjEyIDEuNDEtMS40MXpNMTMgMWgtMnY2aDJWMXptNS4zNiA2LjA1LTEuNDEtMS40MS0yLjEyIDIuMTIgMS40MSAxLjQxIDIuMTItMi4xMnpNMTcgMTF2Mmg2di0yaC02em0tNS0yYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMi44MyA3LjI0IDIuMTIgMi4xMiAxLjQxLTEuNDEtMi4xMi0yLjEyLTEuNDEgMS40MXptLTkuMTkuNzEgMS40MSAxLjQxIDIuMTItMi4xMi0xLjQxLTEuNDEtMi4xMiAyLjEyek0xMSAyM2gydi02aC0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFzaEF1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMnYxMmgzdjlsNy0xMkg5bDQtOUgzem0xNiAwaC0ybC0zLjIgOWgxLjlsLjctMmgzLjJsLjcgMmgxLjlMMTkgMnptLTIuMTUgNS42NUwxOCA0bDEuMTUgMy42NWgtMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxhc2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwaC0zLjYxbDIuMjggMi4yOHptMC04SDd2MS42MWw2LjEzIDYuMTN6bS0xMy41OS44NkwyIDQuMjdsNSA1VjEzaDN2OWwzLjU4LTYuMTVMMTcuNzMgMjBsMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxhc2hPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAydjExaDN2OWw3LTEyaC00bDMtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsaXBDYW1lcmFBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3ptNCAwYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTBWOEg1LjA5QzYuNDcgNS42MSA5LjA1IDQgMTIgNGMzLjcyIDAgNi44NSAyLjU2IDcuNzQgNmgyLjA2Yy0uOTMtNC41Ni00Ljk2LTgtOS44LTgtMy4yNyAwLTYuMTggMS41OC04IDQuMDFWNEgydjZoNnpNMTYgMTR2MmgyLjkxYy0xLjM4IDIuMzktMy45NiA0LTYuOTEgNC0zLjcyIDAtNi44NS0yLjU2LTcuNzQtNkgyLjJjLjkzIDQuNTYgNC45NiA4IDkuOCA4IDMuMjcgMCA2LjE4LTEuNTggOC00LjAxVjIwaDJ2LTZoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwQ2FtZXJhSW9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtMy4xN0wxNSAzSDlMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNEg0VjdoNC4wNWwuNTktLjY1TDkuODggNWg0LjI0bDEuMjQgMS4zNS41OS42NUgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjLTIuMjEgMC00LTEuNzktNC00aDJsLTIuNS0yLjVMNSAxM2gyYzAgMi43NiAyLjI0IDUgNSA1IC44NiAwIDEuNjUtLjI0IDIuMzYtLjYybC0uNzQtLjc0Yy0uNDkuMjMtMS4wNC4zNi0xLjYyLjM2ek0xMiA4Yy0uODYgMC0xLjY1LjI0LTIuMzYuNjJsLjc0LjczQzEwLjg3IDkuMTMgMTEuNDIgOSAxMiA5YzIuMjEgMCA0IDEuNzkgNCA0aC0ybDIuNSAyLjVMMTkgMTNoLTJjMC0yLjc2LTIuMjQtNS01LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgydi0yaC0ydjJ6bTQtMTJoMlY3aC0ydjJ6TTMgNXYxNGMwIDEuMS45IDIgMiAyaDR2LTJINVY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMTYtMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS04IDIwaDJWMWgtMnYyMnptOC02aDJ2LTJoLTJ2MnpNMTUgNWgyVjNoLTJ2MnptNCA4aDJ2LTJoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmFkaWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDloMnYyaC0yVjl6bS0yIDJoMnYySDl2LTJ6bTQgMGgydjJoLTJ2LTJ6bTItMmgydjJoLTJWOXpNNyA5aDJ2Mkg3Vjl6bTEyLTZINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE4SDd2LTJoMnYyem00IDBoLTJ2LTJoMnYyem00IDBoLTJ2LTJoMnYyem0yLTdoLTJ2MmgydjJoLTJ2LTJoLTJ2MmgtMnYtMmgtMnYySDl2LTJIN3YySDV2LTJoMnYtMkg1VjVoMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTYgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyLThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tNCA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA0di44OWwyIDJWNGg0djRoLTIuODlsMiAySDE0di44OWwyIDJWMTBoNHY0aC0yLjg5bDIgMkgyMHYuODlsMiAyVjRjMC0xLjEtLjktMi0yLTJINS4xMWwyIDJIOHptOCAwaDR2NGgtNFY0ek0xLjQxIDEuMTQgMCAyLjU1bDIgMlYyMGMwIDEuMS45IDIgMiAyaDE1LjQ1bDIuMDEgMi4wMSAxLjQxLTEuNDFMMS40MSAxLjE0ek0xMCAxMi41NSAxMS40NSAxNEgxMHYtMS40NXptLTYtNkw1LjQ1IDhINFY2LjU1ek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGgzLjQ1bC41NS41NVYxNHptNiA2aC00di00aDMuNDVsLjU1LjU1VjIwem0yIDB2LTEuNDVMMTcuNDUgMjBIMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmlkT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGg0djR6bTAtNkg0VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyRW5oYW5jZWRTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTYgMi42OS02IDYtNnptMCAyQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0xIDdoLTJWOUg5VjdoMlY1aDJ2MmgydjJoLTJ2MnptMTEgOWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHptLTYtMS41YzAgLjYtLjQgMS4xLS45IDEuNEwxOCAyMmgtMS41bC0uOS0yaC0xLjF2MkgxM3YtNmgzLjVjLjggMCAxLjUuNyAxLjUgMS41djF6bS0xLjUgMHYtMWgtMnYxaDJ6bS0xMy0uNXYtMkg1djZIMy41di0yLjVoLTJWMjJIMHYtNmgxLjV2Mmgyem02LjUtMmMuOCAwIDEuNS43IDEuNSAxLjV2M2MwIC44LS43IDEuNS0xLjUgMS41SDYuNXYtNkgxMHptMCA0LjV2LTNIOHYzaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZHJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTV2LTJoMS4xbC45IDJIMjFsLS45LTIuMWMuNS0uMy45LS44LjktMS40di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTZ2NC44NkwxNy4xNCAxNWguMzZ6bTAtNC41aDJ2MWgtMnYtMXptLTQuNSAwdi4zNmwxLjUgMS41VjEwLjVjMC0uOC0uNy0xLjUtMS41LTEuNWgtMS44NmwxLjUgMS41SDEzek0yLjUxIDIuNDkgMS40NSAzLjU1IDYuOSA5aC0uNHYyaC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOHYtNC45bDEuNSAxLjVWMTVoMy40bDcuNiA3LjYgMS4wNi0xLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExLjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY2aDEuNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMlY5SDN2NmgxLjV2LTIuNWgyVjE1SDhWOUg2LjV2MnpNMTMgOUg5LjV2NkgxM2MuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41aC0ydi0zaDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhkclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjEzIDE5YzEuMTUuNjQgMi40NyAxIDMuODcgMSA0LjQxIDAgOC0zLjU5IDgtOHMtMy41OS04LTgtOC04IDMuNTktOCA4YzAgMi41MiAxLjE3IDQuNzcgMyA2LjI0VjEzaDMuNWMuOCAwIDEuNS43IDEuNSAxLjV2MWMwIC42LS40IDEuMS0uOSAxLjRMMTIgMTloLTEuNWwtLjktMkg4LjV2MmgtLjM3ek0xMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMiA2LjQ4IDIgMTIgMnptNS41IDE0SDE2djEuNWgtMS41VjE2SDEzdi0xLjVoMS41VjEzSDE2djEuNDloMS41VjE2em0tNy0uNXYtMWgtMnYxaDJ6bTAtNy41VjZIMTJ2NmgtMS41VjkuNWgtMlYxMkg3VjZoMS41djJoMnpNMTYgNmMuOCAwIDEuNS43IDEuNSAxLjV2M2MwIC44LS43IDEuNS0xLjUgMS41aC0zVjZoM3ptMCA0LjV2LTNoLTEuNXYzSDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyU3Ryb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnpNNSA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhkcldlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTEyLTJjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02em0wIDEwYy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYWxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjczIDEyLjAyIDMuOTgtMy45OGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTQuMzQtNC4zNGEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTMuOTggMy45OEw4IDIuMjlhMS4wMDEgMS4wMDEgMCAwIDAtMS40MSAwTDIuMjUgNi42M2EuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMy45OCAzLjk4TDIuMjUgMTZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDQuMzQgNC4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMy45OC0zLjk4IDMuOTggMy45OGMuMi4yLjQ1LjI5LjcxLjI5LjI2IDAgLjUxLS4xLjcxLS4yOWw0LjM0LTQuMzRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0zLjk5LTMuOTh6TTEyIDljLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptLTQuNzEgMS45NkwzLjY2IDcuMzRsMy42My0zLjYzIDMuNjIgMy42Mi0zLjYyIDMuNjN6TTEwIDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTIgMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMi42NiA5LjM0LTMuNjMtMy42MiAzLjYzLTMuNjMgMy42MiAzLjYyLTMuNjIgMy42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhldmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTFoLTFWOUgzdjZoMS41di0yLjVoMVYxNUg3VjlINS41ek0yMSAxMXYtMWMwLS41NS0uNDUtMS0xLTFoLTJjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi0xaC0xLjV2LjVoLTF2LTNoMXYuNUgyMXpNMTQuMjUgMTMuNSAxMy41IDlIMTJsMSA2aDIuNWwxLTZIMTV6TTggOXY2aDMuNXYtMS41aC0ydi0xaDJWMTFoLTJ2LS41aDJWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDV2MTEuMTdsMiAyVjVjMC0xLjEtLjktMi0yLTJINS44M2wyIDJIMTl6TTIuODEgMi44MSAxLjM5IDQuMjIgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMS42MSAxLjYxIDEuNDEtMS40MUwyLjgxIDIuODF6TTUgMTlWNy44M2w3LjA3IDcuMDctLjgyIDEuMUw5IDEzbC0zIDRoOC4xN2wyIDJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltYWdlQXNwZWN0UmF0aW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6bS04LTRINnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTgtNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW1hZ2VOb3RTdXBwb3J0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS45IDIxLjktNi4xLTYuMS0yLjY5LTIuNjlMNSA1IDMuNTkgMy41OSAyLjEgMi4xLjY5IDMuNTEgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMi4zMSAyLjMxIDEuNDItMS40MXpNNSAxOVY3LjgzbDYuODQgNi44NC0uODQgMS4wNUw5IDEzbC0zIDRoOC4xN2wyIDJINXpNNy44MyA1bC0yLTJIMTljMS4xIDAgMiAuOSAyIDJ2MTMuMTdsLTItMlY1SDcuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbWFnZVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTN2N0g0VjZoNS4wMmMuMDUtLjcxLjIyLTEuMzguNDgtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01bC0yLTJ6bS0xLjUgNWgtMTFsMi43NS0zLjUzIDEuOTYgMi4zNiAyLjc1LTMuNTRMMTYuNSAxOHptMi44LTkuMTFjLjQ0LS43LjctMS41MS43LTIuMzlDMjAgNC4wMSAxNy45OSAyIDE1LjUgMlMxMSA0LjAxIDExIDYuNXMyLjAxIDQuNSA0LjQ5IDQuNWMuODggMCAxLjctLjI2IDIuMzktLjdMMjEgMTMuNDIgMjIuNDIgMTIgMTkuMyA4Ljg5ek0xNS41IDlhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQuODYgOC44Ni0zIDMuODdMOSAxMy4xNCA2IDE3aDEybC0zLjg2LTUuMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbmNvbXBsZXRlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTJjMCA1LjUyLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyYzAtMi43NiAxLjEyLTUuMjYgMi45My03LjA3TDEyIDEyVjJjNS41MiAwIDEwIDQuNDggMTAgMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJc28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01LjUgNy41aDJ2LTJIOXYyaDJWOUg5djJINy41VjloLTJWNy41ek0xOSAxOUg1TDE5IDV2MTR6bS0yLTJ2LTEuNWgtNVYxN2g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTQuMjIgNS42MyAxLjI1IDEuNjdMMTQgOS4zMyAxOSAxNmgtOC40NmwtNC4wMS01LjM3TDEgMThoMjJMMTQgNnpNNSAxNmwxLjUyLTIuMDNMOC4wNCAxNkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGVha0FkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzSDN2M2MxLjY2IDAgMy0xLjM0IDMtM3ptOCAwaC0yYTkgOSAwIDAgMS05IDl2MmM2LjA4IDAgMTEtNC45MyAxMS0xMXptLTQgMEg4YzAgMi43Ni0yLjI0IDUtNSA1djJjMy44NyAwIDctMy4xMyA3LTd6bTAgMThoMmE5IDkgMCAwIDEgOS05di0yYy02LjA3IDAtMTEgNC45My0xMSAxMXptOCAwaDN2LTNjLTEuNjYgMC0zIDEuMzQtMyAzem0tNCAwaDJjMC0yLjc2IDIuMjQtNSA1LTV2LTJjLTMuODcgMC03IDMuMTMtNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGVha1JlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM2gtMmMwIDEuMzUtLjMxIDIuNjMtLjg0IDMuNzdsMS40OSAxLjQ5QzEzLjUxIDYuNyAxNCA0LjkxIDE0IDN6bTcgOXYtMmMtMS45MSAwLTMuNy40OS01LjI3IDEuMzVsMS40OSAxLjQ5YzEuMTUtLjUzIDIuNDMtLjg0IDMuNzgtLjg0em0wIDR2LTJjLS43OSAwLTEuNTQuMTMtMi4yNC4zN2wxLjY4IDEuNjhjLjE5LS4wMS4zNy0uMDUuNTYtLjA1ek0xMCAzSDhjMCAuMTktLjA0LjM3LS4wNi41NmwxLjY4IDEuNjhjLjI1LS43LjM4LTEuNDYuMzgtMi4yNHptLTUuNTktLjE0TDMgNC4yN2wyLjg0IDIuODRDNS4wMyA3LjY3IDQuMDYgOCAzIDh2MmMxLjYxIDAgMy4wOS0uNTUgNC4yNy0xLjQ2TDguNyA5Ljk3QTguOTkgOC45OSAwIDAgMSAzIDEydjJjMi43MiAwIDUuMi0uOTkgNy4xMS0yLjYybDIuNTEgMi41MUMxMC45OSAxNS44MSAxMCAxOC4yOSAxMCAyMWgyYzAtMi4xNi43Ni00LjE0IDIuMDMtNS43bDEuNDMgMS40M0E2Ljk3MiA2Ljk3MiAwIDAgMCAxNCAyMWgyYzAtMS4wNi4zMy0yLjAzLjg5LTIuODRMMTkuNzMgMjFsMS40MS0xLjQxTDQuNDEgMi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxlbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04bTAtMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpbmtlZENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOXYxMUg0VjhoNC4wNWwxLjgzLTJIMTVWNEg5TDcuMTcgNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjloLTJ6bS42Ny0xLjAxSDIyQTYuMDAzIDYuMDAzIDAgMCAwIDE2IDJ2MS4zM2MyLjU4IDAgNC42NiAyLjA4IDQuNjcgNC42NnptLTIuNjcgMGgxLjMzQTMuMzI3IDMuMzI3IDAgMCAwIDE2IDQuNjdWNmMxLjExIDAgMS45OS44OSAyIDEuOTl6TTcgMTRjMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNS0yLjI0LTUtNS01LTUgMi4yNC01IDV6bTggMGMwIDEuNjUtMS4zNSAzLTMgM3MtMy0xLjM1LTMtMyAxLjM1LTMgMy0zIDMgMS4zNCAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2dvRGV2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTcuNjggMTQuOThINlY5aDEuNzFjMS4yOCAwIDEuNzEgMS4wMyAxLjcxIDEuNzF2Mi41NmMwIC42OC0uNDIgMS43MS0xLjc0IDEuNzF6bTQuNy0zLjUydjEuMDdIMTEuMnYxLjM5aDEuOTN2MS4wN2gtMi4yNWMtLjQuMDEtLjc0LS4zMS0uNzUtLjcxVjkuNzVjLS4wMS0uNC4zMS0uNzQuNzEtLjc1aDIuMjh2MS4wN0gxMS4ydjEuMzloMS4xOHptNC41IDIuNzdjLS40OCAxLjExLTEuMzMuODktMS43MSAwTDEzLjc3IDloMS4xOGwxLjA3IDQuMTFMMTcuMDkgOWgxLjE4bC0xLjM5IDUuMjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzcgMTAuMTJoLS42M3YzLjc3aC42M2MuMTQgMCAuMjgtLjA1LjQyLS4xNi4xNC0uMS4yMS0uMjYuMjEtLjQ3di0yLjUyYzAtLjIxLS4wNy0uMzctLjIxLS40N2EuNzIuNzIgMCAwIDAtLjQyLS4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvb2tzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNC00di0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjlhMiAyIDAgMCAwLTItMkg5djJoNHYyaC0ydjJoMnYySDl2Mmg0YTIgMiAwIDAgMCAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rczQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS4wNCAwaDI0djI0aC0yNFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wNCAzaC0xNGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC0xNFY1aDE0djE0em0tNi0yaDJWN2gtMnY0aC0yVjdoLTJ2Nmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9va3M1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS00LTR2LTJhMiAyIDAgMCAwLTItMmgtMlY5aDRWN0g5djZoNHYySDl2Mmg0YTIgMiAwIDAgMCAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rczYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDJhMiAyIDAgMCAwIDItMnYtMmEyIDIgMCAwIDAtMi0yaC0yVjloNFY3aC00YTIgMiAwIDAgMC0yIDJ2NmEyIDIgMCAwIDAgMiAyem0wLTRoMnYyaC0ydi0yem04LTEwSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rc09uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNy0yaDJWN2gtNHYyaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rc1R3byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNC00aC00di0yaDJhMiAyIDAgMCAwIDItMlY5YTIgMiAwIDAgMC0yLTJIOXYyaDR2MmgtMmEyIDIgMCAwIDAtMiAydjRoNnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvb2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMtMy44NiAwLTcgMy4xNC03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg2LTMuMTQtNy03LTd6bTAtNEM1LjkzIDYgMSAxMC45MyAxIDE3aDJjMC00Ljk2IDQuMDQtOSA5LTlzOSA0LjA0IDkgOWgyYzAtNi4wNy00LjkzLTExLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG91cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUxLTQuNDktMTAtMTAtMTB6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWljRXh0ZXJuYWxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA1YzAtMS42Ni0xLjM0LTMtMy0zLS42MiAwLTEuMTkuMTktMS42Ny41bDQuMTUgNC4xNUM5LjggNi4xOCAxMCA1LjYxIDEwIDV6TTE0IDZjMC0xLjEuOS0yIDItMnMyIC45IDIgMnY5LjE3bDIgMlY2YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0djMuMTdsMiAyVjZ6TTIuMSAyLjEuNjkgMy41MSA1LjE3IDhINGwxIDEwaDFjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtMS4xN2w2LjQ5IDYuNDkgMS40MS0xLjQxTDIuMSAyLjF6TTcuMTkgMTZoLS4zOGwtLjYtNmguOTZsLjU2LjU2TDcuMTkgMTZ6TTEyIDE4YzAgMS4xLS45IDItMiAycy0yLS45LTItMmgxbC41Ni01LjYxTDEyIDE0LjgzVjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWljRXh0ZXJuYWxPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjIgN2MuNDgtLjUzLjc4LTEuMjMuNzgtMiAwLTEuNjYtMS4zNC0zLTMtM1M0IDMuMzQgNCA1YzAgLjc3LjMgMS40Ny43OCAyaDQuNDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDJjLTIuMjEgMC00IDEuNzktNCA0djEyYzAgMS4xLS45IDItMiAycy0yLS45LTItMmgxbDEtMTBINGwxIDEwaDFjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNFY2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2MTZoMlY2YzAtMi4yMS0xLjc5LTQtNC00ek03LjE5IDE2aC0uMzhsLS42LTZoMS41OGwtLjYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbm9jaHJvbWVQaG90b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMkwxNSAzSDlMNy4yIDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC04di0xYy0yLjggMC01LTIuMi01LTVzMi4yLTUgNS01VjdoOHYxMnptLTMtNmMwLTIuOC0yLjItNS01LTV2MS44YzEuOCAwIDMuMiAxLjQgMy4yIDMuMnMtMS40IDMuMi0zLjIgMy4yVjE4YzIuOCAwIDUtMi4yIDUtNXptLTguMiAwYzAgMS44IDEuNCAzLjIgMy4yIDMuMlY5LjhjLTEuOCAwLTMuMiAxLjQtMy4yIDMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdGlvblBob3Rvc0F1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjg4IDcuODggMS41NCAxLjU0QzQuMTUgMTAuMjMgNCAxMS4xIDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOSAwLTEuNzcuMTUtMi41OC40Mkw3Ljg5IDIuODlDOS4xNSAyLjMyIDEwLjU0IDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHMtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjQ3LjMyLTIuODYuODgtNC4xMnpNNyA1LjVDNyA2LjMzIDYuMzMgNyA1LjUgN1M0IDYuMzMgNCA1LjUgNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNXptNS4wMyAzLjQ5aC0uMDdMMTAuOCAxMi4zaDIuMzlsLTEuMTYtMy4zMXptLS43NC0xLjQ5aDEuNDNsMy4wMSA4aC0xLjM5bC0uNzItMi4wNGgtMy4yM2wtLjczIDIuMDRIOC4yOGwzLjAxLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3Rpb25QaG90b3NPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIybDIuMjcgMi4yN0E5LjkxIDkuOTEgMCAwIDAgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAyLjA0IDAgMy45My0uNjEgNS41MS0xLjY2bDIuMjcgMi4yNyAxLjQxLTEuNDJMMi44MSAyLjgxek0xMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0xLjQ4LjQxLTIuODYgMS4xMi00LjA2bDEwLjkzIDEwLjk0QTcuODY5IDcuODY5IDAgMCAxIDEyIDIwek0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS40OC0uNDEgMi44Ni0xLjEyIDQuMDVsMS40NSAxLjQ1QTkuNzgyIDkuNzgyIDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTIuMDQgMC0zLjkzLjYxLTUuNTEgMS42NmwxLjQ1IDEuNDVDOS4xNCA0LjQxIDEwLjUyIDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdGlvblBob3Rvc09uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi44OCA3Ljg4IDEuNTQgMS41NEM0LjE1IDEwLjIzIDQgMTEuMSA0IDEyYzAgNC40MSAzLjU5IDggOCA4czgtMy41OSA4LTgtMy41OS04LTgtOGMtLjkgMC0xLjc3LjE1LTIuNTguNDJMNy44OSAyLjg5QzkuMTUgMi4zMiAxMC41NCAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTBzLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyYzAtMS40Ny4zMi0yLjg2Ljg4LTQuMTJ6TTcgNS41QzcgNi4zMyA2LjMzIDcgNS41IDdTNCA2LjMzIDQgNS41IDQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3Rpb25QaG90b3NQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuODggNy44OCAxLjU0IDEuNTRDNC4xNSAxMC4yMyA0IDExLjEgNCAxMmMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04LTMuNTktOC04LThjLS45IDAtMS43Ny4xNS0yLjU4LjQyTDcuODkgMi44OUM5LjE1IDIuMzIgMTAuNTQgMiAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTEuNDcuMzItMi44Ni44OC00LjEyek03IDUuNUM3IDYuMzMgNi4zMyA3IDUuNSA3UzQgNi4zMyA0IDUuNSA0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41em00IDkuNUg5VjloMnY2em00IDBoLTJWOWgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3Rpb25QaG90b3NQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjE5LjIyLTIuMzIuNi0zLjM4bDEuODguNjhDNC4xNyAxMC4xNCA0IDExLjA1IDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOTUgMC0xLjg1LjE3LTIuNjkuNDhsLS42OC0xLjg5QzkuNjkgMi4yMiAxMC44MiAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTB6TTUuNSA0QzQuNjcgNCA0IDQuNjcgNCA1LjVTNC42NyA3IDUuNSA3IDcgNi4zMyA3IDUuNSA2LjMzIDQgNS41IDR6TTExIDE2VjhIOXY4aDJ6bTQgMFY4aC0ydjhoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmllQ3JlYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNzYgMTBIMjB2OEg0VjYuNDdNMjIgNGgtNGwyIDRoLTNsLTItNGgtMmwyIDRoLTNsLTItNEg4bDIgNEg3TDUgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3ZpZUZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgMTEtLjk0IDIuMDZMNyAxNGwyLjA2Ljk0TDEwIDE3bC45NC0yLjA2TDEzIDE0bC0yLjA2LS45NHptOC4wMS03IDIgNGgtM2wtMi00aC0ybDIgNGgtM2wtMi00aC0ybDIgNGgtM2wtMi00aC0xYy0xLjEgMC0xLjk5LjktMS45OSAybC0uMDEgMTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAxLjk5LS45IDEuOTktMlY0aC0zLjk5em0yIDE0aC0xNlY2LjQ3TDUuNzcgMTBIMTZsLS42MyAxLjM3TDE0IDEybDEuMzcuNjNMMTYgMTRsLjYzLTEuMzdMMTggMTJsLTEuMzctLjYzTDE2IDEwaDQuMDF2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOWgtMy41djZIMTV2LTEuNWgyYy41NSAwIDEtLjQ1IDEtMVYxMGMwLS41NS0uNDUtMS0xLTF6bS0uNSAzSDE1di0xLjVoMS41VjEyek0xMS41IDlIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41di00LjVoMXYzSDEwdi0zaDFWMTVoMS41di01YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTUgMTlWNWgxNHYxNEg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTXVzaWNOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAzIC4wMSAxMC41NWMtLjU5LS4zNC0xLjI3LS41NS0yLS41NWE0LjAwMSA0LjAwMSAwIDEgMCAwIDhjMi4yMiAwIDMuOTktMS43OSAzLjk5LTRWN2g0VjNoLTZ6bS0xLjk5IDE2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU11c2ljT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aDRWM2gtNnY0LjYxbDIgMnptLTIgMy40NEw0LjQxIDIuODYgMyA0LjI3bDkgOXYuMjhjLS45NC0uNTQtMi4xLS43NS0zLjMzLS4zMi0xLjM0LjQ4LTIuMzcgMS42Ny0yLjYxIDMuMDdhNC4wMDcgNC4wMDcgMCAwIDAgNC41OSA0LjY1YzEuOTYtLjMxIDMuMzUtMi4xMSAzLjM1LTQuMXYtMS41OEwxOS43MyAyMWwxLjQxLTEuNDFMMTIgMTAuNDR6TTEwIDE5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5hdHVyZVBlb3BsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI0LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi4xNyA5LjE3YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3QTYuOTggNi45OCAwIDAgMCAxNCAxNi4wNlYyMEg2di0zaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXY0aDF2NWgxNnYtMmgtM3YtMy44OGE3IDcgMCAwIDAgNi4xNy02Ljk1em0tNyA1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTYuMTJoLS4wM2MzLjQ5LS40IDYuMi0zLjM2IDYuMi02Ljk1IDAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3QTYuOTggNi45OCAwIDAgMCAxMSAxNi4wNlYyMEg1djJoMTR2LTJoLTZ2LTMuODh6TTcuMTcgOS4xN2MwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1LTIuMjQgNS01IDUtNS0yLjI0LTUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5hdmlnYXRlQmVmb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42MSA3LjQxIDE0LjIgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTEuMDMgMTJsNC41OC00LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmF2aWdhdGVOZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wMiA2IDguNjEgNy40MSAxMy4xOSAxMmwtNC41OCA0LjU5TDEwLjAyIDE4bDYtNi02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYWxldHRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJDNi40OSAyMiAyIDE3LjUxIDIgMTJTNi40OSAyIDEyIDJzMTAgNC4wNCAxMCA5YzAgMy4zMS0yLjY5IDYtNiA2aC0xLjc3Yy0uMjggMC0uNS4yMi0uNS41IDAgLjEyLjA1LjIzLjEzLjMzLjQxLjQ3LjY0IDEuMDYuNjQgMS42N0EyLjUgMi41IDAgMCAxIDEyIDIyem0wLTE4Yy00LjQxIDAtOCAzLjU5LTggOHMzLjU5IDggOCA4Yy4yOCAwIC41LS4yMi41LS41YS41NC41NCAwIDAgMC0uMTQtLjM1Yy0uNDEtLjQ2LS42My0xLjA1LS42My0xLjY1YTIuNSAyLjUgMCAwIDEgMi41LTIuNUgxNmMyLjIxIDAgNC0xLjc5IDQtNCAwLTMuODYtMy41OS03LTgtN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5LjVcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3LjVcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hRmlzaEV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYUhvcml6b250YWxTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1LjVjLTMuODkgMC02Ljk1LS44NC04LjY5LTEuNDNBLjk5My45OTMgMCAwIDAgMiA1LjAyVjE5YzAgLjY4LjY2IDEuMTcgMS4zMS45NUM1LjM2IDE5LjI2IDguMSAxOC41IDEyIDE4LjVjMy44NyAwIDYuNjYuNzYgOC42OSAxLjQ1QS45OTkuOTk5IDAgMCAwIDIyIDE5VjVjMC0uNjgtLjY2LTEuMTctMS4zMS0uOTUtMi4wMy42OC00LjgzIDEuNDUtOC42OSAxLjQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWFIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2LjU0djEwLjkxYy0yLjYtLjc3LTUuMjgtMS4xNi04LTEuMTZzLTUuNC4zOS04IDEuMTZWNi41NGMyLjYuNzcgNS4yOCAxLjE2IDggMS4xNiAyLjcyLjAxIDUuNC0uMzggOC0xLjE2TTIxLjQzIDRjLS4xIDAtLjIuMDItLjMxLjA2QzE4LjE4IDUuMTYgMTUuMDkgNS43IDEyIDUuN3MtNi4xOC0uNTUtOS4xMi0xLjY0QS45NC45NCAwIDAgMCAyLjU3IDRjLS4zNCAwLS41Ny4yMy0uNTcuNjN2MTQuNzVjMCAuMzkuMjMuNjIuNTcuNjIuMSAwIC4yLS4wMi4zMS0uMDYgMi45NC0xLjEgNi4wMy0xLjY0IDkuMTItMS42NHM2LjE4LjU1IDkuMTIgMS42NGMuMTEuMDQuMjEuMDYuMzEuMDYuMzMgMCAuNTctLjIzLjU3LS42M1Y0LjYzYzAtLjQtLjI0LS42My0uNTctLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWFQaG90b3NwaGVyZVNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk1IDguMTVjLS4yOS0uMTYtLjYxLS4zMS0uOTMtLjQ2QzE5LjQgNC4zMyAxNS45OCAyIDEyIDIgOC4wMiAyIDQuNiA0LjMzIDIuOTkgNy42OGMtLjMzLjE1LS42NC4zLS45My40NkMxLjQxIDguNSAxIDkuMTcgMSA5LjkxdjQuMThjMCAuNzQuNDEgMS40MSAxLjA1IDEuNzcuMjkuMTYuNjEuMzEuOTMuNDZDNC42IDE5LjY3IDguMDIgMjIgMTIgMjJjMy45OCAwIDcuNC0yLjMzIDkuMDEtNS42OC4zMy0uMTUuNjQtLjMuOTMtLjQ2LjY1LS4zNiAxLjA2LTEuMDMgMS4wNi0xLjc3VjkuOTFjMC0uNzQtLjQxLTEuNDEtMS4wNS0xLjc2ek0xMiA0YzIuMzcgMCA0LjQ5IDEuMDQgNS45NSAyLjY4QzE2LjE3IDYuMjUgMTQuMTUgNiAxMiA2Yy0yLjE1IDAtNC4xNy4yNS01Ljk1LjY4QTcuOTQzIDcuOTQzIDAgMCAxIDEyIDR6bTAgMTZjLTIuMzcgMC00LjQ5LTEuMDQtNS45NS0yLjY4IDEuNzguNDMgMy44LjY4IDUuOTUuNjhzNC4xNy0uMjUgNS45NS0uNjhBNy45NDMgNy45NDMgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYVBob3Rvc3BoZXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTUgOC4xNWMtLjI5LS4xNi0uNjEtLjMxLS45My0uNDZDMTkuNCA0LjMzIDE1Ljk4IDIgMTIgMiA4LjAyIDIgNC42IDQuMzMgMi45OSA3LjY4Yy0uMzMuMTUtLjY0LjMtLjkzLjQ2QzEuNDEgOC41IDEgOS4xNyAxIDkuOTF2NC4xOGMwIC43NC40MSAxLjQxIDEuMDUgMS43Ny4yOS4xNi42MS4zMS45My40NkM0LjYgMTkuNjcgOC4wMiAyMiAxMiAyMmMzLjk4IDAgNy40LTIuMzMgOS4wMS01LjY4LjMzLS4xNS42NC0uMy45My0uNDYuNjUtLjM2IDEuMDYtMS4wMyAxLjA2LTEuNzdWOS45MWMwLS43NC0uNDEtMS40MS0xLjA1LTEuNzZ6TTIxIDkuOTF2NC4xOWMtMi4xOSAxLjIxLTUuNDcgMS45LTkgMS45LTMuNTMgMC02LjgxLS43LTktMS45MVY5LjkxQzUuMiA4LjY5IDguNDcgOCAxMiA4YzMuNTMgMCA2LjgxLjcgOSAxLjkxek0xMiA0YzIuMzcgMCA0LjQ5IDEuMDQgNS45NSAyLjY4QzE2LjE3IDYuMjUgMTQuMTUgNiAxMiA2Yy0yLjE1IDAtNC4xNy4yNS01Ljk1LjY4QTcuOTQzIDcuOTQzIDAgMCAxIDEyIDR6bTAgMTZjLTIuMzcgMC00LjQ5LTEuMDQtNS45NS0yLjY4IDEuNzguNDMgMy44LjY4IDUuOTUuNjhzNC4xNy0uMjUgNS45NS0uNjhBNy45NDMgNy45NDMgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYVZlcnRpY2FsU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxMmMwLTMuODkuODQtNi45NSAxLjQzLTguNjlBLjk5My45OTMgMCAwIDAgMTguOTggMkg1Yy0uNjggMC0xLjE2LjY2LS45NSAxLjMxQzQuNzQgNS4zNiA1LjUgOC4xIDUuNSAxMmMwIDMuODctLjc2IDYuNjYtMS40NSA4LjY5LS4yMS42NS4yNyAxLjMxLjk1IDEuMzFoMTRjLjY4IDAgMS4xNy0uNjYuOTUtMS4zMS0uNjgtMi4wMy0xLjQ1LTQuODMtMS40NS04LjY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWFWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTQgMjEuMTJjLTEuMS0yLjk0LTEuNjQtNi4wMy0xLjY0LTkuMTJzLjU1LTYuMTggMS42NC05LjEyYS45NC45NCAwIDAgMCAuMDYtLjMxYzAtLjM0LS4yMy0uNTctLjYzLS41N0g0LjYzYy0uNCAwLS42My4yMy0uNjMuNTcgMCAuMS4wMi4yLjA2LjMxQzUuMTYgNS44MiA1LjcxIDguOTEgNS43MSAxMnMtLjU1IDYuMTgtMS42NCA5LjEyYy0uMDUuMTEtLjA3LjIyLS4wNy4zMSAwIC4zMy4yMy41Ny42My41N2gxNC43NWMuMzkgMCAuNjMtLjI0LjYzLS41Ny0uMDEtLjEtLjAzLS4yLS4wNy0uMzF6TTYuNTQgMjBjLjc3LTIuNiAxLjE2LTUuMjggMS4xNi04cy0uMzktNS40LTEuMTYtOGgxMC45MWMtLjc3IDIuNi0xLjE2IDUuMjgtMS4xNiA4cy4zOSA1LjQgMS4xNiA4SDYuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYVdpZGVBbmdsZVNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjLTMuOTcgMC02Ljg1LjYzLTkgMS0uNTUgMS45Ny0xIDMuOTItMSA3IDAgMy4wMy40NSA1LjA1IDEgNyAyLjE1LjM3IDQuOTggMSA5IDEgMy45NyAwIDYuODUtLjYzIDktMSAuNTctMi4wMiAxLTMuOTkgMS03IDAtMy4wMy0uNDUtNS4wNS0xLTctMi4xNS0uMzctNC45OC0xLTktMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hV2lkZUFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzIuNDUgMCA0LjcxLjIgNy4yOS42NC40NyAxLjc4LjcxIDMuNTguNzEgNS4zNnMtLjI0IDMuNTgtLjcxIDUuMzZjLTIuNTguNDQtNC44NC42NC03LjI5LjY0cy00LjcxLS4yLTcuMjktLjY0QzQuMjQgMTUuNTggNCAxMy43OCA0IDEycy4yNC0zLjU4LjcxLTUuMzZDNy4yOSA2LjIgOS41NSA2IDEyIDZtMC0yYy0yLjczIDAtNS4yMi4yNC03Ljk1LjcybC0uOTMuMTYtLjI1LjlDMi4yOSA3Ljg1IDIgOS45MyAyIDEycy4yOSA0LjE1Ljg3IDYuMjJsLjI1Ljg5LjkzLjE2YzIuNzMuNDkgNS4yMi43MyA3Ljk1LjczczUuMjItLjI0IDcuOTUtLjcybC45My0uMTYuMjUtLjg5Yy41OC0yLjA4Ljg3LTQuMTYuODctNi4yM3MtLjI5LTQuMTUtLjg3LTYuMjJsLS4yNS0uODktLjkzLS4xNkMxNy4yMiA0LjI0IDE0LjczIDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjZoMTh2MTJ6bS02LjUtN0wxMSAxNS41MSA4LjUgMTIuNSA1IDE3aDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9BbGJ1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDZWNGg1djdsMi41LTEuNUwxNiAxMVY0aDJ2MTZ6bS00LjM4LTYuNUwxNyAxOEg3bDIuMzgtMy4xN0wxMSAxN2wyLjYyLTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvQ2FtZXJhQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMTdMMTUgM0g5TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY3aDQuMDVsMS44My0yaDQuMjRsMS44MyAySDIwdjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yNSAxNiA5IDEzbC0zIDRoMTJsLTMuNzUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0SDRWN2g0LjA1bDEuODMtMmg0LjI0bDEuODMgMkgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjExXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljc4IDE0LjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDggMTYuNDNWMTdoOHYtLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4xMiA0IDEuODMgMkgyMHYxMkg0VjZoNC4wNWwxLjgzLTJoNC4yNE0xNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAyem0tMyA3YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM20wLTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9GaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEwdjlINC45OFY1aDlWM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi05aC0yem0tMi45NC0yLjA2TDE3IDEwbC45NC0yLjA2TDIwIDdsLTIuMDYtLjk0TDE3IDRsLS45NCAyLjA2TDE0IDd6TTEyIDhsLTEuMjUgMi43NUw4IDEybDIuNzUgMS4yNUwxMiAxNmwxLjI1LTIuNzVMMTYgMTJsLTIuNzUtMS4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvTGlicmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHYxMkg4VjRoMTJtMC0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTguNSA5LjY3IDEuNjkgMi4yNiAyLjQ4LTMuMUwxOSAxNUg5ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvU2l6ZVNlbGVjdEFjdHVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzQzIgMyAxIDQgMSA1djE0YzAgMS4xLjkgMiAyIDJoMThjMSAwIDItMSAyLTJWNWMwLTEtMS0yLTItMnptMCAxNS45MmMtLjAyLjAzLS4wNi4wNi0uMDguMDhIM1Y1LjA4TDMuMDggNWgxNy44M2MuMDMuMDIuMDYuMDYuMDguMDh2MTMuODR6bS0xMC0zLjQxTDguNSAxMi41IDUgMTdoMTRsLTQuNS02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9TaXplU2VsZWN0TGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE1aDJ2MmgtMnYtMnptMC00aDJ2MmgtMnYtMnptMiA4aC0ydjJjMSAwIDItMSAyLTJ6TTEzIDNoMnYyaC0yVjN6bTggNGgydjJoLTJWN3ptMC00djJoMmMwLTEtMS0yLTItMnpNMSA3aDJ2MkgxVjd6bTE2LTRoMnYyaC0yVjN6bTAgMTZoMnYyaC0ydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem02IDBoMnYySDlWM3pNNSAzaDJ2Mkg1VjN6bS00IDh2OGMwIDEuMS45IDIgMiAyaDEyVjExSDF6bTIgOCAyLjUtMy4yMSAxLjc5IDIuMTUgMi41LTMuMjJMMTMgMTlIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvU2l6ZVNlbGVjdFNtYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxNWgtMnYyaDJ2LTJ6bTAtNGgtMnYyaDJ2LTJ6bTAgOGgtMnYyYzEgMCAyLTEgMi0yek0xNSAzaC0ydjJoMlYzem04IDRoLTJ2MmgyVjd6bS0yLTR2MmgyYzAtMS0xLTItMi0yek0zIDIxaDh2LTZIMXY0YzAgMS4xLjkgMiAyIDJ6TTMgN0gxdjJoMlY3em0xMiAxMmgtMnYyaDJ2LTJ6bTQtMTZoLTJ2MmgyVjN6bTAgMTZoLTJ2Mmgydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem0wIDhIMXYyaDJ2LTJ6bTgtOEg5djJoMlYzek03IDNINXYyaDJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNC44NiA4Ljg2LTMgMy44N0w5IDEzLjE0IDYgMTdoMTJsLTMuODYtNS4xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpY3R1cmVBc1BkZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTIgNlY5YzAtLjU1LS40NS0xLTEtMWgtMnY1aDJjLjU1IDAgMS0uNDUgMS0xem0tMi0zaDF2M2gtMVY5em00IDJoMXYtMWgtMVY5aDFWOGgtMnY1aDF6bS04IDBoMWMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTFIOXY1aDF2LTJ6bTAtMmgxdjFoLTFWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem02IDguNThjMC0yLjUtMy45Ny0zLjU4LTYtMy41OHMtNiAxLjA4LTYgMy41OFYxOGgxMnYtMS40MnpNOC40OCAxNmMuNzQtLjUxIDIuMjMtMSAzLjUyLTFzMi43OC40OSAzLjUyIDFIOC40OHpNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhd09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjE1IDE0LjMyLjU5LTIuMzYuNzYgMy4wNGgxLjQ4bDEuNS02aC0xLjVsLS43NCAzLS43NC0zaC0xLjUybC0uNzQgMy0uNzQtM0gxNGwuNzIgMi45ek0xLjM5IDQuMjIgNi4xNyA5SDN2NmgxLjV2LTJoMS4xbC45IDJIOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LS42N2wxLjQzIDEuNDNMOC43NSAxNWgxLjVsLjM4LTEuNWguMDRsOS4xMSA5LjExIDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyek02LjUgMTEuNWgtMnYtMWgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYXdPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA5SDN2NmgxLjV2LTJoMS4xbC45IDJIOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LTFDOCA5LjcgNy4zIDkgNi41IDl6bTAgMi41aC0ydi0xaDJ2MXpNMTAuMjUgOWwtMS41IDZoMS41bC4zOC0xLjVoMS43NWwuMzcgMS41aDEuNWwtMS41LTZoLTIuNXptLjc1IDMgLjI1LTFoLjVsLjI1IDFoLTF6TTE5Ljk4IDlsLS43NCAzLS43NC0zaC0xLjUybC0uNzQgMy0uNzQtM0gxNGwxLjUgNmgxLjQ4bC43Ni0zLjA0Ljc2IDMuMDRoMS40OGwxLjUtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlY2VpcHRMb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDMuNSAxOCAybC0xLjUgMS41TDE1IDJsLTEuNSAxLjVMMTIgMmwtMS41IDEuNUw5IDIgNy41IDMuNSA2IDJ2MTRIM3YzYzAgMS42NiAxLjM0IDMgMyAzaDEyYzEuNjYgMCAzLTEuMzQgMy0zVjJsLTEuNSAxLjV6TTE1IDIwSDZjLS41NSAwLTEtLjQ1LTEtMXYtMWgxMHYyem00LTFjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTNIOFY1aDExdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdoNnYySDl6TTE2IDdoMnYyaC0yek05IDEwaDZ2Mkg5ek0xNiAxMGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVSZWRFeWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDYuNWE5Ljc3IDkuNzcgMCAwIDEgOC44MiA1LjVjLTEuNjUgMy4zNy01LjAyIDUuNS04LjgyIDUuNVM0LjgzIDE1LjM3IDMuMTggMTJBOS43NyA5Ljc3IDAgMCAxIDEyIDYuNW0wLTJDNyA0LjUgMi43MyA3LjYxIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNXM5LjI3LTMuMTEgMTEtNy41Yy0xLjczLTQuMzktNi03LjUtMTEtNy41em0wIDVhMi41IDIuNSAwIDAgMSAwIDUgMi41IDIuNSAwIDAgMSAwLTVtMC0yYy0yLjQ4IDAtNC41IDIuMDItNC41IDQuNXMyLjAyIDQuNSA0LjUgNC41IDQuNS0yLjAyIDQuNS00LjUtMi4wMi00LjUtNC41LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdGF0ZTkwRGVncmVlc0NjdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4zNCA2LjQxLjg2IDEyLjlsNi40OSA2LjQ4IDYuNDktNi40OC02LjUtNi40OXpNMy42OSAxMi45bDMuNjYtMy42NkwxMSAxMi45bC0zLjY2IDMuNjYtMy42NS0zLjY2em0xNS42Ny02LjI2QTguOTUgOC45NSAwIDAgMCAxMyA0Vi43Nkw4Ljc2IDUgMTMgOS4yNFY2YzEuNzkgMCAzLjU4LjY4IDQuOTUgMi4wNWE3LjAwNyA3LjAwNyAwIDAgMSAwIDkuOSA2Ljk3MyA2Ljk3MyAwIDAgMS03Ljc5IDEuNDRsLTEuNDkgMS40OUMxMC4wMiAyMS42MiAxMS41MSAyMiAxMyAyMmMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjRhOC45OCA4Ljk4IDAgMCAwIDAtMTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3RhdGU5MERlZ3JlZXNDdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTNhOSA5IDAgMCAwIDEzLjc5IDcuNjJsLTEuNDYtMS40NmMtLjk5LjUzLTIuMTMuODQtMy4zMy44NC0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03aC4xN0w5LjU5IDcuNTkgMTEgOWw0LTQtNC00LTEuNDIgMS40MUwxMS4xNyA0SDExYTkgOSAwIDAgMC05IDl6bTkgMCA2IDYgNi02LTYtNi02IDZ6bTYgMy4xN0wxMy44MyAxMyAxNyA5LjgzIDIwLjE3IDEzIDE3IDE2LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4xMSA4LjUzIDUuNyA3LjExQzQuOCA4LjI3IDQuMjQgOS42MSA0LjA3IDExaDIuMDJjLjE0LS44Ny40OS0xLjcyIDEuMDItMi40N3pNNi4wOSAxM0g0LjA3Yy4xNyAxLjM5LjcyIDIuNzMgMS42MiAzLjg5bDEuNDEtMS40MmMtLjUyLS43NS0uODctMS41OS0xLjAxLTIuNDd6bTEuMDEgNS4zMmMxLjE2LjkgMi41MSAxLjQ0IDMuOSAxLjYxVjE3LjljLS44Ny0uMTUtMS43MS0uNDktMi40Ni0xLjAzTDcuMSAxOC4zMnpNMTMgNC4wN1YxTDguNDUgNS41NSAxMyAxMFY2LjA5YzIuODQuNDggNSAyLjk0IDUgNS45MXMtMi4xNiA1LjQzLTUgNS45MXYyLjAyYzMuOTUtLjQ5IDctMy44NSA3LTcuOTNzLTMuMDUtNy40NC03LTcuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3RhdGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTUgNS41NSAxMSAxdjMuMDdDNy4wNiA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODQtLjQ4LTUtMi45NC01LTUuOTFzMi4xNi01LjQzIDUtNS45MVYxMGw0LjU1LTQuNDV6TTE5LjkzIDExYTcuOTA2IDcuOTA2IDAgMCAwLTEuNjItMy44OWwtMS40MiAxLjQyYy41NC43NS44OCAxLjYgMS4wMiAyLjQ3aDIuMDJ6TTEzIDE3Ljl2Mi4wMmMxLjM5LS4xNyAyLjc0LS43MSAzLjktMS42MWwtMS40NC0xLjQ0Yy0uNzUuNTQtMS41OS44OS0yLjQ2IDEuMDN6bTMuODktMi40MiAxLjQyIDEuNDFjLjktMS4xNiAxLjQ1LTIuNSAxLjYyLTMuODloLTIuMDJjLS4xNC44Ny0uNDggMS43Mi0xLjAyIDIuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaHV0dGVyU3BlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDFIOXYyaDZWMXptNC4wMyA2LjM5IDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJBOC45NjIgOC45NjIgMCAwIDAgMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE4Ljk5NCA4Ljk5NCAwIDAgMCA3LjAzLTE0LjYxek0xMiAyMGMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bS0uMzItNUg2LjM1YTUuOTkyIDUuOTkyIDAgMCAwIDMuNDEgMy41NmwtLjExLS4wNiAyLjAzLTMuNXptNS45Ny00YTYuMDEyIDYuMDEyIDAgMCAwLTMuMzQtMy41NEwxMi4yNiAxMWg1LjM5em0tNy4wNCA3LjgzYy40NS4xMS45MS4xNyAxLjM5LjE3IDEuMzQgMCAyLjU3LS40NSAzLjU3LTEuMTlsLTIuMTEtMy45LTIuODUgNC45MnpNNy41NSA4Ljk5QTUuOTY1IDUuOTY1IDAgMCAwIDYgMTNjMCAuMzQuMDQuNjcuMDkgMWg0LjcyTDcuNTUgOC45OXptOC43OSA4LjE0QTUuOTQgNS45NCAwIDAgMCAxOCAxM2MwLS4zNC0uMDQtLjY3LS4wOS0xaC00LjM0bDIuNzcgNS4xM3ptLTMuMDEtOS45OEMxMi45IDcuMDYgMTIuNDYgNyAxMiA3Yy0xLjQgMC0yLjY5LjQ5LTMuNzEgMS4yOWwyLjMyIDMuNTYgMi43Mi00Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbGlkZXNob3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDh2OGw1LTQtNS00em05LTVINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0cmFpZ2h0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBIM1Y4aDJ2NGgyVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3R5bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuNTMgMTkuNjUgMS4zNC41NnYtOS4wM2wtMi40MyA1Ljg2Yy0uNDEgMS4wMi4wOCAyLjE5IDEuMDkgMi42MXptMTkuNS0zLjdMMTcuMDcgMy45OGEyLjAxMyAyLjAxMyAwIDAgMC0xLjgxLTEuMjNjLS4yNiAwLS41My4wNC0uNzkuMTVMNy4xIDUuOTVhMS45OTkgMS45OTkgMCAwIDAtMS4wOCAyLjZsNC45NiAxMS45N2ExLjk5OCAxLjk5OCAwIDAgMCAyLjYgMS4wOGw3LjM2LTMuMDVhMS45OTQgMS45OTQgMCAwIDAgMS4wOS0yLjZ6bS05LjIgMy44TDcuODcgNy43OWw3LjM1LTMuMDRoLjAxbDQuOTUgMTEuOTUtNy4zNSAzLjA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiOVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljg4IDE5Ljc1YzAgMS4xLjkgMiAyIDJoMS40NWwtMy40NS04LjM0djYuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRoLTMuMTdMMTUgMkg5TDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuODggNGg0LjI0bDEuODMgMkgyMHYxMkg0VjZoNC4wNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMUg5VjguNUw1LjUgMTIgOSAxNS41VjEzaDZ2Mi41bDMuNS0zLjVMMTUgOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpdGNoVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTNoNHYybDMtMy0zLTN2Mkg4VjlsLTMgMyAzIDN6bTEwLTMuNVY2YzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTRjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xM2wtNCA0ek0xNiAxN0g0VjdoMTJ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWdGYWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNTEgMy4wOCAzLjA4IDE5LjUxYy4wOS4zNC4yNy42NS41MS45LjI1LjI0LjU2LjQyLjkuNTFMMjAuOTMgNC40OWMtLjE5LS42OS0uNzMtMS4yMy0xLjQyLTEuNDF6TTExLjg4IDMgMyAxMS44OHYyLjgzTDE0LjcxIDNoLTIuODN6TTUgM2MtMS4xIDAtMiAuOS0yIDJ2Mmw0LTRINXptMTQgMThjLjU1IDAgMS4wNS0uMjIgMS40MS0uNTkuMzctLjM2LjU5LS44Ni41OS0xLjQxdi0ybC00IDRoMnptLTkuNzEgMGgyLjgzTDIxIDEyLjEyVjkuMjlMOS4yOSAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRoZXJtb3N0YXRBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTJWNmMwLTEuNjYtMS4zNC0zLTMtM1M1IDQuMzQgNSA2djZjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDEuMTIuMzggMi4xNCAxIDIuOTdWMTloLjAyYy45MSAxLjIxIDIuMzUgMiAzLjk4IDJzMy4wNi0uNzkgMy45OC0ySDEydi0uMDNjLjYyLS44MyAxLTEuODUgMS0yLjk3IDAtMS42My0uNzktMy4wOS0yLTR6bS02IDRjMC0uOTQuNDUtMS44NCAxLjItMi40TDcgMTNWNmMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2N2wuOC42Yy43NS41NyAxLjIgMS40NiAxLjIgMi40SDV6TTE4LjYyIDRoLTEuNjFsLTMuMzggOWgxLjU2bC44MS0yLjNoMy42M2wuOCAyLjNIMjJsLTMuMzgtOXptLTIuMTUgNS4zOSAxLjMxLTMuNzJoLjA4bDEuMzEgMy43MmgtMi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZWxhcHNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yNCA3Ljc1QTUuOTc0IDUuOTc0IDAgMCAwIDEyIDUuOTl2NmwtNC4yNCA0LjI0YzIuMzQgMi4zNCA2LjE0IDIuMzQgOC40OSAwYTUuOTkgNS45OSAwIDAgMC0uMDEtOC40OHpNMTIgMS45OWMtNS41MiAwLTEwIDQuNDgtMTAgMTBzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwLTQuNDgtMTAtMTAtMTB6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZXIxMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLS4wMSA3LjcyVjkuNGwzLTFWMThoMlY2aC0uMjVMLS4wMSA3Ljcyem0yMy43OCA2LjY1Yy0uMTQtLjI4LS4zNS0uNTMtLjYzLS43NC0uMjgtLjIxLS42MS0uMzktMS4wMS0uNTNzLS44NS0uMjctMS4zNS0uMzhhNi42NCA2LjY0IDAgMCAxLS44Ny0uMjNjLS4yMy0uMDgtLjQxLS4xNi0uNTUtLjI1cy0uMjMtLjE5LS4yOC0uM2EuOTc4Ljk3OCAwIDAgMSAuMDEtLjhjLjA2LS4xMy4xNS0uMjUuMjctLjM0LjEyLS4xLjI3LS4xOC40NS0uMjRzLjQtLjA5LjY0LS4wOWMuMjUgMCAuNDcuMDQuNjYuMTFzLjM1LjE3LjQ4LjI5LjIyLjI2LjI5LjQyYy4wNi4xNi4xLjMyLjEuNDloMS45NUEyLjUxNyAyLjUxNyAwIDAgMCAyMyA5LjgxYy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OS0uNDMtLjE1LS45Mi0uMjItMS40Ni0uMjItLjUxIDAtLjk4LjA3LTEuMzkuMjFzLS43Ny4zMy0xLjA2LjU3Yy0uMjkuMjQtLjUxLjUyLS42Ny44NC0uMTYuMzItLjIzLjY1LS4yMyAxLjAxcy4wOC42OS4yMy45NmMuMTUuMjguMzYuNTIuNjQuNzMuMjcuMjEuNi4zOC45OC41My4zOC4xNC44MS4yNiAxLjI3LjM2LjM5LjA4LjcxLjE3Ljk1LjI2cy40My4xOS41Ny4yOWMuMTMuMS4yMi4yMi4yNy4zNC4wNS4xMi4wNy4yNS4wNy4zOSAwIC4zMi0uMTMuNTctLjQuNzdzLS42Ni4yOS0xLjE3LjI5Yy0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNGExLjMzMyAxLjMzMyAwIDAgMS0uNTktMS4xMWgtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1cy4zOS42NS43LjkzYy4zMS4yNy42OS40OSAxLjE1LjY2cy45OC4yNSAxLjU4LjI1Yy41MyAwIDEuMDEtLjA2IDEuNDQtLjE5LjQzLS4xMy44LS4zMSAxLjExLS41NC4zMS0uMjMuNTQtLjUxLjcxLS44My4xNy0uMzIuMjUtLjY3LjI1LTEuMDYtLjAyLS40LS4wOS0uNzQtLjI0LTEuMDJ6bS05Ljk2LTcuMzJjLS4zNC0uNC0uNzUtLjctMS4yMy0uODgtLjQ3LS4xOC0xLjAxLS4yNy0xLjU5LS4yN3MtMS4xMS4wOS0xLjU5LjI3Yy0uNDguMTgtLjg5LjQ3LTEuMjMuODgtLjM0LjQxLS42LjkzLS43OSAxLjU5LS4xOC42NS0uMjggMS40NS0uMjggMi4zOXYxLjkyYzAgLjk0LjA5IDEuNzQuMjggMi4zOS4xOS42Ni40NSAxLjE5LjggMS42LjM0LjQxLjc1LjcxIDEuMjMuODlzMS4wMS4yOCAxLjU5LjI4Yy41OSAwIDEuMTItLjA5IDEuNTktLjI4LjQ4LS4xOC44OC0uNDggMS4yMi0uODlzLjYtLjk0Ljc4LTEuNmMuMTgtLjY1LjI4LTEuNDUuMjgtMi4zOXYtMS45MmMwLS45NC0uMDktMS43NC0uMjgtMi4zOS0uMTgtLjY2LS40NC0xLjE5LS43OC0xLjU5em0tLjkyIDYuMTdjMCAuNi0uMDQgMS4xMS0uMTIgMS41M3MtLjIuNzYtLjM2IDEuMDJjLS4xNi4yNi0uMzYuNDUtLjU5LjU3LS4yMy4xMi0uNTEuMTgtLjgyLjE4LS4zIDAtLjU4LS4wNi0uODItLjE4cy0uNDQtLjMxLS42LS41N2MtLjE2LS4yNi0uMjktLjYtLjM4LTEuMDJzLS4xMy0uOTMtLjEzLTEuNTN2LTIuNWMwLS42LjA0LTEuMTEuMTMtMS41MnMuMjEtLjc0LjM4LTFjLjE2LS4yNS4zNi0uNDMuNi0uNTUuMjQtLjExLjUxLS4xNy44MS0uMTcuMzEgMCAuNTguMDYuODEuMTcuMjQuMTEuNDQuMjkuNi41NS4xNi4yNS4yOS41OC4zNy45OXMuMTMuOTIuMTMgMS41MnYyLjUxaC0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lcjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjYxIDEyLjk3Yy0uMTYtLjI0LS4zNi0uNDYtLjYyLS42NWEzLjM4IDMuMzggMCAwIDAtLjkzLS40OGMuMy0uMTQuNTctLjMuOC0uNS4yMy0uMi40Mi0uNDEuNTctLjY0LjE1LS4yMy4yNy0uNDYuMzQtLjcxLjA4LS4yNC4xMS0uNDkuMTEtLjczIDAtLjU1LS4wOS0xLjA0LS4yOC0xLjQ2LS4xOC0uNDItLjQ0LS43Ny0uNzgtMS4wNi0uMzMtLjI4LS43My0uNS0xLjItLjY0LS40NS0uMTMtLjk3LS4yLTEuNTMtLjItLjU1IDAtMS4wNi4wOC0xLjUyLjI0LS40Ny4xNy0uODcuNC0xLjIuNjktLjMzLjI5LS42LjYzLS43OCAxLjAzLS4yLjM5LS4yOS44My0uMjkgMS4yOWgxLjk4YzAtLjI2LjA1LS40OS4xNC0uNjkuMDktLjIuMjItLjM4LjM4LS41Mi4xNy0uMTQuMzYtLjI1LjU4LS4zM3MuNDYtLjEyLjczLS4xMmMuNjEgMCAxLjA2LjE2IDEuMzYuNDcuMy4zMS40NC43NS40NCAxLjMyIDAgLjI3LS4wNC41Mi0uMTIuNzQtLjA4LjIyLS4yMS40MS0uMzguNTdzLS4zOC4yOC0uNjMuMzctLjU1LjEzLS44OS4xM0g2LjcydjEuNTdINy45Yy4zNCAwIC42NC4wNC45MS4xMS4yNy4wOC41LjE5LjY5LjM1LjE5LjE2LjM0LjM2LjQ0LjYxLjEuMjQuMTYuNTQuMTYuODcgMCAuNjItLjE4IDEuMDktLjUzIDEuNDItLjM1LjMzLS44NC40OS0xLjQ1LjQ5LS4yOSAwLS41Ni0uMDQtLjgtLjEzLS4yNC0uMDgtLjQ0LS4yLS42MS0uMzZzLS4zLS4zNC0uMzktLjU2Yy0uMDktLjIyLS4xNC0uNDYtLjE0LS43Mkg0LjE5YzAgLjU1LjExIDEuMDMuMzIgMS40NS4yMS40Mi41Ljc3Ljg2IDEuMDVzLjc3LjQ5IDEuMjQuNjMuOTYuMjEgMS40OC4yMWMuNTcgMCAxLjA5LS4wOCAxLjU4LS4yM3MuOTEtLjM4IDEuMjYtLjY4Yy4zNi0uMy42NC0uNjYuODQtMS4xLjItLjQzLjMtLjkzLjMtMS40OCAwLS4yOS0uMDQtLjU4LS4xMS0uODYtLjA4LS4yNS0uMTktLjUxLS4zNS0uNzZ6bTkuMjYgMS40Yy0uMTQtLjI4LS4zNS0uNTMtLjYzLS43NC0uMjgtLjIxLS42MS0uMzktMS4wMS0uNTNzLS44NS0uMjctMS4zNS0uMzhhNi42NCA2LjY0IDAgMCAxLS44Ny0uMjNjLS4yMy0uMDgtLjQxLS4xNi0uNTUtLjI1cy0uMjMtLjE5LS4yOC0uM2MtLjA1LS4xMS0uMDgtLjI0LS4wOC0uMzlzLjAzLS4yOC4wOS0uNDEuMTUtLjI1LjI3LS4zNGMuMTItLjEuMjctLjE4LjQ1LS4yNHMuNC0uMDkuNjQtLjA5Yy4yNSAwIC40Ny4wNC42Ni4xMXMuMzUuMTcuNDguMjkuMjIuMjYuMjkuNDJjLjA2LjE2LjEuMzIuMS40OWgxLjk1YTIuNTE3IDIuNTE3IDAgMCAwLS45My0xLjk3Yy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OS0uNDMtLjE1LS45Mi0uMjItMS40Ni0uMjItLjUxIDAtLjk4LjA3LTEuMzkuMjFzLS43Ny4zMy0xLjA2LjU3Yy0uMjkuMjQtLjUxLjUyLS42Ny44NHMtLjIzLjY1LS4yMyAxLjAxLjA4LjY4LjIzLjk2LjM3LjUyLjY0LjczYy4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43N3MtLjY2LjI5LTEuMTcuMjljLS4yMiAwLS40My0uMDItLjY0LS4wOC0uMjEtLjA1LS40LS4xMy0uNTYtLjI0YTEuMzMzIDEuMzMzIDAgMCAxLS41OS0xLjExaC0xLjg5YzAgLjM2LjA4LjcxLjI0IDEuMDVzLjM5LjY1LjcuOTNjLjMxLjI3LjY5LjQ5IDEuMTUuNjYuNDYuMTcuOTguMjUgMS41OC4yNS41MyAwIDEuMDEtLjA2IDEuNDQtLjE5LjQzLS4xMy44LS4zMSAxLjExLS41NC4zMS0uMjMuNTQtLjUxLjcxLS44My4xNy0uMzIuMjUtLjY3LjI1LTEuMDYtLjAyLS40LS4wOS0uNzQtLjI0LTEuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMWg2djJIOXpNMTIgNmMzLjg3IDAgNyAzLjEzIDcgNyAwIC45NC0uMTkgMS44My0uNTIgMi42NWwxLjUgMS41YTguOTYzIDguOTYzIDAgMCAwLS45NS05Ljc2bDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJhOC45NjIgOC45NjIgMCAwIDAtOS43Ny0uOTZsMS41IDEuNUE3LjA3IDcuMDcgMCAwIDEgMTIgNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEgOC4xNyAyIDJWOGgtMnpNMi44MSAyLjgxIDEuMzkgNC4yMmwzLjQgMy40YTguOTk0IDguOTk0IDAgMCAwIDEyLjU5IDEyLjU5bDIuNCAyLjQgMS40MS0xLjQxTDIuODEgMi44MXpNMTIgMjBjLTMuODcgMC03LTMuMTMtNy03IDAtMS40Ny40NS0yLjgzIDEuMjItMy45NWw5LjczIDkuNzNBNi45NDUgNi45NDUgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDFIOXYyaDZWMXptLTQgMTNoMlY4aC0ydjZ6bTguMDMtNi42MSAxLjQyLTEuNDJjLS40My0uNTEtLjktLjk5LTEuNDEtMS40MWwtMS40MiAxLjQyQTguOTYyIDguOTYyIDAgMCAwIDEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOC45OTQgOC45OTQgMCAwIDAgNy4wMy0xNC42MXpNMTIgMjBjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG9uYWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE3LjkzYy0zLjk0LS40OS03LTMuODUtNy03LjkzczMuMDUtNy40NCA3LTcuOTN2MTUuODZ6bTItMTUuODZjMS4wMy4xMyAyIC40NSAyLjg3LjkzSDEzdi0uOTN6TTEzIDdoNS4yNGMuMjUuMzEuNDguNjUuNjggMUgxM1Y3em0wIDNoNi43NGMuMDguMzMuMTUuNjYuMTkgMUgxM3YtMXptMCA5LjkzVjE5aDIuODdjLS44Ny40OC0xLjg0LjgtMi44Ny45M3pNMTguMjQgMTdIMTN2LTFoNS45MmMtLjIuMzUtLjQzLjY5LS42OCAxem0xLjUtM0gxM3YtMWg2LjkzYy0uMDQuMzQtLjExLjY3LS4xOSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhbnNmb3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOHYtMkg4VjRoMkw3IDEgNCA0aDJ2MkgydjJoNHY4YzAgMS4xLjkgMiAyIDJoOHYyaC0ybDMgMyAzLTNoLTJ2LTJoNHpNMTAgOGg2djZoMlY4YzAtMS4xLS45LTItMi0yaC02djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3djJoNnYtMkgzek0zIDV2MmgxMFY1SDN6bTEwIDE2di0yaDh2LTJoLTh2LTJoLTJ2Nmgyek03IDl2MkgzdjJoNHYyaDJWOUg3em0xNCA0di0ySDExdjJoMTB6bS02LTRoMlY3aDRWNWgtNFYzaC0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb0NhbWVyYUJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek0xNiAxOEg0VjZoMTJ2MTJ6bS00LjM4LTYuNUw5IDE1bC0xLjYyLTIuMTdMNSAxNmgxMGwtMy4zOC00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb0NhbWVyYUZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTAuNDhWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi00LjQ4bDQgMy45OHYtMTFsLTQgMy45OHptLTItLjc5VjE4SDRWNmgxMnYzLjY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTUuNDNjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDYgMTUuNDNWMTZoOHYtLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9TdGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCAxOFY2aDIuOTVsLTIuMzMgOC43M0wxNi44MiAxOEg0em0xMS42Mi0yLjM5LTguNTUtMi4yOUw4LjM4IDguNGw4LjU2IDIuMjktMS4zMiA0Ljkyek0yMCAxOGgtMi45NWwyLjM0LTguNzNMNy4xOCA2SDIwdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0NvbWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0djE2aDIwVjRIMnptMiAyaDE2djVINFY2em0wIDEydi01aDR2NUg0em02IDB2LTVoMTB2NUgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdDb21wYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0djE2aDIwVjRIMnptNC41IDE0SDR2LTIuNWgyLjVWMTh6bTAtNC43NUg0di0yLjVoMi41djIuNXptMC00Ljc1SDRWNmgyLjV2Mi41ek0xMSAxOEg4LjV2LTIuNUgxMVYxOHptMC00Ljc1SDguNXYtMi41SDExdjIuNXptMC00Ljc1SDguNVY2SDExdjIuNXptNC41IDkuNUgxM3YtMi41aDIuNVYxOHptMC00Ljc1SDEzdi0yLjVoMi41djIuNXptMC00Ljc1SDEzVjZoMi41djIuNXpNMjAgMThoLTIuNXYtMi41SDIwVjE4em0wLTQuNzVoLTIuNXYtMi41SDIwdjIuNXptMC00Ljc1aC0yLjVWNkgyMHYyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWduZXR0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNXYxNEgzVjVoMThtMC0ySDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkgNWMzLjI1IDAgNiAxLjgzIDYgNHMtMi43NSA0LTYgNC02LTEuODMtNi00IDIuNzUtNCA2LTRtMC0yYy00LjQyIDAtOCAyLjY5LTggNnMzLjU4IDYgOCA2IDgtMi42OSA4LTYtMy41OC02LTgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZycGFubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjAxIDRDMjAuNDUgNCAxNy40IDUuNSAxMiA1LjVjLTUuMzEgMC04LjQ5LTEuNDktOS4wMS0xLjQ5LS41MyAwLS45OS40NC0uOTkgMS4wMVYxOWMwIC41Ny40NiAxIC45OSAxIC41NyAwIDMuNTUtMS41IDkuMDEtMS41IDUuNDIgMCA4LjQ0IDEuNSA5LjAxIDEuNS41MyAwIC45OS0uNDMuOTktMVY1YzAtLjU3LS40Ni0xLS45OS0xek0yMCAxNy42M2MtMi4wMS0uNTktNC42Mi0xLjEzLTgtMS4xMy0zLjM5IDAtNS45OS41NC04IDEuMTNWNi4zOGMyLjU4LjczIDUuMzIgMS4xMiA4IDEuMTIgMy4zOCAwIDUuOTktLjU0IDgtMS4xM3YxMS4yNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4xNyAxMC45OS0zLjY5IDQuNDJjMi0uMjYgNC4xOC0uNDEgNi41Mi0uNDEgMi4zIDAgNC41Mi4xNSA2LjUxLjRMMTQgMTBsLTIuODMgMy4zOS0yLTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdiQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyA3LTMuMiA5aDEuOWwuNy0yaDMuMmwuNyAyaDEuOUw5IDdIN3ptLS4xNSA1LjY1TDggOWwxLjE1IDMuNjVoLTIuM3pNMjIgN2wtMS4yIDYuMjlMMTkuMyA3aC0xLjZsLTEuNDkgNi4yOUwxNSA3aC0uNzZsLS4wMS4wMUMxMi43NiA1LjE4IDEwLjUzIDQgOCA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4YzIuOTYgMCA1LjU1LTEuNjEgNi45My00IC4wMy0uMDYuMDUtLjEyLjA4LS4xOC4wNS0uMDguMDktLjE3LjE0LS4yNWwuMS40M0gxN2wxLjUtNi4xTDIwIDE2aDEuNzVsMi4wNS05SDIyem0tOC42MyA3LjY3QzEyLjM4IDE2LjY0IDEwLjM1IDE4IDggMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNmMwIC45Ni0uMjMgMS44Ni0uNjMgMi42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdiQ2xvdWR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMSA2YzIuNjEgMCA0Ljg5IDEuODYgNS40IDQuNDNsLjMgMS41IDEuNTIuMTFjMS41Ni4xMSAyLjc4IDEuNDEgMi43OCAyLjk2IDAgMS42NS0xLjM1IDMtMyAzaC0xM2MtMi4yMSAwLTQtMS43OS00LTQgMC0yLjA1IDEuNTMtMy43NiAzLjU2LTMuOTdsMS4wNy0uMTEuNS0uOTVBNS40NTcgNS40NTcgMCAwIDEgMTIuMDEgNm0wLTJDOS4xMiA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM1IDguMzYuMDEgMTAuOTEuMDEgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY0LTQuOTZDMTguNjggNi41OSAxNS42NSA0IDEyLjAxIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYkluY2FuZGVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy41NSAxOS4wOSAxLjQxIDEuNDEgMS43OS0xLjgtMS40MS0xLjQxek0xMSAyMGgydjNoLTJ6TTEgMTFoM3YySDF6bTEyLTYuOTV2My45NmwxIC41OGMxLjI0LjcyIDIgMi4wNCAyIDMuNDYgMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRjMC0xLjQyLjc3LTIuNzQgMi0zLjQ2bDEtLjU4VjQuMDVoMm0yLTJIOXY0LjgxQzcuMjEgNy45IDYgOS44MyA2IDEyLjA1YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0yLjIyLTEuMjEtNC4xNS0zLTUuMTlWMi4wNXpNMjAgMTFoM3YyaC0zem0tMi43NiA3LjcxIDEuNzkgMS44IDEuNDEtMS40MS0xLjgtMS43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdiSXJpZGVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNWgxNFY5SDV2NnptMi00aDEwdjJIN3YtMnptNC0xMGgydjNoLTJ6bTkuNDYgNC4wMUwxOS4wNCAzLjZsLTEuNzkgMS43OSAxLjQxIDEuNDF6TTExIDIwaDJ2M2gtMnptNi4yNC0xLjI5IDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNNC45NiAzLjU5NWwxLjc4OCAxLjc5TDUuMzQgNi43OSAzLjU1MyA1LjAwM3pNMy41NSAxOS4wOGwxLjQxIDEuNDIgMS43OS0xLjgtMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2JTaGFkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEydjIuNWw1LjUgNS41SDIybC04LTh6bTAgOGgzbC0zLTN2M3pNOCA0bC02IDZoMnYxMGg4VjEwaDJMOCA0em0xIDEwSDd2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2JTdW5ueSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNi43NiA0Ljg0LTEuOC0xLjc5LTEuNDEgMS40MSAxLjc5IDEuNzl6TTEgMTAuNWgzdjJIMXpNMTEgLjU1aDJWMy41aC0yem04LjA0IDIuNDk1IDEuNDA4IDEuNDA3LTEuNzkgMS43OS0xLjQwNy0xLjQwOHptLTEuOCAxNS4xMTUgMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5ek0yMCAxMC41aDN2MmgtM3ptLTgtNWMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTAgMTBjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em0tMSA0aDJ2Mi45NWgtMnptLTcuNDUtLjk2IDEuNDEgMS40MSAxLjc5LTEuOC0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYlR3aWxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuOTU1IDguNjYyIDIuMTItMi4xMjIgMS40MTYgMS40MTQtMi4xMjEgMi4xMjJ6TTIgMThoMjB2Mkgyek0xMSA0aDJ2M2gtMnpNMy41NDMgNy45MjUgNC45NTcgNi41MWwyLjEyMSAyLjEyLTEuNDE0IDEuNDE1ek01IDE2aDE0YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMzYwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3QzYuNDggNyAyIDkuMjQgMiAxMmMwIDIuMjQgMi45NCA0LjEzIDcgNC43N1YyMGw0LTQtNC00djIuNzNjLTMuMTUtLjU2LTUtMS45LTUtMi43MyAwLTEuMDYgMy4wNC0zIDgtM3M4IDEuOTQgOCAzYzAgLjczLTEuNDYgMS44OS00IDIuNTN2Mi4wNWMzLjUzLS43NyA2LTIuNTMgNi00LjU4IDAtMi43Ni00LjQ4LTUtMTAtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEJ1c2luZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0aDE1djJIMnpNMTUgMTdoMnYtM2gxdi0ybC0xLTVIMmwtMSA1djJoMXY2aDl2LTZoNHYzem0tNiAxSDR2LTRoNXY0em0tNS45Ni02IC42LTNoMTEuNzJsLjYgM0gzLjA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxOGgtM3YtM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZExvY2F0aW9uQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMXYzaDN2MmgtM3YzaC0yVjZoLTNWNGgzVjFoMnptLTggMTJjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0xLTkuOTR2Mi4wMkE2LjUzIDYuNTMgMCAwIDAgMTIgNWMtMy4zNSAwLTYgMi41Ny02IDYuMiAwIDIuMzQgMS45NSA1LjQ0IDYgOS4xNCA0LjA1LTMuNyA2LTYuNzkgNi05LjE0VjExaDJ2LjJjMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA2LjIyIDcuOCAzIDEyIDNjLjM0IDAgLjY3LjAyIDEgLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA2djNoM3YyaC0zdjNoLTJ2LTNIOFY5aDNWNmgyem01IDQuMkMxOCA2LjU3IDE1LjM1IDQgMTIgNHMtNiAyLjU3LTYgNi4yYzAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0IDQuMDUtMy43IDYtNi44IDYtOS4xNHpNMTIgMmM0LjIgMCA4IDMuMjIgOCA4LjIgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRSb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTh2LTNoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJ6TTE4IDRoMnY5aC0yek00IDRoMnYxNkg0ek0xMSA0aDJ2NGgtMnpNMTEgMTBoMnY0aC0yek0xMSAxNmgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZ3JpY3VsdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOWg1YzAtMS4xLS45LTItMi0ySDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE0LjA2VjhjMC0xLjEtLjktMi0yLTJoLTYuMjlsLTEuMDYtMS4wNiAxLjQxLTEuNDEtLjcxLS43MS0zLjUzIDMuNTMuNzEuNzEgMS40MS0xLjQxTDEzIDYuNzFWOWMwIDEuMS0uOSAyLTIgMkg4Ljk2Yy0uMjItLjE2LS40NS0uMy0uNjktLjQzbC0uNC44OS0uNDYtLjIxLjQtLjlDNy4yNiAxMC4xMyA2LjY0IDEwIDYgMTBjLS41MyAwLTEuMDQuMTEtMS41Mi4yNmwuMzQuOTEtLjQ3LjE4LS4zNS0uOTNhNC45MiA0LjkyIDAgMCAwLTIuNDMgMi4zMWwuODkuNC0uMjEuNDYtLjktLjRDMS4xMyAxMy43NCAxIDE0LjM2IDEgMTVjMCAuNTMuMTEgMS4wNC4yNiAxLjUybC45MS0uMzQuMTguNDctLjkzLjM1YTQuOTIgNC45MiAwIDAgMCAyLjMxIDIuNDNsLjQtLjg5LjQ2LjIxLS40LjljLjU1LjIyIDEuMTcuMzUgMS44MS4zNS41MyAwIDEuMDQtLjExIDEuNTItLjI2bC0uMzQtLjkxLjQ3LS4xOC4zNS45M2E0LjkyIDQuOTIgMCAwIDAgMi40My0yLjMxbC0uODktLjQuMjEtLjQ2LjkuNGMuMS0uMjYuMTgtLjU0LjI0LS44Mmg1LjE2Yy0uMDIuMTctLjA1LjM0LS4wNS41MSAwIDEuOTMgMS41NyAzLjUgMy41IDMuNXMzLjUtMS41NyAzLjUtMy41YzAtLjk1LS4zOC0xLjgxLTEtMi40NHpNNiAxOGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6bTQuODctNGMtLjA0LS4xOC0uMDgtLjM1LS4xMy0uNTJsLS45MS4zNC0uMTgtLjQ3LjkzLS4zNUgxMWMyLjIxIDAgNC0xLjc5IDQtNFY4aDV2NS4wNWMtLjE2LS4wMi0uMzMtLjA1LS41LS4wNS0uOTUgMC0xLjgxLjM4LTIuNDQgMWgtNi4xOXptOC42MyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTdG9wcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDguN2MtMi40NiAxLjUtNS41IDQuMTctNiA4LjNoMnYySDl2LTJoMmMtLjUtNC41LTQuMzctOC05LThWN2M0LjM5IDAgOC4yMiAyLjU1IDEwIDYuMyAxLjM4LTIuOTcgMy44Ni01LjAzIDUuOTYtNi4zMUwxNCA3VjVoN3Y3aC0yVjguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMzQgMThINS44bDguMjUtMTJoNS41NGwtMi4yNSAxMnpNMTMgNCAyIDIwaDE3bDMtMTZoLTl6bTEuNSA1YTIuNSAyLjUgMCAwIDAgMCA1IDIuNSAyLjUgMCAwIDAgMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWx0Um91dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05Ljc4IDExLjE2LTEuNDIgMS40MmE3LjI4MiA3LjI4MiAwIDAgMS0xLjc5LTIuOTRsMS45NC0uNDljLjMyLjg5Ljc3IDEuNSAxLjI3IDIuMDF6TTExIDYgNyAyIDMgNmgzLjAyYy4wMi44MS4wOCAxLjU0LjE5IDIuMTdsMS45NC0uNDlDOC4wOCA3LjIgOC4wMyA2LjYzIDguMDIgNkgxMXptMTAgMC00LTQtNCA0aDIuOTljLS4xIDMuNjgtMS4yOCA0Ljc1LTIuNTQgNS44OC0uNS40NC0xLjAxLjkyLTEuNDUgMS41NS0uMzQtLjQ5LS43My0uODgtMS4xMy0xLjI0TDkuNDYgMTMuNmMuOTMuODUgMS41NCAxLjU0IDEuNTQgMy40djVoMnYtNWMwLTIuMDIuNzEtMi42NiAxLjc5LTMuNjMgMS4zOC0xLjI0IDMuMDgtMi43OCAzLjItNy4zN0gyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF0bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5djEuNWgyLjI1VjE1aDEuNXYtNC41SDE0VjlIOHpNNiA5SDNjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNXYtMS41aDJWMTVIN3YtNWMwLS41NS0uNDUtMS0xLTF6bS0uNSAzaC0ydi0xLjVoMlYxMnpNMjEgOWgtNC41Yy0uNTUgMC0xIC40NS0xIDF2NUgxN3YtNC41aDFWMTRoMS41di0zLjUxaDFWMTVIMjJ2LTVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0cmFjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4xNSAxNC40MmMuMjMtLjc3LjM1LTEuNTguMzUtMi40MnMtLjEyLTEuNjUtLjM1LTIuNDJjLjc4LS42IDEuMDItMS43LjUxLTIuNThzLTEuNTgtMS4yMy0yLjQ5LS44NWE4LjUzIDguNTMgMCAwIDAtNC4xOC0yLjQyQzEzLjg1IDIuNzUgMTMuMDEgMiAxMiAycy0xLjg1Ljc1LTEuOTggMS43M2E4LjU2MSA4LjU2MSAwIDAgMC00LjE5IDIuNDJjLS45MS0uMzgtMS45OC0uMDMtMi40OS44NXMtLjI3IDEuOTguNTEgMi41OGMtLjIzLjc3LS4zNSAxLjU4LS4zNSAyLjQycy4xMiAxLjY1LjM1IDIuNDJjLS43OC42LTEuMDIgMS43LS41MSAyLjU4czEuNTggMS4yMyAyLjQ5Ljg1Yy40LjQyLjgzLjc5IDEuMyAxLjEyTDUuNzggMjJoMS44OGwuOTgtMi4xOWMuNDQuMTkuOS4zNCAxLjM4LjQ2LjEzLjk4Ljk3IDEuNzMgMS45OCAxLjczczEuODUtLjc1IDEuOTgtMS43M2MuNDYtLjExLjkxLS4yNiAxLjM0LS40NEwxNi4zIDIyaDEuODhsLTEuMzQtM2MuNDgtLjM0LjkzLS43MiAxLjM0LTEuMTUuOTEuMzggMS45OS4wMyAyLjQ5LS44NS41LS44OC4yNi0xLjk4LS41Mi0yLjU4em0tNi41OSA0LjMzYy0uMzctLjQ2LS45My0uNzUtMS41Ni0uNzVzLTEuMi4yOS0xLjU3Ljc1Yy0uNC0uMDktLjc5LS4yMS0xLjE2LS4zN2wxLjQzLTMuMTlhMy41MjIgMy41MjIgMCAwIDAgMi41Ni4wMmwxLjQyIDMuMThjLS4zNi4xNS0uNzMuMjctMS4xMi4zNnptLTMuMDgtNi43M2MwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41em04LjIzIDEuOTljLS42MS4wNy0xLjE4LjQxLTEuNTIuOTktLjMyLjU2LS4zNCAxLjItLjEyIDEuNzUtLjI4LjI5LS41OC41NS0uOS43OWwtMS41LTMuMzVjLjQ5LS41OS43OC0xLjM0Ljc4LTIuMTYgMC0xLjg5LTEuNTUtMy40MS0zLjQ2LTMuNDFzLTMuNDYgMS41My0zLjQ2IDMuNDFjMCAuOC4yOCAxLjU0Ljc1IDIuMTNsLTEuNTIgMy4zOWMtLjMxLS4yMy0uNi0uNDgtLjg3LS43Ni4yNi0uNTYuMjQtMS4yMi0uMDktMS43OS0uMzQtLjU5LS45My0uOTQtMS41Ni0uOTktLjIyLS42OC0uMzMtMS40LS4zMy0yLjE1IDAtLjY0LjA5LTEuMjYuMjUtMS44NS42Ni0uMDMgMS4zLS4zOCAxLjY1LTEgLjM3LS42My4zNS0xLjM4LjAxLTEuOTguOTItLjk4IDIuMTEtMS42OSAzLjQ1LTIuMDMuMzQuNTkuOTkgMSAxLjczIDFzMS4zOS0uNCAxLjczLTFjMS4zNC4zNCAyLjUzIDEuMDcgMy40NCAyLjA1LS4zMi41OS0uMzMgMS4zMy4wMyAxLjk1LjM1LjYuOTYuOTUgMS42IDEgLjE2LjU5LjI1IDEuMjEuMjUgMS44NiAwIC43NS0uMTIgMS40Ny0uMzQgMi4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJoNHYxLjVoLTR6TTE0IDE1aDR2MS41aC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aC01VjRjMC0xLjEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjktMiAydjNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0tOSAwVjRoMnY1aC0yVjd6bTkgMTNINFY5aDVjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0yaDV2MTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4wOCAxNi4xOGMtLjY0LS4yOC0xLjM0LS40My0yLjA4LS40M3MtMS40NC4xNS0yLjA4LjQzYy0uNTYuMjQtLjkyLjc4LS45MiAxLjM5VjE4aDZ2LS40M2MwLS42MS0uMzYtMS4xNS0uOTItMS4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJha2VyeURpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgMTAuOTRjLjEzLS4zMi4xLS4yMy4xNS0uMzkuMy0xLjIxLS4zNC0yLjQ3LTEuNS0yLjkzbC0yLjAxLS44Yy0uNDYtLjE4LS45NS0uMjEtMS40MS0uMTItLjExLS4zMy0uMjktLjYzLS41Mi0uODktLjQ4LS41Mi0xLjE1LS44MS0xLjg1LS44MWgtMi43MWMtLjcxIDAtMS4zOC4yOS0xLjg1LjgxLS4yNC4yNi0uNDIuNTYtLjUzLjg4LS40Ni0uMDktLjk1LS4wNi0xLjQxLjEybC0yLjAxLjhjLTEuMTYuNDYtMS44IDEuNzItMS41IDIuOTNsLjE1LjM4QzEuMSAxNS41NSAxIDE1LjU1IDEgMTYuMzhjMCAuOTEuNDYgMS43NCAxLjI0IDIuMjIgMS40Mi44OCAyLjQ5LjE0IDQtLjYxaDExLjUzYzEuNTIuNzYgMS44NiAxLjAxIDIuNjMgMS4wMSAxIDAgMi42MS0uNzcgMi42MS0yLjYxLS4wMS0uODUtLjEzLS44OC0yLjUxLTUuNDV6bS0uMzggNS45OS0xLjY4LS44NCAxLjA4LTIuNyAxLjQxIDIuNzFjLjI4LjUzLS4yOSAxLjA5LS44MS44M3ptLTUuMDMtLjk0LjYyLTYuOWMuMDMtLjMzLjM3LS41NC42OC0uNDJsMi4wMS44Yy4yMi4wOS4zNC4zMS4zMS41NGwtMi40IDUuOThoLTEuMjJ6bS03LjQxIDAtMi40LTUuOThjLS4wMy0uMjMuMDktLjQ1LjMxLS41NGwyLjAxLS44Yy4zMS0uMTIuNjUuMDguNjguNDJsLjYyIDYuOUg3LjY4em0tNC42MS4xMSAxLjQxLTIuNzIgMS4wOCAyLjcxLTEuNjguODRjLS41Mi4yNi0xLjA5LS4zLS44MS0uODN6bTcuMDgtOC41NmEuNS41IDAgMCAxIC41LS41NGgyLjcxYS41LjUgMCAwIDEgLjUuNTRsLS43NyA4LjQ1aC0yLjE3bC0uNzctOC40NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZW5oZXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxNS45M2MwIC42OS4zNSAxLjMuODggMS42NkwxMiAyM2w4LjExLTUuNDFjLjUzLS4zNi44OC0uOTcuODgtMS42NkwyMSAzYzAtMS4xLS45LTItMi0yem0tNyAxOS42LTctNC42NlYzaDE0djEyLjkzbC03IDQuNjd6bS0yLjAxLTcuNDItMi41OC0yLjU5TDYgMTJsNCA0IDgtOC0xLjQyLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCaWtlU2Nvb3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE0aC43NEw4LjgyIDUuNTZBMi4wMDkgMi4wMDkgMCAwIDAgNi44NyA0SDN2MmgzLjg3bDEuNDIgNi4yNWgtLjAxQTYuMDA4IDYuMDA4IDAgMCAwIDQuMDkgMTdIMHYyaDZ2LTFjMC0yLjIxIDEuNzktNCA0LTR6TTE5IDhoLS44MmwtMS4zNS0zLjY5QTEuOTc2IDEuOTc2IDAgMCAwIDE0Ljk2IDNIMTF2MmgzLjk2bDEuMSAzSDEwLjRsLjQ2IDJIMTVjLS40My41OC0uNzUgMS4yNS0uOSAyaC0yLjc5bC40NiAyaDIuMzNjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNUMyNCAxMC4yIDIxLjggOCAxOSA4em0wIDhjLTEuNjggMC0zLTEuMzItMy0zIDAtLjkzLjQxLTEuNzMgMS4wNS0yLjI4bC45NiAyLjY0IDEuODgtLjY4LS45Ny0yLjY3Yy4wMyAwIC4wNi0uMDEuMDktLjAxIDEuNjggMCAzIDEuMzIgMyAzcy0xLjMzIDMtMy4wMSAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJlYWtmYXN0RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggM0g2QzMuNzkgMyAyIDQuNzkgMiA3YzAgMS40OC44MSAyLjc1IDIgMy40NVYxOWMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi04LjU1YzEuMTktLjY5IDItMS45NyAyLTMuNDUgMC0yLjIxLTEuNzktNC00LTR6bTEgNS43Mi0xIC41OFYxOUg2VjkuMzFsLS45OS0uNThDNC4zOCA4LjM1IDQgNy43MSA0IDdjMC0xLjEuOS0yIDItMmgxMmMxLjEgMCAyIC45IDIgMiAwIC43MS0uMzggMS4zNi0xIDEuNzJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjcxIDkuMjlDMTIuNTEgOS4xIDEyLjI2IDkgMTIgOXMtLjUxLjEtLjcxLjI5bC0zIDNhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDMgM2MuMi4yLjQ1LjMuNzEuM3MuNTEtLjEuNzEtLjI5bDMtM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTMtMy4wMXpNMTIgMTQuNTggMTAuNDEgMTMgMTIgMTEuNDEgMTMuNTkgMTMgMTIgMTQuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcnVuY2hEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIxLjVjMCAuMjguMjIuNS40OS41aDEzLjAyYy4yNyAwIC40OS0uMjIuNDktLjVWMjBIMnYxLjV6TTE1LjUgMTZIMTF2LTJIN3YySDIuNWMtLjI4IDAtLjUuMjItLjUuNVYxOGgxNHYtMS41YzAtLjI4LS4yMi0uNS0uNS0uNXpNMjAuNDcgMTUuNDVBNS43OTYgNS43OTYgMCAwIDAgMjIgMTEuNTFWMmgtNnY5LjQ3YzAgMS40OC41OCAyLjkyIDEuNiA0bC40LjQyVjIyaDR2LTJoLTJ2LTQuMDNsLjQ3LS41MnpNMTggNGgydjRoLTJWNHptMS4wMyAxMC4wN2EzLjg5MyAzLjg5MyAwIDAgMS0xLjAzLTIuNlYxMGgydjEuNTFjMCAuOTUtLjM0IDEuODUtLjk3IDIuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdXNBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNi41XCIsXCJjeVwiOlwiMTUuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTMuNVwiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExVjhoNy4yOUMxMS4xIDcuMzcgMTEgNi43IDExIDZINC40M2MuODMtLjcxIDIuOTgtMS4wOSA2LjY1LS45OC4xLS43LjMtMS4zNy41OS0xLjk5QzIuOTcgMi42NyAyIDUuMDIgMiA3djkuNWMwIC45NS4zOCAxLjgxIDEgMi40NFYyMWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTIuMDZjLjYyLS42MyAxLTEuNDkgMS0yLjQ0VjEzYy0xLjkxIDAtMy42My0uNzYtNC44OS0ySDR6bTEyIDVjMCAxLjEtLjkgMi0yIDJINmMtMS4xIDAtMi0uOS0yLTJ2LTNoMTJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMWMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS41IDhoLTFWOGgxdjF6bTAtMmgtMVYzaDF2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhckNyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMWMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS41IDZoLTFWM2gxdjR6bTAgMXYxaC0xVjhoMXpNNiAxMy41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzguMzMgMTUgNy41IDE1IDYgMTQuMzMgNiAxMy41em0xMy0uNTdhNi43MiA2LjcyIDAgMCAwIDItLjZWMTljMCAuNTUtLjQ1IDEtMSAxaC0xYy0uNTUgMC0xLS40NS0xLTF2LTFINnYxYzAgLjU1LS40NSAxLTEgMUg0Yy0uNTUgMC0xLS40NS0xLTF2LThsMi4wOC01Ljk5QzUuMjkgNC40MiA1Ljg0IDQgNi41IDRoNC43OWMtLjE5LjYzLS4yOSAxLjMxLS4yOSAySDYuODVMNS44MSA5aDUuODZjLjM2Ljc1Ljg0IDEuNDMgMS40MyAySDV2NWgxNHYtMy4wN3ptLTEuMDkuMDdhNi45MiA2LjkyIDAgMCAxLTIuNTMtLjUxYy0uMjMuMjctLjM4LjYyLS4zOCAxLjAxIDAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNWMwLS4xOC0uMDMtLjM0LS4wOS0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhclJlbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjE2LjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjE2LjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMjUgOS42Yy0uMDItLjAyLS4wMy0uMDQtLjA1LS4wNy0uMzgtLjUyLS45Mi0uNTMtLjkyLS41M0g3Ljcycy0uNTQuMDEtLjkyLjU0Yy0uMDIuMDItLjAzLjA0LS4wNS4wNi0uMDcuMTEtLjE0LjI0LS4xOS40LS4yMi42Ni0uNzQgMi4yMi0xLjU2IDQuNjl2Ni41YzAgLjQ1LjM1LjgxLjc4LjgxaC40NGMuNDMgMCAuNzgtLjM2Ljc4LS44MVYyMGgxMHYxLjE5YzAgLjQ1LjM0LjgxLjc4LjgxaC40NGMuNDMgMCAuNzgtLjM2Ljc4LS44MXYtNi41Yy0uODItMi40Ni0xLjM0LTQuMDMtMS41Ni00LjY5LS4wNS0uMTYtLjEyLS4yOS0uMTktLjR6TTguMzMgMTFoNy4zNGwuMjMuNjkuNDMgMS4zMUg3LjY3bC42Ni0yek0xNyAxOEg3di0zaDEwdjN6TTEwLjgzIDNBMy4wMSAzLjAxIDAgMCAwIDggMUM2LjM0IDEgNSAyLjM0IDUgNGMwIDEuNjUgMS4zNCAzIDMgMyAxLjMgMCAyLjQxLS44NCAyLjgzLTJIMTZ2MmgyVjVoMVYzaC04LjE3ek04IDVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhclJlcGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS43OCAxNmguNDRjLjQzIDAgLjc4LS4zNi43OC0uODFWMTRoMTB2MS4xOWMwIC40NS4zNC44MS43OC44MWguNDRjLjQzIDAgLjc4LS4zNi43OC0uODF2LTYuNUwxNy40NCA0Yy0uMDUtLjE2LS4xMi0uMjktLjE5LS40LS4wMi0uMDItLjAzLS4wNC0uMDUtLjA3LS4zOC0uNTItLjkyLS41My0uOTItLjUzSDcuNzJzLS41NC4wMS0uOTIuNTRjLS4wMi4wMi0uMDMuMDQtLjA1LjA2LS4wNy4xMS0uMTQuMjQtLjE5LjRMNSA4LjY5djYuNWMwIC40NS4zNS44MS43OC44MXpNOC4zMyA1aDcuMzRsLjIzLjY5LjQzIDEuMzFINy42N2wuNjYtMnpNNyA5LjAxVjloMTB2M0g3VjkuMDF6TTQgMTcuMDFWMTloN3YzaDJ2LTNoN3YtMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhc3RsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDl2MmgtMlYzaC0ydjJoLTJWM2gtMnYyaC0yVjNIOXYySDdWM0g1djhIM1Y5SDF2MTJoOXYtM2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjNoOVY5aC0yem0wIDEwaC01di0xYzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0djFIM3YtNmg0VjdoMTB2Nmg0djZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOWgydjNIOXpNMTMgOWgydjNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXRlZ29yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMi01LjUgOWgxMUwxMiAyem0wIDMuODRMMTMuOTMgOWgtMy44N0wxMiA1Ljg0ek0xNy41IDEzYy0yLjQ5IDAtNC41IDIuMDEtNC41IDQuNXMyLjAxIDQuNSA0LjUgNC41IDQuNS0yLjAxIDQuNS00LjUtMi4wMS00LjUtNC41LTQuNXptMCA3YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1ek0zIDIxLjVoOHYtOEgzdjh6bTItNmg0djRINXYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNlbGVicmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMiAyMiAxNC01LTktOS01IDE0em0xMC4zNS01LjgyTDUuMyAxOC43bDIuNTItNy4wNSA0LjUzIDQuNTN6TTE0LjUzIDEyLjUzbDUuNTktNS41OWExLjI1IDEuMjUgMCAwIDEgMS43NyAwbC41OS41OSAxLjA2LTEuMDYtLjU5LS41OWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDBsLTUuNTkgNS41OSAxLjA2IDEuMDZ6TTEwLjA2IDYuODhsLS41OS41OSAxLjA2IDEuMDYuNTktLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtLjU5LS41OS0xLjA2IDEuMDcuNTkuNTljLjQ4LjQ4LjQ4IDEuMjggMCAxLjc2ek0xNy4wNiAxMS44OGwtMS41OSAxLjU5IDEuMDYgMS4wNiAxLjU5LTEuNTlhMS4yNSAxLjI1IDAgMCAxIDEuNzcgMGwxLjYxIDEuNjEgMS4wNi0xLjA2LTEuNjEtMS42MWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDB6TTE1LjA2IDUuODhsLTMuNTkgMy41OSAxLjA2IDEuMDYgMy41OS0zLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtMS41OS0xLjU5LTEuMDYgMS4wNiAxLjU5IDEuNTljLjQ4LjQ5LjQ4IDEuMjkgMCAxLjc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2h1cmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTIuMjJWOWwtNS0yLjVWNWgyVjNoLTJWMWgtMnYySDl2MmgydjEuNUw2IDl2My4yMkwyIDE0djhoOXYtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NGg5di04bC00LTEuNzh6TTIwIDIwaC01di0yLjA0YzAtMS42OS0xLjM1LTMuMDYtMy0zLjA2cy0zIDEuMzctMyAzLjA2VjIwSDR2LTQuNzlsNC0xLjgxdi0zLjM1TDEyIDhsNCAyLjA0djMuMzVsNCAxLjgxVjIwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xlYW5pbmdTZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDExaC0xVjNjMC0xLjEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjktMiAydjhIOGMtMi43NiAwLTUgMi4yNC01IDV2N2gxOHYtN2MwLTIuNzYtMi4yNC01LTUtNXptLTUtOGgydjhoLTJWM3ptOCAxOGgtMnYtM2MwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXYzaC0ydi0zYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNIOXYtM2MwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXYzSDV2LTVjMC0xLjY1IDEuMzUtMyAzLTNoOGMxLjY1IDAgMyAxLjM1IDMgM3Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29tcGFzc0NhbGlicmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTAgOGMtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6bTAtMTdDOC4xIDMgNC41NiA0LjU5IDIgNy4xNWw1IDVhNy4wNiA3LjA2IDAgMCAxIDEwLS4wMWw1LTVDMTkuNDQgNC41OSAxNS45IDMgMTIgM3ptNC44NCA2LjQ3Yy0xLjQ0LS45MS0zLjEtMS40LTQuODQtMS40LTEuNzQgMC0zLjQxLjQ5LTQuODUgMS40MUw0Ljk0IDcuMjZDNi45OSA1Ljc5IDkuNDQgNSAxMiA1YzIuNTYgMCA1IC43OSA3LjA1IDIuMjZsLTIuMjEgMi4yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbm5lY3RpbmdBaXJwb3J0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjQgMTcgMS4zIDQuNGgtMS4xTDEzIDE3aC0zYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDNsMi42LTQuNGgxLjFMMTUuNCAxNWgyLjg1bC43NS0xaDFsLS42IDIgLjYgMmgtMWwtLjc1LTFIMTUuNHpNNS43NSA3IDUgNkg0bC42IDItLjYgMmgxbC43NS0xSDguNmwtMS4zIDQuNGgxLjFMMTEgOWgzYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xaC0zTDguNCAyLjZINy4zTDguNiA3SDUuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcmlzaXNBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMi41YzAgMS41LTEuNSA2LTEuNSA2aC0yUzkuNSA0IDkuNSAyLjVhMi41IDIuNSAwIDAgMSA1IDB6TTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNC4wOC00Ljg5Yy4xOC0uNzUuMzMtMS40Ny4zOS0yLjA2QTkuOTk2IDkuOTk2IDAgMCAxIDIyIDEyYzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTMuOTIgMi4yNS03LjMxIDUuNTMtOC45NS4wNy41OS4yMSAxLjMyLjM5IDIuMDZBOC4wMjggOC4wMjggMCAwIDAgNCAxMmMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi45My0xLjU4LTUuNDktMy45Mi02Ljg5ek0xOCAxMmMwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNmMwLTIgLjk4LTMuNzcgMi40OC00Ljg2LjIzLjgxLjY1IDIuMDcuNjUgMi4wN0M4LjQzIDkuOTMgOCAxMC45MiA4IDEyYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRjMC0xLjA4LS40My0yLjA3LTEuMTMtMi43OSAwIDAgLjQxLTEuMjIuNjUtMi4wN0E1Ljk5OCA1Ljk5OCAwIDAgMSAxOCAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbGl2ZXJ5RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2MwLTEuMS0uOS0yLTItMmgtM3YyaDN2Mi42NUwxMy41MiAxNEgxMFY5SDZjLTIuMjEgMC00IDEuNzktNCA0djNoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDQuNDhMMTkgMTAuMzVWN3pNNCAxNHYtMWMwLTEuMS45LTIgMi0yaDJ2M0g0em0zIDNjLS41NSAwLTEtLjQ1LTEtMWgyYzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2aDV2Mkg1ek0xOSAxM2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVwYXJ0dXJlQm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNS41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTIuNVwiLFwiY3lcIjpcIjE2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxYTYuOTggNi45OCAwIDAgMC01Ljc1IDMuMDJDOS44NCA0LjAxIDkuNDMgNCA5IDRjLTQuNDIgMC04IC41LTggNHYxMGMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMmMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIydi0zLjA4YzMuMzktLjQ5IDYtMy4zOSA2LTYuOTIgMC0zLjg3LTMuMTMtNy03LTd6TTkgNmguMjljLS4wOS4zMi0uMTYuNjYtLjIxLjk5SDMuMzRDMy44OSA2LjQ2IDUuMzEgNiA5IDZ6TTMgOC45OWg2LjA4Yy4xNiAxLjExLjU3IDIuMTMgMS4xOCAzLjAxSDNWOC45OXpNMTUgMThjMCAuMzctLjIxLjYyLS4zNC43M2wtLjI5LjI3SDMuNjNsLS4yOS0uMjdBLjk2OC45NjggMCAwIDEgMyAxOHYtNGg5LjQxYy43OC40NyAxLjY1Ljc5IDIuNTkuOTJWMTh6bTEtNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bS41LTlIMTV2NWwzLjYyIDIuMTYuNzUtMS4yMy0yLjg3LTEuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXNpZ25TZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk3IDcuMjdhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjgzLTIuODNhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC00LjQ5IDQuNDktMy44OS0zLjg5Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtMS45IDEuOWMtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wzLjg5IDMuODlMMyAxNi43NlYyMWg0LjI0bDQuNTItNC41MiAzLjg5IDMuODljLjk1Ljk1IDIuMjMuNiAyLjgzIDBsMS45LTEuOWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzbC0zLjg5LTMuODkgNC40OC00LjQ4ek01LjA0IDYuOTRsMS44OS0xLjlMOC4yIDYuMzEgNy4wMiA3LjVsMS40MSAxLjQxIDEuMTktMS4xOSAxLjIgMS4yLTEuOSAxLjktMy44OC0zLjg4em0xMS4yMyA3LjQ0LTEuMTkgMS4xOSAxLjQxIDEuNDEgMS4xOS0xLjE5IDEuMjcgMS4yNy0xLjkgMS45LTMuODktMy44OSAxLjktMS45IDEuMjEgMS4yMXpNNi40MSAxOUg1di0xLjQxbDkuNjEtOS42MSAxLjMgMS4zLjExLjExTDYuNDEgMTl6bTkuNjEtMTIuNDQgMS40MS0xLjQxIDEuNDEgMS40MS0xLjQxIDEuNDEtMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlhbW9uZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINUwyIDlsMTAgMTJMMjIgOWwtMy02ek05LjYyIDhsMS41LTNoMS43NmwxLjUgM0g5LjYyek0xMSAxMHY2LjY4TDUuNDQgMTBIMTF6bTIgMGg1LjU2TDEzIDE2LjY4VjEwem02LjI2LTJoLTIuNjVsLTEuNS0zaDIuNjVsMS41IDN6TTYuMjQgNWgyLjY1bC0xLjUgM0g0Ljc0bDEuNS0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlubmVyRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMiAxOSAyIDJoMTZsMi0yek0zIDE4aDE2Ljk3Yy4yOS0zLjI2LTIuMjgtNi01LjQ4LTYtMi4zNSAwLTQuMzUgMS40OC01LjE0IDMuNTUtLjQxLS4yMy0uODctLjM4LTEuMzUtLjQ3VjloMS43NUMxMC45OSA5IDEyIDcuOTkgMTIgNi43NWg5di0xLjVoLTlDMTIgNC4wMSAxMC45OSAzIDkuNzUgM0gzdjEuNWgxdi43NUgzdjEuNWgxdi43NUgzVjloMXY3LjM5Yy0uNDQuNDYtLjc4IDEtMSAxLjYxem0xMS41LTRjLjk5IDAgMS45MS40IDIuNTggMS4xNC4yNC4yNi40NC41NS41OC44NmgtNi4zMmMuNTgtMS4yMSAxLjgxLTIgMy4xNi0yek04IDQuNWgydi43NUg4VjQuNXptMCAyLjI1aDJ2Ljc1SDh2LS43NXpNNS41IDQuNWgxdi43NWgtMVY0LjV6bTAgMi4yNWgxdi43NWgtMXYtLjc1ek01LjUgOWgxdjYuMDZjLS4zNS4wNi0uNjguMTctMSAuM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0Jpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNNSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41em01LjgtMTAgMi40LTIuNC44LjhjMS4zIDEuMyAzIDIuMSA1LjEgMi4xVjljLTEuNSAwLTIuNy0uNi0zLjYtMS41bC0xLjktMS45Yy0uNS0uNC0xLS42LTEuNi0uNnMtMS4xLjItMS40LjZMNy44IDguNGMtLjQuNC0uNi45LS42IDEuNCAwIC42LjIgMS4xLjYgMS40TDExIDE0djVoMnYtNi4ybC0yLjItMi4zek0xOSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0JvYXRGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyAxMi42Ni0xLjEyIDMuOTdjLS43OC0uNDMtMS4wNy0uODYtMi42NS0yLjY3LTEuNiAxLjgyLTIuNDMgMy4wNC00IDMuMDQtMS41MyAwLTIuMzQtMS4xNS00LTMuMDQtMS42IDEuODItMS44NyAyLjIxLTIuNjUgMi42NWwtMS4xMy0zLjk2TDEyIDEwLjExbDcuNzcgMi41NXpNMTUgMUg5djNINmMtMS4xIDAtMiAuOS0yIDJ2NC42MmwtMS4yOS40MmMtLjYzLjE5LS44MS44NC0uNjYgMS4yOEwzLjk1IDE5SDRjMS42IDAgMy4wMi0uODggNC0yIC45OCAxLjEyIDIuNCAyIDQgMnMzLjAyLS44OCA0LTJjLjk4IDEuMTIgMi40IDIgNCAyaC4wNWwxLjkxLTYuNjhjLjExLS4zNy4wNC0xLjA2LS42Ni0xLjI4bC0xLjMtLjQyVjZjMC0xLjEtLjktMi0yLTJoLTNWMXpNNiA5Ljk3VjZoMTJ2My45N0wxMiA4IDYgOS45N3ptMTAgOS43MWMtMS4yMi44NS0yLjYxIDEuMjgtNCAxLjI4cy0yLjc4LS40My00LTEuMjhDNi43OCAyMC41MyA1LjM5IDIxIDQgMjFIMnYyaDJjMS4zOCAwIDIuNzQtLjM1IDQtLjk5IDEuMjYuNjQgMi42My45NyA0IC45N3MyLjc0LS4zMiA0LS45N2MxLjI2LjY1IDIuNjIuOTkgNCAuOTloMnYtMmgtMmMtMS4zOSAwLTIuNzgtLjQ3LTQtMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNCb2F0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzdjFoLTJWM2gybS0xIDcuMTEgNS4zOCAxLjc3IDIuMzkuNzgtMS4xMiAzLjk3Yy0uNTQtLjMtLjk0LS43MS0xLjE0LS45NEwxNiAxMy45NmwtMS41MSAxLjcyYy0uMzQuNC0xLjI4IDEuMzItMi40OSAxLjMycy0yLjE1LS45Mi0yLjQ5LTEuMzJMOCAxMy45NmwtMS41MSAxLjcyYy0uMi4yMy0uNi42My0xLjE0LjkzbC0xLjEzLTMuOTYgMi40LS43OUwxMiAxMC4xMU0xNSAxSDl2M0g2Yy0xLjEgMC0yIC45LTIgMnY0LjYybC0xLjI5LjQyYTEuMDA3IDEuMDA3IDAgMCAwLS42NiAxLjI4TDMuOTUgMTlINGMxLjYgMCAzLjAyLS44OCA0LTIgLjk4IDEuMTIgMi40IDIgNCAyczMuMDItLjg4IDQtMmMuOTggMS4xMiAyLjQgMiA0IDJoLjA1bDEuODktNi42OGMuMDgtLjI2LjA2LS41NC0uMDYtLjc4cy0uMzQtLjQyLS42LS41TDIwIDEwLjYyVjZjMC0xLjEtLjktMi0yLTJoLTNWMXpNNiA5Ljk3VjZoMTJ2My45N0wxMiA4IDYgOS45N3ptMTAgOS43MWMtMS4yMi44NS0yLjYxIDEuMjgtNCAxLjI4cy0yLjc4LS40My00LTEuMjhDNi43OCAyMC41MyA1LjM5IDIxIDQgMjFIMnYyaDJjMS4zOCAwIDIuNzQtLjM1IDQtLjk5IDEuMjYuNjQgMi42My45NyA0IC45N3MyLjc0LS4zMiA0LS45N2MxLjI2LjY1IDIuNjIuOTkgNCAuOTloMnYtMmgtMmMtMS4zOSAwLTIuNzgtLjQ3LTQtMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNCdXNGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41YzAgLjk1LjM4IDEuODEgMSAyLjQ0VjIwYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDh2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMi4wNmMuNjItLjYzIDEtMS40OSAxLTIuNDRWNmMwLTMuNS0zLjU4LTQtOC00em0wIDJjMy43MSAwIDUuMTMuNDYgNS42NyAxSDYuNDNjLjYtLjUyIDIuMDUtMSA1LjU3LTF6bTYgMTFjMCAxLjEtLjkgMi0yIDJIOGMtMS4xIDAtMi0uOS0yLTJ2LTNoMTJ2M3ptMC01SDZWN2gxMnYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNCdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuNDIgMC04IC41LTggNHYxMGMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIyVjZjMC0zLjUtMy41OC00LTgtNHptNS42NiAyLjk5SDYuMzRDNi44OSA0LjQ2IDguMzEgNCAxMiA0czUuMTEuNDYgNS42Ni45OXptLjM0IDJWMTBINlY2Ljk5aDEyem0tLjM0IDkuNzQtLjI5LjI3SDYuNjNsLS4yOS0uMjdBLjk2OC45NjggMCAwIDEgNiAxNnYtNGgxMnY0YzAgLjM3LS4yMS42Mi0uMzQuNzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0NhckZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgN2gxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTE5IDE3SDV2LTVoMTR2NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA2LjAxQzE4LjcyIDUuNDIgMTguMTYgNSAxNy41IDVoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDEydjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDdoMTAuMjlsMS4wOCAzLjExSDUuNzdMNi44NSA3ek0xOSAxN0g1di01aDE0djV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1JhaWx3YXlGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMHYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6bTAgMmMzLjcxIDAgNS4xMy40NiA1LjY3IDFINi40M2MuNi0uNTIgMi4wNS0xIDUuNTctMXptNiAxMS41YzAgLjgzLS42NyAxLjUtMS41IDEuNWgtOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjEyaDEydjMuNXptMC01LjVINlY3aDEydjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNSYWlsd2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxYy00LjQyIDAtOCAuNS04IDR2MTAuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY1YzAtMy41LTMuNTgtNC04LTR6bTAgMmM2IDAgNiAxLjIgNiAySDZjMC0uOCAwLTIgNi0yem02IDR2M0g2VjdoMTJ6bS0xLjUgMTBoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41ek0xMiAxMi41Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNSdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjQ5IDUuNDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tMy42IDEzLjkgMS00LjQgMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNjMS4zIDEuNSAzLjMgMi41IDUuNSAyLjV2LTJjLTEuOSAwLTMuNS0xLTQuMy0yLjRsLTEtMS42Yy0uNC0uNi0xLTEtMS43LTEtLjMgMC0uNS4xLS44LjFsLTUuMiAyLjJ2NC43aDJ2LTMuNGwxLjgtLjctMS42IDguMS00LjktMS0uNCAyIDcgMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1N1YndheUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQgMC04IC41LTggNHY5LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwdjFoMTJ2LTFsLTEuNS0xYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjZjMC0zLjUtMy41OC00LTgtNHptMCAyYzMuNzEgMCA1LjEzLjQ2IDUuNjcgMUg2LjQzYy42LS41MiAyLjA1LTEgNS41Ny0xek02IDdoNXYzSDZWN3ptMTIgOC41YzAgLjgzLS42NyAxLjUtMS41IDEuNWgtOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjEyaDEydjMuNXptMC01LjVoLTVWN2g1djN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1N1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6bTUuNjYgM0g2LjQzYy42MS0uNTIgMi4wNi0xIDUuNTctMSAzLjcxIDAgNS4xMi40NiA1LjY2IDF6TTExIDd2M0g2VjdoNXptMiAwaDV2M2gtNVY3em0zLjUgMTBoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNUcmFuc2l0RmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjB2MWgxMnYtMWwtMS41LTFjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00em0wIDJjMy43MSAwIDUuMTMuNDYgNS42NyAxSDYuNDNjLjYtLjUyIDIuMDUtMSA1LjU3LTF6TTYgN2g1djNINlY3em0xMiA4LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41aC05Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVWMTJoMTJ2My41em0wLTUuNWgtNVY3aDV2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zVHJhbnNpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6bTUuNjYgM0g2LjQzYy42MS0uNTIgMi4wNi0xIDUuNTctMSAzLjcxIDAgNS4xMi40NiA1LjY2IDF6TTExIDd2M0g2VjdoNXptMiAwaDV2M2gtNVY3em0zLjUgMTBoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNXYWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTkuOCA4LjkgNyAyM2gyLjFsMS44LTggMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNDMTQuOCAxMiAxNi44IDEzIDE5IDEzdi0yYy0xLjkgMC0zLjUtMS00LjMtMi40bC0xLTEuNmEyLjE0NSAyLjE0NSAwIDAgMC0yLjY1LS44NEw2IDguM1YxM2gyVjkuNmwxLjgtLjdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjQzIDEwLjU5LTkuMDEtOS4wMWMtLjc1LS43NS0yLjA3LS43Ni0yLjgzIDBsLTkgOWMtLjc4Ljc4LS43OCAyLjA0IDAgMi44Mmw5IDljLjM5LjM5LjkuNTggMS40MS41OC41MSAwIDEuMDItLjE5IDEuNDEtLjU4bDguOTktOC45OWMuNzktLjc2LjgtMi4wMi4wMy0yLjgyem0tMTAuNDIgMTAuNC05LTkgOS05IDkgOS05IDl6TTggMTF2NGgydi0zaDR2Mi41bDMuNS0zLjVMMTQgNy41VjEwSDljLS41NSAwLTEgLjQ1LTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyeUNsZWFuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNTYgMTEuMzYgMTMgOC40NFY3YzAtLjU1LS40NS0xLTEtMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDFoMmMwLTEuODQtMS42Ni0zLjMtMy41Ni0yLjk1LTEuMTguMjItMi4xNSAxLjE3LTIuMzggMi4zNS0uMyAxLjU2LjYgMi45NCAxLjk0IDMuNDJ2LjYzbC02LjU2IDIuOTJjLS44OC4zOC0xLjQ0IDEuMjUtMS40NCAyLjJ2LjAxQzMgMTQuOTIgNC4wOCAxNiA1LjQyIDE2SDd2NmgxMHYtNmgxLjU4YzEuMzQgMCAyLjQyLTEuMDggMi40Mi0yLjQydi0uMDFjMC0uOTUtLjU2LTEuODItMS40NC0yLjIxek0xNSAyMEg5di01aDZ2NXptMy41OC02SDE3di0xSDd2MUg1LjQyYy0uNDYgMC0uNTgtLjY1LS4xNy0uODFsNi43NS0zIDYuNzUgM2MuNDIuMTkuMjguODEtLjE3LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdEF0dHJpYnV0ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDdINi4zN0MzLjk2IDcgMiA5LjI0IDIgMTJzMS45NiA1IDQuMzcgNWgxMS4yNmMyLjQxIDAgNC4zNy0yLjI0IDQuMzctNXMtMS45Ni01LTQuMzctNXptMCA4SDYuMzdDNS4wOSAxNSA0IDEzLjYzIDQgMTJzMS4wOS0zIDIuMzctM2gxMS4yNkMxOC45MSA5IDIwIDEwLjM3IDIwIDEycy0xLjA5IDMtMi4zNyAzek03LjI0IDEzLjA2bC0xLjg3LTEuODctLjcuNyAyLjU3IDIuNTcgNC4yMi00LjIyLS43LS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdExvY2F0aW9uQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTFoMi4xMmw2LjE2LTYuMTYtMi4xMi0yLjEyTDExIDguODhWMTF6bTkuNzEtOUwyMCAxLjI5YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtLjcyLjcyIDIuMTIgMi4xMi43Mi0uNzJhLjk5Ni45OTYgMCAwIDAgMC0xLjQxek0xNy45IDkuMDVjLjA2LjM2LjEuNzQuMSAxLjE1IDAgMS43MS0xLjA4IDQuNjQtNiA5LjE0LTQuOTItNC40OS02LTcuNDMtNi05LjE0QzYgNi4xNyA5LjA5IDQgMTIgNGMuMzIgMCAuNjUuMDMuOTcuMDhsMS42NS0xLjY1QTguNTYgOC41NiAwIDAgMCAxMiAyYy00LjIgMC04IDMuMjItOCA4LjIgMCAzLjMyIDIuNjcgNy4yNSA4IDExLjggNS4zMy00LjU1IDgtOC40OCA4LTExLjggMC0xLjAxLS4xNi0xLjk0LS40NS0yLjhMMTcuOSA5LjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdExvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMTcgNC45MSAxNy4xIDMuODRsLTUuNTUgNS41NXYxLjA4aDEuMDhsNS41NC01LjU2ek0xNiAyLjc0bDEuMjktMS4yOWExLjQ5IDEuNDkgMCAwIDEgMi4xMiAwbDEuMTUgMS4xNWMuNTkuNTkuNTkgMS41NCAwIDIuMTJsLS42OC42OC0uMDIuMDItLjU4LjU4LTYgNkgxMFY4Ljc0bDYtNnptLTIuMjgtLjU1LS41NS41NS0xLjI3IDEuMjdjLTMuMy4wNS01LjkgMi42LTUuOSA2LjIgMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQgNC4wNS0zLjcgNi02Ljc5IDYtOS4xNHYtLjFsMS44LTEuOGMuMTMuNi4yIDEuMjQuMiAxLjkgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjggMC00Ljk4IDMuOC04LjIgOC04LjIuNTggMCAxLjE2LjA2IDEuNzIuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0Um9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoLTJ2Ny45bDItMnpNNCA0aDJ2MTZINHpNMTAgNGgydjRoLTJ6TTEwIDEwaDJ2NGgtMnpNMTAgMTZoMnY0aC0yek0yMi41NiAxMi41OWwtMS4xNS0xLjE1YTEuNDkgMS40OSAwIDAgMC0yLjEyIDBMMTQgMTYuNzNWMjBoMy4yN2w1LjI5LTUuMjljLjU5LS41OS41OS0xLjU0IDAtMi4xMnptLTUuOTggNS44NmgtMS4wM3YtMS4wM0wxOSAxMy45NyAyMC4wMyAxNWwtMy40NSAzLjQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWdnQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWMtMi0yLTMuMDEtNy05LjAzLTdDNC45NSAyIDEuOTQgNiAyIDExLjUyIDIuMDYgMTcuMDQgNi45NiAxOSA5Ljk3IDE5YzIuMDEgMCAyLjAxIDMgNi4wMiAzQzE5IDIyIDIyIDE5IDIyIDE1LjAyIDIyIDEyIDIxLjAxIDExIDE5IDl6bS0zLjAxIDExYy0xLjQ5IDAtMS45Ni0uNS0yLjY4LTEuMjYtLjY1LS42OS0xLjY1LTEuNzQtMy4zNC0xLjc0LTEuNjQgMC01LjkyLS45OS01Ljk3LTUuNS0uMDMtMi41MS42OC00LjYyIDEuOTktNS45NUM3LjAxIDQuNTIgOC4zNSA0IDkuOTcgNGMzLjM0IDAgNC41MSAxLjg2IDUuODYgNC4wMi41NS44OCAxLjA3IDEuNzEgMS43NiAyLjM5IDEuOSAxLjg5IDIuNDEgMi40IDIuNDEgNC42MSAwIDIuODUtMi4xMiA0Ljk4LTQuMDEgNC45OHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVnZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNDOC41IDMgNSA5LjMzIDUgMTRjMCAzLjg3IDMuMTMgNyA3IDdzNy0zLjEzIDctN2MwLTQuNjctMy41LTExLTctMTF6bTAgMTZjLTIuNzYgMC01LTIuMjQtNS01IDAtNC4wOSAzLjA3LTkgNS05czUgNC45MSA1IDljMCAyLjc2LTIuMjQgNS01IDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDE2Yy0uNTggMC0zLS4wOC0zLTMgMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDFjMCAzIDEuOTkgNSA1IDUgLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbGVjdHJpY0Jpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3aC0uODJsLTEuNy00LjY4QTIuMDA4IDIuMDA4IDAgMCAwIDE0LjYgMUgxMnYyaDIuNmwxLjQ2IDRoLTQuODFsLS4zNi0xSDEyVjRIN3YyaDEuNzVsMS44MiA1SDkuOWMtLjQ0LTIuMjMtMi4zMS0zLjg4LTQuNjUtMy45OUMyLjQ1IDYuODcgMCA5LjIgMCAxMmMwIDIuOCAyLjIgNSA1IDUgMi40NiAwIDQuNDUtMS42OSA0LjktNGg0LjJjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNUMyNCA5LjIgMjEuOCA3IDE5IDd6TTcuODIgMTNjLS40IDEuMTctMS40OSAyLTIuODIgMi0xLjY4IDAtMy0xLjMyLTMtM3MxLjMyLTMgMy0zYzEuMzMgMCAyLjQyLjgzIDIuODIgMkg1djJoMi44MnptNi4yOC0yaC0xLjRsLS43My0ySDE1Yy0uNDQuNTgtLjc2IDEuMjUtLjkgMnptNC45IDRjLTEuNjggMC0zLTEuMzItMy0zIDAtLjkzLjQxLTEuNzMgMS4wNS0yLjI4bC45NiAyLjY0IDEuODgtLjY4LS45Ny0yLjY3Yy4wMiAwIC4wNS0uMDEuMDgtLjAxIDEuNjggMCAzIDEuMzIgMyAzcy0xLjMyIDMtMyAzek0xMSAyMEg3bDYgM3YtMmg0bC02LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbGVjdHJpY0NhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDIuMDFDMTguNzIgMS40MiAxOC4xNiAxIDE3LjUgMWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgOHY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTFWOGwtMi4wOC01Ljk5ek02Ljg1IDNoMTAuMjlsMS4wOCAzLjExSDUuNzdMNi44NSAzek0xOSAxM0g1VjhoMTR2NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxMC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjBoNHYtMmw2IDNoLTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZWN0cmljTW9wZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1YzAtMS4xLS45LTItMi0yaC0zdjJoM3YyLjY1TDEzLjUyIDEySDEwVjdINmMtMi4yMSAwLTQgMS43OS00IDR2M2gyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNC40OEwxOSA4LjM1VjV6TTQgMTJ2LTFjMC0xLjEuOS0yIDItMmgydjNINHptMyAzYy0uNTUgMC0xLS40NS0xLTFoMmMwIC41NS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNGg1djJINXpNMTkgMTFjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNNyAyMGg0di0ybDYgM2gtNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNSaWNrc2hhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExLjE4VjkuNzJjMC0uNDctLjE2LS45Mi0uNDYtMS4yOEwxNi42IDMuNzJjLS4zOC0uNDYtLjk0LS43Mi0xLjU0LS43MkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoLjE4QzMuNiAxNi4xNiA0LjcgMTcgNiAxN3MyLjQtLjg0IDIuODItMmg4LjM3YTIuOTk2IDIuOTk2IDAgMCAwIDUuODItMWMtLjAxLTEuMy0uODUtMi40LTIuMDEtMi44MnpNNiAxNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0xLTMuODNBMy4wMTQgMy4wMTQgMCAwIDAgMy4xNyAxM0gzdi0zaDR2MS4xN3pNNyA4SDNWNWg0djN6bTcgNUg5di0zaDNWOEg5VjVoNXY4em0yLTYuODhMMTguNCA5SDE2VjYuMTJ6TTE3LjE3IDEzSDE2di0yaDN2LjE3Yy0uODUuMy0xLjUzLjk4LTEuODMgMS44M3pNMjAgMTVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNNyAyMGg0di0ybDYgM2gtNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNTY29vdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44MiAxNkgxNXYtMWMwLTIuMjEgMS43OS00IDQtNGguNzRsLTEuOS04LjQ0QTIuMDA5IDIuMDA5IDAgMCAwIDE1Ljg5IDFIMTJ2MmgzLjg5bDEuNCA2LjI1aC0uMDFBNi4wMDggNi4wMDggMCAwIDAgMTMuMDkgMTRINy44MmEyLjk5NiAyLjk5NiAwIDAgMC0zLjQyLTEuOTRjLTEuMTguMjMtMi4xMyAxLjItMi4zNSAyLjM4QTMuMDAyIDMuMDAyIDAgMCAwIDUgMThjMS4zIDAgMi40LS44NCAyLjgyLTJ6TTUgMTZjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNMTEgMjBIN2w2IDN2LTJoNGwtNi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNhbFNlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRjMC0uNTUtLjQ1LTEtMS0xaC0ydjJoMmMuNTUgMCAxLS40NSAxLTF6TTIwIDE3aC0ydjJoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMXpNMTIgMTRoLTJ2NGgyYzAgMS4xLjkgMiAyIDJoM3YtOGgtM2MtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTNjMC0xLjEuOS0yIDItMmgxLjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuNDMgNCA4LjUgNEg1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDMuNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjMzIDkgOC41IDlIN2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNGgydi0ySDdjLTEuMSAwLTItLjktMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1lcmdlbmN5UmVjb3JkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTAuNDhWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi00LjQ4bDQgMy45OHYtMTFsLTQgMy45OHpNMTYgMThINFY2aDEydjEyem0tNC02IDMgMS43My0xIDEuNzMtMy0xLjczVjE3SDl2LTMuMjdsLTMgMS43My0xLTEuNzNMOCAxMmwtMy0xLjczIDEtMS43MyAzIDEuNzNWN2gydjMuMjdsMy0xLjczIDEgMS43M0wxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtZXJnZW5jeVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGMxLjkzIDAgMy42OC43OCA0Ljk1IDIuMDVsLTEuNDEgMS40MWE1LjAyMiA1LjAyMiAwIDAgMC03LjA4IDBMNy4wNSA2LjA1QTYuOTc2IDYuOTc2IDAgMCAxIDEyIDR6bTcuNzgtLjc3LTEuNDEgMS40MUMxNi43NCAzLjAxIDE0LjQ5IDIgMTIuMDEgMlM3LjI3IDMuMDEgNS42NCA0LjYzTDQuMjIgMy4yMkM2LjIyIDEuMjMgOC45NyAwIDEyLjAxIDBzNS43OCAxLjIzIDcuNzcgMy4yM3pNMTIgMTFjMS45NCAwIDQgMS40NSA0IDQuMTUgMCAuOTQtLjU1IDIuOTMtNCA2LjE3LTMuNDUtMy4yNC00LTUuMjMtNC02LjE3IDAtMi43IDIuMDYtNC4xNSA0LTQuMTV6bTAtMmMtMy4xNSAwLTYgMi40MS02IDYuMTUgMCAyLjQ5IDIgNS40NCA2IDguODUgNC0zLjQxIDYtNi4zNiA2LTguODVDMTggMTEuNDEgMTUuMTUgOSAxMiA5em0xLjUgNmMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtZXJnZW5jeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjI5IDEzLjkgMTggMTJsMy4yOS0xLjljLjQ4LS4yOC42NC0uODkuMzctMS4zN2wtMi0zLjQ2YTEuMDEgMS4wMSAwIDAgMC0xLjM3LS4zN0wxNSA2LjhWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzLjhMNS43MSA0LjlhMS4wMSAxLjAxIDAgMCAwLTEuMzcuMzdsLTIgMy40NmMtLjI4LjQ4LS4xMSAxLjA5LjM3IDEuMzdMNiAxMmwtMy4yOSAxLjljLS40OC4yOC0uNjQuODktLjM3IDEuMzdsMiAzLjQ2Yy4yOC40OC44OS42NCAxLjM3LjM3TDkgMTcuMlYyMWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMy44bDMuMjkgMS45Yy40OC4yOCAxLjA5LjExIDEuMzctLjM3bDItMy40NmMuMjgtLjQ4LjExLTEuMDktLjM3LTEuMzd6bS0yLjg2IDIuOTctNC42OC0yLjdjLS4zMy0uMi0uNzUuMDQtLjc1LjQzVjIwaC0ydi01LjRjMC0uMzgtLjQyLS42My0uNzUtLjQzbC00LjY4IDIuNy0xLTEuNzMgNC42OC0yLjdjLjMzLS4xOS4zMy0uNjcgMC0uODdsLTQuNjgtMi43IDEtMS43MyA0LjY4IDIuN2MuMzMuMTkuNzUtLjA1Ljc1LS40NFY0aDJ2NS40YzAgLjM4LjQyLjYzLjc1LjQzbDQuNjgtMi43IDEgMS43My00LjY4IDIuN2MtLjMzLjE5LS4zMy42NyAwIC44N2w0LjY4IDIuNy0xIDEuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdlN0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDcuMjMuMDEtLjAxLTMuNzItMy43MkwxNSA0LjU2bDIuMTEgMi4xMWMtLjk0LjM2LTEuNjEgMS4yNi0xLjYxIDIuMzNhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy4zNiAwIC42OS0uMDggMS0uMjF2Ny4yMWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVYxNGMwLTEuMS0uOS0yLTItMmgtMVY1YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAydjE2aDEwdi03LjVoMS41djVhMi41IDIuNSAwIDAgMCA1IDBWOWMwLS42OS0uMjgtMS4zMi0uNzMtMS43N3pNMTIgMTF2OEg2VjVoNnY2em02LTFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLTgtNC00IDcuNWgyVjE4bDQtN2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAyMkgyVjEwbDctM3YybDUtMnYzaDNsMS04aDNsMSA4djEyek0xMiA5Ljk1bC01IDJWMTBsLTMgMS4zMlYyMGgxNnYtOGgtOFY5Ljk1ek0xMSAxOGgydi00aC0ydjR6bS00IDBoMnYtNEg3djR6bTEwLTRoLTJ2NGgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFzdGZvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjEuOThjMCAuNTYuNDUgMS4wMSAxLjAxIDEuMDFIMTVjLjU2IDAgMS4wMS0uNDUgMS4wMS0xLjAxVjIxSDF2Ljk4ek04LjUgOC45OUM0Ljc1IDguOTkgMSAxMSAxIDE1aDE1YzAtNC0zLjc1LTYuMDEtNy41LTYuMDF6TTMuNjIgMTNjMS4xMS0xLjU1IDMuNDctMi4wMSA0Ljg4LTIuMDFzMy43Ny40NiA0Ljg4IDIuMDFIMy42MnpNMSAxN2gxNXYySDF6TTE4IDVWMWgtMnY0aC01bC4yMyAyaDkuNTZsLTEuNCAxNEgxOHYyaDEuNzJjLjg0IDAgMS41My0uNjUgMS42My0xLjQ3TDIzIDVoLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGZXN0aXZhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDExVjljLTYtMi0xMS03LTExLTdTNyA3IDEgOXYyYzAgMS40OS45MyAyLjc1IDIuMjQgMy4yNkMzLjIgMTYuNzYgMi45MiAxOS42OSAyIDIyaDIwYy0uOTItMi4zMS0xLjItNS4yNC0xLjI0LTcuNzRBMy40OTYgMy40OTYgMCAwIDAgMjMgMTF6TTEyIDQuNzFjMS4zMyAxLjE0IDMuNDkgMi44NCA2LjExIDQuMjlINS44OUM4LjUxIDcuNTUgMTAuNjcgNS44NSAxMiA0Ljcxek0xMyAxMWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNVMxMyAxMS44MyAxMyAxMXptLTMuNSAxLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNXpNNiAxMWMwIC44My0uNjcgMS41LTEuNSAxLjVTMyAxMS44MyAzIDExaDN6bS0xLjM0IDljLjM5LTEuODYuNTQtMy44Mi41Ny01LjU4LjY4LS4xNSAxLjI5LS40OSAxLjc2LS45OC4yNS4yNS41NC40NS44NS42Mi0uMSAxLjg3LS4yNiA0LS41MiA1LjkzSDQuNjZ6bTQuNjkgMGMuMjQtMS44My4zOS0zLjc4LjQ4LTUuNTMuODQtLjA4IDEuNjEtLjQ1IDIuMTctMS4wMi41Ni41NyAxLjMyLjk0IDIuMTcgMS4wMi4xIDEuNzUuMjQgMy43LjQ4IDUuNTNoLTUuM3ptNy4zMiAwYy0uMjctMS45NC0uNDMtNC4wNy0uNTItNS45My4zMS0uMTcuNjEtLjM3Ljg1LS42Mi40Ny40OCAxLjA4LjgzIDEuNzYuOTguMDMgMS43Ni4xOCAzLjcyLjU3IDUuNThoLTIuNjZ6bTIuODMtNy41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVoM2MwIC44My0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXJlSHlkcmFudEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwLjVjLTEuOTMgMC0zLjUgMS41Ny0zLjUgMy41czEuNTcgMy41IDMuNSAzLjUgMy41LTEuNTcgMy41LTMuNS0xLjU3LTMuNS0zLjUtMy41em0wIDVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMWgtMVY4aDJWNmgtMi4zNWE1Ljk5IDUuOTkgMCAwIDAtMTEuMyAwSDR2MmgydjNINWMtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDF2M0g0djJoMTZ2LTJoLTJ2LTNoMWMxLjEgMCAyLS45IDItMnYtMmMwLTEuMS0uOS0yLTItMnptLTctN2MxLjQ3IDAgMi43NS44MSAzLjQ0IDJIOC41NmMuNjktMS4xOSAxLjk3LTIgMy40NC0yem03IDExaC0zdjVIOHYtNUg1di0yaDNWOGg4djVoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlyZVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuOSAxMC42OS0xLjQ0LTQuMzJBMi4wMSAyLjAxIDAgMCAwIDE5LjU2IDVIMTlWNGMwLS41NS0uNDUtMS0xLTFoLTFjLS41NSAwLTEgLjQ1LTEgMXYxaC0yYy0xLjEgMC0yIC45LTIgMnY0SDF2NWMwIDEuMS45IDIgMiAyaDFjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g0YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoM3YtNi42OGMwLS4yMS0uMDMtLjQyLS4xLS42M3pNMTQgN2g1LjU2bDEuMzMgNEgxNFY3ek03IDE5Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTUtM0g5LjIyYy0uNTUtLjYxLTEuMzMtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDN2LTNoOXYzem01IDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi4yMi0zYy0uNTUtLjYxLTEuMzQtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDE0di0zaDd2M2gtMS43OHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOC41aC0xdi0yaDFWNUgxdjEuNWgxdjJIMVYxMGgxMFY4LjV6bS0yLjUgMEg2Ljc1di0ySDguNXYyem0tNS0yaDEuNzV2MkgzLjV2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlnaHRDbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRoLTJjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgN2gtMlY2aDJ2NXptLTYuNSA1SDE4djJIOS40OWMtLjg4IDAtMS42Ni0uNTgtMS45Mi0xLjQzTDUgOFY0aDJ2NGwyLjUgOHpNOCAxOWgxMHYySDh2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE2di0ybC04LTVWMy41YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCAyLjY3IDEwIDMuNVY5bC04IDV2Mmw4LTIuNVYxOWwtMiAxLjVWMjJsMy41LTEgMy41IDF2LTEuNUwxMyAxOXYtNS41bDggMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9yZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjQgMTgtMy44Ni02SDIyTDE1IDJsLTMgNC4yOUw5IDIgMiAxMmgxLjg2TDAgMThoN3Y0aDR2LTRoMnY0aDR2LTRoN3pNMTUgNS40OSAxOC4xNiAxMGgtMS42OGwzLjg2IDZoLTMuNjJsLTIuNTctNEgxNmwtMi43OC0zLjk3TDE1IDUuNDl6TTMuNjYgMTZsMy44Ni02SDUuODRMOSA1LjQ5IDEyLjE2IDEwaC0xLjY4bDMuODYgNkgzLjY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ya0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQxIDE1LjU5IDggMTdsLTQtNCA0LTQgMS40MSAxLjQxTDcuODMgMTJjMS41MS0uMzMgMy43My4wOCA1LjE3IDEuMzZWNi44M2wtMS41OSAxLjU5TDEwIDdsNC00IDQgNC0xLjQxIDEuNDFMMTUgNi44M1YyMWgtMnYtNGMtLjczLTIuNTgtMy4wNy0zLjQ3LTUuMTctM2wxLjU4IDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JrUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41OSAxNS41OSAxNiAxN2w0LTQtNC00LTEuNDEgMS40MUwxNi4xNyAxMmMtMS41MS0uMzMtMy43My4wOC01LjE3IDEuMzZWNi44M2wxLjU5IDEuNTlMMTQgN2wtNC00LTQgNCAxLjQxIDEuNDFMOSA2LjgzVjIxaDJ2LTRjLjczLTIuNTggMy4wNy0zLjQ3IDUuMTctM2wtMS41OCAxLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDN2MmgtMlYzaC0ydjJoLTJWM2gtMnY0bDIgMnYxSDlWOWwyLTJWM0g5djJIN1YzSDV2MkgzVjNIMXY0bDIgMnY2bC0yIDJ2NGg5di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g5di00bC0yLTJWOWwyLTJWM2gtMnptMCAxNmgtNXYtMWMwLTIuMjEtMS43OS00LTQtNHMtNCAxLjc5LTQgNHYxSDN2LTEuMTdsMi0yVjguMTdMMy44MyA3aDQuMzRMNyA4LjE3VjEyaDEwVjguMTdMMTUuODMgN2g0LjM0TDE5IDguMTd2Ny42NmwyIDJWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTUtNGgyYzAgMi43LS45MyA0LjQxLTIuMyA1LjUtLjUuNC0xLjEuNy0xLjcuOVYyMmgtMnYtNmgtMnY2SDlWMTAuMWMtLjMuMS0uNS4yLS42LjMtLjUzLjQxLTEuNCAxLjAzLTEuNCAzLjZINWMwLTIuMDYuMzUtMy43OCAyLjExLTUuMjlDOC4yMSA3LjgxIDEwIDcgMTIgN3MyLjY4LS40NiAzLjQ4LTEuMDZDMTUuOTYgNS41NSAxNyA0Ljc2IDE3IDJ6TTQgMTZoM3Y2SDR2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIYW5keW1hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjY3IDE4LjE3LTUuMy01LjNoLS45OWwtMi41NCAyLjU0di45OWw1LjMgNS4zYy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwyLjEyLTIuMTJhLjk5Ni45OTYgMCAwIDAgMC0xLjQxem0tMi44MyAxLjQyLTQuMjQtNC4yNC43MS0uNzEgNC4yNCA0LjI0LS43MS43MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTAuMTkgMS40MS0xLjQxIDIuMTIgMi4xMmEzIDMgMCAwIDAgMC00LjI0bC0zLjU0LTMuNTQtMS40MSAxLjQxVjEuNzFsLS43LS43MS0zLjU0IDMuNTQuNzEuNzFoMi44M2wtMS40MSAxLjQxIDEuMDYgMS4wNi0yLjg5IDIuODktNC4xMy00LjEzVjUuMDZMNC44MyAyLjA0IDIgNC44NyA1LjAzIDcuOWgxLjQxbDQuMTMgNC4xMy0uODUuODVINy42bC01LjMgNS4zYS45OTYuOTk2IDAgMCAwIDAgMS40MWwyLjEyIDIuMTJjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDUuMy01LjN2LTIuMTJsNS4xNS01LjE1IDEuMDYgMS4wNXptLTcuOTggNS4xNS00LjI0IDQuMjQtLjcxLS43MSA0LjI0LTQuMjQuNzEuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIYXJkd2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDMtMyAzVjNIOUM2LjI0IDMgNCA1LjI0IDQgOGg1djEyYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xVjhsMyAzaDJWM2gtMnptLTUgMTZoLTJ2LTZoMnY2em0tMi04VjZINi43N0M3LjMyIDUuMzkgOC4xMSA1IDkgNWg0djZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb21lUmVwYWlyU2VydmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhoLTNWNmMwLTEuMS0uOS0yLTItMkg5Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjEwaDIwVjEwYzAtMS4xLS45LTItMi0yek05IDZoNnYySDlWNnptMTEgMTJINHYtM2gydjFoMnYtMWg4djFoMnYtMWgydjN6bS0yLTV2LTFoLTJ2MUg4di0xSDZ2MUg0di0zaDE2djNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNGMxLjY2IDAgMy0xLjM0IDMtM1M4LjY2IDggNyA4cy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMi0zaC04djhIM1Y1SDF2MTVoMnYtM2gxOHYzaDJ2LTljMC0yLjIxLTEuNzktNC00LTR6bTIgOGgtOFY5aDZjMS4xIDAgMiAuOSAyIDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUh2YWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE4YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnptMy40NC04Yy4yNi40NS40NC45Ni41MSAxLjVoLTcuOWMuMDctLjU0LjI0LTEuMDUuNTEtMS41aDYuODh6bS41MSAyLjVjLS4wNy41NC0uMjQgMS4wNS0uNTEgMS41SDguNTZjLS4yNi0uNDUtLjQ0LS45Ni0uNTEtMS41aDcuOXpNOS4zOCAxNWg1LjI0Yy0uNy42MS0xLjYxIDEtMi42MiAxcy0xLjkxLS4zOS0yLjYyLTF6bTUuMjQtNkg5LjM4Yy43LS42MSAxLjYxLTEgMi42Mi0xczEuOTEuMzkgMi42MiAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSWNlY3JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOCA2LjI0QzE3Ljc5IDMuMjQgMTUuMTQgMSAxMiAxUzYuMjEgMy4yNCA1LjYyIDYuMjRBNC4wMTQgNC4wMTQgMCAwIDAgMyAxMGMwIDIuMjEgMS43OSA0IDQgNCAuMTIgMCAuMjMtLjAyLjM0LS4wMkwxMi4wNyAyM2w0LjYxLTkuMDNjLjExLjAxLjIxLjAzLjMyLjAzIDIuMjEgMCA0LTEuNzkgNC00IDAtMS43MS0xLjA4LTMuMTktMi42Mi0zLjc2em0tNi4zMyAxMi4zOS0yLjczLTUuMjFhNi40NjggNi40NjggMCAwIDAgNS40LS4wMmwtMi42NyA1LjIzek0xNyAxMmMtLjUyIDAtMS4wMS0uMi0xLjM5LS41NmwtLjU2LS41NC0uNjYuNDJhNC41MiA0LjUyIDAgMCAxLTQuNzgtLjAxbC0uNjYtLjQxLS41Ni41NGMtLjM4LjM1LS44Ny41Ni0xLjM5LjU2YTEuOTk5IDEuOTk5IDAgMCAxLS4zMi0zLjk3bC43Ny0uMTMuMDYtLjc4QzcuNzEgNC44IDkuNjYgMyAxMiAzczQuMjkgMS44IDQuNDggNC4xMmwuMDYuNzguNzcuMTJjLjk3LjE2IDEuNjkuOTkgMS42OSAxLjk4IDAgMS4xLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2ViYWJEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy43NSA3aC43NWEyLjUgMi41IDAgMCAwIDAtNWgtLjc1VjFoLTEuNXYxaC0uNzVhMi41IDIuNSAwIDAgMCAwIDVoLjc1djFIMTN2NWgzLjI1djFoLS43NWEyLjUgMi41IDAgMCAwIDAgNWguNzV2NGgxLjV2LTRoLjc1YTIuNSAyLjUgMCAwIDAgMC01aC0uNzV2LTFIMjFWOGgtMy4yNVY3ek0xNS41IDVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgzYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNWgtM3ptMyAxMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTNjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgzem0uNS02djFoLTR2LTFoNHpNNy43NSA3aC43NWEyLjUgMi41IDAgMCAwIDAtNWgtLjc1VjFoLTEuNXYxSDUuNWEyLjUgMi41IDAgMCAwIDAgNWguNzV2MUgzdjVoMy4yNXYxSDUuNWEyLjUgMi41IDAgMCAwIDAgNWguNzV2NGgxLjV2LTRoLjc1YTIuNSAyLjUgMCAwIDAgMC01aC0uNzV2LTFIMTFWOEg3Ljc1Vjd6TTUuNSA1Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoM2MuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTN6bTMgMTFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41aC0zYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoM3ptLjUtNnYxSDV2LTFoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxheWVyc0NsZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0LjUzIDE3Ljc0IDlsLTEuODkgMS40NyAxLjQzIDEuNDJMMjEgOWwtOS03LTIuNTkgMi4wMiAxLjQyIDEuNDJ6bTkgOS41NC0xLjYzLTEuMjctLjY3LjUyIDEuNDMgMS40M3pNMy40MS44NiAyIDIuMjdsNC4yMiA0LjIyTDMgOWw5IDcgMi4xLTEuNjMgMS40MiAxLjQyLTMuNTMgMi43NS03LjM3LTUuNzNMMyAxNC4wN2w5IDcgNC45NS0zLjg1TDIwLjczIDIxbDEuNDEtMS40MUwzLjQxLjg2ek0xMiAxMy40NyA2LjI2IDlsMS4zOS0xLjA4IDUuMDIgNS4wMi0uNjcuNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYXllcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExLjk5IDE4LjU0LTcuMzctNS43M0wzIDE0LjA3bDkgNyA5LTctMS42My0xLjI3ek0xMiAxNmw3LjM2LTUuNzNMMjEgOWwtOS03LTkgNyAxLjYzIDEuMjdMMTIgMTZ6bTAtMTEuNDdMMTcuNzQgOSAxMiAxMy40NyA2LjI2IDkgMTIgNC41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpcXVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyMEgzdjJoNnYtMkg3di0zLjE4QzguMTYgMTYuNCA5IDE1LjMgOSAxNFY2SDN2OHptMi02aDJ2M0g1Vjh6bTAgNWgydjFjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTF6TTIwLjY0IDguNTRsLS45Ni0uMzJhMSAxIDAgMCAxLS42OC0uOTVWM2MwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY0LjI4YTEgMSAwIDAgMS0uNjguOTVsLS45Ni4zMmMtLjgxLjI4LTEuMzYgMS4wNC0xLjM2IDEuOVYyMGMwIDEuMS45IDIgMiAyaDdjMS4xIDAgMi0uOSAyLTJ2LTkuNTZjMC0uODYtLjU1LTEuNjItMS4zNi0xLjl6TTE2IDRoMXYxaC0xVjR6bTQgMTZoLTd2LTJoN3Yyem0wLTRoLTd2LTJoN3Yyem0wLTRoLTd2LTEuNTZsLjk1LS4zMkMxNS4xOCA5LjcyIDE2IDguNTcgMTYgNy4yOFY3aDF2LjI4YTMgMyAwIDAgMCAyLjA1IDIuODVsLjk1LjMxVjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxBY3Rpdml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJ6bS0yLTEuNDZjLTEuMTkuNjktMiAxLjk5LTIgMy40NnMuODEgMi43NyAyIDMuNDZWMThINHYtMi41NGMxLjE5LS42OSAyLTEuOTkgMi0zLjQ2IDAtMS40OC0uOC0yLjc3LTEuOTktMy40Nkw0IDZoMTZ2Mi41NHpNOS4wNyAxNiAxMiAxNC4xMiAxNC45MyAxNmwtLjg5LTMuMzYgMi42OS0yLjItMy40Ny0uMjFMMTIgN2wtMS4yNyAzLjIyLTMuNDcuMjEgMi42OSAyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEFpcnBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0ybC04LjUtNVYzLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNVY5TDIgMTR2Mmw4LjUtMi41VjE5TDggMjAuNVYyMmw0LTEgNCAxdi0xLjVMMTMuNSAxOXYtNS41TDIyIDE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxBdG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDJ2LTFoMWMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xaC0zdi0xaDRWOGgtMlY3aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDN2MUg5djJoMnYxem05LTEzSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNzcgOSAxMiAxMi4xMSA5LjIzIDloNS41NE0yMSAzSDN2Mmw4IDl2NUg2djJoMTJ2LTJoLTV2LTVsOC05VjN6TTcuNDMgNyA1LjY2IDVoMTIuNjlsLTEuNzggMkg3LjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxDYWZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA1djhjMCAxLjEtLjkgMi0yIDJIOGMtMS4xIDAtMi0uOS0yLTJWNWgxMG00LTJINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJjMS4xMSAwIDItLjg5IDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bS0yIDVWNWgydjNoLTJ6bTIgMTFIMnYyaDE4di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxDYXJXYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLTEtMS41LTIuNy0xLjUtMi43cy0xLjUgMS43LTEuNSAyLjdjMCAuODMuNjcgMS41IDEuNSAxLjV6bS01IDBjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtMS0xLjUtMi43LTEuNS0yLjdzLTEuNSAxLjctMS41IDIuN2MwIC44My42NyAxLjUgMS41IDEuNXpNNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNUM4LjUgMi41IDcgLjggNyAuOFM1LjUgMi41IDUuNSAzLjVDNS41IDQuMzMgNi4xNyA1IDcgNXptMTEuOTIgMy4wMUMxOC43MiA3LjQyIDE4LjE2IDcgMTcuNSA3aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxNHY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi44NSA5aDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMTlINXYtNC42NmwuMTItLjM0aDEzLjc3bC4xMS4zNFYxOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxNi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbENvbnZlbmllbmNlU3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdWNEg1djNIMnYxM2g4di00aDR2NGg4VjdoLTN6bTEgMTFoLTR2LTRIOHY0SDRWOWgzVjZoMTB2M2gzdjl6TTggOGgydjFIOHYzaDN2LTFIOXYtMWgyVjdIOHptNyAxaC0xVjdoLTF2M2gydjJoMVY3aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguMSAxMy4zNCAyLjgzLTIuODNMMy45MSAzLjVhNC4wMDggNC4wMDggMCAwIDAgMCA1LjY2bDQuMTkgNC4xOHptNi43OC0xLjgxYzEuNTMuNzEgMy42OC4yMSA1LjI3LTEuMzggMS45MS0xLjkxIDIuMjgtNC42NS44MS02LjEyLTEuNDYtMS40Ni00LjItMS4xLTYuMTIuODEtMS41OSAxLjU5LTIuMDkgMy43NC0xLjM4IDUuMjdMMy43IDE5Ljg3bDEuNDEgMS40MUwxMiAxNC40MWw2Ljg4IDYuODggMS40MS0xLjQxTDEzLjQxIDEzbDEuNDctMS40N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsRHJpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMgMiAyLjAxIDE4LjIzQzUuMTMgMjEuMjMgNS45NyAyMiA3IDIyaDEwYzEuMDMgMCAxLjg3LS43NyAxLjk5LTEuNzdMMjEgMkgzem0xNCAxOC0xMCAuMDFMNS44OSAxMEgxOC4xTDE3IDIwem0xLjMzLTEySDUuNjdsLS40NC00aDEzLjUzbC0uNDMgNHpNMTIgMTljMS42NiAwIDMtMS4zNCAzLTMgMC0yLTMtNS40LTMtNS40UzkgMTQgOSAxNmMwIDEuNjYgMS4zNCAzIDMgM3ptMC01LjA5Yy41OS45MSAxIDEuNzMgMSAyLjA5IDAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xYzAtLjM3LjQxLTEuMTkgMS0yLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxGaXJlRGVwYXJ0bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDYtLjQ0LjU1Yy0uNDIuNTItLjk4Ljc1LTEuNTQuNzVDMTMgNy4zIDEyIDYuNTIgMTIgNS4zVjJTNCA2IDQgMTNjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuOTYtMS42MS01LjYyLTQtN3ptLTQgMTNjLTEuMSAwLTItLjg3LTItMS45NCAwLS41MS4yLS45OS41OC0xLjM2TDEyIDE0LjNsMS40MyAxLjRjLjM3LjM3LjU3Ljg1LjU3IDEuMzYgMCAxLjA3LS45IDEuOTQtMiAxLjk0em0zLjk2LTEuNWMuMDQtLjM2LjIyLTEuODktMS4xMy0zLjIyTDEyIDExLjVsLTIuODMgMi43OEM3LjgxIDE1LjYyIDggMTcuMTYgOC4wNCAxNy41QTUuOTgyIDUuOTgyIDAgMCAxIDYgMTNjMC0zLjE2IDIuMTMtNS42NSA0LjAzLTcuMjVhNC4wMjQgNC4wMjQgMCAwIDAgMy45OSAzLjU1Yy43OCAwIDEuNTQtLjIzIDIuMTgtLjY2QTYuMTc1IDYuMTc1IDAgMCAxIDE4IDEzYzAgMS43OS0uNzkgMy40LTIuMDQgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxGbG9yaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjY2IDEzLjA3Yy4xNSAwIC4yOS0uMDEuNDMtLjAzQzkuNTYgMTQuMTkgMTAuNjkgMTUgMTIgMTVzMi40NC0uODEgMi45MS0xLjk2YTMuMTQ1IDMuMTQ1IDAgMCAwIDMuNTctMy4xMWMwLS43MS0uMjUtMS4zOS0uNjctMS45My40My0uNTQuNjctMS4yMi42Ny0xLjkzYTMuMTQ1IDMuMTQ1IDAgMCAwLTMuNTctMy4xMUMxNC40NCAxLjgxIDEzLjMxIDEgMTIgMXMtMi40NC44MS0yLjkxIDEuOTZhMy4xNDUgMy4xNDUgMCAwIDAtMy41NyAzLjExYzAgLjcxLjI1IDEuMzkuNjcgMS45My0uNDMuNTQtLjY4IDEuMjItLjY4IDEuOTMgMCAxLjczIDEuNDEgMy4xNCAzLjE1IDMuMTR6TTEyIDEzYy0uNjIgMC0xLjEyLS40OS0xLjE0LTEuMWwuMTItMS4wOWMuMzIuMTIuNjYuMTkgMS4wMi4xOXMuNzEtLjA3IDEuMDMtLjE5bC4xMSAxLjA5Yy0uMDIuNjEtLjUyIDEuMS0xLjE0IDEuMXptMy4zNC0xLjkzYy0uMjQgMC0uNDYtLjA3LS42NC0uMmwtLjgxLS41N2MuNTUtLjQ1Ljk0LTEuMDkgMS4wNi0xLjgzbC44OC40MmMuNC4xOS42Ni41OS42NiAxLjAzIDAgLjY0LS41MiAxLjE1LTEuMTUgMS4xNXptLS42NS01Ljk0Yy4yLS4xMy40Mi0uMi42NS0uMi42MyAwIDEuMTQuNTEgMS4xNCAxLjE0IDAgLjQ0LS4yNS44My0uNjYgMS4wM2wtLjg4LjQyYy0uMTItLjc0LS41MS0xLjM4LTEuMDctMS44M2wuODItLjU2ek0xMiAzYy42MiAwIDEuMTIuNDkgMS4xNCAxLjFsLS4xMSAxLjA5QzEyLjcxIDUuMDcgMTIuMzYgNSAxMiA1cy0uNy4wNy0xLjAyLjE5bC0uMTItMS4wOWMuMDItLjYxLjUyLTEuMSAxLjE0LTEuMXpNOC42NiA0LjkzYy4yNCAwIC40Ni4wNy42NC4ybC44MS41NmMtLjU1LjQ1LS45NCAxLjA5LTEuMDYgMS44M2wtLjg4LS40MmMtLjQtLjItLjY2LS41OS0uNjYtMS4wMyAwLS42My41Mi0xLjE0IDEuMTUtMS4xNHpNOC4xNyA4LjlsLjg4LS40MmMuMTIuNzQuNTEgMS4zOCAxLjA3IDEuODNsLS44MS41NWMtLjIuMTMtLjQyLjItLjY1LjItLjYzIDAtMS4xNC0uNTEtMS4xNC0xLjE0LS4wMS0uNDMuMjUtLjgyLjY1LTEuMDJ6TTEyIDIyYTkgOSAwIDAgMCA5LTkgOSA5IDAgMCAwLTkgOXptMi40NC0yLjQ0Yy43MS0xLjkgMi4yMi0zLjQyIDQuMTItNC4xMmE3LjA0IDcuMDQgMCAwIDEtNC4xMiA0LjEyek0zIDEzYTkgOSAwIDAgMCA5IDkgOSA5IDAgMCAwLTktOXptMi40NCAyLjQ0YzEuOS43MSAzLjQyIDIuMjIgNC4xMiA0LjEyYTcuMDQgNy4wNCAwIDAgMS00LjEyLTQuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEdhc1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDcuMjMuMDEtLjAxLTMuNzItMy43MkwxNSA0LjU2bDIuMTEgMi4xMWMtLjk0LjM2LTEuNjEgMS4yNi0xLjYxIDIuMzNhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy4zNiAwIC42OS0uMDggMS0uMjF2Ny4yMWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVYxNGMwLTEuMS0uOS0yLTItMmgtMVY1YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAydjE2aDEwdi03LjVoMS41djVhMi41IDIuNSAwIDAgMCA1IDBWOWMwLS42OS0uMjgtMS4zMi0uNzMtMS43N3pNMTIgMTMuNVYxOUg2di03aDZ2MS41em0wLTMuNUg2VjVoNnY1em02IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsR3JvY2VyeVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTEuNDUtNWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy41OC02LjQ5QS45OTYuOTk2IDAgMCAwIDIwLjAxIDRINS4yMWwtLjk0LTJIMXYyaDJsMy42IDcuNTktMS4zNSAyLjQ0QzQuNTIgMTUuMzcgNS40OCAxNyA3IDE3aDEydi0ySDdsMS4xLTJoNy40NXpNNi4xNiA2aDEyLjE1bC0yLjc2IDVIOC41M0w2LjE2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEhvc3BpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tOC41LTJoM3YtMy41SDE3di0zaC0zLjVWN2gtM3YzLjVIN3YzaDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsSG90ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTRjMS42NiAwIDMtMS4zNCAzLTNTOC42NiA4IDcgOHMtMyAxLjM0LTMgMyAxLjM0IDMgMyAzem0wLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTItM2gtOHY4SDNWNUgxdjE1aDJ2LTNoMTh2M2gydi05YzAtMi4yMS0xLjc5LTQtNC00em0yIDhoLThWOWg2YzEuMSAwIDIgLjkgMiAydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbExhdW5kcnlTZXJ2aWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyLjAxIDYgMmMtMS4xMSAwLTIgLjg5LTIgMnYxNmMwIDEuMTEuODkgMiAyIDJoMTJjMS4xMSAwIDItLjg5IDItMlY0YzAtMS4xMS0uODktMS45OS0yLTEuOTl6TTE4IDIwSDZMNS45OSA0SDE4djE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE5YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01LTUgMi4yNC01IDUgMi4yNCA1IDUgNXptMi4zNi03LjM2YzEuMyAxLjMgMS4zIDMuNDIgMCA0LjcyLTEuMyAxLjMtMy40MiAxLjMtNC43MiAwbDQuNzItNC43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsTGlicmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTAgOC41NUM5LjY0IDkuMzUgNi40OCA4IDMgOHYxMWMzLjQ4IDAgNi42NCAxLjM1IDkgMy41NSAyLjM2LTIuMTkgNS41Mi0zLjU1IDktMy41NVY4Yy0zLjQ4IDAtNi42NCAxLjM1LTkgMy41NXptNyA1LjU4Yy0yLjUzLjM0LTQuOTMgMS4zLTcgMi44MmExNS4yIDE1LjIgMCAwIDAtNy0yLjgzdi02Ljk1YzIuMS4zOCA0LjA1IDEuMzUgNS42NCAyLjgzTDEyIDE0LjI4bDEuMzYtMS4yN0ExMS4xOCAxMS4xOCAwIDAgMSAxOSAxMC4xOHY2Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxNYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2aC0yYzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZINWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tNy0zYzEuNjYgMCAzIDEuMzQgMyAzSDljMC0xLjY2IDEuMzQtMyAzLTN6bTcgMTdINVY4aDE0djEyem0tNy04Yy0xLjY2IDAtMy0xLjM0LTMtM0g3YzAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVoLTJjMCAxLjY2LTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbE1vdmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNXYxNGgtNFY1aDRtNi0yaC0ydjJoLTJWM0g4djJINlYzSDR2MThoMnYtMmgydjJoOHYtMmgydjJoMlYzem0tNCA2VjdoMnYyaC0yek02IDlWN2gydjJINnptMTAgNHYtMmgydjJoLTJ6TTYgMTN2LTJoMnYySDZ6bTEwIDR2LTJoMnYyaC0yek02IDE3di0yaDJ2Mkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxPZmZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNTgtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OHMxLjA1LS4yMiAxLjQxLS41OWw3LTdjLjM3LS4zNi41OS0uODYuNTktMS40MXMtLjIzLTEuMDYtLjU5LTEuNDJ6TTEzIDIwLjAxIDQgMTFWNGg3di0uMDFsOSA5LTcgNy4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxQYXJraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzSDZ2MThoNHYtNmgzYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0uMiA4SDEwVjdoMy4yYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUGhhcm1hY3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVoLTIuNjRsMS4xNC0zLjE0TDE3LjE1IDFsLTEuNDYgNEgzdjJsMiA2LTIgNnYyaDE4di0ybC0yLTYgMi02VjV6bS0zLjkgOC42M0wxOC44OSAxOUg1LjExbDEuNzktNS4zNy4yMS0uNjMtLjIxLS42M0w1LjExIDdoMTMuNzhsLTEuNzkgNS4zNy0uMjEuNjMuMjEuNjN6TTEzIDloLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODkuMjEgMS43Ni40NSAyLjU5bC0xLjIgMS4yYy0uNDEtMS4yLS42Ny0yLjQ3LS43Ni0zLjc5aDEuNTFtOS44NiAxMi4wMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OWMtMS4zMi0uMDktMi41OS0uMzUtMy44LS43NWwxLjItMS4xOU03LjUgM0g0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMS0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFBpenphIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguNDMgMiA1LjIzIDMuNTQgMy4wMSA2TDEyIDIybDguOTktMTZDMTguNzggMy41NSAxNS41NyAyIDEyIDJ6bTAgMTUuOTJMNS41MSA2LjM2QzcuMzIgNC44NSA5LjYyIDQgMTIgNHM0LjY4Ljg1IDYuNDkgMi4zNkwxMiAxNy45MnpNOSA1LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41UzguMTcgOC41IDkgOC41czEuNS0uNjcgMS41LTEuNVM5LjgyIDUuNSA5IDUuNXptMS41IDcuNWMwIC44My42NyAxLjUgMS41IDEuNS44MiAwIDEuNS0uNjcgMS41LTEuNXMtLjY4LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2NGMxLjEgMCAxLjk5LjkgMS45OSAycy0uODkgMi0yIDJ2NGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi00Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMnptLTItMS40NmMtMS4xOS42OS0yIDEuOTktMiAzLjQ2cy44MSAyLjc3IDIgMy40NlYxOEg0di0yLjU0YzEuMTktLjY5IDItMS45OSAyLTMuNDYgMC0xLjQ4LS44LTIuNzctMS45OS0zLjQ2TDQgNmgxNnYyLjU0ek05LjA3IDE2IDEyIDE0LjEyIDE0LjkzIDE2bC0uODktMy4zNiAyLjY5LTIuMi0zLjQ3LS4yMUwxMiA3bC0xLjI3IDMuMjItMy40Ny4yMSAyLjY5IDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUG9saWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuNSAxMi41OS45IDMuODgtMy40LTIuMDUtMy40IDIuMDUuOS0zLjg3LTMtMi41OSAzLjk2LS4zNEwxMiA2LjAybDEuNTQgMy42NCAzLjk2LjM0LTMgMi41OXpNMTIgMy4xOWw3IDMuMTFWMTFjMCA0LjUyLTIuOTggOC42OS03IDkuOTMtNC4wMi0xLjI0LTctNS40MS03LTkuOTNWNi4zbDctMy4xMU0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUG9zdE9mZmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZ6bS0yIDAtOCA1LTgtNWgxNnptMCAxMkg0VjhsOCA1IDgtNXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUHJpbnRzaG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4aC0xVjNINnY1SDVjLTEuNjYgMC0zIDEuMzQtMyAzdjZoNHY0aDEydi00aDR2LTZjMC0xLjY2LTEuMzQtMy0zLTN6TTggNWg4djNIOFY1em04IDE0SDh2LTRoOHY0em0yLTR2LTJINnYySDR2LTRjMC0uNTUuNDUtMSAxLTFoMTRjLjU1IDAgMSAuNDUgMSAxdjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFNlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtMy4xN0wxNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoNC4wNWwuNTktLjY1TDkuODggNGg0LjI0bDEuMjQgMS4zNS41OS42NUgyMHYxMnpNMTIgN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTAgOC4yYy0xLjc3IDAtMy4yLTEuNDMtMy4yLTMuMiAwLTEuNzcgMS40My0zLjIgMy4yLTMuMnMzLjIgMS40MyAzLjIgMy4yYzAgMS43Ny0xLjQzIDMuMi0zLjIgMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxTaGlwcGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOGgtM1Y0SDNjLTEuMSAwLTIgLjktMiAydjExaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g2YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoMnYtNWwtMy00em0tLjUgMS41IDEuOTYgMi41SDE3VjkuNWgyLjV6TTYgMThjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi4yMi0zYy0uNTUtLjYxLTEuMzMtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDNWNmgxMnY5SDguMjJ6TTE4IDE4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFRheGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNUgxNVYzSDl2Mkg2LjVjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgN2gxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTE5IDE3SDV2LTQuNjZsLjEyLS4zNGgxMy43N2wuMTEuMzRWMTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTHVuY2hEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE5YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTNIMnYzem0yLTFoMTZ2MUg0di0xek0xOC42NiAxMS41Yy0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMXYyYzEuOSAwIDIuMTctMSAzLjM1LTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNC45OCAzLjMyIDFsLS4wMS0xLjk4Yy0xLjYxLS4zMy0xLjYyLTEuMDItMy4zMy0xLjAyek0yMiA5Yy4wMi00LTQuMjgtNi0xMC02QzYuMjkgMyAyIDUgMiA5djFoMjBWOXpNNC4xOCA4QzUuMDEgNS44MSA4LjYxIDUgMTIgNWMzLjMxIDAgNS45My43MyA3LjE5IDEuOTkuMy4zMS41Mi42NC42NSAxLjAxSDQuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjUgMy0uMTYuMDNMMTUgNS4xIDkgMyAzLjM2IDQuOWMtLjIxLjA3LS4zNi4yNS0uMzYuNDhWMjAuNWMwIC4yOC4yMi41LjUuNWwuMTYtLjAzTDkgMTguOWw2IDIuMSA1LjY0LTEuOWMuMjEtLjA3LjM2LS4yNS4zNi0uNDhWMy41YzAtLjI4LS4yMi0uNS0uNS0uNXpNMTAgNS40N2w0IDEuNHYxMS42NmwtNC0xLjRWNS40N3ptLTUgLjk5IDMtMS4wMXYxMS43bC0zIDEuMTZWNi40NnptMTQgMTEuMDgtMyAxLjAxVjYuODZsMy0xLjE2djExLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFwc1VnYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDhjLTEuMTggMC0yLjM0LS4yNi0zLjQzLS43OC0uMjctLjEzLS41Ni0uMTktLjg2LS4xOS0uMTkgMC0uMzguMDMtLjU2LjA4bC0zLjIuOTQuOTQtMy4yYy4xNC0uNDcuMS0uOTgtLjExLTEuNDJBNy45MjUgNy45MjUgMCAwIDEgNCAxMmMwLTQuNDEgMy41OS04IDgtOG0wLTJDNi40OCAyIDIgNi40OCAyIDEyYzAgMS41NC4zNiAyLjk4Ljk3IDQuMjlMMSAyM2w2LjcxLTEuOTdjMS4zMS42MSAyLjc1Ljk3IDQuMjkuOTcgNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTMgOGgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWNhbEluZm9ybWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gtNVY0YzAtMS4xLS45LTItMi0yaC0yYy0xLjEgMC0yIC45LTIgMnYzSDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptLTktM2gydjVoLTJWNHptOSAxNkg0VjloNWMwIDEuMS45IDIgMiAyaDJjMS4xIDAgMi0uOSAyLTJoNXYxMXptLTktNEg5djJIN3YtMkg1di0yaDJ2LTJoMnYyaDJ2MnptMi0xLjVWMTNoNnYxLjVoLTZ6bTAgM1YxNmg0djEuNWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lZGljYWxTZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLTRWNGMwLTEuMS0uOS0yLTItMmgtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6TTEwIDRoNHYyaC00VjR6bTEwIDE2SDRWOGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTBoLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lbnVCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWMtMS4xMS0uMzUtMi4zMy0uNS0zLjUtLjUtMS45NSAwLTQuMDUuNC01LjUgMS41LTEuNDUtMS4xLTMuNTUtMS41LTUuNS0xLjVTMi40NSA0LjkgMSA2djE0LjY1YzAgLjI1LjI1LjUuNS41LjEgMCAuMTUtLjA1LjI1LS4wNUMzLjEgMjAuNDUgNS4wNSAyMCA2LjUgMjBjMS45NSAwIDQuMDUuNCA1LjUgMS41IDEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjY1IDAgMy4zNS4zIDQuNzUgMS4wNS4xLjA1LjE1LjA1LjI1LjA1LjI1IDAgLjUtLjI1LjUtLjVWNmMtLjYtLjQ1LTEuMjUtLjc1LTItMXptMCAxMy41Yy0xLjEtLjM1LTIuMy0uNS0zLjUtLjUtMS43IDAtNC4xNS42NS01LjUgMS41VjhjMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuMiAwIDIuNC4xNSAzLjUuNXYxMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDEwLjVjLjg4IDAgMS43My4wOSAyLjUuMjZWOS4yNGMtLjc5LS4xNS0xLjY0LS4yNC0yLjUtLjI0LTEuNyAwLTMuMjQuMjktNC41LjgzdjEuNjZjMS4xMy0uNjQgMi43LS45OSA0LjUtLjk5ek0xMyAxMi40OXYxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2VjExLjljLS43OS0uMTUtMS42NC0uMjQtMi41LS4yNC0xLjcgMC0zLjI0LjMtNC41Ljgzek0xNy41IDE0LjMzYy0xLjcgMC0zLjI0LjI5LTQuNS44M3YxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2di0xLjUyYy0uNzktLjE2LTEuNjQtLjI0LTIuNS0uMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNDEgMjEgNSAxOS41OWw0LjgzLTQuODNjLjc1LS43NSAxLjE3LTEuNzcgMS4xNy0yLjgzdi01LjFMOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzdjUuMWMwIDEuMDYuNDIgMi4wOCAxLjE3IDIuODNMMTkgMTkuNTkgMTcuNTkgMjEgMTIgMTUuNDEgNi40MSAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pbm9yQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA5LjAxQzE4LjcyIDguNDIgMTguMTYgOCAxNy41IDhoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDE1djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDEwaDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMjBINXYtNWgxNHY1ek02IDE3LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTOC4zMyAxOSA3LjUgMTkgNiAxOC4zMyA2IDE3LjV6bTkgMGMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41ek05LjQxIDUgOCA2LjQxbC0zLTNMNi40MSAybDMgM3pNMTYgNi40MSAxNC41OSA1bDMtM0wxOSAzLjQxbC0zIDN6TTEzIDVoLTJWMGgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaXNjZWxsYW5lb3VzU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4xNyAxMy43MSAxLjQtMi40MmMuMDktLjE1LjA1LS4zNC0uMDgtLjQ1bC0xLjQ4LTEuMTZjLjAzLS4yMi4wNS0uNDUuMDUtLjY4cy0uMDItLjQ2LS4wNS0uNjlsMS40OC0xLjE2Yy4xMy0uMTEuMTctLjMuMDgtLjQ1bC0xLjQtMi40MmMtLjA5LS4xNS0uMjctLjIxLS40My0uMTVsLTEuNzQuN2MtLjM2LS4yOC0uNzUtLjUxLTEuMTgtLjY5bC0uMjYtMS44NWEuMzY0LjM2NCAwIDAgMC0uMzUtLjI5aC0yLjhjLS4xNyAwLS4zMi4xMy0uMzUuM0w2LjggNC4xNWMtLjQyLjE4LS44Mi40MS0xLjE4LjY5bC0xLjc0LS43Yy0uMTYtLjA2LS4zNCAwLS40My4xNWwtMS40IDIuNDJjLS4wOS4xNS0uMDUuMzQuMDguNDVsMS40OCAxLjE2Yy0uMDMuMjItLjA1LjQ1LS4wNS42OHMuMDIuNDYuMDUuNjlsLTEuNDggMS4xNmMtLjEzLjExLS4xNy4zLS4wOC40NWwxLjQgMi40MmMuMDkuMTUuMjcuMjEuNDMuMTVsMS43NC0uN2MuMzYuMjguNzUuNTEgMS4xOC42OWwuMjYgMS44NWMuMDMuMTYuMTguMjkuMzUuMjloMi44Yy4xNyAwIC4zMi0uMTMuMzUtLjNsLjI2LTEuODVjLjQyLS4xOC44Mi0uNDEgMS4xOC0uNjlsMS43NC43Yy4xNi4wNi4zNCAwIC40My0uMTV6TTguODEgMTFjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyek0yMS45MiAxOC42N2wtLjk2LS43NGMuMDItLjE0LjA0LS4yOS4wNC0uNDQgMC0uMTUtLjAxLS4zLS4wNC0uNDRsLjk1LS43NGMuMDgtLjA3LjExLS4xOS4wNS0uMjlsLS45LTEuNTVjLS4wNS0uMS0uMTctLjEzLS4yOC0uMWwtMS4xMS40NWMtLjIzLS4xOC0uNDgtLjMzLS43Ni0uNDRsLS4xNy0xLjE4YS4yMTYuMjE2IDAgMCAwLS4yMS0uMmgtMS43OWMtLjExIDAtLjIxLjA4LS4yMi4xOWwtLjE3IDEuMThjLS4yNy4xMi0uNTMuMjYtLjc2LjQ0bC0xLjExLS40NWEuMjMuMjMgMCAwIDAtLjI4LjFsLS45IDEuNTVjLS4wNS4xLS4wNC4yMi4wNS4yOWwuOTUuNzRhMy4xNDUgMy4xNDUgMCAwIDAgMCAuODhsLS45NS43NGMtLjA4LjA3LS4xMS4xOS0uMDUuMjlsLjkgMS41NWMuMDUuMS4xNy4xMy4yOC4xbDEuMTEtLjQ1Yy4yMy4xOC40OC4zMy43Ni40NGwuMTcgMS4xOGMuMDIuMTEuMTEuMTkuMjIuMTloMS43OWMuMTEgMCAuMjEtLjA4LjIyLS4xOWwuMTctMS4xOGMuMjctLjEyLjUzLS4yNi43NS0uNDRsMS4xMi40NWMuMS4wNC4yMiAwIC4yOC0uMWwuOS0xLjU1Yy4wNi0uMDkuMDMtLjIxLS4wNS0uMjh6bS00LjI5LjE2YTEuMzUgMS4zNSAwIDEgMSAuMDAxLTIuNzAxIDEuMzUgMS4zNSAwIDAgMS0uMDAxIDIuNzAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9kZU9mVHJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMzEgMTguOWMtLjk2IDEtMi4wNiAyLjAzLTMuMzEgMy4xLTUuMzMtNC41NS04LTguNDgtOC0xMS44QzQgNS4yMiA3LjggMiAxMiAyYzQuMTkgMCA3Ljk5IDMuMjEgOCA4LjE3bDIuMDktMi4wOUwyMy41IDkuNSAxOSAxNGwtNC41LTQuNSAxLjQxLTEuNDFMMTggMTAuMTdDMTcuOTkgNi41NSAxNS4zNCA0IDEyIDRjLTMuMzUgMC02IDIuNTctNiA2LjIgMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQuNjQtLjU5IDEuMjMtMS4xNiAxLjc3LTEuNzFhMi41IDIuNSAwIDAgMS0uMjctMS4xMiAyLjUgMi41IDAgMCAxIDUgMCAyLjQ5MiAyLjQ5MiAwIDAgMS0zLjE5IDIuMzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTZoM2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxem0xLTZoMXY0aC0xdi00em0tNyA2aDNjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xSDljLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxem0xLTZoMXY0aC0xdi00ek01IDhoMnY4SDV6TTIgNHYxNmgyMFY0SDJ6bTE4IDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2MwLTEuMS0uOS0yLTItMmgtM3YyaDN2Mi42NUwxMy41MiAxNEgxMFY5SDZjLTIuMjEgMC00IDEuNzktNCA0djNoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDQuNDhMMTkgMTAuMzVWN3pNNCAxNHYtMWMwLTEuMS45LTIgMi0yaDJ2M0g0em0zIDNjLS41NSAwLTEtLjQ1LTEtMWgyYzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2aDV2Mkg1ek0xOSAxM2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9zcXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgN2MwLTEuMS0yLTMtMi0zcy0yIDEuOS0yIDNjMCAuNzQuNCAxLjM4IDEgMS43MlYxM2gtMnYtMmMwLS45NS0uNjYtMS43NC0xLjU1LTEuOTQuMzQtLjU4LjU1LTEuMjUuNTUtMS45NyAwLTEuMzEtLjY1LTIuNTMtMS43NC0zLjI1TDEyIDEgNy43NCAzLjg0QTMuODg3IDMuODg3IDAgMCAwIDYgNy4wOWMwIC43Mi4yMSAxLjM5LjU1IDEuOTZDNS42NiA5LjI2IDUgMTAuMDUgNSAxMXYySDNWOC43MmMuNi0uMzQgMS0uOTggMS0xLjcyIDAtMS4xLTItMy0yLTNTMCA1LjkgMCA3YzAgLjc0LjQgMS4zOCAxIDEuNzJWMjFoMTB2LTRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjRoMTBWOC43MmMuNi0uMzQgMS0uOTggMS0xLjcyek04Ljg1IDUuNSAxMiAzLjRsMy4xNSAyLjFjLjUzLjM2Ljg1Ljk1Ljg1IDEuNTlDMTYgOC4xNCAxNS4xNCA5IDE0LjA5IDlIOS45MUM4Ljg2IDkgOCA4LjE0IDggNy4wOWMwLS42NC4zMi0xLjIzLjg1LTEuNTl6TTIxIDE5aC02di0yYzAtMS42NS0xLjM1LTMtMy0zcy0zIDEuMzUtMyAzdjJIM3YtNGg0di00aDEwdjRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW92aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOS40MlYxMmgyVjZoLTZ2MmgyLjU4bC00LjQ2IDQuNDZhLjk5Ni45OTYgMCAwIDEtMS40MSAwbC0xLjE3LTEuMTdhMyAzIDAgMCAwLTQuMjQgMEwyIDE2LjU5IDMuNDEgMThsNS4yOS01LjI5YS45OTYuOTk2IDAgMCAxIDEuNDEgMGwxLjE3IDEuMTdhMyAzIDAgMCAwIDQuMjQgMEwyMCA5LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTXVsdGlwbGVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgNCA0IDQtNCA0VjloLTRWN2g0VjR6bS03IDNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNNiA3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTEgMTBoNHYtMkg3di0zbC00IDQgNCA0di0zem03IDBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptNCAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNdXNldW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5TDEyIDIgMiA5djJoMnY5SDJ2MmgyMHYtMmgtMnYtOWgyem0tNCA5SDZWOWgxMnYxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgMTQgMiAzIDItM3Y0aDJ2LTdoLTJsLTIgMy0yLTNIOHY3aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNeUxvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptOC45NCAzQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAyMC45NCAxM0gyM3YtMmgtMi4wNnpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmF2aWdhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNy4yNyA0LjI4IDEwLjQzLTMuNDctMS41My0uODEtLjM2LS44MS4zNi0zLjQ3IDEuNTNMMTIgNy4yN00xMiAyIDQuNSAyMC4yOWwuNzEuNzFMMTIgMThsNi43OSAzIC43MS0uNzFMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5lYXJNZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNi4zNCAyMSAzbC0zLjM0IDktMS41Ni0xLjU2IDEuNS00LjA1LTQuMDUgMS41TDEyIDYuMzR6bTkuMTkgMTQuODUtNS4wNy01LjA3TDE0LjMxIDIxSDEyLjlsLTIuODMtNy4wN0wzIDExLjFWOS42OWw0Ljg4LTEuODEtNS4wNy01LjA3TDQuMjIgMS40IDIyLjYgMTkuNzhsLTEuNDEgMS40MXptLTYuNjItNi42Mkw5LjQzIDkuNDNsLTIuNzEgMS4wMSA0Ljg5IDEuOTUgMS45NSA0Ljg5IDEuMDEtMi43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5lYXJNZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMjcgNi43My00LjI0IDEwLjEzLTEuMzItMy40Mi0uMzItLjgzLS44Mi0uMzItMy40My0xLjMzIDEwLjEzLTQuMjNNMjEgMyAzIDEwLjUzdi45OGw2Ljg0IDIuNjVMMTIuNDggMjFoLjk4TDIxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOaWdodGxpZmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDVoMTRsLTYgOXY0aDJ2Mkg1di0yaDJ2LTRMMSA1em05LjEgNCAxLjQtMkg0LjQ5bDEuNCAyaDQuMjF6TTE3IDVoNXYzaC0zdjljMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM2EzIDMgMCAwIDEgMSAuMTdWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA5LjAxQzE4LjcyIDguNDIgMTguMTYgOCAxNy41IDhoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDE1djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDEwaDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMjBINXYtNWgxNHY1ek02IDE3LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTOC4zMyAxOSA3LjUgMTkgNiAxOC4zMyA2IDE3LjV6bTkgMGMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41ek0xMiA2LjM2IDkuMTcgMy41NGwxLjQxLTEuNDFMMTIgMy41NCAxNS41NCAwbDEuNDEgMS40MUwxMiA2LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9NZWFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE0VjZjMC0xLjc2IDIuMjQtNCA1LTR2MTYuMTdsLTItMlYxNGgtM3ptNC40OSA5LjMxTDEwLjAyIDEyLjg1Yy0uMzMuMDktLjY2LjE1LTEuMDIuMTV2OUg3di05Yy0yLjIxIDAtNC0xLjc5LTQtNFY1LjgzTC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MXpNNi4xNyA5IDUgNy44M1Y5aDEuMTd6TTkgMkg3djIuMTdsMiAyVjJ6bTQgN1YyaC0ydjYuMTdsMS44NSAxLjg1Yy4wOS0uMzMuMTUtLjY2LjE1LTEuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb1RyYW5zZmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDEzYy44MyAwIDEuNS42NyAxLjUgMS41UzkuMzMgMTYgOC41IDE2IDcgMTUuMzMgNyAxNC41IDcuNjcgMTMgOC41IDEzem0xMS4yOCA5LjYxLTEuNjQtMS42NGMtLjA1LjAxLS4wOS4wMy0uMTQuMDNoLTFjLS41NSAwLTEtLjQ1LTEtMXYtMUg4djFjMCAuNTUtLjQ1IDEtMSAxSDZjLS41NSAwLTEtLjQ1LTEtMXYtMS43OGMtLjYxLS41NS0xLTEuMzQtMS0yLjIyVjYuODNMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyek02IDguODNWMTBoMS4xN0w2IDguODN6TTE0LjE3IDE3bC01LTVINnY0YzAgLjM3LjIxLjYyLjM0LjczbC4yOS4yN2g3LjU0ek0xMiA0YzMuNjkgMCA1LjExLjQ2IDUuNjYuOTlINy44MmwyIDJIMThWMTBoLTUuMTdsMiAySDE4djMuMTdsMS44MSAxLjgxYy4xMS0uMzEuMTktLjYzLjE5LS45OFY2YzAtMy41LTMuNTgtNC04LTQtMi41MiAwLTQuNzYuMTYtNi4yMi45NWwxLjUzIDEuNTNDOC4xNyA0LjIgOS42IDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdExpc3RlZExvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMSAxNmEuOTkuOTkgMCAwIDEtLjcxLS4yOS45NS45NSAwIDAgMS0uMjktLjcxYy0uMDEtLjU1LjQzLS45OS45OC0xaC4wMmMuMjggMCAuNTEuMS43MS4yOS4xOC4xOS4yOC40My4yOC43cy0uMS41MS0uMjkuNzEtLjQzLjMtLjcuM3ptLS44OC0zLjY2YzAtLjQ1LjEtLjg0LjI5LTEuMTYuMTktLjMzLjUzLS43IDEtMS4xMi4yOC0uMjUuNDgtLjQ3LjYxLS42NnMuMTktLjQuMTktLjY0YzAtLjI5LS4xMS0uNTMtLjMyLS43NC0uMjEtLjItLjUtLjMtLjg1LS4zLS4zNyAwLS43NC4xLS45Ni4zLS4yMS4yLS40LjQ1LS40Ljk4SDljMC0xLjAxLjQ2LTEuNzMuOTctMi4yMUMxMC41MyA2LjI4IDExLjI1IDYgMTIgNmMuNTkgMCAxLjExLjEyIDEuNTcuMzVzLjc5LjU1IDEuMDUuOTYuMzguODYuMzggMS4zNS0uMS45LS4zMSAxLjI1LS40OC43MS0uODkgMS4wOWMtLjMyLjMtLjUzLjU2LS42NS43N3MtLjE4LjQ5LS4xOC44MVYxM2gtMS44NXYtLjY2aC4wMXpNMTggMTAuMkMxOCA2LjU3IDE1LjM1IDQgMTIgNHMtNiAyLjU3LTYgNi4yYzAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0IDQuMDUtMy43IDYtNi44IDYtOS4xNHpNMTIgMmM0LjIgMCA4IDMuMjIgOCA4LjIgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJoMkwxMiAyIDUuMDUgMTJIN2wtMy45IDZoNi45MnY0aDMuOTV2LTRIMjFsLTQtNnpNNi43OSAxNmwzLjktNkg4Ljg4bDMuMTMtNC41IDMuMTUgNC41aC0xLjlsNCA2SDYuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZWRhbEJpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4xOCAxMC0xLjctNC42OEEyLjAwOCAyLjAwOCAwIDAgMCAxNC42IDRIMTJ2MmgyLjZsMS40NiA0aC00LjgxbC0uMzYtMUgxMlY3SDd2MmgxLjc1bDEuODIgNUg5LjljLS40NC0yLjIzLTIuMzEtMy44OC00LjY1LTMuOTlDMi40NSA5Ljg3IDAgMTIuMiAwIDE1YzAgMi44IDIuMiA1IDUgNSAyLjQ2IDAgNC40NS0xLjY5IDQuOS00aDQuMmMuNDQgMi4yMyAyLjMxIDMuODggNC42NSAzLjk5IDIuOC4xMyA1LjI1LTIuMTkgNS4yNS01IDAtMi44LTIuMi01LTUtNWgtLjgyek03LjgyIDE2Yy0uNCAxLjE3LTEuNDkgMi0yLjgyIDItMS42OCAwLTMtMS4zMi0zLTNzMS4zMi0zIDMtM2MxLjMzIDAgMi40Mi44MyAyLjgyIDJINXYyaDIuODJ6bTYuMjgtMmgtMS40bC0uNzMtMkgxNWMtLjQ0LjU4LS43NiAxLjI1LS45IDJ6bTQuOSA0Yy0xLjY4IDAtMy0xLjMyLTMtMyAwLS45My40MS0xLjczIDEuMDUtMi4yOGwuOTYgMi42NCAxLjg4LS42OC0uOTctMi42N2MuMDMgMCAuMDYtLjAxLjA5LS4wMSAxLjY4IDAgMyAxLjMyIDMgM3MtMS4zMyAzLTMuMDEgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvblBpbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExYzEuMzMgMCA0IC42NyA0IDJ2LjE2Yy0uOTcgMS4xMi0yLjQgMS44NC00IDEuODRzLTMuMDMtLjcyLTQtMS44NFYxM2MwLTEuMzMgMi42Ny0yIDQtMnptMC0xYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptNiAuMkMxOCA2LjU3IDE1LjM1IDQgMTIgNHMtNiAyLjU3LTYgNi4yYzAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0IDQuMDUtMy43IDYtNi44IDYtOS4xNHpNMTIgMmM0LjIgMCA4IDMuMjIgOCA4LjIgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25QaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNmgtNC44M2wtLjU5LjU5TDEyIDIwLjE3bC0xLjU5LTEuNTktLjU4LS41OEg1VjRoMTR2MTR6bS03LTdjMS42NSAwIDMtMS4zNSAzLTNzLTEuMzUtMy0zLTMtMyAxLjM1LTMgMyAxLjM1IDMgMyAzem0wLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNiA4LjU4YzAtMi41LTMuOTctMy41OC02LTMuNThzLTYgMS4wOC02IDMuNThWMTdoMTJ2LTEuNDJ6TTguNDggMTVjLjc0LS41MSAyLjIzLTEgMy41Mi0xczIuNzguNDkgMy41MiAxSDguNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXN0Q29udHJvbFJvZGVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCIxN1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC44NiAxNC45Ny0uOTMtLjg0Yy40OC0zLjQ1LTIuODctNi4wNC02LjA1LTQuODJBNS43OSA1Ljc5IDAgMCAwIDEyIDljLTQuMjYgMC01LjY1IDMuNTgtNS44OSA0Ljg1QTIuOTgzIDIuOTgzIDAgMCAxIDQgMTFjMC0xLjY2IDEuMzQtMyAzLTNoMi41YTIuNSAyLjUgMCAwIDAgMC01SDhjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMS41Yy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNUg3Yy0yLjc2IDAtNSAyLjI0LTUgNSAwIDIuNDQgMS43NiA0LjQ3IDQuMDcgNC45MUE1Ljk5OCA1Ljk5OCAwIDAgMCAxMiAyMWg2LjUzYzMuMTEgMCA0LjctMy44OSAyLjMzLTYuMDN6TTE4LjUzIDE5SDEyYy0xLjIxIDAtMi4zNC0uNTQtMy4xMS0xLjQ4LS43OC0uOTUtMS4wNi0yLjE2LS44LTMuNDFhMy45NSAzLjk1IDAgMCAxIDIuOTktMy4wMWMuMjItLjA1LjQ1LS4wNi42Ny0uMDctLjQ3LjcxLS43NSAxLjU1LS43NSAyLjQ3IDAgMS4yNC41IDIuMzcgMS4zMiAzLjE4bDEuNDEtMS40MWMtLjQ1LS40NS0uNzMtMS4wOC0uNzMtMS43NyAwLTEuNDIgMS4yLTIuNSAyLjUtMi41YTIuNSAyLjUgMCAwIDEgMi41IDIuNWMwIC40Ni0uMTMuODgtLjM1IDEuMjVsMS44NyAxLjdjLjMxLjI4LjQ4LjY3LjQ4IDEuMDkgMCAuOC0uNjYgMS40Ni0xLjQ3IDEuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXN0Q29udHJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE1di0yaC0zLjA3Yy0uMDUtLjM5LS4xMi0uNzctLjIyLTEuMTRsMi41OC0xLjQ5LTEtMS43M0wxNi45MiAxMGMtLjI4LS40OC0uNjItLjkxLS45OS0xLjI5LjEtLjU2LjItMS42OS0uNTgtMi44OUwxNyA0LjE3bC0xLjQxLTEuNDEtMS43MiAxLjcyYy0xLjY4LS44OS0zLjEtLjMzLTMuNzMgMEw4LjQxIDIuNzYgNyA0LjE3bDEuNjUgMS42NWMtLjc4IDEuMi0uNjggMi4zNC0uNTggMi44OS0uMzcuMzktLjcxLjgyLS45OSAxLjI5TDQuNzEgOC42M2wtMSAxLjczIDIuNTggMS40OWMtLjEuMzctLjE3Ljc1LS4yMiAxLjE0SDN2MmgzLjA3Yy4wNS4zOS4xMi43Ny4yMiAxLjE0bC0yLjU4IDEuNDkgMSAxLjczTDcuMDggMThjMS4wOCAxLjgxIDIuODggMyA0LjkyIDNzMy44NC0xLjE5IDQuOTItM2wyLjM3IDEuMzcgMS0xLjczLTIuNTgtMS40OWMuMS0uMzcuMTctLjc1LjIyLTEuMTRIMjF6bS05LTljLjg4IDAgMS42Mi41NyAxLjg4IDEuMzZDMTMuMjkgNy4xMyAxMi42NiA3IDEyIDdzLTEuMjkuMTMtMS44OC4zNkMxMC4zOCA2LjU3IDExLjEyIDYgMTIgNnptMCAxM2MtMi4yMSAwLTQtMi4yNC00LTVzMS43OS01IDQtNSA0IDIuMjQgNCA1LTEuNzkgNS00IDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDExaDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpbkRyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzEuOTMgMCA1IDEuNCA1IDUuMTUgMCAyLjE2LTEuNzIgNC42Ny01IDcuMzItMy4yOC0yLjY1LTUtNS4xNy01LTcuMzJDNyA1LjQgMTAuMDcgNCAxMiA0bTAtMkM4LjczIDIgNSA0LjQ2IDUgOS4xNWMwIDMuMTIgMi4zMyA2LjQxIDcgOS44NSA0LjY3LTMuNDQgNy02LjczIDctOS44NUMxOSA0LjQ2IDE1LjI3IDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDJhMiAyIDAgMSAwIDAtNHpNNSAyMGgxNHYySDV2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEyYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptNi0xLjhDMTggNi41NyAxNS4zNSA0IDEyIDRzLTYgMi41Ny02IDYuMmMwIDIuMzQgMS45NSA1LjQ0IDYgOS4xNCA0LjA1LTMuNyA2LTYuOCA2LTkuMTR6TTEyIDJjNC4yIDAgOCAzLjIyIDggOC4yIDAgMy4zMi0yLjY3IDcuMjUtOCAxMS44LTUuMzMtNC41NS04LTguNDgtOC0xMS44QzQgNS4yMiA3LjggMiAxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGx1bWJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS4yOCA0LjkzLTIuMTItMi4xMmMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBMMTEuNSA1LjY0bDIuMTIgMi4xMiAyLjEyLTIuMTIgMy41NCAzLjU0YTMuMDEyIDMuMDEyIDAgMCAwIDAtNC4yNXpNNS40OSAxMy43N2MuNTkuNTkgMS41NC41OSAyLjEyIDBsMi40Ny0yLjQ3LTIuMTItMi4xMy0yLjQ3IDIuNDdjLS41OS41OS0uNTkgMS41NCAwIDIuMTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjA0IDcuNzYtLjcxLjcxLS43MS43MUwxMC40NCA2Yy0uNTktLjYtMS41NC0uNi0yLjEyLS4wMWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDMuMTggMy4xOC0uNzEuNzEtNi4zNiA2LjM2Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzLjc4Ljc4IDIuMDUuNzggMi44MyAwTDE2LjQ1IDEyYS45OTYuOTk2IDAgMSAwIDEuNDEtMS40MWwtMi44Mi0yLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFpbHdheUFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExVjhoNy4yOUMxMS4xIDcuMzcgMTEgNi43IDExIDZINC40M2MuOS0uNzcgMy4yOC0xLjA4IDYuNjUtLjk4LjEtLjcuMy0xLjM3LjU5LTEuOTlDMi45NyAyLjY3IDIgNS4wMiAyIDd2OS41QzIgMTguNDMgMy41NyAyMCA1LjUgMjBMNCAyMXYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVYxM2MtMS45MSAwLTMuNjMtLjc2LTQuODktMkg0em0xMiA1LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41aC05Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVWMTNoMTJ2My41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLjUgOGgtMVY4aDF2MXptMC0yaC0xVjNoMXY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFtZW5EaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS42NiAxNGMtLjY2IDEuOTItMi4yNCAzLjU0LTQuNCA0LjM5bC0xLjI2LjVWMjBoLTR2LTEuMTFsLTEuMjctLjVjLTIuMTYtLjg1LTMuNzQtMi40Ny00LjQtNC4zOWgxNS4zM00yMiAyIDQgMy45OVYxMkgyYzAgMy42OSAyLjQ3IDYuODYgNiA4LjI1VjIyaDh2LTEuNzVjMy41My0xLjM5IDYtNC41NiA2LTguMjVIMTAuNVY4SDIyVjYuNUgxMC41VjQuNzhMMjIgMy41MVYyek04IDYuNVY1LjA2bDEtLjExVjYuNUg4em0tMi41IDBWNS4zNGwxLS4xMVY2LjVoLTF6TTggMTJWOGgxdjRIOHptLTIuNSAwVjhoMXY0aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFtcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyMWgtMlY2LjgzTDkuNDEgOC40MSA4IDdsNC00IDQgNC0xLjQxIDEuNDFMMTMgNi44M1Y5YzAgNC4yNyA0LjAzIDcuMTMgNiA4LjI3bC0xLjQ2IDEuNDZjLTEuOTEtMS4xNi0zLjQ0LTIuNTMtNC41NC00LjAyVjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFtcFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjFoMlY2LjgzbDEuNTkgMS41OUwxNiA3bC00LTQtNCA0IDEuNDEgMS40MUwxMSA2LjgzVjljMCA0LjI3LTQuMDMgNy4xMy02IDguMjdsMS40NiAxLjQ2QzguMzcgMTcuNTYgOS45IDE2LjE5IDExIDE0LjdWMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYXRlUmV2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg1LjE3bC0uNTkuNTktLjU4LjU4VjRoMTZ2MTJ6bS05LjUtMkgxOHYtMmgtNS41em0zLjg2LTUuODdjLjItLjIuMi0uNTEgMC0uNzFsLTEuNzctMS43N2MtLjItLjItLjUxLS4yLS43MSAwTDYgMTEuNTNWMTRoMi40N2w1Ljg5LTUuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVSb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNGgydjloLTJ6TTQgNGgydjE2SDR6TTExIDRoMnY0aC0yek0xMSAxMGgydjRoLTJ6TTExIDE2aDJ2NGgtMnpNMjIuNSAxNi40MSAyMS4wOSAxNSAxOSAxNy4wOSAxNi45MSAxNWwtMS40MSAxLjQxIDIuMDkgMi4wOS0yLjA5IDIuMDlMMTYuOTEgMjIgMTkgMTkuOTEgMjEuMDkgMjJsMS40MS0xLjQxLTIuMDktMi4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlc3RhdXJhbnRNZW51IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjEgMTMuMzQgMi44My0yLjgzTDMuOTEgMy41YTQuMDA4IDQuMDA4IDAgMCAwIDAgNS42Nmw0LjE5IDQuMTh6bTYuNzgtMS44MWMxLjUzLjcxIDMuNjguMjEgNS4yNy0xLjM4IDEuOTEtMS45MSAyLjI4LTQuNjUuODEtNi4xMi0xLjQ2LTEuNDYtNC4yLTEuMS02LjEyLjgxLTEuNTkgMS41OS0yLjA5IDMuNzQtMS4zOCA1LjI3TDMuNyAxOS44N2wxLjQxIDEuNDFMMTIgMTQuNDFsNi44OCA2Ljg4IDEuNDEtMS40MUwxMy40MSAxM2wxLjQ3LTEuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXN0YXVyYW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2djhoM3Y4aDJWMmMtMi43NiAwLTUgMi4yNC01IDR6bS01IDNIOVYySDd2N0g1VjJIM3Y3YzAgMi4yMSAxLjc5IDQgNCA0djloMnYtOWMyLjIxIDAgNC0xLjc5IDQtNFYyaC0ydjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3VuZGFib3V0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA4IDhBNiA2IDAgMCAxIDE2IDNjMy4zMSAwIDYgMi42OSA2IDYgMCAyLjk3LTIuMTYgNS40NC01IDUuOTJWMjFoLTJ2LTYuMDljMC0uOTguNzEtMS44IDEuNjctMS45N2EzLjk5OSAzLjk5OSAwIDEgMC00LjYxLTQuNjFjLS4xNy45Ni0uOTkgMS42Ny0xLjk3IDEuNjdINS44M2wxLjU5IDEuNTlMNiAxMyAyIDlsNC00IDEuNDEgMS40MUw1LjgzIDhoNC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdW5kYWJvdXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDhDMTMuNDQgNS4xNiAxMC45NyAzIDggMyA0LjY5IDMgMiA1LjY5IDIgOWMwIDIuOTcgMi4xNiA1LjQ0IDUgNS45MlYyMWgydi02LjA5YzAtLjk4LS43MS0xLjgtMS42Ny0xLjk3YTMuOTk5IDMuOTk5IDAgMSAxIDQuNjEtNC42MWMuMTcuOTYuOTkgMS42NyAxLjk3IDEuNjdoNC4yNmwtMS41OSAxLjU5TDE4IDEzbDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDhoLTQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3V0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE1LjE4VjdjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDR2MTBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yVjguODJDOC4xNiA4LjQgOSA3LjMgOSA2YzAtMS42Ni0xLjM0LTMtMy0zUzMgNC4zNCAzIDZjMCAxLjMuODQgMi40IDIgMi44MlYxN2MwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00VjdjMC0xLjEuOS0yIDItMnMyIC45IDIgMnY4LjE4QTIuOTk2IDIuOTk2IDAgMCAwIDE4IDIxYzEuNjYgMCAzLTEuMzQgMy0zIDAtMS4zLS44NC0yLjQtMi0yLjgyek02IDdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTIgMTJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJ1bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41NCA4Ljk3Yy0uMjMtLjQ3LS43Ni0uNzEtMS4yNi0uNTNMOSA5LjY1VjEyaDF2LTEuNjVsMS41NC0uNTctLjk2IDQuODktMi43OC0uNTctLjIuOTggMy43Ni43Ny41Mi0yLjY0TDEzIDE0LjQyVjE4aDF2LTMuOTdsLTEuMzItMS40NC40MS0yLjM1QzEzLjk5IDExLjQ2IDE1LjMgMTIgMTYgMTJ2LTFjLS40MSAwLTEuNjMtLjMzLTIuNDYtMi4wM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiN1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2FmZXR5Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M3YtNC43bDYtMi4yNSA2IDIuMjV2NC43ek0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDExLjUgMTIuMlY5aDF2Mi43OWwxLjg1IDEuODUtLjcuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYWlsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTMuNVYyTDMgMTMuNWg4em0tMi0ySDYuODNMOSA4LjM4djMuMTJ6bTEyIDJDMjEgNi41IDE0LjUgMSAxMi41IDFjMCAwIDEgMyAxIDYuNXMtMSA2LTEgNkgyMXptLTUuNjItOC4yNmMxLjQyIDEuNTIgMi44OCAzLjcyIDMuNDEgNi4yNmgtMy42OGMuMjEtMS4xLjM5LTIuNDYuMzktNCAwLS43OS0uMDUtMS41NS0uMTItMi4yNnpNMjIgMTVIMmE2LjIzMyA2LjIzMyAwIDAgMCAyLjMzIDMuNzNjLjY1LS4yNyAxLjIyLS43MiAxLjY3LTEuMjMuNzMuODQgMS44IDEuNSAzIDEuNXMyLjI3LS42NiAzLTEuNWMuNzMuODQgMS44IDEuNSAzIDEuNXMyLjI2LS42NiAzLTEuNWMuNDUuNTEgMS4wMi45NiAxLjY3IDEuMjMgMS4xNy0uODkgMi4wMi0yLjIgMi4zMy0zLjczem0wIDh2LTJoLTFjLTEuMDQgMC0yLjA4LS4zNS0zLTEtMS44MyAxLjMtNC4xNyAxLjMtNiAwLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0uOTEuNjUtMS45NiAxLTMgMUgydjJoMWMxLjAzIDAgMi4wNS0uMjUgMy0uNzUgMS44OSAxIDQuMTEgMSA2IDAgMS44OSAxIDQuMTEgMSA2IDAgLjk1LjUgMS45Ny43NSAzIC43NWgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F0ZWxsaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTguNTcgNkg2djIuNThjMS40MiAwIDIuNTctMS4xNiAyLjU3LTIuNTh6TTEyIDZoLTEuNzFjMCAyLjM2LTEuOTIgNC4yOS00LjI5IDQuMjlWMTJjMy4zMiAwIDYtMi42OSA2LTZ6bTIuMTQgNS44Ni0zIDMuODdMOSAxMy4xNSA2IDE3aDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuUm90YXRpb25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm00IDcuNTkgNS01Yy43OC0uNzggMi4wNS0uNzggMi44MyAwTDIwLjI0IDExaC0yLjgzTDEwLjQgNCA1LjQxIDlIOHYySDJWNWgydjIuNTl6TTIwIDE5aDJ2LTZoLTZ2MmgyLjU5bC00Ljk5IDUtNy4wMS03SDMuNzZsOC40MSA4LjQxYy43OC43OCAyLjA1Ljc4IDIuODMgMGw1LTVWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXRNZWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuMDUgMTcuNTYtMTcuOTcuOTRMMyAxN2wxNy45OC0uOTQuMDcgMS41ek0yMSAxOS40OEgzdjEuNWgxOHYtMS41ek0yMyAxM1Y0YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjljMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnptLTIgMEgzVjRoMTh2OXptLTEtN2MtMS42OCAwLTMuMDQuOTgtMy4yMSAyLjIzLS42NC0uNzMtMi43My0yLjczLTYuNTQtMi43My00LjY3IDAtNi43NSAzLTYuNzUgM3MyLjA4IDMgNi43NSAzYzMuODEgMCA1LjktMiA2LjU0LTIuNzNDMTYuOTYgMTAuMDIgMTguMzIgMTEgMjAgMTFWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25wb3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTBoNWwzLTMtMy0zaC01VjJoLTJ2Mkg0djZoN3YySDZsLTMgMyAzIDNoNXY0aDJ2LTRoN3YtNmgtN3YtMnpNNiA2aDExLjE3bDEgMS0xIDFINlY2em0xMiAxMEg2LjgzbC0xLTEgMS0xSDE4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbm93bW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTdjMCAuNTUtLjQ1IDEtMSAxaC0uMTdsLTIuMi0yLjJDMjAuNTggMTUuMzcgMjIgMTQuNCAyMiAxM2MwLTEtOC04LTgtOGgtM3YyaDIuMjVsLjguNzJMMTEgMTAgMiA5bC0yIDQgNC41NCAxLjM2LTMuNDkgMS44OEMtLjc3IDE3LjIyLS4wNyAyMCAyIDIwaDZjMi4yMSAwIDQtMS43OSA0LTRoNGwyIDJoLTN2Mmg2YzEuNjYgMCAzLTEuMzQgMy0zaC0yek04IDE4SDJsNS4yNS0yLjgzTDEwIDE2YTIgMiAwIDAgMS0yIDJ6bTktNGgtNi43bC03LjQ1LTIuMjMuMzEtLjYyIDguNDQuODUgMy45My0yLjk0czMuNzcgMy40NCA0LjI3IDQuMTRjMCAwLTEuMS44LTIuOC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU29zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSA3aC0zYy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDhoLTNWOWgzdjZ6TTEgMTVoNHYtMkgzYy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNHYySDN2MmgyYzEuMSAwIDIgLjkgMiAydjJjMCAxLjEtLjkgMi0yIDJIMXYtMnptMTYgMGg0di0yaC0yYy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNHYyaC00djJoMmMxLjEgMCAyIC45IDIgMnYyYzAgMS4xLS45IDItMiAyaC00di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU291cEtpdGNoZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQgN2MtLjM0LjU1LS40Ljk3LS40IDEuMzhDNiA5LjE1IDcgMTEgNyAxMmMwIC45NS0uNCAxLjUtLjQgMS41SDUuMXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgxLjV6bTUgMGMtLjM0LjU1LS40Ljk3LS40IDEuMzggMCAuNzcgMSAyLjYyIDEgMy42MiAwIC45NS0uNCAxLjUtLjQgMS41aDEuNXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgtMS41ek04LjE1IDdjLS4zNC41NS0uNC45Ny0uNCAxLjM4IDAgLjc3IDEgMi42MyAxIDMuNjIgMCAuOTUtLjQgMS41LS40IDEuNWgxLjVzLjQtLjU1LjQtMS41YzAtMS0xLTIuODUtMS0zLjYyIDAtLjQxLjA2LS44My40LTEuMzhoLTEuNXpNMTguNiAyYy0xLjU0IDAtMi44MSAxLjE2LTIuOTggMi42NUwxNC41MyAxNUg0LjAxYy0uNiAwLTEuMDkuNTMtMSAxLjEzQzMuNTMgMTkuNDYgNi4zOSAyMiA5Ljc1IDIyYzMuNDggMCA2LjM0LTIuNzMgNi43MS02LjIzTDE3LjYxIDQuOWMuMDUtLjUxLjQ3LS45Ljk5LS45LjU1IDAgMSAuNDUgMSAxIDAgLjMtLjEgMS4yNS0uMSAxLjI1bDEuOTcuMjVzLjEzLTEuMDYuMTMtMS41YzAtMS42NS0xLjM1LTMtMy0zek05Ljc1IDIwYy0xLjk0IDAtMy42Ny0xLjIzLTQuNDMtM2g4Ljc5Yy0uNzIgMS43OC0yLjQyIDMtNC4zNiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhZGl1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNSAzIDdWM2w0IDJ6bTExLTJ2NGw0LTItNC0yem0tNy0xdjRsNC0yLTQtMnptMiAxNmgtMnY0Yy01LjA1LS4xNS05LTEuNDQtOS0zdi05YzAtMS42NiA0LjQ4LTMgMTAtM3MxMCAxLjM0IDEwIDN2OWMwIDEuNTYtMy45NSAyLjg1LTkgM3YtNHptLTgtNy45NmMxLjM4LjQ5IDMuNzcuOTYgNyAuOTZzNS42Mi0uNDcgNy0uOTZDMTkgOS44NiAxNi4yMiA5IDEyIDlzLTcgLjg2LTcgMS4wNHptMTUgMS43NmMtMS44Mi43My00LjczIDEuMi04IDEuMnMtNi4xOC0uNDctOC0xLjJ2Ni43OGMuNjEuNDEgMi4zNiAxLjAxIDUgMS4yOFYxNmg2djMuODZjMi42NC0uMjcgNC4zOS0uODcgNS0xLjI4VjExLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9yZU1hbGxEaXJlY3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjM2IDkgLjYgM0g1LjA0bC42LTNoMTIuNzJNMjAgNEg0djJoMTZWNHptMCAzSDRsLTEgNXYyaDF2NmgxMHYtNmg0djZoMnYtNmgxdi0ybC0xLTV6TTYgMTh2LTRoNnY0SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdHJhaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDYuODMgOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzVjIxaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RyZWV0dmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNTYgMTQuMzNjLS4zNC4yNy0uNTYuNy0uNTYgMS4xN1YyMWg3YzEuMSAwIDItLjkgMi0ydi01Ljk4Yy0uOTQtLjMzLTEuOTUtLjUyLTMtLjUyLTIuMDMgMC0zLjkzLjctNS40NCAxLjgzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDZjMC0xLjA4LjI3LTIuMS43NC0zSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgLjU1LjIzIDEuMDUuNTkgMS40MWw5LjgyLTkuODJBNi40MzUgNi40MzUgMCAwIDEgMTEuNSA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3Vid2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44IDIuOEMxNiAyLjA5IDEzLjg2IDIgMTIgMnMtNCAuMDktNS44LjhDMy41MyAzLjg0IDIgNi4wNSAyIDguODZWMjJoMjBWOC44NmMwLTIuODEtMS41My01LjAyLTQuMi02LjA2ek05LjE3IDIwbDEuNS0xLjVoMi42NmwxLjUgMS41SDkuMTd6bS0yLjE2LTZWOWgxMHY1aC0xMHptOS40OSAyYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6bS04LTFjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNMjAgMjBoLTMuNXYtLjM4bC0xLjE1LTEuMTZBMi45NzkgMi45NzkgMCAwIDAgMTggMTUuNVY5YzAtMi42My0zLTMtNi0zcy02IC4zNy02IDN2Ni41YzAgMS41NCAxLjE2IDIuNzkgMi42NSAyLjk2TDcuNSAxOS42MlYyMEg0VjguODZjMC0yIDEuMDEtMy40NSAyLjkzLTQuMkM4LjQxIDQuMDggMTAuMzIgNCAxMiA0czMuNTkuMDggNS4wNy42NmMxLjkyLjc1IDIuOTMgMi4yIDIuOTMgNC4yVjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3luYWdvZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGMtMS42NiAwLTMgMS4zNC0zIDN2LjI5TDEyIDMgNyA3LjI5VjdjMC0xLjY2LTEuMzQtMy0zLTNTMSA1LjM0IDEgN3YxNGgxMHYtNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NWgxMFY3YzAtMS42Ni0xLjM0LTMtMy0zem0wIDJjLjU1IDAgMSAuNDUgMSAxdjFoLTJWN2MwLS41NS40NS0xIDEtMXpNNCA2Yy41NSAwIDEgLjQ1IDEgMXYxSDNWN2MwLS41NS40NS0xIDEtMXpNMyAxOXYtOWgydjlIM3ptMTQgMGgtMnYtM2MwLTEuNjUtMS4zNS0zLTMtM3MtMyAxLjM1LTMgM3YzSDdWOS45Mmw1LTQuMjkgNSA0LjI5VjE5em0yIDB2LTloMnY5aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFrZW91dERpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcuNzkgMTgtLjUxLTdoOS40NmwtLjUxIDdINy43OXpNOS44MyA1aDQuMzNsMi44IDIuNzNMMTYuODcgOUg3LjEybC0uMDktMS4yN0w5LjgzIDV6TTIyIDcuNDZsLTEuNDEtMS40MUwxOSA3LjYzbC4wMy0uNTZMMTQuOTggM0g5LjAyTDQuOTcgNy4wN2wuMDMuNS0xLjU5LTEuNTZMMiA3LjQ0bDMuMjMgMy4xMS43IDkuNDVoMTIuMTRsLjctOS40NEwyMiA3LjQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGF4aUFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCIxNS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiMTUuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzdjVINHYtNWgxNGMtMS45MSAwLTMuNjMtLjc2LTQuODktMmgtOC4zbDEuMDQtM2g1LjQ0QzExLjEgNy4zNyAxMSA2LjcgMTEgNnMuMS0xLjM3LjI5LTJIOHYySDUuNWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMiAxM3Y4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLS4wOS0uMjdjLS42MS4xNy0xLjI1LjI3LTEuOTEuMjd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDFjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0uNSA4aC0xVjhoMXYxem0wLTJoLTFWM2gxdjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZW1wbGVCdWRkaGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDkuMDJjMCAxLjA5LS44OSAxLjk4LTEuOTggMS45OEgxOFY4Ljg2YzEuNzItLjQ0IDMtMS45OSAzLTMuODRWNWwtMiAuMDJDMTkgNi4xMSAxOC4xMSA3IDE3LjAyIDdoLS41MkwxMiAxIDcuNSA3aC0uNTJDNS44OSA3IDUgNi4xMSA1IDUuMDJIM2MwIDEuODYgMS4yOCAzLjQgMyAzLjg0VjExSDQuOThDMy44OSAxMSAzIDEwLjExIDMgOS4wMkgxYzAgMS44NiAxLjI4IDMuNCAzIDMuODRWMjJoN3YtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NGg3di05LjE0YzEuNzItLjQ0IDMtMS45OSAzLTMuODRWOWwtMiAuMDJ6bS05LTQuNjlMMTQgN2gtNGwyLTIuNjd6TTggOWg4djJIOFY5em0xMCAxMWgtM3YtMmMwLTEuNjUtMS4zNS0zLTMtM3MtMyAxLjM1LTMgM3YySDZ2LTdoMTJ2N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRlbXBsZUhpbmR1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTF2MmgtMkwxNSAzVjFoLTJ2MmgtMi4wM1YxaC0ydjIuMTJMNiAxM0g0di0ySDJ2MTFoOXYtNWgydjVoOVYxMWgtMnptLTQuNjkgMEg4LjY5bC42LTJoNS40MmwuNiAyem0tMS4yLTRIOS44OWwuNi0yaDMuMDJsLjYgMnpNMjAgMjBoLTV2LTVIOXY1SDR2LTVoMy40OWwuNi0yaDcuODJsLjYgMkgyMHY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGVycmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi00LjIyIDUuNjMgMS4yNSAxLjY3TDE0IDkuMzMgMTkgMTZoLTguNDZsLTQuMDEtNS4zN0wxIDE4aDIyTDE0IDZ6TTUgMTZsMS41Mi0yLjAzTDguMDQgMTZINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRoZWF0ZXJDb21lZHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuOTkgOWMtMS4zOCAwLTIuNS44NC0yLjUgMS44OGg1YzAtMS4wNC0xLjEyLTEuODgtMi41LTEuODh6TTEgMTZjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNlY5SDF2N3ptMi01aDh2NWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNHYtNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMnY1LjVoMlY0aDh2NWMwIDIuMjEtMS43OSA0LTQgNC0uOTUgMC0xLjgxLS4zNS0yLjUtLjl2Mi4zNWMuNzYuMzUgMS42MS41NSAyLjUuNTUgMy4zMSAwIDYtMi42OSA2LTZWMkgxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI1XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxMy41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTcuODhjMS4zOCAwIDIuNS0uODQgMi41LTEuODhoLTVjMCAxLjA0IDEuMTIgMS44OCAyLjUgMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRpcmVSZXBhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4YTEuMDAzIDEuMDAzIDAgMCAxLS43MS0xLjcxYy40LS40IDIuNDYtMS4wNCAyLjQ2LTEuMDRzLS42NCAyLjA2LTEuMDQgMi40NmMtLjE4LjE4LS40My4yOS0uNzEuMjl6bTEgNXY1YzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zdi0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNWMwLTEuMS45LTIgMi0yaDZjMS4xIDAgMiAuOSAyIDJ2OC4xN0EzLjAwOSAzLjAwOSAwIDAgMSAxNiAxNnYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtNWgtMXYtMS40MmMtMS43Ny0uNzctMy0yLjUzLTMtNC41OCAwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMi4wNS0xLjIzIDMuODEtMyA0LjU4VjEzaC0xem0yLTZjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDMgMS4zNCAzIDMgMyAzLTEuMzQgMy0zek0xMCA3IDggOVY2LjE3TDkuMTcgNUg0LjgzTDYgNi4xN1Y5TDQgN3YyLjE3bDIgMlYxNGwtMi0ydjIuMTdsMiAyVjE5bC0yLTJ2Mmg2di0ybC0yIDJ2LTIuODNsMi0yVjEybC0yIDJ2LTIuODNsMi0yVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFmZmljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMGgtM1Y4Ljg2YzEuNzItLjQ1IDMtMiAzLTMuODZoLTNWNGMwLS41NS0uNDUtMS0xLTFIOGMtLjU1IDAtMSAuNDUtMSAxdjFINGMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYxMEg0YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjE1SDRjMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMjBjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF2LTEuMTRjMS43Mi0uNDUgMy0yIDMtMy44NmgtM3YtMS4xNGMxLjcyLS40NSAzLTIgMy0zLjg2em0tNSA5SDlWNWg2djE0em0tMy0xYy44MyAwIDEuNS0uNjcgMS41LTEuNVMxMi44MyAxNSAxMiAxNXMtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6bTAtNC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek0xMiA5Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxMi44MyA2IDEyIDZzLTEuNS42Ny0xLjUgMS41UzExLjE3IDkgMTIgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgybDItMmg0bDIgMmgydi0uNUwxNi41IDE5YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjZjMC0zLjUtNC00LTgtNHptMCAyYzMuNTEgMCA0Ljk2LjQ4IDUuNTcgMUg2LjQzYy42MS0uNTIgMi4wNi0xIDUuNTctMXpNNiA3aDV2M0g2Vjd6bTEyIDguNWMwIC44My0uNjcgMS41LTEuNSAxLjVoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjV6bTAtNS41aC01VjdoNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNSAuNzUtMS41SDE3VjJIN3YxLjVoNC43NUwxMSA1Yy0zLjEzLjA5LTYgLjczLTYgMy41VjE3YzAgMS41IDEuMTEgMi43MyAyLjU1IDIuOTVMNiAyMS41di41aDJsMi0yaDRsMiAyaDJ2LS41bC0xLjU1LTEuNTVoLS4wMS4wMUMxNy44OSAxOS43MyAxOSAxOC41IDE5IDE3VjguNWMwLTIuNzctMi44Ny0zLjQxLTYtMy41em0tMS45NyAyaDEuOTRjMi43NS4wOCAzLjYyLjU4IDMuOSAxSDcuMTNjLjI4LS40MiAxLjE1LS45MiAzLjktMXptLS4xOCAxMC45NUg3Ljc0QS45NzQuOTc0IDAgMCAxIDcgMTd2LTFoMy44OWMtLjI0LjI3LS4zOS42MS0uMzkgMSAwIC4zNi4xMy42OS4zNS45NXpNMTcgMTdjMCAuNDUtLjMuODQtLjc0Ljk1aC0zLjExYy4yMi0uMjYuMzUtLjU5LjM1LS45NSAwLS4zOS0uMTUtLjczLS4zOS0xSDE3djF6bTAtM0g3di00aDEwdjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFuc2ZlcldpdGhpbkFTdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi40OSAxNS41di0xLjc1TDE0IDE2LjI1bDIuNDkgMi41VjE3SDIydi0xLjVoLTUuNTF6bTMuMDIgNC4yNUgxNHYxLjVoNS41MVYyM0wyMiAyMC41IDE5LjUxIDE4djEuNzV6TTkuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek01Ljc1IDguOSAzIDIzaDIuMWwxLjc1LThMOSAxN3Y2aDJ2LTcuNTVMOC45NSAxMy40bC42LTNDMTAuODUgMTIgMTIuOCAxMyAxNSAxM3YtMmMtMS44NSAwLTMuNDUtMS00LjM1LTIuNDVsLS45NS0xLjZDOS4zNSA2LjM1IDguNyA2IDggNmMtLjI1IDAtLjUuMDUtLjc1LjE1TDIgOC4zVjEzaDJWOS42NWwxLjc1LS43NVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhbnNpdEVudGVyZXhpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMThINlY4aDN2NC43N0wxNS45OCA2IDE4IDguMDMgMTEuMTUgMTVIMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyaXBPcmlnaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTJDMiA2LjQ4IDYuNDggMiAxMiAyczEwIDQuNDggMTAgMTAtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJ6bTEwIDZjMy4zMSAwIDYtMi42OSA2LTZzLTIuNjktNi02LTYtNiAyLjY5LTYgNiAyLjY5IDYgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVybkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02LjgzIDExIDEuNTkgMS41OUw3IDE0bC00LTQgNC00IDEuNDEgMS40MUw2LjgzIDlIMTVjMS4xIDAgMiAuOSAyIDJ2OWgtMnYtOUg2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMTcgMTEtMS41OSAxLjU5TDE3IDE0bDQtNC00LTQtMS40MSAxLjQxTDE3LjE3IDlIOWMtMS4xIDAtMiAuOS0yIDJ2OWgydi05aDguMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdXJuU2hhcnBMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2LjgzIDQuNDEgOC40MSAzIDdsNC00IDQgNC0xLjQxIDEuNDFMOCA2LjgzVjEzaDhjMS4xIDAgMiAuOSAyIDJ2NmgtMnYtNkg4Yy0xLjEgMC0yLS45LTItMlY2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVyblNoYXJwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA2LjgzIDEuNTkgMS41OUwyMSA3bC00LTQtNCA0IDEuNDEgMS40MUwxNiA2LjgzVjEzSDhjLTEuMSAwLTIgLjktMiAydjZoMnYtNmg4YzEuMSAwIDItLjkgMi0yVjYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdXJuU2xpZ2h0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjY2IDZWNEg2djUuNjZoMlY3LjQxbDUgNVYyMGgydi03LjU4YzAtLjUzLS4yMS0xLjA0LS41OS0xLjQxbC01LTVoMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVR1cm5TbGlnaHRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjM0IDZWNEgxOHY1LjY2aC0yVjcuNDFsLTUgNVYyMEg5di03LjU4YzAtLjUzLjIxLTEuMDQuNTktMS40MWw1LTVoLTIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUd29XaGVlbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xNyAxMUg0aC4xN205LjI0LTZIOXYyaDMuNTlsMiAySDExbC00IDItMi0ySDB2Mmg0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRsMiAyaDNsMy40OS02LjEgMS4wMSAxLjAxYy0uOTEuNzMtMS41IDEuODQtMS41IDMuMDkgMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNC0xLjc5LTQtNC00Yy0uMTggMC0uMzYuMDMtLjUzLjA1TDE3LjQxIDlIMjBWNmwtMy43MiAxLjg2TDEzLjQxIDV6TTIwIDE3Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNNCAxN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVVHVybkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5djEyaC0yVjljMC0yLjIxLTEuNzktNC00LTRTOCA2Ljc5IDggOXY0LjE3bDEuNTktMS41OUwxMSAxM2wtNCA0LTQtNCAxLjQxLTEuNDFMNiAxMy4xN1Y5YzAtMy4zMSAyLjY5LTYgNi02czYgMi42OSA2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA5djEyaDJWOWMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0djQuMTdsLTEuNTktMS41OUwxMyAxM2w0IDQgNC00LTEuNDEtMS40MUwxOCAxMy4xN1Y5YzAtMy4zMS0yLjY5LTYtNi02UzYgNS42OSA2IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2x1bnRlZXJBY3RpdmlzbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEzYzMuMDktMi44MSA2LTUuNDQgNi03LjdDMjIgMy40NSAyMC41NSAyIDE4LjcgMmMtMS4wNCAwLTIuMDUuNDktMi43IDEuMjVDMTUuMzQgMi40OSAxNC4zNCAyIDEzLjMgMiAxMS40NSAyIDEwIDMuNDUgMTAgNS4zYzAgMi4yNiAyLjkxIDQuODkgNiA3Ljd6bS0yLjctOWMuNDQgMCAuODkuMjEgMS4xOC41NUwxNiA2LjM0bDEuNTItMS43OWMuMjktLjM0Ljc0LS41NSAxLjE4LS41NS43NCAwIDEuMy41NiAxLjMgMS4zIDAgMS4xMi0yLjA0IDMuMTctNCA0Ljk5LTEuOTYtMS44Mi00LTMuODgtNC00Ljk5IDAtLjc0LjU2LTEuMyAxLjMtMS4zek0xOSAxNmgtMmMwLTEuMi0uNzUtMi4yOC0xLjg3LTIuN0w4Ljk3IDExSDF2MTFoNnYtMS40NGw3IDEuOTQgOC0yLjV2LTFjMC0xLjY2LTEuMzQtMy0zLTN6TTMgMjB2LTdoMnY3SDN6bTEwLjk3LjQxTDcgMTguNDhWMTNoMS42MWw1LjgyIDIuMTdjLjM0LjEzLjU3LjQ2LjU3LjgzIDAgMC0xLjk5LS4wNS0yLjMtLjE1bC0yLjM4LS43OS0uNjMgMS45IDIuMzguNzljLjUxLjE3IDEuMDQuMjYgMS41OC4yNkgxOWMuMzkgMCAuNzQuMjMuOS41NmwtNS45MyAxLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2FyZWhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC4zNVYxOWgtMnYtOEg2djhINFY4LjM1bDgtMy4yIDggMy4yek0yMiAyMVY3TDEyIDMgMiA3djE0aDZ2LThoOHY4aDZ6bS0xMS0ySDl2Mmgydi0yem0yLTNoLTJ2Mmgydi0yem0yIDNoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2luZUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM3Y2YzAgMi45NyAyLjE2IDUuNDMgNSA1LjkxVjE5SDh2Mmg4di0yaC0zdi00LjA5YzIuODQtLjQ4IDUtMi45NCA1LTUuOTFWM0g2em02IDEwYy0xLjg2IDAtMy40MS0xLjI4LTMuODYtM2g3LjcyYy0uNDUgMS43Mi0yIDMtMy44NiAzem00LTVIOFY1aDh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdyb25nTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMXYuMmMwIDIuMzQtMS45NSA1LjQ0LTYgOS4xNC00LjA1LTMuNy02LTYuNzktNi05LjE0QzYgNy41NyA4LjY1IDUgMTIgNWMuMzQgMCAuNjguMDMgMSAuMDhWMy4wNmMtLjMzLS4wNC0uNjYtLjA2LTEtLjA2LTQuMiAwLTggMy4yMi04IDguMiAwIDMuMzIgMi42NyA3LjI1IDggMTEuOCA1LjMzLTQuNTUgOC04LjQ4IDgtMTEuOFYxMWgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjExXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjU0IDIuODgtMS40Mi0xLjQyTDE5IDMuNTlsLTIuMTItMi4xMy0xLjQyIDEuNDJMMTcuNTkgNWwtMi4xMyAyLjEyIDEuNDIgMS40MkwxOSA2LjQxbDIuMTIgMi4xMyAxLjQyLTEuNDJMMjAuNDEgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVpvb21Jbk1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOVYzSDd2Mi41OUwzLjkxIDIuNSAyLjUgMy45MSA1LjU5IDdIM3YyaDZ6bTEyIDBWN2gtMi41OWwzLjA5LTMuMDktMS40MS0xLjQxTDE3IDUuNTlWM2gtMnY2aDZ6TTMgMTV2MmgyLjU5TDIuNSAyMC4wOWwxLjQxIDEuNDFMNyAxOC40MVYyMWgydi02SDN6bTEyIDB2Nmgydi0yLjU5bDMuMDkgMy4wOSAxLjQxLTEuNDFMMTguNDEgMTdIMjF2LTJoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVab29tT3V0TWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSAzIDIuMyAyLjMtMi44OSAyLjg3IDEuNDIgMS40MkwxOC43IDYuNyAyMSA5VjNoLTZ6TTMgOWwyLjMtMi4zIDIuODcgMi44OSAxLjQyLTEuNDJMNi43IDUuMyA5IDNIM3Y2em02IDEyLTIuMy0yLjMgMi44OS0yLjg3LTEuNDItMS40Mkw1LjMgMTcuMyAzIDE1djZoNnptMTItNi0yLjMgMi4zLTIuODctMi44OS0xLjQyIDEuNDIgMi44OSAyLjg3TDE1IDIxaDZ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRIb21lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0SDV2NUgzdi02Ljk3bDUtMy41NyA1IDMuNTd2MS4wOGMuNTctLjU5IDEuMjUtMS4wNyAyLTEuNDJWMTFMOCA2bC03IDV2MTBoNnYtNWgydjVoMi42OGMtLjQzLS45MS0uNjgtMS45Mi0uNjgtM3YtNHpNMTcgN2gydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDEzLjExVjNIMTB2MS45N2wyIDEuNDNWNWg5djYuNjhjLjc1LjM2IDEuNDMuODQgMiAxLjQzek0yMyAxOGMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNSAyLjI0IDUgNSA1IDUtMi4yNCA1LTV6bS01LjUgM3YtMi41SDE1di0xaDIuNVYxNWgxdjIuNUgyMXYxaC0yLjVWMjFoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcHBTZXR0aW5nc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTcgMjBoMTB2MUg3ek03IDNoMTB2MUg3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS44MSAxMi43NC0uODItLjYzdi0uMjJsLjgtLjYzYy4xNi0uMTIuMi0uMzQuMS0uNTFsLS44NS0xLjQ4YS4zOTUuMzk1IDAgMCAwLS4zNS0uMmMtLjA1IDAtLjEuMDEtLjE1LjAzbC0uOTUuMzhjLS4wOC0uMDUtLjExLS4wNy0uMTktLjExbC0uMTUtMS4wMWEuNDA4LjQwOCAwIDAgMC0uNC0uMzZoLTEuNzFjLS4yIDAtLjM3LjE1LS40LjM0bC0uMTQgMS4wMWMtLjAzLjAyLS4wNy4wMy0uMS4wNWwtLjA5LjA2LS45NS0uMzhhLjQwMS40MDEgMCAwIDAtLjUuMTdsLS44NSAxLjQ4Yy0uMS4xNy0uMDYuMzkuMS41MWwuOC42M3YuMjNsLS44LjYzYS4zOS4zOSAwIDAgMC0uMS41MWwuODUgMS40OGMuMDcuMTMuMjEuMi4zNS4yLjA1IDAgLjEtLjAxLjE1LS4wM2wuOTUtLjM3Yy4wOC4wNS4xMi4wNy4yLjExbC4xNSAxLjAxYy4wMy4yLjIuMzQuNC4zNGgxLjcxYy4yIDAgLjM3LS4xNS40LS4zNGwuMTUtMS4wMWMuMDMtLjAyLjA3LS4wMy4xLS4wNWwuMDktLjA2Ljk1LjM4YS40MDEuNDAxIDAgMCAwIC41LS4xN2wuODUtMS40OGEuMzkuMzkgMCAwIDAtLjEtLjUxek0xOCAxMy41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNMTcgMThIN1Y2aDEwdjFoMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2MXpNNyAzaDEwdjFIN1Yzem0xMCAxOEg3di0xaDEwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcHBzT3V0YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA4aDRWNEg0djR6bTYgMTJoNHYtNGgtNHY0em0tNiAwaDR2LTRINHY0em0wLTZoNHYtNEg0djR6bTYgMGg0di00aC00djR6bTYgNmg0di00aC00djR6bTMtMjBjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0uNSA4aC0xVjdoMXYxem0wLTJoLTFWMmgxdjR6TTE2IDE0aDR2LTIuMDdjLS4zMy4wNS0uNjYuMDctMSAuMDctMS4wNyAwLTIuMDktLjI0LTMtLjY4VjE0ek0xMCA0djRoMi42OGMtLjQ0LS45MS0uNjgtMS45My0uNjgtMyAwLS4zNC4wMi0uNjcuMDctMUgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOGg0VjRINHY0em02IDEyaDR2LTRoLTR2NHptLTYgMGg0di00SDR2NHptMC02aDR2LTRINHY0em02IDBoNHYtNGgtNHY0em02LTEwdjRoNFY0aC00em0tNiA0aDRWNGgtNHY0em02IDZoNHYtNGgtNHY0em0wIDZoNHYtNGgtNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dCYWNrSW9zTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNzcgMy43NyAxNiAyIDYgMTJsMTAgMTAgMS43Ny0xLjc3TDkuNTQgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0JhY2tJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNTEgMy44NyAxNS43MyAyLjEgNS44NCAxMmw5LjkgOS45IDEuNzctMS43N0w5LjM4IDEybDguMTMtOC4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93QmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTFINy44M2w1LjU5LTUuNTlMMTIgNGwtOCA4IDggOCAxLjQxLTEuNDFMNy44MyAxM0gyMHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93RG93bndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwIDEyLTEuNDEtMS40MUwxMyAxNi4xN1Y0aC0ydjEyLjE3bC01LjU4LTUuNTlMNCAxMmw4IDggOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dEcm9wRG93bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDEzLTQtNGg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dEcm9wRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyAxMCA1IDUgNS01SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0Ryb3BVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyAxNCA1LTUgNSA1SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0ZvcndhcmRJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjMgMjAuMjMgOCAyMmwxMC0xMEw4IDIgNi4yMyAzLjc3IDE0LjQ2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA0LTEuNDEgMS40MUwxNi4xNyAxMUg0djJoMTIuMTdsLTUuNTggNS41OUwxMiAyMGw4LTgtOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAwdjI0SDBWMGgyNHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA3LTUgNSA1IDVWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE3IDUtNS01LTV2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd1Vwd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNCAxMiAxLjQxIDEuNDFMMTEgNy44M1YyMGgyVjcuODNsNS41OCA1LjU5TDIwIDEybC04LTgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaXN0YW50RGlyZWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxQzUuOSAxIDEgNS45IDEgMTJzNC45IDExIDExIDExIDExLTQuOSAxMS0xMVMxOC4xIDEgMTIgMXptMCAyMGMtNC45OSAwLTktNC4wMS05LTlzNC4wMS05IDktOSA5IDQuMDEgOSA5LTQuMDEgOS05IDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjczIDExLjQyIDEyLjU0IDQuMmMtLjM2LS4yNy0uOC0uMjctMS4xNSAwTDQuMiAxMS40MmMtLjI3LjM2LS4yNy44IDAgMS4xNmw3LjE5IDcuMjJjLjM2LjI3LjguMjcgMS4xNSAwbDcuMTktNy4yMmMuMzYtLjM2LjM2LS44OSAwLTEuMTZ6TTEzLjUgMTQuNWwtMS40MS0xLjQxTDEzLjE3IDEySDEwdjNIOHYtNGMwLS42LjQtMSAxLTFoNC4xN2wtMS4wOS0xLjA5TDEzLjUgNy41IDE3IDExbC0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtcGFpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMXYyaDR2LTJoLTR6TTE2IDE3LjYxYy45Ni43MSAyLjIxIDEuNjUgMy4yIDIuMzkuNC0uNTMuOC0xLjA3IDEuMi0xLjYtLjk5LS43NC0yLjI0LTEuNjgtMy4yLTIuNC0uNC41NC0uOCAxLjA4LTEuMiAxLjYxek0yMC40IDUuNmMtLjQtLjUzLS44LTEuMDctMS4yLTEuNi0uOTkuNzQtMi4yNCAxLjY4LTMuMiAyLjQuNC41My44IDEuMDcgMS4yIDEuNi45Ni0uNzIgMi4yMS0xLjY1IDMuMi0yLjR6TTQgOWMtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDF2NGgydi00aDFsNSAzVjZMOCA5SDR6bTUuMDMgMS43MUwxMSA5LjUzdjQuOTRsLTEuOTctMS4xOC0uNDgtLjI5SDR2LTJoNC41NWwuNDgtLjI5ek0xNS41IDEyYzAtMS4zMy0uNTgtMi41My0xLjUtMy4zNXY2LjY5Yy45Mi0uODEgMS41LTIuMDEgMS41LTMuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW5jZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMuNTktMTNMMTIgMTAuNTkgOC40MSA3IDcgOC40MSAxMC41OSAxMiA3IDE1LjU5IDguNDEgMTcgMTIgMTMuNDEgMTUuNTkgMTcgMTcgMTUuNTkgMTMuNDEgMTIgMTcgOC40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2LjE3IDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MUw5IDE2LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjQxIDcuNDEgMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJsNC41OC00LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2IDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNi02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG9zZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNi40MSAxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyIDE5IDYuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3VibGVBcnJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNUgxMWw1IDctNSA3aDQuNWw1LTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA1SDRsNSA3LTUgN2g0LjVsNS03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDUtMS40MSAxLjQxTDE4LjE3IDExSDJ2MmgxNi4xN2wtNC41OSA0LjU5TDE1IDE5bDctNy03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBhbmRDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMDggOS41OSAxMiAxMi42NyA4LjkyIDkuNTkgNy41IDExbDQuNSA0LjUgNC41LTQuNS0xLjQyLTEuNDF6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwYW5kTGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgOC02IDYgMS40MSAxLjQxTDEyIDEwLjgzbDQuNTkgNC41OEwxOCAxNGwtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwYW5kTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU5IDguNTkgMTIgMTMuMTcgNy40MSA4LjU5IDYgMTBsNiA2IDYtNi0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXJzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDB2MjRIMFYwaDI0elwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQxIDE2LjU5IDEzLjgyIDEybDQuNTktNC41OUwxNyA2bC02IDYgNiA2IDEuNDEtMS40MXpNNiA2aDJ2MTJINlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRnVsbHNjcmVlbkV4aXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTZoM3YzaDJ2LTVINXYyem0zLThINXYyaDVWNUg4djN6bTYgMTFoMnYtM2gzdi0yaC01djV6bTItMTFWNWgtMnY1aDVWOGgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZ1bGxzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTRINXY1aDV2LTJIN3YtM3ptLTItNGgyVjdoM1Y1SDV2NXptMTIgN2gtM3YyaDV2LTVoLTJ2M3pNMTQgNXYyaDN2M2gyVjVoLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb21lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTF2MTBoNnYtNWgydjVoNlYxMUw4IDZsLTcgNXptMTIgOGgtMnYtNUg1djVIM3YtNi45N2w1LTMuNTcgNSAzLjU3VjE5ek0xNyA3aDJ2MmgtMnpNMTcgMTFoMnYyaC0yek0xNyAxNWgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDN2MS45N2wyIDEuNDNWNWg5djE0aC00djJoNlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41OSA3LjQxIDEwLjE4IDEybC00LjU5IDQuNTlMNyAxOGw2LTYtNi02LTEuNDEgMS40MXpNMTYgNmgydjEyaC0yVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMZWdlbmRUb2dnbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNUg0di0yaDE2djJ6bTAgMkg0djJoMTZ2LTJ6bS01LTYgNS0zLjU1VjVsLTUgMy41NUwxMCA1IDQgOC42NlYxMWw1LjkyLTMuNjFMMTUgMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXBzSG9tZVdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDdoMnYyaC0yek0xNyAxMWgydjJoLTJ6TTE3IDE1aDJ2MmgtMnpNMSAxMXYxMGg2di01aDJ2NWg2VjExTDggNmwtNyA1em0xMiA4aC0ydi01SDV2NUgzdi03bDUtMy41IDUgMy41djd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDN2MS45N2wyIDEuNDNWNWg5djE0aC00djJoNlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVudU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMThoMTN2LTJIM3Yyem0wLTVoMTB2LTJIM3Yyem0wLTd2MmgxM1Y2SDN6bTE4IDkuNTlMMTcuNDIgMTIgMjEgOC40MSAxOS41OSA3bC01IDUgNSA1TDIxIDE1LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVudSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcmVIb3JpeiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyIDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNiAwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcmVWZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vcnRoRWFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNXYyaDYuNTlMNCAxOC41OSA1LjQxIDIwIDE3IDguNDFWMTVoMlY1SDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3J0aFdlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1aDJWOC40MUwxOC41OSAyMCAyMCAxOC41OSA4LjQxIDdIMTVWNUg1djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9ydGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm01IDkgMS40MSAxLjQxTDExIDUuODNWMjJoMlY1LjgzbDQuNTkgNC41OUwxOSA5bC03LTctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT2ZmbGluZVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDVINHYxNmMwIDEuMS45IDIgMiAyaDEwdi0ySDZWNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMWgtOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTh2LTFoOHYxem0wLTNoLThWNmg4djh6bTAtMTBoLThWM2g4djF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTAuMjVoMS42M2wtLjY5LjY5TDE0LjUgMTIgMTcgOS41IDE0LjUgN2wtMS4wNiAxLjA2LjY5LjY5SDEyYy0uNTUgMC0xIC40NS0xIDFWMTJoMS41di0xLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF5bWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNFY2YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnptLTIgMEgzVjZoMTR2OHptLTctN2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTEzIDB2MTFjMCAxLjEtLjkgMi0yIDJINHYtMmgxN1Y3aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaXZvdFRhYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVjMC0xLjEtLjktMi0yLTJoLTl2NWgxMVY1ek0zIDE5YzAgMS4xLjkgMiAyIDJoM1YxMEgzdjl6TTMgNXYzaDVWM0g1Yy0xLjEgMC0yIC45LTIgMnptMTUgMy45OUwxNCAxM2wxLjQxIDEuNDEgMS41OS0xLjZWMTVjMCAxLjEtLjkgMi0yIDJoLTIuMTdsMS41OS0xLjU5TDEzIDE0bC00IDQgNCA0IDEuNDEtMS40MUwxMi44MyAxOUgxNWMyLjIxIDAgNC0xLjc5IDQtNHYtMi4xOGwxLjU5IDEuNkwyMiAxM2wtNC00LjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVmcmVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjUgNi4zNUE3Ljk1OCA3Ljk1OCAwIDAgMCAxMiA0Yy00LjQyIDAtNy45OSAzLjU4LTcuOTkgOHMzLjU3IDggNy45OSA4YzMuNzMgMCA2Ljg0LTIuNTUgNy43My02aC0yLjA4QTUuOTkgNS45OSAwIDAgMSAxMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3V0aEVhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5aC0ydjYuNTlMNS40MSA0IDQgNS40MSAxNS41OSAxN0g5djJoMTBWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvdXRoV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE5di0ySDguNDFMMjAgNS40MSAxOC41OSA0IDcgMTUuNTlWOUg1djEwaDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU291dGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxNS0xLjQxLTEuNDFMMTMgMTguMTdWMmgtMnYxNi4xN2wtNC41OS00LjU5TDUgMTVsNyA3IDctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YmRpcmVjdG9yeUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEgOSAxLjQyIDEuNDJMOC44MyAxNEgxOFY0aDJ2MTJIOC44M2wzLjU5IDMuNThMMTEgMjFsLTYtNiA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdWJkaXJlY3RvcnlBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkgMTUtNiA2LTEuNDItMS40MkwxNS4xNyAxNkg0VjRoMnYxMGg5LjE3bC0zLjU5LTMuNThMMTMgOWw2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDguNjJ2Ni43Nkw1LjEyIDEyIDguNSA4LjYyTTEwIDVsLTcgNyA3IDdWNXptNCAwdjE0bDctNy03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE1LjM4VjguNjJMMTguODggMTJsLTMuMzggMy4zOE0xNCAxOWw3LTctNy03djE0em0tNCAwVjVsLTcgNyA3IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVbmZvbGRMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAwdjI0SDBWMGgyNHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQxIDE4LjU5IDguODMgMjAgMTIgMTYuODMgMTUuMTcgMjBsMS40MS0xLjQxTDEyIDE0bC00LjU5IDQuNTl6bTkuMTgtMTMuMThMMTUuMTcgNCAxMiA3LjE3IDguODMgNCA3LjQxIDUuNDEgMTIgMTBsNC41OS00LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW5mb2xkTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS44MyAxNS4xNyA5bDEuNDEtMS40MUwxMiAzIDcuNDEgNy41OSA4LjgzIDkgMTIgNS44M3ptMCAxMi4zNEw4LjgzIDE1bC0xLjQxIDEuNDFMMTIgMjFsNC41OS00LjU5TDE1LjE3IDE1IDEyIDE4LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0ZXJmYWxsQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoM3YxNmgtM1Y0ek0zIDEzaDN2N0gzdi03em0xMS05aDN2M2gtM1Y0em0tNCAxaDN2NGgtM1Y1em0tMyA1aDN2NEg3di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkgMTkgMS40MS0xLjQxTDUuODMgMTNIMjJ2LTJINS44M2w0LjU5LTQuNTlMOSA1bC03IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjb3VudFRyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzaDd6TTcgOUg0VjVoM3Y0em0xMCA2aDN2NGgtM3YtNHptMC0xMGgzdjRoLTNWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNmMwIDMuODcgMy4xMyA3IDcgN3M3LTMuMTMgNy03di00SDV2NHpNMTYuMTIgNC4zN2wyLjEtMi4xLS44Mi0uODMtMi4zIDIuMzFDMTQuMTYgMy4yOCAxMy4xMiAzIDEyIDNzLTIuMTYuMjgtMy4wOS43NUw2LjYgMS40NGwtLjgyLjgzIDIuMSAyLjFDNi4xNCA1LjY0IDUgNy42OCA1IDEwdjFoMTR2LTFjMC0yLjMyLTEuMTQtNC4zNi0yLjg4LTUuNjN6TTkgOWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem02IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTZWF0RmxhdEFuZ2xlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2LjVjLjMxIDAgLjcuMTUuOS41Ni4yNC41LjAyIDEuMS0uNDcgMS4zNGEuOTc5Ljk3OSAwIDAgMS0xLjMyLS40Ni45ODYuOTg2IDAgMCAxIC40Ni0xLjM0Yy4xNC0uMDYuMjgtLjEuNDMtLjFtNi40NyAyLjExIDYuNjkgMi40MWMuNTIuMTkuOTMuNTYgMS4xNSAxLjA1LjIyLjQ4LjI1IDEuMDMuMDYgMS41M2wtLjAxLjAyLTguNTktMy4xMS43LTEuOU0xMCAxNS4xOWw0IDEuNDRWMTdoLTR2LTEuODFNNiA0LjVjLS40NCAwLS44OC4xLTEuMy4zYTIuOTkgMi45OSAwIDAgMC0xLjQgNCAyLjk4OCAyLjk4OCAwIDAgMCA0IDEuNCAzLjAxIDMuMDEgMCAwIDAgMS40MS00QTMuMDEzIDMuMDEzIDAgMCAwIDYgNC41em01LjI4IDEuNTVMOS4yIDExLjcxbDEyLjM2IDQuNDcuNjktMS44OWE0IDQgMCAwIDAtMi40MS01LjE1bC04LjU2LTMuMDl6bS05LjA5IDQuMi0uNjkgMS44OUw4IDE0LjQ4VjE5aDh2LTEuNjNMMjAuNTIgMTlsLjY5LTEuODktMTkuMDItNi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTZWF0RmxhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxM2EzIDMgMCAwIDAgMi4xLTUuMTRDNi41MSA3LjI5IDUuNzUgNyA1IDdhMyAzIDAgMCAwLTIuMSA1LjE0Yy41OS41NyAxLjM1Ljg2IDIuMS44NnptLS43MS0zLjdhMSAxIDAgMCAxIDEuNDEtLjAyYy40LjM5LjQgMS4wMS4wMiAxLjQxLS4yLjItLjQ1LjMxLS43Mi4zMS0uMjYgMC0uNTEtLjEtLjctLjI4LS40LS40LS40LTEuMDItLjAxLTEuNDJ6TTE4IDdIOXY2aDEzdi0yYzAtMi4yMS0xLjc5LTQtNC00em0tNyA0VjloN2MxLjEgMCAyIC45IDIgMmgtOXptLTkgNWg2djJoOHYtMmg2di0ySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJsaW5lU2VhdEluZGl2aWR1YWxTdWl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNGMxLjY2IDAgMy0xLjM0IDMtM1M4LjY2IDggNyA4cy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMi0zaC04djhIM1Y3SDF2MTBoMjJ2LTZjMC0yLjIxLTEuNzktNC00LTR6bTIgOGgtOFY5aDZjMS4xIDAgMiAuOSAyIDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTZWF0TGVncm9vbUV4dHJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEyVjNIMnY5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIN2MtMS42NiAwLTMtMS4zNC0zLTN6bTE4LjgzIDUuMjRjLS4zOC0uNzItMS4yOS0uOTctMi4wMy0uNjNsLTEuMDkuNS0zLjQxLTYuOThBMi4wMTkgMi4wMTkgMCAwIDAgMTQuNTEgOUgxMVYzSDV2OGMwIDEuNjYgMS4zNCAzIDMgM2g3bDMuNDEgNyAzLjcyLTEuN2MuNzctLjM2IDEuMS0xLjMuNy0yLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRMZWdyb29tTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEyVjNIM3Y5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIOGMtMS42NiAwLTMtMS4zNC0zLTN6bTE1LjUgNkgxOXYtN2MwLTEuMS0uOS0yLTItMmgtNVYzSDZ2OGMwIDEuNjUgMS4zNSAzIDMgM2g3djdoNC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRMZWdyb29tUmVkdWNlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTcgMTkuMmMuMTguOTYtLjU1IDEuOC0xLjQ3IDEuOEgxNHYtM2wxLTRIOWMtMS42NSAwLTMtMS4zNS0zLTNWM2g2djZoNWMxLjEgMCAyIC45IDIgMmwtMiA3aDEuNDRjLjczIDAgMS4zOS40OSAxLjUzIDEuMnpNNSAxMlYzSDN2OWMwIDIuNzYgMi4yNCA1IDUgNWg0di0ySDhjLTEuNjYgMC0zLTEuMzQtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRSZWNsaW5lRXh0cmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMzUgNS42NGMtLjktLjY0LTEuMTItMS44OC0uNDktMi43OS42My0uOSAxLjg4LTEuMTIgMi43OS0uNDkuOS42NCAxLjEyIDEuODguNDkgMi43OS0uNjQuOS0xLjg4IDEuMTItMi43OS40OXpNMTYgMTlIOC45M2MtMS40OCAwLTIuNzQtMS4wOC0yLjk2LTIuNTRMNCA3SDJsMS45OSA5Ljc2QTUuMDEgNS4wMSAwIDAgMCA4Ljk0IDIxSDE2di0yem0uMjMtNGgtNC44OGwtMS4wMy00LjFjMS41OC44OSAzLjI4IDEuNTQgNS4xNSAxLjIyVjkuOTljLTEuNjMuMzEtMy40NC0uMjctNC42OS0xLjI1TDkuMTQgNy40N2MtLjIzLS4xOC0uNDktLjMtLjc2LS4zOGEyLjIxIDIuMjEgMCAwIDAtLjk5LS4wNmgtLjAyYTIuMjY4IDIuMjY4IDAgMCAwLTEuODQgMi42MWwxLjM1IDUuOTJBMy4wMDggMy4wMDggMCAwIDAgOS44MyAxOGg2Ljg1bDMuODIgMyAxLjUtMS41LTUuNzctNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRSZWNsaW5lTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjU5IDUuNDFjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzczIuMDUtLjc4IDIuODMgMCAuNzggMi4wNSAwIDIuODNjLS43OS43OS0yLjA1Ljc5LTIuODMgMHpNNiAxNlY3SDR2OWMwIDIuNzYgMi4yNCA1IDUgNWg2di0ySDljLTEuNjYgMC0zLTEuMzQtMy0zem0xNCA0LjA3TDE0LjkzIDE1SDExLjV2LTMuNjhjMS40IDEuMTUgMy42IDIuMTYgNS41IDIuMTZ2LTIuMTZjLTEuNjYuMDItMy42MS0uODctNC42Ny0yLjA0bC0xLjQtMS41NWMtLjE5LS4yMS0uNDMtLjM4LS42OS0uNS0uMjktLjE0LS42Mi0uMjMtLjk2LS4yM2gtLjAzQzguMDEgNyA3IDguMDEgNyA5LjI1VjE1YzAgMS42NiAxLjM0IDMgMyAzaDUuMDdsMy41IDMuNUwyMCAyMC4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aEF1ZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4yNCAxMi4wMSAyLjMyIDIuMzJjLjI4LS43Mi40NC0xLjUxLjQ0LTIuMzNzLS4xNi0xLjU5LS40My0yLjMxbC0yLjMzIDIuMzJ6bTUuMjktNS4zLTEuMjYgMS4yNmMuNjMgMS4yMS45OCAyLjU3Ljk4IDQuMDJzLS4zNiAyLjgyLS45OCA0LjAybDEuMiAxLjJhOS45MzYgOS45MzYgMCAwIDAgMS41NC01LjMxYy0uMDEtMS44OS0uNTUtMy42Ny0xLjQ4LTUuMTl6bS0zLjgyIDFMMTAgMkg5djcuNTlMNC40MSA1IDMgNi40MSA4LjU5IDEyIDMgMTcuNTkgNC40MSAxOSA5IDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMSA1LjgzbDEuODggMS44OEwxMSA5LjU5VjUuODN6bTEuODggMTAuNDZMMTEgMTguMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29uZmlybWF0aW9uTnVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWNmEyIDIgMCAwIDAtMi0ySDRjLTEuMSAwLTEuOTkuODktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJ6bS0yLTEuNDZjLTEuMTkuNjktMiAxLjk5LTIgMy40NnMuODEgMi43NyAyIDMuNDZWMThINHYtMi41NGMxLjE5LS42OSAyLTEuOTkgMi0zLjQ2IDAtMS40OC0uOC0yLjc3LTEuOTktMy40Nkw0IDZoMTZ2Mi41NHpNMTEgMTVoMnYyaC0yem0wLTRoMnYyaC0yem0wLTRoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjcxIDExLjI5LTktOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBMOC4yMSA1LjM4bDEuNDEgMS40MUwxMiA0LjQyIDE5LjU4IDEybC0yLjM4IDIuMzggMS40MSAxLjQxIDMuMDktMy4wOWMuNC0uMzcuNC0xIC4wMS0xLjQxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3LjV2Mi42N2wyLjE3IDIuMTdMMTYuNSAxMXpNMS4zOSA0LjIybDMuOTkgMy45OS0zLjA5IDMuMDlhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDkgOWMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMy4wOS0zLjA5IDMuOTkgMy45OSAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptNi42NCA2LjYzYy0uMDEuMDUtLjA0LjEtLjA0LjE1djRoMnYtMi4xOGw0LjM4IDQuMzhMMTIgMTkuNTggNC40MiAxMiA2LjggOS42MmwxLjIzIDEuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXNjRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gydjVoLTJ6TTEwIDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMTAtNGgydjJoLTJ6bS0xMC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvRGlzdHVyYkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyek00IDEyYzAtNC40IDMuNi04IDgtOCAxLjggMCAzLjUuNiA0LjkgMS43TDUuNyAxNi45QzQuNiAxNS41IDQgMTMuOCA0IDEyem04IDhjLTEuOCAwLTMuNS0uNi00LjktMS43TDE4LjMgNy4xQzE5LjQgOC41IDIwIDEwLjIgMjAgMTJjMCA0LjQtMy42IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9EaXN0dXJiT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS40MS0uMzcgMi43My0xLjAxIDMuODhsMS40NiAxLjQ2QTkuOTYgOS45NiAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMGE5LjkgOS45IDAgMCAwLTUuMzMgMS41NWwxLjQ2IDEuNDZBNy44ODMgNy44ODMgMCAwIDEgMTIgNHptNSA3aC0yLjg4bDIgMkgxN3pNMi40MSAyLjEzIDEgMy41NGwyLjc4IDIuNzhBOS45MiA5LjkyIDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4xMSAwIDQuMDctLjY2IDUuNjgtMS43OEwyMC40NiAyM2wxLjQxLTEuNDFMMi40MSAyLjEzek0xMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0xLjU2LjQ1LTMgMS4yMy00LjIzTDguNDYgMTFIN3YyaDMuNDZsNS43NyA1Ljc3QTcuODQ2IDcuODQ2IDAgMCAxIDEyIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9EaXN0dXJiT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0tNS05aDEwdjJIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvRGlzdHVyYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LTggMC0xLjg1LjYzLTMuNTUgMS42OS00LjlMMTYuOSAxOC4zMUE3LjkwMiA3LjkwMiAwIDAgMSAxMiAyMHptNi4zMS0zLjFMNy4xIDUuNjlBNy45MDIgNy45MDIgMCAwIDEgMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuODUtLjYzIDMuNTUtMS42OSA0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdERpc3R1cmJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnpNNCAxMmMwLTQuNCAzLjYtOCA4LTggMS44IDAgMy41LjYgNC45IDEuN0w1LjcgMTYuOUM0LjYgMTUuNSA0IDEzLjggNCAxMnptOCA4Yy0xLjggMC0zLjUtLjYtNC45LTEuN0wxOC4zIDcuMUMxOS40IDguNSAyMCAxMC4yIDIwIDEyYzAgNC40LTMuNiA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvTm90RGlzdHVyYk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuOTQgNS4xMkM5LjE0IDQuNDEgMTAuNTIgNCAxMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS40OC0uNDEgMi44Ni0xLjEyIDQuMDZsMS40NiAxLjQ2QTkuOTY3IDkuOTY3IDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTIuMDQgMC0zLjkzLjYxLTUuNTEgMS42NmwxLjQ1IDEuNDZ6TTIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODF6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZMOC4xNyAxMUg3djJoMy4xN2w1Ljg4IDUuODhBNy44NjkgNy44NjkgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjgzIDExIDIgMkgxN3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvTm90RGlzdHVyYk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMXYyaDEwdi0ySDd6bTUtOUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdERpc3R1cmIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyaXZlRXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA1LjAxQzE4LjcyIDQuNDIgMTguMTYgNCAxNy41IDRoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDExdjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDZoMTAuMjlsMS4wNCAzSDUuODFsMS4wNC0zek0xOSAxNkg1di00LjY2bC4xMi0uMzRoMTMuNzdsLjExLjM0VjE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuNVwiLFwiY3lcIjpcIjEzLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIxMy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVuaGFuY2VkRW5jcnlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYySDguOVY2ek0xOCAyMEg2VjEwaDEydjEwem0tNS05aC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdmVudEF2YWlsYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djEwek01IDdWNWgxNHYySDV6bTUuNTYgMTAuNDYgNS45My01LjkzLTEuMDYtMS4wNi00Ljg3IDQuODctMi4xMS0yLjExLTEuMDYgMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV2ZW50QnVzeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djEwek01IDdWNWgxNHYySDV6bTMuMjMgOS40MSAxLjA2IDEuMDYgMi40NC0yLjQ0IDIuNDQgMi40NCAxLjA2LTEuMDYtMi40NC0yLjQ0IDIuNDQtMi40NC0xLjA2LTEuMDYtMi40NCAyLjQ0LTIuNDQtMi40NC0xLjA2IDEuMDYgMi40NCAyLjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXZlbnROb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjloMTR2MTB6TTUgN1Y1aDE0djJINXptMiA0aDEwdjJIN3ptMCA0aDd2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9sZGVyU3BlY2lhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS02LjkyLTMuOTZMMTIuMzkgMTcgMTUgMTUuNDcgMTcuNjEgMTdsLS42OS0yLjk2IDIuMy0xLjk5LTMuMDMtLjI2TDE1IDlsLTEuMTkgMi43OS0zLjAzLjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW1hZ2VzZWFyY2hSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3VjNjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXYxSDRjLTEuMSAwLTIgLjktMiAydjRjMCAxLjEuOSAyIDIgMmg4djNoLTFjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi02YzAtLjU1LS40NS0xLTEtMWgtMXYtM2MwLTEuMS0uOS0yLTItMkg0VjZoMnYxYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMXpNOCA0aDEwdjJIOFY0em02IDE3aC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpdmVUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMHY4bDctNHptMTItNGgtNy41OGwzLjI5LTMuMjlMMTYgMmwtNCA0aC0uMDNsLTQtNC0uNjkuNzFMMTAuNTYgNkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTRIM1Y4aDE4djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW1zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyem0tNS41LThMMTEgMTIuNTEgOC41IDkuNSA1IDE0aDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0g3Yy0uNjkgMC0xLjIzLjM1LTEuNTkuODhMMCAxMmw1LjQxIDguMTFjLjM2LjUzLjk3Ljg5IDEuNjYuODlIMjJjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg3LjA3TDIuNCAxMmw0LjY2LTdIMjJ2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuOSA1Yy0uMTcgMC0uMzIuMDktLjQxLjIzbC0uMDcuMTUtNS4xOCAxMS42NWMtLjE2LjI5LS4yNi42MS0uMjYuOTYgMCAxLjExLjkgMi4wMSAyLjAxIDIuMDEuOTYgMCAxLjc3LS42OCAxLjk2LTEuNTlsLjAxLS4wM0wxNi40IDUuNWMwLS4yOC0uMjItLjUtLjUtLjV6TTEgOWwyIDJjMi44OC0yLjg4IDYuNzktNC4wOCAxMC41My0zLjYybDEuMTktMi42OEM5Ljg5IDMuODQgNC43NCA1LjI3IDEgOXptMjAgMiAyLTJhMTUuMzY3IDE1LjM2NyAwIDAgMC01LjU5LTMuNTdsLS41MyAyLjgyYzEuNS42MiAyLjkgMS41MyA0LjEyIDIuNzV6bS00IDQgMi0yYy0uOC0uOC0xLjctMS40Mi0yLjY2LTEuODlsLS41NSAyLjkyYy40Mi4yNy44My41OSAxLjIxLjk3ek01IDEzbDIgMmE3LjEgNy4xIDAgMCAxIDQuMDMtMmwxLjI4LTIuODhjLTIuNjMtLjA4LTUuMy44Ny03LjMxIDIuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXR3b3JrTG9ja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtLjVhMi41IDIuNSAwIDAgMC01IDB2LjVjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMXptLTEgMGgtM3YtLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2LjV6TTE4IDUuODN2NS40M2MuNDctLjE2Ljk3LS4yNiAxLjUtLjI2LjE3IDAgLjMzLjAzLjUuMDVWMUwxIDIwaDEzdi0ySDUuODNMMTggNS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vRW5jcnlwdGlvbkdtYWlsZXJyb3JyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2MmgtNC42NmwyIDJIMTh2NS41NmwyIDJWMTBjMC0xLjEtLjktMi0yLTJoLTFWNmMwLTIuNzYtMi4yNC01LTUtNS0yLjMyIDAtNC4yNiAxLjU5LTQuODIgMy43NEw4LjkgNi40NlY2ek00LjQxIDQuODEgMyA2LjIybDIuMDQgMi4wNEM0LjQyIDguNiA0IDkuMjUgNCAxMHYxMGMwIDEuMS45IDIgMiAyaDEyLjc4bDEgMSAxLjQxLTEuNDFMNC40MSA0Ljgxek02IDIwVjEwaC43OGwxMCAxMEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9FbmNyeXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMXMzLjEgMS4zOSAzLjEgMy4xdjJoLTQuNjZsMiAySDE4djUuNTZsMiAyVjEwYzAtMS4xLS45LTItMi0yaC0xVjZjMC0yLjc2LTIuMjQtNS01LTUtMi4zMiAwLTQuMjYgMS41OS00LjgyIDMuNzRMOC45IDYuNDZWNnpNNC40MSA0LjgxIDMgNi4yMmwyLjA0IDIuMDRDNC40MiA4LjYgNCA5LjI1IDQgMTB2MTBjMCAxLjEuOSAyIDIgMmgxMi43OGwxIDEgMS40MS0xLjQxTDQuNDEgNC44MXpNNiAyMFYxMGguNzhsMTAgMTBINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9uZGVtYW5kVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgN3Y4bDctNHptMTItNEgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25hbFZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg1djJoOHYtMmg1YzEuMSAwIDEuOTktLjkgMS45OS0yTDIzIDVhMiAyIDAgMCAwLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZUJsdWV0b290aFNwZWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3LS4xLS4wMy0uMjEtLjA1LS4zMS0uMDUtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NSAyLjU4bC0xLjIgMS4yMWMtLjQtMS4yMS0uNjYtMi40Ny0uNzUtMy43OXpNMTkgMTguOTdjLTEuMzItLjA5LTIuNi0uMzUtMy44LS43NmwxLjItMS4yYy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjUxek0xNC43MSA5LjUgMTcgNy4yMVYxMWguNWwyLjg1LTIuODVMMTguMjEgNmwyLjE1LTIuMTVMMTcuNSAxSDE3djMuNzlMMTQuNzEgMi41bC0uNzEuNzFMMTYuNzkgNiAxNCA4Ljc5bC43MS43MXpNMTggMi45MWwuOTQuOTQtLjk0Ljk0VjIuOTF6bTAgNC4zLjk0Ljk0LS45NC45NFY3LjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVDYWxsYmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNTFjLTEuMjQgMC0yLjQ1LS4yLTMuNTctLjU3YS44NC44NCAwIDAgMC0uMzEtLjA1Yy0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMTQ5IDE1LjE0OSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMmMuMjgtLjI4LjM2LS42Ny4yNS0xLjAyQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWExMyAxMyAwIDAgMCAuNDYgMi41OWwtMS4yIDEuMmMtLjQxLTEuMi0uNjctMi40Ny0uNzYtMy43OXpNMTkgMTguOTdjLTEuMzItLjA5LTIuNTktLjM1LTMuOC0uNzVsMS4xOS0xLjE5Yy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjQ5ek0xOCA5aC0yLjU5bDUuMDItNS4wMi0xLjQxLTEuNDFMMTQgNy41OVY1aC0ydjZoNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lRm9yd2FyZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMS0uMDMtLjIxLS4wNS0uMzEtLjA1LS4yNiAwLS41MS4xLS43MS4yOWwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTUuMDMgNWgxLjVjLjA3Ljg4LjIyIDEuNzUuNDUgMi41OGwtMS4yIDEuMjFjLS40LTEuMjEtLjY2LTIuNDctLjc1LTMuNzl6TTE5IDE4Ljk3Yy0xLjMyLS4wOS0yLjYtLjM1LTMuOC0uNzZsMS4yLTEuMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS41MXpNMTggMTFsNS01LTUtNXYzaC00djRoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lSW5UYWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMmgyYzAtMi43Ni0yLjI0LTUtNS01djJjMS42NiAwIDMgMS4zNCAzIDN6bTQgMGgyYTkgOSAwIDAgMC05LTl2MmMzLjg3IDAgNyAzLjEzIDcgN3ptMSAzLjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3LS4xLS4wMy0uMjEtLjA1LS4zMS0uMDUtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NSAyLjU4bC0xLjIgMS4yMWMtLjQtMS4yMS0uNjYtMi40Ny0uNzUtMy43OXpNMTkgMTguOTdjLTEuMzItLjA5LTIuNi0uMzUtMy44LS43NmwxLjItMS4yYy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVMb2NrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1VjRjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFoLTF2NWg2VjVoLTF6bS0xIDBoLTJWNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMiAxNC44Ny0zLjY3LS43M2MtLjUtLjEtLjgzLjItLjkuMjdsLTIuNTIgMi41Yy0yLjUtMS40My00LjU3LTMuNS02LTZsMi41LTIuNTJjLjIzLS4yNC4zMy0uNTcuMjctLjlMOS4xMyAzLjhjLS4wOS0uNDYtLjUtLjgtLjk4LS44SDRjLS41NiAwLTEuMDMuNDctMSAxLjAzLjE3IDIuODkgMS4wNSA1LjYgMi40MyA3Ljk3IDEuNTggMi43MyAzLjg1IDQuOTkgNi41NyA2LjU3IDIuMzcgMS4zNyA1LjA4IDIuMjYgNy45NyAyLjQzLjU1LjAzIDEuMDMtLjQzIDEuMDMtMXYtNC4xNWMwLS40OC0uMzQtLjg5LS44LS45OHpNNS4xIDVoMi4yM2wuNDcgMi4zNUw2LjE3IDljLS41NC0xLjMtLjktMi42My0xLjA3LTR6TTE5IDE4LjljLTEuMzctLjE4LTIuNy0uNTMtNC0xLjA3bDEuNjUtMS42MyAyLjM1LjQ3djIuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZU1pc3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMuNzEgMTYuNjdDMjAuNjYgMTMuNzggMTYuNTQgMTIgMTIgMTJTMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43M3MzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NyAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxIDAtLjI4LS4xMi0uNTItLjMtLjd6bS0xOC4zMS41NmMtLjY2LjM3LTEuMjkuOC0xLjg3IDEuMjdsLTEuMDctMS4wN2MuOTEtLjc1IDEuOS0xLjM5IDIuOTUtMS45djEuN3ptMTUuMDggMS4yNmMtLjYtLjQ4LTEuMjItLjktMS44OC0xLjI3di0xLjdjMS4wNS41MSAyLjAzIDEuMTUgMi45NSAxLjlsLTEuMDcgMS4wN3pNNyA2LjQzbDQuOTQgNC45NCA3LjA3LTcuMDctMS40MS0xLjQyLTUuNjYgNS42Nkw4LjQgNUgxMVYzSDV2NmgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODguMjEgMS43NS40NCAyLjU4bC0xLjIgMS4yMWMtLjQtMS4yMS0uNjYtMi40Ny0uNzUtMy43OWgxLjUxbTkuODYgMTIuMDFjLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNWMtMS4zMi0uMDktMi42LS4zNS0zLjgtLjc2bDEuMi0xLjE5TTcuNSAzSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTEtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjEtLjAzLS4yMS0uMDUtLjMxLS4wNS0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMDQ1IDE1LjA0NSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMjFhLjk2Ljk2IDAgMCAwIC4yNS0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMXpNMTUgM2gydjdoLTJ6bTQgMGgydjdoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgM0g4djEuODhsMiAyem02IDZ2My44OGwxLjggMS44LjItLjJWOWMwLTEuMS0uOS0yLTItMlYzaC0ydjRoLTMuODhsMiAySDE2ek00LjEyIDMuODQgMi43MSA1LjI1IDYgOC41NHY1Ljk2TDkuNSAxOHYzaDV2LTNsLjQ4LS40OCA0LjQ3IDQuNDcgMS40MS0xLjQxTDQuMTIgMy44NHptOC4zOCAxMy4zM1YxOWgtMXYtMS44M0w4IDEzLjY1di0zLjExbDUuNTcgNS41Ny0xLjA3IDEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOXY0LjY2bC0zLjUgMy41MVYxOWgtMXYtMS44M0w4IDEzLjY1VjloOG0wLTZoLTJ2NGgtNFYzSDh2NGgtLjAxQzYuOSA2Ljk5IDYgNy44OSA2IDguOTh2NS41Mkw5LjUgMTh2M2g1di0zbDMuNS0zLjUxVjljMC0xLjEtLjktMi0yLTJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaW9yaXR5SGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE5XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNoNHYxMmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJ1bm5pbmdXaXRoRXJyb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTB2OGgtMnYtOGgyem0tMiAxMHYyaDJ2LTJoLTJ6bS0yLTIuNzFBNy45OSA3Ljk5IDAgMCAxIDEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04djlsNy41NS03LjU1QTkuOTY1IDkuOTY1IDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBjMi4yNSAwIDQuMzMtLjc0IDYtMnYtMi43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNkQ2FyZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQuMDIgOCA0IDIwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg2VjguODNMMTAuODMgNEgxOHYxNnptLTctNWgydjJoLTJ6bTAtN2gydjVoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNCA4djEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg2VjguODNMMTAuODMgNEgxOHYxNnpNOSA3aDJ2NEg5em0zIDBoMnY0aC0yem0zIDBoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2ltQ2FyZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0LjAyIDggNCAyMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMThINlY4LjgzTDEwLjgzIDRIMTh2MTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2MmgtMnpNMTEgOGgydjVoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbXNGYWlsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN0w0IDE3LjE3VjRoMTZ2MTJ6bS05LTRoMnYyaC0yem0wLTZoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU21zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyek03IDloMnYySDd6bTggMGgydjJoLTJ6bS00IDBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VwcG9ydEFnZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTIuMjJDMjEgNi43MyAxNi43NCAzIDEyIDNjLTQuNjkgMC05IDMuNjUtOSA5LjI4LS42LjM0LTEgLjk4LTEgMS43MnYyYzAgMS4xLjkgMiAyIDJoMXYtNi4xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDdWMTloLTh2Mmg4YzEuMSAwIDItLjkgMi0ydi0xLjIyYy41OS0uMzEgMS0uOTIgMS0xLjY0di0yLjNjMC0uNy0uNDEtMS4zMS0xLTEuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMS4wM0E2LjA0IDYuMDQgMCAwIDAgMTIuMDUgNmMtMy4wMyAwLTYuMjkgMi41MS02LjAzIDYuNDVhOC4wNzUgOC4wNzUgMCAwIDAgNC44Ni01Ljg5YzEuMzEgMi42MyA0IDQuNDQgNy4xMiA0LjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3luY0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2LjM1VjQuMjZjLS42Ni4xNy0xLjI5LjQzLTEuODguNzVsMS41IDEuNWMuMTMtLjA1LjI1LS4xMS4zOC0uMTZ6TTIwIDEyYzAtMi4yMS0uOTEtNC4yLTIuMzYtNS42NEwyMCA0aC02djZsMi4yNC0yLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDE4IDEyYzAgLjg1LS4xOSAxLjY1LS41MSAyLjM4bDEuNSAxLjVBNy45MjEgNy45MjEgMCAwIDAgMjAgMTJ6TTQuMjcgNCAyLjg2IDUuNDFsMi4zNiAyLjM2YTcuOTI1IDcuOTI1IDAgMCAwIDEuMTQgOS44N0w0IDIwaDZ2LTZsLTIuMjQgMi4yNEE2LjAwMyA2LjAwMyAwIDAgMSA2IDEyYzAtMSAuMjUtMS45NC42OC0yLjc3bDguMDggOC4wOGMtLjI1LjEzLS41LjI0LS43Ni4zNHYyLjA5Yy44LS4yMSAxLjU1LS41NCAyLjIzLS45NmwyLjU4IDIuNTggMS40MS0xLjQxTDQuMjcgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5bmNMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNC4yNnYyLjA5QzcuNjcgNy4xOCA2IDkuMzkgNiAxMmMwIDEuNzcuNzggMy4zNCAyIDQuNDRWMTRoMnY2SDR2LTJoMi43M0E3Ljk0MiA3Ljk0MiAwIDAgMSA0IDEyYzAtMy43MyAyLjU1LTYuODUgNi03Ljc0ek0yMCA0aC02djZoMlY3LjU2YzEuMjIgMS4xIDIgMi42NyAyIDQuNDRoMmMwLTIuNC0xLjA2LTQuNTQtMi43My02SDIwVjR6bTAgMTN2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5bmNQcm9ibGVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEyYzAgMi4yMS45MSA0LjIgMi4zNiA1LjY0TDMgMjBoNnYtNmwtMi4yNCAyLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDUgMTJhNS45OSA1Ljk5IDAgMCAxIDQtNS42NVY0LjI2QzUuNTUgNS4xNSAzIDguMjcgMyAxMnptOCA1aDJ2LTJoLTJ2MnpNMjEgNGgtNnY2bDIuMjQtMi4yNEE2LjAwMyA2LjAwMyAwIDAgMSAxOSAxMmE1Ljk5IDUuOTkgMCAwIDEtNCA1LjY1djIuMDljMy40NS0uODkgNi00LjAxIDYtNy43NCAwLTIuMjEtLjkxLTQuMi0yLjM2LTUuNjRMMjEgNHptLTEwIDloMlY3aC0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTeW5jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0uMDEgMGgyNHYyNGgtMjRWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNFYxTDggNWw0IDRWNmMzLjMxIDAgNiAyLjY5IDYgNiAwIDEuMDEtLjI1IDEuOTctLjcgMi44bDEuNDYgMS40NkE3LjkzIDcuOTMgMCAwIDAgMjAgMTJjMC00LjQyLTMuNTgtOC04LTh6bTAgMTRjLTMuMzEgMC02LTIuNjktNi02IDAtMS4wMS4yNS0xLjk3LjctMi44TDUuMjQgNy43NEE3LjkzIDcuOTMgMCAwIDAgNCAxMmMwIDQuNDIgMy41OCA4IDggOHYzbDQtNC00LTR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5c3RlbVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0em0tMS02aC0zVjhoLTJ2NUg4bDQgNCA0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYXBBbmRQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMCA0djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC04djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkyLTExLTExLTExek0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2Ny4zN2MuNjkuMTYgMS4zNi4zNyAyIC42NFY1aDEwdjEzaC0zLjAzYy41MiAxLjI1Ljg0IDIuNTkuOTUgNEgxN2MxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZVRvTGVhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDUuMDFDMTguNzIgNC40MiAxOC4xNiA0IDE3LjUgNGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTF2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgNmgxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTE5IDE2SDV2LTQuNjZsLjEyLS4zNGgxMy43N2wuMTEuMzRWMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjEzLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHZPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDd2MTAuODhsMS44NSAxLjg1Yy4wOS0uMjMuMTUtLjQ3LjE1LS43M1Y3YzAtMS4xMS0uODktMi0yLTJoLTcuNThsMy4yOS0zLjNMMTYgMWwtNCA0LTQtNC0uNy43TDEwLjU4IDVIOC4xMmwyIDJIMjF6bS0uNTQgMTYgMS4yNi0xLjI3LTEuMjYgMS4yNnpNMi40MSAyLjEzbC0uMTQuMTRMMSAzLjU0bDEuNTMgMS41M0MxLjY1IDUuMjggMSA2LjA2IDEgN3YxMmMwIDEuMS45IDIgMiAyaDE1LjQ2bDEuOTkgMS45OSAxLjI2LTEuMjYuMTUtLjE1TDIuNDEgMi4xM3pNMyAxOVY3aDEuNDZsMTIgMTJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNWgyVjlIMHY2em0zIDJoMlY3SDN2MTB6bTE5LTh2NmgyVjloLTJ6bS0zIDhoMlY3aC0ydjEwek0xNi41IDNoLTlDNi42NyAzIDYgMy42NyA2IDQuNXYxNWMwIC44My42NyAxLjUgMS41IDEuNWg5Yy44MyAwIDEuNS0uNjcgMS41LTEuNXYtMTVjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xNiAxOUg4VjVoOHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE0aDZjLjU1IDAgMS0uNDUgMS0xdi0xLjk5TDE3IDEzVjdsLTIgMS45OVY3YzAtLjU1LS40NS0xLTEtMUg4Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvaWNlQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN0w0IDE3LjE3VjRoMTZ2MTJ6bS02LTUuNCAzIDIuNFY3bC0zIDIuNFY3SDd2Nmg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVnBuTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgMTJjLjA0LjMzLjA4LjY2LjA4IDEgMCAyLjA4LS44IDMuOTctMi4xIDUuMzktLjI2LS44MS0xLTEuMzktMS45LTEuMzloLTF2LTNjMC0uNTUtLjQ1LTEtMS0xSDd2LTJoMmMuNTUgMCAxLS40NSAxLTFWOGgyYzEuMSAwIDItLjkgMi0yVjMuNDZjLS45NS0uMy0xLjk1LS40Ni0zLS40NkM1LjQ4IDMgMSA3LjQ4IDEgMTNzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtLjM0LS4wMi0uNjctLjA1LTFoLTIuMDN6TTEwIDIwLjkzYy0zLjk1LS40OS03LTMuODUtNy03LjkzIDAtLjYyLjA4LTEuMjEuMjEtMS43OUw4IDE2djFjMCAxLjEuOSAyIDIgMnYxLjkzek0yMiA0di0uNWEyLjUgMi41IDAgMCAwLTUgMFY0Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg1Yy41NSAwIDEtLjQ1IDEtMVY1YzAtLjU1LS40NS0xLTEtMXptLTEgMGgtM3YtLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0uMDEgMGgyNHYyNGgtMjRWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDIydi03LjVINFY5YzAtMS4xLjktMiAyLTJoM2MxLjEgMCAyIC45IDIgMnY1LjVIOS41VjIyaC00ek0xOCAyMnYtNmgzbC0yLjU0LTcuNjNBMi4wMSAyLjAxIDAgMCAwIDE2LjU2IDdoLS4xMmEyIDIgMCAwIDAtMS45IDEuMzdMMTIgMTZoM3Y2aDN6TTcuNSA2YzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyem05IDBjMS4xMSAwIDItLjg5IDItMnMtLjg5LTItMi0yLTIgLjg5LTIgMiAuODkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxMSAyLTJjLTMuNzMtMy43My04Ljg3LTUuMTUtMTMuNy00LjMxbDIuNTggMi41OGMzLjMtLjAyIDYuNjEgMS4yMiA5LjEyIDMuNzN6bS0yIDJhOS44OTUgOS44OTUgMCAwIDAtMy43Mi0yLjMzbDMuMDIgMy4wMi43LS42OXpNOSAxN2wzIDMgMy0zYTQuMjM3IDQuMjM3IDAgMCAwLTYgMHpNMy40MSAxLjY0IDIgMy4wNSA1LjA1IDYuMUMzLjU5IDYuODMgMi4yMiA3Ljc5IDEgOWwyIDJjMS4yMy0xLjIzIDIuNjUtMi4xNiA0LjE3LTIuNzhsMi4yNCAyLjI0QTkuODIzIDkuODIzIDAgMCAwIDUgMTNsMiAyYTYuOTk5IDYuOTk5IDAgMCAxIDQuODktMi4wNmw3LjA4IDcuMDggMS40MS0xLjQxTDMuNDEgMS42NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEgOSAyIDJjNC45Ny00Ljk3IDEzLjAzLTQuOTcgMTggMGwyLTJDMTYuOTMgMi45MyA3LjA4IDIuOTMgMSA5em04IDggMyAzIDMtM2E0LjIzNyA0LjIzNyAwIDAgMC02IDB6bS00LTQgMiAyYTcuMDc0IDcuMDc0IDAgMCAxIDEwIDBsMi0yQzE1LjE0IDkuMTQgOC44NyA5LjE0IDUgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY1VuaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExaC00LjE3bDMuMjQtMy4yNC0xLjQxLTEuNDJMMTUgMTFoLTJWOWw0LjY2LTQuNjYtMS40Mi0xLjQxTDEzIDYuMTdWMmgtMnY0LjE3TDcuNzYgMi45MyA2LjM0IDQuMzQgMTEgOXYySDlMNC4zNCA2LjM0IDIuOTMgNy43NiA2LjE3IDExSDJ2Mmg0LjE3bC0zLjI0IDMuMjQgMS40MSAxLjQyTDkgMTNoMnYybC00LjY2IDQuNjYgMS40MiAxLjQxTDExIDE3LjgzVjIyaDJ2LTQuMTdsMy4yNCAzLjI0IDEuNDItMS40MUwxMyAxNXYtMmgybDQuNjYgNC42NiAxLjQxLTEuNDJMMTcuODMgMTNIMjJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJwb3J0U2h1dHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNUgzYTIgMiAwIDAgMC0yIDJ2OWgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDJ2LTVsLTYtNnptLTIgMmgxbDMgM2gtNFY3ek05IDdoNHYzSDlWN3pNMyA3aDR2M0gzVjd6bTMgMTAuMjVhMS4yNSAxLjI1IDAgMSAxIDAtMi41IDEuMjUgMS4yNSAwIDAgMSAwIDIuNXptMTIgMGExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41ek0yMSAxNGgtLjc4Yy0uNTUtLjYxLTEuMzQtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDguMjJjLS41NS0uNjEtMS4zMy0xLTIuMjItMXMtMS42Ny4zOS0yLjIyIDFIM3YtMmgxOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxsSW5jbHVzaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC42IDYuNjJjLTEuNDQgMC0yLjguNTYtMy43NyAxLjUzTDcuOCAxNC4zOWMtLjY0LjY0LTEuNDkuOTktMi40Ljk5LTEuODcgMC0zLjM5LTEuNTEtMy4zOS0zLjM4UzMuNTMgOC42MiA1LjQgOC42MmMuOTEgMCAxLjc2LjM1IDIuNDQgMS4wM2wxLjEzIDEgMS41MS0xLjM0TDkuMjIgOC4yQTUuMzcgNS4zNyAwIDAgMCA1LjQgNi42MkMyLjQyIDYuNjIgMCA5LjA0IDAgMTJzMi40MiA1LjM4IDUuNCA1LjM4YzEuNDQgMCAyLjgtLjU2IDMuNzctMS41M2w3LjAzLTYuMjRjLjY0LS42NCAxLjQ5LS45OSAyLjQtLjk5IDEuODcgMCAzLjM5IDEuNTEgMy4zOSAzLjM4cy0xLjUyIDMuMzgtMy4zOSAzLjM4Yy0uOSAwLTEuNzYtLjM1LTIuNDQtMS4wM2wtMS4xNC0xLjAxLTEuNTEgMS4zNCAxLjI3IDEuMTJhNS4zODYgNS4zODYgMCAwIDAgMy44MiAxLjU3YzIuOTggMCA1LjQtMi40MSA1LjQtNS4zOHMtMi40Mi01LjM3LTUuNC01LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBhcnRtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTFWM0g3djRIM3YxNGg4di00aDJ2NGg4VjExaC00ek03IDE5SDV2LTJoMnYyem0wLTRINXYtMmgydjJ6bTAtNEg1VjloMnYyem00IDRIOXYtMmgydjJ6bTAtNEg5VjloMnYyem0wLTRIOVY1aDJ2MnptNCA4aC0ydi0yaDJ2MnptMC00aC0yVjloMnYyem0wLTRoLTJWNWgydjJ6bTQgMTJoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFieUNoYW5naW5nU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDh2MmgtM0w4LjMxIDguODIgNyAxMi43NVYyMkgzVjEybDEuNTgtNC42M0EyLjAwMyAyLjAwMyAwIDAgMSA3LjMgNi4xOGw0LjE1IDEuODNMMTQgOHpNOCAxYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMSAxOGgxMnYtMkg5djJ6bTEwLjUtM2MuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNMTMgMTJjMC0uNTUtLjQ1LTEtMS0xSDl2MmgydjFjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0ydi0zaC0ydjJoLTJ2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNC4xNFYyaC0zdjJoLTRWMkg3djIuMTRjLTEuNzIuNDUtMyAyLTMgMy44NnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhjMC0xLjg2LTEuMjgtMy40MS0zLTMuODZ6TTE4IDIwSDZWOGMwLTEuMS45LTIgMi0yaDhjMS4xIDAgMiAuOSAyIDJ2MTJ6bS0xLjUtOHY0aC0ydi0yaC03di0yaDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMHYyNGgyNFYwSDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWxjb255IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTB2Mkg4di0yaDJ6bTYgMnYtMmgtMnYyaDJ6bTUgMnY4SDN2LThoMXYtNGMwLTQuNDIgMy41OC04IDgtOHM4IDMuNTggOCA4djRoMXpNNyAxNkg1djRoMnYtNHptNCAwSDl2NGgydi00em0wLTExLjkyQzguMTYgNC41NiA2IDcuMDMgNiAxMHY0aDVWNC4wOHpNMTMgMTRoNXYtNGMwLTIuOTctMi4xNi01LjQ0LTUtNS45MlYxNHptMiAyaC0ydjRoMnYtNHptNCAwaC0ydjRoMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdGh0dWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCI3XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEzVjQuODNDMjAgMy4yNyAxOC43MyAyIDE3LjE3IDJjLS43NSAwLTEuNDcuMy0yIC44M2wtMS4yNSAxLjI1Yy0uMTYtLjA1LS4zMy0uMDgtLjUxLS4wOC0uNCAwLS43Ny4xMi0xLjA4LjMybDIuNzYgMi43NmMuMi0uMzEuMzItLjY4LjMyLTEuMDggMC0uMTgtLjAzLS4zNC0uMDctLjUxbDEuMjUtMS4yNWEuODI4LjgyOCAwIDAgMSAxLjQxLjU5VjEzaC02Ljg1Yy0uMy0uMjEtLjU3LS40NS0uODItLjcybC0xLjQtMS41NWMtLjE5LS4yMS0uNDMtLjM4LS42OS0uNUEyLjI1MSAyLjI1MSAwIDAgMCA1IDEyLjI1VjEzSDJ2NmMwIDEuMS45IDIgMiAyIDAgLjU1LjQ1IDEgMSAxaDE0Yy41NSAwIDEtLjQ1IDEtMSAxLjEgMCAyLS45IDItMnYtNmgtMnptMCA2SDR2LTRoMTZ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlYWNoQWNjZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxOS41Ny0xLjQyNyAxLjQyOC02LjQ0Mi02LjQ0MiAxLjQzLTEuNDI4ek0xMy4xMiAzYy0yLjU4IDAtNS4xNi45OC03LjE0IDIuOTVsLS4wMS4wMWMtMy45NSAzLjk1LTMuOTUgMTAuMzYgMCAxNC4zMWwxNC4zLTE0LjMxQTEwLjA4NiAxMC4wODYgMCAwIDAgMTMuMTIgM3pNNi4xNCAxNy4yN2E4LjA2MyA4LjA2MyAwIDAgMS0uNjgtNi44MmMuMTkgMS45MS44OSAzLjc5IDIuMDcgNS40NGwtMS4zOSAxLjM4em0yLjg0LTIuODRDNy42MyAxMi4zOCA3LjEyIDkuOTMgNy42IDcuNmMuNTgtLjEyIDEuMTYtLjE4IDEuNzUtLjE4IDEuOCAwIDMuNTUuNTUgNS4wOCAxLjU2bC01LjQ1IDUuNDV6bTEuNDctOC45N2E4LjA2MyA4LjA2MyAwIDAgMSA2LjgyLjY4bC0xLjM5IDEuMzlhMTEuMjUgMTEuMjUgMCAwIDAtNS40My0yLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVudG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1SDRjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCA2aC02VjdoNnY0ek00IDdoOHYxMEg0Vjd6bTEwIDEwdi00aDZ2NGgtNnptLTQuNS01YzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnVuZ2Fsb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxNGgtMnYtMmgydjJ6bTUuMSAyLjU2TDE3IDE0Ljc5VjIxSDd2LTYuMmwtMS4xIDEuNzYtMS43LTEuMDZMMTIgM2w3LjggMTIuNS0xLjcgMS4wNnpNMTUgMTEuNTlsLTMtNC44LTMgNC44VjE5aDJ2LTNoMnYzaDJ2LTcuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdXNpbmVzc0NlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gtNFY1bC0yLTJoLTRMOCA1djJINGMtMS4xIDAtMiAuOS0yIDJ2NWMwIC43NS40IDEuMzggMSAxLjczVjE5YzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0ydi0zLjI4Yy41OS0uMzUgMS0uOTkgMS0xLjcyVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6TTQgOWgxNnY1aC01di0zSDl2M0g0Vjl6bTkgNmgtMnYtMmgydjJ6bTYgNEg1di0zaDR2MWg2di0xaDR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhYmluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMWMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnptMiAyTDYgNy41OFY2SDR2My4xMUwxIDExLjRsMS4yMSAxLjU5TDQgMTEuNjJWMjFoMTZ2LTkuMzhsMS43OSAxLjM2TDIzIDExLjQgMTIgM3ptMS45NCA0aC0zLjg5TDEyIDUuNTIgMTMuOTQgN3ptLTYuNSAyaDkuMTJMMTggMTAuMXYuOUg2di0uOUw3LjQ0IDl6TTE4IDEzdjJINnYtMmgxMnpNNiAxOXYtMmgxMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXJwZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43MyAxNC4yMyA3IDEuNSAzLjExIDUuMzlsOC4xMyAxMS42N2MtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wxLjQxIDEuNDFjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDQuMjQtNC4yNGMuNzktLjc4Ljc5LTIuMDUuMDEtMi44M3pNNS43MSA1LjYyIDcgNC4zM2w4LjQ5IDguNDktMi44MSAyLjgxTDUuNzEgNS42MnptOC4zNiAxNC4yNi0xLjQxLTEuNDEgNC4yNC00LjI0IDEuNDEgMS40MS00LjI0IDQuMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXNpbm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGFsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDE1IDEwIDcuNSAyLjUgMTVsMS40MSAxLjQxTDUgMTUuMzNWMjBoMTB2LTQuNjdsMS4wOSAxLjA5TDE3LjUgMTV6TTEzIDE4aC0ydi0zSDl2M0g3di00LjY3bDMtMyAzIDNWMTh6bTktMTAuNWgtMS4xOWwuNzUuNzUtLjcxLjcxLTEuNDYtMS40NmgtLjg5di44OWwxLjQ1IDEuNDUtLjcxLjcxLS43NC0uNzRWMTFoLTFWOS44MWwtLjc1Ljc1LS43MS0uNzEgMS40NS0xLjQ1di0uOWgtLjg5bC0xLjQ1IDEuNDUtLjcxLS43MS43NS0uNzVIMTR2LTFoMS4xOWwtLjc1LS43NS43MS0uNzEgMS40NSAxLjQ1aC44OXYtLjg3bC0xLjQ1LTEuNDUuNzEtLjcxLjc1Ljc1VjNoMXYxLjE5bC43NS0uNzUuNzEuNzEtMS40NiAxLjQ2di44OWguODlsMS40NS0xLjQ1LjcxLjcxLS43NC43NEgyMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hhcmdpbmdTdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuNSAxMS0zIDZ2LTRoLTJsMy02djRoMnpNMTcgM0g3djFoMTBWM20wIDE3SDd2MWgxMHYtMW0wLTE5YzEuMSAwIDIgLjkgMiAydjE4YzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjNjMC0xLjEuOS0yIDItMmgxMHpNNyAxOGgxMFY2SDd2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGVja3Jvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS42IDE4LjIgMTMgMTEuNzV2LS45MWEzLjQ5NiAzLjQ5NiAwIDAgMC0uMTgtNi43NUEzLjUxIDMuNTEgMCAwIDAgOC41IDcuNWgyYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41YzAgLjg0LS42OSAxLjUyLTEuNTMgMS41LS41NC0uMDEtLjk3LjQ1LS45Ny45OXYxLjc2TDIuNCAxOC4yYy0uNzcuNTgtLjM2IDEuOC42IDEuOGgxOGMuOTYgMCAxLjM3LTEuMjIuNi0xLjh6TTYgMThsNi00LjUgNiA0LjVINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoaWxkQ2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjkuNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuOTQgMTEuMzRhNC4wMDggNC4wMDggMCAwIDAtMi44MS0zLjE3IDkuMTE0IDkuMTE0IDAgMCAwLTIuMTktMi45MUMxNi4zNiAzLjg1IDE0LjI4IDMgMTIgM3MtNC4zNi44NS01Ljk0IDIuMjZjLS45Mi44MS0xLjY3IDEuOC0yLjE5IDIuOTFhMy45OTQgMy45OTQgMCAwIDAtMi44MSAzLjE3Yy0uMDQuMjEtLjA2LjQzLS4wNi42NiAwIC4yMy4wMi40NS4wNi42NmE0LjAwOCA0LjAwOCAwIDAgMCAyLjgxIDMuMTcgOC45NzcgOC45NzcgMCAwIDAgMi4xNyAyLjg5QzcuNjIgMjAuMTQgOS43MSAyMSAxMiAyMXM0LjM4LS44NiA1Ljk3LTIuMjhjLjktLjggMS42NS0xLjc5IDIuMTctMi44OWEzLjk5OCAzLjk5OCAwIDAgMCAyLjgtMy4xN2MuMDQtLjIxLjA2LS40My4wNi0uNjYgMC0uMjMtLjAyLS40NS0uMDYtLjY2ek0xOSAxNGMtLjEgMC0uMTktLjAyLS4yOS0uMDMtLjIuNjctLjQ5IDEuMjktLjg2IDEuODZDMTYuNiAxNy43NCAxNC40NSAxOSAxMiAxOXMtNC42LTEuMjYtNS44NS0zLjE3Yy0uMzctLjU3LS42Ni0xLjE5LS44Ni0xLjg2LS4xLjAxLS4xOS4wMy0uMjkuMDMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJjLjEgMCAuMTkuMDIuMjkuMDMuMi0uNjcuNDktMS4yOS44Ni0xLjg2QzcuNCA2LjI2IDkuNTUgNSAxMiA1czQuNiAxLjI2IDUuODUgMy4xN2MuMzcuNTcuNjYgMS4xOS44NiAxLjg2LjEtLjAxLjE5LS4wMy4yOS0uMDMgMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyem0tNyAzYzIuMDEgMCAzLjc0LTEuMjMgNC41LTNoLTljLjc2IDEuNzcgMi40OSAzIDQuNSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hpbGRGcmllbmRseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMnY4aDhjMC00LjQyLTMuNTgtOC04LTh6bTIgNlY0LjM0YzEuNy42IDMuMDUgMS45NSAzLjY2IDMuNjZIMTV6bS04LjU2IDMtLjk1LTJIMnYyaDIuMjJzMS44OSA0LjA3IDIuMTIgNC40MmMtMS4xLjU5LTEuODQgMS43NS0xLjg0IDMuMDhDNC41IDIwLjQzIDYuMDcgMjIgOCAyMmMxLjc2IDAgMy4yMi0xLjMgMy40Ni0zaDIuMDhjLjI0IDEuNyAxLjcgMyAzLjQ2IDMgMS45MyAwIDMuNS0xLjU3IDMuNS0zLjUgMC0xLjA0LS40Ni0xLjk3LTEuMTgtMi42MUE3Ljk0OCA3Ljk0OCAwIDAgMCAyMSAxMUg2LjQ0ek04IDIwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNy4xNyAxNyA4IDE3czEuNS42NyAxLjUgMS41UzguODMgMjAgOCAyMHptOSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuMTcgMTcgMTcgMTdzMS41LjY3IDEuNSAxLjVTMTcuODMgMjAgMTcgMjB6bS43NC01LjM0LS4yOS4zN0EzLjUwNSAzLjUwNSAwIDAgMCAxMy44NCAxN2gtMi42OGMtLjUtMS4wNC0xLjUtMS44LTIuNjgtMS45N2wtLjQ0LS42N2MtLjEtLjE3LS4zNC0uNjktLjY3LTEuMzZoMTEuMjljLS4yMS41OS0uNTIgMS4xNS0uOTIgMS42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvcnBvcmF0ZUZhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgyMFY3SDEyem0tMiAxMkg0di0yaDZ2MnptMC00SDR2LTJoNnYyem0wLTRINFY5aDZ2MnptMC00SDRWNWg2djJ6bTEwIDEyaC04VjloOHYxMHptLTItOGgtNHYyaDR2LTJ6bTAgNGgtNHYyaDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb3R0YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA2IDcuNThWNkg0djMuMTFMMSAxMS40bDEuMjEgMS41OUw0IDExLjYyVjIxaDE2di05LjM4bDEuNzkgMS4zNkwyMyAxMS40IDEyIDN6bTYgMTZoLTV2LTRoLTJ2NEg2di04LjlsNi00LjU4IDYgNC41OFYxOXpNMTAgMWMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvdW50ZXJ0b3BzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBoLTRWN2MwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgM2gyYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYzSDhjMS4xIDAgMi0uOSAyLTJWNEg0djRjMCAxLjEuOSAyIDIgMkgydjJoMnY4aDE2di04aDJ2LTJ6TTYgNmgydjJINlY2em0wIDEydi02aDV2Nkg2em0xMiAwaC01di02aDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyaWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5aC02VjRIOEM1Ljc5IDQgNCA1Ljc5IDQgOHY2YzAgMS4xLjkgMiAyIDJoMnYyLjkzYy0uNjEtLjM1LTEuMTYtLjc4LTEuNjUtMS4yN2wtMS40MiAxLjQyQzYuNzQgMjAuODggOS4yNCAyMiAxMiAyMmMyLjc2IDAgNS4yNi0xLjEyIDcuMDctMi45M2wtMS40Mi0xLjQyYy0uNDkuNDktMS4wNS45Mi0xLjY1IDEuMjdWMTZoMmMxLjEgMCAyLS45IDItMnYtM2MwLTEuMS0uOS0yLTItMnptLTQgMTAuNzVjLS42NC4xNi0xLjMxLjI1LTIgLjI1cy0xLjM2LS4wOS0yLS4yNVYxNmg0djMuNzV6TTE4IDE0SDZWOGMwLTEuMS45LTIgMi0yaDJ2NWg4djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2djEyaDJWOGgxMHYxMGgydi0yaDR2MmgyVjZIMnptMTggMnYyaC00VjhoNHptLTQgNnYtMmg0djJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdFN0ZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC41MSAxNS42OC0xLjQxLTEuNDEgNC40OC00LjQ4TDIzIDExLjJsLTQuNDkgNC40OHptLTMuNTMtMy41MyAzLjA3LTMuMDctNC4yNS00LjI2LTMuMDggMy4wN0w5LjMgNi40NyAxMy44IDJsNy4wOCA3LjA4LTQuNDggNC40OC0xLjQyLTEuNDF6bTYuMiA5LjA1LTEuNDEgMS40MS01Ljk0LTUuOTRMMTAuNSAyMEgxdi0yLjYzYzAtLjg0LjUyLTEuNTcgMS4zLTEuODguNTgtLjIzIDEuMjgtLjU2IDEuOTctMS4wMmwxLjM4IDEuMzhjLjA5LjEuMjIuMTUuMzUuMTVzLjI2LS4wNS4zNi0uMTVjLjItLjIuMi0uNTEgMC0uNzFsLTEuMjgtMS4yOGMuMjctLjI0LjUzLS41MS43Ny0uOGwxLjI3IDEuMjdhLjQ4NS40ODUgMCAwIDAgLjcgMGMuMi0uMi4yLS41MSAwLS43MWwtMS40LTEuNGMuMTktLjM0LjM0LS43Mi40NS0xLjEybDEuNzEgMS43MmEuNDg1LjQ4NSAwIDAgMCAuNyAwYy4xOS0uMi4xOS0uNS4wMS0uN2wtNy45LTcuOSAxLjQyLTEuNDFMMjEuMTggMjEuMnptLTguNzYtNS45NC0xLjY3LTEuNjgtMy4zMyAzLjMyYy0uNzguNzgtMi4wNS43OC0yLjgzLS4wMWwtLjE5LS4xNy0uNDcuMjRjLS4yOS4xNC0uNTkuMjctLjg5LjM5bC0uMDEuNjVoNi42NGwyLjc1LTIuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdFRvdWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMiA3IDkuODN2NC4zbC0yLjYtMS40OGMtLjE3LS4wOS0uMzQtLjE0LS41NC0uMTQtLjI2IDAtLjUuMDktLjcuMjZMMiAxMy44OGw2LjggNy4xOGMuNTcuNiAxLjM1Ljk0IDIuMTguOTRIMTdjLjYyIDAgMS4xOC0uMTkgMS42Ni0uNTJsMS4xMiAxLjEyIDEuNDEtMS40MUwyLjgxIDIuODF6TTE3IDIwaC02Yy0uMzkgMC0uNjQtLjIzLS43NS0uMzZMNi44NyAxNkg5di00LjE3bDguMTQgOC4xNGMtLjA1LjAxLS4wOS4wMy0uMTQuMDN6bS0zLjE3LTlIMTRWMy4yNWExLjI1IDEuMjUgMCAwIDEgMi41IDBWMTFoMVY1LjI1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMHYxMS45MmwtMi0yVjEzaC0yLjE3bC0yLTJ6bS0uODMtLjgzVjIuMjVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwdjUuNDJsMi41IDIuNXptLTMuNS0zLjVWNC4yNUM5LjUgMy41NiA4Ljk0IDMgOC4yNSAzYy0uNjcgMC0xLjIuNTMtMS4yNCAxLjE4TDkuNSA2LjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNzUgMTZhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDYuNzVjLjY5IDAgMS4yNS0uNTYgMS4yNS0xLjI1IDAtLjY3LS41My0xLjItMS4xOC0xLjI0TDguODcgMTBsMS40OC0yLjZjLjA5LS4xNy4xNC0uMzQuMTQtLjU0IDAtLjI2LS4wOS0uNS0uMjYtLjdMOS4xMiA1bC03LjE4IDYuOGMtLjYuNTYtLjk0IDEuMzUtLjk0IDIuMTdWMjBjMCAxLjY2IDEuMzQgMyAzIDNoMTMuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDcuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDguNzV6TTEwIDIxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNmMwLS4zOS4yMy0uNjQuMzYtLjc1TDcgOS44N1YxMmgzdjl6bTUuNjUtMTYuMTQtLjA3LS4wN2MtLjU3LS42Mi0uODItMS40MS0uNjctMi4yTDE1IDJoLTEuODlsLS4wNi40M2MtLjIgMS4zNi4yNyAyLjcxIDEuMyAzLjcybC4wNy4wNmMuNTcuNjIuODIgMS40MS42NyAyLjJsLS4xMS41OWgxLjkxbC4wNi0uNDNjLjIxLTEuMzYtLjI3LTIuNzEtMS4zLTMuNzF6bTQgMC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTkgMmgtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2Yy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZXZhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkgMTV2LTRoMXYtMi41YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAyVjE0aDF2NGgzek04LjUgOC41YTEuMjUgMS4yNSAwIDEgMCAwLTIuNSAxLjI1IDEuMjUgMCAwIDAgMCAyLjV6TTE4IDExbC0yLjUtNC0yLjUgNGg1em0tNSAyIDIuNSA0IDIuNS00aC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXNjYWxhdG9yV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3LjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41UzE3LjgzIDggMTcgOHMtMS41LjY3LTEuNSAxLjV6bTMgMi41aC0yLjg0Yy0uNTguMDEtMS4xNC4zMi0xLjQ1Ljg2bC0uOTIgMS4zMkw5LjcyIDhhMi4wMiAyLjAyIDAgMCAwLTEuNzEtMUg1Yy0xLjEgMC0yIC45LTIgMnY2aDEuNXY3aDVWMTEuNjFMMTIuMDMgMTZoMi4ybC43Ny0xLjFWMjJoNHYtNWgxdi0zLjVjMC0uODItLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXNjYWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTIgM2gtMy4zbC01IDlIN2MtLjgzIDAtMS41LjY3LTEuNSAxLjVTNi4xNyAxOCA3IDE4aDMuM2w1LTlIMTdjLjgzIDAgMS41LS42NyAxLjUtMS41UzE3LjgzIDYgMTcgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhbWlseVJlc3Ryb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGMwLTEuMTEuODktMiAyLTJzMiAuODkgMiAyLS44OSAyLTIgMi0yLS44OS0yLTJ6bTQgMTh2LTZoMi41bC0yLjU0LTcuNjNBMi4wMSAyLjAxIDAgMCAwIDE4LjA2IDdoLS4xMmEyIDIgMCAwIDAtMS45IDEuMzdsLS44NiAyLjU4YzEuMDguNiAxLjgyIDEuNzMgMS44MiAzLjA1djhoM3ptLTcuNS0xMC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41UzExIDkuMTcgMTEgMTBzLjY3IDEuNSAxLjUgMS41ek01LjUgNmMxLjExIDAgMi0uODkgMi0ycy0uODktMi0yLTItMiAuODktMiAyIC44OSAyIDIgMnptMiAxNnYtN0g5VjljMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2NmgxLjV2N2g0em02LjUgMHYtNGgxdi00YzAtLjgyLS42OC0xLjUtMS41LTEuNWgtMmMtLjgyIDAtMS41LjY4LTEuNSAxLjV2NGgxdjRoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZlbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTJ2LTJoLTJWN2wtMy0zLTIgMi0yLTItMiAyLTItMi0zIDN2M0gzdjJoMnYySDN2MmgydjRoMTR2LTRoMnYtMmgtMnYtMmgyem0tNS01LjE3IDEgMVYxMGgtMlY3LjgzbC40MS0uNDEuNTktLjU5em0tNCAwIC41OS41OS40MS40MVYxMGgtMlY3LjgzbC40MS0uNDEuNTktLjU5ek0xMSAxNHYtMmgydjJoLTJ6bTIgMnYyaC0ydi0yaDJ6TTcgNy44M2wxLTEgLjU5LjU5LjQxLjQxVjEwSDdWNy44M3pNNyAxMmgydjJIN3YtMnptMCA0aDJ2Mkg3di0yem0xMCAyaC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpcmVFeHRpbmd1aXNoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE5aDEwdjFjMCAxLjEtLjkgMi0yIDJIOWMtMS4xIDAtMi0uOS0yLTJ2LTF6bTAtMWgxMHYtNUg3djV6TTE3IDN2NmwtMy4xNS0uNjZjLS4wMSAwLS4wMS4wMS0uMDIuMDIgMS41NS42MiAyLjcyIDEuOTggMy4wNyAzLjY0SDcuMWMuMzQtMS42NiAxLjUyLTMuMDIgMy4wNy0zLjY0LS4zMy0uMjYtLjYtLjU4LS44LS45NUw1IDYuNXYtMWw0LjM3LS45MUM5Ljg3IDMuNjUgMTAuODYgMyAxMiAzYy43IDAgMS4zNC4yNSAxLjg1LjY2TDE3IDN6bS00IDNjLS4wMy0uNTktLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpdG5lc3NDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjU3IDE0Ljg2IDIyIDEzLjQzIDIwLjU3IDEyIDE3IDE1LjU3IDguNDMgNyAxMiAzLjQzIDEwLjU3IDIgOS4xNCAzLjQzIDcuNzEgMiA1LjU3IDQuMTQgNC4xNCAyLjcxIDIuNzEgNC4xNGwxLjQzIDEuNDNMMiA3LjcxbDEuNDMgMS40M0wyIDEwLjU3IDMuNDMgMTIgNyA4LjQzIDE1LjU3IDE3IDEyIDIwLjU3IDEzLjQzIDIybDEuNDMtMS40M0wxNi4yOSAyMmwyLjE0LTIuMTQgMS40MyAxLjQzIDEuNDMtMS40My0xLjQzLTEuNDNMMjIgMTYuMjlsLTEuNDMtMS40M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvb2RCYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNS41IDYgNC41djlINnYtOWw2LTQuNU0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bS0uNSA2LjV2M0gxMXYtM2gtMXYzaC0uNXYtM2gtMXYzYzAgLjgzLjY3IDEuNSAxLjUgMS41djRoMXYtNGMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTNoLTF6bTEuNSAydjNoMVYxOGgxVjkuNWMtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3VuZGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoM0wxMiAzIDIgMTJoM3YzSDN2MmgydjNoMnYtM2g0djNoMnYtM2g0djNoMnYtM2gydi0yaC0ydi0zek03IDE1di00LjgxbDQtMy42VjE1SDd6bTYgMFY2LjU5bDQgMy42VjE1aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRnJlZUJyZWFrZmFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOWgxNnYySDR6TTIwIDNINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJhMiAyIDAgMCAwIDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bS00IDEwYzAgMS4xLS45IDItMiAySDhjLTEuMSAwLTItLjktMi0yVjVoMTB2OHptNC01aC0yVjVoMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2l0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDZIOVY0SDd2Mkg2bC00IDR2OWgyMHYtOWwtNC00ek00IDEyaDEwdjVINHYtNXptMTYgNWgtNHYtNi4xN2wyLTIgMiAyVjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR29sZkNvdXJzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOS41XCIsXCJjeVwiOlwiMTkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDUuOTIgOSAydjE4SDd2LTEuNzNjLTEuNzkuMzUtMyAuOTktMyAxLjczIDAgMS4xIDIuNjkgMiA2IDJzNi0uOSA2LTJjMC0uOTktMi4xNi0xLjgxLTUtMS45N1Y4Ljk4bDYtMy4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjBIMnYtMmg1Ljc1QTguMDMyIDguMDMyIDAgMCAwIDIgMTIuMjZjLjY0LS4xNiAxLjMxLS4yNiAyLS4yNiA0LjQyIDAgOCAzLjU4IDggOHptMTAtNy43NGMtLjY0LS4xNi0xLjMxLS4yNi0yLS4yNi0yLjkzIDAtNS40OCAxLjU4LTYuODggMy45M2E5LjgyIDkuODIgMCAwIDEgLjg3IDQuMDdoOHYtMmgtNS43NUE4LjA2MSA4LjA2MSAwIDAgMSAyMiAxMi4yNnptLTYuMzYtMS4yNGExMC4wMyAxMC4wMyAwIDAgMSA0LjA5LTVDMTUuNDQgNi4xNiAxMiA5LjY3IDEyIDE0di4wMmMuOTUtMS4yNyAyLjItMi4zIDMuNjQtM3ptLTQuMjItMi4xN0E4LjUyNyA4LjUyNyAwIDAgMCA2LjcgNEM4LjE0IDUuODYgOSA4LjE4IDkgMTAuNzFjMCAuMjEtLjAzLjQxLS4wNC42MS40My4yNC44My41MiAxLjIyLjgyYTkuOTEgOS45MSAwIDAgMSAxLjI0LTMuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb2xpZGF5VmlsbGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTggNC02IDZ2MTBoMTJWMTBMOCA0em00IDE0SDl2LTNIN3YzSDR2LTcuMTdsNC00IDQgNFYxOHptLTMtNUg3di0yaDJ2MnptOSA3VjguMzVMMTMuNjUgNGgtMi44M0wxNiA5LjE4VjIwaDJ6bTQgMFY2LjY5TDE5LjMxIDRoLTIuODNMMjAgNy41MlYyMGgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG90VHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjE1IDEyYy0uMzEtLjIyLS41OS0uNDYtLjgyLS43MmwtMS40LTEuNTVjLS4xOS0uMjEtLjQzLS4zOC0uNjktLjUtLjI5LS4xNC0uNjItLjIzLS45Ni0uMjNoLS4wM0M2LjAxIDkgNSAxMC4wMSA1IDExLjI1VjEySDJ2OGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi04SDExLjE1ek03IDIwSDV2LTZoMnY2em00IDBIOXYtNmgydjZ6bTQgMGgtMnYtNmgydjZ6bTQgMGgtMnYtNmgydjZ6TTE3LjQyIDcuMjFjLjU3LjYyLjgyIDEuNDEuNjcgMi4ybC0uMTEuNTloMS45MWwuMDYtLjQzYy4yMS0xLjM2LS4yNy0yLjcxLTEuMy0zLjcxbC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTggM2gtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2em0tNCAwYy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MWwtLjA3LS4wN2MtLjU3LS42Mi0uODItMS40MS0uNjctMi4yTDE0IDNoLTEuODlsLS4wNi40M2MtLjIgMS4zNi4yNyAyLjcxIDEuMyAzLjcybC4wNy4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXNlU2lkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoM0wxMiAzIDIgMTJoM3Y4aDJ2LTJoMTB2Mmgydi04ek03LjIxIDEwaDkuNThsLjIxLjE5VjEySDd2LTEuODFsLjIxLS4xOXptNy4zNi0ySDkuNDNMMTIgNS42OSAxNC41NyA4ek03IDE2di0yaDEwdjJIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOS4zVjRoLTN2Mi42TDEyIDMgMiAxMmgzdjhoNnYtNmgydjZoNnYtOGgzbC0zLTIuN3pNMTcgMThoLTJ2LTZIOXY2SDd2LTcuODFsNS00LjUgNSA0LjVWMTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEwaDRjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91c2Vib2F0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjLTEuOTUgMC0yLjEgMS0zLjM0IDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDF2MmMxLjkgMCAyLjE3LTEgMy4zNS0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA4LTEgMy4zMi0xczEuMzcgMSAzLjMyIDFjMS45MSAwIDIuMTQtMSAzLjMzLTEgMS4xOCAwIDEuNDUgMSAzLjM1IDF2LTJjLTEuMjQgMC0xLjM4LTEtMy4zMy0xLTEuOTEgMC0yLjE0IDEtMy4zMyAxLTEuMjQgMC0xLjM5LTEtMy4zNC0xem04LjM0LTQuNjYtMS4zNyAxLjM3Yy0uMTkuMTgtLjQ1LjI5LS43MS4yOUgxN1Y5LjY1bDEuMzIuOTdMMTkuNSA5IDEyIDMuNSA0LjUgOWwxLjE4IDEuNjFMNyA5LjY1VjEzSDUuNzRjLS4yNyAwLS41Mi0uMTEtLjcxLS4yOWwtMS4zNy0xLjM3LTEuNDEgMS40MSAxLjM3IDEuMzdjLjU2LjU2IDEuMzMuODggMi4xMi44OGgxMi41MWMuOCAwIDEuNTYtLjMyIDIuMTItLjg4bDEuMzctMS4zNy0xLjQtMS40MXpNMTMgMTN2LTJoLTJ2Mkg5VjguMThsMy0yLjIgMyAyLjJWMTNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJcm9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNmMtMS42NiAwLTMgMS4zNC0zIDN2NGMwIC41NS0uNDUgMS0xIDF2LTRjMC0xLjY2LTEuMzQtMy0zLTNoLTRjLTEuNjYgMC0zIDEuMzQtMyAzaDJjMC0uNTUuNDUtMSAxLTFoNGMuNTUgMCAxIC40NSAxIDF2MUg2Yy0yLjIxIDAtNCAxLjc5LTQgNHYzaDE1di0yYzEuNjYgMCAzLTEuMzQgMy0zVjljMC0uNTUuNDUtMSAxLTFoMVY2aC0xem0tNiAxMEg0di0xYzAtMS4xLjktMiAyLTJoOXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2l0Y2hlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1aDJ2M0g4em0wIDdoMnY1SDh6bTEwLTkuOTlMNiAyYTIgMiAwIDAgMC0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xMS0uOS0xLjk5LTItMS45OXpNMTggMjBINnYtOS4wMmgxMlYyMHptMC0xMUg2VjRoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lZXRpbmdSb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOVY0aC00VjNINXYxNkgzdjJoMTJWNmgydjE1aDR2LTJoLTJ6bS02IDBIN1Y1aDZ2MTR6bS0zLThoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWljcm93YXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgNmgxMHYxMkg0VjZ6bTE2IDEyaC00VjZoNHYxMnptLTEtOWgtMlY3aDJ2MnptLTEgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLTcuNzUtMWMtLjc5IDAtMS4zNy0uMzgtMS43OS0uNjYtLjMzLS4yMi0uNTItLjM0LS43MS0uMzQtLjM3IDAtLjguNDEtLjk1LjYxbC0xLjQyLTEuNDJjLjM1LS40IDEuMjEtMS4xOSAyLjM3LTEuMTkuOCAwIDEuMzkuMzkgMS44MS42Ny4zMS4yMS41MS4zMy42OS4zMy4zNyAwIC44LS40MS45NS0uNjFsMS40MiAxLjQyYy0uMzYuNC0xLjIxIDEuMTktMi4zNyAxLjE5em0wLTVjLS43OSAwLTEuMzctLjM4LTEuNzktLjY2LS4zMy0uMjItLjUyLS4zNC0uNzEtLjM0LS4zNyAwLS44LjQxLS45NS42MUw1LjM3IDkuMTlDNS43MyA4Ljc5IDYuNTkgOCA3Ljc1IDhjLjggMCAxLjM5LjM5IDEuODEuNjcuMzEuMjEuNTEuMzMuNjkuMzMuMzcgMCAuOC0uNDEuOTUtLjYxbDEuNDIgMS40MmMtLjM2LjQtMS4yMSAxLjE5LTIuMzcgMS4xOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5pZ2h0U2hlbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDUuNSA2IDQuNXY5SDZ2LTlsNi00LjVNMTIgMyA0IDl2MTJoMTZWOWwtOC02em0zIDloLTMuNXYzLjVIOFYxMUg3djdoMXYtMS41aDhWMThoMXYtNGMwLTEuMS0uOS0yLTItMnptLTUuMjUuNWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9CYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuOTggNC4xNWMuMDEgMCAuMDEtLjAxLjAyLS4wMVYyaDN2Mmg0VjJoM3YyLjE0YzEuNzIuNDUgMyAyIDMgMy44NnY5LjE3bC0yLTJWOGMwLTEuMS0uOS0yLTItMkg4LjgzTDYuOTggNC4xNXpNMTQuODMgMTJsMS42NyAxLjY3VjEyaC0xLjY3em00Ljk1IDEwLjYxLS44NS0uODVjLS4yOC4xNS0uNTkuMjQtLjkzLjI0SDZjLTEuMSAwLTItLjktMi0yVjhjMC0uMzYuMDYtLjY5LjE1LTEuMDJMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyek0xNy4xNyAyMGwtNi02SDcuNXYtMmgxLjY3TDYgOC44M1YyMGgxMS4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQ2VsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZ2OC4xN2wyIDJWM2MwLTEuMS0uOS0xLjk5LTItMS45OUw3IDFjLS44NSAwLTEuNTguNTUtMS44NyAxLjNMOC44MyA2SDE3ek03IDNoMTB2MUg3VjN6bTE0LjE5IDE4LjE5TDE5IDE5bC0yLTJMNyA3IDUgNSAyLjgxIDIuODEgMS4zOSA0LjIyIDUgNy44M1YyMWMwIDEuMS45IDIgMiAyaDEwYy44NSAwIDEuNTgtLjU1IDEuODctMS4zbC45MS45MSAxLjQxLTEuNDJ6TTE3IDIxSDd2LTFoMTB2MXpNNyAxOFY5LjgzTDE1LjE3IDE4SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb0RyaW5rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsOC4yMyA4LjIzTDExIDE0djVINnYyaDEydi0uMTdsMS43OCAxLjc4IDEuNDEtMS40MnpNMTMgMTl2LTMuMTdMMTYuMTcgMTlIMTN6TTcuODMgNWwtMi0ySDIxdjJsLTYuMiA2Ljk3LTEuNDItMS40MkwxNC43NyA5aC0yLjk0bC0yLTJoNi43NGwxLjc4LTJINy44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vRmxhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjQgNS42SDIyTDE5IDExVjdoLTFWMmg0bC0xLjYgMy42ek0xNiAxMS40djEuNzdsMiAyVjExYzAtLjg4LS43Mi0xLjYtMS42LTEuNmgtMi41NEwxMi41OCA4aC0xLjc1bDMuNCAzLjRIMTZ6TTIuMSAyLjEuNjkgMy41MWw1LjY2IDUuNjYtLjIxLjIzSDMuNmMtLjg4IDAtMS42LjcyLTEuNiAxLjZ2OS40YzAgLjg4LjcyIDEuNiAxLjYgMS42aDEyLjhjLjc1IDAgMS4zOC0uNTIgMS41NS0xLjIybDIuNTQgMi41NCAxLjQxLTEuNDFMMi4xIDIuMXptOS40IDEzLjRjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjVTOS4xNyAxNCAxMCAxNHMxLjUuNjcgMS41IDEuNXptNC40NiA0LjVINHYtOC42aDMuMDJsLjU5LS42NS4xNS0uMTYgMS41IDEuNUEzLjQ4NiAzLjQ4NiAwIDAgMCA2LjUgMTUuNWMwIDEuOTMgMS41NyAzLjUgMy41IDMuNSAxLjY4IDAgMy4wNy0xLjE4IDMuNDItMi43NmwyLjU1IDIuNTUtLjAxIDEuMjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb0Zvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDIxaDE1LjAxdi45OGMwIC41Ni0uNDUgMS4wMS0xLjAxIDEuMDFIMi4wMWMtLjU2IDAtMS4wMS0uNDUtMS4wMS0xLjAxVjIxem0xOS40OSAyLjMxTDE2IDE4LjgzVjE5SDF2LTJoMTMuMTdsLTItMkgxYzAtMy4yNCAyLjQ2LTUuMTcgNS4zOC01Ljc5bC01LjctNS43TDIuMSAyLjEgMTMgMTNsMiAyIDYuOSA2LjktMS40MSAxLjQxek0xMC4xNyAxM2wtMi0yYy0xLjQyLjA2LTMuNTIuNTYtNC41NSAyaDYuNTV6TTIzIDVoLTVWMWgtMnY0aC01bC4yMyAyaDkuNTZsLTEgOS45NyAxLjgzIDEuODNMMjMgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vTWVldGluZ1Jvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDV2My44OGwyIDJWNmgzdjcuODhsMiAyVjRoLTVWM0g2LjEybDIgMnpNMi40MSAyLjEzIDEgMy41NGw0IDRWMTlIM3YyaDExdi00LjQ2TDIwLjQ2IDIzbDEuNDEtMS40MUwyLjQxIDIuMTN6TTEyIDE5SDdWOS41NGw1IDVWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb1Bob3RvZ3JhcGh5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC45IDYuMDcgNy40OCA0LjY2IDkgM2g2bDEuODMgMkgyMGMxLjEgMCAyIC45IDIgMnYxMmMwIC4wNS0uMDEuMS0uMDIuMTZMMjAgMTcuMTdWN2gtNC4wNWwtMS44My0ySDkuODhMOC45IDYuMDd6bTExLjU5IDE3LjI0TDE4LjE3IDIxSDRjLTEuMSAwLTItLjktMi0yVjdjMC0uNTkuMjctMS4xMi42OC0xLjQ5bC0yLTJMMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek05LjE5IDEyLjAyYy0uMTEuMzEtLjE5LjYzLS4xOS45OCAwIDEuNjYgMS4zNCAzIDMgMyAuMzUgMCAuNjctLjA4Ljk4LS4xOWwtMy43OS0zLjc5ek0xNi4xNyAxOWwtMS42OC0xLjY4Yy0uNzMuNDMtMS41OC42OC0yLjQ5LjY4LTIuNzYgMC01LTIuMjQtNS01IDAtLjkxLjI1LTEuNzYuNjgtMi40OUw0LjE3IDdINHYxMmgxMi4xN3ptLTEuMzYtNy4wMiAyLjA3IDIuMDdjLjA4LS4zNC4xMi0uNjkuMTItMS4wNSAwLTIuNzYtMi4yNC01LTUtNS0uMzYgMC0uNzEuMDQtMS4wNi4xMmwyLjA3IDIuMDdjLjg0LjMgMS41Ljk2IDEuOCAxLjc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9TdHJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyem03LTExLjM0djMuNTFsMiAydi03LjljLjU4LS42OC45Ny0xLjI3IDEuNjUtMS4yNy43NyAwIDEuMzUuNjYgMS4zNSAxLjQ4VjdoMnYtLjUyQzIyIDQuNTYgMjAuNTIgMyAxOC42NSAzYy0xLjY2IDAtMi41NCAxLjI3LTMuMTggMi4wM2wtMy41IDQuMTEgMS40MiAxLjQyTDE1IDguNjZ6bTQuNzggMTMuOTUtMS45MS0xLjkxYy0uMjkuNzYtMS4wMSAxLjMtMS44NyAxLjMtMS4xIDAtMi0uOS0yLTIgMC0uODYuNTQtMS41OCAxLjMtMS44N0wxNC4xNyAxN0g3LjQzYy0uODUgMC0xLjMxLTEtLjc2LTEuNjVsMi42OS0zLjE2LTcuOTctNy45N0wyLjggMi44MWw3Ljg2IDcuODYgMS40MiAxLjQyIDkuMTEgOS4xMS0xLjQxIDEuNDF6TTEyLjE3IDE1bC0xLjM5LTEuMzlMOS42IDE1aDIuNTd6TTEwIDVjLjI5IDAgLjU4LjAyLjg2LjA1TDkuNDkgNi42N2wxLjQyIDEuNDJMMTQuMyA0LjFDMTMuMDMgMy40IDExLjU2IDMgMTAgM2MtMS4yMyAwLTIuNC4yNS0zLjQ3LjdMOC4xIDUuMjdBNy4wOSA3LjA5IDAgMCAxIDEwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPdGhlckhvdXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMSAxMS40bDEuMjEgMS41OUw0IDExLjYyVjIxaDE2di05LjM4bDEuNzkgMS4zNkwyMyAxMS40IDEyIDN6bTYgMTZINnYtOC45bDYtNC41OCA2IDQuNThWMTl6bS05LTVjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXptMy0xYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTMgMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDEtLjQ1IDEtMSAxLTEtLjQ1LTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDgtMy4yNSAzLjI1Yy4zMS4xMi41Ni4yNy43Ny4zOS4zNy4yMy41OS4zNiAxLjE1LjM2cy43OC0uMTMgMS4xNS0uMzZjLjQ2LS4yNyAxLjA4LS42NCAyLjE5LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIyLjYuMzYgMS4xNS4zNi41NSAwIC43OC0uMTMgMS4xNS0uMzYuMTItLjA3LjI2LS4xNS40MS0uMjNMMTAuNDggNUM4LjkzIDMuNDUgNy41IDIuOTkgNSAzdjIuNWMxLjgyLS4wMSAyLjg5LjM5IDQgMS41bDEgMXptMTIgOC41aC0uMDIuMDJ6bS0xNi42NS0xYy41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDcuNjQgMi4xOC42NHMxLjczLS4zNyAyLjE4LS42NGMuMzctLjIzLjU5LS4zNiAxLjE1LS4zNi41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDcuNjQgMi4xOC42NHMxLjczLS4zNyAyLjE4LS42NGMuMzctLjIzLjU5LS4zNiAxLjE1LS4zNi41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDYuNjMgMi4xNi42NHYtMmMtLjU1IDAtLjc4LS4xNC0xLjE1LS4zNi0uNDUtLjI3LTEuMDctLjY0LTIuMTgtLjY0cy0xLjczLjM3LTIuMTguNjRjLS4zNy4yMy0uNi4zNi0xLjE1LjM2cy0uNzgtLjE0LTEuMTUtLjM2Yy0uNDUtLjI3LTEuMDctLjY0LTIuMTgtLjY0cy0xLjczLjM3LTIuMTguNjRjLS4zNy4yMy0uNTkuMzYtMS4xNS4zNi0uNTUgMC0uNzgtLjE0LTEuMTUtLjM2LS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOC42NGMtLjM3LjIzLS41OS4zNi0xLjE1LjM2djJjMS4xMSAwIDEuNzMtLjM3IDIuMi0uNjQuMzctLjIzLjYtLjM2IDEuMTUtLjM2ek0xOC42NyAxOGMtMS4xMSAwLTEuNzMuMzctMi4xOC42NC0uMzcuMjMtLjYuMzYtMS4xNS4zNi0uNTUgMC0uNzgtLjE0LTEuMTUtLjM2LS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOS42NGMtLjM3LjIzLS41OS4zNi0xLjE1LjM2cy0uNzgtLjEzLTEuMTUtLjM2Yy0uNDUtLjI3LTEuMDctLjY0LTIuMTgtLjY0cy0xLjczLjM3LTIuMTkuNjRjLS4zNy4yMy0uNTkuMzYtMS4xNS4zNnYyYzEuMTEgMCAxLjczLS4zNyAyLjE5LS42NC4zNy0uMjMuNi0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTMgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43My0uMzcgMi4xOS0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43Mi0uMzcgMi4xOC0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjR2LTJjLS41NiAwLS43OC0uMTMtMS4xNS0uMzYtLjQ1LS4yNy0xLjA3LS42NC0yLjE4LS42NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiNS41XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJpY2VCb3dsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNjYgMTRjLS42NiAxLjkyLTIuMjQgMy41NC00LjQgNC4zOWwtMS4yNi40OVYyMGgtNHYtMS4xMmwtMS4yNy0uNWMtMi4xNi0uODUtMy43NC0yLjQ3LTQuNC00LjM5aDE1LjMzTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyYzAgMy42OSAyLjQ3IDYuODYgNiA4LjI1VjIyaDh2LTEuNzVjMy41My0xLjM5IDYtNC41NiA2LTguMjUgMC01LjUyLTQuNDgtMTAtMTAtMTB6bS0yIDEwVjQuMjZjLjY0LS4xNiAxLjMxLS4yNiAyLS4yNnMxLjM2LjEgMiAuMjZWMTJoLTR6bTYgMFY1LjA4YzIuMzkgMS4zOSA0IDMuOTYgNCA2LjkyaC00ek00IDEyYzAtMi45NSAxLjYxLTUuNTMgNC02LjkyVjEySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb29maW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMThoLTJ2LTJoMnYyem0yLTRIOXY2aDZ2LTZ6bTQtNC43VjRoLTN2Mi42TDEyIDMgMiAxMmgzbDctNi4zMUwxOSAxMmgzbC0zLTIuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvb21QcmVmZXJlbmNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjY5IDE2LjM3IDEuMTQtMS0xLTEuNzMtMS40NS40OWMtLjMyLS4yNy0uNjgtLjQ4LTEuMDgtLjYzTDE5IDEyaC0ybC0uMyAxLjQ5Yy0uNC4xNS0uNzYuMzYtMS4wOC42M2wtMS40NS0uNDktMSAxLjczIDEuMTQgMWMtLjA4LjUtLjA4Ljc2IDAgMS4yNmwtMS4xNCAxIDEgMS43MyAxLjQ1LS40OWMuMzIuMjcuNjguNDggMS4wOC42M0wxNyAyMmgybC4zLTEuNDljLjQtLjE1Ljc2LS4zNiAxLjA4LS42M2wxLjQ1LjQ5IDEtMS43My0xLjE0LTFjLjA4LS41MS4wOC0uNzcgMC0xLjI3ek0xOCAxOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTEtMTV2NmgtMlY2aC0ydjZoLTJWNUg3djE0aDV2Mkgzdi0yaDJWM2gxMHYxaDR6bS03IDloLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm9vbVNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk4IDE3SDJ2MmgyMHYtMnpNMjEgMTZjLS4yNy00LjA3LTMuMjUtNy40LTcuMTYtOC4yMUEyLjAwNiAyLjAwNiAwIDAgMCAxMiA1YTIuMDA2IDIuMDA2IDAgMCAwLTEuODQgMi43OUM2LjI1IDguNiAzLjI3IDExLjkzIDMgMTZoMTh6bS05LTYuNDJjMi45NSAwIDUuNDcgMS44MyA2LjUgNC40MWgtMTNBNy4wMDIgNy4wMDIgMCAwIDEgMTIgOS41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJ2SG9va3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxN3YtNmMwLTEuMS0uOS0yLTItMkg3VjdsLTMgMyAzIDN2LTJoNHYzSDR2M2MwIDEuMS45IDIgMiAyaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g4di0yaC0yem0tOSAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTctNmgtNHYtM2g0djN6TTE3IDJ2Mkg5djJoOHYybDMtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbW9rZUZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgMTNIMjJ2M2gtMS41ek0xOCAxM2gxLjV2M0gxOHptLTEgMGgtMi4zNEwxNyAxNS4zNHptLTIuNS00LjM1aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjEyaDEuNXYtMS42NGMwLTEuODEtMS42LTMuMTYtMy40Ny0zLjE2SDE0LjVjLTEuMDIgMC0xLjg1LS45OC0xLjg1LTJzLjgzLTEuNzUgMS44NS0xLjc1di0xLjVhMy4zNSAzLjM1IDAgMCAwIDAgNi43em00LjM1LTMuOTJjLjYyLS42MSAxLTEuNDUgMS0yLjM4aC0xLjVjMCAxLjAyLS44MyAxLjg1LTEuODUgMS44NXYxLjVjMi4yNCAwIDQgMS44MyA0IDQuMDdWMTJIMjJWOS43NmMwLTIuMjItMS4yOC00LjE0LTMuMTUtNS4wM3pNMy40MSA0LjU5IDIgNmw3IDdIMnYzaDEwbDcgNyAxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbW9raW5nUm9vbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE2aDEuNXYzSDE4ek0yIDE2aDE1djNIMnptMTQuMDMtNS44SDE0LjVjLTEuMDIgMC0xLjg1LS45OC0xLjg1LTJzLjgzLTEuNzUgMS44NS0xLjc1di0xLjVhMy4zNSAzLjM1IDAgMCAwIDAgNi43aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjE1aDEuNXYtMS42NGMwLTEuODEtMS42LTMuMTYtMy40Ny0zLjE2ek0yMC41IDE2SDIydjNoLTEuNXptLTEuNjUtOC4yN2MuNjItLjYxIDEtMS40NSAxLTIuMzhDMTkuODUgMy41IDE4LjM1IDIgMTYuNSAydjEuNWMxLjAyIDAgMS44NS44MyAxLjg1IDEuODVTMTcuNTIgNy4yIDE2LjUgNy4ydjEuNWMyLjI0IDAgNCAxLjgzIDQgNC4wN1YxNUgyMnYtMi4yNGMwLTIuMjItMS4yOC00LjE0LTMuMTUtNS4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4yNSA2Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NW0wLTEuNUMxMy4wMSA0LjUgMTIgNS41MSAxMiA2Ljc1UzEzLjAxIDkgMTQuMjUgOXMyLjI1LTEuMDEgMi4yNS0yLjI1LTEuMDEtMi4yNS0yLjI1LTIuMjV6bTUuNzUgMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjUtLjUtLjIyLS41LS41LjIyLS41LjUtLjVNMjAgNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0zLjUtM2MtLjgzIDAtMS41LjY3LTEuNSAxLjVTMTUuNjcgNCAxNi41IDQgMTggMy4zMyAxOCAyLjUgMTcuMzMgMSAxNi41IDF6bTQuMjUgMTVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDYuNzVjLjY5IDAgMS4yNS0uNTYgMS4yNS0xLjI1IDAtLjY3LS41My0xLjItMS4xOC0xLjI0TDguODcgMTBsMS40OC0yLjZjLjA5LS4xNy4xNC0uMzQuMTQtLjU0IDAtLjI2LS4wOS0uNS0uMjYtLjdMOS4xMiA1bC03LjE4IDYuOGMtLjYuNTYtLjk0IDEuMzUtLjk0IDIuMTdWMjBjMCAxLjY2IDEuMzQgMyAzIDNoMTMuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDcuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDguNzV6TTEwIDIxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNmMwLS4zOS4yMy0uNjQuMzYtLjc1TDcgOS44N1YxMmgzdjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjQ5IDkuNjNjLS4xOC0yLjc5LTEuMzEtNS41MS0zLjQzLTcuNjNhMTIuMTg4IDEyLjE4OCAwIDAgMC0zLjU1IDcuNjNjMS4yOC42OCAyLjQ2IDEuNTYgMy40OSAyLjYzIDEuMDMtMS4wNiAyLjIxLTEuOTQgMy40OS0yLjYzem0tMy40NC00LjQ0Yy42MyAxLjAzIDEuMDcgMi4xOCAxLjMgMy4zOC0uNDcuMy0uOTEuNjMtMS4zNC45OC0uNDItLjM0LS44Ny0uNjctMS4zMy0uOTcuMjUtMS4yLjcxLTIuMzUgMS4zNy0zLjM5ek0xMiAxNS40NWExMi4xMSAxMi4xMSAwIDAgMC0zLjA2LTMuMmMtLjEzLS4wOS0uMjctLjE2LS40LS4yNi4xMy4wOS4yNy4xNy4zOS4yNUExMS43NzcgMTEuNzc3IDAgMCAwIDIgMTBjMCA1LjMyIDMuMzYgOS44MiA4LjAzIDExLjQ5LjYzLjIzIDEuMjkuNCAxLjk3LjUxLjY4LS4xMiAxLjMzLS4yOSAxLjk3LS41MUMxOC42NCAxOS44MiAyMiAxNS4zMiAyMiAxMGMtNC4xOCAwLTcuODUgMi4xNy0xMCA1LjQ1em0xLjMyIDQuMTVjLS40NC4xNS0uODguMjctMS4zMy4zNy0uNDQtLjA5LS44Ny0uMjEtMS4yOC0uMzYtMy4yOS0xLjE4LTUuNy0zLjk5LTYuNDUtNy4zNSAxLjEuMjYgMi4xNS43MSAzLjEyIDEuMzNsLS4wMi4wMWMuMTMuMDkuMjYuMTguMzkuMjVsLjA3LjA0Yy45OS43MiAxLjg0IDEuNjEgMi41MSAyLjY1TDEyIDE5LjFsMS42Ny0yLjU1YTEwLjE5IDEwLjE5IDAgMCAxIDIuNTMtMi42NmwuMDctLjA1Yy4wOS0uMDUuMTgtLjExLjI3LS4xN2wtLjAxLS4wMmMuOTgtLjY1IDIuMDctMS4xMyAzLjIxLTEuNC0uNzUgMy4zNy0zLjE1IDYuMTgtNi40MiA3LjM1em0tNC4zMy03LjMyYy0uMDItLjAxLS4wNC0uMDMtLjA1LS4wNCAwIDAgLjAxIDAgLjAxLjAxLjAxLjAxLjAyLjAyLjA0LjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTlIOHYtNi42M2MxLjI2LS4zNCAyLjExLTEuMjcgMi43Ny0xLjk5QzExLjYgOS40NyAxMi4wOCA5IDEzIDloMnYxMHpNMTAgMi4wMmMtMS44OSAwLTMuNTEgMS4xMS00LjI3IDIuNzFDNC4xNSA1LjI2IDMgNi43NCAzIDguNWMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYyMWgxMXYtMmgyYzEuMSAwIDItLjkgMi0ydi02YzAtMS4xLS45LTItMi0yaC0xLjU2Yy4zNS0uNTkuNTYtMS4yNy41Ni0yIDAtMi4yMS0xLjc5LTQtNC00LS4zNCAwLS42Ni4wNS0uOTguMTNBNC43MDcgNC43MDcgMCAwIDAgMTAgMi4wMnpNNyAxMC41Yy0xLjEgMC0yLS45LTItMiAwLS44NS41NS0xLjYgMS4zNy0xLjg4bC44LS4yNy4zNi0uNzZDOCA0LjYyIDguOTQgNC4wMiAxMCA0LjAyYy43OSAwIDEuMzkuMzUgMS43NC42NWwuNzguNjVTMTMuMTYgNSAxMy45OSA1YzEuMSAwIDIgLjkgMiAyaC0zQzkuNjcgNyA5LjE1IDEwLjUgNyAxMC41ek0xNyAxN3YtNmgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFpcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMSAzaC00LjQydjMuMzNIMTF2My4zM0g4LjQyVjE2SDZ2Mmg0LjQydi0zLjMzSDEzdi0zLjMzaDIuNThWOEgxOFY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RvcmVmcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjkgOC44OS0xLjA1LTQuMzdjLS4yMi0uOS0xLTEuNTItMS45MS0xLjUySDUuMDVjLS45IDAtMS42OS42My0xLjkgMS41MkwyLjEgOC44OWMtLjI0IDEuMDItLjAyIDIuMDYuNjIgMi44OC4wOC4xMS4xOS4xOS4yOC4yOVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi02Ljk0Yy4wOS0uMDkuMi0uMTguMjgtLjI4LjY0LS44Mi44Ny0xLjg3LjYyLTIuODl6bS0yLjk5LTMuOSAxLjA1IDQuMzdjLjEuNDIuMDEuODQtLjI1IDEuMTctLjE0LjE4LS40NC40Ny0uOTQuNDctLjYxIDAtMS4xNC0uNDktMS4yMS0xLjE0TDE2Ljk4IDVsMS45My0uMDF6TTEzIDVoMS45NmwuNTQgNC41MmMuMDUuMzktLjA3Ljc4LS4zMyAxLjA3LS4yMi4yNi0uNTQuNDEtLjk1LjQxLS42NyAwLTEuMjItLjU5LTEuMjItMS4zMVY1ek04LjQ5IDkuNTIgOS4wNCA1SDExdjQuNjljMCAuNzItLjU1IDEuMzEtMS4yOSAxLjMxLS4zNCAwLS42NS0uMTUtLjg5LS40MWExLjQyIDEuNDIgMCAwIDEtLjMzLTEuMDd6bS00LjQ1LS4xNkw1LjA1IDVoMS45N2wtLjU4IDQuODZjLS4wOC42NS0uNiAxLjE0LTEuMjEgMS4xNC0uNDkgMC0uOC0uMjktLjkzLS40Ny0uMjctLjMyLS4zNi0uNzUtLjI2LTEuMTd6TTUgMTl2LTYuMDNjLjA4LjAxLjE1LjAzLjIzLjAzLjg3IDAgMS42Ni0uMzYgMi4yNC0uOTUuNi42IDEuNC45NSAyLjMxLjk1Ljg3IDAgMS42NS0uMzYgMi4yMy0uOTMuNTkuNTcgMS4zOS45MyAyLjI5LjkzLjg0IDAgMS42NC0uMzUgMi4yNC0uOTUuNTguNTkgMS4zNy45NSAyLjI0Ljk1LjA4IDAgLjE1LS4wMi4yMy0uMDNWMTlINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0cm9sbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyek02IDE4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptOS05LjM0TDkuNiAxNUgxNVY4LjY2TTE4LjY1IDNDMjAuNTIgMyAyMiA0LjU2IDIyIDYuNDhWN2gtMnYtLjUyQzIwIDUuNjYgMTkuNDIgNSAxOC42NSA1Yy0uNjggMC0xLjA3LjU5LTEuNjUgMS4yN1YxNWMwIDEuMS0uOSAyLTIgMkg3LjQzYy0uODUgMC0xLjMxLTEtLjc2LTEuNjVsOC44LTEwLjMyQzE2LjExIDQuMjcgMTYuOTkgMyAxOC42NSAzek0xMCA1Yy0uNjUgMC0xLjI5LjA5LTEuOTEuMjdsMS40IDEuNCAxLjM3LTEuNjFBNi4xMSA2LjExIDAgMCAwIDEwIDVtMC0yYzEuNTYgMCAzLjAzLjQgNC4zIDEuMUw5LjYgOS42MSA0LjcyIDQuNzJBOC45NjIgOC45NjIgMCAwIDEgMTAgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhcGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWMWgtOHY5YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjIxaC0ydjJoNnYtMmgtMnYtNy4xNGMxLjcyLS40NSAzLTIgMy0zLjg2em0tMi03djNoLTRWM2g0em0tNCA3VjhoNHYyYzAgMS4xLS45IDItMiAycy0yLS45LTItMnptLTYtMUg4VjhoMmEyLjUgMi41IDAgMCAwIDAtNUg4VjFINnYySDRhMi41IDIuNSAwIDAgMCAwIDVoMnYxSDRhMi41IDIuNSAwIDAgMCAwIDVoMnY5aDJ2LTloMmEyLjUgMi41IDAgMCAwIDAtNXpNNCA2Yy0uMjggMC0uNS0uMjItLjUtLjVTMy43MiA1IDQgNWg2Yy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNUg0em02IDZINGMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDZjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNmgtMlY0aDJ2MnptMiAxaC0ydjJoMlY3em0xIDJoMlY3aC0ydjJ6bTAtNWgtMnYyaDJWNHptLTQgM2gtMnYyaDJWN3ptNCAzaC0ydjJoMnYtMnptLTMgMGgtMnYyaDJ2LTJ6bS0zLTZoLTJ2MmgyVjR6bTcgMTEuODJ2NC4xNWMwIC41Ni0uNDcgMS4wMy0xLjAzIDEtMi44OS0uMTctNS42LTEuMDMtNy45Ny0yLjRBMTcuOTk5IDE3Ljk5OSAwIDAgMSA0LjQzIDEyYTE3Ljg5IDE3Ljg5IDAgMCAxLTIuNC03Ljk3QzIgMy40NyAyLjQ3IDMgMy4wMyAzaDQuMTVjLjQ4IDAgLjg5LjM0Ljk4LjhsLjc0IDMuNjhhLjk5Ljk5IDAgMCAxLS4yNy45TDYuMSAxMC45YzEuNDMgMi41IDMuNSA0LjU3IDYgNmwyLjUyLTIuNTJhLjk4Ljk4IDAgMCAxIC45LS4yN2wzLjY3LjczYy40Ny4wOS44MS41LjgxLjk4ek01LjE4IDguOTlsMS42NS0xLjY1TDYuMzYgNUg0LjEzYy4xNyAxLjM3LjUzIDIuNzEgMS4wNSAzLjk5ek0xOCAxNi42NGwtMi4zNC0uNDctMS42NSAxLjY1YzEuMjguNTIgMi42My44NyAzLjk5IDEuMDV2LTIuMjN6TTIwIDR2MmgyVjRoLTJ6bTAgOGgydi0yaC0ydjJ6bS03LTJoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW1icmVsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDYuOTIgMTMgNS43N1YzLjRjMC0uMjYuMjItLjQ4LjUtLjQ4cy41LjIxLjUuNDhWNGgydi0uNkMxNiAyLjA3IDE0Ljg4IDEgMTMuNSAxUzExIDIuMDcgMTEgMy40djIuMzdMOS41IDYuOTIgNiA2LjA3bDUuMDUgMTUuMjVjLjE1LjQ1LjU1LjY4Ljk1LjY4cy44LS4yMy45NS0uNjlMMTggNi4wN2wtMy41Ljg1ek0xMy4yOCA4LjVsLjc2LjU4LjkyLS4yM0wxMyAxNC44VjguMjlsLjI4LjIxem0tMy4zMi41OS43Ni0uNTguMjgtLjIydjYuNTFMOS4wMyA4Ljg2bC45My4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZhcGVGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNi41aDFjMS4zMyAwIDIuNzEtLjE4IDQtLjV2M2MtMS4yOS0uMzItMi42Ny0uNS00LS41SDJ2LTJ6TTE2LjE3IDE5SDh2LTNoNS4xN0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxLTMuNi0zLjZ6bTIuNjYtM0gyMnYzaC0uMTdsLTMtM3pNMTEgMTcuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjUuMjIuNS41LjUuNS0uMjIuNS0uNXptMTEtNC43NFYxNWgtMS41di0yLjIzYzAtMi4yNC0xLjc2LTQuMDctNC00LjA3VjcuMmMxLjAyIDAgMS44NS0uODMgMS44NS0xLjg1UzE3LjUyIDMuNSAxNi41IDMuNVYyYzEuODUgMCAzLjM1IDEuNSAzLjM1IDMuMzUgMCAuOTMtLjM4IDEuNzctMSAyLjM4IDEuODcuODkgMy4xNSAyLjgxIDMuMTUgNS4wM3pNMTEuMTUgOC4zMlY4LjNjMC0xLjg1IDEuNS0zLjM1IDMuMzUtMy4zNXYxLjVjLTEuMDIgMC0xLjg1LjczLTEuODUgMS43NXMuODMgMiAxLjg1IDJoMS41M2MxLjg3IDAgMy40NyAxLjM1IDMuNDcgMy4xNlYxNUgxOHYtMS4zYzAtMS4zMS0uOTItMi4wNS0xLjk3LTIuMDVoLTEuNTVsLTMuMzMtMy4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZhcGluZ1Jvb21zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNi41aDFjMS4zMyAwIDIuNzEtLjE4IDQtLjV2M2MtMS4yOS0uMzItMi42Ny0uNS00LS41SDJ2LTJ6bTIwLS41djNIOHYtM2gxNHptLTExIDEuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjUuMjIuNS41LjUuNS0uMjIuNS0uNXptMTEtNC43NFYxNWgtMS41di0yLjIzYzAtMi4yNC0xLjc2LTQuMDctNC00LjA3VjcuMmMxLjAyIDAgMS44NS0uODMgMS44NS0xLjg1UzE3LjUyIDMuNSAxNi41IDMuNVYyYzEuODUgMCAzLjM1IDEuNSAzLjM1IDMuMzUgMCAuOTMtLjM4IDEuNzctMSAyLjM4IDEuODcuODkgMy4xNSAyLjgxIDMuMTUgNS4wM3ptLTIuNS42VjE1SDE4di0xLjNjMC0xLjMxLS45Mi0yLjA1LTEuOTctMi4wNUgxNC41YTMuMzUgMy4zNSAwIDAgMSAwLTYuN3YxLjVjLTEuMDIgMC0xLjg1LjczLTEuODUgMS43NXMuODMgMiAxLjg1IDJoMS41M2MxLjg3IDAgMy40NyAxLjM1IDMuNDcgMy4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpbGxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTBjLTEuMSAwLTIgLjktMiAyaC0xVjNMMyA4djEzaDE4di05YzAtMS4xLS45LTItMi0yek01IDkuMzdsOS0zLjQ2VjEySDl2N0g1VjkuMzd6TTE5IDE5aC0zdi0zaC0ydjNoLTN2LTVoOHY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjc1IDE2YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg2Ljc1Yy42OSAwIDEuMjUtLjU2IDEuMjUtMS4yNSAwLS42Ny0uNTMtMS4yLTEuMTgtMS4yNEw4Ljg3IDEwbDEuNDgtMi42Yy4wOS0uMTcuMTQtLjM0LjE0LS41NCAwLS4yNi0uMDktLjUtLjI2LS43TDkuMTIgNWwtNy4xOCA2LjhjLS42LjU2LS45NCAxLjM1LS45NCAyLjE3VjIwYzAgMS42NiAxLjM0IDMgMyAzaDEzLjc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg3Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg4Ljc1ek0xMCAyMUg0Yy0uNTUgMC0xLS40NS0xLTF2LTZjMC0uMzkuMjMtLjY0LjM2LS43NUw3IDkuODdWMTJoM3Y5em0zLjUtMTJjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjg0LTEuNS0yLjUtMS41LTIuNVMxMiA2LjY2IDEyIDcuNWMwIC44My42NyAxLjUgMS41IDEuNXptNS04UzE2IDMuODMgMTYgNS41YTIuNSAyLjUgMCAwIDAgNSAwQzIxIDMuODMgMTguNSAxIDE4LjUgMXptMCA1LjVjLS41NSAwLTEtLjQ1LTEtMSAwLS40LjQzLTEuMjIgMS0yLjA1LjU3LjgzIDEgMS42NSAxIDIuMDUgMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0ZXJEYW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDIgMTJoM3Y4aDE0di04aDNMMTIgM3pNNyAxOHYtNy44MWw1LTQuNSA1IDQuNVYxOEg3em03LTRjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIDItNCAyLTQgMiAyLjkgMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2hlZWxjaGFpclBpY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNS41IDYuOTVWOWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2gzLjV2LS4xMWMtMS4yNC0xLjI2LTItMi45OS0yLTQuODkgMC0yLjU4IDEuNDEtNC44NCAzLjUtNi4wNXpNMTYuNSAxN2MwIDEuNjUtMS4zNSAzLTMgM3MtMy0xLjM1LTMtM2MwLTEuMTEuNjEtMi4wNiAxLjUtMi41OHYtMi4xNmMtMi4wMi42NC0zLjUgMi41MS0zLjUgNC43NCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01aC0yem0zLjA0LTNIMTVWOGgtMnY4aDUuNDZsMi40NyAzLjcxIDEuNjYtMS4xMS0zLjA1LTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdGhyb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE0YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMS0uNDUgMS0xIDEtMS0uNDUtMS0xem00IDFjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMyAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bS0zLTcuNWMtMS43NiAwLTMuMjIgMS4zMS0zLjQ2IDNoNi45M2EzLjUyIDMuNTIgMCAwIDAtMy40Ny0zTTEyIDZjMi43NiAwIDUgMi4yNCA1IDV2MUg3di0xYzAtMi43NiAyLjI0LTUgNS01ek05IDE4Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTMgMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0zIDBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptNS0xNEg0djE2aDE2VjRtMC0yYzEuMSAwIDIgLjkgMiAydjE2YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTAuNzhWOGMwLTEuNjUtMS4zNS0zLTMtM2gtNGMtLjc3IDAtMS40Ny4zLTIgLjc4LS41My0uNDgtMS4yMy0uNzgtMi0uNzhINkM0LjM1IDUgMyA2LjM1IDMgOHYyLjc4Yy0uNjEuNTUtMSAxLjM0LTEgMi4yMnY2aDJ2LTJoMTZ2Mmgydi02YzAtLjg4LS4zOS0xLjY3LTEtMi4yMnpNMTQgN2g0Yy41NSAwIDEgLjQ1IDEgMXYyaC02VjhjMC0uNTUuNDUtMSAxLTF6TTUgOGMwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYySDVWOHptLTEgN3YtMmMwLS41NS40NS0xIDEtMWgxNGMuNTUgMCAxIC40NSAxIDF2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVkcm9vbUJhYnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljk0IDE0LjA0Yy0uMzQuMzQtLjcxLjY0LTEuMS45MkwxNiAxMy41VjExaDF2LTFoLTUuNjJMOS42NSA3SDZsMSAuNzZMNS41IDkuNWwuOTUgMUw4IDkuNTF2My45OWwtLjg0IDEuNDZjLS4zOS0uMjctLjc2LS41OC0xLjEtLjkyTDUgMTUuMWMxLjg3IDEuODcgNC4zNiAyLjkgNyAyLjlzNS4xMy0xLjAzIDctMi45bC0xLjA2LTEuMDZ6bS05LjQ5IDEuNjcuMDMtLjA2LjgxLTEuNDFjMS43NC42NSAzLjY2LjY1IDUuNCAwbC44MSAxLjQxLjAzLjA2Yy0xLjEuNTEtMi4zLjc5LTMuNTUuNzlzLTIuNDMtLjI3LTMuNTMtLjc5ek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVkcm9vbUNoaWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMy41IDguNjdWOWMwLTEuMS0uOS0yLTItMmgtNWMtMS4xIDAtMiAuOS0yIDJ2MS42N2MtLjg4LjM1LTEuNSAxLjItMS41IDIuMlYxN2gxLjV2LTEuNWg5VjE3SDE4di00LjEzYzAtMS0uNjItMS44NS0xLjUtMi4yek0xNSA4LjV2Mkg5di0yaDZ6bS03LjUgNC4zN2MwLS40OC4zOS0uODcuODctLjg3aDcuMjdjLjQ4IDAgLjg3LjM5Ljg3Ljg3VjE0aC05di0xLjEzSDcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZHJvb21QYXJlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM1IDExLjQ1VjljMC0xLjEtLjktMi0yLTJIMTNjLS4zNyAwLS43Mi4xMi0xIC4zMi0uMjgtLjItLjYzLS4zMi0xLS4zMkg3LjY1Yy0xLjEgMC0yIC45LTIgMnYyLjQ1Yy0uNC40Ni0uNjUgMS4wNi0uNjUgMS43MlYxN2gxLjV2LTEuNWgxMVYxN0gxOXYtMy44M2MwLS42Ni0uMjUtMS4yNi0uNjUtMS43MnptLTEuNi0uOTVoLTR2LTJoNHYyem0tOS41LTJoNHYyaC00di0yek0xNy41IDE0aC0xMXYtMWMwLS41NS40NS0xIDEtMWg5Yy41NSAwIDEgLjQ1IDEgMXYxek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmxlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMTMgMTUuMTMgMTggM2gtNFYyaC00djFINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDIuMjNsLjY0IDQuMTNDNi43NCAxNi4wNSA2IDE3LjQzIDYgMTl2MWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJ2LTFjMC0xLjU3LS43NC0yLjk1LTEuODctMy44N3pNNSA5VjVoMS4zMWwuNjIgNEg1em0xMC42Ny00LTEuMzggOUg5LjcyTDguMzMgNWg3LjM0ek0xNiAyMEg4di0xYzAtMS42NSAxLjM1LTMgMy0zaDJjMS42NSAwIDMgMS4zNSAzIDN2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmFJbmRvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEzdi0xYzAtLjU1LS40NS0xLTEtMUg5Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMWwyIDEuMDZ2LTQuMTJMMTQgMTN6bS0yLTcuNSA2IDQuNXY5SDZ2LTlsNi00LjVNMTIgMyA0IDl2MTJoMTZWOWwtOC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtZXJhT3V0ZG9vciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMC0uNTUtLjQ1LTEtMS0xaC00Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMWwyIDEuMDZ2LTQuMTJMMTggMTR2LTF6TTEyIDMgNCA5djEyaDE2di0ySDZ2LTlsNi00LjUgNiA0LjV2MWgyVjlsLTgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYWlyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjNjMCAxLjEuOSAyIDIgMmgxdjJIN2MtMS4xIDAtMiAuOS0yIDJ2N2gydi0zaDEwdjNoMnYtN2MwLTEuMS0uOS0yLTItMmgtMXYtMmgxek03IDhWNWgxMHYzSDd6bTEwIDhIN3YtMmgxMHYyem0tMy00aC00di0yaDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4VjZjMC0xLjY1LTEuMzUtMy0zLTNIN0M1LjM1IDMgNCA0LjM1IDQgNnYyYy0xLjY1IDAtMyAxLjM1LTMgM3Y1YzAgMS42NSAxLjM1IDMgMyAzdjFjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0xYzEuNjUgMCAzLTEuMzUgMy0zdi01YzAtMS42NS0xLjM1LTMtMy0zek02IDZjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxdjIuNzhjLS42MS41NS0xIDEuMzQtMSAyLjIydjJIN3YtMmMwLS44OC0uMzktMS42Ny0xLTIuMjJWNnptMTUgMTBjMCAuNTUtLjQ1IDEtMSAxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NGgxNHYtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvZmZlZU1ha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA2VjRoMlYySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTR2LTJoLTQuMDNBNC45NjYgNC45NjYgMCAwIDAgMTggMTZ2LTVIOHY1YzAgMS42NC44MSAzLjA5IDIuMDMgNEg2VjRoMnYyYzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xem0tOCAxMHYtM2g2djNjMCAxLjY1LTEuMzUgMy0zIDNzLTMtMS4zNS0zLTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTNcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2ZmZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgM0g2Yy0xLjEgMC0yIC45LTIgMnY1LjcxYzAgMy44MyAyLjk1IDcuMTggNi43OCA3LjI5IDMuOTYuMTIgNy4yMi0zLjA2IDcuMjItN3YtMWguNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMyMC40MyAzIDE4LjUgM3pNMTYgNXYzSDZWNWgxMHptMCA1djFjMCAyLjc2LTIuMjQgNS01IDVzLTUtMi4yNC01LTV2LTFtMTIuNS0ySDE4VjVoLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTkuMzMgOCAxOC41IDh6TTQgMTloMTZ2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC43NSA2Yy0xLjM3IDAtMi41IDEuNTItMi41IDMuNCAwIDEuNDguNyAyLjcxIDEuNjcgMy4xOGwuMDguMDRWMTloMS41di02LjM4bC4wOC0uMDNjLjk3LS40NyAxLjY3LTEuNyAxLjY3LTMuMTggMC0xLjg4LTEuMTItMy40MS0yLjUtMy40MU0xMC41IDZjLS4yNyAwLS41LjIyLS41LjVWOWgtLjc1VjYuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWOUg3LjVWNi41YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNXYzLjhjMCAuOTMuNjQgMS43MSAxLjUgMS45M1YxOWgxLjV2LTYuNzdjLjg2LS4yMiAxLjUtMSAxLjUtMS45M1Y2LjVjMC0uMjgtLjIyLS41LS41LS41ek0yMCA0SDR2MTZoMTZWNG0wLTJjMS4xIDAgMiAuOSAyIDJ2MTZjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9vckJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5VjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MTRIM3YyaDE4di0yaC0yem0tMiAwSDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMWgydjJIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvb3JGcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlWNWMwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxNEgzdjJoMTh2LTJoLTJ6bS0yIDBIN1Y1aDEwdjE0em0tNC04aDJ2MmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvb3JTbGlkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxM0g4di0yaDJ2MnptNi0yaC0ydjJoMnYtMnptNSA4djJIM3YtMmgxVjVjMC0xLjEuOS0yIDItMmgxMmMxLjEgMCAyIC45IDIgMnYxNGgxek0xMSA1SDZ2MTRoNVY1em03IDBoLTV2MTRoNVY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9vcmJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE2LjVoMmMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXptNC0xLjV2LTIuMzRjMC0xLjU0LS44MS0yLjgyLTIuMjUtMy4xNnYtLjI1YzAtLjQxLS4zNC0uNzUtLjc1LS43NXMtLjc1LjM0LS43NS43NXYuMjVDOS44MiA5Ljg0IDkgMTEuMTIgOSAxMi42NlYxNUg4djFoOHYtMWgtMXptLTMtOS41TDYgMTB2OWgxMnYtOWwtNi00LjVNMTIgM2w4IDZ2MTJINFY5bDgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4bC01LTV6bTMgMTZINVY1aDEwdjRoNHYxMHpNNyAxN2gxMHYtMkg3djJ6bTUtMTBIN3YyaDVWN3ptLTUgNmgxMHYtMkg3djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGF0d2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNy4wOGMwIDEuNzctLjg0IDMuMjUtMiAzLjgyVjIxaC0yVjEwLjljLTEuMTYtLjU3LTItMi4wNS0yLTMuODJDMTAuMDEgNC44MyAxMS4zNSAzIDEzIDNjMS42NiAwIDMgMS44MyAzIDQuMDh6TTE3IDN2MThoMnYtOGgyVjdjMC0xLjc2LTEuMjQtNC00LTR6TTguMjggM2MtLjQgMC0uNzIuMzItLjcyLjcyVjdoLS44NFYzLjcyQzYuNzIgMy4zMiA2LjQgMyA2IDNzLS43Mi4zMi0uNzIuNzJWN2gtLjg0VjMuNzJjMC0uNC0uMzItLjcyLS43Mi0uNzJTMyAzLjMyIDMgMy43MlY5YzAgMS4xLjkgMiAyIDJ2MTBoMlYxMWMxLjEgMCAyLS45IDItMlYzLjcyYzAtLjQtLjMyLS43Mi0uNzItLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2FyYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg0VjRoMTZ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc4IDE4LjVoLjQ0Yy40MyAwIC43OC0uMzYuNzgtLjgxVjE2LjVoMTB2MS4xOWMwIC40NS4zNC44MS43OC44MWguNDRjLjQzIDAgLjc4LS4zNi43OC0uODF2LTYuNWMtLjgyLTIuNDYtMS4zNC00LjAzLTEuNTYtNC42OS0uMDUtLjE2LS4xMi0uMjktLjE5LS40LS4wMi0uMDItLjAzLS4wNC0uMDUtLjA3LS4zOC0uNTItLjkyLS41My0uOTItLjUzSDcuNzJzLS41NC4wMS0uOTIuNTRjLS4wMi4wMi0uMDMuMDQtLjA1LjA2LS4wNy4xMS0uMTQuMjQtLjE5LjQtLjIyLjY2LS43NCAyLjIyLTEuNTYgNC42OXY2LjVjMCAuNDUuMzUuODEuNzguODF6bTIuNTUtMTFoNy4zNGwuMjMuNjkuNDMgMS4zMUg3LjY3bC42Ni0yek03IDExLjUxdi0uMDFoMTB2M0g3di0yLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDYuMDZWM2gtMnYzLjA2Yy00LjUuNS04IDQuMzEtOCA4LjkzQzMgMTYuMSAzLjkgMTcgNS4wMSAxN0g4YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRoMi45OWMxLjExIDAgMi4wMS0uOSAyLjAxLTIuMDEgMC00LjYyLTMuNS04LjQzLTgtOC45M3pNMTIgMTljLTEuMSAwLTItLjktMi0yaDRjMCAxLjEtLjkgMi0yIDJ6bTAtNEg1YzAtMy44NiAzLjE0LTcgNy03czcgMy4xNCA3IDdoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaXZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljc1IDEwLjM1VjljMC0xLjY2LTEuMzQtMy0zLTNoLTUuNWMtMS42NiAwLTMgMS4zNC0zIDN2MS4zNUM1LjUxIDEwLjc4IDUgMTEuNTggNSAxMi41VjE2YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTMuNWMwLS45Mi0uNTEtMS43Mi0xLjI1LTIuMTV6TTkuMjUgNy41aDUuNWMuODMgMCAxLjUuNjcgMS41IDEuNXYxLjAzQTIuNDggMi40OCAwIDAgMCAxNCAxMi41di41aC00di0uNWMwLTEuMy0uOTktMi4zNS0yLjI1LTIuNDdWOWMwLS44My42Ny0xLjUgMS41LTEuNXpNMTcuNSAxNmMwIC4yOC0uMjIuNS0uNS41SDdjLS4yOCAwLS41LS4yMi0uNS0uNXYtMy41YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYyaDd2LTJjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxVjE2ek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFuYWdlU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDlIMlY3aDV2MnptMCAzSDJ2Mmg1di0yem0xMy41OSA3LTMuODMtMy44M2MtLjguNTItMS43NC44My0yLjc2LjgzLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNWMwIDEuMDItLjMxIDEuOTYtLjgzIDIuNzVMMjIgMTcuNTkgMjAuNTkgMTl6TTE3IDExYzAtMS42NS0xLjM1LTMtMy0zcy0zIDEuMzUtMyAzIDEuMzUgMyAzIDMgMy0xLjM1IDMtM3pNMiAxOWgxMHYtMkgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb2RjYXN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJjMCAuNzQtLjQgMS4zOC0xIDEuNzJWMjJoLTJ2LTguMjhjLS42LS4zNS0xLS45OC0xLTEuNzIgMC0xLjEuOS0yIDItMnMyIC45IDIgMnptLTItNmMtMy4zMSAwLTYgMi42OS02IDYgMCAxLjc0Ljc1IDMuMzEgMS45NCA0LjRsMS40Mi0xLjQyQTMuOTU3IDMuOTU3IDAgMCAxIDggMTJjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIDEuMTktLjUzIDIuMjUtMS4zNiAyLjk4bDEuNDIgMS40MkE1Ljk1NyA1Ljk1NyAwIDAgMCAxOCAxMmMwLTMuMzEtMi42OS02LTYtNnptMC00QzYuNDggMiAyIDYuNDggMiAxMmMwIDIuODUgMS4yIDUuNDEgMy4xMSA3LjI0bDEuNDItMS40MkE3Ljk4NyA3Ljk4NyAwIDAgMSA0IDEyYzAtNC40MSAzLjU5LTggOC04czggMy41OSA4IDhjMCAyLjI5LS45OCA0LjM2LTIuNTMgNS44MmwxLjQyIDEuNDJDMjAuOCAxNy40MSAyMiAxNC44NSAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxN2MwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMSAuNDUtMSAxLTEgMSAuNDUgMSAxem0zLTFjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNCAwYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMtNHYySDV2LTJjMC0zLjUzIDIuNjEtNi40MyA2LTYuOTJWM2gydjIuMDhjMy4zOS40OSA2IDMuMzkgNiA2Ljkyem0tMiAwYzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1aDEwem0tOSA3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTQgMGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem00IDBjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNy41QzIyIDUuNTcgMTcuNTIgNCAxMiA0UzIgNS41NyAyIDcuNWMwIDEuODEgMy45NSAzLjMxIDkgMy40OFYxNUg5LjM1Yy0uODIgMC0xLjU1LjUtMS44NiAxLjI2TDYgMjBoMmwxLjItM2g1LjZsMS4yIDNoMmwtMS41LTMuNzRjLS4zLS43Ni0xLjA0LTEuMjYtMS44NS0xLjI2SDEzdi00LjAyYzUuMDUtLjE3IDktMS42NyA5LTMuNDh6TTEyIDZjNC4wNSAwIDYuNzQuODYgNy43MiAxLjVDMTguNzQgOC4xNCAxNi4wNSA5IDEyIDlzLTYuNzQtLjg2LTcuNzItMS41QzUuMjYgNi44NiA3Ljk1IDYgMTIgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxlUmVzdGF1cmFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjk2IDkuNzMtMS40My01YS45OTYuOTk2IDAgMCAwLS45Ni0uNzNINC40M2MtLjQ1IDAtLjg0LjMtLjk2LjczbC0xLjQzIDVjLS4xOC42My4zIDEuMjcuOTYgMS4yN2gyLjJMNCAyMGgybC42Ny01aDEwLjY3bC42NiA1aDJsLTEuMi05SDIxYy42NiAwIDEuMTQtLjY0Ljk2LTEuMjd6TTYuOTMgMTNsLjI3LTJoOS42bC4yNyAySDYuOTN6bS0yLjYtNCAuODYtM2gxMy42M2wuODYgM0g0LjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2luZG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOGgtNlY1aDZ2NnptLTgtNnY2SDVWNWg2em0tNiA4aDZ2Nkg1di02em04IDZ2LTZoNnY2aC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lWWFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTMuMzEgMC02IDIuNjktNiA2IDMuMzEgMCA2LTIuNjkgNi02ek02IDEzYzAgMy4zMSAyLjY5IDYgNiA2IDAtMy4zMS0yLjY5LTYtNi02em0yLTEuOTdhMS41NjIgMS41NjIgMCAwIDAgMi40NSAxLjI4bC0uMDEuMTJjMCAuODYuNyAxLjU2IDEuNTYgMS41NnMxLjU2LS43IDEuNTYtMS41NmwtLjAxLS4xMmMuMjUuMTcuNTYuMjguODkuMjguODYgMCAxLjU2LS43IDEuNTYtMS41NiAwLS42Mi0uMzctMS4xNi0uODktMS40MS41Mi0uMjQuODktLjc4Ljg5LTEuNGExLjU2MiAxLjU2MiAwIDAgMC0yLjQ1LTEuMjhsLjAxLS4xMmMwLS44Ni0uNy0xLjU2LTEuNTYtMS41NnMtMS41Ni43LTEuNTYgMS41NmwuMDEuMTJBMS41NjIgMS41NjIgMCAwIDAgOCA4LjIyYzAgLjYyLjM3IDEuMTYuODkgMS40MS0uNTIuMjQtLjg5Ljc4LS44OSAxLjR6bTQtMi45N2MuODYgMCAxLjU2LjcgMS41NiAxLjU2cy0uNyAxLjU2LTEuNTYgMS41Ni0xLjU2LS43LTEuNTYtMS41Ni43LTEuNTYgMS41Ni0xLjU2ek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMThVcFJhdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxNUgxMFY5SDd2MS41aDEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDE1SDE1Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFoLTIuNWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTVoMS41djEuNUgxM1YxMHptMCAyLjVoMS41VjE0SDEzdi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU2RnRBcGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMiA5LjQzVjEwaDh2LS41N3pNMTggNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMTQgOS40M1YxMGg4di0uNTd6TTE5IDE3di0yLjAxTDUgMTV2MmwtMy0zIDMtM3YyLjAxTDE5IDEzdi0ybDMgMy0zIDN6bS05IDJ2LTFINy41Yy0uMjggMC0uNS4yMi0uNS41djNjMCAuMjguMjIuNS41LjVoMmMuMjggMCAuNS0uMjIuNS0uNVYyMGMwLS4yOC0uMjItLjUtLjUtLjVIOFYxOWgyem0tMSAxLjV2LjVIOHYtLjVoMXptOC41LTEuNWgtMXYzaC0xdi0zaC0xdi0xaDN2MXptLTUgMHYuNWgxdjFoLTFWMjJoLTF2LTRIMTR2MWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkTW9kZXJhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMS4wOXYtNC43bDYtMi4yNSA2IDIuMjV2My42OWMuNzEuMSAxLjM4LjMxIDIgLjZWNWwtOC0zLTggM3Y2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MS4wMy0uMDEuMDUtLjAyLjA4LS4wMi0uNzktLjc4LTEuNC0xLjc2LTEuNzUtMi44NEM3Ljc2IDE3LjUzIDYgMTQuNDIgNiAxMS4wOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIwaC0xdi0yLjVIMTR2LTFoMi41VjE0aDF2Mi41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRSZWFjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOS41QzcgOC42NyA3LjY3IDggOC41IDhzMS41LjY3IDEuNSAxLjVTOS4zMyAxMSA4LjUgMTEgNyAxMC4zMyA3IDkuNXptNSA4YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41em0zLjUtNi41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6TTIyIDFoLTJ2MmgtMnYyaDJ2MmgyVjVoMlYzaC0yVjF6bS0yIDExYzAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04IDMuNTgtOCA4LThjMS40NiAwIDIuODIuNCA0IDEuMDhWMi44NEE5LjkyOSA5LjkyOSAwIDAgMCAxMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJjMC0xLjA1LS4xNy0yLjA1LS40Ny0zSDE5LjRjLjM4LjkzLjYgMS45NC42IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcmNoaXRlY3R1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjM2IDE4Ljc4IDYuNjEgMjFsMS42Mi0xLjU0IDIuNzctNy42Yy0uNjgtLjE3LTEuMjgtLjUxLTEuNzctLjk4bC0yLjg3IDcuOXpNMTQuNzcgMTAuODhjLS40OS40Ny0xLjEuODEtMS43Ny45OGwyLjc3IDcuNkwxNy4zOSAyMWwuMjYtMi4yMi0yLjg4LTcuOXpNMTUgOGMwLTEuMy0uODQtMi40LTItMi44MlYzaC0ydjIuMThDOS44NCA1LjYgOSA2LjcgOSA4YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTN6bS0zIDFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lzdFdhbGtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTIuNVwiLFwiY3lcIjpcIjQuNVwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyAxNy43Mi0uNjQtNi4zN0ExLjQ5IDEuNDkgMCAwIDAgMTcuNjQgMTBIMTZjLTEuNS0uMDItMi44Ni0uNTQtMy43Ni0xLjQ0bC0yLTEuOThBMS45NSAxLjk1IDAgMCAwIDguODMgNmMtLjUxIDAtMS4wMi4yLTEuNDEuNTlMNC4wOCA5LjkxYy0uNTMuNjgtLjUxIDEuNTctLjIxIDIuMTNsMS40MyAyLjgtMy4xNSA0LjA1IDEuNTcgMS4yNEw3LjQgMTUuNGwtLjE3LTEuMzYuNzcuNzFWMjBoMnYtNi4xMmwtMi4xMi0yLjEyIDIuMzYtMi4zNmMuOTQuOTQgMS43MiAxLjgyIDMuNTkgMi4zMkwxMyAyMGgxLjVsLjQxLTMuNWgzLjE4bC4xNCAxLjIyYy0uNDQuMjYtLjczLjc0LS43MyAxLjI4IDAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNWMwLS41NC0uMjktMS4wMi0uNzMtMS4yOHpNMTUuMDkgMTVsLjQxLTMuNWgybC40MSAzLjVoLTIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWNrSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDdhMi41IDIuNSAwIDAgMC0zLTIuNDVWNGEyLjUgMi41IDAgMCAwLTMuMTctMi40MUEyLjUwOSAyLjUwOSAwIDAgMCAxMi41IDBjLTEuMjMgMC0yLjI1Ljg5LTIuNDYgMi4wNkEyLjUgMi41IDAgMCAwIDcgNC41djUuODljLS4zNC0uMzEtLjc2LS41NC0xLjIyLS42NmwtLjc3LS4yMWMtLjgzLS4yMy0xLjcuMDktMi4xOS44My0uMzguNTctLjQgMS4zMS0uMTUgMS45NWwyLjU2IDYuNDNBOC4zNTQgOC4zNTQgMCAwIDAgMTMgMjRjNC40MiAwIDgtMy41OCA4LThWN3ptLTIgOWMwIDMuMzEtMi42OSA2LTYgNi0yLjYxIDAtNC45NS0xLjU5LTUuOTEtNC4wMWwtMi42LTYuNTQuNTMuMTRjLjQ2LjEyLjgzLjQ2IDEgLjlMNyAxNWgyVjQuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxMmgyVjIuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxMmgyVjRjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2OGgyVjdjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMS41XCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjEzIDcuMTJjLS4xNy0uMzUtLjQ0LS42NS0uOC0uODVhMS45OCAxLjk4IDAgMCAwLTEuOTMtLjAzdi0uMDFMNCA5LjNWMTRoMnYtMy41NGwxLjUtLjg1QzcuMTggMTAuNzEgNyAxMS44NSA3IDEzdjUuMzNMNC40IDIxLjggNiAyM2wzLTQgLjIyLTMuNTRMMTEgMTh2NWgydi02LjVsLTEuOTctMi44MWMtLjA0LS41Mi0uMTQtMS43Ni40NS0zLjQuNzUgMS4xNCAxLjg4IDEuOTggMy4yIDIuNDFMMjAuNjMgMjNsLjg3LS41LTUuNDgtOS41SDE3di0yYy0uNDkgMC0yLjg4LjE3LTQuMDgtMi4yMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNy41Yy45NyAwIDEuNzUtLjc4IDEuNzUtMS43NVMxMi45NyA0IDEyIDRzLTEuNzUuNzgtMS43NSAxLjc1UzExLjAzIDcuNSAxMiA3LjV6TTE0IDIwdi01aDF2LTQuNWMwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJWMTVoMXY1aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YTIgMiAwIDAgMCAyLTJjMC0uMzgtLjEtLjczLS4yOS0xLjAzTDEyIDBsLTEuNzEgMi45N2MtLjE5LjMtLjI5LjY1LS4yOSAxLjAzIDAgMS4xLjkgMiAyIDJ6bTYgM2gtNVY3aC0ydjJINmMtMS42NiAwLTMgMS4zNC0zIDN2OWMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTF2LTljMC0xLjY2LTEuMzQtMy0zLTN6bTEgMTFINXYtM2MuOS0uMDEgMS43Ni0uMzcgMi40LTEuMDFsMS4wOS0xLjA3IDEuMDcgMS4wN2MxLjMxIDEuMzEgMy41OSAxLjMgNC44OSAwbDEuMDgtMS4wNyAxLjA3IDEuMDdjLjY0LjY0IDEuNSAxIDIuNCAxLjAxdjN6bTAtNC41Yy0uNTEtLjAxLS45OS0uMi0xLjM1LS41N2wtMi4xMy0yLjEzLTIuMTQgMi4xM2MtLjc0Ljc0LTIuMDMuNzQtMi43NyAwTDguNDggMTIuOGwtMi4xNCAyLjEzYy0uMzUuMzYtLjgzLjU2LTEuMzQuNTdWMTJjMC0uNTUuNDUtMSAxLTFoMTJjLjU1IDAgMSAuNDUgMSAxdjMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhdGNoaW5nUG9rZW1vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTJhMi41IDIuNSAwIDAgMS01IDAgMi41IDIuNSAwIDAgMSA1IDB6bTcuNSAwYzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMiA2LjQ4IDIgMTIgMnMxMCA0LjQ4IDEwIDEwem0tMiAwaC00YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0SDRjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsZWFuSGFuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45OSA1IC42MyAxLjM3IDEuMzcuNjMtMS4zNy42M0wxNi45OSA5bC0uNjMtMS4zN0wxNC45OSA3bDEuMzctLjYzLjYzLTEuMzdNMjAgMTRjMS4xIDAgMi0uOSAyLTJzLTItNC0yLTQtMiAyLjktMiA0IC45IDIgMiAyem0tOS03LjlWNGgyYy41NyAwIDEuMS4xNyAxLjU1LjQ1bDEuNDMtMS40M0E0Ljg5OSA0Ljg5OSAwIDAgMCAxMyAySDcuNXYySDl2Mi4xMWMtMS43OC4zNy0zLjIgMS42OC0zLjc1IDMuMzloMi4xNkM3Ljk0IDguNjEgOC44OSA4IDEwIDhjMS42MiAwIDIuOTQgMS4yOSAyLjk5IDIuOWwyLjAxLjc1VjExYTUgNSAwIDAgMC00LTQuOXpNMjIgMTl2MWwtOCAyLjUtNy0xLjk0VjIySDFWMTFoNy45N2w2LjE2IDIuM0EyLjg5IDIuODkgMCAwIDEgMTcgMTZoMmMxLjY2IDAgMyAxLjM0IDMgM3pNNSAyMHYtN0gzdjdoMnptMTQuOS0xLjQzYy0uMTYtLjMzLS41MS0uNTYtLjktLjU2aC01LjM1Yy0uNTQgMC0xLjA3LS4wOS0xLjU4LS4yNmwtMi4zOC0uNzkuNjMtMS45IDIuMzguNzljLjMxLjEgMi4zLjE1IDIuMy4xNSAwLS4zNy0uMjMtLjctLjU3LS44M0w4LjYxIDEzSDd2NS40OGw2Ljk3IDEuOTMgNS45My0xLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ28yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgtM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xem0tLjUgNC41aC0ydi0zaDJ2M3pNOCAxM3YxYzAgLjU1LS40NSAxLTEgMUg0Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MUg2LjV2LS41aC0ydjNoMlYxM0g4em0xMi41IDIuNWgtMnYxaDNWMThIMTd2LTIuNWMwLS41NS40NS0xIDEtMWgydi0xaC0zVjEyaDMuNWMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbXBvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi44NyAxMS44MUEyLjUgMi41IDAgMCAxIDE1IDhoMWMxLjUxIDAgMi0xIDItMXMuNTUgNi0zIDZjLS40OSAwLS45NC0uMTQtMS4zMi0uMzgtLjI0LjY0LS41OSAxLjc2LS43NiAyLjk2IDEuMjYuMjIgMi4yOC44OSAyLjc3IDEuNzdBNi41MDUgNi41MDUgMCAwIDAgMTguNSAxMmgzYzAgNS4yNC00LjI2IDkuNS05LjUgOS41UzIuNSAxNy4yNCAyLjUgMTIgNi43NiAyLjUgMTIgMi41VjBsNCA0LTQgNFY1LjVjLTMuNTggMC02LjUgMi45Mi02LjUgNi41IDAgMi4yMSAxLjExIDQuMTcgMi44MSA1LjM1LjUxLS45MiAxLjYzLTEuNjIgMi45OC0xLjgtLjA5LS42OS0uMjYtMS40Mi0uNDktMi4wMy0uMzUuMy0uOC40OC0xLjMuNDgtMS4xIDAtMi0uOS0yLTJ2LS45OWMwLS41Ni0uMTktMS4wOS0uNS0xLjUxIDAgMCA0LjQ1LS4yMyA0LjUgMi41IDAgLjI5LS4wNi41Ni0uMTcuOC0uNDItLjMyLS44Ni0uNi0xLjMzLS44LjU4LjQzIDEuMzcgMS4zNyAyIDIuNi42Ny0xLjYyIDEuNjgtMy4yNyAzLTQuNi0uNzYuNTItMS40NyAxLjEyLTIuMTMgMS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbm5lY3RXaXRob3V0Q29udGFjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0SDlhOSA5IDAgMCAxIDktOXYyYy0zLjg3IDAtNyAzLjEzLTcgN3ptNy0zVjljLTIuNzYgMC01IDIuMjQtNSA1aDJjMC0xLjY2IDEuMzQtMyAzLTN6TTcgNGMwLTEuMTEtLjg5LTItMi0ycy0yIC44OS0yIDIgLjg5IDIgMiAyIDItLjg5IDItMnptNC40NS41aC0yQTIuOTkgMi45OSAwIDAgMSA2LjUgN2gtM0MyLjY3IDcgMiA3LjY3IDIgOC41VjExaDZWOC43NGE0Ljk3IDQuOTcgMCAwIDAgMy40NS00LjI0ek0xOSAxN2MxLjExIDAgMi0uODkgMi0ycy0uODktMi0yLTItMiAuODktMiAyIC44OSAyIDIgMnptMS41IDFoLTNhMi45OSAyLjk5IDAgMCAxLTIuOTUtMi41aC0yQTQuOTcgNC45NyAwIDAgMCAxNiAxOS43NFYyMmg2di0yLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29uc3RydWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuNzgzIDE1LjE3MiAyLjEyMS0yLjEyMSA1Ljk5NiA1Ljk5Ni0yLjEyMSAyLjEyMXpNMTcuNSAxMGMxLjkzIDAgMy41LTEuNTcgMy41LTMuNSAwLS41OC0uMTYtMS4xMi0uNDEtMS42bC0yLjcgMi43LTEuNDktMS40OSAyLjctMi43Yy0uNDgtLjI1LTEuMDItLjQxLTEuNi0uNDFDMTUuNTcgMyAxNCA0LjU3IDE0IDYuNWMwIC40MS4wOC44LjIxIDEuMTZsLTEuODUgMS44NS0xLjc4LTEuNzguNzEtLjcxLTEuNDEtMS40MUwxMiAzLjQ5YTMgMyAwIDAgMC00LjI0IDBMNC4yMiA3LjAzbDEuNDEgMS40MUgyLjgxbC0uNzEuNzEgMy41NCAzLjU0LjcxLS43MVY5LjE1bDEuNDEgMS40MS43MS0uNzEgMS43OCAxLjc4LTcuNDEgNy40MSAyLjEyIDIuMTJMMTYuMzQgOS43OWMuMzYuMTMuNzUuMjEgMS4xNi4yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvb2tpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTAuNVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxNVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45NSAxMC45OWMtMS43OS0uMDMtMy43LTEuOTUtMi42OC00LjIyLTIuOTcgMS01Ljc4LTEuNTktNS4xOS00LjU2QzcuMTEuNzQgMiA2LjQxIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgNS44OSAwIDEwLjU0LTUuMDggOS45NS0xMS4wMXpNMTIgMjBjLTQuNDEgMC04LTMuNTktOC04IDAtMy4zMSAyLjczLTguMTggOC4wOC04LjAyLjQyIDIuNTQgMi40NCA0LjU2IDQuOTkgNC45NC4wNy4zNi41MiAyLjU1IDIuOTIgMy42M0MxOS43IDE2Ljg2IDE2LjA2IDIwIDEyIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29yb25hdmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTJjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXptNC4yNS0yYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bS0zLjUgMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNMjIgMTEuMjV2MS41YzAgLjQxLS4zNC43NS0uNzUuNzVzLS43NS0uMzQtLjc1LS43NWgtMS41NGE2Ljk3OCA2Ljk3OCAwIDAgMS0xLjUyIDMuNjVsMS4wOSAxLjA5LjAxLS4wMWMuMjktLjI5Ljc3LS4yOSAxLjA2IDAgLjI5LjI5LjI5Ljc3IDAgMS4wNmwtMS4wNiAxLjA2Yy0uMjkuMjktLjc3LjI5LTEuMDYgMGEuNzUyLjc1MiAwIDAgMS0uMDEtMS4wNWwtMS4wOS0xLjA5YTcuMDE1IDcuMDE1IDAgMCAxLTMuNjQgMS41MXYxLjU0aC4wMWMuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzVoLTEuNWMtLjQxIDAtLjc1LS4zNC0uNzUtLjc1cy4zMy0uNzQuNzQtLjc1di0xLjU1YTYuOTQ4IDYuOTQ4IDAgMCAxLTMuNjMtMS41MWwtMS4wOSAxLjA5LjAxLjAxYy4yOS4yOS4yOS43NyAwIDEuMDYtLjI5LjI5LS43Ny4yOS0xLjA2IDBMNC40IDE4LjU0YS43NTQuNzU0IDAgMCAxIDAtMS4wNmMuMjktLjI5Ljc2LS4yOSAxLjA1LS4wMWwxLjA5LTEuMDlhNi44OSA2Ljg5IDAgMCAxLTEuNS0zLjYzSDMuNWMwIC40MS0uMzQuNzUtLjc1Ljc1UzIgMTMuMTYgMiAxMi43NXYtMS41YzAtLjQxLjM0LS43NS43NS0uNzVzLjc1LjM0Ljc1Ljc1aDEuNTRjLjE1LTEuMzcuNjktMi42MSAxLjUtMy42M0w1LjQ1IDYuNTNjLS4yOS4yOC0uNzYuMjgtMS4wNS0uMDFhLjc1NC43NTQgMCAwIDEgMC0xLjA2TDUuNDYgNC40Yy4yOS0uMjkuNzctLjI5IDEuMDYgMCAuMjkuMjkuMjkuNzcgMCAxLjA2bC0uMDEuMDFMNy42IDYuNTZhNi45ODIgNi45ODIgMCAwIDEgMy42My0xLjUxVjMuNWEuNzUzLjc1MyAwIDAgMS0uNzQtLjc1Ljc3Ljc3IDAgMCAxIC43Ni0uNzVoMS41Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NWgtLjAxdjEuNTRjMS4zNy4xNCAyLjYyLjY5IDMuNjQgMS41MWwxLjA5LTEuMDlhLjc0Mi43NDIgMCAwIDEgLjAxLTEuMDVjLjI5LS4yOS43Ny0uMjkgMS4wNiAwbDEuMDYgMS4wNmMuMjkuMjkuMjkuNzcgMCAxLjA2cy0uNzcuMjktMS4wNiAwbC0uMDEtLjAxLTEuMDkgMS4wOGE3LjAyNSA3LjAyNSAwIDAgMSAxLjUyIDMuNjVoMS41NGMwLS40MS4zNC0uNzUuNzUtLjc1cy43NS4zNC43NS43NXpNMTcgMTJjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDUgMi4yNCA1IDUgNSA1LTIuMjQgNS01em0tNS0xYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMuNSAwYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0xLjc1IDNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNydWVsdHlGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTRjLS4yNC0uMjQtLjQ0LS40OS0uNjUtLjc1QzE3LjUxIDExLjUgMTkgOC41NiAxOSA1YzAtMS45NS0uNzQtMy0yLTMtMS41NCAwLTMuOTYgMi4wNi01IDUuOTdDMTAuOTYgNC4wNiA4LjU0IDIgNyAyIDUuNzQgMiA1IDMuMDUgNSA1YzAgMy41NiAxLjQ5IDYuNSAyLjY1IDguMjUtLjIxLjI2LS40MS41MS0uNjUuNzUtLjI1LjI1LTIgMS4zOS0yIDMuNUM1IDE5Ljk4IDcuMDIgMjIgOS41IDIyYzEuNSAwIDIuNS0uNSAyLjUtLjVzMSAuNSAyLjUuNWMyLjQ4IDAgNC41LTIuMDIgNC41LTQuNSAwLTIuMTEtMS43NS0zLjI1LTItMy41em0tLjEyLTkuOTdjLjA2LjE3LjEyLjQ4LjEyLjk3IDAgMi44NC0xLjExIDUuMjQtMi4wNyA2Ljc4LS4zOC0uMjYtLjgzLS40OC0xLjQtLjYyLjI0LTQuNTIgMi40NC02LjgzIDMuMzUtNy4xM3pNNyA1YzAtLjQ5LjA2LS44LjEyLS45Ny45MS4zIDMuMTEgMi42MSAzLjM2IDcuMTMtLjU4LjE0LTEuMDMuMzUtMS40LjYyQzguMTEgMTAuMjQgNyA3Ljg0IDcgNXptNy41IDE1Yy0xIDAtMS44LS4zMy0yLjIyLS41Ni40Mi0uMTguNzItLjcxLjcyLS45NCAwLS4yOC0uNDUtLjUtMS0uNXMtMSAuMjItMSAuNWMwIC4yMy4zLjc2LjcyLjk0LS40Mi4yMy0xLjIyLjU2LTIuMjIuNTZBMi41IDIuNSAwIDAgMSA3IDE3LjVjMC0uNy40My0xLjI0IDEtMS43My40NC0uMzYuNjEtLjUyIDEuMy0xLjM3Ljc2LS45NSAxLjA5LTEuNCAyLjctMS40czEuOTQuNDUgMi43IDEuNGMuNjkuODUuODYgMS4wMSAxLjMgMS4zNy41Ny40OSAxIDEuMDMgMSAxLjczYTIuNSAyLjUgMCAwIDEtMi41IDIuNXptLS41LTRjMCAuNDEtLjIyLjc1LS41Ljc1cy0uNS0uMzQtLjUtLjc1LjIyLS43NS41LS43NS41LjM0LjUuNzV6bS0zIDBjMCAuNDEtLjIyLjc1LS41Ljc1cy0uNS0uMzQtLjUtLjc1LjIyLS43NS41LS43NS41LjM0LjUuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDeWNsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDcuNDdWNS4zNUMyMC4wNSA0Ljc3IDE2LjU2IDQgMTIgNGMtMi4xNSAwLTQuMTEuODYtNS41NCAyLjI0LjEzLS44NS40LTIuNCAxLjAxLTQuMjRINS4zNUM0Ljc3IDMuOTUgNCA3LjQ0IDQgMTJjMCAyLjE1Ljg2IDQuMTEgMi4yNCA1LjU0LS44NS0uMTQtMi40LS40LTQuMjQtMS4wMXYyLjEyQzMuOTUgMTkuMjMgNy40NCAyMCAxMiAyMGMyLjE1IDAgNC4xMS0uODYgNS41NC0yLjI0LS4xNC44NS0uNCAyLjQtMS4wMSA0LjI0aDIuMTJjLjU4LTEuOTUgMS4zNS01LjQ0IDEuMzUtMTAgMC0yLjE1LS44Ni00LjExLTIuMjQtNS41NC44NS4xMyAyLjQuNCA0LjI0IDEuMDF6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5IDEyIDIgMiA5aDl2MTNoMlY5aDl6TTEyIDQuNDQgMTUuNjYgN0g4LjM0TDEyIDQuNDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQuMTQgMTItMS45Ni4zNy44MiA0LjM3VjIyaDJsLjAyLTRIN3Y0aDJ2LTZINC45ek0xOS4xIDE2SDE1djZoMnYtNGgxLjk4bC4wMiA0aDJ2LTUuMjZsLjgyLTQuMzctMS45Ni0uMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXZlcnNpdHkxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI0XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS4yMiAxNy41OEEyLjAxIDIuMDEgMCAwIDAgMCAxOS40M1YyMWg0LjV2LTEuNjFjMC0uODMuMjMtMS42MS42My0yLjI5LS4zNy0uMDYtLjc0LS4xLTEuMTMtLjEtLjk5IDAtMS45My4yMS0yLjc4LjU4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjIwXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuNzggMTcuNThBNi45NSA2Ljk1IDAgMCAwIDIwIDE3Yy0uMzkgMC0uNzYuMDQtMS4xMy4xLjQuNjguNjMgMS40Ni42MyAyLjI5VjIxSDI0di0xLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNMTYuMjQgMTYuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxOS4zOVYyMWgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek04LjA3IDE5YS45Ni45NiAwIDAgMSAuNDktLjUyYzEuMS0uNDkgMi4yNi0uNzMgMy40My0uNzMgMS4xOCAwIDIuMzMuMjUgMy40My43My4yMy4xLjQuMjkuNDkuNTJIOC4wN3pNOSAxMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3ptNCAwYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNDggMTAuODZDMi4xNyAxMC4xIDIgOS4zNiAyIDguNiAyIDYuMDIgNC4wMiA0IDYuNiA0YzIuNjggMCAzLjgyIDEuNzQgNS40IDMuNTlDMTMuNTcgNS43NiAxNC43IDQgMTcuNCA0IDE5Ljk4IDQgMjIgNi4wMiAyMiA4LjZjMCAuNzYtLjE3IDEuNS0uNDggMi4yNi42NS4zMSAxLjE4LjgyIDEuNTMgMS40NC42LTEuMi45NS0yLjQyLjk1LTMuN0MyNCA0LjkgMjEuMSAyIDE3LjQgMmMtMi4wOSAwLTQuMDkuOTctNS40IDIuNTFDMTAuNjkgMi45NyA4LjY5IDIgNi42IDIgMi45IDIgMCA0LjkgMCA4LjZjMCAxLjI4LjM1IDIuNS45NiAzLjcuMzUtLjYyLjg4LTEuMTMgMS41Mi0xLjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGl2ZXJzaXR5MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjEgMTUuOSAxLjQyLTEuNDJDOC43OSAxMi4wNSA3IDEwLjQxIDcgOC44NSA3IDcuOCA3LjggNyA4Ljg1IDdjMS4xMSAwIDEuNTQuNjUgMi42OCAyaC45M2MxLjEyLTEuMzEgMS41My0yIDIuNjgtMiAuODcgMCAxLjU1LjU0IDEuNzcgMS4zMi4zNS0uMDQuNjgtLjA2IDEtLjA2LjM2IDAgLjcuMDMgMS4wMy4wOEMxOC43IDYuNDMgMTcuMTMgNSAxNS4xNSA1Yy0uMTIgMC0uMjMuMDMtLjM1LjA0LjEyLS4zMy4yLS42Ny4yLTEuMDQgMC0xLjY2LTEuMzQtMy0zLTNTOSAyLjM0IDkgNGMwIC4zNy4wOC43MS4yIDEuMDQtLjEyLS4wMS0uMjMtLjA0LS4zNS0uMDRDNi42OSA1IDUgNi42OSA1IDguODVjMCAyLjQyIDIuMDQgNC4zMSA1LjEgNy4wNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuNSAxNi4yNGMtLjMyLS4xOC0uNjYtLjI5LTEtLjM1LjA3LS4xLjE1LS4xOC4yMS0uMjggMS4wOC0xLjg3LjQ2LTQuMTgtMS40MS01LjI2LTIuMDktMS4yMS00Ljc2LS4zOS04LjY1LjlsLjUyIDEuOTRjMy40Ny0xLjE0IDUuNzktMS44OCA3LjE0LTEuMS45MS41MyAxLjIgMS42MS42OCAyLjUzLS41Ni45Ni0xLjMzIDEtMy4wNyAxLjMybC0uNDcuODFjLjU4IDEuNjIuOTcgMi4zMy4zOSAzLjMyLS41My45MS0xLjYxIDEuMi0yLjUzLjY4LS4wNi0uMDMtLjExLS4wOS0uMTctLjEzLS4zLjY3LS42NCAxLjI0LTEuMDMgMS43My4wNy4wNC4xMy4wOS4yLjE0IDEuODcgMS4wOCA0LjE4LjQ2IDUuMjYtMS40MS4wNi0uMS4wOS0uMjEuMTQtLjMyLjIyLjI3LjQ4LjUxLjguNjkgMS40My44MyAzLjI3LjM0IDQuMS0xLjFzLjMyLTMuMjktMS4xMS00LjExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4zMiAxNC4wMWMtLjc0IDMuNTgtMS4yNyA1Ljk1LTIuNjIgNi43My0uOTEuNTMtMiAuMjQtMi41My0uNjgtLjU2LS45Ni0uMi0xLjY2LjM5LTMuMzJsLS40Ni0uODFjLTEuNy0uMzEtMi41LS4zMy0zLjA3LTEuMzItLjUzLS45MS0uMjQtMiAuNjgtMi41My4wOS0uMDUuMTktLjA4LjI5LS4xMS0uMzUtLjU2LS42NC0xLjE3LS44Mi0xLjg1LS4xNi4wNy0uMzIuMTQtLjQ4LjIzLTEuODcgMS4wOC0yLjQ5IDMuMzktMS40MSA1LjI2LjA2LjEuMTQuMTguMjEuMjgtLjM0LjA2LS42OC4xNy0xIC4zNS0xLjQzLjgzLTEuOTMgMi42Ni0xLjEgNC4xczIuNjYgMS45MyA0LjEgMS4xYy4zMi0uMTguNTgtLjQyLjgtLjY5LjA1LjExLjA4LjIyLjE0LjMyIDEuMDggMS44NyAzLjM5IDIuNDkgNS4yNiAxLjQxIDIuMDktMS4yMSAyLjcxLTMuOTMgMy41NS03Ljk0bC0xLjkzLS41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpdmVyc2l0eTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjMyIDEzLjAxYy45Ni4wMiAxLjg1LjUgMi40NSAxLjM0QTMuOTYxIDMuOTYxIDAgMCAwIDEyIDE2YzEuMjkgMCAyLjUtLjYyIDMuMjMtMS42Ni42LS44NCAxLjQ5LTEuMzIgMi40NS0xLjM0LS43Mi0xLjIyLTMuNi0yLTUuNjgtMi0yLjA3IDAtNC45Ni43OC01LjY4IDIuMDF6TTQgMTNjMS42NiAwIDMtMS4zNCAzLTNTNS42NiA3IDQgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzek0yMCAxM2MxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6TTEyIDEwYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRoLTMuMjdjLS43NyAwLTEuMzUuNDUtMS42OC45Mi0uMDQuMDYtMS4zNiAyLjA4LTQuMDUgMi4wOC0xLjQzIDAtMy4wMy0uNjQtNC4wNS0yLjA4LS4zOS0uNTUtMS0uOTItMS42OC0uOTJIM2MtMS4xIDAtMiAuOS0yIDJ2NGg3di0yLjI2YzEuMTUuOCAyLjU0IDEuMjYgNCAxLjI2czIuODUtLjQ2IDQtMS4yNlYyMGg3di00YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9tYWluQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN1YzSDJ2MThoMTR2LTJoLTR2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloOHY2aDJWN0gxMnpNNiAxOUg0di0yaDJ2MnptMC00SDR2LTJoMnYyem0wLTRINFY5aDJ2MnptMC00SDRWNWgydjJ6bTQgMTJIOHYtMmgydjJ6bTAtNEg4di0yaDJ2MnptMC00SDhWOWgydjJ6bTAtNEg4VjVoMnYyem0xNCAxMnYyaC0ydjJoLTJ2LTJoLTJ2LTJoMnYtMmgydjJoMnptLTYtOGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb21haW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdWM0gydjE4aDIwVjdIMTJ6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTAtNEg0VjVoMnYyem00IDEySDh2LTJoMnYyem0wLTRIOHYtMmgydjJ6bTAtNEg4VjloMnYyem0wLTRIOFY1aDJ2MnptMTAgMTJoLTh2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloOHYxMHptLTItOGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3duaGlsbFNraWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgNC41YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptLTIuNzIgMTYuNC43Ni4yN2E1LjkzMyA1LjkzMyAwIDAgMCA0LjM0LS4xN0wyMiAyMi4xM2MtMS4wNS41NS0yLjI0Ljg3LTMuNS44Ny0uODYgMC0xLjY4LS4xNC0yLjQ1LS40MUwyIDE3LjQ3bC41LTEuNDEgNi45IDIuNTEgMS43Mi00LjQ0LTMuNTctMy43M2MtLjg5LS45NC0uNjctMi40Ny40NS0zLjEybDMuNDgtMi4wMWMxLjEtLjY0IDIuNTItLjEgMi45MSAxLjExbC4zMyAxLjA4YTUuMDE3IDUuMDE3IDAgMCAwIDIuODMgMy4xNGwuNTItMS42IDEuNDMuNDYtMS4xMiAzLjQ1QTcuMDI5IDcuMDI5IDAgMCAxIDEzIDguNTlsLTIuNTMgMS40NSAzLjAzIDMuNDYtMi4yMiA1Ljc2IDMuMDkgMS4xMiAyLjEtNi40NGMuNDYuMTguOTQuMzEgMS40NC40MWwtMi4xMyA2LjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdE5vdGlmaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy41OCA2LjI1IDEuNzcgMS43N0wxNC4zNyAxM0gxMi42di0xLjc3bDQuOTgtNC45OHptMy4yNy0uNDQtMS4wNi0xLjA2Yy0uMi0uMi0uNTEtLjItLjcxIDBsLS44NS44NUwyMCA3LjM3bC44NS0uODVjLjItLjIuMi0uNTIgMC0uNzF6TTE4IDEyLjJWMTdoMnYySDR2LTJoMnYtN2MwLTIuNzkgMS45MS01LjE0IDQuNS01Ljh2LS43YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41di43Yy44Mi4yMSAxLjU3LjU5IDIuMjEgMS4wOWwtMS40MyAxLjQzQTMuODkgMy44OSAwIDAgMCAxMiA2Yy0yLjIxIDAtNCAxLjc5LTQgNHY3aDh2LTIuOGwyLTJ6TTEwIDIwaDRjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxkZXJseVdvbWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxMWMtMS41NiAwLTIuOTItLjktMy41OC0yLjIxbC0uNzktMS42N0MxNC4xMiA3LjEgMTMuNjMgNiAxMi4zNCA2IDguNzIgNiA2IDE2LjY5IDYgMTloMi41bC0yLjEgMi44TDggMjNsMy00aDJ2NGgydi00LjAzTDEzIDEzbC40OS0yLjcxQTYuMDIgNi4wMiAwIDAgMCAxNyAxMi44MXYuNjloMXYtMWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYyM2gxVjEyLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xMS42IDIuOTFjLS4wNi4xOS0uMS4zOC0uMS41OSAwIDEuMS45IDIgMiAyczItLjkgMi0yLS45LTItMi0yYy0uMjEgMC0uNC4wNC0uNTkuMS0uMTUtLjM1LS41LS42LS45MS0uNi0uNTUgMC0xIC40NS0xIDEgMCAuNDEuMjUuNzYuNi45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZGVybHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYuNSA3VjIzaC0xVjEyLjVjMC0uMjgtLjIyLS41LS41LS41cy0uNS4yMi0uNS41djFoLTF2LS42OWE2LjAyIDYuMDIgMCAwIDEtMy41MS0yLjUyYy0uMzEuODctLjQ5IDEuNzgtLjQ5IDIuNzEgMCAuMjMuMDIuNDYuMDMuNjlMMTUgMTYuNVYyM2gtMnYtNWwtMS43OC0yLjU0TDExIDE5bC0zIDQtMS42LTEuMkw5IDE4LjMzVjEzYzAtMS4xNS4xOC0yLjI5LjUtMy4zOWwtMS41Ljg1VjE0SDZWOS4zbDUuNC0zLjA3di4wMWEyIDIgMCAwIDEgMS45NC4wM2MuMzYuMjEuNjMuNTEuOC44NWwuNzkgMS42N0EzLjk4NyAzLjk4NyAwIDAgMCAxOC41IDExYy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1vamlFbW90aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMThjMi4yOCAwIDQuMjItMS42NiA1LTRIN2MuNzggMi4zNCAyLjcyIDQgNSA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbW9qaUV2ZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVoLTJWM0g3djJINWMtMS4xIDAtMiAuOS0yIDJ2MWMwIDIuNTUgMS45MiA0LjYzIDQuMzkgNC45NEE1LjAxIDUuMDEgMCAwIDAgMTEgMTUuOVYxOUg3djJoMTB2LTJoLTR2LTMuMWE1LjAxIDUuMDEgMCAwIDAgMy42MS0yLjk2QzE5LjA4IDEyLjYzIDIxIDEwLjU1IDIxIDhWN2MwLTEuMS0uOS0yLTItMnpNNSA4VjdoMnYzLjgyQzUuODQgMTAuNCA1IDkuMyA1IDh6bTcgNmMtMS42NSAwLTMtMS4zNS0zLTNWNWg2djZjMCAxLjY1LTEuMzUgMy0zIDN6bTctNmMwIDEuMy0uODQgMi40LTIgMi44MlY3aDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppRmxhZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA5LTEtMkg3VjUuNzJjLjYtLjM0IDEtLjk4IDEtMS43MiAwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJjMCAuNzQuNCAxLjM4IDEgMS43MlYyMWgydi00aDVsMSAyaDdWOWgtNnptNCA4aC00bC0xLTJIN1Y5aDVsMSAyaDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppRm9vZEJldmVyYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxOWgxOHYySDJ6TTIwIDNINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJjMS4xMSAwIDItLjg5IDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bS00IDEwYzAgMS4xLS45IDItMiAySDhjLTEuMSAwLTItLjktMi0yVjVoM3YxLjRMNy4xOSA3Ljg1Yy0uMTIuMDktLjE5LjI0LS4xOS4zOXY0LjI2YzAgLjI4LjIyLjUuNS41aDRjLjI4IDAgLjUtLjIyLjUtLjVWOC4yNGMwLS4xNS0uMDctLjMtLjE5LS4zOUwxMCA2LjRWNWg2djh6TTkuNSA3LjI4bDEuNSAxLjJWMTJIOFY4LjQ4bDEuNS0xLjJ6TTIwIDhoLTJWNWgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbW9qaU5hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk0IDQuODhBMS4zMiAxLjMyIDAgMCAwIDIwLjY4IDRIMTkuNmwtLjMxLS45N0MxOS4xNSAyLjQzIDE4LjYxIDIgMTggMnMtMS4xNS40My0xLjI5IDEuMDRMMTYuNCA0aC0xLjA3Yy0uNTcgMC0xLjA4LjM1LTEuMjYuODgtLjE5LjU2LjA0IDEuMTcuNTYgMS40OGwuODcuNTItLjQgMS4yNGMtLjIzLjU4LS4wNCAxLjI1LjQ1IDEuNjIuMjMuMTcuNTEuMjYuNzguMjYuMzEgMCAuNjEtLjExLjg2LS4zMmwuODEtLjcuODEuN2MuMjUuMjEuNTUuMzIuODYuMzIuMjcgMCAuNTUtLjA5Ljc4LS4yNi41LS4zNy42OC0xLjA0LjQ1LTEuNjJsLS4zOS0xLjI0Ljg3LS41MmMuNTEtLjMxLjc0LS45Mi41Ni0xLjQ4ek0xOCA3Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTEzLjQ5IDEwLjUxYy0uNDMtLjQzLS45NC0uNzMtMS40OS0uOTNWOGgtMXYxLjM4Yy0uMTEtLjAxLS4yMy0uMDMtLjM0LS4wMy0xLjAyIDAtMi4wNS4zOS0yLjgzIDEuMTdsLS41LjUtMS4zMy0uNWEzLjAxIDMuMDEgMCAwIDAtMy44MyAxLjgyYy0uMjcuNzUtLjIzIDEuNTcuMTIgMi4yOS4yMy40OC41OC44NyAxIDEuMTYtLjM4IDEuMzUtLjA2IDIuODUgMSAzLjkxLjc4Ljc4IDEuOCAxLjE3IDIuODMgMS4xNy4zNyAwIC43My0uMDcgMS4wOS0uMTcuMjkuNDIuNjguNzcgMS4xNiAxIC40MS4yLjg0LjMgMS4yOC4zLjM0IDAgLjY4LS4wNiAxLjAxLS4xN2EzLjAwNyAzLjAwNyAwIDAgMCAxLjgyLTMuODVsLS40OS0xLjMuNS0uNWMuODctLjg3IDEuMjQtMi4wNCAxLjE0LTMuMTdIMTZ2LTFoLTEuNTljLS4xOS0uNTUtLjQ5LTEuMDYtLjkyLTEuNXptLTUuOTEgOC4zMWMtLjE1LjA0LS4zLjA2LS40Ni4wNi0uNTMgMC0xLjA0LS4yMS0xLjQxLS41OS0uMzgtLjM4LS41OS0uODgtLjU5LTEuNDEgMC0uMTYuMDMtLjMyLjA2LS40Ny4xNC4wMS4yOC4wMy40Mi4wMy44NSAwIDEuNjgtLjIgMi40NC0uNDgtLjMyLjg5LS41NCAxLjg3LS40NiAyLjg2em0tMi45MS00LjUzYy0uMjUtLjA5LS40NS0uMjctLjU3LS41MXMtLjEzLS41MS0uMDQtLjc2Yy4xOS0uNTIuNzYtLjc5IDEuMjYtLjYxbDMuMTYgMS4xOWMtMS4xNS42LTIuNjMgMS4xMS0zLjgxLjY5em02LjMyIDUuNjVjLS4yNS4wOS0uNTIuMDgtLjc2LS4wNGEuOTg5Ljk4OSAwIDAgMS0uNTEtLjU3Yy0uNDItMS4xOC4wOS0yLjY1LjctMy44bDEuMTggMy4xM2MuMTguNTItLjA5IDEuMS0uNjEgMS4yOHptMS4yMS01LjM0LS42MS0xLjYxYzAtLjAxLS4wMS0uMDItLjAyLS4wM2wtLjA2LS4xMmEuNjczLjY3MyAwIDAgMC0uMDctLjExbC0uMDktLjA5LS4wOS0uMDljLS4wMy0uMDMtLjA3LS4wNS0uMTEtLjA3LS4wNC0uMDItLjA3LS4wNS0uMTItLjA2LS4wMSAwLS4wMi0uMDEtLjAzLS4wMmwtMS42LS42YTEuOTY2IDEuOTY2IDAgMCAxIDIuNjcuMTNjLjczLjczLjc3IDEuODguMTMgMi42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppT2JqZWN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNjLS40NiAwLS45My4wNC0xLjQuMTQtMi43Ni41My00Ljk2IDIuNzYtNS40OCA1LjUyLS40OCAyLjYxLjQ4IDUuMDEgMi4yMiA2LjU2LjQzLjM4LjY2LjkxLjY2IDEuNDdWMTljMCAxLjEuOSAyIDIgMmguMjhhMS45OCAxLjk4IDAgMCAwIDMuNDQgMEgxNGMxLjEgMCAyLS45IDItMnYtMi4zMWMwLS41NS4yMi0xLjA5LjY0LTEuNDZBNi45NTYgNi45NTYgMCAwIDAgMTkgMTBjMC0zLjg3LTMuMTMtNy03LTd6bTIgMTRoLTR2LTFoNHYxem0tNCAydi0xaDR2MWgtNHptNS4zMS01LjI2Yy0uMDkuMDgtLjE2LjE4LS4yNC4yNkg4LjkyYy0uMDgtLjA5LS4xNS0uMTktLjI0LS4yNy0xLjMyLTEuMTgtMS45MS0yLjk0LTEuNTktNC43LjM2LTEuOTQgMS45Ni0zLjU1IDMuODktMy45My4zNC0uMDcuNjgtLjEgMS4wMi0uMSAyLjc2IDAgNSAyLjI0IDUgNSAwIDEuNDMtLjYxIDIuNzktMS42OSAzLjc0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDExaDF2M2gtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS42NzIgOS41OC43MDctLjcwNiAyLjEyMiAyLjEyMS0uNzA3LjcwN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuMjA4IDExLjcxMi0uNzA3LS43MDcgMi4xMjEtMi4xMjEuNzA3LjcwN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuODkgOC4xMUMxNS41IDcuNzIgMTQuODMgNyAxMy41MyA3aC0yLjU0QzguMjQgNi45OSA2IDQuNzUgNiAySDRjMCAzLjE2IDIuMTEgNS44NCA1IDYuNzFWMjJoMnYtNmgydjZoMlYxMC4wNUwxOC45NSAxNGwxLjQxLTEuNDEtNC40Ny00LjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1vamlTeW1ib2xzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyaDh2Mkgzek02IDExaDJWN2gzVjVIM3YyaDN6TTEyLjQwNCAyMC4xODJsNy43NzgtNy43NzggMS40MTQgMS40MTQtNy43NzggNy43Nzh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTQuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5LjVcIixcImN5XCI6XCIxOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxMUEyLjUgMi41IDAgMCAwIDE4IDguNVY0aDNWMmgtNHY0LjUxYy0uNDItLjMyLS45My0uNTEtMS41LS41MWEyLjUgMi41IDAgMCAwIDAgNXpNOS43NCAxNS45NmwtMS40MSAxLjQxLS43MS0uNzEuMzUtLjM1YTIuNDk5IDIuNDk5IDAgMCAwLTEuNzctNC4yNyAyLjQ5OSAyLjQ5OSAwIDAgMC0xLjc3IDQuMjdsLjM1LjM1LTEuMDYgMS4wNmMtLjk4Ljk4LS45OCAyLjU2IDAgMy41NC41LjUgMS4xNC43NCAxLjc4Ljc0czEuMjgtLjI0IDEuNzctLjczbDEuMDYtMS4wNiAxLjQxIDEuNDEgMS40MS0xLjQxLTEuNDEtMS40MSAxLjQxLTEuNDEtMS40MS0xLjQzek01Ljg1IDE0LjJjLjEyLS4xMi4yNi0uMTUuMzUtLjE1cy4yMy4wMy4zNS4xNWMuMTkuMi4xOS41MSAwIC43MWwtLjM1LjM1LS4zNS0uMzZhLjUwMS41MDEgMCAwIDEgMC0uN3ptMCA1LjY1Yy0uMTIuMTItLjI2LjE1LS4zNS4xNXMtLjIzLS4wMy0uMzUtLjE1YS41MTMuNTEzIDAgMCAxIDAtLjcxbDEuMDYtMS4wNi43MS43MS0xLjA3IDEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbW9qaVRyYW5zcG9ydGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNTcgMTAuNjZjLS4xNC0uNC0uNTItLjY2LS45Ny0uNjZoLTcuMTljLS40NiAwLS44My4yNi0uOTguNjZMMTAgMTQuNzdsLjAxIDUuNTFjMCAuMzguMzEuNzIuNjkuNzJoLjYyYy4zOCAwIC42OC0uMzguNjgtLjc2VjE5aDh2MS4yNGMwIC4zOC4zMS43Ni42OS43NmguNjFjLjM4IDAgLjY5LS4zNC42OS0uNzJsLjAxLTEuMzd2LTQuMTRsLTEuNDMtNC4xMXptLTguMTYuMzRoNy4xOWwxLjAzIDNoLTkuMjVsMS4wMy0zek0xMiAxN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem04IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgxVjNIN3Y1SDJ2MTNoMVY5aDVWNGg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDExaDJ2Mkg1ek0xMCA1aDJ2MmgtMnpNNSAxNWgydjJINXpNNSAxOWgydjJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVuZ2luZWVyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNWMtMi42NyAwLTggMS4zNC04IDR2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHptLTYgNGMuMjItLjcyIDMuMzEtMiA2LTIgMi43IDAgNS44IDEuMjkgNiAySDN6TTQuNzQgOUg1YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRoLjI2Yy4yNyAwIC40OS0uMjIuNDktLjQ5di0uMDJhLjQ5LjQ5IDAgMCAwLS40OS0uNDlIMTNjMC0xLjQ4LS44MS0yLjc1LTItMy40NXYuOTVjMCAuMjgtLjIyLjUtLjUuNXMtLjUtLjIyLS41LS41VjQuMTRDOS42OCA0LjA2IDkuMzUgNCA5IDRzLS42OC4wNi0xIC4xNFY1LjVjMCAuMjgtLjIyLjUtLjUuNVM3IDUuNzggNyA1LjV2LS45NUM1LjgxIDUuMjUgNSA2LjUyIDUgOGgtLjI2YS40OS40OSAwIDAgMC0uNDkuNDl2LjAzYzAgLjI2LjIyLjQ4LjQ5LjQ4ek0xMSA5YzAgMS4xLS45IDItMiAycy0yLS45LTItMmg0ek0yMS45OCA2LjIzbC45My0uODMtLjc1LTEuMy0xLjE5LjM5Yy0uMTQtLjExLS4zLS4yLS40Ny0uMjdMMjAuMjUgM2gtMS41bC0uMjUgMS4yMmMtLjE3LjA3LS4zMy4xNi0uNDguMjdsLTEuMTgtLjM5LS43NSAxLjMuOTMuODNjLS4wMi4xNy0uMDIuMzUgMCAuNTJsLS45My44NS43NSAxLjMgMS4yLS4zOGMuMTMuMS4yOC4xOC40My4yNWwuMjggMS4yM2gxLjVsLjI3LTEuMjJjLjE2LS4wNy4zLS4xNS40NC0uMjVsMS4xOS4zOC43NS0xLjMtLjkzLS44NWMuMDMtLjE5LjAyLS4zNi4wMS0uNTN6TTE5LjUgNy43NWExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41ek0xOS40IDEwLjc5bC0uODUuMjhjLS4xLS4wOC0uMjEtLjE0LS4zMy0uMTlsLS4xOC0uODhoLTEuMDdsLS4xOC44N2MtLjEyLjA1LS4yNC4xMi0uMzQuMTlsLS44NC0uMjgtLjU0LjkzLjY2LjU5Yy0uMDEuMTMtLjAxLjI1IDAgLjM3bC0uNjYuNjEuNTQuOTMuODYtLjI3Yy4xLjA3LjIuMTMuMzEuMThsLjE4Ljg4aDEuMDdsLjE5LS44N2MuMTEtLjA1LjIyLS4xMS4zMi0uMThsLjg1LjI3LjU0LS45My0uNjYtLjYxYy4wMS0uMTMuMDEtLjI1IDAtLjM3bC42Ni0uNTktLjUzLS45M3ptLTEuOSAyLjZjLS40OSAwLS44OS0uNC0uODktLjg5cy40LS44OS44OS0uODkuODkuNC44OS44OS0uNC44OS0uODkuODl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk3IDEzLjUydi0uMDRDMjMuMjEgMTIuMzggMjQgMTAuNzggMjQgOWMwLTMuMzEtMi42OS02LTYtNi0uMjYgMC0uNTIuMDItLjc4LjA2YTUuOTggNS45OCAwIDAgMC0xMC40NCAwQzYuNTIgMy4wMiA2LjI2IDMgNiAzIDIuNjkgMyAwIDUuNjkgMCA5YzAgMS43OC43OSAzLjM4IDIuMDIgNC40OHYuMDRBNi4wMDggNi4wMDggMCAwIDAgMCAxOGMwIDMuMzEgMi42OSA2IDYgNiAxLjM5IDAgMi42Ny0uNDggMy42OS0xLjI4Ljc0LjE4IDEuNTEuMjggMi4zMS4yOHMxLjU3LS4xIDIuMzEtLjI4YzEuMDIuOCAyLjMgMS4yOCAzLjY5IDEuMjggMy4zMSAwIDYtMi42OSA2LTYgMC0xLjc4LS43OS0zLjM4LTIuMDMtNC40OHpNMjIgOWMwIC41NS0uMTIgMS4wNy0uMzIgMS41NEExMCAxMCAwIDAgMCAxNy45OCA1SDE4YzIuMjEgMCA0IDEuNzkgNCA0em0tOS45Ny00YzIuNzMuMDEgNS4xMyAxLjM5IDYuNTcgMy40OC0uNzEuNTctMS42Ljg5LTIuNTMuODlBNC4wNTkgNC4wNTkgMCAwIDEgMTIgNS4zMWMwLS4xLjAyLS4yLjAzLS4zMXpNMTIgMmMxLjI1IDAgMi4zNi41OSAzLjEgMS41LS45OC0uMzItMi4wMi0uNS0zLjEtLjVzLTIuMTIuMTgtMy4xLjVDOS42NCAyLjU5IDEwLjc1IDIgMTIgMnpNNiA1aC4wMmExMCAxMCAwIDAgMC0zLjcgNS41NEMyLjEyIDEwLjA3IDIgOS41NSAyIDljMC0yLjIxIDEuNzktNCA0LTR6bTAgMTdjLTIuMjEgMC00LTEuNzktNC00IDAtLjY5LjE5LTEuMzIuNS0xLjg4LjggMi40NCAyLjUyIDQuNDcgNC43NCA1LjY4LS4zOS4xMy0uOC4yLTEuMjQuMnptLTItOWMwLTMuNzIgMi41Ni02Ljg1IDYtNy43NHYuMDVjMCAzLjM0IDIuNzIgNi4wNiA2LjA2IDYuMDYgMS4yNiAwIDIuNDUtLjM5IDMuNDUtMS4wOS4zMS44Ni40OSAxLjc3LjQ5IDIuNzIgMCA0LjQxLTMuNTkgOC04IDhzLTgtMy41OS04LTh6bTE0IDljLS40NCAwLS44NS0uMDctMS4yNS0uMiAyLjIzLTEuMjEgMy45NC0zLjI0IDQuNzQtNS42OC4zMS41Ni41IDEuMi41IDEuODguMDEgMi4yMS0xLjc4IDQtMy45OSA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2UzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjkxIDExLjk2QzIyLjM5IDYuMzIgMTcuNjYgMiAxMiAyUzEuNjEgNi4zMiAxLjA5IDExLjk2bC0uOSA5Ljg2Yy0uMSAxLjE3LjgyIDIuMTggMiAyLjE4aDE5LjYyYzEuMTggMCAyLjEtMS4wMSAxLjk5LTIuMThsLS44OS05Ljg2ek0xMyA0LjA3YzIuMjYuMjggNC4yMiAxLjUxIDUuNDkgMy4yOC0uNTguNC0xLjI2LjY1LTEuOTkuNjVDMTQuNTcgOCAxMyA2LjQzIDEzIDQuNXYtLjQzem0tMiAwdi40M0MxMSA2LjQzIDkuNDMgOCA3LjUgOGMtLjczIDAtMS40MS0uMjUtMS45OS0uNjUgMS4yNy0xLjc3IDMuMjMtMyA1LjQ5LTMuMjh6TTQuNTQgOS4xM2MuODcuNTUgMS44OS44NyAyLjk2Ljg3IDEuODYgMCAzLjUtLjkzIDQuNS0yLjM1QzEzIDkuMDcgMTQuNjQgMTAgMTYuNSAxMGMxLjA3IDAgMi4wOS0uMzIgMi45Ni0uODcuMzQuODkuNTQgMS44Ni41NCAyLjg3IDAgNC40MS0zLjU5IDgtOCA4cy04LTMuNTktOC04YzAtMS4wMS4yLTEuOTguNTQtMi44N3pNMTIgMjJIMi4xOWwuNTYtNi4yQzQuMjUgMTkuNDQgNy44MiAyMiAxMiAyMnM3Ljc1LTIuNTYgOS4yNS02LjJsLjU2IDYuMkgxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2U0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtLjk2IDAtMS44OC4xNC0yLjc1LjM5QTQuOTg2IDQuOTg2IDAgMCAwIDUgMEMyLjI0IDAgMCAyLjI0IDAgNWMwIDEuOC45NiAzLjM3IDIuMzkgNC4yNUMyLjE0IDEwLjEyIDIgMTEuMDQgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMHMxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAyYzIuOSAwIDUuNDQgMS41NiA2Ljg0IDMuODgtLjQzLjA3LS44OC4xMi0xLjM0LjEyLTIuOSAwLTUuNDQtMS41Ni02Ljg0LTMuODguNDMtLjA3Ljg4LS4xMiAxLjM0LS4xMnpNNC40MiA5LjQ3YTguMDQ2IDguMDQ2IDAgMCAxIDMuNjYtNC40NCA4LjA0NiA4LjA0NiAwIDAgMS0zLjY2IDQuNDR6TTIgNWMwLTEuNjUgMS4zNS0zIDMtMyAuOTUgMCAxLjguNDYgMi4zNSAxLjE1LTEuNzkuOTQtMy4yNiAyLjQxLTQuMiA0LjJDMi40NiA2LjggMiA1Ljk1IDIgNXptMTAgMTVjLTQuNDEgMC04LTMuNTktOC04IDAtLjA1LjAxLS4xLjAxLS4xNSAyLjYtLjk4IDQuNjgtMi45OSA1Ljc0LTUuNTVhOS45NDIgOS45NDIgMCAwIDAgOS45MiAzLjQ2Yy4yMS43MS4zMyAxLjQ2LjMzIDIuMjQgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuMTIuMjMtMi4xOC42NS0zLjE1YS40OTUuNDk1IDAgMCAwIC44NS0uMzVjMC0uMjUtLjE5LS40NS0uNDMtLjQ5LjE1LS4yNi4zMi0uNTEuNDktLjc1LS4wMy4wOC0uMDYuMTUtLjA2LjI0IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41UzYuMjggNyA2IDdjLS4xMyAwLS4yNS4wNS0uMzQuMTMuNTItLjY4IDEuMTUtMS4yOCAxLjg2LTEuNzZBLjQ5NS40OTUgMCAwIDAgOCA2YS40OTUuNDk1IDAgMCAwIC4xLS45OGMuMTYtLjA5LjMyLS4xNy40OS0uMjUuMDkuMTQuMjQuMjMuNDEuMjMuMjggMCAuNS0uMjIuNS0uNSAwLS4wMy0uMDEtLjA2LS4wMi0uMDkuMzktLjEzLjc5LS4yMyAxLjIxLS4zLS4xMS4xLS4xOS4yMy0uMTkuMzkgMCAuMjguMjIuNS41LjVzLjUtLjIyLjUtLjVhLjUxLjUxIDAgMCAwLS4zLS40NmMuMjYtLjAzLjUzLS4wNC44LS4wNHMuNTQuMDEuOC4wNGMtLjE4LjA4LS4zLjI1LS4zLjQ2IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41YzAtLjE2LS4wOC0uMjktLjE5LS4zOC40MS4wNy44Mi4xNyAxLjIxLjMtLjAxLjAyLS4wMi4wNS0uMDIuMDggMCAuMjguMjIuNS41LjUuMTcgMCAuMzItLjA5LjQxLS4yMy4xNy4wOC4zMy4xNi40OS4yNUEuNDk1LjQ5NSAwIDAgMCAxNiA2Yy4yOCAwIC41LS4yMi41LS41IDAtLjA1LS4wMS0uMDktLjAzLS4xMy43MS40OCAxLjM0IDEuMDggMS44NiAxLjc2YS40OTUuNDk1IDAgMCAwLS44My4zN2MwIC4yOC4yMi41LjUuNXMuNS0uMjIuNS0uNWMwLS4wOS0uMDMtLjE2LS4wNy0uMjMuMTguMjQuMzQuNDkuNDkuNzUtLjIzLjAzLS40Mi4yMy0uNDIuNDhhLjQ5NS40OTUgMCAwIDAgLjg1LjM1Yy40Mi45Ny42NSAyLjAzLjY1IDMuMTUgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2U2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAyYzMuNjggMCA2Ljc4IDIuNTEgNy43MSA1LjktLjYtLjE2LTEuMzMtLjM3LTIuMjYtMi4yNEEyLjk5MiAyLjk5MiAwIDAgMCAxNC43NiA2SDkuMjRjLTEuMTUgMC0yLjE4LjY0LTIuNjkgMS42Ni0uOTMgMS44Ni0xLjU4IDIuMDYtMi4yNiAyLjI0QzUuMjIgNi41MSA4LjMyIDQgMTIgNHptMCAxNmMtNC40MSAwLTgtMy41OS04LTh2LS4wM2MyLjMxLS4yMiAzLjQzLTEuNTkgNC4zNC0zLjQxLjE3LS4zNS41MS0uNTYuOS0uNTZoNS41M2MuMzggMCAuNzIuMjEuODkuNTUuOSAxLjggMS45OSAzLjE5IDQuMzQgMy40MXYuMDNjMCA0LjQyLTMuNTkgOC4wMS04IDguMDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZWJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMmMwIDQuODQgMy40NCA4Ljg3IDggOS44VjE1SDh2LTNoMlY5LjVDMTAgNy41NyAxMS41NyA2IDEzLjUgNkgxNnYzaC0yYy0uNTUgMC0xIC40NS0xIDF2MmgzdjNoLTN2Ni45NWM1LjA1LS41IDktNC43NiA5LTkuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGZW1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDkuNUMxNy41IDYuNDYgMTUuMDQgNCAxMiA0UzYuNSA2LjQ2IDYuNSA5LjVjMCAyLjcgMS45NCA0LjkzIDQuNSA1LjRWMTdIOXYyaDJ2Mmgydi0yaDJ2LTJoLTJ2LTIuMWMyLjU2LS40NyA0LjUtMi43IDQuNS01LjR6bS05IDBDOC41IDcuNTcgMTAuMDcgNiAxMiA2czMuNSAxLjU3IDMuNSAzLjVTMTMuOTMgMTMgMTIgMTNzLTMuNS0xLjU3LTMuNS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXJlcGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMSAxMi40NmMtLjE1LjQyLS4xNS44Mi0uMDggMS4yOC4xLjU1LjMzIDEuMDQuMiAxLjYtLjEzLjU5LS43NyAxLjM4LTEuNTMgMS42MyAxLjI4IDEuMDUgMy4yLjM3IDMuMzktMS4zMi4xNy0xLjU0LTEuNDQtMS45OC0xLjk4LTMuMTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMnYyMGgyMFYySDJ6bTEwIDE2Yy0xLjU4IDAtMi45Ny0xLjg4LTMtMy4wNiAwLS4wNS0uMDEtLjEzLS4wMS0uMjItLjEzLTEuNzMgMS0zLjIgMi40Ny00LjM3LjQ3IDEuMDEgMS4yNyAyLjAzIDIuNTcgMi45Mi41OC40Mi45Ny44Ni45NyAxLjczIDAgMS42NS0xLjM1IDMtMyAzem04IDJoLTJ2LTJoLTIuMDJBNC45OCA0Ljk4IDAgMCAwIDE3IDE1YzAtMS44OS0xLjA5LTIuODUtMS44NS0zLjM3QzEyLjIgOS42MSAxMyA3IDEzIDdjLTYuNzMgMy41Ny02LjAyIDcuNDctNiA4IC4wMy45Ni40OSAyLjA3IDEuMjMgM0g2djJINFY0aDE2djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRml0Yml0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuODkgMTMuODljMS4wNCAwIDEuODktLjg1IDEuODktMS44OXMtLjg1LTEuODktMS44OS0xLjg5UzE4IDEwLjk2IDE4IDEycy44NSAxLjg5IDEuODkgMS44OXptLTQuMjQtLjIxYy45MyAwIDEuNjgtLjc1IDEuNjgtMS42OHMtLjc1LTEuNjgtMS42OC0xLjY4Yy0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OHMuNzUgMS42OCAxLjY4IDEuNjh6bTAtNC4yNmMuOTMgMCAxLjY4LS43NSAxLjY4LTEuNjggMC0uOTMtLjc1LTEuNjgtMS42OC0xLjY4LS45MyAwLTEuNjguNzUtMS42OCAxLjY4IDAgLjkzLjc1IDEuNjggMS42OCAxLjY4em0wIDguNTFjLjkzIDAgMS42OC0uNzUgMS42OC0xLjY4IDAtLjkzLS43NS0xLjY4LTEuNjgtMS42OC0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OCAwIC45Mi43NSAxLjY4IDEuNjggMS42OHptLTQuMjQtNC40NmMuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDdzLS42Ni0xLjQ3LTEuNDctMS40N2MtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0wLTQuMjZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3cy0uNjYtMS40Ny0xLjQ3LTEuNDdjLS44MSAwLTEuNDcuNjYtMS40NyAxLjQ3cy42NSAxLjQ3IDEuNDcgMS40N3ptMCA4LjUyYy44MSAwIDEuNDctLjY2IDEuNDctMS40NyAwLS44MS0uNjYtMS40Ny0xLjQ3LTEuNDctLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDctLjAxLjgxLjY1IDEuNDcgMS40NyAxLjQ3em0wIDQuMjdjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3IDAtLjgxLS42Ni0xLjQ3LTEuNDctMS40Ny0uODEgMC0xLjQ3LjY2LTEuNDcgMS40Ny0uMDEuODEuNjUgMS40NyAxLjQ3IDEuNDd6bTAtMTcuMDZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3UzEyLjIyIDIgMTEuNDEgMmMtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0tNC4yNSA4LjMyYy43IDAgMS4yNi0uNTcgMS4yNi0xLjI2cy0uNTctMS4yNi0xLjI2LTEuMjZhMS4yNjEgMS4yNjEgMCAwIDAgMCAyLjUyem0wIDQuMjVhMS4yNjEgMS4yNjEgMCAwIDAgMC0yLjUyIDEuMjYxIDEuMjYxIDAgMCAwIDAgMi41MnptMC04LjQ5YTEuMjYxIDEuMjYxIDAgMCAwIDAtMi41MiAxLjI2MSAxLjI2MSAwIDAgMCAwIDIuNTJ6bS0zLjg3IDQuMDNhMS4wNSAxLjA1IDAgMSAwIDAtMi4xIDEuMDUgMS4wNSAwIDAgMCAwIDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNjcgMTljLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjEgMS0zLjM0IDEtMS4yNCAwLTEuMzgtMS0zLjMzLTEtMS45NSAwLTIuMSAxLTMuMzQgMXYyYzEuOTUgMCAyLjExLTEgMy4zNC0xIDEuMjQgMCAxLjM4IDEgMy4zMyAxIDEuOTUgMCAyLjEtMSAzLjM0LTEgMS4yMiAwIDEuNCAxIDMuMzMgMSAxLjkzIDAgMi4xLTEgMy4zMy0xIDEuMjIgMCAxLjQgMSAzLjMzIDF2LTJjLTEuMjQgMC0xLjM4LTEtMy4zMy0xek04LjY4IDE3LjVjMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNC45OCAzLjMxIDF2LTJjLS42MyAwLTEtLjI4LTEuNDgtLjU1bC0yLjAyLTcuNTMgMi4wOS44NS43NC0xLjg2TDkuNzggMiAyIDExLjYxbDEuNTcgMS4yMyAxLjM5LTEuNzguOTMgMy40OGMtLjE4LS4wMi0uMzUtLjA1LS41Ni0uMDUtMS45NSAwLTIuMDkgMS0zLjMzIDF2MmMxLjkgMCAyLjE3LTEgMy4zNS0xIDEuMTkuMDEgMS40MiAxLjAxIDMuMzMgMS4wMXptMS43NC0xMy4wOSA1Ljc0IDIuMDkgMi4xNSA4LjAyYy0xLjU0LjExLTEuODIuODktMi44NS45NmwtMS40Mi01LjMxLTMuODYgMS4wNC45MSAzLjM5Yy0xLjEyLjI1LTEuNDEuOS0yLjQyLjktLjE4IDAtLjMzLS4wMi0uNDUtLjA1TDYuNSA5LjA5bDMuOTItNC42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGxvd1RoZVNpZ25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTUuNzUgOC45IDMgMjNoMi4xbDEuNzUtOEw5IDE3djZoMnYtNy41NUw4Ljk1IDEzLjRsLjYtM0MxMC44NSAxMiAxMi44IDEzIDE1IDEzdi0yYy0xLjg1IDAtMy40NS0xLTQuMzUtMi40NWwtLjk1LTEuNkM5LjM1IDYuMzUgOC43IDYgOCA2Yy0uMjUgMC0uNS4wNS0uNzUuMTVMMiA4LjNWMTNoMlY5LjY1bDEuNzUtLjc1TTEzIDJ2N2gzLjc1djE0aDEuNVY5SDIyVjJoLTl6bTUuMDEgNlY2LjI1SDE0LjV2LTEuNWgzLjUxVjNsMi40OSAyLjVMMTguMDEgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZyb250SGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgOGMtLjE3IDAtLjM0LjAyLS41LjA1VjQuNWEyLjUgMi41IDAgMCAwLTMuMDQtMi40NEEyLjUwMiAyLjUwMiAwIDAgMCAxMi41IDBjLTEuMDYgMC0xLjk2LjY2LTIuMzMgMS41OUEyLjUgMi41IDAgMCAwIDcgNHYuNTVBMi41IDIuNSAwIDAgMCA0IDd2OC41YzAgNC42OSAzLjgxIDguNSA4LjUgOC41czguNS0zLjgxIDguNS04LjV2LTVBMi41IDIuNSAwIDAgMCAxOC41IDh6bS41IDcuNWE2LjUgNi41IDAgMSAxLTEzIDBWN2MwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY1aDJWNGMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY3aDJWMi41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjExaDJWNC41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djguOTJjLTEuNzcuNzctMyAyLjUzLTMgNC41OGgyYzAtMS42NiAxLjM0LTMgMy0zdi00LjVjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdpcmwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3LjVjLjk3IDAgMS43NS0uNzggMS43NS0xLjc1UzEyLjk3IDQgMTIgNHMtMS43NS43OC0xLjc1IDEuNzVTMTEuMDMgNy41IDEyIDcuNXptMiA4LjV2NGgtNHYtNEg4bDIuMzgtNi4zOGExLjczMyAxLjczMyAwIDAgMSAzLjI0IDBMMTYgMTZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5VjdoLTJ2MmgtMnYyaDJ2Mmgydi0yaDJWOXpNOCAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTggMTNjLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6bTYgNUgydi0uOTlDMi4yIDE2LjI5IDUuMyAxNSA4IDE1czUuOCAxLjI5IDYgMnYxek0xMi41MSA0LjA1QzEzLjQzIDUuMTEgMTQgNi40OSAxNCA4cy0uNTcgMi44OS0xLjQ5IDMuOTVDMTQuNDcgMTEuNyAxNiAxMC4wNCAxNiA4cy0xLjUzLTMuNy0zLjQ5LTMuOTV6TTE2LjUzIDEzLjgzQzE3LjQyIDE0LjY2IDE4IDE1LjcgMTggMTd2M2gydi0zYzAtMS40NS0xLjU5LTIuNTEtMy40Ny0zLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXBPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA4YzAtMS40Mi0uNS0yLjczLTEuMzMtMy43Ni40Mi0uMTQuODYtLjI0IDEuMzMtLjI0IDIuMjEgMCA0IDEuNzkgNCA0cy0xLjc5IDQtNCA0aC0uMThsLS43Ny0uNzdjLjYtLjk0Ljk1LTIuMDUuOTUtMy4yM3ptNy44MyAxMkgyM3YtM2MwLTIuMTgtMy41OC0zLjQ3LTYuMzQtMy44NyAxLjEuNzUgMS45NSAxLjcxIDIuMjMgMi45NEwyMi44MyAyMHpNOSA2Yy0uMDYgMC0uMTEgMC0uMTYuMDFsLTEuNi0xLjZhMy45OTYgMy45OTYgMCAwIDEgNS4zNSA1LjM1bC0xLjYtMS42Yy4wMS0uMDUuMDEtLjEuMDEtLjE2IDAtMS4xLS45LTItMi0yem0uMTcgNkg5Yy0yLjIxIDAtNC0xLjc5LTQtNHYtLjE3TC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MUwxNyAxOS44M1YyMEgxdi0zYzAtMi42NiA1LjMzLTQgOC00IC4zNyAwIC44LjAzIDEuMjUuMDhMOS4xNyAxMnpNOSAxNWMtMi43IDAtNS44IDEuMjktNiAyLjAxVjE4aDEydi0uMTdsLTIuMTEtMi4xMUMxMS43NiAxNS4zMSAxMC4zMyAxNSA5IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXBSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA5djJoLTZWOWg2ek04IDRDNS43OSA0IDQgNS43OSA0IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTAgM2MtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHptNiA1SDJ2LS45OUMyLjIgMTYuMjkgNS4zIDE1IDggMTVzNS44IDEuMjkgNiAydjF6TTEyLjUxIDQuMDVDMTMuNDMgNS4xMSAxNCA2LjQ5IDE0IDhzLS41NyAyLjg5LTEuNDkgMy45NUMxNC40NyAxMS43IDE2IDEwLjA0IDE2IDhzLTEuNTMtMy43LTMuNDktMy45NXptNC4wMiA5Ljc4QzE3LjQyIDE0LjY2IDE4IDE1LjcgMTggMTd2M2gydi0zYzAtMS40NS0xLjU5LTIuNTEtMy40Ny0zLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTMuNzVjLTIuMzQgMC03IDEuMTctNyAzLjVWMTloMTR2LTEuNzVjMC0yLjMzLTQuNjYtMy41LTctMy41ek00LjM0IDE3Yy44NC0uNTggMi44Ny0xLjI1IDQuNjYtMS4yNXMzLjgyLjY3IDQuNjYgMS4yNUg0LjM0ek05IDEyYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzEwLjkzIDUgOSA1IDUuNSA2LjU3IDUuNSA4LjUgNy4wNyAxMiA5IDEyem0wLTVjLjgzIDAgMS41LjY3IDEuNSAxLjVTOS44MyAxMCA5IDEwcy0xLjUtLjY3LTEuNS0xLjVTOC4xNyA3IDkgN3ptNy4wNCA2LjgxYzEuMTYuODQgMS45NiAxLjk2IDEuOTYgMy40NFYxOWg0di0xLjc1YzAtMi4wMi0zLjUtMy4xNy01Ljk2LTMuNDR6TTE1IDEyYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzE2LjkzIDUgMTUgNWMtLjU0IDAtMS4wNC4xMy0xLjUuMzUuNjMuODkgMSAxLjk4IDEgMy4xNXMtLjM3IDIuMjYtMSAzLjE1Yy40Ni4yMi45Ni4zNSAxLjUuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cHMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMjcgMTJoMy40NmExLjUgMS41IDAgMCAwIDEuNDgtMS43NWwtLjMtMS43OWEyLjk1MSAyLjk1MSAwIDAgMC01LjgyLjAxbC0uMyAxLjc5Yy0uMTUuOTEuNTUgMS43NCAxLjQ4IDEuNzR6bS43OS0zLjIxYy4wOC0uNDYuNDctLjc5Ljk0LS43OXMuODYuMzMuOTQuNzlsLjIgMS4yMWgtMi4yOGwuMi0xLjIxek0xLjY2IDExLjExYy0uMTMuMjYtLjE4LjU3LS4xLjg4LjE2LjY5Ljc2IDEuMDMgMS41MyAxaDEuOTVjLjgzIDAgMS41MS0uNTggMS41MS0xLjI5IDAtLjE0LS4wMy0uMjctLjA3LS40LS4wMS0uMDMtLjAxLS4wNS4wMS0uMDguMDktLjE2LjE0LS4zNC4xNC0uNTMgMC0uMzEtLjE0LS42LS4zNi0uODItLjAzLS4wMy0uMDMtLjA2LS4wMi0uMS4wNy0uMi4wNy0uNDMuMDEtLjY1YTEuMTIgMS4xMiAwIDAgMC0uOTktLjc0LjA5LjA5IDAgMCAxLS4wNy0uMDNDNS4wMyA4LjE0IDQuNzIgOCA0LjM3IDhjLS4zIDAtLjU3LjEtLjc1LjI2LS4wMy4wMy0uMDYuMDMtLjA5LjAyYTEuMjQgMS4yNCAwIDAgMC0xLjcgMS4wM2MwIC4wMi0uMDEuMDQtLjAzLjA2LS4yOS4yNi0uNDYuNjUtLjQxIDEuMDUuMDMuMjIuMTIuNDMuMjUuNi4wMy4wMi4wMy4wNi4wMi4wOXpNMTYuMjQgMTMuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek04LjA3IDE2YS45Ni45NiAwIDAgMSAuNDktLjUyYzEuMS0uNDkgMi4yNi0uNzMgMy40My0uNzMgMS4xOCAwIDIuMzMuMjUgMy40My43My4yMy4xLjQuMjkuNDkuNTJIOC4wN3pNMS4yMiAxNC41OEEyLjAxIDIuMDEgMCAwIDAgMCAxNi40M1YxOGg0LjV2LTEuNjFjMC0uODMuMjMtMS42MS42My0yLjI5LS4zNy0uMDYtLjc0LS4xLTEuMTMtLjEtLjk5IDAtMS45My4yMS0yLjc4LjU4ek0yMi43OCAxNC41OEE2Ljk1IDYuOTUgMCAwIDAgMjAgMTRjLS4zOSAwLS43Ni4wNC0xLjEzLjEuNC42OC42MyAxLjQ2LjYzIDIuMjlWMThIMjR2LTEuNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0yMiAxMXYtLjVjMC0xLjEtLjktMi0yLTJoLTJjLS40MiAwLS42NS40OC0uMzkuODFsLjcuNjNjLS4xOS4zMS0uMzEuNjctLjMxIDEuMDYgMCAxLjEuOSAyIDIgMnMyLS45IDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyb3VwczMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yNCAxMy42NWMtMS4xNy0uNTItMi42MS0uOS00LjI0LS45LTEuNjMgMC0zLjA3LjM5LTQuMjQuOUEyLjk4OCAyLjk4OCAwIDAgMCA2IDE2LjM5VjE4aDEydi0xLjYxYzAtMS4xOC0uNjgtMi4yNi0xLjc2LTIuNzR6TTguMDcgMTZhLjk2Ljk2IDAgMCAxIC40OS0uNTJjMS4xLS40OSAyLjI2LS43MyAzLjQzLS43MyAxLjE4IDAgMi4zMy4yNSAzLjQzLjczLjIzLjEuNC4yOS40OS41Mkg4LjA3ek0xLjIyIDE0LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjktLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNTh6TTIyLjc4IDE0LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxNGMtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYxOEgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTEyIDEyYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTEuNDk3IDExIDQgOC40OTcgNi41MDMgMTEgNCAxMy41MDN6TTIwIDlsLTIuNSA0aDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEzYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMS4xMyAxLjFjLS4zNy0uMDYtLjc0LS4xLTEuMTMtLjEtLjk5IDAtMS45My4yMS0yLjc4LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjl6TTIwIDEzYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNCAzLjQzYzAtLjgxLS40OC0xLjUzLTEuMjItMS44NUE2Ljk1IDYuOTUgMCAwIDAgMjAgMTRjLS4zOSAwLS43Ni4wNC0xLjEzLjEuNC42OC42MyAxLjQ2LjYzIDIuMjlWMThIMjR2LTEuNTd6bS03Ljc2LTIuNzhjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek04LjA3IDE2Yy4wOS0uMjMuMTMtLjM5LjkxLS42OS45Ny0uMzggMS45OS0uNTYgMy4wMi0uNTZzMi4wNS4xOCAzLjAyLjU2Yy43Ny4zLjgxLjQ2LjkxLjY5SDguMDd6TTEyIDhjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMW0wLTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMjIgMTkuODVjLS4xOC4xOC0uNS4yMS0uNzEgMGEuNTA0LjUwNCAwIDAgMSAwLS43MWwzLjM5LTMuMzktMS40MS0xLjQxLTMuMzkgMy4zOWMtLjE5LjItLjUxLjE5LS43MSAwYS41MDQuNTA0IDAgMCAxIDAtLjcxbDMuMzktMy4zOS0xLjQxLTEuNDEtMy4zOSAzLjM5Yy0uMTguMTgtLjUuMjEtLjcxIDBhLjUxMy41MTMgMCAwIDEgMC0uNzFsMy4zOS0zLjM5LTEuNDItMS40MS0zLjM5IDMuMzljLS4xOC4xOC0uNS4yMS0uNzEgMGEuNTEzLjUxMyAwIDAgMSAwLS43MUw5LjUyIDguNGwxLjg3IDEuODZjLjk1Ljk1IDIuNTkuOTQgMy41NCAwIC45OC0uOTguOTgtMi41NiAwLTMuNTRsLTEuODYtMS44Ni4yOC0uMjhjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBsNC4yNCA0LjI0Yy43OC43OC43OCAyLjA1IDAgMi44M2wtOC4yIDguMnptOS42MS02Ljc4YTQuMDA4IDQuMDA4IDAgMCAwIDAtNS42NmwtNC4yNC00LjI0YTQuMDA4IDQuMDA4IDAgMCAwLTUuNjYgMGwtLjI4LjI4LS4yOC0uMjhhNC4wMDggNC4wMDggMCAwIDAtNS42NiAwTDIuMTcgNi43MWEzLjk5MiAzLjk5MiAwIDAgMC0uNCA1LjE5bDEuNDUtMS40NWEyIDIgMCAwIDEgLjM3LTIuMzNsMy41NC0zLjU0Yy43OC0uNzggMi4wNS0uNzggMi44MyAwbDMuNTYgMy41NmMuMTguMTguMjEuNSAwIC43MS0uMjEuMjEtLjUzLjE4LS43MSAwTDkuNTIgNS41N2wtNS44IDUuNzljLS45OC45Ny0uOTggMi41NiAwIDMuNTQuMzkuMzkuODkuNjMgMS40Mi43YTIuNDU4IDIuNDU4IDAgMCAwIDIuMTIgMi4xMiAyLjQ1OCAyLjQ1OCAwIDAgMCAyLjEyIDIuMTJjLjA3LjU0LjMxIDEuMDMuNyAxLjQyLjQ3LjQ3IDEuMS43MyAxLjc3LjczLjY3IDAgMS4zLS4yNiAxLjc3LS43M2w4LjIxLTguMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFsdGhBbmRTYWZldHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41IDEzSDh2LTNoMi41VjcuNWgzVjEwSDE2djNoLTIuNXYyLjVoLTNWMTN6TTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6bTYgOS4wOWMwIDQtMi41NSA3LjctNiA4LjgzLTMuNDUtMS4xMy02LTQuODItNi04Ljgzdi00LjdsNi0yLjI1IDYgMi4yNXY0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFydEJyb2tlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgM2MtLjk2IDAtMS45LjI1LTIuNzMuNjlMMTIgOWgzbC0zIDEwIDEtOWgtM2wxLjU0LTUuMzlDMTAuNDcgMy42MSA5LjAxIDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDQuMTMgNC4xNiA3LjE4IDEwIDEyLjUgNS40Ny00Ljk0IDEwLTguMjYgMTAtMTIuNUMyMiA1LjQyIDE5LjU4IDMgMTYuNSAzem0tNi4yNiAxMy43M0M2LjQ1IDEzLjM0IDQgMTEgNCA4LjUgNCA2LjU0IDUuNTQgNSA3LjUgNWMuNTkgMCAxLjE5LjE1IDEuNzMuNDJMNy4zNSAxMmgzLjQybC0uNTMgNC43M3ptNC44OS0xLjJMMTcuNjkgN2gtMi45MWwuNjEtMS44MmMuMzYtLjEyLjc0LS4xOCAxLjExLS4xOEMxOC40NiA1IDIwIDYuNTQgMjAgOC41YzAgMi4yMS0yLjAyIDQuNDMtNC44NyA3LjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem00IDUuMjhjLTEuMjMtLjM3LTIuMjItMS4xNy0yLjgtMi4xOGwtMS0xLjZjLS40MS0uNjUtMS4xMS0xLTEuODQtMS0uNzggMC0xLjU5LjUtMS43OCAxLjQ0UzcgMjMgNyAyM2gyLjFsMS44LTggMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNjMSAxLjE1IDIuNDEgMi4wMSA0IDIuMzRWMjNIMTlWOWgtMS41djEuNzh6TTcuNDMgMTMuMTNsLTIuMTItLjQxYS45OTkuOTk5IDAgMCAxLS43OS0xLjE3bC43Ni0zLjkzYTIgMiAwIDAgMSAyLjM0LTEuNThsMS4xNi4yMy0xLjM1IDYuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaXN0b3J5RWR1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djEuMzhjLS44My0uMzMtMS43Mi0uNS0yLjYxLS41LTEuNzkgMC0zLjU4LjY4LTQuOTUgMi4wNWwzLjMzIDMuMzNoMS4xMXYxLjExYy44Ni44NiAxLjk4IDEuMzEgMy4xMSAxLjM2VjE1SDZ2M2MwIDEuMS45IDIgMiAyaDEwYzEuNjYgMCAzLTEuMzQgMy0zVjRIOXptLTEuMTEgNi40MVY4LjI2SDUuNjFMNC41NyA3LjIyYTUuMDcgNS4wNyAwIDAgMSAxLjgyLS4zNGMxLjM0IDAgMi41OS41MiAzLjU0IDEuNDZsMS40MSAxLjQxLS4yLjJhMi43IDIuNyAwIDAgMS0xLjkyLjhjLS40NyAwLS45My0uMTItMS4zMy0uMzR6TTE5IDE3YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xdi0yaC02di0yLjU5Yy41Ny0uMjMgMS4xLS41NyAxLjU2LTEuMDNsLjItLjJMMTUuNTkgMTRIMTd2LTEuNDFsLTYtNS45N1Y2aDh2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNSA5LTIuMjUtNGgtMy4zMWwtMS42OS0zaC00LjVMOC4wNiA1SDQuNzVMMi41IDlsMS42OSAzLTEuNjkgMyAyLjI1IDRoMy4zMWwxLjY5IDNoNC41bDEuNjktM2gzLjMxbDIuMjUtNC0xLjY5LTMgMS42OS0zem0tMi4yOSAwLTEuMTIgMmgtMi4xNGwtMS4xMi0yIDEuMTItMmgyLjE0bDEuMTIgMnptLTguMjcgNS0xLjEyLTIgMS4xMi0yaDIuMTJsMS4xMiAyLTEuMTIgMmgtMi4xMnptMi4xNC0xMCAxLjEyIDEuOThMMTMuMDYgOGgtMi4xMkw5LjggNS45OCAxMC45MiA0aDIuMTZ6TTUuOTIgN2gyLjE0bDEuMTIgMi0xLjEyIDJINS45Mkw0Ljc5IDlsMS4xMy0yem0tMS4xMyA4IDEuMTItMmgyLjE0bDEuMTIgMi0xLjEyIDJINS45MmwtMS4xMy0yem02LjEzIDVMOS44IDE4LjAyIDEwLjk0IDE2aDIuMTJsMS4xMyAyLjAyTDEzLjA4IDIwaC0yLjE2em03LjE2LTNoLTIuMTRsLTEuMTItMiAxLjEyLTJoMi4xNGwxLjEyIDItMS4xMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSWNlU2thdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE3YzAgMS42Ni0xLjM0IDMtMyAzaC0ydi0yaDN2LTRhMy45NiAzLjk2IDAgMCAwLTIuOTEtMy44MmwtMi42Mi0uNzRDMTIuNjIgOS4xOSAxMiA4LjM5IDEyIDcuNVYzSDN2MTVoM3YySDJ2MmgxNmMyLjc2IDAgNS0yLjI0IDUtNWgtMnpNNSAxNlY1aDV2MUg4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41SDEwbC4xIDFIOC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNWgxLjgxYy40NSAxLjEyIDEuNCAyLjAxIDIuNiAyLjM2bDIuNjIuNzNDMTYuNCAxMi4zMyAxNyAxMy4xIDE3IDE0djJINXptOSA0SDh2LTJoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW50ZXJlc3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMiAxM2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTEzIDEzdjhoOHYtOGgtOHptNiA2aC00di00aDR2NHpNNyAybC01IDloMTBMNyAyem0wIDQuMTJMOC42IDlINS40TDcgNi4xMnpNMTkuMjUgMi41Yy0xLjA2IDAtMS44MS41Ni0yLjI1IDEuMTctLjQ0LS42MS0xLjE5LTEuMTctMi4yNS0xLjE3QzEzLjE5IDIuNSAxMiAzLjc4IDEyIDUuMjVjMCAyIDIuNDIgMy40MiA1IDUuNzUgMi41OC0yLjMzIDUtMy43NSA1LTUuNzUgMC0xLjQ3LTEuMTktMi43NS0yLjc1LTIuNzV6TTE3IDguMzVjLTEuNDUtMS4yMi0zLTIuNC0zLTMuMSAwLS40My4zNS0uNzUuNzUtLjc1LjMxIDAgLjUyLjE3LjczLjM3TDE3IDYuM2wxLjUyLTEuNDNjLjIxLS4yLjQyLS4zNy43My0uMzcuNCAwIC43NS4zMi43NS43NSAwIC43LTEuNTUgMS44OC0zIDMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUlvc1NoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgNS0xLjQyIDEuNDItMS41OS0xLjU5VjE2aC0xLjk4VjQuODNMOS40MiA2LjQyIDggNWw0LTQgNCA0em00IDV2MTFjMCAxLjEtLjkgMi0yIDJINmEyIDIgMCAwIDEtMi0yVjEwYzAtMS4xMS44OS0yIDItMmgzdjJINnYxMWgxMlYxMGgtM1Y4aDNhMiAyIDAgMCAxIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtheWFraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMjNjLTEuMDMgMC0yLjA2LS4yNS0zLS43NS0xLjg5IDEtNC4xMSAxLTYgMC0xLjg5IDEtNC4xMSAxLTYgMC0uOTUuNS0xLjk3Ljc1LTMgLjc1SDJ2LTJoMWMxLjA0IDAgMi4wOC0uMzUgMy0xIDEuODMgMS4zIDQuMTcgMS4zIDYgMCAxLjgzIDEuMyA0LjE3IDEuMyA2IDAgLjkxLjY1IDEuOTYgMSAzIDFoMXYyaC0xek0xMiA1LjVjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMiAxMnMtMS41Mi43MS0zLjkzIDEuMzdjLS44Mi0uMjMtMS41My0uNzUtMi4wNy0xLjM3LS43My44NC0xLjggMS41LTMgMS41cy0yLjI3LS42Ni0zLTEuNWMtLjczLjg0LTEuOCAxLjUtMyAxLjVzLTIuMjctLjY2LTMtMS41Yy0uNTQuNjEtMS4yNSAxLjEzLTIuMDcgMS4zN0MxLjUyIDE4LjIxIDAgMTcuNSAwIDE3LjVzMi45My0xLjM2IDcuMTMtMi4wOGwxLjM1LTQuMTdjLjMxLS45NSAxLjMyLTEuNDcgMi4yNy0xLjE2LjA5LjAzLjE5LjA3LjI3LjExbDIuNDcgMS4zIDIuODQtMS41IDEuNjUtMy43MS0uNTEtMS4zMkwxOC44IDIgMjIgMy40MyAyMC42NyA2LjRsLTEuMzEuNS0zLjcyIDguMzRjNC44NS42MyA4LjM2IDIuMjYgOC4zNiAyLjI2em0tOC45OC00LjU0LTEuNTIuOC0xLjc1LS45Mi0uNzEgMi4xN2MuMzIgMCAuNjQtLjAxLjk2LS4wMS43MSAwIDEuNC4wMyAyLjA3LjA4bC45NS0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2luZ0JlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtMS4xLS45LTItMi0yVjdjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ2M2MtMS4xIDAtMiAuOS0yIDJ2NWgxLjMzTDQgMTloMWwuNjctMmgxMi42N2wuNjYgMmgxbC42Ny0ySDIydi01em0tNC0yaC01VjdoNXYzek02IDdoNXYzSDZWN3ptLTIgNWgxNnYzSDR2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLaXRlc3VyZmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM2MwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem0xNC4wNi0yaC0yLjEyTDE1LjUgMy40NGwxLjA2IDEuMDYgMy41LTMuNXpNMjIgMjN2LTJoLTFjLTEuMDQgMC0yLjA4LS4zNS0zLTEtMS44MyAxLjMtNC4xNyAxLjMtNiAwLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0uOTEuNjUtMS45NiAxLTMgMUgydjJoMWMxLjAzIDAgMi4wNS0uMjUgMy0uNzUgMS44OSAxIDQuMTEgMSA2IDAgMS44OSAxIDQuMTEgMSA2IDAgLjk1LjUgMS45Ny43NSAzIC43NWgxem0tMS05LjcyYzAgMS40NC0yLjE5IDMuNjItNS4wNCA1LjU4LS4zMS4wOS0uNjMuMTQtLjk2LjE0LTEuMiAwLTIuMjctLjY2LTMtMS41LS43My44NC0xLjggMS41LTMgMS41LS45NCAwLTEuODEtLjQxLTIuNDktLjk5LjQ2LS4zOS45Ni0uNzggMS40OS0xLjE3bC0xLjU1LTIuOTdBNC4wNiA0LjA2IDAgMCAxIDYgMTJWOGMwLTEuMS45LTIgMi0yaDNjMS4zOCAwIDIuNjMtLjU2IDMuNTQtMS40NmwxLjQxIDEuNDFBNy4wMTggNy4wMTggMCAwIDEgMTEgOEg5LjZ2My41aDIuOGwxLjY5IDEuODhjMS45NS0uODQgMy43Ny0xLjM4IDUuMDYtMS4zOC44NCAwIDEuODUuMjUgMS44NSAxLjI4em0tOC44Ljk5LS43LS43Ny0yLjUuMS44MyAyLjAxYy41OS0uMzggMS44MS0xLjA2IDIuMzctMS4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhbmRzbGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEyIDggOEgydjE0aDIwbC02LTgtNS0yem0xLjUzIDIuNzdMNiAxNi45NWwtMi0uNjd2LTEuODlsMiAuNjcgMy45NS0xLjMyIDIuNTggMS4wM3pNNyAxMGwxLjU3IDIuMDktMi41Ny44Ni0yLS42N1YxMGgzek00IDIwdi0xLjYxbDIgLjY3IDkuMDMtMy4wMUwxOCAyMEg0ek0xNyA2VjFsLTUtMS0zIDJ2NGwzIDIgNS0yem0tNi0yLjkzIDEuNDItLjk1IDIuNTguNTJ2Mi4wMWwtMi43NyAxLjExTDExIDQuOTNWMy4wN3pNMTguNSA3IDE2IDl2M2wyLjUgMiA0LjUtMlY4bC00LjUtMXptMi41IDMuNy0yLjIuOTgtLjgtLjY0VjkuOTZsMS0uOCAyIC40NHYxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhdGlvbkNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExVjVsLTMtMy0zIDN2MkgzdjE0aDE4VjExaC02em0tOCA4SDV2LTJoMnYyem0wLTRINXYtMmgydjJ6bTAtNEg1VjloMnYyem02IDhoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyem0wLTRoLTJWOWgydjJ6bTAtNGgtMlY1aDJ2MnptNiAxMmgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMdWdnYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDE4SDhWOWgxLjV2OXptMy4yNSAwaC0xLjVWOWgxLjV2OXpNMTYgMThoLTEuNVY5SDE2djl6bTEtMTJoLTJWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzSDdjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xaDZjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xYzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS02LjUtMi41aDNWNmgtM1YzLjV6TTE3IDE5SDdWOGgxMHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTFjMS45MyAwIDMuNSAxLjU3IDMuNSAzLjVTMTEuNDMgMTggOS41IDE4IDYgMTYuNDMgNiAxNC41IDcuNTcgMTEgOS41IDExem0wLTJDNi40NiA5IDQgMTEuNDYgNCAxNC41UzYuNDYgMjAgOS41IDIwczUuNS0yLjQ2IDUuNS01LjVjMC0xLjE2LS4zNi0yLjIzLS45Ny0zLjEyTDE4IDcuNDJWMTBoMlY0aC02djJoMi41OGwtMy45NyAzLjk3QzExLjczIDkuMzYgMTAuNjYgOSA5LjUgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDIuNXY3aDN2LTdIMTZWOWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hbjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2g0di03aDJWOWMwLTEuMS0uOS0yLTItMnpNMTIgMS43NTEgMTQuMjQ4IDQgMTIgNi4yNDggOS43NSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFuNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjc1IDdoLTMuNUM5LjA0IDcgOC4xMSA4LjA3IDguMjcgOS4yNkwxMCAyMmg0bDEuNzMtMTIuNzRDMTUuODkgOC4wNyAxNC45NiA3IDEzLjc1IDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2g0di03aDJWOWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hc2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSA2Yy0xLjMxIDAtMi4zNyAxLjAxLTIuNDggMi4zLTEuODgtLjUtMi44NC0xLjgtNS4wMi0xLjgtMi4xOSAwLTMuMTQgMS4zLTUuMDIgMS44QzYuODcgNy4wMiA1LjgxIDYgNC41IDZBMi41IDIuNSAwIDAgMCAyIDguNVY5YzAgNiAzLjYgNy44MSA2LjUyIDcuOThDOS41MyAxNy42MiAxMC43MiAxOCAxMiAxOHMyLjQ3LS4zOCAzLjQ4LTEuMDJDMTguNCAxNi44MSAyMiAxNSAyMiA5di0uNUEyLjUgMi41IDAgMCAwIDE5LjUgNnptLTE2IDN2LS41YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYzYzAgMS4yOC4zOCAyLjQ3IDEuMDEgMy40OEM0Ljk5IDE0LjI3IDMuNSAxMi42NSAzLjUgOXpNNyAxMS41VjkuODVjMS4xMi0uMjMgMS45NS0uNjkgMi42Ni0xLjA4QzEwLjQ4IDguMzMgMTEuMDcgOCAxMiA4Yy45MyAwIDEuNTIuMzMgMi4zNC43OC43MS4zOSAxLjU0Ljg0IDIuNjYgMS4wOHYxLjY1YzAgMi43Ni0yLjI0IDUtNSA1cy01LTIuMjUtNS01LjAxek0yMC41IDljMCAzLjY1LTEuNDkgNS4yNy0zLjAxIDUuOTguNjQtMS4wMSAxLjAxLTIuMiAxLjAxLTMuNDh2LTNjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxVjl6bS05LjgxIDEuNDhjLS40NC4yNi0uOTYuNTYtMS42OS43NlYxMC4yYy40OC0uMTcuODQtLjM4IDEuMTgtLjU4QzEwLjcyIDkuMyAxMS4yMyA5IDEyIDlzMS4yNy4zIDEuOC42MmMuMzQuMi43MS40MiAxLjIuNTl2MS4wNGMtLjc1LS4yMS0xLjI2LS41MS0xLjcxLS43OC0uNDYtLjI3LS44LS40Ny0xLjI5LS40N3MtLjg0LjItMS4zMS40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pbGl0YXJ5VGVjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwLjQzVjJIN3Y4LjQzYzAgLjM1LjE4LjY4LjQ5Ljg2bDQuMTggMi41MS0uOTkgMi4zNC0zLjQxLjI5IDIuNTkgMi4yNEw5LjA3IDIyIDEyIDIwLjIzIDE0LjkzIDIybC0uNzgtMy4zMyAyLjU5LTIuMjQtMy40MS0uMjktLjk5LTIuMzQgNC4xOC0yLjUxYy4zLS4xOC40OC0uNS40OC0uODZ6bS02IC42NC0yLTEuMlY0aDJ2Ny4wN3ptNC0xLjItMiAxLjJWNGgydjUuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb29kQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSAyLjVjLTIuMzMgMC00LjMxIDEuNDYtNS4xMSAzLjVoMTAuMjJjLS44LTIuMDQtMi43OC0zLjUtNS4xMS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSA2LjVjMi4zMyAwIDQuMzEtMS40NiA1LjExLTMuNUg2Ljg5Yy44IDIuMDQgMi43OCAzLjUgNS4xMSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOaWdodHNTdGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNzggMTcuNTFjLTIuNDcgMC02LjU3LTEuMzMtOC42OC01LjQzLTIuMzMtNC41MS0uNS04LjQ4LjUzLTEwLjA3QzYuMjcgMi4yIDEuOTggNi41OSAxLjk4IDEyYzAgLjE0LjAyLjI4LjAyLjQyLjYxLS4yNiAxLjI4LS40MiAxLjk4LS40MiAwLTMuMDkgMS43My01Ljc3IDQuMy03LjEtLjUgMi4xOS0uNTQgNS4wNCAxLjA0IDguMSAxLjU3IDMuMDQgNC4xOCA0Ljk1IDYuOCA1Ljg2YTggOCAwIDAgMS01LjYxIDEuMDFjLS4zNy43LS45NCAxLjI3LTEuNjQgMS42NC45OC4zMiAyLjAzLjUgMy4xMS41IDMuNSAwIDYuNTgtMS44IDguMzctNC41Mi0uMTcuMDEtLjM3LjAyLS41Ny4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNmgtLjE4QzYuNCAxNC44NCA1LjMgMTQgNCAxNGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2gzYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQWR1bHRDb250ZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNCAxMmMwLTEuODUuNjMtMy41NCAxLjY5LTQuOUw3LjU5IDloMi44M0w3LjEgNS42OUE3LjkyNCA3LjkyNCAwIDAgMSAxMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS44NS0uNjMgMy41NC0xLjY5IDQuOWwtMS45LTEuOWgtMi44M2wzLjMxIDMuMzFBNy44NzQgNy44NzQgMCAwIDEgMTIgMjBjLTQuNDEgMC04LTMuNTktOC04elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4yNSAxNC0xLjUtMiAxLjUtMmgtMS41TDEyIDExbC0uNzUtMWgtMS41bDEuNSAyLTEuNSAyaDEuNWwuNzUtMSAuNzUgMXpNOCAxMGwtLjc1IDEtLjc1LTFINWwxLjUgMkw1IDE0aDEuNWwuNzUtMUw4IDE0aDEuNUw4IDEybDEuNS0yek0xNiAxNGwuNzUtMSAuNzUgMUgxOWwtMS41LTIgMS41LTJoLTEuNWwtLjc1IDEtLjc1LTFoLTEuNWwxLjUgMi0xLjUgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vTHVnZ2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDEzLjE3LTEuNS0xLjVWOUgxNnY0LjE3em0zLjc4IDkuNDQtMS44NS0xLjg1Yy0uMjguMTUtLjU5LjI0LS45My4yNCAwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMUg5YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xYy0xLjEgMC0yLS45LTItMlY4YzAtLjA1LjAyLS4xLjAyLS4xNUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTE2LjE3IDE5bC0zLjQyLTMuNDJWMThoLTEuNXYtMy45Mkw5LjUgMTIuMzNWMThIOHYtNy4xN2wtMS0xVjE5aDkuMTd6TTEyLjc1IDloLS45MmwuOTIuOTJWOXpNMTkgOHY4LjE3bC0yLTJWOGgtNi4xN2wtLjk5LS45OUw5IDYuMTdWM2MwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYzaDJjMS4xIDAgMiAuOSAyIDJ6bS04LjUtMmgzVjMuNWgtM1Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9yZGljV2Fsa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDIzaC0xLjV2LTlIMTl2OXpNNy41MyAxNEg2bC0yIDloMS41M2wyLTl6bTUuOTctOC41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNOS44IDguOSA3IDIzaDIuMWwxLjgtOCAyLjEgMnY2aDJ2LTcuNWwtMi4xLTIgLjYtM0MxNC44IDEyIDE2LjggMTMgMTkgMTN2LTJjLTEuOSAwLTMuNS0xLTQuMy0yLjRsLTEtMS42YTIuMTQ1IDIuMTQ1IDAgMCAwLTIuNjUtLjg0TDYgOC4zVjEzaDJWOS42bDEuOC0uN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGlmaWNhdGlvbkFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE0djNIOHYtN2MwLTIuMjEgMS43OS00IDQtNCAuODUgMCAxLjY0LjI2IDIuMjguNzJsMS40My0xLjQzQTUuODcgNS44NyAwIDAgMCAxMy41IDQuMnYtLjdjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuN0M3LjkxIDQuODYgNiA3LjIxIDYgMTB2N0g0djJoMTZ2LTJoLTJ2LTNoLTJ6bS00IDhjMS4xIDAgMi0uOSAyLTJoLTRjMCAxLjEuOSAyIDIgMnpNMjQgOGgtM1Y1aC0ydjNoLTN2MmgzdjNoMnYtM2gzVjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RpZmljYXRpb25zQWN0aXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjQgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tMiAxSDh2LTZjMC0yLjQ4IDEuNTEtNC41IDQtNC41czQgMi4wMiA0IDQuNXY2ek03LjU4IDQuMDggNi4xNSAyLjY1QzMuNzUgNC40OCAyLjE3IDcuMyAyLjAzIDEwLjVoMmE4LjQ0NSA4LjQ0NSAwIDAgMSAzLjU1LTYuNDJ6bTEyLjM5IDYuNDJoMmMtLjE1LTMuMi0xLjczLTYuMDItNC4xMi03Ljg1bC0xLjQyIDEuNDNhOC40OTUgOC40OTUgMCAwIDEgMy41NCA2LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90aWZpY2F0aW9uc05vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzEuMSAwIDItLjkgMi0yaC00YzAgMS4xLjkgMiAyIDJ6bTYtNnYtNWMwLTMuMDctMS42My01LjY0LTQuNS02LjMyVjRjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuNjhDNy42NCA1LjM2IDYgNy45MiA2IDExdjVsLTIgMnYxaDE2di0xbC0yLTJ6bS0yIDFIOHYtNmMwLTIuNDggMS41MS00LjUgNC00LjVzNCAyLjAyIDQgNC41djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RpZmljYXRpb25zT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem0wLTE1LjVjMi40OSAwIDQgMi4wMiA0IDQuNXYuMWwyIDJWMTFjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4Yy0uMjQuMDYtLjQ3LjE1LS42OS4yM2wxLjY0IDEuNjRjLjE4LS4wMi4zNi0uMDUuNTUtLjA1ek01LjQxIDMuMzUgNCA0Ljc2bDIuODEgMi44MUM2LjI5IDguNTcgNiA5Ljc0IDYgMTF2NWwtMiAydjFoMTQuMjRsMS43NCAxLjc0IDEuNDEtMS40MUw1LjQxIDMuMzV6TTE2IDE3SDh2LTZjMC0uNjguMTItMS4zMi4zNC0xLjlMMTYgMTYuNzZWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RpZmljYXRpb25zUGF1c2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgOS44aDIuOGwtMi44IDMuNFYxNWg1di0xLjhoLTIuOGwyLjgtMy40VjhoLTV6TTE4IDE2di01YzAtMy4wNy0xLjYzLTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjY0IDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTIgMUg4di02YzAtMi40OCAxLjUxLTQuNSA0LTQuNXM0IDIuMDIgNCA0LjV2NnptLTQgNWMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90aWZpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjMS4xIDAgMi0uOSAyLTJoLTRjMCAxLjEuOSAyIDIgMnptNi02di01YzAtMy4wNy0xLjYzLTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjY0IDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTIgMUg4di02YzAtMi40OCAxLjUxLTQuNSA0LTQuNXM0IDIuMDIgNCA0LjV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGRvb3JHcmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIyYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zYy0xLjMgMC0yLjQuODQtMi44MiAySDkuMTRsMS45OS0zLjA2YTYuMzYgNi4zNiAwIDAgMCAxLjc0IDBsMS4wMiAxLjU3Yy40Mi0uNTMuOTYtLjk1IDEuNi0xLjIxbC0uNi0uOTNBNi45OTIgNi45OTIgMCAwIDAgMTkgOEg1YzAgMi44NCAxLjY5IDUuMjcgNC4xMiA2LjM3bC0zLjk1IDYuMDhhMSAxIDAgMCAwIC4yOSAxLjM4IDEgMSAwIDAgMCAxLjM4LS4yOWwxLTEuNTVoNi4zNEMxNC42IDIxLjE2IDE1LjcgMjIgMTcgMjJ6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tOS41OC04aDkuMTZjLS43NyAxLjc2LTIuNTQgMy00LjU4IDNzLTMuODEtMS4yNC00LjU4LTN6TTkuNDEgN2gxYy4xNS0xLjE1LjIzLTEuNjQtLjg5LTIuOTYtLjQyLS41LS42OC0uNzctLjQ2LTIuMDRoLS45OWMtLjIxIDEuMTEuMDMgMi4wNS44OSAyLjk2LjIyLjI0Ljc5LjY3LjQ1IDIuMDR6TTExLjg5IDdoMWMuMTUtMS4xNS4yMy0xLjY0LS44OS0yLjk2LS40Mi0uNS0uNjgtLjc4LS40Ni0yLjA0aC0uOTljLS4yMSAxLjExLjAzIDIuMDUuODkgMi45Ni4yMy4yNC44LjY3LjQ1IDIuMDR6TTE0LjQxIDdoMWMuMTUtMS4xNS4yMy0xLjY0LS44OS0yLjk2LS40Mi0uNS0uNjgtLjc3LS40Ni0yLjA0aC0uOTljLS4yMSAxLjExLjAzIDIuMDUuODkgMi45Ni4yMi4yNC43OS42Ny40NSAyLjA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFnZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNiAyaDZ2NmgtM2wxLTQtNCAxVjV6TTUgNWg2djNMNyA3bDEgNEg1VjV6bTYgMTRINXYtNmgzbC0xIDQgNC0xdjN6bTggMGgtNnYtM2w0IDEtMS00aDN2NnptLTQuMzctNC4zN0wxMiAxMy43MmwtMi42My45MS45MS0yLjYzLS45MS0yLjYzIDIuNjMuOTEgMi42My0uOTEtLjkxIDIuNjMuOTEgMi42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhcmFnbGlkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0zLjQ4Ljk0QzE0LjY4IDE4LjU0IDE0IDE5IDEyIDE5cy0yLjY4LS40Ni0zLjQ4LTEuMDZDOC4wNCAxNy41NSA3IDE2Ljc2IDcgMTRINWMwIDIuNy45MyA0LjQxIDIuMyA1LjUuNS40IDEuMS43IDEuNy45VjI0aDZ2LTMuNmMuNi0uMiAxLjItLjUgMS43LS45IDEuMzctMS4wOSAyLjMtMi44IDIuMy01LjVoLTJjMCAyLjc2LTEuMDQgMy41NS0xLjUyIDMuOTR6TTIzIDQuMjV2My40OWMwIC44LS44OCAxLjI2LTEuNTYuODMtLjE0LS4wOS0uMjgtLjE4LS40NC0uMjZMMTkgMTNoLTJsLTEuNS02LjI4YTI3Ljg1MiAyNy44NTIgMCAwIDAtNyAwTDcgMTNINUwzIDguMzFjLS4xNi4wOC0uMy4xNy0uNDQuMjZDMS44OCA5IDEgOC41NSAxIDcuNzRWNC4yNUMxIDEuOSA1LjkyIDAgMTIgMHMxMSAxLjkgMTEgNC4yNXpNNi45IDYuOThjLS45My4xOS0xLjc4LjQzLTIuNTMuNzFsMS41MSAzLjU1TDYuOSA2Ljk4em0xMi43My43MWMtLjc1LS4yOC0xLjYtLjUyLTIuNTMtLjcxbDEuMDIgNC4yNSAxLjUxLTMuNTR6TTIxIDQuMzFDMjAuNjUgMy42MyAxNy41NyAyIDEyIDJTMy4zNSAzLjYzIDMgNC4zMXYxLjc3QzUuMzQgNS4wNyA4LjU2IDQuNSAxMiA0LjVzNi42Ni41NyA5IDEuNThWNC4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhcnR5TW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtMy4xN0wxNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoNC4wNWwuNTktLjY1TDkuODggNGg0LjI0bDEuMjQgMS4zNS41OS42NUgyMHYxMnpNOSAxMmMwLTEuNjYgMS4zNC0zIDMtM2gzLjk4Yy0uOTItMS4yMS0yLjM1LTItMy45OC0yYTUuMDAyIDUuMDAyIDAgMCAwLTQuOSA2aDIuMDhjLS4xMS0uMzEtLjE4LS42NS0uMTgtMXptNiAwYzAgMS42Ni0xLjM0IDMtMyAzSDguMDJjLjkyIDEuMjEgMi4zNSAyIDMuOTggMmE1LjAwMiA1LjAwMiAwIDAgMCA0LjktNmgtMi4wOGMuMTEuMzEuMTguNjUuMTggMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlb3BsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjY3IDEzLjEzQzE4LjA0IDE0LjA2IDE5IDE1LjMyIDE5IDE3djNoNHYtM2MwLTIuMTgtMy41Ny0zLjQ3LTYuMzMtMy44N3pNMTUgMTJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTRjLS40NyAwLS45MS4xLTEuMzMuMjRhNS45OCA1Ljk4IDAgMCAxIDAgNy41MmMuNDIuMTQuODYuMjQgMS4zMy4yNHpNOSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTkgMTNjLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6bTYgNUgzdi0uOTlDMy4yIDE2LjI5IDYuMyAxNSA5IDE1czUuOCAxLjI5IDYgMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVvcGxlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMy43NWMtMi4zNCAwLTcgMS4xNy03IDMuNVYxOWgxNHYtMS43NWMwLTIuMzMtNC42Ni0zLjUtNy0zLjV6TTQuMzQgMTdjLjg0LS41OCAyLjg3LTEuMjUgNC42Ni0xLjI1czMuODIuNjcgNC42NiAxLjI1SDQuMzR6TTkgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuOTMgNSA5IDUgNS41IDYuNTcgNS41IDguNSA3LjA3IDEyIDkgMTJ6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjgzIDEwIDkgMTBzLTEuNS0uNjctMS41LTEuNVM4LjE3IDcgOSA3em03LjA0IDYuODFjMS4xNi44NCAxLjk2IDEuOTYgMS45NiAzLjQ0VjE5aDR2LTEuNzVjMC0yLjAyLTMuNS0zLjE3LTUuOTYtMy40NHpNMTUgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTYuOTMgNSAxNSA1Yy0uNTQgMC0xLjA0LjEzLTEuNS4zNS42My44OSAxIDEuOTggMSAzLjE1cy0uMzcgMi4yNi0xIDMuMTVjLjQ2LjIyLjk2LjM1IDEuNS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlb3BsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMy43NWMtMi4zNCAwLTcgMS4xNy03IDMuNVYxOWgxNHYtMS43NWMwLTIuMzMtNC42Ni0zLjUtNy0zLjV6TTQuMzQgMTdjLjg0LS41OCAyLjg3LTEuMjUgNC42Ni0xLjI1czMuODIuNjcgNC42NiAxLjI1SDQuMzR6TTkgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuOTMgNSA5IDUgNS41IDYuNTcgNS41IDguNSA3LjA3IDEyIDkgMTJ6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjgzIDEwIDkgMTBzLTEuNS0uNjctMS41LTEuNVM4LjE3IDcgOSA3em03LjA0IDYuODFjMS4xNi44NCAxLjk2IDEuOTYgMS45NiAzLjQ0VjE5aDR2LTEuNzVjMC0yLjAyLTMuNS0zLjE3LTUuOTYtMy40NHpNMTUgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTYuOTMgNSAxNSA1Yy0uNTQgMC0xLjA0LjEzLTEuNS4zNS42My44OSAxIDEuOTggMSAzLjE1cy0uMzcgMi4yNi0xIDMuMTVjLjQ2LjIyLjk2LjM1IDEuNS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE4IDE4SDZ2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNy43MSAxNS43MyA5LjYzIDE1IDEyIDE1YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE4ek05Ljc4IDEyaDQuNDRjMS4yMSAwIDIuMTQtMS4wNiAxLjk4LTIuMjZsLS4zMi0yLjQ1QzE1LjU3IDUuMzkgMTMuOTIgNCAxMiA0UzguNDMgNS4zOSA4LjEyIDcuMjlMNy44IDkuNzRjLS4xNiAxLjIuNzcgMi4yNiAxLjk4IDIuMjZ6bS4zMi00LjQxQzEwLjI2IDYuNjcgMTEuMDYgNiAxMiA2czEuNzQuNjcgMS45IDEuNTlsLjMyIDIuNDFIOS43OGwuMzItMi40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE4IDE4SDZ2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNy43MSAxNS43MyA5LjYzIDE1IDEyIDE1YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE4ek0xMCAxMmg0YzEuNjYgMCAzLTEuMzQgMy0zIDAtLjczLS4yNy0xLjQtLjcxLTEuOTIuMTMtLjMzLjIxLS43LjIxLTEuMDhhMyAzIDAgMCAwLTEuODYtMi43N0MxNCAyLjQ4IDEzLjA2IDIgMTIgMnMtMiAuNDgtMi42NCAxLjIzQTMgMyAwIDAgMCA3LjUgNmMwIC4zOC4wOC43NS4yMSAxLjA4QzcuMjcgNy42IDcgOC4yNyA3IDljMCAxLjY2IDEuMzQgMyAzIDN6bS0uNzYtMy42M2MuODctMS4wNC4yNi0yIC4yNi0yLjM3IDAtLjQxLjI0LS43Ny42Mi0uOTIuMjktLjEyLjU1LS4zMS43NS0uNTQuMTctLjIxLjU1LS41NCAxLjEzLS41NHMuOTYuMzMgMS4xMy41M2MuMi4yNC40Ni40Mi43NS41NGExIDEgMCAwIDEgLjYyLjkzYzAgLjM3LS42MSAxLjMzLjI2IDIuMzcuNTguNjkuMDQgMS42My0uNzYgMS42M2gtNGMtLjggMC0xLjM0LS45NC0uNzYtMS42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbjQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE4IDE4SDZ2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNy43MSAxNS43MyA5LjYzIDE1IDEyIDE1YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE4ek0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNFY0LjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LS41MiAwLS45OC4yNy0xLjI1LjY3LS4yNy0uNC0uNzMtLjY3LTEuMjUtLjY3cy0uOTguMjctMS4yNS42N2MtLjI3LS40LS43My0uNjctMS4yNS0uNjdDOC42NyAzIDggMy42NyA4IDQuNVY4YzAgMi4yMSAxLjc5IDQgNCA0em0tMi02LjVoNFY4YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25BZGRBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTEgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzggMS4yOCA2IDJIM3ptMTctM3YtM2gzdi0yaC0zVjdoLTJ2M2gtM3YyaDN2M2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uQWRkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOVY2aC0ydjNoLTN2MmgzdjNoMnYtM2gzVjloLTN6TTkgMTJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem02LjM5IDguNTZDMTMuNzEgMTMuNyAxMS41MyAxMyA5IDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAxIDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE1IDE4SDN2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNC43MSAxNS43MyA2LjYzIDE1IDkgMTVjMi4zNyAwIDQuMjkuNzMgNS40OCAxLjM0LjMyLjE2LjUyLjUuNTIuODhWMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptMCA4Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00em0tNiA0Yy4yMi0uNzIgMy4zMS0yIDYtMiAyLjcgMCA1LjggMS4yOSA2IDJIOXptLTMtM3YtM2gzdi0ySDZWN0g0djNIMXYyaDN2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwIDE3LjE3LTMuMzctMy4zOGMuNjQuMjIgMS4yMy40OCAxLjc3Ljc2Ljk3LjUxIDEuNTggMS41MiAxLjYgMi42MnptMS4xOSA0LjAyLTEuNDEgMS40MS0yLjYxLTIuNkg0di0yLjc4YzAtMS4xMi42MS0yLjE1IDEuNjEtMi42NiAxLjI5LS42NiAyLjg3LTEuMjIgNC42Ny0xLjQ1TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOSAxOC4zOHpNMTUuMTcgMThsLTMtM0gxMmMtMi4zNyAwLTQuMjkuNzMtNS40OCAxLjM0LS4zMi4xNi0uNTIuNS0uNTIuODhWMThoOS4xN3pNMTIgNmMxLjEgMCAyIC45IDIgMiAwIC44Ni0uNTQgMS41OS0xLjMgMS44N2wxLjQ4IDEuNDhhMy45OTkgMy45OTkgMCAxIDAtNS41My01LjUzbDEuNDggMS40OEExLjk5IDEuOTkgMCAwIDEgMTIgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbk91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuOWEyLjEgMi4xIDAgMSAxIDAgNC4yIDIuMSAyLjEgMCAwIDEgMC00LjJtMCA5YzIuOTcgMCA2LjEgMS40NiA2LjEgMi4xdjEuMUg1LjlWMTdjMC0uNjQgMy4xMy0yLjEgNi4xLTIuMU0xMiA0QzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDljLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25SZW1vdmVBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOGMwLTIuMjEtMS43OS00LTQtNFM2IDUuNzkgNiA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTIgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzcgMS4yOCA2IDJINHpNMTcgMTBoNnYyaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOGMwLTIuMjEtMS43OS00LTQtNFM2IDUuNzkgNiA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTIgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzcgMS4yOCA2IDJINHpNMTcgMTBoNnYyaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMm0wIDEwYzIuNyAwIDUuOCAxLjI5IDYgMkg2Yy4yMy0uNzIgMy4zMS0yIDYtMm0wLTEyQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDEwYy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uYWxJbmp1cnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTYuMzkgOC41NkMxNi43MSAxMS43IDE0LjUzIDExIDEyIDExcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE1LjIyVjIyaDJ2LTYuNzhjMC0uMzguMi0uNzIuNTItLjg4QzcuNzEgMTMuNzMgOS42MyAxMyAxMiAxM2MuNzYgMCAxLjQ3LjA3IDIuMTMuMmwtMS41NSAzLjNIOS43NUM4LjIzIDE2LjUgNyAxNy43MyA3IDE5LjI1UzguMjMgMjIgOS43NSAyMkgxOGMxLjEgMCAyLS45IDItMnYtNC43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xMC45NCAyMEg5Ljc1Yy0uNDEgMC0uNzUtLjM0LS43NS0uNzVzLjM0LS43NS43NS0uNzVoMS44OWwtLjcgMS41ek0xOCAyMGgtNC44NWwyLjk0LTYuMjdjLjU0LjIgMS4wMS40MSAxLjQuNjEuMzEuMTYuNTEuNS41MS44OFYyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpYW5vT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wxLjYxIDEuNjEgMS40MS0xLjQyek04LjI1IDE5SDVWNy44M2wyIDJ2My42N2MwIC41NS40NSAxIDEgMWguMjVWMTl6bTEuNSAwdi00LjVIMTBjLjQ2IDAgLjgyLS4zMS45NC0uNzNsMy4zMSAzLjMxVjE5aC00LjV6TTExIDguMTcgNS44MyAzSDE5YzEuMSAwIDIgLjkgMiAydjEzLjE3bC0yLTJWNWgtMnY4LjVjMCAuMTktLjA3LjM2LS4xNi41MUwxMyAxMC4xN1Y1aC0ydjMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWFubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNSAxMS41aC4yNVYxOWgtNC41di00LjVIMTBjLjU1IDAgMS0uNDUgMS0xVjVoMnY4LjVjMCAuNTUuNDUgMSAxIDF6TTUgNWgydjguNWMwIC41NS40NSAxIDEgMWguMjVWMTlINVY1em0xNCAxNGgtMy4yNXYtNC41SDE2Yy41NSAwIDEtLjQ1IDEtMVY1aDJ2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS40NSAxNi41Mi0zLjAxLTMuMDFjLS4xMS0uMTEtLjI0LS4xMy0uMzEtLjEzcy0uMi4wMi0uMzEuMTNMOC44IDE2LjUzYy0uMzQuMzQtLjg3Ljg5LTIuNjQuODlsMy43MSAzLjdhMyAzIDAgMCAwIDQuMjQgMGwzLjcyLTMuNzFjLS45MSAwLTEuNjctLjE4LTIuMzgtLjg5ek04LjggNy40N2wzLjAyIDMuMDJjLjA4LjA4LjIuMTMuMzEuMTNzLjIzLS4wNS4zMS0uMTNsMi45OS0yLjk5Yy43MS0uNzQgMS41Mi0uOTEgMi40My0uOTFsLTMuNzItMy43MWEzIDMgMCAwIDAtNC4yNCAwbC0zLjcxIDMuN2MxLjc2IDAgMi4zLjU4IDIuNjEuODl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjExIDkuODUtMi4yNS0yLjI2SDE3LjZjLS41NCAwLTEuMDguMjItMS40NS42MWwtMyAzYy0uMjguMjgtLjY1LjQyLTEuMDIuNDJhMS41IDEuNSAwIDAgMS0xLjAyLS40Mkw4LjA5IDguMTdjLS4zOC0uMzgtLjktLjYtMS40NS0uNkg1LjE3bC0yLjI5IDIuM2EzIDMgMCAwIDAgMCA0LjI0bDIuMjkgMi4zaDEuNDhjLjU0IDAgMS4wNi0uMjIgMS40NS0uNmwzLjAyLTMuMDJjLjI4LS4yOC42NS0uNDIgMS4wMi0uNDJzLjc0LjE0IDEuMDIuNDJsMy4wMSAzLjAxYy4zOC4zOC45LjYgMS40NS42aDEuMjZsMi4yNS0yLjI2YTMuMDQyIDMuMDQyIDAgMCAwLS4wMi00LjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGx1c09uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOEg4djRINHYyaDR2NGgydi00aDR2LTJoLTRWOHptNC41LTEuOTJWNy45bDIuNS0uNVYxOGgyVjVsLTQuNSAxLjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUG9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0ek03IDEwaDJ2N0g3em00LTNoMnYxMGgtMnptNCA2aDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByZWNpc2lvbk1hbnVmYWN0dXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS45MyA4LjM1LTMuNiAxLjY4TDE0IDcuN1Y2LjNsMi4zMy0yLjMzIDMuNiAxLjY4Yy4zOC4xOC44Mi4wMSAxLS4zNi4xOC0uMzguMDEtLjgyLS4zNi0xbC0zLjkyLTEuODNhLjk5My45OTMgMCAwIDAtMS4xMy4yTDEzLjc4IDQuNEEuOTc1Ljk3NSAwIDAgMCAxMyA0Yy0uNTUgMC0xIC40NS0xIDF2MUg4LjgyQzguNCA0Ljg0IDcuMyA0IDYgNCA0LjM0IDQgMyA1LjM0IDMgN2MwIDEuMS42IDIuMDUgMS40OCAyLjU4TDcuMDggMThINmMtMS4xIDAtMiAuOS0yIDJ2MWgxM3YtMWMwLTEuMS0uOS0yLTItMmgtMS42Mkw4LjQxIDguNzdjLjE3LS4yNC4zMS0uNDkuNDEtLjc3SDEydjFjMCAuNTUuNDUgMSAxIDEgLjMyIDAgLjYtLjE2Ljc4LS40bDEuNzQgMS43NGMuMy4zLjc1LjM4IDEuMTMuMmwzLjkyLTEuODNjLjM4LS4xOC41NC0uNjIuMzYtMWEuNzUzLjc1MyAwIDAgMC0xLS4zNnpNNiA4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTUuMTEgMTBIOS4xN2wtMi40Ni04aC4xbDQuMyA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHN5Y2hvbG9neUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk0IDkuMDZDMTkuNSA1LjczIDE2LjU3IDMgMTMgMyA5LjQ3IDMgNi41NyA1LjYxIDYuMDggOWwtMS45MyAzLjQ4Yy0uNDEuNjYuMDcgMS41Mi44NSAxLjUyaDF2MmMwIDEuMS45IDIgMiAyaDF2M2g3di00LjY4YTcuMDE2IDcuMDE2IDAgMCAwIDMuOTQtNy4yNnptLTUuMDUgNS41Ny0uODkuNDJWMTloLTN2LTNIOHYtNEg2LjdsMS4zMy0yLjMzQzguMjEgNy4wNiAxMC4zNSA1IDEzIDVjMi43NiAwIDUgMi4yNCA1IDUgMCAyLjA5LTEuMjkgMy44OC0zLjExIDQuNjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTIuNTRjLS40MSAwLS43NC4zMS0uNzQuNzMgMCAuNDEuMzMuNzQuNzQuNzQuNDIgMCAuNzMtLjMzLjczLS43NGEuNzEuNzEgMCAwIDAtLjczLS43M3pNMTIuNSA3Yy0xLjAzIDAtMS43NC42Ny0yIDEuNDVsLjk2LjRjLjEzLS4zOS40My0uODYgMS4wNS0uODYuOTUgMCAxLjEzLjg5LjggMS4zNi0uMzIuNDUtLjg2Ljc1LTEuMTQgMS4yNi0uMjMuNC0uMTguODctLjE4IDEuMTZoMS4wNmMwLS41NS4wNC0uNjUuMTMtLjgyLjIzLS40Mi42NS0uNjIgMS4wOS0xLjI3LjQtLjU5LjI1LTEuMzgtLjAxLTEuOC0uMzEtLjQ5LS45LS44OC0xLjc2LS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBzeWNob2xvZ3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS44MiA3LjIyLTEgLjRjLS4yMS0uMTYtLjQzLS4yOS0uNjctLjM5TDE0IDYuMTdjLS4wMi0uMS0uMS0uMTctLjItLjE3aC0xLjZjLS4xIDAtLjE4LjA3LS4xOS4xN2wtLjE1IDEuMDZjLS4yNC4xLS40Ny4yMy0uNjcuMzlsLTEtLjRjLS4wOS0uMDMtLjIgMC0uMjQuMDlsLS44IDEuMzhhLjIuMiAwIDAgMCAuMDUuMjZsLjg1LjY2Yy0uMDMuMTItLjA1LjI2LS4wNS4zOXMuMDEuMjYuMDMuMzlsLS44NC42NmEuMTkuMTkgMCAwIDAtLjA1LjI1bC44IDEuMzljLjA1LjA5LjE1LjEyLjI1LjA5bC45OS0uNGMuMjEuMTYuNDMuMjkuNjguMzlsLjE0IDEuMDZjLjAyLjEuMS4xNy4yLjE3aDEuNmMuMSAwIC4xOC0uMDcuMi0uMTdsLjE1LTEuMDZjLjI0LS4xLjQ3LS4yMy42Ny0uMzlsLjk5LjRjLjA5LjA0LjIgMCAuMjQtLjA5bC44LTEuMzljLjA1LS4wOS4wMy0uMTktLjA1LS4yNWwtLjgzLS42NmEyLjU2MSAyLjU2MSAwIDAgMCAwLS43OGwuODUtLjY2YS4yLjIgMCAwIDAgLjA1LS4yNmwtLjgtMS4zOGMtLjA1LS4wOS0uMTYtLjEyLS4yNS0uMDl6TTEzIDExLjQzYTEuNDMgMS40MyAwIDEgMSAwLTIuODYgMS40MyAxLjQzIDAgMCAxIDAgMi44NnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTQgOS4wNmMtLjQzLTMuMjctMy4yMy01Ljg2LTYuNTMtNi4wNUMxMy4yNyAzIDEzLjE0IDMgMTMgMyA5LjQ3IDMgNi41NyA1LjYxIDYuMDggOWwtMS45MyAzLjQ4Yy0uNDEuNjYuMDcgMS41Mi44NSAxLjUyaDF2MmMwIDEuMS45IDIgMiAyaDF2M2g3di00LjY4YTcuMDE2IDcuMDE2IDAgMCAwIDMuOTQtNy4yNnptLTUuMDUgNS41Ny0uODkuNDJWMTloLTN2LTNIOHYtNEg2LjdsMS4zMy0yLjMzQzguMjEgNy4wNiAxMC4zNSA1IDEzIDVjMi43NiAwIDUgMi4yNCA1IDUgMCAyLjA5LTEuMjkgMy44OC0zLjExIDQuNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQdWJsaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA4LjE3IDYuNDkgMy42NkE5LjkxIDkuOTEgMCAwIDEgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMCAwIDIuMDQtLjYxIDMuOTMtMS42NiA1LjUxbC0xLjQ2LTEuNDZBNy44NDIgNy44NDIgMCAwIDAgMjAgMTJjMC0zLjM1LTIuMDctNi4yMi01LTcuNDFWNWMwIDEuMS0uOSAyLTIgMmgtMnYxLjE3em0xMC4xOSAxMy4wMi0xLjQxIDEuNDEtMi4yNy0yLjI3QTkuODM5IDkuODM5IDAgMCAxIDEyIDIyQzYuNDggMjIgMiAxNy41MiAyIDEyYzAtMi4wNC42MS0zLjkzIDEuNjYtNS41MUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6TTExIDE4Yy0xLjEgMC0yLS45LTItMnYtMWwtNC43OS00Ljc5QzQuMDggMTAuNzkgNCAxMS4zOCA0IDEyYzAgNC4wOCAzLjA1IDcuNDQgNyA3LjkzVjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHVibGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtLjYxLjA4LTEuMjEuMjEtMS43OEw4Ljk5IDE1djFjMCAxLjEuOSAyIDIgMnYxLjkzQzcuMDYgMTkuNDMgNCAxNi4wNyA0IDEyem0xMy44OSA1LjRjLS4yNi0uODEtMS0xLjQtMS45LTEuNGgtMXYtM2MwLS41NS0uNDUtMS0xLTFoLTZ2LTJoMmMuNTUgMCAxLS40NSAxLTFWN2gyYzEuMSAwIDItLjkgMi0ydi0uNDFDMTcuOTIgNS43NyAyMCA4LjY1IDIwIDEyYzAgMi4wOC0uODEgMy45OC0yLjExIDUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlYWxFc3RhdGVBZ2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDYuNVYxNGgtMlY3LjVMMTQgNCA5IDcuNVY5SDdWNi41bDctNSA3IDV6bS01LjUuNWgtMXYxaDFWN3ptLTIgMGgtMXYxaDFWN3ptMiAyaC0xdjFoMVY5em0tMiAwaC0xdjFoMVY5em01LjUgN2gtMmMwLTEuMi0uNzUtMi4yOC0xLjg3LTIuN0w4Ljk3IDExSDF2MTFoNnYtMS40NGw3IDEuOTQgOC0yLjV2LTFjMC0xLjY2LTEuMzQtMy0zLTN6TTMgMjB2LTdoMnY3SDN6bTEwLjk3LjQxTDcgMTguNDhWMTNoMS42MWw1LjgyIDIuMTdjLjM0LjEzLjU3LjQ2LjU3LjgzIDAgMC0xLjk5LS4wNS0yLjMtLjE1bC0yLjM4LS43OS0uNjMgMS45IDIuMzguNzljLjUxLjE3IDEuMDQuMjYgMS41OC4yNkgxOWMuMzkgMCAuNzQuMjMuOS41NmwtNS45MyAxLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVjb21tZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwaC00LjU5bC41OC0zLjQxdi0uMmMtLjAxLS4yNi0uMTItLjUxLS4zLS43TDEyIDVsLTQuNiA1Yy0uMjcuMjYtLjQyLjYyLS40IDF2NWMwIDEuMS45IDIgMiAyaDUuNWMuNTYuMDMgMS4wOC0uMjkgMS4zLS44bDIuMS00LjljLjA4LS4xNS4xMi0uMzMuMS0uNVYxMWMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWN5Y2xpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc3IDcuMTUgNy4yIDQuNzhsMS4wMy0xLjcxYy4zOS0uNjUgMS4zMy0uNjUgMS43MiAwbDEuNDggMi40Ni0xLjIzIDIuMDYtMSAxLjYyLTMuNDMtMi4wNnptMTUuOTUgNS44Mi0xLjYtMi42Ni0zLjQ2IDJMMTguODcgMTZIMjBhMiAyIDAgMCAwIDItMmMwLS4zNi0uMS0uNzEtLjI4LTEuMDN6TTE2IDIxaDEuNWEyIDIgMCAwIDAgMS43OS0xLjExTDIwLjc0IDE3SDE2di0ybC00IDQgNCA0di0yem0tNi00SDUuN2wtLjg0IDEuNDFjLS4zLjUtLjMyIDEuMTItLjA2IDEuNjUuMjguNTcuODcuOTQgMS41Mi45NEgxMHYtNHptLTMuODgtMi42NSAxLjczIDEuMDRMNi40OCA5LjkgMSAxMS4yN2wxLjcgMS4wMi0uNDEuNjljLS4zNS41OS0uMzggMS4zMS0uMDcgMS45MmwxLjYzIDMuMjYgMi4yNy0zLjgxem0xMC45LTkuMjEtMS4zLTIuMTdDMTUuMzUgMi4zNyAxNC43IDIgMTQgMmgtMy41M2wzLjEyIDUuMi0xLjcyIDEuMDMgNS40OSAxLjM3IDEuMzctNS40OS0xLjcxIDEuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWR1Y2VDYXBhY2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNC43OCAzLjU4QTYuOTUgNi45NSAwIDAgMCAxOCA3Yy0uNjcgMC0xLjMxLjEtMS45Mi4yOC41OC41NS45MiAxLjMyLjkyIDIuMTVWMTBoNXYtLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNNiA2YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMS45MiAxLjI4QzcuMzEgNy4xIDYuNjcgNyA2IDdjLS45OSAwLTEuOTMuMjEtMi43OC41OEEyLjAxIDIuMDEgMCAwIDAgMiA5LjQzVjEwaDV2LS41N2MwLS44My4zNC0xLjYuOTItMi4xNXpNMTAgNGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem02IDZIOHYtLjU3YzAtLjgxLjQ4LTEuNTMgMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMSA1LjU2IDBBMi4wMSAyLjAxIDAgMCAxIDE2IDkuNDNWMTB6bS0xIDZjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNiA2aC04di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMjEgMjEuNDNWMjJ6TTUgMTZjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNiA2SDN2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAxMSAyMS40M1YyMnptMS43NS05di0yaC0xLjV2Mkg5bDMgMyAzLTNoLTIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVNb2RlcmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNC4xNCA2IDIuMjV2NC43YzAgMS4xOS0uMjMgMi4zNi0uNjQgMy40NGwxLjUxIDEuNTFjLjcyLTEuNTMgMS4xMy0zLjIyIDEuMTMtNC45NVY1bC04LTMtNS4yMiAxLjk2IDEuNTUgMS41NUwxMiA0LjE0ek0yLjgxIDIuODEgMS4zOSA0LjIyIDQgNi44M3Y0LjI2YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSAxLjcyLS40MyAzLjI4LTEuMzYgNC41NS0yLjYybDMuMjMgMy4yMyAxLjQxLTEuNDFMMi44MSAyLjgxek0xMiAxOS45MmMtMy40NS0xLjEzLTYtNC44Mi02LTguODNWOC44M2w5LjE0IDkuMTRjLS45Ljg4LTEuOTcgMS41Ny0zLjE0IDEuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb2xsZXJTa2F0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJhMy45NiAzLjk2IDAgMCAwLTIuOTEtMy44MmwtMi42Mi0uNzRDMTMuNjIgNy4xOSAxMyA2LjM5IDEzIDUuNVYxSDR2MTVoMTZ2LTR6bS0yIDJINlYzaDV2MUg5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41SDExbC4xIDFIOS41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNWgxLjgxYy40NSAxLjEyIDEuNCAyLjAxIDIuNiAyLjM2bDIuNjIuNzNDMTcuNCAxMC4zMyAxOCAxMS4xIDE4IDEydjJ6TTUgMTdjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTQtNGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tNy00Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYWZldHlEaXZpZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNWgydjE0aC0yVjV6bS02IDdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0yLjc4IDEuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0xOSAxMmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTIuNzggMS41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxNSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2FuaXRpemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSA2LjVDMTUuNSA1LjY2IDE3IDQgMTcgNHMxLjUgMS42NiAxLjUgMi41YzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41em00IDguNWEyLjUgMi41IDAgMCAwIDIuNS0yLjVjMC0xLjY3LTIuNS00LjUtMi41LTQuNVMxNyAxMC44MyAxNyAxMi41YTIuNSAyLjUgMCAwIDAgMi41IDIuNXpNMTMgMTRoLTJ2LTJIOXYySDd2MmgydjJoMnYtMmgydi0yem0zLTJ2OGMwIDEuMS0uOSAyLTIgMkg2Yy0xLjEgMC0yLS45LTItMnYtOGMwLTIuOTcgMi4xNi01LjQzIDUtNS45MVY0SDdWMmg2YzEuMTMgMCAyLjE1LjM5IDIuOTkgMS4wMWwtMS40MyAxLjQzQzE0LjEgNC4xNyAxMy41NyA0IDEzIDRoLTJ2Mi4wOWMyLjg0LjQ4IDUgMi45NCA1IDUuOTF6bS0yIDBjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDR2OGg4di04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMVY4YzQuNTYtLjU4IDgtMy4xIDgtNkgyYzAgMi45IDMuNDQgNS40MiA4IDZ2M2MtMy42OC43My04IDMuNjEtOCAxMWg2di0ySDQuMTNjLjkzLTYuODMgNi42NS03LjIgNy44Ny03LjJzNi45NC4zNyA3Ljg3IDcuMkgxNnYyaDZjMC03LjM5LTQuMzItMTAuMjctOC0xMXptNC44Ny03QzE3LjUgNS4xOSAxNSA2LjEyIDEyIDYuMTJTNi41IDUuMTkgNS4xMyA0aDEzLjc0ek0xMiAyMmMtMS4xIDAtMi0uOS0yLTIgMC0uNTUuMjItMS4wNS41OS0xLjQxQzExLjM5IDE3Ljc5IDE2IDE2IDE2IDE2cy0xLjc5IDQuNjEtMi41OSA1LjQxYy0uMzYuMzctLjg2LjU5LTEuNDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY2hvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMSA5bDQgMi4xOHY2TDEyIDIxbDctMy44MnYtNmwyLTEuMDlWMTdoMlY5TDEyIDN6bTYuODIgNkwxMiAxMi43MiA1LjE4IDkgMTIgNS4yOCAxOC44MiA5ek0xNyAxNS45OWwtNSAyLjczLTUtMi43M3YtMy43MkwxMiAxNWw1LTIuNzN2My43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjaWVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMS4zMyAxOCAxOEg2bDUtNi42N1Y2aDJtMi45Ni0ySDguMDRjLS40MiAwLS42NS40OC0uMzkuODFMOSA2LjV2NC4xN0wzLjIgMTguNGMtLjQ5LjY2LS4wMiAxLjYuOCAxLjZoMTZjLjgyIDAgMS4yOS0uOTQuOC0xLjZMMTUgMTAuNjdWNi41bDEuMzUtMS42OWMuMjYtLjMzLjAzLS44MS0uMzktLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NvcmVib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDloLTIuNWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFIMThjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMXptLS41IDQuNUgxNnYtM2gxLjV2M3ptLTggMS41SDV2LTIuNWMwLS41NS40NS0xIDEtMWgydi0xSDVWOWgzLjVjLjU1IDAgMSAuNDUgMSAxdjEuNWMwIC41NS0uNDUgMS0xIDFoLTJ2MWgzVjE1em0zLjI1LTRoLTEuNVY5LjVoMS41VjExem0wIDMuNWgtMS41VjEzaDEuNXYxLjV6TTIyIDZ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDNWMmgydjJoNlYyaDJ2MmgzYzEuMSAwIDIgLjkgMiAyem0tMiAxMlY2aC03LjI1djEuNWgtMS41VjZINHYxMmg3LjI1di0xLjVoMS41VjE4SDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2N1YmFEaXZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDEzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTcuODktMi44OSA0LjUzLTEuMjEtLjc4LTIuOS00LjUzIDEuMjFjLS44LjIxLTEuMjggMS4wNC0xLjA2IDEuODQuMjIuOCAxLjA0IDEuMjggMS44NCAxLjA2ek0yMC41IDUuOSAyMyAzbC0xLTEtMyAzLTIgNC05LjQ4IDIuODdjLS44Mi4yLTEuMzkuODktMS41IDEuNjhMNS4yNCAxOCAyLjQgMjEuOCA0IDIzbDMtNCAxLjE0LTMuMTRMMTQgMTRsNS0zLjUgMS41LTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbGZJbXByb3ZlbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE2di0yYy0yLjI0IDAtNC4xNi0uOTYtNS42LTIuNjhsLTEuMzQtMS42QTEuOTggMS45OCAwIDAgMCAxMi41MyA5aC0xLjA1Yy0uNTkgMC0xLjE1LjI2LTEuNTMuNzJsLTEuMzQgMS42QzcuMTYgMTMuMDQgNS4yNCAxNCAzIDE0djJjMi43NyAwIDUuMTktMS4xNyA3LTMuMjVWMTVsLTMuODggMS41NWMtLjY3LjI3LTEuMTIuOTMtMS4xMiAxLjY2QzUgMTkuMiA1LjggMjAgNi43OSAyMEg5di0uNWEyLjUgMi41IDAgMCAxIDIuNS0yLjVoM2MuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTNjLS44MyAwLTEuNS42Ny0xLjUgMS41di41aDcuMjFjLjk5IDAgMS43OS0uOCAxLjc5LTEuNzkgMC0uNzMtLjQ1LTEuMzktMS4xMi0xLjY2TDE0IDE1di0yLjI1YzEuODEgMi4wOCA0LjIzIDMuMjUgNyAzLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VudGltZW50RGlzc2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0Yy0yLjMzIDAtNC4zMiAxLjQ1LTUuMTIgMy41aDEuNjdjLjY5LTEuMTkgMS45Ny0yIDMuNDUtMnMyLjc1LjgxIDMuNDUgMmgxLjY3Yy0uOC0yLjA1LTIuNzktMy41LTUuMTItMy41em0tLjAxLTEyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnROZXV0cmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE0aDZ2MS41SDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VudGltZW50U2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE2Yy0xLjQ4IDAtMi43NS0uODEtMy40NS0ySDYuODhhNS40OTUgNS40OTUgMCAwIDAgMTAuMjQgMGgtMS42N2MtLjcgMS4xOS0xLjk3IDItMy40NSAyem0tLjAxLTE0QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnRWZXJ5RGlzc2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMy41Yy0yLjMzIDAtNC4zMSAxLjQ2LTUuMTEgMy41aDEwLjIyYy0uOC0yLjA0LTIuNzgtMy41LTUuMTEtMy41ek03LjgyIDEybDEuMDYtMS4wNkw5Ljk0IDEyIDExIDEwLjk0IDkuOTQgOS44OCAxMSA4LjgyIDkuOTQgNy43NiA4Ljg4IDguODIgNy44MiA3Ljc2IDYuNzYgOC44MmwxLjA2IDEuMDYtMS4wNiAxLjA2em00LjE3LTEwQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDkuOTkgMTBTMjIgMTcuNTMgMjIgMTIgMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTQuMTgtMTIuMjQtMS4wNiAxLjA2LTEuMDYtMS4wNkwxMyA4LjgybDEuMDYgMS4wNkwxMyAxMC45NCAxNC4wNiAxMmwxLjA2LTEuMDZMMTYuMTggMTJsMS4wNi0xLjA2LTEuMDYtMS4wNiAxLjA2LTEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnRWZXJ5U2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDkuOTkgMTBTMjIgMTcuNTMgMjIgMTIgMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTEtMTAuMDZMMTQuMDYgMTFsMS4wNi0xLjA2TDE2LjE4IDExbDEuMDYtMS4wNi0yLjEyLTIuMTJMMTMgOS45NHptLTQuMTIgMEw5Ljk0IDExIDExIDkuOTQgOC44OCA3LjgyIDYuNzYgOS45NCA3LjgyIDExbDEuMDYtMS4wNnpNMTIgMTcuNWMyLjMzIDAgNC4zMS0xLjQ2IDUuMTEtMy41SDYuODljLjggMi4wNCAyLjc4IDMuNSA1LjExIDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldmVyZUNvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxMC40MSA0LTRMMTQuNTkgNSAxMiA3LjU5VjRoLTJ2My41OUw3LjQxIDUgNiA2LjQxbDQgNFYxMkg4LjQxbC00LTRMMyA5LjQxIDUuNTkgMTJIMnYyaDMuNTlMMyAxNi41OSA0LjQxIDE4bDQtNEgxMHYxLjU5bC00IDRMNy40MSAyMSAxMCAxOC40MVYyMmgydi0zLjU5TDE0LjU5IDIxIDE2IDE5LjU5bC00LTRWMTRoMS41OWw0IDRMMTkgMTYuNTkgMTYuNDEgMTRIMjB2LTJoLTh6TTE5IDJoMnY1aC0yek0xOSA4aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNi4wOGMtLjc2IDAtMS40NC4zLTEuOTYuNzdMOC45MSAxMi43Yy4wNS0uMjMuMDktLjQ2LjA5LS43cy0uMDQtLjQ3LS4wOS0uN2w3LjA1LTQuMTFjLjU0LjUgMS4yNS44MSAyLjA0LjgxIDEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDNjMCAuMjQuMDQuNDcuMDkuN0w4LjA0IDkuODFDNy41IDkuMzEgNi43OSA5IDYgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2MuNzkgMCAxLjUtLjMxIDIuMDQtLjgxbDcuMTIgNC4xNmMtLjA1LjIxLS4wOC40My0uMDguNjUgMCAxLjYxIDEuMzEgMi45MiAyLjkyIDIuOTJzMi45Mi0xLjMxIDIuOTItMi45MmMwLTEuNjEtMS4zMS0yLjkyLTIuOTItMi45MnpNMTggNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek02IDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTEyIDcuMDJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjMyIDEwLjU2IDguMzggOS41IDcuMzIgOC40NGwxLjA2LTEuMDZMMTAuNSA5LjVsLTIuMTIgMi4xMi0xLjA2LTEuMDZ6TTQuNSA5Yy4wMyAwIC4wNS4wMS4wOC4wMUE4LjAwMiA4LjAwMiAwIDAgMSAxMiA0YzIuMTkgMCA0LjE2Ljg4IDUuNjEgMi4zLjE1LS42LjQ1LTEuMjkuODEtMS45NkE5Ljk2NSA5Ljk2NSAwIDAgMCAxMS45OSAyYy00Ljg4IDAtOC45NCAzLjUxLTkuODEgOC4xNEMyLjc0IDkuNDQgMy41OSA5IDQuNSA5ek0yMSAxMC41Yy0uNDIgMC0uODItLjA5LTEuMTktLjIyLjEyLjU1LjE5IDEuMTMuMTkgMS43MiAwIDQuNDItMy41OCA4LTggOC0zLjM2IDAtNi4yMy0yLjA3LTcuNDItNS4wMS0uMDMgMC0uMDUuMDEtLjA4LjAxLS41MiAwLTEuMDQtLjE0LTEuNS0uNC0uMzItLjE4LS41OS0uNDItLjgyLS43Ljg5IDQuNjEgNC45MyA4LjEgOS44IDguMUMxNy41MiAyMiAyMiAxNy41MiAyMiAxMmMwLS41NS0uMDYtMS4wOS0uMTQtMS42MmEzLjUgMy41IDAgMCAxLS44Ni4xMnpNMjEgM3MtMiAyLjktMiA0IC45IDIgMiAyIDItLjkgMi0yLTItNC0yLTR6bS01LjM4IDQuMzhMMTMuNSA5LjVsMi4xMiAyLjEyIDEuMDYtMS4wNi0xLjA2LTEuMDYgMS4wNi0xLjA2LTEuMDYtMS4wNnpNOC41NiAxN2MuNjktMS4xOSAxLjk3LTIgMy40NC0yczIuNzUuODEgMy40NCAyaDEuNjhjLS44LTIuMDUtMi43OS0zLjUtNS4xMi0zLjUtLjg3IDAtMS43LjItMi40My41N0w1Ljk5IDEyYzAtLjUyLS4yNi0xLjAyLS43NC0xLjI5LS43Mi0uNDEtMS42My0uMTctMi4wNS41NS0uNDEuNzItLjE3IDEuNjMuNTUgMi4wNS40OC4yOCAxLjA1LjI1IDEuNDkgMGwyLjk3IDEuNzJjLS41Ny41My0xLjAzIDEuMjEtMS4zMyAxLjk3aDEuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduTGFuZ3VhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi40OSAxMy0uOTMtMS44NmMtLjM3LS43NC0uMDctMS42NC42Ny0yLjAxbC4yNi0uMTMgNS43MyA1LjQ2Yy41LjQ3Ljc4IDEuMTMuNzggMS44MXY1LjIzYTIuNSAyLjUgMCAwIDEtMi41IDIuNWgtMTFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFIMTB2LTFINGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg2di0xSDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoN3YtMUg0LjVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoNy45OXptMS41MS4yVjE1aC0ydjdoNGMuNTUgMCAxLS40NSAxLTF2LTQuNTNjMC0uMjctLjExLS41NC0uMzEtLjczTDE0IDEzLjJ6bS0yLjIyLTYuMDhjLS44NC40LTEuMTcuNjItMS42MyAxLjE5bC0yLjctMi44NUEuOTk2Ljk5NiAwIDEgMSA4LjkgNC4wOWwyLjg4IDMuMDN6TTkuNjQgOS4yMWEzLjQ2IDMuNDYgMCAwIDAtLjIgMS43OWgtLjg2TDYuMzEgOC42MWEuOTg3Ljk4NyAwIDAgMSAuMDQtMS40MS45OTYuOTk2IDAgMCAxIDEuNDEuMDRsMS44OCAxLjk3em0xMC42OSA0LjcuODgtLjgzYy41LS40Ny43OS0xLjEzLjc5LTEuODJWMy4zNWwtLjI3LS4xYy0uNzgtLjI4LTEuNjQuMTItMS45Mi45bC0uNzEgMS45Ni01LjUtNS44YS45OTYuOTk2IDAgMSAwLTEuNDUgMS4zN2wzLjc5IDMuOTktLjczLjY5LTQuODItNS4wOGEuOTk2Ljk5NiAwIDEgMC0xLjQ1IDEuMzdsMy43OCAzLjk4TDE1LjM4IDlsMS45My0xLjg3IDEuMzggMS40NUwyMCA3LjM0djMuN2MwIC4yOC0uMTEuNTQtLjMxLjczbC0uNy42Ni42MS41OGMuMjkuMjcuNTMuNTcuNzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpbmdsZUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyYzAtMS4xLS45LTItMi0yVjdjMC0xLjEtLjktMi0yLTJIOGMtMS4xIDAtMiAuOS0yIDJ2M2MtMS4xIDAtMiAuOS0yIDJ2NWgxLjMzTDYgMTloMWwuNjctMmg4LjY3bC42NiAyaDFsLjY3LTJIMjB2LTV6bS00LTJoLTNWN2gzdjN6TTggN2gzdjNIOFY3em0tMiA1aDEydjNINnYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNrYXRlYm9hcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6TTcuMjUgMjIuNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzUuNzUtLjM0Ljc1LS43NS0uMzQtLjc1LS43NS0uNzV6bTguNSAwYy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NS43NS0uMzQuNzUtLjc1LS4zNC0uNzUtLjc1LS43NXptMy40OS0zLjVhLjcyLjcyIDAgMCAwLS41OS4zYy0uNTUuNzMtMS40MiAxLjItMi40IDEuMkgxNnYtNmwtNC4zMi0yLjY3IDEuOC0yLjg5QTYuNTA3IDYuNTA3IDAgMCAwIDE5IDEydi0yYy0xLjg1IDAtMy40NC0xLjEyLTQuMTMtMi43MmwtLjUyLTEuMjFDMTQuMTYgNS42NCAxMy42MSA1IDEyLjcgNUg3TDQuNSA5bDEuNyAxLjA2TDguMSA3aDIuMzVsLTIuNCAzLjg0Yy0uMzEuNS0uMzkgMS4xMS0uMjEgMS42N2wxLjM0IDQuMTUtMy4xMiAzLjc2Yy0uNy0uMTYtMS4zLS41Ny0xLjcxLTEuMTJhLjc0OS43NDkgMCAxIDAtMS4yLjljLjgyIDEuMSAyLjEzIDEuOCAzLjYgMS44aDkuNWMxLjQ3IDAgMi43OC0uNyAzLjYtMS44LjEtLjE0LjE1LS4zLjE1LS40NSAwLS4zOS0uMzItLjc1LS43Ni0uNzV6TTE0IDIwLjVIOC42bDIuOS0zLjUtMS0zLjMgMy41IDIuMnY0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbGVkZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDQuNWMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6bTguOCAxNS43NGE0LjAwMyA0LjAwMyAwIDAgMS01LjA0IDIuNTdMMSAxNy4zNmwuNDYtMS40MyAzLjkzIDEuMjguNDYtMS40My0zLjkyLTEuMjguNDYtMS40M0w0IDEzLjZWOS41bDUuNDctMi4zNWMuMzktLjE3Ljg0LS4yMSAxLjI4LS4wNy45NS4zMSAxLjQ2IDEuMzIgMS4xNiAyLjI3bC0xLjA1IDMuMjQgMi4xNC0uMzRjLjg5LS4xNSAxLjc2LjMyIDIuMTQgMS4xNGwyLjA4IDQuNTEgMS45My42My0uNDYgMS40My0zLjMyLTEuMDgtLjQ3IDEuNDIgMy4zMiAxLjA4YzEuMzEuNDMgMi43Mi0uMjkgMy4xNS0xLjYxLjQzLTEuMzEtLjI5LTIuNzItMS42MS0zLjE1bC40Ni0xLjQzYzIuMTEuNjkgMy4yNyAyLjk1IDIuNTggNS4wNXpNNiAxNC4yNWwxLjAxLjMzYy0uMjItLjQyLS4yOC0uOTItLjEyLTEuNEw3LjkyIDEwIDYgMTAuODJ2My40M3ptNy45NCA0LjE2LTYuNjYtMi4xNi0uNDYgMS40MyA2LjY2IDIuMTYuNDYtMS40M3ptLjY5LTEuMzYtMS4xOC0yLjU2LTMuOTcuODkgNS4xNSAxLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU25vd2JvYXJkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM2MwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem03LjQgMTcuMDlhLjc0OC43NDggMCAwIDAtLjY0LjE3Yy0uNjkuNi0xLjY0Ljg4LTIuNi42N0wxNyAyMC42OWwtMS02LjE5LTMuMzItMi42NyAxLjgtMi44OUE2LjUwNyA2LjUwNyAwIDAgMCAyMCAxMnYtMmMtMS44NSAwLTMuNDQtMS4xMi00LjEzLTIuNzJsLS41Mi0xLjIxQzE1LjE2IDUuNjQgMTQuNjEgNSAxMy43IDVIOEw1LjUgOWwxLjcgMS4wNkw5LjEgN2gyLjM1bC0yLjUxIDMuOTljLS4yOC40NS0uMzcgMS0uMjUgMS41Mkw5LjUgMTYgNiAxOC4zNWwtLjQ3LS4xYy0uOTYtLjItMS43MS0uODUtMi4xLTEuNjdhLjc0NC43NDQgMCAwIDAtLjUxLS40MmMtLjQzLS4wOS0uODIuMi0uOS41OC0uMDQuMTQtLjAyLjMxLjA1LjQ2LjU4IDEuMjQgMS43MSAyLjIgMy4xNSAyLjUxbDEyLjYzIDIuNjljMS40NC4zMSAyLjg2LS4xMSAzLjktMS4wMS4xMy0uMTEuMjEtLjI2LjI0LS40MS4wNy0uMzgtLjE2LS44LS41OS0uODl6TTguNzMgMTguOTNsMy4wMi0yLjAzLS40NC0zLjMyIDIuODQgMi4wMi43NSA0LjY0LTYuMTctMS4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNub3dzaG9laW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAzLjVjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNNi4zMiAxOS4wM2wtMS4xNC0xLjQ3TDQgMTguNWwyLjM4IDMuMDRjLjUxLjY1IDEuMTYgMS4xNSAxLjg4IDEuNDEuMjguMS41My4wNC43Mi0uMTEuMy0uMjMuNDItLjcuMTItMS4wN2EuODQuODQgMCAwIDAtLjMxLS4yMiAyLjk3IDIuOTcgMCAwIDEtMS4xNC0uODNsLS4wOC0uMUwxMSAxOC4ybC44OS0zLjIyIDIuMTEgMnY0LjUyaC0yVjIzaDMuODdjLjgyIDAgMS42MS0uMjEgMi4yNi0uNjEuMjYtLjE2LjM3LS4zOS4zNy0uNjQgMC0uMzgtLjMtLjc1LS43Ny0uNzUtLjEzIDAtLjI2LjA0LS4zNy4xLS40LjIzLS44Ny4zNy0xLjM2LjR2LTYuMDJsLTIuMTEtMiAuNi0zQzE1Ljc5IDExLjk4IDE3LjggMTMgMjAgMTN2LTJjLTEuOSAwLTMuNTEtMS4wMi00LjMxLTIuNDJsLTEtMS41OGMtLjQtLjYtMS0xLTEuNy0xLS43NSAwLTEuNDEuMzQtNS45OSAyLjI4VjEzaDJWOS41OGwxLjc5LS43TDkuMiAxN2wtMi44OCAyLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU29jaWFsRGlzdGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDVjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNC43OCAzLjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDIgMTAuNDNWMTFoOHYtLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNMTggN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTIuNzggMS41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxNCAxMC40M1YxMWg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1em0tMi43NyA0LjQzLTEuNDEgMS40MUwxOC4xNyAxNkg1LjgzbDEuNTgtMS41OUw2IDEzbC00IDQgMy45OSAzLjk5IDEuNDEtMS40MUw1LjgzIDE4aDEyLjM0bC0xLjU4IDEuNThMMTggMjAuOTkgMjIgMTdsLTMuOTktMy45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvdXRoQW1lcmljYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC0xLjk1LjctMy43NCAxLjg3LTUuMTNMOSAxMHYxYzAgMS4xLjkgMiAyIDJ2NS41OWMwIC4yNy4xMS41Mi4yOS43MWwuNzEuN2MtNC40MiAwLTgtMy41OC04LTh6bTkgNy45NFYxOGwzLjc1LTUuNjJjLjE2LS4yNS4yNS0uNTQuMjUtLjgzVjEwLjVjMC0uNTUtLjQ1LTEtMS0xaC0xLjVsLTEuNC0xLjc1Yy0uMzgtLjQ3LS45NS0uNzUtMS41Ni0uNzVIOFY1LjA3QTcuOTcxIDcuOTcxIDAgMCAxIDEyIDRjNC40MSAwIDggMy41OSA4IDggMCA0LjA3LTMuMDYgNy40NC03IDcuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNCYXNlYmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTUuNjEgMTYuNzhDNC42IDE1LjQ1IDQgMTMuOCA0IDEycy42LTMuNDUgMS42MS00Ljc4YTUuOTc1IDUuOTc1IDAgMCAxIDAgOS41NnpNMTIgMjBjLTEuODkgMC0zLjYzLS42Ni01LTEuNzYgMS44My0xLjQ3IDMtMy43MSAzLTYuMjRTOC44MyA3LjIzIDcgNS43NkM4LjM3IDQuNjYgMTAuMTEgNCAxMiA0czMuNjMuNjYgNSAxLjc2Yy0xLjgzIDEuNDctMyAzLjcxLTMgNi4yNHMxLjE3IDQuNzcgMyA2LjI0QTcuOTYzIDcuOTYzIDAgMCAxIDEyIDIwem02LjM5LTMuMjJhNS45NzUgNS45NzUgMCAwIDEgMC05LjU2QzE5LjQgOC41NSAyMCAxMC4yIDIwIDEycy0uNiAzLjQ1LTEuNjEgNC43OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0Jhc2tldGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek01LjIzIDcuNzVDNi4xIDguNjIgNi43IDkuNzQgNi45MSAxMUg0LjA3YTguMTIgOC4xMiAwIDAgMSAxLjE2LTMuMjV6TTQuMDcgMTNoMi44NGE1Ljk3MiA1Ljk3MiAwIDAgMS0xLjY4IDMuMjVBOC4xMiA4LjEyIDAgMCAxIDQuMDcgMTN6TTExIDE5LjkzYy0xLjczLS4yMi0zLjI5LTEtNC40OS0yLjE0QTcuOTUyIDcuOTUyIDAgMCAwIDguOTMgMTNIMTF2Ni45M3pNMTEgMTFIOC45M0E3Ljk5IDcuOTkgMCAwIDAgNi41IDYuMiA4LjAzNSA4LjAzNSAwIDAgMSAxMSA0LjA3VjExem04LjkzIDBoLTIuODRjLjIxLTEuMjYuODEtMi4zOCAxLjY4LTMuMjUuNi45NyAxLjAxIDIuMDcgMS4xNiAzLjI1ek0xMyA0LjA3YzEuNzMuMjIgMy4yOS45OSA0LjUgMi4xM2E3Ljk5IDcuOTkgMCAwIDAtMi40MyA0LjhIMTNWNC4wN3ptMCAxNS44NlYxM2gyLjA3YTguMDA2IDguMDA2IDAgMCAwIDIuNDIgNC43OUE3Ljk4OCA3Ljk4OCAwIDAgMSAxMyAxOS45M3ptNS43Ny0zLjY4QTYuMDA0IDYuMDA0IDAgMCAxIDE3LjA5IDEzaDIuODRhOC4xMiA4LjEyIDAgMCAxLTEuMTYgMy4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0NyaWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS4wNCAxMi43OS04LjUtOC41QzYuMzUgNC4xIDYuMDkgNCA1LjgzIDRzLS41MS4xLS43LjI5TDIuMjkgNy4xM2MtLjM5LjM5LS4zOSAxLjAzIDAgMS40Mmw4LjUgOC41Yy4yLjIuNDUuMjkuNzEuMjkuMjYgMCAuNTEtLjEuNzEtLjI5bDIuODMtMi44M2MuMzktLjQuMzktMS4wNCAwLTEuNDN6bS0zLjU0IDIuMTNMNC40MSA3LjgzbDEuNDItMS40MiA3LjA5IDcuMDktMS40MiAxLjQyek0xNC4zNDEgMTcuNzU2bDEuNDE0LTEuNDE0IDQuMjQzIDQuMjQzLTEuNDE0IDEuNDE0ek0xOC41IDJDMTYuNTcgMiAxNSAzLjU3IDE1IDUuNVMxNi41NyA5IDE4LjUgOSAyMiA3LjQzIDIyIDUuNSAyMC40MyAyIDE4LjUgMnptMCA1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTcuNjcgNCAxOC41IDRzMS41LjY3IDEuNSAxLjVTMTkuMzMgNyAxOC41IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNFc3BvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNTggMTYuMDktMS4wOS03LjY2QTMuOTk2IDMuOTk2IDAgMCAwIDE2LjUzIDVINy40N0M1LjQ4IDUgMy43OSA2LjQ2IDMuNTEgOC40M2wtMS4wOSA3LjY2QzIuMiAxNy42MyAzLjM5IDE5IDQuOTQgMTljLjY4IDAgMS4zMi0uMjcgMS44LS43NUw5IDE2aDZsMi4yNSAyLjI1Yy40OC40OCAxLjEzLjc1IDEuOC43NSAxLjU2IDAgMi43NS0xLjM3IDIuNTMtMi45MXptLTIuMS43MmEuNTQuNTQgMCAwIDEtLjQyLjE5Yy0uMTUgMC0uMjktLjA2LS4zOS0uMTZMMTUuODMgMTRIOC4xN2wtMi44NCAyLjg0Yy0uMS4xLS4yNC4xNi0uMzkuMTZhLjU0LjU0IDAgMCAxLS40Mi0uMTkuNTIuNTIgMCAwIDEtLjEzLS40NGwxLjA5LTcuNjZDNS42MyA3Ljc0IDYuNDggNyA3LjQ3IDdoOS4wNmMuOTkgMCAxLjg0Ljc0IDEuOTggMS43MmwxLjA5IDcuNjZjLjAzLjItLjA1LjM0LS4xMi40M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA4SDh2Mkg2djFoMnYyaDF2LTJoMnYtMUg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjlcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0Zvb3RiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMzEgMy42OWMtLjMyLS4zMy0xLjk0LS42OS00LjA1LS42OS0zLjAzIDAtNy4wOS43NS05LjggMy40Ni00LjU5IDQuNTktMy41NiAxMy4wNi0yLjc3IDEzLjg1LjMyLjMzIDEuOTQuNjkgNC4wNS42OSAzLjAzIDAgNy4wOS0uNzUgOS44LTMuNDYgNC41OS00LjU5IDMuNTYtMTMuMDYgMi43Ny0xMy44NXpNNy43NCAxOWMtMS4xNCAwLTIuMDItLjEyLTIuNTMtLjIzLS4xOC0uNzktLjMtMi4yMS0uMTctMy44M2w0LjAxIDQuMDFjLS41Mi4wNC0uOTcuMDUtMS4zMS4wNXptOC4zOS0yLjg3Yy0xLjMzIDEuMzMtMy4wNiAyLjA1LTQuNjYgMi40NGwtNi4wNC02LjA0Yy40Mi0xLjY4IDEuMTYtMy4zNyAyLjQ1LTQuNjUgMS4zMi0xLjMyIDMuMDUtMi4wNCA0LjY0LTIuNDNsNi4wNSA2LjA1Yy0uNDIgMS42Ny0xLjE3IDMuMzUtMi40NCA0LjYzem0yLjgzLTcuMDQtNC4wMy00LjAzYy41Mi0uMDUuOTgtLjA2IDEuMzMtLjA2IDEuMTQgMCAyLjAyLjEyIDIuNTMuMjMuMTguNzkuMyAyLjIyLjE3IDMuODZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguNSAxNC4xIDUuNi01LjYgMS40IDEuNC01LjYgNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzR29sZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE2YzMuODcgMCA3LTMuMTMgNy03cy0zLjEzLTctNy03LTcgMy4xMy03IDcgMy4xMyA3IDcgN3ptMC0xMmMyLjc2IDAgNSAyLjI0IDUgNXMtMi4yNCA1LTUgNS01LTIuMjQtNS01IDIuMjQtNSA1LTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTloMmMxLjEgMCAyIC45IDIgMnYxaDJ2LTFjMC0xLjEuOS0yIDItMmgydi0ySDd2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0d5bW5hc3RpY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNMSA5aDZsNy01IDEuMzEgMS41Mi00LjE3IDIuOThIMTRMMjEuOCA0IDIzIDUuNCAxNC41IDEyIDE0IDIyaC0ybC0uNS0xMEw4IDExSDFWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0hhbmRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMjcgNmMtLjU1Ljk1LS4yMiAyLjE4LjczIDIuNzMuOTUuNTUgMi4xOC4yMiAyLjczLS43My41NS0uOTUuMjItMi4xOC0uNzMtMi43My0uOTUtLjU1LTIuMTgtLjIyLTIuNzMuNzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljg0IDEwLjQxLTIuNi0xLjVjLTIuMzgtMS4zOC0zLjItNC40NC0xLjgyLTYuODJsLTEuNzMtMUM4LjEgMy44MyA4LjYgNy4yMSAxMC42NiA5LjRsLTUuMTUgOC45MiAxLjczIDEgMS41LTIuNiAxLjczIDEtMyA1LjIgMS43MyAxIDYuMjktMTAuODlhNS4wMDIgNS4wMDIgMCAwIDEgLjMxIDUuNDZsMS43MyAxYzEuNi0yLjc1IDEuMjgtNi41OC0xLjY5LTkuMDh6TTEyLjc1IDMuOGMuNzIuNDEgMS42My4xNyAyLjA1LS41NS40MS0uNzIuMTctMS42My0uNTUtMi4wNWExLjUwMSAxLjUwMSAwIDAgMC0xLjUgMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzSG9ja2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxN3YzaDJ2LTRIM2MtLjU1IDAtMSAuNDUtMSAxek05IDE2SDV2NGw0LjY5LS4wMWMuMzggMCAuNzItLjIxLjg5LS41NWwuODctMS45LTEuNTktMy40OEw5IDE2ek0yMS43MSAxNi4yOUEuOTk3Ljk5NyAwIDAgMCAyMSAxNmgtMXY0aDJ2LTNjMC0uMjgtLjExLS41My0uMjktLjcxek0xMy42IDEyLjg0IDE3LjY1IDRIMTQuM2wtMS43NiAzLjk3LS40OSAxLjEtLjA1LjE0TDkuNyA0SDYuMzVsNC4wNSA4Ljg0IDEuNTIgMy4zMi4wOC4xOCAxLjQyIDMuMWMuMTcuMzQuNTEuNTUuODkuNTVMMTkgMjB2LTRoLTRsLTEuNC0zLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzS2FiYWRkaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjIuMzhcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMTEuODh2LTQuN2wtNS4wNS0yLjE0Yy0uOTctLjQxLTIuMDktLjA2LTIuNjUuODRsLTEgMS42Yy0uNjcgMS4xOC0xLjkxIDIuMDYtMy40MSAyLjMybC4wNi4wNmMuNjkuNjkgMS41MiAxLjA3IDIuNDYgMS4xNy44LS40MiAxLjUyLS45OCAyLjA5LTEuNjRsLjYgMy0xLjE2IDEuMS0uOTQuODl2Ny41aDJ2LTZsMi4xLTIgMS44IDhIMjNsLTIuMTgtMTEtLjYyLTMuMSAxLjguN3YzLjRoMnpNMTAuMjkgOC4wOWMuMjIuMTUuNDcuMjQuNzIuMjkuMTMuMDIuMjUuMDQuMzguMDRzLjI2LS4wMS4zOC0uMDRjLjEzLS4wMi4yNS0uMDYuMzctLjExLjI0LS4xLjQ3LS4yNC42Ni0uNDQuNDktLjQ5LjY3LTEuMTcuNTUtMS44LS4wNy0uMzctLjI1LS43NC0uNTUtMS4wMy0uMTktLjE5LS40Mi0uMzQtLjY2LS40NC0uMTItLjA1LS4yNC0uMDktLjM3LS4xMXMtLjI1LS4wNC0uMzgtLjA0Yy0uMTIgMC0uMjMuMDEtLjM1LjAzLS4xNC4wMi0uMjguMDYtLjQxLjExLS4yMy4xMS0uNDYuMjYtLjY1LjQ1LS4zLjI5LS40OC42Ni0uNTUgMS4wMy0uMTIuNjMuMDYgMS4zMS41NSAxLjguMDkuMS4yLjE4LjMxLjI2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMS4yNCAxMC41Ni0yLTJjLS4xLS4xLS4yLS4xOC0uMzEtLjI2YTEuOTMgMS45MyAwIDAgMC0uNzItLjI4Yy0uMTMtLjAzLS4yNS0uMDQtLjM4LS4wNC0uNTEgMC0xLjAyLjItMS40MS41OWwtMy4zNCAzLjM0Yy0uNDEuNDEtLjYyLjk4LS41OCAxLjU0IDAgLjE4LjA0LjM3LjExLjU1bDEuMDcgMi45NS0zLjYzIDMuNjNMMS40NiAyMmw0LjI0LTQuMjR2LTIuMjJMNyAxNi43NXY1LjEzaDJ2LTZsLTIuMTItMi4xMiAyLjM2LTIuMzYuNzEuNzFjMS4yOSAxLjI2IDIuOTcgMi4wNCA1LjAzIDIuMDRsLS4xNC0yLjA3Yy0xLjUtLjAyLTIuNy0uNjItMy42LTEuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNNYXJ0aWFsQXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjggMi04LjIgNi43LTEuMjEtMS4wNCAzLjYtMi4wOEw5LjQxIDEgOCAyLjQxbDIuNzQgMi43NEw1IDguNDZsLTEuMTkgNC4yOUw2LjI3IDE3IDggMTZsLTIuMDMtMy41Mi4zNS0xLjNMOS41IDEzbC41IDloMmwuNS0xMEwyMSAzLjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNVwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c01tYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjBjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF2LTNIN3Yzek0xOCA3Yy0uNTUgMC0xIC40NS0xIDFWNWMwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnY1LjhjMCAuMTMuMDEuMjYuMDQuMzlsLjggNGMuMDkuNDcuNS44Ljk4LjhIMTdjLjU1IDAgMS4wOS0uNDQgMS4yLS45OGwuNzctMy44M2MuMDItLjEyLjAzLS4yNS4wMy0uMzhWOGMwLS41NS0uNDUtMS0xLTF6bS0xIDMuNmMwIC4xMy0uNjQgMy40LS42NCAzLjRINy42NFM3IDEwLjc0IDcgMTAuNlY1aDh2NWgydi42elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDdoNnYzSDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNNb3RvcnNwb3J0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk2IDExLjIyQzIxLjU3IDcuMDEgMTcuNzYgNCAxMy41NiA0Yy0uMTkgMC0uMzguMDEtLjU3LjAyQzIgNC43NCAyIDE3LjIgMiAxNy4ydi44YzAgMS4xLjkgMiAyIDJoMTBjNC42NyAwIDguNDEtNC4wMSA3Ljk2LTguNzh6bS0xNi43LjM0Yy41Ny0xLjI5IDEuMjgtMi4zNSAyLjE0LTMuMTlsMy42MiAxLjUzYy42LjI1Ljk4LjgzLjk4IDEuNDggMCAuODktLjcyIDEuNjEtMS42MSAxLjYxSDQuNzJjLjE1LS40Ni4zMi0uOTQuNTQtMS40M3ptMTMuMTggNC40OEE2LjAyMiA2LjAyMiAwIDAgMSAxNCAxOEg0di0uOGMwLS4wMi4wMS0uOTIuMjQtMi4yaDYuMTVjMS45OSAwIDMuNjEtMS42MiAzLjYxLTMuNjEgMC0xLjQ1LS44Ny0yLjc2LTIuMi0zLjMyTDkuMyA3LjAxYzEuMS0uNTcgMi4zNy0uOSAzLjgyLS45OS4xNS0uMDIuMy0uMDIuNDQtLjAyIDMuMzEgMCA2LjEzIDIuMzcgNi40MSA1LjQxLjE2IDEuNzItLjM4IDMuMzYtMS41MyA0LjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzUnVnYnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC40OSAzLjUxYy0uNTYtLjU2LTIuMTUtLjk3LTQuMTYtLjk3LTMuMDggMC03LjE1Ljk2LTkuOTggMy43OS00LjY5IDQuNy00LjI1IDEyLjc0LTIuODQgMTQuMTYuNTYuNTYgMi4xNS45NyA0LjE2Ljk3IDMuMDggMCA3LjE1LS45NiA5Ljk4LTMuNzkgNC42OS00LjcgNC4yNS0xMi43NCAyLjg0LTE0LjE2ek01LjcxIDE4LjI5Yy42My0xLjg5IDIuMTYtNC45OSA0Ljg3LTcuNyAyLjY4LTIuNjggNS43OC00LjIzIDcuNy00Ljg4LS42MyAxLjg5LTIuMTYgNC45OS00Ljg4IDcuNy0yLjY2IDIuNjgtNS43NiA0LjIzLTcuNjkgNC44OHpNNy43NiA3Ljc2YzIuNjQtMi42NCA2LjM0LTMuMTIgOC4wMy0zLjE5LTIuMDUuOTQtNC40NiAyLjQ2LTYuNjEgNC42MWEyMy4yMDYgMjMuMjA2IDAgMCAwLTQuNjEgNi42M2MuMDktMi40OC44Ny01Ljc0IDMuMTktOC4wNXptOC40OCA4LjQ4Yy0yLjY0IDIuNjQtNi4zNCAzLjEyLTguMDMgMy4xOSAyLjA1LS45NCA0LjQ2LTIuNDYgNi42MS00LjYxIDIuMTYtMi4xNiAzLjY3LTQuNTggNC42Mi02LjYzLS4xIDIuNDgtLjg4IDUuNzQtMy4yIDguMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNTb2NjZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDMuMyAxLjM1LS45NWE4LjAxIDguMDEgMCAwIDEgNC4zOCAzLjM0bC0uMzkgMS4zNC0xLjM1LjQ2TDEzIDYuN1Y1LjN6bS0zLjM1LS45NUwxMSA1LjN2MS40TDcuMDEgOS40OWwtMS4zNS0uNDYtLjM5LTEuMzRhOC4xMDMgOC4xMDMgMCAwIDEgNC4zOC0zLjM0ek03LjA4IDE3LjExbC0xLjE0LjFBNy45MzggNy45MzggMCAwIDEgNCAxMmMwLS4xMi4wMS0uMjMuMDItLjM1bDEtLjczIDEuMzguNDggMS40NiA0LjM0LS43OCAxLjM3em03LjQyIDIuNDhjLS43OS4yNi0xLjYzLjQxLTIuNS40MXMtMS43MS0uMTUtMi41LS40MWwtLjY5LTEuNDkuNjQtMS4xaDUuMTFsLjY0IDEuMTEtLjcgMS40OHpNMTQuMjcgMTVIOS43M2wtMS4zNS00LjAyTDEyIDguNDRsMy42MyAyLjU0TDE0LjI3IDE1em0zLjc5IDIuMjEtMS4xNC0uMS0uNzktMS4zNyAxLjQ2LTQuMzQgMS4zOS0uNDcgMSAuNzNjLjAxLjExLjAyLjIyLjAyLjM0IDAgMS45OS0uNzMgMy44MS0xLjk0IDUuMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNUZW5uaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41MiAyLjQ5QzE3LjE4LjE1IDEyLjkuNjIgOS45NyAzLjU1Yy0xLjYgMS42LTIuNTIgMy44Ny0yLjU0IDUuNDYtLjAyIDEuNTguMjYgMy44OS0xLjM1IDUuNWwtNC4yNCA0LjI0IDEuNDIgMS40MiA0LjI0LTQuMjRjMS42MS0xLjYxIDMuOTItMS4zMyA1LjUtMS4zNXMzLjg2LS45NCA1LjQ2LTIuNTRjMi45Mi0yLjkzIDMuNC03LjIxIDEuMDYtOS41NXptLTkuMiA5LjE5Yy0xLjUzLTEuNTMtMS4wNS00LjYxIDEuMDYtNi43MnM1LjE4LTIuNTkgNi43Mi0xLjA2YzEuNTMgMS41MyAxLjA1IDQuNjEtMS4wNiA2Ljcycy01LjE4IDIuNTktNi43MiAxLjA2ek0xOCAxN2MuNTMgMCAxLjA0LjIxIDEuNDEuNTkuNzguNzguNzggMi4wNSAwIDIuODMtLjM3LjM3LS44OC41OC0xLjQxLjU4cy0xLjA0LS4yMS0xLjQxLS41OWMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODMuMzctLjM3Ljg4LS41OCAxLjQxLS41OG0wLTJhMy45OTggMy45OTggMCAwIDAtMi44MyA2LjgzYy43OC43OCAxLjgxIDEuMTcgMi44MyAxLjE3YTMuOTk4IDMuOTk4IDAgMCAwIDIuODMtNi44M0EzLjk5OCAzLjk5OCAwIDAgMCAxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c1ZvbGxleWJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDIuMDdjMy4wNy4zOCA1LjU3IDIuNTIgNi41NCA1LjM2TDEzIDUuNjVWNC4wN3pNOCA1LjA4YzEuMTgtLjY5IDMuMzMtMS4wNiAzLTEuMDJ2Ny4zNWwtMyAxLjczVjUuMDh6TTQuNjMgMTUuMWMtLjQtLjk2LS42My0yLS42My0zLjEgMC0yLjAyLjc2LTMuODYgMi01LjI3djcuNThsLTEuMzcuNzl6bTEuMDEgMS43M0wxMiAxMy4xNWwzIDEuNzMtNi45OCA0LjAzYTcuNzk0IDcuNzk0IDAgMCAxLTIuMzgtMi4wOHpNMTIgMjBjLS41NCAwLTEuMDctLjA2LTEuNTgtLjE2bDYuNTgtMy44IDEuMzYuNzhDMTYuOSAxOC43NSAxNC42IDIwIDEyIDIwem0xLTguNThWNy45Nmw3IDQuMDVjMCAxLjEtLjIzIDIuMTQtLjYzIDMuMDlMMTMgMTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yMyA2Yy0xLjY2IDAtMy4yMi42Ni00LjM2IDEuNzNDNi41NCA2LjczIDUuNjEgNiA0LjUgNmEyLjUgMi41IDAgMCAwIDAgNWMuMjEgMCAuNDEtLjAzLjYxLS4wOC0uMDUuMjUtLjA5LjUxLS4xLjc4YTYuMDA2IDYuMDA2IDAgMCAwIDYuNjggNi4yN2MyLjU1LS4yOCA0LjY4LTIuMjYgNS4xOS00Ljc3LjE1LS43MS4xNS0xLjQuMDYtMi4wNi0uMDktLjYuMzgtMS4xMy45OS0xLjEzSDIyVjZIMTEuMjN6TTQuNSA5Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXptNi41IDZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1cmZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAyM2MtMS4wMyAwLTIuMDYtLjI1LTMtLjc1LTEuODkgMS00LjExIDEtNiAwLTEuODkgMS00LjExIDEtNiAwLS45NS41LTEuOTcuNzUtMyAuNzVIMnYtMmgxYzEuMDQgMCAyLjA4LS4zNSAzLTEgMS44MyAxLjMgNC4xNyAxLjMgNiAwIDEuODMgMS4zIDQuMTcgMS4zIDYgMCAuOTEuNjUgMS45NiAxIDMgMWgxdjJoLTF6TTE3IDEuNWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0yLjU3IDYuOThMMTIuMTggMTAgMTYgMTN2My44NGMuNTMuMzggMS4wMy43OCAxLjQ5IDEuMTctLjY4LjU4LTEuNTUuOTktMi40OS45OS0xLjIgMC0yLjI3LS42Ni0zLTEuNS0uNzMuODQtMS44IDEuNS0zIDEuNS0uMzMgMC0uNjUtLjA1LS45Ni0uMTRDNS4xOSAxNi45IDMgMTQuNzIgMyAxMy4yOCAzIDEyLjI1IDQuMDEgMTIgNC44NSAxMmMuOTggMCAyLjI4LjMxIDMuNy44M2wtLjUzLTMuMWMtLjExLS42Ny4xOC0xLjM4Ljc4LTEuNzlsMi4xNS0xLjQ1LTItLjM3LTIuODIgMS45M0w1IDYuNCA4LjUgNGw1LjU1IDEuMDNjLjQ1LjA5LjkzLjM3IDEuMjIuODlsLjg4IDEuNTVBNS4wMDcgNS4wMDcgMCAwIDAgMjAuNSAxMHYyYTcuMDEgNy4wMSAwIDAgMS02LjA3LTMuNTJ6TTEwLjMgMTEuMWwuNDQgMi42NWMuOTIuNDIgMi40OCAxLjI3IDMuMjYgMS43NVYxNGwtMy43LTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXRjaEFjY291bnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTAgNWMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem02LTVIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tOS4zMSAxNGE1Ljk3NyA1Ljk3NyAwIDAgMSA2LjYyIDBoLTYuNjJ6bTkuMzEtLjI3QzE4LjUzIDE0LjA2IDE2LjQgMTMgMTQgMTNzLTQuNTMgMS4wNi02IDIuNzNWNGgxMnYxMS43M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW1iRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MmMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OC02LjU5Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptMCAxMi00LjM0IDQuMzRMMTEuNzcgMTRIM3YtMmwzLTdoOXYxMHptNC0xMmg0djEyaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGh1bWJVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA4aC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OSA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0yYzAtMS4xLS45LTItMi0yem0wIDQtMyA3SDlWOWw0LjM0LTQuMzRMMTIuMjMgMTBIMjF2MnpNMSA5aDR2MTJIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW5kZXJzdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjkyIDcuMDJDMTcuNDUgNC4xOCAxNC45NyAyIDEyIDIgOS44MiAyIDcuODMgMy4xOCA2Ljc4IDUuMDYgNC4wOSA1LjQxIDIgNy43NCAyIDEwLjUgMiAxMy41MyA0LjQ3IDE2IDcuNSAxNmgxMGMyLjQ4IDAgNC41LTIuMDIgNC41LTQuNWE0LjUgNC41IDAgMCAwLTQuMDgtNC40OHpNMTcuNSAxNGgtMTBDNS41NyAxNCA0IDEyLjQzIDQgMTAuNWEzLjUxIDMuNTEgMCAwIDEgMy4wNC0zLjQ2bC45OS0uMTMuNDktLjg3QTMuOTk4IDMuOTk4IDAgMCAxIDEyIDRjMS45NCAwIDMuNjMgMS40NCAzLjk1IDMuMzVsLjI1IDEuNTIgMS41NC4xNGMxLjI3LjEyIDIuMjYgMS4yMSAyLjI2IDIuNDlhMi41IDIuNSAwIDAgMS0yLjUgMi41ek0xNC44IDE3bC0yLjkgMy4zMiAyIDFMMTEuNTUgMjRoMi42NWwyLjktMy4zMi0yLTFMMTcuNDUgMTd6TTguOCAxN2wtMi45IDMuMzIgMiAxTDUuNTUgMjRIOC4ybDIuOS0zLjMyLTItMUwxMS40NSAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvcm5hZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAzSDFsMTEgMTlMMjMgM3ptLTMuNDcgMi0xLjc0IDNINi4yMUw0LjQ3IDVoMTUuMDZ6bS05LjI3IDEwaDMuNDhMMTIgMTguMDEgMTAuMjYgMTV6bTQuNjQtMkg5LjFsLTEuNzQtM2g5LjI3bC0xLjczIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFuc2dlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjMS45MyAwIDMuNSAxLjU3IDMuNSAzLjVTMTMuOTMgMTUgMTIgMTVzLTMuNS0xLjU3LTMuNS0zLjVTMTAuMDcgOCAxMiA4em00LjUzLjM4IDMuOTctMy45NlY3aDJWMWgtNnYyaDIuNThsLTMuOTcgMy45N0MxNC4yMyA2LjM2IDEzLjE2IDYgMTIgNnMtMi4yMy4zNi0zLjExLjk3bC0uNjUtLjY1IDEuNDEtMS40MS0xLjQxLTEuNDJMNi44MiA0LjkgNC45MiAzSDcuNVYxaC02djZoMlY0LjQybDEuOTEgMS45LTEuNDIgMS40Mkw1LjQgOS4xNWwxLjQxLTEuNDEuNjUuNjVjLS42Ljg4LS45NiAxLjk1LS45NiAzLjExYTUuNSA1LjUgMCAwIDAgNC41IDUuNDFWMTlIOXYyaDJ2Mmgydi0yaDJ2LTJoLTJ2LTIuMDlhNS41IDUuNSAwIDAgMCAzLjUzLTguNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmF2ZWxFeHBsb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMyAxNi45Yy40LS43LjctMS41LjctMi40IDAtMi41LTItNC41LTQuNS00LjVTMTEgMTIgMTEgMTQuNXMyIDQuNSA0LjUgNC41Yy45IDAgMS43LS4zIDIuNC0uN2wzLjIgMy4yIDEuNC0xLjQtMy4yLTMuMnptLTMuOC4xYy0xLjQgMC0yLjUtMS4xLTIuNS0yLjVzMS4xLTIuNSAyLjUtMi41IDIuNSAxLjEgMi41IDIuNS0xLjEgMi41LTIuNSAyLjV6TTEyIDIwdjJDNi40OCAyMiAyIDE3LjUyIDIgMTJTNi40OCAyIDEyIDJjNC44NCAwIDguODcgMy40NCA5LjggOGgtMi4wN0E4IDggMCAwIDAgMTUgNC41OVY1YzAgMS4xLS45IDItMiAyaC0ydjJjMCAuNTUtLjQ1IDEtMSAxSDh2MmgydjNIOWwtNC43OS00Ljc5QzQuMDggMTAuNzkgNCAxMS4zOCA0IDEyYzAgNC40MSAzLjU5IDggOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHN1bmFtaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjY3IDE3LjYzYy0zLjggMi44LTYuMTIuNC02LjY3IDAtLjY2LjQ5LTIuOTIgMi43Ni02LjY3IDBDMy40MyAxOS4wMyAyLjY1IDE5IDIgMTl2MmMxLjE2IDAgMi4zLS4zMiAzLjMzLS45M2E2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDAgNi41MzUgNi41MzUgMCAwIDAgNi42NyAwYzEuMDMuNjEgMi4xNy45MyAzLjMzLjkzdi0yYy0uNjYgMC0xLjUtLjAyLTMuMzMtMS4zN3pNMTkuMzMgMTJIMjJ2LTJoLTIuNjdDMTcuNSAxMCAxNiA4LjUgMTYgNi42N2MwLTEuMDIuMzgtMS43NCAxLjA5LTMuMzQtMS4zNy0uMjEtMi0uMzMtMy4wOS0uMzNDNy4zNiAzIDIuMTUgOC4wMyAyLjAxIDE0LjVsLS4wMSAyYzEuMTYgMCAyLjMtLjMyIDMuMzMtLjkzYTYuNTM1IDYuNTM1IDAgMCAwIDYuNjcgMCA2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDBjMS4wMy42MSAyLjE3LjkzIDMuMzMuOTN2LTJjLS42NiAwLTEuNS0uMDItMy4zMy0xLjM3LTMuOCAyLjgtNi4xMi40LTYuNjcgMC0uOS42Ny0uNTQuNDEtLjkxLjYzLS43LS45NC0xLjA5LTIuMDYtMS4wOS0zLjI2IDAtMi41OCAxLjc3LTQuNzQgNC4yMS01LjMzLS4xMy41MS0uMjEgMS4wMi0uMjEgMS41QzE0IDkuNjEgMTYuMzkgMTIgMTkuMzMgMTJ6bS0xNCAxLjEzYy0uNjIuNDYtLjgyLjYzLTEuMy44Ny4yNy0zLjUzIDIuMzgtNi40OCA1LjQzLTcuOTZBNy40OSA3LjQ5IDAgMCAwIDggMTAuNWMwIDEuNDIuNCAyLjc3IDEuMTMgMy45NS0uNzIuMDctMS43OS4xNS0zLjgtMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZhY2NpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNS41SDhWNGguNWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMUg2djEuNUgzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxVjE1YzAgMS4xLjkgMiAyIDJoMXY0bDIgMS41VjE3aDFjMS4xIDAgMi0uOSAyLTJWNy41Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xek05IDlINy4yNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzVIOVYxMkg3LjI1Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NUg5VjE1SDVWNy41aDRWOXptMTAuNSAxLjVWMTBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF2LjVjMCAuNS0xLjUgMS4xNi0xLjUgM1YyMGMwIDEuMS45IDIgMiAyaDRjMS4xIDAgMi0uOSAyLTJ2LTYuNWMwLTEuODQtMS41LTIuNS0xLjUtM3ptLTMgMFYxMGgxdi41YzAgMS42IDEuNSAyIDEuNSAzdi41aC00di0uNWMwLTEgMS41LTEuNCAxLjUtM3ptMi41IDVWMTdoLTR2LTEuNWg0ek0xNSAyMHYtMS41aDRWMjBoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2xjYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtN2wtMiA1SDZsLTQgOWgyMEwxOCA4ek03LjMgMTVoMy4wNWwuNS0xLjI2IDEuNS0zLjc0aDQuMTRsMi44NiAxMEg1LjA4bDIuMjItNXpNMTMgMWgydjRoLTJ6TTE2LjEyMSA1LjQ2OCAxOC45NSAyLjY0bDEuNDE0IDEuNDE0LTIuODI5IDIuODI4ek03LjY0IDQuMDVsMS40MTQtMS40MTQgMi44MjggMi44MjktMS40MTQgMS40MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0SDZDMy43OSA0IDIgNS43OSAyIDh2OGMwIDIuMjEgMS43OSA0IDQgNGgxMmMyLjIxIDAgNC0xLjc5IDQtNFY4YzAtMi4yMS0xLjc5LTQtNC00em0tMS44NiA5Ljc3Yy0uMjQuMi0uNTcuMjgtLjg4LjJMNC4xNSAxMS4yNUM0LjQ1IDEwLjUyIDUuMTYgMTAgNiAxMGgxMmMuNjcgMCAxLjI2LjM0IDEuNjMuODRsLTMuNDkgMi45M3pNNiA2aDEyYzEuMSAwIDIgLjkgMiAydi41NWMtLjU5LS4zNC0xLjI3LS41NS0yLS41NUg2Yy0uNzMgMC0xLjQxLjIxLTIgLjU1VjhjMC0xLjEuOS0yIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdhdGVyRHJvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTUuMzMgNC41NS04IDguNDgtOCAxMS44IDAgNC45OCAzLjggOC4yIDggOC4yczgtMy4yMiA4LTguMmMwLTMuMzItMi42Ny03LjI1LTgtMTEuOHptMCAxOGMtMy4zNSAwLTYtMi41Ny02LTYuMiAwLTIuMzQgMS45NS01LjQ0IDYtOS4xNCA0LjA1IDMuNyA2IDYuNzkgNiA5LjE0IDAgMy42My0yLjY1IDYuMi02IDYuMnptLTQuMTctNmMuMzcgMCAuNjcuMjYuNzQuNjIuNDEgMi4yMiAyLjI4IDIuOTggMy42NCAyLjg3LjQzLS4wMi43OS4zMi43OS43NSAwIC40LS4zMi43My0uNzIuNzUtMi4xMy4xMy00LjYyLTEuMDktNS4xOS00LjEyYS43NS43NSAwIDAgMSAuNzQtLjg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F2aW5nSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDMgNC45NSAzLjQ5IDguNDljLTMuMzIgMy4zMi0zLjMyIDguNyAwIDEyLjAyczguNyAzLjMyIDEyLjAyIDBsNi4wMS02LjAxYTIuNTE3IDIuNTE3IDAgMCAwLS4zOS0zLjg2bC4zOS0uMzljLjk3LS45Ny45Ny0yLjU2IDAtMy41NC0uMTYtLjE2LS4zNS0uMy0uNTQtLjQxYTIuNDk3IDIuNDk3IDAgMCAwLTMuNzItMy4wNSAyLjUxNyAyLjUxNyAwIDAgMC0zLjg4LS40MmwtMi41MSAyLjUxYTIuNDkzIDIuNDkzIDAgMCAwLTMuODQtLjM5em0xLjQxIDEuNDJjLjItLjIuNTEtLjIuNzEgMCAuMi4yLjIuNTEgMCAuNzFsLTMuMTggMy4xOGEzIDMgMCAwIDEgMCA0LjI0bDEuNDEgMS40MWE1LjAwNCA1LjAwNCAwIDAgMCAxLjEyLTUuMzZsNi4zLTYuM2MuMi0uMi41MS0uMi43MSAwcy4yLjUxIDAgLjcxbC00LjYgNC42IDEuNDEgMS40MSA2LjAxLTYuMDFjLjItLjIuNTEtLjIuNzEgMCAuMi4yLjIuNTEgMCAuNzFsLTYuMDEgNi4wMSAxLjQxIDEuNDEgNC45NS00Ljk1Yy4yLS4yLjUxLS4yLjcxIDAgLjIuMi4yLjUxIDAgLjcxbC01LjY2IDUuNjYgMS40MSAxLjQxIDMuNTQtMy41NGMuMi0uMi41MS0uMi43MSAwIC4yLjIuMi41MSAwIC43MWwtNiA2LjAxYy0yLjU0IDIuNTQtNi42NSAyLjU0LTkuMTkgMHMtMi41NC02LjY1IDAtOS4xOWwzLjUzLTMuNTR6TTIzIDE3YzAgMy4zMS0yLjY5IDYtNiA2di0xLjVjMi40OCAwIDQuNS0yLjAyIDQuNS00LjVIMjN6TTEgN2MwLTMuMzEgMi42OS02IDYtNnYxLjVDNC41MiAyLjUgMi41IDQuNTIgMi41IDdIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdoYXRzYXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDUgNC45MUE5LjgxNiA5LjgxNiAwIDAgMCAxMi4wNCAyYy01LjQ2IDAtOS45MSA0LjQ1LTkuOTEgOS45MSAwIDEuNzUuNDYgMy40NSAxLjMyIDQuOTVMMi4wNSAyMmw1LjI1LTEuMzhjMS40NS43OSAzLjA4IDEuMjEgNC43NCAxLjIxIDUuNDYgMCA5LjkxLTQuNDUgOS45MS05LjkxIDAtMi42NS0xLjAzLTUuMTQtMi45LTcuMDF6bS03LjAxIDE1LjI0Yy0xLjQ4IDAtMi45My0uNC00LjItMS4xNWwtLjMtLjE4LTMuMTIuODIuODMtMy4wNC0uMi0uMzFhOC4yNjQgOC4yNjQgMCAwIDEtMS4yNi00LjM4YzAtNC41NCAzLjctOC4yNCA4LjI0LTguMjQgMi4yIDAgNC4yNy44NiA1LjgyIDIuNDJhOC4xODMgOC4xODMgMCAwIDEgMi40MSA1LjgzYy4wMiA0LjU0LTMuNjggOC4yMy04LjIyIDguMjN6bTQuNTItNi4xNmMtLjI1LS4xMi0xLjQ3LS43Mi0xLjY5LS44MS0uMjMtLjA4LS4zOS0uMTItLjU2LjEyLS4xNy4yNS0uNjQuODEtLjc4Ljk3LS4xNC4xNy0uMjkuMTktLjU0LjA2LS4yNS0uMTItMS4wNS0uMzktMS45OS0xLjIzLS43NC0uNjYtMS4yMy0xLjQ3LTEuMzgtMS43Mi0uMTQtLjI1LS4wMi0uMzguMTEtLjUxLjExLS4xMS4yNS0uMjkuMzctLjQzcy4xNy0uMjUuMjUtLjQxYy4wOC0uMTcuMDQtLjMxLS4wMi0uNDNzLS41Ni0xLjM0LS43Ni0xLjg0Yy0uMi0uNDgtLjQxLS40Mi0uNTYtLjQzaC0uNDhjLS4xNyAwLS40My4wNi0uNjYuMzEtLjIyLjI1LS44Ni44NS0uODYgMi4wNyAwIDEuMjIuODkgMi40IDEuMDEgMi41Ni4xMi4xNyAxLjc1IDIuNjcgNC4yMyAzLjc0LjU5LjI2IDEuMDUuNDEgMS40MS41Mi41OS4xOSAxLjEzLjE2IDEuNTYuMS40OC0uMDcgMS40Ny0uNiAxLjY3LTEuMTguMjEtLjU4LjIxLTEuMDcuMTQtMS4xOHMtLjIyLS4xNi0uNDctLjI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2hhdHNob3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjU3IDEzLjE2Yy0xLjM2LjI4LTIuMTcgMS4xNi0yLjE3IDIuNDEgMCAxLjM0IDEuMTEgMi40MiAyLjQ5IDIuNDIgMi4wNSAwIDMuNzEtMS42NiAzLjcxLTMuNzEgMC0xLjA3LS4xNS0yLjEyLS40Ni0zLjEyLS43OSAxLjA3LTIuMiAxLjcyLTMuNTcgMnpNMTMuNS42N3MuNzQgMi42NS43NCA0LjhjMCAyLjA2LTEuMzUgMy43My0zLjQxIDMuNzMtMi4wNyAwLTMuNjMtMS42Ny0zLjYzLTMuNzNsLjAzLS4zNkM1LjIxIDcuNTEgNCAxMC42MiA0IDE0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LThDMjAgOC42MSAxNy40MSAzLjggMTMuNS42N3pNMTIgMjBjLTMuMzEgMC02LTIuNjktNi02IDAtMS41My4zLTMuMDQuODYtNC40M2E1LjU4MiA1LjU4MiAwIDAgMCAzLjk3IDEuNjNjMi42NiAwIDQuNzUtMS44MyA1LjI4LTQuNDNBMTQuNzcgMTQuNzcgMCAwIDEgMTggMTRjMCAzLjMxLTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXb21hbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45NCA4LjMxQzEzLjYyIDcuNTIgMTIuODUgNyAxMiA3cy0xLjYyLjUyLTEuOTQgMS4zMUw3IDE2aDMuNXY2aDN2LTZIMTdsLTMuMDYtNy42OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvbWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTQgOC4zMUMxMy42MiA3LjUyIDEyLjg1IDcgMTIgN3MtMS42Mi41Mi0xLjk0IDEuMzFMNyAxNmgzdjZoNHYtNmgzbC0zLjA2LTcuNjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXb3Jrc3BhY2VQcmVtaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42OCAxMy42OSAxMiAxMS45M2wyLjMxIDEuNzYtLjg4LTIuODVMMTUuNzUgOWgtMi44NEwxMiA2LjE5IDExLjA5IDlIOC4yNWwyLjMxIDEuODQtLjg4IDIuODV6TTIwIDEwYzAtNC40Mi0zLjU4LTgtOC04cy04IDMuNTgtOCA4YzAgMi4wMy43NiAzLjg3IDIgNS4yOFYyM2w2LTIgNiAydi03LjcyQTcuOTYgNy45NiAwIDAgMCAyMCAxMHptLTgtNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02IDIuNjktNiA2LTZ6bTAgMTUtNCAxLjAydi0zLjFjMS4xOC42OCAyLjU0IDEuMDggNCAxLjA4czIuODItLjQgNC0xLjA4djMuMUwxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrQm94T3V0bGluZUJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hlY2tCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNMTcuOTkgOWwtMS40MS0xLjQyLTYuNTkgNi41OS0yLjU4LTIuNTctMS40MiAxLjQxIDQgMy45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluZGV0ZXJtaW5hdGVDaGVja0JveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNNyAxMWgxMHYySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYWRpb0J1dHRvbkNoZWNrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhZGlvQnV0dG9uVW5jaGVja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJCb3JkZXJQdXJwbGU1MDAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJCb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgOS4yNC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40VjYuMWwxLjcxIDQuMDQgNC4zOC4zOC0zLjMyIDIuODggMSA0LjI4TDEyIDE1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFyT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgOS4yNC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40bC0zLjc2IDIuMjcgMS00LjI4LTMuMzItMi44OCA0LjM4LS4zOEwxMiA2LjFsMS43MSA0LjA0IDQuMzguMzgtMy4zMiAyLjg4IDEgNC4yOEwxMiAxNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhclB1cnBsZTUwMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTcuMjcgMTguMTggMjFsLTEuNjQtNy4wM0wyMiA5LjI0bC03LjE5LS42MUwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNy4yNyAxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvZ2dsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNkg3Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2aDEwYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0wIDEwSDdjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMTBjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDR6TTcgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2dnbGVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZIN2MtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNmgxMGMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNnptMCAxMEg3Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aDEwYzIuMjEgMCA0IDEuNzkgNCA0cy0xLjc5IDQtNCA0em0wLTdjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE1kQ2xvc2UsIE1kSG9tZSB9IGZyb20gJ3JlYWN0LWljb25zL21kJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRHJhd2VyQ29udGV4dCB9IGZyb20gJy4vRHJhd2VyQ29udGV4dC5tanMnO1xuXG5jb25zdCBEcmF3ZXJIZWFkZXIgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjbG9zZUljb246IENsb3NlSWNvbiA9IE1kQ2xvc2UsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB0aXRsZSxcbiAgdGl0bGVJY29uOiBUaXRsZUljb24gPSBNZEhvbWUsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgeyBpZDogbWFpbkRpdklkLCBpc09wZW4sIG9uQ2xvc2UsIHRoZW1lOiByb290VGhlbWUgfSA9IHVzZURyYXdlckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmhlYWRlciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWUsIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiaDVcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmlubmVyLnRpdGxlVGV4dCwgaWQ6IG1haW5EaXZJZCwgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goVGl0bGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pbm5lci50aXRsZUljb24gfSksXG4gICAgICB0aXRsZVxuICAgIF0gfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJidXR0b25cIiwgeyBvbkNsaWNrOiBvbkNsb3NlLCBcImRhdGEtdGVzdGlkXCI6IFwiY2xvc2UtZHJhd2VyXCIsIGNsYXNzTmFtZTogdGhlbWUuaW5uZXIuY2xvc2VCdXR0b24sIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KENsb3NlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaW5uZXIuY2xvc2VJY29uIH0pLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFwic3Itb25seVwiLCBjaGlsZHJlbjogXCJDbG9zZSBtZW51XCIgfSlcbiAgICBdIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5jb2xsYXBzZWRbaXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0sIGlkOiBgZmxvd2JpdGUtZHJhd2VyLWhlYWRlci0ke2lkfWAsIGNoaWxkcmVuIH0pXG4gIF0gfSk7XG59O1xuRHJhd2VySGVhZGVyLmRpc3BsYXlOYW1lID0gXCJEcmF3ZXIuSGVhZGVyXCI7XG5cbmV4cG9ydCB7IERyYXdlckhlYWRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJhd2VySGVhZGVyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZURyYXdlckNvbnRleHQgfSBmcm9tICcuL0RyYXdlckNvbnRleHQubWpzJztcblxuY29uc3QgRHJhd2VySXRlbXMgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZURyYXdlckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLml0ZW1zLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWRyYXdlci1pdGVtc1wiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkRyYXdlckl0ZW1zLmRpc3BsYXlOYW1lID0gXCJEcmF3ZXIuSXRlbXNcIjtcblxuZXhwb3J0IHsgRHJhd2VySXRlbXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyYXdlckl0ZW1zLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUlkLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBEcmF3ZXJDb250ZXh0IH0gZnJvbSAnLi9EcmF3ZXJDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBEcmF3ZXJIZWFkZXIgfSBmcm9tICcuL0RyYXdlckhlYWRlci5tanMnO1xuaW1wb3J0IHsgRHJhd2VySXRlbXMgfSBmcm9tICcuL0RyYXdlckl0ZW1zLm1qcyc7XG5cbmNvbnN0IERyYXdlckNvbXBvbmVudCA9ICh7XG4gIGJhY2tkcm9wID0gdHJ1ZSxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZWRnZSA9IGZhbHNlLFxuICBwb3NpdGlvbiA9IFwibGVmdFwiLFxuICBvbkNsb3NlLFxuICBvcGVuOiBpc09wZW4gPSBmYWxzZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5kcmF3ZXIsIGN1c3RvbVRoZW1lKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVFc2NhcGVLZXkgPSAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIgJiYgaXNPcGVuICYmIG9uQ2xvc2UpIHtcbiAgICAgICAgb25DbG9zZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlRXNjYXBlS2V5KTtcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlRXNjYXBlS2V5KTtcbiAgfSwgW29uQ2xvc2UsIGlzT3Blbl0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRHJhd2VyQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgb25DbG9zZSwgaXNPcGVuLCBpZCB9LCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImRpdlwiLFxuICAgICAge1xuICAgICAgICBcImFyaWEtbW9kYWxcIjogdHJ1ZSxcbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGBkcmF3ZXItZGlhbG9nLSR7aWR9YCxcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZHJhd2VyXCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICB0aGVtZS5yb290LmJhc2UsXG4gICAgICAgICAgdGhlbWUucm9vdC5wb3NpdGlvbltwb3NpdGlvbl1baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgZWRnZSAmJiAhaXNPcGVuICYmIHRoZW1lLnJvb3QuZWRnZSxcbiAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgKSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICB9XG4gICAgKSxcbiAgICBpc09wZW4gJiYgYmFja2Ryb3AgJiYgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IG9uQ2xpY2s6ICgpID0+IG9uQ2xvc2UoKSwgY2xhc3NOYW1lOiB0aGVtZS5yb290LmJhY2tkcm9wIH0pXG4gIF0gfSk7XG59O1xuRHJhd2VyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJEcmF3ZXJcIjtcbmNvbnN0IERyYXdlciA9IE9iamVjdC5hc3NpZ24oRHJhd2VyQ29tcG9uZW50LCB7XG4gIEhlYWRlcjogRHJhd2VySGVhZGVyLFxuICBJdGVtczogRHJhd2VySXRlbXNcbn0pO1xuXG5leHBvcnQgeyBEcmF3ZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyYXdlci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBEcm9wZG93bkNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VEcm9wZG93bkNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERyb3Bkb3duQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZURyb3Bkb3duQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIERyb3Bkb3duQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IERyb3Bkb3duQ29udGV4dCwgdXNlRHJvcGRvd25Db250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IHVzZURyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IERyb3Bkb3duRGl2aWRlciA9ICh7IGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lIH0gPSB1c2VEcm9wZG93bkNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBjdXN0b21UaGVtZS5kaXZpZGVyID8/IHJvb3RUaGVtZS5mbG9hdGluZy5kaXZpZGVyO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMgfSk7XG59O1xuXG5leHBvcnQgeyBEcm9wZG93bkRpdmlkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyb3Bkb3duRGl2aWRlci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IHVzZURyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25Db250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93bkRpdmlkZXIgfSBmcm9tICcuL0Ryb3Bkb3duRGl2aWRlci5tanMnO1xuXG5jb25zdCBEcm9wZG93bkhlYWRlciA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSB9ID0gdXNlRHJvcGRvd25Db250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gY3VzdG9tVGhlbWUuaGVhZGVyID8/IHJvb3RUaGVtZS5mbG9hdGluZy5oZWFkZXI7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbiB9KSxcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KERyb3Bkb3duRGl2aWRlciwge30pXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBEcm9wZG93bkhlYWRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJvcGRvd25IZWFkZXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlTGlzdEl0ZW0sIHVzZU1lcmdlUmVmcyB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgQnV0dG9uQmFzZSB9IGZyb20gJy4uL0J1dHRvbi9CdXR0b25CYXNlLm1qcyc7XG5pbXBvcnQgeyB1c2VEcm9wZG93bkNvbnRleHQgfSBmcm9tICcuL0Ryb3Bkb3duQ29udGV4dC5tanMnO1xuXG5jb25zdCBEcm9wZG93bkl0ZW0gPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBpY29uOiBJY29uLCBvbkNsaWNrLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyByZWY6IGxpc3RJdGVtUmVmLCBpbmRleCB9ID0gdXNlTGlzdEl0ZW0oeyBsYWJlbDogdHlwZW9mIGNoaWxkcmVuID09PSBcInN0cmluZ1wiID8gY2hpbGRyZW4gOiB2b2lkIDAgfSk7XG4gICAgY29uc3QgcmVmID0gdXNlTWVyZ2VSZWZzKFtmb3J3YXJkZWRSZWYsIGxpc3RJdGVtUmVmXSk7XG4gICAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBhY3RpdmVJbmRleCwgZGlzbWlzc09uQ2xpY2ssIGdldEl0ZW1Qcm9wcywgaGFuZGxlU2VsZWN0IH0gPSB1c2VEcm9wZG93bkNvbnRleHQoKTtcbiAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZUluZGV4ID09PSBpbmRleDtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuZmxvYXRpbmcuaXRlbSwgY3VzdG9tVGhlbWUpO1xuICAgIGNvbnN0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImxpXCIsIHsgcm9sZTogXCJtZW51aXRlbVwiLCBjbGFzc05hbWU6IHRoZW1lLmNvbnRhaW5lciwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgQnV0dG9uQmFzZSxcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgLi4udGhlaXJQcm9wcyxcbiAgICAgICAgLi4uZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICBvbkNsaWNrPy4oKTtcbiAgICAgICAgICAgIGRpc21pc3NPbkNsaWNrICYmIGhhbmRsZVNlbGVjdChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWJJbmRleDogaXNBY3RpdmUgPyAwIDogLTEsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgY2xhc3NOYW1lOiB0aGVtZS5pY29uIH0pLFxuICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApIH0pO1xuICB9XG4pO1xuRHJvcGRvd25JdGVtLmRpc3BsYXlOYW1lID0gXCJEcm9wZG93bkl0ZW1cIjtcblxuZXhwb3J0IHsgRHJvcGRvd25JdGVtIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkl0ZW0ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlTGlzdE5hdmlnYXRpb24sIHVzZVR5cGVhaGVhZCwgRmxvYXRpbmdGb2N1c01hbmFnZXIsIEZsb2F0aW5nTGlzdCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlRWZmZWN0LCBjbG9uZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIaU91dGxpbmVDaGV2cm9uRG93biwgSGlPdXRsaW5lQ2hldnJvblVwLCBIaU91dGxpbmVDaGV2cm9uUmlnaHQsIEhpT3V0bGluZUNoZXZyb25MZWZ0IH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlQmFzZUZMb2F0aW5nLCB1c2VGbG9hdGluZ0ludGVyYWN0aW9ucyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZS1mbG9hdGluZy5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uL0J1dHRvbi5tanMnO1xuaW1wb3J0ICcuLi9CdXR0b24vQnV0dG9uR3JvdXAubWpzJztcbmltcG9ydCB7IERyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25Db250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93bkRpdmlkZXIgfSBmcm9tICcuL0Ryb3Bkb3duRGl2aWRlci5tanMnO1xuaW1wb3J0IHsgRHJvcGRvd25IZWFkZXIgfSBmcm9tICcuL0Ryb3Bkb3duSGVhZGVyLm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93bkl0ZW0gfSBmcm9tICcuL0Ryb3Bkb3duSXRlbS5tanMnO1xuXG5jb25zdCBpY29ucyA9IHtcbiAgdG9wOiBIaU91dGxpbmVDaGV2cm9uVXAsXG4gIHJpZ2h0OiBIaU91dGxpbmVDaGV2cm9uUmlnaHQsXG4gIGJvdHRvbTogSGlPdXRsaW5lQ2hldnJvbkRvd24sXG4gIGxlZnQ6IEhpT3V0bGluZUNoZXZyb25MZWZ0XG59O1xuY29uc3QgVHJpZ2dlciA9ICh7XG4gIHJlZnMsXG4gIGNoaWxkcmVuLFxuICBpbmxpbmUsXG4gIHRoZW1lLFxuICBkaXNhYmxlZCxcbiAgc2V0QnV0dG9uV2lkdGgsXG4gIGdldFJlZmVyZW5jZVByb3BzLFxuICByZW5kZXJUcmlnZ2VyLFxuICAuLi5idXR0b25Qcm9wc1xufSkgPT4ge1xuICBjb25zdCByZWYgPSByZWZzLnJlZmVyZW5jZTtcbiAgY29uc3QgYTExeVByb3BzID0gZ2V0UmVmZXJlbmNlUHJvcHMoKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIHNldEJ1dHRvbldpZHRoPy4ocmVmLmN1cnJlbnQuY2xpZW50V2lkdGgpO1xuICAgIH1cbiAgfSwgW3JlZiwgc2V0QnV0dG9uV2lkdGhdKTtcbiAgaWYgKHJlbmRlclRyaWdnZXIpIHtcbiAgICBjb25zdCB0cmlnZ2VyRWxlbWVudCA9IHJlbmRlclRyaWdnZXIodGhlbWUpO1xuICAgIHJldHVybiBjbG9uZUVsZW1lbnQodHJpZ2dlckVsZW1lbnQsIHsgcmVmOiByZWZzLnNldFJlZmVyZW5jZSwgZGlzYWJsZWQsIC4uLmExMXlQcm9wcywgLi4udHJpZ2dlckVsZW1lbnQucHJvcHMgfSk7XG4gIH1cbiAgcmV0dXJuIGlubGluZSA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJidXR0b25cIiwgeyB0eXBlOiBcImJ1dHRvblwiLCByZWY6IHJlZnMuc2V0UmVmZXJlbmNlLCBjbGFzc05hbWU6IHRoZW1lPy5pbmxpbmVXcmFwcGVyLCBkaXNhYmxlZCwgLi4uYTExeVByb3BzLCBjaGlsZHJlbiB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goQnV0dG9uLCB7IC4uLmJ1dHRvblByb3BzLCBkaXNhYmxlZCwgdHlwZTogXCJidXR0b25cIiwgcmVmOiByZWZzLnNldFJlZmVyZW5jZSwgLi4uYTExeVByb3BzLCBjaGlsZHJlbiB9KTtcbn07XG5jb25zdCBEcm9wZG93bkNvbXBvbmVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGRpc21pc3NPbkNsaWNrID0gdHJ1ZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIGVuYWJsZVR5cGVBaGVhZCA9IHRydWUsXG4gIHJlbmRlclRyaWdnZXIsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtidXR0b25XaWR0aCwgc2V0QnV0dG9uV2lkdGhdID0gdXNlU3RhdGUodm9pZCAwKTtcbiAgY29uc3QgZWxlbWVudHNSZWYgPSB1c2VSZWYoW10pO1xuICBjb25zdCBsYWJlbHNSZWYgPSB1c2VSZWYoW10pO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmRyb3Bkb3duLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgY29uc3QgZGF0YVRlc3RJZCA9IHByb3BzW1wiZGF0YS10ZXN0aWRcIl0gfHwgXCJmbG93Yml0ZS1kcm9wZG93bi10YXJnZXRcIjtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9IHByb3BzLmlubGluZSA/IFwiYm90dG9tLXN0YXJ0XCIgOiBcImJvdHRvbVwiLFxuICAgIHRyaWdnZXIgPSBcImNsaWNrXCIsXG4gICAgbGFiZWwsXG4gICAgaW5saW5lLFxuICAgIGFycm93SWNvbiA9IHRydWUsXG4gICAgLi4uYnV0dG9uUHJvcHNcbiAgfSA9IHRoZWlyUHJvcHM7XG4gIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUNhbGxiYWNrKChpbmRleCkgPT4ge1xuICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgIHNldE9wZW4oZmFsc2UpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGhhbmRsZVR5cGVhaGVhZE1hdGNoID0gdXNlQ2FsbGJhY2soXG4gICAgKGluZGV4KSA9PiB7XG4gICAgICBpZiAob3Blbikge1xuICAgICAgICBzZXRBY3RpdmVJbmRleChpbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVTZWxlY3QoaW5kZXgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29wZW4sIGhhbmRsZVNlbGVjdF1cbiAgKTtcbiAgY29uc3QgeyBjb250ZXh0LCBmbG9hdGluZ1N0eWxlcywgcmVmcyB9ID0gdXNlQmFzZUZMb2F0aW5nKHtcbiAgICBvcGVuLFxuICAgIHNldE9wZW4sXG4gICAgcGxhY2VtZW50XG4gIH0pO1xuICBjb25zdCBsaXN0TmF2ID0gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwge1xuICAgIGxpc3RSZWY6IGVsZW1lbnRzUmVmLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgb25OYXZpZ2F0ZTogc2V0QWN0aXZlSW5kZXhcbiAgfSk7XG4gIGNvbnN0IHR5cGVhaGVhZCA9IHVzZVR5cGVhaGVhZChjb250ZXh0LCB7XG4gICAgbGlzdFJlZjogbGFiZWxzUmVmLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgb25NYXRjaDogaGFuZGxlVHlwZWFoZWFkTWF0Y2gsXG4gICAgZW5hYmxlZDogZW5hYmxlVHlwZUFoZWFkXG4gIH0pO1xuICBjb25zdCB7IGdldFJlZmVyZW5jZVByb3BzLCBnZXRGbG9hdGluZ1Byb3BzLCBnZXRJdGVtUHJvcHMgfSA9IHVzZUZsb2F0aW5nSW50ZXJhY3Rpb25zKHtcbiAgICBjb250ZXh0LFxuICAgIHJvbGU6IFwibWVudVwiLFxuICAgIHRyaWdnZXIsXG4gICAgaW50ZXJhY3Rpb25zOiBbbGlzdE5hdiwgdHlwZWFoZWFkXVxuICB9KTtcbiAgY29uc3QgSWNvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IFtwXSA9IHBsYWNlbWVudC5zcGxpdChcIi1cIik7XG4gICAgcmV0dXJuIGljb25zW3BdID8/IEhpT3V0bGluZUNoZXZyb25Eb3duO1xuICB9LCBbcGxhY2VtZW50XSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhEcm9wZG93bkNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgdGhlbWUsIGFjdGl2ZUluZGV4LCBkaXNtaXNzT25DbGljaywgZ2V0SXRlbVByb3BzLCBoYW5kbGVTZWxlY3QgfSwgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgIFRyaWdnZXIsXG4gICAgICB7XG4gICAgICAgIC4uLmJ1dHRvblByb3BzLFxuICAgICAgICByZWZzLFxuICAgICAgICBpbmxpbmUsXG4gICAgICAgIHRoZW1lLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IGRhdGFUZXN0SWQsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5mbG9hdGluZy50YXJnZXQsIGJ1dHRvblByb3BzLmNsYXNzTmFtZSksXG4gICAgICAgIHNldEJ1dHRvbldpZHRoLFxuICAgICAgICBnZXRSZWZlcmVuY2VQcm9wcyxcbiAgICAgICAgcmVuZGVyVHJpZ2dlcixcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICBhcnJvd0ljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IGNsYXNzTmFtZTogdGhlbWUuYXJyb3dJY29uIH0pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApLFxuICAgIG9wZW4gJiYgLyogQF9fUFVSRV9fICovIGpzeChGbG9hdGluZ0ZvY3VzTWFuYWdlciwgeyBjb250ZXh0LCBtb2RhbDogZmFsc2UsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgcmVmOiByZWZzLnNldEZsb2F0aW5nLFxuICAgICAgICBzdHlsZTogeyAuLi5mbG9hdGluZ1N0eWxlcywgbWluV2lkdGg6IGJ1dHRvbldpZHRoIH0sXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1kcm9wZG93blwiLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogb3BlbixcbiAgICAgICAgLi4uZ2V0RmxvYXRpbmdQcm9wcyh7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUuZmxvYXRpbmcuYmFzZSxcbiAgICAgICAgICAgIHRoZW1lLmZsb2F0aW5nLmFuaW1hdGlvbixcbiAgICAgICAgICAgIFwiZHVyYXRpb24tMTAwXCIsXG4gICAgICAgICAgICAhb3BlbiAmJiB0aGVtZS5mbG9hdGluZy5oaWRkZW4sXG4gICAgICAgICAgICB0aGVtZS5mbG9hdGluZy5zdHlsZS5hdXRvLFxuICAgICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgICAgKVxuICAgICAgICB9KSxcbiAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goRmxvYXRpbmdMaXN0LCB7IGVsZW1lbnRzUmVmLCBsYWJlbHNSZWYsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwidWxcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbnRlbnQsIHRhYkluZGV4OiAtMSwgY2hpbGRyZW4gfSkgfSlcbiAgICAgIH1cbiAgICApIH0pXG4gIF0gfSk7XG59O1xuRHJvcGRvd25Db21wb25lbnQuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duXCI7XG5Ecm9wZG93bkhlYWRlci5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd24uSGVhZGVyXCI7XG5Ecm9wZG93bkRpdmlkZXIuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duLkRpdmlkZXJcIjtcbmNvbnN0IERyb3Bkb3duID0gT2JqZWN0LmFzc2lnbihEcm9wZG93bkNvbXBvbmVudCwge1xuICBJdGVtOiBEcm9wZG93bkl0ZW0sXG4gIEhlYWRlcjogRHJvcGRvd25IZWFkZXIsXG4gIERpdmlkZXI6IERyb3Bkb3duRGl2aWRlclxufSk7XG5cbmV4cG9ydCB7IERyb3Bkb3duIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bi5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEhlbHBlclRleHQgfSBmcm9tICcuLi9IZWxwZXJUZXh0L0hlbHBlclRleHQubWpzJztcblxuY29uc3QgRmlsZUlucHV0ID0gZm9yd2FyZFJlZihcbiAgKHsgY2xhc3NOYW1lLCBjb2xvciA9IFwiZ3JheVwiLCBoZWxwZXJUZXh0LCBzaXppbmcgPSBcIm1kXCIsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZpbGVJbnB1dCwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQuYmFzZSxcbiAgICAgICAgICAgIHRoZW1lLmZpZWxkLmlucHV0LmNvbG9yc1tjb2xvcl0sXG4gICAgICAgICAgICB0aGVtZS5maWVsZC5pbnB1dC5zaXplc1tzaXppbmddXG4gICAgICAgICAgKSxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICByZWZcbiAgICAgICAgfVxuICAgICAgKSB9KSB9KSxcbiAgICAgIGhlbHBlclRleHQgJiYgLyogQF9fUFVSRV9fICovIGpzeChIZWxwZXJUZXh0LCB7IGNvbG9yLCBjaGlsZHJlbjogaGVscGVyVGV4dCB9KVxuICAgIF0gfSk7XG4gIH1cbik7XG5GaWxlSW5wdXQuZGlzcGxheU5hbWUgPSBcIkZpbGVJbnB1dFwiO1xuXG5leHBvcnQgeyBGaWxlSW5wdXQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpbGVJbnB1dC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRmxvYXRpbmdMYWJlbCA9IGZvcndhcmRSZWYoXG4gICh7XG4gICAgbGFiZWwsXG4gICAgaGVscGVyVGV4dCxcbiAgICBjb2xvciA9IFwiZGVmYXVsdFwiLFxuICAgIHNpemluZyA9IFwibWRcIixcbiAgICB2YXJpYW50LFxuICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gICAgY2xhc3NOYW1lLFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHJhbmRvbUlkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZsb2F0aW5nTGFiZWwsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UoXCJyZWxhdGl2ZVwiLCB2YXJpYW50ID09PSBcInN0YW5kYXJkXCIgPyBcInotMFwiIDogXCJcIiksIGNoaWxkcmVuOiBbXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgaWQ6IHByb3BzLmlkID8gcHJvcHMuaWQgOiBcImZsb2F0aW5nTGFiZWxcIiArIHJhbmRvbUlkLFxuICAgICAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IFwib3V0bGluZWRfc3VjY2Vzc19oZWxwXCIsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuaW5wdXRbY29sb3JdW3ZhcmlhbnRdW3NpemluZ10sIGNsYXNzTmFtZSksXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogXCIgXCIsXG4gICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvYXRpbmctbGFiZWxcIixcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgICAgICByZWZcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgXCJsYWJlbFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGh0bWxGb3I6IHByb3BzLmlkID8gcHJvcHMuaWQgOiBcImZsb2F0aW5nTGFiZWxcIiArIHJhbmRvbUlkLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmxhYmVsW2NvbG9yXVt2YXJpYW50XVtzaXppbmddLCBjbGFzc05hbWUpLFxuICAgICAgICAgICAgY2hpbGRyZW46IGxhYmVsXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICBdIH0pLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInBcIiwgeyBpZDogXCJvdXRsaW5lZF9oZWxwZXJfdGV4dFwiICsgcmFuZG9tSWQsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5oZWxwZXJUZXh0W2NvbG9yXSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IGhlbHBlclRleHQgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuRmxvYXRpbmdMYWJlbC5kaXNwbGF5TmFtZSA9IFwiRmxvYXRpbmdMYWJlbFwiO1xuXG5leHBvcnQgeyBGbG9hdGluZ0xhYmVsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GbG9hdGluZ0xhYmVsLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCwganN4cyB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRm9vdGVyQnJhbmQgPSAoe1xuICBhbHQsXG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIGhyZWYsXG4gIG5hbWUsXG4gIHNyYyxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZm9vdGVyLmJyYW5kLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2hpbGRyZW46IGhyZWYgPyAvKiBAX19QVVJFX18gKi8ganN4cyhcImFcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLWJyYW5kXCIsIGhyZWYsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiaW1nXCIsIHsgYWx0LCBzcmMsIGNsYXNzTmFtZTogdGhlbWUuaW1nIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3Rlci1icmFuZC1zcGFuXCIsIGNsYXNzTmFtZTogdGhlbWUuc3BhbiwgY2hpbGRyZW46IG5hbWUgfSksXG4gICAgY2hpbGRyZW5cbiAgXSB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJpbWdcIixcbiAgICB7XG4gICAgICBhbHQsXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLWJyYW5kXCIsXG4gICAgICBzcmMsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuaW1nLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHNcbiAgICB9XG4gICkgfSk7XG59O1xuXG5leHBvcnQgeyBGb290ZXJCcmFuZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9vdGVyQnJhbmQubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJDb3B5cmlnaHQgPSAoe1xuICBieSxcbiAgY2xhc3NOYW1lLFxuICBocmVmLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgeWVhcixcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIuY29weXJpZ2h0LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1mb290ZXItY29weXJpZ2h0XCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICBcIlxceEE5IFwiLFxuICAgIHllYXIsXG4gICAgaHJlZiA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJhXCIsIHsgaHJlZiwgY2xhc3NOYW1lOiB0aGVtZS5ocmVmLCBjaGlsZHJlbjogYnkgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1mb290ZXItY29weXJpZ2h0LXNwYW5cIiwgY2xhc3NOYW1lOiB0aGVtZS5zcGFuLCBjaGlsZHJlbjogYnkgfSlcbiAgXSB9KTtcbn07XG5cbmV4cG9ydCB7IEZvb3RlckNvcHlyaWdodCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9vdGVyQ29weXJpZ2h0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRm9vdGVyRGl2aWRlciA9ICh7IGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIuZGl2aWRlciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImhyXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZvb3Rlci1kaXZpZGVyXCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcyB9KTtcbn07XG5cbmV4cG9ydCB7IEZvb3RlckRpdmlkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZvb3RlckRpdmlkZXIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJJY29uID0gKHtcbiAgYXJpYUxhYmVsLFxuICBjbGFzc05hbWUsXG4gIGhyZWYsXG4gIGljb246IEljb24sXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZvb3Rlci5pY29uLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2hpbGRyZW46IGhyZWYgPyAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiYVwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWwsXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLWljb25cIixcbiAgICAgIGhyZWYsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBjbGFzc05hbWU6IHRoZW1lLnNpemUgfSlcbiAgICB9XG4gICkgOiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3Rlci1pY29uXCIsIGNsYXNzTmFtZTogdGhlbWUuc2l6ZSwgLi4ucHJvcHMgfSkgfSk7XG59O1xuXG5leHBvcnQgeyBGb290ZXJJY29uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJJY29uLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRm9vdGVyTGluayA9ICh7XG4gIGFzOiBDb21wb25lbnQgPSBcImFcIixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgaHJlZixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZm9vdGVyLmdyb3VwTGluay5saW5rLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goQ29tcG9uZW50LCB7IGhyZWYsIGNsYXNzTmFtZTogdGhlbWUuaHJlZiwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pIH0pO1xufTtcblxuZXhwb3J0IHsgRm9vdGVyTGluayB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9vdGVyTGluay5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEZvb3RlckxpbmtHcm91cCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbCA9IGZhbHNlLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIuZ3JvdXBMaW5rLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwidWxcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZm9vdGVyLWdyb3VwTGlua1wiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY29sICYmIHRoZW1lLmNvbCwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgRm9vdGVyTGlua0dyb3VwIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJMaW5rR3JvdXAubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJUaXRsZSA9ICh7XG4gIGFzOiBDb21wb25lbnQgPSBcImgyXCIsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHRpdGxlLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZvb3Rlci50aXRsZSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChDb21wb25lbnQsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3Rlci10aXRsZVwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiB0aXRsZSB9KTtcbn07XG5cbmV4cG9ydCB7IEZvb3RlclRpdGxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJUaXRsZS5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBGb290ZXJCcmFuZCB9IGZyb20gJy4vRm9vdGVyQnJhbmQubWpzJztcbmltcG9ydCB7IEZvb3RlckNvcHlyaWdodCB9IGZyb20gJy4vRm9vdGVyQ29weXJpZ2h0Lm1qcyc7XG5pbXBvcnQgeyBGb290ZXJEaXZpZGVyIH0gZnJvbSAnLi9Gb290ZXJEaXZpZGVyLm1qcyc7XG5pbXBvcnQgeyBGb290ZXJJY29uIH0gZnJvbSAnLi9Gb290ZXJJY29uLm1qcyc7XG5pbXBvcnQgeyBGb290ZXJMaW5rIH0gZnJvbSAnLi9Gb290ZXJMaW5rLm1qcyc7XG5pbXBvcnQgeyBGb290ZXJMaW5rR3JvdXAgfSBmcm9tICcuL0Zvb3RlckxpbmtHcm91cC5tanMnO1xuaW1wb3J0IHsgRm9vdGVyVGl0bGUgfSBmcm9tICcuL0Zvb3RlclRpdGxlLm1qcyc7XG5cbmNvbnN0IEZvb3RlckNvbXBvbmVudCA9ICh7XG4gIGJnRGFyayA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjb250YWluZXIgPSBmYWxzZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZm9vdGVyLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiZm9vdGVyXCIsXG4gICAge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3RlclwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgYmdEYXJrICYmIHRoZW1lLnJvb3QuYmdEYXJrLCBjb250YWluZXIgJiYgdGhlbWUucm9vdC5jb250YWluZXIsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcbkZvb3RlckNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyXCI7XG5Gb290ZXJDb3B5cmlnaHQuZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5Db3B5cmlnaHRcIjtcbkZvb3RlckxpbmsuZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5MaW5rXCI7XG5Gb290ZXJCcmFuZC5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyLkJyYW5kXCI7XG5Gb290ZXJMaW5rR3JvdXAuZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5MaW5rR3JvdXBcIjtcbkZvb3Rlckljb24uZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5JY29uXCI7XG5Gb290ZXJUaXRsZS5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyLlRpdGxlXCI7XG5Gb290ZXJEaXZpZGVyLmRpc3BsYXlOYW1lID0gXCJGb290ZXIuRGl2aWRlclwiO1xuY29uc3QgRm9vdGVyID0gT2JqZWN0LmFzc2lnbihGb290ZXJDb21wb25lbnQsIHtcbiAgQ29weXJpZ2h0OiBGb290ZXJDb3B5cmlnaHQsXG4gIExpbms6IEZvb3RlckxpbmssXG4gIExpbmtHcm91cDogRm9vdGVyTGlua0dyb3VwLFxuICBCcmFuZDogRm9vdGVyQnJhbmQsXG4gIEljb246IEZvb3Rlckljb24sXG4gIFRpdGxlOiBGb290ZXJUaXRsZSxcbiAgRGl2aWRlcjogRm9vdGVyRGl2aWRlclxufSk7XG5cbmV4cG9ydCB7IEZvb3RlciwgRm9vdGVyQ29tcG9uZW50IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZhUXVvdGVSaWdodCB9IGZyb20gJ3JlYWN0LWljb25zL2ZhNic7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEhSSWNvbiA9IGZvcndhcmRSZWYoXG4gICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCBpY29uOiBJY29uID0gRmFRdW90ZVJpZ2h0LCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuaHIuaWNvbiwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwiaHJcIixcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5ockxpbmUsIGNsYXNzTmFtZSksXG4gICAgICAgICAgcm9sZTogXCJzZXBhcmF0b3JcIixcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtaHItaWNvblwiLFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaWNvbi5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pY29uLmljb24gfSkgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUkljb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhSSWNvbi5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBIUlNxdWFyZSA9IGZvcndhcmRSZWYoXG4gICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuaHIuc3F1YXJlLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImhyXCIsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgICByb2xlOiBcInNlcGFyYXRvclwiLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtaHItc3F1YXJlXCIsXG4gICAgICAgIHJlZixcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUlNxdWFyZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SFJTcXVhcmUubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgSFJUZXh0ID0gZm9yd2FyZFJlZihcbiAgKHsgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIHRleHQsIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5oci50ZXh0LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJoclwiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmhyTGluZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtaHItdGV4dFwiLFxuICAgICAgICAgIHJvbGU6IFwic2VwYXJhdG9yXCIsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUudGV4dCwgY2hpbGRyZW46IHRleHQgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUlRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhSVGV4dC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBIUlRyaW1tZWQgPSBmb3J3YXJkUmVmKFxuICAoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmhyLnRyaW1tZWQsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiaHJcIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAgIHJvbGU6IFwic2VwYXJhdG9yXCIsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1oci10cmltbWVkXCIsXG4gICAgICAgIHJlZixcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUlRyaW1tZWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhSVHJpbW1lZC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgSFJJY29uIH0gZnJvbSAnLi9IUkljb24ubWpzJztcbmltcG9ydCB7IEhSU3F1YXJlIH0gZnJvbSAnLi9IUlNxdWFyZS5tanMnO1xuaW1wb3J0IHsgSFJUZXh0IH0gZnJvbSAnLi9IUlRleHQubWpzJztcbmltcG9ydCB7IEhSVHJpbW1lZCB9IGZyb20gJy4vSFJUcmltbWVkLm1qcyc7XG5cbmNvbnN0IEhSQ29tcG9uZW50ID0gZm9yd2FyZFJlZigoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5oci5yb290LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiaHJcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgcm9sZTogXCJzZXBhcmF0b3JcIiwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWhyXCIsIHJlZiwgLi4ucHJvcHMgfSk7XG59KTtcbkhSQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJIUlwiO1xuSFJUcmltbWVkLmRpc3BsYXlOYW1lID0gXCJIUi5UcmltbWVkXCI7XG5IUkljb24uZGlzcGxheU5hbWUgPSBcIkhSLkljb25cIjtcbkhSVGV4dC5kaXNwbGF5TmFtZSA9IFwiSFIuVGV4dFwiO1xuSFJTcXVhcmUuZGlzcGxheU5hbWUgPSBcIkhSLlNxdWFyZVwiO1xuY29uc3QgSFIgPSBPYmplY3QuYXNzaWduKEhSQ29tcG9uZW50LCB7XG4gIFRyaW1tZWQ6IEhSVHJpbW1lZCxcbiAgSWNvbjogSFJJY29uLFxuICBUZXh0OiBIUlRleHQsXG4gIFNxdWFyZTogSFJTcXVhcmVcbn0pO1xuXG5leHBvcnQgeyBIUiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SFIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBMaXN0SXRlbSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGljb246IEljb24sIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkubGlzdC5pdGVtLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImxpXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLndpdGhJY29uW0ljb24gPyBcIm9uXCIgOiBcIm9mZlwiXSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiBbXG4gICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmljb24pIH0pLFxuICAgIGNoaWxkcmVuXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBMaXN0SXRlbSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGlzdEl0ZW0ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuL0xpc3RJdGVtLm1qcyc7XG5cbmNvbnN0IExpc3RDb21wb25lbnQgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB1bnN0eWxlZCxcbiAgbmVzdGVkLFxuICBvcmRlcmVkLFxuICBob3Jpem9udGFsLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5saXN0LCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IENvbXBvbmVudCA9IG9yZGVyZWQgPyBcIm9sXCIgOiBcInVsXCI7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIENvbXBvbmVudCxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLnJvb3QuYmFzZSxcbiAgICAgICAgdGhlbWUucm9vdC5vcmRlcmVkW29yZGVyZWQgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgdW5zdHlsZWQgJiYgdGhlbWUucm9vdC51bnN0eWxlZCxcbiAgICAgICAgbmVzdGVkICYmIHRoZW1lLnJvb3QubmVzdGVkLFxuICAgICAgICBob3Jpem9udGFsICYmIHRoZW1lLnJvb3QuaG9yaXpvbnRhbCxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5MaXN0Q29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJMaXN0XCI7XG5MaXN0SXRlbS5kaXNwbGF5TmFtZSA9IFwiTGlzdC5JdGVtXCI7XG5jb25zdCBMaXN0ID0gT2JqZWN0LmFzc2lnbihMaXN0Q29tcG9uZW50LCB7IEl0ZW06IExpc3RJdGVtIH0pO1xuXG5leHBvcnQgeyBMaXN0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1MaXN0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCwganN4cyB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgTGlzdEdyb3VwSXRlbSA9ICh7XG4gIGFjdGl2ZTogaXNBY3RpdmUsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGhyZWYsXG4gIGljb246IEljb24sXG4gIG9uQ2xpY2ssXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBkaXNhYmxlZCxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5saXN0R3JvdXAuaXRlbSwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBpc0xpbmsgPSB0eXBlb2YgaHJlZiAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgY29uc3QgQ29tcG9uZW50ID0gaXNMaW5rID8gXCJhXCIgOiBcImJ1dHRvblwiO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImxpXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICBDb21wb25lbnQsXG4gICAge1xuICAgICAgaHJlZixcbiAgICAgIG9uQ2xpY2ssXG4gICAgICB0eXBlOiBpc0xpbmsgPyB2b2lkIDAgOiBcImJ1dHRvblwiLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLmxpbmsuYWN0aXZlW2lzQWN0aXZlID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgIHRoZW1lLmxpbmsuZGlzYWJsZWRbZGlzYWJsZWQgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgdGhlbWUubGluay5iYXNlLFxuICAgICAgICB0aGVtZS5saW5rLmhyZWZbaXNMaW5rID8gXCJvblwiIDogXCJvZmZcIl1cbiAgICAgICksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIEljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWxpc3QtZ3JvdXAtaXRlbS1pY29uXCIsIGNsYXNzTmFtZTogdGhlbWUubGluay5pY29uIH0pLFxuICAgICAgICBjaGlsZHJlblxuICAgICAgXVxuICAgIH1cbiAgKSB9KTtcbn07XG5cbmV4cG9ydCB7IExpc3RHcm91cEl0ZW0gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxpc3RHcm91cEl0ZW0ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTGlzdEdyb3VwSXRlbSB9IGZyb20gJy4vTGlzdEdyb3VwSXRlbS5tanMnO1xuXG5jb25zdCBMaXN0R3JvdXBDb21wb25lbnQgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmxpc3RHcm91cCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcInVsXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkxpc3RHcm91cENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiTGlzdEdyb3VwXCI7XG5MaXN0R3JvdXBJdGVtLmRpc3BsYXlOYW1lID0gXCJMaXN0R3JvdXAuSXRlbVwiO1xuY29uc3QgTGlzdEdyb3VwID0gT2JqZWN0LmFzc2lnbihMaXN0R3JvdXBDb21wb25lbnQsIHtcbiAgSXRlbTogTGlzdEdyb3VwSXRlbVxufSk7XG5cbmV4cG9ydCB7IExpc3RHcm91cCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGlzdEdyb3VwLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IE5hdmJhckNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VOYXZiYXJDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlTmF2QmFyQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIE5hdmJhckNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBOYXZiYXJDb250ZXh0LCB1c2VOYXZiYXJDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OYXZiYXJDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZU5hdmJhckNvbnRleHQgfSBmcm9tICcuL05hdmJhckNvbnRleHQubWpzJztcblxuY29uc3QgTmF2YmFyQnJhbmQgPSAoe1xuICBhczogQ29tcG9uZW50ID0gXCJhXCIsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZU5hdmJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmJyYW5kLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KENvbXBvbmVudCwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgTmF2YmFyQnJhbmQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU5hdmJhckJyYW5kLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZU5hdmJhckNvbnRleHQgfSBmcm9tICcuL05hdmJhckNvbnRleHQubWpzJztcblxuY29uc3QgTmF2YmFyQ29sbGFwc2UgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGlzT3BlbiB9ID0gdXNlTmF2YmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuY29sbGFwc2UsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtbmF2YmFyLWNvbGxhcHNlXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgdGhlbWUuaGlkZGVuWyFpc09wZW4gPyBcIm9uXCIgOiBcIm9mZlwiXSwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ1bFwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGlzdCwgY2hpbGRyZW4gfSlcbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgeyBOYXZiYXJDb2xsYXBzZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2YmFyQ29sbGFwc2UubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlTmF2YmFyQ29udGV4dCB9IGZyb20gJy4vTmF2YmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBOYXZiYXJMaW5rID0gKHtcbiAgYWN0aXZlLFxuICBhczogQ29tcG9uZW50ID0gXCJhXCIsXG4gIGRpc2FibGVkLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgb25DbGljayxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBzZXRJc09wZW4gfSA9IHVzZU5hdmJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmxpbmssIGN1c3RvbVRoZW1lKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQpID0+IHtcbiAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgIG9uQ2xpY2s/LihldmVudCk7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBDb21wb25lbnQsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICB0aGVtZS5iYXNlLFxuICAgICAgICBhY3RpdmUgJiYgdGhlbWUuYWN0aXZlLm9uLFxuICAgICAgICAhYWN0aXZlICYmICFkaXNhYmxlZCAmJiB0aGVtZS5hY3RpdmUub2ZmLFxuICAgICAgICB0aGVtZS5kaXNhYmxlZFtkaXNhYmxlZCA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICksXG4gICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICkgfSk7XG59O1xuXG5leHBvcnQgeyBOYXZiYXJMaW5rIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OYXZiYXJMaW5rLm1qcy5tYXBcbiIsIi8vIFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRFxuaW1wb3J0IHsgR2VuSWNvbiB9IGZyb20gJy4uL2xpYi9pbmRleC5tanMnO1xuZXhwb3J0IGZ1bmN0aW9uIEZhNTAwUHggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAzLjMgMzQ0LjNjLTYuNS0xNC4yLTYuOS0xOC4zIDcuNC0yMy4xIDI1LjYtOCA4IDkuMiA0My4yIDQ5LjJoLjN2LTkzLjljMS4yLTUwLjIgNDQtOTIuMiA5Ny43LTkyLjIgNTMuOSAwIDk3LjcgNDMuNSA5Ny43IDk2LjggMCA2My40LTYwLjggMTEzLjItMTI4LjUgOTMuMy0xMC41LTQuMi0yLjEtMzEuNyA4LjUtMjguNiA1MyAwIDg5LjQtMTAuMSA4OS40LTY0LjQgMC02MS03Ny4xLTg5LjYtMTE2LjktNDQuNi0yMy41IDI2LjQtMTcuNiA0Mi4xLTE3LjYgMTU3LjYgNTAuNyAzMSAxMTguMyAyMiAxNjAuNC0yMC4xIDI0LjgtMjQuOCAzOC41LTU4IDM4LjUtOTMgMC0zNS4yLTEzLjgtNjguMi0zOC44LTkzLjMtMjQuOC0yNC44LTU3LjgtMzguNS05My4zLTM4LjVzLTY4LjggMTMuOC05My41IDM4LjVjLS4zLjMtMTYgMTYuNS0yMS4yIDIzLjlsLS41LjZjLTMuMyA0LjctNi4zIDkuMS0yMC4xIDYuMS02LjktMS43LTE0LjMtNS44LTE0LjMtMTEuOFYyMGMwLTUgMy45LTEwLjUgMTAuNS0xMC41aDI0MS4zYzguMyAwIDguMyAxMS42IDguMyAxNS4xIDAgMy45IDAgMTUuMS04LjMgMTUuMUgxMzAuM3YxMzIuOWguM2MxMDQuMi0xMDkuOCAyODIuOC0zNiAyODIuOCAxMDguOSAwIDE3OC4xLTI0NC44IDIyMC4zLTMxMC4xIDYyLjh6bTYzLjMtMjYwLjhjLS41IDQuMiA0LjYgMjQuNSAxNC42IDIwLjZDMzA2IDU2LjYgMzg0IDE0NC41IDM5MC42IDE0NC41YzQuOCAwIDIyLjgtMTUuMyAxNC4zLTIyLjgtOTMuMi04OS0yMzQuNS01Ny0yMzguMy0zOC4yek0zOTMgNDE0LjdDMjgzIDUyNC42IDk0IDQ3NS41IDYxIDMxMC41YzAtMTIuMi0zMC40LTcuNC0yOC45IDMuMyAyNCAxNzMuNCAyNDYgMjU2LjkgMzgxLjYgMTIxLjMgNi45LTcuOC0xMi42LTI4LjQtMjAuNy0yMC40ek0yMTMuNiAzMDYuNmMwIDQgNC4zIDcuMyA1LjUgOC41IDMgMyA2LjEgNC40IDguNSA0LjQgMy44IDAgMi42LjIgMjIuMy0xOS41IDE5LjYgMTkuMyAxOS4xIDE5LjUgMjIuMyAxOS41IDUuNCAwIDE4LjUtMTAuNCAxMC43LTE4LjJMMjY1LjYgMjg0bDE4LjItMTguMmM2LjMtNi44LTEwLjEtMjEuOC0xNi4yLTE1LjdMMjQ5LjcgMjY4Yy0xOC42LTE4LjgtMTguNC0xOS41LTIxLjUtMTkuNS01IDAtMTggMTEuNy0xMi40IDE3LjNMMjM0IDI4NGMtMTguMSAxNy45LTIwLjQgMTkuMi0yMC40IDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFjY2Vzc2libGVJY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy45IDI1NS44TDQxMSA0MTMuMWMtMy4zIDQwLjctNjMuOSAzNS4xLTYwLjYtNC45bDEwLTEyMi41LTQxLjEgMi4zYzEwLjEgMjAuNyAxNS44IDQzLjkgMTUuOCA2OC41IDAgNDEuMi0xNi4xIDc4LjctNDIuMyAxMDYuNWwtMzkuMy0zOS4zYzU3LjktNjMuNyAxMy4xLTE2Ny4yLTc0LTE2Ny4yLTI1LjkgMC00OS41IDkuOS02Ny4yIDI2TDczIDI0My4yYzIyLTIwLjcgNTAuMS0zNS4xIDgxLjQtNDAuMmw3NS4zLTg1LjctNDIuNi0yNC44LTUxLjYgNDZjLTMwIDI2LjgtNzAuNi0xOC41LTQwLjUtNDUuNGw2OC02MC43YzkuOC04LjggMjQuMS0xMC4yIDM1LjUtMy42IDAgMCAxMzkuMyA4MC45IDEzOS41IDgxLjEgMTYuMiAxMC4xIDIwLjcgMzYgNi4xIDUyLjZMMjg1LjcgMjI5bDEwNi4xLTUuOWMxOC41LTEuMSAzMy42IDE0LjQgMzIuMSAzMi43em0tNjQuOS0xNTRjMjguMSAwIDUwLjktMjIuOCA1MC45LTUwLjlDNDA5LjkgMjIuOCAzODcuMSAwIDM1OSAwYy0yOC4xIDAtNTAuOSAyMi44LTUwLjkgNTAuOSAwIDI4LjEgMjIuOCA1MC45IDUwLjkgNTAuOXpNMTc5LjYgNDU2LjVjLTgwLjYgMC0xMjcuNC05MC42LTgyLjctMTU2LjFsLTM5LjctMzkuN0MzNi40IDI4NyAyNCAzMjAuMyAyNCAzNTYuNGMwIDEzMC43IDE1MC43IDIwMS40IDI1MS40IDEyMi41bC0zOS43LTM5LjdjLTE2IDEwLjktMzUuMyAxNy4zLTU2LjEgMTcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWNjdXNvZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIyLjEgMjUydi0xbC01MS4yLTY1LjhzLTEyIDEuNi0yNSAxNS4xYy05IDkuMy0yNDIuMSAyMzkuMS0yNDMuNCAyNDAuOS03IDEwIDEuNiA2LjggMTUuNyAxLjcuOCAwIDExNC41LTM2LjYgMTE0LjUtMzYuNi41LS42LS4xLS4xLjYtLjYtLjQtNS4xLS44LTI2LjItMS0yNy43LS42LTUuMiAyLjItNi45IDctOC45bDkyLjYtMzMuOGMuNi0uOCA4OC41LTgxLjcgOTAuMi04My4zem0xNjAuMSAxMjAuMWMxMy4zIDE2LjEgMjAuNyAxMy4zIDMwLjggOS4zIDMuMi0xLjIgMTE1LjQtNDcuNiAxMTcuOC00OC45IDgtNC4zLTEuNy0xNi43LTcuMi0yMy40LTIuMS0yLjUtMjA1LjEtMjQ1LjYtMjA3LjItMjQ4LjMtOS43LTEyLjItMTQuMy0xMi45LTM4LjQtMTIuOC0xMC4yIDAtMTA2LjguNS0xMTYuNS42LTE5LjIuMS0zMi45LS4zLTE5LjIgMTYuOUMyNTAgNzUgNDc2LjUgMzY1LjIgNDgyLjIgMzcyLjF6bTE1Mi43IDEuNmMtMi4zLS4zLTI0LjYtNC43LTM4LTcuMiAwIDAtMTE1IDUwLjQtMTE3LjUgNTEuNi0xNiA3LjMtMjYuOS0zLjItMzYuNy0xNC42bC01Ny4xLTc0Yy01LjQtLjktNjAuNC05LjYtNjUuMy05LjMtMy4xLjItOS42LjgtMTQuNCAyLjktNC45IDIuMS0xNDUuMiA1Mi44LTE1MC4yIDU0LjctNS4xIDItMTEuNCAzLjYtMTEuMSA3LjYuMiAyLjUgMiAyLjYgNC42IDMuNSAyLjcuOCAzMDAuOSA2Ny42IDMwOCA2OS4xIDE1LjYgMy4zIDM4LjUgMTAuNSA1My42IDEuNyAyLjEtMS4yIDEyMy44LTc2LjQgMTI1LjgtNzcuOCA1LjQtNCA0LjMtNi44LTEuNy04LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFjcXVpc2l0aW9uc0luY29ycG9yYXRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTcuNDUgNDY4LjJjLTEuMi03LjctMS4zLTcuNi05LjYtNy42LTk5LjguMi0xMTEuOC0yLjQtMTEyLjctMi42LTEyLjMtMS43LTIwLjYtMTAuNS0yMS0yMy4xLS4xLTEuNi0uMi03MS42LTEtMTI5LjEtLjEtNC43IDEuNi02LjQgNS45LTcuNSAxMi41LTMgMjQuOS02LjEgMzcuMy05LjcgNC4zLTEuMyA2LjgtLjIgOC40IDMuNSA0LjUgMTAuMyA4LjggMjAuNiAxMy4yIDMwLjkgMS42IDMuNy4xIDQuNC0zLjQgNC40LTEwLS4yLTIwLS4xLTMwLjQtLjF2MjdoMTE2Yy0xLjQtOS41LTIuNy0xOC4xLTQtMjcuNS03IDAtMTMuOC40LTIwLjQtLjEtMjIuNi0xLjYtMTguMy00LjQtODQtMTU4LjYtOC44LTIwLjEtMjcuOS02Mi4xLTM2LjUtODkuMi00LjQtMTQgNS41LTI1LjQgMTguOS0yNi42IDE4LjYtMS43IDM3LjUtMS42IDU2LjItMiAyMC42LS40IDQxLjItLjQgNjEuOC0uNSAzLjEgMCA0LTEuNCA0LjMtNC4zIDEuMi05LjggMi43LTE5LjUgNC0yOS4yLjgtNS4zIDEuNi0xMC43IDIuNC0xNi4xTDIzLjc1IDBjLTMuNiAwLTUuMyAxLjEtNC42IDUuMyAyLjIgMTMuMi0uOC44IDYuNCA0NS4zIDYzLjQgMCA3MS44LjkgMTAxLjguNSAxMi4zLS4yIDM3IDMuNSAzNy43IDIyLjEuNCAxMS40LTEuMSAxMS4zLTMyLjYgODcuNC01My44IDEyOS44LTUwLjcgMTIwLjMtNjcuMyAxNjEtMS43IDQuMS0zLjYgNS4yLTcuNiA1LjItOC41LS4yLTE3LS4zLTI1LjQuMS0xLjkuMS01LjIgMS44LTUuNSAzLjItMS41IDguMS0yLjIgMTYuMy0zLjIgMjQuOWgxMTQuM3YtMjcuNmMtNi45IDAtMzMuNS40LTM1LjMtMi45IDUuMy0xMi4zIDEwLjQtMjQuNCAxNS43LTM2LjcgMTYuMyA0IDMxLjkgNy44IDQ3LjYgMTEuNyAzLjQuOSA0LjYgMyA0LjYgNi44LS4xIDQyLjkuMSA4NS45LjIgMTI4LjggMCAxMC4yLTUuNSAxOS4xLTE0LjkgMjMuMS02LjUgMi43LTMuMyAzLjQtMTIxLjQgMi40LTUuMyAwLTcuMSAyLTcuNiA2LjgtMS41IDEyLjktMi45IDI1LjktNSAzOC44LS44IDUgMS4zIDUuNyA1LjMgNS43IDE4My4yLjYtMzAuNyAwIDMzNy4xIDAtMi41LTE1LTQuNC0yOS40LTYuNi00My43em0tMTc0LjktMjA1LjdjLTEzLjMtNC4yLTI2LjYtOC4yLTM5LjktMTIuNWE0NC41MyA0NC41MyAwIDAgMS01LjgtMi45YzE3LjItNDQuMyAzNC4yLTg4LjEgNTEuMy0xMzIuMSA3LjUgMi40IDcuOS0uOCA5LjQgMCA5LjMgMjIuNSAxOC4xIDYwLjEgMjcgODIuOCA2LjYgMTYuNyAxMyAzMy41IDE5LjcgNTAuOWEzNS43OCAzNS43OCAwIDAgMS0zLjkgMi4xYy0xMy4xIDMuOS0yNi40IDcuNS0zOS40IDExLjdhMjcuNjYgMjcuNjYgMCAwIDEtMTguNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZG4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDE2Ny41bDY0LjkgOTguOEgxODMuMWw2NC45LTk4Ljh6TTQ5NiAyNTZjMCAxMzYuOS0xMTEuMSAyNDgtMjQ4IDI0OFMwIDM5Mi45IDAgMjU2IDExMS4xIDggMjQ4IDhzMjQ4IDExMS4xIDI0OCAyNDh6bS05OS44IDgyLjdMMjQ4IDExNS41IDk5LjggMzM4LjdoMzAuNGwzMy42LTUxLjdoMTY4LjZsMzMuNiA1MS43aDMwLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkdmVyc2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Mi4xIDMySDI4LjdDNS44IDMyIDAgMzcuOSAwIDYwLjl2MzkwLjJDMCA0NzQuNCA1LjggNDgwIDI4LjcgNDgwaDQ1My40YzI0LjQgMCAyOS45LTUuMiAyOS45LTI5LjdWNjIuMmMwLTI0LjYtNS40LTMwLjItMjkuOS0zMC4yek0xNzguNCAyMjAuM2MtMjcuNS0yMC4yLTcyLjEtOC43LTg0LjIgMjMuNC00LjMgMTEuMS05LjMgOS41LTE3LjUgOC4zLTkuNy0xLjUtMTcuMi0zLjItMjIuNS01LjUtMjguOC0xMS40IDguNi01NS4zIDI0LjktNjQuMyA0MS4xLTIxLjQgODMuNC0yMi4yIDEyNS4zLTQuOCA0MC45IDE2LjggMzQuNSA1OS4yIDM0LjUgMTI4LjUgMi43IDI1LjgtNC4zIDU4LjMgOS4zIDg4LjggMS45IDQuNC40IDcuOS0yLjcgMTAuNy04LjQgNi43LTM5LjMgMi4yLTQ2LjYtNy40LTEuOS0yLjItMS44LTMuNi0zLjktNi4yLTMuNi0zLjktNy4zLTIuMi0xMS45IDEtNTcuNCAzNi40LTE0MC4zIDIxLjQtMTQ3LTQzLjMtMy4xLTI5LjMgMTIuNC01Ny4xIDM5LjYtNzEgMzguMi0xOS41IDExMi4yLTExLjggMTE0LTMwLjkgMS4xLTEwLjItMS45LTIwLjEtMTEuMy0yNy4zem0yODYuNyAyMjJjMCAxNS4xLTExLjEgOS45LTE3LjggOS45SDUyLjRjLTcuNCAwLTE4LjIgNC44LTE3LjgtMTAuNy40LTEzLjkgMTAuNS05LjEgMTcuMS05LjEgMTMyLjMtLjQgMjY0LjUtLjQgMzk2LjggMCA2LjggMCAxNi42LTQuNCAxNi42IDkuOXptMy44LTM0MC41djI5MWMwIDUuNy0uNyAxMy45LTguMSAxMy45LTEyLjQtLjQtMjcuNSA3LjEtMzYuMS01LjYtNS44LTguNy03LjgtNC0xMi40LTEuMi01My40IDI5LjctMTI4LjEgNy4xLTE0NC40LTg1LjItNi4xLTMzLjQtLjctNjcuMSAxNS43LTEwMCAxMS44LTIzLjkgNTYuOS03Ni4xIDEzNi4xLTMwLjV2LTcxYzAtMjYuMi0uMS0yNi4yIDI2LTI2LjIgMy4xIDAgNi42LjQgOS43IDAgMTAuMS0uOCAxMy42IDQuNCAxMy42IDE0LjMtLjEuMi0uMS4zLS4xLjV6bS01MS41IDIzMi4zYy0xOS41IDQ3LjYtNzIuOSA0My4zLTkwIDUuMi0xNS4xLTMzLjMtMTUuNS02OC4yLjQtMTAxLjUgMTYuMy0zNC4xIDU5LjctMzUuNyA4MS41LTQuOCAyMC42IDI4LjggMTQuOSA4NC42IDguMSAxMDEuMXptLTI5NC44IDM1LjNjLTcuNS0xLjMtMzMtMy4zLTMzLjctMjcuOC0uNC0xMy45IDcuOC0yMyAxOS44LTI1LjggMjQuNC01LjkgNDkuMy05LjkgNzMuNy0xNC43IDguOS0yIDcuNCA0LjQgNy44IDkuNSAxLjQgMzMtMjYuMSA1OS4yLTY3LjYgNTguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWZmaWxpYXRldGhlbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU5LjcgMjM3LjRDMTA4LjQgMzA4LjMgNDMuMSAzNDguMiAxNCAzMjYuNi0xNS4yIDMwNC45IDIuOCAyMzAgNTQuMiAxNTkuMWM1MS4zLTcwLjkgMTE2LjYtMTEwLjggMTQ1LjctODkuMiAyOS4xIDIxLjYgMTEuMSA5Ni42LTQwLjIgMTY3LjV6bTM1MS4yLTU3LjNDNDM3LjEgMzAzLjUgMzE5IDM2Ny44IDI0Ni40IDMyMy43Yy0yNS0xNS4yLTQxLjMtNDEuMi00OS03My44LTMzLjYgNjQuOC05Mi44IDExMy44LTE2NC4xIDEzMy4yIDQ5LjggNTkuMyAxMjQuMSA5Ni45IDIwNyA5Ni45IDE1MCAwIDI3MS42LTEyMy4xIDI3MS42LTI3NC45LjEtOC41LS4zLTE2LjgtMS0yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWlyYm5iIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAzNzMuMTJjLTI1LjI0LTMxLjY3LTQwLjA4LTU5LjQzLTQ1LTgzLjE4LTIyLjU1LTg4IDExMi42MS04OCA5MC4wNiAwLTUuNDUgMjQuMjUtMjAuMjkgNTItNDUgODMuMTh6bTEzOC4xNSA3My4yM2MtNDIuMDYgMTguMzEtODMuNjctMTAuODgtMTE5LjMtNTAuNDcgMTAzLjktMTMwLjA3IDQ2LjExLTIwMC0xOC44NS0yMDAtNTQuOTIgMC04NS4xNiA0Ni41MS03My4yOCAxMDAuNSA2LjkzIDI5LjE5IDI1LjIzIDYyLjM5IDU0LjQzIDk5LjUtMzIuNTMgMzYuMDUtNjAuNTUgNTIuNjktODUuMTUgNTQuOTItNTAgNy40My04OS4xMS00MS4wNi03MS4zLTkxLjA5IDE1LjEtMzkuMTYgMTExLjcyLTIzMS4xOCAxMTUuODctMjQxLjU2IDE1Ljc1LTMwLjA3IDI1LjU2LTU3LjQgNTkuMzgtNTcuNCAzMi4zNCAwIDQzLjQgMjUuOTQgNjAuMzcgNTkuODcgMzYgNzAuNjIgODkuMzUgMTc3LjQ4IDExNC44NCAyMzkuMDkgMTMuMTcgMzMuMDctMS4zNyA3MS4yOS0zNy4wMSA4Ni42NHptNDctMTM2LjEyQzI4MC4yNyAzNS45MyAyNzMuMTMgMzIgMjI0IDMyYy00NS41MiAwLTY0Ljg3IDMxLjY3LTg0LjY2IDcyLjc5QzMzLjE4IDMxNy4xIDIyLjg5IDM0Ny4xOSAyMiAzNDkuODEtMy4yMiA0MTkuMTQgNDguNzQgNDgwIDExMS42MyA0ODBjMjEuNzEgMCA2MC42MS02LjA2IDExMi4zNy02Mi40IDU4LjY4IDYzLjc4IDEwMS4yNiA2Mi40IDExMi4zNyA2Mi40IDYyLjg5LjA1IDExNC44NS02MC44NiA4OS42MS0xMzAuMTkuMDItMy44OS0xNi44Mi0zOC45LTE2LjgyLTM5LjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGdvbGlhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyOS4zIDE4Mi42Yy00OS4zIDAtODkuMiAzOS45LTg5LjIgODkuMiAwIDQ5LjMgMzkuOSA4OS4yIDg5LjIgODkuMnM4OS4yLTM5LjkgODkuMi04OS4yYzAtNDkuMy00MC04OS4yLTg5LjItODkuMnptNjIuNyA1Ni42bC01OC45IDMwLjZjLTEuOC45LTMuOC0uNC0zLjgtMi4zVjIwMWMwLTEuNSAxLjMtMi43IDIuNy0yLjYgMjYuMiAxIDQ4LjkgMTUuNyA2MS4xIDM3LjEuNyAxLjMuMiAzLTEuMSAzLjd6TTM4OS4xIDMySDU4LjlDMjYuNCAzMiAwIDU4LjQgMCA5MC45VjQyMWMwIDMyLjYgMjYuNCA1OSA1OC45IDU5SDM4OWMzMi42IDAgNTguOS0yNi40IDU4LjktNTguOVY5MC45QzQ0OCA1OC40IDQyMS42IDMyIDM4OS4xIDMyem0tMjAyLjYgODQuN2MwLTEwLjggOC43LTE5LjUgMTkuNS0xOS41aDQ1LjNjMTAuOCAwIDE5LjUgOC43IDE5LjUgMTkuNXYxNS40YzAgMS44LTEuNyAzLTMuMyAyLjUtMTIuMy0zLjQtMjUuMS01LjEtMzguMS01LjEtMTMuNSAwLTI2LjcgMS44LTM5LjQgNS41LTEuNy41LTMuNC0uOC0zLjQtMi41di0xNS44em0tODQuNCAzN2w5LjItOS4yYzcuNi03LjYgMTkuOS03LjYgMjcuNSAwbDcuNyA3LjdjMS4xIDEuMSAxIDMtLjMgNC02LjIgNC41LTEyLjEgOS40LTE3LjYgMTQuOS01LjQgNS40LTEwLjQgMTEuMy0xNC44IDE3LjQtMSAxLjMtMi45IDEuNS00IC4zbC03LjctNy43Yy03LjYtNy41LTcuNi0xOS44IDAtMjcuNHptMTI3LjIgMjQ0LjhjLTcwIDAtMTI2LjYtNTYuNy0xMjYuNi0xMjYuNnM1Ni43LTEyNi42IDEyNi42LTEyNi42YzcwIDAgMTI2LjYgNTYuNiAxMjYuNiAxMjYuNiAwIDY5LjgtNTYuNyAxMjYuNi0xMjYuNiAxMjYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpcGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny43NCAzMkg3MC4yNkMzMS40MSAzMiAwIDYzLjQxIDAgMTAyLjI2djMwNy40OEMwIDQ0OC41OSAzMS40MSA0ODAgNzAuMjYgNDgwaDMwNy40OGMzOC41MiAwIDY5Ljc2LTMxLjA4IDcwLjI2LTY5LjYtNDUuOTYtMjUuNjItMTEwLjU5LTYwLjM0LTE3MS42LTg4LjQ0LTMyLjA3IDQzLjk3LTg0LjE0IDgxLTE0OC42MiA4MS03MC41OSAwLTkzLjczLTQ1LjMtOTcuMDQtNzYuMzctMy45Ny0zOS4wMSAxNC44OC04MS41IDk5LjUyLTgxLjUgMzUuMzggMCA3OS4zNSAxMC4yNSAxMjcuMTMgMjQuOTYgMTYuNTMtMzAuMDkgMjYuNDUtNjAuMzQgMjYuNDUtNjAuMzRoLTE3OC4ydi0xNi43aDkyLjA4di0zMS4yNEg4OC4yOHYtMTkuMDFoMTA5LjQ0VjkyLjM0aDUwLjkydjUwLjQyaDEwOS40NHYxOS4wMUgyNDguNjN2MzEuMjRoODguNzdzLTE1LjIxIDQ2LjYyLTM4LjM1IDkwLjkyYzQ4LjkzIDE2LjcgMTAwLjAxIDM2LjA0IDE0OC42MiA1Mi43NFYxMDIuMjZDNDQ3LjgzIDYzLjU3IDQxNi40MyAzMiAzNzcuNzQgMzJ6TTQ3LjI4IDMyMi45NWMuOTkgMjAuMTcgMTAuMjUgNTMuNzMgNjkuOTMgNTMuNzMgNTIuMDcgMCA5Mi41OC0zOS42OCAxMTcuODctNzIuOS00NC42My0xOC42OC04NC40OC0zMS40MS0xMDkuNDQtMzEuNDEtNjcuNDUgMC03OS4zNSAzMy4wNi03OC4zNiA1MC41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDMyNS4zYzIuMy00LjIgNS4yLTQuOSA5LjctMi41IDEwLjQgNS42IDIwLjYgMTEuNCAzMS4yIDE2LjdhNTk1Ljg4IDU5NS44OCAwIDAgMCAxMjcuNCA0Ni4zIDYxNi42MSA2MTYuNjEgMCAwIDAgNjMuMiAxMS44IDYwMy4zMyA2MDMuMzMgMCAwIDAgOTUgNS4yYzE3LjQtLjQgMzQuOC0xLjggNTIuMS0zLjhhNjAzLjY2IDYwMy42NiAwIDAgMCAxNjMuMy00Mi44YzIuOS0xLjIgNS45LTIgOS4xLTEuMiA2LjcgMS44IDkgOSA0LjEgMTMuOWE3MCA3MCAwIDAgMS05LjYgNy40Yy0zMC43IDIxLjEtNjQuMiAzNi40LTk5LjYgNDcuOWE0NzMuMzEgNDczLjMxIDAgMCAxLTc1LjEgMTcuNiA0MzEgNDMxIDAgMCAxLTUzLjIgNC44IDIxLjMgMjEuMyAwIDAgMC0yLjUuM0gzMDhhMjEuMyAyMS4zIDAgMCAwLTIuNS0uM2MtMy42LS4yLTcuMi0uMy0xMC43LS40YTQyNi4zIDQyNi4zIDAgMCAxLTUwLjQtNS4zQTQ0OC40IDQ0OC40IDAgMCAxIDE2NCA0MjBhNDQzLjMzIDQ0My4zMyAwIDAgMS0xNDUuNi04N2MtMS44LTEuNi0zLTMuOC00LjQtNS43ek0xNzIgNjUuMWwtNC4zLjZhODAuOTIgODAuOTIgMCAwIDAtMzggMTUuMWMtMi40IDEuNy00LjYgMy41LTcuMSA1LjRhNC4yOSA0LjI5IDAgMCAxLS40LTEuNGMtLjQtMi43LS44LTUuNS0xLjMtOC4yLS43LTQuNi0zLTYuNi03LjYtNi42aC0xMS41Yy02LjkgMC04LjIgMS4zLTguMiA4LjJ2MjA5LjNjMCAxIDAgMiAuMSAzIC4yIDMgMiA0LjkgNC45IDUgNyAuMSAxNC4xLjEgMjEuMSAwIDIuOSAwIDQuNy0yIDUtNSAuMS0xIC4xLTIgLjEtM3YtNzIuNGMxLjEuOSAxLjcgMS40IDIuMiAxLjkgMTcuOSAxNC45IDM4LjUgMTkuOCA2MSAxNS40IDIwLjQtNCAzNC42LTE2LjUgNDMuOC0zNC45IDctMTMuOSA5LjktMjguNyAxMC4zLTQ0LjEuNS0xNy4xLTEuMi0zMy45LTguMS00OS44LTguNS0xOS42LTIyLjYtMzIuNS00My45LTM2LjktMy4yLS43LTYuNS0xLTkuOC0xLjUtMi44LS4xLTUuNS0uMS04LjMtLjF6TTEyNC42IDEwN2EzLjQ4IDMuNDggMCAwIDEgMS43LTMuM2MxMy43LTkuNSAyOC44LTE0LjUgNDUuNi0xMy4yIDE0LjkgMS4xIDI3LjEgOC40IDMzLjUgMjUuOSAzLjkgMTAuNyA0LjkgMjEuOCA0LjkgMzMgMCAxMC40LS44IDIwLjYtNCAzMC42LTYuOCAyMS4zLTIyLjQgMjkuNC00Mi42IDI4LjUtMTQtLjYtMjYuMi02LTM3LjQtMTMuOWEzLjU3IDMuNTcgMCAwIDEtMS43LTMuM2MuMS0xNC4xIDAtMjguMSAwLTQyLjJzLjEtMjggMC00Mi4xem0yMDUuNy00MS45Yy0xIC4xLTIgLjMtMi45LjRhMTQ4IDE0OCAwIDAgMC0yOC45IDQuMWMtNi4xIDEuNi0xMiAzLjgtMTcuOSA1LjgtMy42IDEuMi01LjQgMy44LTUuMyA3LjcuMSAzLjMtLjEgNi42IDAgOS45LjEgNC44IDIuMSA2LjEgNi44IDQuOSA3LjgtMiAxNS42LTQuMiAyMy41LTUuNyAxMi4zLTIuMyAyNC43LTMuMyAzNy4yLTEuNCA2LjUgMSAxMi42IDIuOSAxNi44IDguNCAzLjcgNC44IDUuMSAxMC41IDUuMyAxNi40LjMgOC4zLjIgMTYuNi4zIDI0LjlhNy44NCA3Ljg0IDAgMCAxLS4yIDEuNGMtLjUtLjEtLjkgMC0xLjMtLjFhMTgwLjU2IDE4MC41NiAwIDAgMC0zMi00LjljLTExLjMtLjYtMjIuNS4xLTMzLjMgMy45LTEyLjkgNC41LTIzLjMgMTIuMy0yOS40IDI0LjktNC43IDkuOC01LjQgMjAuMi0zLjkgMzAuNyAyIDE0IDkgMjQuOCAyMS40IDMxLjcgMTEuOSA2LjYgMjQuOCA3LjQgMzcuOSA1LjQgMTUuMS0yLjMgMjguNS04LjcgNDAuMy0xOC40YTcuMzYgNy4zNiAwIDAgMSAxLjYtMS4xYy42IDMuOCAxLjEgNy40IDEuOCAxMSAuNiAzLjEgMi41IDUuMSA1LjQgNS4yIDUuNC4xIDEwLjkuMSAxNi4zIDBhNC44NCA0Ljg0IDAgMCAwIDQuOC00LjcgMjYuMiAyNi4yIDAgMCAwIC4xLTIuOHYtMTA2YTgwIDgwIDAgMCAwLS45LTEyLjljLTEuOS0xMi45LTcuNC0yMy41LTE5LTMwLjQtNi43LTQtMTQuMS02LTIxLjgtNy4xLTMuNi0uNS03LjItLjgtMTAuOC0xLjMtMy45LjEtNy45LjEtMTEuOS4xem0zNSAxMjcuN2EzLjMzIDMuMzMgMCAwIDEtMS41IDNjLTExLjIgOC4xLTIzLjUgMTMuNS0zNy40IDE0LjktNS43LjYtMTEuNC40LTE2LjgtMS44YTIwLjA4IDIwLjA4IDAgMCAxLTEyLjQtMTMuMyAzMi45IDMyLjkgMCAwIDEtLjEtMTkuNGMyLjUtOC4zIDguNC0xMyAxNi40LTE1LjZhNjEuMzMgNjEuMzMgMCAwIDEgMjQuOC0yLjJjOC40LjcgMTYuNiAyLjMgMjUgMy40IDEuNi4yIDIuMSAxIDIuMSAyLjYtLjEgNC44IDAgOS41IDAgMTQuM3MtLjIgOS40LS4xIDE0LjF6bTI1OS45IDEyOS40Yy0xLTUtNC44LTYuOS05LjEtOC4zYTg4LjQyIDg4LjQyIDAgMCAwLTIxLTMuOSAxNDcuMzIgMTQ3LjMyIDAgMCAwLTM5LjIgMS45Yy0xNC4zIDIuNy0yNy45IDcuMy00MCAxNS42YTEzLjc1IDEzLjc1IDAgMCAwLTMuNyAzLjUgNS4xMSA1LjExIDAgMCAwLS41IDRjLjQgMS41IDIuMSAxLjkgMy42IDEuOGExNi4yIDE2LjIgMCAwIDAgMi4yLS4xYzcuOC0uOCAxNS41LTEuNyAyMy4zLTIuNSAxMS40LTEuMSAyMi45LTEuOCAzNC4zLS45YTcxLjY0IDcxLjY0IDAgMCAxIDE0LjQgMi43YzUuMSAxLjQgNy40IDUuMiA3LjYgMTAuNC40IDgtMS40IDE1LjctMy41IDIzLjMtNC4xIDE1LjQtMTAgMzAuMy0xNS44IDQ1LjFhMTcuNiAxNy42IDAgMCAwLTEgM2MtLjUgMi45IDEuMiA0LjggNC4xIDQuMWExMC41NiAxMC41NiAwIDAgMCA0LjgtMi41IDE0NS45MSAxNDUuOTEgMCAwIDAgMTIuNy0xMy40YzEyLjgtMTYuNCAyMC4zLTM1LjMgMjQuNy01NS42LjgtMy42IDEuNC03LjMgMi4xLTEwLjl2LTE3LjN6TTQ5My4xIDE5OXEtMTkuMzUtNTMuNTUtMzguNy0xMDcuMmMtMi01LjctNC4yLTExLjMtNi4zLTE2LjktMS4xLTIuOS0zLjItNC44LTYuNC00LjgtNy42LS4xLTE1LjItLjItMjIuOS0uMS0yLjUgMC0zLjcgMi0zLjIgNC41YTQzLjEgNDMuMSAwIDAgMCAxLjkgNi4xcTI5LjQgNzIuNzUgNTkuMSAxNDUuNWMxLjcgNC4xIDIuMSA3LjYuMiAxMS44LTMuMyA3LjMtNS45IDE1LTkuMyAyMi4zLTMgNi41LTggMTEuNC0xNS4yIDEzLjNhNDIuMTMgNDIuMTMgMCAwIDEtMTUuNCAxLjFjLTIuNS0uMi01LS44LTcuNS0xLTMuNC0uMi01LjEgMS4zLTUuMiA0LjhxLS4xNSA1IDAgOS45Yy4xIDUuNSAyIDggNy40IDguOWExMDguMTggMTA4LjE4IDAgMCAwIDE2LjkgMmMxNy4xLjQgMzAuNy02LjUgMzkuNS0yMS40YTEzMS42MyAxMzEuNjMgMCAwIDAgOS4yLTE4LjRxMzUuNTUtODkuNyA3MC42LTE3OS42YTI2LjYyIDI2LjYyIDAgMCAwIDEuNi01LjVjLjQtMi44LS45LTQuNC0zLjctNC40LTYuNi0uMS0xMy4zIDAtMTkuOSAwYTcuNTQgNy41NCAwIDAgMC03LjcgNS4yYy0uNSAxLjQtMS4xIDIuNy0xLjYgNC4xbC0zNC44IDEwMGMtMi41IDcuMi01LjEgMTQuNS03LjcgMjIuMi0uNC0xLjEtLjYtMS43LS45LTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ny4yIDE2Mi43Yy00OC43IDEuOC0xNjkuNSAxNS41LTE2OS41IDExNy41IDAgMTA5LjUgMTM4LjMgMTE0IDE4My41IDQzLjIgNi41IDEwLjIgMzUuNCAzNy41IDQ1LjMgNDYuOGw1Ni44LTU2UzM0MSAyODguOSAzNDEgMjYxLjRWMTE0LjNDMzQxIDg5IDMxNi41IDMyIDIyOC43IDMyIDE0MC43IDMyIDk0IDg3IDk0IDEzNi4zbDczLjUgNi44YzE2LjMtNDkuNSA1NC4yLTQ5LjUgNTQuMi00OS41IDQwLjctLjEgMzUuNSAyOS44IDM1LjUgNjkuMXptMCA4Ni44YzAgODAtODQuMiA2OC04NC4yIDE3LjIgMC00Ny4yIDUwLjUtNTYuNyA4NC4yLTU3Ljh2NDAuNnptMTM2IDE2My41Yy03LjcgMTAtNzAgNjctMTc0LjUgNjdTMzQuMiA0MDguNSA5LjcgMzc5Yy02LjgtNy43IDEtMTEuMyA1LjUtOC4zQzg4LjUgNDE1LjIgMjAzIDQ4OC41IDM4Ny43IDQwMWM3LjUtMy43IDEzLjMgMiA1LjUgMTJ6bTM5LjggMi4yYy02LjUgMTUuOC0xNiAyNi44LTIxLjIgMzEtNS41IDQuNS05LjUgMi43LTYuNS0zLjhzMTkuMy00Ni41IDEyLjctNTVjLTYuNS04LjMtMzctNC4zLTQ4LTMuMi0xMC44IDEtMTMgMi0xNC0uMy0yLjMtNS43IDIxLjctMTUuNSAzNy41LTE3LjUgMTUuNy0xLjggNDEtLjggNDYgNS43IDMuNyA1LjEgMCAyNy4xLTYuNSA0My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWlsaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjEgMzJjLTYxLjkgMC0xMzEuNSAxNi45LTE4NC4yIDU1LjQtNS4xIDMuMS05LjEgOS4yLTcuMiAxOS40IDEuMSA1LjEgNS4xIDI3LjQgMTAuMiAzOS42IDQuMSAxMC4yIDE0LjIgMTAuMiAyMC4zIDYuMSAzMi41LTIyLjMgOTYuNS00Ny43IDE1Mi4zLTQ3LjcgNTcuOSAwIDU4LjkgMjguNCA1OC45IDczLjF2MzguNUMyMDMgMjI3LjcgNzguMiAyNTEgNDYuNyAyNjQuMiAxMS4yIDI4MC41IDE2LjMgMzU3LjcgMTYuMyAzNzZzMTUuMiAxMDQgMTI0LjkgMTA0YzQ3LjggMCAxMTMuNy0yMC43IDE1My4zLTQyLjF2MjUuNGMwIDMgMi4xIDguMiA2LjEgOS4xIDMuMSAxIDUwLjcgMiA1OS45IDJzNjIuNS4zIDY2LjUtLjdjNC4xLTEgNS4xLTYuMSA1LjEtOS4xVjE2OGMtLjEtODAuMy01Ny45LTEzNi0xOTItMTM2em01MC4yIDM0OGMtMjEuNCAxMy4yLTQ4LjcgMjQuNC03OS4xIDI0LjQtNTIuOCAwLTU4LjktMzMuNS01OS00NC43IDAtMTIuMi0zLTQyLjcgMTguMy01Mi45IDI0LjMtMTMuMiA3NS4xLTI5LjQgMTE5LjgtMzMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjAuNTUsMzAxLjkzYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bS0yNjUuMSwwYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bTI3My43LTE0NC40OCw0Ny45NC04M2ExMCwxMCwwLDEsMC0xNy4yNy0xMGgwbC00OC41NCw4NC4wN2EzMDEuMjUsMzAxLjI1LDAsMCwwLTI0Ni41NiwwTDExNi4xOCw2NC40NWExMCwxMCwwLDEsMC0xNy4yNywxMGgwbDQ3Ljk0LDgzQzY0LjUzLDIwMi4yMiw4LjI0LDI4NS41NSwwLDM4NEg1NzZjLTguMjQtOTguNDUtNjQuNTQtMTgxLjc4LTE0Ni44NS0yMjYuNTVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nZWxsaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ny4xIDIxNS40YzExLjctMzIuNiA0NS40LTEyNi45IDQ1LjQtMTU3LjEgMC0yNi42LTE1LjctNDguOS00My43LTQ4LjktNDQuNiAwLTg0LjYgMTMxLjctOTcuMSAxNjMuMUMyNDIgMTQ0IDE5Ni42IDAgMTU2LjYgMGMtMzEuMSAwLTQ1LjcgMjIuOS00NS43IDUxLjcgMCAzNS4zIDM0LjIgMTI2LjggNDYuNiAxNjItNi4zLTIuMy0xMy4xLTQuMy0yMC00LjMtMjMuNCAwLTQ4LjMgMjkuMS00OC4zIDUyLjYgMCA4LjkgNC45IDIxLjQgOCAyOS43LTM2LjkgMTAtNTEuMSAzNC42LTUxLjEgNzEuN0M0NiA0MzUuNiAxMTQuNCA1MTIgMjEwLjYgNTEyYzExOCAwIDE5MS40LTg4LjYgMTkxLjQtMjAyLjkgMC00My4xLTYuOS04Mi01NC45LTkzLjd6TTMxMS43IDEwOGM0LTEyLjMgMjEuMS02NC4zIDM3LjEtNjQuMyA4LjYgMCAxMC45IDguOSAxMC45IDE2IDAgMTkuMS0zOC42IDEyNC42LTQ3LjEgMTQ4bC0zNC02IDMzLjEtOTMuN3pNMTQyLjMgNDguM2MwLTExLjkgMTQuNS00NS43IDQ2LjMgNDcuMWwzNC42IDEwMC4zYy0xNS42LTEuMy0yNy43LTMtMzUuNCAxLjQtMTAuOS0yOC44LTQ1LjUtMTE5LjctNDUuNS0xNDguOHpNMTQwIDI0NGMyOS4zIDAgNjcuMSA5NC42IDY3LjEgMTA3LjQgMCA1LjEtNC45IDExLjQtMTAuNiAxMS40LTIwLjkgMC03Ni45LTc2LjktNzYuOS05Ny43LjEtNy43IDEyLjctMjEuMSAyMC40LTIxLjF6bTE4NC4zIDE4Ni4zYy0yOS4xIDMyLTY2LjMgNDguNi0xMDkuNyA0OC42LTU5LjQgMC0xMDYuMy0zMi42LTEyOC45LTg4LjMtMTcuMS00My40IDMuOC02OC4zIDIwLjYtNjguMyAxMS40IDAgNTQuMyA2MC4zIDU0LjMgNzMuMSAwIDQuOS03LjcgOC4zLTExLjcgOC4zLTE2LjEgMC0yMi40LTE1LjUtNTEuMS01MS40LTI5LjcgMjkuNyAyMC41IDg2LjkgNTguMyA4Ni45IDI2LjEgMCA0My4xLTI0LjIgMzgtNDIgMy43IDAgOC4zLjMgMTEuNy0uNiAxLjEgMjcuMSA5LjEgNTkuNCA0MS43IDYxLjcgMC0uOSAyLTcuMSAyLTcuNCAwLTE3LjQtMTAuNi0zMi42LTEwLjYtNTAuMyAwLTI4LjMgMjEuNy01NS43IDQzLjctNzEuNyA4LTYgMTcuNy05LjcgMjcuMS0xMy4xIDkuNy0zLjcgMjAtOCAyNy40LTE1LjQtMS4xLTExLjItNS43LTIxLjEtMTYuOS0yMS4xLTI3LjcgMC0xMjAuNiA0LTEyMC42LTM5LjcgMC02LjcuMS0xMy4xIDE3LjQtMTMuMSAzMi4zIDAgMTE0LjMgOCAxMzguMyAyOS4xIDE4LjEgMTYuMSAyNC4zIDExMy4yLTMxIDE3NC43em0tOTguNi0xMjZjOS43IDMuMSAxOS43IDQgMjkuNyA2LTcuNCA1LjQtMTQgMTItMjAuMyAxOS4xLTIuOC04LjUtNi4yLTE2LjgtOS40LTI1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3J5Y3JlYXRpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDIzOC4ybC0zLjIgMjguMi0zNC41IDIuMy0yIDE4LjEgMzQuNS0yLjMtMy4yIDI4LjItMzQuNCAyLjItMi4zIDIwLjEgMzQuNC0yLjItMyAyNi4xLTY0LjcgNC4xIDEyLjctMTEzLjJMNTI3IDM2NS4ybC0zMS45IDItMjMuOC0xMTcuOCAzMC4zLTIgMTMuNiA3OS40IDMxLjctODIuNCA5My4xLTYuMnpNNDI2LjggMzcxLjVsMjguMy0xLjhMNDY4IDI0OS42bC0yOC40IDEuOS0xMi44IDEyMHpNMTYyIDM4OC4xbC0xOS40LTM2LTMuNSAzNy40LTI4LjIgMS43IDIuNy0yOS4xYy0xMSAxOC0zMiAzNC4zLTU2LjkgMzUuOEMyMy45IDM5OS45LTMgMzc3IC4zIDMzOS43YzIuNi0yOS4zIDI2LjctNjIuOCA2Ny41LTY1LjQgMzcuNy0yLjQgNDcuNiAyMy4yIDUxLjMgMjguOGwyLjgtMzAuOCAzOC45LTIuNWMyMC4xLTEuMyAzOC43IDMuNyA0Mi41IDIzLjdsMi42LTI2LjYgNjQuOC00LjItMi43IDI3LjktMzYuNCAyLjQtMS43IDE3LjkgMzYuNC0yLjMtMi43IDI3LjktMzYuNCAyLjMtMS45IDE5LjkgMzYuMy0yLjMtMi4xIDIwLjggNTUtMTE3LjIgMjMuOC0xLjZMMzcwLjQgMzY5bDguOS04NS42LTIyLjMgMS40IDIuOS0yNy45IDc1LTQuOS0zIDI4LTI0LjMgMS42LTkuNyA5MS45LTU4IDMuNy00LjMtMTUuNi0zOS40IDIuNS04IDE2LjMtMTI2LjIgNy43em0tNDQuMy03MC4ybC0yNi40IDEuN0M4NC42IDMwNy4yIDc2LjkgMzAzIDY1IDMwMy44Yy0xOSAxLjItMzMuMyAxNy41LTM0LjYgMzMuMy0xLjQgMTYgNy4zIDMyLjUgMjguNyAzMS4yIDEyLjgtLjggMjEuMy04LjYgMjguOS0xOC45bDI3LTEuNyAyLjctMjkuOHptNTYuMS03LjdjMS4yLTEyLjktNy42LTEzLjYtMjYuMS0xMi40bC0yLjcgMjguNWMxNC4yLS45IDI3LjUtMi4xIDI4LjgtMTYuMXptMjEuMSA3MC44bDUuOC02MGMtNSAxMy41LTE0LjcgMjEuMS0yNy45IDI2LjZsMjIuMSAzMy40em0xMzUuNC00NWwtNy45LTM3LjgtMTUuOCAzOS4zIDIzLjctMS41em0tMTcwLjEtNzQuNmwtNC4zLTE3LjUtMzkuNiAyLjYtOC4xIDE4LjItMzEuOSAyLjEgNTctMTIxLjkgMjMuOS0xLjYgMzAuNyAxMDIgOS45LTEwNC43IDI3LTEuOCAzNy44IDYzLjYgNi41LTY2LjYgMjguNS0xLjktNCA0MS4yYzcuNC0xMy41IDIyLjktNDQuNyA2My42LTQ3LjUgNDAuNS0yLjggNTIuNCAyOS4zIDUzLjQgMzAuM2wzLjMtMzIgMzkuMy0yLjdjMTIuNy0uOSAyNy44LjMgMzYuMyA5LjdsLTQuNC0xMS45IDMyLjItMi4yIDEyLjkgNDMuMiAyMy00NS43IDMxLTIuMi00My42IDc4LjQtNC44IDQ0LjMtMjguNCAxLjkgNC44LTQ0LjMtMTUuOC00M2MxIDIyLjMtOS4yIDQwLjEtMzIgNDkuNmwyNS4yIDM4LjgtMzYuNCAyLjQtMTkuMi0zNi44LTQgMzguMy0yOC40IDEuOSAzLjMtMzEuNWMtNi43IDkuMy0xOS43IDM1LjQtNTkuNiAzOC0yNi4yIDEuNy00NS42LTEwLjMtNTUuNC0zOS4ybC00IDQwLjMtMjUgMS42LTM3LjYtNjMuMy02LjMgNjYuMi01Ni44IDMuN3ptMjc2LjYtODIuMWMxMC4yLS43IDE3LjUtMi4xIDIxLjYtNC4zIDQuNS0yLjQgNy02LjQgNy42LTEyLjEuNi01LjMtLjYtOC44LTMuNC0xMC40LTMuNi0yLjEtMTAuNi0yLjgtMjIuOS0ybC0yLjkgMjguOHpNMzI3LjcgMjE0YzUuNiA1LjkgMTIuNyA4LjUgMjEuMyA3LjkgNC43LS4zIDkuMS0xLjggMTMuMy00LjEgNS41LTMgMTAuNi04IDE1LjEtMTQuM2wtMzQuMiAyLjMgMi40LTIzLjkgNjMuMS00LjMgMS4yLTEyLTMxLjIgMi4xYy00LjEtMy43LTcuOC02LjYtMTEuMS04LjEtNC0xLjctOC4xLTIuOC0xMi4yLTIuNS04IC41LTE1LjMgMy42LTIyIDkuMi03LjcgNi40LTEyIDE0LjUtMTIuOSAyNC40LTEuMSA5LjYgMS40IDE3LjMgNy4yIDIzLjN6bS0yMDEuMyA4LjJsMjMuOC0xLjYtOC4zLTM3LjYtMTUuNSAzOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmd1bGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4NS43IDI2OC4xaDc2LjJsLTM4LjEtOTEuNi0zOC4xIDkxLjZ6TTIyMy44IDMyTDE2IDEwNi40bDMxLjggMjc1LjcgMTc2IDk3LjkgMTc2LTk3LjkgMzEuOC0yNzUuN3pNMzU0IDM3My44aC00OC42bC0yNi4yLTY1LjRIMTY4LjZsLTI2LjIgNjUuNEg5My43TDIyMy44IDgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcFN0b3JlSW9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTEyNyAzODQuNWMtNS41IDkuNi0xNy44IDEyLjgtMjcuMyA3LjMtOS42LTUuNS0xMi44LTE3LjgtNy4zLTI3LjNsMTQuMy0yNC43YzE2LjEtNC45IDI5LjMtMS4xIDM5LjYgMTEuNEwxMjcgMzg0LjV6bTEzOC45LTUzLjlIODRjLTExIDAtMjAtOS0yMC0yMHM5LTIwIDIwLTIwaDUxbDY1LjQtMTEzLjItMjAuNS0zNS40Yy01LjUtOS42LTIuMi0yMS44IDcuMy0yNy4zIDkuNi01LjUgMjEuOC0yLjIgMjcuMyA3LjNsOC45IDE1LjQgOC45LTE1LjRjNS41LTkuNiAxNy44LTEyLjggMjcuMy03LjMgOS42IDUuNSAxMi44IDE3LjggNy4zIDI3LjNsLTg1LjggMTQ4LjZoNjIuMWMyMC4yIDAgMzEuNSAyMy43IDIyLjcgNDB6bTk4LjEgMGgtMjlsMTkuNiAzMy45YzUuNSA5LjYgMi4yIDIxLjgtNy4zIDI3LjMtOS42IDUuNS0yMS44IDIuMi0yNy4zLTcuMy0zMi45LTU2LjktNTcuNS05OS43LTc0LTEyOC4xLTE2LjctMjktNC44LTU4IDcuMS02Ny44IDEzLjEgMjIuNyAzMi43IDU2LjcgNTguOSAxMDJoNTJjMTEgMCAyMCA5IDIwIDIwIDAgMTEuMS05IDIwLTIwIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuOSAxMjAuOWw5LjEtMTUuN2M1LjYtOS44IDE4LjEtMTMuMSAyNy45LTcuNSA5LjggNS42IDEzLjEgMTguMSA3LjUgMjcuOWwtODcuNSAxNTEuNWg2My4zYzIwLjUgMCAzMiAyNC4xIDIzLjEgNDAuOEgxMTMuOGMtMTEuMyAwLTIwLjQtOS4xLTIwLjQtMjAuNCAwLTExLjMgOS4xLTIwLjQgMjAuNC0yMC40aDUybDY2LjYtMTE1LjQtMjAuOC0zNi4xYy01LjYtOS44LTIuMy0yMi4yIDcuNS0yNy45IDkuOC01LjYgMjIuMi0yLjMgMjcuOSA3LjVsOC45IDE1Ljd6bS03OC43IDIxOGwtMTkuNiAzNGMtNS42IDkuOC0xOC4xIDEzLjEtMjcuOSA3LjUtOS44LTUuNi0xMy4xLTE4LjEtNy41LTI3LjlsMTQuNi0yNS4yYzE2LjQtNS4xIDI5LjgtMS4yIDQwLjQgMTEuNnptMTY4LjktNjEuN2g1My4xYzExLjMgMCAyMC40IDkuMSAyMC40IDIwLjQgMCAxMS4zLTkuMSAyMC40LTIwLjQgMjAuNGgtMjkuNWwxOS45IDM0LjVjNS42IDkuOCAyLjMgMjIuMi03LjUgMjcuOS05LjggNS42LTIyLjIgMi4zLTI3LjktNy41LTMzLjUtNTguMS01OC43LTEwMS42LTc1LjQtMTMwLjYtMTcuMS0yOS41LTQuOS01OS4xIDcuMi02OS4xIDEzLjQgMjMgMzMuNCA1Ny43IDYwLjEgMTA0ek0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0yMTYgMjQ4YzAgMTE4LjctOTYuMSAyMTYtMjE2IDIxNi0xMTguNyAwLTIxNi05Ni4xLTIxNi0yMTYgMC0xMTguNyA5Ni4xLTIxNiAyMTYtMjE2IDExOC43IDAgMjE2IDk2LjEgMjE2IDIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIuMSAyMzkuMWMyMi4yIDAgMjkgMi44IDMzLjUgMTQuNmguOHYtMjIuOWMwLTExLjMtNC44LTE1LjQtMTcuOS0xNS40LTExLjMgMC0xNC40IDIuNS0xNS4xIDEyLjhINC44Yy4zLTEzLjkgMS41LTE5LjEgNS44LTI0LjRDMTcuOSAxOTUgMjkuNSAxOTIgNTYuNyAxOTJjMzMgMCA0Ny4xIDUgNTMuOSAxOC45IDIgNC4zIDQgMTUuNiA0IDIzLjd2NzYuM0g3Ni4zbDEuMy0xOS4xaC0xYy01LjMgMTUuNi0xMy42IDIwLjQtMzUuNSAyMC40LTMwLjMgMC00MS4xLTEwLjEtNDEuMS0zNy4zIDAtMjUuMiAxMi4zLTM1LjggNDIuMS0zNS44em0xNy4xIDQ4LjFjMTMuMSAwIDE2LjktMyAxNi45LTEzLjQgMC05LjEtNC4zLTExLjYtMTkuNi0xMS42LTEzLjEgMC0xNy45IDMtMTcuOSAxMi4xLS4xIDEwLjQgMy43IDEyLjkgMjAuNiAxMi45em03Ny44LTk0LjloMzguM2wtMS41IDIwLjZoLjhjOS4xLTE3LjEgMTUuOS0yMC45IDM3LjUtMjAuOSAxNC40IDAgMjQuNyAzIDMxLjUgOS4xIDkuOCA4LjYgMTIuOCAyMC40IDEyLjggNDguMSAwIDMwLTMgNDMuMS0xMi4xIDUyLjktNi44IDcuMy0xNi40IDEwLjEtMzMuMiAxMC4xLTIwLjQgMC0yOS4yLTUuNS0zMy44LTIxLjJoLS44djcwLjNIMTM3di0xNjl6bTgwLjkgNjAuN2MwLTI3LjUtMy4zLTMyLjUtMjAuNy0zMi41LTE2LjkgMC0yMC43IDUtMjAuNyAyOC43IDAgMjggMy41IDMzLjUgMjEuMiAzMy41IDE2LjQgMCAyMC4yLTUuNiAyMC4yLTI5Ljd6bTU3LjktNjAuN2gzOC4zbC0xLjUgMjAuNmguOGM5LjEtMTcuMSAxNS45LTIwLjkgMzcuNS0yMC45IDE0LjQgMCAyNC43IDMgMzEuNSA5LjEgOS44IDguNiAxMi44IDIwLjQgMTIuOCA0OC4xIDAgMzAtMyA0My4xLTEyLjEgNTIuOS02LjggNy4zLTE2LjQgMTAuMS0zMy4zIDEwLjEtMjAuNCAwLTI5LjItNS41LTMzLjgtMjEuMmgtLjh2NzAuM2gtMzkuNXYtMTY5em04MC45IDYwLjdjMC0yNy41LTMuMy0zMi41LTIwLjctMzIuNS0xNi45IDAtMjAuNyA1LTIwLjcgMjguNyAwIDI4IDMuNSAzMy41IDIxLjIgMzMuNSAxNi40IDAgMjAuMi01LjYgMjAuMi0yOS43em01My44LTMuOGMwLTI1LjQgMy4zLTM3LjggMTIuMy00NS44IDguOC04LjEgMjIuMi0xMS4zIDQ1LjEtMTEuMyA0Mi44IDAgNTUuNyAxMi44IDU1LjcgNTUuN3YxMS4xaC03NS4zYy0uMyAyLS4zIDQtLjMgNC44IDAgMTYuOSA0LjUgMjEuOSAyMC4xIDIxLjkgMTMuOSAwIDE3LjktMyAxNy45LTEzLjloMzcuNXYyLjNjMCA5LjgtMi41IDE4LjktNi44IDI0LjctNy4zIDkuOC0xOS42IDEzLjYtNDQuMyAxMy42LTI3LjUgMC00MS42LTMuMy01MC42LTEyLjMtOC41LTguNS0xMS4zLTIxLjMtMTEuMy01MC44em03Ni40LTExLjZjLS4zLTEuOC0uMy0zLjMtLjMtMy44IDAtMTIuMy0zLjMtMTQuNi0xOS42LTE0LjYtMTQuNCAwLTE3LjEgMy0xOC4xIDE1LjFsLS4zIDMuM2gzOC4zem01NS42LTQ1LjNoMzguM2wtMS44IDE5LjloLjdjNi44LTE0LjkgMTQuNC0yMC4yIDI5LjctMjAuMiAxMC44IDAgMTkuMSAzLjMgMjMuNCA5LjMgNS4zIDcuMyA2LjggMTQuNCA2LjggMzQgMCAxLjUgMCA1IC4yIDkuM2gtMzVjLjMtMS44LjMtMy4zLjMtNCAwLTE1LjQtMi0xOS40LTEwLjMtMTkuNC02LjMgMC0xMC44IDMuMy0xMy4xIDkuMy0xIDMtMSA0LjMtMSAxMi4zdjY4aC0zOC4zVjE5Mi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTYuOSAxNTguNWMtNy41IDguOS0xOS41IDE1LjktMzEuNSAxNC45LTEuNS0xMiA0LjQtMjQuOCAxMS4zLTMyLjYgNy41LTkuMSAyMC42LTE1LjYgMzEuMy0xNi4xIDEuMiAxMi40LTMuNyAyNC43LTExLjEgMzMuOG0xMC45IDE3LjJjLTE3LjQtMS0zMi4zIDkuOS00MC41IDkuOS04LjQgMC0yMS05LjQtMzQuOC05LjEtMTcuOS4zLTM0LjUgMTAuNC00My42IDI2LjUtMTguOCAzMi4zLTQuOSA4MCAxMy4zIDEwNi4zIDguOSAxMyAxOS41IDI3LjMgMzMuNSAyNi44IDEzLjMtLjUgMTguNS04LjYgMzQuNS04LjYgMTYuMSAwIDIwLjggOC42IDM0LjggOC40IDE0LjUtLjMgMjMuNi0xMyAzMi41LTI2IDEwLjEtMTQuOCAxNC4zLTI5LjEgMTQuNS0yOS45LS4zLS4zLTI4LTEwLjktMjguMy00Mi45LS4zLTI2LjggMjEuOS0zOS41IDIyLjktNDAuMy0xMi41LTE4LjYtMzItMjAuNi0zOC44LTIxLjFtMTAwLjQtMzYuMnYxOTQuOWgzMC4zdi02Ni42aDQxLjljMzguMyAwIDY1LjEtMjYuMyA2NS4xLTY0LjNzLTI2LjQtNjQtNjQuMS02NGgtNzMuMnptMzAuMyAyNS41aDM0LjljMjYuMyAwIDQxLjMgMTQgNDEuMyAzOC42cy0xNSAzOC44LTQxLjQgMzguOGgtMzQuOFYxNjV6bTE2Mi4yIDE3MC45YzE5IDAgMzYuNi05LjYgNDQuNi0yNC45aC42djIzLjRoMjh2LTk3YzAtMjguMS0yMi41LTQ2LjMtNTcuMS00Ni4zLTMyLjEgMC01NS45IDE4LjQtNTYuOCA0My42aDI3LjNjMi4zLTEyIDEzLjQtMTkuOSAyOC42LTE5LjkgMTguNSAwIDI4LjkgOC42IDI4LjkgMjQuNXYxMC44bC0zNy44IDIuM2MtMzUuMSAyLjEtNTQuMSAxNi41LTU0LjEgNDEuNS4xIDI1LjIgMTkuNyA0MiA0Ny44IDQyem04LjItMjMuMWMtMTYuMSAwLTI2LjQtNy44LTI2LjQtMTkuNiAwLTEyLjMgOS45LTE5LjQgMjguOC0yMC41bDMzLjYtMi4xdjExYzAgMTguMi0xNS41IDMxLjItMzYgMzEuMnptMTAyLjUgNzQuNmMyOS41IDAgNDMuNC0xMS4zIDU1LjUtNDUuNEw2NDAgMTkzaC0zMC44bC0zNS42IDExNS4xaC0uNkw1MzcuNCAxOTNoLTMxLjZMNTU3IDMzNC45bC0yLjggOC42Yy00LjYgMTQuNi0xMi4xIDIwLjMtMjUuNSAyMC4zLTIuNCAwLTctLjMtOC45LS41djIzLjRjMS44LjQgOS4zLjcgMTEuNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNyAyNjguN2MtLjItMzYuNyAxNi40LTY0LjQgNTAtODQuOC0xOC44LTI2LjktNDcuMi00MS43LTg0LjctNDQuNi0zNS41LTIuOC03NC4zIDIwLjctODguNSAyMC43LTE1IDAtNDkuNC0xOS43LTc2LjQtMTkuN0M2My4zIDE0MS4yIDQgMTg0LjggNCAyNzMuNXEwIDM5LjMgMTQuNCA4MS4yYzEyLjggMzYuNyA1OSAxMjYuNyAxMDcuMiAxMjUuMiAyNS4yLS42IDQzLTE3LjkgNzUuOC0xNy45IDMxLjggMCA0OC4zIDE3LjkgNzYuNCAxNy45IDQ4LjYtLjcgOTAuNC04Mi41IDEwMi42LTExOS4zLTY1LjItMzAuNy02MS43LTkwLTYxLjctOTEuOXptLTU2LjYtMTY0LjJjMjcuMy0zMi40IDI0LjgtNjEuOSAyNC03Mi41LTI0LjEgMS40LTUyIDE2LjQtNjcuOSAzNC45LTE3LjUgMTkuOC0yNy44IDQ0LjMtMjUuNiA3MS45IDI2LjEgMiA0OS45LTExLjQgNjkuNS0zNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnRzdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMzc3LjRsNDMgNzQuM0E1MS4zNSA1MS4zNSAwIDAgMCA5MC45IDQ4MGgyODUuNGwtNTkuMi0xMDIuNnpNNTAxLjggMzUwTDMzNS42IDU5LjNBNTEuMzggNTEuMzggMCAwIDAgMjkwLjIgMzJoLTg4LjRsMjU3LjMgNDQ3LjYgNDAuNy03MC41YzEuOS0zLjIgMjEtMjkuNyAyLTU5LjF6TTI3NSAzMDQuNWwtMTE1LjUtMjAwTDQ0IDMwNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBc3ltbWV0cmlrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxNy41IDMwOS4yYzM4LjgtNDAgNTguMS04MCA1OC41LTExNi4xLjgtNjUuNS01OS40LTExOC4yLTE2OS40LTEzNUMyNzcuOSAzOC40IDExOC4xIDczLjYgMCAxNDAuNSA1MiAxMTQgMTEwLjYgOTIuMyAxNzAuNyA4Mi4zYzc0LjUtMjAuNSAxNTMtMjUuNCAyMjEuMy0xNC44QzU0NC41IDkxLjMgNTg4LjggMTk1IDQ5MC44IDI5OS4yYy0xMC4yIDEwLjgtMjIgMjEuMS0zNSAzMC42TDMwNC45IDEwMy40IDExNC43IDM4OC45Yy02NS42LTI5LjQtNzYuNS05MC4yLTE5LjEtMTUxLjIgMjAuOC0yMi4yIDQ4LjMtNDEuOSA3OS41LTU4LjEgMjAtMTIuMiAzOS43LTIyLjYgNjItMzAuNy02NS4xIDIwLjMtMTIyLjcgNTIuOS0xNjEuNiA5Mi45LTI3LjcgMjguNi00MS40IDU3LjEtNDEuNyA4Mi45LS41IDM1LjEgMjMuNCA2NS4xIDY4LjQgODNsLTM0LjUgNTEuN2gxMDEuNmwyMi0zNC40YzIyLjIgMSA0NS4zIDAgNjguNi0yLjdsLTIyLjggMzcuMWgxMzUuNUwzNDAgNDA2LjNjMTguNi01LjMgMzYuOS0xMS41IDU0LjUtMTguN2w0NS45IDcxLjhINTQyTDQ2OC42IDM0OWMxOC41LTEyLjEgMzUtMjUuNSA0OC45LTM5Ljh6bS0xODcuNiA4MC41bC0yNS00MC42LTMyLjcgNTMuM2MtMjMuNCAzLjUtNDYuNyA1LjEtNjkuMiA0LjRsMTAxLjktMTU5LjMgNzguNyAxMjNjLTE3LjIgNy40LTM1LjMgMTMuOS01My43IDE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0bGFzc2lhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuMiAyMzYuNGMtNy43LTguMi0xOS43LTcuNy0yNC44IDIuOEwxLjYgNDkwLjJjLTUgMTAgMi40IDIxLjcgMTMuNCAyMS43aDE3NWM1LjguMSAxMS0zLjIgMTMuNC04LjQgMzcuOS03Ny44IDE1LjEtMTk2LjMtNTEuMi0yNjcuMXpNMjQ0LjQgOC4xYy0xMjIuMyAxOTMuNC04LjUgMzQ4LjYgNjUgNDk1LjUgMi41IDUuMSA3LjcgOC40IDEzLjQgOC40SDQ5N2MxMS4yIDAgMTguNC0xMS44IDEzLjQtMjEuNyAwIDAtMjM0LjUtNDcwLjYtMjQwLjQtNDgyLjMtNS4zLTEwLjYtMTguOC0xMC44LTI1LjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXVkaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMTk5Ljl2NTRsLTMyMCAyMDBMMCAyNTR2LTU0bDMyMCAyMDAgMzIwLTIwMC4xem0tMTk0LjUgNzJsNDcuMS0yOS40Yy0zNy4yLTU1LjgtMTAwLjctOTIuNi0xNzIuNy05Mi42LTcyIDAtMTM1LjUgMzYuNy0xNzIuNiA5Mi40aC4zYzIuNS0yLjMgNS4xLTQuNSA3LjctNi43IDg5LjctNzQuNCAyMTkuNC01OC4xIDI5MC4yIDM2LjN6bS0yMjAuMSAxOC44YzE2LjktMTEuOSAzNi41LTE4LjcgNTcuNC0xOC43IDM0LjQgMCA2NS4yIDE4LjQgODYuNCA0Ny42bDQ1LjQtMjguNGMtMjAuOS0yOS45LTU1LjYtNDkuNS05NC44LTQ5LjUtMzguOSAwLTczLjQgMTkuNC05NC40IDQ5ek0xMDMuNiAxNjEuMWMxMzEuOC0xMDQuMyAzMTguMi03Ni40IDQxNy41IDYyLjFsLjcgMSA0OC44LTMwLjRDNTE3LjEgMTEyLjEgNDI0LjggNTguMSAzMTkuOSA1OC4xYy0xMDMuNSAwLTE5Ni42IDUzLjUtMjUwLjUgMTM1LjYgOS45LTEwLjUgMjIuNy0yMy41IDM0LjItMzIuNnptNDY3IDMyLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF1dG9wcmVmaXhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNCAxNmwtMTYxIDQ4MGg3Ny41bDI1LjQtODEuNGgxMTkuNUw0MDUgNDk2aDc3LjVMMzE4LjQgMTZ6bS00MC4zIDM0MS45bDQxLjItMTMwLjRoMS41bDQwLjkgMTMwLjRoLTgzLjZ6TTY0MCA0MDVsLTEwLTMxLjRMNDYyLjEgMzU4bDE5LjQgNTYuNUw2NDAgNDA1em0tNDYyLjEtNDdMMTAgMzczLjcgMCA0MDVsMTU4LjUgOS40IDE5LjQtNTYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXZpYW5leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTMuMSAzMmgtMzEyYy0zOC45IDAtNzYuMiAzMS4yLTgzLjMgNjkuN0wxLjIgNDEwLjNDLTUuOSA0NDguOCAxOS45IDQ4MCA1OC45IDQ4MGgzMTJjMzguOSAwIDc2LjItMzEuMiA4My4zLTY5LjdsNTYuNy0zMDguNWM3LTM4LjYtMTguOC02OS44LTU3LjgtNjkuOHptLTU4LjIgMzQ3LjNsLTMyIDEzLjUtMTE1LjQtMTEwYy0xNC43IDEwLTI5LjIgMTkuNS00MS43IDI3LjFsMjIuMSA2NC4yLTE3LjkgMTIuNy00MC42LTYxLTUyLjQtNDguMSAxNS43LTE1LjQgNTggMzEuMWM5LjMtMTAuNSAyMC44LTIyLjYgMzIuOC0zNC45TDIwMyAyMjguOWwtNjguOC05OS44IDE4LjgtMjguOSA4LjktNC44TDI2NSAyMDcuOGw0LjkgNC41YzE5LjQtMTguOCAzMy44LTMyLjQgMzMuOC0zMi40IDcuNy02LjUgMjEuNS0yLjkgMzAuNyA3LjkgOSAxMC41IDEwLjYgMjQuNyAyLjcgMzEuMy0xLjggMS4zLTE1LjUgMTEuNC0zNS4zIDI1LjZsNC41IDcuMyA5NC45IDExOS40LTYuMyA3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF2aWF0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDcuMiAyODMuNWwtMTktNDEuOEgzNi4xbC0xOSA0MS44SDBsNjIuMi0xMzEuNCA2Mi4yIDEzMS40aC0xNy4yem0tNDUtOTguMWwtMTkuNiA0Mi41aDM5LjJsLTE5LjYtNDIuNXptMTEyLjcgMTAyLjRsLTYyLjItMTMxLjRoMTcuMWw0NS4xIDk2IDQ1LjEtOTZoMTdsLTYyLjEgMTMxLjR6bTgwLjYtNC4zVjE1Ni40SDI3MXYxMjcuMWgtMTUuNXptMjA5LjEtMTE1LjZ2MTE1LjZoLTE3LjNWMTY3LjloLTQxLjJ2LTExLjVoOTkuNnYxMS41aC00MS4xek02NDAgMjE4LjhjMCA5LjItMS43IDE3LjgtNS4xIDI1LjgtMy40IDgtOC4yIDE1LjEtMTQuMiAyMS4xLTYgNi0xMy4xIDEwLjgtMjEuMSAxNC4yLTggMy40LTE2LjYgNS4xLTI1LjggNS4xcy0xNy44LTEuNy0yNS44LTUuMWMtOC0zLjQtMTUuMS04LjItMjEuMS0xNC4yLTYtNi0xMC44LTEzLTE0LjItMjEuMS0zLjQtOC01LjEtMTYuNi01LjEtMjUuOHMxLjctMTcuOCA1LjEtMjUuOGMzLjQtOCA4LjItMTUuMSAxNC4yLTIxLjEgNi02IDEzLTguNCAyMS4xLTExLjkgOC0zLjQgMTYuNi01LjEgMjUuOC01LjFzMTcuOCAxLjcgMjUuOCA1LjFjOCAzLjQgMTUuMSA1LjggMjEuMSAxMS45IDYgNiAxMC43IDEzLjEgMTQuMiAyMS4xIDMuNCA4IDUuMSAxNi42IDUuMSAyNS44em0tMTUuNSAwYzAtNy4zLTEuMy0xNC0zLjktMjAuMy0yLjYtNi4zLTYuMi0xMS43LTEwLjgtMTYuMy00LjYtNC42LTEwLTguMi0xNi4yLTEwLjktNi4yLTIuNy0xMi44LTQtMTkuOC00cy0xMy42IDEuMy0xOS44IDRjLTYuMiAyLjctMTEuNiA2LjMtMTYuMiAxMC45LTQuNiA0LjYtOC4yIDEwLTEwLjggMTYuMy0yLjYgNi4zLTMuOSAxMy4xLTMuOSAyMC4zIDAgNy4zIDEuMyAxNCAzLjkgMjAuMyAyLjYgNi4zIDYuMiAxMS43IDEwLjggMTYuMyA0LjYgNC42IDEwIDguMiAxNi4yIDEwLjkgNi4yIDIuNyAxMi44IDQgMTkuOCA0czEzLjYtMS4zIDE5LjgtNGM2LjItMi43IDExLjYtNi4zIDE2LjItMTAuOSA0LjYtNC42IDguMi0xMCAxMC44LTE2LjMgMi42LTYuMyAzLjktMTMuMSAzLjktMjAuM3ptLTk0LjggOTYuN3YtNi4zbDg4LjktMTAtMjQyLjkgMTMuNGMuNi0yLjIgMS4xLTQuNiAxLjQtNy4yLjMtMiAuNS00LjIuNi02LjVsNjQuOC04LjEtNjQuOSAxLjljMC0uNC0uMS0uNy0uMS0xLjEtMi44LTE3LjItMjUuNS0yMy43LTI1LjUtMjMuN2wtMS4xLTI2LjNoMjMuOGwxOSA0MS44aDE3LjFMMzQ4LjYgMTUybC02Mi4yIDEzMS40aDE3LjFsMTktNDEuOGgyMy42TDM0NSAyNjhzLTIyLjcgNi41LTI1LjUgMjMuN2MtLjEuMy0uMS43LS4xIDEuMWwtNjQuOS0xLjkgNjQuOCA4LjFjLjEgMi4zLjMgNC40LjYgNi41LjMgMi42LjggNSAxLjQgNy4yTDc4LjQgMjk5LjJsODguOSAxMHY2LjNjLTUuOS45LTEwLjUgNi0xMC41IDEyLjIgMCA2LjggNS42IDEyLjQgMTIuNCAxMi40IDYuOCAwIDEyLjQtNS42IDEyLjQtMTIuNCAwLTYuMi00LjYtMTEuMy0xMC41LTEyLjJ2LTUuOGw4MC4zIDl2NS40Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi00LjlsMjguNCAzLjJ2MjMuN2gtNS45VjM2MGg1Ljl2LTYuNmg1djYuNmg1Ljl2LTEzLjhoLTUuOVYzMjNsMzguMyA0LjNjOC4xIDExLjQgMTkgMTMuNiAxOSAxMy42bC0uMSA2LjctNS4xLjItLjEgMTIuMWg0LjFsLjEtNWg1LjJsLjEgNWg0LjFsLS4xLTEyLjEtNS4xLS4yLS4xLTYuN3MxMC45LTIuMSAxOS0xMy42bDM4LjMtNC4zdjIzLjJoLTUuOVYzNjBoNS45di02LjZoNXY2LjZoNS45di0xMy44aC01Ljl2LTIzLjdsMjguNC0zLjJ2NC45Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi01LjRsODAuMy05djUuOGMtNS45LjktMTAuNSA2LTEwLjUgMTIuMiAwIDYuOCA1LjYgMTIuNCAxMi40IDEyLjQgNi44IDAgMTIuNC01LjYgMTIuNC0xMi40LS4yLTYuMy00LjctMTEuNC0xMC43LTEyLjN6bS0yMDAuOC04Ny42bDE5LjYtNDIuNSAxOS42IDQyLjVoLTE3LjlsLTEuNy00MC4zLTEuNyA0MC4zaC0xNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgwLjQxIDIwMy4wMWMtLjcyIDIyLjY1IDEwLjYgMzIuNjggMTAuODggMzkuMDVhOC4xNjQgOC4xNjQgMCAwIDEtNC4xIDYuMjdsLTEyLjggOC45NmExMC42NiAxMC42NiAwIDAgMS01LjYzIDEuOTJjLS40My0uMDItOC4xOSAxLjgzLTIwLjQ4LTI1LjYxYTc4LjYwOCA3OC42MDggMCAwIDEtNjIuNjEgMjkuNDVjLTE2LjI4Ljg5LTYwLjQtOS4yNC01OC4xMy01Ni4yMS0xLjU5LTM4LjI4IDM0LjA2LTYyLjA2IDcwLjkzLTYwLjA1IDcuMS4wMiAyMS42LjM3IDQ2Ljk5IDYuMjd2LTE1LjYyYzIuNjktMjYuNDYtMTQuNy00Ni45OS00NC44MS00My45MS0yLjQuMDEtMTkuNC0uNS00NS44NCAxMC4xMS03LjM2IDMuMzgtOC4zIDIuODItMTAuNzUgMi44Mi03LjQxIDAtNC4zNi0yMS40OC0yLjk0LTI0LjIgNS4yMS02LjQgMzUuODYtMTguMzUgNjUuOTQtMTguMThhNzYuODU3IDc2Ljg1NyAwIDAgMSA1NS42OSAxNy4yOCA3MC4yODUgNzAuMjg1IDAgMCAxIDE3LjY3IDUyLjM2bC0uMDEgNjkuMjl6TTkzLjk5IDIzNS40YzMyLjQzLS40NyA0Ni4xNi0xOS45NyA0OS4yOS0zMC40NyAyLjQ2LTEwLjA1IDIuMDUtMTYuNDEgMi4wNS0yNy40LTkuNjctMi4zMi0yMy41OS00Ljg1LTM5LjU2LTQuODctMTUuMTUtMS4xNC00Mi44MiA1LjYzLTQxLjc0IDMyLjI2LTEuMjQgMTYuNzkgMTEuMTIgMzEuNCAyOS45NiAzMC40OHptMTcwLjkyIDIzLjA1Yy03Ljg2LjcyLTExLjUyLTQuODYtMTIuNjgtMTAuMzdsLTQ5LjgtMTY0LjY1Yy0uOTctMi43OC0xLjYxLTUuNjUtMS45Mi04LjU4YTQuNjEgNC42MSAwIDAgMSAzLjg2LTUuMjVjLjI0LS4wNC0yLjEzIDAgMjIuMjUgMCA4Ljc4LS44OCAxMS42NCA2LjAzIDEyLjU1IDEwLjM3bDM1LjcyIDE0MC44MyAzMy4xNi0xNDAuODNjLjUzLTMuMjIgMi45NC0xMS4wNyAxMi44LTEwLjI0aDE3LjE2YzIuMTctLjE4IDExLjExLS41IDEyLjY4IDEwLjM3bDMzLjQyIDE0Mi42M0w0MjAuOTggODAuMWMuNDgtMi4xOCAyLjcyLTExLjM3IDEyLjY4LTEwLjM3aDE5LjcyYy44NS0uMTMgNi4xNS0uODEgNS4yNSA4LjU4LS40MyAxLjg1IDMuNDEtMTAuNjYtNTIuNzUgMTY5LjktMS4xNSA1LjUxLTQuODIgMTEuMDktMTIuNjggMTAuMzdoLTE4LjY5Yy0xMC45NCAxLjE1LTEyLjUxLTkuNjYtMTIuNjgtMTAuNzVMMzI4LjY3IDExMC43bC0zMi43OCAxMzYuOTljLS4xNiAxLjA5LTEuNzMgMTEuOS0xMi42OCAxMC43NWgtMTguM3ptMjczLjQ4IDUuNjNjLTUuODguMDEtMzMuOTItLjMtNTcuMzYtMTIuMjlhMTIuODAyIDEyLjgwMiAwIDAgMS03LjgxLTExLjkxdi0xMC43NWMwLTguNDUgNi4yLTYuOSA4LjgzLTUuODkgMTAuMDQgNC4wNiAxNi40OCA3LjE0IDI4LjgxIDkuNiAzNi42NSA3LjUzIDUyLjc3LTIuMyA1Ni43Mi00LjQ4IDEzLjE1LTcuODEgMTQuMTktMjUuNjggNS4yNS0zNC45NS0xMC40OC04Ljc5LTE1LjQ4LTkuMTItNTMuMTMtMjEtNC42NC0xLjI5LTQzLjctMTMuNjEtNDMuNzktNTIuMzYtLjYxLTI4LjI0IDI1LjA1LTU2LjE4IDY5LjUyLTU1Ljk1IDEyLjY3LS4wMSA0Ni40MyA0LjEzIDU1LjU3IDE1LjYyIDEuMzUgMi4wOSAyLjAyIDQuNTUgMS45MiA3LjA0djEwLjExYzAgNC40NC0xLjYyIDYuNjYtNC44NyA2LjY2LTcuNzEtLjg2LTIxLjM5LTExLjE3LTQ5LjE2LTEwLjc1LTYuODktLjM2LTM5Ljg5LjkxLTM4LjQxIDI0Ljk3LS40MyAxOC45NiAyNi42MSAyNi4wNyAyOS43IDI2Ljg5IDM2LjQ2IDEwLjk3IDQ4LjY1IDEyLjc5IDYzLjEyIDI5LjU4IDE3LjE0IDIyLjI1IDcuOSA0OC4zIDQuMzUgNTUuNDQtMTkuMDggMzcuNDktNjguNDIgMzQuNDQtNjkuMjYgMzQuNDJ6bTQwLjIgMTA0Ljg2Yy03MC4wMyA1MS43Mi0xNzEuNjkgNzkuMjUtMjU4LjQ5IDc5LjI1QTQ2OS4xMjcgNDY5LjEyNyAwIDAgMSAyLjgzIDMyNy40NmMtNi41My01Ljg5LS43Ny0xMy45NiA3LjE3LTkuNDdhNjM3LjM3IDYzNy4zNyAwIDAgMCAzMTYuODggODQuMTIgNjMwLjIyIDYzMC4yMiAwIDAgMCAyNDEuNTktNDkuNTVjMTEuNzgtNSAyMS43NyA3LjggMTAuMTIgMTYuMzh6bTI5LjE5LTMzLjI5Yy04Ljk2LTExLjUyLTU5LjI4LTUuMzgtODEuODEtMi42OS02Ljc5Ljc3LTcuOTQtNS4xMi0xLjc5LTkuNDcgNDAuMDctMjguMTcgMTA1Ljg4LTIwLjEgMTEzLjQ0LTEwLjYzIDcuNTUgOS40Ny0yLjA1IDc1LjQxLTM5LjU2IDEwNi45MS01Ljc2IDQuODctMTEuMjcgMi4zLTguNzEtNC4xIDguNDQtMjEuMjUgMjcuMzktNjguNDkgMTguNDMtODAuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRjYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhabTQ4LjIsMzI2LjFoLTE4MUwyMDcuOSwxNzhoMTgxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0bGVOZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LjYxIDIyNS42MmMyNi44Ny4xOCAzNS41Ny03LjQzIDM4LjkyLTEyLjM3IDEyLjQ3LTE2LjMyLTcuMDYtNDcuNi01Mi44NS03MS4zMyAxNy43Ni0zMy41OCAzMC4xMS02My42OCAzNi4zNC04NS4zIDMuMzgtMTEuODMgMS4wOS0xOSAuNDUtMjAuMjUtMS43MiAxMC41Mi0xNS44NSA0OC40Ni00OC4yIDEwMC4wNS0yNS0xMS4yMi01Ni41Mi0yMC4xLTkzLjc3LTIzLjgtOC45NC0xNi45NC0zNC44OC02My44Ni02MC40OC04OC45M0MyNTIuMTggNy4xNCAyMzguNyAxLjA3IDIyOC4xOC4yMmgtLjA1Yy0xMy44My0xLjU1LTIyLjY3IDUuODUtMjcuNCAxMS0xNy4yIDE4LjUzLTI0LjMzIDQ4Ljg3LTI1IDg0LjA3LTcuMjQtMTIuMzUtMTcuMTctMjQuNjMtMjguNS0yNS45M2gtLjE4Yy0yMC42Ni0zLjQ4LTM4LjM5IDI5LjIyLTM2IDgxLjI5LTM4LjM2IDEuMzgtNzEgNS43NS05MyAxMS4yMy05LjkgMi40NS0xNi4yMiA3LjI3LTE3Ljc2IDkuNzIgMS0uMzggMjIuNC05LjIyIDExMS41Ni05LjIyIDUuMjIgNTMgMjkuNzUgMTAxLjgyIDI2IDkzLjE5LTkuNzMgMTUuNC0zOC4yNCA2Mi4zNi00Ny4zMSA5Ny43LTUuODcgMjIuODgtNC4zNyAzNy42MS4xNSA0Ny4xNCA1LjU3IDEyLjc1IDE2LjQxIDE2LjcyIDIzLjIgMTguMjYgMjUgNS43MSA1NS4zOC0zLjYzIDg2LjctMjEuMTQtNy41MyAxMi44NC0xMy45IDI4LjUxLTkuMDYgMzkuMzQgNy4zMSAxOS42NSA0NC40OSAxOC42NiA4OC40NC05LjQ1IDIwLjE4IDMyLjE4IDQwLjA3IDU3Ljk0IDU1LjcgNzQuMTJhMzkuNzkgMzkuNzkgMCAwIDAgOC43NSA3LjA5YzUuMTQgMy4yMSA4LjU4IDMuMzcgOC41OCAzLjM3LTguMjQtNi43NS0zNC0zOC02Mi41NC05MS43OCAyMi4yMi0xNiA0NS42NS0zOC44NyA2Ny40Ny02OS4yNyAxMjIuODIgNC42IDE0My4yOS0yNC43NiAxNDgtMzEuNjQgMTQuNjctMTkuODggMy40My01Ny40NC01Ny4zMi05My42OXptLTc3Ljg1IDEwNi4yMmMyMy44MS0zNy43MSAzMC4zNC02Ny43NyAyOS40NS05Mi4zMyAyNy44NiAxNy41NyA0Ny4xOCAzNy41OCA0OS4wNiA1OC44MyAxLjE0IDEyLjkzLTguMSAyOS4xMi03OC41MSAzMy41ek0yMTYuOSAzODcuNjljOS43Ni02LjIzIDE5LjUzLTEzLjEyIDI5LjItMjAuNDkgNi42OCAxMy4zMyAxMy42IDI2LjEgMjAuNiAzOC4xOS00MC42IDIxLjg2LTY4Ljg0IDEyLjc2LTQ5LjgtMTcuN3ptMjE1LTE3MS4zNWMtMTAuMjktNS4zNC0yMS4xNi0xMC4zNC0zMi4zOC0xNS4wNWE3MjIuNDU5IDcyMi40NTkgMCAwIDAgMjIuNzQtMzYuOWMzOS4wNiAyNC4xIDQ1LjkgNTMuMTggOS42NCA1MS45NXpNMjc5LjE4IDM5OGMtNS41MS0xMS4zNS0xMS0yMy41LTE2LjUtMzYuNDQgNDMuMjUgMS4yNyA2Mi40Mi0xOC43MyA2My4yOC0yMC40MSAwIC4wNy0yNSAxNS42NC02Mi41MyAxMi4yNWE3MTguNzggNzE4Ljc4IDAgMCAwIDg1LjA2LTg0cTEzLjA2LTE1LjMxIDI0LjkzLTMxLjExYy0uMzYtLjI5LTEuNTQtMy0xNi41MS0xMi01MS43IDYwLjI3LTEwMi4zNCA5OC0xMzIuNzUgMTE1LjkyLTIwLjU5LTExLjE4LTQwLjg0LTMxLjc4LTU1LjcxLTYxLjQ5LTIwLTM5LjkyLTMwLTgyLjM5LTMxLjU3LTExNi4wNyAxMi4zLjkxIDI1LjI3IDIuMTcgMzguODUgMy44OC0yMi4yOSAzNi44LTE0LjM5IDYzLTEzLjQ3IDY0LjIzIDAtLjA3LS45NS0yOS4xNyAyMC4xNC01OS41N2E2OTUuMjMgNjk1LjIzIDAgMCAwIDQ0LjY3IDE1Mi44NGMuOTMtLjM4IDEuODQuODggMTguNjctOC4yNS0yNi4zMy03NC40Ny0zMy43Ni0xMzguMTctMzQtMTczLjQzIDIwLTEyLjQyIDQ4LjE4LTE5LjggODEuNjMtMTcuODEgNDQuNTcgMi42NyA4Ni4zNiAxNS4yNSAxMTYuMzIgMzAuNzFxLTEwLjY5IDE1LjY2LTIzLjMzIDMyLjQ3QzM2NS42MyAxNTIgMzM5LjEgMTQ1Ljg0IDMzNy41IDE0NmMuMTEgMCAyNS45IDE0LjA3IDQxLjUyIDQ3LjIyYTcxNy42MyA3MTcuNjMgMCAwIDAtMTE1LjM0LTMxLjcxIDY0Ni42MDggNjQ2LjYwOCAwIDAgMC0zOS4zOS02LjA1Yy0uMDcuNDUtMS44MSAxLjg1LTIuMTYgMjAuMzNDMzAwIDE5MC4yOCAzNTguNzggMjE1LjY4IDM4OS4zNiAyMzNjLjc0IDIzLjU1LTYuOTUgNTEuNjEtMjUuNDEgNzkuNTctMjQuNiAzNy4zMS01Ni4zOSA2Ny4yMy04NC43NyA4NS40M3ptMjcuNC0yODdjLTQ0LjU2LTEuNjYtNzMuNTggNy40My05NC42OSAyMC42NyAyLTUyLjMgMjEuMzEtNzYuMzggMzguMjEtNzUuMjhDMjY3IDUyLjE1IDMwNSAxMDguNTUgMzA2LjU4IDExMXptLTEzMC42NSAzLjFjLjQ4IDEyLjExIDEuNTkgMjQuNjIgMy4yMSAzNy4yOC0xNC41NS0uODUtMjguNzQtMS4yNS00Mi40LTEuMjYtLjA4IDMuMjQtLjEyLTUxIDI0LjY3LTQ5LjU5aC4wOWM1Ljc2IDEuMDkgMTAuNjMgNi44OCAxNC40MyAxMy41N3ptLTI4LjA2IDE2MmMyMC43NiAzOS43IDQzLjMgNjAuNTcgNjUuMjUgNzIuMzEtNDYuNzkgMjQuNzYtNzcuNTMgMjAtODQuOTIgNC41MS0uMi0uMjEtMTEuMTMtMTUuMyAxOS42Ny03Ni44MXptMjEwLjA2IDc0LjhcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVoYW5jZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuNSAyOTNjMCAxOS4zLTE0IDI1LjQtMzEuMiAyNS40aC00NS4xdi01Mi45aDQ2YzE4LjYuMSAzMC4zIDcuOCAzMC4zIDI3LjV6bS03LjctODIuM2MwLTE3LjctMTMuNy0yMS45LTI4LjktMjEuOWgtMzkuNnY0NC44SDE1M2MxNS4xIDAgMjUuOC02LjYgMjUuOC0yMi45em0xMzIuMyAyMy4yYy0xOC4zIDAtMzAuNSAxMS40LTMxLjcgMjkuN2g2Mi4yYy0xLjctMTguNS0xMS4zLTI5LjctMzAuNS0yOS43ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTI3MS43IDE4NWg3Ny44di0xOC45aC03Ny44VjE4NXptLTQzIDExMC4zYzAtMjQuMS0xMS40LTQ0LjktMzUtNTEuNiAxNy4yLTguMiAyNi4yLTE3LjcgMjYuMi0zNyAwLTM4LjItMjguNS00Ny41LTYxLjQtNDcuNUg2OHYxOTJoOTMuMWMzNC45LS4yIDY3LjYtMTYuOSA2Ny42LTU1Ljl6TTM4MCAyODAuNWMwLTQxLjEtMjQuMS03NS40LTY3LjYtNzUuNC00Mi40IDAtNzEuMSAzMS44LTcxLjEgNzMuNiAwIDQzLjMgMjcuMyA3MyA3MS4xIDczIDMzLjIgMCA1NC43LTE0LjkgNjUuMS00Ni44aC0zMy43Yy0zLjcgMTEuOS0xOC42IDE4LjEtMzAuMiAxOC4xLTIyLjQgMC0zNC4xLTEzLjEtMzQuMS0zNS4zaDEwMC4yYy4xLTIuMy4zLTQuOC4zLTcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVoYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIgMjM3LjJjMzEuOC0xNS4yIDQ4LjQtMzguMiA0OC40LTc0IDAtNzAuNi01Mi42LTg3LjgtMTEzLjMtODcuOEgwdjM1NC40aDE3MS44YzY0LjQgMCAxMjQuOS0zMC45IDEyNC45LTEwMi45IDAtNDQuNS0yMS4xLTc3LjQtNjQuNy04OS43ek03Ny45IDEzNS45SDE1MWMyOC4xIDAgNTMuNCA3LjkgNTMuNCA0MC41IDAgMzAuMS0xOS43IDQyLjItNDcuNSA0Mi4yaC03OXYtODIuN3ptODMuMyAyMzMuN0g3Ny45VjI3Mmg4NC45YzM0LjMgMCA1NiAxNC4zIDU2IDUwLjYgMCAzNS44LTI1LjkgNDctNTcuNiA0N3ptMzU4LjUtMjQwLjdIMzc2Vjk0aDE0My43djM0Ljl6TTU3NiAzMDUuMmMwLTc1LjktNDQuNC0xMzkuMi0xMjQuOS0xMzkuMi03OC4yIDAtMTMxLjMgNTguOC0xMzEuMyAxMzUuOCAwIDc5LjkgNTAuMyAxMzQuNyAxMzEuMyAxMzQuNyA2MS4zIDAgMTAxLTI3LjYgMTIwLjEtODYuM0g1MDljLTYuNyAyMS45LTM0LjMgMzMuNS01NS43IDMzLjUtNDEuMyAwLTYzLTI0LjItNjMtNjUuM2gxODUuMWMuMy00LjIuNi04LjcuNi0xMy4yek0zOTAuNCAyNzRjMi4zLTMzLjcgMjQuNy01NC44IDU4LjUtNTQuOCAzNS40IDAgNTMuMiAyMC44IDU2LjIgNTQuOEgzOTAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmltb2JqZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMkgzMkMxNC40IDMyIDAgNDYuNCAwIDY0djM4NGMwIDE3LjYgMTQuNCAzMiAzMiAzMmgzODRjMTcuNiAwIDMyLTE0LjQgMzItMzJWNjRjMC0xNy42LTE0LjQtMzItMzItMzJ6bS02NCAyNTcuNGMwIDQ5LjQtMTEuNCA4Mi42LTEwMy44IDgyLjZoLTE2LjljLTQ0LjEgMC02Mi40LTE0LjktNzAuNC0zOC44aC0uOVYzNjhIOTZWMTM2aDY0djc0LjdoMS4xYzQuNi0zMC41IDM5LjctMzguOCA2OS43LTM4LjhoMTcuM2M5Mi40IDAgMTAzLjggMzMuMSAxMDMuOCA4Mi41djM1em0tNjQtMjguOXYyMi45YzAgMjEuNy0zLjQgMzMuOC0zOC40IDMzLjhoLTQ1LjNjLTI4LjkgMC00NC4xLTYuNS00NC4xLTM1Ljd2LTE5YzAtMjkuMyAxNS4yLTM1LjcgNDQuMS0zNS43aDQ1LjNjMzUtLjIgMzguNCAxMiAzOC40IDMzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpdGJ1Y2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi4yIDMyQTE2IDE2IDAgMCAwIDYgNDcuOGEyNi4zNSAyNi4zNSAwIDAgMCAuMiAyLjhsNjcuOSA0MTIuMWEyMS43NyAyMS43NyAwIDAgMCAyMS4zIDE4LjJoMzI1LjdhMTYgMTYgMCAwIDAgMTYtMTMuNEw1MDUgNTAuN2ExNiAxNiAwIDAgMC0xMy4yLTE4LjMgMjQuNTggMjQuNTggMCAwIDAtMi44LS4yTDIyLjIgMzJ6bTI4NS45IDI5Ny44aC0xMDRsLTI4LjEtMTQ3aDE1Ny4zbC0yNS4yIDE0N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0Y29pbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHptLTE0MS42NTEtMzUuMzNjNC45MzctMzIuOTk5LTIwLjE5MS01MC43MzktNTQuNTUtNjIuNTczbDExLjE0Ni00NC43MDItMjcuMjEzLTYuNzgxLTEwLjg1MSA0My41MjRjLTcuMTU0LTEuNzgzLTE0LjUwMi0zLjQ2NC0yMS44MDMtNS4xM2wxMC45MjktNDMuODEtMjcuMTk4LTYuNzgxLTExLjE1MyA0NC42ODZjLTUuOTIyLTEuMzQ5LTExLjczNS0yLjY4Mi0xNy4zNzctNC4wODRsLjAzMS0uMTQtMzcuNTMtOS4zNy03LjIzOSAyOS4wNjJzMjAuMTkxIDQuNjI3IDE5Ljc2NSA0LjkxM2MxMS4wMjIgMi43NTEgMTMuMDE0IDEwLjA0NCAxMi42OCAxNS44MjVsLTEyLjY5NiA1MC45MjVjLjc2LjE5NCAxLjc0NC40NzMgMi44MjkuOTA3LS45MDctLjIyNS0xLjg3Ni0uNDczLTIuODc2LS43MTNsLTE3Ljc5NiA3MS4zMzhjLTEuMzQ5IDMuMzQ4LTQuNzY3IDguMzctMTIuNDcxIDYuNDY0LjI3MS4zOTUtMTkuNzgtNC45MzctMTkuNzgtNC45MzdsLTEzLjUxIDMxLjE0NyAzNS40MTQgOC44MjdjNi41ODggMS42NTEgMTMuMDQ1IDMuMzc5IDE5LjQgNS4wMDZsLTExLjI2MiA0NS4yMTMgMjcuMTgyIDYuNzgxIDExLjE1My00NC43MzNhMTAzOC4yMDkgMTAzOC4yMDkgMCAwIDAgMjEuNjg3IDUuNjI3bC0xMS4xMTUgNDQuNTIzIDI3LjIxMyA2Ljc4MSAxMS4yNjItNDUuMTI4YzQ2LjQwNCA4Ljc4MSA4MS4yOTkgNS4yMzkgOTUuOTg2LTM2LjcyNyAxMS44MzYtMzMuNzktLjU4OS01My4yODEtMjUuMDA0LTY1Ljk5MSAxNy43OC00LjA5OCAzMS4xNzQtMTUuNzkyIDM0Ljc0Ny0zOS45NDl6bS02Mi4xNzcgODcuMTc5Yy04LjQxIDMzLjc5LTY1LjMwOCAxNS41MjMtODMuNzU1IDEwLjk0M2wxNC45NDQtNTkuODk5YzE4LjQ0NiA0LjYwMyA3Ny42IDEzLjcxNyA2OC44MTEgNDguOTU2em04LjQxNy04Ny42NjdjLTcuNjczIDMwLjczNi01NS4wMzEgMTUuMTItNzAuMzkzIDExLjI5MmwxMy41NDgtNTQuMzI3YzE1LjM2MyAzLjgyOCA2NC44MzYgMTAuOTczIDU2Ljg0NSA0My4wMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzguNCA2Ny4yQzE3My44LTIyIDMyNC41LTI0IDQyMS41IDcxYzE0LjMgMTQuMS02LjQgMzcuMS0yMi40IDIxLjUtODQuOC04Mi40LTIxNS44LTgwLjMtMjk4LjktMy4yLTE2LjMgMTUuMS0zNi41LTguMy0yMS44LTIyLjF6bTk4LjkgNDE4LjZjMTkuMyA1LjcgMjkuMy0yMy42IDcuOS0zMEM3MyA0MjEuOSA5LjQgMzA2LjEgMzcuNyAxOTQuOGM1LTE5LjYtMjQuOS0yOC4xLTMwLjItNy4xLTMyLjEgMTI3LjQgNDEuMSAyNTkuOCAxNjkuOCAyOTguMXptMTQ4LjEtMmMxMjEuOS00MC4yIDE5Mi45LTE2Ni45IDE2NC40LTI5MS00LjUtMTkuNy0zNC45LTEzLjgtMzAgNy45IDI0LjIgMTA3LjctMzcuMSAyMTcuOS0xNDMuMiAyNTMuNC0yMS4yIDctMTAuNCAzNiA4LjggMjkuN3ptLTYyLjktNzlsLjItNzEuOGMwLTguMi02LjYtMTQuOC0xNC44LTE0LjgtOC4yIDAtMTQuOCA2LjctMTQuOCAxNC44bC0uMiA3MS44YzAgOC4yIDYuNiAxNC44IDE0LjggMTQuOHMxNC44LTYuNiAxNC44LTE0Ljh6bTcxLTI2OWMyLjEgOTAuOSA0LjcgMTMxLjktODUuNSAxMzIuNS05Mi41LS43LTg2LjktNDQuMy04NS41LTEzMi41IDAtMjEuOC0zMi41LTE5LjYtMzIuNSAwdjcxLjZjMCA2OS4zIDYwLjcgOTAuOSAxMTggOTAuMSA1Ny4zLjggMTE4LTIwLjggMTE4LTkwLjF2LTcxLjZjMC0xOS42LTMyLjUtMjEuOC0zMi41IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsYWNrVGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0zMTYuNSAzMjUuMkwyMjQgNDQ1LjlsLTkyLjUtODguNyA2NC41LTE4NC02NC41LTg2LjZoMTg0LjlMMjUyIDE3My4ybDY0LjUgMTg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbGFja2JlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NiAxMTYuOWMwIDIzLjQtMTYuNCA0OS4xLTcyLjUgNDkuMUgyMy40bDIxLTg4LjhoNjcuOGM0Mi4xIDAgNTMuOCAyMy4zIDUzLjggMzkuN3ptMTI2LjItMzkuN2gtNjcuOEwyMDUuNyAxNjZoNzAuMWM1My44IDAgNzAuMS0yNS43IDcwLjEtNDkuMS4xLTE2LjQtMTEuNi0zOS43LTUzLjctMzkuN3pNODguOCAyMDguMUgyMUwwIDI5Ni45aDcwLjFjNTYuMSAwIDcyLjUtMjMuNCA3Mi41LTQ5LjEgMC0xNi4zLTExLjctMzkuNy01My44LTM5Ljd6bTE4MC4xIDBoLTY3LjhsLTE4LjcgODguOGg3MC4xYzUzLjggMCA3MC4xLTIzLjQgNzAuMS00OS4xIDAtMTYuMy0xMS43LTM5LjctNTMuNy0zOS43em0xODkuMy01My44aC02Ny44bC0xOC43IDg4LjhoNzAuMWM1My44IDAgNzAuMS0yMy40IDcwLjEtNDkuMS4xLTE2LjMtMTEuNi0zOS43LTUzLjctMzkuN3ptLTI4IDEzNy45aC02Ny44TDM0My43IDM4MWg3MC4xYzU2LjEgMCA3MC4xLTIzLjQgNzAuMS00OS4xIDAtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43ek0yNDAuOCAzNDZIMTczbC0xOC43IDg4LjhoNzAuMWM1Ni4xIDAgNzAuMS0yNS43IDcwLjEtNDkuMS4xLTE2LjMtMTEuNi0zOS43LTUzLjctMzkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxvZ2dlckIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ2LjYgMjIyLjdjLTEuOC04LTYuOC0xNS40LTEyLjUtMTguNS0xLjgtMS0xMy0yLjItMjUtMi43LTIwLjEtLjktMjIuMy0xLjMtMjguNy01LTEwLjEtNS45LTEyLjgtMTIuMy0xMi45LTI5LjUtLjEtMzMtMTMuOC02My43LTQwLjktOTEuMy0xOS4zLTE5LjctNDAuOS0zMy02NS41LTQwLjUtNS45LTEuOC0xOS4xLTIuNC02My4zLTIuOS02OS40LS44LTg0LjguNi0xMDguNCAxMEM0NS45IDU5LjUgMTQuNyA5Ni4xIDMuMyAxNDIuOSAxLjIgMTUxLjcuNyAxNjUuOC4yIDI0Ni44Yy0uNiAxMDEuNS4xIDExNi40IDYuNCAxMzYuNSAxNS42IDQ5LjYgNTkuOSA4Ni4zIDEwNC40IDk0LjMgMTQuOCAyLjcgMTk3LjMgMy4zIDIxNiAuOCAzMi41LTQuNCA1OC0xNy41IDgxLjktNDEuOSAxNy4zLTE3LjcgMjguMS0zNi44IDM1LjItNjIuMSA0LjktMTcuNiA0LjUtMTQyLjggMi41LTE1MS43em0tMzIyLjEtNjMuNmM3LjgtNy45IDEwLTguMiA1OC44LTguMiA0My45IDAgNDUuNC4xIDUxLjggMy40IDkuMyA0LjcgMTMuNCAxMS4zIDEzLjQgMjEuOSAwIDkuNS0zLjggMTYuMi0xMi4zIDIxLjYtNC42IDIuOS03LjMgMy4xLTUwLjMgMy4zLTI2LjUuMi00Ny43LS40LTUwLjgtMS4yLTE2LjYtNC43LTIyLjgtMjguNS0xMC42LTQwLjh6bTE5MS44IDE5OS44bC0xNC45IDIuNC03Ny41LjljLTY4LjEuOC04Ny4zLS40LTkwLjktMi03LjEtMy4xLTEzLjgtMTEuNy0xNC45LTE5LjQtMS4xLTcuMyAyLjYtMTcuMyA4LjItMjIuNCA3LjEtNi40IDEwLjItNi42IDk3LjMtNi43IDg5LjYtLjEgODkuMS0uMSA5Ny42IDcuOCAxMi4xIDExLjMgOS41IDMxLjItNC45IDM5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsb2dnZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYyLjQgMTk2YzQuOC00LjkgNi4yLTUuMSAzNi40LTUuMSAyNy4yIDAgMjguMS4xIDMyLjEgMi4xIDUuOCAyLjkgOC4zIDcgOC4zIDEzLjYgMCA1LjktMi40IDEwLTcuNiAxMy40LTIuOCAxLjgtNC41IDEuOS0zMS4xIDIuMS0xNi40LjEtMjkuNS0uMi0zMS41LS44LTEwLjMtMi45LTE0LjEtMTcuNy02LjYtMjUuM3ptNjEuNCA5NC41Yy01My45IDAtNTUuOC4yLTYwLjIgNC4xLTMuNSAzLjEtNS43IDkuNC01LjEgMTMuOS43IDQuNyA0LjggMTAuMSA5LjIgMTIgMi4yIDEgMTQuMSAxLjcgNTYuMyAxLjJsNDcuOS0uNiA5LjItMS41YzktNS4xIDEwLjUtMTcuNCAzLjEtMjQuNC01LjMtNC43LTUtNC43LTYwLjQtNC43em0yMjMuNCAxMzAuMWMtMy41IDI4LjQtMjMgNTAuNC01MS4xIDU3LjUtNy4yIDEuOC05LjcgMS45LTE3Mi45IDEuOC0xNTcuOCAwLTE2NS45LS4xLTE3Mi0xLjgtOC40LTIuMi0xNS42LTUuNS0yMi4zLTEwLTUuNi0zLjgtMTMuOS0xMS44LTE3LTE2LjQtMy44LTUuNi04LjItMTUuMy0xMC0yMkMuMSA0MjMgMCA0MjAuMyAwIDI1Ni4zIDAgOTMuMiAwIDg5LjcgMS44IDgyLjYgOC4xIDU3LjkgMjcuNyAzOSA1MyAzMy40YzcuMy0xLjYgMzMyLjEtMS45IDM0MC0uMyAyMS4yIDQuMyAzNy45IDE3LjEgNDcuNiAzNi40IDcuNyAxNS4zIDctMS41IDcuMyAxODAuNi4yIDExNS44IDAgMTY0LjUtLjcgMTcwLjV6bS04NS40LTE4NS4yYy0xLjEtNS00LjItOS42LTcuNy0xMS41LTEuMS0uNi04LTEuMy0xNS41LTEuNy0xMi40LS42LTEzLjgtLjgtMTcuOC0zLjEtNi4yLTMuNi03LjktNy42LTgtMTguMyAwLTIwLjQtOC41LTM5LjQtMjUuMy01Ni41LTEyLTEyLjItMjUuMy0yMC41LTQwLjYtMjUuMS0zLjYtMS4xLTExLjgtMS41LTM5LjItMS44LTQyLjktLjUtNTIuNS40LTY3LjEgNi4yLTI3IDEwLjctNDYuMyAzMy40LTUzLjQgNjIuNC0xLjMgNS40LTEuNiAxNC4yLTEuOSA2NC4zLS40IDYyLjggMCA3Mi4xIDQgODQuNSA5LjcgMzAuNyAzNy4xIDUzLjQgNjQuNiA1OC40IDkuMiAxLjcgMTIyLjIgMi4xIDEzMy43LjUgMjAuMS0yLjcgMzUuOS0xMC44IDUwLjctMjUuOSAxMC43LTEwLjkgMTcuNC0yMi44IDIxLjgtMzguNSAzLjItMTAuOSAyLjktODguNCAxLjctOTMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmx1ZXRvb3RoQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTYuNDggMjYwLjAyM2w5Mi42MjYtMTAzLjMzM0wxNDMuMTI1IDB2MjA2LjMzbC04Ni4xMTEtODYuMTExLTMxLjQwNiAzMS40MDUgMTA4LjA2MSAxMDguMzk5TDI1LjYwOCAzNjguNDIybDMxLjQwNiAzMS40MDUgODYuMTExLTg2LjExMUwxNDUuODQgNTEybDE0OC41NTItMTQ4LjY0NC05Ny45MTItMTAzLjMzM3ptNDAuODYtMTAyLjk5NmwtNDkuOTc3IDQ5Ljk3OC0uMzM4LTEwMC4yOTUgNTAuMzE1IDUwLjMxN3pNMTg3LjM2MyAzMTMuMDRsNDkuOTc3IDQ5Ljk3OC01MC4zMTUgNTAuMzE2LjMzOC0xMDAuMjk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkyLjYgMTcxLjFMMjQ5LjcgMjE0bC0uMy04NiA0My4yIDQzLjFtLTQzLjIgMjE5LjhsNDMuMS00My4xLTQyLjktNDIuOS0uMiA4NnpNNDE2IDI1OS40QzQxNiA0NjUgMzQ0LjEgNTEyIDIzMC45IDUxMlMzMiA0NjUgMzIgMjU5LjQgMTE1LjQgMCAyMjguNiAwIDQxNiA1My45IDQxNiAyNTkuNHptLTE1OC41IDBsNzkuNC04OC42TDIxMS44IDM2LjV2MTc2LjlMMTM4IDEzOS42bC0yNyAyNi45IDkyLjcgOTMtOTIuNyA5MyAyNi45IDI2LjkgNzMuOC03My44IDIuMyAxNzAgMTI3LjQtMTI3LjUtODMuOS04OC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb290c3RyYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMzLjUsMjAxLjRjMC0yMi4xLTE1LjYtMzQuMy00My0zNC4zaC01MC40djcxLjJoNDIuNUMzMTUuNCwyMzguMiwzMzMuNSwyMjUsMzMzLjUsMjAxLjR6IE01MTcsMTg4LjYgYy05LjUtMzAuOS0xMC45LTY4LjgtOS44LTk4LjFjMS4xLTMwLjUtMjIuNy01OC41LTU0LjctNTguNUgxMjMuN2MtMzIuMSwwLTU1LjgsMjguMS01NC43LDU4LjVjMSwyOS4zLTAuMyw2Ny4yLTkuOCw5OC4xIGMtOS42LDMxLTI1LjcsNTAuNi01Mi4yLDUzLjF2MjguNWMyNi40LDIuNSw0Mi42LDIyLjEsNTIuMiw1My4xYzkuNSwzMC45LDEwLjksNjguOCw5LjgsOTguMWMtMS4xLDMwLjUsMjIuNyw1OC41LDU0LjcsNTguNWgzMjguNyBjMzIuMSwwLDU1LjgtMjguMSw1NC43LTU4LjVjLTEtMjkuMywwLjMtNjcuMiw5LjgtOTguMWM5LjYtMzEsMjUuNy01MC42LDUyLjEtNTMuMXYtMjguNUM1NDIuNywyMzkuMiw1MjYuNSwyMTkuNiw1MTcsMTg4LjZ6IE0zMDAuMiwzNzUuMWgtOTcuOVYxMzYuOGg5Ny40YzQzLjMsMCw3MS43LDIzLjQsNzEuNyw1OS40YzAsMjUuMy0xOS4xLDQ3LjktNDMuNSw1MS44djEuM2MzMy4yLDMuNiw1NS41LDI2LjYsNTUuNSw1OC4zIEMzODMuNCwzNDkuNywzNTIuMSwzNzUuMSwzMDAuMiwzNzUuMXogTTI5MC4yLDI2Ni40aC01MC4xdjc4LjRoNTIuM2MzNC4yLDAsNTIuMy0xMy43LDUyLjMtMzkuNSBDMzQ0LjcsMjc5LjYsMzI2LjEsMjY2LjQsMjkwLjIsMjY2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ0YyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTAuMjA0IDI0Mi42MzhjMjcuNzMtMTQuMTggNDUuMzc3LTM5LjM5IDQxLjI4LTgxLjMtNS4zNTgtNTcuMzUxLTUyLjQ1OC03Ni41NzMtMTE0Ljg1LTgxLjkyOVYwaC00OC41Mjh2NzcuMjAzYy0xMi42MDUgMC0yNS41MjUuMzE1LTM4LjQ0NC42M1YwaC00OC41Mjh2NzkuNDA5Yy0xNy44NDIuNTM5LTM4LjYyMi4yNzYtOTcuMzcgMHY1MS42NzhjMzguMzE0LS42NzggNTguNDE3LTMuMTQgNjMuMDIzIDIxLjQyN3YyMTcuNDI5Yy0yLjkyNSAxOS40OTItMTguNTI0IDE2LjY4NS01My4yNTUgMTYuMDcxTDMuNzY1IDQ0My42OGM4OC40ODEgMCA5Ny4zNy4zMTUgOTcuMzcuMzE1VjUxMmg0OC41Mjh2LTY3LjA2YzEzLjIzNC4zMTUgMjYuMTU0LjMxNSAzOC40NDQuMzE1VjUxMmg0OC41Mjh2LTY4LjAwNWM4MS4yOTktNC40MTIgMTM1LjY0Ny0yNC44OTQgMTQyLjg5NS0xMDEuNDY3IDUuNjcxLTYxLjQ0Ni0yMy4zMi04OC44NjItNjkuMzI2LTk5Ljg5ek0xNTAuNjA4IDEzNC41NTNjMjcuNDE1IDAgMTEzLjEyNi04LjUwNyAxMTMuMTI2IDQ4LjUyOCAwIDU0LjUxNS04NS43MSA0OC4yMTItMTEzLjEyNiA0OC4yMTJ2LTk2Ljc0em0wIDI1MS43NzZWMjc5LjgyMWMzMi43NzIgMCAxMzMuMTI3LTkuMTM4IDEzMy4xMjcgNTMuMjU1LS4wMDEgNjAuMTg2LTEwMC4zNTUgNTMuMjUzLTEzMy4xMjcgNTMuMjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWZmZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI3Ljg0IDM4MC42N2wtMTk2LjUgOTcuODJhMTguNiAxOC42IDAgMCAxLTE0LjY3IDBMMjAuMTYgMzgwLjY3Yy00LTItNC01LjI4IDAtNy4yOUw2Ny4yMiAzNTBhMTguNjUgMTguNjUgMCAwIDEgMTQuNjkgMGwxMzQuNzYgNjdhMTguNTEgMTguNTEgMCAwIDAgMTQuNjcgMGwxMzQuNzYtNjdhMTguNjIgMTguNjIgMCAwIDEgMTQuNjggMGw0Ny4wNiAyMy40M2M0LjA1IDEuOTYgNC4wNSA1LjI0IDAgNy4yNHptMC0xMzYuNTNsLTQ3LjA2LTIzLjQzYTE4LjYyIDE4LjYyIDAgMCAwLTE0LjY4IDBsLTEzNC43NiA2Ny4wOGExOC42OCAxOC42OCAwIDAgMS0xNC42NyAwTDgxLjkxIDIyMC43MWExOC42NSAxOC42NSAwIDAgMC0xNC42OSAwbC00Ny4wNiAyMy40M2MtNCAyLTQgNS4yOSAwIDcuMzFsMTk2LjUxIDk3LjhhMTguNiAxOC42IDAgMCAwIDE0LjY3IDBsMTk2LjUtOTcuOGM0LjA1LTIuMDIgNC4wNS01LjMgMC03LjMxek0yMC4xNiAxMzAuNDJsMTk2LjUgOTAuMjlhMjAuMDggMjAuMDggMCAwIDAgMTQuNjcgMGwxOTYuNTEtOTAuMjljNC0xLjg2IDQtNC44OSAwLTYuNzRMMjMxLjMzIDMzLjRhMTkuODggMTkuODggMCAwIDAtMTQuNjcgMGwtMTk2LjUgOTAuMjhjLTQuMDUgMS44NS00LjA1IDQuODggMCA2Ljc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXJvbW9iZWxleHBlcnRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2MTI4aDEyOFYzMkgwem0xMjAgMTIwSDhWNDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMzJIMTYwem0xMjAgMTIwSDE2OFY0MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzMkgzMjB6bTEyMCAxMjBIMzI4VjQwaDExMnYxMTJ6TTAgMTkydjEyOGgxMjhWMTkySDB6bTEyMCAxMjBIOFYyMDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMTkySDE2MHptMTIwIDEyMEgxNjhWMjAwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjE5MkgzMjB6bTEyMCAxMjBIMzI4VjIwMGgxMTJ2MTEyek0wIDM1MnYxMjhoMTI4VjM1Mkgwem0xMjAgMTIwSDhWMzYwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjM1MkgxNjB6bTEyMCAxMjBIMTY4VjM2MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzNTJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXlOTGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyQzEzMy4yNyAzMiA3Ljc5IDEzMi4zMiA3Ljc5IDI1NlMxMzMuMjcgNDgwIDI4OCA0ODBzMjgwLjIxLTEwMC4zMiAyODAuMjEtMjI0UzQ0Mi43MyAzMiAyODggMzJ6bS04NS4zOSAzNTcuMTlMNjQuMSAzOTAuNTVsNzcuMjUtMjkwLjc0aDEzMy40NGM2My4xNSAwIDg0LjkzIDI4LjY1IDc4IDcyLjg0YTYwLjI0IDYwLjI0IDAgMCAxLTEuNSA2Ljg1IDc3LjM5IDc3LjM5IDAgMCAwLTE3LjIxLTEuOTNjLTQyLjM1IDAtNzYuNjkgMzMuODgtNzYuNjkgNzUuNjUgMCAzNy4xNCAyNy4xNCA2OCA2Mi45MyA3NC40NS0xOC4yNCAzNy4xNi01Ni4xNiA2MC45Mi0xMTcuNzEgNjEuNTJ6TTM1OCAyMDcuMTFoMzJsLTIyLjE2IDkwLjMxaC0zNS40MWwtMTEuMTktMzUuNjMtNy44MyAzNS42M2gtMzcuODNsMjYuNjMtOTAuMzFoMzEuMzRsMTUgMzYuNzV6bTE0NS44NiAxODIuMDhIMzA2Ljc5TDMyMi42MyAzMjhhNzguOCA3OC44IDAgMCAwIDExLjQ3LjgzYzQyLjM0IDAgNzYuNjktMzMuODcgNzYuNjktNzUuNjUgMC0zMi42NS0yMS02MC40Ni01MC4zOC03MS4wNmwyMS4zMy04Mi4zNWg5Mi41bC01My4wNSAyMDUuMzZoMTAzLjg3ek0yMTEuNyAyNjkuMzlIMTg3bC0xMy44IDU2LjQ3aDI0LjdjMTYuMTQgMCAzMi4xMS0zLjE4IDM3Ljk0LTI2LjY1IDUuNTYtMjIuMzEtNy45OS0yOS44Mi0yNC4xNC0yOS44MnpNMjMzIDE3MGgtMjEuMzRMMjAwIDIxNy43MWgyMS4zN2MxOCAwIDM1LjM4LTE0LjY0IDM5LjIxLTMwLjE0QzI2NS4yMyAxNjguNzEgMjUxLjA3IDE3MCAyMzMgMTcwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXlzZWxsYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxNTAuN2w0Mi45IDE2MC43aC04NS44TDIyNCAxNTAuN3pNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNjUuMyAzMjUuM2wtOTQuNS0yOTguN0gxNTkuOEw2NS4zIDQwNS4zSDE1NmwxMTEuNy05MS42IDI0LjIgOTEuNmg5MC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW5hZGlhbk1hcGxlTGVhZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODMuOCAzNTEuN2MyLjUtMi41IDEwNS4yLTkyLjQgMTA1LjItOTIuNGwtMTcuNS03LjVjLTEwLTQuOS03LjQtMTEuNS01LTE3LjQgMi40LTcuNiAyMC4xLTY3LjMgMjAuMS02Ny4zcy00Ny43IDEwLTU3LjcgMTIuNWMtNy41IDIuNC0xMC0yLjUtMTIuNS03LjVzLTE1LTMyLjQtMTUtMzIuNC01Mi42IDU5LjktNTUuMSA2Mi4zYy0xMCA3LjUtMjAuMSAwLTE3LjYtMTAgMC0xMCAyNy42LTEyOS42IDI3LjYtMTI5LjZzLTMwLjEgMTcuNC00MC4xIDIyLjRjLTcuNSA1LTEyLjYgNS0xNy42LTVDMjkzLjUgNzIuMyAyNTUuOSAwIDI1NS45IDBzLTM3LjUgNzIuMy00Mi41IDc5LjhjLTUgMTAtMTAgMTAtMTcuNiA1LTEwLTUtNDAuMS0yMi40LTQwLjEtMjIuNFMxODMuMyAxODIgMTgzLjMgMTkyYzIuNSAxMC03LjUgMTcuNS0xNy42IDEwLTIuNS0yLjUtNTUuMS02Mi4zLTU1LjEtNjIuM1M5OC4xIDE2NyA5NS42IDE3MnMtNSA5LjktMTIuNSA3LjVDNzMgMTc3IDI1LjQgMTY3IDI1LjQgMTY3czE3LjYgNTkuNyAyMC4xIDY3LjNjMi40IDYgNSAxMi41LTUgMTcuNEwyMyAyNTkuM3MxMDIuNiA4OS45IDEwNS4yIDkyLjRjNS4xIDUgMTAgNy41IDUuMSAyMi41LTUuMSAxNS0xMC4xIDM1LjEtMTAuMSAzNS4xczk1LjItMjAuMSAxMDUuMy0yMi42YzguNy0uOSAxOC4zIDIuNSAxOC4zIDEyLjVTMjQxIDUxMiAyNDEgNTEyaDMwcy01LjgtMTAyLjctNS44LTExMi44IDkuNS0xMy40IDE4LjQtMTIuNWMxMCAyLjUgMTA1LjIgMjIuNiAxMDUuMiAyMi42cy01LTIwLjEtMTAtMzUuMSAwLTE3LjUgNS0yMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0FtYXpvblBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjQuNyAyMDEuOGMuMS0xMS44IDAtMjMuNSAwLTM1LjN2LTM1LjNjMC0xLjMuNC0yIDEuNC0yLjcgMTEuNS04IDI0LjEtMTIuMSAzOC4yLTExLjEgMTIuNS45IDIyLjcgNyAyOC4xIDIxLjcgMy4zIDguOSA0LjEgMTguMiA0LjEgMjcuNyAwIDguNy0uNyAxNy4zLTMuNCAyNS42LTUuNyAxNy44LTE4LjcgMjQuNy0zNS43IDIzLjktMTEuNy0uNS0yMS45LTUtMzEuNC0xMS43LS45LS44LTEuNC0xLjYtMS4zLTIuOHptMTU0LjkgMTQuNmM0LjYgMS44IDkuMyAyIDE0LjEgMS41IDExLjYtMS4yIDIxLjktNS43IDMxLjMtMTIuNS45LS42IDEuMy0xLjMgMS4zLTIuNS0uMS0zLjkgMC03LjkgMC0xMS44IDAtNC0uMS04IDAtMTIgMC0xLjQtLjQtMi0xLjgtMi4yLTctLjktMTMuOS0yLjItMjAuOS0yLjktNy0uNi0xNC0uMy0yMC44IDEuOS02LjcgMi4yLTExLjcgNi4yLTEzLjcgMTMuMS0xLjYgNS40LTEuNiAxMC44LjEgMTYuMiAxLjYgNS41IDUuMiA5LjIgMTAuNCAxMS4yek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS0yMDcuNSAyMy45Yy40IDEuNy45IDMuNCAxLjYgNS4xIDE2LjUgNDAuNiAzMi45IDgxLjMgNDkuNSAxMjEuOSAxLjQgMy41IDEuNyA2LjQuMiA5LjktMi44IDYuMi00LjkgMTIuNi03LjggMTguNy0yLjYgNS41LTYuNyA5LjUtMTIuNyAxMS4yLTQuMiAxLjEtOC41IDEuMy0xMi45LjktMi4xLS4yLTQuMi0uNy02LjMtLjgtMi44LS4yLTQuMiAxLjEtNC4zIDQtLjEgMi44LS4xIDUuNiAwIDguMy4xIDQuNiAxLjYgNi43IDYuMiA3LjUgNC43LjggOS40IDEuNiAxNC4yIDEuNyAxNC4zLjMgMjUuNy01LjQgMzMuMS0xNy45IDIuOS00LjkgNS42LTEwLjEgNy43LTE1LjQgMTkuOC01MC4xIDM5LjUtMTAwLjMgNTkuMi0xNTAuNS42LTEuNSAxLjEtMyAxLjMtNC42LjQtMi40LS43LTMuNi0zLjEtMy43LTUuNi0uMS0xMS4xIDAtMTYuNyAwLTMuMSAwLTUuMyAxLjQtNi40IDQuMy0uNCAxLjEtLjkgMi4zLTEuMyAzLjRsLTI5LjEgODMuN2MtMi4xIDYuMS00LjIgMTIuMS02LjUgMTguNi0uNC0uOS0uNi0xLjQtLjgtMS45LTEwLjgtMjkuOS0yMS42LTU5LjktMzIuNC04OS44LTEuNy00LjctMy41LTkuNS01LjMtMTQuMi0uOS0yLjUtMi43LTQtNS40LTQtNi40LS4xLTEyLjgtLjItMTkuMi0uMS0yLjIgMC0zLjMgMS42LTIuOCAzLjd6TTI0Mi40IDIwNmMxLjcgMTEuNyA3LjYgMjAuOCAxOCAyNi42IDkuOSA1LjUgMjAuNyA2LjIgMzEuNyA0LjYgMTIuNy0xLjkgMjMuOS03LjMgMzMuOC0xNS41LjQtLjMuOC0uNiAxLjQtMSAuNSAzLjIuOSA2LjIgMS41IDkuMi41IDIuNiAyLjEgNC4zIDQuNSA0LjQgNC42LjEgOS4xLjEgMTMuNyAwIDIuMy0uMSAzLjgtMS42IDQtMy45LjEtLjguMS0xLjYuMS0yLjN2LTg4LjhjMC0zLjYtLjItNy4yLS43LTEwLjgtMS42LTEwLjgtNi4yLTE5LjctMTUuOS0yNS40LTUuNi0zLjMtMTEuOC01LTE4LjItNS45LTMtLjQtNi0uNy05LjEtMS4xaC0xMGMtLjguMS0xLjYuMy0yLjUuMy04LjIuNC0xNi4zIDEuNC0yNC4yIDMuNS01LjEgMS4zLTEwIDMuMi0xNSA0LjktMyAxLTQuNSAzLjItNC40IDYuNS4xIDIuOC0uMSA1LjYgMCA4LjMuMSA0LjEgMS44IDUuMiA1LjcgNC4xIDYuNS0xLjcgMTMuMS0zLjUgMTkuNy00LjggMTAuMy0xLjkgMjAuNy0yLjcgMzEuMS0xLjIgNS40LjggMTAuNSAyLjQgMTQuMSA3IDMuMSA0IDQuMiA4LjggNC40IDEzLjcuMyA2LjkuMiAxMy45LjMgMjAuOCAwIC40LS4xLjctLjIgMS4yLS40IDAtLjggMC0xLjEtLjEtOC44LTIuMS0xNy43LTMuNi0yNi44LTQuMS05LjUtLjUtMTguOS4xLTI3LjkgMy4yLTEwLjggMy44LTE5LjUgMTAuMy0yNC42IDIwLjgtNC4xIDguMy00LjYgMTctMy40IDI1Ljh6TTk4LjcgMTA2Ljl2MTc1LjNjMCAuOCAwIDEuNy4xIDIuNS4yIDIuNSAxLjcgNC4xIDQuMSA0LjIgNS45LjEgMTEuOC4xIDE3LjcgMCAyLjUgMCA0LTEuNyA0LjEtNC4xLjEtLjguMS0xLjcuMS0yLjV2LTYwLjdjLjkuNyAxLjQgMS4yIDEuOSAxLjYgMTUgMTIuNSAzMi4yIDE2LjYgNTEuMSAxMi45IDE3LjEtMy40IDI4LjktMTMuOSAzNi43LTI5LjIgNS44LTExLjYgOC4zLTI0LjEgOC43LTM3IC41LTE0LjMtMS0yOC40LTYuOC00MS43LTcuMS0xNi40LTE4LjktMjcuMy0zNi43LTMwLjktMi43LS42LTUuNS0uOC04LjItMS4yaC03Yy0xLjIuMi0yLjQuMy0zLjYuNS0xMS43IDEuNC0yMi4zIDUuOC0zMS44IDEyLjctMiAxLjQtMy45IDMtNS45IDQuNS0uMS0uNS0uMy0uOC0uNC0xLjItLjQtMi4zLS43LTQuNi0xLjEtNi45LS42LTMuOS0yLjUtNS41LTYuNC01LjZoLTkuN2MtNS45LS4xLTYuOSAxLTYuOSA2Ljh6TTQ5My42IDMzOWMtMi43LS43LTUuMSAwLTcuNiAxLTQzLjkgMTguNC04OS41IDMwLjItMTM2LjggMzUuOC0xNC41IDEuNy0yOS4xIDIuOC00My43IDMuMi0yNi42LjctNTMuMi0uOC03OS42LTQuMy0xNy44LTIuNC0zNS41LTUuNy01My05LjktMzctOC45LTcyLjctMjEuNy0xMDYuNy0zOC44LTguOC00LjQtMTcuNC05LjMtMjYuMS0xNC0zLjgtMi4xLTYuMi0xLjUtOC4yIDIuMXYxLjdjMS4yIDEuNiAyLjIgMy40IDMuNyA0LjggMzYgMzIuMiA3Ni42IDU2LjUgMTIyIDcyLjkgMjEuOSA3LjkgNDQuNCAxMy43IDY3LjMgMTcuNSAxNCAyLjMgMjggMy44IDQyLjIgNC41IDMgLjEgNiAuMiA5IC40LjcgMCAxLjQuMiAyLjEuM2gxNy43Yy43LS4xIDEuNC0uMyAyLjEtLjMgMTQuOS0uNCAyOS44LTEuOCA0NC42LTQgMjEuNC0zLjIgNDIuNC04LjEgNjIuOS0xNC43IDI5LjYtOS42IDU3LjctMjIuNCA4My40LTQwLjEgMi44LTEuOSA1LjctMy44IDgtNi4yIDQuMy00LjQgMi4zLTEwLjQtMy4zLTExLjl6bTUwLjQtMjcuN2MtLjgtNC4yLTQtNS44LTcuNi03LTUuNy0xLjktMTEuNi0yLjgtMTcuNi0zLjMtMTEtLjktMjItLjQtMzIuOCAxLjYtMTIgMi4yLTIzLjQgNi4xLTMzLjUgMTMuMS0xLjIuOC0yLjQgMS44LTMuMSAzLS42LjktLjcgMi4zLS41IDMuNC4zIDEuMyAxLjcgMS42IDMgMS41LjYgMCAxLjIgMCAxLjgtLjFsMTkuNS0yLjFjOS42LS45IDE5LjItMS41IDI4LjgtLjggNC4xLjMgOC4xIDEuMiAxMiAyLjIgNC4zIDEuMSA2LjIgNC40IDYuNCA4LjcuMyA2LjctMS4yIDEzLjEtMi45IDE5LjUtMy41IDEyLjktOC4zIDI1LjQtMTMuMyAzNy44LS4zLjgtLjcgMS43LS44IDIuNS0uNCAyLjUgMSA0IDMuNCAzLjUgMS40LS4zIDMtMS4xIDQtMi4xIDMuNy0zLjYgNy41LTcuMiAxMC42LTExLjIgMTAuNy0xMy44IDE3LTI5LjYgMjAuNy00Ni42LjctMyAxLjItNi4xIDEuNy05LjEuMi00LjcuMi05LjYuMi0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0FtZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI1LjEgMTY3LjhjMC0xNi40LTE0LjEtMTguNC0yNy40LTE4LjRsLTM5LjEtLjN2NjkuM0gyNzV2LTI1LjFoMThjMTguNCAwIDE0LjUgMTAuMyAxNC44IDI1LjFoMTYuNnYtMTMuNWMwLTkuMi0xLjUtMTUuMS0xMS0xOC40IDcuNC0zIDExLjgtMTAuNyAxMS43LTE4Ljd6bS0yOS40IDExLjNIMjc1di0xNS4zaDIxYzUuMSAwIDEwLjcgMSAxMC43IDcuNCAwIDYuNi01LjMgNy45LTExIDcuOXpNMjc5IDI2OC42aC01Mi43bC0yMSAyMi44LTIwLjUtMjIuOGgtNjYuNWwtLjEgNjkuM2g2NS40bDIxLjMtMjMgMjAuNCAyM2gzMi4ybC4xLTIzLjNjMTguOSAwIDQ5LjMgNC42IDQ5LjMtMjMuMyAwLTE3LjMtMTIuMy0yMi43LTI3LjktMjIuN3ptLTEwMy44IDU0LjdoLTQwLjZ2LTEzLjhoMzYuM3YtMTQuMWgtMzYuM3YtMTIuNWg0MS43bDE3LjkgMjAuMnptNjUuOCA4LjJsLTI1LjMtMjguMUwyNDEgMjc2em0zNy44LTMxaC0yMS4ydi0xNy42aDIxLjVjNS42IDAgMTAuMiAyLjMgMTAuMiA4LjQgMCA2LjQtNC42IDkuMi0xMC41IDkuMnptLTMxLjYtMTM2Ljd2LTE0LjZoLTU1LjV2NjkuM2g1NS41di0xNC4zaC0zOC45di0xMy44aDM3Ljh2LTE0LjFoLTM3Ljh2LTEyLjV6TTU3NiAyNTUuNGgtLjJ6bS0xOTQuNiAzMS45YzAtMTYuNC0xNC4xLTE4LjctMjcuMS0xOC43aC0zOS40bC0uMSA2OS4zaDE2LjZsLjEtMjUuM2gxNy42YzExIDAgMTQuOCAyIDE0LjggMTMuOGwtLjEgMTEuNWgxNi42bC4xLTEzLjhjMC04LjktMS44LTE1LjEtMTEtMTguNCA3LjctMy4xIDExLjgtMTAuOCAxMS45LTE4LjR6bS0yOS4yIDExLjJoLTIwLjd2LTE1LjZoMjFjNS4xIDAgMTAuNyAxIDEwLjcgNy40IDAgNi45LTUuNCA4LjItMTEgOC4yem0tMTcyLjgtODB2LTY5LjNoLTI3LjZsLTE5LjcgNDctMjEuNy00N0g4My4zdjY1LjdsLTI4LjEtNjUuN0gzMC43TDEgMjE4LjVoMTcuOWw2LjQtMTUuM2gzNC41bDYuNCAxNS4zSDEwMHYtNTQuMmwyNCA1NC4yaDE0LjZsMjQtNTQuMnY1NC4yek0zMS4yIDE4OC44bDExLjItMjcuNiAxMS41IDI3LjZ6bTQ3Ny40IDE1OC45di00LjVjLTEwLjggNS42LTMuOSA0LjUtMTU2LjcgNC41IDAtMjUuMi4xLTIzLjkgMC0yNS4yLTEuNy0uMS0zLjItLjEtOS40LS4xIDAgMTcuOS0uMSA2LjgtLjEgMjUuM2gtMzkuNmMwLTEyLjEuMS0xNS4zLjEtMjkuMi0xMCA2LTIyLjggNi40LTM0LjMgNi4yIDAgMTQuNy0uMSA4LjMtLjEgMjNoLTQ4LjljLTUuMS01LjctMi43LTMuMS0xNS40LTE3LjQtMy4yIDMuNS0xMi44IDEzLjktMTYuMSAxNy40aC04MnYtOTIuM2g4My4xYzUgNS42IDIuOCAzLjEgMTUuNSAxNy4yIDMuMi0zLjUgMTIuMi0xMy40IDE1LjctMTcuMmg1OGM5LjggMCAxOCAxLjkgMjQuMyA1LjZ2LTUuNmM1NC4zIDAgNjQuMy0xLjQgNzUuNyA1LjF2LTUuMWg3OC4ydjUuMmMxMS40LTYuOSAxOS42LTUuMiA2NC45LTUuMnY1YzEwLjMtNS45IDE2LjYtNS4yIDU0LjMtNVY4MGMwLTI2LjUtMjEuNS00OC00OC00OGgtNDgwYy0yNi41IDAtNDggMjEuNS00OCA0OHYxMDkuOGM5LjQtMjEuOSAxOS43LTQ2IDIzLjEtNTMuOWgzOS43YzQuMyAxMC4xIDEuNiAzLjcgOSAyMS4xdi0yMS4xaDQ2YzIuOSA2LjIgMTEuMSAyNCAxMy45IDMwIDUuOC0xMy42IDEwLjEtMjMuOSAxMi42LTMwaDEwM2MwLS4xIDExLjUgMCAxMS42IDAgNDMuNy4yIDUzLjYtLjggNjQuNCA1LjN2LTUuM0gzNjN2OS4zYzcuNi02LjEgMTcuOS05LjMgMzAuNy05LjNoMjcuNmMwIC41IDEuOS4zIDIuMy4zSDQ1NmM0LjIgOS44IDIuNiA2IDguOCAyMC42di0yMC42aDQzLjNjNC45IDgtMS0xLjggMTEuMiAxOC40di0xOC40aDM5Ljl2OTJoLTQxLjZjLTUuNC05LTEuNC0yLjItMTMuMi0yMS45djIxLjloLTUyLjhjLTYuNC0xNC44LS4xLS4zLTYuNi0xNS4zaC0xOWMtNC4yIDEwLTIuMiA1LjItNi40IDE1LjNoLTI2LjhjLTEyLjMgMC0yMi4zLTMtMjkuNy04Ljl2OC45aC02Ni41Yy0uMy0xMy45LS4xLTI0LjgtLjEtMjQuOC0xLjgtLjMtMy40LS4yLTkuOC0uMnYyNS4xSDE1MS4ydi0xMS40Yy0yLjUgNS42LTIuNyA1LjktNS4xIDExLjRoLTI5LjVjLTQtOC45LTIuOS02LjQtNS4xLTExLjR2MTEuNEg1OC42Yy00LjItMTAuMS0yLjItNS4zLTYuNC0xNS4zSDMzYy00LjIgMTAtMi4yIDUuMi02LjQgMTUuM0gwVjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODAuMWMyNi41IDAgNDgtMjEuNSA0OC00OHYtOTAuNGMtMTIuNyA4LjMtMzIuNyA2LjEtNjcuNSA2LjF6bTM2LjMtNjQuNUg1NzV2LTE0LjZoLTMyLjljLTEyLjggMC0yMy44IDYuNi0yMy44IDIwLjcgMCAzMyA0Mi43IDEyLjggNDIuNyAyNy40IDAgNS4xLTQuMyA2LjQtOC40IDYuNGgtMzJsLS4xIDE0LjhoMzJjOC40IDAgMTcuNi0xLjggMjIuNS04Ljl2LTI1LjhjLTEwLjUtMTMuOC0zOS4zLTEuMy0zOS4zLTEzLjUgMC01LjggNC42LTYuNSA5LjItNi41em0tNTcgMzkuOGgtMzIuMmwtLjEgMTQuOGgzMi4yYzE0LjggMCAyNi4yLTUuNiAyNi4yLTIyIDAtMzMuMi00Mi45LTExLjItNDIuOS0yNi4zIDAtNS42IDQuOS02LjQgOS4yLTYuNGgzMC40di0xNC42aC0zMy4yYy0xMi44IDAtMjMuNSA2LjYtMjMuNSAyMC43IDAgMzMgNDIuNyAxMi41IDQyLjcgMjcuNC0uMSA1LjQtNC43IDYuNC04LjggNi40em0tNDIuMi00MC4xdi0xNC4zaC01NS4ybC0uMSA2OS4zaDU1LjJsLjEtMTQuMy0zOC42LS4zdi0xMy44SDQ0NXYtMTQuMWgtMzcuOHYtMTIuNXptLTU2LjMtMTA4LjFjLS4zLjItMS40IDIuMi0xLjQgNy42IDAgNiAuOSA3LjcgMS4xIDcuOS4yLjEgMS4xLjUgMy40LjVsNy4zLTE2LjljLTEuMSAwLTIuMS0uMS0zLjEtLjEtNS42IDAtNyAuNy03LjMgMXptMjAuNC0xMC41aC0uMXptLTE2LjItMTUuMmMtMjMuNSAwLTM0IDEyLTM0IDM1LjMgMCAyMi4yIDEwLjIgMzQgMzMgMzRoMTkuMmw2LjQtMTUuM2gzNC4zbDYuNiAxNS4zaDMzLjd2LTUxLjlsMzEuMiA1MS45aDIzLjZ2LTY5aC0xNi45djQ4LjFsLTI5LjEtNDguMWgtMjUuM3Y2NS40bC0yNy45LTY1LjRoLTI0LjhsLTIzLjUgNTQuNWgtNy40Yy0xMy4zIDAtMTYuMS04LjEtMTYuMS0xOS45IDAtMjMuOCAxNS43LTIwIDMzLjEtMTkuN3YtMTUuMnptNDIuMSAxMi4xbDExLjIgMjcuNmgtMjIuOHptLTEwMS4xLTEydjY5LjNoMTYuOXYtNjkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMiAyMTguNGMwIDE3LjItMTAuNSAyNy4xLTI5IDI3LjFoLTI0LjN2LTU0LjJoMjQuNGMxOC40IDAgMjguOSA5LjggMjguOSAyNy4xem00Ny41IDYyLjZjMCA4LjMgNy4yIDEzLjcgMTguNSAxMy43IDE0LjQgMCAyNS4yLTkuMSAyNS4yLTIxLjl2LTcuN2wtMjMuNSAxLjVjLTEzLjMuOS0yMC4yIDUuOC0yMC4yIDE0LjR6TTU3NiA3OXYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4Vjc5YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI3LjggMTk3LjJjOC40LjcgMTYuOC00LjIgMjIuMS0xMC40IDUuMi02LjQgOC42LTE1IDcuNy0yMy43LTcuNC4zLTE2LjYgNC45LTIxLjkgMTEuMy00LjggNS41LTguOSAxNC40LTcuOSAyMi44em02MC42IDc0LjVjLS4yLS4yLTE5LjYtNy42LTE5LjgtMzAtLjItMTguNyAxNS4zLTI3LjcgMTYtMjguMi04LjgtMTMtMjIuNC0xNC40LTI3LjEtMTQuNy0xMi4yLS43LTIyLjYgNi45LTI4LjQgNi45LTUuOSAwLTE0LjctNi42LTI0LjMtNi40LTEyLjUuMi0yNC4yIDcuMy0zMC41IDE4LjYtMTMuMSAyMi42LTMuNCA1NiA5LjMgNzQuNCA2LjIgOS4xIDEzLjcgMTkuMSAyMy41IDE4LjcgOS4zLS40IDEzLTYgMjQuMi02IDExLjMgMCAxNC41IDYgMjQuMyA1LjkgMTAuMi0uMiAxNi41LTkuMSAyMi44LTE4LjIgNi45LTEwLjQgOS44LTIwLjQgMTAtMjF6bTEzNS40LTUzLjRjMC0yNi42LTE4LjUtNDQuOC00NC45LTQ0LjhoLTUxLjJ2MTM2LjRoMjEuMnYtNDYuNmgyOS4zYzI2LjggMCA0NS42LTE4LjQgNDUuNi00NXptOTAgMjMuN2MwLTE5LjctMTUuOC0zMi40LTQwLTMyLjQtMjIuNSAwLTM5LjEgMTIuOS0zOS43IDMwLjVoMTkuMWMxLjYtOC40IDkuNC0xMy45IDIwLTEzLjkgMTMgMCAyMC4yIDYgMjAuMiAxNy4ydjcuNWwtMjYuNCAxLjZjLTI0LjYgMS41LTM3LjkgMTEuNi0zNy45IDI5LjEgMCAxNy43IDEzLjcgMjkuNCAzMy40IDI5LjQgMTMuMyAwIDI1LjYtNi43IDMxLjItMTcuNGguNFYzMTBoMTkuNnYtNjh6TTUxNiAyMTAuOWgtMjEuNWwtMjQuOSA4MC42aC0uNGwtMjQuOS04MC42SDQyMmwzNS45IDk5LjMtMS45IDZjLTMuMiAxMC4yLTguNSAxNC4yLTE3LjkgMTQuMi0xLjcgMC00LjktLjItNi4yLS4zdjE2LjRjMS4yLjQgNi41LjUgOC4xLjUgMjAuNyAwIDMwLjQtNy45IDM4LjktMzEuOEw1MTYgMjEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjRGluZXJzQ2x1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuNyA3OS45Yy05Ni45IDAtMTc1LjggNzguNi0xNzUuOCAxNzUuOCAwIDk2LjkgNzguOSAxNzUuOCAxNzUuOCAxNzUuOCA5Ny4yIDAgMTc1LjgtNzguOSAxNzUuOC0xNzUuOCAwLTk3LjItNzguNi0xNzUuOC0xNzUuOC0xNzUuOHptLTM5LjkgMjc5LjZjLTQxLjctMTUuOS03MS40LTU2LjQtNzEuNC0xMDMuOHMyOS43LTg3LjkgNzEuNC0xMDQuMXYyMDcuOXptNzkuOC4zVjE1MS42YzQxLjcgMTYuMiA3MS40IDU2LjcgNzEuNCAxMDQuMXMtMjkuNyA4Ny45LTcxLjQgMTA0LjF6TTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTMyOS43IDQ0OGgtOTAuM2MtMTA2LjIgMC0xOTMuOC04NS41LTE5My44LTE5MC4yQzQ1LjYgMTQzLjIgMTMzLjIgNjQgMjM5LjQgNjRoOTAuM2MxMDUgMCAyMDAuNyA3OS4yIDIwMC43IDE5My44IDAgMTA0LjctOTUuNyAxOTAuMi0yMDAuNyAxOTAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NEaXNjb3ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjAuNCAxOTYuMWMwLTcuOS01LjUtMTIuMS0xNS42LTEyLjFoLTQuOXYyNC45aDQuN2MxMC4zIDAgMTUuOC00LjQgMTUuOC0xMi44ek01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNDQuMSAxMzguOWMyMi42IDAgNTIuOS00LjEgNTIuOSAyNC40IDAgMTIuNi02LjYgMjAuNy0xOC43IDIzLjJsMjUuOCAzNC40aC0xOS42bC0yMi4yLTMyLjhoLTIuMnYzMi44aC0xNnptLTU1LjkuMWg0NS4zdjE0SDQ0NHYxOC4yaDI4LjNWMjE3SDQ0NHYyMi4yaDI5LjNWMjUzSDQyOHptLTY4LjcgMGwyMS45IDU1LjIgMjIuMi01NS4yaDE3LjVsLTM1LjUgODQuMmgtOC42bC0zNS04NC4yem0tNTUuOS0zYzI0LjcgMCA0NC42IDIwIDQ0LjYgNDQuNiAwIDI0LjctMjAgNDQuNi00NC42IDQ0LjYtMjQuNyAwLTQ0LjYtMjAtNDQuNi00NC42IDAtMjQuNyAyMC00NC42IDQ0LjYtNDQuNnptLTQ5LjMgNi4xdjE5Yy0yMC4xLTIwLjEtNDYuOC00LjctNDYuOCAxOSAwIDI1IDI3LjUgMzguNSA0Ni44IDE5LjJ2MTljLTI5LjcgMTQuMy02My4zLTUuNy02My4zLTM4LjIgMC0zMS4yIDMzLjEtNTMgNjMuMy0zOHptLTk3LjIgNjYuM2MxMS40IDAgMjIuNC0xNS4zLTMuMy0yNC40LTE1LTUuNS0yMC4yLTExLjQtMjAuMi0yMi43IDAtMjMuMiAzMC42LTMxLjQgNDkuNy0xNC4zbC04LjQgMTAuOGMtMTAuNC0xMS42LTI0LjktNi4yLTI0LjkgMi41IDAgNC40IDIuNyA2LjkgMTIuMyAxMC4zIDE4LjIgNi42IDIzLjYgMTIuNSAyMy42IDI1LjYgMCAyOS41LTM4LjggMzcuNC01Ni42IDExLjNsMTAuMy05LjljMy43IDcuMSA5LjkgMTAuOCAxNy41IDEwLjh6TTU1LjQgMjUzSDMydi04MmgyMy40YzI2LjEgMCA0NC4xIDE3IDQ0LjEgNDEuMSAwIDE4LjUtMTMuMiA0MC45LTQ0LjEgNDAuOXptNjcuNSAwaC0xNnYtODJoMTZ6TTU0NCA0MzNjMCA4LjItNi44IDE1LTE1IDE1SDEyOGMxODkuNi0zNS42IDM4Mi43LTEzOS4yIDQxNi0xNjB6TTc0LjEgMTkxLjZjLTUuMi00LjktMTEuNi02LjYtMjEuOS02LjZINDh2NTQuMmg0LjJjMTAuMyAwIDE3LTIgMjEuOS02LjQgNS43LTUuMiA4LjktMTIuOCA4LjktMjAuN3MtMy4yLTE1LjUtOC45LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjSmNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMS41IDI0NC4zVjIxMmM0MS4yIDAgMzguNS4yIDM4LjUuMiA3LjMgMS4zIDEzLjMgNy4zIDEzLjMgMTYgMCA4LjgtNiAxNC41LTEzLjMgMTUuOC0xLjIuNC0zLjMuMy0zOC41LjN6bTQyLjggMjAuMmMtMi44LS43LTMuMy0uNS00Mi44LS41djM1YzM5LjYgMCA0MCAuMiA0Mi44LS41IDcuNS0xLjUgMTMuNS04IDEzLjUtMTcgMC04LjctNi0xNS41LTEzLjUtMTd6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTgyIDE5Mi4zaC01N2MwIDY3LjEgMTAuNyAxMDkuNy0zNS44IDEwOS43LTE5LjUgMC0zOC44LTUuNy01Ny4yLTE0Ljh2MjhjMzAgOC4zIDY4IDguMyA2OCA4LjMgOTcuOSAwIDgyLTQ3LjcgODItMTMxLjJ6bTE3OC41IDQuNWMtNjMuNC0xNi0xNjUtMTQuOS0xNjUgNTkuMyAwIDc3LjEgMTA4LjIgNzMuNiAxNjUgNTkuMlYyODdDMzEyLjkgMzExLjcgMjUzIDMwOSAyNTMgMjU2czU5LjgtNTUuNiAxMDcuNS0zMS4ydi0yOHpNNTQ0IDI4Ni41YzAtMTguNS0xNi41LTMwLjUtMzgtMzJ2LS44YzE5LjUtMi43IDMwLjMtMTUuNSAzMC4zLTMwLjIgMC0xOS0xNS43LTMwLTM3LTMxIDAgMCA2LjMtLjMtMTIwLjMtLjN2MTI3LjVoMTIyLjdjMjQuMy4xIDQyLjMtMTIuOSA0Mi4zLTMzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjTWFzdGVyY2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODIuOSA0MTAuM2MwIDYuOC00LjYgMTEuNy0xMS4yIDExLjctNi44IDAtMTEuMi01LjItMTEuMi0xMS43IDAtNi41IDQuNC0xMS43IDExLjItMTEuNyA2LjYgMCAxMS4yIDUuMiAxMS4yIDExLjd6bS0zMTAuOC0xMS43Yy03LjEgMC0xMS4yIDUuMi0xMS4yIDExLjcgMCA2LjUgNC4xIDExLjcgMTEuMiAxMS43IDYuNSAwIDEwLjktNC45IDEwLjktMTEuNy0uMS02LjUtNC40LTExLjctMTAuOS0xMS43em0xMTcuNS0uM2MtNS40IDAtOC43IDMuNS05LjUgOC43aDE5LjFjLS45LTUuNy00LjQtOC43LTkuNi04Ljd6bTEwNy44LjNjLTYuOCAwLTEwLjkgNS4yLTEwLjkgMTEuNyAwIDYuNSA0LjEgMTEuNyAxMC45IDExLjcgNi44IDAgMTEuMi00LjkgMTEuMi0xMS43IDAtNi41LTQuNC0xMS43LTExLjItMTEuN3ptMTA1LjkgMjYuMWMwIC4zLjMuNS4zIDEuMSAwIC4zLS4zLjUtLjMgMS4xLS4zLjMtLjMuNS0uNS44LS4zLjMtLjUuNS0xLjEuNS0uMy4zLS41LjMtMS4xLjMtLjMgMC0uNSAwLTEuMS0uMy0uMyAwLS41LS4zLS44LS41LS4zLS4zLS41LS41LS41LS44LS4zLS41LS4zLS44LS4zLTEuMSAwLS41IDAtLjguMy0xLjEgMC0uNS4zLS44LjUtMS4xLjMtLjMuNS0uMy44LS41LjUtLjMuOC0uMyAxLjEtLjMuNSAwIC44IDAgMS4xLjMuNS4zLjguMyAxLjEuNXMuMi42LjUgMS4xem0tMi4yIDEuNGMuNSAwIC41LS4zLjgtLjMuMy0uMy4zLS41LjMtLjggMC0uMyAwLS41LS4zLS44LS4zIDAtLjUtLjMtMS4xLS4zaC0xLjZ2My41aC44VjQyNmguM2wxLjEgMS40aC44bC0xLjEtMS4zek01NzYgODF2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MWMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTY0IDIyMC42YzAgNzYuNSA2Mi4xIDEzOC41IDEzOC41IDEzOC41IDI3LjIgMCA1My45LTguMiA3Ni41LTIzLjEtNzIuOS01OS4zLTcyLjQtMTcxLjIgMC0yMzAuNS0yMi42LTE1LTQ5LjMtMjMuMS03Ni41LTIzLjEtNzYuNC0uMS0xMzguNSA2Mi0xMzguNSAxMzguMnptMjI0IDEwOC44YzcwLjUtNTUgNzAuMi0xNjIuMiAwLTIxNy41LTcwLjIgNTUuMy03MC41IDE2Mi42IDAgMjE3LjV6bS0xNDIuMyA3Ni4zYzAtOC43LTUuNy0xNC40LTE0LjctMTQuNy00LjYgMC05LjUgMS40LTEyLjggNi41LTIuNC00LjEtNi41LTYuNS0xMi4yLTYuNS0zLjggMC03LjYgMS40LTEwLjYgNS40VjM5MmgtOC4ydjM2LjdoOC4yYzAtMTguOS0yLjUtMzAuMiA5LTMwLjIgMTAuMiAwIDguMiAxMC4yIDguMiAzMC4yaDcuOWMwLTE4LjMtMi41LTMwLjIgOS0zMC4yIDEwLjIgMCA4LjIgMTAgOC4yIDMwLjJoOC4ydi0yM3ptNDQuOS0xMy43aC03Ljl2NC40Yy0yLjctMy4zLTYuNS01LjQtMTEuNy01LjQtMTAuMyAwLTE4LjIgOC4yLTE4LjIgMTkuMyAwIDExLjIgNy45IDE5LjMgMTguMiAxOS4zIDUuMiAwIDktMS45IDExLjctNS40djQuNmg3LjlWMzkyem00MC41IDI1LjZjMC0xNS0yMi45LTguMi0yMi45LTE1LjIgMC01LjcgMTEuOS00LjggMTguNS0xLjFsMy4zLTYuNWMtOS40LTYuMS0zMC4yLTYtMzAuMiA4LjIgMCAxNC4zIDIyLjkgOC4zIDIyLjkgMTUgMCA2LjMtMTMuNSA1LjgtMjAuNy44bC0zLjUgNi4zYzExLjIgNy42IDMyLjYgNiAzMi42LTcuNXptMzUuNCA5LjNsLTIuMi02LjhjLTMuOCAyLjEtMTIuMiA0LjQtMTIuMi00LjF2LTE2LjZoMTMuMVYzOTJoLTEzLjF2LTExLjJoLTguMlYzOTJoLTcuNnY3LjNoNy42VjQxNmMwIDE3LjYgMTcuMyAxNC40IDIyLjYgMTAuOXptMTMuMy0xMy40aDI3LjVjMC0xNi4yLTcuNC0yMi42LTE3LjQtMjIuNi0xMC42IDAtMTguMiA3LjktMTguMiAxOS4zIDAgMjAuNSAyMi42IDIzLjkgMzMuOCAxNC4ybC0zLjgtNmMtNy44IDYuNC0xOS42IDUuOC0yMS45LTQuOXptNTkuMS0yMS41Yy00LjYtMi0xMS42LTEuOC0xNS4yIDQuNFYzOTJoLTguMnYzNi43aDguMlY0MDhjMC0xMS42IDkuNS0xMC4xIDEyLjgtOC40bDIuNC03LjZ6bTEwLjYgMTguM2MwLTExLjQgMTEuNi0xNS4xIDIwLjctOC40bDMuOC02LjVjLTExLjYtOS4xLTMyLjctNC4xLTMyLjcgMTUgMCAxOS44IDIyLjQgMjMuOCAzMi43IDE1bC0zLjgtNi41Yy05LjIgNi41LTIwLjcgMi42LTIwLjctOC42em02Ni43LTE4LjNINDA4djQuNGMtOC4zLTExLTI5LjktNC44LTI5LjkgMTMuOSAwIDE5LjIgMjIuNCAyNC43IDI5LjkgMTMuOXY0LjZoOC4yVjM5MnptMzMuNyAwYy0yLjQtMS4yLTExLTIuOS0xNS4yIDQuNFYzOTJoLTcuOXYzNi43aDcuOVY0MDhjMC0xMSA5LTEwLjMgMTIuOC04LjRsMi40LTcuNnptNDAuMy0xNC45aC03Ljl2MTkuM2MtOC4yLTEwLjktMjkuOS01LjEtMjkuOSAxMy45IDAgMTkuNCAyMi41IDI0LjYgMjkuOSAxMy45djQuNmg3Ljl2LTUxLjd6bTcuNi03NS4xdjQuNmguOFYzMDJoMS45di0uOGgtNC42di44aDEuOXptNi42IDEyMy44YzAtLjUgMC0xLjEtLjMtMS42LS4zLS4zLS41LS44LS44LTEuMS0uMy0uMy0uOC0uNS0xLjEtLjgtLjUgMC0xLjEtLjMtMS42LS4zLS4zIDAtLjguMy0xLjQuMy0uNS4zLS44LjUtMS4xLjgtLjUuMy0uOC44LS44IDEuMS0uMy41LS4zIDEuMS0uMyAxLjYgMCAuMyAwIC44LjMgMS40IDAgLjMuMy44LjggMS4xLjMuMy41LjUgMS4xLjguNS4zIDEuMS4zIDEuNC4zLjUgMCAxLjEgMCAxLjYtLjMuMy0uMy44LS41IDEuMS0uOC4zLS4zLjUtLjguOC0xLjEuMy0uNi4zLTEuMS4zLTEuNHptMy4yLTEyNC43aC0xLjRsLTEuNiAzLjUtMS42LTMuNWgtMS40djUuNGguOHYtNC4xbDEuNiAzLjVoMS4xbDEuNC0zLjV2NC4xaDEuMXYtNS40em00LjQtODAuNWMwLTc2LjItNjIuMS0xMzguMy0xMzguNS0xMzguMy0yNy4yIDAtNTMuOSA4LjItNzYuNSAyMy4xIDcyLjEgNTkuMyA3My4yIDE3MS41IDAgMjMwLjUgMjIuNiAxNSA0OS41IDIzLjEgNzYuNSAyMy4xIDc2LjQuMSAxMzguNS02MS45IDEzOC41LTEzOC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY1BheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMyAyNTguMmMwIDEyLjItOS43IDIxLjUtMjIgMjEuNS05LjIgMC0xNi01LjItMTYtMTUgMC0xMi4yIDkuNS0yMiAyMS43LTIyIDkuMyAwIDE2LjMgNS43IDE2LjMgMTUuNXpNODAuNSAyMDkuN2gtNC43Yy0xLjUgMC0zIDEtMy4yIDIuN2wtNC4zIDI2LjcgOC4yLS4zYzExIDAgMTkuNS0xLjUgMjEuNS0xNC4yIDIuMy0xMy40LTYuMi0xNC45LTE3LjUtMTQuOXptMjg0IDBIMzYwYy0xLjggMC0zIDEtMy4yIDIuN2wtNC4yIDI2LjcgOC0uM2MxMyAwIDIyLTMgMjItMTgtLjEtMTAuNi05LjYtMTEuMS0xOC4xLTExLjF6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI4LjMgMjE1LjRjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTQwYy0yLjUgMC01IDItNS4yIDQuN0wzMiAyOTQuMmMtLjMgMiAxLjIgNCAzLjIgNGgxOWMyLjcgMCA1LjItMi45IDUuNS01LjdsNC41LTI2LjZjMS03LjIgMTMuMi00LjcgMTgtNC43IDI4LjYgMCA0Ni4xLTE3IDQ2LjEtNDUuOHptODQuMiA4LjhoLTE5Yy0zLjggMC00IDUuNS00LjIgOC4yLTUuOC04LjUtMTQuMi0xMC0yMy43LTEwLTI0LjUgMC00My4yIDIxLjUtNDMuMiA0NS4yIDAgMTkuNSAxMi4yIDMyLjIgMzEuNyAzMi4yIDkgMCAyMC4yLTQuOSAyNi41LTExLjktLjUgMS41LTEgNC43LTEgNi4yIDAgMi4zIDEgNCAzLjIgNEgyMDBjMi43IDAgNS0yLjkgNS41LTUuN2wxMC4yLTY0LjNjLjMtMS45LTEuMi0zLjktMy4yLTMuOXptNDAuNSA5Ny45bDYzLjctOTIuNmMuNS0uNS41LTEgLjUtMS43IDAtMS43LTEuNS0zLjUtMy4yLTMuNWgtMTkuMmMtMS43IDAtMy41IDEtNC41IDIuNWwtMjYuNSAzOS0xMS0zNy41Yy0uOC0yLjItMy00LTUuNS00aC0xOC43Yy0xLjcgMC0zLjIgMS44LTMuMiAzLjUgMCAxLjIgMTkuNSA1Ni44IDIxLjIgNjIuMS0yLjcgMy44LTIwLjUgMjguNi0yMC41IDMxLjYgMCAxLjggMS41IDMuMiAzLjIgMy4yaDE5LjJjMS44LS4xIDMuNS0xLjEgNC41LTIuNnptMTU5LjMtMTA2LjdjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTM5LjdjLTIuNyAwLTUuMiAyLTUuNSA0LjdsLTE2LjIgMTAyYy0uMiAyIDEuMyA0IDMuMiA0aDIwLjVjMiAwIDMuNS0xLjUgNC0zLjJsNC41LTI5YzEtNy4yIDEzLjItNC43IDE4LTQuNyAyOC40IDAgNDUuOS0xNyA0NS45LTQ1Ljh6bTg0LjIgOC44aC0xOWMtMy44IDAtNCA1LjUtNC4zIDguMi01LjUtOC41LTE0LTEwLTIzLjctMTAtMjQuNSAwLTQzLjIgMjEuNS00My4yIDQ1LjIgMCAxOS41IDEyLjIgMzIuMiAzMS43IDMyLjIgOS4zIDAgMjAuNS00LjkgMjYuNS0xMS45LS4zIDEuNS0xIDQuNy0xIDYuMiAwIDIuMyAxIDQgMy4yIDRINDg0YzIuNyAwIDUtMi45IDUuNS01LjdsMTAuMi02NC4zYy4zLTEuOS0xLjItMy45LTMuMi0zLjl6bTQ3LjUtMzMuM2MwLTItMS41LTMuNS0zLjItMy41aC0xOC41Yy0xLjUgMC0zIDEuMi0zLjIgMi43bC0xNi4yIDEwNC0uMy41YzAgMS44IDEuNSAzLjUgMy41IDMuNWgxNi41YzIuNSAwIDUtMi45IDUuMi01LjdMNTQ0IDE5MS4ydi0uM3ptLTkwIDUxLjhjLTEyLjIgMC0yMS43IDkuNy0yMS43IDIyIDAgOS43IDcgMTUgMTYuMiAxNSAxMiAwIDIxLjctOS4yIDIxLjctMjEuNS4xLTkuOC02LjktMTUuNS0xNi4yLTE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjU3RyaXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Mi40IDIyMC44Yy04LjkgMC0xOC43IDYuNy0xOC43IDIyLjdoMzYuN2MwLTE2LTkuMy0yMi43LTE4LTIyLjd6TTM3NSAyMjMuNGMtOC4yIDAtMTMuMyAyLjktMTcgN2wuMiA1Mi44YzMuNSAzLjcgOC41IDYuNyAxNi44IDYuNyAxMy4xIDAgMjEuOS0xNC4zIDIxLjktMzMuNCAwLTE4LjYtOS0zMy4yLTIxLjktMzMuMXpNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTIyLjIgMjgxLjFjMCAyNS42LTIwLjMgNDAuMS00OS45IDQwLjMtMTIuMiAwLTI1LjYtMi40LTM4LjgtOC4xdi0zMy45YzEyIDYuNCAyNy4xIDExLjMgMzguOSAxMS4zIDcuOSAwIDEzLjYtMi4xIDEzLjYtOC43IDAtMTctNTQtMTAuNi01NC00OS45IDAtMjUuMiAxOS4yLTQwLjIgNDgtNDAuMiAxMS44IDAgMjMuNSAxLjggMzUuMyA2LjV2MzMuNGMtMTAuOC01LjgtMjQuNS05LjEtMzUuMy05LjEtNy41IDAtMTIuMSAyLjItMTIuMSA3LjcgMCAxNiA1NC4zIDguNCA1NC4zIDUwLjd6bTY4LjgtNTYuNmgtMjdWMjc1YzAgMjAuOSAyMi41IDE0LjQgMjcgMTIuNnYyOC45Yy00LjcgMi42LTEzLjMgNC43LTI0LjkgNC43LTIxLjEgMC0zNi45LTE1LjUtMzYuOS0zNi41bC4yLTExMy45IDM0LjctNy40djMwLjhIMTkxem03NCAyLjRjLTQuNS0xLjUtMTguNy0zLjYtMjcuMSA3LjR2ODQuNGgtMzUuNVYxOTQuMmgzMC43bDIuMiAxMC41YzguMy0xNS4zIDI0LjktMTIuMiAyOS42LTEwLjVoLjF6bTQ0LjEgOTEuOGgtMzUuN1YxOTQuMmgzNS43em0wLTE0Mi45bC0zNS43IDcuNnYtMjguOWwzNS43LTcuNnptNzQuMSAxNDUuNWMtMTIuNCAwLTIwLTUuMy0yNS4xLTlsLS4xIDQwLjItMzUuNSA3LjVWMTk0LjJoMzEuM2wxLjggOC44YzQuOS00LjUgMTMuOS0xMS4xIDI3LjgtMTEuMSAyNC45IDAgNDguNCAyMi41IDQ4LjQgNjMuOCAwIDQ1LjEtMjMuMiA2NS41LTQ4LjYgNjUuNnptMTYwLjQtNTEuNWgtNjkuNWMxLjYgMTYuNiAxMy44IDIxLjUgMjcuNiAyMS41IDE0LjEgMCAyNS4yLTMgMzQuOS03LjlWMzEyYy05LjcgNS4zLTIyLjQgOS4yLTM5LjQgOS4yLTM0LjYgMC01OC44LTIxLjctNTguOC02NC41IDAtMzYuMiAyMC41LTY0LjkgNTQuMy02NC45IDMzLjcgMCA1MS4zIDI4LjcgNTEuMyA2NS4xIDAgMy41LS4zIDEwLjktLjQgMTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NWaXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MC4xIDIzMS4zczcuNiAzNy4yIDkuMyA0NUg0NDZjMy4zLTguOSAxNi00My41IDE2LTQzLjUtLjIuMyAzLjMtOS4xIDUuMy0xNC45bDIuOCAxMy40ek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE1Mi41IDMzMS4yTDIxNS43IDE3NmgtNDIuNWwtMzkuMyAxMDYtNC4zLTIxLjUtMTQtNzEuNGMtMi4zLTkuOS05LjQtMTIuNy0xOC4yLTEzLjFIMzIuN2wtLjcgMy4xYzE1LjggNCAyOS45IDkuOCA0Mi4yIDE3LjFsMzUuOCAxMzVoNDIuNXptOTQuNC4yTDI3Mi4xIDE3NmgtNDAuMmwtMjUuMSAxNTUuNGg0MC4xem0xMzkuOS01MC44Yy4yLTE3LjctMTAuNi0zMS4yLTMzLjctNDIuMy0xNC4xLTcuMS0yMi43LTExLjktMjIuNy0xOS4yLjItNi42IDcuMy0xMy40IDIzLjEtMTMuNCAxMy4xLS4zIDIyLjcgMi44IDI5LjkgNS45bDMuNiAxLjcgNS41LTMzLjZjLTcuOS0zLjEtMjAuNS02LjYtMzYtNi42LTM5LjcgMC02Ny42IDIxLjItNjcuOCA1MS40LS4zIDIyLjMgMjAgMzQuNyAzNS4yIDQyLjIgMTUuNSA3LjYgMjAuOCAxMi42IDIwLjggMTkuMy0uMiAxMC40LTEyLjYgMTUuMi0yNC4xIDE1LjItMTYgMC0yNC42LTIuNS0zNy43LTguM2wtNS4zLTIuNS01LjYgMzQuOWM5LjQgNC4zIDI2LjggOC4xIDQ0LjggOC4zIDQyLjIuMSA2OS43LTIwLjggNzAtNTN6TTUyOCAzMzEuNEw0OTUuNiAxNzZoLTMxLjFjLTkuNiAwLTE2LjkgMi44LTIxIDEyLjlsLTU5LjcgMTQyLjVINDI2czYuOS0xOS4yIDguNC0yMy4zSDQ4NmMxLjIgNS41IDQuOCAyMy4zIDQuOCAyMy4zSDUyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2VudGVyY29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjkuMiAyNjguNmMtMy44IDM1LjItMzUuNCA2MC42LTcwLjYgNTYuOC0zNS4yLTMuOC02MC42LTM1LjQtNTYuOC03MC42IDMuOC0zNS4yIDM1LjQtNjAuNiA3MC42LTU2LjggMzUuMSAzLjggNjAuNiAzNS40IDU2LjggNzAuNnptLTg1LjggMjM1LjFDOTYuNyA0OTYtOC4yIDM2NS41IDEwLjEgMjI0LjNjMTEuMi04Ni42IDY1LjgtMTU2LjkgMTM5LjEtMTkyIDE2MS03Ny4xIDM0OS43IDM3LjQgMzU0LjcgMjE2LjYgNC4xIDE0Ny0xMTguNCAyNjIuMi0yNjAuNSAyNTQuOHptMTc5LjktMTgwYzI3LjktMTE4LTE2MC41LTIwNS45LTIzNy4yLTIzNC4yLTU3LjUgNTYuMy02OS4xIDE4OC42LTMzLjggMzQ0LjQgNjguOCAxNS44IDE2OS4xLTI2LjQgMjcxLTExMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZW50b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg5LjYgOTcuNWwzMS42IDMxLjctNzYuMyA3Ni41Vjk3LjV6bS0xNjIuNCAzMS43bDc2LjMgNzYuNVY5Ny41aC00NC43em00MS41LTQxLjZoNDQuN3YxMjcuOWwxMC44IDEwLjggMTAuOC0xMC44Vjg3LjZoNDQuN0wyMjQuMiAzMnptMjYuMiAxNjguMWwtMTAuOC0xMC44SDU1LjV2LTQ0LjhMMCAyNTUuN2w1NS41IDU1LjZ2LTQ0LjhoMTI4LjZsMTAuOC0xMC44em03OS4zLTIwLjdoMTA3Ljl2LTQ0LjhsLTMxLjYtMzEuN3ptMTczLjMgMjAuN0wzOTIgMjAwLjF2NDQuOEgyNjQuM2wtMTAuOCAxMC44IDEwLjggMTAuOEgzOTJ2NDQuOGw1NS41LTU1LjZ6TTY1LjQgMTc2LjJsMzIuNS0zMS43IDkwLjMgOTAuNWgxNS4zdi0xNS4zbC05MC4zLTkwLjUgMzEuNi0zMS43SDY1LjR6bTMxNi43LTc4LjdoLTc4LjVsMzEuNiAzMS43LTkwLjMgOTAuNVYyMzVoMTUuM2w5MC4zLTkwLjUgMzEuNiAzMS43ek0yMDMuNSA0MTMuOVYzMDUuOGwtNzYuMyA3Ni41IDMxLjYgMzEuN2g0NC43ek02NS40IDIzNWgxMDguOGwtNzYuMy03Ni41LTMyLjUgMzEuN3ptMzE2LjcgMTAwLjJsLTMxLjYgMzEuNy05MC4zLTkwLjVoLTE1LjN2MTUuM2w5MC4zIDkwLjUtMzEuNiAzMS43aDc4LjV6bTAtNTguOEgyNzQuMmw3Ni4zIDc2LjUgMzEuNi0zMS43em0tNjAuOSAxMDUuOGwtNzYuMy03Ni41djEwOC4xaDQ0Ljd6TTk3LjkgMzUyLjlsNzYuMy03Ni41SDY1LjR2NDQuOHptMTgxLjggNzAuOUgyMzVWMjk1LjlsLTEwLjgtMTAuOC0xMC44IDEwLjh2MTI3LjloLTQ0LjdsNTUuNSA1NS42em0tMTY2LjUtNDEuNmw5MC4zLTkwLjV2LTE1LjNoLTE1LjNsLTkwLjMgOTAuNS0zMi41LTMxLjd2NzguN2g3OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHJvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMxLjUgMjE3LjVMNTUuMSAxMDAuMWM0Ny42LTU5LjIgMTE5LTkxLjggMTkyLTkyLjEgNDIuMy0uMyA4NS41IDEwLjUgMTI0LjggMzMuMiA0My40IDI1LjIgNzYuNCA2MS40IDk3LjQgMTAzTDI2NCAxMzMuNGMtNTguMS0zLjQtMTEzLjQgMjkuMy0xMzIuNSA4NC4xem0zMi45IDM4LjVjMCA0Ni4yIDM3LjQgODMuNiA4My42IDgzLjZzODMuNi0zNy40IDgzLjYtODMuNi0zNy40LTgzLjYtODMuNi04My42LTgzLjYgMzcuMy04My42IDgzLjZ6bTMxNC45LTg5LjJMMzM5LjYgMTc0YzM3LjkgNDQuMyAzOC41IDEwOC4yIDYuNiAxNTcuMkwyMzQuMSA1MDMuNmM0Ni41IDIuNSA5NC40LTcuNyAxMzcuOC0zMi45IDEwNy40LTYyIDE1MC45LTE5MiAxMDcuNC0zMDMuOXpNMTMzLjcgMzAzLjZMNDAuNCAxMjAuMUMxNC45IDE1OS4xIDAgMjA1LjkgMCAyNTZjMCAxMjQgOTAuOCAyMjYuNyAyMDkuNSAyNDQuOWw2My43LTEyNC44Yy01Ny42IDEwLjgtMTEzLjItMjAuOC0xMzkuNS03Mi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHJvbWVjYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ny44LDY0SDY0Yy0yMy42LDAtNDIuNywxOS4xLTQyLjcsNDIuN3Y2My45SDY0di02My45aDM4My44djI5OC42SDI5OC42VjQ0OEg0NDhjMjMuNiwwLDQyLjctMTkuMSw0Mi43LTQyLjdWMTA2LjcgQzQ5MC43LDgzLjEsNDcxLjQsNjQsNDQ3LjgsNjR6IE0yMS4zLDM4My42TDIxLjMsMzgzLjZsMCw2My45aDYzLjlDODUuMiw0MTIuMiw1Ni42LDM4My42LDIxLjMsMzgzLjZMMjEuMywzODMuNnogTTIxLjMsMjk4LjZWMzQxIGM1OC45LDAsMTA2LjYsNDguMSwxMDYuNiwxMDdoNDIuN0MxNzAuNywzNjUuNiwxMDMuNywyOTguNywyMS4zLDI5OC42eiBNMjEzLjQsNDQ4aDQyLjdjLTAuNS0xMjkuNS0xMDUuMy0yMzQuMy0yMzQuOC0yMzQuNmwwLDQyLjQgQzEyNy4zLDI1NS42LDIxMy4zLDM0MiwyMTMuNCw0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkZmxhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3LjkwNiwzMTkuOTEzbC0yMzAuOC0yLjkyOGE0LjU4LDQuNTgsMCwwLDEtMy42MzItMS45MjYsNC42NDgsNC42NDgsMCwwLDEtLjQ5NC00LjE0Nyw2LjE0Myw2LjE0MywwLDAsMSw1LjM2MS00LjA3Nkw0MTEuMjgxLDMwMy45YzI3LjYzMS0xLjI2LDU3LjU0Ni0yMy41NzQsNjguMDIyLTUwLjc4NGwxMy4yODYtMzQuNTQyYTcuOTQ0LDcuOTQ0LDAsMCwwLC41MjQtMi45MzYsNy43MzUsNy43MzUsMCwwLDAtLjE2NC0xLjYzMUExNTEuOTEsMTUxLjkxLDAsMCwwLDIwMS4yNTcsMTk4LjQsNjguMTIsNjguMTIsMCwwLDAsOTQuMiwyNjkuNTlDNDEuOTI0LDI3MS4xMDYsMCwzMTMuNzI4LDAsMzY2LjEyYTk2LjA1NCw5Ni4wNTQsMCwwLDAsMS4wMjksMTMuOTU4LDQuNTA4LDQuNTA4LDAsMCwwLDQuNDQ1LDMuODcxbDQyNi4xLjA1MWMuMDQzLDAsLjA4LS4wMTkuMTIyLS4wMmE1LjYwNiw1LjYwNiwwLDAsMCw1LjI3MS00bDMuMjczLTExLjI2NWMzLjktMTMuNCwyLjQ0OC0yNS44LTQuMS0zNC45QzQzMC4xMjQsMzI1LjQyMyw0MjAuMDksMzIwLjQ4Nyw0MDcuOTA2LDMxOS45MTNaTTUxMy44NTYsMjIxLjFjLTIuMTQxLDAtNC4yNzEuMDYyLTYuMzkxLjE2NGEzLjc3MSwzLjc3MSwwLDAsMC0zLjMyNCwyLjY1M2wtOS4wNzcsMzEuMTkzYy0zLjksMTMuNC0yLjQ0OSwyNS43ODYsNC4xLDM0Ljg5LDYuMDIsOC40LDE2LjA1NCwxMy4zMjMsMjguMjM4LDEzLjlsNDkuMiwyLjkzOWE0LjQ5MSw0LjQ5MSwwLDAsMSwzLjUxLDEuODk0LDQuNjQsNC42NCwwLDAsMSwuNTE0LDQuMTY5LDYuMTUzLDYuMTUzLDAsMCwxLTUuMzUxLDQuMDc1bC01MS4xMjUsMi45MzljLTI3Ljc1NCwxLjI3LTU3LjY2OSwyMy41NzQtNjguMTQ1LDUwLjc4NGwtMy42OTUsOS42MDZhMi43MTYsMi43MTYsMCwwLDAsMi40MjcsMy42OGMuMDQ2LDAsLjA4OC4wMTcuMTM2LjAxN2gxNzUuOTFhNC42OSw0LjY5LDAsMCwwLDQuNTM5LTMuMzcsMTI0LjgwNywxMjQuODA3LDAsMCwwLDQuNjgyLTM0QzY0MCwyNzcuMyw1ODMuNTI0LDIyMS4xLDUxMy44NTYsMjIxLjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3Vkc2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE4LjEgMTU0bC05LjQgNy42Yy0yMi41LTE5LjMtNTEuNS0zMy42LTgzLjMtMzMuNkMxNTMuOCAxMjggOTYgMTg4LjggOTYgMjYwLjNjMCA2LjYuNCAxMy4xIDEuNCAxOS40LTItNTYgNDEuOC05Ny40IDkyLjYtOTcuNCAyNC4yIDAgNDYuMiA5LjQgNjIuNiAyNC43bC0yNS4yIDIwLjRjLTguMy0uOS0xNi44IDEuOC0yMy4xIDguMS0xMS4xIDExLTExLjEgMjguOSAwIDQwIDExLjEgMTEgMjguOSAxMSA0MCAwIDYuMy02LjMgOS0xNC45IDguMS0yMy4xbDc1LjItODguOGM2LjMtNi41LTMuMy0xNS45LTkuNS05LjZ6bS04My44IDExMS41Yy01LjYgNS41LTE0LjYgNS41LTIwLjIgMC01LjYtNS42LTUuNi0xNC42IDAtMjAuMnMxNC42LTUuNiAyMC4yIDAgNS42IDE0LjcgMCAyMC4yek0yMjQgMzJDMTAwLjUgMzIgMCAxMzIuNSAwIDI1NnMxMDAuNSAyMjQgMjI0IDIyNCAyMjQtMTAwLjUgMjI0LTIyNFMzNDcuNSAzMiAyMjQgMzJ6bTAgMzg0Yy04OC4yIDAtMTYwLTcxLjgtMTYwLTE2MFMxMzUuOCA5NiAyMjQgOTZzMTYwIDcxLjggMTYwIDE2MC03MS44IDE2MC0xNjAgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZHNtaXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMzIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMi41IDQxOS45YzAgNDYuNC0zNy42IDg0LjEtODQgODQuMXMtODQtMzcuNy04NC04NC4xIDM3LjYtODQgODQtODQgODQgMzcuNiA4NCA4NHptLTg0LTI0My45YzQ2LjQgMCA4MC0zNy42IDgwLTg0cy0zMy42LTg0LTgwLTg0LTg4IDM3LjYtODggODQtMjkuNiA3Ni03NiA3Ni04NCA0MS42LTg0IDg4IDM3LjYgODAgODQgODAgODQtMzMuNiA4NC04MCAzMy42LTgwIDgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZHZlcnNpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDYxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ4LjYgMzA0YzguMiA2OC41IDY3LjQgMTE1LjUgMTQ2IDExMS4zIDUxLjIgNDMuMyAxMzYuOCA0NS44IDE4Ni40LTUuNiA2OS4yIDEuMSAxMTguNS00NC42IDEzMS41LTk5LjUgMTQuOC02Mi41LTE4LjItMTMyLjUtOTIuMS0xNTUuMS0zMy04OC4xLTEzMS40LTEwMS41LTE4Ni41LTg1LTU3LjMgMTcuMy04NC4zIDUzLjItOTkuMyAxMDkuNy03LjggMi43LTI2LjUgOC45LTQ1IDI0LjEgMTEuNyAwIDE1LjIgOC45IDE1LjIgMTkuNXYyMC40YzAgMTAuNy04LjcgMTkuNS0xOS41IDE5LjVoLTIwLjJjLTEwLjcgMC0xOS41LTYtMTkuNS0xNi43VjI0MEg5OC44Qzk1IDI0MCA4OCAyNDQuMyA4OCAyNTEuOXY0MC40YzAgNi40IDUuMyAxMS44IDExLjcgMTEuOGg0OC45em0yMjcuNCA4Yy0xMC43IDQ2LjMgMjEuNyA3Mi40IDU1LjMgODYuOEMzMjQuMSA0MzIuNiAyNTkuNyAzNDggMjk2IDI4OGMtMzMuMiAyMS42LTMzLjcgNzEuMi0yOS4yIDkyLjktMTcuOS0xMi40LTUzLjgtMzIuNC01Ny40LTc5LjgtMy0zOS45IDIxLjUtNzUuNyA1Ny05My45QzI5NyAxOTEuNCAzNjkuOSAxOTguNyA0MDAgMjQ4Yy0xNC4xLTQ4LTUzLjgtNzAuMS0xMDEuOC03NC44IDMwLjktMzAuNyA2NC40LTUwLjMgMTE0LjItNDMuNyA2OS44IDkuMyAxMzMuMiA4Mi44IDY3LjcgMTUwLjUgMzUtMTYuMyA0OC43LTU0LjQgNDcuNS03Ni45bDEwLjUgMTkuNmMxMS44IDIyIDE1LjIgNDcuNiA5LjQgNzItOS4yIDM5LTQwLjYgNjguOC03OS43IDc2LjUtMzIuMSA2LjMtODMuMS01LjEtOTEuOC01OS4yek0xMjggMjA4SDg4LjJjLTguOSAwLTE2LjItNy4zLTE2LjItMTYuMnYtMzkuNmMwLTguOSA3LjMtMTYuMiAxNi4yLTE2LjJIMTI4YzguOSAwIDE2LjIgNy4zIDE2LjIgMTYuMnYzOS42YzAgOC45LTcuMyAxNi4yLTE2LjIgMTYuMnpNMTAuMSAxNjhDNC41IDE2OCAwIDE2My41IDAgMTU3Ljl2LTI3LjhjMC01LjYgNC41LTEwLjEgMTAuMS0xMC4xaDI3LjdjNS41IDAgMTAuMSA0LjUgMTAuMSAxMC4xdjI3LjhjMCA1LjYtNC41IDEwLjEtMTAuMSAxMC4xSDEwLjF6TTE2OCAxNDIuN3YtMjEuNGMwLTUuMSA0LjItOS4zIDkuMy05LjNoMjEuNGM1LjEgMCA5LjMgNC4yIDkuMyA5LjN2MjEuNGMwIDUuMS00LjIgOS4zLTkuMyA5LjNoLTIxLjRjLTUuMSAwLTkuMy00LjItOS4zLTkuM3pNNTYgMjM1LjV2MjVjMCA2LjMtNS4xIDExLjUtMTEuNCAxMS41SDE5LjRDMTMuMSAyNzIgOCAyNjYuOCA4IDI2MC41di0yNWMwLTYuMyA1LjEtMTEuNSAxMS40LTExLjVoMjUuMWM2LjQgMCAxMS41IDUuMiAxMS41IDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVwZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjI4NSAxNTkuNzA0bC0yMzQtMTU2Yy03Ljk4Ny00LjkxNS0xNi41MTEtNC45Ni0yNC41NzEgMGwtMjM0IDE1NkMzLjcxNCAxNjMuNzAzIDAgMTcwLjg0NyAwIDE3Ny45ODl2MTU1Ljk5OWMwIDcuMTQzIDMuNzE0IDE0LjI4NiA5LjcxNSAxOC4yODZsMjM0IDE1Ni4wMjJjNy45ODcgNC45MTUgMTYuNTExIDQuOTYgMjQuNTcxIDBsMjM0LTE1Ni4wMjJjNi0zLjk5OSA5LjcxNS0xMS4xNDMgOS43MTUtMTguMjg2VjE3Ny45ODljLS4wMDEtNy4xNDItMy43MTUtMTQuMjg2LTkuNzE2LTE4LjI4NXpNMjc4IDYzLjEzMWwxNzIuMjg2IDExNC44NTgtNzYuODU3IDUxLjQyOUwyNzggMTY1LjcwM1Y2My4xMzF6bS00NCAwdjEwMi41NzJsLTk1LjQyOSA2My43MTUtNzYuODU3LTUxLjQyOUwyMzQgNjMuMTMxek00NCAyMTkuMTMybDU1LjE0MyAzNi44NTdMNDQgMjkyLjg0NnYtNzMuNzE0em0xOTAgMjI5LjcxNUw2MS43MTQgMzMzLjk4OWw3Ni44NTctNTEuNDI5TDIzNCAzNDYuMjc1djEwMi41NzJ6bTIyLTE0MC44NThsLTc3LjcxNS01MiA3Ny43MTUtNTIgNzcuNzE1IDUyLTc3LjcxNSA1MnptMjIgMTQwLjg1OFYzNDYuMjc1bDk1LjQyOS02My43MTUgNzYuODU3IDUxLjQyOUwyNzggNDQ4Ljg0N3ptMTkwLTE1Ni4wMDFsLTU1LjE0My0zNi44NTdMNDY4IDIxOS4xMzJ2NzMuNzE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RpZXBpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDcyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjIuNSAyMDIuOWMzMC43IDAgMzMuNSA1My4xLS4zIDUzLjFoLTEwLjh2NDQuM2gtMjYuNnYtOTcuNGgzNy43ek00NzIgMzUyLjZDNDI5LjkgNDQ0LjUgMzUwLjQgNTA0IDI0OCA1MDQgMTExIDUwNCAwIDM5MyAwIDI1NlMxMTEgOCAyNDggOGM5Ny40IDAgMTcyLjggNTMuNyAyMTguMiAxMzguNGwtMTg2IDEwOC44TDQ3MiAzNTIuNnptLTM4LjUgMTIuNWwtNjAuMy0zMC43Yy0yNy4xIDQ0LjMtNzAuNCA3MS40LTEyMi40IDcxLjQtODIuNSAwLTE0OS4yLTY2LjctMTQ5LjItMTQ4LjkgMC04Mi41IDY2LjctMTQ5LjIgMTQ5LjItMTQ5LjIgNDguNCAwIDg4LjkgMjMuNSAxMTYuOSA2My40bDU5LjUtMzQuNmMtNDAuNy02Mi42LTEwNC43LTEwMC0xNzkuMi0xMDAtMTIxLjIgMC0yMTkuNSA5OC4zLTIxOS41IDIxOS41UzEyNi44IDQ3NS41IDI0OCA0NzUuNWM3OC42IDAgMTQ2LjUtNDIuMSAxODUuNS0xMTAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29uZmx1ZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjMgNDEyLjJjLTQuNSA3LjYtMi4xIDE3LjUgNS41IDIyLjJsMTA1LjkgNjUuMmM3LjcgNC43IDE3LjcgMi40IDIyLjQtNS4zIDAtLjEuMS0uMi4xLS4yIDY3LjEtMTEyLjIgODAuNS05NS45IDI4MC45LS43IDguMSAzLjkgMTcuOC40IDIxLjctNy43LjEtLjEuMS0uMy4yLS40bDUwLjQtMTE0LjFjMy42LTguMS0uMS0xNy42LTguMS0yMS4zLTIyLjItMTAuNC02Ni4yLTMxLjItMTA1LjktNTAuM0MxMjcuNSAxNzkgNDQuNiAzNDUuMyAyLjMgNDEyLjJ6bTUwNy40LTMxMi4xYzQuNS03LjYgMi4xLTE3LjUtNS41LTIyLjJMMzk4LjQgMTIuOGMtNy41LTUtMTcuNi0zLjEtMjIuNiA0LjQtLjIuMy0uNC42LS42IDEtNjcuMyAxMTIuNi04MS4xIDk1LjYtMjgwLjYuOS04LjEtMy45LTE3LjgtLjQtMjEuNyA3LjctLjEuMS0uMS4zLS4yLjRMMjIuMiAxNDEuM2MtMy42IDguMS4xIDE3LjYgOC4xIDIxLjMgMjIuMiAxMC40IDY2LjMgMzEuMiAxMDYgNTAuNCAyNDggMTIwIDMzMC44LTQ1LjQgMzczLjQtMTEyLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbm5lY3RkZXZlbG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MC41IDI0MWwtNTAuMDg5LTg2Ljc4NmMxLjA3MS0yLjE0MiAxLjg3NS00LjU1MyAxLjg3NS03LjIzMiAwLTguMDM2LTYuNjk2LTE0LjczMy0xNC43MzItMTUuMDAxbC01NS40NDctOTUuODkzYy41MzYtMS42MDcgMS4wNzEtMy4yMTQgMS4wNzEtNC44MjEgMC04LjU3MS02Ljk2NC0xNS4yNjgtMTUuMjY4LTE1LjI2OC00LjgyMSAwLTguODM5IDIuMTQzLTExLjc4NiA1LjYyNUgyOTkuNTE4QzI5Ni44MzkgMTguMTQzIDI5Mi44MjEgMTYgMjg4IDE2cy04LjgzOSAyLjE0My0xMS41MTggNS42MjVIMTcwLjQxMUMxNjcuNDY0IDE4LjE0MyAxNjMuNDQ3IDE2IDE1OC42MjUgMTZjLTguMzAzIDAtMTUuMjY4IDYuNjk2LTE1LjI2OCAxNS4yNjggMCAxLjYwNy41MzYgMy40ODIgMS4wNzIgNC44MjFsLTU1Ljk4MyA5Ny4yMzNjLTUuMzU2IDIuNDEtOS4xMDcgNy41LTkuMTA3IDEzLjY2MSAwIC41MzUuMjY4IDEuMDcxLjI2OCAxLjYwN2wtNTMuMzA0IDkyLjE0M2MtNy4yMzIgMS4zMzktMTIuNTkgNy41LTEyLjU5IDE1IDAgNy4yMzIgNS4wODkgMTMuMzkzIDEyLjA1NCAxNWw1NS4xNzkgOTUuMzU4Yy0uNTM2IDEuNjA3LS44MDQgMi45NDYtLjgwNCA0LjgyMSAwIDcuMjMyIDUuMDg5IDEzLjM5MyAxMi4wNTQgMTQuNzMybDUxLjY5NyA4OS43MzJjLS41MzYgMS42MDctMS4wNzEgMy40ODItMS4wNzEgNS4zNTcgMCA4LjU3MSA2Ljk2NCAxNS4yNjggMTUuMjY4IDE1LjI2OCA0LjgyMSAwIDguODM5LTIuMTQzIDExLjUxOC01LjM1N2gxMDYuODc1QzI3OS4xNjEgNDkzLjg1NyAyODMuNDQ3IDQ5NiAyODggNDk2czguODM5LTIuMTQzIDExLjUxOC01LjM1N2gxMDcuMTQzYzIuNjc4IDIuOTQ2IDYuNjk2IDQuODIxIDEwLjk4MiA0LjgyMSA4LjU3MSAwIDE1LjI2OC02Ljk2NCAxNS4yNjgtMTUuMjY4IDAtMS42MDctLjI2Ny0yLjk0Ni0uODAzLTQuMjg1bDUxLjY5Ny05MC4yNjhjNi45NjQtMS4zMzkgMTIuMDU0LTcuNSAxMi4wNTQtMTQuNzMyIDAtMS42MDctLjI2OC0zLjIxNC0uODA0LTQuODIxbDU0LjkxMS05NS4zNThjNi45NjQtMS4zMzkgMTIuMzIyLTcuNSAxMi4zMjItMTUtLjAwMi03LjIzMi01LjA5Mi0xMy4zOTMtMTEuNzg4LTE0LjczMnpNMTUzLjUzNSA0NTAuNzMybC00My42Ni03NS44MDNoNDMuNjZ2NzUuODAzem0wLTgzLjgzOWgtNDMuNjZjLS4yNjgtMS4wNzEtLjgwNC0yLjE0Mi0xLjMzOS0zLjIxNGw0NC45OTktNDcuNDF2NTAuNjI0em0wLTYyLjQxMWwtNTAuMzU3IDUzLjMwNGMtMS4zMzktLjUzNi0yLjY3OS0xLjM0LTQuMDE4LTEuNjA3TDQzLjQ0NyAyNTkuNzVjLjUzNS0xLjMzOS41MzUtMi42NzkuNTM1LTQuMDE4czAtMi40MS0uMjY4LTMuNDgybDUxLjk2NS05MGMyLjY3OS0uMjY4IDUuMzU3LTEuMDcyIDcuNzY4LTIuNjc5bDUwLjA4OSA1MS45NjV2OTIuOTQ2em0wLTEwMi4zMjJsLTQ1LjgwMy00Ny40MWMxLjMzOS0yLjE0MyAyLjE0My00LjgyMSAyLjE0My03Ljc2NyAwLS4yNjgtLjI2OC0uODA0LS4yNjgtMS4wNzJsNDMuOTI4LTE1LjgwNHY3Mi4wNTN6bTAtODAuNjI1bC00My42NiAxNS44MDQgNDMuNjYtNzUuNTM2djU5LjczMnptMzI2LjUxOSAzOS4xMDhsLjgwNCAxLjMzOUw0NDUuNSAzMjkuMTI1bC02My43NS02Ny4yMzIgOTguMDM2LTEwMS41MTguMjY4LjI2OHpNMjkxLjc1IDM1NS4xMDdsMTEuNTE4IDExLjc4NkgyODAuNWwxMS4yNS0xMS43ODZ6bS0uMjY4LTExLjI1bC04My4zMDMtODUuNDQ2IDc5LjU1My04NC4zNzUgODMuMDM2IDg3LjU4OS03OS4yODYgODIuMjMyem01LjM1NyA1Ljg5M2w3OS4yODYtODIuMjMyIDY3LjUgNzEuMjUtNS44OTIgMjguMTI1SDMxMy43MTRsLTE2Ljg3NS0xNy4xNDN6TTQxMC40MTEgNDQuMzkzYzEuMDcxLjUzNiAyLjE0MiAxLjA3MiAzLjQ4MiAxLjM0bDU3Ljg1NyAxMDAuNzE0di41MzZjMCAyLjk0Ni44MDMgNS42MjQgMi4xNDMgNy43NjdMMzc2LjM5MyAyNTZsLTgzLjAzNS04Ny41ODlMNDEwLjQxMSA0NC4zOTN6bS05LjEwNy0yLjE0M0wyODcuNzMyIDE2Mi41MThsLTU3LjA1NC02MC4yNjggMTY2LjMzOS02MGg0LjI4N3ptLTEyMy40ODMgMGMyLjY3OCAyLjY3OCA2LjE2IDQuMjg1IDEwLjE3OSA0LjI4NXM3LjUtMS42MDcgMTAuMTc5LTQuMjg1aDc1TDIyNC43ODYgOTUuODIxIDE3My44OTMgNDIuMjVoMTAzLjkyOHptLTExNi4yNDkgNS42MjVsMS4wNzEtMi4xNDJhMzMuODM0IDMzLjgzNCAwIDAgMCAyLjY3OS0uODA0bDUxLjE2MSA1My44NC01NC45MTEgMTkuODIxVjQ3Ljg3NXptMCA3OS4yODZsNjAuODAzLTIxLjk2NCA1OS43MzIgNjMuMjE0LTc5LjU1MyA4NC4xMDctNDAuOTgyLTQyLjA1M3YtODMuMzA0em0wIDkyLjY3OEwxOTggMjU3LjYwN2wtMzYuNDI4IDM4LjMwNHYtNzYuMDcyem0wIDg3Ljg1OGw0Mi4wNTMtNDQuNDY0IDgyLjc2OCA4NS45ODItMTcuMTQzIDE3LjY3OEgxNjEuNTcydi01OS4xOTZ6bTYuOTY0IDE2Mi4wNTNjLTEuNjA3LTEuNjA3LTMuNDgyLTIuNjc4LTUuODkzLTMuNDgybC0xLjA3MS0xLjYwN3YtODkuNzMyaDk5LjkxbC05MS42MDcgOTQuODIxaC0xLjMzOXptMTI5LjkxMSAwYy0yLjY3OS0yLjQxLTYuNDI4LTQuMjg1LTEwLjQ0Ny00LjI4NXMtNy43NjcgMS44NzUtMTAuNDQ3IDQuMjg1aC05Ni40MjlsOTEuNjA3LTk0LjgyMWgzOC4zMDRsOTEuNjA3IDk0LjgyMUgyOTguNDQ3em0xMjAtMTEuNzg2bC00LjI4NiA3LjVjLTEuMzM5LjI2OC0yLjQxLjgwMy0zLjQ4MiAxLjMzOWwtODkuMTk2LTkxLjg3NWgxMTQuMzc2bC0xNy40MTIgODMuMDM2em0xMi44NTYtMjIuMjMybDEyLjg1OC02MC44MDNoMjEuOTY0bC0zNC44MjIgNjAuODAzem0zNC44MjItNjguODM5aC0yMC4zNTdsNC41NTMtMjEuMTYgMTcuMTQzIDE4LjIxNGMtLjUzNS44MDMtMS4wNzEgMS44NzQtMS4zMzkgMi45NDZ6bTY2LjE2MS0xMDcuNDExbC01NS40NDcgOTYuNjk3Yy0xLjMzOS41MzUtMi42NzkgMS4wNzEtNC4wMTggMS44NzRsLTIwLjYyNS0yMS45NjQgMzQuNTU0LTE2My45MjggNDUuODAzIDc5LjI4NmMtLjI2NyAxLjMzOS0uODAzIDIuNjc4LS44MDMgNC4yODUgMCAxLjMzOS4yNjggMi40MTEuNTM2IDMuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbnRhbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NS40IDMwNWMxNC40IDY3LjEgMjYuNCAxMjkgNjguMiAxNzVIMzRjLTE4LjcgMC0zNC0xNS4yLTM0LTM0VjY2YzAtMTguNyAxNS4yLTM0IDM0LTM0aDU3LjdDNzcuOSA0NC42IDY1LjYgNTkuMiA1NC44IDc1LjZjLTQ1LjQgNzAtMjcgMTQ2LjgtOS40IDIyOS40ek00NzggMzJoLTkwLjJjMjEuNCAyMS40IDM5LjIgNDkuNSA1Mi43IDg0LjFsLTEzNy4xIDI5LjNjLTE0LjktMjktMzcuOC01My4zLTgyLjYtNDMuOS0yNC42IDUuMy00MSAxOS4zLTQ4LjMgMzQuNi04LjggMTguNy0xMy4yIDM5LjggOC4yIDE0MC4zIDIxLjEgMTAwLjIgMzMuNyAxMTcuNyA0OS41IDEzMS4yIDEyLjkgMTEuMSAzMy40IDE3IDU4LjMgMTEuNyA0NC41LTkuNCA1NS43LTQwLjcgNTcuNC03My4ybDEzNy40LTI5LjZjMy4yIDcxLjUtMTguNyAxMjUuMi01Ny40IDE2My42SDQ3OGMxOC43IDAgMzQtMTUuMiAzNC0zNFY2NmMwLTE4LjgtMTUuMi0zNC0zNC0zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ290dG9uQnVyZWF1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3NC4zMSAzMzAuNDFjLTIzLjY2IDkxLjg1LTk0LjIzIDE0NC41OS0yMDEuOSAxNDguMzVWNDI5LjZjMC00OCAyNi40MS03NC4zOSA3NC4zOS03NC4zOSA2MiAwIDk5LjItMzcuMiA5OS4yLTk5LjIxIDAtNjEuMzctMzYuNTMtOTguMjgtOTcuMzgtOTkuMDYtMzMtNjkuMzItMTQ2LjUtNjQuNjUtMTc3LjI0IDBDMTEwLjUyIDE1Ny43MiA3NCAxOTQuNjMgNzQgMjU2YzAgNjIuMTMgMzcuMjcgOTkuNDEgOTkuNCA5OS40MSA0OCAwIDc0LjU1IDI2LjIzIDc0LjU1IDc0LjM5VjQ3OWMtMTM0LjQzLTUtMjExLjEtODUuMDctMjExLjEtMjIzIDAtMTQxLjgyIDgxLjM1LTIyMy4yIDIyMy4yLTIyMy4yIDExNC43NyAwIDE4OS44NCA1My4yIDIxNC42OSAxNDguODFINTAwQzQ3My44OCA3MS41MSAzODguMjIgOCAyNTkuODIgOCAxMDUgOCAxMiAxMDEuMTkgMTIgMjU1LjgyIDEyIDQxMS4xNCAxMDUuMTkgNTA0LjM0IDI1OS44MiA1MDRjMTI4LjI3IDAgMjEzLjg3LTYzLjgxIDIzOS42Ny0xNzMuNTl6TTM1NyAxODIuMzNjNDEuMzcgMy40NSA2NC4yIDI5IDY0LjIgNzMuNjcgMCA0OC0yNi40MyA3NC40MS03NC40IDc0LjQxLTI4LjYxIDAtNDkuMzMtOS41OS02MS41OS0yNy4zMyA4My4wNi0xNi41NSA3NS41OS05OS42NyA3MS43OS0xMjAuNzV6bS04MS42OCA5Ny4zNmMtMi40Ni0xMC4zNC0xNi4zMy04NyA1Ni4yMy05NyAyLjI3IDEwLjA5IDE2LjUyIDg3LjExLTU2LjI2IDk3ek0yNjAgMTMyYzI4LjYxIDAgNDkgOS42NyA2MS40NCAyNy42MS0yOC4zNiA1LjQ4LTQ5LjM2IDIwLjU5LTYxLjU5IDQzLjQ1LTEyLjIzLTIyLjg2LTMzLjIzLTM4LTYxLjYtNDMuNDUgMTIuNDEtMTcuNjkgMzMuMjctMjcuMzUgNjEuNTctMjcuMzV6bS03MS41MiA1MC43MmM3My4xNyAxMC41NyA1OC45MSA4Ni44MSA1Ni40OSA5Ny03Mi40MS05Ljg0LTU5LTg2Ljk1LTU2LjI1LTk3ek0xNzMuMiAzMzAuNDFjLTQ4IDAtNzQuNC0yNi40LTc0LjQtNzQuNDEgMC00NC4zNiAyMi44Ni03MCA2NC4yMi03My42Ny02Ljc1IDM3LjItMS4zOCAxMDYuNTMgNzEuNjUgMTIwLjc1LTEyLjE0IDE3LjYzLTMyLjg0IDI3LjMtNjEuMTQgMjcuM3ptNTMuMjEgMTIuMzlBODAuOCA4MC44IDAgMCAwIDI2MCAzMDkuMjVjNy43NyAxNC40OSAxOS4zMyAyNS41NCAzMy44MiAzMy41NWE4MC4yOCA4MC4yOCAwIDAgMC0zMy41OCAzMy44M2MtOC0xNC41LTE5LjA3LTI2LjIzLTMzLjU2LTMzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcGFuZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEwLjMgMjIwLjJjLTUuNi0yNC44LTI2LjktNDEuMi01MS00MS4yaC0zN2MtNy4xIDAtMTIuNSA0LjUtMTQuMyAxMC45TDczLjEgMzIwbDI0LjctLjFjNi44IDAgMTIuMy00LjUgMTQuMi0xMC43bDI1LjgtOTUuN2gxOS44YzguNCAwIDE2LjIgNS42IDE4LjMgMTQuOCAyLjUgMTAuOS01LjkgMjIuNi0xOC4zIDIyLjZoLTEwLjNjLTcgMC0xMi41IDQuNi0xNC4zIDEwLjhsLTYuNCAyMy44aDMyYzM3LjIgMCA1OC4zLTM2LjIgNTEuNy02NS4zem0tMTU2LjUgMjhoMTguNmM2LjkgMCAxMi40LTQuNCAxNC4zLTEwLjlsNi4yLTIzLjZoLTQwQzMwIDIxMy43IDkgMjI3LjggMS43IDI1NC44LTcgMjg4LjYgMTguNSAzMjAgNTIgMzIwaDEyLjRsNy4xLTI2LjFjMS4yLTQuNC0yLjItOC4zLTYuNC04LjNINTMuOGMtMjQuNyAwLTI0LjktMzcuNCAwLTM3LjR6bTI0Ny41LTM0LjhoLTc3LjlsLTMuNSAxMy40Yy0yLjQgOS42IDQuNSAxOC41IDE0LjIgMTguNWg1Ny41YzQgMCAyLjQgNC4zIDIuMSA1LjNsLTguNiAzMS44Yy0uNCAxLjQtLjkgNS4zLTUuNSA1LjNoLTM0LjljLTUuMyAwLTUuMy03LjkgMC03LjloMjEuNmM2LjggMCAxMi4zLTQuNiAxNC4yLTEwLjhsMy41LTEzLjJoLTQ4LjRjLTM5LjIgMC00My42IDYzLjgtLjcgNjMuOGw1Ny41LjJjMTEuMiAwIDIwLjYtNy4yIDIzLjQtMTcuOGwxNC01MS44YzQuOC0xOS4yLTkuNy0zNi44LTI4LjUtMzYuOHpNNjMzLjEgMTc5aC0xOC45Yy00LjkgMC05LjIgMy4yLTEwLjQgNy45TDU2OC4yIDMyMGMyMC43IDAgMzkuOC0xMy44IDQ0LjktMzQuNWwyNi41LTk4LjJjMS4yLTQuMy0yLTguMy02LjUtOC4zem0tMjM2LjMgMzQuN3YuMWgtNDguM2wtMjYuMiA5OGMtMS4yIDQuNCAyLjIgOC4zIDYuNCA4LjNoMTguOWM0LjggMCA5LjItMyAxMC40LTcuOGwxNy4yLTY0SDM5NWMxMi41IDAgMjEuNCAxMS44IDE4LjEgMjMuNGwtMTAuNiA0MGMtMS4yIDQuMyAxLjkgOC4zIDYuNCA4LjNINDI4YzQuNiAwIDkuMS0yLjkgMTAuMy03LjhsOC44LTMzLjFjOS0zMy4xLTE1LjktNjUuNC01MC4zLTY1LjR6bTk4LjMgNzQuNmMtMy42IDAtNi0zLjQtNS4xLTYuN2w4LTMwYy45LTMuOSAzLjctNiA3LjgtNmgzMi45YzIuNiAwIDQuNiAyLjQgMy45IDUuMWwtLjcgMi42Yy0uNiAyLTEuOSAzLTMuOSAzaC0yMS42Yy03IDAtMTIuNiA0LjYtMTQuMiAxMC44bC0zLjUgMTNoNTMuNGMxMC41IDAgMjAuMy02LjYgMjMuMi0xNy42bDMuMi0xMmM0LjktMTkuMS05LjMtMzYuOC0yOC4zLTM2LjhoLTQ3LjNjLTE3LjkgMC0zMy44IDEyLTM4LjYgMjkuNmwtMTAuOCA0MGMtNSAxNy43IDguMyAzNi43IDI4LjMgMzYuN2g2Ni43YzYuOCAwIDEyLjMtNC41IDE0LjItMTAuN2w1LjctMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc0J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNC45IDE5NC40djEwMS40aC0yOC4zdjEyMC41aC03Ny4xVjI5NS45aC0yOC4zVjE5NC40YzAtNC40IDEuNi04LjIgNC42LTExLjMgMy4xLTMuMSA2LjktNC43IDExLjMtNC43SDI5OWM0LjEgMCA3LjggMS42IDExLjEgNC43IDMuMSAzLjIgNC44IDYuOSA0LjggMTEuM3ptLTEwMS41LTYzLjdjMC0yMy4zIDExLjUtMzUgMzQuNS0zNXMzNC41IDExLjcgMzQuNSAzNWMwIDIzLTExLjUgMzQuNS0zNC41IDM0LjVzLTM0LjUtMTEuNS0zNC41LTM0LjV6TTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNOY0V1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny43IDhDMTAzLjYgOCAwIDEyNC44IDAgMjU2YzAgMTM2LjMgMTExLjcgMjQ4IDI0Ny43IDI0OEMzNzcuOSA1MDQgNDk2IDQwMy4xIDQ5NiAyNTYgNDk2IDExNyAzODguNCA4IDI0Ny43IDh6bS42IDQ1MC43Yy0xMTIgMC0yMDMuNi05Mi41LTIwMy42LTIwMi43IDAtMjMuMiAzLjctNDUuMiAxMC45LTY2bDY1LjcgMjkuMWgtNC43djI5LjVoMjMuM2MwIDYuMi0uNCAzLjItLjQgMTkuNWgtMjIuOHYyOS41aDI3YzExLjQgNjcgNjcuMiAxMDEuMyAxMjQuNiAxMDEuMyAyNi42IDAgNTAuNi03LjkgNjQuOC0xNS44bC0xMC00Ni4xYy04LjcgNC42LTI4LjIgMTAuOC00Ny4zIDEwLjgtMjguMiAwLTU4LjEtMTAuOS02Ny4zLTUwLjJoOTAuM2wxMjguMyA1Ni44Yy0xLjUgMi4xLTU2LjIgMTA0LjMtMTc4LjggMTA0LjN6bS0xNi43LTE5MC42bC0uNS0uNC45LjRoLS40em03Ny4yLTE5LjVoMy43di0yOS41aC03MC4zbC0yOC42LTEyLjZjMi41LTUuNSA1LjQtMTAuNSA4LjgtMTQuMyAxMi45LTE1LjggMzEuMS0yMi40IDUxLjEtMjIuNCAxOC4zIDAgMzUuMyA1LjQgNDYuMSAxMGwxMS42LTQ3LjNjLTE1LTYuNi0zNy0xMi40LTYyLjMtMTIuNC0zOSAwLTcyLjIgMTUuOC05NS45IDQyLjMtNS4zIDYuMS05LjggMTIuOS0xMy45IDIwLjFsLTgxLjYtMzYuMWM2NC42LTk2LjggMTU3LjctOTMuNiAxNzAuNy05My42IDExMyAwIDIwMyA5MC4yIDIwMyAyMDMuNCAwIDE4LjctMi4xIDM2LjMtNi4zIDUyLjlsLTEzNi4xLTYwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05jSnAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjcgOEMxMDMuNiA4IDAgMTI0LjggMCAyNTZjMCAxMzYuNCAxMTEuOCAyNDggMjQ3LjcgMjQ4QzM3Ny45IDUwNCA0OTYgNDAzLjIgNDk2IDI1NiA0OTYgMTE3LjIgMzg4LjUgOCAyNDcuNyA4em0uNiA0NTAuN2MtMTEyIDAtMjAzLjYtOTIuNS0yMDMuNi0yMDIuNyAwLTIxLjEgMy00MS4yIDktNjAuM2wxMjcgNTYuNWgtMjcuOXYzOC42aDU4LjFsNS43IDExLjh2MTguN2gtNjMuOFYzNjBoNjMuOHY1Nmg2MS43di01Nmg2NC4ydi0zNS43bDgxIDM2LjFjLTEuNSAyLjItNTcuMSA5OC4zLTE3NS4yIDk4LjN6bTg3LjYtMTM3LjNoLTU3LjZ2LTE4LjdsMi45LTUuNiA1NC43IDI0LjN6bTYuNS01MS40di0xNy44aC0zOC42bDYzLTExNkgzMDFsLTQzLjQgOTYtMjMtMTAuMi0zOS42LTg1LjdoLTY1LjhsMjcuMyA1MS04MS45LTM2LjVjMjcuOC00NC4xIDgyLjYtOTguMSAxNzMuNy05OC4xIDExMi44IDAgMjAzIDkwIDIwMyAyMDMuNCAwIDIxLTIuNyA0MC42LTcuOSA1OWwtMTAxLTQ1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg3LjQgOCA0OTYgMTE1LjkgNDk2IDI1NmMwIDE0Ny4yLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjEgNTA0IDAgMzkzLjIgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6TTU1LjggMTg5LjFjLTcuNCAyMC40LTExLjEgNDIuNy0xMS4xIDY2LjkgMCAxMTAuOSA5Mi4xIDIwMi40IDIwMy43IDIwMi40IDEyMi40IDAgMTc3LjItMTAxLjggMTc4LjUtMTA0LjFsLTkzLjQtNDEuNmMtNy43IDM3LjEtNDEuMiA1My02OC4yIDU1LjR2MzguMWgtMjguOFYzNjhjLTI3LjUtLjMtNTIuNi0xMC4yLTc1LjMtMjkuN2wzNC4xLTM0LjVjMzEuNyAyOS40IDg2LjQgMzEuOCA4Ni40LTIuMiAwLTYuMi0yLjItMTEuMi02LjYtMTUuMS0xNC4yLTYtMS44LS4xLTIxOS4zLTk3LjR6TTI0OC40IDUyLjNjLTM4LjQgMC0xMTIuNCA4LjctMTcwLjUgOTNsOTQuOCA0Mi41YzEwLTMxLjMgNDAuNC00Mi45IDYzLjgtNDQuM3YtMzguMWgyOC44djM4LjFjMjIuNyAxLjIgNDMuNCA4LjkgNjIgMjNMMjk1IDE5OS43Yy00Mi43LTI5LjktODMuNS04LTcwIDExLjEgNTMuNCAyNC4xIDQzLjggMTkuOCA5MyA0MS42bDEyNy4xIDU2LjdjNC4xLTE3LjQgNi4yLTM1LjEgNi4yLTUzLjEgMC01Ny0xOS44LTEwNS01OS4zLTE0My45LTM5LjMtMzkuOS04Ny4yLTU5LjgtMTQzLjYtNTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zTmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTk0IDE0NC4zdjQyLjVIMTYyLjFWMTk3aDE4MC4zem0wIDc5Ljh2NDIuNUgxNjIuMXYtNDIuNWgxODAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zUGRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMxMDQuNyA4IDAgMTIzLjEgMCAyNTZjMCAxMzguNSAxMTMuNiAyNDggMjQ3LjYgMjQ4QzM3Ny41IDUwNCA0OTYgNDAzLjEgNDk2IDI1NiA0OTYgMTE4LjEgMzg5LjQgOCAyNDcuNiA4em0uOCA0NTAuOGMtMTEyLjUgMC0yMDMuNy05My0yMDMuNy0yMDIuOCAwLTEwNS40IDg1LjUtMjAzLjMgMjAzLjctMjAzLjMgMTEyLjYgMCAyMDIuOSA4OS41IDIwMi44IDIwMy4zIDAgMTIxLjctOTkuNiAyMDIuOC0yMDIuOCAyMDIuOHpNMzE2LjcgMTg2aC01My4ydjEzNy4yaDUzLjJjMjEuNCAwIDcwLTUuMSA3MC02OC42IDAtNjMuNC00OC42LTY4LjYtNzAtNjguNnptLjggMTA4LjVoLTE5Ljl2LTc5LjdsMTkuNC0uMWMzLjggMCAzNS0yLjEgMzUgMzkuOSAwIDI0LjYtMTAuNSAzOS45LTM0LjUgMzkuOXpNMjAzLjcgMTg2aC02OC4ydjEzNy4zaDM0LjZWMjc5aDI3YzU0LjEgMCA1Ny4xLTM3LjUgNTcuMS00Ni41IDAtMzEtMTYuOC00Ni41LTUwLjUtNDYuNXptLTQuOSA2Ny4zaC0yOS4ydi00MS42aDI4LjNjMzAuOSAwIDI4LjggNDEuNi45IDQxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1BkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5LjEgMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OEM0OTYgMTE5LjEgMzg1IDggMjQ4IDh6bTAgNDQ5LjVjLTEzOS4yIDAtMjM1LjgtMTM4LTE5MC4yLTI2Ny45bDc4LjggMzUuMWMtMi4xIDEwLjUtMy4zIDIxLjUtMy4zIDMyLjkgMCA5OSA3My45IDEyNi45IDEyMC40IDEyNi45IDIyLjkgMCA1My41LTYuNyA3OS40LTI5LjVMMjk3IDMxMS4xYy01LjUgNi4zLTE3LjYgMTYuNy0zNi4zIDE2LjctMzcuOCAwLTUzLjctMzkuOS01My45LTcxLjkgMjMwLjQgMTAyLjYgMjE2LjUgOTYuNSAyMTcuOSA5Ni44LTM0LjMgNjIuNC0xMDAuNiAxMDQuOC0xNzYuNyAxMDQuOHptMTk0LjItMTUwbC0yMjQtMTAwYzE4LjgtMzQgNTQuOS0zMC43IDc0LjctMTFsNDAuNC00MS42Yy0yNy4xLTIzLjMtNTgtMjcuNS03OC4xLTI3LjUtNDcuNCAwLTgwLjkgMjAuNS0xMDAuNyA1MS42bC03NC45LTMzLjRjMzYuMS01NC45IDk4LjEtOTEuMiAxNjguNS05MS4yIDExMS4xIDAgMjAxLjUgOTAuNCAyMDEuNSAyMDEuNSAwIDE4LTIuNCAzNS40LTYuOCA1Mi0uMy0uMS0uNC0uMi0uNi0uNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zUmVtaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTE2MS43IDIwNy43bDQuOSAyLjJ2NzBjLTcuMiAzLjYtNjMuNCAyNy41LTY3LjMgMjguOC02LjUtMS44LTExMy43LTQ2LjgtMTM3LjMtNTYuMmwtNjQuMiAyNi42LTYzLjMtMjcuNXYtNjMuOGw1OS4zLTI0LjhjLS43LS43LS40IDUtLjQtNzAuNGw2Ny4zLTI5LjdMMzYxIDE3OC41djYxLjZsNDkuMSAyMC4zem0tNzAuNCA4MS41di00My44aC0uNHYtMS44bC0xMTMuOC00Ni41VjI5NWwxMTMuOCA0Ni45di0uNGwuNC40em03LjUtNTcuNmwzOS45LTE2LjQtMzYuOC0xNS41LTM5IDE2LjQgMzUuOSAxNS41em01Mi4zIDM4LjF2LTQzTDM1NS4yIDI5OHY0My40bDQ0LjMtMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zek0xMzcuNyAyMjFjMTMtODMuOSA4MC41LTk1LjcgMTA4LjktOTUuNyA5OS44IDAgMTI3LjUgODIuNSAxMjcuNSAxMzQuMiAwIDYzLjYtNDEgMTMyLjktMTI4LjkgMTMyLjktMzguOSAwLTk5LjEtMjAtMTA5LjQtOTdoNjIuNWMxLjUgMzAuMSAxOS42IDQ1LjIgNTQuNSA0NS4yIDIzLjMgMCA1OC0xOC4yIDU4LTgyLjggMC04Mi41LTQ5LjEtODAuNi01Ni43LTgwLjYtMzMuMSAwLTUxLjcgMTQuNi01NS44IDQzLjhoMTguMmwtNDkuMiA0OS4yLTQ5LTQ5LjJoMTkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2FtcGxpbmdQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0xMDcgMjA1LjZjLTQuNyAwLTkgMi44LTEwLjcgNy4ybC00IDkuNS0xMS05Mi44Yy0xLjctMTMuOS0yMi0xMy40LTIzLjEuNGwtNC4zIDUxLjQtNS4yLTY4LjhjLTEuMS0xNC4zLTIyLjEtMTQuMi0yMy4yIDBsLTMuNSA0NC45LTUuOS05NC4zYy0uOS0xNC41LTIyLjMtMTQuNC0yMy4yIDBsLTUuMSA4My43LTQuMy02Ni4zYy0uOS0xNC40LTIyLjItMTQuNC0yMy4yIDBsLTUuMyA4MC4yLTQuMS01N2MtMS4xLTE0LjMtMjItMTQuMy0yMy4yLS4ybC03LjcgODkuOC0xLjgtMTIuMmMtMS43LTExLjQtMTcuMS0xMy42LTIyLTMuM2wtMTMuMiAyNy43SDg3LjV2MjMuMmg1MS4zYzQuNCAwIDguNC0yLjUgMTAuNC02LjRsMTAuNyA3My4xYzIgMTMuNSAyMS45IDEzIDIzLjEtLjdsMy44LTQzLjYgNS43IDc4LjNjMS4xIDE0LjQgMjIuMyAxNC4yIDIzLjItLjFsNC42LTcwLjQgNC44IDczLjNjLjkgMTQuNCAyMi4zIDE0LjQgMjMuMi0uMWw0LjktODAuNSA0LjUgNzEuOGMuOSAxNC4zIDIyLjEgMTQuNSAyMy4yLjJsNC42LTU4LjYgNC45IDY0LjRjMS4xIDE0LjMgMjIgMTQuMiAyMy4xLjFsNi44LTgzIDIuNyAyMi4zYzEuNCAxMS44IDE3LjcgMTQuMSAyMi4zIDMuMWwxOC00My40aDUwLjVWMjU4bC01OC40LjN6bS03OCA1LjJoLTIxLjl2MjEuOWMwIDQuMS0zLjMgNy41LTcuNSA3LjUtNC4xIDAtNy41LTMuMy03LjUtNy41di0yMS45aC0yMS45Yy00LjEgMC03LjUtMy4zLTcuNS03LjUgMC00LjEgMy40LTcuNSA3LjUtNy41aDIxLjl2LTIxLjljMC00LjEgMy40LTcuNSA3LjUtNy41czcuNSAzLjMgNy41IDcuNXYyMS45aDIxLjljNC4xIDAgNy41IDMuMyA3LjUgNy41IDAgNC4xLTMuNCA3LjUtNy41IDcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2FtcGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTMuNiA1My4yYzIuOC0uMyAxMS41IDEgMTEuNSAxMS41bDYuNiAxMDcuMiA0LjktNTkuM2MwLTYgNC43LTEwLjYgMTAuNi0xMC42IDUuOSAwIDEwLjYgNC43IDEwLjYgMTAuNiAwIDIuNS0uNS01LjcgNS43IDgxLjVsNS44LTY0LjJjLjMtMi45IDIuOS05LjMgMTAuMi05LjMgMy44IDAgOS45IDIuMyAxMC42IDguOWwxMS41IDk2LjUgNS4zLTEyLjhjMS44LTQuNCA1LjItNi42IDEwLjItNi42aDU4djIxLjNoLTUwLjlsLTE4LjIgNDQuM2MtMy45IDkuOS0xOS41IDkuMS0yMC44LTMuMWwtNC0zMS45LTcuNSA5Mi42Yy0uMyAzLTMgOS4zLTEwLjIgOS4zLTMgMC05LjgtMi4xLTEwLjYtOS4zIDAtMS45LjYgNS44LTYuMi03Ny45bC01LjMgNzIuMmMtMS4xIDQuOC00LjggOS4zLTEwLjYgOS4zLTIuOSAwLTkuOC0yLTEwLjYtOS4zIDAtMS45LjUgNi43LTUuOC04Ny43bC01LjggOTQuOGMwIDYuMy0zLjYgMTIuNC0xMC42IDEyLjQtNS4yIDAtMTAuNi00LjEtMTAuNi0xMmwtNS44LTg3LjdjLTUuOCA5Mi41LTUuMyA4NC01LjMgODUuOS0xLjEgNC44LTQuOCA5LjMtMTAuNiA5LjMtMyAwLTkuOC0yLjEtMTAuNi05LjMgMC0uNy0uNC0xLjEtLjQtMi42bC02LjItODguNkwxODIgMzQ4Yy0uNyA2LjUtNi43IDkuMy0xMC42IDkuMy01LjggMC05LjYtNC4xLTEwLjYtOC45TDE0OS43IDI3MmMtMiA0LTMuNSA4LjQtMTEuMSA4LjRIODcuMnYtMjEuM0gxMzJsMTMuNy0yNy45YzQuNC05LjkgMTguMi03LjIgMTkuOSAyLjdsMy4xIDIwLjQgOC40LTk3LjljMC02IDQuOC0xMC42IDEwLjYtMTAuNi41IDAgMTAuNi0uMiAxMC42IDEyLjRsNC45IDY5LjEgNi42LTkyLjZjMC0xMC4xIDkuNS0xMC42IDEwLjItMTAuNi42IDAgMTAuNi43IDEwLjYgMTAuNmw1LjMgODAuNiA2LjItOTcuOWMuMS0xLjEtLjYtMTAuMyA5LjktMTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTEwMSAxMzIuNGM3LjggMCAxMy43IDYuMSAxMy43IDEzLjd2MTgyLjVjMCA3LjctNi4xIDEzLjctMTMuNyAxMy43SDIxNC4zYy03LjcgMC0xMy43LTYtMTMuNy0xMy43di01NGgtNTRjLTcuOCAwLTEzLjctNi0xMy43LTEzLjdWMTMxLjFjMC04LjIgNi42LTEyLjcgMTIuNC0xMy43aDEzNi40YzcuNyAwIDEzLjcgNiAxMy43IDEzLjd2NTRoNTR6TTE1OS45IDMwMC4zaDQwLjdWMTk4LjljMC03LjQgNS44LTEyLjYgMTItMTMuN2g1NS44di00MC4zSDE1OS45djE1NS40em0xNzYuMi04OC4xSDIyNy42djE1NS40aDEwOC41VjIxMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNaZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0tLjQgNjAuNWMtODEuOSAwLTEwMi41IDc3LjMtMTAyLjUgMTQyLjggMCA2NS41IDIwLjYgMTQyLjggMTAyLjUgMTQyLjhTMzUwLjUgMzIxLjUgMzUwLjUgMjU2YzAtNjUuNS0yMC42LTE0Mi44LTEwMi41LTE0Mi44em0wIDUzLjljMy4zIDAgNi40LjUgOS4yIDEuMiA1LjkgNS4xIDguOCAxMi4xIDMuMSAyMS45bC01NC41IDEwMC4yYy0xLjctMTIuNy0xLjktMjUuMS0xLjktMzQuNCAwLTI4LjggMi04OC45IDQ0LjEtODguOXptNDAuOCA0Ni4yYzIuOSAxNS40IDMuMyAzMS40IDMuMyA0Mi43IDAgMjguOS0yIDg4LjktNDQuMSA4OC45LTEzLjUgMC0zMi42LTcuNy0yMC4xLTI2LjRsNjAuOS0xMDUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0NS44MyAyMTQuODdsLTMzLjIyIDE3LjI4Yy05LjQzLTE5LjU4LTI1LjI0LTE5LjkzLTI3LjQ2LTE5LjkzLTIyLjEzIDAtMzMuMjIgMTQuNjEtMzMuMjIgNDMuODQgMCAyMy41NyA5LjIxIDQzLjg0IDMzLjIyIDQzLjg0IDE0LjQ3IDAgMjQuNjUtNy4wOSAzMC41Ny0yMS4yNmwzMC41NSAxNS41Yy02LjE3IDExLjUxLTI1LjY5IDM4Ljk4LTY1LjEgMzguOTgtMjIuNiAwLTczLjk2LTEwLjMyLTczLjk2LTc3LjA1IDAtNTguNjkgNDMtNzcuMDYgNzIuNjMtNzcuMDYgMzAuNzItLjAxIDUyLjcgMTEuOTUgNjUuOTkgMzUuODZ6bTE0My4wNSAwbC0zMi43OCAxNy4yOGMtOS41LTE5Ljc3LTI1LjcyLTE5LjkzLTI3LjktMTkuOTMtMjIuMTQgMC0zMy4yMiAxNC42MS0zMy4yMiA0My44NCAwIDIzLjU1IDkuMjMgNDMuODQgMzMuMjIgNDMuODQgMTQuNDUgMCAyNC42NS03LjA5IDMwLjU0LTIxLjI2bDMxIDE1LjVjLTIuMSAzLjc1LTIxLjM5IDM4Ljk4LTY1LjA5IDM4Ljk4LTIyLjY5IDAtNzMuOTYtOS44Ny03My45Ni03Ny4wNSAwLTU4LjY3IDQyLjk3LTc3LjA2IDcyLjYzLTc3LjA2IDMwLjcxLS4wMSA1Mi41OCAxMS45NSA2NS41NiAzNS44NnpNMjQ3LjU2IDguMDVDMTA0Ljc0IDguMDUgMCAxMjMuMTEgMCAyNTYuMDVjMCAxMzguNDkgMTEzLjYgMjQ4IDI0Ny41NiAyNDggMTI5LjkzIDAgMjQ4LjQ0LTEwMC44NyAyNDguNDQtMjQ4IDAtMTM3Ljg3LTEwNi42Mi0yNDgtMjQ4LjQ0LTI0OHptLjg3IDQ1MC44MWMtMTEyLjU0IDAtMjAzLjctOTMuMDQtMjAzLjctMjAyLjgxIDAtMTA1LjQyIDg1LjQzLTIwMy4yNyAyMDMuNzItMjAzLjI3IDExMi41MyAwIDIwMi44MiA4OS40NiAyMDIuODIgMjAzLjI2LS4wMSAxMjEuNjktOTkuNjggMjAyLjgyLTIwMi44NCAyMDIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyaXRpY2FsUm9sZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuODIgMGMuMjYuMTUgMjE2LjU3IDEyNC41MSAyMTcuMTIgMTI0LjcyIDMgMS4xOCAzLjcgMy40NiAzLjcgNi41NnEtLjExIDEyNS4xNyAwIDI1MC4zNmE1Ljg4IDUuODggMCAwIDEtMy4zOCA1Ljc4Yy0yMS4zNyAxMi0yMDcuODYgMTE4LjI5LTIxOC45MyAxMjQuNThoLTNDMTQyIDQ2Ni4zNCAzLjA4IDM4Ni41NiAyLjkzIDM4Ni40OGEzLjI5IDMuMjkgMCAwIDEtMS44OC0zLjI0YzAtLjg3IDAtMjI1Ljk0LS4wNS0yNTMuMWE1IDUgMCAwIDEgMi45My00LjkzQzI3LjE5IDExMi4xMSAyMTMuMiA2IDIyNC4wNyAwek0yMTUuNCAyMC40MmwtLjIyLS4xNlExMTguMDYgNzUuNTUgMjEgMTMwLjg3YzAgLjEyLjA4LjIzLjEzLjM1bDMwLjg2IDExLjY0Yy03LjcxIDYtOC4zMiA2LTEwLjY1IDUuMTMtLjEgMC0yNC4xNy05LjI4LTI2LjgtMTB2MjMwLjQzYy44OC0xLjQxIDY0LjA3LTExMC45MSA2NC4xMy0xMTEgMS42Mi0yLjgyIDMtMS45MiA5LjEyLTEuNTIgMS40LjA5IDEuNDguMjIuNzggMS40Mi00MS4xOSA3MS4zMy0zNi40IDYzLTY3LjQ4IDExNi45NC0uODEgMS40LS42MSAxLjEzIDEuMjUgMS4xM2gxODYuNWMxLjQ0IDAgMS42OS0uMjMgMS43LTEuNjR2LTguODhjMC0xLjM0IDIuMzYtLjgxLTE4LjM3LTEtNy40Ni0uMDctMTQuMTQtMy4yMi0yMS4zOC0xMi43LTcuMzgtOS42Ni0xNC42Mi0xOS40My0yMS44NS0yOS4yMS0yLjI4LTMuMDgtMy40NS0yLjM4LTE2Ljc2LTIuMzgtMS43NSAwLTEuNzggMC0xLjc2IDEuODIuMjkgMjYuMjEuMTUgMjUuMjcgMSAzMi42Ni41MiA0LjM3IDIuMTYgNC4yIDkuNjkgNC44MSAzLjE0LjI2IDMuODggNC4wOC41MiA0LjkyLTEuNTcuMzktMzEuNi41MS0zMy42Ny0uMWEyLjQyIDIuNDIgMCAwIDEgLjMtNC43M2MzLjI5LS43NiA2LjE2LjgxIDYuNjYtNC40NCAxLjMtMTMuNjYgMS4xNy05IDEuMS03OS40MiAwLTEwLjgyLS4zNS0xMi41OC01LjM2LTEzLjU1LTEuMjItLjI0LTMuNTQtLjE2LTQuNjktLjU1LTIuODgtMS0yLTQuODQgMS43Ny00Ljg1IDMzLjY3IDAgNDYuMDgtMS4wNyA1Ni4wNiA0Ljg2IDcuNzQgNC42MSAxMiAxMS40OCAxMi41MSAyMC40Ljg4IDE0LjU5LTYuNTEgMjIuMzUtMTUgMzIuNTlhMS40NiAxLjQ2IDAgMCAwIDAgMi4yMmMyLjYgMy4yNSA1IDYuNjMgNy43MSA5LjgzIDI3LjU2IDMzLjIzIDI0LjExIDMwLjU0IDQxLjI4IDMzLjA2Ljg5LjEzIDEtLjQyIDEtMS4xNXYtMTFjMC0xIC4zMi0xLjQzIDEuNDEtMS4yNmE3Mi4zNyA3Mi4zNyAwIDAgMCAyMy41OC0uM2MxLjA4LS4xNSAxLjUuMiAxLjQ4IDEuMzMgMCAuMTEuODggMjYuNjkuODcgMjYuOC0uMDUgMS41Mi42NyAxLjYyIDEuODkgMS42MmgxODYuNzFRMzg2LjUxIDMwNC42IDM0NiAyMzQuMzNjMi4yNi0uNjYtLjQgMCA2LjY5LTEuMzkgMi0uMzkgMi4wNS0uNDEgMy4xMSAxLjQ0IDcuMzEgMTIuNjQgNzcuMzEgMTM0IDc3LjM3IDEzNC4wNlYxMzhjLTEuNzIuNS0xMDMuMyAzOC43Mi0xMDUuNzYgMzkuNjgtMS4wOC40Mi0xLjU1LjItMS45MS0uODgtLjYzLTEuOS0xLjM0LTMuNzYtMi4wOS01LjYyLS4zMi0uNzktLjA5LTEuMTMuNjUtMS4zOS4xIDAgOTUuNTMtMzUuODUgMTAzLTM4Ljc3LTY1LjQyLTM3LjU3LTEzMC41Ni03NS0xOTYtMTEyLjZsODYuODIgMTUwLjM5LS4yOC4zM2MtOS41Ny0uOS0xMC40Ni0xLjYtMTEuOC0zLjk0LTEtMS42OS03My41LTEyNy43MS04Mi0xNDIuMTYtOS4xIDE0LjY3LTgzLjU2IDE0Ni4yMS04NS4zNyAxNDYuMzItMi45My4xNy01Ljg4LjA4LTkuMjUuMDhxNDMuMjUtNzQuNzQgODYuMTgtMTQ5em01MS45MyAxMjkuOTJhMzcuNjggMzcuNjggMCAwIDAgNS41NC0uODVjMS42OS0uMyAyLjUzLjIgMi42IDEuOTIgMCAuMTEuMDcgMTkuMDYtLjg2IDIwLjQ1cy0xLjg4IDEuMjItMi42LS4xOWMtNS05LjY5IDYuMjItOS42Ni0zOS4xMi0xMi0uNyAwLTEgLjIzLTEgLjkzIDAgLjEzIDMuNzIgMTIyIDMuNzMgMTIyLjExIDAgLjg5LjUyIDEuMiAxLjIxIDEuNTFhODMuOTIgODMuOTIgMCAwIDEgOC43IDQuMDVjNy4zMSA0LjMzIDExLjM4IDEwLjg0IDEyLjQxIDE5LjMxIDEuNDQgMTEuOC0yLjc3IDM1Ljc3LTMyLjIxIDM3LjE0LTIuNzUuMTMtMjguMjYgMS4wOC0zNC4xNC0yMy4yNS00LjY2LTE5LjI2IDguMjYtMzIuNyAxOS44OS0zNi40YTIuNDUgMi40NSAwIDAgMCAyLTIuNjZjLjEtNS42MyAzLTEwNy4xIDMuNzEtMTIxLjM1LjA1LTEuMDgtLjYyLTEuMTYtMS4zNS0xLjE1LTMyLjM1LjUyLTM2Ljc1LS4zNC00MC4yMiA4LjUyLTIuNDIgNi4xOC00LjE0IDEuMzItMy45NS4yM3ExLjU5LTkgMy4zMS0xOGMuNC0yLjExIDEuNDMtMi42MSAzLjQzLTEuODYgNS41OSAyLjExIDYuNzIgMS43IDM3LjI1IDEuOTIgMS43MyAwIDEuNzgtLjA4IDEuODItMS44NS42OC0yNy40OS41OC0yMi41OSAxLTI5LjU1YTIuNjkgMi42OSAwIDAgMC0xLjYzLTIuOGMtNS42LTIuOTEtOC43NS03LjU1LTguOS0xMy44Ny0uMzUtMTQuODEgMTcuNzItMjEuNjcgMjcuMzgtMTEuNTEgNi44NCA3LjE5IDUuOCAxOC45MS0yLjQ1IDI0LjE1YTQuMzUgNC4zNSAwIDAgMC0yLjIyIDQuMzRjMCAuNTktLjExLTQuMzEgMSAzMC4wNSAwIC45LjQzIDEuMTIgMS4yNCAxLjExLjEgMCAyMy0uMDkgMzQuNDctLjM3ek02OC4yNyAxNDEuN2MxOS44NC00LjUxIDMyLjY4LS41NiA1Mi40OSAxLjY5IDIuNzYuMzEgMy43NCAxLjIyIDMuNjIgNC0uMjEgNS0xLjE2IDIyLjMzLTEuMjQgMjMuMTVhMi42NSAyLjY1IDAgMCAxLTEuNjMgMi4zNGMtNC4wNiAxLjctMy42MS00LjQ1LTQtNy4yOS0zLjEzLTIyLjQzLTczLjg3LTMyLjctNzQuNjMgMjUuNC0uMzEgMjMuOTIgMTcgNTMuNjMgNTQuMDggNTAuODggMjcuMjQtMiAxOS0yMC4xOSAyNC44NC0yMC40N2EyLjcyIDIuNzIgMCAwIDEgMyAzLjM2Yy0xLjgzIDEwLjg1LTMuNDIgMTguOTUtMy40NSAxOS4xNS0xLjU0IDkuMTctODYuNyAyMi4wOS05My4zNS00Mi4wNi0yLjcxLTI1Ljg1IDEwLjQ0LTUzLjM3IDQwLjI3LTYwLjE1em04MCA4Ny42N2gtMTkuNDlhMi41NyAyLjU3IDAgMCAxLTIuNjYtMS43OWMyLjM4LTMuNzUgNS44OS45MiA1Ljg2LTYuMTQtLjA4LTI1Ljc1LjIxLTM4IC4yMy00MC4xIDAtMy40Mi0uNTMtNC42NS0zLjMyLTQuOTQtNy0uNzItMy4xMS0zLjM3LTEuMTEtMy4zOCAxMS44NC0uMSAyMi42Mi0uMTggMzAuMDUuNzIgOC43NyAxLjA3IDE2LjcxIDEyLjYzIDcuOTMgMjIuNjItMiAyLjI1LTQgNC40Mi02LjE0IDYuNzMuOTUgMS4xNSA2LjkgOC44MiAxNy4yOCAxOS42OCAyLjY2IDIuNzggNi4xNSAzLjUxIDkuODggMy4xM2EyLjIxIDIuMjEgMCAwIDAgMi4yMy0yLjEyYy4zLTMuNDIuMjYgNC43My40NS00MC41OCAwLTUuNjUtLjM0LTYuNTgtMy4yMy02LjgzLTMuOTUtLjM1LTQtMi4yNi0uNjktMy4zN2wxOS4wOS0uMDljLjMyIDAgNC40OS41MyAxIDMuMzggMCAuMDUtLjE2IDAtLjI0IDAtMy42MS4yNi0zLjk0IDEtNCA0LjYyLS4yNyA0My45My4wNyA0MC4yMy40MSA0Mi44Mi4xMS44NC4yNyAyLjIzIDUuMSAyLjE0IDIuNDkgMCAzLjg2IDMuMzcgMCAzLjQtMTAuMzcuMDgtMjAuNzQgMC0zMS4xMS4wNy0xMC42NyAwLTEzLjQ3LTYuMi0yNC4yMS0yMC44Mi0xLjYtMi4xOC04LjMxLTIuMzYtOC4yLS4zNy44OCAxNi40NyAwIDE3Ljc4IDQgMTcuNjcgNC43NS0uMSA0LjczIDMuNTcuODMgMy41NXptMjc1LTEwLjE1Yy0xLjIxIDcuMTMuMTcgMTAuMzgtNS4zIDEwLjM0LTYxLjU1LS40Mi00Ny44Mi0uMjItNTAuNzItLjMxYTE4LjQgMTguNCAwIDAgMS0zLjYzLS43M2MtMi41My0uNiAxLjQ4LTEuMjMtLjM4LTUuNi0xLjQzLTMuMzctMi43OC02Ljc4LTQuMTEtMTAuMTlhMS45NCAxLjk0IDAgMCAwLTItMS40NCAxMzggMTM4IDAgMCAwLTE0LjU4LjA3IDIuMjMgMi4yMyAwIDAgMC0xLjYyIDEuMDZjLTEuNTggMy42Mi0zLjA3IDcuMjktNC41MSAxMS0xLjI3IDMuMjMgNy44NiAxLjMyIDEyLjE5IDIuMTYgMyAuNTcgNC41MyAzLjcyLjY2IDMuNzNIMzIyLjljLTIuOTIgMC0zLjA5LTMuMTUtLjc0LTMuMjFhNi4zIDYuMyAwIDAgMCA1LjkyLTMuNDdjMS41LTMgMi44LTYgNC4xMS05LjA5IDE4LjE4LTQyLjE0IDE3LjA2LTQwLjE3IDE4LjQyLTQxLjYxYTEuODMgMS44MyAwIDAgMSAzIDBjMi45MyAzLjM0IDE4LjQgNDQuNzEgMjMuNjIgNTEuOTIgMiAyLjcgNS43NCAyIDYuMzYgMiAzLjYxLjEzIDQtMS4xMSA0LjEzLTQuMjkuMDktMS44Ny4wOCAxLjE3LjA3LTQxLjI0IDAtNC40Ni0yLjM2LTMuNzQtNS41NS00LjI3LS4yNiAwLTIuNTYtLjYzLS4wOC0zLjA2LjIxLS4yLS44OS0uMjQgMjEuNy0uMTUgMi4zMiAwIDUuMzIgMi43NS0xLjIxIDMuNDVhMi41NiAyLjU2IDAgMCAwLTIuNjYgMi44M2MtLjA3IDEuNjMtLjE5IDM4Ljg5LjI5IDQxLjIxYTMuMDYgMy4wNiAwIDAgMCAzLjIzIDIuNDNjMTMuMjUuNDMgMTQuOTIuNDQgMTYtMy40MSAxLjY3LTUuNzggNC4xMy0yLjUyIDMuNzMtLjE5em0tMTA0LjcyIDY0LjM3Yy00LjI0IDAtNC40Mi0zLjM5LS42MS0zLjQxIDM1LjkxLS4xNiAyOC4xMS4zOCAzNy4xOS0uNjUgMS42OC0uMTkgMi4zOC4yNCAyLjI1IDEuODktLjI2IDMuMzktLjY0IDYuNzgtMSAxMC4xNi0uMjUgMi4xNi0zLjIgMi42MS0zLjQtLjE1LS4zOC01LjMxLTIuMTUtNC40NS0xNS42My01LjA4LTEuNTgtLjA3LTEuNjQgMC0xLjY0IDEuNTJWMzA0YzAgMS42NSAwIDEuNiAxLjYyIDEuNDcgMy4xMi0uMjUgMTAuMzEuMzQgMTUuNjktMS41Mi40Ny0uMTYgMy4zLTEuNzkgMy4wNyAxLjc2IDAgLjIxLS43NiAxMC4zNS0xLjE4IDExLjM5LS41MyAxLjI5LTEuODggMS41MS0yLjU4LjMyLTEuMTctMiAwLTUuMDgtMy43MS01LjMtMTUuNDItLjktMTIuOTEtMi41NS0xMi45MSA2IDAgMTIuMjUtLjc2IDE2LjExIDMuODkgMTYuMjQgMTYuNjQuNDggMTQuNCAwIDE2LjQzLTUuNzEuODQtMi4zNyAzLjUtMS43NyAzLjE4LjU4LS40NCAzLjIxLS44NSA2LjQzLTEuMjMgOS42NCAwIC4zNi0uMTYgMi40LTQuNjYgMi4zOS0zNy4xNi0uMDgtMzQuNTQtLjE5LTM1LjIxLS4zMS0yLjcyLS41MS0yLjItMyAuMjItMy40NSAxLjEtLjE5IDQgLjU0IDQuMTYtMi41NiAyLjQ0LTU2LjIyLS4wNy01MS4zNC0zLjkxLTUxLjMzem0tLjQxLTEwOS41MmMyLjQ2LjYxIDMuMTMgMS43NiAyLjk1IDQuNjUtLjMzIDUuMy0uMzQgOS0uNTUgOS42OS0uNjYgMi4yMy0zLjE1IDIuMTItMy4zNC0uMjctLjM4LTQuODEtMy4wNS03LjgyLTcuNTctOS4xNS0yNi4yOC03LjczLTMyLjgxIDE1LjQ2LTI3LjE3IDMwLjIyIDUuODggMTUuNDEgMjIgMTUuOTIgMjguODYgMTMuNzggNS45Mi0xLjg1IDUuODgtNi41IDYuOTEtNy41OCAxLjIzLTEuMyAyLjI1LTEuODQgMy4xMiAxLjEgMCAuMS41NyAxMS44OS02IDEyLjc1LTEuNi4yMS0xOS4zOCAzLjY5LTMyLjY4LTMuMzktMjEtMTEuMTktMTYuNzQtMzUuNDctNi44OC00NS4zMyAxNC0xNC4wNiAzOS45MS03LjA2IDQyLjMyLTYuNDd6TTI4OS44IDI4MC4xNGMzLjI4IDAgMy42NiAzIC4xNiAzLjQzLTIuNjEuMzItNS0uNDItNSA1LjQ2IDAgMi0uMTkgMjkuMDUuNCA0MS40NS4xMSAyLjI5IDEuMTUgMy41MiAzLjQ0IDMuNjUgMjIgMS4yMSAxNC45NS0xLjY1IDE4Ljc5LTYuMzQgMS44My0yLjI0IDIuNzYuODQgMi43NiAxLjA4LjM1IDEzLjYyLTQgMTIuMzktNS4xOSAxMi40bC0zOC4xNi0uMTljLTEuOTMtLjIzLTIuMDYtMy0uNDItMy4zOCAyLS40OCA0Ljk0LjQgNS4xMy0yLjggMS0xNS44Ny41Ny00NC42NS4zNC00Ny44MS0uMjctMy43Ny0yLjgtMy4yNy01LjY4LTMuNzEtMi40Ny0uMzgtMi0zLjIyLjM0LTMuMjIgMS40NS0uMDIgMTcuOTctLjAzIDIzLjA5LS4wMnptLTMxLjYzLTU3Ljc5Yy4wNyA0LjA4IDIuODYgMy40NiA2IDMuNTggMi42MS4xIDIuNTMgMy40MS0uMDcgMy40My02LjQ4IDAtMTMuNyAwLTIxLjYxLS4wNi0zLjg0IDAtMy4zOC0zLjM1IDAtMy4zNyA0LjQ5IDAgMy4yNCAxLjYxIDMuNDEtNDUuNTQgMC01LjA4LTMuMjctMy41NC00LjcyLTQuMjMtMi41OC0xLjIzLTEuMzYtMy4wOS40MS0zLjE1IDEuMjkgMCAyMC4xOS0uNDEgMjEuMTcuMjFzMS44NyAxLjY1LS40MiAyLjg2Yy0xIC41Mi0zLjg2LS4yOC00LjE1IDIuNDcgMCAuMjEtLjgyIDEuNjMtLjA3IDQzLjh6bS0zNi45MSAyNzQuMjdhMi45MyAyLjkzIDAgMCAwIDMuMjYgMGMxNy05Ljc5IDE4Mi0xMDMuNTcgMTk3LjQyLTExMi41MS0uMTQtLjQzIDExLjI2LS4xOC0xODEuNTItLjI3LTEuMjIgMC0xLjU3LjM3LTEuNTMgMS41NiAwIC4xIDEuMjUgNDQuNTEgMS4yMiA1MC4zOGEyOC4zMyAyOC4zMyAwIDAgMS0xLjM2IDcuNzFjLS41NSAxLjgzLjM4LS41LTEzLjUgMzIuMjMtLjczIDEuNzItMSAyLjIxLTItLjA4LTQuMTktMTAuMzQtOC4yOC0yMC43Mi0xMi41Ny0zMWEyMy42IDIzLjYgMCAwIDEtMi0xMC43OWMuMTYtMi40Ni44LTE2LjEyIDEuNTEtNDggMC0xLjk1IDAtMi0yLTJoLTE4M2MyLjU4IDEuNjMgMTc4LjMyIDEwMi41NyAxOTYgMTEyLjc2em0tOTAuOS0xODguNzVjMCAyLjQuMzYgMi43OSAyLjc2IDMgMTEuNTQgMS4xNyAyMSAzLjc0IDI1LjY0LTcuMzIgNi0xNC40NiAyLjY2LTM0LjQxLTEyLjQ4LTM4Ljg0LTItLjU5LTE2LTIuNzYtMTUuOTQgMS41MS4wNSA4LjA0LjAxIDExLjYxLjAyIDQxLjY1em0xMDUuNzUtMTUuMDVjMCAyLjEzIDEuMDcgMzguNjggMS4wOSAzOS4xMy4zNCA5Ljk0LTI1LjU4IDUuNzctMjUuMjMtMi41OS4wOC0yIDEuMzctMzcuNDIgMS4xLTM5LjQzLTE0LjEgNy40NC0xNC40MiA0MC4yMSA2LjQ0IDQ4LjhhMTcuOSAxNy45IDAgMCAwIDIyLjM5LTcuMDdjNC45MS03Ljc2IDYuODQtMjkuNDctNS40My0zOWEyLjUzIDIuNTMgMCAwIDEtLjM2LjEyem0tMTIuMjgtMTk4Yy05LjgzIDAtOS43MyAxNC43NS0uMDcgMTQuODdzMTAuMS0xNC44OC4wNy0xNC45MXptLTgwLjE1IDEwMy44M2MwIDEuOC40MSAyLjQgMi4xNyAyLjU4IDEzLjYyIDEuMzkgMTIuNTEtMTEgMTIuMTYtMTMuMzYtMS42OS0xMS4yMi0xNC4zOC0xMC4yLTE0LjM1LTcuODEuMDUgNC41LS4wMyAxMy42OC4wMiAxOC41OXptMjEyLjMyIDYuNGwtNi4xLTE1Ljg0Yy0yLjE2IDUuNDgtNC4xNiAxMC41Ny02LjIzIDE1Ljg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDc3MzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJsMzQuOSAzOTUuOEwxOTIgNDgwbDE1Ny4xLTUyLjJMMzg0IDMySDB6bTMxMy4xIDgwbC00LjggNDcuM0wxOTMgMjA4LjZsLS4zLjFoMTExLjVsLTEyLjggMTQ2LjYtOTguMiAyOC43LTk4LjgtMjkuMi02LjQtNzMuOWg0OC45bDMuMiAzOC4zIDUyLjYgMTMuMyA1NC43LTE1LjQgMy43LTYxLjYtMTY2LjMtLjV2LS4xbC0uMi4xLTMuNi00Ni4zTDE5My4xIDE2Mmw2LjUtMi43SDc2LjdMNzAuOSAxMTJoMjQyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNzczMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDMybC02NCAzNjgtMjIzLjMgODBMMCA0MDBsMTkuNi05NC44aDgybC04IDQwLjZMMjEwIDM5MC4ybDEzNC4xLTQ0LjQgMTguOC05Ny4xSDI5LjVsMTYtODJoMzMzLjdsMTAuNS01Mi43SDU2LjNsMTYuMy04Mkg0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1dHRsZWZpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDMwNS41Yy0xNy41IDMxLjYtNTcuNCA1NC41LTk2IDU0LjUtNTYuNiAwLTEwNC00Ny40LTEwNC0xMDRzNDcuNC0xMDQgMTA0LTEwNGMzOC42IDAgNzguNSAyMi45IDk2IDU0LjUgMTMuNy01MC45IDQxLjctOTMuMyA4Ny0xMTcuOEMzODUuNyAzOS4xIDMyMC41IDggMjQ4IDggMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4YzcyLjUgMCAxMzcuNy0zMS4xIDE4My04MC43LTQ1LjMtMjQuNS03My4zLTY2LjktODctMTE3Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURBbmREQmV5b25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy44IDI0MS41YzEzLjggMCAyMS0xMC4xIDI0LjgtMTcuOS0xLTEuMS01LTQuMi03LjQtNi42LTIuNCA0LjMtOC4yIDEwLjctMTMuOSAxMC43LTEwLjIgMC0xNS40LTE0LjctMy4yLTI2LjYtLjUtLjItNC4zLTEuOC04IDIuNCAwLTMgMS01LjEgMi4xLTYuNi0zLjUgMS4zLTkuOCA1LjYtMTEuNCA3LjkuMi01LjggMS42LTcuNS42LTlsLS4yLS4ycy04LjUgNS42LTkuMyAxNC43YzAgMCAxLjEtMS42IDIuMS0xLjkuNi0uMyAxLjMgMCAuNiAxLjktLjIuNi01LjggMTUuNyA1LjEgMjYtLjYtMS42LTEuOS03LjYgMi40LTEuOS0uMy4xIDUuOCA3LjEgMTUuNyA3LjF6bTUyLjQtMjEuMWMwLTQtNC45LTQuNC01LjYtNC41IDIgMy45LjkgNy41LjIgOSAyLjUtLjQgNS40LTEuNiA1LjQtNC41em0xMC4zIDUuMmMwLTYuNC02LjItMTEuNC0xMy41LTEwLjcgOCAxLjMgNS42IDEzLjgtNSAxMS40IDMuNy0yLjYgMy4yLTkuOS0xLjMtMTIuNSAxLjQgNC4yLTMgOC4yLTcuNCA0LjYtMi40LTEuOS04LTYuNi0xMC42LTguNi0yLjQtMi4xLTUuNS0xLTYuNi0xLjgtMS4zLTEuMS0uNS0zLjgtMi4yLTUtMS42LS44LTMtLjMtNC44LTEtMS42LS42LTIuNy0xLjktMi42LTMuNS0yLjUgNC40IDMuNCA2LjMgNC41IDguNSAxIDEuOS0uOCA0LjggNCA4LjUgMTQuOCAxMS42IDkuMSA4IDEwLjQgMTguMS42IDQuMyA0LjIgNi43IDYuNCA3LjQtMi4xLTEuOS0yLjktNi40IDAtOS4zIDAgMTMuOSAxOS4yIDEzLjMgMjMuMSA2LjQtMi40IDEuMS03LS4yLTktMS45IDcuNyAxIDE0LjItNC4xIDE0LjYtMTAuNnptLTM5LjQtMTguNGMyIC44IDEuNi43IDYuNCA0LjUgMTAuMi0yNC41IDIxLjctMTUuNyAyMi0xNS41IDIuMi0xLjkgOS44LTMuOCAxMy44LTIuNy0yLjQtMi43LTcuNS02LjItMTMuMy02LjItNC43IDAtNy40IDIuMi04IDEuMy0uOC0xLjQgMy4yLTMuNCAzLjItMy40LTUuNC4yLTkuNiA2LjctMTEuMiA1LjktMS4xLS41IDEuNC0zLjcgMS40LTMuNy01LjEgMi45LTkuMyA5LjEtMTAuMiAxMyA0LjYtNS44IDEzLjgtOS44IDE5LjctOS0xMC41LjUtMTkuNSA5LjctMjMuOCAxNS44em0yNDIuNSA1MS45Yy0yMC43IDAtNDAgMS4zLTUwLjMgMi4xbDcuNCA4LjJ2NzcuMmwtNy40IDguMmMxMC40LjggMzAuOSAyLjEgNTEuNiAyLjEgNDIuMSAwIDU5LjEtMjAuNyA1OS4xLTQ4LjkgMC0yOS4zLTIzLjItNDguOS02MC40LTQ4Ljl6bS0xNS4xIDc1LjZ2LTUzLjNjMzAuMS0zLjMgNDYuOCAzLjggNDYuOCAyNi4zIDAgMjUuNi0yMS40IDMwLjItNDYuOCAyN3pNMzAxLjYgMTgxYy0xLTMuNC0uMi02LjkgMS4xLTkuNCAxIDMgMi42IDYuNCA3LjUgOS0uNS0yLjQtLjItNS42LjUtOC0xLjQtNS40IDIuMS05LjkgNi40LTkuOSA2LjkgMCA4LjUgOC44IDQuNyAxNC40IDIuMSAzLjIgNS41IDUuNiA3LjcgNy44IDMuMi0zLjcgNS41LTkuNSA1LjUtMTMuOCAwLTguMi01LjUtMTUuOS0xNi43LTE2LjUtMjAtLjktMjAuMiAxNi42LTIwIDE4LjkuNSA1LjIgMy40IDcuOCAzLjMgNy41em0tLjQgNmMtLjUgMS44LTcgMy43LTEwLjIgNi45IDQuOC0xIDctLjIgNy44IDEuOC41IDEuNC0uMiAzLjQtLjUgNS42IDEuNi0xLjggNy01LjUgMTEtNi4yLTEtLjMtMy40LS44LTQuMy0uOCAyLjktMy40IDkuMy00LjUgMTIuOC0zLjctMi4yLS4yLTYuNyAxLjEtOC41IDIuNiAxLjYuMyAzIC42IDQuMyAxLjEtMi4xLjgtNC44IDMuNC01LjggNi4xIDctNSAxMy4xIDUuMiA3IDguMi44LjIgMi43IDAgMy41LS41LS4zIDEuMS0xLjkgMy0zIDMuNCAyLjkgMCA3LTEuOSA4LjItNC42IDAgMC0xLjguNi0yLjYtLjJzLjMtNC4zLjMtNC4zYy0yLjMgMi45LTMuNC0xLjMtMS4zLTQuMi0xLS4zLTMuNS0uNi00LjYtLjUgMy4yLTEuMSAxMC40LTEuOCAxMS4yLS4zLjYgMS4xLTEgMy40LTEgMy40IDQtLjUgOC4zIDEuMSA2LjcgNS4xIDIuOS0xLjQgNS41LTUuOSA0LjgtMTAuNC0uMyAxLTEuNiAyLjQtMi45IDIuNy4yLTEuNC0xLTIuMi0xLjktMi42IDEuNy05LjYtMTQuNi0xNC4yLTE0LjEtMjMuOS0xIDEuMy0xLjggNS0uOCA3LjEgMi43IDMuMiA4LjcgNi43IDEwLjEgMTIuMi0yLjYtNi40LTE1LjEtMTEuNC0xNC42LTIwLjItMS42IDEuNi0yLjYgNy44LTEuMyAxMSAyLjQgMS40IDQuNSAzLjggNC44IDYuMS0yLjItNS4xLTExLjQtNi4xLTEzLjktMTIuMi0uNiAyLjItLjMgNSAxIDYuNyAwIDAtMi4yLS44LTctLjYgMS43LjYgNS4xIDMuNSA0LjggNS4yem0yNS45IDcuNGMtMi43IDAtMy41LTIuMS00LjItNC4zIDMuMyAxLjMgNC4yIDQuMyA0LjIgNC4zem0zOC45IDMuN2wtMS0uNmMtMS4xLTEtMi45LTEuNC00LjctMS40LTIuOSAwLTUuOCAxLjMtNy41IDMuNC0uOC44LTEuNCAxLjgtMi4xIDIuNnYxNS43YzMuNSAyLjYgNy4xLTIuOSAzLTcuMiAxLjUuMyA0LjYgMi43IDUuMSAzLjIgMCAwIDIuNi0uNSA1LS41IDIuMSAwIDMuOS4zIDUuNiAxLjFWMTk2Yy0xLjEuNS0yLjIgMS0yLjcgMS40ek03OS45IDMwNS45YzE3LjItNC42IDE2LjItMTggMTYuMi0xOS45IDAtMjAuNi0yNC4xLTI1LTM3LTI1SDNsOC4zIDguNnYyOS41SDBsMTEuNCAxNC42VjM0NkwzIDM1NC42YzYxLjcgMCA3My44IDEuNSA4Ni40LTUuOSA2LjctNCA5LjktOS44IDkuOS0xNy42IDAtNS4xIDIuNi0xOC44LTE5LjQtMjUuMnptLTQxLjMtMjcuNWMyMCAwIDI5LjYtLjggMjkuNiA5LjF2M2MwIDEyLjEtMTkgOC44LTI5LjYgOC44em0wIDU5LjJWMzE1YzEyLjIgMCAzMi43LTIuMyAzMi43IDguOHY0LjVoLjJjMCAxMS4yLTEyLjUgOS4zLTMyLjkgOS4zem0xMDEuMi0xOS4zbDIzLjEuMnYtLjJsMTQuMS0yMS4yaC0zNy4ydi0xNC45aDUyLjRsLTE0LjEtMjF2LS4ybC03My41LjIgNy40IDguMnY3Ny4xbC03LjQgOC4yaDgxLjJsMTQuMS0yMS4yLTYwLjEuMnptMjE0LjctNjAuMWMtNzMuOSAwLTc3LjUgOTkuMy0uMyA5OS4zIDc3LjkgMCA3NC4xLTk5LjMuMy05OS4zem0tLjMgNzcuNWMtMzcuNCAwLTM2LjktNTUuMy4yLTU1LjMgMzYuOC4xIDM4LjggNTUuMy0uMiA1NS4zem0tOTEuMy04LjNsNDQuMS02Ni4yaC00MS43bDYuMSA3LjItMjAuNSAzNy4yaC0uM2wtMjEtMzcuMiA2LjQtNy4yaC00NC45bDQ0LjEgNjUuOC4yIDE5LjQtNy43IDguMmg0Mi42bC03LjItOC4yem0tMjguNC0xNTEuM2MxLjYgMS4zIDIuOSAyLjQgMi45IDYuNnYzOC44YzAgNC4yLS44IDUuMy0yLjcgNi40LS4xLjEtNy41IDQuNS03LjkgNC42aDM1LjFjMTAgMCAxNy40LTEuNSAyNi04LjYtLjYtNSAuMi05LjUuOC0xMiAwLS4yLTEuOCAxLjQtMi43IDMuNSAwLTUuNyAxLjYtMTUuNCA5LjYtMjAuNS0uMSAwLTMuNy0uOC05IDEuMSAyLTMuMSAxMC03LjkgMTAuNC03LjktOC4yLTI2LTM4LTIyLjktMzIuMi0yMi45LTMwLjkgMC0zMi42LjMtMzkuOS00IC4xLjguNSA4LjIgOS42IDE0Ljl6bTIxLjUgNS41YzQuNiAwIDIzLjEtMy4zIDIzLjEgMTcuMyAwIDIwLjctMTguNCAxNy4zLTIzLjEgMTcuM3ptMjI4LjkgNzkuNmw3IDguM1YzMTJoLS4zYy01LjQtMTQuNC00Mi4zLTQxLjUtNDUuMi01MC45aC0zMS42bDcuNCA4LjV2NzYuOWwtNy4yIDguM2gzOWwtNy40LTguMnYtNDcuNGguM2MzLjcgMTAuNiA0NC41IDQyLjkgNDguNSA1NS42aDIxLjN2LTg1LjJsNy40LTguM3ptLTEwNi43LTk2LjFjLTMyLjIgMC0zMi44LjItMzkuOS00IC4xLjcuNSA4LjMgOS42IDE0LjkgMy4xIDIgMi45IDQuMyAyLjkgOS41IDEuOC0xLjEgMy44LTIuMiA2LjEtMy0xLjEgMS4xLTIuNyAyLjctMy41IDQuNSAxLTEuMSA3LjUtNS4xIDE0LjYtMy41LTEuNi4zLTQgMS4xLTYuMSAyLjkuMSAwIDIuMS0xLjEgNy41LS4zdi00LjNjNC43IDAgMjMuMS0zLjQgMjMuMSAxNy4zIDAgMjAuNS0xOC41IDE3LjMtMTkuNyAxNy4zIDUuNyA0LjQgNS44IDEyIDIuMiAxNi4zaC4zYzMzLjQgMCAzNi43LTI3LjMgMzYuNy0zNCAwLTMuOC0xLjEtMzItMzMuOC0zMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEQW5kRCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Mi41IDk4LjljLS42LTE3LjIgMi0zMy44IDEyLjctNDguMi4zIDcuNCAxLjIgMTQuNSA0LjIgMjEuNiA1LjktMjcuNSAxOS43LTQ5LjMgNDIuMy02NS41LTEuOSA1LjktMy41IDExLjgtMyAxNy43IDguNy03LjQgMTguOC0xNy44IDQ0LjQtMjIuNyAxNC43LTIuOCAyOS43LTIgNDIuMSAxIDM4LjUgOS4zIDYxIDM0LjMgNjkuNyA3Mi4zIDUuMyAyMy4xLjcgNDUtOC4zIDY2LjQtNS4yIDEyLjQtMTIgMjQuNC0yMC43IDM1LjEtMi0xLjktMy45LTMuOC01LjgtNS42LTQyLjgtNDAuOC0yNi44LTI1LjItMzcuNC0zNy40LTEuMS0xLjItMS0yLjItLjEtMy42IDguMy0xMy41IDExLjgtMjguMiAxMC00NC0xLjEtOS44LTQuMy0xOC45LTExLjMtMjYuMi0xNC41LTE1LjMtMzkuMi0xNS01My41LjYtMTEuNCAxMi41LTE0LjEgMjcuNC0xMC45IDQzLjYuMiAxLjMuNCAyLjcgMCAzLjktMy40IDEzLjctNC42IDI3LjYtMi41IDQxLjYuMS41LjEgMS4xLjEgMS42IDAgLjMtLjEuNS0uMiAxLjEtMjEuOC0xMS0zNi0yOC4zLTQzLjItNTIuMi04LjMgMTcuOC0xMS4xIDM1LjUtNi42IDU0LjEtMTUuNi0xNS4yLTIxLjMtMzQuMy0yMi01NS4yem00NjkuNiAxMjMuMmMtMTEuNi0xMS42LTI1LTIwLjQtNDAuMS0yNi42LTEyLjgtNS4yLTI2LTcuOS0zOS45LTcuMS0xMCAuNi0xOS42IDMuMS0yOSA2LjQtMi41LjktNS4xIDEuNi03LjcgMi4yLTQuOSAxLjItNy4zLTMuMS00LjctNi44IDMuMi00LjYgMy40LTQuMiAxNS0xMiAuNi0uNCAxLjItLjggMi4yLTEuNWgtMi41Yy0uNiAwLTEuMi4yLTEuOS4zLTE5LjMgMy4zLTMwLjcgMTUuNS00OC45IDI5LjYtMTAuNCA4LjEtMTMuOCAzLjgtMTItLjUgMS40LTMuNSAzLjMtNi43IDUuMS0xMCAxLTEuOCAyLjMtMy40IDMuNS01LjEtLjItLjItLjUtLjMtLjctLjUtMjcgMTguMy00Ni43IDQyLjQtNTcuNyA3My4zLjMuMy43LjYgMSAuOS4zLS42LjUtMS4yLjktMS43IDEwLjQtMTIuMSAyMi44LTIxLjggMzYuNi0yOS44IDE4LjItMTAuNiAzNy41LTE4LjMgNTguNy0yMC4yIDQuMy0uNCA4LjctLjEgMTMuMS0uMS0xLjguNy0zLjUuOS01LjMgMS4xLTE4LjUgMi40LTM1LjUgOS01MS41IDE4LjUtMzAuMiAxNy45LTU0LjUgNDIuMi03NS4xIDcwLjQtLjMuNC0uNC45LS43IDEuMyAxNC41IDUuMyAyNCAxNy4zIDM2LjEgMjUuNi4yLS4xLjMtLjIuNC0uNGwxLjItMi43YzEyLjItMjYuOSAyNy01Mi4zIDQ2LjctNzQuNSAxNi43LTE4LjggMzgtMjUuMyA2Mi41LTIwIDUuOSAxLjMgMTEuNCA0LjQgMTcuMiA2LjggMi4zLTEuNCA1LjEtMy4yIDgtNC43IDguNC00LjMgMTcuNC03IDI2LjctOSAxNC43LTMuMSAyOS41LTQuOSA0NC41LTEuM3YtLjVjLS41LS40LTEuMi0uOC0xLjctMS40ek0zMTYuNyAzOTcuNmMtMzkuNC0zMy0yMi44LTE5LjUtNDIuNy0zNS42LS44LjkgMC0uMi0xLjkgMy0xMS4yIDE5LjEtMjUuNSAzNS4zLTQ0IDQ3LjYtMTAuMyA2LjgtMjEuNSAxMS44LTM0LjEgMTEuOC0yMS42IDAtMzguMi05LjUtNDkuNC0yNy44LTEyLTE5LjUtMTMuMy00MC43LTguMi02Mi42IDcuOC0zMy44IDMwLjEtNTUuMiAzOC42LTY0LjMtMTguNy02LjItMzMgMS43LTQ2LjQgMTMuOS44LTEzLjkgNC4zLTI2LjIgMTEuOC0zNy4zLTI0LjMgMTAuNi00NS45IDI1LTY0LjggNDMuOS0uMy01LjggNS40LTQzLjcgNS42LTQ0LjcuMy0yLjctLjYtNS4zLTMtNy40LTI0LjIgMjQuNy00NC41IDUxLjgtNTYuMSA4NC42IDcuNC01LjkgMTQuOS0xMS40IDIzLjYtMTYuMi04LjMgMjIuMy0xOS42IDUyLjgtNy44IDEwMS4xIDQuNiAxOSAxMS45IDM2LjggMjQuMSA1Mi4zIDIuOSAzLjcgNi4zIDYuOSA5LjUgMTAuMy4yLS4yLjQtLjMuNi0uNS0xLjQtNy0yLjItMTQuMS0xLjUtMjEuOSAyLjIgMy4yIDMuOSA2IDUuOSA4LjYgMTIuNiAxNiAyOC43IDI3LjQgNDcuMiAzNS42IDI1IDExLjMgNTEuMSAxMy4zIDc3LjkgOC42IDU0LjktOS43IDkwLjctNDguNiAxMTYtOTguOCAxLTEuOC42LTIuOS0uOS00LjJ6bTE3Mi00Ni40Yy05LjUtMy4xLTIyLjItNC4yLTI4LjctMi45IDkuOSA0IDE0LjEgNi42IDE4LjggMTIgMTIuNiAxNC40IDEwLjQgMzQuNy01LjQgNDUuNi0xMS43IDguMS0yNC45IDEwLjUtMzguOSA5LjEtMS4yLS4xLTIuMy0uNC0zLS42IDIuOC0zLjcgNi03IDguMS0xMC44IDkuNC0xNi44IDUuNC00Mi4xLTguNy01Ni4xLTIuMS0yLjEtNC42LTMuOS03LTUuOS0uMyAxLjMtLjEgMi4xLjEgMi44IDQuMiAxNi42LTguMSAzMi40LTI0LjggMzEuOC03LjYtLjMtMTMuOS0zLjgtMTkuNi04LjUtMTkuNS0xNi4xLTM5LjEtMzIuMS01OC41LTQ4LjMtNS45LTQuOS0xMi41LTguMS0yMC4xLTguNy00LjYtLjQtOS4zLS42LTEzLjktLjktNS45LS40LTguOC0yLjgtMTAuNC04LjQtLjktMy40LTEuNS02LjgtMi4yLTEwLjItMS41LTguMS02LjItMTMtMTQuMy0xNC4yLTQuNC0uNy04LjktMS0xMy4zLTEuNS0xMy0xLjQtMTkuOC03LjQtMjIuNi0yMC4zLTUgMTEtMS42IDIyLjQgNy4zIDI5LjkgNC41IDMuOCA5LjMgNy4zIDEzLjggMTEuMiA0LjYgMy44IDcuNCA4LjcgNy45IDE0LjguNCA0LjcuOCA5LjUgMS44IDE0LjEgMi4yIDEwLjYgOC45IDE4LjQgMTcgMjUuMSAxNi41IDEzLjcgMzMgMjcuMyA0OS41IDQxLjEgMTcuOSAxNSAxMy45IDMyLjggMTMgNTYtLjkgMjIuOSAxMi4yIDQyLjkgMzMuNSA1MS4yIDEgLjQgMiAuNiAzLjYgMS4xLTE1LjctMTguMi0xMC4xLTQ0LjEuNy01Mi4zLjMgMi4yLjQgNC4zLjkgNi40IDkuNCA0NC4xIDQ1LjQgNjQuMiA4NSA1Ni45IDE2LTIuOSAzMC42LTguOSA0Mi45LTE5LjggMi0xLjggMy43LTQuMSA1LjktNi41LTE5LjMgNC42LTM1LjguMS01MC45LTEwLjYuNy0uMyAxLjMtLjMgMS45LS4zIDIxLjMgMS44IDQwLjYtMy40IDU3LTE3LjQgMTkuNS0xNi42IDI2LjYtNDIuOSAxNy40LTY2LTguMy0yMC4xLTIzLjYtMzIuMy00My44LTM4Ljl6TTk5LjQgMTc5LjNjLTUuMy05LjItMTMuMi0xNS42LTIyLjEtMjEuMyAxMy43LS41IDI2LjYuMiAzOS42IDMuNy03LTEyLjItOC41LTI0LjctNS0zOC43IDUuMyAxMS45IDEzLjcgMjAuMSAyMy42IDI2LjggMTkuNyAxMy4yIDM1LjcgMTkuNiA0Ni43IDMwLjIgMy40IDMuMyA2LjMgNy4xIDkuNiAxMC45LS44LTIuMS0xLjQtNC4xLTIuMi02LTUtMTAuNi0xMy0xOC42LTIyLjYtMjUtMS44LTEuMi0yLjgtMi41LTMuNC00LjUtMy4zLTEyLjUtMy0yNS4xLS43LTM3LjYgMS01LjUgMi44LTEwLjkgNC41LTE2LjMuOC0yLjQgMi4zLTQuNiA0LTYuNi42IDYuOSAwIDI1LjUgMTkuNiA0NiAxMC44IDExLjMgMjIuNCAyMS45IDMzLjkgMzIuNyA5IDguNSAxOC4zIDE2LjcgMjUuNSAyNi44IDEuMSAxLjYgMi4yIDMuMyAzLjggNC43LTUtMTMtMTQuMi0yNC4xLTI0LjItMzMuOC05LjYtOS4zLTE5LjQtMTguNC0yOS4yLTI3LjQtMy4zLTMtNC42LTYuNy01LjEtMTAuOS0xLjItMTAuNCAwLTIwLjYgNC4zLTMwLjIuNS0xIDEuMS0yIDEuOS0zLjMuNSA0LjIuNiA3LjkgMS40IDExLjYgNC44IDIzLjEgMjAuNCAzNi4zIDQ5LjMgNjMuNSAxMCA5LjQgMTkuMyAxOS4yIDI1LjYgMzEuNiA0LjggOS4zIDcuMyAxOSA1LjcgMjkuNi0uMS42LjUgMS43IDEuMSAyIDYuMiAyLjYgMTAgNi45IDkuNyAxNC4zIDcuNy0yLjYgMTIuNS04IDE2LjQtMTQuNSA0LjIgMjAuMi05LjEgNTAuMy0yNy4yIDU4LjcuNC00LjUgNS0yMy40LTE2LjUtMjcuNy02LjgtMS4zLTEyLjgtMS4zLTIyLjktMi4xIDQuNy05IDEwLjQtMjAuNi41LTIyLjQtMjQuOS00LjYtNTIuOCAxLjktNTcuOCA0LjYgOC4yLjQgMTYuMyAxIDIzLjUgMy4zLTIgNi41LTQgMTIuNy01LjggMTguOS0xLjkgNi41IDIuMSAxNC42IDkuMyA5LjYgMS4yLS45IDIuMy0xLjkgMy4zLTIuNy0zLjEgMTcuOS0yLjkgMTUuOS0yLjggMTguMy4zIDEwLjIgOS41IDcuOCAxNS43IDcuMy0yLjUgMTEuOC0yOS41IDI3LjMtNDUuNCAyNS44IDctNC43IDEyLjctMTAuMyAxNS45LTE3LjktNi41LjgtMTIuOSAxLjYtMTkuMiAyLjRsLS4zLS45YzQuNy0zLjQgOC03LjggMTAuMi0xMy4xIDguNy0yMS4xLTMuNi0zOC0yNS0zOS45LTkuMS0uOC0xNy44LjgtMjUuOSA1LjUgNi4yLTE1LjYgMTcuMi0yNi42IDMyLjYtMzQuNS0xNS4yLTQuMy04LjktMi43LTI0LjYtNi4zIDE0LjYtOS4zIDMwLjItMTMuMiA0Ni41LTE0LjYtNS4yLTMuMi00OC4xLTMuNi03MC4yIDIwLjkgNy45IDEuNCAxNS41IDIuOCAyMy4yIDQuMi0yMy44IDctNDQgMTkuNy02Mi40IDM1LjYgMS4xLTQuOCAyLjctOS41IDMuMy0xNC4zLjYtNC41LjgtOS4yLjEtMTMuNi0xLjUtOS40LTguOS0xNS4xLTE5LjctMTYuMy03LjktLjktMTUuNi4xLTIzLjMgMS4zLS45LjEtMS43LjMtMi45IDAgMTUuOC0xNC44IDM2LTIxLjcgNTMuMS0zMy41IDYtNC41IDYuOC04LjIgMy0xNC45em0xMjguNCAyNi44YzMuMyAxNiAxMi42IDI1LjUgMjMuOCAyNC4zLTQuNi0xMS4zLTEyLjEtMTkuNS0yMy44LTI0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhaWx5bW90aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC45MywyNjdhNDguNCw0OC40LDAsMCwwLTI0LjM2LTYuMjFxLTE5LjgzLDAtMzMuNDQsMTMuMjd0LTEzLjYxLDMzLjQycTAsMjEuMTYsMTMuMjgsMzQuNnQzMy40MywxMy40NHEyMC41LDAsMzQuMTEtMTMuNzhUMzIyLDMwNy40N0E0Ny4xMyw0Ny4xMywwLDAsMCwzMTUuOSwyODQsNDQuMTMsNDQuMTMsMCwwLDAsMjk4LjkzLDI2N1pNMCwzMlY0ODBINDQ4VjMyWk0zNzQuNzEsNDA1LjI2aC01My4xVjM4MS4zN2gtLjY3cS0xNS43OSwyNi4yLTU1Ljc4LDI2LjItMjcuNTYsMC00OC44OS0xMy4xYTg4LjI5LDg4LjI5LDAsMCwxLTMyLjk0LTM1Ljc3cS0xMS42LTIyLjY4LTExLjU5LTUwLjg5LDAtMjcuNTYsMTEuNzYtNTAuMjJhODkuOSw4OS45LDAsMCwxLDMyLjkzLTM1Ljc4cTIxLjE4LTEzLjA5LDQ3LjcyLTEzLjFhODAuODcsODAuODcsMCwwLDEsMjkuNzQsNS4yMXExMy4yOCw1LjIxLDI1LDE3VjE1M2w1NS43OS0xMi4wOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGFzaGN1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI2LjYgMTA0SDExMC40Yy01MS4xIDAtOTEuMiA0My4zLTkxLjIgOTMuNVY0MjdjMCA1MC41IDQwLjEgODUgOTEuMiA4NWgyMjcuMmM1MS4xIDAgOTEuMi0zNC41IDkxLjItODVWMEwzMjYuNiAxMDR6TTE1My45IDQxNi41Yy0xNy43IDAtMzIuNC0xNS4xLTMyLjQtMzIuOFYyNDAuOGMwLTE3LjcgMTQuNy0zMi41IDMyLjQtMzIuNWgxNDAuN2MxNy43IDAgMzIgMTQuOCAzMiAzMi41djEyMy41bDUxLjEgNTIuM0gxNTMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVlemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1MS40NiwyNDQuNzFINTc2VjE3Mkg0NTEuNDZabTAtMTczLjg5djcyLjY3SDU3NlY3MC44MlptMCwyNzUuMDZINTc2VjI3My4ySDQ1MS40NlpNMCw0NDcuMDlIMTI0LjU0VjM3NC40MkgwWm0xNTAuNDcsMEgyNzVWMzc0LjQySDE1MC40N1ptMTUwLjUyLDBINDI1LjUzVjM3NC40MkgzMDFabTE1MC40NywwSDU3NlYzNzQuNDJINDUxLjQ2Wk0zMDEsMzQ1Ljg4SDQyNS41M1YyNzMuMkgzMDFabS0xNTAuNTIsMEgyNzVWMjczLjJIMTUwLjQ3Wm0wLTEwMS4xN0gyNzVWMTcySDE1MC40N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVsaWNpb3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni41IDY4Yy0uNC0xLjUtLjktMy0xLjQtNC41LS45LTIuNS0yLTQuOC0zLjMtNy4xLTEuNC0yLjQtMy00LjgtNC43LTYuOS0yLjEtMi41LTQuNC00LjgtNi45LTYuOC0xLjEtLjktMi4yLTEuNy0zLjMtMi41LTEuMy0uOS0yLjYtMS43LTQtMi40LTEuOC0xLTMuNi0xLjgtNS41LTIuNS0xLjctLjctMy41LTEuMy01LjQtMS43LTMuOC0xLTcuOS0xLjUtMTItMS41SDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgNC4xLjUgOC4yIDEuNSAxMiAyIDcuNyA1LjggMTQuNiAxMSAyMC4zIDEgMS4xIDIuMSAyLjIgMy4zIDMuMyA1LjcgNS4yIDEyLjYgOSAyMC4zIDExIDMuOCAxIDcuOSAxLjUgMTIgMS41aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMtLjEtNC4xLS42LTguMi0xLjYtMTJ6TTQxNiA0MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIyNFYyNTZIMzJWODBjMC04LjggNy4yLTE2IDE2LTE2aDE3NnYxOTJoMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXBsb3lkb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgyLjIgMTM2aDUxLjd2MjM5LjZoLTUxLjd2LTIwLjdjLTE5LjggMjQuOC01Mi44IDI0LjEtNzMuOCAxNC43LTI2LjItMTEuNy00NC4zLTM4LjEtNDQuMy03MS44IDAtMjkuOCAxNC44LTU3LjkgNDMuMy03MC44IDIwLjItOS4xIDUyLjctMTAuNiA3NC44IDEyLjlWMTM2em0tNjQuNyAxNjEuOGMwIDE4LjIgMTMuNiAzMy41IDMzLjIgMzMuNSAxOS44IDAgMzMuMi0xNi40IDMzLjItMzIuOSAwLTE3LjEtMTMuNy0zMy4yLTMzLjItMzMuMi0xOS42IDAtMzMuMiAxNi40LTMzLjIgMzIuNnpNMTg4LjUgMTM2aDUxLjd2MjM5LjZoLTUxLjd2LTIwLjdjLTE5LjggMjQuOC01Mi44IDI0LjEtNzMuOCAxNC43LTI2LjItMTEuNy00NC4zLTM4LjEtNDQuMy03MS44IDAtMjkuOCAxNC44LTU3LjkgNDMuMy03MC44IDIwLjItOS4xIDUyLjctMTAuNiA3NC44IDEyLjlWMTM2em0tNjQuNyAxNjEuOGMwIDE4LjIgMTMuNiAzMy41IDMzLjIgMzMuNSAxOS44IDAgMzMuMi0xNi40IDMzLjItMzIuOSAwLTE3LjEtMTMuNy0zMy4yLTMzLjItMzMuMi0xOS43IDAtMzMuMiAxNi40LTMzLjIgMzIuNnpNNDQ4IDk2YzE3LjUgMCAzMiAxNC40IDMyIDMydjI1NmMwIDE3LjUtMTQuNCAzMi0zMiAzMkg2NGMtMTcuNSAwLTMyLTE0LjQtMzItMzJWMTI4YzAtMTcuNSAxNC40LTMyIDMyLTMyaDM4NG0wLTMySDY0QzI4LjggNjQgMCA5Mi44IDAgMTI4djI1NmMwIDM1LjIgMjguOCA2NCA2NCA2NGgzODRjMzUuMiAwIDY0LTI4LjggNjQtNjRWMTI4YzAtMzUuMi0yOC44LTY0LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXNrcHJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNS45IDUxMmwzMS4xLTM4LjRjMTIuMy0uMiAyNS42LTEuNCAzNi41LTYuNiAzOC45LTE4LjYgMzguNC02MS45IDM4LjMtNjMuOC0uMS01LS44LTQuNC0yOC45LTM3LjRIMzYyYy0uMiA1MC4xLTcuMyA2OC41LTEwLjIgNzUuNy05LjQgMjMuNy00My45IDYyLjgtOTUuMiA2OS40LTguNyAxLjEtMzIuOCAxLjItNTAuNyAxLjF6bTIwMC40LTE2Ny43YzM4LjYgMCA1OC41LTEzLjYgNzMuNy0zMC45bC0xNzUuNS0uMy0xNy40IDMxLjMgMTE5LjItLjF6bS00My42LTIyMy45djE2OC4zaC03My41bC0zMi43IDU1LjVIMjUwYy01Mi4zIDAtNTguMS01Ni41LTU4LjMtNTguOS0xLjItMTMuMi0yMS4zLTExLjYtMjAuMSAxLjggMS40IDE1LjggOC44IDQwIDI2LjQgNTcuMWgtOTFjLTI1LjUgMC0xMTAuOC0yNi44LTEwNy0xMTRWMTYuOUMwIC45IDkuNy4zIDE1IC4xaDgyYy4yIDAgLjMuMS41LjEgNC4zLS40IDUwLjEtMi4xIDUwLjEgNDMuNyAwIDEzLjMgMjAuMiAxMy40IDIwLjIgMCAwLTE4LjItNS41LTMyLjgtMTUuOC00My43aDg0LjJjMTA4LjctLjQgMTI2LjUgNzkuNCAxMjYuNSAxMjAuMnptLTEzMi41IDU2bDY0IDI5LjNjMTMuMy00NS41LTQyLjItNzEuNy02NC0yOS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjEyIDIwOC4yOWMtMy44OC0yLjktNy43Ny00LjM1LTExLjY1LTQuMzVIOTEuMDN2MTA0LjQ3aDE3LjQ1YzMuODggMCA3Ljc3LTEuNDUgMTEuNjUtNC4zNSAzLjg4LTIuOSA1LjgyLTcuMjUgNS44Mi0xMy4wNnYtNjkuNjVjLS4wMS01LjgtMS45Ni0xMC4xNi01LjgzLTEzLjA2ek00MDQuMSAzMkg0My45QzE5LjcgMzIgLjA2IDUxLjU5IDAgNzUuOHYzNjAuNEMuMDYgNDYwLjQxIDE5LjcgNDgwIDQzLjkgNDgwaDM2MC4yYzI0LjIxIDAgNDMuODQtMTkuNTkgNDMuOS00My44Vjc1LjhjLS4wNi0yNC4yMS0xOS43LTQzLjgtNDMuOS00My44ek0xNTQuMiAyOTEuMTljMCAxOC44MS0xMS42MSA0Ny4zMS00OC4zNiA0Ny4yNWgtNDYuNFYxNzIuOThoNDcuMzhjMzUuNDQgMCA0Ny4zNiAyOC40NiA0Ny4zNyA0Ny4yOGwuMDEgNzAuOTN6bTEwMC42OC04OC42NkgyMDEuNnYzOC40MmgzMi41N3YyOS41N0gyMDEuNnYzOC40MWg1My4yOXYyOS41N2gtNjIuMThjLTExLjE2LjI5LTIwLjQ0LTguNTMtMjAuNzItMTkuNjlWMTkzLjdjLS4yNy0xMS4xNSA4LjU2LTIwLjQxIDE5LjcxLTIwLjY5aDYzLjE5bC0uMDEgMjkuNTJ6bTEwMy42NCAxMTUuMjljLTEzLjIgMzAuNzUtMzYuODUgMjQuNjMtNDcuNDQgMGwtMzguNTMtMTQ0LjhoMzIuNTdsMjkuNzEgMTEzLjcyIDI5LjU3LTExMy43MmgzMi41OGwtMzguNDYgMTQ0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURldmlhbnRhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDkzLjJsLTk4LjIgMTc5LjEgNy40IDkuNUgzMjB2MTI3LjdIMTU5LjFsLTEzLjUgOS4yLTQzLjcgODRjLS4zIDAtOC42IDguNi05LjIgOS4ySDB2LTkzLjJsOTMuMi0xNzkuNC03LjQtOS4ySDBWMTAyLjVoMTU2bDEzLjUtOS4yIDQzLjctODRjLjMgMCA4LjYtOC42IDkuMi05LjJIMzIwdjkzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURobCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzggMzAxLjJoNTguN0wzMTkgMjcxaC01OC43TDIzOCAzMDEuMnpNMCAyODIuOXY2LjRoODEuOGw0LjctNi40SDB6TTE3Mi45IDI3MWMtOC43IDAtNi0zLjYtNC42LTUuNSAyLjgtMy44IDcuNi0xMC40IDEwLjQtMTQuMSAyLjgtMy43IDIuOC01LjktMi44LTUuOWgtNTFsLTQxLjEgNTUuOGgxMDAuMWMzMy4xIDAgNTEuNS0yMi41IDU3LjItMzAuM2gtNjguMnptMzE3LjUtNi45bDM5LjMtNTMuNGgtNjIuMmwtMzkuMyA1My40aDYyLjJ6TTk1LjMgMjcxSDB2Ni40aDkwLjZsNC43LTYuNHptMTExLTI2LjZjLTIuOCAzLjgtNy41IDEwLjQtMTAuMyAxNC4yLTEuNCAyLTQuMSA1LjUgNC42IDUuNWg0NS42czcuMy0xMCAxMy41LTE4LjRjOC40LTExLjQuNy0zNS0yOS4yLTM1SDExMi42bC0yMC40IDI3LjhoMTExLjRjNS42IDAgNS41IDIuMiAyLjcgNS45ek0wIDMwMS4yaDczLjFsNC43LTYuNEgwdjYuNHptMzIzIDBoNTguN0w0MDQgMjcxaC01OC43Yy0uMSAwLTIyLjMgMzAuMi0yMi4zIDMwLjJ6bTIyMiAuMWg5NXYtNi40aC05MC4zbC00LjcgNi40em0yMi4zLTMwLjNsLTQuNyA2LjRINjQwVjI3MWgtNzIuN3ptLTEzLjUgMTguM0g2NDB2LTYuNGgtODEuNWwtNC43IDYuNHptLTE2NC4yLTc4LjZsLTIyLjUgMzAuNmgtMjYuMmwyMi41LTMwLjZoLTU4LjdsLTM5LjMgNTMuNEg0MDlsMzkuMy01My40aC01OC43em0zMy41IDYwLjNzLTQuMyA1LjktNi40IDguN2MtNy40IDEwLS45IDIxLjYgMjMuMiAyMS42aDk0LjNsMjIuMy0zMC4zSDQyMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFzcG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTEuNjQgMzU0LjU1Yy0xLjQgMC04OCAxMTkuOS04OC43IDExOS45Uzc2LjM0IDQxNCA3NiA0MTMuMjVzODYuNi0xMjUuNyA4Ni42LTEyNy40YzAtMi4yLTEyOS42LTQ0LTEzNy42LTQ3LjEtMS4zLS41IDMxLjQtMTAxLjggMzEuNy0xMDIuMS42LS43IDE0NC40IDQ3IDE0NS41IDQ3IC40IDAgLjktLjYgMS0xLjMuNC0yIDEtMTQ4LjYgMS43LTE0OS42LjgtMS4yIDEwNC41LS43IDEwNS4xLS4zIDEuNSAxIDMuNSAxNTYuMSA2LjEgMTU2LjEgMS40IDAgMTM4LjctNDcgMTM5LjMtNDYuMy44LjkgMzEuOSAxMDIuMiAzMS41IDEwMi42LS45LjktMTQwLjIgNDcuMS0xNDAuNiA0OC44LS4zIDEuNCA4Mi44IDEyMi4xIDgyLjUgMTIyLjlzLTg1LjUgNjMuNS04Ni4zIDYzLjVjLTEtLjItODktMTI1LjUtOTAuOS0xMjUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlnZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MS43IDE3Mi4zSDB2MTc0LjRoMTMyLjdWOTZoLTUxdjc2LjN6bTAgMTMzLjRINTAuOXYtOTIuM2gzMC44djkyLjN6bTI5Ny4yLTEzMy40djE3NC40aDgxLjh2MjguNWgtODEuOFY0MTZINTEyVjE3Mi4zSDM3OC45em04MS44IDEzMy40aC0zMC44di05Mi4zaDMwLjh2OTIuM3ptLTIzNS42IDQxaDgyLjF2MjguNWgtODIuMVY0MTZoMTMzLjNWMTcyLjNIMjI1LjF2MTc0LjR6bTUxLjItMTMzLjNoMzAuOHY5Mi4zaC0zMC44di05Mi4zek0xNTMuMyA5Nmg1MS4zdjUxaC01MS4zVjk2em0wIDc2LjNoNTEuM3YxNzQuNGgtNTEuM1YxNzIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlnaXRhbE9jZWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg3IDQ4MS44aDczLjd2LTczLjZIODd6TTI1LjQgMzQ2LjZ2NjEuNkg4N3YtNjEuNnptNDY2LjItMTY5LjdjLTIzLTc0LjItODIuNC0xMzMuMy0xNTYuNi0xNTYuNkMxNjQuOS0zMi44IDggOTMuNyA4IDI1NS45aDk1LjhjMC0xMDEuOCAxMDEtMTgwLjUgMjA4LjEtMTQxLjcgMzkuNyAxNC4zIDcxLjUgNDYuMSA4NS44IDg1LjcgMzkuMSAxMDctMzkuNyAyMDcuOC0xNDEuNCAyMDh2LjNoLS4zVjUwNGMxNjIuNiAwIDI4OC44LTE1Ni44IDIzNS42LTMyNy4xem0tMjM1LjMgMjMxdi05NS4zaC05NS42djk1LjZIMjU2di0uM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjQuNTMxLDY5LjgzNmExLjUsMS41LDAsMCwwLS43NjQtLjdBNDg1LjA2NSw0ODUuMDY1LDAsMCwwLDQwNC4wODEsMzIuMDNhMS44MTYsMS44MTYsMCwwLDAtMS45MjMuOTEsMzM3LjQ2MSwzMzcuNDYxLDAsMCwwLTE0LjksMzAuNiw0NDcuODQ4LDQ0Ny44NDgsMCwwLDAtMTM0LjQyNiwwLDMwOS41NDEsMzA5LjU0MSwwLDAsMC0xNS4xMzUtMzAuNiwxLjg5LDEuODksMCwwLDAtMS45MjQtLjkxQTQ4My42ODksNDgzLjY4OSwwLDAsMCwxMTYuMDg1LDY5LjEzN2ExLjcxMiwxLjcxMiwwLDAsMC0uNzg4LjY3NkMzOS4wNjgsMTgzLjY1MSwxOC4xODYsMjk0LjY5LDI4LjQzLDQwNC4zNTRhMi4wMTYsMi4wMTYsMCwwLDAsLjc2NSwxLjM3NUE0ODcuNjY2LDQ4Ny42NjYsMCwwLDAsMTc2LjAyLDQ3OS45MThhMS45LDEuOSwwLDAsMCwyLjA2My0uNjc2QTM0OC4yLDM0OC4yLDAsMCwwLDIwOC4xMiw0MzAuNGExLjg2LDEuODYsMCwwLDAtMS4wMTktMi41ODgsMzIxLjE3MywzMjEuMTczLDAsMCwxLTQ1Ljg2OC0yMS44NTMsMS44ODUsMS44ODUsMCwwLDEtLjE4NS0zLjEyNmMzLjA4Mi0yLjMwOSw2LjE2Ni00LjcxMSw5LjEwOS03LjEzN2ExLjgxOSwxLjgxOSwwLDAsMSwxLjktLjI1NmM5Ni4yMjksNDMuOTE3LDIwMC40MSw0My45MTcsMjk1LjUsMGExLjgxMiwxLjgxMiwwLDAsMSwxLjkyNC4yMzNjMi45NDQsMi40MjYsNi4wMjcsNC44NTEsOS4xMzIsNy4xNmExLjg4NCwxLjg4NCwwLDAsMS0uMTYyLDMuMTI2LDMwMS40MDcsMzAxLjQwNywwLDAsMS00NS44OSwyMS44MywxLjg3NSwxLjg3NSwwLDAsMC0xLDIuNjExLDM5MS4wNTUsMzkxLjA1NSwwLDAsMCwzMC4wMTQsNDguODE1LDEuODY0LDEuODY0LDAsMCwwLDIuMDYzLjdBNDg2LjA0OCw0ODYuMDQ4LDAsMCwwLDYxMC43LDQwNS43MjlhMS44ODIsMS44ODIsMCwwLDAsLjc2NS0xLjM1MkM2MjMuNzI5LDI3Ny41OTQsNTkwLjkzMywxNjcuNDY1LDUyNC41MzEsNjkuODM2Wk0yMjIuNDkxLDMzNy41OGMtMjguOTcyLDAtNTIuODQ0LTI2LjU4Ny01Mi44NDQtNTkuMjM5UzE5My4wNTYsMjE5LjEsMjIyLjQ5MSwyMTkuMWMyOS42NjUsMCw1My4zMDYsMjYuODIsNTIuODQzLDU5LjIzOUMyNzUuMzM0LDMxMC45OTMsMjUxLjkyNCwzMzcuNTgsMjIyLjQ5MSwzMzcuNThabTE5NS4zOCwwYy0yOC45NzEsMC01Mi44NDMtMjYuNTg3LTUyLjg0My01OS4yMzlTMzg4LjQzNywyMTkuMSw0MTcuODcxLDIxOS4xYzI5LjY2NywwLDUzLjMwNywyNi44Miw1Mi44NDQsNTkuMjM5QzQ3MC43MTUsMzEwLjk5Myw0NDcuNTM4LDMzNy41OCw0MTcuODcxLDMzNy41OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzY291cnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS45IDMyQzEwMy4zIDMyIDAgMTMwLjUgMCAyNTIuMSAwIDI1NiAuMSA0ODAgLjEgNDgwbDIyNS44LS4yYzEyMi43IDAgMjIyLjEtMTAyLjMgMjIyLjEtMjIzLjlDNDQ4IDEzNC4zIDM0OC42IDMyIDIyNS45IDMyek0yMjQgMzg0Yy0xOS40IDAtMzcuOS00LjMtNTQuNC0xMi4xTDg4LjUgMzkybDIyLjktNzVjLTkuOC0xOC4xLTE1LjQtMzguOS0xNS40LTYxIDAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4czEyOCA1Ny4zIDEyOCAxMjgtNTcuMyAxMjgtMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9jaHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Ny45IDE2MEgyNTZWMTkuNkwzOTcuOSAxNjB6TTMwNCAxOTJ2MTMwYzAgNjYuOC0zNi41IDEwMC4xLTExMy4zIDEwMC4xSDk2Vjg0LjhoOTQuN2MxMiAwIDIzLjEuOCAzMy4xIDIuNXYtODRDMjEyLjkgMS4xIDIwMS40IDAgMTg5LjIgMEgwdjUxMmgxODkuMkMzMjkuNyA1MTIgNDAwIDQ0Ny40IDQwMCAzMTguMVYxOTJoLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2NrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ5LjkgMjM2LjNoLTY2LjF2LTU5LjRoNjYuMXY1OS40em0wLTIwNC4zaC02Ni4xdjYwLjdoNjYuMVYzMnptNzguMiAxNDQuOEgzNjJ2NTkuNGg2Ni4xdi01OS40em0tMTU2LjMtNzIuMWgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6bTc4LjEgMGgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6bTI3Ni44IDEwMGMtMTQuNC05LjctNDcuNi0xMy4yLTczLjEtOC40LTMuMy0yNC0xNi43LTQ0LjktNDEuMS02My43bC0xNC05LjMtOS4zIDE0Yy0xOC40IDI3LjgtMjMuNCA3My42LTMuNyAxMDMuOC04LjcgNC43LTI1LjggMTEuMS00OC40IDEwLjdIMi40Yy04LjcgNTAuOCA1LjggMTE2LjggNDQgMTYyLjEgMzcuMSA0My45IDkyLjcgNjYuMiAxNjUuNCA2Ni4yIDE1Ny40IDAgMjczLjktNzIuNSAzMjguNC0yMDQuMiAyMS40LjQgNjcuNi4xIDkxLjMtNDUuMiAxLjUtMi41IDYuNi0xMy4yIDguNS0xNy4xbC0xMy4zLTguOXptLTUxMS4xLTI3LjloLTY2djU5LjRoNjYuMXYtNTkuNHptNzguMSAwaC02Ni4xdjU5LjRoNjYuMXYtNTkuNHptNzguMSAwaC02Ni4xdjU5LjRoNjYuMXYtNTkuNHptLTc4LjEtNzIuMWgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyYWZ0MkRpZ2l0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDM5OC4xbC0xNDQtODIuMnY2NC43aC05MS4zYzMwLjgtMzUgODEuOC05NS45IDExMS44LTE0OS4zIDM1LjItNjIuNiAxNi4xLTEyMy40LTEyLjgtMTUzLjMtNC40LTQuNi02Mi4yLTYyLjktMTY2LTQxLjItNTkuMSAxMi40LTg5LjQgNDMuNC0xMDQuMyA2Ny4zLTEzLjEgMjAuOS0xNyAzOS44LTE4LjIgNDcuNy01LjUgMzMgMTkuNCA2Ny4xIDU2LjcgNjcuMSAzMS43IDAgNTcuMy0yNS43IDU3LjMtNTcuNCAwLTI3LjEtMTkuNy01Mi4xLTQ4LTU2LjggMS44LTcuMyAxNy43LTIxLjEgMjYuMy0yNC43IDQxLjEtMTcuMyA3OCA1LjIgODMuMyAzMy41IDguMyA0NC4zLTM3LjEgOTAuNC02OS43IDEyNy42Qzg0LjUgMzI4LjEgMTguMyAzOTYuOCAwIDQxNS45bDMzNi0uMVY0ODB6TTM2OS45IDM3MWw0Ny4xIDI3LjItNDcuMSAyNy4yek0xMzQuMiAxNjEuNGMwIDEyLjQtMTAgMjIuNC0yMi40IDIyLjRzLTIyLjQtMTAtMjIuNC0yMi40IDEwLTIyLjQgMjIuNC0yMi40IDIyLjQgMTAuMSAyMi40IDIyLjR6TTgyLjUgMzgwLjVjMjUuNi0yNy40IDk3LjctMTA0LjcgMTUwLjgtMTY5LjkgMzUuMS00My4xIDQwLjMtODIuNCAyOC40LTExMi43LTcuNC0xOC44LTE3LjUtMzAuMi0yNC4zLTM1LjcgNDUuMyAyLjEgNjggMjMuNCA4Mi4yIDM4LjMgMCAwIDQyLjQgNDguMiA1LjggMTEzLjMtMzcgNjUuOS0xMTAuOSAxNDcuNS0xMjguNSAxNjYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJpYmJibGVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTAuMiAyMjguMmM4LjktNDIuNCAzNy40LTc3LjcgNzUuNy05NS43IDMuNiA0LjkgMjggMzguOCA1MC43IDc5LTY0IDE3LTEyMC4zIDE2LjgtMTI2LjQgMTYuN3pNMzE0LjYgMTU0Yy0zMy42LTI5LjgtNzkuMy00MS4xLTEyMi42LTMwLjYgMy44IDUuMSAyOC42IDM4LjkgNTEgODAgNDguNi0xOC4zIDY5LjEtNDUuOSA3MS42LTQ5LjR6TTE0MC4xIDM2NGM0MC41IDMxLjYgOTMuMyAzNi43IDEzNy4zIDE4LTItMTItMTAtNTMuOC0yOS4yLTEwMy42LTU1LjEgMTguOC05My44IDU2LjQtMTA4LjEgODUuNnptOTguOC0xMDguMmMtMy40LTcuOC03LjItMTUuNS0xMS4xLTIzLjJDMTU5LjYgMjUzIDkzLjQgMjUyLjIgODcuNCAyNTJjMCAxLjQtLjEgMi44LS4xIDQuMiAwIDM1LjEgMTMuMyA2Ny4xIDM1LjEgOTEuNCAyMi4yLTM3LjkgNjcuMS03Ny45IDExNi41LTkxLjh6bTM0LjkgMTYuM2MxNy45IDQ5LjEgMjUuMSA4OS4xIDI2LjUgOTcuNCAzMC43LTIwLjcgNTIuNS01My42IDU4LjYtOTEuNi00LjYtMS41LTQyLjMtMTIuNy04NS4xLTUuOHptLTIwLjMtNDguNGM0LjggOS44IDguMyAxNy44IDEyIDI2LjggNDUuNS01LjcgOTAuNyAzLjQgOTUuMiA0LjQtLjMtMzIuMy0xMS44LTYxLjktMzAuOS04NS4xLTIuOSAzLjktMjUuOCAzMy4yLTc2LjMgNTMuOXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNjQgMTc2YzAtODguMi03MS44LTE2MC0xNjAtMTYwUzY0IDE2Ny44IDY0IDI1NnM3MS44IDE2MCAxNjAgMTYwIDE2MC03MS44IDE2MC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyaWJiYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4yNTIgOCA4IDExOS4yNTIgOCAyNTZzMTExLjI1MiAyNDggMjQ4IDI0OCAyNDgtMTExLjI1MiAyNDgtMjQ4UzM5Mi43NDggOCAyNTYgOHptMTYzLjk3IDExNC4zNjZjMjkuNTAzIDM2LjA0NiA0Ny4zNjkgODEuOTU3IDQ3LjgzNSAxMzEuOTU1LTYuOTg0LTEuNDc3LTc3LjAxOC0xNS42ODItMTQ3LjUwMi02LjgxOC01Ljc1Mi0xNC4wNDEtMTEuMTgxLTI2LjM5My0xOC42MTctNDEuNjE0IDc4LjMyMS0zMS45NzcgMTEzLjgxOC03Ny40ODIgMTE4LjI4NC04My41MjN6TTM5Ni40MjEgOTcuODdjLTMuODEgNS40MjctMzUuNjk3IDQ4LjI4Ni0xMTEuMDIxIDc2LjUxOS0zNC43MTItNjMuNzc2LTczLjE4NS0xMTYuMTY4LTc5LjA0LTEyNC4wMDggNjcuMTc2LTE2LjE5MyAxMzcuOTY2IDEuMjcgMTkwLjA2MSA0Ny40ODl6bS0yMzAuNDgtMzMuMjVjNS41ODUgNy42NTkgNDMuNDM4IDYwLjExNiA3OC41MzcgMTIyLjUwOS05OS4wODcgMjYuMzEzLTE4Ni4zNiAyNS45MzQtMTk1LjgzNCAyNS44MDlDNjIuMzggMTQ3LjIwNSAxMDYuNjc4IDkyLjU3MyAxNjUuOTQxIDY0LjYyek00NC4xNyAyNTYuMzIzYzAtMi4xNjYuMDQzLTQuMzIyLjEwOC02LjQ3MyA5LjI2OC4xOSAxMTEuOTIgMS41MTMgMjE3LjcwNi0zMC4xNDYgNi4wNjQgMTEuODY4IDExLjg1NyAyMy45MTUgMTcuMTc0IDM1Ljk0OS03Ni41OTkgMjEuNTc1LTE0Ni4xOTQgODMuNTI3LTE4MC41MzEgMTQyLjMwNkM2NC43OTQgMzYwLjQwNSA0NC4xNyAzMTAuNzMgNDQuMTcgMjU2LjMyM3ptODEuODA3IDE2Ny4xMTNjMjIuMTI3LTQ1LjIzMyA4Mi4xNzgtMTAzLjYyMiAxNjcuNTc5LTEzMi43NTYgMjkuNzQgNzcuMjgzIDQyLjAzOSAxNDIuMDUzIDQ1LjE4OSAxNjAuNjM4LTY4LjExMiAyOS4wMTMtMTUwLjAxNSAyMS4wNTMtMjEyLjc2OC0yNy44ODJ6bTI0OC4zOCA4LjQ4OWMtMi4xNzEtMTIuODg2LTEzLjQ0Ni03NC44OTctNDEuMTUyLTE1MS4wMzMgNjYuMzgtMTAuNjI2IDEyNC43IDYuNzY4IDEzMS45NDcgOS4wNTUtOS40NDIgNTguOTQxLTQzLjI3MyAxMDkuODQ0LTkwLjc5NSAxNDEuOTc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcm9wYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MjggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2NC40IDExNi4zbC0xMzIgODQuMyAxMzIgODQuMy0xMzIgODQuM0wwIDI4NC4xbDEzMi4zLTg0LjNMMCAxMTYuMyAxMzIuMyAzMmwxMzIuMSA4NC4zek0xMzEuNiAzOTUuN2wxMzItODQuMyAxMzIgODQuMy0xMzIgODQuMy0xMzItODQuM3ptMTMyLjgtMTExLjZsMTMyLTg0LjMtMTMyLTgzLjZMMzk1LjcgMzIgNTI4IDExNi4zbC0xMzIuMyA4NC4zTDUyOCAyODQuOGwtMTMyLjMgODQuMy0xMzEuMy04NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1cGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOS41IDExNC43Yy0yMi4yLTE0LTQzLjUtMTkuNS02NC43LTMzLjUtMTMtOC44LTMxLjMtMzAtNDYuNS00OC4zLTIuNyAyOS4zLTExLjUgNDEuMi0yMiA0OS41LTIxLjMgMTctMzQuOCAyMi4yLTUzLjUgMzIuM0MxMTcgMTIzIDMyIDE4MS41IDMyIDI5MC41IDMyIDM5OS43IDEyMy44IDQ4MCAyMjUuOCA0ODAgMzI3LjUgNDgwIDQxNiA0MDYgNDE2IDI5NGMwLTExMi4zLTgzLTE3MS05Ni41LTE3OS4zem0yLjUgMzI1LjZjLTIwLjEgMjAuMS05MC4xIDI4LjctMTE2LjcgNC4yLTQuOC00LjguMy0xMiA2LjUtMTIgMCAwIDE3IDEzLjMgNTEuNSAxMy4zIDI3IDAgNDYtNy43IDU0LjUtMTQgNi4xLTQuNiA4LjQgNC4zIDQuMiA4LjV6bS01NC41LTUyLjZjOC43LTMuNiAyOS0zLjggMzYuOCAxLjMgNC4xIDIuOCAxNi4xIDE4LjggNi4yIDIzLjctOC40IDQuMi0xLjItMTUuNy0yNi41LTE1LjctMTQuNyAwLTE5LjUgNS4yLTI2LjcgMTEtNyA2LTkuOCA4LTEyLjIgNC43LTYtOC4yIDE1LjktMjIuMyAyMi40LTI1ek0zNjAgNDA1Yy0xNS4yLTEtNDUuNS00OC44LTY1LTQ5LjUtMzAuOS0uOS0xMDQuMSA4MC43LTE2MS4zIDQyLTM4LjgtMjYuNi0xNC42LTEwNC44IDUxLjgtMTA1LjIgNDkuNS0uNSA4My44IDQ5IDEwOC41IDQ4LjUgMjEuMy0uMyA2MS44LTQxLjggODEuOC00MS44IDQ4LjcgMCAyMy4zIDEwOS4zLTE1LjggMTA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEeWFsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnYxMTkuMmg2NFY5NmgxMDcuMkMyODQuNiA5NiAzNTIgMTc2LjIgMzUyIDI1NS45IDM1MiAzMzIgMjkzLjQgNDE2IDE3MS4yIDQxNkgwdjY0aDE3MS4yQzMzMS45IDQ4MCA0MTYgMzY3LjMgNDE2IDI1NS45YzAtNTguNy0yMi4xLTExMy40LTYyLjMtMTU0LjNDMzA4LjkgNTYgMjQ1LjcgMzIgMTcxLjIgMzJIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFybHliaXJkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuMiA0Ny41YzEuMi0xMyAyMS4zLTE0IDM2LjYtOC43LjkuMyAyNi4yIDkuNyAxOSAxNS4yLTI3LjktNy40LTU2LjQgMTguMi01NS42LTYuNXptLTIwMSA2LjljMzAuNy04LjEgNjIgMjAgNjEuMS03LjEtMS4zLTE0LjItMjMuNC0xNS4zLTQwLjItOS42LTEgLjMtMjguNyAxMC41LTIwLjkgMTYuN3pNMzE5LjQgMTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bS0xNTkuNyAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bTMxOC41IDE2My4yYy05LjkgMjQtNDAuNyAxMS02My45LTEuMi0xMy41IDY5LjEtNTguMSAxMTEuNC0xMjYuMyAxMjQuMi4zLjktMi0uMSAyNCAxIDMzLjYgMS40IDYzLjgtMy4xIDk3LjQtOC0xOS44LTEzLjgtMTEuNC0zNy4xLTkuOC0zOC4xIDEuNC0uOSAxNC43IDEuNyAyMS42IDExLjUgOC42LTEyLjUgMjguNC0xNC44IDMwLjItMTMuNiAxLjYgMS4xIDYuNiAyMC45LTYuOSAzNC42IDQuNy0uOSA4LjItMS42IDkuOC0yLjEgMi42LS44IDE3LjcgMTEuMyAzLjEgMTMuMy0xNC4zIDIuMy0yMi42IDUuMS00Ny4xIDEwLjgtNDUuOSAxMC43LTg1LjkgMTEuOC0xMTcuNyAxMi44bDEgMTEuNmMzLjggMTguMS0yMy40IDI0LjMtMjcuNiA2LjIuOCAxNy45LTI3LjEgMjEuOC0yOC40LTFsLS41IDUuM2MtLjcgMTguNC0yOC40IDE3LjktMjguMy0uNi03LjUgMTMuNS0yOC4xIDYuOC0yNi40LTguNWwxLjItMTIuNGMtMzYuNy45LTU5LjcgMy4xLTYxLjggMy4xLTIwLjkgMC0yMC45LTMxLjYgMC0zMS42IDIuNCAwIDI3LjcgMS4zIDYzLjIgMi44LTYxLjEtMTUuNS0xMDMuNy01NS0xMTQuOS0xMTguMi0yNSAxMi44LTU3LjUgMjYuOC02OC4yLjgtMTAuNS0yNS40IDIxLjUtNDIuNiA2Ni44LTczLjQuNy02LjYgMS42LTEzLjMgMi43LTE5LjgtMTQuNC0xOS42LTExLjYtMzYuMy0xNi4xLTYwLjQtMTYuOCAyLjQtMjMuMi05LjEtMjMuNi0yMy4xLjMtNy4zIDIuMS0xNC45IDIuNC0xNS40IDEuMS0xLjggMTAuMS0yIDEyLjctMi42IDYtMzEuNyA1MC42LTMzLjIgOTAuOS0zNC41IDE5LjctMjEuOCA0NS4yLTQxLjUgODAuOS00OC4zQzIwMy4zIDI5IDIxNS4yIDguNSAyMTYuMiA4YzEuNy0uOCAyMS4yIDQuMyAyNi4zIDIzLjIgNS4yLTguOCAxOC4zLTExLjQgMTkuNi0xMC43IDEuMS42IDYuNCAxNS00LjkgMjUuOSA0MC4zIDMuNSA3Mi4yIDI0LjcgOTYgNTAuNyAzNi4xIDEuNSA3MS44IDUuOSA3Ny4xIDM0IDIuNy42IDExLjYuOCAxMi43IDIuNi4zLjUgMi4xIDguMSAyLjQgMTUuNC0uNSAxMy45LTYuOCAyNS40LTIzLjYgMjMuMS0zLjIgMTcuMy0yLjcgMzIuOS04LjcgNDcuNyAyLjQgMTEuNyA0IDIzLjggNC44IDM2LjQgMzcgMjUuNCA3MC4zIDQyLjUgNjAuMyA2Ni45ek0yMDcuNCAxNTkuOWMuOS00NC0zNy45LTQyLjItNzguNi00MC4zLTIxLjcgMS0zOC45IDEuOS00NS41IDEzLjktMTEuNCAyMC45IDUuOSA5Mi45IDIzLjIgMTAxLjIgOS44IDQuNyA3My40IDcuOSA4Ni4zLTcuMSA4LjItOS40IDE1LTQ5LjQgMTQuNi02Ny43em01MiA1OC4zYy00LjMtMTIuNC02LTMwLjEtMTUuMy0zMi43LTItLjUtOS0uNS0xMSAwLTEwIDIuOC0xMC44IDIyLjEtMTcgMzcuMiAxNS40IDAgMTkuMyA5LjcgMjMuNyA5LjcgNC4zIDAgNi4zLTExLjMgMTkuNi0xNC4yem0xMzUuNy04NC43Yy02LjYtMTIuMS0yNC44LTEyLjktNDYuNS0xMy45LTQwLjItMS45LTc4LjItMy44LTc3LjMgNDAuMy0uNSAxOC4zIDUgNTguMyAxMy4yIDY3LjggMTMgMTQuOSA3Ni42IDExLjggODYuMyA3LjEgMTUuOC03LjYgMzYuNS03OC45IDI0LjMtMTAxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUViYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA2IDE4OS41bC01NC44IDEwOS45LTU0LjktMTA5LjloLTM3LjVsMTAuOSAyMC42Yy0xMS41LTE5LTM1LjktMjYtNjMuMy0yNi0zMS44IDAtNjcuOSA4LjctNzEuNSA0My4xaDMzLjdjMS40LTEzLjggMTUuNy0yMS44IDM1LTIxLjggMjYgMCA0MSA5LjYgNDEgMzN2My40Yy0xMi43IDAtMjggLjEtNDEuNy40LTQyLjQuOS02OS42IDEwLTc2LjcgMzQuNCAxLTUuMiAxLjUtMTAuNiAxLjUtMTYuMiAwLTUyLjEtMzkuNy03Ni4yLTc1LjQtNzYuMi0yMS4zIDAtNDMgNS41LTU4LjcgMjQuMnYtODAuNmgtMzIuMXYxNjkuNWMwIDEwLjMtLjYgMjIuOS0xLjEgMzMuMWgzMS41Yy43LTYuMyAxLjEtMTIuOSAxLjEtMTkuNSAxMy42IDE2LjYgMzUuNCAyNC45IDU4LjcgMjQuOSAzNi45IDAgNjQuOS0yMS45IDczLjMtNTQuMi0uNSAyLjgtLjcgNS44LS43IDkgMCAyNC4xIDIxLjEgNDUgNjAuNiA0NSAyNi42IDAgNDUuOC01LjcgNjEuOS0yNS41IDAgNi42LjMgMTMuMyAxLjEgMjAuMmgyOS44Yy0uNy04LjItMS0xNy41LTEtMjYuOHYtNjUuNmMwLTkuMy0xLjctMTcuMi00LjgtMjMuOGw2MS41IDExNi4xLTI4LjUgNTQuMWgzNS45TDY0MCAxODkuNXpNMjQzLjcgMzEzLjhjLTI5LjYgMC01MC4yLTIxLjUtNTAuMi01My44IDAtMzIuNCAyMC42LTUzLjggNTAuMi01My44IDI5LjggMCA1MC4yIDIxLjQgNTAuMiA1My44IDAgMzIuMy0yMC40IDUzLjgtNTAuMiA1My44em0yMDAuOS00Ny4zYzAgMzAtMTcuOSA0OC40LTUxLjYgNDguNC0yNS4xIDAtMzUtMTMuNC0zNS0yNS44IDAtMTkuMSAxOC4xLTI0LjQgNDcuMi0yNS4zIDEzLjEtLjUgMjcuNi0uNiAzOS40LS42em0tNDExLjkgMS42aDEyOC44di04LjVjMC01MS43LTMzLjEtNzUuNC03OC40LTc1LjQtNTYuOCAwLTgzIDMwLjgtODMgNzcuNiAwIDQyLjUgMjUuMyA3NCA4Mi41IDc0IDMxLjQgMCA2OC0xMS43IDc0LjQtNDYuMWgtMzMuMWMtMTIgMzUuOC04Ny43IDM2LjctOTEuMi0yMS42em05NS0yMS40SDMzLjNjNi45LTU2LjYgOTIuMS01NC43IDk0LjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRnZUxlZ2FjeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNS43MSwyMjguMTZsLjM1LS40OGMwLC4xNiwwLC4zMi0uMDcuNDhabTQ2MC41OCwxNS41MWMwLTQ0LTcuNzYtODQuNDYtMjguODEtMTIyLjRDNDE2LjUsNDcuODgsMzQzLjkxLDgsMjU4Ljg5LDgsMTE5LDcuNzIsNDAuNjIsMTEzLjIxLDI2LjA2LDIyNy42OGM0Mi40Mi02MS4zMSwxMTcuMDctMTIxLjM4LDIyMC4zNy0xMjUsMCwwLDEwOS42NywwLDk5LjQyLDEwNUgxNzBjNi4zNy0zNy4zOSwxOC41NS01OSwzNC4zNC03OC45My03NS4wNSwzNC45LTEyMS44NSw5Ni4xLTEyMC43NSwxODguMzIuODMsNzEuNDUsNTAuMTMsMTQ0Ljg0LDEyMC43NSwxNzIsODMuMzUsMzEuODQsMTkyLjc3LDcuMiwyNDAuMTMtMjEuMzNWMzYzLjMxQzM2My42LDQxOS44LDE3My42LDQyNC4yMywxNzIuMjEsMjk1Ljc0SDQ4Ni4yOVYyNDMuNjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVkZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgxLjkyLDEzNC40OEM0NDAuODcsNTQuMTgsMzUyLjI2LDgsMjU1LjkxLDgsMTM3LjA1LDgsMzcuNTEsOTEuNjgsMTMuNDcsMjAzLjY2YzI2LTQ2LjQ5LDg2LjIyLTc5LjE0LDE0OS40Ni03OS4xNCw3OS4yNywwLDEyMS4wOSw0OC45MywxMjIuMjUsNTAuMTgsMjIsMjMuOCwzMyw1MC4zOSwzMyw4My4xLDAsMTAuNC01LjMxLDI1LjgyLTE1LjExLDM4LjU3LTEuNTcsMi02LjM5LDQuODQtNi4zOSwxMSwwLDUuMDYsMy4yOSw5LjkyLDkuMTQsMTQsMjcuODYsMTkuMzcsODAuMzcsMTYuODEsODAuNTEsMTYuODFBMTE1LjM5LDExNS4zOSwwLDAsMCw0NDQuOTQsMzIyYTExOC45MiwxMTguOTIsMCwwLDAsNTguOTUtMTAyLjQ0QzUwNC4zOSwxNzYuMTMsNDg4LjM5LDE0Ny4yNiw0ODEuOTIsMTM0LjQ4Wk0yMTIuNzcsNDc1LjY3YTE1NC44OCwxNTQuODgsMCwwLDEtNDYuNjQtNDVjLTMyLjk0LTQ3LjQyLTM0LjI0LTk1LjYtMjAuMS0xMzZBMTU1LjUsMTU1LjUsMCwwLDEsMjAzLDIxNS43NWM1OS00NS4yLDk0Ljg0LTUuNjUsOTkuMDYtMWE4MCw4MCwwLDAsMC00Ljg5LTEwLjE0Yy05LjI0LTE1LjkzLTI0LTM2LjQxLTU2LjU2LTUzLjUxLTMzLjcyLTE3LjY5LTcwLjU5LTE4LjU5LTc3LjY0LTE4LjU5LTM4LjcxLDAtNzcuOSwxMy0xMDcuNTMsMzUuNjlDMzUuNjgsMTgzLjMsMTIuNzcsMjA4LjcyLDguNiwyNDNjLTEuMDgsMTIuMzEtMi43NSw2Mi44LDIzLDExOC4yN2EyNDgsMjQ4LDAsMCwwLDI0OC4zLDE0MS42MUMyNDEuNzgsNDk2LjI2LDIxNC4wNSw0NzYuMjQsMjEyLjc3LDQ3NS42N1ptMjUwLjcyLTk4LjMzYTcuNzYsNy43NiwwLDAsMC03LjkyLS4yMywxODEuNjYsMTgxLjY2LDAsMCwxLTIwLjQxLDkuMTIsMTk3LjU0LDE5Ny41NCwwLDAsMS02OS41NSwxMi41MmMtOTEuNjcsMC0xNzEuNTItNjMuMDYtMTcxLjUyLTE0NEE2MS4xMiw2MS4xMiwwLDAsMSwyMDAuNjEsMjI4LDE2OC43MiwxNjguNzIsMCwwLDAsMTYxLjg1LDI3OGMtMTQuOTIsMjkuMzctMzMsODguMTMsMTMuMzMsMTUxLjY2LDYuNTEsOC45MSwyMywzMCw1Niw0Ny42NywyMy41NywxMi42NSw0OSwxOS42MSw3MS43LDE5LjYxLDM1LjE0LDAsMTE1LjQzLTMzLjQ0LDE2My0xMDguODdBNy43NSw3Ljc1LDAsMCwwLDQ2My40OSwzNzcuMzRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVsZW1lbnRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjUuNiAzMkgyMi40QzEwIDMyIDAgNDIgMCA1NC40djQwMy4yQzAgNDcwIDEwIDQ4MCAyMi40IDQ4MGg0MDMuMmMxMi40IDAgMjIuNC0xMCAyMi40LTIyLjRWNTQuNEM0NDggNDIgNDM4IDMyIDQyNS42IDMyTTE2NC4zIDM1NS41aC0zOS44di0xOTloMzkuOHYxOTl6bTE1OS4zIDBIMjA0LjF2LTM5LjhoMTE5LjV2MzkuOHptMC03OS42SDIwNC4xdi0zOS44aDExOS41djM5Ljh6bTAtNzkuN0gyMDQuMXYtMzkuOGgxMTkuNXYzOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE0My44NCAyODUuMkMzNzUuMzEgMzU4LjUxIDMxNS43OSA0MDQuOCAyNDggNDA0LjhzLTEyNy4zMS00Ni4yOS0xNDMuODQtMTExLjZjLTEuNjUtNy40NCAyLjQ4LTE1LjcxIDkuOTItMTcuMzYgNy40NC0xLjY1IDE1LjcxIDIuNDggMTcuMzYgOS45MiAxNC4wNSA1Mi45MSA2MiA5MC4xMSAxMTYuNTYgOTAuMTFzMTAyLjUxLTM3LjIgMTE2LjU2LTkwLjExYzEuNjUtNy40NCA5LjkyLTEyLjQgMTcuMzYtOS45MiA3LjQ0IDEuNjUgMTIuNCA5LjkyIDkuOTIgMTcuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzOS45IDI1NC42Yy0xLjEtMTAuNy0xMC43LTYuOC0xMC43LTYuOHMtMTUuNiAxMi4xLTI5LjMgMTAuN2MtMTMuNy0xLjMtOS40LTMyLTkuNC0zMnMzLTI4LjEtNS4xLTMwLjRjLTguMS0yLjQtMTggNy4zLTE4IDcuM3MtMTIuNCAxMy43LTE4LjMgMzEuMmwtMS42LjVzMS45LTMwLjYtLjMtMzcuNmMtMS42LTMuNS0xNi40LTMuMi0xOC44IDNzLTE0LjIgNDkuMi0xNSA2Ny4yYzAgMC0yMy4xIDE5LjYtNDMuMyAyMi44cy0yNS05LjQtMjUtOS40IDU0LjgtMTUuMyA1Mi45LTU5LjEtNDQuMi0yNy42LTQ5LTI0Yy00LjYgMy41LTI5LjQgMTguNC0zNi42IDU5LjctLjIgMS40LS43IDcuNS0uNyA3LjVzLTIxLjIgMTQuMi0zMyAxOGMwIDAgMzMtNTUuNi03LjMtODAuOS0xMS40LTYuOC0yMS4zLS41LTI3LjIgNS4zIDEzLjYtMTcuMyA0Ni40LTY0LjIgMzYuOS0xMDUuMi01LjgtMjQuNC0xOC0yNy4xLTI5LjItMjMuMS0xNyA2LjctMjMuNSAxNi43LTIzLjUgMTYuN3MtMjIgMzItMjcuMSA3OS41LTEyLjYgMTA1LjEtMTIuNiAxMDUuMS0xMC41IDEwLjItMjAuMiAxMC43LTUuNC0yOC43LTUuNC0yOC43IDcuNS00NC42IDctNTIuMS0xLjEtMTEuNi05LjktMTQuMmMtOC45LTIuNy0xOC41IDguNi0xOC41IDguNnMtMjUuNSAzOC43LTI3LjcgNDQuNmwtMS4zIDIuNC0xLjMtMS42czE4LTUyLjcuOC01My41LTI4LjUgMTguOC0yOC41IDE4LjgtMTkuNiAzMi44LTIwLjQgMzYuNWwtMS4zLTEuNnM4LjEtMzguMiA2LjQtNDcuNmMtMS42LTkuNC0xMC41LTcuNS0xMC41LTcuNXMtMTEuMy0xLjMtMTQuMiA1LjktMTMuNyA1NS4zLTE1IDcwLjdjMCAwLTI4LjIgMjAuMi00Ni44IDIwLjQtMTguNS4zLTE2LjctMTEuOC0xNi43LTExLjhzNjgtMjMuMyA0OS40LTY5LjJjLTguMy0xMS44LTE4LTE1LjUtMzEuNy0xNS4zLTEzLjcuMy0zMC4zIDguNi00MS4zIDMzLjMtNS4zIDExLjgtNi44IDIzLTcuOCAzMS41IDAgMC0xMi4zIDIuNC0xOC44LTIuOXMtMTAgMC0xMCAwLTExLjIgMTQtLjEgMTguMyAyOC4xIDYuMSAyOC4xIDYuMWMxLjYgNy41IDYuMiAxOS41IDE5LjYgMjkuNyAyMC4yIDE1LjMgNTguOC0xLjMgNTguOC0xLjNsMTUuOS04LjhzLjUgMTQuNiAxMi4xIDE2LjcgMTYuNCAxIDM2LjUtNDcuOWMxMS44LTI1IDEyLjYtMjMuNiAxMi42LTIzLjZsMS4zLS4zcy05LjEgNDYuOC01LjYgNTkuN0MxODcuNyAzMTkuNCAyMDMgMzE4IDIwMyAzMThzOC4zIDIuNCAxNS0yMS4yIDE5LjYtNDkuOSAxOS42LTQ5LjloMS42cy01LjYgNDguMSAzIDYzLjcgMzAuOSA1LjMgMzAuOSA1LjMgMTUuNi03LjggMTgtMTAuMmMwIDAgMTguNSAxNS44IDQ0LjYgMTIuOSA1OC4zLTExLjUgNzkuMS0yNS45IDc5LjEtMjUuOXMxMCAyNC40IDQxLjEgMjYuN2MzNS41IDIuNyA1NC44LTE4LjYgNTQuOC0xOC42cy0uMyAxMy41IDEyLjEgMTguNiAyMC43LTIyLjggMjAuNy0yMi44bDIwLjctNTcuMmgxLjlzMS4xIDM3LjMgMjEuNSA0My4yIDQ3LTEzLjcgNDctMTMuNyA2LjQtMy41IDUuMy0xNC4zem0tNTc4IDUuM2MuOC0zMiAyMS44LTQ1LjkgMjktMzkgNy4zIDcgNC42IDIyLTkuMSAzMS40LTEzLjcgOS41LTE5LjkgNy42LTE5LjkgNy42em0yNzIuOC0xMjMuOHMxOS4xLTQ5LjcgMjMuNi0yNS41LTQwIDk2LjItNDAgOTYuMmMuNS0xNi4yIDE2LjQtNzAuNyAxNi40LTcwLjd6bTIyLjggMTM4LjRjLTEyLjYgMzMtNDMuMyAxOS42LTQzLjMgMTkuNnMtMy41LTExLjggNi40LTQ0LjkgMzMuMy0yMC4yIDMzLjMtMjAuMiAxNi4yIDEyLjQgMy42IDQ1LjV6bTg0LjYtMTQuNnMtMy0xMC41IDguMS0zMC42YzExLTIwLjIgMTkuNi05LjEgMTkuNi05LjFzOS40IDEwLjItMS4zIDI1LjUtMjYuNCAxNC4yLTI2LjQgMTQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW1waXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4Ny42IDU0LjJjLTEwLjgtMi4yLTIyLjEtMy4zLTMzLjUtMy42VjMyLjRjNzguMSAyLjIgMTQ2LjEgNDQgMTg0LjYgMTA2LjZsLTE1LjggOS4xYy02LjEtOS43LTEyLjctMTguOC0yMC4yLTI3LjFsLTE4IDE1LjVjLTI2LTI5LjYtNjEuNC01MC43LTEwMS45LTU4LjRsNC44LTIzLjl6TTUzLjQgMzIyLjRsMjMtNy43Yy02LjQtMTguMy0xMC0zOC4yLTEwLTU4LjdzMy4zLTQwLjQgOS43LTU4LjdsLTIyLjctNy43YzMuNi0xMC44IDguMy0yMS4zIDEzLjYtMzFsLTE1LjgtOS4xQzM0IDE4MSAyNC4xIDIxNy41IDI0LjEgMjU2czEwIDc1IDI3LjEgMTA2LjZsMTUuOC05LjFjLTUuMy0xMC05LjctMjAuMy0xMy42LTMxLjF6TTIxMy4xIDQzNGMtNDAuNC04LTc1LjgtMjkuMS0xMDEuOS01OC43bC0xOCAxNS44Yy03LjUtOC42LTE0LjQtMTcuNy0yMC4yLTI3LjRsLTE2IDkuNGMzOC41IDYyLjMgMTA2LjggMTA0LjMgMTg0LjkgMTA2LjZ2LTE4LjNjLTExLjMtLjMtMjIuNy0xLjctMzMuNS0zLjZsNC43LTIzLjh6TTkzLjMgMTIwLjlsMTggMTUuNWMyNi0yOS42IDYxLjQtNTAuNyAxMDEuOS01OC40bC00LjctMjMuOGMxMC44LTIuMiAyMi4xLTMuMyAzMy41LTMuNlYzMi40QzE2My45IDM0LjYgOTUuOSA3Ni40IDU3LjQgMTM5bDE1LjggOS4xYzYtOS43IDEyLjYtMTguOSAyMC4xLTI3LjJ6bTMwOS40IDI3MC4ybC0xOC0xNS44Yy0yNiAyOS42LTYxLjQgNTAuNy0xMDEuOSA1OC43bDQuNyAyMy44Yy0xMC44IDEuOS0yMi4xIDMuMy0zMy41IDMuNnYxOC4zYzc4LjEtMi4yIDE0Ni40LTQ0LjMgMTg0LjktMTA2LjZsLTE2LjEtOS40Yy01LjcgOS43LTEyLjYgMTguOC0yMC4xIDI3LjR6TTQ5NiAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzAgMzkzIDAgMjU2IDExMSA4IDI0OCA4czI0OCAxMTEgMjQ4IDI0OHptLTEyLjIgMGMwLTEzMC4xLTEwNS43LTIzNS44LTIzNS44LTIzNS44UzEyLjIgMTI1LjkgMTIuMiAyNTYgMTE3LjkgNDkxLjggMjQ4IDQ5MS44IDQ4My44IDM4Ni4xIDQ4My44IDI1NnptLTM5LTEwNi42bC0xNS44IDkuMWM1LjMgOS43IDEwIDIwLjIgMTMuNiAzMWwtMjIuNyA3LjdjNi40IDE4LjMgOS43IDM4LjIgOS43IDU4LjdzLTMuNiA0MC40LTEwIDU4LjdsMjMgNy43Yy0zLjkgMTAuOC04LjMgMjEtMTMuNiAzMWwxNS44IDkuMUM0NjIgMzMxIDQ3MS45IDI5NC41IDQ3MS45IDI1NnMtOS45LTc1LTI3LjEtMTA2LjZ6bS0xODMgMTc3LjdjMTYuMy0zLjMgMzAuNC0xMS42IDQwLjctMjMuNWw1MS4yIDQ0LjhjMTEuOS0xMy42IDIxLjMtMjkuMyAyNy4xLTQ2LjhsLTY0LjItMjIuMWMyLjUtNy41IDMuOS0xNS4yIDMuOS0yMy41cy0xLjQtMTYuMS0zLjktMjMuNWw2NC41LTIyLjFjLTYuMS0xNy40LTE1LjUtMzMuMi0yNy40LTQ2LjhsLTUxLjIgNDQuOGMtMTAuMi0xMS45LTI0LjQtMjAuNS00MC43LTIzLjhsMTMuMy02Ni40Yy04LjYtMS45LTE3LjctMi44LTI3LjEtMi44LTkuNCAwLTE4LjUuOC0yNy4xIDIuOGwxMy4zIDY2LjRjLTE2LjMgMy4zLTMwLjQgMTEuOS00MC43IDIzLjhsLTUxLjItNDQuOGMtMTEuOSAxMy42LTIxLjMgMjkuMy0yNy40IDQ2LjhsNjQuNSAyMi4xYy0yLjUgNy41LTMuOSAxNS4yLTMuOSAyMy41czEuNCAxNi4xIDMuOSAyMy41bC02NC4yIDIyLjFjNS44IDE3LjQgMTUuMiAzMy4yIDI3LjEgNDYuOGw1MS4yLTQ0LjhjMTAuMiAxMS45IDI0LjQgMjAuMiA0MC43IDIzLjVsLTEzLjMgNjYuN2M4LjYgMS43IDE3LjcgMi44IDI3LjEgMi44IDkuNCAwIDE4LjUtMS4xIDI3LjEtMi44bC0xMy4zLTY2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmlyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyYzQ3Ny42IDAgMzY2LjYgMzE3LjMgMzY3LjEgMzY2LjNMNDQ4IDQ4MGgtMjZsLTcwLjQtNzEuMmMtMzkgNC4yLTEyNC40IDM0LjUtMjE0LjQtMzdDNDcgMzAwLjMgNTIgMjE0LjcgMCAzMnptNzkuNyA0NmMtNDkuNy0yMy41LTUuMiA5LjItNS4yIDkuMiA0NS4yIDMxLjIgNjYgNzMuNyA5MC4yIDExOS45IDMxLjUgNjAuMiA3OSAxMzkuNyAxNDQuMiAxNjcuNyA2NSAyOCAzNC4yIDEyLjUgNi04LjUtMjguMi0yMS4yLTY4LjItODctOTEtMTMwLjItMzEuNy02MC02MS0xMTguNi0xNDQuMi0xNTguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXJsYW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg3LjIgNTMuNUgwdjQwNWgxMDAuNGMtNDkuNy01Mi42LTc4LjgtMTI1LjMtNzguNy0yMTIuMS0uMS03Ni43IDI0LTE0Mi43IDY1LjUtMTkyLjl6bTIzOC4yIDkuN2MtNDUuOS4xLTg1LjEgMzMuNS04OS4yIDgzLjJoMTY5LjljLTEuMS00OS43LTM0LjUtODMuMS04MC43LTgzLjJ6bTIzMC43LTkuNmguM2wtLjEtLjF6bS4zIDBjMzEuNCA0Mi43IDQ4LjcgOTcuNSA0Ni4yIDE2Mi43LjUgNiAuNSAxMS43IDAgMjQuMUgyMzAuMmMtLjIgMTA5LjcgMzguOSAxOTQuOSAxMzguNiAxOTUuMyA2OC41LS4zIDExOC01MSAxNTEuOS0xMDYuMWw5Ni40IDQ4LjJjLTE3LjQgMzAuOS0zNi41IDU3LjgtNTcuOSA4MC44SDY0MHYtNDA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdGhlcmV1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTEuOSAyNjAuOEwxNjAgMzUzLjYgOCAyNjAuOCAxNjAgMGwxNTEuOSAyNjAuOHpNMTYwIDM4My40TDggMjkwLjYgMTYwIDUxMmwxNTItMjIxLjQtMTUyIDkyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0c3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM0OGMtMS43NSAxMC43NS0xMy43NSAxMTAtMTUuNSAxMzItMTE3Ljg3OS00LjI5OS0yMTkuODk1LTQuNzQzLTM2OC41IDB2LTI1LjVjNDUuNDU3LTguOTQ4IDYwLjYyNy04LjAxOSA2MS0zNS4yNSAxLjc5My03Mi4zMjIgMy41MjQtMjQ0LjE0MyAwLTMyMi0xLjAyOS0yOC40Ni0xMi4xMy0yNi43NjUtNjEtMzZ2LTI1LjVjNzMuODg2IDIuMzU4IDI1NS45MzMgOC41NTEgMzYyLjk5OS0zLjc1LTMuNSAzOC4yNS03Ljc1IDEyNi41LTcuNzUgMTI2LjVIMzMyQzMyMC45NDcgMTE1LjY2NSAzMTMuMjQxIDY4IDI3Ny4yNSA2OGgtMTM3Yy0xMC4yNSAwLTEwLjc1IDMuNS0xMC43NSA5Ljc1VjI0MS41YzU4IC41IDg4LjUtMi41IDg4LjUtMi41IDI5Ljc3LS45NTEgMjcuNTYtOC41MDIgNDAuNzUtNjUuMjUxaDI1Ljc1Yy00LjQwNyAxMDEuMzUxLTMuOTEgNjEuODI5LTEuNzUgMTYwLjI1SDI1N2MtOS4xNTUtNDAuMDg2LTkuMDY1LTYxLjA0NS0zOS41MDEtNjEuNSAwIDAtMjEuNS0yLTg4LTJ2MTM5YzAgMjYgMTQuMjUgMzguMjUgNDQuMjUgMzguMjVIMjYzYzYzLjYzNiAwIDY2LjU2NC0yNC45OTYgOTguNzUxLTk5Ljc1SDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXZlcm5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjgyIDEzMi4yMWMxLjYgMjIuMzEtMTcuNTUgMjEuNTktMjEuNjEgMjEuNTktNjguOTMgMC03My42NC0xLTgzLjU4IDMuMzQtLjU2LjIyLS43NCAwLS4zNy0uMzdMMTIzLjc5IDQ2LjQ1Yy4zOC0uMzcuNi0uMjIuMzguMzctNC4zNSA5Ljk5LTMuMzUgMTUuMDktMy4zNSA4NS4zOXptNzkgMzA4Yy0xNC42OC0zNy4wOCAxMy03Ni45MyA1Mi41Mi03Ni42MiAxNy40OSAwIDIyLjYgMjMuMjEgNy45NSAzMS40Mi02LjE5IDMuMy0yNC45NSAxLjc0LTI1LjE0IDE5LjItLjA1IDE3LjA5IDE5LjY3IDI1IDMxLjIgMjQuODlBNDUuNjQgNDUuNjQgMCAwIDAgMzEyIDM5My40NXYtLjA4YzAtMTEuNjMtNy43OS00Ny4yMi00Ny41NC01NS4zNC03LjcyLTEuNTQtNjUtNi4zNS02OC4zNS01MC41Mi0zLjc0IDE2LjkzLTE3LjQgNjMuNDktNDMuMTEgNjkuMDktOC43NCAxLjk0LTY5LjY4IDcuNjQtMTEyLjkyLTM2Ljc3IDAgMC0xOC41Ny0xNS4yMy0yOC4yMy01Ny45NS0zLjM4LTE1Ljc1LTkuMjgtMzkuNy0xMS4xNC02MiAwLTE4IDExLjE0LTMwLjQ1IDI1LjA3LTMyLjIgODEgMCA5MCAyLjMyIDEwMS03LjggOS44Mi05LjI0IDcuOC0xNS41IDcuOC0xMDIuNzggMS04LjMgNy43OS0zMC44MSA1My40MS0yNC4xNCA2IC44NiAzMS45MSA0LjE4IDM3LjQ4IDMwLjY0bDY0LjI2IDExLjE1YzIwLjQzIDMuNzEgNzAuOTQgNyA4MC42IDU3Ljk0IDIyLjY2IDEyMS4wOSA4LjkxIDIzOC40NiA3LjggMjM4LjQ2QzM2Mi4xNSA0ODUuNTMgMjY3LjA2IDQ4MCAyNjcuMDYgNDgwYy0xOC45NS0uMjMtNTQuMjUtOS40LTY3LjI3LTM5Ljgzem04MC45NC0yMDQuODRjLTEgMS45Mi0yLjIgNiAuODUgNyAxNC4wOSA0LjkzIDM5Ljc1IDYuODQgNDUuODggNS41MyAzLjExLS4yNSAzLjA1LTQuNDMgMi40OC02LjY1LTMuNTMtMjEuODUtNDAuODMtMjYuNS00OS4yNC01LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBlZGl0ZWRzc2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDQzLjRDMTMwLjYgNDMuNCAzNS40IDEzOC42IDM1LjQgMjU2UzEzMC42IDQ2OC42IDI0OCA0NjguNiA0NjAuNiAzNzMuNCA0NjAuNiAyNTYgMzY1LjQgNDMuNCAyNDggNDMuNHptLTk3LjQgMTMyLjljMC01My43IDQzLjctOTcuNCA5Ny40LTk3LjRzOTcuNCA0My43IDk3LjQgOTcuNHYyNi42YzAgNS0zLjkgOC45LTguOSA4LjloLTE3LjdjLTUgMC04LjktMy45LTguOS04Ljl2LTI2LjZjMC04Mi4xLTEyNC04Mi4xLTEyNCAwdjI2LjZjMCA1LTMuOSA4LjktOC45IDguOWgtMTcuN2MtNSAwLTguOS0zLjktOC45LTguOXYtMjYuNnpNMzg5LjcgMzgwYzAgOS43LTggMTcuNy0xNy43IDE3LjdIMTI0Yy05LjcgMC0xNy43LTgtMTcuNy0xNy43VjIzOC4zYzAtOS43IDgtMTcuNyAxNy43LTE3LjdoMjQ4YzkuNyAwIDE3LjcgOCAxNy43IDE3LjdWMzgwem0tMjQ4LTEzNy4zdjEzMi45YzAgMi41LTEuOSA0LjQtNC40IDQuNGgtOC45Yy0yLjUgMC00LjQtMS45LTQuNC00LjRWMjQyLjdjMC0yLjUgMS45LTQuNCA0LjQtNC40aDguOWMyLjUgMCA0LjQgMS45IDQuNCA0LjR6bTE0MS43IDQ4LjdjMCAxMy03LjIgMjQuNC0xNy43IDMwLjR2MzEuNmMwIDUtMy45IDguOS04LjkgOC45aC0xNy43Yy01IDAtOC45LTMuOS04LjktOC45di0zMS42Yy0xMC41LTYuMS0xNy43LTE3LjQtMTcuNy0zMC40IDAtMTkuNyAxNS44LTM1LjQgMzUuNC0zNS40czM1LjUgMTUuOCAzNS41IDM1LjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDc4LjNDMTIxIDQ4Ni4zIDE3LjcgMzgzIDE3LjcgMjU2UzEyMSAyNS43IDI0OCAyNS43IDQ3OC4zIDEyOSA0NzguMyAyNTYgMzc1IDQ4Ni4zIDI0OCA0ODYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZWJvb2tGIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OS4xNCAyODhsMTQuMjItOTIuNjZoLTg4Ljkxdi02MC4xM2MwLTI1LjM1IDEyLjQyLTUwLjA2IDUyLjI0LTUwLjA2aDQwLjQyVjYuMjZTMjYwLjQzIDAgMjI1LjM2IDBjLTczLjIyIDAtMTIxLjA4IDQ0LjM4LTEyMS4wOCAxMjQuNzJ2NzAuNjJIMjIuODlWMjg4aDgxLjM5djIyNGgxMDAuMTdWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9va01lc3NlbmdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNTUgOEMxMTYuNTIgOCA4IDExMC4zNCA4IDI0OC41N2MwIDcyLjMgMjkuNzEgMTM0Ljc4IDc4LjA3IDE3Ny45NCA4LjM1IDcuNTEgNi42MyAxMS44NiA4LjA1IDU4LjIzQTE5LjkyIDE5LjkyIDAgMCAwIDEyMiA1MDIuMzFjNTIuOTEtMjMuMyA1My41OS0yNS4xNCA2Mi41Ni0yMi43QzMzNy44NSA1MjEuOCA1MDQgNDIzLjcgNTA0IDI0OC41NyA1MDQgMTEwLjM0IDM5Ni41OSA4IDI1Ni41NSA4em0xNDkuMjQgMTg1LjEzbC03MyAxMTUuNTdhMzcuMzcgMzcuMzcgMCAwIDEtNTMuOTEgOS45M2wtNTguMDgtNDMuNDdhMTUgMTUgMCAwIDAtMTggMGwtNzguMzcgNTkuNDRjLTEwLjQ2IDcuOTMtMjQuMTYtNC42LTE3LjExLTE1LjY3bDczLTExNS41N2EzNy4zNiAzNy4zNiAwIDAgMSA1My45MS05LjkzbDU4LjA2IDQzLjQ2YTE1IDE1IDAgMCAwIDE4IDBsNzguNDEtNTkuMzhjMTAuNDQtNy45OCAyNC4xNCA0LjU0IDE3LjA5IDE1LjYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9va1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhBNDggNDggMCAwIDAgMCA4MHYzNTJhNDggNDggMCAwIDAgNDggNDhoMTM3LjI1VjMyNy42OWgtNjNWMjU2aDYzdi01NC42NGMwLTYyLjE1IDM3LTk2LjQ4IDkzLjY3LTk2LjQ4IDI3LjE0IDAgNTUuNTIgNC44NCA1NS41MiA0Ljg0djYxaC0zMS4yN2MtMzAuODEgMC00MC40MiAxOS4xMi00MC40MiAzOC43M1YyNTZoNjguNzhsLTExIDcxLjY5aC01Ny43OFY0ODBINDAwYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjgwYTQ4IDQ4IDAgMCAwLTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZjMCAxMjMuNzggOTAuNjkgMjI2LjM4IDIwOS4yNSAyNDVWMzI3LjY5aC02M1YyNTZoNjN2LTU0LjY0YzAtNjIuMTUgMzctOTYuNDggOTMuNjctOTYuNDggMjcuMTQgMCA1NS41MiA0Ljg0IDU1LjUyIDQuODR2NjFoLTMxLjI4Yy0zMC44IDAtNDAuNDEgMTkuMTItNDAuNDEgMzguNzNWMjU2aDY4Ljc4bC0xMSA3MS42OWgtNTcuNzhWNTAxQzQxMy4zMSA0ODIuMzggNTA0IDM3OS43OCA1MDQgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYW50YXN5RmxpZ2h0R2FtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyLjg2TDMyLjg2IDI1NiAyNTYgNDc5LjE0IDQ3OS4xNCAyNTYgMjU2IDMyLjg2ek04OC4zNCAyNTUuODNjMS45Ni0yIDExLjkyLTEyLjMgOTYuNDktOTcuNDggNDEuNDUtNDEuNzUgODYuMTktNDMuNzcgMTE5Ljc3LTE4LjY5IDI0LjYzIDE4LjQgNjIuMDYgNTguOSA2Mi4xNSA1OSAuNjguNzQgMS4wNyAyLjg2LjU4IDMuMzgtMTEuMjcgMTEuODQtMjIuNjggMjMuNTQtMzMuNSAzNC42OS0zNC4yMS0zMi4zMS00MC41Mi0zOC4yNC00OC41MS00My45NS0xNy43Ny0xMi42OS00MS40LTEwLjEzLTU2Ljk4IDUuMS0yLjE3IDIuMTMtMS43OSAzLjQzLjEyIDUuMzUgMi45NCAyLjk1IDI4LjEgMjguMzMgMzUuMDkgMzUuNzgtMTEuOTUgMTEuNi0yMy42NiAyMi45Ny0zNS42OSAzNC42Ni0xMi4wMi0xMi41NC0yNC40OC0yNS41My0zNi41NC0zOC4xMS0yMS4zOSAyMS4wOS00MS42OSA0MS4xMS02MS44NSA2MC45OWE0MjU2OS4wMSA0MjU2OS4wMSAwIDAgMS00MS4xMy00MC43MnptMjM0LjgyIDEwMS42Yy0zNS40OSAzNS40My03OC4wOSAzOC4xNC0xMDYuOTkgMjAuNDctMjIuMDgtMTMuNS0zOS4zOC0zMi4wOC03Mi45My02Ni44NCAxMi4wNS0xMi4zNyAyMy43OS0yNC40MiAzNS4zNy0zNi4zMSAzMy4wMiAzMS45MSAzNy4wNiAzNi4wMSA0NC42OCA0Mi4wOSAxOC40OCAxNC43NCA0Mi41MiAxMy42NyA1OS4zMi0xLjggMy42OC0zLjM5IDMuNjktMy42NC4xNC03LjI0LTEwLjU5LTEwLjczLTIxLjE5LTIxLjQ0LTMxLjc3LTMyLjE4LTEuMzItMS4zNC0zLjAzLTIuNDgtLjgtNC42OSAxMC43OS0xMC43MSAyMS40OC0yMS41MiAzMi4yMS0zMi4yOS4yNi0uMjYuNjUtLjM4IDEuOTEtMS4wNyAxMi4zNyAxMi44NyAyNC45MiAyNS45MiAzNy4yNSAzOC43NSAyMS4wMS0yMC43MyA0MS4yNC00MC42OCA2MS4yNS02MC40MiAxMy42OCAxMy40IDI3LjEzIDI2LjU4IDQwLjg2IDQwLjAzLTIwLjE3IDIwLjg2LTgxLjY4IDgyLjcxLTEwMC41IDEwMS41ek0yNTYgMEwwIDI1NmwyNTYgMjU2IDI1Ni0yNTZMMjU2IDB6TTE2IDI1NkwyNTYgMTZsMjQwIDI0MC0yNDAgMjQwTDE2IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVkZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTg2IDI4NC41bDUzLjMtNTkuOWgtNjIuNGwtMjEuNyAyNC44LTIyLjUtMjQuOEg0MTR2LTE2aDU2LjF2LTQ4LjFIMzE4LjlWMjM2aC0uNWMtOS42LTExLTIxLjUtMTQuOC0zNS40LTE0LjgtMjguNCAwLTQ5LjggMTkuNC01Ny4zIDQ0LjktMTgtNTkuNC05Ny40LTU3LjYtMTIxLjktMTR2LTI0LjJINDl2LTI2LjJoNjB2LTQxLjFIMFYzNDVoNDl2LTc3LjVoNDguOWMtMS41IDUuNy0yLjMgMTEuOC0yLjMgMTguMiAwIDczLjEgMTAyLjYgOTEuNCAxMzAuMiAyMy43aC00MmMtMTQuNyAyMC45LTQ1LjggOC45LTQ1LjgtMTQuNmg4NS41YzMuNyAzMC41IDI3LjQgNTYuOSA2MC4xIDU2LjkgMTQuMSAwIDI3LTYuOSAzNC45LTE4LjZoLjVWMzQ1aDIxMi4ybDIyLjEtMjUgMjIuMyAyNUg2NDBsLTU0LTYwLjV6bS00NDYuNy0xNi42YzYuMS0yNi4zIDQxLjctMjUuNiA0Ni41IDBoLTQ2LjV6bTE1My40IDQ4LjljLTM0LjYgMC0zNC02Mi44IDAtNjIuOCAzMi42IDAgMzQuNSA2Mi44IDAgNjIuOHptMTY3LjggMTkuMWgtOTQuNFYxNjkuNGg5NXYzMC4ySDQwNXYzMy45aDU1LjV2MjguMWgtNTYuMXY0NC43aDU2LjF2MjkuNnptLTQ1LjktMzkuOHYtMjQuNGg1Ni4xdi00NGw1MC43IDU3LTUwLjcgNTd2LTQ1LjZoLTU2LjF6bTEzOC42IDEwLjNsLTI2LjEgMjkuNUg0ODlsNDUuNi01MS4yLTQ1LjYtNTEuMmgzOS43bDI2LjYgMjkuMyAyNS42LTI5LjNoMzguNWwtNDUuNCA1MSA0NiA1MS40aC00MC41bC0yNi4zLTI5LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlZG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUgMzJDMTAxLjMgMzEuNy44IDEzMS43LjQgMjU1LjRMMCA0MjUuN2E1My42IDUzLjYgMCAwIDAgNTMuNiA1My45bDE3MC4yLjRjMTIzLjcuMyAyMjQuMy05OS43IDIyNC42LTIyMy40UzM0OC43IDMyLjMgMjI1IDMyem0xNjkuOCAxNTcuMkwzMzMgMTI2LjZjMi4zLTQuNyAzLjgtOS4yIDMuOC0xNC4zdi0xLjZsNTUuMiA1Ni4xYTEwMSAxMDEgMCAwIDEgMi44IDIyLjR6TTMzMSA5NC4zYTEwNi4wNiAxMDYuMDYgMCAwIDEgNTguNSA2My44bC01NC4zLTU0LjZhMjYuNDggMjYuNDggMCAwIDAtNC4yLTkuMnpNMTE4LjEgMjQ3LjJhNDkuNjYgNDkuNjYgMCAwIDAtNy43IDExLjRsLTguNS04LjVhODUuNzggODUuNzggMCAwIDEgMTYuMi0yLjl6TTk3IDI1MS40bDExLjggMTEuOS0uOSA4YTM0Ljc0IDM0Ljc0IDAgMCAwIDIuNCAxMi41bC0yNy0yNy4yYTgwLjYgODAuNiAwIDAgMSAxMy43LTUuMnptLTE4LjIgNy40bDM4LjIgMzguNGE1My4xNyA1My4xNyAwIDAgMC0xNC4xIDQuN0w2Ny42IDI2NmExMDcgMTA3IDAgMCAxIDExLjItNy4yem0tMTUuMiA5LjhsMzUuMyAzNS41YTY3LjI1IDY3LjI1IDAgMCAwLTEwLjUgOC41TDUzLjUgMjc4YTY0LjMzIDY0LjMzIDAgMCAxIDEwLjEtOS40em0tMTMuMyAxMi4zbDM0LjkgMzVhNTYuODQgNTYuODQgMCAwIDAtNy43IDExLjRsLTM1LjgtMzUuOWMyLjgtMy44IDUuNy03LjIgOC42LTEwLjV6bS0xMSAxNC4zbDM2LjQgMzYuNmE0OC4yOSA0OC4yOSAwIDAgMC0zLjYgMTUuMmwtMzkuNS0zOS44YTk5LjgxIDk5LjgxIDAgMCAxIDYuNy0xMnptLTguOCAxNi4zbDQxLjMgNDEuOGE2My40NyA2My40NyAwIDAgMCA2LjcgMjYuMkwyNS44IDMyNmMxLjQtNC45IDIuOS05LjYgNC43LTE0LjV6bS03LjkgNDNsNjEuOSA2Mi4yYTMxLjI0IDMxLjI0IDAgMCAwLTMuNiAxNC4zdjEuMWwtNTUuNC01NS43YTg4LjI3IDg4LjI3IDAgMCAxLTIuOS0yMS45em01LjMgMzAuN2w1NC4zIDU0LjZhMjguNDQgMjguNDQgMCAwIDAgNC4yIDkuMiAxMDYuMzIgMTA2LjMyIDAgMCAxLTU4LjUtNjMuOHptLTUuMy0zN2E4MC42OSA4MC42OSAwIDAgMSAyLjEtMTdsNzIuMiA3Mi41YTM3LjU5IDM3LjU5IDAgMCAwLTkuOSA4Ljd6bTI1My4zLTUxLjhsLTQyLjYtLjEtLjEgNTZjLS4yIDY5LjMtNjQuNCAxMTUuOC0xMjUuNyAxMDIuOS01LjcgMC0xOS45LTguNy0xOS45LTI0LjJhMjQuODkgMjQuODkgMCAwIDEgMjQuNS0yNC42YzYuMyAwIDYuMyAxLjYgMTUuNyAxLjZhNTUuOTEgNTUuOTEgMCAwIDAgNTYuMS01NS45bC4xLTQ3YzAtNC41LTQuNS05LTguOS05bC0zMy42LS4xYy0zMi42LS4xLTMyLjUtNDkuNC4xLTQ5LjNsNDIuNi4xLjEtNTZhMTA1LjE4IDEwNS4xOCAwIDAgMSAxMDUuNi0xMDUgODYuMzUgODYuMzUgMCAwIDEgMjAuMiAyLjNjMTEuMiAxLjggMTkuOSAxMS45IDE5LjkgMjQgMCAxNS41LTE0LjkgMjcuOC0zMC4zIDIzLjktMjcuNC01LjktNjUuOSAxNC40LTY2IDU0LjlsLS4xIDQ3YTguOTQgOC45NCAwIDAgMCA4LjkgOWwzMy42LjFjMzIuNS4yIDMyLjQgNDkuNS0uMiA0OS40em0yMy41LS4zYTM1LjU4IDM1LjU4IDAgMCAwIDcuNi0xMS40bDguNSA4LjVhMTAyIDEwMiAwIDAgMS0xNi4xIDIuOXptMjEtNC4yTDMwOC42IDI4MGwuOS04LjFhMzQuNzQgMzQuNzQgMCAwIDAtMi40LTEyLjVsMjcgMjcuMmE3NC44OSA3NC44OSAwIDAgMS0xMy43IDUuM3ptMTgtNy40bC0zOC0zOC40YzQuOS0xLjEgOS42LTIuNCAxMy43LTQuN2wzNi4yIDM1LjljLTMuOCAyLjUtNy45IDUtMTEuOSA3LjJ6bTE1LjUtOS44bC0zNS4zLTM1LjVhNjEuMDYgNjEuMDYgMCAwIDAgMTAuNS04LjVsMzQuOSAzNWExMjQuNTYgMTI0LjU2IDAgMCAxLTEwLjEgOXptMTMuMi0xMi4zbC0zNC45LTM1YTYzLjE4IDYzLjE4IDAgMCAwIDcuNy0xMS40bDM1LjggMzUuOWExMzAuMjggMTMwLjI4IDAgMCAxLTguNiAxMC41em0xMS0xNC4zbC0zNi40LTM2LjZhNDguMjkgNDguMjkgMCAwIDAgMy42LTE1LjJsMzkuNSAzOS44YTg3LjcyIDg3LjcyIDAgMCAxLTYuNyAxMnptMTMuNS0zMC45YTE0MC42MyAxNDAuNjMgMCAwIDEtNC43IDE0LjNMMzQ1LjYgMTkwYTU4LjE5IDU4LjE5IDAgMCAwLTcuMS0yNi4yem0xLTUuNmwtNzEuOS03Mi4xYTMyIDMyIDAgMCAwIDkuOS05LjJsNjQuMyA2NC43YTkwLjkzIDkwLjkzIDAgMCAxLTIuMyAxNi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWdtYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA5NS43OTI0QzE0IDQyLjg4NzcgNTYuODg3OCAwIDEwOS43OTMgMEgyNzQuMTYxQzMyNy4wNjYgMCAzNjkuOTU0IDQyLjg4NzcgMzY5Ljk1NCA5NS43OTI0QzM2OS45NTQgMTI5LjI5MiAzNTIuNzU4IDE1OC43NzYgMzI2LjcxMSAxNzUuODk3QzM1Mi43NTggMTkzLjAxOSAzNjkuOTU0IDIyMi41MDIgMzY5Ljk1NCAyNTYuMDAyQzM2OS45NTQgMzA4LjkwNyAzMjcuMDY2IDM1MS43OTUgMjc0LjE2MSAzNTEuNzk1SDI3Mi4wODFDMjQ3LjI3OSAzNTEuNzk1IDIyNC42NzggMzQyLjM2OSAyMDcuNjY2IDMyNi45MDRWNDE1LjE2N0MyMDcuNjY2IDQ2OC43NzcgMTYzLjY1NyA1MTIgMTEwLjMwOSA1MTJDNTcuNTM2MSA1MTIgMTQgNDY5LjI0MyAxNCA0MTYuMjA3QzE0IDM4Mi43MDkgMzEuMTk0NSAzNTMuMjI3IDU3LjIzOTIgMzM2LjEwNUMzMS4xOTQ1IDMxOC45ODMgMTQgMjg5LjUgMTQgMjU2LjAwMkMxNCAyMjIuNTAyIDMxLjE5NiAxOTMuMDE5IDU3LjI0MjUgMTc1Ljg5N0MzMS4xOTYgMTU4Ljc3NiAxNCAxMjkuMjkyIDE0IDk1Ljc5MjRaTTE3Ni4yODggMTkxLjU4N0gxMDkuNzkzQzc0LjIxNzIgMTkxLjU4NyA0NS4zNzc4IDIyMC40MjcgNDUuMzc3OCAyNTYuMDAyQzQ1LjM3NzggMjkxLjQ0IDczLjk5NDggMzIwLjE5NCAxMDkuMzgxIDMyMC40MTZDMTA5LjUxOCAzMjAuNDE1IDEwOS42NTUgMzIwLjQxNSAxMDkuNzkzIDMyMC40MTVIMTc2LjI4OFYxOTEuNTg3Wk0yMDcuNjY2IDI1Ni4wMDJDMjA3LjY2NiAyOTEuNTc3IDIzNi41MDUgMzIwLjQxNyAyNzIuMDgxIDMyMC40MTdIMjc0LjE2MUMzMDkuNzM3IDMyMC40MTcgMzM4LjU3NiAyOTEuNTc3IDMzOC41NzYgMjU2LjAwMkMzMzguNTc2IDIyMC40MjcgMzA5LjczNyAxOTEuNTg3IDI3NC4xNjEgMTkxLjU4N0gyNzIuMDgxQzIzNi41MDUgMTkxLjU4NyAyMDcuNjY2IDIyMC40MjcgMjA3LjY2NiAyNTYuMDAyWk0xMDkuNzkzIDM1MS43OTVDMTA5LjY1NSAzNTEuNzk1IDEwOS41MTggMzUxLjc5NCAxMDkuMzgxIDM1MS43OTRDNzMuOTk0OCAzNTIuMDE1IDQ1LjM3NzggMzgwLjc2OSA0NS4zNzc4IDQxNi4yMDdDNDUuMzc3OCA0NTEuNjUyIDc0LjYwMjUgNDgwLjYyMiAxMTAuMzA5IDQ4MC42MjJDMTQ2LjU5MSA0ODAuNjIyIDE3Ni4yODggNDUxLjE4NiAxNzYuMjg4IDQxNS4xNjdWMzUxLjc5NUgxMDkuNzkzWk0xMDkuNzkzIDMxLjM3NzhDNzQuMjE3MiAzMS4zNzc4IDQ1LjM3NzggNjAuMjE3MyA0NS4zNzc4IDk1Ljc5MjRDNDUuMzc3OCAxMzEuMzY4IDc0LjIxNzIgMTYwLjIwNyAxMDkuNzkzIDE2MC4yMDdIMTc2LjI4OFYzMS4zNzc4SDEwOS43OTNaTTIwNy42NjYgMTYwLjIwN0gyNzQuMTYxQzMwOS43MzcgMTYwLjIwNyAzMzguNTc2IDEzMS4zNjggMzM4LjU3NiA5NS43OTI0QzMzOC41NzYgNjAuMjE3MyAzMDkuNzM3IDMxLjM3NzggMjc0LjE2MSAzMS4zNzc4SDIwNy42NjZWMTYwLjIwN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyZWZveEJyb3dzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg5LjM3LDE1Mi44NlptLTU4Ljc0LTI5LjM3QzEzMC43OSwxMjMuNSwxMzAuNzEsMTIzLjUsMTMwLjYzLDEyMy40OVptMzUxLjQyLDQ1LjM1Yy0xMC42MS0yNS41LTMyLjA4LTUzLTQ4Ljk0LTYxLjczLDEzLjcyLDI2Ljg5LDIxLjY3LDUzLjg4LDI0LjcsNzQsMCwwLDAsLjE0LjA1LjQxLTI3LjU4LTY4Ljc1LTc0LjM1LTk2LjQ3LTExMi41NS0xNTYuODMtMS45My0zLjA1LTMuODYtNi4xMS01Ljc0LTkuMzMtMS0xLjY1LTEuODYtMy4zNC0yLjY5LTUuMDVBNDQuODgsNDQuODgsMCwwLDEsMzMzLjI0LjY5YS42My42MywwLDAsMC0uNTUtLjY2LjkuOSwwLDAsMC0uNDYsMGwtLjEyLjA3LS4xOC4xLjEtLjE0Yy01NC4yMywzMS43Ny03Ni43Miw4Ny4zOC04Mi41LDEyMi43OGExMzAsMTMwLDAsMCwwLTQ4LjMzLDEyLjMzLDYuMjUsNi4yNSwwLDAsMC0zLjA5LDcuNzUsNi4xMyw2LjEzLDAsMCwwLDcuNzksMy43OWwuNTItLjIxYTExNy44NCwxMTcuODQsMCwwLDEsNDIuMTEtMTFsMS40Mi0uMWMyLS4xMiw0LS4yLDYtLjIyQTEyMi42MSwxMjIuNjEsMCwwLDEsMjkxLDE0MGMuNjcuMiwxLjMyLjQyLDIsLjYzLDEuODkuNTcsMy43NiwxLjIsNS42MiwxLjg3LDEuMzYuNSwyLjcxLDEsNC4wNSwxLjU4LDEuMDkuNDQsMi4xOC44OCwzLjI1LDEuMzVxMi41MiwxLjEzLDUsMi4zNWMuNzUuMzcsMS41Ljc0LDIuMjUsMS4xM3EyLjQsMS4yNiw0Ljc0LDIuNjMsMS41MS44NywzLDEuOGExMjQuODksMTI0Ljg5LDAsMCwxLDQyLjY2LDQ0LjEzYy0xMy05LjE1LTM2LjM1LTE4LjE5LTU4LjgyLTE0LjI4LDg3Ljc0LDQzLjg2LDY0LjE4LDE5NC45LTU3LjM5LDE4OS4yYTEwOC40MywxMDguNDMsMCwwLDEtMzEuNzQtNi4xMmMtMi40Mi0uOTEtNC44LTEuODktNy4xNi0yLjkzLTEuMzgtLjYzLTIuNzYtMS4yNy00LjEyLTJDMTc0LjUsMzQ2LDE0OS45LDMxNi45MiwxNDYuODMsMjgxLjU5YzAsMCwxMS4yNS00MS45NSw4MC42Mi00MS45NSw3LjUsMCwyOC45My0yMC45MiwyOS4zMy0yNy0uMDktMi00Mi41NC0xOC44Ny01OS4wOS0zNS4xOC04Ljg1LTguNzEtMTMuMDUtMTIuOTEtMTYuNzctMTYuMDZhNjkuNTgsNjkuNTgsMCwwLDAtNi4zMS00Ljc3QTExMy4wNSwxMTMuMDUsMCwwLDEsMTczLjkyLDk3Yy0yNS4wNiwxMS40MS00NC41NSwyOS40NS01OC43MSw0NS4zN2gtLjEyYy05LjY3LTEyLjI1LTktNTIuNjUtOC40My02MS4wOC0uMTItLjUzLTcuMjIsMy42OC04LjE1LDQuMzFhMTc4LjU0LDE3OC41NCwwLDAsMC0yMy44NCwyMC40M0EyMTQsMjE0LDAsMCwwLDUxLjksMTMzLjM2bDAsMGEuMDguMDgsMCwwLDEsMCwwLDIwNS44NCwyMDUuODQsMCwwLDAtMzIuNzMsNzMuOWMtLjA2LjI3LTIuMzMsMTAuMjEtNCwyMi40OHEtLjQyLDIuODctLjc4LDUuNzRjLS41NywzLjY5LTEsNy43MS0xLjQ0LDE0LDAsLjI0LDAsLjQ4LS4wNS43Mi0uMTgsMi43MS0uMzQsNS40MS0uNDksOC4xMiwwLC40MSwwLC44MiwwLDEuMjQsMCwxMzQuNywxMDkuMjEsMjQzLjg5LDI0My45MiwyNDMuODksMTIwLjY0LDAsMjIwLjgyLTg3LjU4LDI0MC40My0yMDIuNjIuNDEtMy4xMi43NC02LjI2LDEuMTEtOS40MSw0Ljg1LTQxLjgzLS41NC04NS43OS0xNS44Mi0xMjIuNTVaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVmb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAzLjUyLDI0MS40OGMtLjEyLTEuNTYtLjI0LTMuMTItLjI0LTQuNjh2LS4xMmwtLjM2LTQuNjh2LS4xMmEyNDUuODYsMjQ1Ljg2LDAsMCwwLTcuMzItNDEuMTVjMC0uMTIsMC0uMTItLjEyLS4yNGwtMS4wOC00Yy0uMTItLjI0LS4xMi0uNDgtLjI0LS42LS4zNi0xLjItLjcyLTIuNTItMS4wOC0zLjcyLS4xMi0uMjQtLjEyLS42LS4yNC0uODQtLjM2LTEuMi0uNzItMi40LTEuMDgtMy40OC0uMTItLjM2LS4yNC0uNi0uMzYtMS0uMzYtMS4yLS43Mi0yLjI4LTEuMi0zLjQ4bC0uMzYtMS4wOGMtLjM2LTEuMDgtLjg0LTIuMjgtMS4yLTMuMzZhOC4yNyw4LjI3LDAsMCwwLS4zNi0xYy0uNDgtMS4wOC0uODQtMi4yOC0xLjMyLTMuMzYtLjEyLS4yNC0uMjQtLjYtLjM2LS44NC0uNDgtMS4yLTEtMi4yOC0xLjQ0LTMuNDgsMC0uMTItLjEyLS4yNC0uMTItLjM2LTEuNTYtMy44NC0zLjI0LTcuNjgtNS0xMS40bC0uMzYtLjcyYy0uNDgtMS0uODQtMS44LTEuMzItMi42NC0uMjQtLjQ4LS40OC0xLjA4LS43Mi0xLjU2LS4zNi0uODQtLjg0LTEuNTYtMS4yLTIuNC0uMzYtLjYtLjYtMS4yLTEtMS44cy0uODQtMS40NC0xLjItMi4yOGMtLjM2LS42LS43Mi0xLjMyLTEuMDgtMS45MnMtLjg0LTEuNDQtMS4yLTIuMTZhMTguMDcsMTguMDcsMCwwLDAtMS4yLTJjLS4zNi0uNzItLjg0LTEuMzItMS4yLTJzLS44NC0xLjMyLTEuMi0yLS44NC0xLjMyLTEuMi0xLjkyLS44NC0xLjQ0LTEuMzItMi4xNmExNS42MywxNS42MywwLDAsMC0xLjItMS44TDQ2My4yLDExOWExNS42MywxNS42MywwLDAsMC0xLjItMS44Yy0uNDgtLjcyLTEuMDgtMS41Ni0xLjU2LTIuMjgtLjM2LS40OC0uNzItMS4wOC0xLjA4LTEuNTZsLTEuOC0yLjUyYy0uMzYtLjQ4LS42LS44NC0xLTEuMzItMS0xLjMyLTEuOC0yLjUyLTIuNzYtMy43MmEyNDguNzYsMjQ4Ljc2LDAsMCwwLTIzLjUxLTI2LjY0QTE4Ni44MiwxODYuODIsMCwwLDAsNDEyLDYyLjQ2Yy00LTMuNDgtOC4xNi02LjcyLTEyLjQ4LTkuODRhMTYyLjQ5LDE2Mi40OSwwLDAsMC0yNC42LTE1LjEyYy0yLjQtMS4zMi00LjgtMi41Mi03LjItMy43MmEyNTQsMjU0LDAsMCwwLTU1LjQzLTE5LjU2Yy0xLjkyLS4zNi0zLjg0LS44NC01LjY0LTEuMmgtLjEyYy0xLS4xMi0xLjgtLjM2LTIuNzYtLjQ4YTIzNi4zNSwyMzYuMzUsMCwwLDAtMzgtNEgyNTUuMTRhMjM0LjYyLDIzNC42MiwwLDAsMC00NS40OCw1Yy0zMy41OSw3LjA4LTYzLjIzLDIxLjI0LTgyLjkxLDM5LTEuMDgsMS0xLjkyLDEuNjgtMi40LDIuMTZsLS40OC40OEgxMjRsLS4xMi4xMi4xMi0uMTJhLjEyLjEyLDAsMCwwLC4xMi0uMTJsLS4xMi4xMmEuNDIuNDIsMCwwLDEsLjI0LS4xMmMxNC42NC04Ljc2LDM0LjkyLTE2LDQ5LjQ0LTE5LjU2bDUuODgtMS40NGMuMzYtLjEyLjg0LS4xMiwxLjItLjI0LDEuNjgtLjM2LDMuMzYtLjcyLDUuMTYtMS4wOC4yNCwwLC42LS4xMi44NC0uMTJDMjUwLjk0LDIwLjk0LDMxOS4zNCw0MC4xNCwzNjcsODUuNjFhMTcxLjQ5LDE3MS40OSwwLDAsMSwyNi44OCwzMi43NmMzMC4zNiw0OS4yLDI3LjQ4LDExMS4xMSwzLjg0LDE0Ny41OS0zNC40NCw1My0xMTEuMzUsNzEuMjctMTU5LDI0Ljg0YTg0LjE5LDg0LjE5LDAsMCwxLTI1LjU2LTU5LDc0LjA1LDc0LjA1LDAsMCwxLDYuMjQtMzFjMS42OC0zLjg0LDEzLjA4LTI1LjY3LDE4LjI0LTI0LjU5LTEzLjA4LTIuNzYtMzcuNTUsMi42NC01NC43MSwyOC4xOS0xNS4zNiwyMi45Mi0xNC41Miw1OC4yLTUsODMuMjhhMTMyLjg1LDEzMi44NSwwLDAsMS0xMi4xMi0zOS4yNGMtMTIuMjQtODIuNTUsNDMuMzEtMTUzLDk0LjMxLTE3MC41MS0yNy40OC0yNC05Ni40Ny0yMi4zMS0xNDcuNzEsMTUuMzYtMjkuODgsMjItNTEuMjMsNTMuMTYtNjIuNTEsOTAuMzYsMS42OC0yMC44OCw5LjYtNTIuMDgsMjUuOC04My44OC0xNy4xNiw4Ljg4LTM5LDM3LTQ5LjgsNjIuODgtMTUuNiwzNy40My0yMSw4Mi4xOS0xNi4wOCwxMjQuNzkuMzYsMy4yNC43Miw2LjM2LDEuMDgsOS42LDE5LjkyLDExNy4xMSwxMjIsMjA2LjM4LDI0NC43OCwyMDYuMzhDMzkyLjc3LDUwMy40Miw1MDQsMzkyLjE5LDUwNCwyNTUsNTAzLjg4LDI1MC40OCw1MDMuNzYsMjQ1LjkyLDUwMy41MiwyNDEuNDhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0T3JkZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0ODguMjFDMTE1LjM0IDQ5Ni4yMSA3Ljc5IDM4OC42NiA3Ljc5IDI1NlMxMTUuMzQgMTUuNzkgMjQ4IDE1Ljc5IDQ4OC4yMSAxMjMuMzQgNDg4LjIxIDI1NiAzODAuNjYgNDk2LjIxIDI0OCA0OTYuMjF6bTAtNDU5LjkyQzEyNi42NiAzNi4yOSAyOC4yOSAxMzQuNjYgMjguMjkgMjU2UzEyNi42NiA0NzUuNzEgMjQ4IDQ3NS43MSA0NjcuNzEgMzc3LjM0IDQ2Ny43MSAyNTYgMzY5LjM0IDM2LjI5IDI0OCAzNi4yOXptMCA0MzEuMjJjLTExNi44MSAwLTIxMS41MS05NC42OS0yMTEuNTEtMjExLjUxUzEzMS4xOSA0NC40OSAyNDggNDQuNDkgNDU5LjUxIDEzOS4xOSA0NTkuNTEgMjU2IDM2NC44MSA0NjcuNTEgMjQ4IDQ2Ny41MXptMTg2LjIzLTE2Mi45OGExOTEuNjEzIDE5MS42MTMgMCAwIDEtMjAuMTMgNDguNjlsLTc0LjEzLTM1Ljg4IDYxLjQ4IDU0LjgyYTE5My41MTUgMTkzLjUxNSAwIDAgMS0zNy4yIDM3LjI5bC01NC44LTYxLjU3IDM1Ljg4IDc0LjI3YTE5MC45NDQgMTkwLjk0NCAwIDAgMS00OC42MyAyMC4yM2wtMjcuMjktNzguNDcgNC43OSA4Mi45M2MtOC42MSAxLjE4LTE3LjQgMS44LTI2LjMzIDEuOHMtMTcuNzItLjYyLTI2LjMzLTEuOGw0Ljc2LTgyLjQ2LTI3LjE1IDc4LjAzYTE5MS4zNjUgMTkxLjM2NSAwIDAgMS00OC42NS0yMC4ybDM1LjkzLTc0LjM0LTU0Ljg3IDYxLjY0YTE5My44NSAxOTMuODUgMCAwIDEtMzcuMjItMzcuMjhsNjEuNTktNTQuOS03NC4yNiAzNS45M2ExOTEuNjM4IDE5MS42MzggMCAwIDEtMjAuMTQtNDguNjlsNzcuODQtMjcuMTEtODIuMjMgNC43NmMtMS4xNi04LjU3LTEuNzgtMTcuMzItMS43OC0yNi4yMSAwLTkgLjYzLTE3Ljg0IDEuODItMjYuNTFsODIuMzggNC43Ny03Ny45NC0yNy4xNmExOTEuNzI2IDE5MS43MjYgMCAwIDEgMjAuMjMtNDguNjdsNzQuMjIgMzUuOTItNjEuNTItNTQuODZhMTkzLjg1IDE5My44NSAwIDAgMSAzNy4yOC0zNy4yMmw1NC43NiA2MS41My0zNS44My03NC4xN2ExOTEuNDkgMTkxLjQ5IDAgMCAxIDQ4LjY1LTIwLjEzbDI2Ljg3IDc3LjI1LTQuNzEtODEuNjFjOC42MS0xLjE4IDE3LjM5LTEuOCAyNi4zMi0xLjhzMTcuNzEuNjIgMjYuMzIgMS44bC00Ljc0IDgyLjE2IDI3LjA1LTc3Ljc2YzE3LjI3IDQuNSAzMy42IDExLjM1IDQ4LjYzIDIwLjE3bC0zNS44MiA3NC4xMiA1NC43Mi02MS40N2ExOTMuMTMgMTkzLjEzIDAgMCAxIDM3LjI0IDM3LjIzbC02MS40NSA1NC43NyA3NC4xMi0zNS44NmExOTEuNTE1IDE5MS41MTUgMCAwIDEgMjAuMiA0OC42NWwtNzcuODEgMjcuMSA4Mi4yNC00Ljc1YzEuMTkgOC42NiAxLjgyIDE3LjUgMS44MiAyNi40OSAwIDguODgtLjYxIDE3LjYzLTEuNzggMjYuMTlsLTgyLjEyLTQuNzUgNzcuNzIgMjcuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0T3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOSAyMjkuMmMuMS0uMS4yLS4zLjMtLjQgMCAuMSAwIC4zLS4xLjRoLS4yek0yMjQgOTYuNmMtNy4xIDAtMTQuNi42LTIxLjQgMS43bDMuNyA2Ny40LTIyLTY0Yy0xNC4zIDMuNy0yNy43IDkuNC00MCAxNi42bDI5LjQgNjEuNC00NS4xLTUwLjljLTExLjQgOC45LTIxLjcgMTkuMS0zMC42IDMwLjlsNTAuNiA0NS40LTYxLjEtMjkuN2MtNy4xIDEyLjMtMTIuOSAyNS43LTE2LjYgNDBsNjQuMyAyMi42LTY4LTRjLS45IDcuMS0xLjQgMTQuNi0xLjQgMjJzLjYgMTQuNiAxLjQgMjEuN2w2Ny43LTQtNjQgMjIuNmMzLjcgMTQuMyA5LjQgMjcuNyAxNi42IDQwLjNsNjEuMS0yOS43TDk3LjcgMzUyYzguOSAxMS43IDE5LjEgMjIuMyAzMC45IDMwLjlsNDQuOS01MC45LTI5LjUgNjEuNGMxMi4zIDcuNCAyNS43IDEzLjEgNDAgMTYuOWwyMi4zLTY0LjYtNCA2OGM3LjEgMS4xIDE0LjYgMS43IDIxLjcgMS43IDcuNCAwIDE0LjYtLjYgMjEuNy0xLjdsLTQtNjguNiAyMi42IDY1LjFjMTQuMy00IDI3LjctOS40IDQwLTE2LjlMMjc0LjkgMzMybDQ0LjkgNTAuOWMxMS43LTguOSAyMi0xOS4xIDMwLjYtMzAuOWwtNTAuNi00NS4xIDYxLjEgMjkuNGM3LjEtMTIuMyAxMi45LTI1LjcgMTYuNi00MC4zbC02NC0yMi4zIDY3LjQgNGMxLjEtNy4xIDEuNC0xNC4zIDEuNC0yMS43cy0uMy0xNC45LTEuNC0yMmwtNjcuNyA0IDY0LTIyLjNjLTMuNy0xNC4zLTkuMS0yOC0xNi42LTQwLjNsLTYwLjkgMjkuNyA1MC42LTQ1LjRjLTguOS0xMS43LTE5LjEtMjItMzAuNi0zMC45bC00NS4xIDUwLjkgMjkuNC02MS4xYy0xMi4zLTcuNC0yNS43LTEzLjEtNDAtMTYuOUwyNDEuNyAxNjZsNC02Ny43Yy03LjEtMS4yLTE0LjMtMS43LTIxLjctMS43ek00NDMuNCAxMjh2MjU2TDIyNCA1MTIgNC42IDM4NFYxMjhMMjI0IDBsMjE5LjQgMTI4em0tMTcuMSAxMC4zTDIyNCAyMC45IDIxLjcgMTM4LjN2MjM1LjFMMjI0IDQ5MS4xbDIwMi4zLTExNy43VjEzOC4zek0yMjQgMzcuMWwxODcuNyAxMDkuNHYyMTguOUwyMjQgNDc0LjkgMzYuMyAzNjUuNFYxNDYuNkwyMjQgMzcuMXptMCA1MC45Yy05Mi4zIDAtMTY2LjkgNzUuMS0xNjYuOSAxNjggMCA5Mi42IDc0LjYgMTY3LjcgMTY2LjkgMTY3LjcgOTIgMCAxNjYuOS03NS4xIDE2Ni45LTE2Ny43IDAtOTIuOS03NC45LTE2OC0xNjYuOS0xNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0ZHJhZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE5MmgtNjR2MTI4SDE5MnYxMjhIMHYtMjUuNmgxNjYuNHYtMTI4aDEyOHYtMTI4SDM4NFYxOTJ6bS0yNS42IDM4LjR2MTI4aC0xMjh2MTI4SDY0VjUxMmgxOTJWMzg0aDEyOFYyMzAuNGgtMjUuNnptMjUuNiAxOTJoLTg5LjZWNTEySDMyMHYtNjRoNjR2LTI1LjZ6TTAgMHYzODRoMTI4VjI1NmgxMjhWMTI4aDEyOFYwSDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsaWNrciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNDQuNSAzMTljLTM1LjEgMC02My41LTI4LjQtNjMuNS02My41czI4LjQtNjMuNSA2My41LTYzLjUgNjMuNSAyOC40IDYzLjUgNjMuNS0yOC40IDYzLjUtNjMuNSA2My41em0xNTkgMGMtMzUuMSAwLTYzLjUtMjguNC02My41LTYzLjVzMjguNC02My41IDYzLjUtNjMuNSA2My41IDI4LjQgNjMuNSA2My41LTI4LjQgNjMuNS02My41IDYzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMzU4LjQgMTc5LjJoLTg5LjZ2ODkuNmgtODkuNnY4OS42SDg5LjZWMTIxLjZoMjY4Ljh2ODkuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ny44IDQyNy44YzEyLjkgMTEuNyAzMy43IDMzLjMgMzMuMiA1MC43IDAgLjgtLjEgMS42LS4xIDIuNS0xLjggMTkuOC0xOC44IDMxLjEtMzkuMSAzMS0yNS0uMS0zOS45LTE2LjgtMzguNy0zNS44IDEtMTYuMiAyMC41LTM2LjcgMzIuNC00Ny42IDIuMy0yLjEgMi43LTIuNyA1LjYtMy42IDMuNCAwIDMuOS4zIDYuNyAyLjh6TTMzMS45IDY3LjNjLTE2LjMtMjUuNy0zOC42LTQwLjYtNjMuMy01Mi4xQzI0My4xIDQuNSAyMTQtLjIgMTkyIDBjLTQ0LjEgMC03MS4yIDEzLjItODEuMSAxNy4zQzU3LjMgNDUuMiAyNi41IDg3LjIgMjggMTU4LjZjNy4xIDgyLjIgOTcgMTc2IDE1NS44IDIzMy44IDEuNyAxLjYgNC41IDQuNSA2LjIgNS4xbDMuMy4xYzIuMS0uNyAxLjgtLjUgMy41LTIuMSA1Mi4zLTQ5LjIgMTQwLjctMTQ1LjggMTU1LjktMjE1LjcgNy0zOS4yIDMuMS03Mi41LTIwLjgtMTEyLjV6TTE4Ni44IDM1MS45Yy0yOC01MS4xLTY1LjItMTMwLjctNjkuMy0xODktMy40LTQ3LjUgMTEuNC0xMzEuMiA2OS4zLTEzNi43djMyNS43ek0zMjguNyAxODBjLTE2LjQgNTYuOC03Ny4zIDEyOC0xMTguOSAxNzAuM0MyMzcuNiAyOTguNCAyNzUgMjE3IDI3NyAxNTguNGMxLjYtNDUuOS05LjgtMTA1LjgtNDgtMTMxLjQgODguOCAxOC4zIDExNS41IDk4LjEgOTkuNyAxNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRBd2Vzb21lQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEE0OCA0OCAwIDAgMCAwIDgwVjQzMmE0OCA0OCAwIDAgMCA0OCA0OEg0MDBhNDggNDggMCAwIDAgNDgtNDhWODBBNDggNDggMCAwIDAgNDAwIDMyWm0xNiA0MDBhMTYgMTYgMCAwIDEtMTYgMTZINDhhMTYgMTYgMCAwIDEtMTYtMTZWODBBMTYgMTYgMCAwIDEgNDggNjRINDAwYTE2IDE2IDAgMCAxIDE2IDE2Wk0yMDEuNiAxNTJjLTI1LjQgMC0zNy40IDEwLjQtNTcuNiAxNC40VjE2MGExNiAxNiAwIDAgMC0zMiAwVjM1MmExNiAxNiAwIDAgMCAzMiAwVjE5OC40YzIwLjItNCAzMi4yLTE0LjQgNTcuNi0xNC40IDMxLjQgMCA0My4yIDE2IDc0LjYgMTYgMTAuMiAwIDE3LjgtMS40IDI3LjgtNC42djk2Yy0xMCAzLjItMTcuNiA0LjYtMjcuOCA0LjYtMzEuNCAwLTQzLjQtMTYtNzQuNi0xNmE4NS45IDg1LjkgMCAwIDAtMjUuNiA0djMyYTgwIDgwIDAgMCAxIDI1LjYtNGMzMS40IDAgNDMuMiAxNiA3NC42IDE2IDE4LjYgMCAyOC4yLTQuOCA1OS44LTE2VjE1MmMtMzEuNiAxMS4yLTQxLjIgMTYtNTkuOCAxNkMyNDQuOCAxNjggMjMyLjggMTUyIDIwMS42IDE1MlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9udEF3ZXNvbWVGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0OFYzODRjLTYzIDIzLTgyIDMyLTExOSAzMi02MyAwLTg3LTMyLTE1MC0zMi0yMCAwLTM2IDQtNTEgOFYzMjhjMTUtNCAzMS04IDUxLTggNjMgMCA4NyAzMiAxNTAgMzIgMjAgMCAzNS0zIDU1LTlWMTM1Yy0yMCA2LTM1IDktNTUgOS02MyAwLTg3LTMyLTE1MC0zMi01MSAwLTc1IDIxLTExNSAyOVY0NDhhMzEuNiAzMS42IDAgMCAxLTMyIDMyQTMxLjYgMzEuNiAwIDAgMSAwIDQ0OFY2NEEzMS42IDMxLjYgMCAwIDEgMzIgMzIgMzEuNiAzMS42IDAgMCAxIDY0IDY0Vjc3YzQwLTggNjQtMjkgMTE1LTI5IDYzIDAgODcgMzIgMTUwIDMyQzM2NiA4MCAzODUgNzEgNDQ4IDQ4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250QXdlc29tZUxvZ29GdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzOTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjA5LjcgMTU2LjVjLTU3LjggMC0xMDIgNDMuOS0xMDIgOTkuMSAwIDU2IDQ0LjYgOTkuMSAxMDIgOTkuMSA1Ny40IDAgMTAyLTQzLjEgMTAyLTk5LjFDMTMxMS43IDIwMC40IDEyNjcuNSAxNTYuNSAxMjA5LjcgMTU2LjVabTAgMTUyLjdjLTM1LjEgMC01MS44LTI3LjQtNTEuOC01My4yIDAtMjUuOCAxNi43LTUzLjIgNTEuOC01My4yIDM1LjEgMCA1MS44IDI3LjggNTEuOCA1My4yQzEyNjEuMSAyODEuOCAxMjQ0LjggMzA5LjIgMTIwOS43IDMwOS4yWm05NjIuMS0xMzYuMWMtNC40LTEwLjktMTIuMy0xNi41LTIzLjUtMTYuNXMtMTkuMSA1LjYtMjMuNSAxNi41bC01OS40IDE0NS44Yy03LjIgMTcuNyAyLjggMjcuNCA0LjQgMjlhMjQuNiAyNC42IDAgMCAwIDE3LjUgNi44YzEwLjggMCAxOC43LTYgMjMuMS0xOC4xbDQtMTAuMWg2Ny43bDQgMTAuMWM0LjggMTIuMSAxMi4zIDE4LjEgMjMuMSAxOC4xYTI0LjYgMjQuNiAwIDAgMCAxNy41LTYuOGMxMC0xMC4xIDYuOC0yMi42IDQuNC0yOVptLTQzIDExMy42IDE5LjEtNTYgMTkuMSA1NlptLTU3NC41LTEzMC4xYy0xNC4zIDAtMjQuNyAxMC45LTI0LjcgMjUuNHY3Ni41bC02OC41LTg1LjhjLTQuNC01LjYtMTEuNi0xNi4xLTI1LjUtMTYuMS0xOS4xIDAtMjQuMyAxNy43LTI0LjMgMjUuNFYzMjkuN2MwIDE0LjEgMTAuNCAyNS40IDI0LjcgMjUuNCAxNC4zIDAgMjQuNy0xMC45IDI0LjctMjUuNFYyNTIuOGw2OC45IDg2LjJjNC44IDUuNiAxMS42IDE2LjEgMjUuNSAxNi4xIDE5LjEgMCAyMy45LTE3LjMgMjMuOS0yNS40VjE4MS45QzE1NzkgMTY3LjQgMTU2OC42IDE1Ni41IDE1NTQuMyAxNTYuNVptLTU1NC4xIDEuNkg5MTYuNWMtMTkuOSAwLTI1LjEgMTcuMy0yNS4xIDI1LjRWMzI4LjFjMCAxOS43IDE2LjcgMjUuNCAyNC43IDI1LjQgOCAwIDI0LjctNS4yIDI0LjctMjUuNFYyODVoNDQuNmMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS41LTIyLjEtMjIuNy0yMi4xSDk0MC44VjIwMy42aDU5LjRjMTIuOCAwIDIyLjctOS4zIDIyLjctMjIuNkMxMDIyLjkgMTYzIDEwMDcuMyAxNTguMSAxMDAwLjIgMTU4LjFabTgxNS4xIDBIMTY5MS43Yy03LjIgMC0yMi43IDQuNC0yMi43IDIyLjIgMCAxMy4zIDEwIDIyLjYgMjIuNyAyMi42aDM3VjMyNy43YzAgMTQuMSAxMC40IDI1LjQgMjQuNyAyNS40IDE0LjMgMCAyNC43LTEwLjkgMjQuNy0yNS40VjIwMi44aDM3YzEyLjcgMCAyMi43LTkuMyAyMi43LTIyLjZDMTgzNy45IDE2MyAxODIyLjQgMTU4LjEgMTgxNS4yIDE1OC4xWm0xNzg5LjUtMS42Yy05LjYgMC0xNy41IDYtMjUuMSAxOC4xbC00Ni42IDc2LjFMMzQ4Ni40IDE3NC42cS0xMC44LTE4LjEtMjUuMS0xOC4xYy0xOS41IDAtMjQuNyAxOC4xLTI0LjcgMjUuOFYzMjkuN2MwIDE0LjEgMTAuNCAyNS40IDI0LjcgMjUuNHMyNC43LTEwLjkgMjQuNy0yNS40VjI2Mi44TDM1MTAuNyAzMDIuN2M2LjQgMTAuMSAxMy45IDE1LjMgMjIuMyAxNS4zIDguOCAwIDE1LjktNS4yIDIyLjMtMTUuM2wyNC43LTM5Ljl2NjYuOWMwIDE0LjEgMTAuMyAyNS40IDI0LjcgMjUuNCAxNC4zIDAgMjQuNy0xMC45IDI0LjctMjUuNFYxODIuM0MzNjI5LjQgMTc0LjIgMzYyNC42IDE1Ni41IDM2MDQuNyAxNTYuNVptMjQ4LjYgMTQ5LjhoLTY1LjdWMjcyLjloMzkuNGMxMS45IDAgMjEuMS04LjkgMjEuMS0yMC45IDAtMTIuMS05LjItMjAuOS0yMS4xLTIwLjloLTM5LjRWMjA0LjhoNjIuMWMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS42LTIyLjItMjIuNy0yMi4yaC04Ni40Yy0xOS45IDAtMjUuMSAxNy4zLTI1LjEgMjUuNFYzMjYuNWMwIDguMSA1LjIgMjUuNCAyNS4xIDI1LjRoOTBjMTIuOCAwIDIyLjctOS4zIDIyLjctMjIuNkMzODc2IDMxMS4yIDM4NjAuNSAzMDYuMyAzODUzLjMgMzA2LjNaTTMyMzUgMTU2LjVjLTU3LjggMC0xMDIgNDMuOS0xMDIgOTkuMSAwIDU2IDQ0LjYgOTkuMSAxMDIgOTkuMSA1Ny40IDAgMTAyLTQzLjEgMTAyLTk5LjFDMzMzNyAyMDAuNCAzMjkyLjggMTU2LjUgMzIzNSAxNTYuNVptMCAxNTIuN2MtMzUuMSAwLTUxLjgtMjcuNC01MS44LTUzLjIgMC0yNS44IDE2LjctNTMuMiA1MS44LTUzLjIgMzUuMSAwIDUxLjggMjcuOCA1MS44IDUzLjJDMzI4Ni44IDI4MS44IDMyNzAuMSAzMDkuMiAzMjM1IDMwOS4yWk0yNTUwLjIgMTU2LjVjLTExLjIgMC0xOS4xIDUuNi0yMy4xIDE2LjVsLTM0LjMgOTQuNy0zMS41LTkyLjJjLTQuNC0xMi41LTEyLjMtMTguOS0yNC4zLTE4LjktMTEuOSAwLTE5LjkgNi40LTI0LjMgMTguOWwtMzEuNSA5Mi4yLTM0LjMtOTUuNXEtNS40LTE1LjctMjIuNy0xNS43Yy02LjggMC0xMi4zIDIuNC0xNy41IDcuMy01LjIgNS4yLTEwLjggMTQuNS00LjggMjguNmw1NS44IDE0NS44YzQgMTEuMyAxMS42IDE2LjkgMjMuMSAxNi45cTE2LjcgMCAyMi43LTE2LjlsMzMuNS05MS44IDMzLjUgOTEuOHE2IDE2LjkgMjIuNyAxNi45YzExLjIgMCAxOS4xLTUuNiAyMy4xLTE2LjlsNTUuOC0xNDUuOGMzLjYtOS4zIDQuNC0xOS4zLTQuOC0yOC42QTIzIDIzIDAgMCAwIDI1NTAuMiAxNTYuNVptNDQ0LjIgODEtMjEuOS05LjNjLTExLjktNC44LTE2LjMtOC41LTE2LjMtMTUuN3EwLTEyLjEgMTYuNy0xMi4xYzEyLjcgMCAxOS41IDcuNyAyNC4zIDEwLjkgNy4yIDUuMiAxOC4zIDYuOCAyNy45LTIgMTAuOC0xMC41IDYuOC0yMy44IDEuMi0zMC42LTEyLjMtMTQuOS0zMC4zLTIyLjItNTMuOC0yMi4yLTE5LjEgMC0zNS4xIDUuMi00Ny40IDE1LjctMTIuMyAxMC41LTE4LjcgMjQuMi0xOC43IDQxLjEgMCAyNC4yIDE1LjkgNDMuNSA0Ny44IDU3LjZsMTkuNSA4LjljMTUuOSA2LjggMTkuMSA5LjcgMTkuMSAxNy43IDAgOS4zLTYuNCAxNC4xLTE5LjUgMTQuMS0xOS4xIDAtMzQuNy0xNC45LTM2LjMtMTYuMS0xMC44LTcuMy0yMS41LTItMjYuMyAyLjgtNi44IDYuNC0xMi43IDIwLjkgMy4yIDM2LjIgNi44IDYuNCAxNS41IDExLjcgMjYuNyAxNS4zYTk0LjYgOTQuNiAwIDAgMCAzMi43IDUuNmMxOS45IDAgMzYuNy01LjIgNDkuOC0xNi4xIDEzLjEtMTAuOSAxOS41LTI1LjQgMTkuNS00My41cTAtMjAuNS0xMi0zMy44QzMwMjIuNyAyNTMuMiAzMDEwLjcgMjQ0LjMgMjk5NC40IDIzNy41Wm0tMjA2LjQgNjguOWgtNjUuN1YyNzIuOWgzOS40YzEyIDAgMjEuMS04LjkgMjEuMS0yMC45IDAtMTIuMS05LjItMjAuOS0yMS4xLTIwLjloLTM5LjRWMjA0LjhoNjIuMWMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS41LTIyLjItMjIuNy0yMi4yaC04Ni40Yy0xOS45IDAtMjUuMSAxNy4zLTI1LjEgMjUuNFYzMjYuNWMwIDguMSA1LjIgMjUuNCAyNS4xIDI1LjRoOTBjMTIuNyAwIDIyLjctOS4zIDIyLjctMjIuNkMyODEwLjggMzExLjIgMjc5NS4yIDMwNi4zIDI3ODggMzA2LjNaTTE3OC4zIDQ5LjFjLTUwLjUgMC03NC40IDIwLjctMTE0LjYgMjguN1Y2NUEzMS44IDMxLjggMCAxIDAgMCA2NVY0NDdhMzEuOCAzMS44IDAgMCAwIDYzLjcgMFYxNDEuNGM0MC4yLTggNjQuMS0yOC43IDExNC42LTI4LjcgNjIuNSAwIDg2IDMxLjggMTQ4LjQgMzEuOCAyMC4zIDAgMzUuNC0yLjggNTUuMy05LjJ2MTkxYy0xOS45IDYuNC0zNSA5LjItNTUuMyA5LjItNjIuNSAwLTg2LjQtMzEuOC0xNDguNC0zMS44LTIwLjMgMC0zNi4yIDMuNi01MC45IDhWMzc1LjRhMTU5LjEgMTU5LjEgMCAwIDEgNTAuOS04YzYyLjUgMCA4NiAzMS44IDE0OC40IDMxLjggMzcgMCA1Ni4xLTkuNiAxMTktMzEuOFY0OS4xQzM4Mi44IDcxLjQgMzYzLjcgODAuOSAzMjYuNyA4MC45IDI2NC4yIDgwLjkgMjQwLjQgNDkuMSAxNzguMyA0OS4xWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250QXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhBNDggNDggMCAwIDAgMCA4MFY0MzJhNDggNDggMCAwIDAgNDggNDhINDAwYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjgwQTQ4IDQ4IDAgMCAwIDQwMCAzMlpNMzM2IDMxMmMtMzEuNiAxMS4yLTQxLjIgMTYtNTkuOCAxNi0zMS40IDAtNDMuMi0xNi03NC42LTE2YTgwIDgwIDAgMCAwLTI1LjYgNFYyODRhODUuOSA4NS45IDAgMCAxIDI1LjYtNGMzMS4yIDAgNDMuMiAxNiA3NC42IDE2IDEwLjIgMCAxNy44LTEuNCAyNy44LTQuNnYtOTZjLTEwIDMuMi0xNy42IDQuNi0yNy44IDQuNi0zMS40IDAtNDMuMi0xNi03NC42LTE2LTI1LjQgMC0zNy40IDEwLjQtNTcuNiAxNC40VjM1MmExNiAxNiAwIDAgMS0zMiAwVjE2MGExNiAxNiAwIDAgMSAzMiAwdjYuNGMyMC4yLTQgMzIuMi0xNC40IDU3LjYtMTQuNCAzMS4yIDAgNDMuMiAxNiA3NC42IDE2IDE4LjYgMCAyOC4yLTQuOCA1OS44LTE2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnNGaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQuNCAyMjRoOTIuNGwtMTUuMiA1MS4yaC03Ni40VjQzM2MwIDgtMi44IDkuMiA0LjQgMTBsNTkuNiA1LjZWNDgzSDB2LTM1LjJsMjkuMi0yLjhjNy4yLS44IDkuMi0zLjIgOS4yLTEwLjhWMjc4LjRjMC0zLjItNC0zLjItOC0zLjJIMFYyMjRoMzguNHYtMjguOGMwLTY4IDM2LjQtOTYgMTA2LTk2IDQ2LjggMCA4OC44IDExLjIgODguOCA3Mi40bC02OS42IDguNGMuNC0yNS42LTYtMzEuNi0yMi40LTMxLjYtMjUuMiAwLTI2IDEzLjYtMjYgMzcuNnYzMmMwIDMuMi00LjggNi0uOCA2ek0zODQgNDgzSDI0My4ydi0zNC40bDI4LTMuNmM3LjItLjggMTAuNC0yLjQgMTAuNC0xMFYyODdjMC01LjYtNC05LjItOS4yLTEwLjhsLTMzLjItOC44IDkuMi00MC40aDExMHYyMDhjMCA4LTMuNiA4LjggNCAxMGwyMS42IDMuNlY0ODN6bS0zMC0zNDcuMmwxMi40IDQ1LjYtMTAgMTAtNDIuOC0yMi44LTQyLjggMjIuOC0xMC0xMCAxMi40LTQ1LjYtMzAtMzYuNCA0LjgtMTBoMzhMMzA3LjIgNTFIMzIwbDIxLjIgMzguNGgzOGw0LjggMTMuMi0zMCAzMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMyem0xODcgMTQwLjljLTE4LjQgMC0xOSA5LjktMTkgMjcuNHYyMy4zYzAgMi40LTMuNSA0LjQtLjYgNC40aDY3LjRsLTExLjEgMzcuM0gxNjh2MTEyLjljMCA1LjgtMiA2LjcgMy4yIDcuM2w0My41IDQuMXYyNS4xSDg0VjM4OWwyMS4zLTJjNS4yLS42IDYuNy0yLjMgNi43LTcuOVYyNjcuN2MwLTIuMy0yLjktMi4zLTUuOC0yLjNIODRWMjI4aDI4di0yMWMwLTQ5LjYgMjYuNS03MCA3Ny4zLTcwIDM0LjEgMCA2NC43IDguMiA2NC43IDUyLjhsLTUwLjcgNi4xYy4zLTE4LjctNC40LTIzLTE2LjMtMjN6bTc0LjMgMjQxLjh2LTI1LjFsMjAuNC0yLjZjNS4yLS42IDcuNi0xLjcgNy42LTcuM1YyNzEuOGMwLTQuMS0yLjktNi43LTYuNy03LjlsLTI0LjItNi40IDYuNy0yOS41aDgwLjJ2MTUxLjdjMCA1LjgtMi42IDYuNCAyLjkgNy4zbDE1LjcgMi42djI1LjF6bTgwLjgtMjU1LjVsOSAzMy4yLTcuMyA3LjMtMzEuMi0xNi42LTMxLjIgMTYuNi03LjMtNy4zIDktMzMuMi0yMS44LTI0LjIgMy41LTkuNmgyNy43bDE1LjUtMjhoOS4zbDE1LjUgMjhoMjcuN2wzLjUgOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J0QXdlc29tZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMjM3LjRoLTIyLjJjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN0gyMDhjMi4xIDAgMy43LTEuNiAzLjctMy43di01MS43YzAtMi4xLTEuNi0zLjctMy43LTMuN3ptMTE4LjIgMEgzMDRjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN2gyMi4yYzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtNTEuN2MtLjEtMi4xLTEuNy0zLjctMy43LTMuN3ptMTMyLTEyNS4xYy0yLjMtMy4yLTQuNi02LjQtNy4xLTkuNS05LjgtMTIuNS0yMC44LTI0LTMyLjgtMzQuNC00LjUtMy45LTkuMS03LjYtMTMuOS0xMS4yLTEuNi0xLjItMy4yLTIuMy00LjgtMy41QzM3MiAzNC4xIDM0MC4zIDIwIDMwNiAxM2MtMTYuMi0zLjMtMzIuOS01LTUwLTVzLTMzLjkgMS43LTUwIDVjLTM0LjMgNy4xLTY2IDIxLjItOTMuMyA0MC44LTEuNiAxLjEtMy4yIDIuMy00LjggMy41LTQuOCAzLjYtOS40IDcuMy0xMy45IDExLjItMyAyLjYtNS45IDUuMy04LjggOHMtNS43IDUuNS04LjQgOC40Yy01LjUgNS43LTEwLjcgMTEuOC0xNS42IDE4LTIuNCAzLjEtNC44IDYuMy03LjEgOS41QzI1LjIgMTUzIDguMyAyMDIuNSA4LjMgMjU2YzAgMiAuMSA0IC4xIDYgLjEuNy4xIDEuMy4xIDIgLjEgMS4zLjEgMi43LjIgNCAwIC44LjEgMS41LjEgMi4zIDAgMS4zLjEgMi41LjIgMy43LjEuOC4xIDEuNi4yIDIuNC4xIDEuMS4yIDIuMy4zIDMuNSAwIC44LjEgMS42LjIgMi40LjEgMS4yLjMgMi40LjQgMy42LjEuOC4yIDEuNS4zIDIuMy4xIDEuMy4zIDIuNi41IDMuOS4xLjYuMiAxLjMuMyAxLjlsLjkgNS43Yy4xLjYuMiAxLjEuMyAxLjcuMyAxLjMuNSAyLjcuOCA0IC4yLjguMyAxLjYuNSAyLjQuMiAxIC41IDIuMS43IDMuMi4yLjkuNCAxLjcuNiAyLjYuMiAxIC40IDIgLjcgMyAuMi45LjUgMS44LjcgMi43LjMgMSAuNSAxLjkuOCAyLjkuMy45LjUgMS44LjggMi43LjIuOS41IDEuOS44IDIuOHMuNSAxLjguOCAyLjdjLjMgMSAuNiAxLjkuOSAyLjguNiAxLjYgMS4xIDMuMyAxLjcgNC45LjQgMSAuNyAxLjkgMSAyLjguMyAxIC43IDIgMS4xIDMgLjMuOC42IDEuNS45IDIuM2wxLjIgM2MuMy43LjYgMS41LjkgMi4yLjQgMSAuOSAyIDEuMyAzbC45IDIuMWMuNSAxIC45IDIgMS40IDMgLjMuNy42IDEuMy45IDIgLjUgMSAxIDIuMSAxLjUgMy4xLjIuNi41IDEuMS44IDEuNy42IDEuMSAxLjEgMi4yIDEuNyAzLjMuMS4yLjIuMy4zLjUgMi4yIDQuMSA0LjQgOC4yIDYuOCAxMi4yLjIuNC41LjguNyAxLjIuNyAxLjEgMS4zIDIuMiAyIDMuMy4zLjUuNi45LjkgMS40LjYgMS4xIDEuMyAyLjEgMiAzLjIuMy41LjYuOS45IDEuNC43IDEuMSAxLjQgMi4xIDIuMSAzLjIuMi40LjUuOC44IDEuMi43IDEuMSAxLjUgMi4yIDIuMyAzLjMuMi4yLjMuNS41LjcgMzcuNSA1MS43IDk0LjQgODguNSAxNjAgOTkuNC45LjEgMS43LjMgMi42LjQgMSAuMiAyLjEuNCAzLjEuNXMxLjkuMyAyLjguNGMxIC4yIDIgLjMgMyAuNC45LjEgMS45LjIgMi45LjNzMS45LjIgMi45LjMgMi4xLjIgMy4xLjNjLjkuMSAxLjguMSAyLjcuMiAxLjEuMSAyLjMuMSAzLjQuMi44IDAgMS43LjEgMi41LjEgMS4zIDAgMi42LjEgMy45LjEuNy4xIDEuNC4xIDIuMS4xIDIgLjEgNCAuMSA2IC4xczQtLjEgNi0uMWMuNyAwIDEuNC0uMSAyLjEtLjEgMS4zIDAgMi42IDAgMy45LS4xLjggMCAxLjctLjEgMi41LS4xIDEuMS0uMSAyLjMtLjEgMy40LS4yLjkgMCAxLjgtLjEgMi43LS4yIDEtLjEgMi4xLS4yIDMuMS0uM3MxLjktLjIgMi45LS4zYy45LS4xIDEuOS0uMiAyLjktLjNzMi0uMyAzLS40IDEuOS0uMyAyLjgtLjRjMS0uMiAyLjEtLjMgMy4xLS41LjktLjEgMS43LS4zIDIuNi0uNCA2NS42LTExIDEyMi41LTQ3LjcgMTYwLjEtMTAyLjQuMi0uMi4zLS41LjUtLjcuOC0xLjEgMS41LTIuMiAyLjMtMy4zLjItLjQuNS0uOC44LTEuMi43LTEuMSAxLjQtMi4xIDIuMS0zLjIuMy0uNS42LS45LjktMS40LjYtMS4xIDEuMy0yLjEgMi0zLjIuMy0uNS42LS45LjktMS40LjctMS4xIDEuMy0yLjIgMi0zLjMuMi0uNC41LS44LjctMS4yIDIuNC00IDQuNi04LjEgNi44LTEyLjIuMS0uMi4yLS4zLjMtLjUuNi0xLjEgMS4xLTIuMiAxLjctMy4zLjItLjYuNS0xLjEuOC0xLjcuNS0xIDEtMi4xIDEuNS0zLjEuMy0uNy42LTEuMy45LTIgLjUtMSAxLTIgMS40LTNsLjktMi4xYy41LTEgLjktMiAxLjMtMyAuMy0uNy42LTEuNS45LTIuMmwxLjItM2MuMy0uOC42LTEuNS45LTIuMy40LTEgLjctMiAxLjEtM3MuNy0xLjkgMS0yLjhjLjYtMS42IDEuMi0zLjMgMS43LTQuOS4zLTEgLjYtMS45LjktMi44cy41LTEuOC44LTIuN2MuMi0uOS41LTEuOS44LTIuOHMuNi0xLjguOC0yLjdjLjMtMSAuNS0xLjkuOC0yLjkuMi0uOS41LTEuOC43LTIuNy4yLTEgLjUtMiAuNy0zIC4yLS45LjQtMS43LjYtMi42LjItMSAuNS0yLjEuNy0zLjIuMi0uOC4zLTEuNi41LTIuNC4zLTEuMy42LTIuNy44LTQgLjEtLjYuMi0xLjEuMy0xLjdsLjktNS43Yy4xLS42LjItMS4zLjMtMS45LjEtMS4zLjMtMi42LjUtMy45LjEtLjguMi0xLjUuMy0yLjMuMS0xLjIuMy0yLjQuNC0zLjYgMC0uOC4xLTEuNi4yLTIuNC4xLTEuMS4yLTIuMy4zLTMuNS4xLS44LjEtMS42LjItMi40LjEgMS43LjEuNS4yLS43IDAtLjguMS0xLjUuMS0yLjMuMS0xLjMuMi0yLjcuMi00IC4xLS43LjEtMS4zLjEtMiAuMS0yIC4xLTQgLjEtNiAwLTUzLjUtMTYuOS0xMDMtNDUuOC0xNDMuN3pNNDQ4IDM3MS41Yy05LjQgMTUuNS0yMC42IDI5LjktMzMuNiA0Mi45LTIwLjYgMjAuNi00NC41IDM2LjctNzEuMiA0OC0xMy45IDUuOC0yOC4yIDEwLjMtNDIuOSAxMy4ydi03NS44YzAtNTguNi04OC42LTU4LjYtODguNiAwdjc1LjhjLTE0LjctMi45LTI5LTcuMy00Mi45LTEzLjItMjYuNy0xMS4zLTUwLjYtMjcuNC03MS4yLTQ4LTEzLTEzLTI0LjItMjcuNC0zMy42LTQyLjl2LTcxLjNjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjFjMi4xIDAgMy43IDEuNiAzLjcgMy43VjMyNmgyOS42VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMWMyLjEgMCAzLjcgMS42IDMuNyAzLjd2MjUuOWgyOS41VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdIMjA4YzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtNC44IDYuNS0zLjcgOS41LTMuN1Y4OC4xYy00LjQtMi03LjQtNi43LTcuNC0xMS41IDAtMTYuOCAyNS40LTE2LjggMjUuNCAwIDAgNC44LTMgOS40LTcuNCAxMS41VjkyYzYuMy0xLjQgMTIuNy0yLjMgMTkuMi0yLjMgOS40IDAgMTguNCAzLjUgMjYuMyAzLjUgNy4yIDAgMTUuMi0zLjUgMTkuNC0zLjUgMi4xIDAgMy43IDEuNiAzLjcgMy43djQ4LjRjMCA1LjYtMTguNyA2LjUtMjIuNCA2LjUtOC42IDAtMTYuNi0zLjUtMjUuNC0zLjUtNyAwLTE0LjEgMS4yLTIwLjggMi44djMwLjdjMyAwIDkuNS0xLjEgOS41IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4yYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4xYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YxNDRoMjkuNXYtMjUuOGMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMmMyLjEgMCAzLjcgMS42IDMuNyAzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OS4yIDI4Ny45aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMyaC0zNi42VjE0Ni4yYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtNi04LTQuNi0xMS43LTQuNnYtMzhjOC4zLTIgMTcuMS0zLjQgMjUuNy0zLjQgMTAuOSAwIDIwLjkgNC4zIDMxLjQgNC4zIDQuNiAwIDI3LjctMS4xIDI3LjctOHYtNjBjMC0yLjYtMi00LjYtNC42LTQuNi01LjEgMC0xNS4xIDQuMy0yNCA0LjMtOS43IDAtMjAuOS00LjMtMzIuNi00LjMtOCAwLTE2IDEuMS0yMy43IDIuOXYtNC45YzUuNC0yLjYgOS4xLTguMyA5LjEtMTQuMyAwLTIwLjctMzEuNC0yMC44LTMxLjQgMCAwIDYgMy43IDExLjcgOS4xIDE0LjN2MTExLjdjLTMuNyAwLTExLjctMS40LTExLjcgNC42djMyaC0zNi42di0zMmMwLTIuNi0yLTQuNi00LjYtNC42aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMySDEyOHYtMzJjMC0yLjYtMi00LjYtNC42LTQuNkg5NmMtMi42IDAtNC42IDItNC42IDQuNnYxNzguM0g1NC44di0zMmMwLTIuNi0yLTQuNi00LjYtNC42SDIyLjhjLTIuNiAwLTQuNiAyLTQuNiA0LjZWNTEyaDE4Mi45di05NmMwLTcyLjYgMTA5LjctNzIuNiAxMDkuNyAwdjk2aDE4Mi45VjI5Mi41Yy4xLTIuNi0xLjktNC42LTQuNS00LjZ6bS0yODguMS00LjVjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6bTE0Ni40IDBjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnVtYmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuOCAzMDkuN0MyIDI5Mi43IDAgMjc1LjUgMCAyNTguMyAwIDEzNSA5OS44IDM1IDIyMy4xIDM1YzE2LjYgMCAzMy4zIDIgNDkuMyA1LjVDMTQ5IDg3LjUgNTEuOSAxODYgNS44IDMwOS43em0zOTIuOS0xODkuMkMzODUgMTAzIDM2OSA4Ny44IDM1MC45IDc1LjJjLTE0OS42IDQ0LjMtMjY2LjMgMTYyLjEtMzA5LjcgMzEyIDEyLjUgMTguMSAyOCAzNS42IDQ1LjIgNDkgNDMuMS0xNTEuMyAxNjEuMi0yNzEuNyAzMTIuMy0zMTUuN3ptMTUuOCAyNTIuN2MxNS4yLTI1LjEgMjUuNC01My43IDI5LjUtODIuOC03OS40IDQyLjktMTQ1IDExMC42LTE4Ny42IDE5MC4zIDMwLTQuNCA1OC45LTE1LjMgODQuNi0zMS4zIDM1IDEzLjEgNzAuOSAyNC4zIDEwNyAzMy42LTkuMy0zNi41LTIwLjQtNzQuNS0zMy41LTEwOS44em0yOS43LTE0NS41Yy0yLjYtMTkuNS03LjktMzguNy0xNS44LTU2LjhDMjkwLjUgMjE2LjcgMTgyIDMyNy41IDEzNy4xIDQ2NmMxOC4xIDcuNiAzNyAxMi41IDU2LjYgMTUuMkMyNDAgMzY3LjEgMzMwLjUgMjc0LjQgNDQ0LjIgMjI3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvdXJzcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM2OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzLjEgM0g0OS45QzEyLjQgMyAwIDMxLjMgMCA0OS4xdjQzMy44YzAgMjAuMyAxMi4xIDI3LjcgMTguMiAzMC4xIDYuMiAyLjUgMjIuOCA0LjYgMzIuOS03LjFDMTgwIDM1Ni41IDE4Mi4yIDM1NCAxODIuMiAzNTRjMy4xLTMuNCAzLjQtMy4xIDYuOC0zLjFoODMuNGMzNS4xIDAgNDAuNi0yNS4yIDQ0LjMtMzkuN2w0OC42LTI0M0MzNzMuOCAyNS44IDM2My4xIDMgMzIzLjEgM3ptLTE2LjMgNzMuOGwtMTEuNCA1OS43Yy0xLjIgNi41LTkuNSAxMy4yLTE2LjkgMTMuMkgxNzIuMWMtMTIgMC0yMC42IDguMy0yMC42IDIwLjN2MTNjMCAxMiA4LjYgMjAuNiAyMC42IDIwLjZoOTAuNGM4LjMgMCAxNi42IDkuMiAxNC44IDE4LjItMS44IDguOS0xMC41IDUzLjgtMTEuNCA1OC44LS45IDQuOS02LjggMTMuNS0xNi45IDEzLjVoLTczLjVjLTEzLjUgMC0xNy4yIDEuOC0yNi41IDEyLjYgMCAwLTguOSAxMS40LTg5LjUgMTA4LjMtLjkuOS0xLjguNi0xLjgtLjNWNzUuOWMwLTcuNyA2LjgtMTYuNiAxNi42LTE2LjZoMjE5YzguMiAwIDE1LjYgNy43IDEzLjUgMTcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJlZUNvZGVDYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk3LjIyLDk2LjIxYzEwLjM2LTEwLjY1LDE2LTE3LjEyLDE2LTIxLjksMC0yLjc2LTEuOTItNS41MS0zLjgzLTcuNDJBMTQuODEsMTQuODEsMCwwLDAsMTAxLDY0LjA1Yy04LjQ4LDAtMjAuOTIsOC43OS0zNS44NCwyNS42OUMyMy42OCwxMzcsMi41MSwxODIuODEsMy4zNywyNTAuMzRzMTcuNDcsMTE3LDU0LjA2LDE2MS44N0M3Ni4yMiw0MzUuODYsOTAuNjIsNDQ4LDEwMC45LDQ0OGExMy41NSwxMy41NSwwLDAsMCw4LjM3LTMuODRjMS45MS0yLjc2LDMuODEtNS42MywzLjgxLTguMzgsMC01LjYzLTMuODYtMTIuMi0xMy4yLTIwLjU1LTQ0LjQ1LTQyLjMzLTY3LjMyLTk3LTY3LjQ4LTE2NUMzMi4yNSwxODguOCw1NCwxMzcuODMsOTcuMjIsOTYuMjFaTTIzOS40Nyw0MjAuMDdjLjU4LjM3LjkxLjU1LjkxLjU1Wm05My43OS41NS4xNy0uMTNDMzMzLjI0LDQyMC42MiwzMzMuMTcsNDIwLjY3LDMzMy4yNiw0MjAuNjJabTMuMTMtMTU4LjE4Yy0xNi4yNC00LjE1LDUwLjQxLTgyLjg5LTY4LjA1LTE3Ny4xNywwLDAsMTUuNTQsNDkuMzgtNjIuODMsMTU5LjU3LTc0LjI3LDEwNC4zNSwyMy40NiwxNjguNzMsMzQsMTc1LjIzLTYuNzMtNC4zNS00Ny40LTM1LjcsOS41NS0xMjguNjQsMTEtMTguMywyNS41My0zNC44Nyw0My41LTcyLjE2LDAsMCwxNS45MSwyMi40NSw3LjYsNzEuMTNDMjg3LjcsMzY0LDM1NCwzNDIuOTEsMzU1LDM0My45NGMyMi43NSwyNi43OC0xNy43Miw3My41MS0yMS41OCw3Ni41NSw1LjQ5LTMuNjUsMTE3LjcxLTc4LDMzLTE4OC4xQzM2MC40MywyMzguNCwzNTIuNjIsMjY2LjU5LDMzNi4zOSwyNjIuNDRaTTUxMC44OCw4OS42OUM0OTYsNzIuNzksNDgzLjUyLDY0LDQ3NSw2NGExNC44MSwxNC44MSwwLDAsMC04LjM5LDIuODRjLTEuOTEsMS45MS0zLjgzLDQuNjYtMy44Myw3LjQyLDAsNC43OCw1LjYsMTEuMjYsMTYsMjEuOSw0My4yMyw0MS42MSw2NSw5Mi41OSw2NC44MiwxNTQuMDYtLjE2LDY4LTIzLDEyMi42My02Ny40OCwxNjUtOS4zNCw4LjM1LTEzLjE4LDE0LjkyLTEzLjIsMjAuNTUsMCwyLjc1LDEuOSw1LjYyLDMuODEsOC4zOEExMy42MSwxMy42MSwwLDAsMCw0NzUuMSw0NDhjMTAuMjgsMCwyNC42OC0xMi4xMyw0My40Ny0zNS43OSwzNi41OS00NC44NSw1My4xNC05NC4zOCw1NC4wNi0xNjEuODdTNTUyLjMyLDEzNyw1MTAuODgsODkuNjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyZWVic2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAzLjcgOTYuMmMxMS4xLTExLjEgMTE1LjUtNzcgMTM5LjItNTMuMiAyMy43IDIzLjctNDIuMSAxMjguMS01My4yIDEzOS4yLTExLjEgMTEuMS0zOS40LjktNjMuMS0yMi45LTIzLjgtMjMuNy0zNC4xLTUyLTIyLjktNjMuMXpNMTA5LjkgNjguMUM3My42IDQ3LjUgMjIgMjQuNiA1LjYgNDEuMWMtMTYuNiAxNi42IDcuMSA2OS40IDI3LjkgMTA1LjcgMTguNS0zMi4yIDQ0LjgtNTkuMyA3Ni40LTc4Ljd6TTQwNi43IDE3NGMzLjMgMTEuMyAyLjcgMjAuNy0yLjcgMjYuMS0yMC4zIDIwLjMtODcuNS0yNy0xMDkuMy03MC4xLTE4LTMyLjMtMTEuMS01My40IDE0LjktNDguNyA1LjctMy42IDEyLjMtNy42IDE5LjYtMTEuNi0yOS44LTE1LjUtNjMuNi0yNC4zLTk5LjUtMjQuMy0xMTkuMSAwLTIxNS42IDk2LjUtMjE1LjYgMjE1LjYgMCAxMTkgOTYuNSAyMTUuNiAyMTUuNiAyMTUuNlM0NDUuMyAzODAuMSA0NDUuMyAyNjFjMC0zOC40LTEwLjEtNzQuNS0yNy43LTEwNS44LTMuOSA3LTcuNiAxMy4zLTEwLjkgMTguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnVsY3J1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NS43NSAxNjQuMTRsLTM1LjM4IDQzLjU1TDI1IDE2NC4xNGwzNS4zOC00My41NXpNMTQ0LjIzIDBsLTIwLjU0IDE5OC4xOEw3Mi43MiAyNTZsNTEgNTcuODJMMTQ0LjIzIDUxMlYzMDAuODlMMTAzLjE1IDI1Nmw0MS4wOC00NC44OXptNzkuNjcgMTY0LjE0bDM1LjM4IDQzLjU1IDM1LjM4LTQzLjU1LTM1LjM4LTQzLjU1em0tNDguNDggNDdMMjE2LjUgMjU2bC00MS4wOCA0NC44OVY1MTJMMTk2IDMxMy44MiAyNDcgMjU2bC01MS01Ny44MkwxNzUuNDIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FsYWN0aWNSZXB1YmxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNTA0QzExMS4yNSA1MDQgMCAzOTIuNzUgMCAyNTZTMTExLjI1IDggMjQ4IDhzMjQ4IDExMS4yNSAyNDggMjQ4LTExMS4yNSAyNDgtMjQ4IDI0OHptMC00NzkuNDdDMTIwLjM3IDI0LjUzIDE2LjUzIDEyOC4zNyAxNi41MyAyNTZTMTIwLjM3IDQ4Ny40NyAyNDggNDg3LjQ3IDQ3OS40NyAzODMuNjMgNDc5LjQ3IDI1NiAzNzUuNjMgMjQuNTMgMjQ4IDI0LjUzem0yNy42MiAyMS44MXYyNC42MmExODUuOTMzIDE4NS45MzMgMCAwIDEgODMuNTcgMzQuNTRsMTcuMzktMTcuMzZjLTI4Ljc1LTIyLjA2LTYzLjMtMzYuODktMTAwLjk2LTQxLjh6bS01NS4zNy4wN2MtMzcuNjQgNC45NC03Mi4xNiAxOS44LTEwMC44OCA0MS44NWwxNy4yOCAxNy4zNmguMDhjMjQuMDctMTcuODQgNTIuNTUtMzAuMDYgODMuNTItMzQuNjdWNDYuNDF6bTEyLjI1IDUwLjE3djgyLjg3Yy0xMC4wNCAyLjAzLTE5LjQyIDUuOTQtMjcuNjcgMTEuNDJsLTU4LjYyLTU4LjU5LTIxLjkzIDIxLjkzIDU4LjY3IDU4LjY3Yy01LjQ3IDguMjMtOS40NSAxNy41OS0xMS40NyAyNy42MmgtODIuOXYzMWg4Mi45YzIuMDIgMTAuMDIgNi4wMSAxOS4zMSAxMS40NyAyNy41NGwtNTguNjcgNTguNjkgMjEuOTMgMjEuOTMgNTguNjItNTguNjJhNzcuODczIDc3Ljg3MyAwIDAgMCAyNy42NyAxMS40N3Y4Mi45aDMxdi04Mi45YzEwLjA1LTIuMDMgMTkuMzctNi4wNiAyNy42Mi0xMS41NWw1OC42NyA1OC42OSAyMS45My0yMS45My01OC42Ny01OC42OWM1LjQ2LTguMjMgOS40Ny0xNy41MiAxMS41LTI3LjU0aDgyLjg3di0zMWgtODIuODdjLTIuMDItMTAuMDItNi4wMy0xOS4zOC0xMS41LTI3LjYybDU4LjY3LTU4LjY3LTIxLjkzLTIxLjkzLTU4LjY3IDU4LjY3Yy04LjI1LTUuNDktMTcuNTctOS40Ny0yNy42Mi0xMS41Vjk2LjU4aC0zMXptMTgzLjI0IDMwLjcybC0xNy4zNiAxNy4zNmExODYuMzM3IDE4Ni4zMzcgMCAwIDEgMzQuNjcgODMuNjdoMjQuNjJjLTQuOTUtMzcuNjktMTkuODMtNzIuMjktNDEuOTMtMTAxLjAzem0tMzM1LjU1LjEzYy0yMi4wNiAyOC43Mi0zNi45MSA2My4yNi00MS44NSAxMDAuOTFoMjQuNjVjNC42LTMwLjk2IDE2Ljc2LTU5LjQ1IDM0LjU5LTgzLjUybC0xNy4zOS0xNy4zOXpNMzguMzQgMjgzLjY3YzQuOTIgMzcuNjQgMTkuNzUgNzIuMTggNDEuOCAxMDAuOWwxNy4zNi0xNy4zOWMtMTcuODEtMjQuMDctMjkuOTItNTIuNTctMzQuNTEtODMuNTJIMzguMzR6bTM5NC43IDBjLTQuNjEgMzAuOTktMTYuOCA1OS41LTM0LjY3IDgzLjZsMTcuMzYgMTcuMzZjMjIuMDgtMjguNzQgMzYuOTgtNjMuMjkgNDEuOTMtMTAwLjk2aC0yNC42MnpNMTM2LjY2IDQwNi4zOGwtMTcuMzYgMTcuMzZjMjguNzMgMjIuMDkgNjMuMyAzNi45OCAxMDAuOTYgNDEuOTN2LTI0LjY0Yy0zMC45OS00LjYzLTU5LjUzLTE2Ljc5LTgzLjYtMzQuNjV6bTIyMi41My4wNWMtMjQuMDkgMTcuODQtNTIuNTggMzAuMDgtODMuNTcgMzQuNjd2MjQuNTdjMzcuNjctNC45MiA3Mi4yMS0xOS43OSAxMDAuOTYtNDEuODVsLTE3LjMxLTE3LjM5aC0uMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhbGFjdGljU2VuYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OS44NiAzMy40OHYyNi4wN0MyMzYuMjggODAuMTcgMjI2IDE2OC4xNCAyMjUuMzkgMjc0LjljMTEuNzQtMTUuNjIgMTkuMTMtMzMuMzMgMTkuMTMtNDguMjR2LTE2Ljg4Yy0uMDMtNS4zMi43NS0xMC41MyAyLjE5LTE1LjY1LjY1LTIuMTQgMS4zOS00LjA4IDIuNjItNS44MiAxLjIzLTEuNzUgMy40My0zLjc5IDYuNjgtMy43OSAzLjI0IDAgNS40NSAyLjA1IDYuNjggMy43OSAxLjIzIDEuNzUgMS45NyAzLjY4IDIuNjIgNS44MiAxLjQ0IDUuMTIgMi4yMiAxMC4zMyAyLjE5IDE1LjY1djE2Ljg4YzAgMTQuOTEgNy4zOSAzMi42MiAxOS4xMyA0OC4yNC0uNjMtMTA2Ljc2LTEwLjkxLTE5NC43My0yNC40OS0yMTUuMzVWMzMuNDhoLTEyLjI4em0tMjYuMzQgMTQ3Ljc3Yy05LjUyIDIuMTUtMTguNyA1LjE5LTI3LjQ2IDkuMDggOC45IDE2LjEyIDkuNzYgMzIuNjQgMS43MSAzNy4yOS04IDQuNjItMjEuODUtNC4yMy0zMS4zNi0xOS44Mi0xMS41OCA4Ljc5LTIxLjg4IDE5LjMyLTMwLjU2IDMxLjA5IDE0LjczIDkuNjIgMjIuODkgMjIuOTIgMTguMzIgMzAuNjYtNC41NCA3LjctMjAuMDMgNy4xNC0zNS40Ny0uOTYtNS43OCAxMy4yNS05Ljc1IDI3LjUxLTExLjY1IDQyLjQyIDkuNjguMTggMTguNjcgMi4zOCAyNi4xOCA2LjA0IDE3Ljc4LS4zIDMyLjc3LTEuOTYgNDAuNDktNC4yMiA1LjU1LTI2LjM1IDIzLjAyLTQ4LjIzIDQ2LjMyLTU5LjUxLjczLTI1LjU1IDEuODgtNDkuNjcgMy40OC03Mi4wN3ptNjQuOTYgMGMxLjU5IDIyLjQgMi43NSA0Ni41MiAzLjQ3IDcyLjA3IDIzLjI5IDExLjI4IDQwLjc3IDMzLjE2IDQ2LjMyIDU5LjUxIDcuNzIgMi4yNiAyMi43MSAzLjkyIDQwLjQ5IDQuMjIgNy41MS0zLjY2IDE2LjUtNS44NSAyNi4xOC02LjA0LTEuOS0xNC45MS01Ljg2LTI5LjE3LTExLjY1LTQyLjQyLTE1LjQ0IDguMS0zMC45MyA4LjY2LTM1LjQ3Ljk2LTQuNTctNy43NCAzLjYtMjEuMDUgMTguMzItMzAuNjYtOC42OC0xMS43Ny0xOC45OC0yMi4zLTMwLjU2LTMxLjA5LTkuNTEgMTUuNTktMjMuMzYgMjQuNDQtMzEuMzYgMTkuODItOC4wNS00LjY1LTcuMTktMjEuMTYgMS43MS0zNy4yOWExNDcuNDkgMTQ3LjQ5IDAgMCAwLTI3LjQ1LTkuMDh6bS0zMi40OCA4LjZjLTMuMjMgMC01Ljg2IDguODEtNi4wOSAxOS45M2gtLjA1djE2Ljg4YzAgNDEuNDItNDkuMDEgOTUuMDQtOTMuNDkgOTUuMDQtNTIgMC0xMjIuNzUtMS40NS0xNTYuMzcgMjkuMTd2Mi41MWM5LjQyIDE3LjEyIDIwLjU4IDMzLjE3IDMzLjE4IDQ3Ljk3QzQ1LjcgMzgwLjI2IDg0Ljc3IDM2MC40IDE0MS4yIDM2MGM0NS42OCAxLjAyIDc5LjAzIDIwLjMzIDkwLjc2IDQwLjg3LjAxLjAxLS4wMS4wNCAwIC4wNSA3LjY3IDIuMTQgMTUuODUgMy4yMyAyNC4wNCAzLjIxIDguMTkuMDIgMTYuMzctMS4wNyAyNC4wNC0zLjIxLjAxLS4wMS0uMDEtLjA0IDAtLjA1IDExLjc0LTIwLjU0IDQ1LjA4LTM5Ljg1IDkwLjc2LTQwLjg3IDU2LjQzLjM5IDk1LjQ5IDIwLjI2IDEwOC4wMiA0MS4zNSAxMi42LTE0LjggMjMuNzYtMzAuODYgMzMuMTgtNDcuOTd2LTIuNTFjLTMzLjYxLTMwLjYyLTEwNC4zNy0yOS4xNy0xNTYuMzctMjkuMTctNDQuNDggMC05My40OS01My42Mi05My40OS05NS4wNHYtMTYuODhoLS4wNWMtLjIzLTExLjEyLTIuODYtMTkuOTMtNi4wOS0xOS45M3ptMCA5Ni41OWMyMi40MiAwIDQwLjYgMTguMTggNDAuNiA0MC42cy0xOC4xOCA0MC42NS00MC42IDQwLjY1LTQwLjYtMTguMjMtNDAuNi00MC42NWMwLTIyLjQyIDE4LjE4LTQwLjYgNDAuNi00MC42em0wIDcuNjRjLTE4LjE5IDAtMzIuOTYgMTQuNzctMzIuOTYgMzIuOTZTMjM3LjgxIDM2MCAyNTYgMzYwczMyLjk2LTE0Ljc3IDMyLjk2LTMyLjk2LTE0Ljc3LTMyLjk2LTMyLjk2LTMyLjk2em0wIDYuMTRjMTQuODEgMCAyNi44MiAxMi4wMSAyNi44MiAyNi44MnMtMTIuMDEgMjYuODItMjYuODIgMjYuODItMjYuODItMTIuMDEtMjYuODItMjYuODIgMTIuMDEtMjYuODIgMjYuODItMjYuODJ6bS0xMTQuOCA2Ni42N2MtMTAuMTkuMDctMjEuNi4zNi0zMC41IDEuNjYuNDMgNC40MiAxLjUxIDE4LjYzIDcuMTEgMjkuNzYgOS4xMS0yLjU2IDE4LjM2LTMuOSAyNy42Mi0zLjkgNDEuMjguOTQgNzEuNDggMzQuMzUgNzguMjYgNzQuNDdsLjExIDQuN2MxMC40IDEuOTEgMjEuMTkgMi45NCAzMi4yMSAyLjk0IDExLjAzIDAgMjEuODEtMS4wMiAzMi4yMS0yLjk0bC4xMS00LjdjNi43OC00MC4xMiAzNi45OC03My41MyA3OC4yNi03NC40NyA5LjI2IDAgMTguNTEgMS4zNCAyNy42MiAzLjkgNS42LTExLjEzIDYuNjgtMjUuMzQgNy4xMS0yOS43Ni04LjktMS4zLTIwLjMyLTEuNTgtMzAuNS0xLjY2LTE4Ljc2LjQyLTM1LjE5IDQuMTctNDguNjEgOS42Ny0xMi41NCAxNi4wMy0yOS4xNiAzMC4wMy00OS41OCAzMy4wNy0uMDkuMDItLjE3LjA0LS4yNy4wNS0uMDUuMDEtLjExLjA0LS4xNi4wNS01LjI0IDEuMDctMTAuNjMgMS42LTE2LjE5IDEuNi01LjU1IDAtMTAuOTUtLjUzLTE2LjE5LTEuNi0uMDUtLjAxLS4xMS0uMDQtLjE2LS4wNS0uMS0uMDItLjE3LS4wNC0uMjctLjA1LTIwLjQyLTMuMDMtMzcuMDMtMTcuMDQtNDkuNTgtMzMuMDctMTMuNDItNS40OS0yOS44Ni05LjI1LTQ4LjYxLTkuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdldFBvY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcuNiA2NGgtMzY3QzE4LjUgNjQgMCA4Mi41IDAgMTA0LjZ2MTM1LjJDMCAzNjQuNSA5OS43IDQ2NCAyMjQuMiA0NjRjMTI0IDAgMjIzLjgtOTkuNSAyMjMuOC0yMjQuMlYxMDQuNmMwLTIyLjQtMTcuNy00MC42LTQwLjQtNDAuNnptLTE2MiAyNjguNWMtMTIuNCAxMS44LTMxLjQgMTEuMS00Mi40IDBDODkuNSAyMjMuNiA4OC4zIDIyNy40IDg4LjMgMjA5LjNjMC0xNi45IDEzLjgtMzAuNyAzMC43LTMwLjcgMTcgMCAxNi4xIDMuOCAxMDUuMiA4OS4zIDkwLjYtODYuOSA4OC42LTg5LjMgMTA1LjUtODkuMyAxNi45IDAgMzAuNyAxMy44IDMwLjcgMzAuNyAwIDE3LjgtMi45IDE1LjctMTE0LjggMTIzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NyA4QzEyMCA4IDkgMTE5IDkgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzk0IDggMjU3IDh6bS00OS41IDM3NC44TDgxLjggMjU3LjFsMTI1LjctMTI1LjcgMzUuMiAzNS40LTI0LjIgMjQuMi0xMS4xLTExLjEtNzcuMiA3Ny4yIDc3LjIgNzcuMiAyNi42LTI2LjYtNTMuMS01Mi45IDI0LjQtMjQuNCA3Ny4yIDc3LjItNzUgNzUuMnptOTktMi4ybC0zNS4yLTM1LjIgMjQuMS0yNC40IDExLjEgMTEuMSA3Ny4yLTc3LjItNzcuMi03Ny4yLTI2LjUgMjYuNSA1My4xIDUyLjktMjQuNCAyNC40LTc3LjItNzcuMiA3NS03NUw0MzIuMiAyNTUgMzA2LjUgMzgwLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OS4yIDIzMC40bDEwMi40IDEwMi40LTEwMi40IDEwMi40TDAgMjU2IDE3OS4yIDc2LjhsNDQuOCA0NC44LTI1LjYgMjUuNi0xOS4yLTE5LjItMTI4IDEyOCAxMjggMTI4IDUxLjUtNTEuNS03Ny4xLTc2LjUgMjUuNi0yNS42ek0zMzIuOCA3Ni44TDIzMC40IDE3OS4ybDEwMi40IDEwMi40IDI1LjYtMjUuNi03Ny4xLTc2LjUgNTEuNS01MS41IDEyOCAxMjgtMTI4IDEyOC0xOS4yLTE5LjItMjUuNiAyNS42IDQ0LjggNDQuOEw1MTIgMjU2IDMzMi44IDc2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzkuNTUgMjM2LjA1TDI0NCA0MC40NWEyOC44NyAyOC44NyAwIDAgMC00MC44MSAwbC00MC42NiA0MC42MyA1MS41MiA1MS41MmMyNy4wNi05LjE0IDUyLjY4IDE2Ljc3IDQzLjM5IDQzLjY4bDQ5LjY2IDQ5LjY2YzM0LjIzLTExLjggNjEuMTggMzEgMzUuNDcgNTYuNjktMjYuNDkgMjYuNDktNzAuMjEtMi44Ny01Ni0zNy4zNEwyNDAuMjIgMTk5djEyMS44NWMyNS4zIDEyLjU0IDIyLjI2IDQxLjg1IDkuMDggNTVhMzQuMzQgMzQuMzQgMCAwIDEtNDguNTUgMGMtMTcuNTctMTcuNi0xMS4wNy00Ni45MSAxMS4yNS01NnYtMTIzYy0yMC44LTguNTEtMjQuNi0zMC43NC0xOC42NC00NUwxNDIuNTcgMTAxIDguNDUgMjM1LjE0YTI4Ljg2IDI4Ljg2IDAgMCAwIDAgNDAuODFsMTk1LjYxIDE5NS42YTI4Ljg2IDI4Ljg2IDAgMCAwIDQwLjggMGwxOTQuNjktMTk0LjY5YTI4Ljg2IDI4Ljg2IDAgMCAwIDAtNDAuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAuNTkgMzM0LjI0YzQ4LjU3IDMuMzEgNTguOTUgMi4xMSA1OC45NSAxMS45NCAwIDIwLTY1LjU1IDIwLjA2LTY1LjU1IDEuNTIuMDEtNS4wOSAzLjI5LTkuNCA2LjYtMTMuNDZ6bTI3Ljk1LTExNi42NGMtMzIuMjkgMC0zMy43NSA0NC40Ny0uNzUgNDQuNDcgMzIuNTEgMCAzMS43MS00NC40Ny43NS00NC40N3pNNDQ4IDgwdjM1MmE0OCA0OCAwIDAgMS00OCA0OEg0OGE0OCA0OCAwIDAgMS00OC00OFY4MGE0OCA0OCAwIDAgMSA0OC00OGgzNTJhNDggNDggMCAwIDEgNDggNDh6bS0yMjcgNjkuMzFjMCAxNC40OSA4LjM4IDIyLjg4IDIyLjg2IDIyLjg4IDE0Ljc0IDAgMjMuMTMtOC4zOSAyMy4xMy0yMi44OFMyNTguNjIgMTI3IDI0My44OCAxMjdjLTE0LjQ4IDAtMjIuODggNy44NC0yMi44OCAyMi4zMXpNMTk5LjE4IDE5NWgtNDkuNTVjLTI1LTYuNTUtODEuNTYtNC44NS04MS41NiA0Ni43NSAwIDE4LjggOS40IDMyIDIxLjg1IDM4LjExQzc0LjIzIDI5NC4yMyA2Ni44IDMwMSA2Ni44IDMxMC42YzAgNi44NyAyLjc5IDEzLjIyIDExLjE4IDE2Ljc2LTguOSA4LjQtMTQgMTQuNDgtMTQgMjUuOTJDNjQgMzczLjM1IDgxLjUzIDM4NSAxMjcuNTIgMzg1YzQ0LjIyIDAgNjkuODctMTYuNTEgNjkuODctNDUuNzMgMC0zNi42Ny0yOC4yMy0zNS4zMi05NC43Ny0zOS4zOGw4LjM4LTEzLjQzYzE3IDQuNzQgNzQuMTkgNi4yMyA3NC4xOS00Mi40MyAwLTExLjY5LTQuODMtMTkuODItOS40LTI1LjY3bDIzLjM4LTEuNzh6bTg0LjM0IDEwOS44NGwtMTMtMS43OGMtMy44Mi0uNTEtNC4wNy0xLTQuMDctNS4wOVYxOTIuNTJoLTUyLjZsLTIuNzkgMjAuNTdjMTUuNzUgNS41NSAxNyA0Ljg2IDE3IDEwLjE3VjI5OGMwIDUuNjItLjMxIDQuNTgtMTcgNi44N3YyMC4wNmg3Mi40MnpNMzg0IDMxNWwtNi44Ny0yMi4zN2MtNDAuOTMgMTUuMzctMzcuODUtMTIuNDEtMzcuODUtMTYuNzN2LTYwLjcyaDM3Ljg1di0yNS40MWgtMzUuODJjLTIuODcgMC0yIDIuNTItMi0zOC42M2gtMjQuMThjLTIuNzkgMjcuNy0xMS42OCAzOC44OC0zNCA0MS40MnYyMi42MmMyMC40NyAwIDE5LjgyLS44NSAxOS44MiAyLjU0djY2LjU3YzAgMjguNzIgMTEuNDMgNDAuOTEgNDEuNjcgNDAuOTEgMTQuNDUgMCAzMC40NS00LjgzIDQxLjM4LTEwLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYuMjkgMTU4LjM5SDEzN0M5NyAxNDcuOSA2LjUxIDE1MC42MyA2LjUxIDIzMy4xOGMwIDMwLjA5IDE1IDUxLjIzIDM1IDYxLTI1LjEgMjMtMzcgMzMuODUtMzcgNDkuMjEgMCAxMSA0LjQ3IDIxLjE0IDE3Ljg5IDI2LjgxQzguMTMgMzgzLjYxIDAgMzkzLjM1IDAgNDExLjY1YzAgMzIuMTEgMjguMDUgNTAuODIgMTAxLjYzIDUwLjgyIDcwLjc1IDAgMTExLjc5LTI2LjQyIDExMS43OS03My4xOCAwLTU4LjY2LTQ1LjE2LTU2LjUtMTUxLjYzLTYzbDEzLjQzLTIxLjU1YzI3LjI3IDcuNTggMTE4LjcgMTAgMTE4LjctNjcuODkgMC0xOC43LTcuNzMtMzEuNzEtMTUtNDEuMDdsMzcuNDEtMi44NHptLTYzLjQyIDI0MS45YzAgMzIuMDYtMTA0Ljg5IDMyLjEtMTA0Ljg5IDIuNDMgMC04LjE0IDUuMjctMTUgMTAuNTctMjEuNTQgNzcuNzEgNS4zIDk0LjMyIDMuMzcgOTQuMzIgMTkuMTF6bS01MC44MS0xMzQuNThjLTUyLjggMC01MC40Ni03MS4xNiAxLjItNzEuMTYgNDkuNTQgMCA1MC44MiA3MS4xNi0xLjIgNzEuMTZ6bTEzMy4zIDEwMC41MXYtMzIuMWMyNi43NS0zLjY2IDI3LjI0LTIgMjcuMjQtMTFWMjAzLjYxYzAtOC41LTIuMDUtNy4zOC0yNy4yNC0xNi4yNmw0LjQ3LTMyLjkySDMyNHYxNjguNzFjMCA2LjUxLjQgNy4zMiA2LjUxIDguMTRsMjAuNzMgMi44NHYzMi4xem01Mi40NS0yNDQuMzFjLTIzLjE3IDAtMzYuNTktMTMuNDMtMzYuNTktMzYuNjFzMTMuNDItMzUuNzcgMzYuNTktMzUuNzdjMjMuNTggMCAzNyAxMi42MiAzNyAzNS43N3MtMTMuNDIgMzYuNjEtMzcgMzYuNjF6TTUxMiAzNTAuNDZjLTE3LjQ5IDguNTMtNDMuMSAxNi4yNi02Ni4yOCAxNi4yNi00OC4zOCAwLTY2LjY3LTE5LjUtNjYuNjctNjUuNDZWMTk0Ljc1YzAtNS40MiAxLjA1LTQuMDYtMzEuNzEtNC4wNlYxNTQuNWMzNS43OC00LjA3IDUwLTIyIDU0LjQ3LTY2LjI3aDM4LjYzYzAgNjUuODMtMS4zNCA2MS44MSAzLjI2IDYxLjgxSDUwMXY0MC42NWgtNjAuNTZ2OTcuMTVjMCA2LjkyLTQuOTIgNTEuNDEgNjAuNTcgMjYuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMSAzMjguN2MwIDIwLjktMTAuOSA1NS4xLTM2LjcgNTUuMXMtMzYuNy0zNC4yLTM2LjctNTUuMSAxMC45LTU1LjEgMzYuNy01NS4xIDM2LjcgMzQuMiAzNi43IDU1LjF6TTQ4MCAyNzguMmMwIDMxLjktMy4yIDY1LjctMTcuNSA5NS0zNy45IDc2LjYtMTQyLjEgNzQuOC0yMTYuNyA3NC44LTc1LjggMC0xODYuMiAyLjctMjI1LjYtNzQuOC0xNC42LTI5LTIwLjItNjMuMS0yMC4yLTk1IDAtNDEuOSAxMy45LTgxLjUgNDEuNS0xMTMuNi01LjItMTUuOC03LjctMzIuNC03LjctNDguOCAwLTIxLjUgNC45LTMyLjMgMTQuNi01MS44IDQ1LjMgMCA3NC4zIDkgMTA4LjggMzYgMjktNi45IDU4LjgtMTAgODguNy0xMCAyNyAwIDU0LjIgMi45IDgwLjQgOS4yIDM0LTI2LjcgNjMtMzUuMiAxMDcuOC0zNS4yIDkuOCAxOS41IDE0LjYgMzAuMyAxNC42IDUxLjggMCAxNi40LTIuNiAzMi43LTcuNyA0OC4yIDI3LjUgMzIuNCAzOSA3Mi4zIDM5IDExNC4yem0tNjQuMyA1MC41YzAtNDMuOS0yNi43LTgyLjYtNzMuNS04Mi42LTE4LjkgMC0zNyAzLjQtNTYgNi0xNC45IDIuMy0yOS44IDMuMi00NS4xIDMuMi0xNS4yIDAtMzAuMS0uOS00NS4xLTMuMi0xOC43LTIuNi0zNy02LTU2LTYtNDYuOCAwLTczLjUgMzguNy03My41IDgyLjYgMCA4Ny44IDgwLjQgMTAxLjMgMTUwLjQgMTAxLjNoNDguMmM3MC4zIDAgMTUwLjYtMTMuNCAxNTAuNi0xMDEuM3ptLTgyLjYtNTUuMWMtMjUuOCAwLTM2LjcgMzQuMi0zNi43IDU1LjFzMTAuOSA1NS4xIDM2LjcgNTUuMSAzNi43LTM0LjIgMzYuNy01NS4xLTEwLjktNTUuMS0zNi43LTU1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YlNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yNzcuMyA0MTUuN2MtOC40IDEuNS0xMS41LTMuNy0xMS41LTggMC01LjQuMi0zMyAuMi01NS4zIDAtMTUuNi01LjItMjUuNS0xMS4zLTMwLjcgMzctNC4xIDc2LTkuMiA3Ni03My4xIDAtMTguMi02LjUtMjcuMy0xNy4xLTM5IDEuNy00LjMgNy40LTIyLTEuNy00NS0xMy45LTQuMy00NS43IDE3LjktNDUuNyAxNy45LTEzLjItMy43LTI3LjUtNS42LTQxLjYtNS42LTE0LjEgMC0yOC40IDEuOS00MS42IDUuNiAwIDAtMzEuOC0yMi4yLTQ1LjctMTcuOS05LjEgMjIuOS0zLjUgNDAuNi0xLjcgNDUtMTAuNiAxMS43LTE1LjYgMjAuOC0xNS42IDM5IDAgNjMuNiAzNy4zIDY5IDc0LjMgNzMuMS00LjggNC4zLTkuMSAxMS43LTEwLjYgMjIuMy05LjUgNC4zLTMzLjggMTEuNy00OC4zLTEzLjktOS4xLTE1LjgtMjUuNS0xNy4xLTI1LjUtMTcuMS0xNi4yLS4yLTEuMSAxMC4yLTEuMSAxMC4yIDEwLjggNSAxOC40IDI0LjIgMTguNCAyNC4yIDkuNyAyOS43IDU2LjEgMTkuNyA1Ni4xIDE5LjcgMCAxMy45LjIgMzYuNS4yIDQwLjYgMCA0LjMtMyA5LjUtMTEuNSA4LTY2LTIyLjEtMTEyLjItODQuOS0xMTIuMi0xNTguMyAwLTkxLjggNzAuMi0xNjEuNSAxNjItMTYxLjVTMzg4IDE2NS42IDM4OCAyNTcuNGMuMSA3My40LTQ0LjcgMTM2LjMtMTEwLjcgMTU4LjN6bS05OC4xLTYxLjFjLTEuOS40LTMuNy0uNC0zLjktMS43LS4yLTEuNSAxLjEtMi44IDMtMy4yIDEuOS0uMiAzLjcuNiAzLjkgMS45LjMgMS4zLTEgMi42LTMgM3ptLTkuNS0uOWMwIDEuMy0xLjUgMi40LTMuNSAyLjQtMi4yLjItMy43LS45LTMuNy0yLjQgMC0xLjMgMS41LTIuNCAzLjUtMi40IDEuOS0uMiAzLjcuOSAzLjcgMi40em0tMTMuNy0xLjFjLS40IDEuMy0yLjQgMS45LTQuMSAxLjMtMS45LS40LTMuMi0xLjktMi44LTMuMi40LTEuMyAyLjQtMS45IDQuMS0xLjUgMiAuNiAzLjMgMi4xIDIuOCAzLjR6bS0xMi4zLTUuNGMtLjkgMS4xLTIuOC45LTQuMy0uNi0xLjUtMS4zLTEuOS0zLjItLjktNC4xLjktMS4xIDIuOC0uOSA0LjMuNiAxLjMgMS4zIDEuOCAzLjMuOSA0LjF6bS05LjEtOS4xYy0uOS42LTIuNiAwLTMuNy0xLjVzLTEuMS0zLjIgMC0zLjljMS4xLS45IDIuOC0uMiAzLjcgMS4zIDEuMSAxLjUgMS4xIDMuMyAwIDQuMXptLTYuNS05LjdjLS45LjktMi40LjQtMy41LS42LTEuMS0xLjMtMS4zLTIuOC0uNC0zLjUuOS0uOSAyLjQtLjQgMy41LjYgMS4xIDEuMyAxLjMgMi44LjQgMy41em0tNi43LTcuNGMtLjQuOS0xLjcgMS4xLTIuOC40LTEuMy0uNi0xLjktMS43LTEuNS0yLjYuNC0uNiAxLjUtLjkgMi44LS40IDEuMy43IDEuOSAxLjggMS41IDIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0aHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NS45IDM5Ny40YzAgMi0yLjMgMy42LTUuMiAzLjYtMy4zLjMtNS42LTEuMy01LjYtMy42IDAtMiAyLjMtMy42IDUuMi0zLjYgMy0uMyA1LjYgMS4zIDUuNiAzLjZ6bS0zMS4xLTQuNWMtLjcgMiAxLjMgNC4zIDQuMyA0LjkgMi42IDEgNS42IDAgNi4yLTJzLTEuMy00LjMtNC4zLTUuMmMtMi42LS43LTUuNS4zLTYuMiAyLjN6bTQ0LjItMS43Yy0yLjkuNy00LjkgMi42LTQuNiA0LjkuMyAyIDIuOSAzLjMgNS45IDIuNiAyLjktLjcgNC45LTIuNiA0LjYtNC42LS4zLTEuOS0zLTMuMi01LjktMi45ek0yNDQuOCA4QzEwNi4xIDggMCAxMTMuMyAwIDI1MmMwIDExMC45IDY5LjggMjA1LjggMTY5LjUgMjM5LjIgMTIuOCAyLjMgMTcuMy01LjYgMTcuMy0xMi4xIDAtNi4yLS4zLTQwLjQtLjMtNjEuNCAwIDAtNzAgMTUtODQuNy0yOS44IDAgMC0xMS40LTI5LjEtMjcuOC0zNi42IDAgMC0yMi45LTE1LjcgMS42LTE1LjQgMCAwIDI0LjkgMiAzOC42IDI1LjggMjEuOSAzOC42IDU4LjYgMjcuNSA3Mi45IDIwLjkgMi4zLTE2IDguOC0yNy4xIDE2LTMzLjctNTUuOS02LjItMTEyLjMtMTQuMy0xMTIuMy0xMTAuNSAwLTI3LjUgNy42LTQxLjMgMjMuNi01OC45LTIuNi02LjUtMTEuMS0zMy4zIDIuNi02Ny45IDIwLjktNi41IDY5IDI3IDY5IDI3IDIwLTUuNiA0MS41LTguNSA2Mi44LTguNXM0Mi44IDIuOSA2Mi44IDguNWMwIDAgNDguMS0zMy42IDY5LTI3IDEzLjcgMzQuNyA1LjIgNjEuNCAyLjYgNjcuOSAxNiAxNy43IDI1LjggMzEuNSAyNS44IDU4LjkgMCA5Ni41LTU4LjkgMTA0LjItMTE0LjggMTEwLjUgOS4yIDcuOSAxNyAyMi45IDE3IDQ2LjQgMCAzMy43LS4zIDc1LjQtLjMgODMuNiAwIDYuNSA0LjYgMTQuNCAxNy4zIDEyLjFDNDI4LjIgNDU3LjggNDk2IDM2Mi45IDQ5NiAyNTIgNDk2IDExMy4zIDM4My41IDggMjQ0LjggOHpNOTcuMiAzNTIuOWMtMS4zIDEtMSAzLjMuNyA1LjIgMS42IDEuNiAzLjkgMi4zIDUuMiAxIDEuMy0xIDEtMy4zLS43LTUuMi0xLjYtMS42LTMuOS0yLjMtNS4yLTF6bS0xMC44LTguMWMtLjcgMS4zLjMgMi45IDIuMyAzLjkgMS42IDEgMy42LjcgNC4zLS43LjctMS4zLS4zLTIuOS0yLjMtMy45LTItLjYtMy42LS4zLTQuMy43em0zMi40IDM1LjZjLTEuNiAxLjMtMSA0LjMgMS4zIDYuMiAyLjMgMi4zIDUuMiAyLjYgNi41IDEgMS4zLTEuMy43LTQuMy0xLjMtNi4yLTIuMi0yLjMtNS4yLTIuNi02LjUtMXptLTExLjQtMTQuN2MtMS42IDEtMS42IDMuNiAwIDUuOSAxLjYgMi4zIDQuMyAzLjMgNS42IDIuMyAxLjYtMS4zIDEuNi0zLjkgMC02LjItMS40LTIuMy00LTMuMy01LjYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0a3Jha2VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1OTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2NS43IDExOC4xYy0yLjMtNi4xLTkuMy05LjItMTUuMy02LjYtNS43IDIuNC04LjUgOC45LTYuMyAxNC42IDEwLjkgMjkgMTYuOSA2MC41IDE2LjkgOTMuMyAwIDEzNC42LTEwMC4zIDI0NS43LTIzMC4yIDI2Mi43VjM1OC40YzcuOS0xLjUgMTUuNS0zLjYgMjMtNi4ydjEwNGMxMDYuNy0yNS45IDE4NS45LTEyMi4xIDE4NS45LTIzNi44IDAtOTEuOC01MC44LTE3MS44LTEyNS44LTIxMy4zLTUuNy0zLjItMTMtLjktMTUuOSA1LTIuNyA1LjUtLjYgMTIuMiA0LjcgMTUuMSA2Ny45IDM3LjYgMTEzLjkgMTEwIDExMy45IDE5My4yIDAgOTMuMy01Ny45IDE3My4xLTEzOS44IDIwNS40di05Mi4yYzE0LjItNC41IDI0LjktMTcuNyAyNC45LTMzLjUgMC0xMy4xLTYuOC0yNC40LTE3LjMtMzAuNSA4LjMtNzkuNSA0NC41LTU4LjYgNDQuNS04My45VjE3MGMwLTM4LTg3LjktMTYxLjgtMTI5LTE2NC43LTIuNS0uMi01LS4yLTcuNiAwQzI1MS4xIDguMyAxNjMuMiAxMzIgMTYzLjIgMTcwdjE0LjhjMCAyNS4zIDM2LjMgNC4zIDQ0LjUgODMuOS0xMC42IDYuMS0xNy4zIDE3LjQtMTcuMyAzMC41IDAgMTUuOCAxMC42IDI5IDI0LjggMzMuNXY5Mi4yYy04MS45LTMyLjItMTM5LjgtMTEyLTEzOS44LTIwNS40IDAtODMuMSA0Ni0xNTUuNSAxMTMuOS0xOTMuMiA1LjQtMyA3LjQtOS42IDQuNy0xNS4xLTIuOS01LjktMTAuMS04LjItMTUuOS01LTc1IDQxLjUtMTI1LjggMTIxLjUtMTI1LjggMjEzLjMgMCAxMTQuNyA3OS4yIDIxMC44IDE4NS45IDIzNi44di0xMDRjNy42IDIuNSAxNS4xIDQuNiAyMyA2LjJ2MTIzLjdDMTMxLjQgNDY1LjIgMzEgMzU0LjEgMzEgMjE5LjVjMC0zMi44IDYtNjQuMyAxNi45LTkzLjMgMi4yLTUuOC0uNi0xMi4yLTYuMy0xNC42LTYtMi42LTEzIC40LTE1LjMgNi42QzE0LjUgMTQ5LjcgOCAxODMuOCA4IDIxOS41YzAgMTU1LjEgMTIyLjYgMjgxLjYgMjc2LjMgMjg3LjhWMzYxLjRjNi44LjQgMTUgLjUgMjMuNCAwdjE0NS44QzQ2MS40IDUwMS4xIDU4NCAzNzQuNiA1ODQgMjE5LjVjMC0zNS43LTYuNS02OS44LTE4LjMtMTAxLjR6TTM2NS45IDI3NS41YzEzIDAgMjMuNyAxMC41IDIzLjcgMjMuNyAwIDEzLjEtMTAuNiAyMy43LTIzLjcgMjMuNy0xMyAwLTIzLjctMTAuNS0yMy43LTIzLjcgMC0xMy4xIDEwLjYtMjMuNyAyMy43LTIzLjd6bS0xMzkuOCA0Ny4zYy0xMy4yIDAtMjMuNy0xMC43LTIzLjctMjMuN3MxMC41LTIzLjcgMjMuNy0yMy43YzEzLjEgMCAyMy43IDEwLjYgMjMuNyAyMy43IDAgMTMtMTAuNSAyMy43LTIzLjcgMjMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0bGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNS4yIDI0LjljLTMuMS04LjktMTUuNy04LjktMTguOSAwTDI5LjggMTk5LjdoMTMyYy0uMSAwLTU2LjYtMTc0LjgtNTYuNi0xNzQuOHpNLjkgMjg3LjdjLTIuNiA4IC4zIDE2LjkgNy4xIDIybDI0Ny45IDE4NC0yMjYuMi0yOTR6bTE2MC44LTg4bDk0LjMgMjk0IDk0LjMtMjk0em0zNDkuNCA4OGwtMjguOC04OC0yMjYuMyAyOTQgMjQ3LjktMTg0YzYuOS01LjEgOS43LTE0IDcuMi0yMnpNNDI1LjcgMjQuOWMtMy4xLTguOS0xNS43LTguOS0xOC45IDBsLTU2LjYgMTc0LjhoMTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjYuNCAzMjIuNUgxNlYwaDUwLjR2MzIyLjV6TTE2Ni45IDc2LjFoLTUwLjRWNTEyaDUwLjRWNzYuMXptMTAwLjYgMGgtNTAuNFY1MTJoNTAuNFY3Ni4xek0zNjggNzZoLTUwLjR2MjQ3SDM2OFY3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xpZGVHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy4xIDIxMS4yYy0zLjUtMS40LTExLjYtMy44LTE1LjQtMy44LTM3LjEgMC02Mi4yIDE2LjgtOTMuNSAzNC41bC0uOS0uOWM3LTQ3LjMgMjMuNS05MS45IDIzLjUtMTQwLjRDMzIwLjggMjkuMSAyODIuNiAwIDIxMi40IDAgOTcuMyAwIDM5IDExMy43IDM5IDE5OC40IDM5IDI4Ni4zIDkwLjMgMzM1IDE3Ny42IDMzNWMxMiAwIDExLTEgMTEgMy44LTE2LjkgMTI4LjktOTAuOCAxMzMuMS05MC44IDk0LjYgMC0zOS4yIDQ1LTU4LjYgNDUuNS02MS0uMy0xMi4yLTQ3LTI3LjYtNTguOS0yNy42LTMzLjkuMS01Mi40IDUxLjItNTIuNCA3OS4zQzMyIDQ3NiA2NC44IDUxMiAxMTcuNSA1MTJjNzcuNCAwIDEzNC03Ny44IDE1MS40LTE0NS40IDE1LjEtNjAuNSAxMS4yLTYzLjMgMTkuNy02Ny42IDMyLjItMTYuMiA1Ny41LTI3IDkzLjgtMjcgMTcuOCAwIDMwLjUgMy43IDU4LjkgOC40IDIuOSAwIDYuNy0yLjkgNi43LTUuOCAwLTgtMzMuNC02MC41LTQwLjktNjMuNHptLTE3NS4zLTg0LjRjLTkuMyA0NC43LTE4LjYgODkuNi0yNy44IDEzNC4zLTIuMyAxMC4yLTEzLjMgNy44LTIyIDcuOC0zOC4zIDAtNDktNDEuOC00OS03My4xIDAtNDcgMTgtMTA5LjMgNjEuOC0xMzMuNCA3LTQuMSAxNC44LTYuNyAyMi42LTYuNyAxOC42IDAgMjAgMTMuMyAyMCAyOC43LS4xIDE0LjMtMi43IDI4LjUtNS42IDQyLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Mi44IDE0OC42YzAgOC44LTEuNiAxNy43LTMuNCAyNi40LTUuOCAyNy44LTExLjYgNTUuOC0xNy4zIDgzLjYtMS40IDYuMy04LjMgNC45LTEzLjcgNC45LTIzLjggMC0zMC41LTI2LTMwLjUtNDUuNSAwLTI5LjMgMTEuMi02OC4xIDM4LjUtODMuMSA0LjMtMi41IDkuMi00LjIgMTQuMS00LjIgMTEuNCAwIDEyLjMgOC4zIDEyLjMgMTcuOXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNjQgMTg3YzAtNS4xLTIwLjgtMzcuNy0yNS41LTM5LjUtMi4yLS45LTcuMi0yLjMtOS42LTIuMy0yMy4xIDAtMzguNyAxMC41LTU4LjIgMjEuNWwtLjUtLjVjNC4zLTI5LjQgMTQuNi01Ny4yIDE0LjYtODcuNCAwLTQ0LjYtMjMuOC02Mi43LTY3LjUtNjIuNy03MS43IDAtMTA4IDcwLjgtMTA4IDEyMy41IDAgNTQuNyAzMiA4NSA4Ni4zIDg1IDcuNSAwIDYuOS0uNiA2LjkgMi4zLTEwLjUgODAuMy01Ni41IDgyLjktNTYuNSA1OC45IDAtMjQuNCAyOC0zNi41IDI4LjMtMzgtLjItNy42LTI5LjMtMTcuMi0zNi43LTE3LjItMjEuMSAwLTMyLjcgMzMtMzIuNyA1MC42IDAgMzIuMyAyMC40IDU0LjcgNTMuMyA1NC43IDQ4LjIgMCA4My40LTQ5LjcgOTQuMy05MS43IDkuNC0zNy43IDctMzkuNCAxMi4zLTQyLjEgMjAtMTAuMSAzNS44LTE2LjggNTguNC0xNi44IDExLjEgMCAxOSAyLjMgMzYuNyA1LjIgMS44LjEgNC4xLTEuNyA0LjEtMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb2ZvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI0IDMxOS44aC0xMy4ydjM0LjdjLTI0LjUgMjMuMS01Ni4zIDM1LjgtODkuOSAzNS44LTczLjIgMC0xMzIuNC02MC4yLTEzMi40LTEzNC40IDAtNzQuMSA1OS4yLTEzNC40IDEzMi40LTEzNC40IDM1LjMgMCA2OC42IDE0IDkzLjYgMzkuNGw2Mi4zLTYzLjNDMzM1IDU1LjMgMjc5LjcgMzIgMjIwLjcgMzIgOTggMzIgMCAxMzIuNiAwIDI1NmMwIDEyMi41IDk3IDIyNCAyMjAuNyAyMjQgNjMuMiAwIDEyNC41LTI2LjIgMTcxLTgyLjUtMi0yNy42LTEzLjQtNzcuNy02Ny43LTc3Ljd6bS0xMi4xLTExMi41SDIwNS42djg5SDMyNGMzMy41IDAgNjAuNSAxNS4xIDc2IDQxLjh2LTMwLjZjMC02NS4yLTQwLjQtMTAwLjItODguMS0xMDAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZHJlYWRzRyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi42IDQwMy4zaDIuOGMxMi43IDAgMjUuNSAwIDM4LjIuMSAxLjYgMCAzLjEtLjQgMy42IDIuMSA3LjEgMzQuOSAzMCA1NC42IDYyLjkgNjMuOSAyNi45IDcuNiA1NC4xIDcuOCA4MS4zIDEuOCAzMy44LTcuNCA1Ni0yOC4zIDY4LTYwLjQgOC0yMS41IDEwLjctNDMuOCAxMS02Ni41LjEtNS44LjMtNDctLjItNTIuOGwtLjktLjNjLS44IDEuNS0xLjcgMi45LTIuNSA0LjQtMjIuMSA0My4xLTYxLjMgNjcuNC0xMDUuNCA2OS4xLTEwMyA0LTE2OS40LTU3LTE3Mi0xNzYuMi0uNS0yMy43IDEuOC00Ni45IDguMy02OS43QzU4LjMgNDcuNyAxMTIuMy42IDE5MS42IDBjNjEuMy0uNCAxMDEuNSAzOC43IDExNi4yIDcwLjMuNSAxLjEgMS4zIDIuMyAyLjQgMS45VjEwLjZoNDQuM2MwIDI4MC4zLjEgMzMyLjIuMSAzMzIuMi0uMSA3OC41LTI2LjcgMTQzLjctMTAzIDE2Mi4yLTY5LjUgMTYuOS0xNTkgNC44LTE5Ni01Ny4yLTgtMTMuNS0xMS44LTI4LjMtMTMtNDQuNXpNMTg4LjkgMzYuNWMtNTIuNS0uNS0xMDguNSA0MC43LTExNSAxMzMuOC00LjEgNTkgMTQuOCAxMjIuMiA3MS41IDE0OC42IDI3LjYgMTIuOSA3NC4zIDE1IDEwOC4zLTguNyA0Ny42LTMzLjIgNjIuNy05NyA1NC44LTE1NC05LjctNzEuMS00Ny44LTEyMC0xMTkuNi0xMTkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZHJlYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OS45IDE5MS4yYzUuMSAzNy4zLTQuNyA3OS0zNS45IDEwMC43LTIyLjMgMTUuNS01Mi44IDE0LjEtNzAuOCA1LjctMzcuMS0xNy4zLTQ5LjUtNTguNi00Ni44LTk3LjIgNC4zLTYwLjkgNDAuOS04Ny45IDc1LjMtODcuNSA0Ni45LS4yIDcxLjggMzEuOCA3OC4yIDc4LjN6TTQ0OCA4OHYzMzZjMCAzMC45LTI1LjEgNTYtNTYgNTZINTZjLTMwLjkgMC01Ni0yNS4xLTU2LTU2Vjg4YzAtMzAuOSAyNS4xLTU2IDU2LTU2aDMzNmMzMC45IDAgNTYgMjUuMSA1NiA1NnpNMzMwIDMxMy4ycy0uMS0zNC0uMS0yMTcuM2gtMjl2NDAuM2MtLjguMy0xLjItLjUtMS42LTEuMi05LjYtMjAuNy0zNS45LTQ2LjMtNzYtNDYtNTEuOS40LTg3LjIgMzEuMi0xMDAuNiA3Ny44LTQuMyAxNC45LTUuOCAzMC4xLTUuNSA0NS42IDEuNyA3Ny45IDQ1LjEgMTE3LjggMTEyLjQgMTE1LjIgMjguOS0xLjEgNTQuNS0xNyA2OS00NS4yLjUtMSAxLjEtMS45IDEuNy0yLjkuMi4xLjQuMS42LjIuMyAzLjguMiAzMC43LjEgMzQuNS0uMiAxNC44LTIgMjkuNS03LjIgNDMuNS03LjggMjEtMjIuMyAzNC43LTQ0LjUgMzkuNS0xNy44IDMuOS0zNS42IDMuOC01My4yLTEuMi0yMS41LTYuMS0zNi41LTE5LTQxLjEtNDEuOC0uMy0xLjYtMS4zLTEuMy0yLjMtMS4zaC0yNi44Yy44IDEwLjYgMy4yIDIwLjMgOC41IDI5LjIgMjQuMiA0MC41IDgyLjcgNDguNSAxMjguMiAzNy40IDQ5LjktMTIuMyA2Ny4zLTU0LjkgNjcuNC0xMDYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM5IDMxNC45TDE3NS40IDMyaDE2MS4ybDE2My42IDI4Mi45SDMzOXptLTEzNy41IDIzLjZMMTIwLjkgNDgwaDMxMC41TDUxMiAzMzguNUgyMDEuNXpNMTU0LjEgNjcuNEwwIDMzOC41IDgwLjYgNDgwIDIzNyAyMDguOCAxNTQuMSA2Ny40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA1LjcyLDIxNXY0MS4yNWg1Ny4xYTQ5LjY2LDQ5LjY2LDAsMCwxLTIxLjE0LDMyLjZjLTkuNTQsNi41NS0yMS43MiwxMC4yOC0zNiwxMC4yOC0yNy42LDAtNTAuOTMtMTguOTEtNTkuMy00NC4yMmE2NS42MSw2NS42MSwwLDAsMSwwLTQxbDAsMGM4LjM3LTI1LjQ2LDMxLjctNDQuMzcsNTkuMy00NC4zN2E1Ni40Myw1Ni40MywwLDAsMSw0MC41MSwxNi4wOEwxNzYuNDcsMTU1YTEwMS4yNCwxMDEuMjQsMCwwLDAtNzAuNzUtMjcuODQsMTA1LjU1LDEwNS41NSwwLDAsMC05NC4zOCw1OS4xMSwxMDcuNjQsMTA3LjY0LDAsMCwwLDAsOTYuMTh2LjE1YTEwNS40MSwxMDUuNDEsMCwwLDAsOTQuMzgsNTljMjguNDcsMCw1Mi41NS05LjUzLDcwLTI1LjkxLDIwLTE4LjYxLDMxLjQxLTQ2LjE1LDMxLjQxLTc4LjkxQTEzMy43NiwxMzMuNzYsMCwwLDAsMjA1LjM4LDIxNVptMzg5LjQxLTRjLTEwLjEzLTkuMzgtMjMuOTMtMTQuMTQtNDEuMzktMTQuMTQtMjIuNDYsMC0zOS4zNCw4LjM0LTUwLjUsMjQuODZsMjAuODUsMTMuMjZxMTEuNDUtMTcsMzEuMjYtMTdhMzQuMDUsMzQuMDUsMCwwLDEsMjIuNzUsOC43OUEyOC4xNCwyOC4xNCwwLDAsMSw0ODcuNzksMjQ4djUuNTFjLTkuMS01LjA3LTIwLjU1LTcuNzUtMzQuNjQtNy43NS0xNi40NCwwLTI5LjY1LDMuODgtMzkuNDksMTEuNzdzLTE0LjgyLDE4LjMxLTE0LjgyLDMxLjU2YTM5Ljc0LDM5Ljc0LDAsMCwwLDEzLjk0LDMxLjI3YzkuMjUsOC4zNCwyMSwxMi41MSwzNC43OSwxMi41MSwxNi4yOSwwLDI5LjIxLTcuMywzOS0yMS44OWgxdjE3LjcyaDIyLjYxVjI1MEM1MTAuMjUsMjMzLjQ1LDUwNS4yNiwyMjAuMzQsNDk1LjEzLDIxMVpNNDc1LjksMzAwLjNhMzcuMzIsMzcuMzIsMCwwLDEtMjYuNTcsMTEuMTZBMjguNjEsMjguNjEsMCwwLDEsNDMxLDMwNS4yMWExOS40MSwxOS40MSwwLDAsMS03Ljc3LTE1LjYzYzAtNywzLjIyLTEyLjgxLDkuNTQtMTcuNDJzMTQuNTMtNywyNC4wNy03QzQ3MCwyNjUsNDgwLjMsMjY4LDQ4Ny42NCwyNzMuOTQsNDg3LjY0LDI4NC4wNyw0ODMuNjgsMjkyLjg1LDQ3NS45LDMwMC4zWm0tOTMuNjUtMTQyQTU1LjcxLDU1LjcxLDAsMCwwLDM0MS43NCwxNDJIMjc5LjA3VjMyOC43NEgzMDIuN1YyNTMuMWgzOWMxNiwwLDI5LjUtNS4zNiw0MC41MS0xNS45My44OC0uODksMS43Ni0xLjc5LDIuNjUtMi42OEE1NC40NSw1NC40NSwwLDAsMCwzODIuMjUsMTU4LjI2Wm0tMTYuNTgsNjIuMjNhMzAuNjUsMzAuNjUsMCwwLDEtMjMuMzQsOS42OEgzMDIuN1YxNjVoMzkuNjNhMzIsMzIsMCwwLDEsMjIuNiw5LjIzQTMzLjE4LDMzLjE4LDAsMCwxLDM2NS42NywyMjAuNDlaTTYxNC4zMSwyMDEsNTc3Ljc3LDI5Mi43aC0uNDVMNTM5LjksMjAxSDUxNC4yMUw1NjYsMzIwLjU1bC0yOS4zNSw2NC4zMkg1NjFMNjQwLDIwMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjUuMyAyMzQuM0wxMDQuNiAxM2wyODAuOCAxNjEuMi02MC4xIDYwLjF6TTQ3IDBDMzQgNi44IDI1LjMgMTkuMiAyNS4zIDM1LjN2NDQxLjNjMCAxNi4xIDguNyAyOC41IDIxLjcgMzUuM2wyNTYuNi0yNTZMNDcgMHptNDI1LjIgMjI1LjZsLTU4LjktMzQuMS02NS43IDY0LjUgNjUuNyA2NC41IDYwLjEtMzQuMWMxOC0xNC4zIDE4LTQ2LjUtMS4yLTYwLjh6TTEwNC42IDQ5OWwyODAuOC0xNjEuMi02MC4xLTYwLjFMMTA0LjYgNDk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbHVzRyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuMDYxIDIyOC40OTZjMS44MzQgOS42OTIgMy4xNDMgMTkuMzg0IDMuMTQzIDMxLjk1NkMzODkuMjA0IDM3MC4yMDUgMzE1LjU5OSA0NDggMjA0LjggNDQ4Yy0xMDYuMDg0IDAtMTkyLTg1LjkxNS0xOTItMTkyczg1LjkxNi0xOTIgMTkyLTE5MmM1MS44NjQgMCA5NS4wODMgMTguODU5IDEyOC42MTEgNTAuMjkybC01Mi4xMjYgNTAuMDNjLTE0LjE0NS0xMy42MjEtMzkuMDI4LTI5LjU5OS03Ni40ODUtMjkuNTk5LTY1LjQ4NCAwLTExOC45MiA1NC4yMjEtMTE4LjkyIDEyMS4yNzcgMCA2Ny4wNTYgNTMuNDM2IDEyMS4yNzcgMTE4LjkyIDEyMS4yNzcgNzUuOTYxIDAgMTA0LjUxMy01NC43NDUgMTA4Ljk2NS04Mi43NzNIMjA0Ljh2LTY2LjAwOWgxODEuMjYxem0xODUuNDA2IDYuNDM3VjE3OS4yaC01Ni4wMDF2NTUuNzMzaC01NS43MzN2NTYuMDAxaDU1LjczM3Y1NS43MzNoNTYuMDAxdi01NS43MzNINjI3LjJ2LTU2LjAwMWgtNTUuNzMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbHVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2NCAzNTZjLTU1LjMgMC0xMDAtNDQuNy0xMDAtMTAwczQ0LjctMTAwIDEwMC0xMDBjMjcgMCA0OS41IDkuOCA2NyAyNi4ybC0yNy4xIDI2LjFjLTcuNC03LjEtMjAuMy0xNS40LTM5LjgtMTUuNC0zNC4xIDAtNjEuOSAyOC4yLTYxLjkgNjMuMiAwIDM0LjkgMjcuOCA2My4yIDYxLjkgNjMuMiAzOS42IDAgNTQuNC0yOC41IDU2LjgtNDMuMUgxNjR2LTM0LjRoOTQuNGMxIDUgMS42IDEwLjEgMS42IDE2LjYgMCA1Ny4xLTM4LjMgOTcuNi05NiA5Ny42em0yMjAtODEuOGgtMjl2MjloLTI5LjJ2LTI5aC0yOVYyNDVoMjl2LTI5SDM1NXYyOWgyOXYyOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOS4xLDgsOCwxMTkuMSw4LDI1NlMxMTkuMSw1MDQsMjU2LDUwNCw1MDQsMzkyLjksNTA0LDI1NiwzOTIuOSw4LDI1Niw4Wk0xODUuMywzODBhMTI0LDEyNCwwLDAsMSwwLTI0OGMzMS4zLDAsNjAuMSwxMSw4MywzMi4zbC0zMy42LDMyLjZjLTEzLjItMTIuOS0zMS4zLTE5LjEtNDkuNC0xOS4xLTQyLjksMC03Ny4yLDM1LjUtNzcuMiw3OC4xUzE0Mi4zLDMzNCwxODUuMywzMzRjMzIuNiwwLDY0LjktMTkuMSw3MC4xLTUzLjNIMTg1LjNWMjM4LjFIMzAyLjJhMTA5LjIsMTA5LjIsMCwwLDEsMS45LDIwLjdjMCw3MC44LTQ3LjUsMTIxLjItMTE4LjgsMTIxLjJaTTQxNS41LDI3My44djM1LjVIMzgwVjI3My44SDM0NC41VjIzOC4zSDM4MFYyMDIuOGgzNS41djM1LjVoMzUuMnYzNS41WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU2LjggMTI2LjhjMzcuNiA2MC42IDY0LjIgMTEzLjEgODQuMyAxNjIuNS04LjMgMzMuOC0xOC44IDY2LjUtMzEuMyA5OC4zLTEzLjItNTIuMy0yNi41LTEwMS4zLTU2LTE0OC41IDYuNS0zNi40IDIuMy03My42IDMtMTEyLjN6TTEwOS4zIDIwMEgxNi4xYy02LjUgMC0xMC41IDcuNS02LjUgMTIuN0M1MS44IDI2NyA4MS4zIDMzMC41IDEwMS4zIDQwMGgxMDMuNWMtMTYuMi02OS43LTM4LjctMTMzLjctODIuNS0xOTMuNS0zLTQtOC02LjUtMTMtNi41em00Ny44LTg4YzY4LjUgMTA4IDEzMCAyMzQuNSAxMzguMiAzNjhINDA5Yy0xMi0xMzgtNjguNC0yNjUtMTQzLjItMzY4SDE1Ny4xem0yNTEuOC02OC41Yy0xLjgtNi44LTguMi0xMS41LTE1LjItMTEuNWgtODguM2MtNS4zIDAtOSA1LTcuOCAxMC4zIDEzLjIgNDYuNSAyMi4zIDk1LjUgMjYuNSAxNDYgNDguMiA4Ni4yIDc5LjcgMTc4LjMgOTAuNiAyNzAuOCAxNS44LTYwLjUgMjUuMy0xMzMuNSAyNS4zLTIwMyAwLTczLjYtMTIuMS0xNDUuMS0zMS4xLTIxMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDI2MS44QzQ4OCA0MDMuMyAzOTEuMSA1MDQgMjQ4IDUwNCAxMTAuOCA1MDQgMCAzOTMuMiAwIDI1NlMxMTAuOCA4IDI0OCA4YzY2LjggMCAxMjMgMjQuNSAxNjYuMyA2NC45bC02Ny41IDY0LjlDMjU4LjUgNTIuNiA5NC4zIDExNi42IDk0LjMgMjU2YzAgODYuNSA2OS4xIDE1Ni42IDE1My43IDE1Ni42IDk4LjIgMCAxMzUtNzAuNCAxNDAuOC0xMDYuOUgyNDh2LTg1LjNoMjM2LjFjMi4zIDEyLjcgMy45IDI0LjkgMy45IDQxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYXRpcGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4xIDggMCAxMTkuMSAwIDI1NnMxMTEuMSAyNDggMjQ4IDI0OCAyNDgtMTExLjEgMjQ4LTI0OFMzODQuOSA4IDI0OCA4em0xMTQuNiAyMjYuNGwtMTEzIDE1Mi43LTExMi43LTE1Mi43Yy04LjctMTEuOS0xOS4xLTUwLjQgMTMuNi03MiAyOC4xLTE4LjEgNTQuNi00LjIgNjguNSAxMS45IDE1LjkgMTcuOSA0Ni42IDE2LjkgNjEuNyAwIDEzLjktMTYuMSA0MC40LTMwIDY4LjEtMTEuOSAzMi45IDIxLjYgMjIuNiA2MCAxMy44IDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmF2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS4xIDIxMmM0LjQgNC40IDQuNCAxMS45IDAgMTYuM2wtOS43IDkuN2MtNC40IDQuNy0xMS45IDQuNy0xNi42IDBsLTEwLjUtMTAuNWMtNC40LTQuNy00LjQtMTEuOSAwLTE2LjZsOS43LTkuN2M0LjQtNC40IDExLjktNC40IDE2LjYgMGwxMC41IDEwLjh6bS0zMC4yLTE5LjdjMy0zIDMtNy44IDAtMTAuNS0yLjgtMy03LjUtMy0xMC41IDAtMi44IDIuOC0yLjggNy41IDAgMTAuNSAzLjEgMi44IDcuOCAyLjggMTAuNSAwem0tMjYgNS4zYy0zIDIuOC0zIDcuNSAwIDEwLjIgMi44IDMgNy41IDMgMTAuNSAwIDIuOC0yLjggMi44LTcuNSAwLTEwLjItMy0zLTcuNy0zLTEwLjUgMHptNzIuNS0xMy4zYy0xOS45LTE0LjQtMzMuOC00My4yLTExLjktNjguMSAyMS42LTI0LjkgNDAuNy0xNy4yIDU5LjguOCAxMS45IDExLjMgMjkuMyAyNC45IDE3LjIgNDguMi0xMi41IDIzLjUtNDUuMSAzMy4yLTY1LjEgMTkuMXptNDcuNy00NC41Yy04LjktMTAtMjMuMyA2LjktMTUuNSAxNi4xIDcuNCA5IDMyLjEgMi40IDE1LjUtMTYuMXpNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4em0tNjYuMiA0Mi42YzIuNS0xNi4xLTIwLjItMTYuNi0yNS4yLTI1LjctMTMuNi0yNC4xLTI3LjctMzYuOC01NC41LTMwLjQgMTEuNi04IDIzLjUtNi4xIDIzLjUtNi4xLjMtNi40IDAtMTMtOS40LTI0LjkgMy45LTEyLjUuMy0yMi40LjMtMjIuNCAxNS41LTguNiAyNi44LTI0LjQgMjkuMS00My4yIDMuNi0zMS0xOC44LTU5LjItNDkuOC02Mi44LTIyLjEtMi41LTQzLjcgNy43LTU0LjMgMjUuNy0yMy4yIDQwLjEgMS40IDcwLjkgMjIuNCA4MS40LTE0LjQtMS40LTM0LjMtMTEuOS00MC4xLTM0LjMtNi42LTI1LjcgMi44LTQ5LjggOC45LTYxLjQgMCAwLTQuNC01LjgtOC04LjkgMCAwLTEzLjggMC0yNC42IDUuMyAxMS45LTE1LjIgMjUuMi0xNC40IDI1LjItMTQuNCAwLTYuNC0uNi0xNC45LTMuNi0yMS42LTUuNC0xMS0yMy44LTEyLjktMzEuNyAyLjguMS0uMi4zLS40LjQtLjUtNSAxMS45LTEuMSA1NS45IDE2LjkgODcuMi0yLjUgMS40LTkuMSA2LjEtMTMgMTAtMjEuNiA5LjctNTYuMiA2MC4zLTU2LjIgNjAuMy0yOC4yIDEwLjgtNzcuMiA1MC45LTcwLjYgNzkuNy4zIDMgMS40IDUuNSAzIDcuNS0yLjggMi4yLTUuNSA1LTguMyA4LjMtMTEuOSAxMy44LTUuMyAzNS4yIDE3LjcgMjQuNCAxNS44LTcuMiAyOS42LTIwLjIgMzYuMy0zMC40IDAgMC01LjUtNS0xNi4zLTQuNCAyNy43LTYuNiAzNC4zLTkuNCA0Ni4yLTkuMSA4IDMuOSA4LTM0LjMgOC0zNC4zIDAtMTQuNy0yLjItMzEtMTEuMS00MS41IDEyLjUgMTIuMiAyOS4xIDMyLjcgMjggNjAuNi0uOCAxOC4zLTE1LjIgMjMtMTUuMiAyMy05LjEgMTYuNi00My4yIDY1LjktMzAuNCAxMDYgMCAwLTkuNy0xNC45LTEwLjItMjIuMS0xNy40IDE5LjQtNDYuNSA1Mi4zLTI0LjYgNjQuNSAyNi42IDE0LjcgMTA4LjgtODguNiAxMjYuMi0xNDIuMyAzNC42LTIwLjggNTUuNC00Ny4zIDYzLjktNjUgMjIgNDMuNSA5NS4zIDk0LjUgMTAxLjEgNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBmaXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMi41IDMwMS40YzAtNzMuOCAxMDUuMS0xMjIuNSAxMDUuMS0yMDMgMC00Ny4xLTM0LTg4LTM5LjEtOTAuNC40IDMuMy42IDYuNy42IDEwQzE3OS4xIDExMC4xIDMyIDE3MS45IDMyIDI4Ni42YzAgNDkuOCAzMi4yIDc5LjIgNjYuNSAxMDguMyA2NS4xIDQ2LjcgNzguMSA3MS40IDc4LjEgODYuNiAwIDEwLjEtNC44IDE3LTQuOCAyMi4zIDEzLjEtMTYuNyAxNy40LTMxLjkgMTcuNS00Ni40IDAtMjkuNi0yMS43LTU2LjMtNDQuMi04Ni41LTE2LTIyLjMtMzIuNi00Mi42LTMyLjYtNjkuNXptMjA1LjMtMzljLTEyLjEtNjYuOC03OC0xMjQuNC05NC43LTEzMC45bDQgNy4yYzIuNCA1LjEgMy40IDEwLjkgMy40IDE3LjEgMCA0NC43LTU0LjIgMTExLjItNTYuNiAxMTYuNy0yLjIgNS4xLTMuMiAxMC41LTMuMiAxNS44IDAgMjAuMSAxNS4yIDQyLjEgMTcuOSA0Mi4xIDIuNCAwIDU2LjYtNTUuNCA1OC4xLTg3LjcgNi40IDExLjcgOS4xIDIyLjYgOS4xIDMzLjQgMCA0MS4yLTQxLjggOTYuOS00MS44IDk2LjkgMCAxMS42IDMxLjkgNTMuMiAzNS41IDUzLjIgMSAwIDIuMi0xLjQgMy4yLTIuNCAzNy45LTM5LjMgNjcuMy04NSA2Ny4zLTEzNi44IDAtOC0uNy0xNi4yLTIuMi0yNC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcnVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MS4zIDE4OS4zYy0xLjEgMTAgNS4yIDE5LjEgNS4yIDE5LjEuNy03LjUgMi4yLTEyLjggNC0xNi42LjQgMTAuMyAzLjIgMjMuNSAxMi44IDM0LjEgNi45IDcuNiAzNS42IDIzLjMgNTQuOSA2LjEgMSAyLjQgMi4xIDUuMyAzIDguNSAyLjkgMTAuMy0yLjcgMjUuMy0yLjcgMjUuM3MxNS4xLTE3LjEgMTMuOS0zMi41YzEwLjgtLjUgMjEuNC04LjQgMjEuMS0xOS41IDAgMC0xOC45IDEwLjQtMzUuNS04LjgtOS43LTExLjItNDAuOS00Mi04My4xLTMxLjggNC4zIDEgOC45IDIuNCAxMy41IDQuMWgtLjFjLTQuMiAyLTYuNSA3LjEtNyAxMnptMjguMy0xLjhjMTkuNSAxMSAzNy40IDI1LjcgNDQuOSAzNy01LjcgMy4zLTIxLjcgMTAuNC0zOC0xLjctMTAuMy03LjYtOS44LTI2LjItNi45LTM1LjN6bTE0Mi4xIDQ1LjhjLTEuMiAxNS41IDEzLjkgMzIuNSAxMy45IDMyLjVzLTUuNi0xNS0yLjctMjUuM2MuOS0zLjIgMi02IDMtOC41IDE5LjMgMTcuMyA0OCAxLjUgNTQuOC02LjEgOS42LTEwLjYgMTIuMy0yMy44IDEyLjgtMzQuMSAxLjggMy44IDMuNCA5LjEgNCAxNi42IDAgMCA2LjQtOS4xIDUuMi0xOS4xLS42LTUtMi45LTEwLTctMTEuOGgtLjFjNC42LTEuOCA5LjItMy4yIDEzLjUtNC4xLTQyLjMtMTAuMi03My40IDIwLjYtODMuMSAzMS44LTE2LjcgMTkuMi0zNS41IDguOC0zNS41IDguOC0uMiAxMC45IDEwLjQgMTguOSAyMS4yIDE5LjN6bTYyLjctNDUuOGMzIDkuMSAzLjQgMjcuNy03IDM1LjQtMTYuMyAxMi4xLTMyLjIgNS0zNy45IDEuNiA3LjUtMTEuNCAyNS40LTI2IDQ0LjktMzd6TTE2MCA0MTguNWgtMjkuNGMtNS41IDAtOC4yIDEuNi05LjUgMi45LTEuOSAyLTIuMiA0LjctLjkgOC4xIDMuNSA5LjEgMTEuNCAxNi41IDEzLjcgMTguNiAzLjEgMi43IDcuNSA0LjMgMTEuOCA0LjMgNC40IDAgOC4zLTEuNyAxMS00LjYgNy41LTguMiAxMS45LTE3LjEgMTMtMTkuOC42LTEuNSAxLjMtNC41LS45LTYuOC0xLjgtMS44LTQuNy0yLjctOC44LTIuN3ptMTg5LjItMTAxLjJjLTIuNCAxNy45LTEzIDMzLjgtMjQuNiA0My43LTMuMS0yMi43LTMuNy01NS41LTMuNy02Mi40IDAtMTQuNyA5LjUtMjQuNSAxMi4yLTI2LjEgMi41LTEuNSA1LjQtMyA4LjMtNC42IDE4LTkuNiA0MC40LTIxLjYgNDAuNC00My43IDAtMTYuMi05LjMtMjMuMi0xNS40LTI3LjgtLjgtLjYtMS41LTEuMS0yLjItMS43LTIuMS0xLjctMy43LTMtNC4zLTQuNC00LjQtOS44LTMuNi0zNC4yLTEuNy0zNy42LjYtLjYgMTYuNy0yMC45IDExLjgtMzkuMi0yLTcuNC02LjktMTMuMy0xNC4xLTE3LTUuMy0yLjctMTEuOS00LjItMTkuNS00LjUtLjEtMi0uNS0zLjktLjktNS45LS42LTIuNi0xLjEtNS4zLS45LTguMS40LTQuNy44LTkgMi4yLTExLjMgOC40LTEzLjMgMjguOC0xNy42IDI5LTE3LjZsMTIuMy0yLjQtOC4xLTkuNWMtLjEtLjItMTcuMy0xNy41LTQ2LjMtMTcuNS03LjkgMC0xNiAxLjMtMjQuMSAzLjktMjQuMiA3LjgtNDIuOSAzMC41LTQ5LjQgMzkuMy0zLjEtMS02LjMtMS45LTkuNi0yLjctNC4yLTE1LjggOS0zOC41IDktMzguNXMtMTMuNi0zLTMzLjcgMTUuMmMtMi42LTYuNS04LjEtMjAuNS0xLjgtMzcuMkMxODQuNiAxMC4xIDE3Ny4yIDI2IDE3NSA0MC40Yy03LjYtNS40LTYuNy0yMy4xLTcuMi0yNy42LTcuNS45LTI5LjIgMjEuOS0yOC4yIDQ4LjMtMiAuNS0zLjkgMS4xLTUuOSAxLjctNi41LTguOC0yNS4xLTMxLjUtNDkuNC0zOS4zLTcuOS0yLjItMTYtMy41LTIzLjktMy41LTI5IDAtNDYuMSAxNy4zLTQ2LjMgMTcuNUw2IDQ2LjlsMTIuMyAyLjRjLjIgMCAyMC42IDQuMyAyOSAxNy42IDEuNCAyLjIgMS44IDYuNiAyLjIgMTEuMy4yIDIuOC0uNCA1LjUtLjkgOC4xLS40IDEuOS0uOCAzLjktLjkgNS45LTcuNy4zLTE0LjIgMS44LTE5LjUgNC41LTcuMiAzLjctMTIuMSA5LjYtMTQuMSAxNy01IDE4LjIgMTEuMiAzOC41IDExLjggMzkuMiAxLjkgMy40IDIuNyAyNy44LTEuNyAzNy42LS42IDEuNC0yLjIgMi43LTQuMyA0LjQtLjcuNS0xLjQgMS4xLTIuMiAxLjctNi4xIDQuNi0xNS40IDExLjctMTUuNCAyNy44IDAgMjIuMSAyMi40IDM0LjEgNDAuNCA0My43IDMgMS42IDUuOCAzLjEgOC4zIDQuNiAyLjcgMS42IDEyLjIgMTEuNCAxMi4yIDI2LjEgMCA2LjktLjYgMzkuNy0zLjcgNjIuNC0xMS42LTkuOS0yMi4yLTI1LjktMjQuNi00My44IDAgMC0yOS4yIDIyLjYtMjAuNiA3MC44IDUuMiAyOS41IDIzLjIgNDYuMSA0NyA1NC43IDguOCAxOS4xIDI5LjQgNDUuNyA2Ny4zIDQ5LjZDMTQzIDUwNC4zIDE2MyA1MTIgMTkyLjIgNTEyaC4yYzI5LjEgMCA0OS4xLTcuNyA2My42LTE5LjUgMzcuOS0zLjkgNTguNS0zMC41IDY3LjMtNDkuNiAyMy44LTguNyA0MS43LTI1LjIgNDctNTQuNyA4LjItNDguNC0yMS4xLTcwLjktMjEuMS03MC45ek0zMDUuNyAzNy43YzUuNi0xLjggMTEuNi0yLjcgMTcuNy0yLjcgMTEgMCAxOS45IDMgMjQuNyA1LTMuMSAxLjQtNi40IDMuMi05LjcgNS4zLTIuNC0uNC01LjYtLjgtOS4yLS44LTEwLjUgMC0yMC41IDMuMS0yOC43IDguOS0xMi4zIDguNy0xOCAxNi45LTIwLjcgMjIuNC0yLjItMS4zLTQuNS0yLjUtNy4xLTMuNy0xLjYtLjgtMy4xLTEuNS00LjctMi4yIDYuMS05LjEgMTkuOS0yNi41IDM3LjctMzIuMnptMjEgMTguMmMtLjggMS0xLjYgMi4xLTIuMyAzLjItMy4zIDUuMi0zLjkgMTEuNi00LjQgMTcuOC0uNSA2LjQtMS4xIDEyLjUtNC40IDE3LTQuMi44LTguMSAxLjctMTEuNSAyLjctMi4zLTMuMS01LjYtNy0xMC41LTExLjIgMS40LTQuOCA1LjUtMTYuMSAxMy41LTIyLjUgNS42LTQuMyAxMi4yLTYuNyAxOS42LTd6TTQ1LjYgNDUuM2MtMy4zLTIuMi02LjYtNC05LjctNS4zIDQuOC0yIDEzLjctNSAyNC43LTUgNi4xIDAgMTIgLjkgMTcuNyAyLjcgMTcuOCA1LjggMzEuNiAyMy4yIDM3LjcgMzIuMS0xLjYuNy0zLjIgMS40LTQuOCAyLjItMi41IDEuMi00LjkgMi41LTcuMSAzLjctMi42LTUuNC04LjMtMTMuNy0yMC43LTIyLjQtOC4zLTUuOC0xOC4yLTguOS0yOC44LTguOS0zLjQuMS02LjYuNS05IC45em00NC43IDQwLjFjLTQuOSA0LjItOC4zIDgtMTAuNSAxMS4yLTMuNC0uOS03LjMtMS45LTExLjUtMi43QzY1IDg5LjUgNjQuNSA4My40IDY0IDc3Yy0uNS02LjItMS4xLTEyLjYtNC40LTE3LjgtLjctMS4xLTEuNS0yLjItMi4zLTMuMiA3LjQuMyAxNCAyLjYgMTkuNSA3IDggNi4zIDEyLjEgMTcuNiAxMy41IDIyLjR6TTU4LjEgMjU5LjljLTIuNy0xLjYtNS42LTMuMS04LjQtNC42LTE0LjktOC0zMC4yLTE2LjMtMzAuMi0zMC41IDAtMTEuMSA0LjMtMTQuNiA4LjktMTguMmwuNS0uNGMuNy0uNiAxLjQtMS4yIDIuMi0xLjgtLjkgNy4yLTEuOSAxMy4zLTIuNyAxNC45IDAgMCAxMi4xLTE1IDE1LjctNDQuMyAxLjQtMTEuNS0xLjEtMzQuMy01LjEtNDMgLjIgNC45IDAgOS44LS4zIDE0LjQtLjQtLjgtLjgtMS42LTEuMy0yLjItMy4yLTQtMTEuOC0xNy41LTkuNC0yNi42LjktMy41IDMuMS02IDYuNy03LjggMy44LTEuOSA4LjgtMi45IDE1LjEtMi45IDEyLjMgMCAyNS45IDMuNyAzMi45IDYgMjUuMSA4IDU1LjQgMzAuOSA2NC4xIDM3LjcuMi4yLjQuMy40LjNsNS42IDMuOS0zLjUtNS44Yy0uMi0uMy0xOS4xLTMxLjQtNTMuMi00Ni41IDItMi45IDcuNC04LjEgMjEuNi0xNS4xIDIxLjQtMTAuNSA0Ni41LTE1LjggNzQuMy0xNS44IDI3LjkgMCA1Mi45IDUuMyA3NC4zIDE1LjggMTQuMiA2LjkgMTkuNiAxMi4yIDIxLjYgMTUuMS0zNCAxNS4xLTUyLjkgNDYuMi01My4xIDQ2LjVsLTMuNSA1LjggNS42LTMuOXMuMi0uMS40LS4zYzguNy02LjggMzktMjkuOCA2NC4xLTM3LjcgNy0yLjIgMjAuNi02IDMyLjktNiA2LjMgMCAxMS4zIDEgMTUuMSAyLjkgMy41IDEuOCA1LjcgNC40IDYuNyA3LjggMi41IDkuMS02LjEgMjIuNi05LjQgMjYuNi0uNS42LS45IDEuMy0xLjMgMi4yLS4zLTQuNi0uNS05LjUtLjMtMTQuNC00IDguOC02LjUgMzEuNS01LjEgNDMgMy42IDI5LjMgMTUuNyA0NC4zIDE1LjcgNDQuMy0uOC0xLjYtMS44LTcuNy0yLjctMTQuOS43LjYgMS41IDEuMiAyLjIgMS44bC41LjRjNC42IDMuNyA4LjkgNy4xIDguOSAxOC4yIDAgMTQuMi0xNS40IDIyLjUtMzAuMiAzMC41LTIuOSAxLjUtNS43IDMuMS04LjQgNC42LTguNyA1LTE4IDE2LjctMTkuMSAzNC4yLS45IDE0LjYuOSA0OS45IDMuNCA3NS45LTEyLjQgNC44LTI2LjcgNi40LTM5LjcgNi44LTItNC4xLTMuOS04LjUtNS41LTEzLjEtLjctMi0xOS42LTUxLjEtMjYuNC02Mi4yIDUuNSAzOSAxNy41IDczLjcgMjMuNSA4OS42LTMuNS0uNS03LjMtLjctMTEuNy0uN2gtMTE3Yy00LjQgMC04LjMuMy0xMS43LjcgNi0xNS45IDE4LjEtNTAuNiAyMy41LTg5LjYtNi44IDExLjItMjUuNyA2MC4zLTI2LjQgNjIuMi0xLjYgNC42LTMuNSA5LTUuNSAxMy4xLTEzLS40LTI3LjItMi0zOS43LTYuOCAyLjUtMjYgNC4zLTYxLjIgMy40LTc1LjktLjktMTcuNC0xMC4zLTI5LjItMTktMzQuMnpNMzQuOCA0MDQuNmMtMTIuMS0yMC04LjctNTQuMS0zLjctNTkuMSAxMC45IDM0LjQgNDcuMiA0NC4zIDc0LjQgNDUuNC0yLjcgNC4yLTUuMiA3LjYtNyAxMGwtMS40IDEuNGMtNy4yIDcuOC04LjYgMTguNS00LjEgMzEuOC0yMi43LS4xLTQ2LjMtOS44LTU4LjItMjkuNXptNDUuNyA0My41YzYgMS4xIDEyLjIgMS45IDE4LjYgMi40IDMuNSA4IDcuNCAxNS45IDEyLjMgMjMuMS0xNC40LTUuOS0yNC40LTE2LTMwLjktMjUuNXpNMTkyIDQ5OC4yYy02MC42LS4xLTc4LjMtNDUuOC04NC45LTY0LjctMy43LTEwLjUtMy40LTE4LjIuOS0yMy4xIDIuOS0zLjMgOS41LTcuMiAyNC42LTcuMmgxMTguOGMxNS4xIDAgMjEuOCAzLjkgMjQuNiA3LjIgNC4yIDQuOCA0LjUgMTIuNi45IDIzLjEtNi42IDE4LjgtMjQuMyA2NC42LTg0LjkgNjQuN3ptODAuNi0yNC42YzQuOS03LjIgOC44LTE1LjEgMTIuMy0yMy4xIDYuNC0uNSAxMi42LTEuMyAxOC42LTIuNC02LjUgOS41LTE2LjUgMTkuNi0zMC45IDI1LjV6bTc2LjYtNjljLTEyIDE5LjctMzUuNiAyOS4zLTU4LjEgMjkuNyA0LjUtMTMuMyAzLjEtMjQuMS00LjEtMzEuOC0uNC0uNS0uOS0xLTEuNC0xLjUtMS44LTIuNC00LjMtNS44LTctMTAgMjcuMi0xLjIgNjMuNS0xMSA3NC40LTQ1LjQgNSA1IDguNCAzOS4xLTMuOCA1OXpNMTkxLjkgMTg3LjdoLjJjMTIuNy0uMSAyNy4yLTE3LjggMjcuMi0xNy44LTkuOSA2LTE4LjggOC4xLTI3LjMgOC4zLTguNS0uMi0xNy40LTIuMy0yNy4zLTguMyAwIDAgMTQuNSAxNy42IDI3LjIgMTcuOHptNjEuNyAyMzAuN2gtMjkuNGMtNC4yIDAtNy4yLjktOC45IDIuNy0yLjIgMi4zLTEuNSA1LjItLjkgNi43IDEgMi42IDUuNSAxMS4zIDEzIDE5LjMgMi43IDIuOSA2LjYgNC41IDExIDQuNXM4LjctMS42IDExLjgtNC4yYzIuMy0yIDEwLjItOS4yIDEzLjctMTguMSAxLjMtMy4zIDEtNi0uOS03LjktMS4zLTEuMy00LTIuOS05LjQtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3VpbGRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuNDI3LDY0SDQuNTcxYzAsMTAzLjI2LDIyLjE5MiwxODAuMDYsNDMuNDE4LDIyMi4zNThDMTEyLjA0Niw0MTQuMTM1LDIyNCw0NDgsMjI1LjI1Niw0NDhhMzEyLjgyNCwzMTIuODI0LDAsMCwwLDE0MC41NS0xMDMuNDc3YzI1LjkwNy0zMy45MjMsNTMuMS04Ny4xOSw2NS45MTYtMTQ1Ljc2MUgxNzEuODMzYzQuMTQsMzYuNDI5LDIyLjE3Nyw2Ny45NDYsNDUuMSw4Ni45NDRoODguNTg5Yy0xNy4wMTIsMjguMjEzLTQ4LjE4Niw1NC40LTgwLjQ1Niw2OS40ODItMzEuMjMyLTEzLjI1OS02OS4wOS00Ni41NDQtOTYuNTQ4LTk4LjM2Mi0yNi43MjYtNTMuODMzLTI3LjA5Mi0xMDUuODgzLTI3LjA5Mi0xMDUuODgzSDQzNy41NzNBNjI1LjkxLDYyNS45MSwwLDAsMCw0NDMuNDI3LDY0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWxwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS44IDM5MS4xbC0xNC4xIDI0LjYtNC42IDgwLjJjMCA4LjktMjguMyAxNi4xLTYzLjEgMTYuMXMtNjMuMS03LjItNjMuMS0xNi4xbC01LjgtNzkuNC0xNC45LTI1LjRjNDEuMiAxNy4zIDEyNiAxNi43IDE2NS42IDB6bS0xOTYtMjUzLjNsMTMuNiAxMjUuNWM1LjktMjAgMjAuOC00NyA0MC01NS4yIDYuMy0yLjcgMTIuNy0yLjcgMTguNy45IDUuMiAzIDkuNiA5LjMgMTAuMSAxMS44IDEuMiA2LjUtMiA5LjEtNC41IDkuMS0zIDAtNS4zLTQuNi02LjgtNy4zLTQuMS03LjMtMTAuMy03LjYtMTYuOS0yLjgtNi45IDUtMTIuOSAxMy40LTE3LjEgMjAuNy01LjEgOC44LTkuNCAxOC41LTEyIDI4LjItMS41IDUuNi0yLjkgMTQuNi0uNiAxOS45IDEgMi4yIDIuNSAzLjYgNC45IDMuNiA1IDAgMTIuMy02LjYgMTUuOC0xMC4xIDQuNS00LjUgMTAuMy0xMS41IDEyLjUtMTZsNS4yLTE1LjVjMi42LTYuOCA5LjktNS42IDkuOSAwIDAgMTAuMi0zLjcgMTMuNi0xMCAzNC43LTUuOCAxOS41LTcuNiAyNS44LTcuNiAyNS44LS43IDIuOC0zLjQgNy41LTYuMyA3LjUtMS4yIDAtMi4xLS40LTIuNi0xLjItMS0xLjQtLjktNS4zLS44LTYuMy4yLTMuMiA2LjMtMjIuMiA3LjMtMjUuMi0yIDIuMi00LjEgNC40LTYuNCA2LjYtNS40IDUuMS0xNC4xIDExLjgtMjEuNSAxMS44LTMuNCAwLTUuNi0uOS03LjctMi40bDcuNiA3OS42YzIgNSAzOS4yIDE3LjEgODguMiAxNy4xIDQ5LjEgMCA4Ni4zLTEyLjIgODguMi0xNy4xbDEwLjktOTQuNmMtNS43IDUuMi0xMi4zIDExLjYtMTkuNiAxNC44LTUuNCAyLjMtMTcuNCAzLjgtMTcuNC01LjcgMC01LjIgOS4xLTE0LjggMTQuNC0yMS41IDEuNC0xLjcgNC43LTUuOSA0LjctOC4xIDAtMi45LTYtMi4yLTExLjcgMi41LTMuMiAyLjctNi4yIDYuMy04LjcgOS43LTQuMyA2LTYuNiAxMS4yLTguNSAxNS41LTYuMiAxNC4yLTQuMSA4LjYtOS4xIDIyLTUgMTMuMy00LjIgMTEuOC01LjIgMTQtLjkgMS45LTIuMiAzLjUtNCA0LjUtMS45IDEtNC41LjktNi4xLS4zLS45LS42LTEuMy0xLjktMS4zLTMuNyAwLS45LjEtMS44LjMtMi43IDEuNS02LjEgNy44LTE4LjEgMTUtMzQuMyAxLjYtMy43IDEtMi42LjgtMi4zLTYuMiA2LTEwLjkgOC45LTE0LjQgMTAuNS01LjggMi42LTEzIDIuNi0xNC41LTQuMS0uMS0uNC0uMS0uOC0uMi0xLjItMTEuOCA5LjItMjQuMyAxMS43LTIwLTguMS00LjYgOC4yLTEyLjYgMTQuOS0yMi40IDE0LjktNC4xIDAtNy4xLTEuNC04LjYtNS4xLTIuMy01LjUgMS4zLTE0LjkgNC42LTIzLjggMS43LTQuNSA0LTkuOSA3LjEtMTYuMiAxLjYtMy40IDQuMi01LjQgNy42LTQuNS42LjIgMS4xLjQgMS42LjcgMi42IDEuOCAxLjYgNC41LjMgNy4yLTMuOCA3LjUtNy4xIDEzLTkuMyAyMC44LS45IDMuMy0yIDkgMS41IDkgMi40IDAgNC43LS44IDYuOS0yLjQgNC42LTMuNCA4LjMtOC41IDExLjEtMTMuNSAyLTMuNiA0LjQtOC4zIDUuNi0xMi4zLjUtMS43IDEuMS0zLjMgMS44LTQuOCAxLjEtMi41IDIuNi01LjEgNS4yLTUuMSAxLjMgMCAyLjQuNSAzLjIgMS41IDEuNyAyLjIgMS4zIDQuNS40IDYuOS0yIDUuNi00LjcgMTAuNi02LjkgMTYuNy0xLjMgMy41LTIuNyA4LTIuNyAxMS43IDAgMy40IDMuNyAyLjYgNi44IDEuMiAyLjQtMS4xIDQuOC0yLjggNi44LTQuNSAxLjItNC45LjktMy44IDI2LjQtNjguMiAxLjMtMy4zIDMuNy00LjcgNi4xLTQuNyAxLjIgMCAyLjIuNCAzLjIgMS4xIDEuNyAxLjMgMS43IDQuMSAxIDYuMi0uNyAxLjktLjYgMS4zLTQuNSAxMC41LTUuMiAxMi4xLTguNiAyMC44LTEzLjIgMzEuOS0xLjkgNC42LTcuNyAxOC45LTguNyAyMi4zLS42IDIuMi0xLjMgNS44IDEgNS44IDUuNCAwIDE5LjMtMTMuMSAyMy4xLTE3IC4yLS4zLjUtLjQuOS0uNi42LTEuOSAxLjItMy43IDEuNy01LjUgMS40LTMuOCAyLjctOC4yIDUuMy0xMS4zLjgtMSAxLjctMS42IDIuNy0xLjYgMi44IDAgNC4yIDEuMiA0LjIgNCAwIDEuMS0uNyA1LjEtMS4xIDYuMiAxLjQtMS41IDIuOS0zIDQuNS00LjUgMTUtMTMuOSAyNS43LTYuOCAyNS43LjIgMCA3LjQtOC45IDE3LjctMTMuOCAyMy40LTEuNiAxLjktNC45IDUuNC01IDYuNCAwIDEuMy45IDEuOCAyLjIgMS44IDIgMCA2LjQtMy41IDgtNC43IDUtMy45IDExLjgtOS45IDE2LjYtMTQuMWwxNC44LTEzNi44Yy0zMC41IDE3LjEtMTk3LjYgMTcuMi0yMjguMy4yem0yMjkuNy04LjVjMCAyMS0yMzEuMiAyMS0yMzEuMiAwIDAtOC44IDUxLjgtMTUuOSAxMTUuNi0xNS45IDkgMCAxNy44LjEgMjYuMy40bDEyLjYtNDguN0wyMjguMS42YzEuNC0xLjQgNS44LS4yIDkuOSAzLjVzNi42IDcuOSA1LjMgOS4zbC0uMS4xTDE4NS45IDc0bC0xMCA0MC43YzM5LjkgMi42IDY3LjYgOC4xIDY3LjYgMTQuNnptLTY5LjQgNC42YzAtLjgtLjktMS41LTIuNS0yLjFsLS4yLjhjMCAxLjMtNSAyLjQtMTEuMSAyLjRzLTExLjEtMS4xLTExLjEtMi40YzAtLjEgMC0uMi4xLS4zbC4yLS43Yy0xLjguNi0zIDEuNC0zIDIuMyAwIDIuMSA2LjIgMy43IDEzLjcgMy43IDcuNy4xIDEzLjktMS42IDEzLjktMy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYWNrZXJOZXdzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxLjIgMjI5LjJIMjFjLjEtLjEuMi0uMy4zLS40IDAgLjEgMCAuMy0uMS40em0yMTggNTMuOVYzODRoLTMxLjRWMjgxLjNMMTI4IDEyOGgzNy4zYzUyLjUgOTguMyA0OS4yIDEwMS4yIDU5LjMgMTI1LjYgMTIuMy0yNyA1LjgtMjQuNCA2MC42LTEyNS42SDMyMGwtODAuOCAxNTUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFja2VyTmV3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMjEuMiAxOTcuMkgyMWMuMS0uMS4yLS4zLjMtLjQgMCAuMSAwIC4zLS4xLjR6bTIxOCA1My45VjM4NGgtMzEuNFYyODEuM0wxMjggMTI4aDM3LjNjNTIuNSA5OC4zIDQ5LjIgMTAxLjIgNTkuMyAxMjUuNiAxMi4zLTI3IDUuOC0yNC40IDYwLjYtMTI1LjZIMzIwbC04MC44IDE1NS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYWNrZXJyYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Ny41IDEyOEM0NjMgMTAzLjA1IDI4NS4xMyAwIDI1Ni4xNiAwUzQ5LjI1IDEwMi43OSAzNC44NCAxMjhzLTE0LjQ5IDIzMC44IDAgMjU2IDE5Mi4zOCAxMjggMjIxLjMyIDEyOFM0NjMgNDA5LjA4IDQ3Ny40OSAzODRzMTQuNTEtMjMxIC4wMS0yNTZ6TTMxNi4xMyA0MTQuMjJjLTQgMC00MC45MS0zNS43Ny0zOC0zOC42OS44Ny0uODcgNi4yNi0xLjQ4IDE3LjU1LTEuODMgMC0yNi4yMy41OS02OC41OS45NC04Ni4zMiAwLTItLjQ0LTMuNDMtLjQ0LTUuODVoLTc5LjkzYzAgNy4xLS40NiAzNi4yIDEuMzcgNzIuODguMjMgNC41NC0xLjU4IDYtNS43NCA1Ljk0LTEwLjEzIDAtMjAuMjctLjExLTMwLjQxLS4wOC00LjEgMC01Ljg3LTEuNTMtNS43NC02LjExLjkyLTMzLjQ0IDMtODQtLjE1LTIxMi42N3YtMy4xN2MtOS42Ny0uMzUtMTYuMzgtMS0xNy4yNi0xLjg0LTIuOTItMi45MiAzNC41NC0zOC42OSAzOC40OS0zOC42OXM0MS4xNyAzNS43OCAzOC4yNyAzOC42OWMtLjg3Ljg3LTcuOSAxLjQ5LTE2Ljc3IDEuODR2My4xNmMtMi40MiAyNS43NS0yIDc5LjU5LTIuNjMgMTA1LjM5aDgwLjI2YzAtNC41NS4zOS0zNC43NC0xLjItODMuNjQtLjEtMy4zOS45NS01LjE3IDQuMjEtNS4yIDExLjA3LS4wOCAyMi4xNS0uMTMgMzMuMjMtLjA2IDMuNDYgMCA0LjU3IDEuNzIgNC41IDUuMzhDMzMzIDM1NC42NCAzMzYgMzQxLjI5IDMzNiAzNzMuNjljOC44Ny4zNSAxNi44MiAxIDE3LjY5IDEuODQgMi44OCAyLjkxLTMzLjYyIDM4LjY5LTM3LjU4IDM4LjY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1MS42IDE1Ny42YzAtMS45LS45LTIuOC0yLjgtMi44aC00MC45Yy0xLjYgMC0yLjcgMS40LTIuNyAyLjh2MjAxLjhjMCAxLjQgMS4xIDIuOCAyLjcgMi44aDQwLjljMS45IDAgMi44LS45IDIuOC0yLjh6TTE1Ni41IDE2OGMtMTYuMS0xMS44LTM2LjMtMTcuOS02MC4zLTE4LTE4LjEtLjEtMzQuNiAzLjctNDkuOCAxMS40VjgwLjJjMC0xLjgtLjktMi43LTIuOC0yLjdIMi43Yy0xLjggMC0yLjcuOS0yLjcgMi43djI3OS4yYzAgMS45LjkgMi44IDIuNyAyLjhoNDFjMS45IDAgMi44LS45IDIuOC0yLjhWMjIzLjNjMC0uOC0yLjgtMjcgNDUuOC0yNyA0OC41IDAgNDUuOCAyNi4xIDQ1LjggMjd2MTIyLjZjMCA5IDcuMyAxNi4zIDE2LjQgMTYuM2gyNy4zYzEuOCAwIDIuNy0uOSAyLjctMi44VjIyMy4zYzAtMjMuNC05LjMtNDEuOC0yOC01NS4zem00NzguNCAxMTAuMWMtNi44LTE1LjctMTguNC0yNy0zNC45LTM0LjFsLTU3LjYtMjUuM2MtOC42LTMuNi05LjItMTEuMi0yLjYtMTYuMSA3LjQtNS41IDQ0LjMtMTMuOSA4NCA2LjggMS43IDEgNC0uMyA0LTIuNHYtNDQuN2MwLTEuMy0uNi0yLjEtMS45LTIuNi0xNy43LTYuNi0zNi4xLTkuOS01NS4xLTkuOS0yNi41IDAtNDUuMyA1LjgtNTguNSAxNS40LS41LjQtMjguNCAyMC0yMi43IDUzLjcgMy40IDE5LjYgMTUuOCAzNC4yIDM3LjIgNDMuNmw1My42IDIzLjVjMTEuNiA1LjEgMTUuMiAxMy4zIDEyLjIgMjEuMi0zLjcgOS4xLTEzLjIgMTMuNi0zNi41IDEzLjYtMjQuMyAwLTQ0LjctOC45LTU4LjQtMTkuMS0yLjEtMS40LTQuNC4yLTQuNCAyLjN2MzQuNGMwIDEwLjQgNC45IDE3LjMgMTQuNiAyMC43IDE1LjYgNS41IDMxLjYgOC4yIDQ4LjIgOC4yIDEyLjcgMCAyNS44LTEuMiAzNi4zLTQuMy43LS4zIDM2LTguOSA0NS42LTQ1LjggMy41LTEzLjUgMi40LTI2LjUtMy4xLTM5LjF6TTM3Ni4yIDE0OS44Yy0zMS43IDAtMTA0LjIgMjAuMS0xMDQuMiAxMDMuNXYxODMuNWMwIC44LjYgMi43IDIuNyAyLjdoNDAuOWMxLjkgMCAyLjgtLjkgMi44LTIuN1YzNDhjMTYuNSAxMi43IDM1LjggMTkuMSA1Ny43IDE5LjEgNjAuNSAwIDEwOC43LTQ4LjUgMTA4LjctMTA4LjcuMS02MC4zLTQ4LjItMTA4LjYtMTA4LjYtMTA4LjZ6bTAgMTcwLjljLTE3LjIgMC0zMS45LTYuMS00NC0xOC4yLTEyLjItMTIuMi0xOC4yLTI2LjgtMTguMi00NCAwLTM0LjUgMjcuNi02Mi4yIDYyLjItNjIuMiAzNC41IDAgNjIuMiAyNy42IDYyLjIgNjIuMi4xIDM0LjMtMjcuMyA2Mi4yLTYyLjIgNjIuMnpNMjI4LjMgNzIuNWMtMTUuOSAwLTI4LjggMTIuOS0yOC45IDI4LjkgMCAxNS42IDEyLjcgMjguOSAyOC45IDI4LjlzMjguOS0xMy4xIDI4LjktMjguOWMwLTE2LjItMTMtMjguOS0yOC45LTI4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpcmVBSGVscGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My4xIDBINzEuOUM2Ny45IDM3LjMgMzcuNCA2Ny44IDAgNzEuN3YzNzEuNWMzNy40IDQuOSA2NiAzMi40IDcxLjkgNjguOGgzNzIuMmMzLTM2LjQgMzIuNS02NS44IDY3LjktNjkuOFY3MS43Yy0zNi40LTUuOS02NS0zNS4zLTY4LjktNzEuN3ptLTM3IDQwNC45Yy0zNi4zIDAtMTguOC0yLTU1LjEtMi0zNS44IDAtMjEgMi01Ni4xIDItNS45IDAtNC45LTguMiAwLTkuOCAyMi44LTcuNiAyMi45LTEwLjIgMjQuNi0xMi44IDEwLjQtMTUuNiA1LjktODMgNS45LTExMyAwLTUuMy02LjQtMTIuOC0xMy44LTEyLjhIMjAwLjRjLTcuNCAwLTEzLjggNy41LTEzLjggMTIuOCAwIDMwLTQuNSA5Ny40IDUuOSAxMTMgMS43IDIuNSAxLjggNS4yIDI0LjYgMTIuOCA0LjkgMS42IDYgOS44IDAgOS44LTM1LjEgMC0yMC4zLTItNTYuMS0yLTM2LjMgMC0xOC44IDItNTUuMSAyLTcuOSAwLTUuOC0xMC44IDAtMTAuOCAxMC4yLTMuNCAxMy41LTMuNSAyMS43LTEzLjggNy43LTEyLjkgNy45LTQ0LjQgNy45LTEyNy44VjE1MS4zYzAtMjIuMi0xMi4yLTI4LjMtMjguNi0zMi40LTguOC0yLjItNC0xMS44IDEtMTEuOCAzNi41IDAgMjAuNiAyIDU3LjEgMiAzMi43IDAgMTYuNS0yIDQ5LjItMiAzLjMgMCA4LjUgOC4zIDEgMTAuOC00LjkgMS42LTI3LjYgMy43LTI3LjYgMzkuMyAwIDQ1LjYtLjIgNTUuOCAxIDY4LjggMCAxLjMgMi4zIDEyLjggMTIuOCAxMi44aDEwOS4yYzEwLjUgMCAxMi44LTExLjUgMTIuOC0xMi44IDEuMi0xMyAxLTIzLjIgMS02OC44IDAtMzUuNi0yMi43LTM3LjctMjcuNi0zOS4zLTcuNS0yLjUtMi4zLTEwLjggMS0xMC44IDMyLjcgMCAxNi41IDIgNDkuMiAyIDM2LjUgMCAyMC42LTIgNTcuMS0yIDQuOSAwIDkuOSA5LjYgMSAxMS44LTE2LjQgNC4xLTI4LjYgMTAuMy0yOC42IDMyLjR2MTAxLjJjMCA4My40LjEgMTE0LjkgNy45IDEyNy44IDguMiAxMC4yIDExLjQgMTAuNCAyMS43IDEzLjggNS44IDAgNy44IDEwLjggMCAxMC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2MC4zNTMsMjU0Ljg3OCwxMzEuNTM4LDMzLjFhMi4yMDgsMi4yMDgsMCwwLDAtMy44MjkuMDA5TC4zLDI1NC44ODdBMi4yMzQsMi4yMzQsMCwwLDAsLjMsMjU3LjEyMkwxMjkuMTE2LDQ3OC45YTIuMjA4LDIuMjA4LDAsMCwwLDMuODMtLjAwOUwyNjAuMzU4LDI1Ny4xMTNBMi4yMzksMi4yMzksMCwwLDAsMjYwLjM1MywyNTQuODc4Wm0zOS4wNzgtMjUuNzEzYTIuMTksMi4xOSwwLDAsMCwxLjksMS4xMTFoNjYuNTA5YTIuMjI2LDIuMjI2LDAsMCwwLDEuOS0zLjM0MUwyNTkuMTE1LDMzLjExMWEyLjE4NywyLjE4NywwLDAsMC0xLjktMS4xMTFIMTkwLjcwN2EyLjIyNiwyLjIyNiwwLDAsMC0xLjksMy4zNDFaTTUxMS43LDI1NC44ODYsMzg0LjksMzMuMTEyQTIuMiwyLjIsMCwwLDAsMzgyLjk5LDMyaC02Ni42YTIuMjI2LDIuMjI2LDAsMCwwLTEuOTA2LDMuMzRMNDQwLjY1MiwyNTYsMzE0LjQ4MSw0NzYuNjZhMi4yMjYsMi4yMjYsMCwwLDAsMS45MDYsMy4zNGg2Ni42YTIuMiwyLjIsMCwwLDAsMS45MDYtMS4xMTJMNTExLjcsMjU3LjExNEEyLjI0MywyLjI0MywwLDAsMCw1MTEuNywyNTQuODg2Wk0zNjYuMDE2LDI4NC45MTdIMjk5LjUwOGEyLjE4NywyLjE4NywwLDAsMC0xLjksMS4xMTFsLTEwOC44LDE5MC42MzFhMi4yMjYsMi4yMjYsMCwwLDAsMS45LDMuMzQxaDY2LjUwOWEyLjE4NywyLjE4NywwLDAsMCwxLjktMS4xMTFsMTA4LjgtMTkwLjYzMUEyLjIyNiwyLjIyNiwwLDAsMCwzNjYuMDE2LDI4NC45MTdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvb2xpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NC41IDM1MmwzOC4zLjhjLTEzLjItNC42LTI2LTEwLjItMzguMy0xNi44em01Ny43LTUuM3Y1LjNsLTE5LjQuOGMzNi41IDEyLjUgNjkuOSAxNC4yIDk0LjcgNy4yLTE5LjkuMi00NS44LTIuNi03NS4zLTEzLjN6bTQwOC45LTExNS4yYzE1LjkgMCAyOC45LTEyLjkgMjguOS0yOC45cy0xMi45LTI0LjUtMjguOS0yNC41Yy0xNS45IDAtMjguOSA4LjYtMjguOSAyNC41czEyLjkgMjguOSAyOC45IDI4Ljl6bS0yOSAxMjAuNUg2NDBWMjQxLjVoLTU3Ljl6bS03My43IDBoNTcuOVYxNTYuN0w1MDguNCAxODR6bS0zMS0xMTkuNGMtMTguMi0xOC4yLTUwLjQtMTcuMS01MC40LTE3LjFzLTMyLjMtMS4xLTUwLjQgMTcuMWMtMTguMiAxOC4yLTE2LjggMzMuOS0xNi44IDUyLjZzLTEuNCAzNC4zIDE2LjggNTIuNSA1MC40IDE3LjEgNTAuNCAxNy4xIDMyLjMgMS4xIDUwLjQtMTcuMWMxOC4yLTE4LjIgMTYuOC0zMy44IDE2LjgtNTIuNS0uMS0xOC44IDEuMy0zNC41LTE2LjgtNTIuNnptLTM5LjggNzEuOWMwIDMuNi0xLjggMTIuNS0xMC43IDEyLjVzLTEwLjctOC45LTEwLjctMTIuNXYtNDAuNGMwLTguNyA3LjMtMTAuOSAxMC43LTEwLjlzMTAuNyAyLjEgMTAuNyAxMC45em0tMTA2LjItNzEuOWMtMTguMi0xOC4yLTUwLjQtMTcuMS01MC40LTE3LjFzLTMyLjItMS4xLTUwLjQgMTcuMWMtMS45IDEuOS0zLjcgMy45LTUuMyA2LTM4LjItMjkuNi03Mi41LTQ2LjUtMTAyLjEtNjEuMXYtMjAuN2wtMjIuNSAxMC42Yy01NC40LTIyLjEtODktMTguMi05Ny4zLjEgMCAwLTI0LjkgMzIuOCA2MS44IDExMC44VjM1Mmg1Ny45di0yOC42Yy02LjUtNC4yLTEzLTguNy0xOS40LTEzLjYtMTQuOC0xMS4yLTI3LjQtMjEuNi0zOC40LTMxLjR2LTMxYzEzLjEgMTQuNyAzMC41IDMxLjQgNTMuNCA1MC4zbDQuNSAzLjZ2LTI5LjhjMC02LjkgMS43LTE4LjIgMTAuOC0xOC4yczEwLjYgNi45IDEwLjYgMTVWMzE3YzE4IDEyLjIgMzcuMyAyMi4xIDU3LjcgMjkuNnYtOTMuOWMwLTE4LjctMTMuNC0zNy40LTQwLjYtMzcuNC0xNS44LS4xLTMwLjUgOC4yLTM4LjUgMjEuOXYtNTQuM2M0MS45IDIwLjkgODMuOSA0Ni41IDk5LjkgNTguMy0xMC4yIDE0LjYtOS4zIDI4LjEtOS4zIDQzLjcgMCAxOC43LTEuNCAzNC4zIDE2LjggNTIuNXM1MC40IDE3LjEgNTAuNCAxNy4xIDMyLjMgMS4xIDUwLjQtMTcuMWMxOC4yLTE4LjIgMTYuNy0zMy44IDE2LjctNTIuNSAwLTE4LjUgMS41LTM0LjItMTYuNy01Mi4zek02NS4yIDE4NHY2My4zYy00OC43LTU0LjUtMzguOS03Ni0zNS4yLTc5LjEgMTMuNS0xMS40IDM3LjUtOCA2NC40IDIuMXptMjI2LjUgMTIwLjVjMCAzLjYtMS44IDEyLjUtMTAuNyAxMi41cy0xMC43LTguOS0xMC43LTEyLjV2LTQwLjRjMC04LjcgNy4zLTEwLjkgMTAuNy0xMC45czEwLjcgMi4xIDEwLjcgMTAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9ybmJpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzYuMzggMzcwLjNhMzcuOCAzNy44IDAgMSAxLTMyLjA3LTMyLjQyYy03OC4yOC0xMTEuMzUgNTItMTkwLjUzIDUyLTE5MC41My01Ljg2IDQzLTguMjQgOTEuMTYtOC4yNCA5MS4xNi02Ny4zMSA0MS40OS45MyA2NC4wNiAzOS44MSA3Mi44N2ExNDAuMzggMTQwLjM4IDAgMCAwIDEzMS42NiA5MS45NGMxLjkyIDAgMy43Ny0uMjEgNS42Ny0uMjhsLjExIDE4Ljg2Yy05OS4yMiAxLjM5LTE1OC43LTI5LjE0LTE4OC45NC01MS42em0xMDgtMzI3LjdBMzcuNTcgMzcuNTcgMCAwIDAgMTgxIDIxLjQ1YTM3Ljk1IDM3Ljk1IDAgMSAwLTMxLjE3IDU0LjIyYy0yMi41NSAyOS45MS01My44MyA4OS41Ny01Mi40MiAxOTBsMjEuODQtLjE1YzAtLjktLjE0LTEuNzctLjE0LTIuNjhBMTQwLjQyIDE0MC40MiAwIDAgMSAyMDcgMTMyLjcxYzgtMzcuNzEgMzAuNy0xMTQuMyA3My44LTQ0LjI5IDAgMCA0OC4xNCAyLjM4IDkxLjE4IDguMjQgMCAwLTc3Ljg0LTEyOC0xODcuNTktNTQuMDZ6bTMwNC4xOSAxMzQuMTdhMzcuOTQgMzcuOTQgMCAxIDAtNTMuODQtMjguN0M0MDMgMTI2LjEzIDM0NC44OSA5OSAyNTEuMjggMTAwLjMzbC4xNCAyMi41YzIuNy0uMTUgNS4zOS0uNDEgOC4xNC0uNDFhMTQwLjM3IDE0MC4zNyAwIDAgMSAxMzAuNDkgODguNzZjMzkuMSA5IDEwNS4wNiAzMS41OCAzOC40NiA3Mi41NCAwIDAtMi4zNCA0OC4xMy04LjIxIDkxLjE2IDAgMCAxMzMuNDUtODEuMTYgNDktMTk0LjYxYTM3LjQ1IDM3LjQ1IDAgMCAwIDE5LjMxLTMuNXpNMzc0LjA2IDQzNi4yNGMyMS40My0zMi40NiA0Ni40Mi04OS42OSA0NS4xNC0xNzkuNjZsLTE5LjUyLjE0Yy4wOCAyLjA2LjMgNC4wNy4zIDYuMTVhMTQwLjM0IDE0MC4zNCAwIDAgMS05MS4zOSAxMzEuNDVjLTguODUgMzguOTUtMzEuNDQgMTA2LjY2LTcyLjc3IDM5LjQ5IDAgMC00OC4xMi0yLjM0LTkxLjE5LTguMjIgMCAwIDc5LjkyIDEzMS4zNCAxOTEuOSA1MWEzNy41IDM3LjUgMCAwIDAgMy42NCAxNCAzNy45MyAzNy45MyAwIDEgMCAzMy44OS01NC4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90amFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNC45IDE2MS41QzM0MC4yIDI5IDEyMS4xIDAgMTIxLjEgMFMyMjIuMiAxMTAuNCA5MyAxOTcuN0MxMS4zIDI1Mi44LTIxIDMyNC40IDE0IDQwMi42YzI2LjggNTkuOSA4My41IDg0LjMgMTQ0LjYgOTMuNC0yOS4yLTU1LjEtNi42LTEyMi40LTQuMS0xMjkuNiA1Ny4xIDg2LjQgMTY1IDAgMTEwLjgtOTMuOSA3MSAxNS40IDgxLjYgMTM4LjYgMjcuMSAyMTUuNSA4MC41LTI1LjMgMTM0LjEtODguOSAxNDguOC0xNDUuNiAxNS41LTU5LjMgMy43LTEyNy45LTI2LjMtMTgwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXp6IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NS45IDMzMC43SDE3MS4zVjQ4MEgxN1YzMmgxMDkuNXYxMDQuNWwzMDUuMSA4NS42VjQ4MEgyNzUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHRtbDUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMmwzNC45IDM5NS44TDE5MS41IDQ4MGwxNTcuNi01Mi4yTDM4NCAzMkgwem0zMDguMiAxMjcuOUgxMjQuNGw0LjEgNDkuNGgxNzUuNmwtMTMuNiAxNDguNC05Ny45IDI3di4zaC0xLjFsLTk4LjctMjcuMy02LTc1LjhoNDcuN0wxMzggMzIwbDUzLjUgMTQuNSA1My43LTE0LjUgNi02Mi4ySDg0LjNMNzEuNSAxMTIuMmgyNDEuMWwtNC40IDQ3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUh1YnNwb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY3LjQgMjExLjZjLTI1LjEgMjMuNy00MC44IDU3LjMtNDAuOCA5NC42IDAgMjkuMyA5LjcgNTYuMyAyNiA3OEwyMDMuMSA0MzRjLTQuNC0xLjYtOS4xLTIuNS0xNC0yLjUtMTAuOCAwLTIwLjkgNC4yLTI4LjUgMTEuOC03LjYgNy42LTExLjggMTcuOC0xMS44IDI4LjZzNC4yIDIwLjkgMTEuOCAyOC41YzcuNiA3LjYgMTcuOCAxMS42IDI4LjUgMTEuNiAxMC44IDAgMjAuOS0zLjkgMjguNi0xMS42IDcuNi03LjYgMTEuOC0xNy44IDExLjgtMjguNSAwLTQuMi0uNi04LjItMS45LTEyLjFsNTAtNTAuMmMyMiAxNi45IDQ5LjQgMjYuOSA3OS4zIDI2LjkgNzEuOSAwIDEzMC01OC4zIDEzMC0xMzAuMiAwLTY1LjItNDcuNy0xMTkuMi0xMTAuMi0xMjguN1YxMTZjMTcuNS03LjQgMjguMi0yMy44IDI4LjItNDIuOSAwLTI2LjEtMjAuOS00Ny45LTQ3LTQ3LjlTMzExLjIgNDcgMzExLjIgNzMuMWMwIDE5LjEgMTAuNyAzNS41IDI4LjIgNDIuOXY2MS4yYy0xNS4yIDIuMS0yOS42IDYuNy00Mi43IDEzLjYtMjcuNi0yMC45LTExNy41LTg1LjctMTY4LjktMTI0LjggMS4yLTQuNCAyLTkgMi0xMy44QzEyOS44IDIzLjQgMTA2LjMgMCA3Ny40IDAgNDguNiAwIDI1LjIgMjMuNCAyNS4yIDUyLjJjMCAyOC45IDIzLjQgNTIuMyA1Mi4yIDUyLjMgOS44IDAgMTguOS0yLjkgMjYuOC03LjZsMTYzLjIgMTE0Ljd6bTg5LjUgMTYzLjZjLTM4LjEgMC02OS0zMC45LTY5LTY5czMwLjktNjkgNjktNjkgNjkgMzAuOSA2OSA2OS0zMC45IDY5LTY5IDY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZGVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjUuNjEsMTY1LjQ4YTQ5LjA3LDQ5LjA3LDAsMSwwLDQ5LjA2LDQ5LjA2QTQ5LjA4LDQ5LjA4LDAsMCwwLDEyNS42MSwxNjUuNDhaTTg2LjE1LDQyNS44NGg3OC45NFYyODUuMzJIODYuMTVabTE1MS40Ni0yMTEuNmMwLTIwLTEwLTIyLjUzLTE4Ljc0LTIyLjUzSDIwNC44MlYyMzcuNWgxNC4wNUMyMjguNjIsMjM3LjUsMjM3LjYxLDIzNC42OSwyMzcuNjEsMjE0LjI0Wm0yMDEuNjksNDZWMTY4LjkzaDIyLjc1VjIzNy41aDMzLjY5QzQ4Ni41LDExMy4wOCwzODguNjEsODYuMTksMjk5LjY3LDg2LjE5SDIwNC44NFYxNjloMTRjMjUuNiwwLDQxLjUsMTcuMzUsNDEuNSw0NS4yNiwwLDI4LjgxLTE1LjUyLDQ2LTQxLjUsNDZoLTE0VjQyNS44OGg5NC44M2MxNDQuNjEsMCwxOTQuOTQtNjcuMTYsMTk2LjcyLTE2NS42NFptLTEwOS43NSwwSDI3My4zVjE2OWg1NC40M3YyMi43M0gyOTZ2MTAuNThoMzBWMjI1SDI5NlYyMzcuNWgzMy41MVptNzQuNjYsMC01LjE2LTE3LjY3SDM2OS4zMWwtNS4xOCwxNy42N0gzNDAuNDdMMzY4LDE2OC45MmgzMi4zNWwyNy41Myw5MS4zNFpNMjk5LjY1LDMySDMyVjQ4MEgyOTkuNjVjMTYxLjg1LDAsMjUxLTc5LjczLDI1MS0yMjQuNTJDNTUwLjYyLDE3Miw1MTgsMzIsMjk5LjY1LDMyWm0wLDQyNi45Mkg1My4wN1Y1My4wN0gyOTkuNjVjMTQyLjEsMCwyMjkuOSw2NC42MSwyMjkuOSwyMDIuNDFDNTI5LjU1LDM4OS41Nyw0NDguNTUsNDU4LjkyLDI5OS42NSw0NTguOTJabTgzLjg2LTI2NC44NUwzNzYsMjE5Ljg4SDM5Mi40bC03LjUyLTI1LjgxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbWRiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxLjMgMjI5LjJIMjFjLjEtLjEuMi0uMy4zLS40ek05NyAzMTkuOEg2NFYxOTJoMzN6bTExMy4yIDBoLTI4Ljd2LTg2LjRsLTExLjYgODYuNGgtMjAuNmwtMTIuMi04NC41djg0LjVoLTI5VjE5Mmg0Mi44YzMuMyAxOS44IDYgMzkuOSA4LjcgNTkuOWw3LjYtNTkuOWg0M3ptMTEuNCAwVjE5MmgyNC42YzE3LjYgMCA0NC43LTEuNiA0OSAyMC45IDEuNyA3LjYgMS40IDE2LjMgMS40IDI0LjQgMCA4OC41IDExLjEgODIuNi03NSA4Mi41em0xNjAuOS0yOS4yYzAgMTUuNy0yLjQgMzAuOS0yMi4yIDMwLjktOSAwLTE1LjItMy0yMC45LTkuOGwtMS45IDguMWgtMjkuOFYxOTJoMzEuN3Y0MS43YzYtNi41IDEyLTkuMiAyMC45LTkuMiAyMS40IDAgMjIuMiAxMi44IDIyLjIgMzAuMXpNMjY1IDIyOS45YzAtOS43IDEuNi0xNi0xMC4zLTE2djgzLjdjMTIuMi4zIDEwLjMtOC43IDEwLjMtMTguNHptODUuNSAyNi4xYzAtNS40IDEuMS0xMi43LTYuMi0xMi43LTYgMC00LjkgOC45LTQuOSAxMi43IDAgLjYtMS4xIDM5LjYgMS4xIDQ0LjcuOCAxLjYgMi4yIDIuNCAzLjggMi40IDcuOCAwIDYuMi05IDYuMi0xNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbm5vc29mdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjIuNTU5LDE1OS43MWEyNy4zNzksMjcuMzc5LDAsMCwwLTEzLjg2Ni0yMy4zMzcsMjYuNDIsMjYuNDIsMCwwLDAtMjYuMjExLjEzM0w3My45NDMsMzE0LjY0N1YxNzYuMjYxYTExLjk1NSwxMS45NTUsMCwwLDEsNi4wNDctMTAuMzRMMjE4LjA2Niw4Ni4yMDhhMTIuMTUzLDEyLjE1MywwLDAsMSwxMS45MjIuMDI1bDMyLjY1NiwxOC44NTNMMTEyLjU4MSwxOTEuNzIzdjU2TDM1OS42NDIsMTA1LjA4NiwyNDEuMTI5LDM2LjY3OWMtMTAuOTkyLTYuMTI5LTIyLjMtNi4yNTUtMzMuOC0uMjdsLTE2NC42LDk1LjAyNmMtMTAuNjM0LDYuMTItMTYuNzcxLDE2LjM5LTE3LjI5LDI5LjEyNGwwLDE5MS41Yy4xNywxMC4xMzUsNS4wOCwxOC42NzIsMTMuNDc0LDIzLjQyOGEyNy4wMzcsMjcuMDM3LDAsMCwwLDI2LjczNi0uMDQ1TDM3NC4wNTcsMTk3LjM3NlYzMzUuNjU3YTExLjk3NiwxMS45NzYsMCwwLDEtNS45MiwxMC4zNjhMMjMwLjAyNSw0MjUuNzdhMTIuMTc1LDEyLjE3NSwwLDAsMS0xMS45MzcuMDYybC0zMi43MjMtMTguOSwxNTAuMDUxLTg2LjYyN3YtNTZMODguMzY3LDQwNi45MzJsMTE4Ljc5NCw2OC41ODNhMzMuODgsMzMuODgsMCwwLDAsMzQuMjUtLjMyN2wxNjQuNTI3LTk0Ljk5NWMxMC43NDYtNi42MzEsMTYuNjQ5LTE3LjExOCwxNi42MjQtMjkuNTI4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnN0YWdyYW1TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LDIwMi42NkE1My4zNCw1My4zNCwwLDEsMCwyNzcuMzYsMjU2LDUzLjM4LDUzLjM4LDAsMCwwLDIyNCwyMDIuNjZabTEyNC43MS00MWE1NCw1NCwwLDAsMC0zMC40MS0zMC40MWMtMjEtOC4yOS03MS02LjQzLTk0LjMtNi40M3MtNzMuMjUtMS45My05NC4zMSw2LjQzYTU0LDU0LDAsMCwwLTMwLjQxLDMwLjQxYy04LjI4LDIxLTYuNDMsNzEuMDUtNi40Myw5NC4zM1M5MSwzMjkuMjYsOTkuMzIsMzUwLjMzYTU0LDU0LDAsMCwwLDMwLjQxLDMwLjQxYzIxLDguMjksNzEsNi40Myw5NC4zMSw2LjQzczczLjI0LDEuOTMsOTQuMy02LjQzYTU0LDU0LDAsMCwwLDMwLjQxLTMwLjQxYzguMzUtMjEsNi40My03MS4wNSw2LjQzLTk0LjMzUzM1Ny4xLDE4Mi43NCwzNDguNzUsMTYxLjY3Wk0yMjQsMzM4YTgyLDgyLDAsMSwxLDgyLTgyQTgxLjksODEuOSwwLDAsMSwyMjQsMzM4Wm04NS4zOC0xNDguM2ExOS4xNCwxOS4xNCwwLDEsMSwxOS4xMy0xOS4xNEExOS4xLDE5LjEsMCwwLDEsMzA5LjQyLDE4OS43NFpNNDAwLDMySDQ4QTQ4LDQ4LDAsMCwwLDAsODBWNDMyYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQwMGE0OCw0OCwwLDAsMCw0OC00OFY4MEE0OCw0OCwwLDAsMCw0MDAsMzJaTTM4Mi44OCwzMjJjLTEuMjksMjUuNjMtNy4xNCw0OC4zNC0yNS44NSw2N3MtNDEuNCwyNC42My02NywyNS44NWMtMjYuNDEsMS40OS0xMDUuNTksMS40OS0xMzIsMC0yNS42My0xLjI5LTQ4LjI2LTcuMTUtNjctMjUuODVzLTI0LjYzLTQxLjQyLTI1Ljg1LTY3Yy0xLjQ5LTI2LjQyLTEuNDktMTA1LjYxLDAtMTMyLDEuMjktMjUuNjMsNy4wNy00OC4zNCwyNS44NS02N3M0MS40Ny0yNC41Niw2Ny0yNS43OGMyNi40MS0xLjQ5LDEwNS41OS0xLjQ5LDEzMiwwLDI1LjYzLDEuMjksNDguMzMsNy4xNSw2NywyNS44NXMyNC42Myw0MS40MiwyNS44NSw2Ny4wNUMzODQuMzcsMjE2LjQ0LDM4NC4zNywyOTUuNTYsMzgyLjg4LDMyMlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5zdGFncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC4xIDE0MWMtNjMuNiAwLTExNC45IDUxLjMtMTE0LjkgMTE0LjlzNTEuMyAxMTQuOSAxMTQuOSAxMTQuOVMzMzkgMzE5LjUgMzM5IDI1NS45IDI4Ny43IDE0MSAyMjQuMSAxNDF6bTAgMTg5LjZjLTQxLjEgMC03NC43LTMzLjUtNzQuNy03NC43czMzLjUtNzQuNyA3NC43LTc0LjcgNzQuNyAzMy41IDc0LjcgNzQuNy0zMy42IDc0LjctNzQuNyA3NC43em0xNDYuNC0xOTQuM2MwIDE0LjktMTIgMjYuOC0yNi44IDI2LjgtMTQuOSAwLTI2LjgtMTItMjYuOC0yNi44czEyLTI2LjggMjYuOC0yNi44IDI2LjggMTIgMjYuOCAyNi44em03Ni4xIDI3LjJjLTEuNy0zNS45LTkuOS02Ny43LTM2LjItOTMuOS0yNi4yLTI2LjItNTgtMzQuNC05My45LTM2LjItMzctMi4xLTE0Ny45LTIuMS0xODQuOSAwLTM1LjggMS43LTY3LjYgOS45LTkzLjkgMzYuMXMtMzQuNCA1OC0zNi4yIDkzLjljLTIuMSAzNy0yLjEgMTQ3LjkgMCAxODQuOSAxLjcgMzUuOSA5LjkgNjcuNyAzNi4yIDkzLjlzNTggMzQuNCA5My45IDM2LjJjMzcgMi4xIDE0Ny45IDIuMSAxODQuOSAwIDM1LjktMS43IDY3LjctOS45IDkzLjktMzYuMiAyNi4yLTI2LjIgMzQuNC01OCAzNi4yLTkzLjkgMi4xLTM3IDIuMS0xNDcuOCAwLTE4NC44ek0zOTguOCAzODhjLTcuOCAxOS42LTIyLjkgMzQuNy00Mi42IDQyLjYtMjkuNSAxMS43LTk5LjUgOS0xMzIuMSA5cy0xMDIuNyAyLjYtMTMyLjEtOWMtMTkuNi03LjgtMzQuNy0yMi45LTQyLjYtNDIuNi0xMS43LTI5LjUtOS05OS41LTktMTMyLjFzLTIuNi0xMDIuNyA5LTEzMi4xYzcuOC0xOS42IDIyLjktMzQuNyA0Mi42LTQyLjYgMjkuNS0xMS43IDk5LjUtOSAxMzIuMS05czEwMi43LTIuNiAxMzIuMSA5YzE5LjYgNy44IDM0LjcgMjIuOSA0Mi42IDQyLjYgMTEuNyAyOS41IDkgOTkuNSA5IDEzMi4xczIuNyAxMDIuNy05IDEzMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnN0YWxvZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuMzg0LDQ4MEgzODcuMTEzTDUwMi41NTQsMjc1Ljc2NSwyMDQuMjI5LDMzMy4yMTFaTTUwNC43MjYsMjQwLjA3OCwzODcuMTEzLDMySDE1NS42NjlMMzYwLjIzLDI2Ny45Wk0xMjQuMzg2LDQ4LjgwOSw3LjI3NCwyNTYsMTIzLjIzNiw0NjEuMTU0LDIyNS42MjcsMTY1LjU2MVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJjb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyIDMySDU2QzI1LjEgMzIgMCA1Ny4xIDAgODh2MzM2YzAgMzAuOSAyNS4xIDU2IDU2IDU2aDMzNmMzMC45IDAgNTYtMjUuMSA1Ni01NlY4OGMwLTMwLjktMjUuMS01Ni01Ni01NnptLTEwOC4zIDgyLjFjMC0xOS44IDI5LjktMTkuOCAyOS45IDB2MTk5LjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTE0LjF6bS03NC42LTcuNWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYyMTYuNWMwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxMDYuNnptLTc0LjcgNy41YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjE5OS41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjExNC4xek01OS43IDE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM2MwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxNDR6bTMyMy40IDIyNy44Yy03Mi44IDYzLTI0MS43IDY1LjQtMzE4LjEgMC0xNS0xMi44IDQuNC0zNS41IDE5LjQtMjIuNyA2NS45IDU1LjMgMjE2LjEgNTMuOSAyNzkuMyAwIDE0LjktMTIuOSAzNC4zIDkuOCAxOS40IDIyLjd6bTUuMi05My41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJuZXRFeHBsb3JlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODMuMDQ5IDE1OS43MDZjMTAuODU1LTI0LjU3NSAyMS40MjQtNjAuNDM4IDIxLjQyNC04Ny44NzEgMC03Mi43MjItNzkuNjQxLTk4LjM3MS0yMDkuNjczLTM4LjU3Ny0xMDcuNjMyLTcuMTgxLTIxMS4yMjEgNzMuNjctMjM3LjA5OCAxODYuNDU3IDMwLjg1Mi0zNC44NjIgNzguMjcxLTgyLjI5OCAxMjEuOTc3LTEwMS4xNThDMTI1LjQwNCAxNjYuODUgNzkuMTI4IDIyOC4wMDIgNDMuOTkyIDI5MS43MjUgMjMuMjQ2IDMyOS42NTEgMCAzOTAuOTQgMCA0MzYuNzQ3YzAgOTguNTc1IDkyLjg1NCA4Ni41IDE4MC4yNTEgNDIuMDA2IDMxLjQyMyAxNS40MyA2Ni41NTkgMTUuNTczIDEwMS42OTUgMTUuNTczIDk3LjEyNCAwIDE4NC4yNDktNTQuMjk0IDIxNi44MTQtMTQ2LjAyMkgzNzcuOTI3Yy01Mi41MDkgODguNTkzLTE5Ni44MTkgNTIuOTk2LTE5Ni44MTktNDcuNDM2SDUwOS45YzYuNDA3LTQzLjU4MS0xLjY1NS05NS43MTUtMjYuODUxLTE0MS4xNjJ6TTY0LjU1OSAzNDYuODc3YzE3LjcxMSA1MS4xNSA1My43MDMgOTUuODcxIDEwMC4yNjYgMTIzLjMwNC04OC43NDEgNDguOTQtMTczLjI2NyAyOS4wOTYtMTAwLjI2Ni0xMjMuMzA0em0xMTUuOTc3LTEwOC44NzNjMi01NS4xNTEgNTAuMjc2LTk0Ljg3MSAxMDMuOTgtOTQuODcxIDUzLjQxOCAwIDEwMS45ODEgMzkuNzIgMTAzLjk4MSA5NC44NzFIMTgwLjUzNnptMTg0LjUzNi0xODcuNmMyMS40MjUtMTAuMjg3IDQ4LjU2My0yMi4wMDMgNzIuNTU4LTIyLjAwMyAzMS40MjIgMCA1NC4yNzQgMjEuNzE3IDU0LjI3NCA1My43MjIgMCAyMC4wMDMtNy40MjcgNDkuMDA3LTE0LjU2OSA2Ny44NjctMjYuMjgtNDIuMjkyLTY1Ljk4Ni04MS41ODQtMTEyLjI2My05OS41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUludmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy40IDMySDQwLjZDMTguMiAzMiAwIDUwLjIgMCA3Mi42djM2Ni44QzAgNDYxLjggMTguMiA0ODAgNDAuNiA0ODBoMzY2LjhjMjIuNCAwIDQwLjYtMTguMiA0MC42LTQwLjZWNzIuNmMwLTIyLjQtMTguMi00MC42LTQwLjYtNDAuNnpNMTc2LjEgMTQ1LjZjLjQgMjMuNC0yMi40IDI3LjMtMjYuNiAyNy40LTE0LjkgMC0yNy4xLTEyLTI3LjEtMjcgLjEtMzUuMiA1My4xLTM1LjUgNTMuNy0uNHpNMzMyLjggMzc3Yy02NS42IDAtMzQuMS03NC0yNS0xMDYuNiAxNC4xLTQ2LjQtNDUuMi01OS01OS45LjdsLTI1LjggMTAzLjNIMTc3bDguMS0zMi41Yy0zMS41IDUxLjgtOTQuNiA0NC40LTk0LjYtNC4zLjEtMTQuMy45LTE0IDIzLTEwNC4xSDgxLjdsOS43LTM1LjZoNzYuNGMtMzMuNiAxMzMuNy0zMi42IDEyNi45LTMyLjkgMTM4LjIgMCAyMC45IDQwLjkgMTMuNSA1Ny40LTIzLjJsMTkuOC03OS40aC0zMi4zbDkuNy0zNS42aDY4LjhsLTguOSA0MC41YzQwLjUtNzUuNSAxMjcuOS00Ny44IDEwMS44IDM4LTE0LjIgNTEuMS0xNC42IDUwLjctMTQuOSA1OC44IDAgMTUuNSAxNy41IDIyLjYgMzEuOC0xNi45TDM4NiAzMjVjLTEwLjUgMzYuNy0yOS40IDUyLTUzLjIgNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlveGhvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE2IDE2MGgtNjcuM0M1MTEuMiA3MC43IDQyMi45IDggMzIwIDggMTgzIDggNzIgMTE5IDcyIDI1NmMwIDE2LjQgMS42IDMyLjUgNC43IDQ4SDI0Yy0xMy4zIDAtMjQgMTAuOC0yNCAyNCAwIDEzLjMgMTAuNyAyNCAyNCAyNGg2Ny4zYzM3LjUgODkuMyAxMjUuOCAxNTIgMjI4LjcgMTUyIDEzNyAwIDI0OC0xMTEgMjQ4LTI0OCAwLTE2LjQtMS42LTMyLjUtNC43LTQ4SDYxNmMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNHptLTk2IDk2YzAgMTEwLjUtODkuNSAyMDAtMjAwIDIwMC03NS43IDAtMTQxLjYtNDItMTc1LjUtMTA0SDQyNGMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNEgxMjUuOGMtMy44LTE1LjQtNS44LTMxLjQtNS44LTQ4IDAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMCA3NS43IDAgMTQxLjYgNDIgMTc1LjUgMTA0SDIxNmMtMTMuMyAwLTI0IDEwLjgtMjQgMjQgMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjk4LjJjMy44IDE1LjQgNS44IDMxLjQgNS44IDQ4em0tMzA0LTI0aDIwOGMxMy4zIDAgMjQgMTAuNyAyNCAyNCAwIDEzLjItMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0IDAtMTMuMiAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGNoSW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzEuOTIgMzQuNzdDNTAuMiA0Ny42NyA3LjQgOTYuODQgNyAxMDkuNzN2MjEuMzRjMCAyNy4wNiAyNS4yOSA1MC44NCA0OC4yNSA1MC44NCAyNy41NyAwIDUwLjU0LTIyLjg1IDUwLjU0LTUwIDAgMjcuMTIgMjIuMTggNTAgNDkuNzYgNTBzNDktMjIuODUgNDktNTBjMCAyNy4xMiAyMy41OSA1MCA1MS4xNiA1MGguNWMyNy41NyAwIDUxLjE2LTIyLjg1IDUxLjE2LTUwIDAgMjcuMTIgMjEuNDcgNTAgNDkgNTBzNDkuNzYtMjIuODUgNDkuNzYtNTBjMCAyNy4xMiAyMyA1MCA1MC41NCA1MCAyMyAwIDQ4LjI1LTIzLjc4IDQ4LjI1LTUwLjg0di0yMS4zNGMtLjQtMTIuOS00My4yLTYyLjA3LTY0LjkyLTc1QzM3Mi41NiAzMi40IDMyNS43NiAzMiAyNTYgMzJTOTEuMTQgMzMuMSA3MS45MiAzNC43N3ptMTMyLjMyIDEzNC4zOWMtMjIgMzguNC03Ny45IDM4LjcxLTk5Ljg1LjI1LTEzLjE3IDIzLjE0LTQzLjE3IDMyLjA3LTU2IDI3LjY2LTMuODcgNDAuMTUtMTMuNjcgMjM3LjEzIDE3LjczIDI2OS4xNSA4MCAxOC42NyAzMDIuMDggMTguMTIgMzc5Ljc2IDAgMzEuNjUtMzIuMjcgMjEuMzItMjMyIDE3Ljc1LTI2OS4xNS0xMi45MiA0LjQ0LTQyLjg4LTQuNi01Ni0yNy42Ni0yMiAzOC41Mi03Ny44NSAzOC4xLTk5Ljg1LS4yNC03LjEgMTIuNDktMjMuMDUgMjguOTQtNTEuNzYgMjguOTRhNTcuNTQgNTcuNTQgMCAwIDEtNTEuNzUtMjguOTR6bS00MS41OCA1My43N2MxNi40NyAwIDMxLjA5IDAgNDkuMjIgMTkuNzhhNDM2LjkxIDQzNi45MSAwIDAgMSA4OC4xOCAwQzMxOC4yMiAyMjMgMzMyLjg1IDIyMyAzNDkuMzEgMjIzYzUyLjMzIDAgNjUuMjIgNzcuNTMgODMuODcgMTQ0LjQ1IDE3LjI2IDYyLjE1LTUuNTIgNjMuNjctMzMuOTUgNjMuNzMtNDIuMTUtMS41Ny02NS40OS0zMi4xOC02NS40OS02Mi43OS0zOS4yNSA2LjQzLTEwMS45MyA4Ljc5LTE1NS41NSAwIDAgMzAuNjEtMjMuMzQgNjEuMjItNjUuNDkgNjIuNzktMjguNDItLjA2LTUxLjItMS41OC0zMy45NC02My43MyAxOC42Ny02NyAzMS41Ni0xNDQuNDUgODMuODgtMTQ0LjQ1ek0yNTYgMjcwLjc5cy00NC4zOCA0MC43Ny01Mi4zNSA1NS4yMWwyOS0xLjE3djI1LjMyYzAgMS41NSAyMS4zNC4xNiAyMy4zMy4xNiAxMS42NS41NCAyMy4zMSAxIDIzLjMxLS4xNnYtMjUuMjhsMjkgMS4xN2MtOC0xNC40OC01Mi4zNS01NS4yNC01Mi4zNS01NS4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSXR1bmVzTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODEuOSAzODguMmMtNi40IDI3LjQtMjcuMiA0Mi44LTU1LjEgNDgtMjQuNSA0LjUtNDQuOSA1LjYtNjQuNS0xMC4yLTIzLjktMjAuMS0yNC4yLTUzLjQtMi43LTc0LjQgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDYuNC03LjIgNC40LTQuMSA0LjQtMTYzLjIgMC0xMS4yLTUuNS0xNC4zLTE3LTEyLjMtOC4yIDEuNC0xODUuNyAzNC42LTE4NS43IDM0LjYtMTAuMiAyLjItMTMuNCA1LjItMTMuNCAxNi43IDAgMjM0LjcgMS4xIDIyMy45LTIuNSAyMzkuNS00LjIgMTguMi0xNS40IDMxLjktMzAuMiAzOS41LTE2LjggOS4zLTQ3LjIgMTMuNC02My40IDEwLjQtNDMuMi04LjEtNTguNC01OC0yOS4xLTg2LjYgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDEwLjEtMTEuNSAxLjgtMjU2LjYgNS4yLTI3MC4yLjgtNS4yIDMtOS42IDcuMS0xMi45IDQuMi0zLjUgMTEuOC01LjUgMTMuNC01LjUgMjA0LTM4LjIgMjI4LjktNDMuMSAyMzIuNC00My4xIDExLjUtLjggMTguMSA2IDE4LjEgMTcuNi4yIDM0NC41IDEuMSAzMjYtMS44IDMzOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdHVuZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjYgODAuM0MxMjkgODAuMyA1Mi41IDE1NyA1Mi41IDI1MS41UzEyOSA0MjIuOCAyMjMuNiA0MjIuOHMxNzEuMi03Ni43IDE3MS4yLTE3MS4yYzAtOTQuNi03Ni43LTE3MS4zLTE3MS4yLTE3MS4zem03OS40IDI0MGMtMy4yIDEzLjYtMTMuNSAyMS4yLTI3LjMgMjMuOC0xMi4xIDIuMi0yMi4yIDIuOC0zMS45LTUtMTEuOC0xMC0xMi0yNi40LTEuNC0zNi44IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgMy4yLTMuNiAyLjItMiAyLjItODAuOCAwLTUuNi0yLjctNy4xLTguNC02LjEtNCAuNy05MS45IDE3LjEtOTEuOSAxNy4xLTUgMS4xLTYuNyAyLjYtNi43IDguMyAwIDExNi4xLjUgMTEwLjgtMS4yIDExOC41LTIuMSA5LTcuNiAxNS44LTE0LjkgMTkuNi04LjMgNC42LTIzLjQgNi42LTMxLjQgNS4yLTIxLjQtNC0yOC45LTI4LjctMTQuNC00Mi45IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgNS01LjcuOS0xMjcgMi42LTEzMy43LjQtMi42IDEuNS00LjggMy41LTYuNCAyLjEtMS43IDUuOC0yLjcgNi43LTIuNyAxMDEtMTkgMTEzLjMtMjEuNCAxMTUuMS0yMS40IDUuNy0uNCA5IDMgOSA4LjctLjEgMTcwLjYuNCAxNjEuNC0xIDE2Ny42ek0zNDUuMiAzMkgxMDIuOEM0NS45IDMyIDAgNzcuOSAwIDEzNC44djI0Mi40QzAgNDM0LjEgNDUuOSA0ODAgMTAyLjggNDgwaDI0Mi40YzU3IDAgMTAyLjgtNDUuOSAxMDIuOC0xMDIuOFYxMzQuOEM0NDggNzcuOSA0MDIuMSAzMiAzNDUuMiAzMnpNMjIzLjYgNDQ0Yy0xMDYuMyAwLTE5Mi41LTg2LjItMTkyLjUtMTkyLjVTMTE3LjMgNTkgMjIzLjYgNTlzMTkyLjUgODYuMiAxOTIuNSAxOTIuNVMzMjkuOSA0NDQgMjIzLjYgNDQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKYXZhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Ny43NCAzMTIuOWM5LjgtNi43IDIzLjQtMTIuNSAyMy40LTEyLjVzLTM4LjcgNy03Ny4yIDEwLjJjLTQ3LjEgMy45LTk3LjcgNC43LTEyMy4xIDEuMy02MC4xLTggMzMtMzAuMSAzMy0zMC4xcy0zNi4xLTIuNC04MC42IDE5Yy01Mi41IDI1LjQgMTMwIDM3IDIyNC41IDEyLjF6bS04NS40LTMyLjFjLTE5LTQyLjctODMuMS04MC4yIDAtMTQ1LjhDMjk2IDUzLjIgMjQyLjg0IDAgMjQyLjg0IDBjMjEuNSA4NC41LTc1LjYgMTEwLjEtMTEwLjcgMTYyLjYtMjMuOSAzNS45IDExLjcgNzQuNCA2MC4yIDExOC4yem0xMTQuNi0xNzYuMmMuMSAwLTE3NS4yIDQzLjgtOTEuNSAxNDAuMiAyNC43IDI4LjQtNi41IDU0LTYuNSA1NHM2Mi43LTMyLjQgMzMuOS03Mi45Yy0yNi45LTM3LjgtNDcuNS01Ni42IDY0LjEtMTIxLjN6bS02LjEgMjcwLjVhMTIuMTkgMTIuMTkgMCAwIDEtMiAyLjZjMTI4LjMtMzMuNyA4MS4xLTExOC45IDE5LjgtOTcuM2ExNy4zMyAxNy4zMyAwIDAgMC04LjIgNi4zIDcwLjQ1IDcwLjQ1IDAgMCAxIDExLTNjMzEtNi41IDc1LjUgNDEuNS0yMC42IDkxLjR6TTM0OCA0MzcuNHMxNC41IDExLjktMTUuOSAyMS4yYy01Ny45IDE3LjUtMjQwLjggMjIuOC0yOTEuNi43LTE4LjMtNy45IDE2LTE5IDI2LjgtMjEuMyAxMS4yLTIuNCAxNy43LTIgMTcuNy0yLTIwLjMtMTQuMy0xMzEuMyAyOC4xLTU2LjQgNDAuMkMyMzIuODQgNTA5LjQgNDAxIDQ2MS4zIDM0OCA0MzcuNHpNMTI0LjQ0IDM5NmMtNzguNyAyMiA0Ny45IDY3LjQgMTQ4LjEgMjQuNWExODUuODkgMTg1Ljg5IDAgMCAxLTI4LjItMTMuOGMtNDQuNyA4LjUtNjUuNCA5LjEtMTA2IDQuNS0zMy41LTMuOC0xMy45LTE1LjItMTMuOS0xNS4yem0xNzkuOCA5Ny4yYy03OC43IDE0LjgtMTc1LjggMTMuMS0yMzMuMyAzLjYgMC0uMSAxMS44IDkuNyA3Mi40IDEzLjYgOTIuMiA1LjkgMjMzLjgtMy4zIDIzNy4xLTQ2LjkgMCAwLTYuNCAxNi41LTc2LjIgMjkuN3pNMjYwLjY0IDM1M2MtNTkuMiAxMS40LTkzLjUgMTEuMS0xMzYuOCA2LjYtMzMuNS0zLjUtMTEuNi0xOS43LTExLjYtMTkuNy04Ni44IDI4LjggNDguMiA2MS40IDE2OS41IDI1LjlhNjAuMzcgNjAuMzcgMCAwIDEtMjEuMS0xMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZWRpT3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk4LjUgMzczLjZjOTUuOS0xMjIuMSAxNy4yLTIzMy4xIDE3LjItMjMzLjEgNDUuNCA4NS44LTQxLjQgMTcwLjUtNDEuNCAxNzAuNSAxMDUtMTcxLjUtNjAuNS0yNzEuNS02MC41LTI3MS41IDk2LjkgNzIuNy0xMC4xIDE5MC43LTEwLjEgMTkwLjcgODUuOCAxNTguNC02OC42IDIzMC4xLTY4LjYgMjMwLjFzLS40LTE2LjktMi4yLTg1LjdjNC4zIDQuNSAzNC41IDM2LjIgMzQuNSAzNi4ybC0yNC4yLTQ3LjQgNjIuNi05LjEtNjIuNi05LjEgMjAuMi01NS41LTMxLjQgNDUuOWMtMi4yLTg3LjctNy44LTMwNS4xLTcuOS0zMDYuOXYtMi40IDEtMSAyLjRjMCAxLTUuNiAyMTktNy45IDMwNi45bC0zMS40LTQ1LjkgMjAuMiA1NS41LTYyLjYgOS4xIDYyLjYgOS4xLTI0LjIgNDcuNCAzNC41LTM2LjJjLTEuOCA2OC44LTIuMiA4NS43LTIuMiA4NS43cy0xNTQuNC03MS43LTY4LjYtMjMwLjFjMCAwLTEwNy0xMTguMS0xMC4xLTE5MC43IDAgMC0xNjUuNSA5OS45LTYwLjUgMjcxLjUgMCAwLTg2LjgtODQuOC00MS40LTE3MC41IDAgMC03OC43IDExMSAxNy4yIDIzMy4xIDAgMC0yNi4yLTE2LjEtNDkuNC03Ny43IDAgMCAxNi45IDE4My4zIDIyMiAxODUuN2g0LjFjMjA1LTIuNCAyMjItMTg1LjcgMjIyLTE4NS43LTIzLjYgNjEuNS00OS45IDc3LjctNDkuOSA3Ny43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZW5raW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Ny4xIDQyNWMtMS40LTExLjItMTktMjMuMS0yOC4yLTMxLjktNS4xLTUtMjktMjMuMS0zMC40LTI5LjktMS40LTYuNiA5LjctMjEuNSAxMy4zLTI4LjkgNS4xLTEwLjcgOC44LTIzLjcgMTEuMy0zMi42IDE4LjgtNjYuMSAyMC43LTE1Ni45LTYuMi0yMTEuMi0xMC4yLTIwLjYtMzguNi00OS01Ni40LTYyLjUtNDItMzEuNy0xMTkuNi0zNS4zLTE3MC4xLTE2LjYtMTQuMSA1LjItMjcuOCA5LjgtNDAuMSAxNy4xLTMzLjEgMTkuNC02OC4zIDMyLjUtNzguMSA3MS42LTI0LjIgMTAuOC0zMS41IDQxLjgtMzAuMyA3Ny44LjIgNyA0LjEgMTUuOCAyLjcgMjIuNC0uNyAzLjMtNS4yIDcuNi02LjEgOS44LTExLjYgMjcuNy0yLjMgNjQgMTEuMSA4My43IDguMSAxMS45IDIxLjUgMjIuNCAzOS4yIDI1LjIuNyAxMC42IDMuMyAxOS43IDguMiAzMC40IDMuMSA2LjggMTQuNyAxOSAxMC40IDI3LjctMi4yIDQuNC0yMSAxMy44LTI3LjMgMTcuNkM4OSA0MDcuMiA3My43IDQxNSA1NC4yIDQyOWMtMTIuNiA5LTMyLjMgMTAuMi0yOS4yIDMxLjEgMi4xIDE0LjEgMTAuMSAzMS42IDE0LjcgNDUuOC43IDIgMS40IDQuMSAyLjEgNmg0MjJjNC45LTE1LjMgOS43LTMwLjkgMTQuNi00Ny4yIDMuNC0xMS40IDEwLjItMjcuOCA4LjctMzkuN3pNMjA1LjkgMzMuN2MxLjgtLjUgMy40LjcgNC45IDIuNC0uMiA1LjItNS40IDUuMS04LjkgNi44LTUuNCA2LjctMTMuNCA5LjgtMjAgMTcuMi02LjggNy41LTE0LjQgMjcuNy0yMy40IDMwLTQuNSAxLjEtOS43LS44LTEzLjYtLjUtMTAuNC43LTE3LjcgNi0yOC4zIDcuNSAxMy42LTI5LjkgNTYuMS01NCA4OS4zLTYzLjR6bS0xMDQuOCA5My42YzEzLjUtMTQuOSAzMi4xLTI0LjEgNTQuOC0yNS45IDExLjcgMjkuNy04LjQgNjUtLjkgOTcuNiAyLjMgOS45IDEwLjIgMjUuNC0yLjQgMjUuNy4zLTI4LjMtMzQuOC00Ni4zLTYxLjMtMjkuNi0xLjgtMjEuNS00LjktNTEuNyA5LjgtNjcuOHptMzYuNyAyMDAuMmMtMS00LjEtMi43LTEyLjktMi4zLTE1LjEgMS42LTguNyAxNy4xLTEyLjUgMTEtMjQuNy0xMS4zLS4xLTEzLjggMTAuMi0yNC4xIDExLjMtMjYuNyAyLjYtNDUuNi0zNS40LTQ0LjQtNTguNCAxLTE5LjUgMTcuNi0zOC4yIDQwLjEtMzUuOCAxNiAxLjggMjEuNCAxOS4yIDI0LjUgMzQuNyA5LjIuNSAyMi41LS40IDI2LjktNy42LS42LTE3LjUtOC44LTMxLjYtOC4yLTQ3LjcgMS0zMC4zIDE3LjUtNTcuNiA0LjgtODcuNCAxMy42LTMwLjkgNTMuNS01NS4zIDgzLjEtNzAgMzYuNi0xOC4zIDk0LjktMy43IDEyOS4zIDE1LjggMTkuNyAxMS4xIDM0LjQgMzIuNyA0OC4zIDUwLjctMTkuNS01LjgtMzYuMSA0LjItMzMuMSAyMC4zIDE2LjMtMTQuOSA0NC4yLS4yIDUyLjUgMTYuNCA3LjkgMTUuOCA3LjggMzkuMyA5IDYyLjggMi45IDU3LTEwLjQgMTE1LjktMzkuMSAxNTcuMS03LjcgMTEtMTQuMSAyMy0yNC45IDMwLjYtMjYgMTguMi02NS40IDM0LjctOTkuMiAyMy40LTQ0LjctMTUtNjUtNDQuOC04OS41LTc4LjguNyAxOC43IDEzLjggMzQuMSAyNi44IDQ4LjQgMTEuMyAxMi41IDI1IDI2LjYgMzkuNyAzMi40LTEyLjMtMi45LTMxLjEtMy44LTM2LjIgNy4yLTI4LjYtMS45LTU1LjEtNC44LTY4LjctMjQuMi0xMC42LTE1LjQtMjEuNC00MS40LTI2LjMtNjEuNHptMjIyIDEyNC4xYzQuMS0zIDExLjEtMi45IDE3LjQtMy42LTUuNC0yLjctMTMtMy43LTE5LjMtMi4yLS4xLTQuMi0yLTYuOC0zLjItMTAuMiAxMC42LTMuOCAzNS41LTI4LjUgNDkuNi0yMC4zIDYuNyAzLjkgOS41IDI2LjIgMTAuMSAzNyAuNCA5LS44IDE4LTQuNSAyMi44LTE4LjgtLjYtMzUuOC0yLjgtNTAuNy03IC45LTYuMS0xLTEyLjEuNi0xNi41em0tMTcuMi0yMGMtMTYuOC44LTI2LTEuMi0zOC4zLTEwLjguMi0uOCAxLjQtLjUgMS41LTEuNCAxOCA4IDQwLjgtMy4zIDU5LTQuOS03LjkgNS4xLTE0LjYgMTEuNi0yMi4yIDE3LjF6bS0xMi4xIDMzLjJjLTEuNi05LjQtMy41LTEyLTIuOC0yMC4yIDI1LTE2LjYgMjkuNyAyOC42IDIuOCAyMC4yek0yMjYgNDM4LjZjLTExLjYtLjctNDguMS0xNC0zOC41LTIzLjcgOS40IDYuNSAyNy41IDQuOSA0MS4zIDcuMy44IDQuNC0yLjggMTAuMi0yLjggMTYuNHpNNTcuNyA0OTcuMWMtNC4zLTEyLjctOS4yLTI1LjEtMTQuOC0zNi45IDMwLjgtMjMuOCA2NS4zLTQ4LjkgMTAyLjItNjMuNSAyLjgtMS4xIDIzLjIgMjUuNCAyNi4yIDI3LjYgMTYuNSAxMS43IDM3IDIxIDU2LjIgMzAuMiAxLjIgOC44IDMuOSAyMC4yIDguNyAzNS41LjcgMi4zIDEuNCA0LjcgMi4yIDcuMkg1Ny43em0yNDAuNiA1LjdoLS44Yy4zLS4yLjUtLjQuOC0uNXYuNXptNy41LTUuN2MyLjEtMS40IDQuMy0yLjggNi40LTQuMyAxLjEgMS40IDIuMiAyLjggMy4yIDQuM2gtOS42em0xNS4xLTI0LjdjLTEwLjggNy4zLTIwLjYgMTguMy0zMy4zIDI1LjItNiAzLjMtMjcgMTEuNy0zMy40IDEwLjItMy42LS44LTMuOS01LjMtNS40LTkuNS0zLjEtOS0xMC4xLTIzLjQtMTAuOC0zNy0uOC0xNy4yLTIuNS00NiAxNi00Mi40IDE0LjkgMi45IDMyLjMgOS43IDQzLjkgMTYuMSA3LjEgMy45IDExLjEgOC42IDIxLjkgOS41LS4xIDEuNC0uMSAyLjgtLjIgNC4zLTUuOSAzLjktMTUuMyAzLjgtMjEuOCA3LjEgOS41LjQgMTcgMi43IDIzLjUgNS45LS4xIDMuNC0uMyA3LS40IDEwLjZ6bTUzLjQgMjQuN2gtMTRjLS4xLTMuMi0yLjgtNS44LTYuMS01LjhzLTUuOSAyLjYtNi4xIDUuOGgtMTcuNGMtMi44LTQuNC01LjctOC42LTguOS0xMi41IDIuMS0yLjIgNC00LjcgNi02LjkgOSAzLjcgMTQuOC00LjkgMjEuNy00LjIgNy45LjggMTQuMiAxMS43IDI1LjQgMTFsLS42IDEyLjZ6bTguNyAwYy4yLTQgLjQtNy44LjYtMTEuNSAxNS42LTcuMyAyOSAxLjMgMzUuNyAxMS41SDM4M3ptODMuNC0zN2MtMi4zIDExLjItNS44IDI0LTkuOSAzNy4xLS4yLS4xLS40LS4xLS42LS4xSDQyOGMuNi0xLjEgMS4yLTIuMiAxLjktMy4zLTIuNi02LjEtOS04LjctMTAuOS0xNS41IDEyLjEtMjIuNyA2LjUtOTMuNC0yNC4yLTc4LjUgNC4zLTYuMyAxNS42LTExLjUgMjAuOC0xOS4zIDEzIDEwLjQgMjAuOCAyMC4zIDMzLjIgMzEuNCA2LjggNiAyMCAxMy4zIDIxLjQgMjMuMS44IDUuNS0yLjYgMTguOS0zLjggMjUuMXpNMjIyLjIgMTMwLjVjNS40LTE0LjkgMjcuMi0zNC43IDQ1LTMyIDcuNyAxLjIgMTggOC4yIDEyLjIgMTcuNy0zMC4yLTctNDUuMiAxMi42LTU0LjQgMzMuMS04LjEtMi00LjktMTMuMS0yLjgtMTguOHptMTg0LjEgNjMuMWM4LjItMy42IDIyLjQtLjcgMjkuNi01LjMtNC4yLTExLjUtMTAuMy0yMS40LTkuMy0zNy43LjUgMCAxIDAgMS40LjEgNi44IDE0LjIgMTIuNyAyOS4yIDIxLjQgNDEuNy01LjcgMTMuNS00My42IDI1LjQtNDMuMSAxLjJ6bTIwLjQtNDN6bS0xMTcuMiA0NS43Yy02LjgtMTAuOS0xOS0zMi41LTE0LjUtNDUuMyA2LjUgMTEuOSA4LjYgMjQuNCAxNy44IDMzLjMgNC4xIDQgMTIuMiA5IDguMiAyMC4yLS45IDIuNy03LjggOC42LTExLjcgOS43LTE0LjQgNC4zLTQ3LjkuOS0zNi42LTE3LjEgMTEuOS43IDI3LjkgNy44IDM2LjgtLjh6bTI3LjMgNzBjMy44IDYuNiAxLjQgMTguNyAxMi4xIDIwLjYgMjAuMiAzLjQgNDMuNi0xMi4zIDU4LjEtMTcuOCA5LTE1LjItLjgtMjAuNy04LjktMzAuNS0xNi42LTIwLTM4LjgtNDQuOC0zOC03NC43IDYuNy00LjkgNy4zIDcuNCA4LjIgOS43IDguNyAyMC4zIDMwLjQgNDYuMiA0Ni4zIDYzLjUgMy45IDQuMyAxMC4zIDguNCAxMSAxMS4yIDIuMSA4LjItNS40IDE4LTQuNSAyMy41LTIxLjcgMTMuOS00NS44IDI5LjEtODEuNCAyNS42LTcuNC02LjctMTAuMy0yMS40LTIuOS0zMS4xem0tMjAxLjMtOS4yYy02LjgtMy45LTguNC0yMS0xNi40LTIxLjQtMTEuNC0uNy05LjMgMjIuMi05LjMgMzUuNS03LjgtNy4xLTkuMi0yOS4xLTMuNS00MC4zLTYuNi0zLjItOS41IDMuNi0xMy4xIDUuOSA0LjctMzQuMSA0OS44LTE1LjggNDIuMyAyMC4zem0yOTkuNiAyOC44Yy0xMC4xIDE5LjItMjQuNCA0MC40LTU0IDQxLS42LTYuMi0xLjEtMTUuNiAwLTE5LjQgMjIuNy0yLjIgMzYuNi0xMy43IDU0LTIxLjZ6bS0xNDEuOSAxMi40YzE4LjkgOS45IDUzLjYgMTEgNzkuMyAxMC4yIDEuNCA1LjYgMS4zIDEyLjYgMS40IDE5LjQtMzMgMS44LTcyLTYuNC04MC43LTI5LjZ6bTkyLjIgNDYuN2MtMS43IDQuMy01LjMgOS4zLTkuOCAxMS4xLTEyLjEgNC45LTQ1LjYgOC43LTYyLjQtLjMtMTAuNy01LjctMTcuNS0xOC41LTIzLjQtMjYtMi44LTMuNi0xNi45LTEyLjktLjItMTIuOSAxMy4xIDMyLjcgNTggMjkgOTUuOCAyOC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKaXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5MCAyNDEuN0M0MTcuMSAxNjkgMzIwLjYgNzEuOCAyNDguNSAwIDgzIDE2NC45IDYgMjQxLjcgNiAyNDEuN2MtNy45IDcuOS03LjkgMjAuNyAwIDI4LjdDMTM4LjggNDAyLjcgNjcuOCAzMzEuOSAyNDguNSA1MTJjMzc5LjQtMzc4IDE1LjctMTYuNyAyNDEuNS0yNDEuNyA4LTcuOSA4LTIwLjcgMC0yOC42em0tMjQxLjUgOTBsLTc2LTc1LjcgNzYtNzUuNyA3NiA3NS43LTc2IDc1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvZ2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3OC4xIDQ1QzMzNy42IDE5LjkgMjkyLjYgOCAyNDguMiA4IDE2NSA4IDgzLjggNDkuOSAzNi45IDEyNS45Yy03MS45IDExNi42LTM1LjYgMjY5LjMgODEgMzQxLjJzMjY5LjMgMzUuNiAzNDEuMi04MC45YzcxLjktMTE2LjYgMzUuNi0yNjkuNC04MS0zNDEuMnptNTEuOCAzMjMuMmMtNDAuNCA2NS41LTExMC40IDEwMS41LTE4MiAxMDEuNS02LjggMC0xMy42LS40LTIwLjQtMS05LTEzLjYtMTkuOS0zMy4zLTIzLjctNDIuNC01LjctMTMuNy0yNy4yLTQ1LjYgMzEuMi02Ny4xIDUxLjctMTkuMSAxNzYuNy0xNi41IDIwOC44LTE3LjYtNCA5LTguNiAxNy45LTEzLjkgMjYuNnptLTIwMC44LTg2LjNjLTU1LjUtMS40LTgxLjctMjAuOC01OC41LTQ4LjJzNTEuMS00MC43IDY4LjktNTEuMmMxNy45LTEwLjUgMjcuMy0zMy43LTIzLjYtMjkuN0M4Ny4zIDE2MS41IDQ4LjYgMjUyLjEgMzcuNiAyOTNjLTguOC00OS43LS4xLTEwMi43IDI4LjUtMTQ5LjFDMTI4IDQzLjQgMjU5LjYgMTIuMiAzNjAuMSA3NC4xYzc0LjggNDYuMSAxMTEuMiAxMzAuOSA5OS4zIDIxMi43LTI0LjktLjUtMTc5LjMtMy42LTIzMC4zLTQuOXptMTgzLjgtNTQuOGMtMjIuNy02LTU3IDExLjMtODYuNyAyNy4yLTI5LjcgMTUuOC0zMS4xIDguMi0zMS4xIDguMnM0MC4yLTI4LjEgNTAuNy0zNC41IDMxLjktMTQgMTMuNC0yNC42Yy0zLjItMS44LTYuNy0yLjctMTAuNC0yLjctMTcuOCAwLTQxLjUgMTguNy02Ny41IDM1LjYtMzEuNSAyMC41LTY1LjMgMzEuMy02NS4zIDMxLjNsMTY5LjUtMS42IDQ2LjUtMjMuNHMzLjYtOS41LTE5LjEtMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSm9vbWxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS42IDkyLjFDLjYgNTguOCAyNy40IDMyIDYwLjQgMzJjMzAgMCA1NC41IDIxLjkgNTkuMiA1MC4yIDMyLjYtNy42IDY3LjEuNiA5Ni41IDMwbC00NC4zIDQ0LjNjLTIwLjUtMjAuNS00Mi42LTE2LjMtNTUuNC0zLjUtMTQuMyAxNC4zLTE0LjMgMzcuOSAwIDUyLjJsOTkuNSA5OS41LTQ0IDQ0LjNjLTg3LjctODcuMi00OS43LTQ5LjctOTkuOC05OS43LTI2LjgtMjYuNS0zNS02NC44LTI0LjgtOTguOUMyMC40IDE0NC42LjYgMTIwLjcuNiA5Mi4xem0xMjkuNSAxMTYuNGw0NC4zIDQ0LjNjMTAtMTAgODkuNy04OS43IDk5LjctOTkuOCAxNC4zLTE0LjMgMzcuNi0xNC4zIDUxLjkgMCAxMi44IDEyLjggMTcgMzUtMy41IDU1LjRsNDQgNDQuM2MzMS4yLTMxLjIgMzguNS02Ny42IDI4LjktMTAxLjIgMjkuMi00LjEgNTEuOS0yOS4yIDUxLjktNTkuNSAwLTMzLjItMjYuOC02MC4xLTU5LjgtNjAuMS0zMC4zIDAtNTUuNCAyMi41LTU5LjUgNTEuNi0zMy44LTkuOS03MS43LTEuNS05OC4zIDI1LjEtMTguMyAxOS4xLTcxLjEgNzEuNS05OS42IDk5Ljl6bTI2Ni4zIDE1Mi4yYzguMi0zMi43LS45LTY4LjUtMjYuMy05My45LTExLjgtMTIuMiA1IDQuNy05OS41LTk5LjdsLTQ0LjMgNDQuMyA5OS43IDk5LjdjMTQuMyAxNC4zIDE0LjMgMzcuNiAwIDUxLjktMTIuOCAxMi44LTM1IDE3LTU1LjQtMy41bC00NCA0NC4zYzI3LjYgMzAuMiA2OCAzOC44IDEwMi43IDI4IDUuNSAyNy40IDI5LjcgNDguMSA1OC45IDQ4LjEgMzMgMCA1OS44LTI2LjggNTkuOC02MC4xIDAtMzAuMi0yMi41LTU1LTUxLjYtNTkuMXptLTg0LjMtNTMuMWwtNDQtNDQuM2MtODcgODYuNC01MC40IDUwLjQtOTkuNyA5OS44LTE0LjMgMTQuMy0zNy42IDE0LjMtNTEuOSAwLTEzLjEtMTMuNC0xNi45LTM1LjMgMy4yLTU1LjRsLTQ0LTQ0LjNjLTMwLjIgMzAuMi0zOCA2NS4yLTI5LjUgOTguMy0yNi43IDYtNDYuMiAyOS45LTQ2LjIgNTguMkMwIDQ1My4yIDI2LjggNDgwIDU5LjggNDgwYzI4LjYgMCA1Mi41LTE5LjggNTguNi00Ni43IDMyLjcgOC4yIDY4LjUtLjYgOTQuMi0yNiAzMi4xLTMyIDEyLjItMTIuNCA5OS41LTk5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI0My44IDM4MS40YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41LTMzLjcgMC01My4yLTE3LjQtNjMuMi0zOC41bDM0LjMtMjAuN2M2LjYgMTEuNyAxMi42IDIxLjYgMjcuMSAyMS42IDEzLjggMCAyMi42LTUuNCAyMi42LTI2LjVWMjM3LjdoNDIuMXYxNDMuN3ptOTkuNiA2My41Yy0zOS4xIDAtNjQuNC0xOC42LTc2LjctNDNsMzQuMy0xOS44YzkgMTQuNyAyMC44IDI1LjYgNDEuNSAyNS42IDE3LjQgMCAyOC42LTguNyAyOC42LTIwLjggMC0xNC40LTExLjQtMTkuNS0zMC43LTI4bC0xMC41LTQuNWMtMzAuNC0xMi45LTUwLjUtMjkuMi01MC41LTYzLjUgMC0zMS42IDI0LjEtNTUuNiA2MS42LTU1LjYgMjYuOCAwIDQ2IDkuMyA1OS44IDMzLjdMMzY4IDI5MGMtNy4yLTEyLjktMTUtMTgtMjcuMS0xOC0xMi4zIDAtMjAuMSA3LjgtMjAuMSAxOCAwIDEyLjYgNy44IDE3LjcgMjUuOSAyNS42bDEwLjUgNC41YzM1LjggMTUuMyA1NS45IDMxIDU1LjkgNjYuMiAwIDM3LjgtMjkuOCA1OC42LTY5LjcgNTguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTI0My44IDM0OS40YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41LTMzLjcgMC01My4yLTE3LjQtNjMuMi0zOC41bDM0LjMtMjAuN2M2LjYgMTEuNyAxMi42IDIxLjYgMjcuMSAyMS42IDEzLjggMCAyMi42LTUuNCAyMi42LTI2LjVWMjM3LjdoNDIuMXYxNDMuN3ptOTkuNiA2My41Yy0zOS4xIDAtNjQuNC0xOC42LTc2LjctNDNsMzQuMy0xOS44YzkgMTQuNyAyMC44IDI1LjYgNDEuNSAyNS42IDE3LjQgMCAyOC42LTguNyAyOC42LTIwLjggMC0xNC40LTExLjQtMTkuNS0zMC43LTI4bC0xMC41LTQuNWMtMzAuNC0xMi45LTUwLjUtMjkuMi01MC41LTYzLjUgMC0zMS42IDI0LjEtNTUuNiA2MS42LTU1LjYgMjYuOCAwIDQ2IDkuMyA1OS44IDMzLjdMMzY4IDI5MGMtNy4yLTEyLjktMTUtMTgtMjcuMS0xOC0xMi4zIDAtMjAuMSA3LjgtMjAuMSAxOCAwIDEyLjYgNy44IDE3LjcgMjUuOSAyNS42bDEwLjUgNC41YzM1LjggMTUuMyA1NS45IDMxIDU1LjkgNjYuMiAwIDM3LjgtMjkuOCA1OC42LTY5LjcgNTguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnNmaWRkbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjYzNCAyMzcuNDYyYy00LjcyNy0yLjYyMS01LjY2NC01Ljc0OC02LjM4MS0xMC43NzYtMi4zNTItMTYuNDg4LTMuNTM5LTMzLjYxOS05LjA5Ny00OS4wOTUtMzUuODk1LTk5Ljk1Ny0xNTMuOTktMTQzLjM4Ni0yNDYuODQ5LTkxLjY0Ni0yNy4zNyAxNS4yNS00OC45NzEgMzYuMzY5LTY1LjQ5MyA2My45MDMtMy4xODQtMS41MDgtNS40NTgtMi43MS03LjgyNC0zLjY4Ni0zMC4xMDItMTIuNDIxLTU5LjA0OS0xMC4xMjEtODUuMzMxIDkuMTY3LTI1LjUzMSAxOC43MzctMzYuNDIyIDQ0LjU0OC0zMi42NzYgNzYuNDA4LjM1NSAzLjAyNS0xLjk2NyA3LjYyMS00LjUxNCA5LjU0NS0zOS43MTIgMjkuOTkyLTU2LjAzMSA3OC4wNjUtNDEuOTAyIDEyNC42MTUgMTMuODMxIDQ1LjU2OSA1Ny41MTQgNzkuNzk2IDEwNS42MDggODEuNDMzIDMwLjI5MSAxLjAzMSA2MC42MzcuNTQ2IDkwLjk1OS41MzkgODQuMDQxLS4wMjEgMTY4LjA5LjUzMSAyNTIuMTItLjQ4IDUyLjY2NC0uNjM0IDk2LjEwOC0zNi44NzMgMTA4LjIxMi04Ny4yOTMgMTEuNTQtNDguMDc0LTExLjE0NC05Ny4zLTU2LjgzMi0xMjIuNjM0em0yMS4xMDcgMTU2Ljg4Yy0xOC4yMyAyMi40MzItNDIuMzQzIDM1LjI1My03MS4yOCAzNS42NS01Ni44NzQuNzgxLTExMy43NjcuMjMtMTcwLjY1Mi4yMyAwIC43LTE2My4wMjguMTU5LTE2My43MjguMTU0LTQzLjg2MS0uMzMyLTc2LjczOS0xOS43NjYtOTUuMTc1LTU5Ljk5NS0xOC45MDItNDEuMjQ1LTQuMDA0LTkwLjg0OCAzNC4xODYtMTE2LjEwNiA5LjE4Mi02LjA3MyAxMi41MDUtMTEuNTY2IDEwLjA5Ni0yMy4xMzYtNS40OS0yNi4zNjEgNC40NTMtNDcuOTU2IDI2LjQyLTYyLjk4MSAyMi45ODctMTUuNzIzIDQ3LjQyMi0xNi4xNDYgNzIuMDM0LTMuMDgzIDEwLjI2OSA1LjQ1IDE0LjYwNyAxMS41NjQgMjIuMTk4LTIuNTI3IDE0LjIyMi0yNi4zOTkgMzQuNTU3LTQ2LjcyNyA2MC42NzEtNjEuMjk0IDk3LjQ2LTU0LjM2NiAyMjguMzcgNy41NjggMjMwLjI0IDEzMi42OTcuMTIyIDguMTUgMi40MTIgMTIuNDI4IDkuODQ4IDE1Ljg5NCA1Ny41NiAyNi44MjkgNzQuNDU2IDk2LjEyMiAzNS4xNDIgMTQ0LjQ5N3ptLTg3Ljc4OS04MC40OTljLTUuODQ4IDMxLjE1Ny0zNC42MjIgNTUuMDk2LTY2LjY2NiA1NS4wOTUtMTYuOTUzLS4wMDEtMzIuMDU4LTYuNTQ1LTQ0LjA3OS0xNy43MDUtMjcuNjk3LTI1LjcxMy03MS4xNDEtNzQuOTgtOTUuOTM3LTkzLjM4Ny0yMC4wNTYtMTQuODg4LTQxLjk5LTEyLjMzMy02MC4yNzIgMy43ODItNDkuOTk2IDQ0LjA3MSAxNS44NTkgMTIxLjc3NSA2Ny4wNjMgNzcuMTg4IDQuNTQ4LTMuOTYgNy44NC05LjU0MyAxMi43NDQtMTIuODQ0IDguMTg0LTUuNTA5IDIwLjc2Ni0uODg0IDEzLjE2OCAxMC42MjItMTcuMzU4IDI2LjI4NC00OS4zMyAzOC4xOTctNzguODYzIDI5LjMwMS0yOC44OTctOC43MDQtNDguODQtMzUuOTY4LTQ4LjYyNi03MC4xNzkgMS4yMjUtMjIuNDg1IDEyLjM2NC00My4wNiAzNS40MTQtNTUuOTY1IDIyLjU3NS0xMi42MzggNDYuMzY5LTEzLjE0NiA2Ni45OTEgMi40NzRDMjk1LjY4IDI4MC43IDMyMC40NjcgMzIzLjk3IDM1Mi4xODUgMzQzLjQ3YzI0LjU1OCAxNS4wOTkgNTQuMjU0IDcuMzYzIDY4LjgyMy0xNy41MDYgMjguODMtNDkuMjA5LTM0LjU5Mi0xMDUuMDE2LTc4Ljg2OC02My40Ni0zLjk4OSAzLjc0NC02LjkxNyA4LjkzMi0xMS40MSAxMS43Mi0xMC45NzUgNi44MTEtMTcuMzMzLTQuMTEzLTEyLjgwOS0xMC4zNTMgMjAuNzAzLTI4LjU1NCA1MC40NjQtNDAuNDQgODMuMjcxLTI4LjIxNCAzMS40MjkgMTEuNzE0IDQ5LjEwOCA0NC4zNjYgNDIuNzYgNzguMTg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLYWdnbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LjIgNTAxLjVMMTU4LjQgMzIwLjMgMjk4LjIgMTg1YzIuNi0yLjcgMS43LTEwLjUtNS4zLTEwLjVoLTY5LjJjLTMuNSAwLTcgMS44LTEwLjUgNS4zTDgwLjkgMzEzLjVWNy41cTAtNy41LTcuNS03LjVIMjEuNVExNCAwIDE0IDcuNXY0OTdxMCA3LjUgNy41IDcuNWg1MS45cTcuNSAwIDcuNS03LjV2LTEwOWwzMC44LTI5LjMgMTEwLjUgMTQwLjZjMyAzLjUgNi41IDUuMyAxMC41IDUuM2g2Ni45cTUuMjUgMCA2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg2LjE3IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHptMTExLjkyLTE0Ny42Yy05LjUtMTQuNjItMzkuMzctNTIuNDUtODcuMjYtNzMuNzFxLTkuMS00LjA2LTE4LjM4LTcuMjdhNzguNDMgNzguNDMgMCAwIDAtNDcuODgtMTA0LjEzYy0xMi40MS00LjEtMjMuMzMtNi0zMi40MS01Ljc3LS42LTItMS44OS0xMSA5LjQtMzVMMTk4LjY2IDMybC01LjQ4IDcuNTZjLTguNjkgMTIuMDYtMTYuOTIgMjMuNTUtMjQuMzQgMzQuODlhNTEgNTEgMCAwIDAtOC4yOS0xLjI1Yy00MS41My0yLjQ1LTM5LTIuMzMtNDEuMDYtMi4zMy01MC42MSAwLTUwLjc1IDUyLjEyLTUwLjc1IDQ1Ljg4bC0yLjM2IDM2LjY4Yy0xLjYxIDI3IDE5Ljc1IDUwLjIxIDQ3LjYzIDUxLjg1bDguOTMuNTRhMjE0IDIxNCAwIDAgMC00Ni4yOSAzNS41NEMxNCAzMDQuNjYgMTQgMzc0IDE0IDQyOS43N3YzMy42NGwyMy4zMi0yOS44YTE0OC42IDE0OC42IDAgMCAwIDE0LjU2IDM3LjU2YzUuNzggMTAuMTMgMTQuODcgOS40NSAxOS42NCA3LjMzIDQuMjEtMS44NyAxMC02LjkyIDMuNzUtMjAuMTFhMTc4LjI5IDE3OC4yOSAwIDAgMS0xNS43Ni01My4xM2w0Ni44Mi01OS44My0yNC42NiA3NC4xMWM1OC4yMy00Mi40IDE1Ny4zOC02MS43NiAyMzYuMjUtMzguNTkgMzQuMiAxMC4wNSA2Ny40NS42OSA4NC43NC0yMy44NC43Mi0xIDEuMi0yLjE2IDEuODUtMy4yMmExNTYuMDkgMTU2LjA5IDAgMCAxIDIuOCAyOC40M2MwIDIzLjMtMy42OSA1Mi45My0xNC44OCA4MS42NC0yLjUyIDYuNDYgMS43NiAxNC41IDguNiAxNS43NCA3LjQyIDEuNTcgMTUuMzMtMy4xIDE4LjM3LTExLjE1QzQyOSA0NDMgNDM0IDQxNCA0MzQgMzgyLjMyYzAtMzguNTgtMTMtNzcuNDYtMzUuOTEtMTEwLjkyek0xNDIuMzcgMTI4LjU4bC0xNS43LS45My0xLjM5IDIxLjc5IDEzLjEzLjc4YTkzIDkzIDAgMCAwIC4zMiAxOS41N2wtMjIuMzgtMS4zNGExMi4yOCAxMi4yOCAwIDAgMS0xMS43Ni0xMi43OUwxMDcgMTE5YzEtMTIuMTcgMTMuODctMTEuMjcgMTMuMjYtMTEuMzJsMjkuMTEgMS43M2ExNDQuMzUgMTQ0LjM1IDAgMCAwLTcgMTkuMTd6bTE0OC40MiAxNzIuMThhMTAuNTEgMTAuNTEgMCAwIDEtMTQuMzUtMS4zOWwtOS42OC0xMS40OS0zNC40MiAyN2E4LjA5IDguMDkgMCAwIDEtMTEuMTMtMS4wOGwtMTUuNzgtMTguNjRhNy4zOCA3LjM4IDAgMCAxIDEuMzQtMTAuMzRsMzQuNTctMjcuMTgtMTQuMTQtMTYuNzQtMTcuMDkgMTMuNDVhNy43NSA3Ljc1IDAgMCAxLTEwLjU5LTFzLTMuNzItNC40Mi0zLjgtNC41M2E3LjM4IDcuMzggMCAwIDEgMS4zNy0xMC4zNEwyMTQgMjI1LjE5cy0xOC41MS0yMi0xOC42LTIyLjE0YTkuNTYgOS41NiAwIDAgMSAxLjc0LTEzLjQyIDEwLjM4IDEwLjM4IDAgMCAxIDE0LjMgMS4zN2w4MS4wOSA5Ni4zMmE5LjU4IDkuNTggMCAwIDEtMS43NCAxMy40NHpNMTg3LjQ0IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5Y2RuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzLjggNDA5LjNsNjAuNS01OWMzMi4xIDQyLjggNzEuMSA2NiAxMjYuNiA2Ny40IDMwLjUuNyA2MC4zLTcgODYuNC0yMi40IDUuMSA1LjMgMTguNSAxOS41IDIwLjkgMjItMzIuMiAyMC43LTY5LjYgMzEuMS0xMDguMSAzMC4yLTQzLjMtMS4xLTg0LjYtMTYuNy0xMTcuNy00NC40LjMtLjYtMzguMiAzNy41LTM4LjYgMzcuOSA5LjUgMjkuOC0xMy4xIDYyLjQtNDYuMyA2Mi40QzIwLjcgNTAzLjMgMCA0ODEuNyAwIDQ1NC45YzAtMzQuMyAzMy4xLTU2LjYgNjMuOC00NS42em0zNTQuOS0yNTIuNGMxOS4xIDMxLjMgMjkuNiA2Ny40IDI4LjcgMTA0LTEuMSA0NC44LTE5IDg3LjUtNDguNiAxMjEgLjMuMyAyMy44IDI1LjIgMjQuMSAyNS41IDkuNi0xLjMgMTkuMiAyIDI1LjkgOS4xIDExLjMgMTIgMTAuOSAzMC45LTEuMSA0Mi40LTEyIDExLjMtMzAuOSAxMC45LTQyLjQtMS4xLTYuNy03LTkuNC0xNi44LTcuNi0yNi4zLTI0LjktMjYuNi00NC40LTQ3LjItNDQuNC00Ny4yIDQyLjctMzQuMSA2My4zLTc5LjYgNjQuNC0xMjQuMi43LTI4LjktNy4yLTU3LjItMjEuMS04Mi4ybDIyLjEtMjF6TTEwNCA1My4xYzYuNyA3IDkuNCAxNi44IDcuNiAyNi4zbDQ1LjkgNDguMWMtNC43IDMuOC0xMy4zIDEwLjQtMjIuOCAyMS4zLTI1LjQgMjguNS0zOS42IDY0LjgtNDAuNyAxMDIuOS0uNyAyOC45IDYuMSA1Ny4yIDIwIDgyLjRsLTIyIDIxLjVDNzIuNyAzMjQgNjMuMSAyODcuOSA2NC4yIDI1MC45YzEtNDQuNiAxOC4zLTg3LjYgNDcuNS0xMjEuMWwtMjUuMy0yNi40Yy05LjYgMS4zLTE5LjItMi0yNS45LTkuMS0xMS4zLTEyLTEwLjktMzAuOSAxLjEtNDIuNEM3My41IDQwLjcgOTIuMiA0MSAxMDQgNTMuMXpNNDY0LjkgOGMyNiAwIDQ3LjEgMjIuNCA0Ny4xIDQ4LjNTNDkwLjkgMTA0IDQ2NC45IDEwNGMtNi4zLjEtMTQtMS4xLTE1LjktMS44bC02Mi45IDU5LjdjLTMyLjctNDMuNi03Ni43LTY1LjktMTI2LjktNjcuMi0zMC41LS43LTYwLjMgNi44LTg2LjIgMjIuNGwtMjEuMS0yMkMxODQuMSA3NC4zIDIyMS41IDY0IDI2MCA2NC45YzQzLjMgMS4xIDg0LjYgMTYuNyAxMTcuNyA0NC42bDQxLjEtMzguNmMtMS41LTQuNy0yLjItOS42LTIuMi0xNC41QzQxNi41IDI5LjcgNDM4LjkgOCA0NjQuOSA4ek0yNTYuNyAxMTMuNGM1LjUgMCAxMC45LjQgMTYuNCAxLjEgNzguMSA5LjggMTMzLjQgODEuMSAxMjMuOCAxNTkuMS05LjggNzguMS04MS4xIDEzMy40LTE1OS4xIDEyMy44LTc4LjEtOS44LTEzMy40LTgxLjEtMTIzLjgtMTU5LjIgOS4zLTcyLjQgNzAuMS0xMjQuNiAxNDIuNy0xMjQuOHptLTU5IDExOS40Yy42IDIyLjcgMTIuMiA0MS44IDMyLjQgNTIuMmwtMTEgNTEuN2g3My43bC0xMS01MS43YzIwLjEtMTAuOSAzMi4xLTI5IDMyLjQtNTIuMi0uNC0zMi44LTI1LjgtNTcuNS01OC4zLTU4LjMtMzIuMS44LTU3LjMgMjQuOC01OC4yIDU4LjN6TTI1NiAxNjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lja3N0YXJ0ZXJLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ny4zIDExNC40YzAtNTYuMi0zMi41LTgyLjQtNzMuNC04Mi40QzI2LjIgMzIgMCA2OC4yIDAgMTEzLjR2MjgzYzAgNDcuMyAyNS4zIDgzLjQgNzQuOSA4My40IDM5LjggMCA3Mi40LTI1LjYgNzIuNC04My40di03Ni41bDExMi4xIDEzOC4zYzIyLjcgMjcuMiA3Mi4xIDMwLjcgMTAzLjIgMCAyNy0yNy42IDI3LjMtNjcuNCA3LjQtOTIuMmwtOTAuOC0xMTQuOCA3NC45LTEwNy40YzE3LjQtMjQuNyAxNy41LTYzLjEtMTAuNC04OS44LTMwLjMtMjktODIuNC0zMS42LTExMy42IDEyLjhMMTQ3LjMgMTg1di03MC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaWNrc3RhcnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgNDgwSDQ4Yy0yNi40IDAtNDgtMjEuNi00OC00OFY4MGMwLTI2LjQgMjEuNi00OCA0OC00OGgzNTJjMjYuNCAwIDQ4IDIxLjYgNDggNDh2MzUyYzAgMjYuNC0yMS42IDQ4LTQ4IDQ4ek0xOTkuNiAxNzguNWMwLTMwLjctMTcuNi00NS4xLTM5LjctNDUuMS0yNS44IDAtNDAgMTkuOC00MCA0NC41djE1NC44YzAgMjUuOCAxMy43IDQ1LjYgNDAuNSA0NS42IDIxLjUgMCAzOS4yLTE0IDM5LjItNDUuNnYtNDEuOGw2MC42IDc1LjdjMTIuMyAxNC45IDM5IDE2LjggNTUuOCAwIDE0LjYtMTUuMSAxNC44LTM2LjggNC01MC40bC00OS4xLTYyLjggNDAuNS01OC43YzkuNC0xMy41IDkuNS0zNC41LTUuNi00OS4xLTE2LjQtMTUuOS00NC42LTE3LjMtNjEuNCA3bC00NC44IDY0Ljd2LTM4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtvcnZ1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuNSAzNGgtMzI3QzI2LjggMzQgMCA2MC44IDAgOTMuNXYzMjcuMUMwIDQ1My4yIDI2LjggNDgwIDU5LjUgNDgwaDMyNy4xYzMzIDAgNTkuNS0yNi44IDU5LjUtNTkuNXYtMzI3QzQ0NiA2MC44IDQxOS4yIDM0IDM4Ni41IDM0ek04Ny4xIDEyMC44aDk2djExNmw2MS44LTExNmgxMTAuOWwtODEuMiAxMzJIODcuMXYtMTMyem0xNjEuOCAyNzIuMWwtNjUuNy0xMTMuNnYxMTMuNmgtOTZWMjYyLjFoMTkxLjVsODguNiAxMzAuOEgyNDguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFyYXZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQuNCwxMTUuODNhNS43Miw1LjcyLDAsMCwwLS4yOC0uNjgsOC41Miw4LjUyLDAsMCwwLS41My0xLjI1LDYsNiwwLDAsMC0uNTQtLjcxLDkuMzYsOS4zNiwwLDAsMC0uNzItLjk0Yy0uMjMtLjIyLS41Mi0uNC0uNzctLjZhOC44NCw4Ljg0LDAsMCwwLS45LS42OEw0MDQuNCw1NS41NWE4LDgsMCwwLDAtOCwwTDMwMC4xMiwxMTFoMGE4LjA3LDguMDcsMCwwLDAtLjg4LjY5LDcuNjgsNy42OCwwLDAsMC0uNzguNiw4LjIzLDguMjMsMCwwLDAtLjcyLjkzYy0uMTcuMjQtLjM5LjQ1LS41NC43MWE5LjcsOS43LDAsMCwwLS41MiwxLjI1Yy0uMDguMjMtLjIxLjQ0LS4yOC42OGE4LjA4LDguMDgsMCwwLDAtLjI4LDIuMDhWMjIzLjE4bC04MC4yMiw0Ni4xOVY2My40NGE3LjgsNy44LDAsMCwwLS4yOC0yLjA5Yy0uMDYtLjI0LS4yLS40NS0uMjgtLjY4YTguMzUsOC4zNSwwLDAsMC0uNTItMS4yNGMtLjE0LS4yNi0uMzctLjQ3LS41NC0uNzJhOS4zNiw5LjM2LDAsMCwwLS43Mi0uOTQsOS40Niw5LjQ2LDAsMCwwLS43OC0uNiw5LjgsOS44LDAsMCwwLS44OC0uNjhoMEwxMTUuNjEsMS4wN2E4LDgsMCwwLDAtOCwwTDExLjM0LDU2LjQ5aDBhNi41Miw2LjUyLDAsMCwwLS44OC42OSw3LjgxLDcuODEsMCwwLDAtLjc5LjYsOC4xNSw4LjE1LDAsMCwwLS43MS45M2MtLjE4LjI1LS40LjQ2LS41NS43MmE3Ljg4LDcuODgsMCwwLDAtLjUxLDEuMjQsNi40Niw2LjQ2LDAsMCwwLS4yOS42Nyw4LjE4LDguMTgsMCwwLDAtLjI4LDIuMXYzMjkuN2E4LDgsMCwwLDAsNCw2Ljk1bDE5Mi41LDExMC44NGE4LjgzLDguODMsMCwwLDAsMS4zMy41NGMuMjEuMDguNDEuMi42My4yNmE3LjkyLDcuOTIsMCwwLDAsNC4xLDBjLjItLjA1LjM3LS4xNi41NS0uMjJhOC42LDguNiwwLDAsMCwxLjQtLjU4TDQwNC40LDQwMC4wOWE4LDgsMCwwLDAsNC02Ljk1VjI4Ny44OGw5Mi4yNC01My4xMWE4LDgsMCwwLDAsNC03VjExNy45MkE4LjYzLDguNjMsMCwwLDAsNTA0LjQsMTE1LjgzWk0xMTEuNiwxNy4yOGgwbDgwLjE5LDQ2LjE1LTgwLjIsNDYuMThMMzEuNDEsNjMuNDRabTg4LjI1LDYwVjI3OC42bC00Ni41MywyNi43OS0zMy42OSwxOS40VjEyMy41bDQ2LjUzLTI2Ljc5Wm0wLDQxMi43OEwyMy4zNywzODguNVY3Ny4zMkw1Ny4wNiw5Ni43bDQ2LjUyLDI2LjhWMzM4LjY4YTYuOTQsNi45NCwwLDAsMCwuMTIuOSw4LDgsMCwwLDAsLjE2LDEuMThoMGE1LjkyLDUuOTIsMCwwLDAsLjM4LjksNi4zOCw2LjM4LDAsMCwwLC40MiwxdjBhOC41NCw4LjU0LDAsMCwwLC42Ljc4LDcuNjIsNy42MiwwLDAsMCwuNjYuODRsMCwwYy4yMy4yMi41Mi4zOC43Ny41OGE4LjkzLDguOTMsMCwwLDAsLjg2LjY2bDAsMCwwLDAsOTIuMTksNTIuMThabTgtMTA2LjE3LTgwLjA2LTQ1LjMyLDg0LjA5LTQ4LjQxLDkyLjI2LTUzLjExLDgwLjEzLDQ2LjEzLTU4LjgsMzMuNTZabTE4NC41Miw0LjU3TDIxNS44OCw0OTAuMTFWMzk3LjhMMzQ2LjYsMzIzLjJsNDUuNzctMjYuMTVabTAtMTE5LjEzTDM1OC42OCwyNTBsLTQ2LjUzLTI2Ljc5VjEzMS43OWwzMy42OSwxOS40TDM5Mi4zNywxNzhabTgtMTA1LjI4LTgwLjItNDYuMTcsODAuMi00Ni4xNiw4MC4xOCw0Ni4xNVptOCwxMDUuMjhWMTc4TDQ1NSwxNTEuMTlsMzMuNjgtMTkuNHY5MS4zOWgwWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXN0Zm1TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTkyLjIgMzEyLjljLTYzLjQgMC04NS40LTI4LjYtOTcuMS02NC4xLTE2LjMtNTEtMjEuNS04NC4zLTYzLTg0LjMtMjIuNCAwLTQ1LjEgMTYuMS00NS4xIDYxLjIgMCAzNS4yIDE4IDU3LjIgNDMuMyA1Ny4yIDI4LjYgMCA0Ny42LTIxLjMgNDcuNi0yMS4zbDExLjcgMzEuOXMtMTkuOCAxOS40LTYxLjIgMTkuNGMtNTEuMyAwLTc5LjktMzAuMS03OS45LTg1LjggMC01Ny45IDI4LjYtOTIgODIuNS05MiA3My41IDAgODAuOCA0MS40IDEwMC44IDEwMS45IDguOCAyNi44IDI0LjIgNDYuMiA2MS4yIDQ2LjIgMjQuOSAwIDM4LjEtNS41IDM4LjEtMTkuMSAwLTE5LjktMjEuOC0yMi00OS45LTI4LjYtMzAuNC03LjMtNDIuNS0yMy4xLTQyLjUtNDggMC00MCAzMi4zLTUyLjQgNjUuMi01Mi40IDM3LjQgMCA2MC4xIDEzLjYgNjMgNDYuNmwtMzYuNyA0LjRjLTEuNS0xNS44LTExLTIyLjQtMjguNi0yMi40LTE2LjEgMC0yNiA3LjMtMjYgMTkuOCAwIDExIDQuOCAxNy42IDIwLjkgMjEuMyAzMi43IDcuMSA3MS44IDEyIDcxLjggNTcuNS4xIDM2LjctMzAuNyA1MC42LTc2LjEgNTAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFzdGZtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS44IDM2Ny4xbC0xOC44LTUxcy0zMC41IDM0LTc2LjIgMzRjLTQwLjUgMC02OS4yLTM1LjItNjkuMi05MS41IDAtNzIuMSAzNi40LTk3LjkgNzIuMS05Ny45IDY2LjUgMCA3NC44IDUzLjMgMTAwLjkgMTM0LjkgMTguOCA1Ni45IDU0IDEwMi42IDE1NS40IDEwMi42IDcyLjcgMCAxMjItMjIuMyAxMjItODAuOSAwLTcyLjktNjIuNy04MC42LTExNS05Mi4xLTI1LjgtNS45LTMzLjQtMTYuNC0zMy40LTM0IDAtMTkuOSAxNS44LTMxLjcgNDEuNi0zMS43IDI4LjIgMCA0My40IDEwLjYgNDUuNyAzNS44bDU4LjYtN2MtNC43LTUyLjgtNDEuMS03NC41LTEwMC45LTc0LjUtNTIuOCAwLTEwNC40IDE5LjktMTA0LjQgODMuOSAwIDM5LjkgMTkuNCA2NS4xIDY4IDc2LjggNDQuOSAxMC42IDc5LjggMTMuOCA3OS44IDQ1LjcgMCAyMS43LTIxLjEgMzAuNS02MSAzMC41LTU5LjIgMC04My45LTMxLjEtOTcuOS03My45LTMyLTk2LjgtNDMuNi0xNjMtMTYxLjMtMTYzQzQ1LjcgMTEzLjggMCAxNjguMyAwIDI2MWMwIDg5LjEgNDUuNyAxMzcuMiAxMjcuOSAxMzcuMiA2Ni4yIDAgOTcuOS0zMS4xIDk3LjktMzEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVhbnB1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuNTM5IDExMS40ODVsMTUuMDk2IDI0OC45NTUtMTAuOTc5LS4yNzVjLTM2LjIzMi0uODI0LTcxLjY0IDguNzgzLTEwMi42NTcgMjcuOTk3LTMxLjAxNi0xOS4yMTQtNjYuNDI0LTI3Ljk5Ny0xMDIuNjU3LTI3Ljk5Ny00NS41NjQgMC04Mi4wNyAxMC43MDUtMTIzLjUxNiAyNy43MjNMOTMuMTE3IDEyOS42YzI4LjU0Ni0xMS44MDMgNjEuNDg0LTE4LjExNSA5Mi4yMjYtMTguMTE1IDQxLjE3MyAwIDczLjgzNiAxMy4xNzUgMTAyLjY1NyA0Mi41NDQgMjcuNzIzLTI4LjI3MSA1OS4wMTMtNDEuNzIxIDk4LjUzOS00Mi41NDR6TTU2OS4wNyA0NDhjLTI1LjUyNiAwLTQ3LjQ4NS01LjIxNS03MC41NDItMTUuNjQ1LTM0LjMxLTE1LjY0NS02OS45OTMtMjQuOTc4LTEwNy44NzEtMjQuOTc4LTM4Ljk3NyAwLTc0LjkzNCAxMi45MDEtMTAyLjY1NyA0MC42MjMtMjcuNzIzLTI3LjcyMy02My42OC00MC42MjMtMTAyLjY1Ny00MC42MjMtMzcuODc4IDAtNzMuNTYxIDkuMzMzLTEwNy44NzEgMjQuOTc4QzU1LjIzOSA0NDIuMjM2IDMyLjczMSA0NDggOC4zMDMgNDQ4SDYuOTNMNDkuNDc1IDk4Ljg1OUM4OC43MjYgNzYuNjI2IDEzNi40ODYgNjQgMTgxLjc3NSA2NCAyMTguODMgNjQgMjU2Ljk4NCA3MS42ODUgMjg4IDkzLjA5NSAzMTkuMDE2IDcxLjY4NSAzNTcuMTcgNjQgMzk0LjIyNSA2NGM0NS4yODkgMCA5My4wNDkgMTIuNjI2IDEzMi4zIDM0Ljg1OUw1NjkuMDcgNDQ4em0tNDMuMzY4LTQ0Ljc0MWwtMzQuMDM2LTI4MC4yNDZjLTMwLjc0Mi0xMy45OTktNjcuMjQ4LTIxLjQxLTEwMS4wMDktMjEuNDEtMzguNDI4IDAtNzQuMzg1IDEyLjA3Ny0xMDIuNjU3IDM4LjcwMi0yOC4yNzItMjYuNjI1LTY0LjIyOC0zOC43MDItMTAyLjY1Ny0zOC43MDItMzMuNzYxIDAtNzAuMjY3IDcuNDExLTEwMS4wMDkgMjEuNDFMNTAuMjk4IDQwMy4yNTljNDcuMjExLTE5LjQ4NyA4Mi44OTQtMzMuNDg2IDEzNS4wNDUtMzMuNDg2IDM3LjYwNCAwIDcwLjgxNyA5LjYwNiAxMDIuNjU3IDI5LjY0NCAzMS44NC0yMC4wMzggNjUuMDUyLTI5LjY0NCAxMDIuNjU3LTI5LjY0NCA1Mi4xNTEgMCA4Ny44MzQgMTMuOTk5IDEzNS4wNDUgMzMuNDg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxMi43IDIxOWMwLTIwLjUgMy4yLTMyLjYgMy4yLTU0LjYgMC0zNC4yLTEyLjYtNDUuMi00MC41LTQ1LjJoLTIwLjV2MjQuMmg2LjNjMTQuMiAwIDE3LjMgNC43IDE3LjMgMjIuMSAwIDE2LjMtMS42IDMyLjYtMS42IDUxLjUgMCAyNC4yIDcuOSAzMy42IDIzLjYgMzcuM3YxLjZjLTE1LjggMy43LTIzLjYgMTMuMS0yMy42IDM3LjMgMCAxOC45IDEuNiAzNC4yIDEuNiA1MS41IDAgMTcuOS0zLjcgMjIuNi0xNy4zIDIyLjZ2LjVoLTYuM1YzOTNoMjAuNWMyNy44IDAgNDAuNS0xMSA0MC41LTQ1LjIgMC0yMi42LTMuMi0zNC4yLTMuMi01NC42IDAtMTEgNi44LTIyLjYgMjcuMy0yMy42di0yNy4zYy0yMC41LS43LTI3LjMtMTIuMy0yNy4zLTIzLjN6bS0xMDUuNiAzMmMtMTUuOC02LjMtMzAuNS0xMC0zMC41LTIwLjUgMC03LjkgNi4zLTEyLjYgMTcuOS0xMi42czIyLjEgNC43IDMzLjYgMTMuMWwyMS0yNy44Yy0xMy4xLTEwLTMxLTIwLjUtNTUuMi0yMC41LTM1LjcgMC01OS45IDIwLjUtNTkuOSA0OS40IDAgMjUuNyAyMi42IDM4LjkgNDEuNSA0Ni4yIDE2LjMgNi4zIDMyLjEgMTEuNiAzMi4xIDIyLjEgMCA3LjktNi4zIDEzLjEtMjAuNSAxMy4xLTEzLjEgMC0yNi4zLTUuMy00MC41LTE2LjNsLTIxIDMwLjVjMTUuOCAxMy4xIDM5LjkgMjIuMSA1OS45IDIyLjEgNDIgMCA2NC42LTIyLjEgNjQuNi01MXMtMjIuNS00MS00My00Ny44em0tMzU4LjkgNTkuNGMtMy43IDAtOC40LTMuMi04LjQtMTMuMVYxMTkuMUg2NS4yYy0yOC40IDAtNDEgMTEtNDEgNDUuMiAwIDIyLjYgMy4yIDM1LjIgMy4yIDU0LjYgMCAxMS02LjggMjIuNi0yNy4zIDIzLjZ2MjcuM2MyMC41LjUgMjcuMyAxMi4xIDI3LjMgMjMuMSAwIDE5LjQtMy4yIDMxLTMuMiA1My42IDAgMzQuMiAxMi42IDQ1LjIgNDAuNSA0NS4yaDIwLjV2LTI0LjJoLTYuM2MtMTMuMSAwLTE3LjMtNS4zLTE3LjMtMjIuNnMxLjYtMzIuMSAxLjYtNTEuNWMwLTI0LjItNy45LTMzLjYtMjMuNi0zNy4zdi0xLjZjMTUuOC0zLjcgMjMuNi0xMy4xIDIzLjYtMzcuMyAwLTE4LjktMS42LTM0LjItMS42LTUxLjVzMy43LTIyLjEgMTcuMy0yMi4xSDkzdjE1MC44YzAgMzIuMSAxMSA1My4xIDQzLjEgNTMuMSAxMCAwIDE3LjktMS42IDIzLjYtMy43bC01LjMtMzQuMmMtMy4xLjgtNC42LjgtNi4yLjh6TTM3OS45IDI1MWMtMTYuMy02LjMtMzEtMTAtMzEtMjAuNSAwLTcuOSA2LjMtMTIuNiAxNy45LTEyLjYgMTEuNiAwIDIyLjEgNC43IDMzLjYgMTMuMWwyMS0yNy44Yy0xMy4xLTEwLTMxLTIwLjUtNTUuMi0yMC41LTM1LjcgMC01OS45IDIwLjUtNTkuOSA0OS40IDAgMjUuNyAyMi42IDM4LjkgNDEuNSA0Ni4yIDE2LjMgNi4zIDMyLjEgMTEuNiAzMi4xIDIyLjEgMCA3LjktNi4zIDEzLjEtMjAuNSAxMy4xLTEzLjEgMC0yNi4zLTUuMy00MC41LTE2LjNsLTIwLjUgMzAuNWMxNS44IDEzLjEgMzkuOSAyMi4xIDU5LjkgMjIuMSA0MiAwIDY0LjYtMjIuMSA2NC42LTUxIC4xLTI4LjktMjIuNS00MS00My00Ny44em0tMTU1LTY4LjhjLTM4LjQgMC03NS4xIDMyLjEtNzQuMSA4Mi41IDAgNTIgMzQuMiA4Mi41IDc5LjMgODIuNSAxOC45IDAgMzkuOS02LjggNTYuMi0xNy45bC0xNS44LTI3LjhjLTExLjYgNi44LTIyLjYgMTAtMzQuMiAxMC0yMSAwLTM3LjMtMTAtNDEuNS0zNC4ySDI5MGMuNS0zLjcgMS42LTExIDEuNi0xOS40LjYtNDIuNi0yMi42LTc1LjctNjYuNy03NS43em0tMzAgNjYuMmMzLjItMjEgMTUuOC0zMSAzMC41LTMxIDE4LjkgMCAyNi4zIDEzLjEgMjYuMyAzMWgtNTYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIuMSAyMDQuMnY3MS4xYzAgMS44LTEuNCAzLjItMy4yIDMuMmgtMTEuNGMtMS4xIDAtMi4xLS42LTIuNi0xLjNsLTMyLjYtNDR2NDIuMmMwIDEuOC0xLjQgMy4yLTMuMiAzLjJoLTExLjRjLTEuOCAwLTMuMi0xLjQtMy4yLTMuMnYtNzEuMWMwLTEuOCAxLjQtMy4yIDMuMi0zLjJIMjE5YzEgMCAyLjEuNSAyLjYgMS40bDMyLjYgNDR2LTQyLjJjMC0xLjggMS40LTMuMiAzLjItMy4yaDExLjRjMS44LS4xIDMuMyAxLjQgMy4zIDMuMXptLTgyLTMuMmgtMTEuNGMtMS44IDAtMy4yIDEuNC0zLjIgMy4ydjcxLjFjMCAxLjggMS40IDMuMiAzLjIgMy4yaDExLjRjMS44IDAgMy4yLTEuNCAzLjItMy4ydi03MS4xYzAtMS43LTEuNC0zLjItMy4yLTMuMnptLTI3LjUgNTkuNmgtMzEuMXYtNTYuNGMwLTEuOC0xLjQtMy4yLTMuMi0zLjJoLTExLjRjLTEuOCAwLTMuMiAxLjQtMy4yIDMuMnY3MS4xYzAgLjkuMyAxLjYuOSAyLjIuNi41IDEuMy45IDIuMi45aDQ1LjdjMS44IDAgMy4yLTEuNCAzLjItMy4ydi0xMS40YzAtMS43LTEuNC0zLjItMy4xLTMuMnpNMzMyLjEgMjAxaC00NS43Yy0xLjcgMC0zLjIgMS40LTMuMiAzLjJ2NzEuMWMwIDEuNyAxLjQgMy4yIDMuMiAzLjJoNDUuN2MxLjggMCAzLjItMS40IDMuMi0zLjJ2LTExLjRjMC0xLjgtMS40LTMuMi0zLjItMy4ySDMwMXYtMTJoMzEuMWMxLjggMCAzLjItMS40IDMuMi0zLjJWMjM0YzAtMS44LTEuNC0zLjItMy4yLTMuMkgzMDF2LTEyaDMxLjFjMS44IDAgMy4yLTEuNCAzLjItMy4ydi0xMS40Yy0uMS0xLjctMS41LTMuMi0zLjItMy4yek00NDggMTEzLjdWMzk5Yy0uMSA0NC44LTM2LjggODEuMS04MS43IDgxSDgxYy00NC44LS4xLTgxLjEtMzYuOS04MS04MS43VjExM2MuMS00NC44IDM2LjktODEuMSA4MS43LTgxSDM2N2M0NC44LjEgODEuMSAzNi44IDgxIDgxLjd6bS02MS42IDEyMi42YzAtNzMtNzMuMi0xMzIuNC0xNjMuMS0xMzIuNC04OS45IDAtMTYzLjEgNTkuNC0xNjMuMSAxMzIuNCAwIDY1LjQgNTggMTIwLjIgMTM2LjQgMTMwLjYgMTkuMSA0LjEgMTYuOSAxMS4xIDEyLjYgMzYuOC0uNyA0LjEtMy4zIDE2LjEgMTQuMSA4LjggMTcuNC03LjMgOTMuOS01NS4zIDEyOC4yLTk0LjcgMjMuNi0yNiAzNC45LTUyLjMgMzQuOS04MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5rZWRpbkluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMC4yOCA0NDhINy40VjE0OC45aDkyLjg4ek01My43OSAxMDguMUMyNC4wOSAxMDguMSAwIDgzLjUgMCA1My44YTUzLjc5IDUzLjc5IDAgMCAxIDEwNy41OCAwYzAgMjkuNy0yNC4xIDU0LjMtNTMuNzkgNTQuM3pNNDQ3LjkgNDQ4aC05Mi42OFYzMDIuNGMwLTM0LjctLjctNzkuMi00OC4yOS03OS4yLTQ4LjI5IDAtNTUuNjkgMzcuNy01NS42OSA3Ni43VjQ0OGgtOTIuNzhWMTQ4LjloODkuMDh2NDAuOGgxLjNjMTIuNC0yMy41IDQyLjY5LTQ4LjMgODcuODgtNDguMyA5NCAwIDExMS4yOCA2MS45IDExMS4yOCAxNDIuM1Y0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmtlZGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMkgzMS45QzE0LjMgMzIgMCA0Ni41IDAgNjQuM3YzODMuNEMwIDQ2NS41IDE0LjMgNDgwIDMxLjkgNDgwSDQxNmMxNy42IDAgMzItMTQuNSAzMi0zMi4zVjY0LjNjMC0xNy44LTE0LjQtMzIuMy0zMi0zMi4zek0xMzUuNCA0MTZINjlWMjAyLjJoNjYuNVY0MTZ6bS0zMy4yLTI0M2MtMjEuMyAwLTM4LjUtMTcuMy0zOC41LTM4LjVTODAuOSA5NiAxMDIuMiA5NmMyMS4yIDAgMzguNSAxNy4zIDM4LjUgMzguNSAwIDIxLjMtMTcuMiAzOC41LTM4LjUgMzguNXptMjgyLjEgMjQzaC02Ni40VjMxMmMwLTI0LjgtLjUtNTYuNy0zNC41LTU2LjctMzQuNiAwLTM5LjkgMjctMzkuOSA1NC45VjQxNmgtNjYuNFYyMDIuMmg2My43djI5LjJoLjljOC45LTE2LjggMzAuNi0zNC41IDYyLjktMzQuNSA2Ny4yIDAgNzkuNyA0NC4zIDc5LjcgMTAxLjlWNDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM3LjQgMjI2LjNjLS4zLS45LS45LTEuNC0xLjQtMmwtNzAtMzguNmMtLjktLjYtMi0uNi0zLjEgMGwtNTguOSAzNmMtLjkuNi0xLjQgMS43LTEuNCAyLjZsLS45IDMxLjQtMjQtMTZjLS45LS42LTIuMy0uNi0zLjEgMEwyNDAgMjYwLjlsLTEuNC0zNS4xYzAtLjktLjYtMi0xLjQtMi4zbC0zNi0yNC4zIDMzLjctMTcuNGMxLjEtLjYgMS43LTEuNyAxLjctMi45bC01LjctMTMyLjNjMC0uOS0uOS0yLTEuNy0yLjZMMTM4LjYuM2MtLjktLjMtMS43LS4zLTIuMy0uM0wxMi42IDM4LjZjLTEuNC42LTIuMyAyLTIgMy43TDM4IDE3NS40Yy45IDMuNCAzNCAyNy40IDM4LjYgMzAuOWwtMjYuOSAxMi45Yy0xLjQuOS0yIDIuMy0xLjcgMy40bDIwLjYgMTAwLjNjLjYgMi45IDIzLjcgMjMuMSAyNy4xIDI2LjNsLTE3LjQgMTAuNmMtLjkuNi0xLjcgMi0xLjQgMy4xIDEuNCA3LjEgMTUuNCA3Ny43IDE2LjkgNzkuMWw2NS4xIDY5LjFjLjYuNiAxLjQuNiAyLjMuOS42IDAgMS4xLS4zIDEuNy0uNmw4My43LTY2LjljLjktLjYgMS4xLTEuNCAxLjEtMi4zbC0yLTQ2IDI4IDIzLjdjMS4xLjkgMi45LjkgNCAwbDY2LjktNTMuNGMuOS0uNiAxLjEtMS40IDEuMS0yLjNsMi4zLTMzLjQgMjAuMyAxNGMxLjEuOSAyLjYuOSAzLjcgMGw1NC42LTQzLjdjLjYtLjMgMS4xLTEuMSAxLjEtMiAuOS02LjUgMTAuMy03MC44IDkuNy03Mi44em0tMjA0LjggNC44bDQgOTIuNi05MC42IDYxLjItMTQtOTYuNiAxMDAuNi01Ny4yem0tNy43LTE4MGw1LjQgMTI2LTEwNi42IDU1LjRMMTA0IDk3LjdsMTIwLjktNDYuNnpNNDQgMTczLjFMMTggNDhsNzkuNyA0OS40IDE5LjQgMTMyLjlMNDQgMTczLjF6bTMwLjYgMTQ3LjhMNTUuNyAyMzBsNzAgNTguMyAxMy43IDkzLjQtNjQuOC02MC44em0yNC4zIDExNy43bC0xMy43LTY3LjEgNjEuNyA2MC45IDkuNyA2Ny40LTU3LjctNjEuMnptNjQuNSA2NC41bC0xMC42LTcwLjkgODUuNy02MS40IDMuMSA3MC03OC4yIDYyLjN6bTgyLTExNS4xYzAtMy40LjktMjIuOS0yLTI1LjFsLTI0LjMtMjAgMjIuMy0xNC45YzIuMy0xLjcgMS4xLTUuNyAxLjEtOGwyOS40IDIyLjYuNiA2OC4zLTI3LjEtMjIuOXptOTQuMy0yNS40bC02MC45IDQ4LjYtLjYtNjguNiA2NS43LTQ2LjktNC4yIDY2Ljl6bTI3LjctMjUuN2wtMTkuMS0xMy40IDItMzRjLjMtLjktLjMtMi0xLjEtMi42TDMwOCAyNTkuN2wuNi0zMCA2NC42IDQwLjYtNS44IDY2LjZ6bTU0LjYtMzkuOGwtNDguMyAzOC4zIDUuNy02NS4xIDUxLjEtMzYuNi04LjUgNjMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGludXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIwLjggMTIzLjNjMSAuNSAxLjggMS43IDMgMS43IDEuMSAwIDIuOC0uNCAyLjktMS41LjItMS40LTEuOS0yLjMtMy4yLTIuOS0xLjctLjctMy45LTEtNS41LS4xLS40LjItLjguNy0uNiAxLjEuMyAxLjMgMi4zIDEuMSAzLjQgMS43em0tMjEuOSAxLjdjMS4yIDAgMi0xLjIgMy0xLjcgMS4xLS42IDMuMS0uNCAzLjUtMS42LjItLjQtLjItLjktLjYtMS4xLTEuNi0uOS0zLjgtLjYtNS41LjEtMS4zLjYtMy40IDEuNS0zLjIgMi45LjEgMSAxLjggMS41IDIuOCAxLjR6TTQyMCA0MDMuOGMtMy42LTQtNS4zLTExLjYtNy4yLTE5LjctMS44LTguMS0zLjktMTYuOC0xMC41LTIyLjQtMS4zLTEuMS0yLjYtMi4xLTQtMi45LTEuMy0uOC0yLjctMS41LTQuMS0yIDkuMi0yNy4zIDUuNi01NC41LTMuNy03OS4xLTExLjQtMzAuMS0zMS4zLTU2LjQtNDYuNS03NC40LTE3LjEtMjEuNS0zMy43LTQxLjktMzMuNC03MkMzMTEuMSA4NS40IDMxNS43LjEgMjM0LjggMCAxMzIuNC0uMiAxNTggMTAzLjQgMTU2LjkgMTM1LjJjLTEuNyAyMy40LTYuNCA0MS44LTIyLjUgNjQuNy0xOC45IDIyLjUtNDUuNSA1OC44LTU4LjEgOTYuNy02IDE3LjktOC44IDM2LjEtNi4yIDUzLjMtNi41IDUuOC0xMS40IDE0LjctMTYuNiAyMC4yLTQuMiA0LjMtMTAuMyA1LjktMTcgOC4zcy0xNCA2LTE4LjUgMTQuNWMtMi4xIDMuOS0yLjggOC4xLTIuOCAxMi40IDAgMy45LjYgNy45IDEuMiAxMS44IDEuMiA4LjEgMi41IDE1LjcuOCAyMC44LTUuMiAxNC40LTUuOSAyNC40LTIuMiAzMS43IDMuOCA3LjMgMTEuNCAxMC41IDIwLjEgMTIuMyAxNy4zIDMuNiA0MC44IDIuNyA1OS4zIDEyLjUgMTkuOCAxMC40IDM5LjkgMTQuMSA1NS45IDEwLjQgMTEuNi0yLjYgMjEuMS05LjYgMjUuOS0yMC4yIDEyLjUtLjEgMjYuMy01LjQgNDguMy02LjYgMTQuOS0xLjIgMzMuNiA1LjMgNTUuMSA0LjEuNiAyLjMgMS40IDQuNiAyLjUgNi43di4xYzguMyAxNi43IDIzLjggMjQuMyA0MC4zIDIzIDE2LjYtMS4zIDM0LjEtMTEgNDguMy0yNy45IDEzLjYtMTYuNCAzNi0yMy4yIDUwLjktMzIuMiA3LjQtNC41IDEzLjQtMTAuMSAxMy45LTE4LjMuNC04LjItNC40LTE3LjMtMTUuNS0yOS43ek0yMjMuNyA4Ny4zYzkuOC0yMi4yIDM0LjItMjEuOCA0NC0uNCA2LjUgMTQuMiAzLjYgMzAuOS00LjMgNDAuNC0xLjYtLjgtNS45LTIuNi0xMi42LTQuOSAxLjEtMS4yIDMuMS0yLjcgMy45LTQuNiA0LjgtMTEuOC0uMi0yNy05LjEtMjcuMy03LjMtLjUtMTMuOSAxMC44LTExLjggMjMtNC4xLTItOS40LTMuNS0xMy00LjQtMS02LjktLjMtMTQuNiAyLjktMjEuOHpNMTgzIDc1LjhjMTAuMSAwIDIwLjggMTQuMiAxOS4xIDMzLjUtMy41IDEtNy4xIDIuNS0xMC4yIDQuNiAxLjItOC45LTMuMy0yMC4xLTkuNi0xOS42LTguNC43LTkuOCAyMS4yLTEuOCAyOC4xIDEgLjggMS45LS4yLTUuOSA1LjUtMTUuNi0xNC42LTEwLjUtNTIuMSA4LjQtNTIuMXptLTEzLjYgNjAuN2M2LjItNC42IDEzLjYtMTAgMTQuMS0xMC41IDQuNy00LjQgMTMuNS0xNC4yIDI3LjktMTQuMiA3LjEgMCAxNS42IDIuMyAyNS45IDguOSA2LjMgNC4xIDExLjMgNC40IDIyLjYgOS4zIDguNCAzLjUgMTMuNyA5LjcgMTAuNSAxOC4yLTIuNiA3LjEtMTEgMTQuNC0yMi43IDE4LjEtMTEuMSAzLjYtMTkuOCAxNi0zOC4yIDE0LjktMy45LS4yLTctMS05LjYtMi4xLTgtMy41LTEyLjItMTAuNC0yMC0xNS04LjYtNC44LTEzLjItMTAuNC0xNC43LTE1LjMtMS40LTQuOSAwLTkgNC4yLTEyLjN6bTMuMyAzMzRjLTIuNyAzNS4xLTQzLjkgMzQuNC03NS4zIDE4LTI5LjktMTUuOC02OC42LTYuNS03Ni41LTIxLjktMi40LTQuNy0yLjQtMTIuNyAyLjYtMjYuNHYtLjJjMi40LTcuNi42LTE2LS42LTIzLjktMS4yLTcuOC0xLjgtMTUgLjktMjAgMy41LTYuNyA4LjUtOS4xIDE0LjgtMTEuMyAxMC4zLTMuNyAxMS44LTMuNCAxOS42LTkuOSA1LjUtNS43IDkuNS0xMi45IDE0LjMtMTggNS4xLTUuNSAxMC04LjEgMTcuNy02LjkgOC4xIDEuMiAxNS4xIDYuOCAyMS45IDE2bDE5LjYgMzUuNmM5LjUgMTkuOSA0My4xIDQ4LjQgNDEgNjguOXptLTEuNC0yNS45Yy00LjEtNi42LTkuNi0xMy42LTE0LjQtMTkuNiA3LjEgMCAxNC4yLTIuMiAxNi43LTguOSAyLjMtNi4yIDAtMTQuOS03LjQtMjQuOS0xMy41LTE4LjItMzguMy0zMi41LTM4LjMtMzIuNS0xMy41LTguNC0yMS4xLTE4LjctMjQuNi0yOS45cy0zLTIzLjMtLjMtMzUuMmM1LjItMjIuOSAxOC42LTQ1LjIgMjcuMi01OS4yIDIuMy0xLjcuOCAzLjItOC43IDIwLjgtOC41IDE2LjEtMjQuNCA1My4zLTIuNiA4Mi40LjYtMjAuNyA1LjUtNDEuOCAxMy44LTYxLjUgMTItMjcuNCAzNy4zLTc0LjkgMzkuMy0xMTIuNyAxLjEuOCA0LjYgMy4yIDYuMiA0LjEgNC42IDIuNyA4LjEgNi43IDEyLjYgMTAuMyAxMi40IDEwIDI4LjUgOS4yIDQyLjQgMS4yIDYuMi0zLjUgMTEuMi03LjUgMTUuOS05IDkuOS0zLjEgMTcuOC04LjYgMjIuMy0xNSA3LjcgMzAuNCAyNS43IDc0LjMgMzcuMiA5NS43IDYuMSAxMS40IDE4LjMgMzUuNSAyMy42IDY0LjYgMy4zLS4xIDcgLjQgMTAuOSAxLjQgMTMuOC0zNS43LTExLjctNzQuMi0yMy4zLTg0LjktNC43LTQuNi00LjktNi42LTIuNi02LjUgMTIuNiAxMS4yIDI5LjIgMzMuNyAzNS4yIDU5IDIuOCAxMS42IDMuMyAyMy43LjQgMzUuNyAxNi40IDYuOCAzNS45IDE3LjkgMzAuNyAzNC44LTIuMi0uMS0zLjIgMC00LjIgMCAzLjItMTAuMS0zLjktMTcuNi0yMi44LTI2LjEtMTkuNi04LjYtMzYtOC42LTM4LjMgMTIuNS0xMi4xIDQuMi0xOC4zIDE0LjctMjEuNCAyNy4zLTIuOCAxMS4yLTMuNiAyNC43LTQuNCAzOS45LS41IDcuNy0zLjYgMTgtNi44IDI5LTMyLjEgMjIuOS03Ni43IDMyLjktMTE0LjMgNy4yem0yNTcuNC0xMS41Yy0uOSAxNi44LTQxLjIgMTkuOS02My4yIDQ2LjUtMTMuMiAxNS43LTI5LjQgMjQuNC00My42IDI1LjVzLTI2LjUtNC44LTMzLjctMTkuM2MtNC43LTExLjEtMi40LTIzLjEgMS4xLTM2LjMgMy43LTE0LjIgOS4yLTI4LjggOS45LTQwLjYuOC0xNS4yIDEuNy0yOC41IDQuMi0zOC43IDIuNi0xMC4zIDYuNi0xNy4yIDEzLjctMjEuMS4zLS4yLjctLjMgMS0uNS44IDEzLjIgNy4zIDI2LjYgMTguOCAyOS41IDEyLjYgMy4zIDMwLjctNy41IDM4LjQtMTYuMyA5LS4zIDE1LjctLjkgMjIuNiA1LjEgOS45IDguNSA3LjEgMzAuMyAxNy4xIDQxLjYgMTAuNiAxMS42IDE0IDE5LjUgMTMuNyAyNC42ek0xNzMuMyAxNDguN2MyIDEuOSA0LjcgNC41IDggNy4xIDYuNiA1LjIgMTUuOCAxMC42IDI3LjMgMTAuNiAxMS42IDAgMjIuNS01LjkgMzEuOC0xMC44IDQuOS0yLjYgMTAuOS03IDE0LjgtMTAuNHM1LjktNi4zIDMuMS02LjYtMi42IDIuNi02IDUuMWMtNC40IDMuMi05LjcgNy40LTEzLjkgOS44LTcuNCA0LjItMTkuNSAxMC4yLTI5LjkgMTAuMnMtMTguNy00LjgtMjQuOS05LjdjLTMuMS0yLjUtNS43LTUtNy43LTYuOS0xLjUtMS40LTEuOS00LjYtNC4zLTQuOS0xLjQtLjEtMS44IDMuNyAxLjcgNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMeWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODEuMWg3Ny44djIwOC43YzAgMzMuMSAxNSA1Mi44IDI3LjIgNjEtMTIuNyAxMS4xLTUxLjIgMjAuOS04MC4yLTIuOEM3LjggMzM0IDAgMzEwLjcgMCAyODlWODEuMXptNDg1LjkgMTczLjV2LTIyaDIzLjh2LTc2LjhoLTI2LjFjLTEwLjEtNDYuMy01MS4yLTgwLjctMTAwLjMtODAuNy01Ni42IDAtMTAyLjcgNDYtMTAyLjcgMTAyLjdWMzU3YzE2IDIuMyAzNS40LS4zIDUxLjctMTQgMTcuMS0xNCAyNC44LTM3LjIgMjQuOC01OXYtNi43aDM4Ljh2LTc2LjhoLTM4Ljh2LTIzLjNjMC0zNC42IDUyLjItMzQuNiA1Mi4yIDB2NzcuMWMwIDU2LjYgNDYgMTAyLjcgMTAyLjcgMTAyLjd2LTc2LjVjLTE0LjUgMC0yNi4xLTExLjctMjYuMS0yNS45em0tMjk0LjMtOTl2MTEzYzAgMTUuNC0yMy44IDE1LjQtMjMuOCAwdi0xMTNIOTF2MTMyLjdjMCAyMy44IDggNTQgNDUgNjMuOSAzNyA5LjggNTguMi0xMC42IDU4LjItMTAuNi0yLjEgMTMuNC0xNC41IDIzLjMtMzQuOSAyNS4zLTE1LjUgMS42LTM1LjItMy42LTQ1LTcuOHY3MC4zYzI1LjEgNy41IDUxLjUgOS44IDc3LjYgNC43IDQ3LjEtOS4xIDc2LjgtNDguNCA3Ni44LTEwMC44VjE1NS4xaC03Ny4xdi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWdlbnRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NS43IDEyNy45VjM4NGwtNjMuNCAzNi41VjE2NC43TDIyMy44IDczLjEgNjUuMiAxNjQuN2wuNCAyNTUuOUwyLjMgMzg0VjEyOC4xTDIyNC4yIDBsMjIxLjUgMTI3Ljl6TTI1NS42IDQyMC41TDIyNCA0MzguOWwtMzEuOC0xOC4ydi0yNTZsLTYzLjMgMzYuNi4xIDI1NS45IDk0LjkgNTQuOSA5NS4xLTU0Ljl2LTI1NmwtNjMuNC0zNi42djI1NS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWlsY2hpbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMwLjYxIDI0My41MmEzNi4xNSAzNi4xNSAwIDAgMSA5LjMgMGMxLjY2LTMuODMgMS45NS0xMC40My40NS0xNy42MS0yLjIzLTEwLjY3LTUuMjUtMTcuMTQtMTEuNDgtMTYuMTNzLTYuNDcgOC43NC00LjI0IDE5LjQyYzEuMjYgNiAzLjQ5IDExLjE0IDYgMTQuMzJ6TTI3Ny4wNSAyNTJjNC40NyAyIDcuMiAzLjI2IDguMjggMi4xMyAxLjg5LTEuOTQtMy40OC05LjM5LTEyLjEyLTEzLjA5YTMxLjQ0IDMxLjQ0IDAgMCAwLTMwLjYxIDMuNjhjLTMgMi4xOC01LjgxIDUuMjItNS40MSA3LjA2Ljg1IDMuNzQgMTAtMi43MSAyMi42LTMuNDggNy0uNDQgMTIuOCAxLjc1IDE3LjI2IDMuNzF6bS05IDUuMTNjLTkuMDcgMS40Mi0xNSA2LjUzLTEzLjQ3IDEwLjEuOS4zNCAxLjE3LjgxIDUuMjEtLjgxYTM3IDM3IDAgMCAxIDE4LjcyLTEuOTVjMi45Mi4zNCA0LjMxLjUyIDQuOTQtLjQ5IDEuNDYtMi4yMi01LjcxLTgtMTUuMzktNi44NXptNTQuMTcgMTcuMWMzLjM4LTYuODctMTAuOS0xMy45My0xNC4zLTdzMTAuOTIgMTMuODggMTQuMzIgNi45N3ptMTUuNjYtMjAuNDdjLTcuNjYtLjEzLTcuOTUgMTUuOC0uMjYgMTUuOTNzNy45OC0xNS44MS4yOC0xNS45NnptLTIxOC43OSA3OC45Yy0xLjMyLjMxLTYgMS40NS04LjQ3LTIuMzUtNS4yLTggMTEuMTEtMjAuMzggMy0zNS43Ny05LjEtMTcuNDctMjcuODItMTMuNTQtMzUuMDUtNS41NC04LjcxIDkuNi04LjcyIDIzLjU0LTUgMjQuMDggNC4yNy41NyA0LjA4LTYuNDcgNy4zOC0xMS42M2ExMi44MyAxMi44MyAwIDAgMSAxNy44NS0zLjcyYzExLjU5IDcuNTkgMS4zNyAxNy43NiAyLjI4IDI4LjYyIDEuMzkgMTYuNjggMTguNDIgMTYuMzcgMjEuNTggOWEyLjA4IDIuMDggMCAwIDAtLjItMi4zM2MuMDMuODkuNjgtMS4zLTMuMzUtLjM5em0yOTkuNzItMTcuMDdjLTMuMzUtMTEuNzMtMi41Ny05LjIyLTYuNzgtMjAuNTIgMi40NS0zLjY3IDE1LjI5LTI0LTMuMDctNDMuMjUtMTAuNC0xMC45Mi0zMy45LTE2LjU0LTQxLjEtMTguNTQtMS41LTExLjM5IDQuNjUtNTguNy0yMS41Mi04MyAyMC43OS0yMS41NSAzMy43Ni00NS4yOSAzMy43My02NS42NS0uMDYtMzkuMTYtNDguMTUtNTEtMTA3LjQyLTI2LjQ3bC0xMi41NSA1LjMzYy0uMDYtLjA1LTIyLjcxLTIyLjI3LTIzLjA1LTIyLjU3QzE2OS41LTE4LTQxLjc3IDIxNi44MSAyNS43OCAyNzMuODVsMTQuNzYgMTIuNTFhNzIuNDkgNzIuNDkgMCAwIDAtNC4xIDMzLjVjMy4zNiAzMy40IDM2IDYwLjQyIDY3LjUzIDYwLjM4IDU3LjczIDEzMy4wNiAyNjcuOSAxMzMuMjggMzIyLjI5IDMgMS43NC00LjQ3IDkuMTEtMjQuNjEgOS4xMS00Mi4zOHMtMTAuMDktMjUuMjctMTYuNTMtMjUuMjd6bS0zMTYgNDguMTZjLTIyLjgyLS42MS00Ny40Ni0yMS4xNS00OS45MS00NS41MS02LjE3LTYxLjMxIDc0LjI2LTc1LjI3IDg0LTEyLjMzIDQuNTQgMjkuNjQtNC42NyA1OC40OS0zNC4xMiA1Ny44MXpNODQuMyAyNDkuNTVDNjkuMTQgMjUyLjUgNTUuNzggMjYxLjA5IDQ3LjYgMjczYy00Ljg4LTQuMDctMTQtMTItMTUuNTktMTUtMTMuMDEtMjQuODUgMTQuMjQtNzMgMzMuMy0xMDAuMjFDMTEyLjQyIDkwLjU2IDE4Ni4xOSAzOS42OCAyMjAuMzYgNDguOTFjNS41NSAxLjU3IDIzLjk0IDIyLjg5IDIzLjk0IDIyLjg5cy0zNC4xNSAxOC45NC02NS44IDQ1LjM1Yy00Mi42NiAzMi44NS03NC44OSA4MC41OS05NC4yIDEzMi40ek0zMjMuMTggMzUwLjdzLTM1Ljc0IDUuMy02OS41MS03LjA3YzYuMjEtMjAuMTYgMjcgNi4xIDk2LjQtMTMuODEgMTUuMjktNC4zOCAzNS4zNy0xMyA1MS0yNS4zNWExMDIuODUgMTAyLjg1IDAgMCAxIDcuMTIgMjQuMjhjMy42Ni0uNjYgMTQuMjUtLjUyIDExLjQ0IDE4LjEtMy4yOSAxOS44Ny0xMS43MyAzNi0yNS45MyA1MC44NEExMDYuODYgMTA2Ljg2IDAgMCAxIDM2Mi41NSA0MjFhMTMyLjQ1IDEzMi40NSAwIDAgMS0yMC4zNCA4LjU4Yy01My41MSAxNy40OC0xMDguMy0xLjc0LTEyNi00M2E2Ni4zMyA2Ni4zMyAwIDAgMS0zLjU1LTkuNzRjLTcuNTMtMjcuMi0xLjE0LTU5LjgzIDE4Ljg0LTgwLjM3IDEuMjMtMS4zMSAyLjQ4LTIuODUgMi40OC00Ljc5YTguNDUgOC40NSAwIDAgMC0xLjkyLTQuNTRjLTctMTAuMTMtMzEuMTktMjcuNC0yNi4zMy02MC44MyAzLjUtMjQgMjQuNDktNDAuOTEgNDQuMDctMzkuOTFsNSAuMjljOC40OC41IDE1Ljg5IDEuNTkgMjIuODggMS44OCAxMS42OS41IDIyLjItMS4xOSAzNC42NC0xMS41NiA0LjItMy41IDcuNTctNi41NCAxMy4yNi03LjUxYTE3LjQ1IDE3LjQ1IDAgMCAxIDEzLjYgMi4yNGMxMCA2LjY0IDExLjQgMjIuNzMgMTEuOTIgMzQuNDkuMjkgNi43MiAxLjEgMjMgMS4zOCAyNy42My42MyAxMC42NyAzLjQzIDEyLjE3IDkuMTEgMTQgMy4xOSAxLjA1IDYuMTUgMS44MyAxMC41MSAzLjA2IDEzLjIxIDMuNzEgMjEgNy40OCAyNiAxMi4zMWExNi4zOCAxNi4zOCAwIDAgMSA0Ljc0IDkuMjljMS41NiAxMS4zNy04LjgyIDI1LjQtMzYuMzEgMzguMTYtNDYuNzEgMjEuNjgtOTMuNjggMTQuNDUtMTAwLjQ4IDEzLjY4LTIwLjE1LTIuNzEtMzEuNjMgMjMuMzItMTkuNTUgNDEuMTUgMjIuNjQgMzMuNDEgMTIyLjQgMjAgMTUxLjM3LTIxLjM1LjY5LTEgLjEyLTEuNTktLjczLTEtNDEuNzcgMjguNTgtOTcuMDYgMzguMjEtMTI4LjQ2IDI2LTQuNzctMS44NS0xNC43My02LjQ0LTE1Ljk0LTE2LjY3IDQzLjYgMTMuNDkgNzEgLjc0IDcxIC43NHMyLjAzLTIuNzktLjU2LTIuNTN6bS02OC40Ny01Ljd6bS04My40LTE4Ny41YzE2Ljc0LTE5LjM1IDM3LjM2LTM2LjE4IDU1LjgzLTQ1LjYzYS43My43MyAwIDAgMSAxIDFjLTEuNDYgMi42Ni00LjI5IDguMzQtNS4xOSAxMi42NWEuNzUuNzUgMCAwIDAgMS4xNi43OWMxMS40OS03LjgzIDMxLjQ4LTE2LjIyIDQ5LTE3LjNhLjc3Ljc3IDAgMCAxIC41MiAxLjM4IDQxLjg2IDQxLjg2IDAgMCAwLTcuNzEgNy43NC43NS43NSAwIDAgMCAuNTkgMS4xOWMxMi4zMS4wOSAyOS42NiA0LjQgNDEgMTAuNzQuNzYuNDMuMjIgMS45MS0uNjQgMS43Mi02OS41NS0xNS45NC0xMjMuMDggMTguNTMtMTM0LjUgMjYuODNhLjc2Ljc2IDAgMCAxLTEtMS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFuZGFsb3JpYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyLjI3IDUxMS44OWMtMS0zLjI2LTEuNjktMTUuODMtMS4zOS0yNC41OC41NS0xNS44OSAxLTI0LjcyIDEuNC0yOC43Ni42NC02LjIgMi44Ny0yMC43MiAzLjI4LTIxLjM4LjYtMSAuNC0yNy44Ny0uMjQtMzMuMTMtLjMxLTIuNTgtLjYzLTExLjktLjY5LTIwLjczLS4xMy0xNi40Ny0uNTMtMjAuMTItMi43My0yNC43Ni0xLjEtMi4zMi0xLjIzLTMuODQtMS0xMS40M2E5Mi4zOCA5Mi4zOCAwIDAgMC0uMzQtMTIuNzFjLTItMTMtMy40Ni0yNy43LTMuMjUtMzMuOXMuNDMtNy4xNSAyLjA2LTkuNjdjMy4wNS00LjcxIDYuNTEtMTQgOC42Mi0yMy4yNyAyLjI2LTkuODYgMy44OC0xNy4xOCA0LjU5LTIwLjc0YTEwOS41NCAxMDkuNTQgMCAwIDEgNC40Mi0xNS4wNWMyLjI3LTYuMjUgMi40OS0xNS4zOS4zNy0xNS4zOS0uMyAwLTEuMzggMS4yMi0yLjQxIDIuNzFzLTQuNzYgNC44LTguMjkgNy4zNmMtOC4zNyA2LjA4LTExLjcgOS4zOS0xMi42NiAxMi41OHMtMSA3LjIzLS4xNiA3Ljc2Yy4zNC4yMSAxLjI5IDIuNCAyLjExIDQuODhhMjguODMgMjguODMgMCAwIDEgLjcyIDE1LjM2Yy0uMzkgMS43Ny0xIDUuNDctMS40NiA4LjIzcy0xIDYuNDYtMS4yNSA4LjIyYTkuODUgOS44NSAwIDAgMS0xLjU1IDQuMjZjLTEgMS0xLjE0LjkxLTIuMDUtLjUzYTE0Ljg3IDE0Ljg3IDAgMCAxLTEuNDQtNC43NWMtLjI1LTEuNzQtMS42My03LjExLTMuMDgtMTEuOTMtMy4yOC0xMC45LTMuNTItMTYuMTUtMS0yMWExNC4yNCAxNC4yNCAwIDAgMCAxLjY3LTQuNjFjMC0yLjM5LTIuMi01LjMyLTcuNDEtOS44OS03LTYuMTgtOC42My03LjkyLTEwLjIzLTExLjMtMS43MS0zLjYtMy4wNi00LjA2LTQuNTQtMS41NC0xLjc4IDMtMi42IDkuMTEtMyAyMmwtLjM0IDEyLjE5IDIgMi4yNWMzLjIxIDMuNyAxMi4wNyAxNi40NSAxMy43OCAxOS44MyAzLjQxIDYuNzQgNC4zNCAxMS42OSA0LjQxIDIzLjU2cy45NSAyMi43NSAyIDI0LjcxYy4zNi42Ni41MSAxLjM1LjM0IDEuNTJzLjQxIDIuMDkgMS4yOSA0LjI3YTM4LjE0IDM4LjE0IDAgMCAxIDIuMDYgOSA5MSA5MSAwIDAgMCAxLjcxIDEwLjM3YzIuMjMgOS41NiAyLjc3IDE0LjA4IDIuMzkgMjAuMTQtLjIgMy4yNy0uNTMgMTEuMDctLjczIDE3LjMyLTEuMzEgNDEuNzYtMS44NSA1OC0yIDYxLjIxLS4xMiAyLS4zOSAxMS41MS0uNiAyMS4wNy0uMzYgMTYuMy0xLjMgMjcuMzctMi40MiAyOC42NS0uNjQuNzMtOC4wNy00LjkxLTEyLjUyLTkuNDktMy43NS0zLjg3LTQtNC43OS0yLjgzLTkuOTUuNy0zIDIuMjYtMTguMjkgMy4zMy0zMi42Mi4zNi00Ljc4LjgxLTEwLjUgMS0xMi43MS44My05LjM3IDEuNjYtMjAuMzUgMi42MS0zNC43OC41Ni04LjQ2IDEuMzMtMTYuNDQgMS43Mi0xNy43M3MuODktOS44OSAxLjEzLTE5LjExbC40My0xNi43Ny0yLjI2LTQuM2MtMS43Mi0zLjI4LTQuODctNi45NC0xMy4yMi0xNS4zNC02LTYuMDctMTEuODQtMTIuMy0xMi45MS0xMy44NWwtMS45NS0yLjgxLjc1LTEwLjljMS4wOS0xNS43MSAxLjEtNDguNTcgMC01OS4wNmwtLjg5LTguNy0zLjI4LTQuNTJjLTUuODYtOC4wOC01LjgtNy43NS02LjIyLTMzLjI3LS4xLTYuMDctLjM4LTExLjUtLjYzLTEyLjA2LS44My0xLjg3LTMuMDUtMi42Ni04LjU0LTMuMDUtOC44Ni0uNjItMTEtMS45LTIzLjg1LTE0LjU1LTYuMTUtNi0xMi4zNC0xMi0xMy43NS0xMy4xOS0yLjgxLTIuNDItMi43OS0yLS41Ni05LjYzbDEuMzUtNC42NS0xLjY5LTNhMzIuMjIgMzIuMjIgMCAwIDAtMi41OS00LjA3Yy0xLjMzLTEuNTEtNS41LTEwLjg5LTYtMTMuNDlhNC4yNCA0LjI0IDAgMCAxIC44Ny0zLjljMi4yMy0yLjg2IDMuNC01LjY4IDQuNDUtMTAuNzMgMi4zMy0xMS4xOSA3Ljc0LTI2LjA5IDEwLjYtMjkuMjIgMy4xOC0zLjQ3IDcuNy0xIDkuNDEgNSAxLjM0IDQuNzkgMS4zNyA5Ljc5LjEgMTguNTVhMTAxLjIgMTAxLjIgMCAwIDAtMSAxMS4xMWMwIDQgLjE5IDQuNjkgMi4yNSA3LjM5IDMuMzMgNC4zNyA3LjczIDcuNDEgMTUuMiAxMC41MmExOC42NyAxOC42NyAwIDAgMSA0LjcyIDIuODVjMTEuMTcgMTAuNzIgMTguNjIgMTYuMTggMjIuOTUgMTYuODUgNS4xOC44IDggNC41NCAxMCAxMy4zOSAxLjMxIDUuNjUgNCAxMS4xNCA1LjQ2IDExLjE0YTkuMzggOS4zOCAwIDAgMCAzLjMzLTEuMzljMi0xLjIyIDIuMjUtMS43MyAyLjI1LTQuMThhMTMyLjg4IDEzMi44OCAwIDAgMC0yLTE3Ljg0Yy0uMzctMS42Ni0uNzgtNC4wNi0uOTMtNS4zNXMtLjYxLTMuODUtMS01LjY5Yy0yLjU1LTExLjE2LTMuNjUtMTUuNDYtNC4xLTE2LTEuNTUtMi00LjA4LTEwLjItNC45My0xNS45Mi0xLjY0LTExLjExLTQtMTQuMjMtMTIuOTEtMTcuMzlBNDMuMTUgNDMuMTUgMCAwIDEgMTY1LjI0IDc4Yy0xLjE1LTEtNC0zLjIyLTYuMzUtNS4wNnMtNC40MS0zLjUzLTQuNi0zLjc2YTIyLjcgMjIuNyAwIDAgMC0yLjY5LTJjLTYuMjQtNC4yMi04Ljg0LTctMTEuMjYtMTJsLTIuNDQtNS0uMjItMTMtLjIyLTEzIDYuOTEtNi41NWMzLjk1LTMuNzUgOC40OC03LjM1IDEwLjU5LTguNDMgMy4zMS0xLjY5IDQuNDUtMS44OSAxMS4zNy0yIDguNTMtLjE5IDEwLjEyIDAgMTEuNjYgMS41NnMxLjM2IDYuNC0uMjkgOC41YTYuNjYgNi42NiAwIDAgMC0xLjM0IDIuMzJjMCAuNTgtMi42MSA0LjkxLTUuNDIgOWEzMC4zOSAzMC4zOSAwIDAgMC0yLjM3IDYuODJjMjAuNDQgMTMuMzkgMjEuNTUgMy43NyAxNC4wNyAyOUwxOTQgNjYuOTJjMy4xMS04LjY2IDYuNDctMTcuMjYgOC42MS0yNi4yMi4yOS03LjYzLTEyLTQuMTktMTUuNC04LjY4LTIuMzMtNS45MyAzLjEzLTE0LjE4IDYuMDYtMTkuMiAxLjYtMi4zNCA2LjYyLTQuNyA4LjgyLTQuMTUuODguMjIgNC4xNi0uMzUgNy4zNy0xLjI4YTQ1LjMgNDUuMyAwIDAgMSA3LjU1LTEuNjggMjkuNTcgMjkuNTcgMCAwIDAgNi0xLjI5YzMuNjUtMS4xMSA0LjUtMS4xNyA2LjM1LS40YTI5LjU0IDI5LjU0IDAgMCAwIDUuODIgMS4zNiAxOC4xOCAxOC4xOCAwIDAgMSA2IDEuOTEgMjIuNjcgMjIuNjcgMCAwIDAgNSAyLjE3YzIuNTEuNjggMyAuNTcgNy4wNS0xLjY3bDQuMzUtMi40TDI2OC4zMiA1YzEwLjQ0LS40IDEwLjgxLS40NyAxNS4yNi0yLjY4TDI4OC4xNiAwbDIuNDYgMS40M2MxLjc2IDEgMy4xNCAyLjczIDQuODUgNiAyLjM2IDQuNTEgMi4zOCA0LjU4IDEuMzcgNy4zNy0uODggMi40NC0uODkgMy4zLS4xIDYuMzlhMzUuNzYgMzUuNzYgMCAwIDAgMi4xIDUuOTEgMTMuNTUgMTMuNTUgMCAwIDEgMS4zMSA0Yy4zMSA0LjMzIDAgNS4zLTIuNDEgNi45Mi0yLjE3IDEuNDctNyA3LjkxLTcgOS4zNGExNC43NyAxNC43NyAwIDAgMS0xLjA3IDNjLTUgMTEuNTEtNi43NiAxMy41Ni0xNC4yNiAxNy05LjIgNC4yLTEyLjMgNS4xOS0xNi4yMSA1LjE5LTMuMSAwLTQgLjI1LTQuNTQgMS4yNmExOC4zMyAxOC4zMyAwIDAgMS00LjA5IDMuNzEgMTMuNjIgMTMuNjIgMCAwIDAtNC4zOCA0Ljc4IDUuODkgNS44OSAwIDAgMS0yLjQ5IDIuOTEgNi44OCA2Ljg4IDAgMCAwLTIuNDUgMS43MSA2Ny42MiA2Ny42MiAwIDAgMS03IDUuMzhjLTMuMzMgMi4zNC02Ljg3IDUtNy44NyA2QTcuMjcgNy4yNyAwIDAgMSAyMjQgMTAwYTUuNzYgNS43NiAwIDAgMC0yLjEzIDEuNjVjLTEuMzEgMS4zOS0xLjQ5IDIuMTEtMS4xNCA0LjZhMzYuNDUgMzYuNDUgMCAwIDAgMS40MiA1Ljg4YzEuMzIgMy44IDEuMzEgNy44NiAwIDEwLjU3cy0uODkgNi42NSAxLjM1IDkuNTljMiAyLjYzIDIuMTYgNC41Ni43MSA4Ljg0YTMzLjQ1IDMzLjQ1IDAgMCAwLTEuMDYgOC45MWMwIDQuODguMjIgNi4yOCAxLjQ2IDguMzhzMS44MiAyLjQ4IDMuMjQgMi4zMmMyLS4yMyAyLjMtMS4wNSA0LjcxLTEyLjEyIDIuMTgtMTAgMy43MS0xMS45MiAxMy43Ni0xNy4wOCAyLjk0LTEuNTEgNy40Ni00IDEwLTUuNDRzNi43OS0zLjY5IDkuMzctNC45MWE0MC4wOSA0MC4wOSAwIDAgMCAxNS4yMi0xMS42N2M3LjExLTguNzkgMTAtMTYuMjIgMTIuODUtMzMuM2ExOC4zNyAxOC4zNyAwIDAgMSAyLjg2LTcuNzMgMjAuMzkgMjAuMzkgMCAwIDAgMi44OS03LjMxYzEtNS4zIDIuODUtOS4wOCA1LjU4LTExLjUxIDQuNy00LjE4IDYtMS4wOSA0LjU5IDEwLjg3LS40NiAzLjg2LTEuMSAxMC4zMy0xLjQ0IDE0LjM4bC0uNjEgNy4zNiA0LjQ1IDQuMDkgNC40NSA0LjA5LjExIDguNDJjLjA2IDQuNjMuNDcgOS41My45MiAxMC44OWwuODIgMi40Ny02LjQzIDYuMjhjLTguNTQgOC4zMy0xMi44OCAxMy45My0xNi43NiAyMS42MS0xLjc3IDMuNDktMy43NCA3LjExLTQuMzggOC0yLjE4IDMuMTEtNi40NiAxMy04Ljc2IDIwLjI2bC0yLjI5IDcuMjItNyA2LjQ5Yy0zLjgzIDMuNTctOCA3LjI1LTkuMTcgOC4xNy0zLjA1IDIuMzItNC4yNiA1LjE1LTQuMjYgMTBhMTQuNjIgMTQuNjIgMCAwIDAgMS41OSA3LjI2IDQyIDQyIDAgMCAxIDIuMDkgNC44MyA5LjI4IDkuMjggMCAwIDAgMS41NyAyLjg5YzEuNCAxLjU5IDEuOTIgMTYuMTIuODMgMjMuMjItLjY4IDQuNDgtMy42MyAxMi00LjcgMTItMS43OSAwLTQuMDYgOS4yNy01LjA3IDIwLjc0LS4xOCAyLS42MiA1Ljk0LTEgOC43cy0xIDEwLTEuMzUgMTYuMDVjLS43NyAxMi4yMi0uMTkgMTguNzcgMiAyMy4xNSAzLjQxIDYuNjkuNTIgMTIuNjktMTEgMjIuODRsLTQgMy40OS4wNyA1LjE5YTQwLjgxIDQwLjgxIDAgMCAwIDEuMTQgOC44N2M0LjYxIDE2IDQuNzMgMTYuOTIgNC4zOCAzNy4xMy0uNDYgMjYuNC0uMjYgNDAuMjcuNjMgNDQuMTVhNjEuMzEgNjEuMzEgMCAwIDEgMS4wOCA3Yy4xNyAyIC42NiA1LjMzIDEuMDggNy4zNi40NyAyLjI2Ljc4IDExIC43OSAyMi43NHYxOS4wNmwtMS44MSAyLjYzYy0yLjcxIDMuOTEtMTUuMTEgMTMuNTQtMTUuNDkgMTIuMjl6bTI5LjUzLTQ1LjExYy0uMTgtLjMtLjMzLTYuODctLjMzLTE0LjU5IDAtMTQuMDYtLjg5LTI3LjU0LTIuMjYtMzQuNDUtLjQtMi0uODEtOS43LS45LTE3LjA2LS4xNS0xMS45My0xLjQtMjQuMzctMi42NC0yNi4zOC0uNjYtMS4wNy0zLTE3LjY2LTMtMjEuMyAwLTQuMjMgMS02IDUuMjgtOS4xM3M0Ljg2LTMuMTQgNS40OC0uNzJjLjI4IDEuMSAxLjQ1IDUuNjIgMi42IDEwIDMuOTMgMTUuMTIgNC4xNCAxNi4yNyA0LjA1IDIxLjc0LS4xIDUuNzgtLjEzIDYuMTMtMS43NCAxNy43My0xIDcuMDctMS4xNyAxMi4zOS0xIDI4LjQzLjE3IDE5LjQtLjY0IDM1LjczLTIgNDEuMjctLjcxIDIuNzgtMi44IDUuNDgtMy40MyA0LjQzem0tNzEtMzcuNThhMTAxIDEwMSAwIDAgMS0xLjczLTEwLjc5IDEwMC41IDEwMC41IDAgMCAwLTEuNzMtMTAuNzkgMzcuNTMgMzcuNTMgMCAwIDEtMS02LjQ5Yy0uMzEtMy4xOS0uOTEtNy40Ni0xLjMzLTkuNDgtMS00Ljc5LTMuMzUtMTkuMzUtMy40Mi0yMS4wNyAwLS43NC0uMzQtNC4wNS0uNy03LjM2LS42Ny02LjIxLS44NC0yNy42Ny0uMjItMjguMjkgMS0xIDYuNjMgMi43NiAxMS4zMyA3LjQzbDUuMjggNS4yNS0uNDUgNi40N2MtLjI1IDMuNTYtLjYgMTAuMjMtLjc4IDE0Ljgzcy0uNDkgOS44Ny0uNjcgMTEuNzEtLjYxIDkuMzYtLjk0IDE2LjcyYy0uNzkgMTcuNDEtMS45NCAzMS4yOS0yLjY1IDMyYS42Mi42MiAwIDAgMS0xLS4xNHptLTg3LjE4LTI2Ni41OWMyMS4wNyAxMi43OSAxNy44NCAxNC4xNSAyOC40OSAxNy42NiAxMyA0LjI5IDE4Ljg3IDcuMTMgMjMuMTUgMTYuODdDMTExLjYgMjMzLjI4IDg2LjI1IDI1NSA3OC41NSAyNjhjLTMxIDUyLTYgMTAxLjU5IDYyLjc1IDg3LjIxLTE0LjE4IDI5LjIzLTc4IDI4LjYzLTk4LjY4LTQuOS0yNC42OC0zOS45NS0yMi4wOS0xMTguMyA2MS0xODcuNjZ6bTIxMC43OSAxNzljNTYuNjYgNi44OCA4Mi4zMi0zNy43NCA0Ni41NC04OS4yMyAwIDAtMjYuODctMjkuMzQtNjQuMjgtNjggMy0xNS40NSA5LjQ5LTMyLjEyIDMwLjU3LTUzLjgyIDg5LjIgNjMuNTEgOTIgMTQxLjYxIDkyLjQ2IDE0OS4zNiA0LjMgNzAuNjQtNzguNyA5MS4xOC0xMDUuMjkgNjEuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcmtkb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5My44IDU5LjFINDYuMkMyMC43IDU5LjEgMCA3OS44IDAgMTA1LjJ2MzAxLjVjMCAyNS41IDIwLjcgNDYuMiA0Ni4yIDQ2LjJoNTQ3LjdjMjUuNSAwIDQ2LjItMjAuNyA0Ni4xLTQ2LjFWMTA1LjJjMC0yNS40LTIwLjctNDYuMS00Ni4yLTQ2LjF6TTMzOC41IDM2MC42SDI3N3YtMTIwbC02MS41IDc2LjktNjEuNS03Ni45djEyMEg5Mi4zVjE1MS40aDYxLjVsNjEuNSA3Ni45IDYxLjUtNzYuOWg2MS41djIwOS4yem0xMzUuMyAzLjFMMzgxLjUgMjU2SDQ0M1YxNTEuNGg2MS41VjI1Nkg1NjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hc3RvZG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMyAxNzkuMTFjMC05Ny4yLTYzLjcxLTEyNS43LTYzLjcxLTEyNS43LTYyLjUyLTI4LjctMjI4LjU2LTI4LjQtMjkwLjQ4IDAgMCAwLTYzLjcyIDI4LjUtNjMuNzIgMTI1LjcgMCAxMTUuNy02LjYgMjU5LjQgMTA1LjYzIDI4OS4xIDQwLjUxIDEwLjcgNzUuMzIgMTMgMTAzLjMzIDExLjQgNTAuODEtMi44IDc5LjMyLTE4LjEgNzkuMzItMTguMWwtMS43LTM2LjlzLTM2LjMxIDExLjQtNzcuMTIgMTAuMWMtNDAuNDEtMS40LTgzLTQuNC04OS42My01NGExMDIuNTQgMTAyLjU0IDAgMCAxLS45LTEzLjljODUuNjMgMjAuOSAxNTguNjUgOS4xIDE3OC43NSA2LjcgNTYuMTItNi43IDEwNS00MS4zIDExMS4yMy03Mi45IDkuOC00OS44IDktMTIxLjUgOS0xMjEuNXptLTc1LjEyIDEyNS4yaC00Ni42M3YtMTE0LjJjMC00OS43LTY0LTUxLjYtNjQgNi45djYyLjVoLTQ2LjMzVjE5N2MwLTU4LjUtNjQtNTYuNi02NC02Ljl2MTE0LjJIOTAuMTljMC0xMjIuMS01LjItMTQ3LjkgMTguNDEtMTc1IDI1LjktMjguOSA3OS44Mi0zMC44IDEwMy44MyA2LjFsMTEuNiAxOS41IDExLjYtMTkuNWMyNC4xMS0zNy4xIDc4LjEyLTM0LjggMTAzLjgzLTYuMSAyMy43MSAyNy4zIDE4LjQgNTMgMTguNCAxNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1heGNkbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjEuMSA0NDIuN2gtOTcuNEw0MTUuNiAyMDBjMi4zLTEwLjIuOS0xOS41LTQuNC0yNS43LTUtNi4xLTEzLjctOS42LTI0LjItOS42aC00OS4zbC01OS41IDI3OGgtOTcuNGw1OS41LTI3OGgtODMuNGwtNTkuNSAyNzhIMGw1OS41LTI3OC00NC42LTk1LjRIMzg3YzM5LjQgMCA3NS4zIDE2LjMgOTguMyA0NC45IDIzLjMgMjguNiAzMS44IDY3LjQgMjMuNiAxMDUuOWwtNDcuOCAyMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWRiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjM3IDE2MC40MUw3IDM1Mmg0My45MWw1LjU5LTc5LjgzTDg0LjQzIDM1Mmg0NC43MWwyNS41NC03Ny40MyA0Ljc5IDc3LjQzSDIwNWwtMTIuNzktMTkxLjU5SDE0Ni43TDEwNiAyNzcuNzQgNjMuNjcgMTYwLjQxem0yODEgMGgtNDcuOVYzNTJoNDcuOXM5NSAuOCA5NC4yLTk1Ljc5Yy0uNzgtOTQuMjEtOTQuMTgtOTUuNzgtOTQuMTgtOTUuNzh6bS0xLjIgMTQ2LjQ2VjIwNC43OHM0NiA0LjI3IDQ2LjggNTAuNTctNDYuNzggNTEuNTQtNDYuNzggNTEuNTR6bTIzOC4yOS03NC4yNGE1Ni4xNiA1Ni4xNiAwIDAgMCA4LTM4LjMxYy01LjM0LTM1Ljc2LTU1LjA4LTM0LjMyLTU1LjA4LTM0LjMyaC01MS45djE5MS41OEg0ODJzODcgNC43OSA4Ny02My44NWMwLTQzLjE0LTMzLjUyLTU1LjA4LTMzLjUyLTU1LjA4em0tNTEuOS0zMS45NHMxMy41Ny0xLjU5IDE2IDkuNTljMS40MyA2LjY2LTQgMTItNCAxMmgtMTJ2LTIxLjU3em0tLjEgMTA5LjQ2bC4xLTI0LjkyVjI2N2guMDhzNDEuNTgtNC43MyA0MS4xOSAyMi40M2MtLjMzIDI1LjY1LTQxLjM1IDIwLjc0LTQxLjM1IDIwLjc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWRhcHBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExOC4zIDIzOC40YzMuNS0xMi41IDYuOS0zMy42IDEzLjItMzMuNiA4LjMgMS44IDkuNiAyMy40IDE4LjYgMzYuNiA0LjYtMjMuNSA1LjMtODUuMSAxNC4xLTg2LjcgOS0uNyAxOS43IDY2LjUgMjIgNzcuNSA5LjkgNC4xIDQ4LjkgNi42IDQ4LjkgNi42IDEuOSA3LjMtMjQgNy42LTQwIDcuOC00LjYgMTQuOC01LjQgMjcuNy0xMS40IDI4LTQuNy4yLTguMi0yOC44LTE3LjUtNDkuNmwtOS40IDY1LjVjLTQuNCAxMy0xNS41LTIyLjUtMjEuOS0zOS4zLTMuMy0uMS02Mi40LTEuNi00Ny42LTcuOGwzMS01ek0yMjggNDQ4YzIxLjIgMCAyMS4yLTMyIDAtMzJIOTJjLTIxLjIgMC0yMS4yIDMyIDAgMzJoMTM2em0tMjQgNjRjMjEuMiAwIDIxLjItMzIgMC0zMmgtODhjLTIxLjIgMC0yMS4yIDMyIDAgMzJoODh6bTM0LjItMTQxLjVjMy4yLTE4LjkgNS4yLTM2LjQgMTEuOS00OC44IDcuOS0xNC43IDE2LjEtMjguMSAyNC00MSAyNC42LTQwLjQgNDUuOS03NS4yIDQ1LjktMTI1LjVDMzIwIDY5LjYgMjQ4LjIgMCAxNjAgMFMwIDY5LjYgMCAxNTUuMmMwIDUwLjIgMjEuMyA4NS4xIDQ1LjkgMTI1LjUgNy45IDEyLjkgMTYgMjYuMyAyNCA0MSA2LjcgMTIuNSA4LjcgMjkuOCAxMS45IDQ4LjkgMy41IDIxIDM2LjEgMTUuNyAzMi42LTUuMS0zLjYtMjEuNy01LjYtNDAuNy0xNS4zLTU4LjZDNjYuNSAyNDYuNSAzMyAyMTEuMyAzMyAxNTUuMiAzMyA4Ny4zIDkwIDMyIDE2MCAzMnMxMjcgNTUuMyAxMjcgMTIzLjJjMCA1Ni4xLTMzLjUgOTEuMy02Ni4xIDE1MS42LTkuNyAxOC0xMS43IDM3LjQtMTUuMyA1OC42LTMuNCAyMC42IDI5IDI2LjQgMzIuNiA1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZGl1bU0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzEuNSAxNDIuM2MuNi01LjktMS43LTExLjgtNi4xLTE1LjhMMjAuMyA3Mi4xVjY0aDE0MC4ybDEwOC40IDIzNy43TDM2NC4yIDY0aDEzMy43djguMWwtMzguNiAzN2MtMy4zIDIuNS01IDYuNy00LjMgMTAuOHYyNzJjLS43IDQuMSAxIDguMyA0LjMgMTAuOGwzNy43IDM3djguMUgzMDcuM3YtOC4xbDM5LjEtMzcuOWMzLjgtMy44IDMuOC01IDMuOC0xMC44VjE3MS4yTDI0MS41IDQ0Ny4xaC0xNC43TDEwMC40IDE3MS4ydjE4NC45Yy0xLjEgNy44IDEuNSAxNS42IDcgMjEuMmw1MC44IDYxLjZ2OC4xaC0xNDR2LThMNjUgMzc3LjNjNS40LTUuNiA3LjktMTMuNSA2LjUtMjEuMlYxNDIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0zNzIuMiAxMDYuMWwtMjQgMjNjLTIuMSAxLjYtMy4xIDQuMi0yLjcgNi43djE2OS4zYy0uNCAyLjYuNiA1LjIgMi43IDYuN2wyMy41IDIzdjUuMWgtMTE4VjM2N2wyNC4zLTIzLjZjMi40LTIuNCAyLjQtMy4xIDIuNC02LjdWMTk5LjhsLTY3LjYgMTcxLjZoLTkuMUwxMjUgMTk5Ljh2MTE1Yy0uNyA0LjggMSA5LjcgNC40IDEzLjJsMzEuNiAzOC4zdjUuMUg3MS4ydi01LjFsMzEuNi0zOC4zYzMuNC0zLjUgNC45LTguNCA0LjEtMTMuMnYtMTMzYy40LTMuNy0xLTcuMy0zLjgtOS44TDc1IDEzOC4xVjEzM2g4Ny4zbDY3LjQgMTQ4TDI4OSAxMzMuMWg4My4ydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZHJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMy43IDI1NmMwIDEyMS44IDgzLjkgMjIyLjggMTkzLjUgMjQxLjEtMTguNyA0LjUtMzguMiA2LjktNTguMiA2LjlDMTExLjQgNTA0IDAgMzkzIDAgMjU2UzExMS40IDggMjQ4LjkgOGMyMC4xIDAgMzkuNiAyLjQgNTguMiA2LjlDMTk3LjUgMzMuMiAxMTMuNyAxMzQuMiAxMTMuNyAyNTZtMjk3LjQgMTAwLjNjLTc3LjcgNTUuNC0xNzkuNiA0Ny41LTI0MC40LTE0LjYgNS41IDE0LjEgMTIuNyAyNy43IDIxLjcgNDAuNSA2MS42IDg4LjIgMTgyLjQgMTA5LjMgMjY5LjcgNDcgODcuMy02Mi4zIDEwOC4xLTE4NC4zIDQ2LjUtMjcyLjYtOS0xMi45LTE5LjMtMjQuMy0zMC41LTM0LjIgMzcuNCA3OC44IDEwLjcgMTc4LjUtNjcgMjMzLjltLTIxOC44LTI0NGMtMS40IDEtMi43IDIuMS00IDMuMSA2NC4zLTE3LjggMTM1LjkgNCAxNzguOSA2MC41IDM1LjcgNDcgNDIuOSAxMDYuNiAyNC40IDE1OCA1Ni43LTU2LjIgNjcuNi0xNDIuMSAyMi4zLTIwMS44LTUwLTY1LjUtMTQ5LjEtNzQuNC0yMjEuNi0xOS44TTI5NiAyMjRjLTQuNCAwLTgtMy42LTgtOHYtNDBjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djQwYzAgNC40LTMuNiA4LTggOGgtNDBjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoNDBjNC40IDAgOCAzLjYgOCA4djQwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTQwYzAtNC40IDMuNi04IDgtOGg0MGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZXR1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05OSA0MTQuM2MxLjEgNS43LTIuMyAxMS4xLTggMTIuMy01LjQgMS4xLTEwLjktMi4zLTEyLTgtMS4xLTUuNCAyLjMtMTEuMSA3LjctMTIuMyA1LjQtMS4yIDExLjEgMi4zIDEyLjMgOHptMTQzLjEgNzEuNGMtNi4zIDQuNi04IDEzLjQtMy43IDIwIDQuNiA2LjYgMTMuNCA4LjMgMjAgMy43IDYuMy00LjYgOC0xMy40IDMuNC0yMC00LjItNi41LTEzLjEtOC4zLTE5LjctMy43em0tODYtNDYyLjNjNi4zLTEuNCAxMC4zLTcuNyA4LjktMTQtMS4xLTYuNi03LjQtMTAuNi0xMy43LTkuMS02LjMgMS40LTEwLjMgNy43LTkuMSAxNCAxLjQgNi42IDcuNiAxMC42IDEzLjkgOS4xek0zNC40IDIyNi4zYy0xMC02LjktMjMuNy00LjMtMzAuNiA2LTYuOSAxMC00LjMgMjQgNS43IDMwLjkgMTAgNy4xIDIzLjcgNC42IDMwLjYtNS43IDYuOS0xMC40IDQuMy0yNC4xLTUuNy0zMS4yem0yNzItMTcwLjljMTAuNi02LjMgMTMuNy0yMCA3LjctMzAuMy02LjMtMTAuNi0xOS43LTE0LTMwLTcuN3MtMTMuNyAyMC03LjQgMzAuNmM2IDEwLjMgMTkuNCAxMy43IDI5LjcgNy40em0tMTkxLjEgNThjNy43LTUuNCA5LjQtMTYgNC4zLTIzLjdzLTE1LjctOS40LTIzLjEtNC4zYy03LjcgNS40LTkuNCAxNi00LjMgMjMuNyA1LjEgNy44IDE1LjYgOS41IDIzLjEgNC4zem0zNzIuMyAxNTZjLTcuNCAxLjctMTIuMyA5LjEtMTAuNiAxNi45IDEuNCA3LjQgOC45IDEyLjMgMTYuMyAxMC42IDcuNC0xLjQgMTIuMy04LjkgMTAuNi0xNi42LTEuNS03LjQtOC45LTEyLjMtMTYuMy0xMC45em0zOS43LTU2LjhjLTEuMS01LjctNi42LTkuMS0xMi04LTUuNyAxLjEtOS4xIDYuOS04IDEyLjYgMS4xIDUuNCA2LjYgOS4xIDEyLjMgOCA1LjQtMS41IDkuMS02LjkgNy43LTEyLjZ6TTQ0NyAxMzguOWMtOC42IDYtMTAuNiAxNy43LTQuOSAyNi4zIDUuNyA4LjYgMTcuNCAxMC42IDI2IDQuOSA4LjMtNiAxMC4zLTE3LjcgNC42LTI2LjMtNS43LTguNy0xNy40LTEwLjktMjUuNy00Ljl6bS02LjMgMTM5LjRjMjYuMyA0My4xIDE1LjEgMTAwLTI2LjMgMTI5LjEtMTcuNCAxMi4zLTM3LjEgMTcuNy01Ni45IDE3LjEtMTIgNDcuMS02OS40IDY0LjYtMTA1LjEgMzIuNi0xLjEuOS0yLjYgMS43LTMuNyAyLjktMzkuMSAyNy4xLTkyLjMgMTcuNC0xMTkuNC0yMi4zLTkuNy0xNC4zLTE0LjYtMzAuNi0xNS4xLTQ2LjktNjUuNC0xMC45LTkwLTk0LTQxLjEtMTM5LjctMjguMy00Ni45LjYtMTA3LjQgNTMuNC0xMTQuOUMxNTEuNiA3MCAyMzQuMSAzOC42IDI5MC4xIDgyYzY3LjQtMjIuMyAxMzYuMyAyOS40IDEzMC45IDEwMS4xIDQxLjEgMTIuNiA1Mi44IDY2LjkgMTkuNyA5NS4yem0tNzAgNzQuM2MtMy4xLTIwLjYtNDAuOS00LjYtNDMuMS0yNy4xLTMuMS0zMiA0My43LTEwMS4xIDQwLTEyOC0zLjQtMjQtMTkuNC0yOS4xLTMzLjQtMjkuNC0xMy40LS4zLTE2LjkgMi0yMS40IDQuNi0yLjkgMS43LTYuNiA0LjktMTEuNy0uMy02LjMtNi0xMS4xLTExLjctMTkuNC0xMi45LTEyLjMtMi0xNy43IDItMjYuNiA5LjctMy40IDIuOS0xMiAxMi45LTIwIDkuMS0zLjQtMS43LTE1LjQtNy43LTI0LTExLjQtMTYuMy03LjEtNDAgNC42LTQ4LjYgMjAtMTIuOSAyMi45LTM4IDExMy4xLTQxLjcgMTI1LjEtOC42IDI2LjYgMTAuOSA0OC42IDM2LjkgNDcuMSAxMS4xLS42IDE4LjMtNC42IDI1LjQtMTcuNCA0LTcuNCA0MS43LTEwNy43IDQ0LjYtMTEyLjYgMi0zLjQgOC45LTggMTQuNi01LjEgNS43IDMuMSA2LjkgOS40IDYgMTUuMS0xLjEgOS43LTI4IDcwLjktMjguOSA3Ny43LTMuNCAyMi45IDI2LjkgMjYuNiAzOC42IDQgMy43LTcuMSA0NS43LTkyLjYgNDkuNC05OC4zIDQuMy02LjMgNy40LTguMyAxMS43LTggMy4xIDAgOC4zLjkgNy4xIDEwLjktMS40IDkuNC0zNS4xIDcyLjMtMzguOSA4Ny43LTQuNiAyMC42IDYuNiA0MS40IDI0LjkgNTAuNiAxMS40IDUuNyA2Mi41IDE1LjcgNTguNS0xMS4xem01LjcgOTIuM2MtMTAuMyA3LjQtMTIuOSAyMi01LjcgMzIuNiA3LjEgMTAuNiAyMS40IDEzLjEgMzIgNiAxMC42LTcuNCAxMy4xLTIyIDYtMzIuNi03LjQtMTAuNi0yMS43LTEzLjUtMzIuMy02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWdhcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTQuNSAyMDkuNnY2Ni4ybDMzLjUgMzMuNSAzMy4zLTMzLjN2LTY2LjRsLTMzLjQtMzMuNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQ1LjEgNDE0LjRMMzY3IDQ0MS42bC0yNi0xOS4ydi02NS41bC0zMy40LTMzLjQtMzMuNCAzMy40djY1LjVMMjQ4IDQ0MS42bC0yNi4xLTE5LjJ2LTY1LjVsLTMzLjQtMzMuNC0zMy41IDMzLjR2NjUuNWwtMjYuMSAxOS4yLTI2LjEtMTkuMnYtODdsNTkuNS01OS41VjE4OGw1OS41LTU5LjVWNTIuOWwyNi4xLTE5LjJMMjc0IDUyLjl2NzUuNmw1OS41IDU5LjV2ODcuNmw1OS43IDU5Ljd2ODcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVuZGVsZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0LjYgMzI1LjJjLTEyLjMtMTIuNC0yOS43LTE5LjItNDguNC0xNy4yLTQzLjMtMS00OS43LTM0LjktMzcuNS05OC44IDIyLjgtNTcuNS0xNC45LTEzMS41LTg3LjQtMTMwLjgtNzcuNC43LTgxLjcgODItMTMwLjkgODItNDguMSAwLTU0LTgxLjMtMTMwLjktODItNzIuOS0uOC0xMTAuMSA3My4zLTg3LjQgMTMwLjggMTIuMiA2My45IDUuOCA5Ny44LTM3LjUgOTguOC0yMS4yLTIuMy0zNyA2LjUtNTMgMjIuNS0xOS45IDE5LjctMTkuMyA5NC44IDQyLjYgMTAyLjYgNDcuMSA1LjkgODEuNi00Mi45IDYxLjItODcuOC00Ny4zLTEwMy43IDE4NS45LTEwNi4xIDE0Ni41LTguMi0uMS4xLS4yLjItLjMuNC0yNi44IDQyLjggNi44IDk3LjQgNTguOCA5NS4yIDUyLjEgMi4xIDg1LjQtNTIuNiA1OC44LTk1LjItLjEtLjItLjItLjMtLjMtLjQtMzkuNC05Ny45IDE5My44LTk1LjUgMTQ2LjUgOC4yLTQuNiAxMC02LjcgMjEuMy01LjcgMzMgNC45IDUzLjQgNjguNyA3NC4xIDEwNC45IDM1LjIgMTcuOC0xNC44IDIzLjEtNjUuNiAwLTg4LjN6bS0zMDMuOS0xOS4xaC0uNmMtNDMuNCAwLTYyLjgtMzcuNS02Mi44LTYyLjggMC0zNC43IDI4LjItNjIuOCA2Mi44LTYyLjhoLjZjMzQuNyAwIDYyLjggMjguMSA2Mi44IDYyLjggMCAyNS0xOS4yIDYyLjgtNjIuOCA2Mi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb2Jsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk5LjM2LDM2Mi4yM2MyOS40OS0zNC42OSw0Ny4xLTc4LjM0LDQ3LjEtMTI1Ljc5QzQ0Ni40NiwxMjMuNDksMzQ2Ljg2LDMyLDIyNCwzMlMxLjU0LDEyMy40OSwxLjU0LDIzNi40NCwxMDEuMTQsNDQwLjg3LDIyNCw0NDAuODdhMjM5LjI4LDIzOS4yOCwwLDAsMCw3OS40NC0xMy40NCw3LjE4LDcuMTgsMCwwLDEsOC4xMiwyLjU2YzE4LjU4LDI1LjA5LDQ3LjYxLDQyLjc0LDc5Ljg5LDQ5LjkyYTQuNDIsNC40MiwwLDAsMCw1LjIyLTMuNDMsNC4zNyw0LjM3LDAsMCwwLS44NS0zLjYyLDg3LDg3LDAsMCwxLDMuNjktMTEwLjY5Wk0zMjkuNTIsMjEyLjRsLTU3LjMsNDMuNDlMMjkzLDMyNC43NWE2LjUsNi41LDAsMCwxLTkuOTQsNy4yMkwyMjQsMjkwLjkyLDE2NC45NCwzMzJhNi41MSw2LjUxLDAsMCwxLTkuOTUtNy4yMmwyMC43OS02OC44Ni01Ny4zLTQzLjQ5YTYuNSw2LjUsMCwwLDEsMy44LTExLjY4bDcxLjg4LTEuNTEsMjMuNjYtNjcuOTJhNi41LDYuNSwwLDAsMSwxMi4yOCwwbDIzLjY2LDY3LjkyLDcxLjg4LDEuNTFhNi41LDYuNSwwLDAsMSwzLjg4LDExLjY4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3NvZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMmgyMTQuNnYyMTQuNkgwVjMyem0yMzMuNCAwSDQ0OHYyMTQuNkgyMzMuNFYzMnpNMCAyNjUuNGgyMTQuNlY0ODBIMFYyNjUuNHptMjMzLjQgMEg0NDhWNDgwSDIzMy40VjI2NS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NHYzNDguOWMwIDU2LjIgODggNTguMSA4OCAwVjE3NC4zYzcuOS01Mi45IDg4LTUwLjQgODggNi41djE3NS4zYzAgNTcuOSA5NiA1OCA5NiAwVjI0MGM1LjMtNTQuNyA4OC01Mi41IDg4IDQuM3YyMy44YzAgNTkuOSA4OCA1Ni42IDg4IDBWNjRIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4Y2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjQzIDIxOS43MjlDNDE2LjEyNCAxMzQuNzI3IDM0NC4xMzUgNjggMjU2LjkxOSA2OGMtNzIuMjY2IDAtMTM2LjIyNCA0Ni41MTYtMTU5LjIwNSAxMTQuMDc0LTU0LjU0NSA4LjAyOS05Ni42MyA1NC44MjItOTYuNjMgMTExLjU4MiAwIDYyLjI5OCA1MC42NjggMTEyLjk2NiAxMTMuMjQzIDExMi45NjZoMjg5LjYxNGM1Mi4zMjkgMCA5NC45NjktNDIuMzYyIDk0Ljk2OS05NC42OTMgMC00NS4xMzEtMzIuMTE4LTgzLjA2My03NC40OC05Mi4yem0tMjAuNDg5IDE0NC41M0gxMTQuMzI3Yy0zOS4wNCAwLTcwLjg4MS0zMS41NjQtNzAuODgxLTcwLjYwNHMzMS44NDEtNzAuNjA0IDcwLjg4MS03MC42MDRjMTguODI3IDAgMzYuNTQ4IDcuNDc1IDQ5LjgzOCAyMC43NjYgMTkuOTYzIDE5Ljk2MyA1MC4xMzMtMTAuMjI3IDMwLjE4LTMwLjE4LTE0LjY3NS0xNC4zOTgtMzIuNjcyLTI0LjM2NS01Mi4wNTMtMjkuMzQ5IDE5LjkzNS00NC4zIDY0Ljc5LTczLjkyNiAxMTQuNjI4LTczLjkyNiA2OS40OTYgMCAxMjUuOTc5IDU2LjQ4MyAxMjUuOTc5IDEyNS43MDIgMCAxMy41NjgtMi4yMTUgMjYuODU3LTYuMzY5IDM5LjU5NC04Ljk0MyAyNy41MTcgMzIuMTMzIDM4LjkzOSA0MC4xNDcgMTMuMjkgMi43NjktOC4zMDYgNC45ODQtMTYuODg5IDYuMzY5LTI1LjQ3MiAxOS4zODEgNy40NzYgMzMuNTAyIDI2LjMwMyAzMy41MDIgNDguNDUzIDAgMjguNzk1LTIzLjUzNSA1Mi4zMy01Mi42MDcgNTIuMzN6bTIzNS4wNjktNTIuMzNjMCA0NC4wMjQtMTIuNzM3IDg2LjM4Ni0zNy4xMDIgMTIyLjY1Ny00LjE1MyA2LjA5Mi0xMC43OTggOS40MTQtMTcuNzIgOS40MTQtMTYuMzE3IDAtMjcuMTI3LTE4LjgyNi0xNy40NDMtMzIuOTQ5IDE5LjM4MS0yOS4zNDkgMjkuOTAzLTYzLjY4MiAyOS45MDMtOTkuMTIycy0xMC41MjEtNjkuNzczLTI5LjkwMy05OC44NDVjLTE1LjY1NS0yMi44MzEgMTkuMzYxLTQ3LjI0IDM1LjE2My0yMy41MzQgMjQuMzY2IDM1Ljk5MyAzNy4xMDIgNzguMzU2IDM3LjEwMiAxMjIuMzc5em0tNzAuODggMGMwIDMxLjU2NS05LjEzNyA2Mi4wMjEtMjYuODU3IDg4LjMyNS00LjE1MyA2LjA5MS0xMC43OTggOS4xMzYtMTcuNzIgOS4xMzYtMTcuMjAxIDAtMjcuMDIyLTE4Ljk3OS0xNy40NDMtMzIuOTQ4IDEzLjAxMy0xOS4xMDQgMTkuNjU4LTQxLjI1NSAxOS42NTgtNjQuNTEzIDAtMjIuOTgxLTYuNjQ1LTQ1LjQwOC0xOS42NTgtNjQuNTEyLTE1Ljc2MS0yMi45ODYgMTkuMDA4LTQ3LjA5NSAzNS4xNjMtMjMuNTM1IDE3LjcxOSAyNi4wMjYgMjYuODU3IDU2LjQ4MyAyNi44NTcgODguMDQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQuNTcsNzYuMDdhNDUuNzEsNDUuNzEsMCwwLDAtNjcuNTEtNi40MWMtMTcuNTgsMTYuMTgtMTksNDMuNTItNC43NSw2Mi43N2w5MS43OCwxMjNMNDEuNzYsMzc5LjU4Yy0xNC4yMywxOS4yNS0xMy4xMSw0Ni41OSw0Ljc0LDYyLjc3QTQ1LjcxLDQ1LjcxLDAsMCwwLDExNCw0MzUuOTRMMjQyLjg5LDI2Mi43YTEyLjE0LDEyLjE0LDAsMCwwLDAtMTQuMjNaTTQ3MC4yNCwzNzkuNTgsMzc3LjkxLDI1NS40NWw5MS43OC0xMjNjMTQuMjItMTkuMjUsMTIuODMtNDYuNTktNC43NS02Mi43N2E0NS43MSw0NS43MSwwLDAsMC02Ny41MSw2LjQxbC0xMjgsMTcyLjEyYTEyLjE0LDEyLjE0LDAsMCwwLDAsMTQuMjNMMzk4LDQzNS45NGE0NS43MSw0NS43MSwwLDAsMCw2Ny41MSw2LjQxQzQ4My4zNSw0MjYuMTcsNDg0LjQ3LDM5OC44Myw0NzAuMjQsMzc5LjU4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXp1bmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkuMSAwIDI1NmMwIDEzNyAxMTEgMjQ4IDI0OCAyNDhzMjQ4LTExMSAyNDgtMjQ4QzQ5NiAxMTkuMSAzODUgOCAyNDggOHptLTgwIDM1MS45Yy0zMS40IDEwLjYtNTguOCAyNy4zLTgwIDQ4LjJWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjIzLjl6bTEyMC05LjljLTEyLjktMi0yNi4yLTMuMS0zOS44LTMuMS0xMy44IDAtMjcuMiAxLjEtNDAuMiAzLjFWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjE0em0xMjAgNTcuN2MtMjEuMi0yMC44LTQ4LjYtMzcuNC04MC00OFYxMzZjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MHYyNzEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9keCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTYgMjQxLjhsMzYuNyAyMy43VjQ4MGwtMTMzLTgzLjhMMzU2IDI0MS44ek00NDAgNzVIMjI2LjNsLTIzIDM3LjggMTUzLjUgOTYuNUw0NDAgNzV6bS04OSAxNDIuOEw1NS4yIDMydjIxNC41bDQ2IDI5TDM1MSAyMTcuOHpNOTcgMjk0LjJMOCA0MzdoMjEzLjdsMTI1LTIwMC41TDk3IDI5NC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25lcm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDM4NGgxMDguNEM0MTcgNDU1LjkgMzM4LjEgNTA0IDI0OCA1MDRTNzkgNDU1LjkgMzUuNiAzODRIMTQ0VjI1Ni4yTDI0OCAzNjFsMTA0LTEwNXYxMjh6TTg4IDMzNlYxMjhsMTU5LjQgMTU5LjRMNDA4IDEyOHYyMDhoNzQuOGM4LjUtMjUuMSAxMy4yLTUyIDEzLjItODBDNDk2IDExOSAzODUgOCAyNDggOFMwIDExOSAwIDI1NmMwIDI4IDQuNiA1NC45IDEzLjIgODBIODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5hcHN0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4LjMgMzczLjZjLTE0LjIgMTMuNi0zMS4zIDI0LjEtNTAuNCAzMC41LTE5LTYuNC0zNi4yLTE2LjktNTAuMy0zMC41aDEwMC43em00NC0xOTkuNmMyMC0xNi45IDQzLjYtMjkuMiA2OS42LTM2LjJWMjk5YzAgMjE5LjQtMzI4IDIxNy42LTMyOCAuM1YxMzcuN2MyNS45IDYuOSA0OS42IDE5LjYgNjkuNSAzNi40IDU2LjgtNDAgMTMyLjUtMzkuOSAxODguOS0uMXptLTIwOC44LTU4LjVjNjQuNC02MCAxNjQuMy02MC4xIDIyOC45LS4yLTcuMSAzLjUtMTMuOSA3LjMtMjAuNiAxMS41LTU4LjctMzAuNS0xMjkuMi0zMC40LTE4Ny45LjEtNi4zLTQtMTMuOS04LjItMjAuNC0xMS40ek00My44IDkzLjJ2NjkuM2MtNTguNCAzNi41LTU4LjQgMTIxLjEuMSAxNTguMyAyNi40IDI0NS4xIDM4MS43IDI0MC4zIDQwNy42IDEuNWwuMy0xLjdjNTguNy0zNi4zIDU4LjktMTIxLjcuMi0xNTguMlY5My4yYy0xNy4zLjUtMzQgMy01MC4xIDcuNC04Mi05MS41LTIyNS41LTkxLjUtMzA3LjUuMS0xNi4zLTQuNC0zMy4xLTctNTAuNi03LjV6TTI1OS4yIDM1MnMzNi0uMyA2MS4zLTEuNWMxMC4yLS41IDIxLjEtNCAyNS41LTYuNSAyNi4zLTE1LjEgMjUuNC0zOS4yIDI2LjItNDcuNC03OS41LS42LTk5LjktMy45LTExMyA1NS40em0tMTM1LjUtNTUuM2MuOCA4LjItLjEgMzIuMyAyNi4yIDQ3LjQgNC40IDIuNSAxNS4yIDYgMjUuNSA2LjUgMjUuMyAxLjEgNjEuMyAxLjUgNjEuMyAxLjUtMTMuMi01OS40LTMzLjctNTYuMS0xMTMtNTUuNHptMTY5LjEgMTIzLjRjLTMuMi01LjMtNi45LTcuMy02LjktNy4zLTI0LjggNy4zLTUyLjIgNi45LTc1LjkgMCAwIDAtMi45IDEuNS02LjQgNi42LTIuOCA0LjEtMy43IDkuNi0zLjcgOS42IDI5LjEgMTcuNiA2Ny4xIDE3LjYgOTYuMiAwLS4xLS4xLS4zLTQtMy4zLTguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmVvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTUuNDQgNTEyaC05NS4xMUwyMTIuMTIgMzU3LjQ2djkxLjFMMTI1LjY5IDUxMkgyOFYyOS44Mkw2OC40NyAwaDEwOC4wNWwxMjMuNzQgMTc2LjEzVjYzLjQ1TDM4Ni42OSAwaDk3LjY5djQ2MS41ek0zOC43NyAzNS4yN1Y0OTZsNzItNTIuODhWMTk0bDIxNS41IDMwNy42NGg4NC43OWw1Mi4zNS0zOC4xN2gtNzguMjdMNjkgMTN6bTgyLjU0IDQ2Ni42MWw4MC01OC43OHYtMTAxbC03OS43Ni0xMTQuNHYyMjAuOTRMNDkgNTAxLjg5aDcyLjM0ek04MC42MyAxMC43N2wzMTAuNiA0NDIuNTdoODIuMzdWMTAuNzdoLTc5Ljc1djMxNy41NkwxNzAuOTEgMTAuNzd6TTMxMSAxOTEuNjVsNzIgMTAyLjgxVjE1LjkzbC03MiA1M3YxMjIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5pbWJsciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuNiAyOTkuMjljMTUuNTcgMCAyNy4xNSAxMS40NiAyNy4xNSAyN3MtMTEuNjIgMjctMjcuMTUgMjdjLTE1LjcgMC0yNy4xNS0xMS41Ny0yNy4xNS0yN3MxMS41NS0yNyAyNy4xNS0yN3pNMTEzIDMyNi4yNWMwLTE1LjYxIDExLjY4LTI3IDI3LjE1LTI3czI3LjE1IDExLjQ2IDI3LjE1IDI3LTExLjQ3IDI3LTI3LjE1IDI3Yy0xNS40NCAwLTI3LjE1LTExLjMxLTI3LjE1LTI3TTE5MS43NiAxNTlDMTU3IDE1OSA4OS40NSAxNzguNzcgNTkuMjUgMjI3TDE0IDB2MzM1LjQ4QzE0IDQzMy4xMyA5My42MSA1MTIgMTkxLjc2IDUxMnMxNzcuNzYtNzguOTUgMTc3Ljc2LTE3Ni41MlMyOTAuMTMgMTU5IDE5MS43NiAxNTl6bTAgMzA4LjEyYy03My4yNyAwLTEzMi41MS01OC45LTEzMi41MS0xMzEuNTlzNTkuMjQtMTMxLjU5IDEzMi41MS0xMzEuNTkgMTMyLjUxIDU4Ljg2IDEzMi41MSAxMzEuNTRTMjY1IDQ2Ny4wNyAxOTEuNzYgNDY3LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb2RlSnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDUwOGMtNi43IDAtMTMuNS0xLjgtMTkuNC01LjJsLTYxLjctMzYuNWMtOS4yLTUuMi00LjctNy0xLjctOCAxMi4zLTQuMyAxNC44LTUuMiAyNy45LTEyLjcgMS40LS44IDMuMi0uNSA0LjYuNGw0Ny40IDI4LjFjMS43IDEgNC4xIDEgNS43IDBsMTg0LjctMTA2LjZjMS43LTEgMi44LTMgMi44LTVWMTQ5LjNjMC0yLjEtMS4xLTQtMi45LTUuMUwyMjYuOCAzNy43Yy0xLjctMS00LTEtNS43IDBMMzYuNiAxNDQuM2MtMS44IDEtMi45IDMtMi45IDUuMXYyMTMuMWMwIDIgMS4xIDQgMi45IDQuOWw1MC42IDI5LjJjMjcuNSAxMy43IDQ0LjMtMi40IDQ0LjMtMTguN1YxNjcuNWMwLTMgMi40LTUuMyA1LjQtNS4zaDIzLjRjMi45IDAgNS40IDIuMyA1LjQgNS4zVjM3OGMwIDM2LjYtMjAgNTcuNi01NC43IDU3LjYtMTAuNyAwLTE5LjEgMC00Mi41LTExLjZsLTQ4LjQtMjcuOUM4LjEgMzg5LjIuNyAzNzYuMy43IDM2Mi40VjE0OS4zYzAtMTMuOCA3LjQtMjYuOCAxOS40LTMzLjdMMjA0LjYgOWMxMS43LTYuNiAyNy4yLTYuNiAzOC44IDBsMTg0LjcgMTA2LjdjMTIgNi45IDE5LjQgMTkuOCAxOS40IDMzLjd2MjEzLjFjMCAxMy44LTcuNCAyNi43LTE5LjQgMzMuN0wyNDMuNCA1MDIuOGMtNS45IDMuNC0xMi42IDUuMi0xOS40IDUuMnptMTQ5LjEtMjEwLjFjMC0zOS45LTI3LTUwLjUtODMuNy01OC01Ny40LTcuNi02My4yLTExLjUtNjMuMi0yNC45IDAtMTEuMSA0LjktMjUuOSA0Ny40LTI1LjkgMzcuOSAwIDUxLjkgOC4yIDU3LjcgMzMuOC41IDIuNCAyLjcgNC4yIDUuMiA0LjJoMjRjMS41IDAgMi45LS42IDMuOS0xLjdzMS41LTIuNiAxLjQtNC4xYy0zLjctNDQuMS0zMy02NC42LTkyLjItNjQuNi01Mi43IDAtODQuMSAyMi4yLTg0LjEgNTkuNSAwIDQwLjQgMzEuMyA1MS42IDgxLjggNTYuNiA2MC41IDUuOSA2NS4yIDE0LjggNjUuMiAyNi43IDAgMjAuNi0xNi42IDI5LjQtNTUuNSAyOS40LTQ4LjkgMC01OS42LTEyLjMtNjMuMi0zNi42LS40LTIuNi0yLjYtNC41LTUuMy00LjVoLTIzLjljLTMgMC01LjMgMi40LTUuMyA1LjMgMCAzMS4xIDE2LjkgNjguMiA5Ny44IDY4LjIgNTguNC0uMSA5Mi0yMy4yIDkyLTYzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE2LjMgNDUyYy0yLjEgMC00LjItLjYtNi4xLTEuNkwyOTEgNDM5Yy0yLjktMS42LTEuNS0yLjItLjUtMi41IDMuOC0xLjMgNC42LTEuNiA4LjctNCAuNC0uMiAxLS4xIDEuNC4xbDE0LjggOC44Yy41LjMgMS4zLjMgMS44IDBMMzc1IDQwOGMuNS0uMy45LS45LjktMS42di02Ni43YzAtLjctLjMtMS4zLS45LTEuNmwtNTcuOC0zMy4zYy0uNS0uMy0xLjItLjMtMS44IDBsLTU3LjggMzMuM2MtLjYuMy0uOSAxLS45IDEuNnY2Ni43YzAgLjYuNCAxLjIuOSAxLjVsMTUuOCA5LjFjOC42IDQuMyAxMy45LS44IDEzLjktNS44di02NS45YzAtLjkuNy0xLjcgMS43LTEuN2g3LjNjLjkgMCAxLjcuNyAxLjcgMS43djY1LjljMCAxMS41LTYuMiAxOC0xNy4xIDE4LTMuMyAwLTYgMC0xMy4zLTMuNmwtMTUuMi04LjdjLTMuNy0yLjItNi4xLTYuMi02LjEtMTAuNXYtNjYuN2MwLTQuMyAyLjMtOC40IDYuMS0xMC41bDU3LjgtMzMuNGMzLjctMi4xIDguNS0yLjEgMTIuMSAwbDU3LjggMzMuNGMzLjcgMi4yIDYuMSA2LjIgNi4xIDEwLjV2NjYuN2MwIDQuMy0yLjMgOC40LTYuMSAxMC41bC01Ny44IDMzLjRjLTEuNyAxLjEtMy44IDEuNy02IDEuN3ptNDYuNy02NS44YzAtMTIuNS04LjQtMTUuOC0yNi4yLTE4LjItMTgtMi40LTE5LjgtMy42LTE5LjgtNy44IDAtMy41IDEuNS04LjEgMTQuOC04LjEgMTEuOSAwIDE2LjMgMi42IDE4LjEgMTAuNi4yLjguOCAxLjMgMS42IDEuM2g3LjVjLjUgMCAuOS0uMiAxLjItLjUuMy0uNC41LS44LjQtMS4zLTEuMi0xMy44LTEwLjMtMjAuMi0yOC44LTIwLjItMTYuNSAwLTI2LjMgNy0yNi4zIDE4LjYgMCAxMi43IDkuOCAxNi4xIDI1LjYgMTcuNyAxOC45IDEuOSAyMC40IDQuNiAyMC40IDguMyAwIDYuNS01LjIgOS4yLTE3LjQgOS4yLTE1LjMgMC0xOC43LTMuOC0xOS44LTExLjQtLjEtLjgtLjgtMS40LTEuNy0xLjRoLTcuNWMtLjkgMC0xLjcuNy0xLjcgMS43IDAgOS43IDUuMyAyMS4zIDMwLjYgMjEuMyAxOC41IDAgMjktNy4yIDI5LTE5Ljh6bTU0LjUtNTAuMWMwIDYuMS01IDExLjEtMTEuMSAxMS4xcy0xMS4xLTUtMTEuMS0xMS4xYzAtNi4zIDUuMi0xMS4xIDExLjEtMTEuMSA2LS4xIDExLjEgNC44IDExLjEgMTEuMXptLTEuOCAwYzAtNS4yLTQuMi05LjMtOS40LTkuMy01LjEgMC05LjMgNC4xLTkuMyA5LjMgMCA1LjIgNC4yIDkuNCA5LjMgOS40IDUuMi0uMSA5LjQtNC4zIDkuNC05LjR6bS00LjUgNi4yaC0yLjZjLS4xLS42LS41LTMuOC0uNS0zLjktLjItLjctLjQtMS4xLTEuMy0xLjFoLTIuMnY1aC0yLjR2LTEyLjVoNC4zYzEuNSAwIDQuNCAwIDQuNCAzLjMgMCAyLjMtMS41IDIuOC0yLjQgMy4xIDEuNy4xIDEuOCAxLjIgMi4xIDIuOC4xIDEgLjMgMi43LjYgMy4zem0tMi44LTguOGMwLTEuNy0xLjItMS43LTEuOC0xLjdoLTJ2My41aDEuOWMxLjYgMCAxLjktMS4xIDEuOS0xLjh6TTEzNy4zIDE5MWMwLTIuNy0xLjQtNS4xLTMuNy02LjRsLTYxLjMtMzUuM2MtMS0uNi0yLjItLjktMy40LTFoLS42Yy0xLjIgMC0yLjMuNC0zLjQgMUwzLjcgMTg0LjZDMS40IDE4NS45IDAgMTg4LjQgMCAxOTFsLjEgOTVjMCAxLjMuNyAyLjUgMS44IDMuMiAxLjEuNyAyLjUuNyAzLjcgMEw0MiAyNjguM2MyLjMtMS40IDMuNy0zLjggMy43LTYuNHYtNDQuNGMwLTIuNiAxLjQtNS4xIDMuNy02LjRsMTUuNS04LjljMS4yLS43IDIuNC0xIDMuNy0xIDEuMyAwIDIuNi4zIDMuNyAxbDE1LjUgOC45YzIuMyAxLjMgMy43IDMuOCAzLjcgNi40djQ0LjRjMCAyLjYgMS40IDUuMSAzLjcgNi40bDM2LjQgMjAuOWMxLjEuNyAyLjYuNyAzLjcgMCAxLjEtLjYgMS44LTEuOSAxLjgtMy4ybC4yLTk1ek00NzIuNSA4Ny4zdjE3Ni40YzAgMi42LTEuNCA1LjEtMy43IDYuNGwtNjEuMyAzNS40Yy0yLjMgMS4zLTUuMSAxLjMtNy40IDBsLTYxLjMtMzUuNGMtMi4zLTEuMy0zLjctMy44LTMuNy02LjR2LTcwLjhjMC0yLjYgMS40LTUuMSAzLjctNi40bDYxLjMtMzUuNGMyLjMtMS4zIDUuMS0xLjMgNy40IDBsMTUuMyA4LjhjMS43IDEgMy45LS4zIDMuOS0yLjJ2LTk0YzAtMi44IDMtNC42IDUuNS0zLjJsMzYuNSAyMC40YzIuMyAxLjIgMy44IDMuNyAzLjggNi40em0tNDYgMTI4LjljMC0uNy0uNC0xLjMtLjktMS42bC0yMS0xMi4yYy0uNi0uMy0xLjMtLjMtMS45IDBsLTIxIDEyLjJjLS42LjMtLjkuOS0uOSAxLjZ2MjQuM2MwIC43LjQgMS4zLjkgMS42bDIxIDEyLjFjLjYuMyAxLjMuMyAxLjggMGwyMS0xMi4xYy42LS4zLjktLjkuOS0xLjZ2LTI0LjN6bTIwOS44LS43YzIuMy0xLjMgMy43LTMuOCAzLjctNi40VjE5MmMwLTIuNi0xLjQtNS4xLTMuNy02LjRsLTYwLjktMzUuNGMtMi4zLTEuMy01LjEtMS4zLTcuNCAwbC02MS4zIDM1LjRjLTIuMyAxLjMtMy43IDMuOC0zLjcgNi40djcwLjhjMCAyLjcgMS40IDUuMSAzLjcgNi40bDYwLjkgMzQuN2MyLjIgMS4zIDUgMS4zIDcuMyAwbDM2LjgtMjAuNWMyLjUtMS40IDIuNS01IDAtNi40TDU1MCAyNDEuNmMtMS4yLS43LTEuOS0xLjktMS45LTMuMnYtMjIuMmMwLTEuMy43LTIuNSAxLjktMy4ybDE5LjItMTEuMWMxLjEtLjcgMi42LS43IDMuNyAwbDE5LjIgMTEuMWMxLjEuNyAxLjkgMS45IDEuOSAzLjJ2MTcuNGMwIDIuOCAzLjEgNC42IDUuNiAzLjJsMzYuNy0yMS4zek01NTkgMjE5Yy0uNC4zLS43LjctLjcgMS4ydjEzLjZjMCAuNS4zIDEgLjcgMS4ybDExLjggNi44Yy40LjMgMSAuMyAxLjQgMEw1ODQgMjM1Yy40LS4zLjctLjcuNy0xLjJ2LTEzLjZjMC0uNS0uMy0xLS43LTEuMmwtMTEuOC02LjhjLS40LS4zLTEtLjMtMS40IDBMNTU5IDIxOXptLTI1NC4yIDQzLjV2LTcwLjRjMC0yLjYtMS42LTUuMS0zLjktNi40bC02MS4xLTM1LjJjLTIuMS0xLjItNS0xLjQtNy40IDBsLTYxLjEgMzUuMmMtMi4zIDEuMy0zLjkgMy43LTMuOSA2LjR2NzAuNGMwIDIuOCAxLjkgNS4yIDQgNi40bDYxLjIgMzUuMmMyLjQgMS40IDUuMiAxLjMgNy40IDBsNjEtMzUuMmMxLjgtMSAzLjEtMi43IDMuNi00LjcuMS0uNS4yLTEuMS4yLTEuN3ptLTc0LjMtMTI0LjlsLS44LjVoMS4xbC0uMy0uNXptNzYuMiAxMzAuMmwtLjQtLjd2LjlsLjQtLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5wbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjg4aC0zMnYtNjRoMzJ2NjR6bTI4OC0xMjh2MTkySDI4OHYzMkgxNjB2LTMySDBWMTYwaDU3NnptLTQxNiAzMkgzMnYxMjhoNjR2LTk2aDMydjk2aDMyVjE5MnptMTYwIDBIMTkydjE2MGg2NHYtMzJoNjRWMTkyem0yMjQgMEgzNTJ2MTI4aDY0di05NmgzMnY5NmgzMnYtOTZoMzJ2OTZoMzJWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOczggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA0LjMyNCwyNjkuMTcyaDI2LjA2N1YyNDIuOTk0SDEwNC4zMjRabTUyLjQ2Ni0yNi4xNzgtLjA1NS0yNi4xNzh2LS45NDFhMzkuMzI1LDM5LjMyNSwwLDAsMC03OC42NDQuOTQxdi4xNjZoMjYuNHYtLjE2NmExMi45OCwxMi45OCwwLDAsMSwyNS45NTYsMHYyNi4xNzhabTUyLjM1NiwyNS44NDZhOTEuMSw5MS4xLDAsMCwxLTkxLjEsOTEuMWgtLjYwOWE5MS4xLDkxLjEsMCwwLDEtOTEuMS05MS4xSDB2LjE2NkExMTcuMzMsMTE3LjMzLDAsMCwwLDExNy40NCwzODYuMjhoLjc3NUExMTcuMzMxLDExNy4zMzEsMCwwLDAsMjM1LjQ5LDI2OC44NFYyNDIuODI4SDIwOS4xNDZabS0xNTcuMjMzLDBhNjUuMzYyLDY1LjM2MiwwLDAsMCwxMzAuNzIzLDBIMTU2LjI5MmEzOS4wMjMsMzkuMDIzLDAsMCwxLTc4LjAzNSwwVjI0Mi44ODNINTEuOTY4di0yNi42MkE2NS40Miw2NS40MiwwLDAsMSwxODIuOCwyMTcuNDh2MjUuMjkzaDI2LjM0NFYyMTcuNDhhOTEuNzYxLDkxLjc2MSwwLDAsMC0xODMuNTIyLDB2MjUuNEg1MS45MTNabTQxOC40LTcxLjE3M2MxMy42NywwLDI0LjU3Myw2LjY0MiwzMC4wNTIsMTguMjY0bC43MTksMS41NDksMjMuMjQ1LTExLjUxMS0uNjA5LTEuNDM5Yy04LjAyNS0xOS4yNi0yOC41LTMxLjI3LTUzLjQwNy0zMS4yNy0yMy4xMzQsMC00My42MTEsMTEuNC01MC45NzIsMjguNDQ3LS4xMjMsMjYuODc2LS4xNTgsMjMuOSwwLDI0Ljg1LDQuNywxMS4wMTMsMTQuNTU1LDE5LjM3LDI4LjY2OCwyNC4yNDFhMTAyLjAzMywxMDIuMDMzLDAsMCwwLDE5LjgxMywzLjk4NGM1LjQ3OS43MiwxMC42MjYsMS4zODQsMTUuODI5LDMuMSw2LjM2NCwyLjEsMTAuNDYsNS4yNTcsMTIuODQsOS44NTF2OS44NTFjLTMuNzA4LDcuNTI3LTEzLjc4MSwxMi4zNDItMjUuNzkxLDEyLjM0Mi0xNC4zMzQsMC0yNS45NTYtNi45MTgtMzEuOTMzLTE5LjAzOWwtLjcyLTEuNDk0TDQxNS4wMjYsMjgwLjlsLjU1MywxLjQzOWM3LjkxNSwxOS40MjYsMjkuNjA5LDMyLjA0NCw1NS4yODksMzIuMDQ0LDIzLjYzMiwwLDQ0LjYwOC0xMS40LDUyLjMtMjguNDQ3bC4xNjYtMjUuOS0uMTY2LS42NjRjLTQuODctMTEuMDE0LTE1LjIxOS0xOS42NDctMjguOTQ0LTI0LjI0MS03LjY5My0yLjcxMi0xNC4zMzUtMy42LTIwLjctNC40MjdhODMuNzc3LDgzLjc3NywwLDAsMS0xNC44MzItMi44NzhjLTYuMzEtMS45MzctMTAuNC01LjA5Mi0xMi42MTktOS42M3YtOC40MTJDNDQ5LjQ1LDIwMi40MjcsNDU4Ljk2OSwxOTcuNjY3LDQ3MC4zMTUsMTk3LjY2N1pNMjg3LjU2OCwzMTEuMzQ0aDI2LjA2N3YtNjguNEgyODcuNTY4Wm0zNTIuMjY2LTUzLjNjLTIuOTMzLTYuMjU0LTguMy0xMi4wMS0xNS40NDEtMTYuNzE0QTM3Ljk5LDM3Ljk5LDAsMCwwLDYzNy40LDIyNmwuMTY2LTI1LjM0Ny0uMTY2LS42NjRDNjMwLjAzOCwxODQsNjEwLjY2NywxNzMuMjYsNTg5LjI1LDE3My4yNlM1NDguNDYxLDE4NCw1NDEuMSwxOTkuOTkybC0uMTY2LDI1LjM0Ny4xNjYuNjY0YTM5LjY0MywzOS42NDMsMCwwLDAsMTMuMDA2LDE1LjMzMWMtNy4yLDQuNy0xMi41MDgsMTAuNDYtMTUuNDQxLDE2LjcxNGwtLjE2NiwyOC44ODkuMTY2LjcyYzcuNTgyLDE1Ljk5NCwyNy44OTMsMjYuNzMxLDUwLjU4NSwyNi43MzFzNDMuMDU3LTEwLjczNyw1MC41ODQtMjYuNzMxbC4xNjYtMjguODlabS03My4yMi01MC44MDZjMy42LTYuMzEsMTIuNTYzLTEwLjUxNiwyMi41OC0xMC41MTZzMTkuMDM4LDQuMjA2LDIyLjYzNiwxMC41MTZ2MTMuNzI1Yy0zLjU0Miw2LjItMTIuNTYzLDEwLjM0OS0yMi42MzYsMTAuMzQ5cy0xOS4wOTQtNC4xNS0yMi41OC0xMC4zNDlabTQ3LjMxOSw3Mi4xNjljLTMuNzY0LDYuNjQxLTEzLjMzOCwxMC45LTI0LjY4MywxMC45LTExLjEyNSwwLTIwLjk3Ni00LjM3Mi0yNC42ODQtMTAuOVYyNjMuMjVjMy43MDgtNi4zMDksMTMuNS0xMC41MTUsMjQuNjg0LTEwLjUxNSwxMS4zNDUsMCwyMC45MTksNC4xNSwyNC42ODMsMTAuNTE1Wk0zNzYuNCwyNjUuOTYybC01OS44MjctODkuNzEzaC0yOXY0MC42MjNoMjYuNTF2LjM4N2w2Mi41MzksOTQuMDg1SDQwMi4zVjE3Ni4yNDlIMzc2LjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU51dHJpdGlvbml4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg4IDguMVMyMjEuNC0uMSAyMDkgMTEyLjVjMCAwIDE5LjEtNzQuOSAxMDMtNDAuNiAwIDAtMTcuNyA3NC04OCA1NiAwIDAgMTQuNi01NC42IDY2LjEtNTYuNiAwIDAtMzkuOS0xMC4zLTgyLjEgNDguOCAwIDAtMTkuOC05NC41LTkzLjYtOTkuNyAwIDAgNzUuMiAxOS40IDc3LjYgMTA3LjUgMCAuMS0xMDYuNCA3LTEwNC0xMTkuOHptMzEyIDMxNS42YzAgNDguNS05LjcgOTUuMy0zMiAxMzIuMy00Mi4yIDMwLjktMTA1IDQ4LTE2OCA0OC02Mi45IDAtMTI1LjgtMTcuMS0xNjgtNDhDOS43IDQxOSAwIDM3Mi4yIDAgMzIzLjcgMCAyNzUuMyAxNy43IDIyOSA0MCAxOTJjNDIuMi0zMC45IDk3LjEtNDguNiAxNjAtNDguNiA2MyAwIDExNy44IDE3LjYgMTYwIDQ4LjYgMjIuMyAzNyA0MCA4My4zIDQwIDEzMS43ek0xMjAgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHpNMTkyIDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6TTI2NCA0MjhjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4ek0zMzYgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMjQtMzkuNmMtNC44LTIyLjMtNy40LTM2LjktMTYtNTYtMzguOC0xOS45LTkwLjUtMzItMTQ0LTMyUzk0LjggMTgwLjEgNTYgMjAwYy04LjggMTkuNS0xMS4yIDMzLjktMTYgNTYgNDIuMi03LjkgOTguNy0xNC44IDE2MC0xNC44czExNy44IDYuOSAxNjAgMTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2N0b3B1c0RlcGxveSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTUuNiwzNDkuMmMtNDUuODkxLTM5LjA5LTM2LjY3LTc3Ljg3Ny0xNi4wOTUtMTI4LjExQzQ3NS4xNiwxMzQuMDQsNDE1Ljk2NywzNC4xNCwzMjkuOTMsOC4zLDIzNy4wNC0xOS42LDEzNC4yNTIsMjQuMzQxLDk5LjY3NywxMTcuMTQ3YTE4MC44NjIsMTgwLjg2MiwwLDAsMC0xMC45ODgsNzMuNTQ0YzEuNzMzLDI5LjU0MywxNC43MTcsNTIuOTcsMjQuMDksODAuMywxNy4yLDUwLjE2MS0yOC4xLDkyLjc0My02Ni42NjIsMTE3LjU4Mi00Ni44MDYsMzAuMi0zNi4zMTksMzkuODU3LTguNDI4LDQxLjg1OCwyMy4zNzgsMS42OCw0NC40NzgtNC41NDgsNjUuMjY1LTE1LjA0NSw5LjItNC42NDcsNDAuNjg3LTE4LjkzMSw0NS4xMy0yOC41ODhDMTM1LjksNDEzLjM4OCwxMTEuMTIyLDQ1OS41LDEyNi42MjEsNDg4LjljMTkuMSwzNi4yMjksNjcuMTEyLTMxLjc3LDc2LjcwOS00NS44MTIsOC41OTEtMTIuNTcyLDQyLjk2My04MS4yNzksNjMuNjI3LTQ2LjkyNiwxOC44NjUsMzEuMzYxLDguNiw3Ni4zOTEsMzUuNzM4LDEwNC42MjIsMzIuODU0LDM0LjIsNTEuMTU1LTE4LjMxMiw1MS40MTItNDQuMjIxLjE2My0xNi40MTEtNi4xLTk1Ljg1MiwyOS45LTU5Ljk0NEM0MDUuNDI4LDQxOCw0MzYuOTEyLDQ2Ny44LDQ3Mi41NjgsNDYzLjY0MmMzOC43MzYtNC41MTYtMjIuMTIzLTY3Ljk2Ny0yOC4yNjItNzguNjk1LDUuMzkzLDQuMjc5LDUzLjY2NSwzNC4xMjgsNTMuODE4LDkuNTJDNDk4LjIzNCwzNzUuNjc4LDQ2OC4wMzksMzU5LjgsNDU1LjYsMzQ5LjJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9kbm9rbGFzc25pa2lTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0LjIgMTc3LjFjMC0yMi4xIDE3LjktNDAgMzkuOC00MHMzOS44IDE3LjkgMzkuOCA0MGMwIDIyLTE3LjkgMzkuOC0zOS44IDM5LjhzLTM5LjgtMTcuOS0zOS44LTM5Ljh6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTMwNS4xIDk3LjFjMCA0NC42IDM2LjQgODAuOSA4MS4xIDgwLjlzODEuMS0zNi4yIDgxLjEtODAuOWMwLTQ0LjgtMzYuNC04MS4xLTgxLjEtODEuMXMtODEuMSAzNi4yLTgxLjEgODEuMXptMTc0LjUgOTAuN2MtNC42LTkuMS0xNy4zLTE2LjgtMzQuMS0zLjYgMCAwLTIyLjcgMTgtNTkuMyAxOHMtNTkuMy0xOC01OS4zLTE4Yy0xNi44LTEzLjItMjkuNS01LjUtMzQuMSAzLjYtNy45IDE2LjEgMS4xIDIzLjcgMjEuNCAzNyAxNy4zIDExLjEgNDEuMiAxNS4yIDU2LjYgMTYuOGwtMTIuOSAxMi45Yy0xOC4yIDE4LTM1LjUgMzUuNS00Ny43IDQ3LjctMTcuNiAxNy42IDEwLjcgNDUuOCAyOC40IDI4LjZsNDcuNy00Ny45YzE4LjIgMTguMiAzNS43IDM1LjcgNDcuNyA0Ny45IDE3LjYgMTcuMiA0Ni0xMC43IDI4LjYtMjguNmwtNDcuNy00Ny43LTEzLTEyLjljMTUuNS0xLjYgMzkuMS01LjkgNTYuMi0xNi44IDIwLjQtMTMuMyAyOS4zLTIxIDIxLjUtMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9kbm9rbGFzc25pa2kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjEgMzM0Yy0yNy40IDE3LjQtNjUuMSAyNC4zLTkwIDI2LjlsMjAuOSAyMC42IDc2LjMgNzYuM2MyNy45IDI4LjYtMTcuNSA3My4zLTQ1LjcgNDUuNy0xOS4xLTE5LjQtNDcuMS00Ny40LTc2LjMtNzYuNkw4NCA1MDMuNGMtMjguMiAyNy41LTczLjYtMTcuNi00NS40LTQ1LjcgMTkuNC0xOS40IDQ3LjEtNDcuNCA3Ni4zLTc2LjNsMjAuNi0yMC42Yy0yNC42LTIuNi02Mi45LTkuMS05MC42LTI2LjktMzIuNi0yMS00Ni45LTMzLjMtMzQuMy01OSA3LjQtMTQuNiAyNy43LTI2LjkgNTQuNi01LjcgMCAwIDM2LjMgMjguOSA5NC45IDI4LjlzOTQuOS0yOC45IDk0LjktMjguOWMyNi45LTIxLjEgNDcuMS04LjkgNTQuNiA1LjcgMTIuNCAyNS43LTEuOSAzOC0zNC41IDU5LjF6TTMwLjMgMTI5LjdDMzAuMyA1OCA4OC42IDAgMTYwIDBzMTI5LjcgNTggMTI5LjcgMTI5LjdjMCA3MS40LTU4LjMgMTI5LjQtMTI5LjcgMTI5LjRzLTEyOS43LTU4LTEyOS43LTEyOS40em02NiAwYzAgMzUuMSAyOC42IDYzLjcgNjMuNyA2My43czYzLjctMjguNiA2My43LTYzLjdjMC0zNS40LTI4LjYtNjQtNjMuNy02NHMtNjMuNyAyOC42LTYzLjcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9sZFJlcHVibGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzNS43NiAxMC4yM2M3LjUtLjMxIDE1LS4yOCAyMi41LS4wOSAzLjYxLjE0IDcuMi40IDEwLjc5LjczIDQuOTIuMjcgOS43OSAxLjAzIDE0LjY3IDEuNjIgMi45My40MyA1LjgzLjk4IDguNzUgMS40NiA3LjkgMS4zMyAxNS42NyAzLjI4IDIzLjM5IDUuNCAxMi4yNCAzLjQ3IDI0LjE5IDcuOTIgMzUuNzYgMTMuMjEgMjYuNTYgMTIuMjQgNTAuOTQgMjkuMjEgNzEuNjMgNDkuODggMjAuMDMgMjAuMDkgMzYuNzIgNDMuNTUgNDguODkgNjkuMTkgMS4xMyAyLjU5IDIuNDQgNS4xIDMuNDcgNy43NCAyLjgxIDYuNDMgNS4zOSAxMi45NyA3LjU4IDE5LjYzIDQuMTQgMTIuMzMgNy4zNCAyNC45OSA5LjQyIDM3LjgzLjU3IDMuMTQgMS4wNCA2LjMgMS40IDkuNDcuNTUgMy44My45NCA3LjY5IDEuMTggMTEuNTYuODMgOC4zNC44NCAxNi43My43NyAyNS4xLS4wNyA0Ljk3LS4yNiA5Ljk0LS43NSAxNC44OS0uMjQgMy4zOC0uNTEgNi43Ni0uOTggMTAuMTItLjM5IDIuNzItLjYzIDUuNDYtMS4xMSA4LjE3LS45IDUuMTUtMS43IDEwLjMxLTIuODcgMTUuNDEtNC4xIDE4LjUtMTAuMyAzNi41NS0xOC41MSA1My42My0xNS43NyAzMi44My0zOC44MyA2Mi4xNy02Ny4xMiA4NS4xMmEyNDYuNTAzIDI0Ni41MDMgMCAwIDEtNTYuOTEgMzQuODZjLTYuMjEgMi42OC0xMi40NiA1LjI1LTE4Ljg3IDcuNDEtMy41MSAxLjE2LTcuMDEgMi4zOC0xMC41NyAzLjM5LTYuNjIgMS44OC0xMy4yOSAzLjY0LTIwLjA0IDUtNC42Ni45MS05LjM0IDEuNzMtMTQuMDMgMi40OC01LjI1LjY2LTEwLjUgMS40NC0xNS43OSAxLjc0LTYuNjkuNjYtMTMuNDEuODQtMjAuMTIuODEtNi44Mi4wMy0xMy42NS0uMTItMjAuNDUtLjc5LTMuMjktLjIzLTYuNTctLjUtOS44My0uOTUtMi43Mi0uMzktNS40Ni0uNjMtOC4xNy0xLjExLTQuMTItLjcyLTguMjUtMS4zNy0xMi4zNS0yLjIyLTQuMjUtLjk0LTguNDktMS44OS0xMi42OS0zLjAyLTguNjMtMi4xNy0xNy4wOC01LjAxLTI1LjQxLTguMTMtMTAuNDktNC4xMi0yMC43OS04Ljc1LTMwLjY0LTE0LjI1LTIuMTQtMS4xNS00LjI4LTIuMjktNi4zNS0zLjU3LTExLjIyLTYuNTgtMjEuODYtMTQuMS0zMS45Mi0yMi4zNC0zNC42OC0yOC40MS02MS40MS02Ni40My03Ni4zNS0xMDguNy0zLjA5LTguNzQtNS43MS0xNy42NS03LjgtMjYuNjgtMS40OC02LjE2LTIuNTItMTIuNDItMy41OC0xOC42Ni0uNC0yLjM1LS42MS00LjczLS45NS03LjA5LS42LTMuOTYtLjc1LTcuOTYtMS4xNy0xMS45NC0uOC05LjQ3LS43MS0xOC45OS0uNTEtMjguNDkuMTQtMy41MS4zNC03LjAxLjctMTAuNTEuMzEtMy4xNy40Ni02LjM3LjkyLTkuNTIuNDEtMi44MS42NS01LjY1IDEuMTYtOC40NC43LTMuOTQgMS4zLTcuOSAyLjEyLTExLjgyIDMuNDMtMTYuNTIgOC40Ny0zMi43MyAxNS4yNi00OC4xOCAxLjE1LTIuOTIgMi41OS01LjcyIDMuODYtOC41OSA4LjA1LTE2LjcxIDE3LjktMzIuNTYgMjkuNDktNDcuMDYgMjAtMjUuMzggNDUuMS00Ni42OCA3My4yNy02Mi40NyA3LjUtNC4xNSAxNS4xNi04LjA1IDIzLjA3LTExLjM3IDE1LjgyLTYuODggMzIuNDEtMTEuOTUgNDkuMzEtMTUuMzggMy41MS0uNjcgNy4wNC0xLjI0IDEwLjU2LTEuODUgMi42Mi0uNDcgNS4yOC0uNyA3LjkxLTEuMDggMy41My0uNTMgNy4xLS42OCAxMC42NS0xLjA0IDIuNDYtLjI0IDQuOTEtLjM2IDcuMzYtLjUxbTguNjQgMjQuNDFjLTkuMjMuMS0xOC40My45OS0yNy41NyAyLjIzLTcuMyAxLjA4LTE0LjUzIDIuNi0yMS43MSA0LjMtMTMuOTEgMy41LTI3LjQ4IDguMzQtNDAuNDYgMTQuNDItMTAuNDYgNC45OS0yMC41OSAxMC43LTMwLjE4IDE3LjIyLTQuMTggMi45Mi04LjQgNS44LTEyLjM0IDkuMDMtNS4wOCAzLjk3LTkuOTggOC4xNy0xNC42OCAxMi41OS0yLjUxIDIuMjQtNC44MSA0LjctNy4yMiA3LjA2LTI4LjIyIDI4Ljc5LTQ4LjQ0IDY1LjM5LTU3LjUgMTA0LjY5LTIuMDQgOC40NC0zLjU0IDE3LjAyLTQuNDQgMjUuNjUtMS4xIDguODktMS40NCAxNy44NS0xLjQxIDI2LjguMTEgNy4xNC4zOCAxNC4yOCAxLjIyIDIxLjM3LjYyIDcuMTIgMS44NyAxNC4xNiAzLjIgMjEuMTggMS4wNyA0LjY1IDIuMDMgOS4zMiAzLjMzIDEzLjkxIDYuMjkgMjMuMzggMTYuNSA0NS43IDMwLjA3IDY1Ljc1IDguNjQgMTIuOTggMTguNzggMjQuOTMgMjkuOTggMzUuNzcgMTYuMjggMTUuODIgMzUuMDUgMjkuMDQgNTUuMzQgMzkuMjIgNy4yOCAzLjUyIDE0LjY2IDYuODcgMjIuMjcgOS42MyA1LjA0IDEuNzYgMTAuMDYgMy41NyAxNS4yMiA0Ljk4IDExLjI2IDMuMjMgMjIuNzcgNS42IDM0LjM5IDcuMDYgMi45MS4yOSA1LjgxLjYxIDguNzIuOSAxMy44MiAxLjA4IDI3Ljc0IDEgNDEuNTQtLjQzIDQuNDUtLjYgOC45Mi0uOTkgMTMuMzUtMS43OCAzLjYzLS42NyA3LjI4LTEuMjUgMTAuODctMi4xIDQuMTMtLjk4IDguMjgtMS45MSAxMi4zNi0zLjA3IDI2LjUtNy4zNCA1MS41OC0xOS43MSA3My41OC0zNi4yIDE1Ljc4LTExLjgyIDI5Ljk2LTI1Ljc2IDQyLjEyLTQxLjI4IDMuMjYtNC4wMiA2LjE3LTguMzEgOS4xMy0xMi41NSAzLjM5LTUuMDYgNi41OC0xMC4yNSA5LjYtMTUuNTQgMi40LTQuNDQgNC43NC04LjkxIDYuOTUtMTMuNDUgNS42OS0xMi4wNSAxMC4yOC0yNC42MiAxMy43NS0zNy40OSAyLjU5LTEwLjAxIDQuNzUtMjAuMTYgNS45LTMwLjQ1IDEuNzctMTMuNDcgMS45NC0yNy4xIDEuMjktNDAuNjUtLjI5LTMuODktLjY3LTcuNzctMS0xMS42Ni0yLjIzLTE5LjA4LTYuNzktMzcuOTEtMTMuODItNTUuOC01Ljk1LTE1LjEzLTEzLjUzLTI5LjYzLTIyLjYxLTQzLjEzLTEyLjY5LTE4LjgtMjguMjQtMzUuNjgtNDUuOTctNDkuODMtMjUuMDUtMjAtNTQuNDctMzQuNTUtODUuNjUtNDIuMDgtNy43OC0xLjkzLTE1LjY5LTMuMzQtMjMuNjMtNC40NS0zLjkxLS41OS03Ljg1LS44Mi0xMS43Ny0xLjI0LTcuMzktLjU3LTE0LjgxLS43Mi0yMi4yMi0uNTh6TTEzOS4yNiA4My41M2MxMy4zLTguODkgMjguMDgtMTUuMzggNDMuMy0yMC4xOC0zLjE3IDEuNzctNi40NCAzLjM4LTkuNTMgNS4yOS0xMS4yMSA2LjY4LTIxLjUyIDE0LjktMzAuMzggMjQuNDktNi44IDcuNDMtMTIuNzYgMTUuNzMtMTcuMDEgMjQuODktMy4yOSA2Ljg2LTUuNjQgMTQuMTktNi44NiAyMS43MS0uOTMgNC44NS0xLjMgOS44MS0xLjE3IDE0Ljc1LjEzIDEzLjY2IDQuNDQgMjcuMDggMTEuMjkgMzguODIgNS45MiAxMC4yMiAxMy42MyAxOS4zMyAyMi4zNiAyNy4yNiA0Ljg1IDQuMzYgMTAuMjQgOC4wOSAxNC45NSAxMi42IDIuMjYgMi4xOSA0LjQ5IDQuNDIgNi40MyA2LjkxIDIuNjIgMy4zMSA0Ljg5IDYuOTkgNS45OSAxMS4xLjkgMy4wMi42NiA2LjIuNjkgOS4zMS4wMiA0LjEtLjA0IDguMi4wMyAxMi4zLjE0IDMuNTQtLjAyIDcuMDkuMTEgMTAuNjMuMDggMi4zOC4wMiA0Ljc2LjA1IDcuMTQuMTYgNS43Ny4wNiAxMS41My4xNSAxNy4zLjExIDIuOTEuMDIgNS44Mi4xMyA4Ljc0LjAzIDEuNjMuMTMgMy4yOC0uMDMgNC45MS0uOTEuMTItMS44Mi4xOC0yLjczLjE2LTEwLjk5IDAtMjEuODgtMi42My0zMS45NS02LjkzLTYtMi43LTExLjgxLTUuODktMTcuMDktOS44My01Ljc1LTQuMTktMTEuMDktOC45Ni0xNS43OS0xNC4zMS02LjUzLTcuMjQtMTEuOTgtMTUuMzktMTYuNjItMjMuOTUtMS4wNy0yLjAzLTIuMjQtNC4wMi0zLjE4LTYuMTItMS4xNi0yLjY0LTIuNjItNS4xNC0zLjY3LTcuODItNC4wNS05LjY4LTYuNTctMTkuOTQtOC4wOC0zMC4zMS0uNDktNC40NC0xLjA5LTguODgtMS4yLTEzLjM1LS43LTE1LjczLjg0LTMxLjU1IDQuNjctNDYuODIgMi4xMi04LjE1IDQuNzctMTYuMTggOC4zMS0yMy44MyA2LjMyLTE0LjIgMTUuMzQtMjcuMTggMjYuMy0zOC4xOSA2LjI4LTYuMiAxMy4xMy0xMS44NCAyMC41My0xNi42N3ptMTc1LjM3LTIwLjEyYzIuNzQuNzQgNS40MSAxLjc0IDguMDkgMi42OCA2LjM2IDIuMzMgMTIuNjggNC44NCAxOC43MSA3Ljk2IDEzLjExIDYuNDQgMjUuMzEgMTQuODEgMzUuODIgMjQuOTcgMTAuMiA5Ljk1IDE4Ljc0IDIxLjYgMjUuMTQgMzQuMzQgMS4yOCAyLjc1IDIuNjQgNS40NiAzLjgxIDguMjYgNi4zMSAxNS4xIDEwIDMxLjI2IDExLjIzIDQ3LjU3LjQxIDQuNTQuNDQgOS4wOS40NSAxMy42NC4wNyAxMS42NC0xLjQ5IDIzLjI1LTQuMyAzNC41My0xLjk3IDcuMjctNC4zNSAxNC40OS03Ljg2IDIxLjE4LTMuMTggNi42NC02LjY4IDEzLjE2LTEwLjg0IDE5LjI0LTYuOTQgMTAuNDctMTUuNiAxOS44Ny0yNS44MiAyNy4yMi0xMC40OCA3LjY0LTIyLjY0IDEzLjAyLTM1LjQgMTUuMzgtMy41MS42OS03LjA4IDEuMDgtMTAuNjYgMS4yMS0xLjg1LjA2LTMuNzIuMTYtNS41Ni0uMS0uMjgtMi4xNSAwLTQuMzEtLjAxLTYuNDYtLjAzLTMuNzMuMTQtNy40NS4xLTExLjE3LjE5LTcuMDIuMDItMTQuMDUuMjEtMjEuMDcuMDMtMi4zOC0uMDMtNC43Ni4wMy03LjE0LjE3LTUuMDctLjA0LTEwLjE0LjE0LTE1LjIxLjEtMi45OS0uMjQtNi4wNC41MS04Ljk2LjY2LTIuNSAxLjc4LTQuODYgMy4wOS03LjA4IDQuNDYtNy4zMSAxMS4wNi0xMi45NiAxNy42OC0xOC4yNiA1LjM4LTQuMTggMTAuNDctOC43NyAxNS4wMi0xMy44NCA3LjY4LTguMzcgMTQuMTctMTcuODggMTguNzgtMjguMjcgMi41LTUuOTMgNC41Mi0xMi4xIDUuNTUtMTguNDYuODYtNC4zNyAxLjA2LTguODMgMS4wMS0xMy4yNy0uMDItNy44NS0xLjQtMTUuNjUtMy42NC0yMy4xNy0xLjc1LTUuNzMtNC4yNy0xMS4xOC03LjA5LTE2LjQ1LTMuODctNi45My04LjY1LTEzLjMxLTEzLjk2LTE5LjItOS45NC0xMC44NS0yMS43NS0xOS45NC0zNC42LTI3LjEtMS44NS0xLjAyLTMuODQtMS44Mi01LjYzLTIuOTd6bS0xMDAuOCA1OC40NWMuOTgtMS4xOCAxLjk5LTIuMzMgMy4xMi0zLjM4LS42MS45My0xLjI3IDEuODEtMS45NSAyLjY4LTMuMSAzLjg4LTUuNTQgOC4zMS03LjAzIDEzLjA2LS44NyAzLjI3LTEuNjggNi42LTEuNzMgMTAtLjA3IDIuNTItLjA4IDUuMDcuMzIgNy41NyAxLjEzIDcuNjMgNC4zMyAxNC44NSA4Ljc3IDIxLjEyIDIgMi43IDQuMjUgNS4yNyA2LjkyIDcuMzMgMS42MiAxLjI3IDMuNTMgMi4wOSA1LjM0IDMuMDUgMy4xMSAxLjY4IDYuMzIgMy4yMyA5LjA3IDUuNDggMi42NyAyLjA5IDQuNTUgNS4zMyA0LjQgOC43OS0uMDEgNzMuNjcgMCAxNDcuMzQtLjAxIDIyMS4wMiAwIDEuMzUtLjA4IDIuNy4wNCA0LjA0LjEzIDEuNDguODIgMi44MyAxLjQ3IDQuMTUuODYgMS42NiAxLjc4IDMuMzQgMy4xOCA0LjYyLjg1Ljc3IDEuOTcgMS40IDMuMTUgMS4yNCAxLjUtLjIgMi42Ni0xLjM1IDMuNDUtMi41Ny45Ni0xLjUxIDEuNjgtMy4xNiAyLjI4LTQuODUuNzYtMi4xMy40NC00LjQyLjU0LTYuNjMuMTQtNC4wMy0uMDItOC4wNi4xNC0xMi4wOS4wMy01Ljg5LjAzLTExLjc3LjA2LTE3LjY2LjE0LTMuNjIuMDMtNy4yNC4xMS0xMC44Ni4xNS00LjAzLS4wMi04LjA2LjE0LTEyLjA5LjAzLTUuOTkuMDMtMTEuOTguMDctMTcuOTcuMTQtMy42Mi4wMi03LjI0LjExLTEwLjg2LjE0LTMuOTMtLjAyLTcuODYuMTQtMTEuNzguMDMtNS45OS4wMy0xMS45OC4wNi0xNy45Ny4xNi0zLjk0LS4wMS03Ljg4LjE5LTExLjgyLjI5IDEuNDQuMTMgMi45Mi4yMiA0LjM4LjE5IDMuNjEuNDIgNy4yMy43NiAxMC44NC4zMiAzLjQ0LjQ0IDYuODkuODYgMTAuMzIuMzcgMy4xLjUxIDYuMjIuOTUgOS4zMS41NyA0LjA5Ljg3IDguMjEgMS41NCAxMi4yOSAxLjQ2IDkuMDQgMi44MyAxOC4xMSA1LjA5IDI2Ljk5IDEuMTMgNC44MiAyLjQgOS42MSA0IDE0LjMgMi41NCA3LjkgNS43MiAxNS42NyAxMC4zMSAyMi42MiAxLjczIDIuNjQgMy44NyA0Ljk4IDYuMSA3LjIxLjI3LjI1LjU1LjUxLjg4LjcxLjYuMjUgMS4zMS0uMDcgMS43LS41Ny43MS0uODggMS4xNy0xLjk0IDEuNy0yLjkzIDQuMDUtNy44IDguMTgtMTUuNTYgMTIuMzQtMjMuMzEuNy0xLjMxIDEuNDQtMi42MiAyLjU2LTMuNjEgMS43NS0xLjU3IDMuODQtMi42OSA1Ljk4LTMuNjMgMi44OC0xLjIyIDUuOS0yLjE5IDkuMDMtMi40MiA2LjU4LS42MiAxMy4xMS43NSAxOS41NiAxLjg1IDMuNjkuNTggNy40IDEuMTcgMTEuMTMgMS40MSAzLjc0LjEgNy40OC4wNSAxMS4yMS0uMjggOC41NS0uOTIgMTYuOTktMi45NiAyNC45NC02LjI1IDUuMy0yLjI0IDEwLjQ2LTQuODMgMTUuMzEtNy45MyAxMS40Ni03LjIxIDIxLjQ2LTE2LjU3IDMwLjA0LTI3LjAxIDEuMTctMS40MiAyLjI1LTIuOSAzLjQ2LTQuMjgtMS4yIDMuMjQtMi42NyA2LjM3LTQuMTYgOS40OC0xLjI1IDIuOS0yLjg0IDUuNjEtNC4yNyA4LjQyLTUuMTYgOS42My0xMS4wMiAxOC45MS0xNy43NSAyNy41Mi00LjAzIDUuMjEtOC41MyAxMC4wNS0xMy4zMyAxNC41Ny02LjY0IDYuMDUtMTQuMDcgMTEuMzctMjIuNDMgMTQuNzYtOC4yMSAzLjM3LTE3LjMxIDQuNjMtMjYuMDkgMy4yOS0zLjU2LS41OC03LjAxLTEuNjktMTAuNDEtMi44OC0yLjc5LS45Ny01LjM5LTIuMzgtOC4wMy0zLjY5LTMuNDMtMS43MS02LjY0LTMuODEtOS43MS02LjA4IDIuNzEgMy4wNiA1LjY5IDUuODYgOC43IDguNjEgNC4yNyAzLjc2IDguNzQgNy4zMSAxMy42MyAxMC4yMyAzLjk4IDIuNDUgOC4yOSA0LjQgMTIuODQgNS41MSAxLjQ2LjM3IDIuOTYuNDYgNC40NS42LTEuMjUgMS4xLTIuNjMgMi4wNC0zLjk5IDIuOTgtOS42MSA2LjU0LTIwLjAxIDExLjg2LTMwLjY5IDE2LjQzLTIwLjg2IDguNy00My4xNyAxMy45Ny02NS43NCAxNS4zNC00LjY2LjI0LTkuMzIuMzYtMTMuOTguMzYtNC45OC0uMTEtOS45Ny0uMTMtMTQuOTItLjY1LTExLjItLjc2LTIyLjI5LTIuNzMtMzMuMTctNS40My0xMC4zNS0yLjcxLTIwLjU1LTYuMTItMzAuMy0xMC41NS04LjcxLTMuODYtMTcuMTItOC40Mi0yNC45OS0xMy43OS0xLjgzLTEuMzEtMy43NC0yLjUzLTUuMzctNC4wOCA2LjYtMS4xOSAxMy4wMy0zLjM5IDE4Ljk5LTYuNDggNS43NC0yLjg2IDEwLjk5LTYuNjYgMTUuNjMtMTEuMDcgMi4yNC0yLjE5IDQuMjktNC41OSA2LjE5LTcuMDktMy40MyAyLjEzLTYuOTMgNC4xNS0xMC42MiA1Ljc4LTQuNDEgMi4xNi05LjA3IDMuNzctMTMuODEgNS4wMi01LjczIDEuNTItMTEuNzQgMS43My0xNy42MSAxLjE0LTguMTMtLjk1LTE1Ljg2LTQuMjctMjIuNTEtOC45OC00LjMyLTIuOTQtOC4yMi02LjQzLTExLjk2LTEwLjA2LTkuOTMtMTAuMTYtMTguMi0yMS44MS0yNS42Ni0zMy44Ni0zLjk0LTYuMjctNy41My0xMi43NS0xMS4xMi0xOS4yMi0xLjA1LTIuMDQtMi4xNS00LjA1LTMuMTgtNi4xIDIuODUgMi45MiA1LjU3IDUuOTcgOC40MyA4Ljg4IDguOTkgOC45NyAxOC41NiAxNy40NCAyOS4xNiAyNC40OCA3LjU1IDQuOSAxNS42NyA5LjIzIDI0LjU2IDExLjAzIDMuMTEuNzMgNi4zMi40NyA5LjQ3LjgxIDIuNzcuMjggNS41Ni4yIDguMzQuMyA1LjA1LjA2IDEwLjExLjA0IDE1LjE2LS4xNiAzLjY1LS4xNiA3LjI3LS42NiAxMC44OS0xLjA5IDIuMDctLjI1IDQuMTEtLjcxIDYuMTQtMS4yIDMuODgtLjk1IDguMTEtLjk2IDExLjgzLjYxIDQuNzYgMS44NSA4LjQ0IDUuNjQgMTEuMzggOS43MSAyLjE2IDMuMDIgNC4wNiA2LjIyIDUuNjYgOS41OCAxLjE2IDIuNDMgMi40NiA0Ljc5IDMuNTUgNy4yNiAxIDIuMjQgMi4xNSA0LjQyIDMuNDIgNi41Mi42NyAxLjAyIDEuNCAyLjE1IDIuNjIgMi41NSAxLjA2LS43NSAxLjcxLTEuOTEgMi4yOC0zLjAzIDIuMS00LjE2IDMuNDItOC42NSA0Ljg5LTEzLjA1IDIuMDItNi41OSAzLjc4LTEzLjI3IDUuMTktMjAuMDIgMi4yMS05LjI1IDMuMjUtMTguNzIgNC41NC0yOC4xMy41Ni0zLjk4LjgzLTcuOTkgMS4zMS0xMS45Ny44Ny0xMC42NCAxLjktMjEuMjcgMi4yNC0zMS45NC4wOC0xLjg2LjI0LTMuNzEuMjUtNS41Ny4wMS00LjM1LjI1LTguNjkuMjItMTMuMDMtLjAxLTIuMzgtLjAxLTQuNzYgMC03LjEzLjA1LTUuMDctLjItMTAuMTQtLjIyLTE1LjIxLS4yLTYuNjEtLjcxLTEzLjItMS4yOS0xOS43OC0uNzMtNS44OC0xLjU1LTExLjc4LTMuMTItMTcuNTEtMi4wNS03Ljc1LTUuNTktMTUuMDMtOS44LTIxLjgyLTMuMTYtNS4wNy02Ljc5LTkuODgtMTEuMDktMTQuMDMtMy44OC0zLjg2LTguNTgtNy4wOC0xMy45NC04LjQ1LTEuNS0uNDEtMy4wNi0uNDUtNC41OS0uNjQuMDctMi45OS43LTUuOTMgMS4yNi04Ljg1IDEuNTktNy43MSAzLjgtMTUuMyA2Ljc2LTIyLjYgMS41Mi00LjAzIDMuNDEtNy45IDUuMzktMTEuNzIgMy40NS02LjU2IDcuNjItMTIuNzkgMTIuNDYtMTguNDZ6bTMxLjI3IDEuN2MuMzUtLjA2LjcxLS4xMiAxLjA3LS4xOS4xOSAxLjc5LjA5IDMuNTguMSA1LjM3djM4LjEzYy0uMDEgMS43NC4xMyAzLjQ5LS4xNSA1LjIyLS4zNi0uMDMtLjcxLS4wNS0xLjA2LS4wNS0uOTUtMy43NS0xLjcyLTcuNTUtMi42Mi0xMS4zMS0uMzgtMS41My0uNTgtMy4wOS0xLjA3LTQuNTktMS43LS4yNC0zLjQzLS4xNy01LjE1LS4yLTUuMDYtLjAxLTEwLjEzIDAtMTUuMTktLjAxLTEuNjYtLjAxLTMuMzIuMDktNC45OC0uMDMtLjAzLS4zOS0uMjYtLjkxLjE2LTEuMTggMS4yOC0uNjUgMi43Mi0uODggNC4wNi0xLjM1IDMuNDMtMS4xNCA2Ljg4LTIuMTYgMTAuMzEtMy4zMSAxLjM5LS40OCAyLjktLjcyIDQuMTYtMS41NC4wNC0uNTYuMDItMS4xMy0uMDUtMS42OC0xLjIzLS41NS0yLjUzLS44Ny0zLjgxLTEuMjgtMy4xMy0xLjAzLTYuMjktMS45Ni05LjQxLTMuMDItMS43OS0uNjItMy42Ny0xLTUuNDEtMS43OS0uMDMtLjM3LS4wNy0uNzMtLjExLTEuMDkgNS4wOS0uMTkgMTAuMi4wNiAxNS4zLS4xMiAzLjM2LS4xMyA2LjczLjA4IDEwLjA5LS4wNy4xMi0uMzkuMjYtLjc3LjM3LTEuMTYgMS4wOC00Ljk0IDIuMzMtOS44MyAzLjM5LTE0Ljc1em01Ljk3LS4yYy4zNi4wNS43Mi4xMiAxLjA4LjIuOTggMy44NSAxLjczIDcuNzYgMi43MSAxMS42MS4zNiAxLjQyLjU2IDIuODggMS4wMyA0LjI3IDIuNTMuMTggNS4wNy0uMDEgNy42MS4wNSA1LjE2LjEyIDEwLjMzLjEyIDE1LjQ5LjA3Ljc2LS4wMSAxLjUyLjAzIDIuMjguMDgtLjA0LjM2LS4wNy43Mi0uMSAxLjA4LTEuODIuODMtMy43OCAxLjI1LTUuNjcgMS44OS0zLjczIDEuMjMtNy40OCAyLjM5LTExLjIyIDMuNTctLjU3LjE3LTEuMTIuNDItMS42Ny42NC0uMTUuNTUtLjE4IDEuMTItLjEyIDEuNjkuODcuNDggMS44Mi44MSAyLjc3IDEuMDkgNC44OCAxLjUyIDkuNzMgMy4xNCAxNC42MyA0LjYuMzguMTMuNzguMjcgMS4xMy40OS40LjI3LjIzLjc5LjE1IDEuMTgtMS42Ni4xMy0zLjMxLjAzLTQuOTcuMDQtNS4xNy4wMS0xMC4zMy0uMDEtMTUuNS4wMS0xLjYxLjAzLTMuMjItLjAyLTQuODIuMjEtLjUyIDEuNjctLjcyIDMuNDItMS4xNyA1LjExLS45NCAzLjU3LTEuNTIgNy4yNC0yLjU0IDEwLjc4LS4zNi4wMS0uNzEuMDItMS4wNi4wNi0uMjktMS43My0uMTUtMy40OC0uMTUtNS4yMnYtMzguMTNjLjAyLTEuNzgtLjA4LTMuNTguMTEtNS4zN3pNNjUuMDUgMTY4LjMzYzEuMTItMi4xNSAyLjA4LTQuNCAzLjM3LTYuNDYtMS44MiA3LjU2LTIuOTEgMTUuMjctMy42MiAyMy0uOCA3LjcxLS44NSAxNS40OS0uNTQgMjMuMjMgMS4wNSAxOS45NCA1LjU0IDM5LjgzIDE0LjIzIDU3Ljg4IDIuOTkgNS45OSA2LjM1IDExLjgzIDEwLjUgMTcuMTEgNi4xMiA3LjQ3IDEyLjUzIDE0Ljc2IDE5Ljg0IDIxLjA5IDQuOCA0LjEgOS45OSA3Ljc4IDE1LjU0IDEwLjggMy4yNyAxLjY1IDYuNTEgMy4zOSA5Ljk0IDQuNjggNS4wMSAyLjAzIDEwLjE5IDMuNjEgMTUuNDIgNC45NCAzLjgzLjk2IDcuNzggMS40MSAxMS41MiAyLjcxIDUgMS41NyA5LjQ3IDQuNjEgMTMuMDMgOC40MyA0LjkzIDUuMjMgOC4wOSAxMS44NyAxMC4yIDE4LjY3Ljk5IDIuOSAxLjU5IDUuOTEgMi4xNyA4LjkyLjE1Ljc1LjIyIDEuNTIuMTYgMi4yOS02LjUgMi43OC0xMy4yNiA1LjA2LTIwLjI2IDYuMTgtNC4xMS43OC04LjI5Ljk5LTEyLjQ2IDEuMDgtMTAuMjUuMjQtMjAuNDctMS43Ni0zMC4xMi01LjEyLTMuNzQtMS40Mi03LjQ5LTIuODUtMTEuMDMtNC43Mi04LjA2LTMuODQtMTUuNjQtOC43LTIyLjQ2LTE0LjQ2LTIuOTItMi41NS01LjgzLTUuMTMtOC40LTguMDMtOS4xNi05LjgzLTE2LjMtMjEuNDEtMjEuNzktMzMuNjUtMi4zOS01LjU1LTQuNjEtMTEuMTgtNi4zNy0xNi45Ni0xLjE3LTMuOTQtMi4zNi03Ljg5LTMuMjYtMTEuOTEtLjc1LTIuOTQtMS4yMi01Ljk1LTEuODctOC45Mi0uNDYtMi4xNC0uNjktNC4zMi0xLjAzLTYuNDgtLjg1LTUuNDMtMS4yOC0xMC45My0xLjMzLTE2LjQzLjExLTYuMTguMjUtMTIuMzcgMS4wNy0xOC41LjQtMi44Ni42Ny01Ljc0IDEuMTUtOC42Ljk4LTUuNyAyLjE0LTExLjM3IDMuNzEtMTYuOTMgMy4wOS0xMS42NSA3LjQ4LTIyLjk1IDEyLjY5LTMzLjg0em0zNjMuNzMtNi40NGMxLjEgMS42NiAxLjkxIDMuNDggMi43OCA1LjI2IDIuMSA0LjQ1IDQuMjQgOC45IDYuMDIgMTMuNDkgNy42MSAxOC43NiAxMi4zIDM4Ljc5IDEzLjA0IDU5LjA1LjAyIDEuNzYuMDcgMy41Mi4xMSA1LjI5LjEzIDkuNTctMS4yNyAxOS4wOS0zLjE4IDI4LjQ1LS43MyAzLjU5LTEuNTQgNy4xNy0yLjU4IDEwLjY5LTQuMDQgMTQuNzItMTAgMjktMTguNDEgNDEuNzgtOC4yMSAxMi41Ny0xOS4wMSAyMy41NS0zMS44NCAzMS40MS01LjczIDMuNTktMTEuNzkgNi42NC0xOC4wNSA5LjE5LTUuNzggMi4xOS0xMS43MSA0LjAzLTE3LjggNS4xMS02LjQgMS4wNS0xMi45MSAxLjUyLTE5LjQgMS4yMy03LjkyLS40OC0xNS43OC0yLjA3LTIzLjIxLTQuODUtMS45NC0uOC0zLjk0LTEuNDYtNS44NC0yLjMzLS4yMS0xLjUxLjI1LTIuOTkuNTMtNC40NiAxLjE2LTUuNzQgMy4wMy0xMS4zNiA1LjctMTYuNTggMi4zNy00LjUxIDUuNTItOC42NSA5LjQ2LTExLjkgMi40My0yLjA1IDUuMjQtMy42MSA4LjE2LTQuODMgMy41OC0xLjUgNy40Ny0xLjk3IDExLjI0LTIuODMgNy4yMy0xLjcxIDE0LjM3LTMuOTMgMjEuMTUtNyAxMC4zNS00LjY1IDE5LjcxLTExLjM4IDI3LjY1LTE5LjQ2IDEuNTktMS42MSAzLjIzLTMuMTggNC43NC00Ljg3IDMuMzctMy43NiA2LjcxLTcuNTcgOS44NS0xMS41MyA3LjQ4LTEwLjA3IDEyLjgyLTIxLjU5IDE2LjcxLTMzLjQ4IDEuNTgtNS4zIDMuMjEtMTAuNiA0LjIxLTE2LjA1LjYzLTIuODcgMS4wNC01Ljc4IDEuNTItOC42OC44Ny02LjA5IDEuNTktMTIuMjIgMS42OC0xOC4zOC4xMi02LjY1LjE0LTEzLjMyLS41My0xOS45NC0uNzMtNy45OS0xLjg3LTE1Ljk2LTMuNzEtMjMuNzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZW5jYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy4zIDQ0MC43YzAgMjUuMy0yMC4zIDQ1LjYtNDUuNiA0NS42cy00NS44LTIwLjMtNDUuOC00NS42IDIwLjYtNDUuOCA0NS44LTQ1LjhjMjUuNCAwIDQ1LjYgMjAuNSA0NS42IDQ1Ljh6bS0yNTMuOS00NS44Yy0yNS4zIDAtNDUuNiAyMC42LTQ1LjYgNDUuOHMyMC4zIDQ1LjYgNDUuNiA0NS42IDQ1LjgtMjAuMyA0NS44LTQ1LjYtMjAuNS00NS44LTQ1LjgtNDUuOHptMjkxLjctMjcwQzE1OC45IDEyNC45IDgxLjkgMTEyLjEgMCAyNS43YzM0LjQgNTEuNyA1My4zIDE0OC45IDM3My4xIDE0NC4yIDMzMy4zLTUgMTMwIDg2LjEgNzAuOCAxODguOSAxODYuNy0xNjYuNyAzMTkuNC0yMzMuOSAxNy4yLTIzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcGVuaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcxLjUgNDMybC02OCAzMkM4OC41IDQ1My43IDAgMzkyLjUgMCAzMTguMmMwLTcxLjUgODIuNS0xMzEgMTkxLjctMTQ0LjN2NDNjLTcxLjUgMTIuNS0xMjQgNTMtMTI0IDEwMS4zIDAgNTEgNTguNSA5My4zIDEzNS43IDEwM3YtMzQwbDY4LTMzLjJ2Mzg0ek00NDggMjkxbC0xMzEuMy0yOC41IDM2LjgtMjAuN2MtMTkuNS0xMS41LTQzLjUtMjAtNzAtMjQuOHYtNDNjNDYuMiA1LjUgODcuNyAxOS41IDEyMC4zIDM5LjNsMzUtMTkuOEw0NDggMjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcGVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuOSAzMi43Yy0xNzAuMiAwLTI1Mi42IDIyMy44LTE0Ny41IDM1NS4xIDM2LjUgNDUuNCA4OC42IDc1LjYgMTQ3LjUgNzUuNiAzNi4zIDAgNzAuMy0xMS4xIDk5LjQtMzAuNC00My44IDM5LjItMTAxLjkgNjMtMTY1LjMgNjMtMy45IDAtOCAwLTExLjktLjNDMTA0LjYgNDg5LjYgMCAzODEuMSAwIDI0OCAwIDExMSAxMTEgMCAyNDggMGguOGM2My4xLjMgMTIwLjcgMjQuMSAxNjQuNCA2My4xLTI5LTE5LjQtNjMuMS0zMC40LTk5LjMtMzAuNHptMTAxLjggMzk3LjdjLTQwLjkgMjQuNy05MC43IDIzLjYtMTMyLTUuOCA1Ni4yLTIwLjUgOTcuNy05MS42IDk3LjctMTc2LjYgMC04NC43LTQxLjItMTU1LjgtOTcuNC0xNzYuNiA0MS44LTI5LjIgOTEuMi0zMC4zIDEzMi45LTUgMTA1LjkgOTguNyAxMDUuNSAyNjUuNy0xLjIgMzY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcHRpbk1vbnN0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcyLjYgNDIxLjRjNS42LTkuNSA0LjctMTUuMi01LjQtMTEuNi0zLTQuOS03LTkuNS0xMS4xLTEzLjggMi45LTkuNy0uNy0xNC4yLTEwLjgtOS4yLTQuNi0zLjItMTAuMy02LjUtMTUuOS05LjIgMC0xNS4xLTExLjYtMTEuNi0xNy42LTUuNy0xMC40LTEuNS0xOC43LS4zLTI2LjggNS43LjMtNi41LjMtMTMgLjMtMTkuNyAxMi42IDAgNDAuMi0xMSA0NS45LTM2LjIgMS40LTYuOCAxLjYtMTMuOC0uMy0yMS45LTMtMTMuNS0xNC4zLTIxLjMtMjUuMS0yNS43LS44LTUuOS03LjYtMTQuMy0xNC45LTE1LjlzLTEyLjQgNC45LTE0LjEgMTAuM2MtOC41IDAtMTkuMiAyLjgtMjEuMSA4LjQtNS40LS41LTExLjEtMS40LTE2LjgtMS45IDIuNy0xLjkgNS40LTMuNSA4LjQtNC42IDUuNC05LjIgMTQuNi0xMS40IDI1LjctMTEuNlYyNTZjMTkuNS0uNSA0My01LjkgNTMuOC0xOC4xIDEyLjctMTMuOCAxNC42LTM3LjMgMTIuNC01NS4xLTIuNC0xNy4zLTkuNy0zNy42LTI0LjYtNDguMS04LjQtNS45LTIxLjYtLjgtMjIuNyA5LjUtMi4yIDE5LjYgMS4yIDMwLTM4LjYgMjUuMS0xMC4zLTIzLjgtMjQuNi00NC42LTQyLjctNjBDMzQxIDQ5LjYgMjQyLjkgNTUuNSAxNjYuNCA3MS43YzE5LjcgNC42IDQxLjEgOC42IDU5LjcgMTYuNS0yNi4yIDIuNC01Mi43IDExLjMtNzYuMiAyMy4yLTMyLjggMTctNDQgMjkuOS01Ni43IDQyLjQgMTQuOS0yLjIgMjguOS01LjEgNDMuOC0zLjgtOS43IDUuNC0xOC40IDEyLjItMjYuNSAyMC0yNS44LjktMjMuOC01LjMtMjYuMi0yNS45LTEuMS0xMC41LTE0LjMtMTUuNC0yMi43LTkuNy0yOC4xIDE5LjktMzMuNSA3OS45LTEyLjIgMTAzLjUgMTAuOCAxMi4yIDM1LjEgMTcuMyA1NC45IDE3LjgtLjMgMS4xLS4zIDEuOS0uMyAyLjcgMTAuOC41IDE5LjUgMi43IDI0LjYgMTEuNiAzIDEuMSA1LjcgMi43IDguMSA0LjYtNS40LjUtMTEuMSAxLjQtMTYuNSAxLjktMy4zLTYuNi0xMy43LTguMS0yMS4xLTguMS0xLjYtNS43LTYuNS0xMi4yLTE0LjEtMTAuMy02LjggMS45LTE0LjEgMTAtMTQuOSAxNS45LTIyLjUgOS41LTMwLjEgMjYuOC0yNS4xIDQ3LjYgNS4zIDI0LjggMzMgMzYuMiA0NS45IDM2LjJ2MTkuN2MtNi42LTUtMTQuMy03LjUtMjYuOC01LjctNS41LTUuNS0xNy4zLTEwLjEtMTcuMyA1LjctNS45IDIuNy0xMS40IDUuOS0xNS45IDkuMi05LjgtNC45LTEzLjYtMS43LTExLjEgOS4yLTQuMSA0LjMtNy44IDguNi0xMS4xIDEzLjgtMTAuMi0zLjctMTEgMi4yLTUuNCAxMS42LTEuMSAzLjUtMS42IDctMS45IDEwLjgtLjUgMzEuNiA0NC42IDY0IDczLjUgNjUuMSAxNy4zLjUgMzQuNi04LjQgNDMtMjMuNSAxMTMuMiA0LjkgMjI2LjcgNC4xIDM0MC4yIDAgOC4xIDE1LjEgMjUuNCAyNC4zIDQyLjcgMjMuNSAyOS4yLTEuMSA3NC4zLTMzLjUgNzMuNS02NS4xLjItMy43LS43LTcuMi0xLjctMTAuN3ptLTczLjgtMjU0YzEuMS0zIDIuNC04LjQgMi40LTE0LjYgMC01LjkgNi44LTguMSAxNC4xLS44IDExLjEgMTEuNiAxNC45IDQwLjUgMTMuOCA1MS4xLTQuMS0xMy42LTEzLTI5LTMwLjMtMzUuN3ptLTQuNiA2LjdjMTkuNSA2LjIgMjguNiAyNy42IDI5LjcgNDguOS0xLjEgMi43LTMgNS40LTQuOSA3LjYtNS43IDUuOS0xNS40IDEwLTI2LjIgMTIuMiA0LjMtMjEuMy4zLTQ3LjMtMTIuNy02MyA0LjktLjggMTAuOS0yLjQgMTQuMS01Ljd6bS0yNC4xIDYuOGMxMy44IDExLjkgMjAgMzkuMiAxNC4xIDYzLjUtNC4xLjUtOC4xLjgtMTEuNi44LTEuOS0yMS45LTYuOC00NC0xNC4zLTY0LjYgMy43LjMgOC4xLjMgMTEuOC4zek00Ny41IDIwM2MtMS4xLTEwLjUgMi40LTM5LjUgMTMuOC01MS4xIDctNy4zIDE0LjEtNS4xIDE0LjEuOCAwIDYuMiAxLjQgMTEuNiAyLjQgMTQuNi0xNy4zIDYuOC0yNi4yIDIyLjItMzAuMyAzNS43em05LjcgMjcuNmMtMS45LTIuMi0zLjUtNC45LTQuOS03LjYgMS40LTIxLjMgMTAuMy00Mi43IDI5LjctNDguOSAzLjIgMy4yIDkuMiA0LjkgMTQuMSA1LjctMTMgMTUuNy0xNyA0MS42LTEyLjcgNjMtMTAuOC0yLjItMjAuNS02LTI2LjItMTIuMnptNDcuOSAxNC42Yy00LjEgMC04LjEtLjMtMTIuNy0uOC00LjYtMTguNi0xLjktMzguOSA1LjQtNTN2LjNsMTIuMi01LjFjNC45LTEuOSA5LjctMy44IDE0LjktNC45LTEwLjcgMTkuNy0xNy40IDQxLjMtMTkuOCA2My41em0xODQtMTYyLjdjNDEuOSAwIDc2LjIgMzQgNzYuMiA3NS45IDAgNDIuMi0zNC4zIDc2LjItNzYuMiA3Ni4ycy03Ni4yLTM0LTc2LjItNzYuMmMwLTQxLjggMzQuMy03NS45IDc2LjItNzUuOXptMTE1LjYgMTc0LjNjLS4zIDE3LjgtNyA0OC45LTIzIDU3LTEzLjIgNi42LTYuNS03LjUtMTYuNS01OC4xIDEzLjMuMyAyNi42LjMgMzkuNSAxLjF6bS01NC0xLjZjLjggNC45IDMuOCA0MC4zLTEuNiA0MS45LTExLjYgMy41LTQwIDQuMy01MS4xLTEuMS00LjEtMy00LjYtMzUuOS00LjMtNDEuMXYuM2MxOC45LS4zIDM4LjEtLjMgNTcgMHpNMjc4LjMgMzA5Yy0xMyAzLjUtNDEuNiA0LjEtNTQuNi0xLjYtNi41LTIuNy0zLjgtNDIuNC0xLjktNTEuNiAxOS4yLS41IDM4LjQtLjUgNTcuOC0uOHYuM2MxLjEgOC4zIDMuMyA1MS4yLTEuMyA1My43em0tMTA2LjUtNTEuMWMxMi4yLS44IDI0LjYtMS40IDM2LjgtMS42LTIuNCAxNS40LTMgNDMuNS00LjkgNTIuMi0xLjEgNi44LTQuMyA2LjgtOS43IDQuMy0yMS45LTkuOC0yNy42LTM1LjItMjIuMi01NC45em0tMzUuNCAzMS4zYzcuOC0xLjEgMTUuNy0xLjkgMjMuNS0yLjcgMS42IDYuMiAzLjggMTEuOSA3IDE3LjYgMTAgMTcgNDQgMzUuNyA0NS4xIDcgNi4yIDE0LjkgNDAuOCAxMi4yIDU0LjkgMTAuOCAxNS43LTEuNCAyMy44LTEuNCAyNi44LTE0LjMgMTIuNCA0LjMgMzAuOCA0LjEgNDQgMyAxMS4zLS44IDIwLjgtLjUgMjQuNi04LjkgMS4xIDUuMSAxLjkgMTEuNiA0LjYgMTYuOCAxMC44IDIxLjMgMzcuMyAxLjQgNDYuOC0zMS42IDguNi44IDE3LjYgMS45IDI2LjUgMi43LS40IDEuMy0zLjggNy4zIDcuMyAxMS42LTQ3LjYgNDctOTUuNyA4Ny44LTE2My4yIDEwNy02My4yLTIwLjgtMTEyLjEtNTkuNS0xNTUuOS0xMDYuNSA5LjYtMy40IDEwLjQtOC44IDgtMTIuNXptLTIxLjYgMTcyLjVjLTMuOCAxNy44LTIxLjkgMjkuNy0zOS43IDI4LjktMTkuMi0uOC00Ni41LTE3LTU5LjItMzYuNS0yLjctMzEuMSA0My44LTYxLjMgNjYuMi01NC42IDE0LjkgNC4zIDI3LjggMzAuOCAzMy41IDU0IDAgMy0uMyA1LjctLjggOC4yem0tOC43LTY2Yy0uNS0xMy41LS41LTI3LS4zLTQwLjVoLjNjMi43LTEuNiA1LjctMy44IDcuOC02LjUgNi41LTEuNiAxMy01LjEgMTUuMS05LjIgMy4zLTcuMS03LTcuNS01LjQtMTIuNCAyLjctMS4xIDUuNy0yLjIgNy44LTMuNSAyOS4yIDI5LjIgNTguNiA1Ni41IDk3LjMgNzctMzYuOCAxMS4zLTcyLjQgMjcuNi0xMDUuOSA0Ny0xLjItMTguNi03LjctMzUuOS0xNi43LTUxLjl6bTMzNy42IDY0LjZjLTEwMyAzLjUtMjA2LjIgNC4xLTMwOS40IDAgMCAuMyAwIC4zLS4zLjN2LS4zaC4zYzM1LjEtMjEuNiA3Mi4yLTM5LjIgMTEyLjQtNTAuOCAxMS42IDUuMSAyMyA5LjUgMzQuOSAxMy4yIDIuMi44IDIuMi44IDQuMyAwIDE0LjMtNC4xIDI4LjQtOS4yIDQyLjItMTUuNCA0MS41IDExLjcgNzguOCAzMS43IDExNS42IDUzem0xMC41LTEyLjRjLTM1LjktMTkuNS03My0zNS45LTExMS45LTQ3LjYgMzguMS0yMCA3MS45LTQ3LjMgMTAzLjUtNzYuNyAyLjIgMS40IDQuNiAyLjQgNy42IDMuMiAwIC44LjMgMS45LjUgMi40LTQuNiAyLjctNy44IDYuMi01LjkgMTAuMyAyLjIgMy44IDguNiA3LjYgMTUuMSA4LjkgMi40IDIuNyA1LjEgNS4xIDguMSA2LjggMCAxMy44LS4zIDI3LjYtLjggNDEuM2wuMy0uM2MtOS4zIDE1LjktMTUuNSAzNy0xNi41IDUxLjd6bTEwNS45IDYuMmMtMTIuNyAxOS41LTQwIDM1LjctNTkuMiAzNi41LTE5LjMuOS00MC41LTEzLjItNDAuNS0zNyA1LjctMjMuMiAxOC45LTQ5LjcgMzMuNS01NCAyMi43LTYuOSA2OS4yIDIzLjQgNjYuMiA1NC41ek0zNzIuOSA3NS4yYy0zLjgtNzIuMS0xMDAuOC03OS43LTEyNi0yMy41IDQ0LjYtMjQuMyA5MC4zLTE1LjcgMTI2IDIzLjV6TTc0LjggNDA3LjFjLTE1LjcgMS42LTQ5LjUgMjUuNC00OS41IDQzLjIgMCAxMS42IDE1LjcgMTkuNSAzMi4yIDE0LjkgMTIuMi0zLjIgMzEuMS0xNy42IDM1LjktMjcuMyA2LTExLjYtMy43LTMyLjctMTguNi0zMC44em0yMTUuOS0xNzYuMmMyOC42IDAgNTEuOS0yMS42IDUxLjktNDguNCAwLTM2LjEtNDAuNS01OC4xLTcyLjItNDQuMyA5LjUgMyAxNi41IDExLjYgMTYuNSAyMS42IDAgMjMuMy0zMy4zIDMyLTQ2LjUgMTEuMy03LjMgMzQuMSAxOS40IDU5LjggNTAuMyA1OS44ek02OCA0NzQuMWMuNSA2LjUgMTIuMiAxMi43IDIxLjYgOS41IDYuOC0yLjcgMTQuNi0xMC41IDE3LjMtMTYuMiAzLTctMS4xLTIwLTkuNy0xOC40LTguOSAxLjYtMjkuNyAxNi43LTI5LjIgMjUuMXptNDMzLjItNjdjLTE0LjktMS45LTI0LjYgMTkuMi0xOC45IDMwLjggNC45IDkuNyAyNC4xIDI0LjEgMzYuMiAyNy4zIDE2LjUgNC42IDMyLjItMy4yIDMyLjItMTQuOSAwLTE3LjgtMzMuOC00MS42LTQ5LjUtNDMuMnpNNDc4LjggNDQ5Yy04LjQtMS42LTEyLjQgMTEuMy05LjUgMTguNCAyLjQgNS43IDEwLjMgMTMuNSAxNy4zIDE2LjIgOS4yIDMuMiAyMS4xLTMgMjEuMy05LjUuOS04LjQtMjAuMi0yMy41LTI5LjEtMjUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3JjaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk0Ljc1IDE4OC4xOWgtNDUuOTJWMzQyaDQ3LjQ3YzY3LjYyIDAgODMuMTItNTEuMzQgODMuMTItNzYuOTEgMC00MS42NC0yNi41NC03Ni45LTg0LjY3LTc2Ljl6TTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bS04MC43OSAzNjAuNzZoLTI5Ljg0di0yMDcuNWgyOS44NHptLTE0LjkyLTIzMS4xNGExOS41NyAxOS41NyAwIDEgMSAxOS41Ny0xOS41NyAxOS42NCAxOS42NCAwIDAgMS0xOS41NyAxOS41N3pNMzAwIDM2OWgtODFWMTYxLjI2aDgwLjZjNzYuNzMgMCAxMTAuNDQgNTQuODMgMTEwLjQ0IDEwMy44NUM0MTAgMzE4LjM5IDM2OC4zOCAzNjkgMzAwIDM2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3NpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjY2LjQ0QzEwLjMgMTMwLjY0IDEwNS40IDM0IDIyMS44IDE4LjM0YzEzOC44LTE4LjYgMjU1LjYgNzUuOCAyNzggMjAxLjEgMjEuMyAxMTguOC00NCAyMzAtMTUxLjYgMjc0LTkuMyAzLjgtMTQuNCAxLjctMTgtNy43cS0yNi43LTY5LjQ1LTUzLjQtMTM5Yy0zLjEtOC4xLTEtMTMuMiA3LTE2LjggMjQuMi0xMSAzOS4zLTI5LjQgNDMuMy01NS44YTcxLjQ3IDcxLjQ3IDAgMCAwLTY0LjUtODIuMmMtMzktMy40LTcxLjggMjMuNy03Ny41IDU5LjctNS4yIDMzIDExLjEgNjMuNyA0MS45IDc3LjcgOS42IDQuNCAxMS41IDguNiA3LjggMTguNHEtMjYuODUgNjkuOS01My43IDEzOS45Yy0yLjYgNi45LTguMyA5LjMtMTUuNSA2LjUtNTIuNi0yMC4zLTEwMS40LTYxLTEzMC44LTExOS0yNC45LTQ5LjItMjUuMi04Ny43LTI2LjgtMTA4Ljd6bTIwLjktMS45Yy40IDYuNi42IDE0LjMgMS4zIDIyLjEgNi4zIDcxLjkgNDkuNiAxNDMuNSAxMzEgMTgzLjEgMy4yIDEuNSA0LjQuOCA1LjYtMi4zcTIyLjM1LTU4LjY1IDQ1LTExNy4zYzEuMy0zLjMuNi00LjgtMi40LTYuNy0zMS42LTE5LjktNDcuMy00OC41LTQ1LjYtODYgMS0yMS42IDkuMy00MC41IDIzLjgtNTYuMyAzMC0zMi43IDc3LTM5LjggMTE1LjUtMTcuNmE5MS42NCA5MS42NCAwIDAgMSA0NS4yIDkwLjRjLTMuNiAzMC42LTE5LjMgNTMuOS00NS43IDY5LjgtMi43IDEuNi0zLjUgMi45LTIuMyA2cTIyLjggNTguOCA0NS4yIDExNy43YzEuMiAzLjEgMi40IDMuOCA1LjYgMi4zIDM1LjUtMTYuNiA2NS4yLTQwLjMgODguMS03MiAzNC44LTQ4LjIgNDkuMS0xMDEuOSA0Mi4zLTE2MS0xMy43LTExNy41LTExOS40LTIxNC44LTI1NS41LTE5OC0xMDYuMSAxMy0xOTUuMyAxMDIuNS0xOTcuMSAyMjUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFnZTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDUwNEMxMTEgNTA0IDAgMzkzIDAgMjU2UzExMSA4IDI0OCA4YzIwLjkgMCA0MS4zIDIuNiA2MC43IDcuNUw0Mi4zIDM5MkgyNDh2MTEyem0wLTE0My42VjE0Ni44TDk4LjYgMzYwLjRIMjQ4em05NiAzMS42djkyLjdjNDUuNy0xOS4yIDg0LjUtNTEuNyAxMTEuNC05Mi43SDM0NHptNTcuNC0xMzguMmwtMjEuMiA4LjQgMjEuMiA4LjN2LTE2Ljd6bS0yMC4zIDU0LjVjLTYuNyAwLTggNi4zLTggMTIuOXY3LjdoMTYuMnYtMTBjMC01LjktMi4zLTEwLjYtOC4yLTEwLjZ6TTQ5NiAyNTZjMCAzNy4zLTguMiA3Mi43LTIzIDEwNC40SDM0NFYyNy4zQzQzMy4zIDY0LjggNDk2IDE1My4xIDQ5NiAyNTZ6TTM2MC40IDE0My42aDY4LjJWOTZoLTEzLjl2MzIuNmgtMTMuOVY5OWgtMTMuOXYyOS42aC0xMi43Vjk2aC0xMy45djQ3LjZ6bTY4LjEgMTg1LjNINDAydi0xMWMwLTE1LjQtNS42LTI1LjItMjAuOS0yNS4yLTE1LjQgMC0yMC43IDEwLjYtMjAuNyAyNS45djI1LjNoNjguMnYtMTV6bTAtMTAzbC02OC4yIDI5LjdWMjY4bDY4LjIgMjkuNXYtMTYuNmwtMTQuNC01Ljd2LTI2LjVsMTQuNC01Ljl2LTE2Ljl6bS00LjgtNjguNWgtMzUuNlYxODRINDAydi0xMi4yaDExYzguNiAxNS44IDEuMyAzNS4zLTE4LjYgMzUuMy0yMi41IDAtMjguMy0yNS4zLTE1LjUtMzcuN2wtMTEuNi0xMC42Yy0xNi4yIDE3LjUtMTIuMiA2My45IDI3LjEgNjMuOSAzNCAwIDQ0LjctMzUuOSAyOS4zLTY1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhZ2VsaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzEyLjdjLTU1LjEgMTM2LjctMTg3LjEgNTQtMTg3LjEgNTQtNDAuNSA4MS44LTEwNy40IDEzNC40LTE4NC42IDEzNC43LTE2LjEgMC0xNi42LTI0LjQgMC0yNC40IDY0LjQtLjMgMTIwLjUtNDIuNyAxNTcuMi0xMTAuMS00MS4xIDE1LjktMTE4LjYgMjcuOS0xNjEuNi04Mi4yIDEwOS00NC45IDE1OS4xIDExLjIgMTc4LjMgNDUuNSA5LjktMjQuNCAxNy01MC45IDIxLjYtNzkuNyAwIDAtMTM5LjcgMjEuOS0xNDkuNS05OC4xIDExOS4xLTQ3LjkgMTUyLjYgNzYuNyAxNTIuNiA3Ni43IDEuNi0xNi43IDMuMy01Mi42IDMuMy01My40IDAgMC0xMDYuMy03My43LTM4LjEtMTY1LjIgMTI0LjYgNDMgNjEuNCAxNjIuNCA2MS40IDE2Mi40LjUgMS42LjUgMjMuOCAwIDMzLjQgMCAwIDQ1LjItODkgMTM2LjQtNTcuNS00LjIgMTM0LTE0MS45IDEwNi40LTE0MS45IDEwNi40LTQuNCAyNy40LTExLjIgNTMuNC0yMCA3Ny41IDAgMCA4My05MS44IDE3Mi0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFsZmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NC45IDE5My45YzAtNDcuNC01NS4yLTQ0LjItOTUuNC0yOS44LTEuMyAzOS40LTIuNSA4MC43LTMgMTE5LjguNyAyLjggMi42IDYuMiAxNS4xIDYuMiAzNi44IDAgODMuNC00Mi44IDgzLjMtOTYuMnptLTE5NC41IDcyLjJjLjIgMCA2LjUtMi43IDExLjItMi43IDI2LjYgMCAyMC43IDQ0LjEtMTQuNCA0NC4xLTIxLjUgMC0zNy4xLTE4LjEtMzcuMS00MyAwLTQyIDQyLjktOTUuNiAxMDAuNy0xMjYuNSAxLTEyLjQgMy0yMiAxMC41LTI4LjIgMTEuMi05IDI2LjYtMy41IDI5LjUgMTEuMSA3Mi4yLTIyLjIgMTM1LjIgMSAxMzUuMiA3MiAwIDc3LjktNzkuMyAxNTIuNi0xNDAuMSAxMzguMi0uMSAzOS40LjkgNzQuNCAyLjcgMTAwdi4yYy4yIDMuNC42IDEyLjUtNS4zIDE5LjEtOS42IDEwLjYtMzMuNCAxMC0zNi40LTIyLjMtNC4xLTQ0LjQuMi0yMDYuMSAxLjQtMjQyLjUtMjEuNSAxNS01OC41IDUwLjMtNTguNSA3NS45LjIgMi41LjQgNCAuNiA0LjZ6TTggMTgxLjFzLS4xIDM3LjQgMzguNCAzNy40aDMwbDIyLjQgMjE3LjJzMCA0NC4zIDQ0LjcgNDQuM2gyODguOXM0NC43LS40IDQ0LjctNDQuM2wyMi40LTIxNy4yaDMwczM4LjQgMS4yIDM4LjQtMzcuNGMwIDAgLjEtMzcuNC0zOC40LTM3LjRoLTMwLjFjLTcuMy0yNS42LTMwLjItNzQuMy0xMTkuNC03NC4zaC0yOFY1MC4zcy0yLjctMTguNC0yMS4xLTE4LjRoLTg1LjhzLTIxLjEgMC0yMS4xIDE4LjR2MTkuMWgtMjguMXMtMTA1IDQuMi0xMjAuNSA3NC4zaC0yOVM4IDE0Mi41IDggMTgxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhdHJlb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDE5NC44YzAgMTAxLjMtODIuNCAxODMuOC0xODMuOCAxODMuOC0xMDEuNyAwLTE4NC40LTgyLjQtMTg0LjQtMTgzLjggMC0xMDEuNiA4Mi43LTE4NC4zIDE4NC40LTE4NC4zQzQyOS42IDEwLjUgNTEyIDkzLjIgNTEyIDE5NC44ek0wIDUwMS41aDkwdi00OTFIMHY0OTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyOTUuOWMtMy41IDE5LjItMTcuNCAxMDguNy0yMS41IDEzNC0uMyAxLjgtMSAyLjUtMyAyLjVIMTIuM2MtNy42IDAtMTMuMS02LjYtMTIuMS0xMy45TDU4LjggNDYuNmMxLjUtOS42IDEwLjEtMTYuOSAyMC0xNi45IDE1Mi4zIDAgMTY1LjEtMy43IDIwNCAxMS40IDYwLjEgMjMuMyA2NS42IDc5LjUgNDQgMTQwLjMtMjEuNSA2Mi42LTcyLjUgODkuNS0xNDAuMSA5MC4zLTQzLjQuNy02OS41LTctNzUuMyAyNC4yek0zNTcuMSAxNTJjLTEuOC0xLjMtMi41LTEuOC0zIDEuMy0yIDExLjQtNS4xIDIyLjUtOC44IDMzLjYtMzkuOSAxMTMuOC0xNTAuNSAxMDMuOS0yMDQuNSAxMDMuOS02LjEgMC0xMC4xIDMuMy0xMC45IDkuNC0yMi42IDE0MC40LTI3LjEgMTY5LjctMjcuMSAxNjkuNy0xIDcuMSAzLjUgMTIuOSAxMC42IDEyLjloNjMuNWM4LjYgMCAxNS43LTYuMyAxNy40LTE0LjkuNy01LjQtMS4xIDYuMSAxNC40LTkxLjMgNC42LTIyIDE0LjMtMTkuNyAyOS4zLTE5LjcgNzEgMCAxMjYuNC0yOC44IDE0Mi45LTExMi4zIDYuNS0zNC44IDQuNi03MS40LTIzLjgtOTIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVubnlBcmNhZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIxLjkxIDE2NC4yN2MtNC40OSAxOS40NS0xLjQgNi4wNi0xNS4xIDY1LjI5bDM5LjczLTEwLjYxYy0yMi4zNC00OS42MS0xNy4yOS0zOC40MS0yNC42My01NC42OHptLTIwNi4wOSA1MS4xMWMtMjAuMTkgNS40LTExLjMxIDMuMDMtMzkuNjMgMTAuNThsNC40NiA0Ni4xOWMyOC4xNy03LjU5IDIwLjYyLTUuNTcgMzQuODItOS4zNCA0Mi4zLTkuNzkgMzIuODUtNTYuNDIuMzUtNDcuNDN6bTMyNi4xNi0yNi4xOWwtNDUuNDctOTkuMmMtNS42OS0xMi4zNy0xOS40Ni0xOC44NC0zMi42Mi0xNS4zMy03MC4yNyAxOC43NS0zOC43MiAxMC4zMi0xMzUuNTkgMzYuMjNhMjcuNjE4IDI3LjYxOCAwIDAgMC0xOC44OSAxNy40MUMxNDQuMjYgMTEzLjI3IDAgMTUzLjc1IDAgMjI2LjY3YzAgMzMuNSAzMC42NyA2Ny4xMSA4MC45IDk1LjM3bDEuNzQgMTcuODhhMjcuODkxIDI3Ljg5MSAwIDAgMC0xNy43NyAyOC42N2w0LjMgNDQuNDhjMS4zOSAxNC4zMSAxMy40MyAyNS4yMSAyNy44IDI1LjIgNS4xOC0uMDEtMy4wMSAxLjc4IDEyMi41My0zMS43NiAxMi41Ny0zLjM3IDIxLjEyLTE1LjAyIDIwLjU4LTI4LjAyIDIxNi41OSA0NS41IDQwMS45OS01Ljk4IDM5OS44OS04NC44My4wMS0yOC4xNS0yMi4xOS02Ni41Ni05Ny45OS0xMDQuNDd6TTI1NS4xNCAyOTguM2wtMjEuOTEgNS44OC00OC40NCAxMi45MSAyLjQ2IDIzLjU1IDIwLjUzLTUuNTEgNC41MSA0NC41MS0xMTUuMzEgMzAuNzgtNC4zLTQ0LjUyIDIwLjAyLTUuMzUtMTEuMTEtMTE0LjY0LTIwLjEyIDUuMzktNC4zNS00NC41YzE3OC4xNS00Ny41NCAxNzAuMTgtNDYuNDIgMTg2LjIyLTQ2LjY1IDU2LjY2LTEuMTMgNjQuMTUgNzEuODQgNDIuNTUgMTA0LjQzYTg2LjcgODYuNyAwIDAgMS01MC43NSAzMy43MnptMTk5LjE4IDE2LjYybC0zLjg5LTM5LjQ5IDE0LjktMy45OC02LjYxLTE0LjY4LTU3Ljc2IDE1LjQyLTQuMSAxNy41NCAxOS4yLTUuMTIgNC4wNSAzOS41NC0xMTIuODUgMzAuMDctNC40Ni00NC40MyAyMC45OS01LjU5IDMzLjA4LTEyNi40Ny0xNy4xNSA0LjU2LTQuMi00NC40OGM5My4zNi0yNC45OSA2NS4wMS0xNy40MSAxMzUuNTktMzYuMjRsNjYuNjcgMTQ1LjQ3IDIwLjc5LTUuNTYgNC4zIDQ0LjQ4LTEwOC41NSAyOC45NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyYnl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDUuMzE0LDI4NC41NzhIMjQ2LjZWMzgzLjNoNTguNzExcTI0LjQyMywwLDM4LjE5My0xMy43N3QxMy43Ny0zNi4xMXEwLTIxLjgyNi0xNC4wMzItMzUuMzM1VDMwNS4zMTQsMjg0LjU3OFpNMTQ5LjQzNSwxMjguN0g5MC43MjR2OTguNzIzaDU4LjcxMXEyNC40MiwwLDM4LjE5LTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDI5LTM1LjMzOFQxNDkuNDM1LDEyOC43Wk0zNjYuNjQ3LDMySDgxLjM1M0E4MS40NDUsODEuNDQ1LDAsMCwwLDAsMTEzLjM1MlYzOTguNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsODEuMzUzLDQ4MEgzNjYuNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsNDQ4LDM5OC42NDdWMTEzLjM1MkE4MS40NDUsODEuNDQ1LDAsMCwwLDM2Ni42NDcsMzJabTYzLjYzNSwzNjYuNjQ3YTYzLjcwNiw2My43MDYsMCwwLDEtNjMuNjM1LDYzLjYzNUg4MS4zNTNhNjMuNzA2LDYzLjcwNiwwLDAsMS02My42MzUtNjMuNjM1VjExMy4zNTJBNjMuNzA2LDYzLjcwNiwwLDAsMSw4MS4zNTMsNDkuNzE4SDM2Ni42NDdhNjMuNzA2LDYzLjcwNiwwLDAsMSw2My42MzUsNjMuNjM0Wk0zMDUuMzE0LDEyOC43SDI0Ni42djk4LjcyM2g1OC43MTFxMjQuNDIzLDAsMzguMTkzLTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDMyLTM1LjMzOFQzMDUuMzE0LDEyOC43WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJpc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcwIDYzLjZDMzMxLjQgMjIuNiAyODAuNSAwIDIyNi42IDAgMTExLjkgMCAxOC41IDk2LjIgMTguNSAyMTQuNGMwIDc1LjEgNTcuOCAxNTkuOCA4Mi43IDE5Mi43QzEzNy44IDQ1NS41IDE5Mi42IDUxMiAyMjYuNiA1MTJjNDEuNiAwIDExMi45LTk0LjIgMTIwLjktMTA1IDI0LjYtMzMuMSA4Mi0xMTguMyA4Mi0xOTIuNiAwLTU2LjUtMjEuMS0xMTAuMS01OS41LTE1MC44ek0yMjYuNiA0OTMuOWMtNDIuNSAwLTE5MC0xNjcuMy0xOTAtMjc5LjQgMC0xMDcuNCA4My45LTE5Ni4zIDE5MC0xOTYuMyAxMDAuOCAwIDE4NC43IDg5IDE4NC43IDE5Ni4zLjEgMTEyLjEtMTQ3LjQgMjc5LjQtMTg0LjcgMjc5LjR6TTMzOCAyMDYuOGMwIDU5LjEtNTEuMSAxMDkuNy0xMTAuOCAxMDkuNy0xMDAuNiAwLTE1MC43LTEwOC4yLTkyLjktMTgxLjh2LjRjMCAyNC41IDIwLjEgNDQuNCA0NC44IDQ0LjQgMjQuNyAwIDQ0LjgtMTkuOSA0NC44LTQ0LjQgMC0xOC4yLTExLjEtMzMuOC0yNi45LTQwLjcgNzYuNi0xOS4yIDE0MSAzOS4zIDE0MSAxMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhhYnJpY2F0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzIDI2Mi4xbC0uMS0xM3MyMS43LTE5LjggMjEuMS0yMS4ybC05LjUtMjBjLS42LTEuNC0yOS41LS41LTI5LjUtLjVsLTkuNC05LjNzLjItMjguNS0xLjItMjkuMWwtMjAuMS05LjJjLTEuNC0uNi0yMC43IDIxLTIwLjcgMjFsLTEzLjEtLjJzLTIwLjUtMjEuNC0yMS45LTIwLjhsLTIwIDguM2MtMS40LjUuMiAyOC45LjIgMjguOWwtOS4xIDkuMXMtMjkuMi0uOS0yOS43LjRsLTguMSAxOS44Yy0uNiAxLjQgMjEgMjEgMjEgMjFsLjEgMTIuOXMtMjEuNyAxOS44LTIxLjEgMjEuMmw5LjUgMjBjLjYgMS40IDI5LjUuNSAyOS41LjVsOS40IDkuM3MtLjIgMzEuOCAxLjIgMzIuM2wyMC4xIDguM2MxLjQuNiAyMC43LTIzLjUgMjAuNy0yMy41bDEzLjEuMnMyMC41IDIzLjggMjEuOCAyMy4zbDIwLTcuNWMxLjQtLjYtLjItMzIuMS0uMi0zMi4xbDkuMS05LjFzMjkuMi45IDI5LjctLjVsOC4xLTE5LjhjLjctMS4xLTIwLjktMjAuNy0yMC45LTIwLjd6bS00NC45LTguN2MuNyAxNy4xLTEyLjggMzEuNi0zMC4xIDMyLjQtMTcuMy44LTMyLjEtMTIuNS0zMi44LTI5LjYtLjctMTcuMSAxMi44LTMxLjYgMzAuMS0zMi4zIDE3LjMtLjggMzIuMSAxMi41IDMyLjggMjkuNXptMjAxLjItMzcuOWwtOTctOTctLjEuMWMtNzUuMS03My4zLTE5NS40LTcyLjgtMjY5LjggMS42LTUwLjkgNTEtMjcuOCAyNy45LTk1LjcgOTUuMy0yMi4zIDIyLjMtMjIuMyA1OC43IDAgODEgNjkuOSA2OS40IDQ2LjQgNDYgOTcuNCA5N2wuMS0uMWM3NS4xIDczLjMgMTk1LjQgNzIuOSAyNjkuOC0xLjYgNTEtNTAuOSAyNy45LTI3LjkgOTUuMy05NS4zIDIyLjMtMjIuMyAyMi4zLTU4LjcgMC04MXpNMTQwLjQgMzYzLjhjLTU5LjYtNTkuNS01OS42LTE1NiAwLTIxNS41IDU5LjUtNTkuNiAxNTYtNTkuNSAyMTUuNiAwIDU5LjUgNTkuNSA1OS42IDE1NiAwIDIxNS42LTU5LjYgNTkuNS0xNTYgNTkuNC0yMTUuNi0uMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvZW5peEZyYW1ld29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuOSAzNDQuM2MzLjgtLjEgMjIuOC0xLjQgMjUuNi0yLjItMi40LTIuNi00My42LTEtNjgtNDkuNi00LjMtOC42LTcuNS0xNy42LTYuNC0yNy42IDIuOS0yNS41IDMyLjktMzAgNTItMTguNSAzNiAyMS42IDYzLjMgOTEuMyAxMTMuNyA5Ny41IDM3IDQuNSA4NC42LTE3IDEwOC4yLTQ1LjQtLjYtLjEtLjgtLjItMS0uMS0uNC4xLS44LjItMS4xLjMtMzMuMyAxMi4xLTk0LjMgOS43LTEzNC43LTE0LjgtMzcuNi0yMi44LTUzLjEtNTguNy01MS44LTc0LjYgMS44LTIxLjMgMjIuOS0yMy4yIDM1LjktMTkuNiAxNC40IDMuOSAyNC40IDE3LjYgMzguOSAyNy40IDE1LjYgMTAuNCAzMi45IDEzLjcgNTEuMyAxMC4zIDE0LjktMi43IDM0LjQtMTIuMyAzNi41LTE0LjUtMS4xLS4xLTEuOC0uMS0yLjUtLjItNi4yLS42LTEyLjQtLjgtMTguNS0xLjdDMjc5LjggMTk0LjUgMjYyLjEgNDcuNCAxMzguNSAzNy45IDk0LjIgMzQuNSAzOS4xIDQ2IDIuMiA3Mi45Yy0uOC42LTEuNSAxLjItMi4yIDEuOC4xLjIuMS4zLjIuNS44IDAgMS42LS4xIDIuNC0uMiA2LjMtMSAxMi41LS44IDE4LjcuMyAyMy44IDQuMyA0Ny43IDIzLjEgNTUuOSA3Ni41IDUuMyAzNC4zLS43IDUwLjggOCA4Ni4xIDE5IDc3LjEgOTEgMTA3LjYgMTI3LjcgMTA2LjR6TTc1LjMgNjQuOWMtLjktMS0uOS0xLjItMS4zLTIgMTIuMS0yLjYgMjQuMi00LjEgMzYuNi00LjgtMS4xIDE0LjctMjIuMiAyMS4zLTM1LjMgNi44em0xOTYuOSAzNTAuNWMtNDIuOCAxLjItOTItMjYuNy0xMjMuNS02MS40LTQuNi01LTE2LjgtMjAuMi0xOC42LTIzLjRsLjQtLjRjNi42IDQuMSAyNS43IDE4LjYgNTQuOCAyNyAyNC4yIDcgNDguMSA2LjMgNzEuNi0zLjMgMjIuNy05LjMgNDEtLjUgNDMuMSAyLjktMTguNSAzLjgtMjAuMSA0LjQtMjQgNy45LTUuMSA0LjQtNC42IDExLjcgNyAxNy4yIDI2LjIgMTIuNCA2My0yLjggOTcuMiAyNS40IDIuNCAyIDguMSA3LjggMTAuMSAxMC43LS4xLjItLjMuMy0uNC41LTQuOC0xLjUtMTYuNC03LjUtNDAuMi05LjMtMjQuNy0yLTQ2LjMgNS4zLTc3LjUgNi4yem0xNzQuOC0yNTJjMTYuNC01LjIgNDEuMy0xMy40IDY2LjUtMy4zIDE2LjEgNi41IDI2LjIgMTguNyAzMi4xIDM0LjYgMy41IDkuNCA1LjEgMTkuNyA1LjEgMjguNy0uMiAwLS40IDAtLjYuMS0uMi0uNC0uNC0uOS0uNS0xLjMtNS0yMi0yOS45LTQzLjgtNjcuNi0yOS45LTUwLjIgMTguNi0xMzAuNCA5LjctMTc2LjktNDgtLjctLjktMi40LTEuNy0xLjMtMy4yLjEtLjIgMi4xLjYgMyAxLjMgMTguMSAxMy40IDM4LjMgMjEuOSA2MC4zIDI2LjIgMzAuNSA2LjEgNTQuNiAyLjkgNzkuOS01LjJ6bTEwMi43IDExNy41Yy0zMi40LjItMzMuOCA1MC4xLTEwMy42IDY0LjQtMTguMiAzLjctMzguNyA0LjYtNDQuOSA0LjJ2LS40YzIuOC0xLjUgMTQuNy0yLjYgMjkuNy0xNi42IDcuOS03LjMgMTUuMy0xNS4xIDIyLjgtMjIuOSAxOS41LTIwLjIgNDEuNC00Mi4yIDgxLjktMzkgMjMuMSAxLjggMjkuMyA4LjIgMzYuMSAxMi43LjMuMi40LjUuNy45LS41IDAtLjcuMS0uOSAwLTctMi43LTE0LjMtMy4zLTIxLjgtMy4zem0tMTIuMy0yNC4xYy0uMS4yLS4xLjQtLjIuNi0yOC45LTQuNC00OC03LjktNjguNSA0LTE3IDkuOS0zMS40IDIwLjUtNjIgMjQuNC0yNy4xIDMuNC00NS4xIDIuNC02Ni4xLTgtLjMtLjItLjYtLjQtMS0uNiAwLS4yLjEtLjMuMS0uNSAyNC45IDMuOCAzNi40IDUuMSA1NS41LTUuOCAyMi4zLTEyLjkgNDAuMS0yNi42IDcxLjMtMzEgMjkuNi00LjEgNTEuMyAyLjUgNzAuOSAxNi45ek0yNjguNiA5Ny4zYy0uNi0uNi0xLjEtMS4yLTIuMS0yLjMgNy42IDAgMjkuNy0xLjIgNTMuNCA4LjQgMTkuNyA4IDMyLjIgMjEgNTAuMiAzMi45IDExLjEgNy4zIDIzLjQgOS4zIDM2LjQgOC4xIDQuMy0uNCA4LjUtMS4yIDEyLjgtMS43LjQtLjEuOSAwIDEuNS4zLS42LjQtMS4yLjktMS44IDEuMi04LjEgNC0xNi43IDYuMy0yNS42IDcuMS0yNi4xIDIuNi01MC4zLTMuNy03My40LTE1LjQtMTkuMy05LjktMzYuNC0yMi45LTUxLjQtMzguNnpNNjQwIDMzNS43Yy0zLjUgMy4xLTIyLjcgMTEuNi00Mi43IDUuMy0xMi4zLTMuOS0xOS41LTE0LjktMzEuNi0yNC4xLTEwLTcuNi0yMC45LTcuOS0yOC4xLTguNC42LS44LjktMS4yIDEuMi0xLjQgMTQuOC05LjIgMzAuNS0xMi4yIDQ3LjMtNi41IDEyLjUgNC4yIDE5LjIgMTMuNSAzMC40IDI0LjIgMTAuOCAxMC40IDIxIDkuOSAyMy4xIDEwLjUuMS0uMS4yIDAgLjQuNHptLTIxMi41IDEzN2MyLjIgMS4yIDEuNiAxLjUgMS41IDItMTguNS0xLjQtMzMuOS03LjYtNDYuOC0yMi4yLTIxLjgtMjQuNy00MS43LTI3LjktNDguNi0yOS43LjUtLjIuOC0uNCAxLjEtLjQgMTMuMS4xIDI2LjEuNyAzOC45IDMuOSAyNS4zIDYuNCAzNSAyNS40IDQxLjYgMzUuMyAzLjIgNC44IDcuMyA4LjMgMTIuMyAxMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9lbml4U3F1YWRyb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjMuMzhDMTQyLjQ5IDI3LjI1IDIwMS41NSA3LjMxIDI2MC41MSA4LjgxYzI5LjU4LS4zOCA1OS4xMSA1LjM3IDg2LjkxIDE1LjMzLTI0LjEzLTQuNjMtNDktNi4zNC03My4zOC0yLjQ1QzIzMS4xNyAyNyAxOTEgNDguODQgMTYyLjIxIDgwLjg3YzUuNjctMSAxMC43OC0zLjY3IDE2LTUuODYgMTguMTQtNy44NyAzNy40OS0xMy4yNiA1Ny4yMy0xNC44MyAxOS43NC0yLjEzIDM5LjY0LS40MyA1OS4yOCAxLjkyLTE0LjQyIDIuNzktMjkuMTIgNC41Ny00MyA5LjU5LTM0LjQzIDExLjA3LTY1LjI3IDMzLjE2LTg2LjMgNjIuNjMtMTMuOCAxOS43MS0yMy42MyA0Mi44Ni0yNC42NyA2Ny4xMy0uMzUgMTYuNDkgNS4yMiAzNC44MSAxOS44MyA0NGE1My4yNyA1My4yNyAwIDAgMCAzNy41MiA2Ljc0YzE1LjQ1LTIuNDYgMzAuMDctOC42NCA0My42LTE2LjMzIDExLjUyLTYuODIgMjIuNjctMTQuNTUgMzItMjQuMjUgMy43OS0zLjIyIDIuNTMtOC40NSAyLjYyLTEyLjc5LTIuMTItLjM0LTQuMzgtMS4xMS02LjMuM2EyMDMgMjAzIDAgMCAxLTM1LjgyIDE1LjM3Yy0yMCA2LjE3LTQyLjE2IDguNDYtNjIuMS43OCAxMi43OSAxLjczIDI2LjA2LjMxIDM3Ljc0LTUuNDQgMjAuMjMtOS43MiAzNi44MS0yNS4yIDU0LjQ0LTM4Ljc3YTUyNi41NyA1MjYuNTcgMCAwIDEgODguOS01NS4zMWMyNS43MS0xMiA1Mi45NC0yMi43OCA4MS41Ny0yNC4xMi0xNS42MyAxMy43Mi0zMi4xNSAyNi41Mi00Ni43OCA0MS4zOC0xNC41MSAxNC0yNy40NiAyOS41LTQwLjExIDQ1LjE4LTMuNTIgNC42LTguOTUgNi45NC0xMy41OCAxMC4xNmExNTAuNyAxNTAuNyAwIDAgMC01MS44OSA2MC4xYy05LjMzIDE5LjY4LTE0LjUgNDEuODUtMTEuNzcgNjMuNjUgMS45NCAxMy42OSA4LjcxIDI3LjU5IDIwLjkgMzQuOTEgMTIuOSA4IDI5LjA1IDguMDcgNDMuNDggNS4xIDMyLjgtNy40NSA2MS40My0yOC44OSA4MS01NS44NCAyMC40NC0yNy41MiAzMC41Mi02Mi4yIDI5LjE2LTk2LjM1LS41Mi03LjUtMS41Ny0xNS0xLjY2LTIyLjQ5IDggMTkuNDggMTQuODIgMzkuNzEgMTYuNjUgNjAuODMgMiAxNC4yOC43NSAyOC43Ni0xLjYyIDQyLjktMS45MSAxMS01LjY3IDIxLjUxLTcuNzggMzIuNDNhMTY1IDE2NSAwIDAgMCAzOS4zNC04MS4wNyAxODMuNjQgMTgzLjY0IDAgMCAwLTE0LjIxLTEwNC42NGMyMC43OCAzMiAzMi4zNCA2OS41OCAzNS43MSAxMDcuNDguNDkgMTIuNzMuNDkgMjUuNTEgMCAzOC4yM0EyNDMuMjEgMjQzLjIxIDAgMCAxIDQ4MiAzNzEuMzRjLTI2LjEyIDQ3LjM0LTY4IDg1LjYzLTExNy4xOSAxMDgtNzguMjkgMzYuMjMtMTc0LjY4IDMxLjMyLTI0OC0xNC42OEEyNDguMzQgMjQ4LjM0IDAgMCAxIDI1LjM2IDM2NiAyMzguMzQgMjM4LjM0IDAgMCAxIDAgMjczLjA4di0zMS4zNEMzLjkzIDE3MiA0MC44NyAxMDUuODIgOTYgNjMuMzhtMjIyIDgwLjMzYTc5LjEzIDc5LjEzIDAgMCAwIDE2LTQuNDhjNS0xLjc3IDkuMjQtNS45NCAxMC4zMi0xMS4yMi04Ljk2IDQuOTktMTcuOTggOS45Mi0yNi4zMiAxNS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDEwNC41YzE3MS40IDAgMzAzLjIgNzIuMiAzMDMuMiAxNTEuNVM0OTEuMyA0MDcuNSAzMjAgNDA3LjVjLTE3MS40IDAtMzAzLjItNzIuMi0zMDMuMi0xNTEuNVMxNDguNyAxMDQuNSAzMjAgMTA0LjVtMC0xNi44QzE0My4zIDg3LjcgMCAxNjMgMCAyNTZzMTQzLjMgMTY4LjMgMzIwIDE2OC4zUzY0MCAzNDkgNjQwIDI1NiA0OTYuNyA4Ny43IDMyMCA4Ny43ek0yMTguMiAyNDIuNWMtNy45IDQwLjUtMzUuOCAzNi4zLTcwLjEgMzYuM2wxMy43LTcwLjZjMzggMCA2My44LTQuMSA1Ni40IDM0LjN6TTk3LjQgMzUwLjNoMzYuN2w4LjctNDQuOGM0MS4xIDAgNjYuNiAzIDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN2gtNzAuN0w5Ny40IDM1MC4zem0xODUuNy0yMTMuNmgzNi41bC04LjcgNDQuOGMzMS41IDAgNjAuNy0yLjMgNzQuOCAxMC43IDE0LjggMTMuNiA3LjcgMzEtOC4zIDExMy4xaC0zN2MxNS40LTc5LjQgMTguMy04NiAxMi43LTkyLTUuNC01LjgtMTcuNy00LjYtNDcuNC00LjZsLTE4LjggOTYuNmgtMzYuNWwzMi43LTE2OC42ek01MDUgMjQyLjVjLTggNDEuMS0zNi43IDM2LjMtNzAuMSAzNi4zbDEzLjctNzAuNmMzOC4yIDAgNjMuOC00LjEgNTYuNCAzNC4zek0zODQuMiAzNTAuM0g0MjFsOC43LTQ0LjhjNDMuMiAwIDY3LjEgMi41IDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN0g0MTdsLTMyLjggMTY4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQgMjQ2Yy0zLjItMi02LjMtMi45LTEwLjEtMi45LTYuNiAwLTEyLjYgMy4yLTE5LjMgMy43bDEuNyA0Ljl6bTEzNS45IDE5Ny45Yy0xOSAwLTY0LjEgOS41LTc5LjkgMTkuOGw2LjkgNDUuMWMzNS43IDYuMSA3MC4xIDMuNiAxMDYtOS44LTQuOC0xMC0yMy41LTU1LjEtMzMtNTUuMXpNMzQwLjggMTc3YzYuNiAyLjggMTEuNSA5LjIgMjIuNyAyMi4xIDItMS40IDcuNS01LjIgNy41LTguNiAwLTQuOS0xMS44LTEzLjItMTMuMi0yMyAxMS4yLTUuNyAyNS4yLTYgMzcuNi04LjkgNjguMS0xNi40IDExNi4zLTUyLjkgMTQ2LjgtMTE2LjdDNTQ4LjMgMjkuMyA1NTQgMTYuMSA1NTQuNiAybC0yIDIuNmMtMjguNCA1MC0zMyA2My4yLTgxLjMgMTAwLTMxLjkgMjQuNC02OS4yIDQwLjItMTA2LjYgNTQuNmwtNi4zLS4zdi0yMS44Yy0xOS42IDEuNi0xOS43LTE0LjYtMzEuNi0yMy0xOC43IDIwLjYtMzEuNiA0MC44LTU4LjkgNTEuMS0xMi43IDQuOC0xOS42IDEwLTI1LjkgMjEuOCAzNC45LTE2LjQgOTEuMi0xMy41IDk4LjgtMTB6TTU1NS41IDBsLS42IDEuMS0uMy45LjYtLjZ6bS01OS4yIDM4Mi4xYy0zMy45LTU2LjktNzUuMy0xMTguNC0xNTAtMTE1LjVsLS4zLTZjLTEuMS0xMy41IDMyLjggMy4yIDM1LjEtMzFsLTE0LjQgNy4yYy0xOS44LTQ1LjctOC42LTU0LjMtNjUuNS01NC4zLTE0LjcgMC0yNi43IDEuNy00MS40IDQuNiAyLjkgMTguNiAyLjIgMzYuNy0xMC45IDUwLjNsMTkuNSA1LjVjLTEuNyAzLjItMi45IDYuMy0yLjkgOS44IDAgMjEgNDIuOCAyLjkgNDIuOCAzMy42IDAgMTguNC0zNi44IDYwLjEtNTQuOSA2MC4xLTggMC01My43LTUwLTUzLjQtNjAuMWwuMy00LjYgNTIuMy0xMS41YzEzLTIuNiAxMi4zLTIyLjctMi45LTIyLjctMy43IDAtNDMuMSA5LjItNDkuNCAxMC42LTItNS4yLTcuNS0xNC4xLTEzLjgtMTQuMS0zLjIgMC02LjMgMy4yLTkuNSA0LTkuMiAyLjYtMzEgMi45LTIxLjUgMjAuMUwxNS45IDI5OC41Yy01LjUgMS4xLTguOSA2LjMtOC45IDExLjggMCA2IDUuNSAxMC45IDExLjUgMTAuOSA4IDAgMTMxLjMtMjguNCAxNDcuNC0zMi4yIDIuNiAzLjIgNC42IDYuMyA3LjggOC42IDIwLjEgMTQuNCA1OS44IDg1LjkgNzYuNCA4NS45IDI0LjEgMCA1OC0yMi40IDcxLjMtNDEuOSAzLjItNC4zIDYuOS03LjUgMTIuNC02LjkuNiAxMy44LTMxLjYgMzQuMi0zMyA0My43LTEuNCAxMC4yLTEgMzUuMi0uMyA0MS4xIDI2LjcgOC4xIDUyLTMuNiA3Ny45LTIuOSA0LjMtMjEgMTAuNi00MS45IDkuOC02My41bC0uMy05LjVjLTEuNC0zNC4yLTEwLjktMzguNS0zNC44LTU4LjYtMS4xLTEuMS0yLjYtMi42LTMuNy00IDIuMi0xLjQgMS4xLTEgNC42LTEuNyA4OC41IDAgNTYuMyAxODMuNiAxMTEuNSAyMjkuOSAzMy4xLTE1IDcyLjUtMjcuOSAxMDMuNS00Ny4yLTI5LTI1LjYtNTIuNi00NS43LTcyLjctNzkuOXptLTE5Ni4yIDQ2LjF2MjcuMmwxMS44LTMuNC0yLjktMjMuOHptLTY4LjctMTUwLjRsMjQuMSA2MS4yIDIxLTEzLjgtMzEuMy01MC45em04NC40IDE1NC45bDIgMTIuNGM5LTEuNSA1OC40LTYuNiA1OC40LTE0LjEgMC0xLjQtLjYtMy4yLS45LTQuNi0yNi44IDAtMzYuOSAzLjgtNTkuNSA2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckhhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjQuOWMtODAuOCA1My42LTg5LjQgOTIuNS05Ni40IDEwNC40LTYuNyAxMi4yLTExLjcgNjAuMy0yMy4zIDgzLjYtMTEuNyAyMy42LTU0LjIgNDIuMi02Ni4xIDUwLTExLjcgNy44LTI4LjMgMzguMS00MS45IDY0LjItMTA4LjEtNC40LTE2Ny40IDM4LjgtMjU5LjIgOTMuNiAyOS40LTkuNyA0My4zLTE2LjcgNDMuMy0xNi43IDk0LjItMzYgMTM5LjMtNjguMyAyODEuMS00OS4yIDEuMSAwIDEuOS42IDIuOC44IDMuOSAyLjIgNS4zIDYuOSAzLjEgMTAuOGwtNTMuOSA5NS44Yy0yLjUgNC43LTcuOCA3LjItMTMuMSA2LjEtMTI2LjgtMjMuOC0yMjYuOSAxNy4zLTMxOC45IDE4LjZDMjQuMSA0ODggMCA0NTMuNCAwIDQ1MS44YzAtMS4xLjYtMS43IDEuNy0xLjcgMCAwIDM4LjMgMCAxMDMuMS0xNS4zQzE3OC40IDI5NC41IDI0NCAyNDUuNCAzMTUuNCAyNDUuNGMwIDAgNzEuNyAwIDkwLjYgNjEuOSAyMi44LTM5LjcgMjguMy00OS4yIDI4LjMtNDkuMiA1LjMtOS40IDM1LTc3LjIgODYuNC0xNDEuNCA1MS41LTY0IDkwLjQtNzkuOSAxMTkuMy05MS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWVkUGlwZXJQcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuMyAxNzQuNmMwIDIxLjEtMTQuMiAzOC4xLTMxLjcgMzguMS03LjEgMC0xMi44LTEuMi0xNy4yLTMuN3YtNjhjNC40LTIuNyAxMC4xLTQuMiAxNy4yLTQuMiAxNy41IDAgMzEuNyAxNi45IDMxLjcgMzcuOHptNTIuNiA2N2MtNy4xIDAtMTIuOCAxLjUtMTcuMiA0LjJ2NjhjNC40IDIuNSAxMC4xIDMuNyAxNy4yIDMuNyAxNy40IDAgMzEuNy0xNi45IDMxLjctMzcuOCAwLTIxLjEtMTQuMy0zOC4xLTMxLjctMzguMXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xODUgMjU1LjFjNDEgMCA3NC4yLTM1LjYgNzQuMi03OS42IDAtNDQtMzMuMi03OS42LTc0LjItNzkuNi0xMiAwLTI0LjEgMy4yLTM0LjYgOC44aC00NS43VjMxMWw1MS44LTEwLjF2LTUwLjZjOC42IDMuMSAxOC4xIDQuOCAyOC41IDQuOHptMTU4LjQgMjUuM2MwLTQ0LTMzLjItNzkuNi03My45LTc5LjYtMy4yIDAtNi40LjItOS42LjctMy43IDEyLjUtMTAuMSAyMy44LTE5LjIgMzMuNC0xMy44IDE1LTMyLjIgMjMuOC01MS44IDI0LjhWNDE2bDUxLjgtMTAuMXYtNTAuNmM4LjYgMy4yIDE4LjIgNC43IDI4LjcgNC43IDQwLjggMCA3NC0zNS42IDc0LTc5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlclNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0MTlMMCA0NzkuMmwuOC0zMjhDLjggODUuMyA1NCAzMiAxMjAgMzJoMzI3LjJjLTkzIDI4LjktMTg5LjkgOTQuMi0yNTMuOSAxNjguNkMxMjIuNyAyODIgODIuNiAzMzggMzIgNDE5TTQ0OCAzMlMzMDUuMiA5OC44IDI2MS42IDE5OS4xYy0yMy4yIDUzLjYtMjguOSAxMTguMS03MSAxNTguNi0yOC45IDI3LjgtNjkuOCAzOC4yLTEwNS4zIDU2LjMtMjMuMiAxMi02Ni40IDQwLjUtODQuOSA2NmgzMjguNGM2NiAwIDExOS4zLTUzLjMgMTE5LjMtMTE5LjItLjEgMC0uMS0zMjguOC0uMS0zMjguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGllZFBpcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NS45MywyMy4yQzQyOS4yMywzMCwzODcuNzksNTEuNjksMzQxLjM1LDkwLjY2QTIwNiwyMDYsMCwwLDAsMjQwLDY0QzEyNS4xMyw2NCwzMiwxNTcuMTIsMzIsMjcyczkzLjEzLDIwOCwyMDgsMjA4LDIwOC05My4xMywyMDgtMjA4YTIwNy4yNSwyMDcuMjUsMCwwLDAtNTguNzUtMTQ0LjgxLDE1NS4zNSwxNTUuMzUsMCwwLDAtMTcsMjcuNEExNzYuMTYsMTc2LjE2LDAsMCwxLDQxNy4xLDI3MmMwLDk3LjY2LTc5LjQ0LDE3Ny4xMS0xNzcuMDksMTc3LjExYTE3NS44MSwxNzUuODEsMCwwLDEtODcuNjMtMjMuNGM4Mi45NC0xMDcuMzMsMTUwLjc5LTM3Ljc3LDE4NC4zMS0yMjYuNjUsNS43OS0zMi42MiwyOC05NC4yNiwxMjYuMjMtMTYwLjE4QzQ3MSwzMy40NSw0NjUuMzUsMjAuOCw0NTUuOTMsMjMuMlpNMTI1LDQwNi40QTE3Ni42NiwxNzYuNjYsMCwwLDEsNjIuOSwyNzJDNjIuOSwxNzQuMzQsMTQyLjM1LDk0LjksMjQwLDk0LjlhMTc0LDE3NCwwLDAsMSw3Ni42MywxNy43NUMyNTAuNjQsMTc0Ljc2LDE4OS43NywyNjUuNTIsMTI1LDQwNi40WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaW50ZXJlc3RQIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNCA2LjVDMTAxLjQgNi41IDAgNzQuOSAwIDE4NS42IDAgMjU2IDM5LjYgMjk2IDYzLjYgMjk2YzkuOSAwIDE1LjYtMjcuNiAxNS42LTM1LjQgMC05LjMtMjMuNy0yOS4xLTIzLjctNjcuOCAwLTgwLjQgNjEuMi0xMzcuNCAxNDAuNC0xMzcuNCA2OC4xIDAgMTE4LjUgMzguNyAxMTguNSAxMDkuOCAwIDUzLjEtMjEuMyAxNTIuNy05MC4zIDE1Mi43LTI0LjkgMC00Ni4yLTE4LTQ2LjItNDMuOCAwLTM3LjggMjYuNC03NC40IDI2LjQtMTEzLjQgMC02Ni4yLTkzLjktNTQuMi05My45IDI1LjggMCAxNi44IDIuMSAzNS40IDkuNiA1MC43LTEzLjggNTkuNC00MiAxNDcuOS00MiAyMDkuMSAwIDE4LjkgMi43IDM3LjUgNC41IDU2LjQgMy40IDMuOCAxLjcgMy40IDYuOSAxLjUgNTAuNC02OSA0OC42LTgyLjUgNzEuNC0xNzIuOCAxMi4zIDIzLjQgNDQuMSAzNiA2OS4zIDM2IDEwNi4yIDAgMTUzLjktMTAzLjUgMTUzLjktMTk2LjhDMzg0IDcxLjMgMjk4LjIgNi41IDIwNCA2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbnRlcmVzdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDE1NC40YzkuOC0xNi40IDIyLjQtNDAgMjcuNC01OS4zIDMtMTEuNSAxNS4zLTU4LjQgMTUuMy01OC40IDggMTUuMyAzMS40IDI4LjIgNTYuMyAyOC4yIDc0LjEgMCAxMjcuNC02OC4xIDEyNy40LTE1Mi43IDAtODEuMS02Ni4yLTE0MS44LTE1MS40LTE0MS44LTEwNiAwLTE2Mi4yIDcxLjEtMTYyLjIgMTQ4LjYgMCAzNiAxOS4yIDgwLjggNDkuOCA5NS4xIDQuNyAyLjIgNy4xIDEuMiA4LjItMy4zLjgtMy40IDUtMjAuMSA2LjgtMjcuOC42LTIuNS4zLTQuNi0xLjctNy0xMC4xLTEyLjMtMTguMy0zNC45LTE4LjMtNTYgMC01NC4yIDQxLTEwNi42IDExMC45LTEwNi42IDYwLjMgMCAxMDIuNiA0MS4xIDEwMi42IDk5LjkgMCA2Ni40LTMzLjUgMTEyLjQtNzcuMiAxMTIuNC0yNC4xIDAtNDIuMS0xOS45LTM2LjQtNDQuNCA2LjktMjkuMiAyMC4zLTYwLjcgMjAuMy04MS44IDAtNTMtNzUuNS00NS43LTc1LjUgMjUgMCAyMS43IDcuMyAzNi41IDcuMyAzNi41LTMxLjQgMTMyLjgtMzYuMSAxMzQuNS0yOS42IDE5Mi42bDIuMi44SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbnRlcmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OC0yNS42IDAtNTAuMi0zLjktNzMuNC0xMS4xIDEwLjEtMTYuNSAyNS4yLTQzLjUgMzAuOC02NSAzLTExLjYgMTUuNC01OSAxNS40LTU5IDguMSAxNS40IDMxLjcgMjguNSA1Ni44IDI4LjUgNzQuOCAwIDEyOC43LTY4LjggMTI4LjctMTU0LjMgMC04MS45LTY2LjktMTQzLjItMTUyLjktMTQzLjItMTA3IDAtMTYzLjkgNzEuOC0xNjMuOSAxNTAuMSAwIDM2LjQgMTkuNCA4MS43IDUwLjMgOTYuMSA0LjcgMi4yIDcuMiAxLjIgOC4zLTMuMy44LTMuNCA1LTIwLjMgNi45LTI4LjEuNi0yLjUuMy00LjctMS43LTcuMS0xMC4xLTEyLjUtMTguMy0zNS4zLTE4LjMtNTYuNiAwLTU0LjcgNDEuNC0xMDcuNiAxMTItMTA3LjYgNjAuOSAwIDEwMy42IDQxLjUgMTAzLjYgMTAwLjkgMCA2Ny4xLTMzLjkgMTEzLjYtNzggMTEzLjYtMjQuMyAwLTQyLjYtMjAuMS0zNi43LTQ0LjggNy0yOS41IDIwLjUtNjEuMyAyMC41LTgyLjYgMC0xOS0xMC4yLTM0LjktMzEuNC0zNC45LTI0LjkgMC00NC45IDI1LjctNDQuOSA2MC4yIDAgMjIgNy40IDM2LjggNy40IDM2LjhzLTI0LjUgMTAzLjgtMjkgMTIzLjJjLTUgMjEuNC0zIDUxLjYtLjkgNzEuMkM2NS40IDQ1MC45IDAgMzYxLjEgMCAyNTYgMCAxMTkgMTExIDggMjQ4IDhzMjQ4IDExMSAyNDggMjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGF5c3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzAuOSAzNzIuM2MtMTEuMyAxNC4yLTM4LjggMjQuMy0zOC44IDI0LjNMMzI3IDQ3MC4ydi01NC4zbDE1MC45LTUzLjhjMTcuMS02LjEgMTkuOC0xNC44IDUuOC0xOS40LTEzLjktNC42LTM5LjEtMy4zLTU2LjIgMi45TDMyNyAzODEuMXYtNTYuNGMyMy4yLTcuOCA0Ny4xLTEzLjYgNzUuNy0xNi44IDQwLjktNC41IDkwLjkuNiAxMzAuMiAxNS41IDQ0LjIgMTQgNDkuMiAzNC43IDM4IDQ4Ljl6bS0yMjQuNC05Mi41di0xMzljMC0xNi4zLTMtMzEuMy0xOC4zLTM1LjYtMTEuNy0zLjgtMTkgNy4xLTE5IDIzLjR2MzQ3LjlsLTkzLjgtMjkuOFYzMmMzOS45IDcuNCA5OCAyNC45IDEyOS4yIDM1LjRDNDI0LjEgOTQuNyA0NTEgMTI4LjcgNDUxIDIwNS4yYzAgNzQuNS00NiAxMDIuOC0xMDQuNSA3NC42ek00My4yIDQxMC4yYy00NS40LTEyLjgtNTMtMzkuNS0zMi4zLTU0LjggMTkuMS0xNC4yIDUxLjctMjQuOSA1MS43LTI0LjlsMTM0LjUtNDcuOHY1NC41bC05Ni44IDM0LjZjLTE3LjEgNi4xLTE5LjcgMTQuOC01LjggMTkuNCAxMy45IDQuNiAzOS4xIDMuMyA1Ni4yLTIuOWw0Ni40LTE2Ljl2NDguOGMtNTEuNiA5LjMtMTAxLjQgNy4zLTE1My45LTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcm9kdWN0SHVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjYuMyAyMTguOGMwIDIwLjUtMTYuNyAzNy4yLTM3LjIgMzcuMmgtNzAuM3YtNzQuNGg3MC4zYzIwLjUgMCAzNy4yIDE2LjcgMzcuMiAzNy4yek01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xMjguMS0zNy4yYzAtNDcuOS0zOC45LTg2LjgtODYuOC04Ni44SDE2OS4ydjI0OGg0OS42di03NC40aDcwLjNjNDcuOSAwIDg2LjgtMzguOSA4Ni44LTg2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDMyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgMTExLjlsLTk4LjUtOSAxNC0zMy40YzEwLjQtMjMuNS0xMC44LTQwLjQtMjguNy0zN0wyMi41IDc2LjljLTE1LjEgMi43LTI2IDE4LjMtMjEuNCAzNi42bDEwNS4xIDM0OC4zYzYuNSAyMS4zIDM2LjcgMjQuMiA0Ny43IDdsMzUuMy04MC44IDIzNS4yLTIzMS4zYzE2LjQtMTYuOCA0LjMtNDIuOS0xNy40LTQ0Ljh6TTI5Ny42IDUzLjZjNS4xLS43IDcuNSAyLjUgNS4yIDcuNEwyODYgMTAwLjkgMTA4LjYgODQuNmwxODktMzF6TTIyLjcgMTA3LjljLTMuMS01LjEgMS0xMCA2LjEtOS4xbDI0OC43IDIyLjctOTYuOSAyMzAuN0wyMi43IDEwNy45ek0xMzYgNDU2LjRjLTIuNiA0LTcuOSAzLjEtOS40LTEuMkw0My41IDE3OS43bDEyNy43IDE5Ny42Yy03IDE1LTM1LjIgNzkuMS0zNS4yIDc5LjF6bTI3Mi44LTMxNC41TDIxMC4xIDMzNy4zbDg5LjctMjEzLjcgMTA2LjQgOS43YzQgMS4xIDUuNyA1LjMgMi42IDguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHl0aG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS44IDIwMC41Yy03LjctMzAuOS0yMi4zLTU0LjItNTMuNC01NC4yaC00MC4xdjQ3LjRjMCAzNi44LTMxLjIgNjcuOC02Ni44IDY3LjhIMTcyLjdjLTI5LjIgMC01My40IDI1LTUzLjQgNTQuM3YxMDEuOGMwIDI5IDI1LjIgNDYgNTMuNCA1NC4zIDMzLjggOS45IDY2LjMgMTEuNyAxMDYuOCAwIDI2LjktNy44IDUzLjQtMjMuNSA1My40LTU0LjN2LTQwLjdIMjI2LjJ2LTEzLjZoMTYwLjJjMzEuMSAwIDQyLjYtMjEuNyA1My40LTU0LjIgMTEuMi0zMy41IDEwLjctNjUuNyAwLTEwOC42ek0yODYuMiA0MDRjMTEuMSAwIDIwLjEgOS4xIDIwLjEgMjAuMyAwIDExLjMtOSAyMC40LTIwLjEgMjAuNC0xMSAwLTIwLjEtOS4yLTIwLjEtMjAuNC4xLTExLjMgOS4xLTIwLjMgMjAuMS0yMC4zek0xNjcuOCAyNDguMWgxMDYuOGMyOS43IDAgNTMuNC0yNC41IDUzLjQtNTQuM1Y5MS45YzAtMjktMjQuNC01MC43LTUzLjQtNTUuNi0zNS44LTUuOS03NC43LTUuNi0xMDYuOC4xLTQ1LjIgOC01My40IDI0LjctNTMuNCA1NS42djQwLjdoMTA2Ljl2MTMuNmgtMTQ3Yy0zMS4xIDAtNTguMyAxOC43LTY2LjggNTQuMi05LjggNDAuNy0xMC4yIDY2LjEgMCAxMDguNiA3LjYgMzEuNiAyNS43IDU0LjIgNTYuOCA1NC4ySDEwMXYtNDguOGMwLTM1LjMgMzAuNS02Ni40IDY2LjgtNjYuNHptLTYuNy0xNDIuNmMtMTEuMSAwLTIwLjEtOS4xLTIwLjEtMjAuMy4xLTExLjMgOS0yMC40IDIwLjEtMjAuNCAxMSAwIDIwLjEgOS4yIDIwLjEgMjAuNHMtOSAyMC4zLTIwLjEgMjAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjc1NCA0MjAuNDQ1Yy0xMS41MjYgMS4zOTMtNDQuODYtNTIuNzQxLTQ0Ljg2LTUyLjc0MSAwIDMxLjM0NS0xNi4xMzYgNzIuMjQ3LTUxLjA1MSAxMDEuNzg2IDE2Ljg0MiA1LjE5MiA1NC44NDMgMTkuMTY3IDQ1LjgwMyAzNC40MjEtNy4zMTYgMTIuMzQzLTEyNS41MSA3Ljg4MS0xNTkuNjMyIDQuMDM3LTM0LjEyMiAzLjg0NC0xNTIuMzE2IDguMzA2LTE1OS42MzItNC4wMzctOS4wNDUtMTUuMjUgMjguOTE4LTI5LjIxNCA0NS43ODMtMzQuNDE1LTM0LjkyLTI5LjUzOS01MS4wNTktNzAuNDQ1LTUxLjA1OS0xMDEuNzkyIDAgMC0zMy4zMzQgNTQuMTM0LTQ0Ljg1OSA1Mi43NDEtNS4zNy0uNjUtMTIuNDI0LTI5LjY0NCA5LjM0Ny05OS43MDQgMTAuMjYxLTMzLjAyNCAyMS45OTUtNjAuNDc4IDQwLjE0NC0xMDUuNzc5QzYwLjY4MyA5OC4wNjMgMTA4Ljk4Mi4wMDYgMjI0IDBjMTEzLjczNy4wMDYgMTYzLjE1NiA5Ni4xMzMgMTYwLjI2NCAyMTQuOTYzIDE4LjExOCA0NS4yMjMgMjkuOTEyIDcyLjg1IDQwLjE0NCAxMDUuNzc4IDIxLjc2OCA3MC4wNiAxNC43MTYgOTkuMDUzIDkuMzQ2IDk5LjcwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVpbnNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy42IDQ3NC42aC0xYTE1OC4xIDE1OC4xIDAgMCAxIDAtMzE2LjJjOTQuOSAwIDE2OC4yIDgzLjEgMTU3IDE3Ni42IDQgNS4xIDguMiA5LjYgMTEuMiAxNS4zIDEzLjQtMzAuMyAyMC4zLTYyLjQgMjAuMy05Ny43QzUwMS4xIDExNy41IDM5MS42IDggMjU2LjUgOFMxMiAxMTcuNSAxMiAyNTIuNnMxMDkuNSAyNDQuNiAyNDQuNSAyNDQuNmEyMzcuMzYgMjM3LjM2IDAgMCAwIDcwLjQtMTAuMWMtNS4yLTMuNS04LjktOC4xLTEzLjMtMTIuNXptLS4xLS4xbC40LjF6bTc4LjQtMTY4LjlhOTkuMiA5OS4yIDAgMSAwIDk5LjIgOTkuMiA5OS4xOCA5OS4xOCAwIDAgMC05OS4yLTk5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1b3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC41IDM4Ni43aC0yOS4zYy0xLjUgMTMuNS0xMC41IDMwLjgtMzMgMzAuOC0yMC41IDAtMzUuMy0xNC4yLTQ5LjUtMzUuOCA0NC4yLTM0LjIgNzQuNy04Ny41IDc0LjctMTUzQzQwMy41IDExMS4yIDMwNi44IDMyIDIwNSAzMiAxMDUuMyAzMiA3LjMgMTExLjcgNy4zIDIyOC43YzAgMTM0LjEgMTMxLjMgMjIxLjYgMjQ5IDE4OUMyNzYgNDUxLjMgMzAyIDQ4MCAzNTEuNSA0ODBjODEuOCAwIDkwLjgtNzUuMyA4OS05My4zek0yOTcgMzI5LjJDMjc3LjUgMzAwIDI1My4zIDI3NyAyMDUuNSAyNzdjLTMwLjUgMC01NC4zIDEwLTY5IDIyLjhsMTIuMiAyNC4zYzYuMi0zIDEzLTQgMTkuOC00IDM1LjUgMCA1My43IDMwLjggNjkuMiA2MS4zLTEwIDMtMjAuNyA0LjItMzIuNyA0LjItNzUgMC0xMDcuNS01My0xMDcuNS0xNTYuN0M5Ny41IDEyNC41IDEzMCA3MSAyMDUgNzFjNzYuMiAwIDEwOC43IDUzLjUgMTA4LjcgMTU3LjcuMSA0MS44LTUuNCA3NS42LTE2LjcgMTAwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJQcm9qZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1ODEgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4MSAyMjYuNkM1ODEgMTE5LjEgNDUwLjkgMzIgMjkwLjUgMzJTMCAxMTkuMSAwIDIyNi42QzAgMzIyLjQgMTAzLjMgNDAyIDIzOS40IDQxOC4xVjQ4MGg5OS4xdi02MS41YzI0LjMtMi43IDQ3LjYtNy40IDY5LjQtMTMuOUw0NDggNDgwaDExMmwtNjcuNC0xMTMuN2M1NC41LTM1LjQgODguNC04NC45IDg4LjQtMTM5Ljd6bS00NjYuOCAxNC41YzAtNzMuNSA5OC45LTEzMyAyMjAuOC0xMzNzMjExLjkgNDAuNyAyMTEuOSAxMzNjMCA1MC4xLTI2LjUgODUtNzAuMyAxMDYuNC0yLjQtMS42LTQuNy0yLjktNi40LTMuNy0xMC4yLTUuMi0yNy44LTEwLjUtMjcuOC0xMC41czg2LjYtNi40IDg2LjYtOTIuNy05MC42LTg3LjktOTAuNi04Ny45aC0xOTlWMzYxYy03NC4xLTIxLjUtMTI1LjItNjcuMS0xMjUuMi0xMTkuOXptMjI1LjEgMzguM3YtNTUuNmM1Ny44IDAgODcuOC02LjggODcuOCAyNy4zIDAgMzYuNS0zOC4yIDI4LjMtODcuOCAyOC4zem0tLjkgNzIuNUgzNjVjMTAuOCAwIDE4LjkgMTEuNyAyNCAxOS4yLTE2LjEgMS45LTMzIDIuOC01MC42IDIuOXYtMjIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFzcGJlcnJ5UGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwNyA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDIzMi41bC0zLjctNi41Yy4xLTQ2LjQtMjEuNC02NS4zLTQ2LjUtNzkuNyA3LjYtMiAxNS40LTMuNiAxNy42LTEzLjIgMTMuMS0zLjMgMTUuOC05LjQgMTcuMS0xNS44IDMuNC0yLjMgMTQuOC04LjcgMTMuNi0xOS43IDYuNC00LjQgMTAtMTAuMSA4LjEtMTguMSA2LjktNy41IDguNy0xMy43IDUuOC0xOS40IDguMy0xMC4zIDQuNi0xNS42IDEuMS0yMC45IDYuMi0xMS4yLjctMjMuMi0xNi42LTIxLjItNi45LTEwLjEtMjEuOS03LjgtMjQuMi03LjgtMi42LTMuMi02LTYtMTYuNS00LjctNi44LTYuMS0xNC40LTUtMjIuMy0yLjEtOS4zLTcuMy0xNS41LTEuNC0yMi42LjhDMjcxLjYuNiAyNjkgNS41IDI2My41IDcuNmMtMTIuMy0yLjYtMTYuMSAzLTIyIDguOWwtNi45LS4xYy0xOC42IDEwLjgtMjcuOCAzMi44LTMxLjEgNDQuMS0zLjMtMTEuMy0xMi41LTMzLjMtMzEuMS00NC4xbC02LjkuMWMtNS45LTUuOS05LjctMTEuNS0yMi04LjktNS42LTItOC4xLTctMTkuNC0zLjQtNC42LTEuNC04LjktNC40LTEzLjktNC4zLTIuNi4xLTUuNSAxLTguNyAzLjUtNy45LTMtMTUuNS00LTIyLjMgMi4xLTEwLjUtMS4zLTE0IDEuNC0xNi41IDQuNy0yLjMgMC0xNy4zLTIuMy0yNC4yIDcuOEMyMS4yIDE2IDE1LjggMjggMjIgMzkuMmMtMy41IDUuNC03LjIgMTAuNyAxLjEgMjAuOS0yLjkgNS43LTEuMSAxMS45IDUuOCAxOS40LTEuOCA4IDEuOCAxMy43IDguMSAxOC4xLTEuMiAxMSAxMC4yIDE3LjQgMTMuNiAxOS43IDEuMyA2LjQgNCAxMi40IDE3LjEgMTUuOCAyLjIgOS41IDEwIDExLjIgMTcuNiAxMy4yLTI1LjEgMTQuNC00Ni42IDMzLjMtNDYuNSA3OS43bC0zLjcgNi41Yy0yOC44IDE3LjItNTQuNyA3Mi43LTE0LjIgMTE3LjcgMi42IDE0LjEgNy4xIDI0LjIgMTEgMzUuNCA1LjkgNDUuMiA0NC41IDY2LjMgNTQuNiA2OC44IDE0LjkgMTEuMiAzMC44IDIxLjggNTIuMiAyOS4yQzE1OSA1MDQuMiAxODEgNTEyIDIwMyA1MTJoMWMyMi4xIDAgNDQtNy44IDY0LjItMjguNCAyMS41LTcuNCAzNy4zLTE4IDUyLjItMjkuMiAxMC4yLTIuNSA0OC43LTIzLjYgNTQuNi02OC44IDMuOS0xMS4yIDguNC0yMS4zIDExLTM1LjQgNDAuNi00NS4xIDE0LjctMTAwLjUtMTQtMTE3Ljd6bS0yMi4yLThjLTEuNSAxOC43LTk4LjktNjUuMS04Mi4xLTY3LjkgNDUuNy03LjUgODMuNiAxOS4yIDgyLjEgNjcuOXptLTQzIDkzLjFjLTI0LjUgMTUuOC01OS44IDUuNi03OC44LTIyLjhzLTE0LjYtNjQuMiA5LjktODBjMjQuNS0xNS44IDU5LjgtNS42IDc4LjggMjIuOHMxNC42IDY0LjItOS45IDgwek0yMzguOSAyOS4zYy44IDQuMiAxLjggNi44IDIuOSA3LjYgNS40LTUuOCA5LjgtMTEuNyAxNi44LTE3LjMgMCAzLjMtMS43IDYuOCAyLjUgOS40IDMuNy01IDguOC05LjUgMTUuNS0xMy4zLTMuMiA1LjYtLjYgNy4zIDEuMiA5LjYgNS4xLTQuNCAxMC04LjggMTkuNC0xMi4zLTIuNiAzLjEtNi4yIDYuMi0yLjQgOS44IDUuMy0zLjMgMTAuNi02LjYgMjMuMS04LjktMi44IDMuMS04LjcgNi4zLTUuMSA5LjQgNi42LTIuNSAxNC00LjQgMjIuMS01LjQtMy45IDMuMi03LjEgNi4zLTMuOSA4LjggNy4xLTIuMiAxNi45LTUuMSAyNi40LTIuNmwtNiA2LjFjLS43LjggMTQuMS42IDIzLjkuOC0zLjYgNS03LjIgOS43LTkuMyAxOC4yIDEgMSA1LjguNCAxMC40IDAtNC43IDkuOS0xMi44IDEyLjMtMTQuNyAxNi42IDIuOSAyLjIgNi44IDEuNiAxMS4yLjEtMy40IDYuOS0xMC40IDExLjctMTYgMTcuMyAxLjQgMSAzLjkgMS42IDkuNy45LTUuMiA1LjUtMTEuNCAxMC41LTE4LjggMTUgMS4zIDEuNSA1LjggMS41IDEwIDEuNi02LjcgNi41LTE1LjMgOS45LTIzLjQgMTQuMiA0IDIuNyA2LjkgMi4xIDEwIDIuMS01LjcgNC43LTE1LjQgNy4xLTI0LjQgMTAgMS43IDIuNyAzLjQgMy40IDcuMSA0LjEtOS41IDUuMy0yMy4yIDIuOS0yNyA1LjYuOSAyLjcgMy42IDQuNCA2LjcgNS44LTE1LjQuOS01Ny4zLS42LTY1LjQtMzIuMyAxNS43LTE3LjMgNDQuNC0zNy41IDkzLjctNjIuNi0zOC40IDEyLjgtNzMgMzAtMTAyIDUzLjUtMzQuMy0xNS45LTEwLjgtNTUuOSA1LjgtNzEuOHptLTM0LjQgMTE0LjZjMjQuMi0uMyA1NC4xIDE3LjggNTQgMzQuNy0uMSAxNS0yMSAyNy4xLTUzLjggMjYuOS0zMi4xLS40LTUzLjctMTUuMi01My42LTI5LjggMC0xMS45IDI2LjItMzIuNSA1My40LTMxLjh6bS0xMjMtMTIuOGMzLjctLjcgNS40LTEuNSA3LjEtNC4xLTktMi44LTE4LjctNS4zLTI0LjQtMTAgMy4xIDAgNiAuNyAxMC0yLjEtOC4xLTQuMy0xNi43LTcuNy0yMy40LTE0LjIgNC4yLS4xIDguNyAwIDEwLTEuNi03LjQtNC41LTEzLjYtOS41LTE4LjgtMTUgNS44LjcgOC4zLjEgOS43LS45LTUuNi01LjYtMTIuNy0xMC40LTE2LTE3LjMgNC4zIDEuNSA4LjMgMiAxMS4yLS4xLTEuOS00LjItMTAtNi43LTE0LjctMTYuNiA0LjYuNCA5LjQgMSAxMC40IDAtMi4xLTguNS01LjgtMTMuMy05LjMtMTguMiA5LjgtLjEgMjQuNiAwIDIzLjktLjhsLTYtNi4xYzkuNS0yLjUgMTkuMy40IDI2LjQgMi42IDMuMi0yLjUtLjEtNS42LTMuOS04LjggOC4xIDEuMSAxNS40IDIuOSAyMi4xIDUuNCAzLjUtMy4xLTIuMy02LjMtNS4xLTkuNCAxMi41IDIuMyAxNy44IDUuNiAyMy4xIDguOSAzLjgtMy42LjItNi43LTIuNC05LjggOS40IDMuNCAxNC4zIDcuOSAxOS40IDEyLjMgMS43LTIuMyA0LjQtNCAxLjItOS42IDYuNyAzLjggMTEuOCA4LjMgMTUuNSAxMy4zIDQuMS0yLjYgMi41LTYuMiAyLjUtOS40IDcgNS42IDExLjQgMTEuNSAxNi44IDE3LjMgMS4xLS44IDItMy40IDIuOS03LjYgMTYuNiAxNS45IDQwLjEgNTUuOSA2IDcxLjgtMjktMjMuNS02My42LTQwLjctMTAyLTUzLjUgNDkuMyAyNSA3OCA0NS4zIDkzLjcgNjIuNi04IDMxLjgtNTAgMzMuMi02NS40IDMyLjMgMy4xLTEuNCA1LjgtMy4yIDYuNy01LjgtNC0yLjgtMTcuNi0uNC0yNy4yLTUuNnptNjAuMSAyNC4xYzE2LjggMi44LTgwLjYgODYuNS04Mi4xIDY3LjktMS41LTQ4LjcgMzYuNS03NS41IDgyLjEtNjcuOXpNMzguMiAzNDJjLTIzLjctMTguOC0zMS4zLTczLjcgMTIuNi05OC4zIDI2LjUtNyA5IDEwNy44LTEyLjYgOTguM3ptOTEgOTguMmMtMTMuMyA3LjktNDUuOCA0LjctNjguOC0yNy45LTE1LjUtMjcuNC0xMy41LTU1LjItMi42LTYzLjQgMTYuMy05LjggNDEuNSAzLjQgNjAuOSAyNS42IDE2LjkgMjAgMjQuNiA1NS4zIDEwLjUgNjUuN3ptLTI2LjQtMTE5LjdjLTI0LjUtMTUuOC0yOC45LTUxLjYtOS45LTgwczU0LjMtMzguNiA3OC44LTIyLjggMjguOSA1MS42IDkuOSA4MGMtMTkuMSAyOC40LTU0LjQgMzguNi03OC44IDIyLjh6TTIwNSA0OTZjLTI5LjQgMS4yLTU4LjItMjMuNy01Ny44LTMyLjMtLjQtMTIuNyAzNS44LTIyLjYgNTkuMy0yMiAyMy43LTEgNTUuNiA3LjUgNTUuNyAxOC45LjUgMTEtMjguOCAzNS45LTU3LjIgMzUuNHptNTguOS0xMjQuOWMuMiAyOS43LTI2LjIgNTMuOC01OC44IDU0LTMyLjYuMi01OS4yLTIzLjgtNTkuNC01My40di0uNmMtLjItMjkuNyAyNi4yLTUzLjggNTguOC01NCAzMi42LS4yIDU5LjIgMjMuOCA1OS40IDUzLjR2LjZ6bTgyLjIgNDIuN2MtMjUuMyAzNC42LTU5LjYgMzUuOS03Mi4zIDI2LjMtMTMuMy0xMi40LTMuMi01MC45IDE1LjEtNzIgMjAuOS0yMy4zIDQzLjMtMzguNSA1OC45LTI2LjYgMTAuNSAxMC4zIDE2LjcgNDkuMS0xLjcgNzIuM3ptMjIuOS03My4yYy0yMS41IDkuNC0zOS0xMDUuMy0xMi42LTk4LjMgNDMuOSAyNC43IDM2LjMgNzkuNiAxMi42IDk4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhdmVscnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk4LjI1MiwyMzQuMjIzYy0xLjIwOC0xMC4zNC0xLjctMjAuODI2LTMuNzQ2LTMxYTMxMC4zMDYsMzEwLjMwNiwwLDAsMC05LjYyMi0zNi42LDE4NC4wNjgsMTg0LjA2OCwwLDAsMC0zMC44NzQtNTcuNSwyNTEuMTU0LDI1MS4xNTQsMCwwLDAtMTguODE4LTIxLjY4OSwyMzcuMzYyLDIzNy4zNjIsMCwwLDAtNDcuMTEzLTM2LjExNkEyNDAuOCwyNDAuOCwwLDAsMCwzMzEuMzU2LDI2LjY1Yy0xMS4wMTgtMy4xLTIyLjI3Mi01LjQzMS0zMy41MTUtNy42MTUtNi43OC0xLjMxNC0xMy43NDktMS42NjctMjAuNjI3LTIuNDgyLS4zMTYtLjAzNi0uNi0uMzU4LS45LS41NTNxLTE2LjE0My4wMDktMzIuMjg4LjAwNmMtMi40MS4zODktNC44MDguOTI1LTcuMjM2LDEuMTVhMTc5LjMzMSwxNzkuMzMxLDAsMCwwLTM0LjI1Niw3LjEsMjIxLjUsMjIxLjUsMCwwLDAtMzkuNzY4LDE2LjM1NSwyODEuMzg1LDI4MS4zODUsMCwwLDAtMzguMDgsMjQuMTU4Yy02LjE2Nyw0LjYxLTEyLjI2OCw5LjM2LTE3Ljk3NCwxNC41MThDOTYuNTM5LDg4LjQ5NCw4Ni4zNCw5Ny43Miw3Ni43ODUsMTA3LjU1NWEyNDMuODc4LDI0My44NzgsMCwwLDAtMzMuNjQ4LDQzLjk1LDIwNi40ODgsMjA2LjQ4OCwwLDAsMC0yMC40OTQsNDQuNiwxOTguMiwxOTguMiwwLDAsMC03LjY5MSwzNC43NTlBMjAxLjEzLDIwMS4xMywwLDAsMCwxMy40LDI2Ni4zODVhMjk5LjcxNiwyOTkuNzE2LDAsMCwwLDQuNDI1LDQwLjI0LDIyNi44NjUsMjI2Ljg2NSwwLDAsMCwxNi43Myw1My4zLDIxMC41NDMsMjEwLjU0MywwLDAsMCwyNCwzOS41MjgsMjEzLjU4OSwyMTMuNTg5LDAsMCwwLDI2LjM1OCwyOC40MTZBMjUxLjMxMywyNTEuMzEzLDAsMCwwLDEyNi43LDQ1OC40NTVhMjg3LjgzMSwyODcuODMxLDAsMCwwLDU1LjksMjUuMjc3LDI2OS41LDI2OS41LDAsMCwwLDQwLjY0MSw5LjgzNWM2LjA3MSwxLjAxLDEyLjI3NSwxLjI1MywxOC40MTIsMS44NzNhNC4xNDksNC4xNDksMCwwLDEsMS4xOS41NmgzMi4yODljMi41MDctLjM4OSw1LS45MzcsNy41MjctMS4xNDMsMTYuMzM2LTEuMzMyLDMyLjEwNy01LjMzNSw0Ny40ODktMTAuNzE3QTIxOS45OTIsMjE5Ljk5MiwwLDAsMCwzNzkuMSw0NjAuMzIyYzkuNzQ5LTYuNDQ3LDE5LjM5NS0xMy4wNzcsMjguNzM3LTIwLjEsNS43ODUtNC4zNDgsMTAuOTg4LTkuNSwxNi4zLTE0LjQ1NywzLjk2NC0zLjcsNy43NjQtNy41NzgsMTEuNTEtMTEuNWEyMzIuMTYyLDIzMi4xNjIsMCwwLDAsMzEuNDI3LTQxLjYzOWM5LjU0Mi0xNi4wNDUsMTcuMzU1LTMyLjkwNSwyMi4zLTUwLjkyNiwyLjg1OS0xMC40MTMsNC45NDctMjEuMDQ1LDcuMDE3LTMxLjY1MiwxLjAzMi01LjI3OSwxLjI1MS0xMC43MjMsMS44Ny0xNi4wODcuMDM2LS4zMTcuMzU4LS42LjU1Mi0uOVYyMzYuMDA1QTkuNzU3LDkuNzU3LDAsMCwxLDQ5OC4yNTIsMjM0LjIyM1ptLTE2MS4xMTctMS4xNXMtMTYuNTcyLTIuOTgtMjguNDctMi45OGMtMjcuMiwwLTMzLjU3LDE0LjktMzMuNTcsMzcuMDRWMzYwLjhIMjAxLjU4MlYxNzAuMDYySDI3NS4xdjMxLjkzMWM4LjkyNC0yNi44MjIsMjYuNzcxLTM2LjE4OSw2Mi4wNC0zNi4xODlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxOC4yIDE3Ny4yYy01LjQtMS44LTEwLjgtMy41LTE2LjItNS4xLjktMy43IDEuNy03LjQgMi41LTExLjEgMTIuMy01OS42IDQuMi0xMDcuNS0yMy4xLTEyMy4zLTI2LjMtMTUuMS02OS4yLjYtMTEyLjYgMzguNC00LjMgMy43LTguNSA3LjYtMTIuNSAxMS41LTIuNy0yLjYtNS41LTUuMi04LjMtNy43LTQ1LjUtNDAuNC05MS4xLTU3LjQtMTE4LjQtNDEuNS0yNi4yIDE1LjItMzQgNjAuMy0yMyAxMTYuNyAxLjEgNS42IDIuMyAxMS4xIDMuNyAxNi43LTYuNCAxLjgtMTIuNyAzLjgtMTguNiA1LjlDMzguMyAxOTYuMiAwIDIyNS40IDAgMjU1LjZjMCAzMS4yIDQwLjggNjIuNSA5Ni4zIDgxLjUgNC41IDEuNSA5IDMgMTMuNiA0LjMtMS41IDYtMi44IDExLjktNCAxOC0xMC41IDU1LjUtMi4zIDk5LjUgMjMuOSAxMTQuNiAyNyAxNS42IDcyLjQtLjQgMTE2LjYtMzkuMSAzLjUtMy4xIDctNi4zIDEwLjUtOS43IDQuNCA0LjMgOSA4LjQgMTMuNiAxMi40IDQyLjggMzYuOCA4NS4xIDUxLjcgMTExLjIgMzYuNiAyNy0xNS42IDM1LjgtNjIuOSAyNC40LTEyMC41LS45LTQuNC0xLjktOC45LTMtMTMuNSAzLjItLjkgNi4zLTEuOSA5LjQtMi45IDU3LjctMTkuMSA5OS41LTUwIDk5LjUtODEuNyAwLTMwLjMtMzkuNC01OS43LTkzLjgtNzguNHpNMjgyLjkgOTIuM2MzNy4yLTMyLjQgNzEuOS00NS4xIDg3LjctMzYgMTYuOSA5LjcgMjMuNCA0OC45IDEyLjggMTAwLjQtLjcgMy40LTEuNCA2LjctMi4zIDEwLTIyLjItNS00NC43LTguNi02Ny4zLTEwLjYtMTMtMTguNi0yNy4yLTM2LjQtNDIuNi01My4xIDMuOS0zLjcgNy43LTcuMiAxMS43LTEwLjd6TTE2Ny4yIDMwNy41YzUuMSA4LjcgMTAuMyAxNy40IDE1LjggMjUuOS0xNS42LTEuNy0zMS4xLTQuMi00Ni40LTcuNSA0LjQtMTQuNCA5LjktMjkuMyAxNi4zLTQ0LjUgNC42IDguOCA5LjMgMTcuNSAxNC4zIDI2LjF6bS0zMC4zLTEyMC4zYzE0LjQtMy4yIDI5LjctNS44IDQ1LjYtNy44LTUuMyA4LjMtMTAuNSAxNi44LTE1LjQgMjUuNC00LjkgOC41LTkuNyAxNy4yLTE0LjIgMjYtNi4zLTE0LjktMTEuNi0yOS41LTE2LTQzLjZ6bTI3LjQgNjguOWM2LjYtMTMuOCAxMy44LTI3LjMgMjEuNC00MC42czE1LjgtMjYuMiAyNC40LTM4LjljMTUtMS4xIDMwLjMtMS43IDQ1LjktMS43czMxIC42IDQ1LjkgMS43YzguNSAxMi42IDE2LjYgMjUuNSAyNC4zIDM4LjdzMTQuOSAyNi43IDIxLjcgNDAuNGMtNi43IDEzLjgtMTMuOSAyNy40LTIxLjYgNDAuOC03LjYgMTMuMy0xNS43IDI2LjItMjQuMiAzOS0xNC45IDEuMS0zMC40IDEuNi00Ni4xIDEuNnMtMzAuOS0uNS00NS42LTEuNGMtOC43LTEyLjctMTYuOS0yNS43LTI0LjYtMzlzLTE0LjgtMjYuOC0yMS41LTQwLjZ6bTE4MC42IDUxLjJjNS4xLTguOCA5LjktMTcuNyAxNC42LTI2LjcgNi40IDE0LjUgMTIgMjkuMiAxNi45IDQ0LjMtMTUuNSAzLjUtMzEuMiA2LjItNDcgOCA1LjQtOC40IDEwLjUtMTcgMTUuNS0yNS42em0xNC40LTc2LjVjLTQuNy04LjgtOS41LTE3LjYtMTQuNS0yNi4yLTQuOS04LjUtMTAtMTYuOS0xNS4zLTI1LjIgMTYuMSAyIDMxLjUgNC43IDQ1LjkgOC00LjYgMTQuOC0xMCAyOS4yLTE2LjEgNDMuNHpNMjU2LjIgMTE4LjNjMTAuNSAxMS40IDIwLjQgMjMuNCAyOS42IDM1LjgtMTkuOC0uOS0zOS43LS45LTU5LjUgMCA5LjgtMTIuOSAxOS45LTI0LjkgMjkuOS0zNS44ek0xNDAuMiA1N2MxNi44LTkuOCA1NC4xIDQuMiA5My40IDM5IDIuNSAyLjIgNSA0LjYgNy42IDctMTUuNSAxNi43LTI5LjggMzQuNS00Mi45IDUzLjEtMjIuNiAyLTQ1IDUuNS02Ny4yIDEwLjQtMS4zLTUuMS0yLjQtMTAuMy0zLjUtMTUuNS05LjQtNDguNC0zLjItODQuOSAxMi42LTk0em0tMjQuNSAyNjMuNmMtNC4yLTEuMi04LjMtMi41LTEyLjQtMy45LTIxLjMtNi43LTQ1LjUtMTcuMy02My0zMS4yLTEwLjEtNy0xNi45LTE3LjgtMTguOC0yOS45IDAtMTguMyAzMS42LTQxLjcgNzcuMi01Ny42IDUuNy0yIDExLjUtMy44IDE3LjMtNS41IDYuOCAyMS43IDE1IDQzIDI0LjUgNjMuNi05LjYgMjAuOS0xNy45IDQyLjUtMjQuOCA2NC41em0xMTYuNiA5OGMtMTYuNSAxNS4xLTM1LjYgMjcuMS01Ni40IDM1LjMtMTEuMSA1LjMtMjMuOSA1LjgtMzUuMyAxLjMtMTUuOS05LjItMjIuNS00NC41LTEzLjUtOTIgMS4xLTUuNiAyLjMtMTEuMiAzLjctMTYuNyAyMi40IDQuOCA0NSA4LjEgNjcuOSA5LjggMTMuMiAxOC43IDI3LjcgMzYuNiA0My4yIDUzLjQtMy4yIDMuMS02LjQgNi4xLTkuNiA4Ljl6bTI0LjUtMjQuM2MtMTAuMi0xMS0yMC40LTIzLjItMzAuMy0zNi4zIDkuNi40IDE5LjUuNiAyOS41LjYgMTAuMyAwIDIwLjQtLjIgMzAuNC0uNy05LjIgMTIuNy0xOS4xIDI0LjgtMjkuNiAzNi40em0xMzAuNyAzMGMtLjkgMTIuMi02LjkgMjMuNi0xNi41IDMxLjMtMTUuOSA5LjItNDkuOC0yLjgtODYuNC0zNC4yLTQuMi0zLjYtOC40LTcuNS0xMi43LTExLjUgMTUuMy0xNi45IDI5LjQtMzQuOCA0Mi4yLTUzLjYgMjIuOS0xLjkgNDUuNy01LjQgNjguMi0xMC41IDEgNC4xIDEuOSA4LjIgMi43IDEyLjIgNC45IDIxLjYgNS43IDQ0LjEgMi41IDY2LjN6bTE4LjItMTA3LjVjLTIuOC45LTUuNiAxLjgtOC41IDIuNi03LTIxLjgtMTUuNi00My4xLTI1LjUtNjMuOCA5LjYtMjAuNCAxNy43LTQxLjQgMjQuNS02Mi45IDUuMiAxLjUgMTAuMiAzLjEgMTUgNC43IDQ2LjYgMTYgNzkuMyAzOS44IDc5LjMgNTggMCAxOS42LTM0LjkgNDQuOS04NC44IDYxLjR6bS0xNDkuNy0xNWMyNS4zIDAgNDUuOC0yMC41IDQ1LjgtNDUuOHMtMjAuNS00NS44LTQ1LjgtNDUuOGMtMjUuMyAwLTQ1LjggMjAuNS00NS44IDQ1LjhzMjAuNSA0NS44IDQ1LjggNDUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVhY3RldXJvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUwLjYgMjExLjc0bDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xLTIuMy02LjgtMi4zIDYuOC03LjIuMSA1LjcgNC4zem02My43IDBsNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjItLjEtMi4zLTYuOC0yLjMgNi44LTcuMi4xIDUuNyA0LjN6bS05MS4zIDUwLjVoLTMuNGMtNC44IDAtMy44IDQtMy44IDEyLjEgMCA0LjctMi4zIDYuMS01LjggNi4xcy01LjgtMS40LTUuOC02LjF2LTM2LjZjMC00LjcgMi4zLTYuMSA1LjgtNi4xczUuOCAxLjQgNS44IDYuMWMwIDcuMi0uNyAxMC41IDMuOCAxMC41aDMuNGM0LjctLjEgMy44LTMuOSAzLjgtMTIuMyAwLTkuOS02LjctMTQuMS0xNi44LTE0LjFoLS4yYy0xMC4xIDAtMTYuOCA0LjItMTYuOCAxNC4xVjI3NmMwIDEwLjQgNi43IDE0LjEgMTYuOCAxNC4xaC4yYzEwLjEgMCAxNi44LTMuOCAxNi44LTE0LjEgMC05Ljg2IDEuMS0xMy43Ni0zLjgtMTMuNzZ6bS04MC43IDE3LjRoLTE0Ljd2LTE5LjNIMTM5YzIuNSAwIDMuOC0xLjMgMy44LTMuOHYtMi4xYzAtMi41LTEuMy0zLjgtMy44LTMuOGgtMTEuNHYtMTguM0gxNDJjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yMS43Yy0yLjQtLjEtMy43IDEuMy0zLjcgMy44djU5LjFjMCAyLjUgMS4zIDMuOCAzLjggMy44aDIxLjljMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44em0tNDItMTguNWM0LjYtMiA3LjMtNiA3LjMtMTIuNHYtMTEuOWMwLTEwLjEtNi43LTE0LjEtMTYuOC0xNC4xSDc3LjRjLTIuNSAwLTMuOCAxLjMtMy44IDMuOHY1OS4xYzAgMi41IDEuMyAzLjggMy44IDMuOGgzLjRjMi41IDAgMy44LTEuMyAzLjgtMy44di0yMi45aDUuNmw3LjQgMjMuNWE0LjEgNC4xIDAgMCAwIDQuMyAzLjJoMy4zYzIuOCAwIDQtMS44IDMuMi00LjR6bS0zLjgtMTRjMCA0LjgtMi41IDYuMS02LjEgNi4xaC01Ljh2LTIwLjloNS44YzMuNiAwIDYuMSAxLjMgNi4xIDYuMXpNMTc2IDIyNmEzLjgyIDMuODIgMCAwIDAtNC4yLTMuNGgtNi45YTMuNjggMy42OCAwIDAgMC00IDMuNGwtMTEgNTkuMmMtLjUgMi43LjkgNC4xIDMuNCA0LjFoM2EzLjc0IDMuNzQgMCAwIDAgNC4xLTMuNWwxLjgtMTEuM2gxMi4ybDEuOCAxMS4zYTMuNzQgMy43NCAwIDAgMCA0LjEgMy41aDMuNWMyLjYgMCAzLjktMS40IDMuNC00LjF6bS0xMi4zIDM5LjNsNC43LTI5LjcgNC43IDI5Ljd6bTg5LjMgMjAuMnYtNTMuMmg3LjVjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yNS44Yy0yLjUgMC0zLjggMS4zLTMuOCAzLjh2Mi4xYzAgMi41IDEuMyAzLjggMy44IDMuOGg3LjN2NTMuMmMwIDIuNSAxLjMgMy44IDMuOCAzLjhoMy40YzIuNS4wNCAzLjgtMS4zIDMuOC0zLjc2em0yNDgtLjhoLTE5LjRWMjU4aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjYyIDEuNjIgMCAwIDAtMiAxLjh2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45SDUwMWExLjgxIDEuODEgMCAwIDAgMi0xLjl2LS44YTEuODQgMS44NCAwIDAgMC0yLTEuOTZ6bS05My4xLTYyLjloLS44Yy0xMC4xIDAtMTUuMyA0LjctMTUuMyAxNC4xVjI3NmMwIDkuMyA1LjIgMTQuMSAxNS4zIDE0LjFoLjhjMTAuMSAwIDE1LjMtNC44IDE1LjMtMTQuMXYtNDAuMWMwLTkuMzYtNS4yLTE0LjA2LTE1LjMtMTQuMDZ6bTEwLjIgNTIuNGMtLjEgOC0zIDExLjEtMTAuNSAxMS4xcy0xMC41LTMuMS0xMC41LTExLjF2LTM2LjZjMC03LjkgMy0xMS4xIDEwLjUtMTEuMXMxMC41IDMuMiAxMC41IDExLjF6bS00Ni41LTE0LjVjNi4xLTEuNiA5LjItNi4xIDkuMi0xMy4zdi05LjdjMC05LjQtNS4yLTE0LjEtMTUuMy0xNC4xaC0xMy43YTEuODEgMS44MSAwIDAgMC0yIDEuOXY2M2ExLjgxIDEuODEgMCAwIDAgMiAxLjloMS4yYTEuNzQgMS43NCAwIDAgMCAxLjktMS45di0yNi45aDExLjZsMTAuNCAyNy4yYTIuMzIgMi4zMiAwIDAgMCAyLjMgMS41aDEuNWMxLjQgMCAyLTEgMS41LTIuM3ptLTYuNC0zLjlIMzU1di0yOC41aDEwLjJjNy41IDAgMTAuNSAzLjEgMTAuNSAxMS4xdjYuNGMwIDcuODQtMyAxMS4wNC0xMC41IDExLjA0em04NS45LTMzLjFoLTEzLjdhMS42MiAxLjYyIDAgMCAwLTIgMS44djYzYTEuODEgMS44MSAwIDAgMCAyIDEuOWgxLjJhMS43NCAxLjc0IDAgMCAwIDEuOS0xLjl2LTI2LjFoMTAuNmMxMC4xIDAgMTUuMy00LjggMTUuMy0xNC4xdi0xMC41YzAtOS40LTUuMi0xNC4xLTE1LjMtMTQuMXptMTAuMiAyMi44YzAgNy45LTMgMTEuMS0xMC41IDExLjFoLTEwLjJ2LTI5LjJoMTAuMmM3LjUtLjEgMTAuNSAzLjEgMTAuNSAxMXpNMjU5LjUgMzA4bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTIyNy42LTEzNi4xYTM2NC40MiAzNjQuNDIgMCAwIDAtMzUuNi0xMS4zYzE5LjYtNzggMTEuNi0xMzQuNy0yMi4zLTE1My45QzM5NC43LTEyLjY2IDM0My4zIDExIDI5MSA2MS45NHE1LjEgNC45NSAxMC4yIDEwLjJjODIuNS04MCAxMTkuNi01My41IDEyMC45LTUyLjggMjIuNCAxMi43IDM2IDU1LjggMTUuNSAxMzcuOGE1ODcuODMgNTg3LjgzIDAgMCAwLTg0LjYtMTNDMjgxLjEgNDMuNjQgMjEyLjQgMiAxNzAuOCAyIDE0MCAyIDEyNyAyMyAxMjMuMiAyOS43NGMtMTguMSAzMi0xMy4zIDg0LjIuMSAxMzMuOC03MC41IDIwLjMtMTIwLjcgNTQuMS0xMjAuMyA5NSAuNSA1OS42IDEwMy4yIDg3LjggMTIyLjEgOTIuOC0yMC41IDgxLjktMTAuMSAxMzUuNiAyMi4zIDE1My45IDI4IDE1LjggNzUuMSA2IDEzOC4yLTU1LjJxLTUuMS00Ljk1LTEwLjItMTAuMmMtODIuNSA4MC0xMTkuNyA1My41LTEyMC45IDUyLjgtMjIuMy0xMi42LTM2LTU1LjYtMTUuNS0xMzcuOSAxMi40IDIuOSA0MS44IDkuNSA4NC42IDEzIDcxLjkgMTAwLjQgMTQwLjYgMTQyIDE4Mi4xIDE0MiAzMC44IDAgNDMuOC0yMSA0Ny42LTI3LjcgMTgtMzEuOSAxMy4zLTg0LjEtLjEtMTMzLjggMTUyLjMtNDMuOCAxNTYuMi0xMzAuMiAzMy45LTE3Ni4zek0xMzUuOSAzNi44NGMyLjktNS4xIDExLjktMjAuMyAzNC45LTIwLjMgMzYuOCAwIDk4LjggMzkuNiAxNjMuMyAxMjYuMmE3MTQgNzE0IDAgMCAwLTkzLjkuOSA1NDcuNzYgNTQ3Ljc2IDAgMCAxIDQyLjItNTIuNFEyNzcuMyA4NiAyNzIuMiA4MWE1OTguMjUgNTk4LjI1IDAgMCAwLTUwLjcgNjQuMiA1NjkuNjkgNTY5LjY5IDAgMCAwLTg0LjQgMTQuNmMtLjItMS40LTI0LjMtODIuMi0xLjItMTIzem0zMDQuOCA0MzguM2MtMi45IDUuMS0xMS44IDIwLjMtMzQuOSAyMC4zLTM2LjcgMC05OC43LTM5LjQtMTYzLjMtMTI2LjJhNjk1LjM4IDY5NS4zOCAwIDAgMCA5My45LS45IDU0Ny43NiA1NDcuNzYgMCAwIDEtNDIuMiA1Mi40cTUuMSA1LjI1IDEwLjIgMTAuMmE1ODguNDcgNTg4LjQ3IDAgMCAwIDUwLjctNjQuMmM0Ny4zLTQuNyA4MC4zLTEzLjUgODQuNC0xNC42IDIyLjcgODQuNCA0LjUgMTE3IDEuMiAxMjN6bTkuMS0xMzguNmMtMy42LTExLjktNy43LTI0LjEtMTIuNC0zNi40YTEyLjY3IDEyLjY3IDAgMCAxLTEwLjctNS43bC0uMS4xYTE5LjYxIDE5LjYxIDAgMCAxLTUuNCAzLjZjNS43IDE0LjMgMTAuNiAyOC40IDE0LjcgNDIuMmE1MzUuMyA1MzUuMyAwIDAgMS03MiAxM2MzLjUtNS4zIDE3LjItMjYuMiAzMi4yLTU0LjJhMjQuNiAyNC42IDAgMCAxLTYtMy4yYy0xLjEgMS4yLTMuNiA0LjItMTAuOSA0LjItNi4yIDExLjItMTcuNCAzMC45LTMzLjkgNTUuMmE3MTEuOTEgNzExLjkxIDAgMCAxLTExMi40IDFjLTcuOS0xMS4yLTIxLjUtMzEuMS0zNi44LTU3LjhhMjEgMjEgMCAwIDEtMy0xLjVjLTEuOSAxLjYtMy45IDMuMi0xMi42IDMuMiA2LjMgMTEuMiAxNy41IDMwLjcgMzMuOCA1NC42YTU0OC44MSA1NDguODEgMCAwIDEtNzIuMi0xMS43cTUuODUtMjEgMTQuMS00Mi45Yy0zLjIgMC01LjQuMi04LjQtMWExNy41OCAxNy41OCAwIDAgMS02LjkgMWMtNC45IDEzLjQtOS4xIDI2LjUtMTIuNyAzOS40Qy0zMS43IDI5Ny0xMi4xIDIxNiAxMjYuNyAxNzUuNjRjMy42IDExLjkgNy43IDI0LjEgMTIuNCAzNi40IDEwLjQgMCAxMi45IDMuNCAxNC40IDUuM2ExMiAxMiAwIDAgMSAyLjMtMi4yYy01LjgtMTQuNy0xMC45LTI5LjItMTUuMi00My4zIDctMS44IDMyLjQtOC40IDcyLTEzLTE1LjkgMjQuMy0yNi43IDQzLjktMzIuOCA1NS4zYTE0LjIyIDE0LjIyIDAgMCAxIDYuNCA4IDIzLjQyIDIzLjQyIDAgMCAxIDEwLjItOC40YzYuNS0xMS43IDE3LjktMzEuOSAzNC44LTU2LjlhNzExLjcyIDcxMS43MiAwIDAgMSAxMTIuNC0xYzMxLjUgNDQuNiAyOC45IDQ4LjEgNDIuNSA2NC41YTIxLjQyIDIxLjQyIDAgMCAxIDEwLjQtNy40Yy02LjQtMTEuNC0xNy42LTMxLTM0LjMtNTUuNSA0MC40IDQuMSA2NSAxMCA3Mi4yIDExLjctNCAxNC40LTguOSAyOS4yLTE0LjYgNDQuMmEyMC43NCAyMC43NCAwIDAgMSA2LjggNC4zbC4xLjFhMTIuNzIgMTIuNzIgMCAwIDEgOC45LTUuNmM0LjktMTMuNCA5LjItMjYuNiAxMi44LTM5LjVhMzU5LjcxIDM1OS43MSAwIDAgMSAzNC41IDExYzEwNi4xIDM5LjkgNzQgODcuOSA3Mi42IDkwLjQtMTkuOCAzNS4xLTgwLjEgNTUuMi0xMDUuNyA2Mi41em0tMTE0LjQtMTE0aC0xLjJhMS43NCAxLjc0IDAgMCAwLTEuOSAxLjl2NDkuOGMwIDcuOS0yLjYgMTEuMS0xMC4xIDExLjFzLTEwLjEtMy4xLTEwLjEtMTEuMXYtNDkuOGExLjY5IDEuNjkgMCAwIDAtMS45LTEuOUgzMDlhMS44MSAxLjgxIDAgMCAwLTIgMS45djUxLjVjMCA5LjYgNSAxNC4xIDE1LjEgMTQuMWguNGMxMC4xIDAgMTUuMS00LjYgMTUuMS0xNC4xdi01MS41YTIgMiAwIDAgMC0yLjItMS45ek0zMjEuNyAzMDhsLTIuMy02LjgtMi4zIDYuOC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuM3ptLTMxLjEgNy40bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTUuMS0zMC44aC0xOS40di0yNi43aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjgxIDEuODEgMCAwIDAtMiAxLjl2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45aDIyLjVhMS43NyAxLjc3IDAgMCAwIDItMS45di0uOGExLjgzIDEuODMgMCAwIDAtMi0yLjA2em0tNy40LTk5LjRMMjg2IDE5MmwtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWFkbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjMgNDYuNUgzODguNWMtNDguMSAwLTg5LjkgMzMuMy0xMDAuNCA4MC4zLTEwLjYtNDctNTIuMy04MC4zLTEwMC40LTgwLjNINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djI0NS44YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDg5LjdjMTAyLjIgMCAxMzIuNyAyNC40IDE0Ny4zIDc1IC43IDIuOCA1LjIgMi44IDYgMCAxNC43LTUwLjYgNDUuMi03NSAxNDcuMy03NUg1MjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWOTQuNmMwLTI2LjQtMjEuMy00Ny45LTQ3LjctNDguMXpNMjQyIDMxMS45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjg5YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNVYyNTF6bTAtNjAuOWMwIDEuOS0xLjUgMy41LTMuNSAzLjVINzguMmMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi45YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMjU5LjMgMTIxLjdjMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjI4YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUgzMzcuNWMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi44YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjVWMTkwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNSA1MDRDMTE3LjIgNTA0IDkgMzg3LjggMTMuMiAyNDkuOSAxNiAxNzAuNyA1Ni40IDk3LjcgMTI5LjcgNDkuNWMuMyAwIDEuOS0uNiAxLjEuOC01LjggNS41LTExMS4zIDEyOS44LTE0LjEgMjI2LjQgNDkuOCA0OS41IDkwIDIuNSA5MCAyLjUgMzguNS01MC4xLS42LTEyNS45LS42LTEyNS45LTEwLTI0LjktNDUuNy00MC4xLTQ1LjctNDAuMWwyOC44LTMxLjhjMjQuNCAxMC41IDQzLjIgMzguNyA0My4yIDM4LjcuOC0yOS42LTIxLjktNjEuNC0yMS45LTYxLjRMMjU1LjEgOGw0NC4zIDUwLjFjLTIwLjUgMjguOC0yMS45IDYyLjYtMjEuOSA2Mi42IDEzLjgtMjMgNDMuNS0zOS4zIDQzLjUtMzkuM2wyOC41IDMxLjhjLTI3LjQgOC45LTQ1LjQgMzkuOS00NS40IDM5LjktMTUuOCAyOC41LTI3LjEgODkuNC42IDEyNy4zIDMyLjQgNDQuNiA4Ny43LTIuOCA4Ny43LTIuOCAxMDIuNy05MS45LTEwLjUtMjI1LTEwLjUtMjI1LTYuMS01LjUuOC0yLjguOC0yLjggNTAuMSAzNi41IDExNC42IDg0LjQgMTE2LjIgMjA0LjhDNTAwLjkgNDAwLjIgMzk5IDUwNCAyNTYuNSA1MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZFJpdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My4yIDMySDk0LjhDNDIuNCAzMiAwIDc0LjQgMCAxMjYuOHYyNTguNEMwIDQzNy42IDQyLjQgNDgwIDk0LjggNDgwaDI1OC40YzUyLjQgMCA5NC44LTQyLjQgOTQuOC05NC44VjEyNi44YzAtNTIuNC00Mi40LTk0LjgtOTQuOC05NC44ek0xNDQuOSAyMDAuOXY1Ni4zYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOVYxNTEuOWMwLTEzLjIgMTAuNy0yMy45IDIzLjktMjMuOWgxNTQuMmMwIDI3LTIxLjkgNDguOS00OC45IDQ4LjloLTU2LjNjLTEyLjMtLjYtMjQuNiAxMS42LTI0IDI0em0xNzYuMyA3MmgtNTYuM2MtMTIuMy0uNi0yNC42IDExLjYtMjQgMjR2NTYuM2MwIDI3LTIxLjkgNDguOS00OC45IDQ4LjlWMjQ3LjljMC0xMy4yIDEwLjctMjMuOSAyMy45LTIzLjloMTU0LjJjMCAyNy0yMS45IDQ4LjktNDguOSA0OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRkaXRBbGllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDAuMyAyMDMuNWMtMTUgMC0yOC4yIDYuMi0zNy45IDE1LjktMzUuNy0yNC43LTgzLjgtNDAuNi0xMzcuMS00Mi4zTDI5MyA1Mi4zbDg4LjIgMTkuOGMwIDIxLjYgMTcuNiAzOS4yIDM5LjIgMzkuMiAyMiAwIDM5LjctMTguMSAzOS43LTM5LjdzLTE3LjYtMzkuNy0zOS43LTM5LjdjLTE1LjQgMC0yOC43IDkuMy0zNS4zIDIybC05Ny40LTIxLjZjLTQuOS0xLjMtOS43IDIuMi0xMSA3LjFMMjQ2LjMgMTc3Yy01Mi45IDIuMi0xMDAuNSAxOC4xLTEzNi4zIDQyLjgtOS43LTEwLjEtMjMuNC0xNi4zLTM4LjQtMTYuMy01NS42IDAtNzMuOCA3NC42LTIyLjkgMTAwLjEtMS44IDcuOS0yLjYgMTYuMy0yLjYgMjQuNyAwIDgzLjggOTQuNCAxNTEuNyAyMTAuMyAxNTEuNyAxMTYuNCAwIDIxMC44LTY3LjkgMjEwLjgtMTUxLjcgMC04LjQtLjktMTcuMi0zLjEtMjUuMSA0OS45LTI1LjYgMzEuNS05OS43LTIzLjgtOTkuN3pNMTI5LjQgMzA4LjljMC0yMiAxNy42LTM5LjcgMzkuNy0zOS43IDIxLjYgMCAzOS4yIDE3LjYgMzkuMiAzOS43IDAgMjEuNi0xNy42IDM5LjItMzkuMiAzOS4yLTIyIC4xLTM5LjctMTcuNi0zOS43LTM5LjJ6bTIxNC4zIDkzLjVjLTM2LjQgMzYuNC0xMzkuMSAzNi40LTE3NS41IDAtNC0zLjUtNC05LjcgMC0xMy43IDMuNS0zLjUgOS43LTMuNSAxMy4yIDAgMjcuOCAyOC41IDEyMCAyOSAxNDkgMCAzLjUtMy41IDkuNy0zLjUgMTMuMiAwIDQuMSA0IDQuMSAxMC4yLjEgMTMuN3ptLS44LTU0LjJjLTIxLjYgMC0zOS4yLTE3LjYtMzkuMi0zOS4yIDAtMjIgMTcuNi0zOS43IDM5LjItMzkuNyAyMiAwIDM5LjcgMTcuNiAzOS43IDM5LjctLjEgMjEuNS0xNy43IDM5LjItMzkuNyAzOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRkaXRTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgzLjIgMzQ1LjVjMi43IDIuNyAyLjcgNi44IDAgOS4yLTI0LjUgMjQuNS05My44IDI0LjYtMTE4LjQgMC0yLjctMi40LTIuNy02LjUgMC05LjIgMi40LTIuNCA2LjUtMi40IDguOSAwIDE4LjcgMTkuMiA4MSAxOS42IDEwMC41IDAgMi40LTIuMyA2LjYtMi4zIDkgMHptLTkxLjMtNTMuOGMwLTE0LjktMTEuOS0yNi44LTI2LjUtMjYuOC0xNC45IDAtMjYuOCAxMS45LTI2LjggMjYuOCAwIDE0LjYgMTEuOSAyNi41IDI2LjggMjYuNSAxNC42IDAgMjYuNS0xMS45IDI2LjUtMjYuNXptOTAuNy0yNi44Yy0xNC42IDAtMjYuNSAxMS45LTI2LjUgMjYuOCAwIDE0LjYgMTEuOSAyNi41IDI2LjUgMjYuNSAxNC45IDAgMjYuOC0xMS45IDI2LjgtMjYuNSAwLTE0LjktMTEuOS0yNi44LTI2LjgtMjYuOHpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tOTkuNyAxNDAuNmMtMTAuMSAwLTE5IDQuMi0yNS42IDEwLjctMjQuMS0xNi43LTU2LjUtMjcuNC05Mi41LTI4LjZsMTguNy04NC4yIDU5LjUgMTMuNGMwIDE0LjYgMTEuOSAyNi41IDI2LjUgMjYuNSAxNC45IDAgMjYuOC0xMi4yIDI2LjgtMjYuOCAwLTE0LjYtMTEuOS0yNi44LTI2LjgtMjYuOC0xMC40IDAtMTkuMyA2LjItMjMuOCAxNC45bC02NS43LTE0LjZjLTMuMy0uOS02LjUgMS41LTcuNCA0LjhsLTIwLjUgOTIuOGMtMzUuNyAxLjUtNjcuOCAxMi4yLTkxLjkgMjguOS02LjUtNi44LTE1LjgtMTEtMjUuOS0xMS0zNy41IDAtNDkuOCA1MC40LTE1LjUgNjcuNS0xLjIgNS40LTEuOCAxMS0xLjggMTYuNyAwIDU2LjUgNjMuNyAxMDIuMyAxNDEuOSAxMDIuMyA3OC41IDAgMTQyLjItNDUuOCAxNDIuMi0xMDIuMyAwLTUuNy0uNi0xMS42LTIuMS0xNyAzMy42LTE3LjIgMjEuMi02Ny4yLTE2LjEtNjcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMS41IDMwNS41Yy0xMy44IDAtMjQuOS0xMS4xLTI0LjktMjQuNiAwLTEzLjggMTEuMS0yNC45IDI0LjktMjQuOSAxMy42IDAgMjQuNiAxMS4xIDI0LjYgMjQuOSAwIDEzLjYtMTEuMSAyNC42LTI0LjYgMjQuNnpNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4em0tMTMyLjMtNDEuMmMtOS40IDAtMTcuNyAzLjktMjMuOCAxMC0yMi40LTE1LjUtNTIuNi0yNS41LTg2LjEtMjYuNmwxNy40LTc4LjMgNTUuNCAxMi41YzAgMTMuNiAxMS4xIDI0LjYgMjQuNiAyNC42IDEzLjggMCAyNC45LTExLjMgMjQuOS0yNC45cy0xMS4xLTI0LjktMjQuOS0yNC45Yy05LjcgMC0xOCA1LjgtMjIuMSAxMy44bC02MS4yLTEzLjZjLTMtLjgtNi4xIDEuNC02LjkgNC40bC0xOS4xIDg2LjRjLTMzLjIgMS40LTYzLjEgMTEuMy04NS41IDI2LjgtNi4xLTYuNC0xNC43LTEwLjItMjQuMS0xMC4yLTM0LjkgMC00Ni4zIDQ2LjktMTQuNCA2Mi44LTEuMSA1LTEuNyAxMC4yLTEuNyAxNS41IDAgNTIuNiA1OS4yIDk1LjIgMTMyIDk1LjIgNzMuMSAwIDEzMi4zLTQyLjYgMTMyLjMtOTUuMiAwLTUuMy0uNi0xMC44LTEuOS0xNS44IDMxLjMtMTYgMTkuOC02Mi41LTE0LjktNjIuNXpNMzAyLjggMzMxYy0xOC4yIDE4LjItNzYuMSAxNy45LTkzLjYgMC0yLjItMi4yLTYuMS0yLjItOC4zIDAtMi41IDIuNS0yLjUgNi40IDAgOC42IDIyLjggMjIuOCA4Ny4zIDIyLjggMTEwLjIgMCAyLjUtMi4yIDIuNS02LjEgMC04LjYtMi4yLTIuMi02LjEtMi4yLTguMyAwem03LjctNzVjLTEzLjYgMC0yNC42IDExLjEtMjQuNiAyNC45IDAgMTMuNiAxMS4xIDI0LjYgMjQuNiAyNC42IDEzLjggMCAyNC45LTExLjEgMjQuOS0yNC42IDAtMTMuOC0xMS0yNC45LTI0LjktMjQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MS41MiAyODUuNTZjMzMuNjUgMCA4Mi4zNC02Ljk0IDgyLjM0LTQ3IC4yMi02Ljc0Ljg2LTEuODItMjAuODgtOTYuMjQtNC42Mi0xOS4xNS04LjY4LTI3Ljg0LTQyLjMxLTQ0LjY1LTI2LjA5LTEzLjM0LTgyLjkyLTM1LjM3LTk5LjczLTM1LjM3LTE1LjY2IDAtMjAuMiAyMC4xNy0zOC44NyAyMC4xNy0xOCAwLTMxLjMxLTE1LjA2LTQ4LjEyLTE1LjA2LTE2LjE0IDAtMjYuNjYgMTEtMzQuNzggMzMuNjItMjcuNSA3Ny41NS0yNi4yOCA3NC4yNy0yNi4xMiA3OC4yNyAwIDI0LjggOTcuNjQgMTA2LjExIDIyOC40NyAxMDYuMTFNNDI5IDI1NC44NGM0LjY1IDIyIDQuNjUgMjQuMzUgNC42NSAyNy4yNSAwIDM3LjY2LTQyLjMzIDU4LjU2LTk4IDU4LjU2LTEyNS43NC4wOC0yMzUuOTEtNzMuNjUtMjM1LjkxLTEyMi4zM2E0OS41NSA0OS41NSAwIDAgMSA0LjA2LTE5LjcyQzU4LjU2IDIwMC44NiAwIDIwOC45MyAwIDI2MC42M2MwIDg0LjY3IDIwMC42MyAxODkgMzU5LjQ5IDE4OSAxMjEuNzkgMCAxNTIuNTEtNTUuMDggMTUyLjUxLTk4LjU4IDAtMzQuMjEtMjkuNTktNzMuMDUtODIuOTMtOTYuMjRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVucmVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNCAxNjkuMWMwIDExMC40LTYxIDIwNS40LTE0Ny42IDI0Ny40QzMwIDM3My4yIDggMzE3LjcgOCAyNTYuNiA4IDEzMy45IDk3LjEgMzIuMiAyMTQgMTIuNXYxNTYuNnpNMjU1IDUwNGMtNDIuOSAwLTgzLjMtMTEtMTE4LjUtMzAuNEMxOTMuNyA0MzcuNSAyMzkuOSAzODIuOSAyNTUgMzE5YzE1LjUgNjMuOSA2MS43IDExOC41IDExOC44IDE1NC43QzMzOC43IDQ5MyAyOTguMyA1MDQgMjU1IDUwNHptMTkwLjYtODcuNUMzNTkgMzc0LjUgMjk4IDI3OS42IDI5OCAxNjkuMVYxMi41YzExNi45IDE5LjcgMjA2IDEyMS40IDIwNiAyNDQuMSAwIDYxLjEtMjIgMTE2LjYtNTguNCAxNTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVwbHlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0ODBIMTI4QzU3LjYgNDgwIDAgNDIyLjQgMCAzNTJWMTYwQzAgODkuNiA1Ny42IDMyIDEyOCAzMmgxOTJjNzAuNCAwIDEyOCA1Ny42IDEyOCAxMjh2MTkyYzAgNzAuNC01Ny42IDEyOC0xMjggMTI4ek0xOTMuNCAyNzMuMmMtNi4xLTItMTEuNi0zLjEtMTYuNC0zLjEtNy4yIDAtMTMuNSAxLjktMTguOSA1LjYtNS40IDMuNy05LjYgOS0xMi44IDE1LjhoLTEuMWwtNC4yLTE4LjNoLTI4djEzOC45aDM2LjF2LTg5LjdjMS41LTUuNCA0LjQtOS44IDguNy0xMy4yIDQuMy0zLjQgOS44LTUuMSAxNi4yLTUuMSA0LjYgMCA5LjggMSAxNS42IDMuMWw0LjgtMzR6bTExNS4yIDEwMy40Yy0zLjIgMi40LTcuNyA0LjgtMTMuNyA3LjEtNiAyLjMtMTIuOCAzLjUtMjAuNCAzLjUtMTIuMiAwLTIxLjEtMy0yNi41LTguOS01LjUtNS45LTguNS0xNC43LTktMjYuNGg4My4zYy45LTQuOCAxLjYtOS40IDIuMS0xMy45LjUtNC40LjctOC42LjctMTIuNSAwLTEwLjctMS42LTE5LjctNC43LTI2LjktMy4yLTcuMi03LjMtMTMtMTIuNS0xNy4yLTUuMi00LjMtMTEuMS03LjMtMTcuOC05LjItNi43LTEuOC0xMy41LTIuOC0yMC42LTIuOC0yMS4xIDAtMzcuNSA2LjEtNDkuMiAxOC4zcy0xNy41IDMwLjUtMTcuNSA1NWMwIDIyLjggNS4yIDQwLjcgMTUuNiA1My43IDEwLjQgMTMuMSAyNi44IDE5LjYgNDkuMiAxOS42IDEwLjcgMCAyMC45LTEuNSAzMC40LTQuNiA5LjUtMy4xIDE3LjEtNi44IDIyLjYtMTEuMmwtMTItMjMuNnptLTIxLjgtNzAuM2MzLjggNS40IDUuMyAxMy4xIDQuNiAyMy4xaC01MS43Yy45LTkuNCAzLjctMTcgOC4yLTIyLjYgNC41LTUuNiAxMS41LTguNSAyMS04LjUgOC4yLS4xIDE0LjEgMi42IDE3LjkgOHptNzkuOSAyLjVjNC4xIDMuOSA5LjQgNS44IDE2LjEgNS44IDcgMCAxMi42LTEuOSAxNi43LTUuOHM2LjEtOS4xIDYuMS0xNS42LTItMTEuNi02LjEtMTUuNGMtNC4xLTMuOC05LjYtNS43LTE2LjctNS43LTYuNyAwLTEyIDEuOS0xNi4xIDUuNy00LjEgMy44LTYuMSA4LjktNi4xIDE1LjRzMiAxMS43IDYuMSAxNS42em0wIDEwMC41YzQuMSAzLjkgOS40IDUuOCAxNi4xIDUuOCA3IDAgMTIuNi0xLjkgMTYuNy01LjhzNi4xLTkuMSA2LjEtMTUuNi0yLTExLjYtNi4xLTE1LjRjLTQuMS0zLjgtOS42LTUuNy0xNi43LTUuNy02LjcgMC0xMiAxLjktMTYuMSA1LjctNC4xIDMuOC02LjEgOC45LTYuMSAxNS40IDAgNi42IDIgMTEuNyA2LjEgMTUuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVzZWFyY2hnYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0yNjIuMiAzMzQuNGMtNi42IDMtMzMuMiA2LTUwLTE0LjItOS4yLTEwLjYtMjUuMy0zMy4zLTQyLjItNjMuNi04LjkgMC0xNC43IDAtMjEuNC0uNnY0Ni40YzAgMjMuNSA2IDIxLjIgMjUuOCAyMy45djguMWMtNi45LS4zLTIzLjEtLjgtMzUuNi0uOC0xMy4xIDAtMjYuMS42LTMzLjYuOHYtOC4xYzE1LjUtMi45IDIyLTEuMyAyMi0yMy45VjIyNWMwLTIyLjYtNi40LTIxLTIyLTIzLjlWMTkzYzI1LjggMSA1My4xLS42IDcwLjktLjYgMzEuNyAwIDU1LjkgMTQuNCA1NS45IDQ1LjYgMCAyMS4xLTE2LjcgNDIuMi0zOS4yIDQ3LjUgMTMuNiAyNC4yIDMwIDQ1LjYgNDIuMiA1OC45IDcuMiA3LjggMTcuMiAxNC43IDI3LjIgMTQuN3Y3LjN6bTIyLjktMTM1Yy0yMy4zIDAtMzIuMi0xNS43LTMyLjItMzIuMlYxNjdjMC0xMi4yIDguOC0zMC40IDM0LTMwLjRzMzAuNCAxNy45IDMwLjQgMTcuOWwtMTAuNyA3LjJzLTUuNS0xMi41LTE5LjctMTIuNWMtNy45IDAtMTkuNyA3LjMtMTkuNyAxOS43djI2LjhjMCAxMy40IDYuNiAyMy4zIDE3LjkgMjMuMyAxNC4xIDAgMjEuNS0xMC45IDIxLjUtMjYuOGgtMTcuOXYtMTAuN2gzMC40YzAgMjAuNSA0LjcgNDkuOS0zNCA0OS45em0tMTE2LjUgNDQuN2MtOS40IDAtMTMuNi0uMy0yMC0uOHYtNjkuN2M2LjQtLjYgMTUtLjYgMjIuNS0uNiAyMy4zIDAgMzcuMiAxMi4yIDM3LjIgMzQuNSAwIDIxLjktMTUgMzYuNi0zOS43IDM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlc29sdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODEuMiAyNzguMmM0Ni0xMy4zIDQ5LjYtMjMuNSA0NC00My40TDMxNCAxOTUuNWMtNi4xLTIwLjktMTguNC0yOC4xLTcxLjEtMTIuOEw1NC43IDIzNi44bDI4LjYgOTguNiAxOTcuOS01Ny4yek0yNDguNSA4QzEzMS40IDggMzMuMiA4OC43IDcuMiAxOTcuNWwyMjEuOS02My45YzM0LjgtMTAuMiA1NC4yLTExLjcgNzkuMy04LjIgMzYuMyA2LjEgNTIuNyAyNSA2MS40IDU1LjJsMTAuNyAzNy44YzguMiAyOC4xIDEgNTAuNi0yMy41IDczLjYtMTkuNCAxNy40LTMxLjIgMjQuNS02MS40IDMzLjJMMjAzIDM1MS44bDIyMC40IDI3LjEgOS43IDM0LjItNDguMSAxMy4zLTI4Ni44LTM3LjMgMjMgODAuMmMzNi44IDIyIDgwLjMgMzQuNyAxMjYuMyAzNC43IDEzNyAwIDI0OC41LTExMS40IDI0OC41LTI0OC4zQzQ5NyAxMTkuNCAzODUuNSA4IDI0OC41IDh6TTM4LjMgMzg4LjZMMCAyNTYuOGMwIDQ4LjUgMTQuMyA5My40IDM4LjMgMTMxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJldiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODkuNjcgMjc0Ljg5YTY1LjU3IDY1LjU3IDAgMSAxLTY1LjU2LTY1LjU2IDY1LjY0IDY1LjY0IDAgMCAxIDY1LjU2IDY1LjU2em0xMzkuNTUtNS4wNWgtLjEzYTIwNC42OSAyMDQuNjkgMCAwIDAtNzQuMzItMTUzbC00NS4zOCAyNi4yYTE1Ny4wNyAxNTcuMDcgMCAwIDEgNzEuODEgMTMxLjg0QzM4MS4yIDM2MS41IDMxMC43MyA0MzIgMjI0LjExIDQzMlM2NyAzNjEuNSA2NyAyNzQuODhjMC04MS44OCA2My0xNDkuMjcgMTQzLTE1Ni40M3YzOS4xMmwxMDguNzctNjIuNzlMMjEwIDMydjM4LjMyYy0xMDYuNyA3LjI1LTE5MSA5Ni0xOTEgMjA0LjU3IDAgMTExLjU5IDg5LjEyIDIwMi4yOSAyMDAuMDYgMjA1di4xMWgyMTAuMTZWMjY5Ljg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2NrZXRjaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4NC4wNDYsMjI0LjhhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNywzNC4yMTcsMCwwLDAsMjg0LjA0NiwyMjQuOFptLTExMC40NSwwYTM0LjExNCwzNC4xMTQsMCwxLDAsMzQuMzE3LDM0LjExM0EzNC4yMTcsMzQuMjE3LDAsMCwwLDE3My42LDIyNC44Wm0yMjAuOTIzLDBhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNSwzNC4yMTUsMCwwLDAsMzk0LjUxOSwyMjQuOFptMTUzLjgwNy01NS4zMTljLTE1LjUzNS0yNC4xNzItMzcuMzEtNDUuNTctNjQuNjgxLTYzLjYxOC01Mi44ODYtMzQuODE3LTEyMi4zNzQtNTQtMTk1LjY2Ni01NGE0MDUuOTc1LDQwNS45NzUsMCwwLDAtNzIuMDMyLDYuMzU3LDIzOC41MjQsMjM4LjUyNCwwLDAsMC00OS41MS0zNi41ODhDOTkuNjg0LTExLjcsNDAuODU5LjcxMSwxMS4xMzUsMTEuNDIxQTE0LjI5MSwxNC4yOTEsMCwwLDAsNS41OCwzNC43ODJDMjYuNTQyLDU2LjQ1OCw2MS4yMjIsOTkuMyw1Mi43LDEzOC4yNTJjLTMzLjE0MiwzMy45LTUxLjExMiw3NC43NzYtNTEuMTEyLDExNy4zMzcsMCw0My4zNzIsMTcuOTcsODQuMjQ4LDUxLjExMiwxMTguMTQ4LDguNTI2LDM4Ljk1Ni0yNi4xNTQsODEuODE2LTQ3LjExNiwxMDMuNDkxYTE0LjI4NCwxNC4yODQsMCwwLDAsNS41NTUsMjMuMzRjMjkuNzI0LDEwLjcwOSw4OC41NDksMjMuMTQ3LDE1NS4zMjQtMTAuMmEyMzguNjc5LDIzOC42NzksMCwwLDAsNDkuNTEtMzYuNTg5QTQwNS45NzIsNDA1Ljk3MiwwLDAsMCwyODgsNDYwLjE0YzczLjMxMywwLDE0Mi44LTE5LjE1OSwxOTUuNjY3LTUzLjk3NSwyNy4zNzEtMTguMDQ5LDQ5LjE0NS0zOS40MjYsNjQuNjc5LTYzLjYxOSwxNy4zMDktMjYuOTIzLDI2LjA3LTU1LjkxNiwyNi4wNy04Ni4xMjVDNTc0LjM5NCwyMjUuNCw1NjUuNjM0LDE5Ni40Myw1NDguMzI2LDE2OS40ODVaTTI4NC45ODcsNDA5LjlhMzQ1LjY1LDM0NS42NSwwLDAsMS04OS40NDYtMTEuNWwtMjAuMTI5LDE5LjM5M2ExODQuMzY2LDE4NC4zNjYsMCwwLDEtMzcuMTM4LDI3LjU4NSwxNDUuNzY3LDE0NS43NjcsMCwwLDEtNTIuNTIyLDE0Ljg3Yy45ODMtMS43NzEsMS44ODEtMy41NjMsMi44NDItNS4zNTZxMzAuMjU4LTU1LjY4LDE2LjMyNS0xMDAuMDc4Yy0zMi45OTItMjUuOTYyLTUyLjc3OC01OS4yLTUyLjc3OC05NS40LDAtODMuMSwxMDQuMjU0LTE1MC40NjksMjMyLjg0Ni0xNTAuNDY5czIzMi44NjcsNjcuMzczLDIzMi44NjcsMTUwLjQ2OUM1MTcuODU0LDM0Mi41MjUsNDEzLjYsNDA5LjksMjg0Ljk4Nyw0MDkuOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9ja3JtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNTcuNCA0MTkuNWgtOTBsLTExMi0xMzEuM2MtMTcuOS0yMC40LTMuOS01Ni4xIDI2LjYtNTYuMWg3NS4zbC04NC42LTk5LjMtODQuMyA5OC45aC05MEwxOTMuNSA2Ny4yYzE0LjQtMTguNCA0MS4zLTE3LjMgNTQuNSAwbDE1Ny43IDE4NS4xYzE5IDIyLjggMiA1Ny4yLTI3LjYgNTYuMS0uNiAwLTc0LjIuMi03NC4yLjJsMTAxLjUgMTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA4LjUyLDI0OS43NSw0ODYuNywyMzYuMjRjLS4xNy0yLS4zNC0zLjkzLS41NS01Ljg4bDE4LjcyLTE3LjVhNy4zNSw3LjM1LDAsMCwwLTIuNDQtMTIuMjVsLTI0LTljLS41NC0xLjg4LTEuMDgtMy43OC0xLjY3LTUuNjRsMTUtMjAuODNhNy4zNSw3LjM1LDAsMCwwLTQuNzktMTEuNTRsLTI1LjQyLTQuMTVjLS45LTEuNzMtMS43OS0zLjQ1LTIuNzMtNS4xNWwxMC42OC0yMy40MmE3LjM1LDcuMzUsMCwwLDAtNi45NS0xMC4zOWwtMjUuODIuOTFxLTEuNzktMi4yMi0zLjYxLTQuNEw0MzksODEuODRBNy4zNiw3LjM2LDAsMCwwLDQzMC4xNiw3M0w0MDUsNzguOTNxLTIuMTctMS44My00LjQtMy42MWwuOTEtMjUuODJhNy4zNSw3LjM1LDAsMCwwLTEwLjM5LTdMMzY3LjcsNTMuMjNjLTEuNy0uOTQtMy40My0xLjg0LTUuMTUtMi43M0wzNTguNCwyNS4wOGE3LjM1LDcuMzUsMCwwLDAtMTEuNTQtNC43OUwzMjYsMzUuMjZjLTEuODYtLjU5LTMuNzUtMS4xMy01LjY0LTEuNjdsLTktMjRhNy4zNSw3LjM1LDAsMCwwLTEyLjI1LTIuNDRsLTE3LjUsMTguNzJjLTEuOTUtLjIxLTMuOTEtLjM4LTUuODgtLjU1TDI2Mi4yNSwzLjQ4YTcuMzUsNy4zNSwwLDAsMC0xMi41LDBMMjM2LjI0LDI1LjNjLTIsLjE3LTMuOTMuMzQtNS44OC41NUwyMTIuODYsNy4xM2E3LjM1LDcuMzUsMCwwLDAtMTIuMjUsMi40NGwtOSwyNGMtMS44OS41NS0zLjc5LDEuMDgtNS42NiwxLjY4bC0yMC44Mi0xNWE3LjM1LDcuMzUsMCwwLDAtMTEuNTQsNC43OWwtNC4xNSwyNS40MWMtMS43My45LTMuNDUsMS43OS01LjE2LDIuNzNMMTIwLjg4LDQyLjU1YTcuMzUsNy4zNSwwLDAsMC0xMC4zOSw3bC45MiwyNS44MWMtMS40OSwxLjE5LTMsMi4zOS00LjQyLDMuNjFMODEuODQsNzNBNy4zNiw3LjM2LDAsMCwwLDczLDgxLjg0TDc4LjkzLDEwN2MtMS4yMywxLjQ1LTIuNDMsMi45My0zLjYyLDQuNDFsLTI1LjgxLS45MWE3LjQyLDcuNDIsMCwwLDAtNi4zNywzLjI2LDcuMzUsNy4zNSwwLDAsMC0uNTcsNy4xM2wxMC42NiwyMy40MWMtLjk0LDEuNy0xLjgzLDMuNDMtMi43Myw1LjE2TDI1LjA4LDE1My42YTcuMzUsNy4zNSwwLDAsMC00Ljc5LDExLjU0bDE1LDIwLjgyYy0uNTksMS44Ny0xLjEzLDMuNzctMS42OCw1LjY2bC0yNCw5YTcuMzUsNy4zNSwwLDAsMC0yLjQ0LDEyLjI1bDE4LjcyLDE3LjVjLS4yMSwxLjk1LS4zOCwzLjkxLS41NSw1Ljg4TDMuNDgsMjQ5Ljc1YTcuMzUsNy4zNSwwLDAsMCwwLDEyLjVMMjUuMywyNzUuNzZjLjE3LDIsLjM0LDMuOTIuNTUsNS44N0w3LjEzLDI5OS4xM2E3LjM1LDcuMzUsMCwwLDAsMi40NCwxMi4yNWwyNCw5Yy41NSwxLjg5LDEuMDgsMy43OCwxLjY4LDUuNjVsLTE1LDIwLjgzYTcuMzUsNy4zNSwwLDAsMCw0Ljc5LDExLjU0bDI1LjQyLDQuMTVjLjksMS43MiwxLjc5LDMuNDUsMi43Myw1LjE0TDQyLjU2LDM5MS4xMmE3LjM1LDcuMzUsMCwwLDAsLjU3LDcuMTMsNy4xMyw3LjEzLDAsMCwwLDYuMzcsMy4yNmwyNS44My0uOTFxMS43NywyLjIyLDMuNiw0LjRMNzMsNDMwLjE2QTcuMzYsNy4zNiwwLDAsMCw4MS44NCw0MzlMMTA3LDQzMy4wN3EyLjE4LDEuODMsNC40MSwzLjYxbC0uOTIsMjUuODJhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LDYuOTVsMjMuNDMtMTAuNjhjMS42OS45NCwzLjQyLDEuODMsNS4xNCwyLjczbDQuMTUsMjUuNDJhNy4zNCw3LjM0LDAsMCwwLDExLjU0LDQuNzhsMjAuODMtMTVjMS44Ni42LDMuNzYsMS4xMyw1LjY1LDEuNjhsOSwyNGE3LjM2LDcuMzYsMCwwLDAsMTIuMjUsMi40NGwxNy41LTE4LjcyYzEuOTUuMjEsMy45Mi4zOCw1Ljg4LjU1bDEzLjUxLDIxLjgyYTcuMzUsNy4zNSwwLDAsMCwxMi41LDBsMTMuNTEtMjEuODJjMi0uMTcsMy45My0uMzQsNS44OC0uNTZsMTcuNSwxOC43M2E3LjM2LDcuMzYsMCwwLDAsMTIuMjUtMi40NGw5LTI0YzEuODktLjU1LDMuNzgtMS4wOCw1LjY1LTEuNjhsMjAuODIsMTVhNy4zNCw3LjM0LDAsMCwwLDExLjU0LTQuNzhsNC4xNS0yNS40MmMxLjcyLS45LDMuNDUtMS43OSw1LjE1LTIuNzNsMjMuNDIsMTAuNjhhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LTYuOTVsLS45MS0yNS44MnEyLjIyLTEuNzksNC40LTMuNjFMNDMwLjE2LDQzOWE3LjM2LDcuMzYsMCwwLDAsOC44NC04Ljg0TDQzMy4wNyw0MDVxMS44My0yLjE3LDMuNjEtNC40bDI1LjgyLjkxYTcuMjMsNy4yMywwLDAsMCw2LjM3LTMuMjYsNy4zNSw3LjM1LDAsMCwwLC41OC03LjEzTDQ1OC43NywzNjcuN2MuOTQtMS43LDEuODMtMy40MywyLjczLTUuMTVsMjUuNDItNC4xNWE3LjM1LDcuMzUsMCwwLDAsNC43OS0xMS41NGwtMTUtMjAuODNjLjU5LTEuODcsMS4xMy0zLjc2LDEuNjctNS42NWwyNC05YTcuMzUsNy4zNSwwLDAsMCwyLjQ0LTEyLjI1bC0xOC43Mi0xNy41Yy4yMS0xLjk1LjM4LTMuOTEuNTUtNS44N2wyMS44Mi0xMy41MWE3LjM1LDcuMzUsMCwwLDAsMC0xMi41Wm0tMTUxLDEyOS4wOEExMy45MSwxMy45MSwwLDAsMCwzNDEsMzg5LjUxbC03LjY0LDM1LjY3QTE4Ny41MSwxODcuNTEsMCwwLDEsMTc3LDQyNC40NGwtNy42NC0zNS42NmExMy44NywxMy44NywwLDAsMC0xNi40Ni0xMC42OGwtMzEuNTEsNi43NmExODcuMzgsMTg3LjM4LDAsMCwxLTE2LjI2LTE5LjIxSDI1OC4zYzEuNzIsMCwyLjg5LS4yOSwyLjg5LTEuOTFWMzA5LjU1YzAtMS41Ny0xLjE3LTEuOTEtMi44OS0xLjkxSDIxMy40N2wuMDUtMzQuMzVIMjYyYzQuNDEsMCwyMy42NiwxLjI4LDI5Ljc5LDI1Ljg3LDEuOTEsNy41NSw2LjE3LDMyLjE0LDkuMDYsNDAsMi44OSw4LjgyLDE0LjYsMjYuNDYsMjcuMSwyNi40Nkg0MDdhMTg3LjMsMTg3LjMsMCwwLDEtMTcuMzQsMjAuMDlabTI1Ljc3LDM0LjQ5QTE1LjI0LDE1LjI0LDAsMSwxLDM2OCwzOTguMDhoLjQ0QTE1LjIzLDE1LjIzLDAsMCwxLDM4My4yNCw0MTMuMzJabS0yMjUuNjItLjY4YTE1LjI0LDE1LjI0LDAsMSwxLTE1LjI1LTE1LjI1aC40NUExNS4yNSwxNS4yNSwwLDAsMSwxNTcuNjIsNDEyLjY0Wk02OS41NywyMzQuMTVsMzIuODMtMTQuNmExMy44OCwxMy44OCwwLDAsMCw3LjA2LTE4LjMzTDEwMi42OSwxODZoMjYuNTZWMzA1LjczSDc1LjY1QTE4Ny42NSwxODcuNjUsMCwwLDEsNjkuNTcsMjM0LjE1Wk01OC4zMSwxOTguMDlhMTUuMjQsMTUuMjQsMCwwLDEsMTUuMjMtMTUuMjVINzRhMTUuMjQsMTUuMjQsMCwxLDEtMTUuNjcsMTUuMjRabTE1NS4xNiwyNC40OS4wNS0zNS4zMmg2My4yNmMzLjI4LDAsMjMuMDcsMy43NywyMy4wNywxOC42MiwwLDEyLjI5LTE1LjE5LDE2LjctMjcuNjgsMTYuN1pNMzk5LDMwNi43MWMtOS44LDEuMTMtMjAuNjMtNC4xMi0yMi0xMC4wOS01Ljc4LTMyLjQ5LTE1LjM5LTM5LjQtMzAuNTctNTEuNCwxOC44Ni0xMS45NSwzOC40Ni0yOS42NCwzOC40Ni01My4yNiwwLTI1LjUyLTE3LjQ5LTQxLjU5LTI5LjQtNDkuNDgtMTYuNzYtMTEtMzUuMjgtMTMuMjMtNDAuMjctMTMuMjNIMTE2LjMyQTE4Ny40OSwxODcuNDksMCwwLDEsMjIxLjIxLDcwLjA2bDIzLjQ3LDI0LjZhMTMuODIsMTMuODIsMCwwLDAsMTkuNi40NGwyNi4yNi0yNWExODcuNTEsMTg3LjUxLDAsMCwxLDEyOC4zNyw5MS40M2wtMTgsNDAuNTdBMTQsMTQsMCwwLDAsNDA4LDIyMC40M2wzNC41OSwxNS4zM2ExODcuMTIsMTg3LjEyLDAsMCwxLC40LDMyLjU0SDQyMy43MWMtMS45MSwwLTIuNjksMS4yNy0yLjY5LDMuMTN2OC44MkM0MjEsMzAxLDQwOS4zMSwzMDUuNTgsMzk5LDMwNi43MVpNMjQwLDYwLjIxQTE1LjI0LDE1LjI0LDAsMCwxLDI1NS4yMSw0NWguNDVBMTUuMjQsMTUuMjQsMCwxLDEsMjQwLDYwLjIxWk00MzYuODQsMjE0YTE1LjI0LDE1LjI0LDAsMSwxLDAtMzAuNDhoLjQ0YTE1LjI0LDE1LjI0LDAsMCwxLS40NCwzMC40OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FmYXJpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NC42OSwyNzQuNjlsLTM3LjM4LTM3LjM4TDE2NiwzNDZaTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhaTTQxMS44NSwxODIuNzlsMTQuNzgtNi4xM0E4LDgsMCwwLDEsNDM3LjA4LDE4MWgwYTgsOCwwLDAsMS00LjMzLDEwLjQ2TDQxOCwxOTcuNTdhOCw4LDAsMCwxLTEwLjQ1LTQuMzNoMEE4LDgsMCwwLDEsNDExLjg1LDE4Mi43OVpNMzE0LjQzLDk0bDYuMTItMTQuNzhBOCw4LDAsMCwxLDMzMSw3NC45MmgwYTgsOCwwLDAsMSw0LjMzLDEwLjQ1bC02LjEzLDE0Ljc4YTgsOCwwLDAsMS0xMC40NSw0LjMzaDBBOCw4LDAsMCwxLDMxNC40Myw5NFpNMjU2LDYwaDBhOCw4LDAsMCwxLDgsOFY4NGE4LDgsMCwwLDEtOCw4aDBhOCw4LDAsMCwxLTgtOFY2OEE4LDgsMCwwLDEsMjU2LDYwWk0xODEsNzQuOTJhOCw4LDAsMCwxLDEwLjQ2LDQuMzNMMTk3LjU3LDk0YTgsOCwwLDEsMS0xNC43OCw2LjEybC02LjEzLTE0Ljc4QTgsOCwwLDAsMSwxODEsNzQuOTJabS02My41OCw0Mi40OWgwYTgsOCwwLDAsMSwxMS4zMSwwTDE0MCwxMjguNzJBOCw4LDAsMCwxLDE0MCwxNDBoMGE4LDgsMCwwLDEtMTEuMzEsMGwtMTEuMzEtMTEuMzFBOCw4LDAsMCwxLDExNy40MSwxMTcuNDFaTTYwLDI1NmgwYTgsOCwwLDAsMSw4LThIODRhOCw4LDAsMCwxLDgsOGgwYTgsOCwwLDAsMS04LDhINjhBOCw4LDAsMCwxLDYwLDI1NlptNDAuMTUsNzMuMjEtMTQuNzgsNi4xM0E4LDgsMCwwLDEsNzQuOTIsMzMxaDBhOCw4LDAsMCwxLDQuMzMtMTAuNDZMOTQsMzE0LjQzYTgsOCwwLDAsMSwxMC40NSw0LjMzaDBBOCw4LDAsMCwxLDEwMC4xNSwzMjkuMjFabTQuMzMtMTM2aDBBOCw4LDAsMCwxLDk0LDE5Ny41N2wtMTQuNzgtNi4xMkE4LDgsMCwwLDEsNzQuOTIsMTgxaDBhOCw4LDAsMCwxLDEwLjQ1LTQuMzNsMTQuNzgsNi4xM0E4LDgsMCwwLDEsMTA0LjQ4LDE5My4yNFpNMTk3LjU3LDQxOGwtNi4xMiwxNC43OGE4LDgsMCwwLDEtMTQuNzktNi4xMmw2LjEzLTE0Ljc4QTgsOCwwLDEsMSwxOTcuNTcsNDE4Wk0yNjQsNDQ0YTgsOCwwLDAsMS04LDhoMGE4LDgsMCwwLDEtOC04VjQyOGE4LDgsMCwwLDEsOC04aDBhOCw4LDAsMCwxLDgsOFptNjctNi45MmgwYTgsOCwwLDAsMS0xMC40Ni00LjMzTDMxNC40Myw0MThhOCw4LDAsMCwxLDQuMzMtMTAuNDVoMGE4LDgsMCwwLDEsMTAuNDUsNC4zM2w2LjEzLDE0Ljc4QTgsOCwwLDAsMSwzMzEsNDM3LjA4Wm02My41OC00Mi40OWgwYTgsOCwwLDAsMS0xMS4zMSwwTDM3MiwzODMuMjhBOCw4LDAsMCwxLDM3MiwzNzJoMGE4LDgsMCwwLDEsMTEuMzEsMGwxMS4zMSwxMS4zMUE4LDgsMCwwLDEsMzk0LjU5LDM5NC41OVpNMjg2LjI1LDI4Ni4yNSwxMTAuMzQsNDAxLjY2LDIyNS43NSwyMjUuNzUsNDAxLjY2LDExMC4zNFpNNDM3LjA4LDMzMWgwYTgsOCwwLDAsMS0xMC40NSw0LjMzbC0xNC43OC02LjEzYTgsOCwwLDAsMS00LjMzLTEwLjQ1aDBBOCw4LDAsMCwxLDQxOCwzMTQuNDNsMTQuNzgsNi4xMkE4LDgsMCwwLDEsNDM3LjA4LDMzMVpNNDQ0LDI2NEg0MjhhOCw4LDAsMCwxLTgtOGgwYTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOGgwQTgsOCwwLDAsMSw0NDQsMjY0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWxlc2ZvcmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OC44OSAyNDUuNjRoLTI2LjM1Yy42OS01LjE2IDMuMzItMTQuMTIgMTMuNjQtMTQuMTIgNi43NSAwIDExLjk3IDMuODIgMTIuNzEgMTQuMTJ6bTEzNi42Ni0xMy44OGMtLjQ3IDAtMTQuMTEtMS43Ny0xNC4xMSAyMHMxMy42MyAyMCAxNC4xMSAyMGMxMyAwIDE0LjExLTEzLjU0IDE0LjExLTIwIDAtMjEuNzYtMTMuNjYtMjAtMTQuMTEtMjB6bS0yNDMuMjIgMjMuNzZhOC42MyA4LjYzIDAgMCAwLTMuMjkgNy4yOWMwIDQuNzggMi4wOCA2LjA1IDMuMjkgNy4wNSA0LjcgMy43IDE1LjA3IDIuMTIgMjAuOTMuOTV2LTE2Ljk0Yy01LjMyLTEuMDctMTYuNzMtMS45Ni0yMC45MyAxLjY1ek02NDAgMjMyYzAgODcuNTgtODAgMTU0LjM5LTE2NS4zNiAxMzYuNDMtMTguMzcgMzMtNzAuNzMgNzAuNzUtMTMyLjIgNDEuNjMtNDEuMTYgOTYuMDUtMTc3Ljg5IDkyLjE4LTIxMy44MS01LjE3QzguOTEgNDI4Ljc4LTUwLjE5IDI2Ni41MiA1My4zNiAyMDUuNjEgMTguNjEgMTI2LjE4IDc2IDMyIDE2Ny42NyAzMmExMjQuMjQgMTI0LjI0IDAgMCAxIDk4LjU2IDQ4LjdjMjAuNy0yMS40IDQ5LjQtMzQuODEgODEuMTUtMzQuODEgNDIuMzQgMCA3OSAyMy41MiA5OC44IDU4LjU3QzUzOSA2My43OCA2NDAgMTMyLjY5IDY0MCAyMzJ6bS01MTkuNTUgMzEuOGMwLTExLjc2LTExLjY5LTE1LjE3LTE3Ljg3LTE3LjE3LTUuMjctMi4xMS0xMy40MS0zLjUxLTEzLjQxLTguOTQgMC05LjQ2IDE3LTYuNjYgMjUuMTctMi4xMiAwIDAgMS4xNy43MSAxLjY0LS40Ny4yNC0uNyAyLjM2LTYuNTggMi41OS03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy0xMi4zMy03LjYzLTQwLjctOC41MS00MC43IDEyLjcgMCAxMi40NiAxMS40OSAxNS40NCAxNy44OCAxNy4xNyA0LjcyIDEuNTggMTMuMTcgMyAxMy4xNyA4LjcgMCA0LTMuNTMgNy4wNi05LjE3IDcuMDZhMzEuNzYgMzEuNzYgMCAwIDEtMTktNi4zNWMtLjQ3LS4yMy0xLjQyLS43MS0xLjY1LjcxbC0yLjQgNy40N2MtLjQ3Ljk0LjIzIDEuMTguMjMgMS40MSAxLjc1IDEuNCAxMC4zIDYuNTkgMjIuODIgNi41OSAxMy4xNyAwIDIxLjQtNy4wNiAyMS40LTE4LjExem0zMi00Mi41OGMtMTAuMTMgMC0xOC42NiAzLjE3LTIxLjQgNS4xOGExIDEgMCAwIDAtLjI0IDEuNDFsMi41OSA3LjA2YTEgMSAwIDAgMCAxLjE4LjdjLjY1IDAgNi44LTQgMTYuOTMtNCA0IDAgNy4wNi43MSA5LjE4IDIuMzYgMy42IDIuOCAzLjA2IDguMjkgMy4wNiAxMC41OC00Ljc5LS4zLTE5LjExLTMuNDQtMjkuNDEgMy43NmExNi45MiAxNi45MiAwIDAgMC03LjM0IDE0LjU0YzAgNS45IDEuNTEgMTAuNCA2LjU5IDE0LjM1IDEyLjI0IDguMTYgMzYuMjggMiAzOC4xIDEuNDEgMS41OC0uMzIgMy41My0uNjYgMy41My0xLjg4di0zMy44OGMuMDQtNC42MS4zMi0yMS42NC0yMi43OC0yMS42NHpNMTk5IDIwMC4yNGExLjExIDEuMTEgMCAwIDAtMS4xOC0xLjE4SDE4OGExLjExIDEuMTEgMCAwIDAtMS4xNyAxLjE4djc5YTEuMTEgMS4xMSAwIDAgMCAxLjE3IDEuMThoOS44OGExLjExIDEuMTEgMCAwIDAgMS4xOC0xLjE4em01NS43NSAyOC45M2MtMi4xLTIuMzEtNi43OS03LjUzLTE3LjY1LTcuNTMtMy41MSAwLTE0LjE2LjIzLTIwLjcgOC45NC02LjM1IDcuNjMtNi41OCAxOC4xMS02LjU4IDIxLjQxIDAgMy4xMi4xNSAxNC4yNiA3LjA2IDIxLjE3IDIuNjQgMi45MSA5LjA2IDguMjMgMjIuODEgOC4yMyAxMC44MiAwIDE2LjQ3LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzUtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2Ljk0LTE2LjdoMzcuMTdhMS4yMyAxLjIzIDAgMCAwIDEuMTctLjk0Yy0uMjkgMCAyLjA3LTE0LjctNi4wOS0yNC4yM3ptMzYuNjkgNTIuNjljMTMuMTcgMCAyMS40MS03LjA2IDIxLjQxLTE4LjExIDAtMTEuNzYtMTEuNy0xNS4xNy0xNy44OC0xNy4xNy00LjE0LTEuNjYtMTMuNDEtMy4zOC0xMy40MS04Ljk0IDAtMy43NiAzLjI5LTYuMzUgOC40Ny02LjM1YTM4LjExIDM4LjExIDAgMCAxIDE2LjcgNC4yM3MxLjE4LjcxIDEuNjUtLjQ3Yy4yMy0uNyAyLjM1LTYuNTggMi41OC03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy03LjkxLTQuOS0xNi43NC00Ljk0LTIwLjIzLTQuOTQtMTIgMC0yMC40NiA3LjI5LTIwLjQ2IDE3LjY0IDAgMTIuNDYgMTEuNDggMTUuNDQgMTcuODcgMTcuMTcgNi4xMSAyIDEzLjE3IDMuMjYgMTMuMTcgOC43IDAgNC0zLjUyIDcuMDYtOS4xNyA3LjA2YTMxLjggMzEuOCAwIDAgMS0xOS02LjM1IDEgMSAwIDAgMC0xLjY1LjcxbC0yLjM1IDcuNTJjLS40Ny45NC4yMyAxLjE4LjIzIDEuNDEgMS43MiAxLjQgMTAuMzMgNi41OSAyMi43OSA2LjU5ek0zNTcuMDkgMjI0YzAtLjcxLS4yNC0xLjE4LTEuMTgtMS4xOGgtMTEuNzZjMC0uMTQuOTQtOC45NCA0LjQ3LTEyLjQ3IDQuMTYtNC4xNSAxMS43Ni0xLjY0IDEyLTEuNjQgMS4xNy40NyAxLjQxIDAgMS42NC0uNDdsMi44My03Ljc3Yy43LS45NCAwLTEuMTctLjI0LTEuNDEtNS4wOS0yLTE3LjM1LTIuODctMjQuNDYgNC4yNC01LjQ4IDUuNDgtNyAxMy45Mi04IDE5LjUyaC04LjQ3YTEuMjggMS4yOCAwIDAgMC0xLjE3IDEuMThsLTEuNDIgNy43NmMwIC43LjI0IDEuMTcgMS4xOCAxLjE3aDguMjNjLTguNTEgNDcuOS04Ljc1IDUwLjIxLTEwLjM1IDU1LjUyLTEuMDggMy42Mi0zLjI5IDYuOS01Ljg4IDcuNzYtLjA5IDAtMy44OCAxLjY4LTkuNjQtLjI0IDAgMC0uOTQtLjQ3LTEuNDEuNzEtLjI0LjcxLTIuNTkgNi44Mi0yLjgzIDcuNTNzMCAxLjQxLjQ3IDEuNDFjNS4xMSAyIDEzIDEuNzcgMTcuODggMCA2LjI4LTIuMjggOS43Mi03Ljg5IDExLjUzLTEyLjk0IDIuNzUtNy43MSAyLjgxLTkuNzkgMTEuNzYtNTkuNzRoMTIuMjNhMS4yOSAxLjI5IDAgMCAwIDEuMTgtMS4xOHptNTMuMzkgMTZjLS41Ni0xLjY4LTUuMS0xOC4xMS0yNS4xNy0xOC4xMS0xNS4yNSAwLTIzIDEwLTI1LjE2IDE4LjExLTEgMy0zLjE4IDE0IDAgMjMuNTIuMDkuMyA0LjQxIDE4LjEyIDI1LjE2IDE4LjEyIDE0Ljk1IDAgMjIuOS05LjYxIDI1LjE3LTE4LjEyIDMuMjEtOS42MSAxLjAxLTIwLjUyIDAtMjMuNTJ6bTQ1LjQtMTYuN2MtNS0xLjY1LTE2LjYyLTEuOS0yMi4xMSA1LjQxdi00LjQ3YTEuMTEgMS4xMSAwIDAgMC0xLjE4LTEuMTdoLTkuNGExLjExIDEuMTEgMCAwIDAtMS4xOCAxLjE3djU1LjI4YTEuMTIgMS4xMiAwIDAgMCAxLjE4IDEuMThoOS42NGExLjEyIDEuMTIgMCAwIDAgMS4xOC0xLjE4di0yNy43N2MwLTIuOTEuMDUtMTEuMzcgNC40Ni0xNS4wNSA0LjktNC45IDEyLTMuMzYgMTMuNDEtMy4wNmExLjU3IDEuNTcgMCAwIDAgMS40MS0uOTQgNzQgNzQgMCAwIDAgMy4wNi04IDEuMTYgMS4xNiAwIDAgMC0uNDctMS40MXptNDYuODEgNTQuMWwtMi4xMi03LjI5Yy0uNDctMS4xOC0xLjQxLS43MS0xLjQxLS43MS00LjIzIDEuODItMTAuMTUgMS44OS0xMS4yOSAxLjg5LTQuNjQgMC0xNy4xNy0xLjEzLTE3LjE3LTE5Ljc2IDAtNi4yMyAxLjg1LTE5Ljc2IDE2LjQ3LTE5Ljc2YTM0Ljg1IDM0Ljg1IDAgMCAxIDExLjUyIDEuNjVzLjk0LjQ3IDEuMTgtLjcxYy45NC0yLjU5IDEuNjQtNC40NyAyLjU5LTcuNTMuMjMtLjk0LS40Ny0xLjE3LS43MS0xLjE3LTExLjU5LTMuODctMjIuMzQtMi41My0yNy43NiAwLTEuNTkuNzQtMTYuMjMgNi40OS0xNi4yMyAyNy41MiAwIDIuOS0uNTggMzAuMTEgMjguOTQgMzAuMTFhNDQuNDUgNDQuNDUgMCAwIDAgMTUuNTItMi44MyAxLjMgMS4zIDAgMCAwIC40Ny0xLjQyem01My44Ny0zOS41MmMtLjgtMy01LjM3LTE2LjIzLTIyLjM1LTE2LjIzLTE2IDAtMjMuNTIgMTAuMTEtMjUuNjQgMTguNTlhMzguNTggMzguNTggMCAwIDAtMS42NSAxMS43NmMwIDI1Ljg3IDE4Ljg0IDI5LjQgMjkuODggMjkuNCAxMC44MiAwIDE2LjQ2LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzYtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2LjkzLTE2LjdoMzcuMTZhMS4yNSAxLjI1IDAgMCAwIDEuMTgtLjk0Yy0uMjQtLjAxLjk0LTcuMDctMS40MS0xNS41NHptLTIzLjI5LTYuMzVjLTEwLjMzIDAtMTMgOS0xMy42NCAxNC4xMkg1NDZjLS44OC0xMS45Mi03LjYyLTE0LjEzLTEyLjczLTE0LjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS44NCAzNzguOTJjLS4zLjYtLjYgMS4wOCAwIDB6bTI0OS4xMy04N2ExMzEuMTYgMTMxLjE2IDAgMCAwLTU4IDEzLjVjLTUuOS0xMS45LTEyLTIyLjMtMTMtMzAuMS0xLjItOS4xLTIuNS0xNC41LTEuMS0yNS4zczcuNy0yNi4xIDcuNi0yNy4yLTEuNC02LjYtMTQuMy02LjctMjQgMi41LTI1LjI5IDUuOWExMjIuODMgMTIyLjgzIDAgMCAwLTUuMyAxOS4xYy0yLjMgMTEuNy0yNS43OSA1My41LTM5LjA5IDc1LjMtNC40LTguNS04LjEtMTYtOC45LTIyLTEuMi05LjEtMi41LTE0LjUtMS4xLTI1LjNzNy43LTI2LjEgNy42LTI3LjItMS40LTYuNi0xNC4yOS02LjctMjQgMi41LTI1LjMgNS45LTIuNyAxMS40LTUuMyAxOS4xLTMzLjg5IDc3LjMtNDIuMDggOTUuNGMtNC4yIDkuMi03LjggMTYuNi0xMC40IDIxLjYtLjQuOC0uNyAxLjMtLjkgMS43LjMtLjUuNS0xIC41LS44LTIuMiA0LjMtMy41IDYuNy0zLjUgNi43di4xYy0xLjcgMy4yLTMuNiA2LjEtNC41IDYuMS0uNiAwLTEuOS04LjQuMy0xOS45IDQuNy0yNC4yIDE1LjgtNjEuOCAxNS43LTYzLjEtLjEtLjcgMi4xLTcuMi03LjMtMTAuNy05LjEtMy4zLTEyLjQgMi4yLTEzLjIgMi4ycy0xLjQgMi0xLjQgMiAxMC4xLTQyLjQtMTkuMzktNDIuNGMtMTguNCAwLTQ0IDIwLjItNTYuNTggMzguNS03LjkgNC4zLTI1IDEzLjYtNDMgMjMuNS02LjkgMy44LTE0IDcuNy0yMC43IDExLjQtLjUtLjUtLjktMS0xLjQtMS41LTM1Ljc5LTM4LjItMTAxLjg3LTY1LjItOTkuMDctMTE2LjUgMS0xOC43IDcuNS02Ny44IDEyNy4wNy0xMjcuNCA5OC00OC44IDE3Ni4zNS0zNS40IDE4OS44NC01LjYgMTkuNCA0Mi41LTQxLjg5IDEyMS42LTE0My42NiAxMzMtMzguNzkgNC4zLTU5LjE4LTEwLjctNjQuMjgtMTYuMy01LjMtNS45LTYuMS02LjItOC4xLTUuMS0zLjMgMS44LTEuMiA3IDAgMTAuMSAzIDcuOSAxNS41IDIxLjkgMzYuNzkgMjguOSAxOC43IDYuMSA2NC4xOCA5LjUgMTE5LjE3LTExLjggNjEuNzgtMjMuOCAxMDkuODctOTAuMSA5NS43Ny0xNDUuNkMzODYuNTIgMTguMzIgMjkzLS4xOCAyMDQuNTcgMzEuMjJjLTUyLjY5IDE4LjctMTA5LjY3IDQ4LjEtMTUwLjY2IDg2LjQtNDguNjkgNDUuNi01Ni40OCA4NS4zLTUzLjI4IDEwMS45IDExLjM5IDU4LjkgOTIuNTcgOTcuMyAxMjUuMDYgMTI1LjctMS42LjktMy4xIDEuNy00LjUgMi41LTE2LjI5IDguMS03OC4xOCA0MC41LTkzLjY3IDc0LjctMTcuNSAzOC44IDIuOSA2Ni42IDE2LjI5IDcwLjQgNDEuNzkgMTEuNiA4NC41OC05LjMgMTA3LjU3LTQzLjZzMjAuMi03OS4xIDkuNi05OS41Yy0uMS0uMy0uMy0uNS0uNC0uOCA0LjItMi41IDguNS01IDEyLjgtNy41IDguMjktNC45IDE2LjM5LTkuNCAyMy40OS0xMy4zLTQgMTAuOC02LjkgMjMuOC04LjQgNDIuNi0xLjggMjIgNy4zIDUwLjUgMTkuMSA2MS43IDUuMiA0LjkgMTEuNDkgNSAxNS4zOSA1IDEzLjggMCAyMC0xMS40IDI2Ljg5LTI1IDguNS0xNi42IDE2LTM1LjkgMTYtMzUuOXMtOS40IDUyLjIgMTYuMyA1Mi4yYzkuMzkgMCAxOC43OS0xMi4xIDIzLTE4LjN2LjFzLjItLjQuNy0xLjJjMS0xLjUgMS41LTIuNCAxLjUtMi40di0uM2MzLjgtNi41IDEyLjEtMjEuNCAyNC41OS00NiAxNi4yLTMxLjggMzEuNjktNzEuNSAzMS42OS03MS41YTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi44IDkuNSA4LjcgMTkuOSAxMy40IDMwLTMuOCA1LjItNi4xIDguMi02LjEgOC4yYS4zMS4zMSAwIDAgMCAuMS4yYy0zIDQtNi40IDguMy05LjkgMTIuNS0xMi43OSAxNS4yLTI4IDMyLjYtMzAgMzcuNi0yLjQgNS45LTEuOCAxMC4zIDIuOCAxMy43IDMuNCAyLjYgOS40IDMgMTUuNjkgMi41IDExLjUtLjggMTkuNi0zLjYgMjMuNS01LjRhODIuMiA4Mi4yIDAgMCAwIDIwLjE5LTEwLjZjMTIuNS05LjIgMjAuMS0yMi40IDE5LjQtMzkuOC0uNC05LjYtMy41LTE5LjItNy4zLTI4LjIgMS4xLTEuNiAyLjMtMy4zIDMuNC01QzQzNC44IDMwMS43MiA0NTAuMSAyNzAgNDUwLjEgMjcwYTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi40IDguMSA3LjA5IDE3IDExLjM5IDI1LjctMTguNTkgMTUuMS0zMC4wOSAzMi42LTM0LjA5IDQ0LjEtNy40IDIxLjMtMS42IDMwLjkgOS4zIDMzLjEgNC45IDEgMTEuOS0xLjMgMTcuMS0zLjVhNzkuNDYgNzkuNDYgMCAwIDAgMjEuNTktMTEuMWMxMi41LTkuMiAyNC41OS0yMi4xIDIzLjc5LTM5LjYtLjMtNy45LTIuNS0xNS44LTUuNC0yMy40IDE1LjctNi42IDM2LjA5LTEwLjIgNjIuMDktNy4yIDU1LjY4IDYuNSA2Ni41OCA0MS4zIDY0LjQ4IDU1LjhzLTEzLjggMjIuNi0xNy43IDI1LTUuMSAzLjMtNC44IDUuMWMuNSAyLjYgMi4zIDIuNSA1LjYgMS45IDQuNi0uOCAyOS4xOS0xMS44IDMwLjI5LTM4LjcgMS42LTM0LTMxLjA5LTcxLjQtODktNzEuMXptLTQyOS4xOCAxNDQuN2MtMTguMzkgMjAuMS00NC4xOSAyNy43LTU1LjI4IDIxLjNDNTQuNjEgNDUxIDU5LjMxIDQyMS40MiA4MiA0MDBjMTMuOC0xMyAzMS41OS0yNSA0My4zOS0zMi40IDIuNy0xLjYgNi42LTQgMTEuNC02LjkuOC0uNSAxLjItLjcgMS4yLS43LjktLjYgMS45LTEuMSAyLjktMS43IDguMjkgMzAuNC4zIDU3LjItMTkuMSA3OC4zem0xMzQuMzYtOTEuNGMtNi40IDE1LjctMTkuODkgNTUuNy0yOC4wOSA1My42LTctMS44LTExLjMtMzIuMy0xLjQtNjIuMyA1LTE1LjEgMTUuNi0zMy4xIDIxLjktNDAuMSAxMC4wOS0xMS4zIDIxLjE5LTE0LjkgMjMuNzktMTAuNCAzLjUgNS45LTEyLjIgNDkuNC0xNi4yIDU5LjJ6bTExMSA1M2MtMi43IDEuNC01LjIgMi4zLTYuNCAxLjYtLjktLjUgMS4xLTIuNCAxLjEtMi40czEzLjktMTQuOSAxOS40LTIxLjdjMy4yLTQgNi45LTguNyAxMC44OS0xMy45IDAgLjUuMSAxIC4xIDEuNi0uMTMgMTcuOS0xNy4zMiAzMC0yNS4xMiAzNC44em04NS41OC0xOS41Yy0yLTEuNC0xLjctNi4xIDUtMjAuNyAyLjYtNS43IDguNTktMTUuMyAxOS0yNC41YTM2LjE4IDM2LjE4IDAgMCAxIDEuOSAxMC44Yy0uMSAyMi41LTE2LjIgMzAuOS0yNS44OSAzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hsaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUwLjUgMTU3LjdsLTU0LjItNDYuMSA3My40LTM5IDc4LjMgNDQuMi05Ny41IDQwLjl6TTE5MiAxMjIuMWw0NS43LTI4LjIgMzQuNyAzNC42LTU1LjQgMjktMjUtMzUuNHptLTY1LjEgNi42bDMxLjktMjIuMUwxNzYgMTM1bC0zNi43IDIyLjUtMTIuNC0yOC44em0tMjMuMyA4OC4ybC04LjgtMzQuOCAyOS42LTE4LjMgMTMuMSAzNS4zLTMzLjkgMTcuOHptLTIxLjItODMuN2wyMy45LTE4LjEgOC45IDI0LTI2LjcgMTguMy02LjEtMjQuMnpNNTkgMjA2LjVsLTMuNi0yOC40IDIyLjMtMTUuNSA2LjEgMjguN0w1OSAyMDYuNXptLTMwLjYgMTYuNmwyMC44LTEyLjggMy4zIDMzLjQtMjIuOSAxMi0xLjItMzIuNnpNMS40IDI2OGwxOS4yLTEwLjIuNCAzOC4yLTIxIDguOEwxLjQgMjY4em01OS4xIDU5LjNsLTI4LjMgOC4zLTEuNi00Ni44IDI1LjEtMTAuNyA0LjggNDkuMnpNOTkgMjYzLjJsLTMxLjEgMTMtNS4yLTQwLjhMOTAuMSAyMjFsOC45IDQyLjJ6TTEyMy4yIDM3N2wtNDEuNiA1LjktOC4xLTYzLjUgMzUuMi0xMC44IDE0LjUgNjguNHptMjguNS0xMzkuOWwyMS4yIDU3LjEtNDYuMiAxMy42LTEzLjctNTQuMSAzOC43LTE2LjZ6bTg1LjcgMjMwLjVsLTcwLjktMy4zLTI0LjMtOTUuOCA1NS4yLTguNiA0MCAxMDcuN3ptLTg0LjktMjc5LjdsNDIuMi0yMi40IDI4IDQ1LjktNTAuOCAyMS4zLTE5LjQtNDQuOHptNDEgOTQuOWw2MS4zLTE4LjcgNTIuOCA4Ni42LTc5LjggMTEuMy0zNC4zLTc5LjJ6bTUxLjQtODUuNmw2Ny4zLTI4LjggNjUuNSA2NS40LTg4LjYgMjYuMi00NC4yLTYyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjcmliZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi4zIDI1Mi43Yy0xNi4xLTE5LTI0LjctNDUuOS0yNC44LTc5LjkgMC0xMDAuNCA3NS4yLTE1My4xIDE2Ny4yLTE1My4xIDk4LjYtMS42IDE1Ni44IDQ5IDE4NC4zIDcwLjZsLTUwLjUgNzIuMS0zNy4zLTI0LjYgMjYuOS0zOC42Yy0zNi41LTI0LTc5LjQtMzYuNS0xMjMtMzUuOC01MC43LS44LTExMS43IDI3LjItMTExLjcgNzYuMiAwIDE4LjcgMTEuMiAyMC43IDI4LjYgMTUuNiAyMy4zLTUuMyA0MS45LjYgNTUuOCAxNCAyNi40IDI0LjMgMjMuMiA2Ny42LS43IDkxLjktMjkuMiAyOS41LTg1LjIgMjcuMy0xMTQuOC04LjR6bTMxNy43IDUuOWMtMTUuNS0xOC44LTM4LjktMjkuNC02My4yLTI4LjYtMzguMS0yLTcxLjEgMjgtNzAuNSA2Ny4yLS43IDE2LjggNiAzMyAxOC40IDQ0LjMgMTQuMSAxMy45IDMzIDE5LjcgNTYuMyAxNC40IDE3LjQtNS4xIDI4LjYtMy4xIDI4LjYgMTUuNiAwIDQuMy0uNSA4LjUtMS40IDEyLjctMTYuNyA0MC45LTU5LjUgNjQuNC0xMjEuNCA2NC40LTUxLjkuMi0xMDIuNC0xNi40LTE0NC4xLTQ3LjNsMzMuNy0zOS40LTM1LjYtMjcuNEwwIDQwNi4zbDE1LjQgMTMuOGM1Mi41IDQ2LjggMTIwLjQgNzIuNSAxOTAuNyA3Mi4yIDUxLjQgMCA5NC40LTEwLjUgMTMzLjYtNDQuMSA1Ny4xLTUxLjQgNTQuMi0xNDkuMiAyMC4zLTE4OS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hlbmdpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDYwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjAuNiAxMzAuM2wtNjcuMiAyOC4yVjQzLjJMOTguNyAyMzMuNWw1NC43LTI0LjJ2MTMwLjNsNjcuMi0yMDkuM3ptLTgzLjItOTYuN2wtMS4zIDQuNy0xNS4yIDUyLjlDODAuNiAxMDYuNyA1MiAxNDUuOCA1MiAxOTEuNWMwIDUyLjMgMzQuMyA5NS45IDgzLjQgMTA1LjV2NTMuNkM1Ny41IDM0MC4xIDAgMjcyLjQgMCAxOTEuNmMwLTgwLjUgNTkuOC0xNDcuMiAxMzcuNC0xNTh6bTMxMS40IDQ0Ny4yYy0xMS4yIDExLjItMjMuMSAxMi4zLTI4LjYgMTAuNS01LjQtMS44LTI3LjEtMTkuOS02MC40LTQ0LjQtMzMuMy0yNC42LTMzLjYtMzUuNy00My01Ni43LTkuNC0yMC45LTMwLjQtNDIuNi01Ny41LTUyLjRsLTkuNy0xNC43Yy0yNC43IDE2LjktNTMgMjYuOS04MS4zIDI4LjdsMi4xLTYuNiAxNS45LTQ5LjVjNDYuNS0xMS45IDgwLjktNTQgODAuOS0xMDQuMiAwLTU0LjUtMzguNC0xMDIuMS05Ni0xMDcuMVYzMi4zQzI1NC40IDM3LjQgMzIwIDEwNi44IDMyMCAxOTEuNmMwIDMzLjYtMTEuMiA2NC43LTI5IDkwLjRsMTQuNiA5LjZjOS44IDI3LjEgMzEuNSA0OCA1Mi40IDU3LjRzMzIuMiA5LjcgNTYuOCA0M2MyNC42IDMzLjIgNDIuNyA1NC45IDQ0LjUgNjAuM3MuNyAxNy4zLTEwLjUgMjguNXptLTkuOS0xNy45YzAtNC40LTMuNi04LTgtOHMtOCAzLjYtOCA4IDMuNiA4IDggOCA4LTMuNiA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlbGxjYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My40IDMySDk0LjdDNDIuNiAzMiAwIDc0LjYgMCAxMjYuNnYyNTguN0MwIDQzNy40IDQyLjYgNDgwIDk0LjcgNDgwaDI1OC43YzUyLjEgMCA5NC43LTQyLjYgOTQuNy05NC42VjEyNi42YzAtNTItNDIuNi05NC42LTk0LjctOTQuNnptLTUwIDMxNi40Yy0yNy45IDQ4LjItODkuOSA2NC45LTEzOC4yIDM3LjItMjIuOSAzOS44LTU0LjkgOC42LTQyLjMtMTMuMmwxNS43LTI3LjJjNS45LTEwLjMgMTkuMi0xMy45IDI5LjUtNy45IDE4LjYgMTAuOC0uMS0uMSAxOC41IDEwLjcgMjcuNiAxNS45IDYzLjQgNi4zIDc5LjQtMjEuMyAxNS45LTI3LjYgNi4zLTYzLjQtMjEuMy03OS40LTE3LjgtMTAuMi0uNi0uNC0xOC42LTEwLjYtMjQuNi0xNC4yLTMuNC01MS45IDIxLjYtMzcuNSAxOC42IDEwLjgtLjEtLjEgMTguNSAxMC43IDQ4LjQgMjggNjUuMSA5MC4zIDM3LjIgMTM4LjV6bTIxLjgtMjA4LjhjLTE3IDI5LjUtMTYuMyAyOC44LTE5IDMxLjUtNi41IDYuNS0xNi4zIDguNy0yNi41IDMuNi0xOC42LTEwLjguMS4xLTE4LjUtMTAuNy0yNy42LTE1LjktNjMuNC02LjMtNzkuNCAyMS4zcy02LjMgNjMuNCAyMS4zIDc5LjRjMCAwIDE4LjUgMTAuNiAxOC42IDEwLjYgMjQuNiAxNC4yIDMuNCA1MS45LTIxLjYgMzcuNS0xOC42LTEwLjguMS4xLTE4LjUtMTAuNy00OC4yLTI3LjgtNjQuOS05MC4xLTM3LjEtMTM4LjQgMjcuOS00OC4yIDg5LjktNjQuOSAxMzguMi0zNy4ybDQuOC04LjRjMTQuMy0yNC45IDUyLTMuMyAzNy43IDIxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlbGxzeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzkuNzEgMjM3LjMwOGMzLjA2NC0xMi4yNTcgNC4yOS0yNC44MjEgNC4yOS0zNy4zODRDNTQ0IDEwNy4zODIgNDY4LjYxOCAzMiAzNzYuMDc2IDMyYy03Ny4yMiAwLTE0NC42MzQgNTMuMDEyLTE2My4wMiAxMjcuNzgxLTE1LjMyMi0xMy4xNzYtMzQuOTM0LTIwLjUzLTU1LjE1Ny0yMC41My00Ni4yNzEgMC04My45NjIgMzcuNjktODMuOTYyIDgzLjk2MSAwIDcuMzU0LjkyIDE1LjAxNSAzLjA2NSAyMi4zNjktNDIuOSAyMC4yMjUtNzAuNzg1IDYzLjczOC03MC43ODUgMTExLjIzNEM2LjIxNiA0MjQuODQzIDYxLjY4IDQ4MCAxMjkuNDAxIDQ4MGgzODEuMTk4YzY3LjcyIDAgMTIzLjE4NC01NS4xNTcgMTIzLjE4NC0xMjMuMTg0LjAwMS01Ni4zODQtMzguOTE2LTEwNi4wMjUtOTQuMDczLTExOS41MDh6TTE5OS44OCA0MDEuNTU0YzAgOC4yNzQtNy4wNDggMTUuMzIxLTE1LjMyMSAxNS4zMjFIMTUzLjYxYy04LjI3NCAwLTE1LjMyMS03LjA0OC0xNS4zMjEtMTUuMzIxVjI5MC42MjZjMC04LjI3MyA3LjA0OC0xNS4zMjEgMTUuMzIxLTE1LjMyMWgzMC45NDljOC4yNzQgMCAxNS4zMjEgNy4wNDggMTUuMzIxIDE1LjMyMXYxMTAuOTI4em04OS40NzcgMGMwIDguMjc0LTcuMDQ4IDE1LjMyMS0xNS4zMjIgMTUuMzIxaC0zMC45NDljLTguMjc0IDAtMTUuMzIxLTcuMDQ4LTE1LjMyMS0xNS4zMjFWMjcwLjA5NmMwLTguMjc0IDcuMDQ4LTE1LjMyMSAxNS4zMjEtMTUuMzIxaDMwLjk0OWM4LjI3NCAwIDE1LjMyMiA3LjA0OCAxNS4zMjIgMTUuMzIxdjEzMS40NTh6bTg5LjQ3NyAwYzAgOC4yNzQtNy4wNDcgMTUuMzIxLTE1LjMyMSAxNS4zMjFoLTMwLjk0OWMtOC4yNzQgMC0xNS4zMjItNy4wNDgtMTUuMzIyLTE1LjMyMVYyMzguODRjMC04LjI3NCA3LjA0OC0xNS4zMjEgMTUuMzIyLTE1LjMyMWgzMC45NDljOC4yNzQgMCAxNS4zMjEgNy4wNDggMTUuMzIxIDE1LjMyMXYxNjIuNzE0em04Ny4wMjcgMGMwIDguMjc0LTcuMDQ4IDE1LjMyMS0xNS4zMjIgMTUuMzIxaC0yOC40OTdjLTguMjc0IDAtMTUuMzIxLTcuMDQ4LTE1LjMyMS0xNS4zMjFWMTc2Ljk0MWMwLTguNTc5IDcuMDQ3LTE1LjYyOCAxNS4zMjEtMTUuNjI4aDI4LjQ5N2M4LjI3NCAwIDE1LjMyMiA3LjA0OCAxNS4zMjIgMTUuNjI4djIyNC42MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlcnZpY2VzdGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OCAyMTZjODEuNyAxMC4yIDI3My43IDEwMi4zIDMwNCAyMzJIMGM5OS41LTguMSAxODQuNS0xMzcgODgtMjMyem0zMi0xNTJjMzIuMyAzNS42IDQ3LjcgODMuOSA0Ni40IDEzMy42QzI0OS4zIDIzMS4zIDM3My43IDMyMS4zIDQwMCA0NDhoOTZDNDU1LjMgMjMxLjkgMjIyLjggNzkuNSAxMjAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXJ0c2luYnVsayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAgNDEwLjNsMzAuNiAxMy40IDQuNC05LjktMzAuNi0xMy40em0zOS40IDE3LjVsMzAuNiAxMy40IDQuNC05LjktMzAuNi0xMy40em0xNzIuMS0xNGw0LjQgOS45IDMwLjYtMTMuNC00LjQtOS45ek0xNzkuMSA0NDVsMzAuMyAxMy43IDQuNC05LjktMzAuMy0xMy40ek02MC40IDM5Mi44TDkxIDQwNi4ybDQuNC05LjYtMzAuNi0xMy43em0yMTEuNCAzOC41bDQuNCA5LjkgMzAuNi0xMy40LTQuNC05Ljl6bS0zOS4zIDE3LjVsNC40IDkuOSAzMC42LTEzLjctNC40LTkuNnptMTE4LjQtNTIuMmw0LjQgOS42IDMwLjYtMTMuNC00LjQtOS45ek0xNzAgNDYuNmgtMzMuNXYxMC41SDE3MHptLTQ3LjIgMEg4OS4ydjEwLjVoMzMuNXptLTQ3LjMgMEg0Mi4zdjEwLjVoMzMuM3ptMTQxLjUgMGgtMzMuMnYxMC41SDIxN3ptOTQuNSAwSDI3OHYxMC41aDMzLjV6bTQ3LjMgMGgtMzMuNXYxMC41aDMzLjV6bS05NC42IDBIMjMxdjEwLjVoMzMuMnptMTQxLjUgMGgtMzMuM3YxMC41aDMzLjN6TTUyLjggMzUxLjFINDJ2MzMuNWgxMC44em03MC0yMTUuOUg4OS4ydjEwLjVoMzMuNXptLTcwIDEwLjZoMjIuOHYtMTAuNUg0MnYzMy41aDEwLjh6bTE2OC45IDIyOC42YzUwLjUgMCA5MS4zLTQwLjggOTEuMy05MS4zIDAtNTAuMi00MC44LTkxLjMtOTEuMy05MS4zLTUwLjIgMC05MS4zIDQxLjEtOTEuMyA5MS4zIDAgNTAuNSA0MS4xIDkxLjMgOTEuMyA5MS4zem0tNDguMi0xMTEuMWMwLTI1LjQgMjkuNS0zMS44IDQ5LjYtMzEuOCAxNi45IDAgMjkuMiA1LjggNDQuMyAxMmwtOC44IDE2LjloLS45Yy02LjQtOS45LTI0LjgtMTMuMS0zNS42LTEzLjEtOSAwLTI5LjggMS44LTI5LjggMTQuOSAwIDIxLjYgNzguNS0xMC4yIDc4LjUgMzcuOSAwIDI1LjQtMzEuNSAzMS4yLTUxIDMxLjItMTguMSAwLTMyLjQtMi45LTQ3LjItMTIuMmw5LTE4LjRoLjljNi4xIDEyLjIgMjMuNiAxNC45IDM1LjkgMTQuOSA4LjcgMCAzMi43LTEuMiAzMi43LTE0LjMgMC0yNi4xLTc3LjYgNi4zLTc3LjYtMzh6TTUyLjggMTc4LjRINDJWMjEyaDEwLjh6bTM0Mi40IDIwNi4ySDQwNnYtMzMuNWgtMTAuOHpNNTIuOCAzMDcuOUg0MnYzMy41aDEwLjh6TTAgMy43djQwNmwyMjEuNyA5OC42TDQ0OCA0MDkuN1YzLjd6bTQxOC44IDM4Ny4xTDIyMiA0NzYuNSAyOS4yIDM5MC44VjEyMC43aDM4OS43djI3MC4xem0wLTI5OS4zSDI5LjJWMzIuOWgzODkuN3Y1OC42em0tMzY2IDEzMC4xSDQydjMzLjVoMTAuOHptMCA0My4ySDQydjMzLjVoMTAuOHpNMTcwIDEzNS4yaC0zMy41djEwLjVIMTcwem0yMjUuMiAxNjMuMUg0MDZ2LTMzLjVoLTEwLjh6bTAtNDMuMkg0MDZ2LTMzLjVoLTEwLjh6TTIxNyAxMzUuMmgtMzMuMnYxMC41SDIxN3pNMzk1LjIgMjEySDQwNnYtMzMuNWgtMTAuOHptMCAxMjkuNUg0MDZWMzA4aC0xMC44em0tMTMxLTIwNi4zSDIzMXYxMC41aDMzLjJ6bTQ3LjMgMEgyNzh2MTAuNWgzMy41em04My43IDMzLjZINDA2di0zMy41aC0zMy41djEwLjVoMjIuOHptLTM2LjQtMzMuNmgtMzMuNXYxMC41aDMzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3BpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg4LjMyLDEwNC4xYTQuNjYsNC42NiwwLDAsMC00LjQtNGMtMiwwLTM3LjIzLS44LTM3LjIzLS44cy0yMS42MS0yMC44Mi0yOS42Mi0yOC44M1Y1MDMuMkw0NDIuNzYsNDcyUzM4OC43MiwxMDYuNSwzODguMzIsMTA0LjFaTTI4OC42NSw3MC40N2ExMTYuNjcsMTE2LjY3LDAsMCwwLTcuMjEtMTcuNjFDMjcxLDMyLjg1LDI1NS40MiwyMiwyMzcsMjJhMTUsMTUsMCwwLDAtNCwuNGMtLjQtLjgtMS4yLTEuMi0xLjYtMkMyMjMuNCwxMS42MywyMTMsNy42MywyMDAuNTgsOGMtMjQsLjgtNDgsMTgtNjcuMjUsNDguODMtMTMuNjEsMjEuNjItMjQsNDguODQtMjYuODIsNzAuMDYtMjcuNjIsOC40LTQ2LjgzLDE0LjQxLTQ3LjIzLDE0LjgxLTE0LDQuNC0xNC40MSw0LjgtMTYsMTgtMS4yLDEwLTM4LDI5MS44Mi0zOCwyOTEuODJMMzA3Ljg2LDUwNFY2NS42N2E0MS42Niw0MS42NiwwLDAsMC00LjQuNFMyOTcuODYsNjcuNjcsMjg4LjY1LDcwLjQ3Wk0yMzMuNDEsODcuNjljLTE2LDQuOC0zMy42MywxMC40LTUwLjg0LDE1LjYxLDQuOC0xOC44MiwxNC40MS0zNy42MywyNS42Mi01MCw0LjQtNC40LDEwLjQxLTkuNjEsMTcuMjEtMTIuODFDMjMyLjIxLDU0Ljg2LDIzMy44MSw3NC40OCwyMzMuNDEsODcuNjlaTTIwMC41OCwyNC40NEEyNy40OSwyNy40OSwwLDAsMSwyMTUsMjhjLTYuNCwzLjItMTIuODEsOC40MS0xOC44MSwxNC40MS0xNS4yMSwxNi40Mi0yNi44Miw0Mi0zMS42Miw2Ni40NS0xNC40Miw0LjQxLTI4LjgzLDguODEtNDIsMTIuODFDMTMxLjMzLDgzLjI4LDE2My43NSwyNS4yNCwyMDAuNTgsMjQuNDRaTTE1NC4xNSwyNDQuNjFjMS42LDI1LjYxLDY5LjI1LDMxLjIyLDczLjI1LDkxLjY2LDIuOCw0Ny42NC0yNS4yMiw4MC4wNi02NS42NSw4Mi40Ny00OC44MywzLjItNzUuNjUtMjUuNjItNzUuNjUtMjUuNjJsMTAuNC00NHMyNi44MiwyMC40Miw0OC40NCwxOC44MmMxNC0uOCwxOS4yMi0xMi40MSwxOC44MS0yMC40Mi0yLTMzLjYyLTU3LjI0LTMxLjYyLTYwLjg0LTg2Ljg2LTMuMi00Ni40NCwyNy4yMi05My4yNyw5NC40Ny05Ny42OCwyNi0xLjYsMzkuMjMsNC44MSwzOS4yMyw0LjgxTDIyMS40LDIyNS4zOXMtMTcuMjEtOC0zNy42My02LjRDMTU0LjE1LDIyMSwxNTMuNzUsMjM5LjgsMTU0LjE1LDI0NC42MVpNMjQ5LjQyLDgyLjg4YzAtMTItMS42LTI5LjIyLTcuMjEtNDMuNjMsMTguNDIsMy42LDI3LjIyLDI0LDMxLjIzLDM2LjQzUTI2Mi42Myw3OC42OCwyNDkuNDIsODIuODhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3B3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMy41IDQ1NS40MUEyNDYuMTcgMjQ2LjE3IDAgMCAxIDI1NiA1MDRDMTE4LjgxIDUwNCA4IDM5MyA4IDI1NiA4IDExOC44MSAxMTkgOCAyNTYgOGEyNDcuMzkgMjQ3LjM5IDAgMCAxIDE2NS43IDYzLjUgMy41NyAzLjU3IDAgMCAxLTIuODYgNi4xOEE0MTguNjIgNDE4LjYyIDAgMCAwIDM2Mi4xMyA3NGMtMTI5LjM2IDAtMjIyLjQgNTMuNDctMjIyLjQgMTU1LjM1IDAgMTA5IDkyLjEzIDE0NS44OCAxNzYuODMgMTc4LjczIDMzLjY0IDEzIDY1LjQgMjUuMzYgODcgNDEuNTlhMy41OCAzLjU4IDAgMCAxIDAgNS43MnpNNTAzIDIzMy4wOWEzLjY0IDMuNjQgMCAwIDAtMS4yNy0yLjQ0Yy01MS43Ni00My05My42Mi02MC40OC0xNDQuNDgtNjAuNDgtODQuMTMgMC04MC4yNSA1Mi4xNy04MC4yNSA1My42MyAwIDQyLjYgNTIuMDYgNjIgMTEyLjM0IDg0LjQ5IDMxLjA3IDExLjU5IDYzLjE5IDIzLjU3IDkyLjY4IDM5LjkzYTMuNTcgMy41NyAwIDAgMCA1LTEuODJBMjQ5IDI0OSAwIDAgMCA1MDMgMjMzLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW1wbHlidWlsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEuMiA2NGgtMTA2Yy0xNC41IDAtMjYuNiAxMS44LTI2LjYgMjYuM3YzOS42SDE2My4zVjkwLjNjMC0xNC41LTEyLTI2LjMtMjYuNi0yNi4zaC0xMDZDMTYuMSA2NCA0LjMgNzUuOCA0LjMgOTAuM3YzMzEuNGMwIDE0LjUgMTEuOCAyNi4zIDI2LjYgMjYuM2g0NTAuNGMxNC44IDAgMjYuNi0xMS44IDI2LjYtMjYuM1Y5MC4zYy0uMi0xNC41LTEyLTI2LjMtMjYuNy0yNi4zek0xNDkuOCAzNTUuOGMtMzYuNiAwLTY2LjQtMjkuNy02Ni40LTY2LjQgMC0zNi45IDI5LjctNjYuNiA2Ni40LTY2LjYgMzYuOSAwIDY2LjYgMjkuNyA2Ni42IDY2LjYgMCAzNi43LTI5LjcgNjYuNC02Ni42IDY2LjR6bTIxMi40IDBjLTM2LjkgMC02Ni42LTI5LjctNjYuNi02Ni42IDAtMzYuNiAyOS43LTY2LjQgNjYuNi02Ni40IDM2LjYgMCA2Ni40IDI5LjcgNjYuNCA2Ni40IDAgMzYuOS0yOS44IDY2LjYtNjYuNCA2Ni42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaXN0cml4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0NDlMMzAxLjIgMzAwLjJjMjAtMjcuOSAzMS45LTYyLjIgMzEuOS05OS4yIDAtOTMuMS03NC43LTE2OC45LTE2Ni41LTE2OC45Qzc0LjcgMzIgMCAxMDcuOCAwIDIwMC45czc0LjcgMTY4LjkgMTY2LjUgMTY4LjljMzkuOCAwIDc2LjMtMTQuMiAxMDUtMzcuOWwxNDYgMTQ4LjEgMzAuNS0zMXpNMTY2LjUgMzMwLjhjLTcwLjYgMC0xMjguMS01OC4zLTEyOC4xLTEyOS45Uzk1LjkgNzEgMTY2LjUgNzFzMTI4LjEgNTguMyAxMjguMSAxMjkuOS01Ny40IDEyOS45LTEyOC4xIDEyOS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJsNjkuNzEgMTE4Ljc1LTU4Ljg2LTExLjUyIDY5Ljg0IDkxLjAzYTE0Ni43NDEgMTQ2Ljc0MSAwIDAgMCAwIDUxLjQ1bC02OS44NCA5MS4wMyA1OC44Ni0xMS41MkwwIDQ4MGwxMTguNzUtNjkuNzEtMTEuNTIgNTguODYgOTEuMDMtNjkuODRjMTcuMDIgMy4wNCAzNC40NyAzLjA0IDUxLjQ4IDBsOTEuMDMgNjkuODQtMTEuNTItNTguODZMNDQ4IDQ4MGwtNjkuNzEtMTE4Ljc4IDU4Ljg2IDExLjUyLTY5Ljg0LTkxLjAzYzMuMDMtMTcuMDEgMy4wNC0zNC40NCAwLTUxLjQ1bDY5Ljg0LTkxLjAzLTU4Ljg2IDExLjUyTDQ0OCAzMmwtMTE4Ljc1IDY5LjcxIDExLjUyLTU4LjktOTEuMDYgNjkuODdjLTguNS0xLjUyLTE3LjEtMi4yOS0yNS43MS0yLjI5cy0xNy4yMS43OC0yNS43MSAyLjI5bC05MS4wNi02OS44NyAxMS41MiA1OC45TDAgMzJ6bTIyNCA5OS43OGMzMS44IDAgNjMuNiAxMi4xMiA4Ny44NSAzNi4zNyA0OC41IDQ4LjUgNDguNDkgMTI3LjIxIDAgMTc1LjdzLTEyNy4yIDQ4LjQ2LTE3NS43LS4wM2MtNDguNS00OC41LTQ4LjQ5LTEyNy4yMSAwLTE3NS43IDI0LjI0LTI0LjI1IDU2LjA1LTM2LjM0IDg3Ljg1LTM2LjM0em0wIDM2LjY2Yy0yMi40MiAwLTQ0LjgzIDguNTItNjEuOTIgMjUuNjEtMzQuMTggMzQuMTgtMzQuMTkgODkuNjggMCAxMjMuODdzODkuNjUgMzQuMTggMTIzLjg0IDBjMzQuMTgtMzQuMTggMzQuMTktODkuNjggMC0xMjMuODctMTcuMDktMTcuMDktMzkuNS0yNS42MS02MS45Mi0yNS42MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2tldGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3LjUgMTYyLjJMOSAxODcuMWg5MC41bDYuOS0xMzAuNy03OC45IDEwNS44ek0zOTYuMyA0NS43TDI2Ny43IDMybDEzNS43IDE0Ny4yLTcuMS0xMzMuNXpNMTEyLjIgMjE4LjNsLTExLjItMjJIOS45TDIzNC44IDQ1OHptMi0zMS4yaDI4NGwtODEuNS04OC41TDI1Ni4zIDMzem0yOTcuMyA5LjFMMjc3LjYgNDU4bDIyNC44LTI2MS43aC05MC45ek00MTUuNCA2OUw0MDYgNTYuNGwuOSAxNy4zIDYuMSAxMTMuNGg5MC4zek0xMTMuNSA5My41bC00LjYgODUuNkwyNDQuNyAzMiAxMTYuMSA0NS43em0yODcuNyAxMDIuN2gtMjkwbDQyLjQgODIuOUwyNTYuMyA0ODBsMTQ0LjktMjgzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNreWF0bGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAzMjkuM2MwIDY1LjktNTIuNSAxMTQuNC0xMTcuNSAxMTQuNC0xNjUuOSAwLTE5Ni42LTI0OS43LTM1OS43LTI0OS43LTE0Ni45IDAtMTQ3LjEgMjEyLjIgNS42IDIxMi4yIDQyLjUgMCA5MC45LTE3LjggMTI1LjMtNDIuNSA1LjYtNC4xIDE2LjktMTYuMyAyMi44LTE2LjNzMTAuOSA1IDEwLjkgMTAuOWMwIDcuOC0xMy4xIDE5LjEtMTguNyAyNC4xLTQwLjkgMzUuNi0xMDAuMyA2MS4yLTE1NC43IDYxLjItODMuNC4xLTE1NC01OS0xNTQtMTQ0LjlzNjcuNS0xNDkuMSAxNTIuOC0xNDkuMWMxODUuMyAwIDIyMi41IDI0NS45IDM2MS45IDI0NS45IDk5LjkgMCA5NC44LTEzOS43IDMuNC0xMzkuNy0xNy41IDAtMzUgMTEuNi00Ni45IDExLjYtOC40IDAtMTUuOS03LjItMTUuOS0xNS42IDAtMTEuNiA1LjMtMjMuNyA1LjMtMzYuMyAwLTY2LjYtNTAuOS0xMTQuNy0xMTYuOS0xMTQuNy01My4xIDAtODAgMzYuOS04OC44IDM2LjktNi4yIDAtMTEuMi01LTExLjItMTEuMiAwLTUuNiA0LjEtMTAuMyA3LjgtMTQuNCAyNS4zLTI4LjggNjQuNy00My43IDEwMi44LTQzLjcgNzkuNCAwIDEzOS4xIDU4LjQgMTM5LjEgMTM3LjggMCA2LjktLjMgMTMuNy0xLjIgMjAuNiAxMS45LTMuMSAyNC4xLTQuNyAzNS45LTQuNyA2MC43IDAgMTExLjkgNDUuMyAxMTEuOSAxMDcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t5cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjcgMjk5LjhjMi45LTE0IDQuNy0yOC45IDQuNy00My44IDAtMTEzLjUtOTEuOS0yMDUuMy0yMDUuMy0yMDUuMy0xNC45IDAtMjkuNyAxLjctNDMuOCA0LjdDMTYxLjMgNDAuNyAxMzcuNyAzMiAxMTIgMzIgNTAuMiAzMiAwIDgyLjIgMCAxNDRjMCAyNS43IDguNyA0OS4zIDIzLjMgNjguMi0yLjkgMTQtNC43IDI4LjktNC43IDQzLjggMCAxMTMuNSA5MS45IDIwNS4zIDIwNS4zIDIwNS4zIDE0LjkgMCAyOS43LTEuNyA0My44LTQuNyAxOSAxNC42IDQyLjYgMjMuMyA2OC4yIDIzLjMgNjEuOCAwIDExMi01MC4yIDExMi0xMTIgLjEtMjUuNi04LjYtNDkuMi0yMy4yLTY4LjF6bS0xOTQuNiA5MS41Yy02NS42IDAtMTIwLjUtMjkuMi0xMjAuNS02NSAwLTE2IDktMzAuNiAyOS41LTMwLjYgMzEuMiAwIDM0LjEgNDQuOSA4OC4xIDQ0LjkgMjUuNyAwIDQyLjMtMTEuNCA0Mi4zLTI2LjMgMC0xOC43LTE2LTIxLjYtNDItMjgtNjIuNS0xNS40LTExNy44LTIyLTExNy44LTg3LjIgMC01OS4yIDU4LjYtODEuMSAxMDkuMS04MS4xIDU1LjEgMCAxMTAuOCAyMS45IDExMC44IDU1LjQgMCAxNi45LTExLjQgMzEuOC0zMC4zIDMxLjgtMjguMyAwLTI5LjItMzMuNS03NS0zMy41LTI1LjcgMC00MiA3LTQyIDIyLjUgMCAxOS44IDIwLjggMjEuOCA2OS4xIDMzIDQxLjQgOS4zIDkwLjcgMjYuOCA5MC43IDc3LjYgMCA1OS4xLTU3LjEgODYuNS0xMTIgODYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xhY2tIYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni4yIDI3MC40Yy02LjItMTktMjYuOS0yOS4xLTQ2LTIyLjlsLTQ1LjQgMTUuMS0zMC4zLTkwIDQ1LjQtMTUuMWMxOS4xLTYuMiAyOS4xLTI2LjggMjMtNDUuOS02LjItMTktMjYuOS0yOS4xLTQ2LTIyLjlsLTQ1LjQgMTUuMS0xNS43LTQ3Yy02LjItMTktMjYuOS0yOS4xLTQ2LTIyLjktMTkuMSA2LjItMjkuMSAyNi44LTIzIDQ1LjlsMTUuNyA0Ny05My40IDMxLjItMTUuNy00N2MtNi4yLTE5LTI2LjktMjkuMS00Ni0yMi45LTE5LjEgNi4yLTI5LjEgMjYuOC0yMyA0NS45bDE1LjcgNDctNDUuMyAxNWMtMTkuMSA2LjItMjkuMSAyNi44LTIzIDQ1LjkgNSAxNC41IDE5LjEgMjQgMzMuNiAyNC42IDYuOCAxIDEyLTEuNiA1Ny43LTE2LjhsMzAuMyA5MEw3OCAzNTQuOGMtMTkgNi4yLTI5LjEgMjYuOS0yMyA0NS45IDUgMTQuNSAxOS4xIDI0IDMzLjYgMjQuNiA2LjggMSAxMi0xLjYgNTcuNy0xNi44bDE1LjcgNDdjNS45IDE2LjkgMjQuNyAyOSA0NiAyMi45IDE5LjEtNi4yIDI5LjEtMjYuOCAyMy00NS45bC0xNS43LTQ3IDkzLjYtMzEuMyAxNS43IDQ3YzUuOSAxNi45IDI0LjcgMjkgNDYgMjIuOSAxOS4xLTYuMiAyOS4xLTI2LjggMjMtNDUuOWwtMTUuNy00NyA0NS40LTE1LjFjMTktNiAyOS4xLTI2LjcgMjIuOS00NS43em0tMjU0LjEgNDcuMmwtMzAuMy05MC4yIDkzLjUtMzEuMyAzMC4zIDkwLjItOTMuNSAzMS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NC4xMiAzMTUuMWMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZTMCAzNDEgMCAzMTUuMWMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZoNDcuMDZ2NDcuMDZ6bTIzLjcyIDBjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2czQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2djExNy44NGMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZzLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2VjMxNS4xem00Ny4wNi0xODguOThjLTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlMxMzkgMzIgMTY0LjkgMzJzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ2NDcuMDZIMTY0Ljl6bTAgMjMuNzJjMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2cy0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNkg0Ny4wNkMyMS4xNiAyNDMuOTYgMCAyMjIuOCAwIDE5Ni45czIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2SDE2NC45em0xODguOTggNDcuMDZjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2IDI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnMtMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZoLTQ3LjA2VjE5Ni45em0tMjMuNzIgMGMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDYtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2Vjc5LjA2YzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNiAyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZWMTk2Ljl6TTI4My4xIDM4NS44OGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDYgMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2LTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNnYtNDcuMDZoNDcuMDZ6bTAtMjMuNzJjLTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNiAwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZoMTE3Ljg0YzI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNiAwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZIMjgzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsaWRlc2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg3LjcgMTUzLjdjLTM0IDAtNjEuNyAyNS43LTYxLjcgNTcuNyAwIDMxLjcgMjcuNyA1Ny43IDYxLjcgNTcuN3M2MS43LTI2IDYxLjctNTcuN2MwLTMyLTI3LjctNTcuNy02MS43LTU3Ljd6bTE0My40IDBjLTM0IDAtNjEuNyAyNS43LTYxLjcgNTcuNyAwIDMxLjcgMjcuNyA1Ny43IDYxLjcgNTcuNyAzNC4zIDAgNjEuNy0yNiA2MS43LTU3LjcuMS0zMi0yNy40LTU3LjctNjEuNy01Ny43em0xNTYuNiA5MGwtNiA0LjNWNDkuN2MwLTI3LjQtMjAuNi00OS43LTQ2LTQ5LjdINzYuNmMtMjUuNCAwLTQ2IDIyLjMtNDYgNDkuN1YyNDhjLTItMS40LTQuMy0yLjktNi4zLTQuMy0xNS4xLTEwLjYtMjUuMSA0LTE2IDE3LjcgMTguMyAyMi42IDUzLjEgNTAuMyAxMDYuMyA3MkM1OC4zIDUyNS4xIDI1MiA1NTUuNyAyNDguOSA0NTcuNWMwLS43LjMtNTYuNi4zLTk2LjYgNS4xIDEuMSA5LjQgMi4zIDEzLjcgMy4xIDAgMzkuNy4zIDkyLjguMyA5My41LTMuMSA5OC4zIDE5MC42IDY3LjcgMTM0LjMtMTI0IDUzLjEtMjEuNyA4OC00OS40IDEwNi4zLTcyIDkuMS0xMy44LS45LTI4LjMtMTYuMS0xNy44em0tMzAuNSAxOS4yYy02OC45IDM3LjQtMTI4LjMgMzEuMS0xNjAuNiAyOS43LTIzLjctLjktMzIuNiA5LjEtMzMuNyAyNC45LTEwLjMtNy43LTE4LjYtMTUuNS0yMC4zLTE3LjEtNS4xLTUuNC0xMy43LTgtMjcuMS03LjctMzEuNyAxLjEtODkuNyA3LjQtMTU3LjQtMjhWNzIuM2MwLTM0LjkgOC45LTQ1LjcgNDAuNi00NS43aDMxNy43YzMwLjMgMCA0MC45IDEyLjkgNDAuOSA0NS43djE5MC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbmFwY2hhdEdob3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC44NDYgMzkyLjY3M2MtNS4yMTEgMTIuMTU3LTI3LjIzOSAyMS4wODktNjcuMzYgMjcuMzE4LTIuMDY0IDIuNzg2LTMuNzc1IDE0LjY4Ni02LjUwNyAyMy45NTYtMS42MjUgNS41NjYtNS42MjMgOC44NjktMTIuMTI4IDguODY5bC0uMjk3LS4wMDVjLTkuMzk1IDAtMTkuMjAzLTQuMzIzLTM4Ljg1Mi00LjMyMy0yNi41MjEgMC0zNS42NjIgNi4wNDMtNTYuMjU0IDIwLjU4OC0yMS44MzIgMTUuNDM4LTQyLjc3MSAyOC43NjQtNzQuMDI3IDI3LjM5OS0zMS42NDYgMi4zMzQtNTguMDI1LTE2LjkwOC03Mi44NzEtMjcuNDA0LTIwLjcxNC0xNC42NDMtMjkuODI4LTIwLjU4Mi01Ni4yNDEtMjAuNTgyLTE4Ljg2NCAwLTMwLjczNiA0LjcyLTM4Ljg1MiA0LjcyLTguMDczIDAtMTEuMjEzLTQuOTIyLTEyLjQyMi05LjA0LTIuNzAzLTkuMTg5LTQuNDA0LTIxLjI2My02LjUyMy0yNC4xMy0yMC42NzktMy4yMDktNjcuMzEtMTEuMzQ0LTY4LjQ5OC0zMi4xNWExMC42MjcgMTAuNjI3IDAgMCAxIDguODc3LTExLjA2OWM2OS41ODMtMTEuNDU1IDEwMC45MjQtODIuOTAxIDEwMi4yMjctODUuOTM0LjA3NC0uMTc2LjE1NS0uMzQ0LjIzNy0uNTE1IDMuNzEzLTcuNTM3IDQuNTQ0LTEzLjg0OSAyLjQ2My0xOC43NTMtNS4wNS0xMS44OTYtMjYuODcyLTE2LjE2NC0zNi4wNTMtMTkuNzk2LTIzLjcxNS05LjM2Ni0yNy4wMTUtMjAuMTI4LTI1LjYxMi0yNy41MDQgMi40MzctMTIuODM2IDIxLjcyNS0yMC43MzUgMzMuMDAyLTE1LjQ1MyA4LjkxOSA0LjE4MSAxNi44NDMgNi4yOTcgMjMuNTQ3IDYuMjk3IDUuMDIyIDAgOC4yMTItMS4yMDQgOS45Ni0yLjE3MS0yLjA0My0zNS45MzYtNy4xMDEtODcuMjkgNS42ODctMTE1Ljk2OUMxNTguMTIyIDIxLjMwNCAyMjkuNzA1IDE1LjQyIDI1MC44MjYgMTUuNDJjLjk0NCAwIDkuMTQxLS4wODkgMTAuMTEtLjA4OSA1Mi4xNDggMCAxMDIuMjU0IDI2Ljc4IDEyNi43MjMgODEuNjQzIDEyLjc3NyAyOC42NSA3Ljc0OSA3OS43OTIgNS42OTUgMTE2LjAwOSAxLjU4Mi44NzIgNC4zNTcgMS45NDIgOC41OTkgMi4xMzkgNi4zOTctLjI4NiAxMy44MTUtMi4zODkgMjIuMDY5LTYuMjU3IDYuMDg1LTIuODQ2IDE0LjQwNi0yLjQ2MSAyMC40OC4wNThsLjAyOS4wMWM5LjQ3NiAzLjM4NSAxNS40MzkgMTAuMjE1IDE1LjU4OSAxNy44Ny4xODQgOS43NDctOC41MjIgMTguMTY1LTI1Ljg3OCAyNS4wMTgtMi4xMTguODM1LTQuNjk0IDEuNjU1LTcuNDM0IDIuNTI1LTkuNzk3IDMuMTA2LTI0LjYgNy44MDUtMjguNjE2IDE3LjI3MS0yLjA3OSA0LjkwNC0xLjI1NiAxMS4yMTEgMi40NiAxOC43NDguMDg3LjE2OC4xNjYuMzQyLjIzOS41MTUgMS4zMDEgMy4wMyAzMi42MTUgNzQuNDYgMTAyLjIzIDg1LjkzNCA2LjQyNyAxLjA1OCAxMS4xNjMgNy44NzcgNy43MjUgMTUuODU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbmFwY2hhdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNi41IDMxNC45Yy0zLjUgOC4xLTE4LjEgMTQtNDQuOCAxOC4yLTEuNCAxLjktMi41IDkuOC00LjMgMTUuOS0xLjEgMy43LTMuNyA1LjktOC4xIDUuOWgtLjJjLTYuMiAwLTEyLjgtMi45LTI1LjgtMi45LTE3LjYgMC0yMy43IDQtMzcuNCAxMy43LTE0LjUgMTAuMy0yOC40IDE5LjEtNDkuMiAxOC4yLTIxIDEuNi0zOC42LTExLjItNDguNS0xOC4yLTEzLjgtOS43LTE5LjgtMTMuNy0zNy40LTEzLjctMTIuNSAwLTIwLjQgMy4xLTI1LjggMy4xLTUuNCAwLTcuNS0zLjMtOC4zLTYtMS44LTYuMS0yLjktMTQuMS00LjMtMTYtMTMuOC0yLjEtNDQuOC03LjUtNDUuNS0yMS40LS4yLTMuNiAyLjMtNi44IDUuOS03LjQgNDYuMy03LjYgNjcuMS01NS4xIDY4LTU3LjEgMC0uMS4xLS4yLjItLjMgMi41LTUgMy05LjIgMS42LTEyLjUtMy40LTcuOS0xNy45LTEwLjctMjQtMTMuMi0xNS44LTYuMi0xOC0xMy40LTE3LTE4LjMgMS42LTguNSAxNC40LTEzLjggMjEuOS0xMC4zIDUuOSAyLjggMTEuMiA0LjIgMTUuNyA0LjIgMy4zIDAgNS41LS44IDYuNi0xLjQtMS40LTIzLjktNC43LTU4IDMuOC03Ny4xQzE1OS4xIDEwMCAyMDYuNyA5NiAyMjAuNyA5NmMuNiAwIDYuMS0uMSA2LjctLjEgMzQuNyAwIDY4IDE3LjggODQuMyA1NC4zIDguNSAxOS4xIDUuMiA1My4xIDMuOCA3Ny4xIDEuMS42IDIuOSAxLjMgNS43IDEuNCA0LjMtLjIgOS4yLTEuNiAxNC43LTQuMiA0LTEuOSA5LjYtMS42IDEzLjYgMCA2LjMgMi4zIDEwLjMgNi44IDEwLjQgMTEuOS4xIDYuNS01LjcgMTIuMS0xNy4yIDE2LjYtMS40LjYtMy4xIDEuMS00LjkgMS43LTYuNSAyLjEtMTYuNCA1LjItMTkgMTEuNS0xLjQgMy4zLS44IDcuNSAxLjYgMTIuNS4xLjEuMS4yLjIuMy45IDIgMjEuNyA0OS41IDY4IDU3LjEgNCAxIDcuMSA1LjUgNC45IDEwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNuYXBjaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE2OS41IDMzOC45Yy0zLjUgOC4xLTE4LjEgMTQtNDQuOCAxOC4yLTEuNCAxLjktMi41IDkuOC00LjMgMTUuOS0xLjEgMy43LTMuNyA1LjktOC4xIDUuOWgtLjJjLTYuMiAwLTEyLjgtMi45LTI1LjgtMi45LTE3LjYgMC0yMy43IDQtMzcuNCAxMy43LTE0LjUgMTAuMy0yOC40IDE5LjEtNDkuMiAxOC4yLTIxIDEuNi0zOC42LTExLjItNDguNS0xOC4yLTEzLjgtOS43LTE5LjgtMTMuNy0zNy40LTEzLjctMTIuNSAwLTIwLjQgMy4xLTI1LjggMy4xLTUuNCAwLTcuNS0zLjMtOC4zLTYtMS44LTYuMS0yLjktMTQuMS00LjMtMTYtMTMuOC0yLjEtNDQuOC03LjUtNDUuNS0yMS40LS4yLTMuNiAyLjMtNi44IDUuOS03LjQgNDYuMy03LjYgNjcuMS01NS4xIDY4LTU3LjEgMC0uMS4xLS4yLjItLjMgMi41LTUgMy05LjIgMS42LTEyLjUtMy40LTcuOS0xNy45LTEwLjctMjQtMTMuMi0xNS44LTYuMi0xOC0xMy40LTE3LTE4LjMgMS42LTguNSAxNC40LTEzLjggMjEuOS0xMC4zIDUuOSAyLjggMTEuMiA0LjIgMTUuNyA0LjIgMy4zIDAgNS41LS44IDYuNi0xLjQtMS40LTIzLjktNC43LTU4IDMuOC03Ny4xQzE4My4xIDEwMCAyMzAuNyA5NiAyNDQuNyA5NmMuNiAwIDYuMS0uMSA2LjctLjEgMzQuNyAwIDY4IDE3LjggODQuMyA1NC4zIDguNSAxOS4xIDUuMiA1My4xIDMuOCA3Ny4xIDEuMS42IDIuOSAxLjMgNS43IDEuNCA0LjMtLjIgOS4yLTEuNiAxNC43LTQuMiA0LTEuOSA5LjYtMS42IDEzLjYgMCA2LjMgMi4zIDEwLjMgNi44IDEwLjQgMTEuOS4xIDYuNS01LjcgMTIuMS0xNy4yIDE2LjYtMS40LjYtMy4xIDEuMS00LjkgMS43LTYuNSAyLjEtMTYuNCA1LjItMTkgMTEuNS0xLjQgMy4zLS44IDcuNSAxLjYgMTIuNS4xLjEuMS4yLjIuMy45IDIgMjEuNyA0OS41IDY4IDU3LjEgNCAxIDcuMSA1LjUgNC45IDEwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvdW5kY2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTExLjQgMjU2LjNsNS44IDY1LTUuOCA2OC4zYy0uMyAyLjUtMi4yIDQuNC00LjQgNC40cy00LjItMS45LTQuMi00LjRsLTUuNi02OC4zIDUuNi02NWMwLTIuMiAxLjktNC4yIDQuMi00LjIgMi4yIDAgNC4xIDIgNC40IDQuMnptMjEuNC00NS42Yy0yLjggMC00LjcgMi4yLTUgNWwtNSAxMDUuNiA1IDY4LjNjLjMgMi44IDIuMiA1IDUgNSAyLjUgMCA0LjctMi4yIDQuNy01bDUuOC02OC4zLTUuOC0xMDUuNmMwLTIuOC0yLjItNS00LjctNXptMjUuNS0yNC4xYy0zLjEgMC01LjMgMi4yLTUuNiA1LjNsLTQuNCAxMzAgNC40IDY3LjhjLjMgMy4xIDIuNSA1LjMgNS42IDUuMyAyLjggMCA1LjMtMi4yIDUuMy01LjNsNS4zLTY3LjgtNS4zLTEzMGMwLTMuMS0yLjUtNS4zLTUuMy01LjN6TTcuMiAyODMuMmMtMS40IDAtMi4yIDEuMS0yLjUgMi41TDAgMzIxLjNsNC43IDM1Yy4zIDEuNCAxLjEgMi41IDIuNSAyLjVzMi4yLTEuMSAyLjUtMi41bDUuNi0zNS01LjYtMzUuNmMtLjMtMS40LTEuMS0yLjUtMi41LTIuNXptMjMuNi0yMS45Yy0xLjQgMC0yLjUgMS4xLTIuNSAyLjVsLTYuNCA1Ny41IDYuNCA1Ni4xYzAgMS43IDEuMSAyLjggMi41IDIuOHMyLjUtMS4xIDIuOC0yLjVsNy4yLTU2LjQtNy4yLTU3LjVjLS4zLTEuNC0xLjQtMi41LTIuOC0yLjV6bTI1LjMtMTEuNGMtMS43IDAtMy4xIDEuNC0zLjMgMy4zTDQ3IDMyMS4zbDUuOCA2NS44Yy4zIDEuNyAxLjcgMy4xIDMuMyAzLjEgMS43IDAgMy4xLTEuNCAzLjEtMy4xbDYuOS02NS44LTYuOS02OC4xYzAtMS45LTEuNC0zLjMtMy4xLTMuM3ptMjUuMy0yLjJjLTEuOSAwLTMuNiAxLjQtMy42IDMuNmwtNS44IDcwIDUuOCA2Ny44YzAgMi4yIDEuNyAzLjYgMy42IDMuNnMzLjYtMS40IDMuOS0zLjZsNi40LTY3LjgtNi40LTcwYy0uMy0yLjItMi0zLjYtMy45LTMuNnptMjQxLjQtMTEwLjljLTEuMS0uOC0yLjgtMS40LTQuMi0xLjQtMi4yIDAtNC4yLjgtNS42IDEuOS0xLjkgMS43LTMuMSA0LjItMy4zIDYuN3YuOGwtMy4zIDE3Ni43IDEuNyAzMi41IDEuNyAzMS43Yy4zIDQuNyA0LjIgOC42IDguOSA4LjZzOC42LTMuOSA4LjYtOC42bDMuOS02NC4yLTMuOS0xNzcuNWMtLjQtMy0yLTUuOC00LjUtNy4yem0tMjYuNyAxNS4zYy0xLjQtLjgtMi44LTEuNC00LjQtMS40cy0zLjEuNi00LjQgMS40Yy0yLjIgMS40LTMuNiAzLjktMy42IDYuN2wtLjMgMS43LTIuOCAxNjAuOHMwIC4zIDMuMSA2NS42di4zYzAgMS43LjYgMy4zIDEuNyA0LjcgMS43IDEuOSAzLjkgMy4xIDYuNCAzLjEgMi4yIDAgNC4yLTEuMSA1LjYtMi41IDEuNy0xLjQgMi41LTMuMyAyLjUtNS42bC4zLTYuNyAzLjEtNTguNi0zLjMtMTYyLjhjLS4zLTIuOC0xLjctNS4zLTMuOS02Ljd6bS0xMTEuNCAyMi41Yy0zLjEgMC01LjggMi44LTUuOCA2LjFsLTQuNCAxNDAuNiA0LjQgNjcuMmMuMyAzLjMgMi44IDUuOCA1LjggNS44IDMuMyAwIDUuOC0yLjUgNi4xLTUuOGw1LTY3LjItNS0xNDAuNmMtLjItMy4zLTIuNy02LjEtNi4xLTYuMXptMzc2LjcgNjIuOGMtMTAuOCAwLTIxLjEgMi4yLTMwLjYgNi4xLTYuNC03MC44LTY1LjgtMTI2LjQtMTM4LjMtMTI2LjQtMTcuOCAwLTM1IDMuMy01MC4zIDkuNC02LjEgMi4yLTcuOCA0LjQtNy44IDkuMnYyNDkuN2MwIDUgMy45IDguNiA4LjYgOS4yaDIxOC4zYzQzLjMgMCA3OC42LTM1IDc4LjYtNzguMy4xLTQzLjYtMzUuMi03OC45LTc4LjUtNzguOXptLTI5Ni43LTYwLjNjLTQuMiAwLTcuNSAzLjMtNy44IDcuOGwtMy4zIDEzNi43IDMuMyA2NS42Yy4zIDQuMiAzLjYgNy41IDcuOCA3LjUgNC4yIDAgNy41LTMuMyA3LjUtNy41bDMuOS02NS42LTMuOS0xMzYuN2MtLjMtNC41LTMuMy03LjgtNy41LTcuOHptLTUzLjYtNy44Yy0zLjMgMC02LjQgMy4xLTYuNCA2LjdsLTMuOSAxNDUuMyAzLjkgNjYuOWMuMyAzLjYgMy4xIDYuNCA2LjQgNi40IDMuNiAwIDYuNC0yLjggNi43LTYuNGw0LjQtNjYuOS00LjQtMTQ1LjNjLS4zLTMuNi0zLjEtNi43LTYuNy02Ljd6bTI2LjcgMy40Yy0zLjkgMC02LjkgMy4xLTYuOSA2LjlMMjI3IDMyMS4zbDMuOSA2Ni40Yy4zIDMuOSAzLjEgNi45IDYuOSA2LjlzNi45LTMuMSA2LjktNi45bDQuMi02Ni40LTQuMi0xNDEuN2MwLTMuOS0zLTYuOS02LjktNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3VyY2V0cmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNy4yIDIwM2MwLTExMi4xLTkwLjktMjAzLTIwMy0yMDNDMTEyLjEtLjIgMjEuMiA5MC42IDIxIDIwMi42QTIwMi44NiAyMDIuODYgMCAwIDAgMTYxLjUgMzk2djEwMS43YTE0LjMgMTQuMyAwIDAgMCAxNC4zIDE0LjNoOTYuNGExNC4zIDE0LjMgMCAwIDAgMTQuMy0xNC4zVjM5Ni4xQTIwMy4xOCAyMDMuMTggMCAwIDAgNDI3LjIgMjAzem0tMjcxLjYgMGMwLTkwLjggMTM3LjMtOTAuOCAxMzcuMyAwLS4xIDg5LjktMTM3LjMgOTEtMTM3LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BlYWthcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzOTEuNzhDLTE1LjQxIDMwMy41OS04IDE2Ny40MiA4MC42NCA4Ny42NHMyMjQuOC03MyAzMDQuMjEgMTUuMjQgNzIgMjI0LjM2LTE2LjY0IDMwNC4xNGMtMTguNzQgMTYuODcgNjQgNDMuMDkgNDIgNTIuMjYtODIuMDYgMzQuMjEtMjUzLjkxIDM1LTM0Ni4yMy02Ny41em0yMTMuMzEtMjExLjZsMzguNS00MC44NmMtOS42MS04Ljg5LTMyLTI2LjgzLTc2LjE3LTI3LjYtNTIuMzMtLjkxLTk1Ljg2IDI4LjMtOTYuNzcgODAtLjIgMTEuMzMuMjkgMzYuNzIgMjkuNDIgNTQuODMgMzQuNDYgMjEuNDIgODYuNTIgMjEuNTEgODYgNTIuMjYtLjM3IDIxLjI4LTI2LjQyIDI1LjgxLTM4LjU5IDI1LjYtMy0uMDUtMzAuMjMtLjQ2LTQ3LjYxLTI0LjYybC00MCA0Mi42MWMyOC4xNiAyNyA1OSAzMi42MiA4My40OSAzMy4wNSAxMC4yMy4xOCA5Ni40Mi4zMyA5Ny44NC04MSAuMjgtMTUuODEtMi4wNy0zOS43Mi0yOC44Ni01Ni41OS0zNC4zNi0yMS42NC04NS0xOS40NS04NC40My00OS43NS40MS0yMy4yNSAzMS0yNS4zNyAzNy41My0yNS4yNi40MyAwIDI2LjYyLjI2IDM5LjYyIDE3LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGVha2VyRGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTMuODYgMjk2SDEwMGExMDAgMTAwIDAgMCAxIDAtMjAwaDEzMi44NGE0MCA0MCAwIDAgMSAwIDgwSDk4Yy0yNi40NyAwLTI2LjQ1IDQwIDAgNDBoMTEzLjgyYTEwMCAxMDAgMCAwIDEgMCAyMDBINDBhNDAgNDAgMCAwIDEgMC04MGgxNzMuODZjMjYuNDggMCAyNi40Ni00MCAwLTQwek0yOTggNDE2YTEyMC4yMSAxMjAuMjEgMCAwIDAgNTEuMTEtODBoNjQuNTVhMTkuODMgMTkuODMgMCAwIDAgMTkuNjYtMjBWMTk2YTE5LjgzIDE5LjgzIDAgMCAwLTE5LjY2LTIwSDI5Ni40MmE2MC43NyA2MC43NyAwIDAgMCAwLTgwaDEzNi45M2M0My40NCAwIDc4LjY1IDM1LjgyIDc4LjY1IDgwdjE2MGMwIDQ0LjE4LTM1LjIxIDgwLTc4LjY1IDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcG90aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4xIDggMCAxMTkuMSAwIDI1NnMxMTEuMSAyNDggMjQ4IDI0OCAyNDgtMTExLjEgMjQ4LTI0OFMzODQuOSA4IDI0OCA4em0xMDAuNyAzNjQuOWMtNC4yIDAtNi44LTEuMy0xMC43LTMuNi02Mi40LTM3LjYtMTM1LTM5LjItMjA2LjctMjQuNS0zLjkgMS05IDIuNi0xMS45IDIuNi05LjcgMC0xNS44LTcuNy0xNS44LTE1LjggMC0xMC4zIDYuMS0xNS4yIDEzLjYtMTYuOCA4MS45LTE4LjEgMTY1LjYtMTYuNSAyMzcgMjYuMiA2LjEgMy45IDkuNyA3LjQgOS43IDE2LjVzLTcuMSAxNS40LTE1LjIgMTUuNHptMjYuOS02NS42Yy01LjIgMC04LjctMi4zLTEyLjMtNC4yLTYyLjUtMzctMTU1LjctNTEuOS0yMzguNi0yOS40LTQuOCAxLjMtNy40IDIuNi0xMS45IDIuNi0xMC43IDAtMTkuNC04LjctMTkuNC0xOS40czUuMi0xNy44IDE1LjUtMjAuN2MyNy44LTcuOCA1Ni4yLTEzLjYgOTcuOC0xMy42IDY0LjkgMCAxMjcuNiAxNi4xIDE3NyA0NS41IDguMSA0LjggMTEuMyAxMSAxMS4zIDE5LjctLjEgMTAuOC04LjUgMTkuNS0xOS40IDE5LjV6bTMxLTc2LjJjLTUuMiAwLTguNC0xLjMtMTIuOS0zLjktNzEuMi00Mi41LTE5OC41LTUyLjctMjgwLjktMjkuNy0zLjYgMS04LjEgMi42LTEyLjkgMi42LTEzLjIgMC0yMy4zLTEwLjMtMjMuMy0yMy42IDAtMTMuNiA4LjQtMjEuMyAxNy40LTIzLjkgMzUuMi0xMC4zIDc0LjYtMTUuMiAxMTcuNS0xNS4yIDczIDAgMTQ5LjUgMTUuMiAyMDUuNCA0Ny44IDcuOCA0LjUgMTIuOSAxMC43IDEyLjkgMjIuNiAwIDEzLjYtMTEgMjMuMy0yMy4yIDIzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZXNwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xMiAzNDMuMzRjLTkuNjUgOS42NS05LjY1IDI1LjI5IDAgMzQuOTQgOS42NSA5LjY1IDI1LjI5IDkuNjUgMzQuOTQgMEwzNzguMjQgMjIxLjFjMTkuMjktMTkuMjkgNTAuNTctMTkuMjkgNjkuODYgMHMxOS4yOSA1MC41NyAwIDY5Ljg2TDI5My45NSA0NDUuMWMxOS4yNyAxOS4yOSA1MC41MyAxOS4zMSA2OS44Mi4wNGwuMDQtLjA0IDExOS4yNS0xMTkuMjRjMzguNTktMzguNTkgMzguNTktMTAxLjE0IDAtMTM5LjcyLTM4LjU5LTM4LjU5LTEwMS4xNS0zOC41OS0xMzkuNzIgMGwtMTU3LjIyIDE1Ny4yem0yNDQuNTMtMTA0LjhjLTkuNjUtOS42NS0yNS4yOS05LjY1LTM0LjkzIDBsLTE1Ny4yIDE1Ny4xOGMtMTkuMjcgMTkuMjktNTAuNTMgMTkuMzEtNjkuODIuMDVsLS4wNS0uMDVjLTkuNjQtOS42NC0yNS4yNy05LjY1LTM0LjkyLS4wMWwtLjAxLjAxYy05LjY1IDkuNjQtOS42NiAyNS4yOC0uMDIgMzQuOTNsLjAyLjAyYzM4LjU4IDM4LjU3IDEwMS4xNCAzOC41NyAxMzkuNzIgMGwxNTcuMi0xNTcuMmM5LjY1LTkuNjUgOS42NS0yNS4yOS4wMS0zNC45M3ptLTI2MS45OSA4Ny4zM2wxNTcuMTgtMTU3LjE4YzkuNjQtOS42NSA5LjY0LTI1LjI5IDAtMzQuOTQtOS42NC05LjY0LTI1LjI3LTkuNjQtMzQuOTEgMEwxMzMuNzIgMjkwLjkzYy0xOS4yOCAxOS4yOS01MC41NiAxOS4zLTY5Ljg1LjAxbC0uMDEtLjAxYy0xOS4yOS0xOS4yOC0xOS4zMS01MC41NC0uMDMtNjkuODRsLjAzLS4wM0wyMTguMDMgNjYuODljLTE5LjI4LTE5LjI5LTUwLjU1LTE5LjMtNjkuODUtLjAybC0uMDIuMDJMMjguOTMgMTg2LjE0Yy0zOC41OCAzOC41OS0zOC41OCAxMDEuMTQgMCAxMzkuNzIgMzguNiAzOC41OSAxMDEuMTMgMzguNTkgMTM5LjczLjAxem0tODcuMzMtNTIuNGM5LjY0IDkuNjQgMjUuMjcgOS42NCAzNC45MSAwbDE1Ny4yMS0xNTcuMTljMTkuMjgtMTkuMjkgNTAuNTUtMTkuMyA2OS44NC0uMDJsLjAyLjAyYzkuNjUgOS42NSAyNS4yOSA5LjY1IDM0LjkzIDAgOS42NS05LjY1IDkuNjUtMjUuMjkgMC0zNC45My0zOC41OS0zOC41OS0xMDEuMTMtMzguNTktMTM5LjcyIDBMODEuMzMgMjM4LjU0Yy05LjY1IDkuNjQtOS42NSAyNS4yOC0uMDEgMzQuOTNoLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja0V4Y2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcgMzMyLjNoNDEyLjd2MjJjMCAzNy43LTI5LjMgNjgtNjUuMyA2OGgtMTlMMjU5LjMgNTEydi04OS43SDgzYy0zNiAwLTY1LjMtMzAuMy02NS4zLTY4di0yMnptMC0yMy42aDQxMi43di04NUgxNy43djg1em0wLTEwOS40aDQxMi43di04NUgxNy43djg1ek0zNjUgMEg4M0M0NyAwIDE3LjcgMzAuMyAxNy43IDY3LjdWOTBoNDEyLjdWNjcuN0M0MzAuMyAzMC4zIDQwMSAwIDM2NSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja092ZXJmbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43IDMxMUw5NSAyNjkuNyA4Ni44IDMwOWwxOTUuNyA0MXptNTEtODdMMTg4LjIgOTUuN2wtMjUuNSAzMC44IDE1My41IDEyOC4zem0tMzEuMiAzOS43TDEyOS4yIDE3OWwtMTYuNyAzNi41TDI5My43IDMwMHpNMjYyIDMybC0zMiAyNCAxMTkuMyAxNjAuMyAzMi0yNHptMjAuNSAzMjhoLTIwMHYzOS43aDIwMHptMzkuNyA4MEg0Mi43VjMyMGgtNDB2MTYwaDM1OS41VjMyMGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrcGF0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQuNiAyMzIuNGMwIDguNS00LjI2IDIwLjQ5LTIxLjM0IDIwLjQ5aC0xOS42MXYtNDEuNDdoMTkuNjFjMTcuMTMgMCAyMS4zNCAxMi4zNiAyMS4zNCAyMC45OHpNNDQ4IDMydjQ0OEgwVjMyek0xNTEuMyAyODcuODRjMC0yMS4yNC0xMi4xMi0zNC41NC00Ni43Mi00NC44NS0yMC41Ny03LjQxLTI2LTEwLjkxLTI2LTE4LjYzczctMTQuNjEgMjAuNDEtMTQuNjFjMTQuMDkgMCAyMC43OSA4LjQ1IDIwLjc5IDE4LjM1aDMwLjdsLjE5LS41N2MuNS0xOS41Ny0xNS4wNi00MS42NS01MS4xMi00MS42NS0yMy4zNyAwLTUyLjU1IDEwLjc1LTUyLjU1IDM4LjI5IDAgMTkuNCA5LjI1IDMxLjI5IDUwLjc0IDQ0LjM3IDE3LjI2IDYuMTUgMjEuOTEgMTAuNCAyMS45MSAxOS40OCAwIDE1LjItMTkuMTMgMTQuMjMtMTkuNDcgMTQuMjMtMjAuNCAwLTI1LjY1LTkuMS0yNS42NS0yMS45aC0zMC44bC0uMTguNTZjLS42OCAzMS4zMiAyOC4zOCA0NS4yMiA1Ni42MyA0NS4yMiAyOS45OCAwIDUxLjEyLTEzLjU1IDUxLjEyLTM4LjI5em0xMjUuMzgtNTUuNjNjMC0yNS4zLTE4LjQzLTQ1LjQ2LTUzLjQyLTQ1LjQ2aC01MS43OHYxMzguMThoMzIuMTd2LTQ3LjM2aDE5LjYxYzMwLjI1IDAgNTMuNDItMTUuOTUgNTMuNDItNDUuMzZ6TTI5Ny45NCAzMjVMMzQ3IDE4Ni43OGgtMzEuMDlMMjY4IDMyNXptMTA2LjUyLTEzOC4yMmgtMzEuMDlMMzI1LjQ2IDMyNWgyOS45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RheWxpbmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODIuNyAyOTIuNWwyLjcgMi43LTE3MC0xNjcuM2MtMy41LTMuNS05LjctMy43LTEzLjgtLjVMMTQ0LjMgMTcxYy00LjIgMy4yLTQuNiA4LjctMS4xIDEyLjJsNjguMSA2NC4zYzMuNiAzLjUgOS45IDMuNyAxNCAuNWwuMS0uMWM0LjEtMy4yIDEwLjQtMyAxNCAuNWw4NCA4MS4zYzMuNiAzLjUgMy4yIDktLjkgMTIuMmwtOTMuMiA3NGMtNC4yIDMuMy0xMC41IDMuMS0xNC4yLS40TDYzLjIgMjY4Yy0zLjUtMy41LTkuNy0zLjctMTMuOS0uNUwzLjUgMzAyLjRjLTQuMiAzLjItNC43IDguNy0xLjIgMTIuMkwyMTEgNTEwLjdzNy40IDYuOCAxNy4zLS44bDE5OC0xNjMuOWM0LTMuMiA0LjQtOC43LjctMTIuMnptNTQuNS04My40TDIyNi43IDIuNWMtMS41LTEuMi04LTUuNS0xNi4zIDEuMUwzLjYgMTY1LjdjLTQuMiAzLjItNC44IDguNy0xLjIgMTIuMmw0Mi4zIDQxLjcgMTcxLjcgMTY1LjFjMy43IDMuNSAxMC4xIDMuNyAxNC4zLjRsNTAuMi0zOC44LS4zLS4zIDcuNy02YzQuMi0zLjIgNC42LTguNy45LTEyLjJsLTU3LjEtNTQuNGMtMy42LTMuNS0xMC0zLjctMTQuMi0uNWwtLjEuMWMtNC4yIDMuMi0xMC41IDMuMS0xNC4yLS40TDEwOSAxODAuOGMtMy42LTMuNS0zLjEtOC45IDEuMS0xMi4ybDkyLjItNzEuNWM0LjEtMy4yIDEwLjMtMyAxMy45LjVsMTYwLjQgMTU5YzMuNyAzLjUgMTAgMy43IDE0LjEuNWw0NS44LTM1LjhjNC4xLTMuMiA0LjQtOC43LjctMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlYW1TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg1LjIgMzU2LjVjNy43LTE4LjUtMS0zOS43LTE5LjYtNDcuNGwtMjkuNS0xMi4yYzExLjQtNC4zIDI0LjMtNC41IDM2LjQuNSAxMi4yIDUuMSAyMS42IDE0LjYgMjYuNyAyNi43IDUgMTIuMiA1IDI1LjYtLjEgMzcuNy0xMC41IDI1LjEtMzkuNCAzNy02NC42IDI2LjUtMTEuNi00LjgtMjAuNC0xMy42LTI1LjQtMjQuMmwyOC41IDExLjhjMTguNiA3LjggMzkuOS0uOSA0Ny42LTE5LjR6TTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjE2MC43bDExNi42IDQ4LjFjMTItOC4yIDI2LjItMTIuMSA0MC43LTExLjNsNTUuNC04MC4ydi0xLjFjMC00OC4yIDM5LjMtODcuNSA4Ny42LTg3LjVzODcuNiAzOS4zIDg3LjYgODcuNWMwIDQ5LjItNDAuOSA4OC43LTg5LjYgODcuNWwtNzkgNTYuM2MxLjYgMzguNS0yOS4xIDY4LjgtNjUuNyA2OC44LTMxLjggMC01OC41LTIyLjctNjQuNS01Mi43TDAgMzE5LjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTk5LjcgMjIyLjVjLTMyLjIgMC01OC40LTI2LjEtNTguNC01OC4zczI2LjItNTguMyA1OC40LTU4LjMgNTguNCAyNi4yIDU4LjQgNTguMy0yNi4yIDU4LjMtNTguNCA1OC4zem0uMS0xNC42YzI0LjIgMCA0My45LTE5LjYgNDMuOS00My44IDAtMjQuMi0xOS42LTQzLjgtNDMuOS00My44LTI0LjIgMC00My45IDE5LjYtNDMuOSA0My44IDAgMjQuMiAxOS43IDQzLjggNDMuOSA0My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVhbVN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTUuNSAxNzcuNWMwIDMzLjgtMjcuNSA2MS02MSA2MS0zMy44IDAtNjEtMjcuMy02MS02MXMyNy4zLTYxIDYxLTYxYzMzLjUgMCA2MSAyNy4yIDYxIDYxem01Mi41LjJjMCA2My01MSAxMTMuOC0xMTMuNyAxMTMuOEwyMjUgMzcxLjNjLTQgNDMtNDAuNSA3Ni44LTg0LjUgNzYuOC00MC41IDAtNzQuNy0yOC44LTgzLTY3TDAgMzU4VjI1MC43TDk3LjIgMjkwYzE1LjEtOS4yIDMyLjItMTMuMyA1Mi0xMS41bDcxLTEwMS43Yy41LTYyLjMgNTEuNS0xMTIuOCAxMTQtMTEyLjhDMzk3IDY0IDQ0OCAxMTUgNDQ4IDE3Ny43ek0yMDMgMzYzYzAtMzQuNy0yNy44LTYyLjUtNjIuNS02Mi41LTQuNSAwLTkgLjUtMTMuNSAxLjVsMjYgMTAuNWMyNS41IDEwLjIgMzggMzkgMjcuNyA2NC41LTEwLjIgMjUuNS0zOS4yIDM4LTY0LjcgMjcuNS0xMC4yLTQtMjAuNS04LjMtMzAuNy0xMi4yIDEwLjUgMTkuNyAzMS4yIDMzLjIgNTUuMiAzMy4yIDM0LjcgMCA2Mi41LTI3LjggNjIuNS02Mi41em0yMDcuNS0xODUuM2MwLTQyLTM0LjMtNzYuMi03Ni4yLTc2LjItNDIuMyAwLTc2LjUgMzQuMi03Ni41IDc2LjIgMCA0Mi4yIDM0LjMgNzYuMiA3Ni41IDc2LjIgNDEuOS4xIDc2LjItMzMuOSA3Ni4yLTc2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0ZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyNTZjMCAxMzctMTExLjIgMjQ4LTI0OC40IDI0OC0xMTMuOCAwLTIwOS42LTc2LjMtMjM5LTE4MC40bDk1LjIgMzkuM2M2LjQgMzIuMSAzNC45IDU2LjQgNjguOSA1Ni40IDM5LjIgMCA3MS45LTMyLjQgNzAuMi03My41bDg0LjUtNjAuMmM1Mi4xIDEuMyA5NS44LTQwLjkgOTUuOC05My41IDAtNTEuNi00Mi05My41LTkzLjctOTMuNXMtOTMuNyA0Mi05My43IDkzLjV2MS4yTDE3Ni42IDI3OWMtMTUuNS0uOS0zMC43IDMuNC00My41IDEyLjFMMCAyMzYuMUMxMC4yIDEwOC40IDExNy4xIDggMjQ3LjYgOCAzODQuOCA4IDQ5NiAxMTkgNDk2IDI1NnpNMTU1LjcgMzg0LjNsLTMwLjUtMTIuNmE1Mi43OSA1Mi43OSAwIDAgMCAyNy4yIDI1LjhjMjYuOSAxMS4yIDU3LjgtMS42IDY5LTI4LjQgNS40LTEzIDUuNS0yNy4zLjEtNDAuMy01LjQtMTMtMTUuNS0yMy4yLTI4LjUtMjguNi0xMi45LTUuNC0yNi43LTUuMi0zOC45LS42bDMxLjUgMTNjMTkuOCA4LjIgMjkuMiAzMC45IDIwLjkgNTAuNy04LjMgMTkuOS0zMSAyOS4yLTUwLjggMjF6bTE3My44LTEyOS45Yy0zNC40IDAtNjIuNC0yOC02Mi40LTYyLjNzMjgtNjIuMyA2Mi40LTYyLjMgNjIuNCAyOCA2Mi40IDYyLjMtMjcuOSA2Mi4zLTYyLjQgNjIuM3ptLjEtMTUuNmMyNS45IDAgNDYuOS0yMSA0Ni45LTQ2LjggMC0yNS45LTIxLTQ2LjgtNDYuOS00Ni44cy00Ni45IDIxLTQ2LjkgNDYuOGMuMSAyNS44IDIxLjEgNDYuOCA0Ni45IDQ2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0aWNrZXJNdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MS43IDE5OS42Yy0xLjMuMy4zIDAgMCAwem0tNi4yLTc3LjRjLTcuNy0yMi4zLTUuMS03LjItMTMuNC0zNi45LTEuNi02LjUtMy42LTE0LjUtNi4yLTIwLTQuNC04LjctNC42LTcuNS00LjYtOS41IDAtNS4zIDMwLjctNDUuMyAxOS00Ni45LTUuNy0uNi0xMi4yIDExLjYtMjAuNiAxNy04LjYgNC4yLTggNS0xMC4zIDUtMi42IDAtNS43LTMtNi4yLTUtMi01LjcgMS45LTI1LjktMy42LTI1LjktMy42IDAtMTIuMyAyNC44LTE3IDI1LjgtNS4yIDEuMy0yNy45LTExLjQtNzUuMSAxOC0yNS4zIDEzLjItODYuOSA2NS4yLTg3IDY1LjMtNi43IDQuNy0yMCA0LjctMzUuNSAxNi00NC40IDMwLjEtMTA5LjYgOS40LTExMC43IDktMTEwLjYtMjYuOC0xMjgtMTUuMi0xNTkgMTEuNS0yMC44IDE3LjktMjMuNyAzNi41LTI0LjIgMzguOS00LjIgMjAuNCA1LjIgNDguMyA2LjcgNjQuMyAxLjggMTkuMy0yLjcgMTcuNyA3LjcgOTguMy41IDEgNC4xIDAgNS4xIDEuNSAwIDguNC0zLjggMTIuMS00LjEgMTMtMS41IDQuNS0xLjUgMTAuNSAwIDE2IDIuMyA4LjIgOC4yIDM3LjIgOC4yIDQ2LjkgMCA0MS44LjQgNDQgMi42IDQ5LjQgMy45IDEwIDEyLjUgOS4xIDE3IDEyIDMuMSAzLjUtLjUgOC41IDEgMTIuNS41IDIgMy42IDQgNi4yIDUgOS4yIDMuNiAyNyAuMyAyOS45LTIuNSAxLjYtMS41LjUtNC41IDMuMS01IDUuMSAwIDEwLjgtLjUgMTQuNC0yLjUgNS4xLTIuNSA0LjEtNiAxLjUtMTAuNS0uNC0uOC03LTEzLjMtOS44LTE2LTIuMS0yLTUuMS0zLTcuMi00LjUtNS44LTQuOS0xMC4zLTE5LjQtMTAuMy0xOS41LTQuNi0xOS40LTEwLjMtNDYuMy00LjEtNjYuOCA0LjYtMTcuMiAzOS41LTg3LjcgMzkuNi04Ny44IDQuMS02LjUgMTctMTEuNSAyNy4zLTcgNiAxLjkgMTkuMyAyMiA2NS40IDMwLjkgNDcuOSA4LjcgOTcuNC0yIDExMi4yLTIgMi44IDItMS45IDEzLS41IDM4LjkgMCAyNi40LS40IDEzLjctNC4xIDI5LjktMi4yIDkuNyAzLjQgMjMuMi0xLjUgNDYuOS0xLjQgOS44LTkuOSAzMi43LTguMiA0My40LjUgMSAxIDIgMS41IDMuNS41IDQuNSAxLjUgOC41IDQuNiAxMCA3LjMgMy42IDEyLTMuNSA5LjggMTEuNS0uNyAzLjEtMi42IDEyIDEuNSAxNSA0LjQgMy43IDMwLjYgMy40IDM2LjUuNSAyLjYtMS41IDEuNi00LjUgNi40LTcuNCAxLjktLjkgMTEuMy0uNCAxMS4zLTYuNS4zLTEuOC05LjItMTkuOS05LjMtMjAtMi42LTMuNS05LjItNC41LTExLjMtOC02LjktMTAuMS0xLjctNTIuNi41LTU5LjQgMy0xMSA1LjYtMjIuNCA4LjctMzIuNCAxMS00Mi41IDEwLjMtNTAuNiAxNi41LTY4LjMuOC0xLjggNi40LTIzLjEgMTAuMy0yOS45IDkuMy0xNyAyMS43LTMyLjQgMzMuNS00Ny40IDE4LTIyLjkgMzQtNDYuOSA1Mi02OS44IDYuMS03IDguMi0xMy43IDE4LTggMTAuOCA1LjcgMjEuNiA3IDMxLjkgMTcgMTQuNiAxMi44IDEwLjIgMTguMiAxMS44IDIyLjkgMS41IDUgNy43IDEwLjUgMTQuOSA5LjUgMTAuNC0yIDEzLTIuNSAxMy40LTIuNSAyLjYtLjUgNS43LTUgNy4yLTggMy4xLTUuNSA3LjItOSA3LjItMTYuNSAwLTcuNy0uNC0yLjgtMjAuNi01Mi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJhdmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU4LjQgMEw3IDI5Mmg4OS4ybDYyLjItMTE2LjFMMjIwLjEgMjkyaDg4LjV6bTE1MC4yIDI5MmwtNDMuOSA4OC4yLTQ0LjYtODguMmgtNjcuNmwxMTIuMiAyMjAgMTExLjUtMjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJpcGVTIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1NS4zIDE1NC42YzAtMjIuMyAxOC42LTMwLjkgNDguNC0zMC45IDQzLjQgMCA5OC41IDEzLjMgMTQxLjkgMzYuN1YyNi4xQzI5OC4zIDcuMiAyNTEuMSAwIDIwMy44IDAgODguMSAwIDExIDYwLjQgMTEgMTYxLjRjMCAxNTcuOSAyMTYuOCAxMzIuMyAyMTYuOCAyMDAuNCAwIDI2LjQtMjIuOSAzNC45LTU0LjcgMzQuOS00Ny4yIDAtMTA4LjItMTkuNS0xNTYuMS00NS41djEyOC41YTM5Ni4wOSAzOTYuMDkgMCAwIDAgMTU2IDMyLjRjMTE4LjYgMCAyMDAuMy01MSAyMDAuMy0xNTMuNiAwLTE3MC4yLTIxOC0xMzkuNy0yMTgtMjAzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmlwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUgMTQ0LjdsLTQzLjMgOS4yLS4yIDE0Mi40YzAgMjYuMyAxOS44IDQzLjMgNDYuMSA0My4zIDE0LjYgMCAyNS4zLTIuNyAzMS4yLTUuOXYtMzMuOGMtNS43IDIuMy0zMy43IDEwLjUtMzMuNy0xNS43VjIyMWgzMy43di0zNy44aC0zMy43em04OS4xIDUxLjZsLTIuNy0xMy4xSDIxM3YxNTMuMmg0NC4zVjIzMy4zYzEwLjUtMTMuOCAyOC4yLTExLjEgMzMuOS05LjN2LTQwLjhjLTYtMi4xLTI2LjctNi0zNy4xIDEzLjF6bTkyLjMtNzIuM2wtNDQuNiA5LjV2MzYuMmw0NC42LTkuNXpNNDQuOSAyMjguM2MwLTYuOSA1LjgtOS42IDE1LjEtOS43IDEzLjUgMCAzMC43IDQuMSA0NC4yIDExLjR2LTQxLjhjLTE0LjctNS44LTI5LjQtOC4xLTQ0LjEtOC4xLTM2IDAtNjAgMTguOC02MCA1MC4yIDAgNDkuMiA2Ny41IDQxLjIgNjcuNSA2Mi40IDAgOC4yLTcuMSAxMC45LTE3IDEwLjktMTQuNyAwLTMzLjctNi4xLTQ4LjYtMTQuMnY0MGMxNi41IDcuMSAzMy4yIDEwLjEgNDguNSAxMC4xIDM2LjkgMCA2Mi4zLTE1LjggNjIuMy00Ny44IDAtNTIuOS02Ny45LTQzLjQtNjcuOS02My40ek02NDAgMjYxLjZjMC00NS41LTIyLTgxLjQtNjQuMi04MS40cy02Ny45IDM1LjktNjcuOSA4MS4xYzAgNTMuNSAzMC4zIDc4LjIgNzMuNSA3OC4yIDIxLjIgMCAzNy4xLTQuOCA0OS4yLTExLjV2LTMzLjRjLTEyLjEgNi4xLTI2IDkuOC00My42IDkuOC0xNy4zIDAtMzIuNS02LjEtMzQuNS0yNi45aDg2LjljLjItMi4zLjYtMTEuNi42LTE1Ljl6bS04Ny45LTE2LjhjMC0yMCAxMi4zLTI4LjQgMjMuNC0yOC40IDEwLjkgMCAyMi41IDguNCAyMi41IDI4LjR6bS0xMTIuOS02NC42Yy0xNy40IDAtMjguNiA4LjItMzQuOCAxMy45bC0yLjMtMTFIMzYzdjIwNC44bDQ0LjQtOS40LjEtNTAuMmM2LjQgNC43IDE1LjkgMTEuMiAzMS40IDExLjIgMzEuOCAwIDYwLjgtMjMuMiA2MC44LTc5LjYuMS01MS42LTI5LjMtNzkuNy02MC41LTc5Ljd6bS0xMC42IDEyMi41Yy0xMC40IDAtMTYuNi0zLjgtMjAuOS04LjRsLS4zLTY2YzQuNi01LjEgMTEtOC44IDIxLjItOC44IDE2LjIgMCAyNy40IDE4LjIgMjcuNCA0MS40LjEgMjMuOS0xMC45IDQxLjgtMjcuNCA0MS44em0tMTI2LjcgMzMuN2g0NC42VjE4My4yaC00NC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHVkaW92aW5hcmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwLjMgMTg3LjdsNC4yIDI4djI4bC0yNS4xIDQ0LjEtMzkuOCA3OC40LTU2LjEgNjcuNS03OS4xIDM3LjgtMTcuNyAyNC41LTcuNyAxMi05LjYgNHMxNy4zLTYzLjYgMTkuNC02My42YzIuMSAwIDIwLjMuNyAyMC4zLjdsNjYuNy0zOC42LTkyLjUgMjYuMS01NS45IDM2LjgtMjIuOCAyOC02LjYgMS40IDIwLjgtNzMuNiA2LjktNS41IDIwLjcgMTIuOSA4OC4zLTQ1LjIgNTYuOC01MS41IDE0LjgtNjguNC0xMjUuNCAyMy4zIDE1LjItMTguMi0xNzMuNC01My4zIDgxLjktMTAuNS0xNjYtMTIyLjlMMTMzLjUgMTA4IDMyLjIgMGwyNTIuOSAxMjYuNi0zMS41LTM4TDM3OCAxNjMgMjM0LjcgNjRsMTguNyAzOC40LTQ5LjYtMTguMUwxNTguMyAwbDE5NC42IDEyMkwzMTAgNjYuMmwxMDggOTYuNCAxMi04LjktMjEtMTYuNCA0LjItMzcuOEw0NTEgODkuMWwyOS4yIDI0LjcgMTEuNSA0LjItNyA2LjIgOC41IDEyLTEzLjEgNy40LTEwLjMgMjAuMiAxMC41IDIzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0dW1ibGV1cG9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgMTc3LjVjLTkuOCAwLTE3LjggOC0xNy44IDE3Ljh2MTA2LjljMCA0MC45LTMzLjkgNzMuOS03NC45IDczLjktNDEuNCAwLTc0LjktMzMuNS03NC45LTc0Ljl2LTQ2LjVoNTcuM3Y0NS44YzAgMTAgOCAxNy44IDE3LjggMTcuOHMxNy44LTcuOSAxNy44LTE3LjhWMjAwLjFjMC00MCAzNC4yLTcyLjEgNzQuNy03Mi4xIDQwLjcgMCA3NC43IDMyLjMgNzQuNyA3Mi42djIzLjdsLTM0LjEgMTAuMS0yMi45LTEwLjd2LTIwLjZjLjEtOS42LTcuOS0xNy42LTE3LjctMTcuNnptMTY3LjYgMTIzLjZjMCA0MS40LTMzLjUgNzQuOS03NC45IDc0LjktNDEuMiAwLTc0LjktMzMuMi03NC45LTc0LjJWMjYzbDIyLjkgMTAuNyAzNC4xLTEwLjF2NDcuMWMwIDkuOCA4IDE3LjYgMTcuOCAxNy42czE3LjgtNy45IDE3LjgtMTcuNnYtNDhoNTcuM2MtLjEgNDUuOS0uMSA0Ni40LS4xIDQ2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0dW1ibGV1cG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi45IDI2NnY2OS43YzAgNjIuMS01MC4zIDExMi40LTExMi40IDExMi40LTYxLjggMC0xMTIuNC00OS44LTExMi40LTExMS4zdi03MC4ybDM0LjMgMTYgNTEuMS0xNS4yVjMzOGMwIDE0LjcgMTIgMjYuNSAyNi43IDI2LjVTNDE3IDM1Mi43IDQxNyAzMzh2LTcyaDg1Ljl6bS0yMjQuNy01OC4ybDM0LjMgMTYgNTEuMS0xNS4yVjE3M2MwLTYwLjUtNTEuMS0xMDktMTEyLjEtMTA5LTYwLjggMC0xMTIuMSA0OC4yLTExMi4xIDEwOC4ydjE2Mi40YzAgMTQuOS0xMiAyNi43LTI2LjcgMjYuN1M4NiAzNDkuNSA4NiAzMzQuNlYyNjZIMHY2OS43QzAgMzk3LjcgNTAuMyA0NDggMTEyLjQgNDQ4YzYxLjYgMCAxMTIuNC00OS41IDExMi40LTExMC44VjE3Ni45YzAtMTQuNyAxMi0yNi43IDI2LjctMjYuN3MyNi43IDEyIDI2LjcgMjYuN3YzMC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdXBlcnBvd2VycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzJjLTgzLjMgMTEtMTY2LjggMjItMjUwIDMzLTkyIDEyLjUtMTYzLjMgODYuNy0xNjkgMTgwLTMuMyA1NS41IDE4IDEwOS41IDU3LjggMTQ4LjJMMCA0ODBjODMuMy0xMSAxNjYuNS0yMiAyNDkuOC0zMyA5MS44LTEyLjUgMTYzLjMtODYuOCAxNjguNy0xNzkuOCAzLjUtNTUuNS0xOC0xMDkuNS01Ny43LTE0OC4yTDQ0OCAzMnptLTc5LjcgMjMyLjNjLTQuMiA3OS41LTc0IDEzOS4yLTE1Mi44IDEzNC41LTc5LjUtNC43LTE0MC43LTcxLTEzNi4zLTE1MSA0LjUtNzkuMiA3NC4zLTEzOS4zIDE1My0xMzQuNSA3OS4zIDQuNyAxNDAuNSA3MSAxMzYuMSAxNTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cHBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjYyLjVjMCA2NC4xLTEwOSAxMTYuMS0yNDMuNSAxMTYuMS0yNC44IDAtNDguNi0xLjgtNzEuMS01IDcuNy40IDE1LjUuNiAyMy40LjYgMTM0LjUgMCAyNDMuNS01Ni45IDI0My41LTEyNy4xIDAtMjkuNC0xOS4xLTU2LjQtNTEuMi03OCA2MCAyMS4xIDk4LjkgNTUuMSA5OC45IDkzLjR6TTQ3LjcgMjI3LjljLS4xLTcwLjIgMTA4LjgtMTI3LjMgMjQzLjMtMTI3LjYgNy45IDAgMTUuNi4yIDIzLjMuNS0yMi41LTMuMi00Ni4zLTQuOS03MS00LjlDMTA4LjggOTYuMy0uMSAxNDguNSAwIDIxMi42Yy4xIDM4LjMgMzkuMSA3Mi4zIDk5LjMgOTMuMy0zMi4zLTIxLjUtNTEuNS00OC42LTUxLjYtNzh6bTYwLjIgMzkuOXMxMC41IDEzLjIgMjkuMyAxMy4yYzE3LjkgMCAyOC40LTExLjUgMjguNC0yNS4xIDAtMjgtNDAuMi0yNS4xLTQwLjItMzkuNyAwLTUuNCA1LjMtOS4xIDEyLjUtOS4xIDUuNyAwIDExLjMgMi42IDExLjMgNi42djMuOWgxNC4ydi03LjljMC0xMi4xLTE1LjQtMTYuOC0yNS40LTE2LjgtMTYuNSAwLTI4LjUgMTAuMi0yOC41IDI0LjEgMCAyNi42IDQwLjIgMjUuNCA0MC4yIDM5LjkgMCA2LjYtNS44IDEwLjEtMTIuMyAxMC4xLTExLjkgMC0yMC43LTEwLjEtMjAuNy0xMC4xbC04LjggMTAuOXptMTIwLjgtNzMuNnY1NC40YzAgMTEuMy03LjEgMTcuOC0xNy44IDE3LjgtMTAuNyAwLTE3LjgtNi41LTE3LjgtMTcuN3YtNTQuNWgtMTUuOHY1NWMwIDE4LjkgMTMuNCAzMS45IDMzLjcgMzEuOSAyMC4xIDAgMzMuNC0xMyAzMy40LTMxLjl2LTU1aC0xNS43em0zNC40IDg1LjRoMTUuOHYtMjkuNWgxNS41YzE2IDAgMjcuMi0xMS41IDI3LjItMjguMXMtMTEuMi0yNy44LTI3LjItMjcuOGgtMzkuMXYxMy40aDcuOHY3MnptMTUuOC00M3YtMjkuMWgxMi45YzguNyAwIDEzLjcgNS43IDEzLjcgMTQuNCAwIDguOS01LjEgMTQuNy0xNCAxNC43aC0xMi42em01NyA0M2gxNS44di0yOS41aDE1LjVjMTYgMCAyNy4yLTExLjUgMjcuMi0yOC4xcy0xMS4yLTI3LjgtMjcuMi0yNy44aC0zOS4xdjEzLjRoNy44djcyem0xNS43LTQzdi0yOS4xaDEyLjljOC43IDAgMTMuNyA1LjcgMTMuNyAxNC40IDAgOC45LTUgMTQuNy0xNCAxNC43aC0xMi42em01Ny4xIDM0LjhjMCA1LjggMi40IDguMiA4LjIgOC4yaDM3LjZjNS44IDAgOC4yLTIuNCA4LjItOC4ydi0xM2gtMTQuM3Y1LjJjMCAxLjctMSAyLjYtMi42IDIuNmgtMTguNmMtMS43IDAtMi42LTEtMi42LTIuNnYtNjEuMmMwLTUuNy0yLjQtOC4yLTguMi04LjJINDAxdjEzLjRoNS4yYzEuNyAwIDIuNiAxIDIuNiAyLjZ2NjEuMnptNjMuNCAwYzAgNS44IDIuNCA4LjIgOC4yIDguMkg1MTljNS43IDAgOC4yLTIuNCA4LjItOC4ydi0xM2gtMTQuM3Y1LjJjMCAxLjctMSAyLjYtMi42IDIuNmgtMTkuN2MtMS43IDAtMi42LTEtMi42LTIuNnYtMjAuM2gyNy43di0xMy40SDQ4OHYtMjIuNGgxOS4yYzEuNyAwIDIuNiAxIDIuNiAyLjZ2NS4ySDUyNHYtMTNjMC01LjctMi41LTguMi04LjItOC4yaC01MS42djEzLjRoNy44djYzLjl6bTU4LjktNzZ2NS45aDEuNnYtNS45aDIuN3YtMS4yaC03djEuMmgyLjd6bTUuNy0xLjJ2Ny4xaDEuNXYtNS43bDIuMyA1LjdoMS4zbDIuMy01Ljd2NS43aDEuNXYtNy4xaC0yLjNsLTIuMSA1LjEtMi4xLTUuMWgtMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS4wOCAxMDIuNjZzLS4zIDE4LjMtLjMgMjAuM2MtOS4xLTMtNzQuNC0yNC4xLTEzNS43LTI2LjMtNTEuOS0xLjgtMTIyLjgtNC4zLTIyMyA1Ny4zLTE5LjQgMTIuNC03My45IDQ2LjEtOTkuNiAxMDkuN0M3IDI3Ny0uMTIgMzA3IDcgMzM1LjA2YTExMSAxMTEgMCAwIDAgMTYuNSAzNS43YzE3LjQgMjUgNDYuNiA0MS42IDc4LjEgNDQuNCA0NC40IDMuOSA3OC4xLTE2IDkwLTUzLjMgOC4yLTI1LjggMC02My42LTMxLjUtODIuOS0yNS42LTE1LjctNTMuMy0xMi4xLTY5LjItMS42LTEzLjkgOS4yLTIxLjggMjMuNS0yMS42IDM5LjIuMyAyNy44IDI0LjMgNDIuNiA0MS41IDQyLjZhNDkgNDkgMCAwIDAgMTUuOC0yLjdjNi41LTEuOCAxMy4zLTYuNSAxMy4zLTE0LjkgMC0xMi4xLTExLjYtMTQuOC0xNi44LTEzLjktMi45LjUtNC41IDItMTEuOCAyLjQtMi0uMi0xMi0zLjEtMTItMTRWMzE2Yy4yLTEyLjMgMTMuMi0xOCAyNS41LTE2LjkgMzIuMyAyLjggNDcuNyA0MC43IDI4LjUgNjUuNy0xOC4zIDIzLjctNzYuNiAyMy4yLTk5LjctMjAuNC0yNi00OS4yIDEyLjctMTExLjIgODctOTguNCAzMy4yIDUuNyA4My42IDM1LjUgMTAyLjQgMTA0LjNoNDUuOWMtNS43LTE3LjYtOC45LTY4LjMgNDIuNy02OC4zIDU2LjcgMCA2My45IDM5LjkgNzkuOCA2OC4zSDQ2MGMtMTIuOC0xOC4zLTIxLjctMzguNy0xOC45LTU1LjggNS42LTMzLjggMzkuNy0xOC40IDgyLjQtMTcuNCA2Ni41LjQgMTAyLjEtMjcgMTAzLjEtMjggMy43LTMuMSA2LjUtMTUuOCA3LTE3LjcgMS4zLTUuMS0zLjItMi40LTMuMi0yLjQtOC43IDUuMi0zMC41IDE1LjItNTAuOSAxNS42LTI1LjMuNS03Ni4yLTI1LjQtODEuNi0yOC4yLS4zLS40LjEgMS4yLTExLTI1LjUgODguNCA1OC4zIDExOC4zIDQwLjUgMTQ1LjIgMjEuNy44LS42IDQuMy0yLjkgMy42LTUuNy0xMy44LTQ4LjEtMjIuNC02Mi43LTM0LjUtNjkuNi0zNy0yMS42LTEyNS0zNC43LTEyOS4yLTM1LjMuMS0uMS0uOS0uMy0uOS43em02MC40IDcyLjhhMzcuNTQgMzcuNTQgMCAwIDEgMzguOS0zNi4zYzMzLjQgMS4yIDQ4LjggNDIuMyAyNC40IDY1LjItMjQuMiAyMi43LTY0LjQgNC42LTYzLjMtMjguOXptMzguNi0yNS4zYTI2LjI3IDI2LjI3IDAgMSAwIDI1LjQgMjcuMiAyNi4xOSAyNi4xOSAwIDAgMC0yNS40LTI3LjJ6bTQuMyAyOC44Yy0xNS40IDAtMTUuNC0xNS42IDAtMTUuNnMxNS40IDE1LjY0IDAgMTUuNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN3aWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxNTYuMDljMC00LjUxLS4wOC05LS4yLTEzLjUyYTE5Ni4zMSAxOTYuMzEgMCAwIDAtMi41OC0yOS40MiA5OS42MiA5OS42MiAwIDAgMC05LjIyLTI4QTk0LjA4IDk0LjA4IDAgMCAwIDM5NC44NCA0NGE5OS4xNyA5OS4xNyAwIDAgMC0yOC05LjIyIDE5NSAxOTUgMCAwIDAtMjkuNDMtMi41OWMtNC41MS0uMTItOS0uMTctMTMuNTItLjJIMTI0LjE0Yy00LjUxIDAtOSAuMDgtMTMuNTIuMi0yLjQ1LjA3LTQuOTEuMTUtNy4zNy4yN2ExNzEuNjggMTcxLjY4IDAgMCAwLTIyLjA2IDIuMzIgMTAzLjA2IDEwMy4wNiAwIDAgMC0yMS4yMSA2LjFxLTMuNDYgMS40NS02LjgxIDMuMTJhOTQuNjYgOTQuNjYgMCAwIDAtMTguMzkgMTIuMzJjLTEuODggMS42MS0zLjY5IDMuMjgtNS40MyA1QTkzLjg2IDkzLjg2IDAgMCAwIDEyIDg1LjE3YTk5LjQ1IDk5LjQ1IDAgMCAwLTkuMjIgMjggMTk2LjMxIDE5Ni4zMSAwIDAgMC0yLjU0IDI5LjRjLS4xMyA0LjUxLS4xOCA5LS4yMSAxMy41MnYxOTkuODNjMCA0LjUxLjA4IDkgLjIxIDEzLjUxYTE5Ni4wOCAxOTYuMDggMCAwIDAgMi41OCAyOS40MiA5OS4zIDk5LjMgMCAwIDAgOS4yMiAyOEE5NC4zMSA5NC4zMSAwIDAgMCA1My4xNyA0NjhhOTkuNDcgOTkuNDcgMCAwIDAgMjggOS4yMSAxOTUgMTk1IDAgMCAwIDI5LjQzIDIuNTljNC41LjEyIDkgLjE3IDEzLjUyLjJIMzIzLjkxYzQuNTEgMCA5LS4wOCAxMy41Mi0uMmExOTYuNTkgMTk2LjU5IDAgMCAwIDI5LjQ0LTIuNTkgOTkuNTcgOTkuNTcgMCAwIDAgMjgtOS4yMUE5NC4yMiA5NC4yMiAwIDAgMCA0MzYgNDI2Ljg0YTk5LjMgOTkuMyAwIDAgMCA5LjIyLTI4IDE5NC43OSAxOTQuNzkgMCAwIDAgMi41OS0yOS40MmMuMTItNC41LjE3LTkgLjItMTMuNTFWMTcyLjE0Yy0uMDEtNS4zNS0uMDEtMTAuNy0uMDEtMTYuMDV6bS02OS44OCAyNDFjLTIwLTM4LjkzLTU3LjIzLTI5LjI3LTc2LjMxLTE5LjQ3LTEuNzIgMS0zLjQ4IDItNS4yNSAzbC0uNDIuMjVjLTM5LjUgMjEtOTIuNTMgMjIuNTQtMTQ1Ljg1LS4zOEEyMzQuNjQgMjM0LjY0IDAgMCAxIDQ1IDI5MC4xMmEyMzAuNjMgMjMwLjYzIDAgMCAwIDM5LjE3IDIzLjM3YzU2LjM2IDI2LjQgMTEzIDI0LjQ5IDE1MyAwLTU3LTQzLjg1LTEwNC42LTEwMS0xNDEuMDktMTQ3LjIyYTE5Ny4wOSAxOTcuMDkgMCAwIDEtMTguNzgtMjUuOWM0My43IDQwIDExMi43IDkwLjIyIDEzNy40OCAxMDQuMTItNTIuNTctNTUuNDktOTguODktMTIzLjk0LTk2LjcyLTEyMS43NCA4Mi43OSA4My40MiAxNTkuMTggMTMwLjU5IDE1OS4xOCAxMzAuNTkgMi44OCAxLjU4IDUgMi44NSA2LjczIDRhMTI3LjQ0IDEyNy40NCAwIDAgMCA0LjE2LTEyLjQ3YzEzLjIyLTQ4LjMzLTEuNjYtMTAzLjU4LTM1LjMxLTE0OS4yQzMyOS42MSAxNDEuNzUgMzc1IDIyOS4zNCAzNTYuNCAzMDMuNDJjLS40NCAxLjczLS45NSAzLjQtMS40NCA1LjA5IDM4LjUyIDQ3LjQgMjguMDQgOTguMTcgMjMuMTMgODguNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5bWZvbnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMTMzLjc0IDE0My41NGMtMTEuNDcuNDEtMTkuNC02LjQ1LTE5Ljc3LTE2Ljg3LS4yNy05LjE4IDYuNjgtMTMuNDQgNi41My0xOC44NS0uMjMtNi41NS0xMC4xNi02LjgyLTEyLjg3LTYuNjctMzkuNzggMS4yOS00OC41OSA1Ny01OC44OSAxMTMuODUgMjEuNDMgMy4xNSAzNi42NS0uNzIgNDUuMTQtNi4yMiAxMi03Ljc1LTMuMzQtMTUuNzItMS40Mi0yNC41NiA0LTE4LjE2IDMyLjU1LTE5IDMyIDUuMy0uMzYgMTcuODYtMjUuOTIgNDEuODEtNzcuNiAzNS43LTEwLjc2IDU5LjUyLTE4LjM1IDExNS01OC4yIDE2MS43Mi0yOSAzNC40Ni01OC40IDM5LjgyLTcxLjU4IDQwLjI2LTI0LjY1Ljg1LTQxLTEyLjMxLTQxLjU4LTI5Ljg0LS41Ni0xNyAxNC40NS0yNi4yNiAyNC4zMS0yNi41OSAyMS44OS0uNzUgMzAuMTIgMjUuNjcgMTQuODggMzQtMTIuMDkgOS43MS4xMSAxMi42MSAyLjA1IDEyLjU1IDEwLjQyLS4zNiAxNy4zNC01LjUxIDIyLjE4LTkgMjQtMjAgMzMuMjQtNTQuODYgNDUuMzUtMTE4LjM1IDguMTktNDkuNjYgMTctNzggMTguMjMtODItMTYuOTMtMTIuNzUtMjcuMDgtMjguNTUtNDkuODUtMzQuNzItMTUuNjEtNC4yMy0yNS4xMi0uNjMtMzEuODEgNy44My03LjkyIDEwLTUuMjkgMjMgMi4zNyAzMC43bDEyLjYzIDE0YzE1LjUxIDE3LjkzIDI0IDMxLjg3IDIwLjggNTAuNjItNS4wNiAyOS45My00MC43MiA1Mi45LTgyLjg4IDM5Ljk0LTM2LTExLjExLTQyLjctMzYuNTYtMzguMzgtNTAuNjIgNy41MS0yNC4xNSA0Mi4zNi0xMS43MiAzNC42MiAxMy42LTIuNzkgOC42LTQuOTIgOC42OC02LjI4IDEzLjA3LTQuNTYgMTQuNzcgNDEuODUgMjguNCA1MS0xLjM5IDQuNDctMTQuNTItNS4zLTIxLjcxLTIyLjI1LTM5Ljg1LTI4LjQ3LTMxLjc1LTE2LTY1LjQ5IDIuOTUtNzkuNjdDMjA0LjIzIDE0MC4xMyAyNTEuOTQgMTk3IDI2MiAyMDUuMjljMzcuMTctMTA5IDEwMC41My0xMDUuNDYgMTAyLjQzLTEwNS41MyAyNS4xNi0uODEgNDQuMTkgMTAuNTkgNDQuODMgMjguNjUuMjUgNy42OS00LjE3IDIyLjU5LTE5LjUyIDIzLjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWFtc3BlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ0LjIgMzQ2Ljc5YzIuNC0xMi4zLTEyLTMwLTMyLjQtNDguNy0yMC45LTE5LjItNDguMi0zOS4xLTYzLjQtNDYuNi0yMS43LTEyLTQxLjctMS44LTQ2LjMgMjIuNy01IDI2LjIgMCA1MS40IDE0LjUgNzMuOSAxMC4yIDE1LjUgMjUuNCAyMi43IDQzLjQgMjQgMTEuNi42IDUyLjUgMi4yIDYxLjctMSAxMS45LTQuMyAyMC4xLTExLjggMjIuNS0yNC4zem0yMDUgMjAuOGE1LjIyIDUuMjIgMCAwIDAtOC4zIDIuNGMtOCAyNS40LTQ0LjcgMTEyLjUtMTcyLjEgMTIxLjUtMTQ5LjcgMTAuNSA4MC4zIDQzLjYgMTQ1LjQtNi40IDIyLjctMTcuNCA0Ny42LTM1IDQ2LjYtODUuNC0uNC0xMC4xLTQuOS0yNi42OS0xMS42LTMyLjF6bTYyLTEyMi40Yy0uMy0xOC45LTguNi0zMy40LTI2LTQyLjItMi45LTEuMy01LTIuNy01LjktNi40QTIyMi42NCAyMjIuNjQgMCAwIDAgNDM4LjkgMTAzYy0xLjEtMS41LTMuNS0zLjItMi4yLTUgOC41LTExLjUtLjMtMTgtNy0yNC40UTMyMS40LTMxLjExIDE3Ny40IDEzLjA5Yy00MC4xIDEyLjMtNzMuOSAzNS42LTEwMiA2Ny40LTQgNC4zLTYuNyA5LjEtMyAxNC41IDMgNCAxLjMgNi4yLTEgOS4zQzUxLjYgMTMyIDM4LjIgMTYyLjU5IDMyLjEgMTk2Yy0uNyA0LjMtMi45IDYtNi40IDcuOC0xNC4yIDctMjIuNSAxOC41LTI0LjkgMzRMMCAyNjQuMjl2MjAuOWMwIDMwLjggMjEgNTAuNCA1MS44IDQ5IDcuNy0uMyAxMS43LTQuMyAxMi0xMS41IDItNzcuNS0yLjQtOTUuNCAzLjctMTI1LjhDOTIuMSA3Mi4zOSAyMzQuMyA1IDM0NS4zIDY1LjM5IDQxMS40IDEwMiA0NDUuNyAxNTkgNDQ3LjYgMjM0Ljc5Yy44IDI4LjIgMCA1Ni41IDAgODQuNiAwIDcgMi4yIDEyLjUgOS40IDE0LjIgMjQuMSA1IDQ5LjItMTIgNTMuMi0zNi43IDIuOS0xNy4xIDEtMzQuNSAxLTUxLjd6bS0xNTkuNiAxMzEuNWMzNi41IDIuOCA1OS4zLTI4LjUgNTguNC02MC41LTIuMS00NS4yLTY2LjItMTYuNS04Ny44LTgtNzMuMiAyOC4xLTQ1IDU0LjktMjIuMiA2MC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWxlZ3JhbVBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni43IDk4LjZsLTY3LjYgMzE4LjhjLTUuMSAyMi41LTE4LjQgMjguMS0zNy4zIDE3LjVsLTEwMy03NS45LTQ5LjcgNDcuOGMtNS41IDUuNS0xMC4xIDEwLjEtMjAuNyAxMC4xbDcuNC0xMDQuOSAxOTAuOS0xNzIuNWM4LjMtNy40LTEuOC0xMS41LTEyLjktNC4xTDExNy44IDI4NCAxNi4yIDI1Mi4yYy0yMi4xLTYuOS0yMi41LTIyLjEgNC42LTMyLjdMNDE4LjIgNjYuNGMxOC40LTYuOSAzNC41IDQuMSAyOC41IDMyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbGVncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTEyMS44IDE2OS45bC00MC43IDE5MS44Yy0zIDEzLjYtMTEuMSAxNi45LTIyLjQgMTAuNWwtNjItNDUuNy0yOS45IDI4LjhjLTMuMyAzLjMtNi4xIDYuMS0xMi41IDYuMWw0LjQtNjMuMSAxMTQuOS0xMDMuOGM1LTQuNC0xLjEtNi45LTcuNy0yLjVsLTE0MiA4OS40LTYxLjItMTkuMWMtMTMuMy00LjItMTMuNi0xMy4zIDIuOC0xOS43bDIzOS4xLTkyLjJjMTEuMS00IDIwLjggMi43IDE3LjIgMTkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVuY2VudFdlaWJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcyLjMgNDk1LjhjMS40IDE5LjktMjcuNiAyMi4yLTI5LjcgMi45QzMxIDM2OC44IDczLjcgMjU5LjIgMTQ0IDE4NS41Yy0xNS42LTM0IDkuMi03Ny4xIDUwLjYtNzcuMSAzMC4zIDAgNTUuMSAyNC42IDU1LjEgNTUuMSAwIDQ0LTQ5LjUgNzAuOC04Ni45IDQ1LjEtNjUuNyA3MS4zLTEwMS40IDE2OS44LTkwLjUgMjg3LjJ6TTE5MiAuMUM2Ni4xLjEtMTIuMyAxMzQuMyA0My43IDI0Mi40IDUyLjQgMjU5LjggNzkgMjQ2LjkgNzAgMjI5IDIzLjcgMTM2LjQgOTEgMjkuOCAxOTIgMjkuOGM3NS40IDAgMTM2LjkgNjEuNCAxMzYuOSAxMzYuOSAwIDkwLjgtODYuOSAxNTMuOS0xNjcuNyAxMzMuMS0xOS4xLTQuMS0yNS42IDI0LjQtNi42IDI5LjEgMTEwLjcgMjMuMiAyMDQtNjAgMjA0LTE2Mi4zQzM1OC42IDc0LjcgMjg0IC4xIDE5MiAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlUmVkWWV0aSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguMjMgMjQxLjdsMjAuNyA3LjFjLTkuNi0yMy45LTIzLjktMzctMzEuNy00NC44bDcuMS0xOC4yYy4yIDAgMTIuMy0yNy44LTIuNS0zMC43LS42LTExLjMtNi42LTI3LTE4LjQtMjctNy42LTEwLjYtMTcuNy0xMi4zLTMwLjctNS45YTEyMi4yIDEyMi4yIDAgMCAwLTI1LjMgMTYuNWMtNS4zLTYuNC0zIC40LTMtMjkuOC0zNy4xLTI0LjMtNDUuNC0xMS43LTc0LjggM2wuNS41YTIzOS4zNiAyMzkuMzYgMCAwIDAtNjguNC0xMy4zYy01LjUtOC43LTE4LjYtMTkuMS0yNS4xLTI1LjFsMjQuOCA3LjFjLTUuNS01LjUtMjYuOC0xMi45LTM0LjItMTUuMiAxOC4yLTQuMSAyOS44LTIwLjggNDIuNS0zMy0zNC45LTEwLjEtNjcuOS01LjktOTcuOSAxMS44bDEyLTQ0LjJMMTgyIDBjLTMxLjYgMjQuMi0zMyA0MS45LTMzLjcgNDUuNS0uOS0yLjQtNi4zLTE5LjYtMTUuMi0yN2EzNS4xMiAzNS4xMiAwIDAgMC0uNSAyNS4zYzMgOC40IDUuOSAxNC44IDguNCAxOC45LTE2LTMuMy0yOC4zLTQuOS00OS4yIDBoLTMuN2wzMyAxNC4zYTE5NC4yNiAxOTQuMjYgMCAwIDAtNDYuNyA2Ny40bC0xLjcgOC40IDEuNyAxLjcgNy42LTQuN2MtMy4zIDExLjYtNS4zIDE5LjQtNi42IDI1LjhhMjAwLjE4IDIwMC4xOCAwIDAgMC0yNy44IDQwLjNjLTE1IDEtMzEuOCAxMC44LTQwLjMgMTQuM2wzIDMuNCAyOC44IDFjLS41IDEtLjcgMi4yLTEuMiAzLjItNy4zIDYuNC0zOS44IDM3LjctMzMgODAuN2wyMC4yLTIyLjRjLjUgMS43LjcgMy40IDEuMiA1LjIgMCAyNS41LjQgODkuNiA2NC45IDE1MC41IDQzLjYgNDAgOTYgNjAuMiAxNTcuNSA2MC4yIDEyMS43IDAgMjIzLTg3LjMgMjIzLTIxMS41IDYuOC05LjctMS4yIDMgMTYuNy0yNS4xbDEzIDE0LjMgMi41LS41QTE4MS44NCAxODEuODQgMCAwIDAgNDk1IDI1NWE0NC43NCA0NC43NCAwIDAgMC02LjgtMTMuM3pNMzk4IDExMS4ybC0uNSAyMS45YzUuNSAxOC4xIDE2LjkgMTcuMiAyMi40IDE3LjJsLTMuNC00LjcgMjIuNC01LjRhMjQyLjQ0IDI0Mi40NCAwIDAgMS0yNyAwYzEyLjgtMi4xIDMzLjMtMjkgNDMtMTEuMyAzLjQgNy42IDYuNCAxNy4yIDkuMyAyNy44bDEuNy01LjlhNTYuMzggNTYuMzggMCAwIDEtMS43LTE1LjJjNS40LjUgOC44IDMuNCA5LjMgMTAuMS41IDYuNCAxLjcgMTQuOCAzLjQgMjUuM2w0LjctMTEuM2M0LjYgMCA0LjUtMy42LTIuNSAyMC43LTIwLjktOC43LTM1LjEtOC40LTQ2LjUtOC40bDE4LjItMTZjLTI1LjMgOC4yLTMzIDEwLjgtNTQuOCAyMC45LTEuMS01LjQtNS0xMy41LTE2LTE5LjktMy4yIDMuOC0yLjguOS0uNyAxNC44aC0yLjVhNjIuMzIgNjIuMzIgMCAwIDAtOC40LTIzLjFsNC4yLTMuNGM4LjQtNy4xIDExLjgtMTQuMyAxMC42LTIxLjktLjUtNi40LTUuNC0xMy41LTEzLjUtMjAuNyA1LjYtMy40IDE1LjItLjQgMjguMyA4LjV6bS0zOS42LTEwLjFjMi43IDEuOSAxMS40IDUuNCAxOC45IDE3LjIgNC4yIDguNCA0IDkuOCAzLjQgMTEuMS0uNSAyLjQtLjUgNC4zLTMgNy4xLTEuNyAyLjUtNS40IDQuNy0xMS44IDcuNi03LjYtMTMtMTYuNS0yMy42LTI3LjgtMzEuMnpNOTEgMTQzLjFsMS4yLTEuN2MxLjItMi45IDQuMi03LjYgOS4zLTE1LjJsMi41LTMuNC0xMyAxMi4zIDUuNC00LjctMTAuMSA5LjMtNC4yIDEuMmMxMi4zLTI0LjEgMjMuMS00MS4zIDMyLjUtNTAuMiA5LjMtOS4zIDE2LTE2IDIwLjItMTkuNGwtNi40IDEuMmMtMTEuMy00LjItMTkuNC03LjEtMjQuOC04LjQgMi41LS41IDMuNy0uNSAzLjItLjUgMTAuMyAwIDE3LjUuNSAyMC45IDEuMmE1Mi4zNSA1Mi4zNSAwIDAgMCAxNiAyLjVsLjUtMS43LTguNC0zNS44IDEzLjUgMjlhNDIuODkgNDIuODkgMCAwIDAgNS45LTE0LjNjMS43LTYuNCA1LjQtMTMgMTAuMS0xOS40czcuNi0xMC42IDkuMy0xMS4zYTIzNC42OCAyMzQuNjggMCAwIDAtNi40IDI1LjNsLTEuNyA3LjEtLjUgNC43IDIuNSAyLjVDMTkwLjQgMzkuOSAyMTQgMzQgMjM5LjggMzQuNWwyMS4xLjVjLTExLjggMTMuNS0yNy44IDIxLjktNDguNSAyNC44YTIwMS4yNiAyMDEuMjYgMCAwIDEtMjMuNCAyLjlsLS4yLS41LTIuNS0xLjJhMjAuNzUgMjAuNzUgMCAwIDAtMTQgMmMtMi41LS4yLTQuOS0uNS03LjEtLjdsLTIuNSAxLjcuNSAxLjJjMiAuMiAzLjkuNSA2LjIuN2wtMiAzLjQgMy40LS41LTEwLjYgMTEuM2MtNC4yIDMtNS40IDYuNC00LjIgOS4zbDUuNC0zLjRoMS4yYTM5LjQgMzkuNCAwIDAgMSAyNS4zLTE1LjJ2LTNjNi40LjUgMTMgMSAxOS40IDEuMiA2LjQgMCA4LjQuNSA1LjQgMS4yYTE4OS42IDE4OS42IDAgMCAxIDIwLjcgMTMuNWMxMy41IDEwLjEgMjMuNiAyMS45IDMwIDM1LjQgOC44IDE4LjIgMTMuNSAzNy4xIDEzLjUgNTYuNmExNDEuMTMgMTQxLjEzIDAgMCAxLTMgMjguMyAyMDkuOTEgMjA5LjkxIDAgMCAxLTE2IDQ2bDIuNS41YzE4LjItMTkuNyA0MS45LTE2IDQ5LjItMTZsLTYuNCA1LjkgMjIuNCAxNy43LTEuNyAzMC43Yy01LjQtMTIuMy0xNi41LTIxLjEtMzMtMjcuOCAxNi41IDE0LjggMjMuNiAyMS4xIDIxLjkgMjAuMi00LjgtMi44LTMuNS0xLjktMTAuOC0zLjcgNC4xIDQuMSAxNy41IDE4LjggMTguMiAyMC43bC4yLjItLjIuMmMwIDEuOCAxLjYtMS4yLTE0IDIyLjktNzUuMi0xNS4zLTEwNi4yNy00Mi43LTE0MS4yLTYzLjJsMTEuOCAxLjJjLTExLjgtMTguNS0xNS42LTE3LjctMzguNC0yNi4xTDE0OSAyMjVjLTguOC0zLTE4LjItMy0yOC4zLjVsNy42LTEwLjYtMS4yLTEuN2MtMTQuOSA0LjMtMTkuOCA5LjItMjIuNiAxMS4zLTEuMS01LjUtMi44LTEyLjQtMTIuMy0yOC44bC0xLjIgMjctMTMuMi01YzEuNS0yNS4yIDUuNC01MC41IDEzLjItNzQuNnptMjc2LjUgMzMwYy00OS45IDI1LTU2LjEgMjIuNC01OSAyMy45LTI5LjgtMTEuOC01MC45LTMxLjctNjMuNS01OC44bDMwIDE2LjVjLTkuOC05LjMtMTguMy0xNi41LTM4LjQtNDQuM2wxMS44IDIzLjEtMTcuNy03LjZjMTQuMiAyMS4xIDIzLjUgNTEuNyA2Ni42IDczLjUtMTIwLjggMjQuMi0xOTktNzIuMS0yMDAuOS03NC4zYTI2Mi41NyAyNjIuNTcgMCAwIDAgMzUuNCAyNC44YzMuNCAxLjcgNy4xIDIuNSAxMC4xIDEuMmwtMTYtMjAuN2M5LjIgNC4yIDkuNSA0LjUgNjkuMSAyOS00Mi41LTIwLjctNzMuOC00MC44LTkzLjItNjAuMi0uNSA2LjQtMS4yIDEwLjEtMS4yIDEwLjFhODAuMjUgODAuMjUgMCAwIDEgMjAuNyAyNi42Yy0zOS0xOC45LTU3LjYtNDcuNi03MS4zLTgyLjYgNDkuOSA1NS4xIDExOC45IDM3LjUgMTIwLjUgMzcuMSAzNC44IDE2LjQgNjkuOSAyMy42IDExMy45IDEwLjYgMy4zIDAgMjAuMyAxNyAyNS4zIDM5LjFsNC4yLTMtMi41LTIzLjZjOSA5IDI0LjkgMjIuNiAzNC40IDEzLTE1LjYtNS4zLTIzLjUtOS41LTI5LjUtMzEuNyA0LjYgNC4yIDcuNiA5IDI3LjggMTVsMS4yLTEuMi0xMC41LTE0LjJjMTEuNy00LjgtMy41IDEgMzItMTAuOCA0LjMgMzQuMyA5IDQ5LjIuNyA4OS41em0xMTUuMy0yMTQuNGwtMi41LjUgMyA5LjNjLTMuNSA1LjktMjMuNyA0NC4zLTcxLjYgNzkuNy0zOS41IDI5LjgtNzYuNiAzOS4xLTgwLjkgNDAuM2wtNy42LTcuMS0xLjIgMyAxNC4zIDE2LTcuMS00LjcgMy40IDQuMmgtMS4ybC0yMS45LTEzLjUgOS4zIDI2LjYtMTktMjcuOS0xLjIgMi41IDcuNiAyOWMtNi4xLTguMi0yMS0zMi42LTU2LjgtMzkuNmwzMi41IDIxLjJhMjE0LjgyIDIxNC44MiAwIDAgMS05My4yLTYuNGMtNC4yLTEuMi04LjktMi41LTEzLjUtNC4ybDEuMi0zLTQ0LjgtMjIuNCAyNi4xIDIyLjRjLTU3LjcgOS4xLTExMy0yNS40LTEyNi40LTgzLjRsLTIuNS0xNi40LTIyLjI3IDIyLjNjMTkuNS01Ny41IDI1LjYtNTcuOSA1MS40LTcwLjEtOS4xLTUuMy0xLjYtMy4zLTM4LjQtOS4zIDE1LjgtNS44IDMzLTE1LjQgNzMgNS4yYTE4LjUgMTguNSAwIDAgMSAzLjctMS43Yy42LTMuMi40LS44IDEtMTEuOCAzLjkgMTAgMy42IDguNyAzIDkuM2wxLjcuNWMxMi43LTYuNSA4LjktNC41IDE3LTguOWwtNS40IDEzLjUgMjIuMy01LjgtOC40IDguNCAyLjUgMi41YzQuNS0xLjggMzAuMyAzLjQgNDAuOCAxNmwtMjMuNi0yLjVjMzkuNCAyMyA1MS41IDU0IDU1LjggNjkuNmwxLjctMS4yYy0yLjgtMjIuMy0xMi40LTMzLjktMTYtNDAuMSA0LjIgNSAzOS4yIDM0LjYgMTEwLjQgNDYtMTEuMy0uNS0yMy4xIDUuNC0zNC45IDE4LjlsNDYuNy0yMC4yLTkuMyAyMS45YzcuNi0xMC4xIDE0LjgtMjMuNiAyMS4yLTM5LjZ2LS41bDEuMi0zLTEuMiAxNmMxMy41LTQxLjggMjUuMy03OC41IDM1LjQtMTA5LjdsMTMuNS0yNy44di0ybC01LjQtNC4yaDEwLjFsNS45IDQuMiAyLjUtMS4yLTMuNC0xNiAxMi4zIDE4LjkgNDEuOC0yMC4yLTE0LjggMTMgLjUgMi45IDE3LjctLjVhMTg0IDE4NCAwIDAgMSAzMyA0LjJsLTIzLjYgMi41LTEuMiAzIDI2LjYgMjMuMWEyNTQuMjEgMjU0LjIxIDAgMCAxIDI3IDMyYy0xMS4yLTMuMy0xMC4zLTMuNC0yMS4yLTMuNGwxMi4zIDMyLjV6bS02LjEtNzEuM2wtMy45IDEzLTE0LjMtMTEuOHptLTI1NC44IDcuMWMxLjcgMTAuNiA0LjcgMTcuNyA4LjggMjEuOS05LjMgNi42LTI3LjUgMTMuOS00Ni41IDE2bC41IDEuMmE1MC4yMiA1MC4yMiAwIDAgMCAyNC44LTIuNWwtNy4xIDEzYzQuMi0xLjcgMTAuMS03LjEgMTcuNy0xNC44IDExLjktNS41IDEyLjctNS4xIDIwLjItMTYtMTIuNy02LjQtMTUuNy0xMy43LTE4LjQtMTguOHptMy43LTEwMi4zYy02LjQtMy40LTEwLjYgMy0xMi4zIDE4LjlzMi41IDI5LjUgMTEuOCAzOS42IDE4LjIgMTAuNiAyNi4xIDMgMy40LTIzLjYtMTEuMy00Ny43YTM5LjU3IDM5LjU3IDAgMCAwLTE0LjI3LTEzLjh6bS00LjcgNDYuM2M1LjQgMi4yIDEwLjUgMS45IDEyLjMtMTAuNnYtNC43bC0xLjIuNWMtNC4zLTMuMS0yLjUtNC41LTEuNy02LjJsLjUtLjVjLS45LTEuMi01LTguMS0xMi41IDQuNy0uNS0xMy41LjUtMjEuOSAzLTI0LjggMS4yLTIuNSA0LjctMS4yIDExLjMgNC4yIDYuNCA1LjQgMTEuMyAxNiAxNS4yIDMyLjUgNi41IDI4LTE5LjggMjYuMi0yNi45IDQuOXptLTQ1LTUuNWMxLjYuMyA5LjMtMS4xIDkuMy0xNC44aC0uNWMtNS40LTEuMS0yLjItNS41LS43LTUuOS0xLjctMy0zLjQtNC4yLTUuNC00LjctOC4xIDAtMTEuNiAxMi43LTguMSAyMS4yYTcuNTEgNy41MSAwIDAgMCA1LjQzIDQuMnpNMjE2IDgyLjlsLTIuNS41LjUgM2E0OC45NCA0OC45NCAwIDAgMSAyNi4xIDUuOWMtMi41LTUuNS0xMC0xNC4zLTI4LjMtMTQuM2wuNSAyLjV6bS03MS44IDQ5LjRjMjEuNyAxNi44IDE2LjUgMjEuNCA0Ni41IDIzLjZsLTIuOS00LjdhNDIuNjcgNDIuNjcgMCAwIDAgMTQuOC0yOC4zYzEuNy0xNi0xLjItMjkuNS04LjgtNDEuM2wxMy03LjZhMi4yNiAyLjI2IDAgMCAwLS41LTEuNyAxNC4yMSAxNC4yMSAwIDAgMC0xMy41IDEuN2MtMTIuNyA2LjctMjggMjAuOS0yOSAyMi40LTEuNyAxLjctMy40IDUuOS01LjQgMTMuNWE5OS42MSA5OS42MSAwIDAgMC0yLjkgMjMuNmMtNC43LTgtMTAuNS02LjQtMTkuOS01LjlsNy4xIDcuNmMtMTYuNSAwLTIzLjMgMTUuNC0yMy42IDE2IDYuOCAwIDQuNi03LjYgMzAtMTIuMy00LjMtNi4zLTMuMy01LTQuOS02LjZ6bTE4LjctMTguN2MxLjItNy42IDMuNC0xMyA2LjQtMTcuMiA1LjQtNi40IDEwLjYtMTAuMSAxNi0xMS44IDQuMi0xLjcgNy4xIDEuMiAxMC4xIDkuM2E3Mi4xNCA3Mi4xNCAwIDAgMSAzIDI1LjNjLS41IDkuMy0zLjQgMTcuMi04LjQgMjMuMS0yLjkgMy40LTUuNCA1LjktNi40IDcuNmEzOS4yMSAzOS4yMSAwIDAgMS0xMS4zLS41bC03LjEtMy40LTUuNC02LjRjLjgtMTAgMS4zLTE4LjggMy4xLTI2em00MiA1Ni4xYy0zNC44IDE0LjQtMzQuNyAxNC0zNi4xIDE0LjMtMjAuOCA0LjctMTktMjQuNC0xOC45LTI0LjhsNS45LTEuMi0uNS0yLjVjLTIwLjItMi42LTMxIDQuMi0zMi41IDQuOS41LjUgMyAzLjQgNS45IDkuMyA0LjItNi40IDguOC0xMC4xIDE1LjItMTAuNmE4My40NyA4My40NyAwIDAgMCAxLjcgMzMuN2MuMS41IDIuNiAxNy40IDI3LjUgMjQuMSAxMS4zIDMgMjcgMS4yIDQ4LjktNS40bC05LjIuNWMtNC4yLTE0LjgtNi40LTI0LjgtNS45LTI5LjUgMTEuMy04LjggMjEuOS0xMS4zIDMwLjctNy42aDIuNWwtMTEuOC03LjYtNy4xLjVjLTUuOSAxLjItMTIuMyA0LjItMTkuNCA4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZW1lY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAyLjkgOC40M2M5LjktNS43MyAyNi01LjgyIDM1Ljk1LS4yMUw0MzAgMTE1Ljg1YzEwIDUuNiAxOCAxOS40NCAxOCAzMC44NlYzNjRjMCAxMS40NC04LjA2IDI1LjI5LTE4IDMxTDIzOC44MSA1MDMuNzRjLTkuOTMgNS42Ni0yNiA1LjU3LTM1Ljg1LS4yMUwxNy44NiAzOTUuMTJDOCAzODkuMzQgMCAzNzUuMzggMCAzNjRWMTQ2LjcxYzAtMTEuNDQgOC0yNS4zNiAxNy45MS0zMS4wOHptLTc3LjQgMTk5LjgzYy0xNS45NCAwLTMxLjg5LjE0LTQ3LjgzLjE0djEwMS40NUg5Ni44VjI4MGgyOC43YzQ5LjcxIDAgNDkuNTYtNzEuNzQgMC03MS43NHptMTQwLjE0IDEwMC4yOWwtMzAuNzMtMzQuNjRjMzctNy41MSAzNC44LTY1LjIzLTEwLjg3LTY1LjUxLTE2LjA5IDAtMzIuMTctLjE0LTQ4LjI2LS4xNHYxMDEuNTloMTkuMTN2LTMzLjkxaDE4LjQxbDI5LjU2IDMzLjkxaDIyLjc2em0tNDEuNTktODIuMzJjMjMuMzQgMCAyMy4yNiAzMi40NiAwIDMyLjQ2aC0yOS4xM3YtMzIuNDZ6bS05NS41Ni0xLjZjMjEuMTggMCAyMS4xMSAzOC44NSAwIDM4Ljg1SDk2LjE4di0zOC44NHptMTkyLjY1LTE4LjI1Yy02OC40NiAwLTcxIDEwNS44IDAgMTA1LjggNjkuNDgtLjAxIDY5LjQxLTEwNS44IDAtMTA1Ljh6bTAgMTcuMzljNDQuMTIgMCA0NC44IDcwLjg2IDAgNzAuODZzLTQ0LjQzLTcwLjg2IDAtNzAuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZW1laXNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggODguMjg2YzAtMTAgNi4yODYtMjEuNzE0IDE3LjcxNS0yMS43MTQgMTEuMTQyIDAgMTcuNzE0IDExLjcxNCAxNy43MTQgMjEuNzE0IDAgMTAuMjg1LTYuNTcyIDIxLjcxNC0xNy43MTQgMjEuNzE0QzIxNC4yODYgMTEwIDIwOCA5OC41NzEgMjA4IDg4LjI4NnptMzA0IDE2MGMwIDM2LjAwMS0xMS40MjkgMTAyLjI4Ni0zNi4yODYgMTI5LjcxNC0yMi44NTggMjQuODU4LTg3LjQyOCA2MS4xNDMtMTIwLjg1NyA3MC41NzJsLTEuMTQzLjI4NnYzMi41NzFjMCAxNi4yODYtMTIuNTcyIDMwLjU3MS0yOS4xNDMgMzAuNTcxLTEwIDAtMTkuNDI5LTUuNzE0LTI0LjU3Mi0xNC4yODYtNS40MjcgOC41NzItMTQuODU2IDE0LjI4Ni0yNC44NTYgMTQuMjg2LTEwIDAtMTkuNDI5LTUuNzE0LTI0Ljg1OC0xNC4yODYtNS4xNDIgOC41NzItMTQuNTcxIDE0LjI4Ni0yNC41NyAxNC4yODYtMTAuMjg2IDAtMTkuNDI5LTUuNzE0LTI0Ljg1OC0xNC4yODYtNS4xNDMgOC41NzItMTQuNTcxIDE0LjI4Ni0yNC41NzEgMTQuMjg2LTE4Ljg1NyAwLTI5LjQyOS0xNS43MTQtMjkuNDI5LTMyLjg1Ny0xNi4yODYgMTIuMjg1LTM1LjcxNSAxOS40MjgtNTYuNTcxIDE5LjQyOC0yMiAwLTQzLjQyOS04LjI4NS02MC4yODYtMjIuODU3IDEwLjI4NS0uMjg2IDIwLjU3MS0yLjI4NiAzMC4yODUtNS43MTQtMjAuODU3LTUuNzE0LTM5LjQyOC0xOC44NTctNTItMzYuMjg2IDIxLjM3IDQuNjQ1IDQ2LjIwOSAxLjY3MyA2Ny4xNDMtMTEuMTQzLTIyLTIyLTU2LjU3MS01OC44NTctNjguNTcyLTg3LjQyOEMxLjE0MyAzMjEuNzE0IDAgMzAzLjcxNCAwIDI4OS40MjljMC00OS43MTQgMjAuMjg2LTE2MCA4Ni4yODYtMTYwIDEwLjU3MSAwIDE4Ljg1NyA0Ljg1OCAyMy4xNDMgMTQuODU3YTE1OC43OTIgMTU4Ljc5MiAwIDAgMSAxMi0xNS40MjhjMi0yLjU3MiA1LjcxNC01LjQyOSA3LjE0My04LjI4NiA3Ljk5OS0xMi41NzEgMTEuNzE0LTIxLjE0MiAyMS43MTQtMzRDMTgyLjU3MSA0NS40MjggMjMyIDE3LjE0MyAyODUuMTQzIDE3LjE0M2M2IDAgMTIgLjI4NSAxNy43MTQgMS4xNDNDMzEzLjcxNCA2LjU3MSAzMjguODU3IDAgMzQ0LjU3MiAwYzE0LjU3MSAwIDI5LjcxNCA2IDQwIDE2LjI4Ni44NTcuODU4IDEuNDI4IDIuMjg2IDEuNDI4IDMuNDI4IDAgMy43MTQtMTAuMjg1IDEzLjQyOS0xMi44NTcgMTYuMjg2IDQuMjg2IDEuNDI5IDE1LjcxNCA2Ljg1OCAxNS43MTQgMTIgMCAyLjg1Ny0yLjg1NyA1LjE0My00LjU3MSA3LjE0MyAzMS40MjkgMjcuNzE0IDQ5LjQyOSA2Ny4xNDMgNTYuMjg2IDEwOCA0LjI4Ni01LjE0MyAxMC4yODUtOC41NzIgMTcuMTQzLTguNTcyIDEwLjU3MSAwIDIwLjg1NyA3LjE0NCAyOC41NzEgMTQuMDAxQzUwNy4xNDMgMTg3LjE0MyA1MTIgMjIxLjcxNCA1MTIgMjQ4LjI4NnpNMTg4IDg5LjQyOGMwIDE4LjI4NiAxMi41NzEgMzcuMTQzIDMyLjI4NiAzNy4xNDMgMTkuNzE0IDAgMzIuMjg1LTE4Ljg1NyAzMi4yODUtMzcuMTQzIDAtMTgtMTIuNTcxLTM2Ljg1Ny0zMi4yODUtMzYuODU3LTE5LjcxNSAwLTMyLjI4NiAxOC44NTgtMzIuMjg2IDM2Ljg1N3pNMjM3LjcxNCAxOTRjMC0xOS43MTQgMy43MTQtMzkuMTQzIDguNTcxLTU4LjI4Ni01Mi4wMzkgNzkuNTM0LTEzLjUzMSAxODQuNTcxIDY4Ljg1OCAxODQuNTcxIDIxLjQyOCAwIDQyLjU3MS03LjcxNCA2MC0yMCAyLTcuNDI5IDMuNzE0LTE0Ljg1NyAzLjcxNC0yMi41NzIgMC0xNC4yODYtNi4yODYtMjEuNDI4LTIwLjU3Mi0yMS40MjgtNC41NzEgMC05LjE0My44NTctMTMuNDI5IDEuNzE0LTYzLjM0MyAxMi42NjgtMTA3LjE0MiAzLjY2OS0xMDcuMTQyLTYzLjk5OXptLTQxLjE0MiAyNTQuODU4YzAtMTEuMTQzLTguODU4LTIwLjg1Ny0yMC4yODYtMjAuODU3LTExLjQyOSAwLTIwIDkuNzE1LTIwIDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC41NzEgMjEuMTQyIDIwIDIxLjE0MiAxMS40MjggMCAyMC4yODYtOS43MTUgMjAuMjg2LTIxLjE0MnYtMzIuNTcxem00OS4xNDMgMGMwLTExLjE0My04LjU3Mi0yMC44NTctMjAtMjAuODU3LTExLjQyOSAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1NyAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjggMCAyMC0xMCAyMC0yMS4xNDJ2LTMyLjU3MXptNDkuNzEzIDBjMC0xMS4xNDMtOC44NTctMjAuODU3LTIwLjI4NS0yMC44NTctMTEuNDI5IDAtMjAuMjg2IDkuNzE1LTIwLjI4NiAyMC44NTd2MzIuNTcxYzAgMTEuMTQzIDguODU3IDIxLjE0MiAyMC4yODYgMjEuMTQyIDExLjQyOCAwIDIwLjI4NS05LjcxNSAyMC4yODUtMjEuMTQydi0zMi41NzF6bTQ5LjcxNSAwYzAtMTEuMTQzLTguODU3LTIwLjg1Ny0yMC4yODYtMjAuODU3LTExLjQyOCAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1OCAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjkgMCAyMC4yODYtMTAgMjAuMjg2LTIxLjE0MnYtMzIuNTcxek00MjEuNzE0IDI4NmMtMzAuODU3IDU5LjE0Mi05MC4yODUgMTAyLjU3Mi0xNTguNTcxIDEwMi41NzItOTYuNTcxIDAtMTYwLjU3MS04NC41NzItMTYwLjU3MS0xNzYuNTcyIDAtMTYuODU3IDItMzMuNDI5IDYtNDkuNzE0LTIwIDMzLjcxNS0yOS43MTQgNzIuNTcyLTI5LjcxNCAxMTEuNDI5IDAgNjAuMjg2IDI0Ljg1NyAxMjEuNzE1IDcxLjQyOSAxNjAuODU3IDUuMTQzLTkuNzE0IDE0Ljg1Ny0xNi4yODYgMjYtMTYuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0LjU3MSAxNC4yODYgNS40MjktOC41NzEgMTQuNTcxLTE0LjI4NiAyNC44NTgtMTQuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0LjU3MSAxNC4yODYgNS40MjktOC41NzEgMTQuODU3LTE0LjI4NiAyNC44NTgtMTQuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0Ljg1NyAxNC4yODYgNS4xNDMtOC41NzEgMTQuNTcxLTE0LjI4NiAyNC41NzItMTQuMjg2IDEwLjg1NyAwIDIwLjg1NyA2LjU3MiAyNS43MTQgMTYgNDMuNDI3LTM2LjI4NiA2OC41NjktOTIgNzEuNDI2LTE0OC4yODZ6bTEwLjU3Mi05OS43MTRjMC01My43MTQtMzQuNTcxLTEwNS43MTQtOTIuNTcyLTEwNS43MTQtMzAuMjg1IDAtNTguNTcxIDE1LjE0My03OC44NTcgMzYuODU3QzI0MC44NjIgMTgzLjgxMiAyMzMuNDEgMjU0IDMwMi4yODYgMjU0YzI4LjgwNSAwIDk3LjM1Ny0yOC41MzggODQuMjg2IDM2Ljg1NyAyOC44NTctMjYgNDUuNzE0LTY1LjcxNCA0NS43MTQtMTA0LjU3MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhpbmtQZWFrcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjUuNCA0MDkuNGw4Ny4xLTE1MC4yLTMyLS4zLTU1LjEgOTVMMjU5LjIgMCAyMyA0MDcuNGwzMiAuM0wyNTkuMiA1NS42em0tMzU1LjMtNDQuMWgzMi4xbDExNy40LTIwMi41TDQ2MyA1MTEuOWwzMi41LjEtMjM1LjgtNDA0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpa3RvayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDgsMjA5LjkxYTIxMC4wNiwyMTAuMDYsMCwwLDEtMTIyLjc3LTM5LjI1VjM0OS4zOEExNjIuNTUsMTYyLjU1LDAsMSwxLDE4NSwxODguMzFWMjc4LjJhNzQuNjIsNzQuNjIsMCwxLDAsNTIuMjMsNzEuMThWMGw4OCwwYTEyMS4xOCwxMjEuMTgsMCwwLDAsMS44NiwyMi4xN2gwQTEyMi4xOCwxMjIuMTgsMCwwLDAsMzgxLDEwMi4zOWExMjEuNDMsMTIxLjQzLDAsMCwwLDY3LDIwLjE0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFkZUZlZGVyYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDguOGMtMTM3IDAtMjQ4IDExMS0yNDggMjQ4czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDgtMTExLTI0OC0yNDgtMjQ4em0wIDQ4Mi44Yy0xMjkuNyAwLTIzNC44LTEwNS4xLTIzNC44LTIzNC44UzExOC4zIDIyIDI0OCAyMnMyMzQuOCAxMDUuMSAyMzQuOCAyMzQuOFMzNzcuNyA0OTEuNiAyNDggNDkxLjZ6bTE1NS4xLTMyOC41di00Ni44SDIwOS4zVjE5OEg1NC4ybDM2LjcgNDZoMTE3Ljd2MTk2LjhoNDguOFYyNDVoODMuM3YtNDdoLTgzLjN2LTM0LjhoMTQ1Ljd6bS03My4zIDQ1LjF2MjMuOWgtODIuOXYxOTcuNGgtMjYuOFYyMzIuMUg5Ni4zbC0yMC4xLTIzLjloMTQzLjl2LTgwLjZoMTcxLjhWMTUyaC0xNDV2NTYuMnptLTE2MS4zLTY5bC0xMi40LTIwLjcgMi4xIDIzLjgtMjMuNSA1LjQgMjMuMyA1LjQtMi4xIDI0IDEyLjMtMjAuNSAyMi4yIDkuNS0xNS43LTE4LjEgMTUuOC0xOC4xem0tMjkuNi0xOS43bDkuMy0xMS41LTEyLjcgNS45LTgtMTIuNCAxLjcgMTMuOS0xNC4zIDMuOCAxMy43IDIuNy0uOCAxNC43IDYuOC0xMi4yIDEzLjggNS4zem0xNjUuNCAxNDUuMmwtMTMuMSA1LjYtNy4zLTEyLjIgMS4zIDE0LjItMTMuOSAzLjIgMTMuOSAzLjItMS4yIDE0LjIgNy4zLTEyLjIgMTMuMSA1LjUtOS40LTEwLjd6bTEwNi45LTc3LjJsLTIwLjkgOS4xLTEyLTE5LjYgMi4yIDIyLjctMjIuMyA1LjQgMjIuMiA0LjktMS44IDIyLjkgMTEuNS0xOS42IDIxLjIgOC44LTE1LjEtMTd6TTI0OCAyOS45Yy0xMjUuMyAwLTIyNi45IDEwMS42LTIyNi45IDIyNi45UzEyMi43IDQ4My43IDI0OCA0ODMuN3MyMjYuOS0xMDEuNiAyMjYuOS0yMjYuOVMzNzMuMyAyOS45IDI0OCAyOS45ek0zNDIuNiAxOTZ2NTFoLTgzLjN2MTk1LjdoLTUyLjdWMjQ1LjlIODkuOWwtNDAtNDkuOWgxNTcuNHYtODEuNmgxOTcuOHY1MC43SDI1OS40VjE5NnpNMjQ4IDQzLjJjNjAuMyAwIDExNC44IDI1IDE1My42IDY1LjJIMjAyLjVWMTkwSDQ1LjFDNzMuMSAxMDQuOCAxNTMuNCA0My4yIDI0OCA0My4yem0wIDQyNy4xYy0xMTcuOSAwLTIxMy42LTk1LjYtMjEzLjYtMjEzLjUgMC0yMS4yIDMuMS00MS44IDguOS02MS4xTDg3LjEgMjUyaDExNC43djE5Ni44aDY0LjZWMjUzaDgzLjN2LTYyLjdoLTgzLjJ2LTE5LjJoMTQ1LjZ2LTUwLjhjMzAuOCAzNyA0OS4zIDg0LjYgNDkuMyAxMzYuNS4xIDExNy45LTk1LjUgMjEzLjUtMjEzLjQgMjEzLjV6TTE3OC44IDI3NWwtMTEtMjEuNCAxLjcgMjQuNS0yMy43IDMuOSAyMy44IDUuOS0zLjcgMjMuOCAxMy0yMC45IDIxLjUgMTAuOC0xNS44LTE4LjggMTYuOS0xNy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmVsbG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyLjMgMzJINTYuMUMyNS4xIDMyIDAgNTcuMSAwIDg4Yy0uMSAwIDAtNCAwIDMzNiAwIDMwLjkgMjUuMSA1NiA1NiA1NmgzMzYuMmMzMC44LS4yIDU1LjctMjUuMiA1NS43LTU2Vjg4Yy4xLTMwLjgtMjQuOC01NS44LTU1LjYtNTZ6TTE5NyAzNzEuM2MtLjIgMTQuNy0xMi4xIDI2LjYtMjYuOSAyNi42SDg3LjRjLTE0LjguMS0yNi45LTExLjgtMjctMjYuNlYxMTcuMWMwLTE0LjggMTItMjYuOSAyNi45LTI2LjloODIuOWMxNC44IDAgMjYuOSAxMiAyNi45IDI2Ljl2MjU0LjJ6bTE5My4xLTExMmMwIDE0LjgtMTIgMjYuOS0yNi45IDI2LjloLTgxYy0xNC44IDAtMjYuOS0xMi0yNi45LTI2LjlWMTE3LjJjMC0xNC44IDEyLTI2LjkgMjYuOC0yNi45aDgxLjFjMTQuOCAwIDI2LjkgMTIgMjYuOSAyNi45djE0Mi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmlwYWR2aXNvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjguOTEsMTc4LjgyLDU3NiwxMjcuNThINDcxLjY2YTMyNi4xMSwzMjYuMTEsMCwwLDAtMzY3LDBIMGw0Ny4wOSw1MS4yNEExNDMuOTExLDE0My45MTEsMCwwLDAsMjQxLjg2LDM5MC43M0wyODgsNDQwLjkzbDQ2LjExLTUwLjE3QTE0My45NCwxNDMuOTQsMCwwLDAsNTc1Ljg4LDI4NS4xOGgtLjAzQTE0My41NiwxNDMuNTYsMCwwLDAsNTI4LjkxLDE3OC44MlpNMTQ0LjA2LDM4Mi41N2E5Ny4zOSw5Ny4zOSwwLDEsMSw5Ny4zOS05Ny4zOUE5Ny4zOSw5Ny4zOSwwLDAsMSwxNDQuMDYsMzgyLjU3Wk0yODgsMjgyLjM3YzAtNjQuMDktNDYuNjItMTE5LjA4LTEwOC4wOS0xNDIuNTlhMjgxLDI4MSwwLDAsMSwyMTYuMTcsMEMzMzQuNjEsMTYzLjMsMjg4LDIxOC4yOSwyODgsMjgyLjM3Wm0xNDMuODgsMTAwLjJoLS4wMWE5Ny40MDUsOTcuNDA1LDAsMSwxLC4wMSwwWk0xNDQuMDYsMjM0LjEyaC0uMDFhNTEuMDYsNTEuMDYsMCwxLDAsNTEuMDYsNTEuMDZ2LS4xMUE1MSw1MSwwLDAsMCwxNDQuMDYsMjM0LjEyWm0yODcuODIsMGE1MS4wNiw1MS4wNiwwLDEsMCw1MS4wNiw1MS4wNkE1MS4wNiw1MS4wNiwwLDAsMCw0MzEuODgsMjM0LjEyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdW1ibHJTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTgyLjMgMzY0LjJjLTguNSA5LjEtMzEuMiAxOS44LTYwLjkgMTkuOC03NS41IDAtOTEuOS01NS41LTkxLjktODcuOXYtOTBoLTI5LjdjLTMuNCAwLTYuMi0yLjgtNi4yLTYuMnYtNDIuNWMwLTQuNSAyLjgtOC41IDcuMS0xMCAzOC44LTEzLjcgNTAuOS00Ny41IDUyLjctNzMuMi41LTYuOSA0LjEtMTAuMiAxMC0xMC4yaDQ0LjNjMy40IDAgNi4yIDIuOCA2LjIgNi4ydjcyaDUxLjljMy40IDAgNi4yIDIuOCA2LjIgNi4ydjUxLjFjMCAzLjQtMi44IDYuMi02LjIgNi4yaC01Mi4xVjMyMWMwIDIxLjQgMTQuOCAzMy41IDQyLjUgMjIuNCAzLTEuMiA1LjYtMiA4LTEuNCAyLjIuNSAzLjYgMi4xIDQuNiA0LjlsMTMuOCA0MC4yYzEgMy4yIDIgNi43LS4zIDkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHVtYmxyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOS44IDQ4MC4zYy0xMy42IDE0LjUtNTAgMzEuNy05Ny40IDMxLjctMTIwLjggMC0xNDctODguOC0xNDctMTQwLjZ2LTE0NEgxNy45Yy01LjUgMC0xMC00LjUtMTAtMTB2LTY4YzAtNy4yIDQuNS0xMy42IDExLjMtMTYgNjItMjEuOCA4MS41LTc2IDg0LjMtMTE3LjEuOC0xMSA2LjUtMTYuMyAxNi4xLTE2LjNoNzAuOWM1LjUgMCAxMCA0LjUgMTAgMTB2MTE1LjJoODNjNS41IDAgMTAgNC40IDEwIDkuOXY4MS43YzAgNS41LTQuNSAxMC0xMCAxMGgtODMuNFYzNjBjMCAzNC4yIDIzLjcgNTMuNiA2OCAzNS44IDQuOC0xLjkgOS0zLjIgMTIuNy0yLjIgMy41LjkgNS44IDMuNCA3LjQgNy45bDIyIDY0LjNjMS44IDUgMy4zIDEwLjYtLjQgMTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHdpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5MS4xNywxMDMuNDdIMzUyLjU0djEwOS43aDM4LjYzWk0yODUsMTAzSDI0Ni4zN1YyMTIuNzVIMjg1Wk0xMjAuODMsMCwyNC4zMSw5MS40MlY0MjAuNThIMTQwLjE0VjUxMmw5Ni41My05MS40Mmg3Ny4yNUw0ODcuNjksMjU2VjBaTTQ0OS4wNywyMzcuNzVsLTc3LjIyLDczLjEySDI5NC42MWwtNjcuNiw2NHYtNjRIMTQwLjE0VjM2LjU4SDQ0OS4wN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHdpdHRlclNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNDguOSAxNTguOGMuMiAyLjguMiA1LjcuMiA4LjUgMCA4Ni43LTY2IDE4Ni42LTE4Ni42IDE4Ni42LTM3LjIgMC03MS43LTEwLjgtMTAwLjctMjkuNCA1LjMuNiAxMC40LjggMTUuOC44IDMwLjcgMCA1OC45LTEwLjQgODEuNC0yOC0yOC44LS42LTUzLTE5LjUtNjEuMy00NS41IDEwLjEgMS41IDE5LjIgMS41IDI5LjYtMS4yLTMwLTYuMS01Mi41LTMyLjUtNTIuNS02NC40di0uOGM4LjcgNC45IDE4LjkgNy45IDI5LjYgOC4zYTY1LjQ0NyA2NS40NDcgMCAwIDEtMjkuMi01NC42YzAtMTIuMiAzLjItMjMuNCA4LjktMzMuMSAzMi4zIDM5LjggODAuOCA2NS44IDEzNS4yIDY4LjYtOS4zLTQ0LjUgMjQtODAuNiA2NC04MC42IDE4LjkgMCAzNS45IDcuOSA0Ny45IDIwLjcgMTQuOC0yLjggMjktOC4zIDQxLjYtMTUuOC00LjkgMTUuMi0xNS4yIDI4LTI4LjggMzYuMSAxMy4yLTEuNCAyNi01LjEgMzcuOC0xMC4yLTguOSAxMy4xLTIwLjEgMjQuNy0zMi45IDM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUd2l0dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1OS4zNyAxNTEuNzE2Yy4zMjUgNC41NDguMzI1IDkuMDk3LjMyNSAxMy42NDUgMCAxMzguNzItMTA1LjU4MyAyOTguNTU4LTI5OC41NTggMjk4LjU1OC01OS40NTIgMC0xMTQuNjgtMTcuMjE5LTE2MS4xMzctNDcuMTA2IDguNDQ3Ljk3NCAxNi41NjggMS4yOTkgMjUuMzQgMS4yOTkgNDkuMDU1IDAgOTQuMjEzLTE2LjU2OCAxMzAuMjc0LTQ0LjgzMi00Ni4xMzItLjk3NS04NC43OTItMzEuMTg4LTk4LjExMi03Mi43NzIgNi40OTguOTc0IDEyLjk5NSAxLjYyNCAxOS44MTggMS42MjQgOS40MjEgMCAxOC44NDMtMS4zIDI3LjYxNC0zLjU3My00OC4wODEtOS43NDctODQuMTQzLTUxLjk4LTg0LjE0My0xMDIuOTg1di0xLjI5OWMxMy45NjkgNy43OTcgMzAuMjE0IDEyLjY3IDQ3LjQzMSAxMy4zMTktMjguMjY0LTE4Ljg0My00Ni43ODEtNTEuMDA1LTQ2Ljc4MS04Ny4zOTEgMC0xOS40OTIgNS4xOTctMzcuMzYgMTQuMjk0LTUyLjk1NCA1MS42NTUgNjMuNjc1IDEyOS4zIDEwNS4yNTggMjE2LjM2NSAxMDkuODA3LTEuNjI0LTcuNzk3LTIuNTk5LTE1LjkxOC0yLjU5OS0yNC4wNCAwLTU3LjgyOCA0Ni43ODItMTA0LjkzNCAxMDQuOTM0LTEwNC45MzQgMzAuMjEzIDAgNTcuNTAyIDEyLjY3IDc2LjY3IDMzLjEzNyAyMy43MTUtNC41NDggNDYuNDU2LTEzLjMyIDY2LjU5OS0yNS4zNC03Ljc5OCAyNC4zNjYtMjQuMzY2IDQ0LjgzMy00Ni4xMzIgNTcuODI3IDIxLjExNy0yLjI3MyA0MS41ODQtOC4xMjIgNjAuNDI2LTE2LjI0My0xNC4yOTIgMjAuNzkxLTMyLjE2MSAzOS4zMDgtNTIuNjI4IDU0LjI1M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHlwbzMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc4LjcgNzguNGMwLTI0LjcgNS40LTMyLjQgMTMuOS0zOS40LTY5LjUgOC41LTE0OS4zIDM0LTE3Ni4zIDY2LjQtNS40IDcuNy05LjMgMjAuOC05LjMgMzcuMUM3IDI0NiAxMTMuOCA0ODAgMTkxLjEgNDgwYzM2LjMgMCA5Ny4zLTU5LjUgMTQ2LjctMTM5LTcgMi4zLTExLjYgMi4zLTE4LjUgMi4zLTU3LjIgMC0xNDAuNi0xOTguNS0xNDAuNi0yNjQuOXpNMzAxLjUgMzJjLTMwLjEgMC00MS43IDUuNC00MS43IDM2LjMgMCA2Ni40IDUzLjggMTk4LjUgMTAxLjcgMTk4LjUgMjYuMyAwIDc4LjgtOTkuNyA3OC44LTE4Mi4zIDAtNDAuOS02Ny01Mi41LTEzOC44LTUyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVViZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE0LjEgMzJIMzMuOUMxNS4yIDMyIDAgNDcuMiAwIDY1LjlWNDQ2YzAgMTguOCAxNS4yIDM0IDMzLjkgMzRINDE0YzE4LjcgMCAzMy45LTE1LjIgMzMuOS0zMy45VjY1LjlDNDQ4IDQ3LjIgNDMyLjggMzIgNDE0LjEgMzJ6TTIzNy42IDM5MS4xQzE2MyAzOTguNiA5Ni40IDM0NC4yIDg4LjkgMjY5LjZoOTQuNFYyOTBjMCAzLjcgMyA2LjggNi44IDYuOEgyNThjMy43IDAgNi44LTMgNi44LTYuOHYtNjcuOWMwLTMuNy0zLTYuOC02LjgtNi44aC02Ny45Yy0zLjcgMC02LjggMy02LjggNi44djIwLjRIODguOWM3LTY5LjQgNjUuNC0xMjIuMiAxMzUuMS0xMjIuMiA2OS43IDAgMTI4LjEgNTIuOCAxMzUuMSAxMjIuMiA3LjUgNzQuNS00Ni45IDE0MS4xLTEyMS41IDE0OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVYnVudHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNTIuNyA5M2M4LjgtMTUuMiAyOC4zLTIwLjUgNDMuNS0xMS43IDE1LjMgOC44IDIwLjUgMjguMyAxMS43IDQzLjYtOC44IDE1LjItMjguMyAyMC41LTQzLjUgMTEuNy0xNS4zLTguOS0yMC41LTI4LjQtMTEuNy00My42ek04Ny40IDI4Ny45Yy0xNy42IDAtMzEuOS0xNC4zLTMxLjktMzEuOSAwLTE3LjYgMTQuMy0zMS45IDMxLjktMzEuOSAxNy42IDAgMzEuOSAxNC4zIDMxLjkgMzEuOSAwIDE3LjYtMTQuMyAzMS45LTMxLjkgMzEuOXptMjguMSAzLjFjMjIuMy0xNy45IDIyLjQtNTEuOSAwLTY5LjkgOC42LTMyLjggMjkuMS02MC43IDU2LjUtNzkuMWwyMy43IDM5LjZjLTUxLjUgMzYuMy01MS41IDExMi41IDAgMTQ4LjhMMTcyIDM3MGMtMjcuNC0xOC4zLTQ3LjgtNDYuMy01Ni41LTc5em0yMjguNyAxMzEuN2MtMTUuMyA4LjgtMzQuNyAzLjYtNDMuNS0xMS43LTguOC0xNS4zLTMuNi0zNC44IDExLjctNDMuNiAxNS4yLTguOCAzNC43LTMuNiA0My41IDExLjcgOC44IDE1LjMgMy42IDM0LjgtMTEuNyA0My42em0uMy02OS41Yy0yNi43LTEwLjMtNTYuMSA2LjYtNjAuNSAzNS01LjIgMS40LTQ4LjkgMTQuMy05Ni43LTkuNGwyMi41LTQwLjNjNTcgMjYuNSAxMjMuNC0xMS43IDEyOC45LTc0LjRsNDYuMS43Yy0yLjMgMzQuNS0xNy4zIDY1LjUtNDAuMyA4OC40em0tNS45LTEwNS4zYy01LjQtNjItNzEuMy0xMDEuMi0xMjguOS03NC40bC0yMi41LTQwLjNjNDcuOS0yMy43IDkxLjUtMTAuOCA5Ni43LTkuNCA0LjQgMjguMyAzMy44IDQ1LjMgNjAuNSAzNSAyMy4xIDIyLjkgMzggNTMuOSA0MC4yIDg4LjVsLTQ2IC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVaWtpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuOSAxMjh2MjU2TDIxOCA1MTIgMCAzODRWMTY5LjdsODcuNiA0NS4xdjExN2wxMzMuNSA3NS41IDEzNS44LTc1LjV2LTE1MWwtMTAxLjEtNTcuNiA4Ny42LTUzLjFMNDQzLjkgMTI4ek0zMDguNiA0OS4xTDIyMy44IDBsLTg4LjYgNTQuOCA4NiA0Ny4zIDg3LjQtNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJhY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjM1IDhDMTE4LjM2IDcuODMgNy4xNCAxMTguNzIgNyAyNTUuNjhjLS4wNyAxMzcgMTExIDI0OC4yIDI0OCAyNDguMjcgMTM2Ljg1IDAgMjQ3LjgyLTExMC43IDI0OC0yNDcuNjdTMzkyLjM0IDguMTcgMjU1LjM1IDh6bTE0NSAyNjZxLTEuMTQgNDAuNjgtMTQgNjV0LTQzLjUxIDM1cS0zMC42MSAxMC43LTg1LjQ1IDEwLjQ3aC00LjZxLTU0Ljc4LjIyLTg1LjQ0LTEwLjQ3dC00My41Mi0zNXEtMTIuODUtMjQuMzYtMTQtNjVhMjI0LjgxIDIyNC44MSAwIDAgMSAwLTMwLjcxIDQxOC4zNyA0MTguMzcgMCAwIDEgMy42LTQzLjg4YzEuODgtMTMuMzkgMy41Ny0yMi41OCA1LjQtMzIgMS00Ljg4IDEuMjgtNi40MiAxLjgyLTguNDVhNS4wOSA1LjA5IDAgMCAxIDQuOS0zLjg5aC42OWwzMiA1YTUuMDcgNS4wNyAwIDAgMSA0LjE2IDUgNSA1IDAgMCAxIDAgLjc3bC0xLjcgOC43OHEtMi40MSAxMy4yNS00Ljg0IDMzLjY4YTM4MC42MiAzODAuNjIgMCAwIDAtMi42NCA0Mi4xNXEtLjI4IDQwLjQzIDguMTMgNTkuODNhNDMuODcgNDMuODcgMCAwIDAgMzEuMzEgMjUuMThBMjQzIDI0MyAwIDAgMCAyNTAgMzQwLjZoMTAuMjVhMjQyLjY0IDI0Mi42NCAwIDAgMCA1Ny4yNy01LjE2IDQzLjg2IDQzLjg2IDAgMCAwIDMxLjE1LTI1LjIzcTguNTMtMTkuNDIgOC4xMy01OS43OGEzODggMzg4IDAgMCAwLTIuNi00Mi4xNXEtMi40OC0yMC4zOC00Ljg5LTMzLjY4bC0xLjY5LTguNzhhNSA1IDAgMCAxIDAtLjc3IDUgNSAwIDAgMSA0LjItNWwzMi01aC44MmE1IDUgMCAwIDEgNC45IDMuODljLjU1IDIuMDUuODEgMy41NyAxLjgzIDguNDUgMS44MiA5LjYyIDMuNTIgMTguNzggNS4zOSAzMmE0MTUuNzEgNDE1LjcxIDAgMCAxIDMuNjEgNDMuODggMjI4LjA2IDIyOC4wNiAwIDAgMS0uMDQgMzAuNzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuY2hhcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzEuNzMsMjMyLjgxM0E1LjM4MSw1LjM4MSwwLDAsMCwxNzYuNywyMjkuNSw0OC4wODEsNDguMDgxLDAsMCwxLDE5MS42LDIwNC4yNDRjMS4yNDMtLjgyOCwxLjY1Ny0yLjQ4NCwxLjY1Ny00LjE0MWE0LjIyLDQuMjIsMCwwLDAtMi4wNzEtMy4zMTJMNzQuNDI5LDEyOC40NzMsMTQ4Ljk1OCw4NWE5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MSw5LjEwOCw5LjEwOCwwLDAsMC00Ljk2OC04LjI4MUwxMjYuNiw1NS42YTkuNzQ4LDkuNzQ4LDAsMCwwLTkuNTIzLDBsLTEwMC4yLDU3Ljk2NmE5Ljk0Myw5Ljk0MywwLDAsMC00Ljk2OSw4LjI4MVYyMzYuOTU0YTkuMTA5LDkuMTA5LDAsMCwwLDQuOTY5LDguMjgxTDM5LjIzNSwyNTguMDdhOC44MjksOC44MjksMCwwLDAsNC45NjgsMS4yNDIsOS40LDkuNCwwLDAsMCw2LjYyNS0yLjQ4NCwxMC44LDEwLjgsMCwwLDAsMi45LTcuMDM5VjE2NC41TDE2OS42NiwyMzIuNEE0LjUsNC41LDAsMCwwLDE3MS43MywyMzIuODEzWk0zMjMuMjcyLDM3Ny43M2ExMi40NzgsMTIuNDc4LDAsMCwwLTQuOTY5LDEuMjQybC03NC41MjgsNDMuMDYyVjI4Ny44ODJjMC0yLjktMi45LTUuOC02LjIxMS00LjU1NWE1My4wMzYsNTMuMDM2LDAsMCwxLTI4Ljk4NC40MTQsNC44Niw0Ljg2LDAsMCwwLTYuMjEsNC41NTVWNDIxLjYxOWwtNzQuNTI5LTQzLjA2MWE4LjgzLDguODMsMCwwLDAtNC45NjktMS4yNDIsOS42MzEsOS42MzEsMCwwLDAtOS41MjMsOS41MjN2MjYuMDg1YTkuMTA3LDkuMTA3LDAsMCwwLDQuOTY5LDguMjgxbDEwMC4yLDU3LjU1M0E4LjgyOSw4LjgyOSwwLDAsMCwyMjMuNDg2LDQ4MGExMS4wMjcsMTEuMDI3LDAsMCwwLDQuOTY5LTEuMjQybDEwMC4yLTU3LjU1M2E5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MVYzODYuODM5QzMzMi44LDM4Mi4yODUsMzI4LjI0LDM3Ny43MywzMjMuMjcyLDM3Ny43M1pNMjg2LjAwNyw3OGEyMywyMywwLDEsMC0yMy0yM0EyMywyMywwLDAsMCwyODYuMDA3LDc4Wm02My42MjctMTAuMDg2YTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsNjcuOTE0Wk00MTIuODE2LDE1MS42YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMTUxLjZabS02My4xODItOS4yYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsMTQyLjRabS02My42MjcsODMuMjQ0YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDI4Ni4wMDcsMjI1LjY0OFptLTYyLjA3NCwzNi4zNThhMjMsMjMsMCwxLDAtMjMtMjNBMjMsMjMsMCwwLDAsMjIzLjkzMywyNjIuMDA2Wm0xODguODgzLTgyLjM1OGEyMywyMywwLDEsMCwyMywyM0EyMywyMywwLDAsMCw0MTIuODE2LDE3OS42NDhabTAsNzIuMjcyYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMjUxLjkyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmlyZWdpc3RyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNDgwYzM5LjUgMCA3Ni4yLTExLjggMTA2LjgtMzIuMkg4NS4zQzExNS44IDQ2OC4yIDE1Mi41IDQ4MCAxOTIgNDgwem0tODkuMS0xOTMuMXYtMTIuNEgwdjEyLjRjMCAyLjUgMCA1IC4xIDcuNGgxMDMuMWMtLjItMi40LS4zLTQuOS0uMy03LjR6bTIwLjUgNTdIOC41YzIuNiA4LjUgNS44IDE2LjggOS42IDI0LjhoMTM4LjNjLTEyLjktNS43LTI0LjEtMTQuMi0zMy0yNC44em0tMTcuNy0zNC43SDEuM2MuOSA3LjYgMi4yIDE1IDMuOSAyMi4zaDEwOS43Yy00LTYuOS03LjItMTQuNC05LjItMjIuM3ptLTIuOC02OS4zSDB2MTcuM2gxMDIuOXptMC0xNzMuMkgwdjQuOWgxMDIuOXptMC0zNC43SDB2Mi41aDEwMi45em0wIDY5LjNIMHY3LjRoMTAyLjl6bTAgMTA0SDB2MTQuOGgxMDIuOXptMC02OS4zSDB2OS45aDEwMi45em0wIDM0LjZIMFYxODNoMTAyLjl6bTE2Ni4yIDE2MC45aDEwOS43YzEuOC03LjMgMy4xLTE0LjcgMy45LTIyLjNIMjc4LjNjLTIuMSA3LjktNS4yIDE1LjQtOS4yIDIyLjN6bTEyLTE4NS43SDM4NFYxMzZIMjgxLjF6bTAgMzcuMkgzODR2LTEyLjRIMjgxLjF6bTAtNzQuM0gzODR2LTcuNEgyODEuMXptMC03Ni43djIuNUgzODRWMzJ6bS0yMDMgNDEwLjloMjI3LjdjMTEuOC04LjcgMjIuNy0xOC42IDMyLjItMjkuN0g0NC45YzkuNiAxMSAyMS40IDIxIDMzLjIgMjkuN3ptMjAzLTM3MS4zSDM4NHYtNC45SDI4MS4xem0wIDE0OC41SDM4NHYtMTQuOEgyODEuMXpNMzguOCA0MDUuN2gzMDUuM2M2LjctOC41IDEyLjYtMTcuNiAxNy44LTI3LjJIMjNjNS4yIDkuNiA5LjIgMTguNyAxNS44IDI3LjJ6bTE4OC44LTM3LjFIMzY3YzMuNy04IDUuOC0xNi4yIDguNS0yNC44aC0xMTVjLTguOCAxMC43LTIwLjEgMTkuMi0zMi45IDI0Ljh6bTUzLjUtODEuN2MwIDIuNS0uMSA1LS40IDcuNGgxMDMuMWMuMS0yLjUuMi00LjkuMi03LjR2LTEyLjRIMjgxLjF6bTAtMjkuN0gzODR2LTE3LjNIMjgxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OC4xMSwyMDYuNCw0NDUuMzEsMTQuNzIsMjQ4LjIsNjYuMDgsMjE5LDExNi4xNGwtNTkuMi0uNDNMMTUuNTQsMjU2LDE1OS44MiwzOTYuMzJsNTkuMTctLjQzLDI5LjI0LDUwLDE5Ny4wOCw1MS4zNiw1Mi44LTE5MS42Mi0zMC00OS42M1pNMjIzLjc3LDEyNC4yLDM3NC41NSw4Ni41MSwyODgsMjMyLjMzSDExNC44N1ptMCwyNjMuNjNMMTE0Ljg3LDI3OS43MUgyODhsODYuNTUsMTQ1LjgxWm0xOTMsMTRMMzMwLjE3LDI1Nmw4Ni41OC0xNDUuODRMNDU4LjU2LDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5zcGxhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LDIzMC4xN1Y0ODBIMFYyMzAuMTdIMTQxLjEzVjM1NS4wOUgzMDYuODdWMjMwLjE3Wk0zMDYuODcsMzJIMTQxLjEzVjE1Ni45MUgzMDYuODdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVudGFwcGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAxLjMgNDkuOWMtNzkuOCAxNjAuMS04NC42IDE1Mi41LTg3LjkgMTczLjJsLTUuMiAzMi44Yy0xLjkgMTItNi42IDIzLjUtMTMuNyAzMy40TDE0NS42IDQ5Ny4xYy03LjYgMTAuNi0yMC40IDE2LjItMzMuNCAxNC42LTQwLjMtNS03Ny44LTMyLjItOTUuMy02OC41LTUuNy0xMS44LTQuNS0yNS44IDMuMS0zNi40bDE0OC45LTIwNy45YzcuMS05LjkgMTYuNC0xOCAyNy4yLTIzLjdsMjkuMy0xNS41YzE4LjUtOS44IDkuNy0xMS45IDEzNS42LTEzOC45IDEtNC44IDEtNy4zIDMuNi04IDMtLjcgNi42LTEgNi4zLTQuNmwtLjQtNC42Yy0uMi0xLjkgMS4zLTMuNiAzLjItMy42IDQuNS0uMSAxMy4yIDEuMiAyNS42IDEwIDEyLjMgOC45IDE2LjQgMTYuOCAxNy43IDIxLjEuNiAxLjgtLjYgMy43LTIuNCA0LjJsLTQuNSAxLjFjLTMuNC45LTIuNSA0LjQtMi4zIDcuNC4xIDIuOC0yLjMgMy42LTYuNSA2LjF6TTIzMC4xIDM2LjRjMy40LjkgMi41IDQuNCAyLjMgNy40LS4yIDIuNyAyLjEgMy41IDYuNCA2IDcuOSAxNS45IDE1LjMgMzAuNSAyMi4yIDQ0IC43IDEuMyAyLjMgMS41IDMuMy41IDExLjItMTIgMjQuNi0yNi4yIDQwLjUtNDIuNiAxLjMtMS40IDEuNC0zLjUuMS00LjktOC04LjItMTYuNS0xNi45LTI1LjYtMjYuMS0xLTQuNy0xLTcuMy0zLjYtOC0zLS44LTYuNi0xLTYuMy00LjYuMy0zLjMgMS40LTguMS0yLjgtOC4yLTQuNS0uMS0xMy4yIDEuMS0yNS42IDEwLTEyLjMgOC45LTE2LjQgMTYuOC0xNy43IDIxLjEtMS40IDQuMiAzLjYgNC42IDYuOCA1LjR6TTYyMCA0MDYuN0w0NzEuMiAxOTguOGMtMTMuMi0xOC41LTI2LjYtMjMuNC01Ni40LTM5LjEtMTEuMi01LjktMTQuMi0xMC45LTMwLjUtMjguOS0xLTEuMS0yLjktLjktMy42LjUtNDYuMyA4OC44LTQ3LjEgODIuOC00OSA5NC44LTEuNyAxMC43LTEuMyAyMCAuMyAyOS44IDEuOSAxMiA2LjYgMjMuNSAxMy43IDMzLjRsMTQ4LjkgMjA3LjljNy42IDEwLjYgMjAuMiAxNi4yIDMzLjEgMTQuNyA0MC4zLTQuOSA3OC0zMiA5NS43LTY4LjYgNS40LTExLjkgNC4zLTI1LjktMy40LTM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDMuMiAzMDNjLTUuMiAzLjYtMzIuNiAxMy4xLTMyLjYtMTlWMTgwSDM3Ljl2MTAyLjZjMCA3NC45IDgwLjIgNTEuMSA5Ny45IDM5VjE4MGgtMzIuNnpNNCA3NC44MnYyMjAuOWMwIDEwMy43IDc0LjkgMTM1LjIgMTg3LjcgMTg0LjEgMTEyLjQtNDguOSAxODcuNy04MC4yIDE4Ny43LTE4NC4xVjc0LjgyYy0xMTYuMy02MS42LTI4MS44LTQ5LjYtMzc1LjQgMHptMzU4LjEgMjIwLjljMCA4Ni42LTUzLjIgMTEzLjYtMTcwLjQgMTY1LjMtMTE3LjUtNTEuOC0xNzAuNS03OC43LTE3MC41LTE2NS4zdi0xMjYuNGMxMDIuMy05My44IDIzMS42LTEwMCAzNDAuOS04OS44em0tMjA5LjYtMTA3LjR2MjEyLjhoMzIuN3YtNjguN2MyNC40IDcuMyA3MS43LTIuNiA3MS43LTc4LjUgMC05Ny40LTgwLjctODAuOTItMTA0LjQtNjUuNnptMzIuNyAxMTcuM3YtMTAwLjNjOC40LTQuMiAzOC40LTEyLjcgMzguNCA0OS4zIDAgNjcuOS0zNi40IDUxLjgtMzguNCA1MXptNzkuMS04Ni40Yy4xIDQ3LjMgNTEuNiA0Mi41IDUyLjIgNzAuNC42IDIzLjUtMzAuNCAyMy01MC44IDQuOXYzMC4xYzM2LjIgMjEuNSA4MS45IDguMSA4My4yLTMzLjUgMS43LTUxLjUtNTQuMS00Ni42LTUzLjQtNzMuMi42LTIwLjMgMzAuNi0yMC41IDQ4LjUtMi4ydi0yOC40Yy0yOC41LTIyLTc5LjktOS4yLTc5LjcgMzEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MS41IDI1NmMwIDMuMS0xLjcgNi4xLTQuNSA3LjVMNTQ3LjkgMzE3Yy0xLjQuOC0yLjggMS40LTQuNSAxLjQtMS40IDAtMy4xLS4zLTQuNS0xLjEtMi44LTEuNy00LjUtNC41LTQuNS03Ljh2LTM1LjZIMjk1LjdjMjUuMyAzOS42IDQwLjUgMTA2LjkgNjkuNiAxMDYuOUgzOTJWMzU0YzAtNSAzLjktOC45IDguOS04LjlINDkwYzUgMCA4LjkgMy45IDguOSA4Ljl2ODkuMWMwIDUtMy45IDguOS04LjkgOC45aC04OS4xYy01IDAtOC45LTMuOS04LjktOC45di0yNi43aC0yNi43Yy03NS40IDAtODEuMS0xNDIuNS0xMjQuNy0xNDIuNUgxNDAuM2MtOC4xIDMwLjYtMzUuOSA1My41LTY5IDUzLjVDMzIgMzI3LjMgMCAyOTUuMyAwIDI1NnMzMi03MS4zIDcxLjMtNzEuM2MzMy4xIDAgNjEgMjIuOCA2OSA1My41IDM5LjEgMCA0My45IDkuNSA3NC42LTYwLjRDMjU1IDg4LjcgMjczIDk1LjcgMzIzLjggOTUuN2M3LjUtMjAuOSAyNy0zNS42IDUwLjQtMzUuNiAyOS41IDAgNTMuNSAyMy45IDUzLjUgNTMuNXMtMjMuOSA1My41LTUzLjUgNTMuNWMtMjMuNCAwLTQyLjktMTQuOC01MC40LTM1LjZIMjk0Yy0yOS4xIDAtNDQuMyA2Ny40LTY5LjYgMTA2LjloMzEwLjF2LTM1LjZjMC0zLjMgMS43LTYuMSA0LjUtNy44IDIuOC0xLjcgNi40LTEuNCA4LjkuM2w4OS4xIDUzLjVjMi44IDEuMSA0LjUgNC4xIDQuNSA3LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYwLjMgMjQxLjdjMjUuOC00MS4zIDE1LjItNDguOC0xMS43LTQ4LjhoLTI3Yy0uMSAwLTEuNS0xLjQtMTAuOSA4LTExLjIgNS42LTM3LjkgNi4zLTM3LjkgOC43IDAgNC41IDcwLjMtMy4xIDg4LjEgMCA5LjUgMS41LTEuNSAyMC40LTQuNCAzMi0uNSA0LjUgMi40IDIuMyAzLjguMXptLTExMi4xIDIyLjZjNjQtMjEuMyA5Ny4zLTIzLjkgMTAyLTI2LjIgNC40LTIuOS00LjQtNi42LTI2LjItNS44LTUxLjcgMi4yLTEzNy42IDM3LjEtMTcyLjYgNTMuOWwtMzAuNy05My4zaDE5Ni42Yy0yLjctMjguMi0xNTIuOS0yMi42LTMzNy45LTIyLjZMMjcgNDE1LjhjMTk2LjQtOTcuMyAyNTguOS0xMzAuMyAzMjEuMi0xNTEuNXpNOTQuNyA5NmMyNTMuMyA1My43IDMzMCA2NS43IDMzMi4xIDg1LjIgMzYuNCAwIDQ1LjkgMCA1Mi40IDYuNiAyMS4xIDE5LjctMTQuNiA2Ny43LTE0LjYgNjcuNy00LjQgMi45LTQwNi40IDE2MC4yLTQwNi40IDE2MC4yaDQyMy4xTDU0OSA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNzdW5uYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU2LjggMjg1LjFsNS43IDE0LjRoLTguMmMtMS4zLTMuMi0zLjEtNy43LTMuOC05LjUtMi41LTYuMy0xLjEtOC40IDAtMTAgMS45LTIuNyAzLjItNC40IDMuNi01LjIgMCAyLjIuOCA1LjcgMi43IDEwLjN6bTI5Ny4zIDE4LjhjLTIuMSAxMy44LTUuNyAyNy4xLTEwLjUgMzkuN2w0MyAyMy40LTQ0LjgtMTguOGMtNS4zIDEzLjItMTIgMjUuNi0xOS45IDM3LjJsMzQuMiAzMC4yLTM2LjgtMjYuNGMtOC40IDExLjgtMTggMjIuNi0yOC43IDMyLjNsMjQuOSAzNC43LTI4LjEtMzEuOGMtMTEgOS42LTIzLjEgMTgtMzYuMSAyNS4xbDE1LjcgMzcuMi0xOS4zLTM1LjNjLTEzLjEgNi44LTI3IDEyLjEtNDEuNiAxNS45bDYuNyAzOC40LTEwLjUtMzcuNGMtMTQuMyAzLjQtMjkuMiA1LjMtNDQuNSA1LjRMMjU2IDUxMmwtMS45LTM4LjRjLTE1LjMtLjEtMzAuMi0yLTQ0LjUtNS4zTDE5OSA1MDUuNmw2LjctMzguMmMtMTQuNi0zLjctMjguNi05LjEtNDEuNy0xNS44bC0xOS4yIDM1LjEgMTUuNi0zN2MtMTMtNy0yNS4yLTE1LjQtMzYuMi0yNS4xbC0yNy45IDMxLjYgMjQuNy0zNC40Yy0xMC43LTkuNy0yMC40LTIwLjUtMjguOC0zMi4zbC0zNi41IDI2LjIgMzMuOS0yOS45Yy03LjktMTEuNi0xNC42LTI0LjEtMjAtMzcuM2wtNDQuNCAxOC43TDY3LjggMzQ0Yy00LjgtMTIuNy04LjQtMjYuMS0xMC41LTM5LjlsLTUxIDkgNTAuMy0xNC4yYy0xLjEtOC41LTEuNy0xNy4xLTEuNy0yNS45IDAtNC43LjItOS40LjUtMTQuMUwwIDI1Nmw1Ni0yLjhjMS4zLTEzLjEgMy44LTI1LjggNy41LTM4LjFMNi40IDE5OWw1OC45IDEwLjRjNC0xMiA5LjEtMjMuNSAxNS4yLTM0LjRsLTU1LjEtMzAgNTguMyAyNC42QzkwIDE1OSA5Ny4yIDE0OS4yIDEwNS4zIDE0MEw1NS44IDk2LjRsNTMuOSAzOC43YzguMS04LjYgMTctMTYuNSAyNi42LTIzLjZsLTQwLTU1LjYgNDUuNiA1MS42YzkuNS02LjYgMTkuNy0xMi4zIDMwLjMtMTcuMmwtMjcuMy02NC45IDMzLjggNjIuMWMxMC41LTQuNCAyMS40LTcuOSAzMi43LTEwLjRMMTk5IDYuNGwxOS41IDY5LjJjMTEtMi4xIDIyLjMtMy4yIDMzLjgtMy40TDI1NiAwbDMuNiA3Mi4yYzExLjUuMiAyMi44IDEuNCAzMy44IDMuNUwzMTMgNi40bC0xMi40IDcwLjdjMTEuMyAyLjYgMjIuMiA2LjEgMzIuNiAxMC41bDMzLjktNjIuMi0yNy40IDY1LjFjMTAuNiA0LjkgMjAuNyAxMC43IDMwLjIgMTcuMmw0NS44LTUxLjgtNDAuMSA1NS45YzkuNSA3LjEgMTguNCAxNSAyNi41IDIzLjZsNTQuMi0zOC45LTQ5LjcgNDMuOWM4IDkuMSAxNS4yIDE4LjkgMjEuNSAyOS40bDU4LjctMjQuNy01NS41IDMwLjJjNi4xIDEwLjkgMTEuMSAyMi4zIDE1LjEgMzQuM2w1OS4zLTEwLjQtNTcuNSAxNi4yYzMuNyAxMi4yIDYuMiAyNC45IDcuNSAzNy45TDUxMiAyNTZsLTU2IDIuOGMuMyA0LjYuNSA5LjMuNSAxNC4xIDAgOC43LS42IDE3LjMtMS42IDI1LjhsNTAuNyAxNC4zLTUxLjUtOS4xem0tMjEuOC0zMWMwLTk3LjUtNzktMTc2LjUtMTc2LjUtMTc2LjVzLTE3Ni41IDc5LTE3Ni41IDE3Ni41IDc5IDE3Ni41IDE3Ni41IDE3Ni41IDE3Ni41LTc5IDE3Ni41LTE3Ni41em0tMjQgMGMwIDg0LjMtNjguMyAxNTIuNi0xNTIuNiAxNTIuNnMtMTUyLjYtNjguMy0xNTIuNi0xNTIuNiA2OC4zLTE1Mi42IDE1Mi42LTE1Mi42IDE1Mi42IDY4LjMgMTUyLjYgMTUyLjZ6TTE5NSAyNDFjMCAyLjEgMS4zIDMuOCAzLjYgNS4xIDMuMyAxLjkgNi4yIDQuNiA4LjIgOC4yIDIuOC01LjcgNC4zLTkuNSA0LjMtMTEuMiAwLTIuMi0xLjEtNC40LTMuMi03LTIuMS0yLjUtMy4yLTUuMi0zLjMtNy43LTYuNSA2LjgtOS42IDEwLjktOS42IDEyLjZ6bS00MC43LTE5YzAgMi4xIDEuMyAzLjggMy42IDUuMSAzLjUgMS45IDYuMiA0LjYgOC4yIDguMiAyLjgtNS43IDQuMy05LjUgNC4zLTExLjIgMC0yLjItMS4xLTQuNC0zLjItNy0yLjEtMi41LTMuMi01LjItMy4zLTcuNy02LjUgNi44LTkuNiAxMC45LTkuNiAxMi42em0tMTkgMGMwIDIuMSAxLjMgMy44IDMuNiA1LjEgMy4zIDEuOSA2LjIgNC42IDguMiA4LjIgMi44LTUuNyA0LjMtOS41IDQuMy0xMS4yIDAtMi4yLTEuMS00LjQtMy4yLTctMi4xLTIuNS0zLjItNS4yLTMuMy03LjctNi40IDYuOC05LjYgMTAuOS05LjYgMTIuNnptMjA0LjkgODcuOWMtOC40LTMtOC43LTYuOC04LjctMTUuNlYxODJjLTguMiAxMi41LTE0LjIgMTguNi0xOCAxOC42IDYuMyAxNC40IDkuNSAyMy45IDkuNSAyOC4zdjY0LjNjMCAyLjItMi4yIDYuNS00LjcgNi41aC0xOGMtMi44LTcuNS0xMC4yLTI2LjktMTUuMy00MC4zLTIgMi41LTcuMiA5LjItMTAuNyAxMy43IDIuNCAxLjYgNC4xIDMuNiA1LjIgNi4zIDIuNiA2LjcgNi40IDE2LjUgNy45IDIwLjJoLTkuMmMtMy45LTEwLjQtOS42LTI1LjQtMTEuOC0zMS4xLTIgMi41LTcuMiA5LjItMTAuNyAxMy43IDIuNCAxLjYgNC4xIDMuNiA1LjIgNi4zLjggMiAyLjggNy4zIDQuMyAxMC45SDI1NmMtMS41LTQuMS01LjYtMTQuNi04LjQtMjItMiAyLjUtNy4yIDkuMi0xMC43IDEzLjcgMi41IDEuNiA0LjMgMy42IDUuMiA2LjMuMi42LjUgMS40LjYgMS43SDIyNWMtNC42LTEzLjktMTEuNC0yNy43LTExLjQtMzQuMSAwLTIuMi4zLTUuMSAxLjEtOC4yLTguOCAxMC44LTE0IDE1LjktMTQgMjUgMCA3LjUgMTAuNCAyOC4zIDEwLjQgMzMuMyAwIDEuNy0uNSAzLjMtMS40IDQuOS05LjYtMTIuNy0xNS41LTIwLjctMTguOC0yMC43aC0xMmwtMTEuMi0yOGMtMy44LTkuNi01LjctMTYtNS43LTE4LjggMC0zLjguNS03LjcgMS43LTEyLjItMSAxLjMtMy43IDQuNy01LjUgNy4xLS44LTIuMS0zLjEtNy43LTQuNi0xMS41LTIuMSAyLjUtNy41IDkuMS0xMS4yIDEzLjYuOSAyLjMgMy4zIDguMSA0LjkgMTIuMi0yLjUgMy4zLTkuMSAxMS44LTEzLjYgMTcuNy00IDUuMy01LjggMTMuMy0yLjcgMjEuOCAyLjUgNi43IDIgNy45LTEuNyAxNC4xSDE5MWM1LjUgMCAxNC4zIDE0IDE1LjUgMjIgMTMuMi0xNiAxNS40LTE5LjYgMTYuOC0yMS42aDEwN2MzLjkgMCA3LjItMS45IDkuOS01Ljh6bTIwLjEtMjYuNlYxODEuN2MtOSAxMi41LTE1LjkgMTguNi0yMC43IDE4LjYgNy4xIDE0LjQgMTAuNyAyMy45IDEwLjcgMjguM3Y2Ni4zYzAgMTcuNSA4LjYgMjAuNCAyNCAyMC40IDguMSAwIDEyLjUtLjggMTMuNy0yLjctNC4zLTEuNi03LjYtMi41LTkuOS0zLjMtOC4xLTMuMi0xNy44LTcuNC0xNy44LTI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWYWFkaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjUgMTQwLjdjMS41LTE3LjYgNC45LTUyLjcgNDkuOC01Mi43aDk4LjZjMjAuNyAwIDMyLjEtNy44IDMyLjEtMjEuNlY1NC4xYzAtMTIuMiA5LjMtMjIuMSAyMS41LTIyLjFTNDQ4IDQxLjkgNDQ4IDU0LjF2MzYuNWMwIDQyLjktMjEuNSA2Mi02Ni44IDYySDI4MC43Yy0zMC4xIDAtMzMgMTQuNy0zMyAyNy4xIDAgMS4zLS4xIDIuNS0uMiAzLjctLjcgMTIuMy0xMC45IDIyLjItMjMuNCAyMi4ycy0yMi43LTkuOC0yMy40LTIyLjJjLS4xLTEuMi0uMi0yLjQtLjItMy43IDAtMTIuMy0zLTI3LjEtMzMtMjcuMUg2Ni44Yy00NS4zIDAtNjYuOC0xOS4xLTY2LjgtNjJWNTQuMUMwIDQxLjkgOS40IDMyIDIxLjYgMzJzMjEuNSA5LjkgMjEuNSAyMi4xdjEyLjNDNDMuMSA4MC4yIDU0LjUgODggNzUuMiA4OGg5OC42YzQ0LjggMCA0OC4zIDM1LjEgNDkuOCA1Mi43aC45ek0yMjQgNDU2YzExLjUgMCAyMS40LTcgMjUuNy0xNi4zIDEuMS0xLjggOTcuMS0xNjkuNiA5OC4yLTE3MS40IDExLjktMTkuNi0zLjItNDQuMy0yNy4yLTQ0LjMtMTMuOSAwLTIzLjMgNi40LTI5LjggMjAuM0wyMjQgMzYybC02Ni45LTExNy43Yy02LjQtMTMuOS0xNS45LTIwLjMtMjkuOC0yMC4zLTI0IDAtMzkuMSAyNC42LTI3LjIgNDQuMyAxLjEgMS45IDk3LjEgMTY5LjYgOTguMiAxNzEuNCA0LjMgOS4zIDE0LjIgMTYuMyAyNS43IDE2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWNvaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyaC02NGwtODAuNyAxOTJoLTk0LjVMNjQgMzJIMGw0OCAxMTJIMHY0OGg2OC41bDEzLjggMzJIMHY0OGgxMDIuOEwxOTIgNDgwbDg5LjItMjA4SDM4NHYtNDhoLTgyLjNsMTMuOC0zMkgzODR2LTQ4aC00OGw0OC0xMTJ6TTE5MiAzMzZsLTI3LTY0aDU0bC0yNyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhZGVvU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI4MC43IDM4MS4yYy00Mi40IDQ2LjItMTIwIDQ2LjYtMTYyLjQgMC02OC03My42LTE5LjgtMTk2LjEgODEuMi0xOTYuMSAxMy4zIDAgMjYuNiAyLjEgMzkuMSA2LjctNC4zIDguNC03LjMgMTcuNi04LjQgMjcuMS05LjctNC4xLTIwLjItNi0zMC43LTYtNDguOCAwLTg0LjYgNDEuNy04NC42IDg4LjkgMCA0MyAyOC41IDc4LjcgNjkuNSA4NS45IDYxLjUtMjQgNzIuOS0xMTcuNiA3Mi45LTE3NSAwLTcuMyAwLTE0LjgtLjYtMjIuMS0xMS4yLTMyLjktMjYuNi02NC42LTQ0LjItOTQuNSAyNy4xIDE4LjMgNDEuOSA2Mi41IDQ0LjIgOTQuMXYuNGM3LjcgMjIuNSAxMS44IDQ2LjIgMTEuOCA3MCAwIDU0LjEtMjEuOSA5OS02OC4zIDEyOC4ybC0yLjQuMmM1MCAxIDg2LjItMzguNiA4Ni4yLTg3LjIgMC0xMi4yLTIuMS0yNC4zLTYuOS0zNS43IDkuNS0xLjkgMTguNS01LjYgMjYuNC0xMC41IDE1LjMgMzYuNiAxMi42IDg3LjMtMjIuOCAxMjUuNnpNMzA5IDIzMy43Yy0xMy4zIDAtMjUuMS03LjEtMzQuNC0xNi4xIDIxLjktMTIgNDkuNi0zMC43IDYyLjMtNTMgMS41LTMgNC4xLTguNiA0LjUtMTItMTIuNSAyNy45LTQ0LjIgNDkuOC03My45IDU2LjctNC43LTcuMy03LjUtMTUuNS03LjUtMjQuMyAwLTEwLjMgNS4yLTI0LjEgMTIuOS0zMS42IDIxLjYtMjAuNSA1My04LjUgNzIuNC01MCAzMi41IDQ2LjIgMTMuMSAxMzAuMy0zNi4zIDEzMC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc2LjIgMTUwLjV2LjdDMjU4LjMgOTguNiAyMzMuNiA0Ny44IDIwNS40IDBjNDMuMyAyOS4yIDY3IDEwMCA3MC44IDE1MC41em0zMi43IDEyMS43YzcuNiAxOC4yIDExIDM3LjUgMTEgNTcgMCA3Ny43LTU3LjggMTQxLTEzNy44IDEzOS40bDMuOC0uM2M3NC4yLTQ2LjcgMTA5LjMtMTE4LjYgMTA5LjMtMjA1LjEgMC0zOC4xLTYuNS03NS45LTE4LjktMTEyIDEgMTEuNyAxIDIzLjcgMSAzNS40IDAgOTEuOC0xOC4xIDI0MS42LTExNi42IDI4MEM5NSA0NTUuMiA0OS40IDM5OCA0OS40IDMyOS4yYzAtNzUuNiA1Ny40LTE0Mi4zIDEzNS40LTE0Mi4zIDE2LjggMCAzMy43IDMuMSA0OS4xIDkuNiAxLjctMTUuMSA2LjUtMjkuOSAxMy40LTQzLjMtMTkuOS03LjItNDEuMi0xMC43LTYyLjUtMTAuNy0xNjEuNSAwLTIzOC43IDE5NS45LTEyOS45IDMxMy43IDY3LjkgNzQuNiAxOTIgNzMuOSAyNTkuOCAwIDU2LjYtNjEuMyA2MC45LTE0Mi40IDM2LjQtMjAxLTEyLjcgOC0yNy4xIDEzLjktNDIuMiAxN3pNNDE4LjEgMTEuN2MtMzEgNjYuNS04MS4zIDQ3LjItMTE1LjggODAuMS0xMi40IDEyLTIwLjYgMzQtMjAuNiA1MC41IDAgMTQuMSA0LjUgMjcuMSAxMiAzOC44IDQ3LjQtMTEgOTguMy00NiAxMTguMi05MC43LS43IDUuNS00LjggMTQuNC03LjIgMTkuMi0yMC4zIDM1LjctNjQuNiA2NS42LTk5LjcgODQuOSAxNC44IDE0LjQgMzMuNyAyNS44IDU1IDI1LjggNzkgMCAxMTAuMS0xMzQuNiA1OC4xLTIwOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWJlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDQgNDkuOUM0MzEuMyAzOC4yIDM3OS45LjkgMjY1LjMuNGMwIDAtMTM1LjEtOC4xLTIwMC45IDUyLjNDMjcuOCA4OS4zIDE0LjkgMTQzIDEzLjUgMjA5LjVjLTEuNCA2Ni41LTMuMSAxOTEuMSAxMTcgMjI0LjloLjFsLS4xIDUxLjZzLS44IDIwLjkgMTMgMjUuMWMxNi42IDUuMiAyNi40LTEwLjcgNDIuMy0yNy44IDguNy05LjQgMjAuNy0yMy4yIDI5LjgtMzMuNyA4Mi4yIDYuOSAxNDUuMy04LjkgMTUyLjUtMTEuMiAxNi42LTUuNCAxMTAuNS0xNy40IDEyNS43LTE0MiAxNS44LTEyOC42LTcuNi0yMDkuOC00OS44LTI0Ni41ek00NTcuOSAyODdjLTEyLjkgMTA0LTg5IDExMC42LTEwMyAxMTUuMS02IDEuOS02MS41IDE1LjctMTMxLjIgMTEuMiAwIDAtNTIgNjIuNy02OC4yIDc5LTUuMyA1LjMtMTEuMSA0LjgtMTEtNS43IDAtNi45LjQtODUuNy40LTg1LjctLjEgMC0uMSAwIDAgMC0xMDEuOC0yOC4yLTk1LjgtMTM0LjMtOTQuNy0xODkuOCAxLjEtNTUuNSAxMS42LTEwMSA0Mi42LTEzMS42IDU1LjctNTAuNSAxNzAuNC00MyAxNzAuNC00MyA5Ni45LjQgMTQzLjMgMjkuNiAxNTQuMSAzOS40IDM1LjcgMzAuNiA1My45IDEwMy44IDQwLjYgMjExLjF6bS0xMzktODAuOGMuNCA4LjYtMTIuNSA5LjItMTIuOS42LTEuMS0yMi0xMS40LTMyLjctMzIuNi0zMy45LTguNi0uNS03LjgtMTMuNC43LTEyLjkgMjcuOSAxLjUgNDMuNCAxNy41IDQ0LjggNDYuMnptMjAuMyAxMS4zYzEtNDIuNC0yNS41LTc1LjYtNzUuOC03OS4zLTguNS0uNi03LjYtMTMuNS45LTEyLjkgNTggNC4yIDg4LjkgNDQuMSA4Ny44IDkyLjUtLjEgOC42LTEzLjEgOC4yLTEyLjktLjN6bTQ3IDEzLjRjLjEgOC42LTEyLjkgOC43LTEyLjkuMS0uNi04MS41LTU0LjktMTI1LjktMTIwLjgtMTI2LjQtOC41LS4xLTguNS0xMi45IDAtMTIuOSA3My43LjUgMTMzIDUxLjQgMTMzLjcgMTM5LjJ6TTM3NC45IDMyOXYuMmMtMTAuOCAxOS0zMSA0MC01MS44IDMzLjNsLS4yLS4zYy0yMS4xLTUuOS03MC44LTMxLjUtMTAyLjItNTYuNS0xNi4yLTEyLjgtMzEtMjcuOS00Mi40LTQyLjQtMTAuMy0xMi45LTIwLjctMjguMi0zMC44LTQ2LjYtMjEuMy0zOC41LTI2LTU1LjctMjYtNTUuNy02LjctMjAuOCAxNC4yLTQxIDMzLjMtNTEuOGguMmM5LjItNC44IDE4LTMuMiAyMy45IDMuOSAwIDAgMTIuNCAxNC44IDE3LjcgMjIuMSA1IDYuOCAxMS43IDE3LjcgMTUuMiAyMy44IDYuMSAxMC45IDIuMyAyMi0zLjcgMjYuNmwtMTIgOS42Yy02LjEgNC45LTUuMyAxNC01LjMgMTRzMTcuOCA2Ny4zIDg0LjMgODQuM2MwIDAgOS4xLjggMTQtNS4zbDkuNi0xMmM0LjYtNiAxNS43LTkuOCAyNi42LTMuNyAxNC43IDguMyAzMy40IDIxLjIgNDUuOCAzMi45IDcgNS43IDguNiAxNC40IDMuOCAyMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaW1lb1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMTYuMiAxNDkuNmMtMS40IDMxLjEtMjMuMiA3My44LTY1LjMgMTI3LjktNDMuNSA1Ni41LTgwLjMgODQuOC0xMTAuNCA4NC44LTE4LjcgMC0zNC40LTE3LjItNDcuMy01MS42LTI1LjItOTIuMy0zNS45LTE0Ni40LTU2LjctMTQ2LjQtMi40IDAtMTAuOCA1LTI1LjEgMTUuMUw2NCAxOTJjMzYuOS0zMi40IDcyLjEtNjguNCA5NC4xLTcwLjQgMjQuOS0yLjQgNDAuMiAxNC42IDQ2IDUxLjEgMjAuNSAxMjkuNiAyOS42IDE0OS4yIDY2LjggOTAuNSAxMy40LTIxLjIgMjAuNi0zNy4yIDIxLjUtNDguMyAzLjQtMzIuOC0yNS42LTMwLjYtNDUuMi0yMi4yIDE1LjctNTEuNSA0NS44LTc2LjUgOTAuMS03NS4xIDMyLjkgMSA0OC40IDIyLjQgNDYuNSA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmltZW9WIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ny44IDE1My42Yy0yIDQzLjYtMzIuNCAxMDMuMy05MS40IDE3OS4xLTYwLjkgNzkuMi0xMTIuNCAxMTguOC0xNTQuNiAxMTguOC0yNi4xIDAtNDguMi0yNC4xLTY2LjMtNzIuM0MxMDAuMyAyNTAgODUuMyAxNzQuMyA1Ni4yIDE3NC4zYy0zLjQgMC0xNS4xIDcuMS0zNS4yIDIxLjFMMCAxNjguMmM1MS42LTQ1LjMgMTAwLjktOTUuNyAxMzEuOC05OC41IDM0LjktMy40IDU2LjMgMjAuNSA2NC40IDcxLjUgMjguNyAxODEuNSA0MS40IDIwOC45IDkzLjYgMTI2LjcgMTguNy0yOS42IDI4LjgtNTIuMSAzMC4yLTY3LjYgNC44LTQ1LjktMzUuOC00Mi44LTYzLjMtMzEgMjItNzIuMSA2NC4xLTEwNy4xIDEyNi4yLTEwNS4xIDQ1LjggMS4yIDY3LjUgMzEuMSA2NC45IDg5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbWVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMy4yIDMySDQ0LjhDMjAuMSAzMiAwIDUyLjEgMCA3Ni44djM1OC40QzAgNDU5LjkgMjAuMSA0ODAgNDQuOCA0ODBoMzU4LjRjMjQuNyAwIDQ0LjgtMjAuMSA0NC44LTQ0LjhWNzYuOGMwLTI0LjctMjAuMS00NC44LTQ0LjgtNDQuOHpNMzc3IDE4MC44Yy0xLjQgMzEuNS0yMy40IDc0LjctNjYgMTI5LjQtNDQgNTcuMi04MS4zIDg1LjgtMTExLjcgODUuOC0xOC45IDAtMzQuOC0xNy40LTQ3LjktNTIuMy0yNS41LTkzLjMtMzYuNC0xNDgtNTcuNC0xNDgtMi40IDAtMTAuOSA1LjEtMjUuNCAxNS4ybC0xNS4yLTE5LjZjMzcuMy0zMi44IDcyLjktNjkuMiA5NS4yLTcxLjIgMjUuMi0yLjQgNDAuNyAxNC44IDQ2LjUgNTEuNyAyMC43IDEzMS4yIDI5LjkgMTUxIDY3LjYgOTEuNiAxMy41LTIxLjQgMjAuOC0zNy43IDIxLjgtNDguOSAzLjUtMzMuMi0yNS45LTMwLjktNDUuOC0yMi40IDE1LjktNTIuMSA0Ni4zLTc3LjQgOTEuMi03NiAzMy4zLjkgNDkgMjIuNSA0Ny4xIDY0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDI1NC43djUyLjFjLTE4LjQgNC4yLTM2LjkgNi4xLTUyLjEgNi4xLTM2LjkgNzcuNC0xMDMgMTQzLjgtMTI1LjEgMTU2LjItMTQgNy45LTI3LjEgOC40LTQyLjctLjhDMTM3IDQ1MiAzNC4yIDM2Ny43IDAgMTAyLjdoNzQuNUM5My4yIDI2MS44IDEzOSAzNDMuNCAxODkuMyA0MDQuNWMyNy45LTI3LjkgNTQuOC02NS4xIDc1LjYtMTA2LjktNDkuOC0yNS4zLTgwLjEtODAuOS04MC4xLTE0NS42IDAtNjUuNiAzNy43LTExNS4xIDEwMi4yLTExNS4xIDExNC45IDAgMTA2LjIgMTI3LjkgODEuNiAxODEuNSAwIDAtNDYuNCA5LjItNjMuNS0yMC41IDMuNC0xMS4zIDguMi0zMC44IDguMi00OC41IDAtMzEuMy0xMS4zLTQ2LjYtMjguNC00Ni42LTE4LjIgMC0zMC44IDE3LjEtMzAuOCA1MCAuMSA3OS4yIDU5LjQgMTE4LjcgMTI5LjkgMTAxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NSAxMTcuN2MzLjctMTIuNSAwLTIxLjctMTcuOC0yMS43aC01OC45Yy0xNSAwLTIxLjkgNy45LTI1LjYgMTYuNyAwIDAtMzAgNzMuMS03Mi40IDEyMC41LTEzLjcgMTMuNy0yMCAxOC4xLTI3LjUgMTguMS0zLjcgMC05LjQtNC40LTkuNC0xNi45VjExNy43YzAtMTUtNC4yLTIxLjctMTYuNi0yMS43aC05Mi42Yy05LjQgMC0xNSA3LTE1IDEzLjUgMCAxNC4yIDIxLjIgMTcuNSAyMy40IDU3LjV2ODYuOGMwIDE5LTMuNCAyMi41LTEwLjkgMjIuNS0yMCAwLTY4LjYtNzMuNC05Ny40LTE1Ny40LTUuOC0xNi4zLTExLjUtMjIuOS0yNi42LTIyLjlIMzguOGMtMTYuOCAwLTIwLjIgNy45LTIwLjIgMTYuNyAwIDE1LjYgMjAgOTMuMSA5My4xIDE5NS41QzE2MC40IDM3OC4xIDIyOSA0MTYgMjkxLjQgNDE2YzM3LjUgMCA0Mi4xLTguNCA0Mi4xLTIyLjkgMC02Ni44LTMuNC03My4xIDE1LjQtNzMuMSA4LjcgMCAyMy43IDQuNCA1OC43IDM4LjEgNDAgNDAgNDYuNiA1Ny45IDY5IDU3LjloNTguOWMxNi44IDAgMjUuMy04LjQgMjAuNC0yNS0xMS4yLTM0LjktODYuOS0xMDYuNy05MC4zLTExMS41LTguNy0xMS4yLTYuMi0xNi4yIDAtMjYuMi4xLS4xIDcyLTEwMS4zIDc5LjQtMTM1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZudiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQuOSAzNTJjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40TDIuNiAyMTAuMVMtNy44IDE5MiAxMyAxOTJoMzIuOGMxMC40IDAgMTMuMiA4LjcgMTguOCAxOC4xbDM2LjcgNzQuNXM1LjIgMTMuMSAyMS4xIDEzLjEgMjEuMS0xMy4xIDIxLjEtMTMuMWwzNi43LTc0LjVjNS42LTkuNSA4LjQtMTguMSAxOC44LTE4LjFoMzIuOGMyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOCAxMTEuNVMxNzQuMiAzNTIgMTQwIDM1MmgtMzUuMXptMzk1IDBjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40bC01NS45LTExMS41UzM4Ny4yIDE5MiA0MDggMTkyaDMyLjhjMTAuNCAwIDEzLjIgOC43IDE4LjggMTguMWwzNi43IDc0LjVzNS4yIDEzLjEgMjEuMSAxMy4xIDIxLjEtMTMuMSAyMS4xLTEzLjFsMzYuOC03NC41YzUuNi05LjUgOC40LTE4LjEgMTguOC0xOC4xSDYyN2MyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOSAxMTEuNVM1NjkuMyAzNTIgNTM1LjEgMzUyaC0zNS4yek0zMzcuNiAxOTJjMzQuMSAwIDQ2LjQgMzAuNCA0Ni40IDMwLjRsNTUuOSAxMTEuNXMxMC40IDE4LjEtMTAuNCAxOC4xaC0zMi44Yy0xMC40IDAtMTMuMi04LjctMTguOC0xOC4xbC0zNi43LTc0LjVzLTUuMi0xMy4xLTIxLjEtMTMuMWMtMTUuOSAwLTIxLjEgMTMuMS0yMS4xIDEzLjFsLTM2LjcgNzQuNWMtNS42IDkuNC04LjQgMTguMS0xOC44IDE4LjFoLTMyLjljLTIwLjggMC0xMC40LTE4LjEtMTAuNC0xOC4xbDU1LjktMTExLjVzMTIuMi0zMC40IDQ2LjQtMzAuNGgzNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWdWVqcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTYuOSA2NC4zSDI4MGwtNTYgODguNi00OC04OC42SDBMMjI0IDQ0OCA0NDggNjQuM2gtOTEuMXptLTMwMS4yIDMyaDUzLjhMMjI0IDI5NC41IDMzOC40IDk2LjNoNTMuOEwyMjQgMzg0LjUgNTUuNyA5Ni4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXRjaG1hbk1vbml0b3JpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDE2QzEyMy40NTIsMTYsMTYsMTIzLjQ1MiwxNiwyNTZTMTIzLjQ1Miw0OTYsMjU2LDQ5Niw0OTYsMzg4LjU0OCw0OTYsMjU2LDM4OC41NDgsMTYsMjU2LDE2Wk0xMjEuNjksNDI5LjEyMkM3MC4wNTYsMzg4Ljk3MiwzNi43NDEsMzI2LjMyMiwzNi43NDEsMjU2YTIxOC41MTksMjE4LjUxOSwwLDAsMSw5LjU4Ny02NC4xMjJsMTAyLjktMTcuODk1LS4xMjEsMTAuOTY3LTEzLjk0MywyLjAxM3MtLjE0NCwxMi41LS4xNDQsMTkuNTQ5YTEyLjc3OCwxMi43NzgsMCwwLDAsNC44ODcsMTAuMzQ5bDkuNDY4LDcuNFptMTA1LjY5Mi0yODMuMjcsOC40OC03LjYxOHM2LjkzNC01LjM4LS4xNDMtOS4zNDRjLTcuMTg4LTQuMDI0LTM5LjUzLTM0LjUtMzkuNTMtMzQuNS01LjM0OC01LjQ3Ny04LjI1Ny03LjM0Ny0xNS40NiwwLDAsMC0zMi4zNDIsMzAuNDc0LTM5LjUyOSwzNC41LTcuMDc4LDMuOTY0LS4xNDQsOS4zNDQtLjE0NCw5LjM0NGw4LjQ4MSw3LjYxOC0uMDQ4LDQuMzY5TDc1Ljk4MiwxMzEuMDQ1YzM5LjY0NC01Ni45MzgsMTA1LjUzMi05NC4zLDE4MC4wMTgtOTQuM0EyMTguNzU0LDIxOC43NTQsMCwwLDEsNDIwLjkzNCwxMTEuNzdsLTE5My41MTIsMzcuN1ptMzQuMDYzLDMyOS4yNjktMzMuOS0yNTAuODU3LDkuNDY3LTcuNGExMi43NzgsMTIuNzc4LDAsMCwwLDQuODg4LTEwLjM0OWMwLTcuMDQ0LS4xNDQtMTkuNTQ5LS4xNDQtMTkuNTQ5bC0xMy45NDMtMi4wMTMtLjExNi0xMC40NzQsMjQxLjcxMSwzMS4zOTFBMjE4Ljg3MiwyMTguODcyLDAsMCwxLDQ3NS4yNTksMjU2QzQ3NS4yNTksMzc1LjA3NCwzNzkuODMxLDQ3Mi4yMTIsMjYxLjQ0NSw0NzUuMTIxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4xNyAyMDEuNjdDNTE2LjY5IDI4Ny41MyA0NzEuMjMgMzY5LjU5IDM4OSA0MDkuOGMxMyAzNC4xLTEyLjQgNzAuMi00OC4zMiA3MC4yYTUxLjY4IDUxLjY4IDAgMCAxLTUxLjU3LTQ5Yy02LjQ0LjE5LTY0LjIgMC03Ni4zMy0uNjRBNTEuNjkgNTEuNjkgMCAwIDEgMTU5IDQ3OS45MmMtMzMuODYtMS4zNi01Ny45NS0zNC44NC00Ny02Ny45Mi0zNy4yMS0xMy4xMS03Mi41NC0zNC44Ny05OS42Mi03MC44LTEzLTE3LjI4LS40OC00MS44IDIwLjg0LTQxLjggNDYuMzEgMCAzMi4yMi01NC4xNyA0My4xNS0xMTAuMjZDOTQuOCA5NS4yIDE5My4xMiAzMiAyODguMDkgMzJjMTAyLjQ4IDAgMTk3LjE1IDcwLjY3IDIxNC4wOCAxNjkuNjd6TTM3My41MSAzODguMjhjNDItMTkuMTggODEuMzMtNTYuNzEgOTYuMjktMTAyLjE0IDQwLjQ4LTEyMy4wOS02NC4xNS0yMjgtMTgxLjcxLTIyOC04My40NSAwLTE3MC4zMiA1NS40Mi0xODYuMDcgMTM2LTkuNTMgNDguOTEgNSAxMzEuMzUtNjguNzUgMTMxLjM1QzU4LjIxIDM1OC42IDkxLjYgMzc4LjExIDEyNyAzODkuNTRjMjQuNjYtMjEuOCA2My44Ny0xNS40NyA3OS44MyAxNC4zNCAxNC4yMiAxIDc5LjE5IDEuMTggODcuOS44MmE1MS42OSA1MS42OSAwIDAgMSA3OC43OC0xNi40MnpNMjA1LjEyIDE4Ny4xM2MwLTM0Ljc0IDUwLjg0LTM0Ljc1IDUwLjg0IDBzLTUwLjg0IDM0Ljc0LTUwLjg0IDB6bTExNi41NyAwYzAtMzQuNzQgNTAuODYtMzQuNzUgNTAuODYgMHMtNTAuODYgMzQuNzUtNTAuODYgMHptLTEyMi42MSA3MC42OWMtMy40NC0xNi45NCAyMi4xOC0yMi4xOCAyNS42Mi01LjIxbC4wNi4yOGM0LjE0IDIxLjQyIDI5Ljg1IDQ0IDY0LjEyIDQzLjA3IDM1LjY4LS45NCA1OS4yNS0yMi4yMSA2NC4xMS00Mi43NyA0LjQ2LTE2LjA1IDI4LjYtMTAuMzYgMjUuNDcgNi01LjIzIDIyLjE4LTMxLjIxIDYyLTkxLjQ2IDYyLjktNDIuNTUgMC04MC44OC0yNy44NC04Ny45LTY0LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWVibHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI1LjA5IDY1LjgzYy0zOS44OCAwLTczLjI4IDI1LjczLTgzLjY2IDY0LjMzLTE4LjE2LTU4LjA2LTY1LjUtNjQuMzMtODQuOTUtNjQuMzMtMTkuNzggMC02Ni44IDYuMjgtODUuMjggNjQuMzMtMTAuMzgtMzguNi00My40NS02NC4zMy04My42Ni02NC4zM0MzOC41OSA2NS44MyAwIDk5LjcyIDAgMTQzLjAzYzAgMjguOTYgNC4xOCAzMy4yNyA3Ny4xNyAyMzMuNDggMjIuMzcgNjAuNTcgNjcuNzcgNjkuMzUgOTIuNzQgNjkuMzUgMzkuMjMgMCA3MC4wNC0xOS40NiA4NS45My01My45OCAxNS44OSAzNC44MyA0Ni42OSA1NC4yOSA4NS45MyA1NC4yOSAyNC45NyAwIDcwLjM2LTkuMSA5Mi43NC02OS42NyA3Ni41NS0yMDguNjUgNzcuNS0yMDUuNTggNzcuNS0yMjcuMi42My00OC4zMi0zNi4wMS04My40Ny04Ni45Mi04My40N3ptMjYuMzQgMTE0LjgxbC02NS41NyAxNzYuNDRjLTcuOTIgMjEuNDktMjEuMjIgMzcuMjItNDYuMjQgMzcuMjItMjMuNDQgMC0zNy4zOC0xMi40MS00NC4wMy0zMy45bC0zOS4yOC0xMTcuNDJoLS45NUwyMTYuMDggMzYwLjRjLTYuOTYgMjEuNS0yMC45IDMzLjYtNDQuMDIgMzMuNi0yNS4wMiAwLTM4LjMzLTE1Ljc0LTQ2LjI0LTM3LjIyTDYwLjg4IDE4MS41NWMtNS4zOC0xNC44My03LjkyLTIzLjkxLTcuOTItMzQuNSAwLTE2LjM0IDE1Ljg0LTI5LjM2IDM4LjMzLTI5LjM2IDE4LjY5IDAgMzEuOTkgMTEuOCAzNi4xMSAyOS4wNWw0NC4wMyAxMzkuODJoLjk1bDQ0LjY2LTEzNi43OWM2LjAyLTE5LjY3IDE2LjQ3LTMyLjA4IDM4Ljk2LTMyLjA4czMyLjk0IDEyLjExIDM4Ljk2IDMyLjA4bDQ0LjY2IDEzNi43OWguOTVsNDQuMDMtMTM5LjgyYzQuMTItMTcuMjUgMTcuNDItMjkuMDUgMzYuMTEtMjkuMDUgMjIuMTcgMCAzOC4zMyAxMy4zMiAzOC4zMyAzNS43MS0uMzIgNy44Ny00LjEyIDE2LjA0LTcuNjEgMjcuMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNyAxNzcuNmM3LjYtMjQtMTMuNC00Ni44LTM3LjQtNDEuNy0yMiA0LjgtMjguOC0yOC4xLTcuMS0zMi44IDUwLjEtMTAuOSA5Mi4zIDM3LjEgNzYuNSA4NC44LTYuOCAyMS4yLTM4LjggMTAuOC0zMi0xMC4zek0yMTQuOCA0NDYuN0MxMDguNSA0NDYuNyAwIDM5NS4zIDAgMzEwLjRjMC00NC4zIDI4LTk1LjQgNzYuMy0xNDMuN0MxNzYgNjcgMjc5LjUgNjUuOCAyNDkuOSAxNjFjLTQgMTMuMSAxMi4zIDUuNyAxMi4zIDYgNzkuNS0zMy42IDE0MC41LTE2LjggMTE0IDUxLjQtMy43IDkuNCAxLjEgMTAuOSA4LjMgMTMuMSAxMzUuNyA0Mi4zIDM0LjggMjE1LjItMTY5LjcgMjE1LjJ6bTE0My43LTE0Ni4zYy01LjQtNTUuNy03OC41LTk0LTE2My40LTg1LjctODQuOCA4LjYtMTQ4LjggNjAuMy0xNDMuNCAxMTZzNzguNSA5NCAxNjMuNCA4NS43Yzg0LjgtOC42IDE0OC44LTYwLjMgMTQzLjQtMTE2ek0zNDcuOSAzNS4xYy0yNS45IDUuNi0xNi44IDQzLjcgOC4zIDM4LjMgNzIuMy0xNS4yIDEzNC44IDUyLjggMTExLjcgMTI0LTcuNCAyNC4yIDI5LjEgMzcgMzcuNCAxMiAzMS45LTk5LjgtNTUuMS0xOTUuOS0xNTcuNC0xNzQuM3ptLTc4LjUgMzExYy0xNy4xIDM4LjgtNjYuOCA2MC0xMDkuMSA0Ni4zLTQwLjgtMTMuMS01OC01My40LTQwLjMtODkuNyAxNy43LTM1LjQgNjMuMS01NS40IDEwMy40LTQ1LjEgNDIgMTAuOCA2My4xIDUwLjIgNDYgODguNXptLTg2LjMtMzBjLTEyLjktNS40LTMwIC4zLTM4IDEyLjktOC4zIDEyLjktNC4zIDI4IDguNiAzNCAxMy4xIDYgMzAuOC4zIDM5LjEtMTIuOSA4LTEzLjEgMy43LTI4LjMtOS43LTM0em0zMi42LTEzLjRjLTUuMS0xLjctMTEuNC42LTE0LjMgNS40LTIuOSA1LjEtMS40IDEwLjYgMy43IDEyLjkgNS4xIDIgMTEuNy0uMyAxNC42LTUuNCAyLjgtNS4yIDEuMS0xMC45LTQtMTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VpeGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NS4yIDE2Ny42YzYuNCAwIDEyLjYuMyAxOC44IDEuMUMzODcuNCA5MC4zIDMwMy4zIDMyIDIwNy43IDMyIDEwMC41IDMyIDEzIDEwNC44IDEzIDE5Ny40YzAgNTMuNCAyOS4zIDk3LjUgNzcuOSAxMzEuNmwtMTkuMyA1OC42IDY4LTM0LjFjMjQuNCA0LjggNDMuOCA5LjcgNjguMiA5LjcgNi4yIDAgMTIuMS0uMyAxOC4zLS44LTQtMTIuOS02LjItMjYuNi02LjItNDAuOC0uMS04NC45IDcyLjktMTU0IDE2NS4zLTE1NHptLTEwNC41LTUyLjljMTQuNSAwIDI0LjIgOS43IDI0LjIgMjQuNCAwIDE0LjUtOS43IDI0LjItMjQuMiAyNC4yLTE0LjggMC0yOS4zLTkuNy0yOS4zLTI0LjIuMS0xNC43IDE0LjYtMjQuNCAyOS4zLTI0LjR6bS0xMzYuNCA0OC42Yy0xNC41IDAtMjkuMy05LjctMjkuMy0yNC4yIDAtMTQuOCAxNC44LTI0LjQgMjkuMy0yNC40IDE0LjggMCAyNC40IDkuNyAyNC40IDI0LjQgMCAxNC42LTkuNiAyNC4yLTI0LjQgMjQuMnpNNTYzIDMxOS40YzAtNzcuOS03Ny45LTE0MS4zLTE2NS40LTE0MS4zLTkyLjcgMC0xNjUuNCA2My40LTE2NS40IDE0MS4zUzMwNSA0NjAuNyAzOTcuNiA0NjAuN2MxOS4zIDAgMzguOS01LjEgNTguNi05LjlsNTMuNCAyOS4zLTE0LjgtNDguNkM1MzQgNDAyLjEgNTYzIDM2My4yIDU2MyAzMTkuNHptLTIxOS4xLTI0LjVjLTkuNyAwLTE5LjMtOS43LTE5LjMtMTkuNiAwLTkuNyA5LjctMTkuMyAxOS4zLTE5LjMgMTQuOCAwIDI0LjQgOS43IDI0LjQgMTkuMyAwIDEwLTkuNyAxOS42LTI0LjQgMTkuNnptMTA3LjEgMGMtOS43IDAtMTkuMy05LjctMTkuMy0xOS42IDAtOS43IDkuNy0xOS4zIDE5LjMtMTkuMyAxNC41IDAgMjQuNCA5LjcgMjQuNCAxOS4zLjEgMTAtOS45IDE5LjYtMjQuNCAxOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGF0c2FwcFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTIyLjhjLTcyLjcgMC0xMzEuOCA1OS4xLTEzMS45IDEzMS44IDAgMjQuOSA3IDQ5LjIgMjAuMiA3MC4xbDMuMSA1LTEzLjMgNDguNiA0OS45LTEzLjEgNC44IDIuOWMyMC4yIDEyIDQzLjQgMTguNCA2Ny4xIDE4LjRoLjFjNzIuNiAwIDEzMy4zLTU5LjEgMTMzLjMtMTMxLjggMC0zNS4yLTE1LjItNjguMy00MC4xLTkzLjItMjUtMjUtNTgtMzguNy05My4yLTM4Ljd6bTc3LjUgMTg4LjRjLTMuMyA5LjMtMTkuMSAxNy43LTI2LjcgMTguOC0xMi42IDEuOS0yMi40LjktNDcuNS05LjktMzkuNy0xNy4yLTY1LjctNTcuMi02Ny43LTU5LjgtMi0yLjYtMTYuMi0yMS41LTE2LjItNDFzMTAuMi0yOS4xIDEzLjktMzMuMWMzLjYtNCA3LjktNSAxMC42LTUgMi42IDAgNS4zIDAgNy42LjEgMi40LjEgNS43LS45IDguOSA2LjggMy4zIDcuOSAxMS4yIDI3LjQgMTIuMiAyOS40czEuNyA0LjMuMyA2LjljLTcuNiAxNS4yLTE1LjcgMTQuNi0xMS42IDIxLjYgMTUuMyAyNi4zIDMwLjYgMzUuNCA1My45IDQ3LjEgNCAyIDYuMyAxLjcgOC42LTEgMi4zLTIuNiA5LjktMTEuNiAxMi41LTE1LjUgMi42LTQgNS4zLTMuMyA4LjktMiAzLjYgMS4zIDIzLjEgMTAuOSAyNy4xIDEyLjlzNi42IDMgNy42IDQuNmMuOSAxLjkuOSA5LjktMi40IDE5LjF6TTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIyMy45IDQxMy4yYy0yNi42IDAtNTIuNy02LjctNzUuOC0xOS4zTDY0IDQxNmwyMi41LTgyLjJjLTEzLjktMjQtMjEuMi01MS4zLTIxLjItNzkuM0M2NS40IDE2Ny4xIDEzNi41IDk2IDIyMy45IDk2YzQyLjQgMCA4Mi4yIDE2LjUgMTEyLjIgNDYuNSAyOS45IDMwIDQ3LjkgNjkuOCA0Ny45IDExMi4yIDAgODcuNC03Mi43IDE1OC41LTE2MC4xIDE1OC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGF0c2FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODAuOSA5Ny4xQzMzOSA1NS4xIDI4My4yIDMyIDIyMy45IDMyYy0xMjIuNCAwLTIyMiA5OS42LTIyMiAyMjIgMCAzOS4xIDEwLjIgNzcuMyAyOS42IDExMUwwIDQ4MGwxMTcuNy0zMC45YzMyLjQgMTcuNyA2OC45IDI3IDEwNi4xIDI3aC4xYzEyMi4zIDAgMjI0LjEtOTkuNiAyMjQuMS0yMjIgMC01OS4zLTI1LjItMTE1LTY3LjEtMTU3em0tMTU3IDM0MS42Yy0zMy4yIDAtNjUuNy04LjktOTQtMjUuN2wtNi43LTQtNjkuOCAxOC4zTDcyIDM1OS4ybC00LjQtN2MtMTguNS0yOS40LTI4LjItNjMuMy0yOC4yLTk4LjIgMC0xMDEuNyA4Mi44LTE4NC41IDE4NC42LTE4NC41IDQ5LjMgMCA5NS42IDE5LjIgMTMwLjQgNTQuMSAzNC44IDM0LjkgNTYuMiA4MS4yIDU2LjEgMTMwLjUgMCAxMDEuOC04NC45IDE4NC42LTE4Ni42IDE4NC42em0xMDEuMi0xMzguMmMtNS41LTIuOC0zMi44LTE2LjItMzcuOS0xOC01LjEtMS45LTguOC0yLjgtMTIuNSAyLjgtMy43IDUuNi0xNC4zIDE4LTE3LjYgMjEuOC0zLjIgMy43LTYuNSA0LjItMTIgMS40LTMyLjYtMTYuMy01NC0yOS4xLTc1LjUtNjYtNS43LTkuOCA1LjctOS4xIDE2LjMtMzAuMyAxLjgtMy43LjktNi45LS41LTkuNy0xLjQtMi44LTEyLjUtMzAuMS0xNy4xLTQxLjItNC41LTEwLjgtOS4xLTkuMy0xMi41LTkuNS0zLjItLjItNi45LS4yLTEwLjYtLjItMy43IDAtOS43IDEuNC0xNC44IDYuOS01LjEgNS42LTE5LjQgMTktMTkuNCA0Ni4zIDAgMjcuMyAxOS45IDUzLjcgMjIuNiA1Ny40IDIuOCAzLjcgMzkuMSA1OS43IDk0LjggODMuOCAzNS4yIDE1LjIgNDkgMTYuNSA2Ni42IDEzLjkgMTAuNy0xLjYgMzIuOC0xMy40IDM3LjQtMjYuNCA0LjYtMTMgNC42LTI0LjEgMy4yLTI2LjQtMS4zLTIuNS01LTMuOS0xMC41LTYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2htY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDE2MXYtMjEuM2wtMjguNS04LjgtMi4yLTEwLjQgMjAuMS0yMC43TDQyNyA4MC40bC0yOSA3LjUtNy4yLTcuNSA3LjUtMjguMi0xOS4xLTExLjYtMjEuMyAyMS0xMC43LTMuMi03LTI2LjRoLTIyLjZsLTYuMiAyNi40LTEyLjEgMy4yLTE5LjctMjEtMTkuNCAxMSA4LjEgMjcuNy04LjEgOC40LTI4LjUtNy41LTExIDE5LjEgMjAuNyAyMS0yLjkgMTAuNC0yOC41IDcuOC0uMyAyMS43IDI4LjggNy41IDIuNCAxMi4xLTIwLjEgMTkuOSAxMC40IDE4LjUgMjkuNi03LjUgNy4yIDguNi04LjEgMjYuOSAxOS45IDExLjYgMTkuNC0yMC40IDExLjYgMi45IDYuNyAyOC41IDIyLjYuMyA2LjctMjguOCAxMS42LTMuNSAyMC43IDIxLjYgMjAuNC0xMi4xLTguOC0yOCA3LjgtOC4xIDI4LjggOC44IDEwLjMtMjAuMS0yMC45LTE4LjggMi4yLTEyLjEgMjkuMS03em0tMTE5LjIgNDUuMmMtMzEuMyAwLTU2LjgtMjUuNC01Ni44LTU2LjhzMjUuNC01Ni44IDU2LjgtNTYuOCA1Ni44IDI1LjQgNTYuOCA1Ni44YzAgMzEuNS0yNS40IDU2LjgtNTYuOCA1Ni44em03Mi4zIDE2LjRsNDYuOSAxNC41VjI3N2wtNTUuMSAxMy40LTQuMSAyMi43IDM4LjkgMzUuMy0xOS4yIDM3LjktNTQtMTYuNy0xNC42IDE1LjIgMTYuNyA1Mi41LTM4LjMgMjIuNy0zOC45LTQwLjUtMjEuNyA2LjYtMTIuNiA1NC00Mi40LS41LTEyLjYtNTMuNi0yMS43LTUuNi0zNi40IDM4LjQtMzcuNC0yMS43IDE1LjItNTAuNS0xMy43LTE2LjEtNTUuNSAxNC4xLTE5LjctMzQuOCAzNy45LTM3LjQtNC44LTIyLjgtNTQtMTQuMS41LTQwLjlMNTQgMjE5LjlsNS43LTE5LjctMzguOS0zOS40TDQxLjUgMTI1bDUzLjYgMTQuMSAxNS4yLTE1LjctMTUuMi01MiAzNi40LTIwLjcgMzYuOCAzOS40TDE5MSA4NGwxMS42LTUySDI0NWwxMS42IDQ1LjlMMjM0IDcybC02LjMtMS43LTMuMyA1LjctMTEgMTkuMS0zLjMgNS42IDQuNiA0LjYgMTcuMiAxNy40LS4zIDEtMjMuOCA2LjUtNi4yIDEuNy0uMSA2LjQtLjIgMTIuOUMxNTMuOCAxNjEuNiAxMTggMjA0IDExOCAyNTQuN2MwIDU4LjMgNDcuMyAxMDUuNyAxMDUuNyAxMDUuNyA1MC41IDAgOTIuNy0zNS40IDEwMy4yLTgyLjhsMTMuMi4yIDYuOS4xIDEuNi02LjcgNS42LTI0IDEuOS0uNiAxNy4xIDE3LjggNC43IDQuOSA1LjgtMy40IDIwLjQtMTIuMSA1LjgtMy41LTItNi41LTYuOC0yMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaWtpcGVkaWFXIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCA1MS4ybC0uMyAxMi4yYy0yOC4xLjgtNDUgMTUuOC01NS44IDQwLjMtMjUgNTcuOC0xMDMuMyAyNDAtMTU1LjMgMzU4LjZINDE1bC04MS45LTE5My4xYy0zMi41IDYzLjYtNjguMyAxMzAtOTkuMiAxOTMuMS0uMy4zLTE1IDAtMTUtLjNDMTcyIDM1Mi4zIDEyMi44IDI0My40IDc1LjggMTMzLjQgNjQuNCAxMDYuNyAyNi40IDYzLjQuMiA2My43YzAtMy4xLS4zLTEwLS4zLTE0LjJoMTYxLjl2MTMuOWMtMTkuMiAxLjEtNTIuOCAxMy4zLTQzLjMgMzQuMiAyMS45IDQ5LjcgMTAzLjYgMjQwLjMgMTI1LjYgMjg4LjYgMTUtMjkuNyA1Ny44LTEwOS4yIDc1LjMtMTQyLjgtMTMuOS0yOC4zLTU4LjYtMTMzLjktNzIuOC0xNjAtOS43LTE3LjgtMzYuMS0xOS40LTU1LjgtMTkuN1Y0OS44bDE0Mi41LjN2MTMuMWMtMTkuNC42LTM4LjEgNy44LTI5LjQgMjYuMSAxOC45IDQwIDMwLjYgNjguMSA0OC4xIDEwNC43IDUuNi0xMC44IDM0LjctNjkuNCA0OC4xLTEwMC44IDguOS0yMC42LTMuOS0yOC42LTM4LjYtMjkuNC4zLTMuNiAwLTEwLjMuMy0xMy42IDQ0LjQtLjMgMTExLjEtLjMgMTIzLjEtLjZ2MTMuNmMtMjIuNS44LTQ1LjggMTIuOC01OC4xIDMxLjdsLTU5LjIgMTIyLjhjNi40IDE2LjEgNjMuMyAxNDIuOCA2OS4yIDE1Ni43TDU1OS4yIDkxLjhjLTguNi0yMy4xLTM2LjQtMjguMS00Ny4yLTI4LjNWNDkuNmwxMjcuOCAxLjEuMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTMuN2wxODMuNi0yNS4zdjE3Ny40SDBWOTMuN3ptMCAzMjQuNmwxODMuNiAyNS4zVjI2OC40SDB2MTQ5Ljl6bTIwMy44IDI4TDQ0OCA0ODBWMjY4LjRIMjAzLjh2MTc3Ljl6bTAtMzgwLjZ2MTgwLjFINDQ4VjMyTDIwMy44IDY1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTMuMzggMTMxLjY5YzAgMTMuMDMgMi4wOCAzMi42OS0yOC42OCA0My44My05LjUyIDMuNDUtMTUuOTUgOS42Ni0xNS45NSA5LjY2IDAtMzEgNC43Mi00Mi4yMiAxNy40LTQ4Ljg2IDkuNzUtNS4xMSAyNy4yMy00LjYzIDI3LjIzLTQuNjN6bS0xMTUuOCAzNS41NGwtMzQuMjQgMTMyLjY2LTI4LjQ4LTEwOC41N2MtNy42OS0zMS45OS0yMC44MS00OC41My00OC40My00OC41My0yNy4zNyAwLTQwLjY2IDE2LjE4LTQ4LjQzIDQ4LjUzTDg5LjUyIDI5OS44OSA1NS4yOCAxNjcuMjNDNDkuNzMgMTQwLjUxIDIzLjg2IDEyOC45NiAwIDEzMS45Nmw2NS41NyAyNDcuOTNzMjEuNjMgMS41NiAzMi40Ni0zLjk2YzE0LjIyLTcuMjUgMjAuOTgtMTIuODQgMjkuNTktNDYuNTcgNy42Ny0zMC4wNyAyOS4xMS0xMTguNDEgMzEuMTItMTI0LjcgNC43Ni0xNC45NCAxMS4wOS0xMy44MSAxNS40IDAgMS45NyA2LjMgMjMuNDUgOTQuNjMgMzEuMTIgMTI0LjcgOC42IDMzLjczIDE1LjM3IDM5LjMyIDI5LjU5IDQ2LjU3IDEwLjgyIDUuNTIgMzIuNDYgMy45NiAzMi40NiAzLjk2bDY1LjU3LTI0Ny45M2MtMjQuNDItMy4wNy00OS44MiA4LjkzLTU1LjMgMzUuMjd6bTExNS43OCA1LjIxcy00LjEgNi4zNC0xMy40NiAxMS41N2MtNi4wMSAzLjM2LTExLjc4IDUuNjQtMTcuOTcgOC42MS0xNS4xNCA3LjI2LTEzLjE4IDEzLjk1LTEzLjE4IDM1LjJ2MTUyLjA3czE2LjU1IDIuMDkgMjcuMzctMy40M2MxMy45My03LjEgMTcuMTMtMTMuOTUgMTcuMjYtNDQuNzhWMTgxLjQxbC0uMDIuMDF2LTguOTh6bTE2My40NCA4NC4wOEw2NDAgMTMyLjc4cy0zNS4xMS01Ljk4LTUyLjUgOS44NWMtMTMuMyAxMi4xLTI0LjQxIDI5LjU1LTU0LjE4IDcyLjQ3LS40Ny43My02LjI1IDEwLjU0LTEzLjA3IDAtMjkuMjktNDIuMjMtNDAuOC02MC4yOS01NC4xOC03Mi40Ny0xNy4zOS0xNS44My01Mi41LTkuODUtNTIuNS05Ljg1bDgzLjIgMTIzLjc0LTgyLjk3IDEyMy4zNnMzNi41NyA0LjYyIDUzLjk1LTExLjIxYzExLjQ5LTEwLjQ2IDE3LjU4LTIwLjM3IDUyLjUxLTcwLjcyIDYuODEtMTAuNTIgMTIuNTctLjc3IDEzLjA3IDAgMjkuNCA0Mi4zOCAzOS4yMyA1OC4wNiA1My4xNCA3MC43MiAxNy4zOSAxNS44MyA1My4zMiAxMS4yMSA1My4zMiAxMS4yMUw1NTYuOCAyNTYuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpemFyZHNPZlRoZUNvYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxOS4xOSAzNDUuNjljLTEuOSAxLjM4LTExLjA3IDguNDQtLjI2IDIzLjU3IDQuNjQgNi40MiAxNC4xMSAxMi43OSAyMS43MyA2LjU1IDYuNS00Ljg4IDcuMzUtMTIuOTIuMjYtMjMuMDQtNS40Ny03Ljc2LTE0LjI4LTEyLjg4LTIxLjczLTcuMDh6bTMzNi43NSA3NS45NGMtLjM0IDEuNy0uNTUgMS42Ny43OSAwIDIuMDktNC4xOSA0LjE5LTEwLjIxIDQuOTgtMTkuOSAzLjE0LTM4LjQ5LTQwLjMzLTcxLjQ5LTEwMS4zNC03OC4wMy01NC43My02LjAyLTEyNC4zOCA5LjE3LTE4OC44IDYwLjQ5bC0uMjYgMS41N2MyLjYyIDQuOTggNC45OCAxMC43NCAzLjQgMjEuMjFsLjc5LjI2YzYzLjg5LTU4LjQgMTMxLjE5LTc3LjI1IDE4NC4zNS03My44NSA1OC40IDMuNjcgMTAwLjAzIDM0LjA0IDEwMC4wMyA2OC4wOC0uMDEgOS45Ni0yLjYzIDE1LjcyLTMuOTQgMjAuMTd6TTM5Mi4yOCAyNDAuNDJjLjc5IDcuMDcgNC4xOSAxMC4yMSA5LjE3IDEwLjQ3IDUuNS4yNiA5LjQzLTIuNjIgMTAuNDctNi41NS43OS0zLjQgMi4wOS0yOS44NSAyLjA5LTI5Ljg1cy0xMS4yNiA2LjU1LTE0LjkzIDEwLjQ3Yy0zLjY2IDMuNjgtNy4zMyA4LjM5LTYuOCAxNS40NnptLTUwLjAyLTE1MS4xQzEzNy43NSA4OS4zMiAxMy4xIDIyNi44Ljc5IDI0MS4yYy0xLjA1LjUyLTEuMzEuNzkuNzkgMS4zMSA2MC40OSAxNi41IDE1NS44MSA4MS4xOCAxOTYuMTMgMjAyLjE2bDEuMDUuMjZjNTUuMjUtNjkuOTIgMTQwLjg4LTEyOC4wNSAyMzYuOTktMTI4LjA1IDgwLjkyIDAgMTMwLjE1IDQyLjE2IDEzMC4xNSA4MC4zOSAwIDE4LjMzLTYuNTUgMzMuNTItMjIuMjYgNDYuMzUgMCAuOTYtLjIuNzkuNzkuNzkgMTQuNjYtMTAuNzQgMjcuNS0yOC44IDI3LjUtNDguMTggMC0yMi43OC0xMi4wNS0zOC4yMy0xMi4wNS0zOC4yMyA3LjA3IDcuMDcgMTAuNzQgMTYuMjQgMTAuNzQgMTYuMjQgNS43Ni00MC44NSAyNi45Ny02Mi4zMiAyNi45Ny02Mi4zMi0yLjM2LTkuNjktNi44MS0xNy44MS02LjgxLTE3LjgxIDcuNTkgOC4xMiAxNC40IDI3LjUgMTQuNCA0MS4zNyAwIDEwLjQ3LTMuNCAyMi43OC0xMi41NyAzMS45NWwuMjYuNTJjOC4xMi00Ljk4IDE2LjUtMTYuNzYgMTYuNS0zNy45NyAwLTE1LjcxLTQuNzEtMjUuOTItNC43MS0yNS45MiA1Ljc2LTUuMjQgMTEuMjYtOS4xNyAxNS45Ny0xMS43OC43OSAzLjQgMi4wOSA5LjY5IDIuMzYgMTQuOTMgMCAxLjA1Ljc5IDEuODMgMS4wNSAwIC43OS01Ljc2LS4yNi0xNi4yNC0uMjYtMTYuNSA2LjAyLTMuMTQgOS42OS00LjQ1IDkuNjktNC40NUM2MTcuNzQgMTc2IDQ4OS40MyA4OS4zMiAzNDIuMjYgODkuMzJ6bS05OS4yNCAyODkuNjJjLTExLjA2IDguOTktMjQuMiA0LjA4LTMwLjY0LTQuMTktNy40NS05LjU4LTYuNzYtMjQuMDkgNC4xOS0zMi40NyAxNC44NS0xMS4zNSAyNy4wOC0uNDkgMzEuMTYgNS41LjI4LjM5IDEyLjEzIDE2LjU3LTQuNzEgMzEuMTZ6bTIuMDktMTM2LjQzbDkuNDMtMTcuODEgMTEuNzggNzAuOTYtMTIuNTcgNi4wMi0yNC42Mi0yOC44IDE0LjE0LTI2LjcxIDMuNjcgNC40NS0xLjgzLTguMTF6bTE4LjU5IDExNy41OGwtLjI2LS4yNmMyLjA1LTQuMS0yLjUtNi42MS0xNy41NC0zMS42OS0xLjMxLTIuMzYtMy4xNC0yLjg4LTQuNDUtMi42MmwtLjI2LS41MmM3Ljg2LTUuNzYgMTUuNDUtMTAuMjEgMjUuNC0xNS43MWwuNTIuMjZjMS4zMSAxLjgzIDIuMDkgMi44OCAzLjQgNC43MWwtLjI2LjUyYy0xLjA1LS4yNi0yLjM2LS43OS01LjI0LjI2LTIuMDkuNzktNy44NiAzLjY3LTEyLjMxIDcuNTl2MS4zMWMxLjU3IDIuMzYgMy45MyA2LjU1IDUuNzYgOS42OWguMjZjMTAuMDUtNi4yOCA3LjU2LTQuNTUgMTEuNTItNy44NmguMjZjLjUyIDEuODMuNTIgMS44MyAxLjgzIDUuNWwtLjI2LjI2Yy0zLjA2LjYxLTQuNjUuMzQtMTEuNTIgNS41di4yNmM5LjQ2IDE3LjAyIDExLjAxIDE2Ljc1IDEyLjU3IDE1Ljk3bC4yNi4yNmMtMi4zNCAxLjU5LTYuMjcgNC4yMS05LjY4IDYuNTd6bTU1LjI2LTMyLjQ3Yy0zLjE0IDEuNTctNi4wMiAyLjg4LTkuOTUgNC45OGwtLjI2LS4yNmMxLjI5LTIuNTkgMS4xNi0yLjcxLTExLjc4LTMyLjQ3bC0uMjYtLjI2Yy0uMTUgMC04LjkgMy42NS05Ljk1IDcuMzNoLS41MmwtMS4wNS01Ljc2LjI2LS41MmM3LjI5LTQuNTYgMjUuNTMtMTEuNjQgMjcuNzYtMTIuNTdsLjUyLjI2IDMuMTQgNC45OC0uMjYuNTJjLTMuNTMtMS43Ni03LjM1Ljc2LTEyLjMxIDIuNjJ2LjI2YzEyLjMxIDMyLjAxIDEyLjY3IDMwLjY0IDE0LjY2IDMwLjY0di4yNXptNDQuNzctMTYuNWMtNC4xOSAxLjA1LTUuMjQgMS4zMS05LjY5IDIuODhsLS4yNi0uMjYuNTItNC40NWMtMS4wNS0zLjQtMy4xNC0xMS41Mi0zLjY3LTEzLjYybC0uMjYtLjI2Yy0zLjQuNzktOC45IDIuNjItMTIuODMgMy45M2wtLjI2LjI2Yy43OSAyLjYyIDMuMTQgOS45NSA0LjE5IDEzLjg4Ljc5IDIuMzYgMS44MyAyLjg4IDIuODggMy4xNHYuNTJjLTMuNjcgMS4wNS03LjA3IDIuNjItMTAuMjEgMy45M2wtLjI2LS4yNmMxLjA1LTEuMzEgMS4wNS0yLjg4LjI2LTQuOTgtMS4wNS0zLjE0LTguMTItMjMuODMtOS4xNy0yNy4yMy0uNTItMS44My0xLjU3LTMuMTQtMi42Mi0zLjE0di0uNTJjMy4xNC0xLjA1IDYuMDItMi4wOSAxMC43NC0zLjRsLjI2LjI2LS4yNiA0LjcxYzEuMzEgMy45MyAyLjM2IDcuNTkgMy4xNCA5LjY5aC4yNmMzLjkzLTEuMzEgOS40My0yLjg4IDEyLjgzLTMuOTNsLjI2LS4yNi0yLjYyLTkuNDNjLS41Mi0xLjgzLTEuMDUtMy40LTIuNjItMy45M3YtLjI2YzQuNDUtMS4wNSA3LjMzLTEuODMgMTAuNzQtMi4zNmwuMjYuMjZjLTEuMDUgMS4zMS0xLjA1IDIuODgtLjUyIDQuNDUgMS41NyA2LjI4IDQuNzEgMjAuNDMgNi4yOCAyNi40NS41NCAyLjYyIDEuODUgMy40MSAyLjYzIDMuOTN6bTMyLjIxLTYuODFsLS4yNi4yNmMtNC43MS41Mi0xNC4xNCAyLjM2LTIyLjUyIDQuMTlsLS4yNi0uMjYuNzktNC4xOWMtMS41Ny03Ljg2LTMuNC0xOC41OS00Ljk4LTI2LjE5LS4yNi0xLjgzLS43OS0yLjg4LTIuNjItMy42N2wuNzktLjUyYzkuMTctMS41NyAyMC4xNi0yLjM2IDI0Ljg4LTIuNjJsLjI2LjI2Yy41MiAyLjM2Ljc5IDMuMTQgMS41NyA1LjVsLS4yNi4yNmMtMS4xNC0xLjE0LTMuMzQtMy4yLTE2LjI0LS43OWwtLjI2LjI2Yy4yNiAxLjU3IDEuMDUgNi41NSAxLjU3IDkuOTVsLjI2LjI2YzkuNTItMS42OCA0Ljc2LS4wNiAxMC43NC0yLjM2aC4yNmMwIDEuNTctLjI2IDEuODMtLjI2IDUuMjRoLS4yNmMtNC44MS0xLjAzLTIuMTUtLjktMTAuMjEgMGwtLjI2LjI2Yy4yNiAyLjA5IDEuNTcgOS40MyAyLjA5IDEyLjU3bC4yNi4yNmMxLjE1LjM4IDE0LjIxLS42NSAxNi4yNC00LjcxaC4yNmMtLjUzIDIuMzgtMS4wNSA0LjIxLTEuNTggNi4wNHptMTAuNzQtNDQuNTFjLTQuNDUgMi4zNi04LjEyIDIuODgtMTEgMi44OC0uMjUuMDItMTEuNDEgMS4wOS0xNy41NC05Ljk1LTYuNzQtMTAuNzktLjk4LTI1LjIgNS41LTMxLjY5IDguOC04LjEyIDIzLjM1LTEwLjEgMjguNTQtMTcuMDIgOC4wMy0xMC4zMy0xMy4wNC0yMi4zMS0yOS41OS01Ljc2bC0yLjYyLTIuODggNS4yNC0xNi4yNGMyNS41OS0xLjU3IDQ1LjItMy4wNCA1MC4wMiAxNi4yNC43OSAzLjE0IDAgOS40My0uMjYgMTIuMDUgMCAyLjYyLTEuODMgMTguODUtMi4wOSAyMy4wNC0uNTIgNC4xOS0uNzkgMTguMzMtLjc5IDIwLjY5LjI2IDIuMzYuNTIgNC4xOSAxLjU3IDUuNSAxLjU3IDEuODMgNS43NiAxLjgzIDUuNzYgMS44M2wtLjc5IDQuNzFjLTExLjgyLTEuMDctMTAuMjgtLjU5LTIwLjQzLTEuMDUtMy4yMi01LjE1LTIuMjMtMy4yOC00LjE5LTcuODYgMCAuMDEtNC4xOSAzLjk0LTcuMzMgNS41MXptMzcuMTggMjEuMjFjLTYuMzUtMTAuNTgtMTkuODItNy4xNi0yMS43MyA1LjUtMi42MyAxNy4wOCAxNC4zIDE5Ljc5IDIwLjY5IDEwLjIxbC4yNi4yNmMtLjUyIDEuODMtMS44MyA2LjAyLTEuODMgNi4yOGwtLjUyLjUyYy0xMC4zIDYuODctMjguNS0yLjUtMjUuNjYtMTguNTkgMS45NC0xMC44NyAxNC40NC0xOC45MyAyOC44LTkuOTVsLjI2LjUyYzAgMS4wNi0uMjcgMy40MS0uMjcgNS4yNXptNS43Ny04Ny43M3YtNi41NWMuNjkgMCAxOS42NSAzLjI4IDI3Ljc2IDcuMzNsLTEuNTcgMTcuNTRzMTAuMjEtOS40MyAxNS40NS0xMC43NGM1LjI0LTEuNTcgMTQuOTMgNy4zMyAxNC45MyA3LjMzbC0xMS4yNiAxMS4yNmMtMTIuMDctNi4zNS0xOS41OS0uMDgtMjAuNjkuNzktNS4yOSAzOC43Mi04LjYgNDIuMTcgNC40NSA0Ni4wOWwtLjUyIDQuNzFjLTE3LjU1LTQuMjktMTguNTMtNC41LTM2LjkyLTcuMzNsLjc5LTQuNzFjNy4yNSAwIDcuNDgtNS4zMiA3LjU5LTYuODEgMCAwIDQuOTgtNTMuMTYgNC45OC01NS4yNS0uMDItMi44Ny00Ljk5LTMuNjYtNC45OS0zLjY2em0xMC45OSAxMTQuNDRjLTguMTItMi4wOS0xNC4xNC0xMS0xMC43NC0yMC42OSAzLjE0LTkuNDMgMTIuMzEtMTIuMzEgMTguODUtMTAuMjEgOS4xNyAyLjYyIDEyLjgzIDExLjc4IDEwLjc0IDE5LjM4LTIuNjEgOC45LTkuNDIgMTMuODctMTguODUgMTEuNTJ6bTQyLjE2IDkuNjljLTIuMzYtLjUyLTcuMDctMi4zNi04LjY0LTIuODh2LS4yNmwxLjU3LTEuODNjLjU5LTguMjQuNTktNy4yNy4yNi03LjU5LTQuODItMS44MS02LjY2LTIuMzYtNy4wNy0yLjM2LTEuMzEgMS44My0yLjg4IDQuNDUtMy42NyA1LjVsLS43OSAzLjR2LjI2Yy0xLjMxLS4yNi0zLjkzLTEuMzEtNi4wMi0xLjU3di0uMjZsMi42Mi0xLjgzYzMuNC00LjcxIDkuOTUtMTQuMTQgMTMuODgtMjAuMTZ2LTIuMDlsLjUyLS4yNmMyLjA5Ljc5IDUuNSAyLjA5IDcuNTkgMi44OC40OC40OC4xOC0xLjg3LTEuMDUgMjUuMTQtLjI0IDEuODEuMDIgMi42LjggMy45MXptLTQuNzEtODkuODJjMTEuMjUtMTguMjcgMzAuNzYtMTYuMTkgMzQuMDQtMy40TDUzOS43IDE5OGMyLjM0LTYuMjUtMi44Mi05LjktNC40NS0xMS4yNmwxLjgzLTMuNjdjMTIuMjIgMTAuMzcgMTYuMzggMTMuOTcgMjIuNTIgMjAuNDMtMjUuOTEgNzMuMDctMzAuNzYgODAuODEtMjQuNjIgODQuMzJsLTEuODMgNC40NWMtNi4zNy0zLjM1LTguOS00LjQyLTE3LjgxLTguNjRsMi4wOS02LjgxYy0uMjYtLjI2LTMuOTMgMy45My05LjY5IDMuNjctMTkuMDYtMS4zLTIyLjg5LTMxLjc1LTkuNjctNTIuOXptMjkuMzMgNzkuMzRjMC01LjcxLTYuMzQtNy44OS03Ljg2LTUuMjQtMS4zMSAyLjA5IDEuMDUgNC45OCAyLjg4IDguMzggMS41NyAyLjYyIDIuNjIgNi4yOCAxLjA1IDkuNDMtMi42NCA2LjM0LTEyLjQgNS4zMS0xNS40NS0uNzkgMC0uNy0uMjcuMDkgMS44My00LjcxbC43OS0uMjZjLS41NyA1LjY2IDYuMDYgOS42MSA4LjM4IDQuOTggMS4wNS0yLjA5LS41Mi01LjUtMi4wOS04LjM4LTEuNTctMi42Mi0zLjY3LTYuMjgtMS44My05LjY5IDIuNzItNS4wNiAxMS4yNS00LjQ3IDE0LjY2IDIuMzZ2LjUybC0yLjM2IDMuNHptMjEuMjEgMTMuMzZjLTEuOTYtMy4yNy0uOTEtMi4xNC00LjQ1LTQuNzFoLS4yNmMtMi4zNiA0LjE5LTUuNzYgMTAuNDctOC42NCAxNi4yNC0xLjMxIDIuMzYtMS4wNSAzLjQtLjc5IDMuOTNsLS4yNi4yNi01Ljc2LTQuNDUuMjYtLjI2IDIuMDktMS4zMWMzLjE0LTUuNzYgNi41NS0xMi4wNSA5LjE3LTE3LjAydi0uMjZjLTIuNjQtMS45OC0xLjIyLTEuNTEtNi4wMi0xLjgzdi0uMjZsMy4xNC0zLjRoLjI2YzMuNjcgMi4zNiA5Ljk1IDYuODEgMTIuMzEgOC45bC4yNi4yNi0xLjMxIDMuOTF6bTI3LjIzLTQ0LjI2bC0yLjg4LTIuODhjLjc5LTIuMzYgMS44My00Ljk4IDIuMDktNy41OS43NS05Ljc0LTExLjUyLTExLjg0LTExLjUyLTQuOTggMCA0Ljk4IDcuODYgMTkuMzggNy44NiAyNy43NiAwIDEwLjIxLTUuNzYgMTUuNzEtMTMuODggMTYuNS04LjM4Ljc5LTIwLjE2LTEwLjQ3LTIwLjE2LTEwLjQ3bDQuOTgtMTQuNCAyLjg4IDIuMDljLTIuOTcgMTcuOCAxNy42OCAyMC4zNyAxMy4zNSA1LjI0LTEuMDYtNC4wMi0xOC43NS0zNC4yIDIuMDktMzguMjMgMTMuNjItMi4zNiAyMy4wNCAxNi41IDIzLjA0IDE2LjVsLTcuODUgMTAuNDZ6bTM1LjYyLTEwLjIxYy0xMS0zMC4zOC02MC40OS0xMjcuNTMtMTkxLjk1LTEyOS42Mi01My40Mi0xLjA1LTk0LjI3IDE1LjQ1LTEzMi43NiAzNy45N2w4NS42My05LjE3LTkxLjM5IDIwLjY5IDI1LjE0IDE5LjY0LTMuOTMtMTYuNWM3LjUtMS43MSAzOS4xNS04LjQ1IDY2Ljc3LTguOWwtMjIuMjYgODAuMzljMTMuNjEtLjcgMTguOTctOC45OCAxOS42NC0yMi43OGw0Ljk4LTEuMDUuMjYgMjYuNzFjLTIyLjQ2IDMuMjEtMzcuMyA2LjY5LTQ5LjQ5IDkuOTVsMTMuMDktNDMuMjEtNjEuNTQtMzYuNjYgMi4zNiA4LjEyIDEwLjIxIDQuOThjNi4yOCAxOC41OSAxOS4zOCA1Ni41NiAyMC40MyA1OC42NiAxLjk1IDQuMjggMy4xNiA1Ljc4IDEyLjA1IDQuNDVsMS4wNSA0Ljk4Yy0xNi4wOCA0Ljg2LTIzLjY2IDcuNjEtMzkuMDIgMTQuNGwtMi4zNi00LjcxYzQuNC0yLjk0IDguNzMtMy45NCA1LjUtMTIuODMtMjMuNy02Mi41LTIxLjQ4LTU4LjE0LTIyLjc4LTU5LjQ0bDIuMzYtNC40NSAzMy41MiA2Ny4zYy0zLjg0LTExLjg3IDEuNjggMS42OS0zMi45OS03OC44MmwtNDEuOSA4OC41MSA0LjcxLTEzLjg4LTM1Ljg4LTQyLjE2IDI3Ljc2IDkzLjQ4LTExLjc4IDguMzhDOTUgMjI4LjU4IDEwMS4wNSAyMzEuODcgOTMuMjMgMjMxLjUyYy01LjUtLjI2LTEzLjYyIDUuNS0xMy42MiA1LjVMNzQuNjMgMjMxYzMwLjU2LTIzLjUzIDMxLjYyLTI0LjMzIDU4LjQtNDIuNjhsNC4xOSA3LjA3cy01Ljc2IDQuMTktNy44NiA3LjA3Yy01LjkgOS4yOCAxLjY3IDEzLjI4IDYxLjggNzUuNjhsLTE4Ljg1LTU4LjkyIDM5LjgtMTAuMjEgMjUuNjYgMzAuNjQgNC40NS0xMi4zMS00Ljk4LTI0LjYyIDEzLjA5LTMuNC41MiAzLjE0IDMuNjctMTAuNDctOTQuMjcgMjkuMzMgMTEuMjYtNC45OC0xMy42Mi00Mi40MiAxNy4yOC05LjE3IDMwLjExIDM2LjE0IDI4LjU0LTEzLjA5Yy0xLjQxLTcuNDctMi40Ny0xNC41LTQuNzEtMTkuNjRsMTcuMjggMTMuODggNC43MS0yLjA5LTU5LjE4LTQyLjY4IDIzLjA4IDExLjVjMTguOTgtNi4wNyAyNS4yMy03LjQ3IDMyLjIxLTkuNjlsMi42MiAxMWMtMTIuNTUgMTIuNTUgMS40MyAxNi44MiA2LjU1IDE5LjM4bC0xMy42Mi02MS4wMSAxMi4wNSAyOC4yOGM0LjE5LTEuMzEgNy4zMy0yLjA5IDcuMzMtMi4wOWwyLjYyIDguNjRzLTMuMTQgMS4wNS02LjI4IDIuMDlsOC45IDIwLjk1IDMzLjc4LTY1LjczLTIwLjY5IDYxLjAxYzQyLjQyLTI0LjA5IDgxLjQ0LTM2LjY2IDEzMS45OC0zNS44OCA2Ny4wNCAxLjA1IDE2Ny4zMyA0MC44NSAxOTkuOCAxMzkuODMuNzggMi4xLS4wMSAyLjYzLS43OS4yN3pNMjAzLjQ4IDE1Mi40M3MxLjgzLS41MiA0LjE5LTEuMzFsOS40MyA3LjU5Yy0uNCAwLTMuNDQtLjI1LTExLjI2IDIuMzZsLTIuMzYtOC42NHptMTQzLjc2IDM4LjVjLTEuNTctLjYtMjYuNDYtNC44MS0zMy4yNiAyMC42OWwyMS43MyAxNy4wMiAxMS41My0zNy43MXpNMzE4LjQzIDY3LjA3Yy01OC40IDAtMTA2LjA1IDEyLjA1LTExNC45NiAxNC40di43OWM4LjM4IDIuMDkgMTQuNCA0LjE5IDIxLjIxIDExLjc4bDEuNTcuMjZjNi41NS0xLjgzIDQ4Ljk3LTEzLjg4IDExMC4yNC0xMy44OCAxODAuMTYgMCAzMDEuNjcgMTE2Ljc5IDMwMS42NyAyMjMuMzd2OS45NWMwIDEuMzEuNzkgMi42MiAxLjA1LjUyLjUyLTIuMDkuNzktOC42NC43OS0xOS42NC4yNi04My43OS05Ni42My0yMjcuNTUtMzIxLjU3LTIyNy41NXptMjExLjA2IDE2OS42OGMxLjMxLTUuNzYgMC0xMi4zMS03LjMzLTEzLjA5LTkuNjItMS4xMy0xNi4xNCAyMy43OS0xNy4wMiAzMy41Mi0uNzkgNS41LTEuMzEgMTQuOTMgNi4wMiAxNC45MyA0LjY4LS4wMSA5LjcyLS45MSAxOC4zMy0zNS4zNnptLTYxLjUzIDQyLjk1Yy0yLjYyLS43OS05LjQzLS43OS0xMi41NyAxMC40Ny0xLjgzIDYuODEuNTIgMTMuMzUgNi4wMiAxNC42NiAzLjY3IDEuMDUgOC45LjUyIDExLjc4LTEwLjc0IDIuNjItOS45NC0xLjgzLTEzLjYxLTUuMjMtMTQuMzl6TTQ5MSAzMDAuNjVjMS44My41MiAzLjE0IDEuMDUgNS43NiAxLjgzIDAtMS44My41Mi04LjM4Ljc5LTEyLjA1LTEuMDUgMS4zMS01LjUgOC4xMi02LjU1IDkuOTV2LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb2R1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OC40MTQgMzM5LjcwNkgxNDEuMUwxMTIuMTY2IDIyMy40NzVoLS40NzhMODMuMjI4IDMzOS43MDZINDUuMkwwIDE2OC45NDZIMzcuNTQ4TDY0LjU3NCAyODUuMTc3aC40NzhMOTQuNzA3IDE2OC45NDZoMzUuMTU3bDI5LjE3OCAxMTcuNjY3aC40NzlMMTg3LjUgMTY4Ljk0NmgzNi44MzF6TTI3MS40IDIxMi43MTNjMzguOTg0IDAgNjQuMSAyNS44MjggNjQuMSA2NS4yOTEgMCAzOS4yMjItMjUuMTExIDY1LjA1LTY0LjEgNjUuMDUtMzguNzQzIDAtNjMuODU1LTI1LjgyOC02My44NTUtNjUuMDVDMjA3LjU0NyAyMzguNTQxIDIzMi42NTkgMjEyLjcxMyAyNzEuNCAyMTIuNzEzem0wIDEwNC43NTNjMjMuMiAwIDMwLjEzMy0xOS44NTIgMzAuMTMzLTM5LjQ2MiAwLTE5Ljg1Mi02LjkzNC0zOS43LTMwLjEzMy0zOS43LTI3LjcgMC0yOS44OTQgMTkuODUtMjkuODk0IDM5LjdDMjQxLjUwOCAyOTcuNjE0IDI0OC40NDMgMzE3LjQ2NiAyNzEuNCAzMTcuNDY2ek00MzUuMDg0IDMyMy45MjJoLS40NzhjLTcuODkzIDEzLjM5Mi0yMS43NjUgMTkuMTMyLTM3LjU0OCAxOS4xMzItMzcuMzEgMC01NS40ODUtMzIuMDQ1LTU1LjQ4NS02Ni4yNDYgMC0zMy4yNDMgMTguNDE1LTY0LjA5NSA1NC43NjctNjQuMDk1IDE0LjU4OSAwIDI4LjkzOCA2LjIxOCAzNi44MzEgMTguNDE2aC4yNFYxNjguOTQ2aDMzLjk2djE3MC43Nkg0MzUuMDg0ek00MDUuNDI4IDIzOC4zYy0yMi4yNCAwLTI5Ljg5NCAxOS4xMzQtMjkuODk0IDM5LjQ2MyAwIDE5LjM3MSA4Ljg0OCAzOS43IDI5Ljg5NCAzOS43IDIyLjQ4MiAwIDI5LjE3OC0xOS42MTMgMjkuMTc4LTM5Ljk0QzQzNC42MDYgMjU3LjQzNiA0MjcuNDMyIDIzOC4zIDQwNS40MjggMjM4LjN6TTU5Mi45NiAzMzkuNzA2SDU2MC42NzNWMzIyLjQ4N2gtLjcxOGMtOC42MDkgMTMuODctMjMuNDM2IDIwLjU2Ny0zNy43ODYgMjAuNTY3LTM2LjExMyAwLTQ1LjItMjAuMzI4LTQ1LjItNTAuOTQxVjIxNi4wNjFoMzMuOTU5VjI4NS45YzAgMjAuMzI5IDUuOTc5IDMwLjM3MiAyMS43NjUgMzAuMzcyIDE4LjQxNSAwIDI2LjMwNi0xMC4yODMgMjYuMzA2LTM1LjM5M1YyMTYuMDYxSDU5Mi45NnpNNjAyLjQ1MyAzMDIuODc2SDY0MHYzNi44M0g2MDIuNDUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb2xmUGFja0JhdHRhbGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNzMgNDcxLjUzbDEwLjU2IDE1Ljg0IDUuMjgtMTIuMzIgNS4yOCA3VjUxMmMyMS4wNi03LjkyIDIxLjExLTY2Ljg2IDI1LjUxLTk3LjIxIDQuNjItMzEuODktLjg4LTkyLjgxIDgxLjM3LTE0OS4xMS04Ljg4LTIzLjYxLTEyLTQ5LjQzLTIuNjQtODAuMDVDNDIxIDE4OSA0NDcgMTk2LjIxIDQ1Ni40MyAyMzkuNzNsLTMwLjM1IDguMzZjMTEuMTUgMjMgMTcgNDYuNzYgMTMuMiA3Mi4xNEw0MTIgMzEzLjE4bC02LjE2IDMzLjQzLTE4LjQ3LTctOC44IDMzLjM5LTE5LjM1LTcgMjYuMzkgMjEuMTEgOC44LTI4LjE1TDQxOSAzNjQuMmw3LTM1LjYzIDI2LjM5IDE0LjUyYy4yNS0yMCA3LTU4LjA2LTguOC04NC40NWwyNi4zOSA1LjI4YzQtMjIuMDctMi4zOC0zOS4yMS03LjkyLTU2Ljc0bDIyLjQzIDkuNjhjLS40NC0yNS4wNy0yOS45NC01Ni43OS02MS41OC01OC41LTIwLjIyLTEuMDktNTYuNzQtMjUuMTctNTQuMS01MS45IDItMTkuODcgMTcuNDUtNDIuNjIgNDMuMTEtNDkuNy00NCAzNi41MS05LjY4IDY3LjMgNS4yOCA3My40NiA0LjQtMTEuNDQgMTcuNTQtNjkuMDggMC0xMzAuMi00MC4zOSAyMi44Ny04OS42NSA2NS4xLTkzLjIgMTQ3Ljc5bC01OCAzOC43MS0zLjUyIDkzLjI1TDM2OS43OCAyMjBsNyA3LTE3LjU5IDMuNTItNDQgMzguNzEtMTUuODQtNS4yOC0yOC4xIDQ5LjI1LTMuNTIgMTE5LjY0IDIxLjExIDE1Ljg0LTMyLjU1IDE1Ljg0LTMyLjU1LTE1Ljg0IDIxLjExLTE1Ljg0LTMuNTItMTE5LjY0LTI4LjE1LTQ5LjI2LTE1Ljg0IDUuMjgtNDQtMzguNzEtMTcuNTgtMy41MSA3LTcgMTA3LjMzIDU5LjgyLTMuNTItOTMuMjUtNTguMDYtMzguNzFDMTg1IDY1LjEgMTM1Ljc3IDIyLjg3IDk1LjMgMGMtMTcuNTQgNjEuMTItNC40IDExOC43NiAwIDEzMC4yIDE1LTYuMTYgNDkuMjYtMzYuOTUgNS4yOC03My40NiAyNS42NiA3LjA4IDQxLjE1IDI5LjgzIDQzLjExIDQ5LjcgMi42MyAyNi43NC0zMy44OCA1MC44MS01NC4xIDUxLjktMzEuNjUgMS43Mi02MS4xNSAzMy40NC02MS41OSA1OC41MWwyMi40My05LjY4Yy01LjU0IDE3LjUzLTExLjkxIDM0LjY3LTcuOTIgNTYuNzRsMjYuMzktNS4yOGMtMTUuNzYgMjYuMzktOS4wNSA2NC40My04LjggODQuNDVsMjYuMzktMTQuNTIgNyAzNS42MyAyNC42My01LjI4IDguOCAyOC4xNUwxNTMuMzUgMzY2IDEzNCAzNzNsLTguOC0zMy40My0xOC40NyA3LTYuMTYtMzMuNDMtMjcuMjcgN2MtMy44Mi0yNS4zOCAyLTQ5LjEgMTMuMi03Mi4xNGwtMzAuMzUtOC4zNmM5LjQtNDMuNTIgMzUuNDctNTAuNzcgNjMuMzQtNTQuMSA5LjM2IDMwLjYyIDYuMjQgNTYuNDUtMi42NCA4MC4wNSA4Mi4yNSA1Ni4zIDc2Ljc1IDExNy4yMyA4MS4zNyAxNDkuMTEgNC40IDMwLjM1IDQuNDUgODkuMjkgMjUuNTEgOTcuMjF2LTI5LjgzbDUuMjgtNyA1LjI4IDEyLjMyIDEwLjU2LTE1Ljg0IDExLjQ0IDIxLjExIDExLjQzLTIxLjF6bTc5LjE3LTk1TDMzMS4wNiAzNjZjNy40Ny00LjM2IDEzLjc2LTguNDIgMTkuMzUtMTIuMzItLjYgNy4yMi0uMjcgMTMuODQtMy41MSAyMi44NHptMjguMTUtNDkuMjZjLS40IDEwLjk0LS45IDIxLjY2LTEuNzYgMzEuNjctNy44NS0xLjg2LTE1LjU3LTMuOC0yMS4xMS03IDguMjQtNy45NCAxNS41NS0xNi4zMiAyMi44Ny0yNC42OHptMjQuNjMgNS4yOGMwLTEzLjQzLTIuMDUtMjQuMjEtNS4yOC0zMy40M2EyMzUgMjM1IDAgMCAxLTE4LjQ3IDI3LjI3em0zLjUyLTgwLjk0YzE5LjQ0IDEyLjgxIDI3LjggMzMuNjYgMjkuOTEgNTYuMy0xMi4zMi00LjUzLTI0LjYzLTkuMzEtMzYuOTUtMTAuNTYgNS4wNi0xMiA2LjY1LTI4LjE0IDctNDUuNzR6bS0xLjc2LTQ1Ljc0Yy44MSAxNC4zIDEuODQgMjguODIgMS43NiA0Mi4yMyAxOS4yMi04LjExIDI5Ljc4LTkuNzIgNDQtMTQuMDgtMTAuNjEtMTguOTYtMjcuMi0yNS41My00NS43Ni0yOC4xNnpNMTY1LjY4IDM3Ni41MkwxODEuNTIgMzY2Yy03LjQ3LTQuMzYtMTMuNzYtOC40Mi0xOS4zNS0xMi4zMi42IDcuMjYuMjcgMTMuODggMy41MSAyMi44OHptLTI4LjE1LTQ5LjI2Yy40IDEwLjk0LjkgMjEuNjYgMS43NiAzMS42NyA3Ljg1LTEuODYgMTUuNTctMy44IDIxLjExLTctOC4yNC03LjkzLTE1LjU1LTE2LjMxLTIyLjg3LTI0LjY3em0tMjQuNjQgNS4yOGMwLTEzLjQzIDItMjQuMjEgNS4yOC0zMy40M2EyMzUgMjM1IDAgMCAwIDE4LjQ3IDI3LjI3em0tMy41Mi04MC45NGMtMTkuNDQgMTIuODEtMjcuOCAzMy42Ni0yOS45MSA1Ni4zIDEyLjMyLTQuNTMgMjQuNjMtOS4zMSAzNy0xMC41Ni01LTEyLTYuNjUtMjguMTQtNy00NS43NHptMS43Ni00NS43NGMtLjgxIDE0LjMtMS44NCAyOC44Mi0xLjc2IDQyLjIzLTE5LjIyLTguMTEtMjkuNzgtOS43Mi00NC0xNC4wOCAxMC42My0xOC45NSAyNy4yMy0yNS41MiA0NS43Ni0yOC4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV29yZHByZXNzU2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4zIDggOCAxMTkuMiA4IDI1NmMwIDEzNi43IDExMS4zIDI0OCAyNDggMjQ4czI0OC0xMTEuMyAyNDgtMjQ4QzUwNCAxMTkuMiAzOTIuNyA4IDI1NiA4ek0zMyAyNTZjMC0zMi4zIDYuOS02MyAxOS4zLTkwLjdsMTA2LjQgMjkxLjRDODQuMyA0MjAuNSAzMyAzNDQuMiAzMyAyNTZ6bTIyMyAyMjNjLTIxLjkgMC00My0zLjItNjMtOS4xbDY2LjktMTk0LjQgNjguNSAxODcuOGMuNSAxLjEgMSAyLjEgMS42IDMuMS0yMy4xIDguMS00OCAxMi42LTc0IDEyLjZ6bTMwLjctMzI3LjVjMTMuNC0uNyAyNS41LTIuMSAyNS41LTIuMSAxMi0xLjQgMTAuNi0xOS4xLTEuNC0xOC40IDAgMC0zNi4xIDIuOC01OS40IDIuOC0yMS45IDAtNTguNy0yLjgtNTguNy0yLjgtMTItLjctMTMuNCAxNy43LTEuNCAxOC40IDAgMCAxMS40IDEuNCAyMy40IDIuMWwzNC43IDk1LjJMMjAwLjYgMzkzbC04MS4yLTI0MS41YzEzLjQtLjcgMjUuNS0yLjEgMjUuNS0yLjEgMTItMS40IDEwLjYtMTkuMS0xLjQtMTguNCAwIDAtMzYuMSAyLjgtNTkuNCAyLjgtNC4yIDAtOS4xLS4xLTE0LjQtLjNDMTA5LjYgNzMgMTc4LjEgMzMgMjU2IDMzYzU4IDAgMTEwLjkgMjIuMiAxNTAuNiA1OC41LTEtLjEtMS45LS4yLTIuOS0uMi0yMS45IDAtMzcuNCAxOS4xLTM3LjQgMzkuNiAwIDE4LjQgMTAuNiAzMy45IDIxLjkgNTIuMyA4LjUgMTQuOCAxOC40IDMzLjkgMTguNCA2MS41IDAgMTkuMS03LjMgNDEuMi0xNyA3Mi4xbC0yMi4yIDc0LjMtODAuNy0yMzkuNnptODEuNCAyOTcuMmw2OC4xLTE5Ni45YzEyLjctMzEuOCAxNy01Ny4yIDE3LTc5LjkgMC04LjItLjUtMTUuOC0xLjUtMjIuOSAxNy40IDMxLjggMjcuMyA2OC4yIDI3LjMgMTA3IDAgODIuMy00NC42IDE1NC4xLTExMC45IDE5Mi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb3JkcHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEuNyAxNjkuNGwxMDEuNSAyNzhDOTIuMiA0MTMgNDMuMyAzNDAuMiA0My4zIDI1NmMwLTMwLjkgNi42LTYwLjEgMTguNC04Ni42em0zMzcuOSA3NS45YzAtMjYuMy05LjQtNDQuNS0xNy41LTU4LjctMTAuOC0xNy41LTIwLjktMzIuNC0yMC45LTQ5LjkgMC0xOS42IDE0LjgtMzcuOCAzNS43LTM3LjguOSAwIDEuOC4xIDIuOC4yLTM3LjktMzQuNy04OC4zLTU1LjktMTQzLjctNTUuOS03NC4zIDAtMTM5LjcgMzguMS0xNzcuOCA5NS45IDUgLjIgOS43LjMgMTMuNy4zIDIyLjIgMCA1Ni43LTIuNyA1Ni43LTIuNyAxMS41LS43IDEyLjggMTYuMiAxLjQgMTcuNSAwIDAtMTEuNSAxLjMtMjQuMyAybDc3LjUgMjMwLjRMMjQ5LjggMjQ3bC0zMy4xLTkwLjhjLTExLjUtLjctMjIuMy0yLTIyLjMtMi0xMS41LS43LTEwLjEtMTguMiAxLjMtMTcuNSAwIDAgMzUuMSAyLjcgNTYgMi43IDIyLjIgMCA1Ni43LTIuNyA1Ni43LTIuNyAxMS41LS43IDEyLjggMTYuMiAxLjQgMTcuNSAwIDAtMTEuNSAxLjMtMjQuMyAybDc2LjkgMjI4LjcgMjEuMi03MC45YzktMjkuNCAxNi01MC41IDE2LTY4Ljd6bS0xMzkuOSAyOS4zbC02My44IDE4NS41YzE5LjEgNS42IDM5LjIgOC43IDYwLjEgOC43IDI0LjggMCA0OC41LTQuMyA3MC42LTEyLjEtLjYtLjktMS4xLTEuOS0xLjUtMi45bC02NS40LTE3OS4yem0xODMtMTIwLjdjLjkgNi44IDEuNCAxNCAxLjQgMjEuOSAwIDIxLjYtNCA0NS44LTE2LjIgNzYuMmwtNjUgMTg3LjlDNDI2LjIgNDAzIDQ2OC43IDMzNC41IDQ2OC43IDI1NmMwLTM3LTkuNC03MS44LTI2LTEwMi4xek01MDQgMjU2YzAgMTM2LjgtMTExLjMgMjQ4LTI0OCAyNDhDMTE5LjIgNTA0IDggMzkyLjcgOCAyNTYgOCAxMTkuMiAxMTkuMiA4IDI1NiA4YzEzNi43IDAgMjQ4IDExMS4yIDI0OCAyNDh6bS0xMS40IDBjMC0xMzAuNS0xMDYuMi0yMzYuNi0yMzYuNi0yMzYuNkMxMjUuNSAxOS40IDE5LjQgMTI1LjUgMTkuNCAyNTZTMTI1LjYgNDkyLjYgMjU2IDQ5Mi42YzEzMC41IDAgMjM2LjYtMTA2LjEgMjM2LjYtMjM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdwYmVnaW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYyLjc5OSAzMjIuMzc0QzUxOS4wMSAzODYuNjgyIDQ2Ni45NjEgNDgwIDM3MC45NDQgNDgwYy0zOS42MDIgMC03OC44MjQtMTcuNjg3LTEwMC4xNDItNTAuMDQtNi44ODcuMzU2LTIyLjcwMi4zNTYtMjkuNTkgMEMyMTkuODQ4IDQ2Mi4zODEgMTgwLjU4OCA0ODAgMTQxLjA2OSA0ODBjLTk1LjQ5IDAtMTQ4LjM0OC05Mi45OTYtOTEuODU1LTE1Ny42MjZDLTI5LjkyNSAxOTAuNTIzIDgwLjQ3OSAzMiAyNTYuMDA2IDMyYzE3NS42MzIgMCAyODUuODcgMTU4LjYyNiAyMDYuNzkzIDI5MC4zNzR6bS0zMzkuNjQ3LTgyLjk3Mmg0MS41Mjl2LTU4LjA3NWgtNDEuNTI5djU4LjA3NXptMjE3LjE4IDg2LjA3MnYtMjMuODM5Yy02MC41MDYgMjAuOTE1LTEzMi4zNTUgOS4xOTgtMTg3LjU4OS0zMy45NzFsLjI0NiAyNC44OTdjNTEuMTAxIDQ2LjM2NyAxMzEuNzQ2IDU3Ljg3NSAxODcuMzQzIDMyLjkxM3ptLTE1MC43NTMtODYuMDcyaDE2Ni4wNTh2LTU4LjA3NUgxODkuNTc5djU4LjA3NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3BleHBsb3JlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjU2YzAgMTQxLjItMTE0LjcgMjU2LTI1NiAyNTZDMTE0LjggNTEyIDAgMzk3LjMgMCAyNTZTMTE0LjcgMCAyNTYgMHMyNTYgMTE0LjcgMjU2IDI1NnptLTMyIDBjMC0xMjMuMi0xMDAuMy0yMjQtMjI0LTIyNEMxMzIuNSAzMiAzMiAxMzIuNSAzMiAyNTZzMTAwLjUgMjI0IDIyNCAyMjQgMjI0LTEwMC41IDIyNC0yMjR6TTE2MC45IDEyNC42bDg2LjkgMzcuMS0zNy4xIDg2LjktODYuOS0zNy4xIDM3LjEtODYuOXptMTEwIDE2OS4xbDQ2LjYgOTRoLTE0LjZsLTUwLTEwMC00OC45IDEwMGgtMTRsNTEuMS0xMDYuOS0yMi4zLTkuNCA2LTE0IDY4LjYgMjkuMS02IDE0LjMtMTYuNS03LjF6bS0xMS44LTExNi4zbDY4LjYgMjkuNC0yOS40IDY4LjNMMjMwIDI0NmwyOS4xLTY4LjZ6bTgwLjMgNDIuOWw1NC42IDIzLjEtMjMuNCA1NC4zLTU0LjMtMjMuMSAyMy4xLTU0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdwZm9ybXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDc1LjJ2MzYxLjdjMCAyNC4zLTE5IDQzLjItNDMuMiA0My4ySDQzLjJDMTkuMyA0ODAgMCA0NjEuNCAwIDQzNi44Vjc1LjJDMCA1MS4xIDE4LjggMzIgNDMuMiAzMmgzNjEuN2MyNCAwIDQzLjEgMTguOCA0My4xIDQzLjJ6bS0zNy4zIDM2MS42Vjc1LjJjMC0zLTIuNi01LjgtNS44LTUuOGgtOS4zTDI4NS4zIDE0NCAyMjQgOTQuMSAxNjIuOCAxNDQgNTIuNSA2OS4zaC05LjNjLTMuMiAwLTUuOCAyLjgtNS44IDUuOHYzNjEuN2MwIDMgMi42IDUuOCA1LjggNS44aDM2MS43YzMuMi4xIDUuOC0yLjcgNS44LTUuOHpNMTUwLjIgMTg2djM3SDc2Ljd2LTM3aDczLjV6bTAgNzQuNHYzNy4zSDc2Ljd2LTM3LjNoNzMuNXptMTEuMS0xNDcuM2w1NC00My43SDk2LjhsNjQuNSA0My43em0yMTAgNzIuOXYzN2gtMTk2di0zN2gxOTZ6bTAgNzQuNHYzNy4zaC0xOTZ2LTM3LjNoMTk2em0tODQuNi0xNDcuM2w2NC41LTQzLjdIMjMyLjhsNTMuOSA0My43ek0zNzEuMyAzMzV2MzcuM2gtOTkuNFYzMzVoOTkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3ByZXNzciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0xNzEuMzMgMTU4LjZjLTE1LjE4IDM0LjUxLTMwLjM3IDY5LjAyLTQ1LjYzIDEwMy41LTIuNDQgNS41MS02Ljg5IDguMjQtMTIuOTcgOC4yNC0yMy4wMi0uMDEtNDYuMDMuMDYtNjkuMDUtLjA1LTUuMTItLjAzLTguMjUgMS44OS0xMC4zNCA2LjcyLTEwLjE5IDIzLjU2LTIwLjYzIDQ3LTMwLjk1IDcwLjUtMS41NCAzLjUxLTQuMDYgNS4yOS03LjkyIDUuMjktNDUuOTQtLjAxLTkxLjg3LS4wMi0xMzcuODEgMC0zLjEzIDAtNS42My0xLjE1LTcuNzItMy40NS0xMS4yMS0xMi4zMy0yMi40Ni0yNC42My0zMy42OC0zNi45NC0yLjY5LTIuOTUtMi43OS02LjE4LTEuMjEtOS43MyA4LjY2LTE5LjU0IDE3LjI3LTM5LjEgMjUuODktNTguNjYgMTIuOTMtMjkuMzUgMjUuODktNTguNjkgMzguNzUtODguMDggMS43LTMuODggNC4yOC01LjY4IDguNTQtNS42NSAxNC4yNC4xIDI4LjQ4LjAyIDQyLjcyLjA1IDYuMjQuMDEgOS4yIDQuODQgNi42NiAxMC41OS0xMy42IDMwLjc3LTI3LjE3IDYxLjU1LTQwLjc0IDkyLjMzLTUuNzIgMTIuOTktMTEuNDIgMjUuOTktMTcuMDkgMzktMy45MSA4Ljk1IDcuMDggMTEuOTcgMTAuOTUgNS42LjIzLS4zNy0xLjQyIDQuMTggMzAuMDEtNjcuNjkgMS4zNi0zLjEgMy40MS00LjQgNi43Ny00LjM5IDE1LjIxLjA4IDMwLjQzLjAyIDQ1LjY0LjA0IDUuNTYuMDEgNy45MSAzLjY0IDUuNjYgOC43NS04LjMzIDE4Ljk2LTE2LjcxIDM3LjktMjQuOTggNTYuODktNC45OCAxMS40MyA4LjA4IDEyLjQ5IDExLjI4IDUuMzMuMDQtLjA4IDI3Ljg5LTYzLjMzIDMyLjE5LTczLjE2IDIuMDItNC42MSA1LjQ0LTYuNTEgMTAuMzUtNi41IDI2LjQzLjA1IDUyLjg2IDAgNzkuMjkuMDUgMTIuNDQuMDIgMTMuOTMtMTMuNjUgMy45LTEzLjY0LTI1LjI2LjAzLTUwLjUyLjAyLTc1Ljc4LjAyLTYuMjcgMC03Ljg0LTIuNDctNS4yNy04LjI3IDUuNzgtMTMuMDYgMTEuNTktMjYuMTEgMTcuMy0zOS4yMSAxLjczLTMuOTYgNC41Mi01Ljc5IDguODQtNS43OCAyMy4wOS4wNiAyNS45OC4wMiAxMzAuNzguMDMgNi4wOC0uMDEgOC4wMyAyLjc5IDUuNjIgOC4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjkuOSAzMTguMmM0NC4zIDU0LjMgNjQuNyA5OC44IDU0LjQgMTE4LjctNy45IDE1LjEtNTYuNyA0NC42LTkyLjYgNTUuOS0yOS42IDkuMy02OC40IDEzLjMtMTAwLjQgMTAuMi0zOC4yLTMuNy03Ni45LTE3LjQtMTEwLjEtMzlDOTMuMyA0NDUuOCA4NyA0MzguMyA4NyA0MjMuNGMwLTI5LjkgMzIuOS04Mi4zIDg5LjItMTQyLjEgMzItMzMuOSA3Ni41LTczLjcgODEuNC03Mi42IDkuNCAyLjEgODQuMyA3NS4xIDExMi4zIDEwOS41ek0xODguNiAxNDMuOGMtMjkuNy0yNi45LTU4LjEtNTMuOS04Ni40LTYzLjQtMTUuMi01LjEtMTYuMy00LjgtMjguNyA4LjEtMjkuMiAzMC40LTUzLjUgNzkuNy02MC4zIDEyMi40LTUuNCAzNC4yLTYuMSA0My44LTQuMiA2MC41IDUuNiA1MC41IDE3LjMgODUuNCA0MC41IDEyMC45IDkuNSAxNC42IDEyLjEgMTcuMyA5LjMgOS45LTQuMi0xMS0uMy0zNy41IDkuNS02NCAxNC4zLTM5IDUzLjktMTEyLjkgMTIwLjMtMTk0LjR6bTMxMS42IDYzLjVDNDgzLjMgMTI3LjMgNDMyLjcgNzcgNDI1LjYgNzdjLTcuMyAwLTI0LjIgNi41LTM2IDEzLjktMjMuMyAxNC41LTQxIDMxLjQtNjQuMyA1Mi44QzM2Ny43IDE5NyA0MjcuNSAyODMuMSA0NDguMiAzNDZjNi44IDIwLjcgOS43IDQxLjEgNy40IDUyLjMtMS43IDguNS0xLjcgOC41IDEuNCA0LjYgNi4xLTcuNyAxOS45LTMxLjMgMjUuNC00My41IDcuNC0xNi4yIDE1LTQwLjIgMTguNi01OC43IDQuMy0yMi41IDMuOS03MC44LS44LTkzLjR6TTE0MS4zIDQzQzE4OSA0MC41IDI1MSA3Ny41IDI1NS42IDc4LjRjLjcuMSAxMC40LTQuMiAyMS42LTkuNyA2My45LTMxLjEgOTQtMjUuOCAxMDcuNC0yNS4yLTYzLjktMzkuMy0xNTIuNy01MC0yMzMuOS0xMS43LTIzLjQgMTEuMS0yNCAxMS45LTkuNCAxMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYaW5nU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE0MC40IDMyMC4ySDkzLjhjLTUuNSAwLTguNy01LjMtNi0xMC4zbDQ5LjMtODYuN2MuMSAwIC4xLS4xIDAtLjJsLTMxLjQtNTRjLTMtNS42LjItMTAuMSA2LTEwLjFoNDYuNmM1LjIgMCA5LjUgMi45IDEyLjkgOC43bDMxLjkgNTUuM2MtMS4zIDIuMy0xOCAzMS43LTUwLjEgODguMi0zLjUgNi4yLTcuNyA5LjEtMTIuNiA5LjF6bTIxOS43LTIxNC4xTDI1Ny4zIDI4Ni44di4ybDY1LjUgMTE5YzIuOCA1LjEuMSAxMC4xLTYgMTAuMWgtNDYuNmMtNS41IDAtOS43LTIuOS0xMi45LTguN2wtNjYtMTIwLjNjMi4zLTQuMSAzNi44LTY0LjkgMTAzLjQtMTgyLjMgMy4zLTUuOCA3LjQtOC43IDEyLjUtOC43aDQ2LjljNS43LS4xIDguOCA0LjcgNiAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuNyAyMTBjLTEuOCAzLjMtMjUuMiA0NC40LTcwLjEgMTIzLjUtNC45IDguMy0xMC44IDEyLjUtMTcuNyAxMi41SDkuOGMtNy43IDAtMTIuMS03LjUtOC41LTE0LjRsNjktMTIxLjNjLjIgMCAuMi0uMSAwLS4zbC00My45LTc1LjZjLTQuMy03LjguMy0xNC4xIDguNS0xNC4xSDEwMGM3LjMgMCAxMy4zIDQuMSAxOCAxMi4ybDQ0LjcgNzcuNXpNMzgyLjYgNDYuMWwtMTQ0IDI1M3YuM0wzMzAuMiA0NjZjMy45IDcuMS4yIDE0LjEtOC41IDE0LjFoLTY1LjJjLTcuNiAwLTEzLjYtNC0xOC0xMi4ybC05Mi40LTE2OC41YzMuMy01LjggNTEuNS05MC44IDE0NC44LTI1NS4yIDQuNi04LjEgMTAuNC0xMi4yIDE3LjUtMTIuMmg2NS43YzggMCAxMi4zIDYuNyA4LjUgMTQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWUNvbWJpbmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDMydjQ0OEgwVjMyaDQ0OHpNMjM2IDI4Ny41TDMxMy41IDE0MmgtMzIuN0wyMzUgMjMzYy00LjcgOS4zLTkgMTguMy0xMi44IDI2LjhMMjEwIDIzM2wtNDUuMi05MWgtMzVsNzYuNyAxNDMuOHY5NC41SDIzNnYtOTIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFob28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjY5LDE0MS4wNiwxNjcsMjg0LjIzLDExMSwxNDEuMDZIMTQuOTNMMTIwLjc2LDM5MC4xOSw4Mi4xOSw0ODBoOTQuMTdMMzE3LjI3LDE0MS4wNlptMTA1LjQsMTM1Ljc5YTU4LjIyLDU4LjIyLDAsMSwwLDU4LjIyLDU4LjIyQTU4LjIyLDU4LjIyLDAsMCwwLDMyOS4wOSwyNzYuODVaTTM5NC42NSwzMmwtOTMsMjIzLjQ3SDQwNi40NEw0OTkuMDcsMzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjEuNzggMTUyLjE3QTIzLjA2IDIzLjA2IDAgMCAwIDQwMC45IDExMmMtLjgzLjQzLTEuNzEuOS0yLjYzIDEuNC0xNS4yNSA4LjQtMTE4LjMzIDgwLjYyLTEwNi42OSA4OC43N3M4Mi4wNC0yMy42MSAxMzAuMi01MHptMCAyMTcuMTdjLTQ4LjE2LTI2LjM4LTExOC42NC01OC4xLTEzMC4yLTUwczkxLjQyIDgwLjM1IDEwNi42OSA4OC43NGMuOTIuNTEgMS44IDEgMi42MyAxLjQxYTIzLjA3IDIzLjA3IDAgMCAwIDIwLjg4LTQwLjE1ek00NjQuMjEgMjM3Yy0uOTUgMC0xLjk1LS4wNi0zLS4wNi0xNy40IDAtMTQyLjUyIDEzLjc2LTEzNi4yNCAyNi41MXM4My4zIDE4Ljc0IDEzOC4yMSAxOC43NmEyMyAyMyAwIDAgMCAxLTQ1LjIxek0zMSA5Ni42NWEyNC44OCAyNC44OCAwIDAgMSA0Ni4xNC0xOC40bDgxIDIwNS4wNmgxLjIxbDc3LTIwMy41M2EyMy41MiAyMy41MiAwIDAgMSA0NC40NSAxNS4yN0wxNzEuMiAzNjguNDRDMTUyLjY1IDQxNS42NiAxMzQuMDggNDQ4IDc3LjkxIDQ0OGExMzkuNjcgMTM5LjY3IDAgMCAxLTIzLjgxLTEuOTUgMjEuMzEgMjEuMzEgMCAwIDEgNi45LTQxLjc3Yy42Ni4wNiAxMC45MS42NiAxMy44Ni42NiAzMC40NyAwIDQzLjc0LTE4Ljk0IDU4LjA3LTU5LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYW5kZXhJbnRlcm5hdGlvbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOS41IDUxMlYzNDUuOUwxOC41IDQ4aDU1LjhsODEuOCAyMjkuN0wyNTAuMiAwaDUxLjNMMTgwLjggMzQ3LjhWNTEyaC01MS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYW5kZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUzLjEgMzE1LjhMNjUuNyA1MTJIMmw5Ni0yMDkuOGMtNDUuMS0yMi45LTc1LjItNjQuNC03NS4yLTE0MS4xQzIyLjcgNTMuNyA5MC44IDAgMTcxLjcgMEgyNTR2NTEyaC01NS4xVjMxNS44aC00NS44em00NS44LTI2OS4zaC0yOS40Yy00NC40IDAtODcuNCAyOS40LTg3LjQgMTE0LjYgMCA4Mi4zIDM5LjQgMTA4LjggODcuNCAxMDguOGgyOS40VjQ2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhcm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkzLjkgMzQ1LjJjLTM5IDkuMy00OC40IDMyLjEtMTA0IDQ3LjQgMCAwLTIuNyA0LTEwLjQgNS44LTEzLjQgMy4zLTYzLjkgNi02OC41IDYuMS0xMi40LjEtMTkuOS0zLjItMjItOC4yLTYuNC0xNS4zIDkuMi0yMiA5LjItMjItOC4xLTUtOS05LjktOS44LTguMS0yLjQgNS44LTMuNiAyMC4xLTEwLjEgMjYuNS04LjggOC45LTI1LjUgNS45LTM1LjMuOC0xMC44LTUuNy44LTE5LjIuOC0xOS4ycy01LjggMy40LTEwLjUtMy42Yy02LTkuMy0xNy4xLTM3LjMgMTEuNS02Mi0xLjMtMTAuMS00LjYtNTMuNyA0MC42LTg1LjYgMCAwLTIwLjYtMjIuOC0xMi45LTQzLjMgNS0xMy40IDctMTMuMyA4LjYtMTMuOSA1LjctMi4yIDExLjMtNC42IDE1LjQtOS4xIDIwLjYtMjIuMiA0Ni44LTE4IDQ2LjgtMThzMTIuNC0zNy44IDIzLjktMzAuNGMzLjUgMi4zIDE2LjMgMzAuNiAxNi4zIDMwLjZzMTMuNi03LjkgMTUuMS01YzguMiAxNiA5LjIgNDYuNSA1LjYgNjUuMS02LjEgMzAuNi0yMS40IDQ3LjEtMjcuNiA1Ny41LTEuNCAyLjQgMTYuNSAxMCAyNy44IDQxLjMgMTAuNCAyOC42IDEuMSA1Mi43IDIuOCA1NS4zLjggMS40IDEzLjcuOCAzNi40LTEzLjIgMTIuOC03LjkgMjguMS0xNi45IDQ1LjQtMTcgMTYuNy0uNSAxNy42IDE5LjIgNC45IDIyLjJ6TTQ5NiAyNTZjMCAxMzYuOS0xMTEuMSAyNDgtMjQ4IDI0OFMwIDM5Mi45IDAgMjU2IDExMS4xIDggMjQ4IDhzMjQ4IDExMS4xIDI0OCAyNDh6bS03OS4zIDc1LjJjLTEuNy0xMy42LTEzLjItMjMtMjgtMjIuOC0yMiAuMy00MC41IDExLjctNTIuOCAxOS4yLTQuOCAzLTguOSA1LjItMTIuNCA2LjggMy4xLTQ0LjUtMjIuNS03My4xLTI4LjctNzkuNCA3LjgtMTEuMyAxOC40LTI3LjggMjMuNC01My4yIDQuMy0yMS43IDMtNTUuNS02LjktNzQuNS0xLjYtMy4xLTcuNC0xMS4yLTIxLTcuNC05LjctMjAtMTMtMjIuMS0xNS42LTIzLjgtMS4xLS43LTIzLjYtMTYuNC00MS40IDI4LTEyLjIuOS0zMS4zIDUuMy00Ny41IDIyLjgtMiAyLjItNS45IDMuOC0xMC4xIDUuNGguMWMtOC40IDMtMTIuMyA5LjktMTYuOSAyMi4zLTYuNSAxNy40LjIgMzQuNiA2LjggNDUuNy0xNy44IDE1LjktMzcgMzkuOC0zNS43IDgyLjUtMzQgMzYtMTEuOCA3My01LjYgNzkuNi0xLjYgMTEuMSAzLjcgMTkuNCAxMiAyMy44IDEyLjYgNi43IDMwLjMgOS42IDQzLjkgMi44IDQuOSA1LjIgMTMuOCAxMC4xIDMwIDEwLjEgNi44IDAgNTgtMi45IDcyLjYtNi41IDYuOC0xLjYgMTEuNS00LjUgMTQuNi03LjEgOS44LTMuMSAzNi44LTEyLjMgNjIuMi0yOC43IDE4LTExLjcgMjQuMi0xNC4yIDM3LjYtMTcuNCAxMi45LTMuMiAyMS0xNS4xIDE5LjQtMjguMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi45IDI0MC4zMmw5OS42MiA0OC42MWMxOS4yIDkuNCAxNi4yIDM3LjUxLTQuNSA0Mi43MUwzMC41IDM1OC40NWEyMi43OSAyMi43OSAwIDAgMS0yOC4yMS0xOS42IDE5Ny4xNiAxOTcuMTYgMCAwIDEgOS04NS4zMiAyMi44IDIyLjggMCAwIDEgMzEuNjEtMTMuMjF6bTQ0IDIzOS4yNWExOTkuNDUgMTk5LjQ1IDAgMCAwIDc5LjQyIDMyLjExQTIyLjc4IDIyLjc4IDAgMCAwIDE5Mi45NCA0OTBsMy45LTExMC44MmMuNy0yMS4zLTI1LjUtMzEuOTEtMzkuODEtMTYuMWwtNzQuMjEgODIuNGEyMi44MiAyMi44MiAwIDAgMCA0LjA5IDM0LjA5em0xNDUuMzQtMTA5LjkybDU4LjgxIDk0YTIyLjkzIDIyLjkzIDAgMCAwIDM0IDUuNSAxOTguMzYgMTk4LjM2IDAgMCAwIDUyLjcxLTY3LjYxQTIzIDIzIDAgMCAwIDM2NC4xNyAzNzBsLTEwNS40Mi0zNC4yNmMtMjAuMzEtNi41LTM3LjgxIDE1LjgtMjYuNTEgMzMuOTF6bTE0OC4zMy0xMzIuMjNhMTk3LjQ0IDE5Ny40NCAwIDAgMC01MC40MS02OS4zMSAyMi44NSAyMi44NSAwIDAgMC0zNCA0LjRsLTYyIDkxLjkyYy0xMS45IDE3LjcgNC43IDQwLjYxIDI1LjIgMzQuNzFMMzY2IDI2OC42M2EyMyAyMyAwIDAgMCAxNC42MS0zMS4yMXpNNjIuMTEgMzAuMThhMjIuODYgMjIuODYgMCAwIDAtOS45IDMybDEwNC4xMiAxODAuNDRjMTEuNyAyMC4yIDQyLjYxIDExLjkgNDIuNjEtMTEuNFYyMi44OGEyMi42NyAyMi42NyAwIDAgMC0yNC41LTIyLjggMzIwLjM3IDMyMC4zNyAwIDAgMC0xMTIuMzMgMzAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWW9hc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTEuMyA3NmgxODZsLTcgMTguOWgtMTc5Yy0zOS43IDAtNzEuOSAzMS42LTcxLjkgNzAuM3YyMDUuNGMwIDM1LjQgMjQuOSA3MC4zIDg0IDcwLjNWNDYwSDkxLjNDNDEuMiA0NjAgMCA0MTkuOCAwIDM3MC41VjE2NS4yQzAgMTE1LjkgNDAuNyA3NiA5MS4zIDc2em0yMjkuMS01Nmg2Ni41QzI0My4xIDM5OC4xIDI0MS4yIDQxOC45IDIwMi4yIDQ1OS4zYy0yMC44IDIxLjYtNDkuMyAzMS43LTc4LjMgMzIuN3YtNTEuMWM0OS4yLTcuNyA2NC42LTQ5LjkgNjQuNi03NS4zIDAtMjAuMS42LTEyLjYtODIuMS0yMjMuMmg2MS40TDIxOC4yIDI5OSAzMjAuNCAyMHpNNDQ4IDE2MS41VjQ2MEgyMzRjNi42LTkuNiAxMC43LTE2LjMgMTIuMS0xOS40aDE4Mi41VjE2MS41YzAtMzIuNS0xNy4xLTUxLjktNDguMi02Mi45bDYuNy0xNy42YzQxLjcgMTMuNiA2MC45IDQzLjEgNjAuOSA4MC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZb3V0dWJlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni44IDIwMi4xbDk1LjIgNTQuMS05NS4yIDU0LjFWMjAyLjF6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTQyIDE3Ni4zczAtNTkuNi03LjYtODguMmMtNC4yLTE1LjgtMTYuNS0yOC4yLTMyLjItMzIuNEMzMzcuOSAxMjggMjI0IDEyOCAyMjQgMTI4cy0xMTMuOSAwLTE0Mi4yIDcuN2MtMTUuNyA0LjItMjggMTYuNi0zMi4yIDMyLjQtNy42IDI4LjUtNy42IDg4LjItNy42IDg4LjJzMCA1OS42IDcuNiA4OC4yYzQuMiAxNS44IDE2LjUgMjcuNyAzMi4yIDMxLjlDMTEwLjEgMzg0IDIyNCAzODQgMjI0IDM4NHMxMTMuOSAwIDE0Mi4yLTcuN2MxNS43LTQuMiAyOC0xNi4xIDMyLjItMzEuOSA3LjYtMjguNSA3LjYtODguMSA3LjYtODguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWW91dHViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDkuNjU1IDEyNC4wODNjLTYuMjgxLTIzLjY1LTI0Ljc4Ny00Mi4yNzYtNDguMjg0LTQ4LjU5N0M0NTguNzgxIDY0IDI4OCA2NCAyODggNjRTMTE3LjIyIDY0IDc0LjYyOSA3NS40ODZjLTIzLjQ5NyA2LjMyMi00Mi4wMDMgMjQuOTQ3LTQ4LjI4NCA0OC41OTctMTEuNDEyIDQyLjg2Ny0xMS40MTIgMTMyLjMwNS0xMS40MTIgMTMyLjMwNXMwIDg5LjQzOCAxMS40MTIgMTMyLjMwNWM2LjI4MSAyMy42NSAyNC43ODcgNDEuNSA0OC4yODQgNDcuODIxQzExNy4yMiA0NDggMjg4IDQ0OCAyODggNDQ4czE3MC43OCAwIDIxMy4zNzEtMTEuNDg2YzIzLjQ5Ny02LjMyMSA0Mi4wMDMtMjQuMTcxIDQ4LjI4NC00Ny44MjEgMTEuNDEyLTQyLjg2NyAxMS40MTItMTMyLjMwNSAxMS40MTItMTMyLjMwNXMwLTg5LjQzOC0xMS40MTItMTMyLjMwNXptLTMxNy41MSAyMTMuNTA4VjE3NS4xODVsMTQyLjczOSA4MS4yMDUtMTQyLjczOSA4MS4yMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVpoaWh1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MC41NCAxNDguMTN2MjE3LjU0bDIzLjQzLjAxIDcuNzEgMjYuMzcgNDIuMDEtMjYuMzdoNDkuNTNWMTQ4LjEzSDE3MC41NHptOTcuNzUgMTkzLjkzaC0yNy45NGwtMjcuOSAxNy41MS01LjA4LTE3LjQ3LTExLjktLjA0VjE3MS43NWg3Mi44MnYxNzAuMzF6bS0xMTguNDYtOTQuMzlIOTcuNWMxLjc0LTI3LjEgMi4yLTUxLjU5IDIuMi03My40Nmg1MS4xNnMxLjk3LTIyLjU2LTguNTgtMjIuMzFoLTg4LjVjMy40OS0xMy4xMiA3Ljg3LTI2LjY2IDEzLjEyLTQwLjY3IDAgMC0yNC4wNyAwLTMyLjI3IDIxLjU3LTMuMzkgOC45LTEzLjIxIDQzLjE0LTMwLjcgNzguMTIgNS44OS0uNjQgMjUuMzctMS4xOCAzNi44NC0yMi4yMSAyLjExLTUuODkgMi41MS02LjY2IDUuMTQtMTQuNTNoMjguODdjMCAxMC41LTEuMiA2Ni44OC0xLjY4IDczLjQ0SDIwLjgzYy0xMS43NCAwLTE1LjU2IDIzLjYyLTE1LjU2IDIzLjYyaDY1LjU4QzY2LjQ1IDMyMS4xIDQyLjgzIDM2My4xMiAwIDM5Ni4zNGMyMC40OSA1Ljg1IDQwLjkxLS45MyA1MS05LjkgMCAwIDIyLjk4LTIwLjkgMzUuNTktNjkuMjVsNTMuOTYgNjQuOTRzNy45MS0yNi44OS0xLjI0LTM5Ljk5Yy03LjU4LTguOTItMjguMDYtMzMuMDYtMzYuNzktNDEuODFMODcuOSAzMTEuOTVjNC4zNi0xMy45OCA2Ljk5LTI3LjU1IDcuODctNDAuNjdoNjEuNjVzLS4wOS0yMy42Mi03LjU5LTIzLjYydi4wMXptNDEyLjAyLTEuNmMyMC44My0yNS42NCA0NC45OC01OC41NyA0NC45OC01OC41N3MtMTguNjUtMTQuOC0yNy4zOC00LjA2Yy02IDguMTUtMzYuODMgNDguMi0zNi44MyA0OC4ybDE5LjIzIDE0LjQzem0tMTUwLjA5LTU5LjA5Yy05LjAxLTguMjUtMjUuOTEgMi4xMy0yNS45MSAyLjEzczM5LjUyIDU1LjA0IDQxLjEyIDU3LjQ1bDE5LjQ2LTEzLjczcy0yNS42Ny0zNy42MS0zNC42Ni00NS44NmgtLjAxek02NDAgMjU4LjM1Yy0xOS43OCAwLTEzMC45MS45My0xMzEuMDYuOTN2LTEwMWM0LjgxIDAgMTIuNDItLjQgMjIuODUtMS4yIDQwLjg4LTIuNDEgNzAuMTMtNCA4Ny43Ny00LjgxIDAgMCAxMi4yMi0yNy4xOS0uNTktMzMuNDQtMy4wNy0xLjE4LTIzLjE3IDQuNTgtMjMuMTcgNC41OHMtMTY1LjIyIDE2LjQ5LTIzMi4zNiAxOC4wNWMxLjYgOC44MiA3LjYyIDE3LjA4IDE1Ljc4IDE5LjU1IDEzLjMxIDMuNDggMjIuNjkgMS43IDQ5LjE1Ljg5IDI0LjgzLTEuNiA0My42OC0yLjQzIDU2LjUxLTIuNDN2OTkuODFIMzUxLjQxczIuODIgMjIuMzEgMjUuNTEgMjIuODVoMTA3Ljk0djcwLjkyYzAgMTMuOTctMTEuMTkgMjEuOTktMjQuNDggMjEuMTItMTQuMDguMTEtMjYuMDgtMS4xNS00MS42OS0xLjgxIDEuOTkgMy45NyA2LjMzIDE0LjM5IDE5LjMxIDIxLjg0IDkuODggNC44MSAxNi4xNyA2LjU3IDI2LjAyIDYuNTcgMjkuNTYgMCA0NS42Ny0xNy4yOCA0NC44OS00NS4zMXYtNzMuMzJoMTIyLjM2YzkuNjggMCA4LjctMjMuNzggOC43LTIzLjc4bC4wMy0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ny41MiAyNzJoMzYuOTZMMTc2IDIxOC43OCAxNTcuNTIgMjcyek0zNTIgMjU2Yy0xMy4yMyAwLTI0IDEwLjc3LTI0IDI0czEwLjc3IDI0IDI0IDI0IDI0LTEwLjc3IDI0LTI0LTEwLjc3LTI0LTI0LTI0ek00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI1MC41OCAzNTJoLTE2Ljk0Yy02LjgxIDAtMTIuODgtNC4zMi0xNS4xMi0xMC43NUwyMTEuMTUgMzIwaC03MC4yOWwtNy4zOCAyMS4yNUExNiAxNiAwIDAgMSAxMTguMzYgMzUyaC0xNi45NGMtMTEuMDEgMC0xOC43My0xMC44NS0xNS4xMi0yMS4yNUwxNDAgMTc2LjEyQTIzLjk5NSAyMy45OTUgMCAwIDEgMTYyLjY3IDE2MGgyNi42NkEyMy45OSAyMy45OSAwIDAgMSAyMTIgMTc2LjEzbDUzLjY5IDE1NC42MmMzLjYxIDEwLjQtNC4xMSAyMS4yNS0xNS4xMSAyMS4yNXpNNDI0IDMzNmMwIDguODQtNy4xNiAxNi0xNiAxNmgtMTZjLTQuODUgMC05LjA0LTIuMjctMTEuOTgtNS42OC04LjYyIDMuNjYtMTguMDkgNS42OC0yOC4wMiA1LjY4LTM5LjcgMC03Mi0zMi4zLTcyLTcyczMyLjMtNzIgNzItNzJjOC40NiAwIDE2LjQ2IDEuNzMgMjQgNC40MlYxNzZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwdi02NGgyMGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjB2LTY0aDIwem0tMjI4LTMyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkgxMTguNEMxMDYgMzg0IDk2IDM3NS40IDk2IDM2NC44di0xOS4yYzAtMzEuOCAzMC4xLTU3LjYgNjcuMi01Ny42aDVjMTIuMyA1LjEgMjUuNyA4IDM5LjggOHMyNy42LTIuOSAzOS44LThoNWMzNy4xIDAgNjcuMiAyNS44IDY3LjIgNTcuNnYxOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZGRyZXNzQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMzUyIDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkg4Ni40Qzc0IDM4NCA2NCAzNzUuNCA2NCAzNjQuOHYtMTkuMmMwLTMxLjggMzAuMS01Ny42IDY3LjItNTcuNmg1YzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDVjMzcuMSAwIDY3LjIgMjUuOCA2Ny4yIDU3LjZ2MTkuMnpNNTEyIDMxMmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTY0YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtNjRjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWRqdXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjU2YzAgMTM2Ljk2NiAxMTEuMDMzIDI0OCAyNDggMjQ4czI0OC0xMTEuMDM0IDI0OC0yNDhTMzkyLjk2NiA4IDI1NiA4IDggMTE5LjAzMyA4IDI1NnptMjQ4IDE4NFY3MmMxMDEuNzA1IDAgMTg0IDgyLjMxMSAxODQgMTg0IDAgMTAxLjcwNS04Mi4zMTEgMTg0LTE4NCAxODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFpckZyZXNoZW5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTYwSDk2QzQzIDE2MCAwIDIwMyAwIDI1NlY0ODBDMCA0OTcuNjI1IDE0LjM3NSA1MTIgMzIgNTEySDI4OEMzMDUuNjI1IDUxMiAzMjAgNDk3LjYyNSAzMjAgNDgwVjI1NkMzMjAgMjAzIDI3NyAxNjAgMjI0IDE2MFpNMTYwIDQxNkMxMTUuODc1IDQxNiA4MCAzODAuMTI1IDgwIDMzNlMxMTUuODc1IDI1NiAxNjAgMjU2UzI0MCAyOTEuODc1IDI0MCAzMzZTMjA0LjEyNSA0MTYgMTYwIDQxNlpNMjI0IDMyQzIyNCAxNC4zNzUgMjA5LjYyNSAwIDE5MiAwSDEyOEMxMTAuMzc1IDAgOTYgMTQuMzc1IDk2IDMyVjEyOEgyMjRWMzJaTTM4MS43ODEgNTEuNTc4QzM4MyA1MC45NjkgMzg0IDQ5LjM1OSAzODQgNDhDMzg0IDQ2LjYyNSAzODMgNDUuMDMxIDM4MS43ODEgNDQuNDIyTDM1MiAzMkwzMzkuNTYyIDIuMjE5QzMzOC45NjkgMSAzMzcuMzc1IDAgMzM2IDBTMzMzLjAzMSAxIDMzMi40MDYgMi4yMTlMMzIwIDMyTDI5MC4yMTkgNDQuNDIyQzI4OSA0NS4wMzEgMjg4IDQ2LjYyNSAyODggNDhDMjg4IDQ5LjM1OSAyODkgNTAuOTY5IDI5MC4yMTkgNTEuNTc4TDMyMCA2NEwzMzIuNDA2IDkzLjc4MUMzMzMuMDMxIDk1IDMzNC42MjUgOTYgMzM2IDk2UzMzOC45NjkgOTUgMzM5LjU2MiA5My43ODFMMzUyIDY0TDM4MS43ODEgNTEuNTc4Wk00NDggNjRMNDYwLjQwNiA5My43ODFDNDYxLjAzMSA5NSA0NjIuNjI1IDk2IDQ2NCA5NlM0NjYuOTY5IDk1IDQ2Ny41NjIgOTMuNzgxTDQ4MCA2NEw1MDkuNzgxIDUxLjU3OEM1MTEgNTAuOTY5IDUxMiA0OS4zNTkgNTEyIDQ4QzUxMiA0Ni42MjUgNTExIDQ1LjAzMSA1MDkuNzgxIDQ0LjQyMkw0ODAgMzJMNDY3LjU2MiAyLjIxOUM0NjYuOTY5IDEgNDY1LjM3NSAwIDQ2NCAwUzQ2MS4wMzEgMSA0NjAuNDA2IDIuMjE5TDQ0OCAzMkw0MTguMjE5IDQ0LjQyMkM0MTcgNDUuMDMxIDQxNiA0Ni42MjUgNDE2IDQ4QzQxNiA0OS4zNTkgNDE3IDUwLjk2OSA0MTguMjE5IDUxLjU3OEw0NDggNjRaTTQ4MCAyMjRMNDY3LjU2MiAxOTQuMjE5QzQ2Ni45NjkgMTkzIDQ2NS4zNzUgMTkyIDQ2NCAxOTJTNDYxLjAzMSAxOTMgNDYwLjQwNiAxOTQuMjE5TDQ0OCAyMjRMNDE4LjIxOSAyMzYuNDIyQzQxNyAyMzcuMDMxIDQxNiAyMzguNjI1IDQxNiAyNDBDNDE2IDI0MS4zNTkgNDE3IDI0Mi45NjkgNDE4LjIxOSAyNDMuNTc4TDQ0OCAyNTZMNDYwLjQwNiAyODUuNzgxQzQ2MS4wMzEgMjg3IDQ2Mi42MjUgMjg4IDQ2NCAyODhTNDY2Ljk2OSAyODcgNDY3LjU2MiAyODUuNzgxTDQ4MCAyNTZMNTA5Ljc4MSAyNDMuNTc4QzUxMSAyNDIuOTY5IDUxMiAyNDEuMzU5IDUxMiAyNDBDNTEyIDIzOC42MjUgNTExIDIzNy4wMzEgNTA5Ljc4MSAyMzYuNDIyTDQ4MCAyMjRaTTQ0NS43ODEgMTQ3LjU3OEM0NDcgMTQ2Ljk2OSA0NDggMTQ1LjM1OSA0NDggMTQ0QzQ0OCAxNDIuNjI1IDQ0NyAxNDEuMDMxIDQ0NS43ODEgMTQwLjQyMkw0MTYgMTI4TDQwMy41NjIgOTguMjE5QzQwMi45NjkgOTcgNDAxLjM3NSA5NiA0MDAgOTZTMzk3LjAzMSA5NyAzOTYuNDA2IDk4LjIxOUwzODQgMTI4TDM1NC4yMTkgMTQwLjQyMkMzNTMgMTQxLjAzMSAzNTIgMTQyLjYyNSAzNTIgMTQ0QzM1MiAxNDUuMzU5IDM1MyAxNDYuOTY5IDM1NC4yMTkgMTQ3LjU3OEwzODQgMTYwTDM5Ni40MDYgMTg5Ljc4MUMzOTcuMDMxIDE5MSAzOTguNjI1IDE5MiA0MDAgMTkyUzQwMi45NjkgMTkxIDQwMy41NjIgMTg5Ljc4MUw0MTYgMTYwTDQ0NS43ODEgMTQ3LjU3OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDE2MEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDI1NkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0xMDguMSA5NmgyMzEuODFBMTIuMDkgMTIuMDkgMCAwIDAgMzUyIDgzLjlWNDQuMDlBMTIuMDkgMTIuMDkgMCAwIDAgMzM5LjkxIDMySDEwOC4xQTEyLjA5IDEyLjA5IDAgMCAwIDk2IDQ0LjA5VjgzLjlBMTIuMSAxMi4xIDAgMCAwIDEwOC4xIDk2em0yMzEuODEgMjU2QTEyLjA5IDEyLjA5IDAgMCAwIDM1MiAzMzkuOXYtMzkuODFBMTIuMDkgMTIuMDkgMCAwIDAgMzM5LjkxIDI4OEgxMDguMUExMi4wOSAxMi4wOSAwIDAgMCA5NiAzMDAuMDl2MzkuODFhMTIuMSAxMi4xIDAgMCAwIDEyLjEgMTIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25KdXN0aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsaWduTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi44MyAzNTJoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDI4OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDI3NS4xNyAyODhIMTIuODNBMTIuODIgMTIuODIgMCAwIDAgMCAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMTIuODMgMzUyem0wLTI1NmgyNjIuMzRBMTIuODIgMTIuODIgMCAwIDAgMjg4IDgzLjE3VjQ0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDI3NS4xNyAzMkgxMi44M0ExMi44MiAxMi44MiAwIDAgMCAwIDQ0LjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDEyLjgzIDk2ek00MzIgMTYwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMjU2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsaWduUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMjI0aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTQxNiAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0zODRIMTcyLjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE2MCA0NC44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAxNzIuODMgOTZoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCA4My4xN1Y0NC44M0ExMi44MiAxMi44MiAwIDAgMCA0MzUuMTcgMzJ6bTAgMjU2SDE3Mi44M0ExMi44MiAxMi44MiAwIDAgMCAxNjAgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDE3Mi44MyAzNTJoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsbGVyZ2llcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMTEyYy0xNy42IDAtMzIgMTQuNC0zMiAzMnY3MmMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LThWNjRjMC0xNy42LTE0LjQtMzItMzItMzJzLTMyIDE0LjQtMzIgMzJ2MTUyYzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOFYzMmMwLTE3LjYtMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnYxODRjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjY0YzAtMTcuNi0xNC40LTMyLTMyLTMyUzk2IDQ2LjQgOTYgNjR2MjQxbC0yMy42LTMyLjVjLTEzLTE3LjktMzgtMjEuOC01NS45LTguOHMtMjEuOCAzOC04LjggNTUuOWwxMjUuNiAxNzIuN2M5IDEyLjQgMjMuNSAxOS44IDM4LjggMTkuOGgxOTcuNmMyMi4zIDAgNDEuNi0xNS4zIDQ2LjctMzdsMjYuNS0xMTIuN2MzLjItMTMuNyA0LjktMjguMyA1LjEtNDIuM1YxNDRjMC0xNy42LTE0LjQtMzItMzItMzJ6TTE3NiA0MTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em02NCAxMjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em02NCAzMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMiA2NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMi0xMjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1idWxhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxNmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDEyOGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek0xNjAgNDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMTQ0LTI0OGMwIDQuNC0zLjYgOC04IDhoLTU2djU2YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOHYtNTZoLTU2Yy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh2NDh6bTE3NiAyNDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em04MC0yMDhINDE2VjE0NGg0NC4xbDk5LjkgOTkuOVYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC41NDcgMTg5LjAzOWMtMjAuMjk1LTEwLjE0OS00NC4xNDctMTEuMTk5LTY0LjczOS0zLjg5IDQyLjYwNiAwIDcxLjIwOCAyMC40NzUgODUuNTc4IDUwLjU3NiA4LjU3NiAxNy44OTktNS4xNDggMzguMDcxLTIzLjYxNyAzOC4wNzEgMTguNDI5IDAgMzIuMjExIDIwLjEzNiAyMy42MTcgMzguMDcxLTE0LjcyNSAzMC44NDYtNDYuMTIzIDUwLjg1NC04MC4yOTggNTAuODU0LS41NTcgMC05NC40NzEtOC42MTUtOTQuNDcxLTguNjE1bC02Ni40MDYgMzMuMzQ3Yy05LjM4NCA0LjY5My0xOS44MTUuMzc5LTIzLjg5NS03Ljc4MUwxLjg2IDI5MC43NDdjLTQuMTY3LTguNjE1LTEuMTExLTE4Ljg5NyA2Ljk0Ni0yMy42MjFsNTguMDcyLTMzLjA2OUwxMDggMTU5Ljg2MWM2LjM5LTU3LjI0NSAzNC43MzEtMTA5Ljc2NyA3OS43NDMtMTQ2LjcyNiAxMS4zOTEtOS40NDggMjguMzQxLTcuNzgxIDM3LjUxIDMuNjEzIDkuNDQ2IDExLjM5NCA3Ljc4IDI4LjA2Ny0zLjYxMiAzNy41MTYtMTIuNTAzIDEwLjU1OS0yMy42MTggMjIuNTA5LTMyLjUwOSAzNS41NyAyMS42NzItMTQuNzI5IDQ2LjY3OS0yNC43MzIgNzQuMTg2LTI4LjA2NyAxNC43MjUtMS45NDUgMjguMDYzIDguMzM2IDI5LjczIDIzLjA2NSAxLjk0NSAxNC43MjgtOC4zMzYgMjguMDY3LTIzLjA2MiAyOS43MzQtMTYuMTE2IDEuOTQ1LTMxLjEyIDcuNTAzLTQ0LjE3OCAxNS4yODQgMjYuMTE0LTUuNzEzIDU4LjcxMi0zLjEzOCA4OC4wNzkgMTEuMTE1IDEzLjMzNiA2LjY2OSAxOC44OTMgMjIuNTA5IDEyLjIyNCAzNS44NDgtNi4zODkgMTMuMDYtMjIuNTA0IDE4LjYxNy0zNS41NjQgMTIuMjI2em0tMjcuMjI5IDY5LjQ3MmMtNi4xMTItMTIuNTA1LTE4LjMzOC0yMC4yODYtMzIuMjMxLTIwLjI4NmEzNS40NiAzNS40NiAwIDAgMC0zNS41NjUgMzUuNTdjMCAyMS40MjggMTcuODA4IDM1LjU3IDM1LjU2NSAzNS41NyAxMy44OTMgMCAyNi4xMTktNy43ODEgMzIuMjMxLTIwLjI4NiA0LjQ0Ni05LjQ0OSAxMy42MTQtMTUuMDA2IDIzLjMzOS0xNS4yODQtOS43MjUtLjI3Ny0xOC44OTMtNS44MzUtMjMuMzM5LTE1LjI4NHptMzc0LjgyMS0zNy4yMzdjNC4xNjggOC42MTUgMS4xMTEgMTguODk3LTYuOTQ2IDIzLjYyMWwtNTguMDcxIDMzLjA2OUw1MzIgMzUyLjE2Yy02LjM5IDU3LjI0NS0zNC43MzEgMTA5Ljc2Ny03OS43NDMgMTQ2LjcyNi0xMC45MzIgOS4xMTItMjcuNzk5IDguMTQ0LTM3LjUxLTMuNjEzLTkuNDQ2LTExLjM5NC03Ljc4LTI4LjA2NyAzLjYxMy0zNy41MTYgMTIuNTAzLTEwLjU1OSAyMy42MTctMjIuNTA5IDMyLjUwOC0zNS41Ny0yMS42NzIgMTQuNzI5LTQ2LjY3OSAyNC43MzItNzQuMTg2IDI4LjA2Ny0xMC4wMjEgMi41MDYtMjcuNTUyLTUuNjQzLTI5LjczLTIzLjA2NS0xLjk0NS0xNC43MjggOC4zMzYtMjguMDY3IDIzLjA2Mi0yOS43MzQgMTYuMTE2LTEuOTQ2IDMxLjEyLTcuNTAzIDQ0LjE3OC0xNS4yODQtMjYuMTE0IDUuNzEzLTU4LjcxMiAzLjEzOC04OC4wNzktMTEuMTE1LTEzLjMzNi02LjY2OS0xOC44OTMtMjIuNTA5LTEyLjIyNC0zNS44NDggNi4zODktMTMuMDYxIDIyLjUwNS0xOC42MTkgMzUuNTY1LTEyLjIyNyAyMC4yOTUgMTAuMTQ5IDQ0LjE0NyAxMS4xOTkgNjQuNzM5IDMuODktNDIuNjA2IDAtNzEuMjA4LTIwLjQ3NS04NS41NzgtNTAuNTc2LTguNTc2LTE3Ljg5OSA1LjE0OC0zOC4wNzEgMjMuNjE3LTM4LjA3MS0xOC40MjkgMC0zMi4yMTEtMjAuMTM2LTIzLjYxNy0zOC4wNzEgMTQuMDMzLTI5LjM5NiA0NC4wMzktNTAuODg3IDgxLjk2Ni01MC44NTRsOTIuODAzIDguNjE1IDY2LjQwNi0zMy4zNDdjOS40MDgtNC43MDQgMTkuODI4LS4zNTQgMjMuODk0IDcuNzgxbDQ0LjQ1NSA4OC45MjZ6bS0yMjkuMjI3LTE4LjYxOGMtMTMuODkzIDAtMjYuMTE5IDcuNzgxLTMyLjIzMSAyMC4yODYtNC40NDYgOS40NDktMTMuNjE0IDE1LjAwNi0yMy4zMzkgMTUuMjg0IDkuNzI1LjI3OCAxOC44OTMgNS44MzYgMjMuMzM5IDE1LjI4NCA2LjExMiAxMi41MDUgMTguMzM4IDIwLjI4NiAzMi4yMzEgMjAuMjg2YTM1LjQ2IDM1LjQ2IDAgMCAwIDM1LjU2NS0zNS41N2MwLTIxLjQyOS0xNy44MDgtMzUuNTctMzUuNTY1LTM1LjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmNob3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOTcxIDM1MmgzMi4zOTRDNjcuMTcyIDQ1NC43MzUgMTgxLjk0NCA1MTIgMjg4IDUxMmMxMDYuMjI5IDAgMjIwLjg1My01Ny4zOCAyNDIuNjM1LTE2MGgzMi4zOTRjMTAuNjkxIDAgMTYuMDQ1LTEyLjkyNiA4LjQ4NS0yMC40ODVsLTY3LjAyOS02Ny4wMjljLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMGwtNjcuMDI5IDY3LjAyOWMtNy41NiA3LjU2LTIuMjA2IDIwLjQ4NSA4LjQ4NSAyMC40ODVoMzUuMTQ2Yy0yMC4yOSA1NC4zMTctODQuOTYzIDg2LjU4OC0xNDQuMTE3IDk0LjAxNVYyNTZoNTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNTJ2LTUuNDdjMzcuMjgxLTEzLjE3OCA2My45OTUtNDguNzI1IDY0LTkwLjUxOEMzODQuMDA1IDQzLjc3MiAzNDEuNjA1LjczOCAyODkuMzcuMDEgMjM1LjcyMy0uNzM5IDE5MiA0Mi41MjUgMTkyIDk2YzAgNDEuNzk4IDI2LjcxNiA3Ny4zNSA2NCA5MC41M1YxOTJoLTUyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTJ2MTkwLjAxNWMtNTguOTM2LTcuMzk5LTEyMy44Mi0zOS42NzktMTQ0LjExNy05NC4wMTVoMzUuMTQ2YzEwLjY5MSAwIDE2LjA0NS0xMi45MjYgOC40ODUtMjAuNDg1bC02Ny4wMjktNjcuMDI5Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMNC40ODUgMzMxLjUxNUMtMy4wNzQgMzM5LjA3NCAyLjI4IDM1MiAxMi45NzEgMzUyek0yODggNjRjMTcuNjQ1IDAgMzIgMTQuMzU1IDMyIDMycy0xNC4zNTUgMzItMzIgMzItMzItMTQuMzU1LTMyLTMyIDE0LjM1NS0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVEb3VibGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0MyAyNTYuM0w3IDEyMC4zYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWwyMi42LTIyLjZjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsOTYuNCA5Ni40IDk2LjQtOTYuNGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMEwzMTMgODYuM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMTM2IDEzNmMtOS40IDkuNS0yNC42IDkuNS0zNCAuMXptMzQgMTkybDEzNi0xMzZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTIyLjYtMjIuNmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMTYwIDM1Mi4xbC05Ni40LTk2LjRjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMjc4LjNjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDEzNiAxMzZjOS40IDkuNSAyNC42IDkuNSAzNCAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVEb3VibGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMy43IDIzOWwxMzYtMTM2YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwzMTkuOSAyNTZsOTYuNCA5Ni40YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDM5My43IDQwOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTEzNi0xMzZjLTkuNS05LjQtOS41LTI0LjYtLjEtMzR6bS0xOTIgMzRsMTM2IDEzNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyMi42LTIyLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMTI3LjkgMjU2bDk2LjQtOTYuNGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyMDEuNyAxMDNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMzYgMTM2Yy05LjUgOS40LTkuNSAyNC42LS4xIDM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvdWJsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC4zIDI3M2wtMTM2IDEzNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjYtMjIuNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsOTYuNC05Ni40LTk2LjQtOTYuNGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMNTQuMyAxMDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTM2IDEzNmM5LjUgOS40IDkuNSAyNC42LjEgMzR6bTE5Mi0zNGwtMTM2LTEzNmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTIyLjYgMjIuNmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsOTYuNCA5Ni40LTk2LjQgOTYuNGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMjIuNiAyMi42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDEzNi0xMzZjOS40LTkuMiA5LjQtMjQuNCAwLTMzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlRG91YmxlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc3IDI1NS43bDEzNiAxMzZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTIyLjYgMjIuNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTYwIDM1MS45bC05Ni40IDk2LjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDcgNDI1LjdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDEzNi0xMzZjOS40LTkuNSAyNC42LTkuNSAzNC0uMXptLTM0LTE5Mkw3IDE5OS43Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwyMi42IDIyLjZjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsOTYuNC05Ni40IDk2LjQgOTYuNGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyMi42LTIyLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTEzNi0xMzZjLTkuMi05LjQtMjQuNC05LjQtMzMuOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQzIDM1Mi4zTDcgMjE2LjNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDIyLjYtMjIuNmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw5Ni40IDk2LjQgOTYuNC05Ni40YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMTM2IDEzNmMtOS4yIDkuNC0yNC40IDkuNC0zMy44IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMS43IDIzOWwxMzYtMTM2YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwxMjcuOSAyNTZsOTYuNCA5Ni40YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDIwMS43IDQwOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTEzNi0xMzZjLTkuNS05LjQtOS41LTI0LjYtLjEtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjMgMjczbC0xMzYgMTM2Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjIuNi0yMi42Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw5Ni40LTk2LjQtOTYuNC05Ni40Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUw1NC4zIDEwM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxMzYgMTM2YzkuNSA5LjQgOS41IDI0LjYuMSAzNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcgMTU5LjdsMTM2IDEzNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMjIuNiAyMi42Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxNjAgMjU1LjlsLTk2LjQgOTYuNGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyAzMjkuN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMTM2LTEzNmM5LjQtOS41IDI0LjYtOS41IDM0LS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek0xMzYgMjQwYzAtOS4zIDQuMS0xNy41IDEwLjUtMjMuNGwtMzEtOS4zYy04LjUtMi41LTEzLjMtMTEuNS0xMC43LTE5LjkgMi41LTguNSAxMS40LTEzLjIgMTkuOS0xMC43bDgwIDI0YzguNSAyLjUgMTMuMyAxMS41IDEwLjcgMTkuOS0yLjEgNi45LTguNCAxMS40LTE1LjMgMTEuNC0uNSAwLTEuMS0uMi0xLjctLjIuNyAyLjcgMS43IDUuMyAxLjcgOC4yIDAgMTcuNy0xNC4zIDMyLTMyIDMyUzEzNiAyNTcuNyAxMzYgMjQwem0xNjggMTU0LjJjLTI3LjgtMzMuNC04NC4yLTMzLjQtMTEyLjEgMC0xMy41IDE2LjMtMzguMi00LjItMjQuNi0yMC41IDIwLTI0IDQ5LjQtMzcuOCA4MC42LTM3LjhzNjAuNiAxMy44IDgwLjYgMzcuOGMxMy44IDE2LjUtMTEuMSAzNi42LTI0LjUgMjAuNXptNzYuNi0xODYuOWwtMzEgOS4zYzYuMyA1LjggMTAuNSAxNC4xIDEwLjUgMjMuNCAwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTIuOS45LTUuNiAxLjctOC4yLS42LjEtMS4xLjItMS43LjItNi45IDAtMTMuMi00LjUtMTUuMy0xMS40LTIuNS04LjUgMi4zLTE3LjQgMTAuNy0xOS45bDgwLTI0YzguNC0yLjUgMTcuNCAyLjMgMTkuOSAxMC43IDIuNSA4LjUtMi4zIDE3LjQtMTAuOCAxOS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmtoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NiAyNTZoLTQ0LjYyQzI3Mi40NiAyMjIuMDEgMjg4IDE4MS42NSAyODggMTQ0IDI4OCA1NS42MyAyMzAuNjkgMCAxNjAgMFMzMiA1NS42MyAzMiAxNDRjMCAzNy42NSAxNS41NCA3OC4wMSAzNi42MiAxMTJIMjRjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2MzJjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg5NnYxNTJjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGgzMmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0VjMzNmg5NmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di0zMmMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0ek0xNjAgODBjMjkuNjEgMCA0OCAyNC41MiA0OCA2NCAwIDM0LjY2LTI3LjE0IDc4LjE0LTQ4IDEwMC44Ny0yMC44Ni0yMi43Mi00OC02Ni4yMS00OC0xMDAuODcgMC0zOS40OCAxOC4zOS02NCA0OC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwbGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUwLjg1IDEyOWMyNS45NyA0LjY3IDQ3LjI3IDE4LjY3IDYzLjkyIDQyIDE0LjY1IDIwLjY3IDI0LjY0IDQ2LjY3IDI5Ljk2IDc4IDQuNjcgMjguNjcgNC4zMiA1Ny4zMy0xIDg2LTcuOTkgNDcuMzMtMjMuOTcgODctNDcuOTQgMTE5LTI4LjY0IDM4LjY3LTY0LjU5IDU4LTEwNy44NyA1OC0xMC42NiAwLTIyLjMtMy4zMy0zNC45Ni0xMC04LjY2LTUuMzMtMTguMzEtOC0yOC45Ny04cy0yMC4zIDIuNjctMjguOTcgOGMtMTIuNjYgNi42Ny0yNC4zIDEwLTM0Ljk2IDEwLTQzLjI4IDAtNzkuMjMtMTkuMzMtMTA3Ljg3LTU4LTIzLjk3LTMyLTM5Ljk1LTcxLjY3LTQ3Ljk0LTExOS01LjMyLTI4LjY3LTUuNjctNTcuMzMtMS04NiA1LjMyLTMxLjMzIDE1LjMxLTU3LjMzIDI5Ljk2LTc4IDE2LjY1LTIzLjMzIDM3Ljk1LTM3LjMzIDYzLjkyLTQyIDE1Ljk4LTIuNjcgMzcuOTUtLjMzIDY1LjkyIDcgMjMuOTcgNi42NyA0NC4yOCAxNC42NyA2MC45MyAyNCAxNi42NS05LjMzIDM2Ljk2LTE3LjMzIDYwLjkzLTI0IDI3Ljk4LTcuMzMgNDkuOTYtOS42NyA2NS45NC03em0tNTQuOTQtNDFjLTkuMzIgOC42Ny0yMS42NSAxNS0zNi45NiAxOS0xMC42NiAzLjMzLTIyLjMgNS0zNC45NiA1bC0xNC45OC0xYy0xLjMzLTkuMzMtMS4zMy0yMCAwLTMyIDIuNjctMjQgMTAuMzItNDIuMzMgMjIuOTctNTUgOS4zMi04LjY3IDIxLjY1LTE1IDM2Ljk2LTE5IDEwLjY2LTMuMzMgMjIuMy01IDM0Ljk2LTVsMTQuOTggMSAxIDE1YzAgMTIuNjctMS42NyAyNC4zMy00Ljk5IDM1LTMuOTkgMTUuMzMtMTAuMzEgMjcuNjctMTguOTggMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDM4NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBIMzJ2Mjg4em0xNjAtMjEyYzAtNi42IDUuNC0xMiAxMi0xMmgxMDRjNi42IDAgMTIgNS40IDEyIDEydjhjMCA2LjYtNS40IDEyLTEyIDEySDIwNGMtNi42IDAtMTItNS40LTEyLTEydi04ek00ODAgMzJIMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoNDgwYzguOCAwIDE2LTcuMiAxNi0xNlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJjaHdheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjAgNDQ4aC0xNlY5NkgzMnYzNTJIMTYuMDJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2SDE3NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYzMjBjMC01My4wMiA0Mi45OC05NiA5Ni05NnM5NiA0Mi45OCA5NiA5NmwuMDIgMTYwdjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2SDU2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTAtNDQ4SDE2QzcuMTYgMCAwIDcuMTYgMCAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg1NDRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6TTIxMiAxNDB2MTE2aC03MC45Yy0xMC43IDAtMTYuMSAxMy04LjUgMjAuNWwxMTQuOSAxMTQuM2M0LjcgNC43IDEyLjIgNC43IDE2LjkgMGwxMTQuOS0xMTQuM2M3LjYtNy42IDIuMi0yMC41LTguNS0yMC41SDMwMFYxNDBjMC02LjYtNS40LTEyLTEyLTEyaC02NGMtNi42IDAtMTIgNS40LTEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0FsdENpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNEMxMTkgNTA0IDggMzkzIDggMjU2UzExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDh6bTExNi0yOTJIMjU2di03MC45YzAtMTAuNy0xMy0xNi4xLTIwLjUtOC41TDEyMS4yIDI0Ny41Yy00LjcgNC43LTQuNyAxMi4yIDAgMTYuOWwxMTQuMyAxMTQuOWM3LjYgNy42IDIwLjUgMi4yIDIwLjUtOC41VjMwMGgxMTZjNi42IDAgMTItNS40IDEyLTEydi02NGMwLTYuNi01LjQtMTItMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhjMTM3IDAgMjQ4IDExMSAyNDggMjQ4UzM5MyA1MDQgMjU2IDUwNCA4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHpNMTQwIDMwMGgxMTZ2NzAuOWMwIDEwLjcgMTMgMTYuMSAyMC41IDguNWwxMTQuMy0xMTQuOWM0LjctNC43IDQuNy0xMi4yIDAtMTYuOWwtMTE0LjMtMTE1Yy03LjYtNy42LTIwLjUtMi4yLTIwLjUgOC41VjIxMkgxNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY2NGMwIDYuNiA1LjQgMTIgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNTZDOCAxMTkgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NnptMjkyIDExNlYyNTZoNzAuOWMxMC43IDAgMTYuMS0xMyA4LjUtMjAuNUwyNjQuNSAxMjEuMmMtNC43LTQuNy0xMi4yLTQuNy0xNi45IDBsLTExNSAxMTQuM2MtNy42IDcuNi0yLjIgMjAuNSA4LjUgMjAuNUgyMTJ2MTE2YzAgNi42IDUuNCAxMiAxMiAxMmg2NGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93Q2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xNDMuNi0yOC45TDI4OCAzMDIuNlYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTE2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxODIuNmwtNzIuNC03NS41Yy05LjMtOS43LTI0LjgtOS45LTM0LjMtLjRsLTEwLjkgMTFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45TDIzOSA0MDQuM2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxMzIuNy0xMzIuN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMTAuOS0xMWMtOS41LTkuNS0yNS05LjMtMzQuMy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0NpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNEMxMTkgNTA0IDggMzkzIDggMjU2UzExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDh6bTI4LjktMTQzLjZMMjA5LjQgMjg4SDM5MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjA5LjRsNzUuNS03Mi40YzkuNy05LjMgOS45LTI0LjguNC0zNC4zbC0xMS0xMC45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxMDcuNyAyMzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDEzMi43IDEzMi43YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDExLTEwLjljOS41LTkuNSA5LjMtMjUtLjQtMzQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOGMxMzcgMCAyNDggMTExIDI0OCAyNDhTMzkzIDUwNCAyNTYgNTA0IDggMzkzIDggMjU2IDExOSA4IDI1NiA4em0tMjguOSAxNDMuNmw3NS41IDcyLjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxODIuNmwtNzUuNSA3Mi40Yy05LjcgOS4zLTkuOSAyNC44LS40IDM0LjNsMTEgMTAuOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMEw0MDQuMyAyNzNjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMjcxLjYgMTA2LjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMSAxMC45Yy05LjUgOS42LTkuMyAyNS4xLjQgMzQuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI1NkM4IDExOSAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDgtMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2em0xNDMuNiAyOC45bDcyLjQtNzUuNVYzOTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjA5LjRsNzIuNCA3NS41YzkuMyA5LjcgMjQuOCA5LjkgMzQuMy40bDEwLjktMTFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMjczIDEwNy43Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxMDYuMyAyNDAuNGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMTAuOSAxMWM5LjYgOS41IDI1LjEgOS4zIDM0LjQtLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTMuMSAyMjIuNWwyMi4yIDIyLjJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjQxIDQ3M2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTIuNyAyNzguNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMjIuMi0yMi4yYzkuNS05LjUgMjUtOS4zIDM0LjMuNEwxODQgMzQzLjRWNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjR2Mjg3LjRsMTE0LjgtMTIwLjVjOS4zLTkuOCAyNC44LTEwIDM0LjMtLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTcuNSA0NDUuMWwtMjIuMiAyMi4yYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEw3IDI3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMMjAxLjQgNDQuN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwyMi4yIDIyLjJjOS41IDkuNSA5LjMgMjUtLjQgMzQuM0wxMzYuNiAyMTZINDI0YzEzLjMgMCAyNCAxMC43IDI0IDI0djMyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDEzNi42bDEyMC41IDExNC44YzkuOCA5LjMgMTAgMjQuOC40IDM0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkwLjUgNjYuOWwyMi4yLTIyLjJjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMNDQxIDIzOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwyNDYuNiA0NjcuM2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjItMjIuMmMtOS41LTkuNS05LjMtMjUgLjQtMzQuM0wzMTEuNCAyOTZIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0di0zMmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgyODcuNEwxOTAuOSAxMDEuMmMtOS44LTkuMy0xMC0yNC44LS40LTM0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQuOSAyODkuNWwtMjIuMi0yMi4yYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUwyMDcgMzljOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTk0LjMgMTk0LjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMNDEzIDI4OS40Yy05LjUgOS41LTI1IDkuMy0zNC4zLS40TDI2NCAxNjguNlY0NTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRoLTMyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNjguNkw2OS4yIDI4OS4xYy05LjMgOS44LTI0LjggMTAtMzQuMy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NBbHRIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny45NDEgMTY5Ljk0MVYyMTZIMTM0LjA1OXYtNDYuMDU5YzAtMjEuMzgyLTI1Ljg1MS0zMi4wOS00MC45NzEtMTYuOTcxTDcuMDI5IDIzOS4wMjljLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OCAwIDMzLjk0MWw4Ni4wNTkgODYuMDU5YzE1LjExOSAxNS4xMTkgNDAuOTcxIDQuNDExIDQwLjk3MS0xNi45NzFWMjk2aDI0My44ODJ2NDYuMDU5YzAgMjEuMzgyIDI1Ljg1MSAzMi4wOSA0MC45NzEgMTYuOTcxbDg2LjA1OS04Ni4wNTljOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY4IDAtMzMuOTQxbC04Ni4wNTktODYuMDU5Yy0xNS4xMTktMTUuMTItNDAuOTcxLTQuNDEyLTQwLjk3MSAxNi45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzQWx0ViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTQuMDU5IDM3Ny45NDFIMTY4VjEzNC4wNTloNDYuMDU5YzIxLjM4MiAwIDMyLjA5LTI1Ljg1MSAxNi45NzEtNDAuOTcxTDE0NC45NzEgNy4wMjljLTkuMzczLTkuMzczLTI0LjU2OC05LjM3My0zMy45NDEgMEwyNC45NzEgOTMuMDg4Yy0xNS4xMTkgMTUuMTE5LTQuNDExIDQwLjk3MSAxNi45NzEgNDAuOTcxSDg4djI0My44ODJINDEuOTQxYy0yMS4zODIgMC0zMi4wOSAyNS44NTEtMTYuOTcxIDQwLjk3MWw4Ni4wNTkgODYuMDU5YzkuMzczIDkuMzczIDI0LjU2OCA5LjM3MyAzMy45NDEgMGw4Ni4wNTktODYuMDU5YzE1LjEyLTE1LjExOSA0LjQxMi00MC45NzEtMTYuOTctNDAuOTcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyLjIwMSA0MjUuNzc1bC03OS4xOTYgNzkuMTk2Yy05LjM3MyA5LjM3My0yNC41NjggOS4zNzMtMzMuOTQxIDBsLTc5LjE5Ni03OS4xOTZjLTE1LjExOS0xNS4xMTktNC40MTEtNDAuOTcxIDE2Ljk3MS00MC45N2g1MS4xNjJMMjI4IDI4NEgxMjcuMTk2djUxLjE2MmMwIDIxLjM4Mi0yNS44NTEgMzIuMDktNDAuOTcxIDE2Ljk3MUw3LjAyOSAyNzIuOTM3Yy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFMODYuMjI1IDE1OS44YzE1LjExOS0xNS4xMTkgNDAuOTcxLTQuNDExIDQwLjk3MSAxNi45NzFWMjI4SDIyOFYxMjcuMTk2aC01MS4yM2MtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNzkuMTk2LTc5LjE5NmM5LjM3My05LjM3MyAyNC41NjgtOS4zNzMgMzMuOTQxIDBsNzkuMTk2IDc5LjE5NmMxNS4xMTkgMTUuMTE5IDQuNDExIDQwLjk3MS0xNi45NzEgNDAuOTcxaC01MS4xNjJWMjI4aDEwMC44MDR2LTUxLjE2MmMwLTIxLjM4MiAyNS44NTEtMzIuMDkgNDAuOTctMTYuOTcxbDc5LjE5NiA3OS4xOTZjOS4zNzMgOS4zNzMgOS4zNzMgMjQuNTY5IDAgMzMuOTQxTDQyNS43NzMgMzUyLjJjLTE1LjExOSAxNS4xMTktNDAuOTcxIDQuNDExLTQwLjk3LTE2Ljk3MVYyODRIMjg0djEwMC44MDRoNTEuMjNjMjEuMzgyIDAgMzIuMDkgMjUuODUxIDE2Ljk3MSA0MC45NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFzc2lzdGl2ZUxpc3RlbmluZ1N5c3RlbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDI2MGMwIDE1LjQ2NC0xMi41MzYgMjgtMjggMjhzLTI4LTEyLjUzNi0yOC0yOGMwLTQ0LjExMiAzNS44ODgtODAgODAtODBzODAgMzUuODg4IDgwIDgwYzAgMTUuNDY0LTEyLjUzNiAyOC0yOCAyOHMtMjgtMTIuNTM2LTI4LTI4YzAtMTMuMjM0LTEwLjc2Ny0yNC0yNC0yNHMtMjQgMTAuNzY2LTI0IDI0em0yNC0xNzZjLTk3LjA0NyAwLTE3NiA3OC45NTMtMTc2IDE3NiAwIDE1LjQ2NCAxMi41MzYgMjggMjggMjhzMjgtMTIuNTM2IDI4LTI4YzAtNjYuMTY4IDUzLjgzMi0xMjAgMTIwLTEyMHMxMjAgNTMuODMyIDEyMCAxMjBjMCA3NS4xNjQtNzEuMDA5IDcwLjMxMS03MS45OTcgMTQzLjYyMkwyODggNDA0YzAgMjguNjczLTIzLjMyNyA1Mi01MiA1Mi0xNS40NjQgMC0yOCAxMi41MzYtMjggMjhzMTIuNTM2IDI4IDI4IDI4YzU5LjQ3NSAwIDEwNy44NzYtNDguMzI4IDEwOC0xMDcuNzc0LjU5NS0zNC40MjggNzItNDguMjQgNzItMTQ0LjIyNiAwLTk3LjA0Ny03OC45NTMtMTc2LTE3Ni0xNzZ6bS04MCAyMzZjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnpNMzIgNDQ4Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTQ4MC0xODcuOTkzYzAtMS41MTgtLjAxMi0zLjAyNS0uMDQ1LTQuNTMxQzUxMC4wNzYgMTQwLjUyNSA0MzYuMTU3IDM4LjQ3IDMyNy45OTQgMS41MTFjLTE0LjYzMy00Ljk5OC0zMC41NDkgMi44MDktMzUuNTUgMTcuNDQyLTUgMTQuNjMzIDIuODEgMzAuNTQ5IDE3LjQ0MiAzNS41NSA4NS45MDYgMjkuMzU0IDE0NC42MSAxMTAuNTEzIDE0Ni4wNzcgMjAxLjk1M2wuMDAzLjE4OGMuMDI2IDEuMTE4LjAzMyAyLjIzNi4wMzMgMy4zNjMgMCAxNS40NjQgMTIuNTM2IDI4IDI4IDI4czI4LjAwMS0xMi41MzYgMjguMDAxLTI4ek0xNTIuOTcxIDQzOS4wMjlsLTgwLTgwTDM5LjAzIDM5Mi45N2w4MCA4MCAzMy45NDEtMzMuOTQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBc3RlcmlzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzguMjEgMzM0LjA5M0wzMzYgMjU2bDE0Mi4yMS03OC4wOTNjMTEuNzk1LTYuNDc3IDE1Ljk2MS0yMS4zODQgOS4yMzItMzMuMDM3bC0xOS40OC0zMy43NDFjLTYuNzI4LTExLjY1My0yMS43Mi0xNS40OTktMzMuMjI3LTguNTIzTDI5NiAxODYuNzE4bDMuNDc1LTE2Mi4yMDRDMjk5Ljc2MyAxMS4wNjEgMjg4LjkzNyAwIDI3NS40OCAwaC0zOC45NmMtMTMuNDU2IDAtMjQuMjgzIDExLjA2MS0yMy45OTQgMjQuNTE0TDIxNiAxODYuNzE4IDc3LjI2NSAxMDIuNjA3Yy0xMS41MDYtNi45NzYtMjYuNDk5LTMuMTMtMzMuMjI3IDguNTIzbC0xOS40OCAzMy43NDFjLTYuNzI4IDExLjY1My0yLjU2MiAyNi41NiA5LjIzMyAzMy4wMzdMMTc2IDI1NiAzMy43OSAzMzQuMDkzYy0xMS43OTUgNi40NzctMTUuOTYxIDIxLjM4NC05LjIzMiAzMy4wMzdsMTkuNDggMzMuNzQxYzYuNzI4IDExLjY1MyAyMS43MjEgMTUuNDk5IDMzLjIyNyA4LjUyM0wyMTYgMzI1LjI4MmwtMy40NzUgMTYyLjIwNEMyMTIuMjM3IDUwMC45MzkgMjIzLjA2NCA1MTIgMjM2LjUyIDUxMmgzOC45NjFjMTMuNDU2IDAgMjQuMjgzLTExLjA2MSAyMy45OTUtMjQuNTE0TDI5NiAzMjUuMjgybDEzOC43MzUgODQuMTExYzExLjUwNiA2Ljk3NiAyNi40OTkgMy4xMyAzMy4yMjctOC41MjNsMTkuNDgtMzMuNzQxYzYuNzI4LTExLjY1MyAyLjU2My0yNi41NTktOS4yMzItMzMuMDM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTguOTQxIDggOCAxMTguOTE5IDggMjU2YzAgMTM3LjA1OSAxMTAuOTE5IDI0OCAyNDggMjQ4IDQ4LjE1NCAwIDk1LjM0Mi0xNC4xNCAxMzUuNDA4LTQwLjIyMyAxMi4wMDUtNy44MTUgMTQuNjI1LTI0LjI4OCA1LjU1Mi0zNS4zNzJsLTEwLjE3Ny0xMi40MzNjLTcuNjcxLTkuMzcxLTIxLjE3OS0xMS42NjctMzEuMzczLTUuMTI5QzMyNS45MiA0MjkuNzU3IDI5MS4zMTQgNDQwIDI1NiA0NDBjLTEwMS40NTggMC0xODQtODIuNTQyLTE4NC0xODRTMTU0LjU0MiA3MiAyNTYgNzJjMTAwLjEzOSAwIDE4NCA1Ny42MTkgMTg0IDE2MCAwIDM4Ljc4Ni0yMS4wOTMgNzkuNzQyLTU4LjE3IDgzLjY5My0xNy4zNDktLjQ1NC0xNi45MS0xMi44NTctMTMuNDc2LTMwLjAyNGwyMy40MzMtMTIxLjExQzM5NC42NTMgMTQ5Ljc1IDM4My4zMDggMTM2IDM2OC4yMjUgMTM2aC00NC45ODFhMTMuNTE4IDEzLjUxOCAwIDAgMC0xMy40MzIgMTEuOTkzbC0uMDEuMDkyYy0xNC42OTctMTcuOTAxLTQwLjQ0OC0yMS43NzUtNTkuOTcxLTIxLjc3NS03NC41OCAwLTEzNy44MzEgNjIuMjM0LTEzNy44MzEgMTUxLjQ2IDAgNjUuMzAzIDM2Ljc4NSAxMDUuODcgOTYgMTA1Ljg3IDI2Ljk4NCAwIDU3LjM2OS0xNS42MzcgNzQuOTkxLTM4LjMzMyA5LjUyMiAzNC4xMDQgNDAuNjEzIDM0LjEwMyA3MC43MSAzNC4xMDNDNDYyLjYwOSAzNzkuNDEgNTA0IDMwNy43OTggNTA0IDIzMiA1MDQgOTUuNjUzIDM5NC4wMjMgOCAyNTYgOHptLTIxLjY4IDMwNC40M2MtMjIuMjQ5IDAtMzYuMDctMTUuNjIzLTM2LjA3LTQwLjc3MSAwLTQ0Ljk5MyAzMC43NzktNzIuNzI5IDU4LjYzLTcyLjcyOSAyMi4yOTIgMCAzNS42MDEgMTUuMjQxIDM1LjYwMSA0MC43NyAwIDQ1LjA2MS0zMy44NzUgNzIuNzMtNTguMTYxIDcyLjczelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdGxhcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguMzggMjA4aC0zOS4wOWMtMS40OSAyNy4wMy02LjU0IDUxLjM1LTE0LjIxIDcwLjQxIDI3LjcxLTEzLjI0IDQ4LjAyLTM5LjE5IDUzLjMtNzAuNDF6bTAtMzJjLTUuMjktMzEuMjItMjUuNTktNTcuMTctNTMuMy03MC40MSA3LjY4IDE5LjA2IDEyLjcyIDQzLjM4IDE0LjIxIDcwLjQxaDM5LjA5ek0yMjQgOTcuMzFjLTcuNjkgNy40NS0yMC43NyAzNC40Mi0yMy40MyA3OC42OWg0Ni44N2MtMi42Ny00NC4yNi0xNS43NS03MS4yNC0yMy40NC03OC42OXptLTQxLjA4IDguMjhjLTI3LjcxIDEzLjI0LTQ4LjAyIDM5LjE5LTUzLjMgNzAuNDFoMzkuMDljMS40OS0yNy4wMyA2LjUzLTUxLjM1IDE0LjIxLTcwLjQxem0wIDE3Mi44MmMtNy42OC0xOS4wNi0xMi43Mi00My4zOC0xNC4yMS03MC40MWgtMzkuMDljNS4yOCAzMS4yMiAyNS41OSA1Ny4xNyA1My4zIDcwLjQxek0yNDcuNDMgMjA4aC00Ni44N2MyLjY2IDQ0LjI2IDE1Ljc0IDcxLjI0IDIzLjQzIDc4LjY5IDcuNy03LjQ1IDIwLjc4LTM0LjQzIDIzLjQ0LTc4LjY5ek00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0yMjQgNjRjNzAuNjkgMCAxMjggNTcuMzEgMTI4IDEyOHMtNTcuMzEgMTI4LTEyOCAxMjhTOTYgMjYyLjY5IDk2IDE5MiAxNTMuMzEgNjQgMjI0IDY0em0xNjAgMzg0SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODh2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjk5OTA4LDIyNGEzMiwzMiwwLDEsMCwzMi4wMDc4MiwzMkEzMi4wNjQzMSwzMi4wNjQzMSwwLDAsMCwyMjMuOTk5MDgsMjI0Wm0yMTQuMTcyLTk2Yy0xMC44NzctMTkuNS00MC41MDk3OS01MC43NS0xMTYuMjc1NDQtNDEuODc1QzMwMC4zOTE2OCwzNC44NzUsMjY3LjYzMzg2LDAsMjIzLjk5OTA4LDBzLTc2LjM5MDY2LDM0Ljg3NS05Ny44OTY1Myw4Ni4xMjVDNTAuMzM2OSw3Ny4zNzUsMjAuNzA2LDEwOC41LDkuODI5MDcsMTI4LTYuNTQ5ODQsMTU3LjM3NS01LjE3NDg0LDIwMS4xMjUsMzQuOTU4LDI1Ni01LjE3NDg0LDMxMC44NzUtNi41NDk4NCwzNTQuNjI1LDkuODI5MDcsMzg0YzI5LjEzMDg3LDUyLjM3NSwxMDEuNjQ2NTIsNDMuNjI1LDExNi4yNzM0OCw0MS44NzVDMTQ3LjYwODQyLDQ3Ny4xMjUsMTgwLjM2NDI5LDUxMiwyMjMuOTk5MDgsNTEyczc2LjM5MjYtMzQuODc1LDk3Ljg5NjUyLTg2LjEyNWMxNC42Mjg5MSwxLjc1LDg3LjE0NDU2LDEwLjUsMTE2LjI3NTQ0LTQxLjg3NUM0NTQuNTUsMzU0LjYyNSw0NTMuMTc1LDMxMC44NzUsNDEzLjA0MDE3LDI1Niw0NTMuMTc1LDIwMS4xMjUsNDU0LjU1LDE1Ny4zNzUsNDM4LjE3MSwxMjhaTTYzLjMzODg2LDM1MmMtNC03LjI1LS4xMjUtMjQuNzUsMTUuMDAzOTEtNDguMjUsNi44NzY5NSw2LjUsMTQuMTI4OTEsMTIuODc1LDIxLjg4MDg3LDE5LjEyNSwxLjYyNSwxMy43NSw0LDI3LjEyNSw2Ljc1LDQwLjEyNUM4Mi4zNDQ3MiwzNjMuODc1LDY3LjA5MDgxLDM1OC42MjUsNjMuMzM4ODYsMzUyWm0zNi44ODQ3OC0xNjIuODc1Yy03Ljc1Miw2LjI1LTE1LjAwMzkyLDEyLjYyNS0yMS44ODA4NywxOS4xMjUtMTUuMTI4OTEtMjMuNS0xOS4wMDM5Mi00MS0xNS4wMDM5MS00OC4yNSwzLjM3Ny02LjEyNSwxNi4zNzg5MS0xMS41LDM3Ljg4NDc4LTExLjUsMS43NSwwLDMuODc1LjM3NSw1Ljc1LjM3NUMxMDQuMDk4NjQsMTYyLjI1LDEwMS44NDg2NCwxNzUuNjI1LDEwMC4yMjM2NCwxODkuMTI1Wk0yMjMuOTk5MDgsNjRjOS41MDE5NSwwLDIyLjI1NTg2LDEzLjUsMzMuODgyODIsMzcuMjUtMTEuMjUyLDMuNzUtMjIuNTAzOTEsOC0zMy44ODI4MiwxMi44NzUtMTEuMzc3LTQuODc1LTIyLjYyODkyLTkuMTI1LTMzLjg4MjgzLTEyLjg3NUMyMDEuNzQ1MTYsNzcuNSwyMTQuNDk3MTIsNjQsMjIzLjk5OTA4LDY0Wm0wLDM4NGMtOS41MDIsMC0yMi4yNTM5Mi0xMy41LTMzLjg4MjgzLTM3LjI1LDExLjI1MzkxLTMuNzUsMjIuNTA1ODctOCwzMy44ODI4My0xMi44NzVDMjM1LjM3OCw0MDIuNzUsMjQ2LjYyOTk0LDQwNywyNTcuODgxOSw0MTAuNzUsMjQ2LjI1NDk0LDQzNC41LDIzMy41MDEsNDQ4LDIyMy45OTkwOCw0NDhabTAtMTEyYTgwLDgwLDAsMSwxLDgwLTgwQTgwLjAwMDIzLDgwLjAwMDIzLDAsMCwxLDIyMy45OTkwOCwzMzZaTTM4NC42NTkzLDM1MmMtMy42MjUsNi42MjUtMTkuMDAzOTIsMTEuODc1LTQzLjYzNDc5LDExLDIuNzUyLTEzLDUuMTI3LTI2LjM3NSw2Ljc1Mi00MC4xMjUsNy43NTE5NS02LjI1LDE1LjAwMzkxLTEyLjYyNSwyMS44Nzg5MS0xOS4xMjVDMzg0Ljc4NDMsMzI3LjI1LDM4OC42NTkzLDM0NC43NSwzODQuNjU5MywzNTJaTTM2OS42NTUzOCwyMDguMjVjLTYuODc1LTYuNS0xNC4xMjctMTIuODc1LTIxLjg3ODkxLTE5LjEyNS0xLjYyNS0xMy41LTMuODc1LTI2Ljg3NS02Ljc1Mi00MC4yNSwxLjg3NSwwLDQuMDAyLS4zNzUsNS43NTItLjM3NSwyMS41MDM5MSwwLDM0LjUwNzgyLDUuMzc1LDM3Ljg4MjgzLDExLjVDMzg4LjY1OTMsMTY3LjI1LDM4NC43ODQzLDE4NC43NSwzNjkuNjU1MzgsMjA4LjI1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdWRpb0Rlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Mi45MjUgMjM4LjcwOWw4LjgyMiAzMC42NTVoLTI1LjYwNmw5LjA0MS0zMC42NTJjMS4yNzctNC40MjEgMi42NTEtOS45OTQgMy44NzItMTUuMjQ1IDEuMjIgNS4yNTEgMi41OTQgMTAuODIzIDMuODcxIDE1LjI0MnptMTY2LjQ3NC0zMi4wOTloLTE0LjUyM3Y5OC43ODFoMTQuNTIzYzI5Ljc3NiAwIDQ2LjE3NS0xNy42NzggNDYuMTc1LTQ5Ljc3NiAwLTMyLjIzOS0xNy40OS00OS4wMDUtNDYuMTc1LTQ5LjAwNXpNNTEyIDExMnYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHpNMjQ1LjQ1OSAzMzYuMTM5bC01Ny4wOTctMTY4QTEyLjAwMSAxMi4wMDEgMCAwIDAgMTc3IDE2MGgtMzUuODk0YTEyLjAwMSAxMi4wMDEgMCAwIDAtMTEuMzYyIDguMTM5bC01Ny4wOTcgMTY4QzcwLjAwMyAzNDMuOTIyIDc1Ljc4OSAzNTIgODQuMDA5IDM1MmgyOS4xMzNhMTIgMTIgMCAwIDAgMTEuNTM1LTguNjkzbDguNTc0LTI5LjkwNmg1MS4zNjdsOC43OTMgMjkuOTc3QTEyIDEyIDAgMCAwIDIwNC45MjYgMzUyaDI5LjE3MmM4LjIyIDAgMTQuMDA2LTguMDc4IDExLjM2MS0xNS44NjF6bTE4NC43MDEtODAuNTI1YzAtNTguOTc3LTM3LjkxOS05NS42MTQtOTguOTYtOTUuNjE0aC01Ny4zNjZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTY4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJIMzMxLjJjNjEuMDQxIDAgOTguOTYtMzYuOTMzIDk4Ljk2LTk2LjM4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXdhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTcuMTIgMzYyLjYzYy04LjY5LTguNjktNC4xNi02LjI0LTI1LjEyLTExLjg1LTkuNTEtMi41NS0xNy44Ny03LjQ1LTI1LjQzLTEzLjMyTDEuMiA0NDguN2MtNC4zOSAxMC43NyAzLjgxIDIyLjQ3IDE1LjQzIDIyLjAzbDUyLjY5LTIuMDFMMTA1LjU2IDUwN2M4IDguNDQgMjIuMDQgNS44MSAyNi40My00Ljk2bDUyLjA1LTEyNy42MmMtMTAuODQgNi4wNC0yMi44NyA5LjU4LTM1LjMxIDkuNTgtMTkuNSAwLTM3LjgyLTcuNTktNTEuNjEtMjEuMzd6TTM4Mi44IDQ0OC43bC00NS4zNy0xMTEuMjRjLTcuNTYgNS44OC0xNS45MiAxMC43Ny0yNS40MyAxMy4zMi0yMS4wNyA1LjY0LTE2LjQ1IDMuMTgtMjUuMTIgMTEuODUtMTMuNzkgMTMuNzgtMzIuMTIgMjEuMzctNTEuNjIgMjEuMzctMTIuNDQgMC0yNC40Ny0zLjU1LTM1LjMxLTkuNThMMjUyIDUwMi4wNGM0LjM5IDEwLjc3IDE4LjQ0IDEzLjQgMjYuNDMgNC45NmwzNi4yNS0zOC4yOCA1Mi42OSAyLjAxYzExLjYyLjQ0IDE5LjgyLTExLjI3IDE1LjQzLTIyLjAzek0yNjMgMzQwYzE1LjI4LTE1LjU1IDE3LjAzLTE0LjIxIDM4Ljc5LTIwLjE0IDEzLjg5LTMuNzkgMjQuNzUtMTQuODQgMjguNDctMjguOTggNy40OC0yOC40IDUuNTQtMjQuOTcgMjUuOTUtNDUuNzUgMTAuMTctMTAuMzUgMTQuMTQtMjUuNDQgMTAuNDItMzkuNTgtNy40Ny0yOC4zOC03LjQ4LTI0LjQyIDAtNTIuODMgMy43Mi0xNC4xNC0uMjUtMjkuMjMtMTAuNDItMzkuNTgtMjAuNDEtMjAuNzgtMTguNDctMTcuMzYtMjUuOTUtNDUuNzUtMy43Mi0xNC4xNC0xNC41OC0yNS4xOS0yOC40Ny0yOC45OC0yNy44OC03LjYxLTI0LjUyLTUuNjItNDQuOTUtMjYuNDEtMTAuMTctMTAuMzUtMjUtMTQuNC0zOC44OS0xMC42MS0yNy44NyA3LjYtMjMuOTggNy42MS01MS45IDAtMTMuODktMy43OS0yOC43Mi4yNS0zOC44OSAxMC42MS0yMC40MSAyMC43OC0xNy4wNSAxOC44LTQ0Ljk0IDI2LjQxLTEzLjg5IDMuNzktMjQuNzUgMTQuODQtMjguNDcgMjguOTgtNy40NyAyOC4zOS01LjU0IDI0Ljk3LTI1Ljk1IDQ1Ljc1LTEwLjE3IDEwLjM1LTE0LjE1IDI1LjQ0LTEwLjQyIDM5LjU4IDcuNDcgMjguMzYgNy40OCAyNC40IDAgNTIuODItMy43MiAxNC4xNC4yNSAyOS4yMyAxMC40MiAzOS41OSAyMC40MSAyMC43OCAxOC40NyAxNy4zNSAyNS45NSA0NS43NSAzLjcyIDE0LjE0IDE0LjU4IDI1LjE5IDI4LjQ3IDI4Ljk4QzEwNC42IDMyNS45NiAxMDYuMjcgMzI1IDEyMSAzNDBjMTMuMjMgMTMuNDcgMzMuODQgMTUuODggNDkuNzQgNS44MmEzOS42NzYgMzkuNjc2IDAgMCAxIDQyLjUzIDBjMTUuODkgMTAuMDYgMzYuNSA3LjY1IDQ5LjczLTUuODJ6TTk3LjY2IDE3NS45NmMwLTUzLjAzIDQyLjI0LTk2LjAyIDk0LjM0LTk2LjAyczk0LjM0IDQyLjk5IDk0LjM0IDk2LjAyLTQyLjI0IDk2LjAyLTk0LjM0IDk2LjAyLTk0LjM0LTQyLjk5LTk0LjM0LTk2LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWJ5Q2FycmlhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0LjggMTdjLTExLjMtMTcuOC0zNy4yLTIyLjgtNTQtOS40QzM1LjMgNTEuOSAwIDExOCAwIDE5MmgyNTZMMTQ0LjggMTd6TTQ5NiA5NmgtNDhjLTM1LjMgMC02NCAyOC43LTY0IDY0djY0SDBjMCA1MC42IDIzIDk2LjQgNjAuMyAxMzAuN0MyNS43IDM2My42IDAgMzk0LjcgMCA0MzJjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTguOS0xLjgtMTcuMi00LjQtMjUuMiAyMS42IDUuOSA0NC42IDkuMiA2OC40IDkuMnM0Ni45LTMuMyA2OC40LTkuMmMtMi43IDgtNC40IDE2LjMtNC40IDI1LjIgMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTM3LjMtMjUuNy02OC40LTYwLjMtNzcuM0M0MjUgMzIwLjQgNDQ4IDI3NC42IDQ0OCAyMjR2LTY0aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek04MCA0NjRjLTE3LjYgMC0zMi0xNC40LTMyLTMyczE0LjQtMzIgMzItMzIgMzIgMTQuNCAzMiAzMi0xNC40IDMyLTMyIDMyem0zMjAtMzJjMCAxNy42LTE0LjQgMzItMzIgMzJzLTMyLTE0LjQtMzItMzIgMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAxNjBjNDQuMiAwIDgwLTM1LjggODAtODBTMjM2LjIgMCAxOTIgMHMtODAgMzUuOC04MCA4MCAzNS44IDgwIDgwIDgwem0tNTMuNCAyNDguOGwyNS42LTMyLTYxLjUtNTEuMkw1Ni44IDM4M2MtMTEuNCAxNC4yLTExLjcgMzQuNC0uOCA0OWw0OCA2NGM3LjkgMTAuNSAxOS45IDE2IDMyIDE2IDguMyAwIDE2LjgtMi42IDI0LTggMTcuNy0xMy4yIDIxLjItMzguMyA4LTU2bC0yOS40LTM5LjJ6bTE0Mi43LTgzLjJsLTYxLjUgNTEuMiAyNS42IDMyTDIxNiA0NDhjLTEzLjIgMTcuNy05LjcgNDIuOCA4IDU2IDcuMiA1LjQgMTUuNiA4IDI0IDggMTIuMiAwIDI0LjItNS41IDMyLTE2bDQ4LTY0YzEwLjktMTQuNiAxMC42LTM0LjgtLjgtNDlsLTQ1LjktNTcuNHpNMzc2LjcgMTQ1Yy0xMi43LTE4LjEtMzcuNi0yMi40LTU1LjctOS44bC00MC42IDI4LjVjLTUyLjcgMzctMTI0LjIgMzctMTc2LjggMEw2MyAxMzUuM0M0NC45IDEyMi42IDIwIDEyNyA3LjMgMTQ1LTUuNCAxNjMuMS0xIDE4OCAxNyAyMDAuN2w0MC42IDI4LjVjMTcgMTEuOSAzNS40IDIwLjkgNTQuNCAyNy45VjI4OGgxNjB2LTMwLjhjMTktNyAzNy40LTE2IDU0LjQtMjcuOWw0MC42LTI4LjVjMTguMS0xMi44IDIyLjQtMzcuNyA5LjctNTUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiA2NEgyMDUuMjZBNjMuOTcgNjMuOTcgMCAwIDAgMTYwIDgyLjc1TDkuMzcgMjMzLjM3Yy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1TDE2MCA0MjkuMjVjMTIgMTIgMjguMjggMTguNzUgNDUuMjUgMTguNzVINTc2YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWMTI4YzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6bS04NC42OSAyNTQuMDZjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M2wtMjIuNjIgMjIuNjJjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBMMzg0IDMwMS4yNWwtNjIuMDYgNjIuMDZjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBsLTIyLjYyLTIyLjYyYy02LjI1LTYuMjUtNi4yNS0xNi4zOCAwLTIyLjYzTDMzOC43NSAyNTZsLTYyLjA2LTYyLjA2Yy02LjI1LTYuMjUtNi4yNS0xNi4zOCAwLTIyLjYzbDIyLjYyLTIyLjYyYzYuMjUtNi4yNSAxNi4zOC02LjI1IDIyLjYzIDBMMzg0IDIxMC43NWw2Mi4wNi02Mi4wNmM2LjI1LTYuMjUgMTYuMzgtNi4yNSAyMi42MyAwbDIyLjYyIDIyLjYyYzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNMNDI5LjI1IDI1Nmw2Mi4wNiA2Mi4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFja3dhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSAyODAuNmwxOTIgMTYwYzIwLjYgMTcuMiA1Mi41IDIuOCA1Mi41LTI0LjZWOTZjMC0yNy40LTMxLjktNDEuOC01Mi41LTI0LjZsLTE5MiAxNjBjLTE1LjMgMTIuOC0xNS4zIDM2LjQgMCA0OS4yem0yNTYgMGwxOTIgMTYwYzIwLjYgMTcuMiA1Mi41IDIuOCA1Mi41LTI0LjZWOTZjMC0yNy40LTMxLjktNDEuOC01Mi41LTI0LjZsLTE5MiAxNjBjLTE1LjMgMTIuOC0xNS4zIDM2LjQgMCA0OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTguOTIgMzM2LjM5YzM0Ljg5LTM0Ljg5IDQ0LjItNTkuNyA1NC4wNS04NiAxMC42MS0yOC4yOSAyMS41OS01Ny41NCA2MS4zNy05Ny4zNHM2OS4wNS01MC43NyA5Ny4zNS02MS4zOGMyMy44OC05IDQ2LjY0LTE3LjY4IDc2Ljc5LTQ1LjM3TDQ3MC44MSA4LjkxYTMxIDMxIDAgMCAwLTQwLjE4LTIuODNjLTEzLjY0IDEwLjEtMjUuMTUgMTQuMzktNDEgMjAuM0MyNDcgNzkuNTIgMjA5LjI2IDE5MS4yOSAyMDAuNjUgMjE0LjFjLTI5Ljc1IDc4LjgzLTg5LjU1IDk0LjY4LTk4LjcyIDk4LjA5LTI0Ljg2IDkuMjYtNTQuNzMgMjAuMzgtOTEuMDcgNTAuMzZDLTMgMzc0LTMuNjMgMzk1IDkuMDcgNDA3LjYxbDM1Ljc2IDM1LjUxQzgwIDQxMC41MiAxMDcgNDAwLjE1IDEzMyAzOTAuMzljMjYuMjctOS44NCA1MS4wNi0xOS4xMiA4NS45Mi01NHptMzQ4LTIzMmwtMzUuNzUtMzUuNTFjLTM1LjE5IDMyLjYzLTYyLjE4IDQzLTg4LjI1IDUyLjc5LTI2LjI2IDkuODUtNTEuMDYgMTkuMTYtODUuOTUgNTRzLTQ0LjE5IDU5LjY5LTU0IDg2QzI5Mi4zMyAyOTAgMjgxLjM0IDMxOS4yMiAyNDEuNTUgMzU5cy02OSA1MC43My05Ny4zIDYxLjMyYy0yMy44NiA5LTQ2LjYxIDE3LjY2LTc2LjcyIDQ1LjMzbDM3LjY4IDM3LjQzYTMxIDMxIDAgMCAwIDQwLjE4IDIuODJjMTMuNi0xMC4wNiAyNS4wOS0xNC4zNCA0MC45NC0yMC4yNCAxNDIuMi01MyAxODAtMTY0LjEgMTg4Ljk0LTE4Ny42OUM0MDUgMjE5LjE4IDQ2NC44IDIwMy4zIDQ3NCAxOTkuODZjMjQuODctOS4yNyA1NC43NC0yMC40IDkxLjExLTUwLjQxIDEzLjg5LTExLjQgMTQuNTItMzIuNDUgMS44Mi00NS4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjdGVyaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyLjM1LDIyNi40QTE3LjcxLDE3LjcxLDAsMCwwLDI4MS40NiwyMDNsLTQtOS4wOGExMjEuMjksMTIxLjI5LDAsMCwxLDEyLjM2LTMuMDhBODMuMzQsODMuMzQsMCwwLDAsMzIzLjU3LDE3N2wxMCw5YTE3Ljc2LDE3Ljc2LDAsMSwwLDIzLjkyLTI2LjI3bC05LjcyLTguNzZhODMuMTIsODMuMTIsMCwwLDAsMTEuNjUtNDguMThsMTEuODUtMy41MWExNy43MywxNy43MywwLDEsMC0xMC4xNS0zNGwtMTEuMzQsMy4zNmE4NCw4NCwwLDAsMC0zNi4zOC0zNS41N2wyLjg0LTEwLjg1YTE3LjgsMTcuOCwwLDAsMC0zNC40Ny04LjkzbC0yLjgyLDEwLjc4YTgzLjI1LDgzLjI1LDAsMCwwLTE2Ljc0LDEuMUMyNTAuODMsMjcsMjQwLDMwLjIyLDIyOS4xLDMzLjM5bC0zLjM4LTkuNDZhMTcuOCwxNy44LDAsMCwwLTMzLjU2LDExLjg5bDMuNDksOS44YTI4Ni43NCwyODYuNzQsMCwwLDAtNDMuOTQsMjMuNTdsLTYuMzItOC40M2ExNy45LDE3LjksMCwwLDAtMjQuOTQtMy42QTE3LjY5LDE3LjY5LDAsMCwwLDExNi44NCw4Mmw2LjQ1LDguNjFhMjg2LjU5LDI4Ni41OSwwLDAsMC0zNC45NSwzNS4zM2wtOC44Mi02LjQyYTE3Ljg0LDE3Ljg0LDAsMCwwLTI0Ljg5LDMuODYsMTcuNjYsMTcuNjYsMCwwLDAsMy44OCwyNC43N2w4Ljg4LDYuNDdhMjg2LjYsMjg2LjYsMCwwLDAtMjMsNDMuOTFsLTEwLjQ4LTMuNTlhMTcuNzMsMTcuNzMsMCwxLDAtMTEuNTksMzMuNTJMMzIuNjcsMjMyYy0yLjc5LDEwLTUuNzksMTkuODQtNy41MiwzMC4yMmE4My4xNiw4My4xNiwwLDAsMC0uODIsMTlsLTExLjU4LDMuNDNhMTcuNzMsMTcuNzMsMCwxLDAsMTAuMTMsMzRsMTEuMjctMy4zM2E4My41MSw4My41MSwwLDAsMCwzNi4zOSwzNS40M2wtMi44OCwxMS4wNmExNy44MSwxNy44MSwwLDAsMCwzNC40OCw4LjkybDIuODctMTFjMSwwLDIuMDcuMjYsMy4xLjI2YTgzLjM5LDgzLjM5LDAsMCwwLDQ1LjY1LTEzLjg4bDguNTksOC44YTE3Ljc3LDE3Ljc3LDAsMCwwLDI1LjU2LTI0LjdsLTkuMTQtOS4zN2E4My40MSw4My40MSwwLDAsMCwxMi4wOC0zMS4wNSwxMTkuMDgsMTE5LjA4LDAsMCwxLDMuODctMTUuNTNsOSw0LjIyYTE3Ljc0LDE3Ljc0LDAsMSwwLDE1LjE1LTMyLjA5bC04LjgtNC4xMWMuNjctMSwxLjItMi4wOCwxLjktMy4wNWExMTkuODksMTE5Ljg5LDAsMCwxLDcuODctOS40MSwxMjEuNzMsMTIxLjczLDAsMCwxLDExLjY1LTExLjQsMTE5LjQ5LDExOS40OSwwLDAsMSw5Ljk0LTcuODJjMS4xMi0uNzcsMi4zMi0xLjQyLDMuNDctMi4xNWwzLjkyLDguODVhMTcuODYsMTcuODYsMCwwLDAsMTYuMzIsMTAuNThBMTguMTQsMTguMTQsMCwwLDAsMjcyLjM1LDIyNi40Wk0xMjgsMjU2YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDEyOCwyNTZabTgwLTk2YTE2LDE2LDAsMSwxLDE2LTE2QTE2LDE2LDAsMCwxLDIwOCwxNjBabTQzMS4yNiw0NS4zYTE3Ljc5LDE3Ljc5LDAsMCwwLTE3LjA2LTEyLjY5LDE3LjU1LDE3LjU1LDAsMCwwLTUuMDguNzRsLTExLjI3LDMuMzNhODMuNjEsODMuNjEsMCwwLDAtMzYuMzktMzUuNDNsMi44OC0xMS4wNmExNy44MSwxNy44MSwwLDAsMC0zNC40OC04LjkxbC0yLjg3LDExYy0xLDAtMi4wNy0uMjYtMy4xLS4yNmE4My4zMiw4My4zMiwwLDAsMC00NS42NSwxMy44OWwtOC41OS04LjgxYTE3Ljc3LDE3Ljc3LDAsMCwwLTI1LjU2LDI0LjdsOS4xNCw5LjM3YTgzLjI4LDgzLjI4LDAsMCwwLTEyLjA4LDMxLjA2LDExOS4zNCwxMTkuMzQsMCwwLDEtMy44NywxNS41MmwtOS00LjIyYTE3Ljc0LDE3Ljc0LDAsMSwwLTE1LjE1LDMyLjA5bDguOCw0LjExYy0uNjcsMS0xLjIsMi4wOC0xLjg5LDMuMDVhMTE3LjcxLDExNy43MSwwLDAsMS03Ljk0LDkuNDcsMTE5LDExOSwwLDAsMS0xMS41NywxMS4zMywxMjEuNTksMTIxLjU5LDAsMCwxLTEwLDcuODNjLTEuMTIuNzctMi4zMiwxLjQyLTMuNDcsMi4xNWwtMy45Mi04Ljg1YTE3Ljg2LDE3Ljg2LDAsMCwwLTE2LjMyLTEwLjU4LDE4LjE0LDE4LjE0LDAsMCwwLTcuMTgsMS41QTE3LjcxLDE3LjcxLDAsMCwwLDM1OC41NCwzMDlsNCw5LjA4YTExOC43MSwxMTguNzEsMCwwLDEtMTIuMzYsMy4wOCw4My4zNCw4My4zNCwwLDAsMC0zMy43NywxMy45bC0xMC05YTE3Ljc3LDE3Ljc3LDAsMSwwLTIzLjkyLDI2LjI4bDkuNzIsOC43NWE4My4xMiw4My4xMiwwLDAsMC0xMS42NSw0OC4xOGwtMTEuODYsMy41MWExNy43MywxNy43MywwLDEsMCwxMC4xNiwzNGwxMS4zNC0zLjM2QTg0LDg0LDAsMCwwLDMyNi42MSw0NzlsLTIuODQsMTAuODVhMTcuOCwxNy44LDAsMCwwLDM0LjQ3LDguOTNMMzYxLjA2LDQ4OGE4My4zLDgzLjMsMCwwLDAsMTYuNzQtMS4xYzExLjM3LTEuODksMjIuMjQtNS4wNywzMy4xLTguMjRsMy4zOCw5LjQ2YTE3LjgsMTcuOCwwLDAsMCwzMy41Ni0xMS44OWwtMy40OS05Ljc5YTI4Ny42NiwyODcuNjYsMCwwLDAsNDMuOTQtMjMuNThsNi4zMiw4LjQzYTE3Ljg4LDE3Ljg4LDAsMCwwLDI0LjkzLDMuNkExNy42NywxNy42NywwLDAsMCw1MjMuMTYsNDMwbC02LjQ1LTguNjFhMjg3LjM3LDI4Ny4zNywwLDAsMCwzNC45NS0zNS4zNGw4LjgyLDYuNDJhMTcuNzYsMTcuNzYsMCwxLDAsMjEtMjguNjNsLTguODgtNi40NmEyODcuMTcsMjg3LjE3LDAsMCwwLDIzLTQzLjkybDEwLjQ4LDMuNTlhMTcuNzMsMTcuNzMsMCwxLDAsMTEuNTktMzMuNTJMNjA3LjMzLDI4MGMyLjc5LTEwLDUuNzktMTkuODQsNy41Mi0zMC4yMWE4My4yNyw4My4yNywwLDAsMCwuODItMTkuMDVsMTEuNTgtMy40M0ExNy43LDE3LjcsMCwwLDAsNjM5LjI2LDIwNS4zWk00MTYsNDE2YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDQxNiw0MTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY3Rlcml1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEsMTAyLjkzQTIzLjc2LDIzLjc2LDAsMCwwLDQ4MS40Nyw4N2wtMTUuMTIsNC40OGExMTEuODUsMTExLjg1LDAsMCwwLTQ4LjUtNDcuNDJsMy43OS0xNC40N2EyMy43NCwyMy43NCwwLDAsMC00Ni0xMS45MWwtMy43NiwxNC4zN2ExMTEuOTQsMTExLjk0LDAsMCwwLTIyLjMzLDEuNDcsMzg2Ljc0LDM4Ni43NCwwLDAsMC00NC4zMywxMC40MWwtNC4zLTEyYTIzLjc0LDIzLjc0LDAsMCwwLTQ0Ljc1LDE1Ljg1bDQuMywxMi4wNWEzODMuNCwzODMuNCwwLDAsMC01OC42OSwzMS44M2wtOC0xMC42M2EyMy44NSwyMy44NSwwLDAsMC0zMy4yNC00LjgsMjMuNTcsMjMuNTcsMCwwLDAtNC44MywzMy4wOWw4LDEwLjYzYTM4Ni4xNCwzODYuMTQsMCwwLDAtNDYuNyw0Ny40NGwtMTEtOGEyMy42OCwyMy42OCwwLDEsMC0yOCwzOC4xN2wxMS4wOSw4LjA2YTM4My40NSwzODMuNDUsMCwwLDAtMzAuOTIsNTguNzVsLTEyLjkzLTQuNDNhMjMuNjUsMjMuNjUsMCwxLDAtMTUuNDcsNDQuNjlsMTMsNC40OGEzODUuODEsMzg1LjgxLDAsMCwwLTkuMyw0MC41M0ExMTEuNTgsMTExLjU4LDAsMCwwLDMyLjQ0LDM3NUwxNywzNzkuNTZhMjMuNjQsMjMuNjQsMCwwLDAsMTMuNTEsNDUuMzFsMTUtNC40NGExMTEuNDksMTExLjQ5LDAsMCwwLDQ4LjUzLDQ3LjI0bC0zLjg1LDE0Ljc1YTIzLjY2LDIzLjY2LDAsMCwwLDE3LDI4LjgzLDI0LjcsMjQuNywwLDAsMCw2LC43NSwyMy43MywyMy43MywwLDAsMCwyMy0xNy43TDE0MCw0NzkuNjdjMS4zNy4wNSwyLjc3LjM1LDQuMTMuMzVBMTExLjIyLDExMS4yMiwwLDAsMCwyMDUsNDYxLjVsMTEuNDUsMTEuNzRhMjMuNywyMy43LDAsMCwwLDM0LjA4LTMyLjkzbC0xMi4xOS0xMi41YTExMSwxMTEsMCwwLDAsMTYuMTEtNDEuNCwxNTguNjksMTU4LjY5LDAsMCwxLDUuMTYtMjAuNzFsMTIsNS42NGEyMy42NiwyMy42NiwwLDEsMCwyMC4xOS00Mi43OWwtMTEuNzItNS40OWMuODktMS4zMiwxLjU5LTIuNzcsMi41Mi00LjA2YTE1Ny44NiwxNTcuODYsMCwwLDEsMTAuNDYtMTIuNDksMTU5LjUsMTU5LjUsMCwwLDEsMTUuNTktMTUuMjgsMTYyLjE4LDE2Mi4xOCwwLDAsMSwxMy4yMy0xMC40YzEuNS0xLDMuMS0xLjg5LDQuNjMtMi44N2w1LjIzLDExLjhhMjMuNzQsMjMuNzQsMCwwLDAsNDMuNDgtMTkuMDhsLTUuMzYtMTIuMTFhMTU4Ljg3LDE1OC44NywwLDAsMSwxNi40OS00LjEsMTExLDExMSwwLDAsMCw0NS0xOC41NGwxMy4zMywxMmEyMy42OSwyMy42OSwwLDEsMCwzMS44OC0zNWwtMTIuOTQtMTEuNjdBMTEwLjgzLDExMC44MywwLDAsMCw0NzkuMjEsMTM3TDQ5NSwxMzIuMzJBMjMuNjEsMjMuNjEsMCwwLDAsNTExLDEwMi45M1pNMTYwLDM2OGE0OCw0OCwwLDEsMSw0OC00OEE0OCw0OCwwLDAsMSwxNjAsMzY4Wm04MC0xMzZhMjQsMjQsMCwxLDEsMjQtMjRBMjQsMjQsMCwwLDEsMjQwLDIzMlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFoYWkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjI1IDIwMi41MmwtMTEwLTE1LjQ0IDQxLjgyLTEwNC4zNGM2LjY3LTE2LjY0LTExLjYtMzIuMTgtMjYuNTktMjIuNjNMMzA3LjQ0IDEyMCAyNzMuMzUgMTIuODJDMjcwLjY0IDQuMjcgMjYzLjMyIDAgMjU2IDBjLTcuMzIgMC0xNC42NCA0LjI3LTE3LjM1IDEyLjgybC0zNC4wOSAxMDcuMTktOTQuMDQtNTkuODljLTE0Ljk5LTkuNTUtMzMuMjUgNS45OS0yNi41OSAyMi42M2w0MS44MiAxMDQuMzQtMTEwIDE1LjQzYy0xNy41NCAyLjQ2LTIxLjY4IDI2LjI3LTYuMDMgMzQuNjdsOTguMTYgNTIuNjYtNzQuNDggODMuNTRjLTEwLjkyIDEyLjI1LTEuNzIgMzAuOTMgMTMuMjkgMzAuOTMgMS4zMSAwIDIuNjctLjE0IDQuMDctLjQ1bDEwOC41Ny0yMy42NS00LjExIDExMi41NWMtLjQzIDExLjY1IDguODcgMTkuMjIgMTguNDEgMTkuMjIgNS4xNSAwIDEwLjM5LTIuMjEgMTQuMi03LjE4bDY4LjE4LTg4LjkgNjguMTggODguOWMzLjgxIDQuOTcgOS4wNCA3LjE4IDE0LjIgNy4xOCA5LjU0IDAgMTguODQtNy41NyAxOC40MS0xOS4yMmwtNC4xMS0xMTIuNTUgMTA4LjU3IDIzLjY1YzE3LjM2IDMuNzYgMjkuMjEtMTcuMiAxNy4zNS0zMC40OWwtNzQuNDgtODMuNTQgOTguMTYtNTIuNjZjMTUuNjQtOC4zOSAxMS41LTMyLjItNi4wNC0zNC42NnpNMzM4LjUxIDMxMS42OGwtNTEuODktMTEuMyAxLjk3IDUzLjc5TDI1NiAzMTEuNjhsLTMyLjU5IDQyLjQ5IDEuOTYtNTMuNzktNTEuODkgMTEuMyAzNS42LTM5LjkzLTQ2LjkyLTI1LjE3IDUyLjU3LTcuMzgtMTkuOTktNDkuODcgNDQuOTUgMjguNjJMMjU2IDE2Ni43MmwxNi4yOSA1MS4yMyA0NC45NS0yOC42Mi0xOS45OSA0OS44NyA1Mi41NyA3LjM4LTQ2LjkyIDI1LjE3IDM1LjYxIDM5LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWxhbmNlU2NhbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA0NDhIMzUyVjE1My4yNWMyMC40Mi04Ljk0IDM2LjEtMjYuMjIgNDMuMzgtNDcuNDdsMTMyLTQ0LjI2YzguMzgtMi44MSAxMi44OS0xMS44OCAxMC4wOC0yMC4yNmwtMTAuMTctMzAuMzRDNTI0LjQ4IDIuNTQgNTE1LjQxLTEuOTcgNTA3LjAzLjg0TDM4OS4xMSA0MC4zN0MzNzUuMyAxNi4zNiAzNDkuNjkgMCAzMjAgMGMtNDQuMTggMC04MCAzNS44Mi04MCA4MCAwIDMuNDMuNTkgNi43MSAxLjAxIDEwLjAzbC0xMjguMzkgNDMuMDVjLTguMzggMi44MS0xMi44OSAxMS44OC0xMC4wOCAyMC4yNmwxMC4xNyAzMC4zNGMyLjgxIDguMzggMTEuODggMTIuODkgMjAuMjYgMTAuMDhsMTQyLjA1LTQ3LjYzYzQuMDcgMi43NyA4LjQzIDUuMTIgMTIuOTkgNy4xMlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMtLjAxLTguODQtNy4xNy0xNi0xNi4wMS0xNnptMTExLjk4LTE0NGMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMC04Ny4xMiAxNzQuMjYtODUuMDQgMTY1Ljg0LTg1LjA0IDE4MS41MUgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyek00NDAgMjg4bDcyLTE0NCA3MiAxNDRINDQwem0tMjY5LjA3LTM3LjUxYy0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwQy0yLjA2IDQyNC43NS4wMiA0MTYuMzMuMDIgNDMySDBjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MXpNNTYgNDE2bDcyLTE0NCA3MiAxNDRINTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbGFuY2VTY2FsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQ2NHYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgyMjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTUzLjI1YzQuNTYtMiA4LjkyLTQuMzUgMTIuOTktNy4xMmwxNDIuMDUgNDcuNjNjOC4zOCAyLjgxIDE3LjQ1LTEuNzEgMjAuMjYtMTAuMDhsMTAuMTctMzAuMzRjMi44MS04LjM4LTEuNzEtMTcuNDUtMTAuMDgtMjAuMjZsLTEyOC40LTQzLjA1Yy40Mi0zLjMyIDEuMDEtNi42IDEuMDEtMTAuMDMgMC00NC4xOC0zNS44Mi04MC04MC04MC0yOS42OSAwLTU1LjMgMTYuMzYtNjkuMTEgNDAuMzdMMTMyLjk2LjgzYy04LjM4LTIuODEtMTcuNDUgMS43MS0yMC4yNiAxMC4wOGwtMTAuMTcgMzAuMzRjLTIuODEgOC4zOCAxLjcxIDE3LjQ1IDEwLjA4IDIwLjI2bDEzMiA0NC4yNmM3LjI4IDIxLjI1IDIyLjk2IDM4LjU0IDQzLjM4IDQ3LjQ3VjQ0OEgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2ek0wIDMwNGMwIDQ0LjE4IDU3LjMxIDgwIDEyOCA4MHMxMjgtMzUuODIgMTI4LTgwaC0uMDJjMC0xNS42NyAyLjA4LTcuMjUtODUuMDUtMTgxLjUxLTE3LjY4LTM1LjM2LTY4LjIyLTM1LjI5LTg1Ljg3IDBDLTEuMzIgMjk1LjI3LjAyIDI4Ny44Mi4wMiAzMDRIMHptNTYtMTZsNzItMTQ0IDcyIDE0NEg1NnptMzI4LjAyIDE0NEgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyYzAtMTUuNjcgMi4wOC03LjI1LTg1LjA1LTE4MS41MS0xNy42OC0zNS4zNi02OC4yMi0zNS4yOS04NS44NyAwLTg2LjM4IDE3Mi43OC04NS4wNCAxNjUuMzMtODUuMDQgMTgxLjUxek00NDAgNDE2bDcyLTE0NCA3MiAxNDRINDQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWxhbmNlU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMzNmgtLjAyYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MS0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwQy0yLjA2IDMyOC43NS4wMiAzMjAuMzMuMDIgMzM2SDBjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MHpNMTI4IDE3Nmw3MiAxNDRINTZsNzItMTQ0em01MTEuOTggMTYwYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MS0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwLTg3LjEyIDE3NC4yNi04NS4wNCAxNjUuODQtODUuMDQgMTgxLjUxSDM4NGMwIDQ0LjE4IDU3LjMxIDgwIDEyOCA4MHMxMjgtMzUuODIgMTI4LTgwaC0uMDJ6TTQ0MCAzMjBsNzItMTQ0IDcyIDE0NEg0NDB6bTg4IDEyOEgzNTJWMTUzLjI1YzIzLjUxLTEwLjI5IDQxLjE2LTMxLjQ4IDQ2LjM5LTU3LjI1SDUyOGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlY0OGMwLTguODQtNy4xNi0xNi0xNi0xNkgzODMuNjRDMzY5LjA0IDEyLjY4IDM0Ni4wOSAwIDMyMCAwcy00OS4wNCAxMi42OC02My42NCAzMkgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDEyOS42MWM1LjIzIDI1Ljc2IDIyLjg3IDQ2Ljk2IDQ2LjM5IDU3LjI1VjQ0OEgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDM0IDggOCAxMTkuMDMzIDggMjU2czExMS4wMzQgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzQgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTEzMC4xMDggMTE3Ljg5MmM2NS40NDggNjUuNDQ4IDcwIDE2NS40ODEgMjAuNjc3IDIzNS42MzdMMTUwLjQ3IDEwNS4yMTZjNzAuMjA0LTQ5LjM1NiAxNzAuMjI2LTQ0LjczNSAyMzUuNjM4IDIwLjY3NnpNMTI1Ljg5MiAzODYuMTA4Yy02NS40NDgtNjUuNDQ4LTcwLTE2NS40ODEtMjAuNjc3LTIzNS42MzdMMzYxLjUzIDQwNi43ODRjLTcwLjIwMyA0OS4zNTYtMTcwLjIyNiA0NC43MzYtMjM1LjYzOC0yMC42NzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRBaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNjB2MTkyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2Vjk2SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHptNTc2LTY0aC05NnYzMjBoOTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xOTIgNDE2aDI1NlY5NkgxOTJ2MzIwem0xNzYtMjMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptMCA5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bS05Ni05NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTAgOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDQ4VjY0aDE4djM4NEgwem0yNi44NTctLjI3M1Y2NEgzNnYzODMuNzI3aC05LjE0M3ptMjcuMTQzIDBWNjRoOC44NTd2MzgzLjcyN0g1NHptNDQuODU3IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTM2IDBWNjRoMTcuNzE0djM4My43MjdoLTE3LjcxNHptNDQuODU3IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTE4IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTE4IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTM1LjcxNSAwVjY0aDE4djM4My43MjdoLTE4em00NC44NTcgMFY2NGgxOHYzODMuNzI3aC0xOHptMzUuOTk5IDBWNjRoMTguMDAxdjM4My43MjdoLTE4LjAwMXptMzYuMDAxIDBWNjRoMTguMDAxdjM4My43MjdoLTE4LjAwMXptMjYuODU3IDBWNjRoMTh2MzgzLjcyN2gtMTh6bTQ1LjE0MyAwVjY0aDI2Ljg1N3YzODMuNzI3aC0yNi44NTd6bTM1LjcxNCAwVjY0aDkuMTQzdjM4My43MjdINDc2em0xOCAuMjczVjY0aDE4djM4NGgtMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTMyaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2Vjc2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZIMTZDNy4xNjMgNjAgMCA2Ny4xNjMgMCA3NnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXNlYmFsbEJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4LjUgMzYzLjlsMjguOC0xMy45YzExLjEgMjIuOSAyNiA0My4yIDQ0LjEgNjAuOSAzNC00Mi41IDU0LjUtOTYuMyA1NC41LTE1NC45IDAtNTguNS0yMC40LTExMi4yLTU0LjItMTU0LjYtMTcuOCAxNy4zLTMyLjYgMzcuMS00My42IDU5LjVsLTI4LjctMTQuMWMxMi44LTI2IDMwLTQ5IDUwLjgtNjlDMzc1LjYgMzQuNyAzMTUgOCAyNDggOCAxODEuMSA4IDEyMC41IDM0LjYgNzUuOSA3Ny43YzIwLjcgMTkuOSAzNy45IDQyLjkgNTAuNyA2OC44bC0yOC43IDE0LjFjLTExLTIyLjMtMjUuNy00Mi4xLTQzLjUtNTkuNEMyMC40IDE0My43IDAgMTk3LjQgMCAyNTZjMCA1OC42IDIwLjQgMTEyLjMgNTQuNCAxNTQuNyAxOC4yLTE3LjcgMzMuMi0zOCA0NC4zLTYxbDI4LjggMTMuOWMtMTIuOSAyNi43LTMwLjMgNTAuMy01MS41IDcwLjcgNDQuNSA0My4xIDEwNS4xIDY5LjcgMTcyIDY5LjcgNjYuOCAwIDEyNy4zLTI2LjUgMTcxLjktNjkuNS0yMS4xLTIwLjQtMzguNS00My45LTUxLjQtNzAuNnptLTIyOC4zLTMybC0zMC41LTkuOGMxNC45LTQ2LjQgMTIuNy05My44LS42LTEzNGwzMC40LTEwYzE1IDQ1LjYgMTggOTkuOS43IDE1My44em0yMTYuMy0xNTMuNGwzMC40IDEwYy0xMy4yIDQwLjEtMTUuNSA4Ny41LS42IDEzNGwtMzAuNSA5LjhjLTE3LjMtNTQtMTQuMy0xMDguMy43LTE1My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXNrZXRiYWxsQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuMyAxMC4zYy00My44IDYuMy04Ni4yIDI0LjEtMTIyLjIgNTMuOGw3Ny40IDc3LjRjMjcuOC0zNS44IDQzLjMtODEuMiA0NC44LTEzMS4yek0yNDggMjIyTDQwNS45IDY0LjFjLTQyLjQtMzUtOTMuNi01My41LTE0NS41LTU2LjEtMS4yIDYzLjktMjEuNSAxMjIuMy01OC43IDE2Ny43TDI0OCAyMjJ6TTU2LjEgOTguMWMtMjkuNyAzNi00Ny41IDc4LjQtNTMuOCAxMjIuMiA1MC0xLjUgOTUuNS0xNyAxMzEuMi00NC44TDU2LjEgOTguMXptMjcyLjIgMjA0LjJjNDUuMy0zNy4xIDEwMy43LTU3LjQgMTY3LjctNTguNy0yLjYtNTEuOS0yMS4xLTEwMy4xLTU2LjEtMTQ1LjVMMjgyIDI1Nmw0Ni4zIDQ2LjN6TTI0OCAyOTBMOTAuMSA0NDcuOWM0Mi40IDM0LjkgOTMuNiA1My41IDE0NS41IDU2LjEgMS4zLTY0IDIxLjYtMTIyLjQgNTguNy0xNjcuN0wyNDggMjkwem0xOTEuOSAxMjMuOWMyOS43LTM2IDQ3LjUtNzguNCA1My44LTEyMi4yLTUwLjEgMS42LTk1LjUgMTcuMS0xMzEuMiA0NC44bDc3LjQgNzcuNHpNMTY3LjcgMjA5LjdDMTIyLjMgMjQ2LjkgNjMuOSAyNjcuMyAwIDI2OC40YzIuNiA1MS45IDIxLjEgMTAzLjEgNTYuMSAxNDUuNUwyMTQgMjU2bC00Ni4zLTQ2LjN6bTExNiAyOTJjNDMuOC02LjMgODYuMi0yNC4xIDEyMi4yLTUzLjhsLTc3LjQtNzcuNGMtMjcuNyAzNS43LTQzLjIgODEuMi00NC44IDEzMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLDM4NGE5NS40LDk1LjQsMCwwLDAsMzIsNzEuMDlWNDk2YTE2LDE2LDAsMCwwLDE2LDE2aDMyYTE2LDE2LDAsMCwwLDE2LTE2VjQ4MEgzODR2MTZhMTYsMTYsMCwwLDAsMTYsMTZoMzJhMTYsMTYsMCwwLDAsMTYtMTZWNDU1LjA5QTk1LjQsOTUuNCwwLDAsMCw0ODAsMzg0VjMzNkgzMlpNNDk2LDI1Nkg4MFY2OS4yNWEyMS4yNiwyMS4yNiwwLDAsMSwzNi4yOC0xNWwxOS4yNywxOS4yNmMtMTMuMTMsMjkuODgtNy42MSw1OS4xMSw4LjYyLDc5LjczbC0uMTcuMTdBMTYsMTYsMCwwLDAsMTQ0LDE3NmwxMS4zMSwxMS4zMWExNiwxNiwwLDAsMCwyMi42MywwTDI4My4zMSw4MS45NGExNiwxNiwwLDAsMCwwLTIyLjYzTDI3Miw0OGExNiwxNiwwLDAsMC0yMi42MiwwbC0uMTcuMTdjLTIwLjYyLTE2LjIzLTQ5LjgzLTIxLjc1LTc5LjczLTguNjJMMTUwLjIyLDIwLjI4QTY5LjI1LDY5LjI1LDAsMCwwLDMyLDY5LjI1VjI1NkgxNkExNiwxNiwwLDAsMCwwLDI3MnYxNmExNiwxNiwwLDAsMCwxNiwxNkg0OTZhMTYsMTYsMCwwLDAsMTYtMTZWMjcyQTE2LDE2LDAsMCwwLDQ5NiwyNTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0ZXJ5RnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tNDggOTZIOTZ2MTI4aDQxNlYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0yNDAgOTZIOTZ2MTI4aDIyNFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlRdWFydGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0zMzYgOTZIOTZ2MTI4aDEyOFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlUaHJlZVF1YXJ0ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0xNDQgOTZIOTZ2MTI4aDMyMFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMjU2YzQ0LjExIDAgODAtMzUuODkgODAtODBzLTM1Ljg5LTgwLTgwLTgwLTgwIDM1Ljg5LTgwIDgwIDM1Ljg5IDgwIDgwIDgwem0zNTItMTI4SDMwNGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0SDY0VjgwYzAtOC44NC03LjE2LTE2LTE2LTE2SDE2QzcuMTYgNjQgMCA3MS4xNiAwIDgwdjM1MmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNDhoNTEydjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjI0MGMwLTYxLjg2LTUwLjE0LTExMi0xMTItMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA5NmgtNDhWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djQwMGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMjcyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtNDIuMTFsODAuNjA2LTM1Ljk3N0M0MjkuMzk2IDM2NS4wNjMgNDQ4IDMzNi4zODggNDQ4IDMwNC44NlYxNzZjMC00NC4xMTItMzUuODg4LTgwLTgwLTgwem0xNiAyMDguODZhMTYuMDE4IDE2LjAxOCAwIDAgMS05LjQ3OSAxNC42MTFMMzIwIDM0My44MDVWMTYwaDQ4YzguODIyIDAgMTYgNy4xNzggMTYgMTZ2MTI4Ljg2ek0yMDggMzg0Yy04LjgzNiAwLTE2LTcuMTY0LTE2LTE2VjE0NGMwLTguODM2IDcuMTY0LTE2IDE2LTE2czE2IDcuMTY0IDE2IDE2djIyNGMwIDguODM2LTcuMTY0IDE2LTE2IDE2em0tOTYgMGMtOC44MzYgMC0xNi03LjE2NC0xNi0xNlYxNDRjMC04LjgzNiA3LjE2NC0xNiAxNi0xNnMxNiA3LjE2NCAxNiAxNnYyMjRjMCA4LjgzNi03LjE2NCAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVsbFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44MiA0NTguMWwtOTAuNjItNzAuMDVjLjE5LTEuMzguOC0yLjY2LjgtNC4wNi4wNS03LjU1LTIuNjEtMTUuMjctOC42MS0yMS43MS0xOS4zMi0yMC43Ni01NS40Ny01MS45OS01NS40Ny0xNTQuMjkgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRjLTQwLjMzIDguMzgtNzQuNjYgMzEuMDctOTcuNTkgNjIuNTdMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM1IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDItNi45NyA0LjE3LTE3LjAyLTIuODEtMjIuNDV6TTE1Ny4yMyAyNTEuNTRjLTguNjEgNjcuOTYtMzYuNDEgOTMuMzMtNTIuNjIgMTEwLjc1LTYgNi40NS04LjY2IDE0LjE2LTguNjEgMjEuNzEuMTEgMTYuNCAxMi45OCAzMiAzMi4xIDMyaDI0MS45MkwxNTcuMjMgMjUxLjU0ek0zMjAgNTEyYzM1LjMyIDAgNjMuOTctMjguNjUgNjMuOTctNjRIMjU2LjAzYzAgMzUuMzUgMjguNjUgNjQgNjMuOTcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDUxMmMzNS4zMiAwIDYzLjk3LTI4LjY1IDYzLjk3LTY0SDE2MC4wM2MwIDM1LjM1IDI4LjY1IDY0IDYzLjk3IDY0em0yMTUuMzktMTQ5LjcxYy0xOS4zMi0yMC43Ni01NS40Ny01MS45OS01NS40Ny0xNTQuMjkgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRDMTE4LjU2IDY4LjEgNjQuMDggMTMwLjMgNjQuMDggMjA4YzAgMTAyLjMtMzYuMTUgMTMzLjUzLTU1LjQ3IDE1NC4yOS02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgzODMuOGMxOS4xMiAwIDMyLTE1LjYgMzIuMS0zMiAuMDUtNy41NS0yLjYxLTE1LjI3LTguNjEtMjEuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlemllckN1cnZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCAzMmgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTIwOCA4OGgtODQuNzVDMTEzLjc1IDY0LjU2IDkwLjg0IDQ4IDY0IDQ4IDI4LjY2IDQ4IDAgNzYuNjUgMCAxMTJzMjguNjYgNjQgNjQgNjRjMjYuODQgMCA0OS43NS0xNi41NiA1OS4yNS00MGg3OS43M2MtNTUuMzcgMzIuNTItOTUuODYgODcuMzItMTA5LjU0IDE1Mmg0OS40YzExLjMtNDEuNjEgMzYuNzctNzcuMjEgNzEuMDQtMTAxLjU2LTMuNy04LjA4LTUuODgtMTYuOTktNS44OC0yNi40NFY4OHptLTQ4IDIzMkg2NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTU3NiA0OGMtMjYuODQgMC00OS43NSAxNi41Ni01OS4yNSA0MEg0MzJ2NzJjMCA5LjQ1LTIuMTkgMTguMzYtNS44OCAyNi40NCAzNC4yNyAyNC4zNSA1OS43NCA1OS45NSA3MS4wNCAxMDEuNTZoNDkuNGMtMTMuNjgtNjQuNjgtNTQuMTctMTE5LjQ4LTEwOS41NC0xNTJoNzkuNzNjOS41IDIzLjQ0IDMyLjQxIDQwIDU5LjI1IDQwIDM1LjM0IDAgNjQtMjguNjUgNjQtNjRzLTI4LjY2LTY0LTY0LTY0em0wIDI3MmgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0xNDQgMTQ0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDQ4VjgwYzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djQ4aDQ4YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2aC00OHYxMTJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlYxOTJoLTQ4Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJ6bTIzNi44IDMwNEg5NmMtMTkuMiAwLTMyLTEyLjgtMzItMzJzMTYtMzIgMzItMzJoMjg0Ljh2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpY3ljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyLjUwOSAxOTIuMDAxYy0xNi4zNzMtLjA2NC0zMi4wMyAyLjk1NS00Ni40MzYgOC40OTVsLTc3LjY4LTEyNS4xNTNBMjQgMjQgMCAwIDAgMzY4LjAwMSA2NGgtNjRjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2MTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg1MC42NDlsMTQuODk2IDI0SDI1Ni4wMDJ2LTE2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZoLTg3LjQ1OWMtMTMuNDQxIDAtMjQuNzc3IDEwLjk5OS0yNC41MzYgMjQuNDM3LjIzMiAxMy4wNDQgMTAuODc2IDIzLjU2MyAyMy45OTUgMjMuNTYzaDQ4LjcyNmwtMjkuNDE3IDQ3LjUyYy0xMy40MzMtNC44My0yNy45MDQtNy40ODMtNDIuOTkyLTcuNTJDNTguMDk0IDE5MS44My40MTIgMjQ5LjAxMi4wMDIgMzE5LjIzNi0uNDEzIDM5MC4yNzkgNTcuMDU1IDQ0OCAxMjguMDAyIDQ0OGM1OS42NDIgMCAxMDkuNzU4LTQwLjc5MyAxMjMuOTY3LTk2aDUyLjAzM2EyNCAyNCAwIDAgMCAyMC40MDYtMTEuMzY3TDQxMC4zNyAyMDEuNzdsMTQuOTM4IDI0LjA2N2MtMjUuNDU1IDIzLjQ0OC00MS4zODUgNTcuMDgxLTQxLjMwNyA5NC40MzcuMTQ1IDY4LjgzMyA1Ny44OTkgMTI3LjA1MSAxMjYuNzI5IDEyNy43MTkgNzAuNjA2LjY4NSAxMjguMTgxLTU1LjgwMyAxMjkuMjU1LTEyNS45OTYgMS4wODYtNzAuOTQxLTU2LjUyNi0xMjkuNzItMTI3LjQ3Ni0xMjkuOTk2ek0xODYuNzUgMjY1Ljc3MmM5LjcyNyAxMC41MjkgMTYuNjczIDIzLjY2MSAxOS42NDIgMzguMjI4aC00My4zMDZsMjMuNjY0LTM4LjIyOHpNMTI4LjAwMiA0MDBjLTQ0LjExMiAwLTgwLTM1Ljg4OC04MC04MHMzNS44ODgtODAgODAtODBjNS44NjkgMCAxMS41ODYuNjUzIDE3LjA5OSAxLjg1OWwtNDUuNTA1IDczLjUwOUM4OS43MTUgMzMxLjMyNyAxMDEuMjEzIDM1MiAxMjAuMDAyIDM1Mmg4MS4zYy0xMi4zNyAyOC4yMjUtNDAuNTYyIDQ4LTczLjMgNDh6bTE2Mi42My05NmgtMzUuNjI0Yy0zLjk2LTMxLjc1Ni0xOS41NTYtNTkuODk0LTQyLjM4My04MC4wMjZMMjM3LjM3MSAxODRoMTI3LjU0N2wtNzQuMjg2IDEyMHptMjE3LjA1NyA5NS44ODZjLTQxLjAzNi0yLjE2NS03NC4wNDktMzUuNjkyLTc1LjYyNy03Ni43NTUtLjgxMi0yMS4xMjEgNi42MzMtNDAuNTE4IDE5LjMzNS01NS4yNjNsNDQuNDMzIDcxLjU4NmM0LjY2IDcuNTA4IDE0LjUyNCA5LjgxNiAyMi4wMzIgNS4xNTZsMTMuNTk0LTguNDM3YzcuNTA4LTQuNjYgOS44MTctMTQuNTI0IDUuMTU2LTIyLjAzMmwtNDQuNDY4LTcxLjY0M2E3OS45MDEgNzkuOTAxIDAgMCAxIDE5Ljg1OC0yLjQ5N2M0NC4xMTIgMCA4MCAzNS44ODggODAgODAtLjAwMSA0NS41NC0zOC4yNTIgODIuMzE2LTg0LjMxMyA3OS44ODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgOTZhNDggNDggMCAxIDAtNDgtNDggNDggNDggMCAwIDAgNDggNDh6bS00IDEyMWEzMS45IDMxLjkgMCAwIDAgMjAgN2g2NGEzMiAzMiAwIDAgMCAwLTY0aC01Mi43OEwzNTYgMTAzYTMxLjk0IDMxLjk0IDAgMCAwLTQwLjgxLjY4bC0xMTIgOTZhMzIgMzIgMCAwIDAgMy4wOCA1MC45MkwyODggMzA1LjEyVjQxNmEzMiAzMiAwIDAgMCA2NCAwVjI4OGEzMiAzMiAwIDAgMC0xNC4yNS0yNi42MmwtNDEuMzYtMjcuNTcgNTguMjUtNDkuOTJ6bTExNiAzOWExMjggMTI4IDAgMSAwIDEyOCAxMjggMTI4IDEyOCAwIDAgMC0xMjgtMTI4em0wIDE5MmE2NCA2NCAwIDEgMSA2NC02NCA2NCA2NCAwIDAgMS02NCA2NHpNMTI4IDI1NmExMjggMTI4IDAgMSAwIDEyOCAxMjggMTI4IDEyOCAwIDAgMC0xMjgtMTI4em0wIDE5MmE2NCA2NCAwIDEgMSA2NC02NCA2NCA2NCAwIDAgMS02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlub2N1bGFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTY0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGg5NlY0OHpNNjMuOTEgMTU5Ljk5QzYxLjQgMjUzLjg0IDMuNDYgMjc0LjIyIDAgNDA0djQ0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYyODhoMzJWMTI4SDk1Ljg0Yy0xNy42MyAwLTMxLjQ1IDE0LjM3LTMxLjkzIDMxLjk5em0zODQuMTggMGMtLjQ4LTE3LjYyLTE0LjMtMzEuOTktMzEuOTMtMzEuOTlIMzIwdjE2MGgzMnYxNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi00NGMtMy40Ni0xMjkuNzgtNjEuNC0xNTAuMTYtNjMuOTEtMjQ0LjAxek0xNzYgMzJoLTY0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGg5NlY0OGMwLTguODQtNy4xNi0xNi0xNi0xNnptNDggMjU2aDY0VjEyOGgtNjR2MTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaW9oYXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg3LjkgMTEyYzE4LjYgMCAzNi4yIDMuOCA1Mi44IDkuNiAxMy4zLTEwLjMgMjMuNi0yNC4zIDI5LjUtNDAuNy0yNS4yLTEwLjktNTMtMTctODIuMi0xNy0yOS4xIDAtNTYuOSA2LTgyLjEgMTYuOSA1LjkgMTYuNCAxNi4yIDMwLjQgMjkuNSA0MC43IDE2LjUtNS43IDM0LTkuNSA1Mi41LTkuNXpNMTYzLjYgNDM4LjdjMTItMTEuOCAyMC40LTI2LjQgMjQuNS00Mi40LTMyLjktMjYuNC01NC44LTY1LjMtNTguOS0xMDkuNi04LjUtMi44LTE3LjItNC42LTI2LjQtNC42LTcuNiAwLTE1LjIgMS0yMi41IDMuMSA0LjEgNjIuOCAzNS44IDExOCA4My4zIDE1My41em0yMjQuMi00Mi42YzQuMSAxNiAxMi41IDMwLjcgMjQuNSA0Mi41IDQ3LjQtMzUuNSA3OS4xLTkwLjcgODMtMTUzLjUtNy4yLTItMTQuNy0zLTIyLjItMy05LjIgMC0xOCAxLjktMjYuNiA0LjctNC4xIDQ0LjItMjYgODIuOS01OC43IDEwOS4zem0xMTMuNS0yMDVjLTE3LjYtMTAuNC0zNi4zLTE2LjYtNTUuMy0xOS45IDYtMTcuNyAxMC0zNi40IDEwLTU2LjIgMC00MS0xNC41LTgwLjgtNDEtMTEyLjItMi41LTMtNi42LTMuNy0xMC0xLjgtMy4zIDEuOS00LjggNi0zLjYgOS43IDQuNSAxMy44IDYuNiAyNi4zIDYuNiAzOC41IDAgNjcuOC01My44IDEyMi45LTEyMCAxMjIuOVMxNjggMTE3IDE2OCA0OS4yYzAtMTIuMSAyLjItMjQuNyA2LjYtMzguNSAxLjItMy43LS4zLTcuOC0zLjYtOS43LTMuNC0xLjktNy41LTEuMi0xMCAxLjhDMTM0LjYgMzQuMiAxMjAgNzQgMTIwIDExNWMwIDE5LjggMy45IDM4LjUgMTAgNTYuMi0xOC45IDMuMy0zNy43IDkuNS01NS4zIDE5LjktMzQuNiAyMC41LTYxIDUzLjMtNzQuMyA5Mi40LTEuMyAzLjcuMiA3LjcgMy41IDkuOCAzLjMgMiA3LjUgMS4zIDEwLTEuNiA5LjQtMTAuOCAxOS0xOS4xIDI5LjItMjUuMSA1Ny4zLTMzLjkgMTMwLjgtMTMuNyAxNjMuOSA0NSAzMy4xIDU4LjcgMTMuNCAxMzQtNDMuOSAxNjcuOS0xMC4yIDYuMS0yMiAxMC40LTM1LjggMTMuNC0zLjcuOC02LjQgNC4yLTYuNCA4LjEuMSA0IDIuNyA3LjMgNi41IDggMzkuNyA3LjggODAuNi44IDExNS4yLTE5LjcgMTgtMTAuNiAzMi45LTI0LjUgNDUuMy00MC4xIDEyLjQgMTUuNiAyNy4zIDI5LjUgNDUuMyA0MC4xIDM0LjYgMjAuNSA3NS41IDI3LjUgMTE1LjIgMTkuNyAzLjgtLjcgNi40LTQgNi41LTggMC0zLjktMi42LTcuMy02LjQtOC4xLTEzLjktMi45LTI1LjYtNy4zLTM1LjgtMTMuNC01Ny4zLTMzLjktNzctMTA5LjItNDMuOS0xNjcuOXMxMDYuNi03OC45IDE2My45LTQ1YzEwLjIgNi4xIDE5LjggMTQuMyAyOS4yIDI1LjEgMi41IDIuOSA2LjcgMy42IDEwIDEuNnM0LjgtNi4xIDMuNS05LjhjLTEzLjEtMzkuMS0zOS41LTcyLTc0LjEtOTIuNHptLTIxMy40IDEyOWMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpcnRoZGF5Q2FrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzg0Yy0yOC4wMiAwLTMxLjI2LTMyLTc0LjUtMzItNDMuNDMgMC00Ni44MjUgMzItNzQuNzUgMzItMjcuNjk1IDAtMzEuNDU0LTMyLTc0Ljc1LTMyLTQyLjg0MiAwLTQ3LjIxOCAzMi03NC41IDMyLTI4LjE0OCAwLTMxLjIwMi0zMi03NC43NS0zMi00My41NDcgMC00Ni42NTMgMzItNzQuNzUgMzJ2LTgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDE2VjExMmg2NHYxNDRoNjRWMTEyaDY0djE0NGg2NFYxMTJoNjR2MTQ0aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djgwem0wIDEyOEgwdi05NmM0My4zNTYgMCA0Ni43NjctMzIgNzQuNzUtMzIgMjcuOTUxIDAgMzEuMjUzIDMyIDc0Ljc1IDMyIDQyLjg0MyAwIDQ3LjIxNy0zMiA3NC41LTMyIDI4LjE0OCAwIDMxLjIwMSAzMiA3NC43NSAzMiA0My4zNTcgMCA0Ni43NjctMzIgNzQuNzUtMzIgMjcuNDg4IDAgMzEuMjUyIDMyIDc0LjUgMzJ2OTZ6TTk2IDk2Yy0xNy43NSAwLTMyLTE0LjI1LTMyLTMyIDAtMzEgMzItMjMgMzItNjQgMTIgMCAzMiAyOS41IDMyIDU2cy0xNC4yNSA0MC0zMiA0MHptMTI4IDBjLTE3Ljc1IDAtMzItMTQuMjUtMzItMzIgMC0zMSAzMi0yMyAzMi02NCAxMiAwIDMyIDI5LjUgMzIgNTZzLTE0LjI1IDQwLTMyIDQwem0xMjggMGMtMTcuNzUgMC0zMi0xNC4yNS0zMi0zMiAwLTMxIDMyLTIzIDMyLTY0IDEyIDAgMzIgMjkuNSAzMiA1NnMtMTQuMjUgNDAtMzIgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsZW5kZXJQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTIgNjRoMTY2LjU0TDU3NiAwSDE5MnYzNTJoMjg4bDE3LjQ2LTY0SDM5MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExNC4xOGwxNy40Ni02NEgzOTJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxNDAuMzZsMTcuNDYtNjRIMzkyYy00LjQyIDAtOC0zLjU4LTgtOFY3MmMwLTQuNDIgMy41OC04IDgtOHpNMTU4LjggMzM1LjAxbC0yNS43OC02My4yNmMtMi43OC02LjgxLTkuOC0xMC45OS0xNy4yNC0xMC4yNmwtNDUuMDMgNC40MmMtMTcuMjgtNDYuOTQtMTcuNjUtOTkuNzggMC0xNDcuNzJsNDUuMDMgNC40MmM3LjQzLjczIDE0LjQ2LTMuNDYgMTcuMjQtMTAuMjZsMjUuNzgtNjMuMjZjMy4wMi03LjM5LjItMTUuODUtNi42OC0yMC4wN2wtMzkuMjgtMjQuMUM5OC41MS0zLjg3IDgwLjA5LS41IDY4Ljk1IDExLjk3Yy05Mi41NyAxMDMuNi05MiAyNTkuNTUgMi4xIDM2Mi40OSA5Ljg3IDEwLjggMjkuMTIgMTIuNDggNDEuNjUgNC44bDM5LjQxLTI0LjE4YzYuODktNC4yMiA5LjctMTIuNjcgNi42OS0yMC4wN3pNNDgwIDM4NEgxOTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzNTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0zNS4zNS0yOC42NS02NC02NC02NHptLTE0NCA5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzg0SDE2MGMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tMTI4IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem00MC00MTZoMTY2LjU0TDUxMiAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djE2MGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDEwMy4yN2w4LjczIDk2aDI1NmwxNy40Ni02NEgzMjhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxMTQuMThsMTcuNDYtNjRIMzI4Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTQwLjM2bDE3LjQ2LTY0SDMyOGMtNC40MiAwLTgtMy41OC04LThWNzJjMC00LjQyIDMuNTgtOCA4LTh6TTY0IDE5MlY2NGg2OS44MmwxMS42NCAxMjhINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4MC4xNSA1MTAuODM3YTggOCAwIDAgMS0xMC45ODktMi42ODdsLTEyNS4zMy0yMDYuNDI3YTMxLjkyMyAzMS45MjMgMCAwIDAgMTIuOTU4LTkuNDg1bDEyNi4wNDggMjA3LjYwOGE4IDggMCAwIDEtMi42ODcgMTAuOTkxek0xNDIuODAzIDMxNC4zMzhsLTMyLjU0IDg5LjQ4NSAzNi4xMiA4OC4yODVjNi42OTMgMTYuMzYgMjUuMzc3IDI0LjE5MiA0MS43MzMgMTcuNTAxIDE2LjM1Ny02LjY5MiAyNC4xOTMtMjUuMzc2IDE3LjUwMS00MS43MzRsLTYyLjgxNC0xNTMuNTM3ek05NiA4OGMyNC4zMDEgMCA0NC0xOS42OTkgNDQtNDRTMTIwLjMwMSAwIDk2IDAgNTIgMTkuNjk5IDUyIDQ0czE5LjY5OSA0NCA0NCA0NHptMTU0LjgzNyAxNjkuMTI4bC0xMjAtMTUyYy00LjczMy01Ljk5NS0xMS43NS05LjEwOC0xOC44MzctOS4xMTJWOTZIODB2LjAyNmMtNy4xNDYuMDAzLTE0LjIxNyAzLjE2MS0xOC45NDQgOS4yNEwwIDE4My43NjZ2OTUuNjk0YzAgMTMuNDU1IDExLjAxMSAyNC43OTEgMjQuNDY0IDI0LjUzNkMzNy41MDUgMzAzLjc0OCA0OCAyOTMuMSA0OCAyODB2LTc5Ljc2NmwxNi0yMC41NzF2MTQwLjY5OEw5LjkyNyA0NjkuMDU1Yy02LjA0IDE2LjYwOSAyLjUyOCAzNC45NjkgMTkuMTM4IDQxLjAwOSAxNi42MDIgNi4wMzkgMzQuOTY4LTIuNTI0IDQxLjAwOS0xOS4xMzhMMTM2IDMwOS42MzhWMjAyLjQ0MWwtMzEuNDA2LTM5LjgxNmE0IDQgMCAxIDEgNi4yNjktNC45NzFsMTAyLjMgMTI5LjIxN2M5LjE0NSAxMS41ODQgMjQuMzY4IDExLjMzOSAzMy43MDggMy45NjUgMTAuNDEtOC4yMTYgMTIuMTU5LTIzLjMzNCAzLjk2Ni0zMy43MDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcyLjIgMjI2LjhjLTE0LjYtMi45LTI4LjIgOC45LTI4LjIgMjMuOFYzMDFjMCAxMC4yIDcuMSAxOC40IDE2LjcgMjIgMTguMiA2LjggMzEuMyAyNC40IDMxLjMgNDUgMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNDhjMCA4OS41IDgyLjEgMTYwLjIgMTc1IDE0MC43IDU0LjQtMTEuNCA5OC4zLTU1LjQgMTA5LjctMTA5LjcgMTcuNC04Mi45LTM3LTE1Ny4yLTExMi41LTE3Mi4yek0yMDkgMGMtOS4yLS41LTE3IDYuOC0xNyAxNnYzMS42YzAgOC41IDYuNiAxNS41IDE1IDE1LjkgMTI5LjQgNyAyMzMuNCAxMTIgMjQwLjkgMjQxLjUuNSA4LjQgNy41IDE1IDE1LjkgMTVoMzIuMWM5LjIgMCAxNi41LTcuOCAxNi0xN0M1MDMuNCAxMzkuOCAzNzIuMiA4LjYgMjA5IDB6bS4zIDk2Yy05LjMtLjctMTcuMyA2LjctMTcuMyAxNi4xdjMyLjFjMCA4LjQgNi41IDE1LjMgMTQuOCAxNS45IDc2LjggNi4zIDEzOCA2OC4yIDE0NC45IDE0NS4yLjggOC4zIDcuNiAxNC43IDE1LjkgMTQuN2gzMi4yYzkuMyAwIDE2LjgtOCAxNi4xLTE3LjMtOC40LTExMC4xLTk2LjUtMTk4LjItMjA2LjYtMjA2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMzLjQ5IDIzOGExMjIgMTIyIDAgMCAwIDI3LTY1LjIxQzM2Ny44NyA5Ni40OSAzMDggMzIgMjMzLjQyIDMySDM0YTE2IDE2IDAgMCAwLTE2IDE2djQ4YTE2IDE2IDAgMCAwIDE2IDE2aDMxLjg3djI4OEgzNGExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmgyMDkuMzJjNzAuOCAwIDEzNC4xNC01MS43NSAxNDEtMTIyLjQgNC43NC00OC40NS0xNi4zOS05Mi4wNi01MC44My0xMTkuNnpNMTQ1LjY2IDExMmg4Ny43NmE0OCA0OCAwIDAgMSAwIDk2aC04Ny43NnptODcuNzYgMjg4aC04Ny43NlYyODhoODcuNzZhNTYgNTYgMCAwIDEgMCAxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDE2MEgxODAuNmw0Mi42LTEyOS44QzIyNy4yIDE1IDIxNS43IDAgMjAwIDBINTZDNDQgMCAzMy44IDguOSAzMi4yIDIwLjhsLTMyIDI0MEMtMS43IDI3NS4yIDkuNSAyODggMjQgMjg4aDExOC43TDk2LjYgNDgyLjVjLTMuNiAxNS4yIDggMjkuNSAyMy4zIDI5LjUgOC40IDAgMTYuNC00LjQgMjAuOC0xMmwxNzYtMzA0YzkuMy0xNS45LTIuMi0zNi0yMC43LTM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb21iIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC41IDg4LjVsLTUyIDUyTDQxNSAxNjdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTE3LjQgMTcuNGMxMS44IDI2LjEgMTguNCA1NS4xIDE4LjQgODUuNiAwIDExNC45LTkzLjEgMjA4LTIwOCAyMDhTMCA0MTguOSAwIDMwNCA5My4xIDk2IDIwOCA5NmMzMC41IDAgNTkuNSA2LjYgODUuNiAxOC40TDMxMSA5N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwyNi41IDI2LjUgNTItNTIgMTcuMSAxN3pNNTAwIDYwaC0yNGMtNi42IDAtMTIgNS40LTEyIDEyczUuNCAxMiAxMiAxMmgyNGM2LjYgMCAxMi01LjQgMTItMTJzLTUuNC0xMi0xMi0xMnpNNDQwIDBjLTYuNiAwLTEyIDUuNC0xMiAxMnYyNGMwIDYuNiA1LjQgMTIgMTIgMTJzMTItNS40IDEyLTEyVjEyYzAtNi42LTUuNC0xMi0xMi0xMnptMzMuOSA1NWwxNy0xN2M0LjctNC43IDQuNy0xMi4zIDAtMTctNC43LTQuNy0xMi4zLTQuNy0xNyAwbC0xNyAxN2MtNC43IDQuNy00LjcgMTIuMyAwIDE3IDQuOCA0LjcgMTIuNCA0LjcgMTcgMHptLTY3LjggMGM0LjcgNC43IDEyLjMgNC43IDE3IDAgNC43LTQuNyA0LjctMTIuMyAwLTE3bC0xNy0xN2MtNC43LTQuNy0xMi4zLTQuNy0xNyAwLTQuNyA0LjctNC43IDEyLjMgMCAxN2wxNyAxN3ptNjcuOCAzNGMtNC43LTQuNy0xMi4zLTQuNy0xNyAwLTQuNyA0LjctNC43IDEyLjMgMCAxN2wxNyAxN2M0LjcgNC43IDEyLjMgNC43IDE3IDAgNC43LTQuNyA0LjctMTIuMyAwLTE3bC0xNy0xN3pNMTEyIDI3MmMwLTM1LjMgMjguNy02NCA2NC02NCA4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtNTIuOSAwLTk2IDQzLjEtOTYgOTYgMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTguODggMjQ0LjU2YzI1LjItMTIuNiA0MS4xMi0zOC4zNiA0MS4xMi02Ni41M3YtNy42NEM2NDAgMTI5LjMgNjA2LjcgOTYgNTY1LjYxIDk2Yy0zMi4wMiAwLTYwLjQ0IDIwLjQ5LTcwLjU3IDUwLjg2LTcuNjggMjMuMDMtMTEuNiA0NS4xNC0zOC4xMSA0NS4xNEgxODMuMDZjLTI3LjM4IDAtMzEuNTgtMjUuNTQtMzguMTEtNDUuMTRDMTM0LjgzIDExNi40OSAxMDYuNCA5NiA3NC4zOSA5NiAzMy4zIDk2IDAgMTI5LjMgMCAxNzAuMzl2Ny42NGMwIDI4LjE3IDE1LjkyIDUzLjkzIDQxLjEyIDY2LjUzIDkuNDMgNC43MSA5LjQzIDE4LjE3IDAgMjIuODhDMTUuOTIgMjgwLjA0IDAgMzA1LjggMCAzMzMuOTd2Ny42NEMwIDM4Mi43IDMzLjMgNDE2IDc0LjM4IDQxNmMzMi4wMiAwIDYwLjQ0LTIwLjQ5IDcwLjU3LTUwLjg2IDcuNjgtMjMuMDMgMTEuNi00NS4xNCAzOC4xMS00NS4xNGgyNzMuODdjMjcuMzggMCAzMS41OCAyNS41NCAzOC4xMSA0NS4xNEM1MDUuMTcgMzk1LjUxIDUzMy42IDQxNiA1NjUuNjEgNDE2YzQxLjA4IDAgNzQuMzgtMzMuMyA3NC4zOC03NC4zOXYtNy42NGMwLTI4LjE4LTE1LjkyLTUzLjkzLTQxLjEyLTY2LjUzLTkuNDItNC43MS05LjQyLTE4LjE3LjAxLTIyLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMi41IDUxMmMyMy4xOCAwIDQ0LjQzLTEyLjU4IDU2LTMyLjY2QzM3NC42OSA0NTEuMjYgMzg0IDQxOC43NSAzODQgMzg0YzAtMzYuMTItMTAuMDgtNjkuODEtMjcuNDQtOTguNjJMNDAwIDI0MS45NGw5LjM4IDkuMzhjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwxMS4zLTExLjMyYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNsLTUyLjY5LTUyLjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0xMS4zMSAxMS4zMWMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2w5LjM4IDkuMzgtMzkuNDEgMzkuNDFjLTExLjU2LTExLjM3LTI0LjUzLTIxLjMzLTM4LjY1LTI5LjUxVjYzLjc0bDE1Ljk3LS4wMmM4LjgyLS4wMSAxNS45Ny03LjE2IDE1Ljk4LTE1Ljk4bC4wNC0zMS43MkMzMjAgNy4xNyAzMTIuODItLjAxIDMwMy45NyAwTDgwLjAzLjI2Yy04LjgyLjAxLTE1Ljk3IDcuMTYtMTUuOTggMTUuOThsLS4wNCAzMS43M2MtLjAxIDguODUgNy4xNyAxNi4wMiAxNi4wMiAxNi4wMUw5NiA2My45NnYxNTMuOTNDMzguNjcgMjUxLjEgMCAzMTIuOTcgMCAzODRjMCAzNC43NSA5LjMxIDY3LjI3IDI1LjUgOTUuMzRDMzcuMDggNDk5LjQyIDU4LjMzIDUxMiA4MS41IDUxMmgyMjF6TTEyMC4wNiAyNTkuNDNMMTQ0IDI0NS41NlY2My45MWw5Ni0uMTF2MTgxLjc2bDIzLjk0IDEzLjg3YzI0LjgxIDE0LjM3IDQ0LjEyIDM1LjczIDU2LjU2IDYwLjU3aC0yNTdjMTIuNDUtMjQuODQgMzEuNzUtNDYuMiA1Ni41Ni02MC41N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va0RlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDEzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNi0xNiA3LjItMTYgMTYgNy4yIDE2IDE2IDE2em0xNzYgMjIyLjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0yNDAgNTZjNDQuMiAwIDgwIDI4LjcgODAgNjQgMCAyMC45LTEyLjcgMzkuMi0zMiA1MC45VjE4NGMwIDguOC03LjIgMTYtMTYgMTZoLTY0Yy04LjggMC0xNi03LjItMTYtMTZ2LTEzLjFjLTE5LjMtMTEuNy0zMi0zMC0zMi01MC45IDAtMzUuMyAzNS44LTY0IDgwLTY0ek0xMjQuOCAyMjMuM2w2LjMtMTQuN2MxLjctNC4xIDYuNC01LjkgMTAuNS00LjJsOTguMyA0Mi4xIDk4LjQtNDIuMWM0LjEtMS43IDguOC4xIDEwLjUgNC4ybDYuMyAxNC43YzEuNyA0LjEtLjEgOC44LTQuMiAxMC41TDI4MC42IDI2NGw3MC4zIDMwLjFjNC4xIDEuNyA1LjkgNi40IDQuMiAxMC41bC02LjMgMTQuN2MtMS43IDQuMS02LjQgNS45LTEwLjUgNC4yTDI0MCAyODEuNGwtOTguMyA0Mi4yYy00LjEgMS43LTguOC0uMS0xMC41LTQuMmwtNi4zLTE0LjdjLTEuNy00LjEuMS04LjggNC4yLTEwLjVsNzAuNC0zMC4xLTcwLjUtMzAuM2MtNC4xLTEuNy01LjktNi40LTQuMi0xMC41em0yNTYgMjI0LjdIOTZjLTE5LjIgMC0zMi0xMi44LTMyLTMyczE2LTMyIDMyLTMyaDI4NC44ek0yMDggMTM2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzNTguNFYyNS42YzAtMTYtOS42LTI1LjYtMjUuNi0yNS42SDk2QzQxLjYgMCAwIDQxLjYgMCA5NnYzMjBjMCA1NC40IDQxLjYgOTYgOTYgOTZoMzI2LjRjMTIuOCAwIDI1LjYtOS42IDI1LjYtMjUuNnYtMTZxMC05LjYtOS42LTE5LjJjLTMuMi0xNi0zLjItNjAuOCAwLTczLjZxOS42LTQuOCA5LjYtMTkuMnpNMTQ0IDE2OGE4IDggMCAwIDEgOC04aDU2di01NmE4IDggMCAwIDEgOC04aDQ4YTggOCAwIDAgMSA4IDh2NTZoNTZhOCA4IDAgMCAxIDggOHY0OGE4IDggMCAwIDEtOCA4aC01NnY1NmE4IDggMCAwIDEtOCA4aC00OGE4IDggMCAwIDEtOC04di01NmgtNTZhOCA4IDAgMCAxLTgtOHptMjM2LjggMjgwSDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQyLjIyIDMyLjA1Yy01NC44IDMuMTEtMTYzLjcyIDE0LjQzLTIzMC45NiA1NS41OS00LjY0IDIuODQtNy4yNyA3Ljg5LTcuMjcgMTMuMTd2MzYzLjg3YzAgMTEuNTUgMTIuNjMgMTguODUgMjMuMjggMTMuNDkgNjkuMTgtMzQuODIgMTY5LjIzLTQ0LjMyIDIxOC43LTQ2LjkyIDE2Ljg5LS44OSAzMC4wMi0xNC40MyAzMC4wMi0zMC42NlY2Mi43NWMuMDEtMTcuNzEtMTUuMzUtMzEuNzQtMzMuNzctMzAuN3pNMjY0LjczIDg3LjY0QzE5Ny41IDQ2LjQ4IDg4LjU4IDM1LjE3IDMzLjc4IDMyLjA1IDE1LjM2IDMxLjAxIDAgNDUuMDQgMCA2Mi43NVY0MDAuNmMwIDE2LjI0IDEzLjEzIDI5Ljc4IDMwLjAyIDMwLjY2IDQ5LjQ5IDIuNiAxNDkuNTkgMTIuMTEgMjE4Ljc3IDQ2Ljk1IDEwLjYyIDUuMzUgMjMuMjEtMS45NCAyMy4yMS0xMy40NlYxMDAuNjNjMC01LjI5LTIuNjItMTAuMTQtNy4yNy0xMi45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1JlYWRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTYgNDIuOTggOTYgOTYgOTYgOTYtNDIuOTggOTYtOTZ6TTIzMy41OSAyNDEuMWMtNTkuMzMtMzYuMzItMTU1LjQzLTQ2LjMtMjAzLjc5LTQ5LjA1QzEzLjU1IDE5MS4xMyAwIDIwMy41MSAwIDIxOS4xNHYyMjIuOGMwIDE0LjMzIDExLjU5IDI2LjI4IDI2LjQ5IDI3LjA1IDQzLjY2IDIuMjkgMTMxLjk5IDEwLjY4IDE5My4wNCA0MS40MyA5LjM3IDQuNzIgMjAuNDgtMS43MSAyMC40OC0xMS44N1YyNTIuNTZjLS4wMS00LjY3LTIuMzItOC45NS02LjQyLTExLjQ2em0yNDguNjEtNDkuMDVjLTQ4LjM1IDIuNzQtMTQ0LjQ2IDEyLjczLTIwMy43OCA0OS4wNS00LjEgMi41MS02LjQxIDYuOTYtNi40MSAxMS42M3YyNDUuNzljMCAxMC4xOSAxMS4xNCAxNi42MyAyMC41NCAxMS45IDYxLjA0LTMwLjcyIDE0OS4zMi0zOS4xMSAxOTIuOTctNDEuNCAxNC45LS43OCAyNi40OS0xMi43MyAyNi40OS0yNy4wNlYyMTkuMTRjLS4wMS0xNS42My0xMy41Ni0yOC4wMS0yOS44MS0yNy4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzYwVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDk2QzQzIDAgMCA0MyAwIDk2djMyMGMwIDUzIDQzIDk2IDk2IDk2aDMyOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMTZjMC03LjUtMy41LTE0LjMtOC45LTE4LjctNC4yLTE1LjQtNC4yLTU5LjMgMC03NC43IDUuNC00LjMgOC45LTExLjEgOC45LTE4LjZ6TTEyOCAxMzRjMC0zLjMgMi43LTYgNi02aDIxMmMzLjMgMCA2IDIuNyA2IDZ2MjBjMCAzLjMtMi43IDYtNiA2SDEzNGMtMy4zIDAtNi0yLjctNi02di0yMHptMCA2NGMwLTMuMyAyLjctNiA2LTZoMjEyYzMuMyAwIDYgMi43IDYgNnYyMGMwIDMuMy0yLjcgNi02IDZIMTM0Yy0zLjMgMC02LTIuNy02LTZ2LTIwem0yNTMuNCAyNTBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyIDAtMTcuNiAxNC40LTMyIDMyLTMyaDI4NS40Yy0xLjkgMTcuMS0xLjkgNDYuOSAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDUxMlY0OEMwIDIxLjQ5IDIxLjQ5IDAgNDggMGgyODhjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHY0NjRMMTkyIDQwMCAwIDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9yZGVyQWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMkgzMkEzMiAzMiAwIDAgMCAwIDY0djM4NGEzMiAzMiAwIDAgMCAzMiAzMmgzODRhMzIgMzIgMCAwIDAgMzItMzJWNjRhMzIgMzIgMCAwIDAtMzItMzJ6bS0zMiA2NHYxMjhIMjU2Vjk2em0tMTkyIDB2MTI4SDY0Vjk2ek02NCA0MTZWMjg4aDEyOHYxMjh6bTE5MiAwVjI4OGgxMjh2MTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JkZXJOb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCAyMjRoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0yODggMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAxOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMjQwIDMyMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tOTYgMjg4aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2LTM4NGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpNNDggMjI0SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMCAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JkZXJTdHlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAgNDE2aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTE5MiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2LTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDk2aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0yODhoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC05NkgzMkEzMiAzMiAwIDAgMCAwIDY0djQwMGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY5NmgzNjhhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvd2xpbmdCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEyMCAxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem02NC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptNDggMTQ0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94T3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjUuNyAyNTZjLTE2LjkgMC0zMi44LTktNDEuNC0yMy40TDMyMCAxMjZsLTY0LjIgMTA2LjZjLTguNyAxNC41LTI0LjYgMjMuNS00MS41IDIzLjUtNC41IDAtOS0uNi0xMy4zLTEuOUw2NCAyMTV2MTc4YzAgMTQuNyAxMCAyNy41IDI0LjIgMzFsMjE2LjIgNTQuMWMxMC4yIDIuNSAyMC45IDIuNSAzMSAwTDU1MS44IDQyNGMxNC4yLTMuNiAyNC4yLTE2LjQgMjQuMi0zMVYyMTVsLTEzNyAzOS4xYy00LjMgMS4zLTguOCAxLjktMTMuMyAxLjl6bTIxMi42LTExMi4yTDU4Ni44IDQxYy0zLjEtNi4yLTkuOC05LjgtMTYuNy04LjlMMzIwIDY0bDkxLjcgMTUyLjFjMy44IDYuMyAxMS40IDkuMyAxOC41IDcuM2wxOTcuOS01Ni41YzkuOS0yLjkgMTQuNy0xMy45IDEwLjItMjMuMXpNNTMuMiA0MUwxLjcgMTQzLjhjLTQuNiA5LjIuMyAyMC4yIDEwLjEgMjNsMTk3LjkgNTYuNWM3LjEgMiAxNC43LTEgMTguNS03LjNMMzIwIDY0IDY5LjggMzIuMWMtNi45LS44LTEzLjUgMi43LTE2LjYgOC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hUaXNzdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgzLjg4LDI4Ny44Mmw2NC0xOTJIMzM4LjQ3YTcwLjIsNzAuMiwwLDAsMS02Ni41OS00OCw3MC4yMSw3MC4yMSwwLDAsMC02Ni42LTQ4SDYzLjg4bDY0LDI4OFptLTM4NCwxOTJhMzIsMzIsMCwwLDAsMzIsMzJoNDQ4YTMyLDMyLDAsMCwwLDMyLTMydi02NEgtLjEyWm00ODAtMjU2SDQzOC45NGwtMjEuMzMsNjRoMTQuMjdhMTYsMTYsMCwwLDEsMCwzMmgtMzUyYTE2LDE2LDAsMSwxLDAtMzJIOTUuMDlsLTE0LjIyLTY0aC00OWEzMiwzMiwwLDAsMC0zMiwzMnYxMjhoNTEydi0xMjhBMzIsMzIsMCwwLDAsNDc5Ljg4LDIyMy44MlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwOS41IDE4NC42TDQ1OC45IDMyLjhDNDUyLjQgMTMuMiA0MzQuMSAwIDQxMy40IDBIMjcydjE5MmgyMzguN2MtLjQtMi41LS40LTUtMS4yLTcuNHpNMjQwIDBIOTguNmMtMjAuNyAwLTM5IDEzLjItNDUuNSAzMi44TDIuNSAxODQuNmMtLjggMi40LS44IDQuOS0xLjIgNy40SDI0MFYwek0wIDIyNHYyNDBjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjIyNEgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjAgMjg4aC04MHY5NmwtMzItMjEuMy0zMiAyMS4zdi05NmgtODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxOTJjMCA4LjggNy4yIDE2IDE2IDE2aDIyNGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnptLTM4NC02NGgyMjRjOC44IDAgMTYtNy4yIDE2LTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtODB2OTZsLTMyLTIxLjNMMjU2IDk2VjBoLTgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTkyYzAgOC44IDcuMiAxNiAxNiAxNnptNjQgNjRoLTgwdjk2bC0zMi0yMS4zTDk2IDM4NHYtOTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYxOTJjMCA4LjggNy4yIDE2IDE2IDE2aDIyNGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhaWxsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMjU2YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NFMwIDI5MS4zNDYgMCAyNTZzMjguNjU0LTY0IDY0LTY0IDY0IDI4LjY1NCA2NCA2NHpNNjQgMzg0Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzUyQzI4LjY1NCAzMiAwIDYwLjY1NCAwIDk2czI4LjY1NCA2NCA2NCA2NCA2NC0yOC42NTQgNjQtNjQtMjguNjU0LTY0LTY0LTY0em0xNjAgMTkyYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAgMTYwYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzUyYy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjRzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6bTIyNCAxOTJjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMCAxNjBjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMC0zNTJjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHMyOC42NTQgNjQgNjQgNjQgNjQtMjguNjU0IDY0LTY0LTI4LjY1NC02NC02NC02NHptMTYwIDE5MmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wIDE2MGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wLTMyMGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMGMtMjkuOSAwLTU0LjcgMjAuNS02MS44IDQ4LjItLjggMC0xLjQtLjItMi4yLS4yLTM1LjMgMC02NCAyOC43LTY0IDY0IDAgNC44LjYgOS41IDEuNyAxNEM1Mi41IDEzOCAzMiAxNjYuNiAzMiAyMDBjMCAxMi42IDMuMiAyNC4zIDguMyAzNC45QzE2LjMgMjQ4LjcgMCAyNzQuMyAwIDMwNGMwIDMzLjMgMjAuNCA2MS45IDQ5LjQgNzMuOS0uOSA0LjYtMS40IDkuMy0xLjQgMTQuMSAwIDM5LjggMzIuMiA3MiA3MiA3MiA0LjEgMCA4LjEtLjUgMTItMS4yIDkuNiAyOC41IDM2LjIgNDkuMiA2OCA0OS4yIDM5LjggMCA3Mi0zMi4yIDcyLTcyVjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0em0zNjggMzA0YzAtMjkuNy0xNi4zLTU1LjMtNDAuMy02OS4xIDUuMi0xMC42IDguMy0yMi4zIDguMy0zNC45IDAtMzMuNC0yMC41LTYyLTQ5LjctNzQgMS00LjUgMS43LTkuMiAxLjctMTQgMC0zNS4zLTI4LjctNjQtNjQtNjQtLjggMC0xLjUuMi0yLjIuMkM0MjIuNyAyMC41IDM5Ny45IDAgMzY4IDBjLTM1LjMgMC02NCAyOC42LTY0IDY0djM3NmMwIDM5LjggMzIuMiA3MiA3MiA3MiAzMS44IDAgNTguNC0yMC43IDY4LTQ5LjIgMy45LjcgNy45IDEuMiAxMiAxLjIgMzkuOCAwIDcyLTMyLjIgNzItNzIgMC00LjgtLjUtOS41LTEuNC0xNC4xIDI5LTEyIDQ5LjQtNDAuNiA0OS40LTczLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyZWFkU2xpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBDMTA4IDAgMCA5My40IDAgMTY5LjE0IDAgMTk5LjQ0IDI0LjI0IDIyNCA2NCAyMjR2MjU2YzAgMTcuNjcgMTYuMTIgMzIgMzYgMzJoMzc2YzE5Ljg4IDAgMzYtMTQuMzMgMzYtMzJWMjI0YzM5Ljc2IDAgNjQtMjQuNTYgNjQtNTQuODZDNTc2IDkzLjQgNDY4IDAgMjg4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWVmY2FzZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDEyOGgtODBWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OHY0OEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE5MiA5NmgxMjh2MzJIMTkyVjk2em0xNjAgMjQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZWZjYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAzMzZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNDhIMHYxNDRjMCAyNS42IDIyLjQgNDggNDggNDhoNDE2YzI1LjYgMCA0OC0yMi40IDQ4LTQ4VjI4OEgzMjB2NDh6bTE0NC0yMDhoLTgwVjgwYzAtMjUuNi0yMi40LTQ4LTQ4LTQ4SDE3NmMtMjUuNiAwLTQ4IDIyLjQtNDggNDh2NDhINDhjLTI1LjYgMC00OCAyMi40LTQ4IDQ4djgwaDUxMnYtODBjMC0yNS42LTIyLjQtNDgtNDgtNDh6bS0xNDQgMEgxOTJWOTZoMTI4djMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcm9hZGNhc3RUb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTAuOTQgMTkyaDMzLjczYzExLjAxIDAgMTguNjEtMTAuODMgMTQuODYtMjEuMTgtNC45My0xMy41OC03LjU1LTI3Ljk4LTcuNTUtNDIuODJzMi42Mi0yOS4yNCA3LjU1LTQyLjgyQzIwMy4yOSA3NC44MyAxOTUuNjggNjQgMTg0LjY3IDY0aC0zMy43M2MtNy4wMSAwLTEzLjQ2IDQuNDktMTUuNDEgMTEuMjNDMTMwLjY0IDkyLjIxIDEyOCAxMDkuODggMTI4IDEyOGMwIDE4LjEyIDIuNjQgMzUuNzkgNy41NCA1Mi43NiAxLjk0IDYuNzQgOC4zOSAxMS4yNCAxNS40IDExLjI0ek04OS45MiAyMy4zNEM5NS41NiAxMi43MiA4Ny45NyAwIDc1Ljk2IDBINDAuNjNjLTYuMjcgMC0xMi4xNCAzLjU5LTE0Ljc0IDkuMzFDOS40IDQ1LjU0IDAgODUuNjUgMCAxMjhjMCAyNC43NSAzLjEyIDY4LjMzIDI2LjY5IDExOC44NiAyLjYyIDUuNjMgOC40MiA5LjE0IDE0LjYxIDkuMTRoMzQuODRjMTIuMDIgMCAxOS42MS0xMi43NCAxMy45NS0yMy4zNy00OS43OC05My4zMi0xNi43MS0xNzguMTUtLjE3LTIwOS4yOXpNNjE0LjA2IDkuMjlDNjExLjQ2IDMuNTggNjA1LjYgMCA1OTkuMzMgMGgtMzUuNDJjLTExLjk4IDAtMTkuNjYgMTIuNjYtMTQuMDIgMjMuMjUgMTguMjcgMzQuMjkgNDguNDIgMTE5LjQyLjI4IDIwOS4yMy01LjcyIDEwLjY4IDEuOCAyMy41MiAxMy45MSAyMy41MmgzNS4yM2M2LjI3IDAgMTIuMTMtMy41OCAxNC43My05LjI5QzYzMC41NyAyMTAuNDggNjQwIDE3MC4zNiA2NDAgMTI4cy05LjQyLTgyLjQ4LTI1Ljk0LTExOC43MXpNNDg5LjA2IDY0aC0zMy43M2MtMTEuMDEgMC0xOC42MSAxMC44My0xNC44NiAyMS4xOCA0LjkzIDEzLjU4IDcuNTUgMjcuOTggNy41NSA0Mi44MnMtMi42MiAyOS4yNC03LjU1IDQyLjgyYy0zLjc2IDEwLjM1IDMuODUgMjEuMTggMTQuODYgMjEuMThoMzMuNzNjNy4wMiAwIDEzLjQ2LTQuNDkgMTUuNDEtMTEuMjQgNC45LTE2Ljk3IDcuNTMtMzQuNjQgNy41My01Mi43NiAwLTE4LjEyLTIuNjQtMzUuNzktNy41NC01Mi43Ni0xLjk0LTYuNzUtOC4zOS0xMS4yNC0xNS40LTExLjI0em0tMTE2LjMgMTAwLjEyYzcuMDUtMTAuMjkgMTEuMi0yMi43MSAxMS4yLTM2LjEyIDAtMzUuMzUtMjguNjMtNjQtNjMuOTYtNjQtMzUuMzIgMC02My45NiAyOC42NS02My45NiA2NCAwIDEzLjQxIDQuMTUgMjUuODMgMTEuMiAzNi4xMmwtMTMwLjUgMzEzLjQxYy0zLjQgOC4xNS40NiAxNy41MiA4LjYxIDIwLjkybDI5LjUxIDEyLjMxYzguMTUgMy40IDE3LjUyLS40NiAyMC45MS04LjYxTDI0NC45NiAzODRoMTUwLjA3bDQ5LjIgMTE4LjE1YzMuNCA4LjE2IDEyLjc2IDEyLjAxIDIwLjkxIDguNjFsMjkuNTEtMTIuMzFjOC4xNS0zLjQgMTItMTIuNzcgOC42MS0yMC45MmwtMTMwLjUtMzEzLjQxek0yNzEuNjIgMzIwTDMyMCAyMDMuODEgMzY4LjM4IDMyMGgtOTYuNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni40NyAyMTYuNzdsODYuNzMgMTA5LjE4cy0xNi42IDEwMi4zNi03Ni41NyAxNTAuMTJDMjA2LjY2IDUyMy44NSAwIDUxMC4xOSAwIDUxMC4xOXMzLjgtMjMuMTQgMTEtNTUuNDNsOTQuNjItMTEyLjE3YzMuOTctNC43LS44Ny0xMS42Mi02LjY1LTkuNWwtNjAuNCAyMi4wOWMxNC40NC00MS42NiAzMi43Mi04MC4wNCA1NC42LTk3LjQ3IDU5Ljk3LTQ3Ljc2IDE2My4zLTQwLjk0IDE2My4zLTQwLjk0ek02MzYuNTMgMzEuMDNsLTE5Ljg2LTI1Yy01LjQ5LTYuOS0xNS41Mi04LjA1LTIyLjQxLTIuNTZsLTIzMi40OCAxNzcuOC0zNC4xNC00Mi45N2MtNS4wOS02LjQxLTE1LjE0LTUuMjEtMTguNTkgMi4yMWwtMjUuMzMgNTQuNTUgODYuNzMgMTA5LjE4IDU4LjgtMTIuNDVjOC0xLjY5IDExLjQyLTExLjIgNi4zNC0xNy42bC0zNC4wOS00Mi45MiAyMzIuNDgtMTc3LjhjNi44OS01LjQ4IDguMDQtMTUuNTMgMi41NS0yMi40NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJ1c2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDBIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2MjI0aDM4NFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0wIDMyMGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0aDY0djY0YzAgMzUuMzUgMjguNjYgNjQgNjQgNjRzNjQtMjguNjUgNjQtNjR2LTY0aDY0YzM1LjM0IDAgNjQtMjguNjUgNjQtNjR2LTMySDB2MzJ6bTE5MiAxMDRjMTMuMjUgMCAyNCAxMC43NCAyNCAyNCAwIDEzLjI1LTEwLjc1IDI0LTI0IDI0cy0yNC0xMC43NS0yNC0yNGMwLTEzLjI2IDEwLjc1LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTExLjk4OCAyODguOWMtLjQ3OCAxNy40My0xNS4yMTcgMzEuMS0zMi42NTMgMzEuMUg0MjR2MTZjMCAyMS44NjQtNC44ODIgNDIuNTg0LTEzLjYgNjEuMTQ1bDYwLjIyOCA2MC4yMjhjMTIuNDk2IDEyLjQ5NyAxMi40OTYgMzIuNzU4IDAgNDUuMjU1LTEyLjQ5OCAxMi40OTctMzIuNzU5IDEyLjQ5Ni00NS4yNTYgMGwtNTQuNzM2LTU0LjczNkMzNDUuODg2IDQ2Ny45NjUgMzE0LjM1MSA0ODAgMjgwIDQ4MFYyMzZjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjQ0Yy0zNC4zNTEgMC02NS44ODYtMTIuMDM1LTkwLjYzNi0zMi4xMDhsLTU0LjczNiA1NC43MzZjLTEyLjQ5OCAxMi40OTctMzIuNzU5IDEyLjQ5Ni00NS4yNTYgMC0xMi40OTYtMTIuNDk3LTEyLjQ5Ni0zMi43NTggMC00NS4yNTVsNjAuMjI4LTYwLjIyOEM5Mi44ODIgMzc4LjU4NCA4OCAzNTcuODY0IDg4IDMzNnYtMTZIMzIuNjY2QzE1LjIzIDMyMCAuNDkxIDMwNi4zMy4wMTMgMjg4LjktLjQ4NCAyNzAuODE2IDE0LjAyOCAyNTYgMzIgMjU2aDU2di01OC43NDVsLTQ2LjYyOC00Ni42MjhjLTEyLjQ5Ni0xMi40OTctMTIuNDk2LTMyLjc1OCAwLTQ1LjI1NSAxMi40OTgtMTIuNDk3IDMyLjc1OC0xMi40OTcgNDUuMjU2IDBMMTQxLjI1NSAxNjBoMjI5LjQ4OWw1NC42MjctNTQuNjI3YzEyLjQ5OC0xMi40OTcgMzIuNzU4LTEyLjQ5NyA0NS4yNTYgMCAxMi40OTYgMTIuNDk3IDEyLjQ5NiAzMi43NTggMCA0NS4yNTVMNDI0IDE5Ny4yNTVWMjU2aDU2YzE3Ljk3MiAwIDMyLjQ4NCAxNC44MTYgMzEuOTg4IDMyLjl6TTI1NyAwYy02MS44NTYgMC0xMTIgNTAuMTQ0LTExMiAxMTJoMjI0QzM2OSA1MC4xNDQgMzE4Ljg1NiAwIDI1NyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgNDgwaC0yMFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINTZDNDIuNzQ1IDAgMzIgMTAuNzQ1IDMyIDI0djQ1NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyMGg0NDh2LTIwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6TTEyOCA3NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJWNzZ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MHptNTIgMTQ4aC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTc2IDE2MGgtNjR2LTg0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4NHptNjQtMTcyYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDB6bTAtOTZjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MHptMC05NmMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMlY3NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1bGxob3JuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiAyNDBjMC0yMy42My0xMi45NS00NC4wNC0zMi01NS4xMlYzMi4wMUM1NDQgMjMuMjYgNTM3LjAyIDAgNTEyIDBjLTcuMTIgMC0xNC4xOSAyLjM4LTE5Ljk4IDcuMDJsLTg1LjAzIDY4LjAzQzM2NC4yOCAxMDkuMTkgMzEwLjY2IDEyOCAyNTYgMTI4SDY0Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djk2YzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzMuN2MtMS4zOSAxMC40OC0yLjE4IDIxLjE0LTIuMTggMzIgMCAzOS43NyA5LjI2IDc3LjM1IDI1LjU2IDExMC45NCA1LjE5IDEwLjY5IDE2LjUyIDE3LjA2IDI4LjQgMTcuMDZoNzQuMjhjMjYuMDUgMCA0MS42OS0yOS44NCAyNS45LTUwLjU2LTE2LjQtMjEuNTItMjYuMTUtNDguMzYtMjYuMTUtNzcuNDQgMC0xMS4xMSAxLjYyLTIxLjc5IDQuNDEtMzJIMjU2YzU0LjY2IDAgMTA4LjI4IDE4LjgxIDE1MC45OCA1Mi45NWw4NS4wMyA2OC4wM2EzMi4wMjMgMzIuMDIzIDAgMCAwIDE5Ljk4IDcuMDJjMjQuOTIgMCAzMi0yMi43OCAzMi0zMlYyOTUuMTNDNTYzLjA1IDI4NC4wNCA1NzYgMjYzLjYzIDU3NiAyNDB6bS05NiAxNDEuNDJsLTMzLjA1LTI2LjQ0QzM5Mi45NSAzMTEuNzggMzI1LjEyIDI4OCAyNTYgMjg4di05NmM2OS4xMiAwIDEzNi45NS0yMy43OCAxOTAuOTUtNjYuOThMNDgwIDk4LjU4djI4Mi44NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVsbHNleWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0MzJjLTEwMS42OSAwLTE4NC04Mi4yOS0xODQtMTg0IDAtMTAxLjY5IDgyLjI5LTE4NCAxODQtMTg0IDEwMS42OSAwIDE4NCA4Mi4yOSAxODQgMTg0IDAgMTAxLjY5LTgyLjI5IDE4NC0xODQgMTg0em0wLTMxMmMtNzAuNjkgMC0xMjggNTcuMzEtMTI4IDEyOHM1Ny4zMSAxMjggMTI4IDEyOCAxMjgtNTcuMzEgMTI4LTEyOC01Ny4zMS0xMjgtMTI4LTEyOHptMCAxOTJjLTM1LjI5IDAtNjQtMjguNzEtNjQtNjRzMjguNzEtNjQgNjQtNjQgNjQgMjguNzEgNjQgNjQtMjguNzEgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBDNzkuNyAxMDEuMyAwIDIyMC45IDAgMzAwLjUgMCA0MjUgNzkgNTEyIDE5MiA1MTJzMTkyLTg3IDE5Mi0yMTEuNWMwLTc5LjktODAuMi0xOTkuNi0xOTItMzAwLjV6bTAgNDQ4Yy01Ni41IDAtOTYtMzktOTYtOTQuOCAwLTEzLjUgNC42LTYxLjUgOTYtMTYxLjIgOTEuNCA5OS43IDk2IDE0Ny43IDk2IDE2MS4yIDAgNTUuOC0zOS41IDk0LjgtOTYgOTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAxMjhoLThWODBjMC00NC44LTk5LjItODAtMjI0LTgwUzMyIDM1LjIgMzIgODB2NDhoLThjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2ODBjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg4djE2MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMTkydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoNi40YzE2IDAgMjUuNi0xMi44IDI1LjYtMjUuNlYyNTZoOGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di04MGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0ek0xNjAgNzJjMC00LjQyIDMuNTgtOCA4LThoMTc2YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDE2OGMtNC40MiAwLTgtMy41OC04LThWNzJ6bS00OCAzMjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTEyOC0xMTJIMTI4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMydi05NmMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyaDExMnYxNjB6bTMyIDBWMTI4aDExMmMxNy42NyAwIDMyIDE0LjMzIDMyIDMydjk2YzAgMTcuNjctMTQuMzMgMzItMzIgMzJIMjcyem0xMjggMTEyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDEyOGgtOFY4MGMwLTQ0LjgtOTkuMi04MC0yMjQtODBTMzIgMzUuMiAzMiA4MHY0OGgtOGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDh2MTYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmg2LjRjMTYgMCAyNS42LTEyLjggMjUuNi0yNS42VjI1Nmg4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTExMiA0MDBjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTE2LTExMmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlYxMjhjMC0xNy42NyAxNC4zMy0zMiAzMi0zMmgyNTZjMTcuNjcgMCAzMiAxNC4zMyAzMiAzMnYxMjhjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgxMjh6bTI3MiAxMTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1c2luZXNzVGltZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjI0Yy03OS41OSAwLTE0NCA2NC40MS0xNDQgMTQ0czY0LjQxIDE0NCAxNDQgMTQ0IDE0NC02NC40MSAxNDQtMTQ0LTY0LjQxLTE0NC0xNDQtMTQ0em02NCAxNTAuMjljMCA1LjM0LTQuMzcgOS43MS05LjcxIDkuNzFoLTYwLjU3Yy01LjM0IDAtOS43MS00LjM3LTkuNzEtOS43MXYtNzYuNTdjMC01LjM0IDQuMzctOS43MSA5LjcxLTkuNzFoMTIuNTdjNS4zNCAwIDkuNzEgNC4zNyA5LjcxIDkuNzFWMzUyaDM4LjI5YzUuMzQgMCA5LjcxIDQuMzcgOS43MSA5LjcxdjEyLjU4ek00OTYgMTkyYzUuNCAwIDEwLjcyLjMzIDE2IC44MVYxNDRjMC0yNS42LTIyLjQtNDgtNDgtNDhoLTgwVjQ4YzAtMjUuNi0yMi40LTQ4LTQ4LTQ4SDE3NmMtMjUuNiAwLTQ4IDIyLjQtNDggNDh2NDhINDhjLTI1LjYgMC00OCAyMi40LTQ4IDQ4djgwaDM5NS4xMmMyOC42LTIwLjA5IDYzLjM1LTMyIDEwMC44OC0zMnpNMzIwIDk2SDE5MlY2NGgxMjh2MzJ6bTYuODIgMjI0SDIwOGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTQ4SDB2MTQ0YzAgMjUuNiAyMi40IDQ4IDQ4IDQ4aDI5MS40M0MzMjcuMSA0MjMuOTYgMzIwIDM5Ni44MiAzMjAgMzY4YzAtMTYuNjYgMi40OC0zMi43MiA2LjgyLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxjdWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAwSDQ4QzIyLjQgMCAwIDIyLjQgMCA0OHY0MTZjMCAyNS42IDIyLjQgNDggNDggNDhoMzUyYzI1LjYgMCA0OC0yMi40IDQ4LTQ4VjQ4YzAtMjUuNi0yMi40LTQ4LTQ4LTQ4ek0xMjggNDM1LjJjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44SDc2LjhjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMC0xMjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44SDc2LjhjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMTI4IDEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMC0xMjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6bTEyOCAxMjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjhWMjY4LjhjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djE2Ni40em0wLTI1NmMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhINzYuOGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44Vjc2LjhDNjQgNzAuNCA3MC40IDY0IDc2LjggNjRoMjk0LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djEwMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTkySDB2Mjcyem0zMjAtMTk2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHptMCAxMjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek0xOTIgMjY4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHptMCAxMjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek02NCAyNjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJINzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6bTAgMTI4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDc2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek00MDAgNjRoLTQ4VjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNjBWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjQ4aDQ0OHYtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE2MEgxMmMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMzZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0OFYxMmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NTJoMTI4VjEyYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY1Mmg0OGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM2YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNjBjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYyMDRjMC02LjYyNyA1LjM3My0xMiAxMi0xMnptMzMzLjI5NiA5NS45NDdsLTI4LjE2OS0yOC4zOThjLTQuNjY3LTQuNzA1LTEyLjI2NS00LjczNi0xNi45Ny0uMDY4TDE5NC4xMiAzNjQuNjY1bC00NS45OC00Ni4zNTJjLTQuNjY3LTQuNzA1LTEyLjI2Ni00LjczNi0xNi45NzEtLjA2OGwtMjguMzk3IDI4LjE3Yy00LjcwNSA0LjY2Ny00LjczNiAxMi4yNjUtLjA2OCAxNi45N2w4Mi42MDEgODMuMjY5YzQuNjY3IDQuNzA1IDEyLjI2NSA0LjczNiAxNi45Ny4wNjhsMTQyLjk1My0xNDEuODA1YzQuNzA1LTQuNjY3IDQuNzM2LTEyLjI2NS4wNjgtMTYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyRGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTY0LTE5MmMwLTguOCA3LjItMTYgMTYtMTZoOTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2di05NnpNNDAwIDY0aC00OFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMTYwVjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnY0OGg0NDh2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNiAxNjBIMTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzZjMC0yNi41IDIxLjUtNDggNDgtNDhoNDhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1MmgxMjhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1Mmg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHYzNmMwIDYuNi01LjQgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42IDAgMTIgNS40IDEyIDEydjI2MGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjA0YzAtNi42IDUuNC0xMiAxMi0xMnptMzA0IDE5MmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMkgxMzJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE2MEgxMmMtNi42IDAtMTItNS40LTEyLTEydi0zNmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM2YzAgNi42LTUuNCAxMi0xMiAxMnpNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem0zMTYgMTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNjB2LTYwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY2MGgtNjBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNjB2NjBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNjBoNjBjNi42IDAgMTItNS40IDEyLTEydi00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJUaW1lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwSDEyYy02LjYgMC0xMi01LjQtMTItMTJ2LTM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoMTI4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MzZjMCA2LjYtNS40IDEyLTEyIDEyek0xMiAxOTJoNDI0YzYuNiAwIDEyIDUuNCAxMiAxMnYyNjBjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjIwNGMwLTYuNiA1LjQtMTIgMTItMTJ6bTI1Ny4zIDE2MGw0OC4xLTQ4LjFjNC43LTQuNyA0LjctMTIuMyAwLTE3bC0yOC4zLTI4LjNjLTQuNy00LjctMTIuMy00LjctMTcgMEwyMjQgMzA2LjdsLTQ4LjEtNDguMWMtNC43LTQuNy0xMi4zLTQuNy0xNyAwbC0yOC4zIDI4LjNjLTQuNyA0LjctNC43IDEyLjMgMCAxN2w0OC4xIDQ4LjEtNDguMSA0OC4xYy00LjcgNC43LTQuNyAxMi4zIDAgMTdsMjguMyAyOC4zYzQuNyA0LjcgMTIuMyA0LjcgMTcgMGw0OC4xLTQ4LjEgNDguMSA0OC4xYzQuNyA0LjcgMTIuMyA0LjcgMTcgMGwyOC4zLTI4LjNjNC43LTQuNyA0LjctMTIuMyAwLTE3TDI2OS4zIDM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTY0LTE5MmMwLTguOCA3LjItMTYgMTYtMTZoMjg4YzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnYtNjR6TTQwMCA2NGgtNDhWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDE2MFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2NDhoNDQ4di00OGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem00MzYtNDR2LTM2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4aC00OFYxMmMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJIMTYwVjEyYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY1Mkg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNmMwIDYuNiA1LjQgMTIgMTIgMTJoNDI0YzYuNiAwIDEyLTUuNCAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FtZXJhUmV0cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzJDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4em0wIDMyaDEwNmMzLjMgMCA2IDIuNyA2IDZ2MjBjMCAzLjMtMi43IDYtNiA2SDM4Yy0zLjMgMC02LTIuNy02LTZWODBjMC04LjggNy4yLTE2IDE2LTE2em00MjYgOTZIMzhjLTMuMyAwLTYtMi43LTYtNnYtMzZjMC0zLjMgMi43LTYgNi02aDEzOGwzMC4yLTQ1LjNjMS4xLTEuNyAzLTIuNyA1LTIuN0g0NjRjOC44IDAgMTYgNy4yIDE2IDE2djc0YzAgMy4zLTIuNyA2LTYgNnpNMjU2IDQyNGMtNjYuMiAwLTEyMC01My44LTEyMC0xMjBzNTMuOC0xMjAgMTIwLTEyMCAxMjAgNTMuOCAxMjAgMTIwLTUzLjggMTIwLTEyMCAxMjB6bTAtMjA4Yy00OC41IDAtODggMzkuNS04OCA4OHMzOS41IDg4IDg4IDg4IDg4LTM5LjUgODgtODgtMzkuNS04OC04OC04OHptLTQ4IDEwNGMtOC44IDAtMTYtNy4yLTE2LTE2IDAtMzUuMyAyOC43LTY0IDY0LTY0IDguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy0xNy42IDAtMzIgMTQuNC0zMiAzMiAwIDguOC03LjIgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMTQ0djI4OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDg4bDEyLjMtMzIuOWM3LTE4LjcgMjQuOS0zMS4xIDQ0LjktMzEuMWgxMjUuNWMyMCAwIDM3LjkgMTIuNCA0NC45IDMxLjFMMzc2IDk2aDg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0zNzYgMjg4YzAtNjYuMi01My44LTEyMC0xMjAtMTIwcy0xMjAgNTMuOC0xMjAgMTIwIDUzLjggMTIwIDEyMCAxMjAgMTIwLTUzLjggMTIwLTEyMHptLTMyIDBjMCA0OC41LTM5LjUgODgtODggODhzLTg4LTM5LjUtODgtODggMzkuNS04OCA4OC04OCA4OCAzOS41IDg4IDg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1wZ3JvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhoLTI0LjY4TDM1OS41NCAxMTcuNzVsNTMuNDEtNzMuNTVjNS4xOS03LjE1IDMuNjEtMTcuMTYtMy41NC0yMi4zNWwtMjUuOS0xOC43OWMtNy4xNS01LjE5LTE3LjE1LTMuNjEtMjIuMzUgMy41NUwzMjAgNjMuMyAyNzguODMgNi42Yy01LjE5LTcuMTUtMTUuMi04Ljc0LTIyLjM1LTMuNTVsLTI1Ljg4IDE4LjhjLTcuMTUgNS4xOS04Ljc0IDE1LjItMy41NCAyMi4zNWw1My40MSA3My41NUw0MC42OCA0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDYwOGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTMyMCAyODhsMTE2LjM2IDE2MEgyMDMuNjRMMzIwIDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FuZHlDYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ny41IDkyQzQ2OS42IDMzLjEgNDExLjggMCAzNTIuNCAwYy0yNy45IDAtNTYuMiA3LjMtODEuOCAyMi42TDI0My4xIDM5Yy0xNS4yIDkuMS0yMC4xIDI4LjctMTEgNDMuOWwzMi44IDU0LjljNiAxMCAxNi42IDE1LjYgMjcuNSAxNS42IDUuNiAwIDExLjItMS41IDE2LjQtNC41bDI3LjUtMTYuNGM1LjEtMy4xIDEwLjgtNC41IDE2LjQtNC41IDEwLjkgMCAyMS41IDUuNiAyNy41IDE1LjYgOS4xIDE1LjEgNC4xIDM0LjgtMTEgNDMuOUwxNS42IDM5Ny42Yy0xNS4yIDkuMS0yMC4xIDI4LjctMTEgNDMuOWwzMi44IDU0LjljNiAxMCAxNi42IDE1LjYgMjcuNSAxNS42IDUuNiAwIDExLjItMS41IDE2LjQtNC41TDQyOC42IDMwMWM3MS43LTQyLjkgMTA0LjYtMTMzLjUgNjguOS0yMDl6bS0xNzcuNyAxM2wtMi41IDEuNUwyOTYuOCA0NWM5LjctNC43IDE5LjgtOC4xIDMwLjMtMTAuMmwyMC42IDYxLjhjLTkuOC44LTE5LjQgMy4zLTI3LjkgOC40ek0xNDUuOSA0MzEuOGwtNjAuNS0zOC41IDMwLjgtMTguMyA2MC41IDM4LjUtMzAuOCAxOC4zem0xMDcuNS02My45bC02MC41LTM4LjUgMzAuOC0xOC4zIDYwLjUgMzguNS0zMC44IDE4LjN6TTM2NC4zIDMwMmwtNjAuNS0zOC41IDMwLjgtMTguMyA2MC41IDM4LjUtMzAuOCAxOC4zem0yMC40LTE5Ny4zbDQ2LTQ2YzguNCA2LjUgMTYgMTQuMSAyMi42IDIyLjZMNDA3LjYgMTI3Yy01LjctOS4zLTEzLjctMTYuOS0yMi45LTIyLjN6bTgyLjEgMTA3LjhsLTU5LjUtMTkuOGMzLjItNS4zIDUuOC0xMC45IDcuNC0xNy4xIDEuMS00LjUgMS43LTkuMSAxLjgtMTMuNmw2MC40IDIwLjFjLTIuMSAxMC40LTUuNSAyMC42LTEwLjEgMzAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FubmFiaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAzLjQ3IDM2MC4yNWMtMS41Ni0uODItMzIuMzktMTYuODktNzYuNzgtMjUuODEgNjQuMjUtNzUuMTIgODQuMDUtMTYxLjY3IDg0LjkzLTE2NS42NCAxLjE4LTUuMzMtLjQ0LTEwLjktNC4zLTE0Ljc3LTMuMDMtMy4wNC03LjEyLTQuNy0xMS4zMi00LjctMS4xNCAwLTIuMjkuMTItMy40NC4zOC0zLjg4Ljg1LTg2LjU0IDE5LjU5LTE2MC41OCA3OS43Ni4wMS0xLjQ2LjAxLTIuOTMuMDEtNC40IDAtMTE4Ljc5LTU5Ljk4LTIxMy43Mi02Mi41My0yMTcuN0ExNS45NzMgMTUuOTczIDAgMCAwIDI1NiAwYy01LjQ1IDAtMTAuNTMgMi43OC0xMy40NyA3LjM3LTIuNTUgMy45OC02Mi41MyA5OC45MS02Mi41MyAyMTcuNyAwIDEuNDcuMDEgMi45NC4wMSA0LjQtNzQuMDMtNjAuMTYtMTU2LjY5LTc4LjktMTYwLjU4LTc5Ljc2LTEuMTQtLjI1LTIuMjktLjM4LTMuNDQtLjM4LTQuMiAwLTguMjkgMS42Ni0xMS4zMiA0LjdBMTUuOTg2IDE1Ljk4NiAwIDAgMCAuMzggMTY4LjhjLjg4IDMuOTcgMjAuNjggOTAuNTIgODQuOTMgMTY1LjY0LTQ0LjM5IDguOTItNzUuMjEgMjQuOTktNzYuNzggMjUuODFhMTYuMDAzIDE2LjAwMyAwIDAgMC0uMDIgMjguMjljMi40NSAxLjI5IDYwLjc2IDMxLjcyIDEzMy40OSAzMS43MiA2LjE0IDAgMTEuOTYtLjEgMTcuNS0uMzEtMTEuMzcgMjIuMjMtMTYuNTIgMzguMzEtMTYuODEgMzkuMjItMS44IDUuNjgtLjI5IDExLjg5IDMuOTEgMTYuMTFhMTYuMDE5IDE2LjAxOSAwIDAgMCAxNi4xIDMuOTljMS44My0uNTcgMzcuNzItMTEuOTkgNzcuMy0zOS4yOVY1MDRjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LTh2LTY0LjAxYzM5LjU4IDI3LjMgNzUuNDcgMzguNzEgNzcuMyAzOS4yOWExNi4wMTkgMTYuMDE5IDAgMCAwIDE2LjEtMy45OWM0LjItNC4yMiA1LjcxLTEwLjQzIDMuOTEtMTYuMTEtLjI5LS45MS01LjQ1LTE2Ljk5LTE2LjgxLTM5LjIyIDUuNTQuMjEgMTEuMzcuMzEgMTcuNS4zMSA3Mi43MiAwIDEzMS4wNC0zMC40MyAxMzMuNDktMzEuNzIgNS4yNC0yLjc4IDguNTItOC4yMiA4LjUxLTE0LjE1LS4wMS01Ljk0LTMuMjktMTEuMzktOC41My0xNC4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2Fwc3VsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTU1LjMgMzAwLjFMNDI0LjIgMTEyLjhDNDAxLjkgODEgMzY2LjQgNjQgMzMwLjQgNjRjLTIyLjYgMC00NS41IDYuNy02NS41IDIwLjctMTkuNyAxMy44LTMzLjcgMzIuOC00MS41IDUzLjhDMjIwLjUgNzkuMiAxNzIgMzIgMTEyIDMyIDUwLjEgMzIgMCA4Mi4xIDAgMTQ0djIyNGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyVjIxOC45YzMuMyA4LjYgNy4zIDE3LjEgMTIuOCAyNUwzNjggNDMxLjJjMjIuMiAzMS44IDU3LjcgNDguOCA5My44IDQ4LjggMjIuNyAwIDQ1LjUtNi43IDY1LjUtMjAuNyA1MS43LTM2LjIgNjQuMi0xMDcuNSAyOC0xNTkuMnpNMTYwIDI1Nkg2NFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHYxMTJ6bTE5NC44IDQ0LjlsLTY1LjYtOTMuN2MtNy43LTExLTEwLjctMjQuNC04LjMtMzcuNiAyLjMtMTMuMiA5LjctMjQuOCAyMC43LTMyLjUgOC41LTYgMTguNS05LjEgMjguOC05LjEgMTYuNSAwIDMxLjkgOCA0MS4zIDIxLjVsNjUuNiA5My43LTgyLjUgNTcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOC42NiAyMTIuMzNsLTExLjI0LTI4LjEtMTkuOTMtNDkuODNDMzkwLjM4IDkxLjYzIDM0OS41NyA2NCAzMDMuNSA2NGgtMTI3Yy00Ni4wNiAwLTg2Ljg4IDI3LjYzLTEwMy45OSA3MC40bC0xOS45MyA0OS44My0xMS4yNCAyOC4xQzE3LjIyIDIyMS41IDAgMjQ0LjY2IDAgMjcydjQ4YzAgMTYuMTIgNi4xNiAzMC42NyAxNiA0MS45M1Y0MTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgyNTZ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi01NC4wN2M5Ljg0LTExLjI1IDE2LTI1LjggMTYtNDEuOTN2LTQ4YzAtMjcuMzQtMTcuMjItNTAuNS00MS4zNC01OS42N3ptLTMwNi43My01NC4xNmM3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM2OCAyMDhIMTEybDE5LjkzLTQ5Ljgzek04MCAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNjAuOCAyNTYgODAgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzODAuOCAyNTYgNDAwIDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAxMjhoLTMyVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2aC05NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhIMTkyVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2SDgwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYyNTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxNjBjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMTkyIDI2NGMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExMmM0LjQyIDAgOCAzLjU4IDggOHYxNnptMjU2IDBjMCA0LjQyLTMuNTggOC04IDhoLTQwdjQwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTQwaC00MGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDQwdi00MGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHY0MGg0MGM0LjQyIDAgOCAzLjU4IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQzLjI1IDIyMC44MWwtMTIuNDIgNDYuMzdjLTMuMDEgMTEuMjUtMy42MyAyMi44OS0yLjQxIDM0LjM5bC0zNS4yIDI4Ljk4Yy02LjU3IDUuNDEtMTYuMzEtLjQzLTE0LjYyLTguNzdsMTUuNDQtNzYuNjhjMS4wNi01LjI2LTIuNjYtMTAuMjgtOC0xMC43OWwtNzcuODYtNy41NWMtOC40Ny0uODItMTEuMjMtMTEuODMtNC4xNC0xNi41NGw2NS4xNS00My4zYzQuNDYtMi45NyA1LjM4LTkuMTUgMS45OC0xMy4yOUwyMS40NiA5My4yMmMtNS40MS02LjU3LjQzLTE2LjMgOC43OC0xNC42Mmw3Ni42OCAxNS40NGM1LjI2IDEuMDYgMTAuMjgtMi42NiAxMC44LThsNy41NS03Ny44NmMuODItOC40OCAxMS44My0xMS4yMyAxNi41NS00LjE0bDQzLjMgNjUuMTRjMi45NyA0LjQ2IDkuMTUgNS4zOCAxMy4yOSAxLjk4bDYwLjQtNDkuNzFjNi41Ny01LjQxIDE2LjMuNDMgMTQuNjIgOC43N0wyNjIuMSA4Ni4zOGMtMi43MSAzLjA1LTUuNDMgNi4wOS03LjkxIDkuNGwtMzIuMTUgNDIuOTctMTAuNzEgMTQuMzJjLTMyLjczIDguNzYtNTkuMTggMzQuNTMtNjguMDggNjcuNzR6bTQ5NC41NyAxMzIuNTFsLTEyLjQyIDQ2LjM2Yy0zLjEzIDExLjY4LTkuMzggMjEuNjEtMTcuNTUgMjkuMzZhNjYuODc2IDY2Ljg3NiAwIDAgMS04Ljc2IDdsLTEzLjk5IDUyLjIzYy0xLjE0IDQuMjctMy4xIDguMS01LjY1IDExLjM4LTcuNjcgOS44NC0yMC43NCAxNC42OC0zMy41NCAxMS4yNUw1MTUgNTAyLjYyYy0xNy4wNy00LjU3LTI3LjItMjIuMTItMjIuNjMtMzkuMTlsOC4yOC0zMC45MS0yNDcuMjgtNjYuMjYtOC4yOCAzMC45MWMtNC41NyAxNy4wNy0yMi4xMiAyNy4yLTM5LjE5IDIyLjYzbC0zMC45MS04LjI4Yy0xMi44LTMuNDMtMjEuNy0xNC4xNi0yMy40Mi0yNi41MS0uNTctNC4xMi0uMzUtOC40Mi43OS0xMi42OGwxMy45OS01Mi4yM2E2Ni42MiA2Ni42MiAwIDAgMS00LjA5LTEwLjQ1Yy0zLjItMTAuNzktMy42NS0yMi41Mi0uNTItMzQuMmwxMi40Mi00Ni4zN2M1LjMxLTE5LjggMTkuMzYtMzQuODMgMzYuODktNDIuMjFhNjQuMzM2IDY0LjMzNiAwIDAgMSAxOC40OS00LjcybDE4LjEzLTI0LjIzIDMyLjE1LTQyLjk3YzMuNDUtNC42MSA3LjE5LTguOSAxMS4yLTEyLjg0IDgtNy44OSAxNy4wMy0xNC40NCAyNi43NC0xOS41MSA0Ljg2LTIuNTQgOS44OS00LjcxIDE1LjA1LTYuNDkgMTAuMzMtMy41OCAyMS4xOS01LjYzIDMyLjI0LTYuMDQgMTEuMDUtLjQxIDIyLjMxLjgyIDMzLjQzIDMuOGwxMjIuNjggMzIuODdjMTEuMTIgMi45OCAyMS40OCA3LjU0IDMwLjg1IDEzLjQzYTExMS4xMSAxMTEuMTEgMCAwIDEgMzQuNjkgMzQuNWM4LjgyIDEzLjg4IDE0LjY0IDI5Ljg0IDE2LjY4IDQ2Ljk5bDYuMzYgNTMuMjkgMy41OSAzMC4wNWE2NC40OSA2NC40OSAwIDAgMSAyMi43NCAyOS45M2M0LjM5IDExLjg4IDUuMjkgMjUuMTkgMS43NSAzOC4zOXpNMjU1LjU4IDIzNC4zNGMtMTguNTUtNC45Ny0zNC4yMSA0LjA0LTM5LjE3IDIyLjUzLTQuOTYgMTguNDkgNC4xMSAzNC4xMiAyMi42NSAzOS4wOSAxOC41NSA0Ljk3IDQ1LjU0IDE1LjUxIDUwLjQ5LTIuOTggNC45Ni0xOC40OS0xNS40My01My42Ny0zMy45Ny01OC42NHptMjkwLjYxIDI4LjE3bC02LjM2LTUzLjI5Yy0uNTgtNC44Ny0xLjg5LTkuNTMtMy44Mi0xMy44Ni01LjgtMTIuOTktMTcuMi0yMy4wMS0zMS40Mi0yNi44MmwtMTIyLjY4LTMyLjg3YTQ4LjAwOCA0OC4wMDggMCAwIDAtNTAuODYgMTcuNjFsLTMyLjE1IDQyLjk3IDE3MiA0Ni4wOCA3NS4yOSAyMC4xOHptMTguNDkgNTQuNjVjLTE4LjU1LTQuOTctNTMuOCAxNS4zMS01OC43NSAzMy43OS00Ljk1IDE4LjQ5IDIzLjY5IDIyLjg2IDQyLjI0IDI3LjgzIDE4LjU1IDQuOTcgMzQuMjEtNC4wNCAzOS4xNy0yMi41MyA0Ljk1LTE4LjQ4LTQuMTEtMzQuMTItMjIuNjYtMzkuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhclNpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDE5MmgtMTZMNDE5LjIyIDU2LjAyQTY0LjAyNSA2NC4wMjUgMCAwIDAgMzY5LjI0IDMySDE1NS4zM2MtMjYuMTcgMC00OS43IDE1LjkzLTU5LjQyIDQwLjIzTDQ4IDE5NC4yNkMyMC40NCAyMDEuNCAwIDIyNi4yMSAwIDI1NnYxMTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NmgxMjhjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05Nmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtODBjMC01My4wMi00Mi45OC05Ni05Ni05NnpNMTYwIDQzMmMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHptNzItMjQwSDExNi45M2wzOC40LTk2SDIzMnY5NnptNDggMFY5Nmg4OS4yNGw3Ni44IDk2SDI4MHptMjAwIDI0MGMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OS45OSAxNzZoLTU5Ljg3bC0xNi42NC00MS42QzQwNi4zOCA5MS42MyAzNjUuNTcgNjQgMzE5LjUgNjRoLTEyN2MtNDYuMDYgMC04Ni44OCAyNy42My0xMDMuOTkgNzAuNEw3MS44NyAxNzZIMTIuMDFDNC4yIDE3Ni0xLjUzIDE4My4zNC4zNyAxOTAuOTFsNiAyNEM3LjcgMjIwLjI1IDEyLjUgMjI0IDE4LjAxIDIyNGgyMC4wN0MyNC42NSAyMzUuNzMgMTYgMjUyLjc4IDE2IDI3MnY0OGMwIDE2LjEyIDYuMTYgMzAuNjcgMTYgNDEuOTNWNDE2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMjU2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNTQuMDdjOS44NC0xMS4yNSAxNi0yNS44IDE2LTQxLjkzdi00OGMwLTE5LjIyLTguNjUtMzYuMjctMjIuMDctNDhINDk0YzUuNTEgMCAxMC4zMS0zLjc1IDExLjY0LTkuMDlsNi0yNGMxLjg5LTcuNTctMy44NC0xNC45MS0xMS42NS0xNC45MXptLTM1Mi4wNi0xNy44M2M3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM4NCAyMDhIMTI4bDE5LjkzLTQ5Ljgzek05NiAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNzYuOCAyNTYgOTYgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzOTYuOCAyNTYgNDE2IDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJhdmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiwyMDhhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDE2LDIwOFpNNjI0LDMyMEg1NzZWMTYwQTE2MCwxNjAsMCwwLDAsNDE2LDBINjRBNjQsNjQsMCwwLDAsMCw2NFYzMjBhNjQsNjQsMCwwLDAsNjQsNjRIOTZhOTYsOTYsMCwwLDAsMTkyLDBINjI0YTE2LDE2LDAsMCwwLDE2LTE2VjMzNkExNiwxNiwwLDAsMCw2MjQsMzIwWk0xOTIsNDMyYTQ4LDQ4LDAsMSwxLDQ4LTQ4QTQ4LjA1LDQ4LjA1LDAsMCwxLDE5Miw0MzJabTY0LTI0MGEzMiwzMiwwLDAsMS0zMiwzMkg5NmEzMiwzMiwwLDAsMS0zMi0zMlYxMjhBMzIsMzIsMCwwLDEsOTYsOTZIMjI0YTMyLDMyLDAsMCwxLDMyLDMyWk00NDgsMzIwSDMyMFYxMjhhMzIsMzIsMCwwLDEsMzItMzJoNjRhMzIsMzIsMCwwLDEsMzIsMzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMS4zIDE5MmgyNTcuM2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwxNzQuMSAzNTQuOGMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBMMTcuMiAyMjYuMUM0LjYgMjEzLjUgMTMuNSAxOTIgMzEuMyAxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTI3LjMzOHYyNTcuMzI0YzAgMTcuODE4LTIxLjU0MyAyNi43NDEtMzQuMTQyIDE0LjE0MkwyOS4xOTYgMjcwLjE0MmMtNy44MS03LjgxLTcuODEtMjAuNDc0IDAtMjguMjg0bDEyOC42NjItMTI4LjY2MmMxMi41OTktMTIuNiAzNC4xNDItMy42NzYgMzQuMTQyIDE0LjE0MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDM4NC42NjJWMTI3LjMzOGMwLTE3LjgxOCAyMS41NDMtMjYuNzQxIDM0LjE0Mi0xNC4xNDJsMTI4LjY2MiAxMjguNjYyYzcuODEgNy44MSA3LjgxIDIwLjQ3NCAwIDI4LjI4NEwzNC4xNDIgMzk4LjgwNEMyMS41NDMgNDExLjQwNCAwIDQwMi40OCAwIDM4NC42NjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0U3F1YXJlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTkyLjUgMjIwLjVsMTIzIDEyM2M0LjcgNC43IDEyLjMgNC43IDE3IDBsMTIzLTEyM2M3LjYtNy42IDIuMi0yMC41LTguNS0yMC41SDEwMWMtMTAuNyAwLTE2LjEgMTIuOS04LjUgMjAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRTcXVhcmVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMjU5LjUxNSAxMjQuNDg1bC0xMjMuMDMgMTIzLjAzYy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFsMTIzLjAyOSAxMjMuMDI5YzcuNTYgNy41NiAyMC40ODUgMi4yMDYgMjAuNDg1LTguNDg1VjEzMi45NzFjLjAwMS0xMC42OTEtMTIuOTI1LTE2LjA0NS0yMC40ODQtOC40ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0U3F1YXJlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzJoMzUyYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OHptMTQwLjQ4NSAzNTUuNTE1bDEyMy4wMjktMTIzLjAyOWM0LjY4Ni00LjY4NiA0LjY4Ni0xMi4yODQgMC0xNi45NzFsLTEyMy4wMjktMTIzLjAzYy03LjU2LTcuNTYtMjAuNDg1LTIuMjA2LTIwLjQ4NSA4LjQ4NXYyNDYuMDU5YzAgMTAuNjkxIDEyLjkyNiAxNi4wNDUgMjAuNDg1IDguNDg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFNxdWFyZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDMyVjgwYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMzUyYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDh6bTM1NS41MTUtMTQwLjQ4NWwtMTIzLjAzLTEyMy4wM2MtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDkyLjQ4NSAyOTEuNTE1Yy03LjU2IDcuNTYtMi4yMDYgMjAuNDg1IDguNDg1IDIwLjQ4NWgyNDYuMDU5YzEwLjY5MSAwIDE2LjA0NS0xMi45MjYgOC40ODYtMjAuNDg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OC42NjIgMzUySDMxLjMzOGMtMTcuODE4IDAtMjYuNzQxLTIxLjU0My0xNC4xNDItMzQuMTQybDEyOC42NjItMTI4LjY2MmM3LjgxLTcuODEgMjAuNDc0LTcuODEgMjguMjg0IDBsMTI4LjY2MiAxMjguNjYyYzEyLjYgMTIuNTk5IDMuNjc2IDM0LjE0Mi0xNC4xNDIgMzQuMTQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJyb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4LjIgMTU2LjZjLTUyLjctMjUuNy0xMTQuNS0xMC41LTE1MC4yIDMyLjhsNTUuMiA1NS4yYzYuMyA2LjMgNi4zIDE2LjQgMCAyMi42LTMuMSAzLjEtNy4yIDQuNy0xMS4zIDQuN3MtOC4yLTEuNi0xMS4zLTQuN0wxMzAuNCAyMTcgMi4zIDQ3OS43Yy0yLjkgNi0zLjEgMTMuMyAwIDE5LjcgNS40IDExLjEgMTguOSAxNS43IDMwIDEwLjNsMTMzLjYtNjUuMi00OS4yLTQ5LjJjLTYuMy02LjItNi4zLTE2LjQgMC0yMi42IDYuMy02LjIgMTYuNC02LjIgMjIuNiAwbDU3IDU3IDEwMi00OS44YzI0LTExLjcgNDQuNS0zMS4zIDU3LjEtNTcuMSAzMC4xLTYxLjcgNC41LTEzNi4xLTU3LjItMTY2LjJ6bTkyLjEtMzQuOUM0MDkuOCA4MSAzOTkuNyAzMi45IDM2MCAwYy01MC4zIDQxLjctNTIuNSAxMDcuNS03LjkgMTUxLjlsOCA4YzQ0LjQgNDQuNiAxMTAuMyA0Mi40IDE1MS45LTcuOS0zMi45LTM5LjctODEtNDkuOC0xMjEuNy0zMC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJ0QXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC43MTcgMzIwSDIxMS41NzJsNi41NDUgMzJoMjY4LjQxOGMxNS40MDEgMCAyNi44MTYgMTQuMzAxIDIzLjQwMyAyOS4zMTlsLTUuNTE3IDI0LjI3NkM1MjMuMTEyIDQxNC42NjggNTM2IDQzMy44MjggNTM2IDQ1NmMwIDMxLjIwMi0yNS41MTkgNTYuNDQ0LTU2LjgyNCA1NS45OTQtMjkuODIzLS40MjktNTQuMzUtMjQuNjMxLTU1LjE1NS01NC40NDctLjQ0LTE2LjI4NyA2LjA4NS0zMS4wNDkgMTYuODAzLTQxLjU0OEgyMzEuMTc2QzI0MS41NTMgNDI2LjE2NSAyNDggNDQwLjMyNiAyNDggNDU2YzAgMzEuODEzLTI2LjUyOCA1Ny40MzEtNTguNjcgNTUuOTM4LTI4LjU0LTEuMzI1LTUxLjc1MS0yNC4zODUtNTMuMjUxLTUyLjkxNy0xLjE1OC0yMi4wMzQgMTAuNDM2LTQxLjQ1NSAyOC4wNTEtNTEuNTg2TDkzLjg4MyA2NEgyNEMxMC43NDUgNjQgMCA1My4yNTUgMCA0MFYyNEMwIDEwLjc0NSAxMC43NDUgMCAyNCAwaDEwMi41MjljMTEuNDAxIDAgMjEuMjI4IDguMDIxIDIzLjUxMyAxOS4xOUwxNTkuMjA4IDY0SDU1MS45OWMxNS40MDEgMCAyNi44MTYgMTQuMzAxIDIzLjQwMyAyOS4zMTlsLTQ3LjI3MyAyMDhDNTI1LjYzNyAzMTIuMjQ2IDUxNS45MjMgMzIwIDUwNC43MTcgMzIwek00MDMuMDI5IDE5MkgzNjB2LTYwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjYwaC00My4wMjljLTEwLjY5MSAwLTE2LjA0NSAxMi45MjYtOC40ODUgMjAuNDg1bDY3LjAyOSA2Ny4wMjljNC42ODYgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3MSAwbDY3LjAyOS02Ny4wMjljNy41NTktNy41NTkgMi4yMDUtMjAuNDg1LTguNDg2LTIwLjQ4NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FydFBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0LjcxNyAzMjBIMjExLjU3Mmw2LjU0NSAzMmgyNjguNDE4YzE1LjQwMSAwIDI2LjgxNiAxNC4zMDEgMjMuNDAzIDI5LjMxOWwtNS41MTcgMjQuMjc2QzUyMy4xMTIgNDE0LjY2OCA1MzYgNDMzLjgyOCA1MzYgNDU2YzAgMzEuMjAyLTI1LjUxOSA1Ni40NDQtNTYuODI0IDU1Ljk5NC0yOS44MjMtLjQyOS01NC4zNS0yNC42MzEtNTUuMTU1LTU0LjQ0Ny0uNDQtMTYuMjg3IDYuMDg1LTMxLjA0OSAxNi44MDMtNDEuNTQ4SDIzMS4xNzZDMjQxLjU1MyA0MjYuMTY1IDI0OCA0NDAuMzI2IDI0OCA0NTZjMCAzMS44MTMtMjYuNTI4IDU3LjQzMS01OC42NyA1NS45MzgtMjguNTQtMS4zMjUtNTEuNzUxLTI0LjM4NS01My4yNTEtNTIuOTE3LTEuMTU4LTIyLjAzNCAxMC40MzYtNDEuNDU1IDI4LjA1MS01MS41ODZMOTMuODgzIDY0SDI0QzEwLjc0NSA2NCAwIDUzLjI1NSAwIDQwVjI0QzAgMTAuNzQ1IDEwLjc0NSAwIDI0IDBoMTAyLjUyOWMxMS40MDEgMCAyMS4yMjggOC4wMjEgMjMuNTEzIDE5LjE5TDE1OS4yMDggNjRINTUxLjk5YzE1LjQwMSAwIDI2LjgxNiAxNC4zMDEgMjMuNDAzIDI5LjMxOWwtNDcuMjczIDIwOEM1MjUuNjM3IDMxMi4yNDYgNTE1LjkyMyAzMjAgNTA0LjcxNyAzMjB6TTQwOCAxNjhoLTQ4di00MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC0xNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGgtNDhjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2MTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg0OHY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDE2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTQwaDQ4YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTE2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhc2hSZWdpc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuMSAzNzguOGwtMjYuNy0xNjBjLTIuNi0xNS40LTE1LjktMjYuNy0zMS42LTI2LjdIMjA4di02NGg5NmM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDk2djY0SDU5LjFjLTE1LjYgMC0yOSAxMS4zLTMxLjYgMjYuN0wuOCAzNzguN2MtLjYgMy41LS45IDctLjkgMTAuNVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMydi05MC43Yy4xLTMuNS0uMi03LS44LTEwLjV6TTI4MCAyNDhjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZoLTE2Yy04LjggMC0xNi03LjItMTYtMTZ2LTE2em0tMzIgNjRoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2em0tMzItODBjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2ek04MCA4MFY0OGgxOTJ2MzJIODB6bTQwIDIwMGgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZ6bTE2IDY0di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnptMjE2IDExMmMwIDQuNC0zLjYgOC04IDhIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNzZjNC40IDAgOCAzLjYgOCA4djE2em0yNC0xMTJjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2em00OC04MGMwIDguOC03LjIgMTYtMTYgMTZoLTE2Yy04LjggMC0xNi03LjItMTYtMTZ2LTE2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTAuNTkgMTkyYy0yMC4xOCAwLTEwNi44MiAxLjk4LTE2Mi41OSA4NS45NVYxOTJjMC01Mi45NC00My4wNi05Ni05Ni05Ni0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyYzE3LjY0IDAgMzIgMTQuMzYgMzIgMzJ2MjU2YzAgMzUuMyAyOC43IDY0IDY0IDY0aDE3NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMzJsMTI4LTk2djE0NGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyODkuODZjLTEwLjI5IDIuNjctMjAuODkgNC41NC0zMiA0LjU0LTYxLjgxIDAtMTEzLjUyLTQ0LjA1LTEyNS40MS0xMDIuNHpNNDQ4IDk2aC02NGwtNjQtNjR2MTM0LjRjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NlYzMmwtNjQgNjR6bS03MiA4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6bTgwIDBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZXJ0aWZpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTguNjIyIDI1NS45Mmw0NS45ODUtNDUuMDA1YzEzLjcwOC0xMi45NzcgNy4zMTYtMzYuMDM5LTEwLjY2NC00MC4zMzlsLTYyLjY1LTE1Ljk5IDE3LjY2MS02Mi4wMTVjNC45OTEtMTcuODM4LTExLjgyOS0zNC42NjMtMjkuNjYxLTI5LjY3MWwtNjEuOTk0IDE3LjY2Ny0xNS45ODQtNjIuNjcxQzMzNy4wODUuMTk3IDMxMy43NjUtNi4yNzYgMzAwLjk5IDcuMjI4TDI1NiA1My41NyAyMTEuMDExIDcuMjI5Yy0xMi42My0xMy4zNTEtMzYuMDQ3LTcuMjM0LTQwLjMyNSAxMC42NjhsLTE1Ljk4NCA2Mi42NzEtNjEuOTk1LTE3LjY2N0M3NC44NyA1Ny45MDcgNTguMDU2IDc0LjczOCA2My4wNDYgOTIuNTcybDE3LjY2MSA2Mi4wMTUtNjIuNjUgMTUuOTlDLjA2OSAxNzQuODc4LTYuMzEgMTk3Ljk0NCA3LjM5MiAyMTAuOTE1bDQ1Ljk4NSA0NS4wMDUtNDUuOTg1IDQ1LjAwNGMtMTMuNzA4IDEyLjk3Ny03LjMxNiAzNi4wMzkgMTAuNjY0IDQwLjMzOWw2Mi42NSAxNS45OS0xNy42NjEgNjIuMDE1Yy00Ljk5MSAxNy44MzggMTEuODI5IDM0LjY2MyAyOS42NjEgMjkuNjcxbDYxLjk5NC0xNy42NjcgMTUuOTg0IDYyLjY3MWM0LjQzOSAxOC41NzUgMjcuNjk2IDI0LjAxOCA0MC4zMjUgMTAuNjY4TDI1NiA0NTguNjFsNDQuOTg5IDQ2LjAwMWMxMi41IDEzLjQ4OCAzNS45ODcgNy40ODYgNDAuMzI1LTEwLjY2OGwxNS45ODQtNjIuNjcxIDYxLjk5NCAxNy42NjdjMTcuODM2IDQuOTk0IDM0LjY1MS0xMS44MzcgMjkuNjYxLTI5LjY3MWwtMTcuNjYxLTYyLjAxNSA2Mi42NS0xNS45OWMxNy45ODctNC4zMDIgMjQuMzY2LTI3LjM2NyAxMC42NjQtNDAuMzM5bC00NS45ODQtNDUuMDA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMTI4YzAtMjkuNSAxNi4yLTU1IDQwLTY4LjlWMjU2aDQ4VjQ4aDQ4djIwOGg0OFY1OS4xYzIzLjggMTMuOSA0MCAzOS40IDQwIDY4Ljl2MTI4aDQ4VjEyOEMzODQgNTcuMyAzMjYuNyAwIDI1NiAwaC02NEMxMjEuMyAwIDY0IDU3LjMgNjQgMTI4djEyOGg0OHptMzM0LjMgMjEzLjlsLTEwLjctMzJjLTQuNC0xMy4xLTE2LjYtMjEuOS0zMC40LTIxLjlINDIuN2MtMTMuOCAwLTI2IDguOC0zMC40IDIxLjlsLTEwLjcgMzJDLTUuMiAzNjIuNiAxMC4yIDM4NCAzMiAzODR2MTEyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzg0aDI1NnYxMTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMjEuOCAwIDM3LjItMjEuNCAzMC4zLTQyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWxrYm9hcmRUZWFjaGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAzNTJjLTIuMzkgMC00Ljc4LjM1LTcuMDYgMS4wOUMxODcuOTggMzU3LjMgMTc0LjM1IDM2MCAxNjAgMzYwYy0xNC4zNSAwLTI3Ljk4LTIuNy00MC45NS02LjkxLTIuMjgtLjc0LTQuNjYtMS4wOS03LjA1LTEuMDlDNDkuOTQgMzUyLS4zMyA0MDIuNDggMCA0NjQuNjIuMTQgNDkwLjg4IDIxLjczIDUxMiA0OCA1MTJoMjI0YzI2LjI3IDAgNDcuODYtMjEuMTIgNDgtNDcuMzguMzMtNjIuMTQtNDkuOTQtMTEyLjYyLTExMi0xMTIuNjJ6bS00OC0zMmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2cy00Mi45OC05Ni05Ni05Ni05NiA0Mi45OC05NiA5NiA0Mi45OCA5NiA5NiA5NnpNNTkyIDBIMjA4Yy0yNi40NyAwLTQ4IDIyLjI1LTQ4IDQ5LjU5Vjk2YzIzLjQyIDAgNDUuMSA2Ljc4IDY0IDE3LjhWNjRoMzUydjI4OGgtNjR2LTY0SDM4NHY2NGgtNzYuMjRjMTkuMSAxNi42OSAzMy4xMiAzOC43MyAzOS42OSA2NEg1OTJjMjYuNDcgMCA0OC0yMi4yNSA0OC00OS41OVY0OS41OUM2NDAgMjIuMjUgNjE4LjQ3IDAgNTkyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWxrYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjRoNDQ4djM1Mmg2NFY0MGMwLTIyLjA2LTE3Ljk0LTQwLTQwLTQwSDcyQzQ5Ljk0IDAgMzIgMTcuOTQgMzIgNDB2Mzc2aDY0VjY0em01MjggMzg0SDQ4MHYtNjRIMjg4djY0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFyZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzIwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptMjA4LTMyMFY4MGMwLTguODQtNy4xNi0xNi0xNi0xNnMtMTYgNy4xNi0xNiAxNnY0OGgtMzJWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZzLTE2IDcuMTYtMTYgMTZ2NDhoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDM1Ljc2IDIzLjYyIDY1LjY5IDU2IDc1LjkzdjExOC40OWMwIDEzLjk1LTkuNSAyNi45Mi0yMy4yNiAyOS4xOUM0MzEuMjIgNDAyLjUgNDE2IDM4OC45OSA0MTYgMzcydi0yOGMwLTQ4LjYtMzkuNC04OC04OC04OGgtOFY2NGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0SDk2QzYwLjY1IDAgMzIgMjguNjUgMzIgNjR2MzUyaDI4OFYzMDRoOGMyMi4wOSAwIDQwIDE3LjkxIDQwIDQwdjI0LjYxYzAgMzkuNjcgMjguOTIgNzUuMTYgNjguNDEgNzkuMDFDNDgxLjcxIDQ1Mi4wNSA1MjAgNDE2LjQxIDUyMCAzNzJWMjUxLjkzYzMyLjM4LTEwLjI0IDU2LTQwLjE3IDU2LTc1Ljkzdi0zMmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZ6bS0yODMuOTEgNDcuNzZsLTkzLjcgMTM5Yy0yLjIgMy4zMy02LjIxIDUuMjQtMTAuMzkgNS4yNC03LjY3IDAtMTMuNDctNi4yOC0xMS42Ny0xMi45MkwxNjcuMzUgMjI0SDEwOGMtNy4yNSAwLTEyLjg1LTUuNTktMTEuODktMTEuODlsMTYtMTA3QzExMi45IDk5LjkgMTE3Ljk4IDk2IDEyNCA5Nmg2OGM3Ljg4IDAgMTMuNjIgNi41NCAxMS42IDEzLjIxTDE5MiAxNjBoNTcuN2M5LjI0IDAgMTUuMDEgOC43OCAxMC4zOSAxNS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRBcmVhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMCAzODRjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyVjc2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2MzA4aDQzNnpNMzcyLjcgMTU5LjVMMjg4IDIxNmwtODUuMy0xMTMuN2MtNS4xLTYuOC0xNS41LTYuMy0xOS45IDFMOTYgMjQ4djEwNGgzODRsLTg5LjktMTg3LjhjLTMuMi02LjUtMTEuNC04LjctMTcuNC00Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMi44IDMyMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxNzIuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxMzQuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bTk2IDBoMzguNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjhWNzYuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYyMzAuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bS0yODggMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOHYtNzAuNGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHY3MC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptOTYgMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxMDguOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxOTguNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6TTQ5NiAzODRINjRWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAzODRINjRWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDY0IDk2SDM0NS45NGMtMjEuMzggMC0zMi4wOSAyNS44NS0xNi45NyA0MC45N2wzMi40IDMyLjRMMjg4IDI0Mi43NWwtNzMuMzctNzMuMzdjLTEyLjUtMTIuNS0zMi43Ni0xMi41LTQ1LjI1IDBsLTY4LjY5IDY4LjY5Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYyIDIyLjYyYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBMMTkyIDIzNy4yNWw3My4zNyA3My4zN2MxMi41IDEyLjUgMzIuNzYgMTIuNSA0NS4yNSAwbDk2LTk2IDMyLjQgMzIuNGMxNS4xMiAxNS4xMiA0MC45NyA0LjQxIDQwLjk3LTE2Ljk3VjExMmMuMDEtOC44NC03LjE1LTE2LTE1Ljk5LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydFBpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTQ0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjcuNzkgMjg4SDI5MC41bDE1OC4wMyAxNTguMDNjNi4wNCA2LjA0IDE1Ljk4IDYuNTMgMjIuMTkuNjggMzguNy0zNi40NiA2NS4zMi04NS42MSA3My4xMy0xNDAuODYgMS4zNC05LjQ2LTYuNTEtMTcuODUtMTYuMDYtMTcuODV6bS0xNS44My02NC44QzUwMy43MiAxMDMuNzQgNDA4LjI2IDguMjggMjg4LjguMDQgMjc5LjY4LS41OSAyNzIgNy4xIDI3MiAxNi4yNFYyNDBoMjIzLjc3YzkuMTQgMCAxNi44Mi03LjY4IDE2LjE5LTE2Ljh6TTIyNCAyODhWNTAuNzFjMC05LjU1LTguMzktMTcuNC0xNy44NC0xNi4wNkM4Ni45OSA1MS40OS00LjEgMTU1LjYuMTQgMjgwLjM3IDQuNSA0MDguNTEgMTE0LjgzIDUxMy41OSAyNDMuMDMgNTExLjk4YzUwLjQtLjYzIDk2Ljk3LTE2Ljg3IDEzNS4yNi00NC4wMyA3LjktNS42IDguNDItMTcuMjMgMS41Ny0yNC4wOEwyMjQgMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHpNMjI3LjMxNCAzODcuMzE0bDE4NC0xODRjNi4yNDgtNi4yNDggNi4yNDgtMTYuMzc5IDAtMjIuNjI3bC0yMi42MjctMjIuNjI3Yy02LjI0OC02LjI0OS0xNi4zNzktNi4yNDktMjIuNjI4IDBMMjE2IDMwOC4xMThsLTcwLjA1OS03MC4wNTljLTYuMjQ4LTYuMjQ4LTE2LjM3OS02LjI0OC0yMi42MjggMGwtMjIuNjI3IDIyLjYyN2MtNi4yNDggNi4yNDgtNi4yNDggMTYuMzc5IDAgMjIuNjI3bDEwNCAxMDRjNi4yNDkgNi4yNDkgMTYuMzc5IDYuMjQ5IDIyLjYyOC4wMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNSAxNzQuOGwtMzkuNi0zOS42Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxOTIgMzc0LjcgODAuNiAyNjMuMmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMDIuOWMtOS40IDkuNC05LjQgMjQuNiAwIDM0TDE3NSA1MDVjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMjk2LTI5Ni4yYzkuNC05LjUgOS40LTI0LjcuMS0zNHptLTMyNC4zIDEwNmM2LjIgNi4zIDE2LjQgNi4zIDIyLjYgMGwyMDgtMjA4LjJjNi4yLTYuMyA2LjItMTYuNCAwLTIyLjZMMzY2LjEgNC43Yy02LjItNi4zLTE2LjQtNi4zLTIyLjYgMEwxOTIgMTU2LjJsLTU1LjQtNTUuNWMtNi4yLTYuMy0xNi40LTYuMy0yMi42IDBMNjguNyAxNDZjLTYuMiA2LjMtNi4yIDE2LjQgMCAyMi42bDExMiAxMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlY2tTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQ4MEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4em0tMjA0LjY4Ni05OC4wNTlsMTg0LTE4NGM2LjI0OC02LjI0OCA2LjI0OC0xNi4zNzkgMC0yMi42MjdsLTIyLjYyNy0yMi42MjdjLTYuMjQ4LTYuMjQ4LTE2LjM3OS02LjI0OS0yMi42MjggMEwxODQgMzAyLjc0NWwtNzAuMDU5LTcwLjA1OWMtNi4yNDgtNi4yNDgtMTYuMzc5LTYuMjQ4LTIyLjYyOCAwbC0yMi42MjcgMjIuNjI3Yy02LjI0OCA2LjI0OC02LjI0OCAxNi4zNzkgMCAyMi42MjdsMTA0IDEwNGM2LjI0OSA2LjI1IDE2LjM3OSA2LjI1IDIyLjYyOC4wMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3My44OTggNDM5LjQwNGwtMTY2LjQtMTY2LjRjLTkuOTk3LTkuOTk3LTkuOTk3LTI2LjIwNiAwLTM2LjIwNGwzNi4yMDMtMzYuMjA0YzkuOTk3LTkuOTk4IDI2LjIwNy05Ljk5OCAzNi4yMDQgMEwxOTIgMzEyLjY5IDQzMi4wOTUgNzIuNTk2YzkuOTk3LTkuOTk3IDI2LjIwNy05Ljk5NyAzNi4yMDQgMGwzNi4yMDMgMzYuMjA0YzkuOTk3IDkuOTk3IDkuOTk3IDI2LjIwNiAwIDM2LjIwNGwtMjk0LjQgMjk0LjQwMWMtOS45OTggOS45OTctMjYuMjA3IDkuOTk3LTM2LjIwNC0uMDAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVlc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyODh2MTYwYTMyIDMyIDAgMCAwIDMyIDMyaDQ0OGEzMiAzMiAwIDAgMCAzMi0zMlYyODh6TTI5OS44MyAzMmEzMiAzMiAwIDAgMC0yMS4xMyA3TDAgMjU2aDUxMmMwLTExOS44OS05NC0yMTcuOC0yMTIuMTctMjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0Jpc2hvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI4Ny44OGMwIDUxLjY0IDIyLjE0IDczLjgzIDU2IDg0LjZWNDE2aDE5MnYtNDMuNTJjMzMuODYtMTAuNzcgNTYtMzMgNTYtODQuNiAwLTMwLjYxLTEwLjczLTY3LjEtMjYuNjktMTAyLjU2TDE4NSAyODUuNjVhOCA4IDAgMCAxLTExLjMxIDBsLTExLjMxLTExLjMxYTggOCAwIDAgMSAwLTExLjMxTDI3MC4yNyAxNTUuMWMtMjAuOC0zNy45MS00Ni40Ny03Mi4xLTcwLjg3LTkyLjU5QzIxMy40IDU5LjA5IDIyNCA0Ny4wNSAyMjQgMzJhMzIgMzIgMCAwIDAtMzItMzJoLTY0YTMyIDMyIDAgMCAwLTMyIDMyYzAgMTUgMTAuNiAyNy4wOSAyNC42IDMwLjUxQzY3LjgxIDEwNi44IDggMjE0LjUgOCAyODcuODh6TTMwNCA0NDhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjg4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NCb2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuOS4yaC02NHY2NGg2NHpNMCA2NC4xN3Y2NGg2NHYtNjR6TTEyOCAuMkg2NHY2NGg2NHptNjQgMjU1Ljl2NjRoNjR2LTY0ek0wIDE5Mi4xMnY2NGg2NHYtNjR6TTM4My44NS4yaC02NHY2NGg2NHptMTI4IDBoLTY0djY0aDY0ek0xMjggMjU2LjFINjR2NjRoNjR6TTUxMS44IDQ0OHYtNjRoLTY0djY0em0wLTEyOHYtNjRoLTY0djY0ek0zODMuODUgNTEyaDY0di02NGgtNjR6bTEyOC0zMTkuODh2LTY0aC02NHY2NHpNMTI4IDUxMmg2NHYtNjRoLTY0ek0wIDUxMmg2NHYtNjRIMHptMjU1LjkgMGg2NHYtNjRoLTY0ek0wIDMyMC4wN3Y2NGg2NHYtNjR6bTMxOS44OC0xOTEuOTJ2LTY0aC02NHY2NHptLTY0IDEyOGg2NHYtNjRoLTY0em0tNjQgMTI4djY0aDY0di02NHptMTI4LTY0aDY0di02NGgtNjR6bTAtMTI3Ljk1aDY0di02NGgtNjR6bTAgMTkxLjkzdjY0aDY0di02NHpNNjQgMzg0LjA1djY0aDY0di02NHptMTI4LTI1NS45di02NGgtNjR2NjR6bTE5MS45MiAyNTUuOWg2NHYtNjRoLTY0em0tMTI4LTE5MS45M3YtNjRoLTY0djY0em0xMjgtMTI3Ljk1djY0aDY0di02NHptLTEyOCAyNTUuOXY2NGg2NHYtNjR6bS02NC0xMjcuOTVIMTI4djY0aDY0em0xOTEuOTIgNjRoNjR2LTY0aC02NHpNMTI4IDEyOC4xNUg2NHY2NGg2NHptMCAxOTEuOTJ2NjRoNjR2LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQ0OEg0OGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzNTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0xNi0yODhIMjU2di00OGg0MGE4IDggMCAwIDAgOC04VjU2YTggOCAwIDAgMC04LThoLTQwVjhhOCA4IDAgMCAwLTgtOGgtNDhhOCA4IDAgMCAwLTggOHY0MGgtNDBhOCA4IDAgMCAwLTggOHY0OGE4IDggMCAwIDAgOCA4aDQwdjQ4SDMyYTMyIDMyIDAgMCAwLTMwLjUyIDQxLjU0TDc0LjU2IDQxNmgyOTguODhsNzMuMDgtMjE0LjQ2QTMyIDMyIDAgMCAwIDQxNiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzS25pZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDI3Mi40N2w0MC42MyAxOC4wNmEzMiAzMiAwIDAgMCAyNC44OC40N2wxMi43OC01LjEyYTMyIDMyIDAgMCAwIDE4Ljc2LTIwLjVsOS4yMi0zMC42NWEyNCAyNCAwIDAgMSAxMi41NS0xNS42NUwxNTkuOTQgMjA4djUwLjMzYTQ4IDQ4IDAgMCAxLTI2LjUzIDQyLjk0bC01Ny4yMiAyOC42NUE4MCA4MCAwIDAgMCAzMiA0MDEuNDhWNDE2aDMxOS44NlYyMjRjMC0xMDYtODUuOTItMTkyLTE5MS45Mi0xOTJIMTJBMTIgMTIgMCAwIDAgMCA0NGExNi45IDE2LjkgMCAwIDAgMS43OSA3LjU4TDE2IDgwbC05IDlhMjQgMjQgMCAwIDAtNyAxN3YxMzcuMjFhMzIgMzIgMCAwIDAgMTkgMjkuMjZ6TTUyIDEyOGEyMCAyMCAwIDEgMS0yMCAyMCAyMCAyMCAwIDAgMSAyMC0yMHptMzE2IDMyMEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzNTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc1Bhd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA1LjEgMjI0SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDE2djUuNDljMCA0NC00LjE0IDg2LjYtMjQgMTIyLjUxaDE3NmMtMTkuODktMzUuOTEtMjQtNzguNTEtMjQtMTIyLjUxVjI4OGgxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTI1LjFjMjkuMzktMTguMzggNDkuMS01MC43OCA0OS4xLTg4YTEwNCAxMDQgMCAwIDAtMjA4IDBjMCAzNy4yMiAxOS43MSA2OS42MiA0OS4xIDg4ek0zMDQgNDQ4SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUXVlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDExMmE1NiA1NiAwIDEgMC01Ni01NiA1NiA1NiAwIDAgMCA1NiA1NnptMTc2IDMzNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzNTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em03Mi44Ny0yNjMuODRsLTI4LjUxLTE1LjkyYy03LjQ0LTUtMTYuOTEtMi40Ni0yMi4yOSA0LjY4YTQ3LjU5IDQ3LjU5IDAgMCAxLTQ3LjIzIDE4LjIzQzM4My43IDE4Ni44NiAzNjggMTY0LjkzIDM2OCAxNDEuNGExMy40IDEzLjQgMCAwIDAtMTMuNC0xMy40aC0zOC43N2MtNiAwLTExLjYxIDQtMTIuODYgOS45MWE0OCA0OCAwIDAgMS05My45NCAwYy0xLjI1LTUuOTItNi44Mi05LjkxLTEyLjg2LTkuOTFIMTU3LjRhMTMuNCAxMy40IDAgMCAwLTEzLjQgMTMuNGMwIDI1LjY5LTE5IDQ4Ljc1LTQ0LjY3IDUwLjQ5YTQ3LjUgNDcuNSAwIDAgMS00MS41NC0xOS4xNWMtNS4yOC03LjA5LTE0LjczLTkuNDUtMjIuMDktNC41NGwtMjguNTcgMTZhMTYgMTYgMCAwIDAtNS40NCAyMC40N0wxMDQuMjQgNDE2aDMwMy41MmwxMDIuNTUtMjExLjM3YTE2IDE2IDAgMCAwLTUuNDQtMjAuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggMzJoLTU2YTE2IDE2IDAgMCAwLTE2IDE2djQ4aC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNmgtODBhMTYgMTYgMCAwIDAtMTYgMTZ2NDhIODguMVY0OGExNiAxNiAwIDAgMC0xNi0xNkgxNkExNiAxNiAwIDAgMCAwIDQ4djE3Nmw2NCAzMmMwIDQ4LjMzLTEuNTQgOTUtMTMuMjEgMTYwaDI4Mi40MkMzMjEuNTQgMzUxIDMyMCAzMDMuNzIgMzIwIDI1Nmw2NC0zMlY0OGExNiAxNiAwIDAgMC0xNi0xNnpNMjI0IDMyMGgtNjR2LTY0YTMyIDMyIDAgMCAxIDY0IDB6bTE0NCAxMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzUyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzQgMjA4SDY0YTE2IDE2IDAgMCAwLTE2IDE2djE2YTE2IDE2IDAgMCAwIDE2IDE2aDE1Ljk0QTUzNS43OCA1MzUuNzggMCAwIDEgNjQgMzg0aDEyOGE1MzUuNzggNTM1Ljc4IDAgMCAxLTE1Ljk0LTEyOEgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTE2YTE2IDE2IDAgMCAwLTE2LTE2aC0xMGwzMy44OS05MC4zOGExNiAxNiAwIDAgMC0xNS0yMS42MkgxNDRWNjRoMjRhOCA4IDAgMCAwIDgtOFY0MGE4IDggMCAwIDAtOC04aC0yNFY4YTggOCAwIDAgMC04LThoLTE2YTggOCAwIDAgMC04IDh2MjRIODhhOCA4IDAgMCAwLTggOHYxNmE4IDggMCAwIDAgOCA4aDI0djMySDU1LjA5YTE2IDE2IDAgMCAwLTE1IDIxLjYyem0xNzMuMTYgMjUxLjU4TDIyNCA0NDh2LTE2YTE2IDE2IDAgMCAwLTE2LTE2SDQ4YTE2IDE2IDAgMCAwLTE2IDE2djE2TDguODUgNDU5LjU4QTE2IDE2IDAgMCAwIDAgNDczLjg5VjQ5NmExNiAxNiAwIDAgMCAxNiAxNmgyMjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTIyLjExYTE2IDE2IDAgMCAwLTguODQtMTQuMzF6bTkyLjc3LTE1Ny43OGwtMy4yOSA4Mi4yaDEyNi43MmwtMy4yOS04Mi4yMSAyNC42LTIwLjc5QTMyIDMyIDAgMCAwIDQ5NiAyNTYuNTRWMTk4YTYgNiAwIDAgMC02LTZoLTI2LjM4YTYgNiAwIDAgMC02IDZ2MjZoLTI0Ljcxdi0yNmE2IDYgMCAwIDAtNi02SDM3My4xYTYgNiAwIDAgMC02IDZ2MjZoLTI0Ljcxdi0yNmE2IDYgMCAwIDAtNi02SDMxMGE2IDYgMCAwIDAtNiA2djU4LjZhMzIgMzIgMCAwIDAgMTEuMzYgMjQuNHpNMzg0IDMwNGExNiAxNiAwIDAgMSAzMiAwdjMyaC0zMnptMTE5LjE2IDE1NS41OEw0ODAgNDQ4di0xNmExNiAxNiAwIDAgMC0xNi0xNkgzMzZhMTYgMTYgMCAwIDAtMTYgMTZ2MTZsLTIzLjE1IDExLjU4YTE2IDE2IDAgMCAwLTguODUgMTQuMzFWNDk2YTE2IDE2IDAgMCAwIDE2IDE2aDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMjIuMTFhMTYgMTYgMCAwIDAtOC44NC0xNC4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4ek0yNzMgMzY5LjlsMTM1LjUtMTM1LjVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTE3LTE3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwyNTYgMjg1LjEgMTU0LjQgMTgzLjVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xNyAxN2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlMMjM5IDM2OS45YzkuNCA5LjQgMjQuNiA5LjQgMzQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNEMxMTkgNTA0IDggMzkzIDggMjU2UzExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDh6TTE0Mi4xIDI3M2wxMzUuNSAxMzUuNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxNy0xN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyMjYuOSAyNTZsMTAxLjYtMTAxLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTE3LTE3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxNDIuMSAyMzljLTkuNCA5LjQtOS40IDI0LjYgMCAzNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4YzEzNyAwIDI0OCAxMTEgMjQ4IDI0OFMzOTMgNTA0IDI1NiA1MDQgOCAzOTMgOCAyNTYgMTE5IDggMjU2IDh6bTExMy45IDIzMUwyMzQuNCAxMDMuNWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTE3IDE3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOUwyODUuMSAyNTYgMTgzLjUgMzU3LjZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDE3IDE3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDM2OS45IDI3M2M5LjQtOS40IDkuNC0yNC42IDAtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25DaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI1NkM4IDExOSAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDgtMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2em0yMzEtMTEzLjlMMTAzLjUgMjc3LjZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDE3IDE3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDI1NiAyMjYuOWwxMDEuNiAxMDEuNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxNy0xN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzMgMTQyLjFjLTkuNC05LjQtMjQuNi05LjQtMzQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA3LjAyOSAzODEuNDc2TDEyLjY4NiAxODcuMTMyYy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFsMjIuNjY3LTIyLjY2N2M5LjM1Ny05LjM1NyAyNC41MjItOS4zNzUgMzMuOTAxLS4wNEwyMjQgMjg0LjUwNWwxNTQuNzQ1LTE1NC4wMjFjOS4zNzktOS4zMzUgMjQuNTQ0LTkuMzE3IDMzLjkwMS4wNGwyMi42NjcgMjIuNjY3YzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MUwyNDAuOTcxIDM4MS40NzZjLTkuMzczIDkuMzcyLTI0LjU2OSA5LjM3Mi0zMy45NDIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQuNTIgMjM5LjAzTDIyOC44NyA0NC42OWM5LjM3LTkuMzcgMjQuNTctOS4zNyAzMy45NCAwbDIyLjY3IDIyLjY3YzkuMzYgOS4zNiA5LjM3IDI0LjUyLjA0IDMzLjlMMTMxLjQ5IDI1NmwxNTQuMDIgMTU0Ljc1YzkuMzQgOS4zOCA5LjMyIDI0LjU0LS4wNCAzMy45bC0yMi42NyAyMi42N2MtOS4zNyA5LjM3LTI0LjU3IDkuMzctMzMuOTQgMEwzNC41MiAyNzIuOTdjLTkuMzctOS4zNy05LjM3LTI0LjU3IDAtMzMuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODUuNDc2IDI3Mi45NzFMOTEuMTMyIDQ2Ny4zMTRjLTkuMzczIDkuMzczLTI0LjU2OSA5LjM3My0zMy45NDEgMGwtMjIuNjY3LTIyLjY2N2MtOS4zNTctOS4zNTctOS4zNzUtMjQuNTIyLS4wNC0zMy45MDFMMTg4LjUwNSAyNTYgMzQuNDg0IDEwMS4yNTVjLTkuMzM1LTkuMzc5LTkuMzE3LTI0LjU0NC4wNC0zMy45MDFsMjIuNjY3LTIyLjY2N2M5LjM3My05LjM3MyAyNC41NjktOS4zNzMgMzMuOTQxIDBMMjg1LjQ3NSAyMzkuMDNjOS4zNzMgOS4zNzIgOS4zNzMgMjQuNTY4LjAwMSAzMy45NDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAuOTcxIDEzMC41MjRsMTk0LjM0MyAxOTQuMzQzYzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MWwtMjIuNjY3IDIyLjY2N2MtOS4zNTcgOS4zNTctMjQuNTIyIDkuMzc1LTMzLjkwMS4wNEwyMjQgMjI3LjQ5NSA2OS4yNTUgMzgxLjUxNmMtOS4zNzkgOS4zMzUtMjQuNTQ0IDkuMzE3LTMzLjkwMS0uMDRsLTIyLjY2Ny0yMi42NjdjLTkuMzczLTkuMzczLTkuMzczLTI0LjU2OSAwLTMzLjk0MUwyMDcuMDMgMTMwLjUyNWM5LjM3Mi05LjM3MyAyNC41NjgtOS4zNzMgMzMuOTQxLS4wMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoaWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMCA3MmMwLTM5Ljc2NSAzMi4yMzUtNzIgNzItNzJzNzIgMzIuMjM1IDcyIDcyYzAgMzkuNzY0LTMyLjIzNSA3Mi03MiA3MnMtNzItMzIuMjM2LTcyLTcyem0yNTQuNjI3IDEuMzczYy0xMi40OTYtMTIuNDk3LTMyLjc1OC0xMi40OTctNDUuMjU0IDBMMjQyLjc0NSAxNjBIMTQxLjI1NEw1NC42MjcgNzMuMzczYy0xMi40OTYtMTIuNDk3LTMyLjc1OC0xMi40OTctNDUuMjU0IDAtMTIuNDk3IDEyLjQ5Ny0xMi40OTcgMzIuNzU4IDAgNDUuMjU1TDEwNCAyMTMuMjU0VjQ4MGMwIDE3LjY3MyAxNC4zMjcgMzIgMzIgMzJoMTZjMTcuNjczIDAgMzItMTQuMzI3IDMyLTMyVjM2OGgxNnYxMTJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyaDE2YzE3LjY3MyAwIDMyLTE0LjMyNyAzMi0zMlYyMTMuMjU0bDk0LjYyNy05NC42MjdjMTIuNDk3LTEyLjQ5NyAxMi40OTctMzIuNzU3IDAtNDUuMjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHVyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0LjQ2IDI0Ni42OEwzNTIgMTc5LjJWMTI4aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjgwYzAtOC44NC03LjE2LTE2LTE2LTE2aC00OFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDh2NTEuMmwtMTEyLjQ2IDY3LjQ4QTMxLjk5NyAzMS45OTcgMCAwIDAgMTYwIDI3NC4xMlY1MTJoOTZ2LTk2YzAtMzUuMzUgMjguNjUtNjQgNjQtNjRzNjQgMjguNjUgNjQgNjR2OTZoOTZWMjc0LjEyYzAtMTEuMjQtNS45LTIxLjY2LTE1LjU0LTI3LjQ0ek0wIDM5NS45NlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTEyVjMyMEwxOS4zOSAzNjYuNTRBMzIuMDI0IDMyLjAyNCAwIDAgMCAwIDM5NS45NnptNjIwLjYxLTI5LjQyTDUxMiAzMjB2MTkyaDExMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYzOTUuOTZjMC0xMi44LTcuNjMtMjQuMzctMTkuMzktMjkuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZU5vdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzOS4wNTZ2MTYuNjU5YzAgMTAuODA0IDcuMjgxIDIwLjE1OSAxNy42ODYgMjMuMDY2QzM4My4yMDQgMTAwLjQzNCA0NDAgMTcxLjUxOCA0NDAgMjU2YzAgMTAxLjY4OS04Mi4yOTUgMTg0LTE4NCAxODQtMTAxLjY4OSAwLTE4NC04Mi4yOTUtMTg0LTE4NCAwLTg0LjQ3IDU2Ljc4Ni0xNTUuNTY0IDEzNC4zMTItMTc3LjIxOUMyMTYuNzE5IDc1Ljg3NCAyMjQgNjYuNTE3IDIyNCA1NS43MTJWMzkuMDY0YzAtMTUuNzA5LTE0LjgzNC0yNy4xNTMtMzAuMDQ2LTIzLjIzNEM4Ni42MDMgNDMuNDgyIDcuMzk0IDE0MS4yMDYgOC4wMDMgMjU3LjMzMmMuNzIgMTM3LjA1MiAxMTEuNDc3IDI0Ni45NTYgMjQ4LjUzMSAyNDYuNjY3QzM5My4yNTUgNTAzLjcxMSA1MDQgMzkyLjc4OCA1MDQgMjU2YzAtMTE1LjYzMy03OS4xNC0yMTIuNzc5LTE4Ni4yMTEtMjQwLjIzNkMzMDIuNjc4IDExLjg4OSAyODggMjMuNDU2IDI4OCAzOS4wNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxNiAxOTJINDgwVjI0YzAtMTMuMjYtMTAuNzQtMjQtMjQtMjRIMzEyYy0xMy4yNiAwLTI0IDEwLjc0LTI0IDI0djcyaC02NFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djgwaC02NFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkg4MGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2ODBIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MzYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMjE2YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTEyOCA0MDRjMCA2LjYzLTUuMzcgMTItMTIgMTJINzZjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMkg3NmMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEySDc2Yy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTEyOCAxOTJjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTE2MCA5NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEyVjc2YzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0xNjAgMjg4YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGluaWNNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxMTVMNjkuNDcgMzA3LjcxYy0xLjYyIDEuNDYtMy42OSAyLjE0LTUuNDcgMy4zNVY0OTZhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjMxMS4xYy0xLjctMS4xNi0zLjcyLTEuODItNS4yNi0zLjJ6bTk2IDI2MWE4IDggMCAwIDEtOCA4aC01NnY1NmE4IDggMCAwIDEtOCA4aC00OGE4IDggMCAwIDEtOC04di01NmgtNTZhOCA4IDAgMCAxLTgtOHYtNDhhOCA4IDAgMCAxIDgtOGg1NnYtNTZhOCA4IDAgMCAxIDgtOGg0OGE4IDggMCAwIDEgOCA4djU2aDU2YTggOCAwIDAgMSA4IDh6bTE4Ni42OS0xMzkuNzJsLTI1NS45NC0yMjZhMzkuODUgMzkuODUgMCAwIDAtNTMuNDUgMGwtMjU2IDIyNmExNiAxNiAwIDAgMC0xLjIxIDIyLjZMMjUuNSAyODIuN2ExNiAxNiAwIDAgMCAyMi42IDEuMjFMMjc3LjQyIDgxLjYzYTE2IDE2IDAgMCAxIDIxLjE3IDBMNTI3LjkxIDI4My45YTE2IDE2IDAgMCAwIDIyLjYtMS4yMWwyMS40LTIzLjgyYTE2IDE2IDAgMCAwLTEuMjItMjIuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiA2NGgtODBjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE5MiA0MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTEyMS4yIDIzMS44bC0xNDMgMTQxLjhjLTQuNyA0LjctMTIuMyA0LjYtMTctLjFsLTgyLjYtODMuM2MtNC43LTQuNy00LjYtMTIuMy4xLTE3TDk5LjEgMjg1YzQuNy00LjcgMTIuMy00LjYgMTcgLjFsNDYgNDYuNCAxMDYtMTA1LjJjNC43LTQuNyAxMi4zLTQuNiAxNyAuMWwyOC4yIDI4LjRjNC43IDQuOCA0LjYgMTIuMy0uMSAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xpcGJvYXJkTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek05NiA0MjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjQgMjQgMTAuNyAyNCAyNC0xMC43IDI0LTI0IDI0em0wLTk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0IDI0IDEwLjcgMjQgMjQtMTAuNyAyNC0yNCAyNHptMC05NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6bTk2LTE5MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTEyOCAzNjhjMCA0LjQtMy42IDgtOCA4SDE2OGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTk2YzAgNC40LTMuNiA4LTggOEgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTEydjM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDgwYzAtMzUuMjkgMjguNzEtNjQgNjQtNjRzNjQgMjguNzEgNjQgNjRoODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHpNMTkyIDQwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjRtOTYgMTE0di0yMGE2IDYgMCAwIDAtNi02SDEwMmE2IDYgMCAwIDAtNiA2djIwYTYgNiAwIDAgMCA2IDZoMTgwYTYgNiAwIDAgMCA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhabTkyLjQ5LDMxM2gwbC0yMCwyNWExNiwxNiwwLDAsMS0yMi40OSwyLjVoMGwtNjctNDkuNzJhNDAsNDAsMCwwLDEtMTUtMzEuMjNWMTEyYTE2LDE2LDAsMCwxLDE2LTE2aDMyYTE2LDE2LDAsMCwxLDE2LDE2VjI1Nmw1OCw0Mi41QTE2LDE2LDAsMCwxLDM0OC40OSwzMjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhIMTc2Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjQ4YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMjg4TTE3NiA0MTZjLTQ0LjExMiAwLTgwLTM1Ljg4OC04MC04MFYxMjhINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjg4YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTQ4SDE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvc2VkQ2FwdGlvbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxOC4xIDI4Ny43YzIuOC0yLjUgNy4xLTIuMSA5LjIuOWwxOS41IDI3LjdjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My42IDU2LjgtMTcyLjggMzIuMS0xNzIuOC02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdsLTE3LjUgMzAuNWMtMS45IDMuMS02LjIgNC05LjEgMS43LTQwLjgtMzItOTQuNi0xNC45LTk0LjYgMzEuMi4xIDQ4IDUxLjEgNzAuNSA5Mi4zIDMyLjZ6bTE5MC40IDBjMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjUgMjcuN2MxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjUgNTYuOS0xNzIuNyAzMi4xLTE3Mi43LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN0w0MjAgMjIyLjJjLTEuOSAzLjEtNi4yIDQtOS4xIDEuNy00MC44LTMyLTk0LjYtMTQuOS05NC42IDMxLjIgMCA0OCA1MSA3MC41IDkyLjIgMzIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWREb3dubG9hZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzcuNiAyMjYuNmM0LjEtMTAuNyA2LjQtMjIuNCA2LjQtMzQuNiAwLTUzLTQzLTk2LTk2LTk2LTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCAyLjcuMSA1LjQuMiA4LjFDNDAuMiAyMTkuOCAwIDI3My4yIDAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0aDM2OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjR6bS0xMzIuOSA4OC43TDI5OS4zIDQyMC43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMEwxNzEuMyAzMTUuM2MtMTAuMS0xMC4xLTIuOS0yNy4zIDExLjMtMjcuM0gyNDhWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MTEyaDY1LjRjMTQuMiAwIDIxLjQgMTcuMiAxMS4zIDI3LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkTWVhdGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzUyYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4IDQ4LTIxLjUgNDgtNDgtMjEuNS00OC00OC00OHptNDE2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDggNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4em0tMTE5IDExLjFjNC42LTE0LjUgMS42LTMwLjgtOS44LTQyLjMtMTEuNS0xMS41LTI3LjgtMTQuNC00Mi4zLTkuOS03LTEzLjUtMjAuNy0yMy0zNi45LTIzcy0yOS45IDkuNS0zNi45IDIzYy0xNC41LTQuNi0zMC44LTEuNi00Mi4zIDkuOS0xMS41IDExLjUtMTQuNCAyNy44LTkuOSA0Mi4zLTEzLjUgNy0yMyAyMC43LTIzIDM2LjlzOS41IDI5LjkgMjMgMzYuOWMtNC42IDE0LjUtMS42IDMwLjggOS45IDQyLjMgOC4yIDguMiAxOC45IDEyLjMgMjkuNyAxMi4zIDQuMyAwIDguNS0xLjEgMTIuNi0yLjUgNyAxMy41IDIwLjcgMjMgMzYuOSAyM3MyOS45LTkuNSAzNi45LTIzYzQuMSAxLjMgOC4zIDIuNSAxMi42IDIuNSAxMC44IDAgMjEuNS00LjEgMjkuNy0xMi4zIDExLjUtMTEuNSAxNC40LTI3LjggOS44LTQyLjMgMTMuNS03IDIzLTIwLjcgMjMtMzYuOXMtOS41LTI5LjktMjMtMzYuOXpNNTEyIDIyNGMwLTUzLTQzLTk2LTk2LTk2LS42IDAtMS4xLjItMS42LjIgMS4xLTUuMiAxLjYtMTAuNiAxLjYtMTYuMiAwLTQ0LjItMzUuOC04MC04MC04MC0yNC42IDAtNDYuMyAxMS4zLTYxIDI4LjhDMjU2LjQgMjQuOCAyMTkuMyAwIDE3NiAwIDExNC4xIDAgNjQgNTAuMSA2NCAxMTJjMCA3LjMuOCAxNC4zIDIuMSAyMS4yQzI3LjggMTQ1LjggMCAxODEuNSAwIDIyNGMwIDUzIDQzIDk2IDk2IDk2aDQzLjRjMy42LTggOC40LTE1LjQgMTQuOC0yMS44IDEzLjUtMTMuNSAzMS41LTIxLjEgNTAuOC0yMS4zIDEzLjUtMTMuMiAzMS43LTIwLjkgNTEtMjAuOXMzNy41IDcuNyA1MSAyMC45YzE5LjMuMiAzNy4zIDcuOCA1MC44IDIxLjMgNi40IDYuNCAxMS4zIDEzLjggMTQuOCAyMS44SDQxNmM1MyAwIDk2LTQzIDk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1vb25SYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MC41IDIyNS41Yy02LjktMzcuMi0zOS4zLTY1LjUtNzguNS02NS41LTEyLjMgMC0yMy45IDMtMzQuMyA4LTE3LjQtMjQuMS00NS42LTQwLTc3LjctNDAtNTMgMC05NiA0My05NiA5NiAwIC41LjIgMS4xLjIgMS42QzI3LjYgMjMyLjkgMCAyNjUuMiAwIDMwNGMwIDQ0LjIgMzUuOCA4MCA4MCA4MGgyNTZjNDQuMiAwIDgwLTM1LjggODAtODAgMC0zOS4yLTI4LjItNzEuNy02NS41LTc4LjV6bTIxNy40LTEuN2MtNzAuNCAxMy4zLTEzNS00MC4zLTEzNS0xMTAuOCAwLTQwLjYgMjEuOS03OCA1Ny41LTk4LjEgNS41LTMuMSA0LjEtMTEuNC0yLjEtMTIuNUM0NzkuNi44IDQ3MC43IDAgNDYxLjggMGMtNzcuOSAwLTE0MS4xIDYxLjItMTQ0LjQgMTM3LjkgMjYuNyAxMS45IDQ4LjIgMzMuOCA1OC45IDYxLjcgMzcuMSAxNC4zIDY0IDQ3LjQgNzAuMiA4Ni44IDUuMS41IDEwIDEuNSAxNS4yIDEuNSA0NC43IDAgODUuNi0yMC4yIDExMi42LTUzLjMgNC4yLTQuOC0uMi0xMi02LjQtMTAuOHpNMzY0LjUgNDE4LjFjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQyLjggMzUyLjdjNS43LTkuNiA5LjItMjAuNyA5LjItMzIuNyAwLTM1LjMtMjguNy02NC02NC02NC0xNy4yIDAtMzIuOCA2LjktNDQuMyAxNy45LTE2LjMtMjkuNi00Ny41LTQ5LjktODMuNy00OS45LTUzIDAtOTYgNDMtOTYgOTYgMCAyIC41IDMuOC42IDUuN0MyNy4xIDMzOC44IDAgMzc0LjEgMCA0MTZjMCA1MyA0MyA5NiA5NiA5NmgyNDBjNDQuMiAwIDgwLTM1LjggODAtODAgMC00MS45LTMyLjMtNzUuOC03My4yLTc5LjN6bTIyMi41LTU0LjNjLTkzLjEgMTcuNy0xNzguNS01My43LTE3OC41LTE0Ny43IDAtNTQuMiAyOS0xMDQgNzYuMS0xMzAuOCA3LjMtNC4xIDUuNC0xNS4xLTIuOC0xNi43QzQ0OC40IDEuMSA0MzYuNyAwIDQyNSAwIDMxOS4xIDAgMjMzLjEgODUuOSAyMzMuMSAxOTJjMCA4LjUuNyAxNi44IDEuOCAyNSA1LjkgNC4zIDExLjYgOC45IDE2LjcgMTQuMiAxMS40LTQuNyAyMy43LTcuMiAzNi40LTcuMiA1Mi45IDAgOTYgNDMuMSA5NiA5NiAwIDMuNi0uMiA3LjItLjYgMTAuNyAyMy42IDEwLjggNDIuNCAyOS41IDUzLjUgNTIuNiA1NC40LTMuNCAxMDMuNy0yOS4zIDEzNy4xLTcwLjQgNS4zLTYuNS0uNS0xNi4xLTguNy0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDEyOGMtLjYgMC0xLjEuMi0xLjYuMiAxLjEtNS4yIDEuNi0xMC42IDEuNi0xNi4yIDAtNDQuMi0zNS44LTgwLTgwLTgwLTI0LjYgMC00Ni4zIDExLjMtNjEgMjguOEMyNTYuNCAyNC44IDIxOS4zIDAgMTc2IDAgMTE0LjEgMCA2NCA1MC4xIDY0IDExMmMwIDcuMy44IDE0LjMgMi4xIDIxLjJDMjcuOCAxNDUuOCAwIDE4MS41IDAgMjI0YzAgNTMgNDMgOTYgOTYgOTZoMzIwYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2ek04OCAzNzQuMmMtMTIuOCA0NC40LTQwIDU2LjQtNDAgODcuNyAwIDI3LjcgMjEuNSA1MC4xIDQ4IDUwLjFzNDgtMjIuNCA0OC01MC4xYzAtMzEuNC0yNy4yLTQzLjEtNDAtODcuNy0yLjItOC4xLTEzLjUtOC41LTE2IDB6bTE2MCAwYy0xMi44IDQ0LjQtNDAgNTYuNC00MCA4Ny43IDAgMjcuNyAyMS41IDUwLjEgNDggNTAuMXM0OC0yMi40IDQ4LTUwLjFjMC0zMS40LTI3LjItNDMuMS00MC04Ny43LTIuMi04LjEtMTMuNS04LjUtMTYgMHptMTYwIDBjLTEyLjggNDQuNC00MCA1Ni40LTQwIDg3LjcgMCAyNy43IDIxLjUgNTAuMSA0OCA1MC4xczQ4LTIyLjQgNDgtNTAuMWMwLTMxLjQtMjcuMi00My4xLTQwLTg3LjctMi4yLTguMS0xMy41LTguNS0xNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFNob3dlcnNIZWF2eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuOSAzNzAuMWMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em05NiAwYy03LjYtNC40LTE3LjQtMS44LTIxLjggNmwtNjQgMTEyYy00LjQgNy43LTEuNyAxNy41IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWw2NC0xMTJjNC40LTcuNiAxLjctMTcuNC02LTIxLjh6bS0xOTIgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em0zODQgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44ek00MTYgMTI4Yy0uNiAwLTEuMS4yLTEuNi4yIDEuMS01LjIgMS42LTEwLjYgMS42LTE2LjIgMC00NC4yLTM1LjgtODAtODAtODAtMjQuNiAwLTQ2LjMgMTEuMy02MSAyOC44QzI1Ni40IDI0LjggMjE5LjMgMCAxNzYgMCAxMTQuMiAwIDY0IDUwLjEgNjQgMTEyYzAgNy4zLjggMTQuMyAyLjEgMjEuMkMyNy44IDE0NS44IDAgMTgxLjUgMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmgzMjBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU3VuUmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTAuNSAyMjUuNWMtNi45LTM3LjItMzkuMy02NS41LTc4LjUtNjUuNS0xMi4zIDAtMjMuOSAzLTM0LjMgOC0xNy40LTI0LjEtNDUuNi00MC03Ny43LTQwLTUzIDAtOTYgNDMtOTYgOTYgMCAuNS4yIDEuMS4yIDEuNkMxODcuNiAyMzMgMTYwIDI2NS4yIDE2MCAzMDRjMCA0NC4yIDM1LjggODAgODAgODBoMjU2YzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtMzkuMi0yOC4yLTcxLjctNjUuNS03OC41em0tMzg2LjQgMzQuNGMtMzcuNC0zNy40LTM3LjQtOTguMyAwLTEzNS44IDM0LjYtMzQuNiA4OS4xLTM2LjggMTI2LjctNy40IDIwLTEyLjkgNDMuNi0yMC43IDY5LjItMjAuNy43IDAgMS4zLjIgMiAuMmw4LjktMjYuN2MzLjQtMTAuMi02LjMtMTkuOC0xNi41LTE2LjRsLTc1LjMgMjUuMS0zNS41LTcxYy00LjgtOS42LTE4LjUtOS42LTIzLjMgMGwtMzUuNSA3MS03NS4zLTI1LjFjLTEwLjItMy40LTE5LjggNi4zLTE2LjQgMTYuNWwyNS4xIDc1LjMtNzEgMzUuNWMtOS42IDQuOC05LjYgMTguNSAwIDIzLjNsNzEgMzUuNS0yNS4xIDc1LjNjLTMuNCAxMC4yIDYuMyAxOS44IDE2LjUgMTYuNWw1OS4yLTE5LjdjLS4yLTIuNC0uNy00LjctLjctNy4yIDAtMTIuNSAyLjMtMjQuNSA2LjItMzUuOS0zLjYtMi43LTcuMS01LjItMTAuMi04LjN6bTY5LjgtNThjNC4zLTI0LjUgMTUuOC00Ni40IDMxLjktNjQtOS44LTYuMi0yMS40LTkuOS0zMy44LTkuOS0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDE4LjcgOC4yIDM1LjQgMjEuMSA0Ny4xIDExLjMtMTUuOSAyNi42LTI4LjkgNDQuOC0zNy4yem0zMzAuNiAyMTYuMmMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS4yIDMyNS43Yy4yLTEuOS44LTMuNy44LTUuNiAwLTM1LjMtMjguNy02NC02NC02NC0xMi42IDAtMjQuMiAzLjgtMzQuMSAxMC0xNy42LTM4LjgtNTYuNS02Ni0xMDEuOS02Ni02MS44IDAtMTEyIDUwLjEtMTEyIDExMiAwIDMgLjcgNS44LjkgOC43LTQ5LjYgMy43LTg4LjkgNDQuNy04OC45IDk1LjMgMCA1MyA0MyA5NiA5NiA5NmgyNzJjNTMgMCA5Ni00MyA5Ni05NiAwLTQyLjEtMjcuMi03Ny40LTY0LjgtOTAuNHptLTQzMC40LTIyLjZjLTQzLjctNDMuNy00My43LTExNC43IDAtMTU4LjMgNDMuNy00My43IDExNC43LTQzLjcgMTU4LjQgMCA5LjcgOS43IDE2LjkgMjAuOSAyMi4zIDMyLjcgOS44LTMuNyAyMC4xLTYgMzAuNy03LjVMMzg2IDgxLjFjNC0xMS45LTcuMy0yMy4xLTE5LjItMTkuMkwyNzkgOTEuMiAyMzcuNSA4LjRDMjMyLTIuOCAyMTYtMi44IDIxMC40IDguNEwxNjkgOTEuMiA4MS4xIDYxLjlDNjkuMyA1OCA1OCA2OS4zIDYxLjkgODEuMWwyOS4zIDg3LjgtODIuOCA0MS41Yy0xMS4yIDUuNi0xMS4yIDIxLjUgMCAyNy4xbDgyLjggNDEuNC0yOS4zIDg3LjhjLTQgMTEuOSA3LjMgMjMuMSAxOS4yIDE5LjJsNzYuMS0yNS4zYzYuMS0xMi40IDE0LTIzLjcgMjMuNi0zMy41LTEzLjEtNS40LTI1LjQtMTMuNC0zNi0yNHptLTQuOC03OS4yYzAgNDAuOCAyOS4zIDc0LjggNjcuOSA4Mi4zIDgtNC43IDE2LjMtOC44IDI1LjItMTEuNyA1LjQtNDQuMyAzMS04Mi41IDY3LjQtMTA1QzI4Ny4zIDE2MC40IDI1OCAxNDAgMjI0IDE0MGMtNDYuMyAwLTg0IDM3LjYtODQgODMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRVcGxvYWRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM3LjYgMjI2LjZjNC4xLTEwLjcgNi40LTIyLjQgNi40LTM0LjYgMC01My00My05Ni05Ni05Ni0xOS43IDAtMzguMSA2LTUzLjMgMTYuMkMzNjcgNjQuMiAzMTUuMyAzMiAyNTYgMzJjLTg4LjQgMC0xNjAgNzEuNi0xNjAgMTYwIDAgMi43LjEgNS40LjIgOC4xQzQwLjIgMjE5LjggMCAyNzMuMiAwIDMzNmMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NGgzNjhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjggMC02MS45LTQ0LTExMy42LTEwMi40LTEyNS40ek0zOTMuNCAyODhIMzI4djExMmMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMjg4aC02NS40Yy0xNC4zIDAtMjEuNC0xNy4yLTExLjMtMjcuM2wxMDUuNC0xMDUuNGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGwxMDUuNCAxMDUuNGMxMC4xIDEwLjEgMi45IDI3LjMtMTEuMyAyNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzcuNiAyMjYuNmM0LjEtMTAuNyA2LjQtMjIuNCA2LjQtMzQuNiAwLTUzLTQzLTk2LTk2LTk2LTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCAyLjcuMSA1LjQuMiA4LjFDNDAuMiAyMTkuOCAwIDI3My4yIDAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0aDM2OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvY2t0YWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NiA0NjRoLTU2VjMzOC43OGwxNjguNzQtMTY4LjczYzE1LjUyLTE1LjUyIDQuNTMtNDIuMDUtMTcuNDItNDIuMDVIMjQuNjhjLTIxLjk1IDAtMzIuOTQgMjYuNTMtMTcuNDIgNDIuMDVMMTc2IDMzOC43OFY0NjRoLTU2Yy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwIDAgNC40MiAzLjU4IDggOCA4aDI0MGM0LjQyIDAgOC0zLjU4IDgtOCAwLTIyLjA5LTE3LjkxLTQwLTQwLTQwek00MzIgMGMtNjIuNjEgMC0xMTUuMzUgNDAuMi0xMzUuMTggOTZoNTIuNTRjMTYuNjUtMjguNTUgNDcuMjctNDggODIuNjQtNDggNTIuOTMgMCA5NiA0My4wNiA5NiA5NnMtNDMuMDcgOTYtOTYgOTZjLTE0LjA0IDAtMjcuMjktMy4yLTM5LjMyLTguNjRsLTM1LjI2IDM1LjI2QzM3OS4yMyAyNzkuOTIgNDA0LjU5IDI4OCA0MzIgMjg4Yzc5LjUzIDAgMTQ0LTY0LjQ3IDE0NC0xNDRTNTExLjUzIDAgNDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVCcmFuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE0NGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDM2LjQgMjQuMyA2Ny4xIDU3LjUgNzYuOC0uNiAxNi4xLTQuMiAyOC41LTExIDM2LjktMTUuNCAxOS4yLTQ5LjMgMjIuNC04NS4yIDI1LjctMjguMiAyLjYtNTcuNCA1LjQtODEuMyAxNi45di0xNDRjMzIuNS0xMC4yIDU2LTQwLjUgNTYtNzYuMyAwLTQ0LjItMzUuOC04MC04MC04MFMwIDM1LjggMCA4MGMwIDM1LjggMjMuNSA2Ni4xIDU2IDc2LjN2MTk5LjNDMjMuNSAzNjUuOSAwIDM5Ni4yIDAgNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0zNC0yMS4yLTYzLjEtNTEuMi03NC42IDMuMS01LjIgNy44LTkuOCAxNC45LTEzLjQgMTYuMi04LjIgNDAuNC0xMC40IDY2LjEtMTIuOCA0Mi4yLTMuOSA5MC04LjQgMTE4LjItNDMuNCAxNC0xNy40IDIxLjEtMzkuOCAyMS42LTY3LjkgMzEuNi0xMC44IDU0LjQtNDAuNyA1NC40LTc1Ljl6TTgwIDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2LTE2LTcuMi0xNi0xNiA3LjItMTYgMTYtMTZ6bTAgMzg0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTIyNC0zMjBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTYtMTYtNy4yLTE2LTE2IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzguOSA1MTEuNWwtNjEtMTcuN2MtNi40LTEuOC0xMC04LjUtOC4yLTE0LjlMMzQ2LjIgOC43YzEuOC02LjQgOC41LTEwIDE0LjktOC4ybDYxIDE3LjdjNi40IDEuOCAxMCA4LjUgOC4yIDE0LjlMMjkzLjggNTAzLjNjLTEuOSA2LjQtOC41IDEwLjEtMTQuOSA4LjJ6bS0xMTQtMTEyLjJsNDMuNS00Ni40YzQuNi00LjkgNC4zLTEyLjctLjgtMTcuMkwxMTcgMjU2bDkwLjYtNzkuN2M1LjEtNC41IDUuNS0xMi4zLjgtMTcuMmwtNDMuNS00Ni40Yy00LjUtNC44LTEyLjEtNS4xLTE3LS41TDMuOCAyNDcuMmMtNS4xIDQuNy01LjEgMTIuOCAwIDE3LjVsMTQ0LjEgMTM1LjFjNC45IDQuNiAxMi41IDQuNCAxNy0uNXptMzI3LjIuNmwxNDQuMS0xMzUuMWM1LjEtNC43IDUuMS0xMi44IDAtMTcuNUw0OTIuMSAxMTIuMWMtNC44LTQuNS0xMi40LTQuMy0xNyAuNUw0MzEuNiAxNTljLTQuNiA0LjktNC4zIDEyLjcuOCAxNy4yTDUyMyAyNTZsLTkwLjYgNzkuN2MtNS4xIDQuNS01LjUgMTIuMy0uOCAxNy4ybDQzLjUgNDYuNGM0LjUgNC45IDEyLjEgNS4xIDE3IC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2ZmZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGgxOTJjNTMgMCA5Ni00MyA5Ni05NmgzMmM3MC42IDAgMTI4LTU3LjQgMTI4LTEyOFM1ODIuNiAzMiA1MTIgMzJIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyMzJjMCA1MyA0MyA5NiA5NiA5NnpNNTEyIDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0aC0zMlY5NmgzMnptNDcuNyAzODRINDguM2MtNDcuNiAwLTYxLTY0LTM2LTY0aDU4My4zYzI1IDAgMTEuOCA2NC0zNS45IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg3LjQgMzE1LjdsLTQyLjYtMjQuNmM0LjMtMjMuMiA0LjMtNDcgMC03MC4ybDQyLjYtMjQuNmM0LjktMi44IDcuMS04LjYgNS41LTE0LTExLjEtMzUuNi0zMC02Ny44LTU0LjctOTQuNi0zLjgtNC4xLTEwLTUuMS0xNC44LTIuM0wzODAuOCAxMTBjLTE3LjktMTUuNC0zOC41LTI3LjMtNjAuOC0zNS4xVjI1LjhjMC01LjYtMy45LTEwLjUtOS40LTExLjctMzYuNy04LjItNzQuMy03LjgtMTA5LjIgMC01LjUgMS4yLTkuNCA2LjEtOS40IDExLjdWNzVjLTIyLjIgNy45LTQyLjggMTkuOC02MC44IDM1LjFMODguNyA4NS41Yy00LjktMi44LTExLTEuOS0xNC44IDIuMy0yNC43IDI2LjctNDMuNiA1OC45LTU0LjcgOTQuNi0xLjcgNS40LjYgMTEuMiA1LjUgMTRMNjcuMyAyMjFjLTQuMyAyMy4yLTQuMyA0NyAwIDcwLjJsLTQyLjYgMjQuNmMtNC45IDIuOC03LjEgOC42LTUuNSAxNCAxMS4xIDM1LjYgMzAgNjcuOCA1NC43IDk0LjYgMy44IDQuMSAxMCA1LjEgMTQuOCAyLjNsNDIuNi0yNC42YzE3LjkgMTUuNCAzOC41IDI3LjMgNjAuOCAzNS4xdjQ5LjJjMCA1LjYgMy45IDEwLjUgOS40IDExLjcgMzYuNyA4LjIgNzQuMyA3LjggMTA5LjIgMCA1LjUtMS4yIDkuNC02LjEgOS40LTExLjd2LTQ5LjJjMjIuMi03LjkgNDIuOC0xOS44IDYwLjgtMzUuMWw0Mi42IDI0LjZjNC45IDIuOCAxMSAxLjkgMTQuOC0yLjMgMjQuNy0yNi43IDQzLjYtNTguOSA1NC43LTk0LjYgMS41LTUuNS0uNy0xMS4zLTUuNi0xNC4xek0yNTYgMzM2Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIuMSAxOTFsLTguMiAxNC4zYy0zIDUuMy05LjQgNy41LTE1LjEgNS40LTExLjgtNC40LTIyLjYtMTAuNy0zMi4xLTE4LjYtNC42LTMuOC01LjgtMTAuNS0yLjgtMTUuN2w4LjItMTQuM2MtNi45LTgtMTIuMy0xNy4zLTE1LjktMjcuNGgtMTYuNWMtNiAwLTExLjItNC4zLTEyLjItMTAuMy0yLTEyLTIuMS0yNC42IDAtMzcuMSAxLTYgNi4yLTEwLjQgMTIuMi0xMC40aDE2LjVjMy42LTEwLjEgOS0xOS40IDE1LjktMjcuNGwtOC4yLTE0LjNjLTMtNS4yLTEuOS0xMS45IDIuOC0xNS43IDkuNS03LjkgMjAuNC0xNC4yIDMyLjEtMTguNiA1LjctMi4xIDEyLjEuMSAxNS4xIDUuNGw4LjIgMTQuM2MxMC41LTEuOSAyMS4yLTEuOSAzMS43IDBMNTUyIDYuM2MzLTUuMyA5LjQtNy41IDE1LjEtNS40IDExLjggNC40IDIyLjYgMTAuNyAzMi4xIDE4LjYgNC42IDMuOCA1LjggMTAuNSAyLjggMTUuN2wtOC4yIDE0LjNjNi45IDggMTIuMyAxNy4zIDE1LjkgMjcuNGgxNi41YzYgMCAxMS4yIDQuMyAxMi4yIDEwLjMgMiAxMiAyLjEgMjQuNiAwIDM3LjEtMSA2LTYuMiAxMC40LTEyLjIgMTAuNGgtMTYuNWMtMy42IDEwLjEtOSAxOS40LTE1LjkgMjcuNGw4LjIgMTQuM2MzIDUuMiAxLjkgMTEuOS0yLjggMTUuNy05LjUgNy45LTIwLjQgMTQuMi0zMi4xIDE4LjYtNS43IDIuMS0xMi4xLS4xLTE1LjEtNS40bC04LjItMTQuM2MtMTAuNCAxLjktMjEuMiAxLjktMzEuNyAwem0tMTAuNS01OC44YzM4LjUgMjkuNiA4Mi40LTE0LjMgNTIuOC01Mi44LTM4LjUtMjkuNy04Mi40IDE0LjMtNTIuOCA1Mi44ek0zODYuMyAyODYuMWwzMy43IDE2LjhjMTAuMSA1LjggMTQuNSAxOC4xIDEwLjUgMjkuMS04LjkgMjQuMi0yNi40IDQ2LjQtNDIuNiA2NS44LTcuNCA4LjktMjAuMiAxMS4xLTMwLjMgNS4zbC0yOS4xLTE2LjhjLTE2IDEzLjctMzQuNiAyNC42LTU0LjkgMzEuN3YzMy42YzAgMTEuNi04LjMgMjEuNi0xOS43IDIzLjYtMjQuNiA0LjItNTAuNCA0LjQtNzUuOSAwLTExLjUtMi0yMC0xMS45LTIwLTIzLjZWNDE4Yy0yMC4zLTcuMi0zOC45LTE4LTU0LjktMzEuN0w3NCA0MDNjLTEwIDUuOC0yMi45IDMuNi0zMC4zLTUuMy0xNi4yLTE5LjQtMzMuMy00MS42LTQyLjItNjUuNy00LTEwLjkuNC0yMy4yIDEwLjUtMjkuMWwzMy4zLTE2LjhjLTMuOS0yMC45LTMuOS00Mi40IDAtNjMuNEwxMiAyMDUuOGMtMTAuMS01LjgtMTQuNi0xOC4xLTEwLjUtMjkgOC45LTI0LjIgMjYtNDYuNCA0Mi4yLTY1LjggNy40LTguOSAyMC4yLTExLjEgMzAuMy01LjNsMjkuMSAxNi44YzE2LTEzLjcgMzQuNi0yNC42IDU0LjktMzEuN1Y1Ny4xYzAtMTEuNSA4LjItMjEuNSAxOS42LTIzLjUgMjQuNi00LjIgNTAuNS00LjQgNzYtLjEgMTEuNSAyIDIwIDExLjkgMjAgMjMuNnYzMy42YzIwLjMgNy4yIDM4LjkgMTggNTQuOSAzMS43bDI5LjEtMTYuOGMxMC01LjggMjIuOS0zLjYgMzAuMyA1LjMgMTYuMiAxOS40IDMzLjIgNDEuNiA0Mi4xIDY1LjggNCAxMC45LjEgMjMuMi0xMCAyOS4xbC0zMy43IDE2LjhjMy45IDIxIDMuOSA0Mi41IDAgNjMuNXptLTExNy42IDIxLjFjNTkuMi03Ny0yOC43LTE2NC45LTEwNS43LTEwNS43LTU5LjIgNzcgMjguNyAxNjQuOSAxMDUuNyAxMDUuN3ptMjQzLjQgMTgyLjdsLTguMiAxNC4zYy0zIDUuMy05LjQgNy41LTE1LjEgNS40LTExLjgtNC40LTIyLjYtMTAuNy0zMi4xLTE4LjYtNC42LTMuOC01LjgtMTAuNS0yLjgtMTUuN2w4LjItMTQuM2MtNi45LTgtMTIuMy0xNy4zLTE1LjktMjcuNGgtMTYuNWMtNiAwLTExLjItNC4zLTEyLjItMTAuMy0yLTEyLTIuMS0yNC42IDAtMzcuMSAxLTYgNi4yLTEwLjQgMTIuMi0xMC40aDE2LjVjMy42LTEwLjEgOS0xOS40IDE1LjktMjcuNGwtOC4yLTE0LjNjLTMtNS4yLTEuOS0xMS45IDIuOC0xNS43IDkuNS03LjkgMjAuNC0xNC4yIDMyLjEtMTguNiA1LjctMi4xIDEyLjEuMSAxNS4xIDUuNGw4LjIgMTQuM2MxMC41LTEuOSAyMS4yLTEuOSAzMS43IDBsOC4yLTE0LjNjMy01LjMgOS40LTcuNSAxNS4xLTUuNCAxMS44IDQuNCAyMi42IDEwLjcgMzIuMSAxOC42IDQuNiAzLjggNS44IDEwLjUgMi44IDE1LjdsLTguMiAxNC4zYzYuOSA4IDEyLjMgMTcuMyAxNS45IDI3LjRoMTYuNWM2IDAgMTEuMiA0LjMgMTIuMiAxMC4zIDIgMTIgMi4xIDI0LjYgMCAzNy4xLTEgNi02LjIgMTAuNC0xMi4yIDEwLjRoLTE2LjVjLTMuNiAxMC4xLTkgMTkuNC0xNS45IDI3LjRsOC4yIDE0LjNjMyA1LjIgMS45IDExLjktMi44IDE1LjctOS41IDcuOS0yMC40IDE0LjItMzIuMSAxOC42LTUuNyAyLjEtMTIuMS0uMS0xNS4xLTUuNGwtOC4yLTE0LjNjLTEwLjQgMS45LTIxLjIgMS45LTMxLjcgMHpNNTAxLjYgNDMxYzM4LjUgMjkuNiA4Mi40LTE0LjMgNTIuOC01Mi44LTM4LjUtMjkuNi04Mi40IDE0LjMtNTIuOCA1Mi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2lucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQwNS4zVjQ0OGMwIDM1LjMgODYgNjQgMTkyIDY0czE5Mi0yOC43IDE5Mi02NHYtNDIuN0MzNDIuNyA0MzQuNCAyNjcuMiA0NDggMTkyIDQ0OFM0MS4zIDQzNC40IDAgNDA1LjN6TTMyMCAxMjhjMTA2IDAgMTkyLTI4LjcgMTkyLTY0UzQyNiAwIDMyMCAwIDEyOCAyOC43IDEyOCA2NHM4NiA2NCAxOTIgNjR6TTAgMzAwLjRWMzUyYzAgMzUuMyA4NiA2NCAxOTIgNjRzMTkyLTI4LjcgMTkyLTY0di01MS42Yy00MS4zIDM0LTExNi45IDUxLjYtMTkyIDUxLjZTNDEuMyAzMzQuNCAwIDMwMC40em00MTYgMTFjNTcuMy0xMS4xIDk2LTMxLjcgOTYtNTUuNHYtNDIuN2MtMjMuMiAxNi40LTU3LjMgMjcuNi05NiAzNC41djYzLjZ6TTE5MiAxNjBDODYgMTYwIDAgMTk1LjggMCAyNDBzODYgODAgMTkyIDgwIDE5Mi0zNS44IDE5Mi04MC04Ni04MC0xOTItODB6bTIxOS4zIDU2LjNjNjAtMTAuOCAxMDAuNy0zMiAxMDAuNy01Ni4zdi00Mi43Yy0zNS41IDI1LjEtOTYuNSAzOC42LTE2MC43IDQxLjggMjkuNSAxNC4zIDUxLjIgMzMuNSA2MCA1Ny4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2x1bW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMjI0IDQxNkg2NFYxNjBoMTYwdjI1NnptMjI0IDBIMjg4VjE2MGgxNjB2MjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAwSDY0QzI4LjcgMCAwIDI4LjcgMCA2NHYyODhjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTZ2ODRjMCA5LjggMTEuMiAxNS41IDE5LjEgOS43TDMwNCA0MTZoMTQ0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50RG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNjIgMzIgMCAxMjUuMTIgMCAyNDBjMCA0OS41NiAyMS40MSA5NS4wMSA1Ny4wMiAxMzAuNzRDNDQuNDYgNDIxLjA1IDIuNyA0NjUuOTcgMi4yIDQ2Ni41QTcuOTk1IDcuOTk1IDAgMCAwIDggNDgwYzY2LjI2IDAgMTE1Ljk5LTMxLjc1IDE0MC42LTUxLjM4QzE4MS4yOSA0NDAuOTMgMjE3LjU5IDQ0OCAyNTYgNDQ4YzE0MS4zOCAwIDI1Ni05My4xMiAyNTYtMjA4UzM5Ny4zOCAzMiAyNTYgMzJ6bTI0IDMwMi40NFYzNTJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTE2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMTcuNzNjLTExLjQyLTEuMzUtMjIuMjgtNS4xOS0zMS43OC0xMS40Ni02LjIyLTQuMTEtNi44Mi0xMy4xMS0xLjU1LTE4LjM4bDE3LjUyLTE3LjUyYzMuNzQtMy43NCA5LjMxLTQuMjQgMTQuMTEtMi4wMyAzLjE4IDEuNDYgNi42NiAyLjIyIDEwLjI2IDIuMjJoMzIuNzhjNC42NiAwIDguNDQtMy43OCA4LjQ0LTguNDIgMC0zLjc1LTIuNTItNy4wOC02LjEyLTguMTFsLTUwLjA3LTE0LjNjLTIyLjI1LTYuMzUtNDAuMDEtMjQuNzEtNDIuOTEtNDcuNjctNC4wNS0zMi4wNyAxOS4wMy01OS40MyA0OS4zMi02My4wNVYxMjhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTcuNzNjMTEuNDIgMS4zNSAyMi4yOCA1LjE5IDMxLjc4IDExLjQ2IDYuMjIgNC4xMSA2LjgyIDEzLjExIDEuNTUgMTguMzhsLTE3LjUyIDE3LjUyYy0zLjc0IDMuNzQtOS4zMSA0LjI0LTE0LjExIDIuMDNhMjQuNTE2IDI0LjUxNiAwIDAgMC0xMC4yNi0yLjIyaC0zMi43OGMtNC42NiAwLTguNDQgMy43OC04LjQ0IDguNDIgMCAzLjc1IDIuNTIgNy4wOCA2LjEyIDguMTFsNTAuMDcgMTQuM2MyMi4yNSA2LjM2IDQwLjAxIDI0LjcxIDQyLjkxIDQ3LjY3IDQuMDUgMzIuMDYtMTkuMDMgNTkuNDItNDkuMzIgNjMuMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnREb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNiAzMiAwIDEyNS4xIDAgMjQwYzAgNDkuNiAyMS40IDk1IDU3IDEzMC43QzQ0LjUgNDIxLjEgMi43IDQ2NiAyLjIgNDY2LjVjLTIuMiAyLjMtMi44IDUuNy0xLjUgOC43UzQuOCA0ODAgOCA0ODBjNjYuMyAwIDExNi0zMS44IDE0MC42LTUxLjQgMzIuNyAxMi4zIDY5IDE5LjQgMTA3LjQgMTkuNCAxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyek0xMjggMjcyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnRNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNjIgMzIgMCAxMjUuMTIgMCAyNDBjMCA0OS41NiAyMS40MSA5NSA1NyAxMzAuNzRDNDQuNDYgNDIxLjA1IDIuNyA0NjYgMi4yIDQ2Ni41QTggOCAwIDAgMCA4IDQ4MGM2Ni4yNiAwIDExNi0zMS43NSAxNDAuNi01MS4zOEEzMDQuNjYgMzA0LjY2IDAgMCAwIDI1NiA0NDhjMTQxLjM5IDAgMjU2LTkzLjEyIDI1Ni0yMDhTMzk3LjM5IDMyIDI1NiAzMnptOTYgMjMyYTggOCAwIDAgMS04IDhoLTU2djU2YTggOCAwIDAgMS04IDhoLTQ4YTggOCAwIDAgMS04LTh2LTU2aC01NmE4IDggMCAwIDEtOC04di00OGE4IDggMCAwIDEgOC04aDU2di01NmE4IDggMCAwIDEgOC04aDQ4YTggOCAwIDAgMSA4IDh2NTZoNTZhOCA4IDAgMCAxIDggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDI0MGMwIDQ5LjYgMjEuNCA5NSA1NyAxMzAuNy0xMi42IDUwLjMtNTQuMyA5NS4yLTU0LjggOTUuOC0yLjIgMi4zLTIuOCA1LjctMS41IDguNyAxLjMgMi45IDQuMSA0LjggNy4zIDQuOCA2Ni4zIDAgMTE2LTMxLjggMTQwLjYtNTEuNCAzMi43IDEyLjMgNjkgMTkuNCAxMDcuNCAxOS40IDI3LjQgMCA1My43LTMuNiA3OC40LTEwTDcyLjkgMTg2LjRjLTUuNiAxNy4xLTguOSAzNS04LjkgNTMuNnptNTY5LjggMjE4LjFsLTExNC40LTg4LjRDNTU0LjYgMzM0LjEgNTc2IDI4OS4yIDU3NiAyNDBjMC0xMTQuOS0xMTQuNi0yMDgtMjU2LTIwOC02NS4xIDAtMTI0LjIgMjAuMS0xNjkuNCA1Mi43TDQ1LjUgMy40QzM4LjUtMiAyOC41LS44IDIzIDYuMkwzLjQgMzEuNGMtNS40IDctNC4yIDE3IDIuOCAyMi40bDU4OC40IDQ1NC43YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS40LTYuOCA0LjEtMTYuOS0yLjktMjIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTE0LjYgMzIgMCAxMjUuMSAwIDI0MGMwIDQ5LjYgMjEuNCA5NSA1NyAxMzAuN0M0NC41IDQyMS4xIDIuNyA0NjYgMi4yIDQ2Ni41Yy0yLjIgMi4zLTIuOCA1LjctMS41IDguN1M0LjggNDgwIDggNDgwYzY2LjMgMCAxMTYtMzEuOCAxNDAuNi01MS40IDMyLjcgMTIuMyA2OSAxOS40IDEwNy40IDE5LjQgMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudHNEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDE5MmMwLTg4LjM3LTkzLjEyLTE2MC0yMDgtMTYwUzAgMTAzLjYzIDAgMTkyYzAgMzQuMjcgMTQuMTMgNjUuOTUgMzcuOTcgOTEuOThDMjQuNjEgMzE0LjIyIDIuNTIgMzM4LjE2IDIuMiAzMzguNUE3Ljk5NSA3Ljk5NSAwIDAgMCA4IDM1MmMzNi41OCAwIDY2LjkzLTEyLjI1IDg4LjczLTI0Ljk4QzEyOC45MyAzNDIuNzYgMTY3LjAyIDM1MiAyMDggMzUyYzExNC44OCAwIDIwOC03MS42MyAyMDgtMTYwem0tMjI0IDk2di0xNi4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWOTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTYuMjljMTEuMjkuNTggMjIuMjcgNC41MSAzMS4zNyAxMS4zNSAzLjkgMi45MyA0LjEgOC43Ny41NyAxMi4xNGwtMTEuNzUgMTEuMjFjLTIuNzcgMi42NC02Ljg5IDIuNzYtMTAuMTMuNzMtMy44Ny0yLjQzLTguMjYtMy43Mi0xMi44Mi0zLjcyaC0yOC4xMWMtNi41IDAtMTEuOCA1LjkyLTExLjggMTMuMTkgMCA1Ljk1IDMuNjEgMTEuMTkgOC43NyAxMi43M2w0NSAxMy41YzE4LjU5IDUuNTggMzEuNTggMjMuNDIgMzEuNTggNDMuMzkgMCAyNC41My0xOS4wNSA0NC40NC00Mi42NyA0NS4wN1YyODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptMzQ2LjAxIDEyMy45OUM1NjEuODcgMzg1Ljk2IDU3NiAzNTQuMjcgNTc2IDMyMGMwLTY2Ljk0LTUzLjQ5LTEyNC4yLTEyOS4zMy0xNDguMDcuODYgNi42IDEuMzMgMTMuMjkgMS4zMyAyMC4wNyAwIDEwNS44Ny0xMDcuNjYgMTkyLTI0MCAxOTItMTAuNzggMC0yMS4zMi0uNzctMzEuNzMtMS44OEMyMDcuOCA0MzkuNjMgMjgxLjc3IDQ4MCAzNjggNDgwYzQwLjk4IDAgNzkuMDctOS4yNCAxMTEuMjctMjQuOThDNTAxLjA3IDQ2Ny43NSA1MzEuNDIgNDgwIDU2OCA0ODBjMy4yIDAgNi4wOS0xLjkxIDcuMzQtNC44NCAxLjI3LTIuOTQuNjYtNi4zNC0xLjU1LTguNjctLjMxLS4zMy0yMi40Mi0yNC4yNC0zNS43OC01NC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMTkyYzAtODguNC05My4xLTE2MC0yMDgtMTYwUzAgMTAzLjYgMCAxOTJjMCAzNC4zIDE0LjEgNjUuOSAzOCA5Mi0xMy40IDMwLjItMzUuNSA1NC4yLTM1LjggNTQuNS0yLjIgMi4zLTIuOCA1LjctMS41IDguN1M0LjggMzUyIDggMzUyYzM2LjYgMCA2Ni45LTEyLjMgODguNy0yNSAzMi4yIDE1LjcgNzAuMyAyNSAxMTEuMyAyNSAxMTQuOSAwIDIwOC03MS42IDIwOC0xNjB6bTEyMiAyMjBjMjMuOS0yNiAzOC01Ny43IDM4LTkyIDAtNjYuOS01My41LTEyNC4yLTEyOS4zLTE0OC4xLjkgNi42IDEuMyAxMy4zIDEuMyAyMC4xIDAgMTA1LjktMTA3LjcgMTkyLTI0MCAxOTItMTAuOCAwLTIxLjMtLjgtMzEuNy0xLjlDMjA3LjggNDM5LjYgMjgxLjggNDgwIDM2OCA0ODBjNDEgMCA3OS4xLTkuMiAxMTEuMy0yNSAyMS44IDEyLjcgNTIuMSAyNSA4OC43IDI1IDMuMiAwIDYuMS0xLjkgNy4zLTQuOCAxLjMtMi45LjctNi4zLTEuNS04LjctLjMtLjMtMjIuNC0yNC4yLTM1LjgtNTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcGFjdERpc2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNODggMjU2SDU2YzAtMTA1LjkgODYuMS0xOTIgMTkyLTE5MnYzMmMtODguMiAwLTE2MCA3MS44LTE2MCAxNjB6bTE2MCA5NmMtNTMgMC05Ni00My05Ni05NnM0My05NiA5Ni05NiA5NiA0MyA5NiA5Ni00MyA5Ni05NiA5NnptMC0xMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS4zOCAyMzMuMzdjLTEyLjUgMTIuNS0xMi41IDMyLjc2IDAgNDUuMjUgMTIuNDkgMTIuNSAzMi43NiAxMi41IDQ1LjI1IDAgMTIuNS0xMi41IDEyLjUtMzIuNzYgMC00NS4yNS0xMi41LTEyLjQ5LTMyLjc2LTEyLjQ5LTQ1LjI1IDB6TTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTEyNi4xNCAxNDguMDVMMzA4LjE3IDMwMC40YTMxLjkzOCAzMS45MzggMCAwIDEtMTUuNzcgMTUuNzdsLTE0NC4zNCA2NS45N2MtMTYuNjUgNy42MS0zMy44MS05LjU1LTI2LjItMjYuMmw2NS45OC0xNDQuMzVhMzEuOTM4IDMxLjkzOCAwIDAgMSAxNS43Ny0xNS43N2wxNDQuMzQtNjUuOTdjMTYuNjUtNy42IDMzLjggOS41NSAyNi4xOSAyNi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wcmVzc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjY4NiA0MjcuMzE0TDEwNCAzMjhsLTMyLjkyMi0zMS4wMjlDNTUuOTU4IDI4MS44NTEgNjYuNjY2IDI1NiA4OC4wNDggMjU2aDExMkMyMTMuMzAzIDI1NiAyMjQgMjY2Ljc0NSAyMjQgMjgwdjExMmMwIDIxLjM4Mi0yNS44MDMgMzIuMDktNDAuOTIyIDE2Ljk3MUwxNTIgMzc2bC05OS4zMTQgOTkuMzE0Yy02LjI0OCA2LjI0OC0xNi4zNzkgNi4yNDgtMjIuNjI3IDBMNC42ODYgNDQ5Ljk0MWMtNi4yNDgtNi4yNDgtNi4yNDgtMTYuMzc5IDAtMjIuNjI3ek00NDMuMzE0IDg0LjY4NkwzNDQgMTg0bDMyLjkyMiAzMS4wMjljMTUuMTIgMTUuMTIgNC40MTIgNDAuOTcxLTE2Ljk3IDQwLjk3MWgtMTEyQzIzNC42OTcgMjU2IDIyNCAyNDUuMjU1IDIyNCAyMzJWMTIwYzAtMjEuMzgyIDI1LjgwMy0zMi4wOSA0MC45MjItMTYuOTcxTDI5NiAxMzZsOTkuMzE0LTk5LjMxNGM2LjI0OC02LjI0OCAxNi4zNzktNi4yNDggMjIuNjI3IDBsMjUuMzczIDI1LjM3M2M2LjI0OCA2LjI0OCA2LjI0OCAxNi4zNzkgMCAyMi42Mjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXByZXNzQXJyb3dzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMCAyODhIODhjLTIxLjQgMC0zMi4xIDI1LjgtMTcgNDFsMzIuOSAzMS05OS4yIDk5LjNjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42bDI1LjQgMjUuNGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMEwxNTIgNDA4bDMxLjEgMzNjMTUuMSAxNS4xIDQwLjkgNC40IDQwLjktMTdWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0em0xMTItNjRoMTEyYzIxLjQgMCAzMi4xLTI1LjkgMTctNDFsLTMzLTMxIDk5LjMtOTkuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNkw0ODEuOSA0LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDM2MCAxMDRsLTMxLjEtMzNDMzEzLjggNTUuOSAyODggNjYuNiAyODggODh2MTEyYzAgMTMuMyAxMC43IDI0IDI0IDI0em05NiAxMzZsMzMtMzEuMWMxNS4xLTE1LjEgNC40LTQwLjktMTctNDAuOUgzMTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0djExMmMwIDIxLjQgMjUuOSAzMi4xIDQxIDE3bDMxLTMyLjkgOTkuMyA5OS4zYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDI1LjQtMjUuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNkw0MDggMzYwek0xODMgNzEuMUwxNTIgMTA0IDUyLjcgNC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0LjcgMzAuMWMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZMMTA0IDE1MmwtMzMgMzEuMUM1NS45IDE5OC4yIDY2LjYgMjI0IDg4IDIyNGgxMTJjMTMuMyAwIDI0LTEwLjcgMjQtMjRWODhjMC0yMS4zLTI1LjktMzItNDEtMTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE5MkgzMTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjQ0YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2ODRoODRjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMnptLTI3Ni0yNFY0NGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2ODRIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTI0YzEzLjMgMCAyNC0xMC43IDI0LTI0em0wIDMwMFYzNDRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoODR2ODRjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptMTkyIDB2LTg0aDg0YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEySDMxMmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTI0YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbmNpZXJnZUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDEzMC41NFYxMTJoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNnYxOC41NEMxMTUuNDkgMTQ2LjExIDMyIDIzOS4xOCAzMiAzNTJoNDQ4YzAtMTEyLjgyLTgzLjQ5LTIwNS44OS0xOTItMjIxLjQ2ek00OTYgMzg0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb29raWVCaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC41MiAyNTUuODJjLTY5Ljk3LS44NS0xMjYuNDctNTcuNjktMTI2LjQ3LTEyNy44Ni03MC4xNyAwLTEyNy01Ni40OS0xMjcuODYtMTI2LjQ1LTI3LjI2LTQuMTQtNTUuMTMuMy03OS43MiAxMi44MmwtNjkuMTMgMzUuMjJhMTMyLjIyMSAxMzIuMjIxIDAgMCAwLTU3Ljc5IDU3LjgxbC0zNS4xIDY4Ljg4YTEzMi42NDUgMTMyLjY0NSAwIDAgMC0xMi44MiA4MC45NWwxMi4wOCA3Ni4yN2ExMzIuNTIxIDEzMi41MjEgMCAwIDAgMzcuMTYgNzIuOTZsNTQuNzcgNTQuNzZhMTMyLjAzNiAxMzIuMDM2IDAgMCAwIDcyLjcxIDM3LjA2bDc2LjcxIDEyLjE1YzI3LjUxIDQuMzYgNTUuNy0uMTEgODAuNTMtMTIuNzZsNjkuMTMtMzUuMjFhMTMyLjI3MyAxMzIuMjczIDAgMCAwIDU3Ljc5LTU3LjgxbDM1LjEtNjguODhjMTIuNTYtMjQuNjQgMTcuMDEtNTIuNTggMTIuOTEtNzkuOTF6TTE3NiAzNjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTMyLTE2MGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTYwIDEyOGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29va2llIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC4zNyAyNTQuNzlsLTEyLjA4LTc2LjI2YTEzMi40OTMgMTMyLjQ5MyAwIDAgMC0zNy4xNi03Mi45NWwtNTQuNzYtNTQuNzVjLTE5LjczLTE5LjcyLTQ1LjE4LTMyLjctNzIuNzEtMzcuMDVsLTc2LjctMTIuMTVjLTI3LjUxLTQuMzYtNTUuNjkuMTEtODAuNTIgMTIuNzZMMTA3LjMyIDQ5LjZhMTMyLjI1IDEzMi4yNSAwIDAgMC01Ny43OSA1Ny44bC0zNS4xIDY4Ljg4YTEzMi42MDIgMTMyLjYwMiAwIDAgMC0xMi44MiA4MC45NGwxMi4wOCA3Ni4yN2ExMzIuNDkzIDEzMi40OTMgMCAwIDAgMzcuMTYgNzIuOTVsNTQuNzYgNTQuNzVhMTMyLjA4NyAxMzIuMDg3IDAgMCAwIDcyLjcxIDM3LjA1bDc2LjcgMTIuMTRjMjcuNTEgNC4zNiA1NS42OS0uMTEgODAuNTItMTIuNzVsNjkuMTItMzUuMjFhMTMyLjMwMiAxMzIuMzAyIDAgMCAwIDU3Ljc5LTU3LjhsMzUuMS02OC44N2MxMi43MS0yNC45NiAxNy4yLTUzLjMgMTIuODItODAuOTZ6TTE3NiAzNjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTMyLTE2MGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTYwIDEyOGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDQ4djQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjEyMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoNzJ2Mjk2YzAgMzAuODc5IDI1LjEyMSA1NiA1NiA1NmgxNjh6bTAtMzQ0VjBIMTUyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MzY4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjEyOEgzNDRjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0xMjAuOTcxLTMxLjAyOUwzNzUuMDI5IDcuMDI5QTI0IDI0IDAgMCAwIDM1OC4wNTkgMEgzNTJ2OTZoOTZ2LTYuMDU5YTI0IDI0IDAgMCAwLTcuMDI5LTE2Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0xMTcuMTM0IDM0Ni43NTNjLTEuNTkyIDEuODY3LTM5Ljc3NiA0NS43MzEtMTA5Ljg1MSA0NS43MzEtODQuNjkyIDAtMTQ0LjQ4NC02My4yNi0xNDQuNDg0LTE0NS41NjcgMC04MS4zMDMgNjIuMDA0LTE0My40MDEgMTQzLjc2Mi0xNDMuNDAxIDY2Ljk1NyAwIDEwMS45NjUgMzcuMzE1IDEwMy40MjIgMzguOTA0YTEyIDEyIDAgMCAxIDEuMjM4IDE0LjYyM2wtMjIuMzggMzQuNjU1Yy00LjA0OSA2LjI2Ny0xMi43NzQgNy4zNTEtMTguMjM0IDIuMjk1LS4yMzMtLjIxNC0yNi41MjktMjMuODgtNjEuODgtMjMuODgtNDYuMTE2IDAtNzMuOTE2IDMzLjU3NS03My45MTYgNzYuMDgyIDAgMzkuNjAyIDI1LjUxNCA3OS42OTIgNzQuMjc3IDc5LjY5MiAzOC42OTcgMCA2NS4yOC0yOC4zMzggNjUuNTQ0LTI4LjYyNSA1LjEzMi01LjU2NSAxNC4wNTktNS4wMzMgMTguNTA4IDEuMDUzbDI0LjU0NyAzMy41NzJhMTIuMDAxIDEyLjAwMSAwIDAgMS0uNTUzIDE0Ljg2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ291Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDIyNHY2NGgzMjB2LTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDMyYzAtNTMtNDMtOTYtOTYtOTZIMTYwYy01MyAwLTk2IDQzLTk2IDk2aDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0em00MTYtMzJoLTMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NkgxMjh2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDIzLjYgMTMgNDQgMzIgNTUuMVY0MzJjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMzg0djE2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMzExLjFjMTktMTEuMSAzMi0zMS41IDMyLTU1LjEgMC0zNS4zLTI4LjctNjQtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1NkgwdjE3NnptMTkyLTY4YzAtNi42IDUuNC0xMiAxMi0xMmgxMzZjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkgyMDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6bS0xMjggMGMwLTYuNiA1LjQtMTIgMTItMTJoNzJjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkg3NmMtNi42IDAtMTItNS40LTEyLTEydi00MHpNNTc2IDgwdjQ4SDBWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9wQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAzNTJoLTQwVjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJIMTkydjk2aDE2MHYzMjhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0OGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00MGg0MGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0ek0xNjAgMjRjMC0xMy4yNi0xMC43NS0yNC0yNC0yNEg4OEM3NC43NSAwIDY0IDEwLjc0IDY0IDI0djQwSDI0QzEwLjc1IDY0IDAgNzQuNzQgMCA4OHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwdjI1NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDIyNHYtOTZIMTYwVjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAzNTJoLTQwVjEwOS4yNWw1OS4zMS01OS4zMWM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDQ4NC42OSA0LjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwTDQwMi43NSA2NEgxOTJ2OTZoMTE0Ljc1TDE2MCAzMDYuNzVWMjRjMC0xMy4yNi0xMC43NS0yNC0yNC0yNEg4OEM3NC43NSAwIDY0IDEwLjc0IDY0IDI0djQwSDI0QzEwLjc1IDY0IDAgNzQuNzQgMCA4OHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwdjI2NGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDIzMnYtOTZIMjA1LjI1TDM1MiAyMDUuMjVWNDg4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDhjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDBoNDBjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDhjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3Jvc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDEyOGgtOTZWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NnYyMjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI1Nmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9zc2hhaXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMCAyMjRoLTMwLjM2NEM0NTUuNzI0IDEzMC4zMjUgMzgxLjY3NSA1Ni4yNzYgMjg4IDQyLjM2NFYxMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYzMC4zNjRDMTMwLjMyNSA1Ni4yNzYgNTYuMjc2IDEzMC4zMjUgNDIuMzY0IDIyNEgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDMwLjM2NEM1Ni4yNzYgMzgxLjY3NSAxMzAuMzI1IDQ1NS43MjQgMjI0IDQ2OS42MzZWNTAwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMzAuMzY0QzM4MS42NzUgNDU1LjcyNCA0NTUuNzI0IDM4MS42NzUgNDY5LjYzNiAyODhINTAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6TTI4OCA0MDQuNjM0VjM2NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MC42MzRDMTY1LjgyNiAzOTIuMjMyIDExOS43ODMgMzQ2LjI0MyAxMDcuMzY2IDI4OEgxNDhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDAuNjM0QzExOS43NjggMTY1LjgyNiAxNjUuNzU3IDExOS43ODMgMjI0IDEwNy4zNjZWMTQ4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDAuNjM0QzM0Ni4xNzQgMTE5Ljc2OCAzOTIuMjE3IDE2NS43NTcgNDA0LjYzNCAyMjRIMzY0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDAuNjM0QzM5Mi4yMzIgMzQ2LjE3NCAzNDYuMjQzIDM5Mi4yMTcgMjg4IDQwNC42MzR6TTI4OCAyNTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzJjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMzJoLTE2LjM2QzUxMy4wNCAxMi42OCA0OTAuMDkgMCA0NjQgMGMtNDQuMTggMC04MCAzNS44Mi04MCA4MHYyMC45OEwxMi4wOSAzOTMuNTdBMzAuMjE2IDMwLjIxNiAwIDAgMCAwIDQxNy43NGMwIDIyLjQ2IDIzLjY0IDM3LjA3IDQzLjczIDI3LjAzTDE2NS4yNyAzODRoOTYuNDlsNDQuNDEgMTIwLjFjMi4yNyA2LjIzIDkuMTUgOS40NCAxNS4zOCA3LjE3bDIyLjU1LTguMjFjNi4yMy0yLjI3IDkuNDQtOS4xNSA3LjE3LTE1LjM4TDMxMi45NCAzODRIMzUyYzEuOTEgMCAzLjc2LS4yMyA1LjY2LS4yOWw0NC41MSAxMjAuMzhjMi4yNyA2LjIzIDkuMTUgOS40NCAxNS4zOCA3LjE3bDIyLjU1LTguMjFjNi4yMy0yLjI3IDkuNDQtOS4xNSA3LjE3LTE1LjM4bC00MS4yNC0xMTEuNTNDNDg1Ljc0IDM1Mi44IDU0NCAyNzkuMjYgNTQ0IDE5MnYtODBsOTYtMTZjMC0zNS4zNS00Mi45OC02NC05Ni02NHptLTgwIDcyYy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3Jvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDQ0OEgxMTJjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDE2YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2em02NC0zMjBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4IDAgNy4xIDEuNiAxMy43IDQuNCAxOS44TDQ3NiAyMzkuMmMtMTUuNCA5LjItMzUuMyA0LTQ0LjItMTEuNkwzNTAuMyA4NUMzNjEgNzYuMiAzNjggNjMgMzY4IDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4YzAgMTUgNyAyOC4yIDE3LjcgMzdsLTgxLjUgMTQyLjZjLTguOSAxNS42LTI4LjkgMjAuOC00NC4yIDExLjZsLTcyLjMtNDMuNGMyLjctNiA0LjQtMTIuNyA0LjQtMTkuOCAwLTI2LjUtMjEuNS00OC00OC00OFMwIDE0OS41IDAgMTc2czIxLjUgNDggNDggNDhjMi42IDAgNS4yLS40IDcuNy0uOEwxMjggNDE2aDM4NGw3Mi4zLTE5Mi44YzIuNS40IDUuMS44IDcuNy44IDI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcnV0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA3LjMxIDE4NS43MWwtMTgxLTE4MWExNiAxNiAwIDAgMC0yMi42MiAwTDI4MSAyNy4zMWExNiAxNiAwIDAgMCAwIDIyLjYzbDE4MSAxODFhMTYgMTYgMCAwIDAgMjIuNjMgMGwyMi42Mi0yMi42M2ExNiAxNiAwIDAgMCAuMDYtMjIuNnptLTE3OS41NCA2Ni40MWwtNjcuODktNjcuODkgNTUuMS01NS4xLTQ1LjI1LTQ1LjI1LTEwOS42NyAxMDkuNjdhOTYuMDggOTYuMDggMCAwIDAtMjUuNjcgNDYuMjlMMTA2LjY1IDM2MC4xbC0xMDIgMTAyYTE2IDE2IDAgMCAwIDAgMjIuNjNsMjIuNjIgMjIuNjJhMTYgMTYgMCAwIDAgMjIuNjMgMGwxMDItMTAyIDEyMC4yNS0yNy43NWE5NS44OCA5NS44OCAwIDAgMCA0Ni4yOS0yNS42NWwxMDkuNjgtMTA5LjY4TDM4Mi44NyAxOTd6bS01NC41NyA1NC41N2EzMiAzMiAwIDAgMS0xNS40NSA4LjU0bC03OS4zIDE4LjMyIDE4LjMtNzkuM2EzMi4yMiAzMi4yMiAwIDAgMSA4LjU2LTE1LjQ1bDkuMzEtOS4zMSA2Ny44OSA2Ny44OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3ViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuMSA2LjNsLTIwOCA3OGMtMTguNyA3LTMxLjEgMjUtMzEuMSA0NXYyMjUuMWMwIDE4LjIgMTAuMyAzNC44IDI2LjUgNDIuOWwyMDggMTA0YzEzLjUgNi44IDI5LjQgNi44IDQyLjkgMGwyMDgtMTA0YzE2LjMtOC4xIDI2LjUtMjQuOCAyNi41LTQyLjlWMTI5LjNjMC0yMC0xMi40LTM3LjktMzEuMS00NC45bC0yMDgtNzhDMjYyIDIuMiAyNTAgMi4yIDIzOS4xIDYuM3pNMjU2IDY4LjRsMTkyIDcydjEuMWwtMTkyIDc4LTE5Mi03OHYtMS4xbDE5Mi03MnptMzIgMzU2VjI3NS41bDE2MC02NXYxMzMuOWwtMTYwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDdWJlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OC4wNiAyNTZMNDQ0LjQ4IDg5LjU3YzQuNjktNC42OSA0LjY5LTEyLjI5IDAtMTYuOTctMzIuOC0zMi44LTg1Ljk5LTMyLjgtMTE4Ljc5IDBMMjEwLjE4IDE4OC4xMmwtMjQuODYtMjQuODZjNC4zMS0xMC45MiA2LjY4LTIyLjgxIDYuNjgtMzUuMjYgMC01My4wMi00Mi45OC05Ni05Ni05NlMwIDc0Ljk4IDAgMTI4czQyLjk4IDk2IDk2IDk2YzQuNTQgMCA4Ljk5LS4zMiAxMy4zNi0uOTNMMTQyLjI5IDI1NmwtMzIuOTMgMzIuOTNjLTQuMzctLjYxLTguODMtLjkzLTEzLjM2LS45My01My4wMiAwLTk2IDQyLjk4LTk2IDk2czQyLjk4IDk2IDk2IDk2IDk2LTQyLjk4IDk2LTk2YzAtMTIuNDUtMi4zNy0yNC4zNC02LjY4LTM1LjI2bDI0Ljg2LTI0Ljg2TDMyNS42OSA0MzkuNGMzMi44IDMyLjggODUuOTkgMzIuOCAxMTguNzkgMCA0LjY5LTQuNjggNC42OS0xMi4yOCAwLTE2Ljk3TDI3OC4wNiAyNTZ6TTk2IDE2MGMtMTcuNjQgMC0zMi0xNC4zNi0zMi0zMnMxNC4zNi0zMiAzMi0zMiAzMiAxNC4zNiAzMiAzMi0xNC4zNiAzMi0zMiAzMnptMCAyNTZjLTE3LjY0IDAtMzItMTQuMzYtMzItMzJzMTQuMzYtMzIgMzItMzIgMzIgMTQuMzYgMzIgMzItMTQuMzYgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhdGFiYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA3My4xNDN2NDUuNzE0QzQ0OCAxNTkuMTQzIDM0Ny42NjcgMTkyIDIyNCAxOTJTMCAxNTkuMTQzIDAgMTE4Ljg1N1Y3My4xNDNDMCAzMi44NTcgMTAwLjMzMyAwIDIyNCAwczIyNCAzMi44NTcgMjI0IDczLjE0M3pNNDQ4IDE3NnYxMDIuODU3QzQ0OCAzMTkuMTQzIDM0Ny42NjcgMzUyIDIyNCAzNTJTMCAzMTkuMTQzIDAgMjc4Ljg1N1YxNzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMjA5LjE0MyA0NDggMTc2em0wIDE2MHYxMDIuODU3QzQ0OCA0NzkuMTQzIDM0Ny42NjcgNTEyIDIyNCA1MTJTMCA0NzkuMTQzIDAgNDM4Ljg1N1YzMzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMzY5LjE0MyA0NDggMzM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNiAyNjBjMCAxNS40NjQtMTIuNTM2IDI4LTI4IDI4cy0yOC0xMi41MzYtMjgtMjhjMC00NC4xMTIgMzUuODg4LTgwIDgwLTgwczgwIDM1Ljg4OCA4MCA4MGMwIDE1LjQ2NC0xMi41MzYgMjgtMjggMjhzLTI4LTEyLjUzNi0yOC0yOGMwLTEzLjIzNC0xMC43NjctMjQtMjQtMjRzLTI0IDEwLjc2Ni0yNCAyNHptMjQtMTc2Yy05Ny4wNDcgMC0xNzYgNzguOTUzLTE3NiAxNzYgMCAxNS40NjQgMTIuNTM2IDI4IDI4IDI4czI4LTEyLjUzNiAyOC0yOGMwLTY2LjE2OCA1My44MzItMTIwIDEyMC0xMjBzMTIwIDUzLjgzMiAxMjAgMTIwYzAgNzUuMTY0LTcxLjAwOSA3MC4zMTEtNzEuOTk3IDE0My42MjJMMjg4IDQwNGMwIDI4LjY3My0yMy4zMjcgNTItNTIgNTItMTUuNDY0IDAtMjggMTIuNTM2LTI4IDI4czEyLjUzNiAyOCAyOCAyOGM1OS40NzUgMCAxMDcuODc2LTQ4LjMyOCAxMDgtMTA3Ljc3NC41OTUtMzQuNDI4IDcyLTQ4LjI0IDcyLTE0NC4yMjYgMC05Ny4wNDctNzguOTUzLTE3Ni0xNzYtMTc2em0yNjguNDg1LTUyLjIwMUw0ODAuMiAzLjUxNWMtNC42ODctNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDM3Ni4yIDkwLjU0NGMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDI4LjI4NSAyOC4yODVjNC42ODYgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3IDBsODcuMDMtODcuMDI5YzQuNjg3LTQuNjg4IDQuNjg3LTEyLjI4NiAwLTE2Ljk3MnpNMTY4Ljk3IDMxNC43NDVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NyAwTDMuNTE1IDQ2My4yM2MtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxTDMxLjggNTA4LjQ4NWM0LjY4NyA0LjY4NiAxMi4yODQgNC42ODYgMTYuOTcxIDBMMTk3LjI1NiAzNjBjNC42ODYtNC42ODYgNC42ODYtMTIuMjg0IDAtMTYuOTcxbC0yOC4yODYtMjguMjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZW1vY3JhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzcuMyAyNTYuOWwtMTkuNi0yOS40Yy0yOC4yLTQyLjMtNzUuMy02Ny41LTEyNi4xLTY3LjVIMjU2bC04MS4yLTgxLjJjMjAuMS0yMC4xIDIyLjYtNTEuMSA3LjUtNzMuOS0zLjQtNS4yLTEwLjgtNS45LTE1LjItMS41bC00MS44IDQxLjhMODIuNCAyLjRjLTMuNi0zLjYtOS42LTMtMTIuNCAxLjItMTIuMyAxOC42LTEwLjMgNDQgNi4xIDYwLjQgMy4zIDMuMyA3LjMgNS4zIDExLjMgNy41LTIuMiAxLjctNC43IDMuMS02LjQgNS40TDYuNCAxNzYuMmMtNy4zIDkuNy04LjQgMjIuNy0zIDMzLjVsMTQuMyAyOC42YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdoMzFjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMMTM4IDIxMmw1NCAxMDhoMzUydi03Ny44YzE2LjIgMTIuMiAxOC4zIDE3LjYgNDAuMSA1MC4zIDQuOSA3LjQgMTQuOCA5LjMgMjIuMiA0LjRsMjYuNi0xNy43YzcuMy01IDkuMy0xNC45IDQuNC0yMi4zem0tMzQxLjEtMTMuNmwtMTYuNSAxNi4xIDMuOSAyMi43Yy43IDQuMS0zLjYgNy4yLTcuMiA1LjNMMjU2IDI3Ni43bC0yMC40IDEwLjdjLTMuNiAxLjktNy45LTEuMi03LjItNS4zbDMuOS0yMi43LTE2LjUtMTYuMWMtMy0yLjktMS4zLTcuOSAyLjgtOC41bDIyLjgtMy4zIDEwLjItMjAuN2MxLjgtMy43IDcuMS0zLjcgOSAwbDEwLjIgMjAuNyAyMi44IDMuM2M0IC42IDUuNiA1LjYgMi42IDguNXptMTEyIDBsLTE2LjUgMTYuMSAzLjkgMjIuN2MuNyA0LjEtMy42IDcuMi03LjIgNS4zTDM2OCAyNzYuN2wtMjAuNCAxMC43Yy0zLjYgMS45LTcuOS0xLjItNy4yLTUuM2wzLjktMjIuNy0xNi41LTE2LjFjLTMtMi45LTEuMy03LjkgMi44LTguNWwyMi44LTMuMyAxMC4yLTIwLjdjMS44LTMuNyA3LjEtMy43IDkgMGwxMC4yIDIwLjcgMjIuOCAzLjNjNCAuNiA1LjYgNS42IDIuNiA4LjV6bTExMiAwbC0xNi41IDE2LjEgMy45IDIyLjdjLjcgNC4xLTMuNiA3LjItNy4yIDUuM0w0ODAgMjc2LjdsLTIwLjQgMTAuN2MtMy42IDEuOS03LjktMS4yLTcuMi01LjNsMy45LTIyLjctMTYuNS0xNi4xYy0zLTIuOS0xLjMtNy45IDIuOC04LjVsMjIuOC0zLjMgMTAuMi0yMC43YzEuOC0zLjcgNy4xLTMuNyA5IDBsMTAuMiAyMC43IDIyLjggMy4zYzQgLjYgNS42IDUuNiAyLjYgOC41ek0xOTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZ2LTgwaDE2MHY4MGMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2VjM1MkgxOTJ2MTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXNrdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHYzMjBjMCAyNi41IDIxLjUgNDggNDggNDhoMTkybC0xNiA0OGgtNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMjcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0aC03MmwtMTYtNDhoMTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMTYgMzUySDY0VjY0aDQ0OHYyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURoYXJtYWNoYWtyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTUgMjI1LjA2bC0xNy4yMiAxLjA4Yy01LjI3LTM5LjQ5LTIwLjc5LTc1LjY0LTQzLjg2LTEwNS44NGwxMi45NS0xMS40M2M2LjkyLTYuMTEgNy4yNS0xNi43OS43My0yMy4zMUw0MjYuNDQgNjQuNGMtNi41My02LjUzLTE3LjIxLTYuMTktMjMuMzEuNzNMMzkxLjcgNzguMDdjLTMwLjItMjMuMDYtNjYuMzUtMzguNTgtMTA1LjgzLTQzLjg2TDI4Ni45NCAxN2MuNTgtOS4yMS02Ljc0LTE3LTE1Ljk3LTE3aC0yOS45NGMtOS4yMyAwLTE2LjU0IDcuNzktMTUuOTcgMTdsMS4wOCAxNy4yMmMtMzkuNDkgNS4yNy03NS42NCAyMC43OS0xMDUuODMgNDMuODZsLTExLjQzLTEyLjk1Yy02LjExLTYuOTItMTYuNzktNy4yNS0yMy4zMS0uNzNMNjQuNCA4NS41NmMtNi41MyA2LjUzLTYuMTkgMTcuMjEuNzMgMjMuMzFsMTIuOTUgMTEuNDNjLTIzLjA2IDMwLjItMzguNTggNjYuMzUtNDMuODYgMTA1Ljg0TDE3IDIyNS4wNmMtOS4yMS0uNTgtMTcgNi43NC0xNyAxNS45N3YyOS45NGMwIDkuMjMgNy43OSAxNi41NCAxNyAxNS45N2wxNy4yMi0xLjA4YzUuMjcgMzkuNDkgMjAuNzkgNzUuNjQgNDMuODYgMTA1LjgzbC0xMi45NSAxMS40M2MtNi45MiA2LjExLTcuMjUgMTYuNzktLjczIDIzLjMxbDIxLjE3IDIxLjE3YzYuNTMgNi41MyAxNy4yMSA2LjE5IDIzLjMxLS43M2wxMS40My0xMi45NWMzMC4yIDIzLjA2IDY2LjM1IDM4LjU4IDEwNS44NCA0My44NkwyMjUuMDYgNDk1Yy0uNTggOS4yMSA2Ljc0IDE3IDE1Ljk3IDE3aDI5Ljk0YzkuMjMgMCAxNi41NC03Ljc5IDE1Ljk3LTE3bC0xLjA4LTE3LjIyYzM5LjQ5LTUuMjcgNzUuNjQtMjAuNzkgMTA1Ljg0LTQzLjg2bDExLjQzIDEyLjk1YzYuMTEgNi45MiAxNi43OSA3LjI1IDIzLjMxLjczbDIxLjE3LTIxLjE3YzYuNTMtNi41MyA2LjE5LTE3LjIxLS43My0yMy4zMWwtMTIuOTUtMTEuNDNjMjMuMDYtMzAuMiAzOC41OC02Ni4zNSA0My44Ni0xMDUuODNsMTcuMjIgMS4wOGM5LjIxLjU4IDE3LTYuNzQgMTctMTUuOTd2LTI5Ljk0Yy0uMDEtOS4yMy03LjgtMTYuNTQtMTcuMDEtMTUuOTd6TTI4MS44NCA5OC42MWMyNC44MSA0LjA3IDQ3LjYzIDEzLjY2IDY3LjIzIDI3Ljc4bC00Mi42MiA0OC4yOWMtOC43My01LjQ0LTE4LjMyLTkuNTQtMjguNjItMTEuOTVsNC4wMS02NC4xMnptLTUxLjY4IDBsNC4wMSA2NC4xMmMtMTAuMjkgMi40MS0xOS44OSA2LjUyLTI4LjYyIDExLjk1bC00Mi42Mi00OC4yOWMxOS42LTE0LjEyIDQyLjQyLTIzLjcxIDY3LjIzLTI3Ljc4em0tMTAzLjc3IDY0LjMzbDQ4LjMgNDIuNjFjLTUuNDQgOC43My05LjU0IDE4LjMzLTExLjk2IDI4LjYybC02NC4xMi00LjAxYzQuMDctMjQuODEgMTMuNjYtNDcuNjIgMjcuNzgtNjcuMjJ6bS0yNy43OCAxMTguOWw2NC4xMi00LjAxYzIuNDEgMTAuMjkgNi41MiAxOS44OSAxMS45NSAyOC42MmwtNDguMjkgNDIuNjJjLTE0LjEyLTE5LjYtMjMuNzEtNDIuNDItMjcuNzgtNjcuMjN6bTEzMS41NSAxMzEuNTVjLTI0LjgxLTQuMDctNDcuNjMtMTMuNjYtNjcuMjMtMjcuNzhsNDIuNjEtNDguM2M4LjczIDUuNDQgMTguMzMgOS41NCAyOC42MiAxMS45NmwtNCA2NC4xMnpNMjU2IDI4OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMjUuODQgMTI1LjM5bC00LjAxLTY0LjEyYzEwLjI5LTIuNDEgMTkuODktNi41MiAyOC42Mi0xMS45Nmw0Mi42MSA0OC4zYy0xOS42IDE0LjEyLTQyLjQxIDIzLjcxLTY3LjIyIDI3Ljc4em0xMDMuNzctNjQuMzNsLTQ4LjI5LTQyLjYyYzUuNDQtOC43MyA5LjU0LTE4LjMyIDExLjk1LTI4LjYybDY0LjEyIDQuMDFjLTQuMDcgMjQuODItMTMuNjYgNDcuNjQtMjcuNzggNjcuMjN6bS0zNi4zNC0xMTQuODljLTIuNDEtMTAuMjktNi41Mi0xOS44OS0xMS45Ni0yOC42Mmw0OC4zLTQyLjYxYzE0LjEyIDE5LjYgMjMuNzEgNDIuNDIgMjcuNzggNjcuMjNsLTY0LjEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpYWdub3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjU2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6bS0xNzYtODBjNDguNSAwIDg4LTM5LjUgODgtODhTMzY4LjUgMCAzMjAgMHMtODggMzkuNS04OCA4OCAzOS41IDg4IDg4IDg4ek01OS44IDM2NGMxMC4yIDE1LjMgMjkuMyAxNy44IDQyLjkgOS44IDE2LjItOS42IDU2LjItMzEuNyAxMDUuMy00OC42VjQxNmgyMjR2LTkwLjdjNDkuMSAxNi44IDg5LjEgMzkgMTA1LjMgNDguNiAxMy42IDggMzIuNyA1LjMgNDIuOS05LjhsMTcuOC0yNi43YzguOC0xMy4yIDcuNi0zNC42LTEwLTQ1LjEtMTEuOS03LjEtMjkuNy0xNy01MS4xLTI3LjQtMjguMSA0Ni4xLTk5LjQgMTcuOC04Ny43LTM1LjFDNDA5LjMgMjE3LjIgMzY1LjEgMjA4IDMyMCAyMDhjLTU3IDAtMTEyLjkgMTQuNS0xNjAgMzIuMi0uMiA0MC4yLTQ3LjYgNjMuMy03OS4yIDM2LTExLjIgNi0yMS4zIDExLjYtMjguNyAxNi0xNy42IDEwLjUtMTguOCAzMS44LTEwIDQ1LjFMNTkuOCAzNjR6TTM2OCAzNDRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0tOTYtOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0tMTYwIDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTYtMTYgNy4yLTE2IDE2IDcuMiAxNiAxNiAxNnptNTEyIDE5MkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2MDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VEMjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA2Ljc1IDIxNS4wNkwxLjIgMzcwLjk1Yy0zLjA4IDUgLjEgMTEuNSA1LjkzIDEyLjE0bDIwOC4yNiAyMi4wNy0xMDguNjQtMTkwLjF6TTcuNDEgMzE1LjQzTDgyLjcgMTkzLjA4IDYuMDYgMTQ3LjFjLTIuNjctMS42LTYuMDYuMzItNi4wNiAzLjQzdjE2Mi44MWMwIDQuMDMgNS4yOSA1LjUzIDcuNDEgMi4wOXpNMTguMjUgNDIzLjZsMTk0LjQgODcuNjZjNS4zIDIuNDUgMTEuMzUtMS40MyAxMS4zNS03LjI2di02NS42N2wtMjAzLjU1LTIyLjNjLTQuNDUtLjUtNi4yMyA1LjU5LTIuMiA3LjU3em04MS4yMi0yNTcuNzhMMTc5LjQgMjIuODhjNC4zNC03LjA2LTMuNTktMTUuMjUtMTAuNzgtMTEuMTRMMTcuODEgMTEwLjM1Yy0yLjQ3IDEuNjItMi4zOSA1LjI2LjEzIDYuNzhsODEuNTMgNDguNjl6TTI0MCAxNzZoMTA5LjIxTDI1My42MyA3LjYyQzI1MC41IDIuNTQgMjQ1LjI1IDAgMjQwIDBzLTEwLjUgMi41NC0xMy42MyA3LjYyTDEzMC43OSAxNzZIMjQwem0yMzMuOTQtMjguOWwtNzYuNjQgNDUuOTkgNzUuMjkgMTIyLjM1YzIuMTEgMy40NCA3LjQxIDEuOTQgNy40MS0yLjFWMTUwLjUzYzAtMy4xMS0zLjM5LTUuMDMtNi4wNi0zLjQzem0tOTMuNDEgMTguNzJsODEuNTMtNDguN2MyLjUzLTEuNTIgMi42LTUuMTYuMTMtNi43OGwtMTUwLjgxLTk4LjZjLTcuMTktNC4xMS0xNS4xMiA0LjA4LTEwLjc4IDExLjE0bDc5LjkzIDE0Mi45NHptNzkuMDIgMjUwLjIxTDI1NiA0MzguMzJ2NjUuNjdjMCA1Ljg0IDYuMDUgOS43MSAxMS4zNSA3LjI2bDE5NC40LTg3LjY2YzQuMDMtMS45NyAyLjI1LTguMDYtMi4yLTcuNTZ6bS04Ni4zLTIwMC45N2wtMTA4LjYzIDE5MC4xIDIwOC4yNi0yMi4wN2M1LjgzLS42NSA5LjAxLTcuMTQgNS45My0xMi4xNEwzNzMuMjUgMjE1LjA2ek0yNDAgMjA4SDEzOS41N0wyNDAgMzgzLjc1IDM0MC40MyAyMDhIMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRDYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIyLjE5IDEwOS45NUwyNTYuMjEgOS4wN2MtMTkuOTEtMTIuMS00NC41Mi0xMi4xLTY0LjQzIDBMMjUuODEgMTA5Ljk1Yy01LjMyIDMuMjMtNS4yOSAxMS4yNy4wNiAxNC40NkwyMjQgMjQyLjU1bDE5OC4xNC0xMTguMTRjNS4zNS0zLjE5IDUuMzgtMTEuMjIuMDUtMTQuNDZ6bTEzLjg0IDQ0LjYzTDI0MCAyNzEuNDZ2MjIzLjgyYzAgMTIuODggMTMuMzkgMjAuOTEgMjQuMDUgMTQuNDNsMTUyLjE2LTkyLjQ4YzE5LjY4LTExLjk2IDMxLjc5LTMzLjk0IDMxLjc5LTU3Ljd2LTE5Ny43YzAtNi40MS02LjY0LTEwLjQzLTExLjk3LTcuMjV6TTAgMTYxLjgzdjE5Ny43YzAgMjMuNzcgMTIuMTEgNDUuNzQgMzEuNzkgNTcuN2wxNTIuMTYgOTIuNDdjMTAuNjcgNi40OCAyNC4wNS0xLjU0IDI0LjA1LTE0LjQzVjI3MS40NkwxMS45NyAxNTQuNThDNi42NCAxNTEuNCAwIDE1NS40MiAwIDE2MS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUZpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptOTYgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUZvdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTkyIDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VPbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0yMjQgMjg4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlU2l4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTkyIDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVRocmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptOTYgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlVHdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTkyIDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTIgMTkySDQ3My4yNmMxMi42OSAyOS41OSA3LjEyIDY1LjItMTcgODkuMzJMMzIwIDQxNy41OFY0NjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyMjRjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyNDBjMC0yNi41MS0yMS40OS00OC00OC00OHpNNDgwIDM3NmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bS00Ni4zNy0xODYuN0wyNTguNyAxNC4zN2MtMTkuMTYtMTkuMTYtNTAuMjMtMTkuMTYtNjkuMzkgMEwxNC4zNyAxODkuM2MtMTkuMTYgMTkuMTYtMTkuMTYgNTAuMjMgMCA2OS4zOUwxODkuMyA0MzMuNjNjMTkuMTYgMTkuMTYgNTAuMjMgMTkuMTYgNjkuMzkgMEw0MzMuNjMgMjU4LjdjMTkuMTYtMTkuMTcgMTkuMTYtNTAuMjQgMC02OS40ek05NiAyNDhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0xMjggMTI4Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHptMC0xMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0wLTEyOGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bTEyOCAxMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWdpdGFsVGFjaG9ncmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggOTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MjU2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTI4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTMwNCAzNTJjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di04YzAtNC40MiAzLjU4LTggOC04aDIyNGM0LjQyIDAgOCAzLjU4IDggOHY4ek03MiAyODh2LTE2YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDgwYy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNDAtNjRjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di00OGMwLTguODQgNy4xNi0xNiAxNi0xNmgyMDhjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NDh6bTI3MiAxMjhjMCA0LjQyLTMuNTggOC04IDhIMzQ0Yy00LjQyIDAtOC0zLjU4LTgtOHYtOGMwLTQuNDIgMy41OC04IDgtOGgyMjRjNC40MiAwIDggMy41OCA4IDh2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlyZWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjEgMjMzLjMyTDI3OC42OCA5LjM5Yy0xMi41Mi0xMi41Mi0zMi44My0xMi41Mi00NS4zNiAwTDkuMzkgMjMzLjMyYy0xMi41MiAxMi41My0xMi41MiAzMi44MyAwIDQ1LjM2bDIyMy45MyAyMjMuOTNjMTIuNTIgMTIuNTMgMzIuODMgMTIuNTMgNDUuMzYgMGwyMjMuOTMtMjIzLjkzYzEyLjUyLTEyLjUzIDEyLjUyLTMyLjgzIDAtNDUuMzZ6bS0xMDAuOTggMTIuNTZsLTg0LjIxIDc3LjczYy01LjEyIDQuNzMtMTMuNDMgMS4xLTEzLjQzLTUuODhWMjY0aC05NnY2NGMwIDQuNDItMy41OCA4LTggOGgtMzJjLTQuNDIgMC04LTMuNTgtOC04di04MGMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyaDExMnYtNTMuNzNjMC02Ljk3IDguMy0xMC42MSAxMy40My01Ljg4bDg0LjIxIDc3LjczYzMuNDMgMy4xNyAzLjQzIDguNTkgMCAxMS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzIuMjkgMTk1LjlsLTY3LjA2LTIzYy0xOS4yOC02LjYtMzMuNTQtMjAuOTItMzguMTQtMzguMzFsLTE2LTYwLjQ1Yy0xMS41OC00My43Ny03Ni41Ny01Ny4xMy0xMTAtMjIuNjJMMTk1IDk5LjI0Yy0xMy4yNiAxMy43MS0zMy41NCAyMC45My01NC4yIDE5LjMxbC03MS45LTUuNjJjLTUyLTQuMDctODYuOTMgNDQuODktNTkgODIuODRsMzguNTQgNTIuNDJjMTEuMDggMTUuMDcgMTIuODIgMzMuODYgNC42NCA1MC4yNGwtMjguNDMgNTdDNCAzOTYuNjcgNDcuNDYgNDQwLjI5IDk4LjExIDQyOS4yM2w3MC0xNS4yOGMyMC4xMS00LjM5IDQxLjQ1IDAgNTcuMDcgMTEuNzNsNTQuMzIgNDAuODNjMzkuMzIgMjkuNTYgMTAxIDcuNTcgMTA0LjQ1LTM3LjIybDQuNy02MS44NmMxLjM1LTE3LjggMTIuOC0zMy44NyAzMC42My00M2w2Mi0zMS43NGM0NC44NC0yMi45NiAzOS41NS04MC4xNy04Ljk5LTk2Ljc5ek0xNjAgMjU2YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyem0xMjggOTZhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTE2LTEyOGExNiAxNiAwIDEgMSAxNi0xNiAxNiAxNiAwIDAgMS0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGl2aWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAzNTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjQgNjQtMjguNjUgNjQtNjQtMjguNjUtNjQtNjQtNjR6bTAtMTkyYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRzLTI4LjY1LTY0LTY0LTY0LTY0IDI4LjY1LTY0IDY0IDI4LjY1IDY0IDY0IDY0em0xOTIgNDhIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzODRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGl6enkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptLTk2IDIwNi42bC0yOC43IDI4LjdjLTE0LjggMTQuOC0zNy44LTcuNS0yMi42LTIyLjZsMjguNy0yOC43LTI4LjctMjguN2MtMTUtMTUgNy43LTM3LjYgMjIuNi0yMi42bDI4LjcgMjguNyAyOC43LTI4LjdjMTUtMTUgMzcuNiA3LjcgMjIuNiAyMi42TDE3NC42IDE5MmwyOC43IDI4LjdjMTUuMiAxNS4yLTcuOSAzNy40LTIyLjYgMjIuNkwxNTIgMjE0LjZ6TTI0OCA0MTZjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em0xNDcuMy0xOTUuM2MxNS4yIDE1LjItNy45IDM3LjQtMjIuNiAyMi42TDM0NCAyMTQuNmwtMjguNyAyOC43Yy0xNC44IDE0LjgtMzcuOC03LjUtMjIuNi0yMi42bDI4LjctMjguNy0yOC43LTI4LjdjLTE1LTE1IDcuNy0zNy42IDIyLjYtMjIuNmwyOC43IDI4LjcgMjguNy0yOC43YzE1LTE1IDM3LjYgNy43IDIyLjYgMjIuNkwzNjYuNiAxOTJsMjguNyAyOC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEbmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjEgNDk0LjFjLTEuMSA5LjUgNi4zIDE3LjggMTUuOSAxNy44bDMyLjMuMWM4LjEgMCAxNC45LTUuOSAxNi0xMy45LjctNC45IDEuOC0xMS4xIDMuNC0xOC4xSDM4MGMxLjYgNi45IDIuOSAxMy4yIDMuNSAxOC4xIDEuMSA4IDcuOSAxNCAxNiAxMy45bDMyLjMtLjFjOS42IDAgMTcuMS04LjMgMTUuOS0xNy44LTQuNi0zNy45LTI1LjYtMTI5LTExOC45LTIwNy43LTE3LjYgMTIuNC0zNy4xIDI0LjItNTguNSAzNS40IDYuMiA0LjYgMTEuNCA5LjQgMTcgMTQuMkgxNTkuN2MyMS4zLTE4LjEgNDctMzUuNiA3OC43LTUxLjRDNDEwLjUgMTk5LjEgNDQyLjEgNjUuOCA0NDcuOSAxNy45IDQ0OSA4LjQgNDQxLjYuMSA0MzIgLjFMMzk5LjYgMGMtOC4xIDAtMTQuOSA1LjktMTYgMTMuOS0uNyA0LjktMS44IDExLjEtMy40IDE4LjFINjcuOGMtMS42LTctMi43LTEzLjEtMy40LTE4LjEtMS4xLTgtNy45LTE0LTE2LTEzLjlMMTYuMS4xQzYuNS4xLTEgOC40LjEgMTcuOSA1LjMgNjAuOCAzMS40IDE3MS44IDE2MCAyNTYgMzEuNSAzNDAuMiA1LjMgNDUxLjIuMSA0OTQuMXpNMjI0IDIxOS42Yy0yNS4xLTEzLjctNDYuNC0yOC40LTY0LjMtNDMuNmgxMjguNWMtMTcuOCAxNS4yLTM5LjEgMzAtNjQuMiA0My42ek0zNTUuMSA5NmMtNS44IDEwLjQtMTIuOCAyMS4xLTIxIDMySDExNGMtOC4zLTEwLjktMTUuMy0yMS42LTIxLTMyaDI2Mi4xek05Mi45IDQxNmM1LjgtMTAuNCAxMi44LTIxLjEgMjEtMzJoMjE5LjRjOC4zIDEwLjkgMTUuNCAyMS42IDIxLjIgMzJIOTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC4wNiwyMjQsNDQ4LDI3Ny41NVY0OTZhMTYsMTYsMCwwLDEtMTYsMTZIMzY4YTE2LDE2LDAsMCwxLTE2LTE2VjM4NEgxOTJWNDk2YTE2LDE2LDAsMCwxLTE2LDE2SDExMmExNiwxNiwwLDAsMS0xNi0xNlYyODIuMDlDNTguODQsMjY4Ljg0LDMyLDIzMy42NiwzMiwxOTJhMzIsMzIsMCwwLDEsNjQsMCwzMi4wNiwzMi4wNiwwLDAsMCwzMiwzMlpNNTQ0LDExMnYzMmE2NCw2NCwwLDAsMS02NCw2NEg0NDh2MzUuNThMMzIwLDE5Ny44N1Y0OGMwLTE0LjI1LDE3LjIyLTIxLjM5LDI3LjMxLTExLjMxTDM3NC41OSw2NGg1My42M2MxMC45MSwwLDIzLjc1LDcuOTIsMjguNjIsMTcuNjlMNDY0LDk2aDY0QTE2LDE2LDAsMCwxLDU0NCwxMTJabS0xMTIsMGExNiwxNiwwLDEsMC0xNiwxNkExNiwxNiwwLDAsMCw0MzIsMTEyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2xsYXJTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS4yIDIzMy40bC0xMDgtMzEuNkM4OC43IDE5OC4yIDgwIDE4Ni41IDgwIDE3My41YzAtMTYuMyAxMy4yLTI5LjUgMjkuNS0yOS41aDY2LjNjMTIuMiAwIDI0LjIgMy43IDM0LjIgMTAuNSA2LjEgNC4xIDE0LjMgMy4xIDE5LjUtMmwzNC44LTM0YzcuMS02LjkgNi4xLTE4LjQtMS44LTI0LjVDMjM4IDc0LjggMjA3LjQgNjQuMSAxNzYgNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4aC0yLjVDNDUuOCA2NC01LjQgMTE4LjcuNSAxODMuNmM0LjIgNDYuMSAzOS40IDgzLjYgODMuOCA5Ni42bDEwMi41IDMwYzEyLjUgMy43IDIxLjIgMTUuMyAyMS4yIDI4LjMgMCAxNi4zLTEzLjIgMjkuNS0yOS41IDI5LjVoLTY2LjNDMTAwIDM2OCA4OCAzNjQuMyA3OCAzNTcuNWMtNi4xLTQuMS0xNC4zLTMuMS0xOS41IDJsLTM0LjggMzRjLTcuMSA2LjktNi4xIDE4LjQgMS44IDI0LjUgMjQuNSAxOS4yIDU1LjEgMjkuOSA4Ni41IDMwdjQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQ4LjJjNDYuNi0uOSA5MC4zLTI4LjYgMTA1LjctNzIuNyAyMS41LTYxLjYtMTQuNi0xMjQuOC03Mi41LTE0MS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2xseUZsYXRiZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDMyMGgzODRjOC44IDAgMTYtNy4yIDE2LTE2VjQ4YzAtOC44LTcuMi0xNi0xNi0xNkg0NDh2MTI4bC00OC0zMi00OCAzMlYzMkgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYyNTZjMCA4LjggNy4yIDE2IDE2IDE2em00MTYgNjRIMTI4VjE2YzAtOC44LTcuMi0xNi0xNi0xNkgxNkM3LjIgMCAwIDcuMiAwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHYzNjhjMCA4LjggNy4yIDE2IDE2IDE2aDgyLjljLTEuOCA1LTIuOSAxMC40LTIuOSAxNiAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEuMi0xMS0yLjktMTZINDUxYy0xLjggNS0yLjkgMTAuNC0yLjkgMTYgMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGMwLTUuNi0xLjItMTEtMi45LTE2SDYyNGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9sbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk0LjIgMjc3LjdjMTggNSAzNC43IDEzLjQgNDkuNSAyNC43bDE2MS41LTUzLjhjOC40LTIuOCAxMi45LTExLjkgMTAuMS0yMC4yTDQ1NC45IDQ3LjJjLTIuOC04LjQtMTEuOS0xMi45LTIwLjItMTAuMWwtNjEuMSAyMC40IDMzLjEgOTkuNEwzNDYgMTc3bC0zMy4xLTk5LjQtNjEuNiAyMC41Yy04LjQgMi44LTEyLjkgMTEuOS0xMC4xIDIwLjJsNTMgMTU5LjR6bTI4MSA0OC43TDU2NSAyOTZjLTIuOC04LjQtMTEuOS0xMi45LTIwLjItMTAuMWwtMjEzLjUgNzEuMmMtMTcuMi0yMi00My42LTM2LjQtNzMuNS0zN0wxNTguNCAyMS45QzE1NCA4LjggMTQxLjggMCAxMjggMEgxNkM3LjIgMCAwIDcuMiAwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg4OC45bDkyLjIgMjc2LjdjLTI2LjEgMjAuNC00MS43IDUzLjYtMzYgOTAuNSA2LjEgMzkuNCAzNy45IDcyLjMgNzcuMyA3OS4yIDYwLjIgMTAuNyAxMTIuMy0zNC44IDExMy40LTkyLjZsMjEzLjMtNzEuMmM4LjMtMi44IDEyLjktMTEuOCAxMC4xLTIwLjJ6TTI1NiA0NjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb25hdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQxNmMxMTQuOSAwIDIwOC05My4xIDIwOC0yMDhTMzcwLjkgMCAyNTYgMCA0OCA5My4xIDQ4IDIwOHM5My4xIDIwOCAyMDggMjA4ek0yMzMuOCA5Ny40VjgwLjZjMC05LjIgNy40LTE2LjYgMTYuNi0xNi42aDExLjFjOS4yIDAgMTYuNiA3LjQgMTYuNiAxNi42djE3YzE1LjUuOCAzMC41IDYuMSA0MyAxNS40IDUuNiA0LjEgNi4yIDEyLjMgMS4yIDE3LjFMMzA2IDE0NS42Yy0zLjggMy43LTkuNSAzLjgtMTQgMS01LjQtMy40LTExLjQtNS4xLTE3LjgtNS4xaC0zOC45Yy05IDAtMTYuMyA4LjItMTYuMyAxOC4zIDAgOC4yIDUgMTUuNSAxMi4xIDE3LjZsNjIuMyAxOC43YzI1LjcgNy43IDQzLjcgMzIuNCA0My43IDYwLjEgMCAzNC0yNi40IDYxLjUtNTkuMSA2Mi40djE2LjhjMCA5LjItNy40IDE2LjYtMTYuNiAxNi42aC0xMS4xYy05LjIgMC0xNi42LTcuNC0xNi42LTE2LjZ2LTE3Yy0xNS41LS44LTMwLjUtNi4xLTQzLTE1LjQtNS42LTQuMS02LjItMTIuMy0xLjItMTcuMWwxNi4zLTE1LjVjMy44LTMuNyA5LjUtMy44IDE0LTEgNS40IDMuNCAxMS40IDUuMSAxNy44IDUuMWgzOC45YzkgMCAxNi4zLTguMiAxNi4zLTE4LjMgMC04LjItNS0xNS41LTEyLjEtMTcuNmwtNjIuMy0xOC43Yy0yNS43LTcuNy00My43LTMyLjQtNDMuNy02MC4xLjEtMzQgMjYuNC02MS41IDU5LjEtNjIuNHpNNDgwIDM1MmgtMzIuNWMtMTkuNiAyNi00NC42IDQ3LjctNzMgNjRoNjMuOGM1LjMgMCA5LjYgMy42IDkuNiA4djE2YzAgNC40LTQuMyA4LTkuNiA4SDczLjZjLTUuMyAwLTkuNi0zLjYtOS42LTh2LTE2YzAtNC40IDQuMy04IDkuNi04aDYzLjhjLTI4LjQtMTYuMy01My4zLTM4LTczLTY0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb29yQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhINTEyVjUwLjhDNTEyIDIyLjc4IDQ5MC40NyAwIDQ2NCAwSDE3NS45OWMtMjYuNDcgMC00OCAyMi43OC00OCA1MC44VjQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDE1Ljk5IDI4OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMmMuMDEgMTcuNjctMTQuMzIgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvb3JPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhoLTgwVjExMy40NUM1NDQgODYuMTkgNTIyLjQ3IDY0IDQ5NiA2NEgzODR2NjRoOTZ2Mzg0aDE0NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTMxMi4yNCAxLjAxbC0xOTIgNDkuNzRDMTA1Ljk5IDU0LjQ0IDk2IDY3LjcgOTYgODIuOTJWNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMzZWMzMuMThjMC0yMS41OC0xOS41Ni0zNy40MS0zOS43Ni0zMi4xN3pNMjY0IDI4OGMtMTMuMjUgMC0yNC0xNC4zMy0yNC0zMnMxMC43NS0zMiAyNC0zMiAyNCAxNC4zMyAyNCAzMi0xMC43NSAzMi0yNCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG90Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptODAgMjQ4YzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE2Ny4ydi0yOC4xYy0yOC4yLTM2LjMtNDcuMS03OS4zLTU0LjEtMTI1LjItMi4xLTEzLjUtMTktMTguOC0yNy44LTguMy0yMS4xIDI0LjktMzcuNyA1NC4xLTQ4LjkgODYuNSAzNC4yIDM4LjMgODAgNjQuNiAxMzAuOCA3NS4xek00MDAgNjRjLTQ0LjIgMC04MCAzNS45LTgwIDgwLjF2NTkuNEMyMTUuNiAxOTcuMyAxMjcgMTMzIDg3IDQxLjhjLTUuNS0xMi41LTIzLjItMTMuMi0yOS0uOUM0MS40IDc2IDMyIDExNS4yIDMyIDE1Ni42YzAgNzAuOCAzNC4xIDEzNi45IDg1LjEgMTg1LjkgMTMuMiAxMi43IDI2LjEgMjMuMiAzOC45IDMyLjhsLTE0My45IDM2QzEuNCA0MTQtMy40IDQyNi40IDIuNiA0MzUuNyAyMCA0NjIuNiA2MyA1MDguMiAxNTUuOCA1MTJjOCAuMyAxNi0yLjYgMjIuMS03LjlsNjUuMi01Ni4xSDMyMGM4OC40IDAgMTYwLTcxLjUgMTYwLTE1OS45VjEyOGwzMi02NEg0MDB6bTAgOTYuMWMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgMGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYxNjhoODcuN2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwyNjkuNyAzNzguM2MtNy41IDcuNS0xOS44IDcuNS0yNy4zIDBMOTAuMSAyMjYuMWMtMTIuNi0xMi42LTMuNy0zNC4xIDE0LjEtMzQuMUgxOTJWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTI5NiAzNzZ2MTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTQ2LjdsNDkgNDljMjAuMSAyMC4xIDUyLjUgMjAuMSA3Mi42IDBsNDktNDlINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0em0tMTI0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMCA5IDIwIDIwIDIwIDIwLTkgMjAtMjB6bTY0IDBjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJhZnRpbmdDb21wYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1Ny4wMSAzNDQuNDJjLTI1LjA1IDIwLjMzLTUyLjYzIDM3LjE4LTgyLjU0IDQ5LjA1bDU0LjM4IDk0LjE5IDUzLjk1IDIzLjA0YzkuODEgNC4xOSAyMC44OS0yLjIxIDIyLjE3LTEyLjhsNy4wMi01OC4yNS01NC45OC05NS4yM3ptNDIuNDktOTQuNTZjNC44Ni03LjY3IDEuODktMTcuOTktNi4wNS0yMi4zOWwtMjguMDctMTUuNTdjLTcuNDgtNC4xNS0xNi42MS0xLjQ2LTIxLjI2IDUuNzJDNDAzLjAxIDI4MS4xNSAzMzIuMjUgMzIwIDI1NiAzMjBjLTIzLjkzIDAtNDcuMjMtNC4yNS02OS40MS0xMS41M2w2Ny4zNi0xMTYuNjhjLjcuMDIgMS4zNC4yMSAyLjA0LjIxczEuMzUtLjE5IDIuMDQtLjIxbDUxLjA5IDg4LjVjMzEuMjMtOC45NiA1OS41Ni0yNS43NSA4Mi42MS00OC45MmwtNTEuNzktODkuNzFDMzQ3LjM5IDEyOC4wMyAzNTIgMTEyLjYzIDM1MiA5NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2cy05NiA0Mi45OC05NiA5NmMwIDE2LjYzIDQuNjEgMzIuMDMgMTIuMDUgNDUuNjZsLTY4LjMgMTE4LjMxYy0xMi41NS0xMS42MS0yMy45Ni0yNC41OS0zMy42OC0zOS00Ljc5LTcuMS0xMy45Ny05LjYyLTIxLjM4LTUuMzNsLTI3Ljc1IDE2LjA3Yy03Ljg1IDQuNTQtMTAuNjMgMTQuOS01LjY0IDIyLjQ3IDE1LjU3IDIzLjY0IDM0LjY5IDQ0LjIxIDU1Ljk4IDYyLjAyTDAgNDM5LjY2bDcuMDIgNTguMjVjMS4yOCAxMC41OSAxMi4zNiAxNi45OSAyMi4xNyAxMi44bDUzLjk1LTIzLjA0IDcwLjgtMTIyLjYzQzE4Ni4xMyAzNzcuMjggMjIwLjYyIDM4NCAyNTYgMzg0Yzk5LjA1IDAgMTkwLjg4LTUxLjAxIDI0My41LTEzNC4xNHpNMjU2IDY0YzE3LjY3IDAgMzIgMTQuMzMgMzIgMzJzLTE0LjMzIDMyLTMyIDMyLTMyLTE0LjMzLTMyLTMyIDE0LjMzLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzIgMjU1Ljc4TDE5MiAyMjMuOTZsLTkxLjI4IDY4LjY5Yy0xMC4wOCAxMC4wOC0yLjk0IDI3LjMxIDExLjMxIDI3LjMxaDIyMi43Yy05LjQ0LTI2LjQtMTQuNzMtNTQuNDctMTQuNzMtODMuMzh2LTQyLjI3bC0xMTkuNzMtODcuNmMtMjMuODItMTUuODgtNTUuMjktMTQuMDEtNzcuMDYgNC41OUw1LjgxIDIyNy42NGMtMTIuMzggMTAuMzMtMy40NSAzMC40MiAxMi41MSAyOC4xNHptNTU2Ljg3IDM0LjFsLTEwMC42Ni01MC4zMUE0Ny45OTIgNDcuOTkyIDAgMCAxIDQ0OCAxOTYuNjV2LTM2LjY5aDY0bDI4LjA5IDIyLjYzYzYgNiAxNC4xNCA5LjM3IDIyLjYzIDkuMzdoMzAuOTdhMzIgMzIgMCAwIDAgMjguNjItMTcuNjlsMTQuMzEtMjguNjJhMzIuMDA1IDMyLjAwNSAwIDAgMC0zLjAyLTMzLjUxbC03NC41My05OS4zOEM1NTMuMDIgNC43IDU0My41NCAwIDUzMy40NyAwSDI5Ni4wMmMtNy4xMyAwLTEwLjcgOC41Ny01LjY2IDEzLjYxTDM1MiA2My45NiAyOTIuNDIgODguOGMtNS45IDIuOTUtNS45IDExLjM2IDAgMTQuMzFMMzUyIDEyNy45NnYxMDguNjJjMCA3Mi4wOCAzNi4wMyAxMzkuMzkgOTYgMTc5LjM4LTE5NS41OSA2LjgxLTM0NC41NiA0MS4wMS00MzQuMSA2MC45MUM1Ljc4IDQ3OC42NyAwIDQ4NS44OCAwIDQ5NC4yIDAgNTA0IDcuOTUgNTEyIDE3Ljc2IDUxMmg0OTkuMDhjNjMuMjkuMDEgMTE5LjYxLTQ3LjU2IDEyMi45OS0xMTAuNzYgMi41Mi00Ny4yOC0yMi43My05MC40LTY0LjY0LTExMS4zNnpNNDg5LjE4IDY2LjI1bDQ1LjY1IDExLjQxYy0yLjc1IDEwLjkxLTEyLjQ3IDE4Ljg5LTI0LjEzIDE4LjI2LTEyLjk2LS43MS0yNS44NS0xMi41My0yMS41Mi0yOS42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJhd1BvbHlnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM1MmMtLjM1IDAtLjY3LjEtMS4wMi4xbC0zOS4yLTY1LjMyYzUuMDctOS4xNyA4LjIyLTE5LjU2IDguMjItMzAuNzhzLTMuMTQtMjEuNjEtOC4yMi0zMC43OGwzOS4yLTY1LjMyYy4zNS4wMS42Ny4xIDEuMDIuMSAzNS4zNSAwIDY0LTI4LjY1IDY0LTY0cy0yOC42NS02NC02NC02NGMtMjMuNjMgMC00NC4wNCAxMi45NS01NS4xMiAzMkgxMTkuMTJDMTA4LjA0IDQ0Ljk1IDg3LjYzIDMyIDY0IDMyIDI4LjY1IDMyIDAgNjAuNjUgMCA5NmMwIDIzLjYzIDEyLjk1IDQ0LjA0IDMyIDU1LjEydjIwOS43NUMxMi45NSAzNzEuOTYgMCAzOTIuMzcgMCA0MTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NCAyMy42MyAwIDQ0LjA0LTEyLjk1IDU1LjEyLTMyaDIwOS43NWMxMS4wOSAxOS4wNSAzMS40OSAzMiA1NS4xMiAzMiAzNS4zNSAwIDY0LTI4LjY1IDY0LTY0IC4wMS0zNS4zNS0yOC42NC02NC02My45OS02NHptLTI4OCA4Ljg4VjE1MS4xMkE2My44MjUgNjMuODI1IDAgMCAwIDExOS4xMiAxMjhoMjA4LjM2bC0zOC40NiA2NC4xYy0uMzUtLjAxLS42Ny0uMS0xLjAyLS4xLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjRjLjM1IDAgLjY3LS4xIDEuMDItLjFsMzguNDYgNjQuMUgxMTkuMTJBNjMuNzQ4IDYzLjc0OCAwIDAgMCA5NiAzNjAuODh6TTI3MiAyNTZjMC04LjgyIDcuMTgtMTYgMTYtMTZzMTYgNy4xOCAxNiAxNi03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTZ6TTQwMCA5NmMwIDguODItNy4xOCAxNi0xNiAxNnMtMTYtNy4xOC0xNi0xNiA3LjE4LTE2IDE2LTE2IDE2IDcuMTggMTYgMTZ6TTY0IDgwYzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnpNNDggNDE2YzAtOC44MiA3LjE4LTE2IDE2LTE2czE2IDcuMTggMTYgMTYtNy4xOCAxNi0xNiAxNi0xNi03LjE4LTE2LTE2em0zMzYgMTZjLTguODIgMC0xNi03LjE4LTE2LTE2czcuMTgtMTYgMTYtMTYgMTYgNy4xOCAxNiAxNi03LjE4IDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcnVtU3RlZWxwYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyQzEyOC45NCAzMiAwIDg5LjMxIDAgMTYwdjE5MmMwIDcwLjY5IDEyOC45NCAxMjggMjg4IDEyOHMyODgtNTcuMzEgMjg4LTEyOFYxNjBjMC03MC42OS0xMjguOTQtMTI4LTI4OC0xMjh6bS04Mi45OSAxNTguMzZjLTQuNDUgMTYuNjEtMTQuNTQgMzAuNTctMjguMzEgNDAuNDhDMTAwLjIzIDIxNy40NiA0OCAxOTAuNzggNDggMTYwYzAtMzAuMTYgNTAuMTEtNTYuMzkgMTI0LjA0LTcwLjAzbDI1LjYgNDQuMzRjOS44NiAxNy4wOSAxMi40OCAzNi45OSA3LjM3IDU2LjA1ek0yODggMjQwYy0yMS4wOCAwLTQxLjQxLTEtNjAuODktMi43IDguMDYtMjYuMTMgMzIuMTUtNDUuMyA2MC44OS00NS4zczUyLjgzIDE5LjE3IDYwLjg5IDQ1LjNDMzI5LjQxIDIzOSAzMDkuMDggMjQwIDI4OCAyNDB6bTY0LTE0NGMwIDM1LjI5LTI4LjcxIDY0LTY0IDY0cy02NC0yOC43MS02NC02NFY4Mi45NmMyMC40LTEuODggNDEuOC0yLjk2IDY0LTIuOTZzNDMuNiAxLjA4IDY0IDIuOTZWOTZ6bTQ2LjkzIDEzNC45Yy0xMy44MS05LjkxLTIzLjk0LTIzLjktMjguNC00MC41NC01LjExLTE5LjA2LTIuNDktMzguOTYgNy4zOC01Ni4wNGwyNS42NS00NC40MkM0NzcuNzIgMTAzLjUgNTI4IDEyOS43OSA1MjggMTYwYzAgMzAuODMtNTIuNCA1Ny41NC0xMjkuMDcgNzAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzEuMzQgMTIyLjA1bDczLjUzLTQ3LjQyYTE2IDE2IDAgMCAwIDQuNDQtMjIuMTlsLTguODctMTMuMzFhMTYgMTYgMCAwIDAtMjIuMTktNC40NGwtMTEwLjA2IDcxQzMxOC40MyA5Ni45MSAyNzEuMjIgOTYgMjU2IDk2IDIxOS41NSA5NiAwIDEwMC41NSAwIDIwOC4xNXYxNjAuMjNjMCAzMC4yNyAyNy41IDU3LjY4IDcyIDc3Ljg2di0xMDEuOWEyNCAyNCAwIDEgMSA0OCAwdjExOC45M2MzMy4wNSA5LjExIDcxLjA3IDE1LjA2IDExMiAxNi43M1YzNzYuMzlhMjQgMjQgMCAxIDEgNDggMFY0ODBjNDAuOTMtMS42NyA3OC45NS03LjYyIDExMi0xNi43M1YzNDQuMzRhMjQgMjQgMCAxIDEgNDggMHYxMDEuOWM0NC41LTIwLjE4IDcyLTQ3LjU5IDcyLTc3Ljg2VjIwOC4xNWMwLTQzLjMyLTM1Ljc2LTY5Ljc2LTgwLjY2LTg2LjF6TTI1NiAyNzIuMjRjLTExNC44OCAwLTIwOC0yOC42OS0yMDgtNjQuMDlzOTMuMTItNjQuMDggMjA4LTY0LjA4YzE3LjE1IDAgMzMuNzMuNzEgNDkuNjggMS45MWwtNzIuODEgNDdhMTYgMTYgMCAwIDAtNC40MyAyMi4xOWw4Ljg3IDEzLjMxYTE2IDE2IDAgMCAwIDIyLjE5IDQuNDRsMTE4LjY0LTc2LjUyQzQzMC4wOSAxNjggNDY0IDE4Ni44NCA0NjQgMjA4LjE1YzAgMzUuNC05My4xMyA2NC4wOS0yMDggNjQuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW1zdGlja0JpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYyLjggNDkuNTdhMTY5LjQ0IDE2OS40NCAwIDAgMC0yMzkuNSAwQzE4Ny44MiA4NSAxNjAuMTMgMTI4IDE2MC4xMyAxOTJ2ODUuODNsLTQwLjYyIDQwLjU5Yy05LjcgOS42OS0yNCAxMS4wNy0zNi43OCA2YTYwLjMzIDYwLjMzIDAgMCAwLTY1IDk4LjcyQzMzIDQzOC4zOSA1NC4yNCA0NDIuNyA3My44NSA0MzguMjFjLTQuNSAxOS42LS4xOCA0MC44MyAxNS4xIDU2LjFhNjAuMzUgNjAuMzUgMCAwIDAgOTguOC02NWMtNS4wOS0xMi43My0zLjcyLTI3IDYtMzYuNzVMMjM0LjM2IDM1Mmg4NS44OWExODcuODcgMTg3Ljg3IDAgMCAwIDYxLjg5LTEwYy0zOS42NC00My44OS0zOS44My0xMTAuMjMgMS4wNS0xNTEuMDcgMzQuMzgtMzQuMzYgODYuNzYtMzkuNDYgMTI4Ljc0LTE2LjggMS4zLTQ0Ljk2LTE0LjgxLTkwLjI4LTQ5LjEzLTEyNC41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVtYmJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA0IDk2SDU2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxMDRIOGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgyNHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0em01MjggMTI4aC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjg4aDI0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04ek00NTYgMzJoLTQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxNjhIMjU2VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0aC00OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDAwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjI4OGgxMjh2MTY4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEdW1wc3RlckZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE4LjcgMTA0LjFsLjItLjItMTQuNC03MkgzMDR2MTI4aDYwLjhjMTYuMi0xOS4zIDM0LjItMzguMiA1My45LTU1Ljh6TTI3MiAzMkgxNzEuNWwtMjUuNiAxMjhIMjcyVjMyem0xODkuMyA3Mi4xYzE4LjIgMTYuMyAzNS41IDMzLjcgNTEuMSA1MS41IDUuNy01LjYgMTEuNC0xMS4xIDE3LjMtMTYuM2wyMS4zLTE5IDIxLjMgMTljMS4xLjkgMi4xIDIuMSAzLjEgMy4xLS4xLS44LjItMS41IDAtMi4zbC0yNC05NkM1NDkuNyAzNyA1NDMuMyAzMiA1MzYgMzJoLTk4LjlsMTIuMyA2MS41IDExLjkgMTAuNnpNMTYgMTYwaDk3LjNsMjUuNi0xMjhINDBjLTcuMyAwLTEzLjcgNS0xNS41IDEyLjFsLTI0IDk2Qy0yIDE1MC4yIDUuNiAxNjAgMTYgMTYwem0zMjQuNiAzMkgzMmw0IDMySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDI4bDIwIDE2MHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgyMDguOGMtMzAuMi0zMy43LTQ4LjgtNzcuOS00OC44LTEyNi40IDAtMzUuOSAxOS45LTgyLjkgNTIuNi0xMjkuNnptMjEwLjUtMjguOGMtMTQuOSAxMy4zLTI4LjMgMjcuMi00MC4yIDQxLjItMTkuNS0yNS44LTQzLjYtNTItNzEtNzYuNC03MC4yIDYyLjctMTIwIDE0NC4zLTEyMCAxOTMuNiAwIDg3LjUgNzEuNiAxNTguNCAxNjAgMTU4LjRzMTYwLTcwLjkgMTYwLTE1OC40Yy4xLTM2LjYtMzctMTEyLjItODguOC0xNTguNHptLTE4LjYgMjI5LjRjLTE0LjcgMTAuNy0zMi45IDE3LTUyLjUgMTctNDkgMC04OC45LTMzLjUtODguOS04OCAwLTI3LjEgMTYuNS01MSA0OS40LTkxLjkgNC43IDUuNiA2Ny4xIDg4LjEgNjcuMSA4OC4xbDM5LjgtNDdjMi44IDQuOCA1LjQgOS41IDcuNyAxNCAxOC42IDM2LjcgMTAuOCA4My42LTIyLjYgMTA3Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUR1bXBzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MCAxNjBjMTAuNCAwIDE4LTkuOCAxNS41LTE5LjlsLTI0LTk2QzU0OS43IDM3IDU0My4zIDMyIDUzNiAzMmgtOTguOWwyNS42IDEyOEg1NjB6TTI3MiAzMkgxNzEuNWwtMjUuNiAxMjhIMjcyVjMyem0xMzIuNSAwSDMwNHYxMjhoMTI2LjFMNDA0LjUgMzJ6TTE2IDE2MGg5Ny4zbDI1LjYtMTI4SDQwYy03LjMgMC0xMy43IDUtMTUuNSAxMi4xbC0yNCA5NkMtMiAxNTAuMiA1LjYgMTYwIDE2IDE2MHptNTQ0IDY0aC0yMGw0LTMySDMybDQgMzJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMjhsMjAgMTYwdjE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTE2aDMyMHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmwyMC0xNjBoMjhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUR1bmdlb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LjczIDE5NS4zMmwtODIuODEtNTEuNzZjLTguMDQtNS4wMi0xOC45OS0yLjE3LTIyLjkzIDYuNDVBMjU0LjE5IDI1NC4xOSAwIDAgMCAuNTQgMjM5LjI4Qy0uMDUgMjQ4LjM3IDcuNTkgMjU2IDE2LjY5IDI1Nmg5Ny4xM2M3Ljk2IDAgMTQuMDgtNi4yNSAxNS4wMS0xNC4xNiAxLjA5LTkuMzMgMy4yNC0xOC4zMyA2LjI0LTI2Ljk0IDIuNTYtNy4zNC4yNS0xNS40Ni02LjM0LTE5LjU4ek0zMTkuMDMgOEMyOTguODYgMi44MiAyNzcuNzcgMCAyNTYgMHMtNDIuODYgMi44Mi02My4wMyA4Yy05LjE3IDIuMzUtMTMuOTEgMTIuNi0xMC4zOSAyMS4zOWwzNy40NyAxMDQuMDNBMTYuMDAzIDE2LjAwMyAwIDAgMCAyMzUuMSAxNDRoNDEuOGM2Ljc1IDAgMTIuNzctNC4yMyAxNS4wNS0xMC41OGwzNy40Ny0xMDQuMDNjMy41Mi04Ljc5LTEuMjItMTkuMDMtMTAuMzktMjEuMzl6TTExMiAyODhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptMCAxMjhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptNzcuMzEtMjgzLjY3bC0zNi4zMi05MC44Yy0zLjUzLTguODMtMTQuMTMtMTIuOTktMjIuNDItOC4zMWEyNTcuMzA4IDI1Ny4zMDggMCAwIDAtNzEuNjEgNTkuODljLTYuMDYgNy4zMi0zLjg1IDE4LjQ4IDQuMjIgMjMuNTJsODIuOTMgNTEuODNjNi41MSA0LjA3IDE0LjY2IDIuNjIgMjAuMTEtMi43OSA1LjE4LTUuMTUgMTAuNzktOS44NSAxNi43OS0xNC4wNSA2LjI4LTQuNDEgOS4xNS0xMi4xNyA2LjMtMTkuMjl6TTM5OC4xOCAyNTZoOTcuMTNjOS4xIDAgMTYuNzQtNy42MyAxNi4xNS0xNi43MmEyNTQuMTM1IDI1NC4xMzUgMCAwIDAtMjIuNDUtODkuMjdjLTMuOTQtOC42Mi0xNC44OS0xMS40Ny0yMi45My02LjQ1bC04Mi44MSA1MS43NmMtNi41OSA0LjEyLTguOSAxMi4yNC02LjM0IDE5LjU4IDMuMDEgOC42MSA1LjE1IDE3LjYyIDYuMjQgMjYuOTQuOTMgNy45MSA3LjA1IDE0LjE2IDE1LjAxIDE0LjE2em01NC44NS0xNjIuODlhMjU3LjMwOCAyNTcuMzA4IDAgMCAwLTcxLjYxLTU5Ljg5Yy04LjI4LTQuNjgtMTguODgtLjUyLTIyLjQyIDguMzFsLTM2LjMyIDkwLjhjLTIuODUgNy4xMi4wMiAxNC44OCA2LjMgMTkuMjggNiA0LjIgMTEuNjEgOC45IDE2Ljc5IDE0LjA1IDUuNDQgNS40MSAxMy42IDYuODYgMjAuMTEgMi43OWw4Mi45My01MS44M2M4LjA3LTUuMDMgMTAuMjktMTYuMTkgNC4yMi0yMy41MXpNNDk2IDI4OGgtOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptMCAxMjhoLTk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg5NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNjRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTI0MCAxNzcuNjJWNDcyYzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04VjE3Ny42MmMtNS4yMy0uODktMTAuNTItMS42Mi0xNi0xLjYycy0xMC43Ny43My0xNiAxLjYyem0tNjQgNDEuNTFWNDcyYzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04VjE4OS4zNmMtMTIuNzggNy40NS0yMy44NCAxNy40Ny0zMiAyOS43N3ptMTI4LTI5Ljc3VjQ3MmMwIDQuNDIgMy41OCA4IDggOGgxNmM0LjQyIDAgOC0zLjU4IDgtOFYyMTkuMTNjLTguMTYtMTIuMy0xOS4yMi0yMi4zMi0zMi0yOS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDIuNiA4My4ybDkwLjIgOTAuMmMzLjggMy44IDMuOCAxMCAwIDEzLjhMMjc0LjQgNDA1LjZsLTkyLjggMTAuM2MtMTIuNCAxLjQtMjIuOS05LjEtMjEuNS0yMS41bDEwLjMtOTIuOEwzODguOCA4My4yYzMuOC0zLjggMTAtMy44IDEzLjggMHptMTYyLTIyLjlsLTQ4LjgtNDguOGMtMTUuMi0xNS4yLTM5LjktMTUuMi01NS4yIDBsLTM1LjQgMzUuNGMtMy44IDMuOC0zLjggMTAgMCAxMy44bDkwLjIgOTAuMmMzLjggMy44IDEwIDMuOCAxMy44IDBsMzUuNC0zNS40YzE1LjItMTUuMyAxNS4yLTQwIDAtNTUuMnpNMzg0IDM0Ni4yVjQ0OEg2NFYxMjhoMjI5LjhjMy4yIDAgNi4yLTEuMyA4LjUtMy41bDQwLTQwYzcuNi03LjYgMi4yLTIwLjUtOC41LTIwLjVINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDYuMmMwLTEwLjctMTIuOS0xNi0yMC41LTguNWwtNDAgNDBjLTIuMiAyLjMtMy41IDUuMy0zLjUgOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFZ2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBDODYgMCAwIDIxNCAwIDMyMHM4NiAxOTIgMTkyIDE5MiAxOTItODYgMTkyLTE5MlMyOTggMCAxOTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM4NHY2NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMnYtNjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyaDM4NGMxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJ6TTQ4LjA1MyAzMjBoMzUxLjg4NmM0MS42NTEgMCA2My41ODEtNDkuNjc0IDM1LjM4My04MC40MzVMMjU5LjM4MyA0Ny41NThjLTE5LjAxNC0yMC43NDMtNTEuNzUxLTIwLjc0NC03MC43NjcgMEwxMi42NyAyMzkuNTY1Qy0xNS40NzUgMjcwLjI2OCA2LjMyNCAzMjAgNDguMDUzIDMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxsaXBzaXNIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyOCAyNTZjMCAzOS44LTMyLjIgNzItNzIgNzJzLTcyLTMyLjItNzItNzIgMzIuMi03MiA3Mi03MiA3MiAzMi4yIDcyIDcyem0xMDQtNzJjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyem0tMzUyIDBjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxpcHNpc1YgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDE5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMTg0YzM5LjggMCA3MiAzMi4yIDcyIDcycy0zMi4yIDcyLTcyIDcyLTcyLTMyLjItNzItNzIgMzIuMi03MiA3Mi03MnpNMjQgODBjMCAzOS44IDMyLjIgNzIgNzIgNzJzNzItMzIuMiA3Mi03MlMxMzUuOCA4IDk2IDggMjQgNDAuMiAyNCA4MHptMCAzNTJjMCAzOS44IDMyLjIgNzIgNzIgNzJzNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyLTcyIDMyLjItNzIgNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3BlT3BlblRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDIxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6bS0xNiA4MGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZ6bTk2IDEyMS4xM2MtMTYuNDIgMC0zMi44NC01LjA2LTQ2Ljg2LTE1LjE5TDAgMjUwLjg2VjQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjI1MC44NkwzMDIuODYgNDAxLjk0Yy0xNC4wMiAxMC4xMi0zMC40NCAxNS4xOS00Ni44NiAxNS4xOXptMjM3LjYxLTI1NC4xOGMtOC44NS02Ljk0LTE3LjI0LTEzLjQ3LTI5LjYxLTIyLjgxVjk2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTc3LjU1Yy0zLjA0LTIuMi01Ljg3LTQuMjYtOS4wNC02LjU2QzMxMi42IDI5LjE3IDI3OS4yLS4zNSAyNTYgMGMtMjMuMi0uMzUtNTYuNTkgMjkuMTctNzMuNDEgNDEuNDQtMy4xNyAyLjMtNiA0LjM2LTkuMDQgNi41Nkg5NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0NC4xNGMtMTIuMzcgOS4zMy0yMC43NiAxNS44Ny0yOS42MSAyMi44MUE0Ny45OTUgNDcuOTk1IDAgMCAwIDAgMjAwLjcydjEwLjY1bDk2IDY5LjM1Vjk2aDMyMHYxODQuNzJsOTYtNjkuMzV2LTEwLjY1YzAtMTQuNzQtNi43OC0yOC42Ny0xOC4zOS0zNy43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA0NjRjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYyMDAuNzI0YTQ4IDQ4IDAgMCAxIDE4LjM4Ny0zNy43NzZjMjQuOTEzLTE5LjUyOSA0NS41MDEtMzUuMzY1IDE2NC4yLTEyMS41MTFDMTk5LjQxMiAyOS4xNyAyMzIuNzk3LS4zNDcgMjU2IC4wMDNjMjMuMTk4LS4zNTQgNTYuNTk2IDI5LjE3MiA3My40MTMgNDEuNDMzIDExOC42ODcgODYuMTM3IDEzOS4zMDMgMTAxLjk5NSAxNjQuMiAxMjEuNTEyQTQ4IDQ4IDAgMCAxIDUxMiAyMDAuNzI0VjQ2NHptLTY1LjY2Ni0xOTYuNjA1Yy0yLjU2My0zLjcyOC03LjctNC41OTUtMTEuMzM5LTEuOTA3LTIyLjg0NSAxNi44NzMtNTUuNDYyIDQwLjcwNS0xMDUuNTgyIDc3LjA3OS0xNi44MjUgMTIuMjY2LTUwLjIxIDQxLjc4MS03My40MTMgNDEuNDMtMjMuMjExLjM0NC01Ni41NTktMjkuMTQzLTczLjQxMy00MS40My01MC4xMTQtMzYuMzctODIuNzM0LTYwLjIwNC0xMDUuNTgyLTc3LjA3OS0zLjYzOS0yLjY4OC04Ljc3Ni0xLjgyMS0xMS4zMzkgMS45MDdsLTkuMDcyIDEzLjE5NmE3Ljk5OCA3Ljk5OCAwIDAgMCAxLjgzOSAxMC45NjdjMjIuODg3IDE2Ljg5OSA1NS40NTQgNDAuNjkgMTA1LjMwMyA3Ni44NjggMjAuMjc0IDE0Ljc4MSA1Ni41MjQgNDcuODEzIDkyLjI2NCA0Ny41NzMgMzUuNzI0LjI0MiA3MS45NjEtMzIuNzcxIDkyLjI2My00Ny41NzMgNDkuODUtMzYuMTc5IDgyLjQxOC01OS45NyAxMDUuMzAzLTc2Ljg2OGE3Ljk5OCA3Ljk5OCAwIDAgMCAxLjgzOS0xMC45NjdsLTkuMDcxLTEzLjE5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0xNzguMTE3IDI2Mi4xMDRDODcuNDI5IDE5Ni4yODcgODguMzUzIDE5Ni4xMjEgNjQgMTc3LjE2N1YxNTJjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDI3MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MjUuMTY3Yy0yNC4zNzEgMTguOTY5LTIzLjQzNCAxOS4xMjQtMTE0LjExNyA4NC45MzgtMTAuNSA3LjY1NS0zMS4zOTIgMjYuMTItNDUuODgzIDI1Ljg5NC0xNC41MDMuMjE4LTM1LjM2Ny0xOC4yMjctNDUuODgzLTI1Ljg5NXpNMzg0IDIxNy43NzVWMzYwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEg4OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjIxNy43NzVjMTMuOTU4IDEwLjc5NCAzMy4zMjkgMjUuMjM2IDk1LjMwMyA3MC4yMTQgMTQuMTYyIDEwLjM0MSAzNy45NzUgMzIuMTQ1IDY0LjY5NCAzMi4wMSAyNi44ODcuMTM0IDUxLjAzNy0yMi4wNDEgNjQuNzItMzIuMDI1IDYxLjk1OC00NC45NjUgODEuMzI1LTU5LjQwNiA5NS4yODMtNzAuMTk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuMyAxOTAuOGMzLjktMy4xIDkuNy0uMiA5LjcgNC43VjQwMGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTk1LjZjMC01IDUuNy03LjggOS43LTQuNyAyMi40IDE3LjQgNTIuMSAzOS41IDE1NC4xIDExMy42IDIxLjEgMTUuNCA1Ni43IDQ3LjggOTIuMiA0Ny42IDM1LjcuMyA3Mi0zMi44IDkyLjMtNDcuNiAxMDItNzQuMSAxMzEuNi05Ni4zIDE1NC0xMTMuN3pNMjU2IDMyMGMyMy4yLjQgNTYuNi0yOS4yIDczLjQtNDEuNCAxMzIuNy05Ni4zIDE0Mi44LTEwNC43IDE3My40LTEyOC43IDUuOC00LjUgOS4yLTExLjUgOS4yLTE4Ljl2LTE5YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjE5YzAgNy40IDMuNCAxNC4zIDkuMiAxOC45IDMwLjYgMjMuOSA0MC43IDMyLjQgMTczLjQgMTI4LjcgMTYuOCAxMi4yIDUwLjIgNDEuOCA3My40IDQxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVxdWFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzA0SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzg0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAtMTkySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzg0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVyYXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOTQxIDI3My45NDFjMTguNzQ1LTE4Ljc0NSAxOC43NDUtNDkuMTM3IDAtNjcuODgybC0xNjAtMTYwYy0xOC43NDUtMTguNzQ1LTQ5LjEzNi0xOC43NDYtNjcuODgzIDBsLTI1NiAyNTZjLTE4Ljc0NSAxOC43NDUtMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4Mmw5NiA5NkE0OC4wMDQgNDguMDA0IDAgMCAwIDE0NCA0ODBoMzU2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMzU1Ljg4M2wxNDIuMDU4LTE0Mi4wNTl6bS0zMDIuNjI3LTYyLjYyN2wxMzcuMzczIDEzNy4zNzNMMjY1LjM3MyA0MTZIMTUwLjYyOGwtODAtODAgMTI0LjY4Ni0xMjQuNjg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdGhlcm5ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMTkyaC00OHYtNDhjMC04LjgtNy4yLTE2LTE2LTE2aC00OFY4MGMwLTguOC03LjItMTYtMTYtMTZIMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZ2NDhIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djIyNGMwIDguOCA3LjIgMTYgMTYgMTZoODBWMzIwaDMydjEyOGg2NFYzMjBoMzJ2MTI4aDY0VjMyMGgzMnYxMjhoNjRWMzIwaDMydjEyOGg4MGM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXVyb1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEwLjcwNiA0MTMuNzY1Yy0xLjMxNC02LjYzLTcuODM1LTEwLjg3Mi0xNC40MjQtOS4zNjktMTAuNjkyIDIuNDM5LTI3LjQyMiA1LjQxMy00NS40MjYgNS40MTMtNTYuNzYzIDAtMTAxLjkyOS0zNC43OS0xMjEuNDYxLTg1LjQ0OWgxMTMuNjg5YTEyIDEyIDAgMCAwIDExLjcwOC05LjM2OWw2LjM3My0yOC4zNmMxLjY4Ni03LjUwMi00LjAxOS0xNC42MzEtMTEuNzA4LTE0LjYzMUgxMTUuMjJjLTEuMjEtMTQuMzI4LTEuNDE0LTI4LjI4Ny4xMzctNDIuMjQ1SDI2MS45NWExMiAxMiAwIDAgMCAxMS43MjMtOS40MzRsNi41MTItMjkuNzU1YzEuNjM4LTcuNDg0LTQuMDYxLTE0LjU2Ni0xMS43MjMtMTQuNTY2SDEzMC4xODRjMjAuNjMzLTQ0Ljk5MSA2Mi42OS03NS4wMyAxMTcuNjE5LTc1LjAzIDE0LjQ4NiAwIDI4LjU2NCAyLjI1IDM3Ljg1MSA0LjE0NSA2LjIxNiAxLjI2OCAxMi4zNDctMi40OTggMTQuMDAyLTguNjIzbDExLjk5MS00NC4zNjhjMS44MjItNi43NDEtMi40NjUtMTMuNjE2LTkuMzI2LTE0LjkxN0MyOTAuMjE3IDM0LjkxMiAyNzAuNzEgMzIgMjQ5LjYzNSAzMiAxNTIuNDUxIDMyIDc0LjAzIDkyLjI1MiA0NS4wNzUgMTc2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI5Ljc1NWMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIxLjU2OWMtMS4wMDkgMTMuNjA3LTEuMTgxIDI5LjI4Ny0uMTgxIDQyLjI0NUgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOC4zNmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDMwLjExNEM2Ny4xMzkgNDE0LjY5MiAxNDUuMjY0IDQ4MCAyNDkuNjM1IDQ4MGMyNi4zMDEgMCA0OC41NjItNC41NDQgNjEuMTAxLTcuNzg4IDYuMTY3LTEuNTk1IDEwLjAyNy03LjcwOCA4Ljc4OC0xMy45NTdsLTguODE4LTQ0LjQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNoYW5nZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2OHYtMTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDM2MFY4MGMwLTIxLjM2NyAyNS44OTktMzIuMDQyIDQwLjk3MS0xNi45NzFsODAgODBjOS4zNzIgOS4zNzMgOS4zNzIgMjQuNTY5IDAgMzMuOTQxbC04MCA4MEM0MDkuOTU2IDI3MS45ODIgMzg0IDI2MS40NTYgMzg0IDI0MHYtNDhIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHptNDg4IDE1MkgxMjh2LTQ4YzAtMjEuMzE0LTI1Ljg2Mi0zMi4wOC00MC45NzEtMTYuOTcxbC04MCA4MGMtOS4zNzIgOS4zNzMtOS4zNzIgMjQuNTY5IDAgMzMuOTQxbDgwIDgwQzEwMi4wNTcgNDYzLjk5NyAxMjggNDUzLjQzNyAxMjggNDMydi00OGgzNjBjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4Y2xhbWF0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTk3LTExMS4wNDMgMjQ4LTI0OCAyNDhTOCAzOTIuOTk3IDggMjU2QzggMTE5LjA4MyAxMTkuMDQzIDggMjU2IDhzMjQ4IDExMS4wODMgMjQ4IDI0OHptLTI0OCA1MGMtMjUuNDA1IDAtNDYgMjAuNTk1LTQ2IDQ2czIwLjU5NSA0NiA0NiA0NiA0Ni0yMC41OTUgNDYtNDYtMjAuNTk1LTQ2LTQ2LTQ2em0tNDMuNjczLTE2NS4zNDZsNy40MTggMTM2Yy4zNDcgNi4zNjQgNS42MDkgMTEuMzQ2IDExLjk4MiAxMS4zNDZoNDguNTQ2YzYuMzczIDAgMTEuNjM1LTQuOTgyIDExLjk4Mi0xMS4zNDZsNy40MTgtMTM2Yy4zNzUtNi44NzQtNS4wOTgtMTIuNjU0LTExLjk4Mi0xMi42NTRoLTYzLjM4M2MtNi44ODQgMC0xMi4zNTYgNS43OC0xMS45ODEgMTIuNjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNsYW1hdGlvblRyaWFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2OS41MTcgNDQwLjAxM0M1ODcuOTc1IDQ3Mi4wMDcgNTY0LjgwNiA1MTIgNTI3Ljk0IDUxMkg0OC4wNTRjLTM2LjkzNyAwLTU5Ljk5OS00MC4wNTUtNDEuNTc3LTcxLjk4N0wyNDYuNDIzIDIzLjk4NWMxOC40NjctMzIuMDA5IDY0LjcyLTMxLjk1MSA4My4xNTQgMGwyMzkuOTQgNDE2LjAyOHpNMjg4IDM1NGMtMjUuNDA1IDAtNDYgMjAuNTk1LTQ2IDQ2czIwLjU5NSA0NiA0NiA0NiA0Ni0yMC41OTUgNDYtNDYtMjAuNTk1LTQ2LTQ2LTQ2em0tNDMuNjczLTE2NS4zNDZsNy40MTggMTM2Yy4zNDcgNi4zNjQgNS42MDkgMTEuMzQ2IDExLjk4MiAxMS4zNDZoNDguNTQ2YzYuMzczIDAgMTEuNjM1LTQuOTgyIDExLjk4Mi0xMS4zNDZsNy40MTgtMTM2Yy4zNzUtNi44NzQtNS4wOTgtMTIuNjU0LTExLjk4Mi0xMi42NTRoLTYzLjM4M2MtNi44ODQgMC0xMi4zNTYgNS43OC0xMS45ODEgMTIuNjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgNDMyYzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6TTI1LjI2IDI1LjE5OWwxMy42IDI3MkMzOS40OTkgMzA5Ljk3MiA1MC4wNDEgMzIwIDYyLjgzIDMyMGg2Ni4zNGMxMi43ODkgMCAyMy4zMzEtMTAuMDI4IDIzLjk3LTIyLjgwMWwxMy42LTI3MkMxNjcuNDI1IDExLjQ5IDE1Ni40OTYgMCAxNDIuNzcgMEg0OS4yM0MzNS41MDQgMCAyNC41NzUgMTEuNDkgMjUuMjYgMjUuMTk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEyLjY4NiAzMTUuMzE0TDEyMCA0MDhsMzIuOTIyIDMxLjAyOWMxNS4xMiAxNS4xMiA0LjQxMiA0MC45NzEtMTYuOTcgNDAuOTcxaC0xMTJDMTAuNjk3IDQ4MCAwIDQ2OS4yNTUgMCA0NTZWMzQ0YzAtMjEuMzgyIDI1LjgwMy0zMi4wOSA0MC45MjItMTYuOTcxTDcyIDM2MGw5Mi42ODYtOTIuNjg2YzYuMjQ4LTYuMjQ4IDE2LjM3OS02LjI0OCAyMi42MjcgMGwyNS4zNzMgMjUuMzczYzYuMjQ5IDYuMjQ4IDYuMjQ5IDE2LjM3OCAwIDIyLjYyN3ptMjIuNjI4LTExOC42MjhMMzI4IDEwNGwtMzIuOTIyLTMxLjAyOUMyNzkuOTU4IDU3Ljg1MSAyOTAuNjY2IDMyIDMxMi4wNDggMzJoMTEyQzQzNy4zMDMgMzIgNDQ4IDQyLjc0NSA0NDggNTZ2MTEyYzAgMjEuMzgyLTI1LjgwMyAzMi4wOS00MC45MjIgMTYuOTcxTDM3NiAxNTJsLTkyLjY4NiA5Mi42ODZjLTYuMjQ4IDYuMjQ4LTE2LjM3OSA2LjI0OC0yMi42MjcgMGwtMjUuMzczLTI1LjM3M2MtNi4yNDktNi4yNDgtNi4yNDktMTYuMzc4IDAtMjIuNjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmRBcnJvd3NBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM0NHYxMTJhMjMuOTQgMjMuOTQgMCAwIDEtMjQgMjRIMzEyYy0yMS4zOSAwLTMyLjA5LTI1LjktMTctNDFsMzYuMi0zNi4yTDIyNCAyOTUuNiAxMTYuNzcgNDAyLjkgMTUzIDQzOWMxNS4wOSAxNS4xIDQuMzkgNDEtMTcgNDFIMjRhMjMuOTQgMjMuOTQgMCAwIDEtMjQtMjRWMzQ0YzAtMjEuNCAyNS44OS0zMi4xIDQxLTE3bDM2LjE5IDM2LjJMMTg0LjQ2IDI1NiA3Ny4xOCAxNDguNyA0MSAxODVjLTE1LjEgMTUuMS00MSA0LjQtNDEtMTdWNTZhMjMuOTQgMjMuOTQgMCAwIDEgMjQtMjRoMTEyYzIxLjM5IDAgMzIuMDkgMjUuOSAxNyA0MWwtMzYuMiAzNi4yTDIyNCAyMTYuNGwxMDcuMjMtMTA3LjNMMjk1IDczYy0xNS4wOS0xNS4xLTQuMzktNDEgMTctNDFoMTEyYTIzLjk0IDIzLjk0IDAgMCAxIDI0IDI0djExMmMwIDIxLjQtMjUuODkgMzIuMS00MSAxN2wtMzYuMTktMzYuMkwyNjMuNTQgMjU2bDEwNy4yOCAxMDcuM0w0MDcgMzI3LjFjMTUuMS0xNS4yIDQxLTQuNSA0MSAxNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxODBWNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTI0YzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJINjR2ODRjMCA2LjYtNS40IDEyLTEyIDEySDEyYy02LjYgMC0xMi01LjQtMTItMTJ6TTI4OCA0NHY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoODR2ODRjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMDBjLTYuNiAwLTEyIDUuNC0xMiAxMnptMTQ4IDI3NmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY4NGgtODRjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTI0YzEzLjMgMCAyNC0xMC43IDI0LTI0VjMzMmMwLTYuNi01LjQtMTItMTItMTJ6TTE2MCA0Njh2LTQwYzAtNi42LTUuNC0xMi0xMi0xMkg2NHYtODRjMC02LjYtNS40LTEyLTEyLTEySDEyYy02LjYgMC0xMiA1LjQtMTIgMTJ2MTI0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEyNGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4dGVybmFsTGlua0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIsMzIwSDQwMGExNiwxNiwwLDAsMC0xNiwxNlY0NDhINjRWMTI4SDIwOGExNiwxNiwwLDAsMCwxNi0xNlY4MGExNiwxNiwwLDAsMC0xNi0xNkg0OEE0OCw0OCwwLDAsMCwwLDExMlY0NjRhNDgsNDgsMCwwLDAsNDgsNDhINDAwYTQ4LDQ4LDAsMCwwLDQ4LTQ4VjMzNkExNiwxNiwwLDAsMCw0MzIsMzIwWk00ODgsMGgtMTI4Yy0yMS4zNywwLTMyLjA1LDI1LjkxLTE3LDQxbDM1LjczLDM1LjczTDEzNSwzMjAuMzdhMjQsMjQsMCwwLDAsMCwzNEwxNTcuNjcsMzc3YTI0LDI0LDAsMCwwLDM0LDBMNDM1LjI4LDEzMy4zMiw0NzEsMTY5YzE1LDE1LDQxLDQuNSw0MS0xN1YyNEEyNCwyNCwwLDAsMCw0ODgsMFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXh0ZXJuYWxMaW5rU3F1YXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA4MHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4em0tODggMTZIMjQ4LjAyOWMtMjEuMzEzIDAtMzIuMDggMjUuODYxLTE2Ljk3MSA0MC45NzFsMzEuOTg0IDMxLjk4N0w2Ny41MTUgMzY0LjQ4NWMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDMxLjAyOSAzMS4wMjljNC42ODcgNC42ODYgMTIuMjg1IDQuNjg2IDE2Ljk3MSAwbDE5NS41MjYtMTk1LjUyNiAzMS45ODggMzEuOTkxQzM1OC4wNTggMjYzLjk3NyAzODQgMjUzLjQyNSAzODQgMjMxLjk3OVYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWVEcm9wcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwLjc1IDMzMy4yNWMtMTIgMTItMTguNzUgMjguMjgtMTguNzUgNDUuMjZWNDI0TDAgNDgwbDMyIDMyIDU2LTMyaDQ1LjQ5YzE2Ljk3IDAgMzMuMjUtNi43NCA0NS4yNS0xOC43NGwxMjYuNjQtMTI2LjYyLTEyOC0xMjhMNTAuNzUgMzMzLjI1ek00ODMuODggMjguMTJjLTM3LjQ3LTM3LjUtOTguMjgtMzcuNS0xMzUuNzUgMGwtNzcuMDkgNzcuMDktMTMuMS0xMy4xYy05LjQ0LTkuNDQtMjQuNjUtOS4zMS0zMy45NCAwbC00MC45NyA0MC45N2MtOS4zNyA5LjM3LTkuMzcgMjQuNTcgMCAzMy45NGwxNjEuOTQgMTYxLjk0YzkuNDQgOS40NCAyNC42NSA5LjMxIDMzLjk0IDBMNDE5Ljg4IDI4OGM5LjM3LTkuMzcgOS4zNy0yNC41NyAwLTMzLjk0bC0xMy4xLTEzLjEgNzcuMDktNzcuMDljMzcuNTEtMzcuNDggMzcuNTEtOTguMjYuMDEtMTM1Ljc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDAwYy03NS44NSAwLTEzNy4yNS01OC43MS0xNDIuOS0xMzMuMTFMNzIuMiAxODUuODJjLTEzLjc5IDE3LjMtMjYuNDggMzUuNTktMzYuNzIgNTUuNTlhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM4OS43MSAzNzYuNDEgMTk3LjA3IDQ0OCAzMjAgNDQ4YzI2LjkxIDAgNTIuODctNCA3Ny44OS0xMC40NkwzNDYgMzk3LjM5YTE0NC4xMyAxNDQuMTMgMCAwIDEtMjYgMi42MXptMzEzLjgyIDU4LjFsLTExMC41NS04NS40NGEzMzEuMjUgMzMxLjI1IDAgMCAwIDgxLjI1LTEwMi4wNyAzMi4zNSAzMi4zNSAwIDAgMCAwLTI5LjE5QzU1MC4yOSAxMzUuNTkgNDQyLjkzIDY0IDMyMCA2NGEzMDguMTUgMzA4LjE1IDAgMCAwLTE0Ny4zMiAzNy43TDQ1LjQ2IDMuMzdBMTYgMTYgMCAwIDAgMjMgNi4xOEwzLjM3IDMxLjQ1QTE2IDE2IDAgMCAwIDYuMTggNTMuOWw1ODguMzYgNDU0LjczYTE2IDE2IDAgMCAwIDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdhMTYgMTYgMCAwIDAtMi44Mi0yMi40NXptLTE4My43Mi0xNDJsLTM5LjMtMzAuMzhBOTQuNzUgOTQuNzUgMCAwIDAgNDE2IDI1NmE5NC43NiA5NC43NiAwIDAgMC0xMjEuMzEtOTIuMjFBNDcuNjUgNDcuNjUgMCAwIDEgMzA0IDE5MmE0Ni42NCA0Ni42NCAwIDAgMS0xLjU0IDEwbC03My42MS01Ni44OUExNDIuMzEgMTQyLjMxIDAgMCAxIDMyMCAxMTJhMTQzLjkyIDE0My45MiAwIDAgMSAxNDQgMTQ0YzAgMjEuNjMtNS4yOSA0MS43OS0xMy45IDYwLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcyLjUyIDI0MS40QzUxOC4yOSAxMzUuNTkgNDEwLjkzIDY0IDI4OCA2NFM1Ny42OCAxMzUuNjQgMy40OCAyNDEuNDFhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM1Ny43MSAzNzYuNDEgMTY1LjA3IDQ0OCAyODggNDQ4czIzMC4zMi03MS42NCAyODQuNTItMTc3LjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTl6TTI4OCA0MDBhMTQ0IDE0NCAwIDEgMSAxNDQtMTQ0IDE0My45MyAxNDMuOTMgMCAwIDEtMTQ0IDE0NHptMC0yNDBhOTUuMzEgOTUuMzEgMCAwIDAtMjUuMzEgMy43OSA0Ny44NSA0Ny44NSAwIDAgMS02Ni45IDY2LjlBOTUuNzggOTUuNzggMCAxIDAgMjg4IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Mi41NyAxMjhjLTI4LjA5IDAtNTQuMDkgNC41Mi03Ny4wNiAxMi44NmwxMi40MS0xMjMuMTFDMjg5IDcuMzEgMjc5LjgxLTEuMTggMjY5LjMzLjEzIDE4OS42MyAxMC4xMyAxMjggNzcuNjQgMTI4IDE1OS40M2MwIDI4LjA5IDQuNTIgNTQuMDkgMTIuODYgNzcuMDZMMTcuNzUgMjI0LjA4QzcuMzEgMjIzLTEuMTggMjMyLjE5LjEzIDI0Mi42N2MxMCA3OS43IDc3LjUxIDE0MS4zMyAxNTkuMyAxNDEuMzMgMjguMDkgMCA1NC4wOS00LjUyIDc3LjA2LTEyLjg2bC0xMi40MSAxMjMuMTFjLTEuMDUgMTAuNDMgOC4xMSAxOC45MyAxOC41OSAxNy42MiA3OS43LTEwIDE0MS4zMy03Ny41MSAxNDEuMzMtMTU5LjMgMC0yOC4wOS00LjUyLTU0LjA5LTEyLjg2LTc3LjA2bDEyMy4xMSAxMi40MWMxMC40NCAxLjA1IDE4LjkzLTguMTEgMTcuNjItMTguNTktMTAtNzkuNy03Ny41MS0xNDEuMzMtMTU5LjMtMTQxLjMzek0yNTYgMjg4YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXN0QmFja3dhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0MzZWNzZjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnYxNTEuOUwyMzUuNSA3MS40QzI1Ni4xIDU0LjMgMjg4IDY4LjYgMjg4IDk2djEzMS45TDQ1OS41IDcxLjRDNDgwLjEgNTQuMyA1MTIgNjguNiA1MTIgOTZ2MzIwYzAgMjcuNC0zMS45IDQxLjctNTIuNSAyNC42TDI4OCAyODUuM1Y0MTZjMCAyNy40LTMxLjkgNDEuNy01Mi41IDI0LjZMNjQgMjg1LjNWNDM2YzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgNzZ2MzYwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMlYyODQuMUwyNzYuNSA0NDAuNmMtMjAuNiAxNy4yLTUyLjUgMi44LTUyLjUtMjQuNlYyODQuMUw1Mi41IDQ0MC42QzMxLjkgNDU3LjggMCA0NDMuNCAwIDQxNlY5NmMwLTI3LjQgMzEuOS00MS43IDUyLjUtMjQuNkwyMjQgMjI2LjhWOTZjMC0yNy40IDMxLjktNDEuNyA1Mi41LTI0LjZMNDQ4IDIyNi44Vjc2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhdWNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIsMjU2SDMxMy4zOWMtMTUuNzEtMTMuNDQtMzUuNDYtMjMuMDctNTcuMzktMjhWMTgwLjQ0bC0zMi0zLjM4LTMyLDMuMzhWMjI4Yy0yMS45Myw1LTQxLjY4LDE0LjYtNTcuMzksMjhIMTZBMTYsMTYsMCwwLDAsMCwyNzJ2OTZhMTYsMTYsMCwwLDAsMTYsMTZoOTIuNzlDMTI5LjM4LDQyMS43MywxNzMsNDQ4LDIyNCw0NDhzOTQuNjItMjYuMjcsMTE1LjIxLTY0SDM1MmEzMiwzMiwwLDAsMSwzMiwzMiwzMiwzMiwwLDAsMCwzMiwzMmg2NGEzMiwzMiwwLDAsMCwzMi0zMkExNjAsMTYwLDAsMCwwLDM1MiwyNTZaTTgxLjU5LDE1OS45MWwxNDIuNDEtMTUsMTQyLjQxLDE1YzkuNDIsMSwxNy41OS02LjgxLDE3LjU5LTE2LjhWMTEyLjg5YzAtMTAtOC4xNy0xNy44LTE3LjU5LTE2LjgxTDI1NiwxMDcuNzRWODBhMTYsMTYsMCwwLDAtMTYtMTZIMjA4YTE2LDE2LDAsMCwwLTE2LDE2djI3Ljc0TDgxLjU5LDk2LjA4QzcyLjE3LDk1LjA5LDY0LDEwMi45LDY0LDExMi44OXYzMC4yMkM2NCwxNTMuMSw3Mi4xNywxNjAuOTEsODEuNTksMTU5LjkxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDE2MFY3Ny4yNWEzMiAzMiAwIDAgMC05LjM4LTIyLjYzTDQyNS4zNyA5LjM3QTMyIDMyIDAgMCAwIDQwMi43NSAwSDE2MGEzMiAzMiAwIDAgMC0zMiAzMnY0NDhhMzIgMzIgMCAwIDAgMzIgMzJoMzIwYTMyIDMyIDAgMCAwIDMyLTMyVjE5MmEzMiAzMiAwIDAgMC0zMi0zMnpNMjg4IDQzMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyYTE2IDE2IDAgMCAxIDE2IDE2em0wLTEyOGExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyYTE2IDE2IDAgMCAxIDE2IDE2em0xMjggMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTEySDE5MlY2NGgxNjB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoNDh6TTY0IDEyOEgzMmEzMiAzMiAwIDAgMC0zMiAzMnYzMjBhMzIgMzIgMCAwIDAgMzIgMzJoMzJhMzIgMzIgMCAwIDAgMzItMzJWMTYwYTMyIDMyIDAgMCAwLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGZWF0aGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAwQzQ2MC4yMiAzLjU2IDk2LjQ0IDM4LjIgNzEuMDEgMjg3LjYxYy0zLjA5IDI2LjY2LTQuODQgNTMuNDQtNS45OSA4MC4yNGwxNzguODctMTc4LjY5YzYuMjUtNi4yNSAxNi40LTYuMjUgMjIuNjUgMHM2LjI1IDE2LjM4IDAgMjIuNjNMNy4wNCA0NzEuMDNjLTkuMzggOS4zNy05LjM4IDI0LjU3IDAgMzMuOTQgOS4zOCA5LjM3IDI0LjU5IDkuMzcgMzMuOTggMGw1Ny4xMy01Ny4wN2M0Mi4wOS0uMTQgODQuMTUtMi41MyAxMjUuOTYtNy4zNiA1My40OC01LjQ0IDk3LjAyLTI2LjQ3IDEzMi41OC01Ni41NEgyNTUuNzRsMTQ2Ljc5LTQ4Ljg4YzExLjI1LTE0Ljg5IDIxLjM3LTMwLjcxIDMwLjQ1LTQ3LjEyaC04MS4xNGwxMDYuNTQtNTMuMjFDNTAwLjI5IDEzMi44NiA1MTAuMTkgMjYuMjYgNTEyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlYXRoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY3LjE0IDQ0Ljg0Yy02Mi41NS02Mi40OC0xNjEuNjctNjQuNzgtMjUyLjI4IDI1LjczLTc4LjYxIDc4LjUyLTYwLjk4IDYwLjkyLTg1Ljc1IDg1LjY2LTYwLjQ2IDYwLjM5LTcwLjM5IDE1MC44My02My42NCAyMTEuMTdsMTc4LjQ0LTE3OC4yNWM2LjI2LTYuMjUgMTYuNC02LjI1IDIyLjY1IDBzNi4yNSAxNi4zOCAwIDIyLjYzTDcuMDQgNDcxLjAzYy05LjM4IDkuMzctOS4zOCAyNC41NyAwIDMzLjk0IDkuMzggOS4zNyAyNC42IDkuMzcgMzMuOTggMGw2Ni4xLTY2LjAzQzE1OS40MiA0NTQuNjUgMjc5IDQ1Ny4xMSAzNTMuOTUgMzg0aC05OC4xOWwxNDcuNTctNDkuMTRjNDkuOTktNDkuOTMgMzYuMzgtMzYuMTggNDYuMzEtNDYuODZoLTk3Ljc4bDEzMS41NC00My44YzQ1LjQ0LTc0LjQ2IDM0LjMxLTE0OC44NC0xNi4yNi0xOTkuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlbWFsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMzNS4zNDYgMCA2NCAyOC42NTQgNjQgNjRzLTI4LjY1NCA2NC02NCA2NGMtMzUuMzQ2IDAtNjQtMjguNjU0LTY0LTY0UzkyLjY1NCAwIDEyOCAwbTExOS4yODMgMzU0LjE3OWwtNDgtMTkyQTI0IDI0IDAgMCAwIDE3NiAxNDRoLTExLjM2Yy0yMi43MTEgMTAuNDQzLTQ5LjU5IDEwLjg5NC03My4yOCAwSDgwYTI0IDI0IDAgMCAwLTIzLjI4MyAxOC4xNzlsLTQ4IDE5MkM0LjkzNSAzNjkuMzA1IDE2LjM4MyAzODQgMzIgMzg0aDU2djEwNGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjM4NGg1NmMxNS41OTEgMCAyNy4wNzEtMTQuNjcxIDIzLjI4My0yOS44MjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpZ2h0ZXJKZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDIyNGwtMTI4LTE2LTQ4LTE2aC0yNEwyMjcuMTU4IDQ0aDM5LjUwOUMyNzguMzMzIDQ0IDI4OCA0MS4zNzUgMjg4IDM4cy05LjY2Ny02LTIxLjMzMy02SDE1MnYxMmgxNnYxNjRoLTQ4bC02Ni42NjctODBIMTguNjY3TDggMTM4LjY2N1YyMDhoOHYxNmg0OHYyLjY2NmwtNjQgOHY0Mi42NjdsNjQgOFYyODhIMTZ2MTZIOHY2OS4zMzNMMTguNjY3IDM4NGgzNC42NjdMMTIwIDMwNGg0OHYxNjRoLTE2djEyaDExNC42NjdjMTEuNjY3IDAgMjEuMzMzLTIuNjI1IDIxLjMzMy02cy05LjY2Ny02LTIxLjMzMy02aC0zOS41MDlMMzQ0IDMyMGgyNGw0OC0xNiAxMjgtMTZjOTYtMjEuMzMzIDk2LTI2LjU4MyA5Ni0zMiAwLTUuNDE3IDAtMTAuNjY3LTk2LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjQgMjM2YzAgNi42LTUuNCAxMi0xMiAxMkgxMDhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOGMwLTYuNiA1LjQtMTIgMTItMTJoMTY4YzYuNiAwIDEyIDUuNCAxMiAxMnY4em0wLTY0YzAgNi42LTUuNCAxMi0xMiAxMkgxMDhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOGMwLTYuNiA1LjQtMTIgMTItMTJoMTY4YzYuNiAwIDEyIDUuNCAxMiAxMnY4em0wLTcydjhjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyem05Ni0xMTQuMXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVBcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3NyAxMDVMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXpNMTI4LjQgMzM2Yy0xNy45IDAtMzIuNCAxMi4xLTMyLjQgMjcgMCAxNSAxNC42IDI3IDMyLjUgMjdzMzIuNC0xMi4xIDMyLjQtMjctMTQuNi0yNy0zMi41LTI3ek0yMjQgMTM2VjBoLTYzLjZ2MzJoLTMyVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6TTk1LjkgMzJoMzJ2MzJoLTMyem0zMi4zIDM4NGMtMzMuMiAwLTU4LTMwLjQtNTEuNC02Mi45TDk2LjQgMjU2di0zMmgzMnYtMzJoLTMydi0zMmgzMnYtMzJoLTMyVjk2aDMyVjY0aDMydjMyaC0zMnYzMmgzMnYzMmgtMzJ2MzJoMzJ2MzJoLTMydjMyaDIyLjFjNS43IDAgMTAuNyA0LjEgMTEuOCA5LjdsMTcuMyA4Ny43YzYuNCAzMi40LTE4LjQgNjIuNi01MS40IDYyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bS02NCAyNjhjMCAxMC43LTEyLjkgMTYtMjAuNSA4LjVMMTA0IDM3Nkg3NmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoMjhsMzUuNS0zNi41YzcuNi03LjYgMjAuNS0yLjIgMjAuNSA4LjV2MTM2em0zMy4yLTQ3LjZjOS4xLTkuMyA5LjEtMjQuMSAwLTMzLjQtMjIuMS0yMi44IDEyLjItNTYuMiAzNC40LTMzLjUgMjcuMiAyNy45IDI3LjIgNzIuNCAwIDEwMC40LTIxLjggMjIuMy01Ni45LTEwLjQtMzQuNC0zMy41em04Ni0xMTcuMWM1NC40IDU1LjkgNTQuNCAxNDQuOCAwIDIwMC44LTIxLjggMjIuNC01Ny0xMC4zLTM0LjQtMzMuNSAzNi4yLTM3LjIgMzYuMy05Ni41IDAtMTMzLjgtMjIuMS0yMi44IDEyLjMtNTYuMyAzNC40LTMzLjV6TTM4NCAxMjEuOXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjEuOTQxVjEyOEgyNTZWMGg2LjA1OWM2LjM2NSAwIDEyLjQ3IDIuNTI5IDE2Ljk3MSA3LjAyOWw5Ny45NDEgOTcuOTQxQTI0LjAwNSAyNC4wMDUgMCAwIDEgMzg0IDEyMS45NDF6TTI0OCAxNjBjLTEzLjIgMC0yNC0xMC44LTI0LTI0VjBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHY0NjRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwSDI0OHpNMTIzLjIwNiA0MDAuNTA1YTUuNCA1LjQgMCAwIDEtNy42MzMuMjQ2bC02NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgMC03Ljg3OWw2NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgNy42MzMuMjQ2bDE5LjU3OSAyMC44ODVhNS40IDUuNCAwIDAgMS0uMzcyIDcuNzQ3TDEwMS42NSAzMzZsNDAuNzYzIDM1Ljg3NGE1LjQgNS40IDAgMCAxIC4zNzIgNy43NDdsLTE5LjU3OSAyMC44ODR6bTUxLjI5NSA1MC40NzlsLTI3LjQ1My03Ljk3YTUuNDAyIDUuNDAyIDAgMCAxLTMuNjgxLTYuNjkybDYxLjQ0LTIxMS42MjZhNS40MDIgNS40MDIgMCAwIDEgNi42OTItMy42ODFsMjcuNDUyIDcuOTdhNS40IDUuNCAwIDAgMSAzLjY4IDYuNjkybC02MS40NCAyMTEuNjI2YTUuMzk3IDUuMzk3IDAgMCAxLTYuNjkgMy42ODF6bTE2MC43OTItMTExLjA0NWwtNjQuODY2IDYwLjgxMmE1LjQgNS40IDAgMCAxLTcuNjMzLS4yNDZsLTE5LjU4LTIwLjg4NWE1LjQgNS40IDAgMCAxIC4zNzItNy43NDdMMjg0LjM1IDMzNmwtNDAuNzYzLTM1Ljg3NGE1LjQgNS40IDAgMCAxLS4zNzItNy43NDdsMTkuNTgtMjAuODg1YTUuNCA1LjQgMCAwIDEgNy42MzMtLjI0Nmw2NC44NjYgNjAuODEyYTUuNCA1LjQgMCAwIDEtLjAwMSA3Ljg3OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNvbnRyYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNNjQgNzJjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04Vjcyem0wIDY0YzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6bTE5Mi44MSAyNDhIMzA0YzguODQgMCAxNiA3LjE2IDE2IDE2cy03LjE2IDE2LTE2IDE2aC00Ny4xOWMtMTYuNDUgMC0zMS4yNy05LjE0LTM4LjY0LTIzLjg2LTIuOTUtNS45Mi04LjA5LTYuNTItMTAuMTctNi41MnMtNy4yMi41OS0xMC4wMiA2LjE5bC03LjY3IDE1LjM0YTE1Ljk4NiAxNS45ODYgMCAwIDEtMTQuMzEgOC44NGMtLjM4IDAtLjc1LS4wMi0xLjE0LS4wNS02LjQ1LS40NS0xMi00Ljc1LTE0LjAzLTEwLjg5TDE0NCAzNTQuNTlsLTEwLjYxIDMxLjg4Yy01Ljg5IDE3LjY2LTIyLjM4IDI5LjUzLTQxIDI5LjUzSDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2aDEyLjM5YzQuODMgMCA5LjExLTMuMDggMTAuNjQtNy42NmwxOC4xOS01NC42NGMzLjMtOS44MSAxMi40NC0xNi40MSAyMi43OC0xNi40MXMxOS40OCA2LjU5IDIyLjc3IDE2LjQxbDEzLjg4IDQxLjY0YzE5Ljc3LTE2LjE5IDU0LjA1LTkuNyA2NiAxNC4xNiAyLjAyIDQuMDYgNS45NiA2LjUgMTAuMTYgNi41ek0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDc3YgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0tOTYgMTQ0YzAgNC40Mi0zLjU4IDgtOCA4aC04Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg4YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4aC04Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDhjNC40MiAwIDggMy41OCA4IDh2MTZ6bTQ0LjI3IDEwNEgxNjBjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxMi4yN2M1Ljk1IDAgMTAuNDEtMy41IDEwLjQxLTYuNjIgMC0xLjMtLjc1LTIuNjYtMi4xMi0zLjg0bC0yMS44OS0xOC43N2MtOC40Ny03LjIyLTEzLjMzLTE3LjQ4LTEzLjMzLTI4LjE0IDAtMjEuMyAxOS4wMi0zOC42MiA0Mi40MS0zOC42MkgyMDBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTEyLjI3Yy01Ljk1IDAtMTAuNDEgMy41LTEwLjQxIDYuNjIgMCAxLjMuNzUgMi42NiAyLjEyIDMuODRsMjEuODkgMTguNzdjOC40NyA3LjIyIDEzLjMzIDE3LjQ4IDEzLjMzIDI4LjE0LjAxIDIxLjI5LTE5IDM4LjYyLTQyLjM5IDM4LjYyek0yNTYgMjY0djIwLjhjMCAyMC4yNyA1LjcgNDAuMTcgMTYgNTYuODggMTAuMy0xNi43IDE2LTM2LjYxIDE2LTU2Ljg4VjI2NGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYyMC44YzAgMzUuNDgtMTIuODggNjguODktMzYuMjggOTQuMDktMy4wMiAzLjI1LTcuMjcgNS4xMS0xMS43MiA1LjExcy04LjctMS44Ni0xMS43Mi01LjExYy0yMy40LTI1LjItMzYuMjgtNTguNjEtMzYuMjgtOTQuMDlWMjY0YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4em0xMjEtMTU5TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTc2LjQ1IDIxMS4zNmwtOTYuNDIgOTUuN2MtNi42NSA2LjYxLTE3LjM5IDYuNjEtMjQuMDQgMGwtOTYuNDItOTUuN0M3My40MiAzMzcuMjkgODAuNTQgMzIwIDk0LjgyIDMyMEgxNjB2LTgwYzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djgwaDY1LjE4YzE0LjI4IDAgMjEuNCAxNy4yOSAxMS4yNyAyNy4zNnpNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlRXhjZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02MC4xIDEwNi41TDIyNCAzMzZsNjAuMSA5My41YzUuMSA4LS42IDE4LjUtMTAuMSAxOC41aC0zNC45Yy00LjQgMC04LjUtMi40LTEwLjYtNi4zQzIwOC45IDQwNS41IDE5MiAzNzMgMTkyIDM3M2MtNi40IDE0LjgtMTAgMjAtMzYuNiA2OC44LTIuMSAzLjktNi4xIDYuMy0xMC41IDYuM0gxMTBjLTkuNSAwLTE1LjItMTAuNS0xMC4xLTE4LjVsNjAuMy05My41LTYwLjMtOTMuNWMtNS4yLTggLjYtMTguNSAxMC4xLTE4LjVoMzQuOGM0LjQgMCA4LjUgMi40IDEwLjYgNi4zIDI2LjEgNDguOCAyMCAzMy42IDM2LjYgNjguNSAwIDAgNi4xLTExLjcgMzYuNi02OC41IDIuMS0zLjkgNi4yLTYuMyAxMC42LTYuM0gyNzRjOS41LS4xIDE1LjIgMTAuNCAxMC4xIDE4LjR6TTM4NCAxMjEuOXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVFeHBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDEyMS45YzAtNi4zLTIuNS0xMi40LTctMTYuOUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4ek01NzEgMzA4bC05NS43LTk2LjRjLTEwLjEtMTAuMS0yNy40LTMtMjcuNCAxMS4zVjI4OGgtNjR2NjRoNjR2NjUuMmMwIDE0LjMgMTcuMyAyMS40IDI3LjQgMTEuM0w1NzEgMzMyYzYuNi02LjYgNi42LTE3LjQgMC0yNHptLTM3OSAyOHYtMzJjMC04LjggNy4yLTE2IDE2LTE2aDE3NlYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNFYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjM1MkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjEuOTQxVjEyOEgyNTZWMGg2LjA1OWEyNCAyNCAwIDAgMSAxNi45NyA3LjAyOWw5Ny45NDEgOTcuOTQxYTI0LjAwMiAyNC4wMDIgMCAwIDEgNy4wMyAxNi45NzF6TTI0OCAxNjBjLTEzLjIgMC0yNC0xMC44LTI0LTI0VjBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHY0NjRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwSDI0OHptLTEzNS40NTUgMTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHMtMjEuNDkgNDgtNDggNDgtNDgtMjEuNDktNDgtNDggMjEuNDkxLTQ4IDQ4LTQ4em0yMDggMjQwaC0yNTZsLjQ4NS00OC40ODVMMTA0LjU0NSAzMjhjNC42ODYtNC42ODYgMTEuNzk5LTQuMjAxIDE2LjQ4NS40ODVMMTYwLjU0NSAzNjggMjY0LjA2IDI2NC40ODVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDMyMC41NDUgMzA0djExMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUltcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyODhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMTEydi02NHptNDg5LTE4M0w0MDcuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDM4NHYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMTUyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNjRoMTI4di02NS4yYzAtMTQuMyAxNy4zLTIxLjQgMjcuNC0xMS4zTDM3OSAzMDhjNi42IDYuNyA2LjYgMTcuNCAwIDI0bC05NS43IDk2LjRjLTEwLjEgMTAuMS0yNy40IDMtMjcuNC0xMS4zVjM1MkgxMjh2MTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMzc2Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUludm9pY2VEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6TTY0IDcyYzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOFY3MnptMCA4MHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04em0xNDQgMjYzLjg4VjQ0MGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0yNC4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMjMyYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djI0LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDUgNDQuNDQtNDIuNjcgNDUuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVJbnZvaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAyNTZIOTZ2NjRoMTkydi02NHptODktMTUxTDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNNjQgNzJjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04Vjcyem0wIDY0YzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6bTI1NiAzMDRjMCA0LjQyLTMuNTggOC04IDhoLTgwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZ6bTAtMjAwdjk2YzAgOC44NC03LjE2IDE2LTE2IDE2SDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtOTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMjI0YzguODQgMCAxNiA3LjE2IDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTWVkaWNhbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTM2VjBIODhDNzQuNyAwIDY0IDEwLjcgNjQgMjR2MjMySDhjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMTQwLjljMyAwIDUuOCAxLjcgNy4yIDQuNGwxOS45IDM5LjggNTYuOC0xMTMuN2MyLjktNS45IDExLjQtNS45IDE0LjMgMGwzNC43IDY5LjVIMzUyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2aC04OS45TDI0MCAyNzUuOGwtNTYuOCAxMTMuN2MtMi45IDUuOS0xMS40IDUuOS0xNC4zIDBMMTM0LjEgMzIwSDY0djE2OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDMxMmMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTE1My0zMUwzNDMuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDMyMHYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjQgMTYwdjQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBkZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODEuOSAyNTYuMWMtNS0xNi00LjktNDYuOS0yLTQ2LjkgOC40IDAgNy42IDM2LjkgMiA0Ni45em0tMS43IDQ3LjJjLTcuNyAyMC4yLTE3LjMgNDMuMy0yOC40IDYyLjcgMTguMy03IDM5LTE3LjIgNjIuOS0yMS45LTEyLjctOS42LTI0LjktMjMuNC0zNC41LTQwLjh6TTg2LjEgNDI4LjFjMCAuOCAxMy4yLTUuNCAzNC45LTQwLjItNi43IDYuMy0yOS4xIDI0LjUtMzQuOSA0MC4yek0yNDggMTYwaDEzNnYzMjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjI0QzAgMTAuNyAxMC43IDAgMjQgMGgyMDB2MTM2YzAgMTMuMiAxMC44IDI0IDI0IDI0em0tOCAxNzEuOGMtMjAtMTIuMi0zMy4zLTI5LTQyLjctNTMuOCA0LjUtMTguNSAxMS42LTQ2LjYgNi4yLTY0LjItNC43LTI5LjQtNDIuNC0yNi41LTQ3LjgtNi44LTUgMTguMy0uNCA0NC4xIDguMSA3Ny0xMS42IDI3LjYtMjguNyA2NC42LTQwLjggODUuOC0uMSAwLS4xLjEtLjIuMS0yNy4xIDEzLjktNzMuNiA0NC41LTU0LjUgNjggNS42IDYuOSAxNiAxMCAyMS41IDEwIDE3LjkgMCAzNS43LTE4IDYxLjEtNjEuOCAyNS44LTguNSA1NC4xLTE5LjEgNzktMjMuMiAyMS43IDExLjggNDcuMSAxOS41IDY0IDE5LjUgMjkuMiAwIDMxLjItMzIgMTkuNy00My40LTEzLjktMTMuNi01NC4zLTkuNy03My42LTcuMnpNMzc3IDEwNUwyNzkgN2MtNC41LTQuNS0xMC42LTctMTctN2gtNnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tNzQuMSAyNTUuM2M0LjEtMi43LTIuNS0xMS45LTQyLjgtOSAzNy4xIDE1LjggNDIuOCA5IDQyLjggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkzLjcgMjcxLjJjOC44IDAgMTUuNSAyLjcgMjAuMyA4LjEgOS42IDEwLjkgOS44IDMyLjctLjIgNDQuMS00LjkgNS42LTExLjkgOC41LTIxLjEgOC41aC0yNi45di02MC43aDI3Ljl6TTM3NyAxMDVMMjc5IDdjLTQuNS00LjUtMTAuNi03LTE3LTdoLTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXptLTE1MyAzMVYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em01MyAxNjUuMmMwIDkwLjMtODguOCA3Ny42LTExMS4xIDc3LjZWNDM2YzAgNi42LTUuNCAxMi0xMiAxMmgtMzAuOGMtNi42IDAtMTItNS40LTEyLTEyVjIzNi4yYzAtNi42IDUuNC0xMiAxMi0xMmg4MWM0NC41IDAgNzIuOSAzMi44IDcyLjkgNzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVQcmVzY3JpcHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02OC41MyAxNzkuNDhsMTEuMzEgMTEuMzFjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M2wtMjkuOSAyOS45TDMwNCA0MDkuMzhjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M2wtMTEuMzEgMTEuMzFjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBMMjQwIDQxMy4yNWwtMzAuMDYgMzAuMDZjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBMMTc2IDQzMmMtNi4yNS02LjI1LTYuMjUtMTYuMzggMC0yMi42M2wzMC4wNi0zMC4wNkwxNDYuNzQgMzIwSDEyOHY0OGMwIDguODQtNy4xNiAxNi0xNiAxNkg5NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZWMjA4YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzM1LjM1IDAgNjQgMjguNjUgNjQgNjQgMCAyNC4yMi0xMy42MiA0NS4wNS0zMy40NiA1NS45MkwyNDAgMzQ1LjM4bDI5LjktMjkuOWM2LjI1LTYuMjUgMTYuMzgtNi4yNSAyMi42MyAwek0xNzYgMjcyaC00OHYtMzJoNDhjOC44MiAwIDE2IDcuMTggMTYgMTZzLTcuMTggMTYtMTYgMTZ6bTIwOC0xNTAuMXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVTaWduYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE4LjE3IDQyNC4xNGMtMi45NS01LjkyLTguMDktNi41Mi0xMC4xNy02LjUycy03LjIyLjU5LTEwLjAyIDYuMTlsLTcuNjcgMTUuMzRjLTYuMzcgMTIuNzgtMjUuMDMgMTEuMzctMjkuNDgtMi4wOUwxNDQgMzg2LjU5bC0xMC42MSAzMS44OGMtNS44OSAxNy42Ni0yMi4zOCAyOS41My00MSAyOS41M0g4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNmgxMi4zOWM0LjgzIDAgOS4xMS0zLjA4IDEwLjY0LTcuNjZsMTguMTktNTQuNjRjMy4zLTkuODEgMTIuNDQtMTYuNDEgMjIuNzgtMTYuNDFzMTkuNDggNi41OSAyMi43NyAxNi40MWwxMy44OCA0MS42NGMxOS43NS0xNi4xOSA1NC4wNi05LjcgNjYgMTQuMTYgMS44OSAzLjc4IDUuNDkgNS45NSA5LjM2IDYuMjZ2LTgyLjEybDEyOC0xMjcuMDlWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtNDBsLTEyOC0uMTFjLTE2LjEyLS4zMS0zMC41OC05LjI4LTM3LjgzLTIzLjc1ek0zODQgMTIxLjljMC02LjMtMi41LTEyLjQtNy0xNi45TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMXptLTk2IDIyNS4wNlY0MTZoNjguOTlsMTYxLjY4LTE2Mi43OC02Ny44OC02Ny44OEwyODggMzQ2Ljk2em0yODAuNTQtMTc5LjYzbC0zMS44Ny0zMS44N2MtOS45NC05Ljk0LTI2LjA3LTkuOTQtMzYuMDEgMGwtMjcuMjUgMjcuMjUgNjcuODggNjcuODggMjcuMjUtMjcuMjVjOS45NS05Ljk0IDkuOTUtMjYuMDcgMC0zNi4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTY1LjE4IDIxNi4wMUgyMjR2ODBjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtODBIOTQuODJjLTE0LjI4IDAtMjEuNDEtMTcuMjktMTEuMjctMjcuMzZsOTYuNDItOTUuN2M2LjY1LTYuNjEgMTcuMzktNi42MSAyNC4wNCAwbDk2LjQyIDk1LjdjMTAuMTUgMTAuMDcgMy4wMyAyNy4zNi0xMS4yNSAyNy4zNnpNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDEyMS45NDFWMTI4SDI1NlYwaDYuMDU5YzYuMzY1IDAgMTIuNDcgMi41MjkgMTYuOTcxIDcuMDI5bDk3Ljk0MSA5Ny45NDFBMjQuMDA1IDI0LjAwNSAwIDAgMSAzODQgMTIxLjk0MXpNMjI0IDEzNlYwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2NDY0YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em05NiAxNDQuMDE2djExMS45NjNjMCAyMS40NDUtMjUuOTQzIDMxLjk5OC00MC45NzEgMTYuOTcxTDIyNCAzNTMuOTQxVjM5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIODhjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYyODBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDExMmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MzguMDU5bDU1LjAyOS01NS4wMTNjMTUuMDExLTE1LjAxIDQwLjk3MS00LjQ5MSA0MC45NzEgMTYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNTcuMSAxMjBIMzA1YzcuNyAwIDEzLjQgNy4xIDExLjcgMTQuN2wtMzggMTY4Yy0xLjIgNS41LTYuMSA5LjMtMTEuNyA5LjNoLTM4Yy01LjUgMC0xMC4zLTMuOC0xMS42LTkuMS0yNS44LTEwMy41LTIwLjgtODEuMi0yNS42LTExMC41aC0uNWMtMS4xIDE0LjMtMi40IDE3LjQtMjUuNiAxMTAuNS0xLjMgNS4zLTYuMSA5LjEtMTEuNiA5LjFIMTE3Yy01LjYgMC0xMC41LTMuOS0xMS43LTkuNGwtMzcuOC0xNjhjLTEuNy03LjUgNC0xNC42IDExLjctMTQuNmgyNC41YzUuNyAwIDEwLjcgNCAxMS44IDkuNyAxNS42IDc4IDIwLjEgMTA5LjUgMjEgMTIyLjIgMS42LTEwLjIgNy4zLTMyLjcgMjkuNC0xMjIuNyAxLjMtNS40IDYuMS05LjEgMTEuNy05LjFoMjkuMWM1LjYgMCAxMC40IDMuOCAxMS43IDkuMiAyNCAxMDAuNCAyOC44IDEyNCAyOS42IDEyOS40LS4yLTExLjItMi42LTE3LjggMjEuNi0xMjkuMiAxLTUuNiA1LjktOS41IDExLjUtOS41ek0zODQgMTIxLjl2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptMTYwLTE0LjF2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxsRHJpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMzIwcy02NCA5Mi42NS02NCAxMjhjMCAzNS4zNSAyOC42NiA2NCA2NCA2NHM2NC0yOC42NSA2NC02NC02NC0xMjgtNjQtMTI4em0tOS4zNy0xMDIuOTRMMjk0Ljk0IDkuMzdDMjg4LjY5IDMuMTIgMjgwLjUgMCAyNzIuMzEgMHMtMTYuMzggMy4xMi0yMi42MiA5LjM3bC04MS41OCA4MS41OEw4MS45MyA0Ljc2Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MiAwTDM2LjY5IDI3LjM4Yy02LjI0IDYuMjUtNi4yNCAxNi4zOCAwIDIyLjYybDg2LjE5IDg2LjE4LTk0Ljc2IDk0Ljc2Yy0zNy40OSAzNy40OC0zNy40OSA5OC4yNiAwIDEzNS43NWwxMTcuMTkgMTE3LjE5YzE4Ljc0IDE4Ljc0IDQzLjMxIDI4LjEyIDY3Ljg3IDI4LjEyIDI0LjU3IDAgNDkuMTMtOS4zNyA2Ny44Ny0yOC4xMmwyMjEuNTctMjIxLjU3YzEyLjUtMTIuNSAxMi41LTMyLjc1LjAxLTQ1LjI1em0tMTE2LjIyIDcwLjk3SDY1LjkzYzEuMzYtMy44NCAzLjU3LTcuOTggNy40My0xMS44M2wxMy4xNS0xMy4xNSA4MS42MS04MS42MSA1OC42IDU4LjZjMTIuNDkgMTIuNDkgMzIuNzUgMTIuNDkgNDUuMjQgMHMxMi40OS0zMi43NSAwLTQ1LjI0bC01OC42LTU4LjYgNTguOTUtNTguOTUgMTYyLjQ0IDE2Mi40NC00OC4zNCA0OC4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjMgMjE3LjA2TDI5NC45NCA5LjM3QzI4OC42OSAzLjEyIDI4MC41IDAgMjcyLjMxIDBzLTE2LjM4IDMuMTItMjIuNjIgOS4zN2wtODEuNTggODEuNThMODEuOTMgNC43N2MtNi4yNC02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwzNi42OSAyNy4zOGMtNi4yNCA2LjI1LTYuMjQgMTYuMzggMCAyMi42M2w4Ni4xOSA4Ni4xOC05NC43NiA5NC43NmMtMzcuNDkgMzcuNDktMzcuNDkgOTguMjYgMCAxMzUuNzVsMTE3LjE5IDExNy4xOWMxOC43NSAxOC43NCA0My4zMSAyOC4xMiA2Ny44NyAyOC4xMiAyNC41NyAwIDQ5LjEzLTkuMzcgNjcuODgtMjguMTJsMjIxLjU3LTIyMS41N2MxMi40OS0xMi41IDEyLjQ5LTMyLjc2IDAtNDUuMjZ6bS0xMTYuMjIgNzAuOTdINjUuOTNjMS4zNi0zLjg0IDMuNTctNy45OCA3LjQzLTExLjgzbDEzLjE1LTEzLjE1IDgxLjYxLTgxLjYxIDU4LjYxIDU4LjZjMTIuNDkgMTIuNDkgMzIuNzUgMTIuNDkgNDUuMjQgMCAxMi40OS0xMi40OSAxMi40OS0zMi43NSAwLTQ1LjI0bC01OC42MS01OC42IDU4Ljk1LTU4Ljk1IDE2Mi40NSAxNjIuNDQtNDguMzUgNDguMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDY0aC04djIwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMlY2NEg5NnYyMGMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMlY2NGgtOEMxMC43IDY0IDAgNzQuNyAwIDg4djMzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4di0yMGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjIwaDMyMHYtMjBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnYyMGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0Vjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0ek05NiAzNzJjMCA2LjYtNS40IDEyLTEyIDEySDQ0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEySDQ0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEySDQ0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTI3MiAyMDhjMCA2LjYtNS40IDEyLTEyIDEySDE1NmMtNi42IDAtMTItNS40LTEyLTEydi05NmMwLTYuNiA1LjQtMTIgMTItMTJoMjAwYzYuNiAwIDEyIDUuNCAxMiAxMnY5NnptMC0xNjhjMCA2LjYtNS40IDEyLTEyIDEySDE1NmMtNi42IDAtMTItNS40LTEyLTEydi05NmMwLTYuNiA1LjQtMTIgMTItMTJoMjAwYzYuNiAwIDEyIDUuNCAxMiAxMnY5NnptMTEyIDE1MmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwem0wLTk2YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Ny45NzYgMEgyNC4wMjhDMi43MSAwLTguMDQ3IDI1Ljg2NiA3LjA1OCA0MC45NzFMMTkyIDIyNS45NDFWNDMyYzAgNy44MzEgMy44MjEgMTUuMTcgMTAuMjM3IDE5LjY2Mmw4MCA1NS45OEMyOTguMDIgNTE4LjY5IDMyMCA1MDcuNDkzIDMyMCA0ODcuOThWMjI1Ljk0MWwxODQuOTQ3LTE4NC45N0M1MjAuMDIxIDI1Ljg5NiA1MDkuMzM4IDAgNDg3Ljk3NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaW5nZXJwcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuMTIgMjQ1Ljk2Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0IDEuMTQgNzIuMjUtOC4xNCAxNDEuOS0yNy43IDIxMS41NS0yLjczIDkuNzIgMi4xNSAzMC40OSAyMy4xMiAzMC40OSAxMC40OCAwIDIwLjExLTYuOTIgMjMuMDktMTcuNTIgMTMuNTMtNDcuOTEgMzEuMDQtMTI1LjQxIDI5LjQ4LTIyNC41Mi4wMS0xMy4yNS0xMC43My0yNC0yMy45OS0yNHptLS44Ni04MS43M0MxOTQgMTY0LjE2IDE1MS4yNSAyMTEuMyAxNTIuMSAyNjUuMzJjLjc1IDQ3Ljk0LTMuNzUgOTUuOTEtMTMuMzcgMTQyLjU1LTIuNjkgMTIuOTggNS42NyAyNS42OSAxOC42NCAyOC4zNiAxMy4wNSAyLjY3IDI1LjY3LTUuNjYgMjguMzYtMTguNjQgMTAuMzQtNTAuMDkgMTUuMTctMTAxLjU4IDE0LjM3LTE1My4wMi0uNDEtMjUuOTUgMTkuOTItNTIuNDkgNTQuNDUtNTIuMzQgMzEuMzEuNDcgNTcuMTUgMjUuMzQgNTcuNjIgNTUuNDcuNzcgNDguMDUtMi44MSA5Ni4zMy0xMC42MSAxNDMuNTUtMi4xNyAxMy4wNiA2LjY5IDI1LjQyIDE5Ljc2IDI3LjU4IDE5Ljk3IDMuMzMgMjYuODEtMTUuMSAyNy41OC0xOS43NyA4LjI4LTUwLjAzIDEyLjA2LTEwMS4yMSAxMS4yNy0xNTIuMTEtLjg4LTU1LjgtNDcuOTQtMTAxLjg4LTEwNC45MS0xMDIuNzJ6bS0xMTAuNjktMTkuNzhjLTEwLjMtOC4zNC0yNS4zNy02LjgtMzMuNzYgMy40OC0yNS42MiAzMS41LTM5LjM5IDcxLjI4LTM4Ljc1IDExMiAuNTkgMzcuNTgtMi40NyA3NS4yNy05LjExIDExMi4wNS0yLjM0IDEzLjA1IDYuMzEgMjUuNTMgMTkuMzYgMjcuODkgMjAuMTEgMy41IDI3LjA3LTE0LjgxIDI3Ljg5LTE5LjM2IDcuMTktMzkuODQgMTAuNS04MC42NiA5Ljg2LTEyMS4zMy0uNDctMjkuODggOS4yLTU3Ljg4IDI4LTgwLjk3IDguMzUtMTAuMjggNi43OS0yNS4zOS0zLjQ5LTMzLjc2em0xMDkuNDctNjIuMzNjLTE1LjQxLS40MS0zMC44NyAxLjQ0LTQ1Ljc4IDQuOTctMTIuODkgMy4wNi0yMC44NyAxNS45OC0xNy44MyAyOC44OSAzLjA2IDEyLjg5IDE2IDIwLjgzIDI4Ljg5IDE3LjgzIDExLjA1LTIuNjEgMjIuNDctMy43NyAzNC0zLjY5IDc1LjQzIDEuMTMgMTM3LjczIDYxLjUgMTM4Ljg4IDEzNC41OC41OSAzNy44OC0xLjI4IDc2LjExLTUuNTggMTEzLjYzLTEuNSAxMy4xNyA3Ljk1IDI1LjA4IDIxLjExIDI2LjU4IDE2LjcyIDEuOTUgMjUuNTEtMTEuODggMjYuNTgtMjEuMTFhOTI5LjA2IDkyOS4wNiAwIDAgMCA1Ljg5LTExOS44NWMtMS41Ni05OC43NS04NS4wNy0xODAuMzMtMTg2LjE2LTE4MS44M3ptMjUyLjA3IDEyMS40NWMtMi44Ni0xMi45Mi0xNS41MS0yMS4yLTI4LjYxLTE4LjI3LTEyLjk0IDIuODYtMjEuMTIgMTUuNjYtMTguMjYgMjguNjEgNC43MSAyMS40MSA0LjkxIDM3LjQxIDQuNyA2MS42LS4xMSAxMy4yNyAxMC41NSAyNC4wOSAyMy44IDI0LjJoLjJjMTMuMTcgMCAyMy44OS0xMC42MSAyNC0yMy44LjE4LTIyLjE4LjQtNDQuMTEtNS44My03Mi4zNHptLTQwLjEyLTkwLjcyQzQxNy4yOSA0My40NiAzMzcuNiAxLjI5IDI1Mi44MS4wMiAxODMuMDItLjgyIDExOC40NyAyNC45MSA3MC40NiA3Mi45NCAyNC4wOSAxMTkuMzctLjkgMTgxLjA0LjE0IDI0Ni42NWwtLjEyIDIxLjQ3Yy0uMzkgMTMuMjUgMTAuMDMgMjQuMzEgMjMuMjggMjQuNjkuMjMuMDIuNDguMDIuNzIuMDIgMTIuOTIgMCAyMy41OS0xMC4zIDIzLjk3LTIzLjNsLjE2LTIzLjY0Yy0uODMtNTIuNSAxOS4xNi0xMDEuODYgNTYuMjgtMTM5IDM4Ljc2LTM4LjggOTEuMzQtNTkuNjcgMTQ3LjY4LTU4Ljg2IDY5LjQ1IDEuMDMgMTM0LjczIDM1LjU2IDE3NC42MiA5Mi4zOSA3LjYxIDEwLjg2IDIyLjU2IDEzLjQ1IDMzLjQyIDUuODYgMTAuODQtNy42MiAxMy40Ni0yMi41OSA1Ljg0LTMzLjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy41NiA1MS4yYy0yMC44IDE5LjMtMzkuNTggMzkuNTktNTYuMjIgNTkuOTdDMjQwLjA4IDczLjYyIDIwNi4yOCAzNS41MyAxNjggMCA2OS43NCA5MS4xNyAwIDIwOS45NiAwIDI4MS42IDAgNDA4Ljg1IDEwMC4yOSA1MTIgMjI0IDUxMnMyMjQtMTAzLjE1IDIyNC0yMzAuNGMwLTUzLjI3LTUxLjk4LTE2My4xNC0xMjQuNDQtMjMwLjR6bS0xOS40NyAzNDAuNjVDMjgyLjQzIDQwNy4wMSAyNTUuNzIgNDE2IDIyNi44NiA0MTYgMTU0LjcxIDQxNiA5NiAzNjguMjYgOTYgMjkwLjc1YzAtMzguNjEgMjQuMzEtNzIuNjMgNzIuNzktMTMwLjc1IDYuOTMgNy45OCA5OC44MyAxMjUuMzQgOTguODMgMTI1LjM0bDU4LjYzLTY2Ljg4YzQuMTQgNi44NSA3LjkxIDEzLjU1IDExLjI3IDE5Ljk3IDI3LjM1IDUyLjE5IDE1LjgxIDExOC45Ny0zMy40MyAxNTMuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVFeHRpbmd1aXNoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM0LjAyNyAyNi4zMjlsLTE2OCAyOEMyNTQuNjkzIDU2LjIxOCAyNTYgNjcuOCAyNTYgNzJoLTU4LjMzMkMyMDguMzUzIDM2LjEwOCAxODEuNDQ2IDAgMTQ0IDBjLTM5LjQzNSAwLTY2LjM2OCAzOS42NzYtNTIuMjI4IDc2LjIwMy01Mi4wMzkgMTMuMDUxLTc1LjM4MSA1NC4yMTMtOTAuMDQ5IDkwLjg4NC00LjkyMyAxMi4zMDcgMS4wNjMgMjYuMjc0IDEzLjM3IDMxLjE5NyAxMi4zMTcgNC45MjYgMjYuMjc5LTEuMDc1IDMxLjE5Ni0xMy4zN0M3NS4wNTggMTEyLjk5IDEwNi45NjQgMTIwIDE2OCAxMjB2MjcuMDc2Yy00MS41NDMgMTAuODYyLTcyIDQ5LjIzNS03MiA5NC4xMjlWNDg4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0MGMwLTQ0LjczMS0zMC41OTYtODIuMzEyLTcyLTkyLjk3VjEyMGg0MGMwIDIuOTc0LTEuNzAzIDE1LjcxNiAxMC4wMjcgMTcuNjcxbDE2OCAyOEM0NDEuMzQyIDE2Ni44OSA0NDggMTYxLjI1IDQ0OCAxNTMuODM0VjM4LjE2NmMwLTcuNDE2LTYuNjU4LTEzLjA1Ni0xMy45NzMtMTEuODM3ek0xNDQgNzJjLTguODIyIDAtMTYtNy4xNzgtMTYtMTZzNy4xNzgtMTYgMTYtMTYgMTYgNy4xNzggMTYgMTYtNy4xNzggMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDIzLjg2YzAtMjMuOC0zMC42NS0zMi43Ny00NC4xNS0xMy4wNEM0OCAxOTEuODUgMjI0IDIwMCAyMjQgMjg4YzAgMzUuNjMtMjkuMTEgNjQuNDYtNjQuODUgNjMuOTktMzUuMTctLjQ1LTYzLjE1LTI5Ljc3LTYzLjE1LTY0Ljk0di04NS41MWMwLTIxLjctMjYuNDctMzIuMjMtNDEuNDMtMTYuNUMyNy44IDIxMy4xNiAwIDI2MS4zMyAwIDMyMGMwIDEwNS44NyA4Ni4xMyAxOTIgMTkyIDE5MnMxOTItODYuMTMgMTkyLTE5MmMwLTE3MC4yOS0xNjgtMTkzLTE2OC0yOTYuMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0QWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4VjMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB6bTEyOCA0MDBoMzIwVjMySDEyOHY0NDh6bTY0LTI0OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDh6TTUyOCAzMmgtNDh2NDQ4aDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNy4xIDk2Yy04OS45NyAwLTE2OC41NCA1NC43Ny0yMTIuMjcgMTAxLjYzTDI3LjUgMTMxLjU4Yy0xMi4xMy05LjE4LTMwLjI0LjYtMjcuMTQgMTQuNjZMMjQuNTQgMjU2IC4zNSAzNjUuNzdjLTMuMSAxNC4wNiAxNS4wMSAyMy44MyAyNy4xNCAxNC42Nmw4Ny4zMy02Ni4wNUMxNTguNTUgMzYxLjIzIDIzNy4xMyA0MTYgMzI3LjEgNDE2IDQ2NC41NiA0MTYgNTc2IDI4OCA1NzYgMjU2UzQ2NC41NiA5NiAzMjcuMSA5NnptODcuNDMgMTg0Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjQgMTMuMjYgMCAyNCAxMC43NCAyNCAyNCAwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXN0UmFpc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS45OCAxNjBWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDYuOTNjNS4wMi0xLjc4IDEwLjM0LTIuOTMgMTUuOTctMi45M2g0OC4wM3ptMTI4IDk1Ljk5Yy0uMDEtMzUuMzQtMjguNjYtNjMuOTktNjMuOTktNjMuOTlIMjA3Ljg1Yy04Ljc4IDAtMTUuOSA3LjA3LTE1LjkgMTUuODV2LjU2YzAgMjYuMjcgMjEuMyA0Ny41OSA0Ny41NyA0Ny41OWgzNS4yNmM5LjY4IDAgMTMuMiAzLjU4IDEzLjIgOHYxNi4yYzAgNC4yOS0zLjU5IDcuNzgtNy44OCA4LTQ0LjUyIDIuMjgtNjQuMTYgMjQuNzEtOTYuMDUgNzIuNTVsLTYuMzEgOS40N2E3Ljk5NCA3Ljk5NCAwIDAgMS0xMS4wOSAyLjIybC0xMy4zMS04Ljg4YTcuOTk0IDcuOTk0IDAgMCAxLTIuMjItMTEuMDlsNi4zMS05LjQ3YzE1LjczLTIzLjYgMzAuMi00My4yNiA0Ny4zMS01OC4wOC0xNy4yNy01LjUxLTMxLjQtMTguMTItMzguODctMzQuNDUtNi41OSAzLjQxLTEzLjk2IDUuNTItMjEuODcgNS41MmgtMzJjLTEyLjM0IDAtMjMuNDktNC44MS0zMi0xMi40OEM3MS40OCAyNTEuMTkgNjAuMzMgMjU2IDQ4IDI1NkgxNmMtNS42NCAwLTEwLjk3LTEuMTUtMTYtMi45NXY3Ny45M2MwIDMzLjk1IDEzLjQ4IDY2LjUgMzcuNDkgOTAuNTFMNjMuOTkgNDQ4djY0aDI1NS45OHYtNjMuOTZsMzUuOTEtMzUuOTJBOTYuMDM1IDk2LjAzNSAwIDAgMCAzODQgMzQ0LjIxbC0uMDItODguMjJ6bS0zMi4wMS05MC4wOVY0OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmgzMmMxMS4yOCAwIDIxLjk0IDIuMzEgMzIgNS45ek0xNiAyMjRoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MTI4YzAgOC44NCA3LjE2IDE2IDE2IDE2em05NS45OSAwaDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTYwYzAgOC44NCA3LjE2IDE2IDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnQ2hlY2tlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0My4yIDE4OS45VjI1OGMyNi4xIDUuOSA0OS4zIDE1LjYgNzMuNiAyMi4zdi02OC4yYy0yNi01LjgtNDkuNC0xNS41LTczLjYtMjIuMnptMjIzLjMtMTIzYy0zNC4zIDE1LjktNzYuNSAzMS45LTExNyAzMS45QzI5NiA5OC44IDI1MS43IDY0IDE4NC4zIDY0Yy0yNSAwLTQ3LjMgNC40LTY4IDEyIDIuOC03LjMgNC4xLTE1LjIgMy42LTIzLjZDMTE4LjEgMjQgOTQuOCAxLjIgNjYuMyAwIDM0LjMtMS4zIDggMjQuMyA4IDU2YzAgMTkgOS41IDM1LjggMjQgNDUuOVY0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTk0LjRjMjguMy0xMi4xIDYzLjYtMjIuMSAxMTQuNC0yMi4xIDUzLjYgMCA5Ny44IDM0LjggMTY1LjIgMzQuOCA0OC4yIDAgODYuNy0xNi4zIDEyMi41LTQwLjkgOC43LTYgMTMuOC0xNS44IDEzLjgtMjYuNFY5NS45Yy4xLTIzLjMtMjQuMi0zOC44LTQ1LjQtMjl6TTE2OS42IDMyNS41Yy0yNS44IDIuNy01MCA4LjItNzMuNiAxNi42di03MC41YzI2LjItOS4zIDQ3LjUtMTUgNzMuNi0xNy40ek00NjQgMTkxYy0yMy42IDkuOC00Ni4zIDE5LjUtNzMuNiAyMy45VjI4NmMyNC44LTMuNCA1MS40LTExLjggNzMuNi0yNnY3MC41Yy0yNS4xIDE2LjEtNDguNSAyNC43LTczLjYgMjcuMVYyODZjLTI3IDMuNy00Ny45IDEuNS03My42LTUuNnY2Ny40Yy0yMy45LTcuNC00Ny4zLTE2LjctNzMuNi0yMS4zVjI1OGMtMTkuNy00LjQtNDAuOC02LjgtNzMuNi0zLjh2LTcwYy0yMi40IDMuMS00NC42IDEwLjItNzMuNiAyMC45di03MC41YzMzLjItMTIuMiA1MC4xLTE5LjggNzMuNi0yMnY3MS42YzI3LTMuNyA0OC40LTEuMyA3My42IDUuN3YtNjcuNGMyMy43IDcuNCA0Ny4yIDE2LjcgNzMuNiAyMS4zdjY4LjRjMjMuNyA1LjMgNDcuNiA2LjkgNzMuNiAyLjdWMTQzYzI3LTQuOCA1Mi4zLTEzLjYgNzMuNi0yMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnVXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMydjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyQzY0IDE0LjMgNDkuNyAwIDMyIDB6bTI2Ny45IDMwMy42Yy01Ny4yLTE1LjEtMTExLjctMjguOC0yMDMuOSAxMS4xVjM4NGMxODUuNy05Mi4yIDIyMS43IDUzLjMgMzk3LjUtMjMuMSAxMS40LTUgMTguNS0xNi41IDE4LjUtMjguOHYtMzZjLTQzLjYgMTcuMy04MC4yIDI0LjEtMTEyLjEgMjQuMS0zNy40LS4xLTY4LjktOC40LTEwMC0xNi42em0wLTk2Yy01Ny4yLTE1LjEtMTExLjctMjguOC0yMDMuOSAxMS4xdjYxLjVjOTQuOC0zNy42IDE1NC42LTIyLjcgMjEyLjEtNy42IDU3LjIgMTUuMSAxMTEuNyAyOC44IDIwMy45LTExLjFWMjAwYy00My42IDE3LjMtODAuMiAyNC4xLTExMi4xIDI0LjEtMzcuNCAwLTY4LjktOC4zLTEwMC0xNi41em05LjUtMTI1LjljNTEuOCAxNS42IDk3LjQgMjkgMjAyLjYtMjAuMVYzMC44YzAtMjUuMS0yNi44LTM4LjEtNDkuNC0yNi42QzI5MS4zIDkxLjUgMzA1LjQtNjIuMiA5NiAzMi40djE1MS45Yzk0LjgtMzcuNSAxNTQuNi0yMi43IDIxMi4xLTcuNiA1Ny4yIDE1IDExMS43IDI4LjcgMjAzLjktMTEuMVY5Ni43Yy01My42IDIzLjUtOTMuMyAzMS40LTEyNi4xIDMxLjRzLTU5LTcuOC04NS43LTE1LjljLTQtMS4yLTguMS0yLjQtMTIuMS0zLjVWNzUuNWM3LjIgMiAxNC4zIDQuMSAyMS4zIDYuMnpNMTYwIDEyOC4xYy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtNTUuOGMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTZjMCA4LjgtNy4yIDE2LTE2IDE2em02NCA0Ny45Yy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNmMwIDguOC03LjIgMTYtMTYgMTZ6bTAtNTUuOWMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTZjMCA4LjgtNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0OS41NjUgOTguNzgzQzI5NS45NzggOTguNzgzIDI1MS43MjEgNjQgMTg0LjM0OCA2NGMtMjQuOTU1IDAtNDcuMzA5IDQuMzg0LTY4LjA0NSAxMi4wMTNhNTUuOTQ3IDU1Ljk0NyAwIDAgMCAzLjU4Ni0yMy41NjJDMTE4LjExNyAyNC4wMTUgOTQuODA2IDEuMjA2IDY2LjMzOC4wNDggMzQuMzQ1LTEuMjU0IDggMjQuMjk2IDggNTZjMCAxOS4wMjYgOS40OTcgMzUuODI1IDI0IDQ1Ljk0NVY0ODhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtOTQuNGMyOC4zMTEtMTIuMDY0IDYzLjU4Mi0yMi4xMjIgMTE0LjQzNS0yMi4xMjIgNTMuNTg4IDAgOTcuODQ0IDM0Ljc4MyAxNjUuMjE3IDM0Ljc4MyA0OC4xNjkgMCA4Ni42NjctMTYuMjk0IDEyMi41MDUtNDAuODU4QzUwNi44NCAzNTkuNDUyIDUxMiAzNDkuNTcxIDUxMiAzMzkuMDQ1di0yNDMuMWMwLTIzLjM5My0yNC4yNjktMzguODctNDUuNDg1LTI5LjAxNi0zNC4zMzggMTUuOTQ4LTc2LjQ1NCAzMS44NTQtMTE2Ljk1IDMxLjg1NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM3LjIgNDAzLjVMMzIwIDIxNVY2NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDEyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOHYxNTFMMTAuOCA0MDMuNUMtMTguNSA0NTAuNiAxNS4zIDUxMiA3MC45IDUxMmgzMDYuMmM1NS43IDAgODkuNC02MS41IDYwLjEtMTA4LjV6TTEzNy45IDMyMGw0OC4yLTc3LjZjMy43LTUuMiA1LjgtMTEuNiA1LjgtMTguNFY2NGg2NHYxNjBjMCA2LjkgMi4yIDEzLjIgNS44IDE4LjRsNDguMiA3Ny42aC0xNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsdXNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDIwMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bS0xOTIgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTgwIDIyNGMwLTM5LjggMzIuMi03MiA3Mi03MnM3MiAzMi4yIDcyIDcyLTMyLjIgNzItNzIgNzItNzItMzIuMi03Mi03MnptMjMyIDE3NkgxODRjLTIxLjIgMC0yMS4yLTMyIDAtMzJoMTI4YzIxLjIgMCAyMS4yIDMyIDAgMzJ6bTMyLTEwNGMtMzkuOCAwLTcyLTMyLjItNzItNzJzMzIuMi03MiA3Mi03MiA3MiAzMi4yIDcyIDcyLTMyLjIgNzItNzIgNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxMjhIMjcybC02NC02NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE3NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tOTYgMTY4YzAgOC44NC03LjE2IDE2LTE2IDE2SDE2MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTE2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDE5MmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzIuNjk0IDI5Mi4wOTNMNTAwLjI3IDQxNi4yNDhBNjMuOTk3IDYzLjk5NyAwIDAgMSA0NDQuOTg5IDQ0OEg0NS4wMjVjLTE4LjUyMyAwLTMwLjA2NC0yMC4wOTMtMjAuNzMxLTM2LjA5M2w3Mi40MjQtMTI0LjE1NUE2NCA2NCAwIDAgMSAxNTIgMjU2aDM5OS45NjRjMTguNTIzIDAgMzAuMDY0IDIwLjA5MyAyMC43MyAzNi4wOTN6TTE1MiAyMjRoMzI4di00OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDI3MmwtNjQtNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyNzguMDQ2bDY5LjA3Ny0xMTguNDE4Qzg2LjIxNCAyNDIuMjUgMTE3Ljk4OSAyMjQgMTUyIDIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQsMTI4SDI3MkwyMDgsNjRINDhBNDgsNDgsMCwwLDAsMCwxMTJWNDAwYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQ2NGE0OCw0OCwwLDAsMCw0OC00OFYxNzZBNDgsNDgsMCwwLDAsNDY0LDEyOFpNMzU5LjUsMjk2YTE2LDE2LDAsMCwxLTE2LDE2aC02NHY2NGExNiwxNiwwLDAsMS0xNiwxNmgtMTZhMTYsMTYsMCwwLDEtMTYtMTZWMzEyaC02NGExNiwxNiwwLDAsMS0xNi0xNlYyODBhMTYsMTYsMCwwLDEsMTYtMTZoNjRWMjAwYTE2LDE2LDAsMCwxLDE2LTE2aDE2YTE2LDE2LDAsMCwxLDE2LDE2djY0aDY0YTE2LDE2LDAsMCwxLDE2LDE2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDEyOEgyNzJsLTY0LTY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTc2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDQxNmgtMjMuNDFMMjc3Ljg4IDUzLjY5QTMyIDMyIDAgMCAwIDI0Ny41OCAzMmgtNDcuMTZhMzIgMzIgMCAwIDAtMzAuMyAyMS42OUwzOS40MSA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMTkuNThsMjMuMy02NGgxNTIuNTZsMjMuMyA2NEgzMDRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMTc2Ljg1IDI3MkwyMjQgMTQyLjUxIDI3MS4xNSAyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvb3RiYWxsQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEuNSA2MC4zYy00LjgtMTguMi0xOS4xLTMyLjUtMzcuMy0zNy40QzQyMC4zIDE2LjUgMzgzIDguOSAzMzkuNCA4TDQ5NiAxNjQuOGMtLjgtNDMuNS04LjItODAuNi0xNC41LTEwNC41em0tNDY3IDM5MS40YzQuOCAxOC4yIDE5LjEgMzIuNSAzNy4zIDM3LjQgMjMuOSA2LjQgNjEuMiAxNCAxMDQuOCAxNC45TDAgMzQ3LjJjLjggNDMuNSA4LjIgODAuNiAxNC41IDEwNC41ek00LjIgMjgzLjRMMjIwLjQgNTAwYzEzMi41LTE5LjQgMjQ4LjgtMTE4LjcgMjcxLjUtMjcxLjRMMjc1LjYgMTJDMTQzLjEgMzEuNCAyNi44IDEzMC43IDQuMiAyODMuNHptMzE3LjMtMTIzLjZjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwxMS4zIDExLjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMjguMyAyOC4zIDI4LjMgMjguM2MzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBsLTI4LjMtMjguMy0yMi42IDIyLjcgMjguMyAyOC4zYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMEwyNDggMjc4LjZsLTIyLjYgMjIuNiAyOC4zIDI4LjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC0yOC4zLTI4LjMtMjguMyAyOC4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC0xMS4zLTExLjNjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMjguMy0yOC4zLTI4LjMtMjguMmMtMy4xLTMuMS0zLjEtOC4yIDAtMTEuM2wxMS4zLTExLjNjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwyOC4zIDI4LjMgMjIuNi0yMi42LTI4LjMtMjguM2MtMy4xLTMuMS0zLjEtOC4yIDAtMTEuM2wxMS4zLTExLjNjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwyOC4zIDI4LjMgMjIuNi0yMi42LTI4LjMtMjguM2MtMy4xLTMuMS0zLjEtOC4yIDAtMTEuM2wxMS4zLTExLjNjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwyOC4zIDI4LjMgMjguMy0yOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMC41IDIzMS40bC0xOTItMTYwQzI4Ny45IDU0LjMgMjU2IDY4LjYgMjU2IDk2djMyMGMwIDI3LjQgMzEuOSA0MS44IDUyLjUgMjQuNmwxOTItMTYwYzE1LjMtMTIuOCAxNS4zLTM2LjQgMC00OS4yem0tMjU2IDBsLTE5Mi0xNjBDMzEuOSA1NC4zIDAgNjguNiAwIDk2djMyMGMwIDI3LjQgMzEuOSA0MS44IDUyLjUgMjQuNmwxOTItMTYwYzE1LjMtMTIuOCAxNS4zLTM2LjQgMC00OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcm9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni41MyA5Ny40M0M0MzkuNjcgNjAuMjMgNDA3LjE5IDMyIDM2OCAzMmMtMzkuMjMgMC03MS43MiAyOC4yOS03OC41NCA2NS41NEMxMjYuNzUgMTEyLjk2LS41IDI1MC4xMiAwIDQxNi45OC4xMSA0NTEuOSAyOS4wOCA0ODAgNjQgNDgwaDMwNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC03OS40OWwzNS44LTQ4LjMzYzI0LjE0LTM2LjIzIDEwLjM1LTg4LjI4LTMzLjcxLTEwNi42LTIzLjg5LTkuOTMtNTEuNTUtNC42NS03Mi4yNCAxMC44OGwtMzIuNzYgMjQuNTljLTcuMDYgNS4zMS0xNy4wOSAzLjkxLTIyLjQxLTMuMTktNS4zLTcuMDgtMy44OC0xNy4xMSAzLjE5LTIyLjQxbDM0Ljc4LTI2LjA5YzM2Ljg0LTI3LjY2IDg4LjI4LTI3LjYyIDEyNS4xMyAwIDEwLjg3IDguMTUgNDUuODcgMzkuMDYgNDAuOCA5My4yMUw0NjkuNjIgNDgwSDU2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01My42M2wtOTguNTItMTA0LjY4IDE1NC40NC04Ni42NUE1OC4xNiA1OC4xNiAwIDAgMCA1NzYgMTg5Ljk0YzAtMjEuNC0xMS43Mi00MC45NS0zMC40OC01MS4yMy00MC41Ni0yMi4yMi05OC45OS00MS4yOC05OC45OS00MS4yOHpNMzY4IDEzNmMtMTMuMjYgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc0LTI0IDI0LTI0IDEzLjI1IDAgMjQgMTAuNzQgMjQgMjQgMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJvd25PcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyMDhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTE4Ny4zIDE4My4zYy0zMS4yLTkuNi01OS40LTE1LjMtNzUuMy0xNS4zcy00NC4xIDUuNy03NS4zIDE1LjNjLTExLjUgMy41LTIyLjUtNi4zLTIwLjUtMTguMSA3LTQwIDYwLjEtNjEuMiA5NS44LTYxLjJzODguOCAyMS4zIDk1LjggNjEuMmMyIDExLjktOS4xIDIxLjYtMjAuNSAxOC4xek0zMjggMjQwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMTcwLjIgMjE4LjJDMzE1LjggMzY3LjQgMjgyLjkgMzUyIDI0OCAzNTJzLTY3LjggMTUuNC05MC4yIDQyLjJjLTEzLjUgMTYuMy0zOC4xLTQuMi0yNC42LTIwLjVDMTYxLjcgMzM5LjYgMjAzLjYgMzIwIDI0OCAzMjBzODYuMyAxOS42IDExNC43IDUzLjhjMTMuNiAxNi4yLTExIDM2LjctMjQuNSAyMC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGdW5uZWxEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjQ2IDE2NS45NGwxMDEuMi0xMTEuODdDNTU0LjYxIDM0LjEyIDU0MC40OCAwIDUxMi4yNiAwSDMxLjc0QzMuNTIgMC0xMC42MSAzNC4xMiA5LjM0IDU0LjA3TDE5MiAyNTZ2MTU1LjkyYzAgMTIuNTkgNS45MyAyNC40NCAxNiAzMmw3OS45OSA2MGMyMC44NiAxNS42NCA0OC40NyA2Ljk3IDU5LjIyLTEzLjU3QzMxMC44IDQ1NS4zOCAyODggNDA2LjM1IDI4OCAzNTJjMC04OS43OSA2Mi4wNS0xNjUuMTcgMTQ1LjQ2LTE4Ni4wNnpNNDgwIDE5MmMtODguMzcgMC0xNjAgNzEuNjMtMTYwIDE2MHM3MS42MyAxNjAgMTYwIDE2MCAxNjAtNzEuNjMgMTYwLTE2MC03MS42My0xNjAtMTYwLTE2MHptMTYgMjM5Ljg4VjQ0OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0xNi4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMjU2YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDQgNDQuNDQtNDIuNjcgNDUuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZ1dGJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHptLTQ4IDBsLS4wMDMtLjI4Mi0yNi4wNjQgMjIuNzQxLTYyLjY3OS01OC41IDE2LjQ1NC04NC4zNTUgMzQuMzAzIDMuMDcyYy0yNC44ODktMzQuMjE2LTYwLjAwNC02MC4wODktMTAwLjcwOS03My4xNDFsMTMuNjUxIDMxLjkzOUwyNTYgMTM5bC03NC45NTMtNDEuNTI1IDEzLjY1MS0zMS45MzljLTQwLjYzMSAxMy4wMjgtNzUuNzggMzguODctMTAwLjcwOSA3My4xNDFsMzQuNTY1LTMuMDczIDE2LjE5MiA4NC4zNTUtNjIuNjc4IDU4LjUtMjYuMDY0LTIyLjc0MS0uMDAzLjI4MmMwIDQzLjAxNSAxMy40OTcgODMuOTUyIDM4LjQ3MiAxMTcuOTkxbDcuNzA0LTMzLjg5NyA4NS4xMzggMTAuNDQ3IDM2LjMwMSA3Ny44MjYtMjkuOTAyIDE3Ljc4NmM0MC4yMDIgMTMuMTIyIDg0LjI5IDEzLjE0OCAxMjQuNTcyIDBsLTI5LjkwMi0xNy43ODYgMzYuMzAxLTc3LjgyNiA4NS4xMzgtMTAuNDQ3IDcuNzA0IDMzLjg5N0M0NDIuNTAzIDMzOS45NTIgNDU2IDI5OS4wMTUgNDU2IDI1NnptLTI0OC4xMDIgNjkuNTcxbC0yOS44OTQtOTEuMzEyTDI1NiAxNzcuNzMybDc3Ljk5NiA1Ni41MjctMjkuNjIyIDkxLjMxMmgtOTYuNDc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYW1lcGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MC4wNyA5NkgxNjBhMTYwIDE2MCAwIDEgMCAxMTQuMjQgMjcyaDkxLjUyQTE2MCAxNjAgMCAxIDAgNDgwLjA3IDk2ek0yNDggMjY4YTEyIDEyIDAgMCAxLTEyIDEyaC01MnY1MmExMiAxMiAwIDAgMS0xMiAxMmgtMjRhMTIgMTIgMCAwIDEtMTItMTJ2LTUySDg0YTEyIDEyIDAgMCAxLTEyLTEydi0yNGExMiAxMiAwIDAgMSAxMi0xMmg1MnYtNTJhMTIgMTIgMCAwIDEgMTItMTJoMjRhMTIgMTIgMCAwIDEgMTIgMTJ2NTJoNTJhMTIgMTIgMCAwIDEgMTIgMTJ6bTIxNiA3NmE0MCA0MCAwIDEgMSA0MC00MCA0MCA0MCAwIDAgMS00MCA0MHptNjQtOTZhNDAgNDAgMCAxIDEgNDAtNDAgNDAgNDAgMCAwIDEtNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhc1B1bXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDQ0OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMjBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTE1Ny4yLTM0MC43bC04MS04MWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTExLjMgMTEuM2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZMNDE2IDk3LjlWMTYwYzAgMjguMSAyMC45IDUxLjMgNDggNTUuMlYzNzZjMCAxMy4yLTEwLjggMjQtMjQgMjRzLTI0LTEwLjgtMjQtMjR2LTMyYzAtNDguNi0zOS40LTg4LTg4LTg4aC04VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2QzYwLjcgMCAzMiAyOC43IDMyIDY0djM1MmgyODhWMzA0aDhjMjIuMSAwIDQwIDE3LjkgNDAgNDB2MjcuOGMwIDM3LjcgMjcgNzIgNjQuNSA3NS45IDQzIDQuMyA3OS41LTI5LjUgNzkuNS03MS43VjE1Mi42YzAtMTctNi44LTMzLjMtMTguOC00NS4zek0yNTYgMTkySDk2VjY0aDE2MHYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC45NzEgMTk5LjM2MmwtMjIuNjI3LTIyLjYyN2MtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwbC01LjY1NyA1LjY1N0wzMjkuNjA4IDY5LjI1NWw1LjY1Ny01LjY1N2M5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFMMzEyLjYzOCA3LjAyOWMtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwTDE1NC4yNDYgMTMxLjQ4Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsMjIuNjI3IDIyLjYyN2M5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsNS42NTctNS42NTcgMzkuNTk4IDM5LjU5OC04MS4wNCA4MS4wNC01LjY1Ny01LjY1N2MtMTIuNDk3LTEyLjQ5Ny0zMi43NTgtMTIuNDk3LTQ1LjI1NSAwTDkuMzczIDQxMi4xMThjLTEyLjQ5NyAxMi40OTctMTIuNDk3IDMyLjc1OCAwIDQ1LjI1NWw0NS4yNTUgNDUuMjU1YzEyLjQ5NyAxMi40OTcgMzIuNzU4IDEyLjQ5NyA0NS4yNTUgMGwxMTQuNzQ1LTExNC43NDVjMTIuNDk3LTEyLjQ5NyAxMi40OTctMzIuNzU4IDAtNDUuMjU1bC01LjY1Ny01LjY1NyA4MS4wNC04MS4wNCAzOS41OTggMzkuNTk4LTUuNjU3IDUuNjU3Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsMjIuNjI3IDIyLjYyN2M5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsMTI0LjQ1MS0xMjQuNDUxYzkuMzcyLTkuMzcyIDkuMzcyLTI0LjU2OCAwLTMzLjk0MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4NS41IDBMNTc2IDE2MEg0NzQuOUw0MDUuNyAwaDc5Ljh6bS0xMjggMGw2OS4yIDE2MEgxNDkuM0wyMTguNSAwaDEzOXptLTI2NyAwaDc5LjhsLTY5LjIgMTYwSDBMOTAuNSAwek0wIDE5MmgxMDAuN2wxMjMgMjUxLjdjMS41IDMuMS0yLjcgNS45LTUgMy4zTDAgMTkyem0xNDguMiAwaDI3OS42bC0xMzcgMzE4LjJjLTEgMi40LTQuNSAyLjQtNS41IDBMMTQ4LjIgMTkyem0yMDQuMSAyNTEuN2wxMjMtMjUxLjdINTc2TDM1Ny4zIDQ0Ni45Yy0yLjMgMi43LTYuNS0uMS01LTMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VuZGVybGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMTc2YzQ0LjEgMCA4MCAzNS45IDgwIDgwcy0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODAgMzUuOS04MCA4MC04MG0wLTY0QzY0LjUgMTEyIDAgMTc2LjUgMCAyNTZzNjQuNSAxNDQgMTQ0IDE0NCAxNDQtNjQuNSAxNDQtMTQ0LTY0LjUtMTQ0LTE0NC0xNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdob3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xLjA5QzgxLjAxIDMuMjQgMCA5NC45MiAwIDIwMC4wNXYyNjMuOTJjMCAxNC4yNiAxNy4yMyAyMS4zOSAyNy4zMSAxMS4zMWwyNC45Mi0xOC41M2M2LjY2LTQuOTUgMTYtMy45OSAyMS41MSAyLjIxbDQyLjk1IDQ4LjM1YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsNDAuNzItNDUuODVjNi4zNy03LjE3IDE3LjU2LTcuMTcgMjMuOTIgMGw0MC43MiA0NS44NWM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDQyLjk1LTQ4LjM1YzUuNTEtNi4yIDE0Ljg1LTcuMTcgMjEuNTEtMi4yMWwyNC45MiAxOC41M2MxMC4wOCAxMC4wOCAyNy4zMSAyLjk0IDI3LjMxLTExLjMxVjE5MkMzODQgODQgMjk0LjgzLTMuMTcgMTg2LjEuMDl6TTEyOCAyMjRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTEyOCAwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxNjBWMzIwSDMydjEyOHptMjU2IDMyaDE2MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBIMjg4djE2MHptMTkyLTMyMGgtNDIuMWM2LjItMTIuMSAxMC4xLTI1LjUgMTAuMS00MCAwLTQ4LjUtMzkuNS04OC04OC04OC00MS42IDAtNjguNSAyMS4zLTEwMyA2OC4zLTM0LjUtNDctNjEuNC02OC4zLTEwMy02OC4zLTQ4LjUgMC04OCAzOS41LTg4IDg4IDAgMTQuNSAzLjggMjcuOSAxMC4xIDQwSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MGMwIDguOCA3LjIgMTYgMTYgMTZoNDgwYzguOCAwIDE2LTcuMiAxNi0xNnYtODBjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0zMjYuMSAwYy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwYzE5LjkgMCAzNC42IDMuMyA4Ni4xIDgwaC04Ni4xem0yMDYuMSAwaC04Ni4xYzUxLjQtNzYuNSA2NS43LTgwIDg2LjEtODAgMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpZnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MC42IDE5NC4xYzEuOS0zMC44IDE3LjMtNjEuMiA0NC03OS44QzI3OS40IDEwMy41IDI2OC43IDk2IDI1NiA5NmgtMjkuNGwzMC43LTIyYzcuMi01LjEgOC45LTE1LjEgMy43LTIyLjNsLTkuMy0xM2MtNS4xLTcuMi0xNS4xLTguOS0yMi4zLTMuN2wtMzIgMjIuOSAxMS41LTMwLjZjMy4xLTguMy0xLjEtMTcuNS05LjQtMjAuNmwtMTUtNS42Yy04LjMtMy4xLTE3LjUgMS4xLTIwLjYgOS40bC0xOS45IDUzLTE5LjktNTMuMUMxMjEgMi4xIDExMS44LTIuMSAxMDMuNSAxbC0xNSA1LjZDODAuMiA5LjcgNzYgMTkgNzkuMiAyNy4ybDExLjUgMzAuNkw1OC42IDM1Yy03LjItNS4xLTE3LjItMy41LTIyLjMgMy43bC05LjMgMTNjLTUuMSA3LjItMy41IDE3LjIgMy43IDIyLjNsMzAuNyAyMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2OC45Yy01LjUtOS41LTguOS0yMC4zLTguOS0zMlYyNTZjMC0yOS45IDIwLjgtNTUgNDguNi02MS45ek0yMjQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2MFYzODRIMjI0djk2em0yMjQgMzJoMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMydi05Nkg0NDh2MTI4em0xNjAtMjg4aC0yMC40YzIuNi03LjYgNC40LTE1LjUgNC40LTIzLjggMC0zNS41LTI3LTcyLjItNzIuMS03Mi4yLTQ4LjEgMC03NS45IDQ3LjctODcuOSA3NS4zLTEyLjEtMjcuNi0zOS45LTc1LjMtODcuOS03NS4zLTQ1LjEgMC03Mi4xIDM2LjctNzIuMSA3Mi4yIDAgOC4zIDEuNyAxNi4yIDQuNCAyMy44SDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoMTkyVjIyNGgxNS4zbC43LS4yLjcuMkg0NDh2MTI4aDE5MnYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0yNzIgMGMtMi43LTEuNC01LjEtMy03LjItNC44LTcuMy02LjQtOC44LTEzLjgtOC44LTE5IDAtOS43IDYuNC0yNC4yIDI0LjEtMjQuMiAxOC43IDAgMzUuNiAyNy40IDQ0LjUgNDhIMzM2em0xOTkuMi00LjhjLTIuMSAxLjgtNC41IDMuNC03LjIgNC44aC01Mi42YzguOC0yMC4zIDI1LjgtNDggNDQuNS00OCAxNy43IDAgMjQuMSAxNC41IDI0LjEgMjQuMiAwIDUuMi0xLjUgMTIuNi04LjggMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzQ2hlZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzOS40IDQzMy42Yy04LjQtMjAuNC0zMS44LTMwLjEtNTIuMi0yMS42bC0yMi4xIDkuMi0zOC43LTEwMS45YzQ3LjktMzUgNjQuOC0xMDAuMyAzNC41LTE1Mi44TDQ3NC4zIDE2Yy04LTEzLjktMjUuMS0xOS43LTQwLTEzLjZMMzIwIDQ5LjggMjA1LjcgMi40Yy0xNC45LTYuMi0zMi0uMy00MCAxMy42TDc5LjEgMTY2LjVDNDguOSAyMTkgNjUuNyAyODQuMyAxMTMuNiAzMTkuMkw3NC45IDQyMS4xbC0yMi4xLTkuMmMtMjAuNC04LjUtNDMuNyAxLjItNTIuMiAyMS42LTEuNyA0LjEuMiA4LjggNC4zIDEwLjVsMTYyLjMgNjcuNGM0LjEgMS43IDguNy0uMiAxMC40LTQuMyA4LjQtMjAuNC0xLjItNDMuOC0yMS42LTUyLjNsLTIyLjEtOS4yTDE3My4zIDM0MmM0LjQuNSA4LjggMS4zIDEzLjEgMS4zIDUxLjcgMCA5OS40LTMzLjEgMTEzLjQtODUuM2wyMC4yLTc1LjQgMjAuMiA3NS40YzE0IDUyLjIgNjEuNyA4NS4zIDExMy40IDg1LjMgNC4zIDAgOC43LS44IDEzLjEtMS4zTDUwNiA0NDUuNmwtMjIuMSA5LjJjLTIwLjQgOC41LTMwLjEgMzEuOS0yMS42IDUyLjMgMS43IDQuMSA2LjQgNiAxMC40IDQuM0w2MzUuMSA0NDRjNC0xLjcgNi02LjMgNC4zLTEwLjR6TTI3NS45IDE2Mi4xbC0xMTIuMS00Ni41IDM2LjUtNjMuNCA5NC41IDM5LjItMTguOSA3MC43em04OC4yIDBsLTE4LjktNzAuNyA5NC41LTM5LjIgMzYuNSA2My40LTExMi4xIDQ2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzTWFydGluaUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuMDUgNTcuNkM1MjMuMyAzNi4zNCA1MDguMjUgMCA0NzguMiAwSDMzLjhDMy43NSAwLTExLjMgMzYuMzQgOS45NSA1Ny42TDIyNCAyNzEuNjRWNDY0aC01NmMtMjIuMDkgMC00MCAxNy45MS00MCA0MCAwIDQuNDIgMy41OCA4IDggOGgyNDBjNC40MiAwIDgtMy41OCA4LTggMC0yMi4wOS0xNy45MS00MC00MC00MGgtNTZWMjcxLjY0TDUwMi4wNSA1Ny42ek00NDMuNzcgNDhsLTQ4IDQ4SDExNi4yNGwtNDgtNDhoMzc1LjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGFzc01hcnRpbmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjA1IDU3LjZDNTIzLjMgMzYuMzQgNTA4LjI1IDAgNDc4LjIgMEgzMy44QzMuNzUgMC0xMS4zIDM2LjM0IDkuOTUgNTcuNkwyMjQgMjcxLjY0VjQ2NGgtNTZjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjQwYzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDBoLTU2VjI3MS42NEw1MDIuMDUgNTcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NXaGlza2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMkgzMkMxMi41IDMyLTIuNCA0OS4yLjMgNjguNWw1NiAzNTYuNWM0LjUgMzEuNSAzMS41IDU0LjkgNjMuNCA1NC45aDI3M2MzMS44IDAgNTguOS0yMy40IDYzLjQtNTQuOWw1NS42LTM1Ni41QzUxNC40IDQ5LjIgNDk5LjUgMzIgNDgwIDMyem0tMzcuNCA2NGwtMzAgMTkyaC0zMTNMNjkuNCA5NmgzNzMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzQuMSAyODAuMzdMNTI4Ljc1IDk4LjY2Yy01LjkxLTIzLjctMjEuNTktNDQuMDUtNDMtNTUuODEtMjEuNDQtMTEuNzMtNDYuOTctMTQuMTEtNzAuMTktNi4zM2wtMTUuMjUgNS4wOGMtOC4zOSAyLjc5LTEyLjkyIDExLjg2LTEwLjEyIDIwLjI0bDUuMDYgMTUuMThjMi43OSA4LjM4IDExLjg1IDEyLjkxIDIwLjIzIDEwLjEybDEzLjE4LTQuMzljMTAuODctMy42MiAyMy0zLjU3IDMzLjE2IDEuNzMgMTAuMjkgNS4zNyAxNy41NyAxNC41NiAyMC4zNyAyNS44MmwzOC40NiAxNTMuODJjLTIyLjE5LTYuODEtNDkuNzktMTIuNDYtODEuMi0xMi40Ni0zNC43NyAwLTczLjk4IDcuMDItMTE0Ljg1IDI2Ljc0aC03My4xOGMtNDAuODctMTkuNzQtODAuMDgtMjYuNzUtMTE0Ljg2LTI2Ljc1LTMxLjQyIDAtNTkuMDIgNS42NS04MS4yMSAxMi40NmwzOC40Ni0xNTMuODNjMi43OS0xMS4yNSAxMC4wOS0yMC40NSAyMC4zOC0yNS44MSAxMC4xNi01LjMgMjIuMjgtNS4zNSAzMy4xNS0xLjczbDEzLjE3IDQuMzljOC4zOCAyLjc5IDE3LjQ0LTEuNzQgMjAuMjMtMTAuMTJsNS4wNi0xNS4xOGMyLjgtOC4zOC0xLjczLTE3LjQ1LTEwLjEyLTIwLjI0bC0xNS4yNS01LjA4Yy0yMy4yMi03Ljc4LTQ4Ljc1LTUuNDEtNzAuMTkgNi4zMy0yMS40MSAxMS43Ny0zNy4wOSAzMi4xMS00MyA1NS44TDEuOSAyODAuMzdBNjQuMjE4IDY0LjIxOCAwIDAgMCAwIDI5NS44NnY3MC4yNUMwIDQyOS4wMSA1MS41OCA0ODAgMTE1LjIgNDgwaDM3LjEyYzYwLjI4IDAgMTEwLjM3LTQ1Ljk0IDExNC44OC0xMDUuMzdsMi45My0zOC42M2gzNS43NWwyLjkzIDM4LjYzQzMxMy4zMSA0MzQuMDYgMzYzLjQgNDgwIDQyMy42OCA0ODBoMzcuMTJjNjMuNjIgMCAxMTUuMi01MC45OSAxMTUuMi0xMTMuODh2LTcwLjI1YzAtNS4yMy0uNjQtMTAuNDMtMS45LTE1LjV6bS0zNzAuNzIgODkuNDJjLTEuOTcgMjUuOTEtMjQuNCA0Ni4yMS01MS4wNiA0Ni4yMUgxMTUuMkM4Ni45NyA0MTYgNjQgMzkzLjYyIDY0IDM2Ni4xMXYtMzcuNTRjMTguMTItNi40OSA0My40Mi0xMi45MiA3Mi41OC0xMi45MiAyMy44NiAwIDQ3LjI2IDQuMzMgNjkuOTMgMTIuOTJsLTMuMTMgNDEuMjJ6TTUxMiAzNjYuMTJjMCAyNy41MS0yMi45NyA0OS44OC01MS4yIDQ5Ljg4aC0zNy4xMmMtMjYuNjcgMC00OS4xLTIwLjMtNTEuMDYtNDYuMjFsLTMuMTMtNDEuMjJjMjIuNjctOC41OSA0Ni4wOC0xMi45MiA2OS45NS0xMi45MiAyOS4xMiAwIDU0LjQzIDYuNDQgNzIuNTUgMTIuOTN2MzcuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsb2JlQWZyaWNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE2MCAyMTUuNXY2LjkzYzAgNS44Ny0zLjMyIDExLjI0LTguNTcgMTMuODZsLTE1LjM5IDcuN2ExNS40ODUgMTUuNDg1IDAgMCAxLTE1LjUzLS45N2wtMTguMjEtMTIuMTRhMTUuNTIgMTUuNTIgMCAwIDAtMTMuNS0xLjgxbC0yLjY1Ljg4Yy05LjcgMy4yMy0xMy42NiAxNC43OS03Ljk5IDIzLjNsMTMuMjQgMTkuODZjMi44NyA0LjMxIDcuNzEgNi45IDEyLjg5IDYuOWg4LjIxYzguNTYgMCAxNS41IDYuOTQgMTUuNSAxNS41djExLjM0YzAgMy4zNS0xLjA5IDYuNjItMy4xIDkuM2wtMTguNzQgMjQuOThjLTEuNDIgMS45LTIuMzkgNC4xLTIuODMgNi40M2wtNC4zIDIyLjgzYy0uNjIgMy4yOS0yLjI5IDYuMjktNC43NiA4LjU2YTE1OS42MDggMTU5LjYwOCAwIDAgMC0yNSAyOS4xNmwtMTMuMDMgMTkuNTVhMjcuNzU2IDI3Ljc1NiAwIDAgMS0yMy4wOSAxMi4zNmMtMTAuNTEgMC0yMC4xMi01Ljk0LTI0LjgyLTE1LjM0YTc4LjkwMiA3OC45MDIgMCAwIDEtOC4zMy0zNS4yOVYzNjcuNWMwLTguNTYtNi45NC0xNS41LTE1LjUtMTUuNWgtMjUuODhjLTE0LjQ5IDAtMjguMzgtNS43Ni0zOC42My0xNmE1NC42NTkgNTQuNjU5IDAgMCAxLTE2LTM4LjYzdi0xNC4wNmMwLTE3LjE5IDguMS0zMy4zOCAyMS44NS00My43bDI3LjU4LTIwLjY5YTU0LjY2MyA1NC42NjMgMCAwIDEgMzIuNzgtMTAuOTNoLjg5YzguNDggMCAxNi44NSAxLjk3IDI0LjQzIDUuNzdsMTQuNzIgNy4zNmMzLjY4IDEuODQgNy45MyAyLjE0IDExLjgzLjg0bDQ3LjMxLTE1Ljc3YzYuMzMtMi4xMSAxMC42LTguMDMgMTAuNi0xNC43IDAtOC41Ni02Ljk0LTE1LjUtMTUuNS0xNS41aC0xMC4wOWMtNC4xMSAwLTguMDUtMS42My0xMC45Ni00LjU0bC02LjkyLTYuOTJhMTUuNDkzIDE1LjQ5MyAwIDAgMC0xMC45Ni00LjU0SDE5OS41Yy04LjU2IDAtMTUuNS02Ljk0LTE1LjUtMTUuNXYtNC40YzAtNy4xMSA0Ljg0LTEzLjMxIDExLjc0LTE1LjA0bDE0LjQ1LTMuNjFjMy43NC0uOTQgNy0zLjIzIDkuMTQtNi40NGw4LjA4LTEyLjExYzIuODctNC4zMSA3LjcxLTYuOSAxMi44OS02LjloMjQuMjFjOC41NiAwIDE1LjUtNi45NCAxNS41LTE1LjV2LTIxLjdDMzU5LjIzIDcxLjYzIDQyMi44NiAxMzEuMDIgNDQxLjkzIDIwOEg0MjMuNWMtOC41NiAwLTE1LjUgNi45NC0xNS41IDE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsb2JlQW1lcmljYXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptODIuMjkgMzU3LjZjLTMuOSAzLjg4LTcuOTkgNy45NS0xMS4zMSAxMS4yOC0yLjk5IDMtNS4xIDYuNy02LjE3IDEwLjcxLTEuNTEgNS42Ni0yLjczIDExLjM4LTQuNzcgMTYuODdsLTE3LjM5IDQ2Ljg1Yy0xMy43NiAzLTI4IDQuNjktNDIuNjUgNC42OXYtMjcuMzhjMS42OS0xMi42Mi03LjY0LTM2LjI2LTIyLjYzLTUxLjI1LTYtNi05LjM3LTE0LjE0LTkuMzctMjIuNjN2LTMyLjAxYzAtMTEuNjQtNi4yNy0yMi4zNC0xNi40Ni0yNy45Ny0xNC4zNy03Ljk1LTM0LjgxLTE5LjA2LTQ4LjgxLTI2LjExLTExLjQ4LTUuNzgtMjIuMS0xMy4xNC0zMS42NS0yMS43NWwtLjgtLjcyYTExNC43OTIgMTE0Ljc5MiAwIDAgMS0xOC4wNi0yMC43NGMtOS4zOC0xMy43Ny0yNC42Ni0zNi40Mi0zNC41OS01MS4xNCAyMC40Ny00NS41IDU3LjM2LTgyLjA0IDEwMy4yLTEwMS44OWwyNC4wMSAxMi4wMUMyMDMuNDggODkuNzQgMjE2IDgyLjAxIDIxNiA3MC4xMXYtMTEuM2M3Ljk5LTEuMjkgMTYuMTItMi4xMSAyNC4zOS0yLjQybDI4LjMgMjguM2M2LjI1IDYuMjUgNi4yNSAxNi4zOCAwIDIyLjYzTDI2NCAxMTJsLTEwLjM0IDEwLjM0Yy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFsNC42OSA0LjY5YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtOCA4YTguMDA4IDguMDA4IDAgMCAxLTUuNjYgMi4zNGgtOC45OWMtMi4wOCAwLTQuMDguODEtNS41OCAyLjI3bC05LjkyIDkuNjVhOC4wMDggOC4wMDggMCAwIDAtMS41OCA5LjMxbDE1LjU5IDMxLjE5YzIuNjYgNS4zMi0xLjIxIDExLjU4LTcuMTUgMTEuNThoLTUuNjRjLTEuOTMgMC0zLjc5LS43LTUuMjQtMS45NmwtOS4yOC04LjA2YTE2LjAxNyAxNi4wMTcgMCAwIDAtMTUuNTUtMy4xbC0zMS4xNyAxMC4zOWExMS45NSAxMS45NSAwIDAgMC04LjE3IDExLjM0YzAgNC41MyAyLjU2IDguNjYgNi42MSAxMC42OWwxMS4wOCA1LjU0YzkuNDEgNC43MSAxOS43OSA3LjE2IDMwLjMxIDcuMTZzMjIuNTkgMjcuMjkgMzIgMzJoNjYuNzVjOC40OSAwIDE2LjYyIDMuMzcgMjIuNjMgOS4zN2wxMy42OSAxMy42OWEzMC41MDMgMzAuNTAzIDAgMCAxIDguOTMgMjEuNTcgNDYuNTM2IDQ2LjUzNiAwIDAgMS0xMy43MiAzMi45OHpNNDE3IDI3NC4yNWMtNS43OS0xLjQ1LTEwLjg0LTUtMTQuMTUtOS45N2wtMTcuOTgtMjYuOTdhMjMuOTcgMjMuOTcgMCAwIDEgMC0yNi42MmwxOS41OS0yOS4zOGMyLjMyLTMuNDcgNS41LTYuMjkgOS4yNC04LjE1bDEyLjk4LTYuNDlDNDQwLjIgMTkzLjU5IDQ0OCAyMjMuODcgNDQ4IDI1NmMwIDguNjctLjc0IDE3LjE2LTEuODIgMjUuNTRMNDE3IDI3NC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xvYmVBc2lhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bS0xMS4zNCAyNDAuMjNjLTIuODkgNC44Mi04LjEgNy43Ny0xMy43MiA3Ljc3aC0uMzFjLTQuMjQgMC04LjMxIDEuNjktMTEuMzEgNC42OWwtNS42NiA1LjY2Yy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFsNS42NiA1LjY2YzMgMyA0LjY5IDcuMDcgNC42OSAxMS4zMVYzMDRjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTYuMTFjLTYuMDYgMC0xMS42LTMuNDItMTQuMzEtOC44NWwtMjIuNjItNDUuMjNjLTIuNDQtNC44OC04Ljk1LTUuOTQtMTIuODEtMi4wOGwtMTkuNDcgMTkuNDZjLTMgMy03LjA3IDQuNjktMTEuMzEgNC42OUg1MC44MUM0OS4xMiAyNzcuNTUgNDggMjY2LjkyIDQ4IDI1NmMwLTExMC4yOCA4OS43Mi0yMDAgMjAwLTIwMCAyMS41MSAwIDQyLjIgMy41MSA2MS42MyA5LjgybC01MC4xNiAzOC41M2MtNS4xMSAzLjQxLTQuNjMgMTEuMDYuODYgMTMuODFsMTAuODMgNS40MWM1LjQyIDIuNzEgOC44NCA4LjI1IDguODQgMTQuMzFWMjE2YzAgNC40Mi0zLjU4IDgtOCA4aC0zLjA2Yy0zLjAzIDAtNS44LTEuNzEtNy4xNS00LjQyLTEuNTYtMy4xMi01Ljk2LTMuMjktNy43Ni0uM2wtMTcuMzcgMjguOTV6TTQwOCAzNTguNDNjMCA0LjI0LTEuNjkgOC4zMS00LjY5IDExLjMxbC05LjU3IDkuNTdjLTMgMy03LjA3IDQuNjktMTEuMzEgNC42OWgtMTUuMTZjLTQuMjQgMC04LjMxLTEuNjktMTEuMzEtNC42OWwtMTMuMDEtMTMuMDFhMjYuNzY3IDI2Ljc2NyAwIDAgMC0yNS40Mi03LjA0bC0yMS4yNyA1LjMyYy0xLjI3LjMyLTIuNTcuNDgtMy44OC40OGgtMTAuMzRjLTQuMjQgMC04LjMxLTEuNjktMTEuMzEtNC42OWwtMTEuOTEtMTEuOTFhOC4wMDggOC4wMDggMCAwIDEtMi4zNC01LjY2di0xMC4yYzAtMy4yNyAxLjk5LTYuMjEgNS4wMy03LjQzbDM5LjM0LTE1Ljc0YzEuOTgtLjc5IDMuODYtMS44MiA1LjU5LTMuMDVsMjMuNzEtMTYuODlhNy45NzggNy45NzggMCAwIDEgNC42NC0xLjQ4aDEyLjA5YzMuMjMgMCA2LjE1IDEuOTQgNy4zOSA0LjkzbDUuMzUgMTIuODVhNCA0IDAgMCAwIDMuNjkgMi40NmgzLjhjMS43OCAwIDMuMzUtMS4xOCAzLjg0LTIuODhsNC4yLTE0LjQ3Yy41LTEuNzEgMi4wNi0yLjg4IDMuODQtMi44OGg2LjA2YzIuMjEgMCA0IDEuNzkgNCA0djEyLjkzYzAgMi4xMi44NCA0LjE2IDIuMzQgNS42NmwxMS45MSAxMS45MWMzIDMgNC42OSA3LjA3IDQuNjkgMTEuMzF2MjQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xvYmVFdXJvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMjAwIDI0OGMwIDIyLjUtMy45IDQ0LjItMTAuOCA2NC40aC0yMC4zYy00LjMgMC04LjQtMS43LTExLjQtNC44bC0zMi0zMi42Yy00LjUtNC42LTQuNS0xMi4xLjEtMTYuN2wxMi41LTEyLjV2LTguN2MwLTMtMS4yLTUuOS0zLjMtOGwtOS40LTkuNGMtMi4xLTIuMS01LTMuMy04LTMuM2gtMTZjLTYuMiAwLTExLjMtNS4xLTExLjMtMTEuMyAwLTMgMS4yLTUuOSAzLjMtOGw5LjQtOS40YzIuMS0yLjEgNS0zLjMgOC0zLjNoMzJjNi4yIDAgMTEuMy01LjEgMTEuMy0xMS4zdi05LjRjMC02LjItNS4xLTExLjMtMTEuMy0xMS4zaC0zNi43Yy04LjggMC0xNiA3LjItMTYgMTZ2NC41YzAgNi45LTQuNCAxMy0xMC45IDE1LjJsLTMxLjYgMTAuNWMtMy4zIDEuMS01LjUgNC4xLTUuNSA3LjZ2Mi4yYzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOHMtMy42LTgtOC04SDI0N2MtMyAwLTUuOCAxLjctNy4yIDQuNGwtOS40IDE4LjdjLTIuNyA1LjQtOC4yIDguOC0xNC4zIDguOEgxOTRjLTguOCAwLTE2LTcuMi0xNi0xNlYxOTljMC00LjIgMS43LTguMyA0LjctMTEuM2wyMC4xLTIwLjFjNC42LTQuNiA3LjItMTAuOSA3LjItMTcuNSAwLTMuNCAyLjItNi41IDUuNS03LjZsNDAtMTMuM2MxLjctLjYgMy4yLTEuNSA0LjQtMi43bDI2LjgtMjYuOGMyLjEtMi4xIDMuMy01IDMuMy04IDAtNi4yLTUuMS0xMS4zLTExLjMtMTEuM0gyNThsLTE2IDE2djhjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04di0yMGMwLTIuNSAxLjItNC45IDMuMi02LjRsMjguOS0yMS43YzEuOS0uMSAzLjgtLjMgNS43LS4zQzM1OC4zIDU2IDQ0OCAxNDUuNyA0NDggMjU2ek0xMzAuMSAxNDkuMWMwLTMgMS4yLTUuOSAzLjMtOGwyNS40LTI1LjRjMi4xLTIuMSA1LTMuMyA4LTMuMyA2LjIgMCAxMS4zIDUuMSAxMS4zIDExLjN2MTZjMCAzLTEuMiA1LjktMy4zIDhsLTkuNCA5LjRjLTIuMSAyLjEtNSAzLjMtOCAzLjNoLTE2Yy02LjIgMC0xMS4zLTUuMS0xMS4zLTExLjN6bTEyOCAzMDYuNHYtNy4xYzAtOC44LTcuMi0xNi0xNi0xNmgtMjAuMmMtMTAuOCAwLTI2LjctNS4zLTM1LjQtMTEuOGwtMjIuMi0xNi43Yy0xMS41LTguNi0xOC4yLTIyLjEtMTguMi0zNi40di0yMy45YzAtMTYgOC40LTMwLjggMjIuMS0zOWw0Mi45LTI1LjdjNy4xLTQuMiAxNS4yLTYuNSAyMy40LTYuNWgzMS4yYzEwLjkgMCAyMS40IDMuOSAyOS42IDEwLjlsNDMuMiAzNy4xaDE4LjNjOC41IDAgMTYuNiAzLjQgMjIuNiA5LjRsMTcuMyAxNy4zYzMuNCAzLjQgOC4xIDUuMyAxMi45IDUuM0g0MjNjLTMyLjQgNTguOS05My44IDk5LjUtMTY0LjkgMTAzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsb2JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNi41IDE2MEMzMjIgNzAuNyAyODcuOCA4IDI0OCA4cy03NCA2Mi43LTg4LjUgMTUyaDE3N3pNMTUyIDI1NmMwIDIyLjIgMS4yIDQzLjUgMy4zIDY0aDE4NS4zYzIuMS0yMC41IDMuMy00MS44IDMuMy02NHMtMS4yLTQzLjUtMy4zLTY0SDE1NS4zYy0yLjEgMjAuNS0zLjMgNDEuOC0zLjMgNjR6bTMyNC43LTk2Yy0yOC42LTY3LjktODYuNS0xMjAuNC0xNTgtMTQxLjYgMjQuNCAzMy44IDQxLjIgODQuNyA1MCAxNDEuNmgxMDh6TTE3Ny4yIDE4LjRDMTA1LjggMzkuNiA0Ny44IDkyLjEgMTkuMyAxNjBoMTA4YzguNy01Ni45IDI1LjUtMTA3LjggNDkuOS0xNDEuNnpNNDg3LjQgMTkySDM3Mi43YzIuMSAyMSAzLjMgNDIuNSAzLjMgNjRzLTEuMiA0My0zLjMgNjRoMTE0LjZjNS41LTIwLjUgOC42LTQxLjggOC42LTY0cy0zLjEtNDMuNS04LjUtNjR6TTEyMCAyNTZjMC0yMS41IDEuMi00MyAzLjMtNjRIOC42QzMuMiAyMTIuNSAwIDIzMy44IDAgMjU2czMuMiA0My41IDguNiA2NGgxMTQuNmMtMi0yMS0zLjItNDIuNS0zLjItNjR6bTM5LjUgOTZjMTQuNSA4OS4zIDQ4LjcgMTUyIDg4LjUgMTUyczc0LTYyLjcgODguNS0xNTJoLTE3N3ptMTU5LjMgMTQxLjZjNzEuNC0yMS4yIDEyOS40LTczLjcgMTU4LTE0MS42aC0xMDhjLTguOCA1Ni45LTI1LjYgMTA3LjgtNTAgMTQxLjZ6TTE5LjMgMzUyYzI4LjYgNjcuOSA4Ni41IDEyMC40IDE1OCAxNDEuNi0yNC40LTMzLjgtNDEuMi04NC43LTUwLTE0MS42aC0xMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvbGZCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQxNmgyMjRjMCAxNy43LTE0LjMgMzItMzIgMzJoLTE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyMGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTIwYzAtMTcuNy0xNC4zLTMyLTMyLTMyaC0xNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTMyMC0yMDhjMCA3NC4yLTM5IDEzOS4yLTk3LjUgMTc2aC0yMjFDMzkgMzQ3LjIgMCAyODIuMiAwIDIwOCAwIDkzLjEgOTMuMSAwIDIwOCAwczIwOCA5My4xIDIwOCAyMDh6bS0xODAuMSA0My45YzE4LjMgMCAzMy4xLTE0LjggMzMuMS0zMy4xIDAtMTQuNC05LjMtMjYuMy0yMi4xLTMwLjkgOS42IDI2LjgtMTUuNiA1MS4zLTQxLjkgNDEuOSA0LjYgMTIuOCAxNi41IDIyLjEgMzAuOSAyMi4xem00OS4xIDQ2LjljMC0xNC40LTkuMy0yNi4zLTIyLjEtMzAuOSA5LjYgMjYuOC0xNS42IDUxLjMtNDEuOSA0MS45IDQuNiAxMi44IDE2LjUgMjIuMSAzMC45IDIyLjEgMTguMyAwIDMzLjEtMTQuOSAzMy4xLTMzLjF6bTY0LTY0YzAtMTQuNC05LjMtMjYuMy0yMi4xLTMwLjkgOS42IDI2LjgtMTUuNiA1MS4zLTQxLjkgNDEuOSA0LjYgMTIuOCAxNi41IDIyLjEgMzAuOSAyMi4xIDE4LjMgMCAzMy4xLTE0LjkgMzMuMS0zMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb3B1cmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAzNTJoLTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZoLTE2di04MGMwLTguOC03LjItMTYtMTYtMTZoLTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djE2aC02NFYxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYxNmgtNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2MTZoLTY0VjE2YzAtOC44LTcuMi0xNi0xNi0xNlM5NiA3LjIgOTYgMTZ2MTEySDgwYy04LjggMC0xNiA3LjItMTYgMTZ2ODBINDhjLTguOCAwLTE2IDcuMi0xNiAxNnYxMTJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYxMjhjMCA4LjggNy4yIDE2IDE2IDE2aDgwVjM1MmgzMlYyMjRoMzJ2LTk2aDMydjk2aC0zMnYxMjhoLTMydjE2MGg4MHYtODBjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGg4MFYzNTJoLTMyVjIyNGgtMzJ2LTk2aDMydjk2aDMydjEyOGgzMnYxNjBoODBjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZ6TTIzMiAxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnY0OGgtNDh6bTU2IDE3NmgtNjR2LTY0YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYWR1YXRpb25DYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIyLjM0IDE1My4yTDM0My40IDY3LjVjLTE1LjItNC42Ny0zMS42LTQuNjctNDYuNzkgMEwxNy42NiAxNTMuMmMtMjMuNTQgNy4yMy0yMy41NCAzOC4zNiAwIDQ1LjU5bDQ4LjYzIDE0Ljk0Yy0xMC42NyAxMy4xOS0xNy4yMyAyOS4yOC0xNy44OCA0Ni45QzM4Ljc4IDI2Ni4xNSAzMiAyNzYuMTEgMzIgMjg4YzAgMTAuNzggNS42OCAxOS44NSAxMy44NiAyNS42NUwyMC4zMyA0MjguNTNDMTguMTEgNDM4LjUyIDI1LjcxIDQ0OCAzNS45NCA0NDhoNTYuMTFjMTAuMjQgMCAxNy44NC05LjQ4IDE1LjYyLTE5LjQ3TDgyLjE0IDMxMy42NUM5MC4zMiAzMDcuODUgOTYgMjk4Ljc4IDk2IDI4OGMwLTExLjU3LTYuNDctMjEuMjUtMTUuNjYtMjYuODcuNzYtMTUuMDIgOC40NC0yOC4zIDIwLjY5LTM2LjcyTDI5Ni42IDI4NC41YzkuMDYgMi43OCAyNi40NCA2LjI1IDQ2Ljc5IDBsMjc4Ljk1LTg1LjdjMjMuNTUtNy4yNCAyMy41NS0zOC4zNiAwLTQ1LjZ6TTM1Mi43OSAzMTUuMDljLTI4LjUzIDguNzYtNTIuODQgMy45Mi02NS41OSAwbC0xNDUuMDItNDQuNTVMMTI4IDM4NGMwIDM1LjM1IDg1Ljk2IDY0IDE5MiA2NHMxOTItMjguNjUgMTkyLTY0bC0xNC4xOC0xMTMuNDctMTQ1LjAzIDQ0LjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmVhdGVyVGhhbkVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1LjIyIDEwNy42OWwxNzUuNTYgNjguMDktMTc1LjQ0IDY4LjA1Yy0xOC4zOSA2LjAzLTI3Ljg4IDI0LjM5LTIxLjIgNDFsMTIuMDkgMzAuMDhjNi42OCAxNi42MSAyNi45OSAyNS4xOSA0NS4zOCAxOS4xNUwzOTMuMDIgMjE0LjJjMTMuNzctNC41MiAyMi45OC0xNi42MSAyMi45OC0zMC4xN3YtMTUuOTZjMC0xMy41Ni05LjIxLTI1LjY1LTIyLjk4LTMwLjE3TDkxLjMgMTcuOTJjLTE4LjI5LTYtMzguNTEgMi41My00NS4xNSAxOS4wNkwzNC4xMiA2Ni45Yy02LjY0IDE2LjUzIDIuODEgMzQuNzkgMjEuMSA0MC43OXpNNDI0IDQwMEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwMGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmVhdGVyVGhhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjUuNTIgMjA5Ljg1TDU5LjIyIDY3LjAxYy0xNi4wNi03LjQ5LTM1LjE1LS41NC00Mi42NCAxNS41MkwzLjAxIDExMS42MWMtNy40OSAxNi4wNi0uNTQgMzUuMTUgMTUuNTIgNDIuNjRMMjM2Ljk2IDI1Ni4xIDE4LjQ5IDM1Ny45OUMyLjQ3IDM2NS40Ni00LjQ2IDM4NC41IDMuMDEgNDAwLjUybDEzLjUyIDI5QzI0IDQ0NS41NCA0My4wNCA0NTIuNDcgNTkuMDYgNDQ1bDMwNi40Ny0xNDIuOTFhMzIuMDAzIDMyLjAwMyAwIDAgMCAxOC40OC0yOXYtMzQuMjNjLS4wMS0xMi40NS03LjIxLTIzLjc2LTE4LjQ5LTI5LjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTE0NCA0MDBoLThjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi04aDQwdjQwem0wLTU2aC00MHYtOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4djQwem0tOC0xMzZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTcyIDE5MmgtNDh2LTQwaDQ4djQwem0wLTU2aC00OHYtNDBoNDh2NDB6bTY0IDU2aC00OHYtNDBoNDh2NDB6bTAtNTZoLTQ4di00MGg0OHY0MHptNjQgNTZoLTQ4di00MGg0OHY0MHptMC01NmgtNDh2LTQwaDQ4djQwem0tOC0xMDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem02NCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJoLTh2LTQwaDQwdjh6bTAtMjRoLTQwdi00MGg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNjMuNyAxMjguN2M3LjYtMTEuNCAyNC43LTExLjcgMzIuNyAwIDEyLjQgMTguNCAxNS4xIDM2LjkgMTUuNyA1NS4zLS41IDE4LjQtMy4zIDM2LjktMTUuNyA1NS4zLTcuNiAxMS40LTI0LjcgMTEuNy0zMi43IDAtMTIuNC0xOC40LTE1LjEtMzYuOS0xNS43LTU1LjMuNS0xOC40IDMuMy0zNi45IDE1LjctNTUuM3ptLTE2MCAwYzcuNi0xMS40IDI0LjctMTEuNyAzMi43IDAgMTIuNCAxOC40IDE1LjEgMzYuOSAxNS43IDU1LjMtLjUgMTguNC0zLjMgMzYuOS0xNS43IDU1LjMtNy42IDExLjQtMjQuNyAxMS43LTMyLjcgMC0xMi40LTE4LjQtMTUuMS0zNi45LTE1LjctNTUuMy41LTE4LjQgMy4zLTM2LjkgMTUuNy01NS4zek0yNDggNDMyYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNC0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbkJlYW1Td2VhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTA0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTYgMTI4YzI2LjUgMCA0OC0yMSA0OC00NyAwLTIwLTI4LjUtNjAuNC00MS42LTc3LjgtMy4yLTQuMy05LjYtNC4zLTEyLjggMEM0MzYuNSAyMC42IDQwOCA2MSA0MDggODFjMCAyNiAyMS41IDQ3IDQ4IDQ3em0wIDMyYy00NC4xIDAtODAtMzUuNC04MC03OSAwLTQuNC4zLTE0LjIgOC4xLTMyLjJDMzQ1IDIzLjEgMjk4LjMgOCAyNDggOCAxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4YzAtMzUuMS03LjQtNjguNC0yMC41LTk4LjYtNi4zIDEuNS0xMi43IDIuNi0xOS41IDIuNnptLTEyOC04YzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDEyLTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjEgNy40LTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptLTE2MCAwYzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDEyLTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptODAgMjgwYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNS0zLjcgMjIuNiA2LjIgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbkJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTQ0YzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjMtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em0tMTYwIDBjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTEuOS0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bTgwIDI4MGMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjkgOS40LTIxLjYgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5IZWFydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNOTAuNCAxODMuNmM2LjctMTcuNiAyNi43LTI2LjcgNDQuOS0yMS45bDcuMSAxLjkgMi03LjFjNS0xOC4xIDIyLjgtMzAuOSA0MS41LTI3LjkgMjEuNCAzLjQgMzQuNCAyNC4yIDI4LjggNDQuNUwxOTUuMyAyNDNjLTEuMiA0LjUtNS45IDcuMi0xMC41IDZsLTcwLjItMTguMmMtMjAuNC01LjQtMzEuOS0yNy0yNC4yLTQ3LjJ6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMi0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNiAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zem0xMzMuNC0yMDEuM2wtNzAuMiAxOC4yYy00LjUgMS4yLTkuMi0xLjUtMTAuNS02TDI4MS4zIDE3M2MtNS42LTIwLjMgNy40LTQxLjEgMjguOC00NC41IDE4LjYtMyAzNi40IDkuOCA0MS41IDI3LjlsMiA3LjEgNy4xLTEuOWMxOC4yLTQuNyAzOC4yIDQuMyA0NC45IDIxLjkgNy43IDIwLjMtMy44IDQxLjktMjQuMiA0Ny4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluU3F1aW50VGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA5LjYgMTExLjljMjIuNi0zLjIgNzMuNS0xMiA4OC4zLTI2LjggMTkuMi0xOS4yIDE4LjktNTAuNi0uNy03MC4yUzQ0Ni01IDQyNi45IDE0LjJjLTE0LjggMTQuOC0yMy41IDY1LjctMjYuOCA4OC4zLS44IDUuNSAzLjkgMTAuMiA5LjUgOS40ek0xMDIuNCA0MDAuMWMtMjIuNiAzLjItNzMuNSAxMi04OC4zIDI2LjgtMTkuMSAxOS4xLTE4LjggNTAuNi44IDcwLjJzNTEgMTkuOSA3MC4yLjdjMTQuOC0xNC44IDIzLjUtNjUuNyAyNi44LTg4LjMuOC01LjUtMy45LTEwLjItOS41LTkuNHptMzExLjctMjU2LjVjLTMzIDMuOS00OC42LTI1LjEtNDUuNy00NS43IDMuNC0yNCA3LjQtNDIuMSAxMS41LTU2LjVDMjg1LjEtMTMuNCAxNjEuOC0uNSA4MC42IDgwLjYtLjUgMTYxLjctMTMuNCAyODUgNDEuNCAzNzkuOWMxNC40LTQuMSAzMi40LTggNTYuNS0xMS41IDMzLjItMy45IDQ4LjYgMjUuMiA0NS43IDQ1LjctMy40IDI0LTcuNCA0Mi4xLTExLjUgNTYuNSA5NC44IDU0LjggMjE4LjEgNDEuOSAyOTkuMy0zOS4yczk0LTIwNC40IDM5LjItMjk5LjNjLTE0LjQgNC4xLTMyLjUgOC01Ni41IDExLjV6TTI1NS43IDEwNmMzLjMtMTMuMiAyMi40LTExLjUgMjMuNiAxLjhsNC44IDUyLjMgNTIuMyA0LjhjMTMuNCAxLjIgMTQuOSAyMC4zIDEuOCAyMy42bC05MC41IDIyLjZjLTguOSAyLjItMTYuNy01LjktMTQuNS0xNC41bDIyLjUtOTAuNnptLTkwLjkgMjMwLjNMMTYwIDI4NGwtNTIuMy00LjhjLTEzLjQtMS4yLTE0LjktMjAuMy0xLjgtMjMuNmw5MC41LTIyLjZjOC44LTIuMiAxNi43IDUuOCAxNC41IDE0LjVMMTg4LjMgMzM4Yy0zLjEgMTMuMi0yMi4yIDExLjctMjMuNS0xLjd6bTIxNS43IDQ0LjJjLTI5LjMgMjkuMy03NS43IDUwLjQtMTE2LjcgNTAuNC0xOC45IDAtMzYuNi00LjUtNTEtMTQuNy05LjgtNi45LTguNy0yMS44IDItMjcuMiAyOC4zLTE0LjYgNjMuOS00Mi40IDk3LjgtNzYuM3M2MS43LTY5LjYgNzYuMy05Ny44YzUuNC0xMC41IDIwLjItMTEuOSAyNy4zLTIgMzIuMyA0NS4zIDcuMSAxMjQuNy0zNS43IDE2Ny42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTMzLjggMTg5LjdsODAtNDhjMTEuNi02LjkgMjQgNy43IDE1LjQgMThMMzQzLjYgMjA4bDMzLjYgNDAuM2M4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy43LTQuNy03LjctMTUuOSAwLTIwLjZ6bS0xNjMtMzBjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy44IDQuNyA3LjggMTUuOSAwIDIwLjZsLTgwIDQ4Yy0xMS41IDYuOC0yNC03LjYtMTUuNC0xOGwzMy42LTQwLjMtMzMuNi00MC4zek0yNDggNDMyYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOSA5LjQtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNS0zLjcgMjIuNiA2LjIgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpblN0YXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTk0LjYgMTY4LjlsMzQuOS01IDE1LjUtMzEuNmMyLjktNS44IDExLTUuOCAxMy45IDBsMTUuNSAzMS42IDM0LjkgNWM2LjIgMSA4LjkgOC42IDQuMyAxMy4ybC0yNS40IDI0LjYgNiAzNC45YzEgNi4yLTUuMyAxMS0xMSA3LjlMMTUyIDIzMy4zbC0zMS4zIDE2LjNjLTUuNyAzLjEtMTItMS43LTExLTcuOWw2LTM0LjktMjUuNC0yNC42Yy00LjYtNC43LTEuOS0xMi4zIDQuMy0xMy4zek0yNDggNDMyYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNSAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNS0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3ptMTU3LjctMjQ5LjlsLTI1LjQgMjQuNiA2IDM0LjljMSA2LjItNS4zIDExLTExIDcuOUwzNDQgMjMzLjNsLTMxLjMgMTYuM2MtNS43IDMuMS0xMi0xLjctMTEtNy45bDYtMzQuOS0yNS40LTI0LjZjLTQuNS00LjYtMS45LTEyLjIgNC4zLTEzLjJsMzQuOS01IDE1LjUtMzEuNmMyLjktNS44IDExLTUuOCAxMy45IDBsMTUuNSAzMS42IDM0LjkgNWM2LjMuOSA5IDguNSA0LjQgMTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpblRlYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMi40IDI1Ni4xYy0yMi42IDMuMi03My41IDEyLTg4LjMgMjYuOC0xOS4xIDE5LjEtMTguOCA1MC42LjggNzAuMnM1MSAxOS45IDcwLjIuN2MxNC44LTE0LjggMjMuNS02NS43IDI2LjgtODguMy44LTUuNS0zLjktMTAuMi05LjUtOS40em01MjMuNCAyNi44Yy0xNC44LTE0LjgtNjUuNy0yMy41LTg4LjMtMjYuOC01LjUtLjgtMTAuMyAzLjktOS41IDkuNSAzLjIgMjIuNiAxMiA3My41IDI2LjggODguMyAxOS4yIDE5LjIgNTAuNiAxOC45IDcwLjItLjdzMjAtNTEuMi44LTcwLjN6bS0xMjkuNC0xMi44Yy0zLjgtMjYuNiAxOS4xLTQ5LjUgNDUuNy00NS43IDguOSAxLjMgMTYuOCAyLjcgMjQuMyA0LjFDNTUyLjcgMTA0LjUgNDQ3LjcgOCAzMjAgOFM4Ny4zIDEwNC41IDczLjYgMjI4LjVjNy41LTEuNCAxNS40LTIuOCAyNC4zLTQuMSAzMy4yLTMuOSA0OC42IDI1LjMgNDUuNyA0NS43LTExLjggODIuMy0yOS45IDEwMC40LTM1LjggMTA2LjQtLjkuOS0yIDEuNi0zIDIuNSA0Mi43IDc0LjYgMTIzIDEyNSAyMTUuMiAxMjVzMTcyLjUtNTAuNCAyMTUuMi0xMjUuMWMtMS0uOS0yLjEtMS41LTMtMi41LTUuOS01LjktMjQtMjQtMzUuOC0xMDYuM3pNNDAwIDE1MmMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMi0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bS0xNjAgMGMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMi0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bTgwIDI4MGMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjcgOS4yLTIxLjYgMjAuNy0xNy45QzIyNy4xIDMzMC41IDI3MiAzMzYgMzIwIDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5Ub25ndWVTcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkzLjEgMzc0LjZjLTE0LjQtNi41LTMxLjEgMi4yLTM0LjYgMTcuNmwtMS44IDcuOGMtMi4xIDkuMi0xNS4yIDkuMi0xNy4zIDBsLTEuOC03LjhjLTMuNS0xNS40LTIwLjItMjQuMS0zNC42LTE3LjYtLjkuNC4zLS4yLTE4LjkgOS40djYzYzAgMzUuMiAyOCA2NC41IDYzLjEgNjQuOSAzNS43LjUgNjQuOS0yOC40IDY0LjktNjR2LTY0Yy0xOS41LTkuNi0xOC4yLTguOS0xOS05LjN6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgMTA2LjMgNjcgMTk2LjcgMTYxIDIzMi01LjYtMTIuMi05LTI1LjctOS00MHYtNDUuNWMtMjQuNy0xNi4yLTQzLjUtMzguMS00Ny44LTYzLjgtMi0xMS44IDkuMi0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNyAyMi42IDYuMSAyMC43IDE3LjktNC4zIDI1LjctMjMuMSA0Ny42LTQ3LjggNjMuOFY0NDhjMCAxNC4zLTMuNCAyNy44LTkgNDAgOTQtMzUuMyAxNjEtMTI1LjcgMTYxLTIzMkM0OTYgMTE5IDM4NSA4IDI0OCA4em0tMzMuOCAyMTAuM2wtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjNjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy43IDQuNyA3LjcgMTUuOSAwIDIwLjZ6bTE2MyAzMGM4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy44LTQuNy03LjgtMTUuOSAwLTIwLjZsODAtNDhjMTEuNy02LjkgMjMuOSA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluVG9uZ3VlV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQgMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZjMCAxMDYuMyA2NyAxOTYuNyAxNjEgMjMyLTUuNi0xMi4yLTktMjUuNy05LTQwdi00NS41Yy0yNC43LTE2LjItNDMuNS0zOC4xLTQ3LjgtNjMuOC0yLTExLjggOS4zLTIxLjUgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjUtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS00LjMgMjUuNy0yMy4xIDQ3LjYtNDcuOCA2My44VjQ0OGMwIDE0LjMtMy40IDI3LjgtOSA0MCA5NC0zNS4zIDE2MS0xMjUuNyAxNjEtMjMyQzQ5NiAxMTkgMzg1IDggMjQ4IDh6bS01NiAyMjVsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwxMTIgMjMzYy04LjUgNy40LTIxLjYuMy0xOS44LTEwLjggNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMjA4IDE5NyAyMTIgMjIyLjJjMS42IDExLjEtMTEuNiAxOC4yLTIwIDEwLjh6bTE1MiAzOWMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NCA2NCAyOC43IDY0IDY0LTI4LjcgNjQtNjQgNjR6bS01MC45IDEwMi42Yy0xNC40LTYuNS0zMS4xIDIuMi0zNC42IDE3LjZsLTEuOCA3LjhjLTIuMSA5LjItMTUuMiA5LjItMTcuMyAwbC0xLjgtNy44Yy0zLjUtMTUuNC0yMC4yLTI0LjEtMzQuNi0xNy42LS45LjQuMy0uMi0xOC45IDkuNHY2M2MwIDM1LjIgMjggNjQuNSA2My4xIDY0LjkgMzUuNy41IDY0LjktMjguNCA2NC45LTY0di02NGMtMTkuNS05LjYtMTguMi04LjktMTktOS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluVG9uZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgMTA2LjMgNjcgMTk2LjcgMTYxIDIzMi01LjYtMTIuMi05LTI1LjctOS00MHYtNDUuNWMtMjQuNy0xNi4yLTQzLjUtMzguMS00Ny44LTYzLjgtMi0xMS44IDkuMy0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNiAyMi42IDYuMSAyMC43IDE3LjktNC4zIDI1LjctMjMuMSA0Ny42LTQ3LjggNjMuOFY0NDhjMCAxNC4zLTMuNCAyNy44LTkgNDAgOTQtMzUuMyAxNjEtMTI1LjcgMTYxLTIzMkM0OTYgMTE5IDM4NSA4IDI0OCA4em0tODAgMjMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0tMzQuOSAxMzQuNmMtMTQuNC02LjUtMzEuMSAyLjItMzQuNiAxNy42bC0xLjggNy44Yy0yLjEgOS4yLTE1LjIgOS4yLTE3LjMgMGwtMS44LTcuOGMtMy41LTE1LjQtMjAuMi0yNC4xLTM0LjYtMTcuNi0uOS40LjMtLjItMTguOSA5LjR2NjNjMCAzNS4yIDI4IDY0LjUgNjMuMSA2NC45IDM1LjcuNSA2NC45LTI4LjQgNjQuOS02NHYtNjRjLTE5LjUtOS42LTE4LjItOC45LTE5LTkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbldpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOCAwIDExOSAwIDI1NnptMjAwLTQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMnptMTY4IDI1bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMjg4IDIzM2MtOC4zIDcuNC0yMS42LjQtMTkuOC0xMC44IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzM4NCAxOTcgMzg4IDIyMi4yYzEuNiAxMS0xMS41IDE4LjItMjAgMTAuOHptLTI0My4xIDg3LjhDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuMy0zLjcgMjIuNiA2IDIwLjcgMTcuOS05LjIgNTUtODMuMiA5My4zLTE0My44IDkzLjNzLTEzNC41LTM4LjMtMTQzLjgtOTMuM2MtMi0xMS45IDkuMy0yMS42IDIwLjctMTcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0tMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem04MCAyNTZjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS4zLTMuNyAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwSG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyODhIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0xNjAgMGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0xNjAgMGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek05NiA5NkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTE2MCAwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTE2MCAwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBMaW5lc1ZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQ5NlYxNmMwLTguOC03LjItMTYtMTYtMTZINDhjLTguOCAwLTE2IDcuMi0xNiAxNnY0ODBjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnptMTI4IDBWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4MGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDI4OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0ODBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTAtMTI4SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4MGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpcFZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMySDMyQzE0LjMzIDMyIDAgNDYuMzMgMCA2NHY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMCAxNjBIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wIDE2MEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTI4OCAzMmgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAgMTYwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAgMTYwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1aXRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjMgMzlMNDczIDkuMzdhMzIgMzIgMCAwIDAtNDUuMjYgMEwzODEuNDYgNTUuN2EzNS4xNCAzNS4xNCAwIDAgMC04LjUzIDEzLjc5TDM2MC43NyAxMDZsLTc2LjI2IDc2LjI2Yy0xMi4xNi04Ljc2LTI1LjUtMTUuNzQtNDAuMS0xOS4xNC0zMy40NS03Ljc4LTY3LS44OC04OS44OCAyMmE4Mi40NSA4Mi40NSAwIDAgMC0yMC4yNCAzMy40N2MtNiAxOC41Ni0yMy4yMSAzMi42OS00Mi4xNSAzNC40Ni0yMy43IDIuMjctNDUuNzMgMTEuNDUtNjIuNjEgMjguNDRDLTE2LjExIDMyNy03LjkgNDA5IDQ3LjU4IDQ2NC40NVMxODUgNTI4IDIzMC41NiA0ODIuNTJjMTctMTYuODggMjYuMTYtMzguOSAyOC40NS02Mi43MSAxLjc2LTE4Ljg1IDE1Ljg5LTM2LjEzIDM0LjQzLTQyLjE0YTgyLjYgODIuNiAwIDAgMCAzMy40OC0yMC4yNWMyMi44Ny0yMi44OCAyOS43NC01Ni4zNiAyMi04OS43NS0zLjM5LTE0LjY0LTEwLjM3LTI4LTE5LjE2LTQwLjJMNDA2IDE1MS4yM2wzNi40OC0xMi4xNmEzNS4xNCAzNS4xNCAwIDAgMCAxMy43OS04LjUzbDQ2LjMzLTQ2LjMyYTMyIDMyIDAgMCAwIC4wMy00NS4yMnpNMjA4IDM1MmE0OCA0OCAwIDEgMSA0OC00OCA0OCA0OCAwIDAgMS00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptLTExMiA0OGgtMzJjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2ODBIMTYwdi04MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC0zMmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnYyMjRjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di04MGgxMjh2ODBjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjE0NGMwLTguODM3LTcuMTYzLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW1idXJnZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1Nkg0OGE0OCA0OCAwIDAgMCAwIDk2aDQxNmE0OCA0OCAwIDAgMCAwLTk2em0xNiAxMjhIMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MTZhNjQgNjQgMCAwIDAgNjQgNjRoMzUyYTY0IDY0IDAgMCAwIDY0LTY0di0xNmExNiAxNiAwIDAgMC0xNi0xNnpNNTguNjQgMjI0aDM5NC43MmMzNC41NyAwIDU0LjYyLTQzLjkgMzQuODItNzUuODhDNDQ4IDgzLjIgMzU5LjU1IDMyLjEgMjU2IDMyYy0xMDMuNTQuMS0xOTIgNTEuMi0yMzIuMTggMTE2LjExQzQgMTgwLjA5IDI0LjA3IDIyNCA1OC42NCAyMjR6TTM4NCAxMTJhMTYgMTYgMCAxIDEtMTYgMTYgMTYgMTYgMCAwIDEgMTYtMTZ6TTI1NiA4MGExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnptLTEyOCAzMmExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFtbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3MS4zMSAxOTMuOTRsLTIyLjYzLTIyLjYzYy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0xMS4zMSAxMS4zMS0yOC45LTI4LjljNS42My0yMS4zMS4zNi00NC45LTE2LjM1LTYxLjYxbC00NS4yNS00NS4yNWMtNjIuNDgtNjIuNDgtMTYzLjc5LTYyLjQ4LTIyNi4yOCAwbDkwLjUxIDQ1LjI1djE4Ljc1YzAgMTYuOTcgNi43NCAzMy4yNSAxOC43NSA0NS4yNWw0OS4xNCA0OS4xNGMxNi43MSAxNi43MSA0MC4zIDIxLjk4IDYxLjYxIDE2LjM1bDI4LjkgMjguOS0xMS4zMSAxMS4zMWMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDkwLjUxLTkwLjUxYzYuMjMtNi4yNCA2LjIzLTE2LjM3LS4wMi0yMi42MnptLTI4Ni43Mi0xNS4yYy0zLjctMy43LTYuODQtNy43OS05Ljg1LTExLjk1TDE5LjY0IDQwNC45NmMtMjUuNTcgMjMuODgtMjYuMjYgNjQuMTktMS41MyA4OC45M3M2NS4wNSAyNC4wNSA4OC45My0xLjUzbDIzOC4xMy0yNTUuMDdjLTMuOTYtMi45MS03LjktNS44Ny0xMS40NC05LjQxbC00OS4xNC00OS4xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFtc2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA5LjM0IDMwNy4yNUM1MDQuMjggMjk1LjU2IDQ5Mi43NSAyODggNDgwIDI4OGgtNjRWODBjMC0yMi0xOC00MC00MC00MHMtNDAgMTgtNDAgNDB2MTM0YzAgNS41Mi00LjQ4IDEwLTEwIDEwaC0yMGMtNS41MiAwLTEwLTQuNDgtMTAtMTBWNDBjMC0yMi0xOC00MC00MC00MHMtNDAgMTgtNDAgNDB2MTc0YzAgNS41Mi00LjQ4IDEwLTEwIDEwaC0yMGMtNS41MiAwLTEwLTQuNDgtMTAtMTBWODBjMC0yMi0xOC00MC00MC00MFM5NiA1OCA5NiA4MHYyMDhIMzJjLTEyLjc1IDAtMjQuMjggNy41Ni0yOS4zNCAxOS4yNWEzMS45NjYgMzEuOTY2IDAgMCAwIDUuOTQgMzQuNThsMTAyLjY5IDExMC4wM0MxNDYuOTcgNDkwLjA4IDE5OS42OSA1MTIgMjU2IDUxMnMxMDkuMDMtMjEuOTIgMTQ0LjcyLTYwLjE0TDUwMy40IDM0MS44M2EzMS45NjYgMzEuOTY2IDAgMCAwIDUuOTQtMzQuNTh6TTI1NiA0MTZjLTUzLjAyIDAtOTYtNjQtOTYtNjRzNDIuOTgtNjQgOTYtNjQgOTYgNjQgOTYgNjQtNDIuOTggNjQtOTYgNjR6bTAtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRIb2xkaW5nSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjMgMjUwLjVjNyA3LjQgMTguNCA3LjQgMjUuNSAwbDEwOC45LTExNC4yYzMxLjYtMzMuMiAyOS44LTg4LjItNS42LTExOC44LTMwLjgtMjYuNy03Ni43LTIxLjktMTA0LjkgNy43TDI4OCAzNi45bC0xMS4xLTExLjZDMjQ4LjctNC40IDIwMi44LTkuMiAxNzIgMTcuNWMtMzUuMyAzMC42LTM3LjIgODUuNi01LjYgMTE4LjhsMTA4LjkgMTE0LjJ6bTI5MCA3Ny42Yy0xMS44LTEwLjctMzAuMi0xMC00Mi42IDBMNDMwLjMgNDAyYy0xMS4zIDkuMS0yNS40IDE0LTQwIDE0SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg3OC4zYzE1LjkgMCAzMC43LTEwLjkgMzMuMy0yNi42IDMuMy0yMC0xMi4xLTM3LjQtMzEuNi0zNy40SDE5MmMtMjcgMC01My4xIDkuMy03NC4xIDI2LjNMNzEuNCAzODRIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzU2LjhjMTQuNSAwIDI4LjYtNC45IDQwLTE0TDU2NCAzNzdjMTUuMi0xMi4xIDE2LjQtMzUuMyAxLjMtNDguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1OS44OCwxNzUuODJoNjR2NjRhMTYsMTYsMCwwLDAsMTYsMTZoNjRhMTYsMTYsMCwwLDAsMTYtMTZ2LTY0aDY0YTE2LDE2LDAsMCwwLDE2LTE2di02NGExNiwxNiwwLDAsMC0xNi0xNmgtNjR2LTY0YTE2LDE2LDAsMCwwLTE2LTE2aC02NGExNiwxNiwwLDAsMC0xNiwxNnY2NGgtNjRhMTYsMTYsMCwwLDAtMTYsMTZ2NjRBMTYsMTYsMCwwLDAsMTU5Ljg4LDE3NS44MlpNNTY4LjA3LDMzNi4xM2EzOS45MSwzOS45MSwwLDAsMC01NS45My04LjQ3TDM5Mi40Nyw0MTUuODRIMjcxLjg2YTE2LDE2LDAsMCwxLDAtMzJIMzUwLjFjMTYsMCwzMC43NS0xMC44NywzMy4zNy0yNi42MWEzMi4wNiwzMi4wNiwwLDAsMC0zMS42Mi0zNy4zOGgtMTYwYTExNy43LDExNy43LDAsMCwwLTc0LjEyLDI2LjI1bC00Ni41LDM3Ljc0SDE1Ljg3YTE2LjExLDE2LjExLDAsMCwwLTE2LDE2djk2YTE2LjExLDE2LjExLDAsMCwwLDE2LDE2aDM0N2ExMDQuOCwxMDQuOCwwLDAsMCw2MS43LTIwLjI3TDU1OS42LDM5MkE0MCw0MCwwLDAsMCw1NjguMDcsMzM2LjEzWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ1VzZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzEuMDYsMTQ0LjNsNTQuMjcsMTQuM2E4LjU5LDguNTksMCwwLDEsNi42Myw4LjFjMCw0LjYtNC4wOSw4LjQtOS4xMiw4LjRoLTM1LjZhMzAsMzAsMCwwLDEtMTEuMTktMi4yYy01LjI0LTIuMi0xMS4yOC0xLjctMTUuMywybC0xOSwxNy41YTExLjY4LDExLjY4LDAsMCwwLTIuMjUsMi42NiwxMS40MiwxMS40MiwwLDAsMCwzLjg4LDE1Ljc0LDgzLjc3LDgzLjc3LDAsMCwwLDM0LjUxLDExLjVWMjQwYzAsOC44LDcuODMsMTYsMTcuMzcsMTZoMTcuMzdjOS41NSwwLDE3LjM4LTcuMiwxNy4zOC0xNlYyMjIuNGMzMi45My0zLjYsNTcuODQtMzEsNTMuNS02My0zLjE1LTIzLTIyLjQ2LTQxLjMtNDYuNTYtNDcuN0wyODIuNjgsOTcuNGE4LjU5LDguNTksMCwwLDEtNi42My04LjFjMC00LjYsNC4wOS04LjQsOS4xMi04LjRoMzUuNkEzMCwzMCwwLDAsMSwzMzIsODMuMWM1LjIzLDIuMiwxMS4yOCwxLjcsMTUuMy0ybDE5LTE3LjVBMTEuMzEsMTEuMzEsMCwwLDAsMzY4LjQ3LDYxYTExLjQzLDExLjQzLDAsMCwwLTMuODQtMTUuNzgsODMuODIsODMuODIsMCwwLDAtMzQuNTItMTEuNVYxNmMwLTguOC03LjgyLTE2LTE3LjM3LTE2SDI5NS4zN0MyODUuODIsMCwyNzgsNy4yLDI3OCwxNlYzMy42Yy0zMi44OSwzLjYtNTcuODUsMzEtNTMuNTEsNjNDMjI3LjYzLDExOS42LDI0NywxMzcuOSwyNzEuMDYsMTQ0LjNaTTU2NS4yNywzMjguMWMtMTEuOC0xMC43LTMwLjItMTAtNDIuNiwwTDQzMC4yNyw0MDJhNjMuNjQsNjMuNjQsMCwwLDEtNDAsMTRIMjcyYTE2LDE2LDAsMCwxLDAtMzJoNzguMjljMTUuOSwwLDMwLjcxLTEwLjksMzMuMjUtMjYuNmEzMS4yLDMxLjIsMCwwLDAsLjQ2LTUuNDZBMzIsMzIsMCwwLDAsMzUyLDMyMEgxOTJhMTE3LjY2LDExNy42NiwwLDAsMC03NC4xLDI2LjI5TDcxLjQsMzg0SDE2QTE2LDE2LDAsMCwwLDAsNDAwdjk2YTE2LDE2LDAsMCwwLDE2LDE2SDM3Mi43N2E2NCw2NCwwLDAsMCw0MC0xNEw1NjQsMzc3YTMyLDMyLDAsMCwwLDEuMjgtNDguOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjU2YzUzIDAgOTYtNDIuMSA5Ni05NCAwLTQwLTU3LjEtMTIwLjctODMuMi0xNTUuNi02LjQtOC41LTE5LjItOC41LTI1LjYgMEMyNDkuMSA0MS4zIDE5MiAxMjIgMTkyIDE2MmMwIDUxLjkgNDMgOTQgOTYgOTR6bTI3Ny4zIDcyLjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYgMEw0MzAuMyA0MDJjLTExLjMgOS4xLTI1LjQgMTQtNDAgMTRIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDc4LjNjMTUuOSAwIDMwLjctMTAuOSAzMy4zLTI2LjYgMy4zLTIwLTEyLjEtMzcuNC0zMS42LTM3LjRIMTkyYy0yNyAwLTUzLjEgOS4zLTc0LjEgMjYuM0w3MS40IDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNmgzNTYuOGMxNC41IDAgMjguNi00LjkgNDAtMTRMNTY0IDM3N2MxNS4yLTEyLjEgMTYuNC0zNS4zIDEuMy00OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjUuMyAzMjguMWMtMTEuOC0xMC43LTMwLjItMTAtNDIuNiAwTDQzMC4zIDQwMmMtMTEuMyA5LjEtMjUuNCAxNC00MCAxNEgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNzguM2MxNS45IDAgMzAuNy0xMC45IDMzLjMtMjYuNiAzLjMtMjAtMTIuMS0zNy40LTMxLjYtMzcuNEgxOTJjLTI3IDAtNTMuMSA5LjMtNzQuMSAyNi4zTDcxLjQgMzg0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDM1Ni44YzE0LjUgMCAyOC42LTQuOSA0MC0xNEw1NjQgMzc3YzE1LjItMTIuMSAxNi40LTM1LjMgMS4zLTQ4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ4MGgxOTJWMzYzLjc3OGE5NS45OTggOTUuOTk4IDAgMCAwLTE0LjgzMy01MS4yNjNMMzk4LjEyNyA1NC4zNjhBNDggNDggMCAwIDAgMzU3LjU0NCAzMkgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnYxNmMwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZoMjI5Ljk4MWMxMi44NDQgMCAyMS41NTYgMTMuMDY3IDE2LjYxNSAyNC45MjNsLTIxLjQxIDUxLjM4NUEzMiAzMiAwIDAgMSAyNTEuNjQ4IDIyNEgxMjhjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHY4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNDcuNDA2YTQ3Ljk5NSA0Ny45OTUgMCAwIDEgMjUuNjkyIDcuNDU1bDExMS43NDggNzAuODExQTI0LjAwMSAyNC4wMDEgMCAwIDEgMzg0IDQxOC41MzlWNDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kTWlkZGxlRmluZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3OS45MyAzMTcuMTJhMzcuMzMgMzcuMzMgMCAwIDAtMjguMjgtMzYuMTlMNDE2IDI3MnYtNDkuNTljMC0xMS40NC05LjY5LTIxLjI5LTIzLjE1LTIzLjU0bC0zOC40LTYuNEMzMzYuNjMgMTg5LjUgMzIwIDIwMC44NiAzMjAgMjE2djMyYTggOCAwIDAgMS0xNiAwVjUwYzAtMjYuMjgtMjAuMjUtNDkuMi00Ni41Mi01MEE0OCA0OCAwIDAgMCAyMDggNDh2MjAwYTggOCAwIDAgMS0xNiAwdi0zMmMwLTE1LjE1LTE2LjYzLTI2LjUxLTM0LjQ1LTIzLjU0bC0zMC42OCA1LjEyYy0xOCAzLTMwLjg3IDE2LjEyLTMwLjg3IDMxLjM4VjM3NmE4IDggMCAwIDEtMTYgMHYtNzZsLTI3LjM2IDE1QTM3LjM0IDM3LjM0IDAgMCAwIDMyIDM0OC40djczLjQ3YTM3LjMxIDM3LjMxIDAgMCAwIDEwLjkzIDI2LjM5bDMwLjkzIDMwLjkzQTExMiAxMTIgMCAwIDAgMTUzLjA1IDUxMmgyMTVBMTEyIDExMiAwIDAgMCA0ODAgNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA4Ljc4MSAxMjguMDA3QzM4Ni4zNTYgMTI3LjU3OCAzNjggMTQ2LjM2IDM2OCAxNjguNzlWMjU2aC04Vjc5Ljc5YzAtMjIuNDMtMTguMzU2LTQxLjIxMi00MC43ODEtNDAuNzgzQzI5Ny40ODggMzkuNDIzIDI4MCA1Ny4xNjkgMjgwIDc5djE3N2gtOFY0MC43OUMyNzIgMTguMzYgMjUzLjY0NC0uNDIyIDIzMS4yMTkuMDA3IDIwOS40ODguNDIzIDE5MiAxOC4xNjkgMTkyIDQwdjIxNmgtOFY4MC43OWMwLTIyLjQzLTE4LjM1Ni00MS4yMTItNDAuNzgxLTQwLjc4M0MxMjEuNDg4IDQwLjQyMyAxMDQgNTguMTY5IDEwNCA4MHYyMzUuOTkybC0zMS42NDgtNDMuNTE5Yy0xMi45OTMtMTcuODY2LTM4LjAwOS0yMS44MTctNTUuODc3LTguODIzLTE3Ljg2NSAxMi45OTQtMjEuODE1IDM4LjAxLTguODIyIDU1Ljg3N2wxMjUuNjAxIDE3Mi43MDVBNDggNDggMCAwIDAgMTcyLjA3MyA1MTJoMTk3LjU5YzIyLjI3NCAwIDQxLjYyMi0xNS4zMjQgNDYuNzI0LTM3LjAwNmwyNi41MDgtMTEyLjY2YTE5Mi4wMTEgMTkyLjAxMSAwIDAgMCA1LjEwNC00My45NzVWMTY4Yy4wMDEtMjEuODMxLTE3LjQ4Ny0zOS41NzctMzkuMjE4LTM5Ljk5M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBlYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwOCAyMTZjLTIyLjA5MiAwLTQwIDE3LjkwOS00MCA0MGgtOHYtMzJjMC0yMi4wOTEtMTcuOTA4LTQwLTQwLTQwcy00MCAxNy45MDktNDAgNDB2MzJoLThWNDhjMC0yNi41MS0yMS40OS00OC00OC00OHMtNDggMjEuNDktNDggNDh2MjA4aC0xMy41NzJMOTIuNjg4IDc4LjQ0OUM4Mi45OTQgNTMuNzc0IDU1LjEzNCA0MS42MyAzMC40NjEgNTEuMzI0IDUuNzg3IDYxLjAxNy02LjM1NiA4OC44NzcgMy4zMzcgMTEzLjU1MWw3NC43NjUgMTkwLjM0Mi0zMS4wOSAyNC44NzJjLTE1LjM4MSAxMi4zMDYtMTkuNTE1IDMzLjk3OC05Ljc0MSA1MS4wODFsNjQgMTEyQTM5Ljk5OCAzOS45OTggMCAwIDAgMTM2IDUxMmgyNDBjMTguNTYyIDAgMzQuNjg2LTEyLjc3IDM4LjkzNy0zMC44MzhsMzItMTM2QTM5Ljk3IDM5Ljk3IDAgMCAwIDQ0OCAzMzZ2LTgwYzAtMjIuMDkxLTE3LjkwOC00MC00MC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS44MjYgNDY3LjJWMzE3Ljk2NmMtOC4yNDggNS44NDEtMTYuNTU4IDEwLjU3LTI0LjkxOCAxNC4xNTNDMzUuMDk4IDM0NS43NTItLjAxNCAzMjIuMjIyIDAgMjg4Yy4wMDgtMTguNjE2IDEwLjg5Ny0zMi4yMDMgMjkuMDkyLTQwIDI4LjI4Ni0xMi4xMjIgNjQuMzI5LTc4LjY0OCA3Ny4zMjMtMTA3LjUzNCA3Ljk1Ni0xNy44NTcgMjUuNDc5LTI4LjQ1MyA0My44NDUtMjguNDY0bC4wMDEtLjAwMmgxNzEuNTI2YzExLjgxMiAwIDIxLjg5NyA4LjU5NiAyMy43MDMgMjAuMjY5IDcuMjUgNDYuODM3IDM4LjQ4MyA2MS43NiAzOC4zMTUgMTIzLjczMS0uMDA3IDIuNzI0LjE5NSAxMy4yNTQuMTk1IDE2IDAgNTAuNjU0LTIyLjEyMiA4MS41NzQtNzEuMjYzIDcyLjYtOS4yOTcgMTguNTk3LTM5LjQ4NiAzMC43MzgtNjIuMzE1IDE2LjQ1LTIxLjE3NyAyNC42NDUtNTMuODk2IDIyLjYzOS03MC45NDQgNi4yOTlWNDY3LjJjMCAyNC4xNS0yMC4yMDEgNDQuOC00My44MjYgNDQuOC0yMy4yODMgMC00My44MjYtMjEuMzUtNDMuODI2LTQ0Ljh6TTExMiA3MlYyNGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTkyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0OGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTM2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR6bTIxMi0yNGMwLTExLjA0Ni04Ljk1NC0yMC0yMC0yMHMtMjAgOC45NTQtMjAgMjAgOC45NTQgMjAgMjAgMjAgMjAtOC45NTQgMjAtMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQb2ludExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQuOCAxNTUuODI2aDE0OS4yMzRjLTUuODQxLTguMjQ4LTEwLjU3LTE2LjU1OC0xNC4xNTMtMjQuOTE4QzE2Ni4yNDggOTkuMDk4IDE4OS43NzggNjMuOTg2IDIyNCA2NGMxOC42MTYuMDA4IDMyLjIwMyAxMC44OTcgNDAgMjkuMDkyIDEyLjEyMiAyOC4yODYgNzguNjQ4IDY0LjMyOSAxMDcuNTM0IDc3LjMyMyAxNy44NTcgNy45NTYgMjguNDUzIDI1LjQ3OSAyOC40NjQgNDMuODQ1bC4wMDIuMDAxdjE3MS41MjZjMCAxMS44MTItOC41OTYgMjEuODk3LTIwLjI2OSAyMy43MDMtNDYuODM3IDcuMjUtNjEuNzYgMzguNDgzLTEyMy43MzEgMzguMzE1LTIuNzI0LS4wMDctMTMuMjU0LjE5NS0xNiAuMTk1LTUwLjY1NCAwLTgxLjU3NC0yMi4xMjItNzIuNi03MS4yNjMtMTguNTk3LTkuMjk3LTMwLjczOC0zOS40ODYtMTYuNDUtNjIuMzE1LTI0LjY0NS0yMS4xNzctMjIuNjM5LTUzLjg5Ni02LjI5OS03MC45NDRINDQuOGMtMjQuMTUgMC00NC44LTIwLjIwMS00NC44LTQzLjgyNiAwLTIzLjI4MyAyMS4zNS00My44MjYgNDQuOC00My44MjZ6TTQ0MCAxNzZoNDhjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTQ4Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMjAwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHptMjQgMjEyYzExLjA0NiAwIDIwLTguOTU0IDIwLTIwcy04Ljk1NC0yMC0yMC0yMC0yMCA4Ljk1NC0yMCAyMCA4Ljk1NCAyMCAyMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDE5OS42NTJjMCAyMy42MjUtMjAuNjUgNDMuODI2LTQ0LjggNDMuODI2aC05OS44NTFjMTYuMzQgMTcuMDQ4IDE4LjM0NiA0OS43NjYtNi4yOTkgNzAuOTQ0IDE0LjI4OCAyMi44MjkgMi4xNDcgNTMuMDE3LTE2LjQ1IDYyLjMxNUMzNTMuNTc0IDQyNS44NzggMzIyLjY1NCA0NDggMjcyIDQ0OGMtMi43NDYgMC0xMy4yNzYtLjIwMy0xNi0uMTk1LTYxLjk3MS4xNjgtNzYuODk0LTMxLjA2NS0xMjMuNzMxLTM4LjMxNUMxMjAuNTk2IDQwNy42ODMgMTEyIDM5Ny41OTkgMTEyIDM4NS43ODZWMjE0LjI2MWwuMDAyLS4wMDFjLjAxMS0xOC4zNjYgMTAuNjA3LTM1Ljg4OSAyOC40NjQtNDMuODQ1IDI4Ljg4Ni0xMi45OTQgOTUuNDEzLTQ5LjAzOCAxMDcuNTM0LTc3LjMyMyA3Ljc5Ny0xOC4xOTQgMjEuMzg0LTI5LjA4NCA0MC0yOS4wOTIgMzQuMjIyLS4wMTQgNTcuNzUyIDM1LjA5OCA0NC4xMTkgNjYuOTA4LTMuNTgzIDguMzU5LTguMzEyIDE2LjY3LTE0LjE1MyAyNC45MThINDY3LjJjMjMuNDUgMCA0NC44IDIwLjU0MyA0NC44IDQzLjgyNnpNOTYgMjAwdjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYyMDBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDQ4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHpNNjggMzY4YzAtMTEuMDQ2LTguOTU0LTIwLTIwLTIwcy0yMCA4Ljk1NC0yMCAyMCA4Ljk1NCAyMCAyMCAyMCAyMC04Ljk1NCAyMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM1LjY1MiAwYzIzLjYyNSAwIDQzLjgyNiAyMC42NSA0My44MjYgNDQuOHY5OS44NTFjMTcuMDQ4LTE2LjM0IDQ5Ljc2Ni0xOC4zNDYgNzAuOTQ0IDYuMjk5IDIyLjgyOS0xNC4yODggNTMuMDE3LTIuMTQ3IDYyLjMxNSAxNi40NUMzNjEuODc4IDE1OC40MjYgMzg0IDE4OS4zNDYgMzg0IDI0MGMwIDIuNzQ2LS4yMDMgMTMuMjc2LS4xOTUgMTYgLjE2OCA2MS45NzEtMzEuMDY1IDc2Ljg5NC0zOC4zMTUgMTIzLjczMUMzNDMuNjgzIDM5MS40MDQgMzMzLjU5OSA0MDAgMzIxLjc4NiA0MDBIMTUwLjI2MWwtLjAwMS0uMDAyYy0xOC4zNjYtLjAxMS0zNS44ODktMTAuNjA3LTQzLjg0NS0yOC40NjRDOTMuNDIxIDM0Mi42NDggNTcuMzc3IDI3Ni4xMjIgMjkuMDkyIDI2NCAxMC44OTcgMjU2LjIwMy4wMDggMjQyLjYxNiAwIDIyNGMtLjAxNC0zNC4yMjIgMzUuMDk4LTU3Ljc1MiA2Ni45MDgtNDQuMTE5IDguMzU5IDMuNTgzIDE2LjY3IDguMzEyIDI0LjkxOCAxNC4xNTNWNDQuOGMwLTIzLjQ1IDIwLjU0My00NC44IDQzLjgyNi00NC44ek0xMzYgNDE2aDE5MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2NDhjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDEzNmMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di00OGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjR6bTE2OCAyOGMtMTEuMDQ2IDAtMjAgOC45NTQtMjAgMjBzOC45NTQgMjAgMjAgMjAgMjAtOC45NTQgMjAtMjAtOC45NTQtMjAtMjAtMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQb2ludGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAyNDB2OTZjMCAzLjA4NC0uMzU2IDYuMTU5LTEuMDYzIDkuMTYybC0zMiAxMzZDNDEwLjY4NiA0OTkuMjMgMzk0LjU2MiA1MTIgMzc2IDUxMkgxNjhhNDAuMDA0IDQwLjAwNCAwIDAgMS0zMi4zNS0xNi40NzNsLTEyNy45OTctMTc2Yy0xMi45OTMtMTcuODY2LTkuMDQzLTQyLjg4MyA4LjgyMi01NS44NzYgMTcuODY3LTEyLjk5NCA0Mi44ODQtOS4wNDMgNTUuODc3IDguODIzTDEwNCAzMTUuOTkyVjQwYzAtMjIuMDkxIDE3LjkwOC00MCA0MC00MHM0MCAxNy45MDkgNDAgNDB2MjAwaDh2LTQwYzAtMjIuMDkxIDE3LjkwOC00MCA0MC00MHM0MCAxNy45MDkgNDAgNDB2NDBoOHYtMjRjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHYyNGg4YzAtMjIuMDkxIDE3LjkwOC00MCA0MC00MHM0MCAxNy45MDkgNDAgNDB6bS0yNTYgODBoLTh2OTZoOHYtOTZ6bTg4IDBoLTh2OTZoOHYtOTZ6bTg4IDBoLTh2OTZoOHYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRSb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NC44IDgwYy0yNi45LS40LTQ4LjggMjEuMi00OC44IDQ4aC04Vjk2LjhjMC0yNi4zLTIwLjktNDguMy00Ny4yLTQ4LjgtMjYuOS0uNC00OC44IDIxLjItNDguOCA0OHYzMmgtOFY4MC44YzAtMjYuMy0yMC45LTQ4LjMtNDcuMi00OC44LTI2LjktLjQtNDguOCAyMS4yLTQ4LjggNDh2NDhoLThWOTYuOGMwLTI2LjMtMjAuOS00OC4zLTQ3LjItNDguOC0yNi45LS40LTQ4LjggMjEuMi00OC44IDQ4djEzNmwtOC03LjF2LTQ4LjFjMC0yNi4zLTIwLjktNDguMy00Ny4yLTQ4LjhDMjEuOSAxMjcuNiAwIDE0OS4yIDAgMTc2djY2LjRjMCAyNy40IDExLjcgNTMuNSAzMi4yIDcxLjhsMTExLjcgOTkuM2MxMC4yIDkuMSAxNi4xIDIyLjIgMTYuMSAzNS45djYuN2MwIDEzLjMgMTAuNyAyNCAyNCAyNGgyNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTIuOWMwLTEyLjggMi42LTI1LjUgNy41LTM3LjNsNDktMTE2LjNjNS0xMS44IDcuNS0yNC41IDcuNS0zNy4zVjEyOC44YzAtMjYuMy0yMC45LTQ4LjQtNDcuMi00OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kU2Npc3NvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDQ0MGMwLTIyLjA5MiAxNy45MDktNDAgNDAtNDB2LThoLTMyYy0yMi4wOTEgMC00MC0xNy45MDgtNDAtNDBzMTcuOTA5LTQwIDQwLTQwaDMydi04SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4aDIwOHYtMTMuNTcybC0xNzcuNTUxLTY5Ljc0Yy0yNC42NzQtOS42OTQtMzYuODE4LTM3LjU1NS0yNy4xMjUtNjIuMjI4IDkuNjkzLTI0LjY3NCAzNy41NTQtMzYuODE3IDYyLjIyOC0yNy4xMjRsMTkwLjM0MiA3NC43NjUgMjQuODcyLTMxLjA5YzEyLjMwNi0xNS4zODEgMzMuOTc4LTE5LjUxNSA1MS4wODEtOS43NDFsMTEyIDY0QTQwLjAwMiA0MC4wMDIgMCAwIDEgNTEyIDE2OHYyNDBjMCAxOC41NjItMTIuNzcgMzQuNjg2LTMwLjgzOCAzOC45MzdsLTEzNiAzMkEzOS45ODIgMzkuOTgyIDAgMCAxIDMzNiA0ODBoLTgwYy0yMi4wOTEgMC00MC0xNy45MDgtNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDYuNjYsMTcwLjY0bC4wOSwwLDQ5LjU1LTIwLjY1YTcuMzIsNy4zMiwwLDAsMCwzLjY4LTZoMGE3LjI5LDcuMjksMCwwLDAtMy42OC02bC00OS41Ny0yMC42Ny0uMDcsMEw4Niw2Ny42OGE2LjY2LDYuNjYsMCwwLDAtMTEuOTIsMGwtMjAuNyw0OS42My0uMDUsMEwzLjcsMTM4QTcuMjksNy4yOSwwLDAsMCwwLDE0NEgwYTcuMzIsNy4zMiwwLDAsMCwzLjY4LDZMNTMuMjcsMTcwLjZsLjA3LDBMNzQsMjIwLjI2YTYuNjUsNi42NSwwLDAsMCwxMS45MiwwbDIwLjY5LTQ5LjYyWk00NzEuMzgsNDY3LjQxbC0xLS40Mi0xLS41YTM4LjY3LDM4LjY3LDAsMCwxLDAtNjkuMTRsMS0uNDksMS0uNDMsMzcuNDktMTUuNjMsMTUuNjMtMzcuNDguNDEtMSwuNDctLjk1YzMuODUtNy43NCwxMC41OC0xMy42MywxOC4zNS0xNy4zNCwwLTEuMzMuMjUtMi42OS4yNy00VjE0NGEzMiwzMiwwLDAsMC02NCwwdjcyYTgsOCwwLDAsMS04LDhINDU2YTgsOCwwLDAsMS04LThWNjRhMzIsMzIsMCwwLDAtNjQsMFYyMTZhOCw4LDAsMCwxLTgsOEgzNjBhOCw4LDAsMCwxLTgtOFYzMmEzMiwzMiwwLDAsMC02NCwwVjIxNmE4LDgsMCwwLDEtOCw4SDI2NGE4LDgsMCwwLDEtOC04VjY0YTMyLDMyLDAsMCwwLTY0LDB2MjQxbC0yMy41OS0zMi40OWE0MCw0MCwwLDAsMC02NC43MSw0Ny4wOUwyMjkuMyw0OTIuMjFBNDguMDcsNDguMDcsMCwwLDAsMjY4LjA5LDUxMkg0NjUuN2MxOS4yNCwwLDM1LjY1LTExLjczLDQzLjI0LTI4Ljc5bC0uMDctLjE3Wk0zNDkuNzksMzM5LjUyLDMyMCwzNTEuOTNsLTEyLjQyLDI5Ljc4YTQsNCwwLDAsMS03LjE1LDBMMjg4LDM1MS45M2wtMjkuNzktMTIuNDFhNCw0LDAsMCwxLDAtNy4xNkwyODgsMzE5Ljk0bDEyLjQyLTI5Ljc4YTQsNCwwLDAsMSw3LjE1LDBMMzIwLDMxOS45NGwyOS43OSwxMi40MmE0LDQsMCwwLDEsMCw3LjE2Wk02NDAsNDMxLjkxYTcuMjgsNy4yOCwwLDAsMC0zLjY4LTZsLTQ5LjU3LTIwLjY3LS4wNywwTDU2NiwzNTUuNjNhNi42Niw2LjY2LDAsMCwwLTExLjkyLDBsLTIwLjcsNDkuNjMtLjA1LDBMNDgzLjcsNDI2YTcuMjgsNy4yOCwwLDAsMC0zLjY4LDZoMGE3LjI5LDcuMjksMCwwLDAsMy42OCw1Ljk1bDQ5LjU3LDIwLjY3LjA3LDBMNTU0LDUwOC4yMWE2LjY1LDYuNjUsMCwwLDAsMTEuOTIsMGwyMC42OS00OS42MmgwbC4wOSwwLDQ5LjU1LTIwLjY2YTcuMjksNy4yOSwwLDAsMCwzLjY4LTUuOTVoMFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFNwb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC45MDA1LDE0NS4yNzAyNyw0NDIuNjA0LDQzMi4wOTM5MUExMDMuOTk1MDcsMTAzLjk5NTA3LDAsMCwxLDM0MS40Mzc0NSw1MTJIMjE0LjA3NGExMzUuOTY5NjgsMTM1Ljk2OTY4LDAsMCwxLTkzLjE4NDg5LTM2Ljk1MjkxTDEyLjU5MDcyLDM3My4xMjcyM2EzOS45OTIsMzkuOTkyLDAsMCwxLDU0LjgxMjItNTguMjQ5ODhsNjAuNTkzNDIsNTcuMDI1Mjh2MGEyODMuMjQ4NDksMjgzLjI0ODQ5LDAsMCwwLTExLjY3MDMtODAuNDY3MzRMNzMuNjM3MjYsMTQ3LjM2MDExYTQwLjAwNTc1LDQwLjAwNTc1LDAsMSwxLDc2LjcxODMzLTIyLjcxODdsMzcuMTU0NTgsMTI1LjM5NDc3YTguMzMxMTMsOC4zMzExMywwLDAsMCwxNi4wNTY1Ni00LjQ0MTRMMTUzLjI2MTgzLDQ5Ljk1NDA2QTM5Ljk5NjM4LDM5Ljk5NjM4LDAsMSwxLDIzMC43MzAxNSwzMC4wMTY2bDU2LjA5NDkxLDIxOC4xNTgyNWExMC40MjA0NywxMC40MjA0NywwLDAsMCwyMC4zMDAxOC0uNTAxTDM0NC44MDc2Niw2My45Njk2NmE0MC4wNTIsNDAuMDUyLDAsMCwxLDUxLjMwMjQ1LTMwLjA4OTNjMTkuODYwNzMsNi4yOTk4LDMwLjg2MjYyLDI3LjY3Mzc4LDI2LjY3NTY0LDQ4LjA4NDg3bC0zMy44Mzg2OSwxNjQuOTY2YTcuNTUxNzIsNy41NTE3MiwwLDAsMCwxNC43NDQwNiwzLjI2NjZsMjkuMzk3My0xMjMuNDU4NzRhMzkuOTk0MTQsMzkuOTk0MTQsMCwxLDEsNzcuODEyMDgsMTguNTMxMjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzSGVscGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggMTkySDMzNnY1NmMwIDM5LjctMzIuMyA3Mi03MiA3MnMtNzItMzIuMy03Mi03MlYxMjYuNGwtNjQuOSAzOUMxMDcuOCAxNzYuOSA5NiAxOTcuOCA5NiAyMjAuMnY0Ny4zbC04MCA0Ni4yQy43IDMyMi41LTQuNiAzNDIuMSA0LjMgMzU3LjRsODAgMTM4LjZjOC44IDE1LjMgMjguNCAyMC41IDQzLjcgMTEuN0wyMzEuNCA0NDhIMzY4YzM1LjMgMCA2NC0yOC43IDY0LTY0aDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMydi02NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0di00OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMTQ3LjctMzcuNEw1NTUuNyAxNkM1NDYuOS43IDUyNy4zLTQuNSA1MTIgNC4zTDQwOC42IDY0SDMwNi40Yy0xMiAwLTIzLjcgMy40LTMzLjkgOS43TDIzOSA5NC42Yy05LjQgNS44LTE1IDE2LjEtMTUgMjcuMVYyNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MHYtODhoMTg0YzMwLjkgMCA1NiAyNS4xIDU2IDU2djI4LjVsODAtNDYuMmMxNS4zLTguOSAyMC41LTI4LjQgMTEuNy00My43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc1dhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LDIyNGE0OCw0OCwwLDEsMC00OC00OEE0OCw0OCwwLDAsMCw0OTYsMjI0Wk0zMTEuNDcsMTc4LjQ1QTU2Ljc3LDU2Ljc3LDAsMCwxLDMyOCwxNzZhNTYsNTYsMCwwLDEsMTksMy40OWwxNS4zNS00OC42MUEyNCwyNCwwLDAsMCwzNDIsOTkuNzRjLTExLjUzLTEuMzUtMjIuMjEsNi40NC0yNS43MSwxNy41MWwtMjAuOSw2Ni4xN1pNOTMuNjUsMzg2LjMzYy44LS4xOSwxLjU0LS41NCwyLjM1LS43MVYzNTkuOTNhMTU2LDE1NiwwLDAsMSwxMDcuMDYtMTQ4bDczLjctMjIuNzZMMzEwLjkyLDgxLjA1YTI0LDI0LDAsMCwwLTIwLjMzLTMxLjExYy0xMS41My0xLjM0LTIyLjIyLDYuNDUtMjUuNzIsMTcuNTJMMjMxLjQyLDE3My44OGE4LDgsMCwwLDEtMTUuMjYtNC44M0wyNTkuNTMsMzEuMjZBMjQsMjQsMCwwLDAsMjM5LjIuMTVDMjI3LjY3LTEuMTksMjE3LDYuNiwyMTMuNDksMTcuNjZMMTY1LjU2LDE2OS4zN2E4LDgsMCwxLDEtMTUuMjYtNC44MmwzOC41Ni0xMjJhMjQsMjQsMCwwLDAtMjAuMzMtMzEuMTFDMTU3LDEwLDE0Ni4zMiwxNy44MywxNDIuODIsMjguOWwtNjAsMTg5Ljg1TDgwLjc2LDE2OC43QTI0LDI0LDAsMCwwLDU2LjksMTQ0LjU1Yy0xMy4yMy0uMDUtMjQuNzIsMTAuNTQtMjQuOSwyMy44NlYyODEuMTRBMTIzLjY5LDEyMy42OSwwLDAsMCw5My42NSwzODYuMzNaTTUxOS4xLDMzNkgzNjBhOCw4LDAsMCwxLDAtMTZINDg4YTI0LDI0LDAsMCwwLDIzLjU0LTI4Ljc2QzUwOS4zNSwyNzkuODQsNDk4LjcxLDI3Miw0ODcuMSwyNzJIMjg4bDQ3LjA5LTE3LjA2YTI0LDI0LDAsMCwwLTE0LjE4LTQ1Ljg4TDIxMy4xOSwyNDIuMzFBMTIzLjg4LDEyMy44OCwwLDAsMCwxMjgsMzYwdjI1LjY1YTc5Ljc4LDc5Ljc4LDAsMCwxLDU4LDEwOC42M0ExMTguOSwxMTguOSwwLDAsMCwyNDgsNTEySDQ1NmEyNCwyNCwwLDAsMCwyMy41NC0yOC43NkM0NzcuMzUsNDcxLjg0LDQ2Ni43MSw0NjQsNDU1LjEsNDY0SDM2MGE4LDgsMCwwLDEsMC0xNkg0ODhhMjQsMjQsMCwwLDAsMjMuNTQtMjguNzZDNTA5LjM1LDQwNy44NCw0OTguNzEsNDAwLDQ4Ny4xLDQwMEgzNjBhOCw4LDAsMCwxLDAtMTZINTIwYTI0LDI0LDAsMCwwLDIzLjU0LTI4Ljc2QzU0MS4zNSwzNDMuODQsNTMwLjcxLDMzNiw1MTkuMSwzMzZaTTQxNiw2NGEzMiwzMiwwLDEsMC0zMi0zMkEzMiwzMiwwLDAsMCw0MTYsNjRaTTExMiw0MTZhNDgsNDgsMCwxLDAsNDgsNDhBNDgsNDgsMCwwLDAsMTEyLDQxNlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA0LjggMjMwLjRjLTEwLjYtMTQuMS0zMC43LTE3LTQ0LjgtNi40LTE0LjEgMTAuNi0xNyAzMC43LTYuNCA0NC44bDM4LjEgNTAuOGM0LjggNi40IDQuMSAxNS4zLTEuNSAyMC45bC0xMi44IDEyLjhjLTYuNyA2LjctMTcuNiA2LjItMjMuNi0xLjFMNjQgMjQ0LjRWOTZjMC0xNy43LTE0LjMtMzItMzItMzJTMCA3OC4zIDAgOTZ2MjE4LjRjMCAxMC45IDMuNyAyMS41IDEwLjUgMzBsMTA0LjEgMTM0LjNjNSA2LjUgOC40IDEzLjkgMTAuNCAyMS43IDEuOCA2LjkgOC4xIDExLjYgMTUuMyAxMS42SDI3MmM4LjggMCAxNi03LjIgMTYtMTZWMzg0YzAtMjcuNy05LTU0LjYtMjUuNi03Ni44bC01Ny42LTc2Ljh6TTYwOCA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTQ4LjRsLTg5LjggMTA3LjhjLTYgNy4yLTE3IDcuNy0yMy42IDEuMWwtMTIuOC0xMi44Yy01LjYtNS42LTYuMy0xNC41LTEuNS0yMC45bDM4LjEtNTAuOGMxMC42LTE0LjEgNy43LTM0LjItNi40LTQ0LjgtMTQuMS0xMC42LTM0LjItNy43LTQ0LjggNi40bC01Ny42IDc2LjhDMzYxIDMyOS40IDM1MiAzNTYuMyAzNTIgMzg0djExMmMwIDguOCA3LjIgMTYgMTYgMTZoMTMxLjdjNy4xIDAgMTMuNS00LjcgMTUuMy0xMS42IDItNy44IDUuNC0xNS4yIDEwLjQtMjEuN2wxMDQuMS0xMzQuM2M2LjgtOC41IDEwLjUtMTkuMSAxMC41LTMwVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2VBbHRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTguNTksMTk1LjYsNTA0LjIsMzEzLjhhNjMuNCw2My40LDAsMCwxLDIyLjIxLDM3LjkxSDYyNGExNi4wNSwxNi4wNSwwLDAsMCwxNi0xNlYxNDMuOTFBMTYsMTYsMCwwLDAsNjI0LDEyOEg1MTJMNDU3LjQxLDczLjQxQTMyLDMyLDAsMCwwLDQzNC44LDY0SDM0OC45MWEzMiwzMiwwLDAsMC0yMS42MSw4LjQxbC04OC4xMiw4MC42OC0yNS42OS0xOS44NUwyODkuMDksNjRIMjA1LjNhMzIsMzIsMCwwLDAtMjIuNiw5LjQxbC0yMC4zNCwyMC4zTDQ1LjQ3LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM4LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTksNTMuOTFMNTk0LjU0LDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVMMzAzLjQsMjAyLjcybDMyLjY5LTI5LjkyLDI3LTI0LjdhMTYsMTYsMCwwLDEsMjEuNjEsMjMuNjFaTTE2LDEyOEExNi4wNSwxNi4wNSwwLDAsMCwwLDE0NFYzMzUuOTFhMTYsMTYsMCwwLDAsMTYsMTZIMTQ2LjNsOTAuNSw4MS44OWE2NCw2NCwwLDAsMCw5MC05LjNsLjItLjIsMTcuOTEsMTUuNWEzNy4xNiwzNy4xNiwwLDAsMCw1Mi4yOS01LjM5bDguOC0xMC44MkwyMy41NiwxMjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzaGFrZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAsMTI4LjIxVjM4NEg2NGEzMiwzMiwwLDAsMCwzMi0zMlYxODRMMjMuODMsMTI4LjIxWk00OCwzMjAuMWExNiwxNiwwLDEsMS0xNiwxNkExNiwxNiwwLDAsMSw0OCwzMjAuMVptODAsMzEuODFoMTguM2w5MC41LDgxLjg5YTY0LDY0LDAsMCwwLDkwLTkuM2wuMi0uMiwxNy45MSwxNS41YTM3LjE2LDM3LjE2LDAsMCwwLDUyLjI5LTUuMzlsOC44LTEwLjgyTDEyOCwyMDguNzJabTQxNi0yMjMuN1YzNTIuMWEzMiwzMiwwLDAsMCwzMiwzMmg2NFYxMjguMjFaTTU5MiwzNTIuMWExNiwxNiwwLDEsMSwxNi0xNkExNiwxNiwwLDAsMSw1OTIsMzUyLjFaTTMwMy4zMywyMDIuNjdsNTkuNTgtNTQuNTdhMTYsMTYsMCwwLDEsMjEuNTksMjMuNjFMMzU4LjQxLDE5NS42LDUwNCwzMTMuOGE3My4wOCw3My4wOCwwLDAsMSw3LjkxLDcuN1YxMjhMNDU3LjMsNzMuNDFBMzEuNzYsMzEuNzYsMCwwLDAsNDM0LjcsNjRIMzQ4LjhhMzEuOTMsMzEuOTMsMCwwLDAtMjEuNiw4LjQxbC04OC4wNyw4MC42NC0yNS42NC0xOS44MUwyODkuMDksNjRIMjA1LjNhMzIsMzIsMCwwLDAtMjIuNiw5LjQxTDE2Mi4zNiw5My43Miw0NS40NywzLjM4QTE2LDE2LDAsMCwwLDIzLDYuMTlMMy4zOCwzMS40NkExNiwxNiwwLDAsMCw2LjE5LDUzLjkxTDU5NC41Myw1MDguNjNBMTYsMTYsMCwwLDAsNjE3LDUwNS44MmwxOS42NS0yNS4yN2ExNiwxNiwwLDAsMC0yLjgyLTIyLjQ1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM0LjcgNjRoLTg1LjljLTggMC0xNS43IDMtMjEuNiA4LjRsLTk4LjMgOTBjLS4xLjEtLjIuMy0uMy40LTE2LjYgMTUuNi0xNi4zIDQwLjUtMi4xIDU2IDEyLjcgMTMuOSAzOS40IDE3LjYgNTYuMSAyLjcuMS0uMS4zLS4xLjQtLjJsNzkuOS03My4yYzYuNS01LjkgMTYuNy01LjUgMjIuNiAxIDYgNi41IDUuNSAxNi42LTEgMjIuNmwtMjYuMSAyMy45TDUwNCAzMTMuOGMyLjkgMi40IDUuNSA1IDcuOSA3LjdWMTI4bC01NC42LTU0LjZjLTUuOS02LTE0LjEtOS40LTIyLjYtOS40ek01NDQgMTI4LjJ2MjIzLjljMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRWMTI4LjJoLTk2em00OCAyMjMuOWMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2ek0wIDM4NGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjguMkgwVjM4NHptNDgtNjMuOWM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNi0xNi03LjItMTYtMTZjMC04LjkgNy4yLTE2IDE2LTE2em00MzUuOSAxOC42TDMzNC42IDIxNy41bC0zMCAyNy41Yy0yOS43IDI3LjEtNzUuMiAyNC41LTEwMS43LTQuNC0yNi45LTI5LjQtMjQuOC03NC45IDQuNC0xMDEuN0wyODkuMSA2NGgtODMuOGMtOC41IDAtMTYuNiAzLjQtMjIuNiA5LjRMMTI4IDEyOHYyMjMuOWgxOC4zbDkwLjUgODEuOWMyNy40IDIyLjMgNjcuNyAxOC4xIDkwLTkuM2wuMi0uMiAxNy45IDE1LjVjMTUuOSAxMyAzOS40IDEwLjUgNTIuMy01LjRsMzEuNC0zOC42IDUuNCA0LjRjMTMuNyAxMS4xIDMzLjkgOS4xIDQ1LTQuN2w5LjUtMTEuN2MxMS4yLTEzLjggOS4xLTMzLjktNC42LTQ1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbnVraWFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAxNjBjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em0tNjQgMGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTIyNCAwYy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4YzAtNC40Mi0zLjU4LTgtOC04aC0xNnptNjQgMGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTg4IDhjMC00LjQyLTMuNTgtOC04LThoLTE2Yy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4em0tNDQwLThjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em01MjAgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDM1MlYxMjhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxOTJIOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxMTJjMCA1My4wMiA0Mi45OCA5NiA5NiA5NmgxOTJ2NjRIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2SDM1MnYtNjRoMTkyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2em0tMTYtMzJjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M2MDggNDggNjA4IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M1OTQuNzUgMTI4IDYwOCAxMjh6bS01NzYgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzMyIDQ4IDMyIDQ4IDggODYuNjEgOCAxMDEuMzMgMTguNzUgMTI4IDMyIDEyOHptMjg4LTQ4YzEzLjI1IDAgMjQtMTEuOTQgMjQtMjYuNjdTMzIwIDAgMzIwIDBzLTI0IDM4LjYxLTI0IDUzLjMzUzMwNi43NSA4MCAzMjAgODB6bS0yMDggNDhjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1MxMTIgNDggMTEyIDQ4cy0yNCAzOC42MS0yNCA1My4zM1M5OC43NSAxMjggMTEyIDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzE3NiA0OCAxNzYgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzE2Mi43NSAxMjggMTc2IDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzI0MCA0OCAyNDAgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzIyNi43NSAxMjggMjQwIDEyOHptMTYwIDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M0MDAgNDggNDAwIDQ4cy0yNCAzOC42MS0yNCA1My4zM1MzODYuNzUgMTI4IDQwMCAxMjh6bTY0IDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M0NjQgNDggNDY0IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M0NTAuNzUgMTI4IDQ2NCAxMjh6bTY0IDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M1MjggNDggNTI4IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M1MTQuNzUgMTI4IDUyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhcmRIYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDI4OGMwLTgwLjI1LTQ5LjI4LTE0OC45Mi0xMTkuMTktMTc3LjYyTDMyMCAxOTJWODBhMTYgMTYgMCAwIDAtMTYtMTZoLTk2YTE2IDE2IDAgMCAwLTE2IDE2djExMmwtNDAuODEtODEuNjJDODEuMjggMTM5LjA4IDMyIDIwNy43NSAzMiAyODh2NjRoNDQ4em0xNiA5NkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0ODBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC42NjcgMTgyLjEwOWw3LjE0My00MGMxLjMxMy03LjM1NS00LjM0Mi0xNC4xMDktMTEuODEzLTE0LjEwOWgtNzQuODFsMTQuNjIzLTgxLjg5MUMzNzcuMTIzIDM4Ljc1NCAzNzEuNDY4IDMyIDM2My45OTcgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMjk2LjE3NSAxMjhIMTk3LjU0bDE0LjYyMy04MS44OTFDMjEzLjQ3NyAzOC43NTQgMjA3LjgyMiAzMiAyMDAuMzUgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMTMyLjUyOCAxMjhINTMuNDMyYTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDMzMuMTYzIDE4NS4yNDYgMzguODE4IDE5MiA0Ni4yODkgMTkyaDc0LjgxTDk4LjI0MiAzMjBIMTkuMTQ2YTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDLTEuMTIzIDM3Ny4yNDYgNC41MzIgMzg0IDEyLjAwMyAzODRoNzQuODFMNzIuMTkgNDY1Ljg5MUM3MC44NzcgNDczLjI0NiA3Ni41MzIgNDgwIDg0LjAwMyA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwxNTEuODI2IDM4NGg5OC42MzRsLTE0LjYyMyA4MS44OTFDMjM0LjUyMyA0NzMuMjQ2IDI0MC4xNzggNDgwIDI0Ny42NSA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwzMTUuNDcyIDM4NGg3OS4wOTZhMTIgMTIgMCAwIDAgMTEuODEzLTkuODkxbDcuMTQzLTQwYzEuMzEzLTcuMzU1LTQuMzQyLTE0LjEwOS0xMS44MTMtMTQuMTA5aC03NC44MWwyMi44NTctMTI4aDc5LjA5NmExMiAxMiAwIDAgMCAxMS44MTMtOS44OTF6TTI2MS44ODkgMzIwaC05OC42MzRsMjIuODU3LTEyOGg5OC42MzRsLTIyLjg1NyAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdENvd2JveVNpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjggMjkxLjA2Yy0yOC42My0yMi45NC02Mi0zNS4wNi05Ni40LTM1LjA2Qzg3IDI1NiAyMS40NyAzMTguNzIgMS40MyA0MTIuMDZjLTMuNTUgMTYuNi0uNDMgMzMuODMgOC41NyA0Ny4zQzE4Ljc1IDQ3Mi40NyAzMS44MyA0ODAgNDUuODggNDgwSDU5MmMtMTAzLjIxIDAtMTU1LTM3LjA3LTIzMy4xOS0xMDQuNDZ6bTIzNC42NS0xOC4yOUw0NjguNCAxMTYuMkE2NCA2NCAwIDAgMCAzOTIgNjQuNDFMMjAwLjg1IDEwNWE2NCA2NCAwIDAgMC01MC4zNSA1NS43OUwxNDMuNjEgMjI2YzYuOS0uODMgMTMuNy0yIDIwLjc5LTIgNDEuNzkgMCA4MiAxNC41NSAxMTcuMjkgNDIuODJsOTggODQuNDhDNDUwLjc2IDQxMi41NCA0OTQuOSA0NDggNTkyIDQ0OGE0OCA0OCAwIDAgMCA0OC00OGMwLTI1LjM5LTI5LjYtMTE5LjMzLTE0NC41NS0xMjcuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdENvd2JveSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTAgMjk2LjlDNDgwLjUxIDIzOS41MSA0NTAuNTEgNjQgMzkyLjMgNjRjLTE0IDAtMjYuNDkgNS45My0zNyAxNGE1OC4yMSA1OC4yMSAwIDAgMS03MC41OCAwYy0xMC41MS04LTIzLTE0LTM3LTE0LTU4LjIgMC04OC4yIDE3NS40Ny05Ny43MSAyMzIuODhDMTg4LjgxIDMwOS40NyAyNDMuNzMgMzIwIDMyMCAzMjBzMTMxLjIzLTEwLjUxIDE3MC0yMy4xem0xNDIuOS0zNy4xOGExNiAxNiAwIDAgMC0xOS43NSAxLjVjLTEgLjktMTAxLjI3IDkwLjc4LTI5My4xNiA5MC43OC0xOTAuODIgMC0yOTIuMjItODkuOTQtMjkzLjI0LTkwLjg0QTE2IDE2IDAgMCAwIDEgMjc4LjUzQzEuNzMgMjgwLjU1IDc4LjMyIDQ4MCAzMjAgNDgwczMxOC4yNy0xOTkuNDUgMzE5LTIwMS40N2ExNiAxNiAwIDAgMC02LjA5LTE4LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXRXaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDgwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTMwNC02NGwtNjQtMzIgNjQtMzIgMzItNjQgMzIgNjQgNjQgMzItNjQgMzItMTYgMzJoMjA4bC04Ni40MS0yMDEuNjNhNjMuOTU1IDYzLjk1NSAwIDAgMS0xLjg5LTQ1LjQ1TDQxNiAwIDIyOC40MiAxMDcuMTlhMTI3Ljk4OSAxMjcuOTg5IDAgMCAwLTUzLjQ2IDU5LjE1TDY0IDQxNmgxNDRsLTE2LTMyem02NC0yMjRsMTYtMzIgMTYgMzIgMzIgMTYtMzIgMTYtMTYgMzItMTYtMzItMzItMTYgMzItMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMzA0djk2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDh2LTk2YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDgwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh6bS00OC04MGE3OS41NTcgNzkuNTU3IDAgMCAxIDMwLjc3NyA2LjE2NUw0NjIuMjUgODUuMzc0QTQ4LjAwMyA0OC4wMDMgMCAwIDAgNDIyLjMxMSA2NEgxNTMuNjg5YTQ4IDQ4IDAgMCAwLTM5LjkzOCAyMS4zNzRMMTcuMjIzIDIzMC4xNjVBNzkuNTU3IDc5LjU1NyAwIDAgMSA0OCAyMjRoNDgwem0tNDggOTZjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptLTk2IDBjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZFNpZGVDb3VnaFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NC4xMSwzMTkuMjFjMTkuNTYtMy44MSwzMS42Mi0yNSwyMy4xMS00NC4yMS0yMS00Ny4xMi00OC41LTE1MS43NS03My4xMi0xODYuNzVBMjA4LjEzLDIwOC4xMywwLDAsMCwyMzQuMSwwSDE5MkExOTAuNjQsMTkwLjY0LDAsMCwwLDg0LjE4LDMzLjNMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDZBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTMsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODJsMTkuNjQtMjUuMjdhMTYsMTYsMCwwLDAtMi44MS0yMi40NVpNMzEzLjM5LDIxMC40NSwyNjMuNjEsMTcyYzUuODgtNy4xNCwxNC40My0xMiwyNC4zNi0xMmEzMi4wNiwzMi4wNiwwLDAsMSwzMiwzMkMzMjAsMTk5LDMxNy4yNCwyMDUuMTcsMzEzLjM5LDIxMC40NVpNNjE2LDMwNGEyNCwyNCwwLDEsMC0yNC0yNEEyNCwyNCwwLDAsMCw2MTYsMzA0Wm0tNjQsNjRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNTUyLDM2OFpNMjg4LDM4NGEzMiwzMiwwLDAsMSwzMi0zMmgxOS41NEwyMC43MywxMDUuNTlBMTkwLjg2LDE5MC44NiwwLDAsMCwwLDE5MmMwLDU2Ljc1LDI0Ljc1LDEwNy42Miw2NCwxNDIuODhWNTEySDI4OFY0ODBoNjRhNjQsNjQsMCwwLDAsNjQtNjRIMzIwQTMyLDMyLDAsMCwxLDI4OCwzODRabTMyOC0yNGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsMzYwWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkU2lkZUNvdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxNiwzMDRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNjE2LDMwNFpNNTUyLDQxNmEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw1NTIsNDE2Wm0tNjQtNTZhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNDg4LDM2MFpNNjE2LDQ2NGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsNDY0Wm0wLTEwNGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsMzYwWm0tNjQtNDBhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNTUyLDMyMFptLTc0Ljc4LTQ1Yy0yMS00Ny4xMi00OC41LTE1MS43NS03My4xMi0xODYuNzVBMjA4LjEzLDIwOC4xMywwLDAsMCwyMzQuMSwwSDE5MkM4NiwwLDAsODYsMCwxOTJjMCw1Ni43NSwyNC43NSwxMDcuNjIsNjQsMTQyLjg4VjUxMkgyODhWNDgwaDY0YTY0LDY0LDAsMCwwLDY0LTY0SDMyMGEzMiwzMiwwLDAsMSwwLTY0aDk2VjMyMGgzMkEzMiwzMiwwLDAsMCw0NzcuMjIsMjc1Wk0yODgsMjI0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLjA3LDMyLjA3LDAsMCwxLDI4OCwyMjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlTWFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMTUsMTg0LjQyQy0yLjE3LDI0NC4yMSwyMywyOTguMDYsNjQsMzM0Ljg4VjUxMkgyMjRWMzE2LjUxTDMuNjcsMTU2LjI1QTE4Mi4yOCwxODIuMjgsMCwwLDAsLjE1LDE4NC40MlpNNTA5LjIyLDI3NWMtMjEtNDcuMTItNDguNS0xNTEuNzUtNzMuMTItMTg2Ljc1QTIwOC4xMSwyMDguMTEsMCwwLDAsMjY2LjExLDBIMjAwQzExNywwLDQyLjQ4LDUwLjU3LDEzLjI1LDEyMy42NUwyMzkuMjEsMjg4SDUxMS43NkEzMS4zNSwzMS4zNSwwLDAsMCw1MDkuMjIsMjc1Wk0zMjAsMjI0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLjA3LDMyLjA3LDAsMCwxLDMyMCwyMjRabTE2LDE0NEg0OTZsMTYtNDhIMjU2VjUxMkg0MDEuODhhNjQsNjQsMCwwLDAsNjAuNzEtNDMuNzZMNDY0LDQ2NEgzMzZhMTYsMTYsMCwwLDEsMC0zMkg0NzQuNjdsMTAuNjctMzJIMzM2YTE2LDE2LDAsMCwxLDAtMzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlVmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyLDI0MGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwyNzIsMjQwWm0tNjQtNjRhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjA4LDE3NlptMzAxLjIsOTljLTIwLjkzLTQ3LjEyLTQ4LjQzLTE1MS43My03My4wNy0xODYuNzVBMjA3LjksMjA3LjksMCwwLDAsMjY2LjA5LDBIMTkyQzg2LDAsMCw4NiwwLDE5MkExOTEuMjMsMTkxLjIzLDAsMCwwLDY0LDMzNC44MVY1MTJIMzIwVjQ0OGg2NGE2NCw2NCwwLDAsMCw2NC02NFYzMjBINDgwQTMyLDMyLDAsMCwwLDUwOS4yLDI3NVpNMzY4LDI0MEgzNTUuODhjLTI4LjUxLDAtNDIuNzksMzQuNDctMjIuNjMsNTQuNjNsOC41OCw4LjU3YTE2LDE2LDAsMSwxLTIyLjYzLDIyLjYzbC04LjU3LTguNThDMjkwLjQ3LDI5Ny4wOSwyNTYsMzExLjM3LDI1NiwzMzkuODhWMzUyYTE2LDE2LDAsMCwxLTMyLDBWMzM5Ljg4YzAtMjguNTEtMzQuNDctNDIuNzktNTQuNjMtMjIuNjNsLTguNTcsOC41OGExNiwxNiwwLDAsMS0yMi42My0yMi42M2w4LjU4LTguNTdjMjAuMTYtMjAuMTYsNS44OC01NC42My0yMi42My01NC42M0gxMTJhMTYsMTYsMCwwLDEsMC0zMmgxMi4xMmMyOC41MSwwLDQyLjc5LTM0LjQ3LDIyLjYzLTU0LjYzbC04LjU4LTguNTdhMTYsMTYsMCwwLDEsMjIuNjMtMjIuNjNsOC41Nyw4LjU4YzIwLjE2LDIwLjE2LDU0LjYzLDUuODgsNTQuNjMtMjIuNjNWOTZhMTYsMTYsMCwwLDEsMzIsMHYxMi4xMmMwLDI4LjUxLDM0LjQ3LDQyLjc5LDU0LjYzLDIyLjYzbDguNTctOC41OGExNiwxNiwwLDAsMSwyMi42MywyMi42M2wtOC41OCw4LjU3QzMxMy4wOSwxNzMuNTMsMzI3LjM3LDIwOCwzNTUuODgsMjA4SDM2OGExNiwxNiwwLDAsMSwwLDMyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NnYzMjBoMzJhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZIMzIwYTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgzMlYyODhIMTYwdjEyOGgzMmExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNkgzMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJWOTZIMzJhMTYgMTYgMCAwIDEtMTYtMTZWNDhhMTYgMTYgMCAwIDEgMTYtMTZoMTYwYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2aC0zMnYxMjhoMTkyVjk2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlY0OGExNiAxNiAwIDAgMSAxNi0xNmgxNjBhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRwaG9uZXNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDI4OGgtMTZjLTM1LjM1IDAtNjQgMjguNy02NCA2NC4xMnY2My43NmMwIDM1LjQxIDI4LjY1IDY0LjEyIDY0IDY0LjEyaDE2YzE3LjY3IDAgMzItMTQuMzYgMzItMzIuMDZWMzIwLjA2YzAtMTcuNzEtMTQuMzMtMzIuMDYtMzItMzIuMDZ6bTIwOCAwaC0xNmMtMTcuNjcgMC0zMiAxNC4zNS0zMiAzMi4wNnYxMjcuODhjMCAxNy43IDE0LjMzIDMyLjA2IDMyIDMyLjA2aDE2YzM1LjM1IDAgNjQtMjguNzEgNjQtNjQuMTJ2LTYzLjc2YzAtMzUuNDEtMjguNjUtNjQuMTItNjQtNjQuMTJ6TTI1NiAzMkMxMTIuOTEgMzIgNC41NyAxNTEuMTMgMCAyODh2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2VjI4OGMwLTExNC42NyA5My4zMy0yMDcuOCAyMDgtMjA3LjgyIDExNC42Ny4wMiAyMDggOTMuMTUgMjA4IDIwNy44MnYxMTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjg4QzUwNy40MyAxNTEuMTMgMzk5LjA5IDMyIDI1NiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZHBob25lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTE0LjUyIDMyIDAgMTQ2LjQ5NiAwIDI4OHY0OGEzMiAzMiAwIDAgMCAxNy42ODkgMjguNjIybDE0LjM4MyA3LjE5MUMzNC4wODMgNDMxLjkwMyA4My40MjEgNDgwIDE0NCA0ODBoMjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI4MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTI0Yy0zMS4zNDIgMC01OS42NzEgMTIuODc5LTgwIDMzLjYyN1YyODhjMC0xMDUuODY5IDg2LjEzMS0xOTIgMTkyLTE5MnMxOTIgODYuMTMxIDE5MiAxOTJ2MS42MjdDNDI3LjY3MSAyNjguODc5IDM5OS4zNDIgMjU2IDM2OCAyNTZoLTI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTc2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNGM2MC41NzkgMCAxMDkuOTE3LTQ4LjA5OCAxMTEuOTI4LTEwOC4xODdsMTQuMzgyLTcuMTkxQTMyIDMyIDAgMCAwIDUxMiAzMzZ2LTQ4YzAtMTQxLjQ3OS0xMTQuNDk2LTI1Ni0yNTYtMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAyMDhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMTZjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2NDhjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgxNmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjIwOHptMTc2IDE0NGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0di00OGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0aC0xNmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMTJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxNnpNMjU2IDBDMTEzLjE4IDAgNC41OCAxMTguODMgMCAyNTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtMTE0LjY5IDkzLjMxLTIwOCAyMDgtMjA4czIwOCA5My4zMSAyMDggMjA4aC0uMTJjLjA4IDIuNDMuMTIgMTY1LjcyLjEyIDE2NS43MiAwIDIzLjM1LTE4LjkzIDQyLjI4LTQyLjI4IDQyLjI4SDMyMGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC0zMmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OGgxODEuNzJjNDkuODYgMCA5MC4yOC00MC40MiA5MC4yOC05MC4yOFYyNTZDNTA3LjQyIDExOC44MyAzOTguODIgMCAyNTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRCcm9rZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDczLjcgNzMuOGwtMi40LTIuNWMtNDYtNDctMTE4LTUxLjctMTY5LjYtMTQuOEwzMzYgMTU5LjlsLTk2IDY0IDQ4IDEyOC0xNDQtMTQ0IDk2LTY0LTI4LjYtODYuNUMxNTkuNyAxOS42IDg3IDI0IDQwLjcgNzEuNGwtMi40IDIuNEMtMTAuNCAxMjMuNi0xMi41IDIwMi45IDMxIDI1NmwyMTIuMSAyMTguNmM3LjEgNy4zIDE4LjYgNy4zIDI1LjcgMEw0ODEgMjU1LjljNDMuNS01MyA0MS40LTEzMi4zLTcuMy0xODIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYyLjMgNjIuNkM0MDcuNSAxNS45IDMyNiAyNC4zIDI3NS43IDc2LjJMMjU2IDk2LjVsLTE5LjctMjAuM0MxODYuMSAyNC4zIDEwNC41IDE1LjkgNDkuNyA2Mi42Yy02Mi44IDUzLjYtNjYuMSAxNDkuOC05LjkgMjA3LjlsMTkzLjUgMTk5LjhjMTIuNSAxMi45IDMyLjggMTIuOSA0NS4zIDBsMTkzLjUtMTk5LjhjNTYuMy01OC4xIDUzLTE1NC4zLTkuOC0yMDcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRiZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC4yIDI0My44bC00OS43IDk5LjRjLTYgMTIuMS0yMy40IDExLjctMjguOS0uNmwtNTYuOS0xMjYuMy0zMCA3MS43SDYwLjZsMTgyLjUgMTg2LjVjNy4xIDcuMyAxOC42IDcuMyAyNS43IDBMNDUxLjQgMjg4SDM0Mi4zbC0yMi4xLTQ0LjJ6TTQ3My43IDczLjlsLTIuNC0yLjVjLTUxLjUtNTIuNi0xMzUuOC01Mi42LTE4Ny40IDBMMjU2IDEwMGwtMjcuOS0yOC41Yy01MS41LTUyLjctMTM1LjktNTIuNy0xODcuNCAwbC0yLjQgMi40Qy0xMC40IDEyMy43LTEyLjUgMjAzIDMxIDI1NmgxMDIuNGwzNS45LTg2LjJjNS40LTEyLjkgMjMuNi0xMy4yIDI5LjQtLjRsNTguMiAxMjkuMyA0OS05Ny45YzUuOS0xMS44IDIyLjctMTEuOCAyOC42IDBsMjcuNiA1NS4ySDQ4MWM0My41LTUzIDQxLjQtMTMyLjMtNy4zLTE4Mi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWxpY29wdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAzODRoMjcyYzE3LjY3IDAgMzItMTQuMzMgMzItMzIgMC0xMjMuNzEtMTAwLjI5LTIyNC0yMjQtMjI0VjY0aDE3NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkgxNDRjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE3NnY2NEgxMTJMNjguOCA3MC40QzY1Ljc4IDY2LjM3IDYxLjAzIDY0IDU2IDY0SDE2LjAxQzUuNiA2NC0yLjA0IDczLjc4LjQ5IDgzLjg4TDMyIDE5MmwxNjAgNjQgODYuNCAxMTUuMkEzMS45OTIgMzEuOTkyIDAgMCAwIDMwNCAzODR6bTExMi0xODguNDlDNDc4LjU1IDIwOC4zIDUyOC4wMyAyNTcuNDQgNTQwLjc5IDMyMEg0MTZWMTk1LjUxem0yMTkuMzcgMjYzLjNsLTIyLjE1LTIyLjJjLTYuMjUtNi4yNi0xNi4yNC02LjEtMjIuNjQuMDEtNy4wOSA2Ljc3LTEzLjg0IDExLjI1LTI0LjY0IDExLjI1SDI0MGMtOC44NCAwLTE2IDcuMTgtMTYgMTYuMDN2MzIuMDZjMCA4Ljg1IDcuMTYgMTYuMDMgMTYgMTYuMDNoMzI1Ljk0YzE0Ljg4IDAgMzUuMy0uNDcgNjguNDUtMjkuNTIgNy4wMi02LjE0IDcuNTctMTcuMDUuOTgtMjMuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpZ2hsaWdodGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDc5Ljk4TDk5LjkyIDUxMmwzNS40NS0zNS40NS02Ny4wNC02Ny4wNEwwIDQ3OS45OHptMTI0LjYxLTI0MC4wMWEzNi41OTIgMzYuNTkyIDAgMCAwLTEwLjc5IDM4LjFsMTMuMDUgNDIuODMtNTAuOTMgNTAuOTQgOTYuMjMgOTYuMjMgNTAuODYtNTAuODYgNDIuNzQgMTMuMDhjMTMuNzMgNC4yIDI4LjY1LS4wMSAzOC4xNS0xMC43OGwzNS41NS00MS42NC0xNzMuMzQtMTczLjM0LTQxLjUyIDM1LjQ0em00MDMuMzEtMTYwLjdsLTYzLjItNjMuMmMtMjAuNDktMjAuNDktNTMuMzgtMjEuNTItNzUuMTItMi4zNUwxOTAuNTUgMTgzLjY4bDE2OS43NyAxNjkuNzhMNTMwLjI3IDE1NC40YzE5LjE4LTIxLjc0IDE4LjE1LTU0LjYzLTIuMzUtNzUuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MC45NSA0NzIuMjNjLTQuMjggMTcuMTYgNi4xNCAzNC41MyAyMy4yOCAzOC44MSAyLjYxLjY2IDUuMjIuOTUgNy44Ljk1IDE0LjMzIDAgMjcuMzctOS43IDMxLjAyLTI0LjIzbDI1LjI0LTEwMC45Ny01Mi43OC01Mi43OC0zNC41NiAxMzguMjJ6bTE0Ljg5LTE5Ni4xMkwxMzcgMTE3YzIuMTktOC40Mi0zLjE0LTE2Ljk1LTExLjkyLTE5LjA2LTQzLjg4LTEwLjUyLTg4LjM1IDE1LjA3LTk5LjMyIDU3LjE3TC40OSAyNTMuMjRjLTIuMTkgOC40MiAzLjE0IDE2Ljk1IDExLjkyIDE5LjA2bDYzLjU2IDE1LjI1YzguNzkgMi4xIDE3LjY4LTMuMDIgMTkuODctMTEuNDR6TTM2OCAxNjBoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmgtMzQuNzVsLTQ2Ljc4LTQ2Ljc4QzI0My4zOCAxMzQuMTEgMjI4LjYxIDEyOCAyMTIuOTEgMTI4Yy0yNy4wMiAwLTUwLjQ3IDE4LjMtNTcuMDMgNDQuNTJsLTI2LjkyIDEwNy43MmEzMi4wMTIgMzIuMDEyIDAgMCAwIDguNDIgMzAuMzlMMjI0IDM5Ny4yNVY0ODBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnMzMi0xNC4zMyAzMi0zMnYtODIuNzVjMC0xNy4wOS02LjY2LTMzLjE2LTE4Ljc1LTQ1LjI1bC00Ni44Mi00Ni44MmMuMTUtLjUuNDktLjg5LjYyLTEuNDFsMTkuODktNzkuNTcgMjIuNDMgMjIuNDNjNiA2IDE0LjE0IDkuMzggMjIuNjIgOS4zOGg0OHYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTc2Yy4wMS04Ljg0LTcuMTUtMTYtMTUuOTktMTZ6TTI0MCA5NmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4UzI2Ni41MSAwIDI0MCAwcy00OCAyMS40OS00OCA0OCAyMS40OSA0OCA0OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlwcG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTgxLjEyIDk2LjJjLTI3LjY3LS4xNS01Mi41IDE3LjU4LTc2LjYgMjYuNjJDNDg5Ljk4IDg4LjI3IDQ1NS44MyA2NCA0MTYgNjRjLTExLjI4IDAtMjEuOTUgMi4zLTMyIDUuODhWNTZjMC0xMy4yNi0xMC43NS0yNC0yNC0yNGgtMTZjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2NDguOThDMjg2LjAxIDc5LjU4IDI0MS4yNCA2NCAxOTIgNjQgODUuOTYgNjQgMCAxMzUuNjQgMCAyMjR2MjQwYzAgOC44NCA3LjE2IDE2IDE2IDE2aDY0YzguODQgMCAxNi03LjE2IDE2LTE2di03MC43OUMxMjguMzUgNDA3LjU3IDE2Ni43MiA0MTYgMjA4IDQxNnM3OS42NS04LjQzIDExMi0yMi43OVY0NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjg4aDEyOHYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTIuMDJjMC0zNC4wOS0yNC43OS02Ny41OS01OC44OC02Ny43OHpNNDQ4IDE3NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NS41MzFjLjI1MyAxMzYuNjQtMTExLjE4IDI0OC4zNzItMjQ3LjgyIDI0OC40NjgtNTkuMDE1LjA0Mi0xMTMuMjIzLTIwLjUzLTE1NS44MjItNTQuOTExLTExLjA3Ny04Ljk0LTExLjkwNS0yNS41NDEtMS44MzktMzUuNjA3bDExLjI2Ny0xMS4yNjdjOC42MDktOC42MDkgMjIuMzUzLTkuNTUxIDMxLjg5MS0xLjk4NEMxNzMuMDYyIDQyNS4xMzUgMjEyLjc4MSA0NDAgMjU2IDQ0MGMxMDEuNzA1IDAgMTg0LTgyLjMxMSAxODQtMTg0IDAtMTAxLjcwNS04Mi4zMTEtMTg0LTE4NC0xODQtNDguODE0IDAtOTMuMTQ5IDE4Ljk2OS0xMjYuMDY4IDQ5LjkzMmw1MC43NTQgNTAuNzU0YzEwLjA4IDEwLjA4IDIuOTQxIDI3LjMxNC0xMS4zMTMgMjcuMzE0SDI0Yy04LjgzNyAwLTE2LTcuMTYzLTE2LTE2VjM4LjYyN2MwLTE0LjI1NCAxNy4yMzQtMjEuMzkzIDI3LjMxNC0xMS4zMTRsNDkuMzcyIDQ5LjM3MkMxMjkuMjA5IDM0LjEzNiAxODkuNTUyIDggMjU2IDhjMTM2LjgxIDAgMjQ3Ljc0NyAxMTAuNzggMjQ4IDI0Ny41MzF6bS0xODAuOTEyIDc4Ljc4NGw5LjgyMy0xMi42M2M4LjEzOC0xMC40NjMgNi4yNTMtMjUuNTQyLTQuMjEtMzMuNjc5TDI4OCAyNTYuMzQ5VjE1MmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTE2Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTM1LjY1MWw2NS40MDkgNTAuODc0YzEwLjQ2MyA4LjEzNyAyNS41NDEgNi4yNTMgMzMuNjc5LTQuMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvY2tleVB1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNjBjMC01MyAxMTQuNi05NiAyNTYtOTZzMjU2IDQzIDI1NiA5Ni0xMTQuNiA5Ni0yNTYgOTZTMCAyMTMgMCAxNjB6bTAgODIuMlYzNTJjMCA1MyAxMTQuNiA5NiAyNTYgOTZzMjU2LTQzIDI1Ni05NlYyNDIuMmMtMTEzLjQgODIuMy0zOTguNSA4Mi40LTUxMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb2xseUJlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxOTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDgtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0xMTItNDhjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4LTQ4IDIxLjUtNDggNDh6bS0zMi00OGMyNi41IDAgNDgtMjEuNSA0OC00OFMyNTAuNSAwIDIyNCAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bS0xNi4yIDEzOS4xYy4xLTEyLjQtMTMuMS0yMC4xLTIzLjgtMTMuNy0zNC4zIDIwLjMtNzEuNCAzMi43LTEwOC43IDM2LjItOS43LjktMTUuNiAxMS4zLTExLjYgMjAuMiA2LjIgMTMuOSAxMS4xIDI4LjYgMTQuNyA0My44IDMuNiAxNS4yLTUuMyAzMC42LTIwLjIgMzUuMS0xNC45IDQuNS0zMC4xIDcuNi00NS4zIDkuMS05LjcgMS0xNS43IDExLjMtMTEuNyAyMC4yIDE1IDMyLjggMjIuOSA2OS41IDIzIDEwNy43LjEgMTQuNCAxNS4yIDIzLjEgMjcuNiAxNiAzMy4yLTE5IDY4LjktMzAuNSAxMDQuOC0zMy45IDkuNy0uOSAxNS42LTExLjMgMTEuNi0yMC4yLTYuMi0xMy45LTExLjEtMjguNi0xNC43LTQzLjgtMy42LTE1LjIgNS4zLTMwLjYgMjAuMi0zNS4xIDE0LjktNC41IDMwLjEtNy42IDQ1LjMtOS4xIDkuNy0xIDE1LjctMTEuMyAxMS43LTIwLjItMTUuNS0zNC4yLTIzLjMtNzIuNS0yMi45LTExMi4zek00MzUgMzY1LjZjLTE1LjItMS42LTMwLjMtNC43LTQ1LjMtOS4xLTE0LjktNC41LTIzLjgtMTkuOS0yMC4yLTM1LjEgMy42LTE1LjIgOC41LTI5LjggMTQuNy00My44IDQtOC45LTEuOS0xOS4zLTExLjYtMjAuMi0zNy4zLTMuNS03NC40LTE1LjktMTA4LjctMzYuMi0xMC43LTYuMy0yMy45IDEuNC0yMy44IDEzLjcgMCAxLjYtLjIgMy4yLS4yIDQuOS4yIDMzLjMgNyA2NS43IDE5LjkgOTQgNS43IDEyLjQgNS4yIDI2LjYtLjYgMzguOSA0LjkgMS4yIDkuOSAyLjIgMTQuOCAzLjcgMTQuOSA0LjUgMjMuOCAxOS45IDIwLjIgMzUuMS0zLjYgMTUuMi04LjUgMjkuOC0xNC43IDQzLjgtNCA4LjkgMS45IDE5LjMgMTEuNiAyMC4yIDM1LjkgMy40IDcxLjYgMTQuOSAxMDQuOCAzMy45IDEyLjUgNy4xIDI3LjYtMS42IDI3LjYtMTYgLjItMzguMiA4LTc1IDIzLTEwNy43IDQuMy04LjctMS44LTE5LjEtMTEuNS0yMC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MC4zNyAxNDguMjZMOTYgMzAwLjExVjQ2NGExNiAxNiAwIDAgMCAxNiAxNmwxMTIuMDYtLjI5YTE2IDE2IDAgMCAwIDE1LjkyLTE2VjM2OGExNiAxNiAwIDAgMSAxNi0xNmg2NGExNiAxNiAwIDAgMSAxNiAxNnY5NS42NGExNiAxNiAwIDAgMCAxNiAxNi4wNUw0NjQgNDgwYTE2IDE2IDAgMCAwIDE2LTE2VjMwMEwyOTUuNjcgMTQ4LjI2YTEyLjE5IDEyLjE5IDAgMCAwLTE1LjMgMHpNNTcxLjYgMjUxLjQ3TDQ4OCAxODIuNTZWNDQuMDVhMTIgMTIgMCAwIDAtMTItMTJoLTU2YTEyIDEyIDAgMCAwLTEyIDEydjcyLjYxTDMxOC40NyA0M2E0OCA0OCAwIDAgMC02MSAwTDQuMzQgMjUxLjQ3YTEyIDEyIDAgMCAwLTEuNiAxNi45bDI1LjUgMzFBMTIgMTIgMCAwIDAgNDUuMTUgMzAxbDIzNS4yMi0xOTMuNzRhMTIuMTkgMTIuMTkgMCAwIDEgMTUuMyAwTDUzMC45IDMwMWExMiAxMiAwIDAgMCAxNi45LTEuNmwyNS41LTMxYTEyIDEyIDAgMCAwLTEuNy0xNi45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9yc2VIZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwOS44IDMzMi41bC02OS45LTE2NC4zYy0xNC45LTQxLjItNTAuNC03MS05My03OS4yIDE4LTEwLjYgNDYuMy0zNS45IDM0LjItODIuMy0xLjMtNS03LjEtNy45LTEyLTYuMUwxNjYuOSA3Ni4zQzM1LjkgMTIzLjQgMCAyMzguOSAwIDM5OC44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyMzYuMmMyMy44IDAgMzkuMy0yNSAyOC42LTQ2LjNMMjU2IDM4NHYtLjdjLTQ1LjYtMy41LTg0LjYtMzAuNy0xMDQuMy02OS42LTEuNi0zLjEtLjktNi45IDEuNi05LjNsMTIuMS0xMi4xYzMuOS0zLjkgMTAuNi0yLjcgMTIuOSAyLjQgMTQuOCAzMy43IDQ4LjIgNTcuNCA4Ny40IDU3LjQgMTcuMiAwIDMzLTUuMSA0Ni44LTEzLjJsNDYgNjMuOWM2IDguNCAxNS43IDEzLjMgMjYgMTMuM2g1MC4zYzguNSAwIDE2LjYtMy40IDIyLjYtOS40bDQ1LjMtMzkuOGM4LjktOS4xIDExLjctMjIuNiA3LjEtMzQuNHpNMzI4IDIyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS45MiA3Ni42Yy0uMDEtOC4xMy0zLjAyLTE1Ljg3LTguNTgtMjEuOC0zLjc4LTQuMDMtOC41OC05LjEyLTEzLjY5LTE0LjUgMTEuMDYtNi44NCAxOS41LTE3LjQ5IDIyLjE4LTMwLjY2QzU3Ni44NSA0LjY4IDU3Mi45NiAwIDU2Ny45IDBINDQ3LjkyYy03MC42OSAwLTEyOCA1Ny4zMS0xMjggMTI4SDE2MGMtMjguODQgMC01NC40IDEyLjk4LTcyIDMzLjExVjE2MGMtNDguNTMgMC04OCAzOS40Ny04OCA4OHY1NmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNTZjMC0xMy4yMiA2Ljg3LTI0LjM5IDE2Ljc4LTMxLjY4LS4yMSAyLjU4LS43OCA1LjA1LS43OCA3LjY4IDAgMjcuNjQgMTEuODQgNTIuMzYgMzAuNTQgNjkuODhsLTI1LjcyIDY4LjZhNjMuOTQ1IDYzLjk0NSAwIDAgMC0yLjE2IDM3Ljk5bDI0Ljg1IDk5LjQxQTE1Ljk4MiAxNS45ODIgMCAwIDAgMTA3LjAyIDUxMmg2NS45NmMxMC40MSAwIDE4LjA1LTkuNzggMTUuNTItMTkuODhsLTI2LjMxLTEwNS4yNiAyMy44NC02My41OUwzMjAgMzQ1LjZWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDY0YzguODQgMCAxNi03LjE2IDE2LTE2VjMxOC4yMmMxOS43NC0yMC4xOSAzMi00Ny43NSAzMi03OC4yMiAwLS4yMi0uMDctLjQyLS4wOC0uNjRWMTM2Ljg5bDE2IDcuMTEgMTguOSAzNy43YzcuNDUgMTQuODcgMjUuMDUgMjEuNTUgNDAuNDkgMTUuMzdsMzIuNTUtMTMuMDJhMzEuOTk3IDMxLjk5NyAwIDAgMCAyMC4xMi0yOS43NGwtLjA2LTc3Ljcxem0tNjQgMTkuNGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvc3BpdGFsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCA5Nkg0MTZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzY4YzAgOC44IDcuMiAxNiAxNiAxNmg1NDRjOC44IDAgMTYtNy4yIDE2LTE2VjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTYwIDQzNmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMTYwIDEyOGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMTYtMTcwYzAgMy4zLTIuNyA2LTYgNmgtMjZ2MjZjMCAzLjMtMi43IDYtNiA2aC0yMGMtMy4zIDAtNi0yLjctNi02di0yNmgtMjZjLTMuMyAwLTYtMi43LTYtNnYtMjBjMC0zLjMgMi43LTYgNi02aDI2Vjg2YzAtMy4zIDIuNy02IDYtNmgyMGMzLjMgMCA2IDIuNyA2IDZ2MjZoMjZjMy4zIDAgNiAyLjcgNiA2djIwem0xNDQgMjk4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC0xMjhjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3NwaXRhbFN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMEMxMTQuNiAwIDAgMTE0LjYgMCAyNTZzMTE0LjYgMjU2IDI1NiAyNTYgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMHptMTEyIDM3NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTg4aC05NnY4OGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWMTM2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2ODhoOTZ2LTg4YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3NwaXRhbFVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDMyMGE5NiA5NiAwIDEgMC05Ni05NiA5NiA5NiAwIDAgMCA5NiA5NnptNDggMzJhMjIuODggMjIuODggMCAwIDAtNy4wNiAxLjA5IDEyNC43NiAxMjQuNzYgMCAwIDEtODEuODkgMEEyMi44MiAyMi44MiAwIDAgMCA0MzIgMzUyYTExMiAxMTIgMCAwIDAtMTEyIDExMi42MmMuMTQgMjYuMjYgMjEuNzMgNDcuMzggNDggNDcuMzhoMjI0YzI2LjI3IDAgNDcuODYtMjEuMTIgNDgtNDcuMzhBMTEyIDExMiAwIDAgMCA1MjggMzUyem0tMTk4LjA5IDEwLjQ1QTE0NS4xOSAxNDUuMTkgMCAwIDEgMzUyIDM0NC42MlYxMjhhMzIgMzIgMCAwIDAtMzItMzJoLTMyVjMyYTMyIDMyIDAgMCAwLTMyLTMySDk2YTMyIDMyIDAgMCAwLTMyIDMydjY0SDMyYTMyIDMyIDAgMCAwLTMyIDMydjM2OGExNiAxNiAwIDAgMCAxNiAxNmgyODguMzFBNzguNjIgNzguNjIgMCAwIDEgMjg4IDQ2NC43OWExNDMuMDYgMTQzLjA2IDAgMCAxIDQxLjkxLTEwMi4zNHpNMTQ0IDQwNGExMiAxMiAwIDAgMS0xMiAxMkg5MmExMiAxMiAwIDAgMS0xMi0xMnYtNDBhMTIgMTIgMCAwIDEgMTItMTJoNDBhMTIgMTIgMCAwIDEgMTIgMTJ6bTAtMTI4YTEyIDEyIDAgMCAxLTEyIDEySDkyYTEyIDEyIDAgMCAxLTEyLTEydi00MGExMiAxMiAwIDAgMSAxMi0xMmg0MGExMiAxMiAwIDAgMSAxMiAxMnptNDgtMTIyYTYgNiAwIDAgMS02IDZoLTIwYTYgNiAwIDAgMS02LTZ2LTI2aC0yNmE2IDYgMCAwIDEtNi02di0yMGE2IDYgMCAwIDEgNi02aDI2VjcwYTYgNiAwIDAgMSA2LTZoMjBhNiA2IDAgMCAxIDYgNnYyNmgyNmE2IDYgMCAwIDEgNiA2djIwYTYgNiAwIDAgMS02IDZoLTI2em04MCAyNTBhMTIgMTIgMCAwIDEtMTIgMTJoLTQwYTEyIDEyIDAgMCAxLTEyLTEydi00MGExMiAxMiAwIDAgMSAxMi0xMmg0MGExMiAxMiAwIDAgMSAxMiAxMnptMC0xMjhhMTIgMTIgMCAwIDEtMTIgMTJoLTQwYTEyIDEyIDAgMCAxLTEyLTEydi00MGExMiAxMiAwIDAgMSAxMi0xMmg0MGExMiAxMiAwIDAgMSAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDQ5MnYyMEgwdi0yMGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDIwVjEyMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoODhWMjRjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDExMmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2NzJoODhjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djM2MGgyMGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyek0zMDggMTkyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6bS0xNjggNjRoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMTA0IDEyOGgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2ODRoNjR2LTg0YzAtNi42MjctNS4zNzMtMTItMTItMTJ6bTY0LTk2aC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6bS0xMTYgMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MHpNMTgyIDk2aDI2djI2YTYgNiAwIDAgMCA2IDZoMjBhNiA2IDAgMCAwIDYtNlY5NmgyNmE2IDYgMCAwIDAgNi02VjcwYTYgNiAwIDAgMC02LTZoLTI2VjM4YTYgNiAwIDAgMC02LTZoLTIwYTYgNiAwIDAgMC02IDZ2MjZoLTI2YTYgNiAwIDAgMC02IDZ2MjBhNiA2IDAgMCAwIDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90VHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNC4yMSAxNzcuNjVjMS4wMiA4LjIxIDcuNzUgMTQuMzUgMTUuNzUgMTQuMzVoMTYuMTJjOS41MSAwIDE3LjA4LTguNTcgMTYtMTguMzUtNC4zNC0zOS4xMS0yMi40LTc0LjUzLTUwLjEzLTk3LjE2LTE3LjM3LTE0LjE3LTI4LjgyLTM2Ljc1LTMxLjk4LTYyLjE1QzM3OC45NiA2LjE0IDM3Mi4yMiAwIDM2NC4yMyAwaC0xNi4xMmMtOS41MSAwLTE3LjA5IDguNTctMTYgMTguMzUgNC4zNCAzOS4xMSAyMi40IDc0LjUzIDUwLjEzIDk3LjE2IDE3LjM2IDE0LjE3IDI4LjgyIDM2Ljc1IDMxLjk3IDYyLjE0em0tMTA4IDBjMS4wMiA4LjIxIDcuNzUgMTQuMzUgMTUuNzUgMTQuMzVoMTYuMTJjOS41MSAwIDE3LjA4LTguNTcgMTYtMTguMzUtNC4zNC0zOS4xMS0yMi40LTc0LjUzLTUwLjEzLTk3LjE2LTE3LjM3LTE0LjE3LTI4LjgyLTM2Ljc1LTMxLjk4LTYyLjE1QzI3MC45NiA2LjE0IDI2NC4yMiAwIDI1Ni4yMyAwaC0xNi4xMmMtOS41MSAwLTE3LjA5IDguNTctMTYgMTguMzUgNC4zNCAzOS4xMSAyMi40IDc0LjUzIDUwLjEzIDk3LjE2IDE3LjM2IDE0LjE3IDI4LjgyIDM2Ljc1IDMxLjk3IDYyLjE0ek00ODAgMjU2SDI1NmwtMTEwLjkzLTgzLjJhNjMuOTkgNjMuOTkgMCAwIDAtMzguNC0xMi44SDY0Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djIyNGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM4NGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0VjI4OGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xMjggNDQwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LThWMzI4YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djExMnptOTYgMGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04VjMyOGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxMTJ6bTk2IDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOFYzMjhjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTEyem05NiAwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LThWMzI4YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djExMnpNNjQgMTI4YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRTOTkuMzUgMCA2NCAwIDAgMjguNjUgMCA2NHMyOC42NSA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90ZG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC41NiAyMy40NGE4MCA4MCAwIDAgMC0xMTMuMTIgMGwtMzUyIDM1MmE4MCA4MCAwIDEgMCAxMTMuMTIgMTEzLjEybDM1Mi0zNTJhODAgODAgMCAwIDAgMC0xMTMuMTJ6bS00OS45MyA5NS4xOWMtMTkuNiAxOS41OS0zNy41MiAyMi42Ny01MS45MyAyNS4xNEMzNzMuNzYgMTQ2IDM2NC40IDE0Ny42IDM1MiAxNjBzLTE0IDIxLjc2LTE2LjIzIDM0LjcxYy0yLjQ4IDE0LjQtNS41NSAzMi4zMy0yNS4xNSA1MS45MnMtMzcuNTIgMjIuNjctNTEuOTIgMjUuMTVDMjQ1Ljc1IDI3NCAyMzYuNCAyNzUuNiAyMjQgMjg4cy0xNCAyMS43NS0xNi4yMyAzNC43Yy0yLjQ3IDE0LjQtNS41NCAzMi4zMy0yNS4xNCA1MS45MnMtMzcuNTMgMjIuNjgtNTEuOTMgMjUuMTVDMTE3Ljc2IDQwMiAxMDguNCA0MDMuNiA5NiA0MTZhMTYgMTYgMCAwIDEtMjIuNjMtMjIuNjNjMTkuNi0xOS41OSAzNy41Mi0yMi42NyA1MS45Mi0yNS4xNCAxMy0yLjIyIDIyLjMtMy44MiAzNC43MS0xNi4yM3MxNC0yMS43NSAxNi4yMi0zNC43YzIuNDgtMTQuNCA1LjU1LTMyLjMzIDI1LjE1LTUxLjkyczM3LjUyLTIyLjY3IDUxLjkyLTI1LjE0YzEzLTIuMjIgMjIuMy0zLjgzIDM0LjctMTYuMjNzMTQtMjEuNzYgMTYuMjQtMzQuNzFjMi40Ny0xNC40IDUuNTQtMzIuMzMgMjUuMTQtNTEuOTJzMzcuNTItMjIuNjggNTEuOTItMjUuMTVDMzk0LjI0IDExMCA0MDMuNTkgMTA4LjQxIDQxNiA5NmExNiAxNiAwIDAgMSAyMi42MyAyMi42M3pNMzEuNDQgMzIyLjE4TDMyMi4xOCAzMS40NGwtMTEuNTQtMTEuNTVjLTI1LTI1LTYzLjg1LTI2LjY2LTg2Ljc5LTMuNzJMMTYuMTcgMjIzLjg1Yy0yMi45NCAyMi45NC0yMS4yNyA2MS43OSAzLjcyIDg2Ljc4em00NDkuMTItMTMyLjM2TDE4OS44MiA0ODAuNTZsMTEuNTQgMTEuNTVjMjUgMjUgNjMuODUgMjYuNjYgODYuNzkgMy43MmwyMDcuNjgtMjA3LjY4YzIyLjk0LTIyLjk0IDIxLjI3LTYxLjc5LTMuNzItODYuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdGVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MCA2NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDAgMCA3LjE2IDAgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTUuOTh2Mzg0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgyNDB2LTgwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2ODBoMjQwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZWNjRoMTZ6bS0zMDQgNDQuOGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNHptMCA5NmMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNHptLTEyOC05NmMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNHpNMTc5LjIgMjU2aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44ek0xOTIgMzg0YzAtNTMuMDIgNDIuOTgtOTYgOTYtOTZzOTYgNDIuOTggOTYgOTZIMTkyem0yNTYtMTQwLjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6bTAtOTZjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc0VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCAwIDkwLjk2NSA1MS4wMTYgMTY3LjczNCAxMjAuODQyIDE5MkM3NS4wMTYgMjgwLjI2NiAyNCAzNTcuMDM1IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQgMC05MC45NjUtNTEuMDE2LTE2Ny43MzQtMTIwLjg0Mi0xOTJDMzA4Ljk4NCAyMzEuNzM0IDM2MCAxNTQuOTY1IDM2MCA2NHpNMTkyIDIwOGMtNTcuNzg3IDAtMTA0LTY2LjUxOC0xMDQtMTQ0aDIwOGMwIDc3Ljk0NS00Ni41MSAxNDQtMTA0IDE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91cmdsYXNzSGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCAwIDkwLjk2NSA1MS4wMTYgMTY3LjczNCAxMjAuODQyIDE5MkM3NS4wMTYgMjgwLjI2NiAyNCAzNTcuMDM1IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQgMC05MC45NjUtNTEuMDE2LTE2Ny43MzQtMTIwLjg0Mi0xOTJDMzA4Ljk4NCAyMzEuNzM0IDM2MCAxNTQuOTY1IDM2MCA2NGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0em0tNzUuMDc4IDM4NEg5OS4wOGMxNy4wNTktNDYuNzk3IDUyLjA5Ni04MCA5Mi45Mi04MCA0MC44MjEgMCA3NS44NjIgMzMuMTk2IDkyLjkyMiA4MHptLjAxOS0yNTZIOTkuMDc4QzkxLjk4OCAxMDguNTQ4IDg4IDg2Ljc0OCA4OCA2NGgyMDhjMCAyMi44MDUtMy45ODcgNDQuNTg3LTExLjA1OSA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91cmdsYXNzU3RhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYwIDBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHptLTY0IDQ0OEg4OGMwLTc3LjQ1OCA0Ni4yMDQtMTQ0IDEwNC0xNDQgNTcuNzg2IDAgMTA0IDY2LjUxNyAxMDQgMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VyZ2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYwIDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlRGFtYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxMTQuOTZMNjkuNDcgMzA3LjcxYy0xLjYyIDEuNDYtMy42OSAyLjE0LTUuNDcgMy4zNVY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTQ5LjIzTDE5MiA0MzkuMTlsMTA0LjExLTY0LTYwLjE2LTExOS4yMkwzODQgMzkyLjc1bC0xMDQuMTEgNjRMMzE5LjgxIDUxMkg0OTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzExLjFjLTEuNy0xLjE2LTMuNzItMS44Mi01LjI2LTMuMkwyODggMTE0Ljk2em0yODIuNjkgMTIxLjMyTDUxMiAxODQuNDVWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTY0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY1MS42OUwzMTQuNzUgMTAuMzFDMzA3LjEyIDMuNDUgMjk3LjU2LjAxIDI4OCAwcy0xOS4xIDMuNDEtMjYuNyAxMC4yN0w1LjMxIDIzNi4yOGMtNi41NyA1LjkxLTcuMTIgMTYuMDItMS4yMSAyMi42bDIxLjQgMjMuODJjNS45IDYuNTcgMTYuMDIgNy4xMiAyMi42IDEuMjFMMjc3LjQyIDgxLjYzYzYuMDUtNS4zMyAxNS4xMi01LjMzIDIxLjE3IDBMNTI3LjkxIDI4My45YzYuNTcgNS45IDE2LjY5IDUuMzYgMjIuNi0xLjIxbDIxLjQtMjMuODJjNS45LTYuNTcgNS4zNi0xNi42OS0xLjIyLTIyLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcwLjY5LDIzNi4yNyw1MTIsMTg0LjQ0VjQ4YTE2LDE2LDAsMCwwLTE2LTE2SDQzMmExNiwxNiwwLDAsMC0xNiwxNlY5OS42N0wzMTQuNzgsMTAuM0MzMDguNSw0LjYxLDI5Ni41MywwLDI4OCwwcy0yMC40Niw0LjYxLTI2Ljc0LDEwLjNsLTI1NiwyMjZBMTguMjcsMTguMjcsMCwwLDAsMCwyNDguMmExOC42NCwxOC42NCwwLDAsMCw0LjA5LDEwLjcxTDI1LjUsMjgyLjdhMjEuMTQsMjEuMTQsMCwwLDAsMTIsNS4zLDIxLjY3LDIxLjY3LDAsMCwwLDEwLjY5LTQuMTFsMTUuOS0xNFY0ODBhMzIsMzIsMCwwLDAsMzIsMzJINDgwYTMyLDMyLDAsMCwwLDMyLTMyVjI2OS44OGwxNS45MSwxNEEyMS45NCwyMS45NCwwLDAsMCw1MzguNjMsMjg4YTIwLjg5LDIwLjg5LDAsMCwwLDExLjg3LTUuMzFsMjEuNDEtMjMuODFBMjEuNjQsMjEuNjQsMCwwLDAsNTc2LDI0OC4xOSwyMSwyMSwwLDAsMCw1NzAuNjksMjM2LjI3Wk0yODgsMTc2YTY0LDY0LDAsMSwxLTY0LDY0QTY0LDY0LDAsMCwxLDI4OCwxNzZaTTQwMCw0NDhIMTc2YTE2LDE2LDAsMCwxLTE2LTE2LDk2LDk2LDAsMCwxLDk2LTk2aDY0YTk2LDk2LDAsMCwxLDk2LDk2QTE2LDE2LDAsMCwxLDQwMCw0NDhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhyeXZuaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDI0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTQxLjg2YzEzLjQxLTI4LjYzIDEzLjc0LTYzLjMzLTQuMTMtOTQuMDVDMzAzLjM0IDQ5Ljg0IDI2Ny4xIDMyIDIyOS45NiAzMmgtNzguODJjLTI0LjMyIDAtNDcuODYgOC41My02Ni41NCAyNC4wOUw3Mi44MyA2NS45Yy0xMC4xOCA4LjQ5LTExLjU2IDIzLjYyLTMuMDcgMzMuOGwyMC40OSAyNC41OWM4LjQ5IDEwLjE5IDIzLjYyIDExLjU2IDMzLjgxIDMuMDdsMTEuNzMtOS43OGM0LjMyLTMuNiA5Ljc3LTUuNTcgMTUuMzktNS41N2g4My42MmMxMS42OSAwIDIxLjIgOS41MiAyMS4yIDIxLjIgMCA1LjkxLTIuNDggMTEuNTgtNi44MSAxNS41OEwyMTkuNyAxNzZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDEzNC4zN2wtMzQuNjcgMzJIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxLjg2Yy0xMy40MSAyOC42My0xMy43NCA2My4zMyA0LjEzIDk0LjA1QzgwLjY2IDQ2Mi4xNSAxMTYuOSA0ODAgMTU0LjA0IDQ4MGg3OC44MmMyNC4zMiAwIDQ3Ljg2LTguNTMgNjYuNTQtMjQuMDlsMTEuNzctOS44MWMxMC4xOC04LjQ5IDExLjU2LTIzLjYyIDMuMDctMzMuOGwtMjAuNDktMjQuNTljLTguNDktMTAuMTktMjMuNjItMTEuNTYtMzMuODEtMy4wN2wtMTEuNzUgOS44YTIzLjk5MiAyMy45OTIgMCAwIDEtMTUuMzYgNS41NkgxNDkuMmMtMTEuNjkgMC0yMS4yLTkuNTItMjEuMi0yMS4yIDAtNS45MSAyLjQ4LTExLjU4IDYuODEtMTUuNThMMTY0LjMgMzM2SDM2OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMjMzLjYzbDM0LjY3LTMySDM2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSUN1cnNvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTIuMDQ4VjEyLjA2NUMyNTYgNS40OTYgMjUwLjcyNi4xNDggMjQ0LjE1OC4wNjYgMjExLjYyMS0uMzQ0IDE2Ni40NjkuMDExIDEyOCAzNy45NTkgOTAuMjY2LjczNiA0Ni45NzktLjExNCAxMS45MTMuMTE0IDUuMzE4LjE1NyAwIDUuNTE5IDAgMTIuMTE0djM5LjY0NWMwIDYuNjg3IDUuNDU4IDEyLjA3OCAxMi4xNDUgMTEuOTk4QzM4LjExMSA2My40NDcgOTYgNjcuMjQzIDk2IDExMi4xODJWMjI0SDYwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMzZ2MTEyYzAgNDQuOTMyLTU2LjA3NSA0OC4wMzEtODMuOTUgNDcuOTU5QzUuNDA0IDQ0Ny45NDIgMCA0NTMuMzA2IDAgNDU5Ljk1MnYzOS45ODNjMCA2LjU2OSA1LjI3NCAxMS45MTcgMTEuODQyIDExLjk5OSAzMi41MzcuNDA5IDc3LjY4OS4wNTQgMTE2LjE1OC0zNy44OTQgMzcuNzM0IDM3LjIyMyA4MS4wMjEgMzguMDczIDExNi4wODcgMzcuODQ1IDYuNTk1LS4wNDMgMTEuOTEzLTUuNDA1IDExLjkxMy0xMlY0NjAuMjRjMC02LjY4Ny01LjQ1OC0xMi4wNzgtMTIuMTQ1LTExLjk5OEMyMTcuODg5IDQ0OC41NTMgMTYwIDQ0NC45MzkgMTYwIDQwMFYyODhoMzZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMzZWMTEyLjE4MmMwLTQ0LjkzMiA1Ni4wNzUtNDguMjEzIDgzLjk1LTQ4LjE0MiA2LjY0Ni4wMTggMTIuMDUtNS4zNDYgMTIuMDUtMTEuOTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJY2VDcmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggMTYwaC0uOTRhMTQ0IDE0NCAwIDEgMC0yODYuMTIgMEg4MGE0OCA0OCAwIDAgMCAwIDk2aDI4OGE0OCA0OCAwIDAgMCAwLTk2ek0xOTUuMzggNDkzLjY5YTMxLjUyIDMxLjUyIDAgMCAwIDU3LjI0IDBMMzUyIDI4OEg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNpY2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuNCAzNy45QzUxNS4xIDE4LjIgNTAwIDAgNDgwIDBIMzJDMTAuNiAwLTQuOCAyMC43IDEuNCA0MS4ybDg3LjEgMjczLjRjMi41IDcuMiAxMi43IDcuMiAxNS4xIDBMMTQwIDE5MC41bDQ0LjIgMTg3LjNjMS45IDguMyAxMy43IDguMyAxNS42IDBsNDYuNS0xOTYuOSAzNC4xIDEzMy40YzIuMyA3LjYgMTMgNy42IDE1LjMgMGw0NS44LTE3Mi41IDY2LjcgMzYzLjhjMS43IDguNiAxNCA4LjYgMTUuNyAwbDg3LjUtNDY3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUljb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNi42NSAyMTkuMzVhMTUuNjggMTUuNjggMCAwIDAgMjIuNjUgMGw5Ni43NS05OS44M2MyOC4xNS0yOSAyNi41LTc3LjEtNC45MS0xMDMuODhDMjAzLjc1LTcuNyAxNjMtMy41IDEzNy44NiAyMi40NEwxMjggMzIuNThsLTkuODUtMTAuMTRDOTMuMDUtMy41IDUyLjI1LTcuNyAyNC44NiAxNS42NGMtMzEuNDEgMjYuNzgtMzMgNzQuODUtNSAxMDMuODh6bTE0My45MiAxMDAuNDloLTQ4bC03LjA4LTE0LjI0YTI3LjM5IDI3LjM5IDAgMCAwLTI1LjY2LTE3Ljc4aC03MS43MWEyNy4zOSAyNy4zOSAwIDAgMC0yNS42NiAxNy43OGwtNyAxNC4yNGgtNDhBMjcuNDUgMjcuNDUgMCAwIDAgMCAzNDcuM3YxMzcuMjVBMjcuNDQgMjcuNDQgMCAwIDAgMjcuNDMgNTEyaDIzMy4xNEEyNy40NSAyNy40NSAwIDAgMCAyODggNDg0LjU1VjM0Ny4zYTI3LjQ1IDI3LjQ1IDAgMCAwLTI3LjQzLTI3LjQ2ek0xNDQgNDY4YTUyIDUyIDAgMSAxIDUyLTUyIDUyIDUyIDAgMCAxLTUyIDUyem0zNTUuNC0xMTUuOWgtNjAuNThsMjIuMzYtNTAuNzVjMi4xLTYuNjUtMy45My0xMy4yMS0xMi4xOC0xMy4yMWgtNzUuNTljLTYuMyAwLTExLjY2IDMuOS0xMi41IDkuMWwtMTYuOCAxMDYuOTNjLTEgNi4zIDQuODggMTEuODkgMTIuNSAxMS44OWg2Mi4zMWwtMjQuMiA4M2MtMS44OSA2LjY1IDQuMiAxMi45IDEyLjIzIDEyLjlhMTMuMjYgMTMuMjYgMCAwIDAgMTAuOTItNS4yNWw5Mi40LTEzOC45MWM0Ljg4LTYuOTEtMS4xNi0xNS43LTEwLjg3LTE1Ljd6TTQ3OC4wOC4zM0wzMjkuNTEgMjMuMTdDMzE0Ljg3IDI1LjQyIDMwNCAzOC45MiAzMDQgNTQuODNWMTYxLjZhODMuMjUgODMuMjUgMCAwIDAtMTYtMS43Yy0zNS4zNSAwLTY0IDIxLjQ4LTY0IDQ4czI4LjY1IDQ4IDY0IDQ4YzM1LjIgMCA2My43My0yMS4zMiA2NC00Ny42NlY5OS42NmwxMTItMTcuMjJ2NDcuMThhODMuMjUgODMuMjUgMCAwIDAtMTYtMS43Yy0zNS4zNSAwLTY0IDIxLjQ4LTY0IDQ4czI4LjY1IDQ4IDY0IDQ4YzM1LjIgMCA2My43My0yMS4zMiA2NC00Ny42NlYzMmMwLTE5LjQ4LTE2LTM0LjQyLTMzLjkyLTMxLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZEJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNDQgMzJoOTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZoLTk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em00OCAxMjhjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjQtNjQtMjguNy02NC02NCAyOC43LTY0IDY0LTY0em0xMTIgMjM2LjhjMCAxMC42LTEwIDE5LjItMjIuNCAxOS4ySDEwMi40QzkwIDQxNiA4MCA0MDcuNCA4MCAzOTYuOHYtMTkuMmMwLTMxLjggMzAuMS01Ny42IDY3LjItNTcuNmg1YzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDVjMzcuMSAwIDY3LjIgMjUuOCA2Ny4yIDU3LjZ2MTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRDYXJkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA2NEgzODR2OTZIMTkyVjY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yODggMjI0YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptOTMuMyAyMjRIMTk0LjdjLTEwLjQgMC0xOC44LTEwLTE1LjYtMTkuOCA4LjMtMjUuNiAzMi40LTQ0LjIgNjAuOS00NC4yaDguMmMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg4LjJjMjguNCAwIDUyLjUgMTguNSA2MC45IDQ0LjIgMy4yIDkuOC01LjIgMTkuOC0xNS42IDE5Ljh6TTM1MiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMmgtNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDEyOFYzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjE2aDU3NlY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMCA0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEyOEgwdjMwNHptMzUyLTIzMmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2em0wIDY0YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZ6bTAgNjRjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNnpNMTc2IDE5MmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NC02NC0yOC43LTY0LTY0IDI4LjctNjQgNjQtNjR6TTY3LjEgMzk2LjJDNzUuNSAzNzAuNSA5OS42IDM1MiAxMjggMzUyaDguMmMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg4LjJjMjguNCAwIDUyLjUgMTguNSA2MC45IDQ0LjIgMy4yIDkuOS01LjIgMTkuOC0xNS42IDE5LjhIODIuN2MtMTAuNCAwLTE4LjgtMTAtMTUuNi0xOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZ2xvbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzMuOWMtMTAuNS0xLjItMjEuMi0xLjktMzItMS45LTk5LjggMC0xODcuOCA1MC44LTIzOS40IDEyOEgzMjBWMzMuOXpNOTYgMTkySDMwLjNDMTEuMSAyMzAuNiAwIDI3NCAwIDMyMGg5NlYxOTJ6TTM1MiAzOS40VjE2MGgxNzUuNEM0ODcuMiA5OS45IDQyNC44IDU1LjkgMzUyIDM5LjR6TTQ4MCAzMjBoOTZjMC00Ni0xMS4xLTg5LjQtMzAuMy0xMjhINDgwdjEyOHptLTY0IDY0djk2aDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnYtOTZINDExLjVjMi42IDEwLjMgNC41IDIwLjkgNC41IDMyem0zMi0xOTJIMTI4djEyOGg0OS44YzIyLjItMzguMSA2My02NCAxMTAuMi02NHM4OCAyNS45IDExMC4yIDY0SDQ0OFYxOTJ6TTAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDEyOHYtOTZjMC0xMS4xIDEuOS0yMS43IDQuNS0zMkgwdjk2em0yODgtMTYwYy01MyAwLTk2IDQzLTk2IDk2djk2aDE5MnYtOTZjMC01My00My05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTEyIDEyMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2ek02NCAzODRoMzg0VjI3MmwtODcuNTE1LTg3LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDIwOCAzMjBsLTU1LjUxNS01NS41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw2NCAzMzZ2NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUltYWdlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgNDE2djE2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTc2YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMTZ2MjA4YzAgNDQuMTEyIDM1Ljg4OCA4MCA4MCA4MGgzMzZ6bTk2LTgwVjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhIMTQ0Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djI1NmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM4NGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4ek0yNTYgMTI4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4IDIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4em0tOTYgMTQ0bDU1LjUxNS01NS41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDI3MiAyNTZsMTM1LjUxNS0xMzUuNTE1YzQuNjg2LTQuNjg2IDEyLjI4NC00LjY4NiAxNi45NzEgMEw1MTIgMjA4djExMkgxNjB2LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjcuOTM4IDI0My45MDhMNDYyLjI1IDg1LjM3NEE0OC4wMDMgNDguMDAzIDAgMCAwIDQyMi4zMTEgNjRIMTUzLjY4OWE0OCA0OCAwIDAgMC0zOS45MzggMjEuMzc0TDguMDYyIDI0My45MDhBNDcuOTk0IDQ3Ljk5NCAwIDAgMCAwIDI3MC41MzNWNDAwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjcwLjUzM2E0Ny45OTQgNDcuOTk0IDAgMCAwLTguMDYyLTI2LjYyNXpNMTYyLjI1MiAxMjhoMjUxLjQ5N2w4NS4zMzMgMTI4SDM3NmwtMzIgNjRIMjMybC0zMi02NEg3Ni45MThsODUuMzM0LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5kZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3LjMxIDM2My4zbDk2LTk2YTE2IDE2IDAgMCAwIDAtMjIuNjJsLTk2LTk2QzE3LjI3IDEzOC42NiAwIDE0NS43OCAwIDE2MHYxOTJjMCAxNC4zMSAxNy4zMyAyMS4zIDI3LjMxIDExLjN6TTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDM1MmgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDMzOS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDI4OHptMC0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAxNzIuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDIyNGgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDIxMS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDE2MHpNNDMyIDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmR1c3RyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzUuMTE1IDE2My43ODFMMzM2IDI1Mi4zMDl2LTY4LjI4YzAtMTguOTE2LTIwLjkzMS0zMC4zOTktMzYuODg1LTIwLjI0OEwxNjAgMjUyLjMwOVY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2NDAwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg0NjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NC4wMjljMC0xOC45MTctMjAuOTMxLTMwLjM5OS0zNi44ODUtMjAuMjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZpbml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzEuMSA5NkM0MDUgOTYgMzUzLjMgMTM3LjMgMzIwIDE3NC42IDI4Ni43IDEzNy4zIDIzNSA5NiAxNjguOSA5NiA3NS44IDk2IDAgMTY3LjggMCAyNTZzNzUuOCAxNjAgMTY4LjkgMTYwYzY2LjEgMCAxMTcuOC00MS4zIDE1MS4xLTc4LjYgMzMuMyAzNy4zIDg1IDc4LjYgMTUxLjEgNzguNiA5My4xIDAgMTY4LjktNzEuOCAxNjguOS0xNjBTNTY0LjIgOTYgNDcxLjEgOTZ6TTE2OC45IDMyMGMtNDAuMiAwLTcyLjktMjguNy03Mi45LTY0czMyLjctNjQgNzIuOS02NGMzOC4yIDAgNzMuNCAzNi4xIDk0IDY0LTIwLjQgMjcuNi01NS45IDY0LTk0IDY0em0zMDIuMiAwYy0zOC4yIDAtNzMuNC0zNi4xLTk0LTY0IDIwLjQtMjcuNiA1NS45LTY0IDk0LTY0IDQwLjIgMCA3Mi45IDI4LjcgNzIuOSA2NHMtMzIuNyA2NC03Mi45IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZvQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgMTEwYzIzLjE5NiAwIDQyIDE4LjgwNCA0MiA0MnMtMTguODA0IDQyLTQyIDQyLTQyLTE4LjgwNC00Mi00MiAxOC44MDQtNDIgNDItNDJ6bTU2IDI1NGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC04OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMnYtNjRoLTEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDY0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTAwaDEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDE5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNDI0LjIyOWgyMFYyNzkuNzcxSDIwYy0xMS4wNDYgMC0yMC04Ljk1NC0yMC0yMFYyMTJjMC0xMS4wNDYgOC45NTQtMjAgMjAtMjBoMTEyYzExLjA0NiAwIDIwIDguOTU0IDIwIDIwdjIxMi4yMjloMjBjMTEuMDQ2IDAgMjAgOC45NTQgMjAgMjBWNDkyYzAgMTEuMDQ2LTguOTU0IDIwLTIwIDIwSDIwYy0xMS4wNDYgMC0yMC04Ljk1NC0yMC0yMHYtNDcuNzcxYzAtMTEuMDQ2IDguOTU0LTIwIDIwLTIwek05NiAwQzU2LjIzNSAwIDI0IDMyLjIzNSAyNCA3MnMzMi4yMzUgNzIgNzIgNzIgNzItMzIuMjM1IDcyLTcyUzEzNS43NjQgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGFsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ4djMyYTE2IDE2IDAgMCAxLTE2IDE2aC02Mi43NmwtODAgMzIwSDIwOGExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNkgxNmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoNjIuNzZsODAtMzIwSDExMmExNiAxNiAwIDAgMS0xNi0xNlY0OGExNiAxNiAwIDAgMSAxNi0xNmgxOTJhMTYgMTYgMCAwIDEgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplZGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM1Ljk1MzA4LDM1MmMtNDIuNjQwNjksOTQuMTcxODgtMTM3LjY0MDg2LDE2MC0yNDcuOTg0OCwxNjBxLTYuMzk4NDQsMC0xMi44NDM3Ny0uMjk2ODhDMTcxLjE1NTU4LDUwNi45Mzc1LDgxLjI2NDgxLDQ0Mi4yMzQzOCw0MC4wMTQ3NCwzNTJINzkuOTM2NjhMMjEuMzI3MiwyOTMuNDA2MjVhMjY0LjgyNTIyLDI2NC44MjUyMiwwLDAsMS01LjEwOTM4LTM5LjQyMTg3LDI3My42NjUzLDI3My42NjUzLDAsMCwxLC41LTI5Ljk4NDM4SDYzLjkzNjY1TDIyLjU0NiwxODIuNjI1QTI2OS43OTc4MiwyNjkuNzk3ODIsMCwwLDEsMTMwLjUxNDg5LDIwLjU0Njg4YTE2LjA2MzkzLDE2LjA2MzkzLDAsMCwxLDkuMjgxMjctMywxNi4zNjMzMiwxNi4zNjMzMiwwLDAsMSwxMy41LDcuMjUsMTYuMDI3MzksMTYuMDI3MzksMCwwLDEsMS42MjUsMTUuMDkzNzQsMTM4LjM4NywxMzguMzg3LDAsMCwwLTkuODQzNzYsNTEuMjY1NjNjMCw0NS4xMDkzNywyMS4wNDY5MSw4Ni41NzgxMyw1Ny43MTg4NCwxMTMuNzM0MzdhMTYuMjk5ODksMTYuMjk5ODksMCwwLDEsMS4yMDMxMywyNS4zOTA2M2MtMjYuNTQ2OTIsMjMuOTg0MzctNDEuMTcxOTQsNTYuNS00MS4xNzE5NCw5MS41NzgxMywwLDYwLjAzMTI0LDQyLjk1MzE5LDExMC4yODEyNCw5OS44OTA3OSwxMjEuOTIxODdsMi41LTY1LjI2NTYzTDIzOC4wNjIsMzk3YTguMzM5MTEsOC4zMzkxMSwwLDAsMS0xMC0uNzUsOC4wMjUsOC4wMjUsMCwwLDEtMS4zOTA2My05LjkzNzVsMjAuMTI1LTMzLjc2NTYyLTQyLjA2MjU3LTguNzM0MzhhNy45ODk4LDcuOTg5OCwwLDAsMSwwLTE1LjY1NjI1bDQyLjA2MjU3LTguNzE4NzUtMjAuMTA5NDEtMzMuNzM0MzhhNy45OTEyMiw3Ljk5MTIyLDAsMCwxLDExLjM1OTM5LTEwLjcxODc0TDI2OC40MzcsMjk1LjY0MDYyLDI3OS45NTI2NSw3LjY3MTg4YTcuOTcxMzgsNy45NzEzOCwwLDAsMSw4LTcuNjcxODhoLjA0Njg3YTguMDIwNjQsOC4wMjA2NCwwLDAsMSw3Ljk1MzE0LDcuNzAzMTJMMzA3LjQ4Mzk0LDI5NS42MjVsMzAuMzkwNjgtMjAuNjcxODhhOC4wODMyNyw4LjA4MzI3LDAsMCwxLDEwLC44MTI1LDcuOTk4NjYsNy45OTg2NiwwLDAsMSwxLjM5MDYyLDkuOTA2MjZMMzI5LjEyNDYxLDMxOS40Mzc1bDQyLjA3ODE5LDguNzM0MzhhNy45OTM3Myw3Ljk5MzczLDAsMCwxLDAsMTUuNjU2MjRsLTQyLjA3ODE5LDguNzE4NzYsMjAuMTA5NCwzMy43MzQzN2E3Ljk3NzkxLDcuOTc3OTEsMCwwLDEtMS4zMjgxMiw5LjkyMTg3QTguMjU3MzksOC4yNTczOSwwLDAsMSwzMzcuODc0NjIsMzk3TDMxMC43MDI3LDM3OC41MzEyNWwyLjUsNjUuMzQzNzVjNDguNDg0NDYtOS40MDYyNSw4Ny41NzgyOC00OC4xNTYyNSw5Ny4zMTI2Ny05Ni41QTEyMy41MjY1MiwxMjMuNTI2NTIsMCwwLDAsMzcxLjk1MjgsMjMwLjI5Njg4YTE2LjMwNjM0LDE2LjMwNjM0LDAsMCwxLDEuMjAzMTMtMjUuNDIxODhjMzYuNjU2MzEtMjcuMTcxODgsNTcuNjg3Ni02OC42MDkzOCw1Ny42ODc2LTExMy43MzQzOGExMzguMDE2ODksMTM4LjAxNjg5LDAsMCwwLTkuODU5MzktNTEuMzEyNSwxNS45ODEzMiwxNS45ODEzMiwwLDAsMSwxLjYwOTM3LTE1LjA5Mzc0LDE2LjM2OTE0LDE2LjM2OTE0LDAsMCwxLDEzLjUtNy4yMzQzOCwxNi4wMjQ1MywxNi4wMjQ1MywwLDAsMSw5LjI1LDIuOTg0MzhBMjcxLjI2OTQ3LDI3MS4yNjk0NywwLDAsMSw1NTMuMjUsMTgyLjc2NTYyTDUxMS45OTk5MiwyMjRoNDYuOTUzMkM1NTkuMzEyNSwyMjkuNzY1NjIsNTYwLDIzNS40NTMxMiw1NjAsMjQxLjI2NTYyYTI3MC4wOTIsMjcwLjA5MiwwLDAsMS01LjEyNSw1MS44NTkzOEw0OTUuOTg0MjcsMzUyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDQuMzQgMTgxLjFjMjIuMzggMTUuNjggMzUuNjYgNDEuMTYgMzUuNjYgNjguNTlWMjgwYzAgNC40MiAzLjU4IDggOCA4aDQ4YzQuNDIgMCA4LTMuNTggOC04di0zMC4zMWMwLTQzLjI0LTIxLjAxLTgzLjQxLTU2LjM0LTEwOC4wNkM0NjMuODUgMTI1LjAyIDQ0OCA5OS4zNCA0NDggNzAuMzFWOGMwLTQuNDItMy41OC04LTgtOGgtNDhjLTQuNDIgMC04IDMuNTgtOCA4djY2LjRjMCA0My42OSAyNC41NiA4MS42MyA2MC4zNCAxMDYuN3pNMTk0Ljk3IDM1OC45OEMxMjYuMDMgMzcwLjA3IDU5LjY5IDM5NC42OSAwIDQzMmM4My42NSA1Mi4yOCAxODAuMyA4MCAyNzguOTQgODBoODguNTdMMjU0Ljc5IDM4MC40OWMtMTQuNzQtMTcuMi0zNy40NS0yNS4xMS01OS44Mi0yMS41MXpNNTUzLjI4IDg3LjA5Yy01LjY3LTMuOC05LjI4LTkuOTYtOS4yOC0xNi43OFY4YzAtNC40Mi0zLjU4LTgtOC04aC00OGMtNC40MiAwLTggMy41OC04IDh2NjIuMzFjMCAyMi4wMiAxMC4xNyA0My40MSAyOC42NCA1NS4zOUM1NTAuNzkgMTUzLjA0IDU3NiAxOTkuNTQgNTc2IDI0OS42OVYyODBjMCA0LjQyIDMuNTggOCA4IDhoNDhjNC40MiAwIDgtMy41OCA4LTh2LTMwLjMxYzAtNjUuNDQtMzIuNDEtMTI2LjE5LTg2LjcyLTE2Mi42ek0zNjAuODkgMzUyLjA1Yy0zNC40LjA2LTg2LjgxLjE1LTg4LjIxLjE3bDExNy44IDEzNy40M0E2My45ODcgNjMuOTg3IDAgMCAwIDQzOS4wNyA1MTJoODguNDVMNDA5LjU3IDM3NC40YTYzLjk1NSA2My45NTUgMCAwIDAtNDguNjgtMjIuMzV6TTYxNiAzNTJINDMybDExNy45OSAxMzcuNjVBNjMuOTg3IDYzLjk4NyAwIDAgMCA1OTguNTggNTEySDYxNmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0VjM3NmMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKb3VybmFsV2hpbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOC40MDYyNSwzNzcuNTkzNzVjLTMuMjAzMTMsMTIuODEyNS0zLjIwMzEzLDU3LjYwOTM3LDAsNzMuNjA5MzdRNDQ3Ljk5MjIsNDYwLjc4OTA3LDQ0OCw0NzAuNDA2MjV2MTZjMCwxNi0xMi43OTY4OCwyNS41OTM3NS0yNS41OTM3NSwyNS41OTM3NUg5NmMtNTQuNDA2MjUsMC05Ni00MS41OTM3NS05Ni05NlY5NkMwLDQxLjU5Mzc1LDQxLjU5Mzc1LDAsOTYsMEg0MjIuNDA2MjVDNDM4LjQwNjI1LDAsNDQ4LDkuNTkzNzUsNDQ4LDI1LjU5Mzc1djMzMi44MTI1UTQ0OCwzNzIuNzk2ODgsNDM4LjQwNjI1LDM3Ny41OTM3NVpNMzgwLjc5Njg4LDM4NEg5NmMtMTYsMC0zMiwxMi43OTY4OC0zMiwzMnMxMi43OTY4OCwzMiwzMiwzMkgzODAuNzk2ODhaTTEyOC4wMTU2MiwxNzYuMDE1NjJjMCwuNTE1NjMuMTQwNjMuOTg0MzguMTQwNjMsMS41bDM3LjEwOTM3LDMyLjQ2ODc2QTcuOTk5NTQsNy45OTk1NCwwLDAsMSwxNjAsMjI0aC0uMDE1NjJhOS4xNzY3OCw5LjE3Njc4LDAsMCwxLTUuMjUtMS45ODQzOEwxMzEuMTQwNjIsMjAxLjM3NUMxNDIuNjg3NSwyNTAuOTUzMTIsMTg2LjkwNjI1LDI4OCwyNDAsMjg4czk3LjMxMjUtMzcuMDQ2ODgsMTA4Ljg3NS04Ni42MjVsLTIzLjU5Mzc1LDIwLjY0MDYyYTguMDI1MTYsOC4wMjUxNiwwLDAsMS01LjI2NTYzLDEuOTY4NzZIMzIwYTkuMTQ2NDEsOS4xNDY0MSwwLDAsMS02LjAxNTYyLTIuNzE4NzZBOS4yNjUwOCw5LjI2NTA4LDAsMCwxLDMxMiwyMTZhOS4wOTcsOS4wOTcsMCwwLDEsMi43MzQzOC02LjAxNTYybDM3LjEwOTM3LTMyLjQ2ODc2Yy4wMTU2My0uNTMxMjQuMTU2MjUtMSwuMTU2MjUtMS41MTU2MiwwLTExLjA0Njg4LTIuMDkzNzUtMjEuNTE1NjItNS4wNjI1MS0zMS41OTM3NWwtMjEuMjY1NjIsMjEuMjVhOC4wMDQ2Nyw4LjAwNDY3LDAsMCwxLTExLjMyODEyLTExLjMxMjVsMjYuNDIxODctMjYuNDA2MjVhMTExLjgxNTE3LDExMS44MTUxNywwLDAsMC00Ni4zNTkzNy00OS4yNjU2Miw2My4wMjMzNiw2My4wMjMzNiwwLDAsMS0xNC4wNjI1LDgyLjY0MDYyQTU1LjgzODQ2LDU1LjgzODQ2LDAsMCwxLDI1MS42MjUsMjU0LjczNDM4bC0xLjQyMTg4LTM0LjI4MTI2LDEyLjY3MTg4LDguNjI1YTMuOTY3LDMuOTY3LDAsMCwwLDIuMjUuNjg3NSwzLjk4MDU5LDMuOTgwNTksMCwwLDAsMy40Mzc0OS02LjAzMTI0bC04LjUzMTI0LTE0LjMxMjUsMTcuOTA2MjUtMy43MTg3NmE0LjAwNjQ3LDQuMDA2NDcsMCwwLDAsMC03Ljg0Mzc0bC0xNy45MDYyNS0zLjcxODc2LDguNTMxMjQtMTQuMzEyNWEzLjk4MDU5LDMuOTgwNTksMCwwLDAtMy40Mzc0OS02LjAzMTI0LDQuNzI2LDQuNzI2LDAsMCwwLTIuMjUuNjcxODdMMjQ4LjY4NzUsMTg0LjEyNSwyNDQsNzEuODI4MTJhNC4wMDM4Niw0LjAwMzg2LDAsMCwwLTgsMGwtNC42MjUsMTEwLjgxMjUtMTItOC4xNTYyNGE0LjAwMyw0LjAwMywwLDAsMC01LjY4NzUxLDUuMzU5MzdsOC41MzEyNiwxNC4zMTI1TDIwNC4zMTI1LDE5Ny44NzVhMy45OTY4NiwzLjk5Njg2LDAsMCwwLDAsNy44MjgxMmwxNy45MDYyNSwzLjczNDM4LTguNTMxMjYsMTQuMjk2ODhhNC43MjQ2OSw0LjcyNDY5LDAsMCwwLS41NjI0OSwyLjA0Njg3LDQuNTk1NDcsNC41OTU0NywwLDAsMCwxLjI1LDIuOTA2MjUsNC4wMTA1OSw0LjAxMDU5LDAsMCwwLDIuNzUsMS4wOTM3NSw0LjA5MDE2LDQuMDkwMTYsMCwwLDAsMi4yNS0uNjg3NWwxMC4zNTkzNy03LjA0Njg3TDIyOC4zNzUsMjU0Ljc2NTYyYTU1Ljg2NDE0LDU1Ljg2NDE0LDAsMCwxLTI4LjcxODc1LTkzLjQ1MzEyLDYzLjAxMTE5LDYzLjAxMTE5LDAsMCwxLTE0LjA0Njg4LTgyLjY1NjI1LDExMS45MzE1OCwxMTEuOTMxNTgsMCwwLDAtNDYuMzc1LDQ5LjI2NTYzbDI2LjQyMTg3LDI2LjQyMTg3YTcuOTk5MTcsNy45OTkxNywwLDAsMS0xMS4zMTI1LDExLjMxMjVsLTIxLjI2NTYzLTIxLjI2NTYzQzEzMC4wOTM3NSwxNTQuNDg0MzgsMTI4LDE2NC45NTMxMiwxMjguMDE1NjIsMTc2LjAxNTYyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLYWFiYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTQuMTIgODMuNTFMMzE4LjM2IDQuOTNhOTUuOTYyIDk1Ljk2MiAwIDAgMC02MC43MSAwTDIxLjg4IDgzLjUxQTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTMuODd2NDkuMDFsMjY1LjAyLTc5LjUxYzE1LjAzLTQuNSAzMC45Mi00LjUgNDUuOTggMGwyNjUgNzkuNTF2LTQ5LjAxYzAtMTMuNzctOC44MS0yNi0yMS44OC0zMC4zNnptLTI3OS45IDMwLjUyTDAgMTk2LjN2MjI4LjM4YzAgMTUgMTAuNDIgMjcuOTggMjUuMDYgMzEuMjRsMjQyLjEyIDUzLjhhOTUuOTM3IDk1LjkzNyAwIDAgMCA0MS42NSAwbDI0Mi4xMi01My44YzE0LjY0LTMuMjUgMjUuMDYtMTYuMjQgMjUuMDYtMzEuMjRWMTk2LjI5bC0yNzQuMi04Mi4yNmMtOS4wNC0yLjcyLTE4LjU5LTIuNzItMjcuNTkgMHpNMTI4IDIzMC4xMWMwIDMuNjEtMi40MSA2Ljc3LTUuODkgNy43MmwtODAgMjEuODJDMzcuMDIgMjYxLjAzIDMyIDI1Ny4yIDMyIDI1MS45M3YtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsODAtMjEuODJjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTQ0LTM5LjI4YzAgMy42MS0yLjQxIDYuNzctNS44OSA3LjcybC05NiAyNi4xOGMtNS4wOSAxLjM5LTEwLjExLTIuNDQtMTAuMTEtNy43MnYtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsOTYtMjYuMThjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTc2IDIyLjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDgwIDIxLjgyYzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTgwLTIxLjgyYTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6bS0xNDQtMzkuMjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDk2IDI2LjE4YzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTk2LTI2LjE4YTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMTc2LjAwMUM1MTIgMjczLjIwMyA0MzMuMjAyIDM1MiAzMzYgMzUyYy0xMS4yMiAwLTIyLjE5LTEuMDYyLTMyLjgyNy0zLjA2OWwtMjQuMDEyIDI3LjAxNEEyMy45OTkgMjMuOTk5IDAgMCAxIDI2MS4yMjMgMzg0SDIyNHY0MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTQwdjQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di03OC4wNTljMC02LjM2NSAyLjUyOS0xMi40NyA3LjAyOS0xNi45NzFsMTYxLjgwMi0xNjEuODAyQzE2My4xMDggMjEzLjgxNCAxNjAgMTk1LjI3MSAxNjAgMTc2IDE2MCA3OC43OTggMjM4Ljc5Ny4wMDEgMzM1Ljk5OSAwIDQzMy40ODgtLjAwMSA1MTIgNzguNTExIDUxMiAxNzYuMDAxek0zMzYgMTI4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhzNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDgtNDggMjEuNDktNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA0NDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTEyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDgwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDh6TTEyOCAxODB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJINzZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bS0zMzYgOTZ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTMzNiA5NnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTI4OCAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDE3MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIzMmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtoYW5kYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTUuODEgNjZjLTYuMzctMy41LTE0LjM3LTIuMzMtMTkuMzYgMy4wMmExNS45NzQgMTUuOTc0IDAgMCAwLTEuOTEgMTkuNTJjMTYuNDkgMjYuMTYgMjUuMiA1Ni4zOSAyNS4yIDg3LjQxLS4xOSA1My4yNS0yNi43NyAxMDIuNjktNzEuMjcgMTMyLjQxbC03Ni42MyA1My4zNXYtMjAuMWw0NC4wNS0zNi4wOWMzLjkyLTQuMiA1LTEwLjA5IDIuODEtMTUuMjhMMzEwLjg1IDI3M2MzMy44NC0xOS4yNiA1Ni45NC01NS4yNSA1Ni45NC05Ni45OSAwLTQwLjc5LTIyLjAyLTc2LjEzLTU0LjU5LTk1LjcxbDUuMjItMTEuNDRjMi4zNC01LjUzLjkzLTExLjgzLTMuNTctMTYuMDRMMjU1Ljg2IDBsLTU4Ljk5IDUyLjgxYy00LjUgNC4yMS01LjkgMTAuNTEtMy41NyAxNi4wNGw1LjIyIDExLjQ0Yy0zMi41NyAxOS41OC01NC41OSA1NC45My01NC41OSA5NS43MiAwIDQxLjc1IDIzLjA5IDc3LjczIDU2Ljk0IDk2Ljk5bC03Ljg1IDE3LjI0Yy0yLjE5IDUuMTgtMS4xIDExLjA3IDIuODEgMTUuMjhsNDQuMDUgMzYuMDl2MTkuOWwtNzYuNTktNTMuMzNDMTE5LjAyIDI3OC42MiA5Mi40NCAyMjkuMTkgOTIuMjYgMTc2YzAtMzEuMDggOC43MS02MS4zMSAyNS4yLTg3LjQ3IDMuODctNi4xNiAyLjQtMTMuNzctMi41OS0xOS4wOC01LTUuMzQtMTMuNjgtNi4yLTIwLjAyLTIuN0MxNi4zMiAxMDkuNi0yMi4zIDIwNS4zIDEzLjM2IDI5NS45OWM3LjA3IDE3Ljk5IDE3Ljg5IDM0LjM4IDMwLjQ2IDQ5LjA2bDU1Ljk3IDY1LjM2YzQuODcgNS42OSAxMy4wNCA3LjI0IDE5LjY1IDMuNzJsNzkuMzUtNDIuMjNMMjI4IDM5Mi4yM2wtNDcuMDggMzIuNzhjLTEuNjctLjM3LTMuMjMtMS4wMS01LjAxLTEuMDEtMTMuMjUgMC0yMy45OSAxMC43NC0yMy45OSAyNCAwIDEzLjI1IDEwLjc0IDI0IDIzLjk5IDI0IDEyLjEgMCAyMS42OS05LjExIDIzLjMzLTIwLjc2bDQwLjYzLTI4LjI4djI5Ljk1Yy05LjM5IDUuNTctMTUuOTkgMTUuMzgtMTUuOTkgMjcuMSAwIDE3LjY3IDE0LjMyIDMyIDMxLjk4IDMyczMxLjk4LTE0LjMzIDMxLjk4LTMyYzAtMTEuNzEtNi42MS0yMS41Mi0xNS45OS0yNy4xdi0zMC4xNWw0MC45MSAyOC40OEMzMTQuNDEgNDYyLjg5IDMyNCA0NzIgMzM2LjA5IDQ3MmMxMy4yNSAwIDIzLjk5LTEwLjc1IDIzLjk5LTI0IDAtMTMuMjYtMTAuNzQtMjQtMjMuOTktMjQtMS43OCAwLTMuMzQuNjQtNS4wMSAxLjAxTDI4NCAzOTIuMjNsMjkuMjEtMjAuMzQgNzkuMzUgNDIuMjNjNi42MSAzLjUyIDE0Ljc4IDEuOTcgMTkuNjUtMy43MWw1Mi41MS02MS4zMWMxOC44Ny0yMi4wMiAzNC00Ny41IDQxLjI1LTc1LjU5IDIxLjYyLTgzLjY2LTE2LjQ1LTE2Ny4yNy05MC4xNi0yMDcuNTF6bS05NS45OSAxMTBjMCAyMi4zLTExLjQ5IDQxLjkyLTI4LjgzIDUzLjM4bC01LjY1LTEyLjQxYy04Ljc1LTI0LjUyLTguNzUtNTEuMDQgMC03NS41Nmw3LjgzLTE3LjE4YzE2LjA3IDExLjY1IDI2LjY1IDMwLjQ1IDI2LjY1IDUxLjc3em0tMTI3LjkzIDBjMC0yMS4zMiAxMC41OC00MC4xMiAyNi42Ni01MS43Nmw3LjgzIDE3LjE4YzguNzUgMjQuNTIgOC43NSA1MS4wMyAwIDc1LjU2bC01LjY1IDEyLjQxYy0xNy4zNC0xMS40Ni0yOC44NC0zMS4wOS0yOC44NC01My4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lzc0JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptLTM5IDIxOS45bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjYgNC0xNC45LTQuNSAzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNSA4LjUtMTAuOSAxMi0xNS4xIDQuNXpNMzA0IDM5NmMwIDE5LjItMjguNyA0MS41LTcxLjUgNDQtOC41LjgtMTIuMS0xMS44LTMuNi0xNS40bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy02LTIuNS02LjEtMTIuMiAwLTE0LjhsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTguNi0zLjYtNC44LTE2LjUgMy42LTE1LjQgNDIuOCAyLjUgNzEuNSAyNC44IDcxLjUgNDQgMCAxMy0xMy40IDI3LjMtMzUuMiAzNkMyOTAuNiAzNjguNyAzMDQgMzgzIDMwNCAzOTZ6bTY1LTE2OC4xbC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjEgNy4zLTE1LjYgNC0xNC45LTQuNSAzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNSA4LjUtMTAuOSAxMi0xNS4xIDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lzc1dpbmtIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTA0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDEuMSA0MDIuNWMtOC0yMC44LTMxLjUtMzEuNS01My4xLTI1LjlsLTguNCAyLjItMi4zLTguNGMtNS45LTIxLjQtMjctMzYuNS00OS0zMy0yNS4yIDQtNDAuNiAyOC42LTM0IDUyLjZsMjIuOSA4Mi42YzEuNSA1LjMgNyA4LjUgMTIuNCA3LjFsODMtMjEuNWMyNC4xLTYuMyAzNy43LTMxLjggMjguNS01NS43em0tMTc3LjYtNGMtNS42LTIwLjMtMi4zLTQyIDktNTkuNyAyOS43LTQ2LjMgOTguNy00NS41IDEyNy44IDQuMyA2LjQuMSAxMi42IDEuNCAxOC42IDIuOSAxMC45LTI3LjkgMTcuMS01OC4yIDE3LjEtOTBDNDk2IDExOSAzODUgOCAyNDggOFMwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDhjMzUuNCAwIDY4LjktNy41IDk5LjQtMjAuOS0uMy0uNy0yMy45LTg0LjYtMjMuOS04NC42ek0xNjggMjQwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTIwIDE1NmMwIDE5LjItMjguNyA0MS41LTcxLjUgNDQtOC41LjgtMTIuMS0xMS44LTMuNi0xNS40bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy02LTIuNS01LjctMTIuMyAwLTE0LjhsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTguOC0zLjctNC42LTE2LjYgMy42LTE1LjQgNDIuOCAyLjUgNzEuNSAyNC44IDcxLjUgNDQgMCAxMy0xMy40IDI3LjMtMzUuMiAzNkMyNzQuNiAzNjguNyAyODggMzgzIDI4OCAzOTZ6bTE2LTE3OWMtOC4zIDcuNC0yMS42LjQtMTkuOC0xMC44IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzQwMCAxODEgNDA0IDIwNi4yYzEuNyAxMS4xLTExLjMgMTguMy0xOS44IDEwLjhsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwzMDQgMjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS04MCAyMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMzYgMTU2YzAgMTkuMi0yOC43IDQxLjUtNzEuNSA0NC04LjUuOC0xMi4xLTExLjgtMy42LTE1LjRsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTYtMi41LTYuMS0xMi4yIDAtMTQuOGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtOC42LTMuNi00LjgtMTYuNSAzLjYtMTUuNCA0Mi44IDIuNSA3MS41IDI0LjggNzEuNSA0NCAwIDEzLTEzLjQgMjcuMy0zNS4yIDM2QzI5MC42IDM2OC43IDMwNCAzODMgMzA0IDM5NnptMjQtMTU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2l3aUJpcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjgxIDIxNy45OEM1NzIuNjQgMTU3LjQxIDUxOC4yOCAxMTIgNDU3LjYzIDExMmgtOS4zN2MtNTIuODIgMC0xMDQuMjUtMTYuMjUtMTQ3Ljc0LTQ2LjI0LTQxLjk5LTI4Ljk2LTk2LjA0LTQxLjYyLTE1My4yMS0yOC43QzEyOS4zIDQxLjEyLS4wOCA3OC4yNCAwIDIyNGMuMDQgNzAuOTUgMzguNjggMTMyLjggOTUuOTkgMTY2LjAxVjQ2NGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNTQuMjZjMTUuMzYgMy45NiAzMS40IDYuMjYgNDggNi4yNiA1LjQ0IDAgMTAuNjgtLjczIDE2LTEuMThWNDY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di01OS40M2MxNC4yNC01LjA2IDI3Ljg4LTExLjM5IDQwLjM0LTE5LjUxQzM0Mi4wNyAzNTUuMjUgMzkzLjg2IDMzNiA0NDguNDYgMzM2YzI1LjQ4IDAgMTYuMDEtLjMxIDIzLjA1LS43OGw3NC40MSAxMzYuNDRjMi44NiA1LjIzIDguMyA4LjM0IDE0LjA1IDguMzQgMS4zMSAwIDIuNjQtLjE2IDMuOTUtLjUgNy4wOS0xLjggMTIuMDUtOC4xOSAxMi4wNS0xNS41IDAgMCAuMTQtMjQwLjI0LS4xNi0yNDYuMDJ6TTQ2My45NyAyNDhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em04MCAxNTMuMjVsLTM5Ljg2LTczLjA4YzE1LjEyLTUuODMgMjguNzMtMTQuNiAzOS44Ni0yNS45OHY5OS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjYyIDkyLjExTDI2Ny4yNCAyLjA0YTMxLjk1OCAzMS45NTggMCAwIDAtMjIuNDcgMEwxMC4zOCA5Mi4xMUExNi4wMDEgMTYuMDAxIDAgMCAwIDAgMTA3LjA5VjE0NGMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTM2LjkxYzAtNi42Ny00LjE0LTEyLjY0LTEwLjM4LTE0Ljk4ek02NCAxOTJ2MTYwSDQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGg0NDh2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNlYxOTJoLTY0djE2MGgtOTZWMTkyaC02NHYxNjBoLTk2VjE5Mkg2NHptNDMyIDI1NkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDgwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZ3VhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyLjEgMjM2LjJjLTMuNS0xMi4xLTcuOC0zMy4yLTcuOC0zMy4yaC0uNXMtNC4zIDIxLjEtNy44IDMzLjJsLTExLjEgMzcuNUgxNjN6TTYxNiA5NkgzMzZ2MzIwaDI4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjR6bS0yNCAxMjBjMCA2LjYtNS40IDEyLTEyIDEyaC0xMS40Yy02LjkgMjMuNi0yMS43IDQ3LjQtNDIuNyA2OS45IDguNCA2LjQgMTcuMSAxMi41IDI2LjEgMTggNS41IDMuNCA3LjMgMTAuNSA0LjEgMTYuMmwtNy45IDEzLjljLTMuNCA1LjktMTAuOSA3LjgtMTYuNyA0LjMtMTIuNi03LjgtMjQuNS0xNi4xLTM1LjQtMjQuOS0xMC45IDguNy0yMi43IDE3LjEtMzUuNCAyNC45LTUuOCAzLjUtMTMuMyAxLjYtMTYuNy00LjNsLTcuOS0xMy45Yy0zLjItNS42LTEuNC0xMi44IDQuMi0xNi4yIDkuMy01LjcgMTgtMTEuNyAyNi4xLTE4LTcuOS04LjQtMTQuOS0xNy0yMS0yNS43LTQtNS43LTIuMi0xMy42IDMuNy0xNy4xbDYuNS0zLjkgNy4zLTQuM2M1LjQtMy4yIDEyLjQtMS43IDE2IDMuNCA1IDcgMTAuOCAxNCAxNy40IDIwLjkgMTMuNS0xNC4yIDIzLjgtMjguOSAzMC00My4ySDQxMmMtNi42IDAtMTItNS40LTEyLTEydi0xNmMwLTYuNiA1LjQtMTIgMTItMTJoNjR2LTE2YzAtNi42IDUuNC0xMiAxMi0xMmgxNmM2LjYgMCAxMiA1LjQgMTIgMTJ2MTZoNjRjNi42IDAgMTIgNS40IDEyIDEyek0wIDEyMHYyNzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjgwVjk2SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptNTguOSAyMTYuMUwxMTYuNCAxNjdjMS43LTQuOSA2LjItOC4xIDExLjQtOC4xaDMyLjVjNS4xIDAgOS43IDMuMyAxMS40IDguMWw1Ny41IDE2OS4xYzIuNiA3LjgtMy4xIDE1LjktMTEuNCAxNS45aC0yMi45YTEyIDEyIDAgMCAxLTExLjUtOC42bC05LjQtMzEuOWgtNjAuMmwtOS4xIDMxLjhjLTEuNSA1LjEtNi4yIDguNy0xMS41IDguN0g3MC4zYy04LjIgMC0xNC04LjEtMTEuNC0xNS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3BDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS4wMyAyNjEuNjVjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwxMS4zMS0xMS4zMWM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDI1My4yNSAxOTJsMzUuNzEtMzUuNzJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMTEuMzEtMTEuMzFjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTU4LjM0IDU4LjM0Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDU4LjM1IDU4LjM0em05Ni4wMS0xMS4zbDExLjMxIDExLjMxYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsNTguMzQtNTguMzRjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtNTguMzQtNTguMzRjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTExLjMxIDExLjMxYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzTDM4Ni43NSAxOTJsLTM1LjcxIDM1LjcyYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzek02MjQgNDE2SDM4MS41NGMtLjc0IDE5LjgxLTE0LjcxIDMyLTMyLjc0IDMySDI4OGMtMTguNjkgMC0zMy4wMi0xNy40Ny0zMi43Ny0zMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgMzUuMiAyOC44IDY0IDY0IDY0aDUxMmMzNS4yIDAgNjQtMjguOCA2NC02NHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2ek01NzYgNDhjMC0yNi40LTIxLjYtNDgtNDgtNDhIMTEyQzg1LjYgMCA2NCAyMS42IDY0IDQ4djMzNmg1MTJWNDh6bS02NCAyNzJIMTI4VjY0aDM4NHYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcEhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiwyODhIMjA4YTE2LDE2LDAsMCwxLTE2LTE2VjIwOGExNiwxNiwwLDAsMSwxNi0xNmg2NGExNiwxNiwwLDAsMSwxNiwxNnYzNy4xMkMyOTkuMTEsMjMyLjI0LDMxNSwyMjQsMzMyLjgsMjI0SDQ2OS43NGw2LjY1LTcuNTNBMTYuNTEsMTYuNTEsMCwwLDAsNDgwLDIwN2ExNi4zMSwxNi4zMSwwLDAsMC00Ljc1LTEwLjYxTDQxNiwxNDRWNDhhMTYsMTYsMCwwLDAtMTYtMTZIMzY4YTE2LDE2LDAsMCwwLTE2LDE2Vjg3LjNMMjYzLjUsOC45MkMyNTgsNCwyNDcuNDUsMCwyNDAuMDUsMHMtMTcuOTMsNC0yMy40Nyw4LjkyTDQuNzgsMTk2LjQyQTE2LjE1LDE2LjE1LDAsMCwwLDAsMjA3YTE2LjQsMTYuNCwwLDAsMCwzLjU1LDkuMzlMMjIuMzQsMjM3LjdBMTYuMjIsMTYuMjIsMCwwLDAsMzMsMjQyLjQ4LDE2LjUxLDE2LjUxLDAsMCwwLDQyLjM0LDIzOUw2NCwyMTkuODhWMzg0YTMyLDMyLDAsMCwwLDMyLDMySDI3MlpNNjI5LjMzLDQ0OEg1OTJWMjg4YzAtMTcuNjctMTIuODktMzItMjguOC0zMkgzMzIuOGMtMTUuOTEsMC0yOC44LDE0LjMzLTI4LjgsMzJWNDQ4SDI2Ni42N0ExMC42NywxMC42NywwLDAsMCwyNTYsNDU4LjY3djEwLjY2QTQyLjgyLDQyLjgyLDAsMCwwLDI5OC42LDUxMkg1OTcuNEE0Mi44Miw0Mi44MiwwLDAsMCw2NDAsNDY5LjMzVjQ1OC42N0ExMC42NywxMC42NywwLDAsMCw2MjkuMzMsNDQ4Wk01NDQsNDQ4SDM1MlYzMDRINTQ0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3BNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAyMjRoNTZ2NTZhOCA4IDAgMCAwIDggOGg0OGE4IDggMCAwIDAgOC04di01Nmg1NmE4IDggMCAwIDAgOC04di00OGE4IDggMCAwIDAtOC04aC01NnYtNTZhOCA4IDAgMCAwLTgtOGgtNDhhOCA4IDAgMCAwLTggOHY1NmgtNTZhOCA4IDAgMCAwLTggOHY0OGE4IDggMCAwIDAgOCA4ek01NzYgNDhhNDguMTQgNDguMTQgMCAwIDAtNDgtNDhIMTEyYTQ4LjE0IDQ4LjE0IDAgMCAwLTQ4IDQ4djMzNmg1MTJ6bS02NCAyNzJIMTI4VjY0aDM4NHptMTEyIDk2SDM4MS41NGMtLjc0IDE5LjgxLTE0LjcxIDMyLTMyLjc0IDMySDI4OGMtMTguNjkgMC0zMy0xNy40Ny0zMi43Ny0zMkgxNmExNiAxNiAwIDAgMC0xNiAxNnYxNmE2NC4xOSA2NC4xOSAwIDAgMCA2NCA2NGg1MTJhNjQuMTkgNjQuMTkgMCAwIDAgNjQtNjR2LTE2YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQxNkgzODEuNTRjLS43NCAxOS44MS0xNC43MSAzMi0zMi43NCAzMkgyODhjLTE4LjY5IDAtMzMuMDItMTcuNDctMzIuNzctMzJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDM1LjIgMjguOCA2NCA2NCA2NGg1MTJjMzUuMiAwIDY0LTI4LjggNjQtNjR2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnpNNTc2IDQ4YzAtMjYuNC0yMS42LTQ4LTQ4LTQ4SDExMkM4NS42IDAgNjQgMjEuNiA2NCA0OHYzMzZoNTEyVjQ4em0tNjQgMjcySDEyOFY2NGgzODR2MjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXVnaEJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMjQgMTk5LjRjMy4zLTQyLjEgMzIuMi03MS40IDU2LTcxLjRzNTIuNyAyOS4zIDU2IDcxLjRjLjcgOC42LTEwLjggMTEuOS0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS44IDQuMS0xNS4xLTQuNXptLTE2MCAwYzMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMyA3LjQtMTUuOCA0LTE1LjEtNC41ek0zOTguOSAzMDZDMzkwIDM3NyAzMjkuNCA0MzIgMjU2IDQzMmgtMTZjLTczLjQgMC0xMzQtNTUtMTQyLjktMTI2LTEuMi05LjUgNi4zLTE4IDE1LjktMThoMjcwYzkuNiAwIDE3LjEgOC40IDE1LjkgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhdWdoU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTMzLjggMTYxLjdsODAtNDhjMTEuNi02LjkgMjQgNy43IDE1LjQgMThMMzQzLjYgMTgwbDMzLjYgNDAuM2M4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy43LTQuNy03LjctMTUuOSAwLTIwLjZ6bS0xNjMtMzBjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy44IDQuNyA3LjggMTUuOSAwIDIwLjZsLTgwIDQ4Yy0xMS41IDYuOC0yNC03LjYtMTUuNC0xOGwzMy42LTQwLjMtMzMuNi00MC4zek0zOTguOSAzMDZDMzkwIDM3NyAzMjkuNCA0MzIgMjU2IDQzMmgtMTZjLTczLjQgMC0xMzQtNTUtMTQyLjktMTI2LTEuMi05LjUgNi4zLTE4IDE1LjktMThoMjcwYzkuNiAwIDE3LjEgOC40IDE1LjkgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhdWdoV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0yMC4xIDE5OC4xYzQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xczU1LjkgMTYuOSA1OS45IDQyLjFjMS43IDExLjEtMTEuNCAxOC4zLTE5LjggMTAuOGwtOS41LTguNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDI4OCAyMTdjLTguNCA3LjQtMjEuNi4zLTE5LjktMTAuOXpNMTY4IDE2MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bTIzMC45IDE0NkMzOTAgMzc3IDMyOS40IDQzMiAyNTYgNDMyaC0xNmMtNzMuNCAwLTEzNC01NS0xNDIuOS0xMjYtMS4yLTkuNSA2LjMtMTggMTUuOS0xOGgyNzBjOS42IDAgMTcuMSA4LjQgMTUuOSAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGF1Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptODggMjcyaC0xNmMtNzMuNCAwLTEzNC01NS0xNDIuOS0xMjYtMS4yLTkuNSA2LjMtMTggMTUuOS0xOGgyNzBjOS42IDAgMTcuMSA4LjQgMTUuOSAxOC04LjkgNzEtNjkuNSAxMjYtMTQyLjkgMTI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXllckdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjQxIDE0OC4wMmwyMzIuOTQgMTA1LjY3YzYuOCAzLjA5IDE0LjQ5IDMuMDkgMjEuMjkgMGwyMzIuOTQtMTA1LjY3YzE2LjU1LTcuNTEgMTYuNTUtMzIuNTIgMC00MC4wM0wyNjYuNjUgMi4zMWEyNS42MDcgMjUuNjA3IDAgMCAwLTIxLjI5IDBMMTIuNDEgMTA3Ljk4Yy0xNi41NSA3LjUxLTE2LjU1IDMyLjUzIDAgNDAuMDR6bTQ4Ny4xOCA4OC4yOGwtNTguMDktMjYuMzMtMTYxLjY0IDczLjI3Yy03LjU2IDMuNDMtMTUuNTkgNS4xNy0yMy44NiA1LjE3cy0xNi4yOS0xLjc0LTIzLjg2LTUuMTdMNzAuNTEgMjA5Ljk3bC01OC4xIDI2LjMzYy0xNi41NSA3LjUtMTYuNTUgMzIuNSAwIDQwbDIzMi45NCAxMDUuNTljNi44IDMuMDggMTQuNDkgMy4wOCAyMS4yOSAwTDQ5OS41OSAyNzYuM2MxNi41NS03LjUgMTYuNTUtMzIuNSAwLTQwem0wIDEyNy44bC01Ny44Ny0yNi4yMy0xNjEuODYgNzMuMzdjLTcuNTYgMy40My0xNS41OSA1LjE3LTIzLjg2IDUuMTdzLTE2LjI5LTEuNzQtMjMuODYtNS4xN0w3MC4yOSAzMzcuODcgMTIuNDEgMzY0LjFjLTE2LjU1IDcuNS0xNi41NSAzMi41IDAgNDBsMjMyLjk0IDEwNS41OWM2LjggMy4wOCAxNC40OSAzLjA4IDIxLjI5IDBMNDk5LjU5IDQwNC4xYzE2LjU1LTcuNSAxNi41NS0zMi41IDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlYWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ2LjIgOS43Yy01LjYtMTIuNS0yMS42LTEzLTI4LjMtMS4yQzQ4Ni45IDYyLjQgNDMxLjQgOTYgMzY4IDk2aC04MEMxODIgOTYgOTYgMTgyIDk2IDI4OGMwIDcgLjggMTMuNyAxLjUgMjAuNUMxNjEuMyAyNjIuOCAyNTMuNCAyMjQgMzg0IDIyNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkMxMzIuNiAyNTYgMjYgNDEwLjEgMi40IDQ2OGMtNi42IDE2LjMgMS4yIDM0LjkgMTcuNSA0MS42IDE2LjQgNi44IDM1LTEuMSA0MS44LTE3LjMgMS41LTMuNiAyMC45LTQ3LjkgNzEuOS05MC42IDMyLjQgNDMuOSA5NCA4NS44IDE3NC45IDc3LjJDNDY1LjUgNDY3LjUgNTc2IDMyNi43IDU3NiAxNTQuM2MwLTUwLjItMTAuOC0xMDIuMi0yOS44LTE0NC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZW1vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODkuMDM4IDIyLjk2M0M0NjUuOTQ0LS4xMyA0MzQuNjQ4LTUuOTMgNDEzLjk0NyA2LjEyOWMtNTguOTA2IDM0LjMxMi0xODEuMjUtNTMuMDc3LTMyMS4wNzMgODYuNzQ2UzQwLjQ0MSAzNTUuMDQxIDYuMTI5IDQxMy45NDVjLTEyLjA1OSAyMC43MDItNi4yNiA1MS45OTkgMTYuODMzIDc1LjA5MyAyMy4wOTUgMjMuMDk1IDU0LjM5MiAyOC44OTEgNzUuMDk1IDE2LjgzMiA1OC45MDEtMzQuMzEgMTgxLjI0NiA1My4wNzkgMzIxLjA2OC04Ni43NDNTNDcxLjU2IDE1Ni45NiA1MDUuODcxIDk4LjA1NmMxMi4wNTktMjAuNzAyIDYuMjYxLTUxLjk5OS0xNi44MzMtNzUuMDkzek0yNDMuODgxIDk1LjUyMmMtNTguMTg5IDE0LjU0Ny0xMzMuODA4IDkwLjE1NS0xNDguMzU4IDE0OC4zNTgtMS44MTcgNy4yNy04LjM0MiAxMi4xMjQtMTUuNTExIDEyLjEyNC0xLjI4NCAwLTIuNTktLjE1Ni0zLjg5My0uNDgxLTguNTcyLTIuMTQ0LTEzLjc4NC0xMC44My0xMS42NDItMTkuNDAzQzgxLjkwMSAxNjYuNDI3IDE2Ni4zMTYgODEuOTMgMjM2LjExOSA2NC40NzhjOC41NzUtMi4xNDMgMTcuMjYxIDMuMDY5IDE5LjQwMyAxMS42NDJzLTMuMDY5IDE3LjI1OS0xMS42NDEgMTkuNDAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzVGhhbkVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0Ljk4IDIxNC4ybDMwMS40MSAxMTkuODdjMTguMzkgNi4wMyAzOC43MS0yLjU0IDQ1LjM4LTE5LjE1bDEyLjA5LTMwLjA4YzYuNjgtMTYuNjEtMi44Mi0zNC45Ny0yMS4yMS00MWwtMTc1LjQ0LTY4LjA1IDE3NS41Ni02OC4wOWMxOC4yOS02IDI3Ljc0LTI0LjI3IDIxLjEtNDAuNzlsLTEyLjAzLTI5LjkyYy02LjY0LTE2LjUzLTI2Ljg2LTI1LjA2LTQ1LjE1LTE5LjA2TDU0Ljk4IDEzNy44OUM0MS4yMSAxNDIuNDEgMzIgMTU0LjUgMzIgMTY4LjA3djE1Ljk2YzAgMTMuNTYgOS4yMSAyNS42NSAyMi45OCAzMC4xN3pNNDI0IDQwMEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwMGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzVGhhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjUuNDYgMzU3Ljc0TDE0Ny4wNCAyNTUuODlsMjE4LjQ3LTEwMS44OGMxNi4wMi03LjQ3IDIyLjk1LTI2LjUxIDE1LjQ4LTQyLjUzbC0xMy41Mi0yOUMzNjAgNjYuNDYgMzQwLjk2IDU5LjUzIDMyNC45NCA2N0wxOC40OCAyMDkuOTFhMzIuMDE0IDMyLjAxNCAwIDAgMC0xOC40OCAyOXYzNC4yNGMwIDEyLjQ0IDcuMjEgMjMuNzUgMTguNDggMjlsMzA2LjMxIDE0Mi44M2MxNi4wNiA3LjQ5IDM1LjE1LjU0IDQyLjY0LTE1LjUybDEzLjU2LTI5LjA4YzcuNDktMTYuMDYuNTQtMzUuMTUtMTUuNTMtNDIuNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxldmVsRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNTUzIDM5Mi4zMzFMMjA5LjU4NyA1MDQuMzM0Yy05LjQ4NSAxMC4yMTQtMjUuNjc2IDEwLjIyOS0zNS4xNzQgMEw3MC40MzggMzkyLjMzMUM1Ni4yMzIgMzc3LjAzMSA2Ny4wNjIgMzUyIDg4LjAyNSAzNTJIMTUyVjgwSDY4LjAyNGExMS45OTYgMTEuOTk2IDAgMCAxLTguNDg1LTMuNTE1bC01Ni01NkMtNC4wMjEgMTIuOTI2IDEuMzMzIDAgMTIuMDI0IDBIMjA4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYzMjhoNjMuOTY2YzIwLjg3OCAwIDMxLjg1MSAyNC45NjkgMTcuNTg3IDQwLjMzMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGV2ZWxVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNTUzIDExOS42NjlMMjA5LjU4NyA3LjY2NmMtOS40ODUtMTAuMjE0LTI1LjY3Ni0xMC4yMjktMzUuMTc0IDBMNzAuNDM4IDExOS42NjlDNTYuMjMyIDEzNC45NjkgNjcuMDYyIDE2MCA4OC4wMjUgMTYwSDE1MnYyNzJINjguMDI0YTExLjk5NiAxMS45OTYgMCAwIDAtOC40ODUgMy41MTVsLTU2IDU2Qy00LjAyMSA0OTkuMDc0IDEuMzMzIDUxMiAxMi4wMjQgNTEySDIwOGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwaDYzLjk2NmMyMC44NzggMCAzMS44NTEtMjQuOTY5IDE3LjU4Ny00MC4zMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpZmVSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMTczLjY5NiAxMTkuNTU5bC02My4zOTkgNjMuMzk5Yy0xMC45ODctMTguNTU5LTI2LjY3LTM0LjI1Mi00NS4yNTUtNDUuMjU1bDYzLjM5OS02My4zOTlhMjE4LjM5NiAyMTguMzk2IDAgMCAxIDQ1LjI1NSA0NS4yNTV6TTI1NiAzNTJjLTUzLjAxOSAwLTk2LTQyLjk4MS05Ni05NnM0Mi45ODEtOTYgOTYtOTYgOTYgNDIuOTgxIDk2IDk2LTQyLjk4MSA5Ni05NiA5NnpNMTI3LjU1OSA4Mi4zMDRsNjMuMzk5IDYzLjM5OWMtMTguNTU5IDEwLjk4Ny0zNC4yNTIgMjYuNjctNDUuMjU1IDQ1LjI1NWwtNjMuMzk5LTYzLjM5OWEyMTguMzcyIDIxOC4zNzIgMCAwIDEgNDUuMjU1LTQ1LjI1NXpNODIuMzA0IDM4NC40NDFsNjMuMzk5LTYzLjM5OWMxMC45ODcgMTguNTU5IDI2LjY3IDM0LjI1MiA0NS4yNTUgNDUuMjU1bC02My4zOTkgNjMuMzk5YTIxOC4zOTYgMjE4LjM5NiAwIDAgMS00NS4yNTUtNDUuMjU1em0zMDIuMTM3IDQ1LjI1NWwtNjMuMzk5LTYzLjM5OWMxOC41NTktMTAuOTg3IDM0LjI1Mi0yNi42NyA0NS4yNTUtNDUuMjU1bDYzLjM5OSA2My4zOTlhMjE4LjQwMyAyMTguNDAzIDAgMCAxLTQ1LjI1NSA0NS4yNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpZ2h0YnVsYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzUyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05Ni4wNiA0NTQuMzVjLjAxIDYuMjkgMS44NyAxMi40NSA1LjM2IDE3LjY5bDE3LjA5IDI1LjY5YTMxLjk5IDMxLjk5IDAgMCAwIDI2LjY0IDE0LjI4aDYxLjcxYTMxLjk5IDMxLjk5IDAgMCAwIDI2LjY0LTE0LjI4bDE3LjA5LTI1LjY5YTMxLjk4OSAzMS45ODkgMCAwIDAgNS4zNi0xNy42OWwuMDQtMzguMzVIOTYuMDFsLjA1IDM4LjM1ek0wIDE3NmMwIDQ0LjM3IDE2LjQ1IDg0Ljg1IDQzLjU2IDExNS43OCAxNi41MiAxOC44NSA0Mi4zNiA1OC4yMyA1Mi4yMSA5MS40NS4wNC4yNi4wNy41Mi4xMS43OGgxNjAuMjRjLjA0LS4yNi4wNy0uNTEuMTEtLjc4IDkuODUtMzMuMjIgMzUuNjktNzIuNiA1Mi4yMS05MS40NUMzMzUuNTUgMjYwLjg1IDM1MiAyMjAuMzcgMzUyIDE3NiAzNTIgNzguNjEgMjcyLjkxLS4zIDE3NS40NSAwIDczLjQ0LjMxIDAgODIuOTcgMCAxNzZ6bTE3Ni04MGMtNDQuMTEgMC04MCAzNS44OS04MCA4MCAwIDguODQtNy4xNiAxNi0xNiAxNnMtMTYtNy4xNi0xNi0xNmMwLTYxLjc2IDUwLjI0LTExMiAxMTItMTEyIDguODQgMCAxNiA3LjE2IDE2IDE2cy03LjE2IDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi42MTIgMTg1LjM5MWM1OS43NDcgNTkuODA5IDU4LjkyNyAxNTUuNjk4LjM2IDIxNC41OS0uMTEuMTItLjI0LjI1LS4zNi4zN2wtNjcuMiA2Ny4yYy01OS4yNyA1OS4yNy0xNTUuNjk5IDU5LjI2Mi0yMTQuOTYgMC01OS4yNy01OS4yNi01OS4yNy0xNTUuNyAwLTIxNC45NmwzNy4xMDYtMzcuMTA2YzkuODQtOS44NCAyNi43ODYtMy4zIDI3LjI5NCAxMC42MDYuNjQ4IDE3LjcyMiAzLjgyNiAzNS41MjcgOS42OSA1Mi43MjEgMS45ODYgNS44MjIuNTY3IDEyLjI2Mi0zLjc4MyAxNi42MTJsLTEzLjA4NyAxMy4wODdjLTI4LjAyNiAyOC4wMjYtMjguOTA1IDczLjY2LTEuMTU1IDEwMS45NiAyOC4wMjQgMjguNTc5IDc0LjA4NiAyOC43NDkgMTAyLjMyNS41MWw2Ny4yLTY3LjE5YzI4LjE5MS0yOC4xOTEgMjguMDczLTczLjc1NyAwLTEwMS44My0zLjcwMS0zLjY5NC03LjQyOS02LjU2NC0xMC4zNDEtOC41NjlhMTYuMDM3IDE2LjAzNyAwIDAgMS02Ljk0Ny0xMi42MDZjLS4zOTYtMTAuNTY3IDMuMzQ4LTIxLjQ1NiAxMS42OTgtMjkuODA2bDIxLjA1NC0yMS4wNTVjNS41MjEtNS41MjEgMTQuMTgyLTYuMTk5IDIwLjU4NC0xLjczMWExNTIuNDgyIDE1Mi40ODIgMCAwIDEgMjAuNTIyIDE3LjE5N3pNNDY3LjU0NyA0NC40NDljLTU5LjI2MS01OS4yNjItMTU1LjY5LTU5LjI3LTIxNC45NiAwbC02Ny4yIDY3LjJjLS4xMi4xMi0uMjUuMjUtLjM2LjM3LTU4LjU2NiA1OC44OTItNTkuMzg3IDE1NC43ODEuMzYgMjE0LjU5YTE1Mi40NTQgMTUyLjQ1NCAwIDAgMCAyMC41MjEgMTcuMTk2YzYuNDAyIDQuNDY4IDE1LjA2NCAzLjc4OSAyMC41ODQtMS43MzFsMjEuMDU0LTIxLjA1NWM4LjM1LTguMzUgMTIuMDk0LTE5LjIzOSAxMS42OTgtMjkuODA2YTE2LjAzNyAxNi4wMzcgMCAwIDAtNi45NDctMTIuNjA2Yy0yLjkxMi0yLjAwNS02LjY0LTQuODc1LTEwLjM0MS04LjU2OS0yOC4wNzMtMjguMDczLTI4LjE5MS03My42MzkgMC0xMDEuODNsNjcuMi02Ny4xOWMyOC4yMzktMjguMjM5IDc0LjMtMjguMDY5IDEwMi4zMjUuNTEgMjcuNzUgMjguMyAyNi44NzIgNzMuOTM0LTEuMTU1IDEwMS45NmwtMTMuMDg3IDEzLjA4N2MtNC4zNSA0LjM1LTUuNzY5IDEwLjc5LTMuNzgzIDE2LjYxMiA1Ljg2NCAxNy4xOTQgOS4wNDIgMzQuOTk5IDkuNjkgNTIuNzIxLjUwOSAxMy45MDYgMTcuNDU0IDIwLjQ0NiAyNy4yOTQgMTAuNjA2bDM3LjEwNi0zNy4xMDZjNTkuMjcxLTU5LjI1OSA1OS4yNzEtMTU1LjY5OS4wMDEtMjE0Ljk1OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlyYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcxLjk5NCAyNTZoLTQ4LjAxOUMzMTcuNjQgMjU2IDMxMiAyNjAuOTEyIDMxMiAyNjcuMjQ2IDMxMiAzNjggMjMwLjE3OSA0MTYgMTQ0IDQxNlYyNTYuNzgxbDEzNC42MDMtMjkuOTEyQTEyIDEyIDAgMCAwIDI4OCAyMTUuMTU1di00MC45NzZjMC03LjY3Ny03LjEwOS0xMy4zOC0xNC42MDMtMTEuNzE0TDE0NCAxOTEuMjE5VjE2MC43OGwxMzQuNjAzLTI5LjkxMkExMiAxMiAwIDAgMCAyODggMTE5LjE1NFY3OC4xNzljMC03LjY3Ny03LjEwOS0xMy4zOC0xNC42MDMtMTEuNzE0TDE0NCA5NS4yMTlWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY2OC45OTdMOS4zOTcgMTI1LjEzMUExMiAxMiAwIDAgMCAwIDEzNi44NDV2NDAuOTc2YzAgNy42NzcgNy4xMDkgMTMuMzggMTQuNjAzIDExLjcxNEw2NCAxNzguNTU4djMwLjQzOUw5LjM5NyAyMjEuMTMxQTEyIDEyIDAgMCAwIDAgMjMyLjg0NXY0MC45NzZjMCA3LjY3NyA3LjEwOSAxMy4zOCAxNC42MDMgMTEuNzE0TDY0IDI3NC41NThWNDY4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzkuNTgzYzEzNC4wOTEgMCAyMjMuMjU1LTc3LjgzNCAyMjguNDA4LTIxMS41OTIuMjYxLTYuNzgyLTUuMjExLTEyLjQwOC0xMS45OTctMTIuNDA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTI4IDEyMGMtMjIuMDkxIDAtNDAgMTcuOTA5LTQwIDQwczE3LjkwOSA0MCA0MCA0MCA0MC0xNy45MDkgNDAtNDAtMTcuOTA5LTQwLTQwLTQwem0wIDk2Yy0yMi4wOTEgMC00MCAxNy45MDktNDAgNDBzMTcuOTA5IDQwIDQwIDQwIDQwLTE3LjkwOSA0MC00MC0xNy45MDktNDAtNDAtNDB6bTAgOTZjLTIyLjA5MSAwLTQwIDE3LjkwOS00MCA0MHMxNy45MDkgNDAgNDAgNDAgNDAtMTcuOTA5IDQwLTQwLTE3LjkwOS00MC00MC00MHptMjg4LTEzNnYtMzJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgyMDRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NnYtMzJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgyMDRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NnYtMzJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgyMDRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdE9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjc3IDQwMWwxNy41LTIwLjE1YTE5LjkyIDE5LjkyIDAgMCAwIDUuMDctMTQuMTl2LTMuMzFDODQuMzQgMzU2IDgwLjUgMzUyIDczIDM1MkgxNmE4IDggMCAwIDAtOCA4djE2YTggOCAwIDAgMCA4IDhoMjIuODNhMTU3LjQxIDE1Ny40MSAwIDAgMC0xMSAxMi4zMWwtNS42MSA3Yy00IDUuMDctNS4yNSAxMC4xMy0yLjggMTQuODhsMS4wNSAxLjkzYzMgNS43NiA2LjI5IDcuODggMTIuMjUgNy44OGg0LjczYzEwLjMzIDAgMTUuOTQgMi40NCAxNS45NCA5LjA5IDAgNC43Mi00LjIgOC4yMi0xNC4zNiA4LjIyYTQxLjU0IDQxLjU0IDAgMCAxLTE1LjQ3LTMuMTJjLTYuNDktMy44OC0xMS43NC0zLjUtMTUuNiAzLjEybC01LjU5IDkuMzFjLTMuNzIgNi4xMy0zLjE5IDExLjcyIDIuNjMgMTUuOTQgNy43MSA0LjY5IDIwLjM4IDkuNDQgMzcgOS40NCAzNC4xNiAwIDQ4LjUtMjIuNzUgNDguNS00NC4xMi0uMDMtMTQuMzgtOS4xMi0yOS43Ni0yOC43My0zNC44OHpNNDk2IDIyNEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xNjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAzMjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTE2IDE2MGg2NGE4IDggMCAwIDAgOC04di0xNmE4IDggMCAwIDAtOC04SDY0VjQwYTggOCAwIDAgMC04LThIMzJhOCA4IDAgMCAwLTcuMTQgNC40MmwtOCAxNkE4IDggMCAwIDAgMjQgNjRoOHY2NEgxNmE4IDggMCAwIDAtOCA4djE2YTggOCAwIDAgMCA4IDh6bS0zLjkxIDE2MEg4MGE4IDggMCAwIDAgOC04di0xNmE4IDggMCAwIDAtOC04SDQxLjMyYzMuMjktMTAuMjkgNDguMzQtMTguNjggNDguMzQtNTYuNDQgMC0yOS4wNi0yNS0zOS41Ni00NC40Ny0zOS41Ni0yMS4zNiAwLTMzLjggMTAtNDAuNDYgMTguNzUtNC4zNyA1LjU5LTMgMTAuODQgMi44IDE1LjM3bDguNTggNi44OGM1LjYxIDQuNTYgMTEgMi40NyAxNi4xMi0yLjQ0YTEzLjQ0IDEzLjQ0IDAgMCAxIDkuNDYtMy44NGMzLjMzIDAgOS4yOCAxLjU2IDkuMjggOC43NUM1MSAyNDguMTkgMCAyNTcuMzEgMCAzMDQuNTl2NEMwIDMxNiA1LjA4IDMyMCAxMi4wOSAzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpc3RVbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCA0OGE0OCA0OCAwIDEgMCA0OCA0OCA0OCA0OCAwIDAgMC00OC00OHptMCAxNjBhNDggNDggMCAxIDAgNDggNDggNDggNDggMCAwIDAtNDgtNDh6bTAgMTYwYTQ4IDQ4IDAgMSAwIDQ4IDQ4IDQ4IDQ4IDAgMCAwLTQ4LTQ4em00NDggMTZIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDM2OEgxNmExNiAxNiAwIDAgMC0xNiAxNnY2NGExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNnYtNjRhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDE2QTE2IDE2IDAgMCAwIDAgNjR2NjRhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZWNjRhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djY0YTE2IDE2IDAgMCAwIDE2IDE2aDY0YTE2IDE2IDAgMCAwIDE2LTE2di02NGExNiAxNiAwIDAgMC0xNi0xNnptNDE2IDE3NkgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0zMjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAxNjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvY2F0aW9uQXJyb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ0LjUyIDMuNTJMMjguNzQgMTk1LjQyYy00Ny45NyAyMi4zOS0zMS45OCA5Mi43NSAxOS4xOSA5Mi43NWgxNzUuOTF2MTc1LjkxYzAgNTEuMTcgNzAuMzYgNjcuMTcgOTIuNzUgMTkuMTlsMTkxLjktNDE1Ljc4YzE1Ljk5LTM4LjM5LTI1LjU5LTc5Ljk3LTYzLjk3LTYzLjk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NrT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjMuNSAwQzMzOS41LjMgMjcyIDY5LjUgMjcyIDE1My41VjIyNEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTkyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNzJjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQ4di03MS4xYzAtMzkuNiAzMS43LTcyLjUgNzEuMy03Mi45IDQwLS40IDcyLjcgMzIuMSA3Mi43IDcydjgwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0di04MEM1NzYgNjggNTA3LjUtLjMgNDIzLjUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMjI0aC0yNHYtNzJDMzc2IDY4LjIgMzA3LjggMCAyMjQgMFM3MiA2OC4yIDcyIDE1MnY3Mkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTkyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNzJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xMDQgMEgxNTJ2LTcyYzAtMzkuNyAzMi4zLTcyIDcyLTcyczcyIDMyLjMgNzIgNzJ2NzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvbmdBcnJvd0FsdERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDM0NS45NDFWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNTZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzAxLjk0MUg0MS45NDFjLTIxLjM4MiAwLTMyLjA5IDI1Ljg1MS0xNi45NzEgNDAuOTcxbDg2LjA1OSA4Ni4wNTljOS4zNzMgOS4zNzMgMjQuNTY5IDkuMzczIDMzLjk0MSAwbDg2LjA1OS04Ni4wNTljMTUuMTE5LTE1LjExOSA0LjQxMS00MC45NzEtMTYuOTcxLTQwLjk3MUgxNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvbmdBcnJvd0FsdExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM0LjA1OSAyOTZINDM2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTU2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTM0LjA1OXYtNDYuMDU5YzAtMjEuMzgyLTI1Ljg1MS0zMi4wOS00MC45NzEtMTYuOTcxTDcuMDI5IDIzOS4wMjljLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWw4Ni4wNTkgODYuMDU5YzE1LjExOSAxNS4xMTkgNDAuOTcxIDQuNDExIDQwLjk3MS0xNi45NzFWMjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb25nQXJyb3dBbHRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuOTQxIDIxNkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDMwMS45NDF2NDYuMDU5YzAgMjEuMzgyIDI1Ljg1MSAzMi4wOSA0MC45NzEgMTYuOTcxbDg2LjA1OS04Ni4wNTljOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxbC04Ni4wNTktODYuMDU5Yy0xNS4xMTktMTUuMTE5LTQwLjk3MS00LjQxMS00MC45NzEgMTYuOTcxVjIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9uZ0Fycm93QWx0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODggMTY2LjA1OVY0NjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjE2Ni4wNTloNDYuMDU5YzIxLjM4MiAwIDMyLjA5LTI1Ljg1MSAxNi45NzEtNDAuOTcxbC04Ni4wNTktODYuMDU5Yy05LjM3My05LjM3My0yNC41NjktOS4zNzMtMzMuOTQxIDBsLTg2LjA1OSA4Ni4wNTljLTE1LjExOSAxNS4xMTktNC40MTEgNDAuOTcxIDE2Ljk3MSA0MC45NzFIODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvd1Zpc2lvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjkuMzQ0IDIzMS42MzFDNTEyLjk2IDEzNS45NDkgNDA3LjgxIDcyIDI4OCA3MmMtMjguNDY4IDAtNTYuMTAyIDMuNjE5LTgyLjQ1MSAxMC40MDlMMTUyLjc3OCAxMC4yNGMtNy42MDEtMTAuODU4LTIyLjU2NC0xMy41LTMzLjQyMy01LjlsLTEzLjExNCA5LjE3OGMtMTAuODYgNy42MDEtMTMuNTAyIDIyLjU2Ni01LjkgMzMuNDI2bDQzLjEzMSA1OC4zOTVDODkuNDQ5IDEzMS43MyA0MC4yMjggMTc0LjY4MyA2LjY4MiAyMzEuNTgxYy0uMDEuMDE3LS4wMjMuMDMzLS4wMzQuMDUtOC43NjUgMTQuODc1LTguOTY0IDMzLjUyOCAwIDQ4LjczOSAzOC41IDY1LjMzMiA5OS43NDIgMTE1Ljg2MiAxNzIuODU5IDE0MS4zNDlMNTUuMzE2IDI0NC4zMDJBMjcyLjE5NCAyNzIuMTk0IDAgMCAxIDgzLjYxIDIwOC4zOWwxMTkuNCAxNzAuNThoLjAxbDQwLjYzIDU4LjA0YTMzMC4wNTUgMzMwLjA1NSAwIDAgMCA3OC45NCAxLjE3bC0xODkuOTgtMjcxLjRhMjc3LjYyOCAyNzcuNjI4IDAgMCAxIDM4Ljc3Ny0yMS41NjNsMjUxLjgzNiAzNTYuNTQ0YzcuNjAxIDEwLjg1OCAyMi41NjQgMTMuNDk5IDMzLjQyMyA1LjlsMTMuMTE0LTkuMTc4YzEwLjg2LTcuNjAxIDEzLjUwMi0yMi41NjcgNS45LTMzLjQyNmwtNDMuMTItNTguMzc3LS4wMDctLjAwOWM1Ny4xNjEtMjcuOTc4IDEwNC44MzUtNzIuMDQgMTM2LjgxLTEyNi4zMDFhNDcuOTM4IDQ3LjkzOCAwIDAgMCAuMDAxLTQ4LjczOXpNMzkwLjAyNiAzNDUuOTRsLTE5LjA2Ni0yNy4yM2MyNC42ODItMzIuNTY3IDI3LjcxMS03Ni4zNTMgOC44LTExMS42OHYuMDNjMCAyMy42NS0xOS4xNyA0Mi44Mi00Mi44MiA0Mi44Mi0yMy44MjggMC00Mi44Mi0xOS4zNDktNDIuODItNDIuODIgMC0yMy42NSAxOS4xNy00Mi44MiA0Mi44Mi00Mi44MmguMDNjLTI0Ljc1LTEzLjI0OS01My41MjItMTUuNjQzLTc5LjUxLTcuNjhsLTE5LjA2OC0yNy4yMzdDMjUzLjc1OCAxMjMuMzA2IDI3MC40ODggMTIwIDI4OCAxMjBjNzUuMTYyIDAgMTM2IDYwLjgyNiAxMzYgMTM2IDAgMzQuNTA0LTEyLjgzMyA2NS45NzUtMzMuOTc0IDg5Ljk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMdWdnYWdlQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzIwaDMyVjk2aC0zMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnptMzUyLTMyVjEyOGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC0zMnYyMjRoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnptNDggOTZIMTI4VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2QzcuMTYgMCAwIDcuMTYgMCAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OHYzNjhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoODIuOTRjLTEuNzkgNS4wMy0yLjk0IDEwLjM2LTIuOTQgMTYgMCAyNi41MSAyMS40OSA0OCA0OCA0OHM0OC0yMS40OSA0OC00OGMwLTUuNjQtMS4xNS0xMC45Ny0yLjk0LTE2aDE5Ny44OGMtMS43OSA1LjAzLTIuOTQgMTAuMzYtMi45NCAxNiAwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4czQ4LTIxLjQ5IDQ4LTQ4YzAtNS42NC0xLjE1LTEwLjk3LTIuOTQtMTZINjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDgwIDk2VjQ4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djI3MmgxOTJWOTZ6bS00OCAwaC05NlY0OGg5NnY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHVuZ3NWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQsMTUwLjY4VjE2QTE2LDE2LDAsMCwwLDMyOCwwSDMxMmExNiwxNiwwLDAsMC0xNiwxNlYxNTAuNjhhNDYuNDUsNDYuNDUsMCwwLDEsNDgsMFpNMTk1LjU0LDQ0NC40NmE0OC4wNiw0OC4wNiwwLDAsMSwwLTY3Ljg4bDguNTgtOC41OEgxOTJhNDgsNDgsMCwwLDEsMC05NmgxMi4xMmwtOC41OC04LjU3YTQ4LDQ4LDAsMCwxLDYwLjQ2LTc0VjE2MS43NUMyNTYsMTI1LjM4LDIyNC42Miw5NiwxODYsOTZjLTQ0LDAtNTgsMjguNS04MC4xMiw2My4xM2E4MTkuNTIsODE5LjUyLDAsMCwwLTEwMiwyMzFBMTEzLjE2LDExMy4xNiwwLDAsMCwwLDQxOS43NUMwLDQ4MSw2Mi41LDUyNS4yNiwxMjUuMjUsNTA4LjM4bDU5LjUtMTUuODdhOTguNTEsOTguNTEsMCwwLDAsNTIuNS0zNC43NSw0Ni40OSw0Ni40OSwwLDAsMS00MS43MS0xMy4zWm0yMjYuMjktMjIuNjNhMTYsMTYsMCwwLDAsMC0yMi42MmwtOC41OC04LjU4QzM5My4wOSwzNzAuNDcsNDA3LjM3LDMzNiw0MzUuODgsMzM2SDQ0OGExNiwxNiwwLDAsMCwwLTMySDQzNS44OGMtMjguNTEsMC00Mi43OS0zNC40Ny0yMi42My01NC42Mmw4LjU4LTguNThhMTYsMTYsMCwwLDAtMjIuNjMtMjIuNjNsLTguNTcsOC41OEMzNzAuNDcsMjQ2LjkxLDMzNiwyMzIuNjMsMzM2LDIwNC4xMlYxOTJhMTYsMTYsMCwwLDAtMzIsMHYxMi4xMmMwLDI4LjUxLTM0LjQ3LDQyLjc5LTU0LjYzLDIyLjYzbC04LjU3LTguNThhMTYsMTYsMCwwLDAtMjIuNjMsMjIuNjNsOC41OCw4LjU4YzIwLjE2LDIwLjE1LDUuODgsNTQuNjItMjIuNjMsNTQuNjJIMTkyYTE2LDE2LDAsMCwwLDAsMzJoMTIuMTJjMjguNTEsMCw0Mi43OSwzNC40NywyMi42Myw1NC42M2wtOC41OCw4LjU4YTE2LDE2LDAsMSwwLDIyLjYzLDIyLjYybDguNTctOC41N0MyNjkuNTMsMzkzLjEsMzA0LDQwNy4zOCwzMDQsNDM1Ljg4VjQ0OGExNiwxNiwwLDAsMCwzMiwwVjQzNS44OGMwLTI4LjUsMzQuNDctNDIuNzgsNTQuNjMtMjIuNjJsOC41Nyw4LjU3YTE2LDE2LDAsMCwwLDIyLjYzLDBaTTI4OCwzMDRhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMjg4LDMwNFptNjQsNjRhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMzUyLDM2OFptMjg0LjEyLDIyLjEzYTgxOS41Miw4MTkuNTIsMCwwLDAtMTAyLTIzMUM1MTIsMTI0LjUsNDk4LDk2LDQ1NCw5NmMtMzguNjIsMC03MCwyOS4zOC03MCw2NS43NXYyNy43MmE0OCw0OCwwLDAsMSw2MC40Niw3NEw0MzUuODgsMjcySDQ0OGE0OCw0OCwwLDAsMSwwLDk2SDQzNS44OGw4LjU4LDguNThhNDcuNyw0Ny43LDAsMCwxLTQxLjcxLDgxLjE4LDk4LjUxLDk4LjUxLDAsMCwwLDUyLjUsMzQuNzVsNTkuNSwxNS44N0M1NzcuNSw1MjUuMjYsNjQwLDQ4MSw2NDAsNDE5Ljc1QTExMy4xNiwxMTMuMTYsMCwwLDAsNjM2LjEyLDM5MC4xM1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHVuZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM2LjExIDM5MC4xNUM2MTQuNDQgMzA4Ljg1IDU4MC4wNyAyMzEgNTM0LjEgMTU5LjEzIDUxMS45OCAxMjQuNTYgNDk4LjAzIDk2IDQ1NC4wNSA5NiA0MTUuMzYgOTYgMzg0IDEyNS40MiAzODQgMTYxLjcxdjYwLjExbC0zMi44OC0yMS45MmExNS45OTYgMTUuOTk2IDAgMCAxLTcuMTItMTMuMzFWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNzAuNTljMCA1LjM1LTIuNjcgMTAuMzQtNy4xMiAxMy4zMUwyNTYgMjIxLjgydi02MC4xMUMyNTYgMTI1LjQyIDIyNC42NCA5NiAxODUuOTUgOTZjLTQzLjk4IDAtNTcuOTMgMjguNTYtODAuMDUgNjMuMTNDNTkuOTMgMjMxIDI1LjU2IDMwOC44NSAzLjg5IDM5MC4xNSAxLjMgMzk5Ljg0IDAgNDA5Ljc5IDAgNDE5Ljc4YzAgNjEuMjMgNjIuNDggMTA1LjQ0IDEyNS4yNCA4OC42Mmw1OS41LTE1Ljk1YzQyLjE4LTExLjMgNzEuMjYtNDcuNDcgNzEuMjYtODguNjJ2LTg3LjQ5bC04NS44NCA1Ny4yM2E3Ljk5MiA3Ljk5MiAwIDAgMS0xMS4wOS0yLjIybC04Ljg4LTEzLjMxYTcuOTkyIDcuOTkyIDAgMCAxIDIuMjItMTEuMDlMMzIwIDIzNS4yM2wxNjcuNTkgMTExLjcyYTcuOTk0IDcuOTk0IDAgMCAxIDIuMjIgMTEuMDlsLTguODggMTMuMzFhNy45OTQgNy45OTQgMCAwIDEtMTEuMDkgMi4yMkwzODQgMzE2LjM0djg3LjQ5YzAgNDEuMTUgMjkuMDggNzcuMzEgNzEuMjYgODguNjJsNTkuNSAxNS45NUM1NzcuNTIgNTI1LjIyIDY0MCA0ODEuMDEgNjQwIDQxOS43OGMwLTkuOTktMS4zLTE5Ljk0LTMuODktMjkuNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA5NmwxNi0zMiAzMi0xNi0zMi0xNi0xNi0zMi0xNiAzMi0zMiAxNiAzMiAxNiAxNiAzMnpNODAgMTYwbDI2LjY2LTUzLjMzTDE2MCA4MGwtNTMuMzQtMjYuNjdMODAgMCA1My4zNCA1My4zMyAwIDgwbDUzLjM0IDI2LjY3TDgwIDE2MHptMzUyIDEyOGwtMjYuNjYgNTMuMzNMMzUyIDM2OGw1My4zNCAyNi42N0w0MzIgNDQ4bDI2LjY2LTUzLjMzTDUxMiAzNjhsLTUzLjM0LTI2LjY3TDQzMiAyODh6bTcwLjYyLTE5My43N0w0MTcuNzcgOS4zOEM0MTEuNTMgMy4xMiA0MDMuMzQgMCAzOTUuMTUgMGMtOC4xOSAwLTE2LjM4IDMuMTItMjIuNjMgOS4zOEw5LjM4IDM3Mi41MmMtMTIuNSAxMi41LTEyLjUgMzIuNzYgMCA0NS4yNWw4NC44NSA4NC44NWM2LjI1IDYuMjUgMTQuNDQgOS4zNyAyMi42MiA5LjM3IDguMTkgMCAxNi4zOC0zLjEyIDIyLjYzLTkuMzdsMzYzLjE0LTM2My4xNWMxMi41LTEyLjQ4IDEyLjUtMzIuNzUgMC00NS4yNHpNMzU5LjQ1IDIwMy40NmwtNTAuOTEtNTAuOTEgODYuNi04Ni42IDUwLjkxIDUwLjkxLTg2LjYgODYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NC4wNyAxNDguMUgxMmExMiAxMiAwIDAgMS0xMi0xMnYtODBhMzYgMzYgMCAwIDEgMzYtMzZoMTA0YTM2IDM2IDAgMCAxIDM2IDM2djgwYTExLjg5IDExLjg5IDAgMCAxLTExLjkzIDEyem0zNDcuOTMtMTJWNTZhMzYgMzYgMCAwIDAtMzYtMzZIMzcyYTM2IDM2IDAgMCAwLTM2IDM2djgwYTEyIDEyIDAgMCAwIDEyIDEyaDE1MmExMS44OSAxMS44OSAwIDAgMCAxMi0xMS45em0tMTY0IDQ0YTEyIDEyIDAgMCAwLTEyIDEydjUyYzAgMTI4LjEtMTYwIDEyNy45LTE2MCAwdi01MmExMiAxMiAwIDAgMC0xMi0xMkgxMi4xYTEyIDEyIDAgMCAwLTEyIDEyLjFjLjEgMjEuNC42IDQwLjMgMCA1My4zIDAgMTUwLjYgMTM2LjE3IDI0Ni42IDI1Ni43NSAyNDYuNnMyNTUtOTYgMjU1LTI0Ni43Yy0uNi0xMi44LS4yLTMzIDAtNTMuMmExMiAxMiAwIDAgMC0xMi0xMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWlsQnVsayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNDQ4Yy0yNS42IDAtNTEuMi0yMi40LTY0LTMyLTY0LTQ0LjgtODMuMi02MC44LTk2LTcwLjRWNDgwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMjU2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzQ1LjZjLTEyLjggOS42LTMyIDI1LjYtOTYgNzAuNC0xMi44IDkuNi0zOC40IDMyLTY0IDMyem0xMjgtMTkySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjE2YzI1LjYgMTkuMiAyMi40IDE5LjIgMTE1LjIgODYuNCA5LjYgNi40IDI4LjggMjUuNiA0NC44IDI1LjZzMzUuMi0xOS4yIDQ0LjgtMjIuNGM5Mi44LTY3LjIgODkuNi02Ny4yIDExNS4yLTg2LjRWMjg4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTI1Ni05NkgyMjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoOTZjMzMuMjEgMCA2MC41OSAyNS40MiA2My43MSA1Ny44MmwuMjktLjIyVjQxNmgxOTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxOTJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptLTMyIDEyOGgtNjR2LTY0aDY0djY0em0tMzUyLTk2YzAtMzUuMjkgMjguNzEtNjQgNjQtNjRoMjI0VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIOTZDNzguMzMgMCA2NCAxNC4zMyA2NCAzMnYxOTJoOTZ2LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxOTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBjMzUuMzQ2IDAgNjQgMjguNjU0IDY0IDY0cy0yOC42NTQgNjQtNjQgNjQtNjQtMjguNjU0LTY0LTY0UzYwLjY1NCAwIDk2IDBtNDggMTQ0aC0xMS4zNmMtMjIuNzExIDEwLjQ0My00OS41OSAxMC44OTQtNzMuMjggMEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYxMzZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE2djEzNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjM1MmgxNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTkyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcE1hcmtlZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMtNjkuNTkgMC0xMjYgNTYuNDEtMTI2IDEyNiAwIDU2LjI2IDgyLjM1IDE1OC44IDExMy45IDE5Ni4wMiA2LjM5IDcuNTQgMTcuODIgNy41NCAyNC4yIDBDMzMxLjY1IDI4NC44IDQxNCAxODIuMjYgNDE0IDEyNiA0MTQgNTYuNDEgMzU3LjU5IDAgMjg4IDB6bTAgMTY4Yy0yMy4yIDAtNDItMTguOC00Mi00MnMxOC44LTQyIDQyLTQyIDQyIDE4LjggNDIgNDItMTguOCA0Mi00MiA0MnpNMjAuMTIgMjE1Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAyNDUuNjZ2MjUwLjMyYzAgMTEuMzIgMTEuNDMgMTkuMDYgMjEuOTQgMTQuODZMMTYwIDQ0OFYyMTQuOTJjLTguODQtMTUuOTgtMTYuMDctMzEuNTQtMjEuMjUtNDYuNDJMMjAuMTIgMjE1Ljk1ek0yODggMzU5LjY3Yy0xNC4wNyAwLTI3LjM4LTYuMTgtMzYuNTEtMTYuOTYtMTkuNjYtMjMuMi00MC41Ny00OS42Mi01OS40OS03Ni43MnYxODJsMTkyIDY0VjI2NmMtMTguOTIgMjcuMDktMzkuODIgNTMuNTItNTkuNDkgNzYuNzItOS4xMyAxMC43Ny0yMi40NCAxNi45NS0zNi41MSAxNi45NXptMjY2LjA2LTE5OC41MUw0MTYgMjI0djI4OGwxMzkuODgtNTUuOTVBMzEuOTk2IDMxLjk5NiAwIDAgMCA1NzYgNDI2LjM0VjE3Ni4wMmMwLTExLjMyLTExLjQzLTE5LjA2LTIxLjk0LTE0Ljg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBNYXJrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjLTY5LjU5IDAtMTI2IDU2LjQxLTEyNiAxMjYgMCA1Ni4yNiA4Mi4zNSAxNTguOCAxMTMuOSAxOTYuMDIgNi4zOSA3LjU0IDE3LjgyIDcuNTQgMjQuMiAwQzMzMS42NSAyODQuOCA0MTQgMTgyLjI2IDQxNCAxMjYgNDE0IDU2LjQxIDM1Ny41OSAwIDI4OCAwek0yMC4xMiAyMTUuOTVBMzIuMDA2IDMyLjAwNiAwIDAgMCAwIDI0NS42NnYyNTAuMzJjMCAxMS4zMiAxMS40MyAxOS4wNiAyMS45NCAxNC44NkwxNjAgNDQ4VjIxNC45MmMtOC44NC0xNS45OC0xNi4wNy0zMS41NC0yMS4yNS00Ni40MkwyMC4xMiAyMTUuOTV6TTI4OCAzNTkuNjdjLTE0LjA3IDAtMjcuMzgtNi4xOC0zNi41MS0xNi45Ni0xOS42Ni0yMy4yLTQwLjU3LTQ5LjYyLTU5LjQ5LTc2LjcydjE4MmwxOTIgNjRWMjY2Yy0xOC45MiAyNy4wOS0zOS44MiA1My41Mi01OS40OSA3Ni43Mi05LjEzIDEwLjc3LTIyLjQ0IDE2Ljk1LTM2LjUxIDE2Ljk1em0yNjYuMDYtMTk4LjUxTDQxNiAyMjR2Mjg4bDEzOS44OC01NS45NUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiA0MjYuMzRWMTc2LjAyYzAtMTEuMzItMTEuNDMtMTkuMDYtMjEuOTQtMTQuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcE1hcmtlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzIuMjY4IDUwMS42N0MyNi45NyAyOTEuMDMxIDAgMjY5LjQxMyAwIDE5MiAwIDg1Ljk2MSA4NS45NjEgMCAxOTIgMHMxOTIgODUuOTYxIDE5MiAxOTJjMCA3Ny40MTMtMjYuOTcgOTkuMDMxLTE3Mi4yNjggMzA5LjY3LTkuNTM1IDEzLjc3NC0yOS45MyAxMy43NzMtMzkuNDY0IDB6TTE5MiAyNzJjNDQuMTgzIDAgODAtMzUuODE3IDgwLTgwcy0zNS44MTctODAtODAtODAtODAgMzUuODE3LTgwIDgwIDM1LjgxNyA4MCA4MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwTWFya2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Mi4yNjggNTAxLjY3QzI2Ljk3IDI5MS4wMzEgMCAyNjkuNDEzIDAgMTkyIDAgODUuOTYxIDg1Ljk2MSAwIDE5MiAwczE5MiA4NS45NjEgMTkyIDE5MmMwIDc3LjQxMy0yNi45NyA5OS4wMzEtMTcyLjI2OCAzMDkuNjctOS41MzUgMTMuNzc0LTI5LjkzIDEzLjc3My0zOS40NjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAzMTYuOTR2MTU2LjY5bDIyLjAyIDMzLjAyYzQuNzUgNy4xMiAxNS4yMiA3LjEyIDE5Ljk3IDBMMTc2IDQ3My42M1YzMTYuOTRjLTEwLjM5IDEuOTItMjEuMDYgMy4wNi0zMiAzLjA2cy0yMS42MS0xLjE0LTMyLTMuMDZ6TTE0NCAwQzY0LjQ3IDAgMCA2NC40NyAwIDE0NHM2NC40NyAxNDQgMTQ0IDE0NCAxNDQtNjQuNDcgMTQ0LTE0NFMyMjMuNTMgMCAxNDQgMHptMCA3NmMtMzcuNSAwLTY4IDMwLjUtNjggNjggMCA2LjYyLTUuMzggMTItMTIgMTJzLTEyLTUuMzgtMTItMTJjMC01MC43MyA0MS4yOC05MiA5Mi05MiA2LjYyIDAgMTIgNS4zOCAxMiAxMnMtNS4zOCAxMi0xMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwU2lnbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA3LjMxIDg0LjY5TDQ2NCA0MS4zN2MtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0gyODhWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNkg1NmMtMTMuMjUgMC0yNCAxMC43NS0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDM4NS4zN2M4LjQ5IDAgMTYuNjItMy4zNyAyMi42My05LjM3bDQzLjMxLTQzLjMxYzYuMjUtNi4yNiA2LjI1LTE2LjM4IDAtMjIuNjN6TTIyNCA0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzg0aC02NHYxMTJ6bTIzMi0yNzJIMjg4di0zMmgtNjR2MzJINzAuNjNjLTguNDkgMC0xNi42MiAzLjM3LTIyLjYzIDkuMzdMNC42OSAyNzYuNjljLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMNDggMzQyLjYzYzYgNiAxNC4xNCA5LjM3IDIyLjYzIDkuMzdINDU2YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjUtMTAuNzUtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExNy42NnYzNDYuMzJjMCAxMS4zMiAxMS40MyAxOS4wNiAyMS45NCAxNC44NkwxNjAgNDE2VjMyTDIwLjEyIDg3Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTcuNjZ6TTE5MiA0MTZsMTkyIDY0Vjk2TDE5MiAzMnYzODR6TTU1NC4wNiAzMy4xNkw0MTYgOTZ2Mzg0bDEzOS44OC01NS45NUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiAzOTQuMzRWNDguMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFya2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkzLjk1IDI5MC4wM0EzMjcuMDM4IDMyNy4wMzggMCAwIDAgLjE3IDQ4NS4xMWwtLjAzLjIzYy0xLjcgMTUuMjggMTEuMjEgMjguMiAyNi40OSAyNi41MWEzMjcuMDIgMzI3LjAyIDAgMCAwIDE5NS4zNC05My44bDc1LjQtNzUuNC0xMjguMDItMTI4LjAyLTc1LjQgNzUuNHpNNDg1LjQ5IDI2LjUxYy0zNS4zNS0zNS4zNS05Mi42Ny0zNS4zNS0xMjguMDIgMGwtMjEuNzYgMjEuNzYtMzYuNTYtMzYuNTVjLTE1LjYyLTE1LjYyLTQwLjk1LTE1LjYyLTU2LjU2IDBMMTM4LjQ3IDExNS44NGMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MiAyMi42MmM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDg3LjE1LTg3LjE1IDE5LjU5IDE5LjU5TDE5MS45OCAxOTIgMzIwIDMyMC4wMmwxNjUuNDktMTY1LjQ5YzM1LjM1LTM1LjM1IDM1LjM1LTkyLjY2IDAtMTI4LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MCAwaC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTQ4LjcgNDguN0MxOTguNSA3Mi4xIDE3Mi4yIDY0IDE0NCA2NCA2NC41IDY0IDAgMTI4LjUgMCAyMDhzNjQuNSAxNDQgMTQ0IDE0NCAxNDQtNjQuNSAxNDQtMTQ0YzAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsNDguNy00OC43IDE2LjkgMTYuOWMyLjQgMi40IDUuNSAzLjUgOC40IDMuNSA2LjIgMCAxMi4xLTQuOCAxMi4xLTEyVjEyYzAtNi42LTUuNC0xMi0xMi0xMnpNMTQ0IDI4OGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6bTM1Ni0xMjguMWgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS00OC43IDQ4LjdjLTE4LjItMTEuNC0zOS0xOC45LTYxLjUtMjEuMy0yLjEgMjEuOC04LjIgNDMuMy0xOC40IDYzLjMgMS4xIDAgMi4yLS4xIDMuMi0uMSA0NC4xIDAgODAgMzUuOSA4MCA4MHMtMzUuOSA4MC04MCA4MC04MC0zNS45LTgwLTgwYzAtMS4xIDAtMi4yLjEtMy4yLTIwIDEwLjItNDEuNSAxNi40LTYzLjMgMTguNEMxNjguNCA0NTUuNiAyMjkuNiA1MTIgMzA0IDUxMmM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDQ4LjctNDguNyAxNi45IDE2LjljMi40IDIuNCA1LjQgMy41IDguNCAzLjUgNi4yIDAgMTIuMS00LjggMTIuMS0xMnYtNzljMC02LjctNS40LTEyLjEtMTItMTIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZUggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc2LjIgMjQ3LjVsLTU1LjktNTUuOWMtNy42LTcuNi0yMC41LTIuMi0yMC41IDguNVYyMjRIMzc2di0yMGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2MjBoLTI3LjZjLTUuOC0yNS42LTE4LjctNDkuOS0zOC42LTY5LjhDMTg5LjYgOTggOTguNCA5OCA0Mi4yIDE1NC4yYy01Ni4yIDU2LjItNTYuMiAxNDcuNCAwIDIwMy42IDU2LjIgNTYuMiAxNDcuNCA1Ni4yIDIwMy42IDAgMTkuOS0xOS45IDMyLjgtNDQuMiAzOC42LTY5LjhIMzEydjIwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTIwaDIzLjl2MjMuOWMwIDEwLjcgMTIuOSAxNiAyMC41IDguNWw1NS45LTU1LjljNC42LTQuNyA0LjYtMTIuMy0uMS0xN3ptLTI3NS42IDY1LjFjLTMxLjIgMzEuMi04MS45IDMxLjItMTEzLjEgMC0zMS4yLTMxLjItMzEuMi04MS45IDAtMTEzLjEgMzEuMi0zMS4yIDgxLjktMzEuMiAxMTMuMSAwIDMxLjIgMzEuMSAzMS4yIDgxLjkgMCAxMTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZVYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ1LjggMjM0LjJjLTE5LjktMTkuOS00NC4yLTMyLjgtNjkuOC0zOC42di0yNS40aDIwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY4MS40aDIzLjljMTAuNyAwIDE2LTEyLjkgOC41LTIwLjVMMTUyLjUgNS4xYy00LjctNC43LTEyLjMtNC43LTE3IDBMNzkuNiA2MWMtNy42IDcuNi0yLjIgMjAuNSA4LjUgMjAuNUgxMTJ2MjQuN0g5MmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgyMHYyNS40Yy0yNS42IDUuOC00OS45IDE4LjctNjkuOCAzOC42LTU2LjIgNTYuMi01Ni4yIDE0Ny40IDAgMjAzLjYgNTYuMiA1Ni4yIDE0Ny40IDU2LjIgMjAzLjYgMCA1Ni4zLTU2LjIgNTYuMy0xNDcuNCAwLTIwMy42em0tNDUuMiAxNTguNGMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwLTMxLjItMzEuMi0zMS4yLTgxLjkgMC0xMTMuMSAzMS4yLTMxLjIgODEuOS0zMS4yIDExMy4xIDAgMzEuMiAzMS4xIDMxLjIgODEuOSAwIDExMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzU3Ryb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3MiA2NGgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS0xNy41IDE3LjUtMTQuMS0xNC4xYy00LjctNC43LTEyLjMtNC43LTE3IDBMMjI0LjUgMTMzYy00LjcgNC43LTQuNyAxMi4zIDAgMTdsMTQuMSAxNC4xLTE4IDE4Yy0yMi4yLTE0LTQ4LjUtMjIuMS03Ni43LTIyLjFDNjQuNSAxNjAgMCAyMjQuNSAwIDMwNHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDRjMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2wxOC0xOCAxNC4xIDE0LjFjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDI4LjMtMjguM2M0LjctNC43IDQuNy0xMi4zIDAtMTdMMzI5LjIgMTY0bDE3LjUtMTcuNSAxNi45IDE2LjljNy42IDcuNiAyMC41IDIuMiAyMC41LTguNVY3NmMtLjEtNi42LTUuNS0xMi0xMi4xLTEyek0xNDQgMzg0Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIgNjRoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43Yy0yMi4yLTE0LTQ4LjUtMjIuMS03Ni43LTIyLjFDNjQuNSAxNjAgMCAyMjQuNSAwIDMwNHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDRjMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w4MC43LTgwLjcgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWNzZjMC02LjYtNS40LTEyLTEyLTEyek0xNDQgMzg0Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAuNjcgNjRjLTQ0Mi42IDAtMzU3LjU3IDM4NC0xNTguNDYgMzg0IDM5LjkgMCA3Ny40Ny0yMC42OSAxMDEuNDItNTUuODZsMjUuNzMtMzcuNzljMTUuNjYtMjIuOTkgNDYuOTctMjIuOTkgNjIuNjMgMGwyNS43MyAzNy43OUM0MDEuNjYgNDI3LjMxIDQzOS4yMyA0NDggNDc5LjEzIDQ0OGMxODkuODYgMCAyOTAuNjMtMzg0LTE1OC40Ni0zODR6TTE4NCAzMDguMzZjLTQxLjA2IDAtNjcuNzYtMjUuNjYtODAuMDgtNDEuMDUtNS4yMy02LjUzLTUuMjMtMTYuMDkgMC0yMi42MyAxMi4zMi0xNS40IDM5LjAxLTQxLjA1IDgwLjA4LTQxLjA1czY3Ljc2IDI1LjY2IDgwLjA4IDQxLjA1YzUuMjMgNi41MyA1LjIzIDE2LjA5IDAgMjIuNjMtMTIuMzIgMTUuNC0zOS4wMiA0MS4wNS04MC4wOCA0MS4wNXptMjcyIDBjLTQxLjA2IDAtNjcuNzYtMjUuNjYtODAuMDgtNDEuMDUtNS4yMy02LjUzLTUuMjMtMTYuMDkgMC0yMi42MyAxMi4zMi0xNS40IDM5LjAxLTQxLjA1IDgwLjA4LTQxLjA1czY3Ljc2IDI1LjY2IDgwLjA4IDQxLjA1YzUuMjMgNi41MyA1LjIzIDE2LjA5IDAgMjIuNjMtMTIuMzIgMTUuNC0zOS4wMiA0MS4wNS04MC4wOCA0MS4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjc1IDEzMC43NUwxNTQuNjIgMTUuNTRBMzEuOTk3IDMxLjk5NyAwIDAgMCAxMjcuMTggMEgxNi4wM0MzLjA4IDAtNC41IDE0LjU3IDIuOTIgMjUuMThsMTExLjI3IDE1OC45NmMyOS43Mi0yNy43NyA2Ny41Mi00Ni44MyAxMDkuNTYtNTMuMzl6TTQ5NS45NyAwSDM4NC44MmMtMTEuMjQgMC0yMS42NiA1LjktMjcuNDQgMTUuNTRsLTY5LjEzIDExNS4yMWM0Mi4wNCA2LjU2IDc5Ljg0IDI1LjYyIDEwOS41NiA1My4zOEw1MDkuMDggMjUuMThDNTE2LjUgMTQuNTcgNTA4LjkyIDAgNDk1Ljk3IDB6TTI1NiAxNjBjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzYgMTc2LTc4LjggMTc2LTE3Ni03OC44LTE3Ni0xNzYtMTc2em05Mi41MiAxNTcuMjZsLTM3LjkzIDM2Ljk2IDguOTcgNTIuMjJjMS42IDkuMzYtOC4yNiAxNi41MS0xNi42NSAxMi4wOUwyNTYgMzkzLjg4bC00Ni45IDI0LjY1Yy04LjQgNC40NS0xOC4yNS0yLjc0LTE2LjY1LTEyLjA5bDguOTctNTIuMjItMzcuOTMtMzYuOTZjLTYuODItNi42NC0zLjA1LTE4LjIzIDYuMzUtMTkuNTlsNTIuNDMtNy42NCAyMy40My00Ny41MmMyLjExLTQuMjggNi4xOS02LjM5IDEwLjI4LTYuMzkgNC4xMSAwIDguMjIgMi4xNCAxMC4zMyA2LjM5bDIzLjQzIDQ3LjUyIDUyLjQzIDcuNjRjOS40IDEuMzYgMTMuMTcgMTIuOTUgNi4zNSAxOS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVka2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQ4MGgzMjBWMTI4aC0zMlY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDE3NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0OEg5NnYzNTJ6bTk2LTM4NGgxMjh2MzJIMTkyVjk2em0zMjAgODB2MjU2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhoLTE2VjEyOGgxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4ek02NCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTc2YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMTZ2MzUyem0yODgtMjA4djMyYzAgOC44MzctNy4xNjMgMTYtMTYgMTZoLTQ4djQ4YzAgOC44MzctNy4xNjMgMTYtMTYgMTZoLTMyYy04LjgzNyAwLTE2LTcuMTYzLTE2LTE2di00OGgtNDhjLTguODM3IDAtMTYtNy4xNjMtMTYtMTZ2LTMyYzAtOC44MzcgNy4xNjMtMTYgMTYtMTZoNDh2LTQ4YzAtOC44MzcgNy4xNjMtMTYgMTYtMTZoMzJjOC44MzcgMCAxNiA3LjE2MyAxNiAxNnY0OGg0OGM4LjgzNyAwIDE2IDcuMTYzIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWhCbGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tODAgMjMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWhSb2xsaW5nRXllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek04OCAyMjRjMC0yNC4zIDEzLjctNDUuMiAzMy42LTU2LS43IDIuNi0xLjYgNS4yLTEuNiA4IDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0yLjgtLjktNS40LTEuNi04IDE5LjkgMTAuOCAzMy42IDMxLjcgMzMuNiA1NiAwIDM1LjMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NHptMjI0IDE3NkgxODRjLTIxLjIgMC0yMS4yLTMyIDAtMzJoMTI4YzIxLjIgMCAyMS4yIDMyIDAgMzJ6bTMyLTExMmMtMzUuMyAwLTY0LTI4LjctNjQtNjQgMC0yNC4zIDEzLjctNDUuMiAzMy42LTU2LS43IDIuNi0xLjYgNS4yLTEuNiA4IDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0yLjgtLjktNS40LTEuNi04IDE5LjkgMTAuOCAzMy42IDMxLjcgMzMuNiA1NiAwIDM1LjMtMjguNyA2NC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0xNzYgMTkySDE1MmMtMjEuMiAwLTIxLjItMzIgMC0zMmgxOTJjMjEuMiAwIDIxLjIgMzIgMCAzMnptLTE2LTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lbW9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMTMwLjk0Vjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djM0Ljk0YzE4LjYgNi42MSAzMiAyNC4xOSAzMiA0NS4wNnMtMTMuNCAzOC40NS0zMiA0NS4wNlYzMjBoNjQwdi05OC45NGMtMTguNi02LjYxLTMyLTI0LjE5LTMyLTQ1LjA2czEzLjQtMzguNDUgMzItNDUuMDZ6TTIyNCAyNTZoLTY0VjEyOGg2NHYxMjh6bTEyOCAwaC02NFYxMjhoNjR2MTI4em0xMjggMGgtNjRWMTI4aDY0djEyOHpNMCA0NDhoNjR2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDEyOHYtMjYuNjdjMC04Ljg0IDcuMTYtMTYgMTYtMTZzMTYgNy4xNiAxNiAxNlY0NDhoMTI4di0yNi42N2MwLTguODQgNy4xNi0xNiAxNi0xNnMxNiA3LjE2IDE2IDE2VjQ0OGgxMjh2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDY0di05Nkgwdjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZW5vcmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxMjhoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDRoNjRWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2em05NiAwaC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptMTkyIDBoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDRoNjRWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2em05NiAwaC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptODAtMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlM2MDggMCA2MDggMHMtMzIgNDYuMzMtMzIgNjQgMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTNTEyIDAgNTEyIDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzQxNiAwIDQxNiAwcy0zMiA0Ni4zMy0zMiA2NCAxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlMzMjAgMCAzMjAgMHMtMzIgNDYuMzMtMzIgNjQgMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTMjI0IDAgMjI0IDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzEyOCAwIDEyOCAwIDk2IDQ2LjMzIDk2IDY0czE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzMyIDAgMzIgMCAwIDQ2LjMzIDAgNjRzMTQuMzMgMzIgMzIgMzJ6bTU0NCAxOTJjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgzNTJWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTc2SDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyVjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZoMTkydjY0SDExMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNkgzNTJ2LTY0aDE5MmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVyY3VyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjA4YzAtNDQuMi0xOS45LTgzLjctNTEuMi0xMTAuMSAyLjUtMS44IDQuOS0zLjggNy4yLTUuOCAyNC43LTIxLjIgMzkuOC00OC44IDQzLjItNzguOC45LTcuMS00LjctMTMuMy0xMS45LTEzLjNoLTQwLjVDMjI5IDAgMjI0LjEgNC4xIDIyMyA5LjhjLTIuNCAxMi41LTkuNiAyNC4zLTIwLjcgMzMuOEMxODcgNTYuOCAxNjYuMyA2NCAxNDQgNjRzLTQzLTcuMi01OC40LTIwLjRDNzQuNSAzNC4xIDY3LjQgMjIuMyA2NC45IDkuOCA2My44IDQuMSA1OC45IDAgNTMuMiAwSDEyLjdDNS41IDAtLjEgNi4yLjggMTMuMyA0LjIgNDMuNCAxOS4yIDcxIDQ0IDkyLjJjMi4zIDIgNC43IDMuOSA3LjIgNS44QzE5LjkgMTI0LjMgMCAxNjMuOCAwIDIwOGMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWNDAwSDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMjI0IDBjMC00NC4xIDM1LjktODAgODAtODBzODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1ldGVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuMzI4LDIwLjgwMjdjLTExLjYwNzU5LDM4LjcwMjY0LTM0LjMwNzI0LDExMS43MDE3My02MS4zMDMxMSwxODcuNzAwNzcsNi45OTg5MywyLjA5MzcyLDEzLjQwNDIsNCwxOC42MDY1Myw1LjU5MzY4YTE2LjA2MTU4LDE2LjA2MTU4LDAsMCwxLDkuNDk4NTQsMjIuOTA2Yy0yMi4xMDYsNDIuMjk2MzUtODIuNjkwNDcsMTUyLjc5NS0xNDIuNDc4MTksMjE0LjQwMzU2LS45OTk4NCwxLjA5MzczLTEuOTk5NjksMi41LTIuOTk5NTQsMy40OTk5NUExOTQuODMwNDYsMTk0LjgzMDQ2LDAsMSwxLDU3LjA4NSwxNzkuNDEwMDljLjk5OTg1LTEsMi40MDU4OC0yLDMuNDk5NDctMyw2MS41OTk5NC01OS45MDU0OSwxNzEuOTczNjctMTIwLjQwNDczLDIxNC4zNzM0My0xNDIuNDk4MmExNi4wNTgsMTYuMDU4LDAsMCwxLDIyLjkwMjc0LDkuNDk5ODhjMS41OTM1MSw1LjA5MzY4LDMuNDk5NDcsMTEuNTkzNiw1LjU5MjksMTguNTkzNTFDMzc5LjM0ODE4LDM1LjAwNTY1LDQ1Mi40MzA3NCwxMi4zMDI4MSw0OTEuMTI3OTQuNzA5MjFBMTYuMTgzMjUsMTYuMTgzMjUsMCwwLDEsNTExLjMyOCwyMC44MDI3Wk0zMTkuOTUxLDMyMC4wMDIwN0ExMjcuOTgwNDEsMTI3Ljk4MDQxLDAsMSwwLDE5MS45NzA2MSw0NDguMDAwNDYsMTI3Ljk3NTczLDEyNy45NzU3MywwLDAsMCwzMTkuOTUxLDMyMC4wMDIwN1ptLTEyNy45ODA0MS0zMS45OTk2YTMxLjk5NTEsMzEuOTk1MSwwLDEsMS0zMS45OTUxLTMxLjk5OTZBMzEuOTU5LDMxLjk1OSwwLDAsMSwxOTEuOTcwNjEsMjg4LjAwMjQ3Wm0zMS45OTUxLDc5Ljk5OWExNS45OTc1NSwxNS45OTc1NSwwLDEsMS0xNS45OTc1NS0xNS45OTk4QTE2LjA0OTc1LDE2LjA0OTc1LDAsMCwxLDIyMy45NjU3MSwzNjguMDAxNDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvY2hpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgNDh2NDE2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhIMTQ0Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjQ4YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMjI0YzI2LjUxIDAgNDggMjEuNDkgNDggNDh6bTk2IDU4djEyYTYgNiAwIDAgMS02IDZoLTE4djZhNiA2IDAgMCAxLTYgNmgtNDJWODhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6bTAgOTZ2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MnYtNDhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6bTAgOTZ2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MnYtNDhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6bTAgOTZ2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MnYtNDhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6TTMwIDM3Nmg0MnY0OEgzMGE2IDYgMCAwIDEtNi02di02SDZhNiA2IDAgMCAxLTYtNnYtMTJhNiA2IDAgMCAxIDYtNmgxOHYtNmE2IDYgMCAwIDEgNi02em0wLTk2aDQydjQ4SDMwYTYgNiAwIDAgMS02LTZ2LTZINmE2IDYgMCAwIDEtNi02di0xMmE2IDYgMCAwIDEgNi02aDE4di02YTYgNiAwIDAgMSA2LTZ6bTAtOTZoNDJ2NDhIMzBhNiA2IDAgMCAxLTYtNnYtNkg2YTYgNiAwIDAgMS02LTZ2LTEyYTYgNiAwIDAgMSA2LTZoMTh2LTZhNiA2IDAgMCAxIDYtNnptMC05Nmg0MnY0OEgzMGE2IDYgMCAwIDEtNi02di02SDZhNiA2IDAgMCAxLTYtNnYtMTJhNiA2IDAgMCAxIDYtNmgxOHYtNmE2IDYgMCAwIDEgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lQWx0U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjgyIDQ1OC4xTDQ3Ni4yNiAzMzYuMzNDNDg4Ljc0IDMxMi4yMSA0OTYgMjg0Ljk4IDQ5NiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCAxNy45Mi0zLjk2IDM0LjgtMTAuNzIgNTAuMmwtMjYuNTUtMjAuNTJjMy4xLTkuNCA1LjI4LTE5LjIyIDUuMjgtMjkuNjdoLTQzLjY3bC00MS40LTMySDQxNnYtMzJoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThINDE2di0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEg0MTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZ2NDUuMzZMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM2IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDEtNi45NyA0LjE2LTE3LjAyLTIuODItMjIuNDV6TTQwMCA0NjRoLTU2di0zMy43OGMxMS43MS0xLjYyIDIzLjEtNC4yOCAzMy45Ni04LjA4bC01MC40LTM4Ljk2Yy02LjcxLjQtMTMuNDEuODctMjAuMzUuMi01NS44NS01LjQ1LTk4Ljc0LTQ4LjYzLTExMS4xOC0xMDEuODVMMTQ0IDI0MS4zMXY2Ljg1YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0aC01NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9waG9uZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzUyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMTkyaC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCA3NC44LTY0LjQ5IDEzNC44Mi0xNDAuNzkgMTI3LjM4Qzk2LjcxIDM3Ni44OSA0OCAzMTcuMTEgNDggMjUwLjNWMjA4YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0MC4xNmMwIDg5LjY0IDYzLjk3IDE2OS41NSAxNTIgMTgxLjY5VjQ2NEg5NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNTZ2LTMzLjc3QzI4NS43MSA0MTguNDcgMzUyIDM0NC45IDM1MiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2ek0xNzYgMzUyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThIMjcydi0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEgyNzJ2LTMyaC04NS4zM2MtNS44OSAwLTEwLjY3LTMuNTgtMTAuNjctOHYtMTZjMC00LjQyIDQuNzgtOCAxMC42Ny04SDI3MmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2UzgwIDQyLjk4IDgwIDk2djE2MGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjgyIDQ1OC4xbC0xNTcuOC0xMjEuOTZDNDg4LjYxIDMxMi4xMyA0OTYgMjg1LjAxIDQ5NiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCAxNy45Mi0zLjk2IDM0LjgtMTAuNzIgNTAuMmwtMjYuNTUtMjAuNTJjMy4xLTkuNCA1LjI4LTE5LjIyIDUuMjgtMjkuNjdWOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZ2NDUuMzZMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM2IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDEtNi45NyA0LjE2LTE3LjAyLTIuODItMjIuNDV6TTQwMCA0NjRoLTU2di0zMy43N2MxMS42Ni0xLjYgMjIuODUtNC41NCAzMy42Ny04LjMxbC01MC4xMS0zOC43M2MtNi43MS40LTEzLjQxLjg3LTIwLjM1LjItNTUuODUtNS40NS05OC43NC00OC42My0xMTEuMTgtMTAxLjg1TDE0NCAyNDEuMzF2Ni44NWMwIDg5LjY0IDYzLjk3IDE2OS41NSAxNTIgMTgxLjY5VjQ2NGgtNTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM1MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDM1MmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2Vjk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZTODAgNDIuOTggODAgOTZ2MTYwYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZ6bTE2MC0xNjBoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGMwIDc0LjgtNjQuNDkgMTM0LjgyLTE0MC43OSAxMjcuMzhDOTYuNzEgMzc2Ljg5IDQ4IDMxNy4xMSA0OCAyNTAuM1YyMDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djQwLjE2YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0SDk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC01NnYtMzMuNzdDMjg1LjcxIDQxOC40NyAzNTIgMzQ0LjkgMzUyIDI1NnYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3Jvc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDMyMGgxMnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZoMTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyVjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC02NGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MjI0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ6bTMwNCAxMjhoLTEuMjlDNDkzLjI0IDQxMy45OSA1MTIgMzY5LjIgNTEyIDMyMGMwLTEwNS44OC04Ni4xMi0xOTItMTkyLTE5MnY2NGM3MC41OCAwIDEyOCA1Ny40MiAxMjggMTI4cy01Ny40MiAxMjgtMTI4IDEyOEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OCAwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTYgMC0yNi41MS0yMS40OS00OC00OC00OHptLTM2MC0zMmgyMDhjNC40MiAwIDgtMy41OCA4LTh2LTE2YzAtNC40Mi0zLjU4LTgtOC04SDEwNGMtNC40MiAwLTggMy41OC04IDh2MTZjMCA0LjQyIDMuNTggOCA4IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pbnVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6TTEyNCAyOTZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDI2NGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTZjMCA2LjYtNS40IDEyLTEyIDEySDEyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWludXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNOTIgMjk2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmgyNjRjNi42IDAgMTIgNS40IDEyIDEydjU2YzAgNi42LTUuNCAxMi0xMiAxMkg5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXR0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDQxNkg0OGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMjBjOC44IDAgMTYtNy4yIDE2LTE2di02NGMwLTguOC03LjItMTYtMTYtMTZ6bTU3LTIwOS4xYy0yNy4yLTIyLjYtNjcuNS0xOS05MC4xIDguMmwtMjAuOSAyNS0yOS42LTEyOC40Yy0xOC03Ny41LTk1LjQtMTI1LjktMTcyLjgtMTA4QzM0LjIgMjEuNi0xNC4yIDk4LjkgMy43IDE3Ni40TDUxLjYgMzg0aDMwOWw3Mi41LTg3YzIyLjctMjcuMiAxOS02Ny41LTguMS05MC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2JpbGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyMjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2MCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMTItMTA4YzAgNi42LTUuNCAxMi0xMiAxMkg2MGMtNi42IDAtMTItNS40LTEyLTEyVjYwYzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjMxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjI0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNjAgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAyODhoLTE2di04OGMwLTQuNDItMy41OC04LTgtOGgtMTMuNThjLTQuNzQgMC05LjM3IDEuNC0xMy4zMSA0LjAzbC0xNS4zMyAxMC4yMmE3Ljk5NCA3Ljk5NCAwIDAgMC0yLjIyIDExLjA5bDguODggMTMuMzFhNy45OTQgNy45OTQgMCAwIDAgMTEuMDkgMi4yMmwuNDctLjMxVjI4OGgtMTZjLTQuNDIgMC04IDMuNTgtOCA4djE2YzAgNC40MiAzLjU4IDggOCA4aDY0YzQuNDIgMCA4LTMuNTggOC04di0xNmMwLTQuNDItMy41OC04LTgtOHpNNjA4IDY0SDMyQzE0LjMzIDY0IDAgNzguMzMgMCA5NnYzMjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek00OCA0MDB2LTY0YzM1LjM1IDAgNjQgMjguNjUgNjQgNjRINDh6bTAtMjI0di02NGg2NGMwIDM1LjM1LTI4LjY1IDY0LTY0IDY0em0yNzIgMTkyYy01My4wMiAwLTk2LTUwLjE1LTk2LTExMiAwLTYxLjg2IDQyLjk4LTExMiA5Ni0xMTJzOTYgNTAuMTQgOTYgMTEyYzAgNjEuODctNDMgMTEyLTk2IDExMnptMjcyIDMyaC02NGMwLTM1LjM1IDI4LjY1LTY0IDY0LTY0djY0em0wLTIyNGMtMzUuMzUgMC02NC0yOC42NS02NC02NGg2NHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsV2F2ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjEuMTYgNTQuNDZDNTgyLjM3IDM4LjE5IDU0My41NSAzMiA1MDQuNzUgMzJjLTEyMy4xNy0uMDEtMjQ2LjMzIDYyLjM0LTM2OS41IDYyLjM0LTMwLjg5IDAtNjEuNzYtMy45Mi05Mi42NS0xMy43Mi0zLjQ3LTEuMS02Ljk1LTEuNjItMTAuMzUtMS42MkMxNS4wNCA3OSAwIDkyLjMyIDAgMTEwLjgxdjMxNy4yNmMwIDEyLjYzIDcuMjMgMjQuNiAxOC44NCAyOS40NkM1Ny42MyA0NzMuODEgOTYuNDUgNDgwIDEzNS4yNSA0ODBjMTIzLjE3IDAgMjQ2LjM0LTYyLjM1IDM2OS41MS02Mi4zNSAzMC44OSAwIDYxLjc2IDMuOTIgOTIuNjUgMTMuNzIgMy40NyAxLjEgNi45NSAxLjYyIDEwLjM1IDEuNjIgMTcuMjEgMCAzMi4yNS0xMy4zMiAzMi4yNS0zMS44MVY4My45M2MtLjAxLTEyLjY0LTcuMjQtMjQuNi0xOC44NS0yOS40N3pNMzIwIDM1MmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbFdhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIxLjE2IDU0LjQ2QzU4Mi4zNyAzOC4xOSA1NDMuNTUgMzIgNTA0Ljc1IDMyYy0xMjMuMTctLjAxLTI0Ni4zMyA2Mi4zNC0zNjkuNSA2Mi4zNC0zMC44OSAwLTYxLjc2LTMuOTItOTIuNjUtMTMuNzItMy40Ny0xLjEtNi45NS0xLjYyLTEwLjM1LTEuNjJDMTUuMDQgNzkgMCA5Mi4zMiAwIDExMC44MXYzMTcuMjZjMCAxMi42MyA3LjIzIDI0LjYgMTguODQgMjkuNDZDNTcuNjMgNDczLjgxIDk2LjQ1IDQ4MCAxMzUuMjUgNDgwYzEyMy4xNyAwIDI0Ni4zNC02Mi4zNSAzNjkuNTEtNjIuMzUgMzAuODkgMCA2MS43NiAzLjkyIDkyLjY1IDEzLjcyIDMuNDcgMS4xIDYuOTUgMS42MiAxMC4zNSAxLjYyIDE3LjIxIDAgMzIuMjUtMTMuMzIgMzIuMjUtMzEuODFWODMuOTNjLS4wMS0xMi42NC03LjI0LTI0LjYtMTguODUtMjkuNDd6TTQ4IDEzMi4yMmMyMC4xMiA1LjA0IDQxLjEyIDcuNTcgNjIuNzIgOC45M0MxMDQuODQgMTcwLjU0IDc5IDE5Mi42OSA0OCAxOTIuNjl2LTYwLjQ3em0wIDI4NXYtNDcuNzhjMzQuMzcgMCA2Mi4xOCAyNy4yNyA2My43MSA2MS40LTIyLjUzLTEuODEtNDMuNTktNi4zMS02My43MS0xMy42MnpNMzIwIDM1MmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6bTI3MiAyNy43OGMtMTcuNTItNC4zOS0zNS43MS02Ljg1LTU0LjMyLTguNDQgNS44Ny0yNi4wOCAyNy41LTQ1Ljg4IDU0LjMyLTQ5LjI4djU3Ljcyem0wLTIzNi4xMWMtMzAuODktMy45MS01NC44Ni0yOS43LTU1LjgxLTYxLjU1IDE5LjU0IDIuMTcgMzguMDkgNi4yMyA1NS44MSAxMi42NnY0OC44OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNNDggNDAwdi02NGMzNS4zNSAwIDY0IDI4LjY1IDY0IDY0SDQ4em0wLTIyNHYtNjRoNjRjMCAzNS4zNS0yOC42NSA2NC02NCA2NHptMjcyIDE3NmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6bTI3MiA0OGgtNjRjMC0zNS4zNSAyOC42NS02NCA2NC02NHY2NHptMC0yMjRjLTM1LjM1IDAtNjQtMjguNjUtNjQtNjRoNjR2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5Q2hlY2tBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA4IDMySDMyQzE0LjMzIDMyIDAgNDYuMzMgMCA2NHYzODRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xNzYgMzI3Ljg4VjM0NGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0xNi4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMTUyYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDUgNDQuNDQtNDIuNjcgNDUuMDd6TTQxNiAzMTJjMCA0LjQyLTMuNTggOC04IDhIMjk2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTEyYzQuNDIgMCA4IDMuNTggOCA4djE2em0xNjAgMGMwIDQuNDItMy41OCA4LTggOGgtODBjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNnptMC05NmMwIDQuNDItMy41OCA4LTggOEgyOTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgyNzJjNC40MiAwIDggMy41OCA4IDh2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0NDhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxMjhIMHYzMjB6bTQ0OC0yMDhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoOTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MzJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJ6bTAgMTIwYzAtNC40MiAzLjU4LTggOC04aDExMmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg0NTZjLTQuNDIgMC04LTMuNTgtOC04di0xNnpNNjQgMjY0YzAtNC40MiAzLjU4LTggOC04aDMwNGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2em0wIDk2YzAtNC40MiAzLjU4LTggOC04aDE3NmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2ek02MjQgMzJIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2NDhoNjQwVjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb251bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzNTJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0tNzguODYtMzQ3LjI2YTMxLjk3IDMxLjk3IDAgMCAwLTkuMjEtMTkuNDRMMjAzLjMxIDQuNjljLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTc2LjYgNzYuNjFhMzEuOTcgMzEuOTcgMCAwIDAtOS4yMSAxOS40NEw2NCA0MTZoMjU2bC0zMC44Ni0zMTUuMjZ6TTI0MCAzMDcuMmMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTcwLjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoNzAuNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODMuMjExIDUxMmM3OC45NjIgMCAxNTEuMDc5LTM1LjkyNSAxOTguODU3LTk0Ljc5MiA3LjA2OC04LjcwOC0uNjM5LTIxLjQzLTExLjU2Mi0xOS4zNS0xMjQuMjAzIDIzLjY1NC0yMzguMjYyLTcxLjU3Ni0yMzguMjYyLTE5Ni45NTQgMC03Mi4yMjIgMzguNjYyLTEzOC42MzUgMTAxLjQ5OC0xNzQuMzk0IDkuNjg2LTUuNTEyIDcuMjUtMjAuMTk3LTMuNzU2LTIyLjIzQTI1OC4xNTYgMjU4LjE1NiAwIDAgMCAyODMuMjExIDBjLTE0MS4zMDkgMC0yNTYgMTE0LjUxMS0yNTYgMjU2IDAgMTQxLjMwOSAxMTQuNTExIDI1NiAyNTYgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3J0YXJQZXN0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjU0IDYwLjkxYzE3LjIyLTE3LjIyIDEyLjUxLTQ2LjI1LTkuMjctNTcuMTRhMzUuNjk2IDM1LjY5NiAwIDAgMC0zNy4zNyAzLjM3TDI1MS4wOSAxNjBoMTUxLjM3bDk5LjA4LTk5LjA5ek00OTYgMTkySDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmMwIDgwLjk4IDUwLjIgMTUwLjExIDEyMS4xMyAxNzguMzItMTIuNzYgMTYuODctMjEuNzIgMzYuOC0yNC45NSA1OC42OS0xLjQ2IDkuOTIgNi4wNCAxOC45OCAxNi4wNyAxOC45OGgyMjMuNWMxMC4wMyAwIDE3LjUzLTkuMDYgMTYuMDctMTguOTgtMy4yMi0yMS44OS0xMi4xOC00MS44Mi0yNC45NS01OC42OUM0MjkuOCA0MDYuMTEgNDgwIDMzNi45OCA0ODAgMjU2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9zcXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDgwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxNjBIMHYzMjB6bTU3OS4xNi0xOTJjMTcuODYtMTcuMzkgMjguODQtMzcuMzQgMjguODQtNTguOTEgMC01Mi44Ni00MS43OS05My43OS04Ny45Mi0xMjIuOS00MS45NC0yNi40Ny04MC42My01Ny43Ny0xMTEuOTYtOTYuMjJMNDAwIDBsLTguMTIgOS45N2MtMzEuMzMgMzguNDUtNzAuMDEgNjkuNzYtMTExLjk2IDk2LjIyQzIzMy43OSAxMzUuMyAxOTIgMTc2LjIzIDE5MiAyMjkuMDljMCAyMS41NyAxMC45OCA0MS41MiAyOC44NCA1OC45MWgzNTguMzJ6TTYwOCAzMjBIMTkyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMydi02NGMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyczMyIDE0LjMzIDMyIDMydjY0aDY0di03MmMwLTQ4IDQ4LTcyIDQ4LTcyczQ4IDI0IDQ4IDcydjcyaDY0di02NGMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyczMyIDE0LjMzIDMyIDMydjY0aDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTY0IDBTMCAzMiAwIDk2djMyaDEyOFY5NmMwLTY0LTY0LTk2LTY0LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3RvcmN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMi45IDE5MmMtMTQuOS0uMS0yOS4xIDIuMy00Mi40IDYuOUw0MzcuNiAxNDRINTIwYzEzLjMgMCAyNC0xMC43IDI0LTI0Vjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0aC00NS4zYy02LjggMC0xMy4zIDIuOS0xNy44IDcuOWwtMzcuNSA0MS43LTIyLjgtMzhDMzkyLjIgNjguNCAzODQuNCA2NCAzNzYgNjRoLTgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDY2LjRsMTkuMiAzMkgyMjcuOWMtMTcuNy0yMy4xLTQ0LjktNDAtOTkuOS00MEg3Mi41QzU5IDEwNCA0Ny43IDExNSA0OCAxMjguNWMuMiAxMyAxMC45IDIzLjUgMjQgMjMuNWg1NmMyNC41IDAgMzguNyAxMC45IDQ3LjggMjQuOGwtMTEuMyAyMC41Yy0xMy0zLjktMjYuOS01LjctNDEuMy01LjJDNTUuOSAxOTQuNSAxLjYgMjQ5LjYgMCAzMTdjLTEuNiA3Mi4xIDU2LjMgMTMxIDEyOCAxMzEgNTkuNiAwIDEwOS43LTQwLjggMTI0LTk2aDg0LjJjMTMuNyAwIDI0LjYtMTEuNCAyNC0yNS4xLTIuMS00Ny4xIDE3LjUtOTMuNyA1Ni4yLTEyNWwxMi41IDIwLjhjLTI3LjYgMjMuNy00NS4xIDU4LjktNDQuOCA5OC4yLjUgNjkuNiA1Ny4yIDEyNi41IDEyNi44IDEyNy4xIDcxLjYuNyAxMjkuOC01Ny41IDEyOS4yLTEyOS4xLS43LTY5LjYtNTcuNi0xMjYuNC0xMjcuMi0xMjYuOXpNMTI4IDQwMGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MGM0LjIgMCA4LjQuMyAxMi41IDFMOTkgMzE2LjRjLTguOCAxNiAyLjggMzUuNiAyMSAzNS42aDgxLjNjLTEyLjQgMjguMi00MC42IDQ4LTczLjMgNDh6bTQ2My45LTc1LjZjLTIuMiA0MC42LTM1IDczLjQtNzUuNSA3NS41LTQ2LjEgMi41LTg0LjQtMzQuMy04NC40LTc5LjkgMC0yMS40IDguNC00MC44IDIyLjEtNTUuMWw0OS40IDgyLjRjNC41IDcuNiAxNC40IDEwIDIyIDUuNWwxMy43LTguMmM3LjYtNC41IDEwLTE0LjQgNS41LTIybC00OC42LTgwLjljNS4yLTEuMSAxMC41LTEuNiAxNS45LTEuNiA0NS42LS4xIDgyLjMgMzguMiA3OS45IDg0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vdW50YWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzNC45MiA0NjIuN2wtMjg4LTQ0OEMzNDEuMDMgNS41NCAzMzAuODkgMCAzMjAgMHMtMjEuMDMgNS41NC0yNi45MiAxNC43bC0yODggNDQ4YTMyLjAwMSAzMi4wMDEgMCAwIDAtMS4xNyAzMi42NEEzMi4wMDQgMzIuMDA0IDAgMCAwIDMyIDUxMmg1NzZjMTEuNzEgMCAyMi40OC02LjM5IDI4LjA5LTE2LjY3YTMxLjk4MyAzMS45ODMgMCAwIDAtMS4xNy0zMi42M3pNMzIwIDkxLjE4TDQwNS4zOSAyMjRIMzIwbC02NCA2NC0zOC4wNi0zOC4wNkwzMjAgOTEuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vdXNlUG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMTg5IDMyOS4xMjZIMTk2LjEwNWw1NS44MzEgMTM1Ljk5M2MzLjg4OSA5LjQyOC0uNTU1IDE5Ljk5OS05LjQ0NCAyMy45OTlsLTQ5LjE2NSAyMS40MjdjLTkuMTY1IDQtMTkuNDQzLS41NzEtMjMuMzMyLTkuNzE0bC01My4wNTMtMTI5LjEzNi04Ni42NjQgODkuMTM4QzE4LjcyOSA0NzIuNzEgMCA0NjMuNTU0IDAgNDQ3Ljk3N1YxOC4yOTlDMCAxLjg5OSAxOS45MjEtNi4wOTYgMzAuMjc3IDUuNDQzbDI4NC40MTIgMjkyLjU0MmMxMS40NzIgMTEuMTc5IDMuMDA3IDMxLjE0MS0xMi41IDMxLjE0MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzNTJhMTYwIDE2MCAwIDAgMCAxNjAgMTYwaDY0YTE2MCAxNjAgMCAwIDAgMTYwLTE2MFYyMjRIMHpNMTc2IDBoLTE2QTE2MCAxNjAgMCAwIDAgMCAxNjB2MzJoMTc2em00OCAwaC0xNnYxOTJoMTc2di0zMkExNjAgMTYwIDAgMCAwIDIyNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNdWdIb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI3LjEgMTQ2LjVjMS4zIDcuNyA4IDEzLjUgMTYgMTMuNWgxNi41YzkuOCAwIDE3LjYtOC41IDE2LjMtMTgtMy44LTI4LjItMTYuNC01NC4yLTM2LjYtNzQuNy0xNC40LTE0LjctMjMuNi0zMy4zLTI2LjQtNTMuNUMxMTEuOCA1LjkgMTA1IDAgOTYuOCAwSDgwLjRDNzAuNiAwIDYzIDguNSA2NC4xIDE4YzMuOSAzMS45IDE4IDYxLjMgNDAuNiA4NC40IDEyIDEyLjIgMTkuNyAyNy41IDIyLjQgNDQuMXptMTEyIDBjMS4zIDcuNyA4IDEzLjUgMTYgMTMuNWgxNi41YzkuOCAwIDE3LjYtOC41IDE2LjMtMTgtMy44LTI4LjItMTYuNC01NC4yLTM2LjYtNzQuNy0xNC40LTE0LjctMjMuNi0zMy4zLTI2LjQtNTMuNUMyMjMuOCA1LjkgMjE3IDAgMjA4LjggMGgtMTYuNGMtOS44IDAtMTcuNSA4LjUtMTYuMyAxOCAzLjkgMzEuOSAxOCA2MS4zIDQwLjYgODQuNCAxMiAxMi4yIDE5LjcgMjcuNSAyMi40IDQ0LjF6TTQwMCAxOTJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjE5MmMwIDUzIDQzIDk2IDk2IDk2aDE5MmM1MyAwIDk2LTQzIDk2LTk2aDE2YzYxLjggMCAxMTItNTAuMiAxMTItMTEycy01MC4yLTExMi0xMTItMTEyem0wIDE2MGgtMTZ2LTk2aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNdXNpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzAuMzggMS41MUwxNTAuNDEgOTZBMzIgMzIgMCAwIDAgMTI4IDEyNi41MXYyNjEuNDFBMTM5IDEzOSAwIDAgMCA5NiAzODRjLTUzIDAtOTYgMjguNjYtOTYgNjRzNDMgNjQgOTYgNjQgOTYtMjguNjYgOTYtNjRWMjE0LjMybDI1Ni03NXYxODQuNjFhMTM4LjQgMTM4LjQgMCAwIDAtMzItMy45M2MtNTMgMC05NiAyOC42Ni05NiA2NHM0MyA2NCA5NiA2NCA5Ni0yOC42NSA5Ni02NFYzMmEzMiAzMiAwIDAgMC00MS42Mi0zMC40OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV0d29ya1dpcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyNjR2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDM0NHYtNDBoNzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDIyNGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg3MnY0MEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTA0djQwSDY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE2MGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01NnYtNDBoMzA0djQwaC01NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxNjBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzNTJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNTZ2LTQwaDEwNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnpNMjU2IDEyOFY2NGgxMjh2NjRIMjU2em0tNjQgMzIwSDk2di02NGg5NnY2NHptMzUyIDBoLTk2di02NGg5NnY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV1dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCA5Ni41IDAgMTc2YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFY0NjhjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMlYzMTYuNGM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMTQ0IDgwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MiA2NEg4OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djhIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYyNzJjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2aDQ3MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4Vjg4YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNNTYgNDAwYTggOCAwIDAgMS04LThWMTQ0aDE2djI0OGE4IDggMCAwIDEtOCA4em0yMzYtMTZIMTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0yMDggMEgzNDhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bS0yMDgtOTZIMTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0yMDggMEgzNDhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTAtOTZIMTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDM2MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vdEVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMjMuODhsNTEuODctNjYuODFjNS4zNy03LjAyIDQuMDQtMTcuMDYtMi45Ny0yMi40M0w0MTUuNjEgMy4zYy03LjAyLTUuMzgtMTcuMDYtNC4wNC0yMi40NCAyLjk3TDMxMS4wOSAxMTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgyMDQuNTZsLTc0LjUzIDk2SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTUuNDlsLTUxLjg3IDY2LjgxYy01LjM3IDcuMDEtNC4wNCAxNy4wNSAyLjk3IDIyLjQzTDY0IDUwOC43YzcuMDIgNS4zOCAxNy4wNiA0LjA0IDIyLjQzLTIuOTdMMTY4LjUyIDQwMEg0MTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgyNDMuMDVsNzQuNTMtOTZINDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3Rlc01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDY0aC04MGMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDQwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptOTYgMzA0YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHY0OHptMC0xOTJjMCA0LjQtMy42IDgtOCA4SDEwNGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTc2YzQuNCAwIDggMy42IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2JqZWN0R3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDEyOFY5NmgyMGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjIwSDY0VjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIwdjMyMEgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTIwaDM4NHYyMGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTIwVjEyOHpNOTYgMjc2VjE0MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE2OGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjEzNmMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDEwOGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMzIwIDk2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMjM2Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi01Mmg3MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTcyaDg0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPYmplY3RVbmdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyMHYyNmE2IDYgMCAwIDEtNiA2SDZhNiA2IDAgMCAxLTYtNnYtNTJhNiA2IDAgMCAxIDYtNmgyNlY5Nkg2YTYgNiAwIDAgMS02LTZWMzhhNiA2IDAgMCAxIDYtNmg1MmE2IDYgMCAwIDEgNiA2djI2aDI4OFYzOGE2IDYgMCAwIDEgNi02aDUyYTYgNiAwIDAgMSA2IDZ2NTJhNiA2IDAgMCAxLTYgNmgtMjZ2MTkyaDI2YTYgNiAwIDAgMSA2IDZ2NTJhNiA2IDAgMCAxLTYgNmgtNTJhNiA2IDAgMCAxLTYtNnYtMjZINjR6bTQ4MC02NHYtMzJoMjZhNiA2IDAgMCAwIDYtNnYtNTJhNiA2IDAgMCAwLTYtNmgtNTJhNiA2IDAgMCAwLTYgNnYyNkg0MDh2NzJoOGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2NjRjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0aC02NGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di04SDE5MnY3MmgtMjZhNiA2IDAgMCAwLTYgNnY1MmE2IDYgMCAwIDAgNiA2aDUyYTYgNiAwIDAgMCA2LTZ2LTI2aDI4OHYyNmE2IDYgMCAwIDAgNiA2aDUyYTYgNiAwIDAgMCA2LTZ2LTUyYTYgNiAwIDAgMC02LTZoLTI2VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2lsQ2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyOS44IDE2MC4zMUw0MTYgMjI0bC01MC40OS0yNS4yNGE2NC4wNyA2NC4wNyAwIDAgMC0yOC42Mi02Ljc2SDI4MHYtNDhoNTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNTZ2NDhoLTU2TDM3LjcyIDE2Ni44NmEzMS45IDMxLjkgMCAwIDAtNS43OS0uNTNDMTQuNjcgMTY2LjMzIDAgMTgwLjM2IDAgMTk4LjM0djk0Ljk1YzAgMTUuNDYgMTEuMDYgMjguNzIgMjYuMjggMzEuNDhMOTYgMzM3LjQ2VjM4NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDI3NC42M2M4LjU1IDAgMTYuNzUtMy40MiAyMi43Ni05LjUxbDIxMi4yNi0yMTQuNzVjMS41LTEuNSAyLjM0LTMuNTQgMi4zNC01LjY2VjE2OGMuMDEtNS4zMS01LjA4LTkuMTUtMTAuMTktNy42OXpNOTYgMjg4LjY3bC00OC04Ljczdi02Mi40M2w0OCA4LjczdjYyLjQzem00NTMuMzMgODQuNjZjMCAyMy41NiAxOS4xIDQyLjY3IDQyLjY3IDQyLjY3czQyLjY3LTE5LjEgNDIuNjctNDIuNjdTNTkyIDI4OCA1OTIgMjg4cy00Mi42NyA2MS43Ny00Mi42NyA4NS4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYwLjYgNjAuOTRhMTAuNDMgMTAuNDMgMCAwIDAgMTQuNzYgMGwyMS41Ny0yMS41NmExMC40MyAxMC40MyAwIDAgMCAwLTE0Ljc2TDM3NS4zNSAzLjA2Yy00LjA4LTQuMDctMTAuNjgtNC4wNy0xNC43NiAwbC0yMS41NyAyMS41NmExMC40MyAxMC40MyAwIDAgMCAwIDE0Ljc2bDIxLjU4IDIxLjU2ek00MTIuMTEgMTkyYy0yNi42OSAwLTUxLjc3IDEwLjM5LTcwLjY0IDI5LjI1bC0yNC4yNSAyNC4yNWMtNi43OCA2Ljc3LTE1Ljc4IDEwLjUtMjUuMzggMTAuNUgyNDVjMTAuNTQtMjIuMSAxNC4xNy00OC4xMSA3LjczLTc1LjIzLTEwLjEtNDIuNTUtNDYuMzYtNzYuMTEtODkuNTItODMuMTktMzYuMTUtNS45My03MC45IDUuMDQtOTYuMDEgMjguNzgtNy4zNiA2Ljk2LTYuOTcgMTguODUgMS4xMiAyNC45M2wyNi4xNSAxOS42M2M1LjcyIDQuMyAxMy42NiA0LjMyIDE5LjItLjIxIDguNDUtNi45IDE5LjAyLTEwLjcxIDMwLjI3LTEwLjcxIDI2LjQ3IDAgNDguMDEgMjEuNTMgNDguMDEgNDhzLTIxLjU0IDQ4LTQ4LjAxIDQ4aC0zMS45Yy0xMS45NiAwLTE5Ljc0IDEyLjU4LTE0LjM5IDIzLjI4bDE2LjA5IDMyLjE3YzIuNTMgNS4wNiA3LjYgOC4xIDEzLjE3IDguNTVoMzMuMDNjMzUuMyAwIDY0LjAxIDI4LjcgNjQuMDEgNjRzLTI4LjcxIDY0LTY0LjAxIDY0Yy05Ni4wMiAwLTEyMi4zNS01NC4wMi0xNDUuMTUtOTIuMDMtNC41My03LjU1LTE0Ljc3LTMuNTgtMTQuNzkgNS4yMkMtLjA5IDQxNiA0MS4xMyA1MTIgMTU5Ljk0IDUxMmM3MC41OSAwIDEyOC4wMi01Ny40MiAxMjguMDItMTI4IDAtMjMuNDItNi43OC00NS4xLTE3LjgxLTY0aDIxLjY5YzI2LjY5IDAgNTEuNzctMTAuMzkgNzAuNjQtMjkuMjVsMjQuMjUtMjQuMjVjNi43OC02Ljc3IDE1Ljc4LTEwLjUgMjUuMzgtMTAuNSAxOS43OCAwIDM1Ljg4IDE2LjA5IDM1Ljg4IDM1Ljg4VjM5MmMwIDEzLjIzLTE4Ljc3IDI0LTMyLjAxIDI0LTM5LjQgMC02Ni42Ny0yNC4yNC04MS44Mi00Mi44OS00Ljc3LTUuODctMTQuMi0yLjU0LTE0LjIgNS4wMlY0MTZzMCA2NCA5Ni4wMiA2NGM0OC41NCAwIDk2LjAyLTM5LjQ3IDk2LjAyLTg4VjI5MS44OGMwLTU1LjA4LTQ0LjgtOTkuODgtOTkuODktOTkuODh6bTQyLjE4LTEyNC43M2MtODUuNTUgNjUuMTItMTY5LjA1IDIuNzUtMTcyLjU4LjA1LTYuMDItNC42Mi0xNC40NC00LjM4LTIwLjE0LjU1LTUuNzQgNC45Mi03LjI3IDEzLjE3LTMuNjYgMTkuOCAxLjYxIDIuOTUgNDAuMzcgNzIuMzQgMTE4LjggNzIuMzQgNzkuOTIgMCA5OC43OC0zMS4zNiAxMDEuNzUtMzcuNjYgMS4wMi0yLjEyIDEuNTMtNC40NyAxLjUzLTYuODNWODBjMC0xMy4yMi0xNS4xNC0yMC42OS0yNS43LTEyLjczelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMzJoLTMybC0xMy4yNS0xMy4yNUE2My45NyA2My45NyAwIDAgMCA1MTcuNDkgMEg0OTdjLTExLjE0IDAtMjIuMDggMi45MS0zMS43NSA4LjQzTDMxMiA5NmgtNTZDMTQ5Ljk2IDk2IDY0IDE4MS45NiA2NCAyODh2MS42MWMwIDMyLjc1LTE2IDYyLjE0LTM5LjU2IDg0Ljg5LTE4LjE5IDE3LjU4LTI4LjEgNDMuNjgtMjMuMTkgNzEuOCA2Ljc2IDM4LjggNDIuOSA2NS43IDgyLjI4IDY1LjdIMTkyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJzLTE0LjMzLTMyLTMyLTMySDgwYy04LjgzIDAtMTYtNy4xNy0xNi0xNnM3LjE3LTE2IDE2LTE2aDIyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNjRsMTQ5LjQ5LTgwLjVMNDQ4IDQxNmg4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMjguMjJsLTU1LjExLTExMC4yMUw1MjEuMTQgMTkySDU0NGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2VjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS05NiAxNmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNi0xNi03LjE2LTE2LTE2IDcuMTYtMTYgMTYtMTZ6bTMyIDk2aC0zNC45Nkw0MDcuMiAxOTguODRsLTEzLjc3LTI3LjU1TDUxMiAxMTJoNzcuMDVjLTYuNjIgMTguNTgtMjQuMjIgMzItNDUuMDUgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU91dGRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAwLjY5IDM2My4yOWMxMCAxMCAyNy4zMSAyLjkzIDI3LjMxLTExLjMxVjE2MGMwLTE0LjMyLTE3LjMzLTIxLjMxLTI3LjMxLTExLjMxbC05NiA5NmExNiAxNiAwIDAgMCAwIDIyLjYyek00MzIgNDE2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTMuMTctMTI4SDIwNC44M0ExMi44MiAxMi44MiAwIDAgMCAxOTIgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDIwNC44MyAzNTJoMjMwLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAyODh6bTAtMTI4SDIwNC44M0ExMi44MiAxMi44MiAwIDAgMCAxOTIgMTcyLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDIwNC44MyAyMjRoMjMwLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAyMTEuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAxNjB6TTQzMiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFnZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDY0SDY0YTY0IDY0IDAgMCAwLTY0IDY0djI1NmE2NCA2NCAwIDAgMCA2NCA2NGgzODRhNjQgNjQgMCAwIDAgNjQtNjRWMTI4YTY0IDY0IDAgMCAwLTY0LTY0ek0xNjAgMzY4SDgwYTE2IDE2IDAgMCAxLTE2LTE2di0xNmExNiAxNiAwIDAgMSAxNi0xNmg4MHptMTI4LTE2YTE2IDE2IDAgMCAxLTE2IDE2aC04MHYtNDhoODBhMTYgMTYgMCAwIDEgMTYgMTZ6bTE2MC0xMjhhMzIgMzIgMCAwIDEtMzIgMzJIOTZhMzIgMzIgMCAwIDEtMzItMzJ2LTY0YTMyIDMyIDAgMCAxIDMyLTMyaDMyMGEzMiAzMiAwIDAgMSAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFpbnRCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjcuMDIgMzA5LjM0Yy00MC4xMiAyLjU4LTc2LjUzIDE3Ljg2LTk3LjE5IDcyLjMtMi4zNSA2LjIxLTggOS45OC0xNC41OSA5Ljk4LTExLjExIDAtNDUuNDYtMjcuNjctNTUuMjUtMzQuMzVDMCA0MzkuNjIgMzcuOTMgNTEyIDEyOCA1MTJjNzUuODYgMCAxMjgtNDMuNzcgMTI4LTEyMC4xOSAwLTMuMTEtLjY1LTYuMDgtLjk3LTkuMTNsLTg4LjAxLTczLjM0ek00NTcuODkgMGMtMTUuMTYgMC0yOS4zNyA2LjcxLTQwLjIxIDE2LjQ1QzIxMy4yNyAxOTkuMDUgMTkyIDIwMy4zNCAxOTIgMjU3LjA5YzAgMTMuNyAzLjI1IDI2Ljc2IDguNzMgMzguN2w2My44MiA1My4xOGM3LjIxIDEuOCAxNC42NCAzLjAzIDIyLjM5IDMuMDMgNjIuMTEgMCA5OC4xMS00NS40NyAyMTEuMTYtMjU2LjQ2IDcuMzgtMTQuMzUgMTMuOS0yOS44NSAxMy45LTQ1Ljk5QzUxMiAyMC42NCA0ODYgMCA0NTcuODkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFpbnRSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDEyOFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzUyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ6bTMyLTY0djEyOGMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDI1NmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMydi0zMmgxNjBjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NnYtNjRjMC0zNS4zNS0yOC42NS02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFsZXR0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDQuMyA1QzEwNC45IDI0LjQgMjQuOCAxMDQuMyA1LjIgMjAzLjRjLTM3IDE4NyAxMzEuNyAzMjYuNCAyNTguOCAzMDYuNyA0MS4yLTYuNCA2MS40LTU0LjYgNDIuNS05MS43LTIzLjEtNDUuNCA5LjktOTguNCA2MC45LTk4LjRoNzkuN2MzNS44IDAgNjQuOC0yOS42IDY0LjktNjUuM0M1MTEuNSA5Ny4xIDM2OC4xLTI2LjkgMjA0LjMgNXpNOTYgMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMzItMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4LTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4IDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFsbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAyNTZoMzUyYzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZIMzg0djEyOGwtNjQtMzItNjQgMzJWMEgxNDRjLTguOCAwLTE2IDcuMi0xNiAxNnYyMjRjMCA4LjggNy4yIDE2IDE2IDE2em00ODAgMTI4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djY0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNmgtNDh2LTY0aDQ4em0tMzM2IDY0SDEyOHYtNjRoMTYwdjY0em0yMjQgMEgzNTJ2LTY0aDE2MHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFwZXJQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYgMy4yTDEyLjUgMjcwLjZjLTE4LjEgMTAuNC0xNS44IDM1LjYgMi4yIDQzLjJMMTIxIDM1OC40bDI4Ny4zLTI1My4yYzUuNS00LjkgMTMuMyAyLjYgOC42IDguM0wxNzYgNDA3djgwLjVjMCAyMy42IDI4LjUgMzIuOSA0Mi41IDE1LjhMMjgyIDQyNmwxMjQuNiA1Mi4yYzE0LjIgNiAzMC40LTIuOSAzMy0xOC4ybDcyLTQzMkM1MTUgNy44IDQ5My4zLTYuOCA0NzYgMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXBlcmNsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMuMjQ2IDQ2Ni4xNDJjLTU4LjQzLTYwLjI4OS01Ny4zNDEtMTU3LjUxMSAxLjM4Ni0yMTcuNTgxTDI1NC4zOTIgMzRjNDQuMzE2LTQ1LjMzMiAxMTYuMzUxLTQ1LjMzNiAxNjAuNjcxIDAgNDMuODkgNDQuODk0IDQzLjk0MyAxMTcuMzI5IDAgMTYyLjI3NkwyMzIuMjE0IDM4My4xMjhjLTI5Ljg1NSAzMC41MzctNzguNjMzIDMwLjExMS0xMDcuOTgyLS45OTgtMjguMjc1LTI5Ljk3LTI3LjM2OC03Ny40NzMgMS40NTItMTA2Ljk1M2wxNDMuNzQzLTE0Ni44MzVjNi4xODItNi4zMTQgMTYuMzEyLTYuNDIyIDIyLjYyNi0uMjQxbDIyLjg2MSAyMi4zNzljNi4zMTUgNi4xODIgNi40MjIgMTYuMzEyLjI0MSAyMi42MjZMMTcxLjQyNyAzMTkuOTI3Yy00LjkzMiA1LjA0NS01LjIzNiAxMy40MjgtLjY0OCAxOC4yOTIgNC4zNzIgNC42MzQgMTEuMjQ1IDQuNzExIDE1LjY4OC4xNjVsMTgyLjg0OS0xODYuODUxYzE5LjYxMy0yMC4wNjIgMTkuNjEzLTUyLjcyNS0uMDExLTcyLjc5OC0xOS4xODktMTkuNjI3LTQ5Ljk1Ny0xOS42MzctNjkuMTU0IDBMOTAuMzkgMjkzLjI5NWMtMzQuNzYzIDM1LjU2LTM1LjI5OSA5My4xMi0xLjE5MSAxMjguMzEzIDM0LjAxIDM1LjA5MyA4OC45ODUgMzUuMTM3IDEyMy4wNTguMjg2bDE3Mi4wNi0xNzUuOTk5YzYuMTc3LTYuMzE5IDE2LjMwNy02LjQzMyAyMi42MjYtLjI1NmwyMi44NzcgMjIuMzY0YzYuMzE5IDYuMTc3IDYuNDM0IDE2LjMwNy4yNTYgMjIuNjI2bC0xNzIuMDYgMTc1Ljk5OGMtNTkuNTc2IDYwLjkzOC0xNTUuOTQzIDYwLjIxNi0yMTQuNzctLjQ4NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFyYWNodXRlQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMS45IDE3NWMtOS4xLTc1LjYtNzguNC0xMzIuNC0xNTguMy0xNTguN0MzOTAgNTUuNyA0MTYgMTE2LjkgNDE2IDE5MmgyOC4xTDMyNy41IDMyMS41Yy0yLjUtLjYtNC44LTEuNS03LjUtMS41aC00OFYxOTJoMTEyQzM4NCA3Ni44IDMxNS4xIDAgMjU2IDBTMTI4IDc2LjggMTI4IDE5MmgxMTJ2MTI4aC00OGMtMi43IDAtNSAuOS03LjUgMS41TDY3LjkgMTkySDk2YzAtNzUuMSAyNi0xMzYuMyA2Mi40LTE3NS43Qzc4LjUgNDIuNyA5LjIgOTkuNS4xIDE3NWMtMS4xIDkuMSA2LjggMTcgMTYgMTdoOC43bDEzNi43IDE1MS45Yy0uNyAyLjYtMS42IDUuMi0xLjYgOC4xdjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMi45LS45LTUuNC0xLjYtOC4xTDQ4Ny4xIDE5Mmg4LjdjOS4zIDAgMTcuMi03LjggMTYuMS0xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFyYWdyYXBoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0OHYzMmExNiAxNiAwIDAgMS0xNiAxNmgtNDh2MzY4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlY5NmgtMzJ2MzY4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlYzNTJoLTMyYTE2MCAxNjAgMCAwIDEgMC0zMjBoMjQwYTE2IDE2IDAgMCAxIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI0MCAzMjBoLTQ4djQ4YzAgOC44LTcuMiAxNi0xNiAxNmgtMzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2aDk2YzUyLjkgMCA5NiA0My4xIDk2IDk2cy00My4xIDk2LTk2IDk2em0wLTEyOGgtNDh2NjRoNDhjMTcuNiAwIDMyLTE0LjQgMzItMzJzLTE0LjQtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhc3Nwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOS42MiAxNzZoMzkuMDljMS40OS0yNy4wMyA2LjU0LTUxLjM1IDE0LjIxLTcwLjQxLTI3LjcxIDEzLjI0LTQ4LjAyIDM5LjE5LTUzLjMgNzAuNDF6bTAgMzJjNS4yOSAzMS4yMiAyNS41OSA1Ny4xNyA1My4zIDcwLjQxLTcuNjgtMTkuMDYtMTIuNzItNDMuMzgtMTQuMjEtNzAuNDFoLTM5LjA5ek0yMjQgMjg2LjY5YzcuNjktNy40NSAyMC43Ny0zNC40MiAyMy40My03OC42OWgtNDYuODdjMi42NyA0NC4yNiAxNS43NSA3MS4yNCAyMy40NCA3OC42OXpNMjAwLjU3IDE3Nmg0Ni44N2MtMi42Ni00NC4yNi0xNS43NC03MS4yNC0yMy40My03OC42OS03LjcgNy40NS0yMC43OCAzNC40My0yMy40NCA3OC42OXptNjQuNTEgMTAyLjQxYzI3LjcxLTEzLjI0IDQ4LjAyLTM5LjE5IDUzLjMtNzAuNDFoLTM5LjA5Yy0xLjQ5IDI3LjAzLTYuNTMgNTEuMzUtMTQuMjEgNzAuNDF6TTQxNiAwSDY0QzI4LjY1IDAgMCAyOC42NSAwIDY0djM4NGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM1MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS04MCA0MTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDIyNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNnptLTExMi05NmMtNzAuNjkgMC0xMjgtNTcuMzEtMTI4LTEyOFMxNTMuMzEgNjQgMjI0IDY0czEyOCA1Ny4zMSAxMjggMTI4LTU3LjMxIDEyOC0xMjggMTI4em00MS4wOC0yMTQuNDFjNy42OCAxOS4wNiAxMi43MiA0My4zOCAxNC4yMSA3MC40MWgzOS4wOWMtNS4yOC0zMS4yMi0yNS41OS01Ny4xNy01My4zLTcwLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXN0YWZhcmlhbmlzbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQuNTQgMzQ3LjY3Yy0zMi43LTEyLjUyLTU3LjM2IDQuMjUtNzUuMzcgMTYuNDUtMTcuMDYgMTEuNTMtMjMuMjUgMTQuNDItMzEuNDEgMTEuMzYtOC4xMi0zLjA5LTEwLjgzLTkuMzgtMTUuODktMjkuMzgtMy4zMy0xMy4xNS03LjQ0LTI5LjMyLTE3Ljk1LTQyLjY1IDIuMjQtMi45MSA0LjQzLTUuNzkgNi4zOC04LjU3QzUwMC40NyAzMDQuNDUgNTEzLjcxIDMxMiA1MzIgMzEyYzMzLjk1IDAgNTAuODctMjUuNzggNjIuMDYtNDIuODMgMTAuNTktMTYuMTQgMTUtMjEuMTcgMjEuOTQtMjEuMTcgMTMuMjUgMCAyNC0xMC43NSAyNC0yNHMtMTAuNzUtMjQtMjQtMjRjLTMzLjk1IDAtNTAuODcgMjUuNzgtNjIuMDYgNDIuODMtMTAuNiAxNi4xNC0xNSAyMS4xNy0yMS45NCAyMS4xNy0xNy4zMSAwLTM3LjQ4LTYxLjQzLTk3LjI2LTEwMS45MWwxNy4yNS0zNC41QzQ4NS40MyAxMjUuNSA1MTIgOTcuOTggNTEyIDY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRzLTY0IDI4LjY1LTY0IDY0YzAgMTMuMDIgMy45NCAyNS4xIDEwLjYyIDM1LjIxbC0xOC4xNSAzNi4zYy0xNi45OC00LjYtMzUuNi03LjUxLTU2LjQ2LTcuNTFzLTM5LjQ5IDIuOTEtNTYuNDYgNy41MWwtMTguMTUtMzYuM0MyNTIuMDYgODkuMSAyNTYgNzcuMDIgMjU2IDY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRzLTY0IDI4LjY1LTY0IDY0YzAgMzMuOTggMjYuNTYgNjEuNSA2MC4wMiA2My42bDE3LjI1IDM0LjVDMTQ1LjY4IDIwMi40NCAxMjUuMTUgMjY0IDEwOCAyNjRjLTYuOTQgMC0xMS4zNC01LjAzLTIxLjk0LTIxLjE3Qzc0Ljg4IDIyNS43OCA1Ny45NiAyMDAgMjQgMjAwYy0xMy4yNSAwLTI0IDEwLjc1LTI0IDI0czEwLjc1IDI0IDI0IDI0YzYuOTQgMCAxMS4zNCA1LjAzIDIxLjk0IDIxLjE3QzU3LjEzIDI4Ni4yMiA3NC4wNSAzMTIgMTA4IDMxMmMxOC4yOSAwIDMxLjUzLTcuNTUgNDEuNy0xNy4xMSAxLjk1IDIuNzkgNC4xNCA1LjY2IDYuMzggOC41Ny0xMC41MSAxMy4zMy0xNC42MiAyOS41LTE3Ljk1IDQyLjY1LTUuMDYgMjAtNy43NyAyNi4yOC0xNS44OSAyOS4zOC04LjExIDMuMDYtMTQuMzMuMTctMzEuNDEtMTEuMzYtMTguMDMtMTIuMi00Mi43Mi0yOC45Mi03NS4zNy0xNi40NS0xMi4zOSA0LjcyLTE4LjU5IDE4LjU4LTEzLjg3IDMwLjk3IDQuNzIgMTIuNDEgMTguNjEgMTguNjEgMzAuOTcgMTMuODggOC4xNi0zLjA5IDE0LjM0LS4xOSAzMS4zOSAxMS4zNiAxMy41NSA5LjE2IDMwLjgzIDIwLjg2IDUyLjQyIDIwLjg0IDcuMTcgMCAxNC44My0xLjI4IDIyLjk3LTQuMzkgMzIuNjYtMTIuNDQgMzkuOTgtNDEuMzMgNDUuMzMtNjIuNDQgMi4yMS04LjcyIDMuOTktMTQuNDkgNS45NS0xOC44NyAxNi42MiAxMy42MSAzNi45NSAyNS44OCA2MS42NCAzNC4xNy05Ljk2IDM3LTMyLjE4IDkwLjgtNjAuMjYgOTAuOC0xMy4yNSAwLTI0IDEwLjc1LTI0IDI0czEwLjc1IDI0IDI0IDI0YzY2Ljc0IDAgOTcuMDUtODguNjMgMTA3LjQyLTEyOS4xNCA2LjY5LjYgMTMuNDIgMS4xNCAyMC41OCAxLjE0czEzLjg5LS41NCAyMC41OC0xLjE0QzM1MC45NSA0MjMuMzcgMzgxLjI2IDUxMiA0NDggNTEyYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjRzLTEwLjc1LTI0LTI0LTI0Yy0yNy45NCAwLTUwLjIxLTUzLjgxLTYwLjIyLTkwLjgxIDI0LjY5LTguMjkgNDUtMjAuNTYgNjEuNjItMzQuMTYgMS45NiA0LjM4IDMuNzQgMTAuMTUgNS45NSAxOC44NyA1LjM0IDIxLjExIDEyLjY3IDUwIDQ1LjMzIDYyLjQ0IDguMTQgMy4xMSAxNS44IDQuMzkgMjIuOTcgNC4zOSAyMS41OSAwIDM4Ljg3LTExLjY5IDUyLjQyLTIwLjg0IDE3LjA1LTExLjU1IDIzLjI4LTE0LjQ1IDMxLjM5LTExLjM2IDEyLjM5IDQuNzUgMjYuMjctMS40NyAzMC45Ny0xMy44OCA0LjcxLTEyLjQtMS40OS0yNi4yNi0xMy44OS0zMC45OHpNNDQ4IDQ4YzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnptLTI1NiAwYzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFzdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDE4NGMwLTMwLjg3OSAyNS4xMjItNTYgNTYtNTZoMTM2VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtODAuNjFDMjA0LjMwNiAxMi44OSAxODMuNjM3IDAgMTYwIDBzLTQ0LjMwNiAxMi44OS01NS4zOSAzMkgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnYzMzZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNFYxODR6bTMyLTE0NGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjRzLTEwLjc0NSAyNC0yNCAyNC0yNC0xMC43NDUtMjQtMjQgMTAuNzQ1LTI0IDI0LTI0em0xODQgMjQ4aDEwNHYyMDBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDE4NGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjE4NGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTM2djEwNGMwIDEzLjIgMTAuOCAyNCAyNCAyNHptMTA0LTM4LjA1OVYyNTZoLTk2di05Nmg2LjA1OWEyNCAyNCAwIDAgMSAxNi45NyA3LjAyOWw2NS45NDEgNjUuOTQxYTI0LjAwMiAyNC4wMDIgMCAwIDEgNy4wMyAxNi45NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhdXNlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bS0xNiAzMjhjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2MHptMTEyIDBjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDQ3OUg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNzljMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0zMDQtNDhWNzljMC0yNi41LTIxLjUtNDgtNDgtNDhoLTk2Yy0yNi41IDAtNDggMjEuNS00OCA0OHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMjI0Yy03OS40MSAwLTE5MiAxMjIuNzYtMTkyIDIwMC4yNSAwIDM0LjkgMjYuODEgNTUuNzUgNzEuNzQgNTUuNzUgNDguODQgMCA4MS4wOS0yNS4wOCAxMjAuMjYtMjUuMDggMzkuNTEgMCA3MS44NSAyNS4wOCAxMjAuMjYgMjUuMDggNDQuOTMgMCA3MS43NC0yMC44NSA3MS43NC01NS43NUM0NDggMzQ2Ljc2IDMzNS40MSAyMjQgMjU2IDIyNHptLTE0Ny4yOC0xMi42MWMtMTAuNC0zNC42NS00Mi40NC01Ny4wOS03MS41Ni01MC4xMy0yOS4xMiA2Ljk2LTQ0LjI5IDQwLjY5LTMzLjg5IDc1LjM0IDEwLjQgMzQuNjUgNDIuNDQgNTcuMDkgNzEuNTYgNTAuMTMgMjkuMTItNi45NiA0NC4yOS00MC42OSAzMy44OS03NS4zNHptODQuNzItMjAuNzhjMzAuOTQtOC4xNCA0Ni40Mi00OS45NCAzNC41OC05My4zNnMtNDYuNTItNzIuMDEtNzcuNDYtNjMuODctNDYuNDIgNDkuOTQtMzQuNTggOTMuMzZjMTEuODQgNDMuNDIgNDYuNTMgNzIuMDIgNzcuNDYgNjMuODd6bTI4MS4zOS0yOS4zNGMtMjkuMTItNi45Ni02MS4xNSAxNS40OC03MS41NiA1MC4xMy0xMC40IDM0LjY1IDQuNzcgNjguMzggMzMuODkgNzUuMzQgMjkuMTIgNi45NiA2MS4xNS0xNS40OCA3MS41Ni01MC4xMyAxMC40LTM0LjY1LTQuNzctNjguMzgtMzMuODktNzUuMzR6bS0xNTYuMjcgMjkuMzRjMzAuOTQgOC4xNCA2NS42Mi0yMC40NSA3Ny40Ni02My44NyAxMS44NC00My40Mi0zLjY0LTg1LjIxLTM0LjU4LTkzLjM2cy02NS42MiAyMC40NS03Ny40NiA2My44N2MtMTEuODQgNDMuNDIgMy42NCA4NS4yMiAzNC41OCA5My4zNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTg0IDI0OGMwIDMxLjkzLTguMiA2MS45Ny0yMi41NyA4OC4xN0wyODAgMjQwLjYzVjc0Ljk3Yzg2LjIzIDE1LjIxIDE1MiA5MC41IDE1MiAxODEuMDN6TTIxNiA0MzcuMDNjLTMzLjg2LTUuOTctNjQuNDktMjEuMi04OS4yOS00My4wMkwyMTYgMzIyLjU3djExNC40NnptNjQtMTE0LjQ2TDM2OS4yOSAzOTRjLTI0LjggMjEuODItNTUuNDMgMzcuMDUtODkuMjkgNDMuMDJWMzIyLjU3em0tNjQtMjQ3LjZ2MTY1LjY2TDg2LjU3IDM0NC4xN0M3Mi4yIDMxNy45NyA2NCAyODcuOTMgNjQgMjU2YzAtOTAuNTMgNjUuNzctMTY1LjgyIDE1Mi0xODEuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOTQgNzQuMTdsLTYwLjExLTYwLjExYy0xOC43NS0xOC43NS00OS4xNi0xOC43NS02Ny45MSAwbC01Ni41NSA1Ni41NSAxMjguMDIgMTI4LjAyIDU2LjU1LTU2LjU1YzE4Ljc1LTE4Ljc1IDE4Ljc1LTQ5LjE1IDAtNjcuOTF6bS0yNDYuOC0yMC41M2MtMTUuNjItMTUuNjItNDAuOTQtMTUuNjItNTYuNTYgMEw3NS44IDE3Mi40M2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42MmwyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDEwMS44Mi0xMDEuODIgMjIuNjMgMjIuNjJMOTMuOTUgMjkwLjAzQTMyNy4wMzggMzI3LjAzOCAwIDAgMCAuMTcgNDg1LjExbC0uMDMuMjNjLTEuNyAxNS4yOCAxMS4yMSAyOC4yIDI2LjQ5IDI2LjUxYTMyNy4wMiAzMjcuMDIgMCAwIDAgMTk1LjM0LTkzLjhsMTk2Ljc5LTE5Ni43OS04Mi43Ny04Mi43Ny04NC44NS04NC44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuRmFuY3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzkuMTggMjgyLjk0YTMyLjAwNSAzMi4wMDUgMCAwIDAtMjAuMjQgMjAuMjRMMCA0ODBsNC42OSA0LjY5IDkyLjg5LTkyLjg5Yy0uNjYtMi41Ni0xLjU3LTUuMDMtMS41Ny03LjggMC0xNy42NyAxNC4zMy0zMiAzMi0zMnMzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMmMtMi43NyAwLTUuMjQtLjkxLTcuOC0xLjU3bC05Mi44OSA5Mi44OUwzMiA1MTJsMTc2LjgyLTU4Ljk0YTMxLjk4MyAzMS45ODMgMCAwIDAgMjAuMjQtMjAuMjRsMzMuMDctODQuMDctOTguODgtOTguODgtODQuMDcgMzMuMDd6TTM2OS4yNSAyOC4zMkwxODYuMTQgMjI3LjgxbDk3Ljg1IDk3Ljg1IDE5OS40OS0xODMuMTFDNTY4LjQgNjcuNDggNDQzLjczLTU1Ljk0IDM2OS4yNSAyOC4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuTmliIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNi42IDEzOC43OWE2NC4wMDMgNjQuMDAzIDAgMCAwLTQzLjMxIDQxLjM1TDAgNDYwbDE0LjY5IDE0LjY5TDE2NC44IDMyNC41OGMtMi45OS02LjI2LTQuOC0xMy4xOC00LjgtMjAuNTggMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OGMtNy40IDAtMTQuMzItMS44MS0yMC41OC00LjhMMzcuMzEgNDk3LjMxIDUyIDUxMmwyNzkuODYtOTMuMjlhNjQuMDAzIDY0LjAwMyAwIDAgMCA0MS4zNS00My4zMUw0MTYgMjI0IDI4OCA5NmwtMTUxLjQgNDIuNzl6bTM2MS4zNC02NC42MmwtNjAuMTEtNjAuMTFjLTE4Ljc1LTE4Ljc1LTQ5LjE2LTE4Ljc1LTY3LjkxIDBsLTU2LjU1IDU2LjU1IDEyOC4wMiAxMjguMDIgNTYuNTUtNTYuNTVjMTguNzUtMTguNzUgMTguNzUtNDkuMTUgMC02Ny45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA0ODBINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDh6TTIzOC4xIDE3Ny45TDEwMi40IDMxMy42bC02LjMgNTcuMWMtLjggNy42IDUuNiAxNC4xIDEzLjMgMTMuM2w1Ny4xLTYuM0wzMDIuMiAyNDJjMi4zLTIuMyAyLjMtNi4xIDAtOC41TDI0Ni43IDE3OGMtMi41LTIuNC02LjMtMi40LTguNi0uMXpNMzQ1IDE2NS4xTDMxNC45IDEzNWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTIzLjEgMjMuMWMtMi4zIDIuMy0yLjMgNi4xIDAgOC41bDU1LjUgNTUuNWMyLjMgMi4zIDYuMSAyLjMgOC41IDBMMzQ1IDE5OWM5LjMtOS4zIDkuMy0yNC41IDAtMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43NCA5My4yNGwxMjguMDIgMTI4LjAyLTI3Ny45OSAyNzcuOTktMTE0LjE0IDEyLjZDMTEuMzUgNTEzLjU0LTEuNTYgNTAwLjYyLjE0IDQ4NS4zNGwxMi43LTExNC4yMiAyNzcuOS0yNzcuODh6bTIwNy4yLTE5LjA2bC02MC4xMS02MC4xMWMtMTguNzUtMTguNzUtNDkuMTYtMTguNzUtNjcuOTEgMGwtNTYuNTUgNTYuNTUgMTI4LjAyIDEyOC4wMiA1Ni41NS01Ni41NWMxOC43NS0xOC43NiAxOC43NS00OS4xNiAwLTY3LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5jaWxBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk3LjkgMTQyLjFsLTQ2LjEgNDYuMWMtNC43IDQuNy0xMi4zIDQuNy0xNyAwbC0xMTEtMTExYy00LjctNC43LTQuNy0xMi4zIDAtMTdsNDYuMS00Ni4xYzE4LjctMTguNyA0OS4xLTE4LjcgNjcuOSAwbDYwLjEgNjAuMWMxOC44IDE4LjcgMTguOCA0OS4xIDAgNjcuOXpNMjg0LjIgOTkuOEwyMS42IDM2Mi40LjQgNDgzLjljLTIuOSAxNi40IDExLjQgMzAuNiAyNy44IDI3LjhsMTIxLjUtMjEuMyAyNjIuNi0yNjIuNmM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTExMS0xMTFjLTQuOC00LjctMTIuNC00LjctMTcuMSAwek0xMjQuMSAzMzkuOWMtNS41LTUuNS01LjUtMTQuMyAwLTE5LjhsMTU0LTE1NGM1LjUtNS41IDE0LjMtNS41IDE5LjggMHM1LjUgMTQuMyAwIDE5LjhsLTE1NCAxNTRjLTUuNSA1LjUtMTQuMyA1LjUtMTkuOCAwek04OCA0MjRoNDh2MzYuM2wtNjQuNSAxMS4zLTMxLjEtMzEuMUw1MS43IDM3Nkg4OHY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuY2lsUnVsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA5LjQ2IDI0NC4wNGwxMzQuNTgtMTM0LjU2LTQ0LjEyLTQ0LjEyLTYxLjY4IDYxLjY4YTcuOTE5IDcuOTE5IDAgMCAxLTExLjIxIDBsLTExLjIxLTExLjIxYy0zLjEtMy4xLTMuMS04LjEyIDAtMTEuMjFsNjEuNjgtNjEuNjgtMzMuNjQtMzMuNjVDMTMxLjQ3LTMuMSAxMTEuMzktMy4xIDk5IDkuMjlMOS4yOSA5OWMtMTIuMzggMTIuMzktMTIuMzkgMzIuNDcgMCA0NC44NmwxMDAuMTcgMTAwLjE4em0zODguNDctMTE2LjhjMTguNzYtMTguNzYgMTguNzUtNDkuMTcgMC02Ny45M2wtNDUuMjUtNDUuMjVjLTE4Ljc2LTE4Ljc2LTQ5LjE4LTE4Ljc2LTY3Ljk1IDBsLTQ2LjAyIDQ2LjAxIDExMy4yIDExMy4yIDQ2LjAyLTQ2LjAzek0zMTYuMDggODIuNzFsLTI5NyAyOTYuOTZMLjMyIDQ4Ny4xMWMtMi41MyAxNC40OSAxMC4wOSAyNy4xMSAyNC41OSAyNC41NmwxMDcuNDUtMTguODRMNDI5LjI4IDE5NS45IDMxNi4wOCA4Mi43MXptMTg2LjYzIDI4NS40M2wtMzMuNjQtMzMuNjQtNjEuNjggNjEuNjhjLTMuMSAzLjEtOC4xMiAzLjEtMTEuMjEgMGwtMTEuMjEtMTEuMjFjLTMuMDktMy4xLTMuMDktOC4xMiAwLTExLjIxbDYxLjY4LTYxLjY4LTQ0LjE0LTQ0LjE0TDI2Ny45MyA0MDIuNWwxMDAuMjEgMTAwLjJjMTIuMzkgMTIuMzkgMzIuNDcgMTIuMzkgNDQuODYgMGw4OS43MS04OS43YzEyLjM5LTEyLjM5IDEyLjM5LTMyLjQ3IDAtNDQuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlb3BsZUFycm93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiwxMjhBNjQsNjQsMCwxLDAsMzIsNjQsNjQsNjQsMCwwLDAsOTYsMTI4Wm0wLDE3Ni4wOGE0NC4xMSw0NC4xMSwwLDAsMSwxMy42NC0zMkwxODEuNzcsMjA0YzEuNjUtMS41NSwzLjc3LTIuMzEsNS42MS0zLjU3QTYzLjkxLDYzLjkxLDAsMCwwLDEyOCwxNjBINjRBNjQsNjQsMCwwLDAsMCwyMjR2OTZhMzIsMzIsMCwwLDAsMzIsMzJWNDgwYTMyLDMyLDAsMCwwLDMyLDMyaDY0YTMyLDMyLDAsMCwwLDMyLTMyVjM4My42MWwtNTAuMzYtNDcuNTNBNDQuMDgsNDQuMDgsMCwwLDEsOTYsMzA0LjA4Wk00ODAsMTI4YTY0LDY0LDAsMSwwLTY0LTY0QTY0LDY0LDAsMCwwLDQ4MCwxMjhabTMyLDMySDQ0OGE2My45MSw2My45MSwwLDAsMC01OS4zOCw0MC40MmMxLjg0LDEuMjcsNCwyLDUuNjIsMy41OWw3Mi4xMiw2OC4wNmE0NC4zNyw0NC4zNywwLDAsMSwwLDY0TDQxNiwzODMuNjJWNDgwYTMyLDMyLDAsMCwwLDMyLDMyaDY0YTMyLDMyLDAsMCwwLDMyLTMyVjM1MmEzMiwzMiwwLDAsMCwzMi0zMlYyMjRBNjQsNjQsMCwwLDAsNTEyLDE2MFpNNDQ0LjQsMjk1LjM0bC03Mi4xMi02OC4wNkExMiwxMiwwLDAsMCwzNTIsMjM2djM2SDIyNFYyMzZhMTIsMTIsMCwwLDAtMjAuMjgtOC43M0wxMzEuNiwyOTUuMzRhMTIuNCwxMi40LDAsMCwwLDAsMTcuNDdsNzIuMTIsNjguMDdBMTIsMTIsMCwwLDAsMjI0LDM3Mi4xNFYzMzZIMzUydjM2LjE0YTEyLDEyLDAsMCwwLDIwLjI4LDguNzRsNzIuMTItNjguMDdBMTIuNCwxMi40LDAsMCwwLDQ0NC40LDI5NS4zNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVvcGxlQ2FycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzE1NC41IDAgMTI4IDAgODAgMjEuNSA4MCA0OHMyMS41IDQ4IDQ4IDQ4em0zODQgMGMyNi41IDAgNDgtMjEuNSA0OC00OFM1MzguNSAwIDUxMiAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTEyNS43IDM3Mi4xbC00NC0xMTAtNDEuMSA0Ni40LTIgMTguMiAyNy43IDY5LjJjNSAxMi41IDE3IDIwLjEgMjkuNyAyMC4xIDQgMCA4LS43IDExLjktMi4zIDE2LjQtNi42IDI0LjQtMjUuMiAxNy44LTQxLjZ6bS0zNC4yLTIwOS44TDU4NSAxNzguMWMtNC42LTIwLTE4LjYtMzYuOC0zNy41LTQ0LjktMTguNS04LTM5LTYuNy01Ni4xIDMuMy0yMi43IDEzLjQtMzkuNyAzNC41LTQ4LjEgNTkuNEw0MzIgMjI5LjggNDE2IDI0MHYtOTZjMC04LjgtNy4yLTE2LTE2LTE2SDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2djk2bC0xNi4xLTEwLjItMTEuMy0zMy45Yy04LjMtMjUtMjUuNC00Ni00OC4xLTU5LjQtMTcuMi0xMC0zNy42LTExLjMtNTYuMS0zLjMtMTguOSA4LjEtMzIuOSAyNC45LTM3LjUgNDQuOWwtMTguNCA4MC4yYy00LjYgMjAgLjcgNDEuMiAxNC40IDU2LjdsNjcuMiA3NS45IDEwLjEgOTIuNkMxMzAgNDk5LjggMTQzLjggNTEyIDE2MCA1MTJjMS4yIDAgMi4zLS4xIDMuNS0uMiAxNy42LTEuOSAzMC4yLTE3LjcgMjguMy0zNS4zbC0xMC4xLTkyLjhjLTEuNS0xMy02LjktMjUuMS0xNS42LTM1bC00My4zLTQ5IDE3LjYtNzAuMyA2LjggMjAuNGM0LjEgMTIuNSAxMS45IDIzLjQgMjQuNSAzMi42bDUxLjEgMzIuNWM0LjYgMi45IDEyLjEgNC42IDE3LjIgNWgxNjBjNS4xLS40IDEyLjYtMi4xIDE3LjItNWw1MS4xLTMyLjVjMTIuNi05LjIgMjAuNC0yMCAyNC41LTMyLjZsNi44LTIwLjQgMTcuNiA3MC4zLTQzLjMgNDljLTguNyA5LjktMTQuMSAyMi0xNS42IDM1bC0xMC4xIDkyLjhjLTEuOSAxNy42IDEwLjggMzMuNCAyOC4zIDM1LjMgMS4yLjEgMi4zLjIgMy41LjIgMTYuMSAwIDMwLTEyLjEgMzEuOC0yOC41bDEwLjEtOTIuNiA2Ny4yLTc1LjljMTMuNi0xNS41IDE5LTM2LjcgMTQuNC01Ni43ek00Ni4zIDM1OC4xbC00NCAxMTBjLTYuNiAxNi40IDEuNCAzNSAxNy44IDQxLjYgMTYuOCA2LjYgMzUuMS0xLjcgNDEuNi0xNy44bDI3LjctNjkuMi0yLTE4LjItNDEuMS00Ni40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXBwZXJIb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMwLjY3IDI2My4xMlYxNzMuNGwtNTIuNzUtMjQuMjJDMjE5LjQ0IDIxOC43NiAxOTcuNTggNDAwIDU2IDQwMGE1NiA1NiAwIDAgMCAwIDExMmMyMTIuNjQgMCAzNzAuNjUtMTIyLjg3IDQxOS4xOC0yMTAuMzRsLTM3LjA1LTM4LjU0em0xMzEuMDktMTI4LjM3QzQ5My45MiA3NC45MSA0NzcuMTggMjYuNDggNDU4LjYyIDNhOCA4IDAgMCAwLTExLjkzLS41OWwtMjIuOSAyM2E4LjA2IDguMDYgMCAwIDAtLjg5IDEwLjIzYzYuODYgMTAuMzYgMTcuMDUgMzUuMS0xLjQgNzIuMzJBMTQyLjg1IDE0Mi44NSAwIDAgMCAzNjQuMzQgOTZjLTI4IDAtNTQgOC41NC03Ni4zNCAyMi41OWw3NC42NyAzNC4yOXY3OC4yNGg4OS4wOUw1MDYuNDQgMjg4YzMuMjYtMTIuNjIgNS41Ni0yNS42MyA1LjU2LTM5LjMxYTE1NCAxNTQgMCAwIDAtNTAuMjQtMTEzLjk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAyMjRjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTMTczLjkgMCAxMTIgMCAwIDUwLjEgMCAxMTJzNTAuMSAxMTIgMTEyIDExMnptMC0xNjBjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDgtNDgtMjEuNS00OC00OCAyMS41LTQ4IDQ4LTQ4em0yMjQgMjI0Yy02MS45IDAtMTEyIDUwLjEtMTEyIDExMnM1MC4xIDExMiAxMTIgMTEyIDExMi01MC4xIDExMi0xMTItNTAuMS0xMTItMTEyLTExMnptMCAxNjBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4ek0zOTIuMy4ybDMxLjYtLjFjMTkuNC0uMSAzMC45IDIxLjggMTkuNyAzNy44TDc3LjQgNTAxLjZhMjMuOTUgMjMuOTUgMCAwIDEtMTkuNiAxMC4ybC0zMy40LjFjLTE5LjUgMC0zMC45LTIxLjktMTkuNy0zNy44bDM2OC00NjMuN0MzNzcuMiA0IDM4NC41LjIgMzkyLjMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyY2VudGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDkuMjUgMTczLjI1YzI0Ljk5LTI0Ljk5IDI0Ljk5LTY1LjUyIDAtOTAuNTEtMjQuOTktMjQuOTktNjUuNTItMjQuOTktOTAuNTEgMC0yNC45OSAyNC45OS0yNC45OSA2NS41MiAwIDkwLjUxIDI1IDI1IDY1LjUyIDI1IDkwLjUxIDB6bTI1NiAxNjUuNDljLTI0Ljk5LTI0Ljk5LTY1LjUyLTI0Ljk5LTkwLjUxIDAtMjQuOTkgMjQuOTktMjQuOTkgNjUuNTIgMCA5MC41MSAyNC45OSAyNC45OSA2NS41MiAyNC45OSA5MC41MSAwIDI1LTI0Ljk5IDI1LTY1LjUxIDAtOTAuNTF6bS0xLjk0LTIzMS40M2wtMjIuNjItMjIuNjJjLTEyLjUtMTIuNS0zMi43Ni0xMi41LTQ1LjI1IDBMMjAuNjkgMzU5LjQ0Yy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1bDIyLjYyIDIyLjYyYzEyLjUgMTIuNSAzMi43NiAxMi41IDQ1LjI1IDBsMjc0Ljc1LTI3NC43NWMxMi41LTEyLjQ5IDEyLjUtMzIuNzUgMC00NS4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQm9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGgtNjR2MTc2em0zMi0yNzJoLTUwLjlsLTQ1LjItNDUuM0MxMTUuOCAxNjYuNiA5OS43IDE2MCA4Mi43IDE2MEg2NGMtMTcuMSAwLTMzLjIgNi43LTQ1LjMgMTguOEM2LjcgMTkwLjkgMCAyMDcgMCAyMjQuMUwuMiAzMjAgMCA0ODBjMCAxNy43IDE0LjMgMzIgMzEuOSAzMiAxNy42IDAgMzItMTQuMyAzMi0zMmwuMS0xMDAuN2MuOS41IDEuNiAxLjMgMi41IDEuN2wyOS4xIDQzdjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ2LTU2LjVjMC05LjktMi4zLTE5LjgtNi43LTI4LjZsLTQxLjItNjEuM1YyNTNsMjAuOSAyMC45YzkuMSA5LjEgMjEuMSAxNC4xIDMzLjkgMTQuMUgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJ6TTY0IDEyOGMyNi41IDAgNDgtMjEuNSA0OC00OFM5MC41IDMyIDY0IDMyIDE2IDUzLjUgMTYgODBzMjEuNSA0OCA0OCA0OHptMjI0LTk2bDMxLjUgMjIzLjEtMzAuOSAxNTQuNmMtNC4zIDIxLjYgMTMgMzguMyAzMS40IDM4LjMgMTUuMiAwIDI4LTkuMSAzMi4zLTMwLjQuOSAxNi45IDE0LjYgMzAuNCAzMS43IDMwLjQgMTcuNyAwIDMyLTE0LjMgMzItMzIgMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYwSDI4OHYzMnptLTk2IDB2MTYwaDY0VjBoLTMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNNTQ0IDBoLTMydjQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuMzkgMzYxLjhsLTExMi00OGEyNCAyNCAwIDAgMC0yOCA2LjlsLTQ5LjYgNjAuNkEzNzAuNjYgMzcwLjY2IDAgMCAxIDEzMC42IDIwNC4xMWw2MC42LTQ5LjZhMjMuOTQgMjMuOTQgMCAwIDAgNi45LTI4bC00OC0xMTJBMjQuMTYgMjQuMTYgMCAwIDAgMTIyLjYuNjFsLTEwNCAyNEEyNCAyNCAwIDAgMCAwIDQ4YzAgMjU2LjUgMjA3LjkgNDY0IDQ2NCA0NjRhMjQgMjQgMCAwIDAgMjMuNC0xOC42bDI0LTEwNGEyNC4yOSAyNC4yOSAwIDAgMC0xNC4wMS0yNy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OC4yIDM4MS40bC00OS42LTYwLjZjLTYuOC04LjMtMTguMi0xMS4xLTI4LTYuOWwtMTEyIDQ4Yy0xMC43IDQuNi0xNi41IDE2LjEtMTMuOSAyNy41bDI0IDEwNGMyLjUgMTAuOCAxMi4xIDE4LjYgMjMuNCAxOC42IDEwMC43IDAgMTkzLjctMzIuNCAyNjkuNy04Ni45bC04MC02MS44Yy0xMC45IDYuNS0yMi4xIDEyLjctMzMuNiAxOC4xem0zNjUuNiA3Ni43TDQ3NS4xIDMzNS41QzUzNy45IDI1Ni40IDU3NiAxNTYuOSA1NzYgNDhjMC0xMS4yLTcuNy0yMC45LTE4LjYtMjMuNGwtMTA0LTI0Yy0xMS4zLTIuNi0yMi45IDMuMy0yNy41IDEzLjlsLTQ4IDExMmMtNC4yIDkuOC0xLjQgMjEuMyA2LjkgMjhsNjAuNiA0OS42Yy0xMi4yIDI2LjEtMjcuOSA1MC4zLTQ2IDcyLjhMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRsNTg4LjQgNDU0LjdjNyA1LjQgMTcgNC4yIDIyLjUtMi44bDE5LjYtMjUuM2M1LjQtNi44IDQuMS0xNi45LTIuOS0yMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVNxdWFyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhBNDggNDggMCAwIDAgMCA4MHYzNTJhNDggNDggMCAwIDAgNDggNDhoMzUyYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjgwYTQ4IDQ4IDAgMCAwLTQ4LTQ4em0tMTYuMzkgMzA3LjM3bC0xNSA2NUExNSAxNSAwIDAgMSAzNTQgNDE2QzE5NCA0MTYgNjQgMjg2LjI5IDY0IDEyNmExNS43IDE1LjcgMCAwIDEgMTEuNjMtMTQuNjFsNjUtMTVBMTguMjMgMTguMjMgMCAwIDEgMTQ0IDk2YTE2LjI3IDE2LjI3IDAgMCAxIDEzLjc5IDkuMDlsMzAgNzBBMTcuOSAxNy45IDAgMCAxIDE4OSAxODFhMTcgMTcgMCAwIDEtNS41IDExLjYxbC0zNy44OSAzMWEyMzEuOTEgMjMxLjkxIDAgMCAwIDExMC43OCAxMTAuNzhsMzEtMzcuODlBMTcgMTcgMCAwIDEgMjk5IDI5MWExNy44NSAxNy44NSAwIDAgMSA1LjkxIDEuMjFsNzAgMzBBMTYuMjUgMTYuMjUgMCAwIDEgMzg0IDMzNmExNy40MSAxNy40MSAwIDAgMS0uMzkgMy4zN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek05NCA0MTZjLTcuMDMzIDAtMTMuMDU3LTQuODczLTE0LjYxNi0xMS42MjdsLTE0Ljk5OC02NWExNSAxNSAwIDAgMSA4LjcwNy0xNy4xNmw2OS45OTgtMjkuOTk5YTE1IDE1IDAgMCAxIDE3LjUxOCA0LjI4OWwzMC45OTcgMzcuODg1YzQ4Ljk0NC0yMi45NjMgODguMjk3LTYyLjg1OCAxMTAuNzgxLTExMC43OGwtMzcuODg2LTMwLjk5N2ExNS4wMDEgMTUuMDAxIDAgMCAxLTQuMjg5LTE3LjUxOGwzMC02OS45OThhMTUgMTUgMCAwIDEgMTcuMTYtOC43MDdsNjUgMTQuOTk4QTE0Ljk5NyAxNC45OTcgMCAwIDEgMzg0IDEyNmMwIDE2MC4yOTItMTI5Ljk0NSAyOTAtMjkwIDI5MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTcuMzMzIDUwNi45NjZjLTEyOS44NzQtMTI5Ljg3NC0xMjkuNjgxLTM0MC4yNTIgMC00NjkuOTMzIDUuNjk4LTUuNjk4IDE0LjUyNy02LjYzMiAyMS4yNjMtMi40MjJsNjQuODE3IDQwLjUxM2ExNy4xODcgMTcuMTg3IDAgMCAxIDYuODQ5IDIwLjk1OGwtMzIuNDA4IDgxLjAyMWExNy4xODggMTcuMTg4IDAgMCAxLTE3LjY2OSAxMC43MTlsLTU1LjgxLTUuNThjLTIxLjA1MSA1OC4yNjEtMjAuNjEyIDEyMi40NzEgMCAxNzkuNTE1bDU1LjgxMS01LjU4MWExNy4xODggMTcuMTg4IDAgMCAxIDE3LjY2OSAxMC43MTlsMzIuNDA4IDgxLjAyMmExNy4xODggMTcuMTg4IDAgMCAxLTYuODQ5IDIwLjk1OGwtNjQuODE3IDQwLjUxM2ExNy4xOSAxNy4xOSAwIDAgMS0yMS4yNjQtMi40MjJ6TTI0Ny4xMjYgOTUuNDczYzExLjgzMiAyMC4wNDcgMTEuODMyIDQ1LjAwOCAwIDY1LjA1NS0zLjk1IDYuNjkzLTEzLjEwOCA3Ljk1OS0xOC43MTggMi41ODFsLTUuOTc1LTUuNzI2Yy0zLjkxMS0zLjc0OC00Ljc5My05LjYyMi0yLjI2MS0xNC40MWEzMi4wNjMgMzIuMDYzIDAgMCAwIDAtMjkuOTQ1Yy0yLjUzMy00Ljc4OC0xLjY1LTEwLjY2MiAyLjI2MS0xNC40MWw1Ljk3NS01LjcyNmM1LjYxLTUuMzc4IDE0Ljc2OC00LjExMiAxOC43MTggMi41ODF6bTkxLjc4Ny05MS4xODdjNjAuMTQgNzEuNjA0IDYwLjA5MiAxNzUuODgyIDAgMjQ3LjQyOC00LjQ3NCA1LjMyNy0xMi41MyA1Ljc0Ni0xNy41NTIuOTMzbC01Ljc5OC01LjU1N2MtNC41Ni00LjM3MS00Ljk3Ny0xMS41MjktLjkzLTE2LjM3OSA0OS42ODctNTkuNTM4IDQ5LjY0Ni0xNDUuOTMzIDAtMjA1LjQyMi00LjA0Ny00Ljg1LTMuNjMxLTEyLjAwOC45My0xNi4zNzlsNS43OTgtNS41NTdjNS4wMjItNC44MTMgMTMuMDc4LTQuMzk0IDE3LjU1Mi45MzN6bS00NS45NzIgNDQuOTQxYzM2LjA1IDQ2LjMyMiAzNi4xMDggMTExLjE0OSAwIDE1Ny41NDYtNC4zOSA1LjY0MS0xMi42OTcgNi4yNTEtMTcuODU2IDEuMzA0bC01LjgxOC01LjU3OWMtNC40LTQuMjE5LTQuOTk4LTExLjA5NS0xLjI4NS0xNS45MzEgMjYuNTM2LTM0LjU2NCAyNi41MzQtODIuNTcyIDAtMTE3LjEzNC0zLjcxMy00LjgzNi0zLjExNS0xMS43MTEgMS4yODUtMTUuOTMxbDUuODE4LTUuNTc5YzUuMTU5LTQuOTQ3IDEzLjQ2Ni00LjMzNyAxNy44NTYgMS4zMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5My40IDI0LjZsLTEwNC0yNGMtMTEuMy0yLjYtMjIuOSAzLjMtMjcuNSAxMy45bC00OCAxMTJjLTQuMiA5LjgtMS40IDIxLjMgNi45IDI4bDYwLjYgNDkuNmMtMzYgNzYuNy05OC45IDE0MC41LTE3Ny4yIDE3Ny4ybC00OS42LTYwLjZjLTYuOC04LjMtMTguMi0xMS4xLTI4LTYuOWwtMTEyIDQ4QzMuOSAzNjYuNS0yIDM3OC4xLjYgMzg5LjRsMjQgMTA0QzI3LjEgNTA0LjIgMzYuNyA1MTIgNDggNTEyYzI1Ni4xIDAgNDY0LTIwNy41IDQ2NC00NjQgMC0xMS4yLTcuNy0yMC45LTE4LjYtMjMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvdG9WaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMEgxNjBhMzIgMzIgMCAwIDAtMzIgMzJ2OTZoMTYwVjY0aDE5MnYzMjBoMTI4YTMyIDMyIDAgMCAwIDMyLTMyVjMyYTMyIDMyIDAgMCAwLTMyLTMyek0yMzIgMTAzYTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTlWNzNhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0zNTIgMjA4YTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTl2LTMwYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptMC0xMDRhOSA5IDAgMCAxLTkgOWgtMzBhOSA5IDAgMCAxLTktOXYtMzBhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0wLTEwNGE5IDkgMCAwIDEtOSA5aC0zMGE5IDkgMCAwIDEtOS05VjczYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptLTE2OCA1N0gzMmEzMiAzMiAwIDAgMC0zMiAzMnYyODhhMzIgMzIgMCAwIDAgMzIgMzJoMzg0YTMyIDMyIDAgMCAwIDMyLTMyVjE5MmEzMiAzMiAwIDAgMC0zMi0zMnpNOTYgMjI0YTMyIDMyIDAgMSAxLTMyIDMyIDMyIDMyIDAgMCAxIDMyLTMyem0yODggMjI0SDY0di0zMmw2NC02NCAzMiAzMiAxMjgtMTI4IDk2IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWdneUJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYwIDIyNGgtMjkuNWMtOC44LTIwLTIxLjYtMzcuNy0zNy40LTUyLjVMNTEyIDk2aC0zMmMtMjkuNCAwLTU1LjQgMTMuNS03MyAzNC4zLTcuNi0xLjEtMTUuMS0yLjMtMjMtMi4zSDI1NmMtNzcuNCAwLTE0MS45IDU1LTE1Ni44IDEyOEg1NmMtMTQuOCAwLTI2LjUtMTMuNS0yMy41LTI4LjhDMzQuNyAyMTUuOCA0NS40IDIwOCA1NyAyMDhoMWMzLjMgMCA2LTIuNyA2LTZ2LTIwYzAtMy4zLTIuNy02LTYtNi0yOC41IDAtNTMuOSAyMC40LTU3LjUgNDguNkMtMy45IDI1OC44IDIyLjcgMjg4IDU2IDI4OGg0MGMwIDUyLjIgMjUuNCA5OC4xIDY0IDEyNy4zVjQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2di00OGgxMjh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnYtODAuN2MxMS44LTguOSAyMi4zLTE5LjQgMzEuMy0zMS4zSDU2MGM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNnptLTEyOCA2NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2ek0yNTYgOTZoMTI4YzUuNCAwIDEwLjcuNCAxNS45LjggMC0uMy4xLS41LjEtLjggMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyLjEuNSA0LjEuNiA2LjIgMTUuMi0zLjkgMzEtNi4yIDQ3LjQtNi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMzJDNTAuMSAzMiAwIDgyLjEgMCAxNDR2MjI0YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJWMTQ0YzAtNjEuOS01MC4xLTExMi0xMTItMTEyem00OCAyMjRINjRWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTEyem0xMzkuNy0yOS43Yy0zLjUtMy41LTkuNC0zLjEtMTIuMy44LTQ1LjMgNjIuNS00MC40IDE1MC4xIDE1LjkgMjA2LjQgNTYuMyA1Ni4zIDE0My45IDYxLjIgMjA2LjQgMTUuOSA0LTIuOSA0LjMtOC44LjgtMTIuM0wyOTkuNyAyMjYuM3ptMjI5LjgtMTljLTU2LjMtNTYuMy0xNDMuOS02MS4yLTIwNi40LTE1LjktNCAyLjktNC4zIDguOC0uOCAxMi4zbDIxMC44IDIxMC44YzMuNSAzLjUgOS40IDMuMSAxMi4zLS44IDQ1LjMtNjIuNiA0MC41LTE1MC4xLTE1LjktMjA2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpenphU2xpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU4Ljg3LjE1Yy0xNi4xNi0xLjUyLTMxLjIgOC40Mi0zNS4zMyAyNC4xMmwtMTQuODEgNTYuMjdjMTg3LjYyIDUuNDkgMzE0LjU0IDEzMC42MSAzMjIuNDggMzE3bDU2Ljk0LTE1Ljc4YzE1LjcyLTQuMzYgMjUuNDktMTkuNjggMjMuNjItMzUuOUM0OTAuODkgMTY1LjA4IDM0MC43OCAxNy4zMiAxNTguODcuMTV6bS01OC40NyAxMTJMLjU1IDQ5MS42NGExNi4yMSAxNi4yMSAwIDAgMCAyMCAxOS43NWwzNzktMTA1LjFjLTQuMjctMTc0Ljg5LTEyMy4wOC0yOTIuMTQtMjk5LjE1LTI5NC4xek0xMjggNDE2YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyem00OC0xNTJhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTEwNCAxMDRhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYWNlT2ZXb3JzaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyMC42MSAzNjYuNTVMNTEyIDMyMHYxOTJoMTEyYzguODQgMCAxNi03LjE2IDE2LTE2VjM5NS45NmEzMiAzMiAwIDAgMC0xOS4zOS0yOS40MXpNMCAzOTUuOTZWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDExMlYzMjBMMTkuMzkgMzY2LjU1QTMyIDMyIDAgMCAwIDAgMzk1Ljk2em00NjQuNDYtMTQ5LjI4TDQxNiAyMTcuNlYxMDIuNjNjMC04LjQ5LTMuMzctMTYuNjItOS4zOC0yMi42M0wzMzEuMzEgNC42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwyMzMuMzggODBjLTYgNi05LjM4IDE0LjE0LTkuMzggMjIuNjNWMjE3LjZsLTQ4LjQ2IDI5LjA4QTMxLjk5NyAzMS45OTcgMCAwIDAgMTYwIDI3NC4xMlY1MTJoOTZ2LTk2YzAtMzUuMzUgMjguNjYtNjQgNjQtNjRzNjQgMjguNjUgNjQgNjR2OTZoOTZWMjc0LjEyYzAtMTEuMjQtNS45LTIxLjY2LTE1LjU0LTI3LjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZUFycml2YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDQuODEgMjA1LjY2bDg4Ljc0IDgwYTYyLjYwNyA2Mi42MDcgMCAwIDAgMjUuNDcgMTMuOTNsMjg3LjYgNzguMzVjMjYuNDggNy4yMSA1NC41NiA4LjcyIDgxIDEuMzYgMjkuNjctOC4yNyA0My40NC0yMS4yMSA0Ny4yNS0zNS43MSAzLjgzLTE0LjUtMS43My0zMi43MS0yMy4zNy01NC45Ni0xOS4yOC0xOS44Mi00NC4zNS0zMi43OS03MC44My00MGwtOTcuNTEtMjYuNTZMMjgyLjggMzAuMjJjLTEuNTEtNS44MS01Ljk1LTEwLjM1LTExLjY2LTExLjkxTDIwNi4wNS41OGMtMTAuNTYtMi44OC0yMC45IDUuMzItMjAuNzEgMTYuNDRsNDcuOTIgMTY0LjIxLTEwMi4yLTI3Ljg0LTI3LjU5LTY3Ljg4Yy0xLjkzLTQuODktNi4wMS04LjU3LTExLjAyLTkuOTNMNTIuNzIgNjQuNzVjLTEwLjM0LTIuODItMjAuNTMgNS0yMC43MiAxNS44OGwuMjMgMTAxLjc4Yy4xOSA4LjkxIDYuMDMgMTcuMzQgMTIuNTggMjMuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lRGVwYXJ0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDYwOGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTgwLjU1IDM0MS4yN2M2LjI4IDYuODQgMTUuMSAxMC43MiAyNC4zMyAxMC43MWwxMzAuNTQtLjE4YTY1LjYyIDY1LjYyIDAgMCAwIDI5LjY0LTcuMTJsMjkwLjk2LTE0Ny42NWMyNi43NC0xMy41NyA1MC43MS0zMi45NCA2Ny4wMi01OC4zMSAxOC4zMS0yOC40OCAyMC4zLTQ5LjA5IDEzLjA3LTYzLjY1LTcuMjEtMTQuNTctMjQuNzQtMjUuMjctNTguMjUtMjcuNDUtMjkuODUtMS45NC01OS41NCA1LjkyLTg2LjI4IDE5LjQ4bC05OC41MSA0OS45OS0yMTguNy04Mi4wNmExNy43OTkgMTcuNzk5IDAgMCAwLTE4LTEuMTFMOTAuNjIgNjcuMjljLTEwLjY3IDUuNDEtMTMuMjUgMTkuNjUtNS4xNyAyOC41M2wxNTYuMjIgOTguMS0xMDMuMjEgNTIuMzgtNzIuMzUtMzYuNDdhMTcuODA0IDE3LjgwNCAwIDAgMC0xNi4wNy4wMkw5LjkxIDIzMC4yMmMtMTAuNDQgNS4zLTEzLjE5IDE5LjEyLTUuNTcgMjguMDhsNzYuMjEgODIuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIuNDgsMTQ3Ljg4LDY0LDI1NiwzMi40OCwzNjQuMTNBMTYsMTYsMCwwLDAsNDgsMzg0SDg4YTE2LDE2LDAsMCwwLDEyLjgtNi40MUwxNDQsMzIwSDI0Ni44NWwtNDksMTcxLjU5QTE2LDE2LDAsMCwwLDIxMy4yLDUxMmg2NS41YTE2LDE2LDAsMCwwLDEzLjg5LTguMDZsNjYuNi0xMTYuNTRMMzQuMzUsMTM2LjM0QTE1LjQ3LDE1LjQ3LDAsMCwwLDMyLjQ4LDE0Ny44OFpNNjMzLjgyLDQ1OC4wOSw0NTUuMTQsMzIwSDUxMmMzNS4zNCwwLDk2LTI4LjY2LDk2LTY0cy02MC42Ni02NC05Ni02NEgzOTcuN0wyOTIuNjEsOC4wNkMyOTAuMDYsMy42MSwyODMuODQsMCwyNzguNzEsMEgyMTMuMmExNiwxNiwwLDAsMC0xNS4zOCwyMC4zOWwzNi45NCwxMjkuMjlMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDVBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTQsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZBMTYsMTYsMCwwLDAsNjMzLjgyLDQ1OC4wOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDE5MkgzNjUuNzFMMjYwLjYxIDguMDZBMTYuMDE0IDE2LjAxNCAwIDAgMCAyNDYuNzEgMGgtNjUuNWMtMTAuNjMgMC0xOC4zIDEwLjE3LTE1LjM4IDIwLjM5TDIxNC44NiAxOTJIMTEybC00My4yLTU3LjZjLTMuMDItNC4wMy03Ljc3LTYuNC0xMi44LTYuNEgxNi4wMUM1LjYgMTI4LTIuMDQgMTM3Ljc4LjQ5IDE0Ny44OEwzMiAyNTYgLjQ5IDM2NC4xMkMtMi4wNCAzNzQuMjIgNS42IDM4NCAxNi4wMSAzODRINTZjNS4wNCAwIDkuNzgtMi4zNyAxMi44LTYuNEwxMTIgMzIwaDEwMi44NmwtNDkuMDMgMTcxLjZjLTIuOTIgMTAuMjIgNC43NSAyMC40IDE1LjM4IDIwLjRoNjUuNWM1Ljc0IDAgMTEuMDQtMy4wOCAxMy44OS04LjA2TDM2NS43MSAzMjBINDgwYzM1LjM1IDAgOTYtMjguNjUgOTYtNjRzLTYwLjY1LTY0LTk2LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGF5Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTExNS43IDI3MmwtMTc2IDEwMWMtMTUuOCA4LjgtMzUuNy0yLjUtMzUuNy0yMVYxNTJjMC0xOC40IDE5LjgtMjkuOCAzNS43LTIxbDE3NiAxMDdjMTYuNCA5LjIgMTYuNCAzMi45IDAgNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjQgMjE0LjdMNzIuNCA2LjZDNDMuOC0xMC4zIDAgNi4xIDAgNDcuOVY0NjRjMCAzNy41IDQwLjcgNjAuMSA3Mi40IDQxLjNsMzUyLTIwOGMzMS40LTE4LjUgMzEuNS02NC4xIDAtODIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1ZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAsMzJhMzIsMzIsMCwwLDAtNjQsMHY5Nmg2NFptNDgsMTI4SDE2QTE2LDE2LDAsMCwwLDAsMTc2djMyYTE2LDE2LDAsMCwwLDE2LDE2SDMydjMyQTE2MC4wNywxNjAuMDcsMCwwLDAsMTYwLDQxMi44VjUxMmg2NFY0MTIuOEExNjAuMDcsMTYwLjA3LDAsMCwwLDM1MiwyNTZWMjI0aDE2YTE2LDE2LDAsMCwwLDE2LTE2VjE3NkExNiwxNiwwLDAsMCwzNjgsMTYwWk0xMjgsMzJhMzIsMzIsMCwwLDAtNjQsMHY5Nmg2NFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xNDQgMjc2YzAgNi42LTUuNCAxMi0xMiAxMmgtOTJ2OTJjMCA2LjYtNS40IDEyLTEyIDEyaC01NmMtNi42IDAtMTItNS40LTEyLTEydi05MmgtOTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDkydi05MmMwLTYuNiA1LjQtMTIgMTItMTJoNTZjNi42IDAgMTIgNS40IDEyIDEydjkyaDkyYzYuNiAwIDEyIDUuNCAxMiAxMnY1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1c1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMzIgMjUyYzAgNi42LTUuNCAxMi0xMiAxMmgtOTJ2OTJjMCA2LjYtNS40IDEyLTEyIDEyaC01NmMtNi42IDAtMTItNS40LTEyLTEydi05Mkg5MmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoOTJ2LTkyYzAtNi42IDUuNC0xMiAxMi0xMmg1NmM2LjYgMCAxMiA1LjQgMTIgMTJ2OTJoOTJjNi42IDAgMTIgNS40IDEyIDEydjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhIMjcyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjE0NEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE0NHYxNDRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMwNGgxNDRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9kY2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNDI5IDQ4OC41NjNDMjYyLjI4NiA1MDcuNTczIDI0Mi44NTggNTEyIDIyNCA1MTJjLTE4Ljg1NyAwLTM4LjI4Ni00LjQyNy00My40MjgtMjMuNDM3QzE3Mi45MjcgNDYwLjEzNCAxNjAgMzg4Ljg5OCAxNjAgMzU1Ljc1YzAtMzUuMTU2IDMxLjE0Mi00My43NSA2NC00My43NXM2NCA4LjU5NCA2NCA0My43NWMwIDMyLjk0OS0xMi44NzEgMTA0LjE3OS0yMC41NzEgMTMyLjgxM3pNMTU2Ljg2NyAyODguNTU0Yy0xOC42OTMtMTguMzA4LTI5Ljk1OC00NC4xNzMtMjguNzg0LTcyLjU5OSAyLjA1NC00OS43MjQgNDIuMzk1LTg5Ljk1NiA5Mi4xMjQtOTEuODgxQzI3NC44NjIgMTIxLjk1OCAzMjAgMTY1LjgwNyAzMjAgMjIwYzAgMjYuODI3LTExLjA2NCA1MS4xMTYtMjguODY2IDY4LjU1Mi0yLjY3NSAyLjYyLTIuNDAxIDYuOTg2LjYyOCA5LjE4NyA5LjMxMiA2Ljc2NSAxNi40NiAxNS4zNDMgMjEuMjM0IDI1LjM2MyAxLjc0MSAzLjY1NCA2LjQ5NyA0LjY2IDkuNDQ5IDEuODkxIDI4LjgyNi0yNy4wNDMgNDYuNTUzLTY1Ljc4MyA0NS41MTEtMTA4LjU2NS0xLjg1NS03Ni4yMDYtNjMuNTk1LTEzOC4yMDgtMTM5Ljc5My0xNDAuMzY5QzE0Ni44NjkgNzMuNzUzIDgwIDEzOS4yMTUgODAgMjIwYzAgNDEuMzYxIDE3LjUzMiA3OC43IDQ1LjU1IDEwNC45ODkgMi45NTMgMi43NzEgNy43MTEgMS43NyA5LjQ1My0xLjg4NyA0Ljc3NC0xMC4wMjEgMTEuOTIzLTE4LjU5OCAyMS4yMzUtMjUuMzYzIDMuMDI5LTIuMiAzLjMwNC02LjU2Ni42MjktOS4xODV6TTIyNCAwQzEwMC4yMDQgMCAwIDEwMC4xODUgMCAyMjRjMCA4OS45OTIgNTIuNjAyIDE2NS42NDcgMTI1LjczOSAyMDEuNDA4IDQuMzMzIDIuMTE4IDkuMjY3LTEuNTQ0IDguNTM1LTYuMzEtMi4zODItMTUuNTEyLTQuMzQyLTMwLjk0Ni01LjQwNi00NC4zMzktLjE0Ni0xLjgzNi0xLjE0OS0zLjQ4Ni0yLjY3OC00LjUxMi00Ny40LTMxLjgwNi03OC41NjQtODYuMDE2LTc4LjE4Ny0xNDcuMzQ3LjU5Mi05Ni4yMzcgNzkuMjktMTc0LjY0OCAxNzUuNTI5LTE3NC44OTlDMzIwLjc5MyA0Ny43NDcgNDAwIDEyNi43OTcgNDAwIDIyNGMwIDYxLjkzMi0zMi4xNTggMTE2LjQ5LTgwLjY1IDE0Ny44NjctLjk5OSAxNC4wMzctMy4wNjkgMzAuNTg4LTUuNjI0IDQ3LjIzLS43MzIgNC43NjcgNC4yMDMgOC40MjkgOC41MzUgNi4zMUMzOTUuMjI3IDM4OS43MjcgNDQ4IDMxNC4xODcgNDQ4IDIyNCA0NDggMTAwLjIwNSAzNDcuODE1IDAgMjI0IDB6bTAgMTYwYy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjRzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvbGxIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0MzJWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4ek0xMTIgMTkyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTI4YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2SDExMnptMCA5NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyYzAtOC44NCA3LjE2LTE2IDE2LTE2aDIyNGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMmMwIDguODQtNy4xNiAxNi0xNiAxNkgxMTJ6bTAgOTZjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMmMwIDguODQtNy4xNiAxNi0xNiAxNmgtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTYwIDM2OGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2VjI0MGMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxMjh6bTk2IDBjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlYxNDRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MjI0em05NiAwYzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTY0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb29TdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDggMzM2aC01Ny43bDE3LjMtNjQuOWMyLTcuNi0zLjctMTUuMS0xMS42LTE1LjFoLTY4Yy02IDAtMTEuMSA0LjUtMTEuOSAxMC40bC0xNiAxMjBjLTEgNy4yIDQuNiAxMy42IDExLjkgMTMuNmg1OS4zbC0yMyA5Ny4yYy0xLjggNy42IDQgMTQuOCAxMS43IDE0LjggNC4yIDAgOC4yLTIuMiAxMC40LTZsODgtMTUyYzQuNi04LTEuMi0xOC0xMC40LTE4em02Ni40LTExMS4zYzUuOS05LjYgOS42LTIwLjYgOS42LTMyLjcgMC0zNS4zLTI4LjctNjQtNjQtNjRoLTUuOWMzLjYtMTAuMSA1LjktMjAuNyA1LjktMzIgMC01My00My05Ni05Ni05Ni01LjIgMC0xMC4yLjctMTUuMSAxLjVDMjE4LjMgMTQuNiAyMjQgMzAuNiAyMjQgNDhjMCA0NC4yLTM1LjggODAtODAgODBoLTE2Yy0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDEyLjEgMy43IDIzLjEgOS42IDMyLjdDMzIuNiAyMjggMCAyNjIuMiAwIDMwNGMwIDQ0IDM2IDgwIDgwIDgwaDQ4LjNjLjEtLjYgMC0xLjIgMC0xLjhsMTYtMTIwYzMtMjEuOCAyMS43LTM4LjIgNDMuNy0zOC4yaDY4YzEzLjggMCAyNi41IDYuMyAzNC45IDE3LjJzMTEuMiAyNC44IDcuNiAzOC4xbC02LjYgMjQuN2gxNmMxNS43IDAgMzAuMyA4LjQgMzguMSAyMiA3LjggMTMuNiA3LjggMzAuNSAwIDQ0bC04LjEgMTRoMzBjNDQgMCA4MC0zNiA4MC04MCAuMS00MS44LTMyLjUtNzYtNzMuNS03OS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUxLjQgMzY5LjFDNDY4LjcgMzU2IDQ4MCAzMzUuNCA0ODAgMzEyYzAtMzkuOC0zMi4yLTcyLTcyLTcyaC0xNC4xYzEzLjQtMTEuNyAyMi4xLTI4LjggMjIuMS00OCAwLTM1LjMtMjguNy02NC02NC02NGgtNS45YzMuNi0xMC4xIDUuOS0yMC43IDUuOS0zMiAwLTUzLTQzLTk2LTk2LTk2LTUuMiAwLTEwLjIuNy0xNS4xIDEuNUMyNTAuMyAxNC42IDI1NiAzMC42IDI1NiA0OGMwIDQ0LjItMzUuOCA4MC04MCA4MGgtMTZjLTM1LjMgMC02NCAyOC43LTY0IDY0IDAgMTkuMiA4LjcgMzYuMyAyMi4xIDQ4SDEwNGMtMzkuOCAwLTcyIDMyLjItNzIgNzIgMCAyMy40IDExLjMgNDQgMjguNiA1Ny4xQzI2LjMgMzc0LjYgMCA0MDQuMSAwIDQ0MGMwIDM5LjggMzIuMiA3MiA3MiA3MmgzNjhjMzkuOCAwIDcyLTMyLjIgNzItNzIgMC0zNS45LTI2LjMtNjUuNC02MC42LTcwLjl6TTE5MiAyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0xNTkuNSAxMzlDMzQxIDQyMi45IDI5MyA0NDggMjU2IDQ0OHMtODUtMjUuMS05NS41LTUzYy0yLTUuMyAyLTExIDcuOC0xMWgxNzUuNGM1LjggMCA5LjggNS43IDcuOCAxMXpNMzIwIDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUxLjM2IDM2OS4xNEM0NjguNjYgMzU1Ljk5IDQ4MCAzMzUuNDEgNDgwIDMxMmMwLTM5Ljc3LTMyLjI0LTcyLTcyLTcyaC0xNC4wN2MxMy40Mi0xMS43MyAyMi4wNy0yOC43OCAyMi4wNy00OCAwLTM1LjM1LTI4LjY1LTY0LTY0LTY0aC01Ljg4YzMuNTctMTAuMDUgNS44OC0yMC43MiA1Ljg4LTMyIDAtNTMuMDItNDIuOTgtOTYtOTYtOTYtNS4xNyAwLTEwLjE1Ljc0LTE1LjExIDEuNTJDMjUwLjMxIDE0LjY0IDI1NiAzMC42MiAyNTYgNDhjMCA0NC4xOC0zNS44MiA4MC04MCA4MGgtMTZjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjQgMCAxOS4yMiA4LjY1IDM2LjI3IDIyLjA3IDQ4SDEwNGMtMzkuNzYgMC03MiAzMi4yMy03MiA3MiAwIDIzLjQxIDExLjM0IDQzLjk5IDI4LjY0IDU3LjE0QzI2LjMxIDM3NC42MiAwIDQwNC4xMiAwIDQ0MGMwIDM5Ljc2IDMyLjI0IDcyIDcyIDcyaDM2OGMzOS43NiAwIDcyLTMyLjI0IDcyLTcyIDAtMzUuODgtMjYuMzEtNjUuMzgtNjAuNjQtNzAuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xOTIgMTI4YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkgxMDIuNEM5MCAzODQgODAgMzc1LjQgODAgMzY0Ljh2LTE5LjJjMC0zMS44IDMwLjEtNTcuNiA2Ny4yLTU3LjZoNWMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg1YzM3LjEgMCA2Ny4yIDI1LjggNjcuMiA1Ny42djE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvdW5kU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDggMzUyaC00NS40OTVjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTAuODQ4SDEyOFYyODhoODRjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtODR2LTYzLjU1NmMwLTMyLjI2NiAyNC41NjItNTcuMDg2IDYxLjc5Mi01Ny4wODYgMjMuNjU4IDAgNDUuODc4IDExLjUwNSA1Ny42NTIgMTguODQ5IDUuMTUxIDMuMjEzIDExLjg4OCAyLjA1MSAxNS42ODgtMi42ODVsMjguNDkzLTM1LjUxM2M0LjIzMy01LjI3NiAzLjI3OS0xMy4wMDUtMi4xMTktMTcuMDgxQzI3My4xMjQgNTQuNTYgMjM2LjU3NiAzMiAxODcuOTMxIDMyIDEwNi4wMjYgMzIgNDggODQuNzQyIDQ4IDE1Ny45NjFWMjI0SDIwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjh2MTI4SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjk2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWMzY0YzAtNi42MjctNS4zNzMtMTItMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvd2VyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA1NC4xYzYzIDQ1IDEwNCAxMTguNiAxMDQgMjAxLjkgMCAxMzYuOC0xMTAuOCAyNDcuNy0yNDcuNSAyNDhDMTIwIDUwNC4zIDguMiAzOTMgOCAyNTYuNCA3LjkgMTczLjEgNDguOSA5OS4zIDExMS44IDU0LjJjMTEuNy04LjMgMjgtNC44IDM1IDcuN0wxNjIuNiA5MGM1LjkgMTAuNSAzLjEgMjMuOC02LjYgMzEtNDEuNSAzMC44LTY4IDc5LjYtNjggMTM0LjktLjEgOTIuMyA3NC41IDE2OC4xIDE2OCAxNjguMSA5MS42IDAgMTY4LjYtNzQuMiAxNjgtMTY5LjEtLjMtNTEuOC0yNC43LTEwMS44LTY4LjEtMTM0LTkuNy03LjItMTIuNC0yMC41LTYuNS0zMC45bDE1LjgtMjguMWM3LTEyLjQgMjMuMi0xNi4xIDM0LjgtNy44ek0yOTYgMjY0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0aC0zMmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjQwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFMyOTEuMzUgMCAyNTYgMHMtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bS0zMC42MyAxNjkuNzVjMTQuMDYgMTYuNzIgMzkgMTkuMDkgNTUuOTcgNS4yMmw4OC03Mi4wMmMxNy4wOS0xMy45OCAxOS41OS0zOS4xOSA1LjYyLTU2LjI4LTEzLjk3LTE3LjExLTM5LjE5LTE5LjU5LTU2LjMxLTUuNjJsLTU3LjQ0IDQ3LTM4LjkxLTQ2LjMxYy0xNS40NC0xOC4zOS0zOS4yMi0yNy45Mi02NC0yNS4zMy0yNC4xOSAyLjQ4LTQ1LjI1IDE2LjI3LTU2LjM3IDM2LjkybC00OS4zNyA5Mi4wM2MtMjMuNCA0My42NC04LjY5IDk2LjM3IDM0LjE5IDEyMy43NUwxMzEuNTYgNDMySDQwYy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwczE3LjkxIDQwIDQwIDQwaDIwOGMzNC4wOCAwIDUzLjc3LTQyLjc5IDI4LjI4LTY4LjI4TDE2Ni40MiAzMzMuODZsMzQuOC02NC44NyAyNC4xNSAyOC43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJheWluZ0hhbmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAxOTEuOTFjLTE3LjYgMC0zMiAxNC40LTMyIDMydjgwYzAgOC44NC03LjE2IDE2LTE2IDE2cy0xNi03LjE2LTE2LTE2di03Ni41NWMwLTE3LjM5IDQuNzItMzQuNDcgMTMuNjktNDkuMzlsNzcuNzUtMTI5LjU5YzkuMDktMTUuMTYgNC4xOS0zNC44MS0xMC45Ny00My45MS0xNC40NS04LjY3LTMyLjcyLTQuMy00Mi4zIDkuMjEtLjIuMjMtLjYyLjIxLS43OS40OGwtMTE3LjI2IDE3NS45QzExNy41NiAyMDUuOSAxMTIgMjI0LjMxIDExMiAyNDMuMjl2ODAuMjNsLTkwLjEyIDMwLjA0QTMxLjk3NCAzMS45NzQgMCAwIDAgMCAzODMuOTF2OTZjMCAxMC44MiA4LjUyIDMyIDMyIDMyIDIuNjkgMCA1LjQxLS4zNCA4LjA2LTEuMDNsMTc5LjE5LTQ2LjYyQzI2OS4xNiA0NDkuOTkgMzA0IDQwMy44IDMwNCAzNTEuOTF2LTEyOGMwLTE3LjYtMTQuNC0zMi0zMi0zMnptMzQ2LjEyIDE2MS43M0w1MjggMzIzLjZ2LTgwLjIzYzAtMTguOTgtNS41Ni0zNy4zOS0xNi4xMi01My4yM0wzOTQuNjIgMTQuMjVjLS4xOC0uMjctLjU5LS4yNC0uNzktLjQ4LTkuNTgtMTMuNTEtMjcuODUtMTcuODgtNDIuMy05LjIxLTE1LjE2IDkuMDktMjAuMDYgMjguNzUtMTAuOTcgNDMuOTFsNzcuNzUgMTI5LjU5YzguOTcgMTQuOTIgMTMuNjkgMzIgMTMuNjkgNDkuMzlWMzA0YzAgOC44NC03LjE2IDE2LTE2IDE2cy0xNi03LjE2LTE2LTE2di04MGMwLTE3LjYtMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnYxMjhjMCA1MS44OSAzNC44NCA5OC4wOCA4NC43NSAxMTIuMzRsMTc5LjE5IDQ2LjYyYzIuNjYuNjkgNS4zOCAxLjAzIDguMDYgMS4wMyAyMy40OCAwIDMyLTIxLjE4IDMyLTMydi05NmMwLTEzLjc3LTguODEtMjUuOTktMjEuODgtMzAuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByZXNjcmlwdGlvbkJvdHRsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgMEgyNEMxMC44IDAgMCAxMC44IDAgMjR2NDhjMCAxMy4yIDEwLjggMjQgMjQgMjRoMzM2YzEzLjIgMCAyNC0xMC44IDI0LTI0VjI0YzAtMTMuMi0xMC44LTI0LTI0LTI0ek0zMiA0ODBjMCAxNy42IDE0LjQgMzIgMzIgMzJoMjU2YzE3LjYgMCAzMi0xNC40IDMyLTMyVjEyOEgzMnYzNTJ6bTY0LTE4NGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByZXNjcmlwdGlvbkJvdHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxOTJoMTIwYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzJ2NjRoMTIwYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzJ2NjRoMTIwYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzJ2NjRjMCAxNy42IDE0LjQgMzIgMzIgMzJoMjU2YzE3LjYgMCAzMi0xNC40IDMyLTMyVjEyOEgzMnY2NHpNMzYwIDBIMjRDMTAuOCAwIDAgMTAuOCAwIDI0djQ4YzAgMTMuMiAxMC44IDI0IDI0IDI0aDMzNmMxMy4yIDAgMjQtMTAuOCAyNC0yNFYyNGMwLTEzLjItMTAuOC0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS4yNiAzNTJsNzguMDYtNzguMDZjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMjIuNjMtMjIuNjNjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBMMjU2IDMwNi43NGwtODMuOTYtODMuOTZDMjE5LjMxIDIxNi44IDI1NiAxNzYuODkgMjU2IDEyOGMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2SDE2QzcuMTYgMzIgMCAzOS4xNiAwIDQ4djI1NmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtODBoMTguNzVsMTI4IDEyOC03OC4wNiA3OC4wNmMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwTDI1NiAzOTcuMjVsNzguMDYgNzguMDZjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDMwMS4yNiAzNTJ6TTY0IDk2aDk2YzE3LjY0IDAgMzIgMTQuMzYgMzIgMzJzLTE0LjM2IDMyLTMyIDMySDY0Vjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMTkyVjc3LjI1YzAtOC40OS0zLjM3LTE2LjYyLTkuMzctMjIuNjNMMzkzLjM3IDkuMzdjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdIOTZDNzguMzMgMCA2NCAxNC4zMyA2NCAzMnYxNjBjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzIwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjI1NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tNjQgMjU2SDEyOHYtOTZoMjU2djk2em0wLTIyNEgxMjhWNjRoMTkydjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djk2em00OCA3MmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByb2NlZHVyZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDIyNEgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNDRINjRWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djM1MmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di00OGg1MTJ2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMzZjMC02MS45LTUwLjEtMTEyLTExMi0xMTJ6TTEzNiA5NmgxMjYuMWwyNy42IDU1LjJjNS45IDExLjggMjIuNyAxMS44IDI4LjYgMEwzNjggNTEuOCAzOTAuMSA5Nkg1MTJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINDA5LjlMMzgyLjMgOC44QzM3Ni40LTMgMzU5LjYtMyAzNTMuNyA4LjhMMzA0IDEwOC4ybC0xOS45LTM5LjhjLTEuNC0yLjctNC4xLTQuNC03LjItNC40SDEzNmMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMjQgMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJvamVjdERpYWdyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyMEgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTI4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTE5MiAzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk1LjcybDczLjE2IDEyOC4wNEMyMTEuOTggMzAwLjk4IDIzMi40IDI4OCAyNTYgMjg4aC4yOEwxOTIgMTc1LjUxVjEyOGgyMjRWNjRIMTkyVjMyek02MDggMEg0ODBjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTI4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHVtcE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM1LjUxLDE1OS44Mkg4NC4yNEE2NCw2NCwwLDAsMCwyMC41MSwyMThMLjE0LDQ0MmE2NCw2NCwwLDAsMCw2My43NCw2OS44aDE5MkE2NCw2NCwwLDAsMCwzMTkuNjEsNDQyTDI5OS4yNCwyMThBNjQsNjQsMCwwLDAsMjM1LjUxLDE1OS44MlptNC4zNywxNzMuMzNhMTMuMzUsMTMuMzUsMCwwLDEtMTMuMzQsMTMuMzRoLTQwdjQwYTEzLjMzLDEzLjMzLDAsMCwxLTEzLjMzLDEzLjMzSDE0Ni41NGExMy4zMywxMy4zMywwLDAsMS0xMy4zMy0xMy4zM3YtNDBoLTQwYTEzLjM0LDEzLjM0LDAsMCwxLTEzLjMzLTEzLjM0VjMwNi40OWExMy4zMywxMy4zMywwLDAsMSwxMy4zMy0xMy4zNGg0MHYtNDBhMTMuMzMsMTMuMzMsMCwwLDEsMTMuMzMtMTMuMzNoMjYuNjdhMTMuMzMsMTMuMzMsMCwwLDEsMTMuMzMsMTMuMzN2NDBoNDBhMTMuMzQsMTMuMzQsMCwwLDEsMTMuMzQsMTMuMzRaTTM3OS4xOSw5My44OCwzMzUuODcsNTAuNTZhNjQsNjQsMCwwLDAtNDUuMjQtMTguNzRIMjIzLjg4YTMyLDMyLDAsMCwwLTMyLTMyaC02NGEzMiwzMiwwLDAsMC0zMiwzMnY5NmgxMjh2LTMyaDY2Ljc1bDQzLjMxLDQzLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBsMjIuNjItMjIuNjJBMTYsMTYsMCwwLDAsMzc5LjE5LDkzLjg4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQdW1wU29hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzUuNjMsMTYwSDg0LjM3YTY0LDY0LDAsMCwwLTYzLjc0LDU4LjIxTC4yNyw0NDIuMjFBNjQsNjQsMCwwLDAsNjQsNTEySDI1NmE2NCw2NCwwLDAsMCw2My43NC02OS43OWwtMjAuMzYtMjI0QTY0LDY0LDAsMCwwLDIzNS42MywxNjBaTTE2MCw0MTZjLTMzLjEyLDAtNjAtMjYuMzMtNjAtNTguNzUsMC0yNSwzNS43LTc1LjQ3LDUyLTk3LjI3QTEwLDEwLDAsMCwxLDE2OCwyNjBjMTYuMzMsMjEuOCw1Miw3Mi4yNyw1Miw5Ny4yN0MyMjAsMzg5LjY3LDE5My4xMiw0MTYsMTYwLDQxNlpNMzc5LjMxLDk0LjA2LDMzNiw1MC43NEE2NCw2NCwwLDAsMCwyOTAuNzUsMzJIMjI0QTMyLDMyLDAsMCwwLDE5MiwwSDEyOEEzMiwzMiwwLDAsMCw5NiwzMnY5NkgyMjRWOTZoNjYuNzVsNDMuMzEsNDMuMzFhMTYsMTYsMCwwLDAsMjIuNjMsMGwyMi42Mi0yMi42MkExNiwxNiwwLDAsMCwzNzkuMzEsOTQuMDZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1enpsZVBpZWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxOS40NDIgMjg4LjY1MWMtNDEuNTE5IDAtNTkuNSAzMS41OTMtODIuMDU4IDMxLjU5M0MzNzcuNDA5IDMyMC4yNDQgNDMyIDE0NCA0MzIgMTQ0cy0xOTYuMjg4IDgwLTE5Ni4yODgtMy4yOTdjMC0zNS44MjcgMzYuMjg4LTQ2LjI1IDM2LjI4OC04NS45ODVDMjcyIDE5LjIxNiAyNDMuODg1IDAgMjEwLjUzOSAwYy0zNC42NTQgMC02Ni4zNjYgMTguODkxLTY2LjM2NiA1Ni4zNDYgMCA0MS4zNjQgMzEuNzExIDU5LjI3NyAzMS43MTEgODEuNzVDMTc1Ljg4NSAyMDcuNzE5IDAgMTY2Ljc1OCAwIDE2Ni43NTh2MzMzLjIzN3MxNzguNjM1IDQxLjA0NyAxNzguNjM1LTI4LjY2MmMwLTIyLjQ3My00MC00MC4xMDctNDAtODEuNDcxIDAtMzcuNDU2IDI5LjI1LTU2LjM0NiA2My41NzctNTYuMzQ2IDMzLjY3MyAwIDYxLjc4OCAxOS4yMTYgNjEuNzg4IDU0LjcxNyAwIDM5LjczNS0zNi4yODggNTAuMTU4LTM2LjI4OCA4NS45ODUgMCA2MC44MDMgMTI5LjY3NSAyNS43MyAxODEuMjMgMjUuNzMgMCAwLTM0LjcyNS0xMjAuMTAxIDI1LjgyNy0xMjAuMTAxIDM1Ljk2MiAwIDQ2LjQyMyAzNi4xNTIgODYuMzA4IDM2LjE1MkM1NTYuNzEyIDQxNiA1NzYgMzg3Ljk5IDU3NiAzNTQuNDQzYzAtMzQuMTk5LTE4Ljk2Mi02NS43OTItNTYuNTU4LTY1Ljc5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0aDE5MlYzMkgwdjE5MnpNNjQgOTZoNjR2NjRINjRWOTZ6bTE5Mi02NHYxOTJoMTkyVjMySDI1NnptMTI4IDEyOGgtNjRWOTZoNjR2NjR6TTAgNDgwaDE5MlYyODhIMHYxOTJ6bTY0LTEyOGg2NHY2NEg2NHYtNjR6bTM1Mi02NGgzMnYxMjhoLTk2di0zMmgtMzJ2OTZoLTY0VjI4OGg5NnYzMmg2NHYtMzJ6bTAgMTYwaDMydjMyaC0zMnYtMzJ6bS02NCAwaDMydjMyaC0zMnYtMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1ZXN0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTk3LTExMS4wNDMgMjQ4LTI0OCAyNDhTOCAzOTIuOTk3IDggMjU2QzggMTE5LjA4MyAxMTkuMDQzIDggMjU2IDhzMjQ4IDExMS4wODMgMjQ4IDI0OHpNMjYyLjY1NSA5MGMtNTQuNDk3IDAtODkuMjU1IDIyLjk1Ny0xMTYuNTQ5IDYzLjc1OC0zLjUzNiA1LjI4Ni0yLjM1MyAxMi40MTUgMi43MTUgMTYuMjU4bDM0LjY5OSAyNi4zMWM1LjIwNSAzLjk0NyAxMi42MjEgMy4wMDggMTYuNjY1LTIuMTIyIDE3Ljg2NC0yMi42NTggMzAuMTEzLTM1Ljc5NyA1Ny4zMDMtMzUuNzk3IDIwLjQyOSAwIDQ1LjY5OCAxMy4xNDggNDUuNjk4IDMyLjk1OCAwIDE0Ljk3Ni0xMi4zNjMgMjIuNjY3LTMyLjUzNCAzMy45NzZDMjQ3LjEyOCAyMzguNTI4IDIxNiAyNTQuOTQxIDIxNiAyOTZ2NGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDU2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEuMzMzYzAtMjguNDYyIDgzLjE4Ni0yOS42NDcgODMuMTg2LTEwNi42NjcgMC01OC4wMDItNjAuMTY1LTEwMi0xMTYuNTMxLTEwMnpNMjU2IDMzOGMtMjUuMzY1IDAtNDYgMjAuNjM1LTQ2IDQ2IDAgMjUuMzY0IDIwLjYzNSA0NiA0NiA0NnM0Ni0yMC42MzYgNDYtNDZjMC0yNS4zNjUtMjAuNjM1LTQ2LTQ2LTQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdWVzdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDIuMDIxIDBDMTIyLjIwMiAwIDcwLjUwMyAzMi43MDMgMjkuOTE0IDkxLjAyNmMtNy4zNjMgMTAuNTgtNS4wOTMgMjUuMDg2IDUuMTc4IDMyLjg3NGw0My4xMzggMzIuNzA5YzEwLjM3MyA3Ljg2NSAyNS4xMzIgNi4wMjYgMzMuMjUzLTQuMTQ4IDI1LjA0OS0zMS4zODEgNDMuNjMtNDkuNDQ5IDgyLjc1Ny00OS40NDkgMzAuNzY0IDAgNjguODE2IDE5Ljc5OSA2OC44MTYgNDkuNjMxIDAgMjIuNTUyLTE4LjYxNyAzNC4xMzQtNDguOTkzIDUxLjE2NC0zNS40MjMgMTkuODYtODIuMjk5IDQ0LjU3Ni04Mi4yOTkgMTA2LjQwNVYzMjBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDcyLjQ3MWMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTUuNzczYzAtNDIuODYgMTI1LjI2OC00NC42NDUgMTI1LjI2OC0xNjAuNjI3QzM3Ny41MDQgNjYuMjU2IDI4Ni45MDIgMCAyMDIuMDIxIDB6TTE5MiAzNzMuNDU5Yy0zOC4xOTYgMC02OS4yNzEgMzEuMDc1LTY5LjI3MSA2OS4yNzEgMCAzOC4xOTUgMzEuMDc1IDY5LjI3IDY5LjI3MSA2OS4yN3M2OS4yNzEtMzEuMDc1IDY5LjI3MS02OS4yNzEtMzEuMDc1LTY5LjI3LTY5LjI3MS02OS4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVpZGRpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni41IDIxNi44TDM0My4yIDMyNnMtMTYuNiAxMDIuNC03Ni42IDE1MC4xQzIwNi43IDUyMy44IDAgNTEwLjIgMCA1MTAuMnMzLjgtMjMuMSAxMS01NS40bDk0LjYtMTEyLjJjNC00LjctLjktMTEuNi02LjYtOS41bC02MC40IDIyLjFjMTQuNC00MS43IDMyLjctODAgNTQuNi05Ny41IDU5LjktNDcuOCAxNjMuMy00MC45IDE2My4zLTQwLjl6bTIzOCAxMzVjLTQ0IDAtNzkuOCAzNS44LTc5LjggNzkuOSAwIDQ0LjEgMzUuNyA3OS45IDc5LjggNzkuOSA0NC4xIDAgNzkuOC0zNS44IDc5LjgtNzkuOSAwLTQ0LjItMzUuOC03OS45LTc5LjgtNzkuOXpNNjM2LjUgMzFMNjE2LjcgNmMtNS41LTYuOS0xNS41LTgtMjIuNC0yLjZMMzYxLjggMTgxLjNsLTM0LjEtNDNjLTUuMS02LjQtMTUuMS01LjItMTguNiAyLjJsLTI1LjMgNTQuNiA4Ni43IDEwOS4yIDU4LjgtMTIuNGM4LTEuNyAxMS40LTExLjIgNi4zLTE3LjZsLTM0LjEtNDIuOUw2MzQgNTMuNWM2LjktNS41IDgtMTUuNiAyLjUtMjIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVvdGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZoLTgwdi02NGMwLTM1LjMgMjguNy02NCA2NC02NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0aC04Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MHYyNDBjMCAyNi41IDIxLjUgNDggNDggNDhoMTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNGMwLTI2LjUtMjEuNS00OC00OC00OHptLTI4OCAwSDk2di02NGMwLTM1LjMgMjguNy02NCA2NC02NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0aC04QzcxLjYgMzIgMCAxMDMuNiAwIDE5MnYyNDBjMCAyNi41IDIxLjUgNDggNDggNDhoMTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVvdGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJIMzM2Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxMjhjMCAyNi41IDIxLjUgNDggNDggNDhoODB2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRoLThjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDhjODguNCAwIDE2MC03MS42IDE2MC0xNjBWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0yODggMEg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjEyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NGgtOGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVyYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM1OC40VjI1LjZjMC0xNi05LjYtMjUuNi0yNS42LTI1LjZIOTZDNDEuNiAwIDAgNDEuNiAwIDk2djMyMGMwIDU0LjQgNDEuNiA5NiA5NiA5NmgzMjYuNGMxMi44IDAgMjUuNi05LjYgMjUuNi0yNS42di0xNmMwLTYuNC0zLjItMTIuOC05LjYtMTkuMi0zLjItMTYtMy4yLTYwLjggMC03My42IDYuNC0zLjIgOS42LTkuNiA5LjYtMTkuMnpNMzAxLjA4IDE0NS44MmMuNi0xLjIxIDEuNzYtMS44MiAyLjkyLTEuODJzMi4zMi42MSAyLjkyIDEuODJsMTEuMTggMjIuNjUgMjUgMy42M2MyLjY3LjM5IDMuNzQgMy42NyAxLjgxIDUuNTZsLTE4LjA5IDE3LjYzIDQuMjcgMjQuODljLjM2IDIuMTEtMS4zMSAzLjgyLTMuMjEgMy44Mi0uNSAwLTEuMDItLjEyLTEuNTItLjM4TDMwNCAyMTEuODdsLTIyLjM2IDExLjc1Yy0uNS4yNi0xLjAyLjM4LTEuNTIuMzgtMS45IDAtMy41Ny0xLjcxLTMuMjEtMy44Mmw0LjI3LTI0Ljg5LTE4LjA5LTE3LjYzYy0xLjk0LTEuODktLjg3LTUuMTcgMS44MS01LjU2bDI0Ljk5LTMuNjMgMTEuMTktMjIuNjV6bS01Ny44OS02OS4wMWMxMy42NyAwIDI3LjI2IDIuNDkgNDAuMzggNy40MWE2Ljc3NSA2Ljc3NSAwIDEgMS0yLjM4IDEzLjEyYy0uNjcgMC0zLjA5LS4yMS00LjEzLS4yMS01Mi4zMSAwLTk0Ljg2IDQyLjU1LTk0Ljg2IDk0Ljg2IDAgNTIuMyA0Mi41NSA5NC44NiA5NC44NiA5NC44NiAxLjAzIDAgMy40OC0uMjEgNC4xMy0uMjEgMy45MyAwIDYuOCAzLjE0IDYuOCA2Ljc4IDAgMi45OC0xLjk0IDUuNTEtNC42MiA2LjQyLTEzLjA3IDQuODctMjYuNTkgNy4zNC00MC4xOSA3LjM0QzE3OS42NyAzMDcuMTkgMTI4IDI1NS41MSAxMjggMTkyYzAtNjMuNTIgNTEuNjctMTE1LjE5IDExNS4xOS0xMTUuMTl6TTM4MC44IDQ0OEg5NmMtMTkuMiAwLTMyLTEyLjgtMzItMzJzMTYtMzIgMzItMzJoMjg0Ljh2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhZGlhdGlvbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTIgMjU2aDc5LjFjOS4yIDAgMTYuOS03LjcgMTYtMTYuOC00LjYtNDMuNi0yNy04MS44LTU5LjUtMTA3LjgtNy42LTYuMS0xOC44LTQuNS0yNCAzLjhMMjgxLjkgMjAyYzE4IDExLjIgMzAuMSAzMS4yIDMwLjEgNTR6bS05Ny44IDU0LjFMMTcyLjQgMzc3Yy00LjkgNy44LTIuNCAxOC40IDUuOCAyMi41IDIxLjEgMTAuNCA0NC43IDE2LjUgNjkuOCAxNi41czQ4LjctNi4xIDY5LjktMTYuNWM4LjItNC4xIDEwLjYtMTQuNyA1LjgtMjIuNWwtNDEuOC02Ni45Yy05LjggNi4yLTIxLjQgOS45LTMzLjggOS45cy0yNC4xLTMuNy0zMy45LTkuOXpNMTA0LjkgMjU2SDE4NGMwLTIyLjggMTIuMS00Mi44IDMwLjItNTQuMWwtNDEuNy02Ni44Yy01LjItOC4zLTE2LjQtOS45LTI0LTMuOC0zMi42IDI2LTU0LjkgNjQuMi01OS41IDEwNy44LTEuMSA5LjIgNi43IDE2LjkgMTUuOSAxNi45ek0yNDggNTA0YzEzNyAwIDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDh6bTAtNDMyYzEwMS41IDAgMTg0IDgyLjUgMTg0IDE4NHMtODIuNSAxODQtMTg0IDE4NFM2NCAzNTcuNSA2NCAyNTYgMTQ2LjUgNzIgMjQ4IDcyem0wIDIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhZGlhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjguMiAyNTUuOGgxNTEuNmM5LjEgMCAxNi44LTcuNyAxNi4yLTE2LjgtNS4xLTc1LjgtNDQuNC0xNDIuMi0xMDIuNS0xODQuMi03LjQtNS4zLTE3LjktMi45LTIyLjcgNC44TDI5MC40IDE4OGMyMi42IDE0LjMgMzcuOCAzOS4yIDM3LjggNjcuOHptLTM3LjggNjcuN2MtMTIuMyA3LjctMjYuOCAxMi40LTQyLjQgMTIuNC0xNS42IDAtMzAtNC43LTQyLjQtMTIuNEwxMjUuMiA0NTJjLTQuOCA3LjctMi40IDE4LjEgNS42IDIyLjRDMTY1LjcgNDkzLjIgMjA1LjYgNTA0IDI0OCA1MDRzODIuMy0xMC44IDExNy4yLTI5LjZjOC00LjMgMTAuNC0xNC44IDUuNi0yMi40bC04MC40LTEyOC41ek0yNDggMzAzLjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDgtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0tMjMxLjgtNDhoMTUxLjZjMC0yOC42IDE1LjItNTMuNSAzNy44LTY3LjdMMTI1LjIgNTkuN2MtNC44LTcuNy0xNS4zLTEwLjItMjIuNy00LjhDNDQuNCA5Ni45IDUuMSAxNjMuMyAwIDIzOS4xYy0uNiA5IDcuMSAxNi43IDE2LjIgMTYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFpbmJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjguMyAzMi43QzExNS40IDQyLjkgMCAxNzYuOSAwIDMzMC4yVjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMEM2NCAxODYuOCAxODAuOSA4MC4zIDMxNy41IDk3LjkgNDMwLjQgMTEyLjQgNTEyIDIxNCA1MTIgMzI3LjhWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtMTY1LjMtMTQwLTI5OC42LTMwNy43LTI4Ny4zem0tNS42IDk2LjlDMTY2IDE0MiA5NiAyMjkuMSA5NiAzMjYuN1Y0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC03NC44IDY0LjUtMTM0LjggMTQwLjgtMTI3LjQgNjYuNSA2LjUgMTE1LjIgNjYuMiAxMTUuMiAxMzMuMVY0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC0xMTQuMi0xMDAuMi0yMDUuNC0yMTcuMy0xOTAuNHptNi4yIDk2LjNjLTQ1LjYgOC45LTc2LjkgNTEuNS03Ni45IDk3LjlWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtMTcuNiAxNC4zLTMyIDMyLTMyczMyIDE0LjQgMzIgMzJ2MTQ0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtNTkuMi01My44LTEwNi0xMTUuMS05NC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYW5kb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0Ljk3MSAzNTkuMDI5YzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MWwtODAgNzkuOTg0Yy0xNS4wMSAxNS4wMS00MC45NzEgNC40OS00MC45NzEtMTYuOTcxVjQxNmgtNTguNzg1YTEyLjAwNCAxMi4wMDQgMCAwIDEtOC43NzMtMy44MTJsLTcwLjU1Ni03NS41OTYgNTMuMzMzLTU3LjE0M0wzNTIgMzM2aDMydi0zOS45ODFjMC0yMS40MzggMjUuOTQzLTMxLjk5OCA0MC45NzEtMTYuOTcxbDgwIDc5Ljk4MXpNMTIgMTc2aDg0bDUyLjc4MSA1Ni41NTEgNTMuMzMzLTU3LjE0My03MC41NTYtNzUuNTk2QTExLjk5OSAxMS45OTkgMCAwIDAgMTIyLjc4NSA5NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyem0zNzIgMHYzOS45ODRjMCAyMS40NiAyNS45NjEgMzEuOTggNDAuOTcxIDE2Ljk3MWw4MC03OS45ODRjOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxbC04MC03OS45ODFDNDA5Ljk0MyAyNC4wMjEgMzg0IDM0LjU4MiAzODQgNTYuMDE5Vjk2aC01OC43ODVhMTIuMDA0IDEyLjAwNCAwIDAgMC04Ljc3MyAzLjgxMkw5NiAzMzZIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTAuNzg1YzMuMzI2IDAgNi41MDMtMS4zODEgOC43NzMtMy44MTJMMzUyIDE3NmgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjZWlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTguNCAzLjJMMzIwIDQ4IDI2NS42IDMuMmExNS45IDE1LjkgMCAwIDAtMTkuMiAwTDE5MiA0OCAxMzcuNiAzLjJhMTUuOSAxNS45IDAgMCAwLTE5LjIgMEw2NCA0OCAyNS42IDMuMkMxNS00LjcgMCAyLjggMCAxNnY0ODBjMCAxMy4yIDE1IDIwLjcgMjUuNiAxMi44TDY0IDQ2NGw1NC40IDQ0LjhhMTUuOSAxNS45IDAgMCAwIDE5LjIgMEwxOTIgNDY0bDU0LjQgNDQuOGExNS45IDE1LjkgMCAwIDAgMTkuMiAwTDMyMCA0NjRsMzguNCA0NC44YzEwLjUgNy45IDI1LjYuNCAyNS42LTEyLjhWMTZjMC0xMy4yLTE1LTIwLjctMjUuNi0xMi44ek0zMjAgMzYwYzAgNC40LTMuNiA4LTggOEg3MmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMjQwYzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhINzJjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDI0MGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtOTZjMCA0LjQtMy42IDgtOCA4SDcyYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgyNDBjNC40IDAgOCAzLjYgOCA4djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWNvcmRWaW55bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMTUyYTEwNCAxMDQgMCAxIDAgMTA0IDEwNCAxMDQgMTA0IDAgMCAwLTEwNC0xMDR6bTAgMTI4YTI0IDI0IDAgMSAxIDI0LTI0IDI0IDI0IDAgMCAxLTI0IDI0em0wLTI3MkMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDM3NmExMjggMTI4IDAgMSAxIDEyOC0xMjggMTI4IDEyOCAwIDAgMS0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4NC41NjEgMjYxLjkwM2MzLjIzMiAxMy45OTctMTIuMTIzIDI0LjYzNS0yNC4wNjggMTcuMTY4bC00MC43MzYtMjUuNDU1LTUwLjg2NyA4MS40MDJDNTUuNjA2IDM1Ni4yNzMgNzAuOTYgMzg0IDk2LjAxMiAzODRIMTQ4YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg5Ni4xMTVjLTc1LjMzNCAwLTEyMS4zMDItODMuMDQ4LTgxLjQwOC0xNDYuODhsNTAuODIyLTgxLjM4OC00MC43MjUtMjUuNDQ4Yy0xMi4wODEtNy41NDctOC45NjYtMjUuOTYxIDQuODc5LTI5LjE1OGwxMTAuMjM3LTI1LjQ1YzguNjExLTEuOTg4IDE3LjIwMSAzLjM4MSAxOS4xODkgMTEuOTlsMjUuNDUyIDExMC4yMzd6bTk4LjU2MS0xODIuOTE1bDQxLjI4OSA2Ni4wNzYtNDAuNzQgMjUuNDU3Yy0xMi4wNTEgNy41MjgtOSAyNS45NTMgNC44NzkgMjkuMTU4bDExMC4yMzcgMjUuNDVjOC42NzIgMS45OTkgMTcuMjE1LTMuNDM4IDE5LjE4OS0xMS45OWwyNS40NS0xMTAuMjM3YzMuMTk3LTEzLjg0NC0xMS45OS0yNC43MTktMjQuMDY4LTE3LjE2OGwtNDAuNjg3IDI1LjQyNC00MS4yNjMtNjYuMDgyYy0zNy41MjEtNjAuMDMzLTEyNS4yMDktNjAuMTcxLTE2Mi44MTYgMGwtMTcuOTYzIDI4Ljc2NmMtMy41MSA1LjYyLTEuOCAxMy4wMjEgMy44MiAxNi41MzNsMzMuOTE5IDIxLjE5NWM1LjYyIDMuNTEyIDEzLjAyNCAxLjgwMyAxNi41MzYtMy44MTdsMTcuOTYxLTI4Ljc0M2MxMi43MTItMjAuMzQxIDQxLjk3My0xOS42NzYgNTQuMjU3LS4wMjJ6TTQ5Ny4yODggMzAxLjEybC0yNy41MTUtNDQuMDY1Yy0zLjUxMS01LjYyMy0xMC45MTYtNy4zMzQtMTYuNTM4LTMuODIxbC0zMy44NjEgMjEuMTU5Yy01LjYyIDMuNTEyLTcuMzMgMTAuOTE1LTMuODE4IDE2LjUzNmwyNy41NjQgNDQuMTEyYzEzLjI1NyAyMS4yMTEtMi4wNTcgNDguOTYtMjcuMTM2IDQ4Ljk2SDMyMFYzMzYuMDJjMC0xNC4yMTMtMTcuMjQyLTIxLjM4My0yNy4zMTMtMTEuMzEzbC04MCA3OS45ODFjLTYuMjQ5IDYuMjQ4LTYuMjQ5IDE2LjM3OSAwIDIyLjYyN2w4MCA3OS45ODlDMzAyLjY4OSA1MTcuMzA4IDMyMCA1MTAuMyAzMjAgNDk1Ljk4OVY0NDhoOTUuODhjNzUuMjc0IDAgMTIxLjMzNS04Mi45OTcgODEuNDA4LTE0Ni44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkb0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNDU1IDhjNjYuMjY5LjExOSAxMjYuNDM3IDI2LjIzMyAxNzAuODU5IDY4LjY4NWwzNS43MTUtMzUuNzE1QzQ3OC4xNDkgMjUuODUxIDUwNCAzNi41NTkgNTA0IDU3Ljk0MVYxOTJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDM0NS45NDFjLTIxLjM4MiAwLTMyLjA5LTI1Ljg1MS0xNi45NzEtNDAuOTcxbDQxLjc1LTQxLjc1Yy0zMC44NjQtMjguODk5LTcwLjgwMS00NC45MDctMTEzLjIzLTQ1LjI3My05Mi4zOTgtLjc5OC0xNzAuMjgzIDczLjk3Ny0xNjkuNDg0IDE2OS40NDJDODguNzY0IDM0OC4wMDkgMTYyLjE4NCA0MjQgMjU2IDQyNGM0MS4xMjcgMCA3OS45OTctMTQuNjc4IDExMC42MjktNDEuNTU2IDQuNzQzLTQuMTYxIDExLjkwNi0zLjkwOCAxNi4zNjguNTUzbDM5LjY2MiAzOS42NjJjNC44NzIgNC44NzIgNC42MzEgMTIuODE1LS40ODIgMTcuNDMzQzM3OC4yMDIgNDc5LjgxMyAzMTkuOTI2IDUwNCAyNTYgNTA0IDExOS4wMzQgNTA0IDguMDAxIDM5Mi45NjcgOCAyNTYuMDAyIDcuOTk5IDExOS4xOTMgMTE5LjY0NiA3Ljc1NSAyNTYuNDU1IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwLjMzIDBoLTQ3LjQxYTEyIDEyIDAgMCAwLTEyIDEyLjU3bDQgODIuNzZBMjQ3LjQyIDI0Ny40MiAwIDAgMCAyNTYgOEMxMTkuMzQgOCA3LjkgMTE5LjUzIDggMjU2LjE5IDguMSAzOTMuMDcgMTE5LjEgNTA0IDI1NiA1MDRhMjQ3LjEgMjQ3LjEgMCAwIDAgMTY2LjE4LTYzLjkxIDEyIDEyIDAgMCAwIC40OC0xNy40M2wtMzQtMzRhMTIgMTIgMCAwIDAtMTYuMzgtLjU1QTE3NiAxNzYgMCAxIDEgNDAyLjEgMTU3LjhsLTEwMS41My00Ljg3YTEyIDEyIDAgMCAwLTEyLjU3IDEydjQ3LjQxYTEyIDEyIDAgMCAwIDEyIDEyaDIwMC4zM2ExMiAxMiAwIDAgMCAxMi0xMlYxMmExMiAxMiAwIDAgMC0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnaXN0ZXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODUuMzYzIDIwNy40NzVjMCAxOC42LTkuODMxIDI4LjQzMS0yOC40MzEgMjguNDMxaC0yOS44NzZ2LTU2LjE0aDIzLjM3OGMyOC42NjggMCAzNC45MjkgOC43NzMgMzQuOTI5IDI3LjcwOXpNNTA0IDI1NmMwIDEzNi45NjctMTExLjAzMyAyNDgtMjQ4IDI0OFM4IDM5Mi45NjcgOCAyNTYgMTE5LjAzMyA4IDI1NiA4czI0OCAxMTEuMDMzIDI0OCAyNDh6TTM2My40MTEgMzYwLjQxNGMtNDYuNzI5LTg0LjgyNS00My4yOTktNzguNjM2LTQ0LjcwMi04MC45OCAyMy40MzItMTUuMTcyIDM3Ljk0NS00Mi45NzkgMzcuOTQ1LTc0LjQ4NiAwLTU0LjI0NC0zMS41LTg5LjI1Mi0xMDUuNDk4LTg5LjI1MmgtNzAuNjY3Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRWMzcyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyMi41NjdjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di03MS42NjNoMjUuNTU2bDQ0LjEyOSA4Mi45MzdhMjQuMDAxIDI0LjAwMSAwIDAgMCAyMS4xODggMTIuNzI3aDI0LjQ2NGMxOC4yNjEtLjAwMSAyOS44MjktMTkuNTkxIDIxLjAxOC0zNS41ODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlbW92ZUZvcm1hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNDE2aC0xMS4xN2w5LjI2LTI3Ljc3TDI2NyAzMzYuNCAyNDAuNDkgNDE2SDIwOGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0yOTcuODIgNDIuMUwzNzcgMjU5LjU5IDQyNi4xNyAxMTJINTQ0djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDE3NmExNiAxNiAwIDAgMC0xNiAxNnY0My45TDQ1LjQ2IDMuMzhBMTYgMTYgMCAwIDAgMjMgNi4xOUwzLjM3IDMxLjQ2YTE2IDE2IDAgMCAwIDIuODEgMjIuNDVsNTg4LjM2IDQ1NC43MmExNiAxNiAwIDAgMCAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YTE2IDE2IDAgMCAwLTIuODItMjIuNDV6TTMwOS45MSAyMDcuNzZMMjI0IDE0MS4zNlYxMTJoMTE3LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseUFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzYuMzA5IDE4OS44MzZMMzEyLjMxMyAzNy44NTFDMzI3LjcyIDI0LjU0NiAzNTIgMzUuMzQ4IDM1MiA1Ni4wMTV2ODIuNzYzYzEyOS4xODIgMTAuMjMxIDIyNCA1Mi4yMTIgMjI0IDE4My41NDggMCA2MS40NDEtMzkuNTgyIDEyMi4zMDktODMuMzMzIDE1NC4xMzItMTMuNjUzIDkuOTMxLTMzLjExMS0yLjUzMy0yOC4wNzctMTguNjMxIDM4LjUxMi0xMjMuMTYyLTMuOTIyLTE2OS40ODItMTEyLjU5LTE4Mi4wMTV2ODQuMTc1YzAgMjAuNzAxLTI0LjMgMzEuNDUzLTM5LjY4NyAxOC4xNjRMMTM2LjMwOSAyMjYuMTY0Yy0xMS4wNzEtOS41NjEtMTEuMDg2LTI2Ljc1MyAwLTM2LjMyOHptLTEyOCAzNi4zMjhMMTg0LjMxMyAzNzguMTVDMTk5LjcgMzkxLjQzOSAyMjQgMzgwLjY4NyAyMjQgMzU5Ljk4NnYtMTUuODE4bC0xMDguNjA2LTkzLjc4NUE1NS45NiA1NS45NiAwIDAgMSA5NiAyMDcuOTk4YTU1Ljk1MyA1NS45NTMgMCAwIDEgMTkuMzkzLTQyLjM4TDIyNCA3MS44MzJWNTYuMDE1YzAtMjAuNjY3LTI0LjI4LTMxLjQ2OS0zOS42ODctMTguMTY0TDguMzA5IDE4OS44MzZjLTExLjA4NiA5LjU3NS0xMS4wNzEgMjYuNzY3IDAgMzYuMzI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjMwOSAxODkuODM2TDE4NC4zMTMgMzcuODUxQzE5OS43MTkgMjQuNTQ2IDIyNCAzNS4zNDcgMjI0IDU2LjAxNXY4MC4wNTNjMTYwLjYyOSAxLjgzOSAyODggMzQuMDMyIDI4OCAxODYuMjU4IDAgNjEuNDQxLTM5LjU4MSAxMjIuMzA5LTgzLjMzMyAxNTQuMTMyLTEzLjY1MyA5LjkzMS0zMy4xMTEtMi41MzMtMjguMDc3LTE4LjYzMSA0NS4zNDQtMTQ1LjAxMi0yMS41MDctMTgzLjUxLTE3Ni41OS0xODUuNzQyVjM2MGMwIDIwLjctMjQuMyAzMS40NTMtMzkuNjg3IDE4LjE2NGwtMTc2LjAwNC0xNTJjLTExLjA3MS05LjU2Mi0xMS4wODYtMjYuNzUzIDAtMzYuMzI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXB1YmxpY2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxOTJjMC04OC40LTcxLjYtMTYwLTE2MC0xNjBIMTYwQzcxLjYgMzIgMCAxMDMuNiAwIDE5MnY2NGg1NDR2LTY0em0tMzY3LjctMjEuNmwtMTkuOCAxOS4zIDQuNyAyNy4zYy44IDQuOS00LjMgOC42LTguNyA2LjNMMTI4IDIxMC40bC0yNC41IDEyLjljLTQuMyAyLjMtOS41LTEuNC04LjctNi4zbDQuNy0yNy4zLTE5LjgtMTkuM2MtMy42LTMuNS0xLjYtOS41IDMuMy0xMC4ybDI3LjQtNCAxMi4yLTI0LjhjMi4yLTQuNSA4LjYtNC40IDEwLjcgMGwxMi4yIDI0LjggMjcuNCA0YzUgLjcgNi45IDYuNyAzLjQgMTAuMnptMTQ0IDBsLTE5LjggMTkuMyA0LjcgMjcuM2MuOCA0LjktNC4zIDguNi04LjcgNi4zTDI3MiAyMTAuNGwtMjQuNSAxMi45Yy00LjMgMi4zLTkuNS0xLjQtOC43LTYuM2w0LjctMjcuMy0xOS44LTE5LjNjLTMuNi0zLjUtMS42LTkuNSAzLjMtMTAuMmwyNy40LTQgMTIuMi0yNC44YzIuMi00LjUgOC42LTQuNCAxMC43IDBsMTIuMiAyNC44IDI3LjQgNGM1IC43IDYuOSA2LjcgMy40IDEwLjJ6bTE0NCAwbC0xOS44IDE5LjMgNC43IDI3LjNjLjggNC45LTQuMyA4LjYtOC43IDYuM0w0MTYgMjEwLjRsLTI0LjUgMTIuOWMtNC4zIDIuMy05LjUtMS40LTguNy02LjNsNC43LTI3LjMtMTkuOC0xOS4zYy0zLjYtMy41LTEuNi05LjUgMy4zLTEwLjJsMjcuNC00IDEyLjItMjQuOGMyLjItNC41IDguNi00LjQgMTAuNyAwbDEyLjIgMjQuOCAyNy40IDRjNSAuNyA2LjkgNi43IDMuNCAxMC4yek02MjQgMzIwaC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OEgwdjE3NmMwIDguOCA3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2di04MGgxOTJ2ODBjMCA4LjggNy4yIDE2IDE2IDE2aDk2YzguOCAwIDE2LTcuMiAxNi0xNlYzNTJoMzJ2NDMuM2MwIDQxLjggMzAgODAuMSA3MS42IDg0LjMgNDcuOCA0LjkgODguNC0zMi43IDg4LjQtNzkuNnYtNjRjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXN0cm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMTI4YzM1LjMgMCA2NC0yOC43IDY0LTY0UzE2My4zIDAgMTI4IDAgNjQgMjguNyA2NCA2NHMyOC43IDY0IDY0IDY0em0zODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NFM1NDcuMyAwIDUxMiAwcy02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bTEyNy4zIDIyNi41bC00NS42LTE4NS44Yy0zLjMtMTMuNS0xNS41LTIzLTI5LjgtMjQuMi0xNSA5LjctMzIuOCAxNS41LTUyIDE1LjUtMTkuMiAwLTM3LTUuOC01Mi0xNS41LTE0LjMgMS4yLTI2LjUgMTAuNy0yOS44IDI0LjJsLTQ1LjYgMTg1LjhDMzgxIDM2OS42IDM5MyAzODQgNDA5LjIgMzg0SDQ2NHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzg0aDU0LjhjMTYuMiAwIDI4LjItMTQuNCAyNC41LTI5LjV6TTMzNiAwaC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4MGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNnpNMTgwLjEgMTQ0LjRjLTE1IDkuOC0zMi45IDE1LjYtNTIuMSAxNS42LTE5LjIgMC0zNy4xLTUuOC01Mi4xLTE1LjZDNTEuMyAxNDYuNSAzMiAxNjYuOSAzMiAxOTJ2MTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDh2MTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjM1Mmg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE5MmMwLTI1LjEtMTkuMy00NS41LTQzLjktNDcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmV0d2VldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjkuNjU3IDM0My41OThMNTI4Ljk3MSA0NDQuMjg0Yy05LjM3MyA5LjM3Mi0yNC41NjggOS4zNzItMzMuOTQxIDBMMzk0LjM0MyAzNDMuNTk4Yy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFsMTAuODIzLTEwLjgyM2M5LjU2Mi05LjU2MiAyNS4xMzMtOS4zNCAzNC40MTkuNDkyTDQ4MCAzNDIuMTE4VjE2MEgyOTIuNDUxYTI0LjAwNSAyNC4wMDUgMCAwIDEtMTYuOTcxLTcuMDI5bC0xNi0xNkMyNDQuMzYxIDEyMS44NTEgMjU1LjA2OSA5NiAyNzYuNDUxIDk2SDUyMGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MjIyLjExOGw0MC40MTYtNDIuNzkyYzkuMjg1LTkuODMxIDI0Ljg1Ni0xMC4wNTQgMzQuNDE5LS40OTJsMTAuODIzIDEwLjgyM2M5LjM3MiA5LjM3MiA5LjM3MiAyNC41NjktLjAwMSAzMy45NDF6bS0yNjUuMTM4IDE1LjQzMUEyMy45OTkgMjMuOTk5IDAgMCAwIDM0Ny41NDggMzUySDE2MFYxNjkuODgxbDQwLjQxNiA0Mi43OTJjOS4yODYgOS44MzEgMjQuODU2IDEwLjA1NCAzNC40MTkuNDkxbDEwLjgyMi0xMC44MjJjOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxTDE0NC45NzEgNjcuNzE2Yy05LjM3My05LjM3My0yNC41NjktOS4zNzMtMzMuOTQxIDBMMTAuMzQzIDE2OC40MDJjLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWwxMC44MjIgMTAuODIyYzkuNTYyIDkuNTYyIDI1LjEzMyA5LjM0IDM0LjQxOS0uNDkxTDk2IDE2OS44ODFWMzkyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNDMuNTQ5YzIxLjM4MiAwIDMyLjA5LTI1Ljg1MSAxNi45NzEtNDAuOTcxbC0xNi4wMDEtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpYmJvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjEgNDQ0LjNjLTkuNiAxMC44LTcuNSAyNy42IDQuNSAzNS43bDY4LjggMjcuOWM5LjkgNi43IDIzLjMgNSAzMS4zLTMuOGw5MS44LTEwMS45LTc5LjItODcuOS0xMTcuMiAxMzB6bTQzNS44IDBzLTI5Mi0zMjQuNi0yOTUuNC0zMzAuMWMxNS40LTguNCA0MC4yLTE3LjkgNzcuNS0xNy45czYyLjEgOS41IDc3LjUgMTcuOWMtMy4zIDUuNi01NiA2NC42LTU2IDY0LjZsNzkuMSA4Ny43IDM0LjItMzhjMjguNy0zMS45IDMzLjMtNzguNiAxMS40LTExNS41bC00My43LTczLjVjLTQuMy03LjItOS45LTEzLjMtMTYuOC0xOC00MC43LTI3LjYtMTI3LjQtMjkuNy0xNzEuNCAwLTYuOSA0LjctMTIuNSAxMC44LTE2LjggMThsLTQzLjYgNzMuMmMtMS41IDIuNS0zNy4xIDYyLjIgMTEuNSAxMTZMMzM3LjUgNTA0YzggOC45IDIxLjQgMTAuNSAzMS4zIDMuOGw2OC44LTI3LjljMTEuOS04IDE0LTI0LjggNC4zLTM1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDY0QzExMC4wNiA2NCAwIDEyNS45MSAwIDIwOHY5OC4xM0MwIDM4NC40OCAxMTQuNjIgNDQ4IDI1NiA0NDhzMjU2LTYzLjUyIDI1Ni0xNDEuODdWMjA4YzAtODIuMDktMTEwLjA2LTE0NC0yNTYtMTQ0em0wIDY0YzEwNi4wNCAwIDE5MiAzNS44MiAxOTIgODAgMCA5LjI2LTMuOTcgMTguMTItMTAuOTEgMjYuMzlDMzkyLjE1IDIwOC4yMSAzMjguMjMgMTkyIDI1NiAxOTJzLTEzNi4xNSAxNi4yMS0xODEuMDkgNDIuMzlDNjcuOTcgMjI2LjEyIDY0IDIxNy4yNiA2NCAyMDhjMC00NC4xOCA4NS45Ni04MCAxOTItODB6TTEyMC40MyAyNjQuNjRDMTU1LjA0IDI0OS45MyAyMDEuNjQgMjQwIDI1NiAyNDBzMTAwLjk2IDkuOTMgMTM1LjU3IDI0LjY0QzM1Ni44NCAyNzkuMDcgMzA4LjkzIDI4OCAyNTYgMjg4cy0xMDAuODQtOC45My0xMzUuNTctMjMuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTczLjE5IDQwMi42N2wtMTM5Ljc5LTMyMEM0MjguNDMgNzEuMjkgNDE3LjYgNjQgNDA1LjY4IDY0aC05Ny41OWwyLjQ1IDIzLjE2Yy41IDQuNzItMy4yMSA4Ljg0LTcuOTYgOC44NGgtMjkuMTZjLTQuNzUgMC04LjQ2LTQuMTItNy45Ni04Ljg0TDI2Ny45MSA2NGgtOTcuNTljLTExLjkzIDAtMjIuNzYgNy4yOS0yNy43MyAxOC42N0wyLjggNDAyLjY3Qy02LjQ1IDQyMy44NiA4LjMxIDQ0OCAzMC41NCA0NDhoMTk2Ljg0bDEwLjMxLTk3LjY4Yy44Ni04LjE0IDcuNzItMTQuMzIgMTUuOTEtMTQuMzJoNjguOGM4LjE5IDAgMTUuMDUgNi4xOCAxNS45MSAxNC4zMkwzNDguNjIgNDQ4aDE5Ni44NGMyMi4yMyAwIDM2Ljk5LTI0LjE0IDI3LjczLTQ1LjMzek0yNjAuNCAxMzUuMTZhOCA4IDAgMCAxIDcuOTYtNy4xNmgzOS4yOWM0LjA5IDAgNy41MyAzLjA5IDcuOTYgNy4xNmw0LjYgNDMuNThjLjc1IDcuMDktNC44MSAxMy4yNi0xMS45MyAxMy4yNmgtNDAuNTRjLTcuMTMgMC0xMi42OC02LjE3LTExLjkzLTEzLjI2bDQuNTktNDMuNTh6TTMxNS42NCAzMDRoLTU1LjI5Yy05LjUgMC0xNi45MS04LjIzLTE1LjkxLTE3LjY4bDUuMDctNDhjLjg2LTguMTQgNy43Mi0xNC4zMiAxNS45MS0xNC4zMmg0NS4xNWM4LjE5IDAgMTUuMDUgNi4xOCAxNS45MSAxNC4zMmw1LjA3IDQ4YzEgOS40NS02LjQxIDE3LjY4LTE1LjkxIDE3LjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2JvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiwyMjRINjRWNDE2SDMyQTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLDAsMzg0VjI1NkEzMS45NjE2NiwzMS45NjE2NiwwLDAsMSwzMiwyMjRabTUxMi00OFY0NDhhNjQuMDYzMjgsNjQuMDYzMjgsMCwwLDEtNjQsNjRIMTYwYTY0LjA2MzI4LDY0LjA2MzI4LDAsMCwxLTY0LTY0VjE3NmE3OS45NzQsNzkuOTc0LDAsMCwxLDgwLTgwSDI4OFYzMmEzMiwzMiwwLDAsMSw2NCwwVjk2SDQ2NEE3OS45NzQsNzkuOTc0LDAsMCwxLDU0NCwxNzZaTTI2NCwyNTZhNDAsNDAsMCwxLDAtNDAsNDBBMzkuOTk3LDM5Ljk5NywwLDAsMCwyNjQsMjU2Wm0tOCwxMjhIMTkydjMyaDY0Wm05NiwwSDI4OHYzMmg2NFpNNDU2LDI1NmE0MCw0MCwwLDEsMC00MCw0MEEzOS45OTcsMzkuOTk3LDAsMCwwLDQ1NiwyNTZabS04LDEyOEgzODR2MzJoNjRaTTY0MCwyNTZWMzg0YTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLTMyLDMySDU3NlYyMjRoMzJBMzEuOTYxNjYsMzEuOTYxNjYsMCwwLDEsNjQwLDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNS4xMjAxOSwxOS4wOTM3NWMtMS4xODk0NS01LjUzMTI1LTYuNjU4MTktMTEtMTIuMjA3LTEyLjE4NzVDNDYwLjcxNiwwLDQzNS41MDcsMCw0MTAuNDA3NDcsMCwzMDcuMTc1MjMsMCwyNDUuMjY5MDksNTUuMjAzMTIsMTk5LjA1MjM4LDEyOEg5NC44Mzc3MmMtMTYuMzQ3NjMuMDE1NjItMzUuNTU2NTgsMTEuODc1LTQyLjg4NjY0LDI2LjQ4NDM4TDIuNTE1NjIsMjUzLjI5Njg4QTI4LjQsMjguNCwwLDAsMCwwLDI2NGEyNC4wMDg2NywyNC4wMDg2NywwLDAsMCwyNC4wMDU4MiwyNEgxMjcuODE2MThsLTIyLjQ3NDU3LDIyLjQ2ODc1Yy0xMS4zNjUyMSwxMS4zNjEzMy0xMi45OTYwNywzMi4yNTc4MSwwLDQ1LjI1TDE1Ni4yNDU4Miw0MDYuNjI1YzExLjE1NjIzLDExLjE4NzUsMzIuMTU2MTksMTMuMTU2MjUsNDUuMjc3MjYsMGwyMi40NzQ1Ny0yMi40Njg3NVY0ODhhMjQuMDA4NjcsMjQuMDA4NjcsMCwwLDAsMjQuMDA1ODEsMjQsMjguNTU5MzQsMjguNTU5MzQsMCwwLDAsMTAuNzA3LTIuNTE1NjJsOTguNzI4MzQtNDkuMzkwNjNjMTQuNjI4ODgtNy4yOTY4NywyNi41MDc3Ni0yNi41LDI2LjUwNzc2LTQyLjg1OTM3VjMxMi43OTY4OGM3Mi41OTc1My00Ni4zMTI1LDEyOC4wMzQ5My0xMDguNDA2MjYsMTI4LjAzNDkzLTIxMS4wOTM3NkM1MTIuMDc1MjYsNzYuNSw1MTIuMDc1MjYsNTEuMjk2ODgsNTA1LjEyMDE5LDE5LjA5Mzc1Wk0zODQuMDQwMzMsMTY4QTQwLDQwLDAsMSwxLDQyNC4wNSwxMjgsNDAuMDIzMjIsNDAuMDIzMjIsMCwwLDEsMzg0LjA0MDMzLDE2OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm91dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDMyMGgtOTZjLTE3LjYgMC0zMi0xNC40LTMyLTMyczE0LjQtMzIgMzItMzJoOTZzOTYtMTA3IDk2LTE2MC00My05Ni05Ni05Ni05NiA0My05NiA5NmMwIDI1LjUgMjIuMiA2My40IDQ1LjMgOTZIMzIwYy01Mi45IDAtOTYgNDMuMS05NiA5NnM0My4xIDk2IDk2IDk2aDk2YzE3LjYgMCAzMiAxNC40IDMyIDMycy0xNC40IDMyLTMyIDMySDE4NS41Yy0xNiAyNC44LTMzLjggNDcuNy00Ny4zIDY0SDQxNmM1Mi45IDAgOTYtNDMuMSA5Ni05NnMtNDMuMS05Ni05Ni05NnptMC0yNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyek05NiAyNTZjLTUzIDAtOTYgNDMtOTYgOTZzOTYgMTYwIDk2IDE2MCA5Ni0xMDcgOTYtMTYwLTQzLTk2LTk2LTk2em0wIDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJzc1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6TTExMiA0MTZjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTE1Ny41MzMgMGgtMzQuMzM1Yy02LjAxMSAwLTExLjA1MS00LjYzNi0xMS40NDItMTAuNjM0LTUuMjE0LTgwLjA1LTY5LjI0My0xNDMuOTItMTQ5LjEyMy0xNDkuMTIzLTUuOTk3LS4zOS0xMC42MzMtNS40MzEtMTAuNjMzLTExLjQ0MXYtMzQuMzM1YzAtNi41MzUgNS40NjgtMTEuNzc3IDExLjk5NC0xMS40MjUgMTEwLjU0NiA1Ljk3NCAxOTguOTk3IDk0LjUzNiAyMDQuOTY0IDIwNC45NjQuMzUyIDYuNTI2LTQuODkgMTEuOTk0LTExLjQyNSAxMS45OTR6bTEwMy4wMjcgMGgtMzQuMzM0Yy02LjE2MSAwLTExLjE3NS00Ljg4Mi0xMS40MjctMTEuMDM4LTUuNTk4LTEzNi41MzUtMTE1LjIwNC0yNDYuMTYxLTI1MS43Ni0yNTEuNzZDNjguODgyIDE1Mi45NDkgNjQgMTQ3LjkzNSA2NCAxNDEuNzc0VjEwNy40NGMwLTYuNDU0IDUuMzM4LTExLjY2NCAxMS43ODctMTEuNDMyIDE2Ny44MyA2LjAyNSAzMDIuMjEgMTQxLjE5MSAzMDguMjA1IDMwOC4yMDUuMjMyIDYuNDQ5LTQuOTc4IDExLjc4Ny0xMS40MzIgMTEuNzg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LjA4MSA0MTUuOTU5YzAgMzUuMzY5LTI4LjY3MiA2NC4wNDEtNjQuMDQxIDY0LjA0MVMwIDQ1MS4zMjggMCA0MTUuOTU5czI4LjY3Mi02NC4wNDEgNjQuMDQxLTY0LjA0MSA2NC4wNCAyOC42NzMgNjQuMDQgNjQuMDQxem0xNzUuNjYgNDcuMjVjLTguMzU0LTE1NC42LTEzMi4xODUtMjc4LjU4Ny0yODYuOTUtMjg2Ljk1QzcuNjU2IDE3NS43NjUgMCAxODMuMTA1IDAgMTkyLjI1M3Y0OC4wNjljMCA4LjQxNSA2LjQ5IDE1LjQ3MiAxNC44ODcgMTYuMDE4IDExMS44MzIgNy4yODQgMjAxLjQ3MyA5Ni43MDIgMjA4Ljc3MiAyMDguNzcyLjU0NyA4LjM5NyA3LjYwNCAxNC44ODcgMTYuMDE4IDE0Ljg4N2g0OC4wNjljOS4xNDkuMDAxIDE2LjQ4OS03LjY1NSAxNS45OTUtMTYuNzl6bTE0NC4yNDkuMjg4QzQzOS41OTYgMjI5LjY3NyAyNTEuNDY1IDQwLjQ0NSAxNi41MDMgMzIuMDEgNy40NzMgMzEuNjg2IDAgMzguOTgxIDAgNDguMDE2djQ4LjA2OGMwIDguNjI1IDYuODM1IDE1LjY0NSAxNS40NTMgMTUuOTk5IDE5MS4xNzkgNy44MzkgMzQ0LjYyNyAxNjEuMzE2IDM1Mi40NjUgMzUyLjQ2NS4zNTMgOC42MTggNy4zNzMgMTUuNDUzIDE1Ljk5OSAxNS40NTNoNDguMDY4YzkuMDM0LS4wMDEgMTYuMzI5LTcuNDc0IDE2LjAwNS0xNi41MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1YmxlU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuMzYgMzIwQzMyNC40OCAzMjAgMzg0IDI2MC41NDIgMzg0IDE3NS4wNzFTMzI0LjQ4IDMyIDIzOS4zNiAzMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyMDYuNjMySDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEyVjMwOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDUydjMySDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTJ2NTJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1OC41NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi01MkgzMDhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxNDYuNTZ2LTMyaDkyLjh6bS05Mi44LTIxOS4yNTJoNzguNzJjNDYuNzIgMCA3NC44OCAyOS4xMSA3NC44OCA3NC4zMjMgMCA0NS44MzItMjguMTYgNzUuNTYxLTc2LjE2IDc1LjU2MWgtNzcuNDRWMTAwLjc0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXJDb21iaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjg4aC01NmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDU2di02NGgtNTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg1NlY5NmgtNTZjLTQuNDIgMC04LTMuNTgtOC04VjcyYzAtNC40MiAzLjU4LTggOC04aDU2VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMi43Ny45MSA1LjI0IDEuNTcgNy44TDE2MCAzMjkuMzhWMjg4em0zMjAgNjRoLTMydjU2YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTU2aC02NHY1NmMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di01NmgtNjR2NTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtNTZoLTQxLjM3TDI0LjIgNTEwLjQzYzIuNTYuNjYgNS4wNCAxLjU3IDcuOCAxLjU3aDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlckhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDEyOGgtNDh2ODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhoLTY0djg4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTg4aC02NHY4OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di04OGgtNjR2ODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhoLTY0djg4YzAgNC40Mi0zLjU4IDgtOCA4SDg4Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTkyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTEyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTYwYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1bGVyVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDQxNmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4di02NGgtODhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4OHYtNjRoLTg4Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODh2LTY0aC04OGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTkyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0aC04OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM1LjcgMTY3LjJMNTU2LjEgMzEuN2MtOC44LTE1LTI4LjMtMjAuMS00My41LTExLjVsLTY5IDM5LjFMNTAzLjMgMTYxYzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45TDQxNiA3NWwtNTUuMiAzMS4zIDI3LjkgNDcuNGMyLjIgMy44LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOUwzMzMuMiAxMjIgMjc4IDE1My4zIDMzNy44IDI1NWMyLjIgMy43LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOWwtNTkuNy0xMDEuNy01NS4yIDMxLjMgMjcuOSA0Ny40YzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45bC0yNy45LTQ3LjUtNTUuMiAzMS4zIDU5LjcgMTAxLjdjMi4yIDMuNy45IDguNS0yLjkgMTAuN2wtMTMuOCA3LjhjLTMuOCAyLjItOC43LjktMTAuOS0yLjlMODQuOSAyNjIuOWwtNjkgMzkuMUMuNyAzMTAuNy00LjYgMzI5LjggNC4yIDM0NC44bDc5LjYgMTM1LjZjOC44IDE1IDI4LjMgMjAuMSA0My41IDExLjVMNjI0LjEgMjEwYzE1LjItOC42IDIwLjQtMjcuOCAxMS42LTQyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1bm5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhTMjk4LjUxIDAgMjcyIDBzLTQ4IDIxLjQ5LTQ4IDQ4IDIxLjQ5IDQ4IDQ4IDQ4ek0xMTMuNjkgMzE3LjQ3bC0xNC44IDM0LjUySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyaDc3LjQ1YzE5LjI1IDAgMzYuNTgtMTEuNDQgNDQuMTEtMjkuMDlsOC43OS0yMC41Mi0xMC42Ny02LjNjLTE3LjMyLTEwLjIzLTMwLjA2LTI1LjM3LTM3Ljk5LTQyLjYxek0zODQgMjIzLjk5aC00NC4wM2wtMjYuMDYtNTMuMjVjLTEyLjUtMjUuNTUtMzUuNDUtNDQuMjMtNjEuNzgtNTAuOTRsLTcxLjA4LTIxLjE0Yy0yOC4zLTYuOC01Ny43Ny0uNTUtODAuODQgMTcuMTRsLTM5LjY3IDMwLjQxYy0xNC4wMyAxMC43NS0xNi42OSAzMC44My01LjkyIDQ0Ljg2czMwLjg0IDE2LjY2IDQ0Ljg2IDUuOTJsMzkuNjktMzAuNDFjNy42Ny01Ljg5IDE3LjQ0LTggMjUuMjctNi4xNGwxNC43IDQuMzctMzcuNDYgODcuMzljLTEyLjYyIDI5LjQ4LTEuMzEgNjQuMDEgMjYuMyA4MC4zMWw4NC45OCA1MC4xNy0yNy40NyA4Ny43M2MtNS4yOCAxNi44NiA0LjExIDM0LjgxIDIwLjk3IDQwLjA5IDMuMTkgMSA2LjQxIDEuNDggOS41OCAxLjQ4IDEzLjYxIDAgMjYuMjMtOC43NyAzMC41Mi0yMi40NWwzMS42NC0xMDEuMDZjNS45MS0yMC43Ny0yLjg5LTQzLjA4LTIxLjY0LTU0LjM5bC02MS4yNC0zNi4xNCAzMS4zMS03OC4yOCAyMC4yNyA0MS40M2M4IDE2LjM0IDI0LjkyIDI2Ljg5IDQzLjExIDI2Ljg5SDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMycy0xNC4zMy0zMS45OS0zMi0zMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVwZWVTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOCA5NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY0NC43NDhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg4NS4yOGMyNy4zMDggMCA0OC4yNjEgOS45NTggNjAuOTcgMjcuMjUySDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTU4Ljc1N2MtNi4yMTcgMzYuMDg2LTMyLjk2MSA1OC42MzItNzQuNzU3IDU4LjYzMkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1My4wMTJjMCAzLjM0OSAxLjQgNi41NDYgMy44NjEgOC44MThsMTY1LjA1MiAxNTIuMzU2YTEyLjAwMSAxMi4wMDEgMCAwIDAgOC4xMzkgMy4xODJoODIuNTYyYzEwLjkyNCAwIDE2LjE2Ni0xMy40MDggOC4xMzktMjAuODE4TDExNi44NzEgMzE5LjkwNmM3Ni40OTktMi4zNCAxMzEuMTQ0LTUzLjM5NSAxMzguMzE4LTEyNy45MDZIMzA4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTU4LjY5Yy0zLjQ4Ni0xMS41NDEtOC4yOC0yMi4yNDYtMTQuMjUyLTMySDMwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FkQ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgOTAuMSA0OC4yIDE2OC43IDEyMCAyMTIuMVYyODhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYxOTYuN2MyOS41IDEyLjQgNjIgMTkuMyA5NiAxOS4zczY2LjUtNi45IDk2LTE5LjNWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MTgwLjFDNDQ3LjggNDI0LjcgNDk2IDM0NiA0OTYgMjU2IDQ5NiAxMTkgMzg1IDggMjQ4IDh6bS02NS41IDIxNi41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMTEyIDIzM2MtMy44IDMuMy05LjMgNC0xMy43IDEuNi00LjQtMi40LTYuOS03LjQtNi4xLTEyLjQgNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMjA4IDE5NyAyMTIgMjIyLjJjLjggNS0xLjcgMTAtNi4xIDEyLjQtNS44IDMuMS0xMS4yLjctMTMuNy0xLjZsLTkuNy04LjV6TTI0OCA0MTZjLTI2LjUgMC00OC0yOC43LTQ4LTY0czIxLjUtNjQgNDgtNjQgNDggMjguNyA0OCA2NC0yMS41IDY0LTQ4IDY0em0xNDkuOC0xODEuNWMtNS44IDMuMS0xMS4yLjctMTMuNy0xLjZsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwzMDQgMjMzYy0zLjggMy4zLTkuMyA0LTEzLjcgMS42LTQuNC0yLjQtNi45LTcuNC02LjEtMTIuNCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVM0MDAgMTk3IDQwNCAyMjIuMmMuNiA0LjktMS44IDkuOS02LjIgMTIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FkVGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyek0xNTIgNDE2Yy0yNi41IDAtNDgtMjEtNDgtNDcgMC0yMCAyOC41LTYwLjQgNDEuNi03Ny44IDMuMi00LjMgOS42LTQuMyAxMi44IDBDMTcxLjUgMzA4LjYgMjAwIDM0OSAyMDAgMzY5YzAgMjYtMjEuNSA0Ny00OCA0N3ptMTYtMTc2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTcwLjIgMTU0LjJDMzE1LjggMzY3LjQgMjgyLjkgMzUyIDI0OCAzNTJjLTIxLjIgMC0yMS4yLTMyIDAtMzIgNDQuNCAwIDg2LjMgMTkuNiAxMTQuNyA1My44IDEzLjggMTYuNC0xMS4yIDM2LjUtMjQuNSAyMC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXRlbGxpdGVEaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNS40NDk1NCw0NjIuNTljNy4zOTE1Nyw3LjI5NzkyLDYuMTg4MjksMjAuMDk2NjEtMy4wMDAzOCwyNS4wMDM1Ni03Ny43MTMsNDEuODAyODEtMTc2LjcyNTU5LDI5LjkxMDUtMjQyLjM0MzMxLTM1LjcwODJDLTUuNDk2MjQsMzg2LjI4MjI3LTE3LjQwNCwyODcuMzYyLDI0LjQxMzgxLDIwOS41NTRjNC44OTEyNS05LjA5NSwxNy42ODk3NS0xMC4yOTgzNCwyNS4wMDMxOC0zLjAwMDQzTDE2Ni4yMjg3MiwzMjMuMzY3MDhsMjcuMzk0MTEtMjcuMzk0NTJjLS42ODc1OS0yLjYwOTc0LTEuNTk0LTUuMDAwNzEtMS41OTQtNy44MTM2MWEzMi4wMDQwNywzMi4wMDQwNywwLDEsMSwzMi4wMDQwNywzMi4wMDQ1NWMtMi43OTcyMywwLTUuMjAzNzgtLjg5MDc1LTcuNzk3ODYtMS41OTRsLTI3LjQwOTc0LDI3LjQxMDE1Wk01MTEuOTc1OCwzMDMuMDY3MzJhMTYuMTAzMzYsMTYuMTAzMzYsMCwwLDEtMTYuMDAyLDE3LjAwMjQySDQ2My44NjAzMWExNS45Njk1NiwxNS45Njk1NiwwLDAsMS0xNS44OTI2NS0xNS4wMDIxM0M0NDAuNDY2NzEsMTc1LjU0OTIsMzM2LjQ1MzQ4LDcwLjUzNDI3LDIwNy4wMzA3OCw2My41MzMyOGExNS44NDQ4NiwxNS44NDQ4NiwwLDAsMS0xNS4wMDE5MS0xNS45MDg1MlYxNi4wMjY1MkExNi4wOTM4OSwxNi4wOTM4OSwwLDAsMSwyMDkuMDMxLjAyNDI1QzM3Mi4yNTQ5MSw4LjYxOTIyLDUwMy40NzQ3MiwxMzkuODQxLDUxMS45NzU4LDMwMy4wNjczMlptLTk2LjAxMjIxLS4yOTY5MmExNi4yMTA5MywxNi4yMTA5MywwLDAsMS0xNi4xMTE0MiwxNy4yOTkzNEgzNjcuNjQ1YTE2LjA2ODYyLDE2LjA2ODYyLDAsMCwxLTE1Ljg5MjY1LTE0LjcwNTIyYy02LjkwNzEyLTc3LjAxMDk0LTY4LjExOC0xMzguOTEwMzctMTQ0LjkyNDY3LTE0NS4yMjM3NmExNS45NCwxNS45NCwwLDAsMS0xNC43OTg3Ni0xNS44OTI4OVYxMTIuMTMzOTNhMTYuMTM0LDE2LjEzNCwwLDAsMSwxNy4yOTkwOC0xNi4wOTZDMzE5LjQ1MTMyLDEwNC41MzkxLDQwNy41NTYyNywxOTIuNjQ1MzgsNDE1Ljk2MzU5LDMwMi43NzA0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXRlbGxpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjYwOTY5LDMxMC4wNDIwNmwtOTYuNzAzOTMsOTYuNzE2MjVhMzEuODgxNTEsMzEuODgxNTEsMCwwLDEtNDUuMDA3NjUsMEwyODAuNTcyLDMyNi4zNDExNWwtOS44OTIzMSw5LjkwNzU5YTE5MC41NjM0MywxOTAuNTYzNDMsMCwwLDEtNS40MDcxNiwxNjguNTIyODdjLTQuNTAwNzcsOC41MDExNS0xNi4zOTM0Miw5LjU5NTA1LTIzLjIwNzA3LDIuNzk3MjVMMTM0LjU0NzE1LDQwMC4wNTQyOGwtMTcuNzk5OSwxNy43OTkyOWMuNzAzMjQsMi42MDk3MiwxLjYwOTY1LDUuMDAwNjcsMS42MDk2NSw3Ljc5NzkzYTMyLjAwNTQ0LDMyLjAwNTQ0LDAsMSwxLTMyLjAwNTQ0LTMyLjAwNDM0YzIuNzk3MzUsMCw1LjE4ODM4LjkwNjM3LDcuNzk4MiwxLjYwOTU5bDE3Ljc5OTktMTcuNzk5MjlMNC40MzEyOSwyNjkuOTQyODdjLTYuNzk4LTYuODEzNDItNS43MDQwOS0xOC42MTE5LDIuNzk3MzUtMjMuMjA2MjdhMTkwLjU4MTYxLDE5MC41ODE2MSwwLDAsMSwxNjguNTI4NjQtNS40MDdsOS43OTg1NC05Ljc5ODIxLTgwLjMxMDUzLTgwLjQxNzE2YTMyLjAwMiwzMi4wMDIsMCwwLDEsMC00NS4wOTk4N0wyMDEuOTY0NzQsOS4yOTgxNEEzMS42MjYzOSwzMS42MjYzOSwwLDAsMSwyMjQuNDY4NjgsMGEzMS45OTk1MSwzMS45OTk1MSwwLDAsMSwyMi41OTc1OSw5LjI5ODE0bDgwLjMyNjE1LDgwLjMwNzc3LDQ3LjgwNS00Ny44OTcxM2EzMy42MDc1LDMzLjYwNzUsMCwwLDEsNDcuNTA4MDgsMGw0Ny41MDgwNyw0Ny41MDY0NWEzMy42MzMwOCwzMy42MzMwOCwwLDAsMSwwLDQ3LjUwNjQ0bC00Ny44MDUsNDcuODk3MTNMNTAyLjcxOTA4LDI2NS4wMzZBMzEuNzg5MzgsMzEuNzg5MzgsMCwwLDEsNTAyLjYwOTY5LDMxMC4wNDIwNlpNMjE5LjU2MTU5LDE5Ny40MzNsNzMuODI1MDUtNzMuODIyNTItNjguOTE4LTY4LjktNzMuODA5NDIsNzMuODA2ODlabTIzNy43NDM1Miw5MC4xMDYtNjguOTAyMzMtNjguOTE1Ni03My44MjUsNzMuODIyNTIsNjguOTE4LDY4LjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjk0MSAxMjkuOTQxbC04My44ODItODMuODgyQTQ4IDQ4IDAgMCAwIDMxNi4xMTggMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE2My44ODJhNDggNDggMCAwIDAtMTQuMDU5LTMzLjk0MXpNMjI0IDQxNmMtMzUuMzQ2IDAtNjQtMjguNjU0LTY0LTY0IDAtMzUuMzQ2IDI4LjY1NC02NCA2NC02NHM2NCAyOC42NTQgNjQgNjRjMCAzNS4zNDYtMjguNjU0IDY0LTY0IDY0em05Ni0zMDQuNTJWMjEyYzAgNi42MjctNS4zNzMgMTItMTIgMTJINzZjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJWMTA4YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMjI4LjUyYzMuMTgzIDAgNi4yMzUgMS4yNjQgOC40ODUgMy41MTVsMy40OCAzLjQ4QTExLjk5NiAxMS45OTYgMCAwIDEgMzIwIDExMS40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Nob29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0djI3MmMwIDguODQgNy4xNiAxNiAxNiAxNmg4MFYxOTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ6bTM2MC00OGgtMjR2LTQwYzAtNC40Mi0zLjU4LTgtOC04aC0xNmMtNC40MiAwLTggMy41OC04IDh2NjRjMCA0LjQyIDMuNTggOCA4IDhoNDhjNC40MiAwIDgtMy41OCA4LTh2LTE2YzAtNC40Mi0zLjU4LTgtOC04em0xMzcuNzUtNjMuOTZsLTE2MC0xMDYuNjdhMzIuMDIgMzIuMDIgMCAwIDAtMzUuNSAwbC0xNjAgMTA2LjY3QTMyLjAwMiAzMi4wMDIgMCAwIDAgMTI4IDEzOC42NlY1MTJoMTI4VjM2OGMwLTguODQgNy4xNi0xNiAxNi0xNmg5NmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNDRoMTI4VjEzOC42N2MwLTEwLjctNS4zNS0yMC43LTE0LjI1LTI2LjYzek0zMjAgMjU2Yy00NC4xOCAwLTgwLTM1LjgyLTgwLTgwczM1LjgyLTgwIDgwLTgwIDgwIDM1LjgyIDgwIDgwLTM1LjgyIDgwLTgwIDgwem0yODgtNjRoLTY0djMyMGg4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyMjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyZXdkcml2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDBMMzIwIDk2djYyLjA2bC04My4wMyA4My4wM2M2Ljc5IDQuMjUgMTMuMjcgOS4wNiAxOS4wNyAxNC44NyA1LjggNS44IDEwLjYyIDEyLjI4IDE0Ljg3IDE5LjA3TDM1My45NCAxOTJINDE2bDk2LTEyOC02NC02NHpNMTI4IDI3OC41OUwxMC45MiAzOTUuNjdjLTE0LjU1IDE0LjU1LTE0LjU1IDM4LjE1IDAgNTIuNzFsNTIuNyA1Mi43YzE0LjU2IDE0LjU2IDM4LjE1IDE0LjU2IDUyLjcxIDBMMjMzLjQxIDM4NGMyOS4xMS0yOS4xMSAyOS4xMS03Ni4zIDAtMTA1LjQxcy03Ni4zLTI5LjExLTEwNS40MSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3JvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41MyAwIDAgMjEuNTMgMCA0OHY2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg4MFY0OEM5NiAyMS41MyA3NC40NyAwIDQ4IDB6bTIwOCA0MTIuNTdWMzUyaDI4OFY5NmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2SDExMS41OUMxMjEuNzQgMTMuNDEgMTI4IDI5LjkyIDEyOCA0OHYzNjhjMCAzOC44NyAzNC42NSA2OS42NSA3NC43NSA2My4xMkMyMzQuMjIgNDc0IDI1NiA0NDQuNDYgMjU2IDQxMi41N3pNMjg4IDM4NHYzMmMwIDUyLjkzLTQzLjA2IDk2LTk2IDk2aDMzNmM2MS44NiAwIDExMi01MC4xNCAxMTItMTEyIDAtOC44NC03LjE2LTE2LTE2LTE2SDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2RDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAwSDEyOEwwIDEyOHYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xNjAgMTYwaC00OFY2NGg0OHY5NnptODAgMGgtNDhWNjRoNDh2OTZ6bTgwIDBoLTQ4VjY0aDQ4djk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1LjA0IDQ0Mi42NmwtOTkuNzEtOTkuNjljLTQuNS00LjUtMTAuNi03LTE3LTdoLTE2LjNjMjcuNi0zNS4zIDQ0LTc5LjY5IDQ0LTEyNy45OUM0MTYuMDMgOTMuMDkgMzIyLjkyIDAgMjA4LjAyIDBTMCA5My4wOSAwIDIwNy45OHM5My4xMSAyMDcuOTggMjA4LjAyIDIwNy45OGM0OC4zIDAgOTIuNzEtMTYuNCAxMjguMDEtNDR2MTYuM2MwIDYuNCAyLjUgMTIuNSA3IDE3bDk5LjcxIDk5LjY5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC41OS4xLTMzLjk5em0tMjk3LjAyLTkwLjdjLTc5LjU0IDAtMTQ0LTY0LjM0LTE0NC0xNDMuOTggMC03OS41MyA2NC4zNS0xNDMuOTggMTQ0LTE0My45OCA3OS41NCAwIDE0NCA2NC4zNCAxNDQgMTQzLjk4IDAgNzkuNTMtNjQuMzUgMTQzLjk4LTE0NCAxNDMuOTh6bTI3LjExLTE1Mi41NGwtNDUuMDEtMTMuNWMtNS4xNi0xLjU1LTguNzctNi43OC04Ljc3LTEyLjczIDAtNy4yNyA1LjMtMTMuMTkgMTEuOC0xMy4xOWgyOC4xMWM0LjU2IDAgOC45NiAxLjI5IDEyLjgyIDMuNzIgMy4yNCAyLjAzIDcuMzYgMS45MSAxMC4xMy0uNzNsMTEuNzUtMTEuMjFjMy41My0zLjM3IDMuMzMtOS4yMS0uNTctMTIuMTQtOS4xLTYuODMtMjAuMDgtMTAuNzctMzEuMzctMTEuMzVWMTEyYzAtNC40Mi0zLjU4LTgtOC04aC0xNmMtNC40MiAwLTggMy41OC04IDh2MTYuMTJjLTIzLjYzLjYzLTQyLjY4IDIwLjU1LTQyLjY4IDQ1LjA3IDAgMTkuOTcgMTIuOTkgMzcuODEgMzEuNTggNDMuMzlsNDUuMDEgMTMuNWM1LjE2IDEuNTUgOC43NyA2Ljc4IDguNzcgMTIuNzMgMCA3LjI3LTUuMyAxMy4xOS0xMS44IDEzLjE5aC0yOC4xYy00LjU2IDAtOC45Ni0xLjI5LTEyLjgyLTMuNzItMy4yNC0yLjAzLTcuMzYtMS45MS0xMC4xMy43M2wtMTEuNzUgMTEuMjFjLTMuNTMgMy4zNy0zLjMzIDkuMjEuNTcgMTIuMTQgOS4xIDYuODMgMjAuMDggMTAuNzcgMzEuMzcgMTEuMzVWMzA0YzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04di0xNi4xMmMyMy42My0uNjMgNDIuNjgtMjAuNTQgNDIuNjgtNDUuMDcgMC0xOS45Ny0xMi45OS0zNy44MS0zMS41OS00My4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VhcmNoTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1LjA0IDQ0Mi42NmwtOTkuNzEtOTkuNjljLTQuNS00LjUtMTAuNi03LTE3LTdoLTE2LjNjMjcuNi0zNS4zIDQ0LTc5LjY5IDQ0LTEyNy45OUM0MTYuMDMgOTMuMDkgMzIyLjkyIDAgMjA4LjAyIDBTMCA5My4wOSAwIDIwNy45OHM5My4xMSAyMDcuOTggMjA4LjAyIDIwNy45OGM0OC4zIDAgOTIuNzEtMTYuNCAxMjguMDEtNDR2MTYuM2MwIDYuNCAyLjUgMTIuNSA3IDE3bDk5LjcxIDk5LjY5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC41OS4xLTMzLjk5em0tMjk3LjAyLTkwLjdjLTc5LjU0IDAtMTQ0LTY0LjM0LTE0NC0xNDMuOTggMC03OS41MyA2NC4zNS0xNDMuOTggMTQ0LTE0My45OCA3OS41NCAwIDE0NCA2NC4zNCAxNDQgMTQzLjk4IDAgNzkuNTMtNjQuMzUgMTQzLjk4LTE0NCAxNDMuOTh6bS4wMi0yMzkuOTZjLTQwLjc4IDAtNzMuODQgMzMuMDUtNzMuODQgNzMuODMgMCAzMi45NiA0OC4yNiA5My4wNSA2Ni43NSAxMTQuODZhOS4yNCA5LjI0IDAgMCAwIDE0LjE4IDBjMTguNDktMjEuODEgNjYuNzUtODEuODkgNjYuNzUtMTE0Ljg2IDAtNDAuNzgtMzMuMDYtNzMuODMtNzMuODQtNzMuODN6bTAgOTZjLTEzLjI2IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgMTkydjMyYzAgNi42LTUuNCAxMi0xMiAxMkgxMjRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDE2OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bTIwMSAyODQuN0w0NzYuNyA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDM0MyA0MDUuM2MtNC41LTQuNS03LTEwLjYtNy0xN1YzNzJjLTM1LjMgMjcuNi03OS43IDQ0LTEyOCA0NEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4YzAgNDguMy0xNi40IDkyLjctNDQgMTI4aDE2LjNjNi40IDAgMTIuNSAyLjUgMTcgN2w5OS43IDk5LjdjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0zNDQgMjA4YzAtNzUuMi02MC44LTEzNi0xMzYtMTM2UzcyIDEzMi44IDcyIDIwOHM2MC44IDEzNiAxMzYgMTM2IDEzNi02MC44IDEzNi0xMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaFBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDE5MnYzMmMwIDYuNi01LjQgMTItMTIgMTJoLTU2djU2YzAgNi42LTUuNCAxMi0xMiAxMmgtMzJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZoLTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTMyYzAtNi42IDUuNC0xMiAxMi0xMmg1NnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDMyYzYuNiAwIDEyIDUuNCAxMiAxMnY1Nmg1NmM2LjYgMCAxMiA1LjQgMTIgMTJ6bTIwMSAyODQuN0w0NzYuNyA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDM0MyA0MDUuM2MtNC41LTQuNS03LTEwLjYtNy0xN1YzNzJjLTM1LjMgMjcuNi03OS43IDQ0LTEyOCA0NEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4YzAgNDguMy0xNi40IDkyLjctNDQgMTI4aDE2LjNjNi40IDAgMTIuNSAyLjUgMTcgN2w5OS43IDk5LjdjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0zNDQgMjA4YzAtNzUuMi02MC44LTEzNi0xMzYtMTM2UzcyIDEzMi44IDcyIDIwOHM2MC44IDEzNiAxMzYgMTM2IDEzNi02MC44IDEzNi0xMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDUgNDQyLjdMNDA1LjMgMzQzYy00LjUtNC41LTEwLjYtNy0xNy03SDM3MmMyNy42LTM1LjMgNDQtNzkuNyA0NC0xMjhDNDE2IDkzLjEgMzIyLjkgMCAyMDggMFMwIDkzLjEgMCAyMDhzOTMuMSAyMDggMjA4IDIwOGM0OC4zIDAgOTIuNy0xNi40IDEyOC00NHYxNi4zYzAgNi40IDIuNSAxMi41IDcgMTdsOTkuNyA5OS43YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC42LjEtMzR6TTIwOCAzMzZjLTcwLjcgMC0xMjgtNTcuMi0xMjgtMTI4IDAtNzAuNyA1Ny4yLTEyOCAxMjgtMTI4IDcwLjcgMCAxMjggNTcuMiAxMjggMTI4IDAgNzAuNy01Ny4yIDEyOC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWVkbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA5NkgwYzAgMTIzLjcgMTAwLjMgMjI0IDIyNCAyMjR2MTQ0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwQzI4OCAxOTYuMyAxODcuNyA5NiA2NCA5NnptMzg0LTY0Yy04NC4yIDAtMTU3LjQgNDYuNS0xOTUuNyAxMTUuMiAyNy43IDMwLjIgNDguMiA2Ni45IDU5IDEwNy42QzQyNCAyNDMuMSA1MTIgMTQ3LjkgNTEyIDMyaC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAxNjBIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMlY2NGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJoNDQ4YzE3LjY3MyAwIDMyIDE0LjMyNyAzMiAzMnY2NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJ6bS00OC04OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0tNjQgMGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0xMTIgMjQ4SDMyYy0xNy42NzMgMC0zMi0xNC4zMjctMzItMzJ2LTY0YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMmg0NDhjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjY0YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMnptLTQ4LTg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bS02NCAwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bTExMiAyNDhIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMnYtNjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyaDQ0OGMxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJ2NjRjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMyem0tNDgtODhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHptLTY0IDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hhcGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCwyNTZBMTI4LDEyOCwwLDEsMCwyNTYsMzg0LDEyOCwxMjgsMCwwLDAsMTI4LDI1NlptMzc5LTU0Ljg2TDQwMC4wNywxOC4yOWEzNy4yNiwzNy4yNiwwLDAsMC02NC4xNCwwTDIyOSwyMDEuMTRDMjE0Ljc2LDIyNS41MiwyMzIuNTgsMjU2LDI2MS4wOSwyNTZINDc0LjkxQzUwMy40MiwyNTYsNTIxLjI0LDIyNS41Miw1MDcsMjAxLjE0Wk00ODAsMjg4SDMyMGEzMiwzMiwwLDAsMC0zMiwzMlY0ODBhMzIsMzIsMCwwLDAsMzIsMzJINDgwYTMyLDMyLDAsMCwwLDMyLTMyVjMyMEEzMiwzMiwwLDAsMCw0ODAsMjg4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZUFsdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHpNMzA0IDI5NmMtMTQuNTYyIDAtMjcuODIzIDUuNTYxLTM3Ljc4MyAxNC42NzFsLTY3Ljk1OC00MC43NzVhNTYuMzM5IDU2LjMzOSAwIDAgMCAwLTI3Ljc5M2w2Ny45NTgtNDAuNzc1QzI3Ni4xNzcgMjEwLjQzOSAyODkuNDM4IDIxNiAzMDQgMjE2YzMwLjkyOCAwIDU2LTI1LjA3MiA1Ni01NnMtMjUuMDcyLTU2LTU2LTU2LTU2IDI1LjA3Mi01NiA1NmMwIDQuNzk3LjYwNSA5LjQ1MyAxLjc0IDEzLjg5N2wtNjcuOTU4IDQwLjc3NUMxNzEuODIzIDIwNS41NjEgMTU4LjU2MiAyMDAgMTQ0IDIwMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NmMxNC41NjIgMCAyNy44MjMtNS41NjEgMzcuNzgzLTE0LjY3MWw2Ny45NTggNDAuNzc1YTU2LjA4OCA1Ni4wODggMCAwIDAtMS43NCAxMy44OTdjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2czU2LTI1LjA3MiA1Ni01NkMzNjAgMzIxLjA3MiAzMzQuOTI4IDI5NiAzMDQgMjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMzIwYy0yMi42MDggMC00My4zODcgNy44MTktNTkuNzkgMjAuODk1bC0xMDIuNDg2LTY0LjA1NGE5Ni41NTEgOTYuNTUxIDAgMCAwIDAtNDEuNjgzbDEwMi40ODYtNjQuMDU0QzMwOC42MTMgMTg0LjE4MSAzMjkuMzkyIDE5MiAzNTIgMTkyYzUzLjAxOSAwIDk2LTQyLjk4MSA5Ni05NlM0MDUuMDE5IDAgMzUyIDBzLTk2IDQyLjk4MS05NiA5NmMwIDcuMTU4Ljc5IDE0LjEzIDIuMjc2IDIwLjg0MUwxNTUuNzkgMTgwLjg5NUMxMzkuMzg3IDE2Ny44MTkgMTE4LjYwOCAxNjAgOTYgMTYwYy01My4wMTkgMC05NiA0Mi45ODEtOTYgOTZzNDIuOTgxIDk2IDk2IDk2YzIyLjYwOCAwIDQzLjM4Ny03LjgxOSA1OS43OS0yMC44OTVsMTAyLjQ4NiA2NC4wNTRBOTYuMzAxIDk2LjMwMSAwIDAgMCAyNTYgNDE2YzAgNTMuMDE5IDQyLjk4MSA5NiA5NiA5NnM5Ni00Mi45ODEgOTYtOTYtNDIuOTgxLTk2LTk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjguNDgyIDE3Ny40NDhMNDI0LjQ3OSAzMTMuNDMzQzQwOS4zIDMyNy43NjggMzg0IDMxNy4xNCAzODQgMjk1Ljk4NXYtNzEuOTYzYy0xNDQuNTc1Ljk3LTIwNS41NjYgMzUuMTEzLTE2NC43NzUgMTcxLjM1MyA0LjQ4MyAxNC45NzMtMTIuODQ2IDI2LjU2Ny0yNS4wMDYgMTcuMzNDMTU1LjI1MiAzODMuMTA1IDEyMCAzMjYuNDg4IDEyMCAyNjkuMzM5YzAtMTQzLjkzNyAxMTcuNTk5LTE3Mi41IDI2NC0xNzMuMzEyVjI0LjAxMmMwLTIxLjE3NCAyNS4zMTctMzEuNzY4IDQwLjQ3OS0xNy40NDhsMTQ0LjAwMyAxMzUuOTg4YzEwLjAyIDkuNDYzIDEwLjAyOCAyNS40MjUgMCAzNC44OTZ6TTM4NCAzNzkuMTI4VjQ0OEg2NFYxMjhoNTAuOTE2YTExLjk5IDExLjk5IDAgMCAwIDguNjQ4LTMuNjkzYzE0Ljk1My0xNS41NjggMzIuMjM3LTI3Ljg5IDUxLjAxNC0zNy42NzZDMTg1LjcwOCA4MC44MyAxODEuNTg0IDY0IDE2OS4wMzMgNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtODguODA2YzAtOC4yODgtOC4xOTctMTQuMDY2LTE2LjAxMS0xMS4zMDJhNzEuODMgNzEuODMgMCAwIDEtMzQuMTg5IDMuMzc3Yy03LjI3LTEuMDQ2LTEzLjggNC41MTQtMTMuOCAxMS44NTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMy42OTEgMTg5LjgzNkwzMjcuNjg3IDM3Ljg1MUMzMTIuMjgxIDI0LjU0NiAyODggMzUuMzQ3IDI4OCA1Ni4wMTV2ODAuMDUzQzEyNy4zNzEgMTM3LjkwNyAwIDE3MC4xIDAgMzIyLjMyNmMwIDYxLjQ0MSAzOS41ODEgMTIyLjMwOSA4My4zMzMgMTU0LjEzMiAxMy42NTMgOS45MzEgMzMuMTExLTIuNTMzIDI4LjA3Ny0xOC42MzFDNjYuMDY2IDMxMi44MTQgMTMyLjkxNyAyNzQuMzE2IDI4OCAyNzIuMDg1VjM2MGMwIDIwLjcgMjQuMyAzMS40NTMgMzkuNjg3IDE4LjE2NGwxNzYuMDA0LTE1MmMxMS4wNzEtOS41NjIgMTEuMDg2LTI2Ljc1MyAwLTM2LjMyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hla2VsU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMTY4djE2OGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNjhjMC03NS4xMS02MC44OS0xMzYtMTM2LTEzNkgyNEMxMC43NSAzMiAwIDQyLjc0IDAgNTZ2NDA4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjExMmgxMTJjMzAuOTMgMCA1NiAyNS4wNyA1NiA1NnpNNDMyIDMyaC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2Mjk2YzAgMzAuOTMtMjUuMDcgNTYtNTYgNTZIMjAwVjE3NmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djI4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDE2OGM3NS4xMSAwIDEzNi02MC44OSAxMzYtMTM2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGllbGRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY2LjUgODMuN2wtMTkyLTgwYTQ4LjE1IDQ4LjE1IDAgMCAwLTM2LjkgMGwtMTkyIDgwQzI3LjcgOTEuMSAxNiAxMDguNiAxNiAxMjhjMCAxOTguNSAxMTQuNSAzMzUuNyAyMjEuNSAzODAuMyAxMS44IDQuOSAyNS4xIDQuOSAzNi45IDBDMzYwLjEgNDcyLjYgNDk2IDM0OS4zIDQ5NiAxMjhjMC0xOS40LTExLjctMzYuOS0yOS41LTQ0LjN6TTI1Ni4xIDQ0Ni4zbC0uMS0zODEgMTc1LjkgNzMuM2MtMy4zIDE1MS40LTgyLjEgMjYxLjEtMTc1LjggMzA3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZFZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCwxOTJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjI0LDE5MlpNNDY2LjUsODMuNjhsLTE5Mi04MEE1Ny40LDU3LjQsMCwwLDAsMjU2LjA1LDBhNTcuNCw1Ny40LDAsMCwwLTE4LjQ2LDMuNjdsLTE5Miw4MEE0Ny45Myw0Ny45MywwLDAsMCwxNiwxMjhDMTYsMzI2LjUsMTMwLjUsNDYzLjcyLDIzNy41LDUwOC4zMmE0OC4wOSw0OC4wOSwwLDAsMCwzNi45MSwwQzM2MC4wOSw0NzIuNjEsNDk2LDM0OS4zLDQ5NiwxMjhBNDgsNDgsMCwwLDAsNDY2LjUsODMuNjhaTTM4NCwyNTZIMzcxLjg4Yy0yOC41MSwwLTQyLjc5LDM0LjQ3LTIyLjYzLDU0LjYzbDguNTgsOC41N2ExNiwxNiwwLDEsMS0yMi42MywyMi42M2wtOC41Ny04LjU4QzMwNi40NywzMTMuMDksMjcyLDMyNy4zNywyNzIsMzU1Ljg4VjM2OGExNiwxNiwwLDAsMS0zMiwwVjM1NS44OGMwLTI4LjUxLTM0LjQ3LTQyLjc5LTU0LjYzLTIyLjYzbC04LjU3LDguNThhMTYsMTYsMCwwLDEtMjIuNjMtMjIuNjNsOC41OC04LjU3YzIwLjE2LTIwLjE2LDUuODgtNTQuNjMtMjIuNjMtNTQuNjNIMTI4YTE2LDE2LDAsMCwxLDAtMzJoMTIuMTJjMjguNTEsMCw0Mi43OS0zNC40NywyMi42My01NC42M2wtOC41OC04LjU3YTE2LDE2LDAsMCwxLDIyLjYzLTIyLjYzbDguNTcsOC41OGMyMC4xNiwyMC4xNiw1NC42Myw1Ljg4LDU0LjYzLTIyLjYzVjExMmExNiwxNiwwLDAsMSwzMiwwdjEyLjEyYzAsMjguNTEsMzQuNDcsNDIuNzksNTQuNjMsMjIuNjNsOC41Ny04LjU4YTE2LDE2LDAsMCwxLDIyLjYzLDIyLjYzbC04LjU4LDguNTdDMzI5LjA5LDE4OS41MywzNDMuMzcsMjI0LDM3MS44OCwyMjRIMzg0YTE2LDE2LDAsMCwxLDAsMzJabS05NiwwYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDI4OCwyNTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjYxNiAzNzIuNjM5bDcwLjAxMi03MC4wMTJjMTYuODk5LTE2LjkgOS45NDItNDUuNzcxLTEyLjgzNi01My4wOTJMNTEyIDIzNi4xMDJWOTZjMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMyaC02NFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjQ4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2NDBoLTY0Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJ2MTQwLjEwMmwtNDEuNzkyIDEzLjQzM2MtMjIuNzUzIDcuMzEzLTI5Ljc1NCAzNi4xNzMtMTIuODM2IDUzLjA5Mmw3MC4wMTIgNzAuMDEyQzEyNS44MjggNDE2LjI4NyA4NS41ODcgNDQ4IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCA2MS4wMjMgMCAxMDcuNDk5LTIwLjYxIDE0My4yNTgtNTkuMzk2QzE4MS42NzcgNDg3LjQzMiAyMTYuMDIxIDUxMiAyNTYgNTEyaDEyOGMzOS45NzkgMCA3NC4zMjMtMjQuNTY4IDg4Ljc0Mi01OS4zOTZDNTA4LjQ5NSA0OTEuMzg0IDU1NC45NjggNTEyIDYxNiA1MTJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQtNjAuODE3IDAtMTAxLjU0Mi0zMS4wMDEtMTE5LjM4NC03NS4zNjF6TTE5MiAxMjhoMjU2djg3LjUzMWwtMTE4LjIwOC0zNy45OTVhMzEuOTk1IDMxLjk5NSAwIDAgMC0xOS41ODQgMEwxOTIgMjE1LjUzMVYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXBwaW5nRmFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMzUyaC0xNlYyNDMuOWMwLTEyLjctNS4xLTI0LjktMTQuMS0zMy45TDQ5NCAxMTAuMWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFINDE2VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDExMkM4NS41IDAgNjQgMjEuNSA2NCA0OHY0OEg4Yy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4aDI3MmM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDQwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4aDIwOGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDhjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMjA4YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhINjR2MTI4YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoMTI4YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTE2MCA0NjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0zMjAgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTgwLTIwOEg0MTZWMTQ0aDQ0LjFsOTkuOSA5OS45VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvZVByaW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTYwaDMyVjMyaC0zMmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHMyOC42NSA2NCA2NCA2NHpNMCA0MTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMlYzNTJINjRjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR6bTMzNy40Ni0xMjhjLTM0LjkxIDAtNzYuMTYgMTMuMTItMTA0LjczIDMyLTI0Ljc5IDE2LjM4LTQ0LjUyIDMyLTEwNC43MyAzMnYxMjhsNTcuNTMgMTUuOTdjMjYuMjEgNy4yOCA1My4wMSAxMy4xMiA4MC4zMSAxNS4wNSAzMi42OSAyLjMxIDY1LjYuNjcgOTcuNTgtNi4yQzQ3Mi45IDQ4MS4zIDUxMiA0MjkuMjIgNTEyIDM4NGMwLTY0LTg0LjE4LTk2LTE3NC41NC05NnpNNDkxLjQyIDcuMTlDNDU5LjQ0LjMyIDQyNi41My0xLjMzIDM5My44NC45OWMtMjcuMyAxLjkzLTU0LjEgNy43Ny04MC4zMSAxNS4wNEwyNTYgMzJ2MTI4YzYwLjIgMCA3OS45NCAxNS42MiAxMDQuNzMgMzIgMjguNTcgMTguODggNjkuODIgMzIgMTA0LjczIDMyQzU1NS44MiAyMjQgNjQwIDE5MiA2NDAgMTI4YzAtNDUuMjItMzkuMS05Ny4zLTE0OC41OC0xMjAuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAxNjB2LTMyQzM1MiA1Ny40MiAyOTQuNTc5IDAgMjI0IDAgMTUzLjQyIDAgOTYgNTcuNDIgOTYgMTI4djMySDB2MjcyYzAgNDQuMTgzIDM1LjgxNyA4MCA4MCA4MGgyODhjNDQuMTgzIDAgODAtMzUuODE3IDgwLTgwVjE2MGgtOTZ6bS0xOTItMzJjMC0zNS4yOSAyOC43MS02NCA2NC02NHM2NCAyOC43MSA2NCA2NHYzMkgxNjB2LTMyem0xNjAgMTIwYy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRzMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjR6bS0xOTIgMGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9wcGluZ0Jhc2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMjE2djE2YzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNGgtOGwtMjYuMTEzIDE4Mi43ODhDNTE0LjUwOSA0NjIuNDM1IDQ5NC4yNTcgNDgwIDQ3MC4zNyA0ODBIMTA1LjYzYy0yMy44ODcgMC00NC4xMzktMTcuNTY1LTQ3LjUxOC00MS4yMTJMMzIgMjU2aC04Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LTE2YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGg2Ny4zNDFsMTA2Ljc4LTE0Ni44MjFjMTAuMzk1LTE0LjI5MiAzMC40MDctMTcuNDUzIDQ0LjcwMS03LjA1OCAxNC4yOTMgMTAuMzk1IDE3LjQ1MyAzMC40MDggNy4wNTggNDQuNzAxTDE3MC40NzcgMTkyaDIzNS4wNDZMMzI2LjEyIDgyLjgyMWMtMTAuMzk1LTE0LjI5Mi03LjIzNC0zNC4zMDYgNy4wNTktNDQuNzAxIDE0LjI5MS0xMC4zOTUgMzQuMzA2LTcuMjM1IDQ0LjcwMSA3LjA1OEw0ODQuNjU5IDE5Mkg1NTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0ek0zMTIgMzkyVjI4MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRzLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0czI0LTEwLjc0NSAyNC0yNHptMTEyIDBWMjgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHMtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRzMjQtMTAuNzQ1IDI0LTI0em0tMjI0IDBWMjgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHMtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRzMjQtMTAuNzQ1IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjEyIDMwMS4zMTlsNDcuMjczLTIwOEM1NzguODA2IDc4LjMwMSA1NjcuMzkxIDY0IDU1MS45OSA2NEgxNTkuMjA4bC05LjE2Ni00NC44MUMxNDcuNzU4IDguMDIxIDEzNy45MyAwIDEyNi41MjkgMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg2OS44ODNsNzAuMjQ4IDM0My40MzVDMTQ3LjMyNSA0MTcuMSAxMzYgNDM1LjIyMiAxMzYgNDU2YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnM1Ni0yNS4wNzIgNTYtNTZjMC0xNS42NzQtNi40NDctMjkuODM1LTE2LjgyNC00MGgyMDkuNjQ3QzQzMC40NDcgNDI2LjE2NSA0MjQgNDQwLjMyNiA0MjQgNDU2YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnM1Ni0yNS4wNzIgNTYtNTZjMC0yMi4xNzItMTIuODg4LTQxLjMzMi0zMS41NzktNTAuNDA1bDUuNTE3LTI0LjI3NmMzLjQxMy0xNS4wMTgtOC4wMDItMjkuMzE5LTIzLjQwMy0yOS4zMTlIMjE4LjExN2wtNi41NDUtMzJoMjkzLjE0NWMxMS4yMDYgMCAyMC45Mi03Ljc1NCAyMy40MDMtMTguNjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LDMyMGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMDQsMzIwWm0zMi05NmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMzYsMjI0Wm0zMiw2NGExNiwxNiwwLDEsMC0xNi0xNkExNiwxNiwwLDAsMCwzNjgsMjg4Wm0tMzIsMzJhMTYsMTYsMCwxLDAtMTYtMTZBMTYsMTYsMCwwLDAsMzM2LDMyMFptLTMyLTY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMwNCwyNTZabTEyOC0zMmExNiwxNiwwLDEsMC0xNi0xNkExNiwxNiwwLDAsMCw0MzIsMjI0Wm0tNDgsMTZhMTYsMTYsMCwxLDAsMTYtMTZBMTYsMTYsMCwwLDAsMzg0LDI0MFptLTE2LTQ4YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDM2OCwxOTJabTk2LDMyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDQ2NCwyMjRabTMyLTMyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDQ5NiwxOTJabS02NCw2NGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCw0MzIsMjU2Wm0tMzIsMzJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDAwLDI4OFptLTY0LDY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMzNiwzNTJabS0zMiwzMmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMDQsMzg0Wm02NC02NGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzNjgsMzIwWm0yMS42NS0yMTguMzUtMTEuMy0xMS4zMWExNiwxNiwwLDAsMC0yMi42MywwTDM1MC4wNSw5NkExMTEuMTksMTExLjE5LDAsMCwwLDI3Miw2NGMtMTkuMjQsMC0zNy4wOCw1LjMtNTIuOSwxMy44NWwtMTAtMTBBMTIxLjcyLDEyMS43MiwwLDAsMCwxMjMuNDQsMzJDNTUuNDksMzEuNSwwLDkyLjkxLDAsMTYwLjg1VjQ2NGExNiwxNiwwLDAsMCwxNiwxNkg0OGExNiwxNiwwLDAsMCwxNi0xNlYxNTguNGMwLTMwLjE1LDIxLTU4LjIsNTEtNjEuOTNhNTguMzgsNTguMzgsMCwwLDEsNDguOTMsMTYuNjdsMTAsMTBDMTY1LjMsMTM4LjkyLDE2MCwxNTYuNzYsMTYwLDE3NmExMTEuMjMsMTExLjIzLDAsMCwwLDMyLDc4LjA1bC01LjY2LDUuNjdhMTYsMTYsMCwwLDAsMCwyMi42MmwxMS4zLDExLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBMMzg5LjY1LDEyNC4yOEExNiwxNiwwLDAsMCwzODkuNjUsMTAxLjY1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaHV0dGxlVmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyOC44OCAyMTAuNjVMNDk0LjM5IDQ5LjI3QTQ4LjAxIDQ4LjAxIDAgMCAwIDQ1Ny41MiAzMkgzMkMxNC4zMyAzMiAwIDQ2LjMzIDAgNjR2Mjg4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NmgxMjhjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI0MS4zOGMwLTExLjIzLTMuOTQtMjIuMS0xMS4xMi0zMC43M3pNNjQgMTkyVjk2aDk2djk2SDY0em05NiAyNDBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTE2MC0yNDBoLTk2Vjk2aDk2djk2em0xNjAgMjQwYy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0tOTYtMjQwVjk2aDY2LjAybDgwIDk2SDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbkluQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiA0NDhoLTg0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg4NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJoLTg0Yy02LjYgMC0xMi01LjQtMTItMTJWNzZjMC02LjYgNS40LTEyIDEyLTEyaDg0YzUzIDAgOTYgNDMgOTYgOTZ2MTkyYzAgNTMtNDMgOTYtOTYgOTZ6bS00Ny0yMDFMMjAxIDc5Yy0xNS0xNS00MS00LjUtNDEgMTd2OTZIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0djk2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEzNnY5NmMwIDIxLjUgMjYgMzIgNDEgMTdsMTY4LTE2OGM5LjMtOS40IDkuMy0yNC42IDAtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25MYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS40MzQgNDgzLjk4N2MtLjMwNy0xNi4wMTggMTMuMTA5LTI5LjEyOSAyOS4xMy0yOS4xMjloNjIuMjkzdi01LjcxNEg1Ni45OTNjLTE2LjAyMSAwLTI5LjQzNy0xMy4xMTEtMjkuMTMtMjkuMTI5QzI4LjE2IDQwNC40OTEgNDAuODM1IDM5MiA1Ni40MjggMzkyaDEyNi40Mjl2LTUuNzE0SDI5LjEzNmMtMTYuMDIxIDAtMjkuNDM3LTEzLjExMS0yOS4xMy0yOS4xMjkuMjk3LTE1LjUyMiAxMi45NzMtMjguMDEzIDI4LjU2Ni0yOC4wMTNoMTU0LjI4NnYtNS43MTRINTcuNzA3Yy0xNi4wMjEgMC0yOS40MzctMTMuMTExLTI5LjEzLTI5LjEyOS4yOTctMTUuNTIyIDEyLjk3My0yOC4wMTMgMjguNTY2LTI4LjAxM2gxNjguNTY2bC0zMS4wODUtMjIuNjA2Yy0xMi43NjItOS4yODEtMTUuNTgzLTI3LjE0OS02LjMwMi0zOS45MTIgOS4yODEtMTIuNzYxIDI3LjE1LTE1LjU4MiAzOS45MTItNi4zMDJsMTIzLjM2MSA4OS43MTVhMzQuMjg3IDM0LjI4NyAwIDAgMSAxNC4xMiAyNy43Mjh2MTQxLjEzNmMwIDE1LjkxLTEwLjk0NiAyOS43My0yNi40MzMgMzMuMzc0bC04MC40NzEgMTguOTM0YTEzNy4xNiAxMzcuMTYgMCAwIDEtMzEuNDExIDMuNjQ2SDEyMGMtMTUuNTkzLS4wMDEtMjguMjY5LTEyLjQ5Mi0yOC41NjYtMjguMDE0em03My4yNDktMjI1LjcwMWgzNi40MjNsLTExLjE4Ny04LjEzNmMtMTguNTc5LTEzLjUxMS0yMC4zMTMtNDAuODg3LTMuMTctNTYuNTM2bC0xMy4wMDQtMTYuN2MtOS44NDMtMTIuNjQxLTI4LjQzLTE1LjE3MS00MC44OC01LjA4OC0xMi4wNjUgOS43NzEtMTQuMTMzIDI3LjQ0Ny00LjU1MyAzOS43NWwzNi4zNzEgNDYuNzF6bTI4My4yOTgtMi4xMDNsLTUuMDAzLTE1Mi40NTJjLS41MTgtMTUuNzcxLTEzLjcyMi0yOC4xMzYtMjkuNDkzLTI3LjYxOS0xNS43NzMuNTE4LTI4LjEzNyAxMy43MjItMjcuNjE5IDI5LjQ5M2wxLjI2MiAzOC40MTVMMjgzLjU2NSAxMS4wMTljLTkuNTgtMTIuMzAzLTI3LjIyMy0xNC42My0zOS42NTMtNS4zMjgtMTIuODI3IDkuNTk5LTE0LjkyOSAyOC4yNC01LjA4NiA0MC44ODFsNzYuODg5IDk4Ljc0NS00LjUwOSAzLjUxMS05NC43OS0xMjEuNzM0Yy05LjU4LTEyLjMwMy0yNy4yMjMtMTQuNjMtMzkuNjUzLTUuMzI4LTEyLjgyNyA5LjU5OS0xNC45MjkgMjguMjQtNS4wODYgNDAuODgxbDk0LjQ0MyAxMjEuMjg4LTQuNTA5IDMuNTExLTc3LjY3NS05OS43NTRjLTkuNTgtMTIuMzAzLTI3LjIyMy0xNC42My0zOS42NTMtNS4zMjgtMTIuODI3IDkuNTk5LTE0LjkyOSAyOC4yNC01LjA4NiA0MC44ODFsNTIuMDUzIDY2Ljg0OWMxMi40OTctOC4yNTcgMjkuMDU1LTguMjg1IDQxLjY5LjkwNGwxMjMuMzYgODkuNzE0YzEwLjkwNCA3LjkzIDE3LjQxNSAyMC43MTUgMTcuNDE1IDM0LjE5OHYxNi45OTlsNjEuMDY0LTQ3LjU0OWEzNC4yODUgMzQuMjg1IDAgMCAwIDEzLjIwMi0yOC4xNzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25PdXRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk3IDI3M0wzMjkgNDQxYy0xNSAxNS00MSA0LjUtNDEtMTd2LTk2SDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjR2LTk2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDEzNlY4OGMwLTIxLjQgMjUuOS0zMiA0MS0xN2wxNjggMTY4YzkuMyA5LjQgOS4zIDI0LjYgMCAzNHpNMTkyIDQzNnYtNDBjMC02LjYtNS40LTEyLTEyLTEySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoODRjNi42IDAgMTItNS40IDEyLTEyVjc2YzAtNi42LTUuNC0xMi0xMi0xMkg5NmMtNTMgMC05NiA0My05NiA5NnYxOTJjMCA1MyA0MyA5NiA5NiA5Nmg4NGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDY0SDEyOFYxNmMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNkM3LjIgNjQgMCA3MS4yIDAgODB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djM2OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjEyOGgzNjhjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNnpNMTYwIDM4NGgzMjBWMTYwSDE2MHYyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgMjg4aC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTkyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjMwNGMwLTguODQtNy4xNi0xNi0xNi0xNnpNODggMzg0SDQwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY5NmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtOTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTI1Ni0xOTJoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYyODhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjA4YzAtOC44NC03LjE2LTE2LTE2LTE2em0xMjgtOTZoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzODRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTEyYzAtOC44NC03LjE2LTE2LTE2LTE2ek02MDAgMGgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4MGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbmF0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyMy4yIDE5MmMtNTEuOCAzLjUtMTI1LjcgNTQuNy0xNjMuMSA3MS41LTI5LjEgMTMuMS01NC4yIDI0LjQtNzYuMSAyNC40LTIyLjYgMC0yNi0xNi4yLTIxLjMtNTEuOSAxLjEtOCAxMS43LTc5LjItNDIuNy03Ni4xLTI1LjEgMS41LTY0LjMgMjQuOC0xNjkuNSAxMjZMMTkyIDE4Mi4yYzMwLjQtNzUuOS01My4yLTE1MS41LTEyOS43LTEwMi44TDcuNCAxMTYuM0MwIDEyMS0yLjIgMTMwLjkgMi41IDEzOC40bDE3LjIgMjdjNC43IDcuNSAxNC42IDkuNyAyMi4xIDQuOWw1OC0zOC45YzE4LjQtMTEuNyA0MC43IDcuMiAzMi43IDI3LjFMMzQuMyA0MDQuMUMyNy41IDQyMSAzNyA0NDggNjQgNDQ4YzguMyAwIDE2LjUtMy4yIDIyLjYtOS40IDQyLjItNDIuMiAxNTQuNy0xNTAuNyAyMTEuMi0xOTUuOC0yLjIgMjguNS0yLjEgNTguOSAyMC42IDgzLjggMTUuMyAxNi44IDM3LjMgMjUuMyA2NS41IDI1LjMgMzUuNiAwIDY4LTE0LjYgMTAyLjMtMzAgMzMtMTQuOCA5OS02Mi42IDEzOC40LTY1LjggOC41LS43IDE1LjItNy4zIDE1LjItMTUuOHYtMzIuMWMuMi05LjEtNy41LTE2LjgtMTYuNi0xNi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW1DYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjR2Mzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0aDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhMMjU2IDBINjRDMjguNyAwIDAgMjguNyAwIDY0em0yMjQgMTkyaC02NHYtNjRoNjR2NjR6bTk2IDBoLTY0di02NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMnptLTY0IDEyOGg2NHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmgtMzJ2LTY0em0tOTYgMGg2NHY2NGgtNjR2LTY0em0tOTYgMGg2NHY2NEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ2LTMyem0wLTk2aDI1NnY2NEg2NHYtNjR6bTAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJ2NjRINjR2LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLDQxNmE5Niw5NiwwLDAsMCw5Niw5NkgzODRhOTYsOTYsMCwwLDAsOTYtOTZWMzg0SDMyWk00OTYsMjg4SDQwMFYyNTZoNjRhMTYsMTYsMCwwLDAsMTYtMTZWMjI0YTE2LDE2LDAsMCwwLTE2LTE2SDM4NGEzMiwzMiwwLDAsMC0zMiwzMnY0OEgyODhWOTZhMzIsMzIsMCwwLDEsNjQsMHYxNmExNiwxNiwwLDAsMCwxNiwxNmgzMmExNiwxNiwwLDAsMCwxNi0xNlY5NkE5Ni4xNiw5Ni4xNiwwLDAsMCwzMDAuODcsMS44NkMyNTUuMjksMTAuNzEsMjI0LDUzLjM2LDIyNCw5OS43OVYyODhIMTYwVjI0MGEzMiwzMiwwLDAsMC0zMi0zMkg0OGExNiwxNiwwLDAsMC0xNiwxNnYxNmExNiwxNiwwLDAsMCwxNiwxNmg2NHYzMkgxNkExNiwxNiwwLDAsMCwwLDMwNHYzMmExNiwxNiwwLDAsMCwxNiwxNkg0OTZhMTYsMTYsMCwwLDAsMTYtMTZWMzA0QTE2LDE2LDAsMCwwLDQ5NiwyODhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpdGVtYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDM1MkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS0yNC04MGgxOTJ2NDhoNDh2LTQ4aDE5MnY0OGg0OHYtNTcuNTljMC0yMS4xNy0xNy4yMy0zOC40MS0zOC40MS0zOC40MUgzNDR2LTY0aDQwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0MHY2NEg5NC40MUM3My4yMyAyMjQgNTYgMjQxLjIzIDU2IDI2Mi40MVYzMjBoNDh2LTQ4em0yNjQgODBoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMjQwIDBoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2thdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OCA0OC0yMS41IDQ4LTQ4LTIxLjUtNDgtNDgtNDh6bTAgNDQ4Yy04LjggMC0xNiA3LjItMTYgMTZzLTcuMiAxNi0xNiAxNmgtOTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDggMC04LjgtNy4yLTE2LTE2LTE2em0tMjgyLjIgOC42Yy02LjIgNi4yLTE2LjQgNi4zLTIyLjYgMGwtNjcuOS02Ny45Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDY3LjkgNjcuOWM5LjQgOS40IDIxLjcgMTQgMzQgMTRzMjQuNi00LjcgMzMuOS0xNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjMtMjIuNyAwem01Ni4xLTE3OS44bC05My43IDkzLjdjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4yIDYuMiA2LjIgMTQuNCA5LjQgMjIuNiA5LjRzMTYuNC0zLjEgMjIuNi05LjRsOTEuOS05MS45LTMwLjItMzAuMmMtNS01LTkuNC0xMC43LTEzLjItMTYuOHpNMTI4IDE2MGgxMDUuNWwtMjAuMSAxNy4yYy0xMy41IDExLjUtMjEuNiAyOC40LTIyLjMgNDYuMS0uNyAxNy44IDYuMSAzNS4yIDE4LjcgNDcuN2w3OC4yIDc4LjJWNDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ2LTg5LjRjMC0xMi42LTUuMS0yNS0xNC4xLTMzLjlsLTYxLTYxYy41LS40IDEuMi0uNiAxLjctMS4xbDgyLjMtODIuM2MxMS41LTExLjUgMTQuOS0yOC42IDguNy00My42LTYuMi0xNS0yMC43LTI0LjctMzctMjQuN0gxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNraWluZ05vcmRpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTMzYyLjUgMCAzMzYgMHMtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0yMTYgMzIwYy0xMy4yIDAtMjQgMTAuNy0yNCAyNCAwIDEzLjItMTAuOCAyNC0yNCAyNGgtNjkuNUw0NjAgMjg1LjZjMTEuNy00LjcgMjAuMS0xNi4yIDIwLjEtMjkuNiAwLTE3LjctMTQuMy0zMi0zMi0zMmgtNDRMMzc4IDE3MC44Yy0xMi41LTI1LjUtMzUuNS00NC4yLTYxLjgtNTAuOUwyNDUgOTguN2MtMjguMy02LjgtNTcuOC0uNS04MC44IDE3LjFsLTM5LjcgMzAuNGMtMTQgMTAuNy0xNi43IDMwLjgtNS45IDQ0LjkuNy45IDEuNyAxLjMgMi40IDIuMUw2Ni45IDQ2NEgyNGMtMTMuMiAwLTI0IDEwLjctMjQgMjRzMTAuOCAyNCAyNCAyNGg0ODBjMzkuNyAwIDcyLTMyLjMgNzItNzIgMC0xMy4yLTEwLjgtMjQtMjQtMjR6bS0yNjAuNSA0OGgtOTYuOWw0My4xLTkxLTIyLTEzYy0xMi4xLTcuMi0yMS45LTE2LjktMjkuNS0yNy44TDEyMy43IDQ2NEg5OS41bDUyLjMtMjYxLjRjNC4xLTEgOC4xLTIuOSAxMS43LTUuNmwzOS43LTMwLjRjNy43LTUuOSAxNy40LTggMjUuMy02LjFsMTQuNyA0LjQtMzcuNSA4Ny40Yy0xMi42IDI5LjUtMS4zIDY0IDI2LjMgODAuM2w4NSA1MC4yLTI1LjUgODEuMnptMTEwLjYgMGgtNDMuNmwyMy42LTc1LjVjNS45LTIwLjgtMi45LTQzLjEtMjEuNi01NC40TDI5OS4zIDI5OGwzMS4zLTc4LjMgMjAuMyA0MS40YzggMTYuMyAyNC45IDI2LjkgNDMuMSAyNi45aDMzLjNsLTI1LjIgMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa2lpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzQ1OC41IDAgNDMyIDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptNzMgMzU2LjFjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwLTEyLjEgMTIuMS0zMC41IDE1LjQtNDUuMSA4LjdsLTEzNS44LTcwLjIgNDkuMi03My44YzEyLjctMTkgMTAuMi00NC41LTYtNjAuNkwyOTMgMjE1LjdsLTEwNy01My4xYy0yLjkgMTkuOSAzLjQgNDAgMTcuNyA1NC40bDc1LjEgNzUuMi00NS45IDY4LjhMMzUgMjU4LjdjLTExLjctNi0yNi4yLTEuNS0zMi4zIDEwLjMtNi4xIDExLjgtMS41IDI2LjMgMTAuMyAzMi4zbDM5MS45IDIwMi41YzExLjkgNS41IDI0LjUgOC4xIDM3LjEgOC4xIDIzLjIgMCA0Ni05IDYzLTI2IDkuMy05LjMgOS4zLTI0LjUgMC0zMy44ek0xMjAgOTEuNmwtMTEuNSAyMi41YzE0LjQgNy4zIDMxLjIgNC45IDQyLjgtNC44bDQ3LjIgMjMuNGMtLjEuMS0uMS4yLS4yLjNsMTE0LjUgNTYuOCAzMi40LTEzIDYuNCAxOS4xYzQgMTIuMSAxMi42IDIyIDI0IDI3LjdsNTguMSAyOWMxNS45IDcuOSAzNSAxLjUgNDIuOS0xNC4zIDcuOS0xNS44IDEuNS0zNS0xNC4zLTQyLjlsLTUyLjEtMjYuMS0xNy4xLTUxLjJjLTguMS0yNC4yLTQwLjktNTYuNi04NC41LTM5LjJsLTgxLjIgMzIuNS02Mi41LTMxYy4zLTE0LjUtNy4yLTI4LjYtMjAuOS0zNS42bC0xMS4xIDIxLjdoLS4ybC0zNC40LTdjLTEuOC0uNC0zLjcuMi01IDEuNy0xLjkgMi4yLTEuNyA1LjUuNSA3LjRsMjYuMiAyM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t1bGxDcm9zc2JvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS4xNSA0NTMuMDZMMjk3LjE3IDM4NGwxNDEuOTktNjkuMDZjNy45LTMuOTUgMTEuMTEtMTMuNTYgNy4xNS0yMS40Nkw0MzIgMjY0Ljg1Yy0zLjk1LTcuOS0xMy41Ni0xMS4xMS0yMS40Ny03LjE2TDIyNCAzNDguNDEgMzcuNDcgMjU3LjY5Yy03LjktMy45NS0xNy41MS0uNzUtMjEuNDcgNy4xNkwxLjY5IDI5My40OGMtMy45NSA3LjktLjc1IDE3LjUxIDcuMTUgMjEuNDZMMTUwLjgzIDM4NCA4Ljg1IDQ1My4wNmMtNy45IDMuOTUtMTEuMTEgMTMuNTYtNy4xNSAyMS40N2wxNC4zMSAyOC42M2MzLjk1IDcuOSAxMy41NiAxMS4xMSAyMS40NyA3LjE1TDIyNCA0MTkuNTlsMTg2LjUzIDkwLjcyYzcuOSAzLjk1IDE3LjUxLjc1IDIxLjQ3LTcuMTVsMTQuMzEtMjguNjNjMy45NS03LjkxLjc0LTE3LjUyLTcuMTYtMjEuNDd6TTE1MCAyMzcuMjhsLTUuNDggMjUuODdjLTIuNjcgMTIuNjIgNS40MiAyNC44NSAxNi40NSAyNC44NWgxMjYuMDhjMTEuMDMgMCAxOS4xMi0xMi4yMyAxNi40NS0yNC44NWwtNS41LTI1Ljg3YzQxLjc4LTIyLjQxIDcwLTYyLjc1IDcwLTEwOS4yOEMzNjggNTcuMzEgMzAzLjUzIDAgMjI0IDBTODAgNTcuMzEgODAgMTI4YzAgNDYuNTMgMjguMjIgODYuODcgNzAgMTA5LjI4ek0yODAgMTEyYzE3LjY1IDAgMzIgMTQuMzUgMzIgMzJzLTE0LjM1IDMyLTMyIDMyLTMyLTE0LjM1LTMyLTMyIDE0LjM1LTMyIDMyLTMyem0tMTEyIDBjMTcuNjUgMCAzMiAxNC4zNSAzMiAzMnMtMTQuMzUgMzItMzIgMzItMzItMTQuMzUtMzItMzIgMTQuMzUtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNrdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwQzExNC42IDAgMCAxMDAuMyAwIDIyNGMwIDcwLjEgMzYuOSAxMzIuNiA5NC41IDE3My43IDkuNiA2LjkgMTUuMiAxOC4xIDEzLjUgMjkuOWwtOS40IDY2LjJjLTEuNCA5LjYgNiAxOC4yIDE1LjcgMTguMkgxOTJ2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNjR2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNzcuN2M5LjcgMCAxNy4xLTguNiAxNS43LTE4LjJsLTkuNC02Ni4yYy0xLjctMTEuNyAzLjgtMjMgMTMuNS0yOS45QzQ3NS4xIDM1Ni42IDUxMiAyOTQuMSA1MTIgMjI0IDUxMiAxMDAuMyAzOTcuNCAwIDI1NiAwem0tOTYgMzIwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0IDY0IDI4LjcgNjQgNjQtMjguNyA2NC02NCA2NHptMTkyIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTQuNTMgNTA4LjYzTDYuMTggNTMuOWMtNi45Ny01LjQyLTguMjMtMTUuNDctMi44MS0yMi40NUwyMy4wMSA2LjE4QzI4LjQzLS44IDM4LjQ5LTIuMDYgNDUuNDcgMy4zN0w2MzMuODIgNDU4LjFjNi45NyA1LjQyIDguMjMgMTUuNDcgMi44MSAyMi40NWwtMTkuNjQgMjUuMjdjLTUuNDIgNi45OC0xNS40OCA4LjIzLTIyLjQ2IDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsZWlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTIuNyAzNTAuN2wtOS4zLTcuNGMtNi45LTUuNS0xNy00LjQtMjIuNSAyLjVsLTEwIDEyLjVjLTUuNSA2LjktNC40IDE3IDIuNSAyMi41bDkuMyA3LjRjNS45IDQuNyA5LjIgMTEuNyA5LjIgMTkuMiAwIDEzLjYtMTEgMjQuNi0yNC42IDI0LjZINDhjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoNTE2YzM5IDAgNzMuNy0yOS4zIDc1LjktNjguMyAxLjQtMjMuOC04LjctNDYuMy0yNy4yLTYxek0zMiAyMjRjMCA1OS42IDQwLjkgMTA5LjIgOTYgMTIzLjVWNDAwaDY0di00OGgxOTJ2NDhoNjR2LTQ4YzUzIDAgOTYtNDMgOTYtOTZ2LTk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyaC05NnY2NGMwIDM1LjMtMjguNyA2NC02NCA2NGgtMjAuN2MtNjUuOCAwLTEyNS45LTM3LjItMTU1LjMtOTYtMjkuNC01OC44LTg5LjYtOTYtMTU1LjMtOTZIMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NHMxNC4zIDMyIDMyIDMydjEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xpZGVyc0ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDM4NEgxNjB2LTE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg4MHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgzMzZjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTAtMTYwaC04MHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djE2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMzNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmg4MGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptMC0xNjBIMjg4VjQ4YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkgxNkM3LjIgNjQgMCA3MS4yIDAgODB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDIwOHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgyMDhjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21pbGVCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTExMiAyMjMuNGMzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjMgNy40LTE1LjggNC0xNS4xLTQuNXptMjUwLjggMTIyLjhDMzM0LjMgMzgwLjQgMjkyLjUgNDAwIDI0OCA0MDBzLTg2LjMtMTkuNi0xMTQuOC01My44Yy0xMy41LTE2LjMgMTEtMzYuNyAyNC42LTIwLjUgMjIuNCAyNi45IDU1LjIgNDIuMiA5MC4yIDQyLjJzNjcuOC0xNS40IDkwLjItNDIuMmMxMy42LTE2LjIgMzguMSA0LjMgMjQuNiAyMC41em02LjItMTE4LjNsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjMtMTUuNiA0LTE0LjktNC41IDMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy42IDguNi0xMSAxMS45LTE1LjEgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbWlsZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOCAwIDExOSAwIDI1NnptMjAwLTQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMnptMTU4LjUgMTYuNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDI4OCAyMzNjLTguMyA3LjQtMjEuNi40LTE5LjgtMTAuOCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVMzODQgMTk3IDM4OCAyMjIuMmMxLjcgMTEuMS0xMS40IDE4LjMtMTkuOCAxMC44bC05LjctOC41ek0xNTcuOCAzMjUuOEMxODAuMiAzNTIuNyAyMTMgMzY4IDI0OCAzNjhzNjcuOC0xNS40IDkwLjItNDIuMmMxMy42LTE2LjIgMzguMSA0LjIgMjQuNiAyMC41QzMzNC4zIDM4MC40IDI5Mi41IDQwMCAyNDggNDAwcy04Ni4zLTE5LjYtMTE0LjgtNTMuOGMtMTMuNS0xNi4zIDExLjItMzYuNyAyNC42LTIwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTgwIDE2OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS0xNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bTE5NC44IDE3MC4yQzMzNC4zIDM4MC40IDI5Mi41IDQwMCAyNDggNDAwcy04Ni4zLTE5LjYtMTE0LjgtNTMuOGMtMTMuNi0xNi4zIDExLTM2LjcgMjQuNi0yMC41IDIyLjQgMjYuOSA1NS4yIDQyLjIgOTAuMiA0Mi4yczY3LjgtMTUuNCA5MC4yLTQyLjJjMTMuNC0xNi4yIDM4LjEgNC4yIDI0LjYgMjAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21vZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMzY4SDgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDU0NGM4LjggMCAxNi03LjIgMTYtMTZ2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnptLTQ4MCA5NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgxMjhjOC44IDAgMTYtNy4yIDE2LTE2di0xNmMwLTguOC03LjItMTYtMTYtMTZ6bTQxNiAwSDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMzZjOC44IDAgMTYtNy4yIDE2LTE2di0xNmMwLTguOC03LjItMTYtMTYtMTZ6TTE0NCAyODhoMTU2LjFjMjIuNSAxOS43IDUxLjYgMzIgODMuOSAzMnM2MS4zLTEyLjMgODMuOS0zMkg1MjhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTNTg5LjkgNjQgNTI4IDY0Yy0xOCAwLTM0LjcgNC42LTQ5LjcgMTIuMUM0NTQgMzEgNDA2LjggMCAzNTIgMGMtNDEgMC03Ny44IDE3LjMtMTA0IDQ0LjhDMjIxLjggMTcuMyAxODUgMCAxNDQgMCA2NC41IDAgMCA2NC41IDAgMTQ0czY0LjUgMTQ0IDE0NCAxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtb2tpbmdCYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzA0YzAgOC44IDcuMiAxNiAxNiAxNmgxMTcuNWwtOTYtOTZIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ2NjR6TTI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NnMxMTQuNiAyNTYgMjU2IDI1NiAyNTYtMTE0LjYgMjU2LTI1NlMzOTcuNCAwIDI1NiAwem0wIDQ0OGMtMTA1LjkgMC0xOTItODYuMS0xOTItMTkyIDAtNDEuNCAxMy4zLTc5LjcgMzUuNy0xMTEuMWwyNjcuNCAyNjcuNEMzMzUuNyA0MzQuNyAyOTcuNCA0NDggMjU2IDQ0OHptNDUuMi0xOTJIMzg0djMyaC01MC44bC0zMi0zMnptMTExLjEgMTExLjFMMzY1LjIgMzIwSDQwMGM4LjggMCAxNi03LjIgMTYtMTZ2LTY0YzAtOC44LTcuMi0xNi0xNi0xNkgyNjkuMkwxNDQuOSA5OS43QzE3Ni4zIDc3LjMgMjE0LjYgNjQgMjU2IDY0YzEwNS45IDAgMTkyIDg2LjEgMTkyIDE5MiAwIDQxLjQtMTMuMyA3OS43LTM1LjcgMTExLjF6TTMyMC42IDEyOGMtMTUuNiAwLTI4LjYtMTEuMi0zMS40LTI1LjktLjctMy42LTQtNi4xLTcuNy02LjFoLTE2LjJjLTUgMC04LjcgNC41LTggOS40IDQuNiAzMC45IDMxLjIgNTQuNiA2My4zIDU0LjYgMTUuNiAwIDI4LjYgMTEuMiAzMS40IDI1LjkuNyAzLjYgNCA2LjEgNy43IDYuMWgxNi4yYzUgMCA4LjctNC41IDgtOS40LTQuNi0zMC45LTMxLjItNTQuNi02My4zLTU0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtb2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMyIDM1MmgtNDhjLTQuNCAwLTggMy42LTggOHYxNDRjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFYzNjBjMC00LjQtMy42LTgtOC04ek01NTMuMyA4Ny4xYy01LjctMy44LTkuMy0xMC05LjMtMTYuOFY4YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHY2Mi4zYzAgMjIgMTAuMiA0My40IDI4LjYgNTUuNCA0Mi4yIDI3LjMgNjcuNCA3My44IDY3LjQgMTI0VjI4MGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04di0zMC4zYzAtNjUuNS0zMi40LTEyNi4yLTg2LjctMTYyLjZ6TTQzMiAzNTJINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM4NGM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNnptLTMyIDExMkgyMjR2LTY0aDE3NnY2NHptODcuNy0zMjIuNEM0NjMuOCAxMjUgNDQ4IDk5LjMgNDQ4IDcwLjNWOGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2NjYuNGMwIDQzLjcgMjQuNiA4MS42IDYwLjMgMTA2LjcgMjIuNCAxNS43IDM1LjcgNDEuMiAzNS43IDY4LjZWMjgwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTMwLjNjMC00My4zLTIxLTgzLjQtNTYuMy0xMDguMXpNNTM2IDM1MmgtNDhjLTQuNCAwLTggMy42LTggOHYxNDRjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFYzNjBjMC00LjQtMy42LTgtOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0OS42IDIxLjQgOTUgNTcgMTMwLjdDNDQuNSA0MjEuMSAyLjcgNDY2IDIuMiA0NjYuNWMtMi4yIDIuMy0yLjggNS43LTEuNSA4LjcgMS4zIDMgNC4xIDQuOCA3LjMgNC44IDY2LjMgMCAxMTYtMzEuOCAxNDAuNi01MS40IDMyLjcgMTIuMyA2OSAxOS40IDEwNy40IDE5LjQgMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnpNMTI4LjIgMzA0SDExNmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTIuM2M2IDAgMTAuNC0zLjUgMTAuNC02LjYgMC0xLjMtLjgtMi43LTIuMS0zLjhsLTIxLjktMTguOGMtOC41LTcuMi0xMy4zLTE3LjUtMTMuMy0yOC4xIDAtMjEuMyAxOS0zOC42IDQyLjQtMzguNkgxNTZjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOGgtMTIuM2MtNiAwLTEwLjQgMy41LTEwLjQgNi42IDAgMS4zLjggMi43IDIuMSAzLjhsMjEuOSAxOC44YzguNSA3LjIgMTMuMyAxNy41IDEzLjMgMjguMS4xIDIxLjMtMTkgMzguNi00Mi40IDM4LjZ6bTE5MS44LThjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04di02OC4ybC0yNC44IDU1LjhjLTIuOSA1LjktMTEuNCA1LjktMTQuMyAwTDIyNCAyMjcuOFYyOTZjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjE5MmMwLTguOCA3LjItMTYgMTYtMTZoMTZjNi4xIDAgMTEuNiAzLjQgMTQuMyA4LjhsMTcuNyAzNS40IDE3LjctMzUuNGMyLjctNS40IDguMy04LjggMTQuMy04LjhoMTZjOC44IDAgMTYgNy4yIDE2IDE2djEwNHptNDguMyA4SDM1NmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTIuM2M2IDAgMTAuNC0zLjUgMTAuNC02LjYgMC0xLjMtLjgtMi43LTIuMS0zLjhsLTIxLjktMTguOGMtOC41LTcuMi0xMy4zLTE3LjUtMTMuMy0yOC4xIDAtMjEuMyAxOS0zOC42IDQyLjQtMzguNkgzOTZjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOGgtMTIuM2MtNiAwLTEwLjQgMy41LTEwLjQgNi42IDAgMS4zLjggMi43IDIuMSAzLjhsMjEuOSAxOC44YzguNSA3LjIgMTMuMyAxNy41IDEzLjMgMjguMS4xIDIxLjMtMTguOSAzOC42LTQyLjMgMzguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd2JvYXJkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA5NmMyNi41IDAgNDgtMjEuNSA0OC00OFM0NTguNSAwIDQzMiAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTI4LjggMTUzLjZjNS44IDQuMyAxMi41IDYuNCAxOS4yIDYuNCA5LjcgMCAxOS4zLTQuNCAyNS42LTEyLjggMTAuNi0xNC4xIDcuOC0zNC4yLTYuNC00NC44bC0xMTEuNC04My41Yy0xMy44LTEwLjMtMjkuMS0xOC40LTQ1LjQtMjMuOGwtNjMuNy0yMS4yLTI2LjEtNTIuMUMyNDQuNyAyIDIyNS41LTQuNCAyMDkuNyAzLjVjLTE1LjggNy45LTIyLjIgMjcuMS0xNC4zIDQyLjlsMjkuMSA1OC4xYzUuNyAxMS40IDE1LjYgMTkuOSAyNy43IDI0bDE2LjQgNS41LTQxLjIgMjAuNmMtMjEuOCAxMC45LTM1LjQgMzIuOC0zNS40IDU3LjJ2NTMuMWwtNzQuMSAyNC43Yy0xNi44IDUuNi0yNS44IDIzLjctMjAuMiA0MC41IDEuNyA1LjIgNC45IDkuNCA4LjcgMTIuOWwtMzguNy0xNC4xYy05LjctMy41LTE3LjQtMTAuNi0yMS44LTIwLTUuNi0xMi0xOS45LTE3LjItMzEuOS0xMS42cy0xNy4yIDE5LjktMTEuNiAzMS45YzkuOCAyMSAyNy4xIDM2LjkgNDguOSA0NC44bDM2NC44IDEzMi43YzkuNyAzLjUgMTkuNyA1LjMgMjkuNyA1LjMgMTIuNSAwIDI0LjktMi43IDM2LjUtOC4yIDEyLTUuNiAxNy4yLTE5LjkgMTEuNi0zMS45UzQ3NCA0NTQuNyA0NjIgNDYwLjNjLTkuMyA0LjQtMTkuOCA0LjgtMjkuNSAxLjNsLTkwLjgtMzMuMWM4LjctNC4xIDE1LjYtMTEuOCAxNy44LTIxLjlsMjEuOS0xMDJjMy45LTE4LjItMy4yLTM3LjItMTguMS00OC40bC01Mi0zOSA2Ni0zMC41IDgzLjUgNjIuOXptLTE0NC40IDUxLjdsLTE5LjcgOTJjLTEuNSA3LjEtLjEgMTMuOSAyLjggMjBsLTE2OS40LTYxLjZjMi43LS4yIDUuNC0uNCA4LTEuM2w4NS0yOC40YzE5LjYtNi41IDMyLjgtMjQuOCAzMi44LTQ1LjVWMjU2bDYwLjUgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC4zIDM0NS4ybC0zMy44LTE5LjUgMjYtN2M4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTQtMTQuOWMtMi4yLTguMi0xMC43LTEzLjEtMTguOS0xMC45bC03MC44IDE5LTYzLjktMzcgNjMuOC0zNi45IDcwLjggMTljOC4yIDIuMiAxNi43LTIuNyAxOC45LTEwLjlsNC0xNC45YzIuMi04LjItMi43LTE2LjctMTAuOS0xOC45bC0yNi03IDMzLjgtMTkuNWM3LjQtNC4zIDkuOS0xMy43IDUuNy0yMS4xTDQzMC40IDExOWMtNC4zLTcuNC0xMy43LTkuOS0yMS4xLTUuN2wtMzMuOCAxOS41IDctMjZjMi4yLTguMi0yLjctMTYuNy0xMC45LTE4LjlsLTE0LjktNGMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTE5IDcwLjgtNjIuOCAzNi4ydi03Ny41bDUzLjctNTMuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTEuMy0xMS4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgNTYuNFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDAuNGwtMTkuNy0xOS43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwxMzguMyA0OGMtNi4zIDYuMi02LjMgMTYuNCAwIDIyLjZsNTMuNyA1My43djc3LjVsLTYyLjgtMzYuMi0xOS03MC44Yy0yLjItOC4yLTEwLjctMTMuMS0xOC45LTEwLjlsLTE0LjkgNGMtOC4yIDIuMi0xMy4xIDEwLjctMTAuOSAxOC45bDcgMjYtMzMuOC0xOS41Yy03LjQtNC4zLTE2LjgtMS43LTIxLjEgNS43TDIuMSAxNDUuN2MtNC4zIDcuNC0xLjcgMTYuOCA1LjcgMjEuMWwzMy44IDE5LjUtMjYgN2MtOC4zIDIuMi0xMy4yIDEwLjctMTEgMTlsNCAxNC45YzIuMiA4LjIgMTAuNyAxMy4xIDE4LjkgMTAuOWw3MC44LTE5IDYzLjggMzYuOS02My44IDM2LjktNzAuOC0xOWMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTQgMTQuOWMtMi4yIDguMiAyLjcgMTYuNyAxMC45IDE4LjlsMjYgNy0zMy44IDE5LjZjLTcuNCA0LjMtOS45IDEzLjctNS43IDIxLjFsMTUuNSAyNi44YzQuMyA3LjQgMTMuNyA5LjkgMjEuMSA1LjdsMzMuOC0xOS41LTcgMjZjLTIuMiA4LjIgMi43IDE2LjcgMTAuOSAxOC45bDE0LjkgNGM4LjIgMi4yIDE2LjctMi43IDE4LjktMTAuOWwxOS03MC44IDYyLjgtMzYuMnY3Ny41bC01My43IDUzLjdjLTYuMyA2LjItNi4zIDE2LjQgMCAyMi42bDExLjMgMTEuM2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwxOS43LTE5LjdWNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQwLjRsMTkuNyAxOS43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDExLjMtMTEuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNkwyNTYgMzg3Ljd2LTc3LjVsNjIuOCAzNi4yIDE5IDcwLjhjMi4yIDguMiAxMC43IDEzLjEgMTguOSAxMC45bDE0LjktNGM4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTctMjYgMzMuOCAxOS41YzcuNCA0LjMgMTYuOCAxLjcgMjEuMS01LjdsMTUuNS0yNi44YzQuMy03LjMgMS44LTE2LjgtNS42LTIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbm93bWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC45IDE1Mi4zbC01LjktMTQuNWMtMy4zLTgtMTIuNi0xMS45LTIwLjgtOC43TDQ1NiAxNDAuNnYtMjljMC04LjYtNy4yLTE1LjYtMTYtMTUuNmgtMTZjLTguOCAwLTE2IDctMTYgMTUuNnY0Ni45YzAgLjUuMyAxIC4zIDEuNWwtNTYuNCAyM2MtNS45LTEwLTEzLjMtMTguOS0yMi0yNi42IDEzLjYtMTYuNiAyMi0zNy40IDIyLTYwLjUgMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyMy4xIDguNSA0My45IDIyIDYwLjUtOC43IDcuNy0xNiAxNi42LTIyIDI2LjZsLTU2LjQtMjNjLjEtLjUuMy0xIC4zLTEuNXYtNDYuOUMxMDQgMTAzIDk2LjggOTYgODggOTZINzJjLTguOCAwLTE2IDctMTYgMTUuNnYyOWwtMjguMS0xMS41Yy04LjItMy4yLTE3LjUuNy0yMC44IDguN2wtNS45IDE0LjVjLTMuMyA4IC43IDE3LjEgOC45IDIwLjNsMTM1LjIgNTUuMmMtLjQgNC0xLjIgOC0xLjIgMTIuMiAwIDEwLjEgMS43IDE5LjYgNC4yIDI4LjlDMTIwLjkgMjk2LjQgMTA0IDMzNC4yIDEwNCAzNzZjMCA1NCAyOC40IDEwMC45IDcwLjggMTI3LjggOS4zIDUuOSAyMC4zIDguMiAzMS4zIDguMmg5OS4yYzEzLjMgMCAyNi4zLTQuMSAzNy4yLTExLjcgNDYuNS0zMi4zIDc0LjQtODkuNCA2Mi45LTE1Mi42LTUuNS0zMC4yLTIwLjUtNTcuNi00MS42LTc5IDIuNS05LjIgNC4yLTE4LjcgNC4yLTI4LjcgMC00LjItLjgtOC4xLTEuMi0xMi4yTDUwMiAxNzIuNmM4LjEtMy4xIDEyLjEtMTIuMiA4LjktMjAuM3pNMjI0IDk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTMyIDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTY0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtNjRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC04OHMtMTYtMjMuMi0xNi0zMiA3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTE2IDMyLTE2IDMyem0zMi01NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbm93cGxvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAgMzc2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptODAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bTgwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em04MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptMjM4LjYgNDkuNGMtMTQuNS0xNC41LTIyLjYtMzQuMS0yMi42LTU0LjZWMjY5LjJjMC0yMC41IDguMS00MC4xIDIyLjYtNTQuNmwzNi43LTM2LjdjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTIyLjYtMjIuNmMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTM2LjcgMzYuN2MtMjYuNSAyNi41LTQxLjQgNjIuNC00MS40IDk5LjlWMjg4aC02NHYtNTAuOWMwLTguNy0xLjgtMTcuMi01LjItMjUuMkwzNjQuNSAyOS4xQzM1Ni45IDExLjQgMzM5LjYgMCAzMjAuMyAwSDE3NmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTEyaC0xNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2OTEuMkMyNi4zIDMxNy4yIDAgMzU1LjQgMCA0MDBjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJoMjU2YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyIDAtMTcuMy00LjItMzMuNC0xMS4yLTQ4SDUxMnYxOC43YzAgMzcuNSAxNC45IDczLjQgNDEuNCA5OS45bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwyMi42LTIyLjZjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTM2LjctMzYuN3pNMTkyIDY0aDExNy44bDY4LjYgMTYwSDI1NmwtNjQtNjRWNjR6bTE3NiAzODRIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4aDI1NmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYsMTkyYTk1LjQyLDk1LjQyLDAsMCwxLTMwLjk0LDcwLjIxQTk1LjgsOTUuOCwwLDAsMSwzNTIsNDQ4SDE2MGE5Niw5NiwwLDAsMSwwLTE5Mmg4OC45MUE5NS4zLDk1LjMsMCwwLDEsMjI0LDE5Mkg5NkE5Niw5NiwwLDAsMCwwLDI4OFY0MTZhOTYsOTYsMCwwLDAsOTYsOTZINDE2YTk2LDk2LDAsMCwwLDk2LTk2VjI4OEE5Niw5NiwwLDAsMCw0MTYsMTkyWm0tOTYsNjRhNjQsNjQsMCwxLDAtNjQtNjRBNjQsNjQsMCwwLDAsMzIwLDI1NlpNMjA4LDk2YTQ4LDQ4LDAsMSwwLTQ4LTQ4QTQ4LDQ4LDAsMCwwLDIwOCw5NlpNMzg0LDY0YTMyLDMyLDAsMSwwLTMyLTMyQTMyLDMyLDAsMCwwLDM4NCw2NFpNMTYwLDI4OGE2NCw2NCwwLDAsMCwwLDEyOEgzNTJhNjQsNjQsMCwwLDAsMC0xMjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvY2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNC42NiAzMTEuMDFMMjg4IDI1NlY5NkgxMjh2MTc2bC04Ni42NSA2NC42MWMtMzkuNCAyOS41Ni01My44NiA4NC40Mi0yOS4yMSAxMjcuMDZDMzAuMzkgNDk1LjI1IDYzLjI3IDUxMiA5Ni4wOCA1MTJjMjAuMDMgMCA0MC4yNS02LjI1IDU3LjUyLTE5LjJsMjEuODYtMTYuMzljLTI5Ljg1LTU1LjM4LTEzLjU0LTEyNS44NCAzOS4yLTE2NS40ek0yODggMzJjMC0xMS4wNSAzLjA3LTIxLjMgOC4wMi0zMC4zOEMyOTMuNC45MiAyOTAuODUgMCAyODggMEgxNjBjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoMTYwVjMyek00ODAgMEgzNTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoMTkyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTMyMCAyNzJsLTg2LjEzIDY0LjYxYy0zOS40IDI5LjU2LTUzLjg2IDg0LjQyLTI5LjIxIDEyNy4wNiAxOC4yNSAzMS41OCA1MC42MSA0OC4zMyA4My40MiA0OC4zMyAyMC4wMyAwIDQwLjI1LTYuMjUgNTcuNTItMTkuMmwxMTUuMi04Ni40QTEyNy45OTcgMTI3Ljk5NyAwIDAgMCA1MTIgMzA0Vjk2SDMyMHYxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvbGFyUGFuZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMxLjk4IDQ0OC4wMWwtNDcuOTcuMDVWNDE2aC0xMjh2MzIuMjFsLTQ3Ljk4LjA1Yy04LjgyLjAxLTE1Ljk3IDcuMTYtMTUuOTggMTUuOTlsLS4wNSAzMS43M2MtLjAxIDguODUgNy4xNyAxNi4wMyAxNi4wMiAxNi4wMmwyMjMuOTYtLjI2YzguODItLjAxIDE1Ljk3LTcuMTYgMTUuOTgtMTUuOThsLjA0LTMxLjczYy4wMS04Ljg1LTcuMTctMTYuMDMtMTYuMDItMTYuMDJ6TTU4NS4yIDI2Ljc0QzU4Mi41OCAxMS4zMSA1NjguOTkgMCA1NTMuMDYgMEg4Ni45M0M3MSAwIDU3LjQxIDExLjMxIDU0Ljc5IDI2Ljc0LTMuMzIgMzY5LjE2LjA0IDM0OC4wOC4wMyAzNTJjLS4wMyAxNy4zMiAxNC4yOSAzMiAzMi42IDMyaDU3NC43NGMxOC4yMyAwIDMyLjUxLTE0LjU2IDMyLjU5LTMxLjc5LjAyLTQuMDggMy4zNSAxNi45NS01NC43Ni0zMjUuNDd6TTI1OS44MyA2NGgxMjAuMzNsOS43NyA5NkgyNTAuMDZsOS43Ny05NnptLTc1LjE3IDI1Nkg3MS4wOUw5MC4xIDIwOGgxMDUuOTdsLTExLjQxIDExMnptMTYuMjktMTYwSDk4LjI0bDE2LjI5LTk2aDk2LjE5bC05Ljc3IDk2em0zMi44MiAxNjBsMTEuNC0xMTJoMTQ5LjY1bDExLjQgMTEySDIzMy43N3ptMTk1LjUtMjU2aDk2LjE5bDE2LjI5IDk2SDQzOS4wNGwtOS43Ny05NnptMjYuMDYgMjU2bC0xMS40LTExMkg1NDkuOWwxOS4wMSAxMTJINDU1LjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QWxwaGFEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAzNTJoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0xMTItMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiA2NS42M1Y0OGExNiAxNiAwIDAgMC0xNi0xNkgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiAxOTAuMzdWMjA4YTE2IDE2IDAgMCAwIDE2IDE2em0xNTkuMDYgMjM0LjYybC01OS4yNy0xNjBBMTYgMTYgMCAwIDAgMzcyLjcyIDI4OGgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgNDgwaDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgNDgwSDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDQwMEwzNTIgMzUybDE2LjM5IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QWxwaGFEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAzNTJoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0yNDAtNjRIMjg4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDU2bC02MS4yNiA3MC40NUEzMiAzMiAwIDAgMCAyNzIgNDQ2LjM3VjQ2NGExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC01Nmw2MS4yNi03MC40NUEzMiAzMiAwIDAgMCA0MzIgMzIxLjYzVjMwNGExNiAxNiAwIDAgMC0xNi0xNnptMzEuMDYtODUuMzhsLTU5LjI3LTE2MEExNiAxNiAwIDAgMCAzNzIuNzIgMzJoLTQxLjQ0YTE2IDE2IDAgMCAwLTE1LjA3IDEwLjYybC01OS4yNyAxNjBBMTYgMTYgMCAwIDAgMjcyIDIyNGgyNC44M2ExNiAxNiAwIDAgMCAxNS4yMy0xMS4wOGw0LjQyLTEyLjkyaDcxbDQuNDEgMTIuOTJBMTYgMTYgMCAwIDAgNDA3LjE2IDIyNEg0MzJhMTYgMTYgMCAwIDAgMTUuMDYtMjEuMzh6TTMzNS42MSAxNDRMMzUyIDk2bDE2LjM5IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QWxwaGFVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43OCAxNjAgMTYgMTYwem0yNzIgNjRoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtNTZsNjEuMjYtNzAuNDVBMzIgMzIgMCAwIDAgNDMyIDY1LjYzVjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDI4OGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg1NmwtNjEuMjYgNzAuNDVBMzIgMzIgMCAwIDAgMjcyIDE5MC4zN1YyMDhhMTYgMTYgMCAwIDAgMTYgMTZ6bTE1OS4wNiAyMzQuNjJsLTU5LjI3LTE2MEExNiAxNiAwIDAgMCAzNzIuNzIgMjg4aC00MS40NGExNiAxNiAwIDAgMC0xNS4wNyAxMC42MmwtNTkuMjcgMTYwQTE2IDE2IDAgMCAwIDI3MiA0ODBoMjQuODNhMTYgMTYgMCAwIDAgMTUuMjMtMTEuMDhsNC40Mi0xMi45Mmg3MWw0LjQxIDEyLjkyQTE2IDE2IDAgMCAwIDQwNy4xNiA0ODBINDMyYTE2IDE2IDAgMCAwIDE1LjA2LTIxLjM4ek0zMzUuNjEgNDAwTDM1MiAzNTJsMTYuMzkgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbHBoYVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE2MGg0OHYzMDRhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTYwaDQ4YzE0LjIxIDAgMjEuMzgtMTcuMjQgMTEuMzEtMjcuMzFsLTgwLTk2YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjB6bTQwMCAxMjhIMjg4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDU2bC02MS4yNiA3MC40NUEzMiAzMiAwIDAgMCAyNzIgNDQ2LjM3VjQ2NGExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC01Nmw2MS4yNi03MC40NUEzMiAzMiAwIDAgMCA0MzIgMzIxLjYzVjMwNGExNiAxNiAwIDAgMC0xNi0xNnptMzEuMDYtODUuMzhsLTU5LjI3LTE2MEExNiAxNiAwIDAgMCAzNzIuNzIgMzJoLTQxLjQ0YTE2IDE2IDAgMCAwLTE1LjA3IDEwLjYybC01OS4yNyAxNjBBMTYgMTYgMCAwIDAgMjcyIDIyNGgyNC44M2ExNiAxNiAwIDAgMCAxNS4yMy0xMS4wOGw0LjQyLTEyLjkyaDcxbDQuNDEgMTIuOTJBMTYgMTYgMCAwIDAgNDA3LjE2IDIyNEg0MzJhMTYgMTYgMCAwIDAgMTUuMDYtMjEuMzh6TTMzNS42MSAxNDRMMzUyIDk2bDE2LjM5IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QW1vdW50RG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAgOTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTY0YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0wIDEyOGgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptMjU2IDE5MkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjU2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTI1Ni02NGgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptLTY0IDBoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNyAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QW1vdW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgNDE2aC02NGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0xMjgtNjRoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNyAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0yNTYtMTkySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tNjQgMTI4SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek00OTYgMzJIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI1NmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydEFtb3VudFVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCA5Nmg2NGExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTAgMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0yNTYgMTkySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMjU2LTY0aDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2ek0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM5LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43OCAxNjAgMTYgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QW1vdW50VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDQxNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43NyAxNjAgMTYgMTYwem00MTYgMEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTY0IDEyOEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNNDk2IDMySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxIDI4OGgyMzhjMjEuNCAwIDMyLjEgMjUuOSAxNyA0MUwxNzcgNDQ4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwyNCAzMjljLTE1LjEtMTUuMS00LjQtNDEgMTctNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMzUyaC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMDRIMTZjLTE0LjE5IDAtMjEuMzYgMTcuMjQtMTEuMjkgMjcuMzFsODAgOTZhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC05NkMxOTcuMzUgMzY5LjI2IDE5MC4yMiAzNTIgMTc2IDM1MnptMjI0IDY0aC0xNlYzMDRhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCAzNTJoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzMwLjE3IDM0LjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNyA1MS4wNSAyMS4xOSA5Ny43NyA2OC44MyAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NyA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMTEyYy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAxMzJhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgOTZoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCA5NnptMjYuMTUgMTYyLjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNSA1MS4wNSAyMS4yMSA5Ny43NyA2OC44NSAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NiA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMzM2Yy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAzNTZhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6bS0xNzYtNGgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM2IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljVXBBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA3LjMxIDM2LjY5YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxek00MDAgNDE2aC0xNlYzMDRhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCAzNTJoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzMwLjE3IDM0LjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNyA1MS4wNSAyMS4xOSA5Ny43NyA2OC44MyAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NyA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMTEyYy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAxMzJhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMwLjE3IDI1OC45MWE3OSA3OSAwIDAgMC01NSA1NC4xN2MtMTQuMjcgNTEuMDUgMjEuMTkgOTcuNzcgNjguODMgMTAyLjUzYTg0LjA3IDg0LjA3IDAgMCAxLTIwLjg1IDEyLjkxYy03LjU3IDMuNC0xMC44IDEyLjQ3LTguMTggMjAuMzRsOS45IDIwYzIuODcgOC42MyAxMi41MyAxMy40OSAyMC45IDkuOTEgNTgtMjQuNzYgODYuMjUtNjEuNjEgODYuMjUtMTMyVjMzNmMtLjAyLTUxLjIxLTQ4LjQtOTEuMzQtMTAxLjg1LTc3LjA5ek0zNTIgMzU2YTIwIDIwIDAgMSAxIDIwLTIwIDIwIDIwIDAgMCAxLTIwIDIwek0zMDQgOTZoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCA5NnpNMTA3LjMxIDM2LjY5YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc5IDIyNEg0MWMtMjEuNCAwLTMyLjEtMjUuOS0xNy00MUwxNDMgNjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTE5IDExOWMxNS4yIDE1LjEgNC41IDQxLTE2LjkgNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEgMjg4aDIzOGMyMS40IDAgMzIuMSAyNS45IDE3IDQxTDE3NyA0NDhjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDI0IDMyOWMtMTUuMS0xNS4xLTQuNC00MSAxNy00MXptMjU1LTEwNUwxNzcgNjRjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDI0IDE4M2MtMTUuMSAxNS4xLTQuNCA0MSAxNyA0MWgyMzhjMjEuNCAwIDMyLjEtMjUuOSAxNy00MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2OC4yNSAxOTJjLTI5LjA0LjEzLTEzNS4wMSA2LjE2LTIxMy44NCA4My0zMy4xMiAyOS42My01My4zNiA2My4zLTY2LjQxIDk0Ljg2LTEzLjA1LTMxLjU2LTMzLjI5LTY1LjIzLTY2LjQxLTk0Ljg2LTc4LjgzLTc2Ljg0LTE4NC44LTgyLjg3LTIxMy44NC04My00LjQxLS4wMi03Ljc5IDMuNC03Ljc1IDcuODIuMjMgMjcuOTIgNy4xNCAxMjYuMTQgODguNzcgMTk5LjNDMTcyLjc5IDQ4MC45NCAyNTYgNDgwIDI4OCA0ODBzMTE1LjE5Ljk1IDE5OS4yMy04MC44OGM4MS42NC03My4xNyA4OC41NC0xNzEuMzggODguNzctMTk5LjMuMDQtNC40Mi0zLjM0LTcuODQtNy43NS03Ljgyek0yODcuOTggMzAyLjZjMTIuODItMTguODUgMjcuNi0zNS43OCA0NC4wOS01MC41MiAxOS4wOS0xOC42MSAzOS41OC0zMy4zIDYwLjI2LTQ1LjE4LTE2LjQ0LTcwLjUtNTEuNzItMTMzLjA1LTk2LjczLTE3Mi4yMi00LjExLTMuNTgtMTEuMDItMy41OC0xNS4xNCAwLTQ0Ljk5IDM5LjE0LTgwLjI3IDEwMS42My05Ni43NCAxNzIuMDcgMjAuMzcgMTEuNyA0MC41IDI2LjE0IDU5LjIyIDQ0LjM5YTI4Mi43NjggMjgyLjc2OCAwIDAgMSA0NS4wNCA1MS40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BhY2VTaHV0dGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5Mi42MDQgMjA4LjI0NEM1NTkuNzM1IDE5Mi44MzYgNTE1Ljc3NyAxODQgNDcyIDE4NEgxODYuMzI3Yy00Ljk1Mi02LjU1NS0xMC41ODUtMTEuOTc4LTE2LjcyLTE2SDM3NkMyMjkuMTU3IDEzNy43NDcgMjE5LjQwMyAzMiA5Ni4wMDMgMzJIOTZ2MTI4SDgwVjMyYy0yNi41MSAwLTQ4IDI4LjY1NC00OCA2NHY2NGMtMjMuMTk3IDAtMzIgMTAuMDMyLTMyIDI0djQwYzAgMTMuOTgzIDguODE5IDI0IDMyIDI0djE2Yy0yMy4xOTcgMC0zMiAxMC4wMzItMzIgMjR2NDBjMCAxMy45ODMgOC44MTkgMjQgMzIgMjR2NjRjMCAzNS4zNDYgMjEuNDkgNjQgNDggNjRWMzUyaDE2djEyOGguMDAzYzEyMy40IDAgMTMzLjE1NC0xMDUuNzQ3IDI3OS45OTctMTM2SDE2OS42MDZjNi4xMzUtNC4wMjIgMTEuNzY4LTkuNDQ1IDE2LjcyLTE2SDQ3MmM0My43NzcgMCA4Ny43MzUtOC44MzYgMTIwLjYwNC0yNC4yNDRDNjIyLjI4MiAyODkuODQ1IDY0MCAyNzEuOTkyIDY0MCAyNTZzLTE3LjcxOC0zMy44NDUtNDcuMzk2LTQ3Ljc1NnpNNDg4IDI5NmE4IDggMCAwIDEtOC04di02NGE4IDggMCAwIDEgOC04YzMxLjkwOSAwIDMxLjk0MiA4MCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGVsbENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAyNTZoOTEuMzZjNDMuMiAwIDgyLTMyLjIgODQuNTEtNzUuMzRhNzkuODIgNzkuODIgMCAwIDAtMjUuMjYtNjMuMDcgNzkuODEgNzkuODEgMCAwIDAgOS4wNi00NC45MUM0MjcuOSAzMC41NyAzODkuMyAwIDM0NyAwaC03NWExNiAxNiAwIDAgMC0xNiAxNnYyMjRhMTYgMTYgMCAwIDAgMTYgMTZ6bTQwLTIwMGg0MGEyNCAyNCAwIDAgMSAwIDQ4aC00MHptMCA5Nmg1NmEyNCAyNCAwIDAgMSAwIDQ4aC01NnpNMTU1LjEyIDIyLjI1QTMyIDMyIDAgMCAwIDEyNC42NCAwSDk5LjM2YTMyIDMyIDAgMCAwLTMwLjQ4IDIyLjI1TC41OSAyMzUuNzNBMTYgMTYgMCAwIDAgMTYgMjU2aDI0LjkzYTE2IDE2IDAgMCAwIDE1LjQyLTExLjczTDY4LjI5IDIwOGg4Ny40MmwxMS45NCAzNi4yN0ExNiAxNiAwIDAgMCAxODMuMDcgMjU2SDIwOGExNiAxNiAwIDAgMCAxNS40Mi0yMC4yN3pNODkuMzcgMTQ0TDExMiA3NS4zbDIyLjYzIDY4Ljd6bTQ4MiAxMzIuNDhsLTQ1LjIxLTQ1LjNhMTUuODggMTUuODggMCAwIDAtMjIuNTkgMGwtMTUxLjUgMTUxLjUtNTUuNDEtNTUuNWExNS44OCAxNS44OCAwIDAgMC0yMi41OSAwbC00NS4zIDQ1LjNhMTYgMTYgMCAwIDAgMCAyMi41OWwxMTIgMTEyLjIxYTE1Ljg5IDE1Ljg5IDAgMCAwIDIyLjYgMGwyMDgtMjA4LjIxYTE2IDE2IDAgMCAwLS4wMi0yMi41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BpZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MS4xNyAxNjcuMzVMMTc3LjEgMTc2aDQuNjdsNS4yMi0yNi4xMmMuNzItMy41OCAxLjgtNy41OCAzLjIxLTExLjc5bC0yMC4yOS00MC41OCAyMy44LTcxLjM5YzIuNzktOC4zOC0xLjczLTE3LjQ0LTEwLjEyLTIwLjI0TDE2OC40Mi44MmMtOC4zOC0yLjgtMTcuNDUgMS43My0yMC4yNCAxMC4xMmwtMjUuODkgNzcuNjhhMzIuMDQgMzIuMDQgMCAwIDAgMS43MyAyNC40M2wyNy4xNSA1NC4zem00MjIuMTQgMTgyLjAzbC01Mi43NS03OS4xMmEzMi4wMDIgMzIuMDAyIDAgMCAwLTI2LjYyLTE0LjI1SDQxNmw2OC45OS0yNC4zNmEzMi4wMyAzMi4wMyAwIDAgMCAxNi41MS0xMi42MWw1My42LTgwLjQxYzQuOS03LjM1IDIuOTEtMTcuMjktNC40NC0yMi4xOWwtMTMuMzEtOC44OGMtNy4zNS00LjktMTcuMjktMi45MS0yMi4xOSA0LjQ0bC01MC41NiA3NS44M0w0MDQuMSAyMDhIMzY4bC0xMC4zNy01MS44NUMzNTUuNDQgMTQ1LjE4IDM0MC4yNiA5NiAyODggOTZjLTUyLjI2IDAtNjcuNDQgNDkuMTgtNjkuNjMgNjAuMTVMMjA4IDIwOGgtMzYuMWwtNjAuNDktMjAuMTdMNjAuODQgMTEyYy00LjktNy4zNS0xNC44My05LjM0LTIyLjE5LTQuNDRsLTEzLjMxIDguODhjLTcuMzUgNC45LTkuMzQgMTQuODMtNC40NCAyMi4xOWw1My42IDgwLjQxYTMyLjAzIDMyLjAzIDAgMCAwIDE2LjUxIDEyLjYxTDE2MCAyNTZIODIuMDZhMzIuMDIgMzIuMDIgMCAwIDAtMjYuNjMgMTQuMjVMMi42OSAzNDkuMzhjLTQuOSA3LjM1LTIuOTIgMTcuMjkgNC40NCAyMi4xOWwxMy4zMSA4Ljg4YzcuMzUgNC45IDE3LjI5IDIuOTEgMjIuMTktNC40NGw0OC03Mmg0Ny4wNmwtNjAuODMgOTcuMzNBMzEuOTg4IDMxLjk4OCAwIDAgMCA3MiA0MTguM1Y0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTczLjExbDc0LjA4LTExOC41M2MtMS4wMSAxNC4wNS0yLjA4IDI4LjExLTIuMDggNDIuMjFDMTkyIDM5OS42NCAyMzIuNzYgNDQ4IDI4OCA0NDhzOTYtNDguMzYgOTYtMTAxLjQzYzAtMTQuMS0xLjA4LTI4LjE2LTIuMDgtNDIuMjFMNDU2IDQyMi44OVY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTc3LjcxYzAtNi0xLjY5LTExLjg4LTQuODYtMTYuOTZMNDM4LjMxIDMwNGg0Ny4wNmw0OCA3MmM0LjkgNy4zNSAxNC44NCA5LjM0IDIyLjE5IDQuNDRsMTMuMzEtOC44OGM3LjM2LTQuOSA5LjM0LTE0LjgzIDQuNDQtMjIuMTh6TTQwNi4wOSA5Ny41MWwtMjAuMjkgNDAuNThjMS40MSA0LjIxIDIuNDkgOC4yMSAzLjIxIDExLjc5bDUuMjIgMjYuMTJoNC42N2wyNS45My04LjY1IDI3LjE1LTU0LjNhMzEuOTk1IDMxLjk5NSAwIDAgMCAxLjczLTI0LjQzbC0yNS44OS03Ny42OEM0MjUuMDMgMi41NiA0MTUuOTYtMS45OCA0MDcuNTguODJsLTE1LjE3IDUuMDZjLTguMzggMi44LTEyLjkxIDExLjg2LTEwLjEyIDIwLjI0bDIzLjggNzEuMzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwaW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDQ4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4IDIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4em0tNDggMzY4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4LTIxLjQ5LTQ4LTQ4LTQ4em0yMDgtMjA4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4LTIxLjQ5LTQ4LTQ4LTQ4ek05NiAyNTZjMC0yNi41MS0yMS40OS00OC00OC00OFMwIDIyOS40OSAwIDI1NnMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OHptMTIuOTIyIDk5LjA3OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OGMwLTI2LjUwOS0yMS40OTEtNDgtNDgtNDh6bTI5NC4xNTYgMGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OGMwLTI2LjUwOS0yMS40OS00OC00OC00OHpNMTA4LjkyMiA2MC45MjJjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDkxLTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGxvdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Mi4yOSAxOTUuODlsLTY3LjA2LTIyLjk1Yy0xOS4yOC02LjYtMzMuNTQtMjAuOTItMzguMTQtMzguM0wzNTEuMSA3NC4xOWMtMTEuNTgtNDMuNzctNzYuNTctNTcuMTMtMTA5Ljk4LTIyLjYybC00Ni4xNCA0Ny42N2MtMTMuMjYgMTMuNzEtMzMuNTQgMjAuOTMtNTQuMiAxOS4zMWwtNzEuODgtNS42MmMtNTIuMDUtNC4wNy04Ni45MyA0NC44OC01OS4wMyA4Mi44M2wzOC41NCA1Mi40MmMxMS4wOCAxNS4wNyAxMi44MiAzMy44NiA0LjY0IDUwLjI0TDI0LjYyIDM1NS40Yy0yMC41OSA0MS4yNSAyMi44NCA4NC44NyA3My40OSA3My44MWw2OS45Ni0xNS4yOGMyMC4xMS00LjM5IDQxLjQ1IDAgNTcuMDcgMTEuNzNsNTQuMzIgNDAuODNjMzkuMzIgMjkuNTYgMTAxLjA0IDcuNTcgMTA0LjQ1LTM3LjIybDQuNy02MS44NmMxLjM1LTE3Ljc5IDEyLjgtMzMuODYgMzAuNjMtNDIuOTlsNjItMzEuNzRjNDQuODgtMjIuOTYgMzkuNTktODAuMTctOC45NS05Ni43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ByYXlDYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2aDEyOFYzMnptMjU2IDk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem0tMjU2IDMySDk2Yy01My4wMiAwLTk2IDQyLjk4LTk2IDk2djIyNGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDI1NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI1NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2em0tNjQgMjU2Yy00NC4xOCAwLTgwLTM1LjgyLTgwLTgwczM1LjgyLTgwIDgwLTgwIDgwIDM1LjgyIDgwIDgwLTM1LjgyIDgwLTgwIDgwek00ODAgOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnMtMTQuMzMtMzItMzItMzItMzIgMTQuMzMtMzIgMzIgMTQuMzMgMzIgMzIgMzJ6bS05NiAzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMiAzMi0xNC4zMyAzMi0zMi0xNC4zMy0zMi0zMi0zMnptLTk2LTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAwYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAxOTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDUxMkgwVjBoNTEydjUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUm9vdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzEuMzEgMjUxLjMxbC0yMi42Mi0yMi42MmMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMEw0ODAgMjc0Ljc1bC00Ni4wNi00Ni4wNmMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMjIuNjIgMjIuNjJjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMNDM0Ljc1IDMyMGwtNDYuMDYgNDYuMDZjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjIgMjIuNjJjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMEw0ODAgMzY1LjI1bDQ2LjA2IDQ2LjA2YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjItMjIuNjJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M0w1MjUuMjUgMzIwbDQ2LjA2LTQ2LjA2YzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjN6TTU1MiAwSDMwNy42NWMtMTQuNTQgMC0yNy4yNiA5LjgtMzAuOTUgMjMuODdsLTg0Ljc5IDMyMi44LTU4LjQxLTEwNi4xQTMyLjAwOCAzMi4wMDggMCAwIDAgMTA1LjQ3IDIyNEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQzLjYybDg4Ljg4IDE2My43M0MxNjguOTkgNTAzLjUgMTg2LjMgNTEyIDIwNC45NCA1MTJjMTcuMjcgMCA0NC40NC05IDU0LjI4LTQxLjQ4TDM1Ny4wMyA5Nkg1NTJjMTMuMjUgMCAyNC0xMC43NSAyNC0yNFYyNGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNTEyaDQ0OHYtNjRIMzJ2NjR6bTM4NC0yNTZoLTY2LjU2Yy0xNi4yNiAwLTI5LjQ0LTEzLjE4LTI5LjQ0LTI5LjQ0di05LjQ2YzAtMjcuMzcgOC44OC01My40MSAyMS40Ni03Ny43MiA5LjExLTE3LjYxIDEyLjktMzguMzkgOS4wNS02MC40Mi02Ljc3LTM4Ljc4LTM4LjQ3LTcwLjctNzcuMjYtNzcuNDVDMjEyLjYyLTkuMDQgMTYwIDM3LjMzIDE2MCA5NmMwIDE0LjE2IDMuMTIgMjcuNTQgOC42OSAzOS41OEMxODIuMDIgMTY0LjQzIDE5MiAxOTQuNyAxOTIgMjI2LjQ5di4wN2MwIDE2LjI2LTEzLjE4IDI5LjQ0LTI5LjQ0IDI5LjQ0SDk2Yy01My4wMiAwLTk2IDQyLjk4LTk2IDk2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDQ4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJBbmRDcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDAuNDcgNDY2LjM2Yy0xLjQ1IDAtNi44OS40Ni05LjE4LjQ2LTExNi4yNSAwLTIxMC44Mi05NC41Ny0yMTAuODItMjEwLjgyUzIxNS4wNCA0NS4xOCAzMzEuMjkgNDUuMThjMi4zMiAwIDcuNy40NiA5LjE4LjQ2IDcuMTMgMCAxMy4zMy01LjAzIDE0Ljc1LTEyLjA3IDEuNDYtNy4yNS0yLjU1LTE0LjQ5LTkuNDctMTcuMDlDMzE2LjU4IDUuNTQgMjg2LjM5IDAgMjU2IDAgMTE0Ljg0IDAgMCAxMTQuODQgMCAyNTZzMTE0Ljg0IDI1NiAyNTYgMjU2YzMwLjIzIDAgNjAuMjgtNS40OSA4OS4zMi0xNi4zMiA1Ljk2LTIuMDIgMTAuMjgtNy42NCAxMC4yOC0xNC4yNiAwLTguMDktNi4zOS0xNS4wNi0xNS4xMy0xNS4wNnptMTYyLjk5LTI1Mi41bC03Ni4zOC0xMS4xLTM0LjE2LTY5LjIxYy0xLjgzLTMuNy01LjM4LTUuNTUtOC45My01LjU1cy03LjEgMS44NS04LjkzIDUuNTVsLTM0LjE2IDY5LjIxLTc2LjM4IDExLjFjLTguMTcgMS4xOC0xMS40MyAxMS4yMi01LjUyIDE2Ljk5bDU1LjI3IDUzLjg3LTEzLjA1IDc2LjA3Yy0xLjExIDYuNDQgNC4wMSAxMS42NiA5LjgxIDExLjY2IDEuNTMgMCAzLjExLS4zNiA0LjY0LTEuMTdMMzg0IDMzNS4zN2w2OC4zMSAzNS45MWMxLjUzLjggMy4xMSAxLjE3IDQuNjQgMS4xNyA1LjggMCAxMC45Mi01LjIzIDkuODEtMTEuNjZsLTEzLjA1LTc2LjA3IDU1LjI3LTUzLjg3YzUuOTEtNS43NyAyLjY1LTE1LjgxLTUuNTItMTYuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJIYWxmQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwOC41NSAxNzEuNTFMMzYyLjE4IDE1MC4yIDI5Ni43NyAxNy44MUMyOTAuODkgNS45OCAyNzkuNDIgMCAyNjcuOTUgMGMtMTEuNCAwLTIyLjc5IDUuOS0yOC42OSAxNy44MWwtNjUuNDMgMTMyLjM4LTE0Ni4zOCAyMS4yOWMtMjYuMjUgMy44LTM2Ljc3IDM2LjA5LTE3Ljc0IDU0LjU5bDEwNS44OSAxMDMtMjUuMDYgMTQ1LjQ4Qzg2Ljk4IDQ5NS4zMyAxMDMuNTcgNTEyIDEyMi4xNSA1MTJjNC45MyAwIDEwLTEuMTcgMTQuODctMy43NWwxMzAuOTUtNjguNjggMTMwLjk0IDY4LjdjNC44NiAyLjU1IDkuOTIgMy43MSAxNC44MyAzLjcxIDE4LjYgMCAzNS4yMi0xNi42MSAzMS42Ni0zNy40bC0yNS4wMy0xNDUuNDkgMTA1LjkxLTEwMi45OGMxOS4wNC0xOC41IDguNTItNTAuOC0xNy43My01NC42em0tMTIxLjc0IDEyMy4ybC0xOC4xMiAxNy42MiA0LjI4IDI0Ljg4IDE5LjUyIDExMy40NS0xMDIuMTMtNTMuNTktMjIuMzgtMTEuNzQuMDMtMzE3LjE5IDUxLjAzIDEwMy4yOSAxMS4xOCAyMi42MyAyNS4wMSAzLjY0IDExNC4yMyAxNi42My04Mi42NSA4MC4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjLTExLjQgMC0yMi44IDUuOS0yOC43IDE3LjhMMTk0IDE1MC4yIDQ3LjkgMTcxLjRjLTI2LjIgMy44LTM2LjcgMzYuMS0xNy43IDU0LjZsMTA1LjcgMTAzLTI1IDE0NS41Yy00LjUgMjYuMSAyMyA0NiA0Ni40IDMzLjdMMjg4IDQzOS42VjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJPZkRhdmlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NjQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNS42OCAyNTZsNTMuMjEtODkuMzlDNDczLjMgMTQyLjQgNDU1LjQ4IDExMiA0MjYuODggMTEySDMxOS45NmwtNTUuOTUtOTMuOThDMjU2Ljg2IDYuMDEgMjQ0LjQzIDAgMjMyIDBzLTI0Ljg2IDYuMDEtMzIuMDEgMTguMDJMMTQ0LjA0IDExMkgzNy4xMWMtMjguNiAwLTQ2LjQyIDMwLjQtMzIuMDEgNTQuNjFMNTguMzIgMjU2IDUuMSAzNDUuMzlDLTkuMzEgMzY5LjYgOC41MSA0MDAgMzcuMTEgNDAwaDEwNi45M2w1NS45NSA5My45OEMyMDcuMTQgNTA1Ljk5IDIxOS41NyA1MTIgMjMyIDUxMnMyNC44Ni02LjAxIDMyLjAxLTE4LjAyTDMxOS45NiA0MDBoMTA2LjkzYzI4LjYgMCA0Ni40Mi0zMC40IDMyLjAxLTU0LjYxTDQwNS42OCAyNTZ6bS0xMi43OC04OGwtMTkuOCAzMy4yNkwzNTMuMyAxNjhoMzkuNnptLTUyLjM5IDg4bC01Mi4zOSA4OEgxNzUuODhsLTUyLjM5LTg4IDUyLjM4LTg4aDExMi4yNWw1Mi4zOSA4OHpNMjMyIDczLjcyTDI1NC43OSAxMTJoLTQ1LjU3TDIzMiA3My43MnpNNzEuMSAxNjhoMzkuNmwtMTkuOCAzMy4yNkw3MS4xIDE2OHptMCAxNzZsMTkuOC0zMy4yNkwxMTAuNyAzNDRINzEuMXpNMjMyIDQzOC4yOEwyMDkuMjEgNDAwaDQ1LjU3TDIzMiA0MzguMjh6TTM1My4yOSAzNDRsMTkuOC0zMy4yNkwzOTIuOSAzNDRoLTM5LjYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyT2ZMaWZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS45OSAzMzQuNDNMMzM2LjA2IDI1NmwxMzUuOTMtNzguNDNjNy42Ni00LjQyIDEwLjI4LTE0LjIgNS44Ni0yMS44NmwtMzIuMDItNTUuNDNjLTQuNDItNy42NS0xNC4yMS0xMC4yOC0yMS44Ny01Ljg2bC0xMzUuOTMgNzguNDNWMTZjMC04Ljg0LTcuMTctMTYtMTYuMDEtMTZoLTY0LjA0Yy04Ljg0IDAtMTYuMDEgNy4xNi0xNi4wMSAxNnYxNTYuODZMNTYuMDQgOTQuNDNjLTcuNjYtNC40Mi0xNy40NS0xLjc5LTIxLjg3IDUuODZMMi4xNSAxNTUuNzFjLTQuNDIgNy42NS0xLjggMTcuNDQgNS44NiAyMS44NkwxNDMuOTQgMjU2IDguMDEgMzM0LjQzYy03LjY2IDQuNDItMTAuMjggMTQuMjEtNS44NiAyMS44NmwzMi4wMiA1NS40M2M0LjQyIDcuNjUgMTQuMjEgMTAuMjcgMjEuODcgNS44NmwxMzUuOTMtNzguNDNWNDk2YzAgOC44NCA3LjE3IDE2IDE2LjAxIDE2aDY0LjA0YzguODQgMCAxNi4wMS03LjE2IDE2LjAxLTE2VjMzOS4xNGwxMzUuOTMgNzguNDNjNy42NiA0LjQyIDE3LjQ1IDEuOCAyMS44Ny01Ljg2bDMyLjAyLTU1LjQzYzQuNDItNy42NSAxLjgtMTcuNDMtNS44Ni0yMS44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTkuMyAxNy44TDE5NCAxNTAuMiA0Ny45IDE3MS41Yy0yNi4yIDMuOC0zNi43IDM2LjEtMTcuNyA1NC42bDEwNS43IDEwMy0yNSAxNDUuNWMtNC41IDI2LjMgMjMuMiA0NiA0Ni40IDMzLjdMMjg4IDQzOS42bDEzMC43IDY4LjdjMjMuMiAxMi4yIDUwLjktNy40IDQ2LjQtMzMuN2wtMjUtMTQ1LjUgMTA1LjctMTAzYzE5LTE4LjUgOC41LTUwLjgtMTcuNy01NC42TDM4MiAxNTAuMiAzMTYuNyAxNy44Yy0xMS43LTIzLjYtNDUuNi0yMy45LTU3LjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlcEJhY2t3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2OFY0NGMwLTYuNiA1LjQtMTIgMTItMTJoNDhjNi42IDAgMTIgNS40IDEyIDEydjE3Ni40bDE5NS41LTE4MUMzNTIuMSAyMi4zIDM4NCAzNi42IDM4NCA2NHYzODRjMCAyNy40LTMxLjkgNDEuNy01Mi41IDI0LjZMMTM2IDI5Mi43VjQ2OGMwIDYuNi01LjQgMTItMTIgMTJINzZjLTYuNiAwLTEyLTUuNC0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlcEZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ0djQyNGMwIDYuNi01LjQgMTItMTIgMTJoLTQ4Yy02LjYgMC0xMi01LjQtMTItMTJWMjkxLjZsLTE5NS41IDE4MUM5NS45IDQ4OS43IDY0IDQ3NS40IDY0IDQ0OFY2NGMwLTI3LjQgMzEuOS00MS43IDUyLjUtMjQuNkwzMTIgMjE5LjNWNDRjMC02LjYgNS40LTEyIDEyLTEyaDQ4YzYuNiAwIDEyIDUuNCAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RldGhvc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ3LjEgMTEyYy0zNC4yLjUtNjIuMyAyOC40LTYzIDYyLjYtLjUgMjQuMyAxMi41IDQ1LjYgMzIgNTYuOFYzNDRjMCA1Ny4zLTUwLjIgMTA0LTExMiAxMDQtNjAgMC0xMDkuMi00NC4xLTExMS45LTk5LjJDMjY1IDMzMy44IDMyMCAyNjkuMiAzMjAgMTkyVjM2LjZjMC0xMS40LTguMS0yMS4zLTE5LjMtMjMuNUwyMzcuOC41Yy0xMy0yLjYtMjUuNiA1LjgtMjguMiAxOC44TDIwNi40IDM1Yy0yLjYgMTMgNS44IDI1LjYgMTguOCAyOC4ybDMwLjcgNi4xdjEyMS40YzAgNTIuOS00Mi4yIDk2LjctOTUuMSA5Ny4yLTUzLjQuNS05Ni45LTQyLjctOTYuOS05NlY2OS40bDMwLjctNi4xYzEzLTIuNiAyMS40LTE1LjIgMTguOC0yOC4ybC0zLjEtMTUuN0MxMDcuNyA2LjQgOTUuMS0yIDgyLjEuNkwxOS4zIDEzQzguMSAxNS4zIDAgMjUuMSAwIDM2LjZWMTkyYzAgNzcuMyA1NS4xIDE0MiAxMjguMSAxNTYuOEMxMzAuNyA0MzkuMiAyMDguNiA1MTIgMzA0IDUxMmM5NyAwIDE3Ni03NS40IDE3Ni0xNjhWMjMxLjRjMTkuMS0xMS4xIDMyLTMxLjcgMzItNTUuNCAwLTM1LjctMjkuMi02NC41LTY0LjktNjR6bS45IDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0aWNreU5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDMyMGgxMzZWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjRDMTAuNyAzMiAwIDQyLjcgMCA1NnY0MDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjY0VjM0NGMwLTEzLjIgMTAuOC0yNCAyNC0yNHptMTI5IDU1bC05OCA5OGMtNC41IDQuNS0xMC42IDctMTcgN2gtNlYzNTJoMTI4djYuMWMwIDYuMy0yLjUgMTIuNC03IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3BDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3B3YXRjaDIwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5OC41LDE5MC45MWwuNTktLjYxLDI2LjU5LTI2LjU4YTE2LDE2LDAsMCwwLDAtMjIuNjNMNDAzLDExOC40MWExNiwxNiwwLDAsMC0yMi42MywwbC0yNC42OCwyNC42OEEyMDYuNjgsMjA2LjY4LDAsMCwwLDI1Niw5OC41VjY0aDMyYTE2LDE2LDAsMCwwLDE2LTE2VjE2QTE2LDE2LDAsMCwwLDI4OCwwSDE2MGExNi4wNSwxNi4wNSwwLDAsMC0xNiwxNlY0OGExNi4wNSwxNi4wNSwwLDAsMCwxNiwxNmgzMlY5OC41QTIwNy45MiwyMDcuOTIsMCwwLDAsMTYuMDksMjk3LjU3QzEyLjY0LDQxMS41LDEwNi43Niw1MTAuMjIsMjIwLjcyLDUxMiwzMzcuMTMsNTEzLjc3LDQzMiw0MjAsNDMyLDMwNEEyMDYsMjA2LDAsMCwwLDM5OC41LDE5MC45MVpNMjA0LjM3LDM3Ny41NWE4LjIsOC4yLDAsMCwxLDguMzIsOC4wN3YyMi4zMWE4LjIsOC4yLDAsMCwxLTguMzIsOC4wN0gxMjEuNTJhMTYuNDYsMTYuNDYsMCwwLDEtMTYuNjEtMTcuNjJjMi43OC0zNS4yMiwxNC42Ny01Ny40MSwzOC40NS05MS4zNywyMC40Mi0yOS4xOSwyNy4xLTM3LjMyLDI3LjEtNjIuMzQsMC0xNi45Mi0xLjc5LTI0LjI3LTEyLjIxLTI0LjI3LTkuMzksMC0xMi42OSw3LjQtMTIuNjksMjIuNjh2NS4yM2E4LjIsOC4yLDAsMCwxLTguMzMsOC4wN2gtMjQuOWE4LjIsOC4yLDAsMCwxLTguMzMtOC4wN3YtNC4wN2MwLTI3LjMsOC40OC02MC4yNCw1Ni40My02MC4yNCw0MywwLDU1LjU3LDI1Ljg1LDU1LjU3LDYxLDAsMzUuNTgtMTIuNDQsNTEuMjEtMzQuMzUsODEuMzEtMTEuNTYsMTUtMjQuNjEsMzUuNTctMjYuNDEsNTEuMlpNMzQ0LDM1Mi4zMmMwLDM1LjE2LTEyLjMsNjMuNjgtNTcuMjMsNjMuNjhDMjQzLjE5LDQxNiwyMzIsMzg2LjQ4LDIzMiwzNTIuNTVWMjQ3LjIyYzAtNDAuNzMsMTkuNTgtNjMuMjIsNTYuMi02My4yMkMzMjUsMTg0LDM0NCwyMDYuNjQsMzQ0LDI0NS4zWk0yODcuODcsMjIxLjczYy05LjQxLDAtMTMuMjMsNy41LTEzLjIzLDIwVjM1Ny42OGMwLDEzLjExLDMuNTksMjAuNTksMTMuMjMsMjAuNTlzMTMtOCwxMy0yMS4yN1YyNDEuMDZDMzAwLjg5LDIyOS43OSwyOTcuODgsMjIxLjczLDI4Ny44NywyMjEuNzNaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3B3YXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgMzA0YzAgMTE0LjktOTMuMSAyMDgtMjA4IDIwOFMxNiA0MTguOSAxNiAzMDRjMC0xMDQgNzYuMy0xOTAuMiAxNzYtMjA1LjVWNjRoLTI4Yy02LjYgMC0xMi01LjQtMTItMTJWMTJjMC02LjYgNS40LTEyIDEyLTEyaDEyMGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC0yOHYzNC41YzM3LjUgNS44IDcxLjcgMjEuNiA5OS43IDQ0LjZsMjcuNS0yNy41YzQuNy00LjcgMTIuMy00LjcgMTcgMGwyOC4zIDI4LjNjNC43IDQuNyA0LjcgMTIuMyAwIDE3bC0yOS40IDI5LjQtLjYuNkM0MTkuNyAyMjMuMyA0MzIgMjYyLjIgNDMyIDMwNHptLTE3NiAzNlYxODguNWMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJWMzQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlQWx0U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODksMTIzLjYyLDUuNTEsMTQyLjJjLTE0LjIsMjEuMywxLDQ5LjgsMjYuNTksNDkuOGg3NC4yNlpNNTc2LDQxMy40MlYyMjRINTEyVjM2NEwzODQsMjY1VjIyNEgzMzAuOTJsLTQxLjQtMzJINjA4YzI1LjUsMCw0MC43LTI4LjUsMjYuNTktNDkuOGwtODUuMjktMTI4QTMyLjE4LDMyLjE4LDAsMCwwLDUyMi42LDBIMTE3LjQyQTMxLjg3LDMxLjg3LDAsMCwwLDkwLjgxLDE0LjJsLTEwLjY2LDE2TDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgxbDE5LjY0LTI1LjI2YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTMyMCwzODRIMTI4VjIyNEg2NFY0ODBhMzIsMzIsMCwwLDAsMzIsMzJIMzUyYTMyLDMyLDAsMCwwLDMyLTMyVjQwNi41OWwtNjQtNDkuNDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAzODRIMTI4VjIyNEg2NHYyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGgtNjR2MTYwem0zMTQuNi0yNDEuOGwtODUuMy0xMjhjLTYtOC45LTE2LTE0LjItMjYuNy0xNC4ySDExNy40Yy0xMC43IDAtMjAuNyA1LjMtMjYuNiAxNC4ybC04NS4zIDEyOGMtMTQuMiAyMS4zIDEgNDkuOCAyNi42IDQ5LjhINjA4YzI1LjUgMCA0MC43LTI4LjUgMjYuNi00OS44ek01MTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjI0aC02NHYyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIxLjUxLDM4NFYyODQuMmExMTkuNDMsMTE5LjQzLDAsMCwxLTI4LDMuOCwxMjMuNDYsMTIzLjQ2LDAsMCwxLTE3LjEtMS4yLDExNC44OCwxMTQuODgsMCwwLDEtMTUuNTgtMy42VjQ4MGMwLDE3LjcsMTMuNTksMzIsMzAuNCwzMkg1MDUuNzVMMzQ4LjQyLDM4NFptLTI4LTEyOC4wOWMyNS4xLDAsNDcuMjktMTAuNzIsNjQtMjcuMjRMMjQsMTIwLjA1Yy0zMC41Miw1My4zOS0yLjQ1LDEyNi41Myw1Ni40OSwxMzVBOTUuNjgsOTUuNjgsMCwwLDAsOTMuNDgsMjU1LjkxWk02MDIuMTMsNDU4LjA5LDU0Ny4yLDQxMy40MVYyODMuMmE5My41LDkzLjUsMCwwLDEtMTUuNTcsMy42LDEyNy4zMSwxMjcuMzEsMCwwLDEtMTcuMjksMS4yLDExNC44OSwxMTQuODksMCwwLDEtMjgtMy44djc5LjY4TDM0OC41MiwyNTEuNzdhODguMDYsODguMDYsMCwwLDAsMjUuNDEsNC4xNGMyOC4xMSwwLDUzLTEzLDcwLjExLTMzLjExLDE3LjE5LDIwLjExLDQyLjA4LDMzLjExLDcwLjExLDMzLjExYTk0LjMxLDk0LjMxLDAsMCwwLDEzLS45MWM1OS42Ni04LjQxLDg4LTgyLjgsNTYuMDYtMTM2LjRMNTIxLjU1LDE1QTMwLjEsMzAuMSwwLDAsMCw0OTUuODEsMEgxMTJBMzAuMTEsMzAuMTEsMCwwLDAsODYuMjcsMTVMNzYuODgsMzAuNzgsNDMuMTksMy4zOEExNC42OCwxNC42OCwwLDAsMCwyMS44Niw2LjE5TDMuMiwzMS40NUExNi41OCwxNi41OCwwLDAsMCw1Ljg3LDUzLjkxTDU2NC44MSw1MDguNjNhMTQuNjksMTQuNjksMCwwLDAsMjEuMzMtMi44MmwxOC42Ni0yNS4yNkExNi41OCwxNi41OCwwLDAsMCw2MDIuMTMsNDU4LjA5WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDIgMTE4LjZMNTM3LjEgMTVDNTMxLjMgNS43IDUyMSAwIDUxMCAwSDEwNkM5NSAwIDg0LjcgNS43IDc4LjkgMTVMMTQgMTE4LjZjLTMzLjUgNTMuNS0zLjggMTI3LjkgNTguOCAxMzYuNCA0LjUuNiA5LjEuOSAxMy43LjkgMjkuNiAwIDU1LjgtMTMgNzMuOC0zMy4xIDE4IDIwLjEgNDQuMyAzMy4xIDczLjggMzMuMSAyOS42IDAgNTUuOC0xMyA3My44LTMzLjEgMTggMjAuMSA0NC4zIDMzLjEgNzMuOCAzMy4xIDI5LjYgMCA1NS44LTEzIDczLjgtMzMuMSAxOC4xIDIwLjEgNDQuMyAzMy4xIDczLjggMzMuMSA0LjcgMCA5LjItLjMgMTMuNy0uOSA2Mi44LTguNCA5Mi42LTgyLjggNTktMTM2LjR6TTUyOS41IDI4OGMtMTAgMC0xOS45LTEuNS0yOS41LTMuOFYzODRIMTE2di05OS44Yy05LjYgMi4yLTE5LjUgMy44LTI5LjUgMy44LTYgMC0xMi4xLS40LTE4LTEuMi01LjYtLjgtMTEuMS0yLjEtMTYuNC0zLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyODMuMmMtNS40IDEuNi0xMC44IDIuOS0xNi40IDMuNi02LjEuOC0xMi4xIDEuMi0xOC4yIDEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEyOGg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6bTQ4MCA4MEg4MGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptLTY0IDE3NkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyZWV0VmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjcuOSAzMjkuNzZjLTQuNjIgNS4zLTkuNzggMTAuMS0xNS45IDEzLjY1djIyLjk0YzY2LjUyIDkuMzQgMTEyIDI4LjA1IDExMiA0OS42NSAwIDMwLjkzLTkzLjEyIDU2LTIwOCA1NlM0OCA0NDYuOTMgNDggNDE2YzAtMjEuNiA0NS40OC00MC4zIDExMi00OS42NXYtMjIuOTRjLTYuMTItMy41NS0xMS4yOC04LjM1LTE1LjktMTMuNjVDNTguODcgMzQ1LjM0IDAgMzc4LjA1IDAgNDE2YzAgNTMuMDIgMTE0LjYyIDk2IDI1NiA5NnMyNTYtNDIuOTggMjU2LTk2YzAtMzcuOTUtNTguODctNzAuNjYtMTQ0LjEtODYuMjR6TTI1NiAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFMyOTEuMzUgMCAyNTYgMHMtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bS02NCAxOTJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC0xMS44Yy0xMS4wNyA1LjAzLTIzLjI2IDgtMzYuMiA4cy0yNS4xMy0yLjk3LTM2LjItOEgyMDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyaWtldGhyb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjI0SDI5My45bC04Ny4xNy0yNi44M0E0My41NSA0My41NSAwIDAgMSAyMTkuNTUgMTEyaDY2Ljc5QTQ5Ljg5IDQ5Ljg5IDAgMCAxIDMzMSAxMzkuNThhMTYgMTYgMCAwIDAgMjEuNDYgNy4xNWw0Mi45NC0yMS40N2ExNiAxNiAwIDAgMCA3LjE2LTIxLjQ2bC0uNTMtMUExMjggMTI4IDAgMCAwIDI4Ny41MSAzMmgtNjhhMTIzLjY4IDEyMy42OCAwIDAgMC0xMjMgMTM1LjY0YzIgMjAuODkgMTAuMSAzOS44MyAyMS43OCA1Ni4zNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0ODBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMTgwLjI0IDk2QTQzIDQzIDAgMCAxIDMzNiAzNTYuNDUgNDMuNTkgNDMuNTkgMCAwIDEgMjkyLjQ1IDQwMGgtNjYuNzlBNDkuODkgNDkuODkgMCAwIDEgMTgxIDM3Mi40MmExNiAxNiAwIDAgMC0yMS40Ni03LjE1bC00Mi45NCAyMS40N2ExNiAxNiAwIDAgMC03LjE2IDIxLjQ2bC41MyAxQTEyOCAxMjggMCAwIDAgMjI0LjQ5IDQ4MGg2OGExMjMuNjggMTIzLjY4IDAgMCAwIDEyMy0xMzUuNjQgMTE0LjI1IDExNC4yNSAwIDAgMC01LjM0LTI0LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJvb3B3YWZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODguMTIgMjEwLjc0TDE0Mi44NiAyNTZsNDUuMjUgNDUuMjVMMjMzLjM3IDI1NmwtNDUuMjUtNDUuMjZ6bTExMy4xMy0yMi42MkwyNTYgMTQyLjg2bC00NS4yNSA0NS4yNUwyNTYgMjMzLjM3bDQ1LjI1LTQ1LjI1em0tOTAuNSAxMzUuNzZMMjU2IDM2OS4xNGw0NS4yNi00NS4yNkwyNTYgMjc4LjYzbC00NS4yNSA0NS4yNXpNMjU2IDBDMTE0LjYyIDAgMCAxMTQuNjIgMCAyNTZzMTE0LjYyIDI1NiAyNTYgMjU2IDI1Ni0xMTQuNjIgMjU2LTI1NlMzOTcuMzggMCAyNTYgMHptMTg2LjY4IDI5NS42bC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0yOC4yOS0yOC4yOS00NS4yNSA0NS4yNSAzMy45NCAzMy45NCAxNi45Ny0xNi45N2MzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTEuMzEgMTEuMzFjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xNi45NyAxNi45NyAxNi45NyAxNi45N2MzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTE2Ljk3LTE2Ljk3LTE2Ljk3IDE2Ljk3Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTYuOTctMTYuOTctMzMuOTQtMzMuOTQtNDUuMjYgNDUuMjYgMjguMjkgMjguMjljMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwTDI1NiA0MTQuMzlsLTI4LjI5IDI4LjI5Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMjguMjktMjguMjktNDUuMjUtNDUuMjYtMzMuOTQgMzMuOTQgMTYuOTcgMTYuOTdjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xNi45Ny0xNi45Ny0xNi45NyAxNi45N2MtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xMS4zMS0xMS4zMWMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDE2Ljk3LTE2Ljk3LTE2Ljk3LTE2Ljk3Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTEuMzEtMTEuMzFjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDE2Ljk3IDE2Ljk3IDMzLjk0LTMzLjk0LTQ1LjI1LTQ1LjI1LTI4LjI5IDI4LjI5Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBMNjkuMzIgMjk1LjZjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMUw5Ny42MSAyNTZsLTI4LjI5LTI4LjI5Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTEuMzEtMTEuMzFjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDI4LjI5IDI4LjI5IDQ1LjI1LTQ1LjI2LTMzLjk0LTMzLjk0LTE2Ljk3IDE2Ljk3Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTYuOTctMTYuOTctMTYuOTctMTYuOTdjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTYuOTcgMTYuOTcgMTYuOTctMTYuOTdjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTYuOTcgMTYuOTcgMzMuOTQgMzMuOTQgNDUuMjYtNDUuMjUtMjguMjktMjguMjljLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBMMjU2IDk3LjYxbDI4LjI5LTI4LjI5YzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxMS4zMSAxMS4zMWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTI4LjI5IDI4LjI5IDQ1LjI2IDQ1LjI1IDMzLjk0LTMzLjk0LTE2Ljk3LTE2Ljk3Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTEuMzEtMTEuMzFjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDE2Ljk3IDE2Ljk3IDE2Ljk3LTE2Ljk3YzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxMS4zMSAxMS4zMWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTE2Ljk3IDE2Ljk3IDE2Ljk3IDE2Ljk3YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTEuMzEgMTEuMzFjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTYuOTctMTYuOTctMzMuOTQgMzMuOTQgNDUuMjUgNDUuMjYgMjguMjktMjguMjljMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMUw0MTQuMzkgMjU2bDI4LjI5IDI4LjI4YTguMDE1IDguMDE1IDAgMCAxIDAgMTEuMzJ6TTI3OC42MyAyNTZsNDUuMjYgNDUuMjVMMzY5LjE0IDI1NmwtNDUuMjUtNDUuMjZMMjc4LjYzIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Vic2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiA0NDhoLTE2VjMwNGExNiAxNiAwIDAgMC0xNi0xNmgtNDhhMTYgMTYgMCAwIDAtMTQuMjkgOC44M2wtMTYgMzJBMTYgMTYgMCAwIDAgNDAwIDM1MmgxNnY5NmgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0zMzYgNjRoLTY3YTE2IDE2IDAgMCAwLTEzLjE0IDYuODdsLTc5LjkgMTE1LTc5LjktMTE1QTE2IDE2IDAgMCAwIDgzIDY0SDE2QTE2IDE2IDAgMCAwIDAgODB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoMzMuNDhsNzcuODEgMTEyLTc3LjgxIDExMkgxNmExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmg2N2ExNiAxNiAwIDAgMCAxMy4xNC02Ljg3bDc5LjktMTE1IDc5LjkgMTE1QTE2IDE2IDAgMCAwIDI2OSA0NDhoNjdhMTYgMTYgMCAwIDAgMTYtMTZ2LTQ4YTE2IDE2IDAgMCAwLTE2LTE2aC0zMy40OGwtNzcuODEtMTEyIDc3LjgxLTExMkgzMzZhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZ2MjU2YzAgNTEuODE1LTYxLjYyNCA5Ni0xMzAuMDIyIDk2bDYyLjk4IDQ5LjcyMUMzODYuOTA1IDUwMi40MTcgMzgzLjU2MiA1MTIgMzc2IDUxMkg3MmMtNy41NzggMC0xMC44OTItOS41OTQtNC45NTctMTQuMjc5TDEzMC4wMjIgNDQ4QzYxLjgyIDQ0OCAwIDQwMy45NTQgMCAzNTJWOTZDMCA0Mi45ODEgNjQgMCAxMjggMGgxOTJjNjUgMCAxMjggNDIuOTgxIDEyOCA5NnpNMjAwIDIzMlYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDcyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0em0yMDAgMFYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI3MmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTA0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHptLTQ4IDU2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4LTIxLjQ5LTQ4LTQ4LTQ4em0tMjU2IDBjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1aXRjYXNlUm9sbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMTYwSDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDE2djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmgxMjh2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2aDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjA4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0xNiAyMTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgyNDBjNC40MiAwIDggMy41OCA4IDh2MTZ6bTAtOTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgyNDBjNC40MiAwIDggMy41OCA4IDh2MTZ6TTE0NCA0OGg5NnY4MGg0OFY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC05NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY4MGg0OFY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VpdGNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDQ4MGgyNTZWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OHY0MDB6bTY0LTM4NGgxMjh2MzJIMTkyVjk2em0zMjAgODB2MjU2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4aC00OFYxMjhoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTk2IDQ4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4djM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxNjBjLTUyLjkgMC05NiA0My4xLTk2IDk2czQzLjEgOTYgOTYgOTYgOTYtNDMuMSA5Ni05Ni00My4xLTk2LTk2LTk2em0yNDYuNCA4MC41bC05NC43LTQ3LjMgMzMuNS0xMDAuNGM0LjUtMTMuNi04LjQtMjYuNS0yMS45LTIxLjlsLTEwMC40IDMzLjUtNDcuNC05NC44Yy02LjQtMTIuOC0yNC42LTEyLjgtMzEgMGwtNDcuMyA5NC43TDkyLjcgNzAuOGMtMTMuNi00LjUtMjYuNSA4LjQtMjEuOSAyMS45bDMzLjUgMTAwLjQtOTQuNyA0Ny40Yy0xMi44IDYuNC0xMi44IDI0LjYgMCAzMWw5NC43IDQ3LjMtMzMuNSAxMDAuNWMtNC41IDEzLjYgOC40IDI2LjUgMjEuOSAyMS45bDEwMC40LTMzLjUgNDcuMyA5NC43YzYuNCAxMi44IDI0LjYgMTIuOCAzMSAwbDQ3LjMtOTQuNyAxMDAuNCAzMy41YzEzLjYgNC41IDI2LjUtOC40IDIxLjktMjEuOWwtMzMuNS0xMDAuNCA5NC43LTQ3LjNjMTMtNi41IDEzLTI0LjcuMi0zMS4xem0tMTU1LjkgMTA2Yy00OS45IDQ5LjktMTMxLjEgNDkuOS0xODEgMC00OS45LTQ5LjktNDkuOS0xMzEuMSAwLTE4MSA0OS45LTQ5LjkgMTMxLjEtNDkuOSAxODEgMCA0OS45IDQ5LjkgNDkuOSAxMzEuMSAwIDE4MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VwZXJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDE2MGgtMTZWMTZhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDQwMCA2NGgxNnY5NmgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0zMzYgNjRoLTY3YTE2IDE2IDAgMCAwLTEzLjE0IDYuODdsLTc5LjkgMTE1LTc5LjktMTE1QTE2IDE2IDAgMCAwIDgzIDY0SDE2QTE2IDE2IDAgMCAwIDAgODB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoMzMuNDhsNzcuODEgMTEyLTc3LjgxIDExMkgxNmExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmg2N2ExNiAxNiAwIDAgMCAxMy4xNC02Ljg3bDc5LjktMTE1IDc5LjkgMTE1QTE2IDE2IDAgMCAwIDI2OSA0NDhoNjdhMTYgMTYgMCAwIDAgMTYtMTZ2LTQ4YTE2IDE2IDAgMCAwLTE2LTE2aC0zMy40OGwtNzcuODEtMTEyIDc3LjgxLTExMkgzMzZhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cnByaXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyMDhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTExMiAyMDhjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em04MC0xNzZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTd2F0Y2hib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNC42NiwxNjcuNzFoMEwzNDQuNSw3Ny4zNmEzMS44MywzMS44MywwLDAsMC00NS0uMDdoMGwtLjA3LjA3TDIyNCwxNTIuODhWNDI0TDQzNC42NiwyMTIuOUEzMiwzMiwwLDAsMCw0MzQuNjYsMTY3LjcxWk00ODAsMzIwSDM3My4wOUwxODYuNjgsNTA2LjUxYy0yLjA2LDIuMDctNC41LDMuNTgtNi42OCw1LjQ5SDQ4MGEzMiwzMiwwLDAsMCwzMi0zMlYzNTJBMzIsMzIsMCwwLDAsNDgwLDMyMFpNMTkyLDMyQTMyLDMyLDAsMCwwLDE2MCwwSDMyQTMyLDMyLDAsMCwwLDAsMzJWNDE2YTk2LDk2LDAsMCwwLDE5MiwwWk05Niw0NDBhMjQsMjQsMCwxLDEsMjQtMjRBMjQsMjQsMCwwLDEsOTYsNDQwWm0zMi0xODRINjRWMTkyaDY0Wm0wLTEyOEg2NFY2NGg2NFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dpbW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODkuNjEgMzEwLjU4YzMuNTQgMy4yNiAxNS4yNyA5LjQyIDM0LjM5IDkuNDJzMzAuODYtNi4xNiAzNC4zOS05LjQyYzE2LjAyLTE0Ljc3IDM0LjUtMjIuNTggNTMuNDYtMjIuNThoMTYuM2MxOC45NiAwIDM3LjQ1IDcuODEgNTMuNDYgMjIuNTggMy41NCAzLjI2IDE1LjI3IDkuNDIgMzQuMzkgOS40MnMzMC44Ni02LjE2IDM0LjM5LTkuNDJjMTQuODYtMTMuNzEgMzEuODgtMjEuMTIgNDkuMzktMjIuMTZsLTExMi44NC04MC42IDE4LTEyLjg2YzMuNjQtMi41OCA4LjI4LTMuNTIgMTIuNjItMi42MWwxMDAuMzUgMjEuNTNjMjUuOTEgNS41MyA1MS40NC0xMC45NyA1Ny0zNi44OCA1LjU1LTI1LjkyLTEwLjk1LTUxLjQ0LTM2Ljg4LTU3TDQzNy42OCA5OC40N2MtMzAuNzMtNi41OC02My4wMi4xMi04OC41NiAxOC4zOGwtODAuMDIgNTcuMTdjLTEwLjM4IDcuMzktMTkuMzYgMTYuNDQtMjYuNzIgMjYuOTRMMTczLjc1IDI5OWM1LjQ3IDMuMjMgMTAuODIgNi45MyAxNS44NiAxMS41OHpNNjI0IDM1MmgtMTZjLTI2LjA0IDAtNDUuOC04LjQyLTU2LjA5LTE3LjktOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUM0NjEuOCAzNDMuNTggNDQyLjA0IDM1MiA0MTYgMzUycy00NS44LTguNDItNTYuMDktMTcuOWMtOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUMyNjkuOCAzNDMuNTggMjUwLjA0IDM1MiAyMjQgMzUycy00NS44LTguNDItNTYuMDktMTcuOWMtOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUM3Ny44IDM0My41OCA1OC4wNCAzNTIgMzIgMzUySDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmMzOC42MiAwIDcyLjcyLTEyLjE5IDk2LTMxLjg0IDIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0czcyLjcyLTEyLjE5IDk2LTMxLjg0YzIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0czcyLjcyLTEyLjE5IDk2LTMxLjg0YzIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTUxMi05NmM0NC4xOCAwIDgwLTM1LjgyIDgwLTgwcy0zNS44Mi04MC04MC04MC04MCAzNS44Mi04MCA4MCAzNS44MiA4MCA4MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dpbW1pbmdQb29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0MTZoLTE2Yy0yNi4wNCAwLTQ1LjgtOC40Mi01Ni4wOS0xNy45LTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNDYxLjggNDA3LjU4IDQ0Mi4wNCA0MTYgNDE2IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDMjY5LjggNDA3LjU4IDI1MC4wNCA0MTYgMjI0IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNzcuOCA0MDcuNTggNTguMDQgNDE2IDMyIDQxNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjMzguNjIgMCA3Mi43Mi0xMi4xOSA5Ni0zMS44NCAyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NGgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS00MDAtMzJ2LTk2aDE5MnY5NmMxOS4xMiAwIDMwLjg2LTYuMTYgMzQuMzktOS40MiA5LjE3LTguNDYgMTkuMi0xNC4zNCAyOS42MS0xOC4wN1YxMjhjMC0xNy42NCAxNC4zNi0zMiAzMi0zMnMzMiAxNC4zNiAzMiAzMnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC01Mi45NC00My4wNi05Ni05Ni05NnMtOTYgNDMuMDYtOTYgOTZ2OTZIMjI0di05NmMwLTE3LjY0IDE0LjM2LTMyIDMyLTMyczMyIDE0LjM2IDMyIDMydjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2cy05NiA0My4wNi05NiA5NnYyMjguNWMxMC40MSAzLjczIDIwLjQ0IDkuNjIgMjkuNjEgMTguMDcgMy41MyAzLjI3IDE1LjI3IDkuNDMgMzQuMzkgOS40M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3luYWdvZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcwIDE5Ni41MUw2LjY3IDI2OC4yOUEyNi42NDMgMjYuNjQzIDAgMCAwIDAgMjg1LjkzVjUxMmgxMjhWMjM5LjU4bC0zOC00My4wN2MtNS4zMS02LjAxLTE0LjY5LTYuMDEtMjAgMHptNTYzLjMzIDcxLjc4TDU3MCAxOTYuNTFjLTUuMzEtNi4wMi0xNC42OS02LjAyLTIwIDBsLTM4IDQzLjA3VjUxMmgxMjhWMjg1LjkzYzAtNi41LTIuMzctMTIuNzctNi42Ny0xNy42NHpNMzM5Ljk5IDcuMDFjLTExLjY5LTkuMzUtMjguMjktOS4zNS0zOS45OCAwbC0xMjggMTAyLjRBMzIuMDA1IDMyLjAwNSAwIDAgMCAxNjAgMTM0LjRWNTEyaDk2di05Mi41N2MwLTMxLjg4IDIxLjc4LTYxLjQzIDUzLjI1LTY2LjU1QzM0OS4zNCAzNDYuMzUgMzg0IDM3Ny4xMyAzODQgNDE2djk2aDk2VjEzNC40YzAtOS43Mi00LjQyLTE4LjkyLTEyLjAxLTI0Ljk5bC0xMjgtMTAyLjR6bTUyLjA3IDIxNS41NWMxLjk4IDMuMTUtLjI5IDcuMjQtNCA3LjI0aC0zOC45NEwzMjQgMjY5Ljc5Yy0xLjg1IDIuOTUtNi4xNSAyLjk1LTggMGwtMjUuMTItMzkuOThoLTM4Ljk0Yy0zLjcyIDAtNS45OC00LjA5LTQtNy4yNGwxOS4yLTMwLjU2LTE5LjItMzAuNTZjLTEuOTgtMy4xNS4yOS03LjI0IDQtNy4yNGgzOC45NGwyNS4xMi00MGMxLjg1LTIuOTUgNi4xNS0yLjk1IDggMGwyNS4xMiAzOS45OGgzOC45NWMzLjcxIDAgNS45OCA0LjA5IDQgNy4yNEwzNzIuODcgMTkybDE5LjE5IDMwLjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTeW5jQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3MC43MiAxMzMuMjhDMzM5LjQ1OCAxMDQuMDA4IDI5OC44ODggODcuOTYyIDI1NS44NDggODhjLTc3LjQ1OC4wNjgtMTQ0LjMyOCA1My4xNzgtMTYyLjc5MSAxMjYuODUtMS4zNDQgNS4zNjMtNi4xMjIgOS4xNS0xMS42NTEgOS4xNUgyNC4xMDNjLTcuNDk4IDAtMTMuMTk0LTYuODA3LTExLjgwNy0xNC4xNzZDMzMuOTMzIDk0LjkyNCAxMzQuODEzIDggMjU2IDhjNjYuNDQ4IDAgMTI2Ljc5MSAyNi4xMzYgMTcxLjMxNSA2OC42ODVMNDYzLjAzIDQwLjk3QzQ3OC4xNDkgMjUuODUxIDUwNCAzNi41NTkgNTA0IDU3Ljk0MVYxOTJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDM0NS45NDFjLTIxLjM4MiAwLTMyLjA5LTI1Ljg1MS0xNi45NzEtNDAuOTcxbDQxLjc1LTQxLjc0OXpNMzIgMjk2aDEzNC4wNTljMjEuMzgyIDAgMzIuMDkgMjUuODUxIDE2Ljk3MSA0MC45NzFsLTQxLjc1IDQxLjc1YzMxLjI2MiAyOS4yNzMgNzEuODM1IDQ1LjMxOSAxMTQuODc2IDQ1LjI4IDc3LjQxOC0uMDcgMTQ0LjMxNS01My4xNDQgMTYyLjc4Ny0xMjYuODQ5IDEuMzQ0LTUuMzYzIDYuMTIyLTkuMTUgMTEuNjUxLTkuMTVoNTcuMzA0YzcuNDk4IDAgMTMuMTk0IDYuODA3IDExLjgwNyAxNC4xNzZDNDc4LjA2NyA0MTcuMDc2IDM3Ny4xODcgNTA0IDI1NiA1MDRjLTY2LjQ0OCAwLTEyNi43OTEtMjYuMTM2LTE3MS4zMTUtNjguNjg1TDQ4Ljk3IDQ3MS4wM0MzMy44NTEgNDg2LjE0OSA4IDQ3NS40NDEgOCA0NTQuMDU5VjMyMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5bmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjY1IDEyLjU3bDQgODIuNzdBMjQ3LjE2IDI0Ny4xNiAwIDAgMCAyNTUuODMgOEMxMzQuNzMgOCAzMy45MSA5NC45MiAxMi4yOSAyMDkuODJBMTIgMTIgMCAwIDAgMjQuMDkgMjI0aDQ5LjA1YTEyIDEyIDAgMCAwIDExLjY3LTkuMjYgMTc1LjkxIDE3NS45MSAwIDAgMSAzMTctNTYuOTRsLTEwMS40Ni00Ljg2YTEyIDEyIDAgMCAwLTEyLjU3IDEydjQ3LjQxYTEyIDEyIDAgMCAwIDEyIDEySDUwMGExMiAxMiAwIDAgMCAxMi0xMlYxMmExMiAxMiAwIDAgMC0xMi0xMmgtNDcuMzdhMTIgMTIgMCAwIDAtMTEuOTggMTIuNTd6TTI1NS44MyA0MzJhMTc1LjYxIDE3NS42MSAwIDAgMS0xNDYtNzcuOGwxMDEuOCA0Ljg3YTEyIDEyIDAgMCAwIDEyLjU3LTEydi00Ny40YTEyIDEyIDAgMCAwLTEyLTEySDEyYTEyIDEyIDAgMCAwLTEyIDEyVjUwMGExMiAxMiAwIDAgMCAxMiAxMmg0Ny4zNWExMiAxMiAwIDAgMCAxMi0xMi42bC00LjE1LTgyLjU3QTI0Ny4xNyAyNDcuMTcgMCAwIDAgMjU1LjgzIDUwNGMxMjEuMTEgMCAyMjEuOTMtODYuOTIgMjQzLjU1LTIwMS44MmExMiAxMiAwIDAgMC0xMS44LTE0LjE4aC00OS4wNWExMiAxMiAwIDAgMC0xMS42NyA5LjI2QTE3NS44NiAxNzUuODYgMCAwIDEgMjU1LjgzIDQzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3lyaW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDEuNSAxNzQuOGw1NS43IDU1LjhjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC01NS43LTU1LjgtNDUuMyA0NS4zIDU1LjggNTUuOGMzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBMMTExIDI2NS4ybC0yNi40IDI2LjRjLTE3LjMgMTcuMy0yNS42IDQxLjEtMjMgNjUuNGw3LjEgNjMuNkwyLjMgNDg3Yy0zLjEgMy4xLTMuMSA4LjIgMCAxMS4zbDExLjMgMTEuM2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDY2LjMtNjYuMyA2My42IDcuMWMyMy45IDIuNiA0Ny45LTUuNCA2NS40LTIzbDE4MS45LTE4MS45LTEzNS43LTEzNS43LTY0LjkgNjV6bTMwOC4yLTkzLjNMNDMwLjUgMi4zYy0zLjEtMy4xLTguMi0zLjEtMTEuMyAwbC0xMS4zIDExLjNjLTMuMSAzLjEtMy4xIDguMiAwIDExLjNsMjguMyAyOC4zLTQ1LjMgNDUuMy01Ni42LTU2LjYtMTctMTdjLTMuMS0zLjEtOC4yLTMuMS0xMS4zIDBsLTMzLjkgMzMuOWMtMy4xIDMuMS0zLjEgOC4yIDAgMTEuM2wxNyAxN0w0MjQuOCAyMjNsMTcgMTdjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGwzMy45LTM0YzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTczLjUtNzMuNSA0NS4zLTQ1LjMgMjguMyAyOC4zYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMTEuMy0xMS4zYzMuMS0zLjIgMy4xLTguMiAwLTExLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlVGVubmlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ni4yIDI5Ni41QzUyNy43IDIxOC43IDUxMiAxMjYuMiA0NDkgNjMuMSAzNjUuMS0yMSAyMjktMjEgMTQ1LjEgNjMuMWwtNTYgNTYuMSAyMTEuNSAyMTEuNWM0Ni4xLTYyLjEgMTMxLjUtNzcuNCAxOTUuNi0zNC4yem0tMjE3LjkgNzkuN0w1Ny45IDE1NS45Yy0yNy4zIDQ1LjMtMjEuNyAxMDUgMTcuMyAxNDQuMWwzNC41IDM0LjZMNi43IDQyNGMtOC42IDcuNS05LjEgMjAuNy0xIDI4LjhsNTMuNCA1My41YzggOC4xIDIxLjIgNy42IDI4LjctMUwxNzcuMSA0MDJsMzUuNyAzNS43YzE5LjcgMTkuNyA0NC42IDMwLjUgNzAuMyAzMy4zLTcuMS0xNy0xMS0zNS42LTExLTU1LjEtLjEtMTMuOCAyLjUtMjcgNi4yLTM5Ljd6TTQxNiAzMjBjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTYgOTYtNDMgOTYtOTYtNDMtOTYtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMjI0IDQxNkg2NHYtOTZoMTYwdjk2em0wLTE2MEg2NHYtOTZoMTYwdjk2em0yMjQgMTYwSDI4OHYtOTZoMTYwdjk2em0wLTE2MEgyODh2LTk2aDE2MHY5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGV0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yMjQgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTc2LTEwOGMwIDYuNi01LjQgMTItMTIgMTJINjBjLTYuNiAwLTEyLTUuNC0xMi0xMlY2MGMwLTYuNiA1LjQtMTIgMTItMTJoMzI4YzYuNiAwIDEyIDUuNCAxMiAxMnYzMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjI0IDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDE5MkM3OC45IDE5MiAxMi41IDI1MC41LjEgMzI2LjdjLS44IDQuOCAzLjMgOS4zIDguMyA5LjNoMzAzLjNjNSAwIDkuMS00LjUgOC4zLTkuM0MzMDcuNSAyNTAuNSAyNDEuMSAxOTIgMTYwIDE5MnptMTUxLjYgMTc2SDguNGMtNSAwLTkuMSA0LjUtOC4zIDkuM0MxMi41IDQ1My41IDc4LjkgNTEyIDE2MCA1MTJzMTQ3LjUtNTguNSAxNTkuOS0xMzQuN2MuOC00LjgtMy4zLTkuMy04LjMtOS4zek01OTMuNCA0Ni42Yy01Ni41LTU2LjUtMTQ0LjItNjEuNC0yMDYuOS0xNi00IDIuOS00LjMgOC45LS44IDEyLjNMNTk3IDI1NC4zYzMuNSAzLjUgOS41IDMuMiAxMi4zLS44IDQ1LjUtNjIuNyA0MC42LTE1MC40LTE1LjktMjA2Ljl6TTM2MyA2NS43Yy0zLjUtMy41LTkuNS0zLjItMTIuMy44LTQ1LjQgNjIuNy00MC41IDE1MC40IDE1LjkgMjA2LjkgNTYuNSA1Ni41IDE0NC4yIDYxLjQgMjA2LjkgMTUuOSA0LTIuOSA0LjMtOC45LjgtMTIuM0wzNjMgNjUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFjaG9tZXRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJDMTI4Ljk0IDMyIDAgMTYwLjk0IDAgMzIwYzAgNTIuOCAxNC4yNSAxMDIuMjYgMzkuMDYgMTQ0LjggNS42MSA5LjYyIDE2LjMgMTUuMiAyNy40NCAxNS4yaDQ0M2MxMS4xNCAwIDIxLjgzLTUuNTggMjcuNDQtMTUuMkM1NjEuNzUgNDIyLjI2IDU3NiAzNzIuOCA1NzYgMzIwYzAtMTU5LjA2LTEyOC45NC0yODgtMjg4LTI4OHptMCA2NGMxNC43MSAwIDI2LjU4IDEwLjEzIDMwLjMyIDIzLjY1LTEuMTEgMi4yNi0yLjY0IDQuMjMtMy40NSA2LjY3bC05LjIyIDI3LjY3Yy01LjEzIDMuNDktMTAuOTcgNi4wMS0xNy42NCA2LjAxLTE3LjY3IDAtMzItMTQuMzMtMzItMzJTMjcwLjMzIDk2IDI4OCA5NnpNOTYgMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem00OC0xNjBjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTI0Ni43Ny03Mi40MWwtNjEuMzMgMTg0QzM0My4xMyAzNDcuMzMgMzUyIDM2NC41NCAzNTIgMzg0YzAgMTEuNzItMy4zOCAyMi41NS04Ljg4IDMySDIzMi44OGMtNS41LTkuNDUtOC44OC0yMC4yOC04Ljg4LTMyIDAtMzMuOTQgMjYuNS02MS40MyA1OS45LTYzLjU5bDYxLjM0LTE4NC4wMWM0LjE3LTEyLjU2IDE3LjczLTE5LjQ1IDMwLjM2LTE1LjE3IDEyLjU3IDQuMTkgMTkuMzUgMTcuNzkgMTUuMTcgMzAuMzZ6bTE0LjY2IDU3LjJsMTUuNTItNDYuNTVjMy40Ny0xLjI5IDcuMTMtMi4yMyAxMS4wNS0yLjIzIDE3LjY3IDAgMzIgMTQuMzMgMzIgMzJzLTE0LjMzIDMyLTMyIDMyYy0xMS4zOC0uMDEtMjAuODktNi4yOC0yNi41Ny0xNS4yMnpNNDgwIDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjUyLjExOFY0OEMwIDIxLjQ5IDIxLjQ5IDAgNDggMGgyMDQuMTE4YTQ4IDQ4IDAgMCAxIDMzLjk0MSAxNC4wNTlsMjExLjg4MiAyMTEuODgyYzE4Ljc0NSAxOC43NDUgMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4MkwyOTMuODIzIDQ5Ny45NDFjLTE4Ljc0NSAxOC43NDUtNDkuMTM3IDE4Ljc0NS02Ny44ODIgMEwxNC4wNTkgMjg2LjA1OUE0OCA0OCAwIDAgMSAwIDI1Mi4xMTh6TTExMiA2NGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOTQxIDIyNS45NDFMMjg2LjA1OSAxNC4wNTlBNDggNDggMCAwIDAgMjUyLjExOCAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djIwNC4xMThhNDggNDggMCAwIDAgMTQuMDU5IDMzLjk0MWwyMTEuODgyIDIxMS44ODJjMTguNzQ0IDE4Ljc0NSA0OS4xMzYgMTguNzQ2IDY3Ljg4MiAwbDIwNC4xMTgtMjA0LjExOGMxOC43NDUtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMC02Ny44ODJ6TTExMiAxNjBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTUxMy45NDEgMTMzLjgyM0w0MjEuODIzIDQ5Ny45NDFjLTE4Ljc0NSAxOC43NDUtNDkuMTM3IDE4Ljc0NS02Ny44ODIgMGwtLjM2LS4zNkw1MjcuNjQgMzIzLjUyMmMxNi45OTktMTYuOTk5IDI2LjM2LTM5LjYgMjYuMzYtNjMuNjRzLTkuMzYyLTQ2LjY0MS0yNi4zNi02My42NEwzMzEuMzk3IDBoNDguNzIxYTQ4IDQ4IDAgMCAxIDMzLjk0MSAxNC4wNTlsMjExLjg4MiAyMTEuODgyYzE4Ljc0NSAxOC43NDUgMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0IDY0LTI4LjcgNjQtNjQtMjguNy02NC02NC02NHptNDAwIDIyNEgzODAuNmM0MS41LTQwLjcgNjcuNC05Ny4zIDY3LjQtMTYwIDAtMTIzLjctMTAwLjMtMjI0LTIyNC0yMjRTMCAxMzIuMyAwIDI1NnMxMDAuMyAyMjQgMjI0IDIyNGg0MDBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bS00MDAtNjRjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTYgOTYgNDMgOTYgOTYtNDMgOTYtOTYgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhc2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzOS42MSAzNS41YTEyIDEyIDAgMCAwLTE3IDBMNTguOTMgOTguODFsLTIyLjctMjIuMTJhMTIgMTIgMCAwIDAtMTcgMEwzLjUzIDkyLjQxYTEyIDEyIDAgMCAwIDAgMTdsNDcuNTkgNDcuNGExMi43OCAxMi43OCAwIDAgMCAxNy42MSAwbDE1LjU5LTE1LjYyTDE1Ni41MiA2OWExMi4wOSAxMi4wOSAwIDAgMCAuMDktMTd6bTAgMTU5LjE5YTEyIDEyIDAgMCAwLTE3IDBsLTYzLjY4IDYzLjcyLTIyLjctMjIuMWExMiAxMiAwIDAgMC0xNyAwTDMuNTMgMjUyYTEyIDEyIDAgMCAwIDAgMTdMNTEgMzE2LjVhMTIuNzcgMTIuNzcgMCAwIDAgMTcuNiAwbDE1LjctMTUuNjkgNzIuMi03Mi4yMmExMiAxMiAwIDAgMCAuMDktMTYuOXpNNjQgMzY4Yy0yNi40OSAwLTQ4LjU5IDIxLjUtNDguNTkgNDhTMzcuNTMgNDY0IDY0IDQ2NGE0OCA0OCAwIDAgMCAwLTk2em00MzIgMTZIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDIwOGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyODhhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDIwOGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyODhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXhpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MiAyNDEuNjRsLTIyLTg0Ljg0Yy05LjYtMzUuMi00MS42LTYwLjgtNzYuOC02MC44SDM1MlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmgtMTEuMmMtMzUuMiAwLTY3LjIgMjUuNi03Ni44IDYwLjhsLTIyIDg0Ljg0QzIxLjQxIDI0OC4wNCAwIDI3My40NyAwIDMwNHY0OGMwIDIzLjYzIDEyLjk1IDQ0LjA0IDMyIDU1LjEyVjQ0OGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDI1NnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTQwLjg4YzE5LjA1LTExLjA5IDMyLTMxLjUgMzItNTUuMTJ2LTQ4YzAtMzAuNTMtMjEuNDEtNTUuOTYtNTAtNjIuMzZ6TTk2IDM1MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMjAuNTUtMTEybDE3LjItNjYuMzZjMi4yMy04LjE2IDkuNTktMTMuNjQgMTUuMDYtMTMuNjRoMjE0LjRjNS40NyAwIDEyLjgzIDUuNDggMTQuODUgMTIuODZMMzk1LjQ1IDI0MGgtMjc4Ljl6TTQxNiAzNTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlZXRoT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMEg5NkM0Mi45OCAwIDAgNDIuOTggMCA5NnY2NGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0aDUxMmMzNS4zNCAwIDY0LTI4LjY1IDY0LTY0Vjk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6TTE2MCAxNzZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djMyem0xNDQgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di01NmMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djU2em0xNDQgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di01NmMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djU2em0xMjggMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtNjRjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djMyem0wIDE0NEg2NGMtMzUuMzQgMC02NCAyOC42NS02NCA2NHYzMmMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2aDQ0OGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2di0zMmMwLTM1LjM1LTI4LjY2LTY0LTY0LTY0em0tNDE2IDgwYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMnptMTQ0LThjMCAzMC45My0yNS4wNyA1Ni01NiA1NnMtNTYtMjUuMDctNTYtNTZ2LTI0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzguODQgMCAxNiA3LjE2IDE2IDE2djI0em0xNDQgMGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtMjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MjR6bTEyOCA4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVldGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDBIOTZDNDIuOTggMCAwIDQyLjk4IDAgOTZ2MzIwYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZoNDQ4YzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnpNMTYwIDM2OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4cy00OC0yMS40OS00OC00OHYtNjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoNjRjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NjR6bTAtMTI4YzAgOC44NC03LjE2IDE2LTE2IDE2SDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OHY2NHptMTQ0IDEyMGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtNTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NTZ6bTAtMTIwYzAgOC44NC03LjE2IDE2LTE2IDE2aC04MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTg4YzAtMzAuOTMgMjUuMDctNTYgNTYtNTZzNTYgMjUuMDcgNTYgNTZ2ODh6bTE0NCAxMjBjMCAzMC45My0yNS4wNyA1Ni01NiA1NnMtNTYtMjUuMDctNTYtNTZ2LTU2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzguODQgMCAxNiA3LjE2IDE2IDE2djU2em0wLTEyMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di04OGMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djg4em0xMjggMTI4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di02NGMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY2NHptMC0xMjhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTY0Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwYy01Mi45IDAtOTYgNDMuMS05NiA5NnM0My4xIDk2IDk2IDk2IDk2LTQzLjEgOTYtOTYtNDMuMS05Ni05Ni05NnptMCAxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0tMTYwLTE2QzI1NiA1MC4xIDIwNS45IDAgMTQ0IDBTMzIgNTAuMSAzMiAxMTJ2MTY2LjVDMTIuMyAzMDMuMiAwIDMzNCAwIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzQtMTIuMy02NC45LTMyLTg5LjVWMTEyek0xNDQgNDQ4Yy00NC4xIDAtODAtMzUuOS04MC04MCAwLTI1LjUgMTIuMi00OC45IDMyLTYzLjhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTkyLjJjMTkuOCAxNC44IDMyIDM4LjMgMzIgNjMuOCAwIDQ0LjEtMzUuOSA4MC04MCA4MHptMTYtMTI1LjFWMTEyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djIxMC45Yy0xOC42IDYuNi0zMiAyNC4yLTMyIDQ1LjEgMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGMwLTIwLjktMTMuNC0zOC41LTMyLTQ1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbXBlcmF0dXJlTG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwYy01Mi45IDAtOTYgNDMuMS05NiA5NnM0My4xIDk2IDk2IDk2IDk2LTQzLjEgOTYtOTYtNDMuMS05Ni05Ni05NnptMCAxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0tMTYwLTE2QzI1NiA1MC4xIDIwNS45IDAgMTQ0IDBTMzIgNTAuMSAzMiAxMTJ2MTY2LjVDMTIuMyAzMDMuMiAwIDMzNCAwIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzQtMTIuMy02NC45LTMyLTg5LjVWMTEyek0xNDQgNDQ4Yy00NC4xIDAtODAtMzUuOS04MC04MCAwLTI1LjUgMTIuMi00OC45IDMyLTYzLjhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTkyLjJjMTkuOCAxNC44IDMyIDM4LjMgMzIgNjMuOCAwIDQ0LjEtMzUuOSA4MC04MCA4MHptMTYtMTI1LjFWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djE4LjljLTE4LjYgNi42LTMyIDI0LjItMzIgNDUuMSAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjUtMzItNDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDE2MEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjU2YzAgNi42IDUuNCAxMiAxMiAxMmgxNDB2MjI4YzAgNi42IDUuNCAxMiAxMiAxMmg1NmM2LjYgMCAxMi01LjQgMTItMTJWMjQwaDE0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTU2YzAtNi42LTUuNC0xMi0xMi0xMnptMC0xMjhIMTJDNS40IDMyIDAgMzcuNCAwIDQ0djU2YzAgNi42IDUuNCAxMiAxMiAxMmgzNjBjNi42IDAgMTItNS40IDEyLTEyVjQ0YzAtNi42LTUuNC0xMi0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU3Ljk4MSAyNzIuOTcxTDYzLjYzOCA0NjcuMzE0Yy05LjM3MyA5LjM3My0yNC41NjkgOS4zNzMtMzMuOTQxIDBMNy4wMjkgNDQ0LjY0N2MtOS4zNTctOS4zNTctOS4zNzUtMjQuNTIyLS4wNC0zMy45MDFMMTYxLjAxMSAyNTYgNi45OSAxMDEuMjU1Yy05LjMzNS05LjM3OS05LjMxNy0yNC41NDQuMDQtMzMuOTAxbDIyLjY2Ny0yMi42NjdjOS4zNzMtOS4zNzMgMjQuNTY5LTkuMzczIDMzLjk0MSAwTDI1Ny45ODEgMjM5LjAzYzkuMzczIDkuMzcyIDkuMzczIDI0LjU2OCAwIDMzLjk0MXpNNjQwIDQ1NnYtMzJjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDMxMmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djMyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZXh0SGVpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djk2YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmg1NnYzMDRIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTYwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtNDBWMTEyaDU2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2em0yNTYgMzM2aC00OFYxNDRoNDhjMTQuMzEgMCAyMS4zMy0xNy4zMSAxMS4zMS0yNy4zMWwtODAtODBhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgODBDMzc5LjM2IDEyNiAzODQuMzYgMTQ0IDQwMCAxNDRoNDh2MjI0aC00OGMtMTQuMzEgMC0yMS4zMiAxNy4zMS0xMS4zMSAyNy4zMWw4MCA4MGExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTgwQzU4MC42NCAzODYgNTc1LjY0IDM2OCA1NjAgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZXh0V2lkdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2ODBhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTE2aDEyMHYxMTJoLTI0YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTI0VjExMmgxMjB2MTZhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bS02OC42OSAyNjAuNjlDMzU0IDI4My4zNiAzMzYgMjg4LjM2IDMzNiAzMDR2NDhIMTEydi00OGMwLTE0LjMxLTE3LjMxLTIxLjMyLTI3LjMxLTExLjMxbC04MCA4MGExNiAxNiAwIDAgMCAwIDIyLjYybDgwIDgwQzk0IDQ4NC42NCAxMTIgNDc5LjY0IDExMiA0NjR2LTQ4aDIyNHY0OGMwIDE0LjMxIDE3LjMxIDIxLjMzIDI3LjMxIDExLjMxbDgwLTgwYTE2IDE2IDAgMCAwIDAtMjIuNjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoTGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDMyaDE5MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MTYwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyOTZjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFY1NmMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjR6bS04MCAwSDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTAgMjk2djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyOTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bTI5NiAxODRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyOTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI5NmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDkuMzMzIDIxNnY4MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHYtODBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDEwMS4zMzNjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0ek0wIDM3NnY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0ek0xMjUuMzMzIDMySDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6bTgwIDQ0OEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHptLTI0LTQyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0em0yNCAyNjRINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OS4zMzMgNTZ2ODBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDI0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWNTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDEwMS4zMzNjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0em0xODEuMzM0IDI0MHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTYgMCAyNC4wMDEtMTAuNzQ1IDI0LjAwMS0yNHptMzItMjQwdjgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgzODYuNjY3Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bS0zMiA4MFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NiAwIDI0LjAwMS0xMC43NDUgMjQuMDAxLTI0em0tMjA1LjMzNCA1NkgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek0wIDM3NnY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0em0zODYuNjY3LTU2SDQ4OGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgzODYuNjY3Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0em0wIDE2MEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzg2LjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHpNMTgxLjMzMyAzNzZ2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVhdGVyTWFza3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA2Ljg2IDI0NS4xNWMtMzUuODggMTAuNDUtNTkuOTUgNDEuMi01Ny41MyA3NC4xIDExLjQtMTIuNzIgMjguODEtMjMuNyA0OS45LTMwLjkybDcuNjMtNDMuMTh6TTk1LjgxIDI5NUw2NC4wOCAxMTUuNDljLS4yOS0xLjYyLjI4LTIuNjIuMjQtMi42NSA1Ny43Ni0zMi4wNiAxMjMuMTItNDkuMDEgMTg5LjAxLTQ5LjAxIDEuNjEgMCAzLjIzLjE3IDQuODUuMTkgMTMuOTUtMTMuNDcgMzEuNzMtMjIuODMgNTEuNTktMjYgMTguODktMy4wMiAzOC4wNS00LjU1IDU3LjE4LTUuMzItOS45OS0xMy45NS0yNC40OC0yNC4yMy00MS43Ny0yN0MzMDEuMjcgMS44OSAyNzcuMjQgMCAyNTMuMzIgMCAxNzYuNjYgMCAxMDEuMDIgMTkuNDIgMzMuMiA1Ny4wNiA5LjAzIDcwLjQ4LTMuOTIgOTguNDggMS4wNSAxMjYuNThsMzEuNzMgMTc5LjUxYzE0LjIzIDgwLjUyIDEzNi4zMyAxNDIuMDggMjA0LjQ1IDE0Mi4wOCAzLjU5IDAgNi43NS0uNDYgMTAuMDEtLjgtMTMuNTItMTcuMDgtMjguOTQtNDAuNDgtMzkuNS02Ny41OC00Ny42MS0xMi45OC0xMDYuMDYtNTEuNjItMTExLjkzLTg0Ljc5em05Ny41NS0xMzcuNDZjLS43My00LjEyLTIuMjMtNy44Ny00LjA3LTExLjQtOC4yNSA4LjkxLTIwLjY3IDE1Ljc1LTM1LjMyIDE4LjMyLTE0LjY1IDIuNTgtMjguNjcuNC0zOS40OC01LjE3LS41MiAzLjk0LS42NCA3Ljk4LjA5IDEyLjEgMy44NCAyMS43IDI0LjU4IDM2LjE5IDQ2LjM0IDMyLjM3IDIxLjc1LTMuODIgMzYuMjgtMjQuNTIgMzIuNDQtNDYuMjJ6TTYwNi44IDEyMC45Yy04OC45OC00OS4zOC0xOTEuNDMtNjcuNDEtMjkxLjk4LTUxLjM1LTI3LjMxIDQuMzYtNDkuMDggMjYuMjYtNTQuMDQgNTQuMzZsLTMxLjczIDE3OS41MWMtMTUuMzkgODcuMDUgOTUuMjggMTk2LjI3IDE1OC4zMSAyMDcuMzUgNjMuMDMgMTEuMDkgMjA0LjQ3LTUzLjc5IDIxOS44Ni0xNDAuODRsMzEuNzMtMTc5LjUxYzQuOTctMjguMTEtNy45OC01Ni4xMS0zMi4xNS02OS41MnptLTI3My4yNCA5Ni44YzMuODQtMjEuNyAyNC41OC0zNi4xOSA0Ni4zNC0zMi4zNiAyMS43NiAzLjgzIDM2LjI4IDI0LjUyIDMyLjQ1IDQ2LjIyLS43MyA0LjEyLTIuMjMgNy44Ny00LjA3IDExLjQtOC4yNS04LjkxLTIwLjY3LTE1Ljc1LTM1LjMyLTE4LjMyLTE0LjY1LTIuNTgtMjguNjctLjQtMzkuNDggNS4xNy0uNTMtMy45NS0uNjUtNy45OS4wOC0xMi4xMXptNzAuNDcgMTk4Ljc2Yy01NS42OC05Ljc5LTkzLjUyLTU5LjI3LTg5LjA0LTExMi45IDIwLjYgMjUuNTQgNTYuMjEgNDYuMTcgOTkuNDkgNTMuNzggNDMuMjggNy42MSA4My44Mi4zNyAxMTEuOTMtMTYuNi0xNC4xOCA1MS45NC02Ni43MSA4NS41MS0xMjIuMzggNzUuNzJ6bTEzMC4zLTE1MS4zNGMtOC4yNS04LjkxLTIwLjY4LTE1Ljc1LTM1LjMzLTE4LjMyLTE0LjY1LTIuNTgtMjguNjctLjQtMzkuNDggNS4xNy0uNTItMy45NC0uNjQtNy45OC4wOS0xMi4xIDMuODQtMjEuNyAyNC41OC0zNi4xOSA0Ni4zNC0zMi4zNyAyMS43NSAzLjgzIDM2LjI4IDI0LjUyIDMyLjQ1IDQ2LjIyLS43MyA0LjEzLTIuMjMgNy44OC00LjA3IDExLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyRW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTM1LjM0NiAyOC42NTQtNjQgNjQtNjRzNjQgMjguNjU0IDY0IDY0em0zMi04NC42NTNjMTkuOTEyIDIyLjU2MyAzMiA1Mi4xOTQgMzIgODQuNjUzIDAgNzAuNjk2LTU3LjMwMyAxMjgtMTI4IDEyOC0uMjk5IDAtLjYwOS0uMDAxLS45MDktLjAwM0M1Ni43ODkgNTExLjUwOS0uMzU3IDQ1My42MzYuMDAyIDM4My4zMzMuMTY2IDM1MS4xMzUgMTIuMjI1IDMyMS43NTUgMzIgMjk5LjM0N1Y5NmMwLTUzLjAxOSA0Mi45ODEtOTYgOTYtOTZzOTYgNDIuOTgxIDk2IDk2djIwMy4zNDd6TTIwOCAzODRjMC0zNC4zMzktMTkuMzctNTIuMTktMzItNjYuNTAyVjk2YzAtMjYuNDY3LTIxLjUzMy00OC00OC00OFM4MCA2OS41MzMgODAgOTZ2MjIxLjQ5OGMtMTIuNzMyIDE0LjQyOC0zMS44MjUgMzIuMS0zMS45OTkgNjYuMDgtLjIyNCA0My44NzYgMzUuNTYzIDgwLjExNiA3OS40MjMgODAuNDJMMTI4IDQ2NGM0NC4xMTIgMCA4MC0zNS44ODggODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgOTZjMC01My4wMTktNDIuOTgxLTk2LTk2LTk2UzMyIDQyLjk4MSAzMiA5NnYyMDMuMzQ3QzEyLjIyNSAzMjEuNzU2LjE2NiAzNTEuMTM2LjAwMiAzODMuMzMzYy0uMzU5IDcwLjMwMyA1Ni43ODcgMTI4LjE3NiAxMjcuMDg5IDEyOC42NjQuMjk5LjAwMi42MS4wMDMuOTA5LjAwMyA3MC42OTggMCAxMjgtNTcuMzA0IDEyOC0xMjggMC0zMi40NTktMTIuMDg4LTYyLjA5LTMyLTg0LjY1M1Y5NnptLTk2IDM2OGwtLjU3Ni0uMDAyYy00My44Ni0uMzA0LTc5LjY0Ny0zNi41NDQtNzkuNDIzLTgwLjQyLjE3My0zMy45OCAxOS4yNjYtNTEuNjUyIDMxLjk5OS02Ni4wOFY5NmMwLTI2LjQ2NyAyMS41MzMtNDggNDgtNDhzNDggMjEuNTMzIDQ4IDQ4djIyMS40OThjMTIuNjMgMTQuMzEyIDMyIDMyLjE2NCAzMiA2Ni41MDIgMCA0NC4xMTItMzUuODg4IDgwLTgwIDgwem02NC04MGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1Y5NmMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjIzMi41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1YyMjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnYxMDQuNTgzYzE5LjEyNCAxMS4wNjggMzIgMzEuNzMyIDMyIDU1LjQxN3ptMzItODQuNjUzYzE5LjkxMiAyMi41NjMgMzIgNTIuMTk0IDMyIDg0LjY1MyAwIDcwLjY5Ni01Ny4zMDMgMTI4LTEyOCAxMjgtLjI5OSAwLS42MDktLjAwMS0uOTA5LS4wMDNDNTYuNzg5IDUxMS41MDktLjM1NyA0NTMuNjM2LjAwMiAzODMuMzMzLjE2NiAzNTEuMTM1IDEyLjIyNSAzMjEuNzU1IDMyIDI5OS4zNDdWOTZjMC01My4wMTkgNDIuOTgxLTk2IDk2LTk2czk2IDQyLjk4MSA5NiA5NnYyMDMuMzQ3ek0yMDggMzg0YzAtMzQuMzM5LTE5LjM3LTUyLjE5LTMyLTY2LjUwMlY5NmMwLTI2LjQ2Ny0yMS41MzMtNDgtNDgtNDhTODAgNjkuNTMzIDgwIDk2djIyMS40OThjLTEyLjczMiAxNC40MjgtMzEuODI1IDMyLjEtMzEuOTk5IDY2LjA4LS4yMjQgNDMuODc2IDM1LjU2MyA4MC4xMTYgNzkuNDIzIDgwLjQyTDEyOCA0NjRjNDQuMTEyIDAgODAtMzUuODg4IDgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlclF1YXJ0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1YyODhjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnY0MC41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3em0zMi04NC42NTNjMTkuOTEyIDIyLjU2MyAzMiA1Mi4xOTQgMzIgODQuNjUzIDAgNzAuNjk2LTU3LjMwMyAxMjgtMTI4IDEyOC0uMjk5IDAtLjYwOS0uMDAxLS45MDktLjAwM0M1Ni43ODkgNTExLjUwOS0uMzU3IDQ1My42MzYuMDAyIDM4My4zMzMuMTY2IDM1MS4xMzUgMTIuMjI1IDMyMS43NTUgMzIgMjk5LjM0N1Y5NmMwLTUzLjAxOSA0Mi45ODEtOTYgOTYtOTZzOTYgNDIuOTgxIDk2IDk2djIwMy4zNDd6TTIwOCAzODRjMC0zNC4zMzktMTkuMzctNTIuMTktMzItNjYuNTAyVjk2YzAtMjYuNDY3LTIxLjUzMy00OC00OC00OFM4MCA2OS41MzMgODAgOTZ2MjIxLjQ5OGMtMTIuNzMyIDE0LjQyOC0zMS44MjUgMzIuMS0zMS45OTkgNjYuMDgtLjIyNCA0My44NzYgMzUuNTYzIDgwLjExNiA3OS40MjMgODAuNDJMMTI4IDQ2NGM0NC4xMTIgMCA4MC0zNS44ODggODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyVGhyZWVRdWFydGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NC0zNS4zNDYgMC02NC0yOC42NTQtNjQtNjQgMC0yMy42ODUgMTIuODc2LTQ0LjM0OSAzMi01NS40MTdWMTYwYzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMnMzMiAxNC4zMjcgMzIgMzJ2MTY4LjU4M2MxOS4xMjQgMTEuMDY4IDMyIDMxLjczMiAzMiA1NS40MTd6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlcm1vbWV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc2LjggMjAuNGMtMzcuNS0zMC43LTk1LjUtMjYuMy0xMzEuOSAxMC4ybC00NS43IDQ2IDUwLjUgNTAuNWMzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBsLTUwLjQtNTAuNS00NS4xIDQ1LjQgNTAuMyA1MC40YzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMEwyMDkgMTY3LjRsLTQ1LjEgNDUuNEwyMTQgMjYzYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtNTAuMS01MC4yTDk2IDI4MS4xVjM4Mkw3IDQ3MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjkgOS40IDkuNCAyNC42IDkuNCAzMy45IDBsODktODloOTkuOUw0ODQgMTYyLjZjMzQuOS0zNC45IDQyLjItMTAxLjUtNy4yLTE0Mi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNTZ2MjQwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg4MGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2em00MCAyMDBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0czI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0em0yNzIgMjU2Yy0yMC4xODMgMC0yOS40ODUtMzkuMjkzLTMzLjkzMS01Ny43OTUtNS4yMDYtMjEuNjY2LTEwLjU4OS00NC4wNy0yNS4zOTMtNTguOTAyLTMyLjQ2OS0zMi41MjQtNDkuNTAzLTczLjk2Ny04OS4xMTctMTEzLjExMWExMS45OCAxMS45OCAwIDAgMS0zLjU1OC04LjUyMVY1OS45MDFjMC02LjU0MSA1LjI0My0xMS44NzggMTEuNzgzLTExLjk5OCAxNS44MzEtLjI5IDM2LjY5NC05LjA3OSA1Mi42NTEtMTYuMTc4QzI1Ni4xODkgMTcuNTk4IDI5NS43MDkuMDE3IDM0My45OTUgMGgyLjg0NGM0Mi43NzcgMCA5My4zNjMuNDEzIDExMy43NzQgMjkuNzM3IDguMzkyIDEyLjA1NyAxMC40NDYgMjcuMDM0IDYuMTQ4IDQ0LjYzMiAxNi4zMTIgMTcuMDUzIDI1LjA2MyA0OC44NjMgMTYuMzgyIDc0Ljc1NyAxNy41NDQgMjMuNDMyIDE5LjE0MyA1Ni4xMzIgOS4zMDggNzkuNDY5bC4xMS4xMWMxMS44OTMgMTEuOTQ5IDE5LjUyMyAzMS4yNTkgMTkuNDM5IDQ5LjE5Ny0uMTU2IDMwLjM1Mi0yNi4xNTcgNTguMDk4LTU5LjU1MyA1OC4wOThIMzUwLjcyM0MzNTguMDMgMzY0LjM0IDM4NCAzODguMTMyIDM4NCA0MzAuNTQ4IDM4NCA1MDQgMzM2IDUxMiAzMTIgNTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHVtYnNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQgMjI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjQwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg4MGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjQ4YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNNjQgNDcyYy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRzMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjR6TTM4NCA4MS40NTJjMCA0Mi40MTYtMjUuOTcgNjYuMjA4LTMzLjI3NyA5NC41NDhoMTAxLjcyM2MzMy4zOTcgMCA1OS4zOTcgMjcuNzQ2IDU5LjU1MyA1OC4wOTguMDg0IDE3LjkzOC03LjU0NiAzNy4yNDktMTkuNDM5IDQ5LjE5N2wtLjExLjExYzkuODM2IDIzLjMzNyA4LjIzNyA1Ni4wMzctOS4zMDggNzkuNDY5IDguNjgxIDI1Ljg5NS0uMDY5IDU3LjcwNC0xNi4zODIgNzQuNzU3IDQuMjk4IDE3LjU5OCAyLjI0NCAzMi41NzUtNi4xNDggNDQuNjMyQzQ0MC4yMDIgNTExLjU4NyAzODkuNjE2IDUxMiAzNDYuODM5IDUxMmwtMi44NDUtLjAwMWMtNDguMjg3LS4wMTctODcuODA2LTE3LjU5OC0xMTkuNTYtMzEuNzI1LTE1Ljk1Ny03LjA5OS0zNi44MjEtMTUuODg3LTUyLjY1MS0xNi4xNzgtNi41NC0uMTItMTEuNzgzLTUuNDU3LTExLjc4My0xMS45OTh2LTIxMy43N2MwLTMuMiAxLjI4Mi02LjI3MSAzLjU1OC04LjUyMSAzOS42MTQtMzkuMTQ0IDU2LjY0OC04MC41ODcgODkuMTE3LTExMy4xMTEgMTQuODA0LTE0LjgzMiAyMC4xODgtMzcuMjM2IDI1LjM5My01OC45MDJDMjgyLjUxNSAzOS4yOTMgMjkxLjgxNyAwIDMxMiAwYzI0IDAgNzIgOCA3MiA4MS40NTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRodW1idGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTguMDI4IDIxNC4yNjdMMjg1Ljc5MyA5NkgzMjhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEg1NkM0Mi43NDUgMCAzMiAxMC43NDUgMzIgMjR2NDhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDQyLjIwN0w4NS45NzIgMjE0LjI2N0MzNy40NjUgMjM2LjgyIDAgMjc3LjI2MSAwIDMyOGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTM2djEwNC4wMDdjMCAxLjI0Mi4yODkgMi40NjcuODQ1IDMuNTc4bDI0IDQ4YzIuOTQxIDUuODgyIDExLjM2NCA1Ljg5MyAxNC4zMTEgMGwyNC00OGE4LjAwOCA4LjAwOCAwIDAgMCAuODQ1LTMuNTc4VjM1MmgxMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0LS4wMDEtNTEuMTgzLTM3Ljk4My05MS40Mi04NS45NzMtMTEzLjczM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlja2V0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxNjBoMzIwdjE5MkgxMjhWMTYwem00MDAgOTZjMCAyNi41MSAyMS40OSA0OCA0OCA0OHY5NmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4di05NmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4cy0yMS40OS00OC00OC00OHYtOTZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0ODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHY5NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHptLTQ4LTEwNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMTIwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjA4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGltZXNDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMTIxLjYgMzEzLjFjNC43IDQuNyA0LjcgMTIuMyAwIDE3TDMzOCAzNzcuNmMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDI1NiAzMTJsLTY1LjEgNjUuNmMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDEzNC40IDMzOGMtNC43LTQuNy00LjctMTIuMyAwLTE3bDY1LjYtNjUtNjUuNi02NS4xYy00LjctNC43LTQuNy0xMi4zIDAtMTdsMzkuNi0zOS42YzQuNy00LjcgMTIuMy00LjcgMTcgMGw2NSA2NS43IDY1LjEtNjUuNmM0LjctNC43IDEyLjMtNC43IDE3IDBsMzkuNiAzOS42YzQuNyA0LjcgNC43IDEyLjMgMCAxN0wzMTIgMjU2bDY1LjYgNjUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGltZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM1MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQyLjcyIDI1NmwxMDAuMDctMTAwLjA3YzEyLjI4LTEyLjI4IDEyLjI4LTMyLjE5IDAtNDQuNDhsLTIyLjI0LTIyLjI0Yy0xMi4yOC0xMi4yOC0zMi4xOS0xMi4yOC00NC40OCAwTDE3NiAxODkuMjggNzUuOTMgODkuMjFjLTEyLjI4LTEyLjI4LTMyLjE5LTEyLjI4LTQ0LjQ4IDBMOS4yMSAxMTEuNDVjLTEyLjI4IDEyLjI4LTEyLjI4IDMyLjE5IDAgNDQuNDhMMTA5LjI4IDI1NiA5LjIxIDM1Ni4wN2MtMTIuMjggMTIuMjgtMTIuMjggMzIuMTkgMCA0NC40OGwyMi4yNCAyMi4yNGMxMi4yOCAxMi4yOCAzMi4yIDEyLjI4IDQ0LjQ4IDBMMTc2IDMyMi43MmwxMDAuMDcgMTAwLjA3YzEyLjI4IDEyLjI4IDMyLjIgMTIuMjggNDQuNDggMGwyMi4yNC0yMi4yNGMxMi4yOC0xMi4yOCAxMi4yOC0zMi4xOSAwLTQ0LjQ4TDI0Mi43MiAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpbnRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuODIgNDU4LjFMNDk0Ljk3IDM1MC43OGMuNTItNS41NyAxLjAzLTExLjE2IDEuMDMtMTYuODcgMC0xMTEuNzYtOTkuNzktMTUzLjM0LTE0Ni43OC0zMTEuODItNy45NC0yOC43OC00OS40NC0zMC4xMi01OC40NCAwLTE1LjUyIDUyLjM0LTM2Ljg3IDkxLjk2LTU4LjQ5IDEyNS42OEw0NS40NyAzLjM3QzM4LjQ5LTIuMDUgMjguNDMtLjggMjMuMDEgNi4xOEwzLjM3IDMxLjQ1Qy0yLjA1IDM4LjQyLS44IDQ4LjQ3IDYuMTggNTMuOWw1ODguMzYgNDU0LjczYzYuOTggNS40MyAxNy4wMyA0LjE3IDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdjNS40MS02Ljk3IDQuMTYtMTcuMDItMi44Mi0yMi40NXpNMTQ0IDMzMy45MUMxNDQgNDMyLjM1IDIyMi43MiA1MTIgMzIwIDUxMmM0NC43MSAwIDg1LjM3LTE2Ljk2IDExNi40LTQ0LjdMMTYyLjcyIDI1NS43OGMtMTEuNDEgMjMuNS0xOC43MiA0OC4zNS0xOC43MiA3OC4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzUyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuMjIgMjIuMDljLTcuOTQtMjguNzgtNDkuNDQtMzAuMTItNTguNDQgMEMxMDAuMDEgMTc5Ljg1IDAgMjIyLjcyIDAgMzMzLjkxIDAgNDMyLjM1IDc4LjcyIDUxMiAxNzYgNTEyczE3Ni03OS42NSAxNzYtMTc4LjA5YzAtMTExLjc1LTk5Ljc5LTE1My4zNC0xNDYuNzgtMzExLjgyek0xNzYgNDQ4Yy02MS43NSAwLTExMi01MC4yNS0xMTItMTEyIDAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZjMCA0NC4xMSAzNS44OSA4MCA4MCA4MCA4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMzMuOCAxODkuN2w4MC00OGMxMS42LTYuOSAyNCA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zYzguNyAxMC40LTMuOSAyNC44LTE1LjQgMThsLTgwLTQ4Yy03LjctNC43LTcuNy0xNS45IDAtMjAuNnptLTE2My0zMGMtOC42LTEwLjMgMy44LTI0LjkgMTUuNC0xOGw4MCA0OGM3LjggNC43IDcuOCAxNS45IDAgMjAuNmwtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjN6TTI0OCAyODhjNTEuOSAwIDExNS4zIDQzLjggMTIzLjIgMTA2LjcgMS43IDEzLjYtOCAyNC42LTE3LjcgMjAuNC0yNS45LTExLjEtNjQuNC0xNy40LTEwNS41LTE3LjRzLTc5LjYgNi4zLTEwNS41IDE3LjRjLTkuOCA0LjItMTkuNC03LTE3LjctMjAuNEMxMzIuNyAzMzEuOCAxOTYuMSAyODggMjQ4IDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA2NEgxOTJDODUuOTYxIDY0IDAgMTQ5Ljk2MSAwIDI1NnM4NS45NjEgMTkyIDE5MiAxOTJoMTkyYzEwNi4wMzkgMCAxOTItODUuOTYxIDE5Mi0xOTJTNDkwLjAzOSA2NCAzODQgNjR6TTY0IDI1NmMwLTcwLjc0MSA1Ny4yNDktMTI4IDEyOC0xMjggNzAuNzQxIDAgMTI4IDU3LjI0OSAxMjggMTI4IDAgNzAuNzQxLTU3LjI0OSAxMjgtMTI4IDEyOC03MC43NDEgMC0xMjgtNTcuMjQ5LTEyOC0xMjh6bTMyMCAxMjhoLTQ4LjkwNWM2NS4yMTctNzIuODU4IDY1LjIzNi0xODMuMTIgMC0yNTZIMzg0YzcwLjc0MSAwIDEyOCA1Ny4yNDkgMTI4IDEyOCAwIDcwLjc0LTU3LjI0OSAxMjgtMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9nZ2xlT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDY0SDE5MkM4NiA2NCAwIDE1MCAwIDI1NnM4NiAxOTIgMTkyIDE5MmgxOTJjMTA2IDAgMTkyLTg2IDE5Mi0xOTJTNDkwIDY0IDM4NCA2NHptMCAzMjBjLTcwLjggMC0xMjgtNTcuMy0xMjgtMTI4IDAtNzAuOCA1Ny4zLTEyOCAxMjgtMTI4IDcwLjggMCAxMjggNTcuMyAxMjggMTI4IDAgNzAuOC01Ny4zIDEyOC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXRQYXBlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0LDE5MlYzNjQuMTNjMCw0MS4xMi05Ljc1LDYyLjc1LTMxLjEyLDEyNi44N0ExNiwxNiwwLDAsMCw0OCw1MTJIMzI4Ljg2YTMxLjg3LDMxLjg3LDAsMCwwLDMwLjM4LTIxLjg3YzkuMzEtMjcuODMsMTgtNTMuMzUsMjIuMTgtODUuNTVsLTMxNi0yNDQuMjVDNjQuNTMsMTcwLjY2LDY0LDE4MS4xOSw2NCwxOTJaTTYzMy44Miw0NTguMDlsLTEwMi03OC44MUM1NzUuMjgsMzYwLjkxLDYwOCwyODQuMzIsNjA4LDE5Miw2MDgsODYsNTY1LDAsNTEyLDBzLTk2LDg2LTk2LDE5MmMwLDQyLDcsODAuNCwxOC40MywxMTJMMzg0LDI2NVYxOTJjMC04My42MiwyMy42My0xNTMuNSw2MC41LTE5MkgxNjBjLTIzLjMzLDAtNDQuNjMsMTYuODMtNjEuMjYsNDQuNTNMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDVBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTQsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZBMTYsMTYsMCwwLDAsNjMzLjgyLDQ1OC4wOVpNNTEyLDI1NmMtMTcuNjMsMC0zMi0yOC42Mi0zMi02NHMxNC4zNy02NCwzMi02NCwzMiwyOC42MywzMiw2NFM1MjkuNjIsMjU2LDUxMiwyNTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvaWxldFBhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwQzc0Ljk4IDAgMzIgODUuOTYgMzIgMTkydjE3Mi4wN2MwIDQxLjEyLTkuOCA2Mi43Ny0zMS4xNyAxMjYuODdDLTIuNjIgNTAxLjMgNS4wOSA1MTIgMTYuMDEgNTEyaDI4MC45MmMxMy43NyAwIDI2LTguODEgMzAuMzYtMjEuODggMTIuODMtMzguNDggMjQuNzEtNzIuNCAyNC43MS0xMjYuMDVWMTkyYzAtODMuNiAyMy42Ny0xNTMuNTIgNjAuNDQtMTkySDEyOHpNOTYgMjI0Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnptNjQgMGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6bTY0IDBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2em02NCAwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnpNNDgwIDBjLTUzLjAyIDAtOTYgODUuOTYtOTYgMTkyczQyLjk4IDE5MiA5NiAxOTIgOTYtODUuOTYgOTYtMTkyUzUzMy4wMiAwIDQ4MCAwem0wIDI1NmMtMTcuNjcgMC0zMi0yOC42NS0zMi02NHMxNC4zMy02NCAzMi02NCAzMiAyOC42NSAzMiA2NC0xNC4zMyA2NC0zMiA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9pbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA0OGM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDE2QzcuMiAwIDAgNy4yIDAgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDE2djE1Ni43QzExLjggMjE0LjggMCAyMjYuOSAwIDI0MGMwIDY3LjIgMzQuNiAxMjYuMiA4Ni44IDE2MC41bC0yMS40IDcwLjJDNTkuMSA0OTEuMiA3NC41IDUxMiA5NiA1MTJoMTkyYzIxLjUgMCAzNi45LTIwLjggMzAuNi00MS4zbC0yMS40LTcwLjJDMzQ5LjQgMzY2LjIgMzg0IDMwNy4yIDM4NCAyNDBjMC0xMy4xLTExLjgtMjUuMi0zMi0zNS4zVjQ4aDE2ek04MCA3MmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEg4OGMtNC40IDAtOC0zLjYtOC04Vjcyem0xMTIgMjAwYy03Ny4xIDAtMTM5LjYtMTQuMy0xMzkuNi0zMnM2Mi41LTMyIDEzOS42LTMyIDEzOS42IDE0LjMgMTM5LjYgMzItNjIuNSAzMi0xMzkuNiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9vbGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjMgMjE0LjYzbC00NS4yNS00NS4yNWMtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0gzODRWODBjMC0yNi41MS0yMS40OS00OC00OC00OEgxNzZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2ODBINzcuMjVjLTguNDkgMC0xNi42MiAzLjM3LTIyLjYzIDkuMzdMOS4zNyAyMTQuNjNjLTYgNi05LjM3IDE0LjE0LTkuMzcgMjIuNjNWMzIwaDEyOHYtMTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTZoMTI4di0xNmMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNmgxMjh2LTgyLjc1YzAtOC40OC0zLjM3LTE2LjYyLTkuMzctMjIuNjJ6TTMyMCAxNjBIMTkyVjk2aDEyOHY2NHptNjQgMjA4YzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTE2SDE5MnYxNmMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di0xNkgwdjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDQ4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2SDM4NHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9vbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjEgMzk1LjdMMzg0IDI3OC42Yy0yMy4xLTIzLjEtNTcuNi0yNy42LTg1LjQtMTMuOUwxOTIgMTU4LjFWOTZMNjQgMCAwIDY0bDk2IDEyOGg2Mi4xbDEwNi42IDEwNi42Yy0xMy42IDI3LjgtOS4yIDYyLjMgMTMuOSA4NS40bDExNy4xIDExNy4xYzE0LjYgMTQuNiAzOC4yIDE0LjYgNTIuNyAwbDUyLjctNTIuN2MxNC41LTE0LjYgMTQuNS0zOC4yIDAtNTIuN3pNMzMxLjcgMjI1YzI4LjMgMCA1NC45IDExIDc0LjkgMzFsMTkuNCAxOS40YzE1LjgtNi45IDMwLjgtMTYuNSA0My44LTI5LjUgMzcuMS0zNy4xIDQ5LjctODkuMyAzNy45LTEzNi43LTIuMi05LTEzLjUtMTIuMS0yMC4xLTUuNWwtNzQuNCA3NC40LTY3LjktMTEuM0wzMzQgOTguOWw3NC40LTc0LjRjNi42LTYuNiAzLjQtMTcuOS01LjctMjAuMi00Ny40LTExLjctOTkuNi45LTEzNi42IDM3LjktMjguNSAyOC41LTQxLjkgNjYuMS00MS4yIDEwMy42bDgyLjEgODIuMWM4LjEtMS45IDE2LjUtMi45IDI0LjctMi45em0tMTAzLjkgODJsLTU2LjctNTYuN0wxOC43IDQwMi44Yy0yNSAyNS0yNSA2NS41IDAgOTAuNXM2NS41IDI1IDkwLjUgMGwxMjMuNi0xMjMuNmMtNy42LTE5LjktOS45LTQxLjYtNS02Mi43ek02NCA0NzJjLTEzLjIgMC0yNC0xMC44LTI0LTI0IDAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCAxMy4yLTEwLjcgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvb3RoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My45OCA5Ni4yNWMtMTEuMDEtNDUuMjItNDcuMTEtODIuMDYtOTIuMDEtOTMuNzItMzIuMTktOC4zNi02MyA1LjEtODkuMTQgMjQuMzMtMy4yNSAyLjM5LTYuOTYgMy43My0xMC41IDUuNDhsMjguMzIgMTguMjFjNy40MiA0Ljc3IDkuNTggMTQuNjcgNC44IDIyLjExLTQuNDYgNi45NS0xNC4yNyA5Ljg2LTIyLjExIDQuOEwxNjIuODMgMTIuODRjLTIwLjctMTAuODUtNDMuMzgtMTYuNC02Ni44MS0xMC4zMS00NC45IDExLjY3LTgxIDQ4LjUtOTIuMDEgOTMuNzItMTAuMTMgNDEuNjItLjQyIDgwLjgxIDIxLjUgMTEwLjQzIDIzLjM2IDMxLjU3IDMyLjY4IDY4LjY2IDM2LjI5IDEwNy4zNSA0LjQgNDcuMTYgMTAuMzMgOTQuMTYgMjAuOTQgMTQwLjMybDcuOCAzMy45NWMzLjE5IDEzLjg3IDE1LjQ5IDIzLjcgMjkuNjcgMjMuNyAxMy45NyAwIDI2LjE1LTkuNTUgMjkuNTQtMjMuMTZsMzQuNDctMTM4LjQyYzQuNTYtMTguMzIgMjAuOTYtMzEuMTYgMzkuNzYtMzEuMTZzMzUuMiAxMi44NSAzOS43NiAzMS4xNmwzNC40NyAxMzguNDJjMy4zOSAxMy42MSAxNS41NyAyMy4xNiAyOS41NCAyMy4xNiAxNC4xOCAwIDI2LjQ4LTkuODMgMjkuNjctMjMuN2w3LjgtMzMuOTVjMTAuNjEtNDYuMTUgMTYuNTMtOTMuMTYgMjAuOTQtMTQwLjMyIDMuNjEtMzguNyAxMi45My03NS43OCAzNi4yOS0xMDcuMzUgMjEuOTUtMjkuNjEgMzEuNjYtNjguOCAyMS41My0xMTAuNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvcmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC4wNSAzNjYuNDhsMTcuNzItMjkuNjRoLTM1LjQ2em05OS4yMS0xNjZIMzgyLjRsMTguNDYgMzAuODJ6TTQ4IDBDMjEuNDkgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMTcuNjcgMjEuNDkgMzIgNDggMzJzNDgtMTQuMzMgNDgtMzJWMzJDOTYgMTQuMzMgNzQuNTEgMCA0OCAwem0xNzIuNzQgMzExLjVoMzYuODVsLTE4LjQ2LTMwLjgyem0xNjEuNzEgMGgzNi44NmwtMTguNDUtMzAuOHpNMTI4IDQ2NGgzODRWNDhIMTI4em02Ni43Ny0yNzguMTNhMjEuMjIgMjEuMjIgMCAwIDEgMTguNDgtMTAuNzFoNTkuNDVsMjkuMTMtNDguNzFhMjEuMTMgMjEuMTMgMCAwIDEgMTguMjItMTAuMzdBMjAuNzYgMjAuNzYgMCAwIDEgMzM4IDEyNi4yOWwyOS4yNSA0OC44Nmg1OS41MmEyMS4xMiAyMS4xMiAwIDAgMSAxOC4xIDMyTDQxNS42MyAyNTYgNDQ1IDMwNWEyMC42OSAyMC42OSAwIDAgMSAuMjQgMjEuMTIgMjEuMjUgMjEuMjUgMCAwIDEtMTguNDggMTAuNzJoLTU5LjQ3bC0yOS4xMyA0OC43YTIxLjEzIDIxLjEzIDAgMCAxLTE4LjE2IDEwLjQgMjAuNzkgMjAuNzkgMCAwIDEtMTgtMTAuMjJsLTI5LjI1LTQ4Ljg4aC01OS41YTIxLjExIDIxLjExIDAgMCAxLTE4LjEtMzJMMjI0LjM2IDI1NiAxOTUgMjA3YTIwLjcgMjAuNyAwIDAgMS0uMjMtMjEuMTN6TTU5MiAwYy0yNi41MSAwLTQ4IDE0LjMzLTQ4IDMydjQ0OGMwIDE3LjY3IDIxLjQ5IDMyIDQ4IDMyczQ4LTE0LjMzIDQ4LTMyVjMyYzAtMTcuNjctMjEuNDktMzItNDgtMzJ6TTMyMCAxNDUuNTNsLTE3Ljc4IDI5LjYyaDM1LjQ2em0tNjIuNDUgNTVoLTM2LjgxbDE4LjQ0IDMwLjh6bTI5LjU4IDExMWg2NS43OUwzODYuMDkgMjU2bC0zMy4yMy01NS41MmgtNjUuNzlMMjUzLjkgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb3JpaUdhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc2LjQ1IDMyaC0yNDAuOUEzMDMuMTcgMzAzLjE3IDAgMCAxIDAgMHY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMydjY0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OHYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjU2aDI1NnYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjU2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNDh2LTY0aDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMGEzMDMuMTcgMzAzLjE3IDAgMCAxLTEzNS41NSAzMnpNMTI4IDEyOGg5NnY2NGgtOTZ2LTY0em0yNTYgNjRoLTk2di02NGg5NnY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhY3RvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggMzM2Yy00OC42IDAtODggMzkuNC04OCA4OHMzOS40IDg4IDg4IDg4IDg4LTM5LjQgODgtODgtMzkuNC04OC04OC04OHptMCAxMTJjLTEzLjIzIDAtMjQtMTAuNzctMjQtMjRzMTAuNzctMjQgMjQtMjQgMjQgMTAuNzcgMjQgMjQtMTAuNzcgMjQtMjQgMjR6bTgwLTI4OGgtNjR2LTQwLjJjMC0xNC4xMiA0LjctMjcuNzYgMTMuMTUtMzguODQgNC40Mi01LjggMy41NS0xNC4wNi0xLjMyLTE5LjQ5TDUzNC4yIDM3LjNjLTYuNjYtNy40NS0xOC4zMi02LjkyLTI0LjcuNzhDNDkwLjU4IDYwLjkgNDgwIDg5LjgxIDQ4MCAxMTkuOFYxNjBIMzc3LjY3TDMyMS41OCAyOS4xNEE0Ny45MTQgNDcuOTE0IDAgMCAwIDI3Ny40NSAwSDE0NGMtMjYuNDcgMC00OCAyMS41My00OCA0OHYxNDYuNTJjLTguNjMtNi43My0yMC45Ni02LjQ2LTI4Ljg5IDEuNDdMMzYgMjI3LjFjLTguNTkgOC41OS04LjU5IDIyLjUyIDAgMzEuMTFsNS4wNiA1LjA2Yy00Ljk5IDkuMjYtOC45NiAxOC44Mi0xMS45MSAyOC43MkgyMmMtMTIuMTUgMC0yMiA5Ljg1LTIyIDIydjQ0YzAgMTIuMTUgOS44NSAyMiAyMiAyMmg3LjE0YzIuOTYgOS45MSA2LjkyIDE5LjQ2IDExLjkxIDI4LjczbC01LjA2IDUuMDZjLTguNTkgOC41OS04LjU5IDIyLjUyIDAgMzEuMTFMNjcuMSA0NzZjOC41OSA4LjU5IDIyLjUyIDguNTkgMzEuMTEgMGw1LjA2LTUuMDZjOS4yNiA0Ljk5IDE4LjgyIDguOTYgMjguNzIgMTEuOTFWNDkwYzAgMTIuMTUgOS44NSAyMiAyMiAyMmg0NGMxMi4xNSAwIDIyLTkuODUgMjItMjJ2LTcuMTRjOS45LTIuOTUgMTkuNDYtNi45MiAyOC43Mi0xMS45MWw1LjA2IDUuMDZjOC41OSA4LjU5IDIyLjUyIDguNTkgMzEuMTEgMGwzMS4xMS0zMS4xMWM4LjU5LTguNTkgOC41OS0yMi41MiAwLTMxLjExbC01LjA2LTUuMDZjNC45OS05LjI2IDguOTYtMTguODIgMTEuOTEtMjguNzJIMzMwYzEyLjE1IDAgMjItOS44NSAyMi0yMnYtNmg4MC41NGMyMS45MS0yOC45OSA1Ni4zMi00OCA5NS40Ni00OCAxOC42NCAwIDM2LjA3IDQuNjEgNTEuOCAxMi4ybDUwLjgyLTUwLjgyYzYtNiA5LjM3LTE0LjE0IDkuMzctMjIuNjNWMTkyYy4wMS0xNy42Ny0xNC4zMi0zMi0zMS45OS0zMnpNMTc2IDQxNmMtNDQuMTggMC04MC0zNS44Mi04MC04MHMzNS44Mi04MCA4MC04MCA4MCAzNS44MiA4MCA4MC0zNS44MiA4MC04MCA4MHptMjItMjU2aC0zOFY2NGgxMDYuODlsNDEuMTUgOTZIMTk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFkZW1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjYgOTZIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0My4xYzAgNi42IDUuNCAxMiAxMiAxMmg4NS4xVjQwNGMwIDYuNiA1LjQgMTIgMTIgMTJoNTQuM2M2LjYgMCAxMi01LjQgMTItMTJWMTYzLjFoODUuMWM2LjYgMCAxMi01LjQgMTItMTJWMTA4Yy4xLTYuNi01LjMtMTItMTEuOS0xMnpNNjQwIDQwM2wtMjQtMjk2Yy0uNS02LjItNS43LTExLTEyLTExaC02NS40Yy01LjEgMC05LjcgMy4zLTExLjMgOC4xbC00My44IDEyNy4xYy03LjIgMjAuNi0xNi4xIDUyLjgtMTYuMSA1Mi44aC0uOXMtOC45LTMyLjItMTYuMS01Mi44bC00My44LTEyNy4xYy0xLjctNC44LTYuMi04LjEtMTEuMy04LjFoLTY1LjRjLTYuMiAwLTExLjQgNC44LTEyIDExbC0yNC40IDI5NmMtLjYgNyA0LjkgMTMgMTIgMTNIMzYwYzYuMyAwIDExLjUtNC45IDEyLTExLjJsOS4xLTEzMi45YzEuOC0yNC4yIDAtNTMuNyAwLTUzLjdoLjlzMTAuNyAzMy42IDE3LjkgNTMuN2wzMC43IDg0LjdjMS43IDQuNyA2LjIgNy45IDExLjMgNy45aDUwLjNjNS4xIDAgOS42LTMuMiAxMS4zLTcuOWwzMC43LTg0LjdjNy4yLTIwLjEgMTcuOS01My43IDE3LjktNTMuN2guOXMtMS44IDI5LjUgMCA1My43bDkuMSAxMzIuOWMuNCA2LjMgNS43IDExLjIgMTIgMTEuMkg2MjhjNyAwIDEyLjUtNiAxMi0xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhZmZpY0xpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxOTJoLTY0di0zNy44OGMzNy4yLTEzLjIyIDY0LTQ4LjM4IDY0LTkwLjEyaC02NFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDk2Qzc4LjMzIDAgNjQgMTQuMzMgNjQgMzJ2MzJIMGMwIDQxLjc0IDI2LjggNzYuOSA2NCA5MC4xMlYxOTJIMGMwIDQxLjc0IDI2LjggNzYuOSA2NCA5MC4xMlYzMjBIMGMwIDQyLjg0IDI4LjI1IDc4LjY5IDY2Ljk5IDkxLjA1Qzc5LjQyIDQ2OC43MiAxMzAuNiA1MTIgMTkyIDUxMnMxMTIuNTgtNDMuMjggMTI1LjAxLTEwMC45NUMzNTUuNzUgMzk4LjY5IDM4NCAzNjIuODQgMzg0IDMyMGgtNjR2LTM3Ljg4YzM3LjItMTMuMjIgNjQtNDguMzggNjQtOTAuMTJ6TTE5MiA0MTZjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTAtMTI4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0wLTEyOGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhaWxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQsMzIwSDU0NFY4MGExNiwxNiwwLDAsMC0xNi0xNkgxNkExNiwxNiwwLDAsMCwwLDgwVjM2OGExNiwxNiwwLDAsMCwxNiwxNkg2NS42MWM3LjgzLTU0LjIxLDU0LTk2LDExMC4zOS05NnMxMDIuNTYsNDEuNzksMTEwLjM5LDk2SDYyNGExNiwxNiwwLDAsMCwxNi0xNlYzMzZBMTYsMTYsMCwwLDAsNjI0LDMyMFpNOTYsMjQzLjY4YTE3Ni4yOSwxNzYuMjksMCwwLDAtMzIsMjAuNzFWMTM2YTgsOCwwLDAsMSw4LThIODhhOCw4LDAsMCwxLDgsOFptOTYtMTguNTRjLTUuMzEtLjQ5LTEwLjU3LTEuMTQtMTYtMS4xNHMtMTAuNjkuNjUtMTYsMS4xNFYxMzZhOCw4LDAsMCwxLDgtOGgxNmE4LDgsMCwwLDEsOCw4Wm05NiwzOS4yNWExNzYuMjksMTc2LjI5LDAsMCwwLTMyLTIwLjcxVjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhaTTM4NCwzMjBIMzUyVjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhabTk2LDBINDQ4VjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhabS0zMDQsMGE4MCw4MCwwLDEsMCw4MCw4MEE4MCw4MCwwLDAsMCwxNzYsMzIwWm0wLDExMmEzMiwzMiwwLDEsMSwzMi0zMkEzMiwzMiwwLDAsMSwxNzYsNDMyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZ2MjU2YzAgNTEuODE1LTYxLjYyNCA5Ni0xMzAuMDIyIDk2bDYyLjk4IDQ5LjcyMUMzODYuOTA1IDUwMi40MTcgMzgzLjU2MiA1MTIgMzc2IDUxMkg3MmMtNy41NzggMC0xMC44OTItOS41OTQtNC45NTctMTQuMjc5TDEzMC4wMjIgNDQ4QzYxLjgyIDQ0OCAwIDQwMy45NTQgMCAzNTJWOTZDMCA0Mi45ODEgNjQgMCAxMjggMGgxOTJjNjUgMCAxMjggNDIuOTgxIDEyOCA5NnptLTQ4IDEzNlYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDcyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0em0tMTc2IDY0Yy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2IDU2LTI1LjA3MiA1Ni01Ni0yNS4wNzItNTYtNTYtNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyUzMwNS43IDAgMjg4IDBzLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMjIzLjUtMTIuMWMtMi4zLTguNi0xMS0xMy42LTE5LjYtMTEuM2wtNDgwIDEyOGMtOC41IDIuMy0xMy42IDExLTExLjMgMTkuNkMyLjUgMTk1LjMgOC45IDIwMCAxNiAyMDBjMS40IDAgMi44LS4yIDQuMS0uNUwyNDAgMTQwLjhWMjI0SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyMjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNzJ2LTkxLjdsMjI4LjEtNjAuOGM4LjYtMi4zIDEzLjYtMTEuMSAxMS40LTE5LjZ6TTE3NiAzODRIODB2LTk2aDk2djk2em0xNjAtOTZoOTZ2OTZoLTk2di05NnptLTMyIDB2OTZoLTk2di05Nmg5NnpNMTkyIDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhbnNnZW5kZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY4IDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43QzI5NC41IDEwNC4xIDI2OC4yIDk2IDI0MCA5NmMtMjguMiAwLTU0LjUgOC4xLTc2LjcgMjIuMWwtMTYuNS0xNi41IDE5LjgtMTkuOGM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTI4LjMtMjguM2MtNC43LTQuNy0xMi4zLTQuNy0xNyAwbC0xOS44IDE5LjgtMTktMTkgMTYuOS0xNi45QzEwNy4xIDEyLjkgMTAxLjcgMCA5MSAwSDEyQzUuNCAwIDAgNS40IDAgMTJ2NzljMCAxMC43IDEyLjkgMTYgMjAuNSA4LjVsMTYuOS0xNi45IDE5IDE5LTE5LjggMTkuOGMtNC43IDQuNy00LjcgMTIuMyAwIDE3bDI4LjMgMjguM2M0LjcgNC43IDEyLjMgNC43IDE3IDBsMTkuOC0xOS44IDE2LjUgMTYuNUMxMDQuMSAxODUuNSA5NiAyMTEuOCA5NiAyNDBjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwOGgtMzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MjhjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMjhoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di0yNy42YzY0LjEtMTQuNiAxMTItNzEuOSAxMTItMTQwLjQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w4MC43LTgwLjcgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWMTJjMC02LjYtNS40LTEyLTEyLTEyek0yNDAgMzIwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhbnNnZW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43QzE5OC41IDEwNC4xIDE3Mi4yIDk2IDE0NCA5NiA2NC41IDk2IDAgMTYwLjUgMCAyNDBjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwOEg3NmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgzNnYyOGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi0yOGgzNmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMzZ2LTI3LjZjNjQuMS0xNC42IDExMi03MS45IDExMi0xNDAuNCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDgwLjctODAuNyAxNi45IDE2LjljNy42IDcuNiAyMC41IDIuMiAyMC41LTguNVYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCAzMjBjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0NjRhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOEgzMnptMjcyLTI1NmExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwem0tOTYgMGExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwem0tOTYgMGExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwek00MzIgMzJIMzEybC05LjQtMTguN0EyNCAyNCAwIDAgMCAyODEuMSAwSDE2Ni44YTIzLjcyIDIzLjcyIDAgMCAwLTIxLjQgMTMuM0wxMzYgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoUmVzdG9yZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0NjRhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOEgzMnptOTEuMzEtMTcyLjhsODkuMzgtOTQuMjZhMTUuNDEgMTUuNDEgMCAwIDEgMjIuNjIgMGw4OS4zOCA5NC4yNmMxMC4wOCAxMC42MiAyLjk0IDI4LjgtMTEuMzIgMjguOEgyNTZ2MTEyYTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlYzMjBoLTU3LjM3Yy0xNC4yNiAwLTIxLjQtMTguMTgtMTEuMzItMjguOHpNNDMyIDMySDMxMmwtOS40LTE4LjdBMjQgMjQgMCAwIDAgMjgxLjEgMEgxNjYuOGEyMy43MiAyMy43MiAwIDAgMC0yMS40IDEzLjNMMTM2IDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaFJlc3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTMuMiA0NjdhNDggNDggMCAwIDAgNDcuOSA0NWgyNDUuOGE0OCA0OCAwIDAgMCA0Ny45LTQ1TDQxNiAxMjhIMzJ6bTcwLjExLTE3NS44bDg5LjM4LTk0LjI2YTE1LjQxIDE1LjQxIDAgMCAxIDIyLjYyIDBsODkuMzggOTQuMjZjMTAuMDggMTAuNjIgMi45NCAyOC44LTExLjMyIDI4LjhIMjU2djExMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWMzIwaC01Ny4zN2MtMTQuMjYgMC0yMS40LTE4LjE4LTExLjMyLTI4Ljh6TTQzMiAzMkgzMTJsLTkuNC0xOC43QTI0IDI0IDAgMCAwIDI4MS4xIDBIMTY2LjhhMjMuNzIgMjMuNzIgMCAwIDAtMjEuNCAxMy4zTDEzNiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDMySDMxMmwtOS40LTE4LjdBMjQgMjQgMCAwIDAgMjgxLjEgMEgxNjYuOGEyMy43MiAyMy43MiAwIDAgMC0yMS40IDEzLjNMMTM2IDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2ek01My4yIDQ2N2E0OCA0OCAwIDAgMCA0Ny45IDQ1aDI0NS44YTQ4IDQ4IDAgMCAwIDQ3LjktNDVMNDE2IDEyOEgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzguMzEgMzc4LjQ5TDI5OC40MiAyODhoMzAuNjNjOS4wMSAwIDE2Ljk4LTUgMjAuNzgtMTMuMDYgMy44LTguMDQgMi41NS0xNy4yNi0zLjI4LTI0LjA1TDI2OC40MiAxNjBoMjguODljOS4xIDAgMTcuMy01LjM1IDIwLjg2LTEzLjYxIDMuNTItOC4xMyAxLjg2LTE3LjU5LTQuMjQtMjQuMDhMMjAzLjY2IDQuODNjLTYuMDMtNi40NS0xNy4yOC02LjQ1LTIzLjMyIDBMNzAuMDYgMTIyLjMxYy02LjEgNi40OS03Ljc1IDE1Ljk1LTQuMjQgMjQuMDhDNjkuMzggMTU0LjY1IDc3LjU5IDE2MCA4Ni42OSAxNjBoMjguODlsLTc4LjE0IDkwLjkxYy01LjgxIDYuNzgtNy4wNiAxNS45OS0zLjI3IDI0LjA0QzM3Ljk3IDI4MyA0NS45MyAyODggNTQuOTUgMjg4aDMwLjYzTDUuNjkgMzc4LjQ5Yy02IDYuNzktNy4zNiAxNi4wOS0zLjU2IDI0LjI2IDMuNzUgOC4wNSAxMiAxMy4yNSAyMS4wMSAxMy4yNUgxNjB2MjQuNDVsLTMwLjI5IDQ4LjRjLTUuMzIgMTAuNjQgMi40MiAyMy4xNiAxNC4zMSAyMy4xNmg5NS45NmMxMS44OSAwIDE5LjYzLTEyLjUyIDE0LjMxLTIzLjE2TDIyNCA0NDAuNDVWNDE2aDEzNi44NmM5LjAxIDAgMTcuMjYtNS4yIDIxLjAxLTEzLjI1IDMuOC04LjE3IDIuNDQtMTcuNDctMy41Ni0yNC4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJvcGh5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MiA2NEg0NDhWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTUyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0MEgyNEMxMC43IDY0IDAgNzQuNyAwIDg4djU2YzAgMzUuNyAyMi41IDcyLjQgNjEuOSAxMDAuNyAzMS41IDIyLjcgNjkuOCAzNy4xIDExMCA0MS43QzIwMy4zIDMzOC41IDI0MCAzNjAgMjQwIDM2MHY3MmgtNDhjLTM1LjMgMC02NCAyMC43LTY0IDU2djEyYzAgNi42IDUuNCAxMiAxMiAxMmgyOTZjNi42IDAgMTItNS40IDEyLTEydi0xMmMwLTM1LjMtMjguNy01Ni02NC01NmgtNDh2LTcyczM2LjctMjEuNSA2OC4xLTczLjZjNDAuMy00LjYgNzguNi0xOSAxMTAtNDEuNyAzOS4zLTI4LjMgNjEuOS02NSA2MS45LTEwMC43Vjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0ek05OS4zIDE5Mi44Qzc0LjkgMTc1LjIgNjQgMTU1LjYgNjQgMTQ0di0xNmg2NC4yYzEgMzIuNiA1LjggNjEuMiAxMi44IDg2LjItMTUuMS01LjItMjkuMi0xMi40LTQxLjctMjEuNHpNNTEyIDE0NGMwIDE2LjEtMTcuNyAzNi4xLTM1LjMgNDguOC0xMi41IDktMjYuNyAxNi4yLTQxLjggMjEuNCA3LTI1IDExLjgtNTMuNiAxMi44LTg2LjJINTEydjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0xvYWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAuMiAzNzUuNmMyLjMgOC41IDExLjEgMTMuNiAxOS42IDExLjNsMjE2LjQtNThjOC41LTIuMyAxMy42LTExLjEgMTEuMy0xOS42bC00OS43LTE4NS41Yy0yLjMtOC41LTExLjEtMTMuNi0xOS42LTExLjNMMTUxIDEzMy4zbDI0LjggOTIuNy02MS44IDE2LjUtMjQuOC05Mi43LTc3LjMgMjAuN0MzLjQgMTcyLjgtMS43IDE4MS42LjYgMTkwLjFsNDkuNiAxODUuNXpNMzg0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyMy42TDUuOSA0NTBjLTQuMyAxLjItNi44IDUuNi01LjYgOS44bDEyLjYgNDYuM2MxLjIgNC4zIDUuNiA2LjggOS44IDUuNmwzOTMuNy0xMDcuNEM0MTguOCA0NjQuMSA0NjcuNiA1MTIgNTI4IDUxMmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlYwSDM4NHptMTQ0IDQ0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTW9uc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMjI0aC0xNnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNzMuNkw0MTkuMjIgMjQuMDJBNjQuMDI1IDY0LjAyNSAwIDAgMCAzNjkuMjQgMEgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZINDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djgwSDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNi43MmMyOS4yMS0zOC42NSA3NS4xLTY0IDEyNy4yOC02NHM5OC4wNyAyNS4zNSAxMjcuMjggNjRoNjUuNDVjMjkuMjEtMzguNjUgNzUuMS02NCAxMjcuMjgtNjRzOTguMDcgMjUuMzUgMTI3LjI4IDY0SDYyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS0zMzYtOTZWNjRoODEuMjRsNTEuMiA2NEgyODh6bTMwNCAyMjRoLTUuMmMtMi4yLTcuMzMtNS4wNy0xNC4yOC04LjY1LTIwLjg5bDMuNjctMy42N2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0yMi42My0yMi42M2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMy42NyAzLjY3QTExMC44NSAxMTAuODUgMCAwIDAgNTEyIDI3Ny4yVjI3MmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djUuMmMtNy4zMyAyLjItMTQuMjggNS4wNy0yMC44OSA4LjY1bC0zLjY3LTMuNjdjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTIyLjYzIDIyLjYzYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDMuNjcgMy42N0ExMTAuODUgMTEwLjg1IDAgMCAwIDM3My4yIDM1MkgzNjhjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDUuMmMyLjIgNy4zMyA1LjA3IDE0LjI4IDguNjUgMjAuODlsLTMuNjcgMy42N2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDMuNjctMy42N2M2LjYxIDMuNTcgMTMuNTcgNi40NSAyMC45IDguNjV2NS4yYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di01LjJjNy4zMy0yLjIgMTQuMjgtNS4wNyAyMC45LTguNjVsMy42NyAzLjY3YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjMtMjIuNjNjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMy42Ny0zLjY3YTExMC44NSAxMTAuODUgMCAwIDAgOC42NS0yMC44OWg1LjJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYy0uMDItOC44NC03LjE4LTE2LTE2LjAyLTE2em0tMTEyIDgwYy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0tMjA4LTgwaC01LjJjLTIuMi03LjMzLTUuMDctMTQuMjgtOC42NS0yMC44OWwzLjY3LTMuNjdjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMjIuNjMtMjIuNjNjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTMuNjcgMy42N0ExMTAuODUgMTEwLjg1IDAgMCAwIDE5MiAyNzcuMlYyNzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY1LjJjLTcuMzMgMi4yLTE0LjI4IDUuMDctMjAuODkgOC42NWwtMy42Ny0zLjY3Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwTDU4LjE4IDMwNC44Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDMuNjcgMy42N2ExMTAuODUgMTEwLjg1IDAgMCAwLTguNjUgMjAuODlINDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDUuMmMyLjIgNy4zMyA1LjA3IDE0LjI4IDguNjUgMjAuODlsLTMuNjcgMy42N2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDMuNjctMy42N2M2LjYxIDMuNTcgMTMuNTcgNi40NSAyMC45IDguNjV2NS4yYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di01LjJjNy4zMy0yLjIgMTQuMjgtNS4wNyAyMC45LTguNjVsMy42NyAzLjY3YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjMtMjIuNjNjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMy42Ny0zLjY3YTExMC44NSAxMTAuODUgMCAwIDAgOC42NS0yMC44OWg1LjJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyQzI4OCAzNTkuMTYgMjgwLjg0IDM1MiAyNzIgMzUyem0tMTEyIDgwYy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja01vdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjEuMyAyMzcuM2wtNTguNS01OC41Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQ4MFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0djMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MCAyNi4zIDAgNDkuNC0xMi45IDY0LTMyLjQgMTQuNiAxOS42IDM3LjcgMzIuNCA2NCAzMi40IDQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtNS41LS42LTEwLjgtMS42LTE2aDE2My4yYy0xLjEgNS4yLTEuNiAxMC41LTEuNiAxNiAwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDYyNGM4LjggMCAxNi03LjIgMTYtMTZ2LTg1LjVjMC0xNy02LjctMzMuMi0xOC43LTQ1LjJ6TTgwIDQzMmMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6bTEyOCAwYy0xNy42IDAtMzItMTQuNC0zMi0zMnMxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzItMTQuNCAzMi0zMiAzMnptMjcyLTIyNGgzNy41YzQuMyAwIDguMyAxLjcgMTEuMyA0LjdsNDMuMyA0My4zSDQ4MHYtNDh6bTQ4IDIyNGMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrUGlja3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAyODhoLTE2di02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC00OEw0MTkuMjIgNTYuMDJBNjQuMDI1IDY0LjAyNSAwIDAgMCAzNjkuMjQgMzJIMjU2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOEg2NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDkuNjFjLS43NiA1LjI3LTEuNjEgMTAuNTItMS42MSAxNiAwIDYxLjg2IDUwLjE0IDExMiAxMTIgMTEyczExMi01MC4xNCAxMTItMTEyYzAtNS40OC0uODUtMTAuNzMtMS42MS0xNmg2Ny4yM2MtLjc2IDUuMjctMS42MSAxMC41Mi0xLjYxIDE2IDAgNjEuODYgNTAuMTQgMTEyIDExMiAxMTJzMTEyLTUwLjE0IDExMi0xMTJjMC01LjQ4LS44NS0xMC43My0xLjYxLTE2SDYyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTI4OCA5Nmg4MS4yNGw3Ni44IDk2SDI4OFY5NnpNMTc2IDQxNmMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHptMjg4IDBjLTI2LjQ3IDAtNDgtMjEuNTMtNDgtNDhzMjEuNTMtNDggNDgtNDggNDggMjEuNTMgNDggNDgtMjEuNTMgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxNmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDEyOGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek0xNjAgNDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMzIwIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em04MC0yMDhINDE2VjE0NGg0NC4xbDk5LjkgOTkuOVYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRzaGlydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzEuMiA5Ni41TDQzNi41IDBDNDE2LjQgMjcuOCAzNzEuOSA0Ny4yIDMyMCA0Ny4yUzIyMy42IDI3LjggMjAzLjUgMEw4LjggOTYuNWMtNy45IDQtMTEuMSAxMy42LTcuMiAyMS41bDU3LjIgMTE0LjVjNCA3LjkgMTMuNiAxMS4xIDIxLjUgNy4ybDU2LjYtMjcuN2MxMC42LTUuMiAyMyAyLjUgMjMgMTQuNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNi4zYzAtMTEuOCAxMi40LTE5LjYgMjMtMTQuNGw1Ni42IDI3LjdjNy45IDQgMTcuNS44IDIxLjUtNy4yTDYzOC4zIDExOGM0LTcuOS44LTE3LjYtNy4xLTIxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjM3IDEwMy44MjJjMTM4LjUzMi0xMzguNTMyIDM2Mi45MzYtMTM4LjMyNiA1MDEuMjYyIDAgNi4wNzggNi4wNzggNy4wNzQgMTUuNDk2IDIuNTgzIDIyLjY4MWwtNDMuMjE0IDY5LjEzOGExOC4zMzIgMTguMzMyIDAgMCAxLTIyLjM1NiA3LjMwNWwtODYuNDIyLTM0LjU2OWExOC4zMzUgMTguMzM1IDAgMCAxLTExLjQzNC0xOC44NDZMMzUxLjc0MSA5MGMtNjIuMTQ1LTIyLjQ1NC0xMzAuNjM2LTIxLjk4Ni0xOTEuNDgzIDBsNS45NTMgNTkuNTMyYTE4LjMzMSAxOC4zMzEgMCAwIDEtMTEuNDM0IDE4Ljg0NmwtODYuNDIzIDM0LjU2OGExOC4zMzQgMTguMzM0IDAgMCAxLTIyLjM1Ni03LjMwNUwyLjc4NyAxMjYuNTAyYTE4LjMzMyAxOC4zMzMgMCAwIDEgMi41ODMtMjIuNjh6TTk2IDMwOHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg0NGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTMzNiA5NnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg5MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6TTk2IDUwMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg0NGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTI4OCAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDE0MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIzMmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5MiAwSDQ4QTQ4IDQ4IDAgMCAwIDAgNDh2MzIwYTQ4IDQ4IDAgMCAwIDQ4IDQ4aDI0MHYzMkgxMTJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNkgzNTJ2LTMyaDI0MGE0OCA0OCAwIDAgMCA0OC00OFY0OGE0OCA0OCAwIDAgMC00OC00OHptLTE2IDM1Mkg2NFY2NGg1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJlbGxhQmVhY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE1LjM4IDEzNi45bDEwMi4xMSAzNy4xOGMzNS4xOS04MS41NCA4Ni4yMS0xNDQuMjkgMTM5LTE3My43LTk1Ljg4LTQuODktMTg4Ljc4IDM2Ljk2LTI0OC41MyAxMTEuOC02LjY5IDguNC0yLjY2IDIxLjA1IDcuNDIgMjQuNzJ6bTEzMi4yNSA0OC4xNmwyMzguNDggODYuODNjMzUuNzYtMTIxLjM4IDE4LjctMjMxLjY2LTQyLjYzLTI1My45OC03LjQtMi43LTE1LjEzLTQtMjMuMDktNC01OC4wMi4wMS0xMjguMjcgNjkuMTctMTcyLjc2IDE3MS4xNXpNNTIxLjQ4IDYwLjVjNi4yMiAxNi4zIDEwLjgzIDM0LjYgMTMuMiA1NS4xOSA1Ljc0IDQ5Ljg5LTEuNDIgMTA4LjIzLTE4Ljk1IDE2Ni45OGwxMDIuNjIgMzcuMzZjMTAuMDkgMy42NyAyMS4zMS0zLjQzIDIxLjU3LTE0LjE3IDIuMzItOTUuNjktNDEuOTEtMTg3LjQ0LTExOC40NC0yNDUuMzZ6TTU2MCA0NDcuOThIMzIxLjA2TDM4NiAyNjkuNWwtNjAuMTQtMjEuOS03Mi45IDIwMC4zN0gxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTYuMDF2MzIuMDFDMCA1MDQuODMgNy4xNiA1MTIgMTYgNTEyaDU0NGM4Ljg0IDAgMTYtNy4xNyAxNi0xNi4wMXYtMzIuMDFjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJlbGxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS43IDI4MC44QzU0Ny4xIDE0NC41IDQzNy4zIDYyLjYgMzIwIDQ5LjlWMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2MTcuOUMxMzguMyA2Mi42IDI5LjUgMTQ0LjUuMyAyODAuOGMtMi4yIDEwLjEgOC41IDIxLjMgMTguNyAxMS40IDUyLTU1IDEwNy43LTUyLjQgMTU4LjYgMzcgNS4zIDkuNSAxNC45IDguNiAxOS43IDAgMjAuMi0zNS40IDQ0LjktNzMuMiA5MC43LTczLjIgNTguNSAwIDg4LjIgNjguOCA5MC43IDczLjIgNC44IDguNiAxNC40IDkuNSAxOS43IDAgNTEtODkuNSAxMDcuMS05MS40IDE1OC42LTM3IDEwLjMgMTAgMjAuOS0xLjMgMTguNy0xMS40ek0yNTYgMzAxLjdWNDMyYzAgOC44LTcuMiAxNi0xNiAxNi03LjggMC0xMy4yLTUuMy0xNS4xLTEwLjctNS45LTE2LjctMjQuMS0yNS40LTQwLjgtMTkuNS0xNi43IDUuOS0yNS40IDI0LjItMTkuNSA0MC44IDExLjIgMzEuOSA0MS42IDUzLjMgNzUuNCA1My4zIDQ0LjEgMCA4MC0zNS45IDgwLTgwVjMwMS42Yy05LjEtNy45LTE5LjgtMTMuNi0zMi0xMy42LTEyLjMuMS0yMi40IDQuOC0zMiAxMy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmRlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNjRoMzJ2MTYwYzAgODguMjIgNzEuNzggMTYwIDE2MCAxNjBzMTYwLTcxLjc4IDE2MC0xNjBWNjRoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTZhMTYgMTYgMCAwIDAtMTYtMTZIMjcyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMydjE2MGE4MCA4MCAwIDAgMS0xNjAgMFY2NGgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNmExNiAxNiAwIDAgMC0xNi0xNkgzMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptNDAwIDM4NEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmRvQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS41NDUgOGMtNjYuMjY5LjExOS0xMjYuNDM4IDI2LjIzMy0xNzAuODYgNjguNjg1TDQ4Ljk3MSA0MC45NzFDMzMuODUxIDI1Ljg1MSA4IDM2LjU1OSA4IDU3Ljk0MVYxOTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEzNC4wNTljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFsLTQxLjc1LTQxLjc1YzMwLjg2NC0yOC44OTkgNzAuODAxLTQ0LjkwNyAxMTMuMjMtNDUuMjczIDkyLjM5OC0uNzk4IDE3MC4yODMgNzMuOTc3IDE2OS40ODQgMTY5LjQ0MkM0MjMuMjM2IDM0OC4wMDkgMzQ5LjgxNiA0MjQgMjU2IDQyNGMtNDEuMTI3IDAtNzkuOTk3LTE0LjY3OC0xMTAuNjMtNDEuNTU2LTQuNzQzLTQuMTYxLTExLjkwNi0zLjkwOC0xNi4zNjguNTUzTDg5LjM0IDQyMi42NTljLTQuODcyIDQuODcyLTQuNjMxIDEyLjgxNS40ODIgMTcuNDMzQzEzMy43OTggNDc5LjgxMyAxOTIuMDc0IDUwNCAyNTYgNTA0YzEzNi45NjYgMCAyNDcuOTk5LTExMS4wMzMgMjQ4LTI0Ny45OThDNTA0LjAwMSAxMTkuMTkzIDM5Mi4zNTQgNy43NTUgMjU1LjU0NSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMi4zMzMgMjI0LjMzM0gxMmMtNi42MjcgMC0xMi01LjM3My0xMi0xMlYxMkMwIDUuMzczIDUuMzczIDAgMTIgMGg0OGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjc4LjExMkMxMTcuNzczIDM5LjI3OSAxODQuMjYgNy40NyAyNTguMTc1IDguMDA3YzEzNi45MDYuOTk0IDI0Ni40NDggMTExLjYyMyAyNDYuMTU3IDI0OC41MzJDNTA0LjA0MSAzOTMuMjU4IDM5My4xMiA1MDQgMjU2LjMzMyA1MDRjLTY0LjA4OSAwLTEyMi40OTYtMjQuMzEzLTE2Ni41MS02NC4yMTUtNS4wOTktNC42MjItNS4zMzQtMTIuNTU0LS40NjctMTcuNDJsMzMuOTY3LTMzLjk2N2M0LjQ3NC00LjQ3NCAxMS42NjItNC43MTcgMTYuNDAxLS41MjVDMTcwLjc2IDQxNS4zMzYgMjExLjU4IDQzMiAyNTYuMzMzIDQzMmM5Ny4yNjggMCAxNzYtNzguNzE2IDE3Ni0xNzYgMC05Ny4yNjctNzguNzE2LTE3Ni0xNzYtMTc2LTU4LjQ5NiAwLTExMC4yOCAyOC40NzYtMTQyLjI3NCA3Mi4zMzNoOTguMjc0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5pdmVyc2FsQWNjZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGMxMTQuOTUzIDAgMjA4IDkzLjAyOSAyMDggMjA4IDAgMTE0Ljk1My05My4wMjkgMjA4LTIwOCAyMDgtMTE0Ljk1MyAwLTIwOC05My4wMjktMjA4LTIwOCAwLTExNC45NTMgOTMuMDI5LTIwOCAyMDgtMjA4bTAtNDBDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDU2QzE0OS45NjEgNjQgNjQgMTQ5Ljk2MSA2NCAyNTZzODUuOTYxIDE5MiAxOTIgMTkyIDE5Mi04NS45NjEgMTkyLTE5MlMzNjIuMDM5IDY0IDI1NiA2NHptMCA0NGMxOS44ODIgMCAzNiAxNi4xMTggMzYgMzZzLTE2LjExOCAzNi0zNiAzNi0zNi0xNi4xMTgtMzYtMzYgMTYuMTE4LTM2IDM2LTM2em0xMTcuNzQxIDk4LjAyM2MtMjguNzEyIDYuNzc5LTU1LjUxMSAxMi43NDgtODIuMTQgMTUuODA3Ljg1MSAxMDEuMDIzIDEyLjMwNiAxMjMuMDUyIDI1LjAzNyAxNTUuNjIxIDMuNjE3IDkuMjYtLjk1NyAxOS42OTgtMTAuMjE3IDIzLjMxNS05LjI2MSAzLjYxNy0xOS42OTktLjk1Ny0yMy4zMTYtMTAuMjE3LTguNzA1LTIyLjMwOC0xNy4wODYtNDAuNjM2LTIyLjI2MS03OC41NDloLTkuNjg2Yy01LjE2NyAzNy44NTEtMTMuNTM0IDU2LjIwOC0yMi4yNjIgNzguNTQ5LTMuNjE1IDkuMjU1LTE0LjA1IDEzLjgzNi0yMy4zMTUgMTAuMjE3LTkuMjYtMy42MTctMTMuODM0LTE0LjA1Ni0xMC4yMTctMjMuMzE1IDEyLjcxMy0zMi41NDEgMjQuMTg1LTU0LjU0MSAyNS4wMzctMTU1LjYyMS0yNi42MjktMy4wNTgtNTMuNDI4LTkuMDI3LTgyLjE0MS0xNS44MDctOC42LTIuMDMxLTEzLjkyNi0xMC42NDgtMTEuODk1LTE5LjI0OXMxMC42NDctMTMuOTI2IDE5LjI0OS0xMS44OTVjOTYuNjg2IDIyLjgyOSAxMjQuMjgzIDIyLjc4MyAyMjAuNzc1IDAgOC41OTktMi4wMyAxNy4yMTggMy4yOTQgMTkuMjQ5IDExLjg5NSAyLjAyOSA4LjYwMS0zLjI5NyAxNy4yMTktMTEuODk3IDE5LjI0OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5pdmVyc2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMTI4djE2YTggOCAwIDAgMS04IDhoLTI0djEyYzAgNi42MjctNS4zNzMgMTItMTIgMTJINjBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTEySDI0YTggOCAwIDAgMS04LTh2LTE2YTggOCAwIDAgMSA0Ljk0MS03LjM5MmwyMzItODhhNy45OTYgNy45OTYgMCAwIDEgNi4xMTggMGwyMzIgODhBOCA4IDAgMCAxIDQ5NiAxMjh6bS0yNCAzMDRINDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmE4IDggMCAwIDAgOCA4aDQ2NGE4IDggMCAwIDAgOC04di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTk2IDE5MnYxOTJINjBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjBoNDE2di0yMGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0zNlYxOTJoLTY0djE5MmgtNjRWMTkyaC02NHYxOTJoLTY0VjE5Mkg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5saW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNC4wODMgNDA1LjkwN2M0LjY4NiA0LjY4NiA0LjY4NiAxMi4yODQgMCAxNi45NzFsLTQ0LjY3NCA0NC42NzRjLTU5LjI2MyA1OS4yNjItMTU1LjY5MyA1OS4yNjYtMjE0Ljk2MSAwLTU5LjI2NC01OS4yNjUtNTkuMjY0LTE1NS42OTYgMC0yMTQuOTZsNDQuNjc1LTQ0LjY3NWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBsMzkuNTk4IDM5LjU5OGM0LjY4NiA0LjY4NiA0LjY4NiAxMi4yODQgMCAxNi45NzFsLTQ0LjY3NSA0NC42NzRjLTI4LjA3MiAyOC4wNzMtMjguMDcyIDczLjc1IDAgMTAxLjgyMyAyOC4wNzIgMjguMDcyIDczLjc1IDI4LjA3MyAxMDEuODI0IDBsNDQuNjc0LTQ0LjY3NGM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBsMzkuNTk3IDM5LjU5OHptLTU2LjU2OC0yNjAuMjE2YzQuNjg2IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NzEgMGw0NC42NzQtNDQuNjc0YzI4LjA3Mi0yOC4wNzUgNzMuNzUtMjguMDczIDEwMS44MjQgMCAyOC4wNzIgMjguMDczIDI4LjA3MiA3My43NSAwIDEwMS44MjNsLTQ0LjY3NSA0NC42NzRjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwzOS41OTggMzkuNTk4YzQuNjg2IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NzEgMGw0NC42NzUtNDQuNjc1YzU5LjI2NS01OS4yNjUgNTkuMjY1LTE1NS42OTUgMC0yMTQuOTYtNTkuMjY2LTU5LjI2NC0xNTUuNjk1LTU5LjI2NC0yMTQuOTYxIDBsLTQ0LjY3NCA0NC42NzRjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwzOS41OTcgMzkuNTk4em0yMzQuODI4IDM1OS4yOGwyMi42MjctMjIuNjI3YzkuMzczLTkuMzczIDkuMzczLTI0LjU2OSAwLTMzLjk0MUw2My41OTggNy4wMjljLTkuMzczLTkuMzczLTI0LjU2OS05LjM3My0zMy45NDEgMEw3LjAyOSAyOS42NTdjLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWw0NDEuMzczIDQ0MS4zNzNjOS4zNzMgOS4zNzIgMjQuNTY5IDkuMzcyIDMzLjk0MSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxvY2tBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDI1NkgxNTJWMTUyLjljMC0zOS42IDMxLjctNzIuNSA3MS4zLTcyLjkgNDAtLjQgNzIuNyAzMi4xIDcyLjcgNzJ2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTE2QzM3NiA2OCAzMDcuNS0uMyAyMjMuNSAwIDEzOS41LjMgNzIgNjkuNSA3MiAxNTMuNVYyNTZINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djE2MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yNjQgNDA4YzAgMjIuMS0xNy45IDQwLTQwIDQwcy00MC0xNy45LTQwLTQwdi00OGMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDI1NkgxNTJWMTUyLjljMC0zOS42IDMxLjctNzIuNSA3MS4zLTcyLjkgNDAtLjQgNzIuNyAzMi4xIDcyLjcgNzJ2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTE2QzM3NiA2OCAzMDcuNS0uMyAyMjMuNSAwIDEzOS41LjMgNzIgNjkuNSA3MiAxNTMuNVYyNTZINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djE2MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDM4NGgtODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE5MmgtODcuN2MtMTcuOCAwLTI2LjctMjEuNS0xNC4xLTM0LjFMMjQyLjMgNS43YzcuNS03LjUgMTkuOC03LjUgMjcuMyAwbDE1Mi4yIDE1Mi4yYzEyLjYgMTIuNiAzLjcgMzQuMS0xNC4xIDM0LjFIMzIwdjE2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHptMjE2LTh2MTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTM2djhjMCAzMC45IDI1LjEgNTYgNTYgNTZoODBjMzAuOSAwIDU2LTI1LjEgNTYtNTZ2LThoMTM2YzEzLjMgMCAyNCAxMC43IDI0IDI0em0tMTI0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMCA5IDIwIDIwIDIwIDIwLTkgMjAtMjB6bTY0IDBjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckFsdFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44IDQ1OC4xTDM4OS42IDI2OS4zQzQzMy44IDI0NC43IDQ2NCAxOTguMSA0NjQgMTQ0IDQ2NCA2NC41IDM5OS41IDAgMzIwIDBjLTY3LjEgMC0xMjMgNDYuMS0xMzkgMTA4LjJMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRsNTg4LjQgNDU0LjdjNyA1LjQgMTcgNC4yIDIyLjUtMi44bDE5LjYtMjUuM2M1LjQtNi44IDQuMS0xNi45LTIuOS0yMi4zek0xOTguNCAzMjBDMTI0LjIgMzIwIDY0IDM4MC4yIDY0IDQ1NC40djkuNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzODIuMkwyNDUuOCAzMjBoLTQ3LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDI4OGM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NFMzMzUuNSAwIDI1NiAwIDExMiA2NC41IDExMiAxNDRzNjQuNSAxNDQgMTQ0IDE0NHptMTI4IDMyaC01NS4xYy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2SDEyOEM1Ny4zIDMyMCAwIDM3Ny4zIDAgNDQ4djE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMTZjMC03MC43LTU3LjMtMTI4LTEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJBc3Ryb25hdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjI0aDEzLjVjMjQuNyA1Ni41IDgwLjkgOTYgMTQ2LjUgOTZzMTIxLjgtMzkuNSAxNDYuNS05NkgzODRjOC44IDAgMTYtNy4yIDE2LTE2di05NmMwLTguOC03LjItMTYtMTYtMTZoLTEzLjVDMzQ1LjggMzkuNSAyODkuNiAwIDIyNCAwUzEwMi4yIDM5LjUgNzcuNSA5Nkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnptNDAtODhjMC0yMi4xIDIxLjUtNDAgNDgtNDBoMTQ0YzI2LjUgMCA0OCAxNy45IDQ4IDQwdjI0YzAgNTMtNDMgOTYtOTYgOTZoLTQ4Yy01MyAwLTk2LTQzLTk2LTk2di0yNHptNzIgNzJsMTItMzYgMzYtMTItMzYtMTItMTItMzYtMTIgMzYtMzYgMTIgMzYgMTIgMTIgMzZ6bTE1MS42IDExMy40QzI5Ny43IDM0MC43IDI2Mi4yIDM1MiAyMjQgMzUycy03My43LTExLjMtMTAzLjYtMzAuNkM1Mi45IDMyOC41IDAgMzg1IDAgNDU0LjR2OS42YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDgwdi02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgxMjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRoODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTkuNmMwLTY5LjQtNTIuOS0xMjUuOS0xMjAuNC0xMzN6TTI3MiA0NDhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptLTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OGgzMnYtNDhjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6bTMyMy0xMjguNGwtMjcuOC0yOC4xYy00LjYtNC43LTEyLjEtNC43LTE2LjgtLjFsLTEwNC44IDEwNC00NS41LTQ1LjhjLTQuNi00LjctMTIuMS00LjctMTYuOC0uMWwtMjguMSAyNy45Yy00LjcgNC42LTQuNyAxMi4xLS4xIDE2LjhsODEuNyA4Mi4zYzQuNiA0LjcgMTIuMSA0LjcgMTYuOC4xbDE0MS4zLTE0MC4yYzQuNi00LjcgNC43LTEyLjIuMS0xNi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgOTZjNDguNiAwIDg4IDM5LjQgODggODhzLTM5LjQgODgtODggODgtODgtMzkuNC04OC04OCAzOS40LTg4IDg4LTg4em0wIDM0NGMtNTguNyAwLTExMS4zLTI2LjYtMTQ2LjUtNjguMiAxOC44LTM1LjQgNTUuNi01OS44IDk4LjUtNTkuOCAyLjQgMCA0LjguNCA3LjEgMS4xIDEzIDQuMiAyNi42IDYuOSA0MC45IDYuOSAxNC4zIDAgMjgtMi43IDQwLjktNi45IDIuMy0uNyA0LjctMS4xIDcuMS0xLjEgNDIuOSAwIDc5LjcgMjQuNCA5OC41IDU5LjhDMzU5LjMgNDIxLjQgMzA2LjcgNDQ4IDI0OCA0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjI0Yy03OS42IDAtMTQ0IDY0LjQtMTQ0IDE0NHM2NC40IDE0NCAxNDQgMTQ0IDE0NC02NC40IDE0NC0xNDQtNjQuNC0xNDQtMTQ0LTE0NHptNjQgMTUwLjNjMCA1LjMtNC40IDkuNy05LjcgOS43aC02MC42Yy01LjMgMC05LjctNC40LTkuNy05Ljd2LTc2LjZjMC01LjMgNC40LTkuNyA5LjctOS43aDEyLjZjNS4zIDAgOS43IDQuNCA5LjcgOS43VjM1MmgzOC4zYzUuMyAwIDkuNyA0LjQgOS43IDkuN3YxMi42ek0zMjAgMzY4YzAtMjcuOCA2LjctNTQuMSAxOC4yLTc3LjUtOC0xLjUtMTYuMi0yLjUtMjQuNi0yLjVoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNDcuMWMtNDUuMy0zMS45LTc1LjEtODQuNS03NS4xLTE0NHptLTk2LTExMmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEwLjUgMzczLjNjMi42LTE0LjEgMi42LTI4LjUgMC00Mi42bDI1LjgtMTQuOWMzLTEuNyA0LjMtNS4yIDMuMy04LjUtNi43LTIxLjYtMTguMi00MS4yLTMzLjItNTcuNC0yLjMtMi41LTYtMy4xLTktMS40bC0yNS44IDE0LjljLTEwLjktOS4zLTIzLjQtMTYuNS0zNi45LTIxLjN2LTI5LjhjMC0zLjQtMi40LTYuNC01LjctNy4xLTIyLjMtNS00NS00LjgtNjYuMiAwLTMuMy43LTUuNyAzLjctNS43IDcuMXYyOS44Yy0xMy41IDQuOC0yNiAxMi0zNi45IDIxLjNsLTI1LjgtMTQuOWMtMi45LTEuNy02LjctMS4xLTkgMS40LTE1IDE2LjItMjYuNSAzNS44LTMzLjIgNTcuNC0xIDMuMy40IDYuOCAzLjMgOC41bDI1LjggMTQuOWMtMi42IDE0LjEtMi42IDI4LjUgMCA0Mi42bC0yNS44IDE0LjljLTMgMS43LTQuMyA1LjItMy4zIDguNSA2LjcgMjEuNiAxOC4yIDQxLjEgMzMuMiA1Ny40IDIuMyAyLjUgNiAzLjEgOSAxLjRsMjUuOC0xNC45YzEwLjkgOS4zIDIzLjQgMTYuNSAzNi45IDIxLjN2MjkuOGMwIDMuNCAyLjQgNi40IDUuNyA3LjEgMjIuMyA1IDQ1IDQuOCA2Ni4yIDAgMy4zLS43IDUuNy0zLjcgNS43LTcuMXYtMjkuOGMxMy41LTQuOCAyNi0xMiAzNi45LTIxLjNsMjUuOCAxNC45YzIuOSAxLjcgNi43IDEuMSA5LTEuNCAxNS0xNi4yIDI2LjUtMzUuOCAzMy4yLTU3LjQgMS0zLjMtLjQtNi44LTMuMy04LjVsLTI1LjgtMTQuOXpNNDk2IDQwMC41Yy0yNi44IDAtNDguNS0yMS44LTQ4LjUtNDguNXMyMS44LTQ4LjUgNDguNS00OC41IDQ4LjUgMjEuOCA0OC41IDQ4LjUtMjEuNyA0OC41LTQ4LjUgNDguNXpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTIwMS4yIDIyNi41Yy0yLjMtMS4yLTQuNi0yLjYtNi44LTMuOWwtNy45IDQuNmMtNiAzLjQtMTIuOCA1LjMtMTkuNiA1LjMtMTAuOSAwLTIxLjQtNC42LTI4LjktMTIuNi0xOC4zLTE5LjgtMzIuMy00My45LTQwLjItNjkuNi01LjUtMTcuNyAxLjktMzYuNCAxNy45LTQ1LjdsNy45LTQuNmMtLjEtMi42LS4xLTUuMiAwLTcuOGwtNy45LTQuNmMtMTYtOS4yLTIzLjQtMjgtMTcuOS00NS43LjktMi45IDIuMi01LjggMy4yLTguNy0zLjgtLjMtNy41LTEuMi0xMS40LTEuMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMxMC4xIDAgMTkuNS0zLjIgMjcuMi04LjUtMS4yLTMuOC0yLTcuNy0yLTExLjh2LTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyNzQuOWMtMi40LTYuOC0zLjQtMTQtMi42LTIxLjNsNi44LTYwLjkgMS4yLTExLjEgNy45LTcuOSA3Ny4zLTc3LjNjLTI0LjUtMjcuNy02MC00NS41LTk5LjktNDUuNXptNDUuMyAxNDUuM2wtNi44IDYxYy0xLjEgMTAuMiA3LjUgMTguOCAxNy42IDE3LjZsNjAuOS02LjggMTM3LjktMTM3LjktNzEuNy03MS43LTEzNy45IDEzNy44ek02MzMgMjY4LjlMNTk1LjEgMjMxYy05LjMtOS4zLTI0LjUtOS4zLTMzLjggMGwtMzcuOCAzNy44LTQuMSA0LjEgNzEuOCA3MS43IDQxLjgtNDEuOGM5LjMtOS40IDkuMy0yNC41IDAtMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckZyaWVuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDI1NmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlMyNTMuOSAzMiAxOTIgMzIgODAgODIuMSA4MCAxNDRzNTAuMSAxMTIgMTEyIDExMnptNzYuOCAzMmgtOC4zYy0yMC44IDEwLTQzLjkgMTYtNjguNSAxNnMtNDcuNi02LTY4LjUtMTZoLTguM0M1MS42IDI4OCAwIDMzOS42IDAgNDAzLjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjguOGMwLTYzLjYtNTEuNi0xMTUuMi0xMTUuMi0xMTUuMnpNNDgwIDI1NmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05Ni05NiA0My05NiA5NiA0MyA5NiA5NiA5NnptNDggMzJoLTMuOGMtMTMuOSA0LjgtMjguNiA4LTQ0LjIgOHMtMzAuMy0zLjItNDQuMi04SDQzMmMtMjAuNCAwLTM5LjIgNS45LTU1LjcgMTUuNCAyNC40IDI2LjMgMzkuNyA2MS4yIDM5LjcgOTkuOHYzOC40YzAgMi4yLS41IDQuMy0uNiA2LjRINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4IDAtNjEuOS01MC4xLTExMi0xMTItMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyR3JhZHVhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE5LjQgMzIwLjZMMjI0IDQxNmwtOTUuNC05NS40QzU3LjEgMzIzLjcgMCAzODIuMiAwIDQ1NC40djkuNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTkuNmMwLTcyLjItNTcuMS0xMzAuNy0xMjguNi0xMzMuOHpNMTMuNiA3OS44bDYuNCAxLjV2NTguNGMtNyA0LjItMTIgMTEuNS0xMiAyMC4zIDAgOC40IDQuNiAxNS40IDExLjEgMTkuN0wzLjUgMjQyYy0xLjcgNi45IDIuMSAxNCA3LjYgMTRoNDEuOGM1LjUgMCA5LjMtNy4xIDcuNi0xNGwtMTUuNi02Mi4zQzUxLjQgMTc1LjQgNTYgMTY4LjQgNTYgMTYwYzAtOC44LTUtMTYuMS0xMi0yMC4zVjg3LjFsNjYgMTUuOWMtOC42IDE3LjItMTQgMzYuNC0xNCA1NyAwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4YzAtMjAuNi01LjMtMzkuOC0xNC01N2w5Ni4zLTIzLjJjMTguMi00LjQgMTguMi0yNy4xIDAtMzEuNWwtMTkwLjQtNDZjLTEzLTMuMS0yNi43LTMuMS0zOS43IDBMMTMuNiA0OC4yYy0xOC4xIDQuNC0xOC4xIDI3LjIgMCAzMS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VySW5qdXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzcuMzcgMTEuOThDMjYxLjA4IDQuNDcgMjQzLjExIDAgMjI0IDBjLTUzLjY5IDAtOTkuNSAzMy4xMy0xMTguNTEgODBoODEuMTlsOTAuNjktNjguMDJ6TTM0Mi41MSA4MGMtNy45LTE5LjQ3LTIwLjY3LTM2LjItMzYuNDktNDkuNTJMMjM5Ljk5IDgwaDEwMi41MnpNMjI0IDI1NmM3MC42OSAwIDEyOC01Ny4zMSAxMjgtMTI4IDAtNS40OC0uOTUtMTAuNy0xLjYxLTE2SDk3LjYxYy0uNjcgNS4zLTEuNjEgMTAuNTItMS42MSAxNiAwIDcwLjY5IDU3LjMxIDEyOCAxMjggMTI4ek04MCAyOTkuN1Y1MTJoMTI4LjI2bC05OC40NS0yMjEuNTJBMTMyLjgzNSAxMzIuODM1IDAgMCAwIDgwIDI5OS43ek0wIDQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4VjMyMC4yNEMxOC44OCAzNDQuODkgMCAzODEuMjYgMCA0MjIuNFY0NjR6bTI1Ni00OGgtNTUuMzhsNDIuNjcgOTZIMjU2YzI2LjQ3IDAgNDgtMjEuNTMgNDgtNDhzLTIxLjUzLTQ4LTQ4LTQ4em01Ny42LTEyOGgtMTYuNzFjLTIyLjI0IDEwLjE4LTQ2Ljg4IDE2LTcyLjg5IDE2cy01MC42NS01LjgyLTcyLjg5LTE2aC03LjM3bDQyLjY3IDk2SDI1NmM0NC4xMSAwIDgwIDM1Ljg5IDgwIDgwIDAgMTguMDgtNi4yNiAzNC41OS0xNi40MSA0OEg0MDBjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDEuNmMwLTc0LjIzLTYwLjE3LTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgOTYgMTI4YTEyOCAxMjggMCAwIDAgMTI4IDEyOHptOTYgNjRhNjMuMDggNjMuMDggMCAwIDEgOC4xLTMwLjVjLTQuOC0uNS05LjUtMS41LTE0LjUtMS41aC0xNi43YTE3NC4wOCAxNzQuMDggMCAwIDEtMTQ1LjggMGgtMTYuN0ExMzQuNDMgMTM0LjQzIDAgMCAwIDAgNDIyLjRWNDY0YTQ4IDQ4IDAgMCAwIDQ4IDQ4aDI4MC45YTYzLjU0IDYzLjU0IDAgMCAxLTguOS0zMnptMjg4LTMyaC0zMnYtODBhODAgODAgMCAwIDAtMTYwIDB2ODBoLTMyYTMyIDMyIDAgMCAwLTMyIDMydjE2MGEzMiAzMiAwIDAgMCAzMiAzMmgyMjRhMzIgMzIgMCAwIDAgMzItMzJWMzIwYTMyIDMyIDAgMCAwLTMyLTMyek00OTYgNDMyYTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyem0zMi0xNDRoLTY0di04MGEzMiAzMiAwIDAgMSA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6TTEwNCA0MjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0LTI0IDEwLjctMjQgMjR6bTIxNi0xMzUuNHY0OWMzNi41IDcuNCA2NCAzOS44IDY0IDc4LjR2NDEuN2MwIDcuNi01LjQgMTQuMi0xMi45IDE1LjdsLTMyLjIgNi40Yy00LjMuOS04LjUtMS45LTkuNC02LjNsLTMuMS0xNS43Yy0uOS00LjMgMS45LTguNiA2LjMtOS40bDE5LjMtMy45VjQxNmMwLTYyLjgtOTYtNjUuMS05NiAxLjl2MjYuN2wxOS4zIDMuOWM0LjMuOSA3LjEgNS4xIDYuMyA5LjRsLTMuMSAxNS43Yy0uOSA0LjMtNS4xIDcuMS05LjQgNi4zbC0zMS4yLTQuMmMtNy45LTEuMS0xMy44LTcuOC0xMy44LTE1LjlWNDE2YzAtMzguNiAyNy41LTcwLjkgNjQtNzguNHYtNDUuMmMtMi4yLjctNC40IDEuMS02LjYgMS45LTE4IDYuMy0zNy4zIDkuOC01Ny40IDkuOHMtMzkuNC0zLjUtNTcuNC05LjhjLTcuNC0yLjYtMTQuOS00LjItMjIuNi01LjJ2ODEuNmMyMy4xIDYuOSA0MCAyOC4xIDQwIDUzLjQgMCAzMC45LTI1LjEgNTYtNTYgNTZzLTU2LTI1LjEtNTYtNTZjMC0yNS4zIDE2LjktNDYuNSA0MC01My40di04MC40QzQ4LjUgMzAxIDAgMzU1LjggMCA0MjIuNHY0NC44QzAgNDkxLjkgMjAuMSA1MTIgNDQuOCA1MTJoMzU4LjRjMjQuNyAwIDQ0LjgtMjAuMSA0NC44LTQ0Ljh2LTQ0LjhjMC03Mi01Ni44LTEzMC4zLTEyOC0xMzMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAyMDhINDMyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDE5MmM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQwMCA0OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJOaW5qYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjUuNCAyODkuMkwyMjQgMzkwLjYgMTIyLjYgMjg5LjJDNTQgMjk1LjMgMCAzNTIuMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03MC4yLTU0LTEyNy4xLTEyMi42LTEzMy4yek0zMiAxOTJjMjcuMyAwIDUxLjgtMTEuNSA2OS4yLTI5LjcgMTUuMSA1My45IDY0IDkzLjcgMTIyLjggOTMuNyA3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwYy01MC40IDAtOTMuNiAyOS40LTExNC41IDcxLjhDOTIuMSA0Ny44IDY0IDMyIDMyIDMyYzAgMzMuNCAxNy4xIDYyLjggNDMuMSA4MC0yNiAxNy4yLTQzLjEgNDYuNi00My4xIDgwem0xNDQtOTZoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJIMTQ0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTnVyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE5LjQxLDMyMCwyMjQsNDE1LjM5LDEyOC41OSwzMjBDNTcuMSwzMjMuMSwwLDM4MS42LDAsNDUzLjc5QTU4LjIxLDU4LjIxLDAsMCwwLDU4LjIxLDUxMkgzODkuNzlBNTguMjEsNTguMjEsMCwwLDAsNDQ4LDQ1My43OUM0NDgsMzgxLjYsMzkwLjksMzIzLjEsMzE5LjQxLDMyMFpNMjI0LDMwNEExMjgsMTI4LDAsMCwwLDM1MiwxNzZWNjUuODJhMzIsMzIsMCwwLDAtMjAuNzYtMzBMMjQ2LjQ3LDQuMDdhNjQsNjQsMCwwLDAtNDQuOTQsMEwxMTYuNzYsMzUuODZBMzIsMzIsMCwwLDAsOTYsNjUuODJWMTc2QTEyOCwxMjgsMCwwLDAsMjI0LDMwNFpNMTg0LDcxLjY3YTUsNSwwLDAsMSw1LTVoMjEuNjdWNDVhNSw1LDAsMCwxLDUtNWgxNi42NmE1LDUsMCwwLDEsNSw1VjY2LjY3SDI1OWE1LDUsMCwwLDEsNSw1Vjg4LjMzYTUsNSwwLDAsMS01LDVIMjM3LjMzVjExNWE1LDUsMCwwLDEtNSw1SDIxNS42N2E1LDUsMCwwLDEtNS01VjkzLjMzSDE4OWE1LDUsMCwwLDEtNS01Wk0xNDQsMTYwSDMwNHYxNmE4MCw4MCwwLDAsMS0xNjAsMFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDIwOGgtNjR2LTY0YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGgtNjRjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjR2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtNjRoNjRjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bS00MDAgNDhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2VjcmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4My45IDMwOC4zbDIzLjktNjIuNmM0LTEwLjUtMy43LTIxLjctMTUtMjEuN2gtNTguNWMxMS0xOC45IDE3LjgtNDAuNiAxNy44LTY0di0uM2MzOS4yLTcuOCA2NC0xOS4xIDY0LTMxLjcgMC0xMy4zLTI3LjMtMjUuMS03MC4xLTMzLTkuMi0zMi44LTI3LTY1LjgtNDAuNi04Mi44LTkuNS0xMS45LTI1LjktMTUuNi0zOS41LTguOGwtMjcuNiAxMy44Yy05IDQuNS0xOS42IDQuNS0yOC42IDBMMTgyLjEgMy40Yy0xMy42LTYuOC0zMC0zLjEtMzkuNSA4LjgtMTMuNSAxNy0zMS40IDUwLTQwLjYgODIuOC00Mi43IDcuOS03MCAxOS43LTcwIDMzIDAgMTIuNiAyNC44IDIzLjkgNjQgMzEuN3YuM2MwIDIzLjQgNi44IDQ1LjEgMTcuOCA2NEg1Ni4zYy0xMS41IDAtMTkuMiAxMS43LTE0LjcgMjIuM2wyNS44IDYwLjJDMjcuMyAzMjkuOCAwIDM3Mi43IDAgNDIyLjR2NDQuOEMwIDQ5MS45IDIwLjEgNTEyIDQ0LjggNTEyaDM1OC40YzI0LjcgMCA0NC44LTIwLjEgNDQuOC00NC44di00NC44YzAtNDguNC0yNS44LTkwLjQtNjQuMS0xMTQuMXpNMTc2IDQ4MGwtNDEuNi0xOTIgNDkuNiAzMiAyNCA0MC0zMiAxMjB6bTk2IDBsLTMyLTEyMCAyNC00MCA0OS42LTMyTDI3MiA0ODB6bTQxLjctMjk4LjVjLTMuOSAxMS45LTcgMjQuNi0xNi41IDMzLjQtMTAuMSA5LjMtNDggMjIuNC02NC0yNS0yLjgtOC40LTE1LjQtOC40LTE4LjMgMC0xNyA1MC4yLTU2IDMyLjQtNjQgMjUtOS41LTguOC0xMi43LTIxLjUtMTYuNS0zMy40LS44LTIuNS02LjMtNS43LTYuMy01Ljh2LTEwLjhjMjguMyAzLjYgNjEgNS44IDk2IDUuOHM2Ny43LTIuMSA5Ni01Ljh2MTAuOGMtLjEuMS01LjYgMy4yLTYuNCA1Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIyLjMgMjcxLjFsLTExNS4yLTQ1Yy00LjEtMS42LTEyLjYtMy43LTIyLjIgMGwtMTE1LjIgNDVjLTEwLjcgNC4yLTE3LjcgMTQtMTcuNyAyNC45IDAgMTExLjYgNjguNyAxODguOCAxMzIuOSAyMTMuOSA5LjYgMy43IDE4IDEuNiAyMi4yIDBDNTU4LjQgNDg5LjkgNjQwIDQyMC41IDY0MCAyOTZjMC0xMC45LTctMjAuNy0xNy43LTI0Ljl6TTQ5NiA0NjIuNFYyNzMuM2w5NS41IDM3LjNjLTUuNiA4Ny4xLTYwLjkgMTM1LjQtOTUuNSAxNTEuOHpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTk2IDQwYzAtMi41LjgtNC44IDEuMS03LjItMi41LS4xLTQuOS0uOC03LjUtLjhoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjNi44IDAgMTMuMy0xLjUgMTkuMi00LTU0LTQyLjktOTkuMi0xMTYuNy05OS4yLTIxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44IDQ1OC4xTDM2Mi4zIDI0OC4zQzQxMi4xIDIzMC43IDQ0OCAxODMuOCA0NDggMTI4IDQ0OCA1Ny4zIDM5MC43IDAgMzIwIDBjLTY3LjEgMC0xMjEuNSA1MS44LTEyNi45IDExNy40TDQ1LjUgMy40QzM4LjUtMiAyOC41LS44IDIzIDYuMkwzLjQgMzEuNGMtNS40IDctNC4yIDE3IDIuOCAyMi40bDU4OC40IDQ1NC43YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS40LTYuOCA0LjEtMTYuOS0yLjktMjIuM3pNOTYgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MC4yTDIwNy40IDI5MC4zQzE0NC4yIDMwMS4zIDk2IDM1NiA5NiA0MjIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzAuNiAzNjQuOWwtOTAuMy05MC4yYy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43aC03OS4zYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3OS4yYzAgMTcgNi43IDMzLjIgMTguNyA0NS4ybDkwLjMgOTAuMmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Mi41LTkyLjVjMTIuNi0xMi41IDEyLjYtMzIuNy4xLTQ1LjJ6bS0xODIuOC0yMWMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0YzAgMTMuMi0xMC43IDI0LTI0IDI0em0tMjIzLjgtODhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhDMzUyIDU3LjMgMjk0LjcgMCAyMjQgMFM5NiA1Ny4zIDk2IDEyOGMwIDcwLjYgNTcuMyAxMjcuOSAxMjggMTI3Ljl6bTEyNy44IDExMS4yVjI5NGMtMTIuMi0zLjYtMjQuOS02LjItMzguMi02LjJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODcuOSAwIDM0OC4xIDAgNDIyLjN2NDEuNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMTUuNSAwIDI5LjEtNy41IDM3LjktMTguOWwtNTgtNThjLTE4LjEtMTguMS0yOC4xLTQyLjItMjguMS02Ny45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em05NS44IDMyLjZMMjcyIDQ4MGwtMzItMTM2IDMyLTU2aC05NmwzMiA1Ni0zMiAxMzYtNDcuOC0xOTEuNEM1Ni45IDI5MiAwIDM1MC4zIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDEuNmMwLTcyLjEtNTYuOS0xMzAuNC0xMjguMi0xMzMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclRpbWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4OS42IDI0MGw0NS42LTQ1LjZjNi4zLTYuMyA2LjMtMTYuNSAwLTIyLjhsLTIyLjgtMjIuOGMtNi4zLTYuMy0xNi41LTYuMy0yMi44IDBMNTQ0IDE5NC40bC00NS42LTQ1LjZjLTYuMy02LjMtMTYuNS02LjMtMjIuOCAwbC0yMi44IDIyLjhjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDQ1LjYgNDUuNi00NS42IDQ1LjZjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDIyLjggMjIuOGM2LjMgNi4zIDE2LjUgNi4zIDIyLjggMGw0NS42LTQ1LjYgNDUuNiA0NS42YzYuMyA2LjMgMTYuNSA2LjMgMjIuOCAwbDIyLjgtMjIuOGM2LjMtNi4zIDYuMy0xNi41IDAtMjIuOEw1ODkuNiAyNDB6TTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2Vyc0NvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTAuNSAzNDEuM2MyLjYtMTQuMSAyLjYtMjguNSAwLTQyLjZsMjUuOC0xNC45YzMtMS43IDQuMy01LjIgMy4zLTguNS02LjctMjEuNi0xOC4yLTQxLjItMzMuMi01Ny40LTIuMy0yLjUtNi0zLjEtOS0xLjRsLTI1LjggMTQuOWMtMTAuOS05LjMtMjMuNC0xNi41LTM2LjktMjEuM3YtMjkuOGMwLTMuNC0yLjQtNi40LTUuNy03LjEtMjIuMy01LTQ1LTQuOC02Ni4yIDAtMy4zLjctNS43IDMuNy01LjcgNy4xdjI5LjhjLTEzLjUgNC44LTI2IDEyLTM2LjkgMjEuM2wtMjUuOC0xNC45Yy0yLjktMS43LTYuNy0xLjEtOSAxLjQtMTUgMTYuMi0yNi41IDM1LjgtMzMuMiA1Ny40LTEgMy4zLjQgNi44IDMuMyA4LjVsMjUuOCAxNC45Yy0yLjYgMTQuMS0yLjYgMjguNSAwIDQyLjZsLTI1LjggMTQuOWMtMyAxLjctNC4zIDUuMi0zLjMgOC41IDYuNyAyMS42IDE4LjIgNDEuMSAzMy4yIDU3LjQgMi4zIDIuNSA2IDMuMSA5IDEuNGwyNS44LTE0LjljMTAuOSA5LjMgMjMuNCAxNi41IDM2LjkgMjEuM3YyOS44YzAgMy40IDIuNCA2LjQgNS43IDcuMSAyMi4zIDUgNDUgNC44IDY2LjIgMCAzLjMtLjcgNS43LTMuNyA1LjctNy4xdi0yOS44YzEzLjUtNC44IDI2LTEyIDM2LjktMjEuM2wyNS44IDE0LjljMi45IDEuNyA2LjcgMS4xIDktMS40IDE1LTE2LjIgMjYuNS0zNS44IDMzLjItNTcuNCAxLTMuMy0uNC02LjgtMy4zLTguNWwtMjUuOC0xNC45ek00OTYgMzY4LjVjLTI2LjggMC00OC41LTIxLjgtNDguNS00OC41czIxLjgtNDguNSA0OC41LTQ4LjUgNDguNSAyMS44IDQ4LjUgNDguNS0yMS43IDQ4LjUtNDguNSA0OC41ek05NiAyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em0yMjQgMzJjMS45IDAgMy43LS41IDUuNi0uNiA4LjMtMjEuNyAyMC41LTQyLjEgMzYuMy01OS4yIDcuNC04IDE3LjktMTIuNiAyOC45LTEyLjYgNi45IDAgMTMuNyAxLjggMTkuNiA1LjNsNy45IDQuNmMuOC0uNSAxLjYtLjkgMi40LTEuNCA3LTE0LjYgMTEuMi0zMC44IDExLjItNDggMC02MS45LTUwLjEtMTEyLTExMi0xMTJTMjA4IDgyLjEgMjA4IDE0NGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnptMTA1LjIgMTk0LjVjLTIuMy0xLjItNC42LTIuNi02LjgtMy45LTguMiA0LjgtMTUuMyA5LjgtMjcuNSA5LjgtMTAuOSAwLTIxLjQtNC42LTI4LjktMTIuNi0xOC4zLTE5LjgtMzIuMy00My45LTQwLjItNjkuNi0xMC43LTM0LjUgMjQuOS00OS43IDI1LjgtNTAuMy0uMS0yLjYtLjEtNS4yIDAtNy44bC03LjktNC42Yy0zLjgtMi4yLTctNS05LjgtOC4xLTMuMy4yLTYuNS42LTkuOC42LTI0LjYgMC00Ny42LTYtNjguNS0xNmgtOC4zQzE3OS42IDI4OCAxMjggMzM5LjYgMTI4IDQwMy4yVjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyNTUuNGMtMy43LTYtNi4yLTEyLjgtNi4yLTIwLjN2LTkuMnpNMTczLjEgMjc0LjZDMTYxLjUgMjYzLjEgMTQ1LjYgMjU2IDEyOCAyNTZINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY1LjljNi4zLTQ3LjQgMzQuOS04Ny4zIDc1LjItMTA5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMyLjY1LDIxMi4zMiwzNi4yMSwxMzcuNzhBNjMuNCw2My40LDAsMCwwLDMyLDE2MGE2My44NCw2My44NCwwLDAsMCwxMDAuNjUsNTIuMzJabTQwLjQ0LDYyLjI4QTYzLjc5LDYzLjc5LDAsMCwwLDEyOCwyNTZINjRBNjQuMDYsNjQuMDYsMCwwLDAsMCwzMjB2MzJhMzIsMzIsMCwwLDAsMzIsMzJIOTcuOTFBMTQ2LjYyLDE0Ni42MiwwLDAsMSwxNzMuMDksMjc0LjZaTTU0NCwyMjRhNjQsNjQsMCwxLDAtNjQtNjRBNjQuMDYsNjQuMDYsMCwwLDAsNTQ0LDIyNFpNNTAwLjU2LDM1NS4xMWExMTQuMjQsMTE0LjI0LDAsMCwwLTg0LjQ3LTY1LjI4TDM2MSwyNDcuMjNjNDEuNDYtMTYuMyw3MS01NS45Miw3MS0xMDMuMjNBMTExLjkzLDExMS45MywwLDAsMCwzMjAsMzJjLTU3LjE0LDAtMTAzLjY5LDQyLjgzLTExMC42LDk4LjA4TDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTEyOCw0MDMuMjFWNDMyYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQ2NGE0Ny40NSw0Ny40NSwwLDAsMCwxMi41Ny0xLjg3TDIzMiwyODkuMTNDMTczLjc0LDI5NC44MywxMjgsMzQzLjQyLDEyOCw0MDMuMjFaTTU3NiwyNTZINTEyYTYzLjc5LDYzLjc5LDAsMCwwLTQ1LjA5LDE4LjZBMTQ2LjI5LDE0Ni4yOSwwLDAsMSw1NDIsMzg0aDY2YTMyLDMyLDAsMCwwLDMyLTMyVjMyMEE2NC4wNiw2NC4wNiwwLDAsMCw1NzYsMjU2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em00NDggMGMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bTMyIDMyaC02NGMtMTcuNiAwLTMzLjUgNy4xLTQ1LjEgMTguNiA0MC4zIDIyLjEgNjguOSA2MiA3NS4xIDEwOS40aDY2YzE3LjcgMCAzMi0xNC4zIDMyLTMydi0zMmMwLTM1LjMtMjguNy02NC02NC02NHptLTI1NiAwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyUzM4MS45IDMyIDMyMCAzMiAyMDggODIuMSAyMDggMTQ0czUwLjEgMTEyIDExMiAxMTJ6bTc2LjggMzJoLTguM2MtMjAuOCAxMC00My45IDE2LTY4LjUgMTZzLTQ3LjYtNi02OC41LTE2aC04LjNDMTc5LjYgMjg4IDEyOCAzMzkuNiAxMjggNDAzLjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjguOGMwLTYzLjYtNTEuNi0xMTUuMi0xMTUuMi0xMTUuMnptLTIyMy43LTEzLjRDMTYxLjUgMjYzLjEgMTQ1LjYgMjU2IDEyOCAyNTZINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY1LjljNi4zLTQ3LjQgMzQuOS04Ny4zIDc1LjItMTA5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVV0ZW5zaWxTcG9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAuMSAzMS45Yy01NS01NS4xLTE2NC45LTM0LjUtMjI3LjggMjguNS00OS4zIDQ5LjMtNTUuMSAxMTAtMjguOCAxNjAuNEw5IDQxMy4yYy0xMS42IDEwLjUtMTIuMSAyOC41LTEgMzkuNUw1OS4zIDUwNGMxMSAxMSAyOS4xIDEwLjUgMzkuNS0xLjFsMTkyLjQtMjE0LjRjNTAuNCAyNi4zIDExMS4xIDIwLjUgMTYwLjQtMjguOCA2My02Mi45IDgzLjYtMTcyLjggMjguNS0yMjcuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXRlbnNpbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA3LjkgMTUuMmMuOCA0LjcgMTYuMSA5NC41IDE2LjEgMTI4LjggMCA1Mi4zLTI3LjggODkuNi02OC45IDEwNC42TDE2OCA0ODYuN2MuNyAxMy43LTEwLjIgMjUuMy0yNCAyNS4zSDgwYy0xMy43IDAtMjQuNy0xMS41LTI0LTI1LjNsMTIuOS0yMzguMUMyNy43IDIzMy42IDAgMTk2LjIgMCAxNDQgMCAxMDkuNiAxNS4zIDE5LjkgMTYuMSAxNS4yIDE5LjMtNS4xIDYxLjQtNS40IDY0IDE2LjN2MTQxLjJjMS4zIDMuNCAxNS4xIDMuMiAxNiAwIDEuNC0yNS4zIDcuOS0xMzkuMiA4LTE0MS44IDMuMy0yMC44IDQ0LjctMjAuOCA0Ny45IDAgLjIgMi43IDYuNiAxMTYuNSA4IDE0MS44LjkgMy4yIDE0LjggMy40IDE2IDBWMTYuM2MyLjYtMjEuNiA0NC44LTIxLjQgNDgtMS4xem0xMTkuMiAyODUuN2wtMTUgMTg1LjFjLTEuMiAxNCA5LjkgMjYgMjMuOSAyNmg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyNGMwLTEzLjItMTAuNy0yNC0yNC0yNC04Mi41IDAtMjIxLjQgMTc4LjUtNjQuOSAzMDAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVjdG9yU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAxMjhWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJIMTYwYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnYxOTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyaDE5MmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJWMTYwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ6bS05Ni02NGgzMnYzMmgtMzJWNjR6TTY0IDY0aDMydjMySDY0VjY0em0zMiAzODRINjR2LTMyaDMydjMyem0zNTIgMGgtMzJ2LTMyaDMydjMyem0tMzItOTZoLTMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMySDE2MHYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkg5NlYxNjBoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMnYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlbnVzRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCA5Ni41IDAgMTc2YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFYzNjhINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0yMjQgMGMwLTQ0LjEgMzUuOS04MCA4MC04MHM4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MHptMzM2IDE0MC40VjM2OGgzNmM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC0zNnYzNmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTM2aC0zNmMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoMzZ2LTUxLjZjLTIxLjItNC44LTQwLjYtMTQuMy01Ny4yLTI3LjMgMTQtMTYuNyAyNS0zNiAzMi4xLTU3LjEgMTQuNSAxNC44IDM0LjcgMjQgNTcuMSAyNCA0NC4xIDAgODAtMzUuOSA4MC04MHMtMzUuOS04MC04MC04MGMtMjIuMyAwLTQyLjYgOS4yLTU3LjEgMjQtNy4xLTIxLjEtMTgtNDAuNC0zMi4xLTU3LjFDMzAzLjQgNDMuNiAzMzQuMyAzMiAzNjggMzJjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDQgMCA2OC41LTQ3LjkgMTI1LjktMTEyIDE0MC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZW51c01hcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY0IDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktNDguNyA0OC43QzQyMi41IDcyLjEgMzk2LjIgNjQgMzY4IDY0Yy0zMy43IDAtNjQuNiAxMS42LTg5LjIgMzAuOSAxNCAxNi43IDI1IDM2IDMyLjEgNTcuMSAxNC41LTE0LjggMzQuNy0yNCA1Ny4xLTI0IDQ0LjEgMCA4MCAzNS45IDgwIDgwcy0zNS45IDgwLTgwIDgwYy0yMi4zIDAtNDIuNi05LjItNTcuMS0yNC03LjEgMjEuMS0xOCA0MC40LTMyLjEgNTcuMSAyNC41IDE5LjQgNTUuNSAzMC45IDg5LjIgMzAuOSA3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDQ4LjctNDguNyAxNi45IDE2LjljMi40IDIuNCA1LjQgMy41IDguNCAzLjUgNi4yIDAgMTIuMS00LjggMTIuMS0xMlYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCA2NEM2NC41IDY0IDAgMTI4LjUgMCAyMDhjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwMEg3NmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgzNnYzNmMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi0zNmgzNmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMzZ2LTUxLjZjNjQuMS0xNC42IDExMi03MS45IDExMi0xNDAuNCAwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NHptMCAyMjRjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTc2YzAtNzkuNS02NC41LTE0NC0xNDQtMTQ0UzAgOTYuNSAwIDE3NmMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWMzY4SDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMjI0IDBjMC00NC4xIDM1LjktODAgODAtODBzODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlc3RQYXRjaGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNy4yNTIsMjM5Ljg3NywzODQsMTYwVjMyQTMyLDMyLDAsMCwwLDM1MiwwSDMyMGEyMy45ODIsMjMuOTgyLDAsMCwwLTEzLjMxMiw0LjAzMWwtMjUsMTYuNjcyYTEwMy43OTQsMTAzLjc5NCwwLDAsMS0xMTUuMzc2LDBsLTI1LTE2LjY3MkEyMy45ODIsMjMuOTgyLDAsMCwwLDEyOCwwSDk2QTMyLDMyLDAsMCwwLDY0LDMyVjE2MEwxMC43NDgsMjM5Ljg3N0E2NCw2NCwwLDAsMCwwLDI3NS4zNzdWNDgwYTMyLDMyLDAsMCwwLDMyLDMySDE5MlYyODhhMzEuOTg3LDMxLjk4NywwLDAsMSwxLjY0My0xMC4xMTlMMjA3LjEzNSwyMzcuNCwxNTAuMTg4LDY2LjU2MUExNTEuNTc5LDE1MS41NzksMCwwLDAsMjI0LDg2LjIzNGExNTEuNTY1LDE1MS41NjUsMCwwLDAsNzMuODExLTE5LjY2OEwyMjQsMjg4VjUxMkg0MTZhMzIsMzIsMCwwLDAsMzItMzJWMjc1LjM3N0E2NCw2NCwwLDAsMCw0MzcuMjUyLDIzOS44NzdaTTYzLjUsMjcyLjQ4NGExMi4wMSwxMi4wMSwwLDAsMSwxNy0xNi45NjhsMTUuNSwxNS41LDE1LjUtMTUuNWExMi4wMSwxMi4wMSwwLDAsMSwxNywxNi45NjhMMTEyLjk4NCwyODgsMTI4LjUsMzAzLjUxNmExMi4wMSwxMi4wMSwwLDAsMS0xNywxNi45NjhMOTYsMzA0Ljk4NGwtMTUuNSwxNS41YTEyLjAxLDEyLjAxLDAsMCwxLTE3LTE2Ljk2OEw3OS4wMTYsMjg4Wk05Niw0NTZhNDAsNDAsMCwxLDEsNDAtNDBBNDAsNDAsMCwwLDEsOTYsNDU2Wk0zNTkuMjI3LDMzNS43ODUsMzEwLjcsMzM2YTYuNjcxLDYuNjcxLDAsMCwxLTYuNy02LjdsLjIxNS00OC41NzRBMjQuOTg3LDI0Ljk4NywwLDAsMSwzMzEuNDMsMjU2LjFjMTIuNzg5LDEuMTYyLDIyLjEyOSwxMi42MTksMjIuMDU2LDI1LjQxOWwtLjAzNyw1LjA1Nyw1LjA1MS0uMDM3YzEyLjgyNi0uMDM1LDI0LjIzNiw5LjI3NSwyNS40LDIyLjA3NkEyNC45NDgsMjQuOTQ4LDAsMCwxLDM1OS4yMjcsMzM1Ljc4NVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzcuMjUyLDIzOS44NzcsMzg0LDE2MFYzMkEzMiwzMiwwLDAsMCwzNTIsMEgzMjBhMjQuMDIxLDI0LjAyMSwwLDAsMC0xMy4zMTIsNC4wMzFsLTI1LDE2LjY3MmExMDMuNzk0LDEwMy43OTQsMCwwLDEtMTE1LjM3NiwwbC0yNS0xNi42NzJBMjQuMDIxLDI0LjAyMSwwLDAsMCwxMjgsMEg5NkEzMiwzMiwwLDAsMCw2NCwzMlYxNjBMMTAuNzQ4LDIzOS44NzdBNjQsNjQsMCwwLDAsMCwyNzUuMzc3VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkgxOTJWMjg4YTMxLjk4NywzMS45ODcsMCwwLDEsMS42NDMtMTAuMTE5TDIwNy4xMzUsMjM3LjQsMTUwLjE4OCw2Ni41NjRBMTUxLjUxOCwxNTEuNTE4LDAsMCwwLDIyNCw4Ni4yMzRhMTUxLjU1LDE1MS41NSwwLDAsMCw3My44MTItMTkuNjcyTDIyNCwyODhWNTEySDQxNmEzMiwzMiwwLDAsMCwzMi0zMlYyNzUuMzc3QTY0LDY0LDAsMCwwLDQzNy4yNTIsMjM5Ljg3N1pNMTMxLjMxMiwzNzEuMzEybC00OCw0OGExNiwxNiwwLDAsMS0yMi42MjQtMjIuNjI0bDQ4LTQ4YTE2LDE2LDAsMCwxLDIyLjYyNCwyMi42MjRabTI1Niw0OGExNS45OTIsMTUuOTkyLDAsMCwxLTIyLjYyNCwwbC00OC00OGExNiwxNiwwLDAsMSwyMi42MjQtMjIuNjI0bDQ4LDQ4QTE1Ljk5MywxNS45OTMsMCwwLDEsMzg3LjMxMiw0MTkuMzEyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Ny43IDE4Ni4xTDMwOS41IDE4LjNjLTMuMS0zLjEtOC4yLTMuMS0xMS4zIDBsLTM0IDMzLjljLTMuMSAzLjEtMy4xIDguMiAwIDExLjNsMTEuMiAxMS4xTDMzIDMxNi41Yy0zOC44IDM4LjctNDUuMSAxMDItOS40IDE0My41IDIwLjYgMjQgNDkuNSAzNiA3OC40IDM1LjkgMjYuNCAwIDUyLjgtMTAgNzIuOS0zMC4xbDI0Ni4zLTI0NS43IDExLjIgMTEuMWMzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDM0LTMzLjljMy4xLTMgMy4xLTguMSAwLTExLjJ6TTMxOCAyNTZIMTYxbDE0OC0xNDcuNyA3OC41IDc4LjNMMzE4IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzIgNjRoMjR2MjQwYzAgNDQuMSAzNS45IDgwIDgwIDgwczgwLTM1LjkgODAtODBWNjRoMjRjNC40IDAgOC0zLjYgOC04VjhjMC00LjQtMy42LTgtOC04SDcyYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4em03MiAwaDY0djk2aC02NFY2NHptNDgwIDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2MDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTM2MCA2NGgyNHYyNDBjMCA0NC4xIDM1LjkgODAgODAgODBzODAtMzUuOSA4MC04MFY2NGgyNGM0LjQgMCA4LTMuNiA4LThWOGMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4em03MiAwaDY0djk2aC02NFY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlkZW9TbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuOCA0NTguMWwtNTUtNDIuNWMxNS40LTEuNCAyOS4yLTEzLjcgMjkuMi0zMS4xdi0yNTdjMC0yNS41LTI5LjEtNDAuNC01MC40LTI1LjhMNDQ4IDE3Ny4zdjEzNy4ybC0zMi0yNC43di0xNzhjMC0yNi40LTIxLjQtNDcuOC00Ny44LTQ3LjhIMTIzLjlMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRMNDIuNyA4MiA0MTYgMzcwLjZsMTc4LjUgMTM4YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS41LTYuOSA0LjItMTctMi44LTIyLjR6TTMyIDQwMC4yYzAgMjYuNCAyMS40IDQ3LjggNDcuOCA0Ny44aDI4OC40YzExLjIgMCAyMS40LTQgMjkuNi0xMC41TDMyIDE1NC43djI0NS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYuMiA2NEg0Ny44QzIxLjQgNjQgMCA4NS40IDAgMTExLjh2Mjg4LjRDMCA0MjYuNiAyMS40IDQ0OCA0Ny44IDQ0OGgyODguNGMyNi40IDAgNDcuOC0yMS40IDQ3LjgtNDcuOFYxMTEuOGMwLTI2LjQtMjEuNC00Ny44LTQ3LjgtNDcuOHptMTg5LjQgMzcuN0w0MTYgMTc3LjN2MTU3LjRsMTA5LjYgNzUuNWMyMS4yIDE0LjYgNTAuNC0uMyA1MC40LTI1LjhWMTI3LjVjMC0yNS40LTI5LjEtNDAuNC01MC40LTI1Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpaGFyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzIuODggNDAwLjcxTDU0NCAzNTJ2LTY0bDU1LjE2LTE3LjY5YzExLjc5LTUuOSAxMS43OS0yMi43MiAwLTI4LjYyTDQ4MCAxOTJ2LTY0bDI3LjMxLTE2LjNjNy43Mi03LjcyIDUuNjEtMjAuNzQtNC4xNi0yNS42MkwzMjAgMCAxMzYuODUgODYuMDdjLTkuNzcgNC44OC0xMS44OCAxNy45LTQuMTYgMjUuNjJMMTYwIDEyOHY2NEw0MC44NCAyNDEuNjljLTExLjc5IDUuOS0xMS43OSAyMi43MiAwIDI4LjYyTDk2IDI4OHY2NEw3LjEyIDQwMC43MWMtNS40MiAzLjYyLTcuNyA5LjYzLTcgMTUuMjkuNjIgNS4wMSAzLjU3IDkuNzUgOC43MiAxMi4zM0w2NCA0NDh2NDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTQ4aDE2MHY0OGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNDhoMTYwdjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di00OGw1NS4xNS0xOS42N2M1LjE2LTIuNTggOC4xLTcuMzIgOC43Mi0xMi4zMy43MS01LjY3LTEuNTctMTEuNjgtNi45OS0xNS4yOXpNMjI0IDEyOGgxOTJ2NjRIMjI0di02NHptLTY0IDIyNHYtNjRoMzIwdjY0SDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXNTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQsMjI3LjZIOTIuNEM3Ni43LDIyNy42LDY0LDI0MC4zLDY0LDI1NnMxMi43LDI4LjQsMjguNCwyOC40SDExNGM1MC43LDAsNzYuMSw2MS4zLDQwLjIsOTcuMUwxMzksMzk2LjggYy0xMS41LDEwLjctMTIuMiwyOC43LTEuNiw0MC4yczI4LjcsMTIuMiw0MC4yLDEuNmMwLjUtMC41LDEuMS0xLDEuNi0xLjZsMTUuMi0xNS4yYzM1LjgtMzUuOCw5Ny4xLTEwLjUsOTcuMSw0MC4ydjIxLjUgYzAsMTUuNywxMi44LDI4LjQsMjguNSwyOC40YzE1LjcsMCwyOC40LTEyLjcsMjguNC0yOC40VjQ2MmMwLTI2LjYsMTctNDUuOSwzOC4yLTUzLjRsLTI0NC41LTE4OSBDMTMzLjcsMjI0LjcsMTIzLjksMjI3LjUsMTE0LDIyNy42eiBNNjE3LDUwNS44bDE5LjYtMjUuM2M1LjQtNyw0LjItMTctMi44LTIyLjVMNDcwLjYsMzMyYzQuMi0yNS40LDI0LjktNDcuNSw1NS40LTQ3LjVoMjEuNSBjMTUuNywwLDI4LjQtMTIuNywyOC40LTI4LjRzLTEyLjctMjguNC0yOC40LTI4LjRINTI2Yy01MC43LDAtNzYuMS02MS4zLTQwLjItOTcuMWwxNS4yLTE1LjNjMTAuNy0xMS41LDEwLTI5LjUtMS42LTQwLjIgYy0xMC45LTEwLjEtMjcuNy0xMC4xLTM4LjYsMGwtMTUuMiwxNS4yYy0zNS44LDM1LjgtOTcuMSwxMC41LTk3LjEtNDAuMlYyOC41QzM0OC40LDEyLjcsMzM1LjcsMCwzMjAsMCBjLTE1LjcsMC0yOC40LDEyLjctMjguNCwyOC40VjUwYzAsNTAuNy02MS4zLDc2LjEtOTcuMSw0MC4yTDE3OS4yLDc1Yy0xMS4xLTExLjEtMjkuNC0xMC42LTQwLjUsMC41TDQ1LjUsMy40IGMtNy01LjQtMTctNC4yLTIyLjUsMi44TDMuNCwzMS41Yy01LjQsNy00LjIsMTcsMi44LDIyLjVsNTg4LjQsNDU0LjdDNjAxLjUsNTE0LjEsNjExLjYsNTEyLjgsNjE3LDUwNS44eiBNMzM1LjQsMjI3LjVsLTYyLjktNDguNiBjNC45LTEuOCwxMC4yLTIuOCwxNS40LTIuOWMyNi41LDAsNDgsMjEuNSw0OCw0OEMzMzYsMjI1LjIsMzM1LjUsMjI2LjMsMzM1LjQsMjI3LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4My41NSwyMjcuNTVINDYyYy01MC42OCwwLTc2LjA3LTYxLjI3LTQwLjIzLTk3LjExTDQzNywxMTUuMTlBMjguNDQsMjguNDQsMCwwLDAsMzk2LjgsNzVMMzgxLjU2LDkwLjIyYy0zNS44NCwzNS44My05Ny4xMSwxMC40NS05Ny4xMS00MC4yM1YyOC40NGEyOC40NSwyOC40NSwwLDAsMC01Ni45LDBWNTBjMCw1MC42OC02MS4yNyw3Ni4wNi05Ny4xMSw0MC4yM0wxMTUuMiw3NUEyOC40NCwyOC40NCwwLDAsMCw3NSwxMTUuMTlsMTUuMjUsMTUuMjVjMzUuODQsMzUuODQsMTAuNDUsOTcuMTEtNDAuMjMsOTcuMTFIMjguNDVhMjguNDUsMjguNDUsMCwxLDAsMCw1Ni44OUg1MGM1MC42OCwwLDc2LjA3LDYxLjI4LDQwLjIzLDk3LjEyTDc1LDM5Ni44QTI4LjQ1LDI4LjQ1LDAsMCwwLDExNS4yLDQzN2wxNS4yNC0xNS4yNWMzNS44NC0zNS44NCw5Ny4xMS0xMC40NSw5Ny4xMSw0MC4yM3YyMS41NGEyOC40NSwyOC40NSwwLDAsMCw1Ni45LDBWNDYyYzAtNTAuNjgsNjEuMjctNzYuMDcsOTcuMTEtNDAuMjNMMzk2LjgsNDM3QTI4LjQ1LDI4LjQ1LDAsMCwwLDQzNywzOTYuOGwtMTUuMjUtMTUuMjRjLTM1Ljg0LTM1Ljg0LTEwLjQ1LTk3LjEyLDQwLjIzLTk3LjEyaDIxLjU0YTI4LjQ1LDI4LjQ1LDAsMSwwLDAtNTYuODlaTTIyNCwyNzJhNDgsNDgsMCwxLDEsNDgtNDhBNDgsNDgsMCwwLDEsMjI0LDI3MlptODAsNTZhMjQsMjQsMCwxLDEsMjQtMjRBMjQsMjQsMCwwLDEsMzA0LDMyOFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQsMzUySDYxMS44OGMtMjguNTEsMC00Mi43OS0zNC40Ny0yMi42My01NC42M2w4LjU4LTguNTdhMTYsMTYsMCwxLDAtMjIuNjMtMjIuNjNsLTguNTcsOC41OEM1NDYuNDcsMjk0LjkxLDUxMiwyODAuNjMsNTEyLDI1Mi4xMlYyNDBhMTYsMTYsMCwwLDAtMzIsMHYxMi4xMmMwLDI4LjUxLTM0LjQ3LDQyLjc5LTU0LjYzLDIyLjYzbC04LjU3LTguNThhMTYsMTYsMCwwLDAtMjIuNjMsMjIuNjNsOC41OCw4LjU3YzIwLjE2LDIwLjE2LDUuODgsNTQuNjMtMjIuNjMsNTQuNjNIMzY4YTE2LDE2LDAsMCwwLDAsMzJoMTIuMTJjMjguNTEsMCw0Mi43OSwzNC40NywyMi42Myw1NC42M2wtOC41OCw4LjU3YTE2LDE2LDAsMSwwLDIyLjYzLDIyLjYzbDguNTctOC41OGMyMC4xNi0yMC4xNiw1NC42My01Ljg4LDU0LjYzLDIyLjYzVjQ5NmExNiwxNiwwLDAsMCwzMiwwVjQ4My44OGMwLTI4LjUxLDM0LjQ3LTQyLjc5LDU0LjYzLTIyLjYzbDguNTcsOC41OGExNiwxNiwwLDEsMCwyMi42My0yMi42M2wtOC41OC04LjU3QzU2OS4wOSw0MTguNDcsNTgzLjM3LDM4NCw2MTEuODgsMzg0SDYyNGExNiwxNiwwLDAsMCwwLTMyWk00ODAsMzg0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDQ4MCwzODRaTTM0Ni41MSwyMTMuMzNoMTYuMTZhMjEuMzMsMjEuMzMsMCwwLDAsMC00Mi42NkgzNDYuNTFjLTM4LDAtNTcuMDUtNDYtMzAuMTctNzIuODRsMTEuNDMtMTEuNDRBMjEuMzMsMjEuMzMsMCwwLDAsMjk3LjYsNTYuMjNMMjg2LjE3LDY3LjY2Yy0yNi44OCwyNi44OC03Mi44NCw3Ljg1LTcyLjg0LTMwLjE3VjIxLjMzYTIxLjMzLDIxLjMzLDAsMCwwLTQyLjY2LDBWMzcuNDljMCwzOC00Niw1Ny4wNS03Mi44NCwzMC4xN0w4Ni40LDU2LjIzQTIxLjMzLDIxLjMzLDAsMCwwLDU2LjIzLDg2LjM5TDY3LjY2LDk3LjgzYzI2Ljg4LDI2Ljg4LDcuODUsNzIuODQtMzAuMTcsNzIuODRIMjEuMzNhMjEuMzMsMjEuMzMsMCwwLDAsMCw0Mi42NkgzNy40OWMzOCwwLDU3LjA1LDQ2LDMwLjE3LDcyLjg0TDU2LjIzLDI5Ny42QTIxLjMzLDIxLjMzLDAsMSwwLDg2LjQsMzI3Ljc3bDExLjQzLTExLjQzYzI2Ljg4LTI2Ljg4LDcyLjg0LTcuODUsNzIuODQsMzAuMTd2MTYuMTZhMjEuMzMsMjEuMzMsMCwwLDAsNDIuNjYsMFYzNDYuNTFjMC0zOCw0Ni01Ny4wNSw3Mi44NC0zMC4xN2wxMS40MywxMS40M2EyMS4zMywyMS4zMywwLDAsMCwzMC4xNy0zMC4xN2wtMTEuNDMtMTEuNDNDMjg5LjQ2LDI1OS4yOSwzMDguNDksMjEzLjMzLDM0Ni41MSwyMTMuMzNaTTE2MCwxOTJhMzIsMzIsMCwxLDEsMzItMzJBMzIsMzIsMCwwLDEsMTYwLDE5MlptODAsMzJhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMjQwLDIyNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9pY2VtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAxMjhhMTQ0IDE0NCAwIDAgMC0xMTkuNzQgMjI0SDI2My43NEExNDQgMTQ0IDAgMSAwIDE0NCA0MTZoMzUyYTE0NCAxNDQgMCAwIDAgMC0yODh6TTY0IDI3MmE4MCA4MCAwIDEgMSA4MCA4MCA4MCA4MCAwIDAgMS04MC04MHptNDMyIDgwYTgwIDgwIDAgMSAxIDgwLTgwIDgwIDgwIDAgMCAxLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2xsZXliYWxsQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzEuMzkgMjQzLjQ4YTI4NS41NiAyODUuNTYgMCAwIDAtMjIuNy0xMDUuN2MtOTAuOCA0Mi40LTE1Ny41IDEyMi40LTE4MC4zIDIxNi44YTI0OSAyNDkgMCAwIDAgNTYuOSA4MS4xIDMzMy44NyAzMzMuODcgMCAwIDEgMTQ2LjEtMTkyLjJ6bS0zNi45LTEzNC40YTI4NC4yMyAyODQuMjMgMCAwIDAtNTcuNC03MC43Yy05MSA0OS44LTE0NC44IDE1Mi45LTEyNSAyNjIuMiAzMy40LTgzLjEgOTguNC0xNTIgMTgyLjQtMTkxLjV6bTE4Ny42IDE2NS4xYzguNi05OS44LTI3LjMtMTk3LjUtOTcuNS0yNjQuNC0xNC43LTEuNy01MS42LTUuNS05OC45IDguNUEzMzMuODcgMzMzLjg3IDAgMCAxIDI3OS4xOSAyNDFhMjg1IDI4NSAwIDAgMCAxMDIuOSAzMy4xOHptLTEyNC43IDkuNWEyODYuMzMgMjg2LjMzIDAgMCAwLTgwLjIgNzIuNmM4MiA1Ny4zIDE4NC41IDc1LjEgMjc3LjUgNDcuOGEyNDcuMTUgMjQ3LjE1IDAgMCAwIDQyLjItODkuOSAzMzYuMSAzMzYuMSAwIDAgMS04MC45IDEwLjRjLTU0LjYtLjEtMTA4LjktMTQuMS0xNTguNi00MC45em0tOTguMyA5OS43Yy0xNS4yIDI2LTI1LjcgNTQuNC0zMi4xIDg0LjJhMjQ3LjA3IDI0Ny4wNyAwIDAgMCAyODktMjIuMWMtMTEyLjkgMTYuMS0yMDMuMy0yNC44LTI1Ni45LTYyLjF6bTE4MC4zLTM2MC42YzU1LjMgNzAuNCA4Mi41IDE2MS4yIDc0LjYgMjUzLjZhMjg2LjU5IDI4Ni41OSAwIDAgMCA4OS43LTE0LjJjMC0yIC4zLTQgLjMtNiAwLTEwNy44LTY4LjctMTk5LjEtMTY0LjYtMjMzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbHVtZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1LjAzIDcyLjA0TDEyNi4wNiAxNjFIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MTQ0YzAgMTMuMjUgMTAuNzQgMjQgMjQgMjRoMTAyLjA2bDg4Ljk3IDg4Ljk1YzE1LjAzIDE1LjAzIDQwLjk3IDQuNDcgNDAuOTctMTYuOTdWODkuMDJjMC0yMS40Ny0yNS45Ni0zMS45OC00MC45Ny0xNi45OHptMTIzLjIgMTA4LjA4Yy0xMS41OC02LjMzLTI2LjE5LTIuMTYtMzIuNjEgOS40NS02LjM5IDExLjYxLTIuMTYgMjYuMiA5LjQ1IDMyLjYxQzMyNy45OCAyMjkuMjggMzM2IDI0Mi42MiAzMzYgMjU3YzAgMTQuMzgtOC4wMiAyNy43Mi0yMC45MiAzNC44MS0xMS42MSA2LjQxLTE1Ljg0IDIxLTkuNDUgMzIuNjEgNi40MyAxMS42NiAyMS4wNSAxNS44IDMyLjYxIDkuNDUgMjguMjMtMTUuNTUgNDUuNzctNDUgNDUuNzctNzYuODhzLTE3LjU0LTYxLjMyLTQ1Ljc4LTc2Ljg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVNdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNS4wMyA3MS4wNUwxMjYuMDYgMTYwSDI0Yy0xMy4yNiAwLTI0IDEwLjc0LTI0IDI0djE0NGMwIDEzLjI1IDEwLjc0IDI0IDI0IDI0aDEwMi4wNmw4OC45NyA4OC45NWMxNS4wMyAxNS4wMyA0MC45NyA0LjQ3IDQwLjk3LTE2Ljk3Vjg4LjAyYzAtMjEuNDYtMjUuOTYtMzEuOTgtNDAuOTctMTYuOTd6TTQ2MS42NCAyNTZsNDUuNjQtNDUuNjRjNi4zLTYuMyA2LjMtMTYuNTIgMC0yMi44MmwtMjIuODItMjIuODJjLTYuMy02LjMtMTYuNTItNi4zLTIyLjgyIDBMNDE2IDIxMC4zNmwtNDUuNjQtNDUuNjRjLTYuMy02LjMtMTYuNTItNi4zLTIyLjgyIDBsLTIyLjgyIDIyLjgyYy02LjMgNi4zLTYuMyAxNi41MiAwIDIyLjgyTDM3MC4zNiAyNTZsLTQ1LjYzIDQ1LjYzYy02LjMgNi4zLTYuMyAxNi41MiAwIDIyLjgybDIyLjgyIDIyLjgyYzYuMyA2LjMgMTYuNTIgNi4zIDIyLjgyIDBMNDE2IDMwMS42NGw0NS42NCA0NS42NGM2LjMgNi4zIDE2LjUyIDYuMyAyMi44MiAwbDIyLjgyLTIyLjgyYzYuMy02LjMgNi4zLTE2LjUyIDAtMjIuODJMNDYxLjY0IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sdW1lT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNSA3MWwtODkgODlIMjRhMjQgMjQgMCAwIDAtMjQgMjR2MTQ0YTI0IDI0IDAgMCAwIDI0IDI0aDEwMi4wNkwyMTUgNDQxYzE1IDE1IDQxIDQuNDcgNDEtMTdWODhjMC0yMS40Ny0yNi0zMi00MS0xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sdW1lVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1LjAzIDcxLjA1TDEyNi4wNiAxNjBIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MTQ0YzAgMTMuMjUgMTAuNzQgMjQgMjQgMjRoMTAyLjA2bDg4Ljk3IDg4Ljk1YzE1LjAzIDE1LjAzIDQwLjk3IDQuNDcgNDAuOTctMTYuOTdWODguMDJjMC0yMS40Ni0yNS45Ni0zMS45OC00MC45Ny0xNi45N3ptMjMzLjMyLTUxLjA4Yy0xMS4xNy03LjMzLTI2LjE4LTQuMjQtMzMuNTEgNi45NS03LjM0IDExLjE3LTQuMjIgMjYuMTggNi45NSAzMy41MSA2Ni4yNyA0My40OSAxMDUuODIgMTE2LjYgMTA1LjgyIDE5NS41OCAwIDc4Ljk4LTM5LjU1IDE1Mi4wOS0xMDUuODIgMTk1LjU4LTExLjE3IDcuMzItMTQuMjkgMjIuMzQtNi45NSAzMy41IDcuMDQgMTAuNzEgMjEuOTMgMTQuNTYgMzMuNTEgNi45NUM1MjguMjcgNDM5LjU4IDU3NiAzNTEuMzMgNTc2IDI1NlM1MjguMjcgNzIuNDMgNDQ4LjM1IDE5Ljk3ek00ODAgMjU2YzAtNjMuNTMtMzIuMDYtMTIxLjk0LTg1Ljc3LTE1Ni4yNC0xMS4xOS03LjE0LTI2LjAzLTMuODItMzMuMTIgNy40NnMtMy43OCAyNi4yMSA3LjQxIDMzLjM2QzQwOC4yNyAxNjUuOTcgNDMyIDIwOS4xMSA0MzIgMjU2cy0yMy43MyA5MC4wMy02My40OCAxMTUuNDJjLTExLjE5IDcuMTQtMTQuNSAyMi4wNy03LjQxIDMzLjM2IDYuNTEgMTAuMzYgMjEuMTIgMTUuMTQgMzMuMTIgNy40NkM0NDcuOTQgMzc3Ljk0IDQ4MCAzMTkuNTQgNDgwIDI1NnptLTE0MS43Ny03Ni44N2MtMTEuNTgtNi4zMy0yNi4xOS0yLjE2LTMyLjYxIDkuNDUtNi4zOSAxMS42MS0yLjE2IDI2LjIgOS40NSAzMi42MUMzMjcuOTggMjI4LjI4IDMzNiAyNDEuNjMgMzM2IDI1NmMwIDE0LjM4LTguMDIgMjcuNzItMjAuOTIgMzQuODEtMTEuNjEgNi40MS0xNS44NCAyMS05LjQ1IDMyLjYxIDYuNDMgMTEuNjYgMjEuMDUgMTUuOCAzMi42MSA5LjQ1IDI4LjIzLTE1LjU1IDQ1Ljc3LTQ1IDQ1Ljc3LTc2Ljg4cy0xNy41NC02MS4zMi00NS43OC03Ni44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm90ZVllYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMzIwaC02NHY2NGgyMi40YzUuMyAwIDkuNiAzLjYgOS42IDh2MTZjMCA0LjQtNC4zIDgtOS42IDhINzMuNmMtNS4zIDAtOS42LTMuNi05LjYtOHYtMTZjMC00LjQgNC4zLTggOS42LThIOTZ2LTY0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg1NzZjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tOTYgNjRWNjQuM2MwLTE3LjktMTQuNS0zMi4zLTMyLjMtMzIuM0gxNjAuNEMxNDIuNSAzMiAxMjggNDYuNSAxMjggNjQuM1YzODRoMzg0ek0yMTEuMiAyMDJsMjUuNS0yNS4zYzQuMi00LjIgMTEtNC4yIDE1LjIuMWw0MS4zIDQxLjYgOTUuMi05NC40YzQuMi00LjIgMTEtNC4yIDE1LjIuMWwyNS4zIDI1LjVjNC4yIDQuMiA0LjIgMTEtLjEgMTUuMkwzMDAuNSAyOTJjLTQuMiA0LjItMTEgNC4yLTE1LjItLjFsLTc0LjEtNzQuN2MtNC4zLTQuMi00LjItMTEgMC0xNS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWckNhcmRib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggNjRIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djMyMGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE2MC4yMmMyNS4xOSAwIDQ4LjAzLTE0Ljc3IDU4LjM2LTM3Ljc0bDI3Ljc0LTYxLjY0QzI4Ni4yMSAzMzEuMDggMzAyLjM1IDMyMCAzMjAgMzIwczMzLjc5IDExLjA4IDQxLjY4IDI4LjYybDI3Ljc0IDYxLjY0QzM5OS43NSA0MzMuMjMgNDIyLjYgNDQ4IDQ0Ny43OCA0NDhINjA4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMTYwIDMwNGMtMzUuMzUgMC02NC0yOC42NS02NC02NHMyOC42NS02NCA2NC02NCA2NCAyOC42NSA2NCA2NC0yOC42NSA2NC02NCA2NHptMzIwIDBjLTM1LjM1IDAtNjQtMjguNjUtNjQtNjRzMjguNjUtNjQgNjQtNjQgNjQgMjguNjUgNjQgNjQtMjguNjUgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbGtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzIzNC41IDAgMjA4IDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptOTQuNSAxNDkuMWwtMjMuMy0xMS44LTkuNy0yOS40Yy0xNC43LTQ0LjYtNTUuNy03NS44LTEwMi4yLTc1LjktMzYtLjEtNTUuOSAxMC4xLTkzLjMgMjUuMi0yMS42IDguNy0zOS4zIDI1LjItNDkuNyA0Ni4yTDE3LjYgMjEzYy03LjggMTUuOC0xLjUgMzUgMTQuMiA0Mi45IDE1LjYgNy45IDM0LjYgMS41IDQyLjUtMTQuM0w4MSAyMjhjMy41LTcgOS4zLTEyLjUgMTYuNS0xNS40bDI2LjgtMTAuOC0xNS4yIDYwLjdjLTUuMiAyMC44LjQgNDIuOSAxNC45IDU4LjhsNTkuOSA2NS40YzcuMiA3LjkgMTIuMyAxNy40IDE0LjkgMjcuN2wxOC4zIDczLjNjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuMyAxNy4xLTQuMyAyNy42LTIxLjcgMjMuMy0zOC44bC0yMi4yLTg5Yy0yLjYtMTAuMy03LjctMTkuOS0xNC45LTI3LjdsLTQ1LjUtNDkuNyAxNy4yLTY4LjcgNS41IDE2LjVjNS4zIDE2LjEgMTYuNyAyOS40IDMxLjcgMzdsMjMuMyAxMS44YzE1LjYgNy45IDM0LjYgMS41IDQyLjUtMTQuMyA3LjctMTUuNyAxLjQtMzUuMS0xNC4zLTQzek03My42IDM4NS44Yy0zLjIgOC4xLTggMTUuNC0xNC4yIDIxLjVsLTUwIDUwLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjcgMTIuNSA0NS4yIDBsNTkuNC01OS40YzYuMS02LjEgMTAuOS0xMy40IDE0LjItMjEuNWwxMy41LTMzLjhjLTU1LjMtNjAuMy0zOC43LTQxLjgtNDcuNC01My43bC0yMC43IDUxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjEuMiAxMjhIODBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTZoMzg0YzguODQgMCAxNi03LjE2IDE2LTE2IDAtMjYuNTEtMjEuNDktNDgtNDgtNDhINjRDMjguNjUgMzIgMCA2MC42NSAwIDk2djMyMGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM5Ny4yYzI4LjAyIDAgNTAuOC0yMS41MyA1MC44LTQ4VjE3NmMwLTI2LjQ3LTIyLjc4LTQ4LTUwLjgtNDh6TTQxNiAzMzZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhcmVob3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMzUySDEzNi40Yy00LjQgMC04IDMuNi04IDhsLS4xIDQ4YzAgNC40IDMuNiA4IDggOEg1MDRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6bTAgOTZIMTM2LjFjLTQuNCAwLTggMy42LTggOGwtLjEgNDhjMCA0LjQgMy42IDggOCA4aDM2OGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMC0xOTJIMTM2LjZjLTQuNCAwLTggMy42LTggOGwtLjEgNDhjMCA0LjQgMy42IDggOCA4SDUwNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMTA2LjUtMTM5TDMzOC40IDMuN2E0OC4xNSA0OC4xNSAwIDAgMC0zNi45IDBMMjkuNSAxMTdDMTEuNyAxMjQuNSAwIDE0MS45IDAgMTYxLjNWNTA0YzAgNC40IDMuNiA4IDggOGg4MGM0LjQgMCA4LTMuNiA4LThWMjU2YzAtMTcuNiAxNC42LTMyIDMyLjYtMzJoMzgyLjhjMTggMCAzMi42IDE0LjQgMzIuNiAzMnYyNDhjMCA0LjQgMy42IDggOCA4aDgwYzQuNCAwIDgtMy42IDgtOFYxNjEuM2MwLTE5LjQtMTEuNy0zNi44LTI5LjUtNDQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYyLjEgMzgzLjljLTIxLjUtMi40LTQyLjEtMTAuNS01Ny45LTIyLjktMTQuMS0xMS4xLTM0LjItMTEuMy00OC4yIDAtMzcuOSAzMC40LTEwNy4yIDMwLjQtMTQ1LjctMS41LTEzLjUtMTEuMi0zMy05LjEtNDYuNyAxLjgtMzggMzAuMS0xMDYuOSAzMC0xNDUuMi0xLjctMTMuNS0xMS4yLTMzLjMtOC45LTQ3LjEgMi0xNS41IDEyLjItMzYgMjAuMS01Ny43IDIyLjQtNy45LjgtMTMuNiA3LjgtMTMuNiAxNS43djMyLjJjMCA5LjEgNy42IDE2LjggMTYuNyAxNiAyOC44LTIuNSA1Ni4xLTExLjQgNzkuNC0yNS45IDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgMjMuMyAxNC4yIDUwLjkgMjMuMyA3OS4xIDI1LjggOS4xLjggMTYuNy02LjkgMTYuNy0xNnYtMzEuNmMuMS04LTUuNy0xNS40LTEzLjgtMTYuM3ptMC0xNDRjLTIxLjUtMi40LTQyLjEtMTAuNS01Ny45LTIyLjktMTQuMS0xMS4xLTM0LjItMTEuMy00OC4yIDAtMzcuOSAzMC40LTEwNy4yIDMwLjQtMTQ1LjctMS41LTEzLjUtMTEuMi0zMy05LjEtNDYuNyAxLjgtMzggMzAuMS0xMDYuOSAzMC0xNDUuMi0xLjctMTMuNS0xMS4yLTMzLjMtOC45LTQ3LjEgMi0xNS41IDEyLjItMzYgMjAuMS01Ny43IDIyLjQtNy45LjgtMTMuNiA3LjgtMTMuNiAxNS43djMyLjJjMCA5LjEgNy42IDE2LjggMTYuNyAxNiAyOC44LTIuNSA1Ni4xLTExLjQgNzkuNC0yNS45IDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgMjMuMyAxNC4yIDUwLjkgMjMuMyA3OS4xIDI1LjggOS4xLjggMTYuNy02LjkgMTYuNy0xNnYtMzEuNmMuMS04LTUuNy0xNS40LTEzLjgtMTYuM3ptMC0xNDRDNTQwLjYgOTMuNCA1MjAgODUuNCA1MDQuMiA3MyA0OTAuMSA2MS45IDQ3MCA2MS43IDQ1NiA3M2MtMzcuOSAzMC40LTEwNy4yIDMwLjQtMTQ1LjctMS41LTEzLjUtMTEuMi0zMy05LjEtNDYuNyAxLjgtMzggMzAuMS0xMDYuOSAzMC0xNDUuMi0xLjctMTMuNS0xMS4yLTMzLjMtOC45LTQ3LjEgMi0xNS41IDEyLjItMzYgMjAuMS01Ny43IDIyLjQtNy45LjgtMTMuNiA3LjgtMTMuNiAxNS43djMyLjJjMCA5LjEgNy42IDE2LjggMTYuNyAxNiAyOC44LTIuNSA1Ni4xLTExLjQgNzkuNC0yNS45IDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgMjMuMyAxNC4yIDUwLjkgMjMuMyA3OS4xIDI1LjggOS4xLjggMTYuNy02LjkgMTYuNy0xNnYtMzEuNmMuMS04LTUuNy0xNS40LTEzLjgtMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F2ZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYgNDgwSDMyNGEzNiAzNiAwIDAgMS0zNi0zNlY5NmgtOTZ2MTU2YTM2IDM2IDAgMCAxLTM2IDM2SDE2YTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgxMTJWNjhhMzYgMzYgMCAwIDEgMzYtMzZoMTUyYTM2IDM2IDAgMCAxIDM2IDM2djM0OGg5NlYyNjBhMzYgMzYgMCAwIDEgMzYtMzZoMTQwYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2SDUxMnYxNTZhMzYgMzYgMCAwIDEtMzYgMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWdodEhhbmdpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjI4IDQ0NS44NmwtNzMuMDMtMjkyLjEzYy0zLjgtMTUuMTktMTYuNDQtMjUuNzItMzAuODctMjUuNzJoLTYwLjI1YzMuNTctMTAuMDUgNS44OC0yMC43MiA1Ljg4LTMyIDAtNTMuMDItNDIuOTgtOTYtOTYtOTZzLTk2IDQyLjk4LTk2IDk2YzAgMTEuMjggMi4zIDIxLjk1IDUuODggMzJoLTYwLjI1Yy0xNC40MyAwLTI3LjA4IDEwLjU0LTMwLjg3IDI1LjcyTDEuNzIgNDQ1Ljg2Qy02LjYxIDQ3OS4xNyAxNi4zOCA1MTIgNDguMDMgNTEyaDQxNS45NWMzMS42NCAwIDU0LjYzLTMyLjgzIDQ2LjMtNjYuMTR6TTI1NiAxMjhjLTE3LjY0IDAtMzItMTQuMzYtMzItMzJzMTQuMzYtMzIgMzItMzIgMzIgMTQuMzYgMzIgMzItMTQuMzYgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNjRoLTI1Ljk4QzQzOC40NCA5Mi4yOCA0NDggMTI1LjAxIDQ0OCAxNjBjMCAxMDUuODctODYuMTMgMTkyLTE5MiAxOTJTNjQgMjY1Ljg3IDY0IDE2MGMwLTM0Ljk5IDkuNTYtNjcuNzIgMjUuOTgtOTZINjRDMjguNzEgNjQgMCA5Mi43MSAwIDEyOHYzMjBjMCAzNS4yOSAyOC43MSA2NCA2NCA2NGgzODRjMzUuMjkgMCA2NC0yOC43MSA2NC02NFYxMjhjMC0zNS4yOS0yOC43MS02NC02NC02NHpNMjU2IDMyMGM4OC4zNyAwIDE2MC03MS42MyAxNjAtMTYwUzM0NC4zNyAwIDI1NiAwIDk2IDcxLjYzIDk2IDE2MHM3MS42MyAxNjAgMTYwIDE2MHptLS4zLTE1MS45NGwzMy41OC03OC4zNmMzLjUtOC4xNyAxMi45NC0xMS45MiAyMS4wMy04LjQxIDguMTIgMy40OCAxMS44OCAxMi44OSA4LjQxIDIxbC0zMy42NyA3OC41NUMyOTEuNzMgMTg4IDI5NiAxOTcuNDUgMjk2IDIwOGMwIDIyLjA5LTE3LjkxIDQwLTQwIDQwcy00MC0xNy45MS00MC00MGMwLTIxLjk4IDE3Ljc2LTM5Ljc3IDM5LjctMzkuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoZWVsY2hhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjEwMSAzODUuNjY5bDE0LjIyNyAyOC42NjNjMy45MjkgNy45MTUuNjk3IDE3LjUxNi03LjIxOCAyMS40NDVsLTY1LjQ2NSAzMi44ODZjLTE2LjA0OSA3Ljk2Ny0zNS41NTYgMS4xOTQtNDMuMTg5LTE1LjA1NUwzMzEuNjc5IDMyMEgxOTJjLTE1LjkyNSAwLTI5LjQyNi0xMS43MS0zMS42NzktMjcuNDc1QzEyNi40MzMgNTUuMzA4IDEyOC4zOCA3MC4wNDQgMTI4IDY0YzAtMzYuMzU4IDMwLjMxOC02NS42MzUgNjcuMDUyLTYzLjkyOSAzMy4yNzEgMS41NDUgNjAuMDQ4IDI4LjkwNSA2MC45MjUgNjIuMjAxLjg2OCAzMi45MzMtMjMuMTUyIDYwLjQyMy01NC42MDggNjUuMDM5bDQuNjcgMzIuNjlIMzM2YzguODM3IDAgMTYgNy4xNjMgMTYgMTZ2MzJjMCA4LjgzNy03LjE2MyAxNi0xNiAxNkgyMTUuMTgybDQuNTcyIDMySDM1MmEzMiAzMiAwIDAgMSAyOC45NjIgMTguMzkyTDQzOC40NzcgMzk2LjhsMzYuMTc4LTE4LjM0OWM3LjkxNS0zLjkyOSAxNy41MTctLjY5NyAyMS40NDYgNy4yMTh6TTMxMS4zNTggMzUyaC0yNC41MDZjLTcuNzg4IDU0LjIwNC01NC41MjggOTYtMTEwLjg1MiA5Ni02MS43NTcgMC0xMTItNTAuMjQzLTExMi0xMTIgMC00MS41MDUgMjIuNjk0LTc3LjgwOSA1Ni4zMjQtOTcuMTU2LTMuNzEyLTI1Ljk2NS02Ljg0NC00Ny44Ni05LjQ4OC02Ni4zMzNDNDUuOTU2IDE5OC40NjQgMCAyNjEuOTYzIDAgMzM2YzAgOTcuMDQ3IDc4Ljk1MyAxNzYgMTc2IDE3NiA3MS44NyAwIDEzMy44MDYtNDMuMzA4IDE2MS4xMS0xMDUuMTkyTDMxMS4zNTggMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzNC45MSAxNTQuODhDNDU3Ljc0LTguOTkgMTgyLjE5LTguOTMgNS4wOSAxNTQuODhjLTYuNjYgNi4xNi02Ljc5IDE2LjU5LS4zNSAyMi45OGwzNC4yNCAzMy45N2M2LjE0IDYuMSAxNi4wMiA2LjIzIDIyLjQuMzggMTQ1LjkyLTEzMy42OCAzNzEuMy0xMzMuNzEgNTE3LjI1IDAgNi4zOCA1Ljg1IDE2LjI2IDUuNzEgMjIuNC0uMzhsMzQuMjQtMzMuOTdjNi40My02LjM5IDYuMy0xNi44Mi0uMzYtMjIuOTh6TTMyMCAzNTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjQgNjQtMjguNjUgNjQtNjQtMjguNjUtNjQtNjQtNjR6bTIwMi42Ny04My41OWMtMTE1LjI2LTEwMS45My0yOTAuMjEtMTAxLjgyLTQwNS4zNCAwLTYuOSA2LjEtNy4xMiAxNi42OS0uNTcgMjMuMTVsMzQuNDQgMzMuOTljNiA1LjkyIDE1LjY2IDYuMzIgMjIuMDUuOCA4My45NS03Mi41NyAyMDkuNzQtNzIuNDEgMjkzLjQ5IDAgNi4zOSA1LjUyIDE2LjA1IDUuMTMgMjIuMDUtLjhsMzQuNDQtMzMuOTljNi41Ni02LjQ2IDYuMzMtMTcuMDYtLjU2LTIzLjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ni43IDI1NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgxNDIuMmMxNS45IDAgMzAuOCAxMC45IDMzLjQgMjYuNiAzLjMgMjAtMTIuMSAzNy40LTMxLjYgMzcuNC0xNC4xIDAtMjYuMS05LjItMzAuNC0yMS45LTIuMS02LjMtOC42LTEwLjEtMTUuMi0xMC4xSDgxLjZjLTkuOCAwLTE3LjcgOC44LTE1LjkgMTguNCA4LjYgNDQuMSA0Ny42IDc3LjYgOTQuMiA3Ny42IDU3LjEgMCAxMDIuNy01MC4xIDk1LjItMTA4LjZDMjQ5IDI5MSAyMDUuNCAyNTYgMTU2LjcgMjU2ek0xNiAyMjRoMzM2YzU5LjcgMCAxMDYuOC01NC44IDkzLjgtMTE2LjctNy42LTM2LjItMzYuOS02NS41LTczLjEtNzMuMS01NS40LTExLjYtMTA1LjEgMjQuOS0xMTQuOSA3NS41LTEuOSA5LjYgNi4xIDE4LjMgMTUuOCAxOC4zaDMyLjhjNi43IDAgMTMuMS0zLjggMTUuMi0xMC4xQzMyNS45IDEwNS4yIDMzNy45IDk2IDM1MiA5NmMxOS40IDAgMzQuOSAxNy40IDMxLjYgMzcuNC0yLjYgMTUuNy0xNy40IDI2LjYtMzMuNCAyNi42SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2em0zODQgMzJIMjQzLjdjMTkuMyAxNi42IDMzLjIgMzguOCAzOS44IDY0SDQwMGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OGMtMTcuOSAwLTMzLjMtOS45LTQxLjYtMjQuNC0yLjktNS04LjctNy42LTE0LjUtNy42aC0zMy44Yy0xMC45IDAtMTkgMTAuOC0xNS4zIDIxLjEgMTcuOCA1MC42IDcwLjUgODQuOCAxMjkuNCA3Mi4zIDQxLjItOC43IDc1LjEtNDEuNiA4NC43LTgyLjdDNTI2IDMyMS41IDQ3MC41IDI1NiA0MDAgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dDbG9zZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tODMuNiAyOTAuNWM0LjggNC44IDQuOCAxMi42IDAgMTcuNGwtNDAuNSA0MC41Yy00LjggNC44LTEyLjYgNC44LTE3LjQgMEwyNTYgMzEzLjNsLTY2LjUgNjcuMWMtNC44IDQuOC0xMi42IDQuOC0xNy40IDBsLTQwLjUtNDAuNWMtNC44LTQuOC00LjgtMTIuNiAwLTE3LjRsNjcuMS02Ni41LTY3LjEtNjYuNWMtNC44LTQuOC00LjgtMTIuNiAwLTE3LjRsNDAuNS00MC41YzQuOC00LjggMTIuNi00LjggMTcuNCAwbDY2LjUgNjcuMSA2Ni41LTY3LjFjNC44LTQuOCAxMi42LTQuOCAxNy40IDBsNDAuNSA0MC41YzQuOCA0LjggNC44IDEyLjYgMCAxNy40TDMxMy4zIDI1Nmw2Ny4xIDY2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmRvd01heGltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xNiAxNjBINjR2LTg0YzAtNi42IDUuNC0xMiAxMi0xMmgzNjBjNi42IDAgMTIgNS40IDEyIDEydjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dNaW5pbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzUySDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA0OHYyODhjMCAyNi41LTIxLjUgNDgtNDggNDhoLTQ4VjE3NmMwLTQ0LjEtMzUuOS04MC04MC04MEgxMjhWNDhjMC0yNi41IDIxLjUtNDggNDgtNDhoMjg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0zODQgMTc2djI4OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDI4OGMyNi41IDAgNDggMjEuNSA0OCA0OHptLTY4IDI4YzAtNi42LTUuNC0xMi0xMi0xMkg3NmMtNi42IDAtMTIgNS40LTEyIDEydjUyaDI1MnYtNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVCb3R0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA3LjMxIDcyLjU3TDQzOS40MyA0LjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0yMi42MyAyMi42M2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wtNzYuNjcgNzYuNjdjLTQ2LjU4LTE5LjctMTAyLjQtMTAuNzMtMTQwLjM3IDI3LjIzTDE4Ljc1IDMxMi4yM2MtMjQuOTkgMjQuOTktMjQuOTkgNjUuNTIgMCA5MC41MWw5MC41MSA5MC41MWMyNC45OSAyNC45OSA2NS41MiAyNC45OSA5MC41MSAwbDE1OC4zOS0xNTguMzljMzcuOTYtMzcuOTYgNDYuOTMtOTMuNzkgMjcuMjMtMTQwLjM3bDc2LjY3LTc2LjY3YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjMtMjIuNjNjNi4yNC02LjI0IDYuMjQtMTYuMzctLjAxLTIyLjYyek0xNzkuMjIgNDIzLjI5bC05MC41MS05MC41MSAxMjIuMDQtMTIyLjA0IDkwLjUxIDkwLjUxLTEyMi4wNCAxMjIuMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVHbGFzc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgNDY0aC00MFYzNDYuODFjNjguNDctMTUuODkgMTE4LjA1LTc5LjkxIDExMS40LTE1NC4xNmwtMTUuOTUtMTc4LjFDMjcwLjcxIDYuMzEgMjYzLjkgMCAyNTUuNzQgMEgzMi4yNmMtOC4xNSAwLTE0Ljk3IDYuMzEtMTUuNyAxNC41NUwuNiAxOTIuNjZDLTYuMDUgMjY2LjkxIDQzLjUzIDMzMC45MyAxMTIgMzQ2LjgyVjQ2NEg3MmMtMjIuMDkgMC00MCAxNy45MS00MCA0MCAwIDQuNDIgMy41OCA4IDggOGgyMDhjNC40MiAwIDgtMy41OCA4LTggMC0yMi4wOS0xNy45MS00MC00MC00MHpNNjEuNzUgNDhoMTY0LjVsNy4xNyA4MEg1NC41OGw3LjE3LTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5lR2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDQ2NGgtNDBWMzQ2LjgxYzY4LjQ3LTE1Ljg5IDExOC4wNS03OS45MSAxMTEuNC0xNTQuMTZsLTE1Ljk1LTE3OC4xQzI3MC43MSA2LjMxIDI2My45IDAgMjU1Ljc0IDBIMzIuMjZjLTguMTUgMC0xNC45NyA2LjMxLTE1LjcgMTQuNTVMLjYgMTkyLjY2Qy02LjA1IDI2Ni45MSA0My41MyAzMzAuOTMgMTEyIDM0Ni44MlY0NjRINzJjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjA4YzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY0IDE5MmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDhsMTguNi04MC42YzEuNy03LjUtNC0xNC43LTExLjctMTQuN2gtNDYuMWMtNS43IDAtMTAuNiA0LTExLjcgOS41TDQ1MC43IDEyOEgzNDAuOGwtMTkuNy04NmMtMS4zLTUuNS02LjEtOS4zLTExLjctOS4zaC00NGMtNS42IDAtMTAuNCAzLjgtMTEuNyA5LjNsLTIwIDg2SDEyNWwtMTcuNS04NS43Yy0xLjEtNS42LTYuMS05LjYtMTEuOC05LjZINTMuNmMtNy43IDAtMTMuNCA3LjEtMTEuNyAxNC42TDYwIDEyOEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg2Mi4zbDcuMiAzMkgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg4My45bDQwLjkgMTgyLjZjMS4yIDUuNSA2LjEgOS40IDExLjcgOS40aDU2LjhjNS42IDAgMTAuNC0zLjkgMTEuNy05LjNMMjU5LjMgMjg4aDU1LjFsNDIuNCAxODIuN2MxLjMgNS40IDYuMSA5LjMgMTEuNyA5LjNoNTYuOGM1LjYgMCAxMC40LTMuOSAxMS43LTkuM0w0NzkuMSAyODhINTY0YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC03MC4xbDcuNC0zMnpNMTgzLjggMzQyYy02LjIgMjUuOC02LjggNDcuMi03LjMgNDcuMmgtMS4xcy0xLjctMjItNi44LTQ3LjJsLTExLTU0aDM4Ljh6bTI3LjUtMTE4aC02Ni44bC02LjUtMzJoODAuOHptNjIuOSAwbDItOC42YzEuOS04IDMuNS0xNiA0LjgtMjMuNGgxMS44YzEuMyA3LjQgMi45IDE1LjQgNC44IDIzLjRsMiA4LjZ6bTEzMC45IDExOGMtNS4xIDI1LjItNi44IDQ3LjItNi44IDQ3LjJoLTEuMWMtLjYgMC0xLjEtMjEuNC03LjMtNDcuMmwtMTIuNC01NGgzOS4xem0yNS4yLTExOGgtNjcuNGwtNy4zLTMyaDgxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdyZW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDcuNzMgMTA5LjFjLTIuMjQtOS4wMy0xMy41NC0xMi4wOS0yMC4xMi01LjUxbC03NC4zNiA3NC4zNi02Ny44OC0xMS4zMS0xMS4zMS02Ny44OCA3NC4zNi03NC4zNmM2LjYyLTYuNjIgMy40My0xNy45LTUuNjYtMjAuMTYtNDcuMzgtMTEuNzQtOTkuNTUuOTEtMTM2LjU4IDM3LjkzLTM5LjY0IDM5LjY0LTUwLjU1IDk3LjEtMzQuMDUgMTQ3LjJMMTguNzQgNDAyLjc2Yy0yNC45OSAyNC45OS0yNC45OSA2NS41MSAwIDkwLjUgMjQuOTkgMjQuOTkgNjUuNTEgMjQuOTkgOTAuNSAwbDIxMy4yMS0yMTMuMjFjNTAuMTIgMTYuNzEgMTA3LjQ3IDUuNjggMTQ3LjM3LTM0LjIyIDM3LjA3LTM3LjA3IDQ5LjctODkuMzIgMzcuOTEtMTM2Ljczek02NCA0NzJjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYUmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCAzODRjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptMTYwIDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6TTYyNCAwSDE2QzcuMiAwIDAgNy4yIDAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2em0wIDQ0OGgtNDhWOTZINjR2MzUySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNNDgwIDI0OGMwIDQuNC0zLjYgOC04IDhIMzM2djMyaDEwNGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMzNnYzMmg2NGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OC00OC0yMS41LTQ4LTQ4di0xNmgtNjR2MTZjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDggMjEuNS00OCA0OC00OGg2NHYtMzJIMjAwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxMDR2LTMySDE2OGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTM2di0zMkgyMDBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDEwNHYtMjRjMC00LjQgMy42LTggOC04aDE2YzQuNCAwIDggMy42IDggOHYyNGgxMDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzMzZ2MzJoMTM2YzQuNCAwIDggMy42IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWVuU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTEuMiAzMmgtNjUuM2MtNC42IDAtOC44IDIuNi0xMC44IDYuN2wtNTUuNCAxMTMuMmMtMTQuNSAzNC43LTI3LjEgNzEuOS0yNy4xIDcxLjloLTEuM3MtMTIuNi0zNy4yLTI3LjEtNzEuOUwxMDguOCAzOC43Yy0yLTQuMS02LjItNi43LTEwLjgtNi43SDMyLjhjLTkuMSAwLTE0LjggOS43LTEwLjYgMTcuNkwxMDIuMyAyMDBINDRjLTYuNiAwLTEyIDUuNC0xMiAxMnYzMmMwIDYuNiA1LjQgMTIgMTIgMTJoODguMmwxOS44IDM3LjJWMzIwSDQ0Yy02LjYgMC0xMiA1LjQtMTIgMTJ2MzJjMCA2LjYgNS40IDEyIDEyIDEyaDEwOHY5MmMwIDYuNiA1LjQgMTIgMTIgMTJoNTZjNi42IDAgMTItNS40IDEyLTEydi05MmgxMDhjNi42IDAgMTItNS40IDEyLTEydi0zMmMwLTYuNi01LjQtMTItMTItMTJIMjMydi0yNi44bDE5LjgtMzcuMkgzNDBjNi42IDAgMTItNS40IDEyLTEydi0zMmMwLTYuNi01LjQtMTItMTItMTJoLTU4LjNsODAuMS0xNTAuNGM0LjMtNy45LTEuNS0xNy42LTEwLjYtMTcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWluWWFuZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0wIDM3NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xMjhjLTUzLjAyIDAtOTYgNDIuOTgtOTYgOTZzNDIuOTggOTYgOTYgOTZjLTEwNi4wNCAwLTE5Mi04NS45Ni0xOTItMTkyUzE0MS45NiA2NCAyNDggNjRjNTMuMDIgMCA5NiA0Mi45OCA5NiA5NnMtNDIuOTggOTYtOTYgOTZ6bTAtMTI4Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwdi02NGgyMGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjB2LTY0aDIwem0tNjggMzA0SDQ4VjQ4aDMyMHY0MTZ6TTIwOCAyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em0tODkuNiAxMjhoMTc5LjJjMTIuNCAwIDIyLjQtOC42IDIyLjQtMTkuMnYtMTkuMmMwLTMxLjgtMzAuMS01Ny42LTY3LjItNTcuNi0xMC44IDAtMTguNyA4LTQ0LjggOC0yNi45IDAtMzMuNC04LTQ0LjgtOC0zNy4xIDAtNjcuMiAyNS44LTY3LjIgNTcuNnYxOS4yYzAgMTAuNiAxMCAxOS4yIDIyLjQgMTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQWRkcmVzc0NhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCA0MDBINDhWODBoNDgwdjM1MnpNMjA4IDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bS04OS42IDEyOGgxNzkuMmMxMi40IDAgMjIuNC04LjYgMjIuNC0xOS4ydi0xOS4yYzAtMzEuOC0zMC4xLTU3LjYtNjcuMi01Ny42LTEwLjggMC0xOC43IDgtNDQuOCA4LTI2LjkgMC0zMy40LTgtNDQuOC04LTM3LjEgMC02Ny4yIDI1LjgtNjcuMiA1Ny42djE5LjJjMCAxMC42IDEwIDE5LjIgMjIuNCAxOS4yek0zNjAgMzIwaDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTAtNjRoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMC02NGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBbmdyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTAtMTQ0Yy0zMy42IDAtNjUuMiAxNC44LTg2LjggNDAuNi04LjUgMTAuMi03LjEgMjUuMyAzLjEgMzMuOHMyNS4zIDcuMiAzMy44LTNjMjQuOC0yOS43IDc1LTI5LjcgOTkuOCAwIDguMSA5LjcgMjMuMiAxMS45IDMzLjggMyAxMC4yLTguNSAxMS41LTIzLjYgMy4xLTMzLjgtMjEuNi0yNS44LTUzLjItNDAuNi04Ni44LTQwLjZ6bS00OC03MmMxMC4zIDAgMTkuOS02LjcgMjMtMTcuMSAzLjgtMTIuNy0zLjQtMjYuMS0xNi4xLTI5LjlsLTgwLTI0Yy0xMi44LTMuOS0yNi4xIDMuNC0yOS45IDE2LjEtMy44IDEyLjcgMy40IDI2LjEgMTYuMSAyOS45bDI4LjIgOC41Yy0zLjEgNC45LTUuMyAxMC40LTUuMyAxNi42IDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjQgMzItMzIuMXptMTk5LTU0LjljLTMuOC0xMi43LTE3LjEtMTkuOS0yOS45LTE2LjFsLTgwIDI0Yy0xMi43IDMuOC0xOS45IDE3LjItMTYuMSAyOS45IDMuMSAxMC40IDEyLjcgMTcuMSAyMyAxNy4xIDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC02LjItMi4yLTExLjctNS4zLTE2LjZsMjguMi04LjVjMTIuNy0zLjcgMTkuOS0xNy4xIDE2LjEtMjkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQXJyb3dBbHRDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptLTMyLTMxNnYxMTZoLTY3Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWw5OSA5OWM0LjcgNC43IDEyLjMgNC43IDE3IDBsOTktOTljNy42LTcuNiAyLjItMjAuNS04LjUtMjAuNWgtNjdWMTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQXJyb3dBbHRDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjU2YzAgMTM3IDExMSAyNDggMjQ4IDI0OHMyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDggOCAxMTkgOCAyNTZ6bTQ0OCAwYzAgMTEwLjUtODkuNSAyMDAtMjAwIDIwMFM1NiAzNjYuNSA1NiAyNTYgMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDB6bS03Mi0yMHY0MGMwIDYuNi01LjQgMTItMTIgMTJIMjU2djY3YzAgMTAuNy0xMi45IDE2LTIwLjUgOC41bC05OS05OWMtNC43LTQuNy00LjctMTIuMyAwLTE3bDk5LTk5YzcuNi03LjYgMjAuNS0yLjIgMjAuNSA4LjV2NjdoMTE2YzYuNiAwIDEyIDUuNCAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQXJyb3dBbHRDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2em03MiAyMHYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDExNnYtNjdjMC0xMC43IDEyLjktMTYgMjAuNS04LjVsOTkgOTljNC43IDQuNyA0LjcgMTIuMyAwIDE3bC05OSA5OWMtNy42IDcuNi0yMC41IDIuMi0yMC41LTguNXYtNjdIMTQwYy02LjYgMC0xMi01LjQtMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Fycm93QWx0Q2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNGMxMzcgMCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4em0wLTQ0OGMxMTAuNSAwIDIwMCA4OS41IDIwMCAyMDBzLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2IDE0NS41IDU2IDI1NiA1NnptMjAgMzI4aC00MGMtNi42IDAtMTItNS40LTEyLTEyVjI1NmgtNjdjLTEwLjcgMC0xNi0xMi45LTguNS0yMC41bDk5LTk5YzQuNy00LjcgMTIuMy00LjcgMTcgMGw5OSA5OWM3LjYgNy42IDIuMiAyMC41LTguNSAyMC41aC02N3YxMTZjMCA2LjYtNS40IDEyLTEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdCZWxsU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjk5IDQ3MS4wMkwzNiAzLjUxQzI5LjEtMi4wMSAxOS4wMy0uOSAxMy41MSA2bC0xMCAxMi40OUMtMi4wMiAyNS4zOS0uOSAzNS40NiA2IDQwLjk4bDU5OCA0NjcuNTFjNi45IDUuNTIgMTYuOTYgNC40IDIyLjQ5LTIuNDlsMTAtMTIuNDljNS41Mi02LjkgNC40MS0xNi45Ny0yLjUtMjIuNDl6TTE2My41MyAzNjhjMTYuNzEtMjIuMDMgMzQuNDgtNTUuOCA0MS40LTExMC41OGwtNDUuNDctMzUuNTVjLTMuMjcgOTAuNzMtMzYuNDcgMTIwLjY4LTU0Ljg0IDE0MC40Mi02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgyNzkuNjZsLTYxLjQtNDhIMTYzLjUzek0zMjAgOTZjNjEuODYgMCAxMTIgNTAuMTQgMTEyIDExMiAwIC4yLS4wNi4zOC0uMDYuNTguMDIgMTYuODQgMS4xNiAzMS43NyAyLjc5IDQ1LjczbDU5LjUzIDQ2LjU0Yy04LjMxLTIyLjEzLTE0LjM0LTUxLjQ5LTE0LjM0LTkyLjg1IDAtNzcuNy01NC40OC0xMzkuOS0xMjcuOTQtMTU1LjE2VjMyYzAtMTcuNjctMTQuMzItMzItMzEuOTgtMzJzLTMxLjk4IDE0LjMzLTMxLjk4IDMydjIwLjg0Yy0yNi4wMiA1LjQxLTQ5LjQ1IDE2Ljk0LTY5LjEzIDMyLjcybDM4LjE3IDI5Ljg0QzI3NSAxMDMuMTggMjk2LjY1IDk2IDMyMCA5NnptMCA0MTZjMzUuMzIgMCA2My45Ny0yOC42NSA2My45Ny02NEgyNTYuMDNjMCAzNS4zNSAyOC42NSA2NCA2My45NyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQmVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzkuMzkgMzYyLjI5Yy0xOS4zMi0yMC43Ni01NS40Ny01MS45OS01NS40Ny0xNTQuMjkgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRDMTE4LjU2IDY4LjEgNjQuMDggMTMwLjMgNjQuMDggMjA4YzAgMTAyLjMtMzYuMTUgMTMzLjUzLTU1LjQ3IDE1NC4yOS02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgzODMuOGMxOS4xMiAwIDMyLTE1LjYgMzIuMS0zMiAuMDUtNy41NS0yLjYxLTE1LjI3LTguNjEtMjEuNzF6TTY3LjUzIDM2OGMyMS4yMi0yNy45NyA0NC40Mi03NC4zMyA0NC41My0xNTkuNDIgMC0uMi0uMDYtLjM4LS4wNi0uNTggMC02MS44NiA1MC4xNC0xMTIgMTEyLTExMnMxMTIgNTAuMTQgMTEyIDExMmMwIC4yLS4wNi4zOC0uMDYuNTguMTEgODUuMSAyMy4zMSAxMzEuNDYgNDQuNTMgMTU5LjQySDY3LjUzek0yMjQgNTEyYzM1LjMyIDAgNjMuOTctMjguNjUgNjMuOTctNjRIMTYwLjAzYzAgMzUuMzUgMjguNjUgNjQgNjMuOTcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djQ2NGwxOTItMTEyIDE5MiAxMTJWNDhjMC0yNi41MS0yMS40OS00OC00OC00OHptMCA0MjguNDNsLTE0NC04NC0xNDQgODRWNTRhNiA2IDAgMCAxIDYtNmgyNzZjMy4zMTQgMCA2IDIuNjgzIDYgNS45OTZWNDI4LjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMTQ4di00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnptMTQwIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMnptLTEyOCA5Nmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJ6bTEyOCAwaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMnptLTc2IDg0di00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptNzYgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyem0xODAgMTI0djM2SDB2LTM2YzAtNi42IDUuNC0xMiAxMi0xMmgxOS41VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDMzN2MxMy4zIDAgMjQgMTAuNyAyNCAyNHY0NDBINDM2YzYuNiAwIDEyIDUuNCAxMiAxMnpNNzkuNSA0NjNIMTkydi02N2MwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjY3aDExMi41VjQ5TDgwIDQ4bC0uNSA0MTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OCAyODhoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyem0xMDgtMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem05NiAwdi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptLTk2IDk2di00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptLTk2IDB2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem0xOTIgMHYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6bTk2LTI2MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDY0aC00OFYxMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1MkgxNjBWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTJINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptLTYgNDAwSDU0YTYgNiAwIDAgMS02LTZWMTYwaDM1MnYyOThhNiA2IDAgMCAxLTYgNnptLTUyLjg0OS0yMDAuNjVMMTk4Ljg0MiA0MDQuNTE5Yy00LjcwNSA0LjY2Ny0xMi4zMDMgNC42MzctMTYuOTcxLS4wNjhsLTc1LjA5MS03NS42OTljLTQuNjY3LTQuNzA1LTQuNjM3LTEyLjMwMy4wNjgtMTYuOTcxbDIyLjcxOS0yMi41MzZjNC43MDUtNC42NjcgMTIuMzAzLTQuNjM3IDE2Ljk3LjA2OWw0NC4xMDQgNDQuNDYxIDExMS4wNzItMTEwLjE4MWM0LjcwNS00LjY2NyAxMi4zMDMtNC42MzcgMTYuOTcxLjA2OGwyMi41MzYgMjIuNzE4YzQuNjY3IDQuNzA1IDQuNjM2IDEyLjMwMy0uMDY5IDE2Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNCAzMjhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMjRjMC02LjYgNS40LTEyIDEyLTEyaDIwMGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjRjMCA2LjYtNS40IDEyLTEyIDEySDEyNHptMzI0LTIxNnYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMjkydjI0YzAgNi42LTUuNCAxMi0xMiAxMmgtNzZ2NzZjMCA2LjYtNS40IDEyLTEyIDEyaC0yNGMtNi42IDAtMTItNS40LTEyLTEydi03NmgtNzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMjRjMC02LjYgNS40LTEyIDEyLTEyaDc2di03NmMwLTYuNiA1LjQtMTIgMTItMTJoMjRjNi42IDAgMTIgNS40IDEyIDEydjc2aDc2YzYuNiAwIDEyIDUuNCAxMiAxMnptMTEyLTE4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyVGltZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzExLjcgMzc0LjdsLTE3IDE3Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMjI0IDMzNy45bC01My43IDUzLjdjLTQuNyA0LjctMTIuMyA0LjctMTcgMGwtMTctMTdjLTQuNy00LjctNC43LTEyLjMgMC0xN2w1My43LTUzLjctNTMuNy01My43Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsMTctMTdjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDUzLjcgNTMuNyA1My43LTUzLjdjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDE3IDE3YzQuNyA0LjcgNC43IDEyLjMgMCAxN0wyNTcuOSAzMDRsNTMuNyA1My43YzQuOCA0LjcgNC44IDEyLjMuMSAxN3pNNDQ4IDExMnYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA2NGgtNDhWMTJjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjUySDE2MFYxMmMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS02IDQwMEg1NGMtMy4zIDAtNi0yLjctNi02VjE2MGgzNTJ2Mjk4YzAgMy4zLTIuNyA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FyZXRTcXVhcmVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNS4xIDIwOGgxOTcuOGMxMC43IDAgMTYuMSAxMyA4LjUgMjAuNWwtOTguOSA5OC4zYy00LjcgNC43LTEyLjIgNC43LTE2LjkgMGwtOTguOS05OC4zYy03LjctNy41LTIuMy0yMC41IDguNC0yMC41ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYXJldFNxdWFyZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDE1Ny4xdjE5Ny44YzAgMTAuNy0xMyAxNi4xLTIwLjUgOC41bC05OC4zLTk4LjljLTQuNy00LjctNC43LTEyLjIgMC0xNi45bDk4LjMtOTguOWM3LjUtNy43IDIwLjUtMi4zIDIwLjUgOC40ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYXJldFNxdWFyZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAzNTQuOVYxNTcuMWMwLTEwLjcgMTMtMTYuMSAyMC41LTguNWw5OC4zIDk4LjljNC43IDQuNyA0LjcgMTIuMiAwIDE2LjlsLTk4LjMgOTguOWMtNy41IDcuNy0yMC41IDIuMy0yMC41LTguNHpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FyZXRTcXVhcmVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjIuOSAzMDRIMTI1LjFjLTEwLjcgMC0xNi4xLTEzLTguNS0yMC41bDk4LjktOTguM2M0LjctNC43IDEyLjItNC43IDE2LjkgMGw5OC45IDk4LjNjNy43IDcuNSAyLjMgMjAuNS04LjQgMjAuNXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk2LjggMzUyaDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjEwOC44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djIzMC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptLTE5MiAwaDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjE0MC44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djE5OC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptOTYgMGgyMi40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYyMDQuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTIyLjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxMzQuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6TTQ5NiA0MDBINDhWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTM4Ny4yLTQ4aDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44di03MC40YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djcwLjRjMCA2LjQgNi40IDEyLjggMTIuOCAxMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTAgNDhjMTEwLjUzMiAwIDIwMCA4OS40NTEgMjAwIDIwMCAwIDExMC41MzItODkuNDUxIDIwMC0yMDAgMjAwLTExMC41MzIgMC0yMDAtODkuNDUxLTIwMC0yMDAgMC0xMTAuNTMyIDg5LjQ1MS0yMDAgMjAwLTIwMG0xNDAuMjA0IDEzMC4yNjdsLTIyLjUzNi0yMi43MThjLTQuNjY3LTQuNzA1LTEyLjI2NS00LjczNi0xNi45Ny0uMDY4TDIxNS4zNDYgMzAzLjY5N2wtNTkuNzkyLTYwLjI3N2MtNC42NjctNC43MDUtMTIuMjY1LTQuNzM2LTE2Ljk3LS4wNjlsLTIyLjcxOSAyMi41MzZjLTQuNzA1IDQuNjY3LTQuNzM2IDEyLjI2NS0uMDY4IDE2Ljk3MWw5MC43ODEgOTEuNTE2YzQuNjY3IDQuNzA1IDEyLjI2NSA0LjczNiAxNi45Ny4wNjhsMTcyLjU4OS0xNzEuMjA0YzQuNzA0LTQuNjY4IDQuNzM0LTEyLjI2Ni4wNjctMTYuOTcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVja1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bTAgNDAwSDQ4VjgwaDM1MnYzNTJ6bS0zNS44NjQtMjQxLjcyNEwxOTEuNTQ3IDM2MS40OGMtNC43MDUgNC42NjctMTIuMzAzIDQuNjM3LTE2Ljk3LS4wNjhsLTkwLjc4MS05MS41MTZjLTQuNjY3LTQuNzA1LTQuNjM3LTEyLjMwMy4wNjktMTYuOTcxbDIyLjcxOS0yMi41MzZjNC43MDUtNC42NjcgMTIuMzAzLTQuNjM3IDE2Ljk3LjA2OWw1OS43OTIgNjAuMjc3IDE0MS4zNTItMTQwLjIxNmM0LjcwNS00LjY2NyAxMi4zMDMtNC42MzcgMTYuOTcuMDY4bDIyLjUzNiAyMi43MThjNC42NjcgNC43MDYgNC42MzcgMTIuMzA0LS4wNjggMTYuOTcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCA0NDhjLTExMC41IDAtMjAwLTg5LjUtMjAwLTIwMFMxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDY0aC04MGMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDQwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptMTQ0IDQxOGMwIDMuMy0yLjcgNi02IDZINTRjLTMuMyAwLTYtMi43LTYtNlYxMThjMC0zLjMgMi43LTYgNi02aDQydjM2YzAgNi42IDUuNCAxMiAxMiAxMmgxNjhjNi42IDAgMTItNS40IDEyLTEydi0zNmg0MmMzLjMgMCA2IDIuNyA2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptNjEuOC0xMDQuNGwtODQuOS02MS43Yy0zLjEtMi4zLTQuOS01LjktNC45LTkuN1YxMTZjMC02LjYgNS40LTEyIDEyLTEyaDMyYzYuNiAwIDEyIDUuNCAxMiAxMnYxNDEuN2w2Ni44IDQ4LjZjNS40IDMuOSA2LjUgMTEuNCAyLjYgMTYuOEwzMzQuNiAzNDljLTMuOSA1LjMtMTEuNCA2LjUtMTYuOCAyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAwSDE0NGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0OEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYzMjBjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzMjBjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDhoNDhjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0zNjIgNDY0SDU0YTYgNiAwIDAgMS02LTZWMTUwYTYgNiAwIDAgMSA2LTZoNDJ2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjI0djQyYTYgNiAwIDAgMS02IDZ6bTk2LTk2SDE1MGE2IDYgMCAwIDEtNi02VjU0YTYgNiAwIDAgMSA2LTZoMzA4YTYgNiAwIDAgMSA2IDZ2MzA4YTYgNiAwIDAgMS02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb3NlZENhcHRpb25pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjI4OGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNiAzMzZINTRjLTMuMyAwLTYtMi43LTYtNlYxMThjMC0zLjMgMi43LTYgNi02aDQwNGMzLjMgMCA2IDIuNyA2IDZ2Mjc2YzAgMy4zLTIuNyA2LTYgNnptLTIxMS4xLTg1LjdjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My42IDU2LjgtMTcyLjggMzIuMS0xNzIuOC02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdsLTE3LjUgMzAuNWMtMS45IDMuMS02LjIgNC05LjEgMS43LTQwLjgtMzItOTQuNi0xNC45LTk0LjYgMzEuMiAwIDQ4IDUxIDcwLjUgOTIuMiAzMi42IDIuOC0yLjUgNy4xLTIuMSA5LjIuOWwxOS42IDI3Ljd6bTE5MC40IDBjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My42IDU2LjktMTcyLjggMzIuMS0xNzIuOC02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdMNDIwIDIyMC4yYy0xLjkgMy4xLTYuMiA0LTkuMSAxLjctNDAuOC0zMi05NC42LTE0LjktOTQuNiAzMS4yIDAgNDggNTEgNzAuNSA5Mi4yIDMyLjYgMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjYgMjcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMEg2NEMyOC43IDAgMCAyOC43IDAgNjR2Mjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2djg0YzAgNy4xIDUuOCAxMiAxMiAxMiAyLjQgMCA0LjktLjcgNy4xLTIuNEwzMDQgNDE2aDE0NGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NHptMTYgMzUyYzAgOC44LTcuMiAxNi0xNiAxNkgyODhsLTEyLjggOS42TDIwOCA0Mjh2LTYwSDY0Yy04LjggMC0xNi03LjItMTYtMTZWNjRjMC04LjggNy4yLTE2IDE2LTE2aDM4NGM4LjggMCAxNiA3LjIgMTYgMTZ2Mjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb21tZW50RG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMjA4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptMTEyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0xMTIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6TTI1NiAzMkMxMTQuNiAzMiAwIDEyNS4xIDAgMjQwYzAgNDcuNiAxOS45IDkxLjIgNTIuOSAxMjYuM0MzOCA0MDUuNyA3IDQzOS4xIDYuNSA0MzkuNWMtNi42IDctOC40IDE3LjItNC42IDI2UzE0LjQgNDgwIDI0IDQ4MGM2MS41IDAgMTEwLTI1LjcgMTM5LjEtNDYuM0MxOTIgNDQyLjggMjIzLjIgNDQ4IDI1NiA0NDhjMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnptMCAzNjhjLTI2LjcgMC01My4xLTQuMS03OC40LTEyLjFsLTIyLjctNy4yLTE5LjUgMTMuOGMtMTQuMyAxMC4xLTMzLjkgMjEuNC01Ny41IDI5IDcuMy0xMi4xIDE0LjQtMjUuNyAxOS45LTQwLjJsMTAuNi0yOC4xLTIwLjYtMjEuOEM2OS43IDMxNC4xIDQ4IDI4Mi4yIDQ4IDI0MGMwLTg4LjIgOTMuMy0xNjAgMjA4LTE2MHMyMDggNzEuOCAyMDggMTYwLTkzLjMgMTYwLTIwOCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0Ny42IDE5LjkgOTEuMiA1Mi45IDEyNi4zQzM4IDQwNS43IDcgNDM5LjEgNi41IDQzOS41Yy02LjYgNy04LjQgMTcuMi00LjYgMjZTMTQuNCA0ODAgMjQgNDgwYzYxLjUgMCAxMTAtMjUuNyAxMzkuMS00Ni4zQzE5MiA0NDIuOCAyMjMuMiA0NDggMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyem0wIDM2OGMtMjYuNyAwLTUzLjEtNC4xLTc4LjQtMTIuMWwtMjIuNy03LjItMTkuNSAxMy44Yy0xNC4zIDEwLjEtMzMuOSAyMS40LTU3LjUgMjkgNy4zLTEyLjEgMTQuNC0yNS43IDE5LjktNDAuMmwxMC42LTI4LjEtMjAuNi0yMS44QzY5LjcgMzE0LjEgNDggMjgyLjIgNDggMjQwYzAtODguMiA5My4zLTE2MCAyMDgtMTYwczIwOCA3MS44IDIwOCAxNjAtOTMuMyAxNjAtMjA4IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTMyIDM4Ni4yYzI3LjUtMjcuMSA0NC02MS4xIDQ0LTk4LjIgMC04MC03Ni41LTE0Ni4xLTE3Ni4yLTE1Ny45QzM2OC4zIDcyLjUgMjk0LjMgMzIgMjA4IDMyIDkzLjEgMzIgMCAxMDMuNiAwIDE5MmMwIDM3IDE2LjUgNzEgNDQgOTguMi0xNS4zIDMwLjctMzcuMyA1NC41LTM3LjcgNTQuOS02LjMgNi43LTguMSAxNi41LTQuNCAyNSAzLjYgOC41IDEyIDE0IDIxLjIgMTQgNTMuNSAwIDk2LjctMjAuMiAxMjUuMi0zOC44IDkuMiAyLjEgMTguNyAzLjcgMjguNCA0LjlDMjA4LjEgNDA3LjYgMjgxLjggNDQ4IDM2OCA0NDhjMjAuOCAwIDQwLjgtMi40IDU5LjgtNi44QzQ1Ni4zIDQ1OS43IDQ5OS40IDQ4MCA1NTMgNDgwYzkuMiAwIDE3LjUtNS41IDIxLjItMTQgMy42LTguNSAxLjktMTguMy00LjQtMjUtLjQtLjMtMjIuNS0yNC4xLTM3LjgtNTQuOHptLTM5Mi44LTkyLjNMMTIyLjEgMzA1Yy0xNC4xIDkuMS0yOC41IDE2LjMtNDMuMSAyMS40IDIuNy00LjcgNS40LTkuNyA4LTE0LjhsMTUuNS0zMS4xTDc3LjcgMjU2QzY0LjIgMjQyLjYgNDggMjIwLjcgNDggMTkyYzAtNjAuNyA3My4zLTExMiAxNjAtMTEyczE2MCA1MS4zIDE2MCAxMTItNzMuMyAxMTItMTYwIDExMmMtMTYuNSAwLTMzLTEuOS00OS01LjZsLTE5LjgtNC41ek00OTguMyAzNTJsLTI0LjcgMjQuNCAxNS41IDMxLjFjMi42IDUuMSA1LjMgMTAuMSA4IDE0LjgtMTQuNi01LjEtMjktMTIuMy00My4xLTIxLjRsLTE3LjEtMTEuMS0xOS45IDQuNmMtMTYgMy43LTMyLjUgNS42LTQ5IDUuNi01NCAwLTEwMi4yLTIwLjEtMTMxLjMtNDkuN0MzMzggMzM5LjUgNDE2IDI3Mi45IDQxNiAxOTJjMC0zLjQtLjQtNi43LS43LTEwQzQ3OS43IDE5Ni41IDUyOCAyMzguOCA1MjggMjg4YzAgMjguNy0xNi4yIDUwLjYtMjkuNyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tcGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDcuOTQgMTI5Ljg2TDIwMy42IDE5NS44M2EzMS45MzggMzEuOTM4IDAgMCAwLTE1Ljc3IDE1Ljc3bC02NS45NyAxNDQuMzRjLTcuNjEgMTYuNjUgOS41NCAzMy44MSAyNi4yIDI2LjJsMTQ0LjM0LTY1Ljk3YTMxLjkzOCAzMS45MzggMCAwIDAgMTUuNzctMTUuNzdsNjUuOTctMTQ0LjM0YzcuNjEtMTYuNjYtOS41NC0zMy44MS0yNi4yLTI2LjJ6bS03Ny4zNiAxNDguNzJjLTEyLjQ3IDEyLjQ3LTMyLjY5IDEyLjQ3LTQ1LjE2IDAtMTIuNDctMTIuNDctMTIuNDctMzIuNjkgMC00NS4xNiAxMi40Ny0xMi40NyAzMi42OS0xMi40NyA0NS4xNiAwIDEyLjQ3IDEyLjQ3IDEyLjQ3IDMyLjY5IDAgNDUuMTZ6TTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMjggMC0yMDAtODkuNzItMjAwLTIwMFMxMzcuNzIgNTYgMjQ4IDU2czIwMCA4OS43MiAyMDAgMjAwLTg5LjcyIDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMy45NDEgNjUuOTQxbC01MS44ODItNTEuODgyQTQ4IDQ4IDAgMCAwIDM0OC4xMTggMEgxNzZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2NDhINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MzIwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjI0YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTQ4aDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWOTkuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTI2NiA0NjRINTRhNiA2IDAgMCAxLTYtNlYxNTBhNiA2IDAgMCAxIDYtNmg3NHYyMjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg5NnY0MmE2IDYgMCAwIDEtNiA2em0xMjgtOTZIMTgyYTYgNiAwIDAgMS02LTZWNTRhNiA2IDAgMCAxIDYtNmgxMDZ2ODhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDg4djIwMmE2IDYgMCAwIDEtNiA2em02LTI1NmgtNjRWNDhoOS42MzJjMS41OTEgMCAzLjExNy42MzIgNC4yNDMgMS43NTdsNDguMzY4IDQ4LjM2OGE2IDYgMCAwIDEgMS43NTcgNC4yNDNWMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzEgODkuNDUxLTIwMCAyMDAtMjAwIDExMC41MzIgMCAyMDAgODkuNDUxIDIwMCAyMDAgMCAxMTAuNTMyLTg5LjQ1MSAyMDAtMjAwIDIwMHptMTA3LjM1MS0xMDEuMDY0Yy05LjYxNCA5LjcxMi00NS41MyA0MS4zOTYtMTA0LjA2NSA0MS4zOTYtODIuNDMgMC0xNDAuNDg0LTYxLjQyNS0xNDAuNDg0LTE0MS41NjcgMC03OS4xNTIgNjAuMjc1LTEzOS40MDEgMTM5Ljc2Mi0xMzkuNDAxIDU1LjUzMSAwIDg4LjczOCAyNi42MiA5Ny41OTMgMzQuNzc5YTExLjk2NSAxMS45NjUgMCAwIDEgMS45MzYgMTUuMzIybC0xOC4xNTUgMjguMTEzYy0zLjg0MSA1Ljk1LTExLjk2NiA3LjI4Mi0xNy40OTkgMi45MjEtOC41OTUtNi43NzYtMzEuODE0LTIyLjUzOC02MS43MDgtMjIuNTM4LTQ4LjMwMyAwLTc3LjkxNiAzNS4zMy03Ny45MTYgODAuMDgyIDAgNDEuNTg5IDI2Ljg4OCA4My42OTIgNzguMjc3IDgzLjY5MiAzMi42NTcgMCA1Ni44NDMtMTkuMDM5IDY1LjcyNi0yNy4yMjUgNS4yNy00Ljg1NyAxMy41OTYtNC4wMzkgMTcuODIgMS43MzhsMTkuODY1IDI3LjE3YTExLjk0NyAxMS45NDcgMCAwIDEtMS4xNTIgMTUuNTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyNy45IDMySDQ4LjFDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDguMSA0OGg0NzkuOGMyNi42IDAgNDguMS0yMS41IDQ4LjEtNDhWODBjMC0yNi41LTIxLjUtNDgtNDguMS00OHpNNTQuMSA4MGg0NjcuOGMzLjMgMCA2IDIuNyA2IDZ2NDJINDguMVY4NmMwLTMuMyAyLjctNiA2LTZ6bTQ2Ny44IDM1Mkg1NC4xYy0zLjMgMC02LTIuNy02LTZWMjU2aDQ3OS44djE3MGMwIDMuMy0yLjcgNi02IDZ6TTE5MiAzMzJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC03MmMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNzJjNi42IDAgMTIgNS40IDEyIDEyem0xOTIgMHY0MGMwIDYuNi01LjQgMTItMTIgMTJIMjM2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmgxMzZjNi42IDAgMTIgNS40IDEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdEaXp6eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS0zMy44LTIxNy45YzcuOC03LjggNy44LTIwLjUgMC0yOC4zTDE5Ni4zIDE5MmwxNy45LTE3LjljNy44LTcuOCA3LjgtMjAuNSAwLTI4LjMtNy44LTcuOC0yMC41LTcuOC0yOC4zIDBMMTY4IDE2My43bC0xNy44LTE3LjhjLTcuOC03LjgtMjAuNS03LjgtMjguMyAwLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zbDE3LjkgMTcuOS0xNy45IDE3LjljLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zIDcuOCA3LjggMjAuNSA3LjggMjguMyAwbDE3LjgtMTcuOCAxNy44IDE3LjhjNy45IDcuNyAyMC41IDcuNyAyOC40LS4yem0xNjAtOTIuMmMtNy44LTcuOC0yMC41LTcuOC0yOC4zIDBMMzI4IDE2My43bC0xNy44LTE3LjhjLTcuOC03LjgtMjAuNS03LjgtMjguMyAwLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zbDE3LjkgMTcuOS0xNy45IDE3LjljLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zIDcuOCA3LjggMjAuNSA3LjggMjguMyAwbDE3LjgtMTcuOCAxNy44IDE3LjhjNy44IDcuOCAyMC41IDcuOCAyOC4zIDAgNy44LTcuOCA3LjgtMjAuNSAwLTI4LjNsLTE3LjgtMTggMTcuOS0xNy45YzcuNy03LjggNy43LTIwLjQgMC0yOC4yek0yNDggMjcyYy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0IDY0LTI4LjcgNjQtNjQtMjguNy02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRG90Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1NmMxMTAuNTMyIDAgMjAwIDg5LjQ1MSAyMDAgMjAwIDAgMTEwLjUzMi04OS40NTEgMjAwLTIwMCAyMDAtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzIgODkuNDUxLTIwMCAyMDAtMjAwbTAtNDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDE2OGMtNDQuMTgzIDAtODAgMzUuODE3LTgwIDgwczM1LjgxNyA4MCA4MCA4MCA4MC0zNS44MTcgODAtODAtMzUuODE3LTgwLTgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMi4zIDM0NC45bDMyLTMyYzUtNSAxMy43LTEuNSAxMy43IDUuN1Y0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGgyNzMuNWM3LjEgMCAxMC43IDguNiA1LjcgMTMuN2wtMzIgMzJjLTEuNSAxLjUtMy41IDIuMy01LjcgMi4zSDQ4djM1MmgzNTJWMzUwLjVjMC0yLjEuOC00LjEgMi4zLTUuNnptMTU2LjYtMjAxLjhMMjk2LjMgNDA1LjdsLTkwLjQgMTBjLTI2LjIgMi45LTQ4LjUtMTkuMi00NS42LTQ1LjZsMTAtOTAuNEw0MzIuOSAxNy4xYzIyLjktMjIuOSA1OS45LTIyLjkgODIuNyAwbDQzLjIgNDMuMmMyMi45IDIyLjkgMjIuOSA2MCAuMSA4Mi44ek00NjAuMSAxNzRMNDAyIDExNS45IDIxNi4yIDMwMS44bC03LjMgNjUuMyA2NS4zLTcuM0w0NjAuMSAxNzR6bTY0LjgtNzkuN2wtNDMuMi00My4yYy00LjEtNC4xLTEwLjgtNC4xLTE0LjggMEw0MzYgODJsNTguMSA1OC4xIDMwLjktMzAuOWM0LTQuMiA0LTEwLjgtLjEtMTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRW52ZWxvcGVPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NC41ODYgMTY0LjUxNmMtNC42OTctMy44ODMtMTExLjcyMy04OS45NS0xMzUuMjUxLTEwOC42NTdDMzM3LjIzMSAzOC4xOTEgMjk5LjQzNyAwIDI1NiAwYy00My4yMDUgMC04MC42MzYgMzcuNzE3LTEwMy4zMzUgNTUuODU5LTI0LjQ2MyAxOS40NS0xMzEuMDcgMTA1LjE5NS0xMzUuMTUgMTA4LjU0OUE0OC4wMDQgNDguMDA0IDAgMCAwIDAgMjAxLjQ4NVY0NjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyMDEuNTA5YTQ4IDQ4IDAgMCAwLTE3LjQxNC0zNi45OTN6TTQ2NCA0NThhNiA2IDAgMCAxLTYgNkg1NGE2IDYgMCAwIDEtNi02VjIwNC4zNDdjMC0xLjgxMy44MTYtMy41MjYgMi4yMjYtNC42NjUgMTUuODctMTIuODE0IDEwOC43OTMtODcuNTU0IDEzMi4zNjQtMTA2LjI5M0MyMDAuNzU1IDc4Ljg4IDIzMi4zOTggNDggMjU2IDQ4YzIzLjY5MyAwIDU1Ljg1NyAzMS4zNjkgNzMuNDEgNDUuMzg5IDIzLjU3MyAxOC43NDEgMTE2LjUwMyA5My40OTMgMTMyLjM2NiAxMDYuMzE2YTUuOTkgNS45OSAwIDAgMSAyLjIyNCA0LjY2M1Y0NTh6bS0zMS45OTEtMTg3LjcwNGM0LjI0OSA1LjE1OSAzLjQ2NSAxMi43OTUtMS43NDUgMTYuOTgxLTI4Ljk3NSAyMy4yODMtNTkuMjc0IDQ3LjU5Ny03MC45MjkgNTYuODYzQzMzNi42MzYgMzYyLjI4MyAyOTkuMjA1IDQwMCAyNTYgNDAwYy00My40NTIgMC04MS4yODctMzguMjM3LTEwMy4zMzUtNTUuODYtMTEuMjc5LTguOTY3LTQxLjc0NC0zMy40MTMtNzAuOTI3LTU2Ljg2NS01LjIxLTQuMTg3LTUuOTkzLTExLjgyMi0xLjc0NS0xNi45ODFsMTUuMjU4LTE4LjUyOGM0LjE3OC01LjA3MyAxMS42NTctNS44NDMgMTYuNzc5LTEuNzI2IDI4LjYxOCAyMy4wMDEgNTguNTY2IDQ3LjAzNSA3MC41NiA1Ni41NzFDMjAwLjE0MyAzMjAuNjMxIDIzMi4zMDcgMzUyIDI1NiAzNTJjMjMuNjAyIDAgNTUuMjQ2LTMwLjg4IDczLjQxLTQ1LjM4OSAxMS45OTQtOS41MzUgNDEuOTQ0LTMzLjU3IDcwLjU2My01Ni41NjggNS4xMjItNC4xMTYgMTIuNjAxLTMuMzQ2IDE2Ljc3OCAxLjcyN2wxNS4yNTggMTguNTI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFbnZlbG9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptMCA0OHY0MC44MDVjLTIyLjQyMiAxOC4yNTktNTguMTY4IDQ2LjY1MS0xMzQuNTg3IDEwNi40OS0xNi44NDEgMTMuMjQ3LTUwLjIwMSA0NS4wNzItNzMuNDEzIDQ0LjcwMS0yMy4yMDguMzc1LTU2LjU3OS0zMS40NTktNzMuNDEzLTQ0LjcwMUMxMDYuMTggMTk5LjQ2NSA3MC40MjUgMTcxLjA2NyA0OCAxNTIuODA1VjExMmg0MTZ6TTQ4IDQwMFYyMTQuMzk4YzIyLjkxNCAxOC4yNTEgNTUuNDA5IDQzLjg2MiAxMDQuOTM4IDgyLjY0NiAyMS44NTcgMTcuMjA1IDYwLjEzNCA1NS4xODYgMTAzLjA2MiA1NC45NTUgNDIuNzE3LjIzMSA4MC41MDktMzcuMTk5IDEwMy4wNTMtNTQuOTQ3IDQ5LjUyOC0zOC43ODMgODIuMDMyLTY0LjQwMSAxMDQuOTQ3LTgyLjY1M1Y0MDBINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0V5ZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzNCA0NzFMMzYgMy41MUExNiAxNiAwIDAgMCAxMy41MSA2bC0xMCAxMi40OUExNiAxNiAwIDAgMCA2IDQxbDU5OCA0NjcuNDlhMTYgMTYgMCAwIDAgMjIuNDktMi40OWwxMC0xMi40OUExNiAxNiAwIDAgMCA2MzQgNDcxek0yOTYuNzkgMTQ2LjQ3bDEzNC43OSAxMDUuMzhDNDI5LjM2IDE5MS45MSAzODAuNDggMTQ0IDMyMCAxNDRhMTEyLjI2IDExMi4yNiAwIDAgMC0yMy4yMSAyLjQ3em00Ni40MiAyMTkuMDdMMjA4LjQyIDI2MC4xNkMyMTAuNjUgMzIwLjA5IDI1OS41MyAzNjggMzIwIDM2OGExMTMgMTEzIDAgMCAwIDIzLjIxLTIuNDZ6TTMyMCAxMTJjOTguNjUgMCAxODkuMDkgNTUgMjM3LjkzIDE0NGEyODUuNTMgMjg1LjUzIDAgMCAxLTQ0IDYwLjJsMzcuNzQgMjkuNWEzMzMuNyAzMzMuNyAwIDAgMCA1Mi45LTc1LjExIDMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTlDNTUwLjI5IDEzNS41OSA0NDIuOTMgNjQgMzIwIDY0Yy0zNi43IDAtNzEuNzEgNy0xMDQuNjMgMTguODFsNDYuNDEgMzYuMjljMTguOTQtNC4zIDM4LjM0LTcuMSA1OC4yMi03LjF6bTAgMjg4Yy05OC42NSAwLTE4OS4wOC01NS0yMzcuOTMtMTQ0YTI4NS40NyAyODUuNDcgMCAwIDEgNDQuMDUtNjAuMTlsLTM3Ljc0LTI5LjVhMzMzLjYgMzMzLjYgMCAwIDAtNTIuODkgNzUuMSAzMi4zNSAzMi4zNSAwIDAgMCAwIDI5LjE5Qzg5LjcyIDM3Ni40MSAxOTcuMDggNDQ4IDMyMCA0NDhjMzYuNyAwIDcxLjcxLTcuMDUgMTA0LjYzLTE4LjgxbC00Ni40MS0zNi4yOEMzNTkuMjggMzk3LjIgMzM5Ljg5IDQwMCAzMjAgNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFeWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE0NGExMTAuOTQgMTEwLjk0IDAgMCAwLTMxLjI0IDUgNTUuNCA1NS40IDAgMCAxIDcuMjQgMjcgNTYgNTYgMCAwIDEtNTYgNTYgNTUuNCA1NS40IDAgMCAxLTI3LTcuMjRBMTExLjcxIDExMS43MSAwIDEgMCAyODggMTQ0em0yODQuNTIgOTcuNEM1MTguMjkgMTM1LjU5IDQxMC45MyA2NCAyODggNjRTNTcuNjggMTM1LjY0IDMuNDggMjQxLjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAgMjkuMTlDNTcuNzEgMzc2LjQxIDE2NS4wNyA0NDggMjg4IDQ0OHMyMzAuMzItNzEuNjQgMjg0LjUyLTE3Ny40MWEzMi4zNSAzMi4zNSAwIDAgMCAwLTI5LjE5ek0yODggNDAwYy05OC42NSAwLTE4OS4wOS01NS0yMzcuOTMtMTQ0Qzk4LjkxIDE2NyAxODkuMzQgMTEyIDI4OCAxMTJzMTg5LjA5IDU1IDIzNy45MyAxNDRDNDc3LjEgMzQ1IDM4Ni42NiA0MDAgMjg4IDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjQ4djI4YzAgNi42LTUuNCAxMi0xMiAxMkgxMDhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMjhjMC02LjYgNS40LTEyIDEyLTEyaDE2OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bS0xMiA3MkgxMDhjLTYuNiAwLTEyIDUuNC0xMiAxMnYyOGMwIDYuNiA1LjQgMTIgMTIgMTJoMTY4YzYuNiAwIDEyLTUuNCAxMi0xMnYtMjhjMC02LjYtNS40LTEyLTEyLTEyem0xMDgtMTg4LjFWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OEMwIDIxLjUgMjEuNSAwIDQ4IDBoMjA0LjFDMjY0LjggMCAyNzcgNS4xIDI4NiAxNC4xTDM2OS45IDk4YzkgOC45IDE0LjEgMjEuMiAxNC4xIDMzLjl6bS0xMjgtODBWMTI4aDc2LjFMMjU2IDUxLjl6TTMzNiA0NjRWMTc2SDIzMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNDhINDh2NDE2aDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LjMgMTYwdjMyaDMydi0zMnptNjQtOTZoLTMydjMyaDMyem0tNjQgMzJ2MzJoMzJWOTZ6bTY0IDMyaC0zMnYzMmgzMnptMTc3LjYtMzAuMUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0yNTYgNTEuOWw3Ni4xIDc2LjFIMjU2ek0zMzYgNDY0SDQ4VjQ4aDc5Ljd2MTZoMzJWNDhIMjA4djEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR6TTE5NC4yIDI2NS43Yy0xLjEtNS42LTYtOS43LTExLjgtOS43aC0yMi4xdi0zMmgtMzJ2MzJsLTE5LjcgOTcuMUMxMDIgMzg1LjYgMTI2LjggNDE2IDE2MCA0MTZjMzMuMSAwIDU3LjktMzAuMiA1MS41LTYyLjZ6bS0zMy45IDEyNC40Yy0xNy45IDAtMzIuNC0xMi4xLTMyLjQtMjdzMTQuNS0yNyAzMi40LTI3IDMyLjQgMTIuMSAzMi40IDI3LTE0LjUgMjctMzIuNCAyN3ptMzItMTk4LjFoLTMydjMyaDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlQXVkaW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5Ljk0MSA5Ny45NDFsLTgzLjg4Mi04My44ODJBNDggNDggMCAwIDAgMjUyLjExOCAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djQxNmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDI4OGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjEzMS44ODJhNDggNDggMCAwIDAtMTQuMDU5LTMzLjk0MXpNMzMyLjExOCAxMjhIMjU2VjUxLjg4MkwzMzIuMTE4IDEyOHpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNHYyODhINDh6bTE0NC03Ni4wMjRjMCAxMC42OTEtMTIuOTI2IDE2LjA0NS0yMC40ODUgOC40ODVMMTM2IDM2MC40ODZoLTI4Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi01NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDI4bDM1LjUxNS0zNi45NDdjNy41Ni03LjU2IDIwLjQ4NS0yLjIwNiAyMC40ODUgOC40ODV2MTM1Ljk1MnptNDEuMjAxLTQ3LjEzYzkuMDUxLTkuMjk3IDkuMDYtMjQuMTMzLjAwMS0zMy40MzktMjIuMTQ5LTIyLjc1MiAxMi4yMzUtNTYuMjQ2IDM0LjM5NS0zMy40ODEgMjcuMTk4IDI3Ljk0IDI3LjIxMiA3Mi40NDQuMDAxIDEwMC40MDEtMjEuNzkzIDIyLjM4Ni01Ni45NDctMTAuMzE1LTM0LjM5Ny0zMy40ODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OS45IDM0OS4xbC0uMi0uMi0zMi44LTI4LjkgMzIuOC0yOC45YzMuNi0zLjIgNC04LjguOC0xMi40bC0uMi0uMi0xNy40LTE4LjZjLTMuNC0zLjYtOS0zLjctMTIuNC0uNGwtNTcuNyA1NC4xYy0zLjcgMy41LTMuNyA5LjQgMCAxMi44bDU3LjcgNTQuMWMxLjYgMS41IDMuOCAyLjQgNiAyLjQgMi40IDAgNC44LTEgNi40LTIuOGwxNy40LTE4LjZjMy4zLTMuNSAzLjEtOS4xLS40LTEyLjR6bTIyMC0yNTEuMkwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0yNTYgNTEuOWw3Ni4xIDc2LjFIMjU2ek0zMzYgNDY0SDQ4VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0ek0yMDkuNiAyMTRjLTQuNy0xLjQtOS41IDEuMy0xMC45IDZMMTQ0IDQwOC4xYy0xLjQgNC43IDEuMyA5LjYgNiAxMC45bDI0LjQgNy4xYzQuNyAxLjQgOS42LTEuNCAxMC45LTZMMjQwIDIzMS45YzEuNC00LjctMS4zLTkuNi02LTEwLjl6bTI0LjUgNzYuOWwuMi4yIDMyLjggMjguOS0zMi44IDI4LjljLTMuNiAzLjItNCA4LjgtLjggMTIuNGwuMi4yIDE3LjQgMTguNmMzLjMgMy41IDguOSAzLjcgMTIuNC40bDU3LjctNTQuMWMzLjctMy41IDMuNy05LjQgMC0xMi44bC01Ny43LTU0LjFjLTMuNS0zLjMtOS4xLTMuMi0xMi40LjRsLTE3LjQgMTguNmMtMy4zIDMuNS0zLjEgOS4xLjQgMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUV4Y2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHptMjEyLTI0MGgtMjguOGMtNC40IDAtOC40IDIuNC0xMC41IDYuMy0xOCAzMy4xLTIyLjIgNDIuNC0yOC42IDU3LjctMTMuOS0yOS4xLTYuOS0xNy4zLTI4LjYtNTcuNy0yLjEtMy45LTYuMi02LjMtMTAuNi02LjNIMTI0Yy05LjMgMC0xNSAxMC0xMC40IDE4bDQ2LjMgNzgtNDYuMyA3OGMtNC43IDggMS4xIDE4IDEwLjQgMThoMjguOWM0LjQgMCA4LjQtMi40IDEwLjUtNi4zIDIxLjctNDAgMjMtNDUgMjguNi01Ny43IDE0LjkgMzAuMiA1LjkgMTUuOSAyOC42IDU3LjcgMi4xIDMuOSA2LjIgNi4zIDEwLjYgNi4zSDI2MGM5LjMgMCAxNS0xMCAxMC40LTE4TDIyNCAzMjBjLjctMS4xIDMwLjMtNTAuNSA0Ni4zLTc4IDQuNy04LTEuMS0xOC0xMC4zLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0zMi00OGgyMjRWMjg4bC0yMy41LTIzLjVjLTQuNy00LjctMTIuMy00LjctMTcgMEwxNzYgMzUybC0zOS41LTM5LjVjLTQuNy00LjctMTIuMy00LjctMTcgMEw4MCAzNTJ2NjR6bTQ4LTI0MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OCA0OC0yMS41IDQ4LTQ4LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVQZGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0yNTAuMi0xNDMuN2MtMTIuMi0xMi00Ny04LjctNjQuNC02LjUtMTcuMi0xMC41LTI4LjctMjUtMzYuOC00Ni4zIDMuOS0xNi4xIDEwLjEtNDAuNiA1LjQtNTYtNC4yLTI2LjItMzcuOC0yMy42LTQyLjYtNS45LTQuNCAxNi4xLS40IDM4LjUgNyA2Ny4xLTEwIDIzLjktMjQuOSA1Ni0zNS40IDc0LjQtMjAgMTAuMy00NyAyNi4yLTUxIDQ2LjItMy4zIDE1LjggMjYgNTUuMiA3Ni4xLTMxLjIgMjIuNC03LjQgNDYuOC0xNi41IDY4LjQtMjAuMSAxOC45IDEwLjIgNDEgMTcgNTUuOCAxNyAyNS41IDAgMjgtMjguMiAxNy41LTM4Ljd6bS0xOTguMSA3Ny44YzUuMS0xMy43IDI0LjUtMjkuNSAzMC40LTM1LTE5IDMwLjMtMzAuNCAzNS43LTMwLjQgMzV6bTgxLjYtMTkwLjZjNy40IDAgNi43IDMyLjEgMS44IDQwLjgtNC40LTEzLjktNC4zLTQwLjgtMS44LTQwLjh6bS0yNC40IDEzNi42YzkuNy0xNi45IDE4LTM3IDI0LjctNTQuNyA4LjMgMTUuMSAxOC45IDI3LjIgMzAuMSAzNS41LTIwLjggNC4zLTM4LjkgMTMuMS01NC44IDE5LjJ6bTEzMS42LTVzLTUgNi0zNy4zLTcuOGMzNS4xLTIuNiA0MC45IDUuNCAzNy4zIDcuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em03Mi02MFYyMzZjMC02LjYgNS40LTEyIDEyLTEyaDY5LjJjMzYuNyAwIDYyLjggMjcgNjIuOCA2Ni4zIDAgNzQuMy02OC43IDY2LjUtOTUuNSA2Ni41VjQwNGMwIDYuNi01LjQgMTItMTIgMTJIMTMyYy02LjYgMC0xMi01LjQtMTItMTJ6bTQ4LjUtODcuNGgyM2M3LjkgMCAxMy45LTIuNCAxOC4xLTcuMiA4LjUtOS44IDguNC0yOC41LjEtMzcuOC00LjEtNC42LTkuOS03LTE3LjQtN2gtMjMuOXY1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45NDEgOTcuOTQxbC04My44ODItODMuODgyQTQ4IDQ4IDAgMCAwIDI1Mi4xMTggMEg0OEMyMS40OSAwIDAgMjEuNDkgMCA0OHY0MTZjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyODhjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMzEuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTMzMi4xMTggMTI4SDI1NlY1MS44ODJMMzMyLjExOCAxMjh6TTQ4IDQ2NFY0OGgxNjB2MTA0YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0yMjguNjg3LTIxMS4zMDNMMjI0IDMwNS4zNzRWMjY4YzAtMTEuMDQ2LTguOTU0LTIwLTIwLTIwSDEwMGMtMTEuMDQ2IDAtMjAgOC45NTQtMjAgMjB2MTA0YzAgMTEuMDQ2IDguOTU0IDIwIDIwIDIwaDEwNGMxMS4wNDYgMCAyMC04Ljk1NCAyMC0yMHYtMzcuMzc0bDUyLjY4NyA1Mi42NzRDMjg2LjcwNCAzOTcuMzE4IDMwNCAzOTAuMjggMzA0IDM3NS45ODZWMjY0LjAxMWMwLTE0LjMxMS0xNy4zMDktMjEuMzE5LTI3LjMxMy0xMS4zMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHptMjIwLjEtMjA4Yy01LjcgMC0xMC42IDQtMTEuNyA5LjUtMjAuNiA5Ny43LTIwLjQgOTUuNC0yMSAxMDMuNS0uMi0xLjItLjQtMi42LS43LTQuMy0uOC01LjEuMy4yLTIzLjYtOTkuNS0xLjMtNS40LTYuMS05LjItMTEuNy05LjJoLTEzLjNjLTUuNSAwLTEwLjMgMy44LTExLjcgOS4xLTI0LjQgOTktMjQgOTYuMi0yNC44IDEwMy43LS4xLTEuMS0uMi0yLjUtLjUtNC4yLS43LTUuMi0xNC4xLTczLjMtMTkuMS05OS0xLjEtNS42LTYtOS43LTExLjgtOS43aC0xNi44Yy03LjggMC0xMy41IDcuMy0xMS43IDE0LjggOCAzMi42IDI2LjcgMTA5LjUgMzMuMiAxMzYgMS4zIDUuNCA2LjEgOS4xIDExLjcgOS4xaDI1LjJjNS41IDAgMTAuMy0zLjcgMTEuNi05LjFsMTcuOS03MS40YzEuNS02LjIgMi41LTEyIDMtMTcuM2wyLjkgMTcuM2MuMS40IDEyLjYgNTAuNSAxNy45IDcxLjQgMS4zIDUuMyA2LjEgOS4xIDExLjYgOS4xaDI0LjdjNS41IDAgMTAuMy0zLjcgMTEuNi05LjEgMjAuOC04MS45IDMwLjItMTE5IDM0LjUtMTM2IDEuOS03LjYtMy44LTE0LjktMTEuNi0xNC45aC0xNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYuMTc0IDgwYy00OS4xMzIgMC05My4zMDUtMzItMTYxLjkxMy0zMi0zMS4zMDEgMC01OC4zMDMgNi40ODItODAuNzIxIDE1LjE2OGE0OC4wNCA0OC4wNCAwIDAgMCAyLjE0Mi0yMC43MjdDOTMuMDY3IDE5LjU3NSA3NC4xNjcgMS41OTQgNTEuMjAxLjEwNCAyMy4yNDItMS43MSAwIDIwLjQzMSAwIDQ4YzAgMTcuNzY0IDkuNjU3IDMzLjI2MiAyNCA0MS41NjJWNDk2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoMTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtODMuNDQzQzEwOS44NjkgMzk1LjI4IDE0My4yNTkgMzg0IDE5OS44MjYgMzg0YzQ5LjEzMiAwIDkzLjMwNSAzMiAxNjEuOTEzIDMyIDU4LjQ3OSAwIDEwMS45NzItMjIuNjE3IDEyOC41NDgtMzkuOTgxQzUwMy44NDYgMzY3LjE2MSA1MTIgMzUyLjA1MSA1MTIgMzM1Ljg1NVY5NS45MzdjMC0zNC40NTktMzUuMjY0LTU3Ljc2OC02Ni45MDQtNDQuMTE3QzQwOS4xOTMgNjcuMzA5IDM3MS42NDEgODAgMzM2LjE3NCA4MHpNNDY0IDMzNmMtMjEuNzgzIDE1LjQxMi02MC44MjQgMzItMTAyLjI2MSAzMi01OS45NDUgMC0xMDIuMDAyLTMyLTE2MS45MTMtMzItNDMuMzYxIDAtOTYuMzc5IDkuNDAzLTEyNy44MjYgMjRWMTI4YzIxLjc4NC0xNS40MTIgNjAuODI0LTMyIDEwMi4yNjEtMzIgNTkuOTQ1IDAgMTAyLjAwMiAzMiAxNjEuOTEzIDMyIDQzLjI3MSAwIDk2LjMyLTE3LjM2NiAxMjcuODI2LTMydjI0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmx1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTk2LTMxMmMtNDQuMiAwLTgwIDM1LjgtODAgODBzMzUuOCA4MCA4MCA4MCA4MC0zNS44IDgwLTgwLTM1LjgtODAtODAtODB6bTAgMTI4Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMC03MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bS0xMTIgMjRjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODAgMzUuOCA4MCA4MCA4MCA4MC0zNS44IDgwLTgwem0tODAgNDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0wLTcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptMTYwIDE0NEgxODRjLTEzLjIgMC0yNCAxMC44LTI0IDI0czEwLjggMjQgMjQgMjRoMTI4YzEzLjIgMCAyNC0xMC44IDI0LTI0cy0xMC44LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyNy45IDIyNEg0ODB2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI3MmwtNjQtNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQwMGMxNi41IDAgMzEuOS04LjUgNDAuNy0yMi42bDc5LjktMTI4YzIwLTMxLjktMy03My40LTQwLjctNzMuNHpNNDggMTE4YzAtMy4zIDIuNy02IDYtNmgxMzQuMWw2NCA2NEg0MjZjMy4zIDAgNiAyLjcgNiA2djQySDE1MmMtMTYuOCAwLTMyLjQgOC44LTQxLjEgMjMuMkw0OCAzNTEuNHptNDAwIDI4Mkg3Mmw3Ny4yLTEyOEg1Mjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMTI4SDI3MmwtNTQuNjMtNTQuNjNjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNzZjMC0yNi41MS0yMS40OS00OC00OC00OHptMCAyNzJINDhWMTEyaDE0MC4xMmw1NC42MyA1NC42M2M2IDYgMTQuMTQgOS4zNyAyMi42MyA5LjM3SDQ2NHYyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbnRBd2Vzb21lTG9nb0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM5OTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NC42IDBINTcuNEMyNS45IDAgMCAyNS45IDAgNTcuNHYzOTcuM0MwIDQ4Ni4xIDI1LjkgNTEyIDU3LjQgNTEyaDM5Ny4zYzMxLjQgMCA1Ny40LTI1LjkgNTcuNC01Ny40VjU3LjRDNTEyIDI1LjkgNDg2LjEgMCA0NTQuNiAwem0tNTguOSAzMjQuOWMwIDQuOC00LjEgNi45LTguOSA4LjktMTkuMiA4LjEtMzkuNyAxNS43LTYxLjUgMTUuNy00MC41IDAtNjguNy00NC44LTE2My4yIDIuNXY1MS44YzAgMzAuMy00NS43IDMwLjItNDUuNyAwdi0yNTBjLTktNy0xNS0xNy45LTE1LTMwLjMgMC0yMSAxNy4xLTM4LjIgMzguMi0zOC4yIDIxIDAgMzguMiAxNy4xIDM4LjIgMzguMiAwIDEyLjItNS44IDIzLjItMTQuOSAzMC4ydjIxYzM3LjEtMTIgNjUuNS0zNC40IDE0Ni4xLTMuNCAyNi42IDExLjQgNjguNy0xNS43IDc2LjUtMTUuNyA1LjUgMCAxMC4zIDQuMSAxMC4zIDguOXYxNjAuNHptNDMyLjktMTc0LjJoLTEzN3Y3MC4xSDgyNWMzOS44IDAgNDAuNCA2Mi4yIDAgNjIuMkg2OTEuNnYxMDUuNmMwIDQ1LjUtNzAuNyA0Ni40LTcwLjcgMFYxMjguM2MwLTIyIDE4LTM5LjggMzkuOC0zOS44aDE2Ny44YzM5LjYgMCA0MC41IDYyLjIuMSA2Mi4yem0xOTEuMSAyMy40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTY5LjkgMCAxNjkuOS0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS42IDAtODIuMS0xMzkuOCAwLTEzOS44IDgyLjUgMCA4Mi40IDEzOS44IDAgMTM5Ljh6bTM3Mi40IDUzLjRjLTE3LjUgMC0zMS40LTEzLjktMzEuNC0zMS40di0xMTdjMC02Mi40LTcyLjYtNTIuNS05OS4xLTE2LjR2MTMzLjRjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjNDMuMy01MS42IDE2Mi40LTYwLjQgMTYyLjQgMzkuM3YxNDEuNWMuMyAzMC40LTMxLjUgMzEuNC0zMS43IDMxLjR6bTE3OS43IDIuOWMtNDQuMyAwLTY4LjMtMjIuOS02OC4zLTY1LjhWMjM1LjJIMTQ4OGMtMzUuNiAwLTM2LjctNTUuMyAwLTU1LjNoMTUuNXYtMzcuM2MwLTQxLjMgNjMuOC00Mi4xIDYzLjggMHYzNy41aDI0LjljMzUuNCAwIDM1LjcgNTUuMyAwIDU1LjNoLTI0Ljl2MTA4LjVjMCAyOS42IDI2LjEgMjYuMyAyNy40IDI2LjMgMzEuNCAwIDUyLjYgNTYuMy0yMi45IDU2LjN6TTE5OTIgMTIzYy0xOS41LTUwLjItOTUuNS01MC0xMTQuNSAwLTEwNy4zIDI3NS43LTk5LjUgMjUyLjctOTkuNSAyNjIuOCAwIDQyLjggNTguMyA1MS4yIDcyLjEgMTQuNGwxMy41LTM1LjlIMjAwNmwxMyAzNS45YzE0LjIgMzcuNyA3Mi4xIDI3LjIgNzIuMS0xNC40IDAtMTAuMSA1LjMgNi44LTk5LjEtMjYyLjh6bS0xMDguOSAxNzkuMWw1MS43LTE0Mi45IDUxLjggMTQyLjloLTEwMy41em01OTEuMy04NS42bC01My43IDE3Ni4zYy0xMi40IDQxLjItNzIgNDEtODQgMGwtNDIuMy0xMzUuOS00Mi4zIDEzNS45Yy0xMi40IDQwLjktNzIgNDEuMi04NC41IDBsLTU0LjItMTc2LjNjLTEyLjUtMzkuNCA0OS44LTU2LjEgNjAuMi0xNi45TDIyMTMgMzQybDQ1LjMtMTM5LjVjMTAuOS0zMi43IDU5LjYtMzQuNyA3MS4yIDBsNDUuMyAxMzkuNSAzOS4zLTE0Mi40YzEwLjMtMzguMyA3Mi42LTIzLjggNjAuMyAxNi45em0yNzUuNCA3NS4xYzAtNDIuNC0zMy45LTExNy41LTExOS41LTExNy41LTczLjIgMC0xMjQuNCA1Ni4zLTEyNC40IDEyNiAwIDc3LjIgNTUuMyAxMjYuNCAxMjguNSAxMjYuNCAzMS43IDAgOTMtMTEuNSA5My0zOS44IDAtMTguMy0yMS4xLTMxLjUtMzkuMy0yMi40LTQ5LjQgMjYuMi0xMDkgOC40LTExNS45LTQzLjhoMTQ4LjNjMTYuMyAwIDI5LjMtMTMuNCAyOS4zLTI4Ljl6TTI1NzEgMjc3LjdjOS41LTczLjQgMTEzLjktNjguNiAxMTguNiAwSDI1NzF6bTMxNi43IDE0OC44Yy0zMS40IDAtODEuNi0xMC41LTk2LjYtMzEuOS0xMi40LTE3IDIuNS0zOS44IDIxLjgtMzkuOCAxNi4zIDAgMzYuOCAyMi45IDc3LjcgMjIuOSAyNy40IDAgNDAuNC0xMSA0MC40LTI1LjggMC0zOS44LTE0Mi45LTcuNC0xNDIuOS0xMDIgMC00MC40IDM1LjMtNzUuNyA5OC42LTc1LjcgMzEuNCAwIDc0LjEgOS45IDg3LjYgMjkuNCAxMC44IDE0LjgtMS40IDM2LjItMjAuOSAzNi4yLTE1LjEgMC0yNi43LTE3LjMtNjYuMi0xNy4zLTIyLjkgMC0zNy44IDEwLjUtMzcuOCAyMy44IDAgMzUuOSAxNDIuNCA2IDE0Mi40IDEwMy4xLS4xIDQzLjctMzcuNCA3Ny4xLTEwNC4xIDc3LjF6bTI2Ni44LTI1Mi40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTcwLjEgMCAxNjkuNi0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS44IDAtODItMTM5LjggMC0xMzkuOCA4Mi41IDAgODIuNCAxMzkuOCAwIDEzOS44em00NzYuOSAyMlYyNjguN2MwLTUzLjgtNjEuNC00NS44LTg1LjctMTAuNXYxMzRjMCA0MS4zLTYzLjggNDIuMS02My44IDBWMjY4LjdjMC01Mi4xLTU5LjUtNDcuNC04NS43LTEwLjF2MTMzLjZjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjOS45LTE0LjQgNDEuOC0zNy4zIDc4LjYtMzcuMyAzNS4zIDAgNTcuNyAxNi40IDY2LjcgNDMuOCAxMy45LTIxLjggNDUuOC00My44IDgyLjYtNDMuOCA0NC4zIDAgNzAuNyAyMy40IDcwLjcgNzIuN3YxNDUuM2MuNSAxNy4zLTEzLjUgMzEuNC0zMS45IDMxLjQgMy41LjEtMzEuMyAxLjEtMzEuMy0zMS4zek0zOTkyIDI5MS42YzAtNDIuNC0zMi40LTExNy41LTExNy45LTExNy41LTczLjIgMC0xMjcuNSA1Ni4zLTEyNy41IDEyNiAwIDc3LjIgNTguMyAxMjYuNCAxMzEuNiAxMjYuNCAzMS43IDAgOTEuNS0xMS41IDkxLjUtMzkuOCAwLTE4LjMtMjEuMS0zMS41LTM5LjMtMjIuNC00OS40IDI2LjItMTEwLjUgOC40LTExNy41LTQzLjhoMTQ5LjhjMTYuMyAwIDI5LjEtMTMuNCAyOS4zLTI4Ljl6bS0xODAuNS0xMy45YzkuNy03NC40IDExNS45LTY4LjMgMTIwLjEgMGgtMTIwLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Zyb3duT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS00OC0yNDhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyem0xMjgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0tODAgMTEyYy0zNS42IDAtODguOCAyMS4zLTk1LjggNjEuMi0yIDExLjggOSAyMS41IDIwLjUgMTguMSAzMS4yLTkuNiA1OS40LTE1LjMgNzUuMy0xNS4zczQ0LjEgNS43IDc1LjMgMTUuM2MxMS40IDMuNSAyMi41LTYuMyAyMC41LTE4LjEtNy0zOS45LTYwLjItNjEuMi05NS44LTYxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Zyb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bS04MCAxMjhjLTQwLjIgMC03OCAxNy43LTEwMy44IDQ4LjYtOC41IDEwLjItNy4xIDI1LjMgMy4xIDMzLjggMTAuMiA4LjQgMjUuMyA3LjEgMzMuOC0zLjEgMTYuNi0xOS45IDQxLTMxLjQgNjYuOS0zMS40czUwLjMgMTEuNCA2Ni45IDMxLjRjOC4xIDkuNyAyMy4xIDExLjkgMzMuOCAzLjEgMTAuMi04LjUgMTEuNS0yMy42IDMuMS0zMy44QzMyNiAzMjEuNyAyODguMiAzMDQgMjQ4IDMwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRnV0Ym9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4My44IDE3OS40QzQ0OS44IDc0LjYgMzUyLjYgOCAyNDguMSA4Yy0yNS40IDAtNTEuMiAzLjktNzYuNyAxMi4yQzQxLjIgNjIuNS0zMC4xIDIwMi40IDEyLjIgMzMyLjYgNDYuMiA0MzcuNCAxNDMuNCA1MDQgMjQ3LjkgNTA0YzI1LjQgMCA1MS4yLTMuOSA3Ni43LTEyLjIgMTMwLjItNDIuMyAyMDEuNS0xODIuMiAxNTkuMi0zMTIuNHptLTc0LjUgMTkzLjdsLTUyLjIgNi40LTQzLjctNjAuOSAyNC40LTc1LjIgNzEuMS0yMi4xIDM4LjkgMzYuNGMtLjIgMzAuNy03LjQgNjEuMS0yMS43IDg5LjItNC43IDkuMy0xMC43IDE3LjgtMTYuOCAyNi4yem0wLTIzNS40bC0xMC40IDUzLjEtNzAuNyAyMi02NC4yLTQ2LjVWOTIuNWw0Ny40LTI2LjJjMzkuMiAxMyA3My40IDM4IDk3LjkgNzEuNHpNMTg0LjkgNjYuNEwyMzIgOTIuNXY3My44bC02NC4yIDQ2LjUtNzAuNi0yMi0xMC4xLTUyLjVjMjQuMy0zMy40IDU3LjktNTguNiA5Ny44LTcxLjl6TTEzOSAzNzkuNUw4NS45IDM3M2MtMTQuNC0yMC4xLTM3LjMtNTkuNi0zNy44LTExNS4zbDM5LTM2LjQgNzEuMSAyMi4yIDI0LjMgNzQuMy00My41IDYxLjd6bTQ4LjIgNjdsLTIyLjQtNDguMSA0My42LTYxLjdIMjg3bDQ0LjMgNjEuNy0yMi40IDQ4LjFjLTYuMiAxLjgtNTcuNiAyMC40LTEyMS43IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dlbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMEgxMTJjLTQgMC03LjggMi0xMCA1LjRMMiAxNTIuNmMtMi45IDQuNC0yLjYgMTAuMi43IDE0LjJsMjc2IDM0MC44YzQuOCA1LjkgMTMuOCA1LjkgMTguNiAwbDI3Ni0zNDAuOGMzLjMtNC4xIDMuNi05LjguNy0xNC4yTDQ3NC4xIDUuNEM0NzEuOCAyIDQ2OC4xIDAgNDY0IDB6bS0xOS4zIDQ4bDYzLjMgOTZoLTY4LjRsLTUxLjctOTZoNTYuOHptLTIwMi4xIDBoOTAuN2w1MS43IDk2SDE5MWw1MS42LTk2em0tMTExLjMgMGg1Ni44bC01MS43IDk2SDY4bDYzLjMtOTZ6bS00MyAxNDRoNTEuNEwyMDggMzUyIDg4LjMgMTkyem0xMDIuOSAwaDE5My42TDI4OCA0MzUuMyAxOTEuMiAxOTJ6TTM2OCAzNTJsNjguMi0xNjBoNTEuNEwzNjggMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYgMTZIMTUyYy0yNi41IDAtNDggMjEuNS00OCA0OHYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxOTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMTY4IDk2aC0yNGMtOC44IDAtMTYtNy4yLTE2LTE2di04aDQwdjI0em0wLTQwaC00MHYtOGMwLTguOCA3LjItMTYgMTYtMTZoMjR2MjR6bTY0IDQwaC00OHYtMjRoNDh2MjR6bTAtNDBoLTQ4di0yNGg0OHYyNHptNjQgNDBoLTQ4di0yNGg0OHYyNHptMC00MGgtNDh2LTI0aDQ4djI0em01NiAyNGMwIDguOC03LjIgMTYtMTYgMTZoLTI0di0yNGg0MHY4em0wLTI0aC00MHYtMjRoMjRjOC44IDAgMTYgNy4yIDE2IDE2djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAwLjMgMjQ4YzEyLjQtMTguNyAxNS4xLTM3LjMgMTUuNy01Ni0uNS0xOC43LTMuMy0zNy4zLTE1LjctNTYtOC0xMi0yNS4xLTExLjQtMzIuNyAwLTEyLjQgMTguNy0xNS4xIDM3LjMtMTUuNyA1NiAuNSAxOC43IDMuMyAzNy4zIDE1LjcgNTYgOC4xIDEyIDI1LjIgMTEuNCAzMi43IDB6bTEyOCAwYzEyLjQtMTguNyAxNS4xLTM3LjMgMTUuNy01Ni0uNS0xOC43LTMuMy0zNy4zLTE1LjctNTYtOC0xMi0yNS4xLTExLjQtMzIuNyAwLTEyLjQgMTguNy0xNS4xIDM3LjMtMTUuNyA1NiAuNSAxOC43IDMuMyAzNy4zIDE1LjcgNTYgOC4xIDEyIDI1LjIgMTEuNCAzMi43IDB6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTA1LjYtMTUxLjRjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyA3LjkgNDcuMiA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5CZWFtU3dlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwIDE2MGMyOS41IDAgNTMuMy0yNi4zIDUzLjMtNTguNyAwLTI1LTMxLjctNzUuNS00Ni4yLTk3LjMtMy42LTUuMy0xMC43LTUuMy0xNC4yIDAtMTQuNSAyMS44LTQ2LjIgNzIuMy00Ni4yIDk3LjMgMCAzMi40IDIzLjggNTguNyA1My4zIDU4Ljd6TTI0OCA0MDBjNTEuOSAwIDExNS4zLTMyLjkgMTIzLjMtODAgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDggNDcuMSA3MS40IDgwIDEyMy4zIDgwem0xMzAuMy0xNjguM2MzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy42IDYuMiA0LjYgOS4zIDMuN3ptMTA1LjMtNTIuOWMtMjQuNiAxNS43LTQ2IDEyLjktNDYuNCAxMi45IDYuOSAyMC4yIDEwLjggNDEuOCAxMC44IDY0LjMgMCAxMTAuMy04OS43IDIwMC0yMDAgMjAwUzQ4IDM2Ni4zIDQ4IDI1NiAxMzcuNyA1NiAyNDggNTZjMzkuOCAwIDc2LjggMTEuOCAxMDggMzEuOSAxLjctOS41IDYuMy0yNC4xIDE3LjItNDUuN0MzMzYuNCAyMC42IDI5My43IDggMjQ4IDggMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OGMwLTI3LTQuNC01Mi45LTEyLjQtNzcuMnpNMTY4IDE4OS40YzEyLjMgMCAyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjggMTkuMi0yMS42IDMxLjUtMjEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpbkJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMDUuNi0xNTEuNGMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDcuOSA0Ny4xIDcxLjMgODAgMTIzLjMgODBzMTE1LjMtMzIuOSAxMjMuMy04MGMxLjYtOS44LTcuNy0xOC40LTE3LjctMTUuM3ptLTIzNS45LTcyLjljMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjN6bTE2MCAwYzMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluSGVhcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My42IDMwNC42Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS44LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgNy45IDQ3LjIgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zem0tMTUyLjgtNDguOWM0LjUgMS4yIDkuMi0xLjUgMTAuNS02bDE5LjQtNjkuOWM1LjYtMjAuMy03LjQtNDEuMS0yOC44LTQ0LjUtMTguNi0zLTM2LjQgOS44LTQxLjUgMjcuOWwtMiA3LjEtNy4xLTEuOWMtMTguMi00LjctMzguMiA0LjMtNDQuOSAyMi03LjcgMjAuMiAzLjggNDEuOSAyNC4yIDQ3LjJsNzAuMiAxOC4xem0xODguOC02NS4zYy02LjctMTcuNi0yNi43LTI2LjctNDQuOS0yMmwtNy4xIDEuOS0yLTcuMWMtNS0xOC4xLTIyLjgtMzAuOS00MS41LTI3LjktMjEuNCAzLjQtMzQuNCAyNC4yLTI4LjggNDQuNWwxOS40IDY5LjljMS4yIDQuNSA1LjkgNy4yIDEwLjUgNmw3MC4yLTE4LjJjMjAuNC01LjMgMzEuOS0yNi45IDI0LjItNDcuMXpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluU3F1aW50VGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE3LjEgMzg0LjFjLTI1LjggMy43LTg0IDEzLjctMTAwLjkgMzAuNi0yMS45IDIxLjktMjEuNSA1Ny45LjkgODAuM3M1OC4zIDIyLjggODAuMy45QzExNC4zIDQ3OSAxMjQuMyA0MjAuOCAxMjggMzk1Yy44LTYuNC00LjYtMTEuOC0xMC45LTEwLjl6bS00MS4yLTQxLjdDNDAuMyAyNjggNTMgMTc2LjEgMTE0LjYgMTE0LjYgMTUyLjQgNzYuOCAyMDIuNiA1NiAyNTYgNTZjMzYuMiAwIDcwLjggOS44IDEwMS4yIDI3LjcgMy44LTIwLjMgOC0zNi4xIDEyLTQ4LjNDMzMzLjggMTcuMiAyOTQuOSA4IDI1NiA4IDE5Mi41IDggMTI5LjEgMzIuMiA4MC42IDgwLjZjLTc0LjEgNzQuMS05MS4zIDE4My40LTUyIDI3NCAxMi4yLTQuMSAyNy43LTguMyA0Ny4zLTEyLjJ6bTM1Mi4zLTE4Ny42YzQ1IDc2LjYgMzQuOSAxNzYuOS0zMC44IDI0Mi42LTM3LjggMzcuOC04OCA1OC42LTE0MS40IDU4LjYtMzAuNSAwLTU5LjgtNy04Ni40LTE5LjgtMy45IDE5LjUtOCAzNS0xMi4yIDQ3LjIgMzEuNCAxMy42IDY1IDIwLjYgOTguNyAyMC42IDYzLjUgMCAxMjYuOS0yNC4yIDE3NS40LTcyLjYgNzguMS03OC4xIDkzLjEtMTk1LjQgNDUuMi0yODguNi0xMi4zIDQtMjguMiA4LjEtNDguNSAxMnptLTMzLjMtMjYuOWMyNS44LTMuNyA4NC0xMy43IDEwMC45LTMwLjYgMjEuOS0yMS45IDIxLjUtNTcuOS0uOS04MC4zcy01OC4zLTIyLjgtODAuMy0uOUMzOTcuNyAzMyAzODcuNyA5MS4yIDM4NCAxMTdjLS44IDYuNCA0LjYgMTEuOCAxMC45IDEwLjl6bS0xODcgMTA4LjNjLTMtMy03LjItNC4yLTExLjQtMy4yTDEwNiAyNTUuN2MtNS43IDEuNC05LjUgNi43LTkuMSAxMi42LjUgNS44IDUuMSAxMC41IDEwLjkgMTFsNTIuMyA0LjggNC44IDUyLjNjLjUgNS44IDUuMiAxMC40IDExIDEwLjloLjljNS41IDAgMTAuMy0zLjcgMTEuNy05LjFsMjIuNi05MC41YzEtNC4yLS4yLTguNS0zLjItMTEuNXptMzkuNy0yNS4xbDkwLjUtMjIuNmM1LjctMS40IDkuNS02LjcgOS4xLTEyLjYtLjUtNS44LTUuMS0xMC41LTEwLjktMTFsLTUyLjMtNC44LTQuOC01Mi4zYy0uNS01LjgtNS4yLTEwLjQtMTEtMTAuOS01LjYtLjEtMTEuMiAzLjQtMTIuNiA5LjFMMjMzIDE5Ni41Yy0xIDQuMS4yIDguNCAzLjIgMTEuNCA1IDUgMTEuMyAzLjIgMTEuNCAzLjJ6bTUyIDg4LjVjLTI5LjEgMjkuMS01OS43IDUyLjktODMuOSA2NS40LTkuMiA0LjgtMTAgMTcuNS0xLjcgMjMuNCAzOC45IDI3LjcgMTA3IDYuMiAxNDMuNy0zMC42UzQxNiAyNTMgMzg4LjMgMjE0LjFjLTUuOC04LjItMTguNS03LjYtMjMuNCAxLjctMTIuMyAyNC4yLTM2LjIgNTQuNy02NS4zIDgzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5TcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMDUuNi0xNTEuNGMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjQtMTcuNyAxNS4zIDcuOSA0Ny4xIDcxLjMgODAgMTIzLjMgODBzMTE1LjMtMzIuOSAxMjMuMy04MGMxLjYtOS44LTcuNy0xOC40LTE3LjctMTUuM3ptLTIzNC43LTQwLjhjMy42IDQuMiA5LjkgNS43IDE1LjMgMi41bDgwLTQ4YzMuNi0yLjIgNS44LTYuMSA1LjgtMTAuM3MtMi4yLTguMS01LjgtMTAuM2wtODAtNDhjLTUuMS0zLTExLjQtMS45LTE1LjMgMi41LTMuOCA0LjUtMy44IDExLS4xIDE1LjVsMzMuNiA0MC4zLTMzLjYgNDAuM2MtMy44IDQuNS0zLjcgMTEuMS4xIDE1LjV6bTI0Mi45IDIuNWM1LjQgMy4yIDExLjcgMS43IDE1LjMtMi41IDMuOC00LjUgMy44LTExIC4xLTE1LjVMMzQzLjYgMjA4bDMzLjYtNDAuM2MzLjgtNC41IDMuNy0xMS0uMS0xNS41LTMuOC00LjQtMTAuMi01LjQtMTUuMy0yLjVsLTgwIDQ4Yy0zLjYgMi4yLTUuOCA2LjEtNS44IDEwLjNzMi4yIDguMSA1LjggMTAuM2w4MCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpblN0YXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTA1LjYtMTUxLjRjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjgtMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyA3LjkgNDcuMiA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6bS0yMjcuOS01Ny41Yy0xIDYuMiA1LjQgMTEgMTEgNy45bDMxLjMtMTYuMyAzMS4zIDE2LjNjNS42IDMuMSAxMi0xLjcgMTEtNy45bC02LTM0LjkgMjUuNC0yNC42YzQuNS00LjUgMS45LTEyLjItNC4zLTEzLjJsLTM0LjktNS0xNS41LTMxLjZjLTIuOS01LjgtMTEtNS44LTEzLjkgMGwtMTUuNSAzMS42LTM0LjkgNWMtNi4yLjktOC45IDguNi00LjMgMTMuMmwyNS40IDI0LjYtNi4xIDM0Ljl6bTI1OS43LTcyLjdsLTM0LjktNS0xNS41LTMxLjZjLTIuOS01LjgtMTEtNS44LTEzLjkgMGwtMTUuNSAzMS42LTM0LjkgNWMtNi4yLjktOC45IDguNi00LjMgMTMuMmwyNS40IDI0LjYtNiAzNC45Yy0xIDYuMiA1LjQgMTEgMTEgNy45bDMxLjMtMTYuMyAzMS4zIDE2LjNjNS42IDMuMSAxMi0xLjcgMTEtNy45bC02LTM0LjkgMjUuNC0yNC42YzQuNS00LjYgMS44LTEyLjItNC40LTEzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5UZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTcuMSAyNTYuMWMtMjUuOCAzLjctODQgMTMuNy0xMDAuOSAzMC42LTIxLjkgMjEuOS0yMS41IDU3LjkuOSA4MC4zczU4LjMgMjIuOCA4MC4zLjlDMTE0LjMgMzUxIDEyNC4zIDI5Mi44IDEyOCAyNjdjLjgtNi40LTQuNi0xMS44LTEwLjktMTAuOXptNTA2LjcgMzAuNmMtMTYuOS0xNi45LTc1LjEtMjYuOS0xMDAuOS0zMC42LTYuMy0uOS0xMS43IDQuNS0xMC44IDEwLjggMy43IDI1LjggMTMuNyA4NCAzMC42IDEwMC45IDIxLjkgMjEuOSA1Ny45IDIxLjUgODAuMy0uOSAyMi4zLTIyLjMgMjIuNy01OC4zLjgtODAuMnptLTEyNi42IDYxLjdDNDYzLjggNDEyLjMgMzk2LjkgNDU2IDMyMCA0NTZjLTc2LjkgMC0xNDMuOC00My43LTE3Ny4yLTEwNy42LTEyLjUgMzcuNC0yNS4yIDQzLjktMjguMyA0Ni41QzE1OS4xIDQ2MC43IDIzNC41IDUwNCAzMjAgNTA0czE2MC45LTQzLjMgMjA1LjUtMTA5LjFjLTMuMi0yLjctMTUuOS05LjItMjguMy00Ni41ek0xMjIuNyAyMjQuNUMxMzcuOSAxMjkuMiAyMjAuNSA1NiAzMjAgNTZjOTkuNSAwIDE4Mi4xIDczLjIgMTk3LjMgMTY4LjUgMi4xLS4yIDUuMi0yLjQgNDkuNSA3QzU1NC40IDEwNiA0NDguNyA4IDMyMCA4Uzg1LjYgMTA2IDczLjIgMjMxLjRjNDQuNS05LjQgNDcuMS03LjIgNDkuNS02Ljl6TTMyMCA0MDBjNTEuOSAwIDExNS4zLTMyLjkgMTIzLjMtODAgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDggNDcuMSA3MS40IDgwIDEyMy4zIDgwem0xMzAuMy0xNjguM2MzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy42IDYuMiA0LjYgOS4zIDMuN3pNMjQwIDE4OS40YzEyLjMgMCAyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjggMTkuMi0yMS42IDMxLjUtMjEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpblRvbmd1ZVNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em02NCA0MDBjMCAzNS42LTI5LjEgNjQuNS02NC45IDY0LTM1LjEtLjUtNjMuMS0yOS44LTYzLjEtNjV2LTQyLjhsMTcuNy04LjhjMTUtNy41IDMxLjUgMS43IDM0LjkgMTYuNWwyLjggMTIuMWMyLjEgOS4yIDE1LjIgOS4yIDE3LjMgMGwyLjgtMTIuMWMzLjQtMTQuOCAxOS44LTI0LjEgMzQuOS0xNi41bDE3LjcgOC44VjQwOHptMjguMiAyNS4zYzIuMi04LjEgMy44LTE2LjUgMy44LTI1LjN2LTQzLjVjMTQuMi0xMi40IDI0LjQtMjcuNSAyNy4zLTQ0LjUgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDIuOSAxNyAxMy4xIDMyLjEgMjcuMyA0NC41VjQwOGMwIDguOCAxLjYgMTcuMiAzLjggMjUuM0M5MS44IDM5OS45IDQ4IDMzMyA0OCAyNTZjMC0xMTAuMyA4OS43LTIwMCAyMDAtMjAwczIwMCA4OS43IDIwMCAyMDBjMCA3Ny00My44IDE0My45LTEwNy44IDE3Ny4zem0zNi45LTI4MS4xYy0zLjgtNC40LTEwLjMtNS41LTE1LjMtMi41bC04MCA0OGMtMy42IDIuMi01LjggNi4xLTUuOCAxMC4zczIuMiA4LjEgNS44IDEwLjNsODAgNDhjNS40IDMuMiAxMS43IDEuNyAxNS4zLTIuNSAzLjgtNC41IDMuOC0xMSAuMS0xNS41TDM0My42IDIwOGwzMy42LTQwLjNjMy44LTQuNSAzLjctMTEuMS0uMS0xNS41em0tMTYyLjkgNDUuNWwtODAtNDhjLTUtMy0xMS40LTItMTUuMyAyLjUtMy44IDQuNS0zLjggMTEtLjEgMTUuNWwzMy42IDQwLjMtMzMuNiA0MC4zYy0zLjggNC41LTMuNyAxMSAuMSAxNS41IDMuNiA0LjIgOS45IDUuNyAxNS4zIDIuNWw4MC00OGMzLjYtMi4yIDUuOC02LjEgNS44LTEwLjNzLTIuMi04LjEtNS44LTEwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5Ub25ndWVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAxODBjLTI1LjcgMC01NS45IDE2LjktNTkuOCA0Mi4xLS44IDUgMS43IDEwIDYuMSAxMi40IDQuNCAyLjQgOS45IDEuOCAxMy43LTEuNmw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzIuNSAyLjIgOCA0LjcgMTMuNyAxLjYgNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTMuOS0yNS4yLTM0LjEtNDIuMS01OS44LTQyLjF6bTE3Ni01MmMtNDQuMiAwLTgwIDM1LjgtODAgODBzMzUuOCA4MCA4MCA4MCA4MC0zNS44IDgwLTgwLTM1LjgtODAtODAtODB6bTAgMTI4Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMC03MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTY0IDQwMGMwIDM1LjYtMjkuMSA2NC41LTY0LjkgNjQtMzUuMS0uNS02My4xLTI5LjgtNjMuMS02NXYtNDIuOGwxNy43LTguOGMxNS03LjUgMzEuNSAxLjcgMzQuOSAxNi41bDIuOCAxMi4xYzIuMSA5LjIgMTUuMiA5LjIgMTcuMyAwbDIuOC0xMi4xYzMuNC0xNC44IDE5LjgtMjQuMSAzNC45LTE2LjVsMTcuNyA4LjhWNDA4em0yOC4yIDI1LjNjMi4yLTguMSAzLjgtMTYuNSAzLjgtMjUuM3YtNDMuNWMxNC4yLTEyLjQgMjQuNC0yNy41IDI3LjMtNDQuNSAxLjctOS45LTcuNy0xOC41LTE3LjctMTUuMy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS45LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgMi45IDE3IDEzLjEgMzIuMSAyNy4zIDQ0LjVWNDA4YzAgOC44IDEuNiAxNy4yIDMuOCAyNS4zQzkxLjggMzk5LjkgNDggMzMzIDQ4IDI1NmMwLTExMC4zIDg5LjctMjAwIDIwMC0yMDBzMjAwIDg5LjcgMjAwIDIwMGMwIDc3LTQzLjggMTQzLjktMTA3LjggMTc3LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5Ub25ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNjQgNDAwYzAgMzUuNi0yOS4xIDY0LjUtNjQuOSA2NC0zNS4xLS41LTYzLjEtMjkuOC02My4xLTY1di00Mi44bDE3LjctOC44YzE1LTcuNSAzMS41IDEuNyAzNC45IDE2LjVsMi44IDEyLjFjMi4xIDkuMiAxNS4yIDkuMiAxNy4zIDBsMi44LTEyLjFjMy40LTE0LjggMTkuOC0yNC4xIDM0LjktMTYuNWwxNy43IDguOFY0MDh6bTI4LjIgMjUuM2MyLjItOC4xIDMuOC0xNi41IDMuOC0yNS4zdi00My41YzE0LjItMTIuNCAyNC40LTI3LjUgMjcuMy00NC41IDEuNy05LjktNy43LTE4LjUtMTcuNy0xNS4zLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyAyLjkgMTcgMTMuMSAzMi4xIDI3LjMgNDQuNVY0MDhjMCA4LjggMS42IDE3LjIgMy44IDI1LjNDOTEuOCAzOTkuOSA0OCAzMzMgNDggMjU2YzAtMTEwLjMgODkuNy0yMDAgMjAwLTIwMHMyMDAgODkuNyAyMDAgMjAwYzAgNzctNDMuOCAxNDMuOS0xMDcuOCAxNzcuM3pNMTY4IDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTE2MCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpbldpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI4IDE4MGMtMjUuNjkgMC01NS44OCAxNi45Mi01OS44NiA0Mi4xMi0xLjc1IDExLjIyIDExLjUgMTguMjQgMTkuODMgMTAuODRsOS41NS04LjQ4YzE0LjgxLTEzLjE5IDQ2LjE2LTEzLjE5IDYwLjk3IDBsOS41NSA4LjQ4YzguNDggNy40MyAyMS41Ni4yNSAxOS44My0xMC44NEMzODMuODggMTk2LjkyIDM1My42OSAxODAgMzI4IDE4MHptLTE2MCA2MGMxNy42NyAwIDMyLTE0LjMzIDMyLTMycy0xNC4zMy0zMi0zMi0zMi0zMiAxNC4zMy0zMiAzMiAxNC4zMyAzMiAzMiAzMnptMTg1LjU1IDY0LjY0Yy0yNS45MyA4LjMtNjQuNCAxMy4wNi0xMDUuNTUgMTMuMDZzLTc5LjYyLTQuNzUtMTA1LjU1LTEzLjA2Yy05Ljk0LTMuMTMtMTkuNCA1LjM3LTE3LjcxIDE1LjM0QzEzMi42NyAzNjcuMTMgMTk2LjA2IDQwMCAyNDggNDAwczExNS4zMy0zMi44NyAxMjMuMjYtODAuMDJjMS42OC05Ljg5LTcuNjctMTguNDgtMTcuNzEtMTUuMzR6TTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMjggMC0yMDAtODkuNzItMjAwLTIwMFMxMzcuNzIgNTYgMjQ4IDU2czIwMCA4OS43MiAyMDAgMjAwLTg5LjcyIDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTA1LjYtMTUxLjRjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS40LTE3LjcgMTUuMyA3LjkgNDcuMSA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6TTE2OCAyNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTU2LjY4NiAyOTAuNTQyTDQxMC4zMjggNjQuODI5QzM5Ny4wMDEgNDQuMjcyIDM3NC40MTcgMzIgMzQ5LjkxNyAzMkg1NkMyNS4xMjEgMzIgMCA1Ny4xMjIgMCA4OHY4YzAgNDQuMTEyIDM1Ljg4OCA4MCA4MCA4MGgxOTYuMDQybC0xOC4zMzMgNDhIMTQ0Yy00OC41MjMgMC04OCAzOS40NzctODggODggMCAzMC44NzkgMjUuMTIxIDU2IDU2IDU2aDEzMS41NTJjMi45ODcgMCA1LjkxNC41NDkgOC42OTcgMS42MzFMMzUyIDQwOC40MThWNDgwaDIyNFYzNTUuODI5YzAtMjMuMjI1LTYuNjc5LTQ1LjgwMS0xOS4zMTQtNjUuMjg3ek01MjggNDMySDQwMHYtMjMuNTgyYzAtMTkuOTQ4LTEyLjAxNC0zNy41MDgtMzAuNjA0LTQ0LjczNmwtOTkuNzUxLTM4Ljc4OEE3MS43MzMgNzEuNzMzIDAgMCAwIDI0My41NTIgMzIwSDExMmMtNC40MTEgMC04LTMuNTg5LTgtOCAwLTIyLjA1NiAxNy45NDQtNDAgNDAtNDBoMTEzLjcwOWMxOS43NjcgMCAzNy43ODYtMTIuNDA3IDQ0Ljg0LTMwLjg3M2wyNC41NTItNjQuMjgxYzguOTk2LTIzLjU1My04LjQyOC00OC44NDYtMzMuNjMtNDguODQ2SDgwYy0xNy42NDUgMC0zMi0xNC4zNTUtMzItMzJ2LThjMC00LjQxMSAzLjU4OS04IDgtOGgyOTMuOTE3YzguMTY2IDAgMTUuNjkzIDQuMDkgMjAuMTM3IDEwLjk0MmwxNDYuMzU4IDIyNS43MTVBNzEuODQgNzEuODQgMCAwIDEgNTI4IDM1NS44MjlWNDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyLjU3IDExMi42NDF2LTEwLjgyNWMwLTQzLjYxMi00MC41Mi03Ni42OTEtODMuMDM5LTY1LjU0Ni0yNS42MjktNDkuNS05NC4wOS00Ny40NS0xMTcuOTgyLjc0N0MxMzAuMjY5IDI2LjQ1NiA4OS4xNDQgNTcuOTQ1IDg5LjE0NCAxMDJ2MTI2LjEzYy0xOS45NTMtNy40MjctNDMuMzA4LTUuMDY4LTYyLjA4MyA4Ljg3MS0yOS4zNTUgMjEuNzk2LTM1Ljc5NCA2My4zMzMtMTQuNTUgOTMuMTUzTDEzMi40OCA0OTguNTY5YTMyIDMyIDAgMCAwIDI2LjA2MiAxMy40MzJoMjIyLjg5N2MxNC45MDQgMCAyNy44MzUtMTAuMjg5IDMxLjE4Mi0yNC44MTNsMzAuMTg0LTEzMC45NThBMjAzLjYzNyAyMDMuNjM3IDAgMCAwIDQ0OCAzMTAuNTY0VjE3OWMwLTQwLjYyLTM1LjUyMy03MS45OTItNzUuNDMtNjYuMzU5em0yNy40MjcgMTk3LjkyMmMwIDExLjczMS0xLjMzNCAyMy40NjktMy45NjUgMzQuODg2TDM2OC43MDcgNDY0aC0yMDEuOTJMNTEuNTkxIDMwMi4zMDNjLTE0LjQzOS0yMC4yNyAxNS4wMjMtNDIuNzc2IDI5LjM5NC0yMi42MDVsMjcuMTI4IDM4LjA3OWM4Ljk5NSAxMi42MjYgMjkuMDMxIDYuMjg3IDI5LjAzMS05LjI4M1YxMDJjMC0yNS42NDUgMzYuNTcxLTI0LjgxIDM2LjU3MS42OTFWMjU2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNi44NTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNlY2N2MwLTI1LjY2MyAzNi41NzEtMjQuODEgMzYuNTcxLjY5MVYyNTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg2Ljg1NmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjEwMS4xMjVjMC0yNS42NzIgMzYuNTctMjQuODEgMzYuNTcuNjkxVjI1NmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDYuODU3YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTc2LjMwOWMwLTI2LjI0MiAzNi41Ny0yNS42NCAzNi41Ny0uNjkxdjEzMS41NjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQZWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjIuMTQ2IDE5MS45NzZjLTEzLjcxLTIxLjY0OS0zOC43NjEtMzQuMDE2LTY1LjAwNi0zMC4zNDFWNzRjMC00MC44MDQtMzIuODExLTc0LTczLjE0MS03NC00MC4zMyAwLTczLjE0IDMzLjE5Ni03My4xNCA3NEwxNjAgMTY4bC0xOC42NzktNzguODVDMTI2LjU3OCA1MC44NDMgODMuODUgMzIuMTEgNDYuMjA5IDQ3LjIwOCA4LjczNSA2Mi4yMzgtOS41NzEgMTA0Ljk2MyA1LjAwOCAxNDIuODVsNTUuNzU3IDE0NC45MjdjLTMwLjU1NyAyNC45NTYtNDMuOTk0IDU3LjgwOS0yNC43MzMgOTIuMjE4bDU0Ljg1MyA5Ny45OTlDMTAyLjYyNSA0OTguOTcgMTI0LjczIDUxMiAxNDguNTc1IDUxMmgyMDUuNzAyYzMwLjc0NCAwIDU3LjU1OC0yMS40NCA2NC41NTUtNTEuNzk3bDI3LjQyNy0xMTguOTk5YTY3LjgwMSA2Ny44MDEgMCAwIDAgMS43MjktMTUuMjAzTDQ0OCAyNTZjMC00NC45NTYtNDMuMjYzLTc3LjM0My04NS44NTQtNjQuMDI0ek0zOTkuOTg3IDMyNmMwIDEuNDg4LS4xNjkgMi45NzctLjUwMiA0LjQyM2wtMjcuNDI3IDExOS4wMDFjLTEuOTc4IDguNTgyLTkuMjkgMTQuNTc2LTE3Ljc4MiAxNC41NzZIMTQ4LjU3NWMtNi40ODYgMC0xMi41NDItMy42MjEtMTUuODA1LTkuNDQ5bC01NC44NTQtOThjLTQuNTU3LTguMTQxLTIuNjE5LTE4LjY2OCA0LjUwOC0yNC40ODhsMjYuNjQ3LTIxLjc2NGExNiAxNiAwIDAgMCA0LjgxMi0xOC4xMzlsLTY0LjA5LTE2Ni41NDlDMzcuMjI2IDkyLjk1NiA4NC4zNyA3NC44MzcgOTYuNTEgMTA2LjM4OWw1OS43ODQgMTU1LjM1N0ExNiAxNiAwIDAgMCAxNzEuMjI3IDI3MmgxMS42MzJjOC44MzcgMCAxNi03LjE2MyAxNi0xNlY3NGMwLTM0LjM3NSA1MC4yODEtMzQuNDMgNTAuMjgxIDB2MTgyYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNi44NTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtMjhjMC0yNS4xMjIgMzYuNTY3LTI1LjE1OSAzNi41NjcgMHYyOGMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDYuODU2YzguODM3IDAgMTYtNy4xNjMgMTYtMTYgMC0yNS4xMiAzNi41NjctMjUuMTYgMzYuNTY3IDB2NzB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg4LjggNTEyYzQ1LjYxNiAwIDgzLjItMzcuNzY1IDgzLjItODMuMnYtMzUuNjQ3YTkzLjE0OCA5My4xNDggMCAwIDAgMjIuMDY0LTcuOTI5YzIyLjAwNiAyLjUwNyA0NC45NzgtMy41MDMgNjIuNzkxLTE1Ljk4NUM0MDkuMzQyIDM2OC4xIDQ0OCAzMzEuODQxIDQ0OCAyNjkuMjk5VjI0OGMwLTYwLjA2My00MC05OC41MTItNDAtMTI3LjJ2LTIuNjc5YzQuOTUyLTUuNzQ3IDgtMTMuNTM2IDgtMjIuMTJWMzJjMC0xNy42NzMtMTIuODk0LTMyLTI4LjgtMzJIMTU2LjhDMTQwLjg5NCAwIDEyOCAxNC4zMjcgMTI4IDMydjY0YzAgOC41ODQgMy4wNDggMTYuMzczIDggMjIuMTJ2Mi42NzljMCA2Ljk2NC02LjE5MyAxNC44NjItMjMuNjY4IDMwLjE4M2wtLjE0OC4xMjktLjE0Ni4xMzFjLTkuOTM3IDguODU2LTIwLjg0MSAxOC4xMTYtMzMuMjUzIDI1Ljg1MUM0OC41MzcgMTk1Ljc5OCAwIDIwNy40ODYgMCAyNTIuOGMwIDU2LjkyOCAzNS4yODYgOTIgODMuMiA5MiA4LjAyNiAwIDE1LjQ4OS0uODE0IDIyLjQtMi4xNzZWNDI4LjhjMCA0NS4wOTkgMzguMTAxIDgzLjIgODMuMiA4My4yem0wLTQ4Yy0xOC43IDAtMzUuMi0xNi43NzUtMzUuMi0zNS4yVjI3MC40Yy0xNy4zMjUgMC0zNS4yIDI2LjQtNzAuNCAyNi40LTI2LjQgMC0zNS4yLTIwLjYyNS0zNS4yLTQ0IDAtOC43OTQgMzIuNzEyLTIwLjQ0NSA1Ni4xLTM0LjkyNiAxNC41NzUtOS4wNzQgMjcuMjI1LTE5LjUyNCAzOS44NzUtMzAuNzk5IDE4LjM3NC0xNi4xMDkgMzYuNjMzLTMzLjgzNiAzOS41OTYtNTkuMDc1aDE3Ni43NTJDMzY0LjA4NyAxNzAuNzkgNDAwIDIwMi41MDkgNDAwIDI0OHYyMS4yOTljMCA0MC41MjQtMjIuMTk3IDU3LjEyNC02MS4zMjUgNTAuNjAxLTguMDAxIDE0LjYxMi0zMy45NzkgMjQuMTUxLTUzLjYyNSAxMi45MjUtMTguMjI1IDE5LjM2NS00Ni4zODEgMTcuNzg3LTYxLjA1IDQuOTVWNDI4LjhjMCAxOC45NzUtMTYuMjI1IDM1LjItMzUuMiAzNS4yek0zMjggNjRjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0czI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjIwLjhDMCAyNjYuNDE2IDM3Ljc2NSAzMDQgODMuMiAzMDRoMzUuNjQ3YTkzLjE0OCA5My4xNDggMCAwIDAgNy45MjkgMjIuMDY0Yy0yLjUwNyAyMi4wMDYgMy41MDMgNDQuOTc4IDE1Ljk4NSA2Mi43OTFDMTQzLjkgNDQxLjM0MiAxODAuMTU5IDQ4MCAyNDIuNzAxIDQ4MEgyNjRjNjAuMDYzIDAgOTguNTEyLTQwIDEyNy4yLTQwaDIuNjc5YzUuNzQ3IDQuOTUyIDEzLjUzNiA4IDIyLjEyIDhoNjRjMTcuNjczIDAgMzItMTIuODk0IDMyLTI4LjhWMTg4LjhjMC0xNS45MDYtMTQuMzI3LTI4LjgtMzItMjguOGgtNjRjLTguNTg0IDAtMTYuMzczIDMuMDQ4LTIyLjEyIDhIMzkxLjJjLTYuOTY0IDAtMTQuODYyLTYuMTkzLTMwLjE4My0yMy42NjhsLS4xMjktLjE0OC0uMTMxLS4xNDZjLTguODU2LTkuOTM3LTE4LjExNi0yMC44NDEtMjUuODUxLTMzLjI1M0MzMTYuMjAyIDgwLjUzNyAzMDQuNTE0IDMyIDI1OS4yIDMyYy01Ni45MjggMC05MiAzNS4yODYtOTIgODMuMiAwIDguMDI2LjgxNCAxNS40ODkgMi4xNzYgMjIuNEg4My4yQzM4LjEwMSAxMzcuNiAwIDE3NS43MDEgMCAyMjAuOHptNDggMGMwLTE4LjcgMTYuNzc1LTM1LjIgMzUuMi0zNS4yaDE1OC40YzAtMTcuMzI1LTI2LjQtMzUuMi0yNi40LTcwLjQgMC0yNi40IDIwLjYyNS0zNS4yIDQ0LTM1LjIgOC43OTQgMCAyMC40NDUgMzIuNzEyIDM0LjkyNiA1Ni4xIDkuMDc0IDE0LjU3NSAxOS41MjQgMjcuMjI1IDMwLjc5OSAzOS44NzUgMTYuMTA5IDE4LjM3NCAzMy44MzYgMzYuNjMzIDU5LjA3NSAzOS41OTZ2MTc2Ljc1MkMzNDEuMjEgMzk2LjA4NyAzMDkuNDkxIDQzMiAyNjQgNDMyaC0yMS4yOTljLTQwLjUyNCAwLTU3LjEyNC0yMi4xOTctNTAuNjAxLTYxLjMyNS0xNC42MTItOC4wMDEtMjQuMTUxLTMzLjk3OS0xMi45MjUtNTMuNjI1LTE5LjM2NS0xOC4yMjUtMTcuNzg3LTQ2LjM4MS00Ljk1LTYxLjA1SDgzLjJDNjQuMjI1IDI1NiA0OCAyMzkuNzc1IDQ4IDIyMC44ek00NDggMzYwYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHMtMTAuNzQ1IDI0LTI0IDI0LTI0LTEwLjc0NS0yNC0yNCAxMC43NDUtMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyOC44IDEzNy42aC04Ni4xNzdhMTE1LjUyIDExNS41MiAwIDAgMCAyLjE3Ni0yMi40YzAtNDcuOTE0LTM1LjA3Mi04My4yLTkyLTgzLjItNDUuMzE0IDAtNTcuMDAyIDQ4LjUzNy03NS43MDcgNzguNzg0LTcuNzM1IDEyLjQxMy0xNi45OTQgMjMuMzE3LTI1Ljg1MSAzMy4yNTNsLS4xMzEuMTQ2LS4xMjkuMTQ4QzEzNS42NjIgMTYxLjgwNyAxMjcuNzY0IDE2OCAxMjAuOCAxNjhoLTIuNjc5Yy01Ljc0Ny00Ljk1Mi0xMy41MzYtOC0yMi4xMi04SDMyYy0xNy42NzMgMC0zMiAxMi44OTQtMzIgMjguOHYyMzAuNEMwIDQzNS4xMDYgMTQuMzI3IDQ0OCAzMiA0NDhoNjRjOC41ODQgMCAxNi4zNzMtMy4wNDggMjIuMTItOGgyLjY3OWMyOC42ODggMCA2Ny4xMzcgNDAgMTI3LjIgNDBoMjEuMjk5YzYyLjU0MiAwIDk4LjgtMzguNjU4IDk5Ljk0LTkxLjE0NSAxMi40ODItMTcuODEzIDE4LjQ5MS00MC43ODUgMTUuOTg1LTYyLjc5MUE5My4xNDggOTMuMTQ4IDAgMCAwIDM5My4xNTIgMzA0SDQyOC44YzQ1LjQzNSAwIDgzLjItMzcuNTg0IDgzLjItODMuMiAwLTQ1LjA5OS0zOC4xMDEtODMuMi04My4yLTgzLjJ6bTAgMTE4LjRoLTkxLjAyNmMxMi44MzcgMTQuNjY5IDE0LjQxNSA0Mi44MjUtNC45NSA2MS4wNSAxMS4yMjcgMTkuNjQ2IDEuNjg3IDQ1LjYyNC0xMi45MjUgNTMuNjI1IDYuNTI0IDM5LjEyOC0xMC4wNzYgNjEuMzI1LTUwLjYgNjEuMzI1SDI0OGMtNDUuNDkxIDAtNzcuMjEtMzUuOTEzLTEyMC0zOS42NzZWMjE1LjU3MWMyNS4yMzktMi45NjQgNDIuOTY2LTIxLjIyMiA1OS4wNzUtMzkuNTk2IDExLjI3NS0xMi42NSAyMS43MjUtMjUuMyAzMC43OTktMzkuODc1QzIzMi4zNTUgMTEyLjcxMiAyNDQuMDA2IDgwIDI1Mi44IDgwYzIzLjM3NSAwIDQ0IDguOCA0NCAzNS4yIDAgMzUuMi0yNi40IDUzLjA3NS0yNi40IDcwLjRoMTU4LjRjMTguNDI1IDAgMzUuMiAxNi41IDM1LjIgMzUuMiAwIDE4Ljk3NS0xNi4yMjUgMzUuMi0zNS4yIDM1LjJ6TTg4IDM4NGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRzLTI0LTEwLjc0NS0yNC0yNCAxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuNiA4My4ydjg2LjE3N2ExMTUuNTIgMTE1LjUyIDAgMCAwLTIyLjQtMi4xNzZjLTQ3LjkxNCAwLTgzLjIgMzUuMDcyLTgzLjIgOTIgMCA0NS4zMTQgNDguNTM3IDU3LjAwMiA3OC43ODQgNzUuNzA3IDEyLjQxMyA3LjczNSAyMy4zMTcgMTYuOTk0IDMzLjI1MyAyNS44NTFsLjE0Ni4xMzEuMTQ4LjEyOUMxMjkuODA3IDM3Ni4zMzggMTM2IDM4NC4yMzYgMTM2IDM5MS4ydjIuNjc5Yy00Ljk1MiA1Ljc0Ny04IDEzLjUzNi04IDIyLjEydjY0YzAgMTcuNjczIDEyLjg5NCAzMiAyOC44IDMyaDIzMC40YzE1LjkwNiAwIDI4LjgtMTQuMzI3IDI4LjgtMzJ2LTY0YzAtOC41ODQtMy4wNDgtMTYuMzczLTgtMjIuMTJWMzkxLjJjMC0yOC42ODggNDAtNjcuMTM3IDQwLTEyNy4ydi0yMS4yOTljMC02Mi41NDItMzguNjU4LTk4LjgtOTEuMTQ1LTk5Ljk0LTE3LjgxMy0xMi40ODItNDAuNzg1LTE4LjQ5MS02Mi43OTEtMTUuOTg1QTkzLjE0OCA5My4xNDggMCAwIDAgMjcyIDExOC44NDdWODMuMkMyNzIgMzcuNzY1IDIzNC40MTYgMCAxODguOCAwYy00NS4wOTkgMC04My4yIDM4LjEwMS04My4yIDgzLjJ6bTExOC40IDB2OTEuMDI2YzE0LjY2OS0xMi44MzcgNDIuODI1LTE0LjQxNSA2MS4wNSA0Ljk1IDE5LjY0Ni0xMS4yMjcgNDUuNjI0LTEuNjg3IDUzLjYyNSAxMi45MjUgMzkuMTI4LTYuNTI0IDYxLjMyNSAxMC4wNzYgNjEuMzI1IDUwLjZWMjY0YzAgNDUuNDkxLTM1LjkxMyA3Ny4yMS0zOS42NzYgMTIwSDE4My41NzFjLTIuOTY0LTI1LjIzOS0yMS4yMjItNDIuOTY2LTM5LjU5Ni01OS4wNzUtMTIuNjUtMTEuMjc1LTI1LjMtMjEuNzI1LTM5Ljg3NS0zMC43OTlDODAuNzEyIDI3OS42NDUgNDggMjY3Ljk5NCA0OCAyNTkuMmMwLTIzLjM3NSA4LjgtNDQgMzUuMi00NCAzNS4yIDAgNTMuMDc1IDI2LjQgNzAuNCAyNi40VjgzLjJjMC0xOC40MjUgMTYuNS0zNS4yIDM1LjItMzUuMiAxOC45NzUgMCAzNS4yIDE2LjIyNSAzNS4yIDM1LjJ6TTM1MiA0MjRjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0cy0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzU4LjE4MiAxNzkuMzYxYy0xOS40OTMtMjQuNzY4LTUyLjY3OS0zMS45NDUtNzkuODcyLTE5LjA5OC0xNS4xMjctMTUuNjg3LTM2LjE4Mi0yMi40ODctNTYuNTk1LTE5LjYyOVY2N2MwLTM2Ljk0NC0yOS43MzYtNjctNjYuMjg2LTY3Uzg5LjE0MyAzMC4wNTYgODkuMTQzIDY3djE2MS4xMjljLTE5LjkwOS03LjQxLTQzLjI3Mi01LjA5NC02Mi4wODMgOC44NzItMjkuMzU1IDIxLjc5NS0zNS43OTMgNjMuMzMzLTE0LjU1IDkzLjE1MmwxMDkuNjk5IDE1NC4wMDFDMTM0LjYzMiA1MDEuNTkgMTU0Ljc0MSA1MTIgMTc2IDUxMmgxNzguMjg2YzMwLjgwMiAwIDU3LjU3NC0yMS41IDY0LjU1Ny01MS43OTdsMjcuNDI5LTExOC45OTlBNjcuODczIDY3Ljg3MyAwIDAgMCA0NDggMzI2di04NGMwLTQ2Ljg0NC00Ni42MjUtNzkuMjczLTg5LjgxOC02Mi42Mzl6TTgwLjk4NSAyNzkuNjk3bDI3LjEyNiAzOC4wNzljOC45OTUgMTIuNjI2IDI5LjAzMSA2LjI4NyAyOS4wMzEtOS4yODNWNjdjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MTc1YzAgOC44MzYgNy4xNjMgMTYgMTYgMTZoNi44NTdjOC44MzcgMCAxNi03LjE2NCAxNi0xNnYtMzVjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MzVjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNkgyNzJjOC44MzcgMCAxNi03LjE2NCAxNi0xNnYtMjFjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MjFjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNmg2Ljg1N2M4LjgzNyAwIDE2LTcuMTY0IDE2LTE2IDAtMjUuMTIxIDM2LjU3MS0yNS4xNiAzNi41NzEgMHY4NGMwIDEuNDg4LS4xNjkgMi45NzctLjUwMiA0LjQyM2wtMjcuNDMgMTE5LjAwMWMtMS45NzggOC41ODItOS4yOSAxNC41NzYtMTcuNzgyIDE0LjU3NkgxNzZjLTUuNzY5IDAtMTEuMjYzLTIuODc4LTE0LjY5Ny03LjY5N2wtMTA5LjcxMi0xNTRjLTE0LjQwNi0yMC4yMjMgMTQuOTk0LTQyLjgxOCAyOS4zOTQtMjIuNjA2ek0xNzYuMTQzIDQwMHYtOTZjMC04LjgzNyA2LjI2OC0xNiAxNC0xNmg2YzcuNzMyIDAgMTQgNy4xNjMgMTQgMTZ2OTZjMCA4LjgzNy02LjI2OCAxNi0xNCAxNmgtNmMtNy43MzMgMC0xNC03LjE2My0xNC0xNnptNzUuNDI4IDB2LTk2YzAtOC44MzcgNi4yNjgtMTYgMTQtMTZoNmM3LjczMiAwIDE0IDcuMTYzIDE0IDE2djk2YzAgOC44MzctNi4yNjggMTYtMTQgMTZoLTZjLTcuNzMyIDAtMTQtNy4xNjMtMTQtMTZ6TTMyNyA0MDB2LTk2YzAtOC44MzcgNi4yNjgtMTYgMTQtMTZoNmM3LjczMiAwIDE0IDcuMTYzIDE0IDE2djk2YzAgOC44MzctNi4yNjggMTYtMTQgMTZoLTZjLTcuNzMyIDAtMTQtNy4xNjMtMTQtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRSb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwOC44NjQgNzkuMDUyYy0yMi40MDEtMzMuODk4LTY2LjEwOC00Mi4yNzMtOTguODEzLTIzLjU4OC0yOS40NzQtMzEuNDY5LTc5LjE0NS0zMS4wOTMtMTA4LjMzNC0uMDIyLTQ3LjE2LTI3LjAyLTEwOC43MSA1LjA1NS0xMTAuNjcxIDYwLjgwNkM0NC44NDYgMTA1LjQwNyAwIDE0MC4wMDEgMCAxODcuNDI5djU2Ljk1M2MwIDMyLjc0MSAxNC4yOCA2My45NTQgMzkuMTggODUuNjM0bDk3LjcxIDg1LjA4MWM0LjI1MiAzLjcwMiAzLjExIDUuNTczIDMuMTEgMzIuOTAzIDAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmgyNTJjMTcuNjczIDAgMzItMTQuMzI3IDMyLTMyIDAtMjMuNTEzLTEuMDE1LTMwLjc0NSAzLjk4Mi00Mi4zN2w0Mi44MzUtOTkuNjU2YzYuMDk0LTE0LjE3NyA5LjE4My0yOS4xNzIgOS4xODMtNDQuNTY4VjE0Ni45NjNjMC01Mi44MzktNTQuMzE0LTg4LjY2Mi0xMDMuMTM2LTY3LjkxMXpNNDY0IDI2MS40MDZhNjQuNTA1IDY0LjUwNSAwIDAgMS01LjI4MiAyNS42MTNsLTQyLjgzNSA5OS42NTVjLTUuMjMgMTIuMTcxLTcuODgzIDI1LjA0LTcuODgzIDM4LjI1VjQzMkgxODh2LTEwLjI4NmMwLTE2LjM3LTcuMTQtMzEuOTc3LTE5LjU5LTQyLjgxN2wtOTcuNzEtODUuMDhDNTYuMjc0IDI4MS4yNTUgNDggMjYzLjIzNiA0OCAyNDQuMzgxdi01Ni45NTNjMC0zMy4yMDggNTItMzMuNTM3IDUyIC42Nzd2NDEuMjI4YTE2IDE2IDAgMCAwIDUuNDkzIDEyLjA2N2w3IDYuMDk1QTE2IDE2IDAgMCAwIDEzOSAyMzUuNDI5VjExOC44NTdjMC0zMy4wOTcgNTItMzMuNzI1IDUyIC42Nzd2MjYuNzUxYzAgOC44MzYgNy4xNjQgMTYgMTYgMTZoN2M4LjgzNiAwIDE2LTcuMTY0IDE2LTE2di00MS4xNDNjMC0zMy4xMzQgNTItMzMuNjc1IDUyIC42Nzd2NDAuNDY2YzAgOC44MzYgNy4xNjMgMTYgMTYgMTZoN2M4LjgzNyAwIDE2LTcuMTY0IDE2LTE2di0yNy40MjljMC0zMy4wMyA1Mi0zMy43OCA1MiAuNjc3djI2Ljc1MWMwIDguODM2IDcuMTYzIDE2IDE2IDE2aDdjOC44MzcgMCAxNi03LjE2NCAxNi0xNiAwLTMzLjE0NiA1Mi0zMy42MTMgNTIgLjY3N3YxMTQuNDQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kU2Npc3NvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4MGw3MC0uMDEzYzUuMTE0IDAgMTAuMjMxLS41ODMgMTUuMjAzLTEuNzI5bDExOC45OTktMjcuNDI3QzQ5MC41NiA0NDMuODM1IDUxMiA0MTcuMDIgNTEyIDM4Ni4yNzdWMTgwLjU3NWMwLTIzLjg0NS0xMy4wMy00NS45NTEtMzQuMDA1LTU3LjY5bC05Ny45OTktNTQuODUzYy0zNC40MDktMTkuMjYxLTY3LjI2My01LjgyNC05Mi4yMTggMjQuNzMzTDE0Mi44NSAzNy4wMDhjLTM3Ljg4Ny0xNC41NzktODAuNjEyIDMuNzI3LTk1LjY0MiA0MS4yMDEtMTUuMDk4IDM3LjY0MiAzLjYzNSA4MC4zNyA0MS45NDIgOTUuMTEyTDE2OCAxOTJsLTk0LTkuMTQxYy00MC44MDQgMC03NCAzMi44MTEtNzQgNzMuMTQgMCA0MC4zMyAzMy4xOTYgNzMuMTQxIDc0IDczLjE0MWg4Ny42MzVjLTMuNjc1IDI2LjI0NSA4LjY5MiA1MS4yOTcgMzAuMzQxIDY1LjAwNkMxNzguNjU3IDQzNi43MzcgMjExLjA0NCA0ODAgMjU2IDQ4MHptMC00OC4wMTNjLTI1LjE2IDAtMjUuMTItMzYuNTY3IDAtMzYuNTY3IDguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTYuODU2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZoLTI4Yy0yNS4xNTkgMC0yNS4xMjItMzYuNTY3IDAtMzYuNTY3aDI4YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTYuODU2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZINzRjLTM0LjQzIDAtMzQuMzc1LTUwLjI4MSAwLTUwLjI4MWgxODJjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtMTEuNjMyYTE2IDE2IDAgMCAwLTEwLjI1NC0xNC45MzNMMTA2LjM4OSAxMjguNTFjLTMxLjU1Mi0xMi4xNC0xMy40MzItNTkuMjgzIDE5LjIyMi00Ni43MTdsMTY2LjU0OSA2NC4wOTFhMTYuMDAxIDE2LjAwMSAwIDAgMCAxOC4xMzktNC44MTJsMjEuNzY0LTI2LjY0N2M1LjgyLTcuMTI3IDE2LjM0OC05LjA2NCAyNC40ODgtNC41MDhsOTggNTQuODU0YzUuODI4IDMuMjYzIDkuNDQ5IDkuMzE4IDkuNDQ5IDE1LjgwNXYyMDUuNzAxYzAgOC40OTEtNS45OTQgMTUuODA0LTE0LjU3NiAxNy43ODJsLTExOS4wMDEgMjcuNDI3YTE5Ljc0MyAxOS43NDMgMCAwIDEtNC40MjMuNTAyaC03MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFNwb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMS4wMzA1MywxMTYuMTc2MDVjLTE5LjM5MDU5LTMxLjUwNzc5LTUxLjI0NDA2LTM1LjcyODQ5LTY2LjMxMDQ0LTM1LjAxNzU2LTE0LjExMzI1LTUwLjgxMDUxLTYyLjAwMzgtNTQuMDgtNzAuNzM4MTYtNTQuMDhhNzQuMDMwOTEsNzQuMDMwOTEsMCwwLDAtNzIuMjM4MTYsNTguOTE2bC00LjY0NjQ4LDIyLjY2MDE0LTEzLjY4MzU3LTUzLjIwN2MtOS4wOTU2OS0zNS4zNzEwNy00Ni40MTItNjQuMDUwNzQtODkuNjYtNTMuMDcyMjNhNzMuODk3NDksNzMuODk3NDksMCwwLDAtNTUuMTIxLDc4Ljk0NzIyLDczLjY4MjczLDczLjY4MjczLDAsMCwwLTY0Ljg0OTUsOTQuNDIxODFsMjQuMzU5MzMsODIuMTk3MjFjLTM4LjI0MDE3LTcuNTQ0OTItNjIuNzk2NzcsMTYuMTgzNTgtNjguMTE1MTIsMjEuODQ3NjRhNzMuNjc5MSw3My42NzkxLDAsMCwwLDMuMTk5MjEsMTA0LjE5MzI5bDkxLjM2NTA5LDg1Ljk3NjVBMTU0LjE2NCwxNTQuMTY0LDAsMCwwLDIyMC42MjI3OSw1MTJoMTA3LjQ1NDlBMTI3LjMwMDc5LDEyNy4zMDA3OSwwLDAsMCw0NTIuMzM5Miw0MTMuODYxMzlsNTcuNjIzLTI0MS45NjI3MkE3My4yMDI3NCw3My4yMDI3NCwwLDAsMCw1MDEuMDMwNTMsMTE2LjE3NjA1Wm0tMzcuNzU5Nyw0NC42MDU0NEw0MDUuNjQ3ODgsNDAyLjc0ODEyYTc5LjQ2NjE2LDc5LjQ2NjE2LDAsMCwxLTc3LjU3MDE5LDYxLjI1OTcySDIyMC42MjI3OWExMDYuMzQwNTIsMTA2LjM0MDUyLDAsMCwxLTczLjEzNjYtMjguOTk4bC05MS4zNjktODUuOTgwNDFDMzEuMzQzODEsMzI1LjcyNjY5LDY2LjYxMTMzLDI4OC4xMzEsOTEuMzk2NDQsMzExLjUzOTJsNTEuMTIzLDQ4LjEwNzM5YzUuNDI1NzcsNS4xMDkzNywxMy40ODIzOS43MTY3OSwxMy40ODIzOS01LjgyNjE3YTI0Ni43OTkxNCwyNDYuNzk5MTQsMCwwLDAtMTAuMTc3NzEtNzAuMTUyM2wtMzYuMDEzNjItMTIxLjUzOWMtOS43MzI0LTMyLjg4Mjc5LDM5LjY5OTE2LTQ3LjI3MTQ1LDQ5LjM4NjY0LTE0LjYyNWwzMS4zNDM3LDEwNS43NzkyM2M1LjU5Mzc0LDE4LjkwNDI4LDMzLjc4MTE5LDEwLjcxMjg4LDI4Ljk2NDgtOC4wMDc4MUwxNzcuMDY0MjcsODAuMjM2NjJjLTguNTAzODktMzMuMTAzNSw0MS40MzE1Ny00NS42NDY0Niw0OS44NjUxNS0xMi44MzU5M2w0Ny4zMjYwOSwxODQuMDM1YzQuNDI3NzMsMTcuMjQyMTgsMjkuMTYyMDcsMTYuNTAzOSwzMi43MTA4OS0uODA0NjhsMzEuNzkxLTE1NC45NzA2YzYuODEwNTQtMzMuMTA3NCw1Ny41MTc0OC0yNC4xMDc0MSw1MC4xMTkwNiwxMS45NjI4OEwzNjAuMzI3NjQsMjQ2Ljc4OTI0Yy0zLjcyMjY1LDE4LjEwOTM2LDIzLjY2NzkzLDI0LjYzMDg0LDI4LjA1NjU5LDYuMjE2NzlMNDEzLjE4NSwxNDguODU5NjJDNDIxLjE0OTgsMTE1LjUxMiw0NzEuMTQsMTI3Ljc5NzEzLDQ2My4yNzA4MywxNjAuNzgxNDlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRzaGFrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTkuMiAxMjcuOWwtNDcuNi00Ny42QTU2LjI1MiA1Ni4yNTIgMCAwIDAgNDMyIDY0SDIwNS4yYy0xNC44IDAtMjkuMSA1LjktMzkuNiAxNi4zTDExOCAxMjcuOUgwdjI1NS43aDY0YzE3LjYgMCAzMS44LTE0LjIgMzEuOS0zMS43aDkuMWw4NC42IDc2LjRjMzAuOSAyNS4xIDczLjggMjUuNyAxMDUuNiAzLjggMTIuNSAxMC44IDI2IDE1LjkgNDEuMSAxNS45IDE4LjIgMCAzNS4zLTcuNCA0OC44LTI0IDIyLjEgOC43IDQ4LjIgMi42IDY0LTE2LjhsMjYuMi0zMi4zYzUuNi02LjkgOS4xLTE0LjggMTAuOS0yM2g1Ny45Yy4xIDE3LjUgMTQuNCAzMS43IDMxLjkgMzEuN2g2NFYxMjcuOUg1MTkuMnpNNDggMzUxLjZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2YzAgOC45LTcuMiAxNi0xNiAxNnptMzkwLTYuOWwtMjYuMSAzMi4yYy0yLjggMy40LTcuOCA0LTExLjMgMS4ybC0yMy45LTE5LjQtMzAgMzYuNWMtNiA3LjMtMTUgNC44LTE4IDIuNGwtMzYuOC0zMS41LTE1LjYgMTkuMmMtMTMuOSAxNy4xLTM5LjIgMTkuNy01NS4zIDYuNmwtOTcuMy04OEg5NlYxNzUuOGg0MS45bDYxLjctNjEuNmMyLS44IDMuNy0xLjUgNS43LTIuM0gyNjJsLTM4LjcgMzUuNWMtMjkuNCAyNi45LTMxLjEgNzIuMy00LjQgMTAxLjMgMTQuOCAxNi4yIDYxLjIgNDEuMiAxMDEuNSA0LjRsOC4yLTcuNSAxMDguMiA4Ny44YzMuNCAyLjggMy45IDcuOSAxLjIgMTEuM3ptMTA2LTQwLjhoLTY5LjJjLTIuMy0yLjgtNC45LTUuNC03LjctNy43bC0xMDIuNy04My40IDEyLjUtMTEuNGM2LjUtNiA3LTE2LjEgMS0yMi42TDM2NyAxNjcuMWMtNi02LjUtMTYuMS02LjktMjIuNi0xbC01NS4yIDUwLjZjLTkuNSA4LjctMjUuNyA5LjQtMzQuNiAwLTkuMy05LjktOC41LTI1LjEgMS4yLTMzLjlsNjUuNi02MC4xYzcuNC02LjggMTctMTAuNSAyNy0xMC41bDgzLjctLjJjMi4xIDAgNC4xLjggNS41IDIuM2w2MS43IDYxLjZINTQ0djEyOHptNDggNDcuN2MtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTZjMCA4LjktNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY3LjQwMyAyMzUuNjQyTDQ2Mi4zMjMgODQuNTg5QTQ4IDQ4IDAgMCAwIDQyMi45MTkgNjRIMTUzLjA4MWE0OCA0OCAwIDAgMC0zOS40MDQgMjAuNTg5TDguNTk3IDIzNS42NDJBNDguMDAxIDQ4LjAwMSAwIDAgMCAwIDI2My4wNTRWNDAwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjYzLjA1NGMwLTkuODAxLTMtMTkuMzY2LTguNTk3LTI3LjQxMnpNMTUzLjA4MSAxMTJoMjY5LjgzOGw3Ny45MTMgMTEySDc1LjE2OGw3Ny45MTMtMTEyek01MjggNDAwSDQ4VjI3Mmg0ODB2MTI4em0tMzItNjRjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzIgMTQuMzI3LTMyIDMyLTMyIDMyIDE0LjMyNyAzMiAzMnptLTk2IDBjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzIgMTQuMzI3LTMyIDMyLTMyIDMyIDE0LjMyNyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU4LjQgNjQuM0M0MDAuNiAxNS43IDMxMS4zIDIzIDI1NiA3OS4zIDIwMC43IDIzIDExMS40IDE1LjYgNTMuNiA2NC4zLTIxLjYgMTI3LjYtMTAuNiAyMzAuOCA0MyAyODUuNWwxNzUuNCAxNzguN2MxMCAxMC4yIDIzLjQgMTUuOSAzNy42IDE1LjkgMTQuMyAwIDI3LjYtNS42IDM3LjYtMTUuOEw0NjkgMjg1LjZjNTMuNS01NC43IDY0LjctMTU3LjktMTAuNi0yMjEuM3ptLTIzLjYgMTg3LjVMMjU5LjQgNDMwLjVjLTIuNCAyLjQtNC40IDIuNC02LjggMEw3Ny4yIDI1MS44Yy0zNi41LTM3LjItNDMuOS0xMDcuNiA3LjMtMTUwLjcgMzguOS0zMi43IDk4LjktMjcuOCAxMzYuNSAxMC41bDM1IDM1LjcgMzUtMzUuN2MzNy44LTM4LjUgOTcuOC00My4yIDEzNi41LTEwLjYgNTEuMSA0My4xIDQzLjUgMTEzLjkgNy4zIDE1MC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIb3NwaXRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMjQ0di00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTE0MCAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyem0tNzYgODR2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptNzYgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMTgwIDEyNHYzNkgwdi0zNmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE5LjVWODUuMDM1QzMxLjUgNzMuNDE4IDQyLjI0NSA2NCA1NS41IDY0SDE0NFYyNGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTEyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0MGg4OC41YzEzLjI1NSAwIDI0IDkuNDE4IDI0IDIxLjAzNVY0NjRINDM2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ6TTc5LjUgNDYzSDE5MnYtNjdjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjY3aDExMi41VjExMkgzMDR2MjRjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDE2OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di0yNEg3OS41djM1MXpNMjY2IDY0aC0yNlYzOGE2IDYgMCAwIDAtNi02aC0yMGE2IDYgMCAwIDAtNiA2djI2aC0yNmE2IDYgMCAwIDAtNiA2djIwYTYgNiAwIDAgMCA2IDZoMjZ2MjZhNiA2IDAgMCAwIDYgNmgyMGE2IDYgMCAwIDAgNi02Vjk2aDI2YTYgNiAwIDAgMCA2LTZWNzBhNiA2IDAgMCAwLTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSG91cmdsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA0OGg0YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMkM1LjM3MyAwIDAgNS4zNzMgMCAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDRjMCA4MC41NjQgMzIuMTg4IDE2NS44MDcgOTcuMTggMjA4QzQ3Ljg5OSAyOTguMzgxIDE2IDM4My45IDE2IDQ2NGgtNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDM2MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0yNGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00YzAtODAuNTY0LTMyLjE4OC0xNjUuODA3LTk3LjE4LTIwOEMzMzYuMTAyIDIxMy42MTkgMzY4IDEyOC4xIDM2OCA0OHpNNjQgNDhoMjU2YzAgMTAxLjYyLTU3LjMwNyAxODQtMTI4IDE4NFM2NCAxNDkuNjIxIDY0IDQ4em0yNTYgNDE2SDY0YzAtMTAxLjYyIDU3LjMwOC0xODQgMTI4LTE4NHMxMjggODIuMzggMTI4IDE4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSWRCYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHptMCA0NjRINDhWNDhoMjg4djQxNnpNMTQ0IDExMmg5NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmgtOTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZ6bTQ4IDE3NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bS04OS42IDEyOGgxNzkuMmMxMi40IDAgMjIuNC04LjYgMjIuNC0xOS4ydi0xOS4yYzAtMzEuOC0zMC4xLTU3LjYtNjcuMi01Ny42LTEwLjggMC0xOC43IDgtNDQuOCA4LTI2LjkgMC0zMy40LTgtNDQuOC04LTM3LjEgMC02Ny4yIDI1LjgtNjcuMiA1Ny42djE5LjJjMCAxMC42IDEwIDE5LjIgMjIuNCAxOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCA0MDBIMzAzLjJjLjktNC41LjggMy42LjgtMjIuNCAwLTMxLjgtMzAuMS01Ny42LTY3LjItNTcuNi0xMC44IDAtMTguNyA4LTQ0LjggOC0yNi45IDAtMzMuNC04LTQ0LjgtOC0zNy4xIDAtNjcuMiAyNS44LTY3LjIgNTcuNiAwIDI2LS4yIDE3LjkuOCAyMi40SDQ4VjE0NGg0ODB2Mjg4em0tMTY4LTgwaDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTAtNjRoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMC02NGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4em0tMTY4IDk2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTEyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS02IDMzNkg1NGE2IDYgMCAwIDEtNi02VjExOGE2IDYgMCAwIDEgNi02aDQwNGE2IDYgMCAwIDEgNiA2djI3NmE2IDYgMCAwIDEtNiA2ek0xMjggMTUyYy0yMi4wOTEgMC00MCAxNy45MDktNDAgNDBzMTcuOTA5IDQwIDQwIDQwIDQwLTE3LjkwOSA0MC00MC0xNy45MDktNDAtNDAtNDB6TTk2IDM1MmgzMjB2LTgwbC04Ny41MTUtODcuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMMTkyIDMwNGwtMzkuNTE1LTM5LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDk2IDMwNHY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSW1hZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCA0MTZ2MTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxNzZjMC0yNi41MSAyMS40OS00OCA0OC00OGgxNnY0OEg1NGE2IDYgMCAwIDAtNiA2djI0NGE2IDYgMCAwIDAgNiA2aDM3MmE2IDYgMCAwIDAgNi02di0xMGg0OHptNDItMzM2SDE1MGE2IDYgMCAwIDAtNiA2djI0NGE2IDYgMCAwIDAgNiA2aDM3MmE2IDYgMCAwIDAgNi02Vjg2YTYgNiAwIDAgMC02LTZ6bTYtNDhjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyNTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEgxNDRjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzODR6TTI2NCAxNDRjMCAyMi4wOTEtMTcuOTA5IDQwLTQwIDQwcy00MC0xNy45MDktNDAtNDAgMTcuOTA5LTQwIDQwLTQwIDQwIDE3LjkwOSA0MCA0MHptLTcyIDk2bDM5LjUxNS0zOS41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDI4OCAyNDBsMTAzLjUxNS0xMDMuNTE1YzQuNjg2LTQuNjg2IDEyLjI4NC00LjY4NiAxNi45NzEgMEw0ODAgMjA4djgwSDE5MnYtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0tleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQ4MGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjExMmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em04IDMzNmMwIDQuNDExLTMuNTg5IDgtOCA4SDQ4Yy00LjQxMSAwLTgtMy41ODktOC04VjExMmMwLTQuNDExIDMuNTg5LTggOC04aDQ4MGM0LjQxMSAwIDggMy41ODkgOCA4djI4OHpNMTcwIDI3MHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDgydi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDgyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMzg0IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpNMTIyIDE4OHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMkg4MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTk4IDE1OHYtMTZjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxODBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnS2lzc0JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDE1MmMtMjMuOCAwLTUyLjcgMjkuMy01NiA3MS40LS4zIDMuNyAyIDcuMiA1LjYgOC4zIDMuNSAxIDcuNS0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA1LjktNC41IDUuNi04LjMtMy4xLTQyLjEtMzItNzEuNC01NS44LTcxLjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptNTYtMTQ4YzAtMTkuMi0yOC44LTQxLjUtNzEuNS00NC0zLjgtLjQtNy40IDIuNC04LjIgNi4yLS45IDMuOCAxLjEgNy43IDQuNyA5LjJsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtNS43IDIuNC02IDEyLjIgMCAxNC44bDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTMuNiAxLjUtNS42IDUuNC00LjcgOS4yLjggMy42IDQuMSA2LjIgNy44IDYuMmguNWM0Mi44LTIuNSA3MS41LTI0LjggNzEuNS00NCAwLTEzLTEzLjQtMjcuMy0zNS4yLTM2QzI5MC42IDMzNS4zIDMwNCAzMjEgMzA0IDMwOHptMjQtMTU2Yy0yMy44IDAtNTIuNyAyOS4zLTU2IDcxLjQtLjMgMy43IDIgNy4yIDUuNiA4LjMgMy41IDEgNy41LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDUuOS00LjUgNS42LTguMy0zLjEtNDIuMS0zMi03MS40LTU1LjgtNzEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnS2lzc1dpbmtIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTA0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgMzA4LjVjMC0xOS4yLTI4LjgtNDEuNS03MS41LTQ0LTMuOC0uNC03LjQgMi40LTguMiA2LjItLjkgMy44IDEuMSA3LjcgNC43IDkuMmwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy01LjcgMi40LTYgMTIuMiAwIDE0LjhsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtMy42IDEuNS01LjYgNS40LTQuNyA5LjIuOCAzLjYgNC4xIDYuMiA3LjggNi4yaC41YzQyLjgtMi41IDcxLjUtMjQuOCA3MS41LTQ0IDAtMTMtMTMuNC0yNy4zLTM1LjItMzYgMjEuNy05LjEgMzUuMS0yMy40IDM1LjEtMzYuNHptNzAuNS04My41bDkuNSA4LjVjMy44IDMuMyA5LjMgNCAxMy43IDEuNiA0LjQtMi40IDYuOS03LjQgNi4xLTEyLjQtNC0yNS4yLTM0LjItNDIuMS01OS44LTQyLjFzLTU1LjkgMTYuOS01OS44IDQyLjFjLS44IDUgMS43IDEwIDYuMSAxMi40IDUuOCAzLjEgMTEuMi43IDEzLjctMS42bDkuNS04LjVjMTQuOC0xMy4yIDQ2LjItMTMuMiA2MSAwek0xMzYgMjA4LjVjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzJ6bTM2NS4xIDE5NGMtOC0yMC44LTMxLjUtMzEuNS01My4xLTI1LjlsLTguNCAyLjItMi4zLTguNGMtNS45LTIxLjQtMjctMzYuNS00OS0zMy0yNS4yIDQtNDAuNiAyOC42LTM0IDUyLjZsMjIuOSA4Mi42YzEuNSA1LjMgNyA4LjUgMTIuNCA3LjFsODMtMjEuNWMyNC4xLTYuMyAzNy43LTMxLjggMjguNS01NS43ek0zMzQgNDM2LjNjLTI2LjEgMTIuNS01NS4yIDE5LjctODYgMTkuNy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDBjMCAyMi4xLTMuNyA0My4zLTEwLjQgNjMuMiA5IDYuNCAxNyAxNC4yIDIyLjYgMjMuOSA2LjQuMSAxMi42IDEuNCAxOC42IDIuOSAxMC45LTI3LjkgMTcuMS01OC4yIDE3LjEtOTBDNDk2IDExOSAzODUgOCAyNDggOFMwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDhjMzUuNCAwIDY4LjktNy41IDk5LjQtMjAuOS0yLjUtNy4zIDQuMyAxNy4yLTEzLjQtNDYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnS2lzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjggMTc2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptMTM2IDEzMmMwLTE5LjItMjguOC00MS41LTcxLjUtNDQtMy44LS40LTcuNCAyLjQtOC4yIDYuMi0uOSAzLjggMS4xIDcuNyA0LjcgOS4ybDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTUuNyAyLjQtNiAxMi4yIDAgMTQuOGwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy0zLjYgMS41LTUuNiA1LjQtNC43IDkuMi44IDMuNiA0LjEgNi4yIDcuOCA2LjJoLjVjNDIuOC0yLjUgNzEuNS0yNC44IDcxLjUtNDQgMC0xMy0xMy40LTI3LjMtMzUuMi0zNkMyOTAuNiAzMzUuMyAzMDQgMzIxIDMwNCAzMDh6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptODAtMjgwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGF1Z2hCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0MS40IDM4OS40Yy0zNy44IDM3LjgtODggNTguNi0xNDEuNCA1OC42cy0xMDMuNi0yMC44LTE0MS40LTU4LjZTNDggMzA5LjQgNDggMjU2czIwLjgtMTAzLjYgNTguNi0xNDEuNFMxOTQuNiA1NiAyNDggNTZzMTAzLjYgMjAuOCAxNDEuNCA1OC42UzQ0OCAyMDIuNiA0NDggMjU2cy0yMC44IDEwMy42LTU4LjYgMTQxLjR6TTMyOCAxNTJjLTIzLjggMC01Mi43IDI5LjMtNTYgNzEuNC0uNyA4LjYgMTAuOCAxMS45IDE0LjkgNC41bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjNC4xIDcuNCAxNS42IDQgMTQuOS00LjUtMy4xLTQyLjEtMzItNzEuNC01NS44LTcxLjR6bS0yMDEgNzUuOWw5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzQuMSA3LjQgMTUuNiA0IDE0LjktNC41LTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40cy01Mi43IDI5LjMtNTYgNzEuNGMtLjYgOC41IDEwLjkgMTEuOSAxNS4xIDQuNXpNMzYyLjQgMjg4SDEzMy42Yy04LjIgMC0xNC41IDctMTMuNSAxNSA3LjUgNTkuMiA1OC45IDEwNSAxMjEuMSAxMDVoMTMuNmM2Mi4yIDAgMTEzLjYtNDUuOCAxMjEuMS0xMDUgMS04LTUuMy0xNS0xMy41LTE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMYXVnaFNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDEuNCAzODkuNGMtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNnMtMTAzLjYtMjAuOC0xNDEuNC01OC42UzQ4IDMwOS40IDQ4IDI1NnMyMC44LTEwMy42IDU4LjYtMTQxLjRTMTk0LjYgNTYgMjQ4IDU2czEwMy42IDIwLjggMTQxLjQgNTguNlM0NDggMjAyLjYgNDQ4IDI1NnMtMjAuOCAxMDMuNi01OC42IDE0MS40ek0zNDMuNiAxOTZsMzMuNi00MC4zYzguNi0xMC4zLTMuOC0yNC44LTE1LjQtMThsLTgwIDQ4Yy03LjggNC43LTcuOCAxNS45IDAgMjAuNmw4MCA0OGMxMS41IDYuOCAyNC03LjYgMTUuNC0xOEwzNDMuNiAxOTZ6bS0yMDkuNCA1OC4zbDgwLTQ4YzcuOC00LjcgNy44LTE1LjkgMC0yMC42bC04MC00OGMtMTEuNi02LjktMjQgNy43LTE1LjQgMThsMzMuNiA0MC4zLTMzLjYgNDAuM2MtOC43IDEwLjQgMy44IDI0LjggMTUuNCAxOHpNMzYyLjQgMjg4SDEzMy42Yy04LjIgMC0xNC41IDctMTMuNSAxNSA3LjUgNTkuMiA1OC45IDEwNSAxMjEuMSAxMDVoMTMuNmM2Mi4yIDAgMTEzLjYtNDUuOCAxMjEuMS0xMDUgMS04LTUuMy0xNS0xMy41LTE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMYXVnaFdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQxLjQgMzg5LjRjLTM3LjggMzcuOC04OCA1OC42LTE0MS40IDU4LjZzLTEwMy42LTIwLjgtMTQxLjQtNTguNkM2OC44IDM1OS42IDQ4IDMwOS40IDQ4IDI1NnMyMC44LTEwMy42IDU4LjYtMTQxLjRDMTQ0LjQgNzYuOCAxOTQuNiA1NiAyNDggNTZzMTAzLjYgMjAuOCAxNDEuNCA1OC42YzM3LjggMzcuOCA1OC42IDg4IDU4LjYgMTQxLjRzLTIwLjggMTAzLjYtNTguNiAxNDEuNHpNMzI4IDE2NGMtMjUuNyAwLTU1LjkgMTYuOS01OS45IDQyLjEtMS43IDExLjIgMTEuNSAxOC4yIDE5LjggMTAuOGw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzguNSA3LjQgMjEuNi4zIDE5LjgtMTAuOC0zLjgtMjUuMi0zNC00Mi4xLTU5LjctNDIuMXptLTE2MCA2MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE5NC40IDY0SDEzMy42Yy04LjIgMC0xNC41IDctMTMuNSAxNSA3LjUgNTkuMiA1OC45IDEwNSAxMjEuMSAxMDVoMTMuNmM2Mi4yIDAgMTEzLjYtNDUuOCAxMjEuMS0xMDUgMS04LTUuMy0xNS0xMy41LTE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMYXVnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDEuNCAzODkuNGMtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNnMtMTAzLjYtMjAuOC0xNDEuNC01OC42UzQ4IDMwOS40IDQ4IDI1NnMyMC44LTEwMy42IDU4LjYtMTQxLjRTMTk0LjYgNTYgMjQ4IDU2czEwMy42IDIwLjggMTQxLjQgNTguNlM0NDggMjAyLjYgNDQ4IDI1NnMtMjAuOCAxMDMuNi01OC42IDE0MS40ek0zMjggMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptLTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTk0LjQgNjRIMTMzLjZjLTguMiAwLTE0LjUgNy0xMy41IDE1IDcuNSA1OS4yIDU4LjkgMTA1IDEyMS4xIDEwNWgxMy42YzYyLjIgMCAxMTMuNi00NS44IDEyMS4xLTEwNSAxLTgtNS4zLTE1LTEzLjUtMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4NC4xMTIgMjcuODg5QzQ1NS45ODktLjIzMyA0MTYuMTA4LTguMDU3IDM4Ny4wNTkgOC44NjUgMzQ3LjYwNCAzMS44NDggMjIzLjUwNC00MS4xMTEgOTEuMTk2IDkxLjE5Ny00MS4yNzcgMjIzLjY3MiAzMS45MjMgMzQ3LjQ3MiA4Ljg2NiAzODcuMDU4Yy0xNi45MjIgMjkuMDUxLTkuMSA2OC45MzIgMTkuMDIyIDk3LjA1NCAyOC4xMzUgMjguMTM1IDY4LjAxMSAzNS45MzggOTcuMDU3IDE5LjAyMSAzOS40MjMtMjIuOTcgMTYzLjU1NyA0OS45NjkgMjk1Ljg1OC04Mi4zMjkgMTMyLjQ3NC0xMzIuNDc3IDU5LjI3My0yNTYuMjc3IDgyLjMzMS0yOTUuODYxIDE2LjkyMi0yOS4wNSA5LjEtNjguOTMxLTE5LjAyMi05Ny4wNTR6bS0yMi40MDUgNzIuODk0Yy0zOC44IDY2LjYwOSA0NS42IDE2NS42MzUtNzQuODQ1IDI4Ni4wOC0xMjAuNDQgMTIwLjQ0My0yMTkuNDc1IDM2LjA0OC0yODYuMDc2IDc0Ljg0My0yMi42NzkgMTMuMjA3LTY0LjAzNS0yNy4yNDEtNTAuNDkzLTUwLjQ4OCAzOC44LTY2LjYwOS00NS42LTE2NS42MzUgNzQuODQ1LTI4Ni4wOEMyNDUuNTczIDQuNzAyIDM0NC42MTYgODkuMDg2IDQxMS4yMTkgNTAuMjkyYzIyLjczLTEzLjI0IDY0LjAwNSAyNy4yODggNTAuNDg4IDUwLjQ5MXptLTE2OS44NjEgOC43MzZjMS4zNyAxMC45Ni02LjQwNCAyMC45NTctMTcuMzY1IDIyLjMyNy01NC44NDYgNi44NTUtMTM1Ljc3OSA4Ny43ODctMTQyLjYzNSAxNDIuNjM1LTEuMzczIDEwLjk4OS0xMS4zOTkgMTguNzM0LTIyLjMyNiAxNy4zNjUtMTAuOTYxLTEuMzctMTguNzM1LTExLjM2Ni0xNy4zNjUtMjIuMzI2IDkuMTYyLTczLjI4NiAxMDQuMTY3LTE2OC4yMTUgMTc3LjM2NS0xNzcuMzY1IDEwLjk1My0xLjM2OCAyMC45NTYgNi40MDMgMjIuMzI2IDE3LjM2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlmZVJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNGMxMzYuOTY3IDAgMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDh6bS0xMDMuMzk4LTc2LjcybDUzLjQxMS01My40MTFjMzEuODA2IDEzLjUwNiA2OC4xMjggMTMuNTIyIDk5Ljk3NCAwbDUzLjQxMSA1My40MTFjLTYzLjIxNyAzOC4zMTktMTQzLjU3OSAzOC4zMTktMjA2Ljc5NiAwek0zMzYgMjU2YzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6bTkxLjI4IDEwMy4zOThsLTUzLjQxMS01My40MTFjMTMuNTA1LTMxLjgwNiAxMy41MjItNjguMTI4IDAtOTkuOTc0bDUzLjQxMS01My40MTFjMzguMzE5IDYzLjIxNyAzOC4zMTkgMTQzLjU3OSAwIDIwNi43OTZ6TTM1OS4zOTcgODQuNzJsLTUzLjQxMSA1My40MTFjLTMxLjgwNi0xMy41MDUtNjguMTI4LTEzLjUyMi05OS45NzMgMEwxNTIuNjAyIDg0LjcyYzYzLjIxNy0zOC4zMTkgMTQzLjU3OS0zOC4zMTkgMjA2Ljc5NSAwek04NC43MiAxNTIuNjAybDUzLjQxMSA1My40MTFjLTEzLjUwNiAzMS44MDYtMTMuNTIyIDY4LjEyOCAwIDk5Ljk3NEw4NC43MiAzNTkuMzk4Yy0zOC4zMTktNjMuMjE3LTM4LjMxOS0xNDMuNTc5IDAtMjA2Ljc5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzNTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA4MGMtNTIuOTQgMC05NiA0My4wNi05NiA5NiAwIDguODQgNy4xNiAxNiAxNiAxNnMxNi03LjE2IDE2LTE2YzAtMzUuMyAyOC43Mi02NCA2NC02NCA4Ljg0IDAgMTYtNy4xNiAxNi0xNnMtNy4xNi0xNi0xNi0xNnpNOTYuMDYgNDU5LjE3YzAgMy4xNS45MyA2LjIyIDIuNjggOC44NGwyNC41MSAzNi44NGMyLjk3IDQuNDYgNy45NyA3LjE0IDEzLjMyIDcuMTRoNzguODVjNS4zNiAwIDEwLjM2LTIuNjggMTMuMzItNy4xNGwyNC41MS0zNi44NGMxLjc0LTIuNjIgMi42Ny01LjcgMi42OC04Ljg0bC4wNS00My4xOEg5Ni4wMmwuMDQgNDMuMTh6TTE3NiAwQzczLjcyIDAgMCA4Mi45NyAwIDE3NmMwIDQ0LjM3IDE2LjQ1IDg0Ljg1IDQzLjU2IDExNS43OCAxNi42NCAxOC45OSA0Mi43NCA1OC44IDUyLjQyIDkyLjE2di4wNmg0OHYtLjEyYy0uMDEtNC43Ny0uNzItOS41MS0yLjE1LTE0LjA3LTUuNTktMTcuODEtMjIuODItNjQuNzctNjIuMTctMTA5LjY3LTIwLjU0LTIzLjQzLTMxLjUyLTUzLjE1LTMxLjYxLTg0LjE0LS4yLTczLjY0IDU5LjY3LTEyOCAxMjcuOTUtMTI4IDcwLjU4IDAgMTI4IDU3LjQyIDEyOCAxMjggMCAzMC45Ny0xMS4yNCA2MC44NS0zMS42NSA4NC4xNC0zOS4xMSA0NC42MS01Ni40MiA5MS40Ny02Mi4xIDEwOS40NmE0Ny41MDcgNDcuNTA3IDAgMCAwLTIuMjIgMTQuM3YuMWg0OHYtLjA1YzkuNjgtMzMuMzcgMzUuNzgtNzMuMTggNTIuNDItOTIuMTZDMzM1LjU1IDI2MC44NSAzNTIgMjIwLjM3IDM1MiAxNzYgMzUyIDc4LjggMjczLjIgMCAxNzYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlzdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS02IDQwMEg1NGE2IDYgMCAwIDEtNi02Vjg2YTYgNiAwIDAgMSA2LTZoNDA0YTYgNiAwIDAgMSA2IDZ2MzQwYTYgNiAwIDAgMS02IDZ6bS00Mi05MnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDIwNGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnptMC05NnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDIwNGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnptMC05NnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDIwNGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnptLTI1MiAxMmMwIDE5Ljg4Mi0xNi4xMTggMzYtMzYgMzZzLTM2LTE2LjExOC0zNi0zNiAxNi4xMTgtMzYgMzYtMzYgMzYgMTYuMTE4IDM2IDM2em0wIDk2YzAgMTkuODgyLTE2LjExOCAzNi0zNiAzNnMtMzYtMTYuMTE4LTM2LTM2IDE2LjExOC0zNiAzNi0zNiAzNiAxNi4xMTggMzYgMzZ6bTAgOTZjMCAxOS44ODItMTYuMTE4IDM2LTM2IDM2cy0zNi0xNi4xMTgtMzYtMzYgMTYuMTE4LTM2IDM2LTM2IDM2IDE2LjExOCAzNiAzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MC4wMiAzMmMtMS45NiAwLTMuOTguMzctNS45NiAxLjE2TDM4NC4wMSA5NkgzODRMMjEyIDM1LjI4QTY0LjI1MiA2NC4yNTIgMCAwIDAgMTkxLjc2IDMyYy02LjY5IDAtMTMuMzcgMS4wNS0xOS44MSAzLjE0TDIwLjEyIDg3Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTcuNjZ2MzQ2LjMyQzAgNDczLjE3IDcuNTMgNDgwIDE1Ljk5IDQ4MGMxLjk2IDAgMy45Ny0uMzcgNS45Ni0xLjE2TDE5MiA0MTZsMTcyIDYwLjcxYTYzLjk4IDYzLjk4IDAgMCAwIDQwLjA1LjE1bDE1MS44My01Mi44MUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiAzOTQuMzRWNDguMDJjMC05LjE5LTcuNTMtMTYuMDItMTUuOTgtMTYuMDJ6TTIyNCA5MC40MmwxMjggNDUuMTl2Mjg1Ljk3bC0xMjgtNDUuMTlWOTAuNDJ6TTQ4IDQxOC4wNVYxMjkuMDdsMTI4LTQ0LjUzdjI4Ni4ybC0uNjQuMjNMNDggNDE4LjA1em00ODAtMzUuMTNsLTEyOCA0NC41M1YxNDEuMjZsLjY0LS4yNEw1MjggOTMuOTV2Mjg4Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdNZWhCbGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS04MC0yODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0xNjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01laFJvbGxpbmdFeWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptODgtMzA0Yy0zOS44IDAtNzIgMzIuMi03MiA3MnMzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03MnptMCAxMTJjLTIyLjEgMC00MC0xNy45LTQwLTQwIDAtMTMuNiA3LjMtMjUuMSAxNy43LTMyLjMtMSAyLjYtMS43IDUuMy0xLjcgOC4zIDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0yLjktLjctNS43LTEuNy04LjMgMTAuNCA3LjIgMTcuNyAxOC43IDE3LjcgMzIuMyAwIDIyLjEtMTcuOSA0MC00MCA0MHptLTEwNC00MGMwLTM5LjgtMzIuMi03Mi03Mi03MnMtNzIgMzIuMi03MiA3MiAzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzJ6bS0xMTIgMGMwLTEzLjYgNy4zLTI1LjEgMTcuNy0zMi4zLTEgMi42LTEuNyA1LjMtMS43IDguMyAwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMi45LS43LTUuNy0xLjctOC4zIDEwLjQgNy4yIDE3LjcgMTguNyAxNy43IDMyLjMgMCAyMi4xLTE3LjkgNDAtNDAgNDBzLTQwLTE3LjktNDAtNDB6bTE5MiAxMjhIMTg0Yy0xMy4yIDAtMjQgMTAuOC0yNCAyNHMxMC44IDI0IDI0IDI0aDEyOGMxMy4yIDAgMjQtMTAuOCAyNC0yNHMtMTAuOC0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTWVoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTggMTQ0SDE2MGMtMTMuMiAwLTI0IDEwLjgtMjQgMjRzMTAuOCAyNCAyNCAyNGgxNzZjMTMuMiAwIDI0LTEwLjggMjQtMjRzLTEwLjgtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01pbnVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwOCAyODRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDIzMmM2LjYgMCAxMiA1LjQgMTIgMTJ2MzJjMCA2LjYtNS40IDEyLTEyIDEySDEwOHpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTW9uZXlCaWxsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAxNDRjLTUzLjAyIDAtOTYgNTAuMTQtOTYgMTEyIDAgNjEuODUgNDIuOTggMTEyIDk2IDExMiA1MyAwIDk2LTUwLjEzIDk2LTExMiAwLTYxLjg2LTQyLjk4LTExMi05Ni0xMTJ6bTQwIDE2OGMwIDQuNDItMy41OCA4LTggOGgtNjRjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxNnYtNTUuNDRsLS40Ny4zMWE3Ljk5MiA3Ljk5MiAwIDAgMS0xMS4wOS0yLjIybC04Ljg4LTEzLjMxYTcuOTkyIDcuOTkyIDAgMCAxIDIuMjItMTEuMDlsMTUuMzMtMTAuMjJhMjMuOTkgMjMuOTkgMCAwIDEgMTMuMzEtNC4wM0gzMjhjNC40MiAwIDggMy41OCA4IDh2ODhoMTZjNC40MiAwIDggMy41OCA4IDh2MTZ6TTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptLTE2IDI3MmMtMzUuMzUgMC02NCAyOC42NS02NCA2NEgxMTJjMC0zNS4zNS0yOC42NS02NC02NC02NFYxNzZjMzUuMzUgMCA2NC0yOC42NSA2NC02NGg0MTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NHYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc5LjEzNSA1MTJjNzguNzU2IDAgMTUwLjk4Mi0zNS44MDQgMTk4Ljg0NC05NC43NzUgMjguMjctMzQuODMxLTIuNTU4LTg1LjcyMi00Ni4yNDktNzcuNDAxLTgyLjM0OCAxNS42ODMtMTU4LjI3Mi00Ny4yNjgtMTU4LjI3Mi0xMzAuNzkyIDAtNDguNDI0IDI2LjA2LTkyLjI5MiA2Ny40MzQtMTE1LjgzNiAzOC43NDUtMjIuMDUgMjguOTk5LTgwLjc4OC0xNS4wMjItODguOTE5QTI1Ny45MzYgMjU3LjkzNiAwIDAgMCAyNzkuMTM1IDBjLTE0MS4zNiAwLTI1NiAxMTQuNTc1LTI1NiAyNTYgMCAxNDEuMzYgMTE0LjU3NiAyNTYgMjU2IDI1NnptMC00NjRjMTIuOTg1IDAgMjUuNjg5IDEuMjAxIDM4LjAxNiAzLjQ3OC01NC43NiAzMS4xNjMtOTEuNjkzIDkwLjA0Mi05MS42OTMgMTU3LjU1NCAwIDExMy44NDggMTAzLjY0MSAxOTkuMiAyMTUuMjUyIDE3Ny45NDRDNDAyLjU3NCA0MzMuOTY0IDM0NC4zNjYgNDY0IDI3OS4xMzUgNDY0Yy0xMTQuODc1IDAtMjA4LTkzLjEyNS0yMDgtMjA4czkzLjEyNS0yMDggMjA4LTIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MiA2NEgxMTJjLTIwLjg1OCAwLTM4LjY0MyAxMy4zNzctNDUuMjQ4IDMySDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjcyYzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1Nmg0OTZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0Vjg4YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNNDggMzkyVjE0NGgxNnYyNDhjMCA0LjQxMS0zLjU4OSA4LTggOHMtOC0zLjU4OS04LTh6bTQ4MCA4SDExMS40MjJjLjM3NC0yLjYxNC41NzgtNS4yODMuNTc4LThWMTEyaDQxNnYyODh6TTE3MiAyODBoMTM2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjk2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJ6bTI4LTgwaDgwdjQwaC04MHYtNDB6bS00MCAxNDB2LTI0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTM2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgxNzJjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTE5MiAwdi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDEwNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzY0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wLTE0NHYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMDRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDM2NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMCA3MnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMDRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDM2NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnT2JqZWN0R3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwIDEyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEySDk2VjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjI1NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDMyMHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTcyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTEyVjEyOGgxMnptLTUyLTY0aDMydjMyaC0zMlY2NHpNMzIgNjRoMzJ2MzJIMzJWNjR6bTMyIDM4NEgzMnYtMzJoMzJ2MzJ6bTQxNiAwaC0zMnYtMzJoMzJ2MzJ6bS00MC02NGgtMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJIOTZ2LTEyYzAtNi42MjctNS4zNzMtMTItMTItMTJINzJWMTI4aDEyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDMyMHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjI1NnptLTM2LTE5MmgtODR2LTUyYzAtNi42MjgtNS4zNzMtMTItMTItMTJIMTA4Yy02LjYyNyAwLTEyIDUuMzcyLTEyIDEydjE2OGMwIDYuNjI4IDUuMzczIDEyIDEyIDEyaDg0djUyYzAgNi42MjggNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzIgMTItMTJWMjA0YzAtNi42MjgtNS4zNzMtMTItMTItMTJ6bS0yNjgtMjRoMTQ0djExMkgxMzZWMTY4em0yNDAgMTc2SDIzMnYtMjRoNzZjNi42MjcgMCAxMi01LjM3MiAxMi0xMnYtNzZoNTZ2MTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdPYmplY3RVbmdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2NCAyMjRjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNzJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNzJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJoLTg4di0yNGgxMmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEySDk2VjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjE2MEgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDg4djI0aC0xMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDIyNHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTcyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTEyVjIyNGgxMnpNMzUyIDY0aDMydjMyaC0zMlY2NHptMCAyNTZoMzJ2MzJoLTMydi0zMnpNNjQgMzUySDMydi0zMmgzMnYzMnptMC0yNTZIMzJWNjRoMzJ2MzJ6bTMyIDIxNnYtMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3MlYxMjhoMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMTJoMjI0djEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MTYwaC0xMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxMkg5NnptMTI4IDEzNmgtMzJ2LTMyaDMydjMyem0yODAtNjRoLTEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEySDI1NnYtMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMTJ2LTI0aDg4djEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNzJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMTJ2LTg4aDg4djEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MTYwem00MCA2NGgtMzJ2LTMyaDMydjMyem0wLTI1NmgtMzJ2LTMyaDMydjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQYXBlclBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MCA2LjVMMjQgMjQ2LjRjLTM0LjQgMTkuOS0zMS4xIDcwLjggNS43IDg1LjlMMTQ0IDM3OS42VjQ2NGMwIDQ2LjQgNTkuMiA2NS41IDg2LjYgMjguNmw0My44LTU5LjEgMTExLjkgNDYuMmM1LjkgMi40IDEyLjEgMy42IDE4LjMgMy42IDguMiAwIDE2LjMtMi4xIDIzLjYtNi4yIDEyLjgtNy4yIDIxLjYtMjAgMjMuOS0zNC41bDU5LjQtMzg3LjJjNi4xLTQwLjEtMzYuOS02OC44LTcxLjUtNDguOXpNMTkyIDQ2NHYtNjQuNmwzNi42IDE1LjFMMTkyIDQ2NHptMjEyLjYtMjguN2wtMTUzLjgtNjMuNUwzOTEgMTY5LjVjMTAuNy0xNS41LTkuNS0zMy41LTIzLjctMjEuMkwxNTUuOCAzMzIuNiA0OCAyODggNDY0IDQ4bC01OS40IDM4Ny4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQYXVzZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUgMC0yMDAtODkuNS0yMDAtMjAwUzE0NS41IDU2IDI1NiA1NnMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDB6bTk2LTI4MHYxNjBjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2em0tMTEyIDB2MTYwYzAgOC44LTcuMiAxNi0xNiAxNmgtNDhjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUGxheUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzEuNyAyMzhsLTE3Ni0xMDdjLTE1LjgtOC44LTM1LjcgMi41LTM1LjcgMjF2MjA4YzAgMTguNCAxOS44IDI5LjggMzUuNyAyMWwxNzYtMTAxYzE2LjQtOS4xIDE2LjQtMzIuOCAwLTQyek01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQbHVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAyNDB2MzJjMCA2LjYtNS40IDEyLTEyIDEyaC04OHY4OGMwIDYuNi01LjQgMTItMTIgMTJoLTMyYy02LjYgMC0xMi01LjQtMTItMTJ2LTg4aC04OGMtNi42IDAtMTItNS40LTEyLTEydi0zMmMwLTYuNiA1LjQtMTIgMTItMTJoODh2LTg4YzAtNi42IDUuNC0xMiAxMi0xMmgzMmM2LjYgMCAxMiA1LjQgMTIgMTJ2ODhoODhjNi42IDAgMTIgNS40IDEyIDEyem05Ni0xNjB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdRdWVzdGlvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDQzIDggOCAxMTkuMDgzIDggMjU2YzAgMTM2Ljk5NyAxMTEuMDQzIDI0OCAyNDggMjQ4czI0OC0xMTEuMDAzIDI0OC0yNDhDNTA0IDExOS4wODMgMzkyLjk1NyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUzMiAwLTIwMC04OS40MzEtMjAwLTIwMCAwLTExMC40OTUgODkuNDcyLTIwMCAyMDAtMjAwIDExMC40OTEgMCAyMDAgODkuNDcxIDIwMCAyMDAgMCAxMTAuNTMtODkuNDMxIDIwMC0yMDAgMjAwem0xMDcuMjQ0LTI1NS4yYzAgNjcuMDUyLTcyLjQyMSA2OC4wODQtNzIuNDIxIDkyLjg2M1YzMDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDUuNjQ3Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04LjY1OWMwLTM1Ljc0NSAyNy4xLTUwLjAzNCA0Ny41NzktNjEuNTE2IDE3LjU2MS05Ljg0NSAyOC4zMjQtMTYuNTQxIDI4LjMyNC0yOS41NzkgMC0xNy4yNDYtMjEuOTk5LTI4LjY5My0zOS43ODQtMjguNjkzLTIzLjE4OSAwLTMzLjg5NCAxMC45NzctNDguOTQyIDI5Ljk2OS00LjA1NyA1LjEyLTExLjQ2IDYuMDcxLTE2LjY2NiAyLjEyNGwtMjcuODI0LTIxLjA5OGMtNS4xMDctMy44NzItNi4yNTEtMTEuMDY2LTIuNjQ0LTE2LjM2M0MxODQuODQ2IDEzMS40OTEgMjE0Ljk0IDExMiAyNjEuNzk0IDExMmM0OS4wNzEgMCAxMDEuNDUgMzguMzA0IDEwMS40NSA4OC44ek0yOTggMzY4YzAgMjMuMTU5LTE4Ljg0MSA0Mi00MiA0MnMtNDItMTguODQxLTQyLTQyIDE4Ljg0MS00MiA0Mi00MiA0MiAxOC44NDEgNDIgNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1JlZ2lzdGVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzEgODkuNDUxLTIwMCAyMDAtMjAwIDExMC41MzIgMCAyMDAgODkuNDUxIDIwMCAyMDAgMCAxMTAuNTMyLTg5LjQ1MSAyMDAtMjAwIDIwMHptMTEwLjQ0Mi04MS43OTFjLTUzLjA0Ni05Ni4yODQtNTAuMjUtOTEuNDY4LTUzLjI3MS05Ni4wODUgMjQuMjY3LTEzLjg3OSAzOS40ODItNDEuNTYzIDM5LjQ4Mi03My4xNzYgMC01Mi41MDMtMzAuMjQ3LTg1LjI1Mi0xMDEuNDk4LTg1LjI1MmgtNzguNjY3Yy02LjYxNyAwLTEyIDUuMzgzLTEyIDEyVjM4MGMwIDYuNjE3IDUuMzgzIDEyIDEyIDEyaDM4LjU2OGM2LjYxNyAwIDEyLTUuMzgzIDEyLTEydi04My42NjNoMzEuOTU4bDQ3LjUxNSA4OS4zMDNhMTEuOTggMTEuOTggMCAwIDAgMTAuNTkzIDYuMzZoNDIuODFjOS4xNCAwIDE0LjkxNC05Ljc5OSAxMC41MS0xNy43OTF6TTI1Ni45MzMgMjM5LjkwNmgtMzMuODc1di02NC4xNGgyNy4zNzdjMzIuNDE3IDAgMzguOTI5IDEyLjEzMyAzOC45MjkgMzEuNzA5LS4wMDEgMjAuOTEzLTExLjUxOCAzMi40MzEtMzIuNDMxIDMyLjQzMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU2FkQ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0NCAzODYuNFYyODBjMC0xMy4yLTEwLjgtMjQtMjQtMjRzLTI0IDEwLjgtMjQgMjR2MTUxLjRDMzE1LjUgNDQ3IDI4Mi44IDQ1NiAyNDggNDU2cy02Ny41LTktOTYtMjQuNlYyODBjMC0xMy4yLTEwLjgtMjQtMjQtMjRzLTI0IDEwLjgtMjQgMjR2MTE0LjRjLTM0LjYtMzYtNTYtODQuNy01Ni0xMzguNCAwLTExMC4zIDg5LjctMjAwIDIwMC0yMDBzMjAwIDg5LjcgMjAwIDIwMGMwIDUzLjctMjEuNCAxMDIuNS01NiAxMzguNHpNMjA1LjggMjM0LjVjNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTQtMjUuMi0zNC4yLTQyLjEtNTkuOC00Mi4xcy01NS45IDE2LjktNTkuOCA0Mi4xYy0uOCA1IDEuNyAxMCA2LjEgMTIuNCA0LjQgMi40IDkuOSAxLjggMTMuNy0xLjZsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWMyLjUgMi4zIDcuOSA0LjggMTMuNyAxLjZ6TTM0NCAxODBjLTI1LjcgMC01NS45IDE2LjktNTkuOCA0Mi4xLS44IDUgMS43IDEwIDYuMSAxMi40IDQuNSAyLjQgOS45IDEuOCAxMy43LTEuNmw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzIuNSAyLjIgOCA0LjcgMTMuNyAxLjYgNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTMuOS0yNS4yLTM0LjEtNDIuMS01OS44LTQyLjF6bS05NiA5MmMtMzAuOSAwLTU2IDI4LjctNTYgNjRzMjUuMSA2NCA1NiA2NCA1Ni0yOC43IDU2LTY0LTI1LjEtNjQtNTYtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NhZFRlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem04LTE1MmMtMTMuMiAwLTI0IDEwLjgtMjQgMjRzMTAuOCAyNCAyNCAyNGMyMy44IDAgNDYuMyAxMC41IDYxLjYgMjguOCA4LjEgOS44IDIzLjIgMTEuOSAzMy44IDMuMSAxMC4yLTguNSAxMS42LTIzLjYgMy4xLTMzLjhDMzMwIDMyMC44IDI5NC4xIDMwNCAyNTYgMzA0em0tODgtNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAtNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0tMTY1LjYgOTguOEMxNTEgMjkwLjEgMTI2IDMyNS40IDEyNiAzNDIuOWMwIDIyLjcgMTguOCA0MS4xIDQyIDQxLjFzNDItMTguNCA0Mi00MS4xYzAtMTcuNS0yNS01Mi44LTM2LjQtNjguMS0yLjgtMy43LTguNC0zLjctMTEuMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTYXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMy45NDEgMTI5Ljk0MWwtODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCAzMTYuMTE4IDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNjMuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTI3MiA4MHY4MEgxNDRWODBoMTI4em0xMjIgMzUySDU0YTYgNiAwIDAgMS02LTZWODZhNiA2IDAgMCAxIDYtNmg0MnYxMDRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE3NmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWODMuODgybDc4LjI0MyA3OC4yNDNhNiA2IDAgMCAxIDEuNzU3IDQuMjQzVjQyNmE2IDYgMCAwIDEtNiA2ek0yMjQgMjMyYy00OC41MjMgMC04OCAzOS40NzctODggODhzMzkuNDc3IDg4IDg4IDg4IDg4LTM5LjQ3NyA4OC04OC0zOS40NzctODgtODgtODh6bTAgMTI4Yy0yMi4wNTYgMC00MC0xNy45NDQtNDAtNDBzMTcuOTQ0LTQwIDQwLTQwIDQwIDE3Ljk0NCA0MCA0MC0xNy45NDQgNDAtNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NoYXJlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MS45MzggMTU4LjA2TDQxNy45NCAxNC4wOTJDMzg3LjkyNi0xNS45MjIgMzM2IDUuMDk3IDMzNiA0OC4wMzJ2NTcuMTk4Yy00Mi40NSAxLjg4LTg0LjAzIDYuNTUtMTIwLjc2IDE3Ljk5LTM1LjE3IDEwLjk1LTYzLjA3IDI3LjU4LTgyLjkxIDQ5LjQyQzEwOC4yMiAxOTkuMiA5NiAyMzIuNiA5NiAyNzEuOTRjMCA2MS42OTcgMzMuMTc4IDExMi40NTUgODQuODcgMTQ0Ljc2IDM3LjU0NiAyMy41MDggODUuMjQ4LTEyLjY1MSA3MS4wMi01NS43NC0xNS41MTUtNDcuMTE5LTE3LjE1Ni03MC45MjMgODQuMTEtNzguNzZWMzM2YzAgNDIuOTkzIDUxLjk2OCA2My45MTMgODEuOTQgMzMuOTRsMTQzLjk5OC0xNDRjMTguNzUtMTguNzQgMTguNzUtNDkuMTQgMC02Ny44OHpNMzg0IDMzNlYyMzIuMTZDMjU1LjMwOSAyMzQuMDgyIDE2Ni40OTIgMjU1LjM1IDIwNi4zMSAzNzYgMTc2Ljc5IDM1Ny41NSAxNDQgMzI0LjA4IDE0NCAyNzEuOTRjMC0xMDkuMzM0IDEyOS4xNC0xMTguOTQ3IDI0MC0xMTkuODVWNDhsMTQ0IDE0NC0xNDQgMTQ0em0yNC43NCA4NC40OTNhODIuNjU4IDgyLjY1OCAwIDAgMCAyMC45NzQtOS4zMDNjNy45NzYtNC45NTIgMTguMjg2LjgyNiAxOC4yODYgMTAuMjE0VjQ2NGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDEzMmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQuNDg2YzAgNC45MTctMi45ODcgOS4zNjktNy41NjkgMTEuMTUyLTEzLjcwMiA1LjMzMS0yNi4zOTYgMTEuNTM3LTM4LjA1IDE4LjU4NWExMi4xMzggMTIuMTM4IDAgMCAxLTYuMjggMS43NzdINTRhNiA2IDAgMCAwLTYgNnYzNDBhNiA2IDAgMCAwIDYgNmgzNDBhNiA2IDAgMCAwIDYtNnYtMjUuOTY2YzAtNS4zNyAzLjU3OS0xMC4wNTkgOC43NC0xMS41NDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NtaWxlQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTg0LTE0My40Yy0yMC44IDI1LTUxLjUgMzkuNC04NCAzOS40cy02My4yLTE0LjMtODQtMzkuNGMtOC41LTEwLjItMjMuNi0xMS41LTMzLjgtMy4xLTEwLjIgOC41LTExLjUgMjMuNi0zLjEgMzMuOCAzMCAzNiA3NC4xIDU2LjYgMTIwLjkgNTYuNnM5MC45LTIwLjYgMTIwLjktNTYuNmM4LjUtMTAuMiA3LjEtMjUuMy0zLjEtMzMuOC0xMC4yLTguNC0yNS4zLTcuMS0zMy44IDMuMXpNMTM2LjUgMjExYzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNCAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3ek0zMjggMTUyYy0yMy44IDAtNTIuNyAyOS4zLTU2IDcxLjQtLjMgMy43IDIuMSA3LjIgNS43IDguMyAzLjUgMS4xIDcuNC0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA2LTQuNSA1LjctOC4zLTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTbWlsZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMTcuOC0xNDYuNGMtMTAuMi04LjUtMjUuMy03LjEtMzMuOCAzLjEtMjAuOCAyNS01MS41IDM5LjQtODQgMzkuNHMtNjMuMi0xNC4zLTg0LTM5LjRjLTguNS0xMC4yLTIzLjctMTEuNS0zMy44LTMuMS0xMC4yIDguNS0xMS41IDIzLjYtMy4xIDMzLjggMzAgMzYgNzQuMSA1Ni42IDEyMC45IDU2LjZzOTAuOS0yMC42IDEyMC45LTU2LjZjOC41LTEwLjIgNy4xLTI1LjMtMy4xLTMzLjh6TTE2OCAyNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAtNjBjLTI1LjcgMC01NS45IDE2LjktNTkuOSA0Mi4xLTEuNyAxMS4yIDExLjUgMTguMiAxOS44IDEwLjhsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWM4LjUgNy40IDIxLjYuMyAxOS44LTEwLjgtMy44LTI1LjItMzQtNDIuMS01OS43LTQyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptNCA3Mi42Yy0yMC44IDI1LTUxLjUgMzkuNC04NCAzOS40cy02My4yLTE0LjMtODQtMzkuNGMtOC41LTEwLjItMjMuNy0xMS41LTMzLjgtMy4xLTEwLjIgOC41LTExLjUgMjMuNi0zLjEgMzMuOCAzMCAzNiA3NC4xIDU2LjYgMTIwLjkgNTYuNnM5MC45LTIwLjYgMTIwLjktNTYuNmM4LjUtMTAuMiA3LjEtMjUuMy0zLjEtMzMuOC0xMC4xLTguNC0yNS4zLTcuMS0zMy44IDMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC4xIDM1NS4ybC0zOS4yLTIzIDM0LjEtOS4zYzguNC0yLjMgMTMuNC0xMS4xIDExLjEtMTkuNmwtNC4xLTE1LjVjLTIuMi04LjUtMTAuOS0xMy42LTE5LjMtMTEuM0wzNDMgMjk4LjIgMjcxLjIgMjU2bDcxLjktNDIuMiA3OS43IDIxLjdjOC40IDIuMyAxNy0yLjggMTkuMy0xMS4zbDQuMS0xNS41YzIuMi04LjUtMi43LTE3LjMtMTEuMS0xOS42bC0zNC4xLTkuMyAzOS4yLTIzYzcuNS00LjQgMTAuMS0xNC4yIDUuOC0yMS45bC03LjktMTMuOWMtNC4zLTcuNy0xNC0xMC4zLTIxLjUtNS45bC0zOS4yIDIzIDkuMS0zNC43YzIuMi04LjUtMi43LTE3LjMtMTEuMS0xOS42bC0xNS4yLTQuMWMtOC40LTIuMy0xNyAyLjgtMTkuMyAxMS4zbC0yMS4zIDgxLTcxLjkgNDIuMnYtODQuNUwzMDYgNzAuNGM2LjEtNi4yIDYuMS0xNi40IDAtMjIuNmwtMTEuMS0xMS4zYy02LjEtNi4yLTE2LjEtNi4yLTIyLjIgMGwtMjQuOSAyNS40VjE2YzAtOC44LTctMTYtMTUuNy0xNmgtMTUuN2MtOC43IDAtMTUuNyA3LjItMTUuNyAxNnY0Ni4xbC0yNC45LTI1LjRjLTYuMS02LjItMTYuMS02LjItMjIuMiAwTDE0Mi4xIDQ4Yy02LjEgNi4yLTYuMSAxNi40IDAgMjIuNmw1OC4zIDU5LjN2ODQuNWwtNzEuOS00Mi4yLTIxLjMtODFjLTIuMi04LjUtMTAuOS0xMy42LTE5LjMtMTEuM0w3Mi43IDg0Yy04LjQgMi4zLTEzLjQgMTEuMS0xMS4xIDE5LjZsOS4xIDM0LjctMzkuMi0yM2MtNy41LTQuNC0xNy4xLTEuOC0yMS41IDUuOWwtNy45IDEzLjljLTQuMyA3LjctMS44IDE3LjQgNS44IDIxLjlsMzkuMiAyMy0zNC4xIDkuMWMtOC40IDIuMy0xMy40IDExLjEtMTEuMSAxOS42TDYgMjI0LjJjMi4yIDguNSAxMC45IDEzLjYgMTkuMyAxMS4zbDc5LjctMjEuNyA3MS45IDQyLjItNzEuOSA0Mi4yLTc5LjctMjEuN2MtOC40LTIuMy0xNyAyLjgtMTkuMyAxMS4zbC00LjEgMTUuNWMtMi4yIDguNSAyLjcgMTcuMyAxMS4xIDE5LjZsMzQuMSA5LjMtMzkuMiAyM2MtNy41IDQuNC0xMC4xIDE0LjItNS44IDIxLjlMMTAgMzkxYzQuMyA3LjcgMTQgMTAuMyAyMS41IDUuOWwzOS4yLTIzLTkuMSAzNC43Yy0yLjIgOC41IDIuNyAxNy4zIDExLjEgMTkuNmwxNS4yIDQuMWM4LjQgMi4zIDE3LTIuOCAxOS4zLTExLjNsMjEuMy04MSA3MS45LTQyLjJ2ODQuNWwtNTguMyA1OS4zYy02LjEgNi4yLTYuMSAxNi40IDAgMjIuNmwxMS4xIDExLjNjNi4xIDYuMiAxNi4xIDYuMiAyMi4yIDBsMjQuOS0yNS40VjQ5NmMwIDguOCA3IDE2IDE1LjcgMTZoMTUuN2M4LjcgMCAxNS43LTcuMiAxNS43LTE2di00Ni4xbDI0LjkgMjUuNGM2LjEgNi4yIDE2LjEgNi4yIDIyLjIgMGwxMS4xLTExLjNjNi4xLTYuMiA2LjEtMTYuNCAwLTIyLjZsLTU4LjMtNTkuM3YtODQuNWw3MS45IDQyLjIgMjEuMyA4MWMyLjIgOC41IDEwLjkgMTMuNiAxOS4zIDExLjNMMzc1IDQyOGM4LjQtMi4zIDEzLjQtMTEuMSAxMS4xLTE5LjZsLTkuMS0zNC43IDM5LjIgMjNjNy41IDQuNCAxNy4xIDEuOCAyMS41LTUuOWw3LjktMTMuOWM0LjYtNy41IDIuMS0xNy4zLTUuNS0yMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTYgNDAwSDU0Yy0zLjMgMC02LTIuNy02LTZWODZjMC0zLjMgMi43LTYgNi02aDM0MGMzLjMgMCA2IDIuNyA2IDZ2MzQwYzAgMy4zLTIuNyA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDM4NS4zbC0xMjQuMyA2NS40IDIzLjctMTM4LjQtMTAwLjYtOTggMTM5LTIwLjIgNjIuMi0xMjZWMGMtMTEuNCAwLTIyLjggNS45LTI4LjcgMTcuOEwxOTQgMTUwLjIgNDcuOSAxNzEuNGMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4xIDIzIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZ2LTU0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjEgMTcxLjVMMzgyIDE1MC4yIDMxNi43IDE3LjhjLTExLjctMjMuNi00NS42LTIzLjktNTcuNCAwTDE5NCAxNTAuMiA0Ny45IDE3MS41Yy0yNi4yIDMuOC0zNi43IDM2LjEtMTcuNyA1NC42bDEwNS43IDEwMy0yNSAxNDUuNWMtNC41IDI2LjMgMjMuMiA0NiA0Ni40IDMzLjdMMjg4IDQzOS42bDEzMC43IDY4LjdjMjMuMiAxMi4yIDUwLjktNy40IDQ2LjQtMzMuN2wtMjUtMTQ1LjUgMTA1LjctMTAzYzE5LTE4LjUgOC41LTUwLjgtMTcuNy01NC42ek0zODguNiAzMTIuM2wyMy43IDEzOC40TDI4OCAzODUuNGwtMTI0LjMgNjUuMyAyMy43LTEzOC40LTEwMC42LTk4IDEzOS0yMC4yIDYyLjItMTI2IDYyLjIgMTI2IDEzOSAyMC4yLTEwMC42IDk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTdGlja3lOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzNDguMTA2VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MS45ODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyNjguMTE4YTQ4IDQ4IDAgMCAwIDMzLjk0MS0xNC4wNTlsODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCA0NDggMzQ4LjEwNnptLTEyOCA4MHYtNzYuMTE4aDc2LjExOEwzMjAgNDI4LjEwNnpNNDAwIDgwdjIyMy45ODhIMjk2Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTA0SDQ4VjgwaDM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RvcENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2em0yOTYtODB2MTYwYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTQuMiAyMjEuOWwtNTkuOC00MC41IDEzLjctNzFjMi42LTEzLjItMS42LTI2LjgtMTEuMS0zNi40LTkuNi05LjUtMjMuMi0xMy43LTM2LjItMTEuMWwtNzAuOSAxMy43LTQwLjQtNTkuOWMtMTUuMS0yMi4zLTUxLjktMjIuMy02NyAwbC00MC40IDU5LjktNzAuOC0xMy43Qzk4IDYwLjQgODQuNSA2NC41IDc1IDc0LjFjLTkuNSA5LjYtMTMuNyAyMy4xLTExLjEgMzYuM2wxMy43IDcxLTU5LjggNDAuNUM2LjYgMjI5LjUgMCAyNDIgMCAyNTUuNXM2LjcgMjYgMTcuOCAzMy41bDU5LjggNDAuNS0xMy43IDcxYy0yLjYgMTMuMiAxLjYgMjYuOCAxMS4xIDM2LjMgOS41IDkuNSAyMi45IDEzLjcgMzYuMyAxMS4xbDcwLjgtMTMuNyA0MC40IDU5LjlDMjMwIDUwNS4zIDI0Mi42IDUxMiAyNTYgNTEyczI2LTYuNyAzMy41LTE3LjhsNDAuNC01OS45IDcwLjkgMTMuN2MxMy40IDIuNyAyNi44LTEuNiAzNi4zLTExLjEgOS41LTkuNSAxMy42LTIzLjEgMTEuMS0zNi4zbC0xMy43LTcxIDU5LjgtNDAuNWMxMS4xLTcuNSAxNy44LTIwLjEgMTcuOC0zMy41LS4xLTEzLjYtNi43LTI2LjEtMTcuOS0zMy43em0tMTEyLjkgODUuNmwxNy42IDkxLjItOTEtMTcuNkwyNTYgNDU4bC01MS45LTc3LTkwLjkgMTcuNiAxNy42LTkxLjItNzYuOC01MiA3Ni44LTUyLTE3LjYtOTEuMiA5MSAxNy42TDI1NiA1M2w1MS45IDc2LjkgOTEtMTcuNi0xNy42IDkxLjEgNzYuOCA1Mi03Ni44IDUyLjF6TTI1NiAxNTJjLTU3LjMgMC0xMDQgNDYuNy0xMDQgMTA0czQ2LjcgMTA0IDEwNCAxMDQgMTA0LTQ2LjcgMTA0LTEwNC00Ni43LTEwNC0xMDQtMTA0em0wIDE2MGMtMzAuOSAwLTU2LTI1LjEtNTYtNTZzMjUuMS01NiA1Ni01NiA1NiAyNS4xIDU2IDU2LTI1LjEgNTYtNTYgNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N1cnByaXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMC0xNzZjLTM1LjMgMC02NCAyOC43LTY0IDY0czI4LjcgNjQgNjQgNjQgNjQtMjguNyA2NC02NC0yOC43LTY0LTY0LTY0em0tNDgtNzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyem0xMjgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2Ni4yNyAyMjUuMzFjNC42NzQtMjIuNjQ3Ljg2NC00NC41MzgtOC45OS02Mi45OSAyLjk1OC0yMy44NjgtNC4wMjEtNDguNTY1LTE3LjM0LTY2Ljk5QzQzOC45ODYgMzkuNDIzIDQwNC4xMTcgMCAzMjcgMGMtNyAwLTE1IC4wMS0yMi4yMi4wMUMyMDEuMTk1LjAxIDE2OC45OTcgNDAgMTI4IDQwaC0xMC44NDVjLTUuNjQtNC45NzUtMTMuMDQyLTgtMjEuMTU1LThIMzJDMTQuMzI3IDMyIDAgNDYuMzI3IDAgNjR2MjQwYzAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmg2NGMxMS44NDIgMCAyMi4xNzUtNi40MzggMjcuNzA4LTE2aDcuMDUyYzE5LjE0NiAxNi45NTMgNDYuMDEzIDYwLjY1MyA2OC43NiA4My40IDEzLjY2NyAxMy42NjcgMTAuMTUzIDEwOC42IDcxLjc2IDEwOC42IDU3LjU4IDAgOTUuMjctMzEuOTM2IDk1LjI3LTEwNC43MyAwLTE4LjQxLTMuOTMtMzMuNzMtOC44NS00Ni41NGgzNi40OGM0OC42MDIgMCA4NS44Mi00MS41NjUgODUuODItODUuNTggMC0xOS4xNS00Ljk2LTM0Ljk5LTEzLjczLTQ5Ljg0ek02NCAyOTZjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0LTEwLjc0NSAyNC0yNCAyNHptMzMwLjE4IDE2LjczSDI5MC4xOWMwIDM3LjgyIDI4LjM2IDU1LjM3IDI4LjM2IDk0LjU0IDAgMjMuNzUgMCA1Ni43My00Ny4yNyA1Ni43My0xOC45MS0xOC45MS05LjQ2LTY2LjE4LTM3LjgyLTk0LjU0QzIwNi45IDM0Mi44OSAxNjcuMjggMjcyIDEzOC45MiAyNzJIMTI4Vjg1LjgzYzUzLjYxMSAwIDEwMC4wMDEtMzcuODIgMTcxLjY0LTM3LjgyaDM3LjgyYzM1LjUxMiAwIDYwLjgyIDE3LjEyIDUzLjEyIDY1LjkgMTUuMiA4LjE2IDI2LjUgMzYuNDQgMTMuOTQgNTcuNTcgMjEuNTgxIDIwLjM4NCAxOC42OTkgNTEuMDY1IDUuMjEgNjUuNjIgOS40NSAwIDIyLjM2IDE4LjkxIDIyLjI3IDM3LjgxLS4wOSAxOC45MS0xNi43MSAzNy44Mi0zNy44MiAzNy44MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVGh1bWJzVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY2LjI3IDI4Ni42OUM0NzUuMDQgMjcxLjg0IDQ4MCAyNTYgNDgwIDIzNi44NWMwLTQ0LjAxNS0zNy4yMTgtODUuNTgtODUuODItODUuNThIMzU3LjdjNC45Mi0xMi44MSA4Ljg1LTI4LjEzIDguODUtNDYuNTRDMzY2LjU1IDMxLjkzNiAzMjguODYgMCAyNzEuMjggMGMtNjEuNjA3IDAtNTguMDkzIDk0LjkzMy03MS43NiAxMDguNi0yMi43NDcgMjIuNzQ3LTQ5LjYxNSA2Ni40NDctNjguNzYgODMuNEgzMmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjI0MGMwIDE3LjY3MyAxNC4zMjcgMzIgMzIgMzJoNjRjMTQuODkzIDAgMjcuNDA4LTEwLjE3NCAzMC45NzgtMjMuOTUgNDQuNTA5IDEuMDAxIDc1LjA2IDM5Ljk0IDE3Ny44MDIgMzkuOTQgNy4yMiAwIDE1LjIyLjAxIDIyLjIyLjAxIDc3LjExNyAwIDExMS45ODYtMzkuNDIzIDExMi45NC05NS4zMyAxMy4zMTktMTguNDI1IDIwLjI5OS00My4xMjIgMTcuMzQtNjYuOTkgOS44NTQtMTguNDUyIDEzLjY2NC00MC4zNDMgOC45OS02Mi45OXptLTYxLjc1IDUzLjgzYzEyLjU2IDIxLjEzIDEuMjYgNDkuNDEtMTMuOTQgNTcuNTcgNy43IDQ4Ljc4LTE3LjYwOCA2NS45LTUzLjEyIDY1LjloLTM3LjgyYy03MS42MzkgMC0xMTguMDI5LTM3LjgyLTE3MS42NC0zNy44MlYyNDBoMTAuOTJjMjguMzYgMCA2Ny45OC03MC44OSA5NC41NC05Ny40NiAyOC4zNi0yOC4zNiAxOC45MS03NS42MyAzNy44Mi05NC41NCA0Ny4yNyAwIDQ3LjI3IDMyLjk4IDQ3LjI3IDU2LjczIDAgMzkuMTctMjguMzYgNTYuNzItMjguMzYgOTQuNTRoMTAzLjk5YzIxLjExIDAgMzcuNzMgMTguOTEgMzcuODIgMzcuODIuMDkgMTguOS0xMi44MiAzNy44MS0yMi4yNyAzNy44MSAxMy40ODkgMTQuNTU1IDE2LjM3MSA0NS4yMzYtNS4yMSA2NS42MnpNODggNDMyYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNHMtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RpbWVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptMTAxLjgtMjYyLjJMMjk1LjYgMjU2bDYyLjIgNjIuMmM0LjcgNC43IDQuNyAxMi4zIDAgMTdsLTIyLjYgMjIuNmMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDI1NiAyOTUuNmwtNjIuMiA2Mi4yYy00LjcgNC43LTEyLjMgNC43LTE3IDBsLTIyLjYtMjIuNmMtNC43LTQuNy00LjctMTIuMyAwLTE3bDYyLjItNjIuMi02Mi4yLTYyLjJjLTQuNy00LjctNC43LTEyLjMgMC0xN2wyMi42LTIyLjZjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDYyLjIgNjIuMiA2Mi4yLTYyLjJjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDIyLjYgMjIuNmM0LjcgNC43IDQuNyAxMi4zIDAgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RpcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTI5LjEtMzAzLjhjLTMuOC00LjQtMTAuMy01LjQtMTUuMy0yLjVsLTgwIDQ4Yy0zLjYgMi4yLTUuOCA2LjEtNS44IDEwLjNzMi4yIDguMSA1LjggMTAuM2w4MCA0OGM1LjQgMy4yIDExLjggMS42IDE1LjMtMi41IDMuOC00LjUgMy45LTExIC4xLTE1LjVMMzQzLjYgMjA4bDMzLjYtNDAuM2MzLjgtNC41IDMuNy0xMS4xLS4xLTE1LjV6TTIyMCAyMDhjMC00LjItMi4yLTguMS01LjgtMTAuM2wtODAtNDhjLTUtMy0xMS41LTEuOS0xNS4zIDIuNS0zLjggNC41LTMuOSAxMS0uMSAxNS41bDMzLjYgNDAuMy0zMy42IDQwLjNjLTMuOCA0LjUtMy43IDExIC4xIDE1LjUgMy41IDQuMSA5LjkgNS43IDE1LjMgMi41bDgwLTQ4YzMuNi0yLjIgNS44LTYuMSA1LjgtMTAuM3ptMjggNjRjLTQ1LjQgMC0xMDAuOSAzOC4zLTEwNy44IDkzLjMtMS41IDExLjggNi45IDIxLjYgMTUuNSAxNy45QzE3OC40IDM3My41IDIxMiAzNjggMjQ4IDM2OHM2OS42IDUuNSA5Mi4zIDE1LjJjOC41IDMuNyAxNy02IDE1LjUtMTcuOS02LjktNTUtNjIuNC05My4zLTEwNy44LTkzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RyYXNoQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OCA0MTZoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6TTQzMiA4MGgtODIuNDFsLTM0LTU2LjdBNDggNDggMCAwIDAgMjc0LjQxIDBIMTczLjU5YTQ4IDQ4IDAgMCAwLTQxLjE2IDIzLjNMOTguNDEgODBIMTZBMTYgMTYgMCAwIDAgMCA5NnYxNmExNiAxNiAwIDAgMCAxNiAxNmgxNnYzMzZhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOGgxNmExNiAxNiAwIDAgMCAxNi0xNlY5NmExNiAxNiAwIDAgMC0xNi0xNnpNMTcxLjg0IDUwLjkxQTYgNiAwIDAgMSAxNzcgNDhoOTRhNiA2IDAgMCAxIDUuMTUgMi45MUwyOTMuNjEgODBIMTU0LjM5ek0zNjggNDY0SDgwVjEyOGgyODh6bS0yMTItNDhoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1VzZXJDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDEwNGMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NiA5Ni00MyA5Ni05Ni00My05Ni05Ni05NnptMCAxNDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0wLTI0MEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtNDkuNyAwLTk1LjEtMTguMy0xMzAuMS00OC40IDE0LjktMjMgNDAuNC0zOC42IDY5LjYtMzkuNSAyMC44IDYuNCA0MC42IDkuNiA2MC41IDkuNnMzOS43LTMuMSA2MC41LTkuNmMyOS4yIDEgNTQuNyAxNi41IDY5LjYgMzkuNS0zNSAzMC4xLTgwLjQgNDguNC0xMzAuMSA0OC40em0xNjIuNy04NC4xYy0yNC40LTMxLjQtNjIuMS01MS45LTEwNS4xLTUxLjktMTAuMiAwLTI2IDkuNi01Ny42IDkuNi0zMS41IDAtNDcuNC05LjYtNTcuNi05LjYtNDIuOSAwLTgwLjYgMjAuNS0xMDUuMSA1MS45QzYxLjkgMzM5LjIgNDggMjk5LjIgNDggMjU2YzAtMTEwLjMgODkuNy0yMDAgMjAwLTIwMHMyMDAgODkuNyAyMDAgMjAwYzAgNDMuMi0xMy45IDgzLjItMzcuMyAxMTUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNiAzMDRjLTI4LjcgMC00Mi41IDE2LTg5LjYgMTYtNDcuMSAwLTYwLjgtMTYtODkuNi0xNkM2MC4yIDMwNCAwIDM2NC4yIDAgNDM4LjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjUuNmMwLTc0LjItNjAuMi0xMzQuNC0xMzQuNC0xMzQuNHpNNDAwIDQ2NEg0OHYtMjUuNmMwLTQ3LjYgMzguOC04Ni40IDg2LjQtODYuNCAxNC42IDAgMzguMyAxNiA4OS42IDE2IDUxLjcgMCA3NC45LTE2IDg5LjYtMTYgNDcuNiAwIDg2LjQgMzguOCA4Ni40IDg2LjRWNDY0ek0yMjQgMjg4Yzc5LjUgMCAxNDQtNjQuNSAxNDQtMTQ0UzMwMy41IDAgMjI0IDAgODAgNjQuNSA4MCAxNDRzNjQuNSAxNDQgMTQ0IDE0NHptMC0yNDBjNTIuOSAwIDk2IDQzLjEgOTYgOTZzLTQzLjEgOTYtOTYgOTYtOTYtNDMuMS05Ni05NiA0My4xLTk2IDk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dDbG9zZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0wIDM5NGMwIDMuMy0yLjcgNi02IDZINTRjLTMuMyAwLTYtMi43LTYtNlY4NmMwLTMuMyAyLjctNiA2LTZoNDA0YzMuMyAwIDYgMi43IDYgNnYzNDB6TTM1Ni41IDE5NC42TDI5NS4xIDI1Nmw2MS40IDYxLjRjNC42IDQuNiA0LjYgMTIuMSAwIDE2LjhsLTIyLjMgMjIuM2MtNC42IDQuNi0xMi4xIDQuNi0xNi44IDBMMjU2IDI5NS4xbC02MS40IDYxLjRjLTQuNiA0LjYtMTIuMSA0LjYtMTYuOCAwbC0yMi4zLTIyLjNjLTQuNi00LjYtNC42LTEyLjEgMC0xNi44bDYxLjQtNjEuNC02MS40LTYxLjRjLTQuNi00LjYtNC42LTEyLjEgMC0xNi44bDIyLjMtMjIuM2M0LjYtNC42IDEyLjEtNC42IDE2LjggMGw2MS40IDYxLjQgNjEuNC02MS40YzQuNi00LjYgMTIuMS00LjYgMTYuOCAwbDIyLjMgMjIuM2M0LjcgNC42IDQuNyAxMi4xIDAgMTYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnV2luZG93TWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCAzOTRjMCAzLjMtMi43IDYtNiA2SDU0Yy0zLjMgMC02LTIuNy02LTZWMTkyaDQxNnYyMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1dpbmRvd01pbmltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCA0ODBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoNDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAwSDE0NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NDhINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMjBjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQ4aDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tOTYgNDY0SDQ4VjI1NmgzMjB2MjA4em05Ni05NmgtNDhWMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDE0NFY0OGgzMjB2MzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBGYUJhcnMgfSBmcm9tICdyZWFjdC1pY29ucy9mYSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VOYXZiYXJDb250ZXh0IH0gZnJvbSAnLi9OYXZiYXJDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IE5hdmJhclRvZ2dsZSA9ICh7XG4gIGJhckljb246IEJhckljb24gPSBGYUJhcnMsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaXNPcGVuLCBzZXRJc09wZW4gfSA9IHVzZU5hdmJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLnRvZ2dsZSwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBzZXRJc09wZW4oIWlzT3Blbik7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1uYXZiYXItdG9nZ2xlXCIsXG4gICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJzci1vbmx5XCIsIGNoaWxkcmVuOiBcIk9wZW4gbWFpbiBtZW51XCIgfSksXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goQmFySWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbiB9KVxuICAgICAgXVxuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCB7IE5hdmJhclRvZ2dsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2YmFyVG9nZ2xlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTmF2YmFyQnJhbmQgfSBmcm9tICcuL05hdmJhckJyYW5kLm1qcyc7XG5pbXBvcnQgeyBOYXZiYXJDb2xsYXBzZSB9IGZyb20gJy4vTmF2YmFyQ29sbGFwc2UubWpzJztcbmltcG9ydCB7IE5hdmJhckNvbnRleHQgfSBmcm9tICcuL05hdmJhckNvbnRleHQubWpzJztcbmltcG9ydCB7IE5hdmJhckxpbmsgfSBmcm9tICcuL05hdmJhckxpbmsubWpzJztcbmltcG9ydCB7IE5hdmJhclRvZ2dsZSB9IGZyb20gJy4vTmF2YmFyVG9nZ2xlLm1qcyc7XG5cbmNvbnN0IE5hdmJhckNvbXBvbmVudCA9ICh7XG4gIGJvcmRlcixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZmx1aWQgPSBmYWxzZSxcbiAgbWVudU9wZW4sXG4gIHJvdW5kZWQsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUobWVudU9wZW4pO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLm5hdmJhciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChOYXZiYXJDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lLCBpc09wZW4sIHNldElzT3BlbiB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcIm5hdlwiLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgdGhlbWUucm9vdC5iYXNlLFxuICAgICAgICB0aGVtZS5yb290LmJvcmRlcmVkW2JvcmRlciA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICB0aGVtZS5yb290LnJvdW5kZWRbcm91bmRlZCA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuaW5uZXIuYmFzZSwgdGhlbWUucm9vdC5pbm5lci5mbHVpZFtmbHVpZCA/IFwib25cIiA6IFwib2ZmXCJdKSwgY2hpbGRyZW4gfSlcbiAgICB9XG4gICkgfSk7XG59O1xuTmF2YmFyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJOYXZiYXJcIjtcbk5hdmJhckJyYW5kLmRpc3BsYXlOYW1lID0gXCJOYXZiYXIuQnJhbmRcIjtcbk5hdmJhckNvbGxhcHNlLmRpc3BsYXlOYW1lID0gXCJOYXZiYXIuQ29sbGFwc2VcIjtcbk5hdmJhckxpbmsuZGlzcGxheU5hbWUgPSBcIk5hdmJhci5MaW5rXCI7XG5OYXZiYXJUb2dnbGUuZGlzcGxheU5hbWUgPSBcIk5hdmJhci5Ub2dnbGVcIjtcbmNvbnN0IE5hdmJhciA9IE9iamVjdC5hc3NpZ24oTmF2YmFyQ29tcG9uZW50LCB7XG4gIEJyYW5kOiBOYXZiYXJCcmFuZCxcbiAgQ29sbGFwc2U6IE5hdmJhckNvbGxhcHNlLFxuICBMaW5rOiBOYXZiYXJMaW5rLFxuICBUb2dnbGU6IE5hdmJhclRvZ2dsZVxufSk7XG5cbmV4cG9ydCB7IE5hdmJhciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2YmFyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VJZCwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93biB9IGZyb20gJy4uL0Ryb3Bkb3duL0Ryb3Bkb3duLm1qcyc7XG5pbXBvcnQgJy4uL0Ryb3Bkb3duL0Ryb3Bkb3duQ29udGV4dC5tanMnO1xuaW1wb3J0ICcuLi9Ecm9wZG93bi9Ecm9wZG93bkl0ZW0ubWpzJztcblxuY29uc3QgTWVnYU1lbnVEcm9wZG93biA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB0b2dnbGUsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IFtsYWJlbGxlZEJ5LCBzZXRMYWJlbGxlZEJ5XSA9IHVzZVN0YXRlKHZvaWQgMCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkubWVnYU1lbnUuZHJvcGRvd24sIGN1c3RvbVRoZW1lKTtcbiAgaWYgKHRvZ2dsZSkge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgRHJvcGRvd24sXG4gICAgICB7XG4gICAgICAgIGlubGluZTogdHJ1ZSxcbiAgICAgICAgbGFiZWw6IHRvZ2dsZSxcbiAgICAgICAgcGxhY2VtZW50OiBcImJvdHRvbVwiLFxuICAgICAgICB0aGVtZTogdGhlbWUudG9nZ2xlLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgIH1cbiAgICApO1xuICB9XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZpbmRUb2dnbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IG1lZ2FNZW51ID0gcmVmLmN1cnJlbnQ/LmNsb3Nlc3QoXCJuYXZcIik7XG4gICAgICByZXR1cm4gbWVnYU1lbnU/LnF1ZXJ5U2VsZWN0b3IoJ1thcmlhLWhhc3BvcHVwPVwibWVudVwiXScpO1xuICAgIH07XG4gICAgc2V0TGFiZWxsZWRCeShmaW5kVG9nZ2xlKCk/LmlkKTtcbiAgfSwgW10pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGxhYmVsbGVkQnksXG4gICAgICBpZCxcbiAgICAgIHJlZixcbiAgICAgIHJvbGU6IFwibWVudVwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcbk1lZ2FNZW51RHJvcGRvd24uZGlzcGxheU5hbWUgPSBcIk1lZ2FNZW51LkRyb3Bkb3duXCI7XG5cbmV4cG9ydCB7IE1lZ2FNZW51RHJvcGRvd24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1lZ2FNZW51RHJvcGRvd24ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlSWQsIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgTWVnYU1lbnVEcm9wZG93blRvZ2dsZSA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBpZCA9IHVzZUlkKCk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgW2NvbnRyb2xzLCBzZXRDb250cm9sc10gPSB1c2VTdGF0ZSh2b2lkIDApO1xuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0RXhwYW5kZWRdID0gdXNlU3RhdGUodm9pZCAwKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5tZWdhTWVudS5kcm9wZG93blRvZ2dsZSwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBmaW5kRHJvcGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBtZWdhTWVudSA9IHJlZi5jdXJyZW50Py5jbG9zZXN0KFwibmF2XCIpO1xuICAgIHJldHVybiBtZWdhTWVudT8ucXVlcnlTZWxlY3RvcignW3JvbGU9XCJtZW51XCJdJyk7XG4gIH07XG4gIGNvbnN0IG9uQ2xpY2sgPSBmdW5jdGlvbigpIHtcbiAgICBmaW5kRHJvcGRvd24oKT8uY2xhc3NMaXN0LnRvZ2dsZShcImhpZGRlblwiKTtcbiAgICBzZXRFeHBhbmRlZCghaXNFeHBhbmRlZCk7XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZHJvcGRvd24gPSBmaW5kRHJvcGRvd24oKTtcbiAgICBjb25zdCBpc0Ryb3Bkb3duSGlkZGVuID0gZHJvcGRvd24/LmNsYXNzTGlzdC5jb250YWlucyhcImhpZGRlblwiKTtcbiAgICBzZXRDb250cm9scyhkcm9wZG93bj8uaWQpO1xuICAgIHNldEV4cGFuZGVkKCFpc0Ryb3Bkb3duSGlkZGVuKTtcbiAgfSwgW10pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBjb250cm9scyxcbiAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBpc0V4cGFuZGVkLFxuICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IFwibWVudVwiLFxuICAgICAgaWQsXG4gICAgICBvbkNsaWNrLFxuICAgICAgcmVmLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcbk1lZ2FNZW51RHJvcGRvd25Ub2dnbGUuZGlzcGxheU5hbWUgPSBcIk1lZ2FNZW51LkRyb3Bkb3duVG9nZ2xlXCI7XG5cbmV4cG9ydCB7IE1lZ2FNZW51RHJvcGRvd25Ub2dnbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1lZ2FNZW51RHJvcGRvd25Ub2dnbGUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBOYXZiYXIgfSBmcm9tICcuLi9OYXZiYXIvTmF2YmFyLm1qcyc7XG5pbXBvcnQgJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCAnLi4vTmF2YmFyL05hdmJhckNvbnRleHQubWpzJztcbmltcG9ydCAncmVhY3QtaWNvbnMvZmEnO1xuaW1wb3J0IHsgTWVnYU1lbnVEcm9wZG93biB9IGZyb20gJy4vTWVnYU1lbnVEcm9wZG93bi5tanMnO1xuaW1wb3J0IHsgTWVnYU1lbnVEcm9wZG93blRvZ2dsZSB9IGZyb20gJy4vTWVnYU1lbnVEcm9wZG93blRvZ2dsZS5tanMnO1xuXG5jb25zdCBNZWdhTWVudUNvbXBvbmVudCA9ICh7IGNoaWxkcmVuLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLm1lZ2FNZW51LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KE5hdmJhciwgeyBmbHVpZDogdHJ1ZSwgdGhlbWUsIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbn07XG5jb25zdCBNZWdhTWVudSA9IE9iamVjdC5hc3NpZ24oTWVnYU1lbnVDb21wb25lbnQsIHtcbiAgRHJvcGRvd246IE1lZ2FNZW51RHJvcGRvd24sXG4gIERyb3Bkb3duVG9nZ2xlOiBNZWdhTWVudURyb3Bkb3duVG9nZ2xlXG59KTtcbk1lZ2FNZW51Q29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJNZWdhTWVudVwiO1xuXG5leHBvcnQgeyBNZWdhTWVudSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TWVnYU1lbnUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgTW9kYWxDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlTW9kYWxDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNb2RhbENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VNb2RhbENvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBNb2RhbENvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBNb2RhbENvbnRleHQsIHVzZU1vZGFsQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TW9kYWxDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZU1vZGFsQ29udGV4dCB9IGZyb20gJy4vTW9kYWxDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IE1vZGFsQm9keSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgcG9wdXAgfSA9IHVzZU1vZGFsQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuYm9keSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBwb3B1cCAmJiBbdGhlbWUucG9wdXBdLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuXG5leHBvcnQgeyBNb2RhbEJvZHkgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vZGFsQm9keS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VNb2RhbENvbnRleHQgfSBmcm9tICcuL01vZGFsQ29udGV4dC5tanMnO1xuXG5jb25zdCBNb2RhbEZvb3RlciA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgcG9wdXAgfSA9IHVzZU1vZGFsQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuZm9vdGVyLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsICFwb3B1cCAmJiB0aGVtZS5wb3B1cCwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgTW9kYWxGb290ZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vZGFsRm9vdGVyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUlkLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIaU91dGxpbmVYIH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlTW9kYWxDb250ZXh0IH0gZnJvbSAnLi9Nb2RhbENvbnRleHQubWpzJztcblxuY29uc3QgTW9kYWxIZWFkZXIgPSAoe1xuICBhczogQ29tcG9uZW50ID0gXCJoM1wiLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgaWQsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlubmVySGVhZGVySWQgPSB1c2VJZCgpO1xuICBjb25zdCBoZWFkZXJJZCA9IGlkIHx8IGlubmVySGVhZGVySWQ7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgcG9wdXAsIG9uQ2xvc2UsIHNldEhlYWRlcklkIH0gPSB1c2VNb2RhbENvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmhlYWRlciwgY3VzdG9tVGhlbWUpO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIHNldEhlYWRlcklkKGhlYWRlcklkKTtcbiAgICByZXR1cm4gKCkgPT4gc2V0SGVhZGVySWQodm9pZCAwKTtcbiAgfSwgW2hlYWRlcklkLCBzZXRIZWFkZXJJZF0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgcG9wdXAgJiYgdGhlbWUucG9wdXAsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goQ29tcG9uZW50LCB7IGlkOiBoZWFkZXJJZCwgY2xhc3NOYW1lOiB0aGVtZS50aXRsZSwgY2hpbGRyZW4gfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcImJ1dHRvblwiLCB7IFwiYXJpYS1sYWJlbFwiOiBcIkNsb3NlXCIsIGNsYXNzTmFtZTogdGhlbWUuY2xvc2UuYmFzZSwgdHlwZTogXCJidXR0b25cIiwgb25DbGljazogb25DbG9zZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSGlPdXRsaW5lWCwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuY2xvc2UuaWNvbiB9KSB9KVxuICBdIH0pO1xufTtcblxuZXhwb3J0IHsgTW9kYWxIZWFkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vZGFsSGVhZGVyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUZsb2F0aW5nLCB1c2VNZXJnZVJlZnMsIHVzZUNsaWNrLCB1c2VEaXNtaXNzLCB1c2VSb2xlLCB1c2VJbnRlcmFjdGlvbnMsIEZsb2F0aW5nUG9ydGFsLCBGbG9hdGluZ092ZXJsYXksIEZsb2F0aW5nRm9jdXNNYW5hZ2VyIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTW9kYWxCb2R5IH0gZnJvbSAnLi9Nb2RhbEJvZHkubWpzJztcbmltcG9ydCB7IE1vZGFsQ29udGV4dCB9IGZyb20gJy4vTW9kYWxDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBNb2RhbEZvb3RlciB9IGZyb20gJy4vTW9kYWxGb290ZXIubWpzJztcbmltcG9ydCB7IE1vZGFsSGVhZGVyIH0gZnJvbSAnLi9Nb2RhbEhlYWRlci5tanMnO1xuXG5jb25zdCBNb2RhbENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gICh7XG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIGRpc21pc3NpYmxlID0gZmFsc2UsXG4gICAgb25DbG9zZSxcbiAgICBwb3B1cCxcbiAgICBwb3NpdGlvbiA9IFwiY2VudGVyXCIsXG4gICAgcm9vdCxcbiAgICBzaG93LFxuICAgIHNpemUgPSBcIjJ4bFwiLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIGluaXRpYWxGb2N1cyxcbiAgICAuLi5wcm9wc1xuICB9LCB0aGVpclJlZikgPT4ge1xuICAgIGNvbnN0IFtoZWFkZXJJZCwgc2V0SGVhZGVySWRdID0gdXNlU3RhdGUodm9pZCAwKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLm1vZGFsLCBjdXN0b21UaGVtZSk7XG4gICAgY29uc3QgeyBjb250ZXh0IH0gPSB1c2VGbG9hdGluZyh7XG4gICAgICBvcGVuOiBzaG93LFxuICAgICAgb25PcGVuQ2hhbmdlOiAoKSA9PiBvbkNsb3NlICYmIG9uQ2xvc2UoKVxuICAgIH0pO1xuICAgIGNvbnN0IHJlZiA9IHVzZU1lcmdlUmVmcyhbY29udGV4dC5yZWZzLnNldEZsb2F0aW5nLCB0aGVpclJlZl0pO1xuICAgIGNvbnN0IGNsaWNrID0gdXNlQ2xpY2soY29udGV4dCk7XG4gICAgY29uc3QgZGlzbWlzcyA9IHVzZURpc21pc3MoY29udGV4dCwgeyBvdXRzaWRlUHJlc3NFdmVudDogXCJtb3VzZWRvd25cIiwgZW5hYmxlZDogZGlzbWlzc2libGUgfSk7XG4gICAgY29uc3Qgcm9sZSA9IHVzZVJvbGUoY29udGV4dCk7XG4gICAgY29uc3QgeyBnZXRGbG9hdGluZ1Byb3BzIH0gPSB1c2VJbnRlcmFjdGlvbnMoW2NsaWNrLCBkaXNtaXNzLCByb2xlXSk7XG4gICAgaWYgKCFzaG93KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goTW9kYWxDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lLCBwb3B1cCwgb25DbG9zZSwgc2V0SGVhZGVySWQgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goRmxvYXRpbmdQb3J0YWwsIHsgcm9vdCwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBGbG9hdGluZ092ZXJsYXksXG4gICAgICB7XG4gICAgICAgIGxvY2tTY3JvbGw6IHRydWUsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJtb2RhbC1vdmVybGF5XCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICB0aGVtZS5yb290LmJhc2UsXG4gICAgICAgICAgdGhlbWUucm9vdC5wb3NpdGlvbnNbcG9zaXRpb25dLFxuICAgICAgICAgIHNob3cgPyB0aGVtZS5yb290LnNob3cub24gOiB0aGVtZS5yb290LnNob3cub2ZmLFxuICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICApLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goRmxvYXRpbmdGb2N1c01hbmFnZXIsIHsgY29udGV4dCwgaW5pdGlhbEZvY3VzLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIC4uLmdldEZsb2F0aW5nUHJvcHMocHJvcHMpLFxuICAgICAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogaGVhZGVySWQsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuY29udGVudC5iYXNlLCB0aGVtZS5yb290LnNpemVzW3NpemVdKSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5jb250ZW50LmlubmVyLCBjaGlsZHJlbiB9KVxuICAgICAgICAgIH1cbiAgICAgICAgKSB9KVxuICAgICAgfVxuICAgICkgfSkgfSk7XG4gIH1cbik7XG5Nb2RhbENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiTW9kYWxcIjtcbk1vZGFsSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJNb2RhbC5IZWFkZXJcIjtcbk1vZGFsQm9keS5kaXNwbGF5TmFtZSA9IFwiTW9kYWwuQm9keVwiO1xuTW9kYWxGb290ZXIuZGlzcGxheU5hbWUgPSBcIk1vZGFsLkZvb3RlclwiO1xuY29uc3QgTW9kYWwgPSBPYmplY3QuYXNzaWduKE1vZGFsQ29tcG9uZW50LCB7XG4gIEhlYWRlcjogTW9kYWxIZWFkZXIsXG4gIEJvZHk6IE1vZGFsQm9keSxcbiAgRm9vdGVyOiBNb2RhbEZvb3RlclxufSk7XG5cbmV4cG9ydCB7IE1vZGFsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Nb2RhbC5tanMubWFwXG4iLCJjb25zdCByYW5nZSA9IChzdGFydCwgZW5kKSA9PiB7XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIFsuLi5BcnJheShlbmQgLSBzdGFydCArIDEpLmtleXMoKV0ubWFwKChrZXkpID0+IGtleSArIHN0YXJ0KTtcbn07XG5cbmV4cG9ydCB7IHJhbmdlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWxwZXJzLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgUGFnaW5hdGlvbkJ1dHRvbiA9ICh7XG4gIGFjdGl2ZSxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgb25DbGljayxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucGFnaW5hdGlvbiwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoYWN0aXZlICYmIHRoZW1lLnBhZ2VzLnNlbGVjdG9yLmFjdGl2ZSwgY2xhc3NOYW1lKSxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcblBhZ2luYXRpb25CdXR0b24uZGlzcGxheU5hbWUgPSBcIlBhZ2luYXRpb24uQnV0dG9uXCI7XG5jb25zdCBQYWdpbmF0aW9uTmF2aWdhdGlvbiA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIG9uQ2xpY2ssXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnBhZ2luYXRpb24sIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJidXR0b25cIixcbiAgICB7XG4gICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKGRpc2FibGVkICYmIHRoZW1lLnBhZ2VzLnNlbGVjdG9yLmRpc2FibGVkLCBjbGFzc05hbWUpLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBvbkNsaWNrLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5QYWdpbmF0aW9uTmF2aWdhdGlvbi5kaXNwbGF5TmFtZSA9IFwiUGFnaW5hdGlvbi5OYXZpZ2F0aW9uXCI7XG5cbmV4cG9ydCB7IFBhZ2luYXRpb25CdXR0b24sIFBhZ2luYXRpb25OYXZpZ2F0aW9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYWdpbmF0aW9uQnV0dG9uLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IEhpQ2hldnJvbkxlZnQsIEhpQ2hldnJvblJpZ2h0IH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgcmFuZ2UgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcbmltcG9ydCB7IFBhZ2luYXRpb25CdXR0b24sIFBhZ2luYXRpb25OYXZpZ2F0aW9uIH0gZnJvbSAnLi9QYWdpbmF0aW9uQnV0dG9uLm1qcyc7XG5cbmNvbnN0IFBhZ2luYXRpb25Db21wb25lbnQgPSAoe1xuICBjbGFzc05hbWUsXG4gIGN1cnJlbnRQYWdlLFxuICBsYXlvdXQgPSBcInBhZ2luYXRpb25cIixcbiAgbmV4dExhYmVsID0gXCJOZXh0XCIsXG4gIG9uUGFnZUNoYW5nZSxcbiAgcHJldmlvdXNMYWJlbCA9IFwiUHJldmlvdXNcIixcbiAgcmVuZGVyUGFnaW5hdGlvbkJ1dHRvbiA9IChwcm9wczIpID0+IC8qIEBfX1BVUkVfXyAqLyBqc3goUGFnaW5hdGlvbkJ1dHRvbiwgeyAuLi5wcm9wczIgfSksXG4gIHNob3dJY29uczogc2hvd0ljb24gPSBmYWxzZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHRvdGFsUGFnZXMsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucGFnaW5hdGlvbiwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBsYXN0UGFnZSA9IE1hdGgubWluKE1hdGgubWF4KGxheW91dCA9PT0gXCJwYWdpbmF0aW9uXCIgPyBjdXJyZW50UGFnZSArIDIgOiBjdXJyZW50UGFnZSArIDQsIDUpLCB0b3RhbFBhZ2VzKTtcbiAgY29uc3QgZmlyc3RQYWdlID0gTWF0aC5tYXgoMSwgbGFzdFBhZ2UgLSA0KTtcbiAgY29uc3QgZ29Ub05leHRQYWdlID0gKCkgPT4ge1xuICAgIG9uUGFnZUNoYW5nZShNYXRoLm1pbihjdXJyZW50UGFnZSArIDEsIHRvdGFsUGFnZXMpKTtcbiAgfTtcbiAgY29uc3QgZ29Ub1ByZXZpb3VzUGFnZSA9ICgpID0+IHtcbiAgICBvblBhZ2VDaGFuZ2UoTWF0aC5tYXgoY3VycmVudFBhZ2UgLSAxLCAxKSk7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcIm5hdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICBsYXlvdXQgPT09IFwidGFibGVcIiAmJiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGF5b3V0LnRhYmxlLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICBcIlNob3dpbmcgXCIsXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGF5b3V0LnRhYmxlLnNwYW4sIGNoaWxkcmVuOiBmaXJzdFBhZ2UgfSksXG4gICAgICBcIiB0b1xceEEwXCIsXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGF5b3V0LnRhYmxlLnNwYW4sIGNoaWxkcmVuOiBsYXN0UGFnZSB9KSxcbiAgICAgIFwiIG9mXFx4QTBcIixcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5sYXlvdXQudGFibGUuc3BhbiwgY2hpbGRyZW46IHRvdGFsUGFnZXMgfSksXG4gICAgICBcIiBFbnRyaWVzXCJcbiAgICBdIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwidWxcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnBhZ2VzLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICAgIFBhZ2luYXRpb25OYXZpZ2F0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnBhZ2VzLnByZXZpb3VzLmJhc2UsIHNob3dJY29uICYmIHRoZW1lLnBhZ2VzLnNob3dJY29uKSxcbiAgICAgICAgICBvbkNsaWNrOiBnb1RvUHJldmlvdXNQYWdlLFxuICAgICAgICAgIGRpc2FibGVkOiBjdXJyZW50UGFnZSA9PT0gMSxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgc2hvd0ljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChIaUNoZXZyb25MZWZ0LCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5wYWdlcy5wcmV2aW91cy5pY29uIH0pLFxuICAgICAgICAgICAgcHJldmlvdXNMYWJlbFxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSB9KSxcbiAgICAgIGxheW91dCA9PT0gXCJwYWdpbmF0aW9uXCIgJiYgcmFuZ2UoZmlyc3RQYWdlLCBsYXN0UGFnZSkubWFwKChwYWdlKSA9PiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBcImFyaWEtY3VycmVudFwiOiBwYWdlID09PSBjdXJyZW50UGFnZSA/IFwicGFnZVwiIDogdm9pZCAwLCBjaGlsZHJlbjogcmVuZGVyUGFnaW5hdGlvbkJ1dHRvbih7XG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5wYWdlcy5zZWxlY3Rvci5iYXNlLCBjdXJyZW50UGFnZSA9PT0gcGFnZSAmJiB0aGVtZS5wYWdlcy5zZWxlY3Rvci5hY3RpdmUpLFxuICAgICAgICBhY3RpdmU6IHBhZ2UgPT09IGN1cnJlbnRQYWdlLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiBvblBhZ2VDaGFuZ2UocGFnZSksXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlXG4gICAgICB9KSB9LCBwYWdlKSksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICAgIFBhZ2luYXRpb25OYXZpZ2F0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnBhZ2VzLm5leHQuYmFzZSwgc2hvd0ljb24gJiYgdGhlbWUucGFnZXMuc2hvd0ljb24pLFxuICAgICAgICAgIG9uQ2xpY2s6IGdvVG9OZXh0UGFnZSxcbiAgICAgICAgICBkaXNhYmxlZDogY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXMsXG4gICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIG5leHRMYWJlbCxcbiAgICAgICAgICAgIHNob3dJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSGlDaGV2cm9uUmlnaHQsIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLnBhZ2VzLm5leHQuaWNvbiB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSB9KVxuICAgIF0gfSlcbiAgXSB9KTtcbn07XG5QYWdpbmF0aW9uQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJQYWdpbmF0aW9uXCI7XG5jb25zdCBQYWdpbmF0aW9uID0gT2JqZWN0LmFzc2lnbihQYWdpbmF0aW9uQ29tcG9uZW50LCB7XG4gIEJ1dHRvbjogUGFnaW5hdGlvbkJ1dHRvblxufSk7XG5cbmV4cG9ydCB7IFBhZ2luYXRpb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhZ2luYXRpb24ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgUmFkaW8gPSBmb3J3YXJkUmVmKFxuICAoeyBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnJhZGlvLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJpbnB1dFwiLCB7IHJlZiwgdHlwZTogXCJyYWRpb1wiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcyB9KTtcbiAgfVxuKTtcblJhZGlvLmRpc3BsYXlOYW1lID0gXCJSYWRpb1wiO1xuXG5leHBvcnQgeyBSYWRpbyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmFkaW8ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4LCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IFJhbmdlU2xpZGVyID0gZm9yd2FyZFJlZihcbiAgKHsgY2xhc3NOYW1lLCBzaXppbmcgPSBcIm1kXCIsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnJhbmdlU2xpZGVyLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRnJhZ21lbnQsIHsgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtcmFuZ2Utc2xpZGVyXCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiaW5wdXRcIixcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICB0eXBlOiBcInJhbmdlXCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5maWVsZC5pbnB1dC5iYXNlLCB0aGVtZS5maWVsZC5pbnB1dC5zaXplc1tzaXppbmddKSxcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH1cbiAgICApIH0pIH0pIH0pO1xuICB9XG4pO1xuUmFuZ2VTbGlkZXIuZGlzcGxheU5hbWUgPSBcIlJhbmdlU2xpZGVyXCI7XG5cbmV4cG9ydCB7IFJhbmdlU2xpZGVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SYW5nZVNsaWRlci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IFJhdGluZ0FkdmFuY2VkID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgcGVyY2VudEZpbGxlZCA9IDAsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnJhdGluZ0FkdmFuY2VkLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGFiZWwsIGNoaWxkcmVuIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnByb2dyZXNzLmJhc2UsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0aGVtZS5wcm9ncmVzcy5maWxsLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtcmF0aW5nLWZpbGxcIixcbiAgICAgICAgc3R5bGU6IHsgd2lkdGg6IGAke3BlcmNlbnRGaWxsZWR9JWAgfVxuICAgICAgfVxuICAgICkgfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLnByb2dyZXNzLmxhYmVsLCBjaGlsZHJlbjogYCR7cGVyY2VudEZpbGxlZH0lYCB9KVxuICBdIH0pO1xufTtcblxuZXhwb3J0IHsgUmF0aW5nQWR2YW5jZWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhdGluZ0FkdmFuY2VkLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFJhdGluZ0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VSYXRpbmdDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChSYXRpbmdDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlUmF0aW5nQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFJhdGluZ0NvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBSYXRpbmdDb250ZXh0LCB1c2VSYXRpbmdDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SYXRpbmdDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IEhpU3RhciB9IGZyb20gJ3JlYWN0LWljb25zL2hpJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVJhdGluZ0NvbnRleHQgfSBmcm9tICcuL1JhdGluZ0NvbnRleHQubWpzJztcblxuY29uc3QgUmF0aW5nU3RhciA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgZmlsbGVkID0gdHJ1ZSxcbiAgc3Rhckljb246IEljb24gPSBIaVN0YXIsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIHNpemUgPSBcInNtXCIgfSA9IHVzZVJhdGluZ0NvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLnN0YXIsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgSWNvbixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtcmF0aW5nLXN0YXJcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5zaXplc1tzaXplXSwgdGhlbWVbZmlsbGVkID8gXCJmaWxsZWRcIiA6IFwiZW1wdHlcIl0sIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wc1xuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCB7IFJhdGluZ1N0YXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhdGluZ1N0YXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgUmF0aW5nQWR2YW5jZWQgfSBmcm9tICcuL1JhdGluZ0FkdmFuY2VkLm1qcyc7XG5pbXBvcnQgeyBSYXRpbmdDb250ZXh0IH0gZnJvbSAnLi9SYXRpbmdDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBSYXRpbmdTdGFyIH0gZnJvbSAnLi9SYXRpbmdTdGFyLm1qcyc7XG5cbmNvbnN0IFJhdGluZ0NvbXBvbmVudCA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHNpemUgPSBcInNtXCIsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucmF0aW5nLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFJhdGluZ0NvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgdGhlbWUsIHNpemUgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSkgfSk7XG59O1xuUmF0aW5nQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJSYXRpbmdcIjtcblJhdGluZ1N0YXIuZGlzcGxheU5hbWUgPSBcIlJhdGluZy5TdGFyXCI7XG5SYXRpbmdBZHZhbmNlZC5kaXNwbGF5TmFtZSA9IFwiUmF0aW5nLkFkdmFuY2VkXCI7XG5jb25zdCBSYXRpbmcgPSBPYmplY3QuYXNzaWduKFJhdGluZ0NvbXBvbmVudCwge1xuICBTdGFyOiBSYXRpbmdTdGFyLFxuICBBZHZhbmNlZDogUmF0aW5nQWR2YW5jZWRcbn0pO1xuXG5leHBvcnQgeyBSYXRpbmcgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhdGluZy5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgSGVscGVyVGV4dCB9IGZyb20gJy4uL0hlbHBlclRleHQvSGVscGVyVGV4dC5tanMnO1xuXG5jb25zdCBTZWxlY3QgPSBmb3J3YXJkUmVmKFxuICAoe1xuICAgIGFkZG9uLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb2xvciA9IFwiZ3JheVwiLFxuICAgIGhlbHBlclRleHQsXG4gICAgaWNvbjogSWNvbixcbiAgICBzaGFkb3csXG4gICAgc2l6aW5nID0gXCJtZFwiLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuc2VsZWN0LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbXG4gICAgICBhZGRvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUuYWRkb24sIGNoaWxkcmVuOiBhZGRvbiB9KSxcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uYmFzZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uc3ZnIH0pIH0pLFxuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgIFwic2VsZWN0XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgICB0aGVtZS5maWVsZC5zZWxlY3QuYmFzZSxcbiAgICAgICAgICAgICAgdGhlbWUuZmllbGQuc2VsZWN0LmNvbG9yc1tjb2xvcl0sXG4gICAgICAgICAgICAgIHRoZW1lLmZpZWxkLnNlbGVjdC5zaXplc1tzaXppbmddLFxuICAgICAgICAgICAgICB0aGVtZS5maWVsZC5zZWxlY3Qud2l0aEljb25bSWNvbiA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICAgICAgICB0aGVtZS5maWVsZC5zZWxlY3Qud2l0aEFkZG9uW2FkZG9uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgIHRoZW1lLmZpZWxkLnNlbGVjdC53aXRoU2hhZG93W3NoYWRvdyA/IFwib25cIiA6IFwib2ZmXCJdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBjaGlsZHJlblxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgaGVscGVyVGV4dCAmJiAvKiBAX19QVVJFX18gKi8ganN4KEhlbHBlclRleHQsIHsgY29sb3IsIGNoaWxkcmVuOiBoZWxwZXJUZXh0IH0pXG4gICAgICBdIH0pXG4gICAgXSB9KTtcbiAgfVxuKTtcblNlbGVjdC5kaXNwbGF5TmFtZSA9IFwiU2VsZWN0XCI7XG5cbmV4cG9ydCB7IFNlbGVjdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VsZWN0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFNpZGViYXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlU2lkZWJhckNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFNpZGViYXJDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlU2lkZWJhckNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBTaWRlYmFyQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFNpZGViYXJDb250ZXh0LCB1c2VTaWRlYmFyQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgU2lkZWJhckl0ZW1Db250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlU2lkZWJhckl0ZW1Db250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChTaWRlYmFySXRlbUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VTaWRlYmFySXRlbUNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBTaWRlYmFySXRlbUNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBTaWRlYmFySXRlbUNvbnRleHQsIHVzZVNpZGViYXJJdGVtQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckl0ZW1Db250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCwgRnJhZ21lbnQgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VJZCwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEhpQ2hldnJvbkRvd24gfSBmcm9tICdyZWFjdC1pY29ucy9oaSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnLi4vVG9vbHRpcC9Ub29sdGlwLm1qcyc7XG5pbXBvcnQgeyB1c2VTaWRlYmFyQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckNvbnRleHQubWpzJztcbmltcG9ydCB7IFNpZGViYXJJdGVtQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckl0ZW1Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IFNpZGViYXJDb2xsYXBzZSA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGljb246IEljb24sXG4gIGxhYmVsLFxuICBjaGV2cm9uSWNvbjogQ2hldnJvbkljb24gPSBIaUNoZXZyb25Eb3duLFxuICByZW5kZXJDaGV2cm9uSWNvbixcbiAgb3BlbiA9IGZhbHNlLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICBjb25zdCBbaXNPcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKG9wZW4pO1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGlzQ29sbGFwc2VkIH0gPSB1c2VTaWRlYmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuY29sbGFwc2UsIGN1c3RvbVRoZW1lKTtcbiAgdXNlRWZmZWN0KCgpID0+IHNldE9wZW4ob3BlbiksIFtvcGVuXSk7XG4gIGNvbnN0IFdyYXBwZXIgPSAoeyBjaGlsZHJlbjogY2hpbGRyZW4yIH0pID0+IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJsaVwiLCB7IGNoaWxkcmVuOiBpc0NvbGxhcHNlZCAmJiAhaXNPcGVuID8gLyogQF9fUFVSRV9fICovIGpzeChUb29sdGlwLCB7IGNvbnRlbnQ6IGxhYmVsLCBwbGFjZW1lbnQ6IFwicmlnaHRcIiwgY2hpbGRyZW46IGNoaWxkcmVuMiB9KSA6IGNoaWxkcmVuMiB9KTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFdyYXBwZXIsIHsgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGlkOiBgZmxvd2JpdGUtc2lkZWJhci1jb2xsYXBzZS0ke2lkfWAsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldE9wZW4oIWlzT3BlbiksXG4gICAgICAgIHRpdGxlOiBsYWJlbCxcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJ1dHRvbiwgY2xhc3NOYW1lKSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgSWNvbixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1jb2xsYXBzZS1pY29uXCIsXG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5pY29uLmJhc2UsIHRoZW1lLmljb24ub3Blbltpc09wZW4gPyBcIm9uXCIgOiBcIm9mZlwiXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLFxuICAgICAgICAgIGlzQ29sbGFwc2VkID8gLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFwic3Itb25seVwiLCBjaGlsZHJlbjogbGFiZWwgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1jb2xsYXBzZS1sYWJlbFwiLCBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLmJhc2UsIGNoaWxkcmVuOiBsYWJlbCB9KSxcbiAgICAgICAgICAgIHJlbmRlckNoZXZyb25JY29uID8gcmVuZGVyQ2hldnJvbkljb24odGhlbWUsIGlzT3BlbikgOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgICBDaGV2cm9uSWNvbixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUubGFiZWwuaWNvbi5iYXNlLCB0aGVtZS5sYWJlbC5pY29uLm9wZW5baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICBdIH0pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ1bFwiLCB7IFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGBmbG93Yml0ZS1zaWRlYmFyLWNvbGxhcHNlLSR7aWR9YCwgaGlkZGVuOiAhaXNPcGVuLCBjbGFzc05hbWU6IHRoZW1lLmxpc3QsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFNpZGViYXJJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyBpc0luc2lkZUNvbGxhcHNlOiB0cnVlIH0sIGNoaWxkcmVuIH0pIH0pXG4gIF0gfSk7XG59O1xuU2lkZWJhckNvbGxhcHNlLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkNvbGxhcHNlXCI7XG5cbmV4cG9ydCB7IFNpZGViYXJDb2xsYXBzZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckNvbGxhcHNlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBTaWRlYmFyQ1RBID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNvbG9yID0gXCJpbmZvXCIsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaXNDb2xsYXBzZWQgfSA9IHVzZVNpZGViYXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5jdGEsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwic2lkZWJhci1jdGFcIixcbiAgICAgIGhpZGRlbjogaXNDb2xsYXBzZWQsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgdGhlbWUuY29sb3JbY29sb3JdLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5TaWRlYmFyQ1RBLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkNUQVwiO1xuXG5leHBvcnQgeyBTaWRlYmFyQ1RBIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaWRlYmFyQ1RBLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCwganN4cyB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUlkIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tICcuLi9CYWRnZS9CYWRnZS5tanMnO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJy4uL1Rvb2x0aXAvVG9vbHRpcC5tanMnO1xuaW1wb3J0IHsgdXNlU2lkZWJhckNvbnRleHQgfSBmcm9tICcuL1NpZGViYXJDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyB1c2VTaWRlYmFySXRlbUNvbnRleHQgfSBmcm9tICcuL1NpZGViYXJJdGVtQ29udGV4dC5tanMnO1xuXG5jb25zdCBMaXN0SXRlbSA9ICh7IGlkLCB0aGVtZSwgaXNDb2xsYXBzZWQsIHRvb2x0aXBDaGlsZHJlbiwgY2hpbGRyZW46IHdyYXBwZXJDaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4gLyogQF9fUFVSRV9fICovIGpzeChcImxpXCIsIHsgLi4ucHJvcHMsIGNoaWxkcmVuOiBpc0NvbGxhcHNlZCA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gIFRvb2x0aXAsXG4gIHtcbiAgICBjb250ZW50OiAvKiBAX19QVVJFX18gKi8ganN4KENoaWxkcmVuLCB7IGlkLCB0aGVtZSwgY2hpbGRyZW46IHRvb2x0aXBDaGlsZHJlbiB9KSxcbiAgICBwbGFjZW1lbnQ6IFwicmlnaHRcIixcbiAgICBjaGlsZHJlbjogd3JhcHBlckNoaWxkcmVuXG4gIH1cbikgOiB3cmFwcGVyQ2hpbGRyZW4gfSk7XG5jb25zdCBDaGlsZHJlbiA9ICh7IGlkLCB0aGVtZSwgY2hpbGRyZW4gfSkgPT4ge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcInNwYW5cIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1pdGVtLWNvbnRlbnRcIixcbiAgICAgIGlkOiBgZmxvd2JpdGUtc2lkZWJhci1pdGVtLSR7aWR9YCxcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5jb250ZW50LmJhc2UpLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICk7XG59O1xuY29uc3QgU2lkZWJhckl0ZW0gPSBmb3J3YXJkUmVmKFxuICAoe1xuICAgIGFjdGl2ZTogaXNBY3RpdmUsXG4gICAgYXM6IENvbXBvbmVudCA9IFwiYVwiLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBpY29uOiBJY29uLFxuICAgIGxhYmVsLFxuICAgIGxhYmVsQ29sb3IgPSBcImluZm9cIixcbiAgICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBjb25zdCBpZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBpc0NvbGxhcHNlZCB9ID0gdXNlU2lkZWJhckNvbnRleHQoKTtcbiAgICBjb25zdCB7IGlzSW5zaWRlQ29sbGFwc2UgfSA9IHVzZVNpZGViYXJJdGVtQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5pdGVtLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goTGlzdEl0ZW0sIHsgdGhlbWUsIGNsYXNzTmFtZTogdGhlbWUubGlzdEl0ZW0sIGlkLCBpc0NvbGxhcHNlZCwgdG9vbHRpcENoaWxkcmVuOiBjaGlsZHJlbiwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgQ29tcG9uZW50LFxuICAgICAge1xuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBgZmxvd2JpdGUtc2lkZWJhci1pdGVtLSR7aWR9YCxcbiAgICAgICAgcmVmLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgdGhlbWUuYmFzZSxcbiAgICAgICAgICBpc0FjdGl2ZSAmJiB0aGVtZS5hY3RpdmUsXG4gICAgICAgICAgIWlzQ29sbGFwc2VkICYmIGlzSW5zaWRlQ29sbGFwc2UgJiYgdGhlbWUuY29sbGFwc2VkPy5pbnNpZGVDb2xsYXBzZSxcbiAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgKSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgSWNvbixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1pdGVtLWljb25cIixcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmljb24/LmJhc2UsIGlzQWN0aXZlICYmIHRoZW1lLmljb24/LmFjdGl2ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLFxuICAgICAgICAgIGlzQ29sbGFwc2VkICYmICFJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5jb2xsYXBzZWQ/Lm5vSWNvbiwgY2hpbGRyZW46IGNoaWxkcmVuLmNoYXJBdCgwKS50b0xvY2FsZVVwcGVyQ2FzZSgpID8/IFwiP1wiIH0pLFxuICAgICAgICAgICFpc0NvbGxhcHNlZCAmJiAvKiBAX19QVVJFX18gKi8ganN4KENoaWxkcmVuLCB7IGlkLCB0aGVtZSwgY2hpbGRyZW4gfSksXG4gICAgICAgICAgIWlzQ29sbGFwc2VkICYmIGxhYmVsICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goQmFkZ2UsIHsgY29sb3I6IGxhYmVsQ29sb3IsIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1zaWRlYmFyLWxhYmVsXCIsIGhpZGRlbjogaXNDb2xsYXBzZWQsIGNsYXNzTmFtZTogdGhlbWUubGFiZWwsIGNoaWxkcmVuOiBsYWJlbCB9KVxuICAgICAgICBdXG4gICAgICB9XG4gICAgKSB9KTtcbiAgfVxuKTtcblNpZGViYXJJdGVtLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkl0ZW1cIjtcblxuZXhwb3J0IHsgU2lkZWJhckl0ZW0gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNpZGViYXJJdGVtLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckl0ZW1Db250ZXh0IH0gZnJvbSAnLi9TaWRlYmFySXRlbUNvbnRleHQubWpzJztcblxuY29uc3QgU2lkZWJhckl0ZW1Hcm91cCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZVNpZGViYXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5pdGVtR3JvdXAsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ1bFwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1zaWRlYmFyLWl0ZW0tZ3JvdXBcIiwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChTaWRlYmFySXRlbUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgaXNJbnNpZGVDb2xsYXBzZTogZmFsc2UgfSwgY2hpbGRyZW4gfSkgfSk7XG59O1xuU2lkZWJhckl0ZW1Hcm91cC5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhci5JdGVtR3JvdXBcIjtcblxuZXhwb3J0IHsgU2lkZWJhckl0ZW1Hcm91cCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckl0ZW1Hcm91cC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VTaWRlYmFyQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckNvbnRleHQubWpzJztcblxuY29uc3QgU2lkZWJhckl0ZW1zID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lIH0gPSB1c2VTaWRlYmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuaXRlbXMsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXNpZGViYXItaXRlbXNcIiwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblNpZGViYXJJdGVtcy5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhci5JdGVtc1wiO1xuXG5leHBvcnQgeyBTaWRlYmFySXRlbXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNpZGViYXJJdGVtcy5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBTaWRlYmFyTG9nbyA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGhyZWYsXG4gIGltZyxcbiAgaW1nQWx0ID0gXCJcIixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBpc0NvbGxhcHNlZCB9ID0gdXNlU2lkZWJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmxvZ28sIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIFwiYVwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGBmbG93Yml0ZS1zaWRlYmFyLWxvZ28tJHtpZH1gLFxuICAgICAgaHJlZixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiaW1nXCIsIHsgYWx0OiBpbWdBbHQsIHNyYzogaW1nLCBjbGFzc05hbWU6IHRoZW1lLmltZyB9KSxcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbGxhcHNlZFtpc0NvbGxhcHNlZCA/IFwib25cIiA6IFwib2ZmXCJdLCBpZDogYGZsb3diaXRlLXNpZGViYXItbG9nby0ke2lkfWAsIGNoaWxkcmVuIH0pXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblNpZGViYXJMb2dvLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkxvZ29cIjtcblxuZXhwb3J0IHsgU2lkZWJhckxvZ28gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNpZGViYXJMb2dvLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFNpZGViYXJDb2xsYXBzZSB9IGZyb20gJy4vU2lkZWJhckNvbGxhcHNlLm1qcyc7XG5pbXBvcnQgeyBTaWRlYmFyQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckNvbnRleHQubWpzJztcbmltcG9ydCB7IFNpZGViYXJDVEEgfSBmcm9tICcuL1NpZGViYXJDVEEubWpzJztcbmltcG9ydCB7IFNpZGViYXJJdGVtIH0gZnJvbSAnLi9TaWRlYmFySXRlbS5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckl0ZW1Hcm91cCB9IGZyb20gJy4vU2lkZWJhckl0ZW1Hcm91cC5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckl0ZW1zIH0gZnJvbSAnLi9TaWRlYmFySXRlbXMubWpzJztcbmltcG9ydCB7IFNpZGViYXJMb2dvIH0gZnJvbSAnLi9TaWRlYmFyTG9nby5tanMnO1xuXG5jb25zdCBTaWRlYmFyQ29tcG9uZW50ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGFzOiBDb21wb25lbnQgPSBcIm5hdlwiLFxuICBjb2xsYXBzZUJlaGF2aW9yID0gXCJjb2xsYXBzZVwiLFxuICBjb2xsYXBzZWQ6IGlzQ29sbGFwc2VkID0gZmFsc2UsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuc2lkZWJhciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChTaWRlYmFyQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgaXNDb2xsYXBzZWQgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgQ29tcG9uZW50LFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBcIlNpZGViYXJcIixcbiAgICAgIGhpZGRlbjogaXNDb2xsYXBzZWQgJiYgY29sbGFwc2VCZWhhdmlvciA9PT0gXCJoaWRlXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCB0aGVtZS5yb290LmNvbGxhcHNlZFtpc0NvbGxhcHNlZCA/IFwib25cIiA6IFwib2ZmXCJdLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucm9vdC5pbm5lciwgY2hpbGRyZW4gfSlcbiAgICB9XG4gICkgfSk7XG59O1xuU2lkZWJhckNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhclwiO1xuY29uc3QgU2lkZWJhciA9IE9iamVjdC5hc3NpZ24oU2lkZWJhckNvbXBvbmVudCwge1xuICBDb2xsYXBzZTogU2lkZWJhckNvbGxhcHNlLFxuICBDVEE6IFNpZGViYXJDVEEsXG4gIEl0ZW06IFNpZGViYXJJdGVtLFxuICBJdGVtczogU2lkZWJhckl0ZW1zLFxuICBJdGVtR3JvdXA6IFNpZGViYXJJdGVtR3JvdXAsXG4gIExvZ286IFNpZGViYXJMb2dvXG59KTtcblxuZXhwb3J0IHsgU2lkZWJhciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUYWJsZUJvZHlDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlVGFibGVCb2R5Q29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoVGFibGVCb2R5Q29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRhYmxlQm9keUNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBUYWJsZUJvZHlDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgVGFibGVCb2R5Q29udGV4dCwgdXNlVGFibGVCb2R5Q29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVCb2R5Q29udGV4dC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUYWJsZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VUYWJsZUNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRhYmxlQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRhYmxlQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFRhYmxlQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRhYmxlQ29udGV4dCwgdXNlVGFibGVDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJsZUNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IFRhYmxlQm9keUNvbnRleHQgfSBmcm9tICcuL1RhYmxlQm9keUNvbnRleHQubWpzJztcbmltcG9ydCB7IHVzZVRhYmxlQ29udGV4dCB9IGZyb20gJy4vVGFibGVDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlQm9keSA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZVRhYmxlQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5ib2R5LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGFibGVCb2R5Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInRib2R5XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIHJlZiwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pIH0pO1xuICB9XG4pO1xuVGFibGVCb2R5LmRpc3BsYXlOYW1lID0gXCJUYWJsZS5Cb2R5XCI7XG5cbmV4cG9ydCB7IFRhYmxlQm9keSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVCb2R5Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUYWJsZUJvZHlDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUJvZHlDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlQ2VsbCA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lOiBib2R5VGhlbWUgfSA9IHVzZVRhYmxlQm9keUNvbnRleHQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChib2R5VGhlbWUuY2VsbCwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwidGRcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgcmVmLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG4gIH1cbik7XG5UYWJsZUNlbGwuZGlzcGxheU5hbWUgPSBcIlRhYmxlLkNlbGxcIjtcblxuZXhwb3J0IHsgVGFibGVDZWxsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJsZUNlbGwubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGFibGVIZWFkQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZVRhYmxlSGVhZENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRhYmxlSGVhZENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VUYWJsZUhlYWRDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgVGFibGVIZWFkQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRhYmxlSGVhZENvbnRleHQsIHVzZVRhYmxlSGVhZENvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlSGVhZENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRhYmxlQ29udGV4dCB9IGZyb20gJy4vVGFibGVDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBUYWJsZUhlYWRDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUhlYWRDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZVRhYmxlQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5oZWFkLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGFibGVIZWFkQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInRoZWFkXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIHJlZiwgLi4ucHJvcHMsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwidHJcIiwgeyBjaGlsZHJlbiB9KSB9KSB9KTtcbiAgfVxuKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9IFwiVGFibGUuSGVhZFwiO1xuXG5leHBvcnQgeyBUYWJsZUhlYWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlSGVhZC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGFibGVIZWFkQ29udGV4dCB9IGZyb20gJy4vVGFibGVIZWFkQ29udGV4dC5tanMnO1xuXG5jb25zdCBUYWJsZUhlYWRDZWxsID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWU6IGhlYWRUaGVtZSB9ID0gdXNlVGFibGVIZWFkQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGhlYWRUaGVtZS5jZWxsLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ0aFwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCByZWYsIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbiAgfVxuKTtcblRhYmxlSGVhZENlbGwuZGlzcGxheU5hbWUgPSBcIlRhYmxlLkhlYWRDZWxsXCI7XG5cbmV4cG9ydCB7IFRhYmxlSGVhZENlbGwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlSGVhZENlbGwubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRhYmxlQ29udGV4dCB9IGZyb20gJy4vVGFibGVDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlUm93ID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaG92ZXJhYmxlLCBzdHJpcGVkIH0gPSB1c2VUYWJsZUNvbnRleHQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUucm93LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcInRyXCIsXG4gICAgICB7XG4gICAgICAgIHJlZixcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRhYmxlLXJvdy1lbGVtZW50XCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBzdHJpcGVkICYmIHRoZW1lLnN0cmlwZWQsIGhvdmVyYWJsZSAmJiB0aGVtZS5ob3ZlcmVkLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuVGFibGVSb3cuZGlzcGxheU5hbWUgPSBcIlRhYmxlLlJvd1wiO1xuXG5leHBvcnQgeyBUYWJsZVJvdyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVSb3cubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRhYmxlQm9keSB9IGZyb20gJy4vVGFibGVCb2R5Lm1qcyc7XG5pbXBvcnQgeyBUYWJsZUNlbGwgfSBmcm9tICcuL1RhYmxlQ2VsbC5tanMnO1xuaW1wb3J0IHsgVGFibGVDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUNvbnRleHQubWpzJztcbmltcG9ydCB7IFRhYmxlSGVhZCB9IGZyb20gJy4vVGFibGVIZWFkLm1qcyc7XG5pbXBvcnQgeyBUYWJsZUhlYWRDZWxsIH0gZnJvbSAnLi9UYWJsZUhlYWRDZWxsLm1qcyc7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gJy4vVGFibGVSb3cubWpzJztcblxuY29uc3QgVGFibGVDb21wb25lbnQgPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBzdHJpcGVkLCBob3ZlcmFibGUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnRhYmxlLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwidGFibGUtZWxlbWVudFwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC53cmFwcGVyKSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFRhYmxlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgc3RyaXBlZCwgaG92ZXJhYmxlIH0sIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3Quc2hhZG93LCBjbGFzc05hbWUpIH0pLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInRhYmxlXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIHJlZiwgY2hpbGRyZW4gfSlcbiAgICBdIH0pIH0pO1xuICB9XG4pO1xuVGFibGVDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIlRhYmxlXCI7XG5jb25zdCBUYWJsZSA9IE9iamVjdC5hc3NpZ24oVGFibGVDb21wb25lbnQsIHtcbiAgSGVhZDogVGFibGVIZWFkLFxuICBCb2R5OiBUYWJsZUJvZHksXG4gIFJvdzogVGFibGVSb3csXG4gIENlbGw6IFRhYmxlQ2VsbCxcbiAgSGVhZENlbGw6IFRhYmxlSGVhZENlbGxcbn0pO1xuXG5leHBvcnQgeyBUYWJsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuXG5jb25zdCBUYWJJdGVtID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSB9KSA9PiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lLCBjaGlsZHJlbiB9KTtcblRhYkl0ZW0uZGlzcGxheU5hbWUgPSBcIlRhYnMuSXRlbVwiO1xuXG5leHBvcnQgeyBUYWJJdGVtIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJJdGVtLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUlkLCB1c2VNZW1vLCBDaGlsZHJlbiwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VJbXBlcmF0aXZlSGFuZGxlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgVGFiSXRlbSB9IGZyb20gJy4vVGFiSXRlbS5tanMnO1xuXG5jb25zdCBUYWJzQ29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgb25BY3RpdmVUYWJDaGFuZ2UsIHZhcmlhbnQgPSBcImRlZmF1bHRcIiwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudGFicywgY3VzdG9tVGhlbWUpO1xuICAgIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0YWJzID0gdXNlTWVtbyhcbiAgICAgICgpID0+IENoaWxkcmVuLm1hcChcbiAgICAgICAgQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbiksXG4gICAgICAgICh7IHByb3BzOiBwcm9wczIgfSkgPT4gcHJvcHMyXG4gICAgICApLFxuICAgICAgW2NoaWxkcmVuXVxuICAgICk7XG4gICAgY29uc3QgdGFiUmVmcyA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgW2FjdGl2ZVRhYiwgc2V0QWN0aXZlVGFiXSA9IHVzZVN0YXRlKFxuICAgICAgTWF0aC5tYXgoXG4gICAgICAgIDAsXG4gICAgICAgIHRhYnMuZmluZEluZGV4KCh0YWIpID0+IHRhYi5hY3RpdmUpXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCBbZm9jdXNlZFRhYiwgc2V0Rm9jdXNlZFRhYl0gPSB1c2VTdGF0ZSgtMSk7XG4gICAgY29uc3Qgc2V0QWN0aXZlVGFiV2l0aENhbGxiYWNrID0gKGFjdGl2ZVRhYjIpID0+IHtcbiAgICAgIHNldEFjdGl2ZVRhYihhY3RpdmVUYWIyKTtcbiAgICAgIGlmIChvbkFjdGl2ZVRhYkNoYW5nZSkgb25BY3RpdmVUYWJDaGFuZ2UoYWN0aXZlVGFiMik7XG4gICAgfTtcbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICh7IHRhcmdldCB9KSA9PiB7XG4gICAgICBzZXRBY3RpdmVUYWJXaXRoQ2FsbGJhY2sodGFyZ2V0KTtcbiAgICAgIHNldEZvY3VzZWRUYWIodGFyZ2V0KTtcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUtleWJvYXJkID0gKHsgZXZlbnQsIHRhcmdldCB9KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93TGVmdFwiKSB7XG4gICAgICAgIHNldEZvY3VzZWRUYWIoTWF0aC5tYXgoMCwgZm9jdXNlZFRhYiAtIDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dSaWdodFwiKSB7XG4gICAgICAgIHNldEZvY3VzZWRUYWIoTWF0aC5taW4odGFicy5sZW5ndGggLSAxLCBmb2N1c2VkVGFiICsgMSkpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYldpdGhDYWxsYmFjayh0YXJnZXQpO1xuICAgICAgICBzZXRGb2N1c2VkVGFiKHRhcmdldCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCB0YWJJdGVtU3R5bGUgPSB0aGVtZS50YWJsaXN0LnRhYml0ZW0udmFyaWFudFt2YXJpYW50XTtcbiAgICBjb25zdCB0YWJJdGVtQ29udGFpbmVyU3R5bGUgPSB0aGVtZS50YWJpdGVtY29udGFpbmVyLnZhcmlhbnRbdmFyaWFudF07XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHRhYlJlZnMuY3VycmVudFtmb2N1c2VkVGFiXT8uZm9jdXMoKTtcbiAgICB9LCBbZm9jdXNlZFRhYl0pO1xuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgc2V0QWN0aXZlVGFiOiBzZXRBY3RpdmVUYWJXaXRoQ2FsbGJhY2tcbiAgICB9KSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IFwiVGFic1wiLFxuICAgICAgICAgIHJvbGU6IFwidGFibGlzdFwiLFxuICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS50YWJsaXN0LmJhc2UsIHRoZW1lLnRhYmxpc3QudmFyaWFudFt2YXJpYW50XSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbjogdGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGAke2lkfS10YWJwYW5lbC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBpbmRleCA9PT0gYWN0aXZlVGFiLFxuICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgdGhlbWUudGFibGlzdC50YWJpdGVtLmJhc2UsXG4gICAgICAgICAgICAgICAgdGFiSXRlbVN0eWxlLmJhc2UsXG4gICAgICAgICAgICAgICAgaW5kZXggPT09IGFjdGl2ZVRhYiAmJiB0YWJJdGVtU3R5bGUuYWN0aXZlLm9uLFxuICAgICAgICAgICAgICAgIGluZGV4ICE9PSBhY3RpdmVUYWIgJiYgIXRhYi5kaXNhYmxlZCAmJiB0YWJJdGVtU3R5bGUuYWN0aXZlLm9mZlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogdGFiLmRpc2FibGVkLFxuICAgICAgICAgICAgICBpZDogYCR7aWR9LXRhYi0ke2luZGV4fWAsXG4gICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGhhbmRsZUNsaWNrKHsgdGFyZ2V0OiBpbmRleCB9KSxcbiAgICAgICAgICAgICAgb25LZXlEb3duOiAoZXZlbnQpID0+IGhhbmRsZUtleWJvYXJkKHsgZXZlbnQsIHRhcmdldDogaW5kZXggfSksXG4gICAgICAgICAgICAgIHJlZjogKGVsZW1lbnQpID0+IHRhYlJlZnMuY3VycmVudFtpbmRleF0gPSBlbGVtZW50LFxuICAgICAgICAgICAgICByb2xlOiBcInRhYlwiLFxuICAgICAgICAgICAgICB0YWJJbmRleDogaW5kZXggPT09IGZvY3VzZWRUYWIgPyAwIDogLTEsXG4gICAgICAgICAgICAgIHN0eWxlOiB7IHpJbmRleDogaW5kZXggPT09IGZvY3VzZWRUYWIgPyAyIDogMSB9LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgIHRhYi5pY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3godGFiLmljb24sIHsgY2xhc3NOYW1lOiB0aGVtZS50YWJsaXN0LnRhYml0ZW0uaWNvbiB9KSxcbiAgICAgICAgICAgICAgICB0YWIudGl0bGVcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgKSlcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUudGFiaXRlbWNvbnRhaW5lci5iYXNlLCB0YWJJdGVtQ29udGFpbmVyU3R5bGUpLCBjaGlsZHJlbjogdGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBgJHtpZH0tdGFiLSR7aW5kZXh9YCxcbiAgICAgICAgICBjbGFzc05hbWU6IHRoZW1lLnRhYnBhbmVsLFxuICAgICAgICAgIGhpZGRlbjogaW5kZXggIT09IGFjdGl2ZVRhYixcbiAgICAgICAgICBpZDogYCR7aWR9LXRhYnBhbmVsLSR7aW5kZXh9YCxcbiAgICAgICAgICByb2xlOiBcInRhYnBhbmVsXCIsXG4gICAgICAgICAgdGFiSW5kZXg6IDAsXG4gICAgICAgICAgY2hpbGRyZW46IHRhYi5jaGlsZHJlblxuICAgICAgICB9LFxuICAgICAgICBpbmRleFxuICAgICAgKSkgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuVGFic0NvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiVGFic1wiO1xuY29uc3QgVGFicyA9IE9iamVjdC5hc3NpZ24oVGFic0NvbXBvbmVudCwge1xuICBJdGVtOiBUYWJJdGVtXG59KTtcblxuZXhwb3J0IHsgVGFicyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFicy5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEhlbHBlclRleHQgfSBmcm9tICcuLi9IZWxwZXJUZXh0L0hlbHBlclRleHQubWpzJztcblxuY29uc3QgVGV4dGFyZWEgPSBmb3J3YXJkUmVmKFxuICAoeyBjbGFzc05hbWUsIGNvbG9yID0gXCJncmF5XCIsIGhlbHBlclRleHQsIHNoYWRvdywgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudGV4dGFyZWEsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwidGV4dGFyZWFcIixcbiAgICAgICAge1xuICAgICAgICAgIHJlZixcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgdGhlbWUuY29sb3JzW2NvbG9yXSwgdGhlbWUud2l0aFNoYWRvd1tzaGFkb3cgPyBcIm9uXCIgOiBcIm9mZlwiXSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGVscGVyVGV4dCAmJiAvKiBAX19QVVJFX18gKi8ganN4KEhlbHBlclRleHQsIHsgY29sb3IsIGNoaWxkcmVuOiBoZWxwZXJUZXh0IH0pXG4gICAgXSB9KTtcbiAgfVxuKTtcblRleHRhcmVhLmRpc3BsYXlOYW1lID0gXCJUZXh0YXJlYVwiO1xuXG5leHBvcnQgeyBUZXh0YXJlYSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dGFyZWEubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGltZWxpbmVDb250ZW50Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZVRpbWVsaW5lQ29udGVudENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRpbWVsaW5lQ29udGVudENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VUaW1lbGluZUNvbnRlbnRDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgVGltZWxpbmVDb250ZW50Q29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRpbWVsaW5lQ29udGVudENvbnRleHQsIHVzZVRpbWVsaW5lQ29udGVudENvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lQ29udGVudENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZW50Q29udGV4dC5tanMnO1xuXG5jb25zdCBUaW1lbGluZUJvZHkgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiBjb250ZW50VGhlbWUgfSA9IHVzZVRpbWVsaW5lQ29udGVudENvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoY29udGVudFRoZW1lLmJvZHksIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgVGltZWxpbmVCb2R5IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZUJvZHkubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGltZWxpbmVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlVGltZWxpbmVDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChUaW1lbGluZUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VUaW1lbGluZUNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBUaW1lbGluZUNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBUaW1lbGluZUNvbnRleHQsIHVzZVRpbWVsaW5lQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZWxpbmVDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFRpbWVsaW5lSXRlbUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VUaW1lbGluZUl0ZW1Db250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChUaW1lbGluZUl0ZW1Db250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlVGltZWxpbmVJdGVtQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFRpbWVsaW5lSXRlbUNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBUaW1lbGluZUl0ZW1Db250ZXh0LCB1c2VUaW1lbGluZUl0ZW1Db250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZUl0ZW1Db250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lQ29udGVudENvbnRleHQgfSBmcm9tICcuL1RpbWVsaW5lQ29udGVudENvbnRleHQubWpzJztcbmltcG9ydCB7IHVzZVRpbWVsaW5lQ29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUl0ZW1Db250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUl0ZW1Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lQ29udGVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IGhvcml6b250YWwgfSA9IHVzZVRpbWVsaW5lQ29udGV4dCgpO1xuICBjb25zdCB7IHRoZW1lOiBpdGVtVGhlbWUgfSA9IHVzZVRpbWVsaW5lSXRlbUNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoaXRlbVRoZW1lLmNvbnRlbnQsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGltZWxpbmVDb250ZW50Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0aW1lbGluZS1jb250ZW50XCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBob3Jpem9udGFsID8gdGhlbWUucm9vdC5ob3Jpem9udGFsIDogdGhlbWUucm9vdC52ZXJ0aWNhbCwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICkgfSk7XG59O1xuXG5leHBvcnQgeyBUaW1lbGluZUNvbnRlbnQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lQ29udGVudC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUNvbnRleHQgfSBmcm9tICcuL1RpbWVsaW5lQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVJdGVtQ29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVJdGVtQ29udGV4dC5tanMnO1xuXG5jb25zdCBUaW1lbGluZUl0ZW0gPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGhvcml6b250YWwgfSA9IHVzZVRpbWVsaW5lQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuaXRlbSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChUaW1lbGluZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lIH0sIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwibGlcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwidGltZWxpbmUtaXRlbVwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKGhvcml6b250YWwgJiYgdGhlbWUucm9vdC5ob3Jpem9udGFsLCAhaG9yaXpvbnRhbCAmJiB0aGVtZS5yb290LnZlcnRpY2FsLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKSB9KTtcbn07XG5cbmV4cG9ydCB7IFRpbWVsaW5lSXRlbSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZWxpbmVJdGVtLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRpbWVsaW5lQ29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUl0ZW1Db250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUl0ZW1Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lUG9pbnQgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBpY29uOiBJY29uLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyBob3Jpem9udGFsIH0gPSB1c2VUaW1lbGluZUNvbnRleHQoKTtcbiAgY29uc3QgeyB0aGVtZTogaXRlbVRoZW1lIH0gPSB1c2VUaW1lbGluZUl0ZW1Db250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGl0ZW1UaGVtZS5wb2ludCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwidGltZWxpbmUtcG9pbnRcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShob3Jpem9udGFsICYmIHRoZW1lLmhvcml6b250YWwsICFob3Jpem9udGFsICYmIHRoZW1lLnZlcnRpY2FsLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgSWNvbiA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLm1hcmtlci5pY29uLndyYXBwZXIpLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLm1hcmtlci5pY29uLmJhc2UpIH0pIH0pIDogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShob3Jpem9udGFsICYmIHRoZW1lLm1hcmtlci5iYXNlLmhvcml6b250YWwsICFob3Jpem9udGFsICYmIHRoZW1lLm1hcmtlci5iYXNlLnZlcnRpY2FsKVxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgaG9yaXpvbnRhbCAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmxpbmUpIH0pXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgVGltZWxpbmVQb2ludCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZWxpbmVQb2ludC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUNvbnRlbnRDb250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUNvbnRlbnRDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lVGltZSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IGNvbnRlbnRUaGVtZSB9ID0gdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChjb250ZW50VGhlbWUudGltZSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcInRpbWVcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgVGltZWxpbmVUaW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZVRpbWUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZW50Q29udGV4dC5tanMnO1xuXG5jb25zdCBUaW1lbGluZVRpdGxlID0gKHtcbiAgYXM6IFRhZyA9IFwiaDNcIixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IGNvbnRlbnRUaGVtZSB9ID0gdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChjb250ZW50VGhlbWUudGl0bGUsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGFnLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuXG5leHBvcnQgeyBUaW1lbGluZVRpdGxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZVRpdGxlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lQm9keSB9IGZyb20gJy4vVGltZWxpbmVCb2R5Lm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZUNvbnRlbnQgfSBmcm9tICcuL1RpbWVsaW5lQ29udGVudC5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVDb250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUNvbnRleHQubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lSXRlbSB9IGZyb20gJy4vVGltZWxpbmVJdGVtLm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZVBvaW50IH0gZnJvbSAnLi9UaW1lbGluZVBvaW50Lm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZVRpbWUgfSBmcm9tICcuL1RpbWVsaW5lVGltZS5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVUaXRsZSB9IGZyb20gJy4vVGltZWxpbmVUaXRsZS5tanMnO1xuXG5jb25zdCBUaW1lbGluZUNvbXBvbmVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGhvcml6b250YWwsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnRpbWVsaW5lLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFRpbWVsaW5lQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgaG9yaXpvbnRhbCB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcIm9sXCIsXG4gICAge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRpbWVsaW5lLWNvbXBvbmVudFwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICBob3Jpem9udGFsICYmIHRoZW1lLnJvb3QuZGlyZWN0aW9uLmhvcml6b250YWwsXG4gICAgICAgICFob3Jpem9udGFsICYmIHRoZW1lLnJvb3QuZGlyZWN0aW9uLnZlcnRpY2FsLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApIH0pO1xufTtcblRpbWVsaW5lQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZVwiO1xuVGltZWxpbmVJdGVtLmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZS5JdGVtXCI7XG5UaW1lbGluZVBvaW50LmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZS5Qb2ludFwiO1xuVGltZWxpbmVDb250ZW50LmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZS5Db250ZW50XCI7XG5UaW1lbGluZVRpbWUuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLlRpbWVcIjtcblRpbWVsaW5lVGl0bGUuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLlRpdGxlXCI7XG5UaW1lbGluZUJvZHkuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLkJvZHlcIjtcbmNvbnN0IFRpbWVsaW5lID0gT2JqZWN0LmFzc2lnbihUaW1lbGluZUNvbXBvbmVudCwge1xuICBJdGVtOiBUaW1lbGluZUl0ZW0sXG4gIFBvaW50OiBUaW1lbGluZVBvaW50LFxuICBDb250ZW50OiBUaW1lbGluZUNvbnRlbnQsXG4gIFRpbWU6IFRpbWVsaW5lVGltZSxcbiAgVGl0bGU6IFRpbWVsaW5lVGl0bGUsXG4gIEJvZHk6IFRpbWVsaW5lQm9keVxufSk7XG5cbmV4cG9ydCB7IFRpbWVsaW5lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUb2FzdENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VUb2FzdENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRvYXN0Q29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRvYXN0Q29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFRvYXN0Q29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRvYXN0Q29udGV4dCwgdXNlVG9hc3RDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ub2FzdENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgSGlYIH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVG9hc3RDb250ZXh0IH0gZnJvbSAnLi9Ub2FzdENvbnRleHQubWpzJztcblxuY29uc3QgVG9hc3RUb2dnbGUgPSAoe1xuICBjbGFzc05hbWUsXG4gIG9uQ2xpY2ssXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB4SWNvbjogWEljb24gPSBIaVgsXG4gIG9uRGlzbWlzcyxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBkdXJhdGlvbiwgaXNDbG9zZWQsIGlzUmVtb3ZlZCwgc2V0SXNDbG9zZWQsIHNldElzUmVtb3ZlZCB9ID0gdXNlVG9hc3RDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS50b2dnbGUsIGN1c3RvbVRoZW1lKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZSkgPT4ge1xuICAgIGlmIChvbkNsaWNrKSBvbkNsaWNrKGUpO1xuICAgIGlmIChvbkRpc21pc3MpIHtcbiAgICAgIG9uRGlzbWlzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRJc0Nsb3NlZCghaXNDbG9zZWQpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0SXNSZW1vdmVkKCFpc1JlbW92ZWQpLCBkdXJhdGlvbik7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiYnV0dG9uXCIsXG4gICAge1xuICAgICAgXCJhcmlhLWxhYmVsXCI6IFwiQ2xvc2VcIixcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChYSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbiB9KVxuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCB7IFRvYXN0VG9nZ2xlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ub2FzdFRvZ2dsZS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRvYXN0Q29udGV4dCB9IGZyb20gJy4vVG9hc3RDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBUb2FzdFRvZ2dsZSB9IGZyb20gJy4vVG9hc3RUb2dnbGUubWpzJztcblxuY29uc3QgZHVyYXRpb25DbGFzc2VzID0ge1xuICA3NTogXCJkdXJhdGlvbi03NVwiLFxuICAxMDA6IFwiZHVyYXRpb24tMTAwXCIsXG4gIDE1MDogXCJkdXJhdGlvbi0xNTBcIixcbiAgMjAwOiBcImR1cmF0aW9uLTIwMFwiLFxuICAzMDA6IFwiZHVyYXRpb24tMzAwXCIsXG4gIDUwMDogXCJkdXJhdGlvbi01MDBcIixcbiAgNzAwOiBcImR1cmF0aW9uLTcwMFwiLFxuICAxZTM6IFwiZHVyYXRpb24tMTAwMFwiXG59O1xuY29uc3QgVG9hc3RDb21wb25lbnQgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBkdXJhdGlvbiA9IDMwMCwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgW2lzQ2xvc2VkLCBzZXRJc0Nsb3NlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc1JlbW92ZWQsIHNldElzUmVtb3ZlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudG9hc3QsIGN1c3RvbVRoZW1lKTtcbiAgaWYgKGlzUmVtb3ZlZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFRvYXN0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgZHVyYXRpb24sIGlzQ2xvc2VkLCBpc1JlbW92ZWQsIHNldElzQ2xvc2VkLCBzZXRJc1JlbW92ZWQgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtdG9hc3RcIixcbiAgICAgIHJvbGU6IFwiYWxlcnRcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGR1cmF0aW9uQ2xhc3Nlc1tkdXJhdGlvbl0sIGlzQ2xvc2VkICYmIHRoZW1lLnJvb3QuY2xvc2VkLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKSB9KTtcbn07XG5Ub2FzdENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiVG9hc3RcIjtcblRvYXN0VG9nZ2xlLmRpc3BsYXlOYW1lID0gXCJUb2FzdC5Ub2dnbGVcIjtcbmNvbnN0IFRvYXN0ID0gT2JqZWN0LmFzc2lnbihUb2FzdENvbXBvbmVudCwge1xuICBUb2dnbGU6IFRvYXN0VG9nZ2xlXG59KTtcblxuZXhwb3J0IHsgVG9hc3QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRvYXN0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIEZyYWdtZW50LCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgVG9nZ2xlU3dpdGNoID0gZm9yd2FyZFJlZihcbiAgKHtcbiAgICBjaGVja2VkLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb2xvciA9IFwiYmx1ZVwiLFxuICAgIHNpemluZyA9IFwibWRcIixcbiAgICBkaXNhYmxlZCxcbiAgICBsYWJlbCxcbiAgICBuYW1lLFxuICAgIG9uQ2hhbmdlLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnRvZ2dsZVN3aXRjaCwgY3VzdG9tVGhlbWUpO1xuICAgIGNvbnN0IHRvZ2dsZSA9ICgpID0+IG9uQ2hhbmdlKCFjaGVja2VkKTtcbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICAgIHRvZ2dsZSgpO1xuICAgIH07XG4gICAgY29uc3QgaGFuZGxlT25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQuY29kZSA9PSBcIkVudGVyXCIpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgbmFtZSAmJiBjaGVja2VkID8gLyogQF9fUFVSRV9fICovIGpzeChcImlucHV0XCIsIHsgcmVmLCBjaGVja2VkLCBoaWRkZW46IHRydWUsIG5hbWUsIHJlYWRPbmx5OiB0cnVlLCB0eXBlOiBcImNoZWNrYm94XCIsIGNsYXNzTmFtZTogXCJzci1vbmx5XCIgfSkgOiBudWxsLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiBjaGVja2VkLFxuICAgICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGAke2lkfS1mbG93Yml0ZS10b2dnbGVzd2l0Y2gtbGFiZWxgLFxuICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgIGlkOiBgJHtpZH0tZmxvd2JpdGUtdG9nZ2xlc3dpdGNoYCxcbiAgICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgICAgICBvbktleURvd246IGhhbmRsZU9uS2V5RG93bixcbiAgICAgICAgICByb2xlOiBcInN3aXRjaFwiLFxuICAgICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgdGhlbWUucm9vdC5hY3RpdmVbZGlzYWJsZWQgPyBcIm9mZlwiIDogXCJvblwiXSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS10b2dnbGVzd2l0Y2gtdG9nZ2xlXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgICAgICAgdGhlbWUudG9nZ2xlLmJhc2UsXG4gICAgICAgICAgICAgICAgICB0aGVtZS50b2dnbGUuY2hlY2tlZFtjaGVja2VkID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgICAgICBjaGVja2VkICYmIHRoZW1lLnRvZ2dsZS5jaGVja2VkLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgICAgICAgICAgIHRoZW1lLnRvZ2dsZS5zaXplc1tzaXppbmddXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbGFiZWw/Lmxlbmd0aCA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXRvZ2dsZXN3aXRjaC1sYWJlbFwiLFxuICAgICAgICAgICAgICAgIGlkOiBgJHtpZH0tZmxvd2JpdGUtdG9nZ2xlc3dpdGNoLWxhYmVsYCxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRoZW1lLnJvb3QubGFiZWwsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IGxhYmVsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkgOiBudWxsXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApXG4gICAgXSB9KTtcbiAgfVxuKTtcblRvZ2dsZVN3aXRjaC5kaXNwbGF5TmFtZSA9IFwiVG9nZ2xlU3dpdGNoXCI7XG5cbmV4cG9ydCB7IFRvZ2dsZVN3aXRjaCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VG9nZ2xlU3dpdGNoLm1qcy5tYXBcbiIsImltcG9ydCB7IFJpRGVsZXRlQmluMkxpbmUsIFJpU2F2ZUZpbGwgfSBmcm9tIFwiQHByZWFjdC1pY29ucy9yaVwiXG5pbXBvcnQgeyBCc1hDaXJjbGUsIEJzUGx1cywgQnNQZW5jaWwgfSBmcm9tIFwiQHByZWFjdC1pY29ucy9ic1wiXG5pbXBvcnQgeyBCdXR0b24gYXMgQmFzZUJ1dHRvbiB9IGZyb20gXCJmbG93Yml0ZS1yZWFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEJ1dHRvbiA9ICh7IHR5cGUgLCB2YXJpYW50ICwgb25DbGljayB9KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPEJhc2VCdXR0b24gY29sb3I9e3ZhcmlhbnR9IHBpbGwgb25DbGljaz17b25DbGlja30+XG4gICAgICAgICAgICB7IHR5cGUgPT0gMSAmJiA8QnNQbHVzLz4gfVxuICAgICAgICAgICAgeyB0eXBlID09IDIgJiYgPEJzUGVuY2lsLz4gfVxuICAgICAgICAgICAgeyB0eXBlID09IDMgJiYgPFJpU2F2ZUZpbGwvPiB9XG4gICAgICAgICAgICB7IHR5cGUgPT0gNCAmJiA8QnNYQ2lyY2xlLz4gfVxuICAgICAgICAgICAgeyB0eXBlID09IDUgJiYgPFJpRGVsZXRlQmluMkxpbmUvPiB9XG4gICAgICAgIDwvQmFzZUJ1dHRvbj5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uO1xuIiwiLyoqIERldGVybWluZXMgd2hldGhlciBhIGB0aGluZ2AgaXMgYW4gb2JqZWN0IGZvciB0aGUgcHVycG9zZXMgb2YgUkpTRi4gSW4gdGhpcyBjYXNlLCBgdGhpbmdgIGlzIGFuIG9iamVjdCBpZiBpdCBoYXNcbiAqIHRoZSB0eXBlIGBvYmplY3RgIGJ1dCBpcyBOT1QgbnVsbCwgYW4gYXJyYXkgb3IgYSBGaWxlLlxuICpcbiAqIEBwYXJhbSB0aGluZyAtIFRoZSB0aGluZyB0byBjaGVjayB0byBzZWUgd2hldGhlciBpdCBpcyBhbiBvYmplY3RcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBpdCBpcyBhIG5vbi1udWxsLCBub24tYXJyYXksIG5vbi1GaWxlIG9iamVjdFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc09iamVjdCh0aGluZykge1xuICAgIGlmICh0eXBlb2YgdGhpbmcgIT09ICdvYmplY3QnIHx8IHRoaW5nID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gbGFzdE1vZGlmaWVkIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBudW1iZXIgb24gYSBGaWxlIGluc3RhbmNlXG4gICAgLy8gYXMgcGVyIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNkZm4tbGFzdE1vZGlmaWVkXG4gICAgaWYgKHR5cGVvZiB0aGluZy5sYXN0TW9kaWZpZWQgPT09ICdudW1iZXInICYmIHR5cGVvZiBGaWxlICE9PSAndW5kZWZpbmVkJyAmJiB0aGluZyBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBnZXRNb250aCBpcyBndWFyYW50ZWVkIHRvIGJlIGEgbWV0aG9kIG9uIGEgRGF0ZSBpbnN0YW5jZVxuICAgIC8vIGFzIHBlciBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi9tdWx0aXBhZ2UvbnVtYmVycy1hbmQtZGF0ZXMuaHRtbCNzZWMtZGF0ZS5wcm90b3R5cGUuZ2V0bW9udGhcbiAgICBpZiAodHlwZW9mIHRoaW5nLmdldE1vbnRoID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBEYXRlICE9PSAndW5kZWZpbmVkJyAmJiB0aGluZyBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodGhpbmcpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNPYmplY3QuanMubWFwIiwiaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QnO1xuLyoqIENoZWNrcyB0aGUgc2NoZW1hIHRvIHNlZSBpZiBpdCBpcyBhbGxvd2luZyBhZGRpdGlvbmFsIGl0ZW1zLCBieSB2ZXJpZnlpbmcgdGhhdCBgc2NoZW1hLmFkZGl0aW9uYWxJdGVtc2AgaXMgYW5cbiAqIG9iamVjdC4gVGhlIHVzZXIgaXMgd2FybmVkIGluIHRoZSBjb25zb2xlIGlmIGBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zYCBoYXMgdGhlIHZhbHVlIGB0cnVlYC5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBvYmplY3QgdG8gY2hlY2tcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBhZGRpdGlvbmFsIGl0ZW1zIGlzIGFsbG93ZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhbGxvd0FkZGl0aW9uYWxJdGVtcyhzY2hlbWEpIHtcbiAgICBpZiAoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcyA9PT0gdHJ1ZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ2FkZGl0aW9uYWxJdGVtcz10cnVlIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICAgIHJldHVybiBpc09iamVjdChzY2hlbWEuYWRkaXRpb25hbEl0ZW1zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFsbG93QWRkaXRpb25hbEl0ZW1zLmpzLm1hcCIsIi8qKiBBdHRlbXB0cyB0byBjb252ZXJ0IHRoZSBzdHJpbmcgaW50byBhIG51bWJlci4gSWYgYW4gZW1wdHkgc3RyaW5nIGlzIHByb3ZpZGVkLCB0aGVuIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLiBJZiBhXG4gKiBgbnVsbGAgaXMgcHJvdmlkZWQsIGl0IGlzIHJldHVybmVkLiBJZiB0aGUgc3RyaW5nIGVuZHMgaW4gYSBgLmAgdGhlbiB0aGUgc3RyaW5nIGlzIHJldHVybmVkIGJlY2F1c2UgdGhlIHVzZXIgbWF5IGJlXG4gKiBpbiB0aGUgbWlkZGxlIG9mIHR5cGluZyBhIGZsb2F0IG51bWJlci4gSWYgYSBudW1iZXIgZW5kcyBpbiBhIHBhdHRlcm4gbGlrZSBgLjBgLCBgLjIwYCwgYC4wMzBgLCBzdHJpbmcgaXMgcmV0dXJuZWRcbiAqIGJlY2F1c2UgdGhlIHVzZXIgbWF5IGJlIHR5cGluZyBudW1iZXIgdGhhdCB3aWxsIGVuZCBpbiBhIG5vbi16ZXJvIGRpZ2l0LiBPdGhlcndpc2UsIHRoZSBzdHJpbmcgaXMgd3JhcHBlZCBieVxuICogYE51bWJlcigpYCBhbmQgaWYgdGhhdCByZXN1bHQgaXMgbm90IGBOYU5gLCB0aGF0IG51bWJlciB3aWxsIGJlIHJldHVybmVkLCBvdGhlcndpc2UgdGhlIHN0cmluZyBgdmFsdWVgIHdpbGwgYmUuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHN0cmluZyBvciBudWxsIHZhbHVlIHRvIGNvbnZlcnQgdG8gYSBudW1iZXJcbiAqIEByZXR1cm5zIC0gVGhlIGB2YWx1ZWAgY29udmVydGVkIHRvIGEgbnVtYmVyIHdoZW4gYXBwcm9wcmlhdGUsIG90aGVyd2lzZSB0aGUgYHZhbHVlYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhc051bWJlcih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoL1xcLiQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIC8vICczLicgY2FuJ3QgcmVhbGx5IGJlIGNvbnNpZGVyZWQgYSBudW1iZXIgZXZlbiBpZiBpdCBwYXJzZXMgaW4ganMuIFRoZVxuICAgICAgICAvLyB1c2VyIGlzIG1vc3QgbGlrZWx5IGVudGVyaW5nIGEgZmxvYXQuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKC9cXC4wJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgLy8gd2UgbmVlZCB0byByZXR1cm4gdGhpcyBhcyBhIHN0cmluZyBoZXJlLCB0byBhbGxvdyBmb3IgaW5wdXQgbGlrZSAzLjA3XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKC9cXC5cXGQqMCQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIC8vIEl0J3MgYSBudW1iZXIsIHRoYXQncyBjb29sIC0gYnV0IHdlIG5lZWQgaXQgYXMgYSBzdHJpbmcgc28gaXQgZG9lc24ndCBzY3Jld1xuICAgICAgICAvLyB3aXRoIHRoZSB1c2VyIHdoZW4gZW50ZXJpbmcgZG9sbGFyIGFtb3VudHMgb3Igb3RoZXIgdmFsdWVzIChzdWNoIGFzIHRob3NlIHdpdGhcbiAgICAgICAgLy8gc3BlY2lmaWMgcHJlY2lzaW9uIG9yIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMpXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgbiA9IE51bWJlcih2YWx1ZSk7XG4gICAgY29uc3QgdmFsaWQgPSB0eXBlb2YgbiA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTihuKTtcbiAgICByZXR1cm4gdmFsaWQgPyBuIDogdmFsdWU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hc051bWJlci5qcy5tYXAiLCIvKiogQmVsb3cgYXJlIHRoZSBsaXN0IG9mIGFsbCB0aGUga2V5cyBpbnRvIHZhcmlvdXMgZWxlbWVudHMgb2YgYSBSSlNGU2NoZW1hIG9yIFVpU2NoZW1hIHRoYXQgYXJlIHVzZWQgYnkgdGhlIHZhcmlvdXNcbiAqIHV0aWxpdHkgZnVuY3Rpb25zLiBJbiBhZGRpdGlvbiB0byB0aG9zZSBrZXlzLCB0aGVyZSBhcmUgdGhlIHNwZWNpYWwgYEFERElUSU9OQUxfUFJPUEVSVFlfRkxBR2AgYW5kXG4gKiBgUkpTRl9BRERJVElPTkFMX1BST1BFUlRJRVNfRkxBR2AgZmxhZ3MgdGhhdCBpcyBhZGRlZCB0byBhIHNjaGVtYSB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgYnkgdGhlIGByZXRyaWV2ZVNjaGVtYSgpYFxuICogdXRpbGl0eS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRyA9ICdfX2FkZGl0aW9uYWxfcHJvcGVydHknO1xuZXhwb3J0IGNvbnN0IEFERElUSU9OQUxfUFJPUEVSVElFU19LRVkgPSAnYWRkaXRpb25hbFByb3BlcnRpZXMnO1xuZXhwb3J0IGNvbnN0IEFMTF9PRl9LRVkgPSAnYWxsT2YnO1xuZXhwb3J0IGNvbnN0IEFOWV9PRl9LRVkgPSAnYW55T2YnO1xuZXhwb3J0IGNvbnN0IENPTlNUX0tFWSA9ICdjb25zdCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9LRVkgPSAnZGVmYXVsdCc7XG5leHBvcnQgY29uc3QgREVGSU5JVElPTlNfS0VZID0gJ2RlZmluaXRpb25zJztcbmV4cG9ydCBjb25zdCBERVBFTkRFTkNJRVNfS0VZID0gJ2RlcGVuZGVuY2llcyc7XG5leHBvcnQgY29uc3QgRU5VTV9LRVkgPSAnZW51bSc7XG5leHBvcnQgY29uc3QgRVJST1JTX0tFWSA9ICdfX2Vycm9ycyc7XG5leHBvcnQgY29uc3QgSURfS0VZID0gJyRpZCc7XG5leHBvcnQgY29uc3QgSUZfS0VZID0gJ2lmJztcbmV4cG9ydCBjb25zdCBJVEVNU19LRVkgPSAnaXRlbXMnO1xuZXhwb3J0IGNvbnN0IEpVTktfT1BUSU9OX0lEID0gJ18kanVua19vcHRpb25fc2NoZW1hX2lkJF8nO1xuZXhwb3J0IGNvbnN0IE5BTUVfS0VZID0gJyRuYW1lJztcbmV4cG9ydCBjb25zdCBPTkVfT0ZfS0VZID0gJ29uZU9mJztcbmV4cG9ydCBjb25zdCBQUk9QRVJUSUVTX0tFWSA9ICdwcm9wZXJ0aWVzJztcbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9LRVkgPSAncmVxdWlyZWQnO1xuZXhwb3J0IGNvbnN0IFNVQk1JVF9CVE5fT1BUSU9OU19LRVkgPSAnc3VibWl0QnV0dG9uT3B0aW9ucyc7XG5leHBvcnQgY29uc3QgUkVGX0tFWSA9ICckcmVmJztcbi8qKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZSB3aXRoIGNvcnJlY3RseSBzcGVsbGVkIGNvbnN0YW50IGBSSlNGX0FERElUSU9OQUxfUFJPUEVSVElFU19GTEFHYFxuICovXG5leHBvcnQgY29uc3QgUkpTRl9BRERJVE9OQUxfUFJPUEVSVElFU19GTEFHID0gJ19fcmpzZl9hZGRpdGlvbmFsUHJvcGVydGllcyc7XG5leHBvcnQgY29uc3QgUkpTRl9BRERJVElPTkFMX1BST1BFUlRJRVNfRkxBRyA9ICdfX3Jqc2ZfYWRkaXRpb25hbFByb3BlcnRpZXMnO1xuZXhwb3J0IGNvbnN0IFJPT1RfU0NIRU1BX1BSRUZJWCA9ICdfX3Jqc2Zfcm9vdFNjaGVtYSc7XG5leHBvcnQgY29uc3QgVUlfRklFTERfS0VZID0gJ3VpOmZpZWxkJztcbmV4cG9ydCBjb25zdCBVSV9XSURHRVRfS0VZID0gJ3VpOndpZGdldCc7XG5leHBvcnQgY29uc3QgVUlfT1BUSU9OU19LRVkgPSAndWk6b3B0aW9ucyc7XG5leHBvcnQgY29uc3QgVUlfR0xPQkFMX09QVElPTlNfS0VZID0gJ3VpOmdsb2JhbE9wdGlvbnMnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCIsImltcG9ydCB7IFVJX09QVElPTlNfS0VZLCBVSV9XSURHRVRfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QnO1xuLyoqIEdldCBhbGwgcGFzc2VkIG9wdGlvbnMgZnJvbSB1aTpvcHRpb25zLCBhbmQgdWk6PG9wdGlvbk5hbWU+LCByZXR1cm5pbmcgdGhlbSBpbiBhbiBvYmplY3Qgd2l0aCB0aGUgYHVpOmBcbiAqIHN0cmlwcGVkIG9mZi4gQW55IGBnbG9iYWxPcHRpb25zYCB3aWxsIGFsd2F5cyBiZSByZXR1cm5lZCwgdW5sZXNzIHRoZXkgYXJlIG92ZXJyaWRkZW4gYnkgb3B0aW9ucyBpbiB0aGUgYHVpU2NoZW1hYC5cbiAqXG4gKiBAcGFyYW0gW3VpU2NoZW1hPXt9XSAtIFRoZSBVSSBTY2hlbWEgZnJvbSB3aGljaCB0byBnZXQgYW55IGB1aTp4eHhgIG9wdGlvbnNcbiAqIEBwYXJhbSBbZ2xvYmFsT3B0aW9ucz17fV0gLSBUaGUgb3B0aW9uYWwgR2xvYmFsIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGdldCBhbnkgZmFsbGJhY2sgYHh4eGAgb3B0aW9uc1xuICogQHJldHVybnMgLSBBbiBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIGB1aTp4eHhgIG9wdGlvbnMgd2l0aCB0aGUgYHVpOmAgc3RyaXBwZWQgb2ZmIGFsb25nIHdpdGggYWxsIGBnbG9iYWxPcHRpb25zYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVaU9wdGlvbnModWlTY2hlbWEgPSB7fSwgZ2xvYmFsT3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHVpU2NoZW1hKVxuICAgICAgICAuZmlsdGVyKChrZXkpID0+IGtleS5pbmRleE9mKCd1aTonKSA9PT0gMClcbiAgICAgICAgLnJlZHVjZSgob3B0aW9ucywga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdWlTY2hlbWFba2V5XTtcbiAgICAgICAgaWYgKGtleSA9PT0gVUlfV0lER0VUX0tFWSAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NldHRpbmcgb3B0aW9ucyB2aWEgdWk6d2lkZ2V0IG9iamVjdCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLCB1c2UgdWk6b3B0aW9ucyBpbnN0ZWFkJyk7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSBVSV9PUFRJT05TX0tFWSAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLm9wdGlvbnMsIC4uLnZhbHVlIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub3B0aW9ucywgW2tleS5zdWJzdHJpbmcoMyldOiB2YWx1ZSB9O1xuICAgIH0sIHsgLi4uZ2xvYmFsT3B0aW9ucyB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldFVpT3B0aW9ucy5qcy5tYXAiLCJpbXBvcnQgZ2V0VWlPcHRpb25zIGZyb20gJy4vZ2V0VWlPcHRpb25zJztcbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZmllbGQgZGVzY3JpYmVkIGJ5IGBzY2hlbWFgLCBoYXZpbmcgdGhlIGB1aVNjaGVtYWAgYW5kIGBmb3JtRGF0YWAgc3VwcG9ydHMgZXhwYW5kaW5nLiBUaGUgVUkgZm9yXG4gKiB0aGUgZmllbGQgY2FuIGV4cGFuZCBpZiBpdCBoYXMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCBpcyBub3QgZm9yY2VkIGFzIG5vbi1leHBhbmRhYmxlIGJ5IHRoZSBgdWlTY2hlbWFgIGFuZCB0aGVcbiAqIGBmb3JtRGF0YWAgb2JqZWN0IGRvZXNuJ3QgYWxyZWFkeSBoYXZlIGBzY2hlbWEubWF4UHJvcGVydGllc2AgZWxlbWVudHMuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHRoZSBmaWVsZCB0aGF0IGlzIGJlaW5nIGNoZWNrZWRcbiAqIEBwYXJhbSBbdWlTY2hlbWE9e31dIC0gVGhlIHVpU2NoZW1hIGZvciB0aGUgZmllbGRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGZvcm1EYXRhIGZvciB0aGUgZmllbGRcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgc2NoZW1hIGVsZW1lbnQgaGFzIGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCBpcyBleHBhbmRhYmxlLCBhbmQgbm90IGF0IHRoZSBtYXhQcm9wZXJ0aWVzIGxpbWl0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhbkV4cGFuZChzY2hlbWEsIHVpU2NoZW1hID0ge30sIGZvcm1EYXRhKSB7XG4gICAgaWYgKCFzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB7IGV4cGFuZGFibGUgPSB0cnVlIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgIGlmIChleHBhbmRhYmxlID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZXhwYW5kYWJsZTtcbiAgICB9XG4gICAgLy8gaWYgdWk6b3B0aW9ucy5leHBhbmRhYmxlIHdhcyBub3QgZXhwbGljaXRseSBzZXQgdG8gZmFsc2UsIHdlIGNhbiBhZGRcbiAgICAvLyBhbm90aGVyIHByb3BlcnR5IGlmIHdlIGhhdmUgbm90IGV4Y2VlZGVkIG1heFByb3BlcnRpZXMgeWV0XG4gICAgaWYgKHNjaGVtYS5tYXhQcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQgJiYgZm9ybURhdGEpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGZvcm1EYXRhKS5sZW5ndGggPCBzY2hlbWEubWF4UHJvcGVydGllcztcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYW5FeHBhbmQuanMubWFwIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxubW9kdWxlLmV4cG9ydHMgPSBmcmVlR2xvYmFsO1xuIiwidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb290O1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dldFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJpbmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcbiIsIi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJBcmc7XG4iLCJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UHJvdG90eXBlO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5PYmplY3Q7XG4iLCJpbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICdsb2Rhc2gvaXNQbGFpbk9iamVjdCc7XG5pbXBvcnQgeyBFUlJPUlNfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqIEdpdmVuIGEgYGZvcm1EYXRhYCBvYmplY3QsIHJlY3Vyc2l2ZWx5IGNyZWF0ZXMgYSBgRm9ybVZhbGlkYXRpb25gIGVycm9yIGhhbmRsaW5nIHN0cnVjdHVyZSBhcm91bmQgaXRcbiAqXG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIGFyb3VuZCB3aGljaCB0aGUgZXJyb3IgaGFuZGxlciBpcyBjcmVhdGVkXG4gKiBAcmV0dXJucyAtIEEgYEZvcm1WYWxpZGF0aW9uYCBvYmplY3QgYmFzZWQgb24gdGhlIGBmb3JtRGF0YWAgc3RydWN0dXJlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUVycm9ySGFuZGxlcihmb3JtRGF0YSkge1xuICAgIGNvbnN0IGhhbmRsZXIgPSB7XG4gICAgICAgIC8vIFdlIHN0b3JlIHRoZSBsaXN0IG9mIGVycm9ycyBmb3IgdGhpcyBub2RlIGluIGEgcHJvcGVydHkgbmFtZWQgX19lcnJvcnNcbiAgICAgICAgLy8gdG8gYXZvaWQgbmFtZSBjb2xsaXNpb24gd2l0aCBhIHBvc3NpYmxlIHN1YiBzY2hlbWEgZmllbGQgbmFtZWRcbiAgICAgICAgLy8gJ2Vycm9ycycgKHNlZSBgdXRpbHMudG9FcnJvclNjaGVtYWApLlxuICAgICAgICBbRVJST1JTX0tFWV06IFtdLFxuICAgICAgICBhZGRFcnJvcihtZXNzYWdlKSB7XG4gICAgICAgICAgICB0aGlzW0VSUk9SU19LRVldLnB1c2gobWVzc2FnZSk7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmb3JtRGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1EYXRhLnJlZHVjZSgoYWNjLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtrZXldOiBjcmVhdGVFcnJvckhhbmRsZXIodmFsdWUpIH07XG4gICAgICAgIH0sIGhhbmRsZXIpO1xuICAgIH1cbiAgICBpZiAoaXNQbGFpbk9iamVjdChmb3JtRGF0YSkpIHtcbiAgICAgICAgY29uc3QgZm9ybU9iamVjdCA9IGZvcm1EYXRhO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybU9iamVjdCkucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBba2V5XTogY3JlYXRlRXJyb3JIYW5kbGVyKGZvcm1PYmplY3Rba2V5XSkgfTtcbiAgICAgICAgfSwgaGFuZGxlcik7XG4gICAgfVxuICAgIHJldHVybiBoYW5kbGVyO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlRXJyb3JIYW5kbGVyLmpzLm1hcCIsIi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc29jSW5kZXhPZjtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZURlbGV0ZTtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZVNldDtcbiIsInZhciBsaXN0Q2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUNsZWFyJyksXG4gICAgbGlzdENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlRGVsZXRlJyksXG4gICAgbGlzdENhY2hlR2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlR2V0JyksXG4gICAgbGlzdENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlSGFzJyksXG4gICAgbGlzdENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYExpc3RDYWNoZWAuXG5MaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG5MaXN0Q2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IGxpc3RDYWNoZURlbGV0ZTtcbkxpc3RDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbGlzdENhY2hlR2V0O1xuTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG5MaXN0Q2FjaGUucHJvdG90eXBlLnNldCA9IGxpc3RDYWNoZVNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0Q2FjaGU7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqL1xuZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGU7XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0RlbGV0ZTtcbiIsIi8qKlxuICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0dldDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0hhcyhrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tIYXM7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRnVuY3Rpb247XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb3JlSnNEYXRhO1xuIiwidmFyIGNvcmVKc0RhdGEgPSByZXF1aXJlKCcuL19jb3JlSnNEYXRhJyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG52YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbigpIHtcbiAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xufSgpKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXNrZWQ7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9Tb3VyY2U7XG4iLCJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTWFza2VkID0gcmVxdWlyZSgnLi9faXNNYXNrZWQnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmF0aXZlO1xuIiwiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VmFsdWU7XG4iLCJ2YXIgYmFzZUlzTmF0aXZlID0gcmVxdWlyZSgnLi9fYmFzZUlzTmF0aXZlJyksXG4gICAgZ2V0VmFsdWUgPSByZXF1aXJlKCcuL19nZXRWYWx1ZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5hdGl2ZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXA7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlQ3JlYXRlO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgSGFzaFxuICovXG5mdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hEZWxldGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoR2V0O1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEhhcztcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaFNldDtcbiIsInZhciBoYXNoQ2xlYXIgPSByZXF1aXJlKCcuL19oYXNoQ2xlYXInKSxcbiAgICBoYXNoRGVsZXRlID0gcmVxdWlyZSgnLi9faGFzaERlbGV0ZScpLFxuICAgIGhhc2hHZXQgPSByZXF1aXJlKCcuL19oYXNoR2V0JyksXG4gICAgaGFzaEhhcyA9IHJlcXVpcmUoJy4vX2hhc2hIYXMnKSxcbiAgICBoYXNoU2V0ID0gcmVxdWlyZSgnLi9faGFzaFNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoO1xuIiwidmFyIEhhc2ggPSByZXF1aXJlKCcuL19IYXNoJyksXG4gICAgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuc2l6ZSA9IDA7XG4gIHRoaXMuX19kYXRhX18gPSB7XG4gICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAnc3RyaW5nJzogbmV3IEhhc2hcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUNsZWFyO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgOiAodmFsdWUgPT09IG51bGwpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5YWJsZTtcbiIsInZhciBpc0tleWFibGUgPSByZXF1aXJlKCcuL19pc0tleWFibGUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hcERhdGE7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVEZWxldGU7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlR2V0KGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlR2V0O1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVIYXM7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBtYXAgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlU2V0O1xuIiwidmFyIG1hcENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19tYXBDYWNoZUNsZWFyJyksXG4gICAgbWFwQ2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19tYXBDYWNoZURlbGV0ZScpLFxuICAgIG1hcENhY2hlR2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVHZXQnKSxcbiAgICBtYXBDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX21hcENhY2hlSGFzJyksXG4gICAgbWFwQ2FjaGVTZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbk1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbk1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbk1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbk1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXBDYWNoZTtcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgc3RhY2sgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSkge1xuICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgaWYgKCFNYXAgfHwgKHBhaXJzLmxlbmd0aCA8IExBUkdFX0FSUkFZX1NJWkUgLSAxKSkge1xuICAgICAgcGFpcnMucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICB9XG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrU2V0O1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksXG4gICAgc3RhY2tEZWxldGUgPSByZXF1aXJlKCcuL19zdGFja0RlbGV0ZScpLFxuICAgIHN0YWNrR2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tHZXQnKSxcbiAgICBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksXG4gICAgc3RhY2tTZXQgPSByZXF1aXJlKCcuL19zdGFja1NldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RhY2s7XG4iLCIvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogQWRkcyBgdmFsdWVgIHRvIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgYWRkXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBhbGlhcyBwdXNoXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjYWNoZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSkge1xuICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUFkZDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVIYXModmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUhhcztcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyksXG4gICAgc2V0Q2FjaGVBZGQgPSByZXF1aXJlKCcuL19zZXRDYWNoZUFkZCcpLFxuICAgIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcblxuLyoqXG4gKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cblNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5U29tZShhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVNvbWU7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSwga2V5KSB7XG4gIHJldHVybiBjYWNoZS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYWNoZUhhcztcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlTb21lID0gcmVxdWlyZSgnLi9fYXJyYXlTb21lJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIENoZWNrIHRoYXQgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gIHZhciBhcnJTdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAoYXJyU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIGFyclN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBhcnJheTtcbiAgfVxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICBzdGFjay5zZXQoYXJyYXksIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICB3aGlsZSAoKytpbmRleCA8IGFyckxlbmd0aCkge1xuICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoY29tcGFyZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmIChzZWVuKSB7XG4gICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgIGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxBcnJheXM7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgVWludDhBcnJheSA9IHJvb3QuVWludDhBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBVaW50OEFycmF5O1xuIiwiLyoqXG4gKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICovXG5mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBUb0FycmF5O1xuIiwiLyoqXG4gKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheSBvZiBpdHMgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBzZXRUb0FycmF5KHNldCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRUb0FycmF5O1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5JyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIG1hcFRvQXJyYXkgPSByZXF1aXJlKCcuL19tYXBUb0FycmF5JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgIC8vIENvZXJjZSBib29sZWFucyB0byBgMWAgb3IgYDBgIGFuZCBkYXRlcyB0byBtaWxsaXNlY29uZHMuXG4gICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgdmFyIGNvbnZlcnQgPSBtYXBUb0FycmF5O1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgY29udmVydCB8fCAoY29udmVydCA9IHNldFRvQXJyYXkpO1xuXG4gICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcblxuICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICB2YXIgcmVzdWx0ID0gZXF1YWxBcnJheXMoY29udmVydChvYmplY3QpLCBjb252ZXJ0KG90aGVyKSwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEJ5VGFnO1xuIiwiLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UHVzaDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldEFsbEtleXM7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlGaWx0ZXI7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gKiAvLyA9PiBbW10sIFtdXVxuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgcmV0dXJuIFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJBcnJheTtcbiIsInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHM7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUaW1lcztcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJndW1lbnRzO1xuIiwidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJGYWxzZTtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpLFxuICAgIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0J1ZmZlcjtcbiIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4O1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTGVuZ3RoO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1R5cGVkQXJyYXk7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIiwidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG52YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICBpZiAodHlwZXMpIHtcbiAgICAgIHJldHVybiB0eXBlcztcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbm9kZVV0aWw7XG4iLCJ2YXIgYmFzZUlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Jhc2VJc1R5cGVkQXJyYXknKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzVHlwZWRBcnJheSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzVHlwZWRBcnJheTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVHlwZWRBcnJheTtcbiIsInZhciBiYXNlVGltZXMgPSByZXF1aXJlKCcuL19iYXNlVGltZXMnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1Byb3RvdHlwZTtcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5cztcbiIsInZhciBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5cyA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXMnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2U7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGdldEFsbEtleXMob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFsbEtleXM7XG4iLCJ2YXIgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsXG4gICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc1BhcnRpYWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgaWYgKCEoaXNQYXJ0aWFsID8ga2V5IGluIG90aGVyIDogaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwga2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAob2JqU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHRydWU7XG4gIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBvYmplY3QpO1xuXG4gIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSwga2V5LCBvYmplY3QsIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmICghKGNvbXBhcmVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICB9XG4gIGlmIChyZXN1bHQgJiYgIXNraXBDdG9yKSB7XG4gICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgIC8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICEodHlwZW9mIG9iakN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvYmpDdG9yIGluc3RhbmNlb2Ygb2JqQ3RvciAmJlxuICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxPYmplY3RzO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBEYXRhVmlldyA9IGdldE5hdGl2ZShyb290LCAnRGF0YVZpZXcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYXRhVmlldztcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgUHJvbWlzZSA9IGdldE5hdGl2ZShyb290LCAnUHJvbWlzZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFByb21pc2U7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFNldCA9IGdldE5hdGl2ZShyb290LCAnU2V0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBXZWFrTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdXZWFrTWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gV2Vha01hcDtcbiIsInZhciBEYXRhVmlldyA9IHJlcXVpcmUoJy4vX0RhdGFWaWV3JyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgUHJvbWlzZSA9IHJlcXVpcmUoJy4vX1Byb21pc2UnKSxcbiAgICBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBXZWFrTWFwID0gcmVxdWlyZSgnLi9fV2Vha01hcCcpLFxuICAgIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xudmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4vLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG5pZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRhZztcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIGVxdWFsQnlUYWcgPSByZXF1aXJlKCcuL19lcXVhbEJ5VGFnJyksXG4gICAgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9fZXF1YWxPYmplY3RzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICB9XG4gIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgfVxuICBpZiAoIWlzU2FtZVRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDtcbiIsInZhciBiYXNlSXNFcXVhbERlZXAgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbERlZXAnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgfVxuICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbDtcbiIsInZhciBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0VxdWFsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHVwIHRvXG4gKiBzaXggYXJndW1lbnRzOiAob2JqVmFsdWUsIG90aFZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2tdKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAqICAgcmV0dXJuIC9eaCg/Oml8ZWxsbykkLy50ZXN0KHZhbHVlKTtcbiAqIH1cbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSkge1xuICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAqICAgICByZXR1cm4gdHJ1ZTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBhcnJheSA9IFsnaGVsbG8nLCAnZ29vZGJ5ZSddO1xuICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gKlxuICogXy5pc0VxdWFsV2l0aChhcnJheSwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc0VxdWFsV2l0aCh2YWx1ZSwgb3RoZXIsIGN1c3RvbWl6ZXIpIHtcbiAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICB2YXIgcmVzdWx0ID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIodmFsdWUsIG90aGVyKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCB1bmRlZmluZWQsIGN1c3RvbWl6ZXIpIDogISFyZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFcXVhbFdpdGg7XG4iLCJpbXBvcnQgaXNFcXVhbFdpdGggZnJvbSAnbG9kYXNoL2lzRXF1YWxXaXRoJztcbi8qKiBJbXBsZW1lbnRzIGEgZGVlcCBlcXVhbHMgdXNpbmcgdGhlIGBsb2Rhc2guaXNFcXVhbFdpdGhgIGZ1bmN0aW9uLCB0aGF0IHByb3ZpZGVzIGEgY3VzdG9taXplZCBjb21wYXJhdG9yIHRoYXRcbiAqIGFzc3VtZXMgYWxsIGZ1bmN0aW9ucyBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAcGFyYW0gYSAtIFRoZSBmaXJzdCBlbGVtZW50IHRvIGNvbXBhcmVcbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCBlbGVtZW50IHRvIGNvbXBhcmVcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgYGFgIGFuZCBgYmAgYXJlIGRlZXBseSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZXBFcXVhbHMoYSwgYikge1xuICAgIHJldHVybiBpc0VxdWFsV2l0aChhLCBiLCAob2JqLCBvdGhlcikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb3RoZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIEFzc3VtZSBhbGwgZnVuY3Rpb25zIGFyZSBlcXVpdmFsZW50XG4gICAgICAgICAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Jqc2YtdGVhbS9yZWFjdC1qc29uc2NoZW1hLWZvcm0vaXNzdWVzLzI1NVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gZmFsbGJhY2sgdG8gZGVmYXVsdCBpc0VxdWFscyBiZWhhdmlvclxuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVlcEVxdWFscy5qcy5tYXAiLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTeW1ib2w7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVJc0RlZXBQcm9wID0gL1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxcbiAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXkodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSkgfHwgIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKSB8fFxuICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXk7XG4iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiIsInZhciBtZW1vaXplID0gcmVxdWlyZSgnLi9tZW1vaXplJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBtYXhpbXVtIG1lbW9pemUgY2FjaGUgc2l6ZS4gKi9cbnZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tZW1vaXplYCB3aGljaCBjbGVhcnMgdGhlIG1lbW9pemVkIGZ1bmN0aW9uJ3NcbiAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IG1lbW9pemUoZnVuYywgZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKGNhY2hlLnNpemUgPT09IE1BWF9NRU1PSVpFX1NJWkUpIHtcbiAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH0pO1xuXG4gIHZhciBjYWNoZSA9IHJlc3VsdC5jYWNoZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplQ2FwcGVkO1xuIiwidmFyIG1lbW9pemVDYXBwZWQgPSByZXF1aXJlKCcuL19tZW1vaXplQ2FwcGVkJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZVByb3BOYW1lID0gL1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nO1xuXG4vKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICovXG52YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICByZXN1bHQucHVzaCgnJyk7XG4gIH1cbiAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdUb1BhdGg7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TWFwO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRvU3RyaW5nO1xuIiwidmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VUb1N0cmluZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9TdHJpbmc7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICBzdHJpbmdUb1BhdGggPSByZXF1aXJlKCcuL19zdHJpbmdUb1BhdGgnKSxcbiAgICB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGEgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0UGF0aDtcbiIsInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9LZXk7XG4iLCJ2YXIgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IDAsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICB9XG4gIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0O1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICogLy8gPT4gJ2RlZmF1bHQnXG4gKi9cbmZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXQ7XG4iLCJ2YXIgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGVtcHR5IG9iamVjdCwgY29sbGVjdGlvbiwgbWFwLCBvciBzZXQuXG4gKlxuICogT2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgbm8gb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkXG4gKiBwcm9wZXJ0aWVzLlxuICpcbiAqIEFycmF5LWxpa2UgdmFsdWVzIHN1Y2ggYXMgYGFyZ3VtZW50c2Agb2JqZWN0cywgYXJyYXlzLCBidWZmZXJzLCBzdHJpbmdzLCBvclxuICogalF1ZXJ5LWxpa2UgY29sbGVjdGlvbnMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYGxlbmd0aGAgb2YgYDBgLlxuICogU2ltaWxhcmx5LCBtYXBzIGFuZCBzZXRzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBzaXplYCBvZiBgMGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZW1wdHksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0VtcHR5KG51bGwpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSh0cnVlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoMSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNFbXB0eSh7ICdhJzogMSB9KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAoaXNBcnJheSh2YWx1ZSkgfHwgdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICBpc0J1ZmZlcih2YWx1ZSkgfHwgaXNUeXBlZEFycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkpKSB7XG4gICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gIH1cbiAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSk7XG4gIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICByZXR1cm4gIXZhbHVlLnNpemU7XG4gIH1cbiAgaWYgKGlzUHJvdG90eXBlKHZhbHVlKSkge1xuICAgIHJldHVybiAhYmFzZUtleXModmFsdWUpLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VtcHR5O1xuIiwidmFyIGhhc0V4Y2FwZSA9IC9+L1xudmFyIGVzY2FwZU1hdGNoZXIgPSAvflswMV0vZ1xuZnVuY3Rpb24gZXNjYXBlUmVwbGFjZXIgKG0pIHtcbiAgc3dpdGNoIChtKSB7XG4gICAgY2FzZSAnfjEnOiByZXR1cm4gJy8nXG4gICAgY2FzZSAnfjAnOiByZXR1cm4gJ34nXG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRpbGRlIGVzY2FwZTogJyArIG0pXG59XG5cbmZ1bmN0aW9uIHVudGlsZGUgKHN0cikge1xuICBpZiAoIWhhc0V4Y2FwZS50ZXN0KHN0cikpIHJldHVybiBzdHJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGVzY2FwZU1hdGNoZXIsIGVzY2FwZVJlcGxhY2VyKVxufVxuXG5mdW5jdGlvbiBzZXR0ZXIgKG9iaiwgcG9pbnRlciwgdmFsdWUpIHtcbiAgdmFyIHBhcnRcbiAgdmFyIGhhc05leHRQYXJ0XG5cbiAgZm9yICh2YXIgcCA9IDEsIGxlbiA9IHBvaW50ZXIubGVuZ3RoOyBwIDwgbGVuOykge1xuICAgIGlmIChwb2ludGVyW3BdID09PSAnY29uc3RydWN0b3InIHx8IHBvaW50ZXJbcF0gPT09ICdwcm90b3R5cGUnIHx8IHBvaW50ZXJbcF0gPT09ICdfX3Byb3RvX18nKSByZXR1cm4gb2JqXG5cbiAgICBwYXJ0ID0gdW50aWxkZShwb2ludGVyW3ArK10pXG4gICAgaGFzTmV4dFBhcnQgPSBsZW4gPiBwXG5cbiAgICBpZiAodHlwZW9mIG9ialtwYXJ0XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIHN1cHBvcnQgc2V0dGluZyBvZiAvLVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSAmJiBwYXJ0ID09PSAnLScpIHtcbiAgICAgICAgcGFydCA9IG9iai5sZW5ndGhcbiAgICAgIH1cblxuICAgICAgLy8gc3VwcG9ydCBuZXN0ZWQgb2JqZWN0cy9hcnJheSB3aGVuIHNldHRpbmcgdmFsdWVzXG4gICAgICBpZiAoaGFzTmV4dFBhcnQpIHtcbiAgICAgICAgaWYgKChwb2ludGVyW3BdICE9PSAnJyAmJiBwb2ludGVyW3BdIDwgSW5maW5pdHkpIHx8IHBvaW50ZXJbcF0gPT09ICctJykgb2JqW3BhcnRdID0gW11cbiAgICAgICAgZWxzZSBvYmpbcGFydF0gPSB7fVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghaGFzTmV4dFBhcnQpIGJyZWFrXG4gICAgb2JqID0gb2JqW3BhcnRdXG4gIH1cblxuICB2YXIgb2xkVmFsdWUgPSBvYmpbcGFydF1cbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIGRlbGV0ZSBvYmpbcGFydF1cbiAgZWxzZSBvYmpbcGFydF0gPSB2YWx1ZVxuICByZXR1cm4gb2xkVmFsdWVcbn1cblxuZnVuY3Rpb24gY29tcGlsZVBvaW50ZXIgKHBvaW50ZXIpIHtcbiAgaWYgKHR5cGVvZiBwb2ludGVyID09PSAnc3RyaW5nJykge1xuICAgIHBvaW50ZXIgPSBwb2ludGVyLnNwbGl0KCcvJylcbiAgICBpZiAocG9pbnRlclswXSA9PT0gJycpIHJldHVybiBwb2ludGVyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04gcG9pbnRlci4nKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocG9pbnRlcikpIHtcbiAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcG9pbnRlcikge1xuICAgICAgaWYgKHR5cGVvZiBwYXJ0ICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgcGFydCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04gcG9pbnRlci4gTXVzdCBiZSBvZiB0eXBlIHN0cmluZyBvciBudW1iZXIuJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBvaW50ZXJcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OIHBvaW50ZXIuJylcbn1cblxuZnVuY3Rpb24gZ2V0IChvYmosIHBvaW50ZXIpIHtcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW5wdXQgb2JqZWN0LicpXG4gIHBvaW50ZXIgPSBjb21waWxlUG9pbnRlcihwb2ludGVyKVxuICB2YXIgbGVuID0gcG9pbnRlci5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMSkgcmV0dXJuIG9ialxuXG4gIGZvciAodmFyIHAgPSAxOyBwIDwgbGVuOykge1xuICAgIG9iaiA9IG9ialt1bnRpbGRlKHBvaW50ZXJbcCsrXSldXG4gICAgaWYgKGxlbiA9PT0gcCkgcmV0dXJuIG9ialxuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXQgKG9iaiwgcG9pbnRlciwgdmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW5wdXQgb2JqZWN0LicpXG4gIHBvaW50ZXIgPSBjb21waWxlUG9pbnRlcihwb2ludGVyKVxuICBpZiAocG9pbnRlci5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OIHBvaW50ZXIgZm9yIHNldC4nKVxuICByZXR1cm4gc2V0dGVyKG9iaiwgcG9pbnRlciwgdmFsdWUpXG59XG5cbmZ1bmN0aW9uIGNvbXBpbGUgKHBvaW50ZXIpIHtcbiAgdmFyIGNvbXBpbGVkID0gY29tcGlsZVBvaW50ZXIocG9pbnRlcilcbiAgcmV0dXJuIHtcbiAgICBnZXQ6IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICAgIHJldHVybiBnZXQob2JqZWN0LCBjb21waWxlZClcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKG9iamVjdCwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBzZXQob2JqZWN0LCBjb21waWxlZCwgdmFsdWUpXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydHMuZ2V0ID0gZ2V0XG5leHBvcnRzLnNldCA9IHNldFxuZXhwb3J0cy5jb21waWxlID0gY29tcGlsZVxuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZm9yRWFjaGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RWFjaChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RWFjaDtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxudmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIHZhciBmdW5jID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2RlZmluZVByb3BlcnR5Jyk7XG4gICAgZnVuYyh7fSwgJycsIHt9KTtcbiAgICByZXR1cm4gZnVuYztcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmaW5lUHJvcGVydHk7XG4iLCJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19kZWZpbmVQcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gKiB2YWx1ZSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25WYWx1ZTtcbiIsInZhciBiYXNlQXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19iYXNlQXNzaWduVmFsdWUnKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBc3NpZ25zIGB2YWx1ZWAgdG8gYGtleWAgb2YgYG9iamVjdGAgaWYgdGhlIGV4aXN0aW5nIHZhbHVlIGlzIG5vdCBlcXVpdmFsZW50XG4gKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ25WYWx1ZTtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyk7XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlPYmplY3Q7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5c0luO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5c0luO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25JbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbkluKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25JbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQnVmZmVyO1xuIiwiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weUFycmF5O1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9scyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzO1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICovXG52YXIgZ2V0U3ltYm9sc0luID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB3aGlsZSAob2JqZWN0KSB7XG4gICAgYXJyYXlQdXNoKHJlc3VsdCwgZ2V0U3ltYm9scyhvYmplY3QpKTtcbiAgICBvYmplY3QgPSBnZXRQcm90b3R5cGUob2JqZWN0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzSW47XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzSW4nKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzSW47XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5c0luO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVBcnJheTtcbiIsInZhciBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gIG5ldyBVaW50OEFycmF5KHJlc3VsdCkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVBcnJheUJ1ZmZlcjtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgZGF0YVZpZXdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YVZpZXcgVGhlIGRhdGEgdmlldyB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgZGF0YSB2aWV3LlxuICovXG5mdW5jdGlvbiBjbG9uZURhdGFWaWV3KGRhdGFWaWV3LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIoZGF0YVZpZXcuYnVmZmVyKSA6IGRhdGFWaWV3LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyBkYXRhVmlldy5jb25zdHJ1Y3RvcihidWZmZXIsIGRhdGFWaWV3LmJ5dGVPZmZzZXQsIGRhdGFWaWV3LmJ5dGVMZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGF0YVZpZXc7XG4iLCIvKiogVXNlZCB0byBtYXRjaCBgUmVnRXhwYCBmbGFncyBmcm9tIHRoZWlyIGNvZXJjZWQgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUZsYWdzID0gL1xcdyokLztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCByZWdleHAuXG4gKi9cbmZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICB2YXIgcmVzdWx0ID0gbmV3IHJlZ2V4cC5jb25zdHJ1Y3RvcihyZWdleHAuc291cmNlLCByZUZsYWdzLmV4ZWMocmVnZXhwKSk7XG4gIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lUmVnRXhwO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVTeW1ib2w7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICByZXR1cm4gbmV3IHR5cGVkQXJyYXkuY29uc3RydWN0b3IoYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkubGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVR5cGVkQXJyYXk7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKSxcbiAgICBjbG9uZURhdGFWaWV3ID0gcmVxdWlyZSgnLi9fY2xvbmVEYXRhVmlldycpLFxuICAgIGNsb25lUmVnRXhwID0gcmVxdWlyZSgnLi9fY2xvbmVSZWdFeHAnKSxcbiAgICBjbG9uZVN5bWJvbCA9IHJlcXVpcmUoJy4vX2Nsb25lU3ltYm9sJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICByZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6XG4gICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgICByZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUJ5VGFnO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG52YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gb2JqZWN0KCkge31cbiAgcmV0dXJuIGZ1bmN0aW9uKHByb3RvKSB7XG4gICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgfVxuICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICBvYmplY3QucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDcmVhdGU7XG4iLCJ2YXIgYmFzZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX2Jhc2VDcmVhdGUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lT2JqZWN0KG9iamVjdCkge1xuICByZXR1cm4gKHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNQcm90b3R5cGUob2JqZWN0KSlcbiAgICA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpXG4gICAgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVPYmplY3Q7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWFwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNNYXAodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBtYXBUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWFwO1xuIiwidmFyIGJhc2VJc01hcCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hcCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNNYXAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc01hcDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNNYXAobmV3IE1hcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc01hcChuZXcgV2Vha01hcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNNYXAgPSBub2RlSXNNYXAgPyBiYXNlVW5hcnkobm9kZUlzTWFwKSA6IGJhc2VJc01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc01hcDtcbiIsInZhciBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNTZXRgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1NldCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHNldFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNTZXQ7XG4iLCJ2YXIgYmFzZUlzU2V0ID0gcmVxdWlyZSgnLi9fYmFzZUlzU2V0JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1NldChuZXcgU2V0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU2V0O1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBhcnJheUVhY2ggPSByZXF1aXJlKCcuL19hcnJheUVhY2gnKSxcbiAgICBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZUFzc2lnbiA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ24nKSxcbiAgICBiYXNlQXNzaWduSW4gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduSW4nKSxcbiAgICBjbG9uZUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQnVmZmVyJyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgY29weVN5bWJvbHMgPSByZXF1aXJlKCcuL19jb3B5U3ltYm9scycpLFxuICAgIGNvcHlTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19jb3B5U3ltYm9sc0luJyksXG4gICAgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKSxcbiAgICBnZXRBbGxLZXlzSW4gPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzSW4nKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpbml0Q2xvbmVBcnJheSA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZUFycmF5JyksXG4gICAgaW5pdENsb25lQnlUYWcgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVCeVRhZycpLFxuICAgIGluaXRDbG9uZU9iamVjdCA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZU9iamVjdCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc01hcCA9IHJlcXVpcmUoJy4vaXNNYXAnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1NldCA9IHJlcXVpcmUoJy4vaXNTZXQnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBzdXBwb3J0ZWQgYnkgYF8uY2xvbmVgLiAqL1xudmFyIGNsb25lYWJsZVRhZ3MgPSB7fTtcbmNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG5jbG9uZWFibGVUYWdzW2FycmF5QnVmZmVyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0YVZpZXdUYWddID1cbmNsb25lYWJsZVRhZ3NbYm9vbFRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGVUYWddID1cbmNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbmNsb25lYWJsZVRhZ3NbaW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW2ludDE2VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbbWFwVGFnXSA9XG5jbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tyZWdleHBUYWddID0gY2xvbmVhYmxlVGFnc1tzZXRUYWddID1cbmNsb25lYWJsZVRhZ3Nbc3RyaW5nVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQxNlRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuY2xvbmVhYmxlVGFnc1tlcnJvclRhZ10gPSBjbG9uZWFibGVUYWdzW2Z1bmNUYWddID1cbmNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbG9uZWAgYW5kIGBfLmNsb25lRGVlcGAgd2hpY2ggdHJhY2tzXG4gKiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gKiAgMSAtIERlZXAgY2xvbmVcbiAqICAyIC0gRmxhdHRlbiBpbmhlcml0ZWQgcHJvcGVydGllc1xuICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGFuZCB0aGVpciBjbG9uZSBjb3VudGVycGFydHMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgb2JqZWN0LCBzdGFjaykge1xuICB2YXIgcmVzdWx0LFxuICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgIGlzRmxhdCA9IGJpdG1hc2sgJiBDTE9ORV9GTEFUX0ZMQUcsXG4gICAgICBpc0Z1bGwgPSBiaXRtYXNrICYgQ0xPTkVfU1lNQk9MU19GTEFHO1xuXG4gIGlmIChjdXN0b21pemVyKSB7XG4gICAgcmVzdWx0ID0gb2JqZWN0ID8gY3VzdG9taXplcih2YWx1ZSwga2V5LCBvYmplY3QsIHN0YWNrKSA6IGN1c3RvbWl6ZXIodmFsdWUpO1xuICB9XG4gIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gIGlmIChpc0Fycikge1xuICAgIHJlc3VsdCA9IGluaXRDbG9uZUFycmF5KHZhbHVlKTtcbiAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgcmV0dXJuIGNvcHlBcnJheSh2YWx1ZSwgcmVzdWx0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgIGlzRnVuYyA9IHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWc7XG5cbiAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY2xvbmVCdWZmZXIodmFsdWUsIGlzRGVlcCk7XG4gICAgfVxuICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgIHJlc3VsdCA9IChpc0ZsYXQgfHwgaXNGdW5jKSA/IHt9IDogaW5pdENsb25lT2JqZWN0KHZhbHVlKTtcbiAgICAgIGlmICghaXNEZWVwKSB7XG4gICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICA/IGNvcHlTeW1ib2xzSW4odmFsdWUsIGJhc2VBc3NpZ25JbihyZXN1bHQsIHZhbHVlKSlcbiAgICAgICAgICA6IGNvcHlTeW1ib2xzKHZhbHVlLCBiYXNlQXNzaWduKHJlc3VsdCwgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjbG9uZWFibGVUYWdzW3RhZ10pIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBpbml0Q2xvbmVCeVRhZyh2YWx1ZSwgdGFnLCBpc0RlZXApO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcyBhbmQgcmV0dXJuIGl0cyBjb3JyZXNwb25kaW5nIGNsb25lLlxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldCh2YWx1ZSk7XG4gIGlmIChzdGFja2VkKSB7XG4gICAgcmV0dXJuIHN0YWNrZWQ7XG4gIH1cbiAgc3RhY2suc2V0KHZhbHVlLCByZXN1bHQpO1xuXG4gIGlmIChpc1NldCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlKSB7XG4gICAgICByZXN1bHQuYWRkKGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3ViVmFsdWUsIHZhbHVlLCBzdGFjaykpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzTWFwKHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0LnNldChrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBrZXlzRnVuYyA9IGlzRnVsbFxuICAgID8gKGlzRmxhdCA/IGdldEFsbEtleXNJbiA6IGdldEFsbEtleXMpXG4gICAgOiAoaXNGbGF0ID8ga2V5c0luIDoga2V5cyk7XG5cbiAgdmFyIHByb3BzID0gaXNBcnIgPyB1bmRlZmluZWQgOiBrZXlzRnVuYyh2YWx1ZSk7XG4gIGFycmF5RWFjaChwcm9wcyB8fCB2YWx1ZSwgZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgIGlmIChwcm9wcykge1xuICAgICAga2V5ID0gc3ViVmFsdWU7XG4gICAgICBzdWJWYWx1ZSA9IHZhbHVlW2tleV07XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGNsb25lIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgYXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNsb25lO1xuIiwiLyoqXG4gKiBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5sYXN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIGxhc3QoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGFzdDtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2xpY2VgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNsaWNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAtc3RhcnQgPiBsZW5ndGggPyAwIDogKGxlbmd0aCArIHN0YXJ0KTtcbiAgfVxuICBlbmQgPSBlbmQgPiBsZW5ndGggPyBsZW5ndGggOiBlbmQ7XG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlbmd0aDtcbiAgfVxuICBsZW5ndGggPSBzdGFydCA+IGVuZCA/IDAgOiAoKGVuZCAtIHN0YXJ0KSA+Pj4gMCk7XG4gIHN0YXJ0ID4+Pj0gMDtcblxuICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gYXJyYXlbaW5kZXggKyBzdGFydF07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2xpY2U7XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlU2xpY2UgPSByZXF1aXJlKCcuL19iYXNlU2xpY2UnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBwYXJlbnQgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgcGFyZW50IHZhbHVlIG9mLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHBhcmVudCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gcGFyZW50KG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gcGF0aC5sZW5ndGggPCAyID8gb2JqZWN0IDogYmFzZUdldChvYmplY3QsIGJhc2VTbGljZShwYXRoLCAwLCAtMSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgbGFzdCA9IHJlcXVpcmUoJy4vbGFzdCcpLFxuICAgIHBhcmVudCA9IHJlcXVpcmUoJy4vX3BhcmVudCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bnNldGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcHJvcGVydHkgcGF0aCB0byB1bnNldC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICBvYmplY3QgPSBwYXJlbnQob2JqZWN0LCBwYXRoKTtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsIHx8IGRlbGV0ZSBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VVbnNldDtcbiIsInZhciBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0Jyk7XG5cbi8qKlxuICogVXNlZCBieSBgXy5vbWl0YCB0byBjdXN0b21pemUgaXRzIGBfLmNsb25lRGVlcGAgdXNlIHRvIG9ubHkgY2xvbmUgcGxhaW5cbiAqIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW5jbG9uZWQgdmFsdWUgb3IgYHVuZGVmaW5lZGAgdG8gZGVmZXIgY2xvbmluZyB0byBgXy5jbG9uZURlZXBgLlxuICovXG5mdW5jdGlvbiBjdXN0b21PbWl0Q2xvbmUodmFsdWUpIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QodmFsdWUpID8gdW5kZWZpbmVkIDogdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3VzdG9tT21pdENsb25lO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ByZWFkYWJsZVN5bWJvbCA9IFN5bWJvbCA/IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmbGF0dGVuYWJsZSBgYXJndW1lbnRzYCBvYmplY3Qgb3IgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGbGF0dGVuYWJsZTtcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0ZsYXR0ZW5hYmxlID0gcmVxdWlyZSgnLi9faXNGbGF0dGVuYWJsZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZsYXR0ZW5gIHdpdGggc3VwcG9ydCBmb3IgcmVzdHJpY3RpbmcgZmxhdHRlbmluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcGFyYW0ge251bWJlcn0gZGVwdGggVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICogQHBhcmFtIHtib29sZWFufSBbcHJlZGljYXRlPWlzRmxhdHRlbmFibGVdIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgdG8gdmFsdWVzIHRoYXQgcGFzcyBgcHJlZGljYXRlYCBjaGVja3MuXG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0PVtdXSBUaGUgaW5pdGlhbCByZXN1bHQgdmFsdWUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGbGF0dGVuKGFycmF5LCBkZXB0aCwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHByZWRpY2F0ZSB8fCAocHJlZGljYXRlID0gaXNGbGF0dGVuYWJsZSk7XG4gIHJlc3VsdCB8fCAocmVzdWx0ID0gW10pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChkZXB0aCA+IDAgJiYgcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgaWYgKGRlcHRoID4gMSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBmbGF0dGVuIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBiYXNlRmxhdHRlbih2YWx1ZSwgZGVwdGggLSAxLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWlzU3RyaWN0KSB7XG4gICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmxhdHRlbjtcbiIsInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyk7XG5cbi8qKlxuICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICovXG5mdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCAxKSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW47XG4iLCIvKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHk7XG4iLCJ2YXIgYXBwbHkgPSByZXF1aXJlKCcuL19hcHBseScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggdHJhbnNmb3JtcyB0aGUgcmVzdCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgcmVzdCBhcnJheSB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlclJlc3QoZnVuYywgc3RhcnQsIHRyYW5zZm9ybSkge1xuICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICBhcnJheSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICB9XG4gICAgaW5kZXggPSAtMTtcbiAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgfVxuICAgIG90aGVyQXJnc1tzdGFydF0gPSB0cmFuc2Zvcm0oYXJyYXkpO1xuICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJSZXN0O1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb25zdGFudCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uY29uc3RhbnQoeyAnYSc6IDEgfSkpO1xuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICogLy8gPT4gW3sgJ2EnOiAxIH0sIHsgJ2EnOiAxIH1dXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29uc3RhbnQ7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICpcbiAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlkZW50aXR5O1xuIiwidmFyIGNvbnN0YW50ID0gcmVxdWlyZSgnLi9jb25zdGFudCcpLFxuICAgIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldFRvU3RyaW5nO1xuIiwiLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xudmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICBIT1RfU1BBTiA9IDE2O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTm93ID0gRGF0ZS5ub3c7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgdmFyIGNvdW50ID0gMCxcbiAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3J0T3V0O1xuIiwidmFyIGJhc2VTZXRUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VTZXRUb1N0cmluZycpLFxuICAgIHNob3J0T3V0ID0gcmVxdWlyZSgnLi9fc2hvcnRPdXQnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIHNldFRvU3RyaW5nID0gc2hvcnRPdXQoYmFzZVNldFRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBzZXRUb1N0cmluZztcbiIsInZhciBmbGF0dGVuID0gcmVxdWlyZSgnLi9mbGF0dGVuJyksXG4gICAgb3ZlclJlc3QgPSByZXF1aXJlKCcuL19vdmVyUmVzdCcpLFxuICAgIHNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fc2V0VG9TdHJpbmcnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCBmbGF0dGVucyB0aGUgcmVzdCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBmbGF0UmVzdChmdW5jKSB7XG4gIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCB1bmRlZmluZWQsIGZsYXR0ZW4pLCBmdW5jICsgJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXRSZXN0O1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKSxcbiAgICBiYXNlVW5zZXQgPSByZXF1aXJlKCcuL19iYXNlVW5zZXQnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBjdXN0b21PbWl0Q2xvbmUgPSByZXF1aXJlKCcuL19jdXN0b21PbWl0Q2xvbmUnKSxcbiAgICBmbGF0UmVzdCA9IHJlcXVpcmUoJy4vX2ZsYXRSZXN0JyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGVcbiAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgcGF0aHMgb2YgYG9iamVjdGAgdGhhdCBhcmUgbm90IG9taXR0ZWQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGNvbnNpZGVyYWJseSBzbG93ZXIgdGhhbiBgXy5waWNrYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gb21pdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICpcbiAqIF8ub21pdChvYmplY3QsIFsnYScsICdjJ10pO1xuICogLy8gPT4geyAnYic6ICcyJyB9XG4gKi9cbnZhciBvbWl0ID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgdmFyIGlzRGVlcCA9IGZhbHNlO1xuICBwYXRocyA9IGFycmF5TWFwKHBhdGhzLCBmdW5jdGlvbihwYXRoKSB7XG4gICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgaXNEZWVwIHx8IChpc0RlZXAgPSBwYXRoLmxlbmd0aCA+IDEpO1xuICAgIHJldHVybiBwYXRoO1xuICB9KTtcbiAgY29weU9iamVjdChvYmplY3QsIGdldEFsbEtleXNJbihvYmplY3QpLCByZXN1bHQpO1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmVzdWx0ID0gYmFzZUNsb25lKHJlc3VsdCwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfRkxBVF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21PbWl0Q2xvbmUpO1xuICB9XG4gIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGJhc2VVbnNldChyZXN1bHQsIHBhdGhzW2xlbmd0aF0pO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBvbWl0O1xuIiwiaW1wb3J0IGpzb25wb2ludGVyIGZyb20gJ2pzb25wb2ludGVyJztcbmltcG9ydCBvbWl0IGZyb20gJ2xvZGFzaC9vbWl0JztcbmltcG9ydCB7IFJFRl9LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogU3BsaXRzIG91dCB0aGUgdmFsdWUgYXQgdGhlIGBrZXlgIGluIGBvYmplY3RgIGZyb20gdGhlIGBvYmplY3RgLCByZXR1cm5pbmcgYW4gYXJyYXkgdGhhdCBjb250YWlucyBpbiB0aGUgZmlyc3RcbiAqIGxvY2F0aW9uLCB0aGUgYG9iamVjdGAgbWludXMgdGhlIGBrZXk6IHZhbHVlYCBhbmQgaW4gdGhlIHNlY29uZCBsb2NhdGlvbiB0aGUgYHZhbHVlYC5cbiAqXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBmcm9tIHRoZSBvYmplY3QgdG8gZXh0cmFjdFxuICogQHBhcmFtIG9iamVjdCAtIFRoZSBvYmplY3QgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBlbGVtZW50XG4gKiBAcmV0dXJucyAtIEFuIGFycmF5IHdpdGggdGhlIGZpcnN0IHZhbHVlIGJlaW5nIHRoZSBvYmplY3QgbWludXMgdGhlIGBrZXlgIGVsZW1lbnQgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBiZWluZyB0aGVcbiAqICAgICAgdmFsdWUgZnJvbSBgb2JqZWN0W2tleV1gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEtleUVsZW1lbnRGcm9tT2JqZWN0KGtleSwgb2JqZWN0KSB7XG4gICAgY29uc3QgdmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICBjb25zdCByZW1haW5pbmcgPSBvbWl0KG9iamVjdCwgW2tleV0pO1xuICAgIHJldHVybiBbcmVtYWluaW5nLCB2YWx1ZV07XG59XG4vKiogR2l2ZW4gdGhlIG5hbWUgb2YgYSBgJHJlZmAgZnJvbSB3aXRoaW4gYSBzY2hlbWEsIHVzaW5nIHRoZSBgcm9vdFNjaGVtYWAsIHJlY3Vyc2l2ZWx5IGxvb2sgdXAgYW5kIHJldHVybiB0aGVcbiAqIHN1Yi1zY2hlbWEgdXNpbmcgdGhlIHBhdGggcHJvdmlkZWQgYnkgdGhhdCByZWZlcmVuY2UuIElmIGAjYCBpcyBub3QgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgcmVmZXJlbmNlLCB0aGUgcGF0aFxuICogZG9lcyBub3QgZXhpc3QgaW4gdGhlIHNjaGVtYSwgb3IgdGhlIHJlZmVyZW5jZSByZXNvbHZlcyBjaXJjdWxhcmx5IGJhY2sgdG8gaXRzZWxmLCB0aGVuIHRocm93IGFuIEVycm9yLlxuICogT3RoZXJ3aXNlIHJldHVybiB0aGUgc3ViLXNjaGVtYS4gQWxzbyBkZWFscyB3aXRoIG5lc3RlZCBgJHJlZmBzIGluIHRoZSBzdWItc2NoZW1hLlxuICpcbiAqIEBwYXJhbSAkcmVmIC0gVGhlIHJlZiBzdHJpbmcgZm9yIHdoaWNoIHRoZSBzY2hlbWEgZGVmaW5pdGlvbiBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWE9e31dIC0gVGhlIHJvb3Qgc2NoZW1hIGluIHdoaWNoIHRvIHNlYXJjaCBmb3IgdGhlIGRlZmluaXRpb25cbiAqIEBwYXJhbSByZWN1cnNlTGlzdCAtIExpc3Qgb2YgJHJlZnMgYWxyZWFkeSByZXNvbHZlZCB0byBwcmV2ZW50IHJlY3Vyc2lvblxuICogQHJldHVybnMgLSBUaGUgc3ViLXNjaGVtYSB3aXRoaW4gdGhlIGByb290U2NoZW1hYCB3aGljaCBtYXRjaGVzIHRoZSBgJHJlZmAgaWYgaXQgZXhpc3RzXG4gKiBAdGhyb3dzIC0gRXJyb3IgaW5kaWNhdGluZyB0aGF0IG5vIHNjaGVtYSBmb3IgdGhhdCByZWZlcmVuY2UgY291bGQgYmUgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRTY2hlbWFEZWZpbml0aW9uUmVjdXJzaXZlKCRyZWYsIHJvb3RTY2hlbWEgPSB7fSwgcmVjdXJzZUxpc3QgPSBbXSkge1xuICAgIGNvbnN0IHJlZiA9ICRyZWYgfHwgJyc7XG4gICAgbGV0IGRlY29kZWRSZWY7XG4gICAgaWYgKHJlZi5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgICAgLy8gRGVjb2RlIFVSSSBmcmFnbWVudCByZXByZXNlbnRhdGlvbi5cbiAgICAgICAgZGVjb2RlZFJlZiA9IGRlY29kZVVSSUNvbXBvbmVudChyZWYuc3Vic3RyaW5nKDEpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgYSBkZWZpbml0aW9uIGZvciAkeyRyZWZ9LmApO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50ID0ganNvbnBvaW50ZXIuZ2V0KHJvb3RTY2hlbWEsIGRlY29kZWRSZWYpO1xuICAgIGlmIChjdXJyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIGRlZmluaXRpb24gZm9yICR7JHJlZn0uYCk7XG4gICAgfVxuICAgIGNvbnN0IG5leHRSZWYgPSBjdXJyZW50W1JFRl9LRVldO1xuICAgIGlmIChuZXh0UmVmKSB7XG4gICAgICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzLlxuICAgICAgICBpZiAocmVjdXJzZUxpc3QuaW5jbHVkZXMobmV4dFJlZikpIHtcbiAgICAgICAgICAgIGlmIChyZWN1cnNlTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERlZmluaXRpb24gZm9yICR7JHJlZn0gaXMgYSBjaXJjdWxhciByZWZlcmVuY2VgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IFtmaXJzdFJlZiwgLi4ucmVzdFJlZnNdID0gcmVjdXJzZUxpc3Q7XG4gICAgICAgICAgICBjb25zdCBjaXJjdWxhclBhdGggPSBbLi4ucmVzdFJlZnMsIHJlZiwgZmlyc3RSZWZdLmpvaW4oJyAtPiAnKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGVmaW5pdGlvbiBmb3IgJHtmaXJzdFJlZn0gY29udGFpbnMgYSBjaXJjdWxhciByZWZlcmVuY2UgdGhyb3VnaCAke2NpcmN1bGFyUGF0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbcmVtYWluaW5nLCB0aGVSZWZdID0gc3BsaXRLZXlFbGVtZW50RnJvbU9iamVjdChSRUZfS0VZLCBjdXJyZW50KTtcbiAgICAgICAgY29uc3Qgc3ViU2NoZW1hID0gZmluZFNjaGVtYURlZmluaXRpb25SZWN1cnNpdmUodGhlUmVmLCByb290U2NoZW1hLCBbLi4ucmVjdXJzZUxpc3QsIHJlZl0pO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVtYWluaW5nKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5yZW1haW5pbmcsIC4uLnN1YlNjaGVtYSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWJTY2hlbWE7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50O1xufVxuLyoqIEdpdmVuIHRoZSBuYW1lIG9mIGEgYCRyZWZgIGZyb20gd2l0aGluIGEgc2NoZW1hLCB1c2luZyB0aGUgYHJvb3RTY2hlbWFgLCBsb29rIHVwIGFuZCByZXR1cm4gdGhlIHN1Yi1zY2hlbWEgdXNpbmcgdGhlXG4gKiBwYXRoIHByb3ZpZGVkIGJ5IHRoYXQgcmVmZXJlbmNlLiBJZiBgI2AgaXMgbm90IHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHJlZmVyZW5jZSwgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgaW5cbiAqIHRoZSBzY2hlbWEsIG9yIHRoZSByZWZlcmVuY2UgcmVzb2x2ZXMgY2lyY3VsYXJseSBiYWNrIHRvIGl0c2VsZiwgdGhlbiB0aHJvdyBhbiBFcnJvci4gT3RoZXJ3aXNlIHJldHVybiB0aGVcbiAqIHN1Yi1zY2hlbWEuIEFsc28gZGVhbHMgd2l0aCBuZXN0ZWQgYCRyZWZgcyBpbiB0aGUgc3ViLXNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gJHJlZiAtIFRoZSByZWYgc3RyaW5nIGZvciB3aGljaCB0aGUgc2NoZW1hIGRlZmluaXRpb24gaXMgZGVzaXJlZFxuICogQHBhcmFtIFtyb290U2NoZW1hPXt9XSAtIFRoZSByb290IHNjaGVtYSBpbiB3aGljaCB0byBzZWFyY2ggZm9yIHRoZSBkZWZpbml0aW9uXG4gKiBAcmV0dXJucyAtIFRoZSBzdWItc2NoZW1hIHdpdGhpbiB0aGUgYHJvb3RTY2hlbWFgIHdoaWNoIG1hdGNoZXMgdGhlIGAkcmVmYCBpZiBpdCBleGlzdHNcbiAqIEB0aHJvd3MgLSBFcnJvciBpbmRpY2F0aW5nIHRoYXQgbm8gc2NoZW1hIGZvciB0aGF0IHJlZmVyZW5jZSBjb3VsZCBiZSByZXNvbHZlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmaW5kU2NoZW1hRGVmaW5pdGlvbigkcmVmLCByb290U2NoZW1hID0ge30pIHtcbiAgICBjb25zdCByZWN1cnNlTGlzdCA9IFtdO1xuICAgIHJldHVybiBmaW5kU2NoZW1hRGVmaW5pdGlvblJlY3Vyc2l2ZSgkcmVmLCByb290U2NoZW1hLCByZWN1cnNlTGlzdCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1maW5kU2NoZW1hRGVmaW5pdGlvbi5qcy5tYXAiLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUhhcyhvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUhhcztcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgZXhpc3RzIG9uIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGhhc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrIHByb3BlcnRpZXMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgaGFzRnVuYykge1xuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gZmFsc2U7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pO1xuICAgIGlmICghKHJlc3VsdCA9IG9iamVjdCAhPSBudWxsICYmIGhhc0Z1bmMob2JqZWN0LCBrZXkpKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICB9XG4gIGlmIChyZXN1bHQgfHwgKytpbmRleCAhPSBsZW5ndGgpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGxlbmd0aCA9IG9iamVjdCA9PSBudWxsID8gMCA6IG9iamVjdC5sZW5ndGg7XG4gIHJldHVybiAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpICYmXG4gICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNQYXRoO1xuIiwidmFyIGJhc2VIYXMgPSByZXF1aXJlKCcuL19iYXNlSGFzJyksXG4gICAgaGFzUGF0aCA9IHJlcXVpcmUoJy4vX2hhc1BhdGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXMob2JqZWN0LCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob3RoZXIsICdhJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXMob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTnVtYmVyYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqICoqTm90ZToqKiBUbyBleGNsdWRlIGBJbmZpbml0eWAsIGAtSW5maW5pdHlgLCBhbmQgYE5hTmAsIHdoaWNoIGFyZVxuICogY2xhc3NpZmllZCBhcyBudW1iZXJzLCB1c2UgdGhlIGBfLmlzRmluaXRlYCBtZXRob2QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc051bWJlcigzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBudW1iZXJUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTnVtYmVyO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcnJheVJlZHVjZShhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gIH1cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UmVkdWNlO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgYmFzZSBmdW5jdGlvbiBmb3IgbWV0aG9kcyBsaWtlIGBfLmZvckluYCBhbmQgYF8uZm9yT3duYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgaXRlcmFibGUgPSBPYmplY3Qob2JqZWN0KSxcbiAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUZvcjtcbiIsInZhciBjcmVhdGVCYXNlRm9yID0gcmVxdWlyZSgnLi9fY3JlYXRlQmFzZUZvcicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xudmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvcjtcbiIsInZhciBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3JPd247XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG4gICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUVhY2g7XG4iLCJ2YXIgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBjcmVhdGVCYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2NyZWF0ZUJhc2VFYWNoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gKi9cbnZhciBiYXNlRWFjaCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VFYWNoO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGluZGV4ID0gbWF0Y2hEYXRhLmxlbmd0aCxcbiAgICAgIGxlbmd0aCA9IGluZGV4LFxuICAgICAgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG5cbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICFsZW5ndGg7XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgPyBkYXRhWzFdICE9PSBvYmplY3RbZGF0YVswXV1cbiAgICAgICAgICA6ICEoZGF0YVswXSBpbiBvYmplY3QpXG4gICAgICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIHZhciBrZXkgPSBkYXRhWzBdLFxuICAgICAgICBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICBzcmNWYWx1ZSA9IGRhdGFbMV07XG5cbiAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghKHJlc3VsdCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgIDogcmVzdWx0XG4gICAgICAgICAgKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hdGNoO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdFxuICogIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlICYmICFpc09iamVjdCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTdHJpY3RDb21wYXJhYmxlO1xuIiwidmFyIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBtYXRjaCBkYXRhIG9mIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBrZXlzKG9iamVjdCksXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHZhciBrZXkgPSByZXN1bHRbbGVuZ3RoXSxcbiAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWF0Y2hEYXRhO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYG1hdGNoZXNQcm9wZXJ0eWAgZm9yIHNvdXJjZSB2YWx1ZXMgc3VpdGFibGVcbiAqIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShrZXksIHNyY1ZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBzcmNWYWx1ZSAmJlxuICAgICAgKHNyY1ZhbHVlICE9PSB1bmRlZmluZWQgfHwgKGtleSBpbiBPYmplY3Qob2JqZWN0KSkpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlO1xuIiwidmFyIGJhc2VJc01hdGNoID0gcmVxdWlyZSgnLi9fYmFzZUlzTWF0Y2gnKSxcbiAgICBnZXRNYXRjaERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXRjaERhdGEnKSxcbiAgICBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXRjaGVzKHNvdXJjZSkge1xuICB2YXIgbWF0Y2hEYXRhID0gZ2V0TWF0Y2hEYXRhKHNvdXJjZSk7XG4gIGlmIChtYXRjaERhdGEubGVuZ3RoID09IDEgJiYgbWF0Y2hEYXRhWzBdWzJdKSB7XG4gICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKG1hdGNoRGF0YVswXVswXSwgbWF0Y2hEYXRhWzBdWzFdKTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXRjaGVzO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNJbmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUhhc0luKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBrZXkgaW4gT2JqZWN0KG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUhhc0luO1xuIiwidmFyIGJhc2VIYXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VIYXNJbicpLFxuICAgIGhhc1BhdGggPSByZXF1aXJlKCcuL19oYXNQYXRoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBvciBpbmhlcml0ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYS5iJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsIFsnYScsICdiJ10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYicpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaGFzSW4ob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNJbjtcbiIsInZhciBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyksXG4gICAgZ2V0ID0gcmVxdWlyZSgnLi9nZXQnKSxcbiAgICBoYXNJbiA9IHJlcXVpcmUoJy4vaGFzSW4nKSxcbiAgICBpc0tleSA9IHJlcXVpcmUoJy4vX2lzS2V5JyksXG4gICAgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAgbWF0Y2hlc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNQcm9wZXJ0eWAgd2hpY2ggZG9lc24ndCBjbG9uZSBgc3JjVmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gIGlmIChpc0tleShwYXRoKSAmJiBpc1N0cmljdENvbXBhcmFibGUoc3JjVmFsdWUpKSB7XG4gICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKHRvS2V5KHBhdGgpLCBzcmNWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBvYmpWYWx1ZSA9IGdldChvYmplY3QsIHBhdGgpO1xuICAgIHJldHVybiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvYmpWYWx1ZSA9PT0gc3JjVmFsdWUpXG4gICAgICA/IGhhc0luKG9iamVjdCwgcGF0aClcbiAgICAgIDogYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXRjaGVzUHJvcGVydHk7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eTtcbiIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHlEZWVwO1xuIiwidmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpLFxuICAgIGJhc2VQcm9wZXJ0eURlZXAgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHlEZWVwJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbXG4gKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gKiAgIHsgJ2EnOiB7ICdiJzogMSB9IH1cbiAqIF07XG4gKlxuICogXy5tYXAob2JqZWN0cywgXy5wcm9wZXJ0eSgnYS5iJykpO1xuICogLy8gPT4gWzIsIDFdXG4gKlxuICogXy5tYXAoXy5zb3J0Qnkob2JqZWN0cywgXy5wcm9wZXJ0eShbJ2EnLCAnYiddKSksICdhLmInKTtcbiAqIC8vID0+IFsxLCAyXVxuICovXG5mdW5jdGlvbiBwcm9wZXJ0eShwYXRoKSB7XG4gIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHByb3BlcnR5O1xuIiwidmFyIGJhc2VNYXRjaGVzID0gcmVxdWlyZSgnLi9fYmFzZU1hdGNoZXMnKSxcbiAgICBiYXNlTWF0Y2hlc1Byb3BlcnR5ID0gcmVxdWlyZSgnLi9fYmFzZU1hdGNoZXNQcm9wZXJ0eScpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBwcm9wZXJ0eSA9IHJlcXVpcmUoJy4vcHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pdGVyYXRlZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gW3ZhbHVlPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBpdGVyYXRlZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUl0ZXJhdGVlKHZhbHVlKSB7XG4gIC8vIERvbid0IHN0b3JlIHRoZSBgdHlwZW9mYCByZXN1bHQgaW4gYSB2YXJpYWJsZSB0byBhdm9pZCBhIEpJVCBidWcgaW4gU2FmYXJpIDkuXG4gIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDM0IGZvciBtb3JlIGRldGFpbHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBpZGVudGl0eTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICA/IGJhc2VNYXRjaGVzUHJvcGVydHkodmFsdWVbMF0sIHZhbHVlWzFdKVxuICAgICAgOiBiYXNlTWF0Y2hlcyh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXRlcmF0ZWU7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlZHVjZWAgYW5kIGBfLnJlZHVjZVJpZ2h0YCwgd2l0aG91dCBzdXBwb3J0XG4gKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAqICBgY29sbGVjdGlvbmAgYXMgdGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgZWFjaEZ1bmMpIHtcbiAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpbml0QWNjdW1cbiAgICAgID8gKGluaXRBY2N1bSA9IGZhbHNlLCB2YWx1ZSlcbiAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlZHVjZTtcbiIsInZhciBhcnJheVJlZHVjZSA9IHJlcXVpcmUoJy4vX2FycmF5UmVkdWNlJyksXG4gICAgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VSZWR1Y2UgPSByZXF1aXJlKCcuL19iYXNlUmVkdWNlJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFJlZHVjZXMgYGNvbGxlY3Rpb25gIHRvIGEgdmFsdWUgd2hpY2ggaXMgdGhlIGFjY3VtdWxhdGVkIHJlc3VsdCBvZiBydW5uaW5nXG4gKiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYCwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gKiBpbnZvY2F0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLiBJZiBgYWNjdW11bGF0b3JgXG4gKiBpcyBub3QgZ2l2ZW4sIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCBpcyB1c2VkIGFzIHRoZSBpbml0aWFsXG4gKiB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czpcbiAqIChhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gKiBgXy5yZWR1Y2VgLCBgXy5yZWR1Y2VSaWdodGAsIGFuZCBgXy50cmFuc2Zvcm1gLlxuICpcbiAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICogYGFzc2lnbmAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgaW5jbHVkZXNgLCBgbWVyZ2VgLCBgb3JkZXJCeWAsXG4gKiBhbmQgYHNvcnRCeWBcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gKiBAc2VlIF8ucmVkdWNlUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogXy5yZWR1Y2UoWzEsIDJdLCBmdW5jdGlvbihzdW0sIG4pIHtcbiAqICAgcmV0dXJuIHN1bSArIG47XG4gKiB9LCAwKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnJlZHVjZSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiAgIHJldHVybiByZXN1bHQ7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIHJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2UgOiBiYXNlUmVkdWNlLFxuICAgICAgaW5pdEFjY3VtID0gYXJndW1lbnRzLmxlbmd0aCA8IDM7XG5cbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgYmFzZUVhY2gpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlZHVjZTtcbiIsInZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGBpZGVudGl0eWAgaWYgaXQncyBub3QgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBjYXN0IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjYXN0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nID8gdmFsdWUgOiBpZGVudGl0eTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0RnVuY3Rpb247XG4iLCIvKiogVXNlZCB0byBtYXRjaCBhIHNpbmdsZSB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4gKi9cbnZhciByZVdoaXRlc3BhY2UgPSAvXFxzLztcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gKiBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuICovXG5mdW5jdGlvbiB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSB7XG4gIHZhciBpbmRleCA9IHN0cmluZy5sZW5ndGg7XG5cbiAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICByZXR1cm4gaW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJpbW1lZEVuZEluZGV4O1xuIiwidmFyIHRyaW1tZWRFbmRJbmRleCA9IHJlcXVpcmUoJy4vX3RyaW1tZWRFbmRJbmRleCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltU3RhcnQgPSAvXlxccysvO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRyaW1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVHJpbShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZ1xuICAgID8gc3RyaW5nLnNsaWNlKDAsIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpICsgMSkucmVwbGFjZShyZVRyaW1TdGFydCwgJycpXG4gICAgOiBzdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRyaW07XG4iLCJ2YXIgYmFzZVRyaW0gPSByZXF1aXJlKCcuL19iYXNlVHJpbScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gYmFzZVRyaW0odmFsdWUpO1xuICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcbiIsInZhciB0b051bWJlciA9IHJlcXVpcmUoJy4vdG9OdW1iZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMi4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9GaW5pdGUoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvRmluaXRlKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0Zpbml0ZSgnMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9GaW5pdGUodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgfVxuICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyB2YWx1ZSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9GaW5pdGU7XG4iLCJ2YXIgdG9GaW5pdGUgPSByZXF1aXJlKCcuL3RvRmluaXRlJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9JbnRlZ2VyKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgcmVtYWluZGVyID0gcmVzdWx0ICUgMTtcblxuICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyO1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGNhc3RGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2Nhc3RGdW5jdGlvbicpLFxuICAgIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB0aGUgbWF4aW11bSBsZW5ndGggYW5kIGluZGV4IG9mIGFuIGFycmF5LiAqL1xudmFyIE1BWF9BUlJBWV9MRU5HVEggPSA0Mjk0OTY3Mjk1O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWluID0gTWF0aC5taW47XG5cbi8qKlxuICogSW52b2tlcyB0aGUgaXRlcmF0ZWUgYG5gIHRpbWVzLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2ZcbiAqIGVhY2ggaW52b2NhdGlvbi4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7IChpbmRleCkuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygzLCBTdHJpbmcpO1xuICogLy8gPT4gWycwJywgJzEnLCAnMiddXG4gKlxuICogIF8udGltZXMoNCwgXy5jb25zdGFudCgwKSk7XG4gKiAvLyA9PiBbMCwgMCwgMCwgMF1cbiAqL1xuZnVuY3Rpb24gdGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgbiA9IHRvSW50ZWdlcihuKTtcbiAgaWYgKG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBpbmRleCA9IE1BWF9BUlJBWV9MRU5HVEgsXG4gICAgICBsZW5ndGggPSBuYXRpdmVNaW4obiwgTUFYX0FSUkFZX0xFTkdUSCk7XG5cbiAgaXRlcmF0ZWUgPSBjYXN0RnVuY3Rpb24oaXRlcmF0ZWUpO1xuICBuIC09IE1BWF9BUlJBWV9MRU5HVEg7XG5cbiAgdmFyIHJlc3VsdCA9IGJhc2VUaW1lcyhsZW5ndGgsIGl0ZXJhdGVlKTtcbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdGltZXM7XG4iLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHsgUFJPUEVSVElFU19LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogQ29tcGFyZXMgdGhlIHZhbHVlIG9mIGBkaXNjcmltaW5hdG9yRmllbGRgIHdpdGhpbiBgZm9ybURhdGFgIGFnYWluc3QgdGhlIHZhbHVlIG9mIGBkaXNjcmltaW5hdG9yRmllbGRgIHdpdGhpbiBzY2hlbWEgZm9yIGVhY2ggYG9wdGlvbmAuXG4gKiBSZXR1cm5zIGluZGV4IG9mIGZpcnN0IGBvcHRpb25gIHdob3NlIGRpc2NyaW1pbmF0b3IgbWF0Y2hlcyBmb3JtRGF0YS4gUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbiAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgd29yayB3aXRoIGRpc2NyaW1pbmF0b3JzIG9mIGBcInR5cGVcIjogXCJvYmplY3RcImAgYW5kIGBcInR5cGVcIjogXCJhcnJheVwiYFxuICpcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHVzZWQgdG8gZmlndXJlIG91dCBhIG1hdGNoXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgdG8gZmluZCBhIG1hdGNoaW5nIG9wdGlvbnMgZnJvbVxuICogQHBhcmFtIFtkaXNjcmltaW5hdG9yRmllbGRdIC0gVGhlIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGZpZWxkIHdpdGhpbiB0aGUgb3B0aW9ucyBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdXNlZCB0b1xuICogICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIG9wdGlvbiBpcyBzZWxlY3RlZFxuICogQHJldHVybnMgLSBUaGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgb3B0aW9uIG9yIHVuZGVmaW5lZCBpZiB0aGVyZSBpcyBubyBtYXRjaFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IoZm9ybURhdGEsIG9wdGlvbnMsIGRpc2NyaW1pbmF0b3JGaWVsZCkge1xuICAgIHZhciBfYTtcbiAgICBpZiAoZm9ybURhdGEgJiYgZGlzY3JpbWluYXRvckZpZWxkKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGZvcm1EYXRhLCBkaXNjcmltaW5hdG9yRmllbGQpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9uc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBnZXQob3B0aW9uLCBbUFJPUEVSVElFU19LRVksIGRpc2NyaW1pbmF0b3JGaWVsZF0sIHt9KTtcbiAgICAgICAgICAgIGlmIChkaXNjcmltaW5hdG9yLnR5cGUgPT09ICdvYmplY3QnIHx8IGRpc2NyaW1pbmF0b3IudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRpc2NyaW1pbmF0b3IuY29uc3QgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKF9hID0gZGlzY3JpbWluYXRvci5lbnVtKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0T3B0aW9uTWF0Y2hpbmdTaW1wbGVEaXNjcmltaW5hdG9yLmpzLm1hcCIsImltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaGFzIGZyb20gJ2xvZGFzaC9oYXMnO1xuaW1wb3J0IGlzTnVtYmVyIGZyb20gJ2xvZGFzaC9pc051bWJlcic7XG5pbXBvcnQgeyBQUk9QRVJUSUVTX0tFWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0T3B0aW9uTWF0Y2hpbmdTaW1wbGVEaXNjcmltaW5hdG9yIGZyb20gJy4uL2dldE9wdGlvbk1hdGNoaW5nU2ltcGxlRGlzY3JpbWluYXRvcic7XG4vKiogR2l2ZW4gdGhlIGBmb3JtRGF0YWAgYW5kIGxpc3Qgb2YgYG9wdGlvbnNgLCBhdHRlbXB0cyB0byBmaW5kIHRoZSBpbmRleCBvZiB0aGUgb3B0aW9uIHRoYXQgYmVzdCBtYXRjaGVzIHRoZSBkYXRhLlxuICogRGVwcmVjYXRlZCwgdXNlIGBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKClgIGluc3RlYWQuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB1c2VkIHRvIGZpZ3VyZSBvdXQgYSBtYXRjaFxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRvIGZpbmQgYSBtYXRjaGluZyBvcHRpb25zIGZyb21cbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZGlzY3JpbWluYXRvckZpZWxkXSAtIFRoZSBvcHRpb25hbCBuYW1lIG9mIHRoZSBmaWVsZCB3aXRoaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHVzZWQgdG9cbiAqICAgICAgICAgIGRldGVybWluZSB3aGljaCBvcHRpb24gaXMgc2VsZWN0ZWRcbiAqIEByZXR1cm5zIC0gVGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIG9wdGlvbiBvciAwIGlmIG5vbmUgaXMgYXZhaWxhYmxlXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIGZvcm1EYXRhLCBvcHRpb25zLCByb290U2NoZW1hLCBkaXNjcmltaW5hdG9yRmllbGQpIHtcbiAgICAvLyBGb3IgcGVyZm9ybWFuY2UsIHNraXAgdmFsaWRhdGluZyBzdWJzY2hlbWFzIGlmIGZvcm1EYXRhIGlzIHVuZGVmaW5lZC4gV2UganVzdFxuICAgIC8vIHdhbnQgdG8gZ2V0IHRoZSBmaXJzdCBvcHRpb24gaW4gdGhhdCBjYXNlLlxuICAgIGlmIChmb3JtRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjb25zdCBzaW1wbGVEaXNjcmltaW5hdG9yTWF0Y2ggPSBnZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IoZm9ybURhdGEsIG9wdGlvbnMsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgaWYgKGlzTnVtYmVyKHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaCkpIHtcbiAgICAgICAgcmV0dXJuIHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaDtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNbaV07XG4gICAgICAgIC8vIElmIHdlIGhhdmUgYSBkaXNjcmltaW5hdG9yIGZpZWxkLCB0aGVuIHdlIHdpbGwgdXNlIHRoaXMgdG8gbWFrZSB0aGUgZGV0ZXJtaW5hdGlvblxuICAgICAgICBpZiAoZGlzY3JpbWluYXRvckZpZWxkICYmIGhhcyhvcHRpb24sIFtQUk9QRVJUSUVTX0tFWSwgZGlzY3JpbWluYXRvckZpZWxkXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGZvcm1EYXRhLCBkaXNjcmltaW5hdG9yRmllbGQpO1xuICAgICAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldChvcHRpb24sIFtQUk9QRVJUSUVTX0tFWSwgZGlzY3JpbWluYXRvckZpZWxkXSwge30pO1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRvci5pc1ZhbGlkKGRpc2NyaW1pbmF0b3IsIHZhbHVlLCByb290U2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbltQUk9QRVJUSUVTX0tFWV0pIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBzY2hlbWEgZGVzY3JpYmVzIGFuIG9iamVjdCB0aGVuIHdlIG5lZWQgdG8gYWRkIHNsaWdodGx5IG1vcmVcbiAgICAgICAgICAgIC8vIHN0cmljdCBtYXRjaGluZyB0byB0aGUgc2NoZW1hLCBiZWNhdXNlIHVubGVzcyB0aGUgc2NoZW1hIHVzZXMgdGhlXG4gICAgICAgICAgICAvLyBcInJlcXVpcmVzXCIga2V5d29yZCwgYW4gb2JqZWN0IHdpbGwgbWF0Y2ggdGhlIHNjaGVtYSBhcyBsb25nIGFzIGl0XG4gICAgICAgICAgICAvLyBkb2Vzbid0IGhhdmUgbWF0Y2hpbmcga2V5cyB3aXRoIGEgY29uZmxpY3RpbmcgdHlwZS4gVG8gZG8gdGhpcyB3ZSB1c2UgYW5cbiAgICAgICAgICAgIC8vIFwiYW55T2ZcIiB3aXRoIGFuIGFycmF5IG9mIHJlcXVpcmVzLiBUaGlzIGF1Z21lbnRhdGlvbiBleHByZXNzZXMgdGhhdCB0aGVcbiAgICAgICAgICAgIC8vIHNjaGVtYSBzaG91bGQgbWF0Y2ggaWYgYW55IG9mIHRoZSBrZXlzIGluIHRoZSBzY2hlbWEgYXJlIHByZXNlbnQgb24gdGhlXG4gICAgICAgICAgICAvLyBvYmplY3QgYW5kIHBhc3MgdmFsaWRhdGlvbi5cbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyBDcmVhdGUgYW4gXCJhbnlPZlwiIHNjaGVtYSB0aGF0IHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBvZiB0aGUga2V5cyBpbiB0aGVcbiAgICAgICAgICAgIC8vIFwicHJvcGVydGllc1wiIG9iamVjdFxuICAgICAgICAgICAgY29uc3QgcmVxdWlyZXNBbnlPZiA9IHtcbiAgICAgICAgICAgICAgICBhbnlPZjogT2JqZWN0LmtleXMob3B0aW9uW1BST1BFUlRJRVNfS0VZXSkubWFwKChrZXkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBba2V5XSxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IGF1Z21lbnRlZFNjaGVtYTtcbiAgICAgICAgICAgIC8vIElmIHRoZSBcImFueU9mXCIga2V5d29yZCBhbHJlYWR5IGV4aXN0cywgd3JhcCB0aGUgYXVnbWVudGF0aW9uIGluIGFuIFwiYWxsT2ZcIlxuICAgICAgICAgICAgaWYgKG9wdGlvbi5hbnlPZikge1xuICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIHNoYWxsb3cgY2xvbmUgb2YgdGhlIG9wdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IHsgLi4uc2hhbGxvd0Nsb25lIH0gPSBvcHRpb247XG4gICAgICAgICAgICAgICAgaWYgKCFzaGFsbG93Q2xvbmUuYWxsT2YpIHtcbiAgICAgICAgICAgICAgICAgICAgc2hhbGxvd0Nsb25lLmFsbE9mID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBcImFsbE9mXCIgYWxyZWFkeSBleGlzdHMsIHNoYWxsb3cgY2xvbmUgdGhlIGFycmF5XG4gICAgICAgICAgICAgICAgICAgIHNoYWxsb3dDbG9uZS5hbGxPZiA9IHNoYWxsb3dDbG9uZS5hbGxPZi5zbGljZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzaGFsbG93Q2xvbmUuYWxsT2YucHVzaChyZXF1aXJlc0FueU9mKTtcbiAgICAgICAgICAgICAgICBhdWdtZW50ZWRTY2hlbWEgPSBzaGFsbG93Q2xvbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhdWdtZW50ZWRTY2hlbWEgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb24sIHJlcXVpcmVzQW55T2YpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBcInJlcXVpcmVkXCIgZmllbGQgYXMgaXQncyBsaWtlbHkgdGhhdCBub3QgYWxsIGZpZWxkcyBoYXZlXG4gICAgICAgICAgICAvLyBiZWVuIGZpbGxlZCBpbiB5ZXQsIHdoaWNoIHdpbGwgbWVhbiB0aGF0IHRoZSBzY2hlbWEgaXMgbm90IHZhbGlkXG4gICAgICAgICAgICBkZWxldGUgYXVnbWVudGVkU2NoZW1hLnJlcXVpcmVkO1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRvci5pc1ZhbGlkKGF1Z21lbnRlZFNjaGVtYSwgZm9ybURhdGEsIHJvb3RTY2hlbWEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsaWRhdG9yLmlzVmFsaWQob3B0aW9uLCBmb3JtRGF0YSwgcm9vdFNjaGVtYSkpIHtcbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0TWF0Y2hpbmdPcHRpb24uanMubWFwIiwiaW1wb3J0IGdldE1hdGNoaW5nT3B0aW9uIGZyb20gJy4vZ2V0TWF0Y2hpbmdPcHRpb24nO1xuLyoqIEdpdmVuIHRoZSBgZm9ybURhdGFgIGFuZCBsaXN0IG9mIGBvcHRpb25zYCwgYXR0ZW1wdHMgdG8gZmluZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9wdGlvbiB0aGF0IG1hdGNoZXMgdGhlIGRhdGEuXG4gKiBBbHdheXMgcmV0dXJucyB0aGUgZmlyc3Qgb3B0aW9uIGlmIHRoZXJlIGlzIG5vdGhpbmcgdGhhdCBtYXRjaGVzLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdXNlZCB0byBmaWd1cmUgb3V0IGEgbWF0Y2hcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyB0byBmaW5kIGEgbWF0Y2hpbmcgb3B0aW9ucyBmcm9tXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gKiAgICAgICAgICBkZXRlcm1pbmUgd2hpY2ggb3B0aW9uIGlzIHNlbGVjdGVkXG4gKiBAcmV0dXJucyAtIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgbWF0Y2hlZCBvcHRpb24gb3IgMCBpZiBub25lIGlzIGF2YWlsYWJsZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgZm9ybURhdGEsIG9wdGlvbnMsIHJvb3RTY2hlbWEsIGRpc2NyaW1pbmF0b3JGaWVsZCkge1xuICAgIHJldHVybiBnZXRNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIGZvcm1EYXRhLCBvcHRpb25zLCByb290U2NoZW1hLCBkaXNjcmltaW5hdG9yRmllbGQpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0Rmlyc3RNYXRjaGluZ09wdGlvbi5qcy5tYXAiLCJ2YXIgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpO1xuXG4vKipcbiAqIFBlcmZvcm1zIGEgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmVcbiAqIGVxdWl2YWxlbnQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGNvbXBhcmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLFxuICogZGF0ZSBvYmplY3RzLCBlcnJvciBvYmplY3RzLCBtYXBzLCBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLFxuICogc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkIGFycmF5cy4gYE9iamVjdGAgb2JqZWN0cyBhcmUgY29tcGFyZWRcbiAqIGJ5IHRoZWlyIG93biwgbm90IGluaGVyaXRlZCwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLiBGdW5jdGlvbnMgYW5kIERPTVxuICogbm9kZXMgYXJlIGNvbXBhcmVkIGJ5IHN0cmljdCBlcXVhbGl0eSwgaS5lLiBgPT09YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5pc0VxdWFsKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIG9iamVjdCA9PT0gb3RoZXI7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0VxdWFsKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VxdWFsO1xuIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgd2hpbGUgKG5lc3RlZCAhPSBudWxsICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycgfHwga2V5ID09PSAnY29uc3RydWN0b3InIHx8IGtleSA9PT0gJ3Byb3RvdHlwZScpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ICE9IGxhc3RJbmRleCkge1xuICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICA6IChpc0luZGV4KHBhdGhbaW5kZXggKyAxXSkgPyBbXSA6IHt9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXNzaWduVmFsdWUobmVzdGVkLCBrZXksIG5ld1ZhbHVlKTtcbiAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXQ7XG4iLCJ2YXIgYmFzZVNldCA9IHJlcXVpcmUoJy4vX2Jhc2VTZXQnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIGEgcG9ydGlvbiBvZiBgcGF0aGAgZG9lc24ndCBleGlzdCxcbiAqIGl0J3MgY3JlYXRlZC4gQXJyYXlzIGFyZSBjcmVhdGVkIGZvciBtaXNzaW5nIGluZGV4IHByb3BlcnRpZXMgd2hpbGUgb2JqZWN0c1xuICogYXJlIGNyZWF0ZWQgZm9yIGFsbCBvdGhlciBtaXNzaW5nIHByb3BlcnRpZXMuIFVzZSBgXy5zZXRXaXRoYCB0byBjdXN0b21pemVcbiAqIGBwYXRoYCBjcmVhdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuNy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gKlxuICogXy5zZXQob2JqZWN0LCAnYVswXS5iLmMnLCA0KTtcbiAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gKiAvLyA9PiA0XG4gKlxuICogXy5zZXQob2JqZWN0LCBbJ3gnLCAnMCcsICd5JywgJ3onXSwgNSk7XG4gKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICogLy8gPT4gNVxuICovXG5mdW5jdGlvbiBzZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldDtcbiIsInZhciBhcnJheUVhY2ggPSByZXF1aXJlKCcuL19hcnJheUVhY2gnKSxcbiAgICBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLFxuICAgIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKipcbiAqIEFuIGFsdGVybmF0aXZlIHRvIGBfLnJlZHVjZWA7IHRoaXMgbWV0aG9kIHRyYW5zZm9ybXMgYG9iamVjdGAgdG8gYSBuZXdcbiAqIGBhY2N1bXVsYXRvcmAgb2JqZWN0IHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgcnVubmluZyBlYWNoIG9mIGl0cyBvd25cbiAqIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgdGhydSBgaXRlcmF0ZWVgLCB3aXRoIGVhY2ggaW52b2NhdGlvblxuICogcG90ZW50aWFsbHkgbXV0YXRpbmcgdGhlIGBhY2N1bXVsYXRvcmAgb2JqZWN0LiBJZiBgYWNjdW11bGF0b3JgIGlzIG5vdFxuICogcHJvdmlkZWQsIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGBbW1Byb3RvdHlwZV1dYCB3aWxsIGJlIHVzZWQuIFRoZVxuICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOiAoYWNjdW11bGF0b3IsIHZhbHVlLCBrZXksIG9iamVjdCkuXG4gKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjMuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBjdXN0b20gYWNjdW11bGF0b3IgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udHJhbnNmb3JtKFsyLCAzLCA0XSwgZnVuY3Rpb24ocmVzdWx0LCBuKSB7XG4gKiAgIHJlc3VsdC5wdXNoKG4gKj0gbik7XG4gKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICogfSwgW10pO1xuICogLy8gPT4gWzQsIDldXG4gKlxuICogXy50cmFuc2Zvcm0oeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH0sIGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICogfSwge30pO1xuICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm0ob2JqZWN0LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgaXNBcnJMaWtlID0gaXNBcnIgfHwgaXNCdWZmZXIob2JqZWN0KSB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KTtcblxuICBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgNCk7XG4gIGlmIChhY2N1bXVsYXRvciA9PSBudWxsKSB7XG4gICAgdmFyIEN0b3IgPSBvYmplY3QgJiYgb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgIGlmIChpc0Fyckxpa2UpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNBcnIgPyBuZXcgQ3RvciA6IFtdO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc09iamVjdChvYmplY3QpKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGlzRnVuY3Rpb24oQ3RvcikgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKSA6IHt9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGFjY3VtdWxhdG9yID0ge307XG4gICAgfVxuICB9XG4gIChpc0Fyckxpa2UgPyBhcnJheUVhY2ggOiBiYXNlRm9yT3duKShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgcmV0dXJuIGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIG9iamVjdCk7XG4gIH0pO1xuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJhbnNmb3JtO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gKiBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnbk1lcmdlVmFsdWU7XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuIiwiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCwgdW5sZXNzIGBrZXlgIGlzIFwiX19wcm90b19fXCIgb3IgXCJjb25zdHJ1Y3RvclwiLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2FmZUdldDtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHBsYWluIG9iamVjdCBmbGF0dGVuaW5nIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZ1xuICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfVxuICovXG5mdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHZhbHVlLCBrZXlzSW4odmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1BsYWluT2JqZWN0O1xuIiwidmFyIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGluaXRDbG9uZU9iamVjdCA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZU9iamVjdCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0FycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vaXNQbGFpbk9iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5JyksXG4gICAgc2FmZUdldCA9IHJlcXVpcmUoJy4vX3NhZmVHZXQnKSxcbiAgICB0b1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi90b1BsYWluT2JqZWN0Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgbWVyZ2VzIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gbWVyZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICB2YXIgb2JqVmFsdWUgPSBzYWZlR2V0KG9iamVjdCwga2V5KSxcbiAgICAgIHNyY1ZhbHVlID0gc2FmZUdldChzb3VyY2UsIGtleSksXG4gICAgICBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcblxuICBpZiAoc3RhY2tlZCkge1xuICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHN0YWNrZWQpO1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgPyBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIHZhciBpc0NvbW1vbiA9IG5ld1ZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksXG4gICAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiBpc0J1ZmZlcihzcmNWYWx1ZSksXG4gICAgICAgIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuXG4gICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICBpZiAoaXNBcnIgfHwgaXNCdWZmIHx8IGlzVHlwZWQpIHtcbiAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzQnVmZikge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lQnVmZmVyKHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzVHlwZWQpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG5ld1ZhbHVlID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc3JjVmFsdWUpIHx8IGlzQXJndW1lbnRzKHNyY1ZhbHVlKSkge1xuICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgIGlmIChpc0FyZ3VtZW50cyhvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKCFpc09iamVjdChvYmpWYWx1ZSkgfHwgaXNGdW5jdGlvbihvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBpbml0Q2xvbmVPYmplY3Qoc3JjVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChpc0NvbW1vbikge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgbmV3VmFsdWUpO1xuICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgc3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTtcbiAgfVxuICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlRGVlcDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGJhc2VNZXJnZURlZXAgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2VEZWVwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYmFzZUZvcihzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIGJhc2VNZXJnZSwgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0sIGtleXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlO1xuIiwidmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpLFxuICAgIG92ZXJSZXN0ID0gcmVxdWlyZSgnLi9fb3ZlclJlc3QnKSxcbiAgICBzZXRUb1N0cmluZyA9IHJlcXVpcmUoJy4vX3NldFRvU3RyaW5nJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVzdGAgd2hpY2ggZG9lc24ndCB2YWxpZGF0ZSBvciBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VSZXN0O1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICApIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0l0ZXJhdGVlQ2FsbDtcbiIsInZhciBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfVxuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFzc2lnbmVyO1xuIiwidmFyIGJhc2VNZXJnZSA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZScpLFxuICAgIGNyZWF0ZUFzc2lnbmVyID0gcmVxdWlyZSgnLi9fY3JlYXRlQXNzaWduZXInKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAqIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIGludG8gdGhlXG4gKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBwcm9wZXJ0aWVzIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYCBhcmVcbiAqIHNraXBwZWQgaWYgYSBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllc1xuICogYXJlIG1lcmdlZCByZWN1cnNpdmVseS4gT3RoZXIgb2JqZWN0cyBhbmQgdmFsdWUgdHlwZXMgYXJlIG92ZXJyaWRkZW4gYnlcbiAqIGFzc2lnbm1lbnQuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC4gU3Vic2VxdWVudFxuICogc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuNS4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7XG4gKiAgICdhJzogW3sgJ2InOiAyIH0sIHsgJ2QnOiA0IH1dXG4gKiB9O1xuICpcbiAqIHZhciBvdGhlciA9IHtcbiAqICAgJ2EnOiBbeyAnYyc6IDMgfSwgeyAnZSc6IDUgfV1cbiAqIH07XG4gKlxuICogXy5tZXJnZShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IDIsICdjJzogMyB9LCB7ICdkJzogNCwgJ2UnOiA1IH1dIH1cbiAqL1xudmFyIG1lcmdlID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2U7XG4iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIGBhcnJheWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5mbGF0dGVuRGVlcChbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICogLy8gPT4gWzEsIDIsIDMsIDQsIDVdXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5EZWVwKGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCBJTkZJTklUWSkgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuRGVlcDtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmluZEluZGV4YCBhbmQgYF8uZmluZExhc3RJbmRleGAgd2l0aG91dFxuICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlRmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCwgZnJvbVJpZ2h0KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBpbmRleCA9IGZyb21JbmRleCArIChmcm9tUmlnaHQgPyAxIDogLTEpO1xuXG4gIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGaW5kSW5kZXg7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmFOYCB3aXRob3V0IHN1cHBvcnQgZm9yIG51bWJlciBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hTih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc05hTjtcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpY3RJbmRleE9mO1xuIiwidmFyIGJhc2VGaW5kSW5kZXggPSByZXF1aXJlKCcuL19iYXNlRmluZEluZGV4JyksXG4gICAgYmFzZUlzTmFOID0gcmVxdWlyZSgnLi9fYmFzZUlzTmFOJyksXG4gICAgc3RyaWN0SW5kZXhPZiA9IHJlcXVpcmUoJy4vX3N0cmljdEluZGV4T2YnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbmRleE9mYCB3aXRob3V0IGBmcm9tSW5kZXhgIGJvdW5kcyBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZVxuICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgZnJvbUluZGV4KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSW5kZXhPZjtcbiIsInZhciBiYXNlSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Jhc2VJbmRleE9mJyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluY2x1ZGVzYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzKGFycmF5LCB2YWx1ZSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiAhIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIDApID4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlJbmNsdWRlcztcbiIsIi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhcnJheUluY2x1ZGVzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXNXaXRoKGFycmF5LCB2YWx1ZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLm5vb3ApO1xuICogLy8gPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICovXG5mdW5jdGlvbiBub29wKCkge1xuICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5vb3A7XG4iLCJ2YXIgU2V0ID0gcmVxdWlyZSgnLi9fU2V0JyksXG4gICAgbm9vcCA9IHJlcXVpcmUoJy4vbm9vcCcpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNldCBvYmplY3Qgb2YgYHZhbHVlc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFkZCB0byB0aGUgc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAqL1xudmFyIGNyZWF0ZVNldCA9ICEoU2V0ICYmICgxIC8gc2V0VG9BcnJheShuZXcgU2V0KFssLTBdKSlbMV0pID09IElORklOSVRZKSA/IG5vb3AgOiBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgcmV0dXJuIG5ldyBTZXQodmFsdWVzKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlU2V0O1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlcycpLFxuICAgIGFycmF5SW5jbHVkZXNXaXRoID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlc1dpdGgnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyksXG4gICAgY3JlYXRlU2V0ID0gcmVxdWlyZSgnLi9fY3JlYXRlU2V0JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgcmVzdWx0ID0gW10sXG4gICAgICBzZWVuID0gcmVzdWx0O1xuXG4gIGlmIChjb21wYXJhdG9yKSB7XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICB9XG4gIGVsc2UgaWYgKGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgdmFyIHNldCA9IGl0ZXJhdGVlID8gbnVsbCA6IGNyZWF0ZVNldChhcnJheSk7XG4gICAgaWYgKHNldCkge1xuICAgICAgcmV0dXJuIHNldFRvQXJyYXkoc2V0KTtcbiAgICB9XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gIH1cbiAgZWxzZSB7XG4gICAgc2VlbiA9IGl0ZXJhdGVlID8gW10gOiByZXN1bHQ7XG4gIH1cbiAgb3V0ZXI6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICB2YXIgc2VlbkluZGV4ID0gc2Vlbi5sZW5ndGg7XG4gICAgICB3aGlsZSAoc2VlbkluZGV4LS0pIHtcbiAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpbmNsdWRlcyhzZWVuLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgIGlmIChzZWVuICE9PSByZXN1bHQpIHtcbiAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5pcTtcbiIsInZhciBiYXNlVW5pcSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmlxJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgYW4gYXJyYXksIHVzaW5nXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpbiB3aGljaCBvbmx5IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggZWxlbWVudFxuICogaXMga2VwdC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1clxuICogaW4gdGhlIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlxKFsyLCAxLCAyXSk7XG4gKiAvLyA9PiBbMiwgMV1cbiAqL1xuZnVuY3Rpb24gdW5pcShhcnJheSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSkgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmlxO1xuIiwidmFyIGJhc2VDbG9uZSA9IHJlcXVpcmUoJy4vX2Jhc2VDbG9uZScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gKiBAc2VlIF8uY2xvbmVcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gKlxuICogdmFyIGRlZXAgPSBfLmNsb25lRGVlcChvYmplY3RzKTtcbiAqIGNvbnNvbGUubG9nKGRlZXBbMF0gPT09IG9iamVjdHNbMF0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gY2xvbmVEZWVwKHZhbHVlKSB7XG4gIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVEZWVwO1xuIiwidmFyIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXBgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IGl0ZXJhdGVlKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWFwO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0QnlgIHdoaWNoIHVzZXMgYGNvbXBhcmVyYCB0byBkZWZpbmUgdGhlXG4gKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gKiB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyZXIgVGhlIGZ1bmN0aW9uIHRvIGRlZmluZSBzb3J0IG9yZGVyLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTb3J0QnkoYXJyYXksIGNvbXBhcmVyKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU29ydEJ5O1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgdmFsdWVgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICBpZiAodmFsdWUgIT09IG90aGVyKSB7XG4gICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICB2YWxJc1JlZmxleGl2ZSA9IHZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgb3RoSXNOdWxsID0gb3RoZXIgPT09IG51bGwsXG4gICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgIGlmICgoIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wgJiYgIXZhbElzU3ltYm9sICYmIHZhbHVlID4gb3RoZXIpIHx8XG4gICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAoIXZhbElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgKG90aElzTnVsbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUFzY2VuZGluZztcbiIsInZhciBjb21wYXJlQXNjZW5kaW5nID0gcmVxdWlyZSgnLi9fY29tcGFyZUFzY2VuZGluZycpO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICogYW5kIHN0YWJsZSBzb3J0IHRoZW0uXG4gKlxuICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAqIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXJcbiAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW5bXXxzdHJpbmdbXX0gb3JkZXJzIFRoZSBvcmRlciB0byBzb3J0IGJ5IGZvciBlYWNoIHByb3BlcnR5LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICBvdGhDcml0ZXJpYSA9IG90aGVyLmNyaXRlcmlhLFxuICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBpZiAoaW5kZXggPj0gb3JkZXJzTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgb3JkZXIgPSBvcmRlcnNbaW5kZXhdO1xuICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgIH1cbiAgfVxuICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gIC8vIGBvYmplY3RgIGFuZCBgb3RoZXJgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL3B1bGwvMTI0N1xuICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAvL1xuICAvLyBUaGlzIGFsc28gZW5zdXJlcyBhIHN0YWJsZSBzb3J0IGluIFY4IGFuZCBvdGhlciBlbmdpbmVzLlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVNdWx0aXBsZTtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTWFwID0gcmVxdWlyZSgnLi9fYmFzZU1hcCcpLFxuICAgIGJhc2VTb3J0QnkgPSByZXF1aXJlKCcuL19iYXNlU29ydEJ5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgY29tcGFyZU11bHRpcGxlID0gcmVxdWlyZSgnLi9fY29tcGFyZU11bHRpcGxlJyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm9yZGVyQnlgIHdpdGhvdXQgcGFyYW0gZ3VhcmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IGl0ZXJhdGVlcyBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICBpZiAoaXRlcmF0ZWVzLmxlbmd0aCkge1xuICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgIGlmIChpc0FycmF5KGl0ZXJhdGVlKSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gYmFzZUdldCh2YWx1ZSwgaXRlcmF0ZWUubGVuZ3RoID09PSAxID8gaXRlcmF0ZWVbMF0gOiBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVyYXRlZTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpdGVyYXRlZXMgPSBbaWRlbnRpdHldO1xuICB9XG5cbiAgdmFyIGluZGV4ID0gLTE7XG4gIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgYmFzZVVuYXJ5KGJhc2VJdGVyYXRlZSkpO1xuXG4gIHZhciByZXN1bHQgPSBiYXNlTWFwKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICB2YXIgY3JpdGVyaWEgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiB7ICdjcml0ZXJpYSc6IGNyaXRlcmlhLCAnaW5kZXgnOiArK2luZGV4LCAndmFsdWUnOiB2YWx1ZSB9O1xuICB9KTtcblxuICByZXR1cm4gYmFzZVNvcnRCeShyZXN1bHQsIGZ1bmN0aW9uKG9iamVjdCwgb3RoZXIpIHtcbiAgICByZXR1cm4gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycyk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VPcmRlckJ5O1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKSxcbiAgICBiYXNlT3JkZXJCeSA9IHJlcXVpcmUoJy4vX2Jhc2VPcmRlckJ5JyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gKiBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24gdGhydSBlYWNoIGl0ZXJhdGVlLiBUaGlzIG1ldGhvZFxuICogcGVyZm9ybXMgYSBzdGFibGUgc29ydCwgdGhhdCBpcywgaXQgcHJlc2VydmVzIHRoZSBvcmlnaW5hbCBzb3J0IG9yZGVyIG9mXG4gKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiAzMCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9XG4gKiBdO1xuICpcbiAqIF8uc29ydEJ5KHVzZXJzLCBbZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyOyB9XSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDMwXV1cbiAqXG4gKiBfLnNvcnRCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM0XSwgWydiYXJuZXknLCAzNl0sIFsnZnJlZCcsIDMwXSwgWydmcmVkJywgNDhdXVxuICovXG52YXIgc29ydEJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWVzKSB7XG4gIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGg7XG4gIGlmIChsZW5ndGggPiAxICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdKSkge1xuICAgIGl0ZXJhdGVlcyA9IFtdO1xuICB9IGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaXNJdGVyYXRlZUNhbGwoaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0sIGl0ZXJhdGVlc1syXSkpIHtcbiAgICBpdGVyYXRlZXMgPSBbaXRlcmF0ZWVzWzBdXTtcbiAgfVxuICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgYmFzZUZsYXR0ZW4oaXRlcmF0ZWVzLCAxKSwgW10pO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydEJ5O1xuIiwidmFyIGJhc2VVbmlxID0gcmVxdWlyZSgnLi9fYmFzZVVuaXEnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAqIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LlRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAqIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gKlxuICogXy51bmlxV2l0aChvYmplY3RzLCBfLmlzRXF1YWwpO1xuICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XVxuICovXG5mdW5jdGlvbiB1bmlxV2l0aChhcnJheSwgY29tcGFyYXRvcikge1xuICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5LCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pcVdpdGg7XG4iLCJ2YXIgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAqIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXMgdGhhdFxuICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbnZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgbGVuZ3RoID0gMTtcbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgIHZhciBwcm9wc0luZGV4ID0gLTE7XG4gICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbcHJvcHNJbmRleF07XG4gICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEodmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCJ2YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLFxuICAgIGFycmF5SW5jbHVkZXMgPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzJyksXG4gICAgYXJyYXlJbmNsdWRlc1dpdGggPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzV2l0aCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCwgd2l0aG91dCBzdXBwb3J0XG4gKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIGFycmF5cyB0byBpbnNwZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheXMgVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2Ygc2hhcmVkIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUludGVyc2VjdGlvbihhcnJheXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmNsdWRlcyA9IGNvbXBhcmF0b3IgPyBhcnJheUluY2x1ZGVzV2l0aCA6IGFycmF5SW5jbHVkZXMsXG4gICAgICBsZW5ndGggPSBhcnJheXNbMF0ubGVuZ3RoLFxuICAgICAgb3RoTGVuZ3RoID0gYXJyYXlzLmxlbmd0aCxcbiAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoLFxuICAgICAgY2FjaGVzID0gQXJyYXkob3RoTGVuZ3RoKSxcbiAgICAgIG1heExlbmd0aCA9IEluZmluaXR5LFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKG90aEluZGV4LS0pIHtcbiAgICB2YXIgYXJyYXkgPSBhcnJheXNbb3RoSW5kZXhdO1xuICAgIGlmIChvdGhJbmRleCAmJiBpdGVyYXRlZSkge1xuICAgICAgYXJyYXkgPSBhcnJheU1hcChhcnJheSwgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgfVxuICAgIG1heExlbmd0aCA9IG5hdGl2ZU1pbihhcnJheS5sZW5ndGgsIG1heExlbmd0aCk7XG4gICAgY2FjaGVzW290aEluZGV4XSA9ICFjb21wYXJhdG9yICYmIChpdGVyYXRlZSB8fCAobGVuZ3RoID49IDEyMCAmJiBhcnJheS5sZW5ndGggPj0gMTIwKSlcbiAgICAgID8gbmV3IFNldENhY2hlKG90aEluZGV4ICYmIGFycmF5KVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cbiAgYXJyYXkgPSBhcnJheXNbMF07XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBzZWVuID0gY2FjaGVzWzBdO1xuXG4gIG91dGVyOlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiByZXN1bHQubGVuZ3RoIDwgbWF4TGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICBpZiAoIShzZWVuXG4gICAgICAgICAgPyBjYWNoZUhhcyhzZWVuLCBjb21wdXRlZClcbiAgICAgICAgICA6IGluY2x1ZGVzKHJlc3VsdCwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgICkpIHtcbiAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoO1xuICAgICAgd2hpbGUgKC0tb3RoSW5kZXgpIHtcbiAgICAgICAgdmFyIGNhY2hlID0gY2FjaGVzW290aEluZGV4XTtcbiAgICAgICAgaWYgKCEoY2FjaGVcbiAgICAgICAgICAgICAgPyBjYWNoZUhhcyhjYWNoZSwgY29tcHV0ZWQpXG4gICAgICAgICAgICAgIDogaW5jbHVkZXMoYXJyYXlzW290aEluZGV4XSwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUludGVyc2VjdGlvbjtcbiIsInZhciBpc0FycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGFuIGVtcHR5IGFycmF5IGlmIGl0J3Mgbm90IGFuIGFycmF5IGxpa2Ugb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS1saWtlIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY2FzdEFycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpID8gdmFsdWUgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0QXJyYXlMaWtlT2JqZWN0O1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlSW50ZXJzZWN0aW9uID0gcmVxdWlyZSgnLi9fYmFzZUludGVyc2VjdGlvbicpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBjYXN0QXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9fY2FzdEFycmF5TGlrZU9iamVjdCcpLFxuICAgIGxhc3QgPSByZXF1aXJlKCcuL2xhc3QnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAqIHdoaWNoIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzXG4gKiBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3IgaXNcbiAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAqXG4gKiBfLmludGVyc2VjdGlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfV1cbiAqL1xudmFyIGludGVyc2VjdGlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyksXG4gICAgICBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuXG4gIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICBtYXBwZWQucG9wKCk7XG4gIH1cbiAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQsIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICA6IFtdO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gaW50ZXJzZWN0aW9uV2l0aDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBib29sZWFuIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQm9vbGVhbihudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYm9vbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNCb29sZWFuO1xuIiwidmFyIGlzRXF1YWwgPSByZXF1aXJlKCdsb2Rhc2gvaXNFcXVhbCcpXG52YXIgc29ydEJ5ID0gcmVxdWlyZSgnbG9kYXNoL3NvcnRCeScpXG52YXIgdW5pcSA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxJylcbnZhciB1bmlxV2l0aCA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxV2l0aCcpXG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCdsb2Rhc2gvZGVmYXVsdHMnKVxudmFyIGludGVyc2VjdGlvbldpdGggPSByZXF1aXJlKCdsb2Rhc2gvaW50ZXJzZWN0aW9uV2l0aCcpXG52YXIgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJ2xvZGFzaC9pc1BsYWluT2JqZWN0JylcbnZhciBpc0Jvb2xlYW4gPSByZXF1aXJlKCdsb2Rhc2gvaXNCb29sZWFuJylcblxudmFyIG5vcm1hbGl6ZUFycmF5ID0gdmFsID0+IEFycmF5LmlzQXJyYXkodmFsKVxuICA/IHZhbCA6IFt2YWxdXG52YXIgdW5kZWYgPSB2YWwgPT4gdmFsID09PSB1bmRlZmluZWRcbnZhciBrZXlzID0gb2JqID0+IGlzUGxhaW5PYmplY3Qob2JqKSB8fCBBcnJheS5pc0FycmF5KG9iaikgPyBPYmplY3Qua2V5cyhvYmopIDogW11cbnZhciBoYXMgPSAob2JqLCBrZXkpID0+IG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpXG52YXIgc3RyaW5nQXJyYXkgPSBhcnIgPT4gc29ydEJ5KHVuaXEoYXJyKSlcbnZhciB1bmRlZkVtcHR5ID0gdmFsID0+IHVuZGVmKHZhbCkgfHwgKEFycmF5LmlzQXJyYXkodmFsKSAmJiB2YWwubGVuZ3RoID09PSAwKVxudmFyIGtleVZhbEVxdWFsID0gKGEsIGIsIGtleSwgY29tcGFyZSkgPT4gYiAmJiBoYXMoYiwga2V5KSAmJiBhICYmIGhhcyhhLCBrZXkpICYmIGNvbXBhcmUoYVtrZXldLCBiW2tleV0pXG52YXIgdW5kZWZBbmRaZXJvID0gKGEsIGIpID0+ICh1bmRlZihhKSAmJiBiID09PSAwKSB8fCAodW5kZWYoYikgJiYgYSA9PT0gMCkgfHwgaXNFcXVhbChhLCBiKVxudmFyIGZhbHNlVW5kZWZpbmVkID0gKGEsIGIpID0+ICh1bmRlZihhKSAmJiBiID09PSBmYWxzZSkgfHwgKHVuZGVmKGIpICYmIGEgPT09IGZhbHNlKSB8fCBpc0VxdWFsKGEsIGIpXG52YXIgZW1wdHlTY2hlbWEgPSBzY2hlbWEgPT4gdW5kZWYoc2NoZW1hKSB8fCBpc0VxdWFsKHNjaGVtYSwge30pIHx8IHNjaGVtYSA9PT0gdHJ1ZVxudmFyIGVtcHR5T2JqVW5kZWYgPSBzY2hlbWEgPT4gdW5kZWYoc2NoZW1hKSB8fCBpc0VxdWFsKHNjaGVtYSwge30pXG52YXIgaXNTY2hlbWEgPSB2YWwgPT4gdW5kZWYodmFsKSB8fCBpc1BsYWluT2JqZWN0KHZhbCkgfHwgdmFsID09PSB0cnVlIHx8IHZhbCA9PT0gZmFsc2VcblxuZnVuY3Rpb24gdW5kZWZBcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKHVuZGVmRW1wdHkoYSkgJiYgdW5kZWZFbXB0eShiKSkge1xuICAgIHJldHVybiB0cnVlXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGlzRXF1YWwoc3RyaW5nQXJyYXkoYSksIHN0cmluZ0FycmF5KGIpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHVuc29ydGVkTm9ybWFsaXplZEFycmF5KGEsIGIpIHtcbiAgYSA9IG5vcm1hbGl6ZUFycmF5KGEpXG4gIGIgPSBub3JtYWxpemVBcnJheShiKVxuICByZXR1cm4gaXNFcXVhbChzdHJpbmdBcnJheShhKSwgc3RyaW5nQXJyYXkoYikpXG59XG5cbmZ1bmN0aW9uIHNjaGVtYUdyb3VwKGEsIGIsIGtleSwgY29tcGFyZSkge1xuICB2YXIgYWxsUHJvcHMgPSB1bmlxKGtleXMoYSkuY29uY2F0KGtleXMoYikpKVxuICBpZiAoZW1wdHlPYmpVbmRlZihhKSAmJiBlbXB0eU9ialVuZGVmKGIpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfSBlbHNlIGlmIChlbXB0eU9ialVuZGVmKGEpICYmIGtleXMoYikubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH0gZWxzZSBpZiAoZW1wdHlPYmpVbmRlZihiKSAmJiBrZXlzKGEpLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIGFsbFByb3BzLmV2ZXJ5KGZ1bmN0aW9uKGtleSkge1xuICAgIHZhciBhVmFsID0gYVtrZXldXG4gICAgdmFyIGJWYWwgPSBiW2tleV1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShhVmFsKSAmJiBBcnJheS5pc0FycmF5KGJWYWwpKSB7XG4gICAgICByZXR1cm4gaXNFcXVhbChzdHJpbmdBcnJheShhKSwgc3RyaW5nQXJyYXkoYikpXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFWYWwpICYmICFBcnJheS5pc0FycmF5KGJWYWwpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYlZhbCkgJiYgIUFycmF5LmlzQXJyYXkoYVZhbCkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4ga2V5VmFsRXF1YWwoYSwgYiwga2V5LCBjb21wYXJlKVxuICB9KVxufVxuXG5mdW5jdGlvbiBpdGVtcyhhLCBiLCBrZXksIGNvbXBhcmUpIHtcbiAgaWYgKGlzUGxhaW5PYmplY3QoYSkgJiYgaXNQbGFpbk9iamVjdChiKSkge1xuICAgIHJldHVybiBjb21wYXJlKGEsIGIpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBBcnJheS5pc0FycmF5KGIpKSB7XG4gICAgcmV0dXJuIHNjaGVtYUdyb3VwKGEsIGIsIGtleSwgY29tcGFyZSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaXNFcXVhbChhLCBiKVxuICB9XG59XG5cbmZ1bmN0aW9uIHVuc29ydGVkQXJyYXkoYSwgYiwga2V5LCBjb21wYXJlKSB7XG4gIHZhciB1bmlxdWVBID0gdW5pcVdpdGgoYSwgY29tcGFyZSlcbiAgdmFyIHVuaXF1ZUIgPSB1bmlxV2l0aChiLCBjb21wYXJlKVxuICB2YXIgaW50ZXIgPSBpbnRlcnNlY3Rpb25XaXRoKHVuaXF1ZUEsIHVuaXF1ZUIsIGNvbXBhcmUpXG4gIHJldHVybiBpbnRlci5sZW5ndGggPT09IE1hdGgubWF4KHVuaXF1ZUEubGVuZ3RoLCB1bmlxdWVCLmxlbmd0aClcbn1cblxudmFyIGNvbXBhcmVycyA9IHtcbiAgdGl0bGU6IGlzRXF1YWwsXG4gIHVuaXF1ZUl0ZW1zOiBmYWxzZVVuZGVmaW5lZCxcbiAgbWluTGVuZ3RoOiB1bmRlZkFuZFplcm8sXG4gIG1pbkl0ZW1zOiB1bmRlZkFuZFplcm8sXG4gIG1pblByb3BlcnRpZXM6IHVuZGVmQW5kWmVybyxcbiAgcmVxdWlyZWQ6IHVuZGVmQXJyYXlFcXVhbCxcbiAgZW51bTogdW5kZWZBcnJheUVxdWFsLFxuICB0eXBlOiB1bnNvcnRlZE5vcm1hbGl6ZWRBcnJheSxcbiAgaXRlbXM6IGl0ZW1zLFxuICBhbnlPZjogdW5zb3J0ZWRBcnJheSxcbiAgYWxsT2Y6IHVuc29ydGVkQXJyYXksXG4gIG9uZU9mOiB1bnNvcnRlZEFycmF5LFxuICBwcm9wZXJ0aWVzOiBzY2hlbWFHcm91cCxcbiAgcGF0dGVyblByb3BlcnRpZXM6IHNjaGVtYUdyb3VwLFxuICBkZXBlbmRlbmNpZXM6IHNjaGVtYUdyb3VwXG59XG5cbnZhciBhY2NlcHRzVW5kZWZpbmVkID0gW1xuICAncHJvcGVydGllcycsXG4gICdwYXR0ZXJuUHJvcGVydGllcycsXG4gICdkZXBlbmRlbmNpZXMnLFxuICAndW5pcXVlSXRlbXMnLFxuICAnbWluTGVuZ3RoJyxcbiAgJ21pbkl0ZW1zJyxcbiAgJ21pblByb3BlcnRpZXMnLFxuICAncmVxdWlyZWQnXG5dXG5cbnZhciBzY2hlbWFQcm9wcyA9IFsnYWRkaXRpb25hbFByb3BlcnRpZXMnLCAnYWRkaXRpb25hbEl0ZW1zJywgJ2NvbnRhaW5zJywgJ3Byb3BlcnR5TmFtZXMnLCAnbm90J11cblxuZnVuY3Rpb24gY29tcGFyZShhLCBiLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBkZWZhdWx0cyhvcHRpb25zLCB7XG4gICAgaWdub3JlOiBbXVxuICB9KVxuXG4gIGlmIChlbXB0eVNjaGVtYShhKSAmJiBlbXB0eVNjaGVtYShiKSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAoIWlzU2NoZW1hKGEpIHx8ICFpc1NjaGVtYShiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIG9mIHRoZSB2YWx1ZXMgYXJlIG5vdCBhIEpTT04gc2NoZW1hLicpXG4gIH1cbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKGlzQm9vbGVhbihhKSAmJiBpc0Jvb2xlYW4oYikpIHtcbiAgICByZXR1cm4gYSA9PT0gYlxuICB9XG5cbiAgaWYgKChhID09PSB1bmRlZmluZWQgJiYgYiA9PT0gZmFsc2UpIHx8IChiID09PSB1bmRlZmluZWQgJiYgYSA9PT0gZmFsc2UpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAoKHVuZGVmKGEpICYmICF1bmRlZihiKSkgfHwgKCF1bmRlZihhKSAmJiB1bmRlZihiKSkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHZhciBhbGxLZXlzID0gdW5pcShPYmplY3Qua2V5cyhhKS5jb25jYXQoT2JqZWN0LmtleXMoYikpKVxuXG4gIGlmIChvcHRpb25zLmlnbm9yZS5sZW5ndGgpIHtcbiAgICBhbGxLZXlzID0gYWxsS2V5cy5maWx0ZXIoayA9PiBvcHRpb25zLmlnbm9yZS5pbmRleE9mKGspID09PSAtMSlcbiAgfVxuXG4gIGlmICghYWxsS2V5cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZnVuY3Rpb24gaW5uZXJDb21wYXJlKGEsIGIpIHtcbiAgICByZXR1cm4gY29tcGFyZShhLCBiLCBvcHRpb25zKVxuICB9XG5cbiAgcmV0dXJuIGFsbEtleXMuZXZlcnkoZnVuY3Rpb24oa2V5KSB7XG4gICAgdmFyIGFWYWx1ZSA9IGFba2V5XVxuICAgIHZhciBiVmFsdWUgPSBiW2tleV1cblxuICAgIGlmIChzY2hlbWFQcm9wcy5pbmRleE9mKGtleSkgIT09IC0xKSB7XG4gICAgICByZXR1cm4gY29tcGFyZShhVmFsdWUsIGJWYWx1ZSwgb3B0aW9ucylcbiAgICB9XG5cbiAgICB2YXIgY29tcGFyZXIgPSBjb21wYXJlcnNba2V5XVxuICAgIGlmICghY29tcGFyZXIpIHtcbiAgICAgIGNvbXBhcmVyID0gaXNFcXVhbFxuICAgIH1cblxuICAgIC8vIGRvIHNpbXBsZSBsb2Rhc2ggY2hlY2sgZmlyc3RcbiAgICBpZiAoaXNFcXVhbChhVmFsdWUsIGJWYWx1ZSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgaWYgKGFjY2VwdHNVbmRlZmluZWQuaW5kZXhPZihrZXkpID09PSAtMSkge1xuICAgICAgaWYgKCghaGFzKGEsIGtleSkgJiYgaGFzKGIsIGtleSkpIHx8IChoYXMoYSwga2V5KSAmJiAhaGFzKGIsIGtleSkpKSB7XG4gICAgICAgIHJldHVybiBhVmFsdWUgPT09IGJWYWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXN1bHQgPSBjb21wYXJlcihhVmFsdWUsIGJWYWx1ZSwga2V5LCBpbm5lckNvbXBhcmUpXG4gICAgaWYgKCFpc0Jvb2xlYW4ocmVzdWx0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21wYXJlciBtdXN0IHJldHVybiB0cnVlIG9yIGZhbHNlJylcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4qIEZVTkNUSU9OOiBpc0FycmF5KCB2YWx1ZSApXG4qXHRWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhbiBhcnJheS5cbipcbiogQHBhcmFtIHsqfSB2YWx1ZSAtIHZhbHVlIHRvIGJlIHZhbGlkYXRlZFxuKiBAcmV0dXJucyB7Qm9vbGVhbn0gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdmFsdWUgaXMgYW4gYXJyYXlcbiovXG5mdW5jdGlvbiBpc0FycmF5KCB2YWx1ZSApIHtcblx0cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCggdmFsdWUgKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn0gLy8gZW5kIEZVTkNUSU9OIGlzQXJyYXkoKVxuXG4vLyBFWFBPUlRTIC8vXG5cbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBpc0FycmF5O1xuIiwiLyoqXG4qXG4qXHRWQUxJREFURTogbnVtYmVyXG4qXG4qXG4qXHRERVNDUklQVElPTjpcbipcdFx0LSBWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhIG51bWJlci5cbipcbipcbipcdE5PVEVTOlxuKlx0XHRbMV1cbipcbipcbipcdFRPRE86XG4qXHRcdFsxXVxuKlxuKlxuKlx0TElDRU5TRTpcbipcdFx0TUlUXG4qXG4qXHRDb3B5cmlnaHQgKGMpIDIwMTQuIEF0aGFuIFJlaW5lcy5cbipcbipcbipcdEFVVEhPUjpcbipcdFx0QXRoYW4gUmVpbmVzLiBrZ3J5dGVAZ21haWwuY29tLiAyMDE0LlxuKlxuKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiogRlVOQ1RJT046IGlzTnVtYmVyKCB2YWx1ZSApXG4qXHRWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhIG51bWJlci5cbipcbiogQHBhcmFtIHsqfSB2YWx1ZSAtIHZhbHVlIHRvIGJlIHZhbGlkYXRlZFxuKiBAcmV0dXJucyB7Qm9vbGVhbn0gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdmFsdWUgaXMgYSBudW1iZXJcbiovXG5mdW5jdGlvbiBpc051bWJlciggdmFsdWUgKSB7XG5cdHJldHVybiAoIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKCB2YWx1ZSApID09PSAnW29iamVjdCBOdW1iZXJdJyApICYmIHZhbHVlLnZhbHVlT2YoKSA9PT0gdmFsdWUudmFsdWVPZigpO1xufSAvLyBlbmQgRlVOQ1RJT04gaXNOdW1iZXIoKVxuXG5cbi8vIEVYUE9SVFMgLy9cblxubW9kdWxlLmV4cG9ydHMgPSBpc051bWJlcjtcbiIsIi8qKlxuKlxuKlx0VkFMSURBVEU6IGludGVnZXJcbipcbipcbipcdERFU0NSSVBUSU9OOlxuKlx0XHQtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGFuIGludGVnZXIuXG4qXG4qXG4qXHROT1RFUzpcbipcdFx0WzFdXG4qXG4qXG4qXHRUT0RPOlxuKlx0XHRbMV1cbipcbipcbipcdExJQ0VOU0U6XG4qXHRcdE1JVFxuKlxuKlx0Q29weXJpZ2h0IChjKSAyMDE0LiBBdGhhbiBSZWluZXMuXG4qXG4qXG4qXHRBVVRIT1I6XG4qXHRcdEF0aGFuIFJlaW5lcy4ga2dyeXRlQGdtYWlsLmNvbS4gMjAxNC5cbipcbiovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gTU9EVUxFUyAvL1xuXG52YXIgaXNOdW1iZXIgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tbnVtYmVyJyApO1xuXG5cbi8vIElTSU5URUdFUiAvL1xuXG4vKipcbiogRlVOQ1RJT046IGlzSW50ZWdlciggdmFsdWUgKVxuKlx0VmFsaWRhdGVzIGlmIGEgdmFsdWUgaXMgYW4gaW50ZWdlci5cbipcbiogQHBhcmFtIHtOdW1iZXJ9IHZhbHVlIC0gdmFsdWUgdG8gYmUgdmFsaWRhdGVkXG4qIEByZXR1cm5zIHtCb29sZWFufSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB2YWx1ZSBpcyBhbiBpbnRlZ2VyXG4qL1xuZnVuY3Rpb24gaXNJbnRlZ2VyKCB2YWx1ZSApIHtcblx0cmV0dXJuIGlzTnVtYmVyKCB2YWx1ZSApICYmIHZhbHVlJTEgPT09IDA7XG59IC8vIGVuZCBGVU5DVElPTiBpc0ludGVnZXIoKVxuXG5cbi8vIEVYUE9SVFMgLy9cblxubW9kdWxlLmV4cG9ydHMgPSBpc0ludGVnZXI7XG4iLCIvKipcbipcbipcdFZBTElEQVRFOiBpbnRlZ2VyLWFycmF5XG4qXG4qXG4qXHRERVNDUklQVElPTjpcbipcdFx0LSBWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhbiBpbnRlZ2VyIGFycmF5LlxuKlxuKlxuKlx0Tk9URVM6XG4qXHRcdFsxXVxuKlxuKlxuKlx0VE9ETzpcbipcdFx0WzFdXG4qXG4qXG4qXHRMSUNFTlNFOlxuKlx0XHRNSVRcbipcbipcdENvcHlyaWdodCAoYykgMjAxNS4gQXRoYW4gUmVpbmVzLlxuKlxuKlxuKlx0QVVUSE9SOlxuKlx0XHRBdGhhbiBSZWluZXMuIGtncnl0ZUBnbWFpbC5jb20uIDIwMTUuXG4qXG4qL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8vIE1PRFVMRVMgLy9cblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tYXJyYXknICksXG5cdGlzSW50ZWdlciA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1pbnRlZ2VyJyApO1xuXG5cbi8vIElTIElOVEVHRVIgQVJSQVkgLy9cblxuLyoqXG4qIEZVTkNUSU9OOiBpc0ludGVnZXJBcnJheSggdmFsdWUgKVxuKlx0VmFsaWRhdGVzIGlmIGEgdmFsdWUgaXMgYW4gaW50ZWdlciBhcnJheS5cbipcbiogQHBhcmFtIHsqfSB2YWx1ZSAtIHZhbHVlIHRvIGJlIHZhbGlkYXRlZFxuKiBAcmV0dXJucyB7Qm9vbGVhbn0gYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGEgdmFsdWUgaXMgYW4gaW50ZWdlciBhcnJheVxuKi9cbmZ1bmN0aW9uIGlzSW50ZWdlckFycmF5KCB2YWx1ZSApIHtcblx0dmFyIGxlbjtcblx0aWYgKCAhaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0bGVuID0gdmFsdWUubGVuZ3RoO1xuXHRpZiAoICFsZW4gKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGZvciAoIHZhciBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggIWlzSW50ZWdlciggdmFsdWVbaV0gKSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHRydWU7XG59IC8vIGVuZCBGVU5DVElPTiBpc0ludGVnZXJBcnJheSgpXG5cblxuLy8gRVhQT1JUUyAvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW50ZWdlckFycmF5O1xuIiwiLyoqXG4qXG4qXHRWQUxJREFURTogZnVuY3Rpb25cbipcbipcbipcdERFU0NSSVBUSU9OOlxuKlx0XHQtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGEgZnVuY3Rpb24uXG4qXG4qXG4qXHROT1RFUzpcbipcdFx0WzFdXG4qXG4qXG4qXHRUT0RPOlxuKlx0XHRbMV1cbipcbipcbipcdExJQ0VOU0U6XG4qXHRcdE1JVFxuKlxuKlx0Q29weXJpZ2h0IChjKSAyMDE0LiBBdGhhbiBSZWluZXMuXG4qXG4qXG4qXHRBVVRIT1I6XG4qXHRcdEF0aGFuIFJlaW5lcy4ga2dyeXRlQGdtYWlsLmNvbS4gMjAxNC5cbipcbiovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4qIEZVTkNUSU9OOiBpc0Z1bmN0aW9uKCB2YWx1ZSApXG4qXHRWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhIGZ1bmN0aW9uLlxuKlxuKiBAcGFyYW0geyp9IHZhbHVlIC0gdmFsdWUgdG8gYmUgdmFsaWRhdGVkXG4qIEByZXR1cm5zIHtCb29sZWFufSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB2YWx1ZSBpcyBhIGZ1bmN0aW9uXG4qL1xuZnVuY3Rpb24gaXNGdW5jdGlvbiggdmFsdWUgKSB7XG5cdHJldHVybiAoIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyApO1xufSAvLyBlbmQgRlVOQ1RJT04gaXNGdW5jdGlvbigpXG5cblxuLy8gRVhQT1JUUyAvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRnVuY3Rpb247XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIE1PRFVMRVMgLy9cblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tYXJyYXknICksXG5cdGlzSW50ZWdlckFycmF5ID0gcmVxdWlyZSggJ3ZhbGlkYXRlLmlvLWludGVnZXItYXJyYXknICksXG5cdGlzRnVuY3Rpb24gPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tZnVuY3Rpb24nICk7XG5cblxuLy8gVkFSSUFCTEVTIC8vXG5cbnZhciBNQVhJTlQgPSBNYXRoLnBvdyggMiwgMzEgKSAtIDE7XG5cblxuLy8gRlVOQ1RJT05TIC8vXG5cbi8qKlxuKiBGVU5DVElPTjogZ2NkKCBhLCBiIClcbipcdENvbXB1dGVzIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0d28gaW50ZWdlcnMgYGFgIGFuZCBgYmAsIHVzaW5nIHRoZSBiaW5hcnkgR0NEIGFsZ29yaXRobS5cbipcbiogQHBhcmFtIHtOdW1iZXJ9IGEgLSBpbnRlZ2VyXG4qIEBwYXJhbSB7TnVtYmVyfSBiIC0gaW50ZWdlclxuKiBAcmV0dXJucyB7TnVtYmVyfSBncmVhdGVzdCBjb21tb24gZGl2aXNvclxuKi9cbmZ1bmN0aW9uIGdjZCggYSwgYiApIHtcblx0dmFyIGsgPSAxLFxuXHRcdHQ7XG5cdC8vIFNpbXBsZSBjYXNlczpcblx0aWYgKCBhID09PSAwICkge1xuXHRcdHJldHVybiBiO1xuXHR9XG5cdGlmICggYiA9PT0gMCApIHtcblx0XHRyZXR1cm4gYTtcblx0fVxuXHQvLyBSZWR1Y2UgYGFgIGFuZC9vciBgYmAgdG8gb2RkIG51bWJlcnMgYW5kIGtlZXAgdHJhY2sgb2YgdGhlIGdyZWF0ZXN0IHBvd2VyIG9mIDIgZGl2aWRpbmcgYm90aCBgYWAgYW5kIGBiYC4uLlxuXHR3aGlsZSAoIGElMiA9PT0gMCAmJiBiJTIgPT09IDAgKSB7XG5cdFx0YSA9IGEgLyAyOyAvLyByaWdodCBzaGlmdFxuXHRcdGIgPSBiIC8gMjsgLy8gcmlnaHQgc2hpZnRcblx0XHRrID0gayAqIDI7IC8vIGxlZnQgc2hpZnRcblx0fVxuXHQvLyBSZWR1Y2UgYGFgIHRvIGFuIG9kZCBudW1iZXIuLi5cblx0d2hpbGUgKCBhJTIgPT09IDAgKSB7XG5cdFx0YSA9IGEgLyAyOyAvLyByaWdodCBzaGlmdFxuXHR9XG5cdC8vIEhlbmNlZm9ydGgsIGBhYCBpcyBhbHdheXMgb2RkLi4uXG5cdHdoaWxlICggYiApIHtcblx0XHQvLyBSZW1vdmUgYWxsIGZhY3RvcnMgb2YgMiBpbiBgYmAsIGFzIHRoZXkgYXJlIG5vdCBjb21tb24uLi5cblx0XHR3aGlsZSAoIGIlMiA9PT0gMCApIHtcblx0XHRcdGIgPSBiIC8gMjsgLy8gcmlnaHQgc2hpZnRcblx0XHR9XG5cdFx0Ly8gYGFgIGFuZCBgYmAgYXJlIGJvdGggb2RkLiBTd2FwIHZhbHVlcyBzdWNoIHRoYXQgYGJgIGlzIHRoZSBsYXJnZXIgb2YgdGhlIHR3byB2YWx1ZXMsIGFuZCB0aGVuIHNldCBgYmAgdG8gdGhlIGRpZmZlcmVuY2UgKHdoaWNoIGlzIGV2ZW4pLi4uXG5cdFx0aWYgKCBhID4gYiApIHtcblx0XHRcdHQgPSBiO1xuXHRcdFx0YiA9IGE7XG5cdFx0XHRhID0gdDtcblx0XHR9XG5cdFx0YiA9IGIgLSBhOyAvLyBiPTAgaWZmIGI9YVxuXHR9XG5cdC8vIFJlc3RvcmUgY29tbW9uIGZhY3RvcnMgb2YgMi4uLlxuXHRyZXR1cm4gayAqIGE7XG59IC8vIGVuZCBGVU5DVElPTiBnY2QoKVxuXG4vKipcbiogRlVOQ1RJT046IGJpdHdpc2UoIGEsIGIgKVxuKlx0Q29tcHV0ZXMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIG9mIHR3byBpbnRlZ2VycyBgYWAgYW5kIGBiYCwgdXNpbmcgdGhlIGJpbmFyeSBHQ0QgYWxnb3JpdGhtIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMuXG4qXG4qIEBwYXJhbSB7TnVtYmVyfSBhIC0gc2FmZSBpbnRlZ2VyXG4qIEBwYXJhbSB7TnVtYmVyfSBiIC0gc2FmZSBpbnRlZ2VyXG4qIEByZXR1cm5zIHtOdW1iZXJ9IGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yXG4qL1xuZnVuY3Rpb24gYml0d2lzZSggYSwgYiApIHtcblx0dmFyIGsgPSAwLFxuXHRcdHQ7XG5cdC8vIFNpbXBsZSBjYXNlczpcblx0aWYgKCBhID09PSAwICkge1xuXHRcdHJldHVybiBiO1xuXHR9XG5cdGlmICggYiA9PT0gMCApIHtcblx0XHRyZXR1cm4gYTtcblx0fVxuXHQvLyBSZWR1Y2UgYGFgIGFuZC9vciBgYmAgdG8gb2RkIG51bWJlcnMgYW5kIGtlZXAgdHJhY2sgb2YgdGhlIGdyZWF0ZXN0IHBvd2VyIG9mIDIgZGl2aWRpbmcgYm90aCBgYWAgYW5kIGBiYC4uLlxuXHR3aGlsZSAoIChhICYgMSkgPT09IDAgJiYgKGIgJiAxKSA9PT0gMCApIHtcblx0XHRhID4+Pj0gMTsgLy8gcmlnaHQgc2hpZnRcblx0XHRiID4+Pj0gMTsgLy8gcmlnaHQgc2hpZnRcblx0XHRrKys7XG5cdH1cblx0Ly8gUmVkdWNlIGBhYCB0byBhbiBvZGQgbnVtYmVyLi4uXG5cdHdoaWxlICggKGEgJiAxKSA9PT0gMCApIHtcblx0XHRhID4+Pj0gMTsgLy8gcmlnaHQgc2hpZnRcblx0fVxuXHQvLyBIZW5jZWZvcnRoLCBgYWAgaXMgYWx3YXlzIG9kZC4uLlxuXHR3aGlsZSAoIGIgKSB7XG5cdFx0Ly8gUmVtb3ZlIGFsbCBmYWN0b3JzIG9mIDIgaW4gYGJgLCBhcyB0aGV5IGFyZSBub3QgY29tbW9uLi4uXG5cdFx0d2hpbGUgKCAoYiAmIDEpID09PSAwICkge1xuXHRcdFx0YiA+Pj49IDE7IC8vIHJpZ2h0IHNoaWZ0XG5cdFx0fVxuXHRcdC8vIGBhYCBhbmQgYGJgIGFyZSBib3RoIG9kZC4gU3dhcCB2YWx1ZXMgc3VjaCB0aGF0IGBiYCBpcyB0aGUgbGFyZ2VyIG9mIHRoZSB0d28gdmFsdWVzLCBhbmQgdGhlbiBzZXQgYGJgIHRvIHRoZSBkaWZmZXJlbmNlICh3aGljaCBpcyBldmVuKS4uLlxuXHRcdGlmICggYSA+IGIgKSB7XG5cdFx0XHR0ID0gYjtcblx0XHRcdGIgPSBhO1xuXHRcdFx0YSA9IHQ7XG5cdFx0fVxuXHRcdGIgPSBiIC0gYTsgLy8gYj0wIGlmZiBiPWFcblx0fVxuXHQvLyBSZXN0b3JlIGNvbW1vbiBmYWN0b3JzIG9mIDIuLi5cblx0cmV0dXJuIGEgPDwgaztcbn0gLy8gZW5kIEZVTkNUSU9OIGJpdHdpc2UoKVxuXG5cbi8vIEdSRUFURVNUIENPTU1PTiBESVZJU09SIC8vXG5cbi8qKlxuKiBGVU5DVElPTjogY29tcHV0ZSggYXJyWywgY2xia10gKVxuKlx0Q29tcHV0ZXMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yLlxuKlxuKiBAcGFyYW0ge051bWJlcltdfE51bWJlcn0gYXJyIC0gaW5wdXQgYXJyYXkgb2YgaW50ZWdlcnNcbiogQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFtjbGJrXSAtIGFjY2Vzc29yIGZ1bmN0aW9uIGZvciBhY2Nlc3NpbmcgYXJyYXkgdmFsdWVzXG4qIEByZXR1cm5zIHtOdW1iZXJ8TnVsbH0gZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb3IgbnVsbFxuKi9cbmZ1bmN0aW9uIGNvbXB1dGUoKSB7XG5cdHZhciBuYXJncyA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0YXJncyxcblx0XHRjbGJrLFxuXHRcdGFycixcblx0XHRsZW4sXG5cdFx0YSwgYixcblx0XHRpO1xuXG5cdC8vIENvcHkgdGhlIGlucHV0IGFyZ3VtZW50cyB0byBhbiBhcnJheS4uLlxuXHRhcmdzID0gbmV3IEFycmF5KCBuYXJncyApO1xuXHRmb3IgKCBpID0gMDsgaSA8IG5hcmdzOyBpKysgKSB7XG5cdFx0YXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07XG5cdH1cblx0Ly8gSGF2ZSB3ZSBiZWVuIHByb3ZpZGVkIHdpdGggaW50ZWdlciBhcmd1bWVudHM/XG5cdGlmICggaXNJbnRlZ2VyQXJyYXkoIGFyZ3MgKSApIHtcblx0XHRpZiAoIG5hcmdzID09PSAyICkge1xuXHRcdFx0YSA9IGFyZ3NbIDAgXTtcblx0XHRcdGIgPSBhcmdzWyAxIF07XG5cdFx0XHRpZiAoIGEgPCAwICkge1xuXHRcdFx0XHRhID0gLWE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGIgPCAwICkge1xuXHRcdFx0XHRiID0gLWI7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGEgPD0gTUFYSU5UICYmIGIgPD0gTUFYSU5UICkge1xuXHRcdFx0XHRyZXR1cm4gYml0d2lzZSggYSwgYiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGdjZCggYSwgYiApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRhcnIgPSBhcmdzO1xuXHR9XG5cdC8vIElmIG5vdCBpbnRlZ2VycywgZW5zdXJlIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBhcnJheS4uLlxuXHRlbHNlIGlmICggIWlzQXJyYXkoIGFyZ3NbIDAgXSApICkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoICdnY2QoKTo6aW52YWxpZCBpbnB1dCBhcmd1bWVudC4gTXVzdCBwcm92aWRlIGFuIGFycmF5IG9mIGludGVnZXJzLiBWYWx1ZTogYCcgKyBhcmdzWyAwIF0gKyAnYC4nICk7XG5cdH1cblx0Ly8gSGF2ZSB3ZSBiZWVuIHByb3ZpZGVkIHdpdGggbW9yZSB0aGFuIG9uZSBhcmd1bWVudD8gSWYgc28sIGVuc3VyZSB0aGF0IHRoZSBhY2Nlc3NvciBhcmd1bWVudCBpcyBhIGZ1bmN0aW9uLi4uXG5cdGVsc2UgaWYgKCBuYXJncyA+IDEgKSB7XG5cdFx0YXJyID0gYXJnc1sgMCBdO1xuXHRcdGNsYmsgPSBhcmdzWyAxIF07XG5cdFx0aWYgKCAhaXNGdW5jdGlvbiggY2xiayApICkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2djZCgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBBY2Nlc3NvciBtdXN0IGJlIGEgZnVuY3Rpb24uIFZhbHVlOiBgJyArIGNsYmsgKyAnYC4nICk7XG5cdFx0fVxuXHR9XG5cdC8vIFdlIGhhdmUgYmVlbiBwcm92aWRlZCBhbiBhcnJheS4uLlxuXHRlbHNlIHtcblx0XHRhcnIgPSBhcmdzWyAwIF07XG5cdH1cblx0bGVuID0gYXJyLmxlbmd0aDtcblxuXHQvLyBDaGVjayBpZiBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIHZhbHVlcyBoYXZlIGJlZW4gcHJvdmlkZWQuLi5cblx0aWYgKCBsZW4gPCAyICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdC8vIElmIGFuIGFjY2Vzc29yIGlzIHByb3ZpZGVkLCBleHRyYWN0IHRoZSBhcnJheSB2YWx1ZXMuLi5cblx0aWYgKCBjbGJrICkge1xuXHRcdGEgPSBuZXcgQXJyYXkoIGxlbiApO1xuXHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRhWyBpIF0gPSBjbGJrKCBhcnJbIGkgXSwgaSApO1xuXHRcdH1cblx0XHRhcnIgPSBhO1xuXHR9XG5cdC8vIEdpdmVuIGFuIGlucHV0IGFycmF5LCBlbnN1cmUgYWxsIGFycmF5IHZhbHVlcyBhcmUgaW50ZWdlcnMuLi5cblx0aWYgKCBuYXJncyA8IDMgKSB7XG5cdFx0aWYgKCAhaXNJbnRlZ2VyQXJyYXkoIGFyciApICkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2djZCgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBBY2Nlc3NlZCBhcnJheSB2YWx1ZXMgbXVzdCBiZSBpbnRlZ2Vycy4gVmFsdWU6IGAnICsgYXJyICsgJ2AuJyApO1xuXHRcdH1cblx0fVxuXHQvLyBDb252ZXJ0IGFueSBuZWdhdGl2ZSBpbnRlZ2VycyB0byBwb3NpdGl2ZSBpbnRlZ2Vycy4uLlxuXHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGEgPSBhcnJbIGkgXTtcblx0XHRpZiAoIGEgPCAwICkge1xuXHRcdFx0YXJyWyBpIF0gPSAtYTtcblx0XHR9XG5cdH1cblx0Ly8gRXhwbG9pdCB0aGUgZmFjdCB0aGF0IHRoZSBnY2QgaXMgYW4gYXNzb2NpYXRpdmUgZnVuY3Rpb24uLi5cblx0YSA9IGFyclsgMCBdO1xuXHRmb3IgKCBpID0gMTsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGIgPSBhcnJbIGkgXTtcblx0XHRpZiAoIGIgPD0gTUFYSU5UICYmIGEgPD0gTUFYSU5UICkge1xuXHRcdFx0YSA9IGJpdHdpc2UoIGEsIGIgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YSA9IGdjZCggYSwgYiApO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYTtcbn0gLy8gZW5kIEZVTkNUSU9OIGNvbXB1dGUoKVxuXG5cbi8vIEVYUE9SVFMgLy9cblxubW9kdWxlLmV4cG9ydHMgPSBjb21wdXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBNT0RVTEVTIC8vXG5cbnZhciBnY2QgPSByZXF1aXJlKCAnY29tcHV0ZS1nY2QnICksXG5cdGlzQXJyYXkgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tYXJyYXknICksXG5cdGlzSW50ZWdlckFycmF5ID0gcmVxdWlyZSggJ3ZhbGlkYXRlLmlvLWludGVnZXItYXJyYXknICksXG5cdGlzRnVuY3Rpb24gPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tZnVuY3Rpb24nICk7XG5cblxuLy8gTEVBU1QgQ09NTU9OIE1VTFRJUExFIC8vXG5cbi8qKlxuKiBGVU5DVElPTjogbGNtKCBhcnJbLCBjbGJrXSApXG4qXHRDb21wdXRlcyB0aGUgbGVhc3QgY29tbW9uIG11bHRpcGxlIChsY20pLlxuKlxuKiBAcGFyYW0ge051bWJlcltdfE51bWJlcn0gYXJyIC0gaW5wdXQgYXJyYXkgb2YgaW50ZWdlcnNcbiogQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFthY2Nlc3Nvcl0gLSBhY2Nlc3NvciBmdW5jdGlvbiBmb3IgYWNjZXNzaW5nIGFycmF5IHZhbHVlc1xuKiBAcmV0dXJucyB7TnVtYmVyfE51bGx9IGxlYXN0IGNvbW1vbiBtdWx0aXBsZSBvciBudWxsXG4qL1xuZnVuY3Rpb24gbGNtKCkge1xuXHR2YXIgbmFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoLFxuXHRcdGFyZ3MsXG5cdFx0Y2xiayxcblx0XHRhcnIsXG5cdFx0bGVuLFxuXHRcdGEsIGIsXG5cdFx0aTtcblxuXHQvLyBDb3B5IHRoZSBpbnB1dCBhcmd1bWVudHMgdG8gYW4gYXJyYXkuLi5cblx0YXJncyA9IG5ldyBBcnJheSggbmFyZ3MgKTtcblx0Zm9yICggaSA9IDA7IGkgPCBuYXJnczsgaSsrICkge1xuXHRcdGFyZ3NbIGkgXSA9IGFyZ3VtZW50c1sgaSBdO1xuXHR9XG5cdC8vIEhhdmUgd2UgYmVlbiBwcm92aWRlZCB3aXRoIGludGVnZXIgYXJndW1lbnRzP1xuXHRpZiAoIGlzSW50ZWdlckFycmF5KCBhcmdzICkgKSB7XG5cdFx0aWYgKCBuYXJncyA9PT0gMiApIHtcblx0XHRcdGEgPSBhcmdzWyAwIF07XG5cdFx0XHRiID0gYXJnc1sgMSBdO1xuXHRcdFx0aWYgKCBhIDwgMCApIHtcblx0XHRcdFx0YSA9IC1hO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBiIDwgMCApIHtcblx0XHRcdFx0YiA9IC1iO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBhID09PSAwIHx8IGIgPT09IDAgKSB7XG5cdFx0XHRcdHJldHVybiAwO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuICggYS9nY2QoYSxiKSApICogYjtcblx0XHR9XG5cdFx0YXJyID0gYXJncztcblx0fVxuXHQvLyBJZiBub3QgaW50ZWdlcnMsIGVuc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBhcnJheS4uLlxuXHRlbHNlIGlmICggIWlzQXJyYXkoIGFyZ3NbIDAgXSApICkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoICdsY20oKTo6aW52YWxpZCBpbnB1dCBhcmd1bWVudC4gTXVzdCBwcm92aWRlIGFuIGFycmF5IG9mIGludGVnZXJzLiBWYWx1ZTogYCcgKyBhcmdzWyAwIF0gKyAnYC4nICk7XG5cdH1cblx0Ly8gSGF2ZSB3ZSBiZWVuIHByb3ZpZGVkIHdpdGggbW9yZSB0aGFuIG9uZSBhcmd1bWVudD8gSWYgc28sIGVuc3VyZSB0aGF0IHRoZSBhY2Nlc3NvciBhcmd1bWVudCBpcyBhIGZ1bmN0aW9uLi4uXG5cdGVsc2UgaWYgKCBuYXJncyA+IDEgKSB7XG5cdFx0YXJyID0gYXJnc1sgMCBdO1xuXHRcdGNsYmsgPSBhcmdzWyAxIF07XG5cdFx0aWYgKCAhaXNGdW5jdGlvbiggY2xiayApICkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2xjbSgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBBY2Nlc3NvciBtdXN0IGJlIGEgZnVuY3Rpb24uIFZhbHVlOiBgJyArIGNsYmsgKyAnYC4nICk7XG5cdFx0fVxuXHR9XG5cdC8vIFdlIGhhdmUgYmVlbiBwcm92aWRlZCBhbiBhcnJheS4uLlxuXHRlbHNlIHtcblx0XHRhcnIgPSBhcmdzWyAwIF07XG5cdH1cblx0bGVuID0gYXJyLmxlbmd0aDtcblxuXHQvLyBDaGVjayBpZiBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIHZhbHVlcyBoYXZlIGJlZW4gcHJvdmlkZWQuLi5cblx0aWYgKCBsZW4gPCAyICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdC8vIElmIGFuIGFjY2Vzc29yIGlzIHByb3ZpZGVkLCBleHRyYWN0IHRoZSBhcnJheSB2YWx1ZXMuLi5cblx0aWYgKCBjbGJrICkge1xuXHRcdGEgPSBuZXcgQXJyYXkoIGxlbiApO1xuXHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRhWyBpIF0gPSBjbGJrKCBhcnJbIGkgXSwgaSApO1xuXHRcdH1cblx0XHRhcnIgPSBhO1xuXHR9XG5cdC8vIEdpdmVuIGFuIGlucHV0IGFycmF5LCBlbnN1cmUgYWxsIGFycmF5IHZhbHVlcyBhcmUgaW50ZWdlcnMuLi5cblx0aWYgKCBuYXJncyA8IDMgKSB7XG5cdFx0aWYgKCAhaXNJbnRlZ2VyQXJyYXkoIGFyciApICkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2xjbSgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBBY2Nlc3NlZCBhcnJheSB2YWx1ZXMgbXVzdCBiZSBpbnRlZ2Vycy4gVmFsdWU6IGAnICsgYXJyICsgJ2AuJyApO1xuXHRcdH1cblx0fVxuXHQvLyBDb252ZXJ0IGFueSBuZWdhdGl2ZSBpbnRlZ2VycyB0byBwb3NpdGl2ZSBpbnRlZ2Vycy4uLlxuXHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGEgPSBhcnJbIGkgXTtcblx0XHRpZiAoIGEgPCAwICkge1xuXHRcdFx0YXJyWyBpIF0gPSAtYTtcblx0XHR9XG5cdH1cblx0Ly8gRXhwbG9pdCB0aGUgZmFjdCB0aGF0IHRoZSBsY20gaXMgYW4gYXNzb2NpYXRpdmUgZnVuY3Rpb24uLi5cblx0YSA9IGFyclsgMCBdO1xuXHRmb3IgKCBpID0gMTsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGIgPSBhcnJbIGkgXTtcblx0XHRpZiAoIGEgPT09IDAgfHwgYiA9PT0gMCApIHtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblx0XHRhID0gKCBhL2djZChhLGIpICkgKiBiO1xuXHR9XG5cdHJldHVybiBhO1xufSAvLyBlbmQgRlVOQ1RJT04gbGNtKClcblxuXG4vLyBFWFBPUlRTIC8vXG5cbm1vZHVsZS5leHBvcnRzID0gbGNtO1xuIiwidmFyIGJhc2VNZXJnZSA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8uZGVmYXVsdHNEZWVwYCB0byBjdXN0b21pemUgaXRzIGBfLm1lcmdlYCB1c2UgdG8gbWVyZ2Ugc291cmNlXG4gKiBvYmplY3RzIGludG8gZGVzdGluYXRpb24gb2JqZWN0cyB0aGF0IGFyZSBwYXNzZWQgdGhydS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSBzb3VyY2UgdmFsdWUuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIG1lcmdlLlxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgcGFyZW50IG9iamVjdCBvZiBgc3JjVmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBjdXN0b21EZWZhdWx0c01lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spIHtcbiAgaWYgKGlzT2JqZWN0KG9ialZhbHVlKSAmJiBpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG9ialZhbHVlKTtcbiAgICBiYXNlTWVyZ2Uob2JqVmFsdWUsIHNyY1ZhbHVlLCB1bmRlZmluZWQsIGN1c3RvbURlZmF1bHRzTWVyZ2UsIHN0YWNrKTtcbiAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICB9XG4gIHJldHVybiBvYmpWYWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjdXN0b21EZWZhdWx0c01lcmdlO1xuIiwidmFyIGJhc2VNZXJnZSA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZScpLFxuICAgIGNyZWF0ZUFzc2lnbmVyID0gcmVxdWlyZSgnLi9fY3JlYXRlQXNzaWduZXInKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lcmdlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBtZXJnZWQgdmFsdWVzIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgc291cmNlXG4gKiBwcm9wZXJ0aWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgbWVyZ2luZyBpcyBoYW5kbGVkIGJ5IHRoZVxuICogbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHNpeCBhcmd1bWVudHM6XG4gKiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjaykuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gKiAgIGlmIChfLmlzQXJyYXkob2JqVmFsdWUpKSB7XG4gKiAgICAgcmV0dXJuIG9ialZhbHVlLmNvbmNhdChzcmNWYWx1ZSk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFsxXSwgJ2InOiBbMl0gfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiBbM10sICdiJzogWzRdIH07XG4gKlxuICogXy5tZXJnZVdpdGgob2JqZWN0LCBvdGhlciwgY3VzdG9taXplcik7XG4gKiAvLyA9PiB7ICdhJzogWzEsIDNdLCAnYic6IFsyLCA0XSB9XG4gKi9cbnZhciBtZXJnZVdpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcik7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZVdpdGg7XG4iLCJ2YXIgYXBwbHkgPSByZXF1aXJlKCcuL19hcHBseScpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBjdXN0b21EZWZhdWx0c01lcmdlID0gcmVxdWlyZSgnLi9fY3VzdG9tRGVmYXVsdHNNZXJnZScpLFxuICAgIG1lcmdlV2l0aCA9IHJlcXVpcmUoJy4vbWVyZ2VXaXRoJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kZWZhdWx0c2AgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgYXNzaWduc1xuICogZGVmYXVsdCBwcm9wZXJ0aWVzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4xMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAc2VlIF8uZGVmYXVsdHNcbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZhdWx0c0RlZXAoeyAnYSc6IHsgJ2InOiAyIH0gfSwgeyAnYSc6IHsgJ2InOiAxLCAnYyc6IDMgfSB9KTtcbiAqIC8vID0+IHsgJ2EnOiB7ICdiJzogMiwgJ2MnOiAzIH0gfVxuICovXG52YXIgZGVmYXVsdHNEZWVwID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICBhcmdzLnB1c2godW5kZWZpbmVkLCBjdXN0b21EZWZhdWx0c01lcmdlKTtcbiAgcmV0dXJuIGFwcGx5KG1lcmdlV2l0aCwgdW5kZWZpbmVkLCBhcmdzKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzRGVlcDtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUludGVyc2VjdGlvbiA9IHJlcXVpcmUoJy4vX2Jhc2VJbnRlcnNlY3Rpb24nKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgY2FzdEFycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vX2Nhc3RBcnJheUxpa2VPYmplY3QnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gYWxsIGdpdmVuIGFycmF5c1xuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaW50ZXJzZWN0aW9uKFsyLCAxXSwgWzIsIDNdKTtcbiAqIC8vID0+IFsyXVxuICovXG52YXIgaW50ZXJzZWN0aW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gIHZhciBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZClcbiAgICA6IFtdO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gaW50ZXJzZWN0aW9uO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGJhc2VJbmRleE9mYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlSW5kZXhPZldpdGgoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChjb21wYXJhdG9yKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSW5kZXhPZldpdGg7XG4iLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi9fYmFzZUluZGV4T2YnKSxcbiAgICBiYXNlSW5kZXhPZldpdGggPSByZXF1aXJlKCcuL19iYXNlSW5kZXhPZldpdGgnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnB1bGxBbGxCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXhPZiA9IGNvbXBhcmF0b3IgPyBiYXNlSW5kZXhPZldpdGggOiBiYXNlSW5kZXhPZixcbiAgICAgIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgc2VlbiA9IGFycmF5O1xuXG4gIGlmIChhcnJheSA9PT0gdmFsdWVzKSB7XG4gICAgdmFsdWVzID0gY29weUFycmF5KHZhbHVlcyk7XG4gIH1cbiAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgc2VlbiA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBmcm9tSW5kZXggPSAwLFxuICAgICAgICB2YWx1ZSA9IHZhbHVlc1tpbmRleF0sXG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgIHdoaWxlICgoZnJvbUluZGV4ID0gaW5kZXhPZihzZWVuLCBjb21wdXRlZCwgZnJvbUluZGV4LCBjb21wYXJhdG9yKSkgPiAtMSkge1xuICAgICAgaWYgKHNlZW4gIT09IGFycmF5KSB7XG4gICAgICAgIHNwbGljZS5jYWxsKHNlZW4sIGZyb21JbmRleCwgMSk7XG4gICAgICB9XG4gICAgICBzcGxpY2UuY2FsbChhcnJheSwgZnJvbUluZGV4LCAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQdWxsQWxsO1xuIiwidmFyIGJhc2VQdWxsQWxsID0gcmVxdWlyZSgnLi9fYmFzZVB1bGxBbGwnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYW4gYXJyYXkgb2YgdmFsdWVzIHRvIHJlbW92ZS5cbiAqXG4gKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAqXG4gKiBfLnB1bGxBbGwoYXJyYXksIFsnYScsICdjJ10pO1xuICogY29uc29sZS5sb2coYXJyYXkpO1xuICogLy8gPT4gWydiJywgJ2InXVxuICovXG5mdW5jdGlvbiBwdWxsQWxsKGFycmF5LCB2YWx1ZXMpIHtcbiAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzKVxuICAgIDogYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcHVsbEFsbDtcbiIsInZhciBhcnJheUVhY2ggPSByZXF1aXJlKCcuL19hcnJheUVhY2gnKSxcbiAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgY2FzdEZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fY2FzdEZ1bmN0aW9uJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggZWxlbWVudC5cbiAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogKipOb3RlOioqIEFzIHdpdGggb3RoZXIgXCJDb2xsZWN0aW9uc1wiIG1ldGhvZHMsIG9iamVjdHMgd2l0aCBhIFwibGVuZ3RoXCJcbiAqIHByb3BlcnR5IGFyZSBpdGVyYXRlZCBsaWtlIGFycmF5cy4gVG8gYXZvaWQgdGhpcyBiZWhhdmlvciB1c2UgYF8uZm9ySW5gXG4gKiBvciBgXy5mb3JPd25gIGZvciBvYmplY3QgaXRlcmF0aW9uLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhbGlhcyBlYWNoXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAqIEBzZWUgXy5mb3JFYWNoUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogXy5mb3JFYWNoKFsxLCAyXSwgZnVuY3Rpb24odmFsdWUpIHtcbiAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICogfSk7XG4gKiAvLyA9PiBMb2dzIGAxYCB0aGVuIGAyYC5cbiAqXG4gKiBfLmZvckVhY2goeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICovXG5mdW5jdGlvbiBmb3JFYWNoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RWFjaCA6IGJhc2VFYWNoO1xuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBjYXN0RnVuY3Rpb24oaXRlcmF0ZWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JFYWNoO1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlcycpLFxuICAgIGFycmF5SW5jbHVkZXNXaXRoID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlc1dpdGgnKSxcbiAgICBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kaWZmZXJlbmNlYCB3aXRob3V0IHN1cHBvcnRcbiAqIGZvciBleGNsdWRpbmcgbXVsdGlwbGUgYXJyYXlzIG9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZURpZmZlcmVuY2UoYXJyYXksIHZhbHVlcywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICBpc0NvbW1vbiA9IHRydWUsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBbXSxcbiAgICAgIHZhbHVlc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG5cbiAgaWYgKCFsZW5ndGgpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmIChpdGVyYXRlZSkge1xuICAgIHZhbHVlcyA9IGFycmF5TWFwKHZhbHVlcywgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gIH1cbiAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gIH1cbiAgZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgIHZhbHVlcyA9IG5ldyBTZXRDYWNoZSh2YWx1ZXMpO1xuICB9XG4gIG91dGVyOlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA9PSBudWxsID8gdmFsdWUgOiBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICB2YXIgdmFsdWVzSW5kZXggPSB2YWx1ZXNMZW5ndGg7XG4gICAgICB3aGlsZSAodmFsdWVzSW5kZXgtLSkge1xuICAgICAgICBpZiAodmFsdWVzW3ZhbHVlc0luZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmICghaW5jbHVkZXModmFsdWVzLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRGlmZmVyZW5jZTtcbiIsInZhciBiYXNlRGlmZmVyZW5jZSA9IHJlcXVpcmUoJy4vX2Jhc2VEaWZmZXJlbmNlJyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgZXhjbHVkaW5nIGFsbCBnaXZlbiB2YWx1ZXMgdXNpbmdcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy54b3JcbiAqIEBleGFtcGxlXG4gKlxuICogXy53aXRob3V0KFsyLCAxLCAyLCAzXSwgMSwgMik7XG4gKiAvLyA9PiBbM11cbiAqL1xudmFyIHdpdGhvdXQgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMpXG4gICAgOiBbXTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdpdGhvdXQ7XG4iLCJjb25zdCBmbGF0dGVuID0gcmVxdWlyZSgnbG9kYXNoL2ZsYXR0ZW4nKVxuY29uc3QgZmxhdHRlbkRlZXAgPSByZXF1aXJlKCdsb2Rhc2gvZmxhdHRlbkRlZXAnKVxuY29uc3QgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJ2xvZGFzaC9pc1BsYWluT2JqZWN0JylcbmNvbnN0IHVuaXEgPSByZXF1aXJlKCdsb2Rhc2gvdW5pcScpXG5jb25zdCB1bmlxV2l0aCA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxV2l0aCcpXG5jb25zdCB3aXRob3V0ID0gcmVxdWlyZSgnbG9kYXNoL3dpdGhvdXQnKVxuXG5mdW5jdGlvbiBkZWxldGVVbmRlZmluZWRQcm9wcyhyZXR1cm5PYmplY3QpIHtcbiAgLy8gY2xlYW51cCBlbXB0eVxuICBmb3IgKGNvbnN0IHByb3AgaW4gcmV0dXJuT2JqZWN0KSB7XG4gICAgaWYgKGhhcyhyZXR1cm5PYmplY3QsIHByb3ApICYmIGlzRW1wdHlTY2hlbWEocmV0dXJuT2JqZWN0W3Byb3BdKSkge1xuICAgICAgZGVsZXRlIHJldHVybk9iamVjdFtwcm9wXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0dXJuT2JqZWN0XG59XG5cbmNvbnN0IGFsbFVuaXF1ZUtleXMgPSAoYXJyKSA9PiB1bmlxKGZsYXR0ZW5EZWVwKGFyci5tYXAoa2V5cykpKVxuY29uc3QgZ2V0VmFsdWVzID0gKHNjaGVtYXMsIGtleSkgPT4gc2NoZW1hcy5tYXAoc2NoZW1hID0+IHNjaGVtYSAmJiBzY2hlbWFba2V5XSlcbmNvbnN0IGhhcyA9IChvYmosIHByb3BOYW1lKSA9PiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wTmFtZSlcbmNvbnN0IGtleXMgPSBvYmogPT4ge1xuICBpZiAoaXNQbGFpbk9iamVjdChvYmopIHx8IEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbn1cblxuY29uc3Qgbm90VW5kZWZpbmVkID0gKHZhbCkgPT4gdmFsICE9PSB1bmRlZmluZWRcbmNvbnN0IGlzU2NoZW1hID0gKHZhbCkgPT4gaXNQbGFpbk9iamVjdCh2YWwpIHx8IHZhbCA9PT0gdHJ1ZSB8fCB2YWwgPT09IGZhbHNlXG5jb25zdCBpc0VtcHR5U2NoZW1hID0gKG9iaikgPT4gKCFrZXlzKG9iaikubGVuZ3RoKSAmJiBvYmogIT09IGZhbHNlICYmIG9iaiAhPT0gdHJ1ZVxuY29uc3Qgd2l0aG91dEFyciA9IChhcnIsIC4uLnJlc3QpID0+IHdpdGhvdXQuYXBwbHkobnVsbCwgW2Fycl0uY29uY2F0KGZsYXR0ZW4ocmVzdCkpKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYWxsVW5pcXVlS2V5cyxcbiAgZGVsZXRlVW5kZWZpbmVkUHJvcHMsXG4gIGdldFZhbHVlcyxcbiAgaGFzLFxuICBpc0VtcHR5U2NoZW1hLFxuICBpc1NjaGVtYSxcbiAga2V5cyxcbiAgbm90VW5kZWZpbmVkLFxuICB1bmlxV2l0aCxcbiAgd2l0aG91dEFyclxufVxuIiwiXG5jb25zdCBjb21wYXJlID0gcmVxdWlyZSgnanNvbi1zY2hlbWEtY29tcGFyZScpXG5jb25zdCBmb3JFYWNoID0gcmVxdWlyZSgnbG9kYXNoL2ZvckVhY2gnKVxuY29uc3Qge1xuICBhbGxVbmlxdWVLZXlzLFxuICBkZWxldGVVbmRlZmluZWRQcm9wcyxcbiAgZ2V0VmFsdWVzLFxuICBrZXlzLFxuICBub3RVbmRlZmluZWQsXG4gIHVuaXFXaXRoLFxuICB3aXRob3V0QXJyXG59ID0gcmVxdWlyZSgnLi4vY29tbW9uJylcblxuZnVuY3Rpb24gcmVtb3ZlRmFsc2VTY2hlbWFzKHRhcmdldCkge1xuICBmb3JFYWNoKHRhcmdldCwgZnVuY3Rpb24oc2NoZW1hLCBwcm9wKSB7XG4gICAgaWYgKHNjaGVtYSA9PT0gZmFsc2UpIHtcbiAgICAgIGRlbGV0ZSB0YXJnZXRbcHJvcF1cbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIG1lcmdlU2NoZW1hR3JvdXAoZ3JvdXAsIG1lcmdlU2NoZW1hcykge1xuICBjb25zdCBhbGxLZXlzID0gYWxsVW5pcXVlS2V5cyhncm91cClcbiAgcmV0dXJuIGFsbEtleXMucmVkdWNlKGZ1bmN0aW9uKGFsbCwga2V5KSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGdldFZhbHVlcyhncm91cCwga2V5KVxuICAgIGNvbnN0IGNvbXBhY3RlZCA9IHVuaXFXaXRoKHNjaGVtYXMuZmlsdGVyKG5vdFVuZGVmaW5lZCksIGNvbXBhcmUpXG4gICAgYWxsW2tleV0gPSBtZXJnZVNjaGVtYXMoY29tcGFjdGVkLCBrZXkpXG4gICAgcmV0dXJuIGFsbFxuICB9LCB7fSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGtleXdvcmRzOiBbJ3Byb3BlcnRpZXMnLCAncGF0dGVyblByb3BlcnRpZXMnLCAnYWRkaXRpb25hbFByb3BlcnRpZXMnXSxcbiAgcmVzb2x2ZXIodmFsdWVzLCBwYXJlbnRzLCBtZXJnZXJzLCBvcHRpb25zKSB7XG4gICAgLy8gZmlyc3QgZ2V0IHJpZCBvZiBhbGwgbm9uIHBlcm1pdHRlZCBwcm9wZXJ0aWVzXG4gICAgaWYgKCFvcHRpb25zLmlnbm9yZUFkZGl0aW9uYWxQcm9wZXJ0aWVzKSB7XG4gICAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbihzdWJTY2hlbWEpIHtcbiAgICAgICAgY29uc3Qgb3RoZXJTdWJTY2hlbWFzID0gdmFsdWVzLmZpbHRlcihzID0+IHMgIT09IHN1YlNjaGVtYSlcbiAgICAgICAgY29uc3Qgb3duS2V5cyA9IGtleXMoc3ViU2NoZW1hLnByb3BlcnRpZXMpXG4gICAgICAgIGNvbnN0IG93blBhdHRlcm5LZXlzID0ga2V5cyhzdWJTY2hlbWEucGF0dGVyblByb3BlcnRpZXMpXG4gICAgICAgIGNvbnN0IG93blBhdHRlcm5zID0gb3duUGF0dGVybktleXMubWFwKGsgPT4gbmV3IFJlZ0V4cChrKSlcbiAgICAgICAgb3RoZXJTdWJTY2hlbWFzLmZvckVhY2goZnVuY3Rpb24ob3RoZXIpIHtcbiAgICAgICAgICBjb25zdCBhbGxPdGhlcktleXMgPSBrZXlzKG90aGVyLnByb3BlcnRpZXMpXG4gICAgICAgICAgY29uc3Qga2V5c01hdGNoaW5nUGF0dGVybiA9IGFsbE90aGVyS2V5cy5maWx0ZXIoayA9PiBvd25QYXR0ZXJucy5zb21lKHBrID0+IHBrLnRlc3QoaykpKVxuICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxLZXlzID0gd2l0aG91dEFycihhbGxPdGhlcktleXMsIG93bktleXMsIGtleXNNYXRjaGluZ1BhdHRlcm4pXG4gICAgICAgICAgYWRkaXRpb25hbEtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgIG90aGVyLnByb3BlcnRpZXNba2V5XSA9IG1lcmdlcnMucHJvcGVydGllcyhbXG4gICAgICAgICAgICAgIG90aGVyLnByb3BlcnRpZXNba2V5XSwgc3ViU2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzXG4gICAgICAgICAgICBdLCBrZXkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0pXG5cbiAgICAgIC8vIHJlbW92ZSBkaXNhbGxvd2VkIHBhdHRlcm5Qcm9wZXJ0aWVzXG4gICAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbihzdWJTY2hlbWEpIHtcbiAgICAgICAgY29uc3Qgb3RoZXJTdWJTY2hlbWFzID0gdmFsdWVzLmZpbHRlcihzID0+IHMgIT09IHN1YlNjaGVtYSlcbiAgICAgICAgY29uc3Qgb3duUGF0dGVybktleXMgPSBrZXlzKHN1YlNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcylcbiAgICAgICAgaWYgKHN1YlNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBvdGhlclN1YlNjaGVtYXMuZm9yRWFjaChmdW5jdGlvbihvdGhlcikge1xuICAgICAgICAgICAgY29uc3QgYWxsT3RoZXJQYXR0ZXJucyA9IGtleXMob3RoZXIucGF0dGVyblByb3BlcnRpZXMpXG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsUGF0dGVybktleXMgPSB3aXRob3V0QXJyKGFsbE90aGVyUGF0dGVybnMsIG93blBhdHRlcm5LZXlzKVxuICAgICAgICAgICAgYWRkaXRpb25hbFBhdHRlcm5LZXlzLmZvckVhY2goa2V5ID0+IGRlbGV0ZSBvdGhlci5wYXR0ZXJuUHJvcGVydGllc1trZXldKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgcmV0dXJuT2JqZWN0ID0ge1xuICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IG1lcmdlcnMuYWRkaXRpb25hbFByb3BlcnRpZXModmFsdWVzLm1hcChzID0+IHMuYWRkaXRpb25hbFByb3BlcnRpZXMpKSxcbiAgICAgIHBhdHRlcm5Qcm9wZXJ0aWVzOiBtZXJnZVNjaGVtYUdyb3VwKHZhbHVlcy5tYXAocyA9PiBzLnBhdHRlcm5Qcm9wZXJ0aWVzKSwgbWVyZ2Vycy5wYXR0ZXJuUHJvcGVydGllcyksXG4gICAgICBwcm9wZXJ0aWVzOiBtZXJnZVNjaGVtYUdyb3VwKHZhbHVlcy5tYXAocyA9PiBzLnByb3BlcnRpZXMpLCBtZXJnZXJzLnByb3BlcnRpZXMpXG4gICAgfVxuXG4gICAgaWYgKHJldHVybk9iamVjdC5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJlbW92ZUZhbHNlU2NoZW1hcyhyZXR1cm5PYmplY3QucHJvcGVydGllcylcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlVW5kZWZpbmVkUHJvcHMocmV0dXJuT2JqZWN0KVxuICB9XG59XG4iLCJcbmNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCdqc29uLXNjaGVtYS1jb21wYXJlJylcbmNvbnN0IGZvckVhY2ggPSByZXF1aXJlKCdsb2Rhc2gvZm9yRWFjaCcpXG5jb25zdCB7XG4gIGFsbFVuaXF1ZUtleXMsXG4gIGRlbGV0ZVVuZGVmaW5lZFByb3BzLFxuICBoYXMsXG4gIGlzU2NoZW1hLFxuICBub3RVbmRlZmluZWQsXG4gIHVuaXFXaXRoXG59ID0gcmVxdWlyZSgnLi4vY29tbW9uJylcblxuZnVuY3Rpb24gcmVtb3ZlRmFsc2VTY2hlbWFzRnJvbUFycmF5KHRhcmdldCkge1xuICBmb3JFYWNoKHRhcmdldCwgZnVuY3Rpb24oc2NoZW1hLCBpbmRleCkge1xuICAgIGlmIChzY2hlbWEgPT09IGZhbHNlKSB7XG4gICAgICB0YXJnZXQuc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gZ2V0SXRlbVNjaGVtYXMoc3ViU2NoZW1hcywga2V5KSB7XG4gIHJldHVybiBzdWJTY2hlbWFzLm1hcChmdW5jdGlvbihzdWIpIHtcbiAgICBpZiAoIXN1Yikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHN1Yi5pdGVtcykpIHtcbiAgICAgIGNvbnN0IHNjaGVtYUF0UG9zID0gc3ViLml0ZW1zW2tleV1cbiAgICAgIGlmIChpc1NjaGVtYShzY2hlbWFBdFBvcykpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYUF0UG9zXG4gICAgICB9IGVsc2UgaWYgKGhhcyhzdWIsICdhZGRpdGlvbmFsSXRlbXMnKSkge1xuICAgICAgICByZXR1cm4gc3ViLmFkZGl0aW9uYWxJdGVtc1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc3ViLml0ZW1zXG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9KVxufVxuXG5mdW5jdGlvbiBnZXRBZGRpdGlvbmFsU2NoZW1hcyhzdWJTY2hlbWFzKSB7XG4gIHJldHVybiBzdWJTY2hlbWFzLm1hcChmdW5jdGlvbihzdWIpIHtcbiAgICBpZiAoIXN1Yikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzdWIuaXRlbXMpKSB7XG4gICAgICByZXR1cm4gc3ViLmFkZGl0aW9uYWxJdGVtc1xuICAgIH1cbiAgICByZXR1cm4gc3ViLml0ZW1zXG4gIH0pXG59XG5cbi8vIFByb3ZpZGUgc291cmNlIHdoZW4gYXJyYXlcbmZ1bmN0aW9uIG1lcmdlSXRlbXMoZ3JvdXAsIG1lcmdlU2NoZW1hcywgaXRlbXMpIHtcbiAgY29uc3QgYWxsS2V5cyA9IGFsbFVuaXF1ZUtleXMoaXRlbXMpXG4gIHJldHVybiBhbGxLZXlzLnJlZHVjZShmdW5jdGlvbihhbGwsIGtleSkge1xuICAgIGNvbnN0IHNjaGVtYXMgPSBnZXRJdGVtU2NoZW1hcyhncm91cCwga2V5KVxuICAgIGNvbnN0IGNvbXBhY3RlZCA9IHVuaXFXaXRoKHNjaGVtYXMuZmlsdGVyKG5vdFVuZGVmaW5lZCksIGNvbXBhcmUpXG4gICAgYWxsW2tleV0gPSBtZXJnZVNjaGVtYXMoY29tcGFjdGVkLCBrZXkpXG4gICAgcmV0dXJuIGFsbFxuICB9LCBbXSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGtleXdvcmRzOiBbJ2l0ZW1zJywgJ2FkZGl0aW9uYWxJdGVtcyddLFxuICByZXNvbHZlcih2YWx1ZXMsIHBhcmVudHMsIG1lcmdlcnMpIHtcbiAgICAvLyBjb25zdCBjcmVhdGVTdWJNZXJnZXIgPSBncm91cEtleSA9PiAoc2NoZW1hcywga2V5KSA9PiBtZXJnZVNjaGVtYXMoc2NoZW1hcywgcGFyZW50cy5jb25jYXQoZ3JvdXBLZXksIGtleSkpXG4gICAgY29uc3QgaXRlbXMgPSB2YWx1ZXMubWFwKHMgPT4gcy5pdGVtcylcbiAgICBjb25zdCBpdGVtc0NvbXBhY3RlZCA9IGl0ZW1zLmZpbHRlcihub3RVbmRlZmluZWQpXG4gICAgY29uc3QgcmV0dXJuT2JqZWN0ID0ge31cblxuICAgIC8vIGlmIGFsbCBpdGVtcyBrZXl3b3JkIHZhbHVlcyBhcmUgc2NoZW1hcywgd2UgY2FuIG1lcmdlIHRoZW0gYXMgc2ltcGxlIHNjaGVtYXNcbiAgICAvLyBpZiBub3Qgd2UgbmVlZCB0byBtZXJnZSB0aGVtIGFzIG1peGVkXG4gICAgaWYgKGl0ZW1zQ29tcGFjdGVkLmV2ZXJ5KGlzU2NoZW1hKSkge1xuICAgICAgcmV0dXJuT2JqZWN0Lml0ZW1zID0gbWVyZ2Vycy5pdGVtcyhpdGVtcylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuT2JqZWN0Lml0ZW1zID0gbWVyZ2VJdGVtcyh2YWx1ZXMsIG1lcmdlcnMuaXRlbXMsIGl0ZW1zKVxuICAgIH1cblxuICAgIGxldCBzY2hlbWFzQXRMYXN0UG9zXG4gICAgaWYgKGl0ZW1zQ29tcGFjdGVkLmV2ZXJ5KEFycmF5LmlzQXJyYXkpKSB7XG4gICAgICBzY2hlbWFzQXRMYXN0UG9zID0gdmFsdWVzLm1hcChzID0+IHMuYWRkaXRpb25hbEl0ZW1zKVxuICAgIH0gZWxzZSBpZiAoaXRlbXNDb21wYWN0ZWQuc29tZShBcnJheS5pc0FycmF5KSkge1xuICAgICAgc2NoZW1hc0F0TGFzdFBvcyA9IGdldEFkZGl0aW9uYWxTY2hlbWFzKHZhbHVlcylcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hc0F0TGFzdFBvcykge1xuICAgICAgcmV0dXJuT2JqZWN0LmFkZGl0aW9uYWxJdGVtcyA9IG1lcmdlcnMuYWRkaXRpb25hbEl0ZW1zKHNjaGVtYXNBdExhc3RQb3MpXG4gICAgfVxuXG4gICAgaWYgKHJldHVybk9iamVjdC5hZGRpdGlvbmFsSXRlbXMgPT09IGZhbHNlICYmIEFycmF5LmlzQXJyYXkocmV0dXJuT2JqZWN0Lml0ZW1zKSkge1xuICAgICAgcmVtb3ZlRmFsc2VTY2hlbWFzRnJvbUFycmF5KHJldHVybk9iamVjdC5pdGVtcylcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlVW5kZWZpbmVkUHJvcHMocmV0dXJuT2JqZWN0KVxuICB9XG59XG4iLCJjb25zdCBjbG9uZURlZXAgPSByZXF1aXJlKCdsb2Rhc2gvY2xvbmVEZWVwJylcbmNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCdqc29uLXNjaGVtYS1jb21wYXJlJylcbmNvbnN0IGNvbXB1dGVMY20gPSByZXF1aXJlKCdjb21wdXRlLWxjbScpXG5jb25zdCBkZWZhdWx0c0RlZXAgPSByZXF1aXJlKCdsb2Rhc2gvZGVmYXVsdHNEZWVwJylcbmNvbnN0IGZsYXR0ZW4gPSByZXF1aXJlKCdsb2Rhc2gvZmxhdHRlbicpXG5jb25zdCBmbGF0dGVuRGVlcCA9IHJlcXVpcmUoJ2xvZGFzaC9mbGF0dGVuRGVlcCcpXG5jb25zdCBpbnRlcnNlY3Rpb24gPSByZXF1aXJlKCdsb2Rhc2gvaW50ZXJzZWN0aW9uJylcbmNvbnN0IGludGVyc2VjdGlvbldpdGggPSByZXF1aXJlKCdsb2Rhc2gvaW50ZXJzZWN0aW9uV2l0aCcpXG5jb25zdCBpc0VxdWFsID0gcmVxdWlyZSgnbG9kYXNoL2lzRXF1YWwnKVxuY29uc3QgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJ2xvZGFzaC9pc1BsYWluT2JqZWN0JylcbmNvbnN0IHB1bGxBbGwgPSByZXF1aXJlKCdsb2Rhc2gvcHVsbEFsbCcpXG5jb25zdCBzb3J0QnkgPSByZXF1aXJlKCdsb2Rhc2gvc29ydEJ5JylcbmNvbnN0IHVuaXEgPSByZXF1aXJlKCdsb2Rhc2gvdW5pcScpXG5jb25zdCB1bmlxV2l0aCA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxV2l0aCcpXG5cbmNvbnN0IHByb3BlcnRpZXNSZXNvbHZlciA9IHJlcXVpcmUoJy4vY29tcGxleC1yZXNvbHZlcnMvcHJvcGVydGllcycpXG5jb25zdCBpdGVtc1Jlc29sdmVyID0gcmVxdWlyZSgnLi9jb21wbGV4LXJlc29sdmVycy9pdGVtcycpXG5cbmNvbnN0IGNvbnRhaW5zID0gKGFyciwgdmFsKSA9PiBhcnIuaW5kZXhPZih2YWwpICE9PSAtMVxuY29uc3QgaXNTY2hlbWEgPSAodmFsKSA9PiBpc1BsYWluT2JqZWN0KHZhbCkgfHwgdmFsID09PSB0cnVlIHx8IHZhbCA9PT0gZmFsc2VcbmNvbnN0IGlzRmFsc2UgPSAodmFsKSA9PiB2YWwgPT09IGZhbHNlXG5jb25zdCBpc1RydWUgPSAodmFsKSA9PiB2YWwgPT09IHRydWVcbmNvbnN0IHNjaGVtYVJlc29sdmVyID0gKGNvbXBhY3RlZCwga2V5LCBtZXJnZVNjaGVtYXMpID0+IG1lcmdlU2NoZW1hcyhjb21wYWN0ZWQpXG5jb25zdCBzdHJpbmdBcnJheSA9ICh2YWx1ZXMpID0+IHNvcnRCeSh1bmlxKGZsYXR0ZW5EZWVwKHZhbHVlcykpKVxuY29uc3Qgbm90VW5kZWZpbmVkID0gKHZhbCkgPT4gdmFsICE9PSB1bmRlZmluZWRcbmNvbnN0IGFsbFVuaXF1ZUtleXMgPSAoYXJyKSA9PiB1bmlxKGZsYXR0ZW5EZWVwKGFyci5tYXAoa2V5cykpKVxuXG4vLyByZXNvbHZlcnNcbmNvbnN0IGZpcnN0ID0gY29tcGFjdGVkID0+IGNvbXBhY3RlZFswXVxuY29uc3QgcmVxdWlyZWQgPSBjb21wYWN0ZWQgPT4gc3RyaW5nQXJyYXkoY29tcGFjdGVkKVxuY29uc3QgbWF4aW11bVZhbHVlID0gY29tcGFjdGVkID0+IE1hdGgubWF4LmFwcGx5KE1hdGgsIGNvbXBhY3RlZClcbmNvbnN0IG1pbmltdW1WYWx1ZSA9IGNvbXBhY3RlZCA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBjb21wYWN0ZWQpXG5jb25zdCB1bmlxdWVJdGVtcyA9IGNvbXBhY3RlZCA9PiBjb21wYWN0ZWQuc29tZShpc1RydWUpXG5jb25zdCBleGFtcGxlcyA9IGNvbXBhY3RlZCA9PiB1bmlxV2l0aChmbGF0dGVuKGNvbXBhY3RlZCksIGlzRXF1YWwpXG5cbmZ1bmN0aW9uIGNvbXBhcmVQcm9wKGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBjb21wYXJlKHtcbiAgICAgIFtrZXldOiBhXG4gICAgfSwgeyBba2V5XTogYiB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFsbE9mKHNjaGVtYSkge1xuICBsZXQgeyBhbGxPZiA9IFtdLCAuLi5jb3B5IH0gPSBzY2hlbWFcbiAgY29weSA9IGlzUGxhaW5PYmplY3Qoc2NoZW1hKSA/IGNvcHkgOiBzY2hlbWEgLy8gaWYgc2NoZW1hIGlzIGJvb2xlYW5cbiAgcmV0dXJuIFtjb3B5LCAuLi5hbGxPZi5tYXAoZ2V0QWxsT2YpXVxufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZXMoc2NoZW1hcywga2V5KSB7XG4gIHJldHVybiBzY2hlbWFzLm1hcChzY2hlbWEgPT4gc2NoZW1hICYmIHNjaGVtYVtrZXldKVxufVxuXG5mdW5jdGlvbiB0cnlNZXJnZVNjaGVtYUdyb3VwcyhzY2hlbWFHcm91cHMsIG1lcmdlU2NoZW1hcykge1xuICByZXR1cm4gc2NoZW1hR3JvdXBzLm1hcChmdW5jdGlvbihzY2hlbWFzLCBpbmRleCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbWVyZ2VTY2hlbWFzKHNjaGVtYXMsIGluZGV4KVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gIH0pLmZpbHRlcihub3RVbmRlZmluZWQpXG59XG5cbmZ1bmN0aW9uIGtleXMob2JqKSB7XG4gIGlmIChpc1BsYWluT2JqZWN0KG9iaikgfHwgQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW11cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbnlPZkNvbWJpbmF0aW9ucyhhcnJPZkFycmF5cywgY29tYmluYXRpb25zKSB7XG4gIGNvbWJpbmF0aW9ucyA9IGNvbWJpbmF0aW9ucyB8fCBbXVxuICBpZiAoIWFyck9mQXJyYXlzLmxlbmd0aCkge1xuICAgIHJldHVybiBjb21iaW5hdGlvbnNcbiAgfVxuXG4gIGNvbnN0IHZhbHVlcyA9IGFyck9mQXJyYXlzLnNsaWNlKDApLnNoaWZ0KClcbiAgY29uc3QgcmVzdCA9IGFyck9mQXJyYXlzLnNsaWNlKDEpXG4gIGlmIChjb21iaW5hdGlvbnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGdldEFueU9mQ29tYmluYXRpb25zKHJlc3QsIGZsYXR0ZW4oY29tYmluYXRpb25zLm1hcChjb21iaW5hdGlvbiA9PiB2YWx1ZXMubWFwKGl0ZW0gPT4gKFtpdGVtXS5jb25jYXQoY29tYmluYXRpb24pKSkpKSlcbiAgfVxuICByZXR1cm4gZ2V0QW55T2ZDb21iaW5hdGlvbnMocmVzdCwgdmFsdWVzLm1hcChpdGVtID0+IChpdGVtKSkpXG59XG5cbmZ1bmN0aW9uIHRocm93SW5jb21wYXRpYmxlKHZhbHVlcywgcGF0aHMpIHtcbiAgbGV0IGFzSlNPTlxuICB0cnkge1xuICAgIGFzSlNPTiA9IHZhbHVlcy5tYXAoZnVuY3Rpb24odmFsKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsLCBudWxsLCAyKVxuICAgIH0pLmpvaW4oJ1xcbicpXG4gIH0gY2F0Y2ggKHZhcmlhYmxlKSB7XG4gICAgYXNKU09OID0gdmFsdWVzLmpvaW4oJywgJylcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCByZXNvbHZlIHZhbHVlcyBmb3IgcGF0aDpcIicgKyBwYXRocy5qb2luKCcuJykgKyAnXCIuIFRoZXkgYXJlIHByb2JhYmx5IGluY29tcGF0aWJsZS4gVmFsdWVzOiBcXG4nICsgYXNKU09OKVxufVxuXG5mdW5jdGlvbiBjYWxsR3JvdXBSZXNvbHZlcihjb21wbGV4S2V5d29yZHMsIHJlc29sdmVyTmFtZSwgc2NoZW1hcywgbWVyZ2VTY2hlbWFzLCBvcHRpb25zLCBwYXJlbnRzKSB7XG4gIGlmIChjb21wbGV4S2V5d29yZHMubGVuZ3RoKSB7XG4gICAgY29uc3QgcmVzb2x2ZXJDb25maWcgPSBvcHRpb25zLmNvbXBsZXhSZXNvbHZlcnNbcmVzb2x2ZXJOYW1lXVxuICAgIGlmICghcmVzb2x2ZXJDb25maWcgfHwgIXJlc29sdmVyQ29uZmlnLnJlc29sdmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlc29sdmVyIGZvdW5kIGZvciAnICsgcmVzb2x2ZXJOYW1lKVxuICAgIH1cblxuICAgIC8vIGV4dHJhY3QgYWxsIGtleXdvcmRzIGZyb20gYWxsIHRoZSBzY2hlbWFzIHRoYXQgaGF2ZSBvbmUgb3IgbW9yZVxuICAgIC8vIHRoZW4gcmVtb3ZlIGFsbCB1bmRlZmluZWQgb25lcyBhbmQgbm90IHVuaXF1ZVxuICAgIGNvbnN0IGV4dHJhY3RlZEtleXdvcmRzT25seSA9IHNjaGVtYXMubWFwKHNjaGVtYSA9PiBjb21wbGV4S2V5d29yZHMucmVkdWNlKChhbGwsIGtleSkgPT4ge1xuICAgICAgaWYgKHNjaGVtYVtrZXldICE9PSB1bmRlZmluZWQpIGFsbFtrZXldID0gc2NoZW1hW2tleV1cbiAgICAgIHJldHVybiBhbGxcbiAgICB9LCB7fSkpXG4gICAgY29uc3QgdW5pcXVlID0gdW5pcVdpdGgoZXh0cmFjdGVkS2V5d29yZHNPbmx5LCBjb21wYXJlKVxuXG4gICAgLy8gY3JlYXRlIG1lcmdlcnMgdGhhdCBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgcGF0aCBvZiB0aGUga2V5d29yZCBmb3IgdXNlIGluIHRoZSBjb21wbGV4IHJlc29sdmVyXG4gICAgY29uc3QgbWVyZ2VycyA9IHJlc29sdmVyQ29uZmlnLmtleXdvcmRzLnJlZHVjZSgoYWxsLCBrZXkpID0+ICh7XG4gICAgICAuLi5hbGwsXG4gICAgICBba2V5XTogKHNjaGVtYXMsIGV4dHJhS2V5ID0gW10pID0+IG1lcmdlU2NoZW1hcyhzY2hlbWFzLCBudWxsLCBwYXJlbnRzLmNvbmNhdChrZXksIGV4dHJhS2V5KSlcbiAgICB9KSwge30pXG5cbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlckNvbmZpZy5yZXNvbHZlcih1bmlxdWUsIHBhcmVudHMuY29uY2F0KHJlc29sdmVyTmFtZSksIG1lcmdlcnMsIG9wdGlvbnMpXG5cbiAgICBpZiAoIWlzUGxhaW5PYmplY3QocmVzdWx0KSkge1xuICAgICAgdGhyb3dJbmNvbXBhdGlibGUodW5pcXVlLCBwYXJlbnRzLmNvbmNhdChyZXNvbHZlck5hbWUpKVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVSZXF1aXJlZE1ldGFBcnJheShhcnIpIHtcbiAgcmV0dXJuIHsgcmVxdWlyZWQ6IGFyciB9XG59XG5cbmNvbnN0IHNjaGVtYUdyb3VwUHJvcHMgPSBbJ3Byb3BlcnRpZXMnLCAncGF0dGVyblByb3BlcnRpZXMnLCAnZGVmaW5pdGlvbnMnLCAnZGVwZW5kZW5jaWVzJ11cbmNvbnN0IHNjaGVtYUFycmF5cyA9IFsnYW55T2YnLCAnb25lT2YnXVxuY29uc3Qgc2NoZW1hUHJvcHMgPSBbXG4gICdhZGRpdGlvbmFsUHJvcGVydGllcycsXG4gICdhZGRpdGlvbmFsSXRlbXMnLFxuICAnY29udGFpbnMnLFxuICAncHJvcGVydHlOYW1lcycsXG4gICdub3QnLFxuICAnaXRlbXMnXG5dXG5cbmNvbnN0IGRlZmF1bHRSZXNvbHZlcnMgPSB7XG4gIHR5cGUoY29tcGFjdGVkKSB7XG4gICAgaWYgKGNvbXBhY3RlZC5zb21lKEFycmF5LmlzQXJyYXkpKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gY29tcGFjdGVkLm1hcChmdW5jdGlvbih2YWwpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKVxuICAgICAgICAgID8gdmFsXG4gICAgICAgICAgOiBbdmFsXVxuICAgICAgfSlcbiAgICAgIGNvbnN0IGNvbW1vbiA9IGludGVyc2VjdGlvbi5hcHBseShudWxsLCBub3JtYWxpemVkKVxuXG4gICAgICBpZiAoY29tbW9uLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gY29tbW9uWzBdXG4gICAgICB9IGVsc2UgaWYgKGNvbW1vbi5sZW5ndGggPiAxKSB7XG4gICAgICAgIHJldHVybiB1bmlxKGNvbW1vbilcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGRlcGVuZGVuY2llcyhjb21wYWN0ZWQsIHBhdGhzLCBtZXJnZVNjaGVtYXMpIHtcbiAgICBjb25zdCBhbGxDaGlsZHJlbiA9IGFsbFVuaXF1ZUtleXMoY29tcGFjdGVkKVxuXG4gICAgcmV0dXJuIGFsbENoaWxkcmVuLnJlZHVjZShmdW5jdGlvbihhbGwsIGNoaWxkS2V5KSB7XG4gICAgICBjb25zdCBjaGlsZFNjaGVtYXMgPSBnZXRWYWx1ZXMoY29tcGFjdGVkLCBjaGlsZEtleSlcbiAgICAgIGxldCBpbm5lckNvbXBhY3RlZCA9IHVuaXFXaXRoKGNoaWxkU2NoZW1hcy5maWx0ZXIobm90VW5kZWZpbmVkKSwgaXNFcXVhbClcblxuICAgICAgLy8gdG8gc3VwcG9ydCBkZXBlbmRlbmNpZXNcbiAgICAgIGNvbnN0IGlubmVyQXJyYXlzID0gaW5uZXJDb21wYWN0ZWQuZmlsdGVyKEFycmF5LmlzQXJyYXkpXG5cbiAgICAgIGlmIChpbm5lckFycmF5cy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGlubmVyQXJyYXlzLmxlbmd0aCA9PT0gaW5uZXJDb21wYWN0ZWQubGVuZ3RoKSB7XG4gICAgICAgICAgYWxsW2NoaWxkS2V5XSA9IHN0cmluZ0FycmF5KGlubmVyQ29tcGFjdGVkKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGlubmVyU2NoZW1hcyA9IGlubmVyQ29tcGFjdGVkLmZpbHRlcihpc1NjaGVtYSlcbiAgICAgICAgICBjb25zdCBhcnJheU1ldGFTY2hlYW1zID0gaW5uZXJBcnJheXMubWFwKGNyZWF0ZVJlcXVpcmVkTWV0YUFycmF5KVxuICAgICAgICAgIGFsbFtjaGlsZEtleV0gPSBtZXJnZVNjaGVtYXMoaW5uZXJTY2hlbWFzLmNvbmNhdChhcnJheU1ldGFTY2hlYW1zKSwgY2hpbGRLZXkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFsbFxuICAgICAgfVxuXG4gICAgICBpbm5lckNvbXBhY3RlZCA9IHVuaXFXaXRoKGlubmVyQ29tcGFjdGVkLCBjb21wYXJlKVxuXG4gICAgICBhbGxbY2hpbGRLZXldID0gbWVyZ2VTY2hlbWFzKGlubmVyQ29tcGFjdGVkLCBjaGlsZEtleSlcbiAgICAgIHJldHVybiBhbGxcbiAgICB9LCB7fSlcbiAgfSxcbiAgb25lT2YoY29tcGFjdGVkLCBwYXRocywgbWVyZ2VTY2hlbWFzKSB7XG4gICAgY29uc3QgY29tYmluYXRpb25zID0gZ2V0QW55T2ZDb21iaW5hdGlvbnMoY2xvbmVEZWVwKGNvbXBhY3RlZCkpXG4gICAgY29uc3QgcmVzdWx0ID0gdHJ5TWVyZ2VTY2hlbWFHcm91cHMoY29tYmluYXRpb25zLCBtZXJnZVNjaGVtYXMpXG4gICAgY29uc3QgdW5pcXVlID0gdW5pcVdpdGgocmVzdWx0LCBjb21wYXJlKVxuXG4gICAgaWYgKHVuaXF1ZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB1bmlxdWVcbiAgICB9XG4gIH0sXG4gIG5vdChjb21wYWN0ZWQpIHtcbiAgICByZXR1cm4geyBhbnlPZjogY29tcGFjdGVkIH1cbiAgfSxcbiAgcGF0dGVybihjb21wYWN0ZWQpIHtcbiAgICByZXR1cm4gY29tcGFjdGVkLm1hcChyID0+ICcoPz0nICsgciArICcpJykuam9pbignJylcbiAgfSxcbiAgbXVsdGlwbGVPZihjb21wYWN0ZWQpIHtcbiAgICBsZXQgaW50ZWdlcnMgPSBjb21wYWN0ZWQuc2xpY2UoMClcbiAgICBsZXQgZmFjdG9yID0gMVxuICAgIHdoaWxlIChpbnRlZ2Vycy5zb21lKG4gPT4gIU51bWJlci5pc0ludGVnZXIobikpKSB7XG4gICAgICBpbnRlZ2VycyA9IGludGVnZXJzLm1hcChuID0+IG4gKiAxMClcbiAgICAgIGZhY3RvciA9IGZhY3RvciAqIDEwXG4gICAgfVxuICAgIHJldHVybiBjb21wdXRlTGNtKGludGVnZXJzKSAvIGZhY3RvclxuICB9LFxuICBlbnVtKGNvbXBhY3RlZCkge1xuICAgIGNvbnN0IGVudW1zID0gaW50ZXJzZWN0aW9uV2l0aC5hcHBseShudWxsLCBjb21wYWN0ZWQuY29uY2F0KGlzRXF1YWwpKVxuICAgIGlmIChlbnVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBzb3J0QnkoZW51bXMpXG4gICAgfVxuICB9XG59XG5cbmRlZmF1bHRSZXNvbHZlcnMuJGlkID0gZmlyc3RcbmRlZmF1bHRSZXNvbHZlcnMuJHJlZiA9IGZpcnN0XG5kZWZhdWx0UmVzb2x2ZXJzLiRzY2hlbWEgPSBmaXJzdFxuZGVmYXVsdFJlc29sdmVycy5hZGRpdGlvbmFsSXRlbXMgPSBzY2hlbWFSZXNvbHZlclxuZGVmYXVsdFJlc29sdmVycy5hZGRpdGlvbmFsUHJvcGVydGllcyA9IHNjaGVtYVJlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLmFueU9mID0gZGVmYXVsdFJlc29sdmVycy5vbmVPZlxuZGVmYXVsdFJlc29sdmVycy5jb250YWlucyA9IHNjaGVtYVJlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLmRlZmF1bHQgPSBmaXJzdFxuZGVmYXVsdFJlc29sdmVycy5kZWZpbml0aW9ucyA9IGRlZmF1bHRSZXNvbHZlcnMuZGVwZW5kZW5jaWVzXG5kZWZhdWx0UmVzb2x2ZXJzLmRlc2NyaXB0aW9uID0gZmlyc3RcbmRlZmF1bHRSZXNvbHZlcnMuZXhhbXBsZXMgPSBleGFtcGxlc1xuZGVmYXVsdFJlc29sdmVycy5leGNsdXNpdmVNYXhpbXVtID0gbWluaW11bVZhbHVlXG5kZWZhdWx0UmVzb2x2ZXJzLmV4Y2x1c2l2ZU1pbmltdW0gPSBtYXhpbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMuaXRlbXMgPSBpdGVtc1Jlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLm1heGltdW0gPSBtaW5pbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMubWF4SXRlbXMgPSBtaW5pbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMubWF4TGVuZ3RoID0gbWluaW11bVZhbHVlXG5kZWZhdWx0UmVzb2x2ZXJzLm1heFByb3BlcnRpZXMgPSBtaW5pbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMubWluaW11bSA9IG1heGltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5taW5JdGVtcyA9IG1heGltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5taW5MZW5ndGggPSBtYXhpbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMubWluUHJvcGVydGllcyA9IG1heGltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5wcm9wZXJ0aWVzID0gcHJvcGVydGllc1Jlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLnByb3BlcnR5TmFtZXMgPSBzY2hlbWFSZXNvbHZlclxuZGVmYXVsdFJlc29sdmVycy5yZXF1aXJlZCA9IHJlcXVpcmVkXG5kZWZhdWx0UmVzb2x2ZXJzLnRpdGxlID0gZmlyc3RcbmRlZmF1bHRSZXNvbHZlcnMudW5pcXVlSXRlbXMgPSB1bmlxdWVJdGVtc1xuXG5jb25zdCBkZWZhdWx0Q29tcGxleFJlc29sdmVycyA9IHtcbiAgcHJvcGVydGllczogcHJvcGVydGllc1Jlc29sdmVyLFxuICBpdGVtczogaXRlbXNSZXNvbHZlclxufVxuXG5mdW5jdGlvbiBtZXJnZXIocm9vdFNjaGVtYSwgb3B0aW9ucywgdG90YWxTY2hlbWFzKSB7XG4gIHRvdGFsU2NoZW1hcyA9IHRvdGFsU2NoZW1hcyB8fCBbXVxuICBvcHRpb25zID0gZGVmYXVsdHNEZWVwKG9wdGlvbnMsIHtcbiAgICBpZ25vcmVBZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgcmVzb2x2ZXJzOiBkZWZhdWx0UmVzb2x2ZXJzLFxuICAgIGNvbXBsZXhSZXNvbHZlcnM6IGRlZmF1bHRDb21wbGV4UmVzb2x2ZXJzLFxuICAgIGRlZXA6IHRydWVcbiAgfSlcblxuICBjb25zdCBjb21wbGV4UmVzb2x2ZXJzID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucy5jb21wbGV4UmVzb2x2ZXJzKVxuXG4gIGZ1bmN0aW9uIG1lcmdlU2NoZW1hcyhzY2hlbWFzLCBiYXNlLCBwYXJlbnRzKSB7XG4gICAgc2NoZW1hcyA9IGNsb25lRGVlcChzY2hlbWFzLmZpbHRlcihub3RVbmRlZmluZWQpKVxuICAgIHBhcmVudHMgPSBwYXJlbnRzIHx8IFtdXG4gICAgY29uc3QgbWVyZ2VkID0gaXNQbGFpbk9iamVjdChiYXNlKVxuICAgICAgPyBiYXNlXG4gICAgICA6IHt9XG5cbiAgICAvLyByZXR1cm4gdW5kZWZpbmVkLCBhbiBlbXB0eSBzY2hlbWFcbiAgICBpZiAoIXNjaGVtYXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hcy5zb21lKGlzRmFsc2UpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hcy5ldmVyeShpc1RydWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIHRoZXJlIGFyZSBubyBmYWxzZSBhbmQgd2UgZG9uJ3QgbmVlZCB0aGUgdHJ1ZSBvbmVzIGFzIHRoZXkgYWNjZXB0IGV2ZXJ5dGhpbmdcbiAgICBzY2hlbWFzID0gc2NoZW1hcy5maWx0ZXIoaXNQbGFpbk9iamVjdClcblxuICAgIGNvbnN0IGFsbEtleXMgPSBhbGxVbmlxdWVLZXlzKHNjaGVtYXMpXG4gICAgaWYgKG9wdGlvbnMuZGVlcCAmJiBjb250YWlucyhhbGxLZXlzLCAnYWxsT2YnKSkge1xuICAgICAgcmV0dXJuIG1lcmdlcih7XG4gICAgICAgIGFsbE9mOiBzY2hlbWFzXG4gICAgICB9LCBvcHRpb25zLCB0b3RhbFNjaGVtYXMpXG4gICAgfVxuXG4gICAgY29uc3QgY29tcGxleEtleXNBcnIgPSBjb21wbGV4UmVzb2x2ZXJzLm1hcCgoW21haW5LZXlXb3JkLCByZXNvbHZlckNvbmZdKSA9PlxuICAgICAgYWxsS2V5cy5maWx0ZXIoayA9PiByZXNvbHZlckNvbmYua2V5d29yZHMuaW5jbHVkZXMoaykpKVxuXG4gICAgLy8gcmVtb3ZlIGFsbCBjb21wbGV4IGtleXMgYmVmb3JlIHNpbXBsZSByZXNvbHZlcnNcbiAgICBjb21wbGV4S2V5c0Fyci5mb3JFYWNoKGtleXMgPT4gcHVsbEFsbChhbGxLZXlzLCBrZXlzKSlcblxuICAgIC8vIGNhbGwgYWxsIHNpbXBsZSByZXNvbHZlcnMgZm9yIHJlbGV2YW50IGtleXdvcmRzXG4gICAgYWxsS2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgY29uc3QgdmFsdWVzID0gZ2V0VmFsdWVzKHNjaGVtYXMsIGtleSlcbiAgICAgIGNvbnN0IGNvbXBhY3RlZCA9IHVuaXFXaXRoKHZhbHVlcy5maWx0ZXIobm90VW5kZWZpbmVkKSwgY29tcGFyZVByb3Aoa2V5KSlcblxuICAgICAgLy8gYXJyYXlwcm9wcyBsaWtlIGFueU9mIGFuZCBvbmVPZiBtdXN0IGJlIG1lcmdlZCBmaXJzdCwgYXMgdGhleSBjb250YWlucyBzY2hlbWFzXG4gICAgICAvLyBhbGxPZiBpcyB0cmVhdGVkIGRpZmZlcmVudGx5IGFsbHRvZ2V0aGVyXG4gICAgICBpZiAoY29tcGFjdGVkLmxlbmd0aCA9PT0gMSAmJiBjb250YWlucyhzY2hlbWFBcnJheXMsIGtleSkpIHtcbiAgICAgICAgbWVyZ2VkW2tleV0gPSBjb21wYWN0ZWRbMF0ubWFwKHNjaGVtYSA9PiBtZXJnZVNjaGVtYXMoW3NjaGVtYV0sIHNjaGVtYSkpXG4gICAgICAgIC8vIHByb3AgZ3JvdXBzIG11c3QgYWx3YXlzIGJlIHJlc29sdmVkXG4gICAgICB9IGVsc2UgaWYgKGNvbXBhY3RlZC5sZW5ndGggPT09IDEgJiYgIWNvbnRhaW5zKHNjaGVtYUdyb3VwUHJvcHMsIGtleSkgJiYgIWNvbnRhaW5zKHNjaGVtYVByb3BzLCBrZXkpKSB7XG4gICAgICAgIG1lcmdlZFtrZXldID0gY29tcGFjdGVkWzBdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXNvbHZlciA9IG9wdGlvbnMucmVzb2x2ZXJzW2tleV0gfHwgb3B0aW9ucy5yZXNvbHZlcnMuZGVmYXVsdFJlc29sdmVyXG4gICAgICAgIGlmICghcmVzb2x2ZXIpIHRocm93IG5ldyBFcnJvcignTm8gcmVzb2x2ZXIgZm91bmQgZm9yIGtleSAnICsga2V5ICsgJy4gWW91IGNhbiBwcm92aWRlIGEgcmVzb2x2ZXIgZm9yIHRoaXMga2V5d29yZCBpbiB0aGUgb3B0aW9ucywgb3IgcHJvdmlkZSBhIGRlZmF1bHQgcmVzb2x2ZXIuJylcblxuICAgICAgICBjb25zdCBtZXJnZXIgPSAoc2NoZW1hcywgZXh0cmFLZXkgPSBbXSkgPT4gbWVyZ2VTY2hlbWFzKHNjaGVtYXMsIG51bGwsIHBhcmVudHMuY29uY2F0KGtleSwgZXh0cmFLZXkpKVxuICAgICAgICBtZXJnZWRba2V5XSA9IHJlc29sdmVyKGNvbXBhY3RlZCwgcGFyZW50cy5jb25jYXQoa2V5KSwgbWVyZ2VyLCBvcHRpb25zKVxuXG4gICAgICAgIGlmIChtZXJnZWRba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3dJbmNvbXBhdGlibGUoY29tcGFjdGVkLCBwYXJlbnRzLmNvbmNhdChrZXkpKVxuICAgICAgICB9IGVsc2UgaWYgKG1lcmdlZFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkZWxldGUgbWVyZ2VkW2tleV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gY29tcGxleFJlc29sdmVycy5yZWR1Y2UoKGFsbCwgW3Jlc29sdmVyS2V5d29yZCwgY29uZmlnXSwgaW5kZXgpID0+ICh7XG4gICAgICAuLi5hbGwsXG4gICAgICAuLi5jYWxsR3JvdXBSZXNvbHZlcihjb21wbGV4S2V5c0FycltpbmRleF0sIHJlc29sdmVyS2V5d29yZCwgc2NoZW1hcywgbWVyZ2VTY2hlbWFzLCBvcHRpb25zLCBwYXJlbnRzKVxuICAgIH0pLCBtZXJnZWQpXG4gIH1cblxuICBjb25zdCBhbGxTY2hlbWFzID0gZmxhdHRlbkRlZXAoZ2V0QWxsT2Yocm9vdFNjaGVtYSkpXG4gIGNvbnN0IG1lcmdlZCA9IG1lcmdlU2NoZW1hcyhhbGxTY2hlbWFzKVxuXG4gIHJldHVybiBtZXJnZWRcbn1cblxubWVyZ2VyLm9wdGlvbnMgPSB7XG4gIHJlc29sdmVyczogZGVmYXVsdFJlc29sdmVyc1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlclxuIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc1N0cmluZyBmcm9tICdsb2Rhc2gvaXNTdHJpbmcnO1xuLyoqIFJldHVybnMgdGhlIGBkaXNjcmltaW5hdG9yLnByb3BlcnR5TmFtZWAgd2hlbiBkZWZpbmVkIGluIHRoZSBgc2NoZW1hYCBpZiBpdCBpcyBhIHN0cmluZy4gQSB3YXJuaW5nIGlzIGdlbmVyYXRlZCB3aGVuXG4gKiBpdCBpcyBub3QgYSBzdHJpbmcuIFJldHVybnMgYHVuZGVmaW5lZGAgd2hlbiBhIHZhbGlkIGRpc2NyaW1pbmF0b3IgaXMgbm90IHByZXNlbnQuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZnJvbSB3aGljaCB0aGUgZGlzY3JpbWluYXRvciBpcyBwb3RlbnRpYWxseSBvYnRhaW5lZFxuICogQHJldHVybnMgLSBUaGUgYGRpc2NyaW1pbmF0b3IucHJvcGVydHlOYW1lYCBpZiBpdCBleGlzdHMgaW4gdGhlIHNjaGVtYSwgb3RoZXJ3aXNlIGB1bmRlZmluZWRgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEoc2NoZW1hKSB7XG4gICAgbGV0IGRpc2NyaW1pbmF0b3I7XG4gICAgY29uc3QgbWF5YmVTdHJpbmcgPSBnZXQoc2NoZW1hLCAnZGlzY3JpbWluYXRvci5wcm9wZXJ0eU5hbWUnLCB1bmRlZmluZWQpO1xuICAgIGlmIChpc1N0cmluZyhtYXliZVN0cmluZykpIHtcbiAgICAgICAgZGlzY3JpbWluYXRvciA9IG1heWJlU3RyaW5nO1xuICAgIH1cbiAgICBlbHNlIGlmIChtYXliZVN0cmluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgRXhwZWN0aW5nIGRpc2NyaW1pbmF0b3IgdG8gYmUgYSBzdHJpbmcsIGdvdCBcIiR7dHlwZW9mIG1heWJlU3RyaW5nfVwiIGluc3RlYWRgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRpc2NyaW1pbmF0b3I7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hLmpzLm1hcCIsIi8qKiBHaXZlbiBhIHNwZWNpZmljIGB2YWx1ZWAgYXR0ZW1wdHMgdG8gZ3Vlc3MgdGhlIHR5cGUgb2YgYSBzY2hlbWEgZWxlbWVudC4gSW4gdGhlIGNhc2Ugd2hlcmUgd2UgaGF2ZSB0byBpbXBsaWNpdGx5XG4gKiAgY3JlYXRlIGEgc2NoZW1hLCBpdCBpcyB1c2VmdWwgdG8ga25vdyB3aGF0IHR5cGUgdG8gdXNlIGJhc2VkIG9uIHRoZSBkYXRhIHdlIGFyZSBkZWZpbmluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgZnJvbSB3aGljaCB0byBndWVzcyB0aGUgdHlwZVxuICogQHJldHVybnMgLSBUaGUgYmVzdCBndWVzcyBmb3IgdGhlIG9iamVjdCB0eXBlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGd1ZXNzVHlwZSh2YWx1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJ2FycmF5JztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuICdzdHJpbmcnO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJ251bGwnO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuICdib29sZWFuJztcbiAgICB9XG4gICAgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICdudW1iZXInO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gJ29iamVjdCc7XG4gICAgfVxuICAgIC8vIERlZmF1bHQgdG8gc3RyaW5nIGlmIHdlIGNhbid0IGZpZ3VyZSBpdCBvdXRcbiAgICByZXR1cm4gJ3N0cmluZyc7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ndWVzc1R5cGUuanMubWFwIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgYmFzZVVuaXEgPSByZXF1aXJlKCcuL19iYXNlVW5pcScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcywgaW4gb3JkZXIsIGZyb20gYWxsIGdpdmVuIGFycmF5cyB1c2luZ1xuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlvbihbMl0sIFsxLCAyXSk7XG4gKiAvLyA9PiBbMiwgMV1cbiAqL1xudmFyIHVuaW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmlvbjtcbiIsImltcG9ydCBndWVzc1R5cGUgZnJvbSAnLi9ndWVzc1R5cGUnO1xuLyoqIEdldHMgdGhlIHR5cGUgb2YgYSBnaXZlbiBgc2NoZW1hYC4gSWYgdGhlIHR5cGUgaXMgbm90IGV4cGxpY2l0bHkgZGVmaW5lZCwgdGhlbiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gaW5mZXIgaXQgZnJvbVxuICogb3RoZXIgZWxlbWVudHMgb2YgdGhlIHNjaGVtYSBhcyBmb2xsb3dzOlxuICogLSBzY2hlbWEuY29uc3Q6IFJldHVybnMgdGhlIGBndWVzc1R5cGUoKWAgb2YgdGhhdCB2YWx1ZVxuICogLSBzY2hlbWEuZW51bTogUmV0dXJucyBgc3RyaW5nYFxuICogLSBzY2hlbWEucHJvcGVydGllczogUmV0dXJucyBgb2JqZWN0YFxuICogLSBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXM6IFJldHVybnMgYG9iamVjdGBcbiAqIC0gdHlwZSBpcyBhbiBhcnJheSB3aXRoIGEgbGVuZ3RoIG9mIDIgYW5kIG9uZSB0eXBlIGlzICdudWxsJzogUmV0dXJucyB0aGUgb3RoZXIgdHlwZVxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0byBnZXQgdGhlIHR5cGVcbiAqIEByZXR1cm5zIC0gVGhlIHR5cGUgb2YgdGhlIHNjaGVtYVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY2hlbWFUeXBlKHNjaGVtYSkge1xuICAgIGxldCB7IHR5cGUgfSA9IHNjaGVtYTtcbiAgICBpZiAoIXR5cGUgJiYgc2NoZW1hLmNvbnN0KSB7XG4gICAgICAgIHJldHVybiBndWVzc1R5cGUoc2NoZW1hLmNvbnN0KTtcbiAgICB9XG4gICAgaWYgKCF0eXBlICYmIHNjaGVtYS5lbnVtKSB7XG4gICAgICAgIHJldHVybiAnc3RyaW5nJztcbiAgICB9XG4gICAgaWYgKCF0eXBlICYmIChzY2hlbWEucHJvcGVydGllcyB8fCBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpKSB7XG4gICAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgICAgaWYgKHR5cGUubGVuZ3RoID09PSAyICYmIHR5cGUuaW5jbHVkZXMoJ251bGwnKSkge1xuICAgICAgICAgICAgdHlwZSA9IHR5cGUuZmluZCgodHlwZSkgPT4gdHlwZSAhPT0gJ251bGwnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlWzBdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0eXBlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0U2NoZW1hVHlwZS5qcy5tYXAiLCJpbXBvcnQgdW5pb24gZnJvbSAnbG9kYXNoL3VuaW9uJztcbmltcG9ydCB7IFJFUVVJUkVEX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBnZXRTY2hlbWFUeXBlIGZyb20gJy4vZ2V0U2NoZW1hVHlwZSc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogUmVjdXJzaXZlbHkgbWVyZ2UgZGVlcGx5IG5lc3RlZCBzY2hlbWFzLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGBtZXJnZVNjaGVtYXNgIGFuZCBgbWVyZ2VPYmplY3RzYCBpcyB0aGF0XG4gKiBgbWVyZ2VTY2hlbWFzYCBvbmx5IGNvbmNhdHMgYXJyYXlzIGZvciB2YWx1ZXMgdW5kZXIgdGhlICdyZXF1aXJlZCcga2V5d29yZCwgYW5kIHdoZW4gaXQgZG9lcywgaXQgZG9lc24ndCBpbmNsdWRlXG4gKiBkdXBsaWNhdGUgdmFsdWVzLlxuICpcbiAqIEBwYXJhbSBvYmoxIC0gVGhlIGZpcnN0IHNjaGVtYSBvYmplY3QgdG8gbWVyZ2VcbiAqIEBwYXJhbSBvYmoyIC0gVGhlIHNlY29uZCBzY2hlbWEgb2JqZWN0IHRvIG1lcmdlXG4gKiBAcmV0dXJucyAtIFRoZSBtZXJnZWQgc2NoZW1hIG9iamVjdFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVNjaGVtYXMob2JqMSwgb2JqMikge1xuICAgIGNvbnN0IGFjYyA9IE9iamVjdC5hc3NpZ24oe30sIG9iajEpOyAvLyBQcmV2ZW50IG11dGF0aW9uIG9mIHNvdXJjZSBvYmplY3QuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iajIpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdCA9IG9iajEgPyBvYmoxW2tleV0gOiB7fSwgcmlnaHQgPSBvYmoyW2tleV07XG4gICAgICAgIGlmIChvYmoxICYmIGtleSBpbiBvYmoxICYmIGlzT2JqZWN0KHJpZ2h0KSkge1xuICAgICAgICAgICAgYWNjW2tleV0gPSBtZXJnZVNjaGVtYXMobGVmdCwgcmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9iajEgJiZcbiAgICAgICAgICAgIG9iajIgJiZcbiAgICAgICAgICAgIChnZXRTY2hlbWFUeXBlKG9iajEpID09PSAnb2JqZWN0JyB8fCBnZXRTY2hlbWFUeXBlKG9iajIpID09PSAnb2JqZWN0JykgJiZcbiAgICAgICAgICAgIGtleSA9PT0gUkVRVUlSRURfS0VZICYmXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGxlZnQpICYmXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KHJpZ2h0KSkge1xuICAgICAgICAgICAgLy8gRG9uJ3QgaW5jbHVkZSBkdXBsaWNhdGUgdmFsdWVzIHdoZW4gbWVyZ2luZyAncmVxdWlyZWQnIGZpZWxkcy5cbiAgICAgICAgICAgIGFjY1trZXldID0gdW5pb24obGVmdCwgcmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWNjW2tleV0gPSByaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIGFjYyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZXJnZVNjaGVtYXMuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoL3NldCc7XG5pbXBvcnQgdGltZXMgZnJvbSAnbG9kYXNoL3RpbWVzJztcbmltcG9ydCB0cmFuc2Zvcm0gZnJvbSAnbG9kYXNoL3RyYW5zZm9ybSc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL21lcmdlJztcbmltcG9ydCBmbGF0dGVuRGVlcCBmcm9tICdsb2Rhc2gvZmxhdHRlbkRlZXAnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuaW1wb3J0IG1lcmdlQWxsT2YgZnJvbSAnanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2YnO1xuaW1wb3J0IHsgQURESVRJT05BTF9QUk9QRVJUSUVTX0tFWSwgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHLCBBTExfT0ZfS0VZLCBBTllfT0ZfS0VZLCBERVBFTkRFTkNJRVNfS0VZLCBJRl9LRVksIE9ORV9PRl9LRVksIFJFRl9LRVksIFBST1BFUlRJRVNfS0VZLCBJVEVNU19LRVksIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBmaW5kU2NoZW1hRGVmaW5pdGlvbiwgeyBzcGxpdEtleUVsZW1lbnRGcm9tT2JqZWN0IH0gZnJvbSAnLi4vZmluZFNjaGVtYURlZmluaXRpb24nO1xuaW1wb3J0IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEgZnJvbSAnLi4vZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSc7XG5pbXBvcnQgZ3Vlc3NUeXBlIGZyb20gJy4uL2d1ZXNzVHlwZSc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi4vaXNPYmplY3QnO1xuaW1wb3J0IG1lcmdlU2NoZW1hcyBmcm9tICcuLi9tZXJnZVNjaGVtYXMnO1xuaW1wb3J0IGdldEZpcnN0TWF0Y2hpbmdPcHRpb24gZnJvbSAnLi9nZXRGaXJzdE1hdGNoaW5nT3B0aW9uJztcbi8qKiBSZXRyaWV2ZXMgYW4gZXhwYW5kZWQgc2NoZW1hIHRoYXQgaGFzIGhhZCBhbGwgb2YgaXRzIGNvbmRpdGlvbnMsIGFkZGl0aW9uYWwgcHJvcGVydGllcywgcmVmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzXG4gKiByZXNvbHZlZCBhbmQgbWVyZ2VkIGludG8gdGhlIGBzY2hlbWFgIGdpdmVuIGEgYHZhbGlkYXRvcmAsIGByb290U2NoZW1hYCBhbmQgYHJhd0Zvcm1EYXRhYCB0aGF0IGlzIHVzZWQgdG8gZG8gdGhlXG4gKiBwb3RlbnRpYWxseSByZWN1cnNpdmUgcmVzb2x1dGlvbi5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXRyaWV2aW5nIGEgc2NoZW1hIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYT17fV0gLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBbcmF3Rm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgc2NoZW1hIGhhdmluZyBpdHMgY29uZGl0aW9ucywgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCByZWZlcmVuY2VzIGFuZCBkZXBlbmRlbmNpZXMgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEgPSB7fSwgcmF3Rm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgcmV0dXJuIHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIHJhd0Zvcm1EYXRhLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpWzBdO1xufVxuLyoqIFJlc29sdmVzIGEgY29uZGl0aW9uYWwgYmxvY2sgKGlmL2Vsc2UvdGhlbikgYnkgcmVtb3ZpbmcgdGhlIGNvbmRpdGlvbiBhbmQgbWVyZ2luZyB0aGUgYXBwcm9wcmlhdGUgY29uZGl0aW9uYWwgYnJhbmNoXG4gKiB3aXRoIHRoZSByZXN0IG9mIHRoZSBzY2hlbWEuIElmIGBleHBhbmRBbGxCcmFuY2hlc2AgaXMgdHJ1ZSwgdGhlbiB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJhbCgpYCByZXN1bHRzIGZvciBib3RoXG4gKiBjb25kaXRpb25zIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgaXMgdXNlZCB0byBkZXRlY3QgdmFsaWQgc2NoZW1hIGNvbmRpdGlvbnNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXNvbHZpbmcgYSBjb25kaXRpb24gaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBleHBhbmRBbGxCcmFuY2hlcyAtIEZsYWcsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGFsbCBwb3NzaWJsZSBicmFuY2hlcyBvZiBjb25kaXRpb25zLCBhbnkvb25lT2YgYW5kXG4gKiAgICAgICAgICBkZXBlbmRlbmNpZXMgYXMgYSBsaXN0IG9mIHNjaGVtYXNcbiAqIEBwYXJhbSByZWN1cnNlTGlzdCAtIFRoZSBsaXN0IG9mIHJlY3Vyc2l2ZSByZWZlcmVuY2VzIGFscmVhZHkgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gQSBsaXN0IG9mIHNjaGVtYXMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY29uZGl0aW9ucyByZXNvbHZlZCwgcG9zc2libHkgd2l0aCBhbGwgYnJhbmNoZXMgZXhwYW5kZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb25kaXRpb24odmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgeyBpZjogZXhwcmVzc2lvbiwgdGhlbiwgZWxzZTogb3RoZXJ3aXNlLCAuLi5yZXNvbHZlZFNjaGVtYUxlc3NDb25kaXRpb25hbCB9ID0gc2NoZW1hO1xuICAgIGNvbnN0IGNvbmRpdGlvblZhbHVlID0gdmFsaWRhdG9yLmlzVmFsaWQoZXhwcmVzc2lvbiwgZm9ybURhdGEgfHwge30sIHJvb3RTY2hlbWEpO1xuICAgIGxldCByZXNvbHZlZFNjaGVtYXMgPSBbcmVzb2x2ZWRTY2hlbWFMZXNzQ29uZGl0aW9uYWxdO1xuICAgIGxldCBzY2hlbWFzID0gW107XG4gICAgaWYgKGV4cGFuZEFsbEJyYW5jaGVzKSB7XG4gICAgICAgIGlmICh0aGVuICYmIHR5cGVvZiB0aGVuICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHNjaGVtYXMgPSBzY2hlbWFzLmNvbmNhdChyZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgdGhlbiwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXJ3aXNlICYmIHR5cGVvZiBvdGhlcndpc2UgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgc2NoZW1hcyA9IHNjaGVtYXMuY29uY2F0KHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBvdGhlcndpc2UsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbmFsU2NoZW1hID0gY29uZGl0aW9uVmFsdWUgPyB0aGVuIDogb3RoZXJ3aXNlO1xuICAgICAgICBpZiAoY29uZGl0aW9uYWxTY2hlbWEgJiYgdHlwZW9mIGNvbmRpdGlvbmFsU2NoZW1hICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHNjaGVtYXMgPSBzY2hlbWFzLmNvbmNhdChyZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgY29uZGl0aW9uYWxTY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNjaGVtYXMubGVuZ3RoKSB7XG4gICAgICAgIHJlc29sdmVkU2NoZW1hcyA9IHNjaGVtYXMubWFwKChzKSA9PiBtZXJnZVNjaGVtYXMocmVzb2x2ZWRTY2hlbWFMZXNzQ29uZGl0aW9uYWwsIHMpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkU2NoZW1hcy5mbGF0TWFwKChzKSA9PiByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgcywgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbn1cbi8qKiBHaXZlbiBhIGxpc3Qgb2YgbGlzdHMgb2YgYWxsT2YsIGFueU9mIG9yIG9uZU9mIHZhbHVlcywgY3JlYXRlIGEgbGlzdCBvZiBsaXN0cyBvZiBhbGwgcGVybXV0YXRpb25zIG9mIHRoZSB2YWx1ZXMuIFRoZVxuICogYGxpc3RPZkxpc3RzYCBpcyBleHBlY3RlZCB0byBiZSBhbGwgcmVzb2x2ZWQgdmFsdWVzIG9mIHRoZSAxc3QuLi5udGggc2NoZW1hcyB3aXRoaW4gYW4gYGFsbE9mYCwgYGFueU9mYCBvciBgb25lT2ZgLlxuICogRnJvbSB0aG9zZSBsaXN0cywgYnVpbGQgYSBtYXRyaXggZm9yIGVhY2ggYHh4eE9mYCB3aGVyZSB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHNjaGVtYSBmb3IgYSByb3cgaW4gdGhlIGxpc3Qgb2YgbGlzdHMuXG4gKlxuICogRm9yIGV4YW1wbGU6XG4gKiAtIElmIHRoZXJlIGFyZSB0aHJlZSB4eHhPZiByb3dzIChBLCBCLCBDKSBhbmQgdGhleSBoYXZlIGJlZW4gcmVzb2x2ZWQgc3VjaCB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIEEsIHR3byBCIGFuZCB0aHJlZVxuICogICBDIHNjaGVtYXMgdGhlbjpcbiAqICAgLSBUaGUgcGVybXV0YXRpb24gZm9yIHRoZSBmaXJzdCByb3cgaXMgYFtbQV1dYFxuICogICAtIFRoZSBwZXJtdXRhdGlvbnMgZm9yIHRoZSBzZWNvbmQgcm93IGFyZSBgW1tBLEIxXSwgW0EsQjJdXWBcbiAqICAgLSBUaGUgcGVybXV0YXRpb25zIGZvciB0aGUgdGhpcmQgcm93IGFyZSBgW1tBLEIxLEMxXSwgW0EsQjEsQzJdLCBbQSxCMSxDM10sIFtBLEIyLEMxXSwgW0EsQjIsQzJdLCBbQSxCMixDM11dYFxuICpcbiAqIEBwYXJhbSBsaXN0T2ZMaXN0cyAtIFRoZSBsaXN0IG9mIGxpc3RzIG9mIGVsZW1lbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBhbGxPZiwgYW55T2Ygb3Igb25lT2YgcmVzb2x2ZWQgdmFsdWVzIGluIG9yZGVyXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIGFsbCBwZXJtdXRhdGlvbnMgb2Ygc2NoZW1hcyBmb3IgYSBzZXQgb2YgYHh4eE9mYHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbFBlcm11dGF0aW9uc09mWHh4T2YobGlzdE9mTGlzdHMpIHtcbiAgICBjb25zdCBhbGxQZXJtdXRhdGlvbnMgPSBsaXN0T2ZMaXN0cy5yZWR1Y2UoKHBlcm11dGF0aW9ucywgbGlzdCkgPT4ge1xuICAgICAgICAvLyBXaGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIHNldCBvZiBzY2hlbWFzIGZvciBhIHJvdywgZHVwbGljYXRlIHRoZSBzZXQgb2YgcGVybXV0YXRpb25zIGFuZCBhZGQgaW4gdGhlIHZhbHVlc1xuICAgICAgICBpZiAobGlzdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICByZXR1cm4gbGlzdC5mbGF0TWFwKChlbGVtZW50KSA9PiB0aW1lcyhwZXJtdXRhdGlvbnMubGVuZ3RoLCAoaSkgPT4gWy4uLnBlcm11dGF0aW9uc1tpXV0uY29uY2F0KGVsZW1lbnQpKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGp1c3QgcHVzaCBpbiB0aGUgc2luZ2xlIHZhbHVlIGludG8gdGhlIGN1cnJlbnQgc2V0IG9mIHBlcm11dGF0aW9uc1xuICAgICAgICBwZXJtdXRhdGlvbnMuZm9yRWFjaCgocGVybXV0YXRpb24pID0+IHBlcm11dGF0aW9uLnB1c2gobGlzdFswXSkpO1xuICAgICAgICByZXR1cm4gcGVybXV0YXRpb25zO1xuICAgIH0sIFtbXV0gLy8gU3RhcnQgd2l0aCBhbiBlbXB0eSBsaXN0XG4gICAgKTtcbiAgICByZXR1cm4gYWxsUGVybXV0YXRpb25zO1xufVxuLyoqIFJlc29sdmVzIHJlZmVyZW5jZXMgYW5kIGRlcGVuZGVuY2llcyB3aXRoaW4gYSBzY2hlbWEgYW5kIGl0cyAnYWxsT2YnIGNoaWxkcmVuLiBQYXNzZXMgdGhlIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZ1xuICogZG93biB0byB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJuYWwoKWAsIGByZXNvbHZlUmVmZXJlbmNlKClgIGFuZCBgcmVzb2x2ZURlcGVuZGVuY2llcygpYCBoZWxwZXIgY2FsbHMuIElmXG4gKiBgZXhwYW5kQWxsQnJhbmNoZXNgIGlzIHRydWUsIHRoZW4gYWxsIHBvc3NpYmxlIGRlcGVuZGVuY2llcyBhbmQvb3IgYWxsT2YgYnJhbmNoZXMgYXJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIHNjaGVtYSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgbGlzdCBvZiBzY2hlbWFzIGhhdmluZyBpdHMgcmVmZXJlbmNlcywgZGVwZW5kZW5jaWVzIGFuZCBhbGxPZiBzY2hlbWFzIHJlc29sdmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGNvbnN0IHVwZGF0ZWRTY2hlbWFzID0gcmVzb2x2ZVJlZmVyZW5jZSh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSk7XG4gICAgaWYgKHVwZGF0ZWRTY2hlbWFzLmxlbmd0aCA+IDEgfHwgdXBkYXRlZFNjaGVtYXNbMF0gIT09IHNjaGVtYSkge1xuICAgICAgICAvLyByZXR1cm4gdGhlIHVwZGF0ZWRTY2hlbWFzIGFycmF5IGlmIGl0IGhhcyBlaXRoZXIgbXVsdGlwbGUgc2NoZW1hcyB3aXRoaW4gaXRcbiAgICAgICAgLy8gT1IgdGhlIGZpcnN0IHNjaGVtYSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsIHNjaGVtYVxuICAgICAgICByZXR1cm4gdXBkYXRlZFNjaGVtYXM7XG4gICAgfVxuICAgIGlmIChERVBFTkRFTkNJRVNfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCByZXNvbHZlZFNjaGVtYXMgPSByZXNvbHZlRGVwZW5kZW5jaWVzKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhKTtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVkU2NoZW1hcy5mbGF0TWFwKChzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmV0cmlldmVTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHMsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChBTExfT0ZfS0VZIGluIHNjaGVtYSAmJiBBcnJheS5pc0FycmF5KHNjaGVtYS5hbGxPZikpIHtcbiAgICAgICAgY29uc3QgYWxsT2ZTY2hlbWFFbGVtZW50cyA9IHNjaGVtYS5hbGxPZi5tYXAoKGFsbE9mU3Vic2NoZW1hKSA9PiByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgYWxsT2ZTdWJzY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgICAgIGNvbnN0IGFsbFBlcm11dGF0aW9ucyA9IGdldEFsbFBlcm11dGF0aW9uc09mWHh4T2YoYWxsT2ZTY2hlbWFFbGVtZW50cyk7XG4gICAgICAgIHJldHVybiBhbGxQZXJtdXRhdGlvbnMubWFwKChwZXJtdXRhdGlvbikgPT4gKHsgLi4uc2NoZW1hLCBhbGxPZjogcGVybXV0YXRpb24gfSkpO1xuICAgIH1cbiAgICAvLyBObyAkcmVmIG9yIGRlcGVuZGVuY2llcyBvciBhbGxPZiBhdHRyaWJ1dGUgd2FzIGZvdW5kLCByZXR1cm5pbmcgdGhlIG9yaWdpbmFsIHNjaGVtYS5cbiAgICByZXR1cm4gW3NjaGVtYV07XG59XG4vKiogUmVzb2x2ZXMgYWxsIHJlZmVyZW5jZXMgd2l0aGluIGEgc2NoZW1hIGFuZCB0aGVuIHJldHVybnMgdGhlIGByZXRyaWV2ZVNjaGVtYUludGVybmFsKClgIGlmIHRoZSByZXNvbHZlZCBzY2hlbWEgaXNcbiAqIGFjdHVhbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBvcmlnaW5hbC4gUGFzc2VzIHRoZSBgZXhwYW5kQWxsQnJhbmNoZXNgIGZsYWcgZG93biB0byB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJuYWwoKWBcbiAqIGhlbHBlciBjYWxsLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIHJlZmVyZW5jZSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgbGlzdCBzY2hlbWFzIHJldHJpZXZlZCBhZnRlciBoYXZpbmcgYWxsIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWZlcmVuY2UodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgdXBkYXRlZFNjaGVtYSA9IHJlc29sdmVBbGxSZWZlcmVuY2VzKHNjaGVtYSwgcm9vdFNjaGVtYSwgcmVjdXJzZUxpc3QpO1xuICAgIGlmICh1cGRhdGVkU2NoZW1hICE9PSBzY2hlbWEpIHtcbiAgICAgICAgLy8gT25seSBjYWxsIHRoaXMgaWYgdGhlIHNjaGVtYSB3YXMgYWN0dWFsbHkgY2hhbmdlZCBieSB0aGUgYHJlc29sdmVBbGxSZWZlcmVuY2VzKClgIGZ1bmN0aW9uXG4gICAgICAgIHJldHVybiByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgdXBkYXRlZFNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICByZXR1cm4gW3NjaGVtYV07XG59XG4vKiogUmVzb2x2ZXMgYWxsIHJlZmVyZW5jZXMgd2l0aGluIHRoZSBzY2hlbWEgaXRzZWxmIGFzIHdlbGwgYXMgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGFuZCBhcnJheSBpdGVtcy5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGFsbCByZWZlcmVuY2VzIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBMaXN0IG9mICRyZWZzIGFscmVhZHkgcmVzb2x2ZWQgdG8gcHJldmVudCByZWN1cnNpb25cbiAqIEByZXR1cm5zIC0gZ2l2ZW4gc2NoZW1hIHdpbGwgYWxsIHJlZmVyZW5jZXMgcmVzb2x2ZWQgb3IgdGhlIG9yaWdpbmFsIHNjaGVtYSBpZiBubyBpbnRlcm5hbCBgJHJlZnNgIHdlcmUgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBbGxSZWZlcmVuY2VzKHNjaGVtYSwgcm9vdFNjaGVtYSwgcmVjdXJzZUxpc3QpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHNjaGVtYSkpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG4gICAgbGV0IHJlc29sdmVkU2NoZW1hID0gc2NoZW1hO1xuICAgIC8vIHJlc29sdmUgdG9wIGxldmVsIHJlZlxuICAgIGlmIChSRUZfS0VZIGluIHJlc29sdmVkU2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHsgJHJlZiwgLi4ubG9jYWxTY2hlbWEgfSA9IHJlc29sdmVkU2NoZW1hO1xuICAgICAgICAvLyBDaGVjayBmb3IgYSByZWN1cnNpdmUgcmVmZXJlbmNlIGFuZCBzdG9wIHRoZSBsb29wXG4gICAgICAgIGlmIChyZWN1cnNlTGlzdC5pbmNsdWRlcygkcmVmKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkU2NoZW1hO1xuICAgICAgICB9XG4gICAgICAgIHJlY3Vyc2VMaXN0LnB1c2goJHJlZik7XG4gICAgICAgIC8vIFJldHJpZXZlIHRoZSByZWZlcmVuY2VkIHNjaGVtYSBkZWZpbml0aW9uLlxuICAgICAgICBjb25zdCByZWZTY2hlbWEgPSBmaW5kU2NoZW1hRGVmaW5pdGlvbigkcmVmLCByb290U2NoZW1hKTtcbiAgICAgICAgcmVzb2x2ZWRTY2hlbWEgPSB7IC4uLnJlZlNjaGVtYSwgLi4ubG9jYWxTY2hlbWEgfTtcbiAgICB9XG4gICAgaWYgKFBST1BFUlRJRVNfS0VZIGluIHJlc29sdmVkU2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuTGlzdHMgPSBbXTtcbiAgICAgICAgY29uc3QgdXBkYXRlZFByb3BzID0gdHJhbnNmb3JtKHJlc29sdmVkU2NoZW1hW1BST1BFUlRJRVNfS0VZXSwgKHJlc3VsdCwgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRMaXN0ID0gWy4uLnJlY3Vyc2VMaXN0XTtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gcmVzb2x2ZUFsbFJlZmVyZW5jZXModmFsdWUsIHJvb3RTY2hlbWEsIGNoaWxkTGlzdCk7XG4gICAgICAgICAgICBjaGlsZHJlbkxpc3RzLnB1c2goY2hpbGRMaXN0KTtcbiAgICAgICAgfSwge30pO1xuICAgICAgICBtZXJnZShyZWN1cnNlTGlzdCwgdW5pcShmbGF0dGVuRGVlcChjaGlsZHJlbkxpc3RzKSkpO1xuICAgICAgICByZXNvbHZlZFNjaGVtYSA9IHsgLi4ucmVzb2x2ZWRTY2hlbWEsIFtQUk9QRVJUSUVTX0tFWV06IHVwZGF0ZWRQcm9wcyB9O1xuICAgIH1cbiAgICBpZiAoSVRFTVNfS0VZIGluIHJlc29sdmVkU2NoZW1hICYmXG4gICAgICAgICFBcnJheS5pc0FycmF5KHJlc29sdmVkU2NoZW1hLml0ZW1zKSAmJlxuICAgICAgICB0eXBlb2YgcmVzb2x2ZWRTY2hlbWEuaXRlbXMgIT09ICdib29sZWFuJykge1xuICAgICAgICByZXNvbHZlZFNjaGVtYSA9IHtcbiAgICAgICAgICAgIC4uLnJlc29sdmVkU2NoZW1hLFxuICAgICAgICAgICAgaXRlbXM6IHJlc29sdmVBbGxSZWZlcmVuY2VzKHJlc29sdmVkU2NoZW1hLml0ZW1zLCByb290U2NoZW1hLCByZWN1cnNlTGlzdCksXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBpc0VxdWFsKHNjaGVtYSwgcmVzb2x2ZWRTY2hlbWEpID8gc2NoZW1hIDogcmVzb2x2ZWRTY2hlbWE7XG59XG4vKiogQ3JlYXRlcyBuZXcgJ3Byb3BlcnRpZXMnIGl0ZW1zIGZvciBlYWNoIGtleSBpbiB0aGUgYGZvcm1EYXRhYFxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHRoZVNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBleGlzdGluZyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzICogQHBhcmFtIHZhbGlkYXRvclxuICogQHBhcmFtIFthRm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgdXBkYXRlZCBzY2hlbWEgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgc3R1YmJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3R1YkV4aXN0aW5nQWRkaXRpb25hbFByb3BlcnRpZXModmFsaWRhdG9yLCB0aGVTY2hlbWEsIHJvb3RTY2hlbWEsIGFGb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICAvLyBDbG9uZSB0aGUgc2NoZW1hIHNvIHRoYXQgd2UgZG9uJ3QgcnVpbiB0aGUgY29uc3VtZXIncyBvcmlnaW5hbFxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgICAgLi4udGhlU2NoZW1hLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7IC4uLnRoZVNjaGVtYS5wcm9wZXJ0aWVzIH0sXG4gICAgfTtcbiAgICAvLyBtYWtlIHN1cmUgZm9ybURhdGEgaXMgYW4gb2JqZWN0XG4gICAgY29uc3QgZm9ybURhdGEgPSBhRm9ybURhdGEgJiYgaXNPYmplY3QoYUZvcm1EYXRhKSA/IGFGb3JtRGF0YSA6IHt9O1xuICAgIE9iamVjdC5rZXlzKGZvcm1EYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKGtleSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBzdHViLCBvdXIgc2NoZW1hIGFscmVhZHkgaGFzIHRoZSBwcm9wZXJ0eVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBpZiAoUkVGX0tFWSBpbiBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHJldHJpZXZlU2NoZW1hKHZhbGlkYXRvciwgeyAkcmVmOiBnZXQoc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLCBbUkVGX0tFWV0pIH0sIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgndHlwZScgaW4gc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXMgPSB7IC4uLnNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoQU5ZX09GX0tFWSBpbiBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgfHwgT05FX09GX0tFWSBpbiBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgIC4uLnNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXMgPSB7IHR5cGU6IGd1ZXNzVHlwZShnZXQoZm9ybURhdGEsIFtrZXldKSkgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0geyB0eXBlOiBndWVzc1R5cGUoZ2V0KGZvcm1EYXRhLCBba2V5XSkpIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIHR5cGUgb2Ygb3VyIG5ldyBrZXkgc2hvdWxkIG1hdGNoIHRoZSBhZGRpdGlvbmFsUHJvcGVydGllcyB2YWx1ZTtcbiAgICAgICAgc2NoZW1hLnByb3BlcnRpZXNba2V5XSA9IGFkZGl0aW9uYWxQcm9wZXJ0aWVzO1xuICAgICAgICAvLyBTZXQgb3VyIGFkZGl0aW9uYWwgcHJvcGVydHkgZmxhZyBzbyB3ZSBrbm93IGl0IHdhcyBkeW5hbWljYWxseSBhZGRlZFxuICAgICAgICBzZXQoc2NoZW1hLnByb3BlcnRpZXMsIFtrZXksIEFERElUSU9OQUxfUFJPUEVSVFlfRkxBR10sIHRydWUpO1xuICAgIH0pO1xuICAgIHJldHVybiBzY2hlbWE7XG59XG4vKiogSW50ZXJuYWwgaGFuZGxlciB0aGF0IHJldHJpZXZlcyBhbiBleHBhbmRlZCBzY2hlbWEgdGhhdCBoYXMgaGFkIGFsbCBvZiBpdHMgY29uZGl0aW9ucywgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLFxuICogcmVmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzIHJlc29sdmVkIGFuZCBtZXJnZWQgaW50byB0aGUgYHNjaGVtYWAgZ2l2ZW4gYSBgdmFsaWRhdG9yYCwgYHJvb3RTY2hlbWFgIGFuZCBgcmF3Rm9ybURhdGFgXG4gKiB0aGF0IGlzIHVzZWQgdG8gZG8gdGhlIHBvdGVudGlhbGx5IHJlY3Vyc2l2ZSByZXNvbHV0aW9uLiBJZiBgZXhwYW5kQWxsQnJhbmNoZXNgIGlzIHRydWUsIHRoZW4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzXG4gKiBvZiB0aGUgc2NoZW1hIGFuZCBpdHMgcmVmZXJlbmNlcywgY29uZGl0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFyZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXRyaWV2aW5nIGEgc2NoZW1hIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gW3Jhd0Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW2V4cGFuZEFsbEJyYW5jaGVzPWZhbHNlXSAtIEZsYWcsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGFsbCBwb3NzaWJsZSBicmFuY2hlcyBvZiBjb25kaXRpb25zLCBhbnkvb25lT2YgYW5kXG4gKiAgICAgICAgICBkZXBlbmRlbmNpZXMgYXMgYSBsaXN0IG9mIHNjaGVtYXNcbiAqIEBwYXJhbSBbcmVjdXJzZUxpc3Q9W11dIC0gVGhlIG9wdGlvbmFsLCBsaXN0IG9mIHJlY3Vyc2l2ZSByZWZlcmVuY2VzIGFscmVhZHkgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIHNjaGVtYShzKSByZXN1bHRpbmcgZnJvbSBoYXZpbmcgaXRzIGNvbmRpdGlvbnMsIGFkZGl0aW9uYWwgcHJvcGVydGllcywgcmVmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICByZXNvbHZlZC4gTXVsdGlwbGUgc2NoZW1hcyBtYXkgYmUgcmV0dXJuZWQgaWYgYGV4cGFuZEFsbEJyYW5jaGVzYCBpcyB0cnVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV0cmlldmVTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgcmF3Rm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzID0gZmFsc2UsIHJlY3Vyc2VMaXN0ID0gW10sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgaWYgKCFpc09iamVjdChzY2hlbWEpKSB7XG4gICAgICAgIHJldHVybiBbe31dO1xuICAgIH1cbiAgICBjb25zdCByZXNvbHZlZFNjaGVtYXMgPSByZXNvbHZlU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIHJhd0Zvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgcmV0dXJuIHJlc29sdmVkU2NoZW1hcy5mbGF0TWFwKChzKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgbGV0IHJlc29sdmVkU2NoZW1hID0gcztcbiAgICAgICAgaWYgKElGX0tFWSBpbiByZXNvbHZlZFNjaGVtYSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVDb25kaXRpb24odmFsaWRhdG9yLCByZXNvbHZlZFNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCByYXdGb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBTExfT0ZfS0VZIGluIHJlc29sdmVkU2NoZW1hKSB7XG4gICAgICAgICAgICAvLyByZXNvbHZlIGFsbE9mIHNjaGVtYXNcbiAgICAgICAgICAgIGlmIChleHBhbmRBbGxCcmFuY2hlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgYWxsT2YsIC4uLnJlc3RPZlNjaGVtYSB9ID0gcmVzb2x2ZWRTY2hlbWE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbGxPZiwgcmVzdE9mU2NoZW1hXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2l0aENvbnRhaW5zU2NoZW1hcyA9IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpdGhvdXRDb250YWluc1NjaGVtYXMgPSBbXTtcbiAgICAgICAgICAgICAgICAoX2EgPSByZXNvbHZlZFNjaGVtYS5hbGxPZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzID09PSAnb2JqZWN0JyAmJiBzLmNvbnRhaW5zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoQ29udGFpbnNTY2hlbWFzLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0Q29udGFpbnNTY2hlbWFzLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAod2l0aENvbnRhaW5zU2NoZW1hcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRTY2hlbWEgPSB7IC4uLnJlc29sdmVkU2NoZW1hLCBhbGxPZjogd2l0aG91dENvbnRhaW5zU2NoZW1hcyB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlZFNjaGVtYSA9IGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXG4gICAgICAgICAgICAgICAgICAgID8gZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YocmVzb2x2ZWRTY2hlbWEpXG4gICAgICAgICAgICAgICAgICAgIDogbWVyZ2VBbGxPZihyZXNvbHZlZFNjaGVtYSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVlcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh3aXRoQ29udGFpbnNTY2hlbWFzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFNjaGVtYS5hbGxPZiA9IHdpdGhDb250YWluc1NjaGVtYXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ2NvdWxkIG5vdCBtZXJnZSBzdWJzY2hlbWFzIGluIGFsbE9mOlxcbicsIGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgYWxsT2YsIC4uLnJlc29sdmVkU2NoZW1hV2l0aG91dEFsbE9mIH0gPSByZXNvbHZlZFNjaGVtYTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWFXaXRob3V0QWxsT2Y7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGFzQWRkaXRpb25hbFByb3BlcnRpZXMgPSBBRERJVElPTkFMX1BST1BFUlRJRVNfS0VZIGluIHJlc29sdmVkU2NoZW1hICYmIHJlc29sdmVkU2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzICE9PSBmYWxzZTtcbiAgICAgICAgaWYgKGhhc0FkZGl0aW9uYWxQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gc3R1YkV4aXN0aW5nQWRkaXRpb25hbFByb3BlcnRpZXModmFsaWRhdG9yLCByZXNvbHZlZFNjaGVtYSwgcm9vdFNjaGVtYSwgcmF3Rm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWE7XG4gICAgfSk7XG59XG4vKiogUmVzb2x2ZXMgYW4gYGFueU9mYCBvciBgb25lT2ZgIHdpdGhpbiBhIHNjaGVtYSAoaWYgcHJlc2VudCkgdG8gdGhlIGxpc3Qgb2Ygc2NoZW1hcyByZXR1cm5lZCBmcm9tXG4gKiBgcmV0cmlldmVTY2hlbWFJbnRlcm5hbCgpYCBmb3IgdGhlIGJlc3QgbWF0Y2hpbmcgb3B0aW9uLiBJZiBgZXhwYW5kQWxsQnJhbmNoZXNgIGlzIHRydWUsIHRoZW4gYSBsaXN0IG9mIHNjaGVtYXMgZm9yIEFMTFxuICogb3B0aW9ucyBhcmUgcmV0cmlldmVkIGFuZCByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXRyaWV2aW5nIGEgc2NoZW1hIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gW3Jhd0Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hLCBkZWZhdWx0cyB0byBhbiBlbXB0eSBvYmplY3RcbiAqIEByZXR1cm5zIC0gRWl0aGVyIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGJlc3QgbWF0Y2hpbmcgb3B0aW9uIG9yIGFsbCBvcHRpb25zIGlmIGBleHBhbmRBbGxCcmFuY2hlc2AgaXMgdHJ1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFueU9yT25lT2ZTY2hlbWFzKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmF3Rm9ybURhdGEpIHtcbiAgICBsZXQgYW55T3JPbmVPZjtcbiAgICBjb25zdCB7IG9uZU9mLCBhbnlPZiwgLi4ucmVtYWluaW5nIH0gPSBzY2hlbWE7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob25lT2YpKSB7XG4gICAgICAgIGFueU9yT25lT2YgPSBvbmVPZjtcbiAgICB9XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhbnlPZikpIHtcbiAgICAgICAgYW55T3JPbmVPZiA9IGFueU9mO1xuICAgIH1cbiAgICBpZiAoYW55T3JPbmVPZikge1xuICAgICAgICAvLyBFbnN1cmUgdGhhdCBkdXJpbmcgZXhwYW5kIGFsbCBicmFuY2hlcyB3ZSBwYXNzIGFuIG9iamVjdCByYXRoZXIgdGhhbiB1bmRlZmluZWQgc28gdGhhdCBhbGwgb3B0aW9ucyBhcmUgaW50ZXJyb2dhdGVkXG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gcmF3Rm9ybURhdGEgPT09IHVuZGVmaW5lZCAmJiBleHBhbmRBbGxCcmFuY2hlcyA/IHt9IDogcmF3Rm9ybURhdGE7XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hKHNjaGVtYSk7XG4gICAgICAgIGFueU9yT25lT2YgPSBhbnlPck9uZU9mLm1hcCgocykgPT4ge1xuICAgICAgICAgICAgLy8gRHVlIHRvIGFueU9mL29uZU9mIHBvc3NpYmx5IHVzaW5nIHRoZSBzYW1lICRyZWYgd2UgYWx3YXlzIHBhc3MgYSBmcmVzaCByZWN1cnNlIGxpc3QgYXJyYXkgc28gdGhhdCBlYWNoIG9wdGlvblxuICAgICAgICAgICAgLy8gY2FuIHJlc29sdmUgcmVjdXJzaXZlIHJlZmVyZW5jZXMgaW5kZXBlbmRlbnRseVxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVBbGxSZWZlcmVuY2VzKHMsIHJvb3RTY2hlbWEsIFtdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIENhbGwgdGhpcyB0byB0cmlnZ2VyIHRoZSBzZXQgb2YgaXNWYWxpZCgpIGNhbGxzIHRoYXQgdGhlIHNjaGVtYSBwYXJzZXIgd2lsbCBuZWVkXG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IGdldEZpcnN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCBmb3JtRGF0YSwgYW55T3JPbmVPZiwgcm9vdFNjaGVtYSwgZGlzY3JpbWluYXRvcik7XG4gICAgICAgIGlmIChleHBhbmRBbGxCcmFuY2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIGFueU9yT25lT2YubWFwKChpdGVtKSA9PiBtZXJnZVNjaGVtYXMocmVtYWluaW5nLCBpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgc2NoZW1hID0gbWVyZ2VTY2hlbWFzKHJlbWFpbmluZywgYW55T3JPbmVPZltvcHRpb25dKTtcbiAgICB9XG4gICAgcmV0dXJuIFtzY2hlbWFdO1xufVxuLyoqIFJlc29sdmVzIGRlcGVuZGVuY2llcyB3aXRoaW4gYSBzY2hlbWEgYW5kIGl0cyAnYW55T2Yvb25lT2YnIGNoaWxkcmVuLiBQYXNzZXMgdGhlIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZyBkb3duIHRvXG4gKiB0aGUgYHJlc29sdmVBbnlPck9uZU9mU2NoZW1hKClgIGFuZCBgcHJvY2Vzc0RlcGVuZGVuY2llcygpYCBoZWxwZXIgY2FsbHMuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGEgZGVwZW5kZW5jeSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgbGlzdCBvZiBzY2hlbWFzIHdpdGggdGhlaXIgZGVwZW5kZW5jaWVzIHJlc29sdmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRGVwZW5kZW5jaWVzKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIC8vIERyb3AgdGhlIGRlcGVuZGVuY2llcyBmcm9tIHRoZSBzb3VyY2Ugc2NoZW1hLlxuICAgIGNvbnN0IHsgZGVwZW5kZW5jaWVzLCAuLi5yZW1haW5pbmdTY2hlbWEgfSA9IHNjaGVtYTtcbiAgICBjb25zdCByZXNvbHZlZFNjaGVtYXMgPSByZXNvbHZlQW55T3JPbmVPZlNjaGVtYXModmFsaWRhdG9yLCByZW1haW5pbmdTY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCBmb3JtRGF0YSk7XG4gICAgcmV0dXJuIHJlc29sdmVkU2NoZW1hcy5mbGF0TWFwKChyZXNvbHZlZFNjaGVtYSkgPT4gcHJvY2Vzc0RlcGVuZGVuY2llcyh2YWxpZGF0b3IsIGRlcGVuZGVuY2llcywgcmVzb2x2ZWRTY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG59XG4vKiogUHJvY2Vzc2VzIGFsbCB0aGUgYGRlcGVuZGVuY2llc2AgcmVjdXJzaXZlbHkgaW50byB0aGUgbGlzdCBvZiBgcmVzb2x2ZWRTY2hlbWFgcyBhcyBuZWVkZWQuIFBhc3NlcyB0aGVcbiAqIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZyBkb3duIHRvIHRoZSBgd2l0aERlcGVuZGVudFNjaGVtYSgpYCBhbmQgdGhlIHJlY3Vyc2l2ZSBgcHJvY2Vzc0RlcGVuZGVuY2llcygpYCBoZWxwZXIgY2FsbHMuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZGVwZW5kZW5jaWVzIC0gVGhlIHNldCBvZiBkZXBlbmRlbmNpZXMgdGhhdCBuZWVkcyB0byBiZSBwcm9jZXNzZWRcbiAqIEBwYXJhbSByZXNvbHZlZFNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHByb2Nlc3NpbmcgZGVwZW5kZW5jaWVzIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBUaGUgbGlzdCBvZiByZWN1cnNpdmUgcmVmZXJlbmNlcyBhbHJlYWR5IHByb2Nlc3NlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBzY2hlbWEgd2l0aCB0aGUgYGRlcGVuZGVuY2llc2AgcmVzb2x2ZWQgaW50byBpdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0RlcGVuZGVuY2llcyh2YWxpZGF0b3IsIGRlcGVuZGVuY2llcywgcmVzb2x2ZWRTY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgbGV0IHNjaGVtYXMgPSBbcmVzb2x2ZWRTY2hlbWFdO1xuICAgIC8vIFByb2Nlc3MgZGVwZW5kZW5jaWVzIHVwZGF0aW5nIHRoZSBsb2NhbCBzY2hlbWEgcHJvcGVydGllcyBhcyBhcHByb3ByaWF0ZS5cbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3lLZXkgaW4gZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIC8vIFNraXAgdGhpcyBkZXBlbmRlbmN5IGlmIGl0cyB0cmlnZ2VyIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50LlxuICAgICAgICBpZiAoIWV4cGFuZEFsbEJyYW5jaGVzICYmIGdldChmb3JtRGF0YSwgW2RlcGVuZGVuY3lLZXldKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTa2lwIHRoaXMgZGVwZW5kZW5jeSBpZiBpdCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHNjaGVtYSAoc3VjaCBhcyB3aGVuIGRlcGVuZGVuY3lLZXkgaXMgaXRzZWxmIGEgaGlkZGVuIGRlcGVuZGVuY3kuKVxuICAgICAgICBpZiAocmVzb2x2ZWRTY2hlbWEucHJvcGVydGllcyAmJiAhKGRlcGVuZGVuY3lLZXkgaW4gcmVzb2x2ZWRTY2hlbWEucHJvcGVydGllcykpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtyZW1haW5pbmdEZXBlbmRlbmNpZXMsIGRlcGVuZGVuY3lWYWx1ZV0gPSBzcGxpdEtleUVsZW1lbnRGcm9tT2JqZWN0KGRlcGVuZGVuY3lLZXksIGRlcGVuZGVuY2llcyk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlcGVuZGVuY3lWYWx1ZSkpIHtcbiAgICAgICAgICAgIHNjaGVtYXNbMF0gPSB3aXRoRGVwZW5kZW50UHJvcGVydGllcyhyZXNvbHZlZFNjaGVtYSwgZGVwZW5kZW5jeVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc09iamVjdChkZXBlbmRlbmN5VmFsdWUpKSB7XG4gICAgICAgICAgICBzY2hlbWFzID0gd2l0aERlcGVuZGVudFNjaGVtYSh2YWxpZGF0b3IsIHJlc29sdmVkU2NoZW1hLCByb290U2NoZW1hLCBkZXBlbmRlbmN5S2V5LCBkZXBlbmRlbmN5VmFsdWUsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NoZW1hcy5mbGF0TWFwKChzY2hlbWEpID0+IHByb2Nlc3NEZXBlbmRlbmNpZXModmFsaWRhdG9yLCByZW1haW5pbmdEZXBlbmRlbmNpZXMsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjaGVtYXM7XG59XG4vKiogVXBkYXRlcyBhIHNjaGVtYSB3aXRoIGFkZGl0aW9uYWxseSByZXF1aXJlZCBwcm9wZXJ0aWVzIGFkZGVkXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIGRlcGVuZGVudCBwcm9wZXJ0aWVzIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbYWRkaXRpb25hbGx5UmVxdWlyZWRdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgYWRkaXRpb25hbGx5IHJlcXVpcmVkIG5hbWVzXG4gKiBAcmV0dXJucyAtIFRoZSBzY2hlbWEgd2l0aCB0aGUgYWRkaXRpb25hbCByZXF1aXJlZCB2YWx1ZXMgbWVyZ2VkIGluXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGVwZW5kZW50UHJvcGVydGllcyhzY2hlbWEsIGFkZGl0aW9uYWxseVJlcXVpcmVkKSB7XG4gICAgaWYgKCFhZGRpdGlvbmFsbHlSZXF1aXJlZCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cbiAgICBjb25zdCByZXF1aXJlZCA9IEFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKVxuICAgICAgICA/IEFycmF5LmZyb20obmV3IFNldChbLi4uc2NoZW1hLnJlcXVpcmVkLCAuLi5hZGRpdGlvbmFsbHlSZXF1aXJlZF0pKVxuICAgICAgICA6IGFkZGl0aW9uYWxseVJlcXVpcmVkO1xuICAgIHJldHVybiB7IC4uLnNjaGVtYSwgcmVxdWlyZWQ6IHJlcXVpcmVkIH07XG59XG4vKiogTWVyZ2VzIGEgZGVwZW5kZW50IHNjaGVtYSBpbnRvIHRoZSBgc2NoZW1hYCBkZWFsaW5nIHdpdGggb25lT2ZzIGFuZCByZWZlcmVuY2VzLiBQYXNzZXMgdGhlIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZ1xuICogZG93biB0byB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJuYWwoKWAsIGByZXNvbHZlUmVmZXJlbmNlKClgIGFuZCBgd2l0aEV4YWN0bHlPbmVTdWJzY2hlbWEoKWAgaGVscGVyIGNhbGxzLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIGRlcGVuZGVudCBzY2hlbWEgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBkZXBlbmRlbmN5S2V5IC0gVGhlIGtleSBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5XG4gKiBAcGFyYW0gZGVwZW5kZW5jeVZhbHVlIC0gVGhlIHBvdGVudGlhbGx5IGRlcGVuZGVudCBzY2hlbWFcbiAqIEBwYXJhbSBleHBhbmRBbGxCcmFuY2hlcyAtIEZsYWcsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGFsbCBwb3NzaWJsZSBicmFuY2hlcyBvZiBjb25kaXRpb25zLCBhbnkvb25lT2YgYW5kIGRlcGVuZGVuY2llc1xuICogICAgICAgICAgYXMgYSBsaXN0IG9mIHNjaGVtYXNcbiAqIEBwYXJhbSByZWN1cnNlTGlzdCAtIFRoZSBsaXN0IG9mIHJlY3Vyc2l2ZSByZWZlcmVuY2VzIGFscmVhZHkgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXS0gVGhlIGN1cnJlbnQgZm9ybURhdGEgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgbGlzdCBvZiBzY2hlbWFzIHdpdGggdGhlIGRlcGVuZGVudCBzY2hlbWEgcmVzb2x2ZWQgaW50byB0aGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGVwZW5kZW50U2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBkZXBlbmRlbmN5S2V5LCBkZXBlbmRlbmN5VmFsdWUsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgZGVwZW5kZW50U2NoZW1hcyA9IHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBkZXBlbmRlbmN5VmFsdWUsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICByZXR1cm4gZGVwZW5kZW50U2NoZW1hcy5mbGF0TWFwKChkZXBlbmRlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyBvbmVPZiwgLi4uZGVwZW5kZW50U2NoZW1hIH0gPSBkZXBlbmRlbnQ7XG4gICAgICAgIHNjaGVtYSA9IG1lcmdlU2NoZW1hcyhzY2hlbWEsIGRlcGVuZGVudFNjaGVtYSk7XG4gICAgICAgIC8vIFNpbmNlIGl0IGRvZXMgbm90IGNvbnRhaW4gb25lT2YsIHdlIHJldHVybiB0aGUgb3JpZ2luYWwgc2NoZW1hLlxuICAgICAgICBpZiAob25lT2YgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXNvbHZlICRyZWZzIGluc2lkZSBvbmVPZi5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRPbmVPZnMgPSBvbmVPZi5tYXAoKHN1YnNjaGVtYSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdWJzY2hlbWEgPT09ICdib29sZWFuJyB8fCAhKFJFRl9LRVkgaW4gc3Vic2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbc3Vic2NoZW1hXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlUmVmZXJlbmNlKHZhbGlkYXRvciwgc3Vic2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGFsbFBlcm11dGF0aW9ucyA9IGdldEFsbFBlcm11dGF0aW9uc09mWHh4T2YocmVzb2x2ZWRPbmVPZnMpO1xuICAgICAgICByZXR1cm4gYWxsUGVybXV0YXRpb25zLmZsYXRNYXAoKHJlc29sdmVkT25lT2YpID0+IHdpdGhFeGFjdGx5T25lU3Vic2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBkZXBlbmRlbmN5S2V5LCByZXNvbHZlZE9uZU9mLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgIH0pO1xufVxuLyoqIFJldHVybnMgYSBsaXN0IG9mIGBzY2hlbWFgcyB3aXRoIHRoZSBiZXN0IGNob2ljZSBmcm9tIHRoZSBgb25lT2ZgIG9wdGlvbnMgbWVyZ2VkIGludG8gaXQuIElmIGBleHBhbmRBbGxCcmFuY2hlc2AgaXNcbiAqIHRydWUsIHRoZW4gYSBsaXN0IG9mIHNjaGVtYXMgZm9yIEFMTCBvcHRpb25zIGFyZSByZXRyaWV2ZWQgYW5kIHJldHVybmVkLiBQYXNzZXMgdGhlIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZyBkb3duIHRvXG4gKiB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJuYWwoKWAgaGVscGVyIGNhbGwuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHZhbGlkYXRlIG9uZU9mIG9wdGlvbnNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXNvbHZpbmcgYSBvbmVPZiBzdWJzY2hlbWEgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBkZXBlbmRlbmN5S2V5IC0gVGhlIGtleSBuYW1lIG9mIHRoZSBvbmVPZiBkZXBlbmRlbmN5XG4gKiBAcGFyYW0gb25lT2YgLSBUaGUgbGlzdCBvZiBzY2hlbWFzIHJlcHJlc2VudGluZyB0aGUgb25lT2Ygb3B0aW9uc1xuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBFaXRoZXIgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgYmVzdCBtYXRjaGluZyBvcHRpb24gb3IgYWxsIG9wdGlvbnMgaWYgYGV4cGFuZEFsbEJyYW5jaGVzYCBpcyB0cnVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRXhhY3RseU9uZVN1YnNjaGVtYSh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZGVwZW5kZW5jeUtleSwgb25lT2YsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgdmFsaWRTdWJzY2hlbWFzID0gb25lT2YuZmlsdGVyKChzdWJzY2hlbWEpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzdWJzY2hlbWEgPT09ICdib29sZWFuJyB8fCAhc3Vic2NoZW1hIHx8ICFzdWJzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgW2RlcGVuZGVuY3lLZXldOiBjb25kaXRpb25Qcm9wZXJ0eVNjaGVtYSB9ID0gc3Vic2NoZW1hLnByb3BlcnRpZXM7XG4gICAgICAgIGlmIChjb25kaXRpb25Qcm9wZXJ0eVNjaGVtYSkge1xuICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgW2RlcGVuZGVuY3lLZXldOiBjb25kaXRpb25Qcm9wZXJ0eVNjaGVtYSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiB2YWxpZGF0b3IuaXNWYWxpZChjb25kaXRpb25TY2hlbWEsIGZvcm1EYXRhLCByb290U2NoZW1hKSB8fCBleHBhbmRBbGxCcmFuY2hlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gICAgaWYgKCFleHBhbmRBbGxCcmFuY2hlcyAmJiB2YWxpZFN1YnNjaGVtYXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcImlnbm9yaW5nIG9uZU9mIGluIGRlcGVuZGVuY2llcyBiZWNhdXNlIHRoZXJlIGlzbid0IGV4YWN0bHkgb25lIHN1YnNjaGVtYSB0aGF0IGlzIHZhbGlkXCIpO1xuICAgICAgICByZXR1cm4gW3NjaGVtYV07XG4gICAgfVxuICAgIHJldHVybiB2YWxpZFN1YnNjaGVtYXMuZmxhdE1hcCgocykgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY2hlbWEgPSBzO1xuICAgICAgICBjb25zdCBbZGVwZW5kZW50U3Vic2NoZW1hXSA9IHNwbGl0S2V5RWxlbWVudEZyb21PYmplY3QoZGVwZW5kZW5jeUtleSwgc3Vic2NoZW1hLnByb3BlcnRpZXMpO1xuICAgICAgICBjb25zdCBkZXBlbmRlbnRTY2hlbWEgPSB7IC4uLnN1YnNjaGVtYSwgcHJvcGVydGllczogZGVwZW5kZW50U3Vic2NoZW1hIH07XG4gICAgICAgIGNvbnN0IHNjaGVtYXMgPSByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgZGVwZW5kZW50U2NoZW1hLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIHJldHVybiBzY2hlbWFzLm1hcCgocykgPT4gbWVyZ2VTY2hlbWFzKHNjaGVtYSwgcykpO1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmV0cmlldmVTY2hlbWEuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBoYXMgZnJvbSAnbG9kYXNoL2hhcyc7XG5pbXBvcnQgaXNOdW1iZXIgZnJvbSAnbG9kYXNoL2lzTnVtYmVyJztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJ2xvZGFzaC9pc1N0cmluZyc7XG5pbXBvcnQgcmVkdWNlIGZyb20gJ2xvZGFzaC9yZWR1Y2UnO1xuaW1wb3J0IHRpbWVzIGZyb20gJ2xvZGFzaC90aW1lcyc7XG5pbXBvcnQgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbiBmcm9tICcuL2dldEZpcnN0TWF0Y2hpbmdPcHRpb24nO1xuaW1wb3J0IHJldHJpZXZlU2NoZW1hLCB7IHJlc29sdmVBbGxSZWZlcmVuY2VzIH0gZnJvbSAnLi9yZXRyaWV2ZVNjaGVtYSc7XG5pbXBvcnQgeyBPTkVfT0ZfS0VZLCBSRUZfS0VZLCBKVU5LX09QVElPTl9JRCwgQU5ZX09GX0tFWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ3Vlc3NUeXBlIGZyb20gJy4uL2d1ZXNzVHlwZSc7XG5pbXBvcnQgZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSBmcm9tICcuLi9nZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hJztcbmltcG9ydCBnZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IgZnJvbSAnLi4vZ2V0T3B0aW9uTWF0Y2hpbmdTaW1wbGVEaXNjcmltaW5hdG9yJztcbi8qKiBBIGp1bmsgb3B0aW9uIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZW4gdGhlIGdldEZpcnN0TWF0Y2hpbmdPcHRpb24gY2FsbCByZWFsbHkgbWF0Y2hlcyBhbiBvcHRpb24gcmF0aGVyIHRoYW4gcmV0dXJuaW5nXG4gKiB0aGUgZmlyc3QgaXRlbVxuICovXG5leHBvcnQgY29uc3QgSlVOS19PUFRJT04gPSB7XG4gICAgdHlwZTogJ29iamVjdCcsXG4gICAgJGlkOiBKVU5LX09QVElPTl9JRCxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIF9fbm90X3JlYWxseV90aGVyZV9fOiB7XG4gICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgfSxcbiAgICB9LFxufTtcbi8qKiBSZWN1cnNpdmUgZnVuY3Rpb24gdGhhdCBjYWxjdWxhdGVzIHRoZSBzY29yZSBvZiBhIGBmb3JtRGF0YWAgYWdhaW5zdCB0aGUgZ2l2ZW4gYHNjaGVtYWAuIFRoZSBjb21wdXRhdGlvbiBpcyBmYWlybHlcbiAqIHNpbXBsZS4gSW5pdGlhbGx5IHRoZSB0b3RhbCBzY29yZSBpcyAwLiBXaGVuIGBzY2hlbWEucHJvcGVydGllc2Agb2JqZWN0IGV4aXN0cywgdGhlbiBhbGwgdGhlIGBrZXkvdmFsdWVgIHBhaXJzIHdpdGhpblxuICogdGhlIG9iamVjdCBhcmUgcHJvY2Vzc2VkIGFzIGZvbGxvd3MgYWZ0ZXIgb2J0YWluaW5nIHRoZSBmb3JtVmFsdWUgZnJvbSBgZm9ybURhdGFgIHVzaW5nIHRoZSBga2V5YDpcbiAqIC0gSWYgdGhlIGB2YWx1ZWAgY29udGFpbnMgYSBgJHJlZmAsIGBjYWxjdWxhdGVJbmRleFNjb3JlKClgIGlzIGNhbGxlZCByZWN1cnNpdmVseSB3aXRoIHRoZSBmb3JtVmFsdWUgYW5kIHRoZSBuZXdcbiAqICAgc2NoZW1hIHRoYXQgaXMgdGhlIHJlc3VsdCBvZiB0aGUgcmVmIGluIHRoZSBzY2hlbWEgYmVpbmcgcmVzb2x2ZWQgYW5kIHRoYXQgc3ViLXNjaGVtYSdzIHJlc3VsdGluZyBzY29yZSBpcyBhZGRlZCB0b1xuICogICB0aGUgdG90YWwuXG4gKiAtIElmIHRoZSBgdmFsdWVgIGNvbnRhaW5zIGEgYG9uZU9mYCBhbmQgdGhlcmUgaXMgYSBmb3JtVmFsdWUsIHRoZW4gc2NvcmUgYmFzZWQgb24gdGhlIGluZGV4IHJldHVybmVkIGZyb20gY2FsbGluZ1xuICogICBgZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uKClgIG9mIHRoYXQgb25lT2YuXG4gKiAtIElmIHRoZSB0eXBlIG9mIHRoZSBgdmFsdWVgIGlzICdvYmplY3QnLCBgY2FsY3VsYXRlSW5kZXhTY29yZSgpYCBpcyBjYWxsZWQgcmVjdXJzaXZlbHkgd2l0aCB0aGUgZm9ybVZhbHVlIGFuZCB0aGVcbiAqICAgYHZhbHVlYCBpdHNlbGYgYXMgdGhlIHN1Yi1zY2hlbWEsIGFuZCB0aGUgc2NvcmUgaXMgYWRkZWQgdG8gdGhlIHRvdGFsLlxuICogLSBJZiB0aGUgdHlwZSBvZiB0aGUgYHZhbHVlYCBtYXRjaGVzIHRoZSBndWVzc2VkLXR5cGUgb2YgdGhlIGBmb3JtVmFsdWVgLCB0aGUgc2NvcmUgaXMgaW5jcmVtZW50ZWQgYnkgMSwgVU5MRVNTIHRoZVxuICogICB2YWx1ZSBoYXMgYSBgZGVmYXVsdGAgb3IgYGNvbnN0YC4gSW4gdGhvc2UgY2FzZSwgaWYgdGhlIGBkZWZhdWx0YCBvciBgY29uc3RgIGFuZCB0aGUgYGZvcm1WYWx1ZWAgbWF0Y2gsIHRoZSBzY29yZVxuICogICBpcyBpbmNyZW1lbnRlZCBieSBhbm90aGVyIDEgb3RoZXJ3aXNlIGl0IGlzIGRlY3JlbWVudGVkIGJ5IDEuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IEpTT04gc2NoZW1hIG9mIHRoZSBlbnRpcmUgZm9ybVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBzY29yZSBpcyBiZWluZyBjYWxjdWxhdGVkXG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hLCB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgc2NvcmVcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgc2NvcmUgYSBzY2hlbWEgYWdhaW5zdCB0aGUgZm9ybURhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUluZGV4U2NvcmUodmFsaWRhdG9yLCByb290U2NoZW1hLCBzY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGxldCB0b3RhbFNjb3JlID0gMDtcbiAgICBpZiAoc2NoZW1hKSB7XG4gICAgICAgIGlmIChpc09iamVjdChzY2hlbWEucHJvcGVydGllcykpIHtcbiAgICAgICAgICAgIHRvdGFsU2NvcmUgKz0gcmVkdWNlKHNjaGVtYS5wcm9wZXJ0aWVzLCAoc2NvcmUsIHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBnZXQoZm9ybURhdGEsIGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY29yZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhhcyh2YWx1ZSwgUkVGX0tFWSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCB2YWx1ZSwgcm9vdFNjaGVtYSwgZm9ybVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NvcmUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlSW5kZXhTY29yZSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIG5ld1NjaGVtYSwgZm9ybVZhbHVlIHx8IHt9LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGhhcyh2YWx1ZSwgT05FX09GX0tFWSkgfHwgaGFzKHZhbHVlLCBBTllfT0ZfS0VZKSkgJiYgZm9ybVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGhhcyh2YWx1ZSwgT05FX09GX0tFWSkgPyBPTkVfT0ZfS0VZIDogQU5ZX09GX0tFWTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjb3JlICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGZvcm1WYWx1ZSwgZ2V0KHZhbHVlLCBrZXkpLCAtMSwgZGlzY3JpbWluYXRvciwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChmb3JtVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc3RydWN0dXJlIGlzIG1hdGNoaW5nIHRoZW4gZ2l2ZSBpdCBhIGxpdHRsZSBib29zdCBpbiBzY29yZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmUgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjb3JlICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZUluZGV4U2NvcmUodmFsaWRhdG9yLCByb290U2NoZW1hLCB2YWx1ZSwgZm9ybVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZSA9PT0gZ3Vlc3NUeXBlKGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHR5cGVzIG1hdGNoLCB0aGVuIHdlIGJ1bXAgdGhlIHNjb3JlIGJ5IG9uZVxuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3U2NvcmUgPSBzY29yZSArIDE7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5kZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2NoZW1hIGNvbnRhaW5zIGEgcmVhZG9ubHkgZGVmYXVsdCB2YWx1ZSBzY29yZSB0aGUgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBkZWZhdWx0IGhpZ2hlciBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBub24tbWF0Y2hpbmcgdmFsdWUgbG93ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Njb3JlICs9IGZvcm1WYWx1ZSA9PT0gdmFsdWUuZGVmYXVsdCA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5jb25zdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHNjaGVtYSBjb250YWlucyBhIGNvbnN0IHZhbHVlIHNjb3JlIHRoZSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIGRlZmF1bHQgaGlnaGVyIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG5vbi1tYXRjaGluZyB2YWx1ZSBsb3dlclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2NvcmUgKz0gZm9ybVZhbHVlID09PSB2YWx1ZS5jb25zdCA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIGV2ZW50dWFsbHksIGRlYWwgd2l0aCBlbnVtcy9hcnJheXNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1Njb3JlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcmU7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1N0cmluZyhzY2hlbWEudHlwZSkgJiYgc2NoZW1hLnR5cGUgPT09IGd1ZXNzVHlwZShmb3JtRGF0YSkpIHtcbiAgICAgICAgICAgIHRvdGFsU2NvcmUgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG90YWxTY29yZTtcbn1cbi8qKiBEZXRlcm1pbmVzIHdoaWNoIG9mIHRoZSBnaXZlbiBgb3B0aW9uc2AgcHJvdmlkZWQgbW9zdCBjbG9zZWx5IG1hdGNoZXMgdGhlIGBmb3JtRGF0YWAuIFVzaW5nXG4gKiBgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbigpYCB0byBtYXRjaCB0d28gc2NoZW1hcyB0aGF0IGRpZmZlciBvbmx5IGJ5IHRoZSByZWFkT25seSwgZGVmYXVsdCBvciBjb25zdCB2YWx1ZSBvZiBhIGZpZWxkXG4gKiBiYXNlZCBvbiB0aGUgYGZvcm1EYXRhYCBhbmQgcmV0dXJucyAwIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2guIFJhdGhlciB0aGFuIHBhc3NpbmcgaW4gYWxsIHRoZSBgb3B0aW9uc2AgYXQgb25jZSB0b1xuICogdGhpcyB1dGlsaXR5LCBpbnN0ZWFkIGFuIGFycmF5IG9mIHZhbGlkIG9wdGlvbiBpbmRleGVzIGlzIGNyZWF0ZWQgYnkgaXRlcmF0aW5nIG92ZXIgdGhlIGxpc3Qgb2Ygb3B0aW9ucywgY2FsbFxuICogYGdldEZpcnN0TWF0Y2hpbmdPcHRpb25zYCB3aXRoIGEgbGlzdCBvZiBvbmUganVuayBvcHRpb24gYW5kIG9uZSBnb29kIG9wdGlvbiwgc2VlaW5nIGlmIHRoZSBnb29kIG9wdGlvbiBpcyBjb25zaWRlcmVkXG4gKiBtYXRjaGVkLlxuICpcbiAqIE9uY2UgdGhlIGxpc3Qgb2YgdmFsaWQgaW5kZXhlcyBpcyBjcmVhdGVkLCBpZiB0aGVyZSBpcyBvbmx5IG9uZSB2YWxpZCBpbmRleCwganVzdCByZXR1cm4gaXQuIE90aGVyd2lzZSwgaWYgdGhlcmUgYXJlXG4gKiBubyB2YWxpZCBpbmRleGVzLCB0aGVuIGZpbGwgdGhlIHZhbGlkIGluZGV4ZXMgYXJyYXkgd2l0aCB0aGUgaW5kZXhlcyBvZiBhbGwgdGhlIG9wdGlvbnMuIE5leHQsIHRoZSBpbmRleCBvZiB0aGVcbiAqIG9wdGlvbiB3aXRoIHRoZSBoaWdoZXN0IHNjb3JlIGlzIGRldGVybWluZWQgYnkgaXRlcmF0aW5nIG92ZXIgdGhlIGxpc3Qgb2YgdmFsaWQgb3B0aW9ucywgY2FsbGluZ1xuICogYGNhbGN1bGF0ZUluZGV4U2NvcmUoKWAgb24gZWFjaCwgY29tcGFyaW5nIGl0IGFnYWluc3QgdGhlIGN1cnJlbnQgYmVzdCBzY29yZSwgYW5kIHJldHVybmluZyB0aGUgaW5kZXggb2YgdGhlIG9uZSB0aGF0XG4gKiBldmVudHVhbGx5IGhhcyB0aGUgYmVzdCBzY29yZS5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3QgSlNPTiBzY2hlbWEgb2YgdGhlIGVudGlyZSBmb3JtXG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgdGhhdCBjYW4gYmUgc2VsZWN0ZWQgZnJvbVxuICogQHBhcmFtIFtzZWxlY3RlZE9wdGlvbj0tMV0gLSBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb24sIGRlZmF1bHRlZCB0byAtMSBpZiBub3Qgc3BlY2lmaWVkXG4gKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gKiAgICAgICAgICBkZXRlcm1pbmUgd2hpY2ggb3B0aW9uIGlzIHNlbGVjdGVkXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIGluZGV4IG9mIHRoZSBvcHRpb24gdGhhdCBpcyB0aGUgY2xvc2VzdCBtYXRjaCB0byB0aGUgYGZvcm1EYXRhYCBvciB0aGUgYHNlbGVjdGVkT3B0aW9uYCBpZiBubyBtYXRjaFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCByb290U2NoZW1hLCBmb3JtRGF0YSwgb3B0aW9ucywgc2VsZWN0ZWRPcHRpb24gPSAtMSwgZGlzY3JpbWluYXRvckZpZWxkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIC8vIEZpcnN0IHJlc29sdmUgYW55IHJlZnMgaW4gdGhlIG9wdGlvbnNcbiAgICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQWxsUmVmZXJlbmNlcyhvcHRpb24sIHJvb3RTY2hlbWEsIFtdKTtcbiAgICB9KTtcbiAgICBjb25zdCBzaW1wbGVEaXNjcmltaW5hdG9yTWF0Y2ggPSBnZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IoZm9ybURhdGEsIG9wdGlvbnMsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgaWYgKGlzTnVtYmVyKHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaCkpIHtcbiAgICAgICAgcmV0dXJuIHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaDtcbiAgICB9XG4gICAgLy8gUmVkdWNlIHRoZSBhcnJheSBvZiBvcHRpb25zIGRvd24gdG8gYSBsaXN0IG9mIHRoZSBpbmRleGVzIHRoYXQgYXJlIGNvbnNpZGVyZWQgbWF0Y2hpbmcgb3B0aW9uc1xuICAgIGNvbnN0IGFsbFZhbGlkSW5kZXhlcyA9IHJlc29sdmVkT3B0aW9ucy5yZWR1Y2UoKHZhbGlkTGlzdCwgb3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXN0T3B0aW9ucyA9IFtKVU5LX09QVElPTiwgb3B0aW9uXTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgZm9ybURhdGEsIHRlc3RPcHRpb25zLCByb290U2NoZW1hLCBkaXNjcmltaW5hdG9yRmllbGQpO1xuICAgICAgICAvLyBUaGUgbWF0Y2ggaXMgdGhlIHJlYWwgb3B0aW9uLCBzbyBhZGQgaXRzIGluZGV4IHRvIGxpc3Qgb2YgdmFsaWQgaW5kZXhlc1xuICAgICAgICBpZiAobWF0Y2ggPT09IDEpIHtcbiAgICAgICAgICAgIHZhbGlkTGlzdC5wdXNoKGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRMaXN0O1xuICAgIH0sIFtdKTtcbiAgICAvLyBUaGVyZSBpcyBvbmx5IG9uZSB2YWxpZCBpbmRleCwgc28gcmV0dXJuIGl0IVxuICAgIGlmIChhbGxWYWxpZEluZGV4ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBhbGxWYWxpZEluZGV4ZXNbMF07XG4gICAgfVxuICAgIGlmICghYWxsVmFsaWRJbmRleGVzLmxlbmd0aCkge1xuICAgICAgICAvLyBObyBpbmRleGVzIHdlcmUgdmFsaWQsIHNvIHdlJ2xsIHNjb3JlIGFsbCB0aGUgb3B0aW9ucywgYWRkIGFsbCB0aGUgaW5kZXhlc1xuICAgICAgICB0aW1lcyhyZXNvbHZlZE9wdGlvbnMubGVuZ3RoLCAoaSkgPT4gYWxsVmFsaWRJbmRleGVzLnB1c2goaSkpO1xuICAgIH1cbiAgICBjb25zdCBzY29yZUNvdW50ID0gbmV3IFNldCgpO1xuICAgIC8vIFNjb3JlIGFsbCB0aGUgb3B0aW9ucyBpbiB0aGUgbGlzdCBvZiB2YWxpZCBpbmRleGVzIGFuZCByZXR1cm4gdGhlIGluZGV4IHdpdGggdGhlIGJlc3Qgc2NvcmVcbiAgICBjb25zdCB7IGJlc3RJbmRleCB9ID0gYWxsVmFsaWRJbmRleGVzLnJlZHVjZSgoc2NvcmVEYXRhLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB7IGJlc3RTY29yZSB9ID0gc2NvcmVEYXRhO1xuICAgICAgICBjb25zdCBvcHRpb24gPSByZXNvbHZlZE9wdGlvbnNbaW5kZXhdO1xuICAgICAgICBjb25zdCBzY29yZSA9IGNhbGN1bGF0ZUluZGV4U2NvcmUodmFsaWRhdG9yLCByb290U2NoZW1hLCBvcHRpb24sIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIHNjb3JlQ291bnQuYWRkKHNjb3JlKTtcbiAgICAgICAgaWYgKHNjb3JlID4gYmVzdFNjb3JlKSB7XG4gICAgICAgICAgICByZXR1cm4geyBiZXN0SW5kZXg6IGluZGV4LCBiZXN0U2NvcmU6IHNjb3JlIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjb3JlRGF0YTtcbiAgICB9LCB7IGJlc3RJbmRleDogc2VsZWN0ZWRPcHRpb24sIGJlc3RTY29yZTogMCB9KTtcbiAgICAvLyBpZiBhbGwgc2NvcmVzIGFyZSB0aGUgc2FtZSBnbyB3aXRoIHNlbGVjdGVkT3B0aW9uXG4gICAgaWYgKHNjb3JlQ291bnQuc2l6ZSA9PT0gMSAmJiBzZWxlY3RlZE9wdGlvbiA+PSAwKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIGJlc3RJbmRleDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldENsb3Nlc3RNYXRjaGluZ09wdGlvbi5qcy5tYXAiLCJpbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogRGV0ZWN0cyB3aGV0aGVyIHRoZSBnaXZlbiBgc2NoZW1hYCBjb250YWlucyBmaXhlZCBpdGVtcy4gVGhpcyBpcyB0aGUgY2FzZSB3aGVuIGBzY2hlbWEuaXRlbXNgIGlzIGEgbm9uLWVtcHR5IGFycmF5XG4gKiB0aGF0IG9ubHkgY29udGFpbnMgb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBpbiB3aGljaCB0byBjaGVjayBmb3IgZml4ZWQgaXRlbXNcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGVyZSBhcmUgZml4ZWQgaXRlbXMgaW4gdGhlIHNjaGVtYSwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRml4ZWRJdGVtcyhzY2hlbWEpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpICYmIHNjaGVtYS5pdGVtcy5sZW5ndGggPiAwICYmIHNjaGVtYS5pdGVtcy5ldmVyeSgoaXRlbSkgPT4gaXNPYmplY3QoaXRlbSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNGaXhlZEl0ZW1zLmpzLm1hcCIsImltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogTWVyZ2VzIHRoZSBgZGVmYXVsdHNgIG9iamVjdCBvZiB0eXBlIGBUYCBpbnRvIHRoZSBgZm9ybURhdGFgIG9mIHR5cGUgYFRgXG4gKlxuICogV2hlbiBtZXJnaW5nIGRlZmF1bHRzIGFuZCBmb3JtIGRhdGEsIHdlIHdhbnQgdG8gbWVyZ2UgaW4gdGhpcyBzcGVjaWZpYyB3YXk6XG4gKiAtIG9iamVjdHMgYXJlIGRlZXBseSBtZXJnZWRcbiAqIC0gYXJyYXlzIGFyZSBtZXJnZWQgaW4gc3VjaCBhIHdheSB0aGF0OlxuICogICAtIHdoZW4gdGhlIGFycmF5IGlzIHNldCBpbiBmb3JtIGRhdGEsIG9ubHkgYXJyYXkgZW50cmllcyBzZXQgaW4gZm9ybSBkYXRhXG4gKiAgICAgYXJlIGRlZXBseSBtZXJnZWQ7IGFkZGl0aW9uYWwgZW50cmllcyBmcm9tIHRoZSBkZWZhdWx0cyBhcmUgaWdub3JlZCB1bmxlc3MgYG1lcmdlRXh0cmFBcnJheURlZmF1bHRzYCBpcyB0cnVlLCBpblxuICogICAgIHdoaWNoIGNhc2UgdGhlIGV4dHJhcyBhcmUgYXBwZW5kZWQgb250byB0aGUgZW5kIG9mIHRoZSBmb3JtIGRhdGFcbiAqICAgLSB3aGVuIHRoZSBhcnJheSBpcyBub3Qgc2V0IGluIGZvcm0gZGF0YSwgdGhlIGRlZmF1bHQgaXMgY29waWVkIG92ZXJcbiAqIC0gc2NhbGFycyBhcmUgb3ZlcndyaXR0ZW4vc2V0IGJ5IGZvcm0gZGF0YSB1bmxlc3MgdW5kZWZpbmVkIGFuZCB0aGVyZSBpcyBhIGRlZmF1bHQgQU5EIGBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZGBcbiAqICAgaXMgdHJ1ZVxuICpcbiAqIEBwYXJhbSBbZGVmYXVsdHNdIC0gVGhlIGRlZmF1bHRzIHRvIG1lcmdlXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBmb3JtIGRhdGEgaW50byB3aGljaCB0aGUgZGVmYXVsdHMgd2lsbCBiZSBtZXJnZWRcbiAqIEBwYXJhbSBbbWVyZ2VFeHRyYUFycmF5RGVmYXVsdHM9ZmFsc2VdIC0gSWYgdHJ1ZSwgYW55IGFkZGl0aW9uYWwgZGVmYXVsdCBhcnJheSBlbnRyaWVzIGFyZSBhcHBlbmRlZCBvbnRvIHRoZSBmb3JtRGF0YVxuICogQHBhcmFtIFtkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZD1mYWxzZV0gLSBJZiB0cnVlLCBhbiBleHBsaWNpdCB1bmRlZmluZWQgdmFsdWUgd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgZGVmYXVsdCB2YWx1ZVxuICogQHJldHVybnMgLSBUaGUgcmVzdWx0aW5nIG1lcmdlZCBmb3JtIGRhdGEgd2l0aCBkZWZhdWx0c1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhKGRlZmF1bHRzLCBmb3JtRGF0YSwgbWVyZ2VFeHRyYUFycmF5RGVmYXVsdHMgPSBmYWxzZSwgZGVmYXVsdFN1cGVyY2VkZXNVbmRlZmluZWQgPSBmYWxzZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICBjb25zdCBkZWZhdWx0c0FycmF5ID0gQXJyYXkuaXNBcnJheShkZWZhdWx0cykgPyBkZWZhdWx0cyA6IFtdO1xuICAgICAgICBjb25zdCBtYXBwZWQgPSBmb3JtRGF0YS5tYXAoKHZhbHVlLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGlmIChkZWZhdWx0c0FycmF5W2lkeF0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YShkZWZhdWx0c0FycmF5W2lkeF0sIHZhbHVlLCBtZXJnZUV4dHJhQXJyYXlEZWZhdWx0cywgZGVmYXVsdFN1cGVyY2VkZXNVbmRlZmluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gTWVyZ2UgYW55IGV4dHJhIGRlZmF1bHRzIHdoZW4gbWVyZ2VFeHRyYUFycmF5RGVmYXVsdHMgaXMgdHJ1ZVxuICAgICAgICBpZiAobWVyZ2VFeHRyYUFycmF5RGVmYXVsdHMgJiYgbWFwcGVkLmxlbmd0aCA8IGRlZmF1bHRzQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICBtYXBwZWQucHVzaCguLi5kZWZhdWx0c0FycmF5LnNsaWNlKG1hcHBlZC5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFwcGVkO1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3QoZm9ybURhdGEpKSB7XG4gICAgICAgIGNvbnN0IGFjYyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzKTsgLy8gUHJldmVudCBtdXRhdGlvbiBvZiBzb3VyY2Ugb2JqZWN0LlxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybURhdGEpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGFjY1trZXldID0gbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YShkZWZhdWx0cyA/IGdldChkZWZhdWx0cywga2V5KSA6IHt9LCBnZXQoZm9ybURhdGEsIGtleSksIG1lcmdlRXh0cmFBcnJheURlZmF1bHRzLCBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBhY2MpO1xuICAgIH1cbiAgICBpZiAoZGVmYXVsdFN1cGVyY2VkZXNVbmRlZmluZWQgJiYgZm9ybURhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdHM7XG4gICAgfVxuICAgIHJldHVybiBmb3JtRGF0YTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEuanMubWFwIiwiaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QnO1xuLyoqIFJlY3Vyc2l2ZWx5IG1lcmdlIGRlZXBseSBuZXN0ZWQgb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gb2JqMSAtIFRoZSBmaXJzdCBvYmplY3QgdG8gbWVyZ2VcbiAqIEBwYXJhbSBvYmoyIC0gVGhlIHNlY29uZCBvYmplY3QgdG8gbWVyZ2VcbiAqIEBwYXJhbSBbY29uY2F0QXJyYXlzPWZhbHNlXSAtIE9wdGlvbmFsIGZsYWcgdGhhdCwgd2hlbiB0cnVlLCB3aWxsIGNhdXNlIGFycmF5cyB0byBiZSBjb25jYXRlbmF0ZWQuIFVzZVxuICogICAgICAgICAgXCJwcmV2ZW50RHVwbGljYXRlc1wiIHRvIG1lcmdlIGFycmF5cyBpbiBhIG1hbm5lciB0aGF0IHByZXZlbnRzIGFueSBkdXBsaWNhdGUgZW50cmllcyBmcm9tIGJlaW5nIG1lcmdlZC5cbiAqICAgICAgICAgIE5PVEU6IFVzZXMgc2hhbGxvdyBjb21wYXJpc29uIGZvciB0aGUgZHVwbGljYXRlIGNoZWNraW5nLlxuICogQHJldHVybnMgLSBBIG5ldyBvYmplY3QgdGhhdCBpcyB0aGUgbWVyZ2Ugb2YgdGhlIHR3byBnaXZlbiBvYmplY3RzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlT2JqZWN0cyhvYmoxLCBvYmoyLCBjb25jYXRBcnJheXMgPSBmYWxzZSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmoyKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBvYmoxID8gb2JqMVtrZXldIDoge30sIHJpZ2h0ID0gb2JqMltrZXldO1xuICAgICAgICBpZiAob2JqMSAmJiBrZXkgaW4gb2JqMSAmJiBpc09iamVjdChyaWdodCkpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gbWVyZ2VPYmplY3RzKGxlZnQsIHJpZ2h0LCBjb25jYXRBcnJheXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbmNhdEFycmF5cyAmJiBBcnJheS5pc0FycmF5KGxlZnQpICYmIEFycmF5LmlzQXJyYXkocmlnaHQpKSB7XG4gICAgICAgICAgICBsZXQgdG9NZXJnZSA9IHJpZ2h0O1xuICAgICAgICAgICAgaWYgKGNvbmNhdEFycmF5cyA9PT0gJ3ByZXZlbnREdXBsaWNhdGVzJykge1xuICAgICAgICAgICAgICAgIHRvTWVyZ2UgPSByaWdodC5yZWR1Y2UoKHJlc3VsdCwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFsZWZ0LmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWNjW2tleV0gPSBsZWZ0LmNvbmNhdCh0b01lcmdlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBPYmplY3QuYXNzaWduKHt9LCBvYmoxKSk7IC8vIFByZXZlbnQgbXV0YXRpb24gb2Ygc291cmNlIG9iamVjdC5cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlT2JqZWN0cy5qcy5tYXAiLCJpbXBvcnQgeyBDT05TVF9LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGdpdmVuIGBzY2hlbWFgIG1hdGNoZXMgYSBzaW5nbGUgY29uc3RhbnQgdmFsdWUuIFRoaXMgaGFwcGVucyB3aGVuIGVpdGhlciB0aGUgc2NoZW1hIGhhc1xuICogYW4gYGVudW1gIGFycmF5IHdpdGggYSBzaW5nbGUgdmFsdWUgb3IgdGhlcmUgaXMgYSBgY29uc3RgIGRlZmluZWQuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIGEgZmllbGRcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgYHNjaGVtYWAgaGFzIGEgc2luZ2xlIGNvbnN0YW50IHZhbHVlLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNDb25zdGFudChzY2hlbWEpIHtcbiAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkoc2NoZW1hLmVudW0pICYmIHNjaGVtYS5lbnVtLmxlbmd0aCA9PT0gMSkgfHwgQ09OU1RfS0VZIGluIHNjaGVtYTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzQ29uc3RhbnQuanMubWFwIiwiaW1wb3J0IGlzQ29uc3RhbnQgZnJvbSAnLi4vaXNDb25zdGFudCc7XG5pbXBvcnQgcmV0cmlldmVTY2hlbWEgZnJvbSAnLi9yZXRyaWV2ZVNjaGVtYSc7XG4vKiogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgYHNjaGVtYWAgY29tYmluYXRpb24gcmVwcmVzZW50cyBhIHNlbGVjdFxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHRoZVNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIGNoZWNrIGZvciBhIHNlbGVjdCBmbGFnIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgc2NoZW1hIGNvbnRhaW5zIGEgc2VsZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTZWxlY3QodmFsaWRhdG9yLCB0aGVTY2hlbWEsIHJvb3RTY2hlbWEgPSB7fSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBjb25zdCBzY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHRoZVNjaGVtYSwgcm9vdFNjaGVtYSwgdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgY29uc3QgYWx0U2NoZW1hcyA9IHNjaGVtYS5vbmVPZiB8fCBzY2hlbWEuYW55T2Y7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLmVudW0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShhbHRTY2hlbWFzKSkge1xuICAgICAgICByZXR1cm4gYWx0U2NoZW1hcy5ldmVyeSgoYWx0U2NoZW1hcykgPT4gdHlwZW9mIGFsdFNjaGVtYXMgIT09ICdib29sZWFuJyAmJiBpc0NvbnN0YW50KGFsdFNjaGVtYXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNTZWxlY3QuanMubWFwIiwiaW1wb3J0IGlzU2VsZWN0IGZyb20gJy4vaXNTZWxlY3QnO1xuLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGBzY2hlbWFgIGNvbWJpbmF0aW9uIHJlcHJlc2VudHMgYSBtdWx0aS1zZWxlY3RcbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCBjaGVjayBmb3IgYSBtdWx0aS1zZWxlY3QgZmxhZyBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUcnVlIGlmIHNjaGVtYSBjb250YWlucyBhIG11bHRpLXNlbGVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTXVsdGlTZWxlY3QodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgaWYgKCFzY2hlbWEudW5pcXVlSXRlbXMgfHwgIXNjaGVtYS5pdGVtcyB8fCB0eXBlb2Ygc2NoZW1hLml0ZW1zID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNTZWxlY3QodmFsaWRhdG9yLCBzY2hlbWEuaXRlbXMsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzTXVsdGlTZWxlY3QuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCB7IEFOWV9PRl9LRVksIENPTlNUX0tFWSwgREVGQVVMVF9LRVksIERFUEVOREVOQ0lFU19LRVksIFBST1BFUlRJRVNfS0VZLCBPTkVfT0ZfS0VZLCBSRUZfS0VZLCBBTExfT0ZfS0VZLCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZmluZFNjaGVtYURlZmluaXRpb24gZnJvbSAnLi4vZmluZFNjaGVtYURlZmluaXRpb24nO1xuaW1wb3J0IGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbiBmcm9tICcuL2dldENsb3Nlc3RNYXRjaGluZ09wdGlvbic7XG5pbXBvcnQgZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSBmcm9tICcuLi9nZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hJztcbmltcG9ydCBnZXRTY2hlbWFUeXBlIGZyb20gJy4uL2dldFNjaGVtYVR5cGUnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4uL2lzT2JqZWN0JztcbmltcG9ydCBpc0ZpeGVkSXRlbXMgZnJvbSAnLi4vaXNGaXhlZEl0ZW1zJztcbmltcG9ydCBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhIGZyb20gJy4uL21lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEnO1xuaW1wb3J0IG1lcmdlT2JqZWN0cyBmcm9tICcuLi9tZXJnZU9iamVjdHMnO1xuaW1wb3J0IG1lcmdlU2NoZW1hcyBmcm9tICcuLi9tZXJnZVNjaGVtYXMnO1xuaW1wb3J0IGlzTXVsdGlTZWxlY3QgZnJvbSAnLi9pc011bHRpU2VsZWN0JztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSwgeyByZXNvbHZlRGVwZW5kZW5jaWVzIH0gZnJvbSAnLi9yZXRyaWV2ZVNjaGVtYSc7XG5jb25zdCBQUklNSVRJVkVfVFlQRVMgPSBbJ3N0cmluZycsICdudW1iZXInLCAnaW50ZWdlcicsICdib29sZWFuJywgJ251bGwnXTtcbi8qKiBFbnVtIHRoYXQgaW5kaWNhdGVzIGhvdyBgc2NoZW1hLmFkZGl0aW9uYWxJdGVtc2Agc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGBnZXRJbm5lclNjaGVtYUZvckFycmF5SXRlbSgpYCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IHZhciBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZztcbihmdW5jdGlvbiAoQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcpIHtcbiAgICBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tcIklnbm9yZVwiXSA9IDBdID0gXCJJZ25vcmVcIjtcbiAgICBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tcIkludmVydFwiXSA9IDFdID0gXCJJbnZlcnRcIjtcbiAgICBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tcIkZhbGxiYWNrXCJdID0gMl0gPSBcIkZhbGxiYWNrXCI7XG59KShBZGRpdGlvbmFsSXRlbXNIYW5kbGluZyB8fCAoQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcgPSB7fSkpO1xuLyoqIEdpdmVuIGEgYHNjaGVtYWAgd2lsbCByZXR1cm4gYW4gaW5uZXIgc2NoZW1hIHRoYXQgZm9yIGFuIGFycmF5IGl0ZW0uIFRoaXMgaXMgY29tcHV0ZWQgZGlmZmVyZW50bHkgYmFzZWQgb24gdGhlXG4gKiBgYWRkaXRpb25hbEl0ZW1zYCBlbnVtIGFuZCB0aGUgdmFsdWUgb2YgYGlkeGAuIFRoZXJlIGFyZSBmb3VyIHBvc3NpYmxlIHJldHVybnM6XG4gKiAxLiBJZiBgaWR4YCBpcyA+PSAwLCB0aGVuIGlmIGBzY2hlbWEuaXRlbXNgIGlzIGFuIGFycmF5IHRoZSBgaWR4YHRoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHJldHVybmVkIGlmIGl0IGlzIGEgdmFsaWRcbiAqICAgIGluZGV4IGFuZCBub3QgYSBib29sZWFuLCBvdGhlcndpc2UgaXQgZmFsbHMgdGhyb3VnaCB0byAzLlxuICogMi4gSWYgYHNjaGVtYS5pdGVtc2AgaXMgbm90IGFuIGFycmF5IEFORCB0cnV0aHkgYW5kIG5vdCBhIGJvb2xlYW4sIHRoZW4gYHNjaGVtYS5pdGVtc2AgaXMgcmV0dXJuZWQgc2luY2UgaXQgYWN0dWFsbHlcbiAqICAgIGlzIGEgc2NoZW1hLCBvdGhlcndpc2UgaXQgZmFsbHMgdGhyb3VnaCB0byAzLlxuICogMy4gSWYgYGFkZGl0aW9uYWxJdGVtc2AgaXMgbm90IGBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZy5JZ25vcmVgIGFuZCBgc2NoZW1hLmFkZGl0aW9uYWxJdGVtc2AgaXMgYW4gb2JqZWN0LCB0aGVuXG4gKiAgICBgc2NoZW1hLmFkZGl0aW9uYWxJdGVtc2AgaXMgcmV0dXJuZWQgc2luY2UgaXQgYWN0dWFsbHkgaXMgYSBzY2hlbWEsIG90aGVyd2lzZSBpdCBmYWxscyB0aHJvdWdoIHRvIDQuXG4gKiA0LiB7fSBpcyByZXR1cm5lZCByZXByZXNlbnRpbmcgYW4gZW1wdHkgc2NoZW1hXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZnJvbSB3aGljaCB0byBnZXQgdGhlIHBhcnRpY3VsYXIgaXRlbVxuICogQHBhcmFtIFthZGRpdGlvbmFsSXRlbXM9QWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcuSWdub3JlXSAtIEhvdyBkbyB3ZSB3YW50IHRvIGhhbmRsZSBhZGRpdGlvbmFsIGl0ZW1zP1xuICogQHBhcmFtIFtpZHg9LTFdIC0gSW5kZXgsIGlmIG5vbi1uZWdhdGl2ZSwgd2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgaWR4LXRoIGVsZW1lbnQgaW4gYSBgc2NoZW1hLml0ZW1zYCBhcnJheVxuICogQHJldHVybnMgLSBUaGUgYmVzdCBmaXQgc2NoZW1hIG9iamVjdCBmcm9tIHRoZSBgc2NoZW1hYCBnaXZlbiB0aGUgYGFkZGl0aW9uYWxJdGVtc2AgYW5kIGBpZHhgIG1vZGlmaWVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5uZXJTY2hlbWFGb3JBcnJheUl0ZW0oc2NoZW1hLCBhZGRpdGlvbmFsSXRlbXMgPSBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZy5JZ25vcmUsIGlkeCA9IC0xKSB7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykgJiYgaWR4IDwgc2NoZW1hLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNjaGVtYS5pdGVtc1tpZHhdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEuaXRlbXMgJiYgIUFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSAmJiB0eXBlb2Ygc2NoZW1hLml0ZW1zICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYS5pdGVtcztcbiAgICB9XG4gICAgaWYgKGFkZGl0aW9uYWxJdGVtcyAhPT0gQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcuSWdub3JlICYmIGlzT2JqZWN0KHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMpKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4ge307XG59XG4vKiogRWl0aGVyIGFkZCBgY29tcHV0ZWREZWZhdWx0YCBhdCBga2V5YCBpbnRvIGBvYmpgIG9yIG5vdCBhZGQgaXQgYmFzZWQgb24gaXRzIHZhbHVlLCB0aGUgdmFsdWUgb2ZcbiAqIGBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzYCwgdGhlIHZhbHVlIG9mIGBlbXB0eU9iamVjdEZpZWxkc2AgYW5kIGlmIGl0cyBwYXJlbnQgZmllbGQgaXMgcmVxdWlyZWQuIEdlbmVyYWxseSB1bmRlZmluZWRcbiAqIGBjb21wdXRlZERlZmF1bHRgIHZhbHVlcyBhcmUgYWRkZWQgb25seSB3aGVuIGBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzYCBpcyBlaXRoZXIgdHJ1ZS9cImV4Y2x1ZGVPYmplY3RDaGlsZHJlblwiLiBJZiBgXG4gKiBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzYCBpcyBmYWxzZSBhbmQgYGVtcHR5T2JqZWN0RmllbGRzYCBpcyBub3QgXCJza2lwRGVmYXVsdHNcIiwgdGhlbiBub24tdW5kZWZpbmVkIGFuZCBub24tZW1wdHktb2JqZWN0XG4gKiB2YWx1ZXMgd2lsbCBiZSBhZGRlZCBiYXNlZCBvbiBjZXJ0YWluIGNvbmRpdGlvbnMuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgaW50byB3aGljaCB0aGUgY29tcHV0ZWQgZGVmYXVsdCBtYXkgYmUgYWRkZWRcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGludG8gdGhlIG9iamVjdCBhdCB3aGljaCB0aGUgY29tcHV0ZWQgZGVmYXVsdCBtYXkgYmUgYWRkZWRcbiAqIEBwYXJhbSBjb21wdXRlZERlZmF1bHQgLSBUaGUgY29tcHV0ZWQgZGVmYXVsdCB2YWx1ZSB0aGF0IG1heWJlIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgb2JqXG4gKiBAcGFyYW0gaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyAtIE9wdGlvbmFsIGZsYWcsIGlmIHRydWUsIGNhdXNlIHVuZGVmaW5lZCB2YWx1ZXMgdG8gYmUgYWRkZWQgYXMgZGVmYXVsdHMuXG4gKiAgICAgICAgICBJZiBcImV4Y2x1ZGVPYmplY3RDaGlsZHJlblwiLCBjYXVzZSB1bmRlZmluZWQgdmFsdWVzIGZvciB0aGlzIG9iamVjdCBhbmQgcGFzcyBgaW5jbHVkZVVuZGVmaW5lZFZhbHVlc2AgYXNcbiAqICAgICAgICAgIGZhbHNlIHdoZW4gY29tcHV0aW5nIGRlZmF1bHRzIGZvciBhbnkgbmVzdGVkIG9iamVjdCBwcm9wZXJ0aWVzLiBJZiBcImFsbG93RW1wdHlPYmplY3RcIiwgcHJldmVudHMgdW5kZWZpbmVkXG4gKiAgICAgICAgICB2YWx1ZXMgaW4gdGhpcyBvYmplY3Qgd2hpbGUgYWxsb3cgdGhlIG9iamVjdCBpdHNlbGYgdG8gYmUgZW1wdHkgYW5kIHBhc3NpbmcgYGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgIGFzXG4gKiAgICAgICAgICBmYWxzZSB3aGVuIGNvbXB1dGluZyBkZWZhdWx0cyBmb3IgYW55IG5lc3RlZCBvYmplY3QgcHJvcGVydGllcy5cbiAqIEBwYXJhbSBpc1BhcmVudFJlcXVpcmVkIC0gVGhlIG9wdGlvbmFsIGJvb2xlYW4gdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcGFyZW50IGZpZWxkIGlzIHJlcXVpcmVkXG4gKiBAcGFyYW0gcmVxdWlyZWRGaWVsZHMgLSBUaGUgbGlzdCBvZiBmaWVsZHMgdGhhdCBhcmUgcmVxdWlyZWRcbiAqIEBwYXJhbSBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QsIGlmIHByb3ZpZGVkLCBhbGxvd3MgdXNlcnMgdG8gb3ZlcnJpZGVcbiAqICAgICAgICBkZWZhdWx0IGZvcm0gc3RhdGUgYmVoYXZpb3JcbiAqIEBwYXJhbSBpc0NvbnN0IC0gT3B0aW9uYWwgZmxhZywgaWYgdHJ1ZSwgaW5kaWNhdGVzIHRoYXQgdGhlIHNjaGVtYSBoYXMgYSBjb25zdCBwcm9wZXJ0eSBkZWZpbmVkLCB0aHVzIHdlIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBjb21wdXRlZERlZmF1bHQgc2luY2UgaXQncyBjb21pbmcgZnJvbSB0aGUgY29uc3QuXG4gKi9cbmZ1bmN0aW9uIG1heWJlQWRkRGVmYXVsdFRvT2JqZWN0KG9iaiwga2V5LCBjb21wdXRlZERlZmF1bHQsIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMsIGlzUGFyZW50UmVxdWlyZWQsIHJlcXVpcmVkRmllbGRzID0gW10sIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSB7fSwgaXNDb25zdCA9IGZhbHNlKSB7XG4gICAgY29uc3QgeyBlbXB0eU9iamVjdEZpZWxkcyA9ICdwb3B1bGF0ZUFsbERlZmF1bHRzJyB9ID0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcjtcbiAgICBpZiAoaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyB8fCBpc0NvbnN0KSB7XG4gICAgICAgIC8vIElmIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNcbiAgICAgICAgLy8gT3IgaWYgdGhlIHNjaGVtYSBoYXMgYSBjb25zdCBwcm9wZXJ0eSBkZWZpbmVkLCB0aGVuIHdlIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBjb21wdXRlZERlZmF1bHQgc2luY2UgaXQncyBjb21pbmcgZnJvbSB0aGUgY29uc3QuXG4gICAgICAgIG9ialtrZXldID0gY29tcHV0ZWREZWZhdWx0O1xuICAgIH1cbiAgICBlbHNlIGlmIChlbXB0eU9iamVjdEZpZWxkcyAhPT0gJ3NraXBEZWZhdWx0cycpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KGNvbXB1dGVkRGVmYXVsdCkpIHtcbiAgICAgICAgICAgIC8vIElmIGlzUGFyZW50UmVxdWlyZWQgaXMgdW5kZWZpbmVkLCB0aGVuIHdlIGFyZSBhdCB0aGUgcm9vdCBsZXZlbCBvZiB0aGUgc2NoZW1hIHNvIGRlZmVyIHRvIHRoZSByZXF1aXJlZG5lc3Mgb2ZcbiAgICAgICAgICAgIC8vIHRoZSBmaWVsZCBrZXkgaXRzZWxmIGluIHRoZSBgcmVxdWlyZWRGaWVsZGAgbGlzdFxuICAgICAgICAgICAgY29uc3QgaXNTZWxmT3JQYXJlbnRSZXF1aXJlZCA9IGlzUGFyZW50UmVxdWlyZWQgPT09IHVuZGVmaW5lZCA/IHJlcXVpcmVkRmllbGRzLmluY2x1ZGVzKGtleSkgOiBpc1BhcmVudFJlcXVpcmVkO1xuICAgICAgICAgICAgLy8gSWYgZW1wdHlPYmplY3RGaWVsZHMgJ3NraXBFbXB0eURlZmF1bHRzJyBzdG9yZSBjb21wdXRlZERlZmF1bHQgaWYgaXQncyBhIG5vbi1lbXB0eSBvYmplY3QoZS5nLiBub3Qge30pXG4gICAgICAgICAgICBpZiAoZW1wdHlPYmplY3RGaWVsZHMgPT09ICdza2lwRW1wdHlEZWZhdWx0cycpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzRW1wdHkoY29tcHV0ZWREZWZhdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICBvYmpba2V5XSA9IGNvbXB1dGVkRGVmYXVsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFbHNlIHN0b3JlIGNvbXB1dGVkRGVmYXVsdCBpZiBpdCdzIGEgbm9uLWVtcHR5IG9iamVjdChlLmcuIG5vdCB7fSkgYW5kIHNhdGlzZmllcyBjZXJ0YWluIGNvbmRpdGlvbnNcbiAgICAgICAgICAgIC8vIENvbmRpdGlvbiAxOiBJZiBjb21wdXRlZERlZmF1bHQgaXMgbm90IGVtcHR5IG9yIGlmIHRoZSBrZXkgaXMgYSByZXF1aXJlZCBmaWVsZFxuICAgICAgICAgICAgLy8gQ29uZGl0aW9uIDI6IElmIHRoZSBwYXJlbnQgb2JqZWN0IGlzIHJlcXVpcmVkIG9yIGVtcHR5T2JqZWN0RmllbGRzIGlzIG5vdCAncG9wdWxhdGVSZXF1aXJlZERlZmF1bHRzJ1xuICAgICAgICAgICAgZWxzZSBpZiAoKCFpc0VtcHR5KGNvbXB1dGVkRGVmYXVsdCkgfHwgcmVxdWlyZWRGaWVsZHMuaW5jbHVkZXMoa2V5KSkgJiZcbiAgICAgICAgICAgICAgICAoaXNTZWxmT3JQYXJlbnRSZXF1aXJlZCB8fCBlbXB0eU9iamVjdEZpZWxkcyAhPT0gJ3BvcHVsYXRlUmVxdWlyZWREZWZhdWx0cycpKSB7XG4gICAgICAgICAgICAgICAgb2JqW2tleV0gPSBjb21wdXRlZERlZmF1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgIC8vIFN0b3JlIGNvbXB1dGVkRGVmYXVsdCBpZiBpdCdzIGEgZGVmaW5lZCBwcmltaXRpdmUgKGUuZy4sIHRydWUpIGFuZCBzYXRpc2ZpZXMgY2VydGFpbiBjb25kaXRpb25zXG4gICAgICAgIC8vIENvbmRpdGlvbiAxOiBjb21wdXRlZERlZmF1bHQgaXMgbm90IHVuZGVmaW5lZFxuICAgICAgICAvLyBDb25kaXRpb24gMjogSWYgZW1wdHlPYmplY3RGaWVsZHMgaXMgJ3BvcHVsYXRlQWxsRGVmYXVsdHMnIG9yICdza2lwRW1wdHlEZWZhdWx0cykgb3IgaWYgdGhlIGtleSBpcyBhIHJlcXVpcmVkIGZpZWxkXG4gICAgICAgIGNvbXB1dGVkRGVmYXVsdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAoZW1wdHlPYmplY3RGaWVsZHMgPT09ICdwb3B1bGF0ZUFsbERlZmF1bHRzJyB8fFxuICAgICAgICAgICAgICAgIGVtcHR5T2JqZWN0RmllbGRzID09PSAnc2tpcEVtcHR5RGVmYXVsdHMnIHx8XG4gICAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZHMuaW5jbHVkZXMoa2V5KSkpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gY29tcHV0ZWREZWZhdWx0O1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqIENvbXB1dGVzIHRoZSBkZWZhdWx0cyBmb3IgdGhlIGN1cnJlbnQgYHNjaGVtYWAgZ2l2ZW4gdGhlIGByYXdGb3JtRGF0YWAgYW5kIGBwYXJlbnREZWZhdWx0c2AgaWYgYW55LiBUaGlzIGRyaWxscyBpbnRvXG4gKiBlYWNoIGxldmVsIG9mIHRoZSBzY2hlbWEsIHJlY3Vyc2l2ZWx5LCB0byBmaWxsIG91dCBldmVyeSBsZXZlbCBvZiBkZWZhdWx0cyBwcm92aWRlZCBieSB0aGUgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHJhd1NjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHN0YXRlIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSB7Q29tcHV0ZURlZmF1bHRzUHJvcHN9IGNvbXB1dGVEZWZhdWx0c1Byb3BzIC0gT3B0aW9uYWwgcHJvcHMgZm9yIHRoaXMgZnVuY3Rpb25cbiAqIEByZXR1cm5zIC0gVGhlIHJlc3VsdGluZyBgZm9ybURhdGFgIHdpdGggYWxsIHRoZSBkZWZhdWx0cyBwcm92aWRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZURlZmF1bHRzKHZhbGlkYXRvciwgcmF3U2NoZW1hLCBjb21wdXRlRGVmYXVsdHNQcm9wcyA9IHt9KSB7XG4gICAgY29uc3QgeyBwYXJlbnREZWZhdWx0cywgcmF3Rm9ybURhdGEsIHJvb3RTY2hlbWEgPSB7fSwgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyA9IGZhbHNlLCBfcmVjdXJzZUxpc3QgPSBbXSwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9IHVuZGVmaW5lZCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YgPSB1bmRlZmluZWQsIHJlcXVpcmVkLCB9ID0gY29tcHV0ZURlZmF1bHRzUHJvcHM7XG4gICAgY29uc3QgZm9ybURhdGEgPSAoaXNPYmplY3QocmF3Rm9ybURhdGEpID8gcmF3Rm9ybURhdGEgOiB7fSk7XG4gICAgY29uc3Qgc2NoZW1hID0gaXNPYmplY3QocmF3U2NoZW1hKSA/IHJhd1NjaGVtYSA6IHt9O1xuICAgIC8vIENvbXB1dGUgdGhlIGRlZmF1bHRzIHJlY3Vyc2l2ZWx5OiBnaXZlIGhpZ2hlc3QgcHJpb3JpdHkgdG8gZGVlcGVzdCBub2Rlcy5cbiAgICBsZXQgZGVmYXVsdHMgPSBwYXJlbnREZWZhdWx0cztcbiAgICAvLyBJZiB3ZSBnZXQgYSBuZXcgc2NoZW1hLCB0aGVuIHdlIG5lZWQgdG8gcmVjb21wdXRlIGRlZmF1bHRzIGFnYWluIGZvciB0aGUgbmV3IHNjaGVtYSBmb3VuZC5cbiAgICBsZXQgc2NoZW1hVG9Db21wdXRlID0gbnVsbDtcbiAgICBsZXQgZXhwZXJpbWVudGFsX2Rmc2JfdG9fY29tcHV0ZSA9IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3I7XG4gICAgbGV0IHVwZGF0ZWRSZWN1cnNlTGlzdCA9IF9yZWN1cnNlTGlzdDtcbiAgICBpZiAoc2NoZW1hW0NPTlNUX0tFWV0gJiYgKGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IG51bGwgfHwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvci5jb25zdEFzRGVmYXVsdHMpICE9PSAnbmV2ZXInKSB7XG4gICAgICAgIGRlZmF1bHRzID0gc2NoZW1hLmNvbnN0O1xuICAgIH1cbiAgICBlbHNlIGlmIChpc09iamVjdChkZWZhdWx0cykgJiYgaXNPYmplY3Qoc2NoZW1hLmRlZmF1bHQpKSB7XG4gICAgICAgIC8vIEZvciBvYmplY3QgZGVmYXVsdHMsIG9ubHkgb3ZlcnJpZGUgcGFyZW50IGRlZmF1bHRzIHRoYXQgYXJlIGRlZmluZWQgaW5cbiAgICAgICAgLy8gc2NoZW1hLmRlZmF1bHQuXG4gICAgICAgIGRlZmF1bHRzID0gbWVyZ2VPYmplY3RzKGRlZmF1bHRzLCBzY2hlbWEuZGVmYXVsdCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKERFRkFVTFRfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBkZWZhdWx0cyA9IHNjaGVtYS5kZWZhdWx0O1xuICAgIH1cbiAgICBlbHNlIGlmIChSRUZfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCByZWZOYW1lID0gc2NoZW1hW1JFRl9LRVldO1xuICAgICAgICAvLyBVc2UgcmVmZXJlbmNlZCBzY2hlbWEgZGVmYXVsdHMgZm9yIHRoaXMgbm9kZS5cbiAgICAgICAgaWYgKCFfcmVjdXJzZUxpc3QuaW5jbHVkZXMocmVmTmFtZSkpIHtcbiAgICAgICAgICAgIHVwZGF0ZWRSZWN1cnNlTGlzdCA9IF9yZWN1cnNlTGlzdC5jb25jYXQocmVmTmFtZSk7XG4gICAgICAgICAgICBzY2hlbWFUb0NvbXB1dGUgPSBmaW5kU2NoZW1hRGVmaW5pdGlvbihyZWZOYW1lLCByb290U2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChERVBFTkRFTkNJRVNfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICAvLyBHZXQgdGhlIGRlZmF1bHQgaWYgc2V0IGZyb20gcHJvcGVydGllcyB0byBlbnN1cmUgdGhlIGRlcGVuZGVuY2llcyBjb25kaXRpb25zIGFyZSByZXNvbHZlZCBiYXNlZCBvbiBpdFxuICAgICAgICBjb25zdCBkZWZhdWx0Rm9ybURhdGEgPSB7XG4gICAgICAgICAgICAuLi5nZXREZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUodmFsaWRhdG9yLCBzY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzLCBkZWZhdWx0cyksXG4gICAgICAgICAgICAuLi5mb3JtRGF0YSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRTY2hlbWEgPSByZXNvbHZlRGVwZW5kZW5jaWVzKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBmYWxzZSwgW10sIGRlZmF1bHRGb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICBzY2hlbWFUb0NvbXB1dGUgPSByZXNvbHZlZFNjaGVtYVswXTsgLy8gcGljayB0aGUgZmlyc3QgZWxlbWVudCBmcm9tIHJlc29sdmUgZGVwZW5kZW5jaWVzXG4gICAgfVxuICAgIGVsc2UgaWYgKGlzRml4ZWRJdGVtcyhzY2hlbWEpKSB7XG4gICAgICAgIGRlZmF1bHRzID0gc2NoZW1hLml0ZW1zLm1hcCgoaXRlbVNjaGVtYSwgaWR4KSA9PiBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBpdGVtU2NoZW1hLCB7XG4gICAgICAgICAgICByb290U2NoZW1hLFxuICAgICAgICAgICAgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyxcbiAgICAgICAgICAgIF9yZWN1cnNlTGlzdCxcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsXG4gICAgICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgICAgIHBhcmVudERlZmF1bHRzOiBBcnJheS5pc0FycmF5KHBhcmVudERlZmF1bHRzKSA/IHBhcmVudERlZmF1bHRzW2lkeF0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICByYXdGb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICByZXF1aXJlZCxcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICBlbHNlIGlmIChPTkVfT0ZfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCB7IG9uZU9mLCAuLi5yZW1haW5pbmcgfSA9IHNjaGVtYTtcbiAgICAgICAgaWYgKG9uZU9mLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYShzY2hlbWEpO1xuICAgICAgICBjb25zdCB7IHR5cGUgPSAnbnVsbCcgfSA9IHJlbWFpbmluZztcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHR5cGUpICYmXG4gICAgICAgICAgICBQUklNSVRJVkVfVFlQRVMuaW5jbHVkZXModHlwZSkgJiZcbiAgICAgICAgICAgIChleHBlcmltZW50YWxfZGZzYl90b19jb21wdXRlID09PSBudWxsIHx8IGV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUuY29uc3RBc0RlZmF1bHRzKSA9PT0gJ3NraXBPbmVPZicpIHtcbiAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbiBhIG9uZU9mIG9mIGEgcHJpbWl0aXZlIHR5cGUsIHRoZW4gd2Ugd2FudCB0byBwYXNzIGNvbnN0QXNEZWZhdWx0cyBhcyAnbmV2ZXInIGZvciB0aGUgcmVjdXJzaW9uXG4gICAgICAgICAgICBleHBlcmltZW50YWxfZGZzYl90b19jb21wdXRlID0geyAuLi5leHBlcmltZW50YWxfZGZzYl90b19jb21wdXRlLCBjb25zdEFzRGVmYXVsdHM6ICduZXZlcicgfTtcbiAgICAgICAgfVxuICAgICAgICBzY2hlbWFUb0NvbXB1dGUgPSBvbmVPZltnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCByb290U2NoZW1hLCBpc0VtcHR5KGZvcm1EYXRhKSA/IHVuZGVmaW5lZCA6IGZvcm1EYXRhLCBvbmVPZiwgMCwgZGlzY3JpbWluYXRvciwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpXTtcbiAgICAgICAgc2NoZW1hVG9Db21wdXRlID0gbWVyZ2VTY2hlbWFzKHJlbWFpbmluZywgc2NoZW1hVG9Db21wdXRlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoQU5ZX09GX0tFWSBpbiBzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgeyBhbnlPZiwgLi4ucmVtYWluaW5nIH0gPSBzY2hlbWE7XG4gICAgICAgIGlmIChhbnlPZi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEoc2NoZW1hKTtcbiAgICAgICAgc2NoZW1hVG9Db21wdXRlID0gYW55T2ZbZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgaXNFbXB0eShmb3JtRGF0YSkgPyB1bmRlZmluZWQgOiBmb3JtRGF0YSwgYW55T2YsIDAsIGRpc2NyaW1pbmF0b3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKV07XG4gICAgICAgIHNjaGVtYVRvQ29tcHV0ZSA9IG1lcmdlU2NoZW1hcyhyZW1haW5pbmcsIHNjaGVtYVRvQ29tcHV0ZSk7XG4gICAgfVxuICAgIGlmIChzY2hlbWFUb0NvbXB1dGUpIHtcbiAgICAgICAgcmV0dXJuIGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIHNjaGVtYVRvQ29tcHV0ZSwge1xuICAgICAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgICAgIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMsXG4gICAgICAgICAgICBfcmVjdXJzZUxpc3Q6IHVwZGF0ZWRSZWN1cnNlTGlzdCxcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3I6IGV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUsXG4gICAgICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgICAgIHBhcmVudERlZmF1bHRzOiBkZWZhdWx0cyxcbiAgICAgICAgICAgIHJhd0Zvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gTm8gZGVmYXVsdHMgZGVmaW5lZCBmb3IgdGhpcyBub2RlLCBmYWxsYmFjayB0byBnZW5lcmljIHR5cGVkIG9uZXMuXG4gICAgaWYgKGRlZmF1bHRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVmYXVsdHMgPSBzY2hlbWEuZGVmYXVsdDtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdEJhc2VkT25TY2hlbWFUeXBlID0gZ2V0RGVmYXVsdEJhc2VkT25TY2hlbWFUeXBlKHZhbGlkYXRvciwgc2NoZW1hLCBjb21wdXRlRGVmYXVsdHNQcm9wcywgZGVmYXVsdHMpO1xuICAgIHJldHVybiBkZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUgIT09IG51bGwgJiYgZGVmYXVsdEJhc2VkT25TY2hlbWFUeXBlICE9PSB2b2lkIDAgPyBkZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUgOiBkZWZhdWx0cztcbn1cbi8qKiBDb21wdXRlcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3Igb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByYXdTY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGVmYXVsdCBzdGF0ZSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0ge0NvbXB1dGVEZWZhdWx0c1Byb3BzfSBjb21wdXRlRGVmYXVsdHNQcm9wcyAtIE9wdGlvbmFsIHByb3BzIGZvciB0aGlzIGZ1bmN0aW9uXG4gKiBAcGFyYW0gZGVmYXVsdHMgLSBPcHRpb25hbCBwcm9wcyBmb3IgdGhpcyBmdW5jdGlvblxuICogQHJldHVybnMgLSBUaGUgZGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgc2NoZW1hIHR5cGUgaWYgdGhleSBhcmUgZGVmaW5lZCBmb3Igb2JqZWN0IG9yIGFycmF5IHNjaGVtYXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3REZWZhdWx0cyh2YWxpZGF0b3IsIHJhd1NjaGVtYSwgeyByYXdGb3JtRGF0YSwgcm9vdFNjaGVtYSA9IHt9LCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID0gZmFsc2UsIF9yZWN1cnNlTGlzdCA9IFtdLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0gdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiA9IHVuZGVmaW5lZCwgcmVxdWlyZWQsIH0gPSB7fSwgZGVmYXVsdHMpIHtcbiAgICB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gKGlzT2JqZWN0KHJhd0Zvcm1EYXRhKSA/IHJhd0Zvcm1EYXRhIDoge30pO1xuICAgICAgICBjb25zdCBzY2hlbWEgPSByYXdTY2hlbWE7XG4gICAgICAgIC8vIFRoaXMgaXMgYSBjdXN0b20gYWRkaXRpb24gdGhhdCBmaXhlcyB0aGlzIGlzc3VlOlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcmpzZi10ZWFtL3JlYWN0LWpzb25zY2hlbWEtZm9ybS9pc3N1ZXMvMzgzMlxuICAgICAgICBjb25zdCByZXRyaWV2ZWRTY2hlbWEgPSAoZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmFsbE9mKSA9PT0gJ3BvcHVsYXRlRGVmYXVsdHMnICYmIEFMTF9PRl9LRVkgaW4gc2NoZW1hXG4gICAgICAgICAgICA/IHJldHJpZXZlU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpXG4gICAgICAgICAgICA6IHNjaGVtYTtcbiAgICAgICAgY29uc3QgcGFyZW50Q29uc3QgPSByZXRyaWV2ZWRTY2hlbWFbQ09OU1RfS0VZXTtcbiAgICAgICAgY29uc3Qgb2JqZWN0RGVmYXVsdHMgPSBPYmplY3Qua2V5cyhyZXRyaWV2ZWRTY2hlbWEucHJvcGVydGllcyB8fCB7fSkucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydHlTY2hlbWEgPSBnZXQocmV0cmlldmVkU2NoZW1hLCBbUFJPUEVSVElFU19LRVksIGtleV0pO1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHBhcmVudCBzY2hlbWEgaGFzIGEgY29uc3QgcHJvcGVydHkgZGVmaW5lZCBBTkQgd2UgYXJlIHN1cHBvcnRpbmcgY29uc3QgYXMgZGVmYXVsdHMsIHRoZW4gd2VcbiAgICAgICAgICAgIC8vIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBjb21wdXRlZERlZmF1bHQgc2luY2UgaXQncyBjb21pbmcgZnJvbSB0aGUgY29uc3QuXG4gICAgICAgICAgICBjb25zdCBoYXNQYXJlbnRDb25zdCA9IGlzT2JqZWN0KHBhcmVudENvbnN0KSAmJiBwYXJlbnRDb25zdFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBoYXNDb25zdCA9ICgoaXNPYmplY3QocHJvcGVydHlTY2hlbWEpICYmIENPTlNUX0tFWSBpbiBwcm9wZXJ0eVNjaGVtYSkgfHwgaGFzUGFyZW50Q29uc3QpICYmXG4gICAgICAgICAgICAgICAgKGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IG51bGwgfHwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvci5jb25zdEFzRGVmYXVsdHMpICE9PSAnbmV2ZXInO1xuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgZGVmYXVsdHMgZm9yIHRoaXMgbm9kZSwgd2l0aCB0aGUgcGFyZW50IGRlZmF1bHRzIHdlIG1pZ2h0XG4gICAgICAgICAgICAvLyBoYXZlIGZyb20gYSBwcmV2aW91cyBydW46IGRlZmF1bHRzW2tleV0uXG4gICAgICAgICAgICBjb25zdCBjb21wdXRlZERlZmF1bHQgPSBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBwcm9wZXJ0eVNjaGVtYSwge1xuICAgICAgICAgICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgICAgICAgICAgX3JlY3Vyc2VMaXN0LFxuICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgICAgICAgICAgaW5jbHVkZVVuZGVmaW5lZFZhbHVlczogaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXJlbnREZWZhdWx0czogZ2V0KGRlZmF1bHRzLCBba2V5XSksXG4gICAgICAgICAgICAgICAgcmF3Rm9ybURhdGE6IGdldChmb3JtRGF0YSwgW2tleV0pLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoX2EgPSByZXRyaWV2ZWRTY2hlbWEucmVxdWlyZWQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pbmNsdWRlcyhrZXkpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtYXliZUFkZERlZmF1bHRUb09iamVjdChhY2MsIGtleSwgY29tcHV0ZWREZWZhdWx0LCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzLCByZXF1aXJlZCwgcmV0cmlldmVkU2NoZW1hLnJlcXVpcmVkLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLCBoYXNDb25zdCk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgICAgIGlmIChyZXRyaWV2ZWRTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIC8vIGFzIHBlciBzcGVjIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIG1heSBiZSBlaXRoZXIgc2NoZW1hIG9yIGJvb2xlYW5cbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxQcm9wZXJ0aWVzU2NoZW1hID0gaXNPYmplY3QocmV0cmlldmVkU2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzKVxuICAgICAgICAgICAgICAgID8gcmV0cmlldmVkU2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QoZGVmYXVsdHMpKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZGVmYXVsdHMpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGtleSkgPT4gIXJldHJpZXZlZFNjaGVtYS5wcm9wZXJ0aWVzIHx8ICFyZXRyaWV2ZWRTY2hlbWEucHJvcGVydGllc1trZXldKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiBrZXlzLmFkZChrZXkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhUmVxdWlyZWQgPSBbXTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZvcm1EYXRhKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGtleSkgPT4gIXJldHJpZXZlZFNjaGVtYS5wcm9wZXJ0aWVzIHx8ICFyZXRyaWV2ZWRTY2hlbWEucHJvcGVydGllc1trZXldKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBrZXlzLmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhUmVxdWlyZWQucHVzaChrZXkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wdXRlZERlZmF1bHQgPSBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBhZGRpdGlvbmFsUHJvcGVydGllc1NjaGVtYSwge1xuICAgICAgICAgICAgICAgICAgICByb290U2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBfcmVjdXJzZUxpc3QsXG4gICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mLFxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzOiBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID09PSB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnREZWZhdWx0czogZ2V0KGRlZmF1bHRzLCBba2V5XSksXG4gICAgICAgICAgICAgICAgICAgIHJhd0Zvcm1EYXRhOiBnZXQoZm9ybURhdGEsIFtrZXldKSxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IChfYSA9IHJldHJpZXZlZFNjaGVtYS5yZXF1aXJlZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluY2x1ZGVzKGtleSksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gU2luY2UgdGhlc2UgYXJlIGFkZGl0aW9uYWwgcHJvcGVydGllcyB3ZSBkb24ndCBuZWVkIHRvIGFkZCB0aGUgYGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3JgIHByb3BcbiAgICAgICAgICAgICAgICBtYXliZUFkZERlZmF1bHRUb09iamVjdChvYmplY3REZWZhdWx0cywga2V5LCBjb21wdXRlZERlZmF1bHQsIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMsIHJlcXVpcmVkLCBmb3JtRGF0YVJlcXVpcmVkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3REZWZhdWx0cztcbiAgICB9XG59XG4vKiogQ29tcHV0ZXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGFycmF5cy5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByYXdTY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGVmYXVsdCBzdGF0ZSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0ge0NvbXB1dGVEZWZhdWx0c1Byb3BzfSBjb21wdXRlRGVmYXVsdHNQcm9wcyAtIE9wdGlvbmFsIHByb3BzIGZvciB0aGlzIGZ1bmN0aW9uXG4gKiBAcGFyYW0gZGVmYXVsdHMgLSBPcHRpb25hbCBwcm9wcyBmb3IgdGhpcyBmdW5jdGlvblxuICogQHJldHVybnMgLSBUaGUgZGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgc2NoZW1hIHR5cGUgaWYgdGhleSBhcmUgZGVmaW5lZCBmb3Igb2JqZWN0IG9yIGFycmF5IHNjaGVtYXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcnJheURlZmF1bHRzKHZhbGlkYXRvciwgcmF3U2NoZW1hLCB7IHJhd0Zvcm1EYXRhLCByb290U2NoZW1hID0ge30sIF9yZWN1cnNlTGlzdCA9IFtdLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0gdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiA9IHVuZGVmaW5lZCwgcmVxdWlyZWQsIH0gPSB7fSwgZGVmYXVsdHMpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHNjaGVtYSA9IHJhd1NjaGVtYTtcbiAgICBjb25zdCBhcnJheU1pbkl0ZW1zU3RhdGVCZWhhdmlvciA9IChfYSA9IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IG51bGwgfHwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvci5hcnJheU1pbkl0ZW1zKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fTtcbiAgICBjb25zdCB7IHBvcHVsYXRlOiBhcnJheU1pbkl0ZW1zUG9wdWxhdGUsIG1lcmdlRXh0cmFEZWZhdWx0czogYXJyYXlNZXJnZUV4dHJhRGVmYXVsdHMgfSA9IGFycmF5TWluSXRlbXNTdGF0ZUJlaGF2aW9yO1xuICAgIGNvbnN0IG5ldmVyUG9wdWxhdGUgPSBhcnJheU1pbkl0ZW1zUG9wdWxhdGUgPT09ICduZXZlcic7XG4gICAgY29uc3QgaWdub3JlTWluSXRlbXNGbGFnU2V0ID0gYXJyYXlNaW5JdGVtc1BvcHVsYXRlID09PSAncmVxdWlyZWRPbmx5JztcbiAgICBjb25zdCBpc1BvcHVsYXRlQWxsID0gYXJyYXlNaW5JdGVtc1BvcHVsYXRlID09PSAnYWxsJyB8fCAoIW5ldmVyUG9wdWxhdGUgJiYgIWlnbm9yZU1pbkl0ZW1zRmxhZ1NldCk7XG4gICAgY29uc3QgY29tcHV0ZVNraXBQb3B1bGF0ZSA9IChfYiA9IGFycmF5TWluSXRlbXNTdGF0ZUJlaGF2aW9yID09PSBudWxsIHx8IGFycmF5TWluSXRlbXNTdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcnJheU1pbkl0ZW1zU3RhdGVCZWhhdmlvci5jb21wdXRlU2tpcFBvcHVsYXRlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAoKCkgPT4gZmFsc2UpO1xuICAgIGNvbnN0IGlzU2tpcEVtcHR5RGVmYXVsdHMgPSAoZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmVtcHR5T2JqZWN0RmllbGRzKSA9PT0gJ3NraXBFbXB0eURlZmF1bHRzJztcbiAgICBjb25zdCBlbXB0eURlZmF1bHQgPSBpc1NraXBFbXB0eURlZmF1bHRzID8gdW5kZWZpbmVkIDogW107XG4gICAgLy8gSW5qZWN0IGRlZmF1bHRzIGludG8gZXhpc3RpbmcgYXJyYXkgZGVmYXVsdHNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkZWZhdWx0cykpIHtcbiAgICAgICAgZGVmYXVsdHMgPSBkZWZhdWx0cy5tYXAoKGl0ZW0sIGlkeCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hSXRlbSA9IGdldElubmVyU2NoZW1hRm9yQXJyYXlJdGVtKHNjaGVtYSwgQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcuRmFsbGJhY2ssIGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gY29tcHV0ZURlZmF1bHRzKHZhbGlkYXRvciwgc2NoZW1hSXRlbSwge1xuICAgICAgICAgICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgICAgICAgICAgX3JlY3Vyc2VMaXN0LFxuICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgICAgICAgICAgcGFyZW50RGVmYXVsdHM6IGl0ZW0sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIERlZXBseSBpbmplY3QgZGVmYXVsdHMgaW50byBhbHJlYWR5IGV4aXN0aW5nIGZvcm0gZGF0YVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJhd0Zvcm1EYXRhKSkge1xuICAgICAgICBjb25zdCBzY2hlbWFJdGVtID0gZ2V0SW5uZXJTY2hlbWFGb3JBcnJheUl0ZW0oc2NoZW1hKTtcbiAgICAgICAgaWYgKG5ldmVyUG9wdWxhdGUpIHtcbiAgICAgICAgICAgIGRlZmF1bHRzID0gcmF3Rm9ybURhdGE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtRGVmYXVsdHMgPSByYXdGb3JtRGF0YS5tYXAoKGl0ZW0sIGlkeCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBzY2hlbWFJdGVtLCB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIF9yZWN1cnNlTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgICAgICAgICAgICAgIHJhd0Zvcm1EYXRhOiBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnREZWZhdWx0czogZ2V0KGRlZmF1bHRzLCBbaWR4XSksXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBJZiB0aGUgcG9wdWxhdGUgJ3JlcXVpcmVkT25seScgZmxhZyBpcyBzZXQgdGhlbiB3ZSBvbmx5IG1lcmdlIGFuZCBpbmNsdWRlIGV4dHJhIGRlZmF1bHRzIGlmIHRoZXkgYXJlIHJlcXVpcmVkLlxuICAgICAgICAgICAgLy8gT3IgaWYgcG9wdWxhdGUgJ2FsbCcgaXMgc2V0IHdlIG1lcmdlIGFuZCBpbmNsdWRlIGV4dHJhIGRlZmF1bHRzLlxuICAgICAgICAgICAgY29uc3QgbWVyZ2VFeHRyYURlZmF1bHRzID0gKChpZ25vcmVNaW5JdGVtc0ZsYWdTZXQgJiYgcmVxdWlyZWQpIHx8IGlzUG9wdWxhdGVBbGwpICYmIGFycmF5TWVyZ2VFeHRyYURlZmF1bHRzO1xuICAgICAgICAgICAgZGVmYXVsdHMgPSBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhKGRlZmF1bHRzLCBpdGVtRGVmYXVsdHMsIG1lcmdlRXh0cmFEZWZhdWx0cyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHNjaGVtYSBoYXMgYSBjb25zdCBwcm9wZXJ0eSBkZWZpbmVkIEFORCB3ZSBhcmUgc3VwcG9ydGluZyBjb25zdCBhcyBkZWZhdWx0cywgdGhlbiB3ZSBzaG91bGQgYWx3YXlzXG4gICAgLy8gcmV0dXJuIHRoZSBjb21wdXRlZERlZmF1bHQgc2luY2UgaXQncyBjb21pbmcgZnJvbSB0aGUgY29uc3QuXG4gICAgY29uc3QgaGFzQ29uc3QgPSBpc09iamVjdChzY2hlbWEpICYmIENPTlNUX0tFWSBpbiBzY2hlbWEgJiYgKGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IG51bGwgfHwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvci5jb25zdEFzRGVmYXVsdHMpICE9PSAnbmV2ZXInO1xuICAgIGlmIChoYXNDb25zdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKG5ldmVyUG9wdWxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0cyAhPT0gbnVsbCAmJiBkZWZhdWx0cyAhPT0gdm9pZCAwID8gZGVmYXVsdHMgOiBlbXB0eURlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlnbm9yZU1pbkl0ZW1zRmxhZ1NldCAmJiAhcmVxdWlyZWQpIHtcbiAgICAgICAgICAgIC8vIElmIG5vIGZvcm0gZGF0YSBleGlzdHMgb3IgZGVmYXVsdHMgYXJlIHNldCBsZWF2ZSB0aGUgZmllbGQgZW1wdHkvbm9uLWV4aXN0ZW50LCBvdGhlcndpc2VcbiAgICAgICAgICAgIC8vIHJldHVybiBmb3JtIGRhdGEvZGVmYXVsdHNcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0cyA/IGRlZmF1bHRzIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRzTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkZWZhdWx0cykgPyBkZWZhdWx0cy5sZW5ndGggOiAwO1xuICAgIGlmICghc2NoZW1hLm1pbkl0ZW1zIHx8XG4gICAgICAgIGlzTXVsdGlTZWxlY3QodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB8fFxuICAgICAgICBjb21wdXRlU2tpcFBvcHVsYXRlKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hKSB8fFxuICAgICAgICBzY2hlbWEubWluSXRlbXMgPD0gZGVmYXVsdHNMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRzID8gZGVmYXVsdHMgOiBlbXB0eURlZmF1bHQ7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRFbnRyaWVzID0gKGRlZmF1bHRzIHx8IFtdKTtcbiAgICBjb25zdCBmaWxsZXJTY2hlbWEgPSBnZXRJbm5lclNjaGVtYUZvckFycmF5SXRlbShzY2hlbWEsIEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nLkludmVydCk7XG4gICAgY29uc3QgZmlsbGVyRGVmYXVsdCA9IGZpbGxlclNjaGVtYS5kZWZhdWx0O1xuICAgIC8vIENhbGN1bGF0ZSBmaWxsZXIgZW50cmllcyBmb3IgcmVtYWluaW5nIGl0ZW1zIChtaW5JdGVtcyAtIGV4aXN0aW5nIHJhdyBkYXRhL2RlZmF1bHRzKVxuICAgIGNvbnN0IGZpbGxlckVudHJpZXMgPSBuZXcgQXJyYXkoc2NoZW1hLm1pbkl0ZW1zIC0gZGVmYXVsdHNMZW5ndGgpLmZpbGwoY29tcHV0ZURlZmF1bHRzKHZhbGlkYXRvciwgZmlsbGVyU2NoZW1hLCB7XG4gICAgICAgIHBhcmVudERlZmF1bHRzOiBmaWxsZXJEZWZhdWx0LFxuICAgICAgICByb290U2NoZW1hLFxuICAgICAgICBfcmVjdXJzZUxpc3QsXG4gICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsXG4gICAgICAgIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mLFxuICAgICAgICByZXF1aXJlZCxcbiAgICB9KSk7XG4gICAgLy8gdGhlbiBmaWxsIHVwIHRoZSByZXN0IHdpdGggZWl0aGVyIHRoZSBpdGVtIGRlZmF1bHQgb3IgZW1wdHksIHVwIHRvIG1pbkl0ZW1zXG4gICAgcmV0dXJuIGRlZmF1bHRFbnRyaWVzLmNvbmNhdChmaWxsZXJFbnRyaWVzKTtcbn1cbi8qKiBDb21wdXRlcyB0aGUgZGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgc2NoZW1hIHR5cGUuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gcmF3U2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRlZmF1bHQgc3RhdGUgaXMgZGVzaXJlZFxuICogQHBhcmFtIHtDb21wdXRlRGVmYXVsdHNQcm9wc30gY29tcHV0ZURlZmF1bHRzUHJvcHMgLSBPcHRpb25hbCBwcm9wcyBmb3IgdGhpcyBmdW5jdGlvblxuICogQHBhcmFtIGRlZmF1bHRzIC0gT3B0aW9uYWwgcHJvcHMgZm9yIHRoaXMgZnVuY3Rpb25cbiAqIEByZXR1cm5zIC0gVGhlIGRlZmF1bHQgdmFsdWUgYmFzZWQgb24gdGhlIHNjaGVtYSB0eXBlIGlmIHRoZXkgYXJlIGRlZmluZWQgZm9yIG9iamVjdCBvciBhcnJheSBzY2hlbWFzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEJhc2VkT25TY2hlbWFUeXBlKHZhbGlkYXRvciwgcmF3U2NoZW1hLCBjb21wdXRlRGVmYXVsdHNQcm9wcyA9IHt9LCBkZWZhdWx0cykge1xuICAgIHN3aXRjaCAoZ2V0U2NoZW1hVHlwZShyYXdTY2hlbWEpKSB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gcmVjdXJzZSBmb3Igb2JqZWN0IHNjaGVtYSBpbm5lciBkZWZhdWx0IHZhbHVlcy5cbiAgICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICAgICAgcmV0dXJuIGdldE9iamVjdERlZmF1bHRzKHZhbGlkYXRvciwgcmF3U2NoZW1hLCBjb21wdXRlRGVmYXVsdHNQcm9wcywgZGVmYXVsdHMpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFycmF5RGVmYXVsdHModmFsaWRhdG9yLCByYXdTY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzLCBkZWZhdWx0cyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKiogUmV0dXJucyB0aGUgc3VwZXJzZXQgb2YgYGZvcm1EYXRhYCB0aGF0IGluY2x1ZGVzIHRoZSBnaXZlbiBzZXQgdXBkYXRlZCB0byBpbmNsdWRlIGFueSBtaXNzaW5nIGZpZWxkcyB0aGF0IGhhdmVcbiAqIGNvbXB1dGVkIHRvIGhhdmUgZGVmYXVsdHMgcHJvdmlkZWQgaW4gdGhlIGBzY2hlbWFgLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHRoZVNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHN0YXRlIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgb250byB3aGljaCB0byBwcm92aWRlIGFueSBtaXNzaW5nIGRlZmF1bHRzXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbaW5jbHVkZVVuZGVmaW5lZFZhbHVlcz1mYWxzZV0gLSBPcHRpb25hbCBmbGFnLCBpZiB0cnVlLCBjYXVzZSB1bmRlZmluZWQgdmFsdWVzIHRvIGJlIGFkZGVkIGFzIGRlZmF1bHRzLlxuICogICAgICAgICAgSWYgXCJleGNsdWRlT2JqZWN0Q2hpbGRyZW5cIiwgY2F1c2UgdW5kZWZpbmVkIHZhbHVlcyBmb3IgdGhpcyBvYmplY3QgYW5kIHBhc3MgYGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgIGFzXG4gKiAgICAgICAgICBmYWxzZSB3aGVuIGNvbXB1dGluZyBkZWZhdWx0cyBmb3IgYW55IG5lc3RlZCBvYmplY3QgcHJvcGVydGllcy5cbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcl0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QsIGlmIHByb3ZpZGVkLCBhbGxvd3MgdXNlcnMgdG8gb3ZlcnJpZGUgZGVmYXVsdCBmb3JtIHN0YXRlIGJlaGF2aW9yXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIHJlc3VsdGluZyBgZm9ybURhdGFgIHdpdGggYWxsIHRoZSBkZWZhdWx0cyBwcm92aWRlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREZWZhdWx0Rm9ybVN0YXRlKHZhbGlkYXRvciwgdGhlU2NoZW1hLCBmb3JtRGF0YSwgcm9vdFNjaGVtYSwgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyA9IGZhbHNlLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGlmICghaXNPYmplY3QodGhlU2NoZW1hKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2NoZW1hOiAnICsgdGhlU2NoZW1hKTtcbiAgICB9XG4gICAgY29uc3Qgc2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCB0aGVTY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgY29uc3QgZGVmYXVsdHMgPSBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBzY2hlbWEsIHtcbiAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyxcbiAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgIHJhd0Zvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICB9KTtcbiAgICBpZiAoZm9ybURhdGEgPT09IHVuZGVmaW5lZCB8fCBmb3JtRGF0YSA9PT0gbnVsbCB8fCAodHlwZW9mIGZvcm1EYXRhID09PSAnbnVtYmVyJyAmJiBpc05hTihmb3JtRGF0YSkpKSB7XG4gICAgICAgIC8vIE5vIGZvcm0gZGF0YT8gVXNlIHNjaGVtYSBkZWZhdWx0cy5cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRzO1xuICAgIH1cbiAgICBjb25zdCB7IG1lcmdlRGVmYXVsdHNJbnRvRm9ybURhdGEsIGFycmF5TWluSXRlbXMgPSB7fSB9ID0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciB8fCB7fTtcbiAgICBjb25zdCB7IG1lcmdlRXh0cmFEZWZhdWx0cyB9ID0gYXJyYXlNaW5JdGVtcztcbiAgICBjb25zdCBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCA9IG1lcmdlRGVmYXVsdHNJbnRvRm9ybURhdGEgPT09ICd1c2VEZWZhdWx0SWZGb3JtRGF0YVVuZGVmaW5lZCc7XG4gICAgaWYgKGlzT2JqZWN0KGZvcm1EYXRhKSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YShkZWZhdWx0cywgZm9ybURhdGEsIG1lcmdlRXh0cmFEZWZhdWx0cywgZGVmYXVsdFN1cGVyY2VkZXNVbmRlZmluZWQpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShmb3JtRGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEoZGVmYXVsdHMsIGZvcm1EYXRhLCBtZXJnZUV4dHJhRGVmYXVsdHMsIGRlZmF1bHRTdXBlcmNlZGVzVW5kZWZpbmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1EYXRhO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0RGVmYXVsdEZvcm1TdGF0ZS5qcy5tYXAiLCJpbXBvcnQgZ2V0VWlPcHRpb25zIGZyb20gJy4vZ2V0VWlPcHRpb25zJztcbi8qKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBgdWlTY2hlbWFgIGNvbnRhaW5zIHRoZSBgd2lkZ2V0YCBmaWVsZCBhbmQgdGhhdCB0aGUgd2lkZ2V0IGlzIG5vdCBgaGlkZGVuYFxuICpcbiAqIEBwYXJhbSB1aVNjaGVtYSAtIFRoZSBVSSBTY2hlbWEgZnJvbSB3aGljaCB0byBkZXRlY3QgaWYgaXQgaXMgY3VzdG9taXplZFxuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBgdWlTY2hlbWFgIGRlc2NyaWJlcyBhIGN1c3RvbSB3aWRnZXQsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0N1c3RvbVdpZGdldCh1aVNjaGVtYSA9IHt9KSB7XG4gICAgcmV0dXJuIChcbiAgICAvLyBUT0RPOiBSZW1vdmUgdGhlIGAmJiB1aVNjaGVtYVsndWk6d2lkZ2V0J10gIT09ICdoaWRkZW4nYCBvbmNlIHdlIHN1cHBvcnQgaGlkZGVuIHdpZGdldHMgZm9yIGFycmF5cy5cbiAgICAvLyBodHRwczovL3Jqc2YtdGVhbS5naXRodWIuaW8vcmVhY3QtanNvbnNjaGVtYS1mb3JtL2RvY3MvdXNhZ2Uvd2lkZ2V0cy8jaGlkZGVuLXdpZGdldHNcbiAgICAnd2lkZ2V0JyBpbiBnZXRVaU9wdGlvbnModWlTY2hlbWEpICYmIGdldFVpT3B0aW9ucyh1aVNjaGVtYSlbJ3dpZGdldCddICE9PSAnaGlkZGVuJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc0N1c3RvbVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBVSV9XSURHRVRfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbi8qKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBgc2NoZW1hYCBhbmQgYHVpU2NoZW1hYCBjb21iaW5hdGlvbiByZXByZXNlbnRzIGFuIGFycmF5IG9mIGZpbGVzXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggY2hlY2sgZm9yIGFycmF5IG9mIGZpbGVzIGZsYWcgaXMgZGVzaXJlZFxuICogQHBhcmFtIFt1aVNjaGVtYT17fV0gLSBUaGUgVUkgc2NoZW1hIGZyb20gd2hpY2ggdG8gY2hlY2sgdGhlIHdpZGdldFxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBzY2hlbWEvdWlTY2hlbWEgY29udGFpbnMgYW4gYXJyYXkgb2YgZmlsZXMsIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0ZpbGVzQXJyYXkodmFsaWRhdG9yLCBzY2hlbWEsIHVpU2NoZW1hID0ge30sIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgaWYgKHVpU2NoZW1hW1VJX1dJREdFVF9LRVldID09PSAnZmlsZXMnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoc2NoZW1hLml0ZW1zKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zU2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEuaXRlbXMsIHJvb3RTY2hlbWEsIHVuZGVmaW5lZCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICByZXR1cm4gaXRlbXNTY2hlbWEudHlwZSA9PT0gJ3N0cmluZycgJiYgaXRlbXNTY2hlbWEuZm9ybWF0ID09PSAnZGF0YS11cmwnO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc0ZpbGVzQXJyYXkuanMubWFwIiwiaW1wb3J0IHsgVUlfRklFTERfS0VZLCBVSV9XSURHRVRfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBnZXRTY2hlbWFUeXBlIGZyb20gJy4uL2dldFNjaGVtYVR5cGUnO1xuaW1wb3J0IGdldFVpT3B0aW9ucyBmcm9tICcuLi9nZXRVaU9wdGlvbnMnO1xuaW1wb3J0IGlzQ3VzdG9tV2lkZ2V0IGZyb20gJy4uL2lzQ3VzdG9tV2lkZ2V0JztcbmltcG9ydCBpc0ZpbGVzQXJyYXkgZnJvbSAnLi9pc0ZpbGVzQXJyYXknO1xuaW1wb3J0IGlzTXVsdGlTZWxlY3QgZnJvbSAnLi9pc011bHRpU2VsZWN0Jztcbi8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNvbWJpbmF0aW9uIG9mIGBzY2hlbWFgIGFuZCBgdWlTY2hlbWFgIHByb3BlcnRpZXMgaW5kaWNhdGVzIHRoYXQgdGhlIGxhYmVsIGZvciB0aGUgYHNjaGVtYWBcbiAqIHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gYSBVSS5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGlzcGxheSBsYWJlbCBmbGFnIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbdWlTY2hlbWE9e31dIC0gVGhlIFVJIHNjaGVtYSBmcm9tIHdoaWNoIHRvIGRlcml2ZSBwb3RlbnRpYWxseSBkaXNwbGF5YWJsZSBpbmZvcm1hdGlvblxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2dsb2JhbE9wdGlvbnM9e31dIC0gVGhlIG9wdGlvbmFsIEdsb2JhbCBVSSBTY2hlbWEgZnJvbSB3aGljaCB0byBnZXQgYW55IGZhbGxiYWNrIGB4eHhgIG9wdGlvbnNcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBsYWJlbCBzaG91bGQgYmUgZGlzcGxheWVkIG9yIGZhbHNlIGlmIGl0IHNob3VsZCBub3RcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGlzcGxheUxhYmVsKHZhbGlkYXRvciwgc2NoZW1hLCB1aVNjaGVtYSA9IHt9LCByb290U2NoZW1hLCBnbG9iYWxPcHRpb25zLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGNvbnN0IHVpT3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsT3B0aW9ucyk7XG4gICAgY29uc3QgeyBsYWJlbCA9IHRydWUgfSA9IHVpT3B0aW9ucztcbiAgICBsZXQgZGlzcGxheUxhYmVsID0gISFsYWJlbDtcbiAgICBjb25zdCBzY2hlbWFUeXBlID0gZ2V0U2NoZW1hVHlwZShzY2hlbWEpO1xuICAgIGlmIChzY2hlbWFUeXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGRpc3BsYXlMYWJlbCA9XG4gICAgICAgICAgICBpc011bHRpU2VsZWN0KHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikgfHxcbiAgICAgICAgICAgICAgICBpc0ZpbGVzQXJyYXkodmFsaWRhdG9yLCBzY2hlbWEsIHVpU2NoZW1hLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikgfHxcbiAgICAgICAgICAgICAgICBpc0N1c3RvbVdpZGdldCh1aVNjaGVtYSk7XG4gICAgfVxuICAgIGlmIChzY2hlbWFUeXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBkaXNwbGF5TGFiZWwgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYVR5cGUgPT09ICdib29sZWFuJyAmJiAhdWlTY2hlbWFbVUlfV0lER0VUX0tFWV0pIHtcbiAgICAgICAgZGlzcGxheUxhYmVsID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh1aVNjaGVtYVtVSV9GSUVMRF9LRVldKSB7XG4gICAgICAgIGRpc3BsYXlMYWJlbCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZGlzcGxheUxhYmVsO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0RGlzcGxheUxhYmVsLmpzLm1hcCIsImltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBtZXJnZU9iamVjdHMgZnJvbSAnLi4vbWVyZ2VPYmplY3RzJztcbi8qKiBNZXJnZXMgdGhlIGVycm9ycyBpbiBgYWRkaXRpb25hbEVycm9yU2NoZW1hYCBpbnRvIHRoZSBleGlzdGluZyBgdmFsaWRhdGlvbkRhdGFgIGJ5IGNvbWJpbmluZyB0aGUgaGllcmFyY2hpZXMgaW4gdGhlXG4gKiB0d28gYEVycm9yU2NoZW1hYHMgYW5kIHRoZW4gYXBwZW5kaW5nIHRoZSBlcnJvciBsaXN0IGZyb20gdGhlIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIG9idGFpbmVkIGJ5IGNhbGxpbmdcbiAqIGB2YWxpZGF0b3IudG9FcnJvckxpc3QoKWAgb250byB0aGUgYGVycm9yc2AgaW4gdGhlIGB2YWxpZGF0aW9uRGF0YWAuIElmIG5vIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGlzIHBhc3NlZCwgdGhlblxuICogYHZhbGlkYXRpb25EYXRhYCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gVGhlIHZhbGlkYXRvciB1c2VkIHRvIGNvbnZlcnQgYW4gRXJyb3JTY2hlbWEgdG8gYSBsaXN0IG9mIGVycm9yc1xuICogQHBhcmFtIHZhbGlkYXRpb25EYXRhIC0gVGhlIGN1cnJlbnQgYFZhbGlkYXRpb25EYXRhYCBpbnRvIHdoaWNoIHRvIG1lcmdlIHRoZSBhZGRpdGlvbmFsIGVycm9yc1xuICogQHBhcmFtIFthZGRpdGlvbmFsRXJyb3JTY2hlbWFdIC0gVGhlIGFkZGl0aW9uYWwgc2V0IG9mIGVycm9ycyBpbiBhbiBgRXJyb3JTY2hlbWFgXG4gKiBAcmV0dXJucyAtIFRoZSBgdmFsaWRhdGlvbkRhdGFgIHdpdGggdGhlIGFkZGl0aW9uYWwgZXJyb3JzIGZyb20gYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgbWVyZ2VkIGludG8gaXQsIGlmIHByb3ZpZGVkLlxuICogQGRlcHJlY2F0ZWQgLSBVc2UgdGhlIGB2YWxpZGF0aW9uRGF0YU1lcmdlKClgIGZ1bmN0aW9uIGV4cG9ydGVkIGZyb20gYEByanNmL3V0aWxzYCBpbnN0ZWFkLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVcbiAqICAgICAgICByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlVmFsaWRhdGlvbkRhdGEodmFsaWRhdG9yLCB2YWxpZGF0aW9uRGF0YSwgYWRkaXRpb25hbEVycm9yU2NoZW1hKSB7XG4gICAgaWYgKCFhZGRpdGlvbmFsRXJyb3JTY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25EYXRhO1xuICAgIH1cbiAgICBjb25zdCB7IGVycm9yczogb2xkRXJyb3JzLCBlcnJvclNjaGVtYTogb2xkRXJyb3JTY2hlbWEgfSA9IHZhbGlkYXRpb25EYXRhO1xuICAgIGxldCBlcnJvcnMgPSB2YWxpZGF0b3IudG9FcnJvckxpc3QoYWRkaXRpb25hbEVycm9yU2NoZW1hKTtcbiAgICBsZXQgZXJyb3JTY2hlbWEgPSBhZGRpdGlvbmFsRXJyb3JTY2hlbWE7XG4gICAgaWYgKCFpc0VtcHR5KG9sZEVycm9yU2NoZW1hKSkge1xuICAgICAgICBlcnJvclNjaGVtYSA9IG1lcmdlT2JqZWN0cyhvbGRFcnJvclNjaGVtYSwgYWRkaXRpb25hbEVycm9yU2NoZW1hLCB0cnVlKTtcbiAgICAgICAgZXJyb3JzID0gWy4uLm9sZEVycm9yc10uY29uY2F0KGVycm9ycyk7XG4gICAgfVxuICAgIHJldHVybiB7IGVycm9yU2NoZW1hLCBlcnJvcnMgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlVmFsaWRhdGlvbkRhdGEuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBoYXMgZnJvbSAnbG9kYXNoL2hhcyc7XG5pbXBvcnQgeyBQUk9QRVJUSUVTX0tFWSwgUkVGX0tFWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgcmV0cmlldmVTY2hlbWEgZnJvbSAnLi9yZXRyaWV2ZVNjaGVtYSc7XG5jb25zdCBOT19WQUxVRSA9IFN5bWJvbCgnbm8gVmFsdWUnKTtcbi8qKiBTYW5pdGl6ZSB0aGUgYGRhdGFgIGFzc29jaWF0ZWQgd2l0aCB0aGUgYG9sZFNjaGVtYWAgc28gaXQgaXMgY29uc2lkZXJlZCBhcHByb3ByaWF0ZSBmb3IgdGhlIGBuZXdTY2hlbWFgLiBJZiB0aGUgbmV3XG4gKiBzY2hlbWEgZG9lcyBub3QgY29udGFpbiBhbnkgcHJvcGVydGllcywgdGhlbiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZCB0byBjbGVhciBhbGwgdGhlIGZvcm0gZGF0YS4gRHVlIHRvIHRoZSBuYXR1cmVcbiAqIG9mIHNjaGVtYXMsIHRoaXMgc2FuaXRpemF0aW9uIGhhcHBlbnMgcmVjdXJzaXZlbHkgZm9yIG5lc3RlZCBvYmplY3RzIG9mIGRhdGEuIEFsc28sIGFueSBwcm9wZXJ0aWVzIGluIHRoZSBvbGQgc2NoZW1hXG4gKiB0aGF0IGFyZSBub24tZXhpc3RlbnQgaW4gdGhlIG5ldyBzY2hlbWEgYXJlIHNldCB0byBgdW5kZWZpbmVkYC4gVGhlIGRhdGEgc2FuaXRpemF0aW9uIHByb2Nlc3MgaGFzIHRoZSBmb2xsb3dpbmcgZmxvdzpcbiAqXG4gKiAtIElmIHRoZSBuZXcgc2NoZW1hIGlzIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgYHByb3BlcnRpZXNgIG9iamVjdCB0aGVuOlxuICogICAtIENyZWF0ZSBhIGByZW1vdmVPbGRTY2hlbWFEYXRhYCBvYmplY3QsIHNldHRpbmcgZWFjaCBrZXkgaW4gdGhlIGBvbGRTY2hlbWEucHJvcGVydGllc2AgaGF2aW5nIGBkYXRhYCB0byB1bmRlZmluZWRcbiAqICAgLSBDcmVhdGUgYW4gZW1wdHkgYG5lc3RlZERhdGFgIG9iamVjdCBmb3IgdXNlIGluIHRoZSBrZXkgZmlsdGVyaW5nIGJlbG93OlxuICogICAtIEl0ZXJhdGUgb3ZlciBlYWNoIGtleSBpbiB0aGUgYG5ld1NjaGVtYS5wcm9wZXJ0aWVzYCBhcyBmb2xsb3dzOlxuICogICAgIC0gR2V0IHRoZSBgZm9ybVZhbHVlYCBvZiB0aGUga2V5IGZyb20gdGhlIGBkYXRhYFxuICogICAgIC0gR2V0IHRoZSBgb2xkS2V5U2NoZW1hYCBhbmQgYG5ld0tleWVkU2NoZW1hYCBmb3IgdGhlIGtleSwgZGVmYXVsdGluZyB0byBge31gIHdoZW4gaXQgZG9lc24ndCBleGlzdFxuICogICAgIC0gUmV0cmlldmUgdGhlIHNjaGVtYSBmb3IgYW55IHJlZnMgd2l0aGluIGVhY2ggYG9sZEtleVNjaGVtYWAgYW5kL29yIGBuZXdLZXlTY2hlbWFgXG4gKiAgICAgLSBHZXQgdGhlIHR5cGVzIG9mIHRoZSBvbGQgYW5kIG5ldyBrZXllZCBzY2hlbWFzIGFuZCBpZiB0aGUgb2xkIGRvZXNuJ3QgZXhpc3Qgb3IgdGhlIG9sZCAmIG5ldyBhcmUgdGhlIHNhbWUgdGhlbjpcbiAqICAgICAgIC0gSWYgYHJlbW92ZU9sZFNjaGVtYURhdGFgIGhhcyBhbiBlbnRyeSBmb3IgdGhlIGtleSwgZGVsZXRlIGl0IHNpbmNlIHRoZSBuZXcgc2NoZW1hIGhhcyB0aGUgc2FtZSBwcm9wZXJ0eVxuICogICAgICAgLSBJZiB0eXBlIG9mIHRoZSBrZXkgaW4gdGhlIG5ldyBzY2hlbWEgaXMgYG9iamVjdGA6XG4gKiAgICAgICAgIC0gU3RvcmUgdGhlIHZhbHVlIGZyb20gdGhlIHJlY3Vyc2l2ZSBgc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hYCBjYWxsIGluIGBuZXN0ZWREYXRhW2tleV1gXG4gKiAgICAgICAtIE90aGVyd2lzZSwgY2hlY2sgZm9yIGRlZmF1bHQgb3IgY29uc3QgdmFsdWVzOlxuICogICAgICAgICAtIEdldCB0aGUgb2xkIGFuZCBuZXcgYGRlZmF1bHRgIHZhbHVlcyBmcm9tIHRoZSBzY2hlbWEgYW5kIGNoZWNrOlxuICogICAgICAgICAgIC0gSWYgdGhlIG5ldyBgZGVmYXVsdGAgdmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm0gdmFsdWU6XG4gKiAgICAgICAgICAgICAtIElmIHRoZSBvbGQgYGRlZmF1bHRgIHZhbHVlIERPRVMgbWF0Y2ggdGhlIGZvcm0gdmFsdWUsIHRoZW46XG4gKiAgICAgICAgICAgICAgIC0gUmVwbGFjZSBgcmVtb3ZlT2xkU2NoZW1hRGF0YVtrZXldYCB3aXRoIHRoZSBuZXcgYGRlZmF1bHRgXG4gKiAgICAgICAgICAgICAgIC0gT3RoZXJ3aXNlLCBpZiB0aGUgbmV3IHNjaGVtYSBpcyBgcmVhZE9ubHlgIHRoZW4gcmVwbGFjZSBgcmVtb3ZlT2xkU2NoZW1hRGF0YVtrZXldYCB3aXRoIHVuZGVmaW5lZFxuICogICAgICAgICAtIEdldCB0aGUgb2xkIGFuZCBuZXcgYGNvbnN0YCB2YWx1ZXMgZnJvbSB0aGUgc2NoZW1hIGFuZCBjaGVjazpcbiAqICAgICAgICAgICAtIElmIHRoZSBuZXcgYGNvbnN0YCB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgZm9ybSB2YWx1ZTpcbiAqICAgICAgICAgICAtIElmIHRoZSBvbGQgYGNvbnN0YCB2YWx1ZSBET0VTIG1hdGNoIHRoZSBmb3JtIHZhbHVlLCB0aGVuOlxuICogICAgICAgICAgICAgLSBSZXBsYWNlIGByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV1gIHdpdGggdGhlIG5ldyBgY29uc3RgXG4gKiAgICAgICAgICAgICAtIE90aGVyd2lzZSwgcmVwbGFjZSBgcmVtb3ZlT2xkU2NoZW1hRGF0YVtrZXldYCB3aXRoIHVuZGVmaW5lZFxuICogICAtIE9uY2UgYWxsIGtleXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCwgcmV0dXJuIGFuIG9iamVjdCBidWlsdCBhcyBmb2xsb3dzOlxuICogICAgIC0gYHsgLi4ucmVtb3ZlT2xkU2NoZW1hRGF0YSwgLi4ubmVzdGVkRGF0YSwgLi4ucGljayhkYXRhLCBrZXlzVG9LZWVwKSB9YFxuICogLSBJZiB0aGUgbmV3IGFuZCBvbGQgc2NoZW1hIHR5cGVzIGFyZSBhcnJheSBhbmQgdGhlIGBkYXRhYCBpcyBhbiBhcnJheSB0aGVuOlxuICogICAtIElmIHRoZSB0eXBlIG9mIHRoZSBvbGQgYW5kIG5ldyBzY2hlbWEgYGl0ZW1zYCBhcmUgYSBub24tYXJyYXkgb2JqZWN0czpcbiAqICAgICAtIFJldHJpZXZlIHRoZSBzY2hlbWEgZm9yIGFueSByZWZzIHdpdGhpbiBlYWNoIGBvbGRLZXlTY2hlbWEuaXRlbXNgIGFuZC9vciBgbmV3S2V5U2NoZW1hLml0ZW1zYFxuICogICAgIC0gSWYgdGhlIGB0eXBlYHMgb2YgYm90aCBpdGVtcyBhcmUgdGhlIHNhbWUgKG9yIHRoZSBvbGQgZG9lcyBub3QgaGF2ZSBhIHR5cGUpOlxuICogICAgICAgLSBJZiB0aGUgdHlwZSBpcyBcIm9iamVjdFwiLCB0aGVuOlxuICogICAgICAgICAtIEZvciBlYWNoIGVsZW1lbnQgaW4gdGhlIGBkYXRhYCByZWN1cnNpdmVseSBzYW5pdGl6ZSB0aGUgZGF0YSwgc3RvcHBpbmcgYXQgYG1heEl0ZW1zYCBpZiBzcGVjaWZpZWRcbiAqICAgICAgIC0gT3RoZXJ3aXNlLCBqdXN0IHJldHVybiB0aGUgYGRhdGFgIHJlbW92aW5nIGFueSB2YWx1ZXMgYWZ0ZXIgYG1heEl0ZW1zYCBpZiBpdCBpcyBzZXRcbiAqICAgLSBJZiB0aGUgdHlwZSBvZiB0aGUgb2xkIGFuZCBuZXcgc2NoZW1hIGBpdGVtc2AgYXJlIGJvb2xlYW5zIG9mIHRoZSBzYW1lIHZhbHVlLCByZXR1cm4gYGRhdGFgIGFzIGlzXG4gKiAtIE90aGVyd2lzZSByZXR1cm4gYHVuZGVmaW5lZGBcbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3QgSlNPTiBzY2hlbWEgb2YgdGhlIGVudGlyZSBmb3JtXG4gKiBAcGFyYW0gW25ld1NjaGVtYV0gLSBUaGUgbmV3IHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRhdGEgaXMgYmVpbmcgc2FuaXRpemVkXG4gKiBAcGFyYW0gW29sZFNjaGVtYV0gLSBUaGUgb2xkIHNjaGVtYSBmcm9tIHdoaWNoIHRoZSBkYXRhIG9yaWdpbmF0ZWRcbiAqIEBwYXJhbSBbZGF0YT17fV0gLSBUaGUgZm9ybSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hLCBkZWZhdWx0aW5nIHRvIGFuIGVtcHR5IG9iamVjdCB3aGVuIHVuZGVmaW5lZFxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBuZXcgZm9ybSBkYXRhLCB3aXRoIGFsbCB0aGUgZmllbGRzIHVuaXF1ZWx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgb2xkIHNjaGVtYSBzZXRcbiAqICAgICAgdG8gYHVuZGVmaW5lZGAuIFdpbGwgcmV0dXJuIGB1bmRlZmluZWRgIGlmIHRoZSBuZXcgc2NoZW1hIGlzIG5vdCBhbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWEodmFsaWRhdG9yLCByb290U2NoZW1hLCBuZXdTY2hlbWEsIG9sZFNjaGVtYSwgZGF0YSA9IHt9LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIC8vIEJ5IGRlZmF1bHQsIHdlIHdpbGwgY2xlYXIgdGhlIGZvcm0gZGF0YVxuICAgIGxldCBuZXdGb3JtRGF0YTtcbiAgICAvLyBJZiB0aGUgbmV3IHNjaGVtYSBpcyBvZiB0eXBlIG9iamVjdCBhbmQgdGhhdCBvYmplY3QgY29udGFpbnMgYSBsaXN0IG9mIHByb3BlcnRpZXNcbiAgICBpZiAoaGFzKG5ld1NjaGVtYSwgUFJPUEVSVElFU19LRVkpKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhbiBvYmplY3QgY29udGFpbmluZyByb290LWxldmVsIGtleXMgaW4gdGhlIG9sZCBzY2hlbWEsIHNldHRpbmcgZWFjaCBrZXkgdG8gdW5kZWZpbmVkIHRvIHJlbW92ZSB0aGUgZGF0YVxuICAgICAgICBjb25zdCByZW1vdmVPbGRTY2hlbWFEYXRhID0ge307XG4gICAgICAgIGlmIChoYXMob2xkU2NoZW1hLCBQUk9QRVJUSUVTX0tFWSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBnZXQob2xkU2NoZW1hLCBQUk9QRVJUSUVTX0tFWSwge30pO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcGVydGllcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGhhcyhkYXRhLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZU9sZFNjaGVtYURhdGFba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZ2V0KG5ld1NjaGVtYSwgUFJPUEVSVElFU19LRVksIHt9KSk7XG4gICAgICAgIC8vIENyZWF0ZSBhIHBsYWNlIHRvIHN0b3JlIG5lc3RlZCBkYXRhIHRoYXQgd2lsbCBiZSBhIHNpZGUtZWZmZWN0IG9mIHRoZSBmaWx0ZXJcbiAgICAgICAgY29uc3QgbmVzdGVkRGF0YSA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gZ2V0KGRhdGEsIGtleSk7XG4gICAgICAgICAgICBsZXQgb2xkS2V5ZWRTY2hlbWEgPSBnZXQob2xkU2NoZW1hLCBbUFJPUEVSVElFU19LRVksIGtleV0sIHt9KTtcbiAgICAgICAgICAgIGxldCBuZXdLZXllZFNjaGVtYSA9IGdldChuZXdTY2hlbWEsIFtQUk9QRVJUSUVTX0tFWSwga2V5XSwge30pO1xuICAgICAgICAgICAgLy8gUmVzb2x2ZSB0aGUgcmVmcyBpZiB0aGV5IGV4aXN0XG4gICAgICAgICAgICBpZiAoaGFzKG9sZEtleWVkU2NoZW1hLCBSRUZfS0VZKSkge1xuICAgICAgICAgICAgICAgIG9sZEtleWVkU2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBvbGRLZXllZFNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGFzKG5ld0tleWVkU2NoZW1hLCBSRUZfS0VZKSkge1xuICAgICAgICAgICAgICAgIG5ld0tleWVkU2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBuZXdLZXllZFNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBOb3cgZ2V0IHR5cGVzIGFuZCBzZWUgaWYgdGhleSBhcmUgdGhlIHNhbWVcbiAgICAgICAgICAgIGNvbnN0IG9sZFNjaGVtYVR5cGVGb3JLZXkgPSBnZXQob2xkS2V5ZWRTY2hlbWEsICd0eXBlJyk7XG4gICAgICAgICAgICBjb25zdCBuZXdTY2hlbWFUeXBlRm9yS2V5ID0gZ2V0KG5ld0tleWVkU2NoZW1hLCAndHlwZScpO1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG9sZCBvcHRpb24gaGFzIHRoZSBzYW1lIGtleSB3aXRoIHRoZSBzYW1lIHR5cGVcbiAgICAgICAgICAgIGlmICghb2xkU2NoZW1hVHlwZUZvcktleSB8fCBvbGRTY2hlbWFUeXBlRm9yS2V5ID09PSBuZXdTY2hlbWFUeXBlRm9yS2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhcyhyZW1vdmVPbGRTY2hlbWFEYXRhLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNJREUtRUZGRUNUOiByZW1vdmUgdGhlIHVuZGVmaW5lZCB2YWx1ZSBmb3IgYSBrZXkgdGhhdCBoYXMgdGhlIHNhbWUgdHlwZSBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ldyBzY2hlbWFzXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIGFuIG9iamVjdCwgd2UnbGwgcmVjdXJzZSBhbmQgc3RvcmUgdGhlIHJlc3VsdGluZyBzYW5pdGl6ZWQgZGF0YSBmb3IgdGhlIGtleVxuICAgICAgICAgICAgICAgIGlmIChuZXdTY2hlbWFUeXBlRm9yS2V5ID09PSAnb2JqZWN0JyB8fCAobmV3U2NoZW1hVHlwZUZvcktleSA9PT0gJ2FycmF5JyAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNJREUtRUZGRUNUOiBwcm9jZXNzIHRoZSBuZXcgc2NoZW1hIHR5cGUgb2Ygb2JqZWN0IHJlY3Vyc2l2ZWx5IHRvIHNhdmUgaXRlcmF0aW9uc1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtRGF0YSA9IHNhbml0aXplRGF0YUZvck5ld1NjaGVtYSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIG5ld0tleWVkU2NoZW1hLCBvbGRLZXllZFNjaGVtYSwgZm9ybVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtRGF0YSAhPT0gdW5kZWZpbmVkIHx8IG5ld1NjaGVtYVR5cGVGb3JLZXkgPT09ICdhcnJheScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgcHV0IHVuZGVmaW5lZCB2YWx1ZXMgZm9yIHRoZSBhcnJheSB0eXBlIGFuZCBub3QgdGhlIG9iamVjdCB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWREYXRhW2tleV0gPSBpdGVtRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gT2ssIHRoZSBub24tb2JqZWN0IHR5cGVzIG1hdGNoLCBsZXQncyBtYWtlIHN1cmUgdGhhdCBhIGRlZmF1bHQgb3IgYSBjb25zdCBvZiBhIGRpZmZlcmVudCB2YWx1ZSBpcyByZXBsYWNlZFxuICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIHRoZSBuZXcgZGVmYXVsdCBvciBjb25zdC4gVGhpcyBhbGxvd3MgdGhlIGNhc2Ugd2hlcmUgdHdvIHNjaGVtYXMgZGlmZmVyIHRoYXQgb25seSBieSB0aGUgZGVmYXVsdC9jb25zdFxuICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSB0byBiZSBwcm9wZXJseSBzZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdPcHRpb25EZWZhdWx0ID0gZ2V0KG5ld0tleWVkU2NoZW1hLCAnZGVmYXVsdCcsIE5PX1ZBTFVFKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkT3B0aW9uRGVmYXVsdCA9IGdldChvbGRLZXllZFNjaGVtYSwgJ2RlZmF1bHQnLCBOT19WQUxVRSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdPcHRpb25EZWZhdWx0ICE9PSBOT19WQUxVRSAmJiBuZXdPcHRpb25EZWZhdWx0ICE9PSBmb3JtVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvbGRPcHRpb25EZWZhdWx0ID09PSBmb3JtVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb2xkIGRlZmF1bHQgbWF0Y2hlcyB0aGUgZm9ybVZhbHVlLCB3ZSdsbCB1cGRhdGUgdGhlIG5ldyB2YWx1ZSB0byBtYXRjaCB0aGUgbmV3IGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV0gPSBuZXdPcHRpb25EZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZ2V0KG5ld0tleWVkU2NoZW1hLCAncmVhZE9ubHknKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBuZXcgc2NoZW1hIGhhcyB0aGUgZGVmYXVsdCBzZXQgdG8gcmVhZC1vbmx5LCB0cmVhdCBpdCBsaWtlIGEgY29uc3QgYW5kIHJlbW92ZSB0aGUgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3T3B0aW9uQ29uc3QgPSBnZXQobmV3S2V5ZWRTY2hlbWEsICdjb25zdCcsIE5PX1ZBTFVFKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkT3B0aW9uQ29uc3QgPSBnZXQob2xkS2V5ZWRTY2hlbWEsICdjb25zdCcsIE5PX1ZBTFVFKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld09wdGlvbkNvbnN0ICE9PSBOT19WQUxVRSAmJiBuZXdPcHRpb25Db25zdCAhPT0gZm9ybVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgY29uc3QsIGlmIHRoZSBvbGQgdmFsdWUgbWF0Y2hlcywgcmVwbGFjZSB0aGUgdmFsdWUgd2l0aCB0aGUgbmV3IGNvbnN0IG90aGVyd2lzZSBjbGVhciBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlT2xkU2NoZW1hRGF0YVtrZXldID0gb2xkT3B0aW9uQ29uc3QgPT09IGZvcm1WYWx1ZSA/IG5ld09wdGlvbkNvbnN0IDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbmV3Rm9ybURhdGEgPSB7XG4gICAgICAgICAgICAuLi4odHlwZW9mIGRhdGEgPT0gJ3N0cmluZycgfHwgQXJyYXkuaXNBcnJheShkYXRhKSA/IHVuZGVmaW5lZCA6IGRhdGEpLFxuICAgICAgICAgICAgLi4ucmVtb3ZlT2xkU2NoZW1hRGF0YSxcbiAgICAgICAgICAgIC4uLm5lc3RlZERhdGEsXG4gICAgICAgIH07XG4gICAgICAgIC8vIEZpcnN0IGFwcGx5IHJlbW92aW5nIHRoZSBvbGQgc2NoZW1hIGRhdGEsIHRoZW4gYXBwbHkgdGhlIG5lc3RlZCBkYXRhLCB0aGVuIGFwcGx5IHRoZSBvbGQgZGF0YSBrZXlzIHRvIGtlZXBcbiAgICB9XG4gICAgZWxzZSBpZiAoZ2V0KG9sZFNjaGVtYSwgJ3R5cGUnKSA9PT0gJ2FycmF5JyAmJiBnZXQobmV3U2NoZW1hLCAndHlwZScpID09PSAnYXJyYXknICYmIEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgbGV0IG9sZFNjaGVtYUl0ZW1zID0gZ2V0KG9sZFNjaGVtYSwgJ2l0ZW1zJyk7XG4gICAgICAgIGxldCBuZXdTY2hlbWFJdGVtcyA9IGdldChuZXdTY2hlbWEsICdpdGVtcycpO1xuICAgICAgICAvLyBJZiBhbnkgb2YgdGhlIGFycmF5IHR5cGVzIGBpdGVtc2AgYXJlIGFycmF5cyAocmVtZW1iZXIgYXJyYXlzIGFyZSBvYmplY3RzKSB0aGVuIHdlJ2xsIGp1c3QgZHJvcCB0aGUgZGF0YVxuICAgICAgICAvLyBFdmVudHVhbGx5LCB3ZSBtYXkgd2FudCB0byBkZWFsIHdpdGggd2hlbiBlaXRoZXIgb2YgdGhlIGBpdGVtc2AgYXJlIGFycmF5cyBzaW5jZSB0aG9zZSB0dXBsZSB2YWxpZGF0aW9uc1xuICAgICAgICBpZiAodHlwZW9mIG9sZFNjaGVtYUl0ZW1zID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgdHlwZW9mIG5ld1NjaGVtYUl0ZW1zID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkob2xkU2NoZW1hSXRlbXMpICYmXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShuZXdTY2hlbWFJdGVtcykpIHtcbiAgICAgICAgICAgIGlmIChoYXMob2xkU2NoZW1hSXRlbXMsIFJFRl9LRVkpKSB7XG4gICAgICAgICAgICAgICAgb2xkU2NoZW1hSXRlbXMgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIG9sZFNjaGVtYUl0ZW1zLCByb290U2NoZW1hLCBkYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGFzKG5ld1NjaGVtYUl0ZW1zLCBSRUZfS0VZKSkge1xuICAgICAgICAgICAgICAgIG5ld1NjaGVtYUl0ZW1zID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBuZXdTY2hlbWFJdGVtcywgcm9vdFNjaGVtYSwgZGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTm93IGdldCB0eXBlcyBhbmQgc2VlIGlmIHRoZXkgYXJlIHRoZSBzYW1lXG4gICAgICAgICAgICBjb25zdCBvbGRTY2hlbWFUeXBlID0gZ2V0KG9sZFNjaGVtYUl0ZW1zLCAndHlwZScpO1xuICAgICAgICAgICAgY29uc3QgbmV3U2NoZW1hVHlwZSA9IGdldChuZXdTY2hlbWFJdGVtcywgJ3R5cGUnKTtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBvbGQgb3B0aW9uIGhhcyB0aGUgc2FtZSBrZXkgd2l0aCB0aGUgc2FtZSB0eXBlXG4gICAgICAgICAgICBpZiAoIW9sZFNjaGVtYVR5cGUgfHwgb2xkU2NoZW1hVHlwZSA9PT0gbmV3U2NoZW1hVHlwZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heEl0ZW1zID0gZ2V0KG5ld1NjaGVtYSwgJ21heEl0ZW1zJywgLTEpO1xuICAgICAgICAgICAgICAgIGlmIChuZXdTY2hlbWFUeXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YSA9IGRhdGEucmVkdWNlKChuZXdWYWx1ZSwgYVZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtVmFsdWUgPSBzYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWEodmFsaWRhdG9yLCByb290U2NoZW1hLCBuZXdTY2hlbWFJdGVtcywgb2xkU2NoZW1hSXRlbXMsIGFWYWx1ZSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1WYWx1ZSAhPT0gdW5kZWZpbmVkICYmIChtYXhJdGVtcyA8IDAgfHwgbmV3VmFsdWUubGVuZ3RoIDwgbWF4SXRlbXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUucHVzaChpdGVtVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YSA9IG1heEl0ZW1zID4gMCAmJiBkYXRhLmxlbmd0aCA+IG1heEl0ZW1zID8gZGF0YS5zbGljZSgwLCBtYXhJdGVtcykgOiBkYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygb2xkU2NoZW1hSXRlbXMgPT09ICdib29sZWFuJyAmJlxuICAgICAgICAgICAgdHlwZW9mIG5ld1NjaGVtYUl0ZW1zID09PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICAgIG9sZFNjaGVtYUl0ZW1zID09PSBuZXdTY2hlbWFJdGVtcykge1xuICAgICAgICAgICAgLy8gSWYgdGhleSBhcmUgYm90aCBib29sZWFucyBhbmQgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBqdXN0IHJldHVybiB0aGUgZGF0YSBhcyBpcyBvdGhlcndpc2UgZmFsbC10aHJ1IHRvIHVuZGVmaW5lZFxuICAgICAgICAgICAgbmV3Rm9ybURhdGEgPSBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFsc28gcHJvYmFibHkgd2FudCB0byBkZWFsIHdpdGggYHByZWZpeEl0ZW1zYCBhcyB0dXBsZXMgd2l0aCB0aGUgbGF0ZXN0IDIwMjAgZHJhZnRcbiAgICB9XG4gICAgcmV0dXJuIG5ld0Zvcm1EYXRhO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hLmpzLm1hcCIsImltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgeyBBTExfT0ZfS0VZLCBERVBFTkRFTkNJRVNfS0VZLCBJRF9LRVksIElURU1TX0tFWSwgUFJPUEVSVElFU19LRVksIFJFRl9LRVkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4uL2lzT2JqZWN0JztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbmltcG9ydCBnZXRTY2hlbWFUeXBlIGZyb20gJy4uL2dldFNjaGVtYVR5cGUnO1xuLyoqIEFuIGludGVybmFsIGhlbHBlciB0aGF0IGdlbmVyYXRlcyBhbiBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgLCByZWN1cnNpdmVseSB3aXRoIHByb3RlY3Rpb24gYWdhaW5zdFxuICogaW5maW5pdGUgcmVjdXJzaW9uXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGBJZFNjaGVtYWAgaXMgZGVzaXJlZFxuICogQHBhcmFtIGlkUHJlZml4IC0gVGhlIHByZWZpeCB0byB1c2UgZm9yIHRoZSBpZFxuICogQHBhcmFtIGlkU2VwYXJhdG9yIC0gVGhlIHNlcGFyYXRvciB0byB1c2UgZm9yIHRoZSBwYXRoIHNlZ21lbnRzIGluIHRoZSBpZFxuICogQHBhcmFtIFtpZF0gLSBUaGUgYmFzZSBpZCBmb3IgdGhlIHNjaGVtYVxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW19yZWN1cnNlTGlzdD1bXV0gLSBUaGUgbGlzdCBvZiByZXRyaWV2ZWQgc2NoZW1hcyBjdXJyZW50bHkgYmVpbmcgcmVjdXJzZWQsIHVzZWQgdG8gcHJldmVudCBpbmZpbml0ZSByZWN1cnNpb25cbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgYElkU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICovXG5mdW5jdGlvbiB0b0lkU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgaWQsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBfcmVjdXJzZUxpc3QgPSBbXSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBpZiAoUkVGX0tFWSBpbiBzY2hlbWEgfHwgREVQRU5ERU5DSUVTX0tFWSBpbiBzY2hlbWEgfHwgQUxMX09GX0tFWSBpbiBzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgX3NjaGVtYSA9IHJldHJpZXZlU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICBjb25zdCBzYW1lU2NoZW1hSW5kZXggPSBfcmVjdXJzZUxpc3QuZmluZEluZGV4KChpdGVtKSA9PiBpc0VxdWFsKGl0ZW0sIF9zY2hlbWEpKTtcbiAgICAgICAgaWYgKHNhbWVTY2hlbWFJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiB0b0lkU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBfc2NoZW1hLCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIGlkLCByb290U2NoZW1hLCBmb3JtRGF0YSwgX3JlY3Vyc2VMaXN0LmNvbmNhdChfc2NoZW1hKSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChJVEVNU19LRVkgaW4gc2NoZW1hICYmICFnZXQoc2NoZW1hLCBbSVRFTVNfS0VZLCBSRUZfS0VZXSkpIHtcbiAgICAgICAgcmV0dXJuIHRvSWRTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIGdldChzY2hlbWEsIElURU1TX0tFWSksIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgaWQsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBfcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgY29uc3QgJGlkID0gaWQgfHwgaWRQcmVmaXg7XG4gICAgY29uc3QgaWRTY2hlbWEgPSB7ICRpZCB9O1xuICAgIGlmIChnZXRTY2hlbWFUeXBlKHNjaGVtYSkgPT09ICdvYmplY3QnICYmIFBST1BFUlRJRVNfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0KHNjaGVtYSwgW1BST1BFUlRJRVNfS0VZLCBuYW1lXSk7XG4gICAgICAgICAgICBjb25zdCBmaWVsZElkID0gaWRTY2hlbWFbSURfS0VZXSArIGlkU2VwYXJhdG9yICsgbmFtZTtcbiAgICAgICAgICAgIGlkU2NoZW1hW25hbWVdID0gdG9JZFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgaXNPYmplY3QoZmllbGQpID8gZmllbGQgOiB7fSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBmaWVsZElkLCByb290U2NoZW1hLCBcbiAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBmb3JtRGF0YSBpcyBub3QgYW4gb2JqZWN0IC0tIHRoaXMgY2FuIGhhcHBlbiBpZiBhblxuICAgICAgICAgICAgLy8gYXJyYXkgaXRlbSBoYXMganVzdCBiZWVuIGFkZGVkLCBidXQgbm90IHBvcHVsYXRlZCB3aXRoIGRhdGEgeWV0XG4gICAgICAgICAgICBnZXQoZm9ybURhdGEsIFtuYW1lXSksIF9yZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZFNjaGVtYTtcbn1cbi8qKiBHZW5lcmF0ZXMgYW4gYElkU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYCwgcmVjdXJzaXZlbHlcbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgYElkU2NoZW1hYCBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW2lkXSAtIFRoZSBiYXNlIGlkIGZvciB0aGUgc2NoZW1hXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbaWRQcmVmaXg9J3Jvb3QnXSAtIFRoZSBwcmVmaXggdG8gdXNlIGZvciB0aGUgaWRcbiAqIEBwYXJhbSBbaWRTZXBhcmF0b3I9J18nXSAtIFRoZSBzZXBhcmF0b3IgdG8gdXNlIGZvciB0aGUgcGF0aCBzZWdtZW50cyBpbiB0aGUgaWRcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgYElkU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0lkU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCBpZCwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGlkUHJlZml4ID0gJ3Jvb3QnLCBpZFNlcGFyYXRvciA9ICdfJywgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICByZXR1cm4gdG9JZFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hLCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIGlkLCByb290U2NoZW1hLCBmb3JtRGF0YSwgdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b0lkU2NoZW1hLmpzLm1hcCIsImltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC9zZXQnO1xuaW1wb3J0IHsgQUxMX09GX0tFWSwgQU5ZX09GX0tFWSwgQURESVRJT05BTF9QUk9QRVJUSUVTX0tFWSwgREVQRU5ERU5DSUVTX0tFWSwgSVRFTVNfS0VZLCBOQU1FX0tFWSwgT05FX09GX0tFWSwgUFJPUEVSVElFU19LRVksIFJFRl9LRVksIFJKU0ZfQURESVRJT05BTF9QUk9QRVJUSUVTX0ZMQUcsIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hIGZyb20gJy4uL2dldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEnO1xuaW1wb3J0IGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbiBmcm9tICcuL2dldENsb3Nlc3RNYXRjaGluZ09wdGlvbic7XG5pbXBvcnQgcmV0cmlldmVTY2hlbWEgZnJvbSAnLi9yZXRyaWV2ZVNjaGVtYSc7XG4vKiogQW4gaW50ZXJuYWwgaGVscGVyIHRoYXQgZ2VuZXJhdGVzIGFuIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYCwgcmVjdXJzaXZlbHkgd2l0aCBwcm90ZWN0aW9uIGFnYWluc3RcbiAqIGluZmluaXRlIHJlY3Vyc2lvblxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBgUGF0aFNjaGVtYWAgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtuYW1lPScnXSAtIFRoZSBiYXNlIG5hbWUgZm9yIHRoZSBzY2hlbWFcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtfcmVjdXJzZUxpc3Q9W11dIC0gVGhlIGxpc3Qgb2YgcmV0cmlldmVkIHNjaGVtYXMgY3VycmVudGx5IGJlaW5nIHJlY3Vyc2VkLCB1c2VkIHRvIHByZXZlbnQgaW5maW5pdGUgcmVjdXJzaW9uXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICovXG5mdW5jdGlvbiB0b1BhdGhTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYSwgbmFtZSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIF9yZWN1cnNlTGlzdCA9IFtdLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGlmIChSRUZfS0VZIGluIHNjaGVtYSB8fCBERVBFTkRFTkNJRVNfS0VZIGluIHNjaGVtYSB8fCBBTExfT0ZfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCBfc2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIGNvbnN0IHNhbWVTY2hlbWFJbmRleCA9IF9yZWN1cnNlTGlzdC5maW5kSW5kZXgoKGl0ZW0pID0+IGlzRXF1YWwoaXRlbSwgX3NjaGVtYSkpO1xuICAgICAgICBpZiAoc2FtZVNjaGVtYUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvUGF0aFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgX3NjaGVtYSwgbmFtZSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIF9yZWN1cnNlTGlzdC5jb25jYXQoX3NjaGVtYSksIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgcGF0aFNjaGVtYSA9IHtcbiAgICAgICAgW05BTUVfS0VZXTogbmFtZS5yZXBsYWNlKC9eXFwuLywgJycpLFxuICAgIH07XG4gICAgaWYgKE9ORV9PRl9LRVkgaW4gc2NoZW1hIHx8IEFOWV9PRl9LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHh4eE9mID0gT05FX09GX0tFWSBpbiBzY2hlbWEgPyBzY2hlbWEub25lT2YgOiBzY2hlbWEuYW55T2Y7XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hKHNjaGVtYSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIHh4eE9mLCAwLCBkaXNjcmltaW5hdG9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIGNvbnN0IF9zY2hlbWEgPSB4eHhPZltpbmRleF07XG4gICAgICAgIHBhdGhTY2hlbWEgPSB7XG4gICAgICAgICAgICAuLi5wYXRoU2NoZW1hLFxuICAgICAgICAgICAgLi4udG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBfc2NoZW1hLCBuYW1lLCByb290U2NoZW1hLCBmb3JtRGF0YSwgX3JlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChBRERJVElPTkFMX1BST1BFUlRJRVNfS0VZIGluIHNjaGVtYSAmJiBzY2hlbWFbQURESVRJT05BTF9QUk9QRVJUSUVTX0tFWV0gIT09IGZhbHNlKSB7XG4gICAgICAgIHNldChwYXRoU2NoZW1hLCBSSlNGX0FERElUSU9OQUxfUFJPUEVSVElFU19GTEFHLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKElURU1TX0tFWSBpbiBzY2hlbWEgJiYgQXJyYXkuaXNBcnJheShmb3JtRGF0YSkpIHtcbiAgICAgICAgY29uc3QgeyBpdGVtczogc2NoZW1hSXRlbXMsIGFkZGl0aW9uYWxJdGVtczogc2NoZW1hQWRkaXRpb25hbEl0ZW1zIH0gPSBzY2hlbWE7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYUl0ZW1zKSkge1xuICAgICAgICAgICAgZm9ybURhdGEuZm9yRWFjaCgoZWxlbWVudCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWFJdGVtc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICBwYXRoU2NoZW1hW2ldID0gdG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWFJdGVtc1tpXSwgYCR7bmFtZX0uJHtpfWAsIHJvb3RTY2hlbWEsIGVsZW1lbnQsIF9yZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY2hlbWFBZGRpdGlvbmFsSXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aFNjaGVtYVtpXSA9IHRvUGF0aFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hQWRkaXRpb25hbEl0ZW1zLCBgJHtuYW1lfS4ke2l9YCwgcm9vdFNjaGVtYSwgZWxlbWVudCwgX3JlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFVuYWJsZSB0byBnZW5lcmF0ZSBwYXRoIHNjaGVtYSBmb3IgXCIke25hbWV9LiR7aX1cIi4gTm8gc2NoZW1hIGRlZmluZWQgZm9yIGl0YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5mb3JFYWNoKChlbGVtZW50LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgcGF0aFNjaGVtYVtpXSA9IHRvUGF0aFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hSXRlbXMsIGAke25hbWV9LiR7aX1gLCByb290U2NoZW1hLCBlbGVtZW50LCBfcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKFBST1BFUlRJRVNfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IGdldChzY2hlbWEsIFtQUk9QRVJUSUVTX0tFWSwgcHJvcGVydHldKTtcbiAgICAgICAgICAgIHBhdGhTY2hlbWFbcHJvcGVydHldID0gdG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBmaWVsZCwgYCR7bmFtZX0uJHtwcm9wZXJ0eX1gLCByb290U2NoZW1hLCBcbiAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBmb3JtRGF0YSBpcyBub3QgYW4gb2JqZWN0IC0tIHRoaXMgY2FuIGhhcHBlbiBpZiBhblxuICAgICAgICAgICAgLy8gYXJyYXkgaXRlbSBoYXMganVzdCBiZWVuIGFkZGVkLCBidXQgbm90IHBvcHVsYXRlZCB3aXRoIGRhdGEgeWV0XG4gICAgICAgICAgICBnZXQoZm9ybURhdGEsIFtwcm9wZXJ0eV0pLCBfcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGF0aFNjaGVtYTtcbn1cbi8qKiBHZW5lcmF0ZXMgYW4gYFBhdGhTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgLCByZWN1cnNpdmVseVxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBgUGF0aFNjaGVtYWAgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtuYW1lPScnXSAtIFRoZSBiYXNlIG5hbWUgZm9yIHRoZSBzY2hlbWFcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBgUGF0aFNjaGVtYWAgb2JqZWN0IGZvciB0aGUgYHNjaGVtYWBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9QYXRoU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCBuYW1lID0gJycsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIHJldHVybiB0b1BhdGhTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYSwgbmFtZSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIHVuZGVmaW5lZCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG9QYXRoU2NoZW1hLmpzLm1hcCIsImltcG9ydCBkZWVwRXF1YWxzIGZyb20gJy4vZGVlcEVxdWFscyc7XG5pbXBvcnQgeyBnZXREZWZhdWx0Rm9ybVN0YXRlLCBnZXREaXNwbGF5TGFiZWwsIGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbiwgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbiwgZ2V0TWF0Y2hpbmdPcHRpb24sIGlzRmlsZXNBcnJheSwgaXNNdWx0aVNlbGVjdCwgaXNTZWxlY3QsIG1lcmdlVmFsaWRhdGlvbkRhdGEsIHJldHJpZXZlU2NoZW1hLCBzYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWEsIHRvSWRTY2hlbWEsIHRvUGF0aFNjaGVtYSwgfSBmcm9tICcuL3NjaGVtYSc7XG4vKiogVGhlIGBTY2hlbWFVdGlsc2AgY2xhc3MgcHJvdmlkZXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgcHVibGljbHkgZXhwb3J0ZWQgQVBJcyBpbiB0aGUgYHV0aWxzL3NjaGVtYWAgZGlyZWN0b3J5IHN1Y2hcbiAqIHRoYXQgb25lIGRvZXMgbm90IGhhdmUgdG8gZXhwbGljaXRseSBwYXNzIHRoZSBgdmFsaWRhdG9yYCwgYHJvb3RTY2hlbWFgLCBgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcmAgb3JcbiAqIGBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZmAgdG8gZWFjaCBtZXRob2QuIFNpbmNlIHRoZXNlIGdlbmVyYWxseSBkbyBub3QgY2hhbmdlIGFjcm9zcyBhIGBGb3JtYCwgdGhpcyBhbGxvd3MgZm9yXG4gKiBwcm92aWRpbmcgYSBzaW1wbGlmaWVkIHNldCBvZiBBUElzIHRvIHRoZSBgQHJqc2YvY29yZWAgY29tcG9uZW50cyBhbmQgdGhlIHZhcmlvdXMgdGhlbWVzIGFzIHdlbGwuIFRoaXMgY2xhc3NcbiAqIGltcGxlbWVudHMgdGhlIGBTY2hlbWFVdGlsc1R5cGVgIGludGVyZmFjZS5cbiAqL1xuY2xhc3MgU2NoZW1hVXRpbHMge1xuICAgIC8qKiBDb25zdHJ1Y3RzIHRoZSBgU2NoZW1hVXRpbHNgIGluc3RhbmNlIHdpdGggdGhlIGdpdmVuIGB2YWxpZGF0b3JgIGFuZCBgcm9vdFNjaGVtYWAgc3RvcmVkIGFzIGluc3RhbmNlIHZhcmlhYmxlc1xuICAgICAqXG4gICAgICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gICAgICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAgICAgKiBAcGFyYW0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciAtIENvbmZpZ3VyYXRpb24gZmxhZ3MgdG8gYWxsb3cgdXNlcnMgdG8gb3ZlcnJpZGUgZGVmYXVsdCBmb3JtIHN0YXRlIGJlaGF2aW9yXG4gICAgICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IodmFsaWRhdG9yLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgICAgICB0aGlzLnJvb3RTY2hlbWEgPSByb290U2NoZW1hO1xuICAgICAgICB0aGlzLnZhbGlkYXRvciA9IHZhbGlkYXRvcjtcbiAgICAgICAgdGhpcy5leHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcjtcbiAgICAgICAgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiA9IGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgYFZhbGlkYXRvclR5cGVgIGluIHRoZSBgU2NoZW1hVXRpbHNUeXBlYFxuICAgICAqXG4gICAgICogQHJldHVybnMgLSBUaGUgYFZhbGlkYXRvclR5cGVgXG4gICAgICovXG4gICAgZ2V0VmFsaWRhdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0b3I7XG4gICAgfVxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgZWl0aGVyIHRoZSBgdmFsaWRhdG9yYCBhbmQgYHJvb3RTY2hlbWFgIGRpZmZlciBmcm9tIHRoZSBvbmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGluc3RhbmNlIG9mXG4gICAgICogdGhlIGBTY2hlbWFVdGlsc1R5cGVgLiBJZiBlaXRoZXIgYHZhbGlkYXRvcmAgb3IgYHJvb3RTY2hlbWFgIGFyZSBmYWxzeSwgdGhlbiByZXR1cm4gZmFsc2UgdG8gcHJldmVudCB0aGUgY3JlYXRpb25cbiAgICAgKiBvZiBhIG5ldyBgU2NoZW1hVXRpbHNUeXBlYCB3aXRoIGluY29tcGxldGUgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgY29tcGFyZWQgYWdhaW5zdCB0aGUgY3VycmVudCBvbmVcbiAgICAgKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgY29tcGFyZWQgYWdhaW5zdCB0aGUgY3VycmVudCBvbmVcbiAgICAgKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3JdIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0LCBpZiBwcm92aWRlZCwgYWxsb3dzIHVzZXJzIHRvIG92ZXJyaWRlIGRlZmF1bHQgZm9ybSBzdGF0ZSBiZWhhdmlvclxuICAgICAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgYFNjaGVtYVV0aWxzVHlwZWAgZGlmZmVycyBmcm9tIHRoZSBnaXZlbiBgdmFsaWRhdG9yYCBvciBgcm9vdFNjaGVtYWBcbiAgICAgKi9cbiAgICBkb2VzU2NoZW1hVXRpbHNEaWZmZXIodmFsaWRhdG9yLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0ge30sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgICAgIGlmICghdmFsaWRhdG9yIHx8ICFyb290U2NoZW1hKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbGlkYXRvciAhPT0gdmFsaWRhdG9yIHx8XG4gICAgICAgICAgICAhZGVlcEVxdWFscyh0aGlzLnJvb3RTY2hlbWEsIHJvb3RTY2hlbWEpIHx8XG4gICAgICAgICAgICAhZGVlcEVxdWFscyh0aGlzLmV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IpIHx8XG4gICAgICAgICAgICB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mICE9PSBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIHRoZSBzdXBlcnNldCBvZiBgZm9ybURhdGFgIHRoYXQgaW5jbHVkZXMgdGhlIGdpdmVuIHNldCB1cGRhdGVkIHRvIGluY2x1ZGUgYW55IG1pc3NpbmcgZmllbGRzIHRoYXQgaGF2ZVxuICAgICAqIGNvbXB1dGVkIHRvIGhhdmUgZGVmYXVsdHMgcHJvdmlkZWQgaW4gdGhlIGBzY2hlbWFgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHN0YXRlIGlzIGRlc2lyZWRcbiAgICAgKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIG9udG8gd2hpY2ggdG8gcHJvdmlkZSBhbnkgbWlzc2luZyBkZWZhdWx0c1xuICAgICAqIEBwYXJhbSBbaW5jbHVkZVVuZGVmaW5lZFZhbHVlcz1mYWxzZV0gLSBPcHRpb25hbCBmbGFnLCBpZiB0cnVlLCBjYXVzZSB1bmRlZmluZWQgdmFsdWVzIHRvIGJlIGFkZGVkIGFzIGRlZmF1bHRzLlxuICAgICAqICAgICAgICAgIElmIFwiZXhjbHVkZU9iamVjdENoaWxkcmVuXCIsIHBhc3MgYGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgIGFzIGZhbHNlIHdoZW4gY29tcHV0aW5nIGRlZmF1bHRzIGZvciBhbnkgbmVzdGVkXG4gICAgICogICAgICAgICAgb2JqZWN0IHByb3BlcnRpZXMuXG4gICAgICogQHJldHVybnMgLSBUaGUgcmVzdWx0aW5nIGBmb3JtRGF0YWAgd2l0aCBhbGwgdGhlIGRlZmF1bHRzIHByb3ZpZGVkXG4gICAgICovXG4gICAgZ2V0RGVmYXVsdEZvcm1TdGF0ZShzY2hlbWEsIGZvcm1EYXRhLCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGdldERlZmF1bHRGb3JtU3RhdGUodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgZm9ybURhdGEsIHRoaXMucm9vdFNjaGVtYSwgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcywgdGhpcy5leHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgY29tYmluYXRpb24gb2YgYHNjaGVtYWAgYW5kIGB1aVNjaGVtYWAgcHJvcGVydGllcyBpbmRpY2F0ZXMgdGhhdCB0aGUgbGFiZWwgZm9yIHRoZSBgc2NoZW1hYFxuICAgICAqIHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gYSBVSS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGlzcGxheSBsYWJlbCBmbGFnIGlzIGRlc2lyZWRcbiAgICAgKiBAcGFyYW0gW3VpU2NoZW1hXSAtIFRoZSBVSSBzY2hlbWEgZnJvbSB3aGljaCB0byBkZXJpdmUgcG90ZW50aWFsbHkgZGlzcGxheWFibGUgaW5mb3JtYXRpb25cbiAgICAgKiBAcGFyYW0gW2dsb2JhbE9wdGlvbnM9e31dIC0gVGhlIG9wdGlvbmFsIEdsb2JhbCBVSSBTY2hlbWEgZnJvbSB3aGljaCB0byBnZXQgYW55IGZhbGxiYWNrIGB4eHhgIG9wdGlvbnNcbiAgICAgKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGxhYmVsIHNob3VsZCBiZSBkaXNwbGF5ZWQgb3IgZmFsc2UgaWYgaXQgc2hvdWxkIG5vdFxuICAgICAqL1xuICAgIGdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBnZXREaXNwbGF5TGFiZWwodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgdWlTY2hlbWEsIHRoaXMucm9vdFNjaGVtYSwgZ2xvYmFsT3B0aW9ucywgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBEZXRlcm1pbmVzIHdoaWNoIG9mIHRoZSBnaXZlbiBgb3B0aW9uc2AgcHJvdmlkZWQgbW9zdCBjbG9zZWx5IG1hdGNoZXMgdGhlIGBmb3JtRGF0YWAuXG4gICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG9wdGlvbiB0aGF0IGlzIHZhbGlkIGFuZCBpcyB0aGUgY2xvc2VzdCBtYXRjaCwgb3IgMCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbiAgICAgKlxuICAgICAqIFRoZSBjbG9zZXN0IG1hdGNoIGlzIGRldGVybWluZWQgdXNpbmcgdGhlIG51bWJlciBvZiBtYXRjaGluZyBwcm9wZXJ0aWVzLCBhbmQgbW9yZSBoZWF2aWx5IGZhdm9ycyBvcHRpb25zIHdpdGhcbiAgICAgKiBtYXRjaGluZyByZWFkT25seSwgZGVmYXVsdCwgb3IgY29uc3QgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGZvcm0gZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHNjaGVtYVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBzZWxlY3RlZCBmcm9tXG4gICAgICogQHBhcmFtIFtzZWxlY3RlZE9wdGlvbl0gLSBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb24sIGRlZmF1bHRlZCB0byAtMSBpZiBub3Qgc3BlY2lmaWVkXG4gICAgICogQHBhcmFtIFtkaXNjcmltaW5hdG9yRmllbGRdIC0gVGhlIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGZpZWxkIHdpdGhpbiB0aGUgb3B0aW9ucyBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdXNlZCB0b1xuICAgICAqICAgICAgICAgIGRldGVybWluZSB3aGljaCBvcHRpb24gaXMgc2VsZWN0ZWRcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBpbmRleCBvZiB0aGUgb3B0aW9uIHRoYXQgaXMgdGhlIGNsb3Nlc3QgbWF0Y2ggdG8gdGhlIGBmb3JtRGF0YWAgb3IgdGhlIGBzZWxlY3RlZE9wdGlvbmAgaWYgbm8gbWF0Y2hcbiAgICAgKi9cbiAgICBnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24oZm9ybURhdGEsIG9wdGlvbnMsIHNlbGVjdGVkT3B0aW9uLCBkaXNjcmltaW5hdG9yRmllbGQpIHtcbiAgICAgICAgcmV0dXJuIGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbih0aGlzLnZhbGlkYXRvciwgdGhpcy5yb290U2NoZW1hLCBmb3JtRGF0YSwgb3B0aW9ucywgc2VsZWN0ZWRPcHRpb24sIGRpc2NyaW1pbmF0b3JGaWVsZCwgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBHaXZlbiB0aGUgYGZvcm1EYXRhYCBhbmQgbGlzdCBvZiBgb3B0aW9uc2AsIGF0dGVtcHRzIHRvIGZpbmQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvcHRpb24gdGhhdCBtYXRjaGVzIHRoZSBkYXRhLlxuICAgICAqIEFsd2F5cyByZXR1cm5zIHRoZSBmaXJzdCBvcHRpb24gaWYgdGhlcmUgaXMgbm90aGluZyB0aGF0IG1hdGNoZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB1c2VkIHRvIGZpZ3VyZSBvdXQgYSBtYXRjaFxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyB0byBmaW5kIGEgbWF0Y2hpbmcgb3B0aW9ucyBmcm9tXG4gICAgICogQHBhcmFtIFtkaXNjcmltaW5hdG9yRmllbGRdIC0gVGhlIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGZpZWxkIHdpdGhpbiB0aGUgb3B0aW9ucyBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdXNlZCB0b1xuICAgICAqICAgICAgICAgIGRldGVybWluZSB3aGljaCBvcHRpb24gaXMgc2VsZWN0ZWRcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBmaXJzdGluZGV4IG9mIHRoZSBtYXRjaGVkIG9wdGlvbiBvciAwIGlmIG5vbmUgaXMgYXZhaWxhYmxlXG4gICAgICovXG4gICAgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbihmb3JtRGF0YSwgb3B0aW9ucywgZGlzY3JpbWluYXRvckZpZWxkKSB7XG4gICAgICAgIHJldHVybiBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKHRoaXMudmFsaWRhdG9yLCBmb3JtRGF0YSwgb3B0aW9ucywgdGhpcy5yb290U2NoZW1hLCBkaXNjcmltaW5hdG9yRmllbGQpO1xuICAgIH1cbiAgICAvKiogR2l2ZW4gdGhlIGBmb3JtRGF0YWAgYW5kIGxpc3Qgb2YgYG9wdGlvbnNgLCBhdHRlbXB0cyB0byBmaW5kIHRoZSBpbmRleCBvZiB0aGUgb3B0aW9uIHRoYXQgYmVzdCBtYXRjaGVzIHRoZSBkYXRhLlxuICAgICAqIERlcHJlY2F0ZWQsIHVzZSBgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbigpYCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgb250byB3aGljaCB0byBwcm92aWRlIGFueSBtaXNzaW5nIGRlZmF1bHRzXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRvIGZpbmQgYSBtYXRjaGluZyBvcHRpb25zIGZyb21cbiAgICAgKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gICAgICogICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIG9wdGlvbiBpcyBzZWxlY3RlZFxuICAgICAqIEByZXR1cm5zIC0gVGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIG9wdGlvbiBvciAwIGlmIG5vbmUgaXMgYXZhaWxhYmxlXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBnZXRNYXRjaGluZ09wdGlvbihmb3JtRGF0YSwgb3B0aW9ucywgZGlzY3JpbWluYXRvckZpZWxkKSB7XG4gICAgICAgIHJldHVybiBnZXRNYXRjaGluZ09wdGlvbih0aGlzLnZhbGlkYXRvciwgZm9ybURhdGEsIG9wdGlvbnMsIHRoaXMucm9vdFNjaGVtYSwgZGlzY3JpbWluYXRvckZpZWxkKTtcbiAgICB9XG4gICAgLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGBzY2hlbWFgIGFuZCBgdWlTY2hlbWFgIGNvbWJpbmF0aW9uIHJlcHJlc2VudHMgYW4gYXJyYXkgb2YgZmlsZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCBjaGVjayBmb3IgYXJyYXkgb2YgZmlsZXMgZmxhZyBpcyBkZXNpcmVkXG4gICAgICogQHBhcmFtIFt1aVNjaGVtYV0gLSBUaGUgVUkgc2NoZW1hIGZyb20gd2hpY2ggdG8gY2hlY2sgdGhlIHdpZGdldFxuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBzY2hlbWEvdWlTY2hlbWEgY29udGFpbnMgYW4gYXJyYXkgb2YgZmlsZXMsIG90aGVyd2lzZSBmYWxzZVxuICAgICAqL1xuICAgIGlzRmlsZXNBcnJheShzY2hlbWEsIHVpU2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBpc0ZpbGVzQXJyYXkodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgdWlTY2hlbWEsIHRoaXMucm9vdFNjaGVtYSwgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBgc2NoZW1hYCBjb21iaW5hdGlvbiByZXByZXNlbnRzIGEgbXVsdGktc2VsZWN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggY2hlY2sgZm9yIGEgbXVsdGktc2VsZWN0IGZsYWcgaXMgZGVzaXJlZFxuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBzY2hlbWEgY29udGFpbnMgYSBtdWx0aS1zZWxlY3QsIG90aGVyd2lzZSBmYWxzZVxuICAgICAqL1xuICAgIGlzTXVsdGlTZWxlY3Qoc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBpc011bHRpU2VsZWN0KHRoaXMudmFsaWRhdG9yLCBzY2hlbWEsIHRoaXMucm9vdFNjaGVtYSwgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBgc2NoZW1hYCBjb21iaW5hdGlvbiByZXByZXNlbnRzIGEgc2VsZWN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggY2hlY2sgZm9yIGEgc2VsZWN0IGZsYWcgaXMgZGVzaXJlZFxuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBzY2hlbWEgY29udGFpbnMgYSBzZWxlY3QsIG90aGVyd2lzZSBmYWxzZVxuICAgICAqL1xuICAgIGlzU2VsZWN0KHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gaXNTZWxlY3QodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgdGhpcy5yb290U2NoZW1hLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIE1lcmdlcyB0aGUgZXJyb3JzIGluIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGludG8gdGhlIGV4aXN0aW5nIGB2YWxpZGF0aW9uRGF0YWAgYnkgY29tYmluaW5nIHRoZSBoaWVyYXJjaGllcyBpblxuICAgICAqIHRoZSB0d28gYEVycm9yU2NoZW1hYHMgYW5kIHRoZW4gYXBwZW5kaW5nIHRoZSBlcnJvciBsaXN0IGZyb20gdGhlIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIG9idGFpbmVkIGJ5IGNhbGxpbmdcbiAgICAgKiBgZ2V0VmFsaWRhdG9yKCkudG9FcnJvckxpc3QoKWAgb250byB0aGUgYGVycm9yc2AgaW4gdGhlIGB2YWxpZGF0aW9uRGF0YWAuIElmIG5vIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGlzIHBhc3NlZCxcbiAgICAgKiB0aGVuIGB2YWxpZGF0aW9uRGF0YWAgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbkRhdGEgLSBUaGUgY3VycmVudCBgVmFsaWRhdGlvbkRhdGFgIGludG8gd2hpY2ggdG8gbWVyZ2UgdGhlIGFkZGl0aW9uYWwgZXJyb3JzXG4gICAgICogQHBhcmFtIFthZGRpdGlvbmFsRXJyb3JTY2hlbWFdIC0gVGhlIGFkZGl0aW9uYWwgc2V0IG9mIGVycm9yc1xuICAgICAqIEByZXR1cm5zIC0gVGhlIGB2YWxpZGF0aW9uRGF0YWAgd2l0aCB0aGUgYWRkaXRpb25hbCBlcnJvcnMgZnJvbSBgYWRkaXRpb25hbEVycm9yU2NoZW1hYCBtZXJnZWQgaW50byBpdCwgaWYgcHJvdmlkZWQuXG4gICAgICogQGRlcHJlY2F0ZWQgLSBVc2UgdGhlIGB2YWxpZGF0aW9uRGF0YU1lcmdlKClgIGZ1bmN0aW9uIGV4cG9ydGVkIGZyb20gYEByanNmL3V0aWxzYCBpbnN0ZWFkLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVcbiAgICAgKiAgICAgICAgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAqL1xuICAgIG1lcmdlVmFsaWRhdGlvbkRhdGEodmFsaWRhdGlvbkRhdGEsIGFkZGl0aW9uYWxFcnJvclNjaGVtYSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VWYWxpZGF0aW9uRGF0YSh0aGlzLnZhbGlkYXRvciwgdmFsaWRhdGlvbkRhdGEsIGFkZGl0aW9uYWxFcnJvclNjaGVtYSk7XG4gICAgfVxuICAgIC8qKiBSZXRyaWV2ZXMgYW4gZXhwYW5kZWQgc2NoZW1hIHRoYXQgaGFzIGhhZCBhbGwgb2YgaXRzIGNvbmRpdGlvbnMsIGFkZGl0aW9uYWwgcHJvcGVydGllcywgcmVmZXJlbmNlcyBhbmRcbiAgICAgKiBkZXBlbmRlbmNpZXMgcmVzb2x2ZWQgYW5kIG1lcmdlZCBpbnRvIHRoZSBgc2NoZW1hYCBnaXZlbiBhIGByYXdGb3JtRGF0YWAgdGhhdCBpcyB1c2VkIHRvIGRvIHRoZSBwb3RlbnRpYWxseVxuICAgICAqIHJlY3Vyc2l2ZSByZXNvbHV0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJldHJpZXZpbmcgYSBzY2hlbWEgaXMgZGVzaXJlZFxuICAgICAqIEBwYXJhbSBbcmF3Rm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBzY2hlbWEgaGF2aW5nIGl0cyBjb25kaXRpb25zLCBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIHJlZmVyZW5jZXMgYW5kIGRlcGVuZGVuY2llcyByZXNvbHZlZFxuICAgICAqL1xuICAgIHJldHJpZXZlU2NoZW1hKHNjaGVtYSwgcmF3Rm9ybURhdGEpIHtcbiAgICAgICAgcmV0dXJuIHJldHJpZXZlU2NoZW1hKHRoaXMudmFsaWRhdG9yLCBzY2hlbWEsIHRoaXMucm9vdFNjaGVtYSwgcmF3Rm9ybURhdGEsIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICAvKiogU2FuaXRpemUgdGhlIGBkYXRhYCBhc3NvY2lhdGVkIHdpdGggdGhlIGBvbGRTY2hlbWFgIHNvIGl0IGlzIGNvbnNpZGVyZWQgYXBwcm9wcmlhdGUgZm9yIHRoZSBgbmV3U2NoZW1hYC4gSWYgdGhlXG4gICAgICogbmV3IHNjaGVtYSBkb2VzIG5vdCBjb250YWluIGFueSBwcm9wZXJ0aWVzLCB0aGVuIGB1bmRlZmluZWRgIGlzIHJldHVybmVkIHRvIGNsZWFyIGFsbCB0aGUgZm9ybSBkYXRhLiBEdWUgdG8gdGhlXG4gICAgICogbmF0dXJlIG9mIHNjaGVtYXMsIHRoaXMgc2FuaXRpemF0aW9uIGhhcHBlbnMgcmVjdXJzaXZlbHkgZm9yIG5lc3RlZCBvYmplY3RzIG9mIGRhdGEuIEFsc28sIGFueSBwcm9wZXJ0aWVzIGluIHRoZVxuICAgICAqIG9sZCBzY2hlbWFzIHRoYXQgYXJlIG5vbi1leGlzdGVudCBpbiB0aGUgbmV3IHNjaGVtYSBhcmUgc2V0IHRvIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHBhcmFtIFtuZXdTY2hlbWFdIC0gVGhlIG5ldyBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkYXRhIGlzIGJlaW5nIHNhbml0aXplZFxuICAgICAqIEBwYXJhbSBbb2xkU2NoZW1hXSAtIFRoZSBvbGQgc2NoZW1hIGZyb20gd2hpY2ggdGhlIGRhdGEgb3JpZ2luYXRlZFxuICAgICAqIEBwYXJhbSBbZGF0YT17fV0gLSBUaGUgZm9ybSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hLCBkZWZhdWx0aW5nIHRvIGFuIGVtcHR5IG9iamVjdCB3aGVuIHVuZGVmaW5lZFxuICAgICAqIEByZXR1cm5zIC0gVGhlIG5ldyBmb3JtIGRhdGEsIHdpdGggYWxsIHRoZSBmaWVsZHMgdW5pcXVlbHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBvbGQgc2NoZW1hIHNldFxuICAgICAqICAgICAgdG8gYHVuZGVmaW5lZGAuIFdpbGwgcmV0dXJuIGB1bmRlZmluZWRgIGlmIHRoZSBuZXcgc2NoZW1hIGlzIG5vdCBhbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIHNhbml0aXplRGF0YUZvck5ld1NjaGVtYShuZXdTY2hlbWEsIG9sZFNjaGVtYSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hKHRoaXMudmFsaWRhdG9yLCB0aGlzLnJvb3RTY2hlbWEsIG5ld1NjaGVtYSwgb2xkU2NoZW1hLCBkYXRhLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIEdlbmVyYXRlcyBhbiBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgLCByZWN1cnNpdmVseVxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkaXNwbGF5IGxhYmVsIGZsYWcgaXMgZGVzaXJlZFxuICAgICAqIEBwYXJhbSBbaWRdIC0gVGhlIGJhc2UgaWQgZm9yIHRoZSBzY2hlbWFcbiAgICAgKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIG9udG8gd2hpY2ggdG8gcHJvdmlkZSBhbnkgbWlzc2luZyBkZWZhdWx0c1xuICAgICAqIEBwYXJhbSBbaWRQcmVmaXg9J3Jvb3QnXSAtIFRoZSBwcmVmaXggdG8gdXNlIGZvciB0aGUgaWRcbiAgICAgKiBAcGFyYW0gW2lkU2VwYXJhdG9yPSdfJ10gLSBUaGUgc2VwYXJhdG9yIHRvIHVzZSBmb3IgdGhlIHBhdGggc2VnbWVudHMgaW4gdGhlIGlkXG4gICAgICogQHJldHVybnMgLSBUaGUgYElkU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICAgICAqL1xuICAgIHRvSWRTY2hlbWEoc2NoZW1hLCBpZCwgZm9ybURhdGEsIGlkUHJlZml4ID0gJ3Jvb3QnLCBpZFNlcGFyYXRvciA9ICdfJykge1xuICAgICAgICByZXR1cm4gdG9JZFNjaGVtYSh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCBpZCwgdGhpcy5yb290U2NoZW1hLCBmb3JtRGF0YSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIEdlbmVyYXRlcyBhbiBgUGF0aFNjaGVtYWAgb2JqZWN0IGZvciB0aGUgYHNjaGVtYWAsIHJlY3Vyc2l2ZWx5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRpc3BsYXkgbGFiZWwgZmxhZyBpcyBkZXNpcmVkXG4gICAgICogQHBhcmFtIFtuYW1lXSAtIFRoZSBiYXNlIG5hbWUgZm9yIHRoZSBzY2hlbWFcbiAgICAgKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIG9udG8gd2hpY2ggdG8gcHJvdmlkZSBhbnkgbWlzc2luZyBkZWZhdWx0c1xuICAgICAqIEByZXR1cm5zIC0gVGhlIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICAgICAqL1xuICAgIHRvUGF0aFNjaGVtYShzY2hlbWEsIG5hbWUsIGZvcm1EYXRhKSB7XG4gICAgICAgIHJldHVybiB0b1BhdGhTY2hlbWEodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgbmFtZSwgdGhpcy5yb290U2NoZW1hLCBmb3JtRGF0YSwgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxufVxuLyoqIENyZWF0ZXMgYSBgU2NoZW1hVXRpbHNUeXBlYCBpbnRlcmZhY2UgdGhhdCBpcyBiYXNlZCBhcm91bmQgdGhlIGdpdmVuIGB2YWxpZGF0b3JgIGFuZCBgcm9vdFNjaGVtYWAgcGFyYW1ldGVycy4gVGhlXG4gKiByZXN1bHRpbmcgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIHdpbGwgZm9yd2FyZCB0aGUgYHZhbGlkYXRvcmAgYW5kIGByb290U2NoZW1hYCB0byBhbGwgdGhlIHdyYXBwZWQgQVBJcy5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3JdIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0LCBpZiBwcm92aWRlZCwgYWxsb3dzIHVzZXJzIHRvIG92ZXJyaWRlIGRlZmF1bHQgZm9ybSBzdGF0ZSBiZWhhdmlvclxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIEFuIGltcGxlbWVudGF0aW9uIG9mIGEgYFNjaGVtYVV0aWxzVHlwZWAgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVNjaGVtYVV0aWxzKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9IHt9LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIHJldHVybiBuZXcgU2NoZW1hVXRpbHModmFsaWRhdG9yLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVTY2hlbWFVdGlscy5qcy5tYXAiLCIvKiogR2l2ZW4gdGhlIGBGaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoKWAgYmFzZWQgYGRhdGFVUklgIGV4dHJhY3RzIHRoYXQgZGF0YSBpbnRvIGFuIGFjdHVhbCBCbG9iIGFsb25nIHdpdGggdGhlIG5hbWVcbiAqIG9mIHRoYXQgQmxvYiBpZiBwcm92aWRlZCBpbiB0aGUgVVJMLiBJZiBubyBuYW1lIGlzIHByb3ZpZGVkLCB0aGVuIHRoZSBuYW1lIGZhbGxzIGJhY2sgdG8gYHVua25vd25gLlxuICpcbiAqIEBwYXJhbSBkYXRhVVJJIC0gVGhlIGBEYXRhVXJsYCBwb3RlbnRpYWxseSBjb250YWluaW5nIG5hbWUgYW5kIHJhdyBkYXRhIHRvIGJlIGNvbnZlcnRlZCB0byBhIEJsb2JcbiAqIEByZXR1cm5zIC0gYW4gb2JqZWN0IGNvbnRhaW5pbmcgYSBCbG9iIGFuZCBpdHMgbmFtZSwgZXh0cmFjdGVkIGZyb20gdGhlIFVSSVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkYXRhVVJJdG9CbG9iKGRhdGFVUklMaWtlKSB7XG4gICAgdmFyIF9hO1xuICAgIC8vIGNoZWNrIGlmIGlzIGRhdGFVUklcbiAgICBpZiAoZGF0YVVSSUxpa2UuaW5kZXhPZignZGF0YTonKSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIGludmFsaWQ6IFVSSSBtdXN0IGJlIGEgZGF0YVVSSScpO1xuICAgIH1cbiAgICBjb25zdCBkYXRhVVJJID0gZGF0YVVSSUxpa2Uuc2xpY2UoNSk7XG4gICAgLy8gc3BsaXQgdGhlIGRhdGFVUkkgaW50byBtZWRpYSBhbmQgYmFzZTY0LCB3aXRoIHRoZSBiYXNlNjQgc2lnbmF0dXJlXG4gICAgY29uc3Qgc3BsaXR0ZWQgPSBkYXRhVVJJLnNwbGl0KCc7YmFzZTY0LCcpO1xuICAgIC8vIGlmIHRoZSBiYXNlNjQgc2lnbmF0dXJlIGlzIG5vdCBwcmVzZW50LCB0aGUgbGF0dGVyIHBhcnQgd2lsbCBiZWNvbWUgZW1wdHlcbiAgICBpZiAoc3BsaXR0ZWQubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsZSBpcyBpbnZhbGlkOiBkYXRhVVJJIG11c3QgYmUgYmFzZTY0Jyk7XG4gICAgfVxuICAgIC8vIGV4dHJhY3QgdGhlIG1pbWUgdHlwZSwgbWVkaWEgcGFyYW1ldGVycyBpbmNsdWRpbmcgdGhlIG5hbWUsIGFuZCB0aGUgYmFzZTY0IHN0cmluZ1xuICAgIGNvbnN0IFttZWRpYSwgYmFzZTY0XSA9IHNwbGl0dGVkO1xuICAgIGNvbnN0IFttaW1lLCAuLi5tZWRpYXBhcmFtc10gPSBtZWRpYS5zcGxpdCgnOycpO1xuICAgIGNvbnN0IHR5cGUgPSBtaW1lIHx8ICcnO1xuICAgIC8vIGV4dHJhY3QgdGhlIG5hbWUgZnJvbSB0aGUgcGFyYW1ldGVyc1xuICAgIGNvbnN0IG5hbWUgPSBkZWNvZGVVUkkoXG4gICAgLy8gcGFyc2UgdGhlIHBhcmFtZXRlcnMgaW50byBrZXktdmFsdWUgcGFpcnMsIGZpbmQgYSBrZXksIGFuZCBleHRyYWN0IGEgdmFsdWVcbiAgICAvLyBpZiBubyBrZXkgaXMgZm91bmQsIHRoZW4gdGhlIG5hbWUgaXMgdW5rbm93blxuICAgICgoX2EgPSBtZWRpYXBhcmFtcy5tYXAoKHBhcmFtKSA9PiBwYXJhbS5zcGxpdCgnPScpKS5maW5kKChba2V5XSkgPT4ga2V5ID09PSAnbmFtZScpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pIHx8ICd1bmtub3duJyk7XG4gICAgLy8gQnVpbHQgdGhlIFVpbnQ4QXJyYXkgQmxvYiBwYXJhbWV0ZXIgZnJvbSB0aGUgYmFzZTY0IHN0cmluZy5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBiaW5hcnkgPSBhdG9iKGJhc2U2NCk7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gbmV3IEFycmF5KGJpbmFyeS5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmFyeS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJyYXlbaV0gPSBiaW5hcnkuY2hhckNvZGVBdChpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDcmVhdGUgdGhlIGJsb2Igb2JqZWN0XG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgd2luZG93LkJsb2IoW25ldyBVaW50OEFycmF5KGFycmF5KV0sIHsgdHlwZSB9KTtcbiAgICAgICAgcmV0dXJuIHsgYmxvYiwgbmFtZSB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIGludmFsaWQ6ICcgKyBlcnJvci5tZXNzYWdlKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhVVJJdG9CbG9iLmpzLm1hcCIsIi8qKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBgbnVtYCB0aGF0IGlzIHBhZGRlZCB3aXRoIGxlYWRpbmcgXCIwXCJzIGlmIG5lY2Vzc2FyeVxuICpcbiAqIEBwYXJhbSBudW0gLSBUaGUgbnVtYmVyIHRvIHBhZFxuICogQHBhcmFtIHdpZHRoIC0gVGhlIHdpZHRoIG9mIHRoZSBzdHJpbmcgYXQgd2hpY2ggbm8gbGVhZCBwYWRkaW5nIGlzIG5lY2Vzc2FyeVxuICogQHJldHVybnMgLSBUaGUgbnVtYmVyIGNvbnZlcnRlZCB0byBhIHN0cmluZyB3aXRoIGxlYWRpbmcgemVybyBwYWRkaW5nIGlmIHRoZSBudW1iZXIgb2YgZGlnaXRzIGlzIGxlc3MgdGhhbiBgd2lkdGhgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhZChudW0sIHdpZHRoKSB7XG4gICAgbGV0IHMgPSBTdHJpbmcobnVtKTtcbiAgICB3aGlsZSAocy5sZW5ndGggPCB3aWR0aCkge1xuICAgICAgICBzID0gJzAnICsgcztcbiAgICB9XG4gICAgcmV0dXJuIHM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYWQuanMubWFwIiwiaW1wb3J0IHBhZCBmcm9tICcuL3BhZCc7XG4vKiogUmV0dXJucyBhIGxpc3Qgb2Ygb3B0aW9ucyBmb3IgYSBkYXRlIHJhbmdlIGJldHdlZW4gYHN0YXJ0YCBhbmQgYHN0b3BgLiBJZiB0aGUgc3RhcnQgZGF0ZSBpcyBncmVhdGVyIHRoYW4gdGhlIGVuZFxuICogZGF0ZSwgdGhlbiB0aGUgZGF0ZSByYW5nZSBpcyByZXZlcnNlZC4gSWYgYHN0YXJ0YCBhbmQgYHN0b3BgIGFyZSBuZWdhdGl2ZSBudW1iZXJzIChvciB6ZXJvKSwgdGhlbiB0aGV5IHdpbGwgYmVcbiAqIHRyZWF0ZWQgYXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgeWVhci5cbiAqXG4gKiBAcGFyYW0gc3RhcnQgLSBUaGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIGRhdGUgcmFuZ2VcbiAqIEBwYXJhbSBzdG9wIC0gVGhlIGVuZGluZyBwb2ludCBvZiB0aGUgZGF0ZSByYW5nZVxuICogQHJldHVybnMgLSBUaGUgbGlzdCBvZiBFbnVtT3B0aW9uc1R5cGUgZm9yIHRoZSBkYXRlIHJhbmdlIGJldHdlZW4gYHN0YXJ0YCBhbmQgYHN0b3BgXG4gKiBAdGhyb3dzIC0gRXJyb3Igd2hlbiBgc3RhcnRgIGFuZCBgc3RvcGAgYXJlbid0IGJvdGggPD0gMCBvciA+IDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGF0ZVJhbmdlT3B0aW9ucyhzdGFydCwgc3RvcCkge1xuICAgIGlmIChzdGFydCA8PSAwICYmIHN0b3AgPD0gMCkge1xuICAgICAgICBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSArIHN0YXJ0O1xuICAgICAgICBzdG9wID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgc3RvcDtcbiAgICB9XG4gICAgZWxzZSBpZiAoc3RhcnQgPCAwIHx8IHN0b3AgPCAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQm90aCBzdGFydCAoJHtzdGFydH0pIGFuZCBzdG9wICgke3N0b3B9KSBtdXN0IGJvdGggYmUgPD0gMCBvciA+IDAsIGdvdCBvbmUgb2YgZWFjaGApO1xuICAgIH1cbiAgICBpZiAoc3RhcnQgPiBzdG9wKSB7XG4gICAgICAgIHJldHVybiBkYXRlUmFuZ2VPcHRpb25zKHN0b3AsIHN0YXJ0KS5yZXZlcnNlKCk7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gc3RvcDsgaSsrKSB7XG4gICAgICAgIG9wdGlvbnMucHVzaCh7IHZhbHVlOiBpLCBsYWJlbDogcGFkKGksIDIpIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGVSYW5nZU9wdGlvbnMuanMubWFwIiwiLyoqIFBvdGVudGlhbGx5IHN1YnN0aXR1dGVzIGFsbCByZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIHdpdGggdGhlIGFzc29jaWF0ZWQgdmFsdWUocykgZnJvbSB0aGUgYHBhcmFtc2AgaWYgYXZhaWxhYmxlLiBXaGVuXG4gKiBhIGBwYXJhbXNgIGFycmF5IGlzIHByb3ZpZGVkLCBlYWNoIHZhbHVlIGluIHRoZSBhcnJheSBpcyB1c2VkIHRvIHJlcGxhY2UgYW55IG9mIHRoZSByZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGluIHRoZVxuICogYGlucHV0U3RyaW5nYCB1c2luZyB0aGUgYCUxYCwgYCUyYCwgZXRjLiByZXBsYWNlbWVudCBzcGVjaWZpZXJzLlxuICpcbiAqIEBwYXJhbSBpbnB1dFN0cmluZyAtIFRoZSBzdHJpbmcgd2hpY2ggd2lsbCBiZSBwb3RlbnRpYWxseSB1cGRhdGVkIHdpdGggcmVwbGFjZW1lbnQgcGFyYW1ldGVyc1xuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBvcHRpb25hbCBsaXN0IG9mIHJlcGxhY2VhYmxlIHBhcmFtZXRlciB2YWx1ZXMgdG8gc3Vic3RpdHV0ZSBpbnRvIHRoZSBlbmdsaXNoIHN0cmluZ1xuICogQHJldHVybnMgLSBUaGUgdXBkYXRlZCBzdHJpbmcgd2l0aCBhbnkgcmVwbGFjZW1lbnQgc3BlY2lmaWVycyByZXBsYWNlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXBsYWNlU3RyaW5nUGFyYW1ldGVycyhpbnB1dFN0cmluZywgcGFyYW1zKSB7XG4gICAgbGV0IG91dHB1dCA9IGlucHV0U3RyaW5nO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHBhcmFtcykpIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSBvdXRwdXQuc3BsaXQoLyglXFxkKS8pO1xuICAgICAgICBwYXJhbXMuZm9yRWFjaCgocGFyYW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0SW5kZXggPSBwYXJ0cy5maW5kSW5kZXgoKHBhcnQpID0+IHBhcnQgPT09IGAlJHtpbmRleCArIDF9YCk7XG4gICAgICAgICAgICBpZiAocGFydEluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICBwYXJ0c1twYXJ0SW5kZXhdID0gcGFyYW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBvdXRwdXQgPSBwYXJ0cy5qb2luKCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcGxhY2VTdHJpbmdQYXJhbWV0ZXJzLmpzLm1hcCIsImltcG9ydCByZXBsYWNlU3RyaW5nUGFyYW1ldGVycyBmcm9tICcuL3JlcGxhY2VTdHJpbmdQYXJhbWV0ZXJzJztcbi8qKiBUcmFuc2xhdGVzIGEgYFRyYW5zbGF0YWJsZVN0cmluZ2AgdmFsdWUgYHN0cmluZ1RvVHJhbnNsYXRlYCBpbnRvIGVuZ2xpc2guIFdoZW4gYSBgcGFyYW1zYCBhcnJheSBpcyBwcm92aWRlZCwgZWFjaFxuICogdmFsdWUgaW4gdGhlIGFycmF5IGlzIHVzZWQgdG8gcmVwbGFjZSBhbnkgb2YgdGhlIHJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgaW4gdGhlIGBzdHJpbmdUb1RyYW5zbGF0ZWAgdXNpbmcgdGhlIGAlMWAsXG4gKiBgJTJgLCBldGMuIHJlcGxhY2VtZW50IHNwZWNpZmllcnMuXG4gKlxuICogQHBhcmFtIHN0cmluZ1RvVHJhbnNsYXRlIC0gVGhlIGBUcmFuc2xhdGFibGVTdHJpbmdgIHZhbHVlIHRvIGNvbnZlcnQgdG8gZW5nbGlzaFxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBvcHRpb25hbCBsaXN0IG9mIHJlcGxhY2VhYmxlIHBhcmFtZXRlciB2YWx1ZXMgdG8gc3Vic3RpdHV0ZSBpbnRvIHRoZSBlbmdsaXNoIHN0cmluZ1xuICogQHJldHVybnMgLSBUaGUgYHN0cmluZ1RvVHJhbnNsYXRlYCBpdHNlbGYgd2l0aCBhbnkgcmVwbGFjZWFibGUgcGFyYW1ldGVyIHZhbHVlcyBzdWJzdGl0dXRlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmdsaXNoU3RyaW5nVHJhbnNsYXRvcihzdHJpbmdUb1RyYW5zbGF0ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIHJlcGxhY2VTdHJpbmdQYXJhbWV0ZXJzKHN0cmluZ1RvVHJhbnNsYXRlLCBwYXJhbXMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW5nbGlzaFN0cmluZ1RyYW5zbGF0b3IuanMubWFwIiwiLyoqIFJldHVybnMgdGhlIHZhbHVlKHMpIGZyb20gYGFsbEVudW1PcHRpb25zYCBhdCB0aGUgaW5kZXgoZXMpIHByb3ZpZGVkIGJ5IGB2YWx1ZUluZGV4YC4gSWYgYHZhbHVlSW5kZXhgIGlzIG5vdCBhblxuICogYXJyYXkgQU5EIHRoZSBpbmRleCBpcyBub3QgdmFsaWQgZm9yIGBhbGxFbnVtT3B0aW9uc2AsIGBlbXB0eVZhbHVlYCBpcyByZXR1cm5lZC4gSWYgYHZhbHVlSW5kZXhgIGlzIGFuIGFycmF5LCBBTkQgaXRcbiAqIGNvbnRhaW5zIGFuIGludmFsaWQgaW5kZXgsIHRoZSByZXR1cm5lZCBhcnJheSB3aWxsIGhhdmUgdGhlIHJlc3VsdGluZyB1bmRlZmluZWQgdmFsdWVzIGZpbHRlcmVkIG91dCwgbGVhdmluZyBvbmx5XG4gKiB2YWxpZCB2YWx1ZXMgb3IgaW4gdGhlIHdvcnN0IGNhc2UsIGFuIGVtcHR5IGFycmF5LlxuICpcbiAqIEBwYXJhbSB2YWx1ZUluZGV4IC0gVGhlIGluZGV4KGVzKSBvZiB0aGUgdmFsdWUocykgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWRcbiAqIEBwYXJhbSBbYWxsRW51bU9wdGlvbnM9W11dIC0gVGhlIGxpc3Qgb2YgYWxsIHRoZSBrbm93biBlbnVtT3B0aW9uc1xuICogQHBhcmFtIFtlbXB0eVZhbHVlXSAtIFRoZSB2YWx1ZSB0byByZXR1cm4gd2hlbiB0aGUgbm9uLWFycmF5IGB2YWx1ZUluZGV4YCBkb2VzIG5vdCByZWZlciB0byBhIHJlYWwgb3B0aW9uXG4gKiBAcmV0dXJucyAtIFRoZSBzaW5nbGUgb3IgbGlzdCBvZiB2YWx1ZXMgc3BlY2lmaWVkIGJ5IHRoZSBzaW5nbGUgb3IgbGlzdCBvZiBpbmRleGVzIGlmIHRoZXkgYXJlIHZhbGlkLiBPdGhlcndpc2UsXG4gKiAgICAgICAgYGVtcHR5VmFsdWVgIG9yIGFuIGVtcHR5IGxpc3QuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh2YWx1ZUluZGV4LCBhbGxFbnVtT3B0aW9ucyA9IFtdLCBlbXB0eVZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVJbmRleCkpIHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZUluZGV4XG4gICAgICAgICAgICAubWFwKChpbmRleCkgPT4gZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KGluZGV4LCBhbGxFbnVtT3B0aW9ucykpXG4gICAgICAgICAgICAvLyBTaW5jZSB0aGUgcmVjdXJzaXZlIGNhbGwgcmV0dXJucyBgZW1wdHlWYWx1ZWAgd2hlbiB3ZSBnZXQgYSBiYWQgb3B0aW9uLCBvbmx5IGZpbHRlciB0aG9zZSBvdXRcbiAgICAgICAgICAgIC5maWx0ZXIoKHZhbCkgPT4gdmFsICE9PSBlbXB0eVZhbHVlKSk7XG4gICAgfVxuICAgIC8vIFNvIE51bWJlcihudWxsKSBhbmQgTnVtYmVyKCcnKSBib3RoIHJldHVybiAwLCBzbyB1c2UgZW1wdHlWYWx1ZSBmb3IgdGhvc2UgdHdvIHZhbHVlc1xuICAgIGNvbnN0IGluZGV4ID0gdmFsdWVJbmRleCA9PT0gJycgfHwgdmFsdWVJbmRleCA9PT0gbnVsbCA/IC0xIDogTnVtYmVyKHZhbHVlSW5kZXgpO1xuICAgIGNvbnN0IG9wdGlvbiA9IGFsbEVudW1PcHRpb25zW2luZGV4XTtcbiAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uLnZhbHVlIDogZW1wdHlWYWx1ZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVudW1PcHRpb25zVmFsdWVGb3JJbmRleC5qcy5tYXAiLCJpbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4IGZyb20gJy4vZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4Jztcbi8qKiBSZW1vdmVzIHRoZSBlbnVtIG9wdGlvbiB2YWx1ZSBhdCB0aGUgYHZhbHVlSW5kZXhgIGZyb20gdGhlIGN1cnJlbnRseSBgc2VsZWN0ZWRgIChsaXN0IG9mKSB2YWx1ZShzKS4gSWYgYHNlbGVjdGVkYCBpc1xuICogYSBsaXN0LCB0aGVuIHRoYXQgbGlzdCBpcyB1cGRhdGVkIHRvIHJlbW92ZSB0aGUgZW51bSBvcHRpb24gdmFsdWUgd2l0aCB0aGUgYHZhbHVlSW5kZXhgIGluIGBhbGxFbnVtT3B0aW9uc2AuIElmIGl0IGlzXG4gKiBhIHNpbmdsZSB2YWx1ZSwgdGhlbiBpZiB0aGUgZW51bSBvcHRpb24gdmFsdWUgd2l0aCB0aGUgYHZhbHVlSW5kZXhgIGluIGBhbGxFbnVtT3B0aW9uc2AgbWF0Y2hlcyBgc2VsZWN0ZWRgLCB1bmRlZmluZWRcbiAqIGlzIHJldHVybmVkLCBvdGhlcndpc2UgdGhlIGBzZWxlY3RlZGAgdmFsdWUgaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHZhbHVlSW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIHZhbHVlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VsZWN0ZWQgbGlzdCBvciBzaW5nbGUgdmFsdWVcbiAqIEBwYXJhbSBzZWxlY3RlZCAtIFRoZSBjdXJyZW50IChsaXN0IG9mKSBzZWxlY3RlZCB2YWx1ZShzKVxuICogQHBhcmFtIFthbGxFbnVtT3B0aW9ucz1bXV0gLSBUaGUgbGlzdCBvZiBhbGwgdGhlIGtub3duIGVudW1PcHRpb25zXG4gKiBAcmV0dXJucyAtIFRoZSB1cGRhdGVkIGBzZWxlY3RlZGAgd2l0aCB0aGUgZW51bSBvcHRpb24gdmFsdWUgYXQgYHZhbHVlSW5kZXhgIGluIGBhbGxFbnVtT3B0aW9uc2AgcmVtb3ZlZCBmcm9tIGl0LFxuICogICAgICAgIHVubGVzcyBgc2VsZWN0ZWRgIGlzIGEgc2luZ2xlIHZhbHVlLiBJbiB0aGF0IGNhc2UsIGlmIHRoZSBgdmFsdWVJbmRleGAgdmFsdWUgbWF0Y2hlcyBgc2VsZWN0ZWRgLCByZXR1cm5zXG4gKiAgICAgICAgdW5kZWZpbmVkLCBvdGhlcndpc2UgYHNlbGVjdGVkYC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW51bU9wdGlvbnNEZXNlbGVjdFZhbHVlKHZhbHVlSW5kZXgsIHNlbGVjdGVkLCBhbGxFbnVtT3B0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgdmFsdWUgPSBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgodmFsdWVJbmRleCwgYWxsRW51bU9wdGlvbnMpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGVkKSkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWQuZmlsdGVyKCh2KSA9PiAhaXNFcXVhbCh2LCB2YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gaXNFcXVhbCh2YWx1ZSwgc2VsZWN0ZWQpID8gdW5kZWZpbmVkIDogc2VsZWN0ZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbnVtT3B0aW9uc0Rlc2VsZWN0VmFsdWUuanMubWFwIiwiaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gYHZhbHVlYCBpcyAob25lIG9mKSB0aGUgYHNlbGVjdGVkYCB2YWx1ZShzKS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgYmVpbmcgY2hlY2tlZCB0byBzZWUgaWYgaXQgaXMgc2VsZWN0ZWRcbiAqIEBwYXJhbSBzZWxlY3RlZCAtIFRoZSBjdXJyZW50IHNlbGVjdGVkIHZhbHVlIG9yIGxpc3Qgb2YgdmFsdWVzXG4gKiBAcmV0dXJucyAtIHRydWUgaWYgdGhlIGB2YWx1ZWAgaXMgb25lIG9mIHRoZSBgc2VsZWN0ZWRgIG9uZXMsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQodmFsdWUsIHNlbGVjdGVkKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZC5zb21lKChzZWwpID0+IGlzRXF1YWwoc2VsLCB2YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gaXNFcXVhbChzZWxlY3RlZCwgdmFsdWUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW51bU9wdGlvbnNJc1NlbGVjdGVkLmpzLm1hcCIsImltcG9ydCBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQgZnJvbSAnLi9lbnVtT3B0aW9uc0lzU2VsZWN0ZWQnO1xuLyoqIFJldHVybnMgdGhlIGluZGV4KGVzKSBvZiB0aGUgb3B0aW9ucyBpbiBgYWxsRW51bU9wdGlvbnNgIHdob3NlIHZhbHVlKHMpIG1hdGNoIHRoZSBvbmVzIGluIGB2YWx1ZWAuIEFsbCB0aGVcbiAqIGBlbnVtT3B0aW9uc2AgYXJlIGZpbHRlcmVkIGJhc2VkIG9uIHdoZXRoZXIgdGhleSBhcmUgYSBcInNlbGVjdGVkXCIgYHZhbHVlYCBhbmQgdGhlIGluZGV4IG9mIGVhY2ggc2VsZWN0ZWQgb25lIGlzIHRoZW5cbiAqIHN0b3JlZCBpbiBhbiBhcnJheS4gSWYgYG11bHRpcGxlYCBpcyB0cnVlLCB0aGF0IGFycmF5IGlzIHJldHVybmVkLCBvdGhlcndpc2UgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGFycmF5IGlzXG4gKiByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgc2luZ2xlIHZhbHVlIG9yIGxpc3Qgb2YgdmFsdWVzIGZvciB3aGljaCBpbmRleGVzIGFyZSBkZXNpcmVkXG4gKiBAcGFyYW0gW2FsbEVudW1PcHRpb25zPVtdXSAtIFRoZSBsaXN0IG9mIGFsbCB0aGUga25vd24gZW51bU9wdGlvbnNcbiAqIEBwYXJhbSBbbXVsdGlwbGU9ZmFsc2VdIC0gT3B0aW9uYWwgZmxhZywgaWYgdHJ1ZSB3aWxsIHJldHVybiBhIGxpc3Qgb2YgaW5kZXgsIG90aGVyd2lzZSBhIHNpbmdsZSBvbmVcbiAqIEByZXR1cm5zIC0gQSBzaW5nbGUgc3RyaW5nIGluZGV4IGZvciB0aGUgZmlyc3QgYHZhbHVlYCBpbiBgYWxsRW51bU9wdGlvbnNgLCBpZiBub3QgYG11bHRpcGxlYC4gT3RoZXJ3aXNlLCB0aGUgbGlzdFxuICogICAgICAgIG9mIGluZGV4ZXMgZm9yIChlYWNoIG9mKSB0aGUgdmFsdWUocykgaW4gYHZhbHVlYC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW51bU9wdGlvbnNJbmRleEZvclZhbHVlKHZhbHVlLCBhbGxFbnVtT3B0aW9ucyA9IFtdLCBtdWx0aXBsZSA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gYWxsRW51bU9wdGlvbnNcbiAgICAgICAgLm1hcCgob3B0LCBpbmRleCkgPT4gKGVudW1PcHRpb25zSXNTZWxlY3RlZChvcHQudmFsdWUsIHZhbHVlKSA/IFN0cmluZyhpbmRleCkgOiB1bmRlZmluZWQpKVxuICAgICAgICAuZmlsdGVyKChvcHQpID0+IHR5cGVvZiBvcHQgIT09ICd1bmRlZmluZWQnKTtcbiAgICBpZiAoIW11bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZEluZGV4ZXNbMF07XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZEluZGV4ZXM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbnVtT3B0aW9uc0luZGV4Rm9yVmFsdWUuanMubWFwIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbnVsbGlzaCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTmlsKG51bGwpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOaWwodm9pZCAwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmlsKE5hTik7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc05pbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc05pbDtcbiIsImltcG9ydCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXggZnJvbSAnLi9lbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgnO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG4vKiogQWRkIHRoZSBlbnVtIG9wdGlvbiB2YWx1ZSBhdCB0aGUgYHZhbHVlSW5kZXhgIHRvIHRoZSBsaXN0IG9mIGBzZWxlY3RlZGAgdmFsdWVzIGluIHRoZSBwcm9wZXIgb3JkZXIgYXMgZGVmaW5lZCBieVxuICogYGFsbEVudW1PcHRpb25zYFxuICpcbiAqIEBwYXJhbSB2YWx1ZUluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZFxuICogQHBhcmFtIHNlbGVjdGVkIC0gVGhlIGN1cnJlbnQgbGlzdCBvZiBzZWxlY3RlZCB2YWx1ZXNcbiAqIEBwYXJhbSBbYWxsRW51bU9wdGlvbnM9W11dIC0gVGhlIGxpc3Qgb2YgYWxsIHRoZSBrbm93biBlbnVtT3B0aW9uc1xuICogQHJldHVybnMgLSBUaGUgdXBkYXRlZCBsaXN0IG9mIHNlbGVjdGVkIGVudW0gdmFsdWVzIHdpdGggZW51bSB2YWx1ZSBhdCB0aGUgYHZhbHVlSW5kZXhgIGFkZGVkIHRvIGl0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVudW1PcHRpb25zU2VsZWN0VmFsdWUodmFsdWVJbmRleCwgc2VsZWN0ZWQsIGFsbEVudW1PcHRpb25zID0gW10pIHtcbiAgICBjb25zdCB2YWx1ZSA9IGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh2YWx1ZUluZGV4LCBhbGxFbnVtT3B0aW9ucyk7XG4gICAgaWYgKCFpc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBhbGxFbnVtT3B0aW9ucy5maW5kSW5kZXgoKG9wdCkgPT4gdmFsdWUgPT09IG9wdC52YWx1ZSk7XG4gICAgICAgIGNvbnN0IGFsbCA9IGFsbEVudW1PcHRpb25zLm1hcCgoeyB2YWx1ZTogdmFsIH0pID0+IHZhbCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBzZWxlY3RlZC5zbGljZSgwLCBpbmRleCkuY29uY2F0KHZhbHVlLCBzZWxlY3RlZC5zbGljZShpbmRleCkpO1xuICAgICAgICAvLyBBcyBpbnNlcnRpbmcgdmFsdWVzIGF0IHByZWRlZmluZWQgaW5kZXggcG9zaXRpb25zIGRvZXNuJ3Qgd29yayB3aXRoIGVtcHR5XG4gICAgICAgIC8vIGFycmF5cywgd2UgbmVlZCB0byByZW9yZGVyIHRoZSB1cGRhdGVkIHNlbGVjdGlvbiB0byBtYXRjaCB0aGUgaW5pdGlhbCBvcmRlclxuICAgICAgICByZXR1cm4gdXBkYXRlZC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYWxsLmluZGV4T2YoYSkgPiBhbGwuaW5kZXhPZihiKSkpO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0ZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbnVtT3B0aW9uc1NlbGVjdFZhbHVlLmpzLm1hcCIsInZhciBiYXNlU2V0ID0gcmVxdWlyZSgnLi9fYmFzZVNldCcpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaCBpc1xuICogaW52b2tlZCB0byBwcm9kdWNlIHRoZSBvYmplY3RzIG9mIGBwYXRoYC4gIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgXG4gKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAobnNWYWx1ZSwga2V5LCBuc09iamVjdCkuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0ge307XG4gKlxuICogXy5zZXRXaXRoKG9iamVjdCwgJ1swXVsxXScsICdhJywgT2JqZWN0KTtcbiAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICovXG5mdW5jdGlvbiBzZXRXaXRoKG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFdpdGg7XG4iLCJpbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoL3NldCc7XG5pbXBvcnQgc2V0V2l0aCBmcm9tICdsb2Rhc2gvc2V0V2l0aCc7XG5pbXBvcnQgeyBFUlJPUlNfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqIFRoZSBgRXJyb3JTY2hlbWFCdWlsZGVyPFQ+YCBpcyB1c2VkIHRvIGJ1aWxkIGFuIGBFcnJvclNjaGVtYTxUPmAgc2luY2UgdGhlIGRlZmluaXRpb24gb2YgdGhlIGBFcnJvclNjaGVtYWAgdHlwZSBpc1xuICogZGVzaWduZWQgZm9yIHJlYWRpbmcgaW5mb3JtYXRpb24gcmF0aGVyIHRoYW4gd3JpdGluZyBpdC4gVXNlIHRoaXMgY2xhc3MgdG8gYWRkLCByZXBsYWNlIG9yIGNsZWFyIGVycm9ycyBpbiBhbiBlcnJvclxuICogc2NoZW1hIGJ5IHVzaW5nIGVpdGhlciBkb3R0ZWQgcGF0aCBvciBhbiBhcnJheSBvZiBwYXRoIG5hbWVzLiBPbmNlIHlvdSBhcmUgZG9uZSBidWlsZGluZyB0aGUgYEVycm9yU2NoZW1hYCwgeW91IGNhblxuICogZ2V0IHRoZSByZXN1bHQgYW5kL29yIHJlc2V0IGFsbCB0aGUgZXJyb3JzIGJhY2sgdG8gYW4gaW5pdGlhbCBzZXQgYW5kIHN0YXJ0IGFnYWluLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcnJvclNjaGVtYUJ1aWxkZXIge1xuICAgIC8qKiBDb25zdHJ1Y3QgYW4gYEVycm9yU2NoZW1hQnVpbGRlcmAgd2l0aCBhbiBvcHRpb25hbCBpbml0aWFsIHNldCBvZiBlcnJvcnMgaW4gYW4gYEVycm9yU2NoZW1hYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBbaW5pdGlhbFNjaGVtYV0gLSBUaGUgb3B0aW9uYWwgc2V0IG9mIGluaXRpYWwgZXJyb3JzLCB0aGF0IHdpbGwgYmUgY2xvbmVkIGludG8gdGhlIGNsYXNzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoaW5pdGlhbFNjaGVtYSkge1xuICAgICAgICAvKiogVGhlIGVycm9yIHNjaGVtYSBiZWluZyBidWlsdFxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5lcnJvclNjaGVtYSA9IHt9O1xuICAgICAgICB0aGlzLnJlc2V0QWxsRXJyb3JzKGluaXRpYWxTY2hlbWEpO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgYEVycm9yU2NoZW1hYCB0aGF0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIG1ldGhvZHMgb2YgdGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgXG4gICAgICovXG4gICAgZ2V0IEVycm9yU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclNjaGVtYTtcbiAgICB9XG4gICAgLyoqIFdpbGwgZ2V0IGFuIGV4aXN0aW5nIGBFcnJvclNjaGVtYWAgYXQgdGhlIHNwZWNpZmllZCBgcGF0aE9mRXJyb3JgIG9yIGNyZWF0ZSBhbmQgcmV0dXJuIG9uZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBbcGF0aE9mRXJyb3JdIC0gVGhlIG9wdGlvbmFsIHBhdGggaW50byB0aGUgYEVycm9yU2NoZW1hYCBhdCB3aGljaCB0byBhZGQgdGhlIGVycm9yKHMpXG4gICAgICogQHJldHVybnMgLSBUaGUgZXJyb3IgYmxvY2sgZm9yIHRoZSBnaXZlbiBgcGF0aE9mRXJyb3JgIG9yIHRoZSByb290IGlmIG5vdCBwcm92aWRlZFxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgZ2V0T3JDcmVhdGVFcnJvckJsb2NrKHBhdGhPZkVycm9yKSB7XG4gICAgICAgIGNvbnN0IGhhc1BhdGggPSAoQXJyYXkuaXNBcnJheShwYXRoT2ZFcnJvcikgJiYgcGF0aE9mRXJyb3IubGVuZ3RoID4gMCkgfHwgdHlwZW9mIHBhdGhPZkVycm9yID09PSAnc3RyaW5nJztcbiAgICAgICAgbGV0IGVycm9yQmxvY2sgPSBoYXNQYXRoID8gZ2V0KHRoaXMuZXJyb3JTY2hlbWEsIHBhdGhPZkVycm9yKSA6IHRoaXMuZXJyb3JTY2hlbWE7XG4gICAgICAgIGlmICghZXJyb3JCbG9jayAmJiBwYXRoT2ZFcnJvcikge1xuICAgICAgICAgICAgZXJyb3JCbG9jayA9IHt9O1xuICAgICAgICAgICAgc2V0V2l0aCh0aGlzLmVycm9yU2NoZW1hLCBwYXRoT2ZFcnJvciwgZXJyb3JCbG9jaywgT2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXJyb3JCbG9jaztcbiAgICB9XG4gICAgLyoqIFJlc2V0cyBhbGwgZXJyb3JzIGluIHRoZSBgRXJyb3JTY2hlbWFCdWlsZGVyYCBiYWNrIHRvIHRoZSBgaW5pdGlhbFNjaGVtYWAgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSBhbiBlbXB0eSBzZXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gW2luaXRpYWxTY2hlbWFdIC0gVGhlIG9wdGlvbmFsIHNldCBvZiBpbml0aWFsIGVycm9ycywgdGhhdCB3aWxsIGJlIGNsb25lZCBpbnRvIHRoZSBjbGFzc1xuICAgICAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgIG9iamVjdCBmb3IgY2hhaW5pbmcgcHVycG9zZXNcbiAgICAgKi9cbiAgICByZXNldEFsbEVycm9ycyhpbml0aWFsU2NoZW1hKSB7XG4gICAgICAgIHRoaXMuZXJyb3JTY2hlbWEgPSBpbml0aWFsU2NoZW1hID8gY2xvbmVEZWVwKGluaXRpYWxTY2hlbWEpIDoge307XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKiogQWRkcyB0aGUgYGVycm9yT3JMaXN0YCB0byB0aGUgbGlzdCBvZiBlcnJvcnMgaW4gdGhlIGBFcnJvclNjaGVtYWAgYXQgZWl0aGVyIHRoZSByb290IGxldmVsIG9yIHRoZSBsb2NhdGlvbiB3aXRoaW5cbiAgICAgKiB0aGUgc2NoZW1hIGRlc2NyaWJlZCBieSB0aGUgYHBhdGhPZkVycm9yYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIHNwZWNpZnkgdGhlIHBhdGggc2VlIHRoZVxuICAgICAqIFtlc2xpbnQgbG9kYXNoIHBsdWdpbiBkb2NzXShodHRwczovL2dpdGh1Yi5jb20vd2l4L2VzbGludC1wbHVnaW4tbG9kYXNoL2Jsb2IvbWFzdGVyL2RvY3MvcnVsZXMvcGF0aC1zdHlsZS5tZCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXJyb3JPckxpc3QgLSBUaGUgZXJyb3Igb3IgbGlzdCBvZiBlcnJvcnMgdG8gYWRkIGludG8gdGhlIGBFcnJvclNjaGVtYWBcbiAgICAgKiBAcGFyYW0gW3BhdGhPZkVycm9yXSAtIFRoZSBvcHRpb25hbCBwYXRoIGludG8gdGhlIGBFcnJvclNjaGVtYWAgYXQgd2hpY2ggdG8gYWRkIHRoZSBlcnJvcihzKVxuICAgICAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgIG9iamVjdCBmb3IgY2hhaW5pbmcgcHVycG9zZXNcbiAgICAgKi9cbiAgICBhZGRFcnJvcnMoZXJyb3JPckxpc3QsIHBhdGhPZkVycm9yKSB7XG4gICAgICAgIGNvbnN0IGVycm9yQmxvY2sgPSB0aGlzLmdldE9yQ3JlYXRlRXJyb3JCbG9jayhwYXRoT2ZFcnJvcik7XG4gICAgICAgIGxldCBlcnJvcnNMaXN0ID0gZ2V0KGVycm9yQmxvY2ssIEVSUk9SU19LRVkpO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXJyb3JzTGlzdCkpIHtcbiAgICAgICAgICAgIGVycm9yc0xpc3QgPSBbXTtcbiAgICAgICAgICAgIGVycm9yQmxvY2tbRVJST1JTX0tFWV0gPSBlcnJvcnNMaXN0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yT3JMaXN0KSkge1xuICAgICAgICAgICAgc2V0KGVycm9yQmxvY2ssIEVSUk9SU19LRVksIFsuLi5uZXcgU2V0KFsuLi5lcnJvcnNMaXN0LCAuLi5lcnJvck9yTGlzdF0pXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXQoZXJyb3JCbG9jaywgRVJST1JTX0tFWSwgWy4uLm5ldyBTZXQoWy4uLmVycm9yc0xpc3QsIGVycm9yT3JMaXN0XSldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqIFNldHMvcmVwbGFjZXMgdGhlIGBlcnJvck9yTGlzdGAgYXMgdGhlIGVycm9yKHMpIGluIHRoZSBgRXJyb3JTY2hlbWFgIGF0IGVpdGhlciB0aGUgcm9vdCBsZXZlbCBvciB0aGUgbG9jYXRpb25cbiAgICAgKiB3aXRoaW4gdGhlIHNjaGVtYSBkZXNjcmliZWQgYnkgdGhlIGBwYXRoT2ZFcnJvcmAuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBzcGVjaWZ5IHRoZSBwYXRoIHNlZSB0aGVcbiAgICAgKiBbZXNsaW50IGxvZGFzaCBwbHVnaW4gZG9jc10oaHR0cHM6Ly9naXRodWIuY29tL3dpeC9lc2xpbnQtcGx1Z2luLWxvZGFzaC9ibG9iL21hc3Rlci9kb2NzL3J1bGVzL3BhdGgtc3R5bGUubWQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGVycm9yT3JMaXN0IC0gVGhlIGVycm9yIG9yIGxpc3Qgb2YgZXJyb3JzIHRvIHNldCBpbnRvIHRoZSBgRXJyb3JTY2hlbWFgXG4gICAgICogQHBhcmFtIFtwYXRoT2ZFcnJvcl0gLSBUaGUgb3B0aW9uYWwgcGF0aCBpbnRvIHRoZSBgRXJyb3JTY2hlbWFgIGF0IHdoaWNoIHRvIHNldCB0aGUgZXJyb3IocylcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBgRXJyb3JTY2hlbWFCdWlsZGVyYCBvYmplY3QgZm9yIGNoYWluaW5nIHB1cnBvc2VzXG4gICAgICovXG4gICAgc2V0RXJyb3JzKGVycm9yT3JMaXN0LCBwYXRoT2ZFcnJvcikge1xuICAgICAgICBjb25zdCBlcnJvckJsb2NrID0gdGhpcy5nZXRPckNyZWF0ZUVycm9yQmxvY2socGF0aE9mRXJyb3IpO1xuICAgICAgICAvLyBFZmZlY3RpdmVseSBjbG9uZSB0aGUgYXJyYXkgYmVpbmcgZ2l2ZW4gdG8gcHJldmVudCBhY2NpZGVudGFsIG91dHNpZGUgbWFuaXB1bGF0aW9uIG9mIHRoZSBnaXZlbiBsaXN0XG4gICAgICAgIGNvbnN0IGxpc3RUb0FkZCA9IEFycmF5LmlzQXJyYXkoZXJyb3JPckxpc3QpID8gWy4uLm5ldyBTZXQoWy4uLmVycm9yT3JMaXN0XSldIDogW2Vycm9yT3JMaXN0XTtcbiAgICAgICAgc2V0KGVycm9yQmxvY2ssIEVSUk9SU19LRVksIGxpc3RUb0FkZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKiogQ2xlYXJzIHRoZSBlcnJvcihzKSBpbiB0aGUgYEVycm9yU2NoZW1hYCBhdCBlaXRoZXIgdGhlIHJvb3QgbGV2ZWwgb3IgdGhlIGxvY2F0aW9uIHdpdGhpbiB0aGUgc2NoZW1hIGRlc2NyaWJlZCBieVxuICAgICAqIHRoZSBgcGF0aE9mRXJyb3JgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gc3BlY2lmeSB0aGUgcGF0aCBzZWUgdGhlXG4gICAgICogW2VzbGludCBsb2Rhc2ggcGx1Z2luIGRvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS93aXgvZXNsaW50LXBsdWdpbi1sb2Rhc2gvYmxvYi9tYXN0ZXIvZG9jcy9ydWxlcy9wYXRoLXN0eWxlLm1kKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBbcGF0aE9mRXJyb3JdIC0gVGhlIG9wdGlvbmFsIHBhdGggaW50byB0aGUgYEVycm9yU2NoZW1hYCBhdCB3aGljaCB0byBjbGVhciB0aGUgZXJyb3IocylcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBgRXJyb3JTY2hlbWFCdWlsZGVyYCBvYmplY3QgZm9yIGNoYWluaW5nIHB1cnBvc2VzXG4gICAgICovXG4gICAgY2xlYXJFcnJvcnMocGF0aE9mRXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JCbG9jayA9IHRoaXMuZ2V0T3JDcmVhdGVFcnJvckJsb2NrKHBhdGhPZkVycm9yKTtcbiAgICAgICAgc2V0KGVycm9yQmxvY2ssIEVSUk9SU19LRVksIFtdKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXJyb3JTY2hlbWFCdWlsZGVyLmpzLm1hcCIsIi8qKiBHaXZlbiBkYXRlICYgdGltZSBpbmZvcm1hdGlvbiB3aXRoIG9wdGlvbmFsIHllYXJSYW5nZSAmIGZvcm1hdCwgcmV0dXJucyBwcm9wcyBmb3IgRGF0ZUVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIE9iamVjdCBjb250YWluaW5nIGRhdGUgd2l0aCBvcHRpb25hbCB0aW1lIGluZm9ybWF0aW9uXG4gKiBAcGFyYW0gdGltZSAtIERldGVybWluZXMgd2hldGhlciB0byBpbmNsdWRlIHRpbWUgb3Igbm90XG4gKiBAcGFyYW0gW3llYXJSYW5nZT1bMTkwMCwgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgMl1dIC0gQ29udHJvbHMgdGhlIGxpc3Qgb2YgeWVhcnMgdG8gYmUgZGlzcGxheWVkXG4gKiBAcGFyYW0gW2Zvcm1hdD0nWU1EJ10gLSBDb250cm9scyB0aGUgb3JkZXIgaW4gd2hpY2ggZGF5LCBtb250aCBhbmQgeWVhciBpbnB1dCBlbGVtZW50IHdpbGwgYmUgZGlzcGxheWVkXG4gKiBAcmV0dXJucyBBcnJheSBvZiBwcm9wcyBmb3IgRGF0ZUVsZW1lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGF0ZUVsZW1lbnRQcm9wcyhkYXRlLCB0aW1lLCB5ZWFyUmFuZ2UgPSBbMTkwMCwgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgMl0sIGZvcm1hdCA9ICdZTUQnKSB7XG4gICAgY29uc3QgeyBkYXksIG1vbnRoLCB5ZWFyLCBob3VyLCBtaW51dGUsIHNlY29uZCB9ID0gZGF0ZTtcbiAgICBjb25zdCBkYXlPYmogPSB7IHR5cGU6ICdkYXknLCByYW5nZTogWzEsIDMxXSwgdmFsdWU6IGRheSB9O1xuICAgIGNvbnN0IG1vbnRoT2JqID0geyB0eXBlOiAnbW9udGgnLCByYW5nZTogWzEsIDEyXSwgdmFsdWU6IG1vbnRoIH07XG4gICAgY29uc3QgeWVhck9iaiA9IHsgdHlwZTogJ3llYXInLCByYW5nZTogeWVhclJhbmdlLCB2YWx1ZTogeWVhciB9O1xuICAgIGNvbnN0IGRhdGVFbGVtZW50UHJvcCA9IFtdO1xuICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICAgIGNhc2UgJ01EWSc6XG4gICAgICAgICAgICBkYXRlRWxlbWVudFByb3AucHVzaChtb250aE9iaiwgZGF5T2JqLCB5ZWFyT2JqKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdETVknOlxuICAgICAgICAgICAgZGF0ZUVsZW1lbnRQcm9wLnB1c2goZGF5T2JqLCBtb250aE9iaiwgeWVhck9iaik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnWU1EJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGRhdGVFbGVtZW50UHJvcC5wdXNoKHllYXJPYmosIG1vbnRoT2JqLCBkYXlPYmopO1xuICAgIH1cbiAgICBpZiAodGltZSkge1xuICAgICAgICBkYXRlRWxlbWVudFByb3AucHVzaCh7IHR5cGU6ICdob3VyJywgcmFuZ2U6IFswLCAyM10sIHZhbHVlOiBob3VyIH0sIHsgdHlwZTogJ21pbnV0ZScsIHJhbmdlOiBbMCwgNTldLCB2YWx1ZTogbWludXRlIH0sIHsgdHlwZTogJ3NlY29uZCcsIHJhbmdlOiBbMCwgNTldLCB2YWx1ZTogc2Vjb25kIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZUVsZW1lbnRQcm9wO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0RGF0ZUVsZW1lbnRQcm9wcy5qcy5tYXAiLCIvKiogRXh0cmFjdHMgdGhlIHJhbmdlIHNwZWMgaW5mb3JtYXRpb24gYHsgc3RlcD86IG51bWJlciwgbWluPzogbnVtYmVyLCBtYXg/OiBudW1iZXIgfWAgdGhhdCBjYW4gYmUgc3ByZWFkIG9udG8gYW4gSFRNTFxuICogaW5wdXQgZnJvbSB0aGUgcmFuZ2UgYW5hbG9nIGluIHRoZSBzY2hlbWEgYHsgbXVsdGlwbGVPZj86IG51bWJlciwgbWluaW11bT86IG51bWJlciwgbWF4aW11bT86IG51bWJlciB9YC5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIHJhbmdlIHNwZWNcbiAqIEByZXR1cm5zIC0gQSByYW5nZSBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIHNjaGVtYVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByYW5nZVNwZWMoc2NoZW1hKSB7XG4gICAgY29uc3Qgc3BlYyA9IHt9O1xuICAgIGlmIChzY2hlbWEubXVsdGlwbGVPZikge1xuICAgICAgICBzcGVjLnN0ZXAgPSBzY2hlbWEubXVsdGlwbGVPZjtcbiAgICB9XG4gICAgaWYgKHNjaGVtYS5taW5pbXVtIHx8IHNjaGVtYS5taW5pbXVtID09PSAwKSB7XG4gICAgICAgIHNwZWMubWluID0gc2NoZW1hLm1pbmltdW07XG4gICAgfVxuICAgIGlmIChzY2hlbWEubWF4aW11bSB8fCBzY2hlbWEubWF4aW11bSA9PT0gMCkge1xuICAgICAgICBzcGVjLm1heCA9IHNjaGVtYS5tYXhpbXVtO1xuICAgIH1cbiAgICByZXR1cm4gc3BlYztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJhbmdlU3BlYy5qcy5tYXAiLCJpbXBvcnQgcmFuZ2VTcGVjIGZyb20gJy4vcmFuZ2VTcGVjJztcbi8qKiBVc2luZyB0aGUgYHNjaGVtYWAsIGBkZWZhdWx0VHlwZWAgYW5kIGBvcHRpb25zYCwgZXh0cmFjdCBvdXQgdGhlIHByb3BzIGZvciB0aGUgPGlucHV0PiBlbGVtZW50IHRoYXQgbWFrZSBzZW5zZS5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3IgdGhlIGZpZWxkIHByb3ZpZGVkIGJ5IHRoZSB3aWRnZXRcbiAqIEBwYXJhbSBbZGVmYXVsdFR5cGVdIC0gVGhlIGRlZmF1bHQgdHlwZSwgaWYgYW55LCBmb3IgdGhlIGZpZWxkIHByb3ZpZGVkIGJ5IHRoZSB3aWRnZXRcbiAqIEBwYXJhbSBbb3B0aW9ucz17fV0gLSBUaGUgVUkgT3B0aW9ucyBmb3IgdGhlIGZpZWxkIHByb3ZpZGVkIGJ5IHRoZSB3aWRnZXRcbiAqIEBwYXJhbSBbYXV0b0RlZmF1bHRTdGVwQW55PXRydWVdIC0gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGF1dG8tZGVmYXVsdCBzdGVwPWFueSB3aGVuIHRoZSB0eXBlIGlzIG51bWJlciBhbmQgbm8gc3RlcFxuICogQHJldHVybnMgLSBUaGUgZXh0cmFjdGVkIGBJbnB1dFByb3BzVHlwZWAgb2JqZWN0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldElucHV0UHJvcHMoc2NoZW1hLCBkZWZhdWx0VHlwZSwgb3B0aW9ucyA9IHt9LCBhdXRvRGVmYXVsdFN0ZXBBbnkgPSB0cnVlKSB7XG4gICAgY29uc3QgaW5wdXRQcm9wcyA9IHtcbiAgICAgICAgdHlwZTogZGVmYXVsdFR5cGUgfHwgJ3RleHQnLFxuICAgICAgICAuLi5yYW5nZVNwZWMoc2NoZW1hKSxcbiAgICB9O1xuICAgIC8vIElmIG9wdGlvbnMuaW5wdXRUeXBlIGlzIHNldCB1c2UgdGhhdCBhcyB0aGUgaW5wdXQgdHlwZVxuICAgIGlmIChvcHRpb25zLmlucHV0VHlwZSkge1xuICAgICAgICBpbnB1dFByb3BzLnR5cGUgPSBvcHRpb25zLmlucHV0VHlwZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIWRlZmF1bHRUeXBlKSB7XG4gICAgICAgIC8vIElmIHRoZSBzY2hlbWEgaXMgb2YgdHlwZSBudW1iZXIgb3IgaW50ZWdlciwgc2V0IHRoZSBpbnB1dCB0eXBlIHRvIG51bWJlclxuICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBpbnB1dFByb3BzLnR5cGUgPSAnbnVtYmVyJztcbiAgICAgICAgICAgIC8vIE9ubHkgYWRkIHN0ZXAgaWYgb25lIGlzbid0IGFscmVhZHkgZGVmaW5lZCBhbmQgd2UgYXJlIGF1dG8tZGVmYXVsdGluZyB0aGUgXCJhbnlcIiBzdGVwXG4gICAgICAgICAgICBpZiAoYXV0b0RlZmF1bHRTdGVwQW55ICYmIGlucHV0UHJvcHMuc3RlcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gU2V0dGluZyBzdGVwIHRvICdhbnknIGZpeGVzIGEgYnVnIGluIFNhZmFyaSB3aGVyZSBkZWNpbWFscyBhcmUgbm90XG4gICAgICAgICAgICAgICAgLy8gYWxsb3dlZCBpbiBudW1iZXIgaW5wdXRzXG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcy5zdGVwID0gJ2FueSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2NoZW1hLnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgICAgICAgICAgaW5wdXRQcm9wcy50eXBlID0gJ251bWJlcic7XG4gICAgICAgICAgICAvLyBPbmx5IGFkZCBzdGVwIGlmIG9uZSBpc24ndCBhbHJlYWR5IGRlZmluZWRcbiAgICAgICAgICAgIGlmIChpbnB1dFByb3BzLnN0ZXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgaW50ZWdlciwgeW91IGFsd2F5cyB3YW50IHRvIHN0ZXAgdXAgb3IgZG93biBpbiBtdWx0aXBsZXMgb2YgMVxuICAgICAgICAgICAgICAgIGlucHV0UHJvcHMuc3RlcCA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgIGlucHV0UHJvcHMuYXV0b0NvbXBsZXRlID0gb3B0aW9ucy5hdXRvY29tcGxldGU7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dFByb3BzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0SW5wdXRQcm9wcy5qcy5tYXAiLCJpbXBvcnQgeyBTVUJNSVRfQlROX09QVElPTlNfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IGdldFVpT3B0aW9ucyBmcm9tICcuL2dldFVpT3B0aW9ucyc7XG4vKiogVGhlIGRlZmF1bHQgc3VibWl0IGJ1dHRvbiBvcHRpb25zLCBleHBvcnRlZCBmb3IgdGVzdGluZyBwdXJwb3Nlc1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9PUFRJT05TID0ge1xuICAgIHByb3BzOiB7XG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICB9LFxuICAgIHN1Ym1pdFRleHQ6ICdTdWJtaXQnLFxuICAgIG5vcmVuZGVyOiBmYWxzZSxcbn07XG4vKiogRXh0cmFjdHMgYW55IGB1aTpzdWJtaXRCdXR0b25PcHRpb25zYCBmcm9tIHRoZSBgdWlTY2hlbWFgIGFuZCBtZXJnZXMgdGhlbSBvbnRvIHRoZSBgREVGQVVMVF9PUFRJT05TYFxuICpcbiAqIEBwYXJhbSBbdWlTY2hlbWE9e31dIC0gdGhlIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3Qgc3VibWl0IGJ1dHRvbiBwcm9wc1xuICogQHJldHVybnMgLSBUaGUgbWVyZ2luZyBvZiB0aGUgYERFRkFVTFRfT1BUSU9OU2Agd2l0aCBhbnkgY3VzdG9tIG9uZXNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0U3VibWl0QnV0dG9uT3B0aW9ucyh1aVNjaGVtYSA9IHt9KSB7XG4gICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICBpZiAodWlPcHRpb25zICYmIHVpT3B0aW9uc1tTVUJNSVRfQlROX09QVElPTlNfS0VZXSkge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdWlPcHRpb25zW1NVQk1JVF9CVE5fT1BUSU9OU19LRVldO1xuICAgICAgICByZXR1cm4geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgICB9XG4gICAgcmV0dXJuIERFRkFVTFRfT1BUSU9OUztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldFN1Ym1pdEJ1dHRvbk9wdGlvbnMuanMubWFwIiwiLyoqIFJldHVybnMgdGhlIHRlbXBsYXRlIHdpdGggdGhlIGdpdmVuIGBuYW1lYCBmcm9tIGVpdGhlciB0aGUgYHVpU2NoZW1hYCBpZiBpdCBpcyBkZWZpbmVkIG9yIGZyb20gdGhlIGByZWdpc3RyeWBcbiAqIG90aGVyd2lzZS4gTk9URSwgc2luY2UgYEJ1dHRvblRlbXBsYXRlc2AgYXJlIG5vdCBvdmVycmlkZGVuIGluIGB1aVNjaGVtYWAgb25seSB0aG9zZSBpbiB0aGUgYHJlZ2lzdHJ5YCBhcmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGVtcGxhdGUgdG8gZmV0Y2gsIHJlc3RyaWN0ZWQgdG8gdGhlIGtleXMgb2YgYFRlbXBsYXRlc1R5cGVgXG4gKiBAcGFyYW0gcmVnaXN0cnkgLSBUaGUgYFJlZ2lzdHJ5YCBmcm9tIHdoaWNoIHRvIHJlYWQgdGhlIHRlbXBsYXRlXG4gKiBAcGFyYW0gW3VpT3B0aW9ucz17fV0gLSBUaGUgYFVJT3B0aW9uc1R5cGVgIGZyb20gd2hpY2ggdG8gcmVhZCBhbiBhbHRlcm5hdGUgdGVtcGxhdGVcbiAqIEByZXR1cm5zIC0gVGhlIHRlbXBsYXRlIGZyb20gZWl0aGVyIHRoZSBgdWlTY2hlbWFgIG9yIGByZWdpc3RyeWAgZm9yIHRoZSBgbmFtZWBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VGVtcGxhdGUobmFtZSwgcmVnaXN0cnksIHVpT3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyB0ZW1wbGF0ZXMgfSA9IHJlZ2lzdHJ5O1xuICAgIGlmIChuYW1lID09PSAnQnV0dG9uVGVtcGxhdGVzJykge1xuICAgICAgICByZXR1cm4gdGVtcGxhdGVzW25hbWVdO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgIC8vIEV2YWx1YXRpbmcgdWlPcHRpb25zW25hbWVdIHJlc3VsdHMgaW4gVFMyNTkwOiBFeHByZXNzaW9uIHByb2R1Y2VzIGEgdW5pb24gdHlwZSB0aGF0IGlzIHRvbyBjb21wbGV4IHRvIHJlcHJlc2VudFxuICAgIC8vIFRvIGF2b2lkIHRoYXQsIHdlIGNhc3QgdWlPcHRpb25zIHRvIGBhbnlgIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIG5hbWUgZmllbGRcbiAgICB1aU9wdGlvbnNbbmFtZV0gfHwgdGVtcGxhdGVzW25hbWVdKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldFRlbXBsYXRlLmpzLm1hcCIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgYj1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxjPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIiksZD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksZT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksZj1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksZz1TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIiksaD1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5zZXJ2ZXJfY29udGV4dFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxtPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxuPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLHA9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIikscT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKSx0PVN5bWJvbC5mb3IoXCJyZWFjdC5vZmZzY3JlZW5cIiksdTt1PVN5bWJvbC5mb3IoXCJyZWFjdC5tb2R1bGUucmVmZXJlbmNlXCIpO1xuZnVuY3Rpb24gdihhKXtpZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXt2YXIgcj1hLiQkdHlwZW9mO3N3aXRjaChyKXtjYXNlIGI6c3dpdGNoKGE9YS50eXBlLGEpe2Nhc2UgZDpjYXNlIGY6Y2FzZSBlOmNhc2UgbTpjYXNlIG46cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgazpjYXNlIGg6Y2FzZSBsOmNhc2UgcTpjYXNlIHA6Y2FzZSBnOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHJ9fWNhc2UgYzpyZXR1cm4gcn19fWV4cG9ydHMuQ29udGV4dENvbnN1bWVyPWg7ZXhwb3J0cy5Db250ZXh0UHJvdmlkZXI9ZztleHBvcnRzLkVsZW1lbnQ9YjtleHBvcnRzLkZvcndhcmRSZWY9bDtleHBvcnRzLkZyYWdtZW50PWQ7ZXhwb3J0cy5MYXp5PXE7ZXhwb3J0cy5NZW1vPXA7ZXhwb3J0cy5Qb3J0YWw9YztleHBvcnRzLlByb2ZpbGVyPWY7ZXhwb3J0cy5TdHJpY3RNb2RlPWU7ZXhwb3J0cy5TdXNwZW5zZT1tO1xuZXhwb3J0cy5TdXNwZW5zZUxpc3Q9bjtleHBvcnRzLmlzQXN5bmNNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2V4cG9ydHMuaXNDb25jdXJyZW50TW9kZT1mdW5jdGlvbigpe3JldHVybiExfTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09aH07ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWd9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1ifTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWx9O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWR9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09cX07ZXhwb3J0cy5pc01lbW89ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1wfTtcbmV4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1jfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1mfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWV9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PW19O2V4cG9ydHMuaXNTdXNwZW5zZUxpc3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1ufTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGF8fGE9PT1kfHxhPT09Znx8YT09PWV8fGE9PT1tfHxhPT09bnx8YT09PXR8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09cXx8YS4kJHR5cGVvZj09PXB8fGEuJCR0eXBlb2Y9PT1nfHxhLiQkdHlwZW9mPT09aHx8YS4kJHR5cGVvZj09PWx8fGEuJCR0eXBlb2Y9PT11fHx2b2lkIDAhPT1hLmdldE1vZHVsZUlkKT8hMDohMX07ZXhwb3J0cy50eXBlT2Y9djtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RJcyBmcm9tICdyZWFjdC1pcyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCBnZXRTY2hlbWFUeXBlIGZyb20gJy4vZ2V0U2NoZW1hVHlwZSc7XG4vKiogVGhlIG1hcCBvZiBzY2hlbWEgdHlwZXMgdG8gd2lkZ2V0IHR5cGUgdG8gd2lkZ2V0IG5hbWVcbiAqL1xuY29uc3Qgd2lkZ2V0TWFwID0ge1xuICAgIGJvb2xlYW46IHtcbiAgICAgICAgY2hlY2tib3g6ICdDaGVja2JveFdpZGdldCcsXG4gICAgICAgIHJhZGlvOiAnUmFkaW9XaWRnZXQnLFxuICAgICAgICBzZWxlY3Q6ICdTZWxlY3RXaWRnZXQnLFxuICAgICAgICBoaWRkZW46ICdIaWRkZW5XaWRnZXQnLFxuICAgIH0sXG4gICAgc3RyaW5nOiB7XG4gICAgICAgIHRleHQ6ICdUZXh0V2lkZ2V0JyxcbiAgICAgICAgcGFzc3dvcmQ6ICdQYXNzd29yZFdpZGdldCcsXG4gICAgICAgIGVtYWlsOiAnRW1haWxXaWRnZXQnLFxuICAgICAgICBob3N0bmFtZTogJ1RleHRXaWRnZXQnLFxuICAgICAgICBpcHY0OiAnVGV4dFdpZGdldCcsXG4gICAgICAgIGlwdjY6ICdUZXh0V2lkZ2V0JyxcbiAgICAgICAgdXJpOiAnVVJMV2lkZ2V0JyxcbiAgICAgICAgJ2RhdGEtdXJsJzogJ0ZpbGVXaWRnZXQnLFxuICAgICAgICByYWRpbzogJ1JhZGlvV2lkZ2V0JyxcbiAgICAgICAgc2VsZWN0OiAnU2VsZWN0V2lkZ2V0JyxcbiAgICAgICAgdGV4dGFyZWE6ICdUZXh0YXJlYVdpZGdldCcsXG4gICAgICAgIGhpZGRlbjogJ0hpZGRlbldpZGdldCcsXG4gICAgICAgIGRhdGU6ICdEYXRlV2lkZ2V0JyxcbiAgICAgICAgZGF0ZXRpbWU6ICdEYXRlVGltZVdpZGdldCcsXG4gICAgICAgICdkYXRlLXRpbWUnOiAnRGF0ZVRpbWVXaWRnZXQnLFxuICAgICAgICAnYWx0LWRhdGUnOiAnQWx0RGF0ZVdpZGdldCcsXG4gICAgICAgICdhbHQtZGF0ZXRpbWUnOiAnQWx0RGF0ZVRpbWVXaWRnZXQnLFxuICAgICAgICB0aW1lOiAnVGltZVdpZGdldCcsXG4gICAgICAgIGNvbG9yOiAnQ29sb3JXaWRnZXQnLFxuICAgICAgICBmaWxlOiAnRmlsZVdpZGdldCcsXG4gICAgfSxcbiAgICBudW1iZXI6IHtcbiAgICAgICAgdGV4dDogJ1RleHRXaWRnZXQnLFxuICAgICAgICBzZWxlY3Q6ICdTZWxlY3RXaWRnZXQnLFxuICAgICAgICB1cGRvd246ICdVcERvd25XaWRnZXQnLFxuICAgICAgICByYW5nZTogJ1JhbmdlV2lkZ2V0JyxcbiAgICAgICAgcmFkaW86ICdSYWRpb1dpZGdldCcsXG4gICAgICAgIGhpZGRlbjogJ0hpZGRlbldpZGdldCcsXG4gICAgfSxcbiAgICBpbnRlZ2VyOiB7XG4gICAgICAgIHRleHQ6ICdUZXh0V2lkZ2V0JyxcbiAgICAgICAgc2VsZWN0OiAnU2VsZWN0V2lkZ2V0JyxcbiAgICAgICAgdXBkb3duOiAnVXBEb3duV2lkZ2V0JyxcbiAgICAgICAgcmFuZ2U6ICdSYW5nZVdpZGdldCcsXG4gICAgICAgIHJhZGlvOiAnUmFkaW9XaWRnZXQnLFxuICAgICAgICBoaWRkZW46ICdIaWRkZW5XaWRnZXQnLFxuICAgIH0sXG4gICAgYXJyYXk6IHtcbiAgICAgICAgc2VsZWN0OiAnU2VsZWN0V2lkZ2V0JyxcbiAgICAgICAgY2hlY2tib3hlczogJ0NoZWNrYm94ZXNXaWRnZXQnLFxuICAgICAgICBmaWxlczogJ0ZpbGVXaWRnZXQnLFxuICAgICAgICBoaWRkZW46ICdIaWRkZW5XaWRnZXQnLFxuICAgIH0sXG59O1xuLyoqIFdyYXBzIHRoZSBnaXZlbiB3aWRnZXQgd2l0aCBzdGF0ZWxlc3MgZnVuY3Rpb25hbCBjb21wb25lbnQgdGhhdCB3aWxsIG1lcmdlIGFueSBgZGVmYXVsdFByb3BzLm9wdGlvbnNgIHdpdGggdGhlXG4gKiBgb3B0aW9uc2AgdGhhdCBhcmUgcHJvdmlkZWQgaW4gdGhlIHByb3BzLiBJdCB3aWxsIGFkZCB0aGUgd3JhcHBlciBjb21wb25lbnQgYXMgYSBgTWVyZ2VkV2lkZ2V0YCBwcm9wZXJ0eSBvbnRvIHRoZVxuICogYFdpZGdldGAgc28gdGhhdCBmdXR1cmUgYXR0ZW1wdHMgdG8gd3JhcCBgQVdpZGdldGAgd2lsbCByZXR1cm4gdGhlIGFscmVhZHkgZXhpc3Rpbmcgd3JhcHBlci5cbiAqXG4gKiBAcGFyYW0gQVdpZGdldCAtIEEgd2lkZ2V0IHRoYXQgd2lsbCBiZSB3cmFwcGVkIG9yIG9uZSB0aGF0IGlzIGFscmVhZHkgd3JhcHBlZFxuICogQHJldHVybnMgLSBUaGUgd3JhcHBlciB3aWRnZXRcbiAqL1xuZnVuY3Rpb24gbWVyZ2VXaWRnZXRPcHRpb25zKEFXaWRnZXQpIHtcbiAgICBsZXQgTWVyZ2VkV2lkZ2V0ID0gZ2V0KEFXaWRnZXQsICdNZXJnZWRXaWRnZXQnKTtcbiAgICAvLyBjYWNoZSByZXR1cm4gdmFsdWUgYXMgcHJvcGVydHkgb2Ygd2lkZ2V0IGZvciBwcm9wZXIgcmVhY3QgcmVjb25jaWxpYXRpb25cbiAgICBpZiAoIU1lcmdlZFdpZGdldCkge1xuICAgICAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IChBV2lkZ2V0LmRlZmF1bHRQcm9wcyAmJiBBV2lkZ2V0LmRlZmF1bHRQcm9wcy5vcHRpb25zKSB8fCB7fTtcbiAgICAgICAgTWVyZ2VkV2lkZ2V0ID0gKHsgb3B0aW9ucywgLi4ucHJvcHMgfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIF9qc3goQVdpZGdldCwgeyBvcHRpb25zOiB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH0sIC4uLnByb3BzIH0pO1xuICAgICAgICB9O1xuICAgICAgICBzZXQoQVdpZGdldCwgJ01lcmdlZFdpZGdldCcsIE1lcmdlZFdpZGdldCk7XG4gICAgfVxuICAgIHJldHVybiBNZXJnZWRXaWRnZXQ7XG59XG4vKiogR2l2ZW4gYSBzY2hlbWEgcmVwcmVzZW50aW5nIGEgZmllbGQgdG8gcmVuZGVyIGFuZCBlaXRoZXIgdGhlIG5hbWUgb3IgYWN0dWFsIGBXaWRnZXRgIGltcGxlbWVudGF0aW9uLCByZXR1cm5zIHRoZVxuICogUmVhY3QgY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byByZW5kZXIgdGhlIHdpZGdldC4gSWYgdGhlIGB3aWRnZXRgIGlzIGFscmVhZHkgYSBSZWFjdCBjb21wb25lbnQsIHRoZW4gaXQgaXMgd3JhcHBlZFxuICogd2l0aCBhIGBNZXJnZWRXaWRnZXRgLiBPdGhlcndpc2UgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGxvb2sgdXAgdGhlIHdpZGdldCBpbnNpZGUgb2YgdGhlIGByZWdpc3RlcmVkV2lkZ2V0c2AgbWFwIGJhc2VkXG4gKiBvbiB0aGUgc2NoZW1hIHR5cGUgYW5kIGB3aWRnZXRgIG5hbWUuIElmIG5vIHdpZGdldCBjb21wb25lbnQgY2FuIGJlIGZvdW5kIGFuIGBFcnJvcmAgaXMgdGhyb3duLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB0aGUgZmllbGRcbiAqIEBwYXJhbSBbd2lkZ2V0XSAtIEVpdGhlciB0aGUgbmFtZSBvZiB0aGUgd2lkZ2V0IE9SIGEgYFdpZGdldGAgaW1wbGVtZW50YXRpb24gdG8gdXNlXG4gKiBAcGFyYW0gW3JlZ2lzdGVyZWRXaWRnZXRzPXt9XSAtIEEgcmVnaXN0cnkgb2Ygd2lkZ2V0IG5hbWUgdG8gYFdpZGdldGAgaW1wbGVtZW50YXRpb25cbiAqIEByZXR1cm5zIC0gVGhlIGBXaWRnZXRgIGNvbXBvbmVudCB0byB1c2VcbiAqIEB0aHJvd3MgLSBBbiBlcnJvciBpZiB0aGVyZSBpcyBubyBgV2lkZ2V0YCBjb21wb25lbnQgdGhhdCBjYW4gYmUgcmV0dXJuZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCByZWdpc3RlcmVkV2lkZ2V0cyA9IHt9KSB7XG4gICAgY29uc3QgdHlwZSA9IGdldFNjaGVtYVR5cGUoc2NoZW1hKTtcbiAgICBpZiAodHlwZW9mIHdpZGdldCA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICAod2lkZ2V0ICYmIFJlYWN0SXMuaXNGb3J3YXJkUmVmKGNyZWF0ZUVsZW1lbnQod2lkZ2V0KSkpIHx8XG4gICAgICAgIFJlYWN0SXMuaXNNZW1vKHdpZGdldCkpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlV2lkZ2V0T3B0aW9ucyh3aWRnZXQpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpZGdldCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB3aWRnZXQgZGVmaW5pdGlvbjogJHt0eXBlb2Ygd2lkZ2V0fWApO1xuICAgIH1cbiAgICBpZiAod2lkZ2V0IGluIHJlZ2lzdGVyZWRXaWRnZXRzKSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdGVyZWRXaWRnZXQgPSByZWdpc3RlcmVkV2lkZ2V0c1t3aWRnZXRdO1xuICAgICAgICByZXR1cm4gZ2V0V2lkZ2V0KHNjaGVtYSwgcmVnaXN0ZXJlZFdpZGdldCwgcmVnaXN0ZXJlZFdpZGdldHMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICghKHR5cGUgaW4gd2lkZ2V0TWFwKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyB3aWRnZXQgZm9yIHR5cGUgJyR7dHlwZX0nYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdpZGdldCBpbiB3aWRnZXRNYXBbdHlwZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyZWRXaWRnZXQgPSByZWdpc3RlcmVkV2lkZ2V0c1t3aWRnZXRNYXBbdHlwZV1bd2lkZ2V0XV07XG4gICAgICAgICAgICByZXR1cm4gZ2V0V2lkZ2V0KHNjaGVtYSwgcmVnaXN0ZXJlZFdpZGdldCwgcmVnaXN0ZXJlZFdpZGdldHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgTm8gd2lkZ2V0ICcke3dpZGdldH0nIGZvciB0eXBlICcke3R5cGV9J2ApO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0V2lkZ2V0LmpzLm1hcCIsImltcG9ydCBnZXRXaWRnZXQgZnJvbSAnLi9nZXRXaWRnZXQnO1xuLyoqIERldGVjdHMgd2hldGhlciB0aGUgYHdpZGdldGAgZXhpc3RzIGZvciB0aGUgYHNjaGVtYWAgd2l0aCB0aGUgYXNzb2NpYXRlZCBgcmVnaXN0cnlXaWRnZXRzYCBhbmQgcmV0dXJucyB0cnVlIGlmIGl0XG4gKiBkb2VzLCBvciBmYWxzZSBpZiBpdCBkb2Vzbid0LlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB0aGUgZmllbGRcbiAqIEBwYXJhbSB3aWRnZXQgLSBFaXRoZXIgdGhlIG5hbWUgb2YgdGhlIHdpZGdldCBPUiBhIGBXaWRnZXRgIGltcGxlbWVudGF0aW9uIHRvIHVzZVxuICogQHBhcmFtIFtyZWdpc3RlcmVkV2lkZ2V0cz17fV0gLSBBIHJlZ2lzdHJ5IG9mIHdpZGdldCBuYW1lIHRvIGBXaWRnZXRgIGltcGxlbWVudGF0aW9uXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIHdpZGdldCBleGlzdHMsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYXNXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHJlZ2lzdGVyZWRXaWRnZXRzID0ge30pIHtcbiAgICB0cnkge1xuICAgICAgICBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHJlZ2lzdGVyZWRXaWRnZXRzKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IGU7XG4gICAgICAgIGlmIChlcnIubWVzc2FnZSAmJiAoZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnTm8gd2lkZ2V0JykgfHwgZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnVW5zdXBwb3J0ZWQgd2lkZ2V0JykpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oYXNXaWRnZXQuanMubWFwIiwiaW1wb3J0IGlzU3RyaW5nIGZyb20gJ2xvZGFzaC9pc1N0cmluZyc7XG5pbXBvcnQgeyBJRF9LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogR2VuZXJhdGVzIGEgY29uc2lzdGVudCBgaWRgIHBhdHRlcm4gZm9yIGEgZ2l2ZW4gYGlkYCBhbmQgYSBgc3VmZml4YFxuICpcbiAqIEBwYXJhbSBpZCAtIEVpdGhlciBzaW1wbGUgc3RyaW5nIGlkIG9yIGFuIElkU2NoZW1hIGZyb20gd2hpY2ggdG8gZXh0cmFjdCBpdFxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gYXBwZW5kIHRvIHRoZSBpZFxuICovXG5mdW5jdGlvbiBpZEdlbmVyYXRvcihpZCwgc3VmZml4KSB7XG4gICAgY29uc3QgdGhlSWQgPSBpc1N0cmluZyhpZCkgPyBpZCA6IGlkW0lEX0tFWV07XG4gICAgcmV0dXJuIGAke3RoZUlkfV9fJHtzdWZmaXh9YDtcbn1cbi8qKiBSZXR1cm4gYSBjb25zaXN0ZW50IGBpZGAgZm9yIHRoZSBmaWVsZCBkZXNjcmlwdGlvbiBlbGVtZW50XG4gKlxuICogQHBhcmFtIGlkIC0gRWl0aGVyIHNpbXBsZSBzdHJpbmcgaWQgb3IgYW4gSWRTY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IGl0XG4gKiBAcmV0dXJucyAtIFRoZSBjb25zaXN0ZW50IGlkIGZvciB0aGUgZmllbGQgZGVzY3JpcHRpb24gZWxlbWVudCBmcm9tIHRoZSBnaXZlbiBgaWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNjcmlwdGlvbklkKGlkKSB7XG4gICAgcmV0dXJuIGlkR2VuZXJhdG9yKGlkLCAnZGVzY3JpcHRpb24nKTtcbn1cbi8qKiBSZXR1cm4gYSBjb25zaXN0ZW50IGBpZGAgZm9yIHRoZSBmaWVsZCBlcnJvciBlbGVtZW50XG4gKlxuICogQHBhcmFtIGlkIC0gRWl0aGVyIHNpbXBsZSBzdHJpbmcgaWQgb3IgYW4gSWRTY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IGl0XG4gKiBAcmV0dXJucyAtIFRoZSBjb25zaXN0ZW50IGlkIGZvciB0aGUgZmllbGQgZXJyb3IgZWxlbWVudCBmcm9tIHRoZSBnaXZlbiBgaWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlcnJvcklkKGlkKSB7XG4gICAgcmV0dXJuIGlkR2VuZXJhdG9yKGlkLCAnZXJyb3InKTtcbn1cbi8qKiBSZXR1cm4gYSBjb25zaXN0ZW50IGBpZGAgZm9yIHRoZSBmaWVsZCBleGFtcGxlcyBlbGVtZW50XG4gKlxuICogQHBhcmFtIGlkIC0gRWl0aGVyIHNpbXBsZSBzdHJpbmcgaWQgb3IgYW4gSWRTY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IGl0XG4gKiBAcmV0dXJucyAtIFRoZSBjb25zaXN0ZW50IGlkIGZvciB0aGUgZmllbGQgZXhhbXBsZXMgZWxlbWVudCBmcm9tIHRoZSBnaXZlbiBgaWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGFtcGxlc0lkKGlkKSB7XG4gICAgcmV0dXJuIGlkR2VuZXJhdG9yKGlkLCAnZXhhbXBsZXMnKTtcbn1cbi8qKiBSZXR1cm4gYSBjb25zaXN0ZW50IGBpZGAgZm9yIHRoZSBmaWVsZCBoZWxwIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnNpc3RlbnQgaWQgZm9yIHRoZSBmaWVsZCBoZWxwIGVsZW1lbnQgZnJvbSB0aGUgZ2l2ZW4gYGlkYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGVscElkKGlkKSB7XG4gICAgcmV0dXJuIGlkR2VuZXJhdG9yKGlkLCAnaGVscCcpO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGZpZWxkIHRpdGxlIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnNpc3RlbnQgaWQgZm9yIHRoZSBmaWVsZCB0aXRsZSBlbGVtZW50IGZyb20gdGhlIGdpdmVuIGBpZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpdGxlSWQoaWQpIHtcbiAgICByZXR1cm4gaWRHZW5lcmF0b3IoaWQsICd0aXRsZScpO1xufVxuLyoqIFJldHVybiBhIGxpc3Qgb2YgZWxlbWVudCBpZHMgdGhhdCBjb250YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpZWxkIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXMgdGhlIGFyaWFcbiAqIGRlc2NyaXB0aW9uIG9mIHRoZSBmaWVsZC4gVGhpcyBpcyBjb3JyZWN0bHkgb21pdHRpbmcgYHRpdGxlSWRgIHdoaWNoIHdvdWxkIGJlIFwibGFiZWxpbmdcIiByYXRoZXIgdGhhbiBcImRlc2NyaWJpbmdcIiB0aGVcbiAqIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIGlkIC0gRWl0aGVyIHNpbXBsZSBzdHJpbmcgaWQgb3IgYW4gSWRTY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IGl0XG4gKiBAcGFyYW0gW2luY2x1ZGVFeGFtcGxlcz1mYWxzZV0gLSBPcHRpb25hbCBmbGFnLCBpZiB0cnVlLCB3aWxsIGFkZCB0aGUgYGV4YW1wbGVzSWRgIGludG8gdGhlIGxpc3RcbiAqIEByZXR1cm5zIC0gVGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBsaXN0IG9mIGlkcyBmb3IgdXNlIGluIGFuIGBhcmlhLWRlc2NyaWJlZEJ5YCBhdHRyaWJ1dGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyaWFEZXNjcmliZWRCeUlkcyhpZCwgaW5jbHVkZUV4YW1wbGVzID0gZmFsc2UpIHtcbiAgICBjb25zdCBleGFtcGxlcyA9IGluY2x1ZGVFeGFtcGxlcyA/IGAgJHtleGFtcGxlc0lkKGlkKX1gIDogJyc7XG4gICAgcmV0dXJuIGAke2Vycm9ySWQoaWQpfSAke2Rlc2NyaXB0aW9uSWQoaWQpfSAke2hlbHBJZChpZCl9JHtleGFtcGxlc31gO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGBvcHRpb25JbmRleGBzIG9mIGEgYFJhZGlvYCBvciBgQ2hlY2tib3hlc2Agd2lkZ2V0XG4gKlxuICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50IGZvciB0aGUgb3B0aW9uXG4gKiBAcGFyYW0gb3B0aW9uSW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIG9wdGlvbiBmb3Igd2hpY2ggdGhlIGlkIGlzIGRlc2lyZWRcbiAqIEByZXR1cm5zIC0gQW4gaWQgZm9yIHRoZSBvcHRpb24gaW5kZXggYmFzZWQgb24gdGhlIHBhcmVudCBgaWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25JZChpZCwgb3B0aW9uSW5kZXgpIHtcbiAgICByZXR1cm4gYCR7aWR9LSR7b3B0aW9uSW5kZXh9YDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlkR2VuZXJhdG9ycy5qcy5tYXAiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYWJlbFZhbHVlKGxhYmVsLCBoaWRlTGFiZWwsIGZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGhpZGVMYWJlbCA/IGZhbGxiYWNrIDogbGFiZWw7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1sYWJlbFZhbHVlLmpzLm1hcCIsIi8qKiBDb252ZXJ0cyBhIGxvY2FsIERhdGUgc3RyaW5nIGludG8gYSBVVEMgZGF0ZSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0gZGF0ZVN0cmluZyAtIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBkYXRlIGFzIGFjY2VwdGVkIGJ5IHRoZSBgRGF0ZSgpYCBjb25zdHJ1Y3RvclxuICogQHJldHVybnMgLSBBIFVUQyBkYXRlIHN0cmluZyBpZiBgZGF0ZVN0cmluZ2AgaXMgdHJ1dGh5LCBvdGhlcndpc2UgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvY2FsVG9VVEMoZGF0ZVN0cmluZykge1xuICAgIHJldHVybiBkYXRlU3RyaW5nID8gbmV3IERhdGUoZGF0ZVN0cmluZykudG9KU09OKCkgOiB1bmRlZmluZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1sb2NhbFRvVVRDLmpzLm1hcCIsImltcG9ydCB7IENPTlNUX0tFWSwgRU5VTV9LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogUmV0dXJucyB0aGUgY29uc3RhbnQgdmFsdWUgZnJvbSB0aGUgc2NoZW1hIHdoZW4gaXQgaXMgZWl0aGVyIGEgc2luZ2xlIHZhbHVlIGVudW0gb3IgaGFzIGEgY29uc3Qga2V5LiBPdGhlcndpc2VcbiAqIHRocm93cyBhbiBlcnJvci5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmcm9tIHdoaWNoIHRvIG9idGFpbiB0aGUgY29uc3RhbnQgdmFsdWVcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnN0YW50IHZhbHVlIGZvciB0aGUgc2NoZW1hXG4gKiBAdGhyb3dzIC0gRXJyb3Igd2hlbiB0aGUgc2NoZW1hIGRvZXMgbm90IGhhdmUgYSBjb25zdGFudCB2YWx1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0NvbnN0YW50KHNjaGVtYSkge1xuICAgIGlmIChFTlVNX0tFWSBpbiBzY2hlbWEgJiYgQXJyYXkuaXNBcnJheShzY2hlbWEuZW51bSkgJiYgc2NoZW1hLmVudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWEuZW51bVswXTtcbiAgICB9XG4gICAgaWYgKENPTlNUX0tFWSBpbiBzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYS5jb25zdDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzY2hlbWEgY2Fubm90IGJlIGluZmVycmVkIGFzIGEgY29uc3RhbnQnKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvQ29uc3RhbnQuanMubWFwIiwiaW1wb3J0IHRvQ29uc3RhbnQgZnJvbSAnLi90b0NvbnN0YW50JztcbmltcG9ydCBnZXRVaU9wdGlvbnMgZnJvbSAnLi9nZXRVaU9wdGlvbnMnO1xuLyoqIEdldHMgdGhlIGxpc3Qgb2Ygb3B0aW9ucyBmcm9tIHRoZSBgc2NoZW1hYC4gSWYgdGhlIHNjaGVtYSBoYXMgYW4gZW51bSBsaXN0LCB0aGVuIHRob3NlIGVudW0gdmFsdWVzIGFyZSByZXR1cm5lZC4gVGhlXG4gKiBsYWJlbHMgZm9yIHRoZSBvcHRpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIG5vbi1zdGFuZGFyZCwgUkpTRi1kZXByZWNhdGVkIGBlbnVtTmFtZXNgIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlXG4gKiB0aGUgbGFiZWwgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgYHZhbHVlYC4gSWYgdGhlIHNjaGVtYSBoYXMgYSBgb25lT2ZgIG9yIGBhbnlPZmAsIHRoZW4gdGhlIHZhbHVlIGlzIHRoZSBsaXN0IG9mXG4gKiBgY29uc3RgIHZhbHVlcyBmcm9tIHRoZSBzY2hlbWEgYW5kIHRoZSBsYWJlbCBpcyBlaXRoZXIgdGhlIGBzY2hlbWEudGl0bGVgIG9yIHRoZSB2YWx1ZS4gSWYgYSBgdWlTY2hlbWFgIGlzIHByb3ZpZGVkXG4gKiBhbmQgaXQgaGFzIHRoZSBgdWk6ZW51bU5hbWVzYCBtYXRjaGVkIHdpdGggYGVudW1gIG9yIGl0IGhhcyBhbiBhc3NvY2lhdGVkIGBvbmVPZmAgb3IgYGFueU9mYCB3aXRoIGEgbGlzdCBvZiBvYmplY3RzXG4gKiBjb250YWluaW5nIGB1aTp0aXRsZWAgdGhlbiB0aGUgVUkgc2NoZW1hIHZhbHVlcyB3aWxsIHJlcGxhY2UgdGhlIHZhbHVlcyBmcm9tIHRoZSBzY2hlbWEuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBvcHRpb25zIGxpc3RcbiAqIEBwYXJhbSBbdWlTY2hlbWFdIC0gVGhlIG9wdGlvbmFsIHVpU2NoZW1hIGZyb20gd2hpY2ggdG8gZ2V0IGFsdGVybmF0ZSBsYWJlbHMgZm9yIHRoZSBvcHRpb25zXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgZnJvbSB0aGUgc2NoZW1hXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9wdGlvbnNMaXN0KHNjaGVtYSwgdWlTY2hlbWEpIHtcbiAgICAvLyBUT0RPIGZsaXAgZ2VuZXJpY3MgdG8gbW92ZSBUIGZpcnN0IGluIHY2XG4gICAgY29uc3Qgc2NoZW1hV2l0aEVudW1OYW1lcyA9IHNjaGVtYTtcbiAgICBpZiAoc2NoZW1hLmVudW0pIHtcbiAgICAgICAgbGV0IGVudW1OYW1lcztcbiAgICAgICAgaWYgKHVpU2NoZW1hKSB7XG4gICAgICAgICAgICBjb25zdCB7IGVudW1OYW1lczogdWlFbnVtTmFtZXMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgICAgICAgICBlbnVtTmFtZXMgPSB1aUVudW1OYW1lcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVudW1OYW1lcyAmJiBzY2hlbWFXaXRoRW51bU5hbWVzLmVudW1OYW1lcykge1xuICAgICAgICAgICAgLy8gZW51bU5hbWVzIHdhcyBkZXByZWNhdGVkIGluIHY1IGFuZCBpcyBpbnRlbnRpb25hbGx5IG9taXR0ZWQgZnJvbSB0aGUgUkpTRlNjaGVtYSB0eXBlLlxuICAgICAgICAgICAgLy8gQ2FzdCB0aGUgdHlwZSB0byBpbmNsdWRlIGVudW1OYW1lcyBzbyB0aGUgZmVhdHVyZSBzdGlsbCB3b3Jrcy5cbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdUaGUgXCJlbnVtTmFtZXNcIiBwcm9wZXJ0eSBpbiB0aGUgc2NoZW1hIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciByZWxlYXNlLiBVc2UgdGhlIFwidWk6ZW51bU5hbWVzXCIgcHJvcGVydHkgaW4gdGhlIHVpU2NoZW1hIGluc3RlYWQuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbnVtTmFtZXMgPSBzY2hlbWFXaXRoRW51bU5hbWVzLmVudW1OYW1lcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NoZW1hLmVudW0ubWFwKCh2YWx1ZSwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFiZWwgPSAoZW51bU5hbWVzID09PSBudWxsIHx8IGVudW1OYW1lcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW51bU5hbWVzW2ldKSB8fCBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWwsIHZhbHVlIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsZXQgYWx0U2NoZW1hcyA9IHVuZGVmaW5lZDtcbiAgICBsZXQgYWx0VWlTY2hlbWFzID0gdW5kZWZpbmVkO1xuICAgIGlmIChzY2hlbWEuYW55T2YpIHtcbiAgICAgICAgYWx0U2NoZW1hcyA9IHNjaGVtYS5hbnlPZjtcbiAgICAgICAgYWx0VWlTY2hlbWFzID0gdWlTY2hlbWEgPT09IG51bGwgfHwgdWlTY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVpU2NoZW1hLmFueU9mO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEub25lT2YpIHtcbiAgICAgICAgYWx0U2NoZW1hcyA9IHNjaGVtYS5vbmVPZjtcbiAgICAgICAgYWx0VWlTY2hlbWFzID0gdWlTY2hlbWEgPT09IG51bGwgfHwgdWlTY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVpU2NoZW1hLm9uZU9mO1xuICAgIH1cbiAgICByZXR1cm4gKGFsdFNjaGVtYXMgJiZcbiAgICAgICAgYWx0U2NoZW1hcy5tYXAoKGFTY2hlbWFEZWYsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHRpdGxlIH0gPSBnZXRVaU9wdGlvbnMoYWx0VWlTY2hlbWFzID09PSBudWxsIHx8IGFsdFVpU2NoZW1hcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWx0VWlTY2hlbWFzW2luZGV4XSk7XG4gICAgICAgICAgICBjb25zdCBhU2NoZW1hID0gYVNjaGVtYURlZjtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdG9Db25zdGFudChhU2NoZW1hKTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGl0bGUgfHwgYVNjaGVtYS50aXRsZSB8fCBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IGFTY2hlbWEsXG4gICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1vcHRpb25zTGlzdC5qcy5tYXAiLCIvKiogR2l2ZW4gYSBsaXN0IG9mIGBwcm9wZXJ0aWVzYCBhbmQgYW4gYG9yZGVyYCBsaXN0LCByZXR1cm5zIGEgbGlzdCB0aGF0IGNvbnRhaW5zIHRoZSBgcHJvcGVydGllc2Agb3JkZXJlZCBjb3JyZWN0bHkuXG4gKiBJZiBgb3JkZXJgIGlzIG5vdCBhbiBhcnJheSwgdGhlbiB0aGUgdW50b3VjaGVkIGBwcm9wZXJ0aWVzYCBsaXN0IGlzIHJldHVybmVkLiBPdGhlcndpc2UgYHByb3BlcnRpZXNgIGlzIG9yZGVyZWQgcGVyXG4gKiB0aGUgYG9yZGVyYCBsaXN0LiBJZiBgb3JkZXJgIGNvbnRhaW5zIGEgJyonIHRoZW4gYW55IGBwcm9wZXJ0aWVzYCB0aGF0IGFyZSBub3QgbWVudGlvbmVkIGV4cGxpY2l0eSBpbiBgb3JkZXJgIHdpbGwgYmVcbiAqIHBsYWNlcyBpbiB0aGUgbG9jYXRpb24gb2YgdGhlIGAqYC5cbiAqXG4gKiBAcGFyYW0gcHJvcGVydGllcyAtIFRoZSBsaXN0IG9mIHByb3BlcnR5IGtleXMgdG8gYmUgb3JkZXJlZFxuICogQHBhcmFtIG9yZGVyIC0gQW4gYXJyYXkgb2YgcHJvcGVydHkga2V5cyB0byBiZSBvcmRlcmVkIGZpcnN0LCB3aXRoIGFuIG9wdGlvbmFsICcqJyBwcm9wZXJ0eVxuICogQHJldHVybnMgLSBBIGxpc3Qgd2l0aCB0aGUgYHByb3BlcnRpZXNgIG9yZGVyZWRcbiAqIEB0aHJvd3MgLSBFcnJvciB3aGVuIHRoZSBwcm9wZXJ0aWVzIGNhbm5vdCBiZSBvcmRlcmVkIGNvcnJlY3RseVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcmRlclByb3BlcnRpZXMocHJvcGVydGllcywgb3JkZXIpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkob3JkZXIpKSB7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICAgIH1cbiAgICBjb25zdCBhcnJheVRvSGFzaCA9IChhcnIpID0+IGFyci5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgcHJldltjdXJyXSA9IHRydWU7XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9KTtcbiAgICBjb25zdCBlcnJvclByb3BMaXN0ID0gKGFycikgPT4gYXJyLmxlbmd0aCA+IDEgPyBgcHJvcGVydGllcyAnJHthcnIuam9pbihcIicsICdcIil9J2AgOiBgcHJvcGVydHkgJyR7YXJyWzBdfSdgO1xuICAgIGNvbnN0IHByb3BlcnR5SGFzaCA9IGFycmF5VG9IYXNoKHByb3BlcnRpZXMpO1xuICAgIGNvbnN0IG9yZGVyRmlsdGVyZWQgPSBvcmRlci5maWx0ZXIoKHByb3ApID0+IHByb3AgPT09ICcqJyB8fCBwcm9wZXJ0eUhhc2hbcHJvcF0pO1xuICAgIGNvbnN0IG9yZGVySGFzaCA9IGFycmF5VG9IYXNoKG9yZGVyRmlsdGVyZWQpO1xuICAgIGNvbnN0IHJlc3QgPSBwcm9wZXJ0aWVzLmZpbHRlcigocHJvcCkgPT4gIW9yZGVySGFzaFtwcm9wXSk7XG4gICAgY29uc3QgcmVzdEluZGV4ID0gb3JkZXJGaWx0ZXJlZC5pbmRleE9mKCcqJyk7XG4gICAgaWYgKHJlc3RJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgaWYgKHJlc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVpU2NoZW1hIG9yZGVyIGxpc3QgZG9lcyBub3QgY29udGFpbiAke2Vycm9yUHJvcExpc3QocmVzdCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9yZGVyRmlsdGVyZWQ7XG4gICAgfVxuICAgIGlmIChyZXN0SW5kZXggIT09IG9yZGVyRmlsdGVyZWQubGFzdEluZGV4T2YoJyonKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VpU2NoZW1hIG9yZGVyIGxpc3QgY29udGFpbnMgbW9yZSB0aGFuIG9uZSB3aWxkY2FyZCBpdGVtJyk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBsZXRlID0gWy4uLm9yZGVyRmlsdGVyZWRdO1xuICAgIGNvbXBsZXRlLnNwbGljZShyZXN0SW5kZXgsIDEsIC4uLnJlc3QpO1xuICAgIHJldHVybiBjb21wbGV0ZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9yZGVyUHJvcGVydGllcy5qcy5tYXAiLCIvKiogUGFyc2VzIHRoZSBgZGF0ZVN0cmluZ2AgaW50byBhIGBEYXRlT2JqZWN0YCwgaW5jbHVkaW5nIHRoZSB0aW1lIGluZm9ybWF0aW9uIHdoZW4gYGluY2x1ZGVUaW1lYCBpcyB0cnVlXG4gKlxuICogQHBhcmFtIGRhdGVTdHJpbmcgLSBUaGUgZGF0ZSBzdHJpbmcgdG8gcGFyc2UgaW50byBhIERhdGVPYmplY3RcbiAqIEBwYXJhbSBbaW5jbHVkZVRpbWU9dHJ1ZV0gLSBPcHRpb25hbCBmbGFnLCBpZiBmYWxzZSwgd2lsbCBub3QgaW5jbHVkZSB0aGUgdGltZSBkYXRhIGludG8gdGhlIG9iamVjdFxuICogQHJldHVybnMgLSBUaGUgZGF0ZSBzdHJpbmcgY29udmVydGVkIHRvIGEgYERhdGVPYmplY3RgXG4gKiBAdGhyb3dzIC0gRXJyb3Igd2hlbiB0aGUgZGF0ZSBjYW5ub3QgYmUgcGFyc2VkIGZyb20gdGhlIHN0cmluZ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZURhdGVTdHJpbmcoZGF0ZVN0cmluZywgaW5jbHVkZVRpbWUgPSB0cnVlKSB7XG4gICAgaWYgKCFkYXRlU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiAtMSxcbiAgICAgICAgICAgIG1vbnRoOiAtMSxcbiAgICAgICAgICAgIGRheTogLTEsXG4gICAgICAgICAgICBob3VyOiBpbmNsdWRlVGltZSA/IC0xIDogMCxcbiAgICAgICAgICAgIG1pbnV0ZTogaW5jbHVkZVRpbWUgPyAtMSA6IDAsXG4gICAgICAgICAgICBzZWNvbmQ6IGluY2x1ZGVUaW1lID8gLTEgOiAwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgaWYgKE51bWJlci5pc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcGFyc2UgZGF0ZSAnICsgZGF0ZVN0cmluZyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHllYXI6IGRhdGUuZ2V0VVRDRnVsbFllYXIoKSxcbiAgICAgICAgbW9udGg6IGRhdGUuZ2V0VVRDTW9udGgoKSArIDEsXG4gICAgICAgIGRheTogZGF0ZS5nZXRVVENEYXRlKCksXG4gICAgICAgIGhvdXI6IGluY2x1ZGVUaW1lID8gZGF0ZS5nZXRVVENIb3VycygpIDogMCxcbiAgICAgICAgbWludXRlOiBpbmNsdWRlVGltZSA/IGRhdGUuZ2V0VVRDTWludXRlcygpIDogMCxcbiAgICAgICAgc2Vjb25kOiBpbmNsdWRlVGltZSA/IGRhdGUuZ2V0VVRDU2Vjb25kcygpIDogMCxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2VEYXRlU3RyaW5nLmpzLm1hcCIsIi8qKiBDaGVjayB0byBzZWUgaWYgYSBgc2NoZW1hYCBzcGVjaWZpZXMgdGhhdCBhIHZhbHVlIG11c3QgYmUgdHJ1ZS4gVGhpcyBoYXBwZW5zIHdoZW46XG4gKiAtIGBzY2hlbWEuY29uc3RgIGlzIHRydXRoeVxuICogLSBgc2NoZW1hLmVudW1gID09IGBbdHJ1ZV1gXG4gKiAtIGBzY2hlbWEuYW55T2ZgIG9yIGBzY2hlbWEub25lT2ZgIGhhcyBhIHNpbmdsZSB2YWx1ZSB3aGljaCByZWN1cnNpdmVseSByZXR1cm5zIHRydWVcbiAqIC0gYHNjaGVtYS5hbGxPZmAgaGFzIGF0IGxlYXN0IG9uZSB2YWx1ZSB3aGljaCByZWN1cnNpdmVseSByZXR1cm5zIHRydWVcbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSB0byBjaGVja1xuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBzY2hlbWEgc3BlY2lmaWVzIGEgdmFsdWUgdGhhdCBtdXN0IGJlIHRydWUsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzY2hlbWFSZXF1aXJlc1RydWVWYWx1ZShzY2hlbWEpIHtcbiAgICAvLyBDaGVjayBpZiBjb25zdCBpcyBhIHRydXRoeSB2YWx1ZVxuICAgIGlmIChzY2hlbWEuY29uc3QpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIENoZWNrIGlmIGFuIGVudW0gaGFzIGEgc2luZ2xlIHZhbHVlIG9mIHRydWVcbiAgICBpZiAoc2NoZW1hLmVudW0gJiYgc2NoZW1hLmVudW0ubGVuZ3RoID09PSAxICYmIHNjaGVtYS5lbnVtWzBdID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBJZiBhbnlPZiBoYXMgYSBzaW5nbGUgdmFsdWUsIGV2YWx1YXRlIHRoZSBzdWJzY2hlbWFcbiAgICBpZiAoc2NoZW1hLmFueU9mICYmIHNjaGVtYS5hbnlPZi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYVJlcXVpcmVzVHJ1ZVZhbHVlKHNjaGVtYS5hbnlPZlswXSk7XG4gICAgfVxuICAgIC8vIElmIG9uZU9mIGhhcyBhIHNpbmdsZSB2YWx1ZSwgZXZhbHVhdGUgdGhlIHN1YnNjaGVtYVxuICAgIGlmIChzY2hlbWEub25lT2YgJiYgc2NoZW1hLm9uZU9mLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hUmVxdWlyZXNUcnVlVmFsdWUoc2NoZW1hLm9uZU9mWzBdKTtcbiAgICB9XG4gICAgLy8gRXZhbHVhdGUgZWFjaCBzdWJzY2hlbWEgaW4gYWxsT2YsIHRvIHNlZSBpZiBvbmUgb2YgdGhlbSByZXF1aXJlcyBhIHRydWUgdmFsdWVcbiAgICBpZiAoc2NoZW1hLmFsbE9mKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYVNvbWUgPSAoc3ViU2NoZW1hKSA9PiBzY2hlbWFSZXF1aXJlc1RydWVWYWx1ZShzdWJTY2hlbWEpO1xuICAgICAgICByZXR1cm4gc2NoZW1hLmFsbE9mLnNvbWUoc2NoZW1hU29tZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNjaGVtYVJlcXVpcmVzVHJ1ZVZhbHVlLmpzLm1hcCIsImltcG9ydCBkZWVwRXF1YWxzIGZyb20gJy4vZGVlcEVxdWFscyc7XG4vKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBgY29tcG9uZW50YCBzaG91bGQgYmUgcmVyZW5kZXJlZCBieSBjb21wYXJpbmcgaXRzIGN1cnJlbnQgc2V0IG9mIHByb3BzIGFuZCBzdGF0ZVxuICogYWdhaW5zdCB0aGUgbmV4dCBzZXQuIElmIGVpdGhlciBvZiB0aG9zZSB0d28gc2V0cyBhcmUgbm90IHRoZSBzYW1lLCB0aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHJlcmVuZGVyZWQuXG4gKlxuICogQHBhcmFtIGNvbXBvbmVudCAtIEEgUmVhY3QgY29tcG9uZW50IGJlaW5nIGNoZWNrZWRcbiAqIEBwYXJhbSBuZXh0UHJvcHMgLSBUaGUgbmV4dCBzZXQgb2YgcHJvcHMgYWdhaW5zdCB3aGljaCB0byBjaGVja1xuICogQHBhcmFtIG5leHRTdGF0ZSAtIFRoZSBuZXh0IHNldCBvZiBzdGF0ZSBhZ2FpbnN0IHdoaWNoIHRvIGNoZWNrXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgcmUtcmVuZGVyZWQsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzaG91bGRSZW5kZXIoY29tcG9uZW50LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSkge1xuICAgIGNvbnN0IHsgcHJvcHMsIHN0YXRlIH0gPSBjb21wb25lbnQ7XG4gICAgcmV0dXJuICFkZWVwRXF1YWxzKHByb3BzLCBuZXh0UHJvcHMpIHx8ICFkZWVwRXF1YWxzKHN0YXRlLCBuZXh0U3RhdGUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2hvdWxkUmVuZGVyLmpzLm1hcCIsIi8qKiBSZXR1cm5zIGEgVVRDIGRhdGUgc3RyaW5nIGZvciB0aGUgZ2l2ZW4gYGRhdGVPYmplY3RgLiBJZiBgdGltZWAgaXMgZmFsc2UsIHRoZW4gdGhlIHRpbWUgcG9ydGlvbiBvZiB0aGUgc3RyaW5nIGlzXG4gKiByZW1vdmVkLlxuICpcbiAqIEBwYXJhbSBkYXRlT2JqZWN0IC0gVGhlIGBEYXRlT2JqZWN0YCB0byBjb252ZXJ0IHRvIGEgZGF0ZSBzdHJpbmdcbiAqIEBwYXJhbSBbdGltZT10cnVlXSAtIE9wdGlvbmFsIGZsYWcgdXNlZCB0byByZW1vdmUgdGhlIHRpbWUgcG9ydGlvbiBvZiB0aGUgZGF0ZSBzdHJpbmcgaWYgZmFsc2VcbiAqIEByZXR1cm5zIC0gVGhlIFVUQyBkYXRlIHN0cmluZ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0RhdGVTdHJpbmcoZGF0ZU9iamVjdCwgdGltZSA9IHRydWUpIHtcbiAgICBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXksIGhvdXIgPSAwLCBtaW51dGUgPSAwLCBzZWNvbmQgPSAwIH0gPSBkYXRlT2JqZWN0O1xuICAgIGNvbnN0IHV0Y1RpbWUgPSBEYXRlLlVUQyh5ZWFyLCBtb250aCAtIDEsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpO1xuICAgIGNvbnN0IGRhdGV0aW1lID0gbmV3IERhdGUodXRjVGltZSkudG9KU09OKCk7XG4gICAgcmV0dXJuIHRpbWUgPyBkYXRldGltZSA6IGRhdGV0aW1lLnNsaWNlKDAsIDEwKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvRGF0ZVN0cmluZy5qcy5tYXAiLCJpbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICdsb2Rhc2gvaXNQbGFpbk9iamVjdCc7XG5pbXBvcnQgeyBFUlJPUlNfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqIENvbnZlcnRzIGFuIGBlcnJvclNjaGVtYWAgaW50byBhIGxpc3Qgb2YgYFJKU0ZWYWxpZGF0aW9uRXJyb3JzYFxuICpcbiAqIEBwYXJhbSBlcnJvclNjaGVtYSAtIFRoZSBgRXJyb3JTY2hlbWFgIGluc3RhbmNlIHRvIGNvbnZlcnRcbiAqIEBwYXJhbSBbZmllbGRQYXRoPVtdXSAtIFRoZSBjdXJyZW50IGZpZWxkIHBhdGgsIGRlZmF1bHRzIHRvIFtdIGlmIG5vdCBzcGVjaWZpZWRcbiAqIEByZXR1cm5zIC0gVGhlIGxpc3Qgb2YgYFJKU0ZWYWxpZGF0aW9uRXJyb3JzYCBleHRyYWN0ZWQgZnJvbSB0aGUgYGVycm9yU2NoZW1hYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0Vycm9yTGlzdChlcnJvclNjaGVtYSwgZmllbGRQYXRoID0gW10pIHtcbiAgICBpZiAoIWVycm9yU2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbGV0IGVycm9yTGlzdCA9IFtdO1xuICAgIGlmIChFUlJPUlNfS0VZIGluIGVycm9yU2NoZW1hKSB7XG4gICAgICAgIGVycm9yTGlzdCA9IGVycm9yTGlzdC5jb25jYXQoZXJyb3JTY2hlbWFbRVJST1JTX0tFWV0ubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGAuJHtmaWVsZFBhdGguam9pbignLicpfWA7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgc3RhY2s6IGAke3Byb3BlcnR5fSAke21lc3NhZ2V9YCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVycm9yU2NoZW1hKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGlmIChrZXkgIT09IEVSUk9SU19LRVkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkU2NoZW1hID0gZXJyb3JTY2hlbWFba2V5XTtcbiAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGNoaWxkU2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQodG9FcnJvckxpc3QoY2hpbGRTY2hlbWEsIFsuLi5maWVsZFBhdGgsIGtleV0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIGVycm9yTGlzdCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b0Vycm9yTGlzdC5qcy5tYXAiLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKSxcbiAgICBzdHJpbmdUb1BhdGggPSByZXF1aXJlKCcuL19zdHJpbmdUb1BhdGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5JyksXG4gICAgdG9TdHJpbmcgPSByZXF1aXJlKCcuL3RvU3RyaW5nJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvUGF0aCgnYS5iLmMnKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICpcbiAqIF8udG9QYXRoKCdhWzBdLmIuYycpO1xuICogLy8gPT4gWydhJywgJzAnLCAnYicsICdjJ11cbiAqL1xuZnVuY3Rpb24gdG9QYXRoKHZhbHVlKSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgdG9LZXkpO1xuICB9XG4gIHJldHVybiBpc1N5bWJvbCh2YWx1ZSkgPyBbdmFsdWVdIDogY29weUFycmF5KHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1BhdGg7XG4iLCJpbXBvcnQgdG9QYXRoIGZyb20gJ2xvZGFzaC90b1BhdGgnO1xuaW1wb3J0IEVycm9yU2NoZW1hQnVpbGRlciBmcm9tICcuL0Vycm9yU2NoZW1hQnVpbGRlcic7XG4vKiogVHJhbnNmb3JtcyBhIHJqc2YgdmFsaWRhdGlvbiBlcnJvcnMgbGlzdDpcbiAqIFtcbiAqICAge3Byb3BlcnR5OiAnLmxldmVsMS5sZXZlbDJbMl0ubGV2ZWwzJywgbWVzc2FnZTogJ2VyciBhJ30sXG4gKiAgIHtwcm9wZXJ0eTogJy5sZXZlbDEubGV2ZWwyWzJdLmxldmVsMycsIG1lc3NhZ2U6ICdlcnIgYid9LFxuICogICB7cHJvcGVydHk6ICcubGV2ZWwxLmxldmVsMls0XS5sZXZlbDMnLCBtZXNzYWdlOiAnZXJyIGInfSxcbiAqIF1cbiAqIEludG8gYW4gZXJyb3IgdHJlZTpcbiAqIHtcbiAqICAgbGV2ZWwxOiB7XG4gKiAgICAgbGV2ZWwyOiB7XG4gKiAgICAgICAyOiB7bGV2ZWwzOiB7ZXJyb3JzOiBbJ2VyciBhJywgJ2VyciBiJ119fSxcbiAqICAgICAgIDQ6IHtsZXZlbDM6IHtlcnJvcnM6IFsnZXJyIGInXX19LFxuICogICAgIH1cbiAqICAgfVxuICogfTtcbiAqXG4gKiBAcGFyYW0gZXJyb3JzIC0gVGhlIGxpc3Qgb2YgUkpTRlZhbGlkYXRpb25FcnJvciBvYmplY3RzXG4gKiBAcmV0dXJucyAtIFRoZSBgRXJyb3JTY2hlbWFgIGJ1aWx0IGZyb20gdGhlIGxpc3Qgb2YgYFJKU0ZWYWxpZGF0aW9uRXJyb3JzYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0Vycm9yU2NoZW1hKGVycm9ycykge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgRXJyb3JTY2hlbWFCdWlsZGVyKCk7XG4gICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnR5LCBtZXNzYWdlIH0gPSBlcnJvcjtcbiAgICAgICAgICAgIC8vIFdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSByb290IGVsZW1lbnQsIGp1c3QgdXNlIGFuIGVtcHR5IGFycmF5IGZvciB0aGUgcGF0aFxuICAgICAgICAgICAgY29uc3QgcGF0aCA9IHByb3BlcnR5ID09PSAnLicgPyBbXSA6IHRvUGF0aChwcm9wZXJ0eSk7XG4gICAgICAgICAgICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgYXQgdGhlIHJvb3QgKC5sZXZlbDEpIHRoZW4gdG9QYXRoIGNyZWF0ZXNcbiAgICAgICAgICAgIC8vIGFuIGVtcHR5IGFycmF5IGVsZW1lbnQgYXQgdGhlIGZpcnN0IGluZGV4LiBSZW1vdmUgaXQuXG4gICAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPiAwICYmIHBhdGhbMF0gPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcGF0aC5zcGxpY2UoMCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGJ1aWxkZXIuYWRkRXJyb3JzKG1lc3NhZ2UsIHBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXIuRXJyb3JTY2hlbWE7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b0Vycm9yU2NoZW1hLmpzLm1hcCIsImltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJ2xvZGFzaC9pc1BsYWluT2JqZWN0Jztcbi8qKiBVbndyYXBzIHRoZSBgZXJyb3JIYW5kbGVyYCBzdHJ1Y3R1cmUgaW50byB0aGUgYXNzb2NpYXRlZCBgRXJyb3JTY2hlbWFgLCBzdHJpcHBpbmcgdGhlIGBhZGRFcnJvcigpYCBmdW5jdGlvbnMgZnJvbSBpdFxuICpcbiAqIEBwYXJhbSBlcnJvckhhbmRsZXIgLSBUaGUgYEZvcm1WYWxpZGF0aW9uYCBlcnJvciBoYW5kbGluZyBzdHJ1Y3R1cmVcbiAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYWAgcmVzdWx0aW5nIGZyb20gdGhlIHN0cmlwcGluZyBvZiB0aGUgYGFkZEVycm9yKClgIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVud3JhcEVycm9ySGFuZGxlcihlcnJvckhhbmRsZXIpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JIYW5kbGVyKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09ICdhZGRFcnJvcicpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZFNjaGVtYSA9IGVycm9ySGFuZGxlcltrZXldO1xuICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QoY2hpbGRTY2hlbWEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICBba2V5XTogdW53cmFwRXJyb3JIYW5kbGVyKGNoaWxkU2NoZW1hKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBba2V5XTogY2hpbGRTY2hlbWEgfTtcbiAgICAgICAgfVxuICAgIH0sIHt9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVud3JhcEVycm9ySGFuZGxlci5qcy5tYXAiLCJpbXBvcnQgcGFkIGZyb20gJy4vcGFkJztcbi8qKiBDb252ZXJ0cyBhIFVUQyBkYXRlIHN0cmluZyBpbnRvIGEgbG9jYWwgRGF0ZSBmb3JtYXRcbiAqXG4gKiBAcGFyYW0ganNvbkRhdGUgLSBBIFVUQyBkYXRlIHN0cmluZ1xuICogQHJldHVybnMgLSBBbiBlbXB0eSBzdHJpbmcgd2hlbiBganNvbkRhdGVgIGlzIGZhbHNleSwgb3RoZXJ3aXNlIGEgZGF0ZSBzdHJpbmcgaW4gbG9jYWwgZm9ybWF0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHV0Y1RvTG9jYWwoanNvbkRhdGUpIHtcbiAgICBpZiAoIWpzb25EYXRlKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgLy8gcmVxdWlyZWQgZm9ybWF0IG9mIGAneXl5eS1NTS1kZFRoaDptbScgZm9sbG93ZWQgYnkgb3B0aW9uYWwgJzpzcycgb3IgJzpzcy5TU1MnXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5wdXQuaHRtbCNsb2NhbC1kYXRlLWFuZC10aW1lLXN0YXRlLSh0eXBlJTNEZGF0ZXRpbWUtbG9jYWwpXG4gICAgLy8gPiBzaG91bGQgYmUgYSBfdmFsaWQgbG9jYWwgZGF0ZSBhbmQgdGltZSBzdHJpbmdfIChub3QgR01UKVxuICAgIC8vIE5vdGUgLSBkYXRlIGNvbnN0cnVjdG9yIHBhc3NlZCBsb2NhbCBJU08tODYwMSBkb2VzIG5vdCBjb3JyZWN0bHlcbiAgICAvLyBjaGFuZ2UgdGltZSB0byBVVEMgaW4gbm9kZSBwcmUtOFxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShqc29uRGF0ZSk7XG4gICAgY29uc3QgeXl5eSA9IHBhZChkYXRlLmdldEZ1bGxZZWFyKCksIDQpO1xuICAgIGNvbnN0IE1NID0gcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEsIDIpO1xuICAgIGNvbnN0IGRkID0gcGFkKGRhdGUuZ2V0RGF0ZSgpLCAyKTtcbiAgICBjb25zdCBoaCA9IHBhZChkYXRlLmdldEhvdXJzKCksIDIpO1xuICAgIGNvbnN0IG1tID0gcGFkKGRhdGUuZ2V0TWludXRlcygpLCAyKTtcbiAgICBjb25zdCBzcyA9IHBhZChkYXRlLmdldFNlY29uZHMoKSwgMik7XG4gICAgY29uc3QgU1NTID0gcGFkKGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCksIDMpO1xuICAgIHJldHVybiBgJHt5eXl5fS0ke01NfS0ke2RkfVQke2hofToke21tfToke3NzfS4ke1NTU31gO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRjVG9Mb2NhbC5qcy5tYXAiLCJpbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgbWVyZ2VPYmplY3RzIGZyb20gJy4vbWVyZ2VPYmplY3RzJztcbmltcG9ydCB0b0Vycm9yTGlzdCBmcm9tICcuL3RvRXJyb3JMaXN0Jztcbi8qKiBNZXJnZXMgdGhlIGVycm9ycyBpbiBgYWRkaXRpb25hbEVycm9yU2NoZW1hYCBpbnRvIHRoZSBleGlzdGluZyBgdmFsaWRhdGlvbkRhdGFgIGJ5IGNvbWJpbmluZyB0aGUgaGllcmFyY2hpZXMgaW4gdGhlXG4gKiB0d28gYEVycm9yU2NoZW1hYHMgYW5kIHRoZW4gYXBwZW5kaW5nIHRoZSBlcnJvciBsaXN0IGZyb20gdGhlIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIG9idGFpbmVkIGJ5IGNhbGxpbmdcbiAqIGB0b0Vycm9yTGlzdCgpYCBvbiB0aGUgYGVycm9yc2AgaW4gdGhlIGB2YWxpZGF0aW9uRGF0YWAuIElmIG5vIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGlzIHBhc3NlZCwgdGhlblxuICogYHZhbGlkYXRpb25EYXRhYCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdGlvbkRhdGEgLSBUaGUgY3VycmVudCBgVmFsaWRhdGlvbkRhdGFgIGludG8gd2hpY2ggdG8gbWVyZ2UgdGhlIGFkZGl0aW9uYWwgZXJyb3JzXG4gKiBAcGFyYW0gW2FkZGl0aW9uYWxFcnJvclNjaGVtYV0gLSBUaGUgb3B0aW9uYWwgYWRkaXRpb25hbCBzZXQgb2YgZXJyb3JzIGluIGFuIGBFcnJvclNjaGVtYWBcbiAqIEByZXR1cm5zIC0gVGhlIGB2YWxpZGF0aW9uRGF0YWAgd2l0aCB0aGUgYWRkaXRpb25hbCBlcnJvcnMgZnJvbSBgYWRkaXRpb25hbEVycm9yU2NoZW1hYCBtZXJnZWQgaW50byBpdCwgaWYgcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZhbGlkYXRpb25EYXRhTWVyZ2UodmFsaWRhdGlvbkRhdGEsIGFkZGl0aW9uYWxFcnJvclNjaGVtYSkge1xuICAgIGlmICghYWRkaXRpb25hbEVycm9yU2NoZW1hKSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0aW9uRGF0YTtcbiAgICB9XG4gICAgY29uc3QgeyBlcnJvcnM6IG9sZEVycm9ycywgZXJyb3JTY2hlbWE6IG9sZEVycm9yU2NoZW1hIH0gPSB2YWxpZGF0aW9uRGF0YTtcbiAgICBsZXQgZXJyb3JzID0gdG9FcnJvckxpc3QoYWRkaXRpb25hbEVycm9yU2NoZW1hKTtcbiAgICBsZXQgZXJyb3JTY2hlbWEgPSBhZGRpdGlvbmFsRXJyb3JTY2hlbWE7XG4gICAgaWYgKCFpc0VtcHR5KG9sZEVycm9yU2NoZW1hKSkge1xuICAgICAgICBlcnJvclNjaGVtYSA9IG1lcmdlT2JqZWN0cyhvbGRFcnJvclNjaGVtYSwgYWRkaXRpb25hbEVycm9yU2NoZW1hLCB0cnVlKTtcbiAgICAgICAgZXJyb3JzID0gWy4uLm9sZEVycm9yc10uY29uY2F0KGVycm9ycyk7XG4gICAgfVxuICAgIHJldHVybiB7IGVycm9yU2NoZW1hLCBlcnJvcnMgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZhbGlkYXRpb25EYXRhTWVyZ2UuanMubWFwIiwiaW1wb3J0IHsgUkVGX0tFWSwgUk9PVF9TQ0hFTUFfUFJFRklYIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG4vKiogVGFrZXMgYSBgbm9kZWAgb2JqZWN0IGFuZCB0cmFuc2Zvcm1zIGFueSBjb250YWluZWQgYCRyZWZgIG5vZGUgdmFyaWFibGVzIHdpdGggYSBwcmVmaXgsIHJlY3Vyc2l2ZWx5IGNhbGxpbmdcbiAqIGB3aXRoSWRSZWZQcmVmaXhgIGZvciBhbnkgb3RoZXIgZWxlbWVudHMuXG4gKlxuICogQHBhcmFtIG5vZGUgLSBUaGUgb2JqZWN0IG5vZGUgdG8gd2hpY2ggYSBST09UX1NDSEVNQV9QUkVGSVggaXMgYWRkZWQgd2hlbiBhIFJFRl9LRVkgaXMgcGFydCBvZiBpdFxuICovXG5mdW5jdGlvbiB3aXRoSWRSZWZQcmVmaXhPYmplY3Qobm9kZSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG5vZGUpIHtcbiAgICAgICAgY29uc3QgcmVhbE9iaiA9IG5vZGU7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmVhbE9ialtrZXldO1xuICAgICAgICBpZiAoa2V5ID09PSBSRUZfS0VZICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUuc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgICAgICAgICByZWFsT2JqW2tleV0gPSBST09UX1NDSEVNQV9QUkVGSVggKyB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlYWxPYmpba2V5XSA9IHdpdGhJZFJlZlByZWZpeCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG59XG4vKiogVGFrZXMgYSBgbm9kZWAgb2JqZWN0IGxpc3QgYW5kIHRyYW5zZm9ybXMgYW55IGNvbnRhaW5lZCBgJHJlZmAgbm9kZSB2YXJpYWJsZXMgd2l0aCBhIHByZWZpeCwgcmVjdXJzaXZlbHkgY2FsbGluZ1xuICogYHdpdGhJZFJlZlByZWZpeGAgZm9yIGFueSBvdGhlciBlbGVtZW50cy5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBsaXN0IG9mIG9iamVjdCBub2RlcyB0byB3aGljaCBhIFJPT1RfU0NIRU1BX1BSRUZJWCBpcyBhZGRlZCB3aGVuIGEgUkVGX0tFWSBpcyBwYXJ0IG9mIGl0XG4gKi9cbmZ1bmN0aW9uIHdpdGhJZFJlZlByZWZpeEFycmF5KG5vZGUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbm9kZVtpXSA9IHdpdGhJZFJlZlByZWZpeChub2RlW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG59XG4vKiogUmVjdXJzaXZlbHkgcHJlZml4ZXMgYWxsIGAkcmVmYHMgaW4gYSBzY2hlbWEgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIGBST09UX1NDSEVNQV9QUkVGSVhgIGNvbnN0YW50LlxuICogVGhpcyBpcyB1c2VkIGluIGlzVmFsaWQgdG8gbWFrZSByZWZlcmVuY2VzIHRvIHRoZSByb290U2NoZW1hXG4gKlxuICogQHBhcmFtIHNjaGVtYU5vZGUgLSBUaGUgb2JqZWN0IG5vZGUgdG8gd2hpY2ggYSBST09UX1NDSEVNQV9QUkVGSVggaXMgYWRkZWQgd2hlbiBhIFJFRl9LRVkgaXMgcGFydCBvZiBpdFxuICogQHJldHVybnMgLSBBIGNvcHkgb2YgdGhlIGBzY2hlbWFOb2RlYCB3aXRoIHVwZGF0ZWQgYCRyZWZgc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3aXRoSWRSZWZQcmVmaXgoc2NoZW1hTm9kZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYU5vZGUpKSB7XG4gICAgICAgIHJldHVybiB3aXRoSWRSZWZQcmVmaXhBcnJheShbLi4uc2NoZW1hTm9kZV0pO1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3Qoc2NoZW1hTm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHdpdGhJZFJlZlByZWZpeE9iamVjdCh7IC4uLnNjaGVtYU5vZGUgfSk7XG4gICAgfVxuICAgIHJldHVybiBzY2hlbWFOb2RlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9d2l0aElkUmVmUHJlZml4LmpzLm1hcCIsIi8qKiBBbiBlbnVtZXJhdGlvbiBvZiBhbGwgdGhlIHRyYW5zbGF0YWJsZSBzdHJpbmdzIHVzZWQgYnkgYEByanNmL2NvcmVgIGFuZCBpdHMgdGhlbWVzLiBUaGUgdmFsdWUgb2YgZWFjaCBvZiB0aGVcbiAqIGVudW1lcmF0aW9uIGtleXMgaXMgZXhwZWN0ZWQgdG8gYmUgdGhlIGFjdHVhbCBlbmdsaXNoIHN0cmluZy4gU29tZSBzdHJpbmdzIGNvbnRhaW4gcmVwbGFjZWFibGUgcGFyYW1ldGVyIHZhbHVlc1xuICogYXMgaW5kaWNhdGVkIGJ5IGAlMWAsIGAlMmAsIGV0Yy4gVGhlIG51bWJlciBhZnRlciB0aGUgYCVgIGluZGljYXRlcyB0aGUgb3JkZXIgb2YgdGhlIHBhcmFtZXRlci4gVGhlIG9yZGVyaW5nIG9mXG4gKiBwYXJhbWV0ZXJzIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgbGFuZ3VhZ2VzIG1heSBjaG9vc2UgdG8gcHV0IHRoZSBzZWNvbmQgcGFyYW1ldGVyIGJlZm9yZSB0aGUgZmlyc3QgaW4gaXRzXG4gKiB0cmFuc2xhdGlvbi4gQWxzbywgc29tZSBzdHJpbmdzIGFyZSByZW5kZXJlZCB1c2luZyBgbWFya2Rvd24tdG8tanN4YCBhbmQgdGh1cyBzdXBwb3J0IG1hcmtkb3duIGFuZCBpbmxpbmUgaHRtbC5cbiAqL1xuZXhwb3J0IHZhciBUcmFuc2xhdGFibGVTdHJpbmc7XG4oZnVuY3Rpb24gKFRyYW5zbGF0YWJsZVN0cmluZykge1xuICAgIC8qKiBGYWxsYmFjayB0aXRsZSBvZiBhbiBhcnJheSBpdGVtLCB1c2VkIGJ5IEFycmF5RmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJBcnJheUl0ZW1UaXRsZVwiXSA9IFwiSXRlbVwiO1xuICAgIC8qKiBNaXNzaW5nIGl0ZW1zIHJlYXNvbiwgdXNlZCBieSBBcnJheUZpZWxkICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiTWlzc2luZ0l0ZW1zXCJdID0gXCJNaXNzaW5nIGl0ZW1zIGRlZmluaXRpb25cIjtcbiAgICAvKiogWWVzIGxhYmVsLCB1c2VkIGJ5IEJvb2xlYW5GaWVsZCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlllc0xhYmVsXCJdID0gXCJZZXNcIjtcbiAgICAvKiogTm8gbGFiZWwsIHVzZWQgYnkgQm9vbGVhbkZpZWxkICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiTm9MYWJlbFwiXSA9IFwiTm9cIjtcbiAgICAvKiogQ2xvc2UgbGFiZWwsIHVzZWQgYnkgRXJyb3JMaXN0ICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiQ2xvc2VMYWJlbFwiXSA9IFwiQ2xvc2VcIjtcbiAgICAvKiogRXJyb3JzIGxhYmVsLCB1c2VkIGJ5IEVycm9yTGlzdCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkVycm9yc0xhYmVsXCJdID0gXCJFcnJvcnNcIjtcbiAgICAvKiogTmV3IGFkZGl0aW9uYWxQcm9wZXJ0aWVzIHN0cmluZyBkZWZhdWx0IHZhbHVlLCB1c2VkIGJ5IE9iamVjdEZpZWxkICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiTmV3U3RyaW5nRGVmYXVsdFwiXSA9IFwiTmV3IFZhbHVlXCI7XG4gICAgLyoqIEFkZCBidXR0b24gdGl0bGUsIHVzZWQgYnkgQWRkQnV0dG9uICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiQWRkQnV0dG9uXCJdID0gXCJBZGRcIjtcbiAgICAvKiogQWRkIGJ1dHRvbiB0aXRsZSwgdXNlZCBieSBBZGRCdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJBZGRJdGVtQnV0dG9uXCJdID0gXCJBZGQgSXRlbVwiO1xuICAgIC8qKiBDb3B5IGJ1dHRvbiB0aXRsZSwgdXNlZCBieSBJY29uQnV0dG9uICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiQ29weUJ1dHRvblwiXSA9IFwiQ29weVwiO1xuICAgIC8qKiBNb3ZlIGRvd24gYnV0dG9uIHRpdGxlLCB1c2VkIGJ5IEljb25CdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJNb3ZlRG93bkJ1dHRvblwiXSA9IFwiTW92ZSBkb3duXCI7XG4gICAgLyoqIE1vdmUgdXAgYnV0dG9uIHRpdGxlLCB1c2VkIGJ5IEljb25CdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJNb3ZlVXBCdXR0b25cIl0gPSBcIk1vdmUgdXBcIjtcbiAgICAvKiogUmVtb3ZlIGJ1dHRvbiB0aXRsZSwgdXNlZCBieSBJY29uQnV0dG9uICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiUmVtb3ZlQnV0dG9uXCJdID0gXCJSZW1vdmVcIjtcbiAgICAvKiogTm93IGxhYmVsLCB1c2VkIGJ5IEFsdERhdGVXaWRnZXQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJOb3dMYWJlbFwiXSA9IFwiTm93XCI7XG4gICAgLyoqIENsZWFyIGxhYmVsLCB1c2VkIGJ5IEFsdERhdGVXaWRnZXQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJDbGVhckxhYmVsXCJdID0gXCJDbGVhclwiO1xuICAgIC8qKiBBcmlhIGRhdGUgbGFiZWwsIHVzZWQgYnkgRGF0ZVdpZGdldCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkFyaWFEYXRlTGFiZWxcIl0gPSBcIlNlbGVjdCBhIGRhdGVcIjtcbiAgICAvKiogRmlsZSBwcmV2aWV3IGxhYmVsLCB1c2VkIGJ5IEZpbGVXaWRnZXQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJQcmV2aWV3TGFiZWxcIl0gPSBcIlByZXZpZXdcIjtcbiAgICAvKiogRGVjcmVtZW50IGJ1dHRvbiBhcmlhIGxhYmVsLCB1c2VkIGJ5IFVwRG93bldpZGdldCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkRlY3JlbWVudEFyaWFMYWJlbFwiXSA9IFwiRGVjcmVhc2UgdmFsdWUgYnkgMVwiO1xuICAgIC8qKiBJbmNyZW1lbnQgYnV0dG9uIGFyaWEgbGFiZWwsIHVzZWQgYnkgVXBEb3duV2lkZ2V0ICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiSW5jcmVtZW50QXJpYUxhYmVsXCJdID0gXCJJbmNyZWFzZSB2YWx1ZSBieSAxXCI7XG4gICAgLy8gU3RyaW5ncyB3aXRoIHJlcGxhY2VhYmxlIHBhcmFtZXRlcnNcbiAgICAvKiogVW5rbm93biBmaWVsZCB0eXBlIHJlYXNvbiwgd2hlcmUgJTEgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSB0eXBlIGFzIHByb3ZpZGVkIGJ5IFNjaGVtYUZpZWxkICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiVW5rbm93bkZpZWxkVHlwZVwiXSA9IFwiVW5rbm93biBmaWVsZCB0eXBlICUxXCI7XG4gICAgLyoqIE9wdGlvbiBwcmVmaXgsIHdoZXJlICUxIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb3B0aW9uIGluZGV4IGFzIHByb3ZpZGVkIGJ5IE11bHRpU2NoZW1hRmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJPcHRpb25QcmVmaXhcIl0gPSBcIk9wdGlvbiAlMVwiO1xuICAgIC8qKiBPcHRpb24gcHJlZml4LCB3aGVyZSAlMSBhbmQgJTIgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgc2NoZW1hIHRpdGxlIGFuZCBvcHRpb24gaW5kZXgsIHJlc3BlY3RpdmVseSBhcyBwcm92aWRlZCBieVxuICAgICAqIE11bHRpU2NoZW1hRmllbGRcbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJUaXRsZU9wdGlvblByZWZpeFwiXSA9IFwiJTEgb3B0aW9uICUyXCI7XG4gICAgLyoqIEtleSBsYWJlbCwgd2hlcmUgJTEgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgbGFiZWwgYXMgcHJvdmlkZWQgYnkgV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiS2V5TGFiZWxcIl0gPSBcIiUxIEtleVwiO1xuICAgIC8vIFN0cmluZ3Mgd2l0aCByZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIEFORC9PUiB0aGF0IHN1cHBvcnQgbWFya2Rvd24gYW5kIGh0bWxcbiAgICAvKiogSW52YWxpZCBvYmplY3QgZmllbGQgY29uZmlndXJhdGlvbiBhcyBwcm92aWRlZCBieSB0aGUgT2JqZWN0RmllbGQuXG4gICAgICogTk9URTogVXNlIG1hcmtkb3duIG5vdGF0aW9uIHJhdGhlciB0aGFuIGh0bWwgdGFncy5cbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJJbnZhbGlkT2JqZWN0RmllbGRcIl0gPSBcIkludmFsaWQgXFxcIiUxXFxcIiBvYmplY3QgZmllbGQgY29uZmlndXJhdGlvbjogXyUyXy5cIjtcbiAgICAvKiogVW5zdXBwb3J0ZWQgZmllbGQgc2NoZW1hLCB1c2VkIGJ5IFVuc3VwcG9ydGVkRmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJVbnN1cHBvcnRlZEZpZWxkXCJdID0gXCJVbnN1cHBvcnRlZCBmaWVsZCBzY2hlbWEuXCI7XG4gICAgLyoqIFVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYSwgd2hlcmUgJTEgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgaWRTY2hlbWEuJGlkIGFzIHByb3ZpZGVkIGJ5IFVuc3VwcG9ydGVkRmllbGQuXG4gICAgICogTk9URTogVXNlIG1hcmtkb3duIG5vdGF0aW9uIHJhdGhlciB0aGFuIGh0bWwgdGFncy5cbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJVbnN1cHBvcnRlZEZpZWxkV2l0aElkXCJdID0gXCJVbnN1cHBvcnRlZCBmaWVsZCBzY2hlbWEgZm9yIGZpZWxkIGAlMWAuXCI7XG4gICAgLyoqIFVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYSwgd2hlcmUgJTEgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgcmVhc29uIHN0cmluZyBhcyBwcm92aWRlZCBieSBVbnN1cHBvcnRlZEZpZWxkLlxuICAgICAqIE5PVEU6IFVzZSBtYXJrZG93biBub3RhdGlvbiByYXRoZXIgdGhhbiBodG1sIHRhZ3MuXG4gICAgICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiVW5zdXBwb3J0ZWRGaWVsZFdpdGhSZWFzb25cIl0gPSBcIlVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYTogXyUxXy5cIjtcbiAgICAvKiogVW5zdXBwb3J0ZWQgZmllbGQgc2NoZW1hLCB3aGVyZSAlMSBhbmQgJTIgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgaWRTY2hlbWEuJGlkIGFuZCByZWFzb24gc3RyaW5ncywgcmVzcGVjdGl2ZWx5LFxuICAgICAqIGFzIHByb3ZpZGVkIGJ5IFVuc3VwcG9ydGVkRmllbGQuXG4gICAgICogTk9URTogVXNlIG1hcmtkb3duIG5vdGF0aW9uIHJhdGhlciB0aGFuIGh0bWwgdGFncy5cbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJVbnN1cHBvcnRlZEZpZWxkV2l0aElkQW5kUmVhc29uXCJdID0gXCJVbnN1cHBvcnRlZCBmaWVsZCBzY2hlbWEgZm9yIGZpZWxkIGAlMWA6IF8lMl8uXCI7XG4gICAgLyoqIEZpbGUgbmFtZSwgdHlwZSBhbmQgc2l6ZSBpbmZvLCB3aGVyZSAlMSwgJTIgYW5kICUzIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGZpbGUgbmFtZSwgZmlsZSB0eXBlIGFuZCBmaWxlIHNpemUgYXNcbiAgICAgKiBwcm92aWRlZCBieSBGaWxlV2lkZ2V0XG4gICAgICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiRmlsZXNJbmZvXCJdID0gXCIqKiUxKiogKCUyLCAlMyBieXRlcylcIjtcbn0pKFRyYW5zbGF0YWJsZVN0cmluZyB8fCAoVHJhbnNsYXRhYmxlU3RyaW5nID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVudW1zLmpzLm1hcCIsIi8qKiBAbGljZW5zZSBVUkkuanMgdjQuNC4xIChjKSAyMDExIEdhcnkgQ291cnQuIExpY2Vuc2U6IGh0dHA6Ly9naXRodWIuY29tL2dhcnljb3VydC91cmktanMgKi9cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG5cdHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IGZhY3RvcnkoZXhwb3J0cykgOlxuXHR0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWydleHBvcnRzJ10sIGZhY3RvcnkpIDpcblx0KGZhY3RvcnkoKGdsb2JhbC5VUkkgPSBnbG9iYWwuVVJJIHx8IHt9KSkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKGV4cG9ydHMpIHsgJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBtZXJnZSgpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgc2V0cyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBzZXRzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIGlmIChzZXRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgc2V0c1swXSA9IHNldHNbMF0uc2xpY2UoMCwgLTEpO1xuICAgICAgICB2YXIgeGwgPSBzZXRzLmxlbmd0aCAtIDE7XG4gICAgICAgIGZvciAodmFyIHggPSAxOyB4IDwgeGw7ICsreCkge1xuICAgICAgICAgICAgc2V0c1t4XSA9IHNldHNbeF0uc2xpY2UoMSwgLTEpO1xuICAgICAgICB9XG4gICAgICAgIHNldHNbeGxdID0gc2V0c1t4bF0uc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBzZXRzLmpvaW4oJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzZXRzWzBdO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHN1YmV4cChzdHIpIHtcbiAgICByZXR1cm4gXCIoPzpcIiArIHN0ciArIFwiKVwiO1xufVxuZnVuY3Rpb24gdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gbyA9PT0gdW5kZWZpbmVkID8gXCJ1bmRlZmluZWRcIiA6IG8gPT09IG51bGwgPyBcIm51bGxcIiA6IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zcGxpdChcIiBcIikucG9wKCkuc3BsaXQoXCJdXCIpLnNoaWZ0KCkudG9Mb3dlckNhc2UoKTtcbn1cbmZ1bmN0aW9uIHRvVXBwZXJDYXNlKHN0cikge1xuICAgIHJldHVybiBzdHIudG9VcHBlckNhc2UoKTtcbn1cbmZ1bmN0aW9uIHRvQXJyYXkob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAhPT0gdW5kZWZpbmVkICYmIG9iaiAhPT0gbnVsbCA/IG9iaiBpbnN0YW5jZW9mIEFycmF5ID8gb2JqIDogdHlwZW9mIG9iai5sZW5ndGggIT09IFwibnVtYmVyXCIgfHwgb2JqLnNwbGl0IHx8IG9iai5zZXRJbnRlcnZhbCB8fCBvYmouY2FsbCA/IFtvYmpdIDogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwob2JqKSA6IFtdO1xufVxuZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7XG4gICAgdmFyIG9iaiA9IHRhcmdldDtcbiAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gYnVpbGRFeHBzKGlzSVJJKSB7XG4gICAgdmFyIEFMUEhBJCQgPSBcIltBLVphLXpdXCIsXG4gICAgICAgIENSJCA9IFwiW1xcXFx4MERdXCIsXG4gICAgICAgIERJR0lUJCQgPSBcIlswLTldXCIsXG4gICAgICAgIERRVU9URSQkID0gXCJbXFxcXHgyMl1cIixcbiAgICAgICAgSEVYRElHJCQgPSBtZXJnZShESUdJVCQkLCBcIltBLUZhLWZdXCIpLFxuICAgICAgICAvL2Nhc2UtaW5zZW5zaXRpdmVcbiAgICBMRiQkID0gXCJbXFxcXHgwQV1cIixcbiAgICAgICAgU1AkJCA9IFwiW1xcXFx4MjBdXCIsXG4gICAgICAgIFBDVF9FTkNPREVEJCA9IHN1YmV4cChzdWJleHAoXCIlW0VGZWZdXCIgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkgKyBcInxcIiArIHN1YmV4cChcIiVbODlBLUZhLWZdXCIgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkgKyBcInxcIiArIHN1YmV4cChcIiVcIiArIEhFWERJRyQkICsgSEVYRElHJCQpKSxcbiAgICAgICAgLy9leHBhbmRlZFxuICAgIEdFTl9ERUxJTVMkJCA9IFwiW1xcXFw6XFxcXC9cXFxcP1xcXFwjXFxcXFtcXFxcXVxcXFxAXVwiLFxuICAgICAgICBTVUJfREVMSU1TJCQgPSBcIltcXFxcIVxcXFwkXFxcXCZcXFxcJ1xcXFwoXFxcXClcXFxcKlxcXFwrXFxcXCxcXFxcO1xcXFw9XVwiLFxuICAgICAgICBSRVNFUlZFRCQkID0gbWVyZ2UoR0VOX0RFTElNUyQkLCBTVUJfREVMSU1TJCQpLFxuICAgICAgICBVQ1NDSEFSJCQgPSBpc0lSSSA/IFwiW1xcXFx4QTAtXFxcXHUyMDBEXFxcXHUyMDEwLVxcXFx1MjAyOVxcXFx1MjAyRi1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZFRl1cIiA6IFwiW11cIixcbiAgICAgICAgLy9zdWJzZXQsIGV4Y2x1ZGVzIGJpZGkgY29udHJvbCBjaGFyYWN0ZXJzXG4gICAgSVBSSVZBVEUkJCA9IGlzSVJJID8gXCJbXFxcXHVFMDAwLVxcXFx1RjhGRl1cIiA6IFwiW11cIixcbiAgICAgICAgLy9zdWJzZXRcbiAgICBVTlJFU0VSVkVEJCQgPSBtZXJnZShBTFBIQSQkLCBESUdJVCQkLCBcIltcXFxcLVxcXFwuXFxcXF9cXFxcfl1cIiwgVUNTQ0hBUiQkKSxcbiAgICAgICAgU0NIRU1FJCA9IHN1YmV4cChBTFBIQSQkICsgbWVyZ2UoQUxQSEEkJCwgRElHSVQkJCwgXCJbXFxcXCtcXFxcLVxcXFwuXVwiKSArIFwiKlwiKSxcbiAgICAgICAgVVNFUklORk8kID0gc3ViZXhwKHN1YmV4cChQQ1RfRU5DT0RFRCQgKyBcInxcIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcOl1cIikpICsgXCIqXCIpLFxuICAgICAgICBERUNfT0NURVQkID0gc3ViZXhwKHN1YmV4cChcIjI1WzAtNV1cIikgKyBcInxcIiArIHN1YmV4cChcIjJbMC00XVwiICsgRElHSVQkJCkgKyBcInxcIiArIHN1YmV4cChcIjFcIiArIERJR0lUJCQgKyBESUdJVCQkKSArIFwifFwiICsgc3ViZXhwKFwiWzEtOV1cIiArIERJR0lUJCQpICsgXCJ8XCIgKyBESUdJVCQkKSxcbiAgICAgICAgREVDX09DVEVUX1JFTEFYRUQkID0gc3ViZXhwKHN1YmV4cChcIjI1WzAtNV1cIikgKyBcInxcIiArIHN1YmV4cChcIjJbMC00XVwiICsgRElHSVQkJCkgKyBcInxcIiArIHN1YmV4cChcIjFcIiArIERJR0lUJCQgKyBESUdJVCQkKSArIFwifFwiICsgc3ViZXhwKFwiMD9bMS05XVwiICsgRElHSVQkJCkgKyBcInwwPzA/XCIgKyBESUdJVCQkKSxcbiAgICAgICAgLy9yZWxheGVkIHBhcnNpbmcgcnVsZXNcbiAgICBJUFY0QUREUkVTUyQgPSBzdWJleHAoREVDX09DVEVUX1JFTEFYRUQkICsgXCJcXFxcLlwiICsgREVDX09DVEVUX1JFTEFYRUQkICsgXCJcXFxcLlwiICsgREVDX09DVEVUX1JFTEFYRUQkICsgXCJcXFxcLlwiICsgREVDX09DVEVUX1JFTEFYRUQkKSxcbiAgICAgICAgSDE2JCA9IHN1YmV4cChIRVhESUckJCArIFwiezEsNH1cIiksXG4gICAgICAgIExTMzIkID0gc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiICsgSDE2JCkgKyBcInxcIiArIElQVjRBRERSRVNTJCksXG4gICAgICAgIElQVjZBRERSRVNTMSQgPSBzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7Nn1cIiArIExTMzIkKSxcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICA2KCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1MyJCA9IHN1YmV4cChcIlxcXFw6XFxcXDpcIiArIHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezV9XCIgKyBMUzMyJCksXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgIFwiOjpcIiA1KCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1MzJCA9IHN1YmV4cChzdWJleHAoSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcIns0fVwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgICAgICAgICAgICAgICBoMTYgXSBcIjo6XCIgNCggaDE2IFwiOlwiICkgbHMzMlxuICAgIElQVjZBRERSRVNTNCQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsMX1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7M31cIiArIExTMzIkKSxcbiAgICAgICAgLy9bICoxKCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgMyggaDE2IFwiOlwiICkgbHMzMlxuICAgIElQVjZBRERSRVNTNSQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsMn1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7Mn1cIiArIExTMzIkKSxcbiAgICAgICAgLy9bICoyKCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgMiggaDE2IFwiOlwiICkgbHMzMlxuICAgIElQVjZBRERSRVNTNiQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsM31cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgSDE2JCArIFwiXFxcXDpcIiArIExTMzIkKSxcbiAgICAgICAgLy9bICozKCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgICAgaDE2IFwiOlwiICAgbHMzMlxuICAgIElQVjZBRERSRVNTNyQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsNH1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjQoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAgICAgICAgICAgICAgbHMzMlxuICAgIElQVjZBRERSRVNTOCQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsNX1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgSDE2JCksXG4gICAgICAgIC8vWyAqNSggaDE2IFwiOlwiICkgaDE2IF0gXCI6OlwiICAgICAgICAgICAgICBoMTZcbiAgICBJUFY2QUREUkVTUzkkID0gc3ViZXhwKHN1YmV4cChzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcInswLDZ9XCIgKyBIMTYkKSArIFwiP1xcXFw6XFxcXDpcIiksXG4gICAgICAgIC8vWyAqNiggaDE2IFwiOlwiICkgaDE2IF0gXCI6OlwiXG4gICAgSVBWNkFERFJFU1MkID0gc3ViZXhwKFtJUFY2QUREUkVTUzEkLCBJUFY2QUREUkVTUzIkLCBJUFY2QUREUkVTUzMkLCBJUFY2QUREUkVTUzQkLCBJUFY2QUREUkVTUzUkLCBJUFY2QUREUkVTUzYkLCBJUFY2QUREUkVTUzckLCBJUFY2QUREUkVTUzgkLCBJUFY2QUREUkVTUzkkXS5qb2luKFwifFwiKSksXG4gICAgICAgIFpPTkVJRCQgPSBzdWJleHAoc3ViZXhwKFVOUkVTRVJWRUQkJCArIFwifFwiICsgUENUX0VOQ09ERUQkKSArIFwiK1wiKSxcbiAgICAgICAgLy9SRkMgNjg3NFxuICAgIElQVjZBRERSWiQgPSBzdWJleHAoSVBWNkFERFJFU1MkICsgXCJcXFxcJTI1XCIgKyBaT05FSUQkKSxcbiAgICAgICAgLy9SRkMgNjg3NFxuICAgIElQVjZBRERSWl9SRUxBWEVEJCA9IHN1YmV4cChJUFY2QUREUkVTUyQgKyBzdWJleHAoXCJcXFxcJTI1fFxcXFwlKD8hXCIgKyBIRVhESUckJCArIFwiezJ9KVwiKSArIFpPTkVJRCQpLFxuICAgICAgICAvL1JGQyA2ODc0LCB3aXRoIHJlbGF4ZWQgcGFyc2luZyBydWxlc1xuICAgIElQVkZVVFVSRSQgPSBzdWJleHAoXCJbdlZdXCIgKyBIRVhESUckJCArIFwiK1xcXFwuXCIgKyBtZXJnZShVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCwgXCJbXFxcXDpdXCIpICsgXCIrXCIpLFxuICAgICAgICBJUF9MSVRFUkFMJCA9IHN1YmV4cChcIlxcXFxbXCIgKyBzdWJleHAoSVBWNkFERFJaX1JFTEFYRUQkICsgXCJ8XCIgKyBJUFY2QUREUkVTUyQgKyBcInxcIiArIElQVkZVVFVSRSQpICsgXCJcXFxcXVwiKSxcbiAgICAgICAgLy9SRkMgNjg3NFxuICAgIFJFR19OQU1FJCA9IHN1YmV4cChzdWJleHAoUENUX0VOQ09ERUQkICsgXCJ8XCIgKyBtZXJnZShVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCkpICsgXCIqXCIpLFxuICAgICAgICBIT1NUJCA9IHN1YmV4cChJUF9MSVRFUkFMJCArIFwifFwiICsgSVBWNEFERFJFU1MkICsgXCIoPyFcIiArIFJFR19OQU1FJCArIFwiKVwiICsgXCJ8XCIgKyBSRUdfTkFNRSQpLFxuICAgICAgICBQT1JUJCA9IHN1YmV4cChESUdJVCQkICsgXCIqXCIpLFxuICAgICAgICBBVVRIT1JJVFkkID0gc3ViZXhwKHN1YmV4cChVU0VSSU5GTyQgKyBcIkBcIikgKyBcIj9cIiArIEhPU1QkICsgc3ViZXhwKFwiXFxcXDpcIiArIFBPUlQkKSArIFwiP1wiKSxcbiAgICAgICAgUENIQVIkID0gc3ViZXhwKFBDVF9FTkNPREVEJCArIFwifFwiICsgbWVyZ2UoVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFw6XFxcXEBdXCIpKSxcbiAgICAgICAgU0VHTUVOVCQgPSBzdWJleHAoUENIQVIkICsgXCIqXCIpLFxuICAgICAgICBTRUdNRU5UX05aJCA9IHN1YmV4cChQQ0hBUiQgKyBcIitcIiksXG4gICAgICAgIFNFR01FTlRfTlpfTkMkID0gc3ViZXhwKHN1YmV4cChQQ1RfRU5DT0RFRCQgKyBcInxcIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcQF1cIikpICsgXCIrXCIpLFxuICAgICAgICBQQVRIX0FCRU1QVFkkID0gc3ViZXhwKHN1YmV4cChcIlxcXFwvXCIgKyBTRUdNRU5UJCkgKyBcIipcIiksXG4gICAgICAgIFBBVEhfQUJTT0xVVEUkID0gc3ViZXhwKFwiXFxcXC9cIiArIHN1YmV4cChTRUdNRU5UX05aJCArIFBBVEhfQUJFTVBUWSQpICsgXCI/XCIpLFxuICAgICAgICAvL3NpbXBsaWZpZWRcbiAgICBQQVRIX05PU0NIRU1FJCA9IHN1YmV4cChTRUdNRU5UX05aX05DJCArIFBBVEhfQUJFTVBUWSQpLFxuICAgICAgICAvL3NpbXBsaWZpZWRcbiAgICBQQVRIX1JPT1RMRVNTJCA9IHN1YmV4cChTRUdNRU5UX05aJCArIFBBVEhfQUJFTVBUWSQpLFxuICAgICAgICAvL3NpbXBsaWZpZWRcbiAgICBQQVRIX0VNUFRZJCA9IFwiKD8hXCIgKyBQQ0hBUiQgKyBcIilcIixcbiAgICAgICAgUEFUSCQgPSBzdWJleHAoUEFUSF9BQkVNUFRZJCArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfTk9TQ0hFTUUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQpLFxuICAgICAgICBRVUVSWSQgPSBzdWJleHAoc3ViZXhwKFBDSEFSJCArIFwifFwiICsgbWVyZ2UoXCJbXFxcXC9cXFxcP11cIiwgSVBSSVZBVEUkJCkpICsgXCIqXCIpLFxuICAgICAgICBGUkFHTUVOVCQgPSBzdWJleHAoc3ViZXhwKFBDSEFSJCArIFwifFtcXFxcL1xcXFw/XVwiKSArIFwiKlwiKSxcbiAgICAgICAgSElFUl9QQVJUJCA9IHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvXCIgKyBBVVRIT1JJVFkkICsgUEFUSF9BQkVNUFRZJCkgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQpLFxuICAgICAgICBVUkkkID0gc3ViZXhwKFNDSEVNRSQgKyBcIlxcXFw6XCIgKyBISUVSX1BBUlQkICsgc3ViZXhwKFwiXFxcXD9cIiArIFFVRVJZJCkgKyBcIj9cIiArIHN1YmV4cChcIlxcXFwjXCIgKyBGUkFHTUVOVCQpICsgXCI/XCIpLFxuICAgICAgICBSRUxBVElWRV9QQVJUJCA9IHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvXCIgKyBBVVRIT1JJVFkkICsgUEFUSF9BQkVNUFRZJCkgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX05PU0NIRU1FJCArIFwifFwiICsgUEFUSF9FTVBUWSQpLFxuICAgICAgICBSRUxBVElWRSQgPSBzdWJleHAoUkVMQVRJVkVfUEFSVCQgKyBzdWJleHAoXCJcXFxcP1wiICsgUVVFUlkkKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCNcIiArIEZSQUdNRU5UJCkgKyBcIj9cIiksXG4gICAgICAgIFVSSV9SRUZFUkVOQ0UkID0gc3ViZXhwKFVSSSQgKyBcInxcIiArIFJFTEFUSVZFJCksXG4gICAgICAgIEFCU09MVVRFX1VSSSQgPSBzdWJleHAoU0NIRU1FJCArIFwiXFxcXDpcIiArIEhJRVJfUEFSVCQgKyBzdWJleHAoXCJcXFxcP1wiICsgUVVFUlkkKSArIFwiP1wiKSxcbiAgICAgICAgR0VORVJJQ19SRUYkID0gXCJeKFwiICsgU0NIRU1FJCArIFwiKVxcXFw6XCIgKyBzdWJleHAoc3ViZXhwKFwiXFxcXC9cXFxcLyhcIiArIHN1YmV4cChcIihcIiArIFVTRVJJTkZPJCArIFwiKUBcIikgKyBcIj8oXCIgKyBIT1NUJCArIFwiKVwiICsgc3ViZXhwKFwiXFxcXDooXCIgKyBQT1JUJCArIFwiKVwiKSArIFwiPylcIikgKyBcIj8oXCIgKyBQQVRIX0FCRU1QVFkkICsgXCJ8XCIgKyBQQVRIX0FCU09MVVRFJCArIFwifFwiICsgUEFUSF9ST09UTEVTUyQgKyBcInxcIiArIFBBVEhfRU1QVFkkICsgXCIpXCIpICsgc3ViZXhwKFwiXFxcXD8oXCIgKyBRVUVSWSQgKyBcIilcIikgKyBcIj9cIiArIHN1YmV4cChcIlxcXFwjKFwiICsgRlJBR01FTlQkICsgXCIpXCIpICsgXCI/JFwiLFxuICAgICAgICBSRUxBVElWRV9SRUYkID0gXCJeKCl7MH1cIiArIHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvKFwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/KVwiKSArIFwiPyhcIiArIFBBVEhfQUJFTVBUWSQgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX05PU0NIRU1FJCArIFwifFwiICsgUEFUSF9FTVBUWSQgKyBcIilcIikgKyBzdWJleHAoXCJcXFxcPyhcIiArIFFVRVJZJCArIFwiKVwiKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCMoXCIgKyBGUkFHTUVOVCQgKyBcIilcIikgKyBcIj8kXCIsXG4gICAgICAgIEFCU09MVVRFX1JFRiQgPSBcIl4oXCIgKyBTQ0hFTUUkICsgXCIpXFxcXDpcIiArIHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvKFwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/KVwiKSArIFwiPyhcIiArIFBBVEhfQUJFTVBUWSQgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQgKyBcIilcIikgKyBzdWJleHAoXCJcXFxcPyhcIiArIFFVRVJZJCArIFwiKVwiKSArIFwiPyRcIixcbiAgICAgICAgU0FNRURPQ19SRUYkID0gXCJeXCIgKyBzdWJleHAoXCJcXFxcIyhcIiArIEZSQUdNRU5UJCArIFwiKVwiKSArIFwiPyRcIixcbiAgICAgICAgQVVUSE9SSVRZX1JFRiQgPSBcIl5cIiArIHN1YmV4cChcIihcIiArIFVTRVJJTkZPJCArIFwiKUBcIikgKyBcIj8oXCIgKyBIT1NUJCArIFwiKVwiICsgc3ViZXhwKFwiXFxcXDooXCIgKyBQT1JUJCArIFwiKVwiKSArIFwiPyRcIjtcbiAgICByZXR1cm4ge1xuICAgICAgICBOT1RfU0NIRU1FOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15dXCIsIEFMUEhBJCQsIERJR0lUJCQsIFwiW1xcXFwrXFxcXC1cXFxcLl1cIiksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1VTRVJJTkZPOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJVxcXFw6XVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX0hPU1Q6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXFtcXFxcXVxcXFw6XVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1BBVEg6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXC9cXFxcOlxcXFxAXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1BBVEhfTk9TQ0hFTUU6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXC9cXFxcQF1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQpLCBcImdcIiksXG4gICAgICAgIE5PVF9RVUVSWTogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcOlxcXFxAXFxcXC9cXFxcP11cIiwgSVBSSVZBVEUkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX0ZSQUdNRU5UOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJV1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFw6XFxcXEBcXFxcL1xcXFw/XVwiKSwgXCJnXCIpLFxuICAgICAgICBFU0NBUEU6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXl1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQpLCBcImdcIiksXG4gICAgICAgIFVOUkVTRVJWRUQ6IG5ldyBSZWdFeHAoVU5SRVNFUlZFRCQkLCBcImdcIiksXG4gICAgICAgIE9USEVSX0NIQVJTOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJV1cIiwgVU5SRVNFUlZFRCQkLCBSRVNFUlZFRCQkKSwgXCJnXCIpLFxuICAgICAgICBQQ1RfRU5DT0RFRDogbmV3IFJlZ0V4cChQQ1RfRU5DT0RFRCQsIFwiZ1wiKSxcbiAgICAgICAgSVBWNEFERFJFU1M6IG5ldyBSZWdFeHAoXCJeKFwiICsgSVBWNEFERFJFU1MkICsgXCIpJFwiKSxcbiAgICAgICAgSVBWNkFERFJFU1M6IG5ldyBSZWdFeHAoXCJeXFxcXFs/KFwiICsgSVBWNkFERFJFU1MkICsgXCIpXCIgKyBzdWJleHAoc3ViZXhwKFwiXFxcXCUyNXxcXFxcJSg/IVwiICsgSEVYRElHJCQgKyBcInsyfSlcIikgKyBcIihcIiArIFpPTkVJRCQgKyBcIilcIikgKyBcIj9cXFxcXT8kXCIpIC8vUkZDIDY4NzQsIHdpdGggcmVsYXhlZCBwYXJzaW5nIHJ1bGVzXG4gICAgfTtcbn1cbnZhciBVUklfUFJPVE9DT0wgPSBidWlsZEV4cHMoZmFsc2UpO1xuXG52YXIgSVJJX1BST1RPQ09MID0gYnVpbGRFeHBzKHRydWUpO1xuXG52YXIgc2xpY2VkVG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gc2xpY2VJdGVyYXRvcihhcnIsIGkpIHtcbiAgICB2YXIgX2FyciA9IFtdO1xuICAgIHZhciBfbiA9IHRydWU7XG4gICAgdmFyIF9kID0gZmFsc2U7XG4gICAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBfZCA9IHRydWU7XG4gICAgICBfZSA9IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIF9hcnI7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGFyciwgaSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfSBlbHNlIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGFycikpIHtcbiAgICAgIHJldHVybiBzbGljZUl0ZXJhdG9yKGFyciwgaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpO1xuICAgIH1cbiAgfTtcbn0oKTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxudmFyIHRvQ29uc3VtYWJsZUFycmF5ID0gZnVuY3Rpb24gKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgYXJyMltpXSA9IGFycltpXTtcblxuICAgIHJldHVybiBhcnIyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGFycik7XG4gIH1cbn07XG5cbi8qKiBIaWdoZXN0IHBvc2l0aXZlIHNpZ25lZCAzMi1iaXQgZmxvYXQgdmFsdWUgKi9cblxudmFyIG1heEludCA9IDIxNDc0ODM2NDc7IC8vIGFrYS4gMHg3RkZGRkZGRiBvciAyXjMxLTFcblxuLyoqIEJvb3RzdHJpbmcgcGFyYW1ldGVycyAqL1xudmFyIGJhc2UgPSAzNjtcbnZhciB0TWluID0gMTtcbnZhciB0TWF4ID0gMjY7XG52YXIgc2tldyA9IDM4O1xudmFyIGRhbXAgPSA3MDA7XG52YXIgaW5pdGlhbEJpYXMgPSA3MjtcbnZhciBpbml0aWFsTiA9IDEyODsgLy8gMHg4MFxudmFyIGRlbGltaXRlciA9ICctJzsgLy8gJ1xceDJEJ1xuXG4vKiogUmVndWxhciBleHByZXNzaW9ucyAqL1xudmFyIHJlZ2V4UHVueWNvZGUgPSAvXnhuLS0vO1xudmFyIHJlZ2V4Tm9uQVNDSUkgPSAvW15cXDAtXFx4N0VdLzsgLy8gbm9uLUFTQ0lJIGNoYXJzXG52YXIgcmVnZXhTZXBhcmF0b3JzID0gL1tcXHgyRVxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZzsgLy8gUkZDIDM0OTAgc2VwYXJhdG9yc1xuXG4vKiogRXJyb3IgbWVzc2FnZXMgKi9cbnZhciBlcnJvcnMgPSB7XG5cdCdvdmVyZmxvdyc6ICdPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcycsXG5cdCdub3QtYmFzaWMnOiAnSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KScsXG5cdCdpbnZhbGlkLWlucHV0JzogJ0ludmFsaWQgaW5wdXQnXG59O1xuXG4vKiogQ29udmVuaWVuY2Ugc2hvcnRjdXRzICovXG52YXIgYmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBzdHJpbmdGcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqXG4gKiBBIGdlbmVyaWMgZXJyb3IgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZSBUaGUgZXJyb3IgdHlwZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhyb3dzIGEgYFJhbmdlRXJyb3JgIHdpdGggdGhlIGFwcGxpY2FibGUgZXJyb3IgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gZXJyb3IkMSh0eXBlKSB7XG5cdHRocm93IG5ldyBSYW5nZUVycm9yKGVycm9yc1t0eXBlXSk7XG59XG5cbi8qKlxuICogQSBnZW5lcmljIGBBcnJheSNtYXBgIHV0aWxpdHkgZnVuY3Rpb24uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeSBhcnJheVxuICogaXRlbS5cbiAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgYXJyYXkgb2YgdmFsdWVzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWFwKGFycmF5LCBmbikge1xuXHR2YXIgcmVzdWx0ID0gW107XG5cdHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cdHdoaWxlIChsZW5ndGgtLSkge1xuXHRcdHJlc3VsdFtsZW5ndGhdID0gZm4oYXJyYXlbbGVuZ3RoXSk7XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBBIHNpbXBsZSBgQXJyYXkjbWFwYC1saWtlIHdyYXBwZXIgdG8gd29yayB3aXRoIGRvbWFpbiBuYW1lIHN0cmluZ3Mgb3IgZW1haWxcbiAqIGFkZHJlc3Nlcy5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gZG9tYWluIFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5XG4gKiBjaGFyYWN0ZXIuXG4gKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IHN0cmluZyBvZiBjaGFyYWN0ZXJzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFja1xuICogZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hcERvbWFpbihzdHJpbmcsIGZuKSB7XG5cdHZhciBwYXJ0cyA9IHN0cmluZy5zcGxpdCgnQCcpO1xuXHR2YXIgcmVzdWx0ID0gJyc7XG5cdGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0Ly8gSW4gZW1haWwgYWRkcmVzc2VzLCBvbmx5IHRoZSBkb21haW4gbmFtZSBzaG91bGQgYmUgcHVueWNvZGVkLiBMZWF2ZVxuXHRcdC8vIHRoZSBsb2NhbCBwYXJ0IChpLmUuIGV2ZXJ5dGhpbmcgdXAgdG8gYEBgKSBpbnRhY3QuXG5cdFx0cmVzdWx0ID0gcGFydHNbMF0gKyAnQCc7XG5cdFx0c3RyaW5nID0gcGFydHNbMV07XG5cdH1cblx0Ly8gQXZvaWQgYHNwbGl0KHJlZ2V4KWAgZm9yIElFOCBjb21wYXRpYmlsaXR5LiBTZWUgIzE3LlxuXHRzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShyZWdleFNlcGFyYXRvcnMsICdcXHgyRScpO1xuXHR2YXIgbGFiZWxzID0gc3RyaW5nLnNwbGl0KCcuJyk7XG5cdHZhciBlbmNvZGVkID0gbWFwKGxhYmVscywgZm4pLmpvaW4oJy4nKTtcblx0cmV0dXJuIHJlc3VsdCArIGVuY29kZWQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBudW1lcmljIGNvZGUgcG9pbnRzIG9mIGVhY2ggVW5pY29kZVxuICogY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuIFdoaWxlIEphdmFTY3JpcHQgdXNlcyBVQ1MtMiBpbnRlcm5hbGx5LFxuICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvbnZlcnQgYSBwYWlyIG9mIHN1cnJvZ2F0ZSBoYWx2ZXMgKGVhY2ggb2Ygd2hpY2hcbiAqIFVDUy0yIGV4cG9zZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVycykgaW50byBhIHNpbmdsZSBjb2RlIHBvaW50LFxuICogbWF0Y2hpbmcgVVRGLTE2LlxuICogQHNlZSBgcHVueWNvZGUudWNzMi5lbmNvZGVgXG4gKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG4gKiBAbmFtZSBkZWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmcgVGhlIFVuaWNvZGUgaW5wdXQgc3RyaW5nIChVQ1MtMikuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFRoZSBuZXcgYXJyYXkgb2YgY29kZSBwb2ludHMuXG4gKi9cbmZ1bmN0aW9uIHVjczJkZWNvZGUoc3RyaW5nKSB7XG5cdHZhciBvdXRwdXQgPSBbXTtcblx0dmFyIGNvdW50ZXIgPSAwO1xuXHR2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcblx0d2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcblx0XHR2YXIgdmFsdWUgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcblx0XHRcdC8vIEl0J3MgYSBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXIuXG5cdFx0XHR2YXIgZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0aWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7XG5cdFx0XHRcdC8vIExvdyBzdXJyb2dhdGUuXG5cdFx0XHRcdG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJdCdzIGFuIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZVxuXHRcdFx0XHQvLyBuZXh0IGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpci5cblx0XHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdFx0XHRjb3VudGVyLS07XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RyaW5nIGJhc2VkIG9uIGFuIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmRlY29kZWBcbiAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG4gKiBAbmFtZSBlbmNvZGVcbiAqIEBwYXJhbSB7QXJyYXl9IGNvZGVQb2ludHMgVGhlIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgbmV3IFVuaWNvZGUgc3RyaW5nIChVQ1MtMikuXG4gKi9cbnZhciB1Y3MyZW5jb2RlID0gZnVuY3Rpb24gdWNzMmVuY29kZShhcnJheSkge1xuXHRyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQuYXBwbHkoU3RyaW5nLCB0b0NvbnN1bWFibGVBcnJheShhcnJheSkpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGJhc2ljIGNvZGUgcG9pbnQgaW50byBhIGRpZ2l0L2ludGVnZXIuXG4gKiBAc2VlIGBkaWdpdFRvQmFzaWMoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gY29kZVBvaW50IFRoZSBiYXNpYyBudW1lcmljIGNvZGUgcG9pbnQgdmFsdWUuXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQgKGZvciB1c2UgaW5cbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaW4gdGhlIHJhbmdlIGAwYCB0byBgYmFzZSAtIDFgLCBvciBgYmFzZWAgaWZcbiAqIHRoZSBjb2RlIHBvaW50IGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbHVlLlxuICovXG52YXIgYmFzaWNUb0RpZ2l0ID0gZnVuY3Rpb24gYmFzaWNUb0RpZ2l0KGNvZGVQb2ludCkge1xuXHRpZiAoY29kZVBvaW50IC0gMHgzMCA8IDB4MEEpIHtcblx0XHRyZXR1cm4gY29kZVBvaW50IC0gMHgxNjtcblx0fVxuXHRpZiAoY29kZVBvaW50IC0gMHg0MSA8IDB4MUEpIHtcblx0XHRyZXR1cm4gY29kZVBvaW50IC0gMHg0MTtcblx0fVxuXHRpZiAoY29kZVBvaW50IC0gMHg2MSA8IDB4MUEpIHtcblx0XHRyZXR1cm4gY29kZVBvaW50IC0gMHg2MTtcblx0fVxuXHRyZXR1cm4gYmFzZTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBkaWdpdC9pbnRlZ2VyIGludG8gYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHNlZSBgYmFzaWNUb0RpZ2l0KClgXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IGRpZ2l0IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludC5cbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBiYXNpYyBjb2RlIHBvaW50IHdob3NlIHZhbHVlICh3aGVuIHVzZWQgZm9yXG4gKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGlzIGBkaWdpdGAsIHdoaWNoIG5lZWRzIHRvIGJlIGluIHRoZSByYW5nZVxuICogYDBgIHRvIGBiYXNlIC0gMWAuIElmIGBmbGFnYCBpcyBub24temVybywgdGhlIHVwcGVyY2FzZSBmb3JtIGlzXG4gKiB1c2VkOyBlbHNlLCB0aGUgbG93ZXJjYXNlIGZvcm0gaXMgdXNlZC4gVGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZFxuICogaWYgYGZsYWdgIGlzIG5vbi16ZXJvIGFuZCBgZGlnaXRgIGhhcyBubyB1cHBlcmNhc2UgZm9ybS5cbiAqL1xudmFyIGRpZ2l0VG9CYXNpYyA9IGZ1bmN0aW9uIGRpZ2l0VG9CYXNpYyhkaWdpdCwgZmxhZykge1xuXHQvLyAgMC4uMjUgbWFwIHRvIEFTQ0lJIGEuLnogb3IgQS4uWlxuXHQvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcblx0cmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KSAtICgoZmxhZyAhPSAwKSA8PCA1KTtcbn07XG5cbi8qKlxuICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG4gKiBAcHJpdmF0ZVxuICovXG52YXIgYWRhcHQgPSBmdW5jdGlvbiBhZGFwdChkZWx0YSwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcblx0dmFyIGsgPSAwO1xuXHRkZWx0YSA9IGZpcnN0VGltZSA/IGZsb29yKGRlbHRhIC8gZGFtcCkgOiBkZWx0YSA+PiAxO1xuXHRkZWx0YSArPSBmbG9vcihkZWx0YSAvIG51bVBvaW50cyk7XG5cdGZvciAoOyAvKiBubyBpbml0aWFsaXphdGlvbiAqL2RlbHRhID4gYmFzZU1pbnVzVE1pbiAqIHRNYXggPj4gMTsgayArPSBiYXNlKSB7XG5cdFx0ZGVsdGEgPSBmbG9vcihkZWx0YSAvIGJhc2VNaW51c1RNaW4pO1xuXHR9XG5cdHJldHVybiBmbG9vcihrICsgKGJhc2VNaW51c1RNaW4gKyAxKSAqIGRlbHRhIC8gKGRlbHRhICsgc2tldykpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMgdG8gYSBzdHJpbmcgb2YgVW5pY29kZVxuICogc3ltYm9scy5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuICovXG52YXIgZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGlucHV0KSB7XG5cdC8vIERvbid0IHVzZSBVQ1MtMi5cblx0dmFyIG91dHB1dCA9IFtdO1xuXHR2YXIgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGg7XG5cdHZhciBpID0gMDtcblx0dmFyIG4gPSBpbml0aWFsTjtcblx0dmFyIGJpYXMgPSBpbml0aWFsQmlhcztcblxuXHQvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzOiBsZXQgYGJhc2ljYCBiZSB0aGUgbnVtYmVyIG9mIGlucHV0IGNvZGVcblx0Ly8gcG9pbnRzIGJlZm9yZSB0aGUgbGFzdCBkZWxpbWl0ZXIsIG9yIGAwYCBpZiB0aGVyZSBpcyBub25lLCB0aGVuIGNvcHlcblx0Ly8gdGhlIGZpcnN0IGJhc2ljIGNvZGUgcG9pbnRzIHRvIHRoZSBvdXRwdXQuXG5cblx0dmFyIGJhc2ljID0gaW5wdXQubGFzdEluZGV4T2YoZGVsaW1pdGVyKTtcblx0aWYgKGJhc2ljIDwgMCkge1xuXHRcdGJhc2ljID0gMDtcblx0fVxuXG5cdGZvciAodmFyIGogPSAwOyBqIDwgYmFzaWM7ICsraikge1xuXHRcdC8vIGlmIGl0J3Mgbm90IGEgYmFzaWMgY29kZSBwb2ludFxuXHRcdGlmIChpbnB1dC5jaGFyQ29kZUF0KGopID49IDB4ODApIHtcblx0XHRcdGVycm9yJDEoJ25vdC1iYXNpYycpO1xuXHRcdH1cblx0XHRvdXRwdXQucHVzaChpbnB1dC5jaGFyQ29kZUF0KGopKTtcblx0fVxuXG5cdC8vIE1haW4gZGVjb2RpbmcgbG9vcDogc3RhcnQganVzdCBhZnRlciB0aGUgbGFzdCBkZWxpbWl0ZXIgaWYgYW55IGJhc2ljIGNvZGVcblx0Ly8gcG9pbnRzIHdlcmUgY29waWVkOyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG90aGVyd2lzZS5cblxuXHRmb3IgKHZhciBpbmRleCA9IGJhc2ljID4gMCA/IGJhc2ljICsgMSA6IDA7IGluZGV4IDwgaW5wdXRMZW5ndGg7KSAvKiBubyBmaW5hbCBleHByZXNzaW9uICove1xuXG5cdFx0Ly8gYGluZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGNvbnN1bWVkLlxuXHRcdC8vIERlY29kZSBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIGludG8gYGRlbHRhYCxcblx0XHQvLyB3aGljaCBnZXRzIGFkZGVkIHRvIGBpYC4gVGhlIG92ZXJmbG93IGNoZWNraW5nIGlzIGVhc2llclxuXHRcdC8vIGlmIHdlIGluY3JlYXNlIGBpYCBhcyB3ZSBnbywgdGhlbiBzdWJ0cmFjdCBvZmYgaXRzIHN0YXJ0aW5nXG5cdFx0Ly8gdmFsdWUgYXQgdGhlIGVuZCB0byBvYnRhaW4gYGRlbHRhYC5cblx0XHR2YXIgb2xkaSA9IGk7XG5cdFx0Zm9yICh2YXIgdyA9IDEsIGsgPSBiYXNlOzsgLyogbm8gY29uZGl0aW9uICovayArPSBiYXNlKSB7XG5cblx0XHRcdGlmIChpbmRleCA+PSBpbnB1dExlbmd0aCkge1xuXHRcdFx0XHRlcnJvciQxKCdpbnZhbGlkLWlucHV0Jyk7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBkaWdpdCA9IGJhc2ljVG9EaWdpdChpbnB1dC5jaGFyQ29kZUF0KGluZGV4KyspKTtcblxuXHRcdFx0aWYgKGRpZ2l0ID49IGJhc2UgfHwgZGlnaXQgPiBmbG9vcigobWF4SW50IC0gaSkgLyB3KSkge1xuXHRcdFx0XHRlcnJvciQxKCdvdmVyZmxvdycpO1xuXHRcdFx0fVxuXG5cdFx0XHRpICs9IGRpZ2l0ICogdztcblx0XHRcdHZhciB0ID0gayA8PSBiaWFzID8gdE1pbiA6IGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXM7XG5cblx0XHRcdGlmIChkaWdpdCA8IHQpIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRpZiAodyA+IGZsb29yKG1heEludCAvIGJhc2VNaW51c1QpKSB7XG5cdFx0XHRcdGVycm9yJDEoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdHcgKj0gYmFzZU1pbnVzVDtcblx0XHR9XG5cblx0XHR2YXIgb3V0ID0gb3V0cHV0Lmxlbmd0aCArIDE7XG5cdFx0YmlhcyA9IGFkYXB0KGkgLSBvbGRpLCBvdXQsIG9sZGkgPT0gMCk7XG5cblx0XHQvLyBgaWAgd2FzIHN1cHBvc2VkIHRvIHdyYXAgYXJvdW5kIGZyb20gYG91dGAgdG8gYDBgLFxuXHRcdC8vIGluY3JlbWVudGluZyBgbmAgZWFjaCB0aW1lLCBzbyB3ZSdsbCBmaXggdGhhdCBub3c6XG5cdFx0aWYgKGZsb29yKGkgLyBvdXQpID4gbWF4SW50IC0gbikge1xuXHRcdFx0ZXJyb3IkMSgnb3ZlcmZsb3cnKTtcblx0XHR9XG5cblx0XHRuICs9IGZsb29yKGkgLyBvdXQpO1xuXHRcdGkgJT0gb3V0O1xuXG5cdFx0Ly8gSW5zZXJ0IGBuYCBhdCBwb3NpdGlvbiBgaWAgb2YgdGhlIG91dHB1dC5cblx0XHRvdXRwdXQuc3BsaWNlKGkrKywgMCwgbik7XG5cdH1cblxuXHRyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQuYXBwbHkoU3RyaW5nLCBvdXRwdXQpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMgKGUuZy4gYSBkb21haW4gbmFtZSBsYWJlbCkgdG8gYVxuICogUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICovXG52YXIgZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGlucHV0KSB7XG5cdHZhciBvdXRwdXQgPSBbXTtcblxuXHQvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBhbiBhcnJheSBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLlxuXHRpbnB1dCA9IHVjczJkZWNvZGUoaW5wdXQpO1xuXG5cdC8vIENhY2hlIHRoZSBsZW5ndGguXG5cdHZhciBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblxuXHQvLyBJbml0aWFsaXplIHRoZSBzdGF0ZS5cblx0dmFyIG4gPSBpbml0aWFsTjtcblx0dmFyIGRlbHRhID0gMDtcblx0dmFyIGJpYXMgPSBpbml0aWFsQmlhcztcblxuXHQvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzLlxuXHR2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWU7XG5cdHZhciBfZGlkSXRlcmF0b3JFcnJvciA9IGZhbHNlO1xuXHR2YXIgX2l0ZXJhdG9yRXJyb3IgPSB1bmRlZmluZWQ7XG5cblx0dHJ5IHtcblx0XHRmb3IgKHZhciBfaXRlcmF0b3IgPSBpbnB1dFtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSAoX3N0ZXAgPSBfaXRlcmF0b3IubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWUpIHtcblx0XHRcdHZhciBfY3VycmVudFZhbHVlMiA9IF9zdGVwLnZhbHVlO1xuXG5cdFx0XHRpZiAoX2N1cnJlbnRWYWx1ZTIgPCAweDgwKSB7XG5cdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShfY3VycmVudFZhbHVlMikpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0X2RpZEl0ZXJhdG9yRXJyb3IgPSB0cnVlO1xuXHRcdF9pdGVyYXRvckVycm9yID0gZXJyO1xuXHR9IGZpbmFsbHkge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gJiYgX2l0ZXJhdG9yLnJldHVybikge1xuXHRcdFx0XHRfaXRlcmF0b3IucmV0dXJuKCk7XG5cdFx0XHR9XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdGlmIChfZGlkSXRlcmF0b3JFcnJvcikge1xuXHRcdFx0XHR0aHJvdyBfaXRlcmF0b3JFcnJvcjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHR2YXIgYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoO1xuXHR2YXIgaGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aDtcblxuXHQvLyBgaGFuZGxlZENQQ291bnRgIGlzIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgdGhhdCBoYXZlIGJlZW4gaGFuZGxlZDtcblx0Ly8gYGJhc2ljTGVuZ3RoYCBpcyB0aGUgbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuXG5cdC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIHdpdGggYSBkZWxpbWl0ZXIgdW5sZXNzIGl0J3MgZW1wdHkuXG5cdGlmIChiYXNpY0xlbmd0aCkge1xuXHRcdG91dHB1dC5wdXNoKGRlbGltaXRlcik7XG5cdH1cblxuXHQvLyBNYWluIGVuY29kaW5nIGxvb3A6XG5cdHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG5cblx0XHQvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0XG5cdFx0Ly8gbGFyZ2VyIG9uZTpcblx0XHR2YXIgbSA9IG1heEludDtcblx0XHR2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSB0cnVlO1xuXHRcdHZhciBfZGlkSXRlcmF0b3JFcnJvcjIgPSBmYWxzZTtcblx0XHR2YXIgX2l0ZXJhdG9yRXJyb3IyID0gdW5kZWZpbmVkO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGZvciAodmFyIF9pdGVyYXRvcjIgPSBpbnB1dFtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMjsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IChfc3RlcDIgPSBfaXRlcmF0b3IyLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZSkge1xuXHRcdFx0XHR2YXIgY3VycmVudFZhbHVlID0gX3N0ZXAyLnZhbHVlO1xuXG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG5cdFx0XHRcdFx0bSA9IGN1cnJlbnRWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sXG5cdFx0XHQvLyBidXQgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdy5cblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdF9kaWRJdGVyYXRvckVycm9yMiA9IHRydWU7XG5cdFx0XHRfaXRlcmF0b3JFcnJvcjIgPSBlcnI7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgJiYgX2l0ZXJhdG9yMi5yZXR1cm4pIHtcblx0XHRcdFx0XHRfaXRlcmF0b3IyLnJldHVybigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyKSB7XG5cdFx0XHRcdFx0dGhyb3cgX2l0ZXJhdG9yRXJyb3IyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dmFyIGhhbmRsZWRDUENvdW50UGx1c09uZSA9IGhhbmRsZWRDUENvdW50ICsgMTtcblx0XHRpZiAobSAtIG4gPiBmbG9vcigobWF4SW50IC0gZGVsdGEpIC8gaGFuZGxlZENQQ291bnRQbHVzT25lKSkge1xuXHRcdFx0ZXJyb3IkMSgnb3ZlcmZsb3cnKTtcblx0XHR9XG5cblx0XHRkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuXHRcdG4gPSBtO1xuXG5cdFx0dmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZTtcblx0XHR2YXIgX2RpZEl0ZXJhdG9yRXJyb3IzID0gZmFsc2U7XG5cdFx0dmFyIF9pdGVyYXRvckVycm9yMyA9IHVuZGVmaW5lZDtcblxuXHRcdHRyeSB7XG5cdFx0XHRmb3IgKHZhciBfaXRlcmF0b3IzID0gaW5wdXRbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDM7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSAoX3N0ZXAzID0gX2l0ZXJhdG9yMy5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWUpIHtcblx0XHRcdFx0dmFyIF9jdXJyZW50VmFsdWUgPSBfc3RlcDMudmFsdWU7XG5cblx0XHRcdFx0aWYgKF9jdXJyZW50VmFsdWUgPCBuICYmICsrZGVsdGEgPiBtYXhJbnQpIHtcblx0XHRcdFx0XHRlcnJvciQxKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChfY3VycmVudFZhbHVlID09IG4pIHtcblx0XHRcdFx0XHQvLyBSZXByZXNlbnQgZGVsdGEgYXMgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlci5cblx0XHRcdFx0XHR2YXIgcSA9IGRlbHRhO1xuXHRcdFx0XHRcdGZvciAodmFyIGsgPSBiYXNlOzsgLyogbm8gY29uZGl0aW9uICovayArPSBiYXNlKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IGsgPD0gYmlhcyA/IHRNaW4gOiBrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzO1xuXHRcdFx0XHRcdFx0aWYgKHEgPCB0KSB7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIHFNaW51c1QgPSBxIC0gdDtcblx0XHRcdFx0XHRcdHZhciBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpKTtcblx0XHRcdFx0XHRcdHEgPSBmbG9vcihxTWludXNUIC8gYmFzZU1pbnVzVCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyhxLCAwKSkpO1xuXHRcdFx0XHRcdGJpYXMgPSBhZGFwdChkZWx0YSwgaGFuZGxlZENQQ291bnRQbHVzT25lLCBoYW5kbGVkQ1BDb3VudCA9PSBiYXNpY0xlbmd0aCk7XG5cdFx0XHRcdFx0ZGVsdGEgPSAwO1xuXHRcdFx0XHRcdCsraGFuZGxlZENQQ291bnQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdF9kaWRJdGVyYXRvckVycm9yMyA9IHRydWU7XG5cdFx0XHRfaXRlcmF0b3JFcnJvcjMgPSBlcnI7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgJiYgX2l0ZXJhdG9yMy5yZXR1cm4pIHtcblx0XHRcdFx0XHRfaXRlcmF0b3IzLnJldHVybigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRpZiAoX2RpZEl0ZXJhdG9yRXJyb3IzKSB7XG5cdFx0XHRcdFx0dGhyb3cgX2l0ZXJhdG9yRXJyb3IzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0KytkZWx0YTtcblx0XHQrK247XG5cdH1cblx0cmV0dXJuIG91dHB1dC5qb2luKCcnKTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzc1xuICogdG8gVW5pY29kZS4gT25seSB0aGUgUHVueWNvZGVkIHBhcnRzIG9mIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZCwgaS5lLlxuICogaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgb24gYSBzdHJpbmcgdGhhdCBoYXMgYWxyZWFkeSBiZWVuXG4gKiBjb252ZXJ0ZWQgdG8gVW5pY29kZS5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZWQgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0b1xuICogY29udmVydCB0byBVbmljb2RlLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFVuaWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIFB1bnljb2RlXG4gKiBzdHJpbmcuXG4gKi9cbnZhciB0b1VuaWNvZGUgPSBmdW5jdGlvbiB0b1VuaWNvZGUoaW5wdXQpIHtcblx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24gKHN0cmluZykge1xuXHRcdHJldHVybiByZWdleFB1bnljb2RlLnRlc3Qoc3RyaW5nKSA/IGRlY29kZShzdHJpbmcuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSkgOiBzdHJpbmc7XG5cdH0pO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFVuaWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGRvbWFpbiBuYW1lIG9yIGFuIGVtYWlsIGFkZHJlc3MgdG9cbiAqIFB1bnljb2RlLiBPbmx5IHRoZSBub24tQVNDSUkgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHdpbGwgYmUgY29udmVydGVkLFxuICogaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQncyBhbHJlYWR5IGluXG4gKiBBU0NJSS5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvIGNvbnZlcnQsIGFzIGFcbiAqIFVuaWNvZGUgc3RyaW5nLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFB1bnljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBkb21haW4gbmFtZSBvclxuICogZW1haWwgYWRkcmVzcy5cbiAqL1xudmFyIHRvQVNDSUkgPSBmdW5jdGlvbiB0b0FTQ0lJKGlucHV0KSB7XG5cdHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uIChzdHJpbmcpIHtcblx0XHRyZXR1cm4gcmVnZXhOb25BU0NJSS50ZXN0KHN0cmluZykgPyAneG4tLScgKyBlbmNvZGUoc3RyaW5nKSA6IHN0cmluZztcblx0fSk7XG59O1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqIERlZmluZSB0aGUgcHVibGljIEFQSSAqL1xudmFyIHB1bnljb2RlID0ge1xuXHQvKipcbiAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgUHVueWNvZGUuanMgdmVyc2lvbiBudW1iZXIuXG4gICogQG1lbWJlck9mIHB1bnljb2RlXG4gICogQHR5cGUgU3RyaW5nXG4gICovXG5cdCd2ZXJzaW9uJzogJzIuMS4wJyxcblx0LyoqXG4gICogQW4gb2JqZWN0IG9mIG1ldGhvZHMgdG8gY29udmVydCBmcm9tIEphdmFTY3JpcHQncyBpbnRlcm5hbCBjaGFyYWN0ZXJcbiAgKiByZXByZXNlbnRhdGlvbiAoVUNTLTIpIHRvIFVuaWNvZGUgY29kZSBwb2ludHMsIGFuZCBiYWNrLlxuICAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuICAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICAqIEB0eXBlIE9iamVjdFxuICAqL1xuXHQndWNzMic6IHtcblx0XHQnZGVjb2RlJzogdWNzMmRlY29kZSxcblx0XHQnZW5jb2RlJzogdWNzMmVuY29kZVxuXHR9LFxuXHQnZGVjb2RlJzogZGVjb2RlLFxuXHQnZW5jb2RlJzogZW5jb2RlLFxuXHQndG9BU0NJSSc6IHRvQVNDSUksXG5cdCd0b1VuaWNvZGUnOiB0b1VuaWNvZGVcbn07XG5cbi8qKlxuICogVVJJLmpzXG4gKlxuICogQGZpbGVvdmVydmlldyBBbiBSRkMgMzk4NiBjb21wbGlhbnQsIHNjaGVtZSBleHRlbmRhYmxlIFVSSSBwYXJzaW5nL3ZhbGlkYXRpbmcvcmVzb2x2aW5nIGxpYnJhcnkgZm9yIEphdmFTY3JpcHQuXG4gKiBAYXV0aG9yIDxhIGhyZWY9XCJtYWlsdG86Z2FyeS5jb3VydEBnbWFpbC5jb21cIj5HYXJ5IENvdXJ0PC9hPlxuICogQHNlZSBodHRwOi8vZ2l0aHViLmNvbS9nYXJ5Y291cnQvdXJpLWpzXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTEgR2FyeSBDb3VydC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmVcbiAqIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuICpcbiAqICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mXG4gKiAgICAgICBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3RcbiAqICAgICAgIG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzXG4gKiAgICAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHQVJZIENPVVJUIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRFxuICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEdBUlkgQ09VUlQgT1JcbiAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SXG4gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SXG4gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OXG4gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUZcbiAqIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICpcbiAqIFRoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbiBhcmUgdGhvc2Ugb2YgdGhlXG4gKiBhdXRob3JzIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIHJlcHJlc2VudGluZyBvZmZpY2lhbCBwb2xpY2llcywgZWl0aGVyIGV4cHJlc3NlZFxuICogb3IgaW1wbGllZCwgb2YgR2FyeSBDb3VydC5cbiAqL1xudmFyIFNDSEVNRVMgPSB7fTtcbmZ1bmN0aW9uIHBjdEVuY0NoYXIoY2hyKSB7XG4gICAgdmFyIGMgPSBjaHIuY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgZSA9IHZvaWQgMDtcbiAgICBpZiAoYyA8IDE2KSBlID0gXCIlMFwiICsgYy50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtlbHNlIGlmIChjIDwgMTI4KSBlID0gXCIlXCIgKyBjLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO2Vsc2UgaWYgKGMgPCAyMDQ4KSBlID0gXCIlXCIgKyAoYyA+PiA2IHwgMTkyKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSArIFwiJVwiICsgKGMgJiA2MyB8IDEyOCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7ZWxzZSBlID0gXCIlXCIgKyAoYyA+PiAxMiB8IDIyNCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgKyBcIiVcIiArIChjID4+IDYgJiA2MyB8IDEyOCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgKyBcIiVcIiArIChjICYgNjMgfCAxMjgpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgIHJldHVybiBlO1xufVxuZnVuY3Rpb24gcGN0RGVjQ2hhcnMoc3RyKSB7XG4gICAgdmFyIG5ld1N0ciA9IFwiXCI7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBpbCA9IHN0ci5sZW5ndGg7XG4gICAgd2hpbGUgKGkgPCBpbCkge1xuICAgICAgICB2YXIgYyA9IHBhcnNlSW50KHN0ci5zdWJzdHIoaSArIDEsIDIpLCAxNik7XG4gICAgICAgIGlmIChjIDwgMTI4KSB7XG4gICAgICAgICAgICBuZXdTdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgfSBlbHNlIGlmIChjID49IDE5NCAmJiBjIDwgMjI0KSB7XG4gICAgICAgICAgICBpZiAoaWwgLSBpID49IDYpIHtcbiAgICAgICAgICAgICAgICB2YXIgYzIgPSBwYXJzZUludChzdHIuc3Vic3RyKGkgKyA0LCAyKSwgMTYpO1xuICAgICAgICAgICAgICAgIG5ld1N0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgMzEpIDw8IDYgfCBjMiAmIDYzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3U3RyICs9IHN0ci5zdWJzdHIoaSwgNik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpICs9IDY7XG4gICAgICAgIH0gZWxzZSBpZiAoYyA+PSAyMjQpIHtcbiAgICAgICAgICAgIGlmIChpbCAtIGkgPj0gOSkge1xuICAgICAgICAgICAgICAgIHZhciBfYyA9IHBhcnNlSW50KHN0ci5zdWJzdHIoaSArIDQsIDIpLCAxNik7XG4gICAgICAgICAgICAgICAgdmFyIGMzID0gcGFyc2VJbnQoc3RyLnN1YnN0cihpICsgNywgMiksIDE2KTtcbiAgICAgICAgICAgICAgICBuZXdTdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyAmIDE1KSA8PCAxMiB8IChfYyAmIDYzKSA8PCA2IHwgYzMgJiA2Myk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld1N0ciArPSBzdHIuc3Vic3RyKGksIDkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSArPSA5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3U3RyICs9IHN0ci5zdWJzdHIoaSwgMyk7XG4gICAgICAgICAgICBpICs9IDM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1N0cjtcbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyhjb21wb25lbnRzLCBwcm90b2NvbCkge1xuICAgIGZ1bmN0aW9uIGRlY29kZVVucmVzZXJ2ZWQoc3RyKSB7XG4gICAgICAgIHZhciBkZWNTdHIgPSBwY3REZWNDaGFycyhzdHIpO1xuICAgICAgICByZXR1cm4gIWRlY1N0ci5tYXRjaChwcm90b2NvbC5VTlJFU0VSVkVEKSA/IHN0ciA6IGRlY1N0cjtcbiAgICB9XG4gICAgaWYgKGNvbXBvbmVudHMuc2NoZW1lKSBjb21wb25lbnRzLnNjaGVtZSA9IFN0cmluZyhjb21wb25lbnRzLnNjaGVtZSkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHByb3RvY29sLk5PVF9TQ0hFTUUsIFwiXCIpO1xuICAgIGlmIChjb21wb25lbnRzLnVzZXJpbmZvICE9PSB1bmRlZmluZWQpIGNvbXBvbmVudHMudXNlcmluZm8gPSBTdHJpbmcoY29tcG9uZW50cy51c2VyaW5mbykucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShwcm90b2NvbC5OT1RfVVNFUklORk8sIHBjdEVuY0NoYXIpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKTtcbiAgICBpZiAoY29tcG9uZW50cy5ob3N0ICE9PSB1bmRlZmluZWQpIGNvbXBvbmVudHMuaG9zdCA9IFN0cmluZyhjb21wb25lbnRzLmhvc3QpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnRvTG93ZXJDYXNlKCkucmVwbGFjZShwcm90b2NvbC5OT1RfSE9TVCwgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIGlmIChjb21wb25lbnRzLnBhdGggIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy5wYXRoID0gU3RyaW5nKGNvbXBvbmVudHMucGF0aCkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShjb21wb25lbnRzLnNjaGVtZSA/IHByb3RvY29sLk5PVF9QQVRIIDogcHJvdG9jb2wuTk9UX1BBVEhfTk9TQ0hFTUUsIHBjdEVuY0NoYXIpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKTtcbiAgICBpZiAoY29tcG9uZW50cy5xdWVyeSAhPT0gdW5kZWZpbmVkKSBjb21wb25lbnRzLnF1ZXJ5ID0gU3RyaW5nKGNvbXBvbmVudHMucXVlcnkpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UocHJvdG9jb2wuTk9UX1FVRVJZLCBwY3RFbmNDaGFyKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSk7XG4gICAgaWYgKGNvbXBvbmVudHMuZnJhZ21lbnQgIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy5mcmFnbWVudCA9IFN0cmluZyhjb21wb25lbnRzLmZyYWdtZW50KS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKHByb3RvY29sLk5PVF9GUkFHTUVOVCwgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIHJldHVybiBjb21wb25lbnRzO1xufVxuXG5mdW5jdGlvbiBfc3RyaXBMZWFkaW5nWmVyb3Moc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eMCooLiopLywgXCIkMVwiKSB8fCBcIjBcIjtcbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVJUHY0KGhvc3QsIHByb3RvY29sKSB7XG4gICAgdmFyIG1hdGNoZXMgPSBob3N0Lm1hdGNoKHByb3RvY29sLklQVjRBRERSRVNTKSB8fCBbXTtcblxuICAgIHZhciBfbWF0Y2hlcyA9IHNsaWNlZFRvQXJyYXkobWF0Y2hlcywgMiksXG4gICAgICAgIGFkZHJlc3MgPSBfbWF0Y2hlc1sxXTtcblxuICAgIGlmIChhZGRyZXNzKSB7XG4gICAgICAgIHJldHVybiBhZGRyZXNzLnNwbGl0KFwiLlwiKS5tYXAoX3N0cmlwTGVhZGluZ1plcm9zKS5qb2luKFwiLlwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaG9zdDtcbiAgICB9XG59XG5mdW5jdGlvbiBfbm9ybWFsaXplSVB2Nihob3N0LCBwcm90b2NvbCkge1xuICAgIHZhciBtYXRjaGVzID0gaG9zdC5tYXRjaChwcm90b2NvbC5JUFY2QUREUkVTUykgfHwgW107XG5cbiAgICB2YXIgX21hdGNoZXMyID0gc2xpY2VkVG9BcnJheShtYXRjaGVzLCAzKSxcbiAgICAgICAgYWRkcmVzcyA9IF9tYXRjaGVzMlsxXSxcbiAgICAgICAgem9uZSA9IF9tYXRjaGVzMlsyXTtcblxuICAgIGlmIChhZGRyZXNzKSB7XG4gICAgICAgIHZhciBfYWRkcmVzcyR0b0xvd2VyQ2FzZSQgPSBhZGRyZXNzLnRvTG93ZXJDYXNlKCkuc3BsaXQoJzo6JykucmV2ZXJzZSgpLFxuICAgICAgICAgICAgX2FkZHJlc3MkdG9Mb3dlckNhc2UkMiA9IHNsaWNlZFRvQXJyYXkoX2FkZHJlc3MkdG9Mb3dlckNhc2UkLCAyKSxcbiAgICAgICAgICAgIGxhc3QgPSBfYWRkcmVzcyR0b0xvd2VyQ2FzZSQyWzBdLFxuICAgICAgICAgICAgZmlyc3QgPSBfYWRkcmVzcyR0b0xvd2VyQ2FzZSQyWzFdO1xuXG4gICAgICAgIHZhciBmaXJzdEZpZWxkcyA9IGZpcnN0ID8gZmlyc3Quc3BsaXQoXCI6XCIpLm1hcChfc3RyaXBMZWFkaW5nWmVyb3MpIDogW107XG4gICAgICAgIHZhciBsYXN0RmllbGRzID0gbGFzdC5zcGxpdChcIjpcIikubWFwKF9zdHJpcExlYWRpbmdaZXJvcyk7XG4gICAgICAgIHZhciBpc0xhc3RGaWVsZElQdjRBZGRyZXNzID0gcHJvdG9jb2wuSVBWNEFERFJFU1MudGVzdChsYXN0RmllbGRzW2xhc3RGaWVsZHMubGVuZ3RoIC0gMV0pO1xuICAgICAgICB2YXIgZmllbGRDb3VudCA9IGlzTGFzdEZpZWxkSVB2NEFkZHJlc3MgPyA3IDogODtcbiAgICAgICAgdmFyIGxhc3RGaWVsZHNTdGFydCA9IGxhc3RGaWVsZHMubGVuZ3RoIC0gZmllbGRDb3VudDtcbiAgICAgICAgdmFyIGZpZWxkcyA9IEFycmF5KGZpZWxkQ291bnQpO1xuICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGZpZWxkQ291bnQ7ICsreCkge1xuICAgICAgICAgICAgZmllbGRzW3hdID0gZmlyc3RGaWVsZHNbeF0gfHwgbGFzdEZpZWxkc1tsYXN0RmllbGRzU3RhcnQgKyB4XSB8fCAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNMYXN0RmllbGRJUHY0QWRkcmVzcykge1xuICAgICAgICAgICAgZmllbGRzW2ZpZWxkQ291bnQgLSAxXSA9IF9ub3JtYWxpemVJUHY0KGZpZWxkc1tmaWVsZENvdW50IC0gMV0sIHByb3RvY29sKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYWxsWmVyb0ZpZWxkcyA9IGZpZWxkcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgZmllbGQsIGluZGV4KSB7XG4gICAgICAgICAgICBpZiAoIWZpZWxkIHx8IGZpZWxkID09PSBcIjBcIikge1xuICAgICAgICAgICAgICAgIHZhciBsYXN0TG9uZ2VzdCA9IGFjY1thY2MubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKGxhc3RMb25nZXN0ICYmIGxhc3RMb25nZXN0LmluZGV4ICsgbGFzdExvbmdlc3QubGVuZ3RoID09PSBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBsYXN0TG9uZ2VzdC5sZW5ndGgrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhY2MucHVzaCh7IGluZGV4OiBpbmRleCwgbGVuZ3RoOiAxIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgICAgdmFyIGxvbmdlc3RaZXJvRmllbGRzID0gYWxsWmVyb0ZpZWxkcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfSlbMF07XG4gICAgICAgIHZhciBuZXdIb3N0ID0gdm9pZCAwO1xuICAgICAgICBpZiAobG9uZ2VzdFplcm9GaWVsZHMgJiYgbG9uZ2VzdFplcm9GaWVsZHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdmFyIG5ld0ZpcnN0ID0gZmllbGRzLnNsaWNlKDAsIGxvbmdlc3RaZXJvRmllbGRzLmluZGV4KTtcbiAgICAgICAgICAgIHZhciBuZXdMYXN0ID0gZmllbGRzLnNsaWNlKGxvbmdlc3RaZXJvRmllbGRzLmluZGV4ICsgbG9uZ2VzdFplcm9GaWVsZHMubGVuZ3RoKTtcbiAgICAgICAgICAgIG5ld0hvc3QgPSBuZXdGaXJzdC5qb2luKFwiOlwiKSArIFwiOjpcIiArIG5ld0xhc3Quam9pbihcIjpcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdIb3N0ID0gZmllbGRzLmpvaW4oXCI6XCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh6b25lKSB7XG4gICAgICAgICAgICBuZXdIb3N0ICs9IFwiJVwiICsgem9uZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3SG9zdDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaG9zdDtcbiAgICB9XG59XG52YXIgVVJJX1BBUlNFID0gL14oPzooW146XFwvPyNdKyk6KT8oPzpcXC9cXC8oKD86KFteXFwvPyNAXSopQCk/KFxcW1teXFwvPyNcXF1dK1xcXXxbXlxcLz8jOl0qKSg/OlxcOihcXGQqKSk/KSk/KFtePyNdKikoPzpcXD8oW14jXSopKT8oPzojKCg/Oi58XFxufFxccikqKSk/L2k7XG52YXIgTk9fTUFUQ0hfSVNfVU5ERUZJTkVEID0gXCJcIi5tYXRjaCgvKCl7MH0vKVsxXSA9PT0gdW5kZWZpbmVkO1xuZnVuY3Rpb24gcGFyc2UodXJpU3RyaW5nKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgdmFyIGNvbXBvbmVudHMgPSB7fTtcbiAgICB2YXIgcHJvdG9jb2wgPSBvcHRpb25zLmlyaSAhPT0gZmFsc2UgPyBJUklfUFJPVE9DT0wgOiBVUklfUFJPVE9DT0w7XG4gICAgaWYgKG9wdGlvbnMucmVmZXJlbmNlID09PSBcInN1ZmZpeFwiKSB1cmlTdHJpbmcgPSAob3B0aW9ucy5zY2hlbWUgPyBvcHRpb25zLnNjaGVtZSArIFwiOlwiIDogXCJcIikgKyBcIi8vXCIgKyB1cmlTdHJpbmc7XG4gICAgdmFyIG1hdGNoZXMgPSB1cmlTdHJpbmcubWF0Y2goVVJJX1BBUlNFKTtcbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBpZiAoTk9fTUFUQ0hfSVNfVU5ERUZJTkVEKSB7XG4gICAgICAgICAgICAvL3N0b3JlIGVhY2ggY29tcG9uZW50XG4gICAgICAgICAgICBjb21wb25lbnRzLnNjaGVtZSA9IG1hdGNoZXNbMV07XG4gICAgICAgICAgICBjb21wb25lbnRzLnVzZXJpbmZvID0gbWF0Y2hlc1szXTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuaG9zdCA9IG1hdGNoZXNbNF07XG4gICAgICAgICAgICBjb21wb25lbnRzLnBvcnQgPSBwYXJzZUludChtYXRjaGVzWzVdLCAxMCk7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSBtYXRjaGVzWzZdIHx8IFwiXCI7XG4gICAgICAgICAgICBjb21wb25lbnRzLnF1ZXJ5ID0gbWF0Y2hlc1s3XTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZnJhZ21lbnQgPSBtYXRjaGVzWzhdO1xuICAgICAgICAgICAgLy9maXggcG9ydCBudW1iZXJcbiAgICAgICAgICAgIGlmIChpc05hTihjb21wb25lbnRzLnBvcnQpKSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cy5wb3J0ID0gbWF0Y2hlc1s1XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vSUUgRklYIGZvciBpbXByb3BlciBSZWdFeHAgbWF0Y2hpbmdcbiAgICAgICAgICAgIC8vc3RvcmUgZWFjaCBjb21wb25lbnRcbiAgICAgICAgICAgIGNvbXBvbmVudHMuc2NoZW1lID0gbWF0Y2hlc1sxXSB8fCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb21wb25lbnRzLnVzZXJpbmZvID0gdXJpU3RyaW5nLmluZGV4T2YoXCJAXCIpICE9PSAtMSA/IG1hdGNoZXNbM10gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb21wb25lbnRzLmhvc3QgPSB1cmlTdHJpbmcuaW5kZXhPZihcIi8vXCIpICE9PSAtMSA/IG1hdGNoZXNbNF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBvcnQgPSBwYXJzZUludChtYXRjaGVzWzVdLCAxMCk7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSBtYXRjaGVzWzZdIHx8IFwiXCI7XG4gICAgICAgICAgICBjb21wb25lbnRzLnF1ZXJ5ID0gdXJpU3RyaW5nLmluZGV4T2YoXCI/XCIpICE9PSAtMSA/IG1hdGNoZXNbN10gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb21wb25lbnRzLmZyYWdtZW50ID0gdXJpU3RyaW5nLmluZGV4T2YoXCIjXCIpICE9PSAtMSA/IG1hdGNoZXNbOF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAvL2ZpeCBwb3J0IG51bWJlclxuICAgICAgICAgICAgaWYgKGlzTmFOKGNvbXBvbmVudHMucG9ydCkpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzLnBvcnQgPSB1cmlTdHJpbmcubWF0Y2goL1xcL1xcLyg/Oi58XFxuKSpcXDooPzpcXC98XFw/fFxcI3wkKS8pID8gbWF0Y2hlc1s0XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcG9uZW50cy5ob3N0KSB7XG4gICAgICAgICAgICAvL25vcm1hbGl6ZSBJUCBob3N0c1xuICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gX25vcm1hbGl6ZUlQdjYoX25vcm1hbGl6ZUlQdjQoY29tcG9uZW50cy5ob3N0LCBwcm90b2NvbCksIHByb3RvY29sKTtcbiAgICAgICAgfVxuICAgICAgICAvL2RldGVybWluZSByZWZlcmVuY2UgdHlwZVxuICAgICAgICBpZiAoY29tcG9uZW50cy5zY2hlbWUgPT09IHVuZGVmaW5lZCAmJiBjb21wb25lbnRzLnVzZXJpbmZvID09PSB1bmRlZmluZWQgJiYgY29tcG9uZW50cy5ob3N0ID09PSB1bmRlZmluZWQgJiYgY29tcG9uZW50cy5wb3J0ID09PSB1bmRlZmluZWQgJiYgIWNvbXBvbmVudHMucGF0aCAmJiBjb21wb25lbnRzLnF1ZXJ5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucmVmZXJlbmNlID0gXCJzYW1lLWRvY3VtZW50XCI7XG4gICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50cy5zY2hlbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5yZWZlcmVuY2UgPSBcInJlbGF0aXZlXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50cy5mcmFnbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnJlZmVyZW5jZSA9IFwiYWJzb2x1dGVcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucmVmZXJlbmNlID0gXCJ1cmlcIjtcbiAgICAgICAgfVxuICAgICAgICAvL2NoZWNrIGZvciByZWZlcmVuY2UgZXJyb3JzXG4gICAgICAgIGlmIChvcHRpb25zLnJlZmVyZW5jZSAmJiBvcHRpb25zLnJlZmVyZW5jZSAhPT0gXCJzdWZmaXhcIiAmJiBvcHRpb25zLnJlZmVyZW5jZSAhPT0gY29tcG9uZW50cy5yZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZXJyb3IgPSBjb21wb25lbnRzLmVycm9yIHx8IFwiVVJJIGlzIG5vdCBhIFwiICsgb3B0aW9ucy5yZWZlcmVuY2UgKyBcIiByZWZlcmVuY2UuXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy9maW5kIHNjaGVtZSBoYW5kbGVyXG4gICAgICAgIHZhciBzY2hlbWVIYW5kbGVyID0gU0NIRU1FU1sob3B0aW9ucy5zY2hlbWUgfHwgY29tcG9uZW50cy5zY2hlbWUgfHwgXCJcIikudG9Mb3dlckNhc2UoKV07XG4gICAgICAgIC8vY2hlY2sgaWYgc2NoZW1lIGNhbid0IGhhbmRsZSBJUklzXG4gICAgICAgIGlmICghb3B0aW9ucy51bmljb2RlU3VwcG9ydCAmJiAoIXNjaGVtZUhhbmRsZXIgfHwgIXNjaGVtZUhhbmRsZXIudW5pY29kZVN1cHBvcnQpKSB7XG4gICAgICAgICAgICAvL2lmIGhvc3QgY29tcG9uZW50IGlzIGEgZG9tYWluIG5hbWVcbiAgICAgICAgICAgIGlmIChjb21wb25lbnRzLmhvc3QgJiYgKG9wdGlvbnMuZG9tYWluSG9zdCB8fCBzY2hlbWVIYW5kbGVyICYmIHNjaGVtZUhhbmRsZXIuZG9tYWluSG9zdCkpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnZlcnQgVW5pY29kZSBJRE4gLT4gQVNDSUkgSUROXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gcHVueWNvZGUudG9BU0NJSShjb21wb25lbnRzLmhvc3QucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgcGN0RGVjQ2hhcnMpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJIb3N0J3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gQVNDSUkgdmlhIHB1bnljb2RlOiBcIiArIGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9jb252ZXJ0IElSSSAtPiBVUklcbiAgICAgICAgICAgIF9ub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyhjb21wb25lbnRzLCBVUklfUFJPVE9DT0wpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9ub3JtYWxpemUgZW5jb2RpbmdzXG4gICAgICAgICAgICBfbm9ybWFsaXplQ29tcG9uZW50RW5jb2RpbmcoY29tcG9uZW50cywgcHJvdG9jb2wpO1xuICAgICAgICB9XG4gICAgICAgIC8vcGVyZm9ybSBzY2hlbWUgc3BlY2lmaWMgcGFyc2luZ1xuICAgICAgICBpZiAoc2NoZW1lSGFuZGxlciAmJiBzY2hlbWVIYW5kbGVyLnBhcnNlKSB7XG4gICAgICAgICAgICBzY2hlbWVIYW5kbGVyLnBhcnNlKGNvbXBvbmVudHMsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJVUkkgY2FuIG5vdCBiZSBwYXJzZWQuXCI7XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnRzO1xufVxuXG5mdW5jdGlvbiBfcmVjb21wb3NlQXV0aG9yaXR5KGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICB2YXIgcHJvdG9jb2wgPSBvcHRpb25zLmlyaSAhPT0gZmFsc2UgPyBJUklfUFJPVE9DT0wgOiBVUklfUFJPVE9DT0w7XG4gICAgdmFyIHVyaVRva2VucyA9IFtdO1xuICAgIGlmIChjb21wb25lbnRzLnVzZXJpbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50cy51c2VyaW5mbyk7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFwiQFwiKTtcbiAgICB9XG4gICAgaWYgKGNvbXBvbmVudHMuaG9zdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vbm9ybWFsaXplIElQIGhvc3RzLCBhZGQgYnJhY2tldHMgYW5kIGVzY2FwZSB6b25lIHNlcGFyYXRvciBmb3IgSVB2NlxuICAgICAgICB1cmlUb2tlbnMucHVzaChfbm9ybWFsaXplSVB2Nihfbm9ybWFsaXplSVB2NChTdHJpbmcoY29tcG9uZW50cy5ob3N0KSwgcHJvdG9jb2wpLCBwcm90b2NvbCkucmVwbGFjZShwcm90b2NvbC5JUFY2QUREUkVTUywgZnVuY3Rpb24gKF8sICQxLCAkMikge1xuICAgICAgICAgICAgcmV0dXJuIFwiW1wiICsgJDEgKyAoJDIgPyBcIiUyNVwiICsgJDIgOiBcIlwiKSArIFwiXVwiO1xuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29tcG9uZW50cy5wb3J0ID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBjb21wb25lbnRzLnBvcnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goXCI6XCIpO1xuICAgICAgICB1cmlUb2tlbnMucHVzaChTdHJpbmcoY29tcG9uZW50cy5wb3J0KSk7XG4gICAgfVxuICAgIHJldHVybiB1cmlUb2tlbnMubGVuZ3RoID8gdXJpVG9rZW5zLmpvaW4oXCJcIikgOiB1bmRlZmluZWQ7XG59XG5cbnZhciBSRFMxID0gL15cXC5cXC4/XFwvLztcbnZhciBSRFMyID0gL15cXC9cXC4oXFwvfCQpLztcbnZhciBSRFMzID0gL15cXC9cXC5cXC4oXFwvfCQpLztcbnZhciBSRFM1ID0gL15cXC8/KD86LnxcXG4pKj8oPz1cXC98JCkvO1xuZnVuY3Rpb24gcmVtb3ZlRG90U2VnbWVudHMoaW5wdXQpIHtcbiAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgd2hpbGUgKGlucHV0Lmxlbmd0aCkge1xuICAgICAgICBpZiAoaW5wdXQubWF0Y2goUkRTMSkpIHtcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShSRFMxLCBcIlwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5tYXRjaChSRFMyKSkge1xuICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKFJEUzIsIFwiL1wiKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5tYXRjaChSRFMzKSkge1xuICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKFJEUzMsIFwiL1wiKTtcbiAgICAgICAgICAgIG91dHB1dC5wb3AoKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gXCIuXCIgfHwgaW5wdXQgPT09IFwiLi5cIikge1xuICAgICAgICAgICAgaW5wdXQgPSBcIlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGltID0gaW5wdXQubWF0Y2goUkRTNSk7XG4gICAgICAgICAgICBpZiAoaW0pIHtcbiAgICAgICAgICAgICAgICB2YXIgcyA9IGltWzBdO1xuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2Uocy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoKHMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGRvdCBzZWdtZW50IGNvbmRpdGlvblwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0LmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZShjb21wb25lbnRzKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgdmFyIHByb3RvY29sID0gb3B0aW9ucy5pcmkgPyBJUklfUFJPVE9DT0wgOiBVUklfUFJPVE9DT0w7XG4gICAgdmFyIHVyaVRva2VucyA9IFtdO1xuICAgIC8vZmluZCBzY2hlbWUgaGFuZGxlclxuICAgIHZhciBzY2hlbWVIYW5kbGVyID0gU0NIRU1FU1sob3B0aW9ucy5zY2hlbWUgfHwgY29tcG9uZW50cy5zY2hlbWUgfHwgXCJcIikudG9Mb3dlckNhc2UoKV07XG4gICAgLy9wZXJmb3JtIHNjaGVtZSBzcGVjaWZpYyBzZXJpYWxpemF0aW9uXG4gICAgaWYgKHNjaGVtZUhhbmRsZXIgJiYgc2NoZW1lSGFuZGxlci5zZXJpYWxpemUpIHNjaGVtZUhhbmRsZXIuc2VyaWFsaXplKGNvbXBvbmVudHMsIG9wdGlvbnMpO1xuICAgIGlmIChjb21wb25lbnRzLmhvc3QpIHtcbiAgICAgICAgLy9pZiBob3N0IGNvbXBvbmVudCBpcyBhbiBJUHY2IGFkZHJlc3NcbiAgICAgICAgaWYgKHByb3RvY29sLklQVjZBRERSRVNTLnRlc3QoY29tcG9uZW50cy5ob3N0KSkge31cbiAgICAgICAgLy9UT0RPOiBub3JtYWxpemUgSVB2NiBhZGRyZXNzIGFzIHBlciBSRkMgNTk1MlxuXG4gICAgICAgIC8vaWYgaG9zdCBjb21wb25lbnQgaXMgYSBkb21haW4gbmFtZVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zLmRvbWFpbkhvc3QgfHwgc2NoZW1lSGFuZGxlciAmJiBzY2hlbWVIYW5kbGVyLmRvbWFpbkhvc3QpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnZlcnQgSUROIHZpYSBwdW55Y29kZVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMuaG9zdCA9ICFvcHRpb25zLmlyaSA/IHB1bnljb2RlLnRvQVNDSUkoY29tcG9uZW50cy5ob3N0LnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHBjdERlY0NoYXJzKS50b0xvd2VyQ2FzZSgpKSA6IHB1bnljb2RlLnRvVW5pY29kZShjb21wb25lbnRzLmhvc3QpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJIb3N0J3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gXCIgKyAoIW9wdGlvbnMuaXJpID8gXCJBU0NJSVwiIDogXCJVbmljb2RlXCIpICsgXCIgdmlhIHB1bnljb2RlOiBcIiArIGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAvL25vcm1hbGl6ZSBlbmNvZGluZ1xuICAgIF9ub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyhjb21wb25lbnRzLCBwcm90b2NvbCk7XG4gICAgaWYgKG9wdGlvbnMucmVmZXJlbmNlICE9PSBcInN1ZmZpeFwiICYmIGNvbXBvbmVudHMuc2NoZW1lKSB7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKGNvbXBvbmVudHMuc2NoZW1lKTtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goXCI6XCIpO1xuICAgIH1cbiAgICB2YXIgYXV0aG9yaXR5ID0gX3JlY29tcG9zZUF1dGhvcml0eShjb21wb25lbnRzLCBvcHRpb25zKTtcbiAgICBpZiAoYXV0aG9yaXR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMucmVmZXJlbmNlICE9PSBcInN1ZmZpeFwiKSB7XG4gICAgICAgICAgICB1cmlUb2tlbnMucHVzaChcIi8vXCIpO1xuICAgICAgICB9XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKGF1dGhvcml0eSk7XG4gICAgICAgIGlmIChjb21wb25lbnRzLnBhdGggJiYgY29tcG9uZW50cy5wYXRoLmNoYXJBdCgwKSAhPT0gXCIvXCIpIHtcbiAgICAgICAgICAgIHVyaVRva2Vucy5wdXNoKFwiL1wiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5wYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIHMgPSBjb21wb25lbnRzLnBhdGg7XG4gICAgICAgIGlmICghb3B0aW9ucy5hYnNvbHV0ZVBhdGggJiYgKCFzY2hlbWVIYW5kbGVyIHx8ICFzY2hlbWVIYW5kbGVyLmFic29sdXRlUGF0aCkpIHtcbiAgICAgICAgICAgIHMgPSByZW1vdmVEb3RTZWdtZW50cyhzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXV0aG9yaXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoL15cXC9cXC8vLCBcIi8lMkZcIik7IC8vZG9uJ3QgYWxsb3cgdGhlIHBhdGggdG8gc3RhcnQgd2l0aCBcIi8vXCJcbiAgICAgICAgfVxuICAgICAgICB1cmlUb2tlbnMucHVzaChzKTtcbiAgICB9XG4gICAgaWYgKGNvbXBvbmVudHMucXVlcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cmlUb2tlbnMucHVzaChcIj9cIik7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKGNvbXBvbmVudHMucXVlcnkpO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5mcmFnbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFwiI1wiKTtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50cy5mcmFnbWVudCk7XG4gICAgfVxuICAgIHJldHVybiB1cmlUb2tlbnMuam9pbihcIlwiKTsgLy9tZXJnZSB0b2tlbnMgaW50byBhIHN0cmluZ1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50cyhiYXNlLCByZWxhdGl2ZSkge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgICB2YXIgc2tpcE5vcm1hbGl6YXRpb24gPSBhcmd1bWVudHNbM107XG5cbiAgICB2YXIgdGFyZ2V0ID0ge307XG4gICAgaWYgKCFza2lwTm9ybWFsaXphdGlvbikge1xuICAgICAgICBiYXNlID0gcGFyc2Uoc2VyaWFsaXplKGJhc2UsIG9wdGlvbnMpLCBvcHRpb25zKTsgLy9ub3JtYWxpemUgYmFzZSBjb21wb25lbnRzXG4gICAgICAgIHJlbGF0aXZlID0gcGFyc2Uoc2VyaWFsaXplKHJlbGF0aXZlLCBvcHRpb25zKSwgb3B0aW9ucyk7IC8vbm9ybWFsaXplIHJlbGF0aXZlIGNvbXBvbmVudHNcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgaWYgKCFvcHRpb25zLnRvbGVyYW50ICYmIHJlbGF0aXZlLnNjaGVtZSkge1xuICAgICAgICB0YXJnZXQuc2NoZW1lID0gcmVsYXRpdmUuc2NoZW1lO1xuICAgICAgICAvL3RhcmdldC5hdXRob3JpdHkgPSByZWxhdGl2ZS5hdXRob3JpdHk7XG4gICAgICAgIHRhcmdldC51c2VyaW5mbyA9IHJlbGF0aXZlLnVzZXJpbmZvO1xuICAgICAgICB0YXJnZXQuaG9zdCA9IHJlbGF0aXZlLmhvc3Q7XG4gICAgICAgIHRhcmdldC5wb3J0ID0gcmVsYXRpdmUucG9ydDtcbiAgICAgICAgdGFyZ2V0LnBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhyZWxhdGl2ZS5wYXRoIHx8IFwiXCIpO1xuICAgICAgICB0YXJnZXQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVsYXRpdmUudXNlcmluZm8gIT09IHVuZGVmaW5lZCB8fCByZWxhdGl2ZS5ob3N0ICE9PSB1bmRlZmluZWQgfHwgcmVsYXRpdmUucG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvL3RhcmdldC5hdXRob3JpdHkgPSByZWxhdGl2ZS5hdXRob3JpdHk7XG4gICAgICAgICAgICB0YXJnZXQudXNlcmluZm8gPSByZWxhdGl2ZS51c2VyaW5mbztcbiAgICAgICAgICAgIHRhcmdldC5ob3N0ID0gcmVsYXRpdmUuaG9zdDtcbiAgICAgICAgICAgIHRhcmdldC5wb3J0ID0gcmVsYXRpdmUucG9ydDtcbiAgICAgICAgICAgIHRhcmdldC5wYXRoID0gcmVtb3ZlRG90U2VnbWVudHMocmVsYXRpdmUucGF0aCB8fCBcIlwiKTtcbiAgICAgICAgICAgIHRhcmdldC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFyZWxhdGl2ZS5wYXRoKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSBiYXNlLnBhdGg7XG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlLnF1ZXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZWxhdGl2ZS5wYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhyZWxhdGl2ZS5wYXRoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGJhc2UudXNlcmluZm8gIT09IHVuZGVmaW5lZCB8fCBiYXNlLmhvc3QgIT09IHVuZGVmaW5lZCB8fCBiYXNlLnBvcnQgIT09IHVuZGVmaW5lZCkgJiYgIWJhc2UucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSBcIi9cIiArIHJlbGF0aXZlLnBhdGg7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWJhc2UucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSByZWxhdGl2ZS5wYXRoO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSBiYXNlLnBhdGguc2xpY2UoMCwgYmFzZS5wYXRoLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpICsgcmVsYXRpdmUucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHRhcmdldC5wYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL3RhcmdldC5hdXRob3JpdHkgPSBiYXNlLmF1dGhvcml0eTtcbiAgICAgICAgICAgIHRhcmdldC51c2VyaW5mbyA9IGJhc2UudXNlcmluZm87XG4gICAgICAgICAgICB0YXJnZXQuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHRhcmdldC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICB9XG4gICAgICAgIHRhcmdldC5zY2hlbWUgPSBiYXNlLnNjaGVtZTtcbiAgICB9XG4gICAgdGFyZ2V0LmZyYWdtZW50ID0gcmVsYXRpdmUuZnJhZ21lbnQ7XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZShiYXNlVVJJLCByZWxhdGl2ZVVSSSwgb3B0aW9ucykge1xuICAgIHZhciBzY2hlbWVsZXNzT3B0aW9ucyA9IGFzc2lnbih7IHNjaGVtZTogJ251bGwnIH0sIG9wdGlvbnMpO1xuICAgIHJldHVybiBzZXJpYWxpemUocmVzb2x2ZUNvbXBvbmVudHMocGFyc2UoYmFzZVVSSSwgc2NoZW1lbGVzc09wdGlvbnMpLCBwYXJzZShyZWxhdGl2ZVVSSSwgc2NoZW1lbGVzc09wdGlvbnMpLCBzY2hlbWVsZXNzT3B0aW9ucywgdHJ1ZSksIHNjaGVtZWxlc3NPcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplKHVyaSwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgdXJpID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHVyaSA9IHNlcmlhbGl6ZShwYXJzZSh1cmksIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVPZih1cmkpID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHVyaSA9IHBhcnNlKHNlcmlhbGl6ZSh1cmksIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaTtcbn1cblxuZnVuY3Rpb24gZXF1YWwodXJpQSwgdXJpQiwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgdXJpQSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB1cmlBID0gc2VyaWFsaXplKHBhcnNlKHVyaUEsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVPZih1cmlBKSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICB1cmlBID0gc2VyaWFsaXplKHVyaUEsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHVyaUIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdXJpQiA9IHNlcmlhbGl6ZShwYXJzZSh1cmlCLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh0eXBlT2YodXJpQikgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdXJpQiA9IHNlcmlhbGl6ZSh1cmlCLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaUEgPT09IHVyaUI7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUNvbXBvbmVudChzdHIsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gc3RyICYmIHN0ci50b1N0cmluZygpLnJlcGxhY2UoIW9wdGlvbnMgfHwgIW9wdGlvbnMuaXJpID8gVVJJX1BST1RPQ09MLkVTQ0FQRSA6IElSSV9QUk9UT0NPTC5FU0NBUEUsIHBjdEVuY0NoYXIpO1xufVxuXG5mdW5jdGlvbiB1bmVzY2FwZUNvbXBvbmVudChzdHIsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gc3RyICYmIHN0ci50b1N0cmluZygpLnJlcGxhY2UoIW9wdGlvbnMgfHwgIW9wdGlvbnMuaXJpID8gVVJJX1BST1RPQ09MLlBDVF9FTkNPREVEIDogSVJJX1BST1RPQ09MLlBDVF9FTkNPREVELCBwY3REZWNDaGFycyk7XG59XG5cbnZhciBoYW5kbGVyID0ge1xuICAgIHNjaGVtZTogXCJodHRwXCIsXG4gICAgZG9tYWluSG9zdDogdHJ1ZSxcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICAvL3JlcG9ydCBtaXNzaW5nIGhvc3RcbiAgICAgICAgaWYgKCFjb21wb25lbnRzLmhvc3QpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZXJyb3IgPSBjb21wb25lbnRzLmVycm9yIHx8IFwiSFRUUCBVUklzIG11c3QgaGF2ZSBhIGhvc3QuXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uIHNlcmlhbGl6ZShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBzZWN1cmUgPSBTdHJpbmcoY29tcG9uZW50cy5zY2hlbWUpLnRvTG93ZXJDYXNlKCkgPT09IFwiaHR0cHNcIjtcbiAgICAgICAgLy9ub3JtYWxpemUgdGhlIGRlZmF1bHQgcG9ydFxuICAgICAgICBpZiAoY29tcG9uZW50cy5wb3J0ID09PSAoc2VjdXJlID8gNDQzIDogODApIHx8IGNvbXBvbmVudHMucG9ydCA9PT0gXCJcIikge1xuICAgICAgICAgICAgY29tcG9uZW50cy5wb3J0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vbm9ybWFsaXplIHRoZSBlbXB0eSBwYXRoXG4gICAgICAgIGlmICghY29tcG9uZW50cy5wYXRoKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSBcIi9cIjtcbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IFdlIGRvIG5vdCBwYXJzZSBxdWVyeSBzdHJpbmdzIGZvciBIVFRQIFVSSXNcbiAgICAgICAgLy9hcyBXV1cgRm9ybSBVcmwgRW5jb2RlZCBxdWVyeSBzdHJpbmdzIGFyZSBwYXJ0IG9mIHRoZSBIVE1MNCsgc3BlYyxcbiAgICAgICAgLy9hbmQgbm90IHRoZSBIVFRQIHNwZWMuXG4gICAgICAgIHJldHVybiBjb21wb25lbnRzO1xuICAgIH1cbn07XG5cbnZhciBoYW5kbGVyJDEgPSB7XG4gICAgc2NoZW1lOiBcImh0dHBzXCIsXG4gICAgZG9tYWluSG9zdDogaGFuZGxlci5kb21haW5Ib3N0LFxuICAgIHBhcnNlOiBoYW5kbGVyLnBhcnNlLFxuICAgIHNlcmlhbGl6ZTogaGFuZGxlci5zZXJpYWxpemVcbn07XG5cbmZ1bmN0aW9uIGlzU2VjdXJlKHdzQ29tcG9uZW50cykge1xuICAgIHJldHVybiB0eXBlb2Ygd3NDb21wb25lbnRzLnNlY3VyZSA9PT0gJ2Jvb2xlYW4nID8gd3NDb21wb25lbnRzLnNlY3VyZSA6IFN0cmluZyh3c0NvbXBvbmVudHMuc2NoZW1lKS50b0xvd2VyQ2FzZSgpID09PSBcIndzc1wiO1xufVxuLy9SRkMgNjQ1NVxudmFyIGhhbmRsZXIkMiA9IHtcbiAgICBzY2hlbWU6IFwid3NcIixcbiAgICBkb21haW5Ib3N0OiB0cnVlLFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciB3c0NvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuICAgICAgICAvL2luZGljYXRlIGlmIHRoZSBzZWN1cmUgZmxhZyBpcyBzZXRcbiAgICAgICAgd3NDb21wb25lbnRzLnNlY3VyZSA9IGlzU2VjdXJlKHdzQ29tcG9uZW50cyk7XG4gICAgICAgIC8vY29uc3RydWN0IHJlc291Y2UgbmFtZVxuICAgICAgICB3c0NvbXBvbmVudHMucmVzb3VyY2VOYW1lID0gKHdzQ29tcG9uZW50cy5wYXRoIHx8ICcvJykgKyAod3NDb21wb25lbnRzLnF1ZXJ5ID8gJz8nICsgd3NDb21wb25lbnRzLnF1ZXJ5IDogJycpO1xuICAgICAgICB3c0NvbXBvbmVudHMucGF0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgd3NDb21wb25lbnRzLnF1ZXJ5ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gd3NDb21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUod3NDb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIC8vbm9ybWFsaXplIHRoZSBkZWZhdWx0IHBvcnRcbiAgICAgICAgaWYgKHdzQ29tcG9uZW50cy5wb3J0ID09PSAoaXNTZWN1cmUod3NDb21wb25lbnRzKSA/IDQ0MyA6IDgwKSB8fCB3c0NvbXBvbmVudHMucG9ydCA9PT0gXCJcIikge1xuICAgICAgICAgICAgd3NDb21wb25lbnRzLnBvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy9lbnN1cmUgc2NoZW1lIG1hdGNoZXMgc2VjdXJlIGZsYWdcbiAgICAgICAgaWYgKHR5cGVvZiB3c0NvbXBvbmVudHMuc2VjdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHdzQ29tcG9uZW50cy5zY2hlbWUgPSB3c0NvbXBvbmVudHMuc2VjdXJlID8gJ3dzcycgOiAnd3MnO1xuICAgICAgICAgICAgd3NDb21wb25lbnRzLnNlY3VyZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvL3JlY29uc3RydWN0IHBhdGggZnJvbSByZXNvdXJjZSBuYW1lXG4gICAgICAgIGlmICh3c0NvbXBvbmVudHMucmVzb3VyY2VOYW1lKSB7XG4gICAgICAgICAgICB2YXIgX3dzQ29tcG9uZW50cyRyZXNvdXJjID0gd3NDb21wb25lbnRzLnJlc291cmNlTmFtZS5zcGxpdCgnPycpLFxuICAgICAgICAgICAgICAgIF93c0NvbXBvbmVudHMkcmVzb3VyYzIgPSBzbGljZWRUb0FycmF5KF93c0NvbXBvbmVudHMkcmVzb3VyYywgMiksXG4gICAgICAgICAgICAgICAgcGF0aCA9IF93c0NvbXBvbmVudHMkcmVzb3VyYzJbMF0sXG4gICAgICAgICAgICAgICAgcXVlcnkgPSBfd3NDb21wb25lbnRzJHJlc291cmMyWzFdO1xuXG4gICAgICAgICAgICB3c0NvbXBvbmVudHMucGF0aCA9IHBhdGggJiYgcGF0aCAhPT0gJy8nID8gcGF0aCA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHdzQ29tcG9uZW50cy5xdWVyeSA9IHF1ZXJ5O1xuICAgICAgICAgICAgd3NDb21wb25lbnRzLnJlc291cmNlTmFtZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvL2ZvcmJpZCBmcmFnbWVudCBjb21wb25lbnRcbiAgICAgICAgd3NDb21wb25lbnRzLmZyYWdtZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gd3NDb21wb25lbnRzO1xuICAgIH1cbn07XG5cbnZhciBoYW5kbGVyJDMgPSB7XG4gICAgc2NoZW1lOiBcIndzc1wiLFxuICAgIGRvbWFpbkhvc3Q6IGhhbmRsZXIkMi5kb21haW5Ib3N0LFxuICAgIHBhcnNlOiBoYW5kbGVyJDIucGFyc2UsXG4gICAgc2VyaWFsaXplOiBoYW5kbGVyJDIuc2VyaWFsaXplXG59O1xuXG52YXIgTyA9IHt9O1xudmFyIGlzSVJJID0gdHJ1ZTtcbi8vUkZDIDM5ODZcbnZhciBVTlJFU0VSVkVEJCQgPSBcIltBLVphLXowLTlcXFxcLVxcXFwuXFxcXF9cXFxcflwiICsgKGlzSVJJID8gXCJcXFxceEEwLVxcXFx1MjAwRFxcXFx1MjAxMC1cXFxcdTIwMjlcXFxcdTIwMkYtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZGRUZcIiA6IFwiXCIpICsgXCJdXCI7XG52YXIgSEVYRElHJCQgPSBcIlswLTlBLUZhLWZdXCI7IC8vY2FzZS1pbnNlbnNpdGl2ZVxudmFyIFBDVF9FTkNPREVEJCA9IHN1YmV4cChzdWJleHAoXCIlW0VGZWZdXCIgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkgKyBcInxcIiArIHN1YmV4cChcIiVbODlBLUZhLWZdXCIgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkgKyBcInxcIiArIHN1YmV4cChcIiVcIiArIEhFWERJRyQkICsgSEVYRElHJCQpKTsgLy9leHBhbmRlZFxuLy9SRkMgNTMyMiwgZXhjZXB0IHRoZXNlIHN5bWJvbHMgYXMgcGVyIFJGQyA2MDY4OiBAIDogLyA/ICMgWyBdICYgOyA9XG4vL2NvbnN0IEFURVhUJCQgPSBcIltBLVphLXowLTlcXFxcIVxcXFwjXFxcXCRcXFxcJVxcXFwmXFxcXCdcXFxcKlxcXFwrXFxcXC1cXFxcL1xcXFw9XFxcXD9cXFxcXlxcXFxfXFxcXGBcXFxce1xcXFx8XFxcXH1cXFxcfl1cIjtcbi8vY29uc3QgV1NQJCQgPSBcIltcXFxceDIwXFxcXHgwOV1cIjtcbi8vY29uc3QgT0JTX1FURVhUJCQgPSBcIltcXFxceDAxLVxcXFx4MDhcXFxceDBCXFxcXHgwQ1xcXFx4MEUtXFxcXHgxRlxcXFx4N0ZdXCI7ICAvLyglZDEtOCAvICVkMTEtMTIgLyAlZDE0LTMxIC8gJWQxMjcpXG4vL2NvbnN0IFFURVhUJCQgPSBtZXJnZShcIltcXFxceDIxXFxcXHgyMy1cXFxceDVCXFxcXHg1RC1cXFxceDdFXVwiLCBPQlNfUVRFWFQkJCk7ICAvLyVkMzMgLyAlZDM1LTkxIC8gJWQ5My0xMjYgLyBvYnMtcXRleHRcbi8vY29uc3QgVkNIQVIkJCA9IFwiW1xcXFx4MjEtXFxcXHg3RV1cIjtcbi8vY29uc3QgV1NQJCQgPSBcIltcXFxceDIwXFxcXHgwOV1cIjtcbi8vY29uc3QgT0JTX1FQJCA9IHN1YmV4cChcIlxcXFxcXFxcXCIgKyBtZXJnZShcIltcXFxceDAwXFxcXHgwRFxcXFx4MEFdXCIsIE9CU19RVEVYVCQkKSk7ICAvLyVkMCAvIENSIC8gTEYgLyBvYnMtcXRleHRcbi8vY29uc3QgRldTJCA9IHN1YmV4cChzdWJleHAoV1NQJCQgKyBcIipcIiArIFwiXFxcXHgwRFxcXFx4MEFcIikgKyBcIj9cIiArIFdTUCQkICsgXCIrXCIpO1xuLy9jb25zdCBRVU9URURfUEFJUiQgPSBzdWJleHAoc3ViZXhwKFwiXFxcXFxcXFxcIiArIHN1YmV4cChWQ0hBUiQkICsgXCJ8XCIgKyBXU1AkJCkpICsgXCJ8XCIgKyBPQlNfUVAkKTtcbi8vY29uc3QgUVVPVEVEX1NUUklORyQgPSBzdWJleHAoJ1xcXFxcIicgKyBzdWJleHAoRldTJCArIFwiP1wiICsgUUNPTlRFTlQkKSArIFwiKlwiICsgRldTJCArIFwiP1wiICsgJ1xcXFxcIicpO1xudmFyIEFURVhUJCQgPSBcIltBLVphLXowLTlcXFxcIVxcXFwkXFxcXCVcXFxcJ1xcXFwqXFxcXCtcXFxcLVxcXFxeXFxcXF9cXFxcYFxcXFx7XFxcXHxcXFxcfVxcXFx+XVwiO1xudmFyIFFURVhUJCQgPSBcIltcXFxcIVxcXFwkXFxcXCVcXFxcJ1xcXFwoXFxcXClcXFxcKlxcXFwrXFxcXCxcXFxcLVxcXFwuMC05XFxcXDxcXFxcPkEtWlxcXFx4NUUtXFxcXHg3RV1cIjtcbnZhciBWQ0hBUiQkID0gbWVyZ2UoUVRFWFQkJCwgXCJbXFxcXFxcXCJcXFxcXFxcXF1cIik7XG52YXIgU09NRV9ERUxJTVMkJCA9IFwiW1xcXFwhXFxcXCRcXFxcJ1xcXFwoXFxcXClcXFxcKlxcXFwrXFxcXCxcXFxcO1xcXFw6XFxcXEBdXCI7XG52YXIgVU5SRVNFUlZFRCA9IG5ldyBSZWdFeHAoVU5SRVNFUlZFRCQkLCBcImdcIik7XG52YXIgUENUX0VOQ09ERUQgPSBuZXcgUmVnRXhwKFBDVF9FTkNPREVEJCwgXCJnXCIpO1xudmFyIE5PVF9MT0NBTF9QQVJUID0gbmV3IFJlZ0V4cChtZXJnZShcIlteXVwiLCBBVEVYVCQkLCBcIltcXFxcLl1cIiwgJ1tcXFxcXCJdJywgVkNIQVIkJCksIFwiZ1wiKTtcbnZhciBOT1RfSEZOQU1FID0gbmV3IFJlZ0V4cChtZXJnZShcIlteXVwiLCBVTlJFU0VSVkVEJCQsIFNPTUVfREVMSU1TJCQpLCBcImdcIik7XG52YXIgTk9UX0hGVkFMVUUgPSBOT1RfSEZOQU1FO1xuZnVuY3Rpb24gZGVjb2RlVW5yZXNlcnZlZChzdHIpIHtcbiAgICB2YXIgZGVjU3RyID0gcGN0RGVjQ2hhcnMoc3RyKTtcbiAgICByZXR1cm4gIWRlY1N0ci5tYXRjaChVTlJFU0VSVkVEKSA/IHN0ciA6IGRlY1N0cjtcbn1cbnZhciBoYW5kbGVyJDQgPSB7XG4gICAgc2NoZW1lOiBcIm1haWx0b1wiLFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZSQkMShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBtYWlsdG9Db21wb25lbnRzID0gY29tcG9uZW50cztcbiAgICAgICAgdmFyIHRvID0gbWFpbHRvQ29tcG9uZW50cy50byA9IG1haWx0b0NvbXBvbmVudHMucGF0aCA/IG1haWx0b0NvbXBvbmVudHMucGF0aC5zcGxpdChcIixcIikgOiBbXTtcbiAgICAgICAgbWFpbHRvQ29tcG9uZW50cy5wYXRoID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAobWFpbHRvQ29tcG9uZW50cy5xdWVyeSkge1xuICAgICAgICAgICAgdmFyIHVua25vd25IZWFkZXJzID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgaGVhZGVycyA9IHt9O1xuICAgICAgICAgICAgdmFyIGhmaWVsZHMgPSBtYWlsdG9Db21wb25lbnRzLnF1ZXJ5LnNwbGl0KFwiJlwiKTtcbiAgICAgICAgICAgIGZvciAodmFyIHggPSAwLCB4bCA9IGhmaWVsZHMubGVuZ3RoOyB4IDwgeGw7ICsreCkge1xuICAgICAgICAgICAgICAgIHZhciBoZmllbGQgPSBoZmllbGRzW3hdLnNwbGl0KFwiPVwiKTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGhmaWVsZFswXSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidG9cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b0FkZHJzID0gaGZpZWxkWzFdLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF94ID0gMCwgX3hsID0gdG9BZGRycy5sZW5ndGg7IF94IDwgX3hsOyArK194KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8ucHVzaCh0b0FkZHJzW194XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1YmplY3RcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIG1haWx0b0NvbXBvbmVudHMuc3ViamVjdCA9IHVuZXNjYXBlQ29tcG9uZW50KGhmaWVsZFsxXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImJvZHlcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIG1haWx0b0NvbXBvbmVudHMuYm9keSA9IHVuZXNjYXBlQ29tcG9uZW50KGhmaWVsZFsxXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd25IZWFkZXJzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbdW5lc2NhcGVDb21wb25lbnQoaGZpZWxkWzBdLCBvcHRpb25zKV0gPSB1bmVzY2FwZUNvbXBvbmVudChoZmllbGRbMV0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVua25vd25IZWFkZXJzKSBtYWlsdG9Db21wb25lbnRzLmhlYWRlcnMgPSBoZWFkZXJzO1xuICAgICAgICB9XG4gICAgICAgIG1haWx0b0NvbXBvbmVudHMucXVlcnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAodmFyIF94MiA9IDAsIF94bDIgPSB0by5sZW5ndGg7IF94MiA8IF94bDI7ICsrX3gyKSB7XG4gICAgICAgICAgICB2YXIgYWRkciA9IHRvW194Ml0uc3BsaXQoXCJAXCIpO1xuICAgICAgICAgICAgYWRkclswXSA9IHVuZXNjYXBlQ29tcG9uZW50KGFkZHJbMF0pO1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnVuaWNvZGVTdXBwb3J0KSB7XG4gICAgICAgICAgICAgICAgLy9jb252ZXJ0IFVuaWNvZGUgSUROIC0+IEFTQ0lJIElETlxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZHJbMV0gPSBwdW55Y29kZS50b0FTQ0lJKHVuZXNjYXBlQ29tcG9uZW50KGFkZHJbMV0sIG9wdGlvbnMpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFpbHRvQ29tcG9uZW50cy5lcnJvciA9IG1haWx0b0NvbXBvbmVudHMuZXJyb3IgfHwgXCJFbWFpbCBhZGRyZXNzJ3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gQVNDSUkgdmlhIHB1bnljb2RlOiBcIiArIGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhZGRyWzFdID0gdW5lc2NhcGVDb21wb25lbnQoYWRkclsxXSwgb3B0aW9ucykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRvW194Ml0gPSBhZGRyLmpvaW4oXCJAXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYWlsdG9Db21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUkJDEobWFpbHRvQ29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgY29tcG9uZW50cyA9IG1haWx0b0NvbXBvbmVudHM7XG4gICAgICAgIHZhciB0byA9IHRvQXJyYXkobWFpbHRvQ29tcG9uZW50cy50byk7XG4gICAgICAgIGlmICh0bykge1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDAsIHhsID0gdG8ubGVuZ3RoOyB4IDwgeGw7ICsreCkge1xuICAgICAgICAgICAgICAgIHZhciB0b0FkZHIgPSBTdHJpbmcodG9beF0pO1xuICAgICAgICAgICAgICAgIHZhciBhdElkeCA9IHRvQWRkci5sYXN0SW5kZXhPZihcIkBcIik7XG4gICAgICAgICAgICAgICAgdmFyIGxvY2FsUGFydCA9IHRvQWRkci5zbGljZSgwLCBhdElkeCkucmVwbGFjZShQQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShQQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpLnJlcGxhY2UoTk9UX0xPQ0FMX1BBUlQsIHBjdEVuY0NoYXIpO1xuICAgICAgICAgICAgICAgIHZhciBkb21haW4gPSB0b0FkZHIuc2xpY2UoYXRJZHggKyAxKTtcbiAgICAgICAgICAgICAgICAvL2NvbnZlcnQgSUROIHZpYSBwdW55Y29kZVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbiA9ICFvcHRpb25zLmlyaSA/IHB1bnljb2RlLnRvQVNDSUkodW5lc2NhcGVDb21wb25lbnQoZG9tYWluLCBvcHRpb25zKS50b0xvd2VyQ2FzZSgpKSA6IHB1bnljb2RlLnRvVW5pY29kZShkb21haW4pO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJFbWFpbCBhZGRyZXNzJ3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gXCIgKyAoIW9wdGlvbnMuaXJpID8gXCJBU0NJSVwiIDogXCJVbmljb2RlXCIpICsgXCIgdmlhIHB1bnljb2RlOiBcIiArIGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRvW3hdID0gbG9jYWxQYXJ0ICsgXCJAXCIgKyBkb21haW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSB0by5qb2luKFwiLFwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaGVhZGVycyA9IG1haWx0b0NvbXBvbmVudHMuaGVhZGVycyA9IG1haWx0b0NvbXBvbmVudHMuaGVhZGVycyB8fCB7fTtcbiAgICAgICAgaWYgKG1haWx0b0NvbXBvbmVudHMuc3ViamVjdCkgaGVhZGVyc1tcInN1YmplY3RcIl0gPSBtYWlsdG9Db21wb25lbnRzLnN1YmplY3Q7XG4gICAgICAgIGlmIChtYWlsdG9Db21wb25lbnRzLmJvZHkpIGhlYWRlcnNbXCJib2R5XCJdID0gbWFpbHRvQ29tcG9uZW50cy5ib2R5O1xuICAgICAgICB2YXIgZmllbGRzID0gW107XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gaGVhZGVycykge1xuICAgICAgICAgICAgaWYgKGhlYWRlcnNbbmFtZV0gIT09IE9bbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBmaWVsZHMucHVzaChuYW1lLnJlcGxhY2UoUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UoUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKS5yZXBsYWNlKE5PVF9IRk5BTUUsIHBjdEVuY0NoYXIpICsgXCI9XCIgKyBoZWFkZXJzW25hbWVdLnJlcGxhY2UoUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UoUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKS5yZXBsYWNlKE5PVF9IRlZBTFVFLCBwY3RFbmNDaGFyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucXVlcnkgPSBmaWVsZHMuam9pbihcIiZcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgfVxufTtcblxudmFyIFVSTl9QQVJTRSA9IC9eKFteXFw6XSspXFw6KC4qKS87XG4vL1JGQyAyMTQxXG52YXIgaGFuZGxlciQ1ID0ge1xuICAgIHNjaGVtZTogXCJ1cm5cIixcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UkJDEoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgbWF0Y2hlcyA9IGNvbXBvbmVudHMucGF0aCAmJiBjb21wb25lbnRzLnBhdGgubWF0Y2goVVJOX1BBUlNFKTtcbiAgICAgICAgdmFyIHVybkNvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgdmFyIHNjaGVtZSA9IG9wdGlvbnMuc2NoZW1lIHx8IHVybkNvbXBvbmVudHMuc2NoZW1lIHx8IFwidXJuXCI7XG4gICAgICAgICAgICB2YXIgbmlkID0gbWF0Y2hlc1sxXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgdmFyIG5zcyA9IG1hdGNoZXNbMl07XG4gICAgICAgICAgICB2YXIgdXJuU2NoZW1lID0gc2NoZW1lICsgXCI6XCIgKyAob3B0aW9ucy5uaWQgfHwgbmlkKTtcbiAgICAgICAgICAgIHZhciBzY2hlbWVIYW5kbGVyID0gU0NIRU1FU1t1cm5TY2hlbWVdO1xuICAgICAgICAgICAgdXJuQ29tcG9uZW50cy5uaWQgPSBuaWQ7XG4gICAgICAgICAgICB1cm5Db21wb25lbnRzLm5zcyA9IG5zcztcbiAgICAgICAgICAgIHVybkNvbXBvbmVudHMucGF0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChzY2hlbWVIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgdXJuQ29tcG9uZW50cyA9IHNjaGVtZUhhbmRsZXIucGFyc2UodXJuQ29tcG9uZW50cywgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cm5Db21wb25lbnRzLmVycm9yID0gdXJuQ29tcG9uZW50cy5lcnJvciB8fCBcIlVSTiBjYW4gbm90IGJlIHBhcnNlZC5cIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJuQ29tcG9uZW50cztcbiAgICB9LFxuICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24gc2VyaWFsaXplJCQxKHVybkNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHNjaGVtZSA9IG9wdGlvbnMuc2NoZW1lIHx8IHVybkNvbXBvbmVudHMuc2NoZW1lIHx8IFwidXJuXCI7XG4gICAgICAgIHZhciBuaWQgPSB1cm5Db21wb25lbnRzLm5pZDtcbiAgICAgICAgdmFyIHVyblNjaGVtZSA9IHNjaGVtZSArIFwiOlwiICsgKG9wdGlvbnMubmlkIHx8IG5pZCk7XG4gICAgICAgIHZhciBzY2hlbWVIYW5kbGVyID0gU0NIRU1FU1t1cm5TY2hlbWVdO1xuICAgICAgICBpZiAoc2NoZW1lSGFuZGxlcikge1xuICAgICAgICAgICAgdXJuQ29tcG9uZW50cyA9IHNjaGVtZUhhbmRsZXIuc2VyaWFsaXplKHVybkNvbXBvbmVudHMsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1cmlDb21wb25lbnRzID0gdXJuQ29tcG9uZW50cztcbiAgICAgICAgdmFyIG5zcyA9IHVybkNvbXBvbmVudHMubnNzO1xuICAgICAgICB1cmlDb21wb25lbnRzLnBhdGggPSAobmlkIHx8IG9wdGlvbnMubmlkKSArIFwiOlwiICsgbnNzO1xuICAgICAgICByZXR1cm4gdXJpQ29tcG9uZW50cztcbiAgICB9XG59O1xuXG52YXIgVVVJRCA9IC9eWzAtOUEtRmEtZl17OH0oPzpcXC1bMC05QS1GYS1mXXs0fSl7M31cXC1bMC05QS1GYS1mXXsxMn0kLztcbi8vUkZDIDQxMjJcbnZhciBoYW5kbGVyJDYgPSB7XG4gICAgc2NoZW1lOiBcInVybjp1dWlkXCIsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKHVybkNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHV1aWRDb21wb25lbnRzID0gdXJuQ29tcG9uZW50cztcbiAgICAgICAgdXVpZENvbXBvbmVudHMudXVpZCA9IHV1aWRDb21wb25lbnRzLm5zcztcbiAgICAgICAgdXVpZENvbXBvbmVudHMubnNzID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIW9wdGlvbnMudG9sZXJhbnQgJiYgKCF1dWlkQ29tcG9uZW50cy51dWlkIHx8ICF1dWlkQ29tcG9uZW50cy51dWlkLm1hdGNoKFVVSUQpKSkge1xuICAgICAgICAgICAgdXVpZENvbXBvbmVudHMuZXJyb3IgPSB1dWlkQ29tcG9uZW50cy5lcnJvciB8fCBcIlVVSUQgaXMgbm90IHZhbGlkLlwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1dWlkQ29tcG9uZW50cztcbiAgICB9LFxuICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24gc2VyaWFsaXplKHV1aWRDb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciB1cm5Db21wb25lbnRzID0gdXVpZENvbXBvbmVudHM7XG4gICAgICAgIC8vbm9ybWFsaXplIFVVSURcbiAgICAgICAgdXJuQ29tcG9uZW50cy5uc3MgPSAodXVpZENvbXBvbmVudHMudXVpZCB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gdXJuQ29tcG9uZW50cztcbiAgICB9XG59O1xuXG5TQ0hFTUVTW2hhbmRsZXIuc2NoZW1lXSA9IGhhbmRsZXI7XG5TQ0hFTUVTW2hhbmRsZXIkMS5zY2hlbWVdID0gaGFuZGxlciQxO1xuU0NIRU1FU1toYW5kbGVyJDIuc2NoZW1lXSA9IGhhbmRsZXIkMjtcblNDSEVNRVNbaGFuZGxlciQzLnNjaGVtZV0gPSBoYW5kbGVyJDM7XG5TQ0hFTUVTW2hhbmRsZXIkNC5zY2hlbWVdID0gaGFuZGxlciQ0O1xuU0NIRU1FU1toYW5kbGVyJDUuc2NoZW1lXSA9IGhhbmRsZXIkNTtcblNDSEVNRVNbaGFuZGxlciQ2LnNjaGVtZV0gPSBoYW5kbGVyJDY7XG5cbmV4cG9ydHMuU0NIRU1FUyA9IFNDSEVNRVM7XG5leHBvcnRzLnBjdEVuY0NoYXIgPSBwY3RFbmNDaGFyO1xuZXhwb3J0cy5wY3REZWNDaGFycyA9IHBjdERlY0NoYXJzO1xuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuZXhwb3J0cy5yZW1vdmVEb3RTZWdtZW50cyA9IHJlbW92ZURvdFNlZ21lbnRzO1xuZXhwb3J0cy5zZXJpYWxpemUgPSBzZXJpYWxpemU7XG5leHBvcnRzLnJlc29sdmVDb21wb25lbnRzID0gcmVzb2x2ZUNvbXBvbmVudHM7XG5leHBvcnRzLnJlc29sdmUgPSByZXNvbHZlO1xuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5leHBvcnRzLmVxdWFsID0gZXF1YWw7XG5leHBvcnRzLmVzY2FwZUNvbXBvbmVudCA9IGVzY2FwZUNvbXBvbmVudDtcbmV4cG9ydHMudW5lc2NhcGVDb21wb25lbnQgPSB1bmVzY2FwZUNvbXBvbmVudDtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxufSkpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVyaS5hbGwuanMubWFwXG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIGRvIG5vdCBlZGl0IC5qcyBmaWxlcyBkaXJlY3RseSAtIGVkaXQgc3JjL2luZGV4LmpzdFxuXG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBlcXVhbChhLCBiKSB7XG4gIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAoYSAmJiBiICYmIHR5cGVvZiBhID09ICdvYmplY3QnICYmIHR5cGVvZiBiID09ICdvYmplY3QnKSB7XG4gICAgaWYgKGEuY29uc3RydWN0b3IgIT09IGIuY29uc3RydWN0b3IpIHJldHVybiBmYWxzZTtcblxuICAgIHZhciBsZW5ndGgsIGksIGtleXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KVxuICAgICAgICBpZiAoIWVxdWFsKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cblxuXG4gICAgaWYgKGEuY29uc3RydWN0b3IgPT09IFJlZ0V4cCkgcmV0dXJuIGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzO1xuICAgIGlmIChhLnZhbHVlT2YgIT09IE9iamVjdC5wcm90b3R5cGUudmFsdWVPZikgcmV0dXJuIGEudmFsdWVPZigpID09PSBiLnZhbHVlT2YoKTtcbiAgICBpZiAoYS50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykgcmV0dXJuIGEudG9TdHJpbmcoKSA9PT0gYi50b1N0cmluZygpO1xuXG4gICAga2V5cyA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChsZW5ndGggIT09IE9iamVjdC5rZXlzKGIpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KVxuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5c1tpXSkpIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmICghZXF1YWwoYVtrZXldLCBiW2tleV0pKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyB0cnVlIGlmIGJvdGggTmFOLCBmYWxzZSBvdGhlcndpc2VcbiAgcmV0dXJuIGEhPT1hICYmIGIhPT1iO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmdcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iZXN0aWVqcy9wdW55Y29kZS5qcyAtIHB1bnljb2RlLnVjczIuZGVjb2RlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHVjczJsZW5ndGgoc3RyKSB7XG4gIHZhciBsZW5ndGggPSAwXG4gICAgLCBsZW4gPSBzdHIubGVuZ3RoXG4gICAgLCBwb3MgPSAwXG4gICAgLCB2YWx1ZTtcbiAgd2hpbGUgKHBvcyA8IGxlbikge1xuICAgIGxlbmd0aCsrO1xuICAgIHZhbHVlID0gc3RyLmNoYXJDb2RlQXQocG9zKyspO1xuICAgIGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIHBvcyA8IGxlbikge1xuICAgICAgLy8gaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyXG4gICAgICB2YWx1ZSA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoKHZhbHVlICYgMHhGQzAwKSA9PSAweERDMDApIHBvcysrOyAvLyBsb3cgc3Vycm9nYXRlXG4gICAgfVxuICB9XG4gIHJldHVybiBsZW5ndGg7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjb3B5OiBjb3B5LFxuICBjaGVja0RhdGFUeXBlOiBjaGVja0RhdGFUeXBlLFxuICBjaGVja0RhdGFUeXBlczogY2hlY2tEYXRhVHlwZXMsXG4gIGNvZXJjZVRvVHlwZXM6IGNvZXJjZVRvVHlwZXMsXG4gIHRvSGFzaDogdG9IYXNoLFxuICBnZXRQcm9wZXJ0eTogZ2V0UHJvcGVydHksXG4gIGVzY2FwZVF1b3RlczogZXNjYXBlUXVvdGVzLFxuICBlcXVhbDogcmVxdWlyZSgnZmFzdC1kZWVwLWVxdWFsJyksXG4gIHVjczJsZW5ndGg6IHJlcXVpcmUoJy4vdWNzMmxlbmd0aCcpLFxuICB2YXJPY2N1cmVuY2VzOiB2YXJPY2N1cmVuY2VzLFxuICB2YXJSZXBsYWNlOiB2YXJSZXBsYWNlLFxuICBzY2hlbWFIYXNSdWxlczogc2NoZW1hSGFzUnVsZXMsXG4gIHNjaGVtYUhhc1J1bGVzRXhjZXB0OiBzY2hlbWFIYXNSdWxlc0V4Y2VwdCxcbiAgc2NoZW1hVW5rbm93blJ1bGVzOiBzY2hlbWFVbmtub3duUnVsZXMsXG4gIHRvUXVvdGVkU3RyaW5nOiB0b1F1b3RlZFN0cmluZyxcbiAgZ2V0UGF0aEV4cHI6IGdldFBhdGhFeHByLFxuICBnZXRQYXRoOiBnZXRQYXRoLFxuICBnZXREYXRhOiBnZXREYXRhLFxuICB1bmVzY2FwZUZyYWdtZW50OiB1bmVzY2FwZUZyYWdtZW50LFxuICB1bmVzY2FwZUpzb25Qb2ludGVyOiB1bmVzY2FwZUpzb25Qb2ludGVyLFxuICBlc2NhcGVGcmFnbWVudDogZXNjYXBlRnJhZ21lbnQsXG4gIGVzY2FwZUpzb25Qb2ludGVyOiBlc2NhcGVKc29uUG9pbnRlclxufTtcblxuXG5mdW5jdGlvbiBjb3B5KG8sIHRvKSB7XG4gIHRvID0gdG8gfHwge307XG4gIGZvciAodmFyIGtleSBpbiBvKSB0b1trZXldID0gb1trZXldO1xuICByZXR1cm4gdG87XG59XG5cblxuZnVuY3Rpb24gY2hlY2tEYXRhVHlwZShkYXRhVHlwZSwgZGF0YSwgc3RyaWN0TnVtYmVycywgbmVnYXRlKSB7XG4gIHZhciBFUVVBTCA9IG5lZ2F0ZSA/ICcgIT09ICcgOiAnID09PSAnXG4gICAgLCBBTkQgPSBuZWdhdGUgPyAnIHx8ICcgOiAnICYmICdcbiAgICAsIE9LID0gbmVnYXRlID8gJyEnIDogJydcbiAgICAsIE5PVCA9IG5lZ2F0ZSA/ICcnIDogJyEnO1xuICBzd2l0Y2ggKGRhdGFUeXBlKSB7XG4gICAgY2FzZSAnbnVsbCc6IHJldHVybiBkYXRhICsgRVFVQUwgKyAnbnVsbCc7XG4gICAgY2FzZSAnYXJyYXknOiByZXR1cm4gT0sgKyAnQXJyYXkuaXNBcnJheSgnICsgZGF0YSArICcpJztcbiAgICBjYXNlICdvYmplY3QnOiByZXR1cm4gJygnICsgT0sgKyBkYXRhICsgQU5EICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGVvZiAnICsgZGF0YSArIEVRVUFMICsgJ1wib2JqZWN0XCInICsgQU5EICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTk9UICsgJ0FycmF5LmlzQXJyYXkoJyArIGRhdGEgKyAnKSknO1xuICAgIGNhc2UgJ2ludGVnZXInOiByZXR1cm4gJyh0eXBlb2YgJyArIGRhdGEgKyBFUVVBTCArICdcIm51bWJlclwiJyArIEFORCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBOT1QgKyAnKCcgKyBkYXRhICsgJyAlIDEpJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBBTkQgKyBkYXRhICsgRVFVQUwgKyBkYXRhICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpY3ROdW1iZXJzID8gKEFORCArIE9LICsgJ2lzRmluaXRlKCcgKyBkYXRhICsgJyknKSA6ICcnKSArICcpJztcbiAgICBjYXNlICdudW1iZXInOiByZXR1cm4gJyh0eXBlb2YgJyArIGRhdGEgKyBFUVVBTCArICdcIicgKyBkYXRhVHlwZSArICdcIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaWN0TnVtYmVycyA/IChBTkQgKyBPSyArICdpc0Zpbml0ZSgnICsgZGF0YSArICcpJykgOiAnJykgKyAnKSc7XG4gICAgZGVmYXVsdDogcmV0dXJuICd0eXBlb2YgJyArIGRhdGEgKyBFUVVBTCArICdcIicgKyBkYXRhVHlwZSArICdcIic7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBjaGVja0RhdGFUeXBlcyhkYXRhVHlwZXMsIGRhdGEsIHN0cmljdE51bWJlcnMpIHtcbiAgc3dpdGNoIChkYXRhVHlwZXMubGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gY2hlY2tEYXRhVHlwZShkYXRhVHlwZXNbMF0sIGRhdGEsIHN0cmljdE51bWJlcnMsIHRydWUpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB2YXIgY29kZSA9ICcnO1xuICAgICAgdmFyIHR5cGVzID0gdG9IYXNoKGRhdGFUeXBlcyk7XG4gICAgICBpZiAodHlwZXMuYXJyYXkgJiYgdHlwZXMub2JqZWN0KSB7XG4gICAgICAgIGNvZGUgPSB0eXBlcy5udWxsID8gJygnOiAnKCEnICsgZGF0YSArICcgfHwgJztcbiAgICAgICAgY29kZSArPSAndHlwZW9mICcgKyBkYXRhICsgJyAhPT0gXCJvYmplY3RcIiknO1xuICAgICAgICBkZWxldGUgdHlwZXMubnVsbDtcbiAgICAgICAgZGVsZXRlIHR5cGVzLmFycmF5O1xuICAgICAgICBkZWxldGUgdHlwZXMub2JqZWN0O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVzLm51bWJlcikgZGVsZXRlIHR5cGVzLmludGVnZXI7XG4gICAgICBmb3IgKHZhciB0IGluIHR5cGVzKVxuICAgICAgICBjb2RlICs9IChjb2RlID8gJyAmJiAnIDogJycgKSArIGNoZWNrRGF0YVR5cGUodCwgZGF0YSwgc3RyaWN0TnVtYmVycywgdHJ1ZSk7XG5cbiAgICAgIHJldHVybiBjb2RlO1xuICB9XG59XG5cblxudmFyIENPRVJDRV9UT19UWVBFUyA9IHRvSGFzaChbICdzdHJpbmcnLCAnbnVtYmVyJywgJ2ludGVnZXInLCAnYm9vbGVhbicsICdudWxsJyBdKTtcbmZ1bmN0aW9uIGNvZXJjZVRvVHlwZXMob3B0aW9uQ29lcmNlVHlwZXMsIGRhdGFUeXBlcykge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhVHlwZXMpKSB7XG4gICAgdmFyIHR5cGVzID0gW107XG4gICAgZm9yICh2YXIgaT0wOyBpPGRhdGFUeXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHQgPSBkYXRhVHlwZXNbaV07XG4gICAgICBpZiAoQ09FUkNFX1RPX1RZUEVTW3RdKSB0eXBlc1t0eXBlcy5sZW5ndGhdID0gdDtcbiAgICAgIGVsc2UgaWYgKG9wdGlvbkNvZXJjZVR5cGVzID09PSAnYXJyYXknICYmIHQgPT09ICdhcnJheScpIHR5cGVzW3R5cGVzLmxlbmd0aF0gPSB0O1xuICAgIH1cbiAgICBpZiAodHlwZXMubGVuZ3RoKSByZXR1cm4gdHlwZXM7XG4gIH0gZWxzZSBpZiAoQ09FUkNFX1RPX1RZUEVTW2RhdGFUeXBlc10pIHtcbiAgICByZXR1cm4gW2RhdGFUeXBlc107XG4gIH0gZWxzZSBpZiAob3B0aW9uQ29lcmNlVHlwZXMgPT09ICdhcnJheScgJiYgZGF0YVR5cGVzID09PSAnYXJyYXknKSB7XG4gICAgcmV0dXJuIFsnYXJyYXknXTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHRvSGFzaChhcnIpIHtcbiAgdmFyIGhhc2ggPSB7fTtcbiAgZm9yICh2YXIgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykgaGFzaFthcnJbaV1dID0gdHJ1ZTtcbiAgcmV0dXJuIGhhc2g7XG59XG5cblxudmFyIElERU5USUZJRVIgPSAvXlthLXokX11bYS16JF8wLTldKiQvaTtcbnZhciBTSU5HTEVfUVVPVEUgPSAvJ3xcXFxcL2c7XG5mdW5jdGlvbiBnZXRQcm9wZXJ0eShrZXkpIHtcbiAgcmV0dXJuIHR5cGVvZiBrZXkgPT0gJ251bWJlcidcbiAgICAgICAgICA/ICdbJyArIGtleSArICddJ1xuICAgICAgICAgIDogSURFTlRJRklFUi50ZXN0KGtleSlcbiAgICAgICAgICAgID8gJy4nICsga2V5XG4gICAgICAgICAgICA6IFwiWydcIiArIGVzY2FwZVF1b3RlcyhrZXkpICsgXCInXVwiO1xufVxuXG5cbmZ1bmN0aW9uIGVzY2FwZVF1b3RlcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFNJTkdMRV9RVU9URSwgJ1xcXFwkJicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxuL2csICdcXFxcbicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxyL2csICdcXFxccicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxmL2csICdcXFxcZicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFx0L2csICdcXFxcdCcpO1xufVxuXG5cbmZ1bmN0aW9uIHZhck9jY3VyZW5jZXMoc3RyLCBkYXRhVmFyKSB7XG4gIGRhdGFWYXIgKz0gJ1teMC05XSc7XG4gIHZhciBtYXRjaGVzID0gc3RyLm1hdGNoKG5ldyBSZWdFeHAoZGF0YVZhciwgJ2cnKSk7XG4gIHJldHVybiBtYXRjaGVzID8gbWF0Y2hlcy5sZW5ndGggOiAwO1xufVxuXG5cbmZ1bmN0aW9uIHZhclJlcGxhY2Uoc3RyLCBkYXRhVmFyLCBleHByKSB7XG4gIGRhdGFWYXIgKz0gJyhbXjAtOV0pJztcbiAgZXhwciA9IGV4cHIucmVwbGFjZSgvXFwkL2csICckJCQkJyk7XG4gIHJldHVybiBzdHIucmVwbGFjZShuZXcgUmVnRXhwKGRhdGFWYXIsICdnJyksIGV4cHIgKyAnJDEnKTtcbn1cblxuXG5mdW5jdGlvbiBzY2hlbWFIYXNSdWxlcyhzY2hlbWEsIHJ1bGVzKSB7XG4gIGlmICh0eXBlb2Ygc2NoZW1hID09ICdib29sZWFuJykgcmV0dXJuICFzY2hlbWE7XG4gIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIGlmIChydWxlc1trZXldKSByZXR1cm4gdHJ1ZTtcbn1cblxuXG5mdW5jdGlvbiBzY2hlbWFIYXNSdWxlc0V4Y2VwdChzY2hlbWEsIHJ1bGVzLCBleGNlcHRLZXl3b3JkKSB7XG4gIGlmICh0eXBlb2Ygc2NoZW1hID09ICdib29sZWFuJykgcmV0dXJuICFzY2hlbWEgJiYgZXhjZXB0S2V5d29yZCAhPSAnbm90JztcbiAgZm9yICh2YXIga2V5IGluIHNjaGVtYSkgaWYgKGtleSAhPSBleGNlcHRLZXl3b3JkICYmIHJ1bGVzW2tleV0pIHJldHVybiB0cnVlO1xufVxuXG5cbmZ1bmN0aW9uIHNjaGVtYVVua25vd25SdWxlcyhzY2hlbWEsIHJ1bGVzKSB7XG4gIGlmICh0eXBlb2Ygc2NoZW1hID09ICdib29sZWFuJykgcmV0dXJuO1xuICBmb3IgKHZhciBrZXkgaW4gc2NoZW1hKSBpZiAoIXJ1bGVzW2tleV0pIHJldHVybiBrZXk7XG59XG5cblxuZnVuY3Rpb24gdG9RdW90ZWRTdHJpbmcoc3RyKSB7XG4gIHJldHVybiAnXFwnJyArIGVzY2FwZVF1b3RlcyhzdHIpICsgJ1xcJyc7XG59XG5cblxuZnVuY3Rpb24gZ2V0UGF0aEV4cHIoY3VycmVudFBhdGgsIGV4cHIsIGpzb25Qb2ludGVycywgaXNOdW1iZXIpIHtcbiAgdmFyIHBhdGggPSBqc29uUG9pbnRlcnMgLy8gZmFsc2UgYnkgZGVmYXVsdFxuICAgICAgICAgICAgICA/ICdcXCcvXFwnICsgJyArIGV4cHIgKyAoaXNOdW1iZXIgPyAnJyA6ICcucmVwbGFjZSgvfi9nLCBcXCd+MFxcJykucmVwbGFjZSgvXFxcXC8vZywgXFwnfjFcXCcpJylcbiAgICAgICAgICAgICAgOiAoaXNOdW1iZXIgPyAnXFwnW1xcJyArICcgKyBleHByICsgJyArIFxcJ11cXCcnIDogJ1xcJ1tcXFxcXFwnXFwnICsgJyArIGV4cHIgKyAnICsgXFwnXFxcXFxcJ11cXCcnKTtcbiAgcmV0dXJuIGpvaW5QYXRocyhjdXJyZW50UGF0aCwgcGF0aCk7XG59XG5cblxuZnVuY3Rpb24gZ2V0UGF0aChjdXJyZW50UGF0aCwgcHJvcCwganNvblBvaW50ZXJzKSB7XG4gIHZhciBwYXRoID0ganNvblBvaW50ZXJzIC8vIGZhbHNlIGJ5IGRlZmF1bHRcbiAgICAgICAgICAgICAgPyB0b1F1b3RlZFN0cmluZygnLycgKyBlc2NhcGVKc29uUG9pbnRlcihwcm9wKSlcbiAgICAgICAgICAgICAgOiB0b1F1b3RlZFN0cmluZyhnZXRQcm9wZXJ0eShwcm9wKSk7XG4gIHJldHVybiBqb2luUGF0aHMoY3VycmVudFBhdGgsIHBhdGgpO1xufVxuXG5cbnZhciBKU09OX1BPSU5URVIgPSAvXlxcLyg/Oltefl18fjB8fjEpKiQvO1xudmFyIFJFTEFUSVZFX0pTT05fUE9JTlRFUiA9IC9eKFswLTldKykoI3xcXC8oPzpbXn5dfH4wfH4xKSopPyQvO1xuZnVuY3Rpb24gZ2V0RGF0YSgkZGF0YSwgbHZsLCBwYXRocykge1xuICB2YXIgdXAsIGpzb25Qb2ludGVyLCBkYXRhLCBtYXRjaGVzO1xuICBpZiAoJGRhdGEgPT09ICcnKSByZXR1cm4gJ3Jvb3REYXRhJztcbiAgaWYgKCRkYXRhWzBdID09ICcvJykge1xuICAgIGlmICghSlNPTl9QT0lOVEVSLnRlc3QoJGRhdGEpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTi1wb2ludGVyOiAnICsgJGRhdGEpO1xuICAgIGpzb25Qb2ludGVyID0gJGRhdGE7XG4gICAgZGF0YSA9ICdyb290RGF0YSc7XG4gIH0gZWxzZSB7XG4gICAgbWF0Y2hlcyA9ICRkYXRhLm1hdGNoKFJFTEFUSVZFX0pTT05fUE9JTlRFUik7XG4gICAgaWYgKCFtYXRjaGVzKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTi1wb2ludGVyOiAnICsgJGRhdGEpO1xuICAgIHVwID0gK21hdGNoZXNbMV07XG4gICAganNvblBvaW50ZXIgPSBtYXRjaGVzWzJdO1xuICAgIGlmIChqc29uUG9pbnRlciA9PSAnIycpIHtcbiAgICAgIGlmICh1cCA+PSBsdmwpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGFjY2VzcyBwcm9wZXJ0eS9pbmRleCAnICsgdXAgKyAnIGxldmVscyB1cCwgY3VycmVudCBsZXZlbCBpcyAnICsgbHZsKTtcbiAgICAgIHJldHVybiBwYXRoc1tsdmwgLSB1cF07XG4gICAgfVxuXG4gICAgaWYgKHVwID4gbHZsKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBhY2Nlc3MgZGF0YSAnICsgdXAgKyAnIGxldmVscyB1cCwgY3VycmVudCBsZXZlbCBpcyAnICsgbHZsKTtcbiAgICBkYXRhID0gJ2RhdGEnICsgKChsdmwgLSB1cCkgfHwgJycpO1xuICAgIGlmICghanNvblBvaW50ZXIpIHJldHVybiBkYXRhO1xuICB9XG5cbiAgdmFyIGV4cHIgPSBkYXRhO1xuICB2YXIgc2VnbWVudHMgPSBqc29uUG9pbnRlci5zcGxpdCgnLycpO1xuICBmb3IgKHZhciBpPTA7IGk8c2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc2VnbWVudCA9IHNlZ21lbnRzW2ldO1xuICAgIGlmIChzZWdtZW50KSB7XG4gICAgICBkYXRhICs9IGdldFByb3BlcnR5KHVuZXNjYXBlSnNvblBvaW50ZXIoc2VnbWVudCkpO1xuICAgICAgZXhwciArPSAnICYmICcgKyBkYXRhO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZXhwcjtcbn1cblxuXG5mdW5jdGlvbiBqb2luUGF0aHMgKGEsIGIpIHtcbiAgaWYgKGEgPT0gJ1wiXCInKSByZXR1cm4gYjtcbiAgcmV0dXJuIChhICsgJyArICcgKyBiKS5yZXBsYWNlKC8oW15cXFxcXSknIFxcKyAnL2csICckMScpO1xufVxuXG5cbmZ1bmN0aW9uIHVuZXNjYXBlRnJhZ21lbnQoc3RyKSB7XG4gIHJldHVybiB1bmVzY2FwZUpzb25Qb2ludGVyKGRlY29kZVVSSUNvbXBvbmVudChzdHIpKTtcbn1cblxuXG5mdW5jdGlvbiBlc2NhcGVGcmFnbWVudChzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlc2NhcGVKc29uUG9pbnRlcihzdHIpKTtcbn1cblxuXG5mdW5jdGlvbiBlc2NhcGVKc29uUG9pbnRlcihzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9+L2csICd+MCcpLnJlcGxhY2UoL1xcLy9nLCAnfjEnKTtcbn1cblxuXG5mdW5jdGlvbiB1bmVzY2FwZUpzb25Qb2ludGVyKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL34xL2csICcvJykucmVwbGFjZSgvfjAvZywgJ34nKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTY2hlbWFPYmplY3Q7XG5cbmZ1bmN0aW9uIFNjaGVtYU9iamVjdChvYmopIHtcbiAgdXRpbC5jb3B5KG9iaiwgdGhpcyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB0cmF2ZXJzZSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNjaGVtYSwgb3B0cywgY2IpIHtcbiAgLy8gTGVnYWN5IHN1cHBvcnQgZm9yIHYwLjMuMSBhbmQgZWFybGllci5cbiAgaWYgKHR5cGVvZiBvcHRzID09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG5cbiAgY2IgPSBvcHRzLmNiIHx8IGNiO1xuICB2YXIgcHJlID0gKHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSA/IGNiIDogY2IucHJlIHx8IGZ1bmN0aW9uKCkge307XG4gIHZhciBwb3N0ID0gY2IucG9zdCB8fCBmdW5jdGlvbigpIHt9O1xuXG4gIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaGVtYSwgJycsIHNjaGVtYSk7XG59O1xuXG5cbnRyYXZlcnNlLmtleXdvcmRzID0ge1xuICBhZGRpdGlvbmFsSXRlbXM6IHRydWUsXG4gIGl0ZW1zOiB0cnVlLFxuICBjb250YWluczogdHJ1ZSxcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWUsXG4gIHByb3BlcnR5TmFtZXM6IHRydWUsXG4gIG5vdDogdHJ1ZVxufTtcblxudHJhdmVyc2UuYXJyYXlLZXl3b3JkcyA9IHtcbiAgaXRlbXM6IHRydWUsXG4gIGFsbE9mOiB0cnVlLFxuICBhbnlPZjogdHJ1ZSxcbiAgb25lT2Y6IHRydWVcbn07XG5cbnRyYXZlcnNlLnByb3BzS2V5d29yZHMgPSB7XG4gIGRlZmluaXRpb25zOiB0cnVlLFxuICBwcm9wZXJ0aWVzOiB0cnVlLFxuICBwYXR0ZXJuUHJvcGVydGllczogdHJ1ZSxcbiAgZGVwZW5kZW5jaWVzOiB0cnVlXG59O1xuXG50cmF2ZXJzZS5za2lwS2V5d29yZHMgPSB7XG4gIGRlZmF1bHQ6IHRydWUsXG4gIGVudW06IHRydWUsXG4gIGNvbnN0OiB0cnVlLFxuICByZXF1aXJlZDogdHJ1ZSxcbiAgbWF4aW11bTogdHJ1ZSxcbiAgbWluaW11bTogdHJ1ZSxcbiAgZXhjbHVzaXZlTWF4aW11bTogdHJ1ZSxcbiAgZXhjbHVzaXZlTWluaW11bTogdHJ1ZSxcbiAgbXVsdGlwbGVPZjogdHJ1ZSxcbiAgbWF4TGVuZ3RoOiB0cnVlLFxuICBtaW5MZW5ndGg6IHRydWUsXG4gIHBhdHRlcm46IHRydWUsXG4gIGZvcm1hdDogdHJ1ZSxcbiAgbWF4SXRlbXM6IHRydWUsXG4gIG1pbkl0ZW1zOiB0cnVlLFxuICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgbWF4UHJvcGVydGllczogdHJ1ZSxcbiAgbWluUHJvcGVydGllczogdHJ1ZVxufTtcblxuXG5mdW5jdGlvbiBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2hlbWEsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpIHtcbiAgaWYgKHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHNjaGVtYSkpIHtcbiAgICBwcmUoc2NoZW1hLCBqc29uUHRyLCByb290U2NoZW1hLCBwYXJlbnRKc29uUHRyLCBwYXJlbnRLZXl3b3JkLCBwYXJlbnRTY2hlbWEsIGtleUluZGV4KTtcbiAgICBmb3IgKHZhciBrZXkgaW4gc2NoZW1hKSB7XG4gICAgICB2YXIgc2NoID0gc2NoZW1hW2tleV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzY2gpKSB7XG4gICAgICAgIGlmIChrZXkgaW4gdHJhdmVyc2UuYXJyYXlLZXl3b3Jkcykge1xuICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxzY2gubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2hbaV0sIGpzb25QdHIgKyAnLycgKyBrZXkgKyAnLycgKyBpLCByb290U2NoZW1hLCBqc29uUHRyLCBrZXksIHNjaGVtYSwgaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoa2V5IGluIHRyYXZlcnNlLnByb3BzS2V5d29yZHMpIHtcbiAgICAgICAgaWYgKHNjaCAmJiB0eXBlb2Ygc2NoID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBzY2gpXG4gICAgICAgICAgICBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2hbcHJvcF0sIGpzb25QdHIgKyAnLycgKyBrZXkgKyAnLycgKyBlc2NhcGVKc29uUHRyKHByb3ApLCByb290U2NoZW1hLCBqc29uUHRyLCBrZXksIHNjaGVtYSwgcHJvcCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoa2V5IGluIHRyYXZlcnNlLmtleXdvcmRzIHx8IChvcHRzLmFsbEtleXMgJiYgIShrZXkgaW4gdHJhdmVyc2Uuc2tpcEtleXdvcmRzKSkpIHtcbiAgICAgICAgX3RyYXZlcnNlKG9wdHMsIHByZSwgcG9zdCwgc2NoLCBqc29uUHRyICsgJy8nICsga2V5LCByb290U2NoZW1hLCBqc29uUHRyLCBrZXksIHNjaGVtYSk7XG4gICAgICB9XG4gICAgfVxuICAgIHBvc3Qoc2NoZW1hLCBqc29uUHRyLCByb290U2NoZW1hLCBwYXJlbnRKc29uUHRyLCBwYXJlbnRLZXl3b3JkLCBwYXJlbnRTY2hlbWEsIGtleUluZGV4KTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGVzY2FwZUpzb25QdHIoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvfi9nLCAnfjAnKS5yZXBsYWNlKC9cXC8vZywgJ34xJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBVUkkgPSByZXF1aXJlKCd1cmktanMnKVxuICAsIGVxdWFsID0gcmVxdWlyZSgnZmFzdC1kZWVwLWVxdWFsJylcbiAgLCB1dGlsID0gcmVxdWlyZSgnLi91dGlsJylcbiAgLCBTY2hlbWFPYmplY3QgPSByZXF1aXJlKCcuL3NjaGVtYV9vYmonKVxuICAsIHRyYXZlcnNlID0gcmVxdWlyZSgnanNvbi1zY2hlbWEtdHJhdmVyc2UnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXNvbHZlO1xuXG5yZXNvbHZlLm5vcm1hbGl6ZUlkID0gbm9ybWFsaXplSWQ7XG5yZXNvbHZlLmZ1bGxQYXRoID0gZ2V0RnVsbFBhdGg7XG5yZXNvbHZlLnVybCA9IHJlc29sdmVVcmw7XG5yZXNvbHZlLmlkcyA9IHJlc29sdmVJZHM7XG5yZXNvbHZlLmlubGluZVJlZiA9IGlubGluZVJlZjtcbnJlc29sdmUuc2NoZW1hID0gcmVzb2x2ZVNjaGVtYTtcblxuLyoqXG4gKiBbcmVzb2x2ZSBhbmQgY29tcGlsZSB0aGUgcmVmZXJlbmNlcyAoJHJlZildXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7RnVuY3Rpb259IGNvbXBpbGUgcmVmZXJlbmNlIHRvIHNjaGVtYSBjb21waWxhdGlvbiBmdW5jaXRvbiAobG9jYWxDb21waWxlKVxuICogQHBhcmFtICB7T2JqZWN0fSByb290IG9iamVjdCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSByb290IHNjaGVtYSBmb3IgdGhlIGN1cnJlbnQgc2NoZW1hXG4gKiBAcGFyYW0gIHtTdHJpbmd9IHJlZiByZWZlcmVuY2UgdG8gcmVzb2x2ZVxuICogQHJldHVybiB7T2JqZWN0fEZ1bmN0aW9ufSBzY2hlbWEgb2JqZWN0IChpZiB0aGUgc2NoZW1hIGNhbiBiZSBpbmxpbmVkKSBvciB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmUoY29tcGlsZSwgcm9vdCwgcmVmKSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgdmFyIHJlZlZhbCA9IHRoaXMuX3JlZnNbcmVmXTtcbiAgaWYgKHR5cGVvZiByZWZWYWwgPT0gJ3N0cmluZycpIHtcbiAgICBpZiAodGhpcy5fcmVmc1tyZWZWYWxdKSByZWZWYWwgPSB0aGlzLl9yZWZzW3JlZlZhbF07XG4gICAgZWxzZSByZXR1cm4gcmVzb2x2ZS5jYWxsKHRoaXMsIGNvbXBpbGUsIHJvb3QsIHJlZlZhbCk7XG4gIH1cblxuICByZWZWYWwgPSByZWZWYWwgfHwgdGhpcy5fc2NoZW1hc1tyZWZdO1xuICBpZiAocmVmVmFsIGluc3RhbmNlb2YgU2NoZW1hT2JqZWN0KSB7XG4gICAgcmV0dXJuIGlubGluZVJlZihyZWZWYWwuc2NoZW1hLCB0aGlzLl9vcHRzLmlubGluZVJlZnMpXG4gICAgICAgICAgICA/IHJlZlZhbC5zY2hlbWFcbiAgICAgICAgICAgIDogcmVmVmFsLnZhbGlkYXRlIHx8IHRoaXMuX2NvbXBpbGUocmVmVmFsKTtcbiAgfVxuXG4gIHZhciByZXMgPSByZXNvbHZlU2NoZW1hLmNhbGwodGhpcywgcm9vdCwgcmVmKTtcbiAgdmFyIHNjaGVtYSwgdiwgYmFzZUlkO1xuICBpZiAocmVzKSB7XG4gICAgc2NoZW1hID0gcmVzLnNjaGVtYTtcbiAgICByb290ID0gcmVzLnJvb3Q7XG4gICAgYmFzZUlkID0gcmVzLmJhc2VJZDtcbiAgfVxuXG4gIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBTY2hlbWFPYmplY3QpIHtcbiAgICB2ID0gc2NoZW1hLnZhbGlkYXRlIHx8IGNvbXBpbGUuY2FsbCh0aGlzLCBzY2hlbWEuc2NoZW1hLCByb290LCB1bmRlZmluZWQsIGJhc2VJZCk7XG4gIH0gZWxzZSBpZiAoc2NoZW1hICE9PSB1bmRlZmluZWQpIHtcbiAgICB2ID0gaW5saW5lUmVmKHNjaGVtYSwgdGhpcy5fb3B0cy5pbmxpbmVSZWZzKVxuICAgICAgICA/IHNjaGVtYVxuICAgICAgICA6IGNvbXBpbGUuY2FsbCh0aGlzLCBzY2hlbWEsIHJvb3QsIHVuZGVmaW5lZCwgYmFzZUlkKTtcbiAgfVxuXG4gIHJldHVybiB2O1xufVxuXG5cbi8qKlxuICogUmVzb2x2ZSBzY2hlbWEsIGl0cyByb290IGFuZCBiYXNlSWRcbiAqIEB0aGlzIEFqdlxuICogQHBhcmFtICB7T2JqZWN0fSByb290IHJvb3Qgb2JqZWN0IHdpdGggcHJvcGVydGllcyBzY2hlbWEsIHJlZlZhbCwgcmVmc1xuICogQHBhcmFtICB7U3RyaW5nfSByZWYgIHJlZmVyZW5jZSB0byByZXNvbHZlXG4gKiBAcmV0dXJuIHtPYmplY3R9IG9iamVjdCB3aXRoIHByb3BlcnRpZXMgc2NoZW1hLCByb290LCBiYXNlSWRcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNjaGVtYShyb290LCByZWYpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgcCA9IFVSSS5wYXJzZShyZWYpXG4gICAgLCByZWZQYXRoID0gX2dldEZ1bGxQYXRoKHApXG4gICAgLCBiYXNlSWQgPSBnZXRGdWxsUGF0aCh0aGlzLl9nZXRJZChyb290LnNjaGVtYSkpO1xuICBpZiAoT2JqZWN0LmtleXMocm9vdC5zY2hlbWEpLmxlbmd0aCA9PT0gMCB8fCByZWZQYXRoICE9PSBiYXNlSWQpIHtcbiAgICB2YXIgaWQgPSBub3JtYWxpemVJZChyZWZQYXRoKTtcbiAgICB2YXIgcmVmVmFsID0gdGhpcy5fcmVmc1tpZF07XG4gICAgaWYgKHR5cGVvZiByZWZWYWwgPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiByZXNvbHZlUmVjdXJzaXZlLmNhbGwodGhpcywgcm9vdCwgcmVmVmFsLCBwKTtcbiAgICB9IGVsc2UgaWYgKHJlZlZhbCBpbnN0YW5jZW9mIFNjaGVtYU9iamVjdCkge1xuICAgICAgaWYgKCFyZWZWYWwudmFsaWRhdGUpIHRoaXMuX2NvbXBpbGUocmVmVmFsKTtcbiAgICAgIHJvb3QgPSByZWZWYWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZlZhbCA9IHRoaXMuX3NjaGVtYXNbaWRdO1xuICAgICAgaWYgKHJlZlZhbCBpbnN0YW5jZW9mIFNjaGVtYU9iamVjdCkge1xuICAgICAgICBpZiAoIXJlZlZhbC52YWxpZGF0ZSkgdGhpcy5fY29tcGlsZShyZWZWYWwpO1xuICAgICAgICBpZiAoaWQgPT0gbm9ybWFsaXplSWQocmVmKSlcbiAgICAgICAgICByZXR1cm4geyBzY2hlbWE6IHJlZlZhbCwgcm9vdDogcm9vdCwgYmFzZUlkOiBiYXNlSWQgfTtcbiAgICAgICAgcm9vdCA9IHJlZlZhbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFyb290LnNjaGVtYSkgcmV0dXJuO1xuICAgIGJhc2VJZCA9IGdldEZ1bGxQYXRoKHRoaXMuX2dldElkKHJvb3Quc2NoZW1hKSk7XG4gIH1cbiAgcmV0dXJuIGdldEpzb25Qb2ludGVyLmNhbGwodGhpcywgcCwgYmFzZUlkLCByb290LnNjaGVtYSwgcm9vdCk7XG59XG5cblxuLyogQHRoaXMgQWp2ICovXG5mdW5jdGlvbiByZXNvbHZlUmVjdXJzaXZlKHJvb3QsIHJlZiwgcGFyc2VkUmVmKSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgdmFyIHJlcyA9IHJlc29sdmVTY2hlbWEuY2FsbCh0aGlzLCByb290LCByZWYpO1xuICBpZiAocmVzKSB7XG4gICAgdmFyIHNjaGVtYSA9IHJlcy5zY2hlbWE7XG4gICAgdmFyIGJhc2VJZCA9IHJlcy5iYXNlSWQ7XG4gICAgcm9vdCA9IHJlcy5yb290O1xuICAgIHZhciBpZCA9IHRoaXMuX2dldElkKHNjaGVtYSk7XG4gICAgaWYgKGlkKSBiYXNlSWQgPSByZXNvbHZlVXJsKGJhc2VJZCwgaWQpO1xuICAgIHJldHVybiBnZXRKc29uUG9pbnRlci5jYWxsKHRoaXMsIHBhcnNlZFJlZiwgYmFzZUlkLCBzY2hlbWEsIHJvb3QpO1xuICB9XG59XG5cblxudmFyIFBSRVZFTlRfU0NPUEVfQ0hBTkdFID0gdXRpbC50b0hhc2goWydwcm9wZXJ0aWVzJywgJ3BhdHRlcm5Qcm9wZXJ0aWVzJywgJ2VudW0nLCAnZGVwZW5kZW5jaWVzJywgJ2RlZmluaXRpb25zJ10pO1xuLyogQHRoaXMgQWp2ICovXG5mdW5jdGlvbiBnZXRKc29uUG9pbnRlcihwYXJzZWRSZWYsIGJhc2VJZCwgc2NoZW1hLCByb290KSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgcGFyc2VkUmVmLmZyYWdtZW50ID0gcGFyc2VkUmVmLmZyYWdtZW50IHx8ICcnO1xuICBpZiAocGFyc2VkUmVmLmZyYWdtZW50LnNsaWNlKDAsMSkgIT0gJy8nKSByZXR1cm47XG4gIHZhciBwYXJ0cyA9IHBhcnNlZFJlZi5mcmFnbWVudC5zcGxpdCgnLycpO1xuXG4gIGZvciAodmFyIGkgPSAxOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGFydCA9IHBhcnRzW2ldO1xuICAgIGlmIChwYXJ0KSB7XG4gICAgICBwYXJ0ID0gdXRpbC51bmVzY2FwZUZyYWdtZW50KHBhcnQpO1xuICAgICAgc2NoZW1hID0gc2NoZW1hW3BhcnRdO1xuICAgICAgaWYgKHNjaGVtYSA9PT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICAgIHZhciBpZDtcbiAgICAgIGlmICghUFJFVkVOVF9TQ09QRV9DSEFOR0VbcGFydF0pIHtcbiAgICAgICAgaWQgPSB0aGlzLl9nZXRJZChzY2hlbWEpO1xuICAgICAgICBpZiAoaWQpIGJhc2VJZCA9IHJlc29sdmVVcmwoYmFzZUlkLCBpZCk7XG4gICAgICAgIGlmIChzY2hlbWEuJHJlZikge1xuICAgICAgICAgIHZhciAkcmVmID0gcmVzb2x2ZVVybChiYXNlSWQsIHNjaGVtYS4kcmVmKTtcbiAgICAgICAgICB2YXIgcmVzID0gcmVzb2x2ZVNjaGVtYS5jYWxsKHRoaXMsIHJvb3QsICRyZWYpO1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHNjaGVtYSA9IHJlcy5zY2hlbWE7XG4gICAgICAgICAgICByb290ID0gcmVzLnJvb3Q7XG4gICAgICAgICAgICBiYXNlSWQgPSByZXMuYmFzZUlkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoc2NoZW1hICE9PSB1bmRlZmluZWQgJiYgc2NoZW1hICE9PSByb290LnNjaGVtYSlcbiAgICByZXR1cm4geyBzY2hlbWE6IHNjaGVtYSwgcm9vdDogcm9vdCwgYmFzZUlkOiBiYXNlSWQgfTtcbn1cblxuXG52YXIgU0lNUExFX0lOTElORUQgPSB1dGlsLnRvSGFzaChbXG4gICd0eXBlJywgJ2Zvcm1hdCcsICdwYXR0ZXJuJyxcbiAgJ21heExlbmd0aCcsICdtaW5MZW5ndGgnLFxuICAnbWF4UHJvcGVydGllcycsICdtaW5Qcm9wZXJ0aWVzJyxcbiAgJ21heEl0ZW1zJywgJ21pbkl0ZW1zJyxcbiAgJ21heGltdW0nLCAnbWluaW11bScsXG4gICd1bmlxdWVJdGVtcycsICdtdWx0aXBsZU9mJyxcbiAgJ3JlcXVpcmVkJywgJ2VudW0nXG5dKTtcbmZ1bmN0aW9uIGlubGluZVJlZihzY2hlbWEsIGxpbWl0KSB7XG4gIGlmIChsaW1pdCA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgaWYgKGxpbWl0ID09PSB1bmRlZmluZWQgfHwgbGltaXQgPT09IHRydWUpIHJldHVybiBjaGVja05vUmVmKHNjaGVtYSk7XG4gIGVsc2UgaWYgKGxpbWl0KSByZXR1cm4gY291bnRLZXlzKHNjaGVtYSkgPD0gbGltaXQ7XG59XG5cblxuZnVuY3Rpb24gY2hlY2tOb1JlZihzY2hlbWEpIHtcbiAgdmFyIGl0ZW07XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpIHtcbiAgICBmb3IgKHZhciBpPTA7IGk8c2NoZW1hLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpdGVtID0gc2NoZW1hW2ldO1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09ICdvYmplY3QnICYmICFjaGVja05vUmVmKGl0ZW0pKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIHtcbiAgICAgIGlmIChrZXkgPT0gJyRyZWYnKSByZXR1cm4gZmFsc2U7XG4gICAgICBpdGVtID0gc2NoZW1hW2tleV07XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcgJiYgIWNoZWNrTm9SZWYoaXRlbSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cblxuZnVuY3Rpb24gY291bnRLZXlzKHNjaGVtYSkge1xuICB2YXIgY291bnQgPSAwLCBpdGVtO1xuICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKSB7XG4gICAgZm9yICh2YXIgaT0wOyBpPHNjaGVtYS5sZW5ndGg7IGkrKykge1xuICAgICAgaXRlbSA9IHNjaGVtYVtpXTtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PSAnb2JqZWN0JykgY291bnQgKz0gY291bnRLZXlzKGl0ZW0pO1xuICAgICAgaWYgKGNvdW50ID09IEluZmluaXR5KSByZXR1cm4gSW5maW5pdHk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIHtcbiAgICAgIGlmIChrZXkgPT0gJyRyZWYnKSByZXR1cm4gSW5maW5pdHk7XG4gICAgICBpZiAoU0lNUExFX0lOTElORURba2V5XSkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbSA9IHNjaGVtYVtrZXldO1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcpIGNvdW50ICs9IGNvdW50S2V5cyhpdGVtKSArIDE7XG4gICAgICAgIGlmIChjb3VudCA9PSBJbmZpbml0eSkgcmV0dXJuIEluZmluaXR5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY291bnQ7XG59XG5cblxuZnVuY3Rpb24gZ2V0RnVsbFBhdGgoaWQsIG5vcm1hbGl6ZSkge1xuICBpZiAobm9ybWFsaXplICE9PSBmYWxzZSkgaWQgPSBub3JtYWxpemVJZChpZCk7XG4gIHZhciBwID0gVVJJLnBhcnNlKGlkKTtcbiAgcmV0dXJuIF9nZXRGdWxsUGF0aChwKTtcbn1cblxuXG5mdW5jdGlvbiBfZ2V0RnVsbFBhdGgocCkge1xuICByZXR1cm4gVVJJLnNlcmlhbGl6ZShwKS5zcGxpdCgnIycpWzBdICsgJyMnO1xufVxuXG5cbnZhciBUUkFJTElOR19TTEFTSF9IQVNIID0gLyNcXC8/JC87XG5mdW5jdGlvbiBub3JtYWxpemVJZChpZCkge1xuICByZXR1cm4gaWQgPyBpZC5yZXBsYWNlKFRSQUlMSU5HX1NMQVNIX0hBU0gsICcnKSA6ICcnO1xufVxuXG5cbmZ1bmN0aW9uIHJlc29sdmVVcmwoYmFzZUlkLCBpZCkge1xuICBpZCA9IG5vcm1hbGl6ZUlkKGlkKTtcbiAgcmV0dXJuIFVSSS5yZXNvbHZlKGJhc2VJZCwgaWQpO1xufVxuXG5cbi8qIEB0aGlzIEFqdiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUlkcyhzY2hlbWEpIHtcbiAgdmFyIHNjaGVtYUlkID0gbm9ybWFsaXplSWQodGhpcy5fZ2V0SWQoc2NoZW1hKSk7XG4gIHZhciBiYXNlSWRzID0geycnOiBzY2hlbWFJZH07XG4gIHZhciBmdWxsUGF0aHMgPSB7Jyc6IGdldEZ1bGxQYXRoKHNjaGVtYUlkLCBmYWxzZSl9O1xuICB2YXIgbG9jYWxSZWZzID0ge307XG4gIHZhciBzZWxmID0gdGhpcztcblxuICB0cmF2ZXJzZShzY2hlbWEsIHthbGxLZXlzOiB0cnVlfSwgZnVuY3Rpb24oc2NoLCBqc29uUHRyLCByb290U2NoZW1hLCBwYXJlbnRKc29uUHRyLCBwYXJlbnRLZXl3b3JkLCBwYXJlbnRTY2hlbWEsIGtleUluZGV4KSB7XG4gICAgaWYgKGpzb25QdHIgPT09ICcnKSByZXR1cm47XG4gICAgdmFyIGlkID0gc2VsZi5fZ2V0SWQoc2NoKTtcbiAgICB2YXIgYmFzZUlkID0gYmFzZUlkc1twYXJlbnRKc29uUHRyXTtcbiAgICB2YXIgZnVsbFBhdGggPSBmdWxsUGF0aHNbcGFyZW50SnNvblB0cl0gKyAnLycgKyBwYXJlbnRLZXl3b3JkO1xuICAgIGlmIChrZXlJbmRleCAhPT0gdW5kZWZpbmVkKVxuICAgICAgZnVsbFBhdGggKz0gJy8nICsgKHR5cGVvZiBrZXlJbmRleCA9PSAnbnVtYmVyJyA/IGtleUluZGV4IDogdXRpbC5lc2NhcGVGcmFnbWVudChrZXlJbmRleCkpO1xuXG4gICAgaWYgKHR5cGVvZiBpZCA9PSAnc3RyaW5nJykge1xuICAgICAgaWQgPSBiYXNlSWQgPSBub3JtYWxpemVJZChiYXNlSWQgPyBVUkkucmVzb2x2ZShiYXNlSWQsIGlkKSA6IGlkKTtcblxuICAgICAgdmFyIHJlZlZhbCA9IHNlbGYuX3JlZnNbaWRdO1xuICAgICAgaWYgKHR5cGVvZiByZWZWYWwgPT0gJ3N0cmluZycpIHJlZlZhbCA9IHNlbGYuX3JlZnNbcmVmVmFsXTtcbiAgICAgIGlmIChyZWZWYWwgJiYgcmVmVmFsLnNjaGVtYSkge1xuICAgICAgICBpZiAoIWVxdWFsKHNjaCwgcmVmVmFsLnNjaGVtYSkpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpZCBcIicgKyBpZCArICdcIiByZXNvbHZlcyB0byBtb3JlIHRoYW4gb25lIHNjaGVtYScpO1xuICAgICAgfSBlbHNlIGlmIChpZCAhPSBub3JtYWxpemVJZChmdWxsUGF0aCkpIHtcbiAgICAgICAgaWYgKGlkWzBdID09ICcjJykge1xuICAgICAgICAgIGlmIChsb2NhbFJlZnNbaWRdICYmICFlcXVhbChzY2gsIGxvY2FsUmVmc1tpZF0pKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpZCBcIicgKyBpZCArICdcIiByZXNvbHZlcyB0byBtb3JlIHRoYW4gb25lIHNjaGVtYScpO1xuICAgICAgICAgIGxvY2FsUmVmc1tpZF0gPSBzY2g7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi5fcmVmc1tpZF0gPSBmdWxsUGF0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBiYXNlSWRzW2pzb25QdHJdID0gYmFzZUlkO1xuICAgIGZ1bGxQYXRoc1tqc29uUHRyXSA9IGZ1bGxQYXRoO1xuICB9KTtcblxuICByZXR1cm4gbG9jYWxSZWZzO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVzb2x2ZSA9IHJlcXVpcmUoJy4vcmVzb2x2ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgVmFsaWRhdGlvbjogZXJyb3JTdWJjbGFzcyhWYWxpZGF0aW9uRXJyb3IpLFxuICBNaXNzaW5nUmVmOiBlcnJvclN1YmNsYXNzKE1pc3NpbmdSZWZFcnJvcilcbn07XG5cblxuZnVuY3Rpb24gVmFsaWRhdGlvbkVycm9yKGVycm9ycykge1xuICB0aGlzLm1lc3NhZ2UgPSAndmFsaWRhdGlvbiBmYWlsZWQnO1xuICB0aGlzLmVycm9ycyA9IGVycm9ycztcbiAgdGhpcy5hanYgPSB0aGlzLnZhbGlkYXRpb24gPSB0cnVlO1xufVxuXG5cbk1pc3NpbmdSZWZFcnJvci5tZXNzYWdlID0gZnVuY3Rpb24gKGJhc2VJZCwgcmVmKSB7XG4gIHJldHVybiAnY2FuXFwndCByZXNvbHZlIHJlZmVyZW5jZSAnICsgcmVmICsgJyBmcm9tIGlkICcgKyBiYXNlSWQ7XG59O1xuXG5cbmZ1bmN0aW9uIE1pc3NpbmdSZWZFcnJvcihiYXNlSWQsIHJlZiwgbWVzc2FnZSkge1xuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8IE1pc3NpbmdSZWZFcnJvci5tZXNzYWdlKGJhc2VJZCwgcmVmKTtcbiAgdGhpcy5taXNzaW5nUmVmID0gcmVzb2x2ZS51cmwoYmFzZUlkLCByZWYpO1xuICB0aGlzLm1pc3NpbmdTY2hlbWEgPSByZXNvbHZlLm5vcm1hbGl6ZUlkKHJlc29sdmUuZnVsbFBhdGgodGhpcy5taXNzaW5nUmVmKSk7XG59XG5cblxuZnVuY3Rpb24gZXJyb3JTdWJjbGFzcyhTdWJjbGFzcykge1xuICBTdWJjbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7XG4gIFN1YmNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1YmNsYXNzO1xuICByZXR1cm4gU3ViY2xhc3M7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRhdGEsIG9wdHMpIHtcbiAgICBpZiAoIW9wdHMpIG9wdHMgPSB7fTtcbiAgICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIG9wdHMgPSB7IGNtcDogb3B0cyB9O1xuICAgIHZhciBjeWNsZXMgPSAodHlwZW9mIG9wdHMuY3ljbGVzID09PSAnYm9vbGVhbicpID8gb3B0cy5jeWNsZXMgOiBmYWxzZTtcblxuICAgIHZhciBjbXAgPSBvcHRzLmNtcCAmJiAoZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICB2YXIgYW9iaiA9IHsga2V5OiBhLCB2YWx1ZTogbm9kZVthXSB9O1xuICAgICAgICAgICAgICAgIHZhciBib2JqID0geyBrZXk6IGIsIHZhbHVlOiBub2RlW2JdIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGYoYW9iaiwgYm9iaik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH0pKG9wdHMuY21wKTtcblxuICAgIHZhciBzZWVuID0gW107XG4gICAgcmV0dXJuIChmdW5jdGlvbiBzdHJpbmdpZnkgKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS50b0pTT04gJiYgdHlwZW9mIG5vZGUudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBub2RlID0gbm9kZS50b0pTT04oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiBub2RlID09ICdudW1iZXInKSByZXR1cm4gaXNGaW5pdGUobm9kZSkgPyAnJyArIG5vZGUgOiAnbnVsbCc7XG4gICAgICAgIGlmICh0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcpIHJldHVybiBKU09OLnN0cmluZ2lmeShub2RlKTtcblxuICAgICAgICB2YXIgaSwgb3V0O1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgICAgICAgICAgb3V0ID0gJ1snO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSkgb3V0ICs9ICcsJztcbiAgICAgICAgICAgICAgICBvdXQgKz0gc3RyaW5naWZ5KG5vZGVbaV0pIHx8ICdudWxsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXQgKyAnXSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZSA9PT0gbnVsbCkgcmV0dXJuICdudWxsJztcblxuICAgICAgICBpZiAoc2Vlbi5pbmRleE9mKG5vZGUpICE9PSAtMSkge1xuICAgICAgICAgICAgaWYgKGN5Y2xlcykgcmV0dXJuIEpTT04uc3RyaW5naWZ5KCdfX2N5Y2xlX18nKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0NvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT04nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzZWVuSW5kZXggPSBzZWVuLnB1c2gobm9kZSkgLSAxO1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG5vZGUpLnNvcnQoY21wICYmIGNtcChub2RlKSk7XG4gICAgICAgIG91dCA9ICcnO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBzdHJpbmdpZnkobm9kZVtrZXldKTtcblxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkgY29udGludWU7XG4gICAgICAgICAgICBpZiAob3V0KSBvdXQgKz0gJywnO1xuICAgICAgICAgICAgb3V0ICs9IEpTT04uc3RyaW5naWZ5KGtleSkgKyAnOicgKyB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBzZWVuLnNwbGljZShzZWVuSW5kZXgsIDEpO1xuICAgICAgICByZXR1cm4gJ3snICsgb3V0ICsgJ30nO1xuICAgIH0pKGRhdGEpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfdmFsaWRhdGUoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcnO1xuICB2YXIgJGFzeW5jID0gaXQuc2NoZW1hLiRhc3luYyA9PT0gdHJ1ZSxcbiAgICAkcmVmS2V5d29yZHMgPSBpdC51dGlsLnNjaGVtYUhhc1J1bGVzRXhjZXB0KGl0LnNjaGVtYSwgaXQuUlVMRVMuYWxsLCAnJHJlZicpLFxuICAgICRpZCA9IGl0LnNlbGYuX2dldElkKGl0LnNjaGVtYSk7XG4gIGlmIChpdC5vcHRzLnN0cmljdEtleXdvcmRzKSB7XG4gICAgdmFyICR1bmtub3duS3dkID0gaXQudXRpbC5zY2hlbWFVbmtub3duUnVsZXMoaXQuc2NoZW1hLCBpdC5SVUxFUy5rZXl3b3Jkcyk7XG4gICAgaWYgKCR1bmtub3duS3dkKSB7XG4gICAgICB2YXIgJGtleXdvcmRzTXNnID0gJ3Vua25vd24ga2V5d29yZDogJyArICR1bmtub3duS3dkO1xuICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPT09ICdsb2cnKSBpdC5sb2dnZXIud2Fybigka2V5d29yZHNNc2cpO1xuICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJGtleXdvcmRzTXNnKTtcbiAgICB9XG4gIH1cbiAgaWYgKGl0LmlzVG9wKSB7XG4gICAgb3V0ICs9ICcgdmFyIHZhbGlkYXRlID0gJztcbiAgICBpZiAoJGFzeW5jKSB7XG4gICAgICBpdC5hc3luYyA9IHRydWU7XG4gICAgICBvdXQgKz0gJ2FzeW5jICc7XG4gICAgfVxuICAgIG91dCArPSAnZnVuY3Rpb24oZGF0YSwgZGF0YVBhdGgsIHBhcmVudERhdGEsIHBhcmVudERhdGFQcm9wZXJ0eSwgcm9vdERhdGEpIHsgXFwndXNlIHN0cmljdFxcJzsgJztcbiAgICBpZiAoJGlkICYmIChpdC5vcHRzLnNvdXJjZUNvZGUgfHwgaXQub3B0cy5wcm9jZXNzQ29kZSkpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJy9cXCojIHNvdXJjZVVSTD0nICsgJGlkICsgJyAqLycpICsgJyAnO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIGl0LnNjaGVtYSA9PSAnYm9vbGVhbicgfHwgISgkcmVmS2V5d29yZHMgfHwgaXQuc2NoZW1hLiRyZWYpKSB7XG4gICAgdmFyICRrZXl3b3JkID0gJ2ZhbHNlIHNjaGVtYSc7XG4gICAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gICAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICAgIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gICAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gICAgdmFyICRlcnJvcktleXdvcmQ7XG4gICAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gICAgaWYgKGl0LnNjaGVtYSA9PT0gZmFsc2UpIHtcbiAgICAgIGlmIChpdC5pc1RvcCkge1xuICAgICAgICAkYnJlYWtPbkVycm9yID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCR2YWxpZCkgKyAnID0gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ2ZhbHNlIHNjaGVtYScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHt9ICc7XG4gICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnYm9vbGVhbiBzY2hlbWEgaXMgZmFsc2VcXCcgJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IGZhbHNlICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICB9XG4gICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGl0LmlzVG9wKSB7XG4gICAgICAgIGlmICgkYXN5bmMpIHtcbiAgICAgICAgICBvdXQgKz0gJyByZXR1cm4gZGF0YTsgJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBudWxsOyByZXR1cm4gdHJ1ZTsgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyAnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXQuaXNUb3ApIHtcbiAgICAgIG91dCArPSAnIH07IHJldHVybiB2YWxpZGF0ZTsgJztcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuICBpZiAoaXQuaXNUb3ApIHtcbiAgICB2YXIgJHRvcCA9IGl0LmlzVG9wLFxuICAgICAgJGx2bCA9IGl0LmxldmVsID0gMCxcbiAgICAgICRkYXRhTHZsID0gaXQuZGF0YUxldmVsID0gMCxcbiAgICAgICRkYXRhID0gJ2RhdGEnO1xuICAgIGl0LnJvb3RJZCA9IGl0LnJlc29sdmUuZnVsbFBhdGgoaXQuc2VsZi5fZ2V0SWQoaXQucm9vdC5zY2hlbWEpKTtcbiAgICBpdC5iYXNlSWQgPSBpdC5iYXNlSWQgfHwgaXQucm9vdElkO1xuICAgIGRlbGV0ZSBpdC5pc1RvcDtcbiAgICBpdC5kYXRhUGF0aEFyciA9IFtcIlwiXTtcbiAgICBpZiAoaXQuc2NoZW1hLmRlZmF1bHQgIT09IHVuZGVmaW5lZCAmJiBpdC5vcHRzLnVzZURlZmF1bHRzICYmIGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMpIHtcbiAgICAgIHZhciAkZGVmYXVsdE1zZyA9ICdkZWZhdWx0IGlzIGlnbm9yZWQgaW4gdGhlIHNjaGVtYSByb290JztcbiAgICAgIGlmIChpdC5vcHRzLnN0cmljdERlZmF1bHRzID09PSAnbG9nJykgaXQubG9nZ2VyLndhcm4oJGRlZmF1bHRNc2cpO1xuICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJGRlZmF1bHRNc2cpO1xuICAgIH1cbiAgICBvdXQgKz0gJyB2YXIgdkVycm9ycyA9IG51bGw7ICc7XG4gICAgb3V0ICs9ICcgdmFyIGVycm9ycyA9IDA7ICAgICAnO1xuICAgIG91dCArPSAnIGlmIChyb290RGF0YSA9PT0gdW5kZWZpbmVkKSByb290RGF0YSA9IGRhdGE7ICc7XG4gIH0gZWxzZSB7XG4gICAgdmFyICRsdmwgPSBpdC5sZXZlbCxcbiAgICAgICRkYXRhTHZsID0gaXQuZGF0YUxldmVsLFxuICAgICAgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICAgIGlmICgkaWQpIGl0LmJhc2VJZCA9IGl0LnJlc29sdmUudXJsKGl0LmJhc2VJZCwgJGlkKTtcbiAgICBpZiAoJGFzeW5jICYmICFpdC5hc3luYykgdGhyb3cgbmV3IEVycm9yKCdhc3luYyBzY2hlbWEgaW4gc3luYyBzY2hlbWEnKTtcbiAgICBvdXQgKz0gJyB2YXIgZXJyc18nICsgKCRsdmwpICsgJyA9IGVycm9yczsnO1xuICB9XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bCxcbiAgICAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzLFxuICAgICRjbG9zaW5nQnJhY2VzMSA9ICcnLFxuICAgICRjbG9zaW5nQnJhY2VzMiA9ICcnO1xuICB2YXIgJGVycm9yS2V5d29yZDtcbiAgdmFyICR0eXBlU2NoZW1hID0gaXQuc2NoZW1hLnR5cGUsXG4gICAgJHR5cGVJc0FycmF5ID0gQXJyYXkuaXNBcnJheSgkdHlwZVNjaGVtYSk7XG4gIGlmICgkdHlwZVNjaGVtYSAmJiBpdC5vcHRzLm51bGxhYmxlICYmIGl0LnNjaGVtYS5udWxsYWJsZSA9PT0gdHJ1ZSkge1xuICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgIGlmICgkdHlwZVNjaGVtYS5pbmRleE9mKCdudWxsJykgPT0gLTEpICR0eXBlU2NoZW1hID0gJHR5cGVTY2hlbWEuY29uY2F0KCdudWxsJyk7XG4gICAgfSBlbHNlIGlmICgkdHlwZVNjaGVtYSAhPSAnbnVsbCcpIHtcbiAgICAgICR0eXBlU2NoZW1hID0gWyR0eXBlU2NoZW1hLCAnbnVsbCddO1xuICAgICAgJHR5cGVJc0FycmF5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKCR0eXBlSXNBcnJheSAmJiAkdHlwZVNjaGVtYS5sZW5ndGggPT0gMSkge1xuICAgICR0eXBlU2NoZW1hID0gJHR5cGVTY2hlbWFbMF07XG4gICAgJHR5cGVJc0FycmF5ID0gZmFsc2U7XG4gIH1cbiAgaWYgKGl0LnNjaGVtYS4kcmVmICYmICRyZWZLZXl3b3Jkcykge1xuICAgIGlmIChpdC5vcHRzLmV4dGVuZFJlZnMgPT0gJ2ZhaWwnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJyRyZWY6IHZhbGlkYXRpb24ga2V5d29yZHMgdXNlZCBpbiBzY2hlbWEgYXQgcGF0aCBcIicgKyBpdC5lcnJTY2hlbWFQYXRoICsgJ1wiIChzZWUgb3B0aW9uIGV4dGVuZFJlZnMpJyk7XG4gICAgfSBlbHNlIGlmIChpdC5vcHRzLmV4dGVuZFJlZnMgIT09IHRydWUpIHtcbiAgICAgICRyZWZLZXl3b3JkcyA9IGZhbHNlO1xuICAgICAgaXQubG9nZ2VyLndhcm4oJyRyZWY6IGtleXdvcmRzIGlnbm9yZWQgaW4gc2NoZW1hIGF0IHBhdGggXCInICsgaXQuZXJyU2NoZW1hUGF0aCArICdcIicpO1xuICAgIH1cbiAgfVxuICBpZiAoaXQuc2NoZW1hLiRjb21tZW50ICYmIGl0Lm9wdHMuJGNvbW1lbnQpIHtcbiAgICBvdXQgKz0gJyAnICsgKGl0LlJVTEVTLmFsbC4kY29tbWVudC5jb2RlKGl0LCAnJGNvbW1lbnQnKSk7XG4gIH1cbiAgaWYgKCR0eXBlU2NoZW1hKSB7XG4gICAgaWYgKGl0Lm9wdHMuY29lcmNlVHlwZXMpIHtcbiAgICAgIHZhciAkY29lcmNlVG9UeXBlcyA9IGl0LnV0aWwuY29lcmNlVG9UeXBlcyhpdC5vcHRzLmNvZXJjZVR5cGVzLCAkdHlwZVNjaGVtYSk7XG4gICAgfVxuICAgIHZhciAkcnVsZXNHcm91cCA9IGl0LlJVTEVTLnR5cGVzWyR0eXBlU2NoZW1hXTtcbiAgICBpZiAoJGNvZXJjZVRvVHlwZXMgfHwgJHR5cGVJc0FycmF5IHx8ICRydWxlc0dyb3VwID09PSB0cnVlIHx8ICgkcnVsZXNHcm91cCAmJiAhJHNob3VsZFVzZUdyb3VwKCRydWxlc0dyb3VwKSkpIHtcbiAgICAgIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLnR5cGUnLFxuICAgICAgICAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL3R5cGUnO1xuICAgICAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcudHlwZScsXG4gICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvdHlwZScsXG4gICAgICAgICRtZXRob2QgPSAkdHlwZUlzQXJyYXkgPyAnY2hlY2tEYXRhVHlwZXMnIDogJ2NoZWNrRGF0YVR5cGUnO1xuICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoaXQudXRpbFskbWV0aG9kXSgkdHlwZVNjaGVtYSwgJGRhdGEsIGl0Lm9wdHMuc3RyaWN0TnVtYmVycywgdHJ1ZSkpICsgJykgeyAnO1xuICAgICAgaWYgKCRjb2VyY2VUb1R5cGVzKSB7XG4gICAgICAgIHZhciAkZGF0YVR5cGUgPSAnZGF0YVR5cGUnICsgJGx2bCxcbiAgICAgICAgICAkY29lcmNlZCA9ICdjb2VyY2VkJyArICRsdmw7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCRkYXRhVHlwZSkgKyAnID0gdHlwZW9mICcgKyAoJGRhdGEpICsgJzsgdmFyICcgKyAoJGNvZXJjZWQpICsgJyA9IHVuZGVmaW5lZDsgJztcbiAgICAgICAgaWYgKGl0Lm9wdHMuY29lcmNlVHlwZXMgPT0gJ2FycmF5Jykge1xuICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ29iamVjdFxcJyAmJiBBcnJheS5pc0FycmF5KCcgKyAoJGRhdGEpICsgJykgJiYgJyArICgkZGF0YSkgKyAnLmxlbmd0aCA9PSAxKSB7ICcgKyAoJGRhdGEpICsgJyA9ICcgKyAoJGRhdGEpICsgJ1swXTsgJyArICgkZGF0YVR5cGUpICsgJyA9IHR5cGVvZiAnICsgKCRkYXRhKSArICc7IGlmICgnICsgKGl0LnV0aWwuY2hlY2tEYXRhVHlwZShpdC5zY2hlbWEudHlwZSwgJGRhdGEsIGl0Lm9wdHMuc3RyaWN0TnVtYmVycykpICsgJykgJyArICgkY29lcmNlZCkgKyAnID0gJyArICgkZGF0YSkgKyAnOyB9ICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJGNvZXJjZWQpICsgJyAhPT0gdW5kZWZpbmVkKSA7ICc7XG4gICAgICAgIHZhciBhcnIxID0gJGNvZXJjZVRvVHlwZXM7XG4gICAgICAgIGlmIChhcnIxKSB7XG4gICAgICAgICAgdmFyICR0eXBlLCAkaSA9IC0xLFxuICAgICAgICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgICAgICAgd2hpbGUgKCRpIDwgbDEpIHtcbiAgICAgICAgICAgICR0eXBlID0gYXJyMVskaSArPSAxXTtcbiAgICAgICAgICAgIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyBlbHNlIGlmICgnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ251bWJlclxcJyB8fCAnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ2Jvb2xlYW5cXCcpICcgKyAoJGNvZXJjZWQpICsgJyA9IFxcJ1xcJyArICcgKyAoJGRhdGEpICsgJzsgZWxzZSBpZiAoJyArICgkZGF0YSkgKyAnID09PSBudWxsKSAnICsgKCRjb2VyY2VkKSArICcgPSBcXCdcXCc7ICc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCR0eXBlID09ICdudW1iZXInIHx8ICR0eXBlID09ICdpbnRlZ2VyJykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyBlbHNlIGlmICgnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ2Jvb2xlYW5cXCcgfHwgJyArICgkZGF0YSkgKyAnID09PSBudWxsIHx8ICgnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ3N0cmluZ1xcJyAmJiAnICsgKCRkYXRhKSArICcgJiYgJyArICgkZGF0YSkgKyAnID09ICsnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgICAgaWYgKCR0eXBlID09ICdpbnRlZ2VyJykge1xuICAgICAgICAgICAgICAgIG91dCArPSAnICYmICEoJyArICgkZGF0YSkgKyAnICUgMSknO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG91dCArPSAnKSkgJyArICgkY29lcmNlZCkgKyAnID0gKycgKyAoJGRhdGEpICsgJzsgJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHR5cGUgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIGVsc2UgaWYgKCcgKyAoJGRhdGEpICsgJyA9PT0gXFwnZmFsc2VcXCcgfHwgJyArICgkZGF0YSkgKyAnID09PSAwIHx8ICcgKyAoJGRhdGEpICsgJyA9PT0gbnVsbCkgJyArICgkY29lcmNlZCkgKyAnID0gZmFsc2U7IGVsc2UgaWYgKCcgKyAoJGRhdGEpICsgJyA9PT0gXFwndHJ1ZVxcJyB8fCAnICsgKCRkYXRhKSArICcgPT09IDEpICcgKyAoJGNvZXJjZWQpICsgJyA9IHRydWU7ICc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCR0eXBlID09ICdudWxsJykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyBlbHNlIGlmICgnICsgKCRkYXRhKSArICcgPT09IFxcJ1xcJyB8fCAnICsgKCRkYXRhKSArICcgPT09IDAgfHwgJyArICgkZGF0YSkgKyAnID09PSBmYWxzZSkgJyArICgkY29lcmNlZCkgKyAnID0gbnVsbDsgJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQub3B0cy5jb2VyY2VUeXBlcyA9PSAnYXJyYXknICYmICR0eXBlID09ICdhcnJheScpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgZWxzZSBpZiAoJyArICgkZGF0YVR5cGUpICsgJyA9PSBcXCdzdHJpbmdcXCcgfHwgJyArICgkZGF0YVR5cGUpICsgJyA9PSBcXCdudW1iZXJcXCcgfHwgJyArICgkZGF0YVR5cGUpICsgJyA9PSBcXCdib29sZWFuXFwnIHx8ICcgKyAoJGRhdGEpICsgJyA9PSBudWxsKSAnICsgKCRjb2VyY2VkKSArICcgPSBbJyArICgkZGF0YSkgKyAnXTsgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgZWxzZSB7ICAgJztcbiAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ3R5cGUnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHR5cGU6IFxcJyc7XG4gICAgICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICdcXCcgfSAnO1xuICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgJztcbiAgICAgICAgICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIH0gaWYgKCcgKyAoJGNvZXJjZWQpICsgJyAhPT0gdW5kZWZpbmVkKSB7ICAnO1xuICAgICAgICB2YXIgJHBhcmVudERhdGEgPSAkZGF0YUx2bCA/ICdkYXRhJyArICgoJGRhdGFMdmwgLSAxKSB8fCAnJykgOiAncGFyZW50RGF0YScsXG4gICAgICAgICAgJHBhcmVudERhdGFQcm9wZXJ0eSA9ICRkYXRhTHZsID8gaXQuZGF0YVBhdGhBcnJbJGRhdGFMdmxdIDogJ3BhcmVudERhdGFQcm9wZXJ0eSc7XG4gICAgICAgIG91dCArPSAnICcgKyAoJGRhdGEpICsgJyA9ICcgKyAoJGNvZXJjZWQpICsgJzsgJztcbiAgICAgICAgaWYgKCEkZGF0YUx2bCkge1xuICAgICAgICAgIG91dCArPSAnaWYgKCcgKyAoJHBhcmVudERhdGEpICsgJyAhPT0gdW5kZWZpbmVkKSc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgJyArICgkcGFyZW50RGF0YSkgKyAnWycgKyAoJHBhcmVudERhdGFQcm9wZXJ0eSkgKyAnXSA9ICcgKyAoJGNvZXJjZWQpICsgJzsgfSAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ3R5cGUnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHR5cGU6IFxcJyc7XG4gICAgICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICdcXCcgfSAnO1xuICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgJztcbiAgICAgICAgICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfVxuICB9XG4gIGlmIChpdC5zY2hlbWEuJHJlZiAmJiAhJHJlZktleXdvcmRzKSB7XG4gICAgb3V0ICs9ICcgJyArIChpdC5SVUxFUy5hbGwuJHJlZi5jb2RlKGl0LCAnJHJlZicpKSArICcgJztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgfSBpZiAoZXJyb3JzID09PSAnO1xuICAgICAgaWYgKCR0b3ApIHtcbiAgICAgICAgb3V0ICs9ICcwJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnZXJyc18nICsgKCRsdmwpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcpIHsgJztcbiAgICAgICRjbG9zaW5nQnJhY2VzMiArPSAnfSc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBhcnIyID0gaXQuUlVMRVM7XG4gICAgaWYgKGFycjIpIHtcbiAgICAgIHZhciAkcnVsZXNHcm91cCwgaTIgPSAtMSxcbiAgICAgICAgbDIgPSBhcnIyLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaTIgPCBsMikge1xuICAgICAgICAkcnVsZXNHcm91cCA9IGFycjJbaTIgKz0gMV07XG4gICAgICAgIGlmICgkc2hvdWxkVXNlR3JvdXAoJHJ1bGVzR3JvdXApKSB7XG4gICAgICAgICAgaWYgKCRydWxlc0dyb3VwLnR5cGUpIHtcbiAgICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKGl0LnV0aWwuY2hlY2tEYXRhVHlwZSgkcnVsZXNHcm91cC50eXBlLCAkZGF0YSwgaXQub3B0cy5zdHJpY3ROdW1iZXJzKSkgKyAnKSB7ICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdC5vcHRzLnVzZURlZmF1bHRzKSB7XG4gICAgICAgICAgICBpZiAoJHJ1bGVzR3JvdXAudHlwZSA9PSAnb2JqZWN0JyAmJiBpdC5zY2hlbWEucHJvcGVydGllcykge1xuICAgICAgICAgICAgICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYS5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICRzY2hlbWFLZXlzID0gT2JqZWN0LmtleXMoJHNjaGVtYSk7XG4gICAgICAgICAgICAgIHZhciBhcnIzID0gJHNjaGVtYUtleXM7XG4gICAgICAgICAgICAgIGlmIChhcnIzKSB7XG4gICAgICAgICAgICAgICAgdmFyICRwcm9wZXJ0eUtleSwgaTMgPSAtMSxcbiAgICAgICAgICAgICAgICAgIGwzID0gYXJyMy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpMyA8IGwzKSB7XG4gICAgICAgICAgICAgICAgICAkcHJvcGVydHlLZXkgPSBhcnIzW2kzICs9IDFdO1xuICAgICAgICAgICAgICAgICAgdmFyICRzY2ggPSAkc2NoZW1hWyRwcm9wZXJ0eUtleV07XG4gICAgICAgICAgICAgICAgICBpZiAoJHNjaC5kZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXQuY29tcG9zaXRlUnVsZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnN0cmljdERlZmF1bHRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgJGRlZmF1bHRNc2cgPSAnZGVmYXVsdCBpcyBpZ25vcmVkIGZvcjogJyArICRwYXNzRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnN0cmljdERlZmF1bHRzID09PSAnbG9nJykgaXQubG9nZ2VyLndhcm4oJGRlZmF1bHRNc2cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJGRlZmF1bHRNc2cpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkcGFzc0RhdGEpICsgJyA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMudXNlRGVmYXVsdHMgPT0gJ2VtcHR5Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgJyArICgkcGFzc0RhdGEpICsgJyA9PT0gbnVsbCB8fCAnICsgKCRwYXNzRGF0YSkgKyAnID09PSBcXCdcXCcgJztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgKSAnICsgKCRwYXNzRGF0YSkgKyAnID0gJztcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy51c2VEZWZhdWx0cyA9PSAnc2hhcmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgJyArIChpdC51c2VEZWZhdWx0KCRzY2guZGVmYXVsdCkpICsgJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyAnICsgKEpTT04uc3RyaW5naWZ5KCRzY2guZGVmYXVsdCkpICsgJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJzsgJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICgkcnVsZXNHcm91cC50eXBlID09ICdhcnJheScgJiYgQXJyYXkuaXNBcnJheShpdC5zY2hlbWEuaXRlbXMpKSB7XG4gICAgICAgICAgICAgIHZhciBhcnI0ID0gaXQuc2NoZW1hLml0ZW1zO1xuICAgICAgICAgICAgICBpZiAoYXJyNCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2NoLCAkaSA9IC0xLFxuICAgICAgICAgICAgICAgICAgbDQgPSBhcnI0Lmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCRpIDwgbDQpIHtcbiAgICAgICAgICAgICAgICAgICRzY2ggPSBhcnI0WyRpICs9IDFdO1xuICAgICAgICAgICAgICAgICAgaWYgKCRzY2guZGVmYXVsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkcGFzc0RhdGEgPSAkZGF0YSArICdbJyArICRpICsgJ10nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXQuY29tcG9zaXRlUnVsZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnN0cmljdERlZmF1bHRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgJGRlZmF1bHRNc2cgPSAnZGVmYXVsdCBpcyBpZ25vcmVkIGZvcjogJyArICRwYXNzRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnN0cmljdERlZmF1bHRzID09PSAnbG9nJykgaXQubG9nZ2VyLndhcm4oJGRlZmF1bHRNc2cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJGRlZmF1bHRNc2cpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkcGFzc0RhdGEpICsgJyA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMudXNlRGVmYXVsdHMgPT0gJ2VtcHR5Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgJyArICgkcGFzc0RhdGEpICsgJyA9PT0gbnVsbCB8fCAnICsgKCRwYXNzRGF0YSkgKyAnID09PSBcXCdcXCcgJztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgKSAnICsgKCRwYXNzRGF0YSkgKyAnID0gJztcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy51c2VEZWZhdWx0cyA9PSAnc2hhcmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgJyArIChpdC51c2VEZWZhdWx0KCRzY2guZGVmYXVsdCkpICsgJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyAnICsgKEpTT04uc3RyaW5naWZ5KCRzY2guZGVmYXVsdCkpICsgJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJzsgJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgYXJyNSA9ICRydWxlc0dyb3VwLnJ1bGVzO1xuICAgICAgICAgIGlmIChhcnI1KSB7XG4gICAgICAgICAgICB2YXIgJHJ1bGUsIGk1ID0gLTEsXG4gICAgICAgICAgICAgIGw1ID0gYXJyNS5sZW5ndGggLSAxO1xuICAgICAgICAgICAgd2hpbGUgKGk1IDwgbDUpIHtcbiAgICAgICAgICAgICAgJHJ1bGUgPSBhcnI1W2k1ICs9IDFdO1xuICAgICAgICAgICAgICBpZiAoJHNob3VsZFVzZVJ1bGUoJHJ1bGUpKSB7XG4gICAgICAgICAgICAgICAgdmFyICRjb2RlID0gJHJ1bGUuY29kZShpdCwgJHJ1bGUua2V5d29yZCwgJHJ1bGVzR3JvdXAudHlwZSk7XG4gICAgICAgICAgICAgICAgaWYgKCRjb2RlKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICRjbG9zaW5nQnJhY2VzMSArPSAnfSc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzMSkgKyAnICc7XG4gICAgICAgICAgICAkY2xvc2luZ0JyYWNlczEgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRydWxlc0dyb3VwLnR5cGUpIHtcbiAgICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgICAgIGlmICgkdHlwZVNjaGVtYSAmJiAkdHlwZVNjaGVtYSA9PT0gJHJ1bGVzR3JvdXAudHlwZSAmJiAhJGNvZXJjZVRvVHlwZXMpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gICAgICAgICAgICAgIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLnR5cGUnLFxuICAgICAgICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvdHlwZSc7XG4gICAgICAgICAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICAgICAgICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgICAgICAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICd0eXBlJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyB0eXBlOiBcXCcnO1xuICAgICAgICAgICAgICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYS5qb2luKFwiLFwiKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91dCArPSAnXFwnIH0gJztcbiAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGJlICc7XG4gICAgICAgICAgICAgICAgICBpZiAoJHR5cGVJc0FycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYS5qb2luKFwiLFwiKSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICAgICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBpZiAoZXJyb3JzID09PSAnO1xuICAgICAgICAgICAgaWYgKCR0b3ApIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcwJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnZXJyc18nICsgKCRsdmwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcpIHsgJztcbiAgICAgICAgICAgICRjbG9zaW5nQnJhY2VzMiArPSAnfSc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgJyArICgkY2xvc2luZ0JyYWNlczIpICsgJyAnO1xuICB9XG4gIGlmICgkdG9wKSB7XG4gICAgaWYgKCRhc3luYykge1xuICAgICAgb3V0ICs9ICcgaWYgKGVycm9ycyA9PT0gMCkgcmV0dXJuIGRhdGE7ICAgICAgICAgICAnO1xuICAgICAgb3V0ICs9ICcgZWxzZSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHZFcnJvcnMpOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSB2RXJyb3JzOyAnO1xuICAgICAgb3V0ICs9ICcgcmV0dXJuIGVycm9ycyA9PT0gMDsgICAgICAgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfTsgcmV0dXJuIHZhbGlkYXRlOyc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJHZhbGlkKSArICcgPSBlcnJvcnMgPT09IGVycnNfJyArICgkbHZsKSArICc7JztcbiAgfVxuXG4gIGZ1bmN0aW9uICRzaG91bGRVc2VHcm91cCgkcnVsZXNHcm91cCkge1xuICAgIHZhciBydWxlcyA9ICRydWxlc0dyb3VwLnJ1bGVzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspXG4gICAgICBpZiAoJHNob3VsZFVzZVJ1bGUocnVsZXNbaV0pKSByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uICRzaG91bGRVc2VSdWxlKCRydWxlKSB7XG4gICAgcmV0dXJuIGl0LnNjaGVtYVskcnVsZS5rZXl3b3JkXSAhPT0gdW5kZWZpbmVkIHx8ICgkcnVsZS5pbXBsZW1lbnRzICYmICRydWxlSW1wbGVtZW50c1NvbWVLZXl3b3JkKCRydWxlKSk7XG4gIH1cblxuICBmdW5jdGlvbiAkcnVsZUltcGxlbWVudHNTb21lS2V5d29yZCgkcnVsZSkge1xuICAgIHZhciBpbXBsID0gJHJ1bGUuaW1wbGVtZW50cztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGltcGwubGVuZ3RoOyBpKyspXG4gICAgICBpZiAoaXQuc2NoZW1hW2ltcGxbaV1dICE9PSB1bmRlZmluZWQpIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciByZXNvbHZlID0gcmVxdWlyZSgnLi9yZXNvbHZlJylcbiAgLCB1dGlsID0gcmVxdWlyZSgnLi91dGlsJylcbiAgLCBlcnJvckNsYXNzZXMgPSByZXF1aXJlKCcuL2Vycm9yX2NsYXNzZXMnKVxuICAsIHN0YWJsZVN0cmluZ2lmeSA9IHJlcXVpcmUoJ2Zhc3QtanNvbi1zdGFibGUtc3RyaW5naWZ5Jyk7XG5cbnZhciB2YWxpZGF0ZUdlbmVyYXRvciA9IHJlcXVpcmUoJy4uL2RvdGpzL3ZhbGlkYXRlJyk7XG5cbi8qKlxuICogRnVuY3Rpb25zIGJlbG93IGFyZSB1c2VkIGluc2lkZSBjb21waWxlZCB2YWxpZGF0aW9ucyBmdW5jdGlvblxuICovXG5cbnZhciB1Y3MybGVuZ3RoID0gdXRpbC51Y3MybGVuZ3RoO1xudmFyIGVxdWFsID0gcmVxdWlyZSgnZmFzdC1kZWVwLWVxdWFsJyk7XG5cbi8vIHRoaXMgZXJyb3IgaXMgdGhyb3duIGJ5IGFzeW5jIHNjaGVtYXMgdG8gcmV0dXJuIHZhbGlkYXRpb24gZXJyb3JzIHZpYSBleGNlcHRpb25cbnZhciBWYWxpZGF0aW9uRXJyb3IgPSBlcnJvckNsYXNzZXMuVmFsaWRhdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBjb21waWxlO1xuXG5cbi8qKlxuICogQ29tcGlsZXMgc2NoZW1hIHRvIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtPYmplY3R9IHNjaGVtYSBzY2hlbWEgb2JqZWN0XG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgb2JqZWN0IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJvb3Qgc2NoZW1hIGZvciB0aGlzIHNjaGVtYVxuICogQHBhcmFtICB7T2JqZWN0fSBsb2NhbFJlZnMgdGhlIGhhc2ggb2YgbG9jYWwgcmVmZXJlbmNlcyBpbnNpZGUgdGhlIHNjaGVtYSAoY3JlYXRlZCBieSByZXNvbHZlLmlkKSwgdXNlZCBmb3IgaW5saW5lIHJlc29sdXRpb25cbiAqIEBwYXJhbSAge1N0cmluZ30gYmFzZUlkIGJhc2UgSUQgZm9yIElEcyBpbiB0aGUgc2NoZW1hXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gdmFsaWRhdGlvbiBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBjb21waWxlKHNjaGVtYSwgcm9vdCwgbG9jYWxSZWZzLCBiYXNlSWQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSwgZXZpbDogdHJ1ZSAqL1xuICAvKiBlc2xpbnQgbm8tc2hhZG93OiAwICovXG4gIHZhciBzZWxmID0gdGhpc1xuICAgICwgb3B0cyA9IHRoaXMuX29wdHNcbiAgICAsIHJlZlZhbCA9IFsgdW5kZWZpbmVkIF1cbiAgICAsIHJlZnMgPSB7fVxuICAgICwgcGF0dGVybnMgPSBbXVxuICAgICwgcGF0dGVybnNIYXNoID0ge31cbiAgICAsIGRlZmF1bHRzID0gW11cbiAgICAsIGRlZmF1bHRzSGFzaCA9IHt9XG4gICAgLCBjdXN0b21SdWxlcyA9IFtdO1xuXG4gIHJvb3QgPSByb290IHx8IHsgc2NoZW1hOiBzY2hlbWEsIHJlZlZhbDogcmVmVmFsLCByZWZzOiByZWZzIH07XG5cbiAgdmFyIGMgPSBjaGVja0NvbXBpbGluZy5jYWxsKHRoaXMsIHNjaGVtYSwgcm9vdCwgYmFzZUlkKTtcbiAgdmFyIGNvbXBpbGF0aW9uID0gdGhpcy5fY29tcGlsYXRpb25zW2MuaW5kZXhdO1xuICBpZiAoYy5jb21waWxpbmcpIHJldHVybiAoY29tcGlsYXRpb24uY2FsbFZhbGlkYXRlID0gY2FsbFZhbGlkYXRlKTtcblxuICB2YXIgZm9ybWF0cyA9IHRoaXMuX2Zvcm1hdHM7XG4gIHZhciBSVUxFUyA9IHRoaXMuUlVMRVM7XG5cbiAgdHJ5IHtcbiAgICB2YXIgdiA9IGxvY2FsQ29tcGlsZShzY2hlbWEsIHJvb3QsIGxvY2FsUmVmcywgYmFzZUlkKTtcbiAgICBjb21waWxhdGlvbi52YWxpZGF0ZSA9IHY7XG4gICAgdmFyIGN2ID0gY29tcGlsYXRpb24uY2FsbFZhbGlkYXRlO1xuICAgIGlmIChjdikge1xuICAgICAgY3Yuc2NoZW1hID0gdi5zY2hlbWE7XG4gICAgICBjdi5lcnJvcnMgPSBudWxsO1xuICAgICAgY3YucmVmcyA9IHYucmVmcztcbiAgICAgIGN2LnJlZlZhbCA9IHYucmVmVmFsO1xuICAgICAgY3Yucm9vdCA9IHYucm9vdDtcbiAgICAgIGN2LiRhc3luYyA9IHYuJGFzeW5jO1xuICAgICAgaWYgKG9wdHMuc291cmNlQ29kZSkgY3Yuc291cmNlID0gdi5zb3VyY2U7XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9IGZpbmFsbHkge1xuICAgIGVuZENvbXBpbGluZy5jYWxsKHRoaXMsIHNjaGVtYSwgcm9vdCwgYmFzZUlkKTtcbiAgfVxuXG4gIC8qIEB0aGlzICAgeyp9IC0gY3VzdG9tIGNvbnRleHQsIHNlZSBwYXNzQ29udGV4dCBvcHRpb24gKi9cbiAgZnVuY3Rpb24gY2FsbFZhbGlkYXRlKCkge1xuICAgIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgICB2YXIgdmFsaWRhdGUgPSBjb21waWxhdGlvbi52YWxpZGF0ZTtcbiAgICB2YXIgcmVzdWx0ID0gdmFsaWRhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBjYWxsVmFsaWRhdGUuZXJyb3JzID0gdmFsaWRhdGUuZXJyb3JzO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBsb2NhbENvbXBpbGUoX3NjaGVtYSwgX3Jvb3QsIGxvY2FsUmVmcywgYmFzZUlkKSB7XG4gICAgdmFyIGlzUm9vdCA9ICFfcm9vdCB8fCAoX3Jvb3QgJiYgX3Jvb3Quc2NoZW1hID09IF9zY2hlbWEpO1xuICAgIGlmIChfcm9vdC5zY2hlbWEgIT0gcm9vdC5zY2hlbWEpXG4gICAgICByZXR1cm4gY29tcGlsZS5jYWxsKHNlbGYsIF9zY2hlbWEsIF9yb290LCBsb2NhbFJlZnMsIGJhc2VJZCk7XG5cbiAgICB2YXIgJGFzeW5jID0gX3NjaGVtYS4kYXN5bmMgPT09IHRydWU7XG5cbiAgICB2YXIgc291cmNlQ29kZSA9IHZhbGlkYXRlR2VuZXJhdG9yKHtcbiAgICAgIGlzVG9wOiB0cnVlLFxuICAgICAgc2NoZW1hOiBfc2NoZW1hLFxuICAgICAgaXNSb290OiBpc1Jvb3QsXG4gICAgICBiYXNlSWQ6IGJhc2VJZCxcbiAgICAgIHJvb3Q6IF9yb290LFxuICAgICAgc2NoZW1hUGF0aDogJycsXG4gICAgICBlcnJTY2hlbWFQYXRoOiAnIycsXG4gICAgICBlcnJvclBhdGg6ICdcIlwiJyxcbiAgICAgIE1pc3NpbmdSZWZFcnJvcjogZXJyb3JDbGFzc2VzLk1pc3NpbmdSZWYsXG4gICAgICBSVUxFUzogUlVMRVMsXG4gICAgICB2YWxpZGF0ZTogdmFsaWRhdGVHZW5lcmF0b3IsXG4gICAgICB1dGlsOiB1dGlsLFxuICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgIHJlc29sdmVSZWY6IHJlc29sdmVSZWYsXG4gICAgICB1c2VQYXR0ZXJuOiB1c2VQYXR0ZXJuLFxuICAgICAgdXNlRGVmYXVsdDogdXNlRGVmYXVsdCxcbiAgICAgIHVzZUN1c3RvbVJ1bGU6IHVzZUN1c3RvbVJ1bGUsXG4gICAgICBvcHRzOiBvcHRzLFxuICAgICAgZm9ybWF0czogZm9ybWF0cyxcbiAgICAgIGxvZ2dlcjogc2VsZi5sb2dnZXIsXG4gICAgICBzZWxmOiBzZWxmXG4gICAgfSk7XG5cbiAgICBzb3VyY2VDb2RlID0gdmFycyhyZWZWYWwsIHJlZlZhbENvZGUpICsgdmFycyhwYXR0ZXJucywgcGF0dGVybkNvZGUpXG4gICAgICAgICAgICAgICAgICAgKyB2YXJzKGRlZmF1bHRzLCBkZWZhdWx0Q29kZSkgKyB2YXJzKGN1c3RvbVJ1bGVzLCBjdXN0b21SdWxlQ29kZSlcbiAgICAgICAgICAgICAgICAgICArIHNvdXJjZUNvZGU7XG5cbiAgICBpZiAob3B0cy5wcm9jZXNzQ29kZSkgc291cmNlQ29kZSA9IG9wdHMucHJvY2Vzc0NvZGUoc291cmNlQ29kZSwgX3NjaGVtYSk7XG4gICAgLy8gY29uc29sZS5sb2coJ1xcblxcblxcbiAqKiogXFxuJywgSlNPTi5zdHJpbmdpZnkoc291cmNlQ29kZSkpO1xuICAgIHZhciB2YWxpZGF0ZTtcbiAgICB0cnkge1xuICAgICAgdmFyIG1ha2VWYWxpZGF0ZSA9IG5ldyBGdW5jdGlvbihcbiAgICAgICAgJ3NlbGYnLFxuICAgICAgICAnUlVMRVMnLFxuICAgICAgICAnZm9ybWF0cycsXG4gICAgICAgICdyb290JyxcbiAgICAgICAgJ3JlZlZhbCcsXG4gICAgICAgICdkZWZhdWx0cycsXG4gICAgICAgICdjdXN0b21SdWxlcycsXG4gICAgICAgICdlcXVhbCcsXG4gICAgICAgICd1Y3MybGVuZ3RoJyxcbiAgICAgICAgJ1ZhbGlkYXRpb25FcnJvcicsXG4gICAgICAgIHNvdXJjZUNvZGVcbiAgICAgICk7XG5cbiAgICAgIHZhbGlkYXRlID0gbWFrZVZhbGlkYXRlKFxuICAgICAgICBzZWxmLFxuICAgICAgICBSVUxFUyxcbiAgICAgICAgZm9ybWF0cyxcbiAgICAgICAgcm9vdCxcbiAgICAgICAgcmVmVmFsLFxuICAgICAgICBkZWZhdWx0cyxcbiAgICAgICAgY3VzdG9tUnVsZXMsXG4gICAgICAgIGVxdWFsLFxuICAgICAgICB1Y3MybGVuZ3RoLFxuICAgICAgICBWYWxpZGF0aW9uRXJyb3JcbiAgICAgICk7XG5cbiAgICAgIHJlZlZhbFswXSA9IHZhbGlkYXRlO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoJ0Vycm9yIGNvbXBpbGluZyBzY2hlbWEsIGZ1bmN0aW9uIGNvZGU6Jywgc291cmNlQ29kZSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHZhbGlkYXRlLnNjaGVtYSA9IF9zY2hlbWE7XG4gICAgdmFsaWRhdGUuZXJyb3JzID0gbnVsbDtcbiAgICB2YWxpZGF0ZS5yZWZzID0gcmVmcztcbiAgICB2YWxpZGF0ZS5yZWZWYWwgPSByZWZWYWw7XG4gICAgdmFsaWRhdGUucm9vdCA9IGlzUm9vdCA/IHZhbGlkYXRlIDogX3Jvb3Q7XG4gICAgaWYgKCRhc3luYykgdmFsaWRhdGUuJGFzeW5jID0gdHJ1ZTtcbiAgICBpZiAob3B0cy5zb3VyY2VDb2RlID09PSB0cnVlKSB7XG4gICAgICB2YWxpZGF0ZS5zb3VyY2UgPSB7XG4gICAgICAgIGNvZGU6IHNvdXJjZUNvZGUsXG4gICAgICAgIHBhdHRlcm5zOiBwYXR0ZXJucyxcbiAgICAgICAgZGVmYXVsdHM6IGRlZmF1bHRzXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc29sdmVSZWYoYmFzZUlkLCByZWYsIGlzUm9vdCkge1xuICAgIHJlZiA9IHJlc29sdmUudXJsKGJhc2VJZCwgcmVmKTtcbiAgICB2YXIgcmVmSW5kZXggPSByZWZzW3JlZl07XG4gICAgdmFyIF9yZWZWYWwsIHJlZkNvZGU7XG4gICAgaWYgKHJlZkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIF9yZWZWYWwgPSByZWZWYWxbcmVmSW5kZXhdO1xuICAgICAgcmVmQ29kZSA9ICdyZWZWYWxbJyArIHJlZkluZGV4ICsgJ10nO1xuICAgICAgcmV0dXJuIHJlc29sdmVkUmVmKF9yZWZWYWwsIHJlZkNvZGUpO1xuICAgIH1cbiAgICBpZiAoIWlzUm9vdCAmJiByb290LnJlZnMpIHtcbiAgICAgIHZhciByb290UmVmSWQgPSByb290LnJlZnNbcmVmXTtcbiAgICAgIGlmIChyb290UmVmSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBfcmVmVmFsID0gcm9vdC5yZWZWYWxbcm9vdFJlZklkXTtcbiAgICAgICAgcmVmQ29kZSA9IGFkZExvY2FsUmVmKHJlZiwgX3JlZlZhbCk7XG4gICAgICAgIHJldHVybiByZXNvbHZlZFJlZihfcmVmVmFsLCByZWZDb2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZWZDb2RlID0gYWRkTG9jYWxSZWYocmVmKTtcbiAgICB2YXIgdiA9IHJlc29sdmUuY2FsbChzZWxmLCBsb2NhbENvbXBpbGUsIHJvb3QsIHJlZik7XG4gICAgaWYgKHYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGxvY2FsU2NoZW1hID0gbG9jYWxSZWZzICYmIGxvY2FsUmVmc1tyZWZdO1xuICAgICAgaWYgKGxvY2FsU2NoZW1hKSB7XG4gICAgICAgIHYgPSByZXNvbHZlLmlubGluZVJlZihsb2NhbFNjaGVtYSwgb3B0cy5pbmxpbmVSZWZzKVxuICAgICAgICAgICAgPyBsb2NhbFNjaGVtYVxuICAgICAgICAgICAgOiBjb21waWxlLmNhbGwoc2VsZiwgbG9jYWxTY2hlbWEsIHJvb3QsIGxvY2FsUmVmcywgYmFzZUlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZW1vdmVMb2NhbFJlZihyZWYpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXBsYWNlTG9jYWxSZWYocmVmLCB2KTtcbiAgICAgIHJldHVybiByZXNvbHZlZFJlZih2LCByZWZDb2RlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBhZGRMb2NhbFJlZihyZWYsIHYpIHtcbiAgICB2YXIgcmVmSWQgPSByZWZWYWwubGVuZ3RoO1xuICAgIHJlZlZhbFtyZWZJZF0gPSB2O1xuICAgIHJlZnNbcmVmXSA9IHJlZklkO1xuICAgIHJldHVybiAncmVmVmFsJyArIHJlZklkO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlTG9jYWxSZWYocmVmKSB7XG4gICAgZGVsZXRlIHJlZnNbcmVmXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VMb2NhbFJlZihyZWYsIHYpIHtcbiAgICB2YXIgcmVmSWQgPSByZWZzW3JlZl07XG4gICAgcmVmVmFsW3JlZklkXSA9IHY7XG4gIH1cblxuICBmdW5jdGlvbiByZXNvbHZlZFJlZihyZWZWYWwsIGNvZGUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHJlZlZhbCA9PSAnb2JqZWN0JyB8fCB0eXBlb2YgcmVmVmFsID09ICdib29sZWFuJ1xuICAgICAgICAgICAgPyB7IGNvZGU6IGNvZGUsIHNjaGVtYTogcmVmVmFsLCBpbmxpbmU6IHRydWUgfVxuICAgICAgICAgICAgOiB7IGNvZGU6IGNvZGUsICRhc3luYzogcmVmVmFsICYmICEhcmVmVmFsLiRhc3luYyB9O1xuICB9XG5cbiAgZnVuY3Rpb24gdXNlUGF0dGVybihyZWdleFN0cikge1xuICAgIHZhciBpbmRleCA9IHBhdHRlcm5zSGFzaFtyZWdleFN0cl07XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluZGV4ID0gcGF0dGVybnNIYXNoW3JlZ2V4U3RyXSA9IHBhdHRlcm5zLmxlbmd0aDtcbiAgICAgIHBhdHRlcm5zW2luZGV4XSA9IHJlZ2V4U3RyO1xuICAgIH1cbiAgICByZXR1cm4gJ3BhdHRlcm4nICsgaW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiB1c2VEZWZhdWx0KHZhbHVlKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmV0dXJuICcnICsgdmFsdWU7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gdXRpbC50b1F1b3RlZFN0cmluZyh2YWx1ZSk7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiAnbnVsbCc7XG4gICAgICAgIHZhciB2YWx1ZVN0ciA9IHN0YWJsZVN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICAgIHZhciBpbmRleCA9IGRlZmF1bHRzSGFzaFt2YWx1ZVN0cl07XG4gICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaW5kZXggPSBkZWZhdWx0c0hhc2hbdmFsdWVTdHJdID0gZGVmYXVsdHMubGVuZ3RoO1xuICAgICAgICAgIGRlZmF1bHRzW2luZGV4XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnZGVmYXVsdCcgKyBpbmRleDtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1c2VDdXN0b21SdWxlKHJ1bGUsIHNjaGVtYSwgcGFyZW50U2NoZW1hLCBpdCkge1xuICAgIGlmIChzZWxmLl9vcHRzLnZhbGlkYXRlU2NoZW1hICE9PSBmYWxzZSkge1xuICAgICAgdmFyIGRlcHMgPSBydWxlLmRlZmluaXRpb24uZGVwZW5kZW5jaWVzO1xuICAgICAgaWYgKGRlcHMgJiYgIWRlcHMuZXZlcnkoZnVuY3Rpb24oa2V5d29yZCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmVudFNjaGVtYSwga2V5d29yZCk7XG4gICAgICB9KSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdwYXJlbnQgc2NoZW1hIG11c3QgaGF2ZSBhbGwgcmVxdWlyZWQga2V5d29yZHM6ICcgKyBkZXBzLmpvaW4oJywnKSk7XG5cbiAgICAgIHZhciB2YWxpZGF0ZVNjaGVtYSA9IHJ1bGUuZGVmaW5pdGlvbi52YWxpZGF0ZVNjaGVtYTtcbiAgICAgIGlmICh2YWxpZGF0ZVNjaGVtYSkge1xuICAgICAgICB2YXIgdmFsaWQgPSB2YWxpZGF0ZVNjaGVtYShzY2hlbWEpO1xuICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgdmFyIG1lc3NhZ2UgPSAna2V5d29yZCBzY2hlbWEgaXMgaW52YWxpZDogJyArIHNlbGYuZXJyb3JzVGV4dCh2YWxpZGF0ZVNjaGVtYS5lcnJvcnMpO1xuICAgICAgICAgIGlmIChzZWxmLl9vcHRzLnZhbGlkYXRlU2NoZW1hID09ICdsb2cnKSBzZWxmLmxvZ2dlci5lcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICBlbHNlIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjb21waWxlID0gcnVsZS5kZWZpbml0aW9uLmNvbXBpbGVcbiAgICAgICwgaW5saW5lID0gcnVsZS5kZWZpbml0aW9uLmlubGluZVxuICAgICAgLCBtYWNybyA9IHJ1bGUuZGVmaW5pdGlvbi5tYWNybztcblxuICAgIHZhciB2YWxpZGF0ZTtcbiAgICBpZiAoY29tcGlsZSkge1xuICAgICAgdmFsaWRhdGUgPSBjb21waWxlLmNhbGwoc2VsZiwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGl0KTtcbiAgICB9IGVsc2UgaWYgKG1hY3JvKSB7XG4gICAgICB2YWxpZGF0ZSA9IG1hY3JvLmNhbGwoc2VsZiwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGl0KTtcbiAgICAgIGlmIChvcHRzLnZhbGlkYXRlU2NoZW1hICE9PSBmYWxzZSkgc2VsZi52YWxpZGF0ZVNjaGVtYSh2YWxpZGF0ZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChpbmxpbmUpIHtcbiAgICAgIHZhbGlkYXRlID0gaW5saW5lLmNhbGwoc2VsZiwgaXQsIHJ1bGUua2V5d29yZCwgc2NoZW1hLCBwYXJlbnRTY2hlbWEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWxpZGF0ZSA9IHJ1bGUuZGVmaW5pdGlvbi52YWxpZGF0ZTtcbiAgICAgIGlmICghdmFsaWRhdGUpIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGUgPT09IHVuZGVmaW5lZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3VzdG9tIGtleXdvcmQgXCInICsgcnVsZS5rZXl3b3JkICsgJ1wiZmFpbGVkIHRvIGNvbXBpbGUnKTtcblxuICAgIHZhciBpbmRleCA9IGN1c3RvbVJ1bGVzLmxlbmd0aDtcbiAgICBjdXN0b21SdWxlc1tpbmRleF0gPSB2YWxpZGF0ZTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiAnY3VzdG9tUnVsZScgKyBpbmRleCxcbiAgICAgIHZhbGlkYXRlOiB2YWxpZGF0ZVxuICAgIH07XG4gIH1cbn1cblxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgc2NoZW1hIGlzIGN1cnJlbnRseSBjb21waWxlZFxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge09iamVjdH0gc2NoZW1hIHNjaGVtYSB0byBjb21waWxlXG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgcm9vdCBvYmplY3RcbiAqIEBwYXJhbSAge1N0cmluZ30gYmFzZUlkIGJhc2Ugc2NoZW1hIElEXG4gKiBAcmV0dXJuIHtPYmplY3R9IG9iamVjdCB3aXRoIHByb3BlcnRpZXMgXCJpbmRleFwiIChjb21waWxhdGlvbiBpbmRleCkgYW5kIFwiY29tcGlsaW5nXCIgKGJvb2xlYW4pXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ29tcGlsaW5nKHNjaGVtYSwgcm9vdCwgYmFzZUlkKSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgdmFyIGluZGV4ID0gY29tcEluZGV4LmNhbGwodGhpcywgc2NoZW1hLCByb290LCBiYXNlSWQpO1xuICBpZiAoaW5kZXggPj0gMCkgcmV0dXJuIHsgaW5kZXg6IGluZGV4LCBjb21waWxpbmc6IHRydWUgfTtcbiAgaW5kZXggPSB0aGlzLl9jb21waWxhdGlvbnMubGVuZ3RoO1xuICB0aGlzLl9jb21waWxhdGlvbnNbaW5kZXhdID0ge1xuICAgIHNjaGVtYTogc2NoZW1hLFxuICAgIHJvb3Q6IHJvb3QsXG4gICAgYmFzZUlkOiBiYXNlSWRcbiAgfTtcbiAgcmV0dXJuIHsgaW5kZXg6IGluZGV4LCBjb21waWxpbmc6IGZhbHNlIH07XG59XG5cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBzY2hlbWEgZnJvbSB0aGUgY3VycmVudGx5IGNvbXBpbGVkIGxpc3RcbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtPYmplY3R9IHNjaGVtYSBzY2hlbWEgdG8gY29tcGlsZVxuICogQHBhcmFtICB7T2JqZWN0fSByb290IHJvb3Qgb2JqZWN0XG4gKiBAcGFyYW0gIHtTdHJpbmd9IGJhc2VJZCBiYXNlIHNjaGVtYSBJRFxuICovXG5mdW5jdGlvbiBlbmRDb21waWxpbmcoc2NoZW1hLCByb290LCBiYXNlSWQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgaSA9IGNvbXBJbmRleC5jYWxsKHRoaXMsIHNjaGVtYSwgcm9vdCwgYmFzZUlkKTtcbiAgaWYgKGkgPj0gMCkgdGhpcy5fY29tcGlsYXRpb25zLnNwbGljZShpLCAxKTtcbn1cblxuXG4vKipcbiAqIEluZGV4IG9mIHNjaGVtYSBjb21waWxhdGlvbiBpbiB0aGUgY3VycmVudGx5IGNvbXBpbGVkIGxpc3RcbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtPYmplY3R9IHNjaGVtYSBzY2hlbWEgdG8gY29tcGlsZVxuICogQHBhcmFtICB7T2JqZWN0fSByb290IHJvb3Qgb2JqZWN0XG4gKiBAcGFyYW0gIHtTdHJpbmd9IGJhc2VJZCBiYXNlIHNjaGVtYSBJRFxuICogQHJldHVybiB7SW50ZWdlcn0gY29tcGlsYXRpb24gaW5kZXhcbiAqL1xuZnVuY3Rpb24gY29tcEluZGV4KHNjaGVtYSwgcm9vdCwgYmFzZUlkKSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgZm9yICh2YXIgaT0wOyBpPHRoaXMuX2NvbXBpbGF0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjID0gdGhpcy5fY29tcGlsYXRpb25zW2ldO1xuICAgIGlmIChjLnNjaGVtYSA9PSBzY2hlbWEgJiYgYy5yb290ID09IHJvb3QgJiYgYy5iYXNlSWQgPT0gYmFzZUlkKSByZXR1cm4gaTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG5cblxuZnVuY3Rpb24gcGF0dGVybkNvZGUoaSwgcGF0dGVybnMpIHtcbiAgcmV0dXJuICd2YXIgcGF0dGVybicgKyBpICsgJyA9IG5ldyBSZWdFeHAoJyArIHV0aWwudG9RdW90ZWRTdHJpbmcocGF0dGVybnNbaV0pICsgJyk7Jztcbn1cblxuXG5mdW5jdGlvbiBkZWZhdWx0Q29kZShpKSB7XG4gIHJldHVybiAndmFyIGRlZmF1bHQnICsgaSArICcgPSBkZWZhdWx0c1snICsgaSArICddOyc7XG59XG5cblxuZnVuY3Rpb24gcmVmVmFsQ29kZShpLCByZWZWYWwpIHtcbiAgcmV0dXJuIHJlZlZhbFtpXSA9PT0gdW5kZWZpbmVkID8gJycgOiAndmFyIHJlZlZhbCcgKyBpICsgJyA9IHJlZlZhbFsnICsgaSArICddOyc7XG59XG5cblxuZnVuY3Rpb24gY3VzdG9tUnVsZUNvZGUoaSkge1xuICByZXR1cm4gJ3ZhciBjdXN0b21SdWxlJyArIGkgKyAnID0gY3VzdG9tUnVsZXNbJyArIGkgKyAnXTsnO1xufVxuXG5cbmZ1bmN0aW9uIHZhcnMoYXJyLCBzdGF0ZW1lbnQpIHtcbiAgaWYgKCFhcnIubGVuZ3RoKSByZXR1cm4gJyc7XG4gIHZhciBjb2RlID0gJyc7XG4gIGZvciAodmFyIGk9MDsgaTxhcnIubGVuZ3RoOyBpKyspXG4gICAgY29kZSArPSBzdGF0ZW1lbnQoaSwgYXJyKTtcbiAgcmV0dXJuIGNvZGU7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cblxudmFyIENhY2hlID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBDYWNoZSgpIHtcbiAgdGhpcy5fY2FjaGUgPSB7fTtcbn07XG5cblxuQ2FjaGUucHJvdG90eXBlLnB1dCA9IGZ1bmN0aW9uIENhY2hlX3B1dChrZXksIHZhbHVlKSB7XG4gIHRoaXMuX2NhY2hlW2tleV0gPSB2YWx1ZTtcbn07XG5cblxuQ2FjaGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIENhY2hlX2dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX2NhY2hlW2tleV07XG59O1xuXG5cbkNhY2hlLnByb3RvdHlwZS5kZWwgPSBmdW5jdGlvbiBDYWNoZV9kZWwoa2V5KSB7XG4gIGRlbGV0ZSB0aGlzLl9jYWNoZVtrZXldO1xufTtcblxuXG5DYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBDYWNoZV9jbGVhcigpIHtcbiAgdGhpcy5fY2FjaGUgPSB7fTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbnZhciBEQVRFID0gL14oXFxkXFxkXFxkXFxkKS0oXFxkXFxkKS0oXFxkXFxkKSQvO1xudmFyIERBWVMgPSBbMCwzMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV07XG52YXIgVElNRSA9IC9eKFxcZFxcZCk6KFxcZFxcZCk6KFxcZFxcZCkoXFwuXFxkKyk/KHp8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8pPyQvaTtcbnZhciBIT1NUTkFNRSA9IC9eKD89LnsxLDI1M31cXC4/JClbYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT8oPzpcXC5bYS16MC05XSg/OlstMC05YS16XXswLDYxfVswLTlhLXpdKT8pKlxcLj8kL2k7XG52YXIgVVJJID0gL14oPzpbYS16XVthLXowLTkrXFwtLl0qOikoPzpcXC8/XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9Ol18JVswLTlhLWZdezJ9KSpAKT8oPzpcXFsoPzooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7Nn18OjooPzpbMC05YS1mXXsxLDR9Oil7NX18KD86WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7NH18KD86KD86WzAtOWEtZl17MSw0fTopezAsMX1bMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXszfXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwyfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezJ9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDN9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9OnwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw0fVswLTlhLWZdezEsNH0pPzo6KSg/OlswLTlhLWZdezEsNH06WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpfCg/Oig/OlswLTlhLWZdezEsNH06KXswLDV9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDZ9WzAtOWEtZl17MSw0fSk/OjopfFtWdl1bMC05YS1mXStcXC5bYS16MC05XFwtLl9+ISQmJygpKissOz06XSspXFxdfCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KXwoPzpbYS16MC05XFwtLl9+ISQmJygpKissOz1dfCVbMC05YS1mXXsyfSkqKSg/OjpcXGQqKT8oPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSopKnxcXC8oPzooPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSopKik/fCg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKSg/OlxcPyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpALz9dfCVbMC05YS1mXXsyfSkqKT8oPzojKD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkAvP118JVswLTlhLWZdezJ9KSopPyQvaTtcbnZhciBVUklSRUYgPSAvXig/OlthLXpdW2EtejAtOStcXC0uXSo6KT8oPzpcXC8/XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9Ol18JVswLTlhLWZdezJ9KSpAKT8oPzpcXFsoPzooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7Nn18OjooPzpbMC05YS1mXXsxLDR9Oil7NX18KD86WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7NH18KD86KD86WzAtOWEtZl17MSw0fTopezAsMX1bMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXszfXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwyfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezJ9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDN9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9OnwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw0fVswLTlhLWZdezEsNH0pPzo6KSg/OlswLTlhLWZdezEsNH06WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpfCg/Oig/OlswLTlhLWZdezEsNH06KXswLDV9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDZ9WzAtOWEtZl17MSw0fSk/OjopfFtWdl1bMC05YS1mXStcXC5bYS16MC05XFwtLl9+ISQmJygpKissOz06XSspXFxdfCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KXwoPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PV18JVswLTlhLWZdezJ9KSopKD86OlxcZCopPyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSp8XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKT98KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKT8oPzpcXD8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpALz9dfCVbMC05YS1mXXsyfSkqKT8oPzojKD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QC8/XXwlWzAtOWEtZl17Mn0pKik/JC9pO1xuLy8gdXJpLXRlbXBsYXRlOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjU3MFxudmFyIFVSSVRFTVBMQVRFID0gL14oPzooPzpbXlxceDAwLVxceDIwXCInPD4lXFxcXF5ge3x9XXwlWzAtOWEtZl17Mn0pfFxce1srIy4vOz8mPSwhQHxdPyg/OlthLXowLTlfXXwlWzAtOWEtZl17Mn0pKyg/OjpbMS05XVswLTldezAsM318XFwqKT8oPzosKD86W2EtejAtOV9dfCVbMC05YS1mXXsyfSkrKD86OlsxLTldWzAtOV17MCwzfXxcXCopPykqXFx9KSokL2k7XG4vLyBGb3IgdGhlIHNvdXJjZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZHBlcmluaS83MjkyOTRcbi8vIEZvciB0ZXN0IGNhc2VzOiBodHRwczovL21hdGhpYXNieW5lbnMuYmUvZGVtby91cmwtcmVnZXhcbi8vIEB0b2RvIERlbGV0ZSBjdXJyZW50IFVSTCBpbiBmYXZvdXIgb2YgdGhlIGNvbW1lbnRlZCBvdXQgVVJMIHJ1bGUgd2hlbiB0aGlzIGlzc3VlIGlzIGZpeGVkIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lzc3Vlcy83OTgzLlxuLy8gdmFyIFVSTCA9IC9eKD86KD86aHR0cHM/fGZ0cCk6XFwvXFwvKSg/OlxcUysoPzo6XFxTKik/QCk/KD86KD8hMTAoPzpcXC5cXGR7MSwzfSl7M30pKD8hMTI3KD86XFwuXFxkezEsM30pezN9KSg/ITE2OVxcLjI1NCg/OlxcLlxcZHsxLDN9KXsyfSkoPyExOTJcXC4xNjgoPzpcXC5cXGR7MSwzfSl7Mn0pKD8hMTcyXFwuKD86MVs2LTldfDJcXGR8M1swLTFdKSg/OlxcLlxcZHsxLDN9KXsyfSkoPzpbMS05XVxcZD98MVxcZFxcZHwyWzAxXVxcZHwyMlswLTNdKSg/OlxcLig/OjE/XFxkezEsMn18MlswLTRdXFxkfDI1WzAtNV0pKXsyfSg/OlxcLig/OlsxLTldXFxkP3wxXFxkXFxkfDJbMC00XVxcZHwyNVswLTRdKSl8KD86KD86W2EtelxcdXswMGExfS1cXHV7ZmZmZn0wLTldKy0pKlthLXpcXHV7MDBhMX0tXFx1e2ZmZmZ9MC05XSspKD86XFwuKD86W2EtelxcdXswMGExfS1cXHV7ZmZmZn0wLTldKy0pKlthLXpcXHV7MDBhMX0tXFx1e2ZmZmZ9MC05XSspKig/OlxcLig/OlthLXpcXHV7MDBhMX0tXFx1e2ZmZmZ9XXsyLH0pKSkoPzo6XFxkezIsNX0pPyg/OlxcL1teXFxzXSopPyQvaXU7XG52YXIgVVJMID0gL14oPzooPzpodHRwW3NcXHUwMTdGXT98ZnRwKTpcXC9cXC8pKD86KD86W1xcMC1cXHgwOFxceDBFLVxceDFGIS1cXHg5RlxceEExLVxcdTE2N0ZcXHUxNjgxLVxcdTFGRkZcXHUyMDBCLVxcdTIwMjdcXHUyMDJBLVxcdTIwMkVcXHUyMDMwLVxcdTIwNUVcXHUyMDYwLVxcdTJGRkZcXHUzMDAxLVxcdUQ3RkZcXHVFMDAwLVxcdUZFRkVcXHVGRjAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0pKyg/OjooPzpbXFwwLVxceDA4XFx4MEUtXFx4MUYhLVxceDlGXFx4QTEtXFx1MTY3RlxcdTE2ODEtXFx1MUZGRlxcdTIwMEItXFx1MjAyN1xcdTIwMkEtXFx1MjAyRVxcdTIwMzAtXFx1MjA1RVxcdTIwNjAtXFx1MkZGRlxcdTMwMDEtXFx1RDdGRlxcdUUwMDAtXFx1RkVGRVxcdUZGMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkqKT9AKT8oPzooPyExMCg/OlxcLlswLTldezEsM30pezN9KSg/ITEyNyg/OlxcLlswLTldezEsM30pezN9KSg/ITE2OVxcLjI1NCg/OlxcLlswLTldezEsM30pezJ9KSg/ITE5MlxcLjE2OCg/OlxcLlswLTldezEsM30pezJ9KSg/ITE3MlxcLig/OjFbNi05XXwyWzAtOV18M1swMV0pKD86XFwuWzAtOV17MSwzfSl7Mn0pKD86WzEtOV1bMC05XT98MVswLTldWzAtOV18MlswMV1bMC05XXwyMlswLTNdKSg/OlxcLig/OjE/WzAtOV17MSwyfXwyWzAtNF1bMC05XXwyNVswLTVdKSl7Mn0oPzpcXC4oPzpbMS05XVswLTldP3wxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTRdKSl8KD86KD86KD86WzAtOWEtelxceEExLVxcdUQ3RkZcXHVFMDAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdKD8hW1xcdURDMDAtXFx1REZGRl0pfCg/OlteXFx1RDgwMC1cXHVEQkZGXXxeKVtcXHVEQzAwLVxcdURGRkZdKSstKSooPzpbMC05YS16XFx4QTEtXFx1RDdGRlxcdUUwMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0pKykoPzpcXC4oPzooPzpbMC05YS16XFx4QTEtXFx1RDdGRlxcdUUwMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0pKy0pKig/OlswLTlhLXpcXHhBMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkrKSooPzpcXC4oPzooPzpbYS16XFx4QTEtXFx1RDdGRlxcdUUwMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0pezIsfSkpKSg/OjpbMC05XXsyLDV9KT8oPzpcXC8oPzpbXFwwLVxceDA4XFx4MEUtXFx4MUYhLVxceDlGXFx4QTEtXFx1MTY3RlxcdTE2ODEtXFx1MUZGRlxcdTIwMEItXFx1MjAyN1xcdTIwMkEtXFx1MjAyRVxcdTIwMzAtXFx1MjA1RVxcdTIwNjAtXFx1MkZGRlxcdTMwMDEtXFx1RDdGRlxcdUUwMDAtXFx1RkVGRVxcdUZGMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkqKT8kL2k7XG52YXIgVVVJRCA9IC9eKD86dXJuOnV1aWQ6KT9bMC05YS1mXXs4fS0oPzpbMC05YS1mXXs0fS0pezN9WzAtOWEtZl17MTJ9JC9pO1xudmFyIEpTT05fUE9JTlRFUiA9IC9eKD86XFwvKD86W15+L118fjB8fjEpKikqJC87XG52YXIgSlNPTl9QT0lOVEVSX1VSSV9GUkFHTUVOVCA9IC9eIyg/OlxcLyg/OlthLXowLTlfXFwtLiEkJicoKSorLDs6PUBdfCVbMC05YS1mXXsyfXx+MHx+MSkqKSokL2k7XG52YXIgUkVMQVRJVkVfSlNPTl9QT0lOVEVSID0gL14oPzowfFsxLTldWzAtOV0qKSg/OiN8KD86XFwvKD86W15+L118fjB8fjEpKikqKSQvO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZm9ybWF0cztcblxuZnVuY3Rpb24gZm9ybWF0cyhtb2RlKSB7XG4gIG1vZGUgPSBtb2RlID09ICdmdWxsJyA/ICdmdWxsJyA6ICdmYXN0JztcbiAgcmV0dXJuIHV0aWwuY29weShmb3JtYXRzW21vZGVdKTtcbn1cblxuXG5mb3JtYXRzLmZhc3QgPSB7XG4gIC8vIGRhdGU6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgZGF0ZTogL15cXGRcXGRcXGRcXGQtWzAtMV1cXGQtWzAtM11cXGQkLyxcbiAgLy8gZGF0ZS10aW1lOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5I3NlY3Rpb24tNS42XG4gIHRpbWU6IC9eKD86WzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGR8MjM6NTk6NjApKD86XFwuXFxkKyk/KD86enxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPyk/JC9pLFxuICAnZGF0ZS10aW1lJzogL15cXGRcXGRcXGRcXGQtWzAtMV1cXGQtWzAtM11cXGRbdFxcc10oPzpbMC0yXVxcZDpbMC01XVxcZDpbMC01XVxcZHwyMzo1OTo2MCkoPzpcXC5cXGQrKT8oPzp6fFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/KSQvaSxcbiAgLy8gdXJpOiBodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL2lzLW15LWpzb24tdmFsaWQvYmxvYi9tYXN0ZXIvZm9ybWF0cy5qc1xuICB1cmk6IC9eKD86W2Etel1bYS16MC05K1xcLS5dKjopKD86XFwvP1xcLyk/W15cXHNdKiQvaSxcbiAgJ3VyaS1yZWZlcmVuY2UnOiAvXig/Oig/OlthLXpdW2EtejAtOStcXC0uXSo6KT9cXC8/XFwvKT8oPzpbXlxcXFxcXHMjXVteXFxzI10qKT8oPzojW15cXFxcXFxzXSopPyQvaSxcbiAgJ3VyaS10ZW1wbGF0ZSc6IFVSSVRFTVBMQVRFLFxuICB1cmw6IFVSTCxcbiAgLy8gZW1haWwgKHNvdXJjZXMgZnJvbSBqc2VuIHZhbGlkYXRvcik6XG4gIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjAxMzIzL3VzaW5nLWEtcmVndWxhci1leHByZXNzaW9uLXRvLXZhbGlkYXRlLWFuLWVtYWlsLWFkZHJlc3MjYW5zd2VyLTg4MjkzNjNcbiAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvZm9ybXMuaHRtbCN2YWxpZC1lLW1haWwtYWRkcmVzcyAoc2VhcmNoIGZvciAnd2lsbGZ1bCB2aW9sYXRpb24nKVxuICBlbWFpbDogL15bYS16MC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT8oPzpcXC5bYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT8pKiQvaSxcbiAgaG9zdG5hbWU6IEhPU1ROQU1FLFxuICAvLyBvcHRpbWl6ZWQgaHR0cHM6Ly93d3cuc2FmYXJpYm9va3NvbmxpbmUuY29tL2xpYnJhcnkvdmlldy9yZWd1bGFyLWV4cHJlc3Npb25zLWNvb2tib29rLzk3ODA1OTY4MDI4MzcvY2gwN3MxNi5odG1sXG4gIGlwdjQ6IC9eKD86KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pJC8sXG4gIC8vIG9wdGltaXplZCBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUzNDk3L3JlZ3VsYXItZXhwcmVzc2lvbi10aGF0LW1hdGNoZXMtdmFsaWQtaXB2Ni1hZGRyZXNzZXNcbiAgaXB2NjogL15cXHMqKD86KD86KD86WzAtOWEtZl17MSw0fTopezd9KD86WzAtOWEtZl17MSw0fXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezZ9KD86OlswLTlhLWZdezEsNH18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCg/Oig/OlswLTlhLWZdezEsNH06KXs1fSg/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDJ9KXw6KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCg/Oig/OlswLTlhLWZdezEsNH06KXs0fSg/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDN9KXwoPzooPzo6WzAtOWEtZl17MSw0fSk/Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezN9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNH0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDJ9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezJ9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNX0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDN9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezF9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNn0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDR9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86Oig/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDd9KXwoPzooPzo6WzAtOWEtZl17MSw0fSl7MCw1fTooPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpKSg/OiUuKyk/XFxzKiQvaSxcbiAgcmVnZXg6IHJlZ2V4LFxuICAvLyB1dWlkOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0MTIyXG4gIHV1aWQ6IFVVSUQsXG4gIC8vIEpTT04tcG9pbnRlcjogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5MDFcbiAgLy8gdXJpIGZyYWdtZW50OiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNhcHBlbmRpeC1BXG4gICdqc29uLXBvaW50ZXInOiBKU09OX1BPSU5URVIsXG4gICdqc29uLXBvaW50ZXItdXJpLWZyYWdtZW50JzogSlNPTl9QT0lOVEVSX1VSSV9GUkFHTUVOVCxcbiAgLy8gcmVsYXRpdmUgSlNPTi1wb2ludGVyOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1sdWZmLXJlbGF0aXZlLWpzb24tcG9pbnRlci0wMFxuICAncmVsYXRpdmUtanNvbi1wb2ludGVyJzogUkVMQVRJVkVfSlNPTl9QT0lOVEVSXG59O1xuXG5cbmZvcm1hdHMuZnVsbCA9IHtcbiAgZGF0ZTogZGF0ZSxcbiAgdGltZTogdGltZSxcbiAgJ2RhdGUtdGltZSc6IGRhdGVfdGltZSxcbiAgdXJpOiB1cmksXG4gICd1cmktcmVmZXJlbmNlJzogVVJJUkVGLFxuICAndXJpLXRlbXBsYXRlJzogVVJJVEVNUExBVEUsXG4gIHVybDogVVJMLFxuICBlbWFpbDogL15bYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XFwuW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqQCg/OlthLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT9cXC4pK1thLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT8kL2ksXG4gIGhvc3RuYW1lOiBIT1NUTkFNRSxcbiAgaXB2NDogL14oPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykkLyxcbiAgaXB2NjogL15cXHMqKD86KD86KD86WzAtOWEtZl17MSw0fTopezd9KD86WzAtOWEtZl17MSw0fXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezZ9KD86OlswLTlhLWZdezEsNH18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCg/Oig/OlswLTlhLWZdezEsNH06KXs1fSg/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDJ9KXw6KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCg/Oig/OlswLTlhLWZdezEsNH06KXs0fSg/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDN9KXwoPzooPzo6WzAtOWEtZl17MSw0fSk/Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezN9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNH0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDJ9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezJ9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNX0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDN9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezF9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNn0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDR9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86Oig/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDd9KXwoPzooPzo6WzAtOWEtZl17MSw0fSl7MCw1fTooPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpKSg/OiUuKyk/XFxzKiQvaSxcbiAgcmVnZXg6IHJlZ2V4LFxuICB1dWlkOiBVVUlELFxuICAnanNvbi1wb2ludGVyJzogSlNPTl9QT0lOVEVSLFxuICAnanNvbi1wb2ludGVyLXVyaS1mcmFnbWVudCc6IEpTT05fUE9JTlRFUl9VUklfRlJBR01FTlQsXG4gICdyZWxhdGl2ZS1qc29uLXBvaW50ZXInOiBSRUxBVElWRV9KU09OX1BPSU5URVJcbn07XG5cblxuZnVuY3Rpb24gaXNMZWFwWWVhcih5ZWFyKSB7XG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5I2FwcGVuZGl4LUNcbiAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApO1xufVxuXG5cbmZ1bmN0aW9uIGRhdGUoc3RyKSB7XG4gIC8vIGZ1bGwtZGF0ZSBmcm9tIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgdmFyIG1hdGNoZXMgPSBzdHIubWF0Y2goREFURSk7XG4gIGlmICghbWF0Y2hlcykgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciB5ZWFyID0gK21hdGNoZXNbMV07XG4gIHZhciBtb250aCA9ICttYXRjaGVzWzJdO1xuICB2YXIgZGF5ID0gK21hdGNoZXNbM107XG5cbiAgcmV0dXJuIG1vbnRoID49IDEgJiYgbW9udGggPD0gMTIgJiYgZGF5ID49IDEgJiZcbiAgICAgICAgICBkYXkgPD0gKG1vbnRoID09IDIgJiYgaXNMZWFwWWVhcih5ZWFyKSA/IDI5IDogREFZU1ttb250aF0pO1xufVxuXG5cbmZ1bmN0aW9uIHRpbWUoc3RyLCBmdWxsKSB7XG4gIHZhciBtYXRjaGVzID0gc3RyLm1hdGNoKFRJTUUpO1xuICBpZiAoIW1hdGNoZXMpIHJldHVybiBmYWxzZTtcblxuICB2YXIgaG91ciA9IG1hdGNoZXNbMV07XG4gIHZhciBtaW51dGUgPSBtYXRjaGVzWzJdO1xuICB2YXIgc2Vjb25kID0gbWF0Y2hlc1szXTtcbiAgdmFyIHRpbWVab25lID0gbWF0Y2hlc1s1XTtcbiAgcmV0dXJuICgoaG91ciA8PSAyMyAmJiBtaW51dGUgPD0gNTkgJiYgc2Vjb25kIDw9IDU5KSB8fFxuICAgICAgICAgIChob3VyID09IDIzICYmIG1pbnV0ZSA9PSA1OSAmJiBzZWNvbmQgPT0gNjApKSAmJlxuICAgICAgICAgKCFmdWxsIHx8IHRpbWVab25lKTtcbn1cblxuXG52YXIgREFURV9USU1FX1NFUEFSQVRPUiA9IC90fFxccy9pO1xuZnVuY3Rpb24gZGF0ZV90aW1lKHN0cikge1xuICAvLyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5I3NlY3Rpb24tNS42XG4gIHZhciBkYXRlVGltZSA9IHN0ci5zcGxpdChEQVRFX1RJTUVfU0VQQVJBVE9SKTtcbiAgcmV0dXJuIGRhdGVUaW1lLmxlbmd0aCA9PSAyICYmIGRhdGUoZGF0ZVRpbWVbMF0pICYmIHRpbWUoZGF0ZVRpbWVbMV0sIHRydWUpO1xufVxuXG5cbnZhciBOT1RfVVJJX0ZSQUdNRU5UID0gL1xcL3w6LztcbmZ1bmN0aW9uIHVyaShzdHIpIHtcbiAgLy8gaHR0cDovL2ptcndhcmUuY29tL2FydGljbGVzLzIwMDkvdXJpX3JlZ2V4cC9VUklfcmVnZXguaHRtbCArIG9wdGlvbmFsIHByb3RvY29sICsgcmVxdWlyZWQgXCIuXCJcbiAgcmV0dXJuIE5PVF9VUklfRlJBR01FTlQudGVzdChzdHIpICYmIFVSSS50ZXN0KHN0cik7XG59XG5cblxudmFyIFpfQU5DSE9SID0gL1teXFxcXF1cXFxcWi87XG5mdW5jdGlvbiByZWdleChzdHIpIHtcbiAgaWYgKFpfQU5DSE9SLnRlc3Qoc3RyKSkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIG5ldyBSZWdFeHAoc3RyKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3JlZihpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGFzeW5jLCAkcmVmQ29kZTtcbiAgaWYgKCRzY2hlbWEgPT0gJyMnIHx8ICRzY2hlbWEgPT0gJyMvJykge1xuICAgIGlmIChpdC5pc1Jvb3QpIHtcbiAgICAgICRhc3luYyA9IGl0LmFzeW5jO1xuICAgICAgJHJlZkNvZGUgPSAndmFsaWRhdGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICAkYXN5bmMgPSBpdC5yb290LnNjaGVtYS4kYXN5bmMgPT09IHRydWU7XG4gICAgICAkcmVmQ29kZSA9ICdyb290LnJlZlZhbFswXSc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciAkcmVmVmFsID0gaXQucmVzb2x2ZVJlZihpdC5iYXNlSWQsICRzY2hlbWEsIGl0LmlzUm9vdCk7XG4gICAgaWYgKCRyZWZWYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyICRtZXNzYWdlID0gaXQuTWlzc2luZ1JlZkVycm9yLm1lc3NhZ2UoaXQuYmFzZUlkLCAkc2NoZW1hKTtcbiAgICAgIGlmIChpdC5vcHRzLm1pc3NpbmdSZWZzID09ICdmYWlsJykge1xuICAgICAgICBpdC5sb2dnZXIuZXJyb3IoJG1lc3NhZ2UpO1xuICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJyRyZWYnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHJlZjogXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3Rlcygkc2NoZW1hKSkgKyAnXFwnIH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnY2FuXFxcXFxcJ3QgcmVzb2x2ZSByZWZlcmVuY2UgJyArIChpdC51dGlsLmVzY2FwZVF1b3Rlcygkc2NoZW1hKSkgKyAnXFwnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHNjaGVtYSkpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIG91dCArPSAnIGlmIChmYWxzZSkgeyAnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGl0Lm9wdHMubWlzc2luZ1JlZnMgPT0gJ2lnbm9yZScpIHtcbiAgICAgICAgaXQubG9nZ2VyLndhcm4oJG1lc3NhZ2UpO1xuICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBpdC5NaXNzaW5nUmVmRXJyb3IoaXQuYmFzZUlkLCAkc2NoZW1hLCAkbWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgkcmVmVmFsLmlubGluZSkge1xuICAgICAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gICAgICAkaXQubGV2ZWwrKztcbiAgICAgIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgICAgICRpdC5zY2hlbWEgPSAkcmVmVmFsLnNjaGVtYTtcbiAgICAgICRpdC5zY2hlbWFQYXRoID0gJyc7XG4gICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRzY2hlbWE7XG4gICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpLnJlcGxhY2UoL3ZhbGlkYXRlXFwuc2NoZW1hL2csICRyZWZWYWwuY29kZSk7XG4gICAgICBvdXQgKz0gJyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAkYXN5bmMgPSAkcmVmVmFsLiRhc3luYyA9PT0gdHJ1ZSB8fCAoaXQuYXN5bmMgJiYgJHJlZlZhbC4kYXN5bmMgIT09IGZhbHNlKTtcbiAgICAgICRyZWZDb2RlID0gJHJlZlZhbC5jb2RlO1xuICAgIH1cbiAgfVxuICBpZiAoJHJlZkNvZGUpIHtcbiAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgb3V0ID0gJyc7XG4gICAgaWYgKGl0Lm9wdHMucGFzc0NvbnRleHQpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJHJlZkNvZGUpICsgJy5jYWxsKHRoaXMsICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICcgKyAoJHJlZkNvZGUpICsgJyggJztcbiAgICB9XG4gICAgb3V0ICs9ICcgJyArICgkZGF0YSkgKyAnLCAoZGF0YVBhdGggfHwgXFwnXFwnKSc7XG4gICAgaWYgKGl0LmVycm9yUGF0aCAhPSAnXCJcIicpIHtcbiAgICAgIG91dCArPSAnICsgJyArIChpdC5lcnJvclBhdGgpO1xuICAgIH1cbiAgICB2YXIgJHBhcmVudERhdGEgPSAkZGF0YUx2bCA/ICdkYXRhJyArICgoJGRhdGFMdmwgLSAxKSB8fCAnJykgOiAncGFyZW50RGF0YScsXG4gICAgICAkcGFyZW50RGF0YVByb3BlcnR5ID0gJGRhdGFMdmwgPyBpdC5kYXRhUGF0aEFyclskZGF0YUx2bF0gOiAncGFyZW50RGF0YVByb3BlcnR5JztcbiAgICBvdXQgKz0gJyAsICcgKyAoJHBhcmVudERhdGEpICsgJyAsICcgKyAoJHBhcmVudERhdGFQcm9wZXJ0eSkgKyAnLCByb290RGF0YSkgICc7XG4gICAgdmFyIF9fY2FsbFZhbGlkYXRlID0gb3V0O1xuICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgaWYgKCRhc3luYykge1xuICAgICAgaWYgKCFpdC5hc3luYykgdGhyb3cgbmV3IEVycm9yKCdhc3luYyBzY2hlbWEgcmVmZXJlbmNlZCBieSBzeW5jIHNjaGVtYScpO1xuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJHZhbGlkKSArICc7ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB0cnkgeyBhd2FpdCAnICsgKF9fY2FsbFZhbGlkYXRlKSArICc7ICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZTsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gY2F0Y2ggKGUpIHsgaWYgKCEoZSBpbnN0YW5jZW9mIFZhbGlkYXRpb25FcnJvcikpIHRocm93IGU7IGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gZS5lcnJvcnM7IGVsc2UgdkVycm9ycyA9IHZFcnJvcnMuY29uY2F0KGUuZXJyb3JzKTsgZXJyb3JzID0gdkVycm9ycy5sZW5ndGg7ICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkdmFsaWQpICsgJykgeyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyBpZiAoIScgKyAoX19jYWxsVmFsaWRhdGUpICsgJykgeyBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9ICcgKyAoJHJlZkNvZGUpICsgJy5lcnJvcnM7IGVsc2UgdkVycm9ycyA9IHZFcnJvcnMuY29uY2F0KCcgKyAoJHJlZkNvZGUpICsgJy5lcnJvcnMpOyBlcnJvcnMgPSB2RXJyb3JzLmxlbmd0aDsgfSAnO1xuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2FsbE9mKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIHZhciAkY3VycmVudEJhc2VJZCA9ICRpdC5iYXNlSWQsXG4gICAgJGFsbFNjaGVtYXNFbXB0eSA9IHRydWU7XG4gIHZhciBhcnIxID0gJHNjaGVtYTtcbiAgaWYgKGFycjEpIHtcbiAgICB2YXIgJHNjaCwgJGkgPSAtMSxcbiAgICAgIGwxID0gYXJyMS5sZW5ndGggLSAxO1xuICAgIHdoaWxlICgkaSA8IGwxKSB7XG4gICAgICAkc2NoID0gYXJyMVskaSArPSAxXTtcbiAgICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICAgJGFsbFNjaGVtYXNFbXB0eSA9IGZhbHNlO1xuICAgICAgICAkaXQuc2NoZW1hID0gJHNjaDtcbiAgICAgICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aCArICdbJyArICRpICsgJ10nO1xuICAgICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoICsgJy8nICsgJGk7XG4gICAgICAgIG91dCArPSAnICAnICsgKGl0LnZhbGlkYXRlKCRpdCkpICsgJyAnO1xuICAgICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgaWYgKCRhbGxTY2hlbWFzRW1wdHkpIHtcbiAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICcgKyAoJGNsb3NpbmdCcmFjZXMuc2xpY2UoMCwgLTEpKSArICcgJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfYW55T2YoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICB2YXIgJGNsb3NpbmdCcmFjZXMgPSAnJztcbiAgJGl0LmxldmVsKys7XG4gIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgdmFyICRub0VtcHR5U2NoZW1hID0gJHNjaGVtYS5ldmVyeShmdW5jdGlvbigkc2NoKSB7XG4gICAgcmV0dXJuIChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2gpLmxlbmd0aCA+IDApIHx8ICRzY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoLCBpdC5SVUxFUy5hbGwpKTtcbiAgfSk7XG4gIGlmICgkbm9FbXB0eVNjaGVtYSkge1xuICAgIHZhciAkY3VycmVudEJhc2VJZCA9ICRpdC5iYXNlSWQ7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczsgdmFyICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgICc7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgdmFyIGFycjEgPSAkc2NoZW1hO1xuICAgIGlmIChhcnIxKSB7XG4gICAgICB2YXIgJHNjaCwgJGkgPSAtMSxcbiAgICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoJGkgPCBsMSkge1xuICAgICAgICAkc2NoID0gYXJyMVskaSArPSAxXTtcbiAgICAgICAgJGl0LnNjaGVtYSA9ICRzY2g7XG4gICAgICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGggKyAnWycgKyAkaSArICddJztcbiAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCArICcvJyArICRpO1xuICAgICAgICBvdXQgKz0gJyAgJyArIChpdC52YWxpZGF0ZSgkaXQpKSArICcgJztcbiAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkdmFsaWQpICsgJyB8fCAnICsgKCRuZXh0VmFsaWQpICsgJzsgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICc7XG4gICAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgIH1cbiAgICB9XG4gICAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gJHdhc0NvbXBvc2l0ZTtcbiAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzKSArICcgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdhbnlPZicpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHt9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgbWF0Y2ggc29tZSBzY2hlbWEgaW4gYW55T2ZcXCcgJztcbiAgICAgIH1cbiAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcge30gJztcbiAgICB9XG4gICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcih2RXJyb3JzKTsgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IHZFcnJvcnM7IHJldHVybiBmYWxzZTsgJztcbiAgICAgIH1cbiAgICB9XG4gICAgb3V0ICs9ICcgfSBlbHNlIHsgIGVycm9ycyA9ICcgKyAoJGVycnMpICsgJzsgaWYgKHZFcnJvcnMgIT09IG51bGwpIHsgaWYgKCcgKyAoJGVycnMpICsgJykgdkVycm9ycy5sZW5ndGggPSAnICsgKCRlcnJzKSArICc7IGVsc2UgdkVycm9ycyA9IG51bGw7IH0gJztcbiAgICBpZiAoaXQub3B0cy5hbGxFcnJvcnMpIHtcbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2NvbW1lbnQoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGNvbW1lbnQgPSBpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRzY2hlbWEpO1xuICBpZiAoaXQub3B0cy4kY29tbWVudCA9PT0gdHJ1ZSkge1xuICAgIG91dCArPSAnIGNvbnNvbGUubG9nKCcgKyAoJGNvbW1lbnQpICsgJyk7JztcbiAgfSBlbHNlIGlmICh0eXBlb2YgaXQub3B0cy4kY29tbWVudCA9PSAnZnVuY3Rpb24nKSB7XG4gICAgb3V0ICs9ICcgc2VsZi5fb3B0cy4kY29tbWVudCgnICsgKCRjb21tZW50KSArICcsICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJywgdmFsaWRhdGUucm9vdC5zY2hlbWEpOyc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfY29uc3QoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgaWYgKCEkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnOyc7XG4gIH1cbiAgb3V0ICs9ICd2YXIgJyArICgkdmFsaWQpICsgJyA9IGVxdWFsKCcgKyAoJGRhdGEpICsgJywgc2NoZW1hJyArICgkbHZsKSArICcpOyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICAnO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2NvbnN0JykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBhbGxvd2VkVmFsdWU6IHNjaGVtYScgKyAoJGx2bCkgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGJlIGVxdWFsIHRvIGNvbnN0YW50XFwnICc7XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICcgfSc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfY29udGFpbnMoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICB2YXIgJGNsb3NpbmdCcmFjZXMgPSAnJztcbiAgJGl0LmxldmVsKys7XG4gIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgdmFyICRpZHggPSAnaScgKyAkbHZsLFxuICAgICRkYXRhTnh0ID0gJGl0LmRhdGFMZXZlbCA9IGl0LmRhdGFMZXZlbCArIDEsXG4gICAgJG5leHREYXRhID0gJ2RhdGEnICsgJGRhdGFOeHQsXG4gICAgJGN1cnJlbnRCYXNlSWQgPSBpdC5iYXNlSWQsXG4gICAgJG5vbkVtcHR5U2NoZW1hID0gKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2hlbWEgPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaGVtYSkubGVuZ3RoID4gMCkgfHwgJHNjaGVtYSA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2hlbWEsIGl0LlJVTEVTLmFsbCkpO1xuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7dmFyICcgKyAoJHZhbGlkKSArICc7JztcbiAgaWYgKCRub25FbXB0eVNjaGVtYSkge1xuICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgICRpdC5zY2hlbWEgPSAkc2NoZW1hO1xuICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGg7XG4gICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aDtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dFZhbGlkKSArICcgPSBmYWxzZTsgZm9yICh2YXIgJyArICgkaWR4KSArICcgPSAwOyAnICsgKCRpZHgpICsgJyA8ICcgKyAoJGRhdGEpICsgJy5sZW5ndGg7ICcgKyAoJGlkeCkgKyAnKyspIHsgJztcbiAgICAkaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRpZHgsIGl0Lm9wdHMuanNvblBvaW50ZXJzLCB0cnVlKTtcbiAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAkaWR4ICsgJ10nO1xuICAgICRpdC5kYXRhUGF0aEFyclskZGF0YU54dF0gPSAkaWR4O1xuICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSBicmVhazsgfSAgJztcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIG91dCArPSAnICcgKyAoJGNsb3NpbmdCcmFjZXMpICsgJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSB7JztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyBpZiAoJyArICgkZGF0YSkgKyAnLmxlbmd0aCA9PSAwKSB7JztcbiAgfVxuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2NvbnRhaW5zJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczoge30gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGNvbnRhaW4gYSB2YWxpZCBpdGVtXFwnICc7XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICcgfSBlbHNlIHsgJztcbiAgaWYgKCRub25FbXB0eVNjaGVtYSkge1xuICAgIG91dCArPSAnICBlcnJvcnMgPSAnICsgKCRlcnJzKSArICc7IGlmICh2RXJyb3JzICE9PSBudWxsKSB7IGlmICgnICsgKCRlcnJzKSArICcpIHZFcnJvcnMubGVuZ3RoID0gJyArICgkZXJycykgKyAnOyBlbHNlIHZFcnJvcnMgPSBudWxsOyB9ICc7XG4gIH1cbiAgaWYgKGl0Lm9wdHMuYWxsRXJyb3JzKSB7XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2RlcGVuZGVuY2llcyhpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICB2YXIgJGNsb3NpbmdCcmFjZXMgPSAnJztcbiAgJGl0LmxldmVsKys7XG4gIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgdmFyICRzY2hlbWFEZXBzID0ge30sXG4gICAgJHByb3BlcnR5RGVwcyA9IHt9LFxuICAgICRvd25Qcm9wZXJ0aWVzID0gaXQub3B0cy5vd25Qcm9wZXJ0aWVzO1xuICBmb3IgKCRwcm9wZXJ0eSBpbiAkc2NoZW1hKSB7XG4gICAgaWYgKCRwcm9wZXJ0eSA9PSAnX19wcm90b19fJykgY29udGludWU7XG4gICAgdmFyICRzY2ggPSAkc2NoZW1hWyRwcm9wZXJ0eV07XG4gICAgdmFyICRkZXBzID0gQXJyYXkuaXNBcnJheSgkc2NoKSA/ICRwcm9wZXJ0eURlcHMgOiAkc2NoZW1hRGVwcztcbiAgICAkZGVwc1skcHJvcGVydHldID0gJHNjaDtcbiAgfVxuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7JztcbiAgdmFyICRjdXJyZW50RXJyb3JQYXRoID0gaXQuZXJyb3JQYXRoO1xuICBvdXQgKz0gJ3ZhciBtaXNzaW5nJyArICgkbHZsKSArICc7JztcbiAgZm9yICh2YXIgJHByb3BlcnR5IGluICRwcm9wZXJ0eURlcHMpIHtcbiAgICAkZGVwcyA9ICRwcm9wZXJ0eURlcHNbJHByb3BlcnR5XTtcbiAgICBpZiAoJGRlcHMubGVuZ3RoKSB7XG4gICAgICBvdXQgKz0gJyBpZiAoICcgKyAoJGRhdGEpICsgKGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5KSkgKyAnICE9PSB1bmRlZmluZWQgJztcbiAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICBvdXQgKz0gJyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eSkpICsgJ1xcJykgJztcbiAgICAgIH1cbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnICYmICggJztcbiAgICAgICAgdmFyIGFycjEgPSAkZGVwcztcbiAgICAgICAgaWYgKGFycjEpIHtcbiAgICAgICAgICB2YXIgJHByb3BlcnR5S2V5LCAkaSA9IC0xLFxuICAgICAgICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgICAgICAgd2hpbGUgKCRpIDwgbDEpIHtcbiAgICAgICAgICAgICRwcm9wZXJ0eUtleSA9IGFycjFbJGkgKz0gMV07XG4gICAgICAgICAgICBpZiAoJGkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciAkcHJvcCA9IGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJHVzZURhdGEgPSAkZGF0YSArICRwcm9wO1xuICAgICAgICAgICAgb3V0ICs9ICcgKCAoICcgKyAoJHVzZURhdGEpICsgJyA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgISBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSkpICsgJ1xcJykgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnKSAmJiAobWlzc2luZycgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKGl0Lm9wdHMuanNvblBvaW50ZXJzID8gJHByb3BlcnR5S2V5IDogJHByb3ApKSArICcpICkgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcpKSB7ICAnO1xuICAgICAgICB2YXIgJHByb3BlcnR5UGF0aCA9ICdtaXNzaW5nJyArICRsdmwsXG4gICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9ICdcXCcgKyAnICsgJHByb3BlcnR5UGF0aCArICcgKyBcXCcnO1xuICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQub3B0cy5qc29uUG9pbnRlcnMgPyBpdC51dGlsLmdldFBhdGhFeHByKCRjdXJyZW50RXJyb3JQYXRoLCAkcHJvcGVydHlQYXRoLCB0cnVlKSA6ICRjdXJyZW50RXJyb3JQYXRoICsgJyArICcgKyAkcHJvcGVydHlQYXRoO1xuICAgICAgICB9XG4gICAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnZGVwZW5kZW5jaWVzJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBwcm9wZXJ0eTogXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkcHJvcGVydHkpKSArICdcXCcsIG1pc3NpbmdQcm9wZXJ0eTogXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXCcsIGRlcHNDb3VudDogJyArICgkZGVwcy5sZW5ndGgpICsgJywgZGVwczogXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkZGVwcy5sZW5ndGggPT0gMSA/ICRkZXBzWzBdIDogJGRlcHMuam9pbihcIiwgXCIpKSkgKyAnXFwnIH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGhhdmUgJztcbiAgICAgICAgICAgIGlmICgkZGVwcy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJ3Byb3BlcnR5ICcgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJGRlcHNbMF0pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAncHJvcGVydGllcyAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRkZXBzLmpvaW4oXCIsIFwiKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcgd2hlbiBwcm9wZXJ0eSAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eSkpICsgJyBpcyBwcmVzZW50XFwnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX2VyciA9IG91dDtcbiAgICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnICkgeyAnO1xuICAgICAgICB2YXIgYXJyMiA9ICRkZXBzO1xuICAgICAgICBpZiAoYXJyMikge1xuICAgICAgICAgIHZhciAkcHJvcGVydHlLZXksIGkyID0gLTEsXG4gICAgICAgICAgICBsMiA9IGFycjIubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoaTIgPCBsMikge1xuICAgICAgICAgICAgJHByb3BlcnR5S2V5ID0gYXJyMltpMiArPSAxXTtcbiAgICAgICAgICAgIHZhciAkcHJvcCA9IGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9IGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSksXG4gICAgICAgICAgICAgICR1c2VEYXRhID0gJGRhdGEgKyAkcHJvcDtcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoKCRjdXJyZW50RXJyb3JQYXRoLCAkcHJvcGVydHlLZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnIGlmICggJyArICgkdXNlRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcpIHsgIHZhciBlcnIgPSAgICc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2RlcGVuZGVuY2llcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgcHJvcGVydHk6IFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5KSkgKyAnXFwnLCBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnLCBkZXBzQ291bnQ6ICcgKyAoJGRlcHMubGVuZ3RoKSArICcsIGRlcHM6IFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJGRlcHMubGVuZ3RoID09IDEgPyAkZGVwc1swXSA6ICRkZXBzLmpvaW4oXCIsIFwiKSkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGhhdmUgJztcbiAgICAgICAgICAgICAgICBpZiAoJGRlcHMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAncHJvcGVydHkgJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkZGVwc1swXSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJ3Byb3BlcnRpZXMgJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkZGVwcy5qb2luKFwiLCBcIikpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgd2hlbiBwcm9wZXJ0eSAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eSkpICsgJyBpcyBwcmVzZW50XFwnICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7IH0gJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gICAnO1xuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaXQuZXJyb3JQYXRoID0gJGN1cnJlbnRFcnJvclBhdGg7XG4gIHZhciAkY3VycmVudEJhc2VJZCA9ICRpdC5iYXNlSWQ7XG4gIGZvciAodmFyICRwcm9wZXJ0eSBpbiAkc2NoZW1hRGVwcykge1xuICAgIHZhciAkc2NoID0gJHNjaGVtYURlcHNbJHByb3BlcnR5XTtcbiAgICBpZiAoKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2ggPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaCkubGVuZ3RoID4gMCkgfHwgJHNjaCA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2gsIGl0LlJVTEVTLmFsbCkpKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IHRydWU7IGlmICggJyArICgkZGF0YSkgKyAoaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHkpKSArICcgIT09IHVuZGVmaW5lZCAnO1xuICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgIG91dCArPSAnICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5KSkgKyAnXFwnKSAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcpIHsgJztcbiAgICAgICRpdC5zY2hlbWEgPSAkc2NoO1xuICAgICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5KTtcbiAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGggKyAnLycgKyBpdC51dGlsLmVzY2FwZUZyYWdtZW50KCRwcm9wZXJ0eSk7XG4gICAgICBvdXQgKz0gJyAgJyArIChpdC52YWxpZGF0ZSgkaXQpKSArICcgJztcbiAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgIG91dCArPSAnIH0gICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnICAgJyArICgkY2xvc2luZ0JyYWNlcykgKyAnIGlmICgnICsgKCRlcnJzKSArICcgPT0gZXJyb3JzKSB7JztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9lbnVtKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkaSA9ICdpJyArICRsdmwsXG4gICAgJHZTY2hlbWEgPSAnc2NoZW1hJyArICRsdmw7XG4gIGlmICghJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciAnICsgKCR2U2NoZW1hKSArICcgPSB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICc7JztcbiAgfVxuICBvdXQgKz0gJ3ZhciAnICsgKCR2YWxpZCkgKyAnOyc7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgaWYgKHNjaGVtYScgKyAoJGx2bCkgKyAnID09PSB1bmRlZmluZWQpICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyBlbHNlIGlmICghQXJyYXkuaXNBcnJheShzY2hlbWEnICsgKCRsdmwpICsgJykpICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgZWxzZSB7JztcbiAgfVxuICBvdXQgKz0gJycgKyAoJHZhbGlkKSArICcgPSBmYWxzZTtmb3IgKHZhciAnICsgKCRpKSArICc9MDsgJyArICgkaSkgKyAnPCcgKyAoJHZTY2hlbWEpICsgJy5sZW5ndGg7ICcgKyAoJGkpICsgJysrKSBpZiAoZXF1YWwoJyArICgkZGF0YSkgKyAnLCAnICsgKCR2U2NoZW1hKSArICdbJyArICgkaSkgKyAnXSkpIHsgJyArICgkdmFsaWQpICsgJyA9IHRydWU7IGJyZWFrOyB9JztcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyAgfSAgJztcbiAgfVxuICBvdXQgKz0gJyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICAnO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2VudW0nKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGFsbG93ZWRWYWx1ZXM6IHNjaGVtYScgKyAoJGx2bCkgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGJlIGVxdWFsIHRvIG9uZSBvZiB0aGUgYWxsb3dlZCB2YWx1ZXNcXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJyB9JztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9mb3JtYXQoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgaWYgKGl0Lm9wdHMuZm9ybWF0ID09PSBmYWxzZSkge1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICB2YXIgJHVua25vd25Gb3JtYXRzID0gaXQub3B0cy51bmtub3duRm9ybWF0cyxcbiAgICAkYWxsb3dVbmtub3duID0gQXJyYXkuaXNBcnJheSgkdW5rbm93bkZvcm1hdHMpO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIHZhciAkZm9ybWF0ID0gJ2Zvcm1hdCcgKyAkbHZsLFxuICAgICAgJGlzT2JqZWN0ID0gJ2lzT2JqZWN0JyArICRsdmwsXG4gICAgICAkZm9ybWF0VHlwZSA9ICdmb3JtYXRUeXBlJyArICRsdmw7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJGZvcm1hdCkgKyAnID0gZm9ybWF0c1snICsgKCRzY2hlbWFWYWx1ZSkgKyAnXTsgdmFyICcgKyAoJGlzT2JqZWN0KSArICcgPSB0eXBlb2YgJyArICgkZm9ybWF0KSArICcgPT0gXFwnb2JqZWN0XFwnICYmICEoJyArICgkZm9ybWF0KSArICcgaW5zdGFuY2VvZiBSZWdFeHApICYmICcgKyAoJGZvcm1hdCkgKyAnLnZhbGlkYXRlOyB2YXIgJyArICgkZm9ybWF0VHlwZSkgKyAnID0gJyArICgkaXNPYmplY3QpICsgJyAmJiAnICsgKCRmb3JtYXQpICsgJy50eXBlIHx8IFxcJ3N0cmluZ1xcJzsgaWYgKCcgKyAoJGlzT2JqZWN0KSArICcpIHsgJztcbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHZhciBhc3luYycgKyAoJGx2bCkgKyAnID0gJyArICgkZm9ybWF0KSArICcuYXN5bmM7ICc7XG4gICAgfVxuICAgIG91dCArPSAnICcgKyAoJGZvcm1hdCkgKyAnID0gJyArICgkZm9ybWF0KSArICcudmFsaWRhdGU7IH0gaWYgKCAgJztcbiAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdzdHJpbmdcXCcpIHx8ICc7XG4gICAgfVxuICAgIG91dCArPSAnICgnO1xuICAgIGlmICgkdW5rbm93bkZvcm1hdHMgIT0gJ2lnbm9yZScpIHtcbiAgICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICYmICEnICsgKCRmb3JtYXQpICsgJyAnO1xuICAgICAgaWYgKCRhbGxvd1Vua25vd24pIHtcbiAgICAgICAgb3V0ICs9ICcgJiYgc2VsZi5fb3B0cy51bmtub3duRm9ybWF0cy5pbmRleE9mKCcgKyAoJHNjaGVtYVZhbHVlKSArICcpID09IC0xICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJykgfHwgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgKCcgKyAoJGZvcm1hdCkgKyAnICYmICcgKyAoJGZvcm1hdFR5cGUpICsgJyA9PSBcXCcnICsgKCRydWxlVHlwZSkgKyAnXFwnICYmICEodHlwZW9mICcgKyAoJGZvcm1hdCkgKyAnID09IFxcJ2Z1bmN0aW9uXFwnID8gJztcbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIChhc3luYycgKyAoJGx2bCkgKyAnID8gYXdhaXQgJyArICgkZm9ybWF0KSArICcoJyArICgkZGF0YSkgKyAnKSA6ICcgKyAoJGZvcm1hdCkgKyAnKCcgKyAoJGRhdGEpICsgJykpICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICcgKyAoJGZvcm1hdCkgKyAnKCcgKyAoJGRhdGEpICsgJykgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgOiAnICsgKCRmb3JtYXQpICsgJy50ZXN0KCcgKyAoJGRhdGEpICsgJykpKSkpIHsnO1xuICB9IGVsc2Uge1xuICAgIHZhciAkZm9ybWF0ID0gaXQuZm9ybWF0c1skc2NoZW1hXTtcbiAgICBpZiAoISRmb3JtYXQpIHtcbiAgICAgIGlmICgkdW5rbm93bkZvcm1hdHMgPT0gJ2lnbm9yZScpIHtcbiAgICAgICAgaXQubG9nZ2VyLndhcm4oJ3Vua25vd24gZm9ybWF0IFwiJyArICRzY2hlbWEgKyAnXCIgaWdub3JlZCBpbiBzY2hlbWEgYXQgcGF0aCBcIicgKyBpdC5lcnJTY2hlbWFQYXRoICsgJ1wiJyk7XG4gICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgfSBlbHNlIGlmICgkYWxsb3dVbmtub3duICYmICR1bmtub3duRm9ybWF0cy5pbmRleE9mKCRzY2hlbWEpID49IDApIHtcbiAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gZm9ybWF0IFwiJyArICRzY2hlbWEgKyAnXCIgaXMgdXNlZCBpbiBzY2hlbWEgYXQgcGF0aCBcIicgKyBpdC5lcnJTY2hlbWFQYXRoICsgJ1wiJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciAkaXNPYmplY3QgPSB0eXBlb2YgJGZvcm1hdCA9PSAnb2JqZWN0JyAmJiAhKCRmb3JtYXQgaW5zdGFuY2VvZiBSZWdFeHApICYmICRmb3JtYXQudmFsaWRhdGU7XG4gICAgdmFyICRmb3JtYXRUeXBlID0gJGlzT2JqZWN0ICYmICRmb3JtYXQudHlwZSB8fCAnc3RyaW5nJztcbiAgICBpZiAoJGlzT2JqZWN0KSB7XG4gICAgICB2YXIgJGFzeW5jID0gJGZvcm1hdC5hc3luYyA9PT0gdHJ1ZTtcbiAgICAgICRmb3JtYXQgPSAkZm9ybWF0LnZhbGlkYXRlO1xuICAgIH1cbiAgICBpZiAoJGZvcm1hdFR5cGUgIT0gJHJ1bGVUeXBlKSB7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgaWYgKCRhc3luYykge1xuICAgICAgaWYgKCFpdC5hc3luYykgdGhyb3cgbmV3IEVycm9yKCdhc3luYyBmb3JtYXQgaW4gc3luYyBzY2hlbWEnKTtcbiAgICAgIHZhciAkZm9ybWF0UmVmID0gJ2Zvcm1hdHMnICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgkc2NoZW1hKSArICcudmFsaWRhdGUnO1xuICAgICAgb3V0ICs9ICcgaWYgKCEoYXdhaXQgJyArICgkZm9ybWF0UmVmKSArICcoJyArICgkZGF0YSkgKyAnKSkpIHsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgaWYgKCEgJztcbiAgICAgIHZhciAkZm9ybWF0UmVmID0gJ2Zvcm1hdHMnICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgkc2NoZW1hKTtcbiAgICAgIGlmICgkaXNPYmplY3QpICRmb3JtYXRSZWYgKz0gJy52YWxpZGF0ZSc7XG4gICAgICBpZiAodHlwZW9mICRmb3JtYXQgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvdXQgKz0gJyAnICsgKCRmb3JtYXRSZWYpICsgJygnICsgKCRkYXRhKSArICcpICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyAnICsgKCRmb3JtYXRSZWYpICsgJy50ZXN0KCcgKyAoJGRhdGEpICsgJykgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnKSB7ICc7XG4gICAgfVxuICB9XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnZm9ybWF0JykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBmb3JtYXQ6ICAnO1xuICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYVZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHNjaGVtYSkpO1xuICAgIH1cbiAgICBvdXQgKz0gJyAgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgbWF0Y2ggZm9ybWF0IFwiJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnXFwnICsgJyArICgkc2NoZW1hVmFsdWUpICsgJyArIFxcJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHNjaGVtYSkpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICdcIlxcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHNjaGVtYSkpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJyB9ICc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfaWYoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJHRoZW5TY2ggPSBpdC5zY2hlbWFbJ3RoZW4nXSxcbiAgICAkZWxzZVNjaCA9IGl0LnNjaGVtYVsnZWxzZSddLFxuICAgICR0aGVuUHJlc2VudCA9ICR0aGVuU2NoICE9PSB1bmRlZmluZWQgJiYgKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICR0aGVuU2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCR0aGVuU2NoKS5sZW5ndGggPiAwKSB8fCAkdGhlblNjaCA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCR0aGVuU2NoLCBpdC5SVUxFUy5hbGwpKSxcbiAgICAkZWxzZVByZXNlbnQgPSAkZWxzZVNjaCAhPT0gdW5kZWZpbmVkICYmIChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkZWxzZVNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkZWxzZVNjaCkubGVuZ3RoID4gMCkgfHwgJGVsc2VTY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkZWxzZVNjaCwgaXQuUlVMRVMuYWxsKSksXG4gICAgJGN1cnJlbnRCYXNlSWQgPSAkaXQuYmFzZUlkO1xuICBpZiAoJHRoZW5QcmVzZW50IHx8ICRlbHNlUHJlc2VudCkge1xuICAgIHZhciAkaWZDbGF1c2U7XG4gICAgJGl0LmNyZWF0ZUVycm9ycyA9IGZhbHNlO1xuICAgICRpdC5zY2hlbWEgPSAkc2NoZW1hO1xuICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGg7XG4gICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aDtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZXJycykgKyAnID0gZXJyb3JzOyB2YXIgJyArICgkdmFsaWQpICsgJyA9IHRydWU7ICAnO1xuICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgIG91dCArPSAnICAnICsgKGl0LnZhbGlkYXRlKCRpdCkpICsgJyAnO1xuICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAkaXQuY3JlYXRlRXJyb3JzID0gdHJ1ZTtcbiAgICBvdXQgKz0gJyAgZXJyb3JzID0gJyArICgkZXJycykgKyAnOyBpZiAodkVycm9ycyAhPT0gbnVsbCkgeyBpZiAoJyArICgkZXJycykgKyAnKSB2RXJyb3JzLmxlbmd0aCA9ICcgKyAoJGVycnMpICsgJzsgZWxzZSB2RXJyb3JzID0gbnVsbDsgfSAgJztcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIGlmICgkdGhlblByZXNlbnQpIHtcbiAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAgJztcbiAgICAgICRpdC5zY2hlbWEgPSBpdC5zY2hlbWFbJ3RoZW4nXTtcbiAgICAgICRpdC5zY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcudGhlbic7XG4gICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL3RoZW4nO1xuICAgICAgb3V0ICs9ICcgICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkbmV4dFZhbGlkKSArICc7ICc7XG4gICAgICBpZiAoJHRoZW5QcmVzZW50ICYmICRlbHNlUHJlc2VudCkge1xuICAgICAgICAkaWZDbGF1c2UgPSAnaWZDbGF1c2UnICsgJGx2bDtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJGlmQ2xhdXNlKSArICcgPSBcXCd0aGVuXFwnOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJGlmQ2xhdXNlID0gJ1xcJ3RoZW5cXCcnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgaWYgKCRlbHNlUHJlc2VudCkge1xuICAgICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgaWYgKCEnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnO1xuICAgIH1cbiAgICBpZiAoJGVsc2VQcmVzZW50KSB7XG4gICAgICAkaXQuc2NoZW1hID0gaXQuc2NoZW1hWydlbHNlJ107XG4gICAgICAkaXQuc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLmVsc2UnO1xuICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9lbHNlJztcbiAgICAgIG91dCArPSAnICAnICsgKGl0LnZhbGlkYXRlKCRpdCkpICsgJyAnO1xuICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgb3V0ICs9ICcgJyArICgkdmFsaWQpICsgJyA9ICcgKyAoJG5leHRWYWxpZCkgKyAnOyAnO1xuICAgICAgaWYgKCR0aGVuUHJlc2VudCAmJiAkZWxzZVByZXNlbnQpIHtcbiAgICAgICAgJGlmQ2xhdXNlID0gJ2lmQ2xhdXNlJyArICRsdmw7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCRpZkNsYXVzZSkgKyAnID0gXFwnZWxzZVxcJzsgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICRpZkNsYXVzZSA9ICdcXCdlbHNlXFwnJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9XG4gICAgb3V0ICs9ICcgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdpZicpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgZmFpbGluZ0tleXdvcmQ6ICcgKyAoJGlmQ2xhdXNlKSArICcgfSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIG1hdGNoIFwiXFwnICsgJyArICgkaWZDbGF1c2UpICsgJyArIFxcJ1wiIHNjaGVtYVxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHZFcnJvcnMpOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gdkVycm9yczsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH1cbiAgICBvdXQgKz0gJyB9ICAgJztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9pdGVtcyhpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJGlkeCA9ICdpJyArICRsdmwsXG4gICAgJGRhdGFOeHQgPSAkaXQuZGF0YUxldmVsID0gaXQuZGF0YUxldmVsICsgMSxcbiAgICAkbmV4dERhdGEgPSAnZGF0YScgKyAkZGF0YU54dCxcbiAgICAkY3VycmVudEJhc2VJZCA9IGl0LmJhc2VJZDtcbiAgb3V0ICs9ICd2YXIgJyArICgkZXJycykgKyAnID0gZXJyb3JzO3ZhciAnICsgKCR2YWxpZCkgKyAnOyc7XG4gIGlmIChBcnJheS5pc0FycmF5KCRzY2hlbWEpKSB7XG4gICAgdmFyICRhZGRpdGlvbmFsSXRlbXMgPSBpdC5zY2hlbWEuYWRkaXRpb25hbEl0ZW1zO1xuICAgIGlmICgkYWRkaXRpb25hbEl0ZW1zID09PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgJyArICgkdmFsaWQpICsgJyA9ICcgKyAoJGRhdGEpICsgJy5sZW5ndGggPD0gJyArICgkc2NoZW1hLmxlbmd0aCkgKyAnOyAnO1xuICAgICAgdmFyICRjdXJyRXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9hZGRpdGlvbmFsSXRlbXMnO1xuICAgICAgb3V0ICs9ICcgIGlmICghJyArICgkdmFsaWQpICsgJykgeyAgICc7XG4gICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdhZGRpdGlvbmFsSXRlbXMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGxpbWl0OiAnICsgKCRzY2hlbWEubGVuZ3RoKSArICcgfSAnO1xuICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBOT1QgaGF2ZSBtb3JlIHRoYW4gJyArICgkc2NoZW1hLmxlbmd0aCkgKyAnIGl0ZW1zXFwnICc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiBmYWxzZSAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgfVxuICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAkZXJyU2NoZW1hUGF0aCA9ICRjdXJyRXJyU2NoZW1hUGF0aDtcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBhcnIxID0gJHNjaGVtYTtcbiAgICBpZiAoYXJyMSkge1xuICAgICAgdmFyICRzY2gsICRpID0gLTEsXG4gICAgICAgIGwxID0gYXJyMS5sZW5ndGggLSAxO1xuICAgICAgd2hpbGUgKCRpIDwgbDEpIHtcbiAgICAgICAgJHNjaCA9IGFycjFbJGkgKz0gMV07XG4gICAgICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICAgICBvdXQgKz0gJyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IHRydWU7IGlmICgnICsgKCRkYXRhKSArICcubGVuZ3RoID4gJyArICgkaSkgKyAnKSB7ICc7XG4gICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGkgKyAnXSc7XG4gICAgICAgICAgJGl0LnNjaGVtYSA9ICRzY2g7XG4gICAgICAgICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aCArICdbJyArICRpICsgJ10nO1xuICAgICAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGggKyAnLycgKyAkaTtcbiAgICAgICAgICAkaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRpLCBpdC5vcHRzLmpzb25Qb2ludGVycywgdHJ1ZSk7XG4gICAgICAgICAgJGl0LmRhdGFQYXRoQXJyWyRkYXRhTnh0XSA9ICRpO1xuICAgICAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAgJztcbiAgICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgJGFkZGl0aW9uYWxJdGVtcyA9PSAnb2JqZWN0JyAmJiAoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJGFkZGl0aW9uYWxJdGVtcyA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkYWRkaXRpb25hbEl0ZW1zKS5sZW5ndGggPiAwKSB8fCAkYWRkaXRpb25hbEl0ZW1zID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJGFkZGl0aW9uYWxJdGVtcywgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICRpdC5zY2hlbWEgPSAkYWRkaXRpb25hbEl0ZW1zO1xuICAgICAgJGl0LnNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgJy5hZGRpdGlvbmFsSXRlbXMnO1xuICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9hZGRpdGlvbmFsSXRlbXMnO1xuICAgICAgb3V0ICs9ICcgJyArICgkbmV4dFZhbGlkKSArICcgPSB0cnVlOyBpZiAoJyArICgkZGF0YSkgKyAnLmxlbmd0aCA+ICcgKyAoJHNjaGVtYS5sZW5ndGgpICsgJykgeyAgZm9yICh2YXIgJyArICgkaWR4KSArICcgPSAnICsgKCRzY2hlbWEubGVuZ3RoKSArICc7ICcgKyAoJGlkeCkgKyAnIDwgJyArICgkZGF0YSkgKyAnLmxlbmd0aDsgJyArICgkaWR4KSArICcrKykgeyAnO1xuICAgICAgJGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAkaWR4LCBpdC5vcHRzLmpzb25Qb2ludGVycywgdHJ1ZSk7XG4gICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAkaWR4ICsgJ10nO1xuICAgICAgJGl0LmRhdGFQYXRoQXJyWyRkYXRhTnh0XSA9ICRpZHg7XG4gICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgICAgb3V0ICs9ICcgJyArIChpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKSkgKyAnICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dERhdGEpICsgJyA9ICcgKyAoJHBhc3NEYXRhKSArICc7ICcgKyAoJGNvZGUpICsgJyAnO1xuICAgICAgfVxuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKCEnICsgKCRuZXh0VmFsaWQpICsgJykgYnJlYWs7ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9IH0gICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaGVtYSA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoZW1hKS5sZW5ndGggPiAwKSB8fCAkc2NoZW1hID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaGVtYSwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAkaXQuc2NoZW1hID0gJHNjaGVtYTtcbiAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoO1xuICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGg7XG4gICAgb3V0ICs9ICcgIGZvciAodmFyICcgKyAoJGlkeCkgKyAnID0gJyArICgwKSArICc7ICcgKyAoJGlkeCkgKyAnIDwgJyArICgkZGF0YSkgKyAnLmxlbmd0aDsgJyArICgkaWR4KSArICcrKykgeyAnO1xuICAgICRpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGhFeHByKGl0LmVycm9yUGF0aCwgJGlkeCwgaXQub3B0cy5qc29uUG9pbnRlcnMsIHRydWUpO1xuICAgIHZhciAkcGFzc0RhdGEgPSAkZGF0YSArICdbJyArICRpZHggKyAnXSc7XG4gICAgJGl0LmRhdGFQYXRoQXJyWyRkYXRhTnh0XSA9ICRpZHg7XG4gICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KTtcbiAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgIG91dCArPSAnICcgKyAoaXQudXRpbC52YXJSZXBsYWNlKCRjb2RlLCAkbmV4dERhdGEsICRwYXNzRGF0YSkpICsgJyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dERhdGEpICsgJyA9ICcgKyAoJHBhc3NEYXRhKSArICc7ICcgKyAoJGNvZGUpICsgJyAnO1xuICAgIH1cbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKCEnICsgKCRuZXh0VmFsaWQpICsgJykgYnJlYWs7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0nO1xuICB9XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgJyArICgkY2xvc2luZ0JyYWNlcykgKyAnIGlmICgnICsgKCRlcnJzKSArICcgPT0gZXJyb3JzKSB7JztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9fbGltaXQoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRlcnJvcktleXdvcmQ7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICB2YXIgJGlzTWF4ID0gJGtleXdvcmQgPT0gJ21heGltdW0nLFxuICAgICRleGNsdXNpdmVLZXl3b3JkID0gJGlzTWF4ID8gJ2V4Y2x1c2l2ZU1heGltdW0nIDogJ2V4Y2x1c2l2ZU1pbmltdW0nLFxuICAgICRzY2hlbWFFeGNsID0gaXQuc2NoZW1hWyRleGNsdXNpdmVLZXl3b3JkXSxcbiAgICAkaXNEYXRhRXhjbCA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYUV4Y2wgJiYgJHNjaGVtYUV4Y2wuJGRhdGEsXG4gICAgJG9wID0gJGlzTWF4ID8gJzwnIDogJz4nLFxuICAgICRub3RPcCA9ICRpc01heCA/ICc+JyA6ICc8JyxcbiAgICAkZXJyb3JLZXl3b3JkID0gdW5kZWZpbmVkO1xuICBpZiAoISgkaXNEYXRhIHx8IHR5cGVvZiAkc2NoZW1hID09ICdudW1iZXInIHx8ICRzY2hlbWEgPT09IHVuZGVmaW5lZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJGtleXdvcmQgKyAnIG11c3QgYmUgbnVtYmVyJyk7XG4gIH1cbiAgaWYgKCEoJGlzRGF0YUV4Y2wgfHwgJHNjaGVtYUV4Y2wgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgJHNjaGVtYUV4Y2wgPT0gJ251bWJlcicgfHwgdHlwZW9mICRzY2hlbWFFeGNsID09ICdib29sZWFuJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJGV4Y2x1c2l2ZUtleXdvcmQgKyAnIG11c3QgYmUgbnVtYmVyIG9yIGJvb2xlYW4nKTtcbiAgfVxuICBpZiAoJGlzRGF0YUV4Y2wpIHtcbiAgICB2YXIgJHNjaGVtYVZhbHVlRXhjbCA9IGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hRXhjbC4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSxcbiAgICAgICRleGNsdXNpdmUgPSAnZXhjbHVzaXZlJyArICRsdmwsXG4gICAgICAkZXhjbFR5cGUgPSAnZXhjbFR5cGUnICsgJGx2bCxcbiAgICAgICRleGNsSXNOdW1iZXIgPSAnZXhjbElzTnVtYmVyJyArICRsdmwsXG4gICAgICAkb3BFeHByID0gJ29wJyArICRsdmwsXG4gICAgICAkb3BTdHIgPSAnXFwnICsgJyArICRvcEV4cHIgKyAnICsgXFwnJztcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hRXhjbCcgKyAoJGx2bCkgKyAnID0gJyArICgkc2NoZW1hVmFsdWVFeGNsKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlRXhjbCA9ICdzY2hlbWFFeGNsJyArICRsdmw7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJGV4Y2x1c2l2ZSkgKyAnOyB2YXIgJyArICgkZXhjbFR5cGUpICsgJyA9IHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZUV4Y2wpICsgJzsgaWYgKCcgKyAoJGV4Y2xUeXBlKSArICcgIT0gXFwnYm9vbGVhblxcJyAmJiAnICsgKCRleGNsVHlwZSkgKyAnICE9IFxcJ3VuZGVmaW5lZFxcJyAmJiAnICsgKCRleGNsVHlwZSkgKyAnICE9IFxcJ251bWJlclxcJykgeyAnO1xuICAgIHZhciAkZXJyb3JLZXl3b3JkID0gJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnX2V4Y2x1c2l2ZUxpbWl0JykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczoge30gJztcbiAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJycgKyAoJGV4Y2x1c2l2ZUtleXdvcmQpICsgJyBzaG91bGQgYmUgYm9vbGVhblxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gZWxzZSBpZiAoICc7XG4gICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB8fCAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyAnICsgKCRleGNsVHlwZSkgKyAnID09IFxcJ251bWJlclxcJyA/ICggKCcgKyAoJGV4Y2x1c2l2ZSkgKyAnID0gJyArICgkc2NoZW1hVmFsdWUpICsgJyA9PT0gdW5kZWZpbmVkIHx8ICcgKyAoJHNjaGVtYVZhbHVlRXhjbCkgKyAnICcgKyAoJG9wKSArICc9ICcgKyAoJHNjaGVtYVZhbHVlKSArICcpID8gJyArICgkZGF0YSkgKyAnICcgKyAoJG5vdE9wKSArICc9ICcgKyAoJHNjaGVtYVZhbHVlRXhjbCkgKyAnIDogJyArICgkZGF0YSkgKyAnICcgKyAoJG5vdE9wKSArICcgJyArICgkc2NoZW1hVmFsdWUpICsgJyApIDogKCAoJyArICgkZXhjbHVzaXZlKSArICcgPSAnICsgKCRzY2hlbWFWYWx1ZUV4Y2wpICsgJyA9PT0gdHJ1ZSkgPyAnICsgKCRkYXRhKSArICcgJyArICgkbm90T3ApICsgJz0gJyArICgkc2NoZW1hVmFsdWUpICsgJyA6ICcgKyAoJGRhdGEpICsgJyAnICsgKCRub3RPcCkgKyAnICcgKyAoJHNjaGVtYVZhbHVlKSArICcgKSB8fCAnICsgKCRkYXRhKSArICcgIT09ICcgKyAoJGRhdGEpICsgJykgeyB2YXIgb3AnICsgKCRsdmwpICsgJyA9ICcgKyAoJGV4Y2x1c2l2ZSkgKyAnID8gXFwnJyArICgkb3ApICsgJ1xcJyA6IFxcJycgKyAoJG9wKSArICc9XFwnOyAnO1xuICAgIGlmICgkc2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgICRlcnJvcktleXdvcmQgPSAkZXhjbHVzaXZlS2V5d29yZDtcbiAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRleGNsdXNpdmVLZXl3b3JkO1xuICAgICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYVZhbHVlRXhjbDtcbiAgICAgICRpc0RhdGEgPSAkaXNEYXRhRXhjbDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyICRleGNsSXNOdW1iZXIgPSB0eXBlb2YgJHNjaGVtYUV4Y2wgPT0gJ251bWJlcicsXG4gICAgICAkb3BTdHIgPSAkb3A7XG4gICAgaWYgKCRleGNsSXNOdW1iZXIgJiYgJGlzRGF0YSkge1xuICAgICAgdmFyICRvcEV4cHIgPSAnXFwnJyArICRvcFN0ciArICdcXCcnO1xuICAgICAgb3V0ICs9ICcgaWYgKCAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAoICcgKyAoJHNjaGVtYVZhbHVlKSArICcgPT09IHVuZGVmaW5lZCB8fCAnICsgKCRzY2hlbWFFeGNsKSArICcgJyArICgkb3ApICsgJz0gJyArICgkc2NoZW1hVmFsdWUpICsgJyA/ICcgKyAoJGRhdGEpICsgJyAnICsgKCRub3RPcCkgKyAnPSAnICsgKCRzY2hlbWFFeGNsKSArICcgOiAnICsgKCRkYXRhKSArICcgJyArICgkbm90T3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICkgfHwgJyArICgkZGF0YSkgKyAnICE9PSAnICsgKCRkYXRhKSArICcpIHsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCRleGNsSXNOdW1iZXIgJiYgJHNjaGVtYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICRleGNsdXNpdmUgPSB0cnVlO1xuICAgICAgICAkZXJyb3JLZXl3b3JkID0gJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRleGNsdXNpdmVLZXl3b3JkO1xuICAgICAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hRXhjbDtcbiAgICAgICAgJG5vdE9wICs9ICc9JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgkZXhjbElzTnVtYmVyKSAkc2NoZW1hVmFsdWUgPSBNYXRoWyRpc01heCA/ICdtaW4nIDogJ21heCddKCRzY2hlbWFFeGNsLCAkc2NoZW1hKTtcbiAgICAgICAgaWYgKCRzY2hlbWFFeGNsID09PSAoJGV4Y2xJc051bWJlciA/ICRzY2hlbWFWYWx1ZSA6IHRydWUpKSB7XG4gICAgICAgICAgJGV4Y2x1c2l2ZSA9IHRydWU7XG4gICAgICAgICAgJGVycm9yS2V5d29yZCA9ICRleGNsdXNpdmVLZXl3b3JkO1xuICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRleGNsdXNpdmVLZXl3b3JkO1xuICAgICAgICAgICRub3RPcCArPSAnPSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgJGV4Y2x1c2l2ZSA9IGZhbHNlO1xuICAgICAgICAgICRvcFN0ciArPSAnPSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciAkb3BFeHByID0gJ1xcJycgKyAkb3BTdHIgKyAnXFwnJztcbiAgICAgIG91dCArPSAnIGlmICggJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB8fCAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgJyArICgkZGF0YSkgKyAnICcgKyAoJG5vdE9wKSArICcgJyArICgkc2NoZW1hVmFsdWUpICsgJyB8fCAnICsgKCRkYXRhKSArICcgIT09ICcgKyAoJGRhdGEpICsgJykgeyAnO1xuICAgIH1cbiAgfVxuICAkZXJyb3JLZXl3b3JkID0gJGVycm9yS2V5d29yZCB8fCAka2V5d29yZDtcbiAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ19saW1pdCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgY29tcGFyaXNvbjogJyArICgkb3BFeHByKSArICcsIGxpbWl0OiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnLCBleGNsdXNpdmU6ICcgKyAoJGV4Y2x1c2l2ZSkgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGJlICcgKyAoJG9wU3RyKSArICcgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnXFwnICsgJyArICgkc2NoZW1hVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWFWYWx1ZSkgKyAnXFwnJztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6ICAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICd2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnICAgICAgICAgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICcgfSAnO1xuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX19saW1pdEl0ZW1zKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZXJyb3JLZXl3b3JkO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgaWYgKCEoJGlzRGF0YSB8fCB0eXBlb2YgJHNjaGVtYSA9PSAnbnVtYmVyJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJGtleXdvcmQgKyAnIG11c3QgYmUgbnVtYmVyJyk7XG4gIH1cbiAgdmFyICRvcCA9ICRrZXl3b3JkID09ICdtYXhJdGVtcycgPyAnPicgOiAnPCc7XG4gIG91dCArPSAnaWYgKCAnO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB8fCAnO1xuICB9XG4gIG91dCArPSAnICcgKyAoJGRhdGEpICsgJy5sZW5ndGggJyArICgkb3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnKSB7ICc7XG4gIHZhciAkZXJyb3JLZXl3b3JkID0gJGtleXdvcmQ7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICdfbGltaXRJdGVtcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbGltaXQ6ICcgKyAoJHNjaGVtYVZhbHVlKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgTk9UIGhhdmUgJztcbiAgICAgIGlmICgka2V5d29yZCA9PSAnbWF4SXRlbXMnKSB7XG4gICAgICAgIG91dCArPSAnbW9yZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJ2Zld2VyJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIHRoYW4gJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnXFwnICsgJyArICgkc2NoZW1hVmFsdWUpICsgJyArIFxcJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyBpdGVtc1xcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJ30gJztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9fbGltaXRMZW5ndGgoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRlcnJvcktleXdvcmQ7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICBpZiAoISgkaXNEYXRhIHx8IHR5cGVvZiAkc2NoZW1hID09ICdudW1iZXInKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigka2V5d29yZCArICcgbXVzdCBiZSBudW1iZXInKTtcbiAgfVxuICB2YXIgJG9wID0gJGtleXdvcmQgPT0gJ21heExlbmd0aCcgPyAnPicgOiAnPCc7XG4gIG91dCArPSAnaWYgKCAnO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB8fCAnO1xuICB9XG4gIGlmIChpdC5vcHRzLnVuaWNvZGUgPT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgJyArICgkZGF0YSkgKyAnLmxlbmd0aCAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHVjczJsZW5ndGgoJyArICgkZGF0YSkgKyAnKSAnO1xuICB9XG4gIG91dCArPSAnICcgKyAoJG9wKSArICcgJyArICgkc2NoZW1hVmFsdWUpICsgJykgeyAnO1xuICB2YXIgJGVycm9yS2V5d29yZCA9ICRrZXl3b3JkO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnX2xpbWl0TGVuZ3RoJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBsaW1pdDogJyArICgkc2NoZW1hVmFsdWUpICsgJyB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBOT1QgYmUgJztcbiAgICAgIGlmICgka2V5d29yZCA9PSAnbWF4TGVuZ3RoJykge1xuICAgICAgICBvdXQgKz0gJ2xvbmdlcic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJ3Nob3J0ZXInO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgdGhhbiAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICsgXFwnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIGNoYXJhY3RlcnNcXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6ICAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICd2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnICAgICAgICAgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICd9ICc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfX2xpbWl0UHJvcGVydGllcyhpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGVycm9yS2V5d29yZDtcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIGlmICghKCRpc0RhdGEgfHwgdHlwZW9mICRzY2hlbWEgPT0gJ251bWJlcicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCRrZXl3b3JkICsgJyBtdXN0IGJlIG51bWJlcicpO1xuICB9XG4gIHZhciAkb3AgPSAka2V5d29yZCA9PSAnbWF4UHJvcGVydGllcycgPyAnPicgOiAnPCc7XG4gIG91dCArPSAnaWYgKCAnO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB8fCAnO1xuICB9XG4gIG91dCArPSAnIE9iamVjdC5rZXlzKCcgKyAoJGRhdGEpICsgJykubGVuZ3RoICcgKyAoJG9wKSArICcgJyArICgkc2NoZW1hVmFsdWUpICsgJykgeyAnO1xuICB2YXIgJGVycm9yS2V5d29yZCA9ICRrZXl3b3JkO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnX2xpbWl0UHJvcGVydGllcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbGltaXQ6ICcgKyAoJHNjaGVtYVZhbHVlKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgTk9UIGhhdmUgJztcbiAgICAgIGlmICgka2V5d29yZCA9PSAnbWF4UHJvcGVydGllcycpIHtcbiAgICAgICAgb3V0ICs9ICdtb3JlJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnZmV3ZXInO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgdGhhbiAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICsgXFwnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIHByb3BlcnRpZXNcXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6ICAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICd2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnICAgICAgICAgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICd9ICc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfbXVsdGlwbGVPZihpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgaWYgKCEoJGlzRGF0YSB8fCB0eXBlb2YgJHNjaGVtYSA9PSAnbnVtYmVyJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJGtleXdvcmQgKyAnIG11c3QgYmUgbnVtYmVyJyk7XG4gIH1cbiAgb3V0ICs9ICd2YXIgZGl2aXNpb24nICsgKCRsdmwpICsgJztpZiAoJztcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgKCB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcgfHwgJztcbiAgfVxuICBvdXQgKz0gJyAoZGl2aXNpb24nICsgKCRsdmwpICsgJyA9ICcgKyAoJGRhdGEpICsgJyAvICcgKyAoJHNjaGVtYVZhbHVlKSArICcsICc7XG4gIGlmIChpdC5vcHRzLm11bHRpcGxlT2ZQcmVjaXNpb24pIHtcbiAgICBvdXQgKz0gJyBNYXRoLmFicyhNYXRoLnJvdW5kKGRpdmlzaW9uJyArICgkbHZsKSArICcpIC0gZGl2aXNpb24nICsgKCRsdmwpICsgJykgPiAxZS0nICsgKGl0Lm9wdHMubXVsdGlwbGVPZlByZWNpc2lvbikgKyAnICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgZGl2aXNpb24nICsgKCRsdmwpICsgJyAhPT0gcGFyc2VJbnQoZGl2aXNpb24nICsgKCRsdmwpICsgJykgJztcbiAgfVxuICBvdXQgKz0gJyApICc7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgICkgICc7XG4gIH1cbiAgb3V0ICs9ICcgKSB7ICAgJztcbiAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdtdWx0aXBsZU9mJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtdWx0aXBsZU9mOiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGJlIG11bHRpcGxlIG9mICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ1xcJyArICcgKyAoJHNjaGVtYVZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hVmFsdWUpICsgJ1xcJyc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiAgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAndmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAgICAgICAgICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICB2YXIgX19lcnIgPSBvdXQ7XG4gIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICB9XG4gIG91dCArPSAnfSAnO1xuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX25vdChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICBpZiAoKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2hlbWEgPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaGVtYSkubGVuZ3RoID4gMCkgfHwgJHNjaGVtYSA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2hlbWEsIGl0LlJVTEVTLmFsbCkpKSB7XG4gICAgJGl0LnNjaGVtYSA9ICRzY2hlbWE7XG4gICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aDtcbiAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgIG91dCArPSAnIHZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7ICAnO1xuICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgICRpdC5jcmVhdGVFcnJvcnMgPSBmYWxzZTtcbiAgICB2YXIgJGFsbEVycm9yc09wdGlvbjtcbiAgICBpZiAoJGl0Lm9wdHMuYWxsRXJyb3JzKSB7XG4gICAgICAkYWxsRXJyb3JzT3B0aW9uID0gJGl0Lm9wdHMuYWxsRXJyb3JzO1xuICAgICAgJGl0Lm9wdHMuYWxsRXJyb3JzID0gZmFsc2U7XG4gICAgfVxuICAgIG91dCArPSAnICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgJGl0LmNyZWF0ZUVycm9ycyA9IHRydWU7XG4gICAgaWYgKCRhbGxFcnJvcnNPcHRpb24pICRpdC5vcHRzLmFsbEVycm9ycyA9ICRhbGxFcnJvcnNPcHRpb247XG4gICAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gJHdhc0NvbXBvc2l0ZTtcbiAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgICAnO1xuICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdub3QnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7fSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIE5PVCBiZSB2YWxpZFxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gZWxzZSB7ICBlcnJvcnMgPSAnICsgKCRlcnJzKSArICc7IGlmICh2RXJyb3JzICE9PSBudWxsKSB7IGlmICgnICsgKCRlcnJzKSArICcpIHZFcnJvcnMubGVuZ3RoID0gJyArICgkZXJycykgKyAnOyBlbHNlIHZFcnJvcnMgPSBudWxsOyB9ICc7XG4gICAgaWYgKGl0Lm9wdHMuYWxsRXJyb3JzKSB7XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ25vdCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHt9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgTk9UIGJlIHZhbGlkXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmIChmYWxzZSkgeyAnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9vbmVPZihpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJGN1cnJlbnRCYXNlSWQgPSAkaXQuYmFzZUlkLFxuICAgICRwcmV2VmFsaWQgPSAncHJldlZhbGlkJyArICRsdmwsXG4gICAgJHBhc3NpbmdTY2hlbWFzID0gJ3Bhc3NpbmdTY2hlbWFzJyArICRsdmw7XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9ycyAsICcgKyAoJHByZXZWYWxpZCkgKyAnID0gZmFsc2UgLCAnICsgKCR2YWxpZCkgKyAnID0gZmFsc2UgLCAnICsgKCRwYXNzaW5nU2NoZW1hcykgKyAnID0gbnVsbDsgJztcbiAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICB2YXIgYXJyMSA9ICRzY2hlbWE7XG4gIGlmIChhcnIxKSB7XG4gICAgdmFyICRzY2gsICRpID0gLTEsXG4gICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAoJGkgPCBsMSkge1xuICAgICAgJHNjaCA9IGFycjFbJGkgKz0gMV07XG4gICAgICBpZiAoKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2ggPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaCkubGVuZ3RoID4gMCkgfHwgJHNjaCA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2gsIGl0LlJVTEVTLmFsbCkpKSB7XG4gICAgICAgICRpdC5zY2hlbWEgPSAkc2NoO1xuICAgICAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoICsgJ1snICsgJGkgKyAnXSc7XG4gICAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGggKyAnLycgKyAkaTtcbiAgICAgICAgb3V0ICs9ICcgICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0VmFsaWQpICsgJyA9IHRydWU7ICc7XG4gICAgICB9XG4gICAgICBpZiAoJGkpIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnICYmICcgKyAoJHByZXZWYWxpZCkgKyAnKSB7ICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgJyArICgkcGFzc2luZ1NjaGVtYXMpICsgJyA9IFsnICsgKCRwYXNzaW5nU2NoZW1hcykgKyAnLCAnICsgKCRpKSArICddOyB9IGVsc2UgeyAnO1xuICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJyArICgkdmFsaWQpICsgJyA9ICcgKyAoJHByZXZWYWxpZCkgKyAnID0gdHJ1ZTsgJyArICgkcGFzc2luZ1NjaGVtYXMpICsgJyA9ICcgKyAoJGkpICsgJzsgfSc7XG4gICAgfVxuICB9XG4gIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9ICR3YXNDb21wb3NpdGU7XG4gIG91dCArPSAnJyArICgkY2xvc2luZ0JyYWNlcykgKyAnaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ29uZU9mJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBwYXNzaW5nU2NoZW1hczogJyArICgkcGFzc2luZ1NjaGVtYXMpICsgJyB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBtYXRjaCBleGFjdGx5IG9uZSBzY2hlbWEgaW4gb25lT2ZcXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IodkVycm9ycyk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IHZFcnJvcnM7IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH1cbiAgb3V0ICs9ICd9IGVsc2UgeyAgZXJyb3JzID0gJyArICgkZXJycykgKyAnOyBpZiAodkVycm9ycyAhPT0gbnVsbCkgeyBpZiAoJyArICgkZXJycykgKyAnKSB2RXJyb3JzLmxlbmd0aCA9ICcgKyAoJGVycnMpICsgJzsgZWxzZSB2RXJyb3JzID0gbnVsbDsgfSc7XG4gIGlmIChpdC5vcHRzLmFsbEVycm9ycykge1xuICAgIG91dCArPSAnIH0gJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9wYXR0ZXJuKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICB2YXIgJHJlZ2V4cCA9ICRpc0RhdGEgPyAnKG5ldyBSZWdFeHAoJyArICRzY2hlbWFWYWx1ZSArICcpKScgOiBpdC51c2VQYXR0ZXJuKCRzY2hlbWEpO1xuICBvdXQgKz0gJ2lmICggJztcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyAoJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9IFxcJ3N0cmluZ1xcJykgfHwgJztcbiAgfVxuICBvdXQgKz0gJyAhJyArICgkcmVnZXhwKSArICcudGVzdCgnICsgKCRkYXRhKSArICcpICkgeyAgICc7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgncGF0dGVybicpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgcGF0dGVybjogICc7XG4gICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgIG91dCArPSAnJyArICgkc2NoZW1hVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkc2NoZW1hKSk7XG4gICAgfVxuICAgIG91dCArPSAnICB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBtYXRjaCBwYXR0ZXJuIFwiJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnXFwnICsgJyArICgkc2NoZW1hVmFsdWUpICsgJyArIFxcJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHNjaGVtYSkpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICdcIlxcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHNjaGVtYSkpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJ30gJztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9wcm9wZXJ0aWVzKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJGtleSA9ICdrZXknICsgJGx2bCxcbiAgICAkaWR4ID0gJ2lkeCcgKyAkbHZsLFxuICAgICRkYXRhTnh0ID0gJGl0LmRhdGFMZXZlbCA9IGl0LmRhdGFMZXZlbCArIDEsXG4gICAgJG5leHREYXRhID0gJ2RhdGEnICsgJGRhdGFOeHQsXG4gICAgJGRhdGFQcm9wZXJ0aWVzID0gJ2RhdGFQcm9wZXJ0aWVzJyArICRsdmw7XG4gIHZhciAkc2NoZW1hS2V5cyA9IE9iamVjdC5rZXlzKCRzY2hlbWEgfHwge30pLmZpbHRlcihub3RQcm90byksXG4gICAgJHBQcm9wZXJ0aWVzID0gaXQuc2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzIHx8IHt9LFxuICAgICRwUHJvcGVydHlLZXlzID0gT2JqZWN0LmtleXMoJHBQcm9wZXJ0aWVzKS5maWx0ZXIobm90UHJvdG8pLFxuICAgICRhUHJvcGVydGllcyA9IGl0LnNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyxcbiAgICAkc29tZVByb3BlcnRpZXMgPSAkc2NoZW1hS2V5cy5sZW5ndGggfHwgJHBQcm9wZXJ0eUtleXMubGVuZ3RoLFxuICAgICRub0FkZGl0aW9uYWwgPSAkYVByb3BlcnRpZXMgPT09IGZhbHNlLFxuICAgICRhZGRpdGlvbmFsSXNTY2hlbWEgPSB0eXBlb2YgJGFQcm9wZXJ0aWVzID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRhUHJvcGVydGllcykubGVuZ3RoLFxuICAgICRyZW1vdmVBZGRpdGlvbmFsID0gaXQub3B0cy5yZW1vdmVBZGRpdGlvbmFsLFxuICAgICRjaGVja0FkZGl0aW9uYWwgPSAkbm9BZGRpdGlvbmFsIHx8ICRhZGRpdGlvbmFsSXNTY2hlbWEgfHwgJHJlbW92ZUFkZGl0aW9uYWwsXG4gICAgJG93blByb3BlcnRpZXMgPSBpdC5vcHRzLm93blByb3BlcnRpZXMsXG4gICAgJGN1cnJlbnRCYXNlSWQgPSBpdC5iYXNlSWQ7XG4gIHZhciAkcmVxdWlyZWQgPSBpdC5zY2hlbWEucmVxdWlyZWQ7XG4gIGlmICgkcmVxdWlyZWQgJiYgIShpdC5vcHRzLiRkYXRhICYmICRyZXF1aXJlZC4kZGF0YSkgJiYgJHJlcXVpcmVkLmxlbmd0aCA8IGl0Lm9wdHMubG9vcFJlcXVpcmVkKSB7XG4gICAgdmFyICRyZXF1aXJlZEhhc2ggPSBpdC51dGlsLnRvSGFzaCgkcmVxdWlyZWQpO1xuICB9XG5cbiAgZnVuY3Rpb24gbm90UHJvdG8ocCkge1xuICAgIHJldHVybiBwICE9PSAnX19wcm90b19fJztcbiAgfVxuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7dmFyICcgKyAoJG5leHRWYWxpZCkgKyAnID0gdHJ1ZTsnO1xuICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZGF0YVByb3BlcnRpZXMpICsgJyA9IHVuZGVmaW5lZDsnO1xuICB9XG4gIGlmICgkY2hlY2tBZGRpdGlvbmFsKSB7XG4gICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnID0gJyArICgkZGF0YVByb3BlcnRpZXMpICsgJyB8fCBPYmplY3Qua2V5cygnICsgKCRkYXRhKSArICcpOyBmb3IgKHZhciAnICsgKCRpZHgpICsgJz0wOyAnICsgKCRpZHgpICsgJzwnICsgKCRkYXRhUHJvcGVydGllcykgKyAnLmxlbmd0aDsgJyArICgkaWR4KSArICcrKykgeyB2YXIgJyArICgka2V5KSArICcgPSAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnWycgKyAoJGlkeCkgKyAnXTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgZm9yICh2YXIgJyArICgka2V5KSArICcgaW4gJyArICgkZGF0YSkgKyAnKSB7ICc7XG4gICAgfVxuICAgIGlmICgkc29tZVByb3BlcnRpZXMpIHtcbiAgICAgIG91dCArPSAnIHZhciBpc0FkZGl0aW9uYWwnICsgKCRsdmwpICsgJyA9ICEoZmFsc2UgJztcbiAgICAgIGlmICgkc2NoZW1hS2V5cy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKCRzY2hlbWFLZXlzLmxlbmd0aCA+IDgpIHtcbiAgICAgICAgICBvdXQgKz0gJyB8fCB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcuaGFzT3duUHJvcGVydHkoJyArICgka2V5KSArICcpICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGFycjEgPSAkc2NoZW1hS2V5cztcbiAgICAgICAgICBpZiAoYXJyMSkge1xuICAgICAgICAgICAgdmFyICRwcm9wZXJ0eUtleSwgaTEgPSAtMSxcbiAgICAgICAgICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoaTEgPCBsMSkge1xuICAgICAgICAgICAgICAkcHJvcGVydHlLZXkgPSBhcnIxW2kxICs9IDFdO1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAnICsgKCRrZXkpICsgJyA9PSAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHByb3BlcnR5S2V5KSkgKyAnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoJHBQcm9wZXJ0eUtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnIyID0gJHBQcm9wZXJ0eUtleXM7XG4gICAgICAgIGlmIChhcnIyKSB7XG4gICAgICAgICAgdmFyICRwUHJvcGVydHksICRpID0gLTEsXG4gICAgICAgICAgICBsMiA9IGFycjIubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoJGkgPCBsMikge1xuICAgICAgICAgICAgJHBQcm9wZXJ0eSA9IGFycjJbJGkgKz0gMV07XG4gICAgICAgICAgICBvdXQgKz0gJyB8fCAnICsgKGl0LnVzZVBhdHRlcm4oJHBQcm9wZXJ0eSkpICsgJy50ZXN0KCcgKyAoJGtleSkgKyAnKSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3V0ICs9ICcgKTsgaWYgKGlzQWRkaXRpb25hbCcgKyAoJGx2bCkgKyAnKSB7ICc7XG4gICAgfVxuICAgIGlmICgkcmVtb3ZlQWRkaXRpb25hbCA9PSAnYWxsJykge1xuICAgICAgb3V0ICs9ICcgZGVsZXRlICcgKyAoJGRhdGEpICsgJ1snICsgKCRrZXkpICsgJ107ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciAkY3VycmVudEVycm9yUGF0aCA9IGl0LmVycm9yUGF0aDtcbiAgICAgIHZhciAkYWRkaXRpb25hbFByb3BlcnR5ID0gJ1xcJyArICcgKyAka2V5ICsgJyArIFxcJyc7XG4gICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgIGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAka2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICB9XG4gICAgICBpZiAoJG5vQWRkaXRpb25hbCkge1xuICAgICAgICBpZiAoJHJlbW92ZUFkZGl0aW9uYWwpIHtcbiAgICAgICAgICBvdXQgKz0gJyBkZWxldGUgJyArICgkZGF0YSkgKyAnWycgKyAoJGtleSkgKyAnXTsgJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IGZhbHNlOyAnO1xuICAgICAgICAgIHZhciAkY3VyckVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aDtcbiAgICAgICAgICAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2FkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbiAgICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnYWRkaXRpb25hbFByb3BlcnRpZXMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGFkZGl0aW9uYWxQcm9wZXJ0eTogXFwnJyArICgkYWRkaXRpb25hbFByb3BlcnR5KSArICdcXCcgfSAnO1xuICAgICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJztcbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnaXMgYW4gaW52YWxpZCBhZGRpdGlvbmFsIHByb3BlcnR5JztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJ3Nob3VsZCBOT1QgaGF2ZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiBmYWxzZSAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICAkZXJyU2NoZW1hUGF0aCA9ICRjdXJyRXJyU2NoZW1hUGF0aDtcbiAgICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgICAgb3V0ICs9ICcgYnJlYWs7ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCRhZGRpdGlvbmFsSXNTY2hlbWEpIHtcbiAgICAgICAgaWYgKCRyZW1vdmVBZGRpdGlvbmFsID09ICdmYWlsaW5nJykge1xuICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7ICAnO1xuICAgICAgICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICAgICAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgICAgICAgICRpdC5zY2hlbWEgPSAkYVByb3BlcnRpZXM7XG4gICAgICAgICAgJGl0LnNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgJy5hZGRpdGlvbmFsUHJvcGVydGllcyc7XG4gICAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9hZGRpdGlvbmFsUHJvcGVydGllcyc7XG4gICAgICAgICAgJGl0LmVycm9yUGF0aCA9IGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSA/IGl0LmVycm9yUGF0aCA6IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAka2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGtleSArICddJztcbiAgICAgICAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGtleTtcbiAgICAgICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgICAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgICAgICAgb3V0ICs9ICcgJyArIChpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKSkgKyAnICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJyArICgkY29kZSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIGlmICghJyArICgkbmV4dFZhbGlkKSArICcpIHsgZXJyb3JzID0gJyArICgkZXJycykgKyAnOyBpZiAodmFsaWRhdGUuZXJyb3JzICE9PSBudWxsKSB7IGlmIChlcnJvcnMpIHZhbGlkYXRlLmVycm9ycy5sZW5ndGggPSBlcnJvcnM7IGVsc2UgdmFsaWRhdGUuZXJyb3JzID0gbnVsbDsgfSBkZWxldGUgJyArICgkZGF0YSkgKyAnWycgKyAoJGtleSkgKyAnXTsgfSAgJztcbiAgICAgICAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICRpdC5zY2hlbWEgPSAkYVByb3BlcnRpZXM7XG4gICAgICAgICAgJGl0LnNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgJy5hZGRpdGlvbmFsUHJvcGVydGllcyc7XG4gICAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9hZGRpdGlvbmFsUHJvcGVydGllcyc7XG4gICAgICAgICAgJGl0LmVycm9yUGF0aCA9IGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSA/IGl0LmVycm9yUGF0aCA6IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAka2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGtleSArICddJztcbiAgICAgICAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGtleTtcbiAgICAgICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgICAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgICAgICAgb3V0ICs9ICcgJyArIChpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKSkgKyAnICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJyArICgkY29kZSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSBicmVhazsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGl0LmVycm9yUGF0aCA9ICRjdXJyZW50RXJyb3JQYXRoO1xuICAgIH1cbiAgICBpZiAoJHNvbWVQcm9wZXJ0aWVzKSB7XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gICc7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnO1xuICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgIH1cbiAgfVxuICB2YXIgJHVzZURlZmF1bHRzID0gaXQub3B0cy51c2VEZWZhdWx0cyAmJiAhaXQuY29tcG9zaXRlUnVsZTtcbiAgaWYgKCRzY2hlbWFLZXlzLmxlbmd0aCkge1xuICAgIHZhciBhcnIzID0gJHNjaGVtYUtleXM7XG4gICAgaWYgKGFycjMpIHtcbiAgICAgIHZhciAkcHJvcGVydHlLZXksIGkzID0gLTEsXG4gICAgICAgIGwzID0gYXJyMy5sZW5ndGggLSAxO1xuICAgICAgd2hpbGUgKGkzIDwgbDMpIHtcbiAgICAgICAgJHByb3BlcnR5S2V5ID0gYXJyM1tpMyArPSAxXTtcbiAgICAgICAgdmFyICRzY2ggPSAkc2NoZW1hWyRwcm9wZXJ0eUtleV07XG4gICAgICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICAgICB2YXIgJHByb3AgPSBpdC51dGlsLmdldFByb3BlcnR5KCRwcm9wZXJ0eUtleSksXG4gICAgICAgICAgICAkcGFzc0RhdGEgPSAkZGF0YSArICRwcm9wLFxuICAgICAgICAgICAgJGhhc0RlZmF1bHQgPSAkdXNlRGVmYXVsdHMgJiYgJHNjaC5kZWZhdWx0ICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgJGl0LnNjaGVtYSA9ICRzY2g7XG4gICAgICAgICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aCArICRwcm9wO1xuICAgICAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGggKyAnLycgKyBpdC51dGlsLmVzY2FwZUZyYWdtZW50KCRwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgJGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aChpdC5lcnJvclBhdGgsICRwcm9wZXJ0eUtleSwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICAgICRpdC5kYXRhUGF0aEFyclskZGF0YU54dF0gPSBpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KTtcbiAgICAgICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICAgICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgICAgICAgICRjb2RlID0gaXQudXRpbC52YXJSZXBsYWNlKCRjb2RlLCAkbmV4dERhdGEsICRwYXNzRGF0YSk7XG4gICAgICAgICAgICB2YXIgJHVzZURhdGEgPSAkcGFzc0RhdGE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciAkdXNlRGF0YSA9ICRuZXh0RGF0YTtcbiAgICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRoYXNEZWZhdWx0KSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCRyZXF1aXJlZEhhc2ggJiYgJHJlcXVpcmVkSGFzaFskcHJvcGVydHlLZXldKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIGlmICggJyArICgkdXNlRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgISBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSkpICsgJ1xcJykgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvdXQgKz0gJykgeyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IGZhbHNlOyAnO1xuICAgICAgICAgICAgICB2YXIgJGN1cnJlbnRFcnJvclBhdGggPSBpdC5lcnJvclBhdGgsXG4gICAgICAgICAgICAgICAgJGN1cnJFcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGgsXG4gICAgICAgICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9IGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGgoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eUtleSwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvcmVxdWlyZWQnO1xuICAgICAgICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJztcbiAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gJGN1cnJFcnJTY2hlbWFQYXRoO1xuICAgICAgICAgICAgICBpdC5lcnJvclBhdGggPSAkY3VycmVudEVycm9yUGF0aDtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgfSBlbHNlIHsgJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCAnICsgKCR1c2VEYXRhKSArICcgPT09IHVuZGVmaW5lZCAnO1xuICAgICAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgISBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSkpICsgJ1xcJykgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcpIHsgJyArICgkbmV4dFZhbGlkKSArICcgPSB0cnVlOyB9IGVsc2UgeyAnO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCR1c2VEYXRhKSArICcgIT09IHVuZGVmaW5lZCAnO1xuICAgICAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgJiYgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSkpICsgJ1xcJykgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgKSB7ICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoJGNvZGUpICsgJyB9ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkcFByb3BlcnR5S2V5cy5sZW5ndGgpIHtcbiAgICB2YXIgYXJyNCA9ICRwUHJvcGVydHlLZXlzO1xuICAgIGlmIChhcnI0KSB7XG4gICAgICB2YXIgJHBQcm9wZXJ0eSwgaTQgPSAtMSxcbiAgICAgICAgbDQgPSBhcnI0Lmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaTQgPCBsNCkge1xuICAgICAgICAkcFByb3BlcnR5ID0gYXJyNFtpNCArPSAxXTtcbiAgICAgICAgdmFyICRzY2ggPSAkcFByb3BlcnRpZXNbJHBQcm9wZXJ0eV07XG4gICAgICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICAgICAkaXQuc2NoZW1hID0gJHNjaDtcbiAgICAgICAgICAkaXQuc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLnBhdHRlcm5Qcm9wZXJ0aWVzJyArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJHBQcm9wZXJ0eSk7XG4gICAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9wYXR0ZXJuUHJvcGVydGllcy8nICsgaXQudXRpbC5lc2NhcGVGcmFnbWVudCgkcFByb3BlcnR5KTtcbiAgICAgICAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgPSAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnIHx8IE9iamVjdC5rZXlzKCcgKyAoJGRhdGEpICsgJyk7IGZvciAodmFyICcgKyAoJGlkeCkgKyAnPTA7ICcgKyAoJGlkeCkgKyAnPCcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcubGVuZ3RoOyAnICsgKCRpZHgpICsgJysrKSB7IHZhciAnICsgKCRrZXkpICsgJyA9ICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICdbJyArICgkaWR4KSArICddOyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBmb3IgKHZhciAnICsgKCRrZXkpICsgJyBpbiAnICsgKCRkYXRhKSArICcpIHsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoaXQudXNlUGF0dGVybigkcFByb3BlcnR5KSkgKyAnLnRlc3QoJyArICgka2V5KSArICcpKSB7ICc7XG4gICAgICAgICAgJGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAka2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGtleSArICddJztcbiAgICAgICAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGtleTtcbiAgICAgICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgICAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgICAgICAgb3V0ICs9ICcgJyArIChpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKSkgKyAnICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJyArICgkY29kZSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSBicmVhazsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBlbHNlICcgKyAoJG5leHRWYWxpZCkgKyAnID0gdHJ1ZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAgJztcbiAgICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgJyArICgkY2xvc2luZ0JyYWNlcykgKyAnIGlmICgnICsgKCRlcnJzKSArICcgPT0gZXJyb3JzKSB7JztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9wcm9wZXJ0eU5hbWVzKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7JztcbiAgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoZW1hID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2hlbWEpLmxlbmd0aCA+IDApIHx8ICRzY2hlbWEgPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoZW1hLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICRpdC5zY2hlbWEgPSAkc2NoZW1hO1xuICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGg7XG4gICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aDtcbiAgICB2YXIgJGtleSA9ICdrZXknICsgJGx2bCxcbiAgICAgICRpZHggPSAnaWR4JyArICRsdmwsXG4gICAgICAkaSA9ICdpJyArICRsdmwsXG4gICAgICAkaW52YWxpZE5hbWUgPSAnXFwnICsgJyArICRrZXkgKyAnICsgXFwnJyxcbiAgICAgICRkYXRhTnh0ID0gJGl0LmRhdGFMZXZlbCA9IGl0LmRhdGFMZXZlbCArIDEsXG4gICAgICAkbmV4dERhdGEgPSAnZGF0YScgKyAkZGF0YU54dCxcbiAgICAgICRkYXRhUHJvcGVydGllcyA9ICdkYXRhUHJvcGVydGllcycgKyAkbHZsLFxuICAgICAgJG93blByb3BlcnRpZXMgPSBpdC5vcHRzLm93blByb3BlcnRpZXMsXG4gICAgICAkY3VycmVudEJhc2VJZCA9IGl0LmJhc2VJZDtcbiAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgIG91dCArPSAnIHZhciAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnID0gdW5kZWZpbmVkOyAnO1xuICAgIH1cbiAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgPSAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnIHx8IE9iamVjdC5rZXlzKCcgKyAoJGRhdGEpICsgJyk7IGZvciAodmFyICcgKyAoJGlkeCkgKyAnPTA7ICcgKyAoJGlkeCkgKyAnPCcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcubGVuZ3RoOyAnICsgKCRpZHgpICsgJysrKSB7IHZhciAnICsgKCRrZXkpICsgJyA9ICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICdbJyArICgkaWR4KSArICddOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyBmb3IgKHZhciAnICsgKCRrZXkpICsgJyBpbiAnICsgKCRkYXRhKSArICcpIHsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgdmFyIHN0YXJ0RXJycycgKyAoJGx2bCkgKyAnID0gZXJyb3JzOyAnO1xuICAgIHZhciAkcGFzc0RhdGEgPSAka2V5O1xuICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICB9XG4gICAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gJHdhc0NvbXBvc2l0ZTtcbiAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSB7IGZvciAodmFyICcgKyAoJGkpICsgJz1zdGFydEVycnMnICsgKCRsdmwpICsgJzsgJyArICgkaSkgKyAnPGVycm9yczsgJyArICgkaSkgKyAnKyspIHsgdkVycm9yc1snICsgKCRpKSArICddLnByb3BlcnR5TmFtZSA9ICcgKyAoJGtleSkgKyAnOyB9ICAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdwcm9wZXJ0eU5hbWVzJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBwcm9wZXJ0eU5hbWU6IFxcJycgKyAoJGludmFsaWROYW1lKSArICdcXCcgfSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwncHJvcGVydHkgbmFtZSBcXFxcXFwnJyArICgkaW52YWxpZE5hbWUpICsgJ1xcXFxcXCcgaXMgaW52YWxpZFxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHZFcnJvcnMpOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gdkVycm9yczsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgYnJlYWs7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gfSc7XG4gIH1cbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzKSArICcgaWYgKCcgKyAoJGVycnMpICsgJyA9PSBlcnJvcnMpIHsnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3JlcXVpcmVkKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkdlNjaGVtYSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgaWYgKCEkaXNEYXRhKSB7XG4gICAgaWYgKCRzY2hlbWEubGVuZ3RoIDwgaXQub3B0cy5sb29wUmVxdWlyZWQgJiYgaXQuc2NoZW1hLnByb3BlcnRpZXMgJiYgT2JqZWN0LmtleXMoaXQuc2NoZW1hLnByb3BlcnRpZXMpLmxlbmd0aCkge1xuICAgICAgdmFyICRyZXF1aXJlZCA9IFtdO1xuICAgICAgdmFyIGFycjEgPSAkc2NoZW1hO1xuICAgICAgaWYgKGFycjEpIHtcbiAgICAgICAgdmFyICRwcm9wZXJ0eSwgaTEgPSAtMSxcbiAgICAgICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKGkxIDwgbDEpIHtcbiAgICAgICAgICAkcHJvcGVydHkgPSBhcnIxW2kxICs9IDFdO1xuICAgICAgICAgIHZhciAkcHJvcGVydHlTY2ggPSBpdC5zY2hlbWEucHJvcGVydGllc1skcHJvcGVydHldO1xuICAgICAgICAgIGlmICghKCRwcm9wZXJ0eVNjaCAmJiAoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHByb3BlcnR5U2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRwcm9wZXJ0eVNjaCkubGVuZ3RoID4gMCkgfHwgJHByb3BlcnR5U2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHByb3BlcnR5U2NoLCBpdC5SVUxFUy5hbGwpKSkpIHtcbiAgICAgICAgICAgICRyZXF1aXJlZFskcmVxdWlyZWQubGVuZ3RoXSA9ICRwcm9wZXJ0eTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyICRyZXF1aXJlZCA9ICRzY2hlbWE7XG4gICAgfVxuICB9XG4gIGlmICgkaXNEYXRhIHx8ICRyZXF1aXJlZC5sZW5ndGgpIHtcbiAgICB2YXIgJGN1cnJlbnRFcnJvclBhdGggPSBpdC5lcnJvclBhdGgsXG4gICAgICAkbG9vcFJlcXVpcmVkID0gJGlzRGF0YSB8fCAkcmVxdWlyZWQubGVuZ3RoID49IGl0Lm9wdHMubG9vcFJlcXVpcmVkLFxuICAgICAgJG93blByb3BlcnRpZXMgPSBpdC5vcHRzLm93blByb3BlcnRpZXM7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIHZhciBtaXNzaW5nJyArICgkbHZsKSArICc7ICc7XG4gICAgICBpZiAoJGxvb3BSZXF1aXJlZCkge1xuICAgICAgICBpZiAoISRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkdlNjaGVtYSkgKyAnID0gdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnOyAnO1xuICAgICAgICB9XG4gICAgICAgIHZhciAkaSA9ICdpJyArICRsdmwsXG4gICAgICAgICAgJHByb3BlcnR5UGF0aCA9ICdzY2hlbWEnICsgJGx2bCArICdbJyArICRpICsgJ10nLFxuICAgICAgICAgICRtaXNzaW5nUHJvcGVydHkgPSAnXFwnICsgJyArICRwcm9wZXJ0eVBhdGggKyAnICsgXFwnJztcbiAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgIGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eVBhdGgsIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkdmFsaWQpICsgJyA9IHRydWU7ICc7XG4gICAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKHNjaGVtYScgKyAoJGx2bCkgKyAnID09PSB1bmRlZmluZWQpICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyBlbHNlIGlmICghQXJyYXkuaXNBcnJheShzY2hlbWEnICsgKCRsdmwpICsgJykpICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgZWxzZSB7JztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyBmb3IgKHZhciAnICsgKCRpKSArICcgPSAwOyAnICsgKCRpKSArICcgPCAnICsgKCR2U2NoZW1hKSArICcubGVuZ3RoOyAnICsgKCRpKSArICcrKykgeyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkZGF0YSkgKyAnWycgKyAoJHZTY2hlbWEpICsgJ1snICsgKCRpKSArICddXSAhPT0gdW5kZWZpbmVkICc7XG4gICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgIG91dCArPSAnICYmICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCcgKyAoJGRhdGEpICsgJywgJyArICgkdlNjaGVtYSkgKyAnWycgKyAoJGkpICsgJ10pICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICc7IGlmICghJyArICgkdmFsaWQpICsgJykgYnJlYWs7IH0gJztcbiAgICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJyAgfSAgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyAgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgJztcbiAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdyZXF1aXJlZCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbWlzc2luZ1Byb3BlcnR5OiBcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJyc7XG4gICAgICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgIG91dCArPSAnaXMgYSByZXF1aXJlZCBwcm9wZXJ0eSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcXFxcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcXFxcXCcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB9IGVsc2UgeyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKCAnO1xuICAgICAgICB2YXIgYXJyMiA9ICRyZXF1aXJlZDtcbiAgICAgICAgaWYgKGFycjIpIHtcbiAgICAgICAgICB2YXIgJHByb3BlcnR5S2V5LCAkaSA9IC0xLFxuICAgICAgICAgICAgbDIgPSBhcnIyLmxlbmd0aCAtIDE7XG4gICAgICAgICAgd2hpbGUgKCRpIDwgbDIpIHtcbiAgICAgICAgICAgICRwcm9wZXJ0eUtleSA9IGFycjJbJGkgKz0gMV07XG4gICAgICAgICAgICBpZiAoJGkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciAkcHJvcCA9IGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJHVzZURhdGEgPSAkZGF0YSArICRwcm9wO1xuICAgICAgICAgICAgb3V0ICs9ICcgKCAoICcgKyAoJHVzZURhdGEpICsgJyA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgISBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSkpICsgJ1xcJykgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnKSAmJiAobWlzc2luZycgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKGl0Lm9wdHMuanNvblBvaW50ZXJzID8gJHByb3BlcnR5S2V5IDogJHByb3ApKSArICcpICkgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcpIHsgICc7XG4gICAgICAgIHZhciAkcHJvcGVydHlQYXRoID0gJ21pc3NpbmcnICsgJGx2bCxcbiAgICAgICAgICAkbWlzc2luZ1Byb3BlcnR5ID0gJ1xcJyArICcgKyAkcHJvcGVydHlQYXRoICsgJyArIFxcJyc7XG4gICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICBpdC5lcnJvclBhdGggPSBpdC5vcHRzLmpzb25Qb2ludGVycyA/IGl0LnV0aWwuZ2V0UGF0aEV4cHIoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eVBhdGgsIHRydWUpIDogJGN1cnJlbnRFcnJvclBhdGggKyAnICsgJyArICRwcm9wZXJ0eVBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdyZXF1aXJlZCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbWlzc2luZ1Byb3BlcnR5OiBcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJyc7XG4gICAgICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgIG91dCArPSAnaXMgYSByZXF1aXJlZCBwcm9wZXJ0eSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcXFxcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcXFxcXCcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB9IGVsc2UgeyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJGxvb3BSZXF1aXJlZCkge1xuICAgICAgICBpZiAoISRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkdlNjaGVtYSkgKyAnID0gdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnOyAnO1xuICAgICAgICB9XG4gICAgICAgIHZhciAkaSA9ICdpJyArICRsdmwsXG4gICAgICAgICAgJHByb3BlcnR5UGF0aCA9ICdzY2hlbWEnICsgJGx2bCArICdbJyArICRpICsgJ10nLFxuICAgICAgICAgICRtaXNzaW5nUHJvcGVydHkgPSAnXFwnICsgJyArICRwcm9wZXJ0eVBhdGggKyAnICsgXFwnJztcbiAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgIGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eVBhdGgsIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCR2U2NoZW1hKSArICcgJiYgIUFycmF5LmlzQXJyYXkoJyArICgkdlNjaGVtYSkgKyAnKSkgeyAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdyZXF1aXJlZCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbWlzc2luZ1Byb3BlcnR5OiBcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCcnO1xuICAgICAgICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcXFxcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcXFxcXCcnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7IH0gZWxzZSBpZiAoJyArICgkdlNjaGVtYSkgKyAnICE9PSB1bmRlZmluZWQpIHsgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyBmb3IgKHZhciAnICsgKCRpKSArICcgPSAwOyAnICsgKCRpKSArICcgPCAnICsgKCR2U2NoZW1hKSArICcubGVuZ3RoOyAnICsgKCRpKSArICcrKykgeyBpZiAoJyArICgkZGF0YSkgKyAnWycgKyAoJHZTY2hlbWEpICsgJ1snICsgKCRpKSArICddXSA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgIG91dCArPSAnIHx8ICEgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCcgKyAoJGRhdGEpICsgJywgJyArICgkdlNjaGVtYSkgKyAnWycgKyAoJGkpICsgJ10pICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcpIHsgIHZhciBlcnIgPSAgICc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdyZXF1aXJlZCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbWlzc2luZ1Byb3BlcnR5OiBcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJyc7XG4gICAgICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgIG91dCArPSAnaXMgYSByZXF1aXJlZCBwcm9wZXJ0eSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcXFxcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcXFxcXCcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgfSB9ICc7XG4gICAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgICAgb3V0ICs9ICcgIH0gICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBhcnIzID0gJHJlcXVpcmVkO1xuICAgICAgICBpZiAoYXJyMykge1xuICAgICAgICAgIHZhciAkcHJvcGVydHlLZXksIGkzID0gLTEsXG4gICAgICAgICAgICBsMyA9IGFycjMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoaTMgPCBsMykge1xuICAgICAgICAgICAgJHByb3BlcnR5S2V5ID0gYXJyM1tpMyArPSAxXTtcbiAgICAgICAgICAgIHZhciAkcHJvcCA9IGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9IGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSksXG4gICAgICAgICAgICAgICR1c2VEYXRhID0gJGRhdGEgKyAkcHJvcDtcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoKCRjdXJyZW50RXJyb3JQYXRoLCAkcHJvcGVydHlLZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnIGlmICggJyArICgkdXNlRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcpIHsgIHZhciBlcnIgPSAgICc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCcnO1xuICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnaXMgYSByZXF1aXJlZCBwcm9wZXJ0eSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7IH0gJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaXQuZXJyb3JQYXRoID0gJGN1cnJlbnRFcnJvclBhdGg7XG4gIH0gZWxzZSBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGlmICh0cnVlKSB7JztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV91bmlxdWVJdGVtcyhpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICBpZiAoKCRzY2hlbWEgfHwgJGlzRGF0YSkgJiYgaXQub3B0cy51bmlxdWVJdGVtcyAhPT0gZmFsc2UpIHtcbiAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJHZhbGlkKSArICc7IGlmICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnID09PSBmYWxzZSB8fCAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnID09PSB1bmRlZmluZWQpICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyBlbHNlIGlmICh0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdib29sZWFuXFwnKSAnICsgKCR2YWxpZCkgKyAnID0gZmFsc2U7IGVsc2UgeyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB2YXIgaSA9ICcgKyAoJGRhdGEpICsgJy5sZW5ndGggLCAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZSAsIGo7IGlmIChpID4gMSkgeyAnO1xuICAgIHZhciAkaXRlbVR5cGUgPSBpdC5zY2hlbWEuaXRlbXMgJiYgaXQuc2NoZW1hLml0ZW1zLnR5cGUsXG4gICAgICAkdHlwZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCRpdGVtVHlwZSk7XG4gICAgaWYgKCEkaXRlbVR5cGUgfHwgJGl0ZW1UeXBlID09ICdvYmplY3QnIHx8ICRpdGVtVHlwZSA9PSAnYXJyYXknIHx8ICgkdHlwZUlzQXJyYXkgJiYgKCRpdGVtVHlwZS5pbmRleE9mKCdvYmplY3QnKSA+PSAwIHx8ICRpdGVtVHlwZS5pbmRleE9mKCdhcnJheScpID49IDApKSkge1xuICAgICAgb3V0ICs9ICcgb3V0ZXI6IGZvciAoO2ktLTspIHsgZm9yIChqID0gaTsgai0tOykgeyBpZiAoZXF1YWwoJyArICgkZGF0YSkgKyAnW2ldLCAnICsgKCRkYXRhKSArICdbal0pKSB7ICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgYnJlYWsgb3V0ZXI7IH0gfSB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhciBpdGVtSW5kaWNlcyA9IHt9LCBpdGVtOyBmb3IgKDtpLS07KSB7IHZhciBpdGVtID0gJyArICgkZGF0YSkgKyAnW2ldOyAnO1xuICAgICAgdmFyICRtZXRob2QgPSAnY2hlY2tEYXRhVHlwZScgKyAoJHR5cGVJc0FycmF5ID8gJ3MnIDogJycpO1xuICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoaXQudXRpbFskbWV0aG9kXSgkaXRlbVR5cGUsICdpdGVtJywgaXQub3B0cy5zdHJpY3ROdW1iZXJzLCB0cnVlKSkgKyAnKSBjb250aW51ZTsgJztcbiAgICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKHR5cGVvZiBpdGVtID09IFxcJ3N0cmluZ1xcJykgaXRlbSA9IFxcJ1wiXFwnICsgaXRlbTsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIGlmICh0eXBlb2YgaXRlbUluZGljZXNbaXRlbV0gPT0gXFwnbnVtYmVyXFwnKSB7ICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgaiA9IGl0ZW1JbmRpY2VzW2l0ZW1dOyBicmVhazsgfSBpdGVtSW5kaWNlc1tpdGVtXSA9IGk7IH0gJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICBvdXQgKz0gJyAgfSAgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgJztcbiAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgndW5pcXVlSXRlbXMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGk6IGksIGo6IGogfSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIE5PVCBoYXZlIGR1cGxpY2F0ZSBpdGVtcyAoaXRlbXMgIyMgXFwnICsgaiArIFxcJyBhbmQgXFwnICsgaSArIFxcJyBhcmUgaWRlbnRpY2FsKVxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgICAgb3V0ICs9ICd2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcge30gJztcbiAgICB9XG4gICAgdmFyIF9fZXJyID0gb3V0O1xuICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuLy9hbGwgcmVxdWlyZXMgbXVzdCBiZSBleHBsaWNpdCBiZWNhdXNlIGJyb3dzZXJpZnkgd29uJ3Qgd29yayB3aXRoIGR5bmFtaWMgcmVxdWlyZXNcbm1vZHVsZS5leHBvcnRzID0ge1xuICAnJHJlZic6IHJlcXVpcmUoJy4vcmVmJyksXG4gIGFsbE9mOiByZXF1aXJlKCcuL2FsbE9mJyksXG4gIGFueU9mOiByZXF1aXJlKCcuL2FueU9mJyksXG4gICckY29tbWVudCc6IHJlcXVpcmUoJy4vY29tbWVudCcpLFxuICBjb25zdDogcmVxdWlyZSgnLi9jb25zdCcpLFxuICBjb250YWluczogcmVxdWlyZSgnLi9jb250YWlucycpLFxuICBkZXBlbmRlbmNpZXM6IHJlcXVpcmUoJy4vZGVwZW5kZW5jaWVzJyksXG4gICdlbnVtJzogcmVxdWlyZSgnLi9lbnVtJyksXG4gIGZvcm1hdDogcmVxdWlyZSgnLi9mb3JtYXQnKSxcbiAgJ2lmJzogcmVxdWlyZSgnLi9pZicpLFxuICBpdGVtczogcmVxdWlyZSgnLi9pdGVtcycpLFxuICBtYXhpbXVtOiByZXF1aXJlKCcuL19saW1pdCcpLFxuICBtaW5pbXVtOiByZXF1aXJlKCcuL19saW1pdCcpLFxuICBtYXhJdGVtczogcmVxdWlyZSgnLi9fbGltaXRJdGVtcycpLFxuICBtaW5JdGVtczogcmVxdWlyZSgnLi9fbGltaXRJdGVtcycpLFxuICBtYXhMZW5ndGg6IHJlcXVpcmUoJy4vX2xpbWl0TGVuZ3RoJyksXG4gIG1pbkxlbmd0aDogcmVxdWlyZSgnLi9fbGltaXRMZW5ndGgnKSxcbiAgbWF4UHJvcGVydGllczogcmVxdWlyZSgnLi9fbGltaXRQcm9wZXJ0aWVzJyksXG4gIG1pblByb3BlcnRpZXM6IHJlcXVpcmUoJy4vX2xpbWl0UHJvcGVydGllcycpLFxuICBtdWx0aXBsZU9mOiByZXF1aXJlKCcuL211bHRpcGxlT2YnKSxcbiAgbm90OiByZXF1aXJlKCcuL25vdCcpLFxuICBvbmVPZjogcmVxdWlyZSgnLi9vbmVPZicpLFxuICBwYXR0ZXJuOiByZXF1aXJlKCcuL3BhdHRlcm4nKSxcbiAgcHJvcGVydGllczogcmVxdWlyZSgnLi9wcm9wZXJ0aWVzJyksXG4gIHByb3BlcnR5TmFtZXM6IHJlcXVpcmUoJy4vcHJvcGVydHlOYW1lcycpLFxuICByZXF1aXJlZDogcmVxdWlyZSgnLi9yZXF1aXJlZCcpLFxuICB1bmlxdWVJdGVtczogcmVxdWlyZSgnLi91bmlxdWVJdGVtcycpLFxuICB2YWxpZGF0ZTogcmVxdWlyZSgnLi92YWxpZGF0ZScpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcnVsZU1vZHVsZXMgPSByZXF1aXJlKCcuLi9kb3RqcycpXG4gICwgdG9IYXNoID0gcmVxdWlyZSgnLi91dGlsJykudG9IYXNoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHJ1bGVzKCkge1xuICB2YXIgUlVMRVMgPSBbXG4gICAgeyB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIHJ1bGVzOiBbIHsgJ21heGltdW0nOiBbJ2V4Y2x1c2l2ZU1heGltdW0nXSB9LFxuICAgICAgICAgICAgICAgeyAnbWluaW11bSc6IFsnZXhjbHVzaXZlTWluaW11bSddIH0sICdtdWx0aXBsZU9mJywgJ2Zvcm1hdCddIH0sXG4gICAgeyB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHJ1bGVzOiBbICdtYXhMZW5ndGgnLCAnbWluTGVuZ3RoJywgJ3BhdHRlcm4nLCAnZm9ybWF0JyBdIH0sXG4gICAgeyB0eXBlOiAnYXJyYXknLFxuICAgICAgcnVsZXM6IFsgJ21heEl0ZW1zJywgJ21pbkl0ZW1zJywgJ2l0ZW1zJywgJ2NvbnRhaW5zJywgJ3VuaXF1ZUl0ZW1zJyBdIH0sXG4gICAgeyB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIHJ1bGVzOiBbICdtYXhQcm9wZXJ0aWVzJywgJ21pblByb3BlcnRpZXMnLCAncmVxdWlyZWQnLCAnZGVwZW5kZW5jaWVzJywgJ3Byb3BlcnR5TmFtZXMnLFxuICAgICAgICAgICAgICAgeyAncHJvcGVydGllcyc6IFsnYWRkaXRpb25hbFByb3BlcnRpZXMnLCAncGF0dGVyblByb3BlcnRpZXMnXSB9IF0gfSxcbiAgICB7IHJ1bGVzOiBbICckcmVmJywgJ2NvbnN0JywgJ2VudW0nLCAnbm90JywgJ2FueU9mJywgJ29uZU9mJywgJ2FsbE9mJywgJ2lmJyBdIH1cbiAgXTtcblxuICB2YXIgQUxMID0gWyAndHlwZScsICckY29tbWVudCcgXTtcbiAgdmFyIEtFWVdPUkRTID0gW1xuICAgICckc2NoZW1hJywgJyRpZCcsICdpZCcsICckZGF0YScsICckYXN5bmMnLCAndGl0bGUnLFxuICAgICdkZXNjcmlwdGlvbicsICdkZWZhdWx0JywgJ2RlZmluaXRpb25zJyxcbiAgICAnZXhhbXBsZXMnLCAncmVhZE9ubHknLCAnd3JpdGVPbmx5JyxcbiAgICAnY29udGVudE1lZGlhVHlwZScsICdjb250ZW50RW5jb2RpbmcnLFxuICAgICdhZGRpdGlvbmFsSXRlbXMnLCAndGhlbicsICdlbHNlJ1xuICBdO1xuICB2YXIgVFlQRVMgPSBbICdudW1iZXInLCAnaW50ZWdlcicsICdzdHJpbmcnLCAnYXJyYXknLCAnb2JqZWN0JywgJ2Jvb2xlYW4nLCAnbnVsbCcgXTtcbiAgUlVMRVMuYWxsID0gdG9IYXNoKEFMTCk7XG4gIFJVTEVTLnR5cGVzID0gdG9IYXNoKFRZUEVTKTtcblxuICBSVUxFUy5mb3JFYWNoKGZ1bmN0aW9uIChncm91cCkge1xuICAgIGdyb3VwLnJ1bGVzID0gZ3JvdXAucnVsZXMubWFwKGZ1bmN0aW9uIChrZXl3b3JkKSB7XG4gICAgICB2YXIgaW1wbEtleXdvcmRzO1xuICAgICAgaWYgKHR5cGVvZiBrZXl3b3JkID09ICdvYmplY3QnKSB7XG4gICAgICAgIHZhciBrZXkgPSBPYmplY3Qua2V5cyhrZXl3b3JkKVswXTtcbiAgICAgICAgaW1wbEtleXdvcmRzID0ga2V5d29yZFtrZXldO1xuICAgICAgICBrZXl3b3JkID0ga2V5O1xuICAgICAgICBpbXBsS2V5d29yZHMuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICAgIEFMTC5wdXNoKGspO1xuICAgICAgICAgIFJVTEVTLmFsbFtrXSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgQUxMLnB1c2goa2V5d29yZCk7XG4gICAgICB2YXIgcnVsZSA9IFJVTEVTLmFsbFtrZXl3b3JkXSA9IHtcbiAgICAgICAga2V5d29yZDoga2V5d29yZCxcbiAgICAgICAgY29kZTogcnVsZU1vZHVsZXNba2V5d29yZF0sXG4gICAgICAgIGltcGxlbWVudHM6IGltcGxLZXl3b3Jkc1xuICAgICAgfTtcbiAgICAgIHJldHVybiBydWxlO1xuICAgIH0pO1xuXG4gICAgUlVMRVMuYWxsLiRjb21tZW50ID0ge1xuICAgICAga2V5d29yZDogJyRjb21tZW50JyxcbiAgICAgIGNvZGU6IHJ1bGVNb2R1bGVzLiRjb21tZW50XG4gICAgfTtcblxuICAgIGlmIChncm91cC50eXBlKSBSVUxFUy50eXBlc1tncm91cC50eXBlXSA9IGdyb3VwO1xuICB9KTtcblxuICBSVUxFUy5rZXl3b3JkcyA9IHRvSGFzaChBTEwuY29uY2F0KEtFWVdPUkRTKSk7XG4gIFJVTEVTLmN1c3RvbSA9IHt9O1xuXG4gIHJldHVybiBSVUxFUztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBLRVlXT1JEUyA9IFtcbiAgJ211bHRpcGxlT2YnLFxuICAnbWF4aW11bScsXG4gICdleGNsdXNpdmVNYXhpbXVtJyxcbiAgJ21pbmltdW0nLFxuICAnZXhjbHVzaXZlTWluaW11bScsXG4gICdtYXhMZW5ndGgnLFxuICAnbWluTGVuZ3RoJyxcbiAgJ3BhdHRlcm4nLFxuICAnYWRkaXRpb25hbEl0ZW1zJyxcbiAgJ21heEl0ZW1zJyxcbiAgJ21pbkl0ZW1zJyxcbiAgJ3VuaXF1ZUl0ZW1zJyxcbiAgJ21heFByb3BlcnRpZXMnLFxuICAnbWluUHJvcGVydGllcycsXG4gICdyZXF1aXJlZCcsXG4gICdhZGRpdGlvbmFsUHJvcGVydGllcycsXG4gICdlbnVtJyxcbiAgJ2Zvcm1hdCcsXG4gICdjb25zdCdcbl07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG1ldGFTY2hlbWEsIGtleXdvcmRzSnNvblBvaW50ZXJzKSB7XG4gIGZvciAodmFyIGk9MDsgaTxrZXl3b3Jkc0pzb25Qb2ludGVycy5sZW5ndGg7IGkrKykge1xuICAgIG1ldGFTY2hlbWEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1ldGFTY2hlbWEpKTtcbiAgICB2YXIgc2VnbWVudHMgPSBrZXl3b3Jkc0pzb25Qb2ludGVyc1tpXS5zcGxpdCgnLycpO1xuICAgIHZhciBrZXl3b3JkcyA9IG1ldGFTY2hlbWE7XG4gICAgdmFyIGo7XG4gICAgZm9yIChqPTE7IGo8c2VnbWVudHMubGVuZ3RoOyBqKyspXG4gICAgICBrZXl3b3JkcyA9IGtleXdvcmRzW3NlZ21lbnRzW2pdXTtcblxuICAgIGZvciAoaj0wOyBqPEtFWVdPUkRTLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIga2V5ID0gS0VZV09SRFNbal07XG4gICAgICB2YXIgc2NoZW1hID0ga2V5d29yZHNba2V5XTtcbiAgICAgIGlmIChzY2hlbWEpIHtcbiAgICAgICAga2V5d29yZHNba2V5XSA9IHtcbiAgICAgICAgICBhbnlPZjogW1xuICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgeyAkcmVmOiAnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Fqdi12YWxpZGF0b3IvYWp2L21hc3Rlci9saWIvcmVmcy9kYXRhLmpzb24jJyB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXRhU2NoZW1hO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIE1pc3NpbmdSZWZFcnJvciA9IHJlcXVpcmUoJy4vZXJyb3JfY2xhc3NlcycpLk1pc3NpbmdSZWY7XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGlsZUFzeW5jO1xuXG5cbi8qKlxuICogQ3JlYXRlcyB2YWxpZGF0aW5nIGZ1bmN0aW9uIGZvciBwYXNzZWQgc2NoZW1hIHdpdGggYXN5bmNocm9ub3VzIGxvYWRpbmcgb2YgbWlzc2luZyBzY2hlbWFzLlxuICogYGxvYWRTY2hlbWFgIG9wdGlvbiBzaG91bGQgYmUgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgc2NoZW1hIHVyaSBhbmQgcmV0dXJucyBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2NoZW1hLlxuICogQHRoaXMgIEFqdlxuICogQHBhcmFtIHtPYmplY3R9ICAgc2NoZW1hIHNjaGVtYSBvYmplY3RcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gIG1ldGEgb3B0aW9uYWwgdHJ1ZSB0byBjb21waWxlIG1ldGEtc2NoZW1hOyB0aGlzIHBhcmFtZXRlciBjYW4gYmUgc2tpcHBlZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgYW4gb3B0aW9uYWwgbm9kZS1zdHlsZSBjYWxsYmFjaywgaXQgaXMgY2FsbGVkIHdpdGggMiBwYXJhbWV0ZXJzOiBlcnJvciAob3IgbnVsbCkgYW5kIHZhbGlkYXRpbmcgZnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhIHZhbGlkYXRpbmcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGVBc3luYyhzY2hlbWEsIG1ldGEsIGNhbGxiYWNrKSB7XG4gIC8qIGVzbGludCBuby1zaGFkb3c6IDAgKi9cbiAgLyogZ2xvYmFsIFByb21pc2UgKi9cbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmICh0eXBlb2YgdGhpcy5fb3B0cy5sb2FkU2NoZW1hICE9ICdmdW5jdGlvbicpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLmxvYWRTY2hlbWEgc2hvdWxkIGJlIGEgZnVuY3Rpb24nKTtcblxuICBpZiAodHlwZW9mIG1ldGEgPT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gbWV0YTtcbiAgICBtZXRhID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdmFyIHAgPSBsb2FkTWV0YVNjaGVtYU9mKHNjaGVtYSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNjaGVtYU9iaiA9IHNlbGYuX2FkZFNjaGVtYShzY2hlbWEsIHVuZGVmaW5lZCwgbWV0YSk7XG4gICAgcmV0dXJuIHNjaGVtYU9iai52YWxpZGF0ZSB8fCBfY29tcGlsZUFzeW5jKHNjaGVtYU9iaik7XG4gIH0pO1xuXG4gIGlmIChjYWxsYmFjaykge1xuICAgIHAudGhlbihcbiAgICAgIGZ1bmN0aW9uKHYpIHsgY2FsbGJhY2sobnVsbCwgdik7IH0sXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gcDtcblxuXG4gIGZ1bmN0aW9uIGxvYWRNZXRhU2NoZW1hT2Yoc2NoKSB7XG4gICAgdmFyICRzY2hlbWEgPSBzY2guJHNjaGVtYTtcbiAgICByZXR1cm4gJHNjaGVtYSAmJiAhc2VsZi5nZXRTY2hlbWEoJHNjaGVtYSlcbiAgICAgICAgICAgID8gY29tcGlsZUFzeW5jLmNhbGwoc2VsZiwgeyAkcmVmOiAkc2NoZW1hIH0sIHRydWUpXG4gICAgICAgICAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cblxuICBmdW5jdGlvbiBfY29tcGlsZUFzeW5jKHNjaGVtYU9iaikge1xuICAgIHRyeSB7IHJldHVybiBzZWxmLl9jb21waWxlKHNjaGVtYU9iaik7IH1cbiAgICBjYXRjaChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE1pc3NpbmdSZWZFcnJvcikgcmV0dXJuIGxvYWRNaXNzaW5nU2NoZW1hKGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGxvYWRNaXNzaW5nU2NoZW1hKGUpIHtcbiAgICAgIHZhciByZWYgPSBlLm1pc3NpbmdTY2hlbWE7XG4gICAgICBpZiAoYWRkZWQocmVmKSkgdGhyb3cgbmV3IEVycm9yKCdTY2hlbWEgJyArIHJlZiArICcgaXMgbG9hZGVkIGJ1dCAnICsgZS5taXNzaW5nUmVmICsgJyBjYW5ub3QgYmUgcmVzb2x2ZWQnKTtcblxuICAgICAgdmFyIHNjaGVtYVByb21pc2UgPSBzZWxmLl9sb2FkaW5nU2NoZW1hc1tyZWZdO1xuICAgICAgaWYgKCFzY2hlbWFQcm9taXNlKSB7XG4gICAgICAgIHNjaGVtYVByb21pc2UgPSBzZWxmLl9sb2FkaW5nU2NoZW1hc1tyZWZdID0gc2VsZi5fb3B0cy5sb2FkU2NoZW1hKHJlZik7XG4gICAgICAgIHNjaGVtYVByb21pc2UudGhlbihyZW1vdmVQcm9taXNlLCByZW1vdmVQcm9taXNlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNjaGVtYVByb21pc2UudGhlbihmdW5jdGlvbiAoc2NoKSB7XG4gICAgICAgIGlmICghYWRkZWQocmVmKSkge1xuICAgICAgICAgIHJldHVybiBsb2FkTWV0YVNjaGVtYU9mKHNjaCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIWFkZGVkKHJlZikpIHNlbGYuYWRkU2NoZW1hKHNjaCwgcmVmLCB1bmRlZmluZWQsIG1ldGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2NvbXBpbGVBc3luYyhzY2hlbWFPYmopO1xuICAgICAgfSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlbW92ZVByb21pc2UoKSB7XG4gICAgICAgIGRlbGV0ZSBzZWxmLl9sb2FkaW5nU2NoZW1hc1tyZWZdO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBhZGRlZChyZWYpIHtcbiAgICAgICAgcmV0dXJuIHNlbGYuX3JlZnNbcmVmXSB8fCBzZWxmLl9zY2hlbWFzW3JlZl07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2N1c3RvbShpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGVycm9yS2V5d29yZDtcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICB2YXIgJHJ1bGUgPSB0aGlzLFxuICAgICRkZWZpbml0aW9uID0gJ2RlZmluaXRpb24nICsgJGx2bCxcbiAgICAkckRlZiA9ICRydWxlLmRlZmluaXRpb24sXG4gICAgJGNsb3NpbmdCcmFjZXMgPSAnJztcbiAgdmFyICRjb21waWxlLCAkaW5saW5lLCAkbWFjcm8sICRydWxlVmFsaWRhdGUsICR2YWxpZGF0ZUNvZGU7XG4gIGlmICgkaXNEYXRhICYmICRyRGVmLiRkYXRhKSB7XG4gICAgJHZhbGlkYXRlQ29kZSA9ICdrZXl3b3JkVmFsaWRhdGUnICsgJGx2bDtcbiAgICB2YXIgJHZhbGlkYXRlU2NoZW1hID0gJHJEZWYudmFsaWRhdGVTY2hlbWE7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJGRlZmluaXRpb24pICsgJyA9IFJVTEVTLmN1c3RvbVtcXCcnICsgKCRrZXl3b3JkKSArICdcXCddLmRlZmluaXRpb247IHZhciAnICsgKCR2YWxpZGF0ZUNvZGUpICsgJyA9ICcgKyAoJGRlZmluaXRpb24pICsgJy52YWxpZGF0ZTsnO1xuICB9IGVsc2Uge1xuICAgICRydWxlVmFsaWRhdGUgPSBpdC51c2VDdXN0b21SdWxlKCRydWxlLCAkc2NoZW1hLCBpdC5zY2hlbWEsIGl0KTtcbiAgICBpZiAoISRydWxlVmFsaWRhdGUpIHJldHVybjtcbiAgICAkc2NoZW1hVmFsdWUgPSAndmFsaWRhdGUuc2NoZW1hJyArICRzY2hlbWFQYXRoO1xuICAgICR2YWxpZGF0ZUNvZGUgPSAkcnVsZVZhbGlkYXRlLmNvZGU7XG4gICAgJGNvbXBpbGUgPSAkckRlZi5jb21waWxlO1xuICAgICRpbmxpbmUgPSAkckRlZi5pbmxpbmU7XG4gICAgJG1hY3JvID0gJHJEZWYubWFjcm87XG4gIH1cbiAgdmFyICRydWxlRXJycyA9ICR2YWxpZGF0ZUNvZGUgKyAnLmVycm9ycycsXG4gICAgJGkgPSAnaScgKyAkbHZsLFxuICAgICRydWxlRXJyID0gJ3J1bGVFcnInICsgJGx2bCxcbiAgICAkYXN5bmNLZXl3b3JkID0gJHJEZWYuYXN5bmM7XG4gIGlmICgkYXN5bmNLZXl3b3JkICYmICFpdC5hc3luYykgdGhyb3cgbmV3IEVycm9yKCdhc3luYyBrZXl3b3JkIGluIHN5bmMgc2NoZW1hJyk7XG4gIGlmICghKCRpbmxpbmUgfHwgJG1hY3JvKSkge1xuICAgIG91dCArPSAnJyArICgkcnVsZUVycnMpICsgJyA9IG51bGw7JztcbiAgfVxuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7dmFyICcgKyAoJHZhbGlkKSArICc7JztcbiAgaWYgKCRpc0RhdGEgJiYgJHJEZWYuJGRhdGEpIHtcbiAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgb3V0ICs9ICcgaWYgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgPT09IHVuZGVmaW5lZCkgeyAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZTsgfSBlbHNlIHsgJztcbiAgICBpZiAoJHZhbGlkYXRlU2NoZW1hKSB7XG4gICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkZGVmaW5pdGlvbikgKyAnLnZhbGlkYXRlU2NoZW1hKCcgKyAoJHNjaGVtYVZhbHVlKSArICcpOyBpZiAoJyArICgkdmFsaWQpICsgJykgeyAnO1xuICAgIH1cbiAgfVxuICBpZiAoJGlubGluZSkge1xuICAgIGlmICgkckRlZi5zdGF0ZW1lbnRzKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCRydWxlVmFsaWRhdGUudmFsaWRhdGUpICsgJyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkcnVsZVZhbGlkYXRlLnZhbGlkYXRlKSArICc7ICc7XG4gICAgfVxuICB9IGVsc2UgaWYgKCRtYWNybykge1xuICAgIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICAgIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAgICRpdC5sZXZlbCsrO1xuICAgIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgICAkaXQuc2NoZW1hID0gJHJ1bGVWYWxpZGF0ZS52YWxpZGF0ZTtcbiAgICAkaXQuc2NoZW1hUGF0aCA9ICcnO1xuICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCkucmVwbGFjZSgvdmFsaWRhdGVcXC5zY2hlbWEvZywgJHZhbGlkYXRlQ29kZSk7XG4gICAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gJHdhc0NvbXBvc2l0ZTtcbiAgICBvdXQgKz0gJyAnICsgKCRjb2RlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgb3V0ID0gJyc7XG4gICAgb3V0ICs9ICcgICcgKyAoJHZhbGlkYXRlQ29kZSkgKyAnLmNhbGwoICc7XG4gICAgaWYgKGl0Lm9wdHMucGFzc0NvbnRleHQpIHtcbiAgICAgIG91dCArPSAndGhpcyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnc2VsZic7XG4gICAgfVxuICAgIGlmICgkY29tcGlsZSB8fCAkckRlZi5zY2hlbWEgPT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyAsICcgKyAoJHNjaGVtYVZhbHVlKSArICcgLCAnICsgKCRkYXRhKSArICcgLCB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyAsIChkYXRhUGF0aCB8fCBcXCdcXCcpJztcbiAgICBpZiAoaXQuZXJyb3JQYXRoICE9ICdcIlwiJykge1xuICAgICAgb3V0ICs9ICcgKyAnICsgKGl0LmVycm9yUGF0aCk7XG4gICAgfVxuICAgIHZhciAkcGFyZW50RGF0YSA9ICRkYXRhTHZsID8gJ2RhdGEnICsgKCgkZGF0YUx2bCAtIDEpIHx8ICcnKSA6ICdwYXJlbnREYXRhJyxcbiAgICAgICRwYXJlbnREYXRhUHJvcGVydHkgPSAkZGF0YUx2bCA/IGl0LmRhdGFQYXRoQXJyWyRkYXRhTHZsXSA6ICdwYXJlbnREYXRhUHJvcGVydHknO1xuICAgIG91dCArPSAnICwgJyArICgkcGFyZW50RGF0YSkgKyAnICwgJyArICgkcGFyZW50RGF0YVByb3BlcnR5KSArICcgLCByb290RGF0YSApICAnO1xuICAgIHZhciBkZWZfY2FsbFJ1bGVWYWxpZGF0ZSA9IG91dDtcbiAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgIGlmICgkckRlZi5lcnJvcnMgPT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJztcbiAgICAgIGlmICgkYXN5bmNLZXl3b3JkKSB7XG4gICAgICAgIG91dCArPSAnYXdhaXQgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnJyArIChkZWZfY2FsbFJ1bGVWYWxpZGF0ZSkgKyAnOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJGFzeW5jS2V5d29yZCkge1xuICAgICAgICAkcnVsZUVycnMgPSAnY3VzdG9tRXJyb3JzJyArICRsdmw7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCRydWxlRXJycykgKyAnID0gbnVsbDsgdHJ5IHsgJyArICgkdmFsaWQpICsgJyA9IGF3YWl0ICcgKyAoZGVmX2NhbGxSdWxlVmFsaWRhdGUpICsgJzsgfSBjYXRjaCAoZSkgeyAnICsgKCR2YWxpZCkgKyAnID0gZmFsc2U7IGlmIChlIGluc3RhbmNlb2YgVmFsaWRhdGlvbkVycm9yKSAnICsgKCRydWxlRXJycykgKyAnID0gZS5lcnJvcnM7IGVsc2UgdGhyb3cgZTsgfSAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgJyArICgkcnVsZUVycnMpICsgJyA9IG51bGw7ICcgKyAoJHZhbGlkKSArICcgPSAnICsgKGRlZl9jYWxsUnVsZVZhbGlkYXRlKSArICc7ICc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkckRlZi5tb2RpZnlpbmcpIHtcbiAgICBvdXQgKz0gJyBpZiAoJyArICgkcGFyZW50RGF0YSkgKyAnKSAnICsgKCRkYXRhKSArICcgPSAnICsgKCRwYXJlbnREYXRhKSArICdbJyArICgkcGFyZW50RGF0YVByb3BlcnR5KSArICddOyc7XG4gIH1cbiAgb3V0ICs9ICcnICsgKCRjbG9zaW5nQnJhY2VzKTtcbiAgaWYgKCRyRGVmLnZhbGlkKSB7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIGlmICggJztcbiAgICBpZiAoJHJEZWYudmFsaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3V0ICs9ICcgISc7XG4gICAgICBpZiAoJG1hY3JvKSB7XG4gICAgICAgIG91dCArPSAnJyArICgkbmV4dFZhbGlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkdmFsaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCEkckRlZi52YWxpZCkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnKSB7ICc7XG4gICAgJGVycm9yS2V5d29yZCA9ICRydWxlLmtleXdvcmQ7XG4gICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgIG91dCA9ICcnO1xuICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ2N1c3RvbScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsga2V5d29yZDogXFwnJyArICgkcnVsZS5rZXl3b3JkKSArICdcXCcgfSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIHBhc3MgXCInICsgKCRydWxlLmtleXdvcmQpICsgJ1wiIGtleXdvcmQgdmFsaWRhdGlvblxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgfVxuICAgIHZhciBkZWZfY3VzdG9tRXJyb3IgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoJGlubGluZSkge1xuICAgICAgaWYgKCRyRGVmLmVycm9ycykge1xuICAgICAgICBpZiAoJHJEZWYuZXJyb3JzICE9ICdmdWxsJykge1xuICAgICAgICAgIG91dCArPSAnICBmb3IgKHZhciAnICsgKCRpKSArICc9JyArICgkZXJycykgKyAnOyAnICsgKCRpKSArICc8ZXJyb3JzOyAnICsgKCRpKSArICcrKykgeyB2YXIgJyArICgkcnVsZUVycikgKyAnID0gdkVycm9yc1snICsgKCRpKSArICddOyBpZiAoJyArICgkcnVsZUVycikgKyAnLmRhdGFQYXRoID09PSB1bmRlZmluZWQpICcgKyAoJHJ1bGVFcnIpICsgJy5kYXRhUGF0aCA9IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJzsgaWYgKCcgKyAoJHJ1bGVFcnIpICsgJy5zY2hlbWFQYXRoID09PSB1bmRlZmluZWQpIHsgJyArICgkcnVsZUVycikgKyAnLnNjaGVtYVBhdGggPSBcIicgKyAoJGVyclNjaGVtYVBhdGgpICsgJ1wiOyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgJyArICgkcnVsZUVycikgKyAnLnNjaGVtYSA9ICcgKyAoJHNjaGVtYVZhbHVlKSArICc7ICcgKyAoJHJ1bGVFcnIpICsgJy5kYXRhID0gJyArICgkZGF0YSkgKyAnOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgkckRlZi5lcnJvcnMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgJyArIChkZWZfY3VzdG9tRXJyb3IpICsgJyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCRlcnJzKSArICcgPT0gZXJyb3JzKSB7ICcgKyAoZGVmX2N1c3RvbUVycm9yKSArICcgfSBlbHNlIHsgIGZvciAodmFyICcgKyAoJGkpICsgJz0nICsgKCRlcnJzKSArICc7ICcgKyAoJGkpICsgJzxlcnJvcnM7ICcgKyAoJGkpICsgJysrKSB7IHZhciAnICsgKCRydWxlRXJyKSArICcgPSB2RXJyb3JzWycgKyAoJGkpICsgJ107IGlmICgnICsgKCRydWxlRXJyKSArICcuZGF0YVBhdGggPT09IHVuZGVmaW5lZCkgJyArICgkcnVsZUVycikgKyAnLmRhdGFQYXRoID0gKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnOyBpZiAoJyArICgkcnVsZUVycikgKyAnLnNjaGVtYVBhdGggPT09IHVuZGVmaW5lZCkgeyAnICsgKCRydWxlRXJyKSArICcuc2NoZW1hUGF0aCA9IFwiJyArICgkZXJyU2NoZW1hUGF0aCkgKyAnXCI7IH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKCRydWxlRXJyKSArICcuc2NoZW1hID0gJyArICgkc2NoZW1hVmFsdWUpICsgJzsgJyArICgkcnVsZUVycikgKyAnLmRhdGEgPSAnICsgKCRkYXRhKSArICc7ICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIH0gfSAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgkbWFjcm8pIHtcbiAgICAgIG91dCArPSAnICAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICdjdXN0b20nKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGtleXdvcmQ6IFxcJycgKyAoJHJ1bGUua2V5d29yZCkgKyAnXFwnIH0gJztcbiAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgcGFzcyBcIicgKyAoJHJ1bGUua2V5d29yZCkgKyAnXCIga2V5d29yZCB2YWxpZGF0aW9uXFwnICc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcih2RXJyb3JzKTsgJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSB2RXJyb3JzOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCRyRGVmLmVycm9ycyA9PT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgJyArIChkZWZfY3VzdG9tRXJyb3IpICsgJyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKEFycmF5LmlzQXJyYXkoJyArICgkcnVsZUVycnMpICsgJykpIHsgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSAnICsgKCRydWxlRXJycykgKyAnOyBlbHNlIHZFcnJvcnMgPSB2RXJyb3JzLmNvbmNhdCgnICsgKCRydWxlRXJycykgKyAnKTsgZXJyb3JzID0gdkVycm9ycy5sZW5ndGg7ICBmb3IgKHZhciAnICsgKCRpKSArICc9JyArICgkZXJycykgKyAnOyAnICsgKCRpKSArICc8ZXJyb3JzOyAnICsgKCRpKSArICcrKykgeyB2YXIgJyArICgkcnVsZUVycikgKyAnID0gdkVycm9yc1snICsgKCRpKSArICddOyBpZiAoJyArICgkcnVsZUVycikgKyAnLmRhdGFQYXRoID09PSB1bmRlZmluZWQpICcgKyAoJHJ1bGVFcnIpICsgJy5kYXRhUGF0aCA9IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJzsgICcgKyAoJHJ1bGVFcnIpICsgJy5zY2hlbWFQYXRoID0gXCInICsgKCRlcnJTY2hlbWFQYXRoKSArICdcIjsgICc7XG4gICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyAnICsgKCRydWxlRXJyKSArICcuc2NoZW1hID0gJyArICgkc2NoZW1hVmFsdWUpICsgJzsgJyArICgkcnVsZUVycikgKyAnLmRhdGEgPSAnICsgKCRkYXRhKSArICc7ICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgfSB9IGVsc2UgeyAnICsgKGRlZl9jdXN0b21FcnJvcikgKyAnIH0gJztcbiAgICAgIH1cbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG1ldGFTY2hlbWEgPSByZXF1aXJlKCcuL3JlZnMvanNvbi1zY2hlbWEtZHJhZnQtMDcuanNvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgJGlkOiAnaHR0cHM6Ly9naXRodWIuY29tL2Fqdi12YWxpZGF0b3IvYWp2L2Jsb2IvbWFzdGVyL2xpYi9kZWZpbml0aW9uX3NjaGVtYS5qcycsXG4gIGRlZmluaXRpb25zOiB7XG4gICAgc2ltcGxlVHlwZXM6IG1ldGFTY2hlbWEuZGVmaW5pdGlvbnMuc2ltcGxlVHlwZXNcbiAgfSxcbiAgdHlwZTogJ29iamVjdCcsXG4gIGRlcGVuZGVuY2llczoge1xuICAgIHNjaGVtYTogWyd2YWxpZGF0ZSddLFxuICAgICRkYXRhOiBbJ3ZhbGlkYXRlJ10sXG4gICAgc3RhdGVtZW50czogWydpbmxpbmUnXSxcbiAgICB2YWxpZDoge25vdDoge3JlcXVpcmVkOiBbJ21hY3JvJ119fVxuICB9LFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgdHlwZTogbWV0YVNjaGVtYS5wcm9wZXJ0aWVzLnR5cGUsXG4gICAgc2NoZW1hOiB7dHlwZTogJ2Jvb2xlYW4nfSxcbiAgICBzdGF0ZW1lbnRzOiB7dHlwZTogJ2Jvb2xlYW4nfSxcbiAgICBkZXBlbmRlbmNpZXM6IHtcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICBpdGVtczoge3R5cGU6ICdzdHJpbmcnfVxuICAgIH0sXG4gICAgbWV0YVNjaGVtYToge3R5cGU6ICdvYmplY3QnfSxcbiAgICBtb2RpZnlpbmc6IHt0eXBlOiAnYm9vbGVhbid9LFxuICAgIHZhbGlkOiB7dHlwZTogJ2Jvb2xlYW4nfSxcbiAgICAkZGF0YToge3R5cGU6ICdib29sZWFuJ30sXG4gICAgYXN5bmM6IHt0eXBlOiAnYm9vbGVhbid9LFxuICAgIGVycm9yczoge1xuICAgICAgYW55T2Y6IFtcbiAgICAgICAge3R5cGU6ICdib29sZWFuJ30sXG4gICAgICAgIHtjb25zdDogJ2Z1bGwnfVxuICAgICAgXVxuICAgIH1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIElERU5USUZJRVIgPSAvXlthLXpfJF1bYS16MC05XyQtXSokL2k7XG52YXIgY3VzdG9tUnVsZUNvZGUgPSByZXF1aXJlKCcuL2RvdGpzL2N1c3RvbScpO1xudmFyIGRlZmluaXRpb25TY2hlbWEgPSByZXF1aXJlKCcuL2RlZmluaXRpb25fc2NoZW1hJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhZGQ6IGFkZEtleXdvcmQsXG4gIGdldDogZ2V0S2V5d29yZCxcbiAgcmVtb3ZlOiByZW1vdmVLZXl3b3JkLFxuICB2YWxpZGF0ZTogdmFsaWRhdGVLZXl3b3JkXG59O1xuXG5cbi8qKlxuICogRGVmaW5lIGN1c3RvbSBrZXl3b3JkXG4gKiBAdGhpcyAgQWp2XG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5d29yZCBjdXN0b20ga2V5d29yZCwgc2hvdWxkIGJlIHVuaXF1ZSAoaW5jbHVkaW5nIGRpZmZlcmVudCBmcm9tIGFsbCBzdGFuZGFyZCwgY3VzdG9tIGFuZCBtYWNybyBrZXl3b3JkcykuXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmaW5pdGlvbiBrZXl3b3JkIGRlZmluaXRpb24gb2JqZWN0IHdpdGggcHJvcGVydGllcyBgdHlwZWAgKHR5cGUocykgd2hpY2ggdGhlIGtleXdvcmQgYXBwbGllcyB0byksIGB2YWxpZGF0ZWAgb3IgYGNvbXBpbGVgLlxuICogQHJldHVybiB7QWp2fSB0aGlzIGZvciBtZXRob2QgY2hhaW5pbmdcbiAqL1xuZnVuY3Rpb24gYWRkS2V5d29yZChrZXl3b3JkLCBkZWZpbml0aW9uKSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgLyogZXNsaW50IG5vLXNoYWRvdzogMCAqL1xuICB2YXIgUlVMRVMgPSB0aGlzLlJVTEVTO1xuICBpZiAoUlVMRVMua2V5d29yZHNba2V5d29yZF0pXG4gICAgdGhyb3cgbmV3IEVycm9yKCdLZXl3b3JkICcgKyBrZXl3b3JkICsgJyBpcyBhbHJlYWR5IGRlZmluZWQnKTtcblxuICBpZiAoIUlERU5USUZJRVIudGVzdChrZXl3b3JkKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0tleXdvcmQgJyArIGtleXdvcmQgKyAnIGlzIG5vdCBhIHZhbGlkIGlkZW50aWZpZXInKTtcblxuICBpZiAoZGVmaW5pdGlvbikge1xuICAgIHRoaXMudmFsaWRhdGVLZXl3b3JkKGRlZmluaXRpb24sIHRydWUpO1xuXG4gICAgdmFyIGRhdGFUeXBlID0gZGVmaW5pdGlvbi50eXBlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFUeXBlKSkge1xuICAgICAgZm9yICh2YXIgaT0wOyBpPGRhdGFUeXBlLmxlbmd0aDsgaSsrKVxuICAgICAgICBfYWRkUnVsZShrZXl3b3JkLCBkYXRhVHlwZVtpXSwgZGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9hZGRSdWxlKGtleXdvcmQsIGRhdGFUeXBlLCBkZWZpbml0aW9uKTtcbiAgICB9XG5cbiAgICB2YXIgbWV0YVNjaGVtYSA9IGRlZmluaXRpb24ubWV0YVNjaGVtYTtcbiAgICBpZiAobWV0YVNjaGVtYSkge1xuICAgICAgaWYgKGRlZmluaXRpb24uJGRhdGEgJiYgdGhpcy5fb3B0cy4kZGF0YSkge1xuICAgICAgICBtZXRhU2NoZW1hID0ge1xuICAgICAgICAgIGFueU9mOiBbXG4gICAgICAgICAgICBtZXRhU2NoZW1hLFxuICAgICAgICAgICAgeyAnJHJlZic6ICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWp2LXZhbGlkYXRvci9hanYvbWFzdGVyL2xpYi9yZWZzL2RhdGEuanNvbiMnIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZpbml0aW9uLnZhbGlkYXRlU2NoZW1hID0gdGhpcy5jb21waWxlKG1ldGFTY2hlbWEsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIFJVTEVTLmtleXdvcmRzW2tleXdvcmRdID0gUlVMRVMuYWxsW2tleXdvcmRdID0gdHJ1ZTtcblxuXG4gIGZ1bmN0aW9uIF9hZGRSdWxlKGtleXdvcmQsIGRhdGFUeXBlLCBkZWZpbml0aW9uKSB7XG4gICAgdmFyIHJ1bGVHcm91cDtcbiAgICBmb3IgKHZhciBpPTA7IGk8UlVMRVMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByZyA9IFJVTEVTW2ldO1xuICAgICAgaWYgKHJnLnR5cGUgPT0gZGF0YVR5cGUpIHtcbiAgICAgICAgcnVsZUdyb3VwID0gcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcnVsZUdyb3VwKSB7XG4gICAgICBydWxlR3JvdXAgPSB7IHR5cGU6IGRhdGFUeXBlLCBydWxlczogW10gfTtcbiAgICAgIFJVTEVTLnB1c2gocnVsZUdyb3VwKTtcbiAgICB9XG5cbiAgICB2YXIgcnVsZSA9IHtcbiAgICAgIGtleXdvcmQ6IGtleXdvcmQsXG4gICAgICBkZWZpbml0aW9uOiBkZWZpbml0aW9uLFxuICAgICAgY3VzdG9tOiB0cnVlLFxuICAgICAgY29kZTogY3VzdG9tUnVsZUNvZGUsXG4gICAgICBpbXBsZW1lbnRzOiBkZWZpbml0aW9uLmltcGxlbWVudHNcbiAgICB9O1xuICAgIHJ1bGVHcm91cC5ydWxlcy5wdXNoKHJ1bGUpO1xuICAgIFJVTEVTLmN1c3RvbVtrZXl3b3JkXSA9IHJ1bGU7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuXG4vKipcbiAqIEdldCBrZXl3b3JkXG4gKiBAdGhpcyAgQWp2XG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5d29yZCBwcmUtZGVmaW5lZCBvciBjdXN0b20ga2V5d29yZC5cbiAqIEByZXR1cm4ge09iamVjdHxCb29sZWFufSBjdXN0b20ga2V5d29yZCBkZWZpbml0aW9uLCBgdHJ1ZWAgaWYgaXQgaXMgYSBwcmVkZWZpbmVkIGtleXdvcmQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBnZXRLZXl3b3JkKGtleXdvcmQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgcnVsZSA9IHRoaXMuUlVMRVMuY3VzdG9tW2tleXdvcmRdO1xuICByZXR1cm4gcnVsZSA/IHJ1bGUuZGVmaW5pdGlvbiA6IHRoaXMuUlVMRVMua2V5d29yZHNba2V5d29yZF0gfHwgZmFsc2U7XG59XG5cblxuLyoqXG4gKiBSZW1vdmUga2V5d29yZFxuICogQHRoaXMgIEFqdlxuICogQHBhcmFtIHtTdHJpbmd9IGtleXdvcmQgcHJlLWRlZmluZWQgb3IgY3VzdG9tIGtleXdvcmQuXG4gKiBAcmV0dXJuIHtBanZ9IHRoaXMgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICovXG5mdW5jdGlvbiByZW1vdmVLZXl3b3JkKGtleXdvcmQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgUlVMRVMgPSB0aGlzLlJVTEVTO1xuICBkZWxldGUgUlVMRVMua2V5d29yZHNba2V5d29yZF07XG4gIGRlbGV0ZSBSVUxFUy5hbGxba2V5d29yZF07XG4gIGRlbGV0ZSBSVUxFUy5jdXN0b21ba2V5d29yZF07XG4gIGZvciAodmFyIGk9MDsgaTxSVUxFUy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBydWxlcyA9IFJVTEVTW2ldLnJ1bGVzO1xuICAgIGZvciAodmFyIGo9MDsgajxydWxlcy5sZW5ndGg7IGorKykge1xuICAgICAgaWYgKHJ1bGVzW2pdLmtleXdvcmQgPT0ga2V5d29yZCkge1xuICAgICAgICBydWxlcy5zcGxpY2UoaiwgMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxuXG4vKipcbiAqIFZhbGlkYXRlIGtleXdvcmQgZGVmaW5pdGlvblxuICogQHRoaXMgIEFqdlxuICogQHBhcmFtIHtPYmplY3R9IGRlZmluaXRpb24ga2V5d29yZCBkZWZpbml0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gdGhyb3dFcnJvciB0cnVlIHRvIHRocm93IGV4Y2VwdGlvbiBpZiBkZWZpbml0aW9uIGlzIGludmFsaWRcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlS2V5d29yZChkZWZpbml0aW9uLCB0aHJvd0Vycm9yKSB7XG4gIHZhbGlkYXRlS2V5d29yZC5lcnJvcnMgPSBudWxsO1xuICB2YXIgdiA9IHRoaXMuX3ZhbGlkYXRlS2V5d29yZCA9IHRoaXMuX3ZhbGlkYXRlS2V5d29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuY29tcGlsZShkZWZpbml0aW9uU2NoZW1hLCB0cnVlKTtcblxuICBpZiAodihkZWZpbml0aW9uKSkgcmV0dXJuIHRydWU7XG4gIHZhbGlkYXRlS2V5d29yZC5lcnJvcnMgPSB2LmVycm9ycztcbiAgaWYgKHRocm93RXJyb3IpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdjdXN0b20ga2V5d29yZCBkZWZpbml0aW9uIGlzIGludmFsaWQ6ICcgICsgdGhpcy5lcnJvcnNUZXh0KHYuZXJyb3JzKSk7XG4gIGVsc2VcbiAgICByZXR1cm4gZmFsc2U7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjb21waWxlU2NoZW1hID0gcmVxdWlyZSgnLi9jb21waWxlJylcbiAgLCByZXNvbHZlID0gcmVxdWlyZSgnLi9jb21waWxlL3Jlc29sdmUnKVxuICAsIENhY2hlID0gcmVxdWlyZSgnLi9jYWNoZScpXG4gICwgU2NoZW1hT2JqZWN0ID0gcmVxdWlyZSgnLi9jb21waWxlL3NjaGVtYV9vYmonKVxuICAsIHN0YWJsZVN0cmluZ2lmeSA9IHJlcXVpcmUoJ2Zhc3QtanNvbi1zdGFibGUtc3RyaW5naWZ5JylcbiAgLCBmb3JtYXRzID0gcmVxdWlyZSgnLi9jb21waWxlL2Zvcm1hdHMnKVxuICAsIHJ1bGVzID0gcmVxdWlyZSgnLi9jb21waWxlL3J1bGVzJylcbiAgLCAkZGF0YU1ldGFTY2hlbWEgPSByZXF1aXJlKCcuL2RhdGEnKVxuICAsIHV0aWwgPSByZXF1aXJlKCcuL2NvbXBpbGUvdXRpbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFqdjtcblxuQWp2LnByb3RvdHlwZS52YWxpZGF0ZSA9IHZhbGlkYXRlO1xuQWp2LnByb3RvdHlwZS5jb21waWxlID0gY29tcGlsZTtcbkFqdi5wcm90b3R5cGUuYWRkU2NoZW1hID0gYWRkU2NoZW1hO1xuQWp2LnByb3RvdHlwZS5hZGRNZXRhU2NoZW1hID0gYWRkTWV0YVNjaGVtYTtcbkFqdi5wcm90b3R5cGUudmFsaWRhdGVTY2hlbWEgPSB2YWxpZGF0ZVNjaGVtYTtcbkFqdi5wcm90b3R5cGUuZ2V0U2NoZW1hID0gZ2V0U2NoZW1hO1xuQWp2LnByb3RvdHlwZS5yZW1vdmVTY2hlbWEgPSByZW1vdmVTY2hlbWE7XG5BanYucHJvdG90eXBlLmFkZEZvcm1hdCA9IGFkZEZvcm1hdDtcbkFqdi5wcm90b3R5cGUuZXJyb3JzVGV4dCA9IGVycm9yc1RleHQ7XG5cbkFqdi5wcm90b3R5cGUuX2FkZFNjaGVtYSA9IF9hZGRTY2hlbWE7XG5BanYucHJvdG90eXBlLl9jb21waWxlID0gX2NvbXBpbGU7XG5cbkFqdi5wcm90b3R5cGUuY29tcGlsZUFzeW5jID0gcmVxdWlyZSgnLi9jb21waWxlL2FzeW5jJyk7XG52YXIgY3VzdG9tS2V5d29yZCA9IHJlcXVpcmUoJy4va2V5d29yZCcpO1xuQWp2LnByb3RvdHlwZS5hZGRLZXl3b3JkID0gY3VzdG9tS2V5d29yZC5hZGQ7XG5BanYucHJvdG90eXBlLmdldEtleXdvcmQgPSBjdXN0b21LZXl3b3JkLmdldDtcbkFqdi5wcm90b3R5cGUucmVtb3ZlS2V5d29yZCA9IGN1c3RvbUtleXdvcmQucmVtb3ZlO1xuQWp2LnByb3RvdHlwZS52YWxpZGF0ZUtleXdvcmQgPSBjdXN0b21LZXl3b3JkLnZhbGlkYXRlO1xuXG52YXIgZXJyb3JDbGFzc2VzID0gcmVxdWlyZSgnLi9jb21waWxlL2Vycm9yX2NsYXNzZXMnKTtcbkFqdi5WYWxpZGF0aW9uRXJyb3IgPSBlcnJvckNsYXNzZXMuVmFsaWRhdGlvbjtcbkFqdi5NaXNzaW5nUmVmRXJyb3IgPSBlcnJvckNsYXNzZXMuTWlzc2luZ1JlZjtcbkFqdi4kZGF0YU1ldGFTY2hlbWEgPSAkZGF0YU1ldGFTY2hlbWE7XG5cbnZhciBNRVRBX1NDSEVNQV9JRCA9ICdodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSc7XG5cbnZhciBNRVRBX0lHTk9SRV9PUFRJT05TID0gWyAncmVtb3ZlQWRkaXRpb25hbCcsICd1c2VEZWZhdWx0cycsICdjb2VyY2VUeXBlcycsICdzdHJpY3REZWZhdWx0cycgXTtcbnZhciBNRVRBX1NVUFBPUlRfREFUQSA9IFsnL3Byb3BlcnRpZXMnXTtcblxuLyoqXG4gKiBDcmVhdGVzIHZhbGlkYXRvciBpbnN0YW5jZS5cbiAqIFVzYWdlOiBgQWp2KG9wdHMpYFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgb3B0aW9uYWwgb3B0aW9uc1xuICogQHJldHVybiB7T2JqZWN0fSBhanYgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gQWp2KG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEFqdikpIHJldHVybiBuZXcgQWp2KG9wdHMpO1xuICBvcHRzID0gdGhpcy5fb3B0cyA9IHV0aWwuY29weShvcHRzKSB8fCB7fTtcbiAgc2V0TG9nZ2VyKHRoaXMpO1xuICB0aGlzLl9zY2hlbWFzID0ge307XG4gIHRoaXMuX3JlZnMgPSB7fTtcbiAgdGhpcy5fZnJhZ21lbnRzID0ge307XG4gIHRoaXMuX2Zvcm1hdHMgPSBmb3JtYXRzKG9wdHMuZm9ybWF0KTtcblxuICB0aGlzLl9jYWNoZSA9IG9wdHMuY2FjaGUgfHwgbmV3IENhY2hlO1xuICB0aGlzLl9sb2FkaW5nU2NoZW1hcyA9IHt9O1xuICB0aGlzLl9jb21waWxhdGlvbnMgPSBbXTtcbiAgdGhpcy5SVUxFUyA9IHJ1bGVzKCk7XG4gIHRoaXMuX2dldElkID0gY2hvb3NlR2V0SWQob3B0cyk7XG5cbiAgb3B0cy5sb29wUmVxdWlyZWQgPSBvcHRzLmxvb3BSZXF1aXJlZCB8fCBJbmZpbml0eTtcbiAgaWYgKG9wdHMuZXJyb3JEYXRhUGF0aCA9PSAncHJvcGVydHknKSBvcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkgPSB0cnVlO1xuICBpZiAob3B0cy5zZXJpYWxpemUgPT09IHVuZGVmaW5lZCkgb3B0cy5zZXJpYWxpemUgPSBzdGFibGVTdHJpbmdpZnk7XG4gIHRoaXMuX21ldGFPcHRzID0gZ2V0TWV0YVNjaGVtYU9wdGlvbnModGhpcyk7XG5cbiAgaWYgKG9wdHMuZm9ybWF0cykgYWRkSW5pdGlhbEZvcm1hdHModGhpcyk7XG4gIGlmIChvcHRzLmtleXdvcmRzKSBhZGRJbml0aWFsS2V5d29yZHModGhpcyk7XG4gIGFkZERlZmF1bHRNZXRhU2NoZW1hKHRoaXMpO1xuICBpZiAodHlwZW9mIG9wdHMubWV0YSA9PSAnb2JqZWN0JykgdGhpcy5hZGRNZXRhU2NoZW1hKG9wdHMubWV0YSk7XG4gIGlmIChvcHRzLm51bGxhYmxlKSB0aGlzLmFkZEtleXdvcmQoJ251bGxhYmxlJywge21ldGFTY2hlbWE6IHt0eXBlOiAnYm9vbGVhbid9fSk7XG4gIGFkZEluaXRpYWxTY2hlbWFzKHRoaXMpO1xufVxuXG5cblxuLyoqXG4gKiBWYWxpZGF0ZSBkYXRhIHVzaW5nIHNjaGVtYVxuICogU2NoZW1hIHdpbGwgYmUgY29tcGlsZWQgYW5kIGNhY2hlZCAodXNpbmcgc2VyaWFsaXplZCBKU09OIGFzIGtleS4gW2Zhc3QtanNvbi1zdGFibGUtc3RyaW5naWZ5XShodHRwczovL2dpdGh1Yi5jb20vZXBvYmVyZXpraW4vZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnkpIGlzIHVzZWQgdG8gc2VyaWFsaXplLlxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge1N0cmluZ3xPYmplY3R9IHNjaGVtYUtleVJlZiBrZXksIHJlZiBvciBzY2hlbWEgb2JqZWN0XG4gKiBAcGFyYW0gIHtBbnl9IGRhdGEgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJuIHtCb29sZWFufSB2YWxpZGF0aW9uIHJlc3VsdC4gRXJyb3JzIGZyb20gdGhlIGxhc3QgdmFsaWRhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBpbiBgYWp2LmVycm9yc2AgKGFuZCBhbHNvIGluIGNvbXBpbGVkIHNjaGVtYTogYHNjaGVtYS5lcnJvcnNgKS5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGUoc2NoZW1hS2V5UmVmLCBkYXRhKSB7XG4gIHZhciB2O1xuICBpZiAodHlwZW9mIHNjaGVtYUtleVJlZiA9PSAnc3RyaW5nJykge1xuICAgIHYgPSB0aGlzLmdldFNjaGVtYShzY2hlbWFLZXlSZWYpO1xuICAgIGlmICghdikgdGhyb3cgbmV3IEVycm9yKCdubyBzY2hlbWEgd2l0aCBrZXkgb3IgcmVmIFwiJyArIHNjaGVtYUtleVJlZiArICdcIicpO1xuICB9IGVsc2Uge1xuICAgIHZhciBzY2hlbWFPYmogPSB0aGlzLl9hZGRTY2hlbWEoc2NoZW1hS2V5UmVmKTtcbiAgICB2ID0gc2NoZW1hT2JqLnZhbGlkYXRlIHx8IHRoaXMuX2NvbXBpbGUoc2NoZW1hT2JqKTtcbiAgfVxuXG4gIHZhciB2YWxpZCA9IHYoZGF0YSk7XG4gIGlmICh2LiRhc3luYyAhPT0gdHJ1ZSkgdGhpcy5lcnJvcnMgPSB2LmVycm9ycztcbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5cbi8qKlxuICogQ3JlYXRlIHZhbGlkYXRpbmcgZnVuY3Rpb24gZm9yIHBhc3NlZCBzY2hlbWEuXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7T2JqZWN0fSBzY2hlbWEgc2NoZW1hIG9iamVjdFxuICogQHBhcmFtICB7Qm9vbGVhbn0gX21ldGEgdHJ1ZSBpZiBzY2hlbWEgaXMgYSBtZXRhLXNjaGVtYS4gVXNlZCBpbnRlcm5hbGx5IHRvIGNvbXBpbGUgbWV0YSBzY2hlbWFzIG9mIGN1c3RvbSBrZXl3b3Jkcy5cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSB2YWxpZGF0aW5nIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGUoc2NoZW1hLCBfbWV0YSkge1xuICB2YXIgc2NoZW1hT2JqID0gdGhpcy5fYWRkU2NoZW1hKHNjaGVtYSwgdW5kZWZpbmVkLCBfbWV0YSk7XG4gIHJldHVybiBzY2hlbWFPYmoudmFsaWRhdGUgfHwgdGhpcy5fY29tcGlsZShzY2hlbWFPYmopO1xufVxuXG5cbi8qKlxuICogQWRkcyBzY2hlbWEgdG8gdGhlIGluc3RhbmNlLlxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBzY2hlbWEgc2NoZW1hIG9yIGFycmF5IG9mIHNjaGVtYXMuIElmIGFycmF5IGlzIHBhc3NlZCwgYGtleWAgYW5kIG90aGVyIHBhcmFtZXRlcnMgd2lsbCBiZSBpZ25vcmVkLlxuICogQHBhcmFtIHtTdHJpbmd9IGtleSBPcHRpb25hbCBzY2hlbWEga2V5LiBDYW4gYmUgcGFzc2VkIHRvIGB2YWxpZGF0ZWAgbWV0aG9kIGluc3RlYWQgb2Ygc2NoZW1hIG9iamVjdCBvciBpZC9yZWYuIE9uZSBzY2hlbWEgcGVyIGluc3RhbmNlIGNhbiBoYXZlIGVtcHR5IGBpZGAgYW5kIGBrZXlgLlxuICogQHBhcmFtIHtCb29sZWFufSBfc2tpcFZhbGlkYXRpb24gdHJ1ZSB0byBza2lwIHNjaGVtYSB2YWxpZGF0aW9uLiBVc2VkIGludGVybmFsbHksIG9wdGlvbiB2YWxpZGF0ZVNjaGVtYSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLlxuICogQHBhcmFtIHtCb29sZWFufSBfbWV0YSB0cnVlIGlmIHNjaGVtYSBpcyBhIG1ldGEtc2NoZW1hLiBVc2VkIGludGVybmFsbHksIGFkZE1ldGFTY2hlbWEgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC5cbiAqIEByZXR1cm4ge0Fqdn0gdGhpcyBmb3IgbWV0aG9kIGNoYWluaW5nXG4gKi9cbmZ1bmN0aW9uIGFkZFNjaGVtYShzY2hlbWEsIGtleSwgX3NraXBWYWxpZGF0aW9uLCBfbWV0YSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKXtcbiAgICBmb3IgKHZhciBpPTA7IGk8c2NoZW1hLmxlbmd0aDsgaSsrKSB0aGlzLmFkZFNjaGVtYShzY2hlbWFbaV0sIHVuZGVmaW5lZCwgX3NraXBWYWxpZGF0aW9uLCBfbWV0YSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdmFyIGlkID0gdGhpcy5fZ2V0SWQoc2NoZW1hKTtcbiAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGlkICE9ICdzdHJpbmcnKVxuICAgIHRocm93IG5ldyBFcnJvcignc2NoZW1hIGlkIG11c3QgYmUgc3RyaW5nJyk7XG4gIGtleSA9IHJlc29sdmUubm9ybWFsaXplSWQoa2V5IHx8IGlkKTtcbiAgY2hlY2tVbmlxdWUodGhpcywga2V5KTtcbiAgdGhpcy5fc2NoZW1hc1trZXldID0gdGhpcy5fYWRkU2NoZW1hKHNjaGVtYSwgX3NraXBWYWxpZGF0aW9uLCBfbWV0YSwgdHJ1ZSk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5cbi8qKlxuICogQWRkIHNjaGVtYSB0aGF0IHdpbGwgYmUgdXNlZCB0byB2YWxpZGF0ZSBvdGhlciBzY2hlbWFzXG4gKiBvcHRpb25zIGluIE1FVEFfSUdOT1JFX09QVElPTlMgYXJlIGFsd2F5IHNldCB0byBmYWxzZVxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSB7T2JqZWN0fSBzY2hlbWEgc2NoZW1hIG9iamVjdFxuICogQHBhcmFtIHtTdHJpbmd9IGtleSBvcHRpb25hbCBzY2hlbWEga2V5XG4gKiBAcGFyYW0ge0Jvb2xlYW59IHNraXBWYWxpZGF0aW9uIHRydWUgdG8gc2tpcCBzY2hlbWEgdmFsaWRhdGlvbiwgY2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdmFsaWRhdGVTY2hlbWEgb3B0aW9uIGZvciBtZXRhLXNjaGVtYVxuICogQHJldHVybiB7QWp2fSB0aGlzIGZvciBtZXRob2QgY2hhaW5pbmdcbiAqL1xuZnVuY3Rpb24gYWRkTWV0YVNjaGVtYShzY2hlbWEsIGtleSwgc2tpcFZhbGlkYXRpb24pIHtcbiAgdGhpcy5hZGRTY2hlbWEoc2NoZW1hLCBrZXksIHNraXBWYWxpZGF0aW9uLCB0cnVlKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cblxuLyoqXG4gKiBWYWxpZGF0ZSBzY2hlbWFcbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0ge09iamVjdH0gc2NoZW1hIHNjaGVtYSB0byB2YWxpZGF0ZVxuICogQHBhcmFtIHtCb29sZWFufSB0aHJvd09yTG9nRXJyb3IgcGFzcyB0cnVlIHRvIHRocm93IChvciBsb2cpIGFuIGVycm9yIGlmIGludmFsaWRcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgc2NoZW1hIGlzIHZhbGlkXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU2NoZW1hKHNjaGVtYSwgdGhyb3dPckxvZ0Vycm9yKSB7XG4gIHZhciAkc2NoZW1hID0gc2NoZW1hLiRzY2hlbWE7XG4gIGlmICgkc2NoZW1hICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICRzY2hlbWEgIT0gJ3N0cmluZycpXG4gICAgdGhyb3cgbmV3IEVycm9yKCckc2NoZW1hIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgJHNjaGVtYSA9ICRzY2hlbWEgfHwgdGhpcy5fb3B0cy5kZWZhdWx0TWV0YSB8fCBkZWZhdWx0TWV0YSh0aGlzKTtcbiAgaWYgKCEkc2NoZW1hKSB7XG4gICAgdGhpcy5sb2dnZXIud2FybignbWV0YS1zY2hlbWEgbm90IGF2YWlsYWJsZScpO1xuICAgIHRoaXMuZXJyb3JzID0gbnVsbDtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgdmFsaWQgPSB0aGlzLnZhbGlkYXRlKCRzY2hlbWEsIHNjaGVtYSk7XG4gIGlmICghdmFsaWQgJiYgdGhyb3dPckxvZ0Vycm9yKSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnc2NoZW1hIGlzIGludmFsaWQ6ICcgKyB0aGlzLmVycm9yc1RleHQoKTtcbiAgICBpZiAodGhpcy5fb3B0cy52YWxpZGF0ZVNjaGVtYSA9PSAnbG9nJykgdGhpcy5sb2dnZXIuZXJyb3IobWVzc2FnZSk7XG4gICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmF1bHRNZXRhKHNlbGYpIHtcbiAgdmFyIG1ldGEgPSBzZWxmLl9vcHRzLm1ldGE7XG4gIHNlbGYuX29wdHMuZGVmYXVsdE1ldGEgPSB0eXBlb2YgbWV0YSA9PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZi5fZ2V0SWQobWV0YSkgfHwgbWV0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2VsZi5nZXRTY2hlbWEoTUVUQV9TQ0hFTUFfSUQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE1FVEFfU0NIRU1BX0lEXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHNlbGYuX29wdHMuZGVmYXVsdE1ldGE7XG59XG5cblxuLyoqXG4gKiBHZXQgY29tcGlsZWQgc2NoZW1hIGZyb20gdGhlIGluc3RhbmNlIGJ5IGBrZXlgIG9yIGByZWZgLlxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge1N0cmluZ30ga2V5UmVmIGBrZXlgIHRoYXQgd2FzIHBhc3NlZCB0byBgYWRkU2NoZW1hYCBvciBmdWxsIHNjaGVtYSByZWZlcmVuY2UgKGBzY2hlbWEuaWRgIG9yIHJlc29sdmVkIGlkKS5cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBzY2hlbWEgdmFsaWRhdGluZyBmdW5jdGlvbiAod2l0aCBwcm9wZXJ0eSBgc2NoZW1hYCkuXG4gKi9cbmZ1bmN0aW9uIGdldFNjaGVtYShrZXlSZWYpIHtcbiAgdmFyIHNjaGVtYU9iaiA9IF9nZXRTY2hlbWFPYmoodGhpcywga2V5UmVmKTtcbiAgc3dpdGNoICh0eXBlb2Ygc2NoZW1hT2JqKSB7XG4gICAgY2FzZSAnb2JqZWN0JzogcmV0dXJuIHNjaGVtYU9iai52YWxpZGF0ZSB8fCB0aGlzLl9jb21waWxlKHNjaGVtYU9iaik7XG4gICAgY2FzZSAnc3RyaW5nJzogcmV0dXJuIHRoaXMuZ2V0U2NoZW1hKHNjaGVtYU9iaik7XG4gICAgY2FzZSAndW5kZWZpbmVkJzogcmV0dXJuIF9nZXRTY2hlbWFGcmFnbWVudCh0aGlzLCBrZXlSZWYpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gX2dldFNjaGVtYUZyYWdtZW50KHNlbGYsIHJlZikge1xuICB2YXIgcmVzID0gcmVzb2x2ZS5zY2hlbWEuY2FsbChzZWxmLCB7IHNjaGVtYToge30gfSwgcmVmKTtcbiAgaWYgKHJlcykge1xuICAgIHZhciBzY2hlbWEgPSByZXMuc2NoZW1hXG4gICAgICAsIHJvb3QgPSByZXMucm9vdFxuICAgICAgLCBiYXNlSWQgPSByZXMuYmFzZUlkO1xuICAgIHZhciB2ID0gY29tcGlsZVNjaGVtYS5jYWxsKHNlbGYsIHNjaGVtYSwgcm9vdCwgdW5kZWZpbmVkLCBiYXNlSWQpO1xuICAgIHNlbGYuX2ZyYWdtZW50c1tyZWZdID0gbmV3IFNjaGVtYU9iamVjdCh7XG4gICAgICByZWY6IHJlZixcbiAgICAgIGZyYWdtZW50OiB0cnVlLFxuICAgICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgICByb290OiByb290LFxuICAgICAgYmFzZUlkOiBiYXNlSWQsXG4gICAgICB2YWxpZGF0ZTogdlxuICAgIH0pO1xuICAgIHJldHVybiB2O1xuICB9XG59XG5cblxuZnVuY3Rpb24gX2dldFNjaGVtYU9iaihzZWxmLCBrZXlSZWYpIHtcbiAga2V5UmVmID0gcmVzb2x2ZS5ub3JtYWxpemVJZChrZXlSZWYpO1xuICByZXR1cm4gc2VsZi5fc2NoZW1hc1trZXlSZWZdIHx8IHNlbGYuX3JlZnNba2V5UmVmXSB8fCBzZWxmLl9mcmFnbWVudHNba2V5UmVmXTtcbn1cblxuXG4vKipcbiAqIFJlbW92ZSBjYWNoZWQgc2NoZW1hKHMpLlxuICogSWYgbm8gcGFyYW1ldGVyIGlzIHBhc3NlZCBhbGwgc2NoZW1hcyBidXQgbWV0YS1zY2hlbWFzIGFyZSByZW1vdmVkLlxuICogSWYgUmVnRXhwIGlzIHBhc3NlZCBhbGwgc2NoZW1hcyB3aXRoIGtleS9pZCBtYXRjaGluZyBwYXR0ZXJuIGJ1dCBtZXRhLXNjaGVtYXMgYXJlIHJlbW92ZWQuXG4gKiBFdmVuIGlmIHNjaGVtYSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIHNjaGVtYXMgaXQgc3RpbGwgY2FuIGJlIHJlbW92ZWQgYXMgb3RoZXIgc2NoZW1hcyBoYXZlIGxvY2FsIHJlZmVyZW5jZXMuXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7U3RyaW5nfE9iamVjdHxSZWdFeHB9IHNjaGVtYUtleVJlZiBrZXksIHJlZiwgcGF0dGVybiB0byBtYXRjaCBrZXkvcmVmIG9yIHNjaGVtYSBvYmplY3RcbiAqIEByZXR1cm4ge0Fqdn0gdGhpcyBmb3IgbWV0aG9kIGNoYWluaW5nXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZVNjaGVtYShzY2hlbWFLZXlSZWYpIHtcbiAgaWYgKHNjaGVtYUtleVJlZiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgIF9yZW1vdmVBbGxTY2hlbWFzKHRoaXMsIHRoaXMuX3NjaGVtYXMsIHNjaGVtYUtleVJlZik7XG4gICAgX3JlbW92ZUFsbFNjaGVtYXModGhpcywgdGhpcy5fcmVmcywgc2NoZW1hS2V5UmVmKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBzd2l0Y2ggKHR5cGVvZiBzY2hlbWFLZXlSZWYpIHtcbiAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgX3JlbW92ZUFsbFNjaGVtYXModGhpcywgdGhpcy5fc2NoZW1hcyk7XG4gICAgICBfcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLCB0aGlzLl9yZWZzKTtcbiAgICAgIHRoaXMuX2NhY2hlLmNsZWFyKCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgdmFyIHNjaGVtYU9iaiA9IF9nZXRTY2hlbWFPYmoodGhpcywgc2NoZW1hS2V5UmVmKTtcbiAgICAgIGlmIChzY2hlbWFPYmopIHRoaXMuX2NhY2hlLmRlbChzY2hlbWFPYmouY2FjaGVLZXkpO1xuICAgICAgZGVsZXRlIHRoaXMuX3NjaGVtYXNbc2NoZW1hS2V5UmVmXTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9yZWZzW3NjaGVtYUtleVJlZl07XG4gICAgICByZXR1cm4gdGhpcztcbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgdmFyIHNlcmlhbGl6ZSA9IHRoaXMuX29wdHMuc2VyaWFsaXplO1xuICAgICAgdmFyIGNhY2hlS2V5ID0gc2VyaWFsaXplID8gc2VyaWFsaXplKHNjaGVtYUtleVJlZikgOiBzY2hlbWFLZXlSZWY7XG4gICAgICB0aGlzLl9jYWNoZS5kZWwoY2FjaGVLZXkpO1xuICAgICAgdmFyIGlkID0gdGhpcy5fZ2V0SWQoc2NoZW1hS2V5UmVmKTtcbiAgICAgIGlmIChpZCkge1xuICAgICAgICBpZCA9IHJlc29sdmUubm9ybWFsaXplSWQoaWQpO1xuICAgICAgICBkZWxldGUgdGhpcy5fc2NoZW1hc1tpZF07XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9yZWZzW2lkXTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxuXG5mdW5jdGlvbiBfcmVtb3ZlQWxsU2NoZW1hcyhzZWxmLCBzY2hlbWFzLCByZWdleCkge1xuICBmb3IgKHZhciBrZXlSZWYgaW4gc2NoZW1hcykge1xuICAgIHZhciBzY2hlbWFPYmogPSBzY2hlbWFzW2tleVJlZl07XG4gICAgaWYgKCFzY2hlbWFPYmoubWV0YSAmJiAoIXJlZ2V4IHx8IHJlZ2V4LnRlc3Qoa2V5UmVmKSkpIHtcbiAgICAgIHNlbGYuX2NhY2hlLmRlbChzY2hlbWFPYmouY2FjaGVLZXkpO1xuICAgICAgZGVsZXRlIHNjaGVtYXNba2V5UmVmXTtcbiAgICB9XG4gIH1cbn1cblxuXG4vKiBAdGhpcyAgIEFqdiAqL1xuZnVuY3Rpb24gX2FkZFNjaGVtYShzY2hlbWEsIHNraXBWYWxpZGF0aW9uLCBtZXRhLCBzaG91bGRBZGRTY2hlbWEpIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgIT0gJ29iamVjdCcgJiYgdHlwZW9mIHNjaGVtYSAhPSAnYm9vbGVhbicpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdzY2hlbWEgc2hvdWxkIGJlIG9iamVjdCBvciBib29sZWFuJyk7XG4gIHZhciBzZXJpYWxpemUgPSB0aGlzLl9vcHRzLnNlcmlhbGl6ZTtcbiAgdmFyIGNhY2hlS2V5ID0gc2VyaWFsaXplID8gc2VyaWFsaXplKHNjaGVtYSkgOiBzY2hlbWE7XG4gIHZhciBjYWNoZWQgPSB0aGlzLl9jYWNoZS5nZXQoY2FjaGVLZXkpO1xuICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gIHNob3VsZEFkZFNjaGVtYSA9IHNob3VsZEFkZFNjaGVtYSB8fCB0aGlzLl9vcHRzLmFkZFVzZWRTY2hlbWEgIT09IGZhbHNlO1xuXG4gIHZhciBpZCA9IHJlc29sdmUubm9ybWFsaXplSWQodGhpcy5fZ2V0SWQoc2NoZW1hKSk7XG4gIGlmIChpZCAmJiBzaG91bGRBZGRTY2hlbWEpIGNoZWNrVW5pcXVlKHRoaXMsIGlkKTtcblxuICB2YXIgd2lsbFZhbGlkYXRlID0gdGhpcy5fb3B0cy52YWxpZGF0ZVNjaGVtYSAhPT0gZmFsc2UgJiYgIXNraXBWYWxpZGF0aW9uO1xuICB2YXIgcmVjdXJzaXZlTWV0YTtcbiAgaWYgKHdpbGxWYWxpZGF0ZSAmJiAhKHJlY3Vyc2l2ZU1ldGEgPSBpZCAmJiBpZCA9PSByZXNvbHZlLm5vcm1hbGl6ZUlkKHNjaGVtYS4kc2NoZW1hKSkpXG4gICAgdGhpcy52YWxpZGF0ZVNjaGVtYShzY2hlbWEsIHRydWUpO1xuXG4gIHZhciBsb2NhbFJlZnMgPSByZXNvbHZlLmlkcy5jYWxsKHRoaXMsIHNjaGVtYSk7XG5cbiAgdmFyIHNjaGVtYU9iaiA9IG5ldyBTY2hlbWFPYmplY3Qoe1xuICAgIGlkOiBpZCxcbiAgICBzY2hlbWE6IHNjaGVtYSxcbiAgICBsb2NhbFJlZnM6IGxvY2FsUmVmcyxcbiAgICBjYWNoZUtleTogY2FjaGVLZXksXG4gICAgbWV0YTogbWV0YVxuICB9KTtcblxuICBpZiAoaWRbMF0gIT0gJyMnICYmIHNob3VsZEFkZFNjaGVtYSkgdGhpcy5fcmVmc1tpZF0gPSBzY2hlbWFPYmo7XG4gIHRoaXMuX2NhY2hlLnB1dChjYWNoZUtleSwgc2NoZW1hT2JqKTtcblxuICBpZiAod2lsbFZhbGlkYXRlICYmIHJlY3Vyc2l2ZU1ldGEpIHRoaXMudmFsaWRhdGVTY2hlbWEoc2NoZW1hLCB0cnVlKTtcblxuICByZXR1cm4gc2NoZW1hT2JqO1xufVxuXG5cbi8qIEB0aGlzICAgQWp2ICovXG5mdW5jdGlvbiBfY29tcGlsZShzY2hlbWFPYmosIHJvb3QpIHtcbiAgaWYgKHNjaGVtYU9iai5jb21waWxpbmcpIHtcbiAgICBzY2hlbWFPYmoudmFsaWRhdGUgPSBjYWxsVmFsaWRhdGU7XG4gICAgY2FsbFZhbGlkYXRlLnNjaGVtYSA9IHNjaGVtYU9iai5zY2hlbWE7XG4gICAgY2FsbFZhbGlkYXRlLmVycm9ycyA9IG51bGw7XG4gICAgY2FsbFZhbGlkYXRlLnJvb3QgPSByb290ID8gcm9vdCA6IGNhbGxWYWxpZGF0ZTtcbiAgICBpZiAoc2NoZW1hT2JqLnNjaGVtYS4kYXN5bmMgPT09IHRydWUpXG4gICAgICBjYWxsVmFsaWRhdGUuJGFzeW5jID0gdHJ1ZTtcbiAgICByZXR1cm4gY2FsbFZhbGlkYXRlO1xuICB9XG4gIHNjaGVtYU9iai5jb21waWxpbmcgPSB0cnVlO1xuXG4gIHZhciBjdXJyZW50T3B0cztcbiAgaWYgKHNjaGVtYU9iai5tZXRhKSB7XG4gICAgY3VycmVudE9wdHMgPSB0aGlzLl9vcHRzO1xuICAgIHRoaXMuX29wdHMgPSB0aGlzLl9tZXRhT3B0cztcbiAgfVxuXG4gIHZhciB2O1xuICB0cnkgeyB2ID0gY29tcGlsZVNjaGVtYS5jYWxsKHRoaXMsIHNjaGVtYU9iai5zY2hlbWEsIHJvb3QsIHNjaGVtYU9iai5sb2NhbFJlZnMpOyB9XG4gIGNhdGNoKGUpIHtcbiAgICBkZWxldGUgc2NoZW1hT2JqLnZhbGlkYXRlO1xuICAgIHRocm93IGU7XG4gIH1cbiAgZmluYWxseSB7XG4gICAgc2NoZW1hT2JqLmNvbXBpbGluZyA9IGZhbHNlO1xuICAgIGlmIChzY2hlbWFPYmoubWV0YSkgdGhpcy5fb3B0cyA9IGN1cnJlbnRPcHRzO1xuICB9XG5cbiAgc2NoZW1hT2JqLnZhbGlkYXRlID0gdjtcbiAgc2NoZW1hT2JqLnJlZnMgPSB2LnJlZnM7XG4gIHNjaGVtYU9iai5yZWZWYWwgPSB2LnJlZlZhbDtcbiAgc2NoZW1hT2JqLnJvb3QgPSB2LnJvb3Q7XG4gIHJldHVybiB2O1xuXG5cbiAgLyogQHRoaXMgICB7Kn0gLSBjdXN0b20gY29udGV4dCwgc2VlIHBhc3NDb250ZXh0IG9wdGlvbiAqL1xuICBmdW5jdGlvbiBjYWxsVmFsaWRhdGUoKSB7XG4gICAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICAgIHZhciBfdmFsaWRhdGUgPSBzY2hlbWFPYmoudmFsaWRhdGU7XG4gICAgdmFyIHJlc3VsdCA9IF92YWxpZGF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGNhbGxWYWxpZGF0ZS5lcnJvcnMgPSBfdmFsaWRhdGUuZXJyb3JzO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBjaG9vc2VHZXRJZChvcHRzKSB7XG4gIHN3aXRjaCAob3B0cy5zY2hlbWFJZCkge1xuICAgIGNhc2UgJ2F1dG8nOiByZXR1cm4gX2dldCRJZE9ySWQ7XG4gICAgY2FzZSAnaWQnOiByZXR1cm4gX2dldElkO1xuICAgIGRlZmF1bHQ6IHJldHVybiBfZ2V0JElkO1xuICB9XG59XG5cbi8qIEB0aGlzICAgQWp2ICovXG5mdW5jdGlvbiBfZ2V0SWQoc2NoZW1hKSB7XG4gIGlmIChzY2hlbWEuJGlkKSB0aGlzLmxvZ2dlci53YXJuKCdzY2hlbWEgJGlkIGlnbm9yZWQnLCBzY2hlbWEuJGlkKTtcbiAgcmV0dXJuIHNjaGVtYS5pZDtcbn1cblxuLyogQHRoaXMgICBBanYgKi9cbmZ1bmN0aW9uIF9nZXQkSWQoc2NoZW1hKSB7XG4gIGlmIChzY2hlbWEuaWQpIHRoaXMubG9nZ2VyLndhcm4oJ3NjaGVtYSBpZCBpZ25vcmVkJywgc2NoZW1hLmlkKTtcbiAgcmV0dXJuIHNjaGVtYS4kaWQ7XG59XG5cblxuZnVuY3Rpb24gX2dldCRJZE9ySWQoc2NoZW1hKSB7XG4gIGlmIChzY2hlbWEuJGlkICYmIHNjaGVtYS5pZCAmJiBzY2hlbWEuJGlkICE9IHNjaGVtYS5pZClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NjaGVtYSAkaWQgaXMgZGlmZmVyZW50IGZyb20gaWQnKTtcbiAgcmV0dXJuIHNjaGVtYS4kaWQgfHwgc2NoZW1hLmlkO1xufVxuXG5cbi8qKlxuICogQ29udmVydCBhcnJheSBvZiBlcnJvciBtZXNzYWdlIG9iamVjdHMgdG8gc3RyaW5nXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7QXJyYXk8T2JqZWN0Pn0gZXJyb3JzIG9wdGlvbmFsIGFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3JzLCBpZiBub3QgcGFzc2VkIGVycm9ycyBmcm9tIHRoZSBpbnN0YW5jZSBhcmUgdXNlZC5cbiAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9ucyBvcHRpb25hbCBvcHRpb25zIHdpdGggcHJvcGVydGllcyBgc2VwYXJhdG9yYCBhbmQgYGRhdGFWYXJgLlxuICogQHJldHVybiB7U3RyaW5nfSBodW1hbiByZWFkYWJsZSBzdHJpbmcgd2l0aCBhbGwgZXJyb3JzIGRlc2NyaXB0aW9uc1xuICovXG5mdW5jdGlvbiBlcnJvcnNUZXh0KGVycm9ycywgb3B0aW9ucykge1xuICBlcnJvcnMgPSBlcnJvcnMgfHwgdGhpcy5lcnJvcnM7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gJ05vIGVycm9ycyc7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgc2VwYXJhdG9yID0gb3B0aW9ucy5zZXBhcmF0b3IgPT09IHVuZGVmaW5lZCA/ICcsICcgOiBvcHRpb25zLnNlcGFyYXRvcjtcbiAgdmFyIGRhdGFWYXIgPSBvcHRpb25zLmRhdGFWYXIgPT09IHVuZGVmaW5lZCA/ICdkYXRhJyA6IG9wdGlvbnMuZGF0YVZhcjtcblxuICB2YXIgdGV4dCA9ICcnO1xuICBmb3IgKHZhciBpPTA7IGk8ZXJyb3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGUgPSBlcnJvcnNbaV07XG4gICAgaWYgKGUpIHRleHQgKz0gZGF0YVZhciArIGUuZGF0YVBhdGggKyAnICcgKyBlLm1lc3NhZ2UgKyBzZXBhcmF0b3I7XG4gIH1cbiAgcmV0dXJuIHRleHQuc2xpY2UoMCwgLXNlcGFyYXRvci5sZW5ndGgpO1xufVxuXG5cbi8qKlxuICogQWRkIGN1c3RvbSBmb3JtYXRcbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBmb3JtYXQgbmFtZVxuICogQHBhcmFtIHtTdHJpbmd8UmVnRXhwfEZ1bmN0aW9ufSBmb3JtYXQgc3RyaW5nIGlzIGNvbnZlcnRlZCB0byBSZWdFeHA7IGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYm9vbGVhbiAodHJ1ZSB3aGVuIHZhbGlkKVxuICogQHJldHVybiB7QWp2fSB0aGlzIGZvciBtZXRob2QgY2hhaW5pbmdcbiAqL1xuZnVuY3Rpb24gYWRkRm9ybWF0KG5hbWUsIGZvcm1hdCkge1xuICBpZiAodHlwZW9mIGZvcm1hdCA9PSAnc3RyaW5nJykgZm9ybWF0ID0gbmV3IFJlZ0V4cChmb3JtYXQpO1xuICB0aGlzLl9mb3JtYXRzW25hbWVdID0gZm9ybWF0O1xuICByZXR1cm4gdGhpcztcbn1cblxuXG5mdW5jdGlvbiBhZGREZWZhdWx0TWV0YVNjaGVtYShzZWxmKSB7XG4gIHZhciAkZGF0YVNjaGVtYTtcbiAgaWYgKHNlbGYuX29wdHMuJGRhdGEpIHtcbiAgICAkZGF0YVNjaGVtYSA9IHJlcXVpcmUoJy4vcmVmcy9kYXRhLmpzb24nKTtcbiAgICBzZWxmLmFkZE1ldGFTY2hlbWEoJGRhdGFTY2hlbWEsICRkYXRhU2NoZW1hLiRpZCwgdHJ1ZSk7XG4gIH1cbiAgaWYgKHNlbGYuX29wdHMubWV0YSA9PT0gZmFsc2UpIHJldHVybjtcbiAgdmFyIG1ldGFTY2hlbWEgPSByZXF1aXJlKCcuL3JlZnMvanNvbi1zY2hlbWEtZHJhZnQtMDcuanNvbicpO1xuICBpZiAoc2VsZi5fb3B0cy4kZGF0YSkgbWV0YVNjaGVtYSA9ICRkYXRhTWV0YVNjaGVtYShtZXRhU2NoZW1hLCBNRVRBX1NVUFBPUlRfREFUQSk7XG4gIHNlbGYuYWRkTWV0YVNjaGVtYShtZXRhU2NoZW1hLCBNRVRBX1NDSEVNQV9JRCwgdHJ1ZSk7XG4gIHNlbGYuX3JlZnNbJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvc2NoZW1hJ10gPSBNRVRBX1NDSEVNQV9JRDtcbn1cblxuXG5mdW5jdGlvbiBhZGRJbml0aWFsU2NoZW1hcyhzZWxmKSB7XG4gIHZhciBvcHRzU2NoZW1hcyA9IHNlbGYuX29wdHMuc2NoZW1hcztcbiAgaWYgKCFvcHRzU2NoZW1hcykgcmV0dXJuO1xuICBpZiAoQXJyYXkuaXNBcnJheShvcHRzU2NoZW1hcykpIHNlbGYuYWRkU2NoZW1hKG9wdHNTY2hlbWFzKTtcbiAgZWxzZSBmb3IgKHZhciBrZXkgaW4gb3B0c1NjaGVtYXMpIHNlbGYuYWRkU2NoZW1hKG9wdHNTY2hlbWFzW2tleV0sIGtleSk7XG59XG5cblxuZnVuY3Rpb24gYWRkSW5pdGlhbEZvcm1hdHMoc2VsZikge1xuICBmb3IgKHZhciBuYW1lIGluIHNlbGYuX29wdHMuZm9ybWF0cykge1xuICAgIHZhciBmb3JtYXQgPSBzZWxmLl9vcHRzLmZvcm1hdHNbbmFtZV07XG4gICAgc2VsZi5hZGRGb3JtYXQobmFtZSwgZm9ybWF0KTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGFkZEluaXRpYWxLZXl3b3JkcyhzZWxmKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gc2VsZi5fb3B0cy5rZXl3b3Jkcykge1xuICAgIHZhciBrZXl3b3JkID0gc2VsZi5fb3B0cy5rZXl3b3Jkc1tuYW1lXTtcbiAgICBzZWxmLmFkZEtleXdvcmQobmFtZSwga2V5d29yZCk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBjaGVja1VuaXF1ZShzZWxmLCBpZCkge1xuICBpZiAoc2VsZi5fc2NoZW1hc1tpZF0gfHwgc2VsZi5fcmVmc1tpZF0pXG4gICAgdGhyb3cgbmV3IEVycm9yKCdzY2hlbWEgd2l0aCBrZXkgb3IgaWQgXCInICsgaWQgKyAnXCIgYWxyZWFkeSBleGlzdHMnKTtcbn1cblxuXG5mdW5jdGlvbiBnZXRNZXRhU2NoZW1hT3B0aW9ucyhzZWxmKSB7XG4gIHZhciBtZXRhT3B0cyA9IHV0aWwuY29weShzZWxmLl9vcHRzKTtcbiAgZm9yICh2YXIgaT0wOyBpPE1FVEFfSUdOT1JFX09QVElPTlMubGVuZ3RoOyBpKyspXG4gICAgZGVsZXRlIG1ldGFPcHRzW01FVEFfSUdOT1JFX09QVElPTlNbaV1dO1xuICByZXR1cm4gbWV0YU9wdHM7XG59XG5cblxuZnVuY3Rpb24gc2V0TG9nZ2VyKHNlbGYpIHtcbiAgdmFyIGxvZ2dlciA9IHNlbGYuX29wdHMubG9nZ2VyO1xuICBpZiAobG9nZ2VyID09PSBmYWxzZSkge1xuICAgIHNlbGYubG9nZ2VyID0ge2xvZzogbm9vcCwgd2Fybjogbm9vcCwgZXJyb3I6IG5vb3B9O1xuICB9IGVsc2Uge1xuICAgIGlmIChsb2dnZXIgPT09IHVuZGVmaW5lZCkgbG9nZ2VyID0gY29uc29sZTtcbiAgICBpZiAoISh0eXBlb2YgbG9nZ2VyID09ICdvYmplY3QnICYmIGxvZ2dlci5sb2cgJiYgbG9nZ2VyLndhcm4gJiYgbG9nZ2VyLmVycm9yKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignbG9nZ2VyIG11c3QgaW1wbGVtZW50IGxvZywgd2FybiBhbmQgZXJyb3IgbWV0aG9kcycpO1xuICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyO1xuICB9XG59XG5cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG4iLCJpbXBvcnQgQWp2IGZyb20gJ2Fqdic7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmV4cG9ydCBjb25zdCBBSlZfQ09ORklHID0ge1xuICAgIGVycm9yRGF0YVBhdGg6ICdwcm9wZXJ0eScsXG4gICAgYWxsRXJyb3JzOiB0cnVlLFxuICAgIG11bHRpcGxlT2ZQcmVjaXNpb246IDgsXG4gICAgc2NoZW1hSWQ6ICdhdXRvJyxcbiAgICB1bmtub3duRm9ybWF0czogJ2lnbm9yZScsXG59O1xuZXhwb3J0IGNvbnN0IENPTE9SX0ZPUk1BVF9SRUdFWCA9IC9eKCM/KFswLTlBLUZhLWZdezN9KXsxLDJ9XFxifGFxdWF8YmxhY2t8Ymx1ZXxmdWNoc2lhfGdyYXl8Z3JlZW58bGltZXxtYXJvb258bmF2eXxvbGl2ZXxvcmFuZ2V8cHVycGxlfHJlZHxzaWx2ZXJ8dGVhbHx3aGl0ZXx5ZWxsb3d8KHJnYlxcKFxccypcXGIoWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKVxcYlxccyosXFxzKlxcYihbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pXFxiXFxzKixcXHMqXFxiKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcXGJcXHMqXFwpKXwocmdiXFwoXFxzKihcXGQ/XFxkJXwxMDAlKStcXHMqLFxccyooXFxkP1xcZCV8MTAwJSkrXFxzKixcXHMqKFxcZD9cXGQlfDEwMCUpK1xccypcXCkpKSQvO1xuZXhwb3J0IGNvbnN0IERBVEFfVVJMX0ZPUk1BVF9SRUdFWCA9IC9eZGF0YTooW2Etel0rXFwvW2EtejAtOS0rLl0rKT87KD86bmFtZT0oLiopOyk/YmFzZTY0LCguKikkLztcbi8qKiBDcmVhdGVzIGFuIEFqdiB2ZXJzaW9uIDYgaW1wbGVtZW50YXRpb24gb2JqZWN0IHdpdGggc3RhbmRhcmQgc3VwcG9ydCBmb3IgdGhlICdjb2xvcmAgYW5kIGBkYXRhLXVybGAgY3VzdG9tIGZvcm1hdHMuXG4gKiBJZiBgYWRkaXRpb25hbE1ldGFTY2hlbWFzYCBhcmUgcHJvdmlkZWQgdGhlbiB0aGUgQWp2IGluc3RhbmNlIGlzIG1vZGlmaWVkIHRvIGFkZCBlYWNoIG9mIHRoZSBtZXRhIHNjaGVtYXMgaW4gdGhlXG4gKiBsaXN0LiBJZiBgY3VzdG9tRm9ybWF0c2AgYXJlIHByb3ZpZGVkIHRoZW4gdGhvc2UgYWRkaXRpb25hbCBmb3JtYXRzIGFyZSBhZGRlZCB0byB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZm9ybWF0cy4gSWZcbiAqIGBhanZPcHRpb25zT3ZlcnJpZGVzYCBhcmUgcHJvdmlkZWQgdGhlbiB0aGV5IGFyZSBzcHJlYWQgb24gdG9wIG9mIHRoZSBkZWZhdWx0IGBBSlZfQ09ORklHYCBvcHRpb25zIHdoZW4gY29uc3RydWN0aW5nXG4gKiB0aGUgYEFqdmAgaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIFthZGRpdGlvbmFsTWV0YVNjaGVtYXNdIC0gVGhlIGxpc3Qgb2YgYWRkaXRpb25hbCBtZXRhIHNjaGVtYXMgdGhhdCB0aGUgdmFsaWRhdG9yIGNhbiBhY2Nlc3NcbiAqIEBwYXJhbSBbY3VzdG9tRm9ybWF0c10gLSBUaGUgc2V0IG9mIGFkZGl0aW9uYWwgY3VzdG9tIGZvcm1hdHMgdGhhdCB0aGUgdmFsaWRhdG9yIHdpbGwgc3VwcG9ydFxuICogQHBhcmFtIFthanZPcHRpb25zT3ZlcnJpZGVzPXt9XSAtIFRoZSBzZXQgb2YgdmFsaWRhdG9yIGNvbmZpZyBvdmVycmlkZSBvcHRpb25zXG4gKiBAZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUgYEByanNmL3ZhbGlkYXRvci1hanY4XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUFqdkluc3RhbmNlKGFkZGl0aW9uYWxNZXRhU2NoZW1hcywgY3VzdG9tRm9ybWF0cywgYWp2T3B0aW9uc092ZXJyaWRlcyA9IHt9KSB7XG4gICAgY29uc3QgYWp2ID0gbmV3IEFqdih7IC4uLkFKVl9DT05GSUcsIC4uLmFqdk9wdGlvbnNPdmVycmlkZXMgfSk7XG4gICAgLy8gYWRkIGN1c3RvbSBmb3JtYXRzXG4gICAgYWp2LmFkZEZvcm1hdCgnZGF0YS11cmwnLCBEQVRBX1VSTF9GT1JNQVRfUkVHRVgpO1xuICAgIGFqdi5hZGRGb3JtYXQoJ2NvbG9yJywgQ09MT1JfRk9STUFUX1JFR0VYKTtcbiAgICAvLyBhZGQgbW9yZSBzY2hlbWFzIHRvIHZhbGlkYXRlIGFnYWluc3RcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhZGRpdGlvbmFsTWV0YVNjaGVtYXMpKSB7XG4gICAgICAgIGFqdi5hZGRNZXRhU2NoZW1hKGFkZGl0aW9uYWxNZXRhU2NoZW1hcyk7XG4gICAgfVxuICAgIC8vIGFkZCBtb3JlIGN1c3RvbSBmb3JtYXRzIHRvIHZhbGlkYXRlIGFnYWluc3RcbiAgICBpZiAoaXNPYmplY3QoY3VzdG9tRm9ybWF0cykpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY3VzdG9tRm9ybWF0cykuZm9yRWFjaCgoZm9ybWF0TmFtZSkgPT4ge1xuICAgICAgICAgICAgYWp2LmFkZEZvcm1hdChmb3JtYXROYW1lLCBjdXN0b21Gb3JtYXRzW2Zvcm1hdE5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhanY7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVBanZJbnN0YW5jZS5qcy5tYXAiLCJpbXBvcnQgeyBjcmVhdGVFcnJvckhhbmRsZXIsIGRlZXBFcXVhbHMsIGdldERlZmF1bHRGb3JtU3RhdGUsIFJPT1RfU0NIRU1BX1BSRUZJWCwgdG9FcnJvckxpc3QsIHRvRXJyb3JTY2hlbWEsIHVud3JhcEVycm9ySGFuZGxlciwgdmFsaWRhdGlvbkRhdGFNZXJnZSwgd2l0aElkUmVmUHJlZml4LCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBjcmVhdGVBanZJbnN0YW5jZSBmcm9tICcuL2NyZWF0ZUFqdkluc3RhbmNlJztcbi8qKiBgVmFsaWRhdG9yVHlwZWAgaW1wbGVtZW50YXRpb24gdGhhdCB1c2VzIHRoZSBBSlYgNiB2YWxpZGF0aW9uIG1lY2hhbmlzbS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUgYEByanNmL3ZhbGlkYXRvci1hanY4XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFKVjZWYWxpZGF0b3Ige1xuICAgIC8qKiBDb25zdHJ1Y3RzIGFuIGBBSlY2VmFsaWRhdG9yYCBpbnN0YW5jZSB1c2luZyB0aGUgYG9wdGlvbnNgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBgQ3VzdG9tVmFsaWRhdG9yT3B0aW9uc1R5cGVgIG9wdGlvbnMgdGhhdCBhcmUgdXNlZCB0byBjcmVhdGUgdGhlIEFKViBpbnN0YW5jZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBhZGRpdGlvbmFsTWV0YVNjaGVtYXMsIGN1c3RvbUZvcm1hdHMsIGFqdk9wdGlvbnNPdmVycmlkZXMgfSA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuYWp2ID0gY3JlYXRlQWp2SW5zdGFuY2UoYWRkaXRpb25hbE1ldGFTY2hlbWFzLCBjdXN0b21Gb3JtYXRzLCBhanZPcHRpb25zT3ZlcnJpZGVzKTtcbiAgICB9XG4gICAgLyoqIENvbnZlcnRzIGFuIGBlcnJvclNjaGVtYWAgaW50byBhIGxpc3Qgb2YgYFJKU0ZWYWxpZGF0aW9uRXJyb3JzYFxuICAgICAqXG4gICAgICogQHBhcmFtIGVycm9yU2NoZW1hIC0gVGhlIGBFcnJvclNjaGVtYWAgaW5zdGFuY2UgdG8gY29udmVydFxuICAgICAqIEBwYXJhbSBbZmllbGRQYXRoPVtdXSAtIFRoZSBjdXJyZW50IGZpZWxkIHBhdGgsIGRlZmF1bHRzIHRvIFtdIGlmIG5vdCBzcGVjaWZpZWRcbiAgICAgKiBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgYHRvRXJyb3JMaXN0KClgIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IGBAcmpzZi91dGlsc2AgaW5zdGVhZC4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQgaW5cbiAgICAgKiAgICAgICAgdGhlIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgKi9cbiAgICB0b0Vycm9yTGlzdChlcnJvclNjaGVtYSwgZmllbGRQYXRoID0gW10pIHtcbiAgICAgICAgcmV0dXJuIHRvRXJyb3JMaXN0KGVycm9yU2NoZW1hLCBmaWVsZFBhdGgpO1xuICAgIH1cbiAgICAvKiogVHJhbnNmb3JtaW5nIHRoZSBlcnJvciBvdXRwdXQgZnJvbSBhanYgdG8gZm9ybWF0IHVzZWQgYnkgQHJqc2YvdXRpbHMuXG4gICAgICogQXQgc29tZSBwb2ludCwgY29tcG9uZW50cyBzaG91bGQgYmUgdXBkYXRlZCB0byBzdXBwb3J0IGFqdi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlcnJvcnMgLSBUaGUgbGlzdCBvZiBBSlYgZXJyb3JzIHRvIGNvbnZlcnQgdG8gYFJKU0ZWYWxpZGF0aW9uRXJyb3JzYFxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgdHJhbnNmb3JtUkpTRlZhbGlkYXRpb25FcnJvcnMoZXJyb3JzID0gW10pIHtcbiAgICAgICAgcmV0dXJuIGVycm9ycy5tYXAoKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGF0YVBhdGgsIGtleXdvcmQsIG1lc3NhZ2UsIHBhcmFtcywgc2NoZW1hUGF0aCB9ID0gZTtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gYCR7ZGF0YVBhdGh9YDtcbiAgICAgICAgICAgIC8vIHB1dCBkYXRhIGluIGV4cGVjdGVkIGZvcm1hdFxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBrZXl3b3JkLFxuICAgICAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIHN0YWNrOiBgJHtwcm9wZXJ0eX0gJHttZXNzYWdlfWAudHJpbSgpLFxuICAgICAgICAgICAgICAgIHNjaGVtYVBhdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqIFJ1bnMgdGhlIHB1cmUgdmFsaWRhdGlvbiBvZiB0aGUgYHNjaGVtYWAgYW5kIGBmb3JtRGF0YWAgd2l0aG91dCBhbnkgb2YgdGhlIFJKU0YgZnVuY3Rpb25hbGl0eS4gUHJvdmlkZWQgZm9yIHVzZVxuICAgICAqIGJ5IHRoZSBwbGF5Z3JvdW5kLiBSZXR1cm5zIHRoZSBgZXJyb3JzYCBmcm9tIHRoZSB2YWxpZGF0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBhZ2FpbnN0IHdoaWNoIHRvIHZhbGlkYXRlIHRoZSBmb3JtIGRhdGEgICAqIEBwYXJhbSBzY2hlbWFcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIHRvIHZhbGlkYXRlXG4gICAgICovXG4gICAgcmF3VmFsaWRhdGlvbihzY2hlbWEsIGZvcm1EYXRhKSB7XG4gICAgICAgIGxldCB2YWxpZGF0aW9uRXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmFqdi52YWxpZGF0ZShzY2hlbWEsIGZvcm1EYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3IgPSBlcnI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5hanYuZXJyb3JzIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gQ2xlYXIgZXJyb3JzIHRvIHByZXZlbnQgcGVyc2lzdGVudCBlcnJvcnMsIHNlZSAjMTEwNFxuICAgICAgICB0aGlzLmFqdi5lcnJvcnMgPSBudWxsO1xuICAgICAgICByZXR1cm4geyBlcnJvcnM6IGVycm9ycywgdmFsaWRhdGlvbkVycm9yIH07XG4gICAgfVxuICAgIC8qKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgYGZvcm1EYXRhYCB3aXRoIGFuIG9wdGlvbmFsIHVzZXIgY29udHJpYnV0ZWQgYGN1c3RvbVZhbGlkYXRlYCBmdW5jdGlvbiwgd2hpY2ggcmVjZWl2ZXNcbiAgICAgKiB0aGUgZm9ybSBkYXRhIGFuZCBhIGBlcnJvckhhbmRsZXJgIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGFkZCBjdXN0b20gdmFsaWRhdGlvbiBlcnJvcnMgZm9yIGVhY2ggZmllbGQuIEFsc29cbiAgICAgKiBzdXBwb3J0cyBhIGB0cmFuc2Zvcm1FcnJvcnNgIGZ1bmN0aW9uIHRoYXQgd2lsbCB0YWtlIHRoZSByYXcgQUpWIHZhbGlkYXRpb24gZXJyb3JzLCBwcmlvciB0byBjdXN0b20gdmFsaWRhdGlvbiBhbmRcbiAgICAgKiB0cmFuc2Zvcm0gdGhlbSBpbiB3aGF0IGV2ZXIgd2F5IGl0IGNob29zZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIHRvIHZhbGlkYXRlXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgYWdhaW5zdCB3aGljaCB0byB2YWxpZGF0ZSB0aGUgZm9ybSBkYXRhXG4gICAgICogQHBhcmFtIFtjdXN0b21WYWxpZGF0ZV0gLSBBbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8gcGVyZm9ybSBjdXN0b20gdmFsaWRhdGlvblxuICAgICAqIEBwYXJhbSBbdHJhbnNmb3JtRXJyb3JzXSAtIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0byB0cmFuc2Zvcm0gZXJyb3JzIGFmdGVyIEFKViB2YWxpZGF0aW9uXG4gICAgICogQHBhcmFtIFt1aVNjaGVtYV0gLSBBbiBvcHRpb25hbCB1aVNjaGVtYSB0aGF0IGlzIHBhc3NlZCB0byBgdHJhbnNmb3JtRXJyb3JzYCBhbmQgYGN1c3RvbVZhbGlkYXRlYFxuICAgICAqL1xuICAgIHZhbGlkYXRlRm9ybURhdGEoZm9ybURhdGEsIHNjaGVtYSwgY3VzdG9tVmFsaWRhdGUsIHRyYW5zZm9ybUVycm9ycywgdWlTY2hlbWEpIHtcbiAgICAgICAgY29uc3Qgcm9vdFNjaGVtYSA9IHNjaGVtYTtcbiAgICAgICAgY29uc3QgcmF3RXJyb3JzID0gdGhpcy5yYXdWYWxpZGF0aW9uKHNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICBjb25zdCB7IHZhbGlkYXRpb25FcnJvciB9ID0gcmF3RXJyb3JzO1xuICAgICAgICBsZXQgZXJyb3JzID0gdGhpcy50cmFuc2Zvcm1SSlNGVmFsaWRhdGlvbkVycm9ycyhyYXdFcnJvcnMuZXJyb3JzKTtcbiAgICAgICAgY29uc3Qgbm9Qcm9wZXJNZXRhU2NoZW1hID0gdmFsaWRhdGlvbkVycm9yICYmIHZhbGlkYXRpb25FcnJvci5tZXNzYWdlICYmIHZhbGlkYXRpb25FcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdubyBzY2hlbWEgd2l0aCBrZXkgb3IgcmVmICcpO1xuICAgICAgICBpZiAobm9Qcm9wZXJNZXRhU2NoZW1hKSB7XG4gICAgICAgICAgICBlcnJvcnMgPSBbLi4uZXJyb3JzLCB7IHN0YWNrOiB2YWxpZGF0aW9uRXJyb3IubWVzc2FnZSB9XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRyYW5zZm9ybUVycm9ycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgZXJyb3JzID0gdHJhbnNmb3JtRXJyb3JzKGVycm9ycywgdWlTY2hlbWEpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBlcnJvclNjaGVtYSA9IHRvRXJyb3JTY2hlbWEoZXJyb3JzKTtcbiAgICAgICAgaWYgKG5vUHJvcGVyTWV0YVNjaGVtYSkge1xuICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgLi4uZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgLi4ue1xuICAgICAgICAgICAgICAgICAgICAkc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfX2Vycm9yczogW3ZhbGlkYXRpb25FcnJvci5tZXNzYWdlXSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGN1c3RvbVZhbGlkYXRlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcnMsIGVycm9yU2NoZW1hIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW5jbHVkZSBmb3JtIGRhdGEgd2l0aCB1bmRlZmluZWQgdmFsdWVzLCB3aGljaCBpcyByZXF1aXJlZCBmb3IgY3VzdG9tIHZhbGlkYXRpb24uXG4gICAgICAgIGNvbnN0IG5ld0Zvcm1EYXRhID0gZ2V0RGVmYXVsdEZvcm1TdGF0ZSh0aGlzLCBzY2hlbWEsIGZvcm1EYXRhLCByb290U2NoZW1hLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZXJyb3JIYW5kbGVyID0gY3VzdG9tVmFsaWRhdGUobmV3Rm9ybURhdGEsIGNyZWF0ZUVycm9ySGFuZGxlcihuZXdGb3JtRGF0YSksIHVpU2NoZW1hKTtcbiAgICAgICAgY29uc3QgdXNlckVycm9yU2NoZW1hID0gdW53cmFwRXJyb3JIYW5kbGVyKGVycm9ySGFuZGxlcik7XG4gICAgICAgIHJldHVybiB2YWxpZGF0aW9uRGF0YU1lcmdlKHsgZXJyb3JzLCBlcnJvclNjaGVtYSB9LCB1c2VyRXJyb3JTY2hlbWEpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiBhIHNjaGVtYSBuZWVkcyB0byBiZSBhZGRlZCBhbmQgaWYgdGhlIHJvb3Qgc2NoZW1hcyBkb24ndCBtYXRjaCBpdCByZW1vdmVzIHRoZSBvbGQgcm9vdCBzY2hlbWEgZnJvbSB0aGUgYWp2IGluc3RhbmNlIGFuZCBhZGRzIHRoZSBuZXcgb25lLlxuICAgICAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHVzZWQgdG8gcHJvdmlkZSAkcmVmIHJlc29sdXRpb25zXG4gICAgICovXG4gICAgaGFuZGxlU2NoZW1hVXBkYXRlKHJvb3RTY2hlbWEpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCByb290U2NoZW1hSWQgPSBST09UX1NDSEVNQV9QUkVGSVg7XG4gICAgICAgIC8vIGFkZCB0aGUgcm9vdFNjaGVtYSBST09UX1NDSEVNQV9QUkVGSVggYXMgaWQuXG4gICAgICAgIC8vIGlmIHNjaGVtYSB2YWxpZGF0b3IgaW5zdGFuY2UgZG9lc24ndCBleGlzdCwgYWRkIGl0LlxuICAgICAgICAvLyBlbHNlICdoYW5kbGVSb290U2NoZW1hQ2hhbmdlJyBzaG91bGQgYmUgY2FsbGVkIGlmIHRoZSByb290IHNjaGVtYSBjaGFuZ2VzIHNvIHdlIGRvbid0IGhhdmUgdG8gcmVtb3ZlIGFuZCByZWNvbXBpbGUgdGhlIHNjaGVtYSBldmVyeSBydW4uXG4gICAgICAgIGlmICh0aGlzLmFqdi5nZXRTY2hlbWEoUk9PVF9TQ0hFTUFfUFJFRklYKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmFqdi5hZGRTY2hlbWEocm9vdFNjaGVtYSwgUk9PVF9TQ0hFTUFfUFJFRklYKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghZGVlcEVxdWFscyhyb290U2NoZW1hLCAoX2EgPSB0aGlzLmFqdi5nZXRTY2hlbWEoUk9PVF9TQ0hFTUFfUFJFRklYKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNjaGVtYSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWp2LnJlbW92ZVNjaGVtYShyb290U2NoZW1hSWQpO1xuICAgICAgICAgICAgdGhpcy5hanYuYWRkU2NoZW1hKHJvb3RTY2hlbWEsIHJvb3RTY2hlbWFJZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIFZhbGlkYXRlcyBkYXRhIGFnYWluc3QgYSBzY2hlbWEsIHJldHVybmluZyB0cnVlIGlmIHRoZSBkYXRhIGlzIHZhbGlkLCBvclxuICAgICAqIGZhbHNlIG90aGVyd2lzZS4gSWYgdGhlIHNjaGVtYSBpcyBpbnZhbGlkLCB0aGVuIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm5cbiAgICAgKiBmYWxzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGFnYWluc3Qgd2hpY2ggdG8gdmFsaWRhdGUgdGhlIGZvcm0gZGF0YSAgICogQHBhcmFtIHNjaGVtYVxuICAgICAqIEBwYXJhbSBmb3JtRGF0YS0gLSBUaGUgZm9ybSBkYXRhIHRvIHZhbGlkYXRlXG4gICAgICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdXNlZCB0byBwcm92aWRlICRyZWYgcmVzb2x1dGlvbnNcbiAgICAgKi9cbiAgICBpc1ZhbGlkKHNjaGVtYSwgZm9ybURhdGEsIHJvb3RTY2hlbWEpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU2NoZW1hVXBkYXRlKHJvb3RTY2hlbWEpO1xuICAgICAgICAgICAgLy8gdGhlbiByZXdyaXRlIHRoZSBzY2hlbWEgcmVmJ3MgdG8gcG9pbnQgdG8gdGhlIHJvb3RTY2hlbWFcbiAgICAgICAgICAgIC8vIHRoaXMgYWNjb3VudHMgZm9yIHRoZSBjYXNlIHdoZXJlIHNjaGVtYSBoYXZlIHJlZmVyZW5jZXMgdG8gbW9kZWxzXG4gICAgICAgICAgICAvLyB0aGF0IGxpdmVzIGluIHRoZSByb290U2NoZW1hIGJ1dCBub3QgaW4gdGhlIHNjaGVtYSBpbiBxdWVzdGlvbi5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuYWp2LnZhbGlkYXRlKHdpdGhJZFJlZlByZWZpeChzY2hlbWEpLCBmb3JtRGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD12YWxpZGF0b3IuanMubWFwIiwiaW1wb3J0IEFKVjZWYWxpZGF0b3IgZnJvbSAnLi92YWxpZGF0b3InO1xuLyoqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBjdXN0b21pemVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgd2l0aCB0aGUgZ2l2ZW4gY3VzdG9taXphdGlvbiBgb3B0aW9uc2AgaWZcbiAqIHByb3ZpZGVkLlxuICpcbiAqIEBwYXJhbSBbb3B0aW9ucz17fV0gLSBUaGUgYEN1c3RvbVZhbGlkYXRvck9wdGlvbnNUeXBlYCBvcHRpb25zIHRoYXQgYXJlIHVzZWQgdG8gY3JlYXRlIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW5zdGFuY2VcbiAqIEBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZSBgQHJqc2YvdmFsaWRhdG9yLWFqdjhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3VzdG9taXplVmFsaWRhdG9yKG9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgQUpWNlZhbGlkYXRvcihvcHRpb25zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWN1c3RvbWl6ZVZhbGlkYXRvci5qcy5tYXAiLCJpbXBvcnQgY3VzdG9taXplVmFsaWRhdG9yIGZyb20gJy4vY3VzdG9taXplVmFsaWRhdG9yJztcbmV4cG9ydCB7IGN1c3RvbWl6ZVZhbGlkYXRvciB9O1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG4vKiogQGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIGBAcmpzZi92YWxpZGF0b3ItYWp2OFxuICovXG5leHBvcnQgZGVmYXVsdCBjdXN0b21pemVWYWxpZGF0b3IoKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VTZXQgPSByZXF1aXJlKCcuL19iYXNlU2V0JyksXG4gICAgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mICBgXy5waWNrQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0ge307XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgcGF0aCA9IHBhdGhzW2luZGV4XSxcbiAgICAgICAgdmFsdWUgPSBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG5cbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBwYXRoKSkge1xuICAgICAgYmFzZVNldChyZXN1bHQsIGNhc3RQYXRoKHBhdGgsIG9iamVjdCksIHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUGlja0J5O1xuIiwidmFyIGJhc2VQaWNrQnkgPSByZXF1aXJlKCcuL19iYXNlUGlja0J5JyksXG4gICAgaGFzSW4gPSByZXF1aXJlKCcuL2hhc0luJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucGlja2Agd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gKiBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVBpY2sob2JqZWN0LCBwYXRocykge1xuICByZXR1cm4gYmFzZVBpY2tCeShvYmplY3QsIHBhdGhzLCBmdW5jdGlvbih2YWx1ZSwgcGF0aCkge1xuICAgIHJldHVybiBoYXNJbihvYmplY3QsIHBhdGgpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUGljaztcbiIsInZhciBiYXNlUGljayA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrJyksXG4gICAgZmxhdFJlc3QgPSByZXF1aXJlKCcuL19mbGF0UmVzdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICpcbiAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gKi9cbnZhciBwaWNrID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB7fSA6IGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGljaztcbiIsIi8vIFRoaXMgZmlsZSByZXBsYWNlcyBgaW5kZXguanNgIGluIGJ1bmRsZXJzIGxpa2Ugd2VicGFjayBvciBSb2xsdXAsXG4vLyBhY2NvcmRpbmcgdG8gYGJyb3dzZXJgIGNvbmZpZyBpbiBgcGFja2FnZS5qc29uYC5cblxuaW1wb3J0IHsgdXJsQWxwaGFiZXQgfSBmcm9tICcuL3VybC1hbHBoYWJldC9pbmRleC5qcydcblxubGV0IHJhbmRvbSA9IGJ5dGVzID0+IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoYnl0ZXMpKVxuXG5sZXQgY3VzdG9tUmFuZG9tID0gKGFscGhhYmV0LCBkZWZhdWx0U2l6ZSwgZ2V0UmFuZG9tKSA9PiB7XG4gIC8vIEZpcnN0LCBhIGJpdG1hc2sgaXMgbmVjZXNzYXJ5IHRvIGdlbmVyYXRlIHRoZSBJRC4gVGhlIGJpdG1hc2sgbWFrZXMgYnl0ZXNcbiAgLy8gdmFsdWVzIGNsb3NlciB0byB0aGUgYWxwaGFiZXQgc2l6ZS4gVGhlIGJpdG1hc2sgY2FsY3VsYXRlcyB0aGUgY2xvc2VzdFxuICAvLyBgMl4zMSAtIDFgIG51bWJlciwgd2hpY2ggZXhjZWVkcyB0aGUgYWxwaGFiZXQgc2l6ZS5cbiAgLy8gRm9yIGV4YW1wbGUsIHRoZSBiaXRtYXNrIGZvciB0aGUgYWxwaGFiZXQgc2l6ZSAzMCBpcyAzMSAoMDAwMTExMTEpLlxuICAvLyBgTWF0aC5jbHozMmAgaXMgbm90IHVzZWQsIGJlY2F1c2UgaXQgaXMgbm90IGF2YWlsYWJsZSBpbiBicm93c2Vycy5cbiAgbGV0IG1hc2sgPSAoMiA8PCAoTWF0aC5sb2coYWxwaGFiZXQubGVuZ3RoIC0gMSkgLyBNYXRoLkxOMikpIC0gMVxuICAvLyBUaG91Z2gsIHRoZSBiaXRtYXNrIHNvbHV0aW9uIGlzIG5vdCBwZXJmZWN0IHNpbmNlIHRoZSBieXRlcyBleGNlZWRpbmdcbiAgLy8gdGhlIGFscGhhYmV0IHNpemUgYXJlIHJlZnVzZWQuIFRoZXJlZm9yZSwgdG8gcmVsaWFibHkgZ2VuZXJhdGUgdGhlIElELFxuICAvLyB0aGUgcmFuZG9tIGJ5dGVzIHJlZHVuZGFuY3kgaGFzIHRvIGJlIHNhdGlzZmllZC5cblxuICAvLyBOb3RlOiBldmVyeSBoYXJkd2FyZSByYW5kb20gZ2VuZXJhdG9yIGNhbGwgaXMgcGVyZm9ybWFuY2UgZXhwZW5zaXZlLFxuICAvLyBiZWNhdXNlIHRoZSBzeXN0ZW0gY2FsbCBmb3IgZW50cm9weSBjb2xsZWN0aW9uIHRha2VzIGEgbG90IG9mIHRpbWUuXG4gIC8vIFNvLCB0byBhdm9pZCBhZGRpdGlvbmFsIHN5c3RlbSBjYWxscywgZXh0cmEgYnl0ZXMgYXJlIHJlcXVlc3RlZCBpbiBhZHZhbmNlLlxuXG4gIC8vIE5leHQsIGEgc3RlcCBkZXRlcm1pbmVzIGhvdyBtYW55IHJhbmRvbSBieXRlcyB0byBnZW5lcmF0ZS5cbiAgLy8gVGhlIG51bWJlciBvZiByYW5kb20gYnl0ZXMgZ2V0cyBkZWNpZGVkIHVwb24gdGhlIElEIHNpemUsIG1hc2ssXG4gIC8vIGFscGhhYmV0IHNpemUsIGFuZCBtYWdpYyBudW1iZXIgMS42ICh1c2luZyAxLjYgcGVha3MgYXQgcGVyZm9ybWFuY2VcbiAgLy8gYWNjb3JkaW5nIHRvIGJlbmNobWFya3MpLlxuXG4gIC8vIGAtfmYgPT4gTWF0aC5jZWlsKGYpYCBpZiBmIGlzIGEgZmxvYXRcbiAgLy8gYC1+aSA9PiBpICsgMWAgaWYgaSBpcyBhbiBpbnRlZ2VyXG4gIGxldCBzdGVwID0gLX4oKDEuNiAqIG1hc2sgKiBkZWZhdWx0U2l6ZSkgLyBhbHBoYWJldC5sZW5ndGgpXG5cbiAgcmV0dXJuIChzaXplID0gZGVmYXVsdFNpemUpID0+IHtcbiAgICBsZXQgaWQgPSAnJ1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBsZXQgYnl0ZXMgPSBnZXRSYW5kb20oc3RlcClcbiAgICAgIC8vIEEgY29tcGFjdCBhbHRlcm5hdGl2ZSBmb3IgYGZvciAodmFyIGkgPSAwOyBpIDwgc3RlcDsgaSsrKWAuXG4gICAgICBsZXQgaiA9IHN0ZXAgfCAwXG4gICAgICB3aGlsZSAoai0tKSB7XG4gICAgICAgIC8vIEFkZGluZyBgfHwgJydgIHJlZnVzZXMgYSByYW5kb20gYnl0ZSB0aGF0IGV4Y2VlZHMgdGhlIGFscGhhYmV0IHNpemUuXG4gICAgICAgIGlkICs9IGFscGhhYmV0W2J5dGVzW2pdICYgbWFza10gfHwgJydcbiAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gc2l6ZSkgcmV0dXJuIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmxldCBjdXN0b21BbHBoYWJldCA9IChhbHBoYWJldCwgc2l6ZSA9IDIxKSA9PlxuICBjdXN0b21SYW5kb20oYWxwaGFiZXQsIHNpemUsIHJhbmRvbSlcblxubGV0IG5hbm9pZCA9IChzaXplID0gMjEpID0+XG4gIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoc2l6ZSkpLnJlZHVjZSgoaWQsIGJ5dGUpID0+IHtcbiAgICAvLyBJdCBpcyBpbmNvcnJlY3QgdG8gdXNlIGJ5dGVzIGV4Y2VlZGluZyB0aGUgYWxwaGFiZXQgc2l6ZS5cbiAgICAvLyBUaGUgZm9sbG93aW5nIG1hc2sgcmVkdWNlcyB0aGUgcmFuZG9tIGJ5dGUgaW4gdGhlIDAtMjU1IHZhbHVlXG4gICAgLy8gcmFuZ2UgdG8gdGhlIDAtNjMgdmFsdWUgcmFuZ2UuIFRoZXJlZm9yZSwgYWRkaW5nIGhhY2tzLCBzdWNoXG4gICAgLy8gYXMgZW1wdHkgc3RyaW5nIGZhbGxiYWNrIG9yIG1hZ2ljIG51bWJlcnMsIGlzIHVubmVjY2Vzc2FyeSBiZWNhdXNlXG4gICAgLy8gdGhlIGJpdG1hc2sgdHJpbXMgYnl0ZXMgZG93biB0byB0aGUgYWxwaGFiZXQgc2l6ZS5cbiAgICBieXRlICY9IDYzXG4gICAgaWYgKGJ5dGUgPCAzNikge1xuICAgICAgLy8gYDAtOWEtemBcbiAgICAgIGlkICs9IGJ5dGUudG9TdHJpbmcoMzYpXG4gICAgfSBlbHNlIGlmIChieXRlIDwgNjIpIHtcbiAgICAgIC8vIGBBLVpgXG4gICAgICBpZCArPSAoYnl0ZSAtIDI2KS50b1N0cmluZygzNikudG9VcHBlckNhc2UoKVxuICAgIH0gZWxzZSBpZiAoYnl0ZSA+IDYyKSB7XG4gICAgICBpZCArPSAnLSdcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgKz0gJ18nXG4gICAgfVxuICAgIHJldHVybiBpZFxuICB9LCAnJylcblxuZXhwb3J0IHsgbmFub2lkLCBjdXN0b21BbHBoYWJldCwgY3VzdG9tUmFuZG9tLCB1cmxBbHBoYWJldCwgcmFuZG9tIH1cbiIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSwgZ2V0V2lkZ2V0LCBnZXRVaU9wdGlvbnMsIGlzRml4ZWRJdGVtcywgYWxsb3dBZGRpdGlvbmFsSXRlbXMsIGlzQ3VzdG9tV2lkZ2V0LCBvcHRpb25zTGlzdCwgVHJhbnNsYXRhYmxlU3RyaW5nLCBJVEVNU19LRVksIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoL3NldCc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuLyoqIFVzZWQgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgSUQgZm9yIGFuIGVsZW1lbnQgaW4gYSByb3cgKi9cbmZ1bmN0aW9uIGdlbmVyYXRlUm93SWQoKSB7XG4gICAgcmV0dXJuIG5hbm9pZCgpO1xufVxuLyoqIENvbnZlcnRzIHRoZSBgZm9ybURhdGFgIGludG8gYEtleWVkRm9ybURhdGFUeXBlYCBkYXRhLCB1c2luZyB0aGUgYGdlbmVyYXRlUm93SWQoKWAgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBrZXlcbiAqXG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZGF0YSBmb3IgdGhlIGZvcm1cbiAqIEByZXR1cm5zIC0gVGhlIGBmb3JtRGF0YWAgY29udmVydGVkIGludG8gYSBgS2V5ZWRGb3JtRGF0YVR5cGVgIGVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVLZXllZEZvcm1EYXRhKGZvcm1EYXRhKSB7XG4gICAgcmV0dXJuICFBcnJheS5pc0FycmF5KGZvcm1EYXRhKVxuICAgICAgICA/IFtdXG4gICAgICAgIDogZm9ybURhdGEubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtleTogZ2VuZXJhdGVSb3dJZCgpLFxuICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbn1cbi8qKiBDb252ZXJ0cyBgS2V5ZWRGb3JtRGF0YVR5cGVgIGRhdGEgaW50byB0aGUgaW5uZXIgYGZvcm1EYXRhYFxuICpcbiAqIEBwYXJhbSBrZXllZEZvcm1EYXRhIC0gVGhlIGBLZXllZEZvcm1EYXRhVHlwZWAgdG8gYmUgY29udmVydGVkXG4gKiBAcmV0dXJucyAtIFRoZSBpbm5lciBgZm9ybURhdGFgIGl0ZW0ocykgaW4gdGhlIGBrZXllZEZvcm1EYXRhYFxuICovXG5mdW5jdGlvbiBrZXllZFRvUGxhaW5Gb3JtRGF0YShrZXllZEZvcm1EYXRhKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5ZWRGb3JtRGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGtleWVkRm9ybURhdGEubWFwKChrZXllZEl0ZW0pID0+IGtleWVkSXRlbS5pdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xufVxuLyoqIFRoZSBgQXJyYXlGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSB0aGF0IGlzIG9mIHR5cGUgYGFycmF5YC4gSXQgc3VwcG9ydHMgYm90aCBub3JtYWxcbiAqIGFuZCBmaXhlZCBhcnJheSwgYWxsb3dpbmcgdXNlciB0byBhZGQgYW5kIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBhcnJheSBkYXRhLlxuICovXG5jbGFzcyBBcnJheUZpZWxkIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICAvKiogQ29uc3RydWN0cyBhbiBgQXJyYXlGaWVsZGAgZnJvbSB0aGUgYHByb3BzYCwgZ2VuZXJhdGluZyB0aGUgaW5pdGlhbCBrZXllZCBkYXRhIGZyb20gdGhlIGBmb3JtRGF0YWBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIC8qKiBSZXR1cm5zIHRoZSBkZWZhdWx0IGZvcm0gaW5mb3JtYXRpb24gZm9yIGFuIGl0ZW0gYmFzZWQgb24gdGhlIHNjaGVtYSBmb3IgdGhhdCBpdGVtLiBEZWFscyB3aXRoIHRoZSBwb3NzaWJpbGl0eVxuICAgICAgICAgKiB0aGF0IHRoZSBzY2hlbWEgaXMgZml4ZWQgYW5kIGFsbG93cyBhZGRpdGlvbmFsIGl0ZW1zLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZ2V0TmV3Rm9ybURhdGFSb3cgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNjaGVtYSwgcmVnaXN0cnkgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBjb25zdCB7IHNjaGVtYVV0aWxzIH0gPSByZWdpc3RyeTtcbiAgICAgICAgICAgIGxldCBpdGVtU2NoZW1hID0gc2NoZW1hLml0ZW1zO1xuICAgICAgICAgICAgaWYgKGlzRml4ZWRJdGVtcyhzY2hlbWEpICYmIGFsbG93QWRkaXRpb25hbEl0ZW1zKHNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICBpdGVtU2NoZW1hID0gc2NoZW1hLmFkZGl0aW9uYWxJdGVtcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENhc3QgdGhpcyBhcyBhIFQgdG8gd29yayBhcm91bmQgc2NoZW1hIHV0aWxzIGJlaW5nIGZvciBUW10gY2F1c2VkIGJ5IHRoZSBGaWVsZFByb3BzPFRbXSwgUywgRj4gY2FsbCBvbiB0aGUgY2xhc3NcbiAgICAgICAgICAgIHJldHVybiBzY2hlbWFVdGlscy5nZXREZWZhdWx0Rm9ybVN0YXRlKGl0ZW1TY2hlbWEpO1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIGFkZCBidXR0b24uIENyZWF0ZXMgYSBuZXcgcm93IG9mIGtleWVkIGZvcm0gZGF0YSBhdCB0aGUgZW5kIG9mXG4gICAgICAgICAqIHRoZSBsaXN0LCBhZGRpbmcgaXQgaW50byB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGUgcGxhaW4gZm9ybSBkYXRhIGNvbnZlcnRlZCBmcm9tIHRoZVxuICAgICAgICAgKiBrZXllZCBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBldmVudCBmb3IgdGhlIGNsaWNrXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uQWRkQ2xpY2sgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZUFkZENsaWNrKGV2ZW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgZm9yIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBhZGQgYnV0dG9uIG9uIGFuIGV4aXN0aW5nIGFycmF5IGVsZW1lbnQuIENyZWF0ZXMgYSBuZXcgcm93IG9mXG4gICAgICAgICAqIGtleWVkIGZvcm0gZGF0YSBpbnNlcnRlZCBhdCB0aGUgYGluZGV4YCwgYWRkaW5nIGl0IGludG8gdGhlIHN0YXRlLCBhbmQgdGhlbiByZXR1cm5pbmcgYG9uQ2hhbmdlKClgIHdpdGggdGhlIHBsYWluXG4gICAgICAgICAqIGZvcm0gZGF0YSBjb252ZXJ0ZWQgZnJvbSB0aGUga2V5ZWQgZGF0YVxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggYXQgd2hpY2ggdGhlIGFkZCBidXR0b24gaXMgY2xpY2tlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkFkZEluZGV4Q2xpY2sgPSAoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVBZGRDbGljayhldmVudCwgaW5kZXgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgZm9yIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBjb3B5IGJ1dHRvbiBvbiBhbiBleGlzdGluZyBhcnJheSBlbGVtZW50LiBDbG9uZXMgdGhlIHJvdyBvZlxuICAgICAgICAgKiBrZXllZCBmb3JtIGRhdGEgYXQgdGhlIGBpbmRleGAgaW50byB0aGUgbmV4dCBwb3NpdGlvbiBpbiB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGUgcGxhaW5cbiAgICAgICAgICogZm9ybSBkYXRhIGNvbnZlcnRlZCBmcm9tIHRoZSBrZXllZCBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBhdCB3aGljaCB0aGUgY29weSBidXR0b24gaXMgY2xpY2tlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkNvcHlJbmRleENsaWNrID0gKGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5ZWRGb3JtRGF0YSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgICAgICAvLyByZWZzICMxOTU6IHJldmFsaWRhdGUgdG8gZW5zdXJlIHByb3Blcmx5IHJlaW5kZXhpbmcgZXJyb3JzXG4gICAgICAgICAgICAgICAgbGV0IG5ld0Vycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvclNjaGVtYSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGlkeCBpbiBlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChuZXdFcnJvclNjaGVtYSwgW2ldLCBlcnJvclNjaGVtYVtpZHhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGkgPiBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChuZXdFcnJvclNjaGVtYSwgW2kgKyAxXSwgZXJyb3JTY2hlbWFbaWR4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YVJvdyA9IHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBnZW5lcmF0ZVJvd0lkKCksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW06IGNsb25lRGVlcChrZXllZEZvcm1EYXRhW2luZGV4XS5pdGVtKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSBbLi4ua2V5ZWRGb3JtRGF0YV07XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3S2V5ZWRGb3JtRGF0YS5zcGxpY2UoaW5kZXggKyAxLCAwLCBuZXdLZXllZEZvcm1EYXRhUm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0tleWVkRm9ybURhdGEucHVzaChuZXdLZXllZEZvcm1EYXRhUm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIGtleWVkRm9ybURhdGE6IG5ld0tleWVkRm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRLZXllZEZvcm1EYXRhOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sICgpID0+IG9uQ2hhbmdlKGtleWVkVG9QbGFpbkZvcm1EYXRhKG5ld0tleWVkRm9ybURhdGEpLCBuZXdFcnJvclNjaGVtYSkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgZm9yIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSByZW1vdmUgYnV0dG9uIG9uIGFuIGV4aXN0aW5nIGFycmF5IGVsZW1lbnQuIFJlbW92ZXMgdGhlIHJvdyBvZlxuICAgICAgICAgKiBrZXllZCBmb3JtIGRhdGEgYXQgdGhlIGBpbmRleGAgaW4gdGhlIHN0YXRlLCBhbmQgdGhlbiByZXR1cm5pbmcgYG9uQ2hhbmdlKClgIHdpdGggdGhlIHBsYWluIGZvcm0gZGF0YSBjb252ZXJ0ZWRcbiAgICAgICAgICogZnJvbSB0aGUga2V5ZWQgZGF0YVxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggYXQgd2hpY2ggdGhlIHJlbW92ZSBidXR0b24gaXMgY2xpY2tlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkRyb3BJbmRleENsaWNrID0gKGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5ZWRGb3JtRGF0YSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgICAgICAvLyByZWZzICMxOTU6IHJldmFsaWRhdGUgdG8gZW5zdXJlIHByb3Blcmx5IHJlaW5kZXhpbmcgZXJyb3JzXG4gICAgICAgICAgICAgICAgbGV0IG5ld0Vycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvclNjaGVtYSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGlkeCBpbiBlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaV0sIGVycm9yU2NoZW1hW2lkeF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA+IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaSAtIDFdLCBlcnJvclNjaGVtYVtpZHhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdLZXllZEZvcm1EYXRhID0ga2V5ZWRGb3JtRGF0YS5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAga2V5ZWRGb3JtRGF0YTogbmV3S2V5ZWRGb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgfSwgKCkgPT4gb25DaGFuZ2Uoa2V5ZWRUb1BsYWluRm9ybURhdGEobmV3S2V5ZWRGb3JtRGF0YSksIG5ld0Vycm9yU2NoZW1hKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gb25lIG9mIHRoZSBtb3ZlIGl0ZW0gYnV0dG9ucyBvbiBhbiBleGlzdGluZyBhcnJheSBlbGVtZW50LiBNb3ZlcyB0aGVcbiAgICAgICAgICogcm93IG9mIGtleWVkIGZvcm0gZGF0YSBhdCB0aGUgYGluZGV4YCB0byB0aGUgYG5ld0luZGV4YCBpbiB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGVcbiAgICAgICAgICogcGxhaW4gZm9ybSBkYXRhIGNvbnZlcnRlZCBmcm9tIHRoZSBrZXllZCBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgaXRlbSB0byBtb3ZlXG4gICAgICAgICAqIEBwYXJhbSBuZXdJbmRleCAtIFRoZSBpbmRleCB0byB3aGVyZSB0aGUgaXRlbSBpcyB0byBiZSBtb3ZlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vblJlb3JkZXJDbGljayA9IChpbmRleCwgbmV3SW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5ibHVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIGxldCBuZXdFcnJvclNjaGVtYTtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RXJyb3JTY2hlbWEgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpZHggaW4gZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBwYXJzZUludChpZHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtuZXdJbmRleF0sIGVycm9yU2NoZW1hW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09IG5ld0luZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaW5kZXhdLCBlcnJvclNjaGVtYVtuZXdJbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaWR4XSwgZXJyb3JTY2hlbWFbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5ZWRGb3JtRGF0YSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiByZU9yZGVyQXJyYXkoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENvcHkgaXRlbVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBfbmV3S2V5ZWRGb3JtRGF0YSA9IGtleWVkRm9ybURhdGEuc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gTW92ZXMgaXRlbSBmcm9tIGluZGV4IHRvIG5ld0luZGV4XG4gICAgICAgICAgICAgICAgICAgIF9uZXdLZXllZEZvcm1EYXRhLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIF9uZXdLZXllZEZvcm1EYXRhLnNwbGljZShuZXdJbmRleCwgMCwga2V5ZWRGb3JtRGF0YVtpbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX25ld0tleWVkRm9ybURhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSByZU9yZGVyQXJyYXkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAga2V5ZWRGb3JtRGF0YTogbmV3S2V5ZWRGb3JtRGF0YSxcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiBvbkNoYW5nZShrZXllZFRvUGxhaW5Gb3JtRGF0YShuZXdLZXllZEZvcm1EYXRhKSwgbmV3RXJyb3JTY2hlbWEpKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBoYW5kbGVyIHVzZWQgdG8gZGVhbCB3aXRoIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgZGF0YSBpbiB0aGUgYXJyYXkgYXQgdGhlIGBpbmRleGAuIENhbGxzIHRoZVxuICAgICAgICAgKiBgb25DaGFuZ2VgIGNhbGxiYWNrIHdpdGggdGhlIHVwZGF0ZWQgZm9ybSBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgaXRlbSBiZWluZyBjaGFuZ2VkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm9ySW5kZXggPSAoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUsIG5ld0Vycm9yU2NoZW1hLCBpZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZm9ybURhdGEsIG9uQ2hhbmdlLCBlcnJvclNjaGVtYSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgICAgICBjb25zdCBhcnJheURhdGEgPSBBcnJheS5pc0FycmF5KGZvcm1EYXRhKSA/IGZvcm1EYXRhIDogW107XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Rm9ybURhdGEgPSBhcnJheURhdGEubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdHJlYXQgdW5kZWZpbmVkIGl0ZW1zIGFzIG51bGxzIHRvIGhhdmUgdmFsaWRhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90ZGVncnVudC9qc29uc2NoZW1hL2lzc3Vlcy8yMDZcbiAgICAgICAgICAgICAgICAgICAgY29uc3QganNvblZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4ID09PSBpID8ganNvblZhbHVlIDogaXRlbTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZShuZXdGb3JtRGF0YSwgZXJyb3JTY2hlbWEgJiZcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgJiYge1xuICAgICAgICAgICAgICAgICAgICAuLi5lcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgW2luZGV4XTogbmV3RXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgfSwgaWQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgdXNlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIGZvciBhIGNoZWNrYm94ICovXG4gICAgICAgIHRoaXMub25TZWxlY3RDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGlkU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUsIHVuZGVmaW5lZCwgaWRTY2hlbWEgJiYgaWRTY2hlbWEuJGlkKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgeyBmb3JtRGF0YSA9IFtdIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3Qga2V5ZWRGb3JtRGF0YSA9IGdlbmVyYXRlS2V5ZWRGb3JtRGF0YShmb3JtRGF0YSk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBrZXllZEZvcm1EYXRhLFxuICAgICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogUmVhY3QgbGlmZWN5Y2xlIG1ldGhvZCB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBwcm9wcyBhcmUgYWJvdXQgdG8gY2hhbmdlIGFsbG93aW5nIHRoZSBzdGF0ZSB0byBiZSB1cGRhdGVkLiBJdFxuICAgICAqIHJlZ2VuZXJhdGVzIHRoZSBrZXllZCBmb3JtIGRhdGEgYW5kIHJldHVybnMgaXRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXh0UHJvcHMgLSBUaGUgbmV4dCBzZXQgb2YgcHJvcHMgZGF0YVxuICAgICAqIEBwYXJhbSBwcmV2U3RhdGUgLSBUaGUgcHJldmlvdXMgc2V0IG9mIHN0YXRlIGRhdGFcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIC8vIERvbid0IGNhbGwgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIGlmIGtleWVkIGZvcm1kYXRhIHdhcyBqdXN0IHVwZGF0ZWQuXG4gICAgICAgIGlmIChwcmV2U3RhdGUudXBkYXRlZEtleWVkRm9ybURhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXh0Rm9ybURhdGEgPSBBcnJheS5pc0FycmF5KG5leHRQcm9wcy5mb3JtRGF0YSkgPyBuZXh0UHJvcHMuZm9ybURhdGEgOiBbXTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNLZXllZEZvcm1EYXRhID0gcHJldlN0YXRlLmtleWVkRm9ybURhdGEgfHwgW107XG4gICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSBuZXh0Rm9ybURhdGEubGVuZ3RoID09PSBwcmV2aW91c0tleWVkRm9ybURhdGEubGVuZ3RoXG4gICAgICAgICAgICA/IHByZXZpb3VzS2V5ZWRGb3JtRGF0YS5tYXAoKHByZXZpb3VzS2V5ZWRGb3JtRGF0dW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBwcmV2aW91c0tleWVkRm9ybURhdHVtLmtleSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbTogbmV4dEZvcm1EYXRhW2luZGV4XSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogZ2VuZXJhdGVLZXllZEZvcm1EYXRhKG5leHRGb3JtRGF0YSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBrZXllZEZvcm1EYXRhOiBuZXdLZXllZEZvcm1EYXRhLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgdGl0bGUgZm9yIGFuIGl0ZW0gYnkgZ2V0dGluZyBmaXJzdCB0aGUgdGl0bGUgZnJvbSB0aGUgc2NoZW1hLml0ZW1zLCB0aGVuIGZhbGxpbmcgYmFjayB0b1xuICAgICAqIHRoZSBkZXNjcmlwdGlvbiBmcm9tIHRoZSBzY2hlbWEuaXRlbXMsIGFuZCBmaW5hbGx5IHRoZSBzdHJpbmcgXCJJdGVtXCJcbiAgICAgKi9cbiAgICBnZXQgaXRlbVRpdGxlKCkge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgcmVnaXN0cnkgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICAgICAgcmV0dXJuIGdldChzY2hlbWEsIFtJVEVNU19LRVksICd0aXRsZSddLCBnZXQoc2NoZW1hLCBbSVRFTVNfS0VZLCAnZGVzY3JpcHRpb24nXSwgdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5BcnJheUl0ZW1UaXRsZSkpKTtcbiAgICB9XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgaXRlbSBkZXNjcmliZWQgaW4gdGhlIHNjaGVtYSBpcyBhbHdheXMgcmVxdWlyZWQsIHdoaWNoIGlzIGRldGVybWluZWQgYnkgd2hldGhlciBhbnkgaXRlbVxuICAgICAqIG1heSBiZSBudWxsLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1TY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB0aGUgaXRlbVxuICAgICAqIEByZXR1cm4gLSBUcnVlIGlmIHRoZSBpdGVtIHNjaGVtYSB0eXBlIGRvZXMgbm90IGNvbnRhaW4gdGhlIFwibnVsbFwiIHR5cGVcbiAgICAgKi9cbiAgICBpc0l0ZW1SZXF1aXJlZChpdGVtU2NoZW1hKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1TY2hlbWEudHlwZSkpIHtcbiAgICAgICAgICAgIC8vIFdoaWxlIHdlIGRvbid0IHlldCBzdXBwb3J0IGNvbXBvc2l0ZS9udWxsYWJsZSBqc29uc2NoZW1hIHR5cGVzLCBpdCdzXG4gICAgICAgICAgICAvLyBmdXR1cmUtcHJvb2YgdG8gY2hlY2sgZm9yIHJlcXVpcmVtZW50IGFnYWluc3QgdGhlc2UuXG4gICAgICAgICAgICByZXR1cm4gIWl0ZW1TY2hlbWEudHlwZS5pbmNsdWRlcygnbnVsbCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFsbCBub24tbnVsbCBhcnJheSBpdGVtIHR5cGVzIGFyZSBpbmhlcmVudGx5IHJlcXVpcmVkIGJ5IGRlc2lnblxuICAgICAgICByZXR1cm4gaXRlbVNjaGVtYS50eXBlICE9PSAnbnVsbCc7XG4gICAgfVxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgbW9yZSBpdGVtcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGFycmF5LiBJZiB0aGUgdWlTY2hlbWEgaW5kaWNhdGVzIHRoZSBhcnJheSBkb2Vzbid0IGFsbG93IGFkZGluZ1xuICAgICAqIHRoZW4gZmFsc2UgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgaWYgdGhlIHNjaGVtYSBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgYSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhbmQgdGhlXG4gICAgICogYGZvcm1EYXRhYCBtYXRjaGVzIHRoYXQgdmFsdWUsIHRoZW4gZmFsc2UgaXMgcmV0dXJuZWQsIG90aGVyd2lzZSB0cnVlIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcm1JdGVtcyAtIFRoZSBsaXN0IG9mIGl0ZW1zIGluIHRoZSBmb3JtXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBpdGVtIGlzIGFkZGFibGUgb3RoZXJ3aXNlIGZhbHNlXG4gICAgICovXG4gICAgY2FuQWRkSXRlbShmb3JtSXRlbXMpIHtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEsIHVpU2NoZW1hLCByZWdpc3RyeSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgbGV0IHsgYWRkYWJsZSB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCByZWdpc3RyeS5nbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBpZiAoYWRkYWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIC8vIGlmIHVpOm9wdGlvbnMuYWRkYWJsZSB3YXMgbm90IGV4cGxpY2l0bHkgc2V0IHRvIGZhbHNlLCB3ZSBjYW4gYWRkXG4gICAgICAgICAgICAvLyBhbm90aGVyIGl0ZW0gaWYgd2UgaGF2ZSBub3QgZXhjZWVkZWQgbWF4SXRlbXMgeWV0XG4gICAgICAgICAgICBpZiAoc2NoZW1hLm1heEl0ZW1zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhZGRhYmxlID0gZm9ybUl0ZW1zLmxlbmd0aCA8IHNjaGVtYS5tYXhJdGVtcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFkZGFibGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhZGRhYmxlO1xuICAgIH1cbiAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIGFkZCBvciBhZGQgYXQgaW5kZXggYnV0dG9ucy4gQ3JlYXRlcyBhIG5ldyByb3cgb2Yga2V5ZWQgZm9ybSBkYXRhXG4gICAgICogZWl0aGVyIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QgKHdoZW4gaW5kZXggaXMgbm90IHNwZWNpZmllZCkgb3IgaW5zZXJ0ZWQgYXQgdGhlIGBpbmRleGAgd2hlbiBpdCBpcywgYWRkaW5nIGl0IGludG9cbiAgICAgKiB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGUgcGxhaW4gZm9ybSBkYXRhIGNvbnZlcnRlZCBmcm9tIHRoZSBrZXllZCBkYXRhXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgZXZlbnQgZm9yIHRoZSBjbGlja1xuICAgICAqIEBwYXJhbSBbaW5kZXhdIC0gVGhlIG9wdGlvbmFsIGluZGV4IGF0IHdoaWNoIHRvIGFkZCB0aGUgbmV3IGRhdGFcbiAgICAgKi9cbiAgICBfaGFuZGxlQWRkQ2xpY2soZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG9uQ2hhbmdlLCBlcnJvclNjaGVtYSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAvLyByZWZzICMxOTU6IHJldmFsaWRhdGUgdG8gZW5zdXJlIHByb3Blcmx5IHJlaW5kZXhpbmcgZXJyb3JzXG4gICAgICAgIGxldCBuZXdFcnJvclNjaGVtYTtcbiAgICAgICAgaWYgKGVycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICBuZXdFcnJvclNjaGVtYSA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBpZHggaW4gZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpID0gcGFyc2VJbnQoaWR4KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpIDwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaV0sIGVycm9yU2NoZW1hW2lkeF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpID49IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldChuZXdFcnJvclNjaGVtYSwgW2kgKyAxXSwgZXJyb3JTY2hlbWFbaWR4XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGFSb3cgPSB7XG4gICAgICAgICAgICBrZXk6IGdlbmVyYXRlUm93SWQoKSxcbiAgICAgICAgICAgIGl0ZW06IHRoaXMuX2dldE5ld0Zvcm1EYXRhUm93KCksXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSBbLi4ua2V5ZWRGb3JtRGF0YV07XG4gICAgICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdLZXllZEZvcm1EYXRhLnNwbGljZShpbmRleCwgMCwgbmV3S2V5ZWRGb3JtRGF0YVJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBuZXdLZXllZEZvcm1EYXRhLnB1c2gobmV3S2V5ZWRGb3JtRGF0YVJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBrZXllZEZvcm1EYXRhOiBuZXdLZXllZEZvcm1EYXRhLFxuICAgICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IHRydWUsXG4gICAgICAgIH0sICgpID0+IG9uQ2hhbmdlKGtleWVkVG9QbGFpbkZvcm1EYXRhKG5ld0tleWVkRm9ybURhdGEpLCBuZXdFcnJvclNjaGVtYSkpO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyB0aGUgYEFycmF5RmllbGRgIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgbmVlZHMgb2YgdGhlIHNjaGVtYSBhbmQgdWlzY2hlbWEgZWxlbWVudHNcbiAgICAgKi9cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCB1aVNjaGVtYSwgaWRTY2hlbWEsIHJlZ2lzdHJ5IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHNjaGVtYVV0aWxzLCB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICBpZiAoIShJVEVNU19LRVkgaW4gc2NoZW1hKSkge1xuICAgICAgICAgICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICAgICAgICAgIGNvbnN0IFVuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdVbnN1cHBvcnRlZEZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybiAoX2pzeChVbnN1cHBvcnRlZEZpZWxkVGVtcGxhdGUsIHsgc2NoZW1hOiBzY2hlbWEsIGlkU2NoZW1hOiBpZFNjaGVtYSwgcmVhc29uOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLk1pc3NpbmdJdGVtcyksIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjaGVtYVV0aWxzLmlzTXVsdGlTZWxlY3Qoc2NoZW1hKSkge1xuICAgICAgICAgICAgLy8gSWYgYXJyYXkgaGFzIGVudW0gb3IgdW5pcXVlSXRlbXMgc2V0IHRvIHRydWUsIGNhbGwgcmVuZGVyTXVsdGlTZWxlY3QoKSB0byByZW5kZXIgdGhlIGRlZmF1bHQgbXVsdGlzZWxlY3Qgd2lkZ2V0IG9yIGEgY3VzdG9tIHdpZGdldCwgaWYgc3BlY2lmaWVkLlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyTXVsdGlTZWxlY3QoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDdXN0b21XaWRnZXQodWlTY2hlbWEpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJDdXN0b21XaWRnZXQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNGaXhlZEl0ZW1zKHNjaGVtYSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckZpeGVkQXJyYXkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hVXRpbHMuaXNGaWxlc0FycmF5KHNjaGVtYSwgdWlTY2hlbWEpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJGaWxlcygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlck5vcm1hbEFycmF5KCk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIGEgbm9ybWFsIGFycmF5IHdpdGhvdXQgYW55IGxpbWl0YXRpb25zIG9mIGxlbmd0aFxuICAgICAqL1xuICAgIHJlbmRlck5vcm1hbEFycmF5KCkge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgdWlTY2hlbWEgPSB7fSwgZXJyb3JTY2hlbWEsIGlkU2NoZW1hLCBuYW1lLCB0aXRsZSwgZGlzYWJsZWQgPSBmYWxzZSwgcmVhZG9ubHkgPSBmYWxzZSwgYXV0b2ZvY3VzID0gZmFsc2UsIHJlcXVpcmVkID0gZmFsc2UsIHJlZ2lzdHJ5LCBvbkJsdXIsIG9uRm9jdXMsIGlkUHJlZml4LCBpZFNlcGFyYXRvciA9ICdfJywgcmF3RXJyb3JzLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCBmaWVsZFRpdGxlID0gc2NoZW1hLnRpdGxlIHx8IHRpdGxlIHx8IG5hbWU7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMsIGZvcm1Db250ZXh0IH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICAgICAgY29uc3QgX3NjaGVtYUl0ZW1zID0gaXNPYmplY3Qoc2NoZW1hLml0ZW1zKSA/IHNjaGVtYS5pdGVtcyA6IHt9O1xuICAgICAgICBjb25zdCBpdGVtc1NjaGVtYSA9IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKF9zY2hlbWFJdGVtcyk7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0ga2V5ZWRUb1BsYWluRm9ybURhdGEodGhpcy5zdGF0ZS5rZXllZEZvcm1EYXRhKTtcbiAgICAgICAgY29uc3QgY2FuQWRkID0gdGhpcy5jYW5BZGRJdGVtKGZvcm1EYXRhKTtcbiAgICAgICAgY29uc3QgYXJyYXlQcm9wcyA9IHtcbiAgICAgICAgICAgIGNhbkFkZCxcbiAgICAgICAgICAgIGl0ZW1zOiBrZXllZEZvcm1EYXRhLm1hcCgoa2V5ZWRJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5LCBpdGVtIH0gPSBrZXllZEl0ZW07XG4gICAgICAgICAgICAgICAgLy8gV2hpbGUgd2UgYXJlIGFjdHVhbGx5IGRlYWxpbmcgd2l0aCBhIHNpbmdsZSBpdGVtIG9mIHR5cGUgVCwgdGhlIHR5cGVzIHJlcXVpcmUgYSBUW10sIHNvIGNhc3RcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtQ2FzdCA9IGl0ZW07XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbVNjaGVtYSA9IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKF9zY2hlbWFJdGVtcywgaXRlbUNhc3QpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1FcnJvclNjaGVtYSA9IGVycm9yU2NoZW1hID8gZXJyb3JTY2hlbWFbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JZFByZWZpeCA9IGlkU2NoZW1hLiRpZCArIGlkU2VwYXJhdG9yICsgaW5kZXg7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUlkU2NoZW1hID0gc2NoZW1hVXRpbHMudG9JZFNjaGVtYShpdGVtU2NoZW1hLCBpdGVtSWRQcmVmaXgsIGl0ZW1DYXN0LCBpZFByZWZpeCwgaWRTZXBhcmF0b3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckFycmF5RmllbGRJdGVtKHtcbiAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSAmJiBgJHtuYW1lfS0ke2luZGV4fWAsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmaWVsZFRpdGxlID8gYCR7ZmllbGRUaXRsZX0tJHtpbmRleCArIDF9YCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2FuQWRkLFxuICAgICAgICAgICAgICAgICAgICBjYW5Nb3ZlVXA6IGluZGV4ID4gMCxcbiAgICAgICAgICAgICAgICAgICAgY2FuTW92ZURvd246IGluZGV4IDwgZm9ybURhdGEubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbVNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbUlkU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBpdGVtRXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtQ2FzdCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbVVpU2NoZW1hOiB1aVNjaGVtYS5pdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgYXV0b2ZvY3VzOiBhdXRvZm9jdXMgJiYgaW5kZXggPT09IDAsXG4gICAgICAgICAgICAgICAgICAgIG9uQmx1cixcbiAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyxcbiAgICAgICAgICAgICAgICAgICAgcmF3RXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiBrZXllZEZvcm1EYXRhLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBgZmllbGQgZmllbGQtYXJyYXkgZmllbGQtYXJyYXktb2YtJHtpdGVtc1NjaGVtYS50eXBlfWAsXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIGlkU2NoZW1hLFxuICAgICAgICAgICAgdWlTY2hlbWEsXG4gICAgICAgICAgICBvbkFkZENsaWNrOiB0aGlzLm9uQWRkQ2xpY2ssXG4gICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgdGl0bGU6IGZpZWxkVGl0bGUsXG4gICAgICAgICAgICBmb3JtQ29udGV4dCxcbiAgICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICAgICAgcmF3RXJyb3JzLFxuICAgICAgICAgICAgcmVnaXN0cnksXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0FycmF5RmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gX2pzeChUZW1wbGF0ZSwgeyAuLi5hcnJheVByb3BzIH0pO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyBhbiBhcnJheSB1c2luZyB0aGUgY3VzdG9tIHdpZGdldCBwcm92aWRlZCBieSB0aGUgdXNlciBpbiB0aGUgYHVpU2NoZW1hYFxuICAgICAqL1xuICAgIHJlbmRlckN1c3RvbVdpZGdldCgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgaWRTY2hlbWEsIHVpU2NoZW1hLCBkaXNhYmxlZCA9IGZhbHNlLCByZWFkb25seSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgcmVxdWlyZWQgPSBmYWxzZSwgaGlkZUVycm9yLCBwbGFjZWhvbGRlciwgb25CbHVyLCBvbkZvY3VzLCBmb3JtRGF0YTogaXRlbXMgPSBbXSwgcmVnaXN0cnksIHJhd0Vycm9ycywgbmFtZSwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgd2lkZ2V0cywgZm9ybUNvbnRleHQsIGdsb2JhbFVpT3B0aW9ucywgc2NoZW1hVXRpbHMgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICBjb25zdCB7IHdpZGdldCwgdGl0bGU6IHVpVGl0bGUsIC4uLm9wdGlvbnMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICAgICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSAoX2EgPSB1aVRpdGxlICE9PSBudWxsICYmIHVpVGl0bGUgIT09IHZvaWQgMCA/IHVpVGl0bGUgOiBzY2hlbWEudGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5hbWU7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gKF9qc3goV2lkZ2V0LCB7IGlkOiBpZFNjaGVtYS4kaWQsIG5hbWU6IG5hbWUsIG11bHRpcGxlOiB0cnVlLCBvbkNoYW5nZTogdGhpcy5vblNlbGVjdENoYW5nZSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIG9wdGlvbnM6IG9wdGlvbnMsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgdmFsdWU6IGl0ZW1zLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgaGlkZUVycm9yOiBoaWRlRXJyb3IsIHJlcXVpcmVkOiByZXF1aXJlZCwgbGFiZWw6IGxhYmVsLCBoaWRlTGFiZWw6ICFkaXNwbGF5TGFiZWwsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgcmF3RXJyb3JzOiByYXdFcnJvcnMgfSkpO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyBhbiBhcnJheSBhcyBhIHNldCBvZiBjaGVja2JveGVzXG4gICAgICovXG4gICAgcmVuZGVyTXVsdGlTZWxlY3QoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEsIGlkU2NoZW1hLCB1aVNjaGVtYSwgZm9ybURhdGE6IGl0ZW1zID0gW10sIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCByZXF1aXJlZCA9IGZhbHNlLCBwbGFjZWhvbGRlciwgb25CbHVyLCBvbkZvY3VzLCByZWdpc3RyeSwgcmF3RXJyb3JzLCBuYW1lLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyB3aWRnZXRzLCBzY2hlbWFVdGlscywgZm9ybUNvbnRleHQsIGdsb2JhbFVpT3B0aW9ucyB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IGl0ZW1zU2NoZW1hID0gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoc2NoZW1hLml0ZW1zLCBpdGVtcyk7XG4gICAgICAgIGNvbnN0IGVudW1PcHRpb25zID0gb3B0aW9uc0xpc3QoaXRlbXNTY2hlbWEsIHVpU2NoZW1hKTtcbiAgICAgICAgY29uc3QgeyB3aWRnZXQgPSAnc2VsZWN0JywgdGl0bGU6IHVpVGl0bGUsIC4uLm9wdGlvbnMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICAgICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSAoX2EgPSB1aVRpdGxlICE9PSBudWxsICYmIHVpVGl0bGUgIT09IHZvaWQgMCA/IHVpVGl0bGUgOiBzY2hlbWEudGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5hbWU7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gKF9qc3goV2lkZ2V0LCB7IGlkOiBpZFNjaGVtYS4kaWQsIG5hbWU6IG5hbWUsIG11bHRpcGxlOiB0cnVlLCBvbkNoYW5nZTogdGhpcy5vblNlbGVjdENoYW5nZSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIG9wdGlvbnM6IHsgLi4ub3B0aW9ucywgZW51bU9wdGlvbnMgfSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCB2YWx1ZTogaXRlbXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCByZXF1aXJlZDogcmVxdWlyZWQsIGxhYmVsOiBsYWJlbCwgaGlkZUxhYmVsOiAhZGlzcGxheUxhYmVsLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIHJhd0Vycm9yczogcmF3RXJyb3JzIH0pKTtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgYW4gYXJyYXkgb2YgZmlsZXMgdXNpbmcgdGhlIGBGaWxlV2lkZ2V0YFxuICAgICAqL1xuICAgIHJlbmRlckZpbGVzKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCB1aVNjaGVtYSwgaWRTY2hlbWEsIG5hbWUsIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCByZXF1aXJlZCA9IGZhbHNlLCBvbkJsdXIsIG9uRm9jdXMsIHJlZ2lzdHJ5LCBmb3JtRGF0YTogaXRlbXMgPSBbXSwgcmF3RXJyb3JzLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyB3aWRnZXRzLCBmb3JtQ29udGV4dCwgZ2xvYmFsVWlPcHRpb25zLCBzY2hlbWFVdGlscyB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IHsgd2lkZ2V0ID0gJ2ZpbGVzJywgdGl0bGU6IHVpVGl0bGUsIC4uLm9wdGlvbnMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICAgICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSAoX2EgPSB1aVRpdGxlICE9PSBudWxsICYmIHVpVGl0bGUgIT09IHZvaWQgMCA/IHVpVGl0bGUgOiBzY2hlbWEudGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5hbWU7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gKF9qc3goV2lkZ2V0LCB7IG9wdGlvbnM6IG9wdGlvbnMsIGlkOiBpZFNjaGVtYS4kaWQsIG5hbWU6IG5hbWUsIG11bHRpcGxlOiB0cnVlLCBvbkNoYW5nZTogdGhpcy5vblNlbGVjdENoYW5nZSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHZhbHVlOiBpdGVtcywgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIHJlcXVpcmVkOiByZXF1aXJlZCwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIGF1dG9mb2N1czogYXV0b2ZvY3VzLCByYXdFcnJvcnM6IHJhd0Vycm9ycywgbGFiZWw6IGxhYmVsLCBoaWRlTGFiZWw6ICFkaXNwbGF5TGFiZWwgfSkpO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyBhbiBhcnJheSB0aGF0IGhhcyBhIG1heGltdW0gbGltaXQgb2YgaXRlbXNcbiAgICAgKi9cbiAgICByZW5kZXJGaXhlZEFycmF5KCkge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgdWlTY2hlbWEgPSB7fSwgZm9ybURhdGEgPSBbXSwgZXJyb3JTY2hlbWEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciA9ICdfJywgaWRTY2hlbWEsIG5hbWUsIHRpdGxlLCBkaXNhYmxlZCA9IGZhbHNlLCByZWFkb25seSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgcmVxdWlyZWQgPSBmYWxzZSwgcmVnaXN0cnksIG9uQmx1ciwgb25Gb2N1cywgcmF3RXJyb3JzLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBsZXQgeyBmb3JtRGF0YTogaXRlbXMgPSBbXSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgZmllbGRUaXRsZSA9IHNjaGVtYS50aXRsZSB8fCB0aXRsZSB8fCBuYW1lO1xuICAgICAgICBjb25zdCB1aU9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgICAgICBjb25zdCB7IHNjaGVtYVV0aWxzLCBmb3JtQ29udGV4dCB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IF9zY2hlbWFJdGVtcyA9IGlzT2JqZWN0KHNjaGVtYS5pdGVtcykgPyBzY2hlbWEuaXRlbXMgOiBbXTtcbiAgICAgICAgY29uc3QgaXRlbVNjaGVtYXMgPSBfc2NoZW1hSXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoaXRlbSwgZm9ybURhdGFbaW5kZXhdKSk7XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uYWxTY2hlbWEgPSBpc09iamVjdChzY2hlbWEuYWRkaXRpb25hbEl0ZW1zKVxuICAgICAgICAgICAgPyBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShzY2hlbWEuYWRkaXRpb25hbEl0ZW1zLCBmb3JtRGF0YSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgaWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPCBpdGVtU2NoZW1hcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIHRvIG1ha2Ugc3VyZSBhdCBsZWFzdCBhbGwgZml4ZWQgaXRlbXMgYXJlIGdlbmVyYXRlZFxuICAgICAgICAgICAgaXRlbXMgPSBpdGVtcyB8fCBbXTtcbiAgICAgICAgICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KG5ldyBBcnJheShpdGVtU2NoZW1hcy5sZW5ndGggLSBpdGVtcy5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGVzZSBhcmUgdGhlIHByb3BzIHBhc3NlZCBpbnRvIHRoZSByZW5kZXIgZnVuY3Rpb25cbiAgICAgICAgY29uc3QgY2FuQWRkID0gdGhpcy5jYW5BZGRJdGVtKGl0ZW1zKSAmJiAhIWFkZGl0aW9uYWxTY2hlbWE7XG4gICAgICAgIGNvbnN0IGFycmF5UHJvcHMgPSB7XG4gICAgICAgICAgICBjYW5BZGQsXG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmaWVsZCBmaWVsZC1hcnJheSBmaWVsZC1hcnJheS1maXhlZC1pdGVtcycsXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIGlkU2NoZW1hLFxuICAgICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgICBpdGVtczoga2V5ZWRGb3JtRGF0YS5tYXAoKGtleWVkSXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGtleSwgaXRlbSB9ID0ga2V5ZWRJdGVtO1xuICAgICAgICAgICAgICAgIC8vIFdoaWxlIHdlIGFyZSBhY3R1YWxseSBkZWFsaW5nIHdpdGggYSBzaW5nbGUgaXRlbSBvZiB0eXBlIFQsIHRoZSB0eXBlcyByZXF1aXJlIGEgVFtdLCBzbyBjYXN0XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUNhc3QgPSBpdGVtO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWwgPSBpbmRleCA+PSBpdGVtU2NoZW1hcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbVNjaGVtYSA9IChhZGRpdGlvbmFsICYmIGlzT2JqZWN0KHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMpXG4gICAgICAgICAgICAgICAgICAgID8gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcywgaXRlbUNhc3QpXG4gICAgICAgICAgICAgICAgICAgIDogaXRlbVNjaGVtYXNbaW5kZXhdKSB8fCB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtSWRQcmVmaXggPSBpZFNjaGVtYS4kaWQgKyBpZFNlcGFyYXRvciArIGluZGV4O1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JZFNjaGVtYSA9IHNjaGVtYVV0aWxzLnRvSWRTY2hlbWEoaXRlbVNjaGVtYSwgaXRlbUlkUHJlZml4LCBpdGVtQ2FzdCwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtVWlTY2hlbWEgPSBhZGRpdGlvbmFsXG4gICAgICAgICAgICAgICAgICAgID8gdWlTY2hlbWEuYWRkaXRpb25hbEl0ZW1zIHx8IHt9XG4gICAgICAgICAgICAgICAgICAgIDogQXJyYXkuaXNBcnJheSh1aVNjaGVtYS5pdGVtcylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdWlTY2hlbWEuaXRlbXNbaW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVpU2NoZW1hLml0ZW1zIHx8IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1FcnJvclNjaGVtYSA9IGVycm9yU2NoZW1hID8gZXJyb3JTY2hlbWFbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckFycmF5RmllbGRJdGVtKHtcbiAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSAmJiBgJHtuYW1lfS0ke2luZGV4fWAsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmaWVsZFRpdGxlID8gYCR7ZmllbGRUaXRsZX0tJHtpbmRleCArIDF9YCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2FuQWRkLFxuICAgICAgICAgICAgICAgICAgICBjYW5SZW1vdmU6IGFkZGl0aW9uYWwsXG4gICAgICAgICAgICAgICAgICAgIGNhbk1vdmVVcDogaW5kZXggPj0gaXRlbVNjaGVtYXMubGVuZ3RoICsgMSxcbiAgICAgICAgICAgICAgICAgICAgY2FuTW92ZURvd246IGFkZGl0aW9uYWwgJiYgaW5kZXggPCBpdGVtcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgICAgICBpdGVtU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBpdGVtRGF0YTogaXRlbUNhc3QsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1VaVNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbUlkU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBpdGVtRXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1czogYXV0b2ZvY3VzICYmIGluZGV4ID09PSAwLFxuICAgICAgICAgICAgICAgICAgICBvbkJsdXIsXG4gICAgICAgICAgICAgICAgICAgIG9uRm9jdXMsXG4gICAgICAgICAgICAgICAgICAgIHJhd0Vycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgdG90YWxJdGVtczoga2V5ZWRGb3JtRGF0YS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG9uQWRkQ2xpY2s6IHRoaXMub25BZGRDbGljayxcbiAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICByZWdpc3RyeSxcbiAgICAgICAgICAgIHNjaGVtYSxcbiAgICAgICAgICAgIHVpU2NoZW1hLFxuICAgICAgICAgICAgdGl0bGU6IGZpZWxkVGl0bGUsXG4gICAgICAgICAgICBmb3JtQ29udGV4dCxcbiAgICAgICAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgICAgICAgcmF3RXJyb3JzLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdBcnJheUZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIF9qc3goVGVtcGxhdGUsIHsgLi4uYXJyYXlQcm9wcyB9KTtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgdGhlIGluZGl2aWR1YWwgYXJyYXkgaXRlbSB1c2luZyBhIGBTY2hlbWFGaWVsZGAgYWxvbmcgd2l0aCB0aGUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIGJlIHNlbmRcbiAgICAgKiBiYWNrIHRvIHRoZSBgQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgcHJvcHMgZm9yIHRoZSBpbmRpdmlkdWFsIGFycmF5IGl0ZW0gdG8gYmUgcmVuZGVyZWRcbiAgICAgKi9cbiAgICByZW5kZXJBcnJheUZpZWxkSXRlbShwcm9wcykge1xuICAgICAgICBjb25zdCB7IGtleSwgaW5kZXgsIG5hbWUsIGNhbkFkZCwgY2FuUmVtb3ZlID0gdHJ1ZSwgY2FuTW92ZVVwLCBjYW5Nb3ZlRG93biwgaXRlbVNjaGVtYSwgaXRlbURhdGEsIGl0ZW1VaVNjaGVtYSwgaXRlbUlkU2NoZW1hLCBpdGVtRXJyb3JTY2hlbWEsIGF1dG9mb2N1cywgb25CbHVyLCBvbkZvY3VzLCByYXdFcnJvcnMsIHRvdGFsSXRlbXMsIHRpdGxlLCB9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IHsgZGlzYWJsZWQsIGhpZGVFcnJvciwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCByZWFkb25seSwgdWlTY2hlbWEsIHJlZ2lzdHJ5LCBmb3JtQ29udGV4dCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBmaWVsZHM6IHsgQXJyYXlTY2hlbWFGaWVsZCwgU2NoZW1hRmllbGQgfSwgZ2xvYmFsVWlPcHRpb25zLCB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IEl0ZW1TY2hlbWFGaWVsZCA9IEFycmF5U2NoZW1hRmllbGQgfHwgU2NoZW1hRmllbGQ7XG4gICAgICAgIGNvbnN0IHsgb3JkZXJhYmxlID0gdHJ1ZSwgcmVtb3ZhYmxlID0gdHJ1ZSwgY29weWFibGUgPSBmYWxzZSB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBoYXMgPSB7XG4gICAgICAgICAgICBtb3ZlVXA6IG9yZGVyYWJsZSAmJiBjYW5Nb3ZlVXAsXG4gICAgICAgICAgICBtb3ZlRG93bjogb3JkZXJhYmxlICYmIGNhbk1vdmVEb3duLFxuICAgICAgICAgICAgY29weTogY29weWFibGUgJiYgY2FuQWRkLFxuICAgICAgICAgICAgcmVtb3ZlOiByZW1vdmFibGUgJiYgY2FuUmVtb3ZlLFxuICAgICAgICAgICAgdG9vbGJhcjogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGhhcy50b29sYmFyID0gT2JqZWN0LmtleXMoaGFzKS5zb21lKChrZXkpID0+IGhhc1trZXldKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiAoX2pzeChJdGVtU2NoZW1hRmllbGQsIHsgbmFtZTogbmFtZSwgdGl0bGU6IHRpdGxlLCBpbmRleDogaW5kZXgsIHNjaGVtYTogaXRlbVNjaGVtYSwgdWlTY2hlbWE6IGl0ZW1VaVNjaGVtYSwgZm9ybURhdGE6IGl0ZW1EYXRhLCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIGVycm9yU2NoZW1hOiBpdGVtRXJyb3JTY2hlbWEsIGlkUHJlZml4OiBpZFByZWZpeCwgaWRTZXBhcmF0b3I6IGlkU2VwYXJhdG9yLCBpZFNjaGVtYTogaXRlbUlkU2NoZW1hLCByZXF1aXJlZDogdGhpcy5pc0l0ZW1SZXF1aXJlZChpdGVtU2NoZW1hKSwgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2VGb3JJbmRleChpbmRleCksIG9uQmx1cjogb25CbHVyLCBvbkZvY3VzOiBvbkZvY3VzLCByZWdpc3RyeTogcmVnaXN0cnksIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCBoaWRlRXJyb3I6IGhpZGVFcnJvciwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIHJhd0Vycm9yczogcmF3RXJyb3JzIH0pKSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2FycmF5LWl0ZW0nLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBjYW5BZGQsXG4gICAgICAgICAgICBoYXNDb3B5OiBoYXMuY29weSxcbiAgICAgICAgICAgIGhhc1Rvb2xiYXI6IGhhcy50b29sYmFyLFxuICAgICAgICAgICAgaGFzTW92ZVVwOiBoYXMubW92ZVVwLFxuICAgICAgICAgICAgaGFzTW92ZURvd246IGhhcy5tb3ZlRG93bixcbiAgICAgICAgICAgIGhhc1JlbW92ZTogaGFzLnJlbW92ZSxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgdG90YWxJdGVtcyxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIG9uQWRkSW5kZXhDbGljazogdGhpcy5vbkFkZEluZGV4Q2xpY2ssXG4gICAgICAgICAgICBvbkNvcHlJbmRleENsaWNrOiB0aGlzLm9uQ29weUluZGV4Q2xpY2ssXG4gICAgICAgICAgICBvbkRyb3BJbmRleENsaWNrOiB0aGlzLm9uRHJvcEluZGV4Q2xpY2ssXG4gICAgICAgICAgICBvblJlb3JkZXJDbGljazogdGhpcy5vblJlb3JkZXJDbGljayxcbiAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgcmVnaXN0cnksXG4gICAgICAgICAgICBzY2hlbWE6IGl0ZW1TY2hlbWEsXG4gICAgICAgICAgICB1aVNjaGVtYTogaXRlbVVpU2NoZW1hLFxuICAgICAgICB9O1xuICAgIH1cbn1cbi8qKiBgQXJyYXlGaWVsZGAgaXMgYFJlYWN0LkNvbXBvbmVudFR5cGU8RmllbGRQcm9wczxUW10sIFMsIEY+PmAgKG5lY2Vzc2FyaWx5KSBidXQgdGhlIGByZWdpc3RyeWAgcmVxdWlyZXMgdGhpbmdzIHRvIGJlIGFcbiAqIGBGaWVsZGAgd2hpY2ggaXMgZGVmaW5lZCBhcyBgUmVhY3QuQ29tcG9uZW50VHlwZTxGaWVsZFByb3BzPFQsIFMsIEY+PmAsIHNvIGNhc3QgaXQgdG8gbWFrZSBgcmVnaXN0cnlgIGhhcHB5LlxuICovXG5leHBvcnQgZGVmYXVsdCBBcnJheUZpZWxkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXJyYXlGaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0V2lkZ2V0LCBnZXRVaU9wdGlvbnMsIG9wdGlvbnNMaXN0LCBUcmFuc2xhdGFibGVTdHJpbmcsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG4vKiogVGhlIGBCb29sZWFuRmllbGRgIGNvbXBvbmVudCBpcyB1c2VkIHRvIHJlbmRlciBhIGZpZWxkIGluIHRoZSBzY2hlbWEgaXMgYm9vbGVhbi4gSXQgY29uc3RydWN0cyBgZW51bU9wdGlvbnNgIGZvciB0aGVcbiAqIHR3byBib29sZWFuIHZhbHVlcyBiYXNlZCBvbiB0aGUgdmFyaW91cyBhbHRlcm5hdGl2ZXMgaW4gdGhlIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEZpZWxkUHJvcHNgIGZvciB0aGlzIHRlbXBsYXRlXG4gKi9cbmZ1bmN0aW9uIEJvb2xlYW5GaWVsZChwcm9wcykge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGNvbnN0IHsgc2NoZW1hLCBuYW1lLCB1aVNjaGVtYSwgaWRTY2hlbWEsIGZvcm1EYXRhLCByZWdpc3RyeSwgcmVxdWlyZWQsIGRpc2FibGVkLCByZWFkb25seSwgaGlkZUVycm9yLCBhdXRvZm9jdXMsIHRpdGxlLCBvbkNoYW5nZSwgb25Gb2N1cywgb25CbHVyLCByYXdFcnJvcnMsIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IHRpdGxlOiBzY2hlbWFUaXRsZSB9ID0gc2NoZW1hO1xuICAgIGNvbnN0IHsgd2lkZ2V0cywgZm9ybUNvbnRleHQsIHRyYW5zbGF0ZVN0cmluZywgZ2xvYmFsVWlPcHRpb25zIH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCB7IHdpZGdldCA9ICdjaGVja2JveCcsIHRpdGxlOiB1aVRpdGxlLCBcbiAgICAvLyBVbmxpa2UgdGhlIG90aGVyIGZpZWxkcywgZG9uJ3QgdXNlIGBnZXREaXNwbGF5TGFiZWwoKWAgc2luY2UgaXQgYWx3YXlzIHJldHVybnMgZmFsc2UgZm9yIHRoZSBib29sZWFuIHR5cGVcbiAgICBsYWJlbDogZGlzcGxheUxhYmVsID0gdHJ1ZSwgLi4ub3B0aW9ucyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IFdpZGdldCA9IGdldFdpZGdldChzY2hlbWEsIHdpZGdldCwgd2lkZ2V0cyk7XG4gICAgY29uc3QgeWVzID0gdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5ZZXNMYWJlbCk7XG4gICAgY29uc3Qgbm8gPSB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLk5vTGFiZWwpO1xuICAgIGxldCBlbnVtT3B0aW9ucztcbiAgICBjb25zdCBsYWJlbCA9IChfYiA9IChfYSA9IHVpVGl0bGUgIT09IG51bGwgJiYgdWlUaXRsZSAhPT0gdm9pZCAwID8gdWlUaXRsZSA6IHNjaGVtYVRpdGxlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aXRsZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogbmFtZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEub25lT2YpKSB7XG4gICAgICAgIGVudW1PcHRpb25zID0gb3B0aW9uc0xpc3Qoe1xuICAgICAgICAgICAgb25lT2Y6IHNjaGVtYS5vbmVPZlxuICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChvcHRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5vcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb3B0aW9uLnRpdGxlIHx8IChvcHRpb24uY29uc3QgPT09IHRydWUgPyB5ZXMgOiBubyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKG8pID0+IG8pLCAvLyBjYXN0IGF3YXkgdGhlIGVycm9yIHRoYXQgdHlwZXNjcmlwdCBjYW4ndCBncm9rIGlzIGZpeGVkXG4gICAgICAgIH0sIHVpU2NoZW1hKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIFdlIGRlcHJlY2F0ZWQgZW51bU5hbWVzIGluIHY1LiBJdCdzIGludGVudGlvbmFsbHkgb21pdHRlZCBmcm9tIFJTSkZTY2hlbWEgdHlwZSwgc28gd2UgbmVlZCB0byBjYXN0IGhlcmUuXG4gICAgICAgIGNvbnN0IHNjaGVtYVdpdGhFbnVtTmFtZXMgPSBzY2hlbWE7XG4gICAgICAgIGNvbnN0IGVudW1zID0gKF9jID0gc2NoZW1hLmVudW0pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IFt0cnVlLCBmYWxzZV07XG4gICAgICAgIGlmICghc2NoZW1hV2l0aEVudW1OYW1lcy5lbnVtTmFtZXMgJiYgZW51bXMubGVuZ3RoID09PSAyICYmIGVudW1zLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gJ2Jvb2xlYW4nKSkge1xuICAgICAgICAgICAgZW51bU9wdGlvbnMgPSBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bXNbMF0sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbnVtc1swXSA/IHllcyA6IG5vLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bXNbMV0sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbnVtc1sxXSA/IHllcyA6IG5vLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZW51bU9wdGlvbnMgPSBvcHRpb25zTGlzdCh7XG4gICAgICAgICAgICAgICAgZW51bTogZW51bXMsXG4gICAgICAgICAgICAgICAgLy8gTk9URTogZW51bU5hbWVzIGlzIGRlcHJlY2F0ZWQsIGJ1dCBzdGlsbCBzdXBwb3J0ZWQgZm9yIG5vdy5cbiAgICAgICAgICAgICAgICBlbnVtTmFtZXM6IHNjaGVtYVdpdGhFbnVtTmFtZXMuZW51bU5hbWVzLFxuICAgICAgICAgICAgfSwgdWlTY2hlbWEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoX2pzeChXaWRnZXQsIHsgb3B0aW9uczogeyAuLi5vcHRpb25zLCBlbnVtT3B0aW9ucyB9LCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCBpZDogaWRTY2hlbWEuJGlkLCBuYW1lOiBuYW1lLCBvbkNoYW5nZTogb25DaGFuZ2UsIG9uRm9jdXM6IG9uRm9jdXMsIG9uQmx1cjogb25CbHVyLCBsYWJlbDogbGFiZWwsIGhpZGVMYWJlbDogIWRpc3BsYXlMYWJlbCwgdmFsdWU6IGZvcm1EYXRhLCByZXF1aXJlZDogcmVxdWlyZWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCBoaWRlRXJyb3I6IGhpZGVFcnJvciwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIGF1dG9mb2N1czogYXV0b2ZvY3VzLCByYXdFcnJvcnM6IHJhd0Vycm9ycyB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBCb29sZWFuRmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Cb29sZWFuRmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgb21pdCBmcm9tICdsb2Rhc2gvb21pdCc7XG5pbXBvcnQgeyBBTllfT0ZfS0VZLCBkZWVwRXF1YWxzLCBFUlJPUlNfS0VZLCBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hLCBnZXRVaU9wdGlvbnMsIGdldFdpZGdldCwgbWVyZ2VTY2hlbWFzLCBPTkVfT0ZfS0VZLCBUcmFuc2xhdGFibGVTdHJpbmcsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQW55T2ZGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSB0aGF0IGlzIGFuIGBhbnlPZmAsIGBhbGxPZmAgb3IgYG9uZU9mYC4gSXQgdHJhY2tzXG4gKiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbiBhbmQgY2xlYW5zIHVwIGFueSBpcnJlbGV2YW50IGRhdGEgaW4gYGZvcm1EYXRhYC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEZpZWxkUHJvcHNgIGZvciB0aGlzIHRlbXBsYXRlXG4gKi9cbmNsYXNzIEFueU9mRmllbGQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIC8qKiBDb25zdHJ1Y3RzIGFuIGBBbnlPZkZpZWxkYCB3aXRoIHRoZSBnaXZlbiBgcHJvcHNgIHRvIGluaXRpYWxpemUgdGhlIGluaXRpYWxseSBzZWxlY3RlZCBvcHRpb24gaW4gc3RhdGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIC8qKiBDYWxsYmFjayBoYW5kbGVyIHRvIHJlbWVtYmVyIHdoYXQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb24gaXMuIEluIGFkZGl0aW9uIHRvIHRoYXQgdGhlIGBmb3JtRGF0YWAgaXMgdXBkYXRlZFxuICAgICAgICAgKiB0byByZW1vdmUgcHJvcGVydGllcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgbmV3bHkgc2VsZWN0ZWQgb3B0aW9uIHNjaGVtYSwgYW5kIHRoZW4gdGhlIHVwZGF0ZWQgZGF0YSBpcyBwYXNzZWQgdG9cbiAgICAgICAgICogdGhlIGBvbkNoYW5nZWAgaGFuZGxlci5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIG9wdGlvbiAtIFRoZSBuZXcgb3B0aW9uIHZhbHVlIGJlaW5nIHNlbGVjdGVkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uT3B0aW9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBzZWxlY3RlZE9wdGlvbiwgcmV0cmlldmVkT3B0aW9ucyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IHsgZm9ybURhdGEsIG9uQ2hhbmdlLCByZWdpc3RyeSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICAgICAgY29uc3QgaW50T3B0aW9uID0gb3B0aW9uICE9PSB1bmRlZmluZWQgPyBwYXJzZUludChvcHRpb24sIDEwKSA6IC0xO1xuICAgICAgICAgICAgaWYgKGludE9wdGlvbiA9PT0gc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuZXdPcHRpb24gPSBpbnRPcHRpb24gPj0gMCA/IHJldHJpZXZlZE9wdGlvbnNbaW50T3B0aW9uXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IG9sZE9wdGlvbiA9IHNlbGVjdGVkT3B0aW9uID49IDAgPyByZXRyaWV2ZWRPcHRpb25zW3NlbGVjdGVkT3B0aW9uXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxldCBuZXdGb3JtRGF0YSA9IHNjaGVtYVV0aWxzLnNhbml0aXplRGF0YUZvck5ld1NjaGVtYShuZXdPcHRpb24sIG9sZE9wdGlvbiwgZm9ybURhdGEpO1xuICAgICAgICAgICAgaWYgKG5ld09wdGlvbikge1xuICAgICAgICAgICAgICAgIC8vIENhbGwgZ2V0RGVmYXVsdEZvcm1TdGF0ZSB0byBtYWtlIHN1cmUgZGVmYXVsdHMgYXJlIHBvcHVsYXRlZCBvbiBjaGFuZ2UuIFBhc3MgXCJleGNsdWRlT2JqZWN0Q2hpbGRyZW5cIlxuICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgb25seSB0aGUgcm9vdCBvYmplY3RzIHRoZW1zZWx2ZXMgYXJlIGNyZWF0ZWQgd2l0aG91dCBhZGRpbmcgdW5kZWZpbmVkIGNoaWxkcmVuIHByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YSA9IHNjaGVtYVV0aWxzLmdldERlZmF1bHRGb3JtU3RhdGUobmV3T3B0aW9uLCBuZXdGb3JtRGF0YSwgJ2V4Y2x1ZGVPYmplY3RDaGlsZHJlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGVkT3B0aW9uOiBpbnRPcHRpb24gfSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKG5ld0Zvcm1EYXRhLCB1bmRlZmluZWQsIHRoaXMuZ2V0RmllbGRJZCgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCB7IGZvcm1EYXRhLCBvcHRpb25zLCByZWdpc3RyeTogeyBzY2hlbWFVdGlscyB9LCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgLy8gY2FjaGUgdGhlIHJldHJpZXZlZCBvcHRpb25zIGluIHN0YXRlIGluIGNhc2UgdGhleSBoYXZlICRyZWZzIHRvIHNhdmUgZG9pbmcgaXQgbGF0ZXJcbiAgICAgICAgY29uc3QgcmV0cmlldmVkT3B0aW9ucyA9IG9wdGlvbnMubWFwKChvcHQpID0+IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKG9wdCwgZm9ybURhdGEpKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHJldHJpZXZlZE9wdGlvbnMsXG4gICAgICAgICAgICBzZWxlY3RlZE9wdGlvbjogdGhpcy5nZXRNYXRjaGluZ09wdGlvbigwLCBmb3JtRGF0YSwgcmV0cmlldmVkT3B0aW9ucyksXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBSZWFjdCBsaWZlY3ljbGUgbWV0aG9kIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHByb3BzIGFuZC9vciBzdGF0ZSBmb3IgdGhpcyBjb21wb25lbnQgaXMgdXBkYXRlZC4gSXQgcmVjb21wdXRlcyB0aGVcbiAgICAgKiBjdXJyZW50bHkgc2VsZWN0ZWQgb3B0aW9uIGJhc2VkIG9uIHRoZSBvdmVyYWxsIGBmb3JtRGF0YWBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcmV2UHJvcHMgLSBUaGUgcHJldmlvdXMgYEZpZWxkUHJvcHNgIGZvciB0aGlzIHRlbXBsYXRlXG4gICAgICogQHBhcmFtIHByZXZTdGF0ZSAtIFRoZSBwcmV2aW91cyBgQW55T2ZGaWVsZFN0YXRlYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgICBjb25zdCB7IGZvcm1EYXRhLCBvcHRpb25zLCBpZFNjaGVtYSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBzZWxlY3RlZE9wdGlvbiB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgbGV0IG5ld1N0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgaWYgKCFkZWVwRXF1YWxzKHByZXZQcm9wcy5vcHRpb25zLCBvcHRpb25zKSkge1xuICAgICAgICAgICAgY29uc3QgeyByZWdpc3RyeTogeyBzY2hlbWFVdGlscyB9LCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIC8vIHJlLWNhY2hlIHRoZSByZXRyaWV2ZWQgb3B0aW9ucyBpbiBzdGF0ZSBpbiBjYXNlIHRoZXkgaGF2ZSAkcmVmcyB0byBzYXZlIGRvaW5nIGl0IGxhdGVyXG4gICAgICAgICAgICBjb25zdCByZXRyaWV2ZWRPcHRpb25zID0gb3B0aW9ucy5tYXAoKG9wdCkgPT4gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEob3B0LCBmb3JtRGF0YSkpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB7IHNlbGVjdGVkT3B0aW9uLCByZXRyaWV2ZWRPcHRpb25zIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZWVwRXF1YWxzKGZvcm1EYXRhLCBwcmV2UHJvcHMuZm9ybURhdGEpICYmIGlkU2NoZW1hLiRpZCA9PT0gcHJldlByb3BzLmlkU2NoZW1hLiRpZCkge1xuICAgICAgICAgICAgY29uc3QgeyByZXRyaWV2ZWRPcHRpb25zIH0gPSBuZXdTdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nT3B0aW9uID0gdGhpcy5nZXRNYXRjaGluZ09wdGlvbihzZWxlY3RlZE9wdGlvbiwgZm9ybURhdGEsIHJldHJpZXZlZE9wdGlvbnMpO1xuICAgICAgICAgICAgaWYgKHByZXZTdGF0ZSAmJiBtYXRjaGluZ09wdGlvbiAhPT0gc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICBuZXdTdGF0ZSA9IHsgc2VsZWN0ZWRPcHRpb246IG1hdGNoaW5nT3B0aW9uLCByZXRyaWV2ZWRPcHRpb25zIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld1N0YXRlICE9PSB0aGlzLnN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgYmVzdCBtYXRjaGluZyBvcHRpb24gZm9yIHRoZSBnaXZlbiBgZm9ybURhdGFgIGFuZCBgb3B0aW9uc2AuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgbmV3IGZvcm1EYXRhXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRvIGNob29zZSBmcm9tXG4gICAgICogQHJldHVybiAtIFRoZSBpbmRleCBvZiB0aGUgYG9wdGlvbmAgdGhhdCBiZXN0IG1hdGNoZXMgdGhlIGBmb3JtRGF0YWBcbiAgICAgKi9cbiAgICBnZXRNYXRjaGluZ09wdGlvbihzZWxlY3RlZE9wdGlvbiwgZm9ybURhdGEsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEsIHJlZ2lzdHJ5OiB7IHNjaGVtYVV0aWxzIH0sIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYShzY2hlbWEpO1xuICAgICAgICBjb25zdCBvcHRpb24gPSBzY2hlbWFVdGlscy5nZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24oZm9ybURhdGEsIG9wdGlvbnMsIHNlbGVjdGVkT3B0aW9uLCBkaXNjcmltaW5hdG9yKTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9XG4gICAgZ2V0RmllbGRJZCgpIHtcbiAgICAgICAgY29uc3QgeyBpZFNjaGVtYSwgc2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICByZXR1cm4gYCR7aWRTY2hlbWEuJGlkfSR7c2NoZW1hLm9uZU9mID8gJ19fb25lb2Zfc2VsZWN0JyA6ICdfX2FueW9mX3NlbGVjdCd9YDtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgdGhlIGBBbnlPZkZpZWxkYCBzZWxlY3RvciBhbG9uZyB3aXRoIGEgYFNjaGVtYUZpZWxkYCBmb3IgdGhlIHZhbHVlIG9mIHRoZSBgZm9ybURhdGFgXG4gICAgICovXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IG5hbWUsIGRpc2FibGVkID0gZmFsc2UsIGVycm9yU2NoZW1hID0ge30sIGZvcm1Db250ZXh0LCBvbkJsdXIsIG9uRm9jdXMsIHJlZ2lzdHJ5LCBzY2hlbWEsIHVpU2NoZW1hLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyB3aWRnZXRzLCBmaWVsZHMsIHRyYW5zbGF0ZVN0cmluZywgZ2xvYmFsVWlPcHRpb25zLCBzY2hlbWFVdGlscyB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IHsgU2NoZW1hRmllbGQ6IF9TY2hlbWFGaWVsZCB9ID0gZmllbGRzO1xuICAgICAgICBjb25zdCB7IHNlbGVjdGVkT3B0aW9uLCByZXRyaWV2ZWRPcHRpb25zIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCB7IHdpZGdldCA9ICdzZWxlY3QnLCBwbGFjZWhvbGRlciwgYXV0b2ZvY3VzLCBhdXRvY29tcGxldGUsIHRpdGxlID0gc2NoZW1hLnRpdGxlLCAuLi51aU9wdGlvbnMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICAgICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHsgdHlwZTogJ251bWJlcicgfSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICAgICAgY29uc3QgcmF3RXJyb3JzID0gZ2V0KGVycm9yU2NoZW1hLCBFUlJPUlNfS0VZLCBbXSk7XG4gICAgICAgIGNvbnN0IGZpZWxkRXJyb3JTY2hlbWEgPSBvbWl0KGVycm9yU2NoZW1hLCBbRVJST1JTX0tFWV0pO1xuICAgICAgICBjb25zdCBkaXNwbGF5TGFiZWwgPSBzY2hlbWFVdGlscy5nZXREaXNwbGF5TGFiZWwoc2NoZW1hLCB1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gc2VsZWN0ZWRPcHRpb24gPj0gMCA/IHJldHJpZXZlZE9wdGlvbnNbc2VsZWN0ZWRPcHRpb25dIHx8IG51bGwgOiBudWxsO1xuICAgICAgICBsZXQgb3B0aW9uU2NoZW1hO1xuICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgICAvLyBtZXJnZSB0b3AgbGV2ZWwgcmVxdWlyZWQgZmllbGRcbiAgICAgICAgICAgIGNvbnN0IHsgcmVxdWlyZWQgfSA9IHNjaGVtYTtcbiAgICAgICAgICAgIC8vIE1lcmdlIGluIGFsbCB0aGUgbm9uLW9uZU9mL2FueU9mIHByb3BlcnRpZXMgYW5kIGFsc28gc2tpcCB0aGUgc3BlY2lhbCBBRERJVElPTkFMX1BST1BFUlRZX0ZMQUcgcHJvcGVydHlcbiAgICAgICAgICAgIG9wdGlvblNjaGVtYSA9IHJlcXVpcmVkID8gbWVyZ2VTY2hlbWFzKHsgcmVxdWlyZWQgfSwgb3B0aW9uKSA6IG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaXJzdCB3ZSB3aWxsIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhbiBhbnlPZi9vbmVPZiBvdmVycmlkZSBmb3IgdGhlIFVJIHNjaGVtYVxuICAgICAgICBsZXQgb3B0aW9uc1VpU2NoZW1hID0gW107XG4gICAgICAgIGlmIChPTkVfT0ZfS0VZIGluIHNjaGVtYSAmJiB1aVNjaGVtYSAmJiBPTkVfT0ZfS0VZIGluIHVpU2NoZW1hKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh1aVNjaGVtYVtPTkVfT0ZfS0VZXSkpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zVWlTY2hlbWEgPSB1aVNjaGVtYVtPTkVfT0ZfS0VZXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgdWlTY2hlbWEub25lT2YgaXMgbm90IGFuIGFycmF5IGZvciBcIiR7dGl0bGUgfHwgbmFtZX1cImApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKEFOWV9PRl9LRVkgaW4gc2NoZW1hICYmIHVpU2NoZW1hICYmIEFOWV9PRl9LRVkgaW4gdWlTY2hlbWEpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHVpU2NoZW1hW0FOWV9PRl9LRVldKSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnNVaVNjaGVtYSA9IHVpU2NoZW1hW0FOWV9PRl9LRVldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGB1aVNjaGVtYS5hbnlPZiBpcyBub3QgYW4gYXJyYXkgZm9yIFwiJHt0aXRsZSB8fCBuYW1lfVwiYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlbiB3ZSBwaWNrIHRoZSBvbmUgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3RlZCBvcHRpb24gaW5kZXgsIGlmIG9uZSBleGlzdHMgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdGhlIG1haW4gdWlTY2hlbWFcbiAgICAgICAgbGV0IG9wdGlvblVpU2NoZW1hID0gdWlTY2hlbWE7XG4gICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbiA+PSAwICYmIG9wdGlvbnNVaVNjaGVtYS5sZW5ndGggPiBzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgb3B0aW9uVWlTY2hlbWEgPSBvcHRpb25zVWlTY2hlbWFbc2VsZWN0ZWRPcHRpb25dO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZUVudW0gPSB0aXRsZVxuICAgICAgICAgICAgPyBUcmFuc2xhdGFibGVTdHJpbmcuVGl0bGVPcHRpb25QcmVmaXhcbiAgICAgICAgICAgIDogVHJhbnNsYXRhYmxlU3RyaW5nLk9wdGlvblByZWZpeDtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlUGFyYW1zID0gdGl0bGUgPyBbdGl0bGVdIDogW107XG4gICAgICAgIGNvbnN0IGVudW1PcHRpb25zID0gcmV0cmlldmVkT3B0aW9ucy5tYXAoKG9wdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIC8vIEFsc28gc2VlIGlmIHRoZXJlIGlzIGFuIG92ZXJyaWRlIHRpdGxlIGluIHRoZSB1aVNjaGVtYSBmb3IgZWFjaCBvcHRpb24sIG90aGVyd2lzZSB1c2UgdGhlIHRpdGxlIGZyb20gdGhlIG9wdGlvblxuICAgICAgICAgICAgY29uc3QgeyB0aXRsZTogdWlUaXRsZSA9IG9wdC50aXRsZSB9ID0gZ2V0VWlPcHRpb25zKG9wdGlvbnNVaVNjaGVtYVtpbmRleF0pO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdWlUaXRsZSB8fCB0cmFuc2xhdGVTdHJpbmcodHJhbnNsYXRlRW51bSwgdHJhbnNsYXRlUGFyYW1zLmNvbmNhdChTdHJpbmcoaW5kZXggKyAxKSkpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpbmRleCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAncGFuZWwgcGFuZWwtZGVmYXVsdCBwYW5lbC1ib2R5JywgY2hpbGRyZW46IFtfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnZm9ybS1ncm91cCcsIGNoaWxkcmVuOiBfanN4KFdpZGdldCwgeyBpZDogdGhpcy5nZXRGaWVsZElkKCksIG5hbWU6IGAke25hbWV9JHtzY2hlbWEub25lT2YgPyAnX19vbmVvZl9zZWxlY3QnIDogJ19fYW55b2Zfc2VsZWN0J31gLCBzY2hlbWE6IHsgdHlwZTogJ251bWJlcicsIGRlZmF1bHQ6IDAgfSwgb25DaGFuZ2U6IHRoaXMub25PcHRpb25DaGFuZ2UsIG9uQmx1cjogb25CbHVyLCBvbkZvY3VzOiBvbkZvY3VzLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgaXNFbXB0eShlbnVtT3B0aW9ucyksIG11bHRpcGxlOiBmYWxzZSwgcmF3RXJyb3JzOiByYXdFcnJvcnMsIGVycm9yU2NoZW1hOiBmaWVsZEVycm9yU2NoZW1hLCB2YWx1ZTogc2VsZWN0ZWRPcHRpb24gPj0gMCA/IHNlbGVjdGVkT3B0aW9uIDogdW5kZWZpbmVkLCBvcHRpb25zOiB7IGVudW1PcHRpb25zLCAuLi51aU9wdGlvbnMgfSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgYXV0b2NvbXBsZXRlOiBhdXRvY29tcGxldGUsIGF1dG9mb2N1czogYXV0b2ZvY3VzLCBsYWJlbDogdGl0bGUgIT09IG51bGwgJiYgdGl0bGUgIT09IHZvaWQgMCA/IHRpdGxlIDogbmFtZSwgaGlkZUxhYmVsOiAhZGlzcGxheUxhYmVsIH0pIH0pLCBvcHRpb25TY2hlbWEgJiYgX2pzeChfU2NoZW1hRmllbGQsIHsgLi4udGhpcy5wcm9wcywgc2NoZW1hOiBvcHRpb25TY2hlbWEsIHVpU2NoZW1hOiBvcHRpb25VaVNjaGVtYSB9KV0gfSkpO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEFueU9mRmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NdWx0aVNjaGVtYUZpZWxkLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhc051bWJlciB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8vIE1hdGNoZXMgYSBzdHJpbmcgdGhhdCBlbmRzIGluIGEgLiBjaGFyYWN0ZXIsIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSBzZXF1ZW5jZSBvZlxuLy8gZGlnaXRzIGZvbGxvd2VkIGJ5IGFueSBudW1iZXIgb2YgMCBjaGFyYWN0ZXJzIHVwIHVudGlsIHRoZSBlbmQgb2YgdGhlIGxpbmUuXG4vLyBFbnN1cmluZyB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwcmVmaXhlZCBjaGFyYWN0ZXIgaXMgaW1wb3J0YW50IHNvIHRoYXRcbi8vIHlvdSBkb24ndCBpbmNvcnJlY3RseSBtYXRjaCBhZ2FpbnN0IFwiMFwiLlxuY29uc3QgdHJhaWxpbmdDaGFyTWF0Y2hlcldpdGhQcmVmaXggPSAvXFwuKFswLTldKjApKiQvO1xuLy8gVGhpcyBpcyB1c2VkIGZvciB0cmltbWluZyB0aGUgdHJhaWxpbmcgMCBhbmQgLiBjaGFyYWN0ZXJzIHdpdGhvdXQgYWZmZWN0aW5nXG4vLyB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLiBJdHMgcG9zc2libGUgdG8gdXNlIG9uZSBSZWdFeCB3aXRoIGdyb3VwcyBmb3IgdGhpc1xuLy8gZnVuY3Rpb25hbGl0eSwgYnV0IGl0IGlzIGZhaXJseSBjb21wbGV4IGNvbXBhcmVkIHRvIHNpbXBseSBkZWZpbmluZyB0d29cbi8vIGRpZmZlcmVudCBtYXRjaGVycy5cbmNvbnN0IHRyYWlsaW5nQ2hhck1hdGNoZXIgPSAvWzAuXTAqJC87XG4vKipcbiAqIFRoZSBOdW1iZXJGaWVsZCBjbGFzcyBoYXMgc29tZSBzcGVjaWFsIGhhbmRsaW5nIGZvciBkZWFsaW5nIHdpdGggdHJhaWxpbmdcbiAqIGRlY2ltYWwgcG9pbnRzIGFuZC9vciB6ZXJvZXMuIFRoaXMgbG9naWMgaXMgZGVzaWduZWQgdG8gYWxsb3cgdHJhaWxpbmcgdmFsdWVzXG4gKiB0byBiZSB2aXNpYmxlIGluIHRoZSBpbnB1dCBlbGVtZW50LCBidXQgbm90IGJlIHJlcHJlc2VudGVkIGluIHRoZVxuICogY29ycmVzcG9uZGluZyBmb3JtIGRhdGEuXG4gKlxuICogVGhlIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOlxuICpcbiAqIDEuIFdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMgdGhlIHZhbHVlIGlzIGNhY2hlZCBpbiB0aGUgY29tcG9uZW50IHN0YXRlXG4gKlxuICogMi4gVGhlIHZhbHVlIGlzIHRoZW4gbm9ybWFsaXplZCwgcmVtb3ZpbmcgdHJhaWxpbmcgZGVjaW1hbCBwb2ludHMgYW5kIHplcm9zLFxuICogICAgdGhlbiBwYXNzZWQgdG8gdGhlIFwib25DaGFuZ2VcIiBjYWxsYmFja1xuICpcbiAqIDMuIFdoZW4gdGhlIGNvbXBvbmVudCBpcyByZW5kZXJlZCwgdGhlIGZvcm1EYXRhIHZhbHVlIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGVcbiAqICAgIHZhbHVlIGNhY2hlZCBpbiB0aGUgc3RhdGUuIElmIGl0IG1hdGNoZXMgdGhlIGNhY2hlZCB2YWx1ZSwgdGhlIGNhY2hlZFxuICogICAgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBpbnB1dCBpbnN0ZWFkIG9mIHRoZSBmb3JtRGF0YSB2YWx1ZVxuICovXG5mdW5jdGlvbiBOdW1iZXJGaWVsZChwcm9wcykge1xuICAgIGNvbnN0IHsgcmVnaXN0cnksIG9uQ2hhbmdlLCBmb3JtRGF0YSwgdmFsdWU6IGluaXRpYWxWYWx1ZSB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2xhc3RWYWx1ZSwgc2V0TGFzdFZhbHVlXSA9IHVzZVN0YXRlKGluaXRpYWxWYWx1ZSk7XG4gICAgY29uc3QgeyBTdHJpbmdGaWVsZCB9ID0gcmVnaXN0cnkuZmllbGRzO1xuICAgIGxldCB2YWx1ZSA9IGZvcm1EYXRhO1xuICAgIC8qKiBIYW5kbGUgdGhlIGNoYW5nZSBmcm9tIHRoZSBgU3RyaW5nRmllbGRgIHRvIHByb3Blcmx5IGNvbnZlcnQgdG8gYSBudW1iZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjdXJyZW50IHZhbHVlIGZvciB0aGUgY2hhbmdlIG9jY3VycmluZ1xuICAgICAqL1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKCh2YWx1ZSwgZXJyb3JTY2hlbWEsIGlkKSA9PiB7XG4gICAgICAgIC8vIENhY2hlIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiBjb21wb25lbnQgc3RhdGVcbiAgICAgICAgc2V0TGFzdFZhbHVlKHZhbHVlKTtcbiAgICAgICAgLy8gTm9ybWFsaXplIGRlY2ltYWxzIHRoYXQgZG9uJ3Qgc3RhcnQgd2l0aCBhIHplcm8gY2hhcmFjdGVyIGluIGFkdmFuY2Ugc29cbiAgICAgICAgLy8gdGhhdCB0aGUgcmVzdCBvZiB0aGUgbm9ybWFsaXphdGlvbiBsb2dpYyBpcyBzaW1wbGVyXG4gICAgICAgIGlmIChgJHt2YWx1ZX1gLmNoYXJBdCgwKSA9PT0gJy4nKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGAwJHt2YWx1ZX1gO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHZhbHVlIGlzIGEgc3RyaW5nICh0aGlzIGNhbiBoYXBwZW4gaWYgdGhlIHdpZGdldCB1c2VkIGlzIGFcbiAgICAgICAgLy8gPHNlbGVjdD4sIGR1ZSB0byBhbiBlbnVtIGRlY2xhcmF0aW9uIGV0YykgdGhlbiwgaWYgdGhlIHZhbHVlIGVuZHMgaW4gYVxuICAgICAgICAvLyB0cmFpbGluZyBkZWNpbWFsIHBvaW50IG9yIG11bHRpcGxlIHplcm9lcywgc3RyaXAgdGhlIHRyYWlsaW5nIHZhbHVlc1xuICAgICAgICBjb25zdCBwcm9jZXNzZWQgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLm1hdGNoKHRyYWlsaW5nQ2hhck1hdGNoZXJXaXRoUHJlZml4KVxuICAgICAgICAgICAgPyBhc051bWJlcih2YWx1ZS5yZXBsYWNlKHRyYWlsaW5nQ2hhck1hdGNoZXIsICcnKSlcbiAgICAgICAgICAgIDogYXNOdW1iZXIodmFsdWUpO1xuICAgICAgICBvbkNoYW5nZShwcm9jZXNzZWQsIGVycm9yU2NoZW1hLCBpZCk7XG4gICAgfSwgW29uQ2hhbmdlXSk7XG4gICAgaWYgKHR5cGVvZiBsYXN0VmFsdWUgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgLy8gQ29uc3RydWN0IGEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgY2hlY2tzIGZvciBhIHN0cmluZyB0aGF0IGNvbnNpc3RzXG4gICAgICAgIC8vIG9mIHRoZSBmb3JtRGF0YSB2YWx1ZSBzdWZmaXhlZCB3aXRoIHplcm8gb3Igb25lICcuJyBjaGFyYWN0ZXJzIGFuZCB6ZXJvXG4gICAgICAgIC8vIG9yIG1vcmUgJzAnIGNoYXJhY3RlcnNcbiAgICAgICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKGBeKCR7U3RyaW5nKHZhbHVlKS5yZXBsYWNlKCcuJywgJ1xcXFwuJyl9KT9cXFxcLj8wKiRgKTtcbiAgICAgICAgLy8gSWYgdGhlIGNhY2hlZCBcImxhc3RWYWx1ZVwiIGlzIGEgbWF0Y2gsIHVzZSB0aGF0IGluc3RlYWQgb2YgdGhlIGZvcm1EYXRhXG4gICAgICAgIC8vIHZhbHVlIHRvIHByZXZlbnQgdGhlIGlucHV0IHZhbHVlIGZyb20gY2hhbmdpbmcgaW4gdGhlIFVJXG4gICAgICAgIGlmIChsYXN0VmFsdWUubWF0Y2gocmUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGxhc3RWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gX2pzeChTdHJpbmdGaWVsZCwgeyAuLi5wcm9wcywgZm9ybURhdGE6IHZhbHVlLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlIH0pO1xufVxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyRmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OdW1iZXJGaWVsZC5qcy5tYXAiLCJpbXBvcnQqYXMgZSBmcm9tXCJyZWFjdFwiO2Z1bmN0aW9uIHQoKXtyZXR1cm4gdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNvbnN0IG49W1wiY2hpbGRyZW5cIixcIm9wdGlvbnNcIl0scj17YmxvY2tRdW90ZTpcIjBcIixicmVha0xpbmU6XCIxXCIsYnJlYWtUaGVtYXRpYzpcIjJcIixjb2RlQmxvY2s6XCIzXCIsY29kZUZlbmNlZDpcIjRcIixjb2RlSW5saW5lOlwiNVwiLGZvb3Rub3RlOlwiNlwiLGZvb3Rub3RlUmVmZXJlbmNlOlwiN1wiLGdmbVRhc2s6XCI4XCIsaGVhZGluZzpcIjlcIixoZWFkaW5nU2V0ZXh0OlwiMTBcIixodG1sQmxvY2s6XCIxMVwiLGh0bWxDb21tZW50OlwiMTJcIixodG1sU2VsZkNsb3Npbmc6XCIxM1wiLGltYWdlOlwiMTRcIixsaW5rOlwiMTVcIixsaW5rQW5nbGVCcmFjZVN0eWxlRGV0ZWN0b3I6XCIxNlwiLGxpbmtCYXJlVXJsRGV0ZWN0b3I6XCIxN1wiLGxpbmtNYWlsdG9EZXRlY3RvcjpcIjE4XCIsbmV3bGluZUNvYWxlc2NlcjpcIjE5XCIsb3JkZXJlZExpc3Q6XCIyMFwiLHBhcmFncmFwaDpcIjIxXCIscmVmOlwiMjJcIixyZWZJbWFnZTpcIjIzXCIscmVmTGluazpcIjI0XCIsdGFibGU6XCIyNVwiLHRhYmxlU2VwYXJhdG9yOlwiMjZcIix0ZXh0OlwiMjdcIix0ZXh0Qm9sZGVkOlwiMjhcIix0ZXh0RW1waGFzaXplZDpcIjI5XCIsdGV4dEVzY2FwZWQ6XCIzMFwiLHRleHRNYXJrZWQ6XCIzMVwiLHRleHRTdHJpa2V0aHJvdWdoZWQ6XCIzMlwiLHVub3JkZXJlZExpc3Q6XCIzM1wifTt2YXIgaTshZnVuY3Rpb24oZSl7ZVtlLk1BWD0wXT1cIk1BWFwiLGVbZS5ISUdIPTFdPVwiSElHSFwiLGVbZS5NRUQ9Ml09XCJNRURcIixlW2UuTE9XPTNdPVwiTE9XXCIsZVtlLk1JTj00XT1cIk1JTlwifShpfHwoaT17fSkpO2NvbnN0IGw9W1wiYWxsb3dGdWxsU2NyZWVuXCIsXCJhbGxvd1RyYW5zcGFyZW5jeVwiLFwiYXV0b0NvbXBsZXRlXCIsXCJhdXRvRm9jdXNcIixcImF1dG9QbGF5XCIsXCJjZWxsUGFkZGluZ1wiLFwiY2VsbFNwYWNpbmdcIixcImNoYXJTZXRcIixcImNsYXNzSWRcIixcImNvbFNwYW5cIixcImNvbnRlbnRFZGl0YWJsZVwiLFwiY29udGV4dE1lbnVcIixcImNyb3NzT3JpZ2luXCIsXCJlbmNUeXBlXCIsXCJmb3JtQWN0aW9uXCIsXCJmb3JtRW5jVHlwZVwiLFwiZm9ybU1ldGhvZFwiLFwiZm9ybU5vVmFsaWRhdGVcIixcImZvcm1UYXJnZXRcIixcImZyYW1lQm9yZGVyXCIsXCJocmVmTGFuZ1wiLFwiaW5wdXRNb2RlXCIsXCJrZXlQYXJhbXNcIixcImtleVR5cGVcIixcIm1hcmdpbkhlaWdodFwiLFwibWFyZ2luV2lkdGhcIixcIm1heExlbmd0aFwiLFwibWVkaWFHcm91cFwiLFwibWluTGVuZ3RoXCIsXCJub1ZhbGlkYXRlXCIsXCJyYWRpb0dyb3VwXCIsXCJyZWFkT25seVwiLFwicm93U3BhblwiLFwic3BlbGxDaGVja1wiLFwic3JjRG9jXCIsXCJzcmNMYW5nXCIsXCJzcmNTZXRcIixcInRhYkluZGV4XCIsXCJ1c2VNYXBcIl0ucmVkdWNlKChlLHQpPT4oZVt0LnRvTG93ZXJDYXNlKCldPXQsZSkse2NsYXNzOlwiY2xhc3NOYW1lXCIsZm9yOlwiaHRtbEZvclwifSksYT17YW1wOlwiJlwiLGFwb3M6XCInXCIsZ3Q6XCI+XCIsbHQ6XCI8XCIsbmJzcDpcIsKgXCIscXVvdDpcIuKAnFwifSxvPVtcInN0eWxlXCIsXCJzY3JpcHRcIl0sYz0vKFstQS1aMC05XzpdKykoPzpcXHMqPVxccyooPzooPzpcIigoPzpcXFxcLnxbXlwiXSkqKVwiKXwoPzonKCg/OlxcXFwufFteJ10pKiknKXwoPzpcXHsoKD86XFxcXC58e1tefV0qP318W159XSkqKVxcfSkpKT8vZ2kscz0vbWFpbHRvOi9pLGQ9L1xcbnsyLH0kLyxwPS9eKFxccyo+W1xcc1xcU10qPykoPz1cXG5cXG58JCkvLHU9L14gKj4gPy9nbSxmPS9eKD86XFxbIShbXlxcXV0qKVxcXVxcbik/KFtcXHNcXFNdKikvLGg9L14gezIsfVxcbi8sbT0vXig/OiggKlstKl9dKSl7Myx9ICooPzpcXG4gKikrXFxuLyxnPS9eKD86IHsxLDN9KT8oYHszLH18fnszLH0pICooXFxTKyk/ICooW15cXG5dKj8pP1xcbihbXFxzXFxTXSo/KSg/OlxcMVxcbj98JCkvLHk9L14oPzogezR9W15cXG5dK1xcbiopKyg/OlxcbiAqKStcXG4/LyxrPS9eKGArKVxccyooW1xcc1xcU10qP1teYF0pXFxzKlxcMSg/IWApLyx4PS9eKD86XFxuICopKlxcbi8sYj0vXFxyXFxuPy9nLHY9L15cXFtcXF4oW15cXF1dKyldKDooLiopKChcXG4rIHs0LH0uKil8KFxcbig/IVxcW1xcXikuKykpKikvLFM9L15cXFtcXF4oW15cXF1dKyldLyxDPS9cXGYvZywkPS9eLS0tWyBcXHRdKlxcbigufFxcbikqXFxuLS0tWyBcXHRdKlxcbi8sRT0vXlxccyo/XFxbKHh8XFxzKVxcXS8sdz0vXiAqKCN7MSw2fSkgKihbXlxcbl0rPykoPzogKyMqKT8oPzpcXG4gKikqKD86XFxufCQpLyx6PS9eICooI3sxLDZ9KSArKFteXFxuXSs/KSg/OiArIyopPyg/OlxcbiAqKSooPzpcXG58JCkvLEw9L14oW15cXG5dKylcXG4gKig9fC0pezMsfSAqKD86XFxuICopK1xcbi8sQT0vXiAqKD8hPFthLXpdW14gPi9dKiA/XFwvPik8KFthLXpdW14gPi9dKikgPygoPzpbXj5dKlteL10pPyk+XFxuPyhcXHMqKD86PFxcMVtePl0qPz5bXFxzXFxTXSo/PFxcL1xcMT58KD8hPFxcMVxcYilbXFxzXFxTXSkqPyk8XFwvXFwxPig/ITxcXC9cXDE+KVxcbiovaSxUPS8mKFthLXowLTldK3wjWzAtOV17MSw2fXwjeFswLTlhLWZBLUZdezEsNn0pOy9naSxPPS9ePCEtLVtcXHNcXFNdKj8oPzotLT4pLyxCPS9eKGRhdGF8YXJpYXx4KS1bYS16X11bYS16XFxkXy4tXSokLyxNPS9eICo8KFthLXpdW2EtejAtOTpdKikoPzpcXHMrKCg/OjwuKj8+fFtePl0pKikpP1xcLz8+KD8hPFxcL1xcMT4pKFxccypcXG4pPy9pLFI9L15cXHsuKlxcfSQvLEk9L14oaHR0cHM/OlxcL1xcL1teXFxzPF0rW148Liw6O1wiJylcXF1cXHNdKS8sVT0vXjwoW14gPl0rQFteID5dKyk+LyxEPS9ePChbXiA+XSs6XFwvW14gPl0rKT4vLE49Ly0oW2Etel0pPy9naSxqPS9eKFxcfC4qKVxcbig/OiAqKFxcfD8gKlstOl0rICpcXHxbLXwgOl0qKVxcbigoPzouKlxcfC4qXFxuKSopKT9cXG4/LyxIPS9eXFxbKFteXFxdXSopXFxdOlxccys8PyhbXlxccz5dKyk+P1xccyooXCIoW15cIl0qKVwiKT8vLFA9L14hXFxbKFteXFxdXSopXFxdID9cXFsoW15cXF1dKilcXF0vLEY9L15cXFsoW15cXF1dKilcXF0gP1xcWyhbXlxcXV0qKVxcXS8sXz0vKFxcbnxeWy0qXVxcc3xeI3xeIHsyLH18Xi17Mix9fF4+XFxzKS8sRz0vXFx0L2csVz0vKF4gKlxcfHxcXHwgKiQpL2csWj0vXiAqOi0rOiAqJC8scT0vXiAqOi0rICokLyxRPS9eICotKzogKiQvLFY9XCIoKD86XFxcXFsuKj9cXFxcXVsoW10uKj9bKVxcXFxdXXw8Lio/Pig/Oi4qPzwuKj8+KT98YC4qP2B8fn4uKj9+fnw9PS4qPz09fC58XFxcXG4pKj8pXCIsWD1uZXcgUmVnRXhwKGBeKFsqX10pXFxcXDEke1Z9XFxcXDFcXFxcMSg/IVxcXFwxKWApLEo9bmV3IFJlZ0V4cChgXihbKl9dKSR7Vn1cXFxcMSg/IVxcXFwxfFxcXFx3KWApLEs9bmV3IFJlZ0V4cChgXj09JHtWfT09YCksWT1uZXcgUmVnRXhwKGBefn4ke1Z9fn5gKSxlZT0vXlxcXFwoW14wLTlBLVphLXpcXHNdKS8sdGU9L15bXFxzXFxTXSs/KD89W14wLTlBLVpcXHNcXHUwMGMwLVxcdWZmZmYmIzsuKCknXCJdfFxcZCtcXC58XFxuXFxufCB7Mix9XFxufFxcdys6XFxTfCQpL2ksbmU9L15cXG4rLyxyZT0vXihbIFxcdF0qKS8saWU9L1xcXFwoW15cXFxcXSkvZyxsZT0vICpcXG4rJC8sYWU9Lyg/Ol58XFxuKSggKikkLyxvZT1cIig/OlxcXFxkK1xcXFwuKVwiLGNlPVwiKD86WyorLV0pXCI7ZnVuY3Rpb24gc2UoZSl7cmV0dXJuXCIoICopKFwiKygxPT09ZT9vZTpjZSkrXCIpICtcIn1jb25zdCBkZT1zZSgxKSxwZT1zZSgyKTtmdW5jdGlvbiB1ZShlKXtyZXR1cm4gbmV3IFJlZ0V4cChcIl5cIisoMT09PWU/ZGU6cGUpKX1jb25zdCBmZT11ZSgxKSxoZT11ZSgyKTtmdW5jdGlvbiBtZShlKXtyZXR1cm4gbmV3IFJlZ0V4cChcIl5cIisoMT09PWU/ZGU6cGUpK1wiW15cXFxcbl0qKD86XFxcXG4oPyFcXFxcMVwiKygxPT09ZT9vZTpjZSkrXCIgKVteXFxcXG5dKikqKFxcXFxufCQpXCIsXCJnbVwiKX1jb25zdCBnZT1tZSgxKSx5ZT1tZSgyKTtmdW5jdGlvbiBrZShlKXtjb25zdCB0PTE9PT1lP29lOmNlO3JldHVybiBuZXcgUmVnRXhwKFwiXiggKikoXCIrdCtcIikgW1xcXFxzXFxcXFNdKz8oPzpcXFxcbnsyLH0oPyEgKSg/IVxcXFwxXCIrdCtcIiAoPyFcIit0K1wiICkpXFxcXG4qfFxcXFxzKlxcXFxuKiQpXCIpfWNvbnN0IHhlPWtlKDEpLGJlPWtlKDIpO2Z1bmN0aW9uIHZlKGUsdCl7Y29uc3Qgbj0xPT09dCxpPW4/eGU6YmUsbD1uP2dlOnllLGE9bj9mZTpoZTtyZXR1cm57bWF0Y2goZSx0KXtjb25zdCBuPWFlLmV4ZWModC5wcmV2Q2FwdHVyZSk7cmV0dXJuIG4mJih0Lmxpc3R8fCF0LmlubGluZSYmIXQuc2ltcGxlKT9pLmV4ZWMoZT1uWzFdK2UpOm51bGx9LG9yZGVyOjEscGFyc2UoZSx0LHIpe2NvbnN0IGk9bj8rZVsyXTp2b2lkIDAsbz1lWzBdLnJlcGxhY2UoZCxcIlxcblwiKS5tYXRjaChsKTtsZXQgYz0hMTtyZXR1cm57aXRlbXM6by5tYXAoZnVuY3Rpb24oZSxuKXtjb25zdCBpPWEuZXhlYyhlKVswXS5sZW5ndGgsbD1uZXcgUmVnRXhwKFwiXiB7MSxcIitpK1wifVwiLFwiZ21cIikscz1lLnJlcGxhY2UobCxcIlwiKS5yZXBsYWNlKGEsXCJcIiksZD1uPT09by5sZW5ndGgtMSxwPS0xIT09cy5pbmRleE9mKFwiXFxuXFxuXCIpfHxkJiZjO2M9cDtjb25zdCB1PXIuaW5saW5lLGY9ci5saXN0O2xldCBoO3IubGlzdD0hMCxwPyhyLmlubGluZT0hMSxoPXMucmVwbGFjZShsZSxcIlxcblxcblwiKSk6KHIuaW5saW5lPSEwLGg9cy5yZXBsYWNlKGxlLFwiXCIpKTtjb25zdCBtPXQoaCxyKTtyZXR1cm4gci5pbmxpbmU9dSxyLmxpc3Q9ZixtfSksb3JkZXJlZDpuLHN0YXJ0Oml9fSxyZW5kZXI6KHQsbixpKT0+ZSh0Lm9yZGVyZWQ/XCJvbFwiOlwidWxcIix7a2V5Omkua2V5LHN0YXJ0OnQudHlwZT09PXIub3JkZXJlZExpc3Q/dC5zdGFydDp2b2lkIDB9LHQuaXRlbXMubWFwKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUoXCJsaVwiLHtrZXk6cn0sbih0LGkpKX0pKX19Y29uc3QgU2U9bmV3IFJlZ0V4cChcIl5cXFxcWygoPzpcXFxcW1teXFxcXF1dKlxcXFxdfFteXFxcXFtcXFxcXV18XFxcXF0oPz1bXlxcXFxbXSpcXFxcXSkpKilcXFxcXVxcXFwoXFxcXHMqPD8oKD86XFxcXChbXildKlxcXFwpfFteXFxcXHNcXFxcXFxcXF18XFxcXFxcXFwuKSo/KT4/KD86XFxcXHMrWydcXFwiXShbXFxcXHNcXFxcU10qPylbJ1xcXCJdKT9cXFxccypcXFxcKVwiKSxDZT0vXiFcXFsoLio/KVxcXVxcKCAqKCg/OlxcKFteKV0qXFwpfFteKCkgXSkqKSAqXCI/KFteKVwiXSopP1wiP1xcKS8sJGU9W3AsZyx5LHcsTCx6LE8saixnZSx4ZSx5ZSxiZV0sRWU9Wy4uLiRlLC9eW15cXG5dKyg/OiAgXFxufFxcbnsyLH0pLyxBLE1dO2Z1bmN0aW9uIHdlKGUpe3JldHVybiBlLnJlcGxhY2UoL1vDgMOBw4LDg8OEw4XDoMOhw6LDo8Okw6XDpsOGXS9nLFwiYVwiKS5yZXBsYWNlKC9bw6fDh10vZyxcImNcIikucmVwbGFjZSgvW8Oww5BdL2csXCJkXCIpLnJlcGxhY2UoL1vDiMOJw4rDi8Opw6jDqsOrXS9nLFwiZVwiKS5yZXBsYWNlKC9bw4/Dr8OOw67DjcOtw4zDrF0vZyxcImlcIikucmVwbGFjZSgvW8ORw7FdL2csXCJuXCIpLnJlcGxhY2UoL1vDuMOYxZPFksOVw7XDlMO0w5PDs8OSw7JdL2csXCJvXCIpLnJlcGxhY2UoL1vDnMO8w5vDu8Oaw7rDmcO5XS9nLFwidVwiKS5yZXBsYWNlKC9bxbjDv8Odw71dL2csXCJ5XCIpLnJlcGxhY2UoL1teYS16MC05LSBdL2dpLFwiXCIpLnJlcGxhY2UoLyAvZ2ksXCItXCIpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gemUoZSl7cmV0dXJuIFEudGVzdChlKT9cInJpZ2h0XCI6Wi50ZXN0KGUpP1wiY2VudGVyXCI6cS50ZXN0KGUpP1wibGVmdFwiOm51bGx9ZnVuY3Rpb24gTGUoZSx0LG4saSl7Y29uc3QgbD1uLmluVGFibGU7bi5pblRhYmxlPSEwO2xldCBhPWUudHJpbSgpLnNwbGl0KC8oICooPzpgW15gXSpgfFxcXFxcXHx8XFx8KSAqKS8pLnJlZHVjZSgoZSxsKT0+KFwifFwiPT09bC50cmltKCk/ZS5wdXNoKGk/e3R5cGU6ci50YWJsZVNlcGFyYXRvcn06e3R5cGU6ci50ZXh0LHRleHQ6bH0pOlwiXCIhPT1sJiZlLnB1c2guYXBwbHkoZSx0KGwsbikpLGUpLFtdKTtuLmluVGFibGU9bDtsZXQgbz1bW11dO3JldHVybiBhLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLnR5cGU9PT1yLnRhYmxlU2VwYXJhdG9yPzAhPT10JiZ0IT09YS5sZW5ndGgtMSYmby5wdXNoKFtdKTooZS50eXBlIT09ci50ZXh0fHxudWxsIT1hW3QrMV0mJmFbdCsxXS50eXBlIT09ci50YWJsZVNlcGFyYXRvcnx8KGUudGV4dD1lLnRleHQudHJpbUVuZCgpKSxvW28ubGVuZ3RoLTFdLnB1c2goZSkpfSksb31mdW5jdGlvbiBBZShlLHQsbil7bi5pbmxpbmU9ITA7Y29uc3QgaT1lWzJdP2VbMl0ucmVwbGFjZShXLFwiXCIpLnNwbGl0KFwifFwiKS5tYXAoemUpOltdLGw9ZVszXT9mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUudHJpbSgpLnNwbGl0KFwiXFxuXCIpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gTGUoZSx0LG4sITApfSl9KGVbM10sdCxuKTpbXSxhPUxlKGVbMV0sdCxuLCEhbC5sZW5ndGgpO3JldHVybiBuLmlubGluZT0hMSxsLmxlbmd0aD97YWxpZ246aSxjZWxsczpsLGhlYWRlcjphLHR5cGU6ci50YWJsZX06e2NoaWxkcmVuOmEsdHlwZTpyLnBhcmFncmFwaH19ZnVuY3Rpb24gVGUoZSx0KXtyZXR1cm4gbnVsbD09ZS5hbGlnblt0XT97fTp7dGV4dEFsaWduOmUuYWxpZ25bdF19fWZ1bmN0aW9uIE9lKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBuLmlubGluZT9lLmV4ZWModCk6bnVsbH19ZnVuY3Rpb24gQmUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uaW5saW5lfHxuLnNpbXBsZT9lLmV4ZWModCk6bnVsbH19ZnVuY3Rpb24gTWUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uaW5saW5lfHxuLnNpbXBsZT9udWxsOmUuZXhlYyh0KX19ZnVuY3Rpb24gUmUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmV4ZWModCl9fWZ1bmN0aW9uIEllKGUsdCl7aWYodC5pbmxpbmV8fHQuc2ltcGxlKXJldHVybiBudWxsO2xldCBuPVwiXCI7ZS5zcGxpdChcIlxcblwiKS5ldmVyeShlPT4hJGUuc29tZSh0PT50LnRlc3QoZSkpJiYobis9ZStcIlxcblwiLGUudHJpbSgpKSk7Y29uc3Qgcj1uLnRyaW1FbmQoKTtyZXR1cm5cIlwiPT1yP251bGw6W24scl19ZnVuY3Rpb24gVWUoZSl7dHJ5e2lmKGRlY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC9bXkEtWmEtejAtOS86XS9nLFwiXCIpLm1hdGNoKC9eXFxzKihqYXZhc2NyaXB0fHZic2NyaXB0fGRhdGEoPyE6aW1hZ2UpKTovaSkpcmV0dXJuIG51bGx9Y2F0Y2goZSl7cmV0dXJuIG51bGx9cmV0dXJuIGV9ZnVuY3Rpb24gRGUoZSl7cmV0dXJuIGUucmVwbGFjZShpZSxcIiQxXCIpfWZ1bmN0aW9uIE5lKGUsdCxuKXtjb25zdCByPW4uaW5saW5lfHwhMSxpPW4uc2ltcGxlfHwhMTtuLmlubGluZT0hMCxuLnNpbXBsZT0hMDtjb25zdCBsPWUodCxuKTtyZXR1cm4gbi5pbmxpbmU9cixuLnNpbXBsZT1pLGx9ZnVuY3Rpb24gamUoZSx0LG4pe2NvbnN0IHI9bi5pbmxpbmV8fCExLGk9bi5zaW1wbGV8fCExO24uaW5saW5lPSExLG4uc2ltcGxlPSEwO2NvbnN0IGw9ZSh0LG4pO3JldHVybiBuLmlubGluZT1yLG4uc2ltcGxlPWksbH1mdW5jdGlvbiBIZShlLHQsbil7Y29uc3Qgcj1uLmlubGluZXx8ITE7bi5pbmxpbmU9ITE7Y29uc3QgaT1lKHQsbik7cmV0dXJuIG4uaW5saW5lPXIsaX1jb25zdCBQZT0oZSx0LG4pPT4oe2NoaWxkcmVuOk5lKHQsZVsxXSxuKX0pO2Z1bmN0aW9uIEZlKCl7cmV0dXJue319ZnVuY3Rpb24gX2UoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBHZSguLi5lKXtyZXR1cm4gZS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIil9ZnVuY3Rpb24gV2UoZSx0LG4pe2xldCByPWU7Y29uc3QgaT10LnNwbGl0KFwiLlwiKTtmb3IoO2kubGVuZ3RoJiYocj1yW2lbMF1dLHZvaWQgMCE9PXIpOylpLnNoaWZ0KCk7cmV0dXJuIHJ8fG59ZnVuY3Rpb24gWmUobj1cIlwiLGk9e30pe2Z1bmN0aW9uIGQoZSxuLC4uLnIpe2NvbnN0IGw9V2UoaS5vdmVycmlkZXMsYCR7ZX0ucHJvcHNgLHt9KTtyZXR1cm4gaS5jcmVhdGVFbGVtZW50KGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1XZSh0LGUpO3JldHVybiBuP1wiZnVuY3Rpb25cIj09dHlwZW9mIG58fFwib2JqZWN0XCI9PXR5cGVvZiBuJiZcInJlbmRlclwiaW4gbj9uOldlKHQsYCR7ZX0uY29tcG9uZW50YCxlKTplfShlLGkub3ZlcnJpZGVzKSx0KHt9LG4sbCx7Y2xhc3NOYW1lOkdlKG51bGw9PW4/dm9pZCAwOm4uY2xhc3NOYW1lLGwuY2xhc3NOYW1lKXx8dm9pZCAwfSksLi4ucil9ZnVuY3Rpb24gVyhlKXtlPWUucmVwbGFjZSgkLFwiXCIpO2xldCB0PSExO2kuZm9yY2VJbmxpbmU/dD0hMDppLmZvcmNlQmxvY2t8fCh0PSExPT09Xy50ZXN0KGUpKTtjb25zdCBuPWxlKGllKHQ/ZTpgJHtlLnRyaW1FbmQoKS5yZXBsYWNlKG5lLFwiXCIpfVxcblxcbmAse2lubGluZTp0fSkpO2Zvcig7XCJzdHJpbmdcIj09dHlwZW9mIG5bbi5sZW5ndGgtMV0mJiFuW24ubGVuZ3RoLTFdLnRyaW0oKTspbi5wb3AoKTtpZihudWxsPT09aS53cmFwcGVyKXJldHVybiBuO2NvbnN0IHI9aS53cmFwcGVyfHwodD9cInNwYW5cIjpcImRpdlwiKTtsZXQgbDtpZihuLmxlbmd0aD4xfHxpLmZvcmNlV3JhcHBlcilsPW47ZWxzZXtpZigxPT09bi5sZW5ndGgpcmV0dXJuIGw9blswXSxcInN0cmluZ1wiPT10eXBlb2YgbD9kKFwic3BhblwiLHtrZXk6XCJvdXRlclwifSxsKTpsO2w9bnVsbH1yZXR1cm4gaS5jcmVhdGVFbGVtZW50KHIse2tleTpcIm91dGVyXCJ9LGwpfWZ1bmN0aW9uIFooZSx0KXtjb25zdCBuPXQubWF0Y2goYyk7cmV0dXJuIG4/bi5yZWR1Y2UoZnVuY3Rpb24odCxuKXtjb25zdCByPW4uaW5kZXhPZihcIj1cIik7aWYoLTEhPT1yKXtjb25zdCBhPWZ1bmN0aW9uKGUpe3JldHVybi0xIT09ZS5pbmRleE9mKFwiLVwiKSYmbnVsbD09PWUubWF0Y2goQikmJihlPWUucmVwbGFjZShOLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pKSxlfShuLnNsaWNlKDAscikpLnRyaW0oKSxvPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZVswXTtyZXR1cm4oJ1wiJz09PXR8fFwiJ1wiPT09dCkmJmUubGVuZ3RoPj0yJiZlW2UubGVuZ3RoLTFdPT09dD9lLnNsaWNlKDEsLTEpOmV9KG4uc2xpY2UocisxKS50cmltKCkpLGM9bFthXXx8YTtpZihcInJlZlwiPT09YylyZXR1cm4gdDtjb25zdCBzPXRbY109ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuXCJzdHlsZVwiPT09dD9uLnNwbGl0KC87XFxzPy8pLnJlZHVjZShmdW5jdGlvbihlLHQpe2NvbnN0IG49dC5zbGljZSgwLHQuaW5kZXhPZihcIjpcIikpO3JldHVybiBlW24udHJpbSgpLnJlcGxhY2UoLygtW2Etel0pL2csZT0+ZVsxXS50b1VwcGVyQ2FzZSgpKV09dC5zbGljZShuLmxlbmd0aCsxKS50cmltKCksZX0se30pOlwiaHJlZlwiPT09dHx8XCJzcmNcIj09PXQ/cihuLGUsdCk6KG4ubWF0Y2goUikmJihuPW4uc2xpY2UoMSxuLmxlbmd0aC0xKSksXCJ0cnVlXCI9PT1ufHxcImZhbHNlXCIhPT1uJiZuKX0oZSxhLG8saS5zYW5pdGl6ZXIpO1wic3RyaW5nXCI9PXR5cGVvZiBzJiYoQS50ZXN0KHMpfHxNLnRlc3QocykpJiYodFtjXT1XKHMudHJpbSgpKSl9ZWxzZVwic3R5bGVcIiE9PW4mJih0W2xbbl18fG5dPSEwKTtyZXR1cm4gdH0se30pOm51bGx9aS5vdmVycmlkZXM9aS5vdmVycmlkZXN8fHt9LGkuc2FuaXRpemVyPWkuc2FuaXRpemVyfHxVZSxpLnNsdWdpZnk9aS5zbHVnaWZ5fHx3ZSxpLm5hbWVkQ29kZXNUb1VuaWNvZGU9aS5uYW1lZENvZGVzVG9Vbmljb2RlP3Qoe30sYSxpLm5hbWVkQ29kZXNUb1VuaWNvZGUpOmEsaS5jcmVhdGVFbGVtZW50PWkuY3JlYXRlRWxlbWVudHx8ZS5jcmVhdGVFbGVtZW50O2NvbnN0IHE9W10sUT17fSxWPXtbci5ibG9ja1F1b3RlXTp7bWF0Y2g6TWUocCksb3JkZXI6MSxwYXJzZShlLHQsbil7Y29uc3RbLHIsaV09ZVswXS5yZXBsYWNlKHUsXCJcIikubWF0Y2goZik7cmV0dXJue2FsZXJ0OnIsY2hpbGRyZW46dChpLG4pfX0scmVuZGVyKGUsdCxuKXtjb25zdCBsPXtrZXk6bi5rZXl9O3JldHVybiBlLmFsZXJ0JiYobC5jbGFzc05hbWU9XCJtYXJrZG93bi1hbGVydC1cIitpLnNsdWdpZnkoZS5hbGVydC50b0xvd2VyQ2FzZSgpLHdlKSxlLmNoaWxkcmVuLnVuc2hpZnQoe2F0dHJzOnt9LGNoaWxkcmVuOlt7dHlwZTpyLnRleHQsdGV4dDplLmFsZXJ0fV0sbm9Jbm5lclBhcnNlOiEwLHR5cGU6ci5odG1sQmxvY2ssdGFnOlwiaGVhZGVyXCJ9KSksZChcImJsb2NrcXVvdGVcIixsLHQoZS5jaGlsZHJlbixuKSl9fSxbci5icmVha0xpbmVdOnttYXRjaDpSZShoKSxvcmRlcjoxLHBhcnNlOkZlLHJlbmRlcjooZSx0LG4pPT5kKFwiYnJcIix7a2V5Om4ua2V5fSl9LFtyLmJyZWFrVGhlbWF0aWNdOnttYXRjaDpNZShtKSxvcmRlcjoxLHBhcnNlOkZlLHJlbmRlcjooZSx0LG4pPT5kKFwiaHJcIix7a2V5Om4ua2V5fSl9LFtyLmNvZGVCbG9ja106e21hdGNoOk1lKHkpLG9yZGVyOjAscGFyc2U6ZT0+KHtsYW5nOnZvaWQgMCx0ZXh0OmVbMF0ucmVwbGFjZSgvXiB7NH0vZ20sXCJcIikucmVwbGFjZSgvXFxuKyQvLFwiXCIpfSkscmVuZGVyOihlLG4scik9PmQoXCJwcmVcIix7a2V5OnIua2V5fSxkKFwiY29kZVwiLHQoe30sZS5hdHRycyx7Y2xhc3NOYW1lOmUubGFuZz9gbGFuZy0ke2UubGFuZ31gOlwiXCJ9KSxlLnRleHQpKX0sW3IuY29kZUZlbmNlZF06e21hdGNoOk1lKGcpLG9yZGVyOjAscGFyc2U6ZT0+KHthdHRyczpaKFwiY29kZVwiLGVbM118fFwiXCIpLGxhbmc6ZVsyXXx8dm9pZCAwLHRleHQ6ZVs0XSx0eXBlOnIuY29kZUJsb2NrfSl9LFtyLmNvZGVJbmxpbmVdOnttYXRjaDpCZShrKSxvcmRlcjozLHBhcnNlOmU9Pih7dGV4dDplWzJdfSkscmVuZGVyOihlLHQsbik9PmQoXCJjb2RlXCIse2tleTpuLmtleX0sZS50ZXh0KX0sW3IuZm9vdG5vdGVdOnttYXRjaDpNZSh2KSxvcmRlcjowLHBhcnNlOmU9PihxLnB1c2goe2Zvb3Rub3RlOmVbMl0saWRlbnRpZmllcjplWzFdfSkse30pLHJlbmRlcjpfZX0sW3IuZm9vdG5vdGVSZWZlcmVuY2VdOnttYXRjaDpPZShTKSxvcmRlcjoxLHBhcnNlOmU9Pih7dGFyZ2V0OmAjJHtpLnNsdWdpZnkoZVsxXSx3ZSl9YCx0ZXh0OmVbMV19KSxyZW5kZXI6KGUsdCxuKT0+ZChcImFcIix7a2V5Om4ua2V5LGhyZWY6aS5zYW5pdGl6ZXIoZS50YXJnZXQsXCJhXCIsXCJocmVmXCIpfSxkKFwic3VwXCIse2tleTpuLmtleX0sZS50ZXh0KSl9LFtyLmdmbVRhc2tdOnttYXRjaDpPZShFKSxvcmRlcjoxLHBhcnNlOmU9Pih7Y29tcGxldGVkOlwieFwiPT09ZVsxXS50b0xvd2VyQ2FzZSgpfSkscmVuZGVyOihlLHQsbik9PmQoXCJpbnB1dFwiLHtjaGVja2VkOmUuY29tcGxldGVkLGtleTpuLmtleSxyZWFkT25seTohMCx0eXBlOlwiY2hlY2tib3hcIn0pfSxbci5oZWFkaW5nXTp7bWF0Y2g6TWUoaS5lbmZvcmNlQXR4SGVhZGluZ3M/ejp3KSxvcmRlcjoxLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46TmUodCxlWzJdLG4pLGlkOmkuc2x1Z2lmeShlWzJdLHdlKSxsZXZlbDplWzFdLmxlbmd0aH0pLHJlbmRlcjooZSx0LG4pPT5kKGBoJHtlLmxldmVsfWAse2lkOmUuaWQsa2V5Om4ua2V5fSx0KGUuY2hpbGRyZW4sbikpfSxbci5oZWFkaW5nU2V0ZXh0XTp7bWF0Y2g6TWUoTCksb3JkZXI6MCxwYXJzZTooZSx0LG4pPT4oe2NoaWxkcmVuOk5lKHQsZVsxXSxuKSxsZXZlbDpcIj1cIj09PWVbMl0/MToyLHR5cGU6ci5oZWFkaW5nfSl9LFtyLmh0bWxCbG9ja106e21hdGNoOlJlKEEpLG9yZGVyOjEscGFyc2UoZSx0LG4pe2NvbnN0WyxyXT1lWzNdLm1hdGNoKHJlKSxpPW5ldyBSZWdFeHAoYF4ke3J9YCxcImdtXCIpLGw9ZVszXS5yZXBsYWNlKGksXCJcIiksYT0oYz1sLEVlLnNvbWUoZT0+ZS50ZXN0KGMpKT9IZTpOZSk7dmFyIGM7Y29uc3Qgcz1lWzFdLnRvTG93ZXJDYXNlKCksZD0tMSE9PW8uaW5kZXhPZihzKSxwPShkP3M6ZVsxXSkudHJpbSgpLHU9e2F0dHJzOloocCxlWzJdKSxub0lubmVyUGFyc2U6ZCx0YWc6cH07cmV0dXJuIG4uaW5BbmNob3I9bi5pbkFuY2hvcnx8XCJhXCI9PT1zLGQ/dS50ZXh0PWVbM106dS5jaGlsZHJlbj1hKHQsbCxuKSxuLmluQW5jaG9yPSExLHV9LHJlbmRlcjooZSxuLHIpPT5kKGUudGFnLHQoe2tleTpyLmtleX0sZS5hdHRycyksZS50ZXh0fHwoZS5jaGlsZHJlbj9uKGUuY2hpbGRyZW4scik6XCJcIikpfSxbci5odG1sU2VsZkNsb3NpbmddOnttYXRjaDpSZShNKSxvcmRlcjoxLHBhcnNlKGUpe2NvbnN0IHQ9ZVsxXS50cmltKCk7cmV0dXJue2F0dHJzOloodCxlWzJdfHxcIlwiKSx0YWc6dH19LHJlbmRlcjooZSxuLHIpPT5kKGUudGFnLHQoe30sZS5hdHRycyx7a2V5OnIua2V5fSkpfSxbci5odG1sQ29tbWVudF06e21hdGNoOlJlKE8pLG9yZGVyOjEscGFyc2U6KCk9Pih7fSkscmVuZGVyOl9lfSxbci5pbWFnZV06e21hdGNoOkJlKENlKSxvcmRlcjoxLHBhcnNlOmU9Pih7YWx0OmVbMV0sdGFyZ2V0OkRlKGVbMl0pLHRpdGxlOmVbM119KSxyZW5kZXI6KGUsdCxuKT0+ZChcImltZ1wiLHtrZXk6bi5rZXksYWx0OmUuYWx0fHx2b2lkIDAsdGl0bGU6ZS50aXRsZXx8dm9pZCAwLHNyYzppLnNhbml0aXplcihlLnRhcmdldCxcImltZ1wiLFwic3JjXCIpfSl9LFtyLmxpbmtdOnttYXRjaDpPZShTZSksb3JkZXI6MyxwYXJzZTooZSx0LG4pPT4oe2NoaWxkcmVuOmplKHQsZVsxXSxuKSx0YXJnZXQ6RGUoZVsyXSksdGl0bGU6ZVszXX0pLHJlbmRlcjooZSx0LG4pPT5kKFwiYVwiLHtrZXk6bi5rZXksaHJlZjppLnNhbml0aXplcihlLnRhcmdldCxcImFcIixcImhyZWZcIiksdGl0bGU6ZS50aXRsZX0sdChlLmNoaWxkcmVuLG4pKX0sW3IubGlua0FuZ2xlQnJhY2VTdHlsZURldGVjdG9yXTp7bWF0Y2g6T2UoRCksb3JkZXI6MCxwYXJzZTplPT4oe2NoaWxkcmVuOlt7dGV4dDplWzFdLHR5cGU6ci50ZXh0fV0sdGFyZ2V0OmVbMV0sdHlwZTpyLmxpbmt9KX0sW3IubGlua0JhcmVVcmxEZXRlY3Rvcl06e21hdGNoOihlLHQpPT50LmluQW5jaG9yfHxpLmRpc2FibGVBdXRvTGluaz9udWxsOk9lKEkpKGUsdCksb3JkZXI6MCxwYXJzZTplPT4oe2NoaWxkcmVuOlt7dGV4dDplWzFdLHR5cGU6ci50ZXh0fV0sdGFyZ2V0OmVbMV0sdGl0bGU6dm9pZCAwLHR5cGU6ci5saW5rfSl9LFtyLmxpbmtNYWlsdG9EZXRlY3Rvcl06e21hdGNoOk9lKFUpLG9yZGVyOjAscGFyc2UoZSl7bGV0IHQ9ZVsxXSxuPWVbMV07cmV0dXJuIHMudGVzdChuKXx8KG49XCJtYWlsdG86XCIrbikse2NoaWxkcmVuOlt7dGV4dDp0LnJlcGxhY2UoXCJtYWlsdG86XCIsXCJcIiksdHlwZTpyLnRleHR9XSx0YXJnZXQ6bix0eXBlOnIubGlua319fSxbci5vcmRlcmVkTGlzdF06dmUoZCwxKSxbci51bm9yZGVyZWRMaXN0XTp2ZShkLDIpLFtyLm5ld2xpbmVDb2FsZXNjZXJdOnttYXRjaDpNZSh4KSxvcmRlcjozLHBhcnNlOkZlLHJlbmRlcjooKT0+XCJcXG5cIn0sW3IucGFyYWdyYXBoXTp7bWF0Y2g6SWUsb3JkZXI6MyxwYXJzZTpQZSxyZW5kZXI6KGUsdCxuKT0+ZChcInBcIix7a2V5Om4ua2V5fSx0KGUuY2hpbGRyZW4sbikpfSxbci5yZWZdOnttYXRjaDpPZShIKSxvcmRlcjowLHBhcnNlOmU9PihRW2VbMV1dPXt0YXJnZXQ6ZVsyXSx0aXRsZTplWzRdfSx7fSkscmVuZGVyOl9lfSxbci5yZWZJbWFnZV06e21hdGNoOkJlKFApLG9yZGVyOjAscGFyc2U6ZT0+KHthbHQ6ZVsxXXx8dm9pZCAwLHJlZjplWzJdfSkscmVuZGVyOihlLHQsbik9PlFbZS5yZWZdP2QoXCJpbWdcIix7a2V5Om4ua2V5LGFsdDplLmFsdCxzcmM6aS5zYW5pdGl6ZXIoUVtlLnJlZl0udGFyZ2V0LFwiaW1nXCIsXCJzcmNcIiksdGl0bGU6UVtlLnJlZl0udGl0bGV9KTpudWxsfSxbci5yZWZMaW5rXTp7bWF0Y2g6T2UoRiksb3JkZXI6MCxwYXJzZTooZSx0LG4pPT4oe2NoaWxkcmVuOnQoZVsxXSxuKSxmYWxsYmFja0NoaWxkcmVuOmVbMF0scmVmOmVbMl19KSxyZW5kZXI6KGUsdCxuKT0+UVtlLnJlZl0/ZChcImFcIix7a2V5Om4ua2V5LGhyZWY6aS5zYW5pdGl6ZXIoUVtlLnJlZl0udGFyZ2V0LFwiYVwiLFwiaHJlZlwiKSx0aXRsZTpRW2UucmVmXS50aXRsZX0sdChlLmNoaWxkcmVuLG4pKTpkKFwic3BhblwiLHtrZXk6bi5rZXl9LGUuZmFsbGJhY2tDaGlsZHJlbil9LFtyLnRhYmxlXTp7bWF0Y2g6TWUoaiksb3JkZXI6MSxwYXJzZTpBZSxyZW5kZXIoZSx0LG4pe2NvbnN0IHI9ZTtyZXR1cm4gZChcInRhYmxlXCIse2tleTpuLmtleX0sZChcInRoZWFkXCIsbnVsbCxkKFwidHJcIixudWxsLHIuaGVhZGVyLm1hcChmdW5jdGlvbihlLGkpe3JldHVybiBkKFwidGhcIix7a2V5Omksc3R5bGU6VGUocixpKX0sdChlLG4pKX0pKSksZChcInRib2R5XCIsbnVsbCxyLmNlbGxzLm1hcChmdW5jdGlvbihlLGkpe3JldHVybiBkKFwidHJcIix7a2V5Oml9LGUubWFwKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIGQoXCJ0ZFwiLHtrZXk6aSxzdHlsZTpUZShyLGkpfSx0KGUsbikpfSkpfSkpKX19LFtyLnRleHRdOnttYXRjaDpSZSh0ZSksb3JkZXI6NCxwYXJzZTplPT4oe3RleHQ6ZVswXS5yZXBsYWNlKFQsKGUsdCk9PmkubmFtZWRDb2Rlc1RvVW5pY29kZVt0XT9pLm5hbWVkQ29kZXNUb1VuaWNvZGVbdF06ZSl9KSxyZW5kZXI6ZT0+ZS50ZXh0fSxbci50ZXh0Qm9sZGVkXTp7bWF0Y2g6QmUoWCksb3JkZXI6MixwYXJzZTooZSx0LG4pPT4oe2NoaWxkcmVuOnQoZVsyXSxuKX0pLHJlbmRlcjooZSx0LG4pPT5kKFwic3Ryb25nXCIse2tleTpuLmtleX0sdChlLmNoaWxkcmVuLG4pKX0sW3IudGV4dEVtcGhhc2l6ZWRdOnttYXRjaDpCZShKKSxvcmRlcjozLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46dChlWzJdLG4pfSkscmVuZGVyOihlLHQsbik9PmQoXCJlbVwiLHtrZXk6bi5rZXl9LHQoZS5jaGlsZHJlbixuKSl9LFtyLnRleHRFc2NhcGVkXTp7bWF0Y2g6QmUoZWUpLG9yZGVyOjEscGFyc2U6ZT0+KHt0ZXh0OmVbMV0sdHlwZTpyLnRleHR9KX0sW3IudGV4dE1hcmtlZF06e21hdGNoOkJlKEspLG9yZGVyOjMscGFyc2U6UGUscmVuZGVyOihlLHQsbik9PmQoXCJtYXJrXCIse2tleTpuLmtleX0sdChlLmNoaWxkcmVuLG4pKX0sW3IudGV4dFN0cmlrZXRocm91Z2hlZF06e21hdGNoOkJlKFkpLG9yZGVyOjMscGFyc2U6UGUscmVuZGVyOihlLHQsbik9PmQoXCJkZWxcIix7a2V5Om4ua2V5fSx0KGUuY2hpbGRyZW4sbikpfX07ITA9PT1pLmRpc2FibGVQYXJzaW5nUmF3SFRNTCYmKGRlbGV0ZSBWW3IuaHRtbEJsb2NrXSxkZWxldGUgVltyLmh0bWxTZWxmQ2xvc2luZ10pO2NvbnN0IGllPWZ1bmN0aW9uKGUpe2xldCB0PU9iamVjdC5rZXlzKGUpO2Z1bmN0aW9uIG4ocixpKXtsZXQgbD1bXTtmb3IoaS5wcmV2Q2FwdHVyZT1pLnByZXZDYXB0dXJlfHxcIlwiO3I7KXtsZXQgYT0wO2Zvcig7YTx0Lmxlbmd0aDspe2NvbnN0IG89dFthXSxjPWVbb10scz1jLm1hdGNoKHIsaSk7aWYocyl7Y29uc3QgZT1zWzBdO2kucHJldkNhcHR1cmUrPWUscj1yLnN1YnN0cmluZyhlLmxlbmd0aCk7Y29uc3QgdD1jLnBhcnNlKHMsbixpKTtudWxsPT10LnR5cGUmJih0LnR5cGU9byksbC5wdXNoKHQpO2JyZWFrfWErK319cmV0dXJuIGkucHJldkNhcHR1cmU9XCJcIixsfXJldHVybiB0LnNvcnQoZnVuY3Rpb24odCxuKXtsZXQgcj1lW3RdLm9yZGVyLGk9ZVtuXS5vcmRlcjtyZXR1cm4gciE9PWk/ci1pOnQ8bj8tMToxfSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGIsXCJcXG5cIikucmVwbGFjZShDLFwiXCIpLnJlcGxhY2UoRyxcIiAgICBcIil9KGUpLHQpfX0oViksbGU9KGFlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scixpKXtjb25zdCBsPWVbbi50eXBlXS5yZW5kZXI7cmV0dXJuIHQ/dCgoKT0+bChuLHIsaSksbixyLGkpOmwobixyLGkpfX0oVixpLnJlbmRlclJ1bGUpLGZ1bmN0aW9uIGUodCxuPXt9KXtpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCByPW4ua2V5LGk9W107bGV0IGw9ITE7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe24ua2V5PXI7Y29uc3QgYT1lKHRbcl0sbiksbz1cInN0cmluZ1wiPT10eXBlb2YgYTtvJiZsP2lbaS5sZW5ndGgtMV0rPWE6bnVsbCE9PWEmJmkucHVzaChhKSxsPW99cmV0dXJuIG4ua2V5PXIsaX1yZXR1cm4gYWUodCxlLG4pfSk7dmFyIGFlO2NvbnN0IG9lPVcobik7cmV0dXJuIHEubGVuZ3RoP2QoXCJkaXZcIixudWxsLG9lLGQoXCJmb290ZXJcIix7a2V5OlwiZm9vdGVyXCJ9LHEubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBkKFwiZGl2XCIse2lkOmkuc2x1Z2lmeShlLmlkZW50aWZpZXIsd2UpLGtleTplLmlkZW50aWZpZXJ9LGUuaWRlbnRpZmllcixsZShpZShlLmZvb3Rub3RlLHtpbmxpbmU6ITB9KSkpfSkpKTpvZX1leHBvcnQgZGVmYXVsdCB0PT57bGV0e2NoaWxkcmVuOnI9XCJcIixvcHRpb25zOml9PXQsbD1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixpPXt9LGw9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGwubGVuZ3RoO3IrKyl0LmluZGV4T2Yobj1sW3JdKT49MHx8KGlbbl09ZVtuXSk7cmV0dXJuIGl9KHQsbik7cmV0dXJuIGUuY2xvbmVFbGVtZW50KFplKHIsaSksbCl9O2V4cG9ydHtyIGFzIFJ1bGVUeXBlLFplIGFzIGNvbXBpbGVyLFVlIGFzIHNhbml0aXplcix3ZSBhcyBzbHVnaWZ5fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1vZGVybi5qcy5tYXBcbiIsInZhciBiYXNlVW5zZXQgPSByZXF1aXJlKCcuL19iYXNlVW5zZXQnKTtcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBwcm9wZXJ0eSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byB1bnNldC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDcgfSB9XSB9O1xuICogXy51bnNldChvYmplY3QsICdhWzBdLmIuYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gKiAvLyA9PiB7ICdhJzogW3sgJ2InOiB7fSB9XSB9O1xuICpcbiAqIF8udW5zZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gKi9cbmZ1bmN0aW9uIHVuc2V0KG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB0cnVlIDogYmFzZVVuc2V0KG9iamVjdCwgcGF0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5zZXQ7XG4iLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUsIGdldFVpT3B0aW9ucywgb3JkZXJQcm9wZXJ0aWVzLCBUcmFuc2xhdGFibGVTdHJpbmcsIEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRywgUFJPUEVSVElFU19LRVksIFJFRl9LRVksIEFOWV9PRl9LRVksIE9ORV9PRl9LRVksIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IE1hcmtkb3duIGZyb20gJ21hcmtkb3duLXRvLWpzeCc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGhhcyBmcm9tICdsb2Rhc2gvaGFzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCB1bnNldCBmcm9tICdsb2Rhc2gvdW5zZXQnO1xuLyoqIFRoZSBgT2JqZWN0RmllbGRgIGNvbXBvbmVudCBpcyB1c2VkIHRvIHJlbmRlciBhIGZpZWxkIGluIHRoZSBzY2hlbWEgdGhhdCBpcyBvZiB0eXBlIGBvYmplY3RgLiBJdCB0cmFja3Mgd2hldGhlciBhblxuICogYWRkaXRpb25hbCBwcm9wZXJ0eSBrZXkgd2FzIG1vZGlmaWVkIGFuZCB3aGF0IGl0IHdhcyBtb2RpZmllZCB0b1xuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAqL1xuY2xhc3MgT2JqZWN0RmllbGQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICAvKiogU2V0IHVwIHRoZSBpbml0aWFsIHN0YXRlICovXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICB3YXNQcm9wZXJ0eUtleU1vZGlmaWVkOiBmYWxzZSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIFJldHVybnMgdGhlIGBvblByb3BlcnR5Q2hhbmdlYCBoYW5kbGVyIGZvciB0aGUgYG5hbWVgIGZpZWxkLiBIYW5kbGVzIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgYSB1c2VyIGlzIGF0dGVtcHRpbmdcbiAgICAgICAgICogdG8gY2xlYXIgdGhlIGRhdGEgZm9yIGEgZmllbGQgYWRkZWQgYXMgYW4gYWRkaXRpb25hbCBwcm9wZXJ0eS4gQ2FsbHMgdGhlIGBvbkNoYW5nZSgpYCBoYW5kbGVyIHdpdGggdGhlIHVwZGF0ZWRcbiAgICAgICAgICogZm9ybURhdGEuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5XG4gICAgICAgICAqIEBwYXJhbSBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMgLSBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGlzIHByb3BlcnR5IGlzIGFuIGFkZGl0aW9uYWwgcHJvcGVydHlcbiAgICAgICAgICogQHJldHVybnMgLSBUaGUgb25Qcm9wZXJ0eUNoYW5nZSBjYWxsYmFjayBmb3IgdGhlIGBuYW1lYCBwcm9wZXJ0eVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vblByb3BlcnR5Q2hhbmdlID0gKG5hbWUsIGFkZGVkQnlBZGRpdGlvbmFsUHJvcGVydGllcyA9IGZhbHNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlLCBuZXdFcnJvclNjaGVtYSwgaWQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGZvcm1EYXRhLCBvbkNoYW5nZSwgZXJyb3JTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHNldCB2YWx1ZSA9IHVuZGVmaW5lZCBmb3IgZmllbGRzIGFkZGVkIGJ5XG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWxQcm9wZXJ0aWVzLiBEb2luZyBzbyByZW1vdmVzIHRoZW0gZnJvbSB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9ybURhdGEsIHdoaWNoIGNhdXNlcyB0aGVtIHRvIGNvbXBsZXRlbHkgZGlzYXBwZWFyXG4gICAgICAgICAgICAgICAgICAgIC8vIChpbmNsdWRpbmcgdGhlIGlucHV0IGZpZWxkIGZvciB0aGUgcHJvcGVydHkgbmFtZSkuIFVubGlrZVxuICAgICAgICAgICAgICAgICAgICAvLyBmaWVsZHMgd2hpY2ggYXJlIFwibWFuZGF0ZWRcIiBieSB0aGUgc2NoZW1hLCB0aGVzZSBmaWVsZHMgY2FuXG4gICAgICAgICAgICAgICAgICAgIC8vIGJlIHNldCB0byB1bmRlZmluZWQgYnkgY2xpY2tpbmcgYSBcImRlbGV0ZSBmaWVsZFwiIGJ1dHRvbiwgc29cbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IGVtcHR5IHZhbHVlcyB0byB0aGUgZW1wdHkgc3RyaW5nLlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IHsgLi4uZm9ybURhdGEsIFtuYW1lXTogdmFsdWUgfTtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZShuZXdGb3JtRGF0YSwgZXJyb3JTY2hlbWEgJiZcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgJiYge1xuICAgICAgICAgICAgICAgICAgICAuLi5lcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdOiBuZXdFcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICB9LCBpZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogUmV0dXJucyBhIGNhbGxiYWNrIHRvIGhhbmRsZSB0aGUgb25Ecm9wUHJvcGVydHlDbGljayBldmVudCBmb3IgdGhlIGdpdmVuIGBrZXlgIHdoaWNoIHJlbW92ZXMgdGhlIG9sZCBga2V5YCBkYXRhXG4gICAgICAgICAqIGFuZCBjYWxscyB0aGUgYG9uQ2hhbmdlYCBjYWxsYmFjayB3aXRoIGl0XG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGZvciB3aGljaCB0aGUgZHJvcCBjYWxsYmFjayBpcyBkZXNpcmVkXG4gICAgICAgICAqIEByZXR1cm5zIC0gVGhlIGRyb3AgcHJvcGVydHkgY2xpY2sgY2FsbGJhY2tcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25Ecm9wUHJvcGVydHlDbGljayA9IChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGZvcm1EYXRhIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvcGllZEZvcm1EYXRhID0geyAuLi5mb3JtRGF0YSB9O1xuICAgICAgICAgICAgICAgIHVuc2V0KGNvcGllZEZvcm1EYXRhLCBrZXkpO1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKGNvcGllZEZvcm1EYXRhKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDb21wdXRlcyB0aGUgbmV4dCBhdmFpbGFibGUga2V5IG5hbWUgZnJvbSB0aGUgYHByZWZlcnJlZEtleWAsIGluZGV4aW5nIHRocm91Z2ggdGhlIGFscmVhZHkgZXhpc3Rpbmcga2V5cyB1bnRpbCBvbmVcbiAgICAgICAgICogdGhhdCBpcyBhbHJlYWR5IG5vdCBhc3NpZ25lZCBpcyBmb3VuZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHByZWZlcnJlZEtleSAtIFRoZSBwcmVmZXJyZWQgbmFtZSBvZiBhIG5ldyBrZXlcbiAgICAgICAgICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgZm9ybSBkYXRhIGluIHdoaWNoIHRvIGNoZWNrIGlmIHRoZSBkZXNpcmVkIGtleSBhbHJlYWR5IGV4aXN0c1xuICAgICAgICAgKiBAcmV0dXJucyAtIFRoZSBuYW1lIG9mIHRoZSBuZXh0IGF2YWlsYWJsZSBrZXkgZnJvbSBgcHJlZmVycmVkS2V5YFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5nZXRBdmFpbGFibGVLZXkgPSAocHJlZmVycmVkS2V5LCBmb3JtRGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB1aVNjaGVtYSwgcmVnaXN0cnkgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBjb25zdCB7IGR1cGxpY2F0ZUtleVN1ZmZpeFNlcGFyYXRvciA9ICctJyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCByZWdpc3RyeS5nbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgIGxldCBuZXdLZXkgPSBwcmVmZXJyZWRLZXk7XG4gICAgICAgICAgICB3aGlsZSAoaGFzKGZvcm1EYXRhLCBuZXdLZXkpKSB7XG4gICAgICAgICAgICAgICAgbmV3S2V5ID0gYCR7cHJlZmVycmVkS2V5fSR7ZHVwbGljYXRlS2V5U3VmZml4U2VwYXJhdG9yfSR7KytpbmRleH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ld0tleTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIFJldHVybnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGRlYWxzIHdpdGggdGhlIHJlbmFtZSBvZiBhIGtleSBmb3IgYW4gYWRkaXRpb25hbCBwcm9wZXJ0eSBmb3IgYSBzY2hlbWEuIFRoYXRcbiAgICAgICAgICogY2FsbGJhY2sgd2lsbCBhdHRlbXB0IHRvIHJlbmFtZSB0aGUga2V5IGFuZCBtb3ZlIHRoZSBleGlzdGluZyBkYXRhIHRvIHRoYXQga2V5LCBjYWxsaW5nIGBvbkNoYW5nZWAgd2hlbiBpdCBkb2VzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gb2xkVmFsdWUgLSBUaGUgb2xkIHZhbHVlIG9mIGEgZmllbGRcbiAgICAgICAgICogQHJldHVybnMgLSBUaGUga2V5IGNoYW5nZSBjYWxsYmFjayBmdW5jdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbktleUNoYW5nZSA9IChvbGRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSwgbmV3RXJyb3JTY2hlbWEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAob2xkVmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmb3JtRGF0YSwgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRBdmFpbGFibGVLZXkodmFsdWUsIGZvcm1EYXRhKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybURhdGEsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdLZXlzID0geyBbb2xkVmFsdWVdOiB2YWx1ZSB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleVZhbHVlcyA9IE9iamVjdC5rZXlzKG5ld0Zvcm1EYXRhKS5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdLZXkgPSBuZXdLZXlzW2tleV0gfHwga2V5O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBbbmV3S2V5XTogbmV3Rm9ybURhdGFba2V5XSB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbmFtZWRPYmogPSBPYmplY3QuYXNzaWduKHt9LCAuLi5rZXlWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyB3YXNQcm9wZXJ0eUtleU1vZGlmaWVkOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKHJlbmFtZWRPYmosIGVycm9yU2NoZW1hICYmXG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hICYmIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV06IG5ld0Vycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIEhhbmRsZXMgdGhlIGFkZGluZyBvZiBhIG5ldyBhZGRpdGlvbmFsIHByb3BlcnR5IG9uIHRoZSBnaXZlbiBgc2NoZW1hYC4gQ2FsbHMgdGhlIGBvbkNoYW5nZWAgY2FsbGJhY2sgb25jZSB0aGUgbmV3XG4gICAgICAgICAqIGRlZmF1bHQgZGF0YSBmb3IgdGhhdCBmaWVsZCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgZm9ybURhdGEuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGVsZW1lbnQgdG8gd2hpY2ggdGhlIG5ldyBwcm9wZXJ0eSBpcyBiZWluZyBhZGRlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5oYW5kbGVBZGRDbGljayA9IChzY2hlbWEpID0+ICgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmICghc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgeyBmb3JtRGF0YSwgb25DaGFuZ2UsIHJlZ2lzdHJ5IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgY29uc3QgbmV3Rm9ybURhdGEgPSB7IC4uLmZvcm1EYXRhIH07XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxldCBjb25zdFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChpc09iamVjdChzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcy50eXBlO1xuICAgICAgICAgICAgICAgIGNvbnN0VmFsdWUgPSBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMuY29uc3Q7XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgbGV0IGFwU2NoZW1hID0gc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgICAgIGlmIChSRUZfS0VZIGluIGFwU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICAgICAgICAgICAgICBhcFNjaGVtYSA9IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHsgJHJlZjogYXBTY2hlbWFbUkVGX0tFWV0gfSwgZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gYXBTY2hlbWEudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3RWYWx1ZSA9IGFwU2NoZW1hLmNvbnN0O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBhcFNjaGVtYS5kZWZhdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXR5cGUgJiYgKEFOWV9PRl9LRVkgaW4gYXBTY2hlbWEgfHwgT05FX09GX0tFWSBpbiBhcFNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICdvYmplY3QnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5ld0tleSA9IHRoaXMuZ2V0QXZhaWxhYmxlS2V5KCduZXdLZXknLCBuZXdGb3JtRGF0YSk7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IChfYSA9IGNvbnN0VmFsdWUgIT09IG51bGwgJiYgY29uc3RWYWx1ZSAhPT0gdm9pZCAwID8gY29uc3RWYWx1ZSA6IGRlZmF1bHRWYWx1ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5nZXREZWZhdWx0VmFsdWUodHlwZSk7XG4gICAgICAgICAgICAvLyBDYXN0IHRoaXMgdG8gbWFrZSB0aGUgYHNldGAgd29yayBwcm9wZXJseVxuICAgICAgICAgICAgc2V0KG5ld0Zvcm1EYXRhLCBuZXdLZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIG9uQ2hhbmdlKG5ld0Zvcm1EYXRhKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgYG5hbWVgIGZpZWxkIGlzIHJlcXVpcmVkIGluIHRoZSBvYmplY3Qgc2NoZW1hXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCB0byBjaGVjayBmb3IgcmVxdWlyZWQtbmVzc1xuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgZmllbGQgYG5hbWVgIGlzIHJlcXVpcmVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBpc1JlcXVpcmVkKG5hbWUpIHtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNjaGVtYS5yZXF1aXJlZCkgJiYgc2NoZW1hLnJlcXVpcmVkLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBhIGRlZmF1bHQgdmFsdWUgdG8gYmUgdXNlZCBmb3IgYSBuZXcgYWRkaXRpb25hbCBzY2hlbWEgcHJvcGVydHkgb2YgdGhlIGdpdmVuIGB0eXBlYFxuICAgICAqXG4gICAgICogQHBhcmFtIHR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgbmV3IGFkZGl0aW9uYWwgc2NoZW1hIHByb3BlcnR5XG4gICAgICovXG4gICAgZ2V0RGVmYXVsdFZhbHVlKHR5cGUpIHtcbiAgICAgICAgY29uc3QgeyByZWdpc3RyeTogeyB0cmFuc2xhdGVTdHJpbmcgfSwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIGRhdGF0eXBlIGZvciBzb21lIHJlYXNvbiAocGVyaGFwcyBhZGRpdGlvbmFsUHJvcGVydGllcyB3YXMgdHJ1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5OZXdTdHJpbmdEZWZhdWx0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogUmVuZGVycyB0aGUgYE9iamVjdEZpZWxkYCBmcm9tIHRoZSBnaXZlbiBwcm9wc1xuICAgICAqL1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBjb25zdCB7IHNjaGVtYTogcmF3U2NoZW1hLCB1aVNjaGVtYSA9IHt9LCBmb3JtRGF0YSwgZXJyb3JTY2hlbWEsIGlkU2NoZW1hLCBuYW1lLCByZXF1aXJlZCA9IGZhbHNlLCBkaXNhYmxlZCwgcmVhZG9ubHksIGhpZGVFcnJvciwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBvbkJsdXIsIG9uRm9jdXMsIHJlZ2lzdHJ5LCB0aXRsZSwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgZmllbGRzLCBmb3JtQ29udGV4dCwgc2NoZW1hVXRpbHMsIHRyYW5zbGF0ZVN0cmluZywgZ2xvYmFsVWlPcHRpb25zIH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgeyBTY2hlbWFGaWVsZCB9ID0gZmllbGRzO1xuICAgICAgICBjb25zdCBzY2hlbWEgPSBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShyYXdTY2hlbWEsIGZvcm1EYXRhKTtcbiAgICAgICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCB7IHByb3BlcnRpZXM6IHNjaGVtYVByb3BlcnRpZXMgPSB7fSB9ID0gc2NoZW1hO1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZVRpdGxlID0gKF9jID0gKF9iID0gKF9hID0gdWlPcHRpb25zLnRpdGxlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBzY2hlbWEudGl0bGUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHRpdGxlKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBuYW1lO1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IChfZCA9IHVpT3B0aW9ucy5kZXNjcmlwdGlvbikgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogc2NoZW1hLmRlc2NyaXB0aW9uO1xuICAgICAgICBsZXQgb3JkZXJlZFByb3BlcnRpZXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc2NoZW1hUHJvcGVydGllcyk7XG4gICAgICAgICAgICBvcmRlcmVkUHJvcGVydGllcyA9IG9yZGVyUHJvcGVydGllcyhwcm9wZXJ0aWVzLCB1aU9wdGlvbnMub3JkZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjaGlsZHJlbjogW19qc3goXCJwXCIsIHsgY2xhc3NOYW1lOiAnY29uZmlnLWVycm9yJywgc3R5bGU6IHsgY29sb3I6ICdyZWQnIH0sIGNoaWxkcmVuOiBfanN4KE1hcmtkb3duLCB7IG9wdGlvbnM6IHsgZGlzYWJsZVBhcnNpbmdSYXdIVE1MOiB0cnVlIH0sIGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkludmFsaWRPYmplY3RGaWVsZCwgW25hbWUgfHwgJ3Jvb3QnLCBlcnIubWVzc2FnZV0pIH0pIH0pLCBfanN4KFwicHJlXCIsIHsgY2hpbGRyZW46IEpTT04uc3RyaW5naWZ5KHNjaGVtYSkgfSldIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdPYmplY3RGaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlUHJvcHMgPSB7XG4gICAgICAgICAgICAvLyBnZXREaXNwbGF5TGFiZWwoKSBhbHdheXMgcmV0dXJucyBmYWxzZSBmb3Igb2JqZWN0IHR5cGVzLCBzbyBqdXN0IGNoZWNrIHRoZSBgdWlPcHRpb25zLmxhYmVsYFxuICAgICAgICAgICAgdGl0bGU6IHVpT3B0aW9ucy5sYWJlbCA9PT0gZmFsc2UgPyAnJyA6IHRlbXBsYXRlVGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdWlPcHRpb25zLmxhYmVsID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJvcGVydGllczogb3JkZXJlZFByb3BlcnRpZXMubWFwKChuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gaGFzKHNjaGVtYSwgW1BST1BFUlRJRVNfS0VZLCBuYW1lLCBBRERJVElPTkFMX1BST1BFUlRZX0ZMQUddKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFVpU2NoZW1hID0gYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzID8gdWlTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgOiB1aVNjaGVtYVtuYW1lXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoaWRkZW4gPSBnZXRVaU9wdGlvbnMoZmllbGRVaVNjaGVtYSkud2lkZ2V0ID09PSAnaGlkZGVuJztcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZElkU2NoZW1hID0gZ2V0KGlkU2NoZW1hLCBbbmFtZV0sIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAoX2pzeChTY2hlbWFGaWVsZCwgeyBuYW1lOiBuYW1lLCByZXF1aXJlZDogdGhpcy5pc1JlcXVpcmVkKG5hbWUpLCBzY2hlbWE6IGdldChzY2hlbWEsIFtQUk9QRVJUSUVTX0tFWSwgbmFtZV0sIHt9KSwgdWlTY2hlbWE6IGZpZWxkVWlTY2hlbWEsIGVycm9yU2NoZW1hOiBnZXQoZXJyb3JTY2hlbWEsIG5hbWUpLCBpZFNjaGVtYTogZmllbGRJZFNjaGVtYSwgaWRQcmVmaXg6IGlkUHJlZml4LCBpZFNlcGFyYXRvcjogaWRTZXBhcmF0b3IsIGZvcm1EYXRhOiBnZXQoZm9ybURhdGEsIG5hbWUpLCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIHdhc1Byb3BlcnR5S2V5TW9kaWZpZWQ6IHRoaXMuc3RhdGUud2FzUHJvcGVydHlLZXlNb2RpZmllZCwgb25LZXlDaGFuZ2U6IHRoaXMub25LZXlDaGFuZ2UobmFtZSksIG9uQ2hhbmdlOiB0aGlzLm9uUHJvcGVydHlDaGFuZ2UobmFtZSwgYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzKSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCBvbkRyb3BQcm9wZXJ0eUNsaWNrOiB0aGlzLm9uRHJvcFByb3BlcnR5Q2xpY2sgfSwgbmFtZSkpLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICBoaWRkZW4sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICAgICAgaWRTY2hlbWEsXG4gICAgICAgICAgICB1aVNjaGVtYSxcbiAgICAgICAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgICBmb3JtQ29udGV4dCxcbiAgICAgICAgICAgIHJlZ2lzdHJ5LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gX2pzeChUZW1wbGF0ZSwgeyAuLi50ZW1wbGF0ZVByb3BzLCBvbkFkZENsaWNrOiB0aGlzLmhhbmRsZUFkZENsaWNrIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IE9iamVjdEZpZWxkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T2JqZWN0RmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRywgZGVlcEVxdWFscywgZGVzY3JpcHRpb25JZCwgZ2V0U2NoZW1hVHlwZSwgZ2V0VGVtcGxhdGUsIGdldFVpT3B0aW9ucywgSURfS0VZLCBtZXJnZU9iamVjdHMsIFRyYW5zbGF0YWJsZVN0cmluZywgVUlfT1BUSU9OU19LRVksIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG5pbXBvcnQgb21pdCBmcm9tICdsb2Rhc2gvb21pdCc7XG5pbXBvcnQgTWFya2Rvd24gZnJvbSAnbWFya2Rvd24tdG8tanN4Jztcbi8qKiBUaGUgbWFwIG9mIGNvbXBvbmVudCB0eXBlIHRvIEZpZWxkTmFtZSAqL1xuY29uc3QgQ09NUE9ORU5UX1RZUEVTID0ge1xuICAgIGFycmF5OiAnQXJyYXlGaWVsZCcsXG4gICAgYm9vbGVhbjogJ0Jvb2xlYW5GaWVsZCcsXG4gICAgaW50ZWdlcjogJ051bWJlckZpZWxkJyxcbiAgICBudW1iZXI6ICdOdW1iZXJGaWVsZCcsXG4gICAgb2JqZWN0OiAnT2JqZWN0RmllbGQnLFxuICAgIHN0cmluZzogJ1N0cmluZ0ZpZWxkJyxcbiAgICBudWxsOiAnTnVsbEZpZWxkJyxcbn07XG4vKiogQ29tcHV0ZXMgYW5kIHJldHVybnMgd2hpY2ggYEZpZWxkYCBpbXBsZW1lbnRhdGlvbiB0byByZXR1cm4gaW4gb3JkZXIgdG8gcmVuZGVyIHRoZSBmaWVsZCByZXByZXNlbnRlZCBieSB0aGVcbiAqIGBzY2hlbWFgLiBUaGUgYHVpT3B0aW9uc2AgYXJlIHVzZWQgdG8gYWx0ZXIgd2hhdCBwb3RlbnRpYWwgYEZpZWxkYCBpbXBsZW1lbnRhdGlvbiBpcyBhY3R1YWxseSByZXR1cm5lZC4gSWYgbm9cbiAqIGFwcHJvcHJpYXRlIGBGaWVsZGAgaW1wbGVtZW50YXRpb24gY2FuIGJlIGZvdW5kIHRoZW4gYSB3cmFwcGVyIGFyb3VuZCBgVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlYCBpcyB1c2VkLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZyb20gd2hpY2ggdG8gb2J0YWluIHRoZSB0eXBlXG4gKiBAcGFyYW0gdWlPcHRpb25zIC0gVGhlIFVJIE9wdGlvbnMgdGhhdCBtYXkgYWZmZWN0IHRoZSBjb21wb25lbnQgZGVjaXNpb25cbiAqIEBwYXJhbSBpZFNjaGVtYSAtIFRoZSBpZCB0aGF0IGlzIHBhc3NlZCB0byB0aGUgYFVuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZWBcbiAqIEBwYXJhbSByZWdpc3RyeSAtIFRoZSByZWdpc3RyeSBmcm9tIHdoaWNoIGZpZWxkcyBhbmQgdGVtcGxhdGVzIGFyZSBvYnRhaW5lZFxuICogQHJldHVybnMgLSBUaGUgYEZpZWxkYCBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHJlbmRlciB0aGUgYWN0dWFsIGZpZWxkIGRhdGFcbiAqL1xuZnVuY3Rpb24gZ2V0RmllbGRDb21wb25lbnQoc2NoZW1hLCB1aU9wdGlvbnMsIGlkU2NoZW1hLCByZWdpc3RyeSkge1xuICAgIGNvbnN0IGZpZWxkID0gdWlPcHRpb25zLmZpZWxkO1xuICAgIGNvbnN0IHsgZmllbGRzLCB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIGlmICh0eXBlb2YgZmllbGQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGZpZWxkID09PSAnc3RyaW5nJyAmJiBmaWVsZCBpbiBmaWVsZHMpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkc1tmaWVsZF07XG4gICAgfVxuICAgIGNvbnN0IHNjaGVtYVR5cGUgPSBnZXRTY2hlbWFUeXBlKHNjaGVtYSk7XG4gICAgY29uc3QgdHlwZSA9IEFycmF5LmlzQXJyYXkoc2NoZW1hVHlwZSkgPyBzY2hlbWFUeXBlWzBdIDogc2NoZW1hVHlwZSB8fCAnJztcbiAgICBjb25zdCBzY2hlbWFJZCA9IHNjaGVtYS4kaWQ7XG4gICAgbGV0IGNvbXBvbmVudE5hbWUgPSBDT01QT05FTlRfVFlQRVNbdHlwZV07XG4gICAgaWYgKHNjaGVtYUlkICYmIHNjaGVtYUlkIGluIGZpZWxkcykge1xuICAgICAgICBjb21wb25lbnROYW1lID0gc2NoZW1hSWQ7XG4gICAgfVxuICAgIC8vIElmIHRoZSB0eXBlIGlzIG5vdCBkZWZpbmVkIGFuZCB0aGUgc2NoZW1hIHVzZXMgJ2FueU9mJyBvciAnb25lT2YnLCBkb24ndFxuICAgIC8vIHJlbmRlciBhIGZpZWxkIGFuZCBsZXQgdGhlIE11bHRpU2NoZW1hRmllbGQgY29tcG9uZW50IGhhbmRsZSB0aGUgZm9ybSBkaXNwbGF5XG4gICAgaWYgKCFjb21wb25lbnROYW1lICYmIChzY2hlbWEuYW55T2YgfHwgc2NoZW1hLm9uZU9mKSkge1xuICAgICAgICByZXR1cm4gKCkgPT4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudE5hbWUgaW4gZmllbGRzXG4gICAgICAgID8gZmllbGRzW2NvbXBvbmVudE5hbWVdXG4gICAgICAgIDogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ1Vuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuIChfanN4KFVuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZSwgeyBzY2hlbWE6IHNjaGVtYSwgaWRTY2hlbWE6IGlkU2NoZW1hLCByZWFzb246IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuVW5rbm93bkZpZWxkVHlwZSwgW1N0cmluZyhzY2hlbWEudHlwZSldKSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbiAgICAgICAgfTtcbn1cbi8qKiBUaGUgYFNjaGVtYUZpZWxkUmVuZGVyYCBjb21wb25lbnQgaXMgdGhlIHdvcmstaG9yc2Ugb2YgcmVhY3QtanNvbnNjaGVtYS1mb3JtLCBkZXRlcm1pbmluZyB3aGF0IGtpbmQgb2YgcmVhbCBmaWVsZCB0b1xuICogcmVuZGVyIGJhc2VkIG9uIHRoZSBgc2NoZW1hYCwgYHVpU2NoZW1hYCBhbmQgYWxsIHRoZSBvdGhlciBwcm9wcy4gSXQgYWxzbyBkZWFscyB3aXRoIHJlbmRlcmluZyB0aGUgYGFueU9mYCBhbmRcbiAqIGBvbmVPZmAgZmllbGRzLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIFNjaGVtYUZpZWxkUmVuZGVyKHByb3BzKSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgY29uc3QgeyBzY2hlbWE6IF9zY2hlbWEsIGlkU2NoZW1hOiBfaWRTY2hlbWEsIHVpU2NoZW1hLCBmb3JtRGF0YSwgZXJyb3JTY2hlbWEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgbmFtZSwgb25DaGFuZ2UsIG9uS2V5Q2hhbmdlLCBvbkRyb3BQcm9wZXJ0eUNsaWNrLCByZXF1aXJlZCwgcmVnaXN0cnksIHdhc1Byb3BlcnR5S2V5TW9kaWZpZWQgPSBmYWxzZSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgZm9ybUNvbnRleHQsIHNjaGVtYVV0aWxzLCBnbG9iYWxVaU9wdGlvbnMgfSA9IHJlZ2lzdHJ5O1xuICAgIGNvbnN0IHVpT3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICBjb25zdCBGaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0ZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgY29uc3QgRmllbGRIZWxwVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRmllbGRIZWxwVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBGaWVsZEVycm9yVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRmllbGRFcnJvclRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgY29uc3Qgc2NoZW1hID0gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoX3NjaGVtYSwgZm9ybURhdGEpO1xuICAgIGNvbnN0IGZpZWxkSWQgPSBfaWRTY2hlbWFbSURfS0VZXTtcbiAgICBjb25zdCBpZFNjaGVtYSA9IG1lcmdlT2JqZWN0cyhzY2hlbWFVdGlscy50b0lkU2NoZW1hKHNjaGVtYSwgZmllbGRJZCwgZm9ybURhdGEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciksIF9pZFNjaGVtYSk7XG4gICAgLyoqIEludGVybWVkaWFyeSBgb25DaGFuZ2VgIGhhbmRsZXIgZm9yIGZpZWxkIGNvbXBvbmVudHMgdGhhdCB3aWxsIGluamVjdCB0aGUgYGlkYCBvZiB0aGUgY3VycmVudCBmaWVsZCBpbnRvIHRoZVxuICAgICAqIGBvbkNoYW5nZWAgY2hhaW4gaWYgaXQgaXMgbm90IGFscmVhZHkgYmVpbmcgcHJvdmlkZWQgZnJvbSBhIGRlZXBlciBsZXZlbCBpbiB0aGUgaGllcmFyY2h5XG4gICAgICovXG4gICAgY29uc3QgaGFuZGxlRmllbGRDb21wb25lbnRDaGFuZ2UgPSB1c2VDYWxsYmFjaygoZm9ybURhdGEsIG5ld0Vycm9yU2NoZW1hLCBpZCkgPT4ge1xuICAgICAgICBjb25zdCB0aGVJZCA9IGlkIHx8IGZpZWxkSWQ7XG4gICAgICAgIHJldHVybiBvbkNoYW5nZShmb3JtRGF0YSwgbmV3RXJyb3JTY2hlbWEsIHRoZUlkKTtcbiAgICB9LCBbZmllbGRJZCwgb25DaGFuZ2VdKTtcbiAgICBjb25zdCBGaWVsZENvbXBvbmVudCA9IGdldEZpZWxkQ29tcG9uZW50KHNjaGVtYSwgdWlPcHRpb25zLCBpZFNjaGVtYSwgcmVnaXN0cnkpO1xuICAgIGNvbnN0IGRpc2FibGVkID0gQm9vbGVhbigoX2EgPSB1aU9wdGlvbnMuZGlzYWJsZWQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHByb3BzLmRpc2FibGVkKTtcbiAgICBjb25zdCByZWFkb25seSA9IEJvb2xlYW4oKF9iID0gdWlPcHRpb25zLnJlYWRvbmx5KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAocHJvcHMucmVhZG9ubHkgfHwgcHJvcHMuc2NoZW1hLnJlYWRPbmx5IHx8IHNjaGVtYS5yZWFkT25seSkpO1xuICAgIGNvbnN0IHVpU2NoZW1hSGlkZUVycm9yID0gdWlPcHRpb25zLmhpZGVFcnJvcjtcbiAgICAvLyBTZXQgaGlkZUVycm9yIHRvIHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0aGUgdWlTY2hlbWEsIG90aGVyd2lzZSBzdGljayB3aXRoIHRoZSBwcm9wIHRvIHByb3BhZ2F0ZSB0byBjaGlsZHJlblxuICAgIGNvbnN0IGhpZGVFcnJvciA9IHVpU2NoZW1hSGlkZUVycm9yID09PSB1bmRlZmluZWQgPyBwcm9wcy5oaWRlRXJyb3IgOiBCb29sZWFuKHVpU2NoZW1hSGlkZUVycm9yKTtcbiAgICBjb25zdCBhdXRvZm9jdXMgPSBCb29sZWFuKChfYyA9IHVpT3B0aW9ucy5hdXRvZm9jdXMpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHByb3BzLmF1dG9mb2N1cyk7XG4gICAgaWYgKE9iamVjdC5rZXlzKHNjaGVtYSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBkaXNwbGF5TGFiZWwgPSBzY2hlbWFVdGlscy5nZXREaXNwbGF5TGFiZWwoc2NoZW1hLCB1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICBjb25zdCB7IF9fZXJyb3JzLCAuLi5maWVsZEVycm9yU2NoZW1hIH0gPSBlcnJvclNjaGVtYSB8fCB7fTtcbiAgICAvLyBTZWUgIzQzOTogdWlTY2hlbWE6IERvbid0IHBhc3MgY29uc3VtZWQgY2xhc3MgbmFtZXMgb3Igc3R5bGUgdG8gY2hpbGQgY29tcG9uZW50c1xuICAgIGNvbnN0IGZpZWxkVWlTY2hlbWEgPSBvbWl0KHVpU2NoZW1hLCBbJ3VpOmNsYXNzTmFtZXMnLCAnY2xhc3NOYW1lcycsICd1aTpzdHlsZSddKTtcbiAgICBpZiAoVUlfT1BUSU9OU19LRVkgaW4gZmllbGRVaVNjaGVtYSkge1xuICAgICAgICBmaWVsZFVpU2NoZW1hW1VJX09QVElPTlNfS0VZXSA9IG9taXQoZmllbGRVaVNjaGVtYVtVSV9PUFRJT05TX0tFWV0sIFsnY2xhc3NOYW1lcycsICdzdHlsZSddKTtcbiAgICB9XG4gICAgY29uc3QgZmllbGQgPSAoX2pzeChGaWVsZENvbXBvbmVudCwgeyAuLi5wcm9wcywgb25DaGFuZ2U6IGhhbmRsZUZpZWxkQ29tcG9uZW50Q2hhbmdlLCBpZFNjaGVtYTogaWRTY2hlbWEsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogZmllbGRVaVNjaGVtYSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgZXJyb3JTY2hlbWE6IGZpZWxkRXJyb3JTY2hlbWEsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgcmF3RXJyb3JzOiBfX2Vycm9ycyB9KSk7XG4gICAgY29uc3QgaWQgPSBpZFNjaGVtYVtJRF9LRVldO1xuICAgIC8vIElmIHRoaXMgc2NoZW1hIGhhcyBhIHRpdGxlIGRlZmluZWQsIGJ1dCB0aGUgdXNlciBoYXMgc2V0IGEgbmV3IGtleS9sYWJlbCwgcmV0YWluIHRoZWlyIGlucHV0LlxuICAgIGxldCBsYWJlbDtcbiAgICBpZiAod2FzUHJvcGVydHlLZXlNb2RpZmllZCkge1xuICAgICAgICBsYWJlbCA9IG5hbWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBsYWJlbCA9XG4gICAgICAgICAgICBBRERJVElPTkFMX1BST1BFUlRZX0ZMQUcgaW4gc2NoZW1hXG4gICAgICAgICAgICAgICAgPyBuYW1lXG4gICAgICAgICAgICAgICAgOiB1aU9wdGlvbnMudGl0bGUgfHwgcHJvcHMuc2NoZW1hLnRpdGxlIHx8IHNjaGVtYS50aXRsZSB8fCBwcm9wcy50aXRsZSB8fCBuYW1lO1xuICAgIH1cbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHVpT3B0aW9ucy5kZXNjcmlwdGlvbiB8fCBwcm9wcy5zY2hlbWEuZGVzY3JpcHRpb24gfHwgc2NoZW1hLmRlc2NyaXB0aW9uIHx8ICcnO1xuICAgIGNvbnN0IHJpY2hEZXNjcmlwdGlvbiA9IHVpT3B0aW9ucy5lbmFibGVNYXJrZG93bkluRGVzY3JpcHRpb24gPyAoX2pzeChNYXJrZG93biwgeyBvcHRpb25zOiB7IGRpc2FibGVQYXJzaW5nUmF3SFRNTDogdHJ1ZSB9LCBjaGlsZHJlbjogZGVzY3JpcHRpb24gfSkpIDogKGRlc2NyaXB0aW9uKTtcbiAgICBjb25zdCBoZWxwID0gdWlPcHRpb25zLmhlbHA7XG4gICAgY29uc3QgaGlkZGVuID0gdWlPcHRpb25zLndpZGdldCA9PT0gJ2hpZGRlbic7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFsnZm9ybS1ncm91cCcsICdmaWVsZCcsIGBmaWVsZC0ke2dldFNjaGVtYVR5cGUoc2NoZW1hKX1gXTtcbiAgICBpZiAoIWhpZGVFcnJvciAmJiBfX2Vycm9ycyAmJiBfX2Vycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCgnZmllbGQtZXJyb3IgaGFzLWVycm9yIGhhcy1kYW5nZXInKTtcbiAgICB9XG4gICAgaWYgKHVpU2NoZW1hID09PSBudWxsIHx8IHVpU2NoZW1hID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1aVNjaGVtYS5jbGFzc05hbWVzKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCIndWlTY2hlbWEuY2xhc3NOYW1lcycgaXMgZGVwcmVjYXRlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBtYWpvciByZWxlYXNlOyBVc2UgJ3VpOmNsYXNzTmFtZXMnIGluc3RlYWQuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCh1aVNjaGVtYS5jbGFzc05hbWVzKTtcbiAgICB9XG4gICAgaWYgKHVpT3B0aW9ucy5jbGFzc05hbWVzKSB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCh1aU9wdGlvbnMuY2xhc3NOYW1lcyk7XG4gICAgfVxuICAgIGNvbnN0IGhlbHBDb21wb25lbnQgPSAoX2pzeChGaWVsZEhlbHBUZW1wbGF0ZSwgeyBoZWxwOiBoZWxwLCBpZFNjaGVtYTogaWRTY2hlbWEsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIGhhc0Vycm9yczogIWhpZGVFcnJvciAmJiBfX2Vycm9ycyAmJiBfX2Vycm9ycy5sZW5ndGggPiAwLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpO1xuICAgIC8qXG4gICAgICogQW55T2YvT25lT2YgZXJyb3JzIGhhbmRsZWQgYnkgY2hpbGQgc2NoZW1hXG4gICAgICogdW5sZXNzIGl0IGNhbiBiZSByZW5kZXJlZCBhcyBzZWxlY3QgY29udHJvbFxuICAgICAqL1xuICAgIGNvbnN0IGVycm9yc0NvbXBvbmVudCA9IGhpZGVFcnJvciB8fCAoKHNjaGVtYS5hbnlPZiB8fCBzY2hlbWEub25lT2YpICYmICFzY2hlbWFVdGlscy5pc1NlbGVjdChzY2hlbWEpKSA/IHVuZGVmaW5lZCA6IChfanN4KEZpZWxkRXJyb3JUZW1wbGF0ZSwgeyBlcnJvcnM6IF9fZXJyb3JzLCBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEsIGlkU2NoZW1hOiBpZFNjaGVtYSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbiAgICBjb25zdCBmaWVsZFByb3BzID0ge1xuICAgICAgICBkZXNjcmlwdGlvbjogKF9qc3goRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlLCB7IGlkOiBkZXNjcmlwdGlvbklkKGlkKSwgZGVzY3JpcHRpb246IHJpY2hEZXNjcmlwdGlvbiwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKSxcbiAgICAgICAgcmF3RGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgICBoZWxwOiBoZWxwQ29tcG9uZW50LFxuICAgICAgICByYXdIZWxwOiB0eXBlb2YgaGVscCA9PT0gJ3N0cmluZycgPyBoZWxwIDogdW5kZWZpbmVkLFxuICAgICAgICBlcnJvcnM6IGVycm9yc0NvbXBvbmVudCxcbiAgICAgICAgcmF3RXJyb3JzOiBoaWRlRXJyb3IgPyB1bmRlZmluZWQgOiBfX2Vycm9ycyxcbiAgICAgICAgaWQsXG4gICAgICAgIGxhYmVsLFxuICAgICAgICBoaWRkZW4sXG4gICAgICAgIG9uQ2hhbmdlLFxuICAgICAgICBvbktleUNoYW5nZSxcbiAgICAgICAgb25Ecm9wUHJvcGVydHlDbGljayxcbiAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICByZWFkb25seSxcbiAgICAgICAgaGlkZUVycm9yLFxuICAgICAgICBkaXNwbGF5TGFiZWwsXG4gICAgICAgIGNsYXNzTmFtZXM6IGNsYXNzTmFtZXMuam9pbignICcpLnRyaW0oKSxcbiAgICAgICAgc3R5bGU6IHVpT3B0aW9ucy5zdHlsZSxcbiAgICAgICAgZm9ybUNvbnRleHQsXG4gICAgICAgIGZvcm1EYXRhLFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIHVpU2NoZW1hLFxuICAgICAgICByZWdpc3RyeSxcbiAgICB9O1xuICAgIGNvbnN0IF9BbnlPZkZpZWxkID0gcmVnaXN0cnkuZmllbGRzLkFueU9mRmllbGQ7XG4gICAgY29uc3QgX09uZU9mRmllbGQgPSByZWdpc3RyeS5maWVsZHMuT25lT2ZGaWVsZDtcbiAgICBjb25zdCBpc1JlcGxhY2luZ0FueU9yT25lT2YgPSAodWlTY2hlbWEgPT09IG51bGwgfHwgdWlTY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVpU2NoZW1hWyd1aTpmaWVsZCddKSAmJiAodWlTY2hlbWEgPT09IG51bGwgfHwgdWlTY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVpU2NoZW1hWyd1aTpmaWVsZFJlcGxhY2VzQW55T3JPbmVPZiddKSA9PT0gdHJ1ZTtcbiAgICByZXR1cm4gKF9qc3goRmllbGRUZW1wbGF0ZSwgeyAuLi5maWVsZFByb3BzLCBjaGlsZHJlbjogX2pzeHMoX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBbZmllbGQsIHNjaGVtYS5hbnlPZiAmJiAhaXNSZXBsYWNpbmdBbnlPck9uZU9mICYmICFzY2hlbWFVdGlscy5pc1NlbGVjdChzY2hlbWEpICYmIChfanN4KF9BbnlPZkZpZWxkLCB7IG5hbWU6IG5hbWUsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCBoaWRlRXJyb3I6IGhpZGVFcnJvciwgZXJyb3JTY2hlbWE6IGVycm9yU2NoZW1hLCBmb3JtRGF0YTogZm9ybURhdGEsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgaWRQcmVmaXg6IGlkUHJlZml4LCBpZFNjaGVtYTogaWRTY2hlbWEsIGlkU2VwYXJhdG9yOiBpZFNlcGFyYXRvciwgb25CbHVyOiBwcm9wcy5vbkJsdXIsIG9uQ2hhbmdlOiBwcm9wcy5vbkNoYW5nZSwgb25Gb2N1czogcHJvcHMub25Gb2N1cywgb3B0aW9uczogc2NoZW1hLmFueU9mLm1hcCgoX3NjaGVtYSkgPT4gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoaXNPYmplY3QoX3NjaGVtYSkgPyBfc2NoZW1hIDoge30sIGZvcm1EYXRhKSksIHJlZ2lzdHJ5OiByZWdpc3RyeSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hIH0pKSwgc2NoZW1hLm9uZU9mICYmICFpc1JlcGxhY2luZ0FueU9yT25lT2YgJiYgIXNjaGVtYVV0aWxzLmlzU2VsZWN0KHNjaGVtYSkgJiYgKF9qc3goX09uZU9mRmllbGQsIHsgbmFtZTogbmFtZSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEsIGZvcm1EYXRhOiBmb3JtRGF0YSwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBpZFByZWZpeDogaWRQcmVmaXgsIGlkU2NoZW1hOiBpZFNjaGVtYSwgaWRTZXBhcmF0b3I6IGlkU2VwYXJhdG9yLCBvbkJsdXI6IHByb3BzLm9uQmx1ciwgb25DaGFuZ2U6IHByb3BzLm9uQ2hhbmdlLCBvbkZvY3VzOiBwcm9wcy5vbkZvY3VzLCBvcHRpb25zOiBzY2hlbWEub25lT2YubWFwKChfc2NoZW1hKSA9PiBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShpc09iamVjdChfc2NoZW1hKSA/IF9zY2hlbWEgOiB7fSwgZm9ybURhdGEpKSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCByZXF1aXJlZDogcmVxdWlyZWQsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEgfSkpXSB9KSB9KSk7XG59XG4vKiogVGhlIGBTY2hlbWFGaWVsZGAgY29tcG9uZW50IGRldGVybWluZXMgd2hldGhlciBpdCBpcyBuZWNlc3NhcnkgdG8gcmVyZW5kZXIgdGhlIGNvbXBvbmVudCBiYXNlZCBvbiBhbnkgcHJvcHMgY2hhbmdlc1xuICogYW5kIGlmIHNvLCBjYWxscyB0aGUgYFNjaGVtYUZpZWxkUmVuZGVyYCBjb21wb25lbnQgd2l0aCB0aGUgcHJvcHMuXG4gKi9cbmNsYXNzIFNjaGVtYUZpZWxkIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzKSB7XG4gICAgICAgIHJldHVybiAhZGVlcEVxdWFscyh0aGlzLnByb3BzLCBuZXh0UHJvcHMpO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiBfanN4KFNjaGVtYUZpZWxkUmVuZGVyLCB7IC4uLnRoaXMucHJvcHMgfSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgU2NoZW1hRmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TY2hlbWFGaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0V2lkZ2V0LCBnZXRVaU9wdGlvbnMsIG9wdGlvbnNMaXN0LCBoYXNXaWRnZXQsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgU3RyaW5nRmllbGRgIGNvbXBvbmVudCBpcyB1c2VkIHRvIHJlbmRlciBhIHNjaGVtYSBmaWVsZCB0aGF0IHJlcHJlc2VudHMgYSBzdHJpbmcgdHlwZVxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAqL1xuZnVuY3Rpb24gU3RyaW5nRmllbGQocHJvcHMpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgeyBzY2hlbWEsIG5hbWUsIHVpU2NoZW1hLCBpZFNjaGVtYSwgZm9ybURhdGEsIHJlcXVpcmVkLCBkaXNhYmxlZCA9IGZhbHNlLCByZWFkb25seSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cywgcmVnaXN0cnksIHJhd0Vycm9ycywgaGlkZUVycm9yLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyB0aXRsZSwgZm9ybWF0IH0gPSBzY2hlbWE7XG4gICAgY29uc3QgeyB3aWRnZXRzLCBmb3JtQ29udGV4dCwgc2NoZW1hVXRpbHMsIGdsb2JhbFVpT3B0aW9ucyB9ID0gcmVnaXN0cnk7XG4gICAgY29uc3QgZW51bU9wdGlvbnMgPSBzY2hlbWFVdGlscy5pc1NlbGVjdChzY2hlbWEpID8gb3B0aW9uc0xpc3Qoc2NoZW1hLCB1aVNjaGVtYSkgOiB1bmRlZmluZWQ7XG4gICAgbGV0IGRlZmF1bHRXaWRnZXQgPSBlbnVtT3B0aW9ucyA/ICdzZWxlY3QnIDogJ3RleHQnO1xuICAgIGlmIChmb3JtYXQgJiYgaGFzV2lkZ2V0KHNjaGVtYSwgZm9ybWF0LCB3aWRnZXRzKSkge1xuICAgICAgICBkZWZhdWx0V2lkZ2V0ID0gZm9ybWF0O1xuICAgIH1cbiAgICBjb25zdCB7IHdpZGdldCA9IGRlZmF1bHRXaWRnZXQsIHBsYWNlaG9sZGVyID0gJycsIHRpdGxlOiB1aVRpdGxlLCAuLi5vcHRpb25zIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IGxhYmVsID0gKF9hID0gdWlUaXRsZSAhPT0gbnVsbCAmJiB1aVRpdGxlICE9PSB2b2lkIDAgPyB1aVRpdGxlIDogdGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5hbWU7XG4gICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICByZXR1cm4gKF9qc3goV2lkZ2V0LCB7IG9wdGlvbnM6IHsgLi4ub3B0aW9ucywgZW51bU9wdGlvbnMgfSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgaWQ6IGlkU2NoZW1hLiRpZCwgbmFtZTogbmFtZSwgbGFiZWw6IGxhYmVsLCBoaWRlTGFiZWw6ICFkaXNwbGF5TGFiZWwsIGhpZGVFcnJvcjogaGlkZUVycm9yLCB2YWx1ZTogZm9ybURhdGEsIG9uQ2hhbmdlOiBvbkNoYW5nZSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIHJlcXVpcmVkOiByZXF1aXJlZCwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByYXdFcnJvcnM6IHJhd0Vycm9ycyB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBTdHJpbmdGaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN0cmluZ0ZpZWxkLmpzLm1hcCIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0Jztcbi8qKiBUaGUgYE51bGxGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSBpcyBudWxsLiBJdCBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgYGZvcm1EYXRhYCBpc1xuICogYWxzbyBzZXQgdG8gbnVsbCBpZiBpdCBoYXMgbm8gdmFsdWUuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICovXG5mdW5jdGlvbiBOdWxsRmllbGQocHJvcHMpIHtcbiAgICBjb25zdCB7IGZvcm1EYXRhLCBvbkNoYW5nZSB9ID0gcHJvcHM7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGZvcm1EYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKG51bGwpO1xuICAgICAgICB9XG4gICAgfSwgW2Zvcm1EYXRhLCBvbkNoYW5nZV0pO1xuICAgIHJldHVybiBudWxsO1xufVxuZXhwb3J0IGRlZmF1bHQgTnVsbEZpZWxkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TnVsbEZpZWxkLmpzLm1hcCIsImltcG9ydCBBcnJheUZpZWxkIGZyb20gJy4vQXJyYXlGaWVsZCc7XG5pbXBvcnQgQm9vbGVhbkZpZWxkIGZyb20gJy4vQm9vbGVhbkZpZWxkJztcbmltcG9ydCBNdWx0aVNjaGVtYUZpZWxkIGZyb20gJy4vTXVsdGlTY2hlbWFGaWVsZCc7XG5pbXBvcnQgTnVtYmVyRmllbGQgZnJvbSAnLi9OdW1iZXJGaWVsZCc7XG5pbXBvcnQgT2JqZWN0RmllbGQgZnJvbSAnLi9PYmplY3RGaWVsZCc7XG5pbXBvcnQgU2NoZW1hRmllbGQgZnJvbSAnLi9TY2hlbWFGaWVsZCc7XG5pbXBvcnQgU3RyaW5nRmllbGQgZnJvbSAnLi9TdHJpbmdGaWVsZCc7XG5pbXBvcnQgTnVsbEZpZWxkIGZyb20gJy4vTnVsbEZpZWxkJztcbmZ1bmN0aW9uIGZpZWxkcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBBbnlPZkZpZWxkOiBNdWx0aVNjaGVtYUZpZWxkLFxuICAgICAgICBBcnJheUZpZWxkOiBBcnJheUZpZWxkLFxuICAgICAgICAvLyBBcnJheUZpZWxkIGZhbGxzIGJhY2sgdG8gU2NoZW1hRmllbGQgaWYgQXJyYXlTY2hlbWFGaWVsZCBpcyBub3QgZGVmaW5lZCwgd2hpY2ggaXQgaXNuJ3QgYnkgZGVmYXVsdFxuICAgICAgICBCb29sZWFuRmllbGQsXG4gICAgICAgIE51bWJlckZpZWxkLFxuICAgICAgICBPYmplY3RGaWVsZCxcbiAgICAgICAgT25lT2ZGaWVsZDogTXVsdGlTY2hlbWFGaWVsZCxcbiAgICAgICAgU2NoZW1hRmllbGQsXG4gICAgICAgIFN0cmluZ0ZpZWxkLFxuICAgICAgICBOdWxsRmllbGQsXG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZpZWxkcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBkZXNjcmlwdGlvbklkLCBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlYCBjb21wb25lbnQgcmVuZGVycyBhIGBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGVgIHdpdGggYW4gYGlkYCBkZXJpdmVkIGZyb21cbiAqIHRoZSBgaWRTY2hlbWFgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgQXJyYXlGaWVsZERlc2NyaXB0aW9uUHJvcHNgIGZvciB0aGUgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZFNjaGVtYSwgZGVzY3JpcHRpb24sIHJlZ2lzdHJ5LCBzY2hlbWEsIHVpU2NoZW1hIH0gPSBwcm9wcztcbiAgICBjb25zdCBvcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCByZWdpc3RyeS5nbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IHsgbGFiZWw6IGRpc3BsYXlMYWJlbCA9IHRydWUgfSA9IG9wdGlvbnM7XG4gICAgaWYgKCFkZXNjcmlwdGlvbiB8fCAhZGlzcGxheUxhYmVsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiAoX2pzeChEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUsIHsgaWQ6IGRlc2NyaXB0aW9uSWQoaWRTY2hlbWEpLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLyoqIFRoZSBgQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZWAgY29tcG9uZW50IGlzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciBhbiBpdGVtcyBvZiBhbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEFycmF5RmllbGRUZW1wbGF0ZUl0ZW1UeXBlYCBwcm9wcyBmb3IgdGhlIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBcnJheUZpZWxkSXRlbVRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBkaXNhYmxlZCwgaGFzVG9vbGJhciwgaGFzTW92ZURvd24sIGhhc01vdmVVcCwgaGFzUmVtb3ZlLCBoYXNDb3B5LCBpbmRleCwgb25Db3B5SW5kZXhDbGljaywgb25Ecm9wSW5kZXhDbGljaywgb25SZW9yZGVyQ2xpY2ssIHJlYWRvbmx5LCByZWdpc3RyeSwgdWlTY2hlbWEsIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IENvcHlCdXR0b24sIE1vdmVEb3duQnV0dG9uLCBNb3ZlVXBCdXR0b24sIFJlbW92ZUJ1dHRvbiB9ID0gcmVnaXN0cnkudGVtcGxhdGVzLkJ1dHRvblRlbXBsYXRlcztcbiAgICBjb25zdCBidG5TdHlsZSA9IHtcbiAgICAgICAgZmxleDogMSxcbiAgICAgICAgcGFkZGluZ0xlZnQ6IDYsXG4gICAgICAgIHBhZGRpbmdSaWdodDogNixcbiAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgIH07XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGhhc1Rvb2xiYXIgPyAnY29sLXhzLTknIDogJ2NvbC14cy0xMicsIGNoaWxkcmVuOiBjaGlsZHJlbiB9KSwgaGFzVG9vbGJhciAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2NvbC14cy0zIGFycmF5LWl0ZW0tdG9vbGJveCcsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2J0bi1ncm91cCcsIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWFyb3VuZCcsXG4gICAgICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbKGhhc01vdmVVcCB8fCBoYXNNb3ZlRG93bikgJiYgKF9qc3goTW92ZVVwQnV0dG9uLCB7IHN0eWxlOiBidG5TdHlsZSwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5IHx8ICFoYXNNb3ZlVXAsIG9uQ2xpY2s6IG9uUmVvcmRlckNsaWNrKGluZGV4LCBpbmRleCAtIDEpLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSksIChoYXNNb3ZlVXAgfHwgaGFzTW92ZURvd24pICYmIChfanN4KE1vdmVEb3duQnV0dG9uLCB7IHN0eWxlOiBidG5TdHlsZSwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5IHx8ICFoYXNNb3ZlRG93biwgb25DbGljazogb25SZW9yZGVyQ2xpY2soaW5kZXgsIGluZGV4ICsgMSksIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKSwgaGFzQ29weSAmJiAoX2pzeChDb3B5QnV0dG9uLCB7IHN0eWxlOiBidG5TdHlsZSwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5LCBvbkNsaWNrOiBvbkNvcHlJbmRleENsaWNrKGluZGV4KSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpLCBoYXNSZW1vdmUgJiYgKF9qc3goUmVtb3ZlQnV0dG9uLCB7IHN0eWxlOiBidG5TdHlsZSwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5LCBvbkNsaWNrOiBvbkRyb3BJbmRleENsaWNrKGluZGV4KSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpXSB9KSB9KSldIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFycmF5RmllbGRJdGVtVGVtcGxhdGUuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQXJyYXlGaWVsZFRlbXBsYXRlYCBjb21wb25lbnQgaXMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIGFsbCBpdGVtcyBpbiBhbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEFycmF5RmllbGRUZW1wbGF0ZUl0ZW1UeXBlYCBwcm9wcyBmb3IgdGhlIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBcnJheUZpZWxkVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGNhbkFkZCwgY2xhc3NOYW1lLCBkaXNhYmxlZCwgaWRTY2hlbWEsIHVpU2NoZW1hLCBpdGVtcywgb25BZGRDbGljaywgcmVhZG9ubHksIHJlZ2lzdHJ5LCByZXF1aXJlZCwgc2NoZW1hLCB0aXRsZSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IHVpT3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgY29uc3QgQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBBcnJheUZpZWxkSXRlbVRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0FycmF5RmllbGRJdGVtVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIC8vIEJ1dHRvbiB0ZW1wbGF0ZXMgYXJlIG5vdCBvdmVycmlkZGVuIGluIHRoZSB1aVNjaGVtYVxuICAgIGNvbnN0IHsgQnV0dG9uVGVtcGxhdGVzOiB7IEFkZEJ1dHRvbiB9LCB9ID0gcmVnaXN0cnkudGVtcGxhdGVzO1xuICAgIHJldHVybiAoX2pzeHMoXCJmaWVsZHNldFwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCBpZDogaWRTY2hlbWEuJGlkLCBjaGlsZHJlbjogW19qc3goQXJyYXlGaWVsZFRpdGxlVGVtcGxhdGUsIHsgaWRTY2hlbWE6IGlkU2NoZW1hLCB0aXRsZTogdWlPcHRpb25zLnRpdGxlIHx8IHRpdGxlLCByZXF1aXJlZDogcmVxdWlyZWQsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSwgX2pzeChBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZSwgeyBpZFNjaGVtYTogaWRTY2hlbWEsIGRlc2NyaXB0aW9uOiB1aU9wdGlvbnMuZGVzY3JpcHRpb24gfHwgc2NoZW1hLmRlc2NyaXB0aW9uLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdyb3cgYXJyYXktaXRlbS1saXN0JywgY2hpbGRyZW46IGl0ZW1zICYmXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLm1hcCgoeyBrZXksIC4uLml0ZW1Qcm9wcyB9KSA9PiAoX2pzeChBcnJheUZpZWxkSXRlbVRlbXBsYXRlLCB7IC4uLml0ZW1Qcm9wcyB9LCBrZXkpKSkgfSksIGNhbkFkZCAmJiAoX2pzeChBZGRCdXR0b24sIHsgY2xhc3NOYW1lOiAnYXJyYXktaXRlbS1hZGQnLCBvbkNsaWNrOiBvbkFkZENsaWNrLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXJyYXlGaWVsZFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCB0aXRsZUlkLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEFycmF5RmllbGRUaXRsZVRlbXBsYXRlYCBjb21wb25lbnQgcmVuZGVycyBhIGBUaXRsZUZpZWxkVGVtcGxhdGVgIHdpdGggYW4gYGlkYCBkZXJpdmVkIGZyb21cbiAqIHRoZSBgaWRTY2hlbWFgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgQXJyYXlGaWVsZFRpdGxlUHJvcHNgIGZvciB0aGUgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFycmF5RmllbGRUaXRsZVRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZFNjaGVtYSwgdGl0bGUsIHNjaGVtYSwgdWlTY2hlbWEsIHJlcXVpcmVkLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgcmVnaXN0cnkuZ2xvYmFsVWlPcHRpb25zKTtcbiAgICBjb25zdCB7IGxhYmVsOiBkaXNwbGF5TGFiZWwgPSB0cnVlIH0gPSBvcHRpb25zO1xuICAgIGlmICghdGl0bGUgfHwgIWRpc3BsYXlMYWJlbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgVGl0bGVGaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ1RpdGxlRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gKF9qc3goVGl0bGVGaWVsZFRlbXBsYXRlLCB7IGlkOiB0aXRsZUlkKGlkU2NoZW1hKSwgdGl0bGU6IHRpdGxlLCByZXF1aXJlZDogcmVxdWlyZWQsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcnJheUZpZWxkVGl0bGVUZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFyaWFEZXNjcmliZWRCeUlkcywgZXhhbXBsZXNJZCwgZ2V0SW5wdXRQcm9wcywgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGJhc2ljIGA8aW5wdXQ+YCBjb21wb25lbnQgZm9yIHRoZSBgY29yZWAgdGhlbWUuXG4gKiBJdCBpcyB1c2VkIGFzIHRoZSB0ZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIG1hbnkgb2YgdGhlIDxpbnB1dD4gYmFzZWQgd2lkZ2V0cyB0aGF0IGRpZmZlciBieSBgdHlwZWAgYW5kIGNhbGxiYWNrcyBvbmx5LlxuICogSXQgY2FuIGJlIGN1c3RvbWl6ZWQvb3ZlcnJpZGRlbiBmb3Igb3RoZXIgdGhlbWVzIG9yIGluZGl2aWR1YWwgaW1wbGVtZW50YXRpb25zIGFzIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYXNlSW5wdXRUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgaWQsIG5hbWUsIC8vIHJlbW92ZSB0aGlzIGZyb20gLi4ucmVzdFxuICAgIHZhbHVlLCByZWFkb25seSwgZGlzYWJsZWQsIGF1dG9mb2N1cywgb25CbHVyLCBvbkZvY3VzLCBvbkNoYW5nZSwgb25DaGFuZ2VPdmVycmlkZSwgb3B0aW9ucywgc2NoZW1hLCB1aVNjaGVtYSwgZm9ybUNvbnRleHQsIHJlZ2lzdHJ5LCByYXdFcnJvcnMsIHR5cGUsIGhpZGVMYWJlbCwgLy8gcmVtb3ZlIHRoaXMgZnJvbSAuLi5yZXN0XG4gICAgaGlkZUVycm9yLCAvLyByZW1vdmUgdGhpcyBmcm9tIC4uLnJlc3RcbiAgICAuLi5yZXN0IH0gPSBwcm9wcztcbiAgICAvLyBOb3RlOiBzaW5jZSBSZWFjdCAxNS4yLjAgd2UgY2FuJ3QgZm9yd2FyZCB1bmtub3duIGVsZW1lbnQgYXR0cmlidXRlcywgc28gd2VcbiAgICAvLyBleGNsdWRlIHRoZSBcIm9wdGlvbnNcIiBhbmQgXCJzY2hlbWFcIiBvbmVzIGhlcmUuXG4gICAgaWYgKCFpZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnTm8gaWQgZm9yJywgcHJvcHMpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGlkIGZvciBwcm9wcyAke0pTT04uc3RyaW5naWZ5KHByb3BzKX1gKTtcbiAgICB9XG4gICAgY29uc3QgaW5wdXRQcm9wcyA9IHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgLi4uZ2V0SW5wdXRQcm9wcyhzY2hlbWEsIHR5cGUsIG9wdGlvbnMpLFxuICAgIH07XG4gICAgbGV0IGlucHV0VmFsdWU7XG4gICAgaWYgKGlucHV0UHJvcHMudHlwZSA9PT0gJ251bWJlcicgfHwgaW5wdXRQcm9wcy50eXBlID09PSAnaW50ZWdlcicpIHtcbiAgICAgICAgaW5wdXRWYWx1ZSA9IHZhbHVlIHx8IHZhbHVlID09PSAwID8gdmFsdWUgOiAnJztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlucHV0VmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgX29uQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkgPT4gb25DaGFuZ2UodmFsdWUgPT09ICcnID8gb3B0aW9ucy5lbXB0eVZhbHVlIDogdmFsdWUpLCBbb25DaGFuZ2UsIG9wdGlvbnNdKTtcbiAgICBjb25zdCBfb25CbHVyID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0IH0pID0+IG9uQmx1cihpZCwgdGFyZ2V0ICYmIHRhcmdldC52YWx1ZSksIFtvbkJsdXIsIGlkXSk7XG4gICAgY29uc3QgX29uRm9jdXMgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25Gb2N1cyhpZCwgdGFyZ2V0ICYmIHRhcmdldC52YWx1ZSksIFtvbkZvY3VzLCBpZF0pO1xuICAgIHJldHVybiAoX2pzeHMoX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHsgaWQ6IGlkLCBuYW1lOiBpZCwgY2xhc3NOYW1lOiAnZm9ybS1jb250cm9sJywgcmVhZE9ubHk6IHJlYWRvbmx5LCBkaXNhYmxlZDogZGlzYWJsZWQsIGF1dG9Gb2N1czogYXV0b2ZvY3VzLCB2YWx1ZTogaW5wdXRWYWx1ZSwgLi4uaW5wdXRQcm9wcywgbGlzdDogc2NoZW1hLmV4YW1wbGVzID8gZXhhbXBsZXNJZChpZCkgOiB1bmRlZmluZWQsIG9uQ2hhbmdlOiBvbkNoYW5nZU92ZXJyaWRlIHx8IF9vbkNoYW5nZSwgb25CbHVyOiBfb25CbHVyLCBvbkZvY3VzOiBfb25Gb2N1cywgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeUlkcyhpZCwgISFzY2hlbWEuZXhhbXBsZXMpIH0pLCBBcnJheS5pc0FycmF5KHNjaGVtYS5leGFtcGxlcykgJiYgKF9qc3goXCJkYXRhbGlzdFwiLCB7IGlkOiBleGFtcGxlc0lkKGlkKSwgY2hpbGRyZW46IHNjaGVtYS5leGFtcGxlc1xuICAgICAgICAgICAgICAgICAgICAuY29uY2F0KHNjaGVtYS5kZWZhdWx0ICYmICFzY2hlbWEuZXhhbXBsZXMuaW5jbHVkZXMoc2NoZW1hLmRlZmF1bHQpID8gW3NjaGVtYS5kZWZhdWx0XSA6IFtdKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChleGFtcGxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfanN4KFwib3B0aW9uXCIsIHsgdmFsdWU6IGV4YW1wbGUgfSwgZXhhbXBsZSk7XG4gICAgICAgICAgICAgICAgfSkgfSwgYGRhdGFsaXN0XyR7aWR9YCkpXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CYXNlSW5wdXRUZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0U3VibWl0QnV0dG9uT3B0aW9ucyB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFN1Ym1pdEJ1dHRvbmAgcmVuZGVycyBhIGJ1dHRvbiB0aGF0IHJlcHJlc2VudCB0aGUgYFN1Ym1pdGAgYWN0aW9uIG9uIGEgZm9ybVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTdWJtaXRCdXR0b24oeyB1aVNjaGVtYSB9KSB7XG4gICAgY29uc3QgeyBzdWJtaXRUZXh0LCBub3JlbmRlciwgcHJvcHM6IHN1Ym1pdEJ1dHRvblByb3BzID0ge30gfSA9IGdldFN1Ym1pdEJ1dHRvbk9wdGlvbnModWlTY2hlbWEpO1xuICAgIGlmIChub3JlbmRlcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2hpbGRyZW46IF9qc3goXCJidXR0b25cIiwgeyB0eXBlOiAnc3VibWl0JywgLi4uc3VibWl0QnV0dG9uUHJvcHMsIGNsYXNzTmFtZTogYGJ0biBidG4taW5mbyAke3N1Ym1pdEJ1dHRvblByb3BzLmNsYXNzTmFtZSB8fCAnJ31gLCBjaGlsZHJlbjogc3VibWl0VGV4dCB9KSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdWJtaXRCdXR0b24uanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IFRyYW5zbGF0YWJsZVN0cmluZyB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEljb25CdXR0b24ocHJvcHMpIHtcbiAgICBjb25zdCB7IGljb25UeXBlID0gJ2RlZmF1bHQnLCBpY29uLCBjbGFzc05hbWUsIHVpU2NoZW1hLCByZWdpc3RyeSwgLi4ub3RoZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChfanN4KFwiYnV0dG9uXCIsIHsgdHlwZTogJ2J1dHRvbicsIGNsYXNzTmFtZTogYGJ0biBidG4tJHtpY29uVHlwZX0gJHtjbGFzc05hbWV9YCwgLi4ub3RoZXJQcm9wcywgY2hpbGRyZW46IF9qc3goXCJpXCIsIHsgY2xhc3NOYW1lOiBgZ2x5cGhpY29uIGdseXBoaWNvbi0ke2ljb259YCB9KSB9KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gQ29weUJ1dHRvbihwcm9wcykge1xuICAgIGNvbnN0IHsgcmVnaXN0cnk6IHsgdHJhbnNsYXRlU3RyaW5nIH0sIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKF9qc3goSWNvbkJ1dHRvbiwgeyB0aXRsZTogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5Db3B5QnV0dG9uKSwgY2xhc3NOYW1lOiAnYXJyYXktaXRlbS1jb3B5JywgLi4ucHJvcHMsIGljb246ICdjb3B5JyB9KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gTW92ZURvd25CdXR0b24ocHJvcHMpIHtcbiAgICBjb25zdCB7IHJlZ2lzdHJ5OiB7IHRyYW5zbGF0ZVN0cmluZyB9LCB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChfanN4KEljb25CdXR0b24sIHsgdGl0bGU6IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuTW92ZURvd25CdXR0b24pLCBjbGFzc05hbWU6ICdhcnJheS1pdGVtLW1vdmUtZG93bicsIC4uLnByb3BzLCBpY29uOiAnYXJyb3ctZG93bicgfSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIE1vdmVVcEJ1dHRvbihwcm9wcykge1xuICAgIGNvbnN0IHsgcmVnaXN0cnk6IHsgdHJhbnNsYXRlU3RyaW5nIH0sIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKF9qc3goSWNvbkJ1dHRvbiwgeyB0aXRsZTogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5Nb3ZlVXBCdXR0b24pLCBjbGFzc05hbWU6ICdhcnJheS1pdGVtLW1vdmUtdXAnLCAuLi5wcm9wcywgaWNvbjogJ2Fycm93LXVwJyB9KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gUmVtb3ZlQnV0dG9uKHByb3BzKSB7XG4gICAgY29uc3QgeyByZWdpc3RyeTogeyB0cmFuc2xhdGVTdHJpbmcgfSwgfSA9IHByb3BzO1xuICAgIHJldHVybiAoX2pzeChJY29uQnV0dG9uLCB7IHRpdGxlOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLlJlbW92ZUJ1dHRvbiksIGNsYXNzTmFtZTogJ2FycmF5LWl0ZW0tcmVtb3ZlJywgLi4ucHJvcHMsIGljb25UeXBlOiAnZGFuZ2VyJywgaWNvbjogJ3JlbW92ZScgfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SWNvbkJ1dHRvbi5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgVHJhbnNsYXRhYmxlU3RyaW5nIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IEljb25CdXR0b24gZnJvbSAnLi9JY29uQnV0dG9uJztcbi8qKiBUaGUgYEFkZEJ1dHRvbmAgcmVuZGVycyBhIGJ1dHRvbiB0aGF0IHJlcHJlc2VudCB0aGUgYEFkZGAgYWN0aW9uIG9uIGEgZm9ybVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBZGRCdXR0b24oeyBjbGFzc05hbWUsIG9uQ2xpY2ssIGRpc2FibGVkLCByZWdpc3RyeSwgfSkge1xuICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdyb3cnLCBjaGlsZHJlbjogX2pzeChcInBcIiwgeyBjbGFzc05hbWU6IGBjb2wteHMtMyBjb2wteHMtb2Zmc2V0LTkgdGV4dC1yaWdodCAke2NsYXNzTmFtZX1gLCBjaGlsZHJlbjogX2pzeChJY29uQnV0dG9uLCB7IGljb25UeXBlOiAnaW5mbycsIGljb246ICdwbHVzJywgY2xhc3NOYW1lOiAnYnRuLWFkZCBjb2wteHMtMTInLCB0aXRsZTogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5BZGRCdXR0b24pLCBvbkNsaWNrOiBvbkNsaWNrLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSB9KSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BZGRCdXR0b24uanMubWFwIiwiaW1wb3J0IFN1Ym1pdEJ1dHRvbiBmcm9tICcuL1N1Ym1pdEJ1dHRvbic7XG5pbXBvcnQgQWRkQnV0dG9uIGZyb20gJy4vQWRkQnV0dG9uJztcbmltcG9ydCB7IENvcHlCdXR0b24sIE1vdmVEb3duQnV0dG9uLCBNb3ZlVXBCdXR0b24sIFJlbW92ZUJ1dHRvbiB9IGZyb20gJy4vSWNvbkJ1dHRvbic7XG5mdW5jdGlvbiBidXR0b25UZW1wbGF0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgU3VibWl0QnV0dG9uLFxuICAgICAgICBBZGRCdXR0b24sXG4gICAgICAgIENvcHlCdXR0b24sXG4gICAgICAgIE1vdmVEb3duQnV0dG9uLFxuICAgICAgICBNb3ZlVXBCdXR0b24sXG4gICAgICAgIFJlbW92ZUJ1dHRvbixcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgYnV0dG9uVGVtcGxhdGVzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8qKiBUaGUgYERlc2NyaXB0aW9uRmllbGRgIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBkZXNjcmlwdGlvbiBvZiBhIGZpZWxkXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBEZXNjcmlwdGlvbkZpZWxkUHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEZXNjcmlwdGlvbkZpZWxkKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZCwgZGVzY3JpcHRpb24gfSA9IHByb3BzO1xuICAgIGlmICghZGVzY3JpcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcInBcIiwgeyBpZDogaWQsIGNsYXNzTmFtZTogJ2ZpZWxkLWRlc2NyaXB0aW9uJywgY2hpbGRyZW46IGRlc2NyaXB0aW9uIH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGlkOiBpZCwgY2xhc3NOYW1lOiAnZmllbGQtZGVzY3JpcHRpb24nLCBjaGlsZHJlbjogZGVzY3JpcHRpb24gfSkpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlc2NyaXB0aW9uRmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IFRyYW5zbGF0YWJsZVN0cmluZywgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBFcnJvckxpc3RgIGNvbXBvbmVudCBpcyB0aGUgdGVtcGxhdGUgdGhhdCByZW5kZXJzIHRoZSBhbGwgdGhlIGVycm9ycyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkcyBpbiB0aGUgYEZvcm1gXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBFcnJvckxpc3RQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEVycm9yTGlzdCh7IGVycm9ycywgcmVnaXN0cnksIH0pIHtcbiAgICBjb25zdCB7IHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogJ3BhbmVsIHBhbmVsLWRhbmdlciBlcnJvcnMnLCBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdwYW5lbC1oZWFkaW5nJywgY2hpbGRyZW46IF9qc3goXCJoM1wiLCB7IGNsYXNzTmFtZTogJ3BhbmVsLXRpdGxlJywgY2hpbGRyZW46IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuRXJyb3JzTGFiZWwpIH0pIH0pLCBfanN4KFwidWxcIiwgeyBjbGFzc05hbWU6ICdsaXN0LWdyb3VwJywgY2hpbGRyZW46IGVycm9ycy5tYXAoKGVycm9yLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChcImxpXCIsIHsgY2xhc3NOYW1lOiAnbGlzdC1ncm91cC1pdGVtIHRleHQtZGFuZ2VyJywgY2hpbGRyZW46IGVycm9yLnN0YWNrIH0sIGkpKTtcbiAgICAgICAgICAgICAgICB9KSB9KV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXJyb3JMaXN0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBSRVFVSVJFRF9GSUVMRF9TWU1CT0wgPSAnKic7XG4vKiogUmVuZGVycyBhIGxhYmVsIGZvciBhIGZpZWxkXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBMYWJlbFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTGFiZWwocHJvcHMpIHtcbiAgICBjb25zdCB7IGxhYmVsLCByZXF1aXJlZCwgaWQgfSA9IHByb3BzO1xuICAgIGlmICghbGFiZWwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeHMoXCJsYWJlbFwiLCB7IGNsYXNzTmFtZTogJ2NvbnRyb2wtbGFiZWwnLCBodG1sRm9yOiBpZCwgY2hpbGRyZW46IFtsYWJlbCwgcmVxdWlyZWQgJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6ICdyZXF1aXJlZCcsIGNoaWxkcmVuOiBSRVFVSVJFRF9GSUVMRF9TWU1CT0wgfSldIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxhYmVsLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBMYWJlbCBmcm9tICcuL0xhYmVsJztcbi8qKiBUaGUgYEZpZWxkVGVtcGxhdGVgIGNvbXBvbmVudCBpcyB0aGUgdGVtcGxhdGUgdXNlZCBieSBgU2NoZW1hRmllbGRgIHRvIHJlbmRlciBhbnkgZmllbGQuIEl0IHJlbmRlcnMgdGhlIGZpZWxkXG4gKiBjb250ZW50LCAobGFiZWwsIGRlc2NyaXB0aW9uLCBjaGlsZHJlbiwgZXJyb3JzIGFuZCBoZWxwKSBpbnNpZGUgb2YgYSBgV3JhcElmQWRkaXRpb25hbGAgY29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRUZW1wbGF0ZVByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmllbGRUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgaWQsIGxhYmVsLCBjaGlsZHJlbiwgZXJyb3JzLCBoZWxwLCBkZXNjcmlwdGlvbiwgaGlkZGVuLCByZXF1aXJlZCwgZGlzcGxheUxhYmVsLCByZWdpc3RyeSwgdWlTY2hlbWEgfSA9IHByb3BzO1xuICAgIGNvbnN0IHVpT3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgY29uc3QgV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ1dyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIGlmIChoaWRkZW4pIHtcbiAgICAgICAgcmV0dXJuIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdoaWRkZW4nLCBjaGlsZHJlbjogY2hpbGRyZW4gfSk7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeHMoV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlLCB7IC4uLnByb3BzLCBjaGlsZHJlbjogW2Rpc3BsYXlMYWJlbCAmJiBfanN4KExhYmVsLCB7IGxhYmVsOiBsYWJlbCwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBpZDogaWQgfSksIGRpc3BsYXlMYWJlbCAmJiBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uIDogbnVsbCwgY2hpbGRyZW4sIGVycm9ycywgaGVscF0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmllbGRUZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZXJyb3JJZCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEZpZWxkRXJyb3JUZW1wbGF0ZWAgY29tcG9uZW50IHJlbmRlcnMgdGhlIGVycm9ycyBsb2NhbCB0byB0aGUgcGFydGljdWxhciBmaWVsZFxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRFcnJvclByb3BzYCBmb3IgdGhlIGVycm9ycyBiZWluZyByZW5kZXJlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGaWVsZEVycm9yVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGVycm9ycyA9IFtdLCBpZFNjaGVtYSB9ID0gcHJvcHM7XG4gICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gZXJyb3JJZChpZFNjaGVtYSk7XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2hpbGRyZW46IF9qc3goXCJ1bFwiLCB7IGlkOiBpZCwgY2xhc3NOYW1lOiAnZXJyb3ItZGV0YWlsIGJzLWNhbGxvdXQgYnMtY2FsbG91dC1pbmZvJywgY2hpbGRyZW46IGVycm9yc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVsZW0pID0+ICEhZWxlbSlcbiAgICAgICAgICAgICAgICAubWFwKChlcnJvciwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goXCJsaVwiLCB7IGNsYXNzTmFtZTogJ3RleHQtZGFuZ2VyJywgY2hpbGRyZW46IGVycm9yIH0sIGluZGV4KSk7XG4gICAgICAgICAgICB9KSB9KSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWVsZEVycm9yVGVtcGxhdGUuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGhlbHBJZCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEZpZWxkSGVscFRlbXBsYXRlYCBjb21wb25lbnQgcmVuZGVycyBhbnkgaGVscCBkZXNpcmVkIGZvciBhIGZpZWxkXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZEhlbHBQcm9wc2AgdG8gYmUgcmVuZGVyZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmllbGRIZWxwVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGlkU2NoZW1hLCBoZWxwIH0gPSBwcm9wcztcbiAgICBpZiAoIWhlbHApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gaGVscElkKGlkU2NoZW1hKTtcbiAgICBpZiAodHlwZW9mIGhlbHAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcInBcIiwgeyBpZDogaWQsIGNsYXNzTmFtZTogJ2hlbHAtYmxvY2snLCBjaGlsZHJlbjogaGVscCB9KSk7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGlkOiBpZCwgY2xhc3NOYW1lOiAnaGVscC1ibG9jaycsIGNoaWxkcmVuOiBoZWxwIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpZWxkSGVscFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjYW5FeHBhbmQsIGRlc2NyaXB0aW9uSWQsIGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIHRpdGxlSWQsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgT2JqZWN0RmllbGRUZW1wbGF0ZWAgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgYWxsIHRoZSBpbm5lciBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCBhbG9uZyB3aXRoIHRoZVxuICogdGl0bGUgYW5kIGRlc2NyaXB0aW9uIGlmIGF2YWlsYWJsZS4gSWYgdGhlIG9iamVjdCBpcyBleHBhbmRhYmxlLCB0aGVuIGFuIGBBZGRCdXR0b25gIGlzIGFsc28gcmVuZGVyZWQgYWZ0ZXIgYWxsXG4gKiB0aGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYE9iamVjdEZpZWxkVGVtcGxhdGVQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE9iamVjdEZpZWxkVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGRlc2NyaXB0aW9uLCBkaXNhYmxlZCwgZm9ybURhdGEsIGlkU2NoZW1hLCBvbkFkZENsaWNrLCBwcm9wZXJ0aWVzLCByZWFkb25seSwgcmVnaXN0cnksIHJlcXVpcmVkLCBzY2hlbWEsIHRpdGxlLCB1aVNjaGVtYSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgIGNvbnN0IFRpdGxlRmllbGRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdUaXRsZUZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgY29uc3QgRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Rlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICAvLyBCdXR0b24gdGVtcGxhdGVzIGFyZSBub3Qgb3ZlcnJpZGRlbiBpbiB0aGUgdWlTY2hlbWFcbiAgICBjb25zdCB7IEJ1dHRvblRlbXBsYXRlczogeyBBZGRCdXR0b24gfSwgfSA9IHJlZ2lzdHJ5LnRlbXBsYXRlcztcbiAgICByZXR1cm4gKF9qc3hzKFwiZmllbGRzZXRcIiwgeyBpZDogaWRTY2hlbWEuJGlkLCBjaGlsZHJlbjogW3RpdGxlICYmIChfanN4KFRpdGxlRmllbGRUZW1wbGF0ZSwgeyBpZDogdGl0bGVJZChpZFNjaGVtYSksIHRpdGxlOiB0aXRsZSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpLCBkZXNjcmlwdGlvbiAmJiAoX2pzeChEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUsIHsgaWQ6IGRlc2NyaXB0aW9uSWQoaWRTY2hlbWEpLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSksIHByb3BlcnRpZXMubWFwKChwcm9wKSA9PiBwcm9wLmNvbnRlbnQpLCBjYW5FeHBhbmQoc2NoZW1hLCB1aVNjaGVtYSwgZm9ybURhdGEpICYmIChfanN4KEFkZEJ1dHRvbiwgeyBjbGFzc05hbWU6ICdvYmplY3QtcHJvcGVydHktZXhwYW5kJywgb25DbGljazogb25BZGRDbGljayhzY2hlbWEpLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T2JqZWN0RmllbGRUZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgUkVRVUlSRURfRklFTERfU1lNQk9MID0gJyonO1xuLyoqIFRoZSBgVGl0bGVGaWVsZGAgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIHRpdGxlIG9mIGEgZmllbGRcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFRpdGxlRmllbGRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRpdGxlRmllbGQocHJvcHMpIHtcbiAgICBjb25zdCB7IGlkLCB0aXRsZSwgcmVxdWlyZWQgfSA9IHByb3BzO1xuICAgIHJldHVybiAoX2pzeHMoXCJsZWdlbmRcIiwgeyBpZDogaWQsIGNoaWxkcmVuOiBbdGl0bGUsIHJlcXVpcmVkICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiAncmVxdWlyZWQnLCBjaGlsZHJlbjogUkVRVUlSRURfRklFTERfU1lNQk9MIH0pXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaXRsZUZpZWxkLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGFibGVTdHJpbmcgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgTWFya2Rvd24gZnJvbSAnbWFya2Rvd24tdG8tanN4Jztcbi8qKiBUaGUgYFVuc3VwcG9ydGVkRmllbGRgIGNvbXBvbmVudCBpcyB1c2VkIHRvIHJlbmRlciBhIGZpZWxkIGluIHRoZSBzY2hlbWEgaXMgb25lIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieVxuICogcmVhY3QtanNvbnNjaGVtYS1mb3JtLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAqL1xuZnVuY3Rpb24gVW5zdXBwb3J0ZWRGaWVsZChwcm9wcykge1xuICAgIGNvbnN0IHsgc2NoZW1hLCBpZFNjaGVtYSwgcmVhc29uLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIGxldCB0cmFuc2xhdGVFbnVtID0gVHJhbnNsYXRhYmxlU3RyaW5nLlVuc3VwcG9ydGVkRmllbGQ7XG4gICAgY29uc3QgdHJhbnNsYXRlUGFyYW1zID0gW107XG4gICAgaWYgKGlkU2NoZW1hICYmIGlkU2NoZW1hLiRpZCkge1xuICAgICAgICB0cmFuc2xhdGVFbnVtID0gVHJhbnNsYXRhYmxlU3RyaW5nLlVuc3VwcG9ydGVkRmllbGRXaXRoSWQ7XG4gICAgICAgIHRyYW5zbGF0ZVBhcmFtcy5wdXNoKGlkU2NoZW1hLiRpZCk7XG4gICAgfVxuICAgIGlmIChyZWFzb24pIHtcbiAgICAgICAgdHJhbnNsYXRlRW51bSA9XG4gICAgICAgICAgICB0cmFuc2xhdGVFbnVtID09PSBUcmFuc2xhdGFibGVTdHJpbmcuVW5zdXBwb3J0ZWRGaWVsZFxuICAgICAgICAgICAgICAgID8gVHJhbnNsYXRhYmxlU3RyaW5nLlVuc3VwcG9ydGVkRmllbGRXaXRoUmVhc29uXG4gICAgICAgICAgICAgICAgOiBUcmFuc2xhdGFibGVTdHJpbmcuVW5zdXBwb3J0ZWRGaWVsZFdpdGhJZEFuZFJlYXNvbjtcbiAgICAgICAgdHJhbnNsYXRlUGFyYW1zLnB1c2gocmVhc29uKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogJ3Vuc3VwcG9ydGVkLWZpZWxkJywgY2hpbGRyZW46IFtfanN4KFwicFwiLCB7IGNoaWxkcmVuOiBfanN4KE1hcmtkb3duLCB7IG9wdGlvbnM6IHsgZGlzYWJsZVBhcnNpbmdSYXdIVE1MOiB0cnVlIH0sIGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcodHJhbnNsYXRlRW51bSwgdHJhbnNsYXRlUGFyYW1zKSB9KSB9KSwgc2NoZW1hICYmIF9qc3goXCJwcmVcIiwgeyBjaGlsZHJlbjogSlNPTi5zdHJpbmdpZnkoc2NoZW1hLCBudWxsLCAyKSB9KV0gfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgVW5zdXBwb3J0ZWRGaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVVuc3VwcG9ydGVkRmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRywgVHJhbnNsYXRhYmxlU3RyaW5nLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBMYWJlbCBmcm9tICcuL0ZpZWxkVGVtcGxhdGUvTGFiZWwnO1xuLyoqIFRoZSBgV3JhcElmQWRkaXRpb25hbGAgY29tcG9uZW50IGlzIHVzZWQgYnkgdGhlIGBGaWVsZFRlbXBsYXRlYCB0byByZW5hbWUsIG9yIHJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQgYXJlXG4gKiBwYXJ0IG9mIGFuIGBhZGRpdGlvbmFsUHJvcGVydGllc2AgcGFydCBvZiBhIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdyYXBJZkFkZGl0aW9uYWxQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFdyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgaWQsIGNsYXNzTmFtZXMsIHN0eWxlLCBkaXNhYmxlZCwgbGFiZWwsIG9uS2V5Q2hhbmdlLCBvbkRyb3BQcm9wZXJ0eUNsaWNrLCByZWFkb25seSwgcmVxdWlyZWQsIHNjaGVtYSwgY2hpbGRyZW4sIHVpU2NoZW1hLCByZWdpc3RyeSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgdGVtcGxhdGVzLCB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIC8vIEJ1dHRvbiB0ZW1wbGF0ZXMgYXJlIG5vdCBvdmVycmlkZGVuIGluIHRoZSB1aVNjaGVtYVxuICAgIGNvbnN0IHsgUmVtb3ZlQnV0dG9uIH0gPSB0ZW1wbGF0ZXMuQnV0dG9uVGVtcGxhdGVzO1xuICAgIGNvbnN0IGtleUxhYmVsID0gdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5LZXlMYWJlbCwgW2xhYmVsXSk7XG4gICAgY29uc3QgYWRkaXRpb25hbCA9IEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRyBpbiBzY2hlbWE7XG4gICAgaWYgKCFhZGRpdGlvbmFsKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcywgc3R5bGU6IHN0eWxlLCBjaGlsZHJlbjogY2hpbGRyZW4gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMsIHN0eWxlOiBzdHlsZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAncm93JywgY2hpbGRyZW46IFtfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnY29sLXhzLTUgZm9ybS1hZGRpdGlvbmFsJywgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnZm9ybS1ncm91cCcsIGNoaWxkcmVuOiBbX2pzeChMYWJlbCwgeyBsYWJlbDoga2V5TGFiZWwsIHJlcXVpcmVkOiByZXF1aXJlZCwgaWQ6IGAke2lkfS1rZXlgIH0pLCBfanN4KFwiaW5wdXRcIiwgeyBjbGFzc05hbWU6ICdmb3JtLWNvbnRyb2wnLCB0eXBlOiAndGV4dCcsIGlkOiBgJHtpZH0ta2V5YCwgb25CbHVyOiAoeyB0YXJnZXQgfSkgPT4gb25LZXlDaGFuZ2UodGFyZ2V0ICYmIHRhcmdldC52YWx1ZSksIGRlZmF1bHRWYWx1ZTogbGFiZWwgfSldIH0pIH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnZm9ybS1hZGRpdGlvbmFsIGZvcm0tZ3JvdXAgY29sLXhzLTUnLCBjaGlsZHJlbjogY2hpbGRyZW4gfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdjb2wteHMtMicsIGNoaWxkcmVuOiBfanN4KFJlbW92ZUJ1dHRvbiwgeyBjbGFzc05hbWU6ICdhcnJheS1pdGVtLXJlbW92ZSBidG4tYmxvY2snLCBzdHlsZTogeyBib3JkZXI6ICcwJyB9LCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIG9uQ2xpY2s6IG9uRHJvcFByb3BlcnR5Q2xpY2sobGFiZWwpLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSB9KV0gfSkgfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V3JhcElmQWRkaXRpb25hbFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCBBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZSBmcm9tICcuL0FycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlJztcbmltcG9ydCBBcnJheUZpZWxkSXRlbVRlbXBsYXRlIGZyb20gJy4vQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZSc7XG5pbXBvcnQgQXJyYXlGaWVsZFRlbXBsYXRlIGZyb20gJy4vQXJyYXlGaWVsZFRlbXBsYXRlJztcbmltcG9ydCBBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZSBmcm9tICcuL0FycmF5RmllbGRUaXRsZVRlbXBsYXRlJztcbmltcG9ydCBCYXNlSW5wdXRUZW1wbGF0ZSBmcm9tICcuL0Jhc2VJbnB1dFRlbXBsYXRlJztcbmltcG9ydCBCdXR0b25UZW1wbGF0ZXMgZnJvbSAnLi9CdXR0b25UZW1wbGF0ZXMnO1xuaW1wb3J0IERlc2NyaXB0aW9uRmllbGQgZnJvbSAnLi9EZXNjcmlwdGlvbkZpZWxkJztcbmltcG9ydCBFcnJvckxpc3QgZnJvbSAnLi9FcnJvckxpc3QnO1xuaW1wb3J0IEZpZWxkVGVtcGxhdGUgZnJvbSAnLi9GaWVsZFRlbXBsYXRlJztcbmltcG9ydCBGaWVsZEVycm9yVGVtcGxhdGUgZnJvbSAnLi9GaWVsZEVycm9yVGVtcGxhdGUnO1xuaW1wb3J0IEZpZWxkSGVscFRlbXBsYXRlIGZyb20gJy4vRmllbGRIZWxwVGVtcGxhdGUnO1xuaW1wb3J0IE9iamVjdEZpZWxkVGVtcGxhdGUgZnJvbSAnLi9PYmplY3RGaWVsZFRlbXBsYXRlJztcbmltcG9ydCBUaXRsZUZpZWxkIGZyb20gJy4vVGl0bGVGaWVsZCc7XG5pbXBvcnQgVW5zdXBwb3J0ZWRGaWVsZCBmcm9tICcuL1Vuc3VwcG9ydGVkRmllbGQnO1xuaW1wb3J0IFdyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZSBmcm9tICcuL1dyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZSc7XG5mdW5jdGlvbiB0ZW1wbGF0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGUsXG4gICAgICAgIEFycmF5RmllbGRJdGVtVGVtcGxhdGUsXG4gICAgICAgIEFycmF5RmllbGRUZW1wbGF0ZSxcbiAgICAgICAgQXJyYXlGaWVsZFRpdGxlVGVtcGxhdGUsXG4gICAgICAgIEJ1dHRvblRlbXBsYXRlczogQnV0dG9uVGVtcGxhdGVzKCksXG4gICAgICAgIEJhc2VJbnB1dFRlbXBsYXRlLFxuICAgICAgICBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGU6IERlc2NyaXB0aW9uRmllbGQsXG4gICAgICAgIEVycm9yTGlzdFRlbXBsYXRlOiBFcnJvckxpc3QsXG4gICAgICAgIEZpZWxkVGVtcGxhdGUsXG4gICAgICAgIEZpZWxkRXJyb3JUZW1wbGF0ZSxcbiAgICAgICAgRmllbGRIZWxwVGVtcGxhdGUsXG4gICAgICAgIE9iamVjdEZpZWxkVGVtcGxhdGUsXG4gICAgICAgIFRpdGxlRmllbGRUZW1wbGF0ZTogVGl0bGVGaWVsZCxcbiAgICAgICAgVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlOiBVbnN1cHBvcnRlZEZpZWxkLFxuICAgICAgICBXcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUsXG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IHRlbXBsYXRlcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWR1Y2VyLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFyaWFEZXNjcmliZWRCeUlkcywgZGF0ZVJhbmdlT3B0aW9ucywgcGFyc2VEYXRlU3RyaW5nLCB0b0RhdGVTdHJpbmcsIFRyYW5zbGF0YWJsZVN0cmluZywgZ2V0RGF0ZUVsZW1lbnRQcm9wcywgfSBmcm9tICdAcmpzZi91dGlscyc7XG5mdW5jdGlvbiByZWFkeUZvckNoYW5nZShzdGF0ZSkge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHN0YXRlKS5ldmVyeSgodmFsdWUpID0+IHZhbHVlICE9PSAtMSk7XG59XG5mdW5jdGlvbiBEYXRlRWxlbWVudCh7IHR5cGUsIHJhbmdlLCB2YWx1ZSwgc2VsZWN0LCByb290SWQsIG5hbWUsIGRpc2FibGVkLCByZWFkb25seSwgYXV0b2ZvY3VzLCByZWdpc3RyeSwgb25CbHVyLCBvbkZvY3VzLCB9KSB7XG4gICAgY29uc3QgaWQgPSByb290SWQgKyAnXycgKyB0eXBlO1xuICAgIGNvbnN0IHsgU2VsZWN0V2lkZ2V0IH0gPSByZWdpc3RyeS53aWRnZXRzO1xuICAgIHJldHVybiAoX2pzeChTZWxlY3RXaWRnZXQsIHsgc2NoZW1hOiB7IHR5cGU6ICdpbnRlZ2VyJyB9LCBpZDogaWQsIG5hbWU6IG5hbWUsIGNsYXNzTmFtZTogJ2Zvcm0tY29udHJvbCcsIG9wdGlvbnM6IHsgZW51bU9wdGlvbnM6IGRhdGVSYW5nZU9wdGlvbnMocmFuZ2VbMF0sIHJhbmdlWzFdKSB9LCBwbGFjZWhvbGRlcjogdHlwZSwgdmFsdWU6IHZhbHVlLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIG9uQ2hhbmdlOiAodmFsdWUpID0+IHNlbGVjdCh0eXBlLCB2YWx1ZSksIG9uQmx1cjogb25CbHVyLCBvbkZvY3VzOiBvbkZvY3VzLCByZWdpc3RyeTogcmVnaXN0cnksIGxhYmVsOiAnJywgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeUlkcyhyb290SWQpIH0pKTtcbn1cbi8qKiBUaGUgYEFsdERhdGVXaWRnZXRgIGlzIGFuIGFsdGVybmF0aXZlIHdpZGdldCBmb3IgcmVuZGVyaW5nIGRhdGUgcHJvcGVydGllcy5cbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBBbHREYXRlV2lkZ2V0KHsgdGltZSA9IGZhbHNlLCBkaXNhYmxlZCA9IGZhbHNlLCByZWFkb25seSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgb3B0aW9ucywgaWQsIG5hbWUsIHJlZ2lzdHJ5LCBvbkJsdXIsIG9uRm9jdXMsIG9uQ2hhbmdlLCB2YWx1ZSwgfSkge1xuICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCBbbGFzdFZhbHVlLCBzZXRMYXN0VmFsdWVdID0gdXNlU3RhdGUodmFsdWUpO1xuICAgIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlUmVkdWNlcigoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4uYWN0aW9uIH07XG4gICAgfSwgcGFyc2VEYXRlU3RyaW5nKHZhbHVlLCB0aW1lKSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVWYWx1ZSA9IHRvRGF0ZVN0cmluZyhzdGF0ZSwgdGltZSk7XG4gICAgICAgIGlmIChyZWFkeUZvckNoYW5nZShzdGF0ZSkgJiYgc3RhdGVWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIC8vIFRoZSB1c2VyIGNoYW5nZWQgdGhlIGRhdGUgdG8gYSBuZXcgdmFsaWQgZGF0YSB2aWEgdGhlIGNvbWJvYm94ZXMsIHNvIGNhbGwgb25DaGFuZ2VcbiAgICAgICAgICAgIG9uQ2hhbmdlKHN0YXRlVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGxhc3RWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIC8vIFdlIGdvdCBhIG5ldyB2YWx1ZSBpbiB0aGUgcHJvcHNcbiAgICAgICAgICAgIHNldExhc3RWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICBzZXRTdGF0ZShwYXJzZURhdGVTdHJpbmcodmFsdWUsIHRpbWUpKTtcbiAgICAgICAgfVxuICAgIH0sIFt0aW1lLCB2YWx1ZSwgb25DaGFuZ2UsIHN0YXRlLCBsYXN0VmFsdWVdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygocHJvcGVydHksIHZhbHVlKSA9PiB7XG4gICAgICAgIHNldFN0YXRlKHsgW3Byb3BlcnR5XTogdmFsdWUgfSk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZVNldE5vdyA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSBwYXJzZURhdGVTdHJpbmcobmV3IERhdGUoKS50b0pTT04oKSwgdGltZSk7XG4gICAgICAgIG9uQ2hhbmdlKHRvRGF0ZVN0cmluZyhuZXh0U3RhdGUsIHRpbWUpKTtcbiAgICB9LCBbZGlzYWJsZWQsIHJlYWRvbmx5LCB0aW1lXSk7XG4gICAgY29uc3QgaGFuZGxlQ2xlYXIgPSB1c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UodW5kZWZpbmVkKTtcbiAgICB9LCBbZGlzYWJsZWQsIHJlYWRvbmx5LCBvbkNoYW5nZV0pO1xuICAgIHJldHVybiAoX2pzeHMoXCJ1bFwiLCB7IGNsYXNzTmFtZTogJ2xpc3QtaW5saW5lJywgY2hpbGRyZW46IFtnZXREYXRlRWxlbWVudFByb3BzKHN0YXRlLCB0aW1lLCBvcHRpb25zLnllYXJzUmFuZ2UsIG9wdGlvbnMuZm9ybWF0KS5tYXAoKGVsZW1Qcm9wcywgaSkgPT4gKF9qc3goXCJsaVwiLCB7IGNsYXNzTmFtZTogJ2xpc3QtaW5saW5lLWl0ZW0nLCBjaGlsZHJlbjogX2pzeChEYXRlRWxlbWVudCwgeyByb290SWQ6IGlkLCBuYW1lOiBuYW1lLCBzZWxlY3Q6IGhhbmRsZUNoYW5nZSwgLi4uZWxlbVByb3BzLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgYXV0b2ZvY3VzOiBhdXRvZm9jdXMgJiYgaSA9PT0gMCB9KSB9LCBpKSkpLCAob3B0aW9ucy5oaWRlTm93QnV0dG9uICE9PSAndW5kZWZpbmVkJyA/ICFvcHRpb25zLmhpZGVOb3dCdXR0b24gOiB0cnVlKSAmJiAoX2pzeChcImxpXCIsIHsgY2xhc3NOYW1lOiAnbGlzdC1pbmxpbmUtaXRlbScsIGNoaWxkcmVuOiBfanN4KFwiYVwiLCB7IGhyZWY6ICcjJywgY2xhc3NOYW1lOiAnYnRuIGJ0bi1pbmZvIGJ0bi1ub3cnLCBvbkNsaWNrOiBoYW5kbGVTZXROb3csIGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLk5vd0xhYmVsKSB9KSB9KSksIChvcHRpb25zLmhpZGVDbGVhckJ1dHRvbiAhPT0gJ3VuZGVmaW5lZCcgPyAhb3B0aW9ucy5oaWRlQ2xlYXJCdXR0b24gOiB0cnVlKSAmJiAoX2pzeChcImxpXCIsIHsgY2xhc3NOYW1lOiAnbGlzdC1pbmxpbmUtaXRlbScsIGNoaWxkcmVuOiBfanN4KFwiYVwiLCB7IGhyZWY6ICcjJywgY2xhc3NOYW1lOiAnYnRuIGJ0bi13YXJuaW5nIGJ0bi1jbGVhcicsIG9uQ2xpY2s6IGhhbmRsZUNsZWFyLCBjaGlsZHJlbjogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5DbGVhckxhYmVsKSB9KSB9KSldIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IEFsdERhdGVXaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BbHREYXRlV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vKiogVGhlIGBBbHREYXRlVGltZVdpZGdldGAgaXMgYW4gYWx0ZXJuYXRpdmUgd2lkZ2V0IGZvciByZW5kZXJpbmcgZGF0ZXRpbWUgcHJvcGVydGllcy5cbiAqICBJdCB1c2VzIHRoZSBBbHREYXRlV2lkZ2V0IGZvciByZW5kZXJpbmcsIHdpdGggdGhlIGB0aW1lYCBwcm9wIHNldCB0byB0cnVlIGJ5IGRlZmF1bHQuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIEFsdERhdGVUaW1lV2lkZ2V0KHsgdGltZSA9IHRydWUsIC4uLnByb3BzIH0pIHtcbiAgICBjb25zdCB7IEFsdERhdGVXaWRnZXQgfSA9IHByb3BzLnJlZ2lzdHJ5LndpZGdldHM7XG4gICAgcmV0dXJuIF9qc3goQWx0RGF0ZVdpZGdldCwgeyB0aW1lOiB0aW1lLCAuLi5wcm9wcyB9KTtcbn1cbmV4cG9ydCBkZWZhdWx0IEFsdERhdGVUaW1lV2lkZ2V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWx0RGF0ZVRpbWVXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYXJpYURlc2NyaWJlZEJ5SWRzLCBkZXNjcmlwdGlvbklkLCBnZXRUZW1wbGF0ZSwgbGFiZWxWYWx1ZSwgc2NoZW1hUmVxdWlyZXNUcnVlVmFsdWUsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQ2hlY2tCb3hXaWRnZXRgIGlzIGEgd2lkZ2V0IGZvciByZW5kZXJpbmcgYm9vbGVhbiBwcm9wZXJ0aWVzLlxuICogIEl0IGlzIHR5cGljYWxseSB1c2VkIHRvIHJlcHJlc2VudCBhIGJvb2xlYW4uXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIENoZWNrYm94V2lkZ2V0KHsgc2NoZW1hLCB1aVNjaGVtYSwgb3B0aW9ucywgaWQsIHZhbHVlLCBkaXNhYmxlZCwgcmVhZG9ubHksIGxhYmVsLCBoaWRlTGFiZWwsIGF1dG9mb2N1cyA9IGZhbHNlLCBvbkJsdXIsIG9uRm9jdXMsIG9uQ2hhbmdlLCByZWdpc3RyeSwgfSkge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIC8vIEJlY2F1c2UgYW4gdW5jaGVja2VkIGNoZWNrYm94IHdpbGwgY2F1c2UgaHRtbDUgdmFsaWRhdGlvbiB0byBmYWlsLCBvbmx5IGFkZFxuICAgIC8vIHRoZSBcInJlcXVpcmVkXCIgYXR0cmlidXRlIGlmIHRoZSBmaWVsZCB2YWx1ZSBtdXN0IGJlIFwidHJ1ZVwiLCBkdWUgdG8gdGhlXG4gICAgLy8gXCJjb25zdFwiIG9yIFwiZW51bVwiIGtleXdvcmRzXG4gICAgY29uc3QgcmVxdWlyZWQgPSBzY2hlbWFSZXF1aXJlc1RydWVWYWx1ZShzY2hlbWEpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4gb25DaGFuZ2UoZXZlbnQudGFyZ2V0LmNoZWNrZWQpLCBbb25DaGFuZ2VdKTtcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiBvbkJsdXIoaWQsIGV2ZW50LnRhcmdldC5jaGVja2VkKSwgW29uQmx1ciwgaWRdKTtcbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4gb25Gb2N1cyhpZCwgZXZlbnQudGFyZ2V0LmNoZWNrZWQpLCBbb25Gb2N1cywgaWRdKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IChfYSA9IG9wdGlvbnMuZGVzY3JpcHRpb24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHNjaGVtYS5kZXNjcmlwdGlvbjtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBgY2hlY2tib3ggJHtkaXNhYmxlZCB8fCByZWFkb25seSA/ICdkaXNhYmxlZCcgOiAnJ31gLCBjaGlsZHJlbjogWyFoaWRlTGFiZWwgJiYgISFkZXNjcmlwdGlvbiAmJiAoX2pzeChEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUsIHsgaWQ6IGRlc2NyaXB0aW9uSWQoaWQpLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSksIF9qc3hzKFwibGFiZWxcIiwgeyBjaGlsZHJlbjogW19qc3goXCJpbnB1dFwiLCB7IHR5cGU6ICdjaGVja2JveCcsIGlkOiBpZCwgbmFtZTogaWQsIGNoZWNrZWQ6IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyBmYWxzZSA6IHZhbHVlLCByZXF1aXJlZDogcmVxdWlyZWQsIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgYXV0b0ZvY3VzOiBhdXRvZm9jdXMsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Gb2N1czogaGFuZGxlRm9jdXMsIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnlJZHMoaWQpIH0pLCBsYWJlbFZhbHVlKF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IGxhYmVsIH0pLCBoaWRlTGFiZWwpXSB9KV0gfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hXaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DaGVja2JveFdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhcmlhRGVzY3JpYmVkQnlJZHMsIGVudW1PcHRpb25zRGVzZWxlY3RWYWx1ZSwgZW51bU9wdGlvbnNJc1NlbGVjdGVkLCBlbnVtT3B0aW9uc1NlbGVjdFZhbHVlLCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgsIG9wdGlvbklkLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYENoZWNrYm94ZXNXaWRnZXRgIGlzIGEgd2lkZ2V0IGZvciByZW5kZXJpbmcgY2hlY2tib3ggZ3JvdXBzLlxuICogIEl0IGlzIHR5cGljYWxseSB1c2VkIHRvIHJlcHJlc2VudCBhbiBhcnJheSBvZiBlbnVtcy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gQ2hlY2tib3hlc1dpZGdldCh7IGlkLCBkaXNhYmxlZCwgb3B0aW9uczogeyBpbmxpbmUgPSBmYWxzZSwgZW51bU9wdGlvbnMsIGVudW1EaXNhYmxlZCwgZW1wdHlWYWx1ZSB9LCB2YWx1ZSwgYXV0b2ZvY3VzID0gZmFsc2UsIHJlYWRvbmx5LCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzLCB9KSB7XG4gICAgY29uc3QgY2hlY2tib3hlc1ZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25CbHVyKGlkLCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgodGFyZ2V0ICYmIHRhcmdldC52YWx1ZSwgZW51bU9wdGlvbnMsIGVtcHR5VmFsdWUpKSwgW29uQmx1ciwgaWRdKTtcbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldCB9KSA9PiBvbkZvY3VzKGlkLCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgodGFyZ2V0ICYmIHRhcmdldC52YWx1ZSwgZW51bU9wdGlvbnMsIGVtcHR5VmFsdWUpKSwgW29uRm9jdXMsIGlkXSk7XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnY2hlY2tib3hlcycsIGlkOiBpZCwgY2hpbGRyZW46IEFycmF5LmlzQXJyYXkoZW51bU9wdGlvbnMpICYmXG4gICAgICAgICAgICBlbnVtT3B0aW9ucy5tYXAoKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGVja2VkID0gZW51bU9wdGlvbnNJc1NlbGVjdGVkKG9wdGlvbi52YWx1ZSwgY2hlY2tib3hlc1ZhbHVlcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbURpc2FibGVkID0gQXJyYXkuaXNBcnJheShlbnVtRGlzYWJsZWQpICYmIGVudW1EaXNhYmxlZC5pbmRleE9mKG9wdGlvbi52YWx1ZSkgIT09IC0xO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkQ2xzID0gZGlzYWJsZWQgfHwgaXRlbURpc2FibGVkIHx8IHJlYWRvbmx5ID8gJ2Rpc2FibGVkJyA6ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKGVudW1PcHRpb25zU2VsZWN0VmFsdWUoaW5kZXgsIGNoZWNrYm94ZXNWYWx1ZXMsIGVudW1PcHRpb25zKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZShlbnVtT3B0aW9uc0Rlc2VsZWN0VmFsdWUoaW5kZXgsIGNoZWNrYm94ZXNWYWx1ZXMsIGVudW1PcHRpb25zKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrYm94ID0gKF9qc3hzKFwic3BhblwiLCB7IGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHsgdHlwZTogJ2NoZWNrYm94JywgaWQ6IG9wdGlvbklkKGlkLCBpbmRleCksIG5hbWU6IGlkLCBjaGVja2VkOiBjaGVja2VkLCB2YWx1ZTogU3RyaW5nKGluZGV4KSwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IGl0ZW1EaXNhYmxlZCB8fCByZWFkb25seSwgYXV0b0ZvY3VzOiBhdXRvZm9jdXMgJiYgaW5kZXggPT09IDAsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Gb2N1czogaGFuZGxlRm9jdXMsIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnlJZHMoaWQpIH0pLCBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiBvcHRpb24ubGFiZWwgfSldIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lID8gKF9qc3goXCJsYWJlbFwiLCB7IGNsYXNzTmFtZTogYGNoZWNrYm94LWlubGluZSAke2Rpc2FibGVkQ2xzfWAsIGNoaWxkcmVuOiBjaGVja2JveCB9LCBpbmRleCkpIDogKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGBjaGVja2JveCAke2Rpc2FibGVkQ2xzfWAsIGNoaWxkcmVuOiBfanN4KFwibGFiZWxcIiwgeyBjaGlsZHJlbjogY2hlY2tib3ggfSkgfSwgaW5kZXgpKTtcbiAgICAgICAgICAgIH0pIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94ZXNXaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DaGVja2JveGVzV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYENvbG9yV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgY29sb3JgIGFuZCBkaXNhYmxlcyBpdCB3aGVuIGl0IGlzXG4gKiBlaXRoZXIgZGlzYWJsZWQgb3IgcmVhZG9ubHkuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvbG9yV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBkaXNhYmxlZCwgcmVhZG9ubHksIG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAnY29sb3InLCAuLi5wcm9wcywgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5IH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29sb3JXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBEYXRlV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgZGF0ZWAgYW5kIHRyYW5zZm9ybXNcbiAqIHRoZSB2YWx1ZSB0byB1bmRlZmluZWQgd2hlbiBpdCBpcyBmYWxzeSBkdXJpbmcgdGhlIGBvbkNoYW5nZWAgaGFuZGxpbmcuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGVXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9uQ2hhbmdlLCBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHZhbHVlKSA9PiBvbkNoYW5nZSh2YWx1ZSB8fCB1bmRlZmluZWQpLCBbb25DaGFuZ2VdKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAnZGF0ZScsIC4uLnByb3BzLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGF0ZVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUsIGxvY2FsVG9VVEMsIHV0Y1RvTG9jYWwsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgRGF0ZVRpbWVXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGBkYXRldGltZS1sb2NhbGAgYW5kIHRyYW5zZm9ybXNcbiAqIHRoZSB2YWx1ZSB0by9mcm9tIHV0YyB1c2luZyB0aGUgYXBwcm9wcmlhdGUgdXRpbGl0eSBmdW5jdGlvbnMuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGVUaW1lV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvbkNoYW5nZSwgdmFsdWUsIG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gKF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ2RhdGV0aW1lLWxvY2FsJywgLi4ucHJvcHMsIHZhbHVlOiB1dGNUb0xvY2FsKHZhbHVlKSwgb25DaGFuZ2U6ICh2YWx1ZSkgPT4gb25DaGFuZ2UobG9jYWxUb1VUQyh2YWx1ZSkpIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhdGVUaW1lV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEVtYWlsV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgZW1haWxgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBFbWFpbFdpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiBfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IHR5cGU6ICdlbWFpbCcsIC4uLnByb3BzIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW1haWxXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBkYXRhVVJJdG9CbG9iLCBnZXRUZW1wbGF0ZSwgVHJhbnNsYXRhYmxlU3RyaW5nLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBNYXJrZG93biBmcm9tICdtYXJrZG93bi10by1qc3gnO1xuZnVuY3Rpb24gYWRkTmFtZVRvRGF0YVVSTChkYXRhVVJMLCBuYW1lKSB7XG4gICAgaWYgKGRhdGFVUkwgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBkYXRhVVJMLnJlcGxhY2UoJztiYXNlNjQnLCBgO25hbWU9JHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9O2Jhc2U2NGApO1xufVxuZnVuY3Rpb24gcHJvY2Vzc0ZpbGUoZmlsZSkge1xuICAgIGNvbnN0IHsgbmFtZSwgc2l6ZSwgdHlwZSB9ID0gZmlsZTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgd2luZG93LkZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKChfYSA9IGV2ZW50LnRhcmdldCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlc3VsdCkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFVUkw6IGFkZE5hbWVUb0RhdGFVUkwoZXZlbnQudGFyZ2V0LnJlc3VsdCwgbmFtZSksXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVVSTDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBwcm9jZXNzRmlsZXMoZmlsZXMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShmaWxlcykubWFwKHByb2Nlc3NGaWxlKSk7XG59XG5mdW5jdGlvbiBGaWxlSW5mb1ByZXZpZXcoeyBmaWxlSW5mbywgcmVnaXN0cnksIH0pIHtcbiAgICBjb25zdCB7IHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgY29uc3QgeyBkYXRhVVJMLCB0eXBlLCBuYW1lIH0gPSBmaWxlSW5mbztcbiAgICBpZiAoIWRhdGFVUkwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIElmIHR5cGUgaXMgSlBFRyBvciBQTkcgdGhlbiBzaG93IGltYWdlIHByZXZpZXcuXG4gICAgLy8gT3JpZ2luYWxseSwgYW55IHR5cGUgb2YgaW1hZ2Ugd2FzIHN1cHBvcnRlZCwgYnV0IHRoaXMgd2FzIGNoYW5nZWQgaW50byBhIHdoaXRlbGlzdFxuICAgIC8vIHNpbmNlIFNWR3MgYW5kIGFuaW1hdGVkIEdJRnMgYXJlIGFsc28gaW1hZ2VzLCB3aGljaCBhcmUgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgYSBzZWN1cml0eSByaXNrLlxuICAgIGlmIChbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcG5nJ10uaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIF9qc3goXCJpbWdcIiwgeyBzcmM6IGRhdGFVUkwsIHN0eWxlOiB7IG1heFdpZHRoOiAnMTAwJScgfSwgY2xhc3NOYW1lOiAnZmlsZS1wcmV2aWV3JyB9KTtcbiAgICB9XG4gICAgLy8gb3RoZXJ3aXNlLCBsZXQgdXNlcnMgZG93bmxvYWQgZmlsZVxuICAgIHJldHVybiAoX2pzeHMoX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBbJyAnLCBfanN4KFwiYVwiLCB7IGRvd25sb2FkOiBgcHJldmlldy0ke25hbWV9YCwgaHJlZjogZGF0YVVSTCwgY2xhc3NOYW1lOiAnZmlsZS1kb3dubG9hZCcsIGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLlByZXZpZXdMYWJlbCkgfSldIH0pKTtcbn1cbmZ1bmN0aW9uIEZpbGVzSW5mbyh7IGZpbGVzSW5mbywgcmVnaXN0cnksIHByZXZpZXcsIG9uUmVtb3ZlLCBvcHRpb25zLCB9KSB7XG4gICAgaWYgKGZpbGVzSW5mby5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCB7IFJlbW92ZUJ1dHRvbiB9ID0gZ2V0VGVtcGxhdGUoJ0J1dHRvblRlbXBsYXRlcycsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gKF9qc3goXCJ1bFwiLCB7IGNsYXNzTmFtZTogJ2ZpbGUtaW5mbycsIGNoaWxkcmVuOiBmaWxlc0luZm8ubWFwKChmaWxlSW5mbywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG5hbWUsIHNpemUsIHR5cGUgfSA9IGZpbGVJbmZvO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVtb3ZlID0gKCkgPT4gb25SZW1vdmUoa2V5KTtcbiAgICAgICAgICAgIHJldHVybiAoX2pzeHMoXCJsaVwiLCB7IGNoaWxkcmVuOiBbX2pzeChNYXJrZG93biwgeyBjaGlsZHJlbjogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5GaWxlc0luZm8sIFtuYW1lLCB0eXBlLCBTdHJpbmcoc2l6ZSldKSB9KSwgcHJldmlldyAmJiBfanN4KEZpbGVJbmZvUHJldmlldywgeyBmaWxlSW5mbzogZmlsZUluZm8sIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSwgX2pzeChSZW1vdmVCdXR0b24sIHsgb25DbGljazogaGFuZGxlUmVtb3ZlLCByZWdpc3RyeTogcmVnaXN0cnkgfSldIH0sIGtleSkpO1xuICAgICAgICB9KSB9KSk7XG59XG5mdW5jdGlvbiBleHRyYWN0RmlsZUluZm8oZGF0YVVSTHMpIHtcbiAgICByZXR1cm4gZGF0YVVSTHMucmVkdWNlKChhY2MsIGRhdGFVUkwpID0+IHtcbiAgICAgICAgaWYgKCFkYXRhVVJMKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB7IGJsb2IsIG5hbWUgfSA9IGRhdGFVUkl0b0Jsb2IoZGF0YVVSTCk7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFVUkwsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IGJsb2Iuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogYmxvYi50eXBlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBJbnZhbGlkIGRhdGFVUkksIHNvIGp1c3QgaWdub3JlIGl0LlxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbn1cbi8qKlxuICogIFRoZSBgRmlsZVdpZGdldGAgaXMgYSB3aWRnZXQgZm9yIHJlbmRlcmluZyBmaWxlIHVwbG9hZCBmaWVsZHMuXG4gKiAgSXQgaXMgdHlwaWNhbGx5IHVzZWQgd2l0aCBhIHN0cmluZyBwcm9wZXJ0eSB3aXRoIGRhdGEtdXJsIGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24gRmlsZVdpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgZGlzYWJsZWQsIHJlYWRvbmx5LCByZXF1aXJlZCwgbXVsdGlwbGUsIG9uQ2hhbmdlLCB2YWx1ZSwgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5maWxlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIER1ZSB0byB2YXJpYW5jZXMgaW4gdGhlbWVzLCBkZWFsaW5nIHdpdGggbXVsdGlwbGUgZmlsZXMgZm9yIHRoZSBhcnJheSBjYXNlIG5vdyBoYXBwZW5zIG9uZSBmaWxlIGF0IGEgdGltZS5cbiAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHdlIGRvbid0IHBhc3MgYG11bHRpcGxlYCBpbnRvIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGFueW1vcmUuIEluc3RlYWQsIHdlIGRlYWwgd2l0aCB0aGUgc2luZ2xlXG4gICAgICAgIC8vIGZpbGUgaW4gZWFjaCBldmVudCBhbmQgY29uY2F0ZW5hdGUgdGhlbSB0b2dldGhlciBvdXJzZWx2ZXNcbiAgICAgICAgcHJvY2Vzc0ZpbGVzKGV2ZW50LnRhcmdldC5maWxlcykudGhlbigoZmlsZXNJbmZvRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZmlsZXNJbmZvRXZlbnQubWFwKChmaWxlSW5mbykgPT4gZmlsZUluZm8uZGF0YVVSTCk7XG4gICAgICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZS5jb25jYXQobmV3VmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgW211bHRpcGxlLCB2YWx1ZSwgb25DaGFuZ2VdKTtcbiAgICBjb25zdCBmaWxlc0luZm8gPSB1c2VNZW1vKCgpID0+IGV4dHJhY3RGaWxlSW5mbyhBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSksIFt2YWx1ZV0pO1xuICAgIGNvbnN0IHJtRmlsZSA9IHVzZUNhbGxiYWNrKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWUuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgICAgICAgICBvbkNoYW5nZShuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvbkNoYW5nZSh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfSwgW211bHRpcGxlLCB2YWx1ZSwgb25DaGFuZ2VdKTtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2hpbGRyZW46IFtfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IC4uLnByb3BzLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIHR5cGU6ICdmaWxlJywgcmVxdWlyZWQ6IHZhbHVlID8gZmFsc2UgOiByZXF1aXJlZCwgb25DaGFuZ2VPdmVycmlkZTogaGFuZGxlQ2hhbmdlLCB2YWx1ZTogJycsIGFjY2VwdDogb3B0aW9ucy5hY2NlcHQgPyBTdHJpbmcob3B0aW9ucy5hY2NlcHQpIDogdW5kZWZpbmVkIH0pLCBfanN4KEZpbGVzSW5mbywgeyBmaWxlc0luZm86IGZpbGVzSW5mbywgb25SZW1vdmU6IHJtRmlsZSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBwcmV2aWV3OiBvcHRpb25zLmZpbGVQcmV2aWV3LCBvcHRpb25zOiBvcHRpb25zIH0pXSB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBGaWxlV2lkZ2V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmlsZVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLyoqIFRoZSBgSGlkZGVuV2lkZ2V0YCBpcyBhIHdpZGdldCBmb3IgcmVuZGVyaW5nIGEgaGlkZGVuIGlucHV0IGZpZWxkLlxuICogIEl0IGlzIHR5cGljYWxseSB1c2VkIGJ5IHNldHRpbmcgdHlwZSB0byBcImhpZGRlblwiLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBIaWRkZW5XaWRnZXQoeyBpZCwgdmFsdWUsIH0pIHtcbiAgICByZXR1cm4gX2pzeChcImlucHV0XCIsIHsgdHlwZTogJ2hpZGRlbicsIGlkOiBpZCwgbmFtZTogaWQsIHZhbHVlOiB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnID8gJycgOiB2YWx1ZSB9KTtcbn1cbmV4cG9ydCBkZWZhdWx0IEhpZGRlbldpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhpZGRlbldpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBQYXNzd29yZFdpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgY2hhbmdpbmcgdGhlIHR5cGUgdG8gYHBhc3N3b3JkYC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFzc3dvcmRXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAncGFzc3dvcmQnLCAuLi5wcm9wcyB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhc3N3b3JkV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFyaWFEZXNjcmliZWRCeUlkcywgZW51bU9wdGlvbnNJc1NlbGVjdGVkLCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgsIG9wdGlvbklkLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFJhZGlvV2lkZ2V0YCBpcyBhIHdpZGdldCBmb3IgcmVuZGVyaW5nIGEgcmFkaW8gZ3JvdXAuXG4gKiAgSXQgaXMgdHlwaWNhbGx5IHVzZWQgd2l0aCBhIHN0cmluZyBwcm9wZXJ0eSBjb25zdHJhaW5lZCB3aXRoIGVudW0gb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gUmFkaW9XaWRnZXQoeyBvcHRpb25zLCB2YWx1ZSwgcmVxdWlyZWQsIGRpc2FibGVkLCByZWFkb25seSwgYXV0b2ZvY3VzID0gZmFsc2UsIG9uQmx1ciwgb25Gb2N1cywgb25DaGFuZ2UsIGlkLCB9KSB7XG4gICAgY29uc3QgeyBlbnVtT3B0aW9ucywgZW51bURpc2FibGVkLCBpbmxpbmUsIGVtcHR5VmFsdWUgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldCB9KSA9PiBvbkJsdXIoaWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlLCBlbnVtT3B0aW9ucywgZW1wdHlWYWx1ZSkpLCBbb25CbHVyLCBpZF0pO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0IH0pID0+IG9uRm9jdXMoaWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlLCBlbnVtT3B0aW9ucywgZW1wdHlWYWx1ZSkpLCBbb25Gb2N1cywgaWRdKTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdmaWVsZC1yYWRpby1ncm91cCcsIGlkOiBpZCwgY2hpbGRyZW46IEFycmF5LmlzQXJyYXkoZW51bU9wdGlvbnMpICYmXG4gICAgICAgICAgICBlbnVtT3B0aW9ucy5tYXAoKG9wdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQob3B0aW9uLnZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbURpc2FibGVkID0gQXJyYXkuaXNBcnJheShlbnVtRGlzYWJsZWQpICYmIGVudW1EaXNhYmxlZC5pbmRleE9mKG9wdGlvbi52YWx1ZSkgIT09IC0xO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkQ2xzID0gZGlzYWJsZWQgfHwgaXRlbURpc2FibGVkIHx8IHJlYWRvbmx5ID8gJ2Rpc2FibGVkJyA6ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICgpID0+IG9uQ2hhbmdlKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFkaW8gPSAoX2pzeHMoXCJzcGFuXCIsIHsgY2hpbGRyZW46IFtfanN4KFwiaW5wdXRcIiwgeyB0eXBlOiAncmFkaW8nLCBpZDogb3B0aW9uSWQoaWQsIGkpLCBjaGVja2VkOiBjaGVja2VkLCBuYW1lOiBpZCwgcmVxdWlyZWQ6IHJlcXVpcmVkLCB2YWx1ZTogU3RyaW5nKGkpLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgaXRlbURpc2FibGVkIHx8IHJlYWRvbmx5LCBhdXRvRm9jdXM6IGF1dG9mb2N1cyAmJiBpID09PSAwLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvbkJsdXI6IGhhbmRsZUJsdXIsIG9uRm9jdXM6IGhhbmRsZUZvY3VzLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5SWRzKGlkKSB9KSwgX2pzeChcInNwYW5cIiwgeyBjaGlsZHJlbjogb3B0aW9uLmxhYmVsIH0pXSB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlubGluZSA/IChfanN4KFwibGFiZWxcIiwgeyBjbGFzc05hbWU6IGByYWRpby1pbmxpbmUgJHtkaXNhYmxlZENsc31gLCBjaGlsZHJlbjogcmFkaW8gfSwgaSkpIDogKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGByYWRpbyAke2Rpc2FibGVkQ2xzfWAsIGNoaWxkcmVuOiBfanN4KFwibGFiZWxcIiwgeyBjaGlsZHJlbjogcmFkaW8gfSkgfSwgaSkpO1xuICAgICAgICAgICAgfSkgfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgUmFkaW9XaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SYWRpb1dpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLyoqIFRoZSBgUmFuZ2VXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGByYW5nZWAgYW5kIHdyYXBwaW5nIHRoZSByZXN1bHRcbiAqIGluIGEgZGl2LCB3aXRoIHRoZSB2YWx1ZSBhbG9uZyBzaWRlIGl0LlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSYW5nZVdpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgdmFsdWUsIHJlZ2lzdHJ5OiB7IHRlbXBsYXRlczogeyBCYXNlSW5wdXRUZW1wbGF0ZSB9LCB9LCB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2ZpZWxkLXJhbmdlLXdyYXBwZXInLCBjaGlsZHJlbjogW19qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ3JhbmdlJywgLi4ucHJvcHMgfSksIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiAncmFuZ2UtdmlldycsIGNoaWxkcmVuOiB2YWx1ZSB9KV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmFuZ2VXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYXJpYURlc2NyaWJlZEJ5SWRzLCBlbnVtT3B0aW9uc0luZGV4Rm9yVmFsdWUsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCwgfSBmcm9tICdAcmpzZi91dGlscyc7XG5mdW5jdGlvbiBnZXRWYWx1ZShldmVudCwgbXVsdGlwbGUpIHtcbiAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZXZlbnQudGFyZ2V0Lm9wdGlvbnMpXG4gICAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgICAgLmZpbHRlcigobykgPT4gby5zZWxlY3RlZClcbiAgICAgICAgICAgIC5tYXAoKG8pID0+IG8udmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gZXZlbnQudGFyZ2V0LnZhbHVlO1xufVxuLyoqIFRoZSBgU2VsZWN0V2lkZ2V0YCBpcyBhIHdpZGdldCBmb3IgcmVuZGVyaW5nIGRyb3Bkb3ducy5cbiAqICBJdCBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIHN0cmluZyBwcm9wZXJ0aWVzIGNvbnN0cmFpbmVkIHdpdGggZW51bSBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBTZWxlY3RXaWRnZXQoeyBzY2hlbWEsIGlkLCBvcHRpb25zLCB2YWx1ZSwgcmVxdWlyZWQsIGRpc2FibGVkLCByZWFkb25seSwgbXVsdGlwbGUgPSBmYWxzZSwgYXV0b2ZvY3VzID0gZmFsc2UsIG9uQ2hhbmdlLCBvbkJsdXIsIG9uRm9jdXMsIHBsYWNlaG9sZGVyLCB9KSB7XG4gICAgY29uc3QgeyBlbnVtT3B0aW9ucywgZW51bURpc2FibGVkLCBlbXB0eVZhbHVlOiBvcHRFbXB0eVZhbCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBlbXB0eVZhbHVlID0gbXVsdGlwbGUgPyBbXSA6ICcnO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZ2V0VmFsdWUoZXZlbnQsIG11bHRpcGxlKTtcbiAgICAgICAgcmV0dXJuIG9uRm9jdXMoaWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleChuZXdWYWx1ZSwgZW51bU9wdGlvbnMsIG9wdEVtcHR5VmFsKSk7XG4gICAgfSwgW29uRm9jdXMsIGlkLCBzY2hlbWEsIG11bHRpcGxlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWxdKTtcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZ2V0VmFsdWUoZXZlbnQsIG11bHRpcGxlKTtcbiAgICAgICAgcmV0dXJuIG9uQmx1cihpZCwgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KG5ld1ZhbHVlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWwpKTtcbiAgICB9LCBbb25CbHVyLCBpZCwgc2NoZW1hLCBtdWx0aXBsZSwgZW51bU9wdGlvbnMsIG9wdEVtcHR5VmFsXSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZ2V0VmFsdWUoZXZlbnQsIG11bHRpcGxlKTtcbiAgICAgICAgcmV0dXJuIG9uQ2hhbmdlKGVudW1PcHRpb25zVmFsdWVGb3JJbmRleChuZXdWYWx1ZSwgZW51bU9wdGlvbnMsIG9wdEVtcHR5VmFsKSk7XG4gICAgfSwgW29uQ2hhbmdlLCBzY2hlbWEsIG11bHRpcGxlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWxdKTtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ZXMgPSBlbnVtT3B0aW9uc0luZGV4Rm9yVmFsdWUodmFsdWUsIGVudW1PcHRpb25zLCBtdWx0aXBsZSk7XG4gICAgY29uc3Qgc2hvd1BsYWNlaG9sZGVyT3B0aW9uID0gIW11bHRpcGxlICYmIHNjaGVtYS5kZWZhdWx0ID09PSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4cyhcInNlbGVjdFwiLCB7IGlkOiBpZCwgbmFtZTogaWQsIG11bHRpcGxlOiBtdWx0aXBsZSwgY2xhc3NOYW1lOiAnZm9ybS1jb250cm9sJywgdmFsdWU6IHR5cGVvZiBzZWxlY3RlZEluZGV4ZXMgPT09ICd1bmRlZmluZWQnID8gZW1wdHlWYWx1ZSA6IHNlbGVjdGVkSW5kZXhlcywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIGF1dG9Gb2N1czogYXV0b2ZvY3VzLCBvbkJsdXI6IGhhbmRsZUJsdXIsIG9uRm9jdXM6IGhhbmRsZUZvY3VzLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5SWRzKGlkKSwgY2hpbGRyZW46IFtzaG93UGxhY2Vob2xkZXJPcHRpb24gJiYgX2pzeChcIm9wdGlvblwiLCB7IHZhbHVlOiAnJywgY2hpbGRyZW46IHBsYWNlaG9sZGVyIH0pLCBBcnJheS5pc0FycmF5KGVudW1PcHRpb25zKSAmJlxuICAgICAgICAgICAgICAgIGVudW1PcHRpb25zLm1hcCgoeyB2YWx1ZSwgbGFiZWwgfSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGVudW1EaXNhYmxlZCAmJiBlbnVtRGlzYWJsZWQuaW5kZXhPZih2YWx1ZSkgIT09IC0xO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goXCJvcHRpb25cIiwgeyB2YWx1ZTogU3RyaW5nKGkpLCBkaXNhYmxlZDogZGlzYWJsZWQsIGNoaWxkcmVuOiBsYWJlbCB9LCBpKSk7XG4gICAgICAgICAgICAgICAgfSldIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IFNlbGVjdFdpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNlbGVjdFdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhcmlhRGVzY3JpYmVkQnlJZHMgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBUZXh0YXJlYVdpZGdldGAgaXMgYSB3aWRnZXQgZm9yIHJlbmRlcmluZyBpbnB1dCBmaWVsZHMgYXMgdGV4dGFyZWEuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIFRleHRhcmVhV2lkZ2V0KHsgaWQsIG9wdGlvbnMgPSB7fSwgcGxhY2Vob2xkZXIsIHZhbHVlLCByZXF1aXJlZCwgZGlzYWJsZWQsIHJlYWRvbmx5LCBhdXRvZm9jdXMgPSBmYWxzZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cywgfSkge1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldDogeyB2YWx1ZSB9IH0pID0+IG9uQ2hhbmdlKHZhbHVlID09PSAnJyA/IG9wdGlvbnMuZW1wdHlWYWx1ZSA6IHZhbHVlKSwgW29uQ2hhbmdlLCBvcHRpb25zLmVtcHR5VmFsdWVdKTtcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0IH0pID0+IG9uQmx1cihpZCwgdGFyZ2V0ICYmIHRhcmdldC52YWx1ZSksIFtvbkJsdXIsIGlkXSk7XG4gICAgY29uc3QgaGFuZGxlRm9jdXMgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25Gb2N1cyhpZCwgdGFyZ2V0ICYmIHRhcmdldC52YWx1ZSksIFtpZCwgb25Gb2N1c10pO1xuICAgIHJldHVybiAoX2pzeChcInRleHRhcmVhXCIsIHsgaWQ6IGlkLCBuYW1lOiBpZCwgY2xhc3NOYW1lOiAnZm9ybS1jb250cm9sJywgdmFsdWU6IHZhbHVlID8gdmFsdWUgOiAnJywgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZXF1aXJlZDogcmVxdWlyZWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRvbmx5LCBhdXRvRm9jdXM6IGF1dG9mb2N1cywgcm93czogb3B0aW9ucy5yb3dzLCBvbkJsdXI6IGhhbmRsZUJsdXIsIG9uRm9jdXM6IGhhbmRsZUZvY3VzLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5SWRzKGlkKSB9KSk7XG59XG5UZXh0YXJlYVdpZGdldC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgYXV0b2ZvY3VzOiBmYWxzZSxcbiAgICBvcHRpb25zOiB7fSxcbn07XG5leHBvcnQgZGVmYXVsdCBUZXh0YXJlYVdpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRleHRhcmVhV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFRleHRXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUZXh0V2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgLi4ucHJvcHMgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZXh0V2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgVGltZVdpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgY2hhbmdpbmcgdGhlIHR5cGUgdG8gYHRpbWVgIGFuZCB0cmFuc2Zvcm1zXG4gKiB0aGUgdmFsdWUgdG8gdW5kZWZpbmVkIHdoZW4gaXQgaXMgZmFsc3kgZHVyaW5nIHRoZSBgb25DaGFuZ2VgIGhhbmRsaW5nLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaW1lV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvbkNoYW5nZSwgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKCh2YWx1ZSkgPT4gb25DaGFuZ2UodmFsdWUgPyBgJHt2YWx1ZX06MDBgIDogdW5kZWZpbmVkKSwgW29uQ2hhbmdlXSk7XG4gICAgcmV0dXJuIF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ3RpbWUnLCAuLi5wcm9wcywgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgVVJMV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgdXJsYC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVVJMV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ3VybCcsIC4uLnByb3BzIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VVJMV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFVwRG93bldpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgY2hhbmdpbmcgdGhlIHR5cGUgdG8gYG51bWJlcmAuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFVwRG93bldpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiBfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IHR5cGU6ICdudW1iZXInLCAuLi5wcm9wcyB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVVwRG93bldpZGdldC5qcy5tYXAiLCJpbXBvcnQgQWx0RGF0ZVdpZGdldCBmcm9tICcuL0FsdERhdGVXaWRnZXQnO1xuaW1wb3J0IEFsdERhdGVUaW1lV2lkZ2V0IGZyb20gJy4vQWx0RGF0ZVRpbWVXaWRnZXQnO1xuaW1wb3J0IENoZWNrYm94V2lkZ2V0IGZyb20gJy4vQ2hlY2tib3hXaWRnZXQnO1xuaW1wb3J0IENoZWNrYm94ZXNXaWRnZXQgZnJvbSAnLi9DaGVja2JveGVzV2lkZ2V0JztcbmltcG9ydCBDb2xvcldpZGdldCBmcm9tICcuL0NvbG9yV2lkZ2V0JztcbmltcG9ydCBEYXRlV2lkZ2V0IGZyb20gJy4vRGF0ZVdpZGdldCc7XG5pbXBvcnQgRGF0ZVRpbWVXaWRnZXQgZnJvbSAnLi9EYXRlVGltZVdpZGdldCc7XG5pbXBvcnQgRW1haWxXaWRnZXQgZnJvbSAnLi9FbWFpbFdpZGdldCc7XG5pbXBvcnQgRmlsZVdpZGdldCBmcm9tICcuL0ZpbGVXaWRnZXQnO1xuaW1wb3J0IEhpZGRlbldpZGdldCBmcm9tICcuL0hpZGRlbldpZGdldCc7XG5pbXBvcnQgUGFzc3dvcmRXaWRnZXQgZnJvbSAnLi9QYXNzd29yZFdpZGdldCc7XG5pbXBvcnQgUmFkaW9XaWRnZXQgZnJvbSAnLi9SYWRpb1dpZGdldCc7XG5pbXBvcnQgUmFuZ2VXaWRnZXQgZnJvbSAnLi9SYW5nZVdpZGdldCc7XG5pbXBvcnQgU2VsZWN0V2lkZ2V0IGZyb20gJy4vU2VsZWN0V2lkZ2V0JztcbmltcG9ydCBUZXh0YXJlYVdpZGdldCBmcm9tICcuL1RleHRhcmVhV2lkZ2V0JztcbmltcG9ydCBUZXh0V2lkZ2V0IGZyb20gJy4vVGV4dFdpZGdldCc7XG5pbXBvcnQgVGltZVdpZGdldCBmcm9tICcuL1RpbWVXaWRnZXQnO1xuaW1wb3J0IFVSTFdpZGdldCBmcm9tICcuL1VSTFdpZGdldCc7XG5pbXBvcnQgVXBEb3duV2lkZ2V0IGZyb20gJy4vVXBEb3duV2lkZ2V0JztcbmZ1bmN0aW9uIHdpZGdldHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgQWx0RGF0ZVdpZGdldCxcbiAgICAgICAgQWx0RGF0ZVRpbWVXaWRnZXQsXG4gICAgICAgIENoZWNrYm94V2lkZ2V0LFxuICAgICAgICBDaGVja2JveGVzV2lkZ2V0LFxuICAgICAgICBDb2xvcldpZGdldCxcbiAgICAgICAgRGF0ZVdpZGdldCxcbiAgICAgICAgRGF0ZVRpbWVXaWRnZXQsXG4gICAgICAgIEVtYWlsV2lkZ2V0LFxuICAgICAgICBGaWxlV2lkZ2V0LFxuICAgICAgICBIaWRkZW5XaWRnZXQsXG4gICAgICAgIFBhc3N3b3JkV2lkZ2V0LFxuICAgICAgICBSYWRpb1dpZGdldCxcbiAgICAgICAgUmFuZ2VXaWRnZXQsXG4gICAgICAgIFNlbGVjdFdpZGdldCxcbiAgICAgICAgVGV4dFdpZGdldCxcbiAgICAgICAgVGV4dGFyZWFXaWRnZXQsXG4gICAgICAgIFRpbWVXaWRnZXQsXG4gICAgICAgIFVwRG93bldpZGdldCxcbiAgICAgICAgVVJMV2lkZ2V0LFxuICAgIH07XG59XG5leHBvcnQgZGVmYXVsdCB3aWRnZXRzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsgZW5nbGlzaFN0cmluZ1RyYW5zbGF0b3IgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgZmllbGRzIGZyb20gJy4vY29tcG9uZW50cy9maWVsZHMnO1xuaW1wb3J0IHRlbXBsYXRlcyBmcm9tICcuL2NvbXBvbmVudHMvdGVtcGxhdGVzJztcbmltcG9ydCB3aWRnZXRzIGZyb20gJy4vY29tcG9uZW50cy93aWRnZXRzJztcbi8qKiBUaGUgZGVmYXVsdCByZWdpc3RyeSBjb25zaXN0cyBvZiBhbGwgdGhlIGZpZWxkcywgdGVtcGxhdGVzIGFuZCB3aWRnZXRzIHByb3ZpZGVkIGluIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uLFxuICogcGx1cyBhbiBlbXB0eSBgcm9vdFNjaGVtYWAgYW5kIGBmb3JtQ29udGV4dC4gV2Ugb21pdCBzY2hlbWFVdGlscyBoZXJlIGJlY2F1c2UgaXQgY2Fubm90IGJlIGRlZmF1bHRlZCB3aXRob3V0IGFcbiAqIHJvb3RTY2hlbWEgYW5kIHZhbGlkYXRvci4gSXQgd2lsbCBiZSBhZGRlZCBpbnRvIHRoZSBjb21wdXRlZCByZWdpc3RyeSBsYXRlciBpbiB0aGUgRm9ybS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGVmYXVsdFJlZ2lzdHJ5KCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGZpZWxkczogZmllbGRzKCksXG4gICAgICAgIHRlbXBsYXRlczogdGVtcGxhdGVzKCksXG4gICAgICAgIHdpZGdldHM6IHdpZGdldHMoKSxcbiAgICAgICAgcm9vdFNjaGVtYToge30sXG4gICAgICAgIGZvcm1Db250ZXh0OiB7fSxcbiAgICAgICAgdHJhbnNsYXRlU3RyaW5nOiBlbmdsaXNoU3RyaW5nVHJhbnNsYXRvcixcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0RGVmYXVsdFJlZ2lzdHJ5LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNyZWF0ZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZVNjaGVtYVV0aWxzLCBkZWVwRXF1YWxzLCBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCBpc09iamVjdCwgbWVyZ2VPYmplY3RzLCBOQU1FX0tFWSwgUkpTRl9BRERJVElPTkFMX1BST1BFUlRJRVNfRkxBRywgc2hvdWxkUmVuZGVyLCBTVUJNSVRfQlROX09QVElPTlNfS0VZLCB0b0Vycm9yTGlzdCwgVUlfR0xPQkFMX09QVElPTlNfS0VZLCBVSV9PUFRJT05TX0tFWSwgdmFsaWRhdGlvbkRhdGFNZXJnZSwgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgX2ZvckVhY2ggZnJvbSAnbG9kYXNoL2ZvckVhY2gnO1xuaW1wb3J0IF9nZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgX2lzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IF9pc05pbCBmcm9tICdsb2Rhc2gvaXNOaWwnO1xuaW1wb3J0IF9waWNrIGZyb20gJ2xvZGFzaC9waWNrJztcbmltcG9ydCBfdG9QYXRoIGZyb20gJ2xvZGFzaC90b1BhdGgnO1xuaW1wb3J0IGdldERlZmF1bHRSZWdpc3RyeSBmcm9tICcuLi9nZXREZWZhdWx0UmVnaXN0cnknO1xuLyoqIFRoZSBgRm9ybWAgY29tcG9uZW50IHJlbmRlcnMgdGhlIG91dGVyIGZvcm0gYW5kIGFsbCB0aGUgZmllbGRzIGRlZmluZWQgaW4gdGhlIGBzY2hlbWFgICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JtIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICAvKiogQ29uc3RydWN0cyB0aGUgYEZvcm1gIGZyb20gdGhlIGBwcm9wc2AuIFdpbGwgc2V0dXAgdGhlIGluaXRpYWwgc3RhdGUgZnJvbSB0aGUgcHJvcHMuIEl0IHdpbGwgYWxzbyBjYWxsIHRoZVxuICAgICAqIGBvbkNoYW5nZWAgaGFuZGxlciBpZiB0aGUgaW5pdGlhbGx5IHByb3ZpZGVkIGBmb3JtRGF0YWAgaXMgbW9kaWZpZWQgdG8gYWRkIG1pc3NpbmcgZGVmYXVsdCB2YWx1ZXMgYXMgcGFydCBvZiB0aGVcbiAgICAgKiBzdGF0ZSBjb25zdHJ1Y3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgaW5pdGlhbCBwcm9wcyBmb3IgdGhlIGBGb3JtYFxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgLyoqIFJldHVybnMgdGhlIGBmb3JtRGF0YWAgd2l0aCBvbmx5IHRoZSBlbGVtZW50cyBzcGVjaWZpZWQgaW4gdGhlIGBmaWVsZHNgIGxpc3RcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGRhdGEgZm9yIHRoZSBgRm9ybWBcbiAgICAgICAgICogQHBhcmFtIGZpZWxkcyAtIFRoZSBmaWVsZHMgdG8ga2VlcCB3aGlsZSBmaWx0ZXJpbmdcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZ2V0VXNlZEZvcm1EYXRhID0gKGZvcm1EYXRhLCBmaWVsZHMpID0+IHtcbiAgICAgICAgICAgIC8vIEZvciB0aGUgY2FzZSBvZiBhIHNpbmdsZSBpbnB1dCBmb3JtXG4gICAgICAgICAgICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMCAmJiB0eXBlb2YgZm9ybURhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1EYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gX3BpY2sgaGFzIGluY29ycmVjdCB0eXBlIGRlZmluaXRpb24sIGl0IHdvcmtzIHdpdGggc3RyaW5nW11bXSwgYmVjYXVzZSBsb2Rhc2gvaGFzSW4gc3VwcG9ydHMgaXRcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBfcGljayhmb3JtRGF0YSwgZmllbGRzKTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhkYXRhKS5tYXAoKGtleSkgPT4gZGF0YVtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9O1xuICAgICAgICAvKiogUmV0dXJucyB0aGUgbGlzdCBvZiBmaWVsZCBuYW1lcyBmcm9tIGluc3BlY3RpbmcgdGhlIGBwYXRoU2NoZW1hYCBhcyB3ZWxsIGFzIHVzaW5nIHRoZSBgZm9ybURhdGFgXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBwYXRoU2NoZW1hIC0gVGhlIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBmb3JtXG4gICAgICAgICAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGZvcm0gZGF0YSB0byB1c2Ugd2hpbGUgY2hlY2tpbmcgZm9yIGVtcHR5IG9iamVjdHMvYXJyYXlzXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmdldEZpZWxkTmFtZXMgPSAocGF0aFNjaGVtYSwgZm9ybURhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdldEFsbFBhdGhzID0gKF9vYmosIGFjYyA9IFtdLCBwYXRocyA9IFtbXV0pID0+IHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhfb2JqKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBfb2JqW2tleV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdQYXRocyA9IHBhdGhzLm1hcCgocGF0aCkgPT4gWy4uLnBhdGgsIGtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW4gb2JqZWN0IGlzIG1hcmtlZCB3aXRoIGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCBhbGwgaXRzIGtleXMgYXJlIHZhbGlkXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX29ialtrZXldW1JKU0ZfQURESVRJT05BTF9QUk9QRVJUSUVTX0ZMQUddICYmIF9vYmpba2V5XVtOQU1FX0tFWV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLnB1c2goX29ialtrZXldW05BTUVfS0VZXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRBbGxQYXRocyhfb2JqW2tleV0sIGFjYywgbmV3UGF0aHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gTkFNRV9LRVkgJiYgX29ialtrZXldICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IF9nZXQoZm9ybURhdGEsIHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZHMgcGF0aCB0byBmaWVsZE5hbWVzIGlmIGl0IHBvaW50cyB0byBhIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3IgYW4gZW1wdHkgb2JqZWN0L2FycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmb3JtVmFsdWUgIT09ICdvYmplY3QnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pc0VtcHR5KGZvcm1WYWx1ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlKSAmJiBmb3JtVmFsdWUuZXZlcnkoKHZhbCkgPT4gdHlwZW9mIHZhbCAhPT0gJ29iamVjdCcpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MucHVzaChwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbFBhdGhzKHBhdGhTY2hlbWEpO1xuICAgICAgICB9O1xuICAgICAgICAvKiogUmV0dXJucyB0aGUgYGZvcm1EYXRhYCBhZnRlciBmaWx0ZXJpbmcgdG8gcmVtb3ZlIGFueSBleHRyYSBkYXRhIG5vdCBpbiBhIGZvcm0gZmllbGRcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGRhdGEgZm9yIHRoZSBgRm9ybWBcbiAgICAgICAgICogQHJldHVybnMgVGhlIGBmb3JtRGF0YWAgYWZ0ZXIgb21pdHRpbmcgZXh0cmEgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbWl0RXh0cmFEYXRhID0gKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNjaGVtYSwgc2NoZW1hVXRpbHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgICAgICBjb25zdCByZXRyaWV2ZWRTY2hlbWEgPSBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShzY2hlbWEsIGZvcm1EYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhTY2hlbWEgPSBzY2hlbWFVdGlscy50b1BhdGhTY2hlbWEocmV0cmlldmVkU2NoZW1hLCAnJywgZm9ybURhdGEpO1xuICAgICAgICAgICAgY29uc3QgZmllbGROYW1lcyA9IHRoaXMuZ2V0RmllbGROYW1lcyhwYXRoU2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IHRoaXMuZ2V0VXNlZEZvcm1EYXRhKGZvcm1EYXRhLCBmaWVsZE5hbWVzKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdGb3JtRGF0YTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIEZ1bmN0aW9uIHRvIGhhbmRsZSBjaGFuZ2VzIG1hZGUgdG8gYSBmaWVsZCBpbiB0aGUgYEZvcm1gLiBUaGlzIGhhbmRsZXIgcmVjZWl2ZXMgYW4gZW50aXJlbHkgbmV3IGNvcHkgb2YgdGhlXG4gICAgICAgICAqIGBmb3JtRGF0YWAgYWxvbmcgd2l0aCBhIG5ldyBgRXJyb3JTY2hlbWFgLiBJdCB3aWxsIGZpcnN0IHVwZGF0ZSB0aGUgYGZvcm1EYXRhYCB3aXRoIGFueSBtaXNzaW5nIGRlZmF1bHQgZmllbGRzIGFuZFxuICAgICAgICAgKiB0aGVuLCBpZiBgb21pdEV4dHJhRGF0YWAgYW5kIGBsaXZlT21pdGAgYXJlIHR1cm5lZCBvbiwgdGhlIGBmb3JtRGF0YWAgd2lsbCBiZSBmaWx0ZXJlZCB0byByZW1vdmUgYW55IGV4dHJhIGRhdGEgbm90XG4gICAgICAgICAqIGluIGEgZm9ybSBmaWVsZC4gVGhlbiwgdGhlIHJlc3VsdGluZyBmb3JtRGF0YSB3aWxsIGJlIHZhbGlkYXRlZCBpZiByZXF1aXJlZC4gVGhlIHN0YXRlIHdpbGwgYmUgdXBkYXRlZCB3aXRoIHRoZSBuZXdcbiAgICAgICAgICogdXBkYXRlZCAocG90ZW50aWFsbHkgZmlsdGVyZWQpIGBmb3JtRGF0YWAsIGFueSBlcnJvcnMgdGhhdCByZXN1bHRlZCBmcm9tIHZhbGlkYXRpb24uIEZpbmFsbHkgdGhlIGBvbkNoYW5nZWBcbiAgICAgICAgICogY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgaWYgc3BlY2lmaWVkIHdpdGggdGhlIHVwZGF0ZWQgc3RhdGUuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBuZXcgZm9ybSBkYXRhIGZyb20gYSBjaGFuZ2UgdG8gYSBmaWVsZFxuICAgICAgICAgKiBAcGFyYW0gbmV3RXJyb3JTY2hlbWEgLSBUaGUgbmV3IGBFcnJvclNjaGVtYWAgYmFzZWQgb24gdGhlIGZpZWxkIGNoYW5nZVxuICAgICAgICAgKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIGZpZWxkIHRoYXQgY2F1c2VkIHRoZSBjaGFuZ2VcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSAoZm9ybURhdGEsIG5ld0Vycm9yU2NoZW1hLCBpZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBleHRyYUVycm9ycywgb21pdEV4dHJhRGF0YSwgbGl2ZU9taXQsIG5vVmFsaWRhdGUsIGxpdmVWYWxpZGF0ZSwgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBjb25zdCB7IHNjaGVtYVV0aWxzLCBzY2hlbWEsIHJldHJpZXZlZFNjaGVtYSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgIGlmIChpc09iamVjdChmb3JtRGF0YSkgfHwgQXJyYXkuaXNBcnJheShmb3JtRGF0YSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHRoaXMuZ2V0U3RhdGVGcm9tUHJvcHModGhpcy5wcm9wcywgZm9ybURhdGEsIHJldHJpZXZlZFNjaGVtYSk7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEgPSBuZXdTdGF0ZS5mb3JtRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG11c3RWYWxpZGF0ZSA9ICFub1ZhbGlkYXRlICYmIGxpdmVWYWxpZGF0ZTtcbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IHsgZm9ybURhdGEsIHNjaGVtYSB9O1xuICAgICAgICAgICAgbGV0IG5ld0Zvcm1EYXRhID0gZm9ybURhdGE7XG4gICAgICAgICAgICBpZiAob21pdEV4dHJhRGF0YSA9PT0gdHJ1ZSAmJiBsaXZlT21pdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhID0gdGhpcy5vbWl0RXh0cmFEYXRhKGZvcm1EYXRhKTtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGE6IG5ld0Zvcm1EYXRhLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobXVzdFZhbGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbiA9IHRoaXMudmFsaWRhdGUobmV3Rm9ybURhdGEsIHNjaGVtYSwgc2NoZW1hVXRpbHMsIHJldHJpZXZlZFNjaGVtYSk7XG4gICAgICAgICAgICAgICAgbGV0IGVycm9ycyA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JzO1xuICAgICAgICAgICAgICAgIGxldCBlcnJvclNjaGVtYSA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyA9IGVycm9ycztcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWEgPSBlcnJvclNjaGVtYTtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmFFcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVyZ2VkID0gdmFsaWRhdGlvbkRhdGFNZXJnZShzY2hlbWFWYWxpZGF0aW9uLCBleHRyYUVycm9ycyk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VkLmVycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBtZXJnZWQuZXJyb3JzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBNZXJnaW5nICduZXdFcnJvclNjaGVtYScgaW50byAnZXJyb3JTY2hlbWEnIHRvIGRpc3BsYXkgdGhlIGN1c3RvbSByYWlzZWQgZXJyb3JzLlxuICAgICAgICAgICAgICAgIGlmIChuZXdFcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEVycm9ycyA9IHRoaXMuZmlsdGVyRXJyb3JzQmFzZWRPblNjaGVtYShuZXdFcnJvclNjaGVtYSwgcmV0cmlldmVkU2NoZW1hLCBuZXdGb3JtRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VPYmplY3RzKGVycm9yU2NoZW1hLCBmaWx0ZXJlZEVycm9ycywgJ3ByZXZlbnREdXBsaWNhdGVzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YTogbmV3Rm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIW5vVmFsaWRhdGUgJiYgbmV3RXJyb3JTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvclNjaGVtYSA9IGV4dHJhRXJyb3JzXG4gICAgICAgICAgICAgICAgICAgID8gbWVyZ2VPYmplY3RzKG5ld0Vycm9yU2NoZW1hLCBleHRyYUVycm9ycywgJ3ByZXZlbnREdXBsaWNhdGVzJylcbiAgICAgICAgICAgICAgICAgICAgOiBuZXdFcnJvclNjaGVtYTtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGE6IG5ld0Zvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yczogdG9FcnJvckxpc3QoZXJyb3JTY2hlbWEpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlLCAoKSA9PiBvbkNoYW5nZSAmJiBvbkNoYW5nZSh7IC4uLnRoaXMuc3RhdGUsIC4uLnN0YXRlIH0sIGlkKSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgcmVzZXQgZm9ybSBkYXRhLlxuICAgICAgICAgKiAtIFJlc2V0IGFsbCBmaWVsZHMgd2l0aCBkZWZhdWx0IHZhbHVlcy5cbiAgICAgICAgICogLSBSZXNldCB2YWxpZGF0aW9ucyBhbmQgZXJyb3JzXG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnJlc2V0ID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5nZXRTdGF0ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgY29uc3QgbmV3Rm9ybURhdGEgPSBuZXdTdGF0ZS5mb3JtRGF0YTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhOiBuZXdGb3JtRGF0YSxcbiAgICAgICAgICAgICAgICBlcnJvclNjaGVtYToge30sXG4gICAgICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWE6IHt9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUsICgpID0+IG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHsgLi4udGhpcy5zdGF0ZSwgLi4uc3RhdGUgfSkpO1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gaGFuZGxlIHdoZW4gYSBmaWVsZCBvbiB0aGUgZm9ybSBpcyBibHVycmVkLiBDYWxscyB0aGUgYG9uQmx1cmAgY2FsbGJhY2sgZm9yIHRoZSBgRm9ybWAgaWYgaXRcbiAgICAgICAgICogd2FzIHByb3ZpZGVkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGBpZGAgb2YgdGhlIGZpZWxkIHRoYXQgd2FzIGJsdXJyZWRcbiAgICAgICAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkIHRoYXQgd2FzIGJsdXJyZWRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25CbHVyID0gKGlkLCBkYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG9uQmx1ciB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGlmIChvbkJsdXIpIHtcbiAgICAgICAgICAgICAgICBvbkJsdXIoaWQsIGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gaGFuZGxlIHdoZW4gYSBmaWVsZCBvbiB0aGUgZm9ybSBpcyBmb2N1c2VkLiBDYWxscyB0aGUgYG9uRm9jdXNgIGNhbGxiYWNrIGZvciB0aGUgYEZvcm1gIGlmIGl0XG4gICAgICAgICAqIHdhcyBwcm92aWRlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBgaWRgIG9mIHRoZSBmaWVsZCB0aGF0IHdhcyBmb2N1c2VkXG4gICAgICAgICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZCB0aGF0IHdhcyBmb2N1c2VkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uRm9jdXMgPSAoaWQsIGRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgb25Gb2N1cyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGlmIChvbkZvY3VzKSB7XG4gICAgICAgICAgICAgICAgb25Gb2N1cyhpZCwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQuIEZpcnN0LCBpdCBwcmV2ZW50cyB0aGUgZGVmYXVsdCBldmVudCBiZWhhdmlvci4gTm90aGluZ1xuICAgICAgICAgKiBoYXBwZW5zIGlmIHRoZSB0YXJnZXQgYW5kIGN1cnJlbnRUYXJnZXQgb2YgdGhlIGV2ZW50IGFyZSBub3QgdGhlIHNhbWUuIEl0IHdpbGwgb21pdCBhbnkgZXh0cmEgZGF0YSBpbiB0aGVcbiAgICAgICAgICogYGZvcm1EYXRhYCBpbiB0aGUgc3RhdGUgaWYgYG9taXRFeHRyYURhdGFgIGlzIHRydWUuIEl0IHdpbGwgdmFsaWRhdGUgdGhlIHJlc3VsdGluZyBgZm9ybURhdGFgLCByZXBvcnRpbmcgZXJyb3JzXG4gICAgICAgICAqIHZpYSB0aGUgYG9uRXJyb3IoKWAgY2FsbGJhY2sgdW5sZXNzIHZhbGlkYXRpb24gaXMgZGlzYWJsZWQuIEZpbmFsbHksIGl0IHdpbGwgYWRkIGluIGFueSBgZXh0cmFFcnJvcnNgIGFuZCB0aGVuIGNhbGxcbiAgICAgICAgICogYmFjayB0aGUgYG9uU3VibWl0YCBjYWxsYmFjayBpZiBpdCB3YXMgcHJvdmlkZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBzdWJtaXQgSFRNTCBmb3JtIGV2ZW50XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uU3VibWl0ID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnBlcnNpc3QoKTtcbiAgICAgICAgICAgIGNvbnN0IHsgb21pdEV4dHJhRGF0YSwgZXh0cmFFcnJvcnMsIG5vVmFsaWRhdGUsIG9uU3VibWl0IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgbGV0IHsgZm9ybURhdGE6IG5ld0Zvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgaWYgKG9taXRFeHRyYURhdGEgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YSA9IHRoaXMub21pdEV4dHJhRGF0YShuZXdGb3JtRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9WYWxpZGF0ZSB8fCB0aGlzLnZhbGlkYXRlRm9ybVdpdGhGb3JtRGF0YShuZXdGb3JtRGF0YSkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgbm8gZXJyb3JzIGdlbmVyYXRlZCB0aHJvdWdoIHNjaGVtYSB2YWxpZGF0aW9uLlxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciB1c2VyIHByb3ZpZGVkIGVycm9ycyBhbmQgdXBkYXRlIHN0YXRlIGFjY29yZGluZ2x5LlxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yU2NoZW1hID0gZXh0cmFFcnJvcnMgfHwge307XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gZXh0cmFFcnJvcnMgPyB0b0Vycm9yTGlzdChleHRyYUVycm9ycykgOiBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGE6IG5ld0Zvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hOiB7fSxcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvblN1Ym1pdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQoeyAuLi50aGlzLnN0YXRlLCBmb3JtRGF0YTogbmV3Rm9ybURhdGEsIHN0YXR1czogJ3N1Ym1pdHRlZCcgfSwgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBQcm92aWRlcyBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJvZ3JhbW1hdGljYWxseSBzdWJtaXQgdGhlIGBGb3JtYCAqL1xuICAgICAgICB0aGlzLnN1Ym1pdCA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1FbGVtZW50LmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJtaXRDdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnc3VibWl0Jywge1xuICAgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHN1Ym1pdEN1c3RvbUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRWxlbWVudC5jdXJyZW50LmRpc3BhdGNoRXZlbnQoc3VibWl0Q3VzdG9tRXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnQuY3VycmVudC5yZXF1ZXN0U3VibWl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBWYWxpZGF0ZXMgdGhlIGZvcm0gdXNpbmcgdGhlIGdpdmVuIGBmb3JtRGF0YWAuIEZvciB1c2Ugb24gZm9ybSBzdWJtaXNzaW9uIG9yIG9uIHByb2dyYW1tYXRpYyB2YWxpZGF0aW9uLlxuICAgICAgICAgKiBJZiBgb25FcnJvcmAgaXMgcHJvdmlkZWQsIHRoZW4gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgbGlzdCBvZiBlcnJvcnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgdG8gdmFsaWRhdGVcbiAgICAgICAgICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBmb3JtIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnZhbGlkYXRlRm9ybVdpdGhGb3JtRGF0YSA9IChmb3JtRGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBleHRyYUVycm9ycywgZXh0cmFFcnJvcnNCbG9ja1N1Ym1pdCwgZm9jdXNPbkZpcnN0RXJyb3IsIG9uRXJyb3IgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBjb25zdCB7IGVycm9yczogcHJldkVycm9ycyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYVZhbGlkYXRpb24gPSB0aGlzLnZhbGlkYXRlKGZvcm1EYXRhKTtcbiAgICAgICAgICAgIGxldCBlcnJvcnMgPSBzY2hlbWFWYWxpZGF0aW9uLmVycm9ycztcbiAgICAgICAgICAgIGxldCBlcnJvclNjaGVtYSA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzID0gZXJyb3JzO1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hID0gZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICBjb25zdCBoYXNFcnJvciA9IGVycm9ycy5sZW5ndGggPiAwIHx8IChleHRyYUVycm9ycyAmJiBleHRyYUVycm9yc0Jsb2NrU3VibWl0KTtcbiAgICAgICAgICAgIGlmIChoYXNFcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChleHRyYUVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZWQgPSB2YWxpZGF0aW9uRGF0YU1lcmdlKHNjaGVtYVZhbGlkYXRpb24sIGV4dHJhRXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSBtZXJnZWQuZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IG1lcmdlZC5lcnJvcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmb2N1c09uRmlyc3RFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZvY3VzT25GaXJzdEVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c09uRmlyc3RFcnJvcihlcnJvcnNbMF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uRXJyb3IoZXJyb3JzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zvcm0gdmFsaWRhdGlvbiBmYWlsZWQnLCBlcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwcmV2RXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWE6IHt9LFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hOiB7fSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhaGFzRXJyb3I7XG4gICAgICAgIH07XG4gICAgICAgIGlmICghcHJvcHMudmFsaWRhdG9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgdmFsaWRhdG9yIGlzIHJlcXVpcmVkIGZvciBGb3JtIGZ1bmN0aW9uYWxpdHkgdG8gd29yaycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmdldFN0YXRlRnJvbVByb3BzKHByb3BzLCBwcm9wcy5mb3JtRGF0YSk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2hhbmdlICYmICFkZWVwRXF1YWxzKHRoaXMuc3RhdGUuZm9ybURhdGEsIHRoaXMucHJvcHMuZm9ybURhdGEpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMuc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBjcmVhdGVSZWYoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogYGdldFNuYXBzaG90QmVmb3JlVXBkYXRlYCBpcyBhIFJlYWN0IGxpZmVjeWNsZSBtZXRob2QgdGhhdCBpcyBpbnZva2VkIHJpZ2h0IGJlZm9yZSB0aGUgbW9zdCByZWNlbnRseSByZW5kZXJlZFxuICAgICAqIG91dHB1dCBpcyBjb21taXR0ZWQgdG8gdGhlIERPTS4gSXQgZW5hYmxlcyB5b3VyIGNvbXBvbmVudCB0byBjYXB0dXJlIGN1cnJlbnQgdmFsdWVzIChlLmcuLCBzY3JvbGwgcG9zaXRpb24pIGJlZm9yZVxuICAgICAqIHRoZXkgYXJlIHBvdGVudGlhbGx5IGNoYW5nZWQuXG4gICAgICpcbiAgICAgKiBJbiB0aGlzIGNhc2UsIGl0IGNoZWNrcyBpZiB0aGUgcHJvcHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHJlbmRlci4gSWYgdGhleSBoYXZlLCBpdCBjb21wdXRlcyB0aGUgbmV4dCBzdGF0ZVxuICAgICAqIG9mIHRoZSBjb21wb25lbnQgdXNpbmcgYGdldFN0YXRlRnJvbVByb3BzYCBtZXRob2QgYW5kIHJldHVybnMgaXQgYWxvbmcgd2l0aCBhIGBzaG91bGRVcGRhdGVgIGZsYWcgc2V0IHRvIGB0cnVlYCBJRlxuICAgICAqIHRoZSBgbmV4dFN0YXRlYCBhbmQgYHByZXZTdGF0ZWAgYXJlIGRpZmZlcmVudCwgb3RoZXJ3aXNlIGBmYWxzZWAuIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGhhdmUgdGhlIG1vc3QgdXAtdG8tZGF0ZVxuICAgICAqIHN0YXRlIHJlYWR5IHRvIGJlIGFwcGxpZWQgaW4gYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBJZiBgZm9ybURhdGFgIGhhc24ndCBjaGFuZ2VkLCBpdCBzaW1wbHkgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBgc2hvdWxkVXBkYXRlYCBzZXQgdG8gYGZhbHNlYCwgaW5kaWNhdGluZyB0aGF0IGFcbiAgICAgKiBzdGF0ZSB1cGRhdGUgaXMgbm90IG5lY2Vzc2FyeS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcmV2UHJvcHMgLSBUaGUgcHJldmlvdXMgc2V0IG9mIHByb3BzIGJlZm9yZSB0aGUgdXBkYXRlLlxuICAgICAqIEBwYXJhbSBwcmV2U3RhdGUgLSBUaGUgcHJldmlvdXMgc3RhdGUgYmVmb3JlIHRoZSB1cGRhdGUuXG4gICAgICogQHJldHVybnMgRWl0aGVyIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBuZXh0IHN0YXRlIGFuZCBhIGZsYWcgaW5kaWNhdGluZyB0aGF0IGFuIHVwZGF0ZSBzaG91bGQgb2NjdXIsIG9yIGFuIG9iamVjdFxuICAgICAqICAgICAgICB3aXRoIGEgZmxhZyBpbmRpY2F0aW5nIHRoYXQgYW4gdXBkYXRlIGlzIG5vdCBuZWNlc3NhcnkuXG4gICAgICovXG4gICAgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgaWYgKCFkZWVwRXF1YWxzKHRoaXMucHJvcHMsIHByZXZQcm9wcykpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzU2NoZW1hQ2hhbmdlZCA9ICFkZWVwRXF1YWxzKHByZXZQcm9wcy5zY2hlbWEsIHRoaXMucHJvcHMuc2NoZW1hKTtcbiAgICAgICAgICAgIGNvbnN0IGlzRm9ybURhdGFDaGFuZ2VkID0gIWRlZXBFcXVhbHMocHJldlByb3BzLmZvcm1EYXRhLCB0aGlzLnByb3BzLmZvcm1EYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHRoaXMuZ2V0U3RhdGVGcm9tUHJvcHModGhpcy5wcm9wcywgdGhpcy5wcm9wcy5mb3JtRGF0YSwgXG4gICAgICAgICAgICAvLyBJZiB0aGUgYHNjaGVtYWAgaGFzIGNoYW5nZWQsIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSByZXRyaWV2ZWQgc2NoZW1hLlxuICAgICAgICAgICAgLy8gT3IgaWYgdGhlIGBmb3JtRGF0YWAgY2hhbmdlcywgZm9yIGV4YW1wbGUgaW4gdGhlIGNhc2Ugb2YgYSBzY2hlbWEgd2l0aCBkZXBlbmRlbmNpZXMgdGhhdCBuZWVkIHRvXG4gICAgICAgICAgICAvLyAgbWF0Y2ggb25lIG9mIHRoZSBzdWJTY2hlbWFzLCB0aGUgcmV0cmlldmVkIHNjaGVtYSBtdXN0IGJlIHVwZGF0ZWQuXG4gICAgICAgICAgICBpc1NjaGVtYUNoYW5nZWQgfHwgaXNGb3JtRGF0YUNoYW5nZWQgPyB1bmRlZmluZWQgOiB0aGlzLnN0YXRlLnJldHJpZXZlZFNjaGVtYSwgaXNTY2hlbWFDaGFuZ2VkKTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFVwZGF0ZSA9ICFkZWVwRXF1YWxzKG5leHRTdGF0ZSwgcHJldlN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiB7IG5leHRTdGF0ZSwgc2hvdWxkVXBkYXRlIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc2hvdWxkVXBkYXRlOiBmYWxzZSB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBgY29tcG9uZW50RGlkVXBkYXRlYCBpcyBhIFJlYWN0IGxpZmVjeWNsZSBtZXRob2QgdGhhdCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyIHVwZGF0aW5nIG9jY3Vycy4gVGhpcyBtZXRob2QgaXNcbiAgICAgKiBub3QgY2FsbGVkIGZvciB0aGUgaW5pdGlhbCByZW5kZXIuXG4gICAgICpcbiAgICAgKiBIZXJlLCBpdCBjaGVja3MgaWYgYW4gdXBkYXRlIGlzIG5lY2Vzc2FyeSBiYXNlZCBvbiB0aGUgYHNob3VsZFVwZGF0ZWAgZmxhZyByZWNlaXZlZCBmcm9tIGBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZWAuXG4gICAgICogSWYgYW4gdXBkYXRlIGlzIHJlcXVpcmVkLCBpdCBhcHBsaWVzIHRoZSBuZXh0IHN0YXRlIGFuZCwgaWYgbmVlZGVkLCB0cmlnZ2VycyB0aGUgYG9uQ2hhbmdlYCBoYW5kbGVyIHRvIGluZm9ybSBhYm91dFxuICAgICAqIGNoYW5nZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBlZmZlY3RpdmVseSByZXBsYWNlcyB0aGUgZGVwcmVjYXRlZCBgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHNgLCBwcm92aWRpbmcgYSBzYWZlciBhbHRlcm5hdGl2ZVxuICAgICAqIHRvIGhhbmRsZSBwcm9wIGNoYW5nZXMgYW5kIHN0YXRlIHVwZGF0ZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gXyAtIFRoZSBwcmV2aW91cyBzZXQgb2YgcHJvcHMuXG4gICAgICogQHBhcmFtIHByZXZTdGF0ZSAtIFRoZSBwcmV2aW91cyBzdGF0ZSBvZiB0aGUgY29tcG9uZW50IGJlZm9yZSB0aGUgdXBkYXRlLlxuICAgICAqIEBwYXJhbSBzbmFwc2hvdCAtIFRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZWAuXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKF8sIHByZXZTdGF0ZSwgc25hcHNob3QpIHtcbiAgICAgICAgaWYgKHNuYXBzaG90LnNob3VsZFVwZGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgeyBuZXh0U3RhdGUgfSA9IHNuYXBzaG90O1xuICAgICAgICAgICAgaWYgKCFkZWVwRXF1YWxzKG5leHRTdGF0ZS5mb3JtRGF0YSwgdGhpcy5wcm9wcy5mb3JtRGF0YSkgJiZcbiAgICAgICAgICAgICAgICAhZGVlcEVxdWFscyhuZXh0U3RhdGUuZm9ybURhdGEsIHByZXZTdGF0ZS5mb3JtRGF0YSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShuZXh0U3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShuZXh0U3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBFeHRyYWN0cyB0aGUgdXBkYXRlZCBzdGF0ZSBmcm9tIHRoZSBnaXZlbiBgcHJvcHNgIGFuZCBgaW5wdXRGb3JtRGF0YWAuIEFzIHBhcnQgb2YgdGhpcyBwcm9jZXNzLCB0aGVcbiAgICAgKiBgaW5wdXRGb3JtRGF0YWAgaXMgZmlyc3QgcHJvY2Vzc2VkIHRvIGFkZCBhbnkgbWlzc2luZyByZXF1aXJlZCBkZWZhdWx0cy4gQWZ0ZXIgdGhhdCwgdGhlIGRhdGEgaXMgcnVuIHRocm91Z2ggdGhlXG4gICAgICogdmFsaWRhdGlvbiBwcm9jZXNzIElGIHJlcXVpcmVkIGJ5IHRoZSBgcHJvcHNgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BzIC0gVGhlIHByb3BzIHBhc3NlZCB0byB0aGUgYEZvcm1gXG4gICAgICogQHBhcmFtIGlucHV0Rm9ybURhdGEgLSBUaGUgbmV3IG9yIGN1cnJlbnQgZGF0YSBmb3IgdGhlIGBGb3JtYFxuICAgICAqIEBwYXJhbSByZXRyaWV2ZWRTY2hlbWEgLSBBbiBleHBhbmRlZCBzY2hlbWEsIGlmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgYHNjaGVtYWAgYW5kIGBmb3JtRGF0YWAuXG4gICAgICogQHBhcmFtIGlzU2NoZW1hQ2hhbmdlZCAtIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHNjaGVtYSBoYXMgY2hhbmdlZC5cbiAgICAgKiBAcmV0dXJucyAtIFRoZSBuZXcgc3RhdGUgZm9yIHRoZSBgRm9ybWBcbiAgICAgKi9cbiAgICBnZXRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgaW5wdXRGb3JtRGF0YSwgcmV0cmlldmVkU2NoZW1hLCBpc1NjaGVtYUNoYW5nZWQgPSBmYWxzZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZSB8fCB7fTtcbiAgICAgICAgY29uc3Qgc2NoZW1hID0gJ3NjaGVtYScgaW4gcHJvcHMgPyBwcm9wcy5zY2hlbWEgOiB0aGlzLnByb3BzLnNjaGVtYTtcbiAgICAgICAgY29uc3QgdWlTY2hlbWEgPSAoJ3VpU2NoZW1hJyBpbiBwcm9wcyA/IHByb3BzLnVpU2NoZW1hIDogdGhpcy5wcm9wcy51aVNjaGVtYSkgfHwge307XG4gICAgICAgIGNvbnN0IGVkaXQgPSB0eXBlb2YgaW5wdXRGb3JtRGF0YSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgIGNvbnN0IGxpdmVWYWxpZGF0ZSA9ICdsaXZlVmFsaWRhdGUnIGluIHByb3BzID8gcHJvcHMubGl2ZVZhbGlkYXRlIDogdGhpcy5wcm9wcy5saXZlVmFsaWRhdGU7XG4gICAgICAgIGNvbnN0IG11c3RWYWxpZGF0ZSA9IGVkaXQgJiYgIXByb3BzLm5vVmFsaWRhdGUgJiYgbGl2ZVZhbGlkYXRlO1xuICAgICAgICBjb25zdCByb290U2NoZW1hID0gc2NoZW1hO1xuICAgICAgICBjb25zdCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0gJ2V4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3InIGluIHByb3BzXG4gICAgICAgICAgICA/IHByb3BzLmV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3JcbiAgICAgICAgICAgIDogdGhpcy5wcm9wcy5leHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yO1xuICAgICAgICBjb25zdCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiA9ICdleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZicgaW4gcHJvcHNcbiAgICAgICAgICAgID8gcHJvcHMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZcbiAgICAgICAgICAgIDogdGhpcy5wcm9wcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZjtcbiAgICAgICAgbGV0IHNjaGVtYVV0aWxzID0gc3RhdGUuc2NoZW1hVXRpbHM7XG4gICAgICAgIGlmICghc2NoZW1hVXRpbHMgfHxcbiAgICAgICAgICAgIHNjaGVtYVV0aWxzLmRvZXNTY2hlbWFVdGlsc0RpZmZlcihwcm9wcy52YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSkge1xuICAgICAgICAgICAgc2NoZW1hVXRpbHMgPSBjcmVhdGVTY2hlbWFVdGlscyhwcm9wcy52YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHNjaGVtYVV0aWxzLmdldERlZmF1bHRGb3JtU3RhdGUoc2NoZW1hLCBpbnB1dEZvcm1EYXRhKTtcbiAgICAgICAgY29uc3QgX3JldHJpZXZlZFNjaGVtYSA9IHJldHJpZXZlZFNjaGVtYSAhPT0gbnVsbCAmJiByZXRyaWV2ZWRTY2hlbWEgIT09IHZvaWQgMCA/IHJldHJpZXZlZFNjaGVtYSA6IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICBjb25zdCBnZXRDdXJyZW50RXJyb3JzID0gKCkgPT4ge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGBwcm9wcy5ub1ZhbGlkYXRlYCBvcHRpb24gaXMgc2V0IG9yIHRoZSBzY2hlbWEgaGFzIGNoYW5nZWQsIHdlIHJlc2V0IHRoZSBlcnJvciBzdGF0ZS5cbiAgICAgICAgICAgIGlmIChwcm9wcy5ub1ZhbGlkYXRlIHx8IGlzU2NoZW1hQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGVycm9yczogW10sIGVycm9yU2NoZW1hOiB7fSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXByb3BzLmxpdmVWYWxpZGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yczogc3RhdGUuc2NoZW1hVmFsaWRhdGlvbkVycm9ycyB8fCBbXSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWE6IHN0YXRlLnNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSB8fCB7fSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBlcnJvcnM6IHN0YXRlLmVycm9ycyB8fCBbXSxcbiAgICAgICAgICAgICAgICBlcnJvclNjaGVtYTogc3RhdGUuZXJyb3JTY2hlbWEgfHwge30sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICBsZXQgZXJyb3JzO1xuICAgICAgICBsZXQgZXJyb3JTY2hlbWE7XG4gICAgICAgIGxldCBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzID0gc3RhdGUuc2NoZW1hVmFsaWRhdGlvbkVycm9ycztcbiAgICAgICAgbGV0IHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSA9IHN0YXRlLnNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYTtcbiAgICAgICAgaWYgKG11c3RWYWxpZGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbiA9IHRoaXMudmFsaWRhdGUoZm9ybURhdGEsIHNjaGVtYSwgc2NoZW1hVXRpbHMsIF9yZXRyaWV2ZWRTY2hlbWEpO1xuICAgICAgICAgICAgZXJyb3JzID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvcnM7XG4gICAgICAgICAgICAvLyBJZiByZXRyaWV2ZWRTY2hlbWEgaXMgdW5kZWZpbmVkIHdoaWNoIG1lYW5zIHRoZSBzY2hlbWEgb3IgZm9ybURhdGEgaGFzIGNoYW5nZWQsIHdlIGRvIG5vdCBtZXJnZSBzdGF0ZS5cbiAgICAgICAgICAgIC8vIEVsc2UgaW4gdGhlIGNhc2Ugd2hlcmUgaXQgaGFzbid0IGNoYW5nZWQsIHdlIG1lcmdlICdzdGF0ZS5lcnJvclNjaGVtYScgd2l0aCAnc2NoZW1hVmFsaWRhdGlvbi5lcnJvclNjaGVtYS4nIFRoaXMgZG9uZSB0byBkaXNwbGF5IHRoZSByYWlzZWQgZmllbGQgZXJyb3IuXG4gICAgICAgICAgICBpZiAocmV0cmlldmVkU2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSA9IG1lcmdlT2JqZWN0cygoX2EgPSB0aGlzLnN0YXRlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZXJyb3JTY2hlbWEsIHNjaGVtYVZhbGlkYXRpb24uZXJyb3JTY2hlbWEsICdwcmV2ZW50RHVwbGljYXRlcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyA9IGVycm9ycztcbiAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSA9IGVycm9yU2NoZW1hO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEVycm9ycyA9IGdldEN1cnJlbnRFcnJvcnMoKTtcbiAgICAgICAgICAgIGVycm9ycyA9IGN1cnJlbnRFcnJvcnMuZXJyb3JzO1xuICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSBjdXJyZW50RXJyb3JzLmVycm9yU2NoZW1hO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wcy5leHRyYUVycm9ycykge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VkID0gdmFsaWRhdGlvbkRhdGFNZXJnZSh7IGVycm9yU2NoZW1hLCBlcnJvcnMgfSwgcHJvcHMuZXh0cmFFcnJvcnMpO1xuICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSBtZXJnZWQuZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICBlcnJvcnMgPSBtZXJnZWQuZXJyb3JzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlkU2NoZW1hID0gc2NoZW1hVXRpbHMudG9JZFNjaGVtYShfcmV0cmlldmVkU2NoZW1hLCB1aVNjaGVtYVsndWk6cm9vdEZpZWxkSWQnXSwgZm9ybURhdGEsIHByb3BzLmlkUHJlZml4LCBwcm9wcy5pZFNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHtcbiAgICAgICAgICAgIHNjaGVtYVV0aWxzLFxuICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgdWlTY2hlbWEsXG4gICAgICAgICAgICBpZFNjaGVtYSxcbiAgICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICAgICAgZWRpdCxcbiAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyxcbiAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSxcbiAgICAgICAgICAgIHJldHJpZXZlZFNjaGVtYTogX3JldHJpZXZlZFNjaGVtYSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgICB9XG4gICAgLyoqIFJlYWN0IGxpZmVjeWNsZSBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGNvbXBvbmVudCBzaG91bGQgYmUgdXBkYXRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXh0UHJvcHMgLSBUaGUgbmV4dCB2ZXJzaW9uIG9mIHRoZSBwcm9wc1xuICAgICAqIEBwYXJhbSBuZXh0U3RhdGUgLSBUaGUgbmV4dCB2ZXJzaW9uIG9mIHRoZSBzdGF0ZVxuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSB1cGRhdGVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIHNob3VsZFJlbmRlcih0aGlzLCBuZXh0UHJvcHMsIG5leHRTdGF0ZSk7XG4gICAgfVxuICAgIC8qKiBWYWxpZGF0ZXMgdGhlIGBmb3JtRGF0YWAgYWdhaW5zdCB0aGUgYHNjaGVtYWAgdXNpbmcgdGhlIGBhbHRTY2hlbWFVdGlsc2AgKGlmIHByb3ZpZGVkIG90aGVyd2lzZSBpdCB1c2VzIHRoZVxuICAgICAqIGBzY2hlbWFVdGlsc2AgaW4gdGhlIHN0YXRlKSwgcmV0dXJuaW5nIHRoZSByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIG5ldyBmb3JtIGRhdGEgdG8gdmFsaWRhdGVcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSB1c2VkIHRvIHZhbGlkYXRlIGFnYWluc3RcbiAgICAgKiBAcGFyYW0gYWx0U2NoZW1hVXRpbHMgLSBUaGUgYWx0ZXJuYXRlIHNjaGVtYVV0aWxzIHRvIHVzZSBmb3IgdmFsaWRhdGlvblxuICAgICAqL1xuICAgIHZhbGlkYXRlKGZvcm1EYXRhLCBzY2hlbWEgPSB0aGlzLnByb3BzLnNjaGVtYSwgYWx0U2NoZW1hVXRpbHMsIHJldHJpZXZlZFNjaGVtYSkge1xuICAgICAgICBjb25zdCBzY2hlbWFVdGlscyA9IGFsdFNjaGVtYVV0aWxzID8gYWx0U2NoZW1hVXRpbHMgOiB0aGlzLnN0YXRlLnNjaGVtYVV0aWxzO1xuICAgICAgICBjb25zdCB7IGN1c3RvbVZhbGlkYXRlLCB0cmFuc2Zvcm1FcnJvcnMsIHVpU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCByZXNvbHZlZFNjaGVtYSA9IHJldHJpZXZlZFNjaGVtYSAhPT0gbnVsbCAmJiByZXRyaWV2ZWRTY2hlbWEgIT09IHZvaWQgMCA/IHJldHJpZXZlZFNjaGVtYSA6IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICByZXR1cm4gc2NoZW1hVXRpbHNcbiAgICAgICAgICAgIC5nZXRWYWxpZGF0b3IoKVxuICAgICAgICAgICAgLnZhbGlkYXRlRm9ybURhdGEoZm9ybURhdGEsIHJlc29sdmVkU2NoZW1hLCBjdXN0b21WYWxpZGF0ZSwgdHJhbnNmb3JtRXJyb3JzLCB1aVNjaGVtYSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIGFueSBlcnJvcnMgY29udGFpbmVkIGluIHRoZSBgc3RhdGVgIGluIHVzaW5nIHRoZSBgRXJyb3JMaXN0YCwgaWYgbm90IGRpc2FibGVkIGJ5IGBzaG93RXJyb3JMaXN0YC4gKi9cbiAgICByZW5kZXJFcnJvcnMocmVnaXN0cnkpIHtcbiAgICAgICAgY29uc3QgeyBlcnJvcnMsIGVycm9yU2NoZW1hLCBzY2hlbWEsIHVpU2NoZW1hIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCB7IGZvcm1Db250ZXh0IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICAgICAgY29uc3QgRXJyb3JMaXN0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRXJyb3JMaXN0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgICAgIGlmIChlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIChfanN4KEVycm9yTGlzdFRlbXBsYXRlLCB7IGVycm9yczogZXJyb3JzLCBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEgfHwge30sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gRmlsdGVyaW5nIGVycm9ycyBiYXNlZCBvbiB5b3VyIHJldHJpZXZlZCBzY2hlbWEgdG8gb25seSBzaG93IGVycm9ycyBmb3IgcHJvcGVydGllcyBpbiB0aGUgc2VsZWN0ZWQgYnJhbmNoLlxuICAgIGZpbHRlckVycm9yc0Jhc2VkT25TY2hlbWEoc2NoZW1hRXJyb3JzLCByZXNvbHZlZFNjaGVtYSwgZm9ybURhdGEpIHtcbiAgICAgICAgY29uc3QgeyByZXRyaWV2ZWRTY2hlbWEsIHNjaGVtYVV0aWxzIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCBfcmV0cmlldmVkU2NoZW1hID0gcmVzb2x2ZWRTY2hlbWEgIT09IG51bGwgJiYgcmVzb2x2ZWRTY2hlbWEgIT09IHZvaWQgMCA/IHJlc29sdmVkU2NoZW1hIDogcmV0cmlldmVkU2NoZW1hO1xuICAgICAgICBjb25zdCBwYXRoU2NoZW1hID0gc2NoZW1hVXRpbHMudG9QYXRoU2NoZW1hKF9yZXRyaWV2ZWRTY2hlbWEsICcnLCBmb3JtRGF0YSk7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZXMgPSB0aGlzLmdldEZpZWxkTmFtZXMocGF0aFNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEVycm9ycyA9IF9waWNrKHNjaGVtYUVycm9ycywgZmllbGROYW1lcyk7XG4gICAgICAgIC8vIElmIHRoZSByb290IHNjaGVtYSBpcyBvZiBhIHByaW1pdGl2ZSB0eXBlLCBkbyBub3QgZmlsdGVyIG91dCB0aGUgX19lcnJvcnNcbiAgICAgICAgaWYgKChyZXNvbHZlZFNjaGVtYSA9PT0gbnVsbCB8fCByZXNvbHZlZFNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzb2x2ZWRTY2hlbWEudHlwZSkgIT09ICdvYmplY3QnICYmIChyZXNvbHZlZFNjaGVtYSA9PT0gbnVsbCB8fCByZXNvbHZlZFNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzb2x2ZWRTY2hlbWEudHlwZSkgIT09ICdhcnJheScpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkRXJyb3JzLl9fZXJyb3JzID0gc2NoZW1hRXJyb3JzLl9fZXJyb3JzO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlbW92aW5nIHVuZGVmaW5lZCwgbnVsbCBhbmQgZW1wdHkgZXJyb3JzLlxuICAgICAgICBjb25zdCBmaWx0ZXJOaWxPckVtcHR5RXJyb3JzID0gKGVycm9ycykgPT4ge1xuICAgICAgICAgICAgX2ZvckVhY2goZXJyb3JzLCAoZXJyb3JBdEtleSwgZXJyb3JLZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoX2lzTmlsKGVycm9yQXRLZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlcnJvcnNbZXJyb3JLZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgZXJyb3JBdEtleSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoZXJyb3JBdEtleS5fX2Vycm9ycykpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyTmlsT3JFbXB0eUVycm9ycyhlcnJvckF0S2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmaWx0ZXJOaWxPckVtcHR5RXJyb3JzKGZpbHRlcmVkRXJyb3JzKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgdGhlIHJlZ2lzdHJ5IGZvciB0aGUgZm9ybSAqL1xuICAgIGdldFJlZ2lzdHJ5KCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nOiBjdXN0b21UcmFuc2xhdGVTdHJpbmcsIHVpU2NoZW1hID0ge30gfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IHsgZmllbGRzLCB0ZW1wbGF0ZXMsIHdpZGdldHMsIGZvcm1Db250ZXh0LCB0cmFuc2xhdGVTdHJpbmcgfSA9IGdldERlZmF1bHRSZWdpc3RyeSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmllbGRzOiB7IC4uLmZpZWxkcywgLi4udGhpcy5wcm9wcy5maWVsZHMgfSxcbiAgICAgICAgICAgIHRlbXBsYXRlczoge1xuICAgICAgICAgICAgICAgIC4uLnRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLnByb3BzLnRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICBCdXR0b25UZW1wbGF0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGVtcGxhdGVzLkJ1dHRvblRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICAgICAgLi4uKF9hID0gdGhpcy5wcm9wcy50ZW1wbGF0ZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5CdXR0b25UZW1wbGF0ZXMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3aWRnZXRzOiB7IC4uLndpZGdldHMsIC4uLnRoaXMucHJvcHMud2lkZ2V0cyB9LFxuICAgICAgICAgICAgcm9vdFNjaGVtYTogdGhpcy5wcm9wcy5zY2hlbWEsXG4gICAgICAgICAgICBmb3JtQ29udGV4dDogdGhpcy5wcm9wcy5mb3JtQ29udGV4dCB8fCBmb3JtQ29udGV4dCxcbiAgICAgICAgICAgIHNjaGVtYVV0aWxzLFxuICAgICAgICAgICAgdHJhbnNsYXRlU3RyaW5nOiBjdXN0b21UcmFuc2xhdGVTdHJpbmcgfHwgdHJhbnNsYXRlU3RyaW5nLFxuICAgICAgICAgICAgZ2xvYmFsVWlPcHRpb25zOiB1aVNjaGVtYVtVSV9HTE9CQUxfT1BUSU9OU19LRVldLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogQXR0ZW1wdHMgdG8gZm9jdXMgb24gdGhlIGZpZWxkIGFzc29jaWF0ZWQgd2l0aCB0aGUgYGVycm9yYC4gVXNlcyB0aGUgYHByb3BlcnR5YCBmaWVsZCB0byBjb21wdXRlIHBhdGggb2YgdGhlIGVycm9yXG4gICAgICogZmllbGQsIHRoZW4sIHVzaW5nIHRoZSBgaWRQcmVmaXhgIGFuZCBgaWRTZXBhcmF0b3JgIGNvbnZlcnRzIHRoYXQgcGF0aCBpbnRvIGFuIGlkLiBUaGVuIHRoZSBpbnB1dCBlbGVtZW50IHdpdGggdGhhdFxuICAgICAqIGlkIGlzIGF0dGVtcHRlZCB0byBiZSBmb3VuZCB1c2luZyB0aGUgYGZvcm1FbGVtZW50YCByZWYuIElmIGl0IGlzIGxvY2F0ZWQsIHRoZW4gaXQgaXMgZm9jdXNlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciBvbiB3aGljaCB0byBmb2N1c1xuICAgICAqL1xuICAgIGZvY3VzT25FcnJvcihlcnJvcikge1xuICAgICAgICBjb25zdCB7IGlkUHJlZml4ID0gJ3Jvb3QnLCBpZFNlcGFyYXRvciA9ICdfJyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBwcm9wZXJ0eSB9ID0gZXJyb3I7XG4gICAgICAgIGNvbnN0IHBhdGggPSBfdG9QYXRoKHByb3BlcnR5KTtcbiAgICAgICAgaWYgKHBhdGhbMF0gPT09ICcnKSB7XG4gICAgICAgICAgICAvLyBNb3N0IG9mIHRoZSB0aW1lIHRoZSBgLmZvb2AgcHJvcGVydHkgcmVzdWx0cyBpbiB0aGUgZmlyc3QgZWxlbWVudCBiZWluZyBlbXB0eSwgc28gcmVwbGFjZSBpdCB3aXRoIHRoZSBpZFByZWZpeFxuICAgICAgICAgICAgcGF0aFswXSA9IGlkUHJlZml4O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGluc2VydCB0aGUgaWRQcmVmaXggaW50byB0aGUgZmlyc3QgbG9jYXRpb24gdXNpbmcgdW5zaGlmdFxuICAgICAgICAgICAgcGF0aC51bnNoaWZ0KGlkUHJlZml4KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbGVtZW50SWQgPSBwYXRoLmpvaW4oaWRTZXBhcmF0b3IpO1xuICAgICAgICBsZXQgZmllbGQgPSB0aGlzLmZvcm1FbGVtZW50LmN1cnJlbnQuZWxlbWVudHNbZWxlbWVudElkXTtcbiAgICAgICAgaWYgKCFmaWVsZCkge1xuICAgICAgICAgICAgLy8gaWYgbm90IGFuIGV4YWN0IG1hdGNoLCB0cnkgZmluZGluZyBhbiBpbnB1dCBzdGFydGluZyB3aXRoIHRoZSBlbGVtZW50IGlkIChsaWtlIHJhZGlvIGJ1dHRvbnMgb3IgY2hlY2tib3hlcylcbiAgICAgICAgICAgIGZpZWxkID0gdGhpcy5mb3JtRWxlbWVudC5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W2lkXj1cIiR7ZWxlbWVudElkfVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkICYmIGZpZWxkLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gSWYgd2UgZ290IGEgbGlzdCB3aXRoIGxlbmd0aCA+IDBcbiAgICAgICAgICAgIGZpZWxkID0gZmllbGRbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICBmaWVsZC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBQcm9ncmFtbWF0aWNhbGx5IHZhbGlkYXRlIHRoZSBmb3JtLiAgSWYgYG9taXRFeHRyYURhdGFgIGlzIHRydWUsIHRoZSBgZm9ybURhdGFgIHdpbGwgZmlyc3QgYmUgZmlsdGVyZWQgdG8gcmVtb3ZlXG4gICAgICogYW55IGV4dHJhIGRhdGEgbm90IGluIGEgZm9ybSBmaWVsZC4gSWYgYG9uRXJyb3JgIGlzIHByb3ZpZGVkLCB0aGVuIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGxpc3Qgb2YgZXJyb3JzIHRoZVxuICAgICAqIHNhbWUgd2F5IGFzIHdvdWxkIGhhcHBlbiBvbiBmb3JtIHN1Ym1pc3Npb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGZvcm0gaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICB2YWxpZGF0ZUZvcm0oKSB7XG4gICAgICAgIGNvbnN0IHsgb21pdEV4dHJhRGF0YSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgbGV0IHsgZm9ybURhdGE6IG5ld0Zvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBpZiAob21pdEV4dHJhRGF0YSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgbmV3Rm9ybURhdGEgPSB0aGlzLm9taXRFeHRyYURhdGEobmV3Rm9ybURhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlRm9ybVdpdGhGb3JtRGF0YShuZXdGb3JtRGF0YSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIHRoZSBgRm9ybWAgZmllbGRzIGluc2lkZSB0aGUgPGZvcm0+IHwgYHRhZ05hbWVgIG9yIGBfaW50ZXJuYWxGb3JtV3JhcHBlcmAsIHJlbmRlcmluZyBhbnkgZXJyb3JzIGlmXG4gICAgICogbmVlZGVkIGFsb25nIHdpdGggdGhlIHN1Ym1pdCBidXR0b24gb3IgYW55IGNoaWxkcmVuIG9mIHRoZSBmb3JtLlxuICAgICAqL1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiwgaWQsIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgY2xhc3NOYW1lID0gJycsIHRhZ05hbWUsIG5hbWUsIG1ldGhvZCwgdGFyZ2V0LCBhY3Rpb24sIGF1dG9Db21wbGV0ZSwgZW5jdHlwZSwgYWNjZXB0Y2hhcnNldCwgYWNjZXB0Q2hhcnNldCwgbm9IdG1sNVZhbGlkYXRlID0gZmFsc2UsIGRpc2FibGVkLCByZWFkb25seSwgZm9ybUNvbnRleHQsIHNob3dFcnJvckxpc3QgPSAndG9wJywgX2ludGVybmFsRm9ybVdyYXBwZXIsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgdWlTY2hlbWEsIGZvcm1EYXRhLCBlcnJvclNjaGVtYSwgaWRTY2hlbWEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gdGhpcy5nZXRSZWdpc3RyeSgpO1xuICAgICAgICBjb25zdCB7IFNjaGVtYUZpZWxkOiBfU2NoZW1hRmllbGQgfSA9IHJlZ2lzdHJ5LmZpZWxkcztcbiAgICAgICAgY29uc3QgeyBTdWJtaXRCdXR0b24gfSA9IHJlZ2lzdHJ5LnRlbXBsYXRlcy5CdXR0b25UZW1wbGF0ZXM7XG4gICAgICAgIC8vIFRoZSBgc2VtYW50aWMtdWlgIGFuZCBgbWF0ZXJpYWwtdWlgIHRoZW1lcyBoYXZlIGBfaW50ZXJuYWxGb3JtV3JhcHBlcmBzIHRoYXQgdGFrZSBhbiBgYXNgIHByb3AgdGhhdCBpcyB0aGVcbiAgICAgICAgLy8gUHJvcFR5cGVzLmVsZW1lbnRUeXBlIHRvIHVzZSBmb3IgdGhlIGlubmVyIHRhZywgc28gd2UnbGwgbmVlZCB0byBwYXNzIGB0YWdOYW1lYCBhbG9uZyBpZiBpdCBpcyBwcm92aWRlZC5cbiAgICAgICAgLy8gTk9URSwgdGhlIGBhc2AgcHJvcCBpcyBuYXRpdmUgdG8gYHNlbWFudGljLXVpYCBhbmQgaXMgZW11bGF0ZWQgaW4gdGhlIGBtYXRlcmlhbC11aWAgdGhlbWVcbiAgICAgICAgY29uc3QgYXMgPSBfaW50ZXJuYWxGb3JtV3JhcHBlciA/IHRhZ05hbWUgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IEZvcm1UYWcgPSBfaW50ZXJuYWxGb3JtV3JhcHBlciB8fCB0YWdOYW1lIHx8ICdmb3JtJztcbiAgICAgICAgbGV0IHsgW1NVQk1JVF9CVE5fT1BUSU9OU19LRVldOiBzdWJtaXRPcHRpb25zID0ge30gfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgc3VibWl0T3B0aW9ucyA9IHsgLi4uc3VibWl0T3B0aW9ucywgcHJvcHM6IHsgLi4uc3VibWl0T3B0aW9ucy5wcm9wcywgZGlzYWJsZWQ6IHRydWUgfSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1Ym1pdFVpU2NoZW1hID0geyBbVUlfT1BUSU9OU19LRVldOiB7IFtTVUJNSVRfQlROX09QVElPTlNfS0VZXTogc3VibWl0T3B0aW9ucyB9IH07XG4gICAgICAgIHJldHVybiAoX2pzeHMoRm9ybVRhZywgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6ICdyanNmJywgaWQ6IGlkLCBuYW1lOiBuYW1lLCBtZXRob2Q6IG1ldGhvZCwgdGFyZ2V0OiB0YXJnZXQsIGFjdGlvbjogYWN0aW9uLCBhdXRvQ29tcGxldGU6IGF1dG9Db21wbGV0ZSwgZW5jVHlwZTogZW5jdHlwZSwgYWNjZXB0Q2hhcnNldDogYWNjZXB0Q2hhcnNldCB8fCBhY2NlcHRjaGFyc2V0LCBub1ZhbGlkYXRlOiBub0h0bWw1VmFsaWRhdGUsIG9uU3VibWl0OiB0aGlzLm9uU3VibWl0LCBhczogYXMsIHJlZjogdGhpcy5mb3JtRWxlbWVudCwgY2hpbGRyZW46IFtzaG93RXJyb3JMaXN0ID09PSAndG9wJyAmJiB0aGlzLnJlbmRlckVycm9ycyhyZWdpc3RyeSksIF9qc3goX1NjaGVtYUZpZWxkLCB7IG5hbWU6ICcnLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEsIGlkU2NoZW1hOiBpZFNjaGVtYSwgaWRQcmVmaXg6IGlkUHJlZml4LCBpZFNlcGFyYXRvcjogaWRTZXBhcmF0b3IsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgZm9ybURhdGE6IGZvcm1EYXRhLCBvbkNoYW5nZTogdGhpcy5vbkNoYW5nZSwgb25CbHVyOiB0aGlzLm9uQmx1ciwgb25Gb2N1czogdGhpcy5vbkZvY3VzLCByZWdpc3RyeTogcmVnaXN0cnksIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5IH0pLCBjaGlsZHJlbiA/IGNoaWxkcmVuIDogX2pzeChTdWJtaXRCdXR0b24sIHsgdWlTY2hlbWE6IHN1Ym1pdFVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSksIHNob3dFcnJvckxpc3QgPT09ICdib3R0b20nICYmIHRoaXMucmVuZGVyRXJyb3JzKHJlZ2lzdHJ5KV0gfSkpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZvcm0uanMubWFwIiwiZXhwb3J0IGNsYXNzIENvdW50cnkge1xuICAgIHV1aWQ6IFN0cmluZyA9IFwiXCJcbiAgICB0aXRsZTogU3RyaW5nID0gXCJcIlxuICAgIGNvZGU6IFN0cmluZyA9IFwiXCJcbiAgICB1c2VWYXRXaXRoVXN0SWQ6IGJvb2xlYW4gPSB0cnVlXG4gICAgdXNlVmF0V2l0aG91dFVzdElkOiBib29sZWFuID0gdHJ1ZVxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS51dWlkXG4gICAgICAgIHRoaXMudGl0bGUgPSBpdGVtLnRpdGxlXG4gICAgICAgIHRoaXMuY29kZSA9IGl0ZW0uY29kZVxuICAgICAgICB0aGlzLnVzZVZhdFdpdGhVc3RJZCA9IGl0ZW0udXNlVmF0V2l0aFVzdElkXG4gICAgICAgIHRoaXMudXNlVmF0V2l0aG91dFVzdElkID0gaXRlbS51c2VWYXRXaXRob3V0VXN0SWRcbiAgICB9XG59IiwiaW1wb3J0IHthdXRvSW5qZWN0YWJsZSwgc2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiXG5pbXBvcnQgeyBDb3VudHJ5IH0gZnJvbSBcIi4uL21vZGVsL2NvdW50cnlcIlxuXG5Ac2luZ2xldG9uKClcbkBhdXRvSW5qZWN0YWJsZSgpXG5jbGFzcyBDb3VudHJ5U2VydmljZSB7XG5cbiAgYXN5bmMgZ2V0Q291bnRyeShzaG9wOiBTaG9wKTogUHJvbWlzZTxDb3VudHJ5W10+IHtcblxuICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9jb3VudHJ5L2J5L3Nob3AvJyArICBzaG9wLnV1aWQpLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBjb3VudHJ5ID0gbmV3IENvdW50cnkoKVxuICAgICAgICAgIGNvdW50cnkucGFyc2VGcm9tSnNvbihpdGVtKVxuICAgICAgICAgIHJldHVybiBjb3VudHJ5XG4gICAgICAgIH0pXG4gICAgXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDb3VudHJ5U2VydmljZVxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBOaWNlTW9kYWwsIHsgdXNlTW9kYWwsIGJvb3RzdHJhcERpYWxvZyB9IGZyb20gXCJAZWJheS9uaWNlLW1vZGFsLXJlYWN0XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL2Jhc2UvQnV0dG9uJ1xuaW1wb3J0IHtSSlNGU2NoZW1hfSBmcm9tIFwiQHJqc2YvdXRpbHNcIjtcbmltcG9ydCB7Q29udGFjdH0gZnJvbSBcIi4uLy4uL21vZGVsL2NvbnRhY3RcIjtcbmltcG9ydCB2YWxpZGF0b3IgZnJvbSBcIkByanNmL3ZhbGlkYXRvci1hanY2XCI7XG5pbXBvcnQgRm9ybSBmcm9tIFwiQHJqc2YvY29yZVwiO1xuaW1wb3J0IENvdW50cnlTZXJ2aWNlIGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jb3VudHJ5XCI7XG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gXCJmbG93Yml0ZS1yZWFjdFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBDb250YWN0TW9kYWwgPSBOaWNlTW9kYWwuY3JlYXRlKFxuICAgICh7IHRpdGxlLCBhY3Rpb24sIGNvbnRhY3QsIHNob3AgfSkgPT4ge1xuICAgICAgICBcbiAgICAgICAgY29uc3QgY291bnRyeV9hcGkgPSBuZXcgQ291bnRyeVNlcnZpY2UoKVxuXG4gICAgICAgIGNvbnN0IG1vZGFsID0gdXNlTW9kYWwoKTtcbiAgICAgICAgY29uc3QgW2Zvcm1EYXRhLCBzZXRGb3JtRGF0YV0gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgICAgICAgY29uc3QgW3NjaGVtYSwgc2V0U2NoZW1hXSA9IHVzZVN0YXRlPFJKU0ZTY2hlbWE+KHt9KVxuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZihjb250YWN0LnVpZCAhPSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybURhdGEoe1xuICAgICAgICAgICAgICAgICAgICBlbWFpbDogY29udGFjdC51c2VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RuYW1lOiBjb250YWN0LmxheW91dGVyX2RhdGEuZmlyc3RuYW1lLFxuICAgICAgICAgICAgICAgICAgICBsYXN0bmFtZTogY29udGFjdC5sYXlvdXRlcl9kYXRhLmxhc3RuYW1lLFxuICAgICAgICAgICAgICAgICAgICBjb21wYW55OiBjb250YWN0LmxheW91dGVyX2RhdGEuY29tcGFueSxcbiAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiBjb250YWN0LmxheW91dGVyX2RhdGEuc3RyZWV0LFxuICAgICAgICAgICAgICAgICAgICBob3VzZU51bWJlcjogY29udGFjdC5sYXlvdXRlcl9kYXRhLmhvdXNlTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICB6aXA6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS56aXAsXG4gICAgICAgICAgICAgICAgICAgIGNpdHk6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS5jaXR5LFxuICAgICAgICAgICAgICAgICAgICBwaG9uZTogY29udGFjdC5sYXlvdXRlcl9kYXRhLnBob25lLFxuICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBjb250YWN0LmxheW91dGVyX2RhdGEuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgdXN0aWQ6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS51c3RpZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIFtjb250YWN0XSk7XG5cbiAgICAgICAgY29uc3QgdWlTY2hlbWE6IFJKU0ZTY2hlbWEgPSB7XG4gICAgICAgICAgICBcInVpOnN1Ym1pdEJ1dHRvbk9wdGlvbnNcIjoge1xuICAgICAgICAgICAgICAgIFwic3VibWl0VGV4dFwiOiBcIlNhdmVcIixcbiAgICAgICAgICAgICAgICBcIm5vcmVuZGVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgXCJwcm9wc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGlzYWJsZWRcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIFwiY2xhc3NOYW1lXCI6IFwiYnRuIGJ0bi1pbmZvXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb3VudHJ5X2FwaS5nZXRDb3VudHJ5KHNob3ApLnRoZW4oKCBkYXRhICkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBjb3VudHJ5cyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnlzLnB1c2goeyd0aXRsZSc6IGl0ZW0uY29kZSwgJ2NvbnN0JzogaXRlbS5jb2RlfSlcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgdmFyIHNjaGVtYTogUkpTRlNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdDb250YWN0JyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ2VtYWlsJ10sXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7IHR5cGU6ICdzdHJpbmcnLCBmb3JtYXQ6ICdlbWFpbCcsIHRpdGxlOiAnRS1NYWlsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFueTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdDb21wYW55J30sXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnRmlyc3RuYW1lJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0bmFtZTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdMYXN0bmFtZSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ1N0cmVldCd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaG91c2VOdW1iZXI6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnSG91c2VudW1iZXInfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHppcDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdaaXAnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnQ2l0eSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnUGhvbmUnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzdGlkOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ1VzdElkJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0NvdW50cnknLCBvbmVPZjogY291bnRyeXN9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc2V0U2NoZW1hKHNjaGVtYSlcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNb2RhbCBzaG93PXttb2RhbC52aXNpYmxlfSBvbkNsb3NlPXsoKSA9PiBtb2RhbC5yZW1vdmUoKX0+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAge3RpdGxlfVxuICAgICAgICAgICAgICAgIDwvTW9kYWwuSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxNb2RhbC5Cb2R5PlxuICAgICAgICAgICAgICAgICAgICB7YWN0aW9uID09PSBcIlNhdmVcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYT17c2NoZW1hfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhPXtmb3JtRGF0YX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aVNjaGVtYT17dWlTY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yPXt2YWxpZGF0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRGb3JtRGF0YShlLmZvcm1EYXRhKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L01vZGFsLkJvZHk+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17M31cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSBcIlNhdmVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVzb2x2ZShmb3JtRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17NH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ3YXJuaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Nb2RhbC5Gb290ZXI+XG4gICAgICAgICAgICA8L01vZGFsPlxuICAgICAgICApO1xuICAgIH1cbik7XG5cbmV4cG9ydCBkZWZhdWx0IENvbnRhY3RNb2RhbDtcbiIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tIFwiLi4vbW9kZWwvYWRkcmVzc1wiXG5cbkBzaW5nbGV0b24oKVxuQGF1dG9JbmplY3RhYmxlKClcbmNsYXNzIEFkZHJlc3NTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2tlbj86IFRva2VuKSB7fVxuXG4gIGFzeW5jIGNyZWF0ZShhZGRyZXNzOiBBZGRyZXNzKTogUHJvbWlzZTxBZGRyZXNzPiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL2NvbnRhY3QvYWRkcmVzcy9jcmVhdGUnLCB7J2FkZHJlc3MnOiBhZGRyZXNzfSAse1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgfVxuICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShhZGRyZXNzOiBBZGRyZXNzKTogUHJvbWlzZTxBZGRyZXNzPiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MucHV0KCcvYXBwcy9hcGkvY29udGFjdC9hZGRyZXNzL3VwZGF0ZS8nICsgYWRkcmVzcy51dWlkLCB7J2FkZHJlc3MnOiBhZGRyZXNzfSAse1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgfVxuICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldENvbnRhY3RBZGRyZXNzKGNvbnRhY3Q6IFN0cmluZywgdHlwZTogTnVtYmVyKTogUHJvbWlzZTxBZGRyZXNzW10+IHtcbiAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvY29udGFjdC9hZGRyZXNzL2dldGFsbGZvcnR5cGUvJyArIGNvbnRhY3QgKyAnLycgKyB0eXBlLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGxldCBhZGRyZXNzID0gbmV3IEFkZHJlc3NcbiAgICAgICAgYWRkcmVzcy51aWQgPSBpdGVtLnVpZFxuICAgICAgICBhZGRyZXNzLmZpcnN0bmFtZSA9IGl0ZW0uZmlyc3RuYW1lXG4gICAgICAgIGFkZHJlc3MubGFzdG5hbWUgPSBpdGVtLmxhc3RuYW1lXG4gICAgICAgIGFkZHJlc3Muc3RyZWV0ID0gaXRlbS5zdHJlZXRcbiAgICAgICAgYWRkcmVzcy5jb3VudHJ5ID0gaXRlbS5jb3VudHJ5XG4gICAgICAgIGFkZHJlc3MudXN0aWQgPSBpdGVtLnVzdGlkXG4gICAgICAgIGFkZHJlc3MuaG91c2VOdW1iZXIgPSBpdGVtLmhvdXNlTnVtYmVyXG4gICAgICAgIGFkZHJlc3MuemlwID0gaXRlbS56aXBcbiAgICAgICAgYWRkcmVzcy5jaXR5ID0gaXRlbS5jaXR5XG4gICAgICAgIGFkZHJlc3MuY29tcGFueSA9IGl0ZW0uY29tcGFueVxuICAgICAgICBhZGRyZXNzLmNvbXBhbnkyID0gaXRlbS5jb21wYW55MlxuICAgICAgICBhZGRyZXNzLnV1aWQgPSBpdGVtLnV1aWRcbiAgICAgICAgcmV0dXJuIGFkZHJlc3NcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBZGRyZXNzU2VydmljZVxuIiwiaW1wb3J0IHtDb250YWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvY29udGFjdFwiXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi4vLi4vbW9kZWwvc2hvcFwiXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi9iYXNlL0J1dHRvblwiXG5pbXBvcnQgQ29udGFjdE1vZGFsIGZyb20gXCIuL0NvbnRhY3RNb2RhbFwiXG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlTW9kYWwgfSBmcm9tICdAZWJheS9uaWNlLW1vZGFsLXJlYWN0J1xuaW1wb3J0IENvbnRhY3RTZXJ2aWNlIGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jb250YWN0XCJcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tIFwiLi4vLi4vbW9kZWwvYWRkcmVzc1wiXG5pbXBvcnQgQWRkcmVzc1NlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2FkZHJlc3NcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBDb250YWN0TW9kYWxDb21wb25lbnQgPSAoe3Nob3AsIGhhbmRsZUFkZCwgaGFuZGxlRWRpdCwgY29udGFjdH0pID0+IHtcblxuICAgIFxuICAgIGNvbnN0IGNvbnRhY3RNb2RhbCA9IHVzZU1vZGFsKENvbnRhY3RNb2RhbClcblxuICAgIGNvbnN0IHNob3dBZGRNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgY29udGFjdE1vZGFsLnNob3coe3RpdGxlOiAnQWRkIENvbnRhY3QnLCBhY3Rpb246ICdTYXZlJywgc2hvcDogc2hvcCwgY29udGFjdDogbmV3IENvbnRhY3QoKX0pLnRoZW4oKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBhZGRDb250YWN0KGZvcm1EYXRhKVxuICAgICAgICB9KVxuICAgIH0sW2NvbnRhY3RNb2RhbF0pXG5cbiAgICBjb25zdCBzaG93RWRpdE1vZGFsID0gdXNlQ2FsbGJhY2soKGNvbnRhY3QpID0+IHtcbiAgICAgICAgY29udGFjdCA9IGNvbnRhY3RcbiAgICAgICAgY29udGFjdE1vZGFsLnNob3coeyB0aXRsZTogJ0VkaXQgQ29udGFjdCcsIGFjdGlvbjogJ1NhdmUnLCBjb250YWN0OiBjb250YWN0LCBzaG9wOiBzaG9wIH0pLnRoZW4oKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBjb250YWN0LnBhcnNlRnJvbUZvcm1EYXRhKGZvcm1EYXRhKVxuICAgICAgICAgICAgdXBkYXRlQ29udGFjdChjb250YWN0KVxuICAgICAgICB9KVxuICAgIH0sW2NvbnRhY3RNb2RhbF0pXG5cbiAgICBjb25zdCB1cGRhdGVDb250YWN0ID0gKGNvbnRhY3QpID0+IHtcbiAgICAgICAgY29uc3QgY29udGFjdF9hcGkgPSBuZXcgQ29udGFjdFNlcnZpY2UoKVxuICAgICAgICBjb250YWN0X2FwaS51cGRhdGVDb250YWN0KGNvbnRhY3QpLnRoZW4oKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgaGFuZGxlRWRpdChjb250YWN0KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGFkZENvbnRhY3QgPSAoZm9ybURhdGEpID0+IHtcbiAgICAgICAgdmFyIGNvbnRhY3QgPSBuZXcgQ29udGFjdCgpXG4gICAgICAgIGNvbnRhY3QucGFyc2VGcm9tRm9ybURhdGEoZm9ybURhdGEsIHNob3ApXG4gICAgICAgIGNvbnN0IGNvbnRhY3RfYXBpID0gbmV3IENvbnRhY3RTZXJ2aWNlKClcbiAgICAgICAgY29udGFjdF9hcGkuY3JlYXRlQ29udGFjdChjb250YWN0KS50aGVuKChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnRhY3QucGFyc2VGcm9tSnNvbihlKVxuICAgICAgICAgICAgdmFyIGFkZHJlc3MgPSBuZXcgQWRkcmVzcygpXG4gICAgICAgICAgICBhZGRyZXNzLnBhcnNlRnJvbUZvcm1EYXRhKGZvcm1EYXRhKVxuICAgICAgICAgICAgYWRkcmVzcy5jb250YWN0LnV1aWQgPSBjb250YWN0LnV1aWRcbiAgICAgICAgICAgIGFkZHJlc3MudHlwZSA9IDFcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NfYXBpID0gbmV3IEFkZHJlc3NTZXJ2aWNlKClcbiAgICAgICAgICAgIGFkZHJlc3NfYXBpLmNyZWF0ZShhZGRyZXNzKVxuICAgICAgICAgICAgYWRkcmVzcy50eXBlID0gMlxuICAgICAgICAgICAgYWRkcmVzc19hcGkuY3JlYXRlKGFkZHJlc3MpXG5cbiAgICAgICAgICAgIGhhbmRsZUFkZChjb250YWN0KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleCBnYXAtMSd9PlxuICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPXsxfSB2YXJpYW50PVwic3VjY2Vzc1wiIG9uQ2xpY2s9e3Nob3dBZGRNb2RhbH0gLz5cbiAgICAgICAgICAgIDxCdXR0b24gdHlwZT17Mn0gdmFyaWFudD1cImluZm9cIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2hvd0VkaXRNb2RhbChjb250YWN0KVxuICAgICAgICAgICAgfX0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG5Db250YWN0TW9kYWxDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICAgIGhhbmRsZUFkZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFuZGxlRWRpdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY29udGFjdDogUHJvcFR5cGVzLmluc3RhbmNlT2YoQ29udGFjdClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29udGFjdE1vZGFsQ29tcG9uZW50XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cblxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XG4gIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XG4gIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG59XG5cbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcbiAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0O1xuICB9XG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICB0W3BdID0gc1twXTtcbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICB9XG4gIHJldHVybiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xuICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2VzRGVjb3JhdGUoY3RvciwgZGVzY3JpcHRvckluLCBkZWNvcmF0b3JzLCBjb250ZXh0SW4sIGluaXRpYWxpemVycywgZXh0cmFJbml0aWFsaXplcnMpIHtcbiAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XG4gIHZhciBraW5kID0gY29udGV4dEluLmtpbmQsIGtleSA9IGtpbmQgPT09IFwiZ2V0dGVyXCIgPyBcImdldFwiIDoga2luZCA9PT0gXCJzZXR0ZXJcIiA/IFwic2V0XCIgOiBcInZhbHVlXCI7XG4gIHZhciB0YXJnZXQgPSAhZGVzY3JpcHRvckluICYmIGN0b3IgPyBjb250ZXh0SW5bXCJzdGF0aWNcIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsO1xuICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcbiAgdmFyIF8sIGRvbmUgPSBmYWxzZTtcbiAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBjb250ZXh0ID0ge307XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbikgY29udGV4dFtwXSA9IHAgPT09IFwiYWNjZXNzXCIgPyB7fSA6IGNvbnRleHRJbltwXTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluLmFjY2VzcykgY29udGV4dC5hY2Nlc3NbcF0gPSBjb250ZXh0SW4uYWNjZXNzW3BdO1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcbiAgICAgIHZhciByZXN1bHQgPSAoMCwgZGVjb3JhdG9yc1tpXSkoa2luZCA9PT0gXCJhY2Nlc3NvclwiID8geyBnZXQ6IGRlc2NyaXB0b3IuZ2V0LCBzZXQ6IGRlc2NyaXB0b3Iuc2V0IH0gOiBkZXNjcmlwdG9yW2tleV0sIGNvbnRleHQpO1xuICAgICAgaWYgKGtpbmQgPT09IFwiYWNjZXNzb3JcIikge1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCB0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkXCIpO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuaW5pdCkpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XG4gICAgICAgICAgaWYgKGtpbmQgPT09IFwiZmllbGRcIikgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICAgICAgZWxzZSBkZXNjcmlwdG9yW2tleV0gPSBfO1xuICAgICAgfVxuICB9XG4gIGlmICh0YXJnZXQpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGNvbnRleHRJbi5uYW1lLCBkZXNjcmlwdG9yKTtcbiAgZG9uZSA9IHRydWU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xuICB2YXIgdXNlVmFsdWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0aWFsaXplcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcbiAgfVxuICByZXR1cm4gdXNlVmFsdWUgPyB2YWx1ZSA6IHZvaWQgMDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Byb3BLZXkoeCkge1xuICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIikgbmFtZSA9IG5hbWUuZGVzY3JpcHRpb24gPyBcIltcIi5jb25jYXQobmFtZS5kZXNjcmlwdGlvbiwgXCJdXCIpIDogXCJcIjtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCBcIm5hbWVcIiwgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBwcmVmaXggPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiIFwiLCBuYW1lKSA6IG5hbWUgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xuICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufVxuXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgb1trMl0gPSBtW2tdO1xufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xuICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XG4gIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XG4gIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFtKSByZXR1cm4gbztcbiAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gIHRyeSB7XG4gICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgfVxuICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgfVxuICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gIH1cbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcbiAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XG4gIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXG4gICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgICAgICByW2tdID0gYVtqXTtcbiAgcmV0dXJuIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XG4gIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcbiAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XG4gIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxuICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XG4gIHZhciBpLCBwO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xuICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICByZXR1cm4gY29va2VkO1xufTtcblxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcbiAgb1tcImRlZmF1bHRcIl0gPSB2O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcbiAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XG4gIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XG4gIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcbiAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XG4gIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZShlbnYsIHZhbHVlLCBhc3luYykge1xuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWQuXCIpO1xuICAgIHZhciBkaXNwb3NlO1xuICAgIGlmIChhc3luYykge1xuICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0Rpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNEaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xuICAgIH1cbiAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGlmICghU3ltYm9sLmRpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuZGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuZGlzcG9zZV07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGlzcG9zZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IG5vdCBkaXNwb3NhYmxlLlwiKTtcbiAgICBlbnYuc3RhY2sucHVzaCh7IHZhbHVlOiB2YWx1ZSwgZGlzcG9zZTogZGlzcG9zZSwgYXN5bmM6IGFzeW5jIH0pO1xuICB9XG4gIGVsc2UgaWYgKGFzeW5jKSB7XG4gICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XG4gIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGlzcG9zZVJlc291cmNlcyhlbnYpIHtcbiAgZnVuY3Rpb24gZmFpbChlKSB7XG4gICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xuICAgIGVudi5oYXNFcnJvciA9IHRydWU7XG4gIH1cbiAgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICB3aGlsZSAoZW52LnN0YWNrLmxlbmd0aCkge1xuICAgICAgdmFyIHJlYyA9IGVudi5zdGFjay5wb3AoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWMuZGlzcG9zZSAmJiByZWMuZGlzcG9zZS5jYWxsKHJlYy52YWx1ZSk7XG4gICAgICAgIGlmIChyZWMuYXN5bmMpIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKG5leHQsIGZ1bmN0aW9uKGUpIHsgZmFpbChlKTsgcmV0dXJuIG5leHQoKTsgfSk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgIGZhaWwoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbnYuaGFzRXJyb3IpIHRocm93IGVudi5lcnJvcjtcbiAgfVxuICByZXR1cm4gbmV4dCgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIF9fZXh0ZW5kcyxcbiAgX19hc3NpZ24sXG4gIF9fcmVzdCxcbiAgX19kZWNvcmF0ZSxcbiAgX19wYXJhbSxcbiAgX19tZXRhZGF0YSxcbiAgX19hd2FpdGVyLFxuICBfX2dlbmVyYXRvcixcbiAgX19jcmVhdGVCaW5kaW5nLFxuICBfX2V4cG9ydFN0YXIsXG4gIF9fdmFsdWVzLFxuICBfX3JlYWQsXG4gIF9fc3ByZWFkLFxuICBfX3NwcmVhZEFycmF5cyxcbiAgX19zcHJlYWRBcnJheSxcbiAgX19hd2FpdCxcbiAgX19hc3luY0dlbmVyYXRvcixcbiAgX19hc3luY0RlbGVnYXRvcixcbiAgX19hc3luY1ZhbHVlcyxcbiAgX19tYWtlVGVtcGxhdGVPYmplY3QsXG4gIF9faW1wb3J0U3RhcixcbiAgX19pbXBvcnREZWZhdWx0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4sXG4gIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxuICBfX2Rpc3Bvc2VSZXNvdXJjZXMsXG59O1xuIiwiZXhwb3J0IHZhciBNUyA9ICctbXMtJ1xuZXhwb3J0IHZhciBNT1ogPSAnLW1vei0nXG5leHBvcnQgdmFyIFdFQktJVCA9ICctd2Via2l0LSdcblxuZXhwb3J0IHZhciBDT01NRU5UID0gJ2NvbW0nXG5leHBvcnQgdmFyIFJVTEVTRVQgPSAncnVsZSdcbmV4cG9ydCB2YXIgREVDTEFSQVRJT04gPSAnZGVjbCdcblxuZXhwb3J0IHZhciBQQUdFID0gJ0BwYWdlJ1xuZXhwb3J0IHZhciBNRURJQSA9ICdAbWVkaWEnXG5leHBvcnQgdmFyIElNUE9SVCA9ICdAaW1wb3J0J1xuZXhwb3J0IHZhciBDSEFSU0VUID0gJ0BjaGFyc2V0J1xuZXhwb3J0IHZhciBWSUVXUE9SVCA9ICdAdmlld3BvcnQnXG5leHBvcnQgdmFyIFNVUFBPUlRTID0gJ0BzdXBwb3J0cydcbmV4cG9ydCB2YXIgRE9DVU1FTlQgPSAnQGRvY3VtZW50J1xuZXhwb3J0IHZhciBOQU1FU1BBQ0UgPSAnQG5hbWVzcGFjZSdcbmV4cG9ydCB2YXIgS0VZRlJBTUVTID0gJ0BrZXlmcmFtZXMnXG5leHBvcnQgdmFyIEZPTlRfRkFDRSA9ICdAZm9udC1mYWNlJ1xuZXhwb3J0IHZhciBDT1VOVEVSX1NUWUxFID0gJ0Bjb3VudGVyLXN0eWxlJ1xuZXhwb3J0IHZhciBGT05UX0ZFQVRVUkVfVkFMVUVTID0gJ0Bmb250LWZlYXR1cmUtdmFsdWVzJ1xuZXhwb3J0IHZhciBMQVlFUiA9ICdAbGF5ZXInXG5leHBvcnQgdmFyIFNDT1BFID0gJ0BzY29wZSdcbiIsIi8qKlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCB2YXIgYWJzID0gTWF0aC5hYnNcblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IHZhciBmcm9tID0gU3RyaW5nLmZyb21DaGFyQ29kZVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgdmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ25cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2ggKHZhbHVlLCBsZW5ndGgpIHtcblx0cmV0dXJuIGNoYXJhdCh2YWx1ZSwgMCkgXiA0NSA/ICgoKCgoKChsZW5ndGggPDwgMikgXiBjaGFyYXQodmFsdWUsIDApKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMSkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAyKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDMpIDogMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbSAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLnRyaW0oKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAqIEByZXR1cm4ge3N0cmluZz99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaCAodmFsdWUsIHBhdHRlcm4pIHtcblx0cmV0dXJuICh2YWx1ZSA9IHBhdHRlcm4uZXhlYyh2YWx1ZSkpID8gdmFsdWVbMF0gOiB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHsoc3RyaW5nfFJlZ0V4cCl9IHBhdHRlcm5cbiAqIEBwYXJhbSB7c3RyaW5nfSByZXBsYWNlbWVudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZSAodmFsdWUsIHBhdHRlcm4sIHJlcGxhY2VtZW50KSB7XG5cdHJldHVybiB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFxuICogQHBhcmFtIHtudW1iZXJ9IHBvc2l0aW9uXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleG9mICh2YWx1ZSwgc2VhcmNoLCBwb3NpdGlvbikge1xuXHRyZXR1cm4gdmFsdWUuaW5kZXhPZihzZWFyY2gsIHBvc2l0aW9uKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFyYXQgKHZhbHVlLCBpbmRleCkge1xuXHRyZXR1cm4gdmFsdWUuY2hhckNvZGVBdChpbmRleCkgfCAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gYmVnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0ciAodmFsdWUsIGJlZ2luLCBlbmQpIHtcblx0cmV0dXJuIHZhbHVlLnNsaWNlKGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJsZW4gKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS5sZW5ndGhcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueVtdfSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2l6ZW9mICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUubGVuZ3RoXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge2FueVtdfSBhcnJheVxuICogQHJldHVybiB7YW55fVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kICh2YWx1ZSwgYXJyYXkpIHtcblx0cmV0dXJuIGFycmF5LnB1c2godmFsdWUpLCB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nW119IGFycmF5XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZSAoYXJyYXksIGNhbGxiYWNrKSB7XG5cdHJldHVybiBhcnJheS5tYXAoY2FsbGJhY2spLmpvaW4oJycpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJyYXlcbiAqIEBwYXJhbSB7UmVnRXhwfSBwYXR0ZXJuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlciAoYXJyYXksIHBhdHRlcm4pIHtcblx0cmV0dXJuIGFycmF5LmZpbHRlcihmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuICFtYXRjaCh2YWx1ZSwgcGF0dGVybikgfSlcbn1cbiIsImltcG9ydCB7ZnJvbSwgdHJpbSwgY2hhcmF0LCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCBhc3NpZ259IGZyb20gJy4vVXRpbGl0eS5qcydcblxuZXhwb3J0IHZhciBsaW5lID0gMVxuZXhwb3J0IHZhciBjb2x1bW4gPSAxXG5leHBvcnQgdmFyIGxlbmd0aCA9IDBcbmV4cG9ydCB2YXIgcG9zaXRpb24gPSAwXG5leHBvcnQgdmFyIGNoYXJhY3RlciA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVycyA9ICcnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdCB8IG51bGx9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0W10gfCBzdHJpbmd9IGNoaWxkcmVuXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHJldHVybiB7dmFsdWU6IHZhbHVlLCByb290OiByb290LCBwYXJlbnQ6IHBhcmVudCwgdHlwZTogdHlwZSwgcHJvcHM6IHByb3BzLCBjaGlsZHJlbjogY2hpbGRyZW4sIGxpbmU6IGxpbmUsIGNvbHVtbjogY29sdW1uLCBsZW5ndGg6IGxlbmd0aCwgcmV0dXJuOiAnJywgc2libGluZ3M6IHNpYmxpbmdzfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHkgKHJvb3QsIHByb3BzKSB7XG5cdHJldHVybiBhc3NpZ24obm9kZSgnJywgbnVsbCwgbnVsbCwgJycsIG51bGwsIG51bGwsIDAsIHJvb3Quc2libGluZ3MpLCByb290LCB7bGVuZ3RoOiAtcm9vdC5sZW5ndGh9LCBwcm9wcylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdCAocm9vdCkge1xuXHR3aGlsZSAocm9vdC5yb290KVxuXHRcdHJvb3QgPSBjb3B5KHJvb3Qucm9vdCwge2NoaWxkcmVuOiBbcm9vdF19KVxuXG5cdGFwcGVuZChyb290LCByb290LnNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXIgKCkge1xuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJldiAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uID4gMCA/IGNoYXJhdChjaGFyYWN0ZXJzLCAtLXBvc2l0aW9uKSA6IDBcblxuXHRpZiAoY29sdW1uLS0sIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZS0tXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHQgKCkge1xuXHRjaGFyYWN0ZXIgPSBwb3NpdGlvbiA8IGxlbmd0aCA/IGNoYXJhdChjaGFyYWN0ZXJzLCBwb3NpdGlvbisrKSA6IDBcblxuXHRpZiAoY29sdW1uKyssIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZSsrXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlZWsgKCkge1xuXHRyZXR1cm4gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhcmV0ICgpIHtcblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGljZSAoYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gc3Vic3RyKGNoYXJhY3RlcnMsIGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuICh0eXBlKSB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdC8vIFxcMCBcXHQgXFxuIFxcciBcXHMgd2hpdGVzcGFjZSB0b2tlblxuXHRcdGNhc2UgMDogY2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0cmV0dXJuIDVcblx0XHQvLyAhICsgLCAvID4gQCB+IGlzb2xhdGUgdG9rZW5cblx0XHRjYXNlIDMzOiBjYXNlIDQzOiBjYXNlIDQ0OiBjYXNlIDQ3OiBjYXNlIDYyOiBjYXNlIDY0OiBjYXNlIDEyNjpcblx0XHQvLyA7IHsgfSBicmVha3BvaW50IHRva2VuXG5cdFx0Y2FzZSA1OTogY2FzZSAxMjM6IGNhc2UgMTI1OlxuXHRcdFx0cmV0dXJuIDRcblx0XHQvLyA6IGFjY29tcGFuaWVkIHRva2VuXG5cdFx0Y2FzZSA1ODpcblx0XHRcdHJldHVybiAzXG5cdFx0Ly8gXCIgJyAoIFsgb3BlbmluZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA0MDogY2FzZSA5MTpcblx0XHRcdHJldHVybiAyXG5cdFx0Ly8gKSBdIGNsb3NpbmcgZGVsaW1pdCB0b2tlblxuXHRcdGNhc2UgNDE6IGNhc2UgOTM6XG5cdFx0XHRyZXR1cm4gMVxuXHR9XG5cblx0cmV0dXJuIDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBsaW5lID0gY29sdW1uID0gMSwgbGVuZ3RoID0gc3RybGVuKGNoYXJhY3RlcnMgPSB2YWx1ZSksIHBvc2l0aW9uID0gMCwgW11cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJzID0gJycsIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXQgKHR5cGUpIHtcblx0cmV0dXJuIHRyaW0oc2xpY2UocG9zaXRpb24gLSAxLCBkZWxpbWl0ZXIodHlwZSA9PT0gOTEgPyB0eXBlICsgMiA6IHR5cGUgPT09IDQwID8gdHlwZSArIDEgOiB0eXBlKSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyh0b2tlbml6ZXIoYWxsb2ModmFsdWUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hpdGVzcGFjZSAodHlwZSkge1xuXHR3aGlsZSAoY2hhcmFjdGVyID0gcGVlaygpKVxuXHRcdGlmIChjaGFyYWN0ZXIgPCAzMylcblx0XHRcdG5leHQoKVxuXHRcdGVsc2Vcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuIHRva2VuKHR5cGUpID4gMiB8fCB0b2tlbihjaGFyYWN0ZXIpID4gMyA/ICcnIDogJyAnXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemVyIChjaGlsZHJlbikge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAodG9rZW4oY2hhcmFjdGVyKSkge1xuXHRcdFx0Y2FzZSAwOiBhcHBlbmQoaWRlbnRpZmllcihwb3NpdGlvbiAtIDEpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgMjogYXBwZW5kKGRlbGltaXQoY2hhcmFjdGVyKSwgY2hpbGRyZW4pXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRkZWZhdWx0OiBhcHBlbmQoZnJvbShjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHR9XG5cblx0cmV0dXJuIGNoaWxkcmVuXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gY291bnRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwaW5nIChpbmRleCwgY291bnQpIHtcblx0d2hpbGUgKC0tY291bnQgJiYgbmV4dCgpKVxuXHRcdC8vIG5vdCAwLTkgQS1GIGEtZlxuXHRcdGlmIChjaGFyYWN0ZXIgPCA0OCB8fCBjaGFyYWN0ZXIgPiAxMDIgfHwgKGNoYXJhY3RlciA+IDU3ICYmIGNoYXJhY3RlciA8IDY1KSB8fCAoY2hhcmFjdGVyID4gNzAgJiYgY2hhcmFjdGVyIDwgOTcpKVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIGNhcmV0KCkgKyAoY291bnQgPCA2ICYmIHBlZWsoKSA9PSAzMiAmJiBuZXh0KCkgPT0gMzIpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ZXIgKHR5cGUpIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHRzd2l0Y2ggKGNoYXJhY3Rlcikge1xuXHRcdFx0Ly8gXSApIFwiICdcblx0XHRcdGNhc2UgdHlwZTpcblx0XHRcdFx0cmV0dXJuIHBvc2l0aW9uXG5cdFx0XHQvLyBcIiAnXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OlxuXHRcdFx0XHRpZiAodHlwZSAhPT0gMzQgJiYgdHlwZSAhPT0gMzkpXG5cdFx0XHRcdFx0ZGVsaW1pdGVyKGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmICh0eXBlID09PSA0MSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIodHlwZSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRuZXh0KClcblx0XHRcdFx0YnJlYWtcblx0XHR9XG5cblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudGVyICh0eXBlLCBpbmRleCkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdC8vIC8vXG5cdFx0aWYgKHR5cGUgKyBjaGFyYWN0ZXIgPT09IDQ3ICsgMTApXG5cdFx0XHRicmVha1xuXHRcdC8vIC8qXG5cdFx0ZWxzZSBpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDIgKyA0MiAmJiBwZWVrKCkgPT09IDQ3KVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gJy8qJyArIHNsaWNlKGluZGV4LCBwb3NpdGlvbiAtIDEpICsgJyonICsgZnJvbSh0eXBlID09PSA0NyA/IHR5cGUgOiBuZXh0KCkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyIChpbmRleCkge1xuXHR3aGlsZSAoIXRva2VuKHBlZWsoKSkpXG5cdFx0bmV4dCgpXG5cblx0cmV0dXJuIHNsaWNlKGluZGV4LCBwb3NpdGlvbilcbn1cbiIsImltcG9ydCB7Q09NTUVOVCwgUlVMRVNFVCwgREVDTEFSQVRJT059IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7YWJzLCBjaGFyYXQsIHRyaW0sIGZyb20sIHNpemVvZiwgc3RybGVuLCBzdWJzdHIsIGFwcGVuZCwgcmVwbGFjZSwgaW5kZXhvZn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuaW1wb3J0IHtub2RlLCBjaGFyLCBwcmV2LCBuZXh0LCBwZWVrLCBjYXJldCwgYWxsb2MsIGRlYWxsb2MsIGRlbGltaXQsIHdoaXRlc3BhY2UsIGVzY2FwaW5nLCBpZGVudGlmaWVyLCBjb21tZW50ZXJ9IGZyb20gJy4vVG9rZW5pemVyLmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7b2JqZWN0W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyhwYXJzZSgnJywgbnVsbCwgbnVsbCwgbnVsbCwgWycnXSwgdmFsdWUgPSBhbGxvYyh2YWx1ZSksIDAsIFswXSwgdmFsdWUpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNldHNcbiAqIEBwYXJhbSB7bnVtYmVyW119IHBzZXVkb1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBkZWNsYXJhdGlvbnNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBydWxlLCBydWxlcywgcnVsZXNldHMsIHBzZXVkbywgcG9pbnRzLCBkZWNsYXJhdGlvbnMpIHtcblx0dmFyIGluZGV4ID0gMFxuXHR2YXIgb2Zmc2V0ID0gMFxuXHR2YXIgbGVuZ3RoID0gcHNldWRvXG5cdHZhciBhdHJ1bGUgPSAwXG5cdHZhciBwcm9wZXJ0eSA9IDBcblx0dmFyIHByZXZpb3VzID0gMFxuXHR2YXIgdmFyaWFibGUgPSAxXG5cdHZhciBzY2FubmluZyA9IDFcblx0dmFyIGFtcGVyc2FuZCA9IDFcblx0dmFyIGNoYXJhY3RlciA9IDBcblx0dmFyIHR5cGUgPSAnJ1xuXHR2YXIgcHJvcHMgPSBydWxlc1xuXHR2YXIgY2hpbGRyZW4gPSBydWxlc2V0c1xuXHR2YXIgcmVmZXJlbmNlID0gcnVsZVxuXHR2YXIgY2hhcmFjdGVycyA9IHR5cGVcblxuXHR3aGlsZSAoc2Nhbm5pbmcpXG5cdFx0c3dpdGNoIChwcmV2aW91cyA9IGNoYXJhY3RlciwgY2hhcmFjdGVyID0gbmV4dCgpKSB7XG5cdFx0XHQvLyAoXG5cdFx0XHRjYXNlIDQwOlxuXHRcdFx0XHRpZiAocHJldmlvdXMgIT0gMTA4ICYmIGNoYXJhdChjaGFyYWN0ZXJzLCBsZW5ndGggLSAxKSA9PSA1OCkge1xuXHRcdFx0XHRcdGlmIChpbmRleG9mKGNoYXJhY3RlcnMgKz0gcmVwbGFjZShkZWxpbWl0KGNoYXJhY3RlciksICcmJywgJyZcXGYnKSwgJyZcXGYnLCBhYnMoaW5kZXggPyBwb2ludHNbaW5kZXggLSAxXSA6IDApKSAhPSAtMSlcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IC0xXG5cdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0fVxuXHRcdFx0Ly8gXCIgJyBbXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OiBjYXNlIDkxOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQoY2hhcmFjdGVyKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFx0IFxcbiBcXHIgXFxzXG5cdFx0XHRjYXNlIDk6IGNhc2UgMTA6IGNhc2UgMTM6IGNhc2UgMzI6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gd2hpdGVzcGFjZShwcmV2aW91cylcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IGVzY2FwaW5nKGNhcmV0KCkgLSAxLCA3KVxuXHRcdFx0XHRjb250aW51ZVxuXHRcdFx0Ly8gL1xuXHRcdFx0Y2FzZSA0Nzpcblx0XHRcdFx0c3dpdGNoIChwZWVrKCkpIHtcblx0XHRcdFx0XHRjYXNlIDQyOiBjYXNlIDQ3OlxuXHRcdFx0XHRcdFx0YXBwZW5kKGNvbW1lbnQoY29tbWVudGVyKG5leHQoKSwgY2FyZXQoKSksIHJvb3QsIHBhcmVudCwgZGVjbGFyYXRpb25zKSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0Y2hhcmFjdGVycyArPSAnLydcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8ge1xuXHRcdFx0Y2FzZSAxMjMgKiB2YXJpYWJsZTpcblx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gc3RybGVuKGNoYXJhY3RlcnMpICogYW1wZXJzYW5kXG5cdFx0XHQvLyB9IDsgXFwwXG5cdFx0XHRjYXNlIDEyNSAqIHZhcmlhYmxlOiBjYXNlIDU5OiBjYXNlIDA6XG5cdFx0XHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHRcdFx0Ly8gXFwwIH1cblx0XHRcdFx0XHRjYXNlIDA6IGNhc2UgMTI1OiBzY2FubmluZyA9IDBcblx0XHRcdFx0XHQvLyA7XG5cdFx0XHRcdFx0Y2FzZSA1OSArIG9mZnNldDogaWYgKGFtcGVyc2FuZCA9PSAtMSkgY2hhcmFjdGVycyA9IHJlcGxhY2UoY2hhcmFjdGVycywgL1xcZi9nLCAnJylcblx0XHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA+IDAgJiYgKHN0cmxlbihjaGFyYWN0ZXJzKSAtIGxlbmd0aCkpXG5cdFx0XHRcdFx0XHRcdGFwcGVuZChwcm9wZXJ0eSA+IDMyID8gZGVjbGFyYXRpb24oY2hhcmFjdGVycyArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAxLCBkZWNsYXJhdGlvbnMpIDogZGVjbGFyYXRpb24ocmVwbGFjZShjaGFyYWN0ZXJzLCAnICcsICcnKSArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAyLCBkZWNsYXJhdGlvbnMpLCBkZWNsYXJhdGlvbnMpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIEAgO1xuXHRcdFx0XHRcdGNhc2UgNTk6IGNoYXJhY3RlcnMgKz0gJzsnXG5cdFx0XHRcdFx0Ly8geyBydWxlL2F0LXJ1bGVcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0YXBwZW5kKHJlZmVyZW5jZSA9IHJ1bGVzZXQoY2hhcmFjdGVycywgcm9vdCwgcGFyZW50LCBpbmRleCwgb2Zmc2V0LCBydWxlcywgcG9pbnRzLCB0eXBlLCBwcm9wcyA9IFtdLCBjaGlsZHJlbiA9IFtdLCBsZW5ndGgsIHJ1bGVzZXRzKSwgcnVsZXNldHMpXG5cblx0XHRcdFx0XHRcdGlmIChjaGFyYWN0ZXIgPT09IDEyMylcblx0XHRcdFx0XHRcdFx0aWYgKG9mZnNldCA9PT0gMClcblx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByb290LCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcHJvcHMsIHJ1bGVzZXRzLCBsZW5ndGgsIHBvaW50cywgY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGF0cnVsZSA9PT0gOTkgJiYgY2hhcmF0KGNoYXJhY3RlcnMsIDMpID09PSAxMTAgPyAxMDAgOiBhdHJ1bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGQgbCBtIHNcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTAwOiBjYXNlIDEwODogY2FzZSAxMDk6IGNhc2UgMTE1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZSh2YWx1ZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHJ1bGUgJiYgYXBwZW5kKHJ1bGVzZXQodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCAwLCAwLCBydWxlcywgcG9pbnRzLCB0eXBlLCBydWxlcywgcHJvcHMgPSBbXSwgbGVuZ3RoLCBjaGlsZHJlbiksIGNoaWxkcmVuKSwgcnVsZXMsIGNoaWxkcmVuLCBsZW5ndGgsIHBvaW50cywgcnVsZSA/IHByb3BzIDogY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBbJyddLCBjaGlsZHJlbiwgMCwgcG9pbnRzLCBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbmRleCA9IG9mZnNldCA9IHByb3BlcnR5ID0gMCwgdmFyaWFibGUgPSBhbXBlcnNhbmQgPSAxLCB0eXBlID0gY2hhcmFjdGVycyA9ICcnLCBsZW5ndGggPSBwc2V1ZG9cblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIDpcblx0XHRcdGNhc2UgNTg6XG5cdFx0XHRcdGxlbmd0aCA9IDEgKyBzdHJsZW4oY2hhcmFjdGVycyksIHByb3BlcnR5ID0gcHJldmlvdXNcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmICh2YXJpYWJsZSA8IDEpXG5cdFx0XHRcdFx0aWYgKGNoYXJhY3RlciA9PSAxMjMpXG5cdFx0XHRcdFx0XHQtLXZhcmlhYmxlXG5cdFx0XHRcdFx0ZWxzZSBpZiAoY2hhcmFjdGVyID09IDEyNSAmJiB2YXJpYWJsZSsrID09IDAgJiYgcHJldigpID09IDEyNSlcblx0XHRcdFx0XHRcdGNvbnRpbnVlXG5cblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXJzICs9IGZyb20oY2hhcmFjdGVyKSwgY2hhcmFjdGVyICogdmFyaWFibGUpIHtcblx0XHRcdFx0XHQvLyAmXG5cdFx0XHRcdFx0Y2FzZSAzODpcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IG9mZnNldCA+IDAgPyAxIDogKGNoYXJhY3RlcnMgKz0gJ1xcZicsIC0xKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAsXG5cdFx0XHRcdFx0Y2FzZSA0NDpcblx0XHRcdFx0XHRcdHBvaW50c1tpbmRleCsrXSA9IChzdHJsZW4oY2hhcmFjdGVycykgLSAxKSAqIGFtcGVyc2FuZCwgYW1wZXJzYW5kID0gMVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAXG5cdFx0XHRcdFx0Y2FzZSA2NDpcblx0XHRcdFx0XHRcdC8vIC1cblx0XHRcdFx0XHRcdGlmIChwZWVrKCkgPT09IDQ1KVxuXHRcdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQobmV4dCgpKVxuXG5cdFx0XHRcdFx0XHRhdHJ1bGUgPSBwZWVrKCksIG9mZnNldCA9IGxlbmd0aCA9IHN0cmxlbih0eXBlID0gY2hhcmFjdGVycyArPSBpZGVudGlmaWVyKGNhcmV0KCkpKSwgY2hhcmFjdGVyKytcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdGNhc2UgNDU6XG5cdFx0XHRcdFx0XHRpZiAocHJldmlvdXMgPT09IDQ1ICYmIHN0cmxlbihjaGFyYWN0ZXJzKSA9PSAyKVxuXHRcdFx0XHRcdFx0XHR2YXJpYWJsZSA9IDBcblx0XHRcdFx0fVxuXHRcdH1cblxuXHRyZXR1cm4gcnVsZXNldHNcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNldCAodmFsdWUsIHJvb3QsIHBhcmVudCwgaW5kZXgsIG9mZnNldCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHZhciBwb3N0ID0gb2Zmc2V0IC0gMVxuXHR2YXIgcnVsZSA9IG9mZnNldCA9PT0gMCA/IHJ1bGVzIDogWycnXVxuXHR2YXIgc2l6ZSA9IHNpemVvZihydWxlKVxuXG5cdGZvciAodmFyIGkgPSAwLCBqID0gMCwgayA9IDA7IGkgPCBpbmRleDsgKytpKVxuXHRcdGZvciAodmFyIHggPSAwLCB5ID0gc3Vic3RyKHZhbHVlLCBwb3N0ICsgMSwgcG9zdCA9IGFicyhqID0gcG9pbnRzW2ldKSksIHogPSB2YWx1ZTsgeCA8IHNpemU7ICsreClcblx0XHRcdGlmICh6ID0gdHJpbShqID4gMCA/IHJ1bGVbeF0gKyAnICcgKyB5IDogcmVwbGFjZSh5LCAvJlxcZi9nLCBydWxlW3hdKSkpXG5cdFx0XHRcdHByb3BzW2srK10gPSB6XG5cblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgb2Zmc2V0ID09PSAwID8gUlVMRVNFVCA6IHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoLCBzaWJsaW5ncylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtvYmplY3RbXX0gc2libGluZ3NcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1lbnQgKHZhbHVlLCByb290LCBwYXJlbnQsIHNpYmxpbmdzKSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIENPTU1FTlQsIGZyb20oY2hhcigpKSwgc3Vic3RyKHZhbHVlLCAyLCAtMiksIDAsIHNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyYXRpb24gKHZhbHVlLCByb290LCBwYXJlbnQsIGxlbmd0aCwgc2libGluZ3MpIHtcblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgREVDTEFSQVRJT04sIHN1YnN0cih2YWx1ZSwgMCwgbGVuZ3RoKSwgc3Vic3RyKHZhbHVlLCBsZW5ndGggKyAxLCAtMSksIGxlbmd0aCwgc2libGluZ3MpXG59XG4iLCJpbXBvcnQge01TLCBNT1osIFdFQktJVH0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHtoYXNoLCBjaGFyYXQsIHN0cmxlbiwgaW5kZXhvZiwgcmVwbGFjZSwgc3Vic3RyLCBtYXRjaH0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeCAodmFsdWUsIGxlbmd0aCwgY2hpbGRyZW4pIHtcblx0c3dpdGNoIChoYXNoKHZhbHVlLCBsZW5ndGgpKSB7XG5cdFx0Ly8gY29sb3ItYWRqdXN0XG5cdFx0Y2FzZSA1MTAzOlxuXHRcdFx0cmV0dXJuIFdFQktJVCArICdwcmludC0nICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFuaW1hdGlvbiwgYW5pbWF0aW9uLShkZWxheXxkaXJlY3Rpb258ZHVyYXRpb258ZmlsbC1tb2RlfGl0ZXJhdGlvbi1jb3VudHxuYW1lfHBsYXktc3RhdGV8dGltaW5nLWZ1bmN0aW9uKVxuXHRcdGNhc2UgNTczNzogY2FzZSA0MjAxOiBjYXNlIDMxNzc6IGNhc2UgMzQzMzogY2FzZSAxNjQxOiBjYXNlIDQ0NTc6IGNhc2UgMjkyMTpcblx0XHQvLyB0ZXh0LWRlY29yYXRpb24sIGZpbHRlciwgY2xpcC1wYXRoLCBiYWNrZmFjZS12aXNpYmlsaXR5LCBjb2x1bW4sIGJveC1kZWNvcmF0aW9uLWJyZWFrXG5cdFx0Y2FzZSA1NTcyOiBjYXNlIDYzNTY6IGNhc2UgNTg0NDogY2FzZSAzMTkxOiBjYXNlIDY2NDU6IGNhc2UgMzAwNTpcblx0XHQvLyBtYXNrLCBtYXNrLWltYWdlLCBtYXNrLShtb2RlfGNsaXB8c2l6ZSksIG1hc2stKHJlcGVhdHxvcmlnaW4pLCBtYXNrLXBvc2l0aW9uLCBtYXNrLWNvbXBvc2l0ZSxcblx0XHRjYXNlIDYzOTE6IGNhc2UgNTg3OTogY2FzZSA1NjIzOiBjYXNlIDYxMzU6IGNhc2UgNDU5OTogY2FzZSA0ODU1OlxuXHRcdC8vIGJhY2tncm91bmQtY2xpcCwgY29sdW1ucywgY29sdW1uLShjb3VudHxmaWxsfGdhcHxydWxlfHJ1bGUtY29sb3J8cnVsZS1zdHlsZXxydWxlLXdpZHRofHNwYW58d2lkdGgpXG5cdFx0Y2FzZSA0MjE1OiBjYXNlIDYzODk6IGNhc2UgNTEwOTogY2FzZSA1MzY1OiBjYXNlIDU2MjE6IGNhc2UgMzgyOTpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gdGFiLXNpemVcblx0XHRjYXNlIDQ3ODk6XG5cdFx0XHRyZXR1cm4gTU9aICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFwcGVhcmFuY2UsIHVzZXItc2VsZWN0LCB0cmFuc2Zvcm0sIGh5cGhlbnMsIHRleHQtc2l6ZS1hZGp1c3Rcblx0XHRjYXNlIDUzNDk6IGNhc2UgNDI0NjogY2FzZSA0ODEwOiBjYXNlIDY5Njg6IGNhc2UgMjc1Njpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1PWiArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gd3JpdGluZy1tb2RlXG5cdFx0Y2FzZSA1OTM2OlxuXHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDExKSkge1xuXHRcdFx0XHQvLyB2ZXJ0aWNhbC1sKHIpXG5cdFx0XHRcdGNhc2UgMTE0OlxuXHRcdFx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAndGInKSArIHZhbHVlXG5cdFx0XHRcdC8vIHZlcnRpY2FsLXIobClcblx0XHRcdFx0Y2FzZSAxMDg6XG5cdFx0XHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICd0Yi1ybCcpICsgdmFsdWVcblx0XHRcdFx0Ly8gaG9yaXpvbnRhbCgtKXRiXG5cdFx0XHRcdGNhc2UgNDU6XG5cdFx0XHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICdscicpICsgdmFsdWVcblx0XHRcdFx0Ly8gZGVmYXVsdDogZmFsbHRocm91Z2ggdG8gYmVsb3dcblx0XHRcdH1cblx0XHQvLyBmbGV4LCBmbGV4LWRpcmVjdGlvbiwgc2Nyb2xsLXNuYXAtdHlwZSwgd3JpdGluZy1tb2RlXG5cdFx0Y2FzZSA2ODI4OiBjYXNlIDQyNjg6IGNhc2UgMjkwMzpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIG9yZGVyXG5cdFx0Y2FzZSA2MTY1OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC0nICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFsaWduLWl0ZW1zXG5cdFx0Y2FzZSA1MTg3OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgcmVwbGFjZSh2YWx1ZSwgLyhcXHcrKS4rKDpbXl0rKS8sIFdFQktJVCArICdib3gtJDEkMicgKyBNUyArICdmbGV4LSQxJDInKSArIHZhbHVlXG5cdFx0Ly8gYWxpZ24tc2VsZlxuXHRcdGNhc2UgNTQ0Mzpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgJ2ZsZXgtaXRlbS0nICsgcmVwbGFjZSh2YWx1ZSwgL2ZsZXgtfC1zZWxmL2csICcnKSArICghbWF0Y2godmFsdWUsIC9mbGV4LXxiYXNlbGluZS8pID8gTVMgKyAnZ3JpZC1yb3ctJyArIHJlcGxhY2UodmFsdWUsIC9mbGV4LXwtc2VsZi9nLCAnJykgOiAnJykgKyB2YWx1ZVxuXHRcdC8vIGFsaWduLWNvbnRlbnRcblx0XHRjYXNlIDQ2NzU6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LWxpbmUtcGFjaycgKyByZXBsYWNlKHZhbHVlLCAvYWxpZ24tY29udGVudHxmbGV4LXwtc2VsZi9nLCAnJykgKyB2YWx1ZVxuXHRcdC8vIGZsZXgtc2hyaW5rXG5cdFx0Y2FzZSA1NTQ4OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAnc2hyaW5rJywgJ25lZ2F0aXZlJykgKyB2YWx1ZVxuXHRcdC8vIGZsZXgtYmFzaXNcblx0XHRjYXNlIDUyOTI6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdiYXNpcycsICdwcmVmZXJyZWQtc2l6ZScpICsgdmFsdWVcblx0XHQvLyBmbGV4LWdyb3dcblx0XHRjYXNlIDYwNjA6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgJ2JveC0nICsgcmVwbGFjZSh2YWx1ZSwgJy1ncm93JywgJycpICsgV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdncm93JywgJ3Bvc2l0aXZlJykgKyB2YWx1ZVxuXHRcdC8vIHRyYW5zaXRpb25cblx0XHRjYXNlIDQ1NTQ6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgcmVwbGFjZSh2YWx1ZSwgLyhbXi1dKSh0cmFuc2Zvcm0pL2csICckMScgKyBXRUJLSVQgKyAnJDInKSArIHZhbHVlXG5cdFx0Ly8gY3Vyc29yXG5cdFx0Y2FzZSA2MTg3OlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UocmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKHpvb20tfGdyYWIpLywgV0VCS0lUICsgJyQxJyksIC8oaW1hZ2Utc2V0KS8sIFdFQktJVCArICckMScpLCB2YWx1ZSwgJycpICsgdmFsdWVcblx0XHQvLyBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kLWltYWdlXG5cdFx0Y2FzZSA1NDk1OiBjYXNlIDM5NTk6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyhpbWFnZS1zZXRcXChbXl0qKS8sIFdFQktJVCArICckMScgKyAnJGAkMScpXG5cdFx0Ly8ganVzdGlmeS1jb250ZW50XG5cdFx0Y2FzZSA0OTY4OlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UocmVwbGFjZSh2YWx1ZSwgLyguKzopKGZsZXgtKT8oLiopLywgV0VCS0lUICsgJ2JveC1wYWNrOiQzJyArIE1TICsgJ2ZsZXgtcGFjazokMycpLCAvcy4rLWJbXjtdKy8sICdqdXN0aWZ5JykgKyBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8ganVzdGlmeS1zZWxmXG5cdFx0Y2FzZSA0MjAwOlxuXHRcdFx0aWYgKCFtYXRjaCh2YWx1ZSwgL2ZsZXgtfGJhc2VsaW5lLykpIHJldHVybiBNUyArICdncmlkLWNvbHVtbi1hbGlnbicgKyBzdWJzdHIodmFsdWUsIGxlbmd0aCkgKyB2YWx1ZVxuXHRcdFx0YnJlYWtcblx0XHQvLyBncmlkLXRlbXBsYXRlLShjb2x1bW5zfHJvd3MpXG5cdFx0Y2FzZSAyNTkyOiBjYXNlIDMzNjA6XG5cdFx0XHRyZXR1cm4gTVMgKyByZXBsYWNlKHZhbHVlLCAndGVtcGxhdGUtJywgJycpICsgdmFsdWVcblx0XHQvLyBncmlkLShyb3d8Y29sdW1uKS1zdGFydFxuXHRcdGNhc2UgNDM4NDogY2FzZSAzNjE2OlxuXHRcdFx0aWYgKGNoaWxkcmVuICYmIGNoaWxkcmVuLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQsIGluZGV4KSB7IHJldHVybiBsZW5ndGggPSBpbmRleCwgbWF0Y2goZWxlbWVudC5wcm9wcywgL2dyaWQtXFx3Ky1lbmQvKSB9KSkge1xuXHRcdFx0XHRyZXR1cm4gfmluZGV4b2YodmFsdWUgKyAoY2hpbGRyZW4gPSBjaGlsZHJlbltsZW5ndGhdLnZhbHVlKSwgJ3NwYW4nLCAwKSA/IHZhbHVlIDogKE1TICsgcmVwbGFjZSh2YWx1ZSwgJy1zdGFydCcsICcnKSArIHZhbHVlICsgTVMgKyAnZ3JpZC1yb3ctc3BhbjonICsgKH5pbmRleG9mKGNoaWxkcmVuLCAnc3BhbicsIDApID8gbWF0Y2goY2hpbGRyZW4sIC9cXGQrLykgOiArbWF0Y2goY2hpbGRyZW4sIC9cXGQrLykgLSArbWF0Y2godmFsdWUsIC9cXGQrLykpICsgJzsnKVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIE1TICsgcmVwbGFjZSh2YWx1ZSwgJy1zdGFydCcsICcnKSArIHZhbHVlXG5cdFx0Ly8gZ3JpZC0ocm93fGNvbHVtbiktZW5kXG5cdFx0Y2FzZSA0ODk2OiBjYXNlIDQxMjg6XG5cdFx0XHRyZXR1cm4gKGNoaWxkcmVuICYmIGNoaWxkcmVuLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoKGVsZW1lbnQucHJvcHMsIC9ncmlkLVxcdystc3RhcnQvKSB9KSkgPyB2YWx1ZSA6IE1TICsgcmVwbGFjZShyZXBsYWNlKHZhbHVlLCAnLWVuZCcsICctc3BhbicpLCAnc3BhbiAnLCAnJykgKyB2YWx1ZVxuXHRcdC8vIChtYXJnaW58cGFkZGluZyktaW5saW5lLShzdGFydHxlbmQpXG5cdFx0Y2FzZSA0MDk1OiBjYXNlIDM1ODM6IGNhc2UgNDA2ODogY2FzZSAyNTMyOlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLispLWlubGluZSguKykvLCBXRUJLSVQgKyAnJDEkMicpICsgdmFsdWVcblx0XHQvLyAobWlufG1heCk/KHdpZHRofGhlaWdodHxpbmxpbmUtc2l6ZXxibG9jay1zaXplKVxuXHRcdGNhc2UgODExNjogY2FzZSA3MDU5OiBjYXNlIDU3NTM6IGNhc2UgNTUzNTpcblx0XHRjYXNlIDU0NDU6IGNhc2UgNTcwMTogY2FzZSA0OTMzOiBjYXNlIDQ2Nzc6XG5cdFx0Y2FzZSA1NTMzOiBjYXNlIDU3ODk6IGNhc2UgNTAyMTogY2FzZSA0NzY1OlxuXHRcdFx0Ly8gc3RyZXRjaCwgbWF4LWNvbnRlbnQsIG1pbi1jb250ZW50LCBmaWxsLWF2YWlsYWJsZVxuXHRcdFx0aWYgKHN0cmxlbih2YWx1ZSkgLSAxIC0gbGVuZ3RoID4gNilcblx0XHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDEpKSB7XG5cdFx0XHRcdFx0Ly8gKG0pYXgtY29udGVudCwgKG0paW4tY29udGVudFxuXHRcdFx0XHRcdGNhc2UgMTA5OlxuXHRcdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdFx0aWYgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgNCkgIT09IDQ1KVxuXHRcdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIChmKWlsbC1hdmFpbGFibGUsIChmKWl0LWNvbnRlbnRcblx0XHRcdFx0XHRjYXNlIDEwMjpcblx0XHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rOikoLispLShbXl0rKS8sICckMScgKyBXRUJLSVQgKyAnJDItJDMnICsgJyQxJyArIE1PWiArIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDMpID09IDEwOCA/ICckMycgOiAnJDItJDMnKSkgKyB2YWx1ZVxuXHRcdFx0XHRcdC8vIChzKXRyZXRjaFxuXHRcdFx0XHRcdGNhc2UgMTE1OlxuXHRcdFx0XHRcdFx0cmV0dXJuIH5pbmRleG9mKHZhbHVlLCAnc3RyZXRjaCcsIDApID8gcHJlZml4KHJlcGxhY2UodmFsdWUsICdzdHJldGNoJywgJ2ZpbGwtYXZhaWxhYmxlJyksIGxlbmd0aCwgY2hpbGRyZW4pICsgdmFsdWUgOiB2YWx1ZVxuXHRcdFx0XHR9XG5cdFx0XHRicmVha1xuXHRcdC8vIGdyaWQtKGNvbHVtbnxyb3cpXG5cdFx0Y2FzZSA1MTUyOiBjYXNlIDU5MjA6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKz8pOihcXGQrKShcXHMqXFwvXFxzKihzcGFuKT9cXHMqKFxcZCspKT8oLiopLywgZnVuY3Rpb24gKF8sIGEsIGIsIGMsIGQsIGUsIGYpIHsgcmV0dXJuIChNUyArIGEgKyAnOicgKyBiICsgZikgKyAoYyA/IChNUyArIGEgKyAnLXNwYW46JyArIChkID8gZSA6ICtlIC0gK2IpKSArIGYgOiAnJykgKyB2YWx1ZSB9KVxuXHRcdC8vIHBvc2l0aW9uOiBzdGlja3lcblx0XHRjYXNlIDQ5NDk6XG5cdFx0XHQvLyBzdGljayh5KT9cblx0XHRcdGlmIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDYpID09PSAxMjEpXG5cdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAnOicsICc6JyArIFdFQktJVCkgKyB2YWx1ZVxuXHRcdFx0YnJlYWtcblx0XHQvLyBkaXNwbGF5OiAoZmxleHxpbmxpbmUtZmxleHxncmlkfGlubGluZS1ncmlkKVxuXHRcdGNhc2UgNjQ0NDpcblx0XHRcdHN3aXRjaCAoY2hhcmF0KHZhbHVlLCBjaGFyYXQodmFsdWUsIDE0KSA9PT0gNDUgPyAxOCA6IDExKSkge1xuXHRcdFx0XHQvLyAoaW5saW5lLSk/ZmxlKHgpXG5cdFx0XHRcdGNhc2UgMTIwOlxuXHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rOikoW147XFxzIV0rKSg7fChcXHMrKT8hLispPy8sICckMScgKyBXRUJLSVQgKyAoY2hhcmF0KHZhbHVlLCAxNCkgPT09IDQ1ID8gJ2lubGluZS0nIDogJycpICsgJ2JveCQzJyArICckMScgKyBXRUJLSVQgKyAnJDIkMycgKyAnJDEnICsgTVMgKyAnJDJib3gkMycpICsgdmFsdWVcblx0XHRcdFx0Ly8gKGlubGluZS0pP2dyaShkKVxuXHRcdFx0XHRjYXNlIDEwMDpcblx0XHRcdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgJzonLCAnOicgKyBNUykgKyB2YWx1ZVxuXHRcdFx0fVxuXHRcdFx0YnJlYWtcblx0XHQvLyBzY3JvbGwtbWFyZ2luLCBzY3JvbGwtbWFyZ2luLSh0b3B8cmlnaHR8Ym90dG9tfGxlZnQpXG5cdFx0Y2FzZSA1NzE5OiBjYXNlIDI2NDc6IGNhc2UgMjEzNTogY2FzZSAzOTI3OiBjYXNlIDIzOTE6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgJ3Njcm9sbC0nLCAnc2Nyb2xsLXNuYXAtJykgKyB2YWx1ZVxuXHR9XG5cblx0cmV0dXJuIHZhbHVlXG59XG4iLCJpbXBvcnQge0lNUE9SVCwgTEFZRVIsIENPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OLCBLRVlGUkFNRVN9IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7c3RybGVufSBmcm9tICcuL1V0aWxpdHkuanMnXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUgKGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHR2YXIgb3V0cHV0ID0gJydcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxuXHRcdG91dHB1dCArPSBjYWxsYmFjayhjaGlsZHJlbltpXSwgaSwgY2hpbGRyZW4sIGNhbGxiYWNrKSB8fCAnJ1xuXG5cdHJldHVybiBvdXRwdXRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdGNhc2UgTEFZRVI6IGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgYnJlYWtcblx0XHRjYXNlIElNUE9SVDogY2FzZSBERUNMQVJBVElPTjogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC5yZXR1cm4gfHwgZWxlbWVudC52YWx1ZVxuXHRcdGNhc2UgQ09NTUVOVDogcmV0dXJuICcnXG5cdFx0Y2FzZSBLRVlGUkFNRVM6IHJldHVybiBlbGVtZW50LnJldHVybiA9IGVsZW1lbnQudmFsdWUgKyAneycgKyBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spICsgJ30nXG5cdFx0Y2FzZSBSVUxFU0VUOiBpZiAoIXN0cmxlbihlbGVtZW50LnZhbHVlID0gZWxlbWVudC5wcm9wcy5qb2luKCcsJykpKSByZXR1cm4gJydcblx0fVxuXG5cdHJldHVybiBzdHJsZW4oY2hpbGRyZW4gPSBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spKSA/IGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIGNoaWxkcmVuICsgJ30nIDogJydcbn1cbiIsImltcG9ydCB7TVMsIE1PWiwgV0VCS0lULCBSVUxFU0VULCBLRVlGUkFNRVMsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge21hdGNoLCBjaGFyYXQsIHN1YnN0ciwgc3RybGVuLCBzaXplb2YsIHJlcGxhY2UsIGNvbWJpbmUsIGZpbHRlciwgYXNzaWdufSBmcm9tICcuL1V0aWxpdHkuanMnXG5pbXBvcnQge2NvcHksIGxpZnQsIHRva2VuaXplfSBmcm9tICcuL1Rva2VuaXplci5qcydcbmltcG9ydCB7c2VyaWFsaXplfSBmcm9tICcuL1NlcmlhbGl6ZXIuanMnXG5pbXBvcnQge3ByZWZpeH0gZnJvbSAnLi9QcmVmaXhlci5qcydcblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9uW119IGNvbGxlY3Rpb25cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWlkZGxld2FyZSAoY29sbGVjdGlvbikge1xuXHR2YXIgbGVuZ3RoID0gc2l6ZW9mKGNvbGxlY3Rpb24pXG5cblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdFx0dmFyIG91dHB1dCA9ICcnXG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKVxuXHRcdFx0b3V0cHV0ICs9IGNvbGxlY3Rpb25baV0oZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykgfHwgJydcblxuXHRcdHJldHVybiBvdXRwdXRcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzaGVldCAoY2FsbGJhY2spIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG5cdFx0aWYgKCFlbGVtZW50LnJvb3QpXG5cdFx0XHRpZiAoZWxlbWVudCA9IGVsZW1lbnQucmV0dXJuKVxuXHRcdFx0XHRjYWxsYmFjayhlbGVtZW50KVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhlciAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRpZiAoZWxlbWVudC5sZW5ndGggPiAtMSlcblx0XHRpZiAoIWVsZW1lbnQucmV0dXJuKVxuXHRcdFx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRcdFx0Y2FzZSBERUNMQVJBVElPTjogZWxlbWVudC5yZXR1cm4gPSBwcmVmaXgoZWxlbWVudC52YWx1ZSwgZWxlbWVudC5sZW5ndGgsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRjYXNlIEtFWUZSQU1FUzpcblx0XHRcdFx0XHRyZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHt2YWx1ZTogcmVwbGFjZShlbGVtZW50LnZhbHVlLCAnQCcsICdAJyArIFdFQktJVCl9KV0sIGNhbGxiYWNrKVxuXHRcdFx0XHRjYXNlIFJVTEVTRVQ6XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnQubGVuZ3RoKVxuXHRcdFx0XHRcdFx0cmV0dXJuIGNvbWJpbmUoY2hpbGRyZW4gPSBlbGVtZW50LnByb3BzLCBmdW5jdGlvbiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChtYXRjaCh2YWx1ZSwgY2FsbGJhY2sgPSAvKDo6cGxhY1xcdyt8OnJlYWQtXFx3KykvKSkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIDpyZWFkLShvbmx5fHdyaXRlKVxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJzpyZWFkLW9ubHknOiBjYXNlICc6cmVhZC13cml0ZSc6XG5cdFx0XHRcdFx0XHRcdFx0XHRsaWZ0KGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocmVhZC1cXHcrKS8sICc6JyArIE1PWiArICckMScpXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3ZhbHVlXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0YXNzaWduKGVsZW1lbnQsIHtwcm9wczogZmlsdGVyKGNoaWxkcmVuLCBjYWxsYmFjayl9KVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0XHQvLyA6cGxhY2Vob2xkZXJcblx0XHRcdFx0XHRcdFx0XHRjYXNlICc6OnBsYWNlaG9sZGVyJzpcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBXRUJLSVQgKyAnaW5wdXQtJDEnKV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCBNUyArICdpbnB1dC0kMScpXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3ZhbHVlXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0YXNzaWduKGVsZW1lbnQsIHtwcm9wczogZmlsdGVyKGNoaWxkcmVuLCBjYWxsYmFjayl9KVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHJldHVybiAnJ1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZXNwYWNlIChlbGVtZW50KSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBSVUxFU0VUOlxuXHRcdFx0ZWxlbWVudC5wcm9wcyA9IGVsZW1lbnQucHJvcHMubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuXHRcdFx0XHRyZXR1cm4gY29tYmluZSh0b2tlbml6ZSh2YWx1ZSksIGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIGNoaWxkcmVuKSB7XG5cdFx0XHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIDApKSB7XG5cdFx0XHRcdFx0XHQvLyBcXGZcblx0XHRcdFx0XHRcdGNhc2UgMTI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzdWJzdHIodmFsdWUsIDEsIHN0cmxlbih2YWx1ZSkpXG5cdFx0XHRcdFx0XHQvLyBcXDAgKCArID4gflxuXHRcdFx0XHRcdFx0Y2FzZSAwOiBjYXNlIDQwOiBjYXNlIDQzOiBjYXNlIDYyOiBjYXNlIDEyNjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0XHQvLyA6XG5cdFx0XHRcdFx0XHRjYXNlIDU4OlxuXHRcdFx0XHRcdFx0XHRpZiAoY2hpbGRyZW5bKytpbmRleF0gPT09ICdnbG9iYWwnKVxuXHRcdFx0XHRcdFx0XHRcdGNoaWxkcmVuW2luZGV4XSA9ICcnLCBjaGlsZHJlblsrK2luZGV4XSA9ICdcXGYnICsgc3Vic3RyKGNoaWxkcmVuW2luZGV4XSwgaW5kZXggPSAxLCAtMSlcblx0XHRcdFx0XHRcdC8vIFxcc1xuXHRcdFx0XHRcdFx0Y2FzZSAzMjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGluZGV4ID09PSAxID8gJycgOiB2YWx1ZVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChpbmRleCkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgMDogZWxlbWVudCA9IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2l6ZW9mKGNoaWxkcmVuKSA+IDEgPyAnJyA6IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBpbmRleCA9IHNpemVvZihjaGlsZHJlbikgLSAxOiBjYXNlIDI6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaW5kZXggPT09IDIgPyB2YWx1ZSArIGVsZW1lbnQgKyBlbGVtZW50IDogdmFsdWUgKyBlbGVtZW50XG5cdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0fVxufVxuIiwidmFyIHVuaXRsZXNzS2V5cyA9IHtcbiAgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6IDEsXG4gIGFzcGVjdFJhdGlvOiAxLFxuICBib3JkZXJJbWFnZU91dHNldDogMSxcbiAgYm9yZGVySW1hZ2VTbGljZTogMSxcbiAgYm9yZGVySW1hZ2VXaWR0aDogMSxcbiAgYm94RmxleDogMSxcbiAgYm94RmxleEdyb3VwOiAxLFxuICBib3hPcmRpbmFsR3JvdXA6IDEsXG4gIGNvbHVtbkNvdW50OiAxLFxuICBjb2x1bW5zOiAxLFxuICBmbGV4OiAxLFxuICBmbGV4R3JvdzogMSxcbiAgZmxleFBvc2l0aXZlOiAxLFxuICBmbGV4U2hyaW5rOiAxLFxuICBmbGV4TmVnYXRpdmU6IDEsXG4gIGZsZXhPcmRlcjogMSxcbiAgZ3JpZFJvdzogMSxcbiAgZ3JpZFJvd0VuZDogMSxcbiAgZ3JpZFJvd1NwYW46IDEsXG4gIGdyaWRSb3dTdGFydDogMSxcbiAgZ3JpZENvbHVtbjogMSxcbiAgZ3JpZENvbHVtbkVuZDogMSxcbiAgZ3JpZENvbHVtblNwYW46IDEsXG4gIGdyaWRDb2x1bW5TdGFydDogMSxcbiAgbXNHcmlkUm93OiAxLFxuICBtc0dyaWRSb3dTcGFuOiAxLFxuICBtc0dyaWRDb2x1bW46IDEsXG4gIG1zR3JpZENvbHVtblNwYW46IDEsXG4gIGZvbnRXZWlnaHQ6IDEsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG9wYWNpdHk6IDEsXG4gIG9yZGVyOiAxLFxuICBvcnBoYW5zOiAxLFxuICB0YWJTaXplOiAxLFxuICB3aWRvd3M6IDEsXG4gIHpJbmRleDogMSxcbiAgem9vbTogMSxcbiAgV2Via2l0TGluZUNsYW1wOiAxLFxuICAvLyBTVkctcmVsYXRlZCBwcm9wZXJ0aWVzXG4gIGZpbGxPcGFjaXR5OiAxLFxuICBmbG9vZE9wYWNpdHk6IDEsXG4gIHN0b3BPcGFjaXR5OiAxLFxuICBzdHJva2VEYXNoYXJyYXk6IDEsXG4gIHN0cm9rZURhc2hvZmZzZXQ6IDEsXG4gIHN0cm9rZU1pdGVybGltaXQ6IDEsXG4gIHN0cm9rZU9wYWNpdHk6IDEsXG4gIHN0cm9rZVdpZHRoOiAxXG59O1xuXG5leHBvcnQgeyB1bml0bGVzc0tleXMgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0e19fc3ByZWFkQXJyYXkgYXMgZSxfX2Fzc2lnbiBhcyB0fWZyb21cInRzbGliXCI7aW1wb3J0IG4gZnJvbVwiQGVtb3Rpb24vaXMtcHJvcC12YWxpZFwiO2ltcG9ydCBvLHt1c2VSZWYgYXMgcix1c2VTdGF0ZSBhcyBzLHVzZU1lbW8gYXMgaSx1c2VFZmZlY3QgYXMgYSx1c2VDb250ZXh0IGFzIGMsdXNlRGVidWdWYWx1ZSBhcyBsLGNyZWF0ZUVsZW1lbnQgYXMgdX1mcm9tXCJyZWFjdFwiO2ltcG9ydCBwIGZyb21cInNoYWxsb3dlcXVhbFwiO2ltcG9ydCphcyBkIGZyb21cInN0eWxpc1wiO2ltcG9ydCBoIGZyb21cIkBlbW90aW9uL3VuaXRsZXNzXCI7dmFyIGY9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiYocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0FUVFJ8fHByb2Nlc3MuZW52LlNDX0FUVFIpfHxcImRhdGEtc3R5bGVkXCIsbT1cImFjdGl2ZVwiLHk9XCJkYXRhLXN0eWxlZC12ZXJzaW9uXCIsdj1cIjYuMS4xM1wiLGc9XCIvKiFzYyovXFxuXCIsUz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZcIkhUTUxFbGVtZW50XCJpbiB3aW5kb3csdz1Cb29sZWFuKFwiYm9vbGVhblwiPT10eXBlb2YgU0NfRElTQUJMRV9TUEVFRFk/U0NfRElTQUJMRV9TUEVFRFk6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiZ2b2lkIDAhPT1wcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFkmJlwiXCIhPT1wcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFk/XCJmYWxzZVwiIT09cHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0RJU0FCTEVfU1BFRURZJiZwcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFk6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiZ2b2lkIDAhPT1wcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWSYmXCJcIiE9PXByb2Nlc3MuZW52LlNDX0RJU0FCTEVfU1BFRURZP1wiZmFsc2VcIiE9PXByb2Nlc3MuZW52LlNDX0RJU0FCTEVfU1BFRURZJiZwcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWTpcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WKSxiPXt9LEU9L2ludmFsaWQgaG9vayBjYWxsL2ksTj1uZXcgU2V0LFA9ZnVuY3Rpb24odCxuKXtpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WKXt2YXIgbz1uPycgd2l0aCB0aGUgaWQgb2YgXCInLmNvbmNhdChuLCdcIicpOlwiXCIscz1cIlRoZSBjb21wb25lbnQgXCIuY29uY2F0KHQpLmNvbmNhdChvLFwiIGhhcyBiZWVuIGNyZWF0ZWQgZHluYW1pY2FsbHkuXFxuXCIpK1wiWW91IG1heSBzZWUgdGhpcyB3YXJuaW5nIGJlY2F1c2UgeW91J3ZlIGNhbGxlZCBzdHlsZWQgaW5zaWRlIGFub3RoZXIgY29tcG9uZW50LlxcblRvIHJlc29sdmUgdGhpcyBvbmx5IGNyZWF0ZSBuZXcgU3R5bGVkQ29tcG9uZW50cyBvdXRzaWRlIG9mIGFueSByZW5kZXIgbWV0aG9kIGFuZCBmdW5jdGlvbiBjb21wb25lbnQuXCIsaT1jb25zb2xlLmVycm9yO3RyeXt2YXIgYT0hMDtjb25zb2xlLmVycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1bXSxvPTE7bzxhcmd1bWVudHMubGVuZ3RoO28rKyluW28tMV09YXJndW1lbnRzW29dO0UudGVzdCh0KT8oYT0hMSxOLmRlbGV0ZShzKSk6aS5hcHBseSh2b2lkIDAsZShbdF0sbiwhMSkpfSxyKCksYSYmIU4uaGFzKHMpJiYoY29uc29sZS53YXJuKHMpLE4uYWRkKHMpKX1jYXRjaChlKXtFLnRlc3QoZS5tZXNzYWdlKSYmTi5kZWxldGUocyl9ZmluYWxseXtjb25zb2xlLmVycm9yPWl9fX0sXz1PYmplY3QuZnJlZXplKFtdKSxDPU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIEkoZSx0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1DKSxlLnRoZW1lIT09bi50aGVtZSYmZS50aGVtZXx8dHx8bi50aGVtZX12YXIgQT1uZXcgU2V0KFtcImFcIixcImFiYnJcIixcImFkZHJlc3NcIixcImFyZWFcIixcImFydGljbGVcIixcImFzaWRlXCIsXCJhdWRpb1wiLFwiYlwiLFwiYmFzZVwiLFwiYmRpXCIsXCJiZG9cIixcImJpZ1wiLFwiYmxvY2txdW90ZVwiLFwiYm9keVwiLFwiYnJcIixcImJ1dHRvblwiLFwiY2FudmFzXCIsXCJjYXB0aW9uXCIsXCJjaXRlXCIsXCJjb2RlXCIsXCJjb2xcIixcImNvbGdyb3VwXCIsXCJkYXRhXCIsXCJkYXRhbGlzdFwiLFwiZGRcIixcImRlbFwiLFwiZGV0YWlsc1wiLFwiZGZuXCIsXCJkaWFsb2dcIixcImRpdlwiLFwiZGxcIixcImR0XCIsXCJlbVwiLFwiZW1iZWRcIixcImZpZWxkc2V0XCIsXCJmaWdjYXB0aW9uXCIsXCJmaWd1cmVcIixcImZvb3RlclwiLFwiZm9ybVwiLFwiaDFcIixcImgyXCIsXCJoM1wiLFwiaDRcIixcImg1XCIsXCJoNlwiLFwiaGVhZGVyXCIsXCJoZ3JvdXBcIixcImhyXCIsXCJodG1sXCIsXCJpXCIsXCJpZnJhbWVcIixcImltZ1wiLFwiaW5wdXRcIixcImluc1wiLFwia2JkXCIsXCJrZXlnZW5cIixcImxhYmVsXCIsXCJsZWdlbmRcIixcImxpXCIsXCJsaW5rXCIsXCJtYWluXCIsXCJtYXBcIixcIm1hcmtcIixcIm1lbnVcIixcIm1lbnVpdGVtXCIsXCJtZXRhXCIsXCJtZXRlclwiLFwibmF2XCIsXCJub3NjcmlwdFwiLFwib2JqZWN0XCIsXCJvbFwiLFwib3B0Z3JvdXBcIixcIm9wdGlvblwiLFwib3V0cHV0XCIsXCJwXCIsXCJwYXJhbVwiLFwicGljdHVyZVwiLFwicHJlXCIsXCJwcm9ncmVzc1wiLFwicVwiLFwicnBcIixcInJ0XCIsXCJydWJ5XCIsXCJzXCIsXCJzYW1wXCIsXCJzY3JpcHRcIixcInNlY3Rpb25cIixcInNlbGVjdFwiLFwic21hbGxcIixcInNvdXJjZVwiLFwic3BhblwiLFwic3Ryb25nXCIsXCJzdHlsZVwiLFwic3ViXCIsXCJzdW1tYXJ5XCIsXCJzdXBcIixcInRhYmxlXCIsXCJ0Ym9keVwiLFwidGRcIixcInRleHRhcmVhXCIsXCJ0Zm9vdFwiLFwidGhcIixcInRoZWFkXCIsXCJ0aW1lXCIsXCJ0clwiLFwidHJhY2tcIixcInVcIixcInVsXCIsXCJ1c2VcIixcInZhclwiLFwidmlkZW9cIixcIndiclwiLFwiY2lyY2xlXCIsXCJjbGlwUGF0aFwiLFwiZGVmc1wiLFwiZWxsaXBzZVwiLFwiZm9yZWlnbk9iamVjdFwiLFwiZ1wiLFwiaW1hZ2VcIixcImxpbmVcIixcImxpbmVhckdyYWRpZW50XCIsXCJtYXJrZXJcIixcIm1hc2tcIixcInBhdGhcIixcInBhdHRlcm5cIixcInBvbHlnb25cIixcInBvbHlsaW5lXCIsXCJyYWRpYWxHcmFkaWVudFwiLFwicmVjdFwiLFwic3RvcFwiLFwic3ZnXCIsXCJ0ZXh0XCIsXCJ0c3BhblwiXSksTz0vWyFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxcXFxcXV5ge3x9fi1dKy9nLEQ9LyheLXwtJCkvZztmdW5jdGlvbiBSKGUpe3JldHVybiBlLnJlcGxhY2UoTyxcIi1cIikucmVwbGFjZShELFwiXCIpfXZhciBUPS8oYSkoZCkvZ2ksaz01MixqPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUrKGU+MjU/Mzk6OTcpKX07ZnVuY3Rpb24geChlKXt2YXIgdCxuPVwiXCI7Zm9yKHQ9TWF0aC5hYnMoZSk7dD5rO3Q9dC9rfDApbj1qKHQlaykrbjtyZXR1cm4oaih0JWspK24pLnJlcGxhY2UoVCxcIiQxLSQyXCIpfXZhciBWLEY9NTM4MSxNPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQubGVuZ3RoO247KWU9MzMqZV50LmNoYXJDb2RlQXQoLS1uKTtyZXR1cm4gZX0sej1mdW5jdGlvbihlKXtyZXR1cm4gTShGLGUpfTtmdW5jdGlvbiAkKGUpe3JldHVybiB4KHooZSk+Pj4wKX1mdW5jdGlvbiBCKGUpe3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJlwic3RyaW5nXCI9PXR5cGVvZiBlJiZlfHxlLmRpc3BsYXlOYW1lfHxlLm5hbWV8fFwiQ29tcG9uZW50XCJ9ZnVuY3Rpb24gTChlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmKFwicHJvZHVjdGlvblwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlZ8fGUuY2hhckF0KDApPT09ZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSl9dmFyIEc9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLFk9Rz9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSxXPUc/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHE9e2NoaWxkQ29udGV4dFR5cGVzOiEwLGNvbnRleHRUeXBlOiEwLGNvbnRleHRUeXBlczohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAsZ2V0RGVmYXVsdFByb3BzOiEwLGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjohMCxnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6ITAsbWl4aW5zOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxIPXtuYW1lOiEwLGxlbmd0aDohMCxwcm90b3R5cGU6ITAsY2FsbGVyOiEwLGNhbGxlZTohMCxhcmd1bWVudHM6ITAsYXJpdHk6ITB9LFU9eyQkdHlwZW9mOiEwLGNvbXBhcmU6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxKPSgoVj17fSlbV109eyQkdHlwZW9mOiEwLHJlbmRlcjohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwfSxWW1ldPVUsVik7ZnVuY3Rpb24gWChlKXtyZXR1cm4oXCJ0eXBlXCJpbih0PWUpJiZ0LnR5cGUuJCR0eXBlb2YpPT09WT9VOlwiJCR0eXBlb2ZcImluIGU/SltlLiQkdHlwZW9mXTpxO3ZhciB0fXZhciBaPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxLPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLFE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxlZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHRlPU9iamVjdC5nZXRQcm90b3R5cGVPZixuZT1PYmplY3QucHJvdG90eXBlO2Z1bmN0aW9uIG9lKGUsdCxuKXtpZihcInN0cmluZ1wiIT10eXBlb2YgdCl7aWYobmUpe3ZhciBvPXRlKHQpO28mJm8hPT1uZSYmb2UoZSxvLG4pfXZhciByPUsodCk7USYmKHI9ci5jb25jYXQoUSh0KSkpO2Zvcih2YXIgcz1YKGUpLGk9WCh0KSxhPTA7YTxyLmxlbmd0aDsrK2Epe3ZhciBjPXJbYV07aWYoIShjIGluIEh8fG4mJm5bY118fGkmJmMgaW4gaXx8cyYmYyBpbiBzKSl7dmFyIGw9ZWUodCxjKTt0cnl7WihlLGMsbCl9Y2F0Y2goZSl7fX19fXJldHVybiBlfWZ1bmN0aW9uIHJlKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9ZnVuY3Rpb24gc2UoZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJlwic3R5bGVkQ29tcG9uZW50SWRcImluIGV9ZnVuY3Rpb24gaWUoZSx0KXtyZXR1cm4gZSYmdD9cIlwiLmNvbmNhdChlLFwiIFwiKS5jb25jYXQodCk6ZXx8dHx8XCJcIn1mdW5jdGlvbiBhZShlLHQpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm5cIlwiO2Zvcih2YXIgbj1lWzBdLG89MTtvPGUubGVuZ3RoO28rKyluKz10P3QrZVtvXTplW29dO3JldHVybiBufWZ1bmN0aW9uIGNlKGUpe3JldHVybiBudWxsIT09ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3IubmFtZT09PU9iamVjdC5uYW1lJiYhKFwicHJvcHNcImluIGUmJmUuJCR0eXBlb2YpfWZ1bmN0aW9uIGxlKGUsdCxuKXtpZih2b2lkIDA9PT1uJiYobj0hMSksIW4mJiFjZShlKSYmIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyllW29dPWxlKGVbb10sdFtvXSk7ZWxzZSBpZihjZSh0KSlmb3IodmFyIG8gaW4gdCllW29dPWxlKGVbb10sdFtvXSk7cmV0dXJuIGV9ZnVuY3Rpb24gdWUoZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInRvU3RyaW5nXCIse3ZhbHVlOnR9KX12YXIgcGU9XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOVj97MTpcIkNhbm5vdCBjcmVhdGUgc3R5bGVkLWNvbXBvbmVudCBmb3IgY29tcG9uZW50OiAlcy5cXG5cXG5cIiwyOlwiQ2FuJ3QgY29sbGVjdCBzdHlsZXMgb25jZSB5b3UndmUgY29uc3VtZWQgYSBgU2VydmVyU3R5bGVTaGVldGAncyBzdHlsZXMhIGBTZXJ2ZXJTdHlsZVNoZWV0YCBpcyBhIG9uZSBvZmYgaW5zdGFuY2UgZm9yIGVhY2ggc2VydmVyLXNpZGUgcmVuZGVyIGN5Y2xlLlxcblxcbi0gQXJlIHlvdSB0cnlpbmcgdG8gcmV1c2UgaXQgYWNyb3NzIHJlbmRlcnM/XFxuLSBBcmUgeW91IGFjY2lkZW50YWxseSBjYWxsaW5nIGNvbGxlY3RTdHlsZXMgdHdpY2U/XFxuXFxuXCIsMzpcIlN0cmVhbWluZyBTU1IgaXMgb25seSBzdXBwb3J0ZWQgaW4gYSBOb2RlLmpzIGVudmlyb25tZW50OyBQbGVhc2UgZG8gbm90IHRyeSB0byBjYWxsIHRoaXMgbWV0aG9kIGluIHRoZSBicm93c2VyLlxcblxcblwiLDQ6XCJUaGUgYFN0eWxlU2hlZXRNYW5hZ2VyYCBleHBlY3RzIGEgdmFsaWQgdGFyZ2V0IG9yIHNoZWV0IHByb3AhXFxuXFxuLSBEb2VzIHRoaXMgZXJyb3Igb2NjdXIgb24gdGhlIGNsaWVudCBhbmQgaXMgeW91ciB0YXJnZXQgZmFsc3k/XFxuLSBEb2VzIHRoaXMgZXJyb3Igb2NjdXIgb24gdGhlIHNlcnZlciBhbmQgaXMgdGhlIHNoZWV0IGZhbHN5P1xcblxcblwiLDU6XCJUaGUgY2xvbmUgbWV0aG9kIGNhbm5vdCBiZSB1c2VkIG9uIHRoZSBjbGllbnQhXFxuXFxuLSBBcmUgeW91IHJ1bm5pbmcgaW4gYSBjbGllbnQtbGlrZSBlbnZpcm9ubWVudCBvbiB0aGUgc2VydmVyP1xcbi0gQXJlIHlvdSB0cnlpbmcgdG8gcnVuIFNTUiBvbiB0aGUgY2xpZW50P1xcblxcblwiLDY6XCJUcnlpbmcgdG8gaW5zZXJ0IGEgbmV3IHN0eWxlIHRhZywgYnV0IHRoZSBnaXZlbiBOb2RlIGlzIHVubW91bnRlZCFcXG5cXG4tIEFyZSB5b3UgdXNpbmcgYSBjdXN0b20gdGFyZ2V0IHRoYXQgaXNuJ3QgbW91bnRlZD9cXG4tIERvZXMgeW91ciBkb2N1bWVudCBub3QgaGF2ZSBhIHZhbGlkIGhlYWQgZWxlbWVudD9cXG4tIEhhdmUgeW91IGFjY2lkZW50YWxseSByZW1vdmVkIGEgc3R5bGUgdGFnIG1hbnVhbGx5P1xcblxcblwiLDc6J1RoZW1lUHJvdmlkZXI6IFBsZWFzZSByZXR1cm4gYW4gb2JqZWN0IGZyb20geW91ciBcInRoZW1lXCIgcHJvcCBmdW5jdGlvbiwgZS5nLlxcblxcbmBgYGpzXFxudGhlbWU9eygpID0+ICh7fSl9XFxuYGBgXFxuXFxuJyw4OidUaGVtZVByb3ZpZGVyOiBQbGVhc2UgbWFrZSB5b3VyIFwidGhlbWVcIiBwcm9wIGFuIG9iamVjdC5cXG5cXG4nLDk6XCJNaXNzaW5nIGRvY3VtZW50IGA8aGVhZD5gXFxuXFxuXCIsMTA6XCJDYW5ub3QgZmluZCBhIFN0eWxlU2hlZXQgaW5zdGFuY2UuIFVzdWFsbHkgdGhpcyBoYXBwZW5zIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb3BpZXMgb2Ygc3R5bGVkLWNvbXBvbmVudHMgbG9hZGVkIGF0IG9uY2UuIENoZWNrIG91dCB0aGlzIGlzc3VlIGZvciBob3cgdG8gdHJvdWJsZXNob290IGFuZCBmaXggdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGlzIHNpdHVhdGlvbiBjYW4gaGFwcGVuOiBodHRwczovL2dpdGh1Yi5jb20vc3R5bGVkLWNvbXBvbmVudHMvc3R5bGVkLWNvbXBvbmVudHMvaXNzdWVzLzE5NDEjaXNzdWVjb21tZW50LTQxNzg2MjAyMVxcblxcblwiLDExOlwiX1RoaXMgZXJyb3Igd2FzIHJlcGxhY2VkIHdpdGggYSBkZXYtdGltZSB3YXJuaW5nLCBpdCB3aWxsIGJlIGRlbGV0ZWQgZm9yIHY0IGZpbmFsLl8gW2NyZWF0ZUdsb2JhbFN0eWxlXSByZWNlaXZlZCBjaGlsZHJlbiB3aGljaCB3aWxsIG5vdCBiZSByZW5kZXJlZC4gUGxlYXNlIHVzZSB0aGUgY29tcG9uZW50IHdpdGhvdXQgcGFzc2luZyBjaGlsZHJlbiBlbGVtZW50cy5cXG5cXG5cIiwxMjpcIkl0IHNlZW1zIHlvdSBhcmUgaW50ZXJwb2xhdGluZyBhIGtleWZyYW1lIGRlY2xhcmF0aW9uICglcykgaW50byBhbiB1bnRhZ2dlZCBzdHJpbmcuIFRoaXMgd2FzIHN1cHBvcnRlZCBpbiBzdHlsZWQtY29tcG9uZW50cyB2MywgYnV0IGlzIG5vdCBsb25nZXIgc3VwcG9ydGVkIGluIHY0IGFzIGtleWZyYW1lcyBhcmUgbm93IGluamVjdGVkIG9uLWRlbWFuZC4gUGxlYXNlIHdyYXAgeW91ciBzdHJpbmcgaW4gdGhlIGNzc1xcXFxgXFxcXGAgaGVscGVyIHdoaWNoIGVuc3VyZXMgdGhlIHN0eWxlcyBhcmUgaW5qZWN0ZWQgY29ycmVjdGx5LiBTZWUgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYXBpI2Nzc1xcblxcblwiLDEzOlwiJXMgaXMgbm90IGEgc3R5bGVkIGNvbXBvbmVudCBhbmQgY2Fubm90IGJlIHJlZmVycmVkIHRvIHZpYSBjb21wb25lbnQgc2VsZWN0b3IuIFNlZSBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9hZHZhbmNlZCNyZWZlcnJpbmctdG8tb3RoZXItY29tcG9uZW50cyBmb3IgbW9yZSBkZXRhaWxzLlxcblxcblwiLDE0OidUaGVtZVByb3ZpZGVyOiBcInRoZW1lXCIgcHJvcCBpcyByZXF1aXJlZC5cXG5cXG4nLDE1OlwiQSBzdHlsaXMgcGx1Z2luIGhhcyBiZWVuIHN1cHBsaWVkIHRoYXQgaXMgbm90IG5hbWVkLiBXZSBuZWVkIGEgbmFtZSBmb3IgZWFjaCBwbHVnaW4gdG8gYmUgYWJsZSB0byBwcmV2ZW50IHN0eWxpbmcgY29sbGlzaW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBzdHlsaXMgY29uZmlndXJhdGlvbnMgd2l0aGluIHRoZSBzYW1lIGFwcC4gQmVmb3JlIHlvdSBwYXNzIHlvdXIgcGx1Z2luIHRvIGA8U3R5bGVTaGVldE1hbmFnZXIgc3R5bGlzUGx1Z2lucz17W119PmAsIHBsZWFzZSBtYWtlIHN1cmUgZWFjaCBwbHVnaW4gaXMgdW5pcXVlbHktbmFtZWQsIGUuZy5cXG5cXG5gYGBqc1xcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbXBvcnRlZFBsdWdpbiwgJ25hbWUnLCB7IHZhbHVlOiAnc29tZS11bmlxdWUtbmFtZScgfSk7XFxuYGBgXFxuXFxuXCIsMTY6XCJSZWFjaGVkIHRoZSBsaW1pdCBvZiBob3cgbWFueSBzdHlsZWQgY29tcG9uZW50cyBtYXkgYmUgY3JlYXRlZCBhdCBncm91cCAlcy5cXG5Zb3UgbWF5IG9ubHkgY3JlYXRlIHVwIHRvIDEsMDczLDc0MSw4MjQgY29tcG9uZW50cy4gSWYgeW91J3JlIGNyZWF0aW5nIGNvbXBvbmVudHMgZHluYW1pY2FsbHksXFxuYXMgZm9yIGluc3RhbmNlIGluIHlvdXIgcmVuZGVyIG1ldGhvZCB0aGVuIHlvdSBtYXkgYmUgcnVubmluZyBpbnRvIHRoaXMgbGltaXRhdGlvbi5cXG5cXG5cIiwxNzpcIkNTU1N0eWxlU2hlZXQgY291bGQgbm90IGJlIGZvdW5kIG9uIEhUTUxTdHlsZUVsZW1lbnQuXFxuSGFzIHN0eWxlZC1jb21wb25lbnRzJyBzdHlsZSB0YWcgYmVlbiB1bm1vdW50ZWQgb3IgYWx0ZXJlZCBieSBhbm90aGVyIHNjcmlwdD9cXG5cIiwxODpcIlRoZW1lUHJvdmlkZXI6IFBsZWFzZSBtYWtlIHN1cmUgeW91ciB1c2VUaGVtZSBob29rIGlzIHdpdGhpbiBhIGA8VGhlbWVQcm92aWRlcj5gXCJ9Ont9O2Z1bmN0aW9uIGRlKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO2Zvcih2YXIgbj1lWzBdLG89W10scj0xLHM9ZS5sZW5ndGg7cjxzO3IrPTEpby5wdXNoKGVbcl0pO3JldHVybiBvLmZvckVhY2goZnVuY3Rpb24oZSl7bj1uLnJlcGxhY2UoLyVbYS16XS8sZSl9KSxufWZ1bmN0aW9uIGhlKHQpe2Zvcih2YXIgbj1bXSxvPTE7bzxhcmd1bWVudHMubGVuZ3RoO28rKyluW28tMV09YXJndW1lbnRzW29dO3JldHVyblwicHJvZHVjdGlvblwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlY/bmV3IEVycm9yKFwiQW4gZXJyb3Igb2NjdXJyZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc3R5bGVkLWNvbXBvbmVudHMvc3R5bGVkLWNvbXBvbmVudHMvYmxvYi9tYWluL3BhY2thZ2VzL3N0eWxlZC1jb21wb25lbnRzL3NyYy91dGlscy9lcnJvcnMubWQjXCIuY29uY2F0KHQsXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIpLmNvbmNhdChuLmxlbmd0aD4wP1wiIEFyZ3M6IFwiLmNvbmNhdChuLmpvaW4oXCIsIFwiKSk6XCJcIikpOm5ldyBFcnJvcihkZS5hcHBseSh2b2lkIDAsZShbcGVbdF1dLG4sITEpKS50cmltKCkpfXZhciBmZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5ncm91cFNpemVzPW5ldyBVaW50MzJBcnJheSg1MTIpLHRoaXMubGVuZ3RoPTUxMix0aGlzLnRhZz1lfXJldHVybiBlLnByb3RvdHlwZS5pbmRleE9mR3JvdXA9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj0wO248ZTtuKyspdCs9dGhpcy5ncm91cFNpemVzW25dO3JldHVybiB0fSxlLnByb3RvdHlwZS5pbnNlcnRSdWxlcz1mdW5jdGlvbihlLHQpe2lmKGU+PXRoaXMuZ3JvdXBTaXplcy5sZW5ndGgpe2Zvcih2YXIgbj10aGlzLmdyb3VwU2l6ZXMsbz1uLmxlbmd0aCxyPW87ZT49cjspaWYoKHI8PD0xKTwwKXRocm93IGhlKDE2LFwiXCIuY29uY2F0KGUpKTt0aGlzLmdyb3VwU2l6ZXM9bmV3IFVpbnQzMkFycmF5KHIpLHRoaXMuZ3JvdXBTaXplcy5zZXQobiksdGhpcy5sZW5ndGg9cjtmb3IodmFyIHM9bztzPHI7cysrKXRoaXMuZ3JvdXBTaXplc1tzXT0wfWZvcih2YXIgaT10aGlzLmluZGV4T2ZHcm91cChlKzEpLGE9KHM9MCx0Lmxlbmd0aCk7czxhO3MrKyl0aGlzLnRhZy5pbnNlcnRSdWxlKGksdFtzXSkmJih0aGlzLmdyb3VwU2l6ZXNbZV0rKyxpKyspfSxlLnByb3RvdHlwZS5jbGVhckdyb3VwPWZ1bmN0aW9uKGUpe2lmKGU8dGhpcy5sZW5ndGgpe3ZhciB0PXRoaXMuZ3JvdXBTaXplc1tlXSxuPXRoaXMuaW5kZXhPZkdyb3VwKGUpLG89bit0O3RoaXMuZ3JvdXBTaXplc1tlXT0wO2Zvcih2YXIgcj1uO3I8bztyKyspdGhpcy50YWcuZGVsZXRlUnVsZShuKX19LGUucHJvdG90eXBlLmdldEdyb3VwPWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCI7aWYoZT49dGhpcy5sZW5ndGh8fDA9PT10aGlzLmdyb3VwU2l6ZXNbZV0pcmV0dXJuIHQ7Zm9yKHZhciBuPXRoaXMuZ3JvdXBTaXplc1tlXSxvPXRoaXMuaW5kZXhPZkdyb3VwKGUpLHI9bytuLHM9bztzPHI7cysrKXQrPVwiXCIuY29uY2F0KHRoaXMudGFnLmdldFJ1bGUocykpLmNvbmNhdChnKTtyZXR1cm4gdH0sZX0oKSxtZT0xPDwzMCx5ZT1uZXcgTWFwLHZlPW5ldyBNYXAsZ2U9MSxTZT1mdW5jdGlvbihlKXtpZih5ZS5oYXMoZSkpcmV0dXJuIHllLmdldChlKTtmb3IoO3ZlLmhhcyhnZSk7KWdlKys7dmFyIHQ9Z2UrKztpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYoKDB8dCk8MHx8dD5tZSkpdGhyb3cgaGUoMTYsXCJcIi5jb25jYXQodCkpO3JldHVybiB5ZS5zZXQoZSx0KSx2ZS5zZXQodCxlKSx0fSx3ZT1mdW5jdGlvbihlLHQpe2dlPXQrMSx5ZS5zZXQoZSx0KSx2ZS5zZXQodCxlKX0sYmU9XCJzdHlsZVtcIi5jb25jYXQoZixcIl1bXCIpLmNvbmNhdCh5LCc9XCInKS5jb25jYXQodiwnXCJdJyksRWU9bmV3IFJlZ0V4cChcIl5cIi5jb25jYXQoZiwnXFxcXC5nKFxcXFxkKylcXFxcW2lkPVwiKFtcXFxcd1xcXFxkLV0rKVwiXFxcXF0uKj9cIihbXlwiXSopJykpLE5lPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIG8scj1uLnNwbGl0KFwiLFwiKSxzPTAsaT1yLmxlbmd0aDtzPGk7cysrKShvPXJbc10pJiZlLnJlZ2lzdGVyTmFtZSh0LG8pfSxQZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbixvPShudWxsIT09KG49dC50ZXh0Q29udGVudCkmJnZvaWQgMCE9PW4/bjpcIlwiKS5zcGxpdChnKSxyPVtdLHM9MCxpPW8ubGVuZ3RoO3M8aTtzKyspe3ZhciBhPW9bc10udHJpbSgpO2lmKGEpe3ZhciBjPWEubWF0Y2goRWUpO2lmKGMpe3ZhciBsPTB8cGFyc2VJbnQoY1sxXSwxMCksdT1jWzJdOzAhPT1sJiYod2UodSxsKSxOZShlLHUsY1szXSksZS5nZXRUYWcoKS5pbnNlcnRSdWxlcyhsLHIpKSxyLmxlbmd0aD0wfWVsc2Ugci5wdXNoKGEpfX19LF9lPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGJlKSxuPTAsbz10Lmxlbmd0aDtuPG87bisrKXt2YXIgcj10W25dO3ImJnIuZ2V0QXR0cmlidXRlKGYpIT09bSYmKFBlKGUsciksci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocikpfX07ZnVuY3Rpb24gQ2UoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgX193ZWJwYWNrX25vbmNlX18/X193ZWJwYWNrX25vbmNlX186bnVsbH12YXIgSWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuaGVhZCxuPWV8fHQsbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIikscj1mdW5jdGlvbihlKXt2YXIgdD1BcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW1wiLmNvbmNhdChmLFwiXVwiKSkpO3JldHVybiB0W3QubGVuZ3RoLTFdfShuKSxzPXZvaWQgMCE9PXI/ci5uZXh0U2libGluZzpudWxsO28uc2V0QXR0cmlidXRlKGYsbSksby5zZXRBdHRyaWJ1dGUoeSx2KTt2YXIgaT1DZSgpO3JldHVybiBpJiZvLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsaSksbi5pbnNlcnRCZWZvcmUobyxzKSxvfSxBZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5lbGVtZW50PUllKGUpLHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKSksdGhpcy5zaGVldD1mdW5jdGlvbihlKXtpZihlLnNoZWV0KXJldHVybiBlLnNoZWV0O2Zvcih2YXIgdD1kb2N1bWVudC5zdHlsZVNoZWV0cyxuPTAsbz10Lmxlbmd0aDtuPG87bisrKXt2YXIgcj10W25dO2lmKHIub3duZXJOb2RlPT09ZSlyZXR1cm4gcn10aHJvdyBoZSgxNyl9KHRoaXMuZWxlbWVudCksdGhpcy5sZW5ndGg9MH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0UnVsZT1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gdGhpcy5zaGVldC5pbnNlcnRSdWxlKHQsZSksdGhpcy5sZW5ndGgrKywhMH1jYXRjaChlKXtyZXR1cm4hMX19LGUucHJvdG90eXBlLmRlbGV0ZVJ1bGU9ZnVuY3Rpb24oZSl7dGhpcy5zaGVldC5kZWxldGVSdWxlKGUpLHRoaXMubGVuZ3RoLS19LGUucHJvdG90eXBlLmdldFJ1bGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zaGVldC5jc3NSdWxlc1tlXTtyZXR1cm4gdCYmdC5jc3NUZXh0P3QuY3NzVGV4dDpcIlwifSxlfSgpLE9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmVsZW1lbnQ9SWUoZSksdGhpcy5ub2Rlcz10aGlzLmVsZW1lbnQuY2hpbGROb2Rlcyx0aGlzLmxlbmd0aD0wfXJldHVybiBlLnByb3RvdHlwZS5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7aWYoZTw9dGhpcy5sZW5ndGgmJmU+PTApe3ZhciBuPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpO3JldHVybiB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKG4sdGhpcy5ub2Rlc1tlXXx8bnVsbCksdGhpcy5sZW5ndGgrKywhMH1yZXR1cm4hMX0sZS5wcm90b3R5cGUuZGVsZXRlUnVsZT1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5ub2Rlc1tlXSksdGhpcy5sZW5ndGgtLX0sZS5wcm90b3R5cGUuZ2V0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm4gZTx0aGlzLmxlbmd0aD90aGlzLm5vZGVzW2VdLnRleHRDb250ZW50OlwiXCJ9LGV9KCksRGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMucnVsZXM9W10sdGhpcy5sZW5ndGg9MH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0UnVsZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPD10aGlzLmxlbmd0aCYmKHRoaXMucnVsZXMuc3BsaWNlKGUsMCx0KSx0aGlzLmxlbmd0aCsrLCEwKX0sZS5wcm90b3R5cGUuZGVsZXRlUnVsZT1mdW5jdGlvbihlKXt0aGlzLnJ1bGVzLnNwbGljZShlLDEpLHRoaXMubGVuZ3RoLS19LGUucHJvdG90eXBlLmdldFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8dGhpcy5sZW5ndGg/dGhpcy5ydWxlc1tlXTpcIlwifSxlfSgpLFJlPVMsVGU9e2lzU2VydmVyOiFTLHVzZUNTU09NSW5qZWN0aW9uOiF3fSxrZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxuLG8pe3ZvaWQgMD09PWUmJihlPUMpLHZvaWQgMD09PW4mJihuPXt9KTt2YXIgcj10aGlzO3RoaXMub3B0aW9ucz10KHQoe30sVGUpLGUpLHRoaXMuZ3M9bix0aGlzLm5hbWVzPW5ldyBNYXAobyksdGhpcy5zZXJ2ZXI9ISFlLmlzU2VydmVyLCF0aGlzLnNlcnZlciYmUyYmUmUmJihSZT0hMSxfZSh0aGlzKSksdWUodGhpcyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5nZXRUYWcoKSxuPXQubGVuZ3RoLG89XCJcIixyPWZ1bmN0aW9uKG4pe3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiB2ZS5nZXQoZSl9KG4pO2lmKHZvaWQgMD09PXIpcmV0dXJuXCJjb250aW51ZVwiO3ZhciBzPWUubmFtZXMuZ2V0KHIpLGk9dC5nZXRHcm91cChuKTtpZih2b2lkIDA9PT1zfHwhcy5zaXplfHwwPT09aS5sZW5ndGgpcmV0dXJuXCJjb250aW51ZVwiO3ZhciBhPVwiXCIuY29uY2F0KGYsXCIuZ1wiKS5jb25jYXQobiwnW2lkPVwiJykuY29uY2F0KHIsJ1wiXScpLGM9XCJcIjt2b2lkIDAhPT1zJiZzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5sZW5ndGg+MCYmKGMrPVwiXCIuY29uY2F0KGUsXCIsXCIpKX0pLG8rPVwiXCIuY29uY2F0KGkpLmNvbmNhdChhLCd7Y29udGVudDpcIicpLmNvbmNhdChjLCdcIn0nKS5jb25jYXQoZyl9LHM9MDtzPG47cysrKXIocyk7cmV0dXJuIG99KHIpfSl9cmV0dXJuIGUucmVnaXN0ZXJJZD1mdW5jdGlvbihlKXtyZXR1cm4gU2UoZSl9LGUucHJvdG90eXBlLnJlaHlkcmF0ZT1mdW5jdGlvbigpeyF0aGlzLnNlcnZlciYmUyYmX2UodGhpcyl9LGUucHJvdG90eXBlLnJlY29uc3RydWN0V2l0aE9wdGlvbnM9ZnVuY3Rpb24obixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89ITApLG5ldyBlKHQodCh7fSx0aGlzLm9wdGlvbnMpLG4pLHRoaXMuZ3MsbyYmdGhpcy5uYW1lc3x8dm9pZCAwKX0sZS5wcm90b3R5cGUuYWxsb2NhdGVHU0luc3RhbmNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdzW2VdPSh0aGlzLmdzW2VdfHwwKSsxfSxlLnByb3RvdHlwZS5nZXRUYWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWd8fCh0aGlzLnRhZz0oZT1mdW5jdGlvbihlKXt2YXIgdD1lLnVzZUNTU09NSW5qZWN0aW9uLG49ZS50YXJnZXQ7cmV0dXJuIGUuaXNTZXJ2ZXI/bmV3IERlKG4pOnQ/bmV3IEFlKG4pOm5ldyBPZShuKX0odGhpcy5vcHRpb25zKSxuZXcgZmUoZSkpKTt2YXIgZX0sZS5wcm90b3R5cGUuaGFzTmFtZUZvcklkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubmFtZXMuaGFzKGUpJiZ0aGlzLm5hbWVzLmdldChlKS5oYXModCl9LGUucHJvdG90eXBlLnJlZ2lzdGVyTmFtZT1mdW5jdGlvbihlLHQpe2lmKFNlKGUpLHRoaXMubmFtZXMuaGFzKGUpKXRoaXMubmFtZXMuZ2V0KGUpLmFkZCh0KTtlbHNle3ZhciBuPW5ldyBTZXQ7bi5hZGQodCksdGhpcy5uYW1lcy5zZXQoZSxuKX19LGUucHJvdG90eXBlLmluc2VydFJ1bGVzPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnJlZ2lzdGVyTmFtZShlLHQpLHRoaXMuZ2V0VGFnKCkuaW5zZXJ0UnVsZXMoU2UoZSksbil9LGUucHJvdG90eXBlLmNsZWFyTmFtZXM9ZnVuY3Rpb24oZSl7dGhpcy5uYW1lcy5oYXMoZSkmJnRoaXMubmFtZXMuZ2V0KGUpLmNsZWFyKCl9LGUucHJvdG90eXBlLmNsZWFyUnVsZXM9ZnVuY3Rpb24oZSl7dGhpcy5nZXRUYWcoKS5jbGVhckdyb3VwKFNlKGUpKSx0aGlzLmNsZWFyTmFtZXMoZSl9LGUucHJvdG90eXBlLmNsZWFyVGFnPWZ1bmN0aW9uKCl7dGhpcy50YWc9dm9pZCAwfSxlfSgpLGplPS8mL2cseGU9L15cXHMqXFwvXFwvLiokL2dtO2Z1bmN0aW9uIFZlKGUsdCl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVyblwicnVsZVwiPT09ZS50eXBlJiYoZS52YWx1ZT1cIlwiLmNvbmNhdCh0LFwiIFwiKS5jb25jYXQoZS52YWx1ZSksZS52YWx1ZT1lLnZhbHVlLnJlcGxhY2VBbGwoXCIsXCIsXCIsXCIuY29uY2F0KHQsXCIgXCIpKSxlLnByb3BzPWUucHJvcHMubWFwKGZ1bmN0aW9uKGUpe3JldHVyblwiXCIuY29uY2F0KHQsXCIgXCIpLmNvbmNhdChlKX0pKSxBcnJheS5pc0FycmF5KGUuY2hpbGRyZW4pJiZcIkBrZXlmcmFtZXNcIiE9PWUudHlwZSYmKGUuY2hpbGRyZW49VmUoZS5jaGlsZHJlbix0KSksZX0pfWZ1bmN0aW9uIEZlKGUpe3ZhciB0LG4sbyxyPXZvaWQgMD09PWU/QzplLHM9ci5vcHRpb25zLGk9dm9pZCAwPT09cz9DOnMsYT1yLnBsdWdpbnMsYz12b2lkIDA9PT1hP186YSxsPWZ1bmN0aW9uKGUsbyxyKXtyZXR1cm4gci5zdGFydHNXaXRoKG4pJiZyLmVuZHNXaXRoKG4pJiZyLnJlcGxhY2VBbGwobixcIlwiKS5sZW5ndGg+MD9cIi5cIi5jb25jYXQodCk6ZX0sdT1jLnNsaWNlKCk7dS5wdXNoKGZ1bmN0aW9uKGUpe2UudHlwZT09PWQuUlVMRVNFVCYmZS52YWx1ZS5pbmNsdWRlcyhcIiZcIikmJihlLnByb3BzWzBdPWUucHJvcHNbMF0ucmVwbGFjZShqZSxuKS5yZXBsYWNlKG8sbCkpfSksaS5wcmVmaXgmJnUucHVzaChkLnByZWZpeGVyKSx1LnB1c2goZC5zdHJpbmdpZnkpO3ZhciBwPWZ1bmN0aW9uKGUscixzLGEpe3ZvaWQgMD09PXImJihyPVwiXCIpLHZvaWQgMD09PXMmJihzPVwiXCIpLHZvaWQgMD09PWEmJihhPVwiJlwiKSx0PWEsbj1yLG89bmV3IFJlZ0V4cChcIlxcXFxcIi5jb25jYXQobixcIlxcXFxiXCIpLFwiZ1wiKTt2YXIgYz1lLnJlcGxhY2UoeGUsXCJcIiksbD1kLmNvbXBpbGUoc3x8cj9cIlwiLmNvbmNhdChzLFwiIFwiKS5jb25jYXQocixcIiB7IFwiKS5jb25jYXQoYyxcIiB9XCIpOmMpO2kubmFtZXNwYWNlJiYobD1WZShsLGkubmFtZXNwYWNlKSk7dmFyIHA9W107cmV0dXJuIGQuc2VyaWFsaXplKGwsZC5taWRkbGV3YXJlKHUuY29uY2F0KGQucnVsZXNoZWV0KGZ1bmN0aW9uKGUpe3JldHVybiBwLnB1c2goZSl9KSkpKSxwfTtyZXR1cm4gcC5oYXNoPWMubGVuZ3RoP2MucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQubmFtZXx8aGUoMTUpLE0oZSx0Lm5hbWUpfSxGKS50b1N0cmluZygpOlwiXCIscH12YXIgTWU9bmV3IGtlLHplPUZlKCksJGU9by5jcmVhdGVDb250ZXh0KHtzaG91bGRGb3J3YXJkUHJvcDp2b2lkIDAsc3R5bGVTaGVldDpNZSxzdHlsaXM6emV9KSxCZT0kZS5Db25zdW1lcixMZT1vLmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiBHZSgpe3JldHVybiBjKCRlKX1mdW5jdGlvbiBZZShlKXt2YXIgdD1zKGUuc3R5bGlzUGx1Z2lucyksbj10WzBdLHI9dFsxXSxjPUdlKCkuc3R5bGVTaGVldCxsPWkoZnVuY3Rpb24oKXt2YXIgdD1jO3JldHVybiBlLnNoZWV0P3Q9ZS5zaGVldDplLnRhcmdldCYmKHQ9dC5yZWNvbnN0cnVjdFdpdGhPcHRpb25zKHt0YXJnZXQ6ZS50YXJnZXR9LCExKSksZS5kaXNhYmxlQ1NTT01JbmplY3Rpb24mJih0PXQucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucyh7dXNlQ1NTT01JbmplY3Rpb246ITF9KSksdH0sW2UuZGlzYWJsZUNTU09NSW5qZWN0aW9uLGUuc2hlZXQsZS50YXJnZXQsY10pLHU9aShmdW5jdGlvbigpe3JldHVybiBGZSh7b3B0aW9uczp7bmFtZXNwYWNlOmUubmFtZXNwYWNlLHByZWZpeDplLmVuYWJsZVZlbmRvclByZWZpeGVzfSxwbHVnaW5zOm59KX0sW2UuZW5hYmxlVmVuZG9yUHJlZml4ZXMsZS5uYW1lc3BhY2Usbl0pO2EoZnVuY3Rpb24oKXtwKG4sZS5zdHlsaXNQbHVnaW5zKXx8cihlLnN0eWxpc1BsdWdpbnMpfSxbZS5zdHlsaXNQbHVnaW5zXSk7dmFyIGQ9aShmdW5jdGlvbigpe3JldHVybntzaG91bGRGb3J3YXJkUHJvcDplLnNob3VsZEZvcndhcmRQcm9wLHN0eWxlU2hlZXQ6bCxzdHlsaXM6dX19LFtlLnNob3VsZEZvcndhcmRQcm9wLGwsdV0pO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoJGUuUHJvdmlkZXIse3ZhbHVlOmR9LG8uY3JlYXRlRWxlbWVudChMZS5Qcm92aWRlcix7dmFsdWU6dX0sZS5jaGlsZHJlbikpfXZhciBXZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgbj10aGlzO3RoaXMuaW5qZWN0PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9emUpO3ZhciBvPW4ubmFtZSt0Lmhhc2g7ZS5oYXNOYW1lRm9ySWQobi5pZCxvKXx8ZS5pbnNlcnRSdWxlcyhuLmlkLG8sdChuLnJ1bGVzLG8sXCJAa2V5ZnJhbWVzXCIpKX0sdGhpcy5uYW1lPWUsdGhpcy5pZD1cInNjLWtleWZyYW1lcy1cIi5jb25jYXQoZSksdGhpcy5ydWxlcz10LHVlKHRoaXMsZnVuY3Rpb24oKXt0aHJvdyBoZSgxMixTdHJpbmcobi5uYW1lKSl9KX1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9emUpLHRoaXMubmFtZStlLmhhc2h9LGV9KCkscWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PVwiQVwiJiZlPD1cIlpcIn07ZnVuY3Rpb24gSGUoZSl7Zm9yKHZhciB0PVwiXCIsbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgbz1lW25dO2lmKDE9PT1uJiZcIi1cIj09PW8mJlwiLVwiPT09ZVswXSlyZXR1cm4gZTtxZShvKT90Kz1cIi1cIitvLnRvTG93ZXJDYXNlKCk6dCs9b31yZXR1cm4gdC5zdGFydHNXaXRoKFwibXMtXCIpP1wiLVwiK3Q6dH12YXIgVWU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fCExPT09ZXx8XCJcIj09PWV9LEplPWZ1bmN0aW9uKHQpe3ZhciBuLG8scj1bXTtmb3IodmFyIHMgaW4gdCl7dmFyIGk9dFtzXTt0Lmhhc093blByb3BlcnR5KHMpJiYhVWUoaSkmJihBcnJheS5pc0FycmF5KGkpJiZpLmlzQ3NzfHxyZShpKT9yLnB1c2goXCJcIi5jb25jYXQoSGUocyksXCI6XCIpLGksXCI7XCIpOmNlKGkpP3IucHVzaC5hcHBseShyLGUoZShbXCJcIi5jb25jYXQocyxcIiB7XCIpXSxKZShpKSwhMSksW1wifVwiXSwhMSkpOnIucHVzaChcIlwiLmNvbmNhdChIZShzKSxcIjogXCIpLmNvbmNhdCgobj1zLG51bGw9PShvPWkpfHxcImJvb2xlYW5cIj09dHlwZW9mIG98fFwiXCI9PT1vP1wiXCI6XCJudW1iZXJcIiE9dHlwZW9mIG98fDA9PT1vfHxuIGluIGh8fG4uc3RhcnRzV2l0aChcIi0tXCIpP1N0cmluZyhvKS50cmltKCk6XCJcIi5jb25jYXQobyxcInB4XCIpKSxcIjtcIikpKX1yZXR1cm4gcn07ZnVuY3Rpb24gWGUoZSx0LG4sbyl7aWYoVWUoZSkpcmV0dXJuW107aWYoc2UoZSkpcmV0dXJuW1wiLlwiLmNvbmNhdChlLnN0eWxlZENvbXBvbmVudElkKV07aWYocmUoZSkpe2lmKCFyZShzPWUpfHxzLnByb3RvdHlwZSYmcy5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudHx8IXQpcmV0dXJuW2VdO3ZhciByPWUodCk7cmV0dXJuXCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOVnx8XCJvYmplY3RcIiE9dHlwZW9mIHJ8fEFycmF5LmlzQXJyYXkocil8fHIgaW5zdGFuY2VvZiBXZXx8Y2Uocil8fG51bGw9PT1yfHxjb25zb2xlLmVycm9yKFwiXCIuY29uY2F0KEIoZSksXCIgaXMgbm90IGEgc3R5bGVkIGNvbXBvbmVudCBhbmQgY2Fubm90IGJlIHJlZmVycmVkIHRvIHZpYSBjb21wb25lbnQgc2VsZWN0b3IuIFNlZSBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9hZHZhbmNlZCNyZWZlcnJpbmctdG8tb3RoZXItY29tcG9uZW50cyBmb3IgbW9yZSBkZXRhaWxzLlwiKSksWGUocix0LG4sbyl9dmFyIHM7cmV0dXJuIGUgaW5zdGFuY2VvZiBXZT9uPyhlLmluamVjdChuLG8pLFtlLmdldE5hbWUobyldKTpbZV06Y2UoZSk/SmUoZSk6QXJyYXkuaXNBcnJheShlKT9BcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KF8sZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIFhlKGUsdCxuLG8pfSkpOltlLnRvU3RyaW5nKCldfWZ1bmN0aW9uIFplKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCs9MSl7dmFyIG49ZVt0XTtpZihyZShuKSYmIXNlKG4pKXJldHVybiExfXJldHVybiEwfXZhciBLZT16KHYpLFFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy5ydWxlcz1lLHRoaXMuc3RhdGljUnVsZXNJZD1cIlwiLHRoaXMuaXNTdGF0aWM9XCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOViYmKHZvaWQgMD09PW58fG4uaXNTdGF0aWMpJiZaZShlKSx0aGlzLmNvbXBvbmVudElkPXQsdGhpcy5iYXNlSGFzaD1NKEtlLHQpLHRoaXMuYmFzZVN0eWxlPW4sa2UucmVnaXN0ZXJJZCh0KX1yZXR1cm4gZS5wcm90b3R5cGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPXRoaXMuYmFzZVN0eWxlP3RoaXMuYmFzZVN0eWxlLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKGUsdCxuKTpcIlwiO2lmKHRoaXMuaXNTdGF0aWMmJiFuLmhhc2gpaWYodGhpcy5zdGF0aWNSdWxlc0lkJiZ0Lmhhc05hbWVGb3JJZCh0aGlzLmNvbXBvbmVudElkLHRoaXMuc3RhdGljUnVsZXNJZCkpbz1pZShvLHRoaXMuc3RhdGljUnVsZXNJZCk7ZWxzZXt2YXIgcj1hZShYZSh0aGlzLnJ1bGVzLGUsdCxuKSkscz14KE0odGhpcy5iYXNlSGFzaCxyKT4+PjApO2lmKCF0Lmhhc05hbWVGb3JJZCh0aGlzLmNvbXBvbmVudElkLHMpKXt2YXIgaT1uKHIsXCIuXCIuY29uY2F0KHMpLHZvaWQgMCx0aGlzLmNvbXBvbmVudElkKTt0Lmluc2VydFJ1bGVzKHRoaXMuY29tcG9uZW50SWQscyxpKX1vPWllKG8scyksdGhpcy5zdGF0aWNSdWxlc0lkPXN9ZWxzZXtmb3IodmFyIGE9TSh0aGlzLmJhc2VIYXNoLG4uaGFzaCksYz1cIlwiLGw9MDtsPHRoaXMucnVsZXMubGVuZ3RoO2wrKyl7dmFyIHU9dGhpcy5ydWxlc1tsXTtpZihcInN0cmluZ1wiPT10eXBlb2YgdSljKz11LFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJihhPU0oYSx1KSk7ZWxzZSBpZih1KXt2YXIgcD1hZShYZSh1LGUsdCxuKSk7YT1NKGEscCtsKSxjKz1wfX1pZihjKXt2YXIgZD14KGE+Pj4wKTt0Lmhhc05hbWVGb3JJZCh0aGlzLmNvbXBvbmVudElkLGQpfHx0Lmluc2VydFJ1bGVzKHRoaXMuY29tcG9uZW50SWQsZCxuKGMsXCIuXCIuY29uY2F0KGQpLHZvaWQgMCx0aGlzLmNvbXBvbmVudElkKSksbz1pZShvLGQpfX1yZXR1cm4gb30sZX0oKSxldD1vLmNyZWF0ZUNvbnRleHQodm9pZCAwKSx0dD1ldC5Db25zdW1lcjtmdW5jdGlvbiBudCgpe3ZhciBlPWMoZXQpO2lmKCFlKXRocm93IGhlKDE4KTtyZXR1cm4gZX1mdW5jdGlvbiBvdChlKXt2YXIgbj1vLnVzZUNvbnRleHQoZXQpLHI9aShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLG4pe2lmKCFlKXRocm93IGhlKDE0KTtpZihyZShlKSl7dmFyIG89ZShuKTtpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYobnVsbD09PW98fEFycmF5LmlzQXJyYXkobyl8fFwib2JqZWN0XCIhPXR5cGVvZiBvKSl0aHJvdyBoZSg3KTtyZXR1cm4gb31pZihBcnJheS5pc0FycmF5KGUpfHxcIm9iamVjdFwiIT10eXBlb2YgZSl0aHJvdyBoZSg4KTtyZXR1cm4gbj90KHQoe30sbiksZSk6ZX0oZS50aGVtZSxuKX0sW2UudGhlbWUsbl0pO3JldHVybiBlLmNoaWxkcmVuP28uY3JlYXRlRWxlbWVudChldC5Qcm92aWRlcix7dmFsdWU6cn0sZS5jaGlsZHJlbik6bnVsbH12YXIgcnQ9e30sc3Q9bmV3IFNldDtmdW5jdGlvbiBpdChlLHIscyl7dmFyIGk9c2UoZSksYT1lLGM9IUwoZSkscD1yLmF0dHJzLGQ9dm9pZCAwPT09cD9fOnAsaD1yLmNvbXBvbmVudElkLGY9dm9pZCAwPT09aD9mdW5jdGlvbihlLHQpe3ZhciBuPVwic3RyaW5nXCIhPXR5cGVvZiBlP1wic2NcIjpSKGUpO3J0W25dPShydFtuXXx8MCkrMTt2YXIgbz1cIlwiLmNvbmNhdChuLFwiLVwiKS5jb25jYXQoJCh2K24rcnRbbl0pKTtyZXR1cm4gdD9cIlwiLmNvbmNhdCh0LFwiLVwiKS5jb25jYXQobyk6b30oci5kaXNwbGF5TmFtZSxyLnBhcmVudENvbXBvbmVudElkKTpoLG09ci5kaXNwbGF5TmFtZSx5PXZvaWQgMD09PW0/ZnVuY3Rpb24oZSl7cmV0dXJuIEwoZSk/XCJzdHlsZWQuXCIuY29uY2F0KGUpOlwiU3R5bGVkKFwiLmNvbmNhdChCKGUpLFwiKVwiKX0oZSk6bSxnPXIuZGlzcGxheU5hbWUmJnIuY29tcG9uZW50SWQ/XCJcIi5jb25jYXQoUihyLmRpc3BsYXlOYW1lKSxcIi1cIikuY29uY2F0KHIuY29tcG9uZW50SWQpOnIuY29tcG9uZW50SWR8fGYsUz1pJiZhLmF0dHJzP2EuYXR0cnMuY29uY2F0KGQpLmZpbHRlcihCb29sZWFuKTpkLHc9ci5zaG91bGRGb3J3YXJkUHJvcDtpZihpJiZhLnNob3VsZEZvcndhcmRQcm9wKXt2YXIgYj1hLnNob3VsZEZvcndhcmRQcm9wO2lmKHIuc2hvdWxkRm9yd2FyZFByb3Ape3ZhciBFPXIuc2hvdWxkRm9yd2FyZFByb3A7dz1mdW5jdGlvbihlLHQpe3JldHVybiBiKGUsdCkmJkUoZSx0KX19ZWxzZSB3PWJ9dmFyIE49bmV3IFFlKHMsZyxpP2EuY29tcG9uZW50U3R5bGU6dm9pZCAwKTtmdW5jdGlvbiBPKGUscil7cmV0dXJuIGZ1bmN0aW9uKGUscixzKXt2YXIgaT1lLmF0dHJzLGE9ZS5jb21wb25lbnRTdHlsZSxjPWUuZGVmYXVsdFByb3BzLHA9ZS5mb2xkZWRDb21wb25lbnRJZHMsZD1lLnN0eWxlZENvbXBvbmVudElkLGg9ZS50YXJnZXQsZj1vLnVzZUNvbnRleHQoZXQpLG09R2UoKSx5PWUuc2hvdWxkRm9yd2FyZFByb3B8fG0uc2hvdWxkRm9yd2FyZFByb3A7XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmbChkKTt2YXIgdj1JKHIsZixjKXx8QyxnPWZ1bmN0aW9uKGUsbixvKXtmb3IodmFyIHIscz10KHQoe30sbikse2NsYXNzTmFtZTp2b2lkIDAsdGhlbWU6b30pLGk9MDtpPGUubGVuZ3RoO2krPTEpe3ZhciBhPXJlKHI9ZVtpXSk/cihzKTpyO2Zvcih2YXIgYyBpbiBhKXNbY109XCJjbGFzc05hbWVcIj09PWM/aWUoc1tjXSxhW2NdKTpcInN0eWxlXCI9PT1jP3QodCh7fSxzW2NdKSxhW2NdKTphW2NdfXJldHVybiBuLmNsYXNzTmFtZSYmKHMuY2xhc3NOYW1lPWllKHMuY2xhc3NOYW1lLG4uY2xhc3NOYW1lKSksc30oaSxyLHYpLFM9Zy5hc3x8aCx3PXt9O2Zvcih2YXIgYiBpbiBnKXZvaWQgMD09PWdbYl18fFwiJFwiPT09YlswXXx8XCJhc1wiPT09Ynx8XCJ0aGVtZVwiPT09YiYmZy50aGVtZT09PXZ8fChcImZvcndhcmRlZEFzXCI9PT1iP3cuYXM9Zy5mb3J3YXJkZWRBczp5JiYheShiLFMpfHwod1tiXT1nW2JdLHl8fFwiZGV2ZWxvcG1lbnRcIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WfHxuKGIpfHxzdC5oYXMoYil8fCFBLmhhcyhTKXx8KHN0LmFkZChiKSxjb25zb2xlLndhcm4oJ3N0eWxlZC1jb21wb25lbnRzOiBpdCBsb29rcyBsaWtlIGFuIHVua25vd24gcHJvcCBcIicuY29uY2F0KGIsJ1wiIGlzIGJlaW5nIHNlbnQgdGhyb3VnaCB0byB0aGUgRE9NLCB3aGljaCB3aWxsIGxpa2VseSB0cmlnZ2VyIGEgUmVhY3QgY29uc29sZSBlcnJvci4gSWYgeW91IHdvdWxkIGxpa2UgYXV0b21hdGljIGZpbHRlcmluZyBvZiB1bmtub3duIHByb3BzLCB5b3UgY2FuIG9wdC1pbnRvIHRoYXQgYmVoYXZpb3IgdmlhIGA8U3R5bGVTaGVldE1hbmFnZXIgc2hvdWxkRm9yd2FyZFByb3A9ey4uLn0+YCAoY29ubmVjdCBhbiBBUEkgbGlrZSBgQGVtb3Rpb24vaXMtcHJvcC12YWxpZGApIG9yIGNvbnNpZGVyIHVzaW5nIHRyYW5zaWVudCBwcm9wcyAoYCRgIHByZWZpeCBmb3IgYXV0b21hdGljIGZpbHRlcmluZy4pJykpKSkpO3ZhciBFPWZ1bmN0aW9uKGUsdCl7dmFyIG49R2UoKSxvPWUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXModCxuLnN0eWxlU2hlZXQsbi5zdHlsaXMpO3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJmwobyksb30oYSxnKTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZlLndhcm5Ub29NYW55Q2xhc3NlcyYmZS53YXJuVG9vTWFueUNsYXNzZXMoRSk7dmFyIE49aWUocCxkKTtyZXR1cm4gRSYmKE4rPVwiIFwiK0UpLGcuY2xhc3NOYW1lJiYoTis9XCIgXCIrZy5jbGFzc05hbWUpLHdbTChTKSYmIUEuaGFzKFMpP1wiY2xhc3NcIjpcImNsYXNzTmFtZVwiXT1OLHcucmVmPXMsdShTLHcpfShELGUscil9Ty5kaXNwbGF5TmFtZT15O3ZhciBEPW8uZm9yd2FyZFJlZihPKTtyZXR1cm4gRC5hdHRycz1TLEQuY29tcG9uZW50U3R5bGU9TixELmRpc3BsYXlOYW1lPXksRC5zaG91bGRGb3J3YXJkUHJvcD13LEQuZm9sZGVkQ29tcG9uZW50SWRzPWk/aWUoYS5mb2xkZWRDb21wb25lbnRJZHMsYS5zdHlsZWRDb21wb25lbnRJZCk6XCJcIixELnN0eWxlZENvbXBvbmVudElkPWcsRC50YXJnZXQ9aT9hLnRhcmdldDplLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELFwiZGVmYXVsdFByb3BzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHN9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHM9aT9mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtmb3IodmFyIG89MCxyPXQ7bzxyLmxlbmd0aDtvKyspbGUoZSxyW29dLCEwKTtyZXR1cm4gZX0oe30sYS5kZWZhdWx0UHJvcHMsZSk6ZX19KSxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYoUCh5LGcpLEQud2FyblRvb01hbnlDbGFzc2VzPWZ1bmN0aW9uKGUsdCl7dmFyIG49e30sbz0hMTtyZXR1cm4gZnVuY3Rpb24ocil7aWYoIW8mJihuW3JdPSEwLE9iamVjdC5rZXlzKG4pLmxlbmd0aD49MjAwKSl7dmFyIHM9dD8nIHdpdGggdGhlIGlkIG9mIFwiJy5jb25jYXQodCwnXCInKTpcIlwiO2NvbnNvbGUud2FybihcIk92ZXIgXCIuY29uY2F0KDIwMCxcIiBjbGFzc2VzIHdlcmUgZ2VuZXJhdGVkIGZvciBjb21wb25lbnQgXCIpLmNvbmNhdChlKS5jb25jYXQocyxcIi5cXG5cIikrXCJDb25zaWRlciB1c2luZyB0aGUgYXR0cnMgbWV0aG9kLCB0b2dldGhlciB3aXRoIGEgc3R5bGUgb2JqZWN0IGZvciBmcmVxdWVudGx5IGNoYW5nZWQgc3R5bGVzLlxcbkV4YW1wbGU6XFxuICBjb25zdCBDb21wb25lbnQgPSBzdHlsZWQuZGl2LmF0dHJzKHByb3BzID0+ICh7XFxuICAgIHN0eWxlOiB7XFxuICAgICAgYmFja2dyb3VuZDogcHJvcHMuYmFja2dyb3VuZCxcXG4gICAgfSxcXG4gIH0pKWB3aWR0aDogMTAwJTtgXFxuXFxuICA8Q29tcG9uZW50IC8+XCIpLG89ITAsbj17fX19fSh5LGcpKSx1ZShELGZ1bmN0aW9uKCl7cmV0dXJuXCIuXCIuY29uY2F0KEQuc3R5bGVkQ29tcG9uZW50SWQpfSksYyYmb2UoRCxlLHthdHRyczohMCxjb21wb25lbnRTdHlsZTohMCxkaXNwbGF5TmFtZTohMCxmb2xkZWRDb21wb25lbnRJZHM6ITAsc2hvdWxkRm9yd2FyZFByb3A6ITAsc3R5bGVkQ29tcG9uZW50SWQ6ITAsdGFyZ2V0OiEwfSksRH1mdW5jdGlvbiBhdChlLHQpe2Zvcih2YXIgbj1bZVswXV0sbz0wLHI9dC5sZW5ndGg7bzxyO28rPTEpbi5wdXNoKHRbb10sZVtvKzFdKTtyZXR1cm4gbn12YXIgY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oZSx7aXNDc3M6ITB9KX07ZnVuY3Rpb24gbHQodCl7Zm9yKHZhciBuPVtdLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0xXT1hcmd1bWVudHNbb107aWYocmUodCl8fGNlKHQpKXJldHVybiBjdChYZShhdChfLGUoW3RdLG4sITApKSkpO3ZhciByPXQ7cmV0dXJuIDA9PT1uLmxlbmd0aCYmMT09PXIubGVuZ3RoJiZcInN0cmluZ1wiPT10eXBlb2YgclswXT9YZShyKTpjdChYZShhdChyLG4pKSl9ZnVuY3Rpb24gdXQobixvLHIpe2lmKHZvaWQgMD09PXImJihyPUMpLCFvKXRocm93IGhlKDEsbyk7dmFyIHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBzPVtdLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXNbaS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIG4obyxyLGx0LmFwcGx5KHZvaWQgMCxlKFt0XSxzLCExKSkpfTtyZXR1cm4gcy5hdHRycz1mdW5jdGlvbihlKXtyZXR1cm4gdXQobixvLHQodCh7fSxyKSx7YXR0cnM6QXJyYXkucHJvdG90eXBlLmNvbmNhdChyLmF0dHJzLGUpLmZpbHRlcihCb29sZWFuKX0pKX0scy53aXRoQ29uZmlnPWZ1bmN0aW9uKGUpe3JldHVybiB1dChuLG8sdCh0KHt9LHIpLGUpKX0sc312YXIgcHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHV0KGl0LGUpfSxkdD1wdDtBLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09cHQoZSl9KTt2YXIgaHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5ydWxlcz1lLHRoaXMuY29tcG9uZW50SWQ9dCx0aGlzLmlzU3RhdGljPVplKGUpLGtlLnJlZ2lzdGVySWQodGhpcy5jb21wb25lbnRJZCsxKX1yZXR1cm4gZS5wcm90b3R5cGUuY3JlYXRlU3R5bGVzPWZ1bmN0aW9uKGUsdCxuLG8pe3ZhciByPW8oYWUoWGUodGhpcy5ydWxlcyx0LG4sbykpLFwiXCIpLHM9dGhpcy5jb21wb25lbnRJZCtlO24uaW5zZXJ0UnVsZXMocyxzLHIpfSxlLnByb3RvdHlwZS5yZW1vdmVTdHlsZXM9ZnVuY3Rpb24oZSx0KXt0LmNsZWFyUnVsZXModGhpcy5jb21wb25lbnRJZCtlKX0sZS5wcm90b3R5cGUucmVuZGVyU3R5bGVzPWZ1bmN0aW9uKGUsdCxuLG8pe2U+MiYma2UucmVnaXN0ZXJJZCh0aGlzLmNvbXBvbmVudElkK2UpLHRoaXMucmVtb3ZlU3R5bGVzKGUsbiksdGhpcy5jcmVhdGVTdHlsZXMoZSx0LG4sbyl9LGV9KCk7ZnVuY3Rpb24gZnQobil7Zm9yKHZhciByPVtdLHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXJbcy0xXT1hcmd1bWVudHNbc107dmFyIGk9bHQuYXBwbHkodm9pZCAwLGUoW25dLHIsITEpKSxhPVwic2MtZ2xvYmFsLVwiLmNvbmNhdCgkKEpTT04uc3RyaW5naWZ5KGkpKSksYz1uZXcgaHQoaSxhKTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZQKGEpO3ZhciBsPWZ1bmN0aW9uKGUpe3ZhciB0PUdlKCksbj1vLnVzZUNvbnRleHQoZXQpLHI9by51c2VSZWYodC5zdHlsZVNoZWV0LmFsbG9jYXRlR1NJbnN0YW5jZShhKSkuY3VycmVudDtyZXR1cm5cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZvLkNoaWxkcmVuLmNvdW50KGUuY2hpbGRyZW4pJiZjb25zb2xlLndhcm4oXCJUaGUgZ2xvYmFsIHN0eWxlIGNvbXBvbmVudCBcIi5jb25jYXQoYSxcIiB3YXMgZ2l2ZW4gY2hpbGQgSlNYLiBjcmVhdGVHbG9iYWxTdHlsZSBkb2VzIG5vdCByZW5kZXIgY2hpbGRyZW4uXCIpKSxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZpLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJi0xIT09ZS5pbmRleE9mKFwiQGltcG9ydFwiKX0pJiZjb25zb2xlLndhcm4oXCJQbGVhc2UgZG8gbm90IHVzZSBAaW1wb3J0IENTUyBzeW50YXggaW4gY3JlYXRlR2xvYmFsU3R5bGUgYXQgdGhpcyB0aW1lLCBhcyB0aGUgQ1NTT00gQVBJcyB3ZSB1c2UgaW4gcHJvZHVjdGlvbiBkbyBub3QgaGFuZGxlIGl0IHdlbGwuIEluc3RlYWQsIHdlIHJlY29tbWVuZCB1c2luZyBhIGxpYnJhcnkgc3VjaCBhcyByZWFjdC1oZWxtZXQgdG8gaW5qZWN0IGEgdHlwaWNhbCA8bGluaz4gbWV0YSB0YWcgdG8gdGhlIHN0eWxlc2hlZXQsIG9yIHNpbXBseSBlbWJlZGRpbmcgaXQgbWFudWFsbHkgaW4geW91ciBpbmRleC5odG1sIDxoZWFkPiBzZWN0aW9uIGZvciBhIHNpbXBsZXIgYXBwLlwiKSx0LnN0eWxlU2hlZXQuc2VydmVyJiZ1KHIsZSx0LnN0eWxlU2hlZXQsbix0LnN0eWxpcyksby51c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24oKXtpZighdC5zdHlsZVNoZWV0LnNlcnZlcilyZXR1cm4gdShyLGUsdC5zdHlsZVNoZWV0LG4sdC5zdHlsaXMpLGZ1bmN0aW9uKCl7cmV0dXJuIGMucmVtb3ZlU3R5bGVzKHIsdC5zdHlsZVNoZWV0KX19LFtyLGUsdC5zdHlsZVNoZWV0LG4sdC5zdHlsaXNdKSxudWxsfTtmdW5jdGlvbiB1KGUsbixvLHIscyl7aWYoYy5pc1N0YXRpYyljLnJlbmRlclN0eWxlcyhlLGIsbyxzKTtlbHNle3ZhciBpPXQodCh7fSxuKSx7dGhlbWU6SShuLHIsbC5kZWZhdWx0UHJvcHMpfSk7Yy5yZW5kZXJTdHlsZXMoZSxpLG8scyl9fXJldHVybiBvLm1lbW8obCl9ZnVuY3Rpb24gbXQodCl7Zm9yKHZhciBuPVtdLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0xXT1hcmd1bWVudHNbb107XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG5hdmlnYXRvciYmXCJSZWFjdE5hdGl2ZVwiPT09bmF2aWdhdG9yLnByb2R1Y3QmJmNvbnNvbGUud2FybihcImBrZXlmcmFtZXNgIGNhbm5vdCBiZSB1c2VkIG9uIFJlYWN0TmF0aXZlLCBvbmx5IG9uIHRoZSB3ZWIuIFRvIGRvIGFuaW1hdGlvbiBpbiBSZWFjdE5hdGl2ZSBwbGVhc2UgdXNlIEFuaW1hdGVkLlwiKTt2YXIgcj1hZShsdC5hcHBseSh2b2lkIDAsZShbdF0sbiwhMSkpKSxzPSQocik7cmV0dXJuIG5ldyBXZShzLHIpfWZ1bmN0aW9uIHl0KGUpe3ZhciBuPW8uZm9yd2FyZFJlZihmdW5jdGlvbihuLHIpe3ZhciBzPUkobixvLnVzZUNvbnRleHQoZXQpLGUuZGVmYXVsdFByb3BzKTtyZXR1cm5cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZ2b2lkIDA9PT1zJiZjb25zb2xlLndhcm4oJ1t3aXRoVGhlbWVdIFlvdSBhcmUgbm90IHVzaW5nIGEgVGhlbWVQcm92aWRlciBub3IgcGFzc2luZyBhIHRoZW1lIHByb3Agb3IgYSB0aGVtZSBpbiBkZWZhdWx0UHJvcHMgaW4gY29tcG9uZW50IGNsYXNzIFwiJy5jb25jYXQoQihlKSwnXCInKSksby5jcmVhdGVFbGVtZW50KGUsdCh7fSxuLHt0aGVtZTpzLHJlZjpyfSkpfSk7cmV0dXJuIG4uZGlzcGxheU5hbWU9XCJXaXRoVGhlbWUoXCIuY29uY2F0KEIoZSksXCIpXCIpLG9lKG4sZSl9dmFyIHZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXRoaXM7dGhpcy5fZW1pdFNoZWV0Q1NTPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5pbnN0YW5jZS50b1N0cmluZygpO2lmKCF0KXJldHVyblwiXCI7dmFyIG49Q2UoKSxvPWFlKFtuJiYnbm9uY2U9XCInLmNvbmNhdChuLCdcIicpLFwiXCIuY29uY2F0KGYsJz1cInRydWVcIicpLFwiXCIuY29uY2F0KHksJz1cIicpLmNvbmNhdCh2LCdcIicpXS5maWx0ZXIoQm9vbGVhbiksXCIgXCIpO3JldHVyblwiPHN0eWxlIFwiLmNvbmNhdChvLFwiPlwiKS5jb25jYXQodCxcIjwvc3R5bGU+XCIpfSx0aGlzLmdldFN0eWxlVGFncz1mdW5jdGlvbigpe2lmKGUuc2VhbGVkKXRocm93IGhlKDIpO3JldHVybiBlLl9lbWl0U2hlZXRDU1MoKX0sdGhpcy5nZXRTdHlsZUVsZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgbjtpZihlLnNlYWxlZCl0aHJvdyBoZSgyKTt2YXIgcj1lLmluc3RhbmNlLnRvU3RyaW5nKCk7aWYoIXIpcmV0dXJuW107dmFyIHM9KChuPXt9KVtmXT1cIlwiLG5beV09dixuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXtfX2h0bWw6cn0sbiksaT1DZSgpO3JldHVybiBpJiYocy5ub25jZT1pKSxbby5jcmVhdGVFbGVtZW50KFwic3R5bGVcIix0KHt9LHMse2tleTpcInNjLTAtMFwifSkpXX0sdGhpcy5zZWFsPWZ1bmN0aW9uKCl7ZS5zZWFsZWQ9ITB9LHRoaXMuaW5zdGFuY2U9bmV3IGtlKHtpc1NlcnZlcjohMH0pLHRoaXMuc2VhbGVkPSExfXJldHVybiBlLnByb3RvdHlwZS5jb2xsZWN0U3R5bGVzPWZ1bmN0aW9uKGUpe2lmKHRoaXMuc2VhbGVkKXRocm93IGhlKDIpO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoWWUse3NoZWV0OnRoaXMuaW5zdGFuY2V9LGUpfSxlLnByb3RvdHlwZS5pbnRlcmxlYXZlV2l0aE5vZGVTdHJlYW09ZnVuY3Rpb24oZSl7dGhyb3cgaGUoMyl9LGV9KCksZ3Q9e1N0eWxlU2hlZXQ6a2UsbWFpblNoZWV0Ok1lfTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yJiZcIlJlYWN0TmF0aXZlXCI9PT1uYXZpZ2F0b3IucHJvZHVjdCYmY29uc29sZS53YXJuKFwiSXQgbG9va3MgbGlrZSB5b3UndmUgaW1wb3J0ZWQgJ3N0eWxlZC1jb21wb25lbnRzJyBvbiBSZWFjdCBOYXRpdmUuXFxuUGVyaGFwcyB5b3UncmUgbG9va2luZyB0byBpbXBvcnQgJ3N0eWxlZC1jb21wb25lbnRzL25hdGl2ZSc/XFxuUmVhZCBtb3JlIGFib3V0IHRoaXMgYXQgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYmFzaWNzI3JlYWN0LW5hdGl2ZVwiKTt2YXIgU3Q9XCJfX3NjLVwiLmNvbmNhdChmLFwiX19cIik7XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJ0ZXN0XCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvd1tTdF18fCh3aW5kb3dbU3RdPTApLDE9PT13aW5kb3dbU3RdJiZjb25zb2xlLndhcm4oXCJJdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzZXZlcmFsIGluc3RhbmNlcyBvZiAnc3R5bGVkLWNvbXBvbmVudHMnIGluaXRpYWxpemVkIGluIHRoaXMgYXBwbGljYXRpb24uIFRoaXMgbWF5IGNhdXNlIGR5bmFtaWMgc3R5bGVzIHRvIG5vdCByZW5kZXIgcHJvcGVybHksIGVycm9ycyBkdXJpbmcgdGhlIHJlaHlkcmF0aW9uIHByb2Nlc3MsIGEgbWlzc2luZyB0aGVtZSBwcm9wLCBhbmQgbWFrZXMgeW91ciBhcHBsaWNhdGlvbiBiaWdnZXIgd2l0aG91dCBnb29kIHJlYXNvbi5cXG5cXG5TZWUgaHR0cHM6Ly9zLWMuc2gvMkJBWHplZCBmb3IgbW9yZSBpbmZvLlwiKSx3aW5kb3dbU3RdKz0xKTtleHBvcnR7dnQgYXMgU2VydmVyU3R5bGVTaGVldCxCZSBhcyBTdHlsZVNoZWV0Q29uc3VtZXIsJGUgYXMgU3R5bGVTaGVldENvbnRleHQsWWUgYXMgU3R5bGVTaGVldE1hbmFnZXIsdHQgYXMgVGhlbWVDb25zdW1lcixldCBhcyBUaGVtZUNvbnRleHQsb3QgYXMgVGhlbWVQcm92aWRlcixndCBhcyBfX1BSSVZBVEVfXyxmdCBhcyBjcmVhdGVHbG9iYWxTdHlsZSxsdCBhcyBjc3MsZHQgYXMgZGVmYXVsdCxzZSBhcyBpc1N0eWxlZENvbXBvbmVudCxtdCBhcyBrZXlmcmFtZXMsZHQgYXMgc3R5bGVkLG50IGFzIHVzZVRoZW1lLHYgYXMgdmVyc2lvbix5dCBhcyB3aXRoVGhlbWV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVkLWNvbXBvbmVudHMuYnJvd3Nlci5lc20uanMubWFwXG4iLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJpbWl0aXZlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZShcIi4vdG9QcmltaXRpdmUuanNcIik7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9Qcm9wZXJ0eUtleSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xuICAgIHZhbHVlOiB0LFxuICAgIGVudW1lcmFibGU6ICEwLFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgd3JpdGFibGU6ICEwXG4gIH0pIDogZVtyXSA9IHQsIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9kZWZpbmVQcm9wZXJ0eSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuL2RlZmluZVByb3BlcnR5LmpzXCIpO1xuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7XG4gIHZhciB0ID0gT2JqZWN0LmtleXMoZSk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikge1xuICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTtcbiAgICB9KSksIHQucHVzaC5hcHBseSh0LCBvKTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQyKGUpIHtcbiAgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHtcbiAgICB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307XG4gICAgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pO1xuICAgIH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0U3ByZWFkMiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlMaWtlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRoSG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5TGltaXQgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlUmVzdCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiKTtcbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KHIsIGUpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGUpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGUpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2xpY2VkVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHIsIGUpIHtcbiAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHt9O1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBuIGluIHIpIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsIG4pKSB7XG4gICAgaWYgKGUuaW5jbHVkZXMobikpIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlID0gcmVxdWlyZShcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiKTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlLCB0KSB7XG4gIGlmIChudWxsID09IGUpIHJldHVybiB7fTtcbiAgdmFyIG8sXG4gICAgcixcbiAgICBpID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShlLCB0KTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgZm9yIChyID0gMDsgciA8IHMubGVuZ3RoOyByKyspIG8gPSBzW3JdLCB0LmluY2x1ZGVzKG8pIHx8IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX29iamVjdFNwcmVhZCA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xudmFyIF9zbGljZWRUb0FycmF5ID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5Jyk7XG52YXIgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcycpO1xudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9leGNsdWRlZCA9IFtcImRlZmF1bHRJbnB1dFZhbHVlXCIsIFwiZGVmYXVsdE1lbnVJc09wZW5cIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJpbnB1dFZhbHVlXCIsIFwibWVudUlzT3BlblwiLCBcIm9uQ2hhbmdlXCIsIFwib25JbnB1dENoYW5nZVwiLCBcIm9uTWVudUNsb3NlXCIsIFwib25NZW51T3BlblwiLCBcInZhbHVlXCJdO1xuZnVuY3Rpb24gdXNlU3RhdGVNYW5hZ2VyKF9yZWYpIHtcbiAgdmFyIF9yZWYkZGVmYXVsdElucHV0VmFsdSA9IF9yZWYuZGVmYXVsdElucHV0VmFsdWUsXG4gICAgZGVmYXVsdElucHV0VmFsdWUgPSBfcmVmJGRlZmF1bHRJbnB1dFZhbHUgPT09IHZvaWQgMCA/ICcnIDogX3JlZiRkZWZhdWx0SW5wdXRWYWx1LFxuICAgIF9yZWYkZGVmYXVsdE1lbnVJc09wZSA9IF9yZWYuZGVmYXVsdE1lbnVJc09wZW4sXG4gICAgZGVmYXVsdE1lbnVJc09wZW4gPSBfcmVmJGRlZmF1bHRNZW51SXNPcGUgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRkZWZhdWx0TWVudUlzT3BlLFxuICAgIF9yZWYkZGVmYXVsdFZhbHVlID0gX3JlZi5kZWZhdWx0VmFsdWUsXG4gICAgZGVmYXVsdFZhbHVlID0gX3JlZiRkZWZhdWx0VmFsdWUgPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmJGRlZmF1bHRWYWx1ZSxcbiAgICBwcm9wc0lucHV0VmFsdWUgPSBfcmVmLmlucHV0VmFsdWUsXG4gICAgcHJvcHNNZW51SXNPcGVuID0gX3JlZi5tZW51SXNPcGVuLFxuICAgIHByb3BzT25DaGFuZ2UgPSBfcmVmLm9uQ2hhbmdlLFxuICAgIHByb3BzT25JbnB1dENoYW5nZSA9IF9yZWYub25JbnB1dENoYW5nZSxcbiAgICBwcm9wc09uTWVudUNsb3NlID0gX3JlZi5vbk1lbnVDbG9zZSxcbiAgICBwcm9wc09uTWVudU9wZW4gPSBfcmVmLm9uTWVudU9wZW4sXG4gICAgcHJvcHNWYWx1ZSA9IF9yZWYudmFsdWUsXG4gICAgcmVzdFNlbGVjdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIHZhciBfdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZShwcm9wc0lucHV0VmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzSW5wdXRWYWx1ZSA6IGRlZmF1bHRJbnB1dFZhbHVlKSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICBzdGF0ZUlucHV0VmFsdWUgPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldFN0YXRlSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZTJbMV07XG4gIHZhciBfdXNlU3RhdGUzID0gUmVhY3QudXNlU3RhdGUocHJvcHNNZW51SXNPcGVuICE9PSB1bmRlZmluZWQgPyBwcm9wc01lbnVJc09wZW4gOiBkZWZhdWx0TWVudUlzT3BlbiksXG4gICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgIHN0YXRlTWVudUlzT3BlbiA9IF91c2VTdGF0ZTRbMF0sXG4gICAgc2V0U3RhdGVNZW51SXNPcGVuID0gX3VzZVN0YXRlNFsxXTtcbiAgdmFyIF91c2VTdGF0ZTUgPSBSZWFjdC51c2VTdGF0ZShwcm9wc1ZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm9wc1ZhbHVlIDogZGVmYXVsdFZhbHVlKSxcbiAgICBfdXNlU3RhdGU2ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlNSwgMiksXG4gICAgc3RhdGVWYWx1ZSA9IF91c2VTdGF0ZTZbMF0sXG4gICAgc2V0U3RhdGVWYWx1ZSA9IF91c2VTdGF0ZTZbMV07XG4gIHZhciBvbkNoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbkNoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcHNPbkNoYW5nZSh2YWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgfVxuICAgIHNldFN0YXRlVmFsdWUodmFsdWUpO1xuICB9LCBbcHJvcHNPbkNoYW5nZV0pO1xuICB2YXIgb25JbnB1dENoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgIHZhciBuZXdWYWx1ZTtcbiAgICBpZiAodHlwZW9mIHByb3BzT25JbnB1dENoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbmV3VmFsdWUgPSBwcm9wc09uSW5wdXRDaGFuZ2UodmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cbiAgICBzZXRTdGF0ZUlucHV0VmFsdWUobmV3VmFsdWUgIT09IHVuZGVmaW5lZCA/IG5ld1ZhbHVlIDogdmFsdWUpO1xuICB9LCBbcHJvcHNPbklucHV0Q2hhbmdlXSk7XG4gIHZhciBvbk1lbnVPcGVuID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbk1lbnVPcGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wc09uTWVudU9wZW4oKTtcbiAgICB9XG4gICAgc2V0U3RhdGVNZW51SXNPcGVuKHRydWUpO1xuICB9LCBbcHJvcHNPbk1lbnVPcGVuXSk7XG4gIHZhciBvbk1lbnVDbG9zZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHByb3BzT25NZW51Q2xvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BzT25NZW51Q2xvc2UoKTtcbiAgICB9XG4gICAgc2V0U3RhdGVNZW51SXNPcGVuKGZhbHNlKTtcbiAgfSwgW3Byb3BzT25NZW51Q2xvc2VdKTtcbiAgdmFyIGlucHV0VmFsdWUgPSBwcm9wc0lucHV0VmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzSW5wdXRWYWx1ZSA6IHN0YXRlSW5wdXRWYWx1ZTtcbiAgdmFyIG1lbnVJc09wZW4gPSBwcm9wc01lbnVJc09wZW4gIT09IHVuZGVmaW5lZCA/IHByb3BzTWVudUlzT3BlbiA6IHN0YXRlTWVudUlzT3BlbjtcbiAgdmFyIHZhbHVlID0gcHJvcHNWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNWYWx1ZSA6IHN0YXRlVmFsdWU7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RTZWxlY3RQcm9wcyksIHt9LCB7XG4gICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZSxcbiAgICBtZW51SXNPcGVuOiBtZW51SXNPcGVuLFxuICAgIG9uQ2hhbmdlOiBvbkNoYW5nZSxcbiAgICBvbklucHV0Q2hhbmdlOiBvbklucHV0Q2hhbmdlLFxuICAgIG9uTWVudUNsb3NlOiBvbk1lbnVDbG9zZSxcbiAgICBvbk1lbnVPcGVuOiBvbk1lbnVPcGVuLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9KTtcbn1cblxuZXhwb3J0cy51c2VTdGF0ZU1hbmFnZXIgPSB1c2VTdGF0ZU1hbmFnZXI7XG4iLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAobikge1xuICAgIGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7XG4gICAgICB2YXIgdCA9IGFyZ3VtZW50c1tlXTtcbiAgICAgIGZvciAodmFyIHIgaW4gdCkgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpICYmIChuW3JdID0gdFtyXSk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIF9leHRlbmRzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9leHRlbmRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZih0KSB7XG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX2dldFByb3RvdHlwZU9mKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICB0cnkge1xuICAgIHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgfSBjYXRjaCAodCkge31cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICAgIHJldHVybiAhIXQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cykoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL2dldFByb3RvdHlwZU9mLmpzXCIpO1xudmFyIGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IHJlcXVpcmUoXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiKTtcbnZhciBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuID0gcmVxdWlyZShcIi4vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qc1wiKTtcbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcih0KSB7XG4gIHZhciByID0gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGUsXG4gICAgICBvID0gZ2V0UHJvdG90eXBlT2YodCk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHZhciBzID0gZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7XG4gICAgICBlID0gUmVmbGVjdC5jb25zdHJ1Y3QobywgYXJndW1lbnRzLCBzKTtcbiAgICB9IGVsc2UgZSA9IG8uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBlKTtcbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZVN1cGVyLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KHIpIHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IHJbU3ltYm9sLml0ZXJhdG9yXSB8fCBudWxsICE9IHJbXCJAQGl0ZXJhdG9yXCJdKSByZXR1cm4gQXJyYXkuZnJvbShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVNwcmVhZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhvdXRIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlU3ByZWFkID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIik7XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkocikge1xuICByZXR1cm4gYXJyYXlXaXRob3V0SG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5KHIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpIHx8IG5vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90b0NvbnN1bWFibGVBcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwoZSwgdCkge1xuICByZXR1cm4gdCB8fCAodCA9IGUuc2xpY2UoMCkpLCBPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIHtcbiAgICByYXc6IHtcbiAgICAgIHZhbHVlOiBPYmplY3QuZnJlZXplKHQpXG4gICAgfVxuICB9KSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAobmV4dFJlZlJlY3QueCAhPT0gcHJldlJlZlJlY3QueCB8fCBuZXh0UmVmUmVjdC55ICE9PSBwcmV2UmVmUmVjdC55IHx8IG5leHRSZWZSZWN0LndpZHRoICE9PSBwcmV2UmVmUmVjdC53aWR0aCB8fCBuZXh0UmVmUmVjdC5oZWlnaHQgIT09IHByZXZSZWZSZWN0LmhlaWdodCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyMjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICBjbGVhbnVwSW8gPT0gbnVsbCB8fCBjbGVhbnVwSW8oKTtcbiAgICAoX3Jlc2l6ZU9ic2VydmVyMiA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlcjIuZGlzY29ubmVjdCgpO1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmNvbnN0IGRldGVjdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3ckMTtcblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gYXV0b1BsYWNlbWVudCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBzaGlmdCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZsaXAkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gc2l6ZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGhpZGUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBhcnJvdyQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBpbmxpbmUkMTtcblxuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGxpbWl0U2hpZnQkMTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIF9vYmplY3RTcHJlYWQgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDInKTtcbnZhciBfZXh0ZW5kcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcycpO1xudmFyIHJlYWN0ID0gcmVxdWlyZSgnQGVtb3Rpb24vcmVhY3QnKTtcbnZhciBfc2xpY2VkVG9BcnJheSA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheScpO1xudmFyIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnKTtcbnZhciBfdHlwZW9mID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YnKTtcbnZhciBfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90YWdnZWRUZW1wbGF0ZUxpdGVyYWwnKTtcbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5Jyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIHJlYWN0RG9tID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG52YXIgZG9tID0gcmVxdWlyZSgnQGZsb2F0aW5nLXVpL2RvbScpO1xudmFyIHVzZUxheW91dEVmZmVjdCA9IHJlcXVpcmUoJ3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChlKSB7IHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7ICdkZWZhdWx0JzogZSB9OyB9XG5cbnZhciB1c2VMYXlvdXRFZmZlY3RfX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX2ludGVyb3BEZWZhdWx0KHVzZUxheW91dEVmZmVjdCk7XG5cbnZhciBfZXhjbHVkZWQkNCA9IFtcImNsYXNzTmFtZVwiLCBcImNsZWFyVmFsdWVcIiwgXCJjeFwiLCBcImdldFN0eWxlc1wiLCBcImdldENsYXNzTmFtZXNcIiwgXCJnZXRWYWx1ZVwiLCBcImhhc1ZhbHVlXCIsIFwiaXNNdWx0aVwiLCBcImlzUnRsXCIsIFwib3B0aW9uc1wiLCBcInNlbGVjdE9wdGlvblwiLCBcInNlbGVjdFByb3BzXCIsIFwic2V0VmFsdWVcIiwgXCJ0aGVtZVwiXTtcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTk8gT1Bcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbm9vcCA9IGZ1bmN0aW9uIG5vb3AoKSB7fTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDbGFzcyBOYW1lIFByZWZpeGVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvbXBvbmVudCBzdGF0ZSBmb3Igc3R5bGluZyB3aXRoIGNsYXNzIG5hbWVzLlxuXG4gRXhwZWN0cyBhbiBhcnJheSBvZiBzdHJpbmdzIE9SIGEgc3RyaW5nL29iamVjdCBwYWlyOlxuIC0gY2xhc3NOYW1lKFsnY29tcCcsICdjb21wLWFyZycsICdjb21wLWFyZy0yJ10pXG4gICBAcmV0dXJucyAncmVhY3Qtc2VsZWN0X19jb21wIHJlYWN0LXNlbGVjdF9fY29tcC1hcmcgcmVhY3Qtc2VsZWN0X19jb21wLWFyZy0yJ1xuIC0gY2xhc3NOYW1lKCdjb21wJywgeyBzb21lOiB0cnVlLCBzdGF0ZTogZmFsc2UgfSlcbiAgIEByZXR1cm5zICdyZWFjdC1zZWxlY3RfX2NvbXAgcmVhY3Qtc2VsZWN0X19jb21wLS1zb21lJ1xuKi9cbmZ1bmN0aW9uIGFwcGx5UHJlZml4VG9OYW1lKHByZWZpeCwgbmFtZSkge1xuICBpZiAoIW5hbWUpIHtcbiAgICByZXR1cm4gcHJlZml4O1xuICB9IGVsc2UgaWYgKG5hbWVbMF0gPT09ICctJykge1xuICAgIHJldHVybiBwcmVmaXggKyBuYW1lO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwcmVmaXggKyAnX18nICsgbmFtZTtcbiAgfVxufVxuZnVuY3Rpb24gY2xhc3NOYW1lcyhwcmVmaXgsIHN0YXRlKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBjbGFzc05hbWVMaXN0ID0gbmV3IEFycmF5KF9sZW4gPiAyID8gX2xlbiAtIDIgOiAwKSwgX2tleSA9IDI7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBjbGFzc05hbWVMaXN0W19rZXkgLSAyXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuICB2YXIgYXJyID0gW10uY29uY2F0KGNsYXNzTmFtZUxpc3QpO1xuICBpZiAoc3RhdGUgJiYgcHJlZml4KSB7XG4gICAgZm9yICh2YXIga2V5IGluIHN0YXRlKSB7XG4gICAgICBpZiAoc3RhdGUuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBzdGF0ZVtrZXldKSB7XG4gICAgICAgIGFyci5wdXNoKFwiXCIuY29uY2F0KGFwcGx5UHJlZml4VG9OYW1lKHByZWZpeCwga2V5KSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBpO1xuICB9KS5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gU3RyaW5nKGkpLnRyaW0oKTtcbiAgfSkuam9pbignICcpO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDbGVhbiBWYWx1ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBjbGVhblZhbHVlID0gZnVuY3Rpb24gY2xlYW5WYWx1ZSh2YWx1ZSkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5maWx0ZXIoQm9vbGVhbik7XG4gIGlmIChfdHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHJldHVybiBbdmFsdWVdO1xuICByZXR1cm4gW107XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENsZWFuIENvbW1vbiBQcm9wc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBjbGVhbkNvbW1vblByb3BzID0gZnVuY3Rpb24gY2xlYW5Db21tb25Qcm9wcyhwcm9wcykge1xuICAvL2NsYXNzTmFtZVxuICBwcm9wcy5jbGFzc05hbWU7XG4gICAgcHJvcHMuY2xlYXJWYWx1ZTtcbiAgICBwcm9wcy5jeDtcbiAgICBwcm9wcy5nZXRTdHlsZXM7XG4gICAgcHJvcHMuZ2V0Q2xhc3NOYW1lcztcbiAgICBwcm9wcy5nZXRWYWx1ZTtcbiAgICBwcm9wcy5oYXNWYWx1ZTtcbiAgICBwcm9wcy5pc011bHRpO1xuICAgIHByb3BzLmlzUnRsO1xuICAgIHByb3BzLm9wdGlvbnM7XG4gICAgcHJvcHMuc2VsZWN0T3B0aW9uO1xuICAgIHByb3BzLnNlbGVjdFByb3BzO1xuICAgIHByb3BzLnNldFZhbHVlO1xuICAgIHByb3BzLnRoZW1lO1xuICAgIHZhciBpbm5lclByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQkNCk7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHt9LCBpbm5lclByb3BzKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2V0IFN0eWxlIFByb3BzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGdldFN0eWxlUHJvcHMgPSBmdW5jdGlvbiBnZXRTdHlsZVByb3BzKHByb3BzLCBuYW1lLCBjbGFzc05hbWVzU3RhdGUpIHtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgZ2V0U3R5bGVzID0gcHJvcHMuZ2V0U3R5bGVzLFxuICAgIGdldENsYXNzTmFtZXMgPSBwcm9wcy5nZXRDbGFzc05hbWVzLFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgcmV0dXJuIHtcbiAgICBjc3M6IGdldFN0eWxlcyhuYW1lLCBwcm9wcyksXG4gICAgY2xhc3NOYW1lOiBjeChjbGFzc05hbWVzU3RhdGUgIT09IG51bGwgJiYgY2xhc3NOYW1lc1N0YXRlICE9PSB2b2lkIDAgPyBjbGFzc05hbWVzU3RhdGUgOiB7fSwgZ2V0Q2xhc3NOYW1lcyhuYW1lLCBwcm9wcyksIGNsYXNzTmFtZSlcbiAgfTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGFuZGxlIElucHV0IENoYW5nZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGhhbmRsZUlucHV0Q2hhbmdlKGlucHV0VmFsdWUsIGFjdGlvbk1ldGEsIG9uSW5wdXRDaGFuZ2UpIHtcbiAgaWYgKG9uSW5wdXRDaGFuZ2UpIHtcbiAgICB2YXIgX25ld1ZhbHVlID0gb25JbnB1dENoYW5nZShpbnB1dFZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICBpZiAodHlwZW9mIF9uZXdWYWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiBfbmV3VmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlucHV0VmFsdWU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2Nyb2xsIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBpc0RvY3VtZW50RWxlbWVudChlbCkge1xuICByZXR1cm4gW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgZG9jdW1lbnQuYm9keSwgd2luZG93XS5pbmRleE9mKGVsKSA+IC0xO1xufVxuXG4vLyBOb3JtYWxpemVkIFNjcm9sbCBUb3Bcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBub3JtYWxpemVkSGVpZ2h0KGVsKSB7XG4gIGlmIChpc0RvY3VtZW50RWxlbWVudChlbCkpIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0O1xuICB9XG4gIHJldHVybiBlbC5jbGllbnRIZWlnaHQ7XG59XG5cbi8vIE5vcm1hbGl6ZWQgc2Nyb2xsVG8gJiBzY3JvbGxUb3Bcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxUb3AoZWwpIHtcbiAgaWYgKGlzRG9jdW1lbnRFbGVtZW50KGVsKSkge1xuICAgIHJldHVybiB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gIH1cbiAgcmV0dXJuIGVsLnNjcm9sbFRvcDtcbn1cbmZ1bmN0aW9uIHNjcm9sbFRvKGVsLCB0b3ApIHtcbiAgLy8gd2l0aCBhIHNjcm9sbCBkaXN0YW5jZSwgd2UgcGVyZm9ybSBzY3JvbGwgb24gdGhlIGVsZW1lbnRcbiAgaWYgKGlzRG9jdW1lbnRFbGVtZW50KGVsKSkge1xuICAgIHdpbmRvdy5zY3JvbGxUbygwLCB0b3ApO1xuICAgIHJldHVybjtcbiAgfVxuICBlbC5zY3JvbGxUb3AgPSB0b3A7XG59XG5cbi8vIEdldCBTY3JvbGwgUGFyZW50XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgdmFyIGV4Y2x1ZGVTdGF0aWNQYXJlbnQgPSBzdHlsZS5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJztcbiAgdmFyIG92ZXJmbG93UnggPSAvKGF1dG98c2Nyb2xsKS87XG4gIGlmIChzdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgZm9yICh2YXIgcGFyZW50ID0gZWxlbWVudDsgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7KSB7XG4gICAgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBhcmVudCk7XG4gICAgaWYgKGV4Y2x1ZGVTdGF0aWNQYXJlbnQgJiYgc3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UngudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG59XG5cbi8vIEFuaW1hdGVkIFNjcm9sbCBUb1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICBAcGFyYW0gdDogdGltZSAoZWxhcHNlZClcbiAgQHBhcmFtIGI6IGluaXRpYWwgdmFsdWVcbiAgQHBhcmFtIGM6IGFtb3VudCBvZiBjaGFuZ2VcbiAgQHBhcmFtIGQ6IGR1cmF0aW9uXG4qL1xuZnVuY3Rpb24gZWFzZU91dEN1YmljKHQsIGIsIGMsIGQpIHtcbiAgcmV0dXJuIGMgKiAoKHQgPSB0IC8gZCAtIDEpICogdCAqIHQgKyAxKSArIGI7XG59XG5mdW5jdGlvbiBhbmltYXRlZFNjcm9sbFRvKGVsZW1lbnQsIHRvKSB7XG4gIHZhciBkdXJhdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMjAwO1xuICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IG5vb3A7XG4gIHZhciBzdGFydCA9IGdldFNjcm9sbFRvcChlbGVtZW50KTtcbiAgdmFyIGNoYW5nZSA9IHRvIC0gc3RhcnQ7XG4gIHZhciBpbmNyZW1lbnQgPSAxMDtcbiAgdmFyIGN1cnJlbnRUaW1lID0gMDtcbiAgZnVuY3Rpb24gYW5pbWF0ZVNjcm9sbCgpIHtcbiAgICBjdXJyZW50VGltZSArPSBpbmNyZW1lbnQ7XG4gICAgdmFyIHZhbCA9IGVhc2VPdXRDdWJpYyhjdXJyZW50VGltZSwgc3RhcnQsIGNoYW5nZSwgZHVyYXRpb24pO1xuICAgIHNjcm9sbFRvKGVsZW1lbnQsIHZhbCk7XG4gICAgaWYgKGN1cnJlbnRUaW1lIDwgZHVyYXRpb24pIHtcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVNjcm9sbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBhbmltYXRlU2Nyb2xsKCk7XG59XG5cbi8vIFNjcm9sbCBJbnRvIFZpZXdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBzY3JvbGxJbnRvVmlldyhtZW51RWwsIGZvY3VzZWRFbCkge1xuICB2YXIgbWVudVJlY3QgPSBtZW51RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBmb2N1c2VkUmVjdCA9IGZvY3VzZWRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIG92ZXJTY3JvbGwgPSBmb2N1c2VkRWwub2Zmc2V0SGVpZ2h0IC8gMztcbiAgaWYgKGZvY3VzZWRSZWN0LmJvdHRvbSArIG92ZXJTY3JvbGwgPiBtZW51UmVjdC5ib3R0b20pIHtcbiAgICBzY3JvbGxUbyhtZW51RWwsIE1hdGgubWluKGZvY3VzZWRFbC5vZmZzZXRUb3AgKyBmb2N1c2VkRWwuY2xpZW50SGVpZ2h0IC0gbWVudUVsLm9mZnNldEhlaWdodCArIG92ZXJTY3JvbGwsIG1lbnVFbC5zY3JvbGxIZWlnaHQpKTtcbiAgfSBlbHNlIGlmIChmb2N1c2VkUmVjdC50b3AgLSBvdmVyU2Nyb2xsIDwgbWVudVJlY3QudG9wKSB7XG4gICAgc2Nyb2xsVG8obWVudUVsLCBNYXRoLm1heChmb2N1c2VkRWwub2Zmc2V0VG9wIC0gb3ZlclNjcm9sbCwgMCkpO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2V0IGJvdW5kaW5nIGNsaWVudCBvYmplY3Rcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBjYW5ub3QgZ2V0IGtleXMgdXNpbmcgYXJyYXkgbm90YXRpb24gd2l0aCBET01SZWN0XG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudE9iaihlbGVtZW50KSB7XG4gIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIHtcbiAgICBib3R0b206IHJlY3QuYm90dG9tLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgIHJpZ2h0OiByZWN0LnJpZ2h0LFxuICAgIHRvcDogcmVjdC50b3AsXG4gICAgd2lkdGg6IHJlY3Qud2lkdGhcbiAgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUb3VjaCBDYXBhYmlsaXR5IERldGVjdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gaXNUb3VjaENhcGFibGUoKSB7XG4gIHRyeSB7XG4gICAgZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ1RvdWNoRXZlbnQnKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1vYmlsZSBEZXZpY2UgRGV0ZWN0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBpc01vYmlsZURldmljZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGFzc2l2ZSBFdmVudCBEZXRlY3RvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yYWZncmFwaC9kZXRlY3QtaXQvYmxvYi9tYWluL3NyYy9pbmRleC50cyNMMTktTDM2XG52YXIgcGFzc2l2ZU9wdGlvbkFjY2Vzc2VkID0gZmFsc2U7XG52YXIgb3B0aW9ucyA9IHtcbiAgZ2V0IHBhc3NpdmUoKSB7XG4gICAgcmV0dXJuIHBhc3NpdmVPcHRpb25BY2Nlc3NlZCA9IHRydWU7XG4gIH1cbn07XG4vLyBjaGVjayBmb3IgU1NSXG52YXIgdyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDoge307XG5pZiAody5hZGRFdmVudExpc3RlbmVyICYmIHcucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICB3LmFkZEV2ZW50TGlzdGVuZXIoJ3AnLCBub29wLCBvcHRpb25zKTtcbiAgdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwJywgbm9vcCwgZmFsc2UpO1xufVxudmFyIHN1cHBvcnRzUGFzc2l2ZUV2ZW50cyA9IHBhc3NpdmVPcHRpb25BY2Nlc3NlZDtcbmZ1bmN0aW9uIG5vdE51bGxpc2goaXRlbSkge1xuICByZXR1cm4gaXRlbSAhPSBudWxsO1xufVxuZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJnKTtcbn1cbmZ1bmN0aW9uIHZhbHVlVGVybmFyeShpc011bHRpLCBtdWx0aVZhbHVlLCBzaW5nbGVWYWx1ZSkge1xuICByZXR1cm4gaXNNdWx0aSA/IG11bHRpVmFsdWUgOiBzaW5nbGVWYWx1ZTtcbn1cbmZ1bmN0aW9uIHNpbmdsZVZhbHVlQXNWYWx1ZShzaW5nbGVWYWx1ZSkge1xuICByZXR1cm4gc2luZ2xlVmFsdWU7XG59XG5mdW5jdGlvbiBtdWx0aVZhbHVlQXNWYWx1ZShtdWx0aVZhbHVlKSB7XG4gIHJldHVybiBtdWx0aVZhbHVlO1xufVxudmFyIHJlbW92ZVByb3BzID0gZnVuY3Rpb24gcmVtb3ZlUHJvcHMocHJvcHNPYmopIHtcbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBwcm9wZXJ0aWVzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICBwcm9wZXJ0aWVzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICB9XG4gIHZhciBwcm9wc01hcCA9IE9iamVjdC5lbnRyaWVzKHByb3BzT2JqKS5maWx0ZXIoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICB2YXIgX3JlZjIgPSBfc2xpY2VkVG9BcnJheShfcmVmLCAxKSxcbiAgICAgIGtleSA9IF9yZWYyWzBdO1xuICAgIHJldHVybiAhcHJvcGVydGllcy5pbmNsdWRlcyhrZXkpO1xuICB9KTtcbiAgcmV0dXJuIHByb3BzTWFwLnJlZHVjZShmdW5jdGlvbiAobmV3UHJvcHMsIF9yZWYzKSB7XG4gICAgdmFyIF9yZWY0ID0gX3NsaWNlZFRvQXJyYXkoX3JlZjMsIDIpLFxuICAgICAga2V5ID0gX3JlZjRbMF0sXG4gICAgICB2YWwgPSBfcmVmNFsxXTtcbiAgICBuZXdQcm9wc1trZXldID0gdmFsO1xuICAgIHJldHVybiBuZXdQcm9wcztcbiAgfSwge30pO1xufTtcblxudmFyIF9leGNsdWRlZCQzID0gW1wiY2hpbGRyZW5cIiwgXCJpbm5lclByb3BzXCJdLFxuICBfZXhjbHVkZWQyJDEgPSBbXCJjaGlsZHJlblwiLCBcImlubmVyUHJvcHNcIl07XG5mdW5jdGlvbiBnZXRNZW51UGxhY2VtZW50KF9yZWYpIHtcbiAgdmFyIHByZWZlcnJlZE1heEhlaWdodCA9IF9yZWYubWF4SGVpZ2h0LFxuICAgIG1lbnVFbCA9IF9yZWYubWVudUVsLFxuICAgIG1pbkhlaWdodCA9IF9yZWYubWluSGVpZ2h0LFxuICAgIHByZWZlcnJlZFBsYWNlbWVudCA9IF9yZWYucGxhY2VtZW50LFxuICAgIHNob3VsZFNjcm9sbCA9IF9yZWYuc2hvdWxkU2Nyb2xsLFxuICAgIGlzRml4ZWRQb3NpdGlvbiA9IF9yZWYuaXNGaXhlZFBvc2l0aW9uLFxuICAgIGNvbnRyb2xIZWlnaHQgPSBfcmVmLmNvbnRyb2xIZWlnaHQ7XG4gIHZhciBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQobWVudUVsKTtcbiAgdmFyIGRlZmF1bHRTdGF0ZSA9IHtcbiAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gIH07XG5cbiAgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmcsIHJldHVybiBkZWZhdWx0IHN0YXRlXG4gIGlmICghbWVudUVsIHx8ICFtZW51RWwub2Zmc2V0UGFyZW50KSByZXR1cm4gZGVmYXVsdFN0YXRlO1xuXG4gIC8vIHdlIGNhbid0IHRydXN0IGBzY3JvbGxQYXJlbnQuc2Nyb2xsSGVpZ2h0YCAtLT4gaXQgbWF5IGluY3JlYXNlIHdoZW5cbiAgLy8gdGhlIG1lbnUgaXMgcmVuZGVyZWRcbiAgdmFyIF9zY3JvbGxQYXJlbnQkZ2V0Qm91biA9IHNjcm9sbFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICBzY3JvbGxIZWlnaHQgPSBfc2Nyb2xsUGFyZW50JGdldEJvdW4uaGVpZ2h0O1xuICB2YXIgX21lbnVFbCRnZXRCb3VuZGluZ0NsID0gbWVudUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIG1lbnVCb3R0b20gPSBfbWVudUVsJGdldEJvdW5kaW5nQ2wuYm90dG9tLFxuICAgIG1lbnVIZWlnaHQgPSBfbWVudUVsJGdldEJvdW5kaW5nQ2wuaGVpZ2h0LFxuICAgIG1lbnVUb3AgPSBfbWVudUVsJGdldEJvdW5kaW5nQ2wudG9wO1xuICB2YXIgX21lbnVFbCRvZmZzZXRQYXJlbnQkID0gbWVudUVsLm9mZnNldFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICBjb250YWluZXJUb3AgPSBfbWVudUVsJG9mZnNldFBhcmVudCQudG9wO1xuICB2YXIgdmlld0hlaWdodCA9IGlzRml4ZWRQb3NpdGlvbiA/IHdpbmRvdy5pbm5lckhlaWdodCA6IG5vcm1hbGl6ZWRIZWlnaHQoc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHNjcm9sbFRvcCA9IGdldFNjcm9sbFRvcChzY3JvbGxQYXJlbnQpO1xuICB2YXIgbWFyZ2luQm90dG9tID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShtZW51RWwpLm1hcmdpbkJvdHRvbSwgMTApO1xuICB2YXIgbWFyZ2luVG9wID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShtZW51RWwpLm1hcmdpblRvcCwgMTApO1xuICB2YXIgdmlld1NwYWNlQWJvdmUgPSBjb250YWluZXJUb3AgLSBtYXJnaW5Ub3A7XG4gIHZhciB2aWV3U3BhY2VCZWxvdyA9IHZpZXdIZWlnaHQgLSBtZW51VG9wO1xuICB2YXIgc2Nyb2xsU3BhY2VBYm92ZSA9IHZpZXdTcGFjZUFib3ZlICsgc2Nyb2xsVG9wO1xuICB2YXIgc2Nyb2xsU3BhY2VCZWxvdyA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIG1lbnVUb3A7XG4gIHZhciBzY3JvbGxEb3duID0gbWVudUJvdHRvbSAtIHZpZXdIZWlnaHQgKyBzY3JvbGxUb3AgKyBtYXJnaW5Cb3R0b207XG4gIHZhciBzY3JvbGxVcCA9IHNjcm9sbFRvcCArIG1lbnVUb3AgLSBtYXJnaW5Ub3A7XG4gIHZhciBzY3JvbGxEdXJhdGlvbiA9IDE2MDtcbiAgc3dpdGNoIChwcmVmZXJyZWRQbGFjZW1lbnQpIHtcbiAgICBjYXNlICdhdXRvJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgLy8gMTogdGhlIG1lbnUgd2lsbCBmaXQsIGRvIG5vdGhpbmdcbiAgICAgIGlmICh2aWV3U3BhY2VCZWxvdyA+PSBtZW51SGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAyOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgc2Nyb2xsZWRcbiAgICAgIGlmIChzY3JvbGxTcGFjZUJlbG93ID49IG1lbnVIZWlnaHQgJiYgIWlzRml4ZWRQb3NpdGlvbikge1xuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgYW5pbWF0ZWRTY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbERvd24sIHNjcm9sbER1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMzogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIGNvbnN0cmFpbmVkXG4gICAgICBpZiAoIWlzRml4ZWRQb3NpdGlvbiAmJiBzY3JvbGxTcGFjZUJlbG93ID49IG1pbkhlaWdodCB8fCBpc0ZpeGVkUG9zaXRpb24gJiYgdmlld1NwYWNlQmVsb3cgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsRG93biwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2Ugd2FudCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlIG1lbnUgYXMgcG9zc2libGUgdG8gdGhlIHVzZXIsXG4gICAgICAgIC8vIHNvIGdpdmUgdGhlbSB3aGF0ZXZlciBpcyBhdmFpbGFibGUgYmVsb3cgcmF0aGVyIHRoYW4gdGhlIG1pbkhlaWdodC5cbiAgICAgICAgdmFyIGNvbnN0cmFpbmVkSGVpZ2h0ID0gaXNGaXhlZFBvc2l0aW9uID8gdmlld1NwYWNlQmVsb3cgLSBtYXJnaW5Cb3R0b20gOiBzY3JvbGxTcGFjZUJlbG93IC0gbWFyZ2luQm90dG9tO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBjb25zdHJhaW5lZEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBGb3JrZWQgYmV2aW91ciB3aGVuIHRoZXJlIGlzbid0IGVub3VnaCBzcGFjZSBiZWxvd1xuXG4gICAgICAvLyBBVVRPOiBmbGlwIHRoZSBtZW51LCByZW5kZXIgYWJvdmVcbiAgICAgIGlmIChwcmVmZXJyZWRQbGFjZW1lbnQgPT09ICdhdXRvJyB8fCBpc0ZpeGVkUG9zaXRpb24pIHtcbiAgICAgICAgLy8gbWF5IG5lZWQgdG8gYmUgY29uc3RyYWluZWQgYWZ0ZXIgZmxpcHBpbmdcbiAgICAgICAgdmFyIF9jb25zdHJhaW5lZEhlaWdodCA9IHByZWZlcnJlZE1heEhlaWdodDtcbiAgICAgICAgdmFyIHNwYWNlQWJvdmUgPSBpc0ZpeGVkUG9zaXRpb24gPyB2aWV3U3BhY2VBYm92ZSA6IHNjcm9sbFNwYWNlQWJvdmU7XG4gICAgICAgIGlmIChzcGFjZUFib3ZlID49IG1pbkhlaWdodCkge1xuICAgICAgICAgIF9jb25zdHJhaW5lZEhlaWdodCA9IE1hdGgubWluKHNwYWNlQWJvdmUgLSBtYXJnaW5Cb3R0b20gLSBjb250cm9sSGVpZ2h0LCBwcmVmZXJyZWRNYXhIZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IF9jb25zdHJhaW5lZEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBCT1RUT006IGFsbG93IGJyb3dzZXIgdG8gaW5jcmVhc2Ugc2Nyb2xsYWJsZSBhcmVhIGFuZCBpbW1lZGlhdGVseSBzZXQgc2Nyb2xsXG4gICAgICBpZiAocHJlZmVycmVkUGxhY2VtZW50ID09PSAnYm90dG9tJykge1xuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgc2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxEb3duKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICAvLyAxOiB0aGUgbWVudSB3aWxsIGZpdCwgZG8gbm90aGluZ1xuICAgICAgaWYgKHZpZXdTcGFjZUFib3ZlID49IG1lbnVIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDI6IHRoZSBtZW51IHdpbGwgZml0LCBpZiBzY3JvbGxlZFxuICAgICAgaWYgKHNjcm9sbFNwYWNlQWJvdmUgPj0gbWVudUhlaWdodCAmJiAhaXNGaXhlZFBvc2l0aW9uKSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsVXAsIHNjcm9sbER1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMzogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIGNvbnN0cmFpbmVkXG4gICAgICBpZiAoIWlzRml4ZWRQb3NpdGlvbiAmJiBzY3JvbGxTcGFjZUFib3ZlID49IG1pbkhlaWdodCB8fCBpc0ZpeGVkUG9zaXRpb24gJiYgdmlld1NwYWNlQWJvdmUgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgIHZhciBfY29uc3RyYWluZWRIZWlnaHQyID0gcHJlZmVycmVkTWF4SGVpZ2h0O1xuXG4gICAgICAgIC8vIHdlIHdhbnQgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZSBtZW51IGFzIHBvc3NpYmxlIHRvIHRoZSB1c2VyLFxuICAgICAgICAvLyBzbyBnaXZlIHRoZW0gd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIGJlbG93IHJhdGhlciB0aGFuIHRoZSBtaW5IZWlnaHQuXG4gICAgICAgIGlmICghaXNGaXhlZFBvc2l0aW9uICYmIHNjcm9sbFNwYWNlQWJvdmUgPj0gbWluSGVpZ2h0IHx8IGlzRml4ZWRQb3NpdGlvbiAmJiB2aWV3U3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgICBfY29uc3RyYWluZWRIZWlnaHQyID0gaXNGaXhlZFBvc2l0aW9uID8gdmlld1NwYWNlQWJvdmUgLSBtYXJnaW5Ub3AgOiBzY3JvbGxTcGFjZUFib3ZlIC0gbWFyZ2luVG9wO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsVXAsIHNjcm9sbER1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBfY29uc3RyYWluZWRIZWlnaHQyXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIG5vdCBlbm91Z2ggc3BhY2UsIHRoZSBicm93c2VyIFdJTEwgTk9UIGluY3JlYXNlIHNjcm9sbGFibGUgYXJlYSB3aGVuXG4gICAgICAvLyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZWxlbWVudCByZW5kZXJlZCBhYm92ZSB0aGUgdmlld3BvcnQgKG9ubHkgYmVsb3cpLlxuICAgICAgLy8gRmxpcCB0aGUgbWVudSwgcmVuZGVyIGJlbG93XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwbGFjZW1lbnQgcHJvdmlkZWQgXFxcIlwiLmNvbmNhdChwcmVmZXJyZWRQbGFjZW1lbnQsIFwiXFxcIi5cIikpO1xuICB9XG4gIHJldHVybiBkZWZhdWx0U3RhdGU7XG59XG5cbi8vIE1lbnUgQ29tcG9uZW50XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gYWxpZ25Ub0NvbnRyb2wocGxhY2VtZW50KSB7XG4gIHZhciBwbGFjZW1lbnRUb0NTU1Byb3AgPSB7XG4gICAgYm90dG9tOiAndG9wJyxcbiAgICB0b3A6ICdib3R0b20nXG4gIH07XG4gIHJldHVybiBwbGFjZW1lbnQgPyBwbGFjZW1lbnRUb0NTU1Byb3BbcGxhY2VtZW50XSA6ICdib3R0b20nO1xufVxudmFyIGNvZXJjZVBsYWNlbWVudCA9IGZ1bmN0aW9uIGNvZXJjZVBsYWNlbWVudChwKSB7XG4gIHJldHVybiBwID09PSAnYXV0bycgPyAnYm90dG9tJyA6IHA7XG59O1xudmFyIG1lbnVDU1MgPSBmdW5jdGlvbiBtZW51Q1NTKF9yZWYyLCB1bnN0eWxlZCkge1xuICB2YXIgX29iamVjdFNwcmVhZDI7XG4gIHZhciBwbGFjZW1lbnQgPSBfcmVmMi5wbGFjZW1lbnQsXG4gICAgX3JlZjIkdGhlbWUgPSBfcmVmMi50aGVtZSxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmMiR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgc3BhY2luZyA9IF9yZWYyJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZjIkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCgoX29iamVjdFNwcmVhZDIgPSB7XG4gICAgbGFiZWw6ICdtZW51J1xuICB9LCBfZGVmaW5lUHJvcGVydHkoX29iamVjdFNwcmVhZDIsIGFsaWduVG9Db250cm9sKHBsYWNlbWVudCksICcxMDAlJyksIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgXCJwb3NpdGlvblwiLCAnYWJzb2x1dGUnKSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBcIndpZHRoXCIsICcxMDAlJyksIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgXCJ6SW5kZXhcIiwgMSksIF9vYmplY3RTcHJlYWQyKSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9ycy5uZXV0cmFsMCxcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyxcbiAgICBib3hTaGFkb3c6ICcwIDAgMCAxcHggaHNsYSgwLCAwJSwgMCUsIDAuMSksIDAgNHB4IDExcHggaHNsYSgwLCAwJSwgMCUsIDAuMSknLFxuICAgIG1hcmdpbkJvdHRvbTogc3BhY2luZy5tZW51R3V0dGVyLFxuICAgIG1hcmdpblRvcDogc3BhY2luZy5tZW51R3V0dGVyXG4gIH0pO1xufTtcbnZhciBQb3J0YWxQbGFjZW1lbnRDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbi8vIE5PVEU6IGludGVybmFsIG9ubHlcbnZhciBNZW51UGxhY2VyID0gZnVuY3Rpb24gTWVudVBsYWNlcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBtaW5NZW51SGVpZ2h0ID0gcHJvcHMubWluTWVudUhlaWdodCxcbiAgICBtYXhNZW51SGVpZ2h0ID0gcHJvcHMubWF4TWVudUhlaWdodCxcbiAgICBtZW51UGxhY2VtZW50ID0gcHJvcHMubWVudVBsYWNlbWVudCxcbiAgICBtZW51UG9zaXRpb24gPSBwcm9wcy5tZW51UG9zaXRpb24sXG4gICAgbWVudVNob3VsZFNjcm9sbEludG9WaWV3ID0gcHJvcHMubWVudVNob3VsZFNjcm9sbEludG9WaWV3LFxuICAgIHRoZW1lID0gcHJvcHMudGhlbWU7XG4gIHZhciBfcmVmMyA9IFJlYWN0LnVzZUNvbnRleHQoUG9ydGFsUGxhY2VtZW50Q29udGV4dCkgfHwge30sXG4gICAgc2V0UG9ydGFsUGxhY2VtZW50ID0gX3JlZjMuc2V0UG9ydGFsUGxhY2VtZW50O1xuICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICB2YXIgX3VzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUobWF4TWVudUhlaWdodCksXG4gICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgbWF4SGVpZ2h0ID0gX3VzZVN0YXRlMlswXSxcbiAgICBzZXRNYXhIZWlnaHQgPSBfdXNlU3RhdGUyWzFdO1xuICB2YXIgX3VzZVN0YXRlMyA9IFJlYWN0LnVzZVN0YXRlKG51bGwpLFxuICAgIF91c2VTdGF0ZTQgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUzLCAyKSxcbiAgICBwbGFjZW1lbnQgPSBfdXNlU3RhdGU0WzBdLFxuICAgIHNldFBsYWNlbWVudCA9IF91c2VTdGF0ZTRbMV07XG4gIHZhciBjb250cm9sSGVpZ2h0ID0gdGhlbWUuc3BhY2luZy5jb250cm9sSGVpZ2h0O1xuICB1c2VMYXlvdXRFZmZlY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWVudUVsID0gcmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFtZW51RWwpIHJldHVybjtcblxuICAgIC8vIERPIE5PVCBzY3JvbGwgaWYgcG9zaXRpb24gaXMgZml4ZWRcbiAgICB2YXIgaXNGaXhlZFBvc2l0aW9uID0gbWVudVBvc2l0aW9uID09PSAnZml4ZWQnO1xuICAgIHZhciBzaG91bGRTY3JvbGwgPSBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgJiYgIWlzRml4ZWRQb3NpdGlvbjtcbiAgICB2YXIgc3RhdGUgPSBnZXRNZW51UGxhY2VtZW50KHtcbiAgICAgIG1heEhlaWdodDogbWF4TWVudUhlaWdodCxcbiAgICAgIG1lbnVFbDogbWVudUVsLFxuICAgICAgbWluSGVpZ2h0OiBtaW5NZW51SGVpZ2h0LFxuICAgICAgcGxhY2VtZW50OiBtZW51UGxhY2VtZW50LFxuICAgICAgc2hvdWxkU2Nyb2xsOiBzaG91bGRTY3JvbGwsXG4gICAgICBpc0ZpeGVkUG9zaXRpb246IGlzRml4ZWRQb3NpdGlvbixcbiAgICAgIGNvbnRyb2xIZWlnaHQ6IGNvbnRyb2xIZWlnaHRcbiAgICB9KTtcbiAgICBzZXRNYXhIZWlnaHQoc3RhdGUubWF4SGVpZ2h0KTtcbiAgICBzZXRQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgICBzZXRQb3J0YWxQbGFjZW1lbnQgPT09IG51bGwgfHwgc2V0UG9ydGFsUGxhY2VtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZXRQb3J0YWxQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgfSwgW21heE1lbnVIZWlnaHQsIG1lbnVQbGFjZW1lbnQsIG1lbnVQb3NpdGlvbiwgbWVudVNob3VsZFNjcm9sbEludG9WaWV3LCBtaW5NZW51SGVpZ2h0LCBzZXRQb3J0YWxQbGFjZW1lbnQsIGNvbnRyb2xIZWlnaHRdKTtcbiAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICByZWY6IHJlZixcbiAgICBwbGFjZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCB8fCBjb2VyY2VQbGFjZW1lbnQobWVudVBsYWNlbWVudCksXG4gICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodFxuICAgIH0pXG4gIH0pO1xufTtcbnZhciBNZW51ID0gZnVuY3Rpb24gTWVudShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbWVudScsIHtcbiAgICBtZW51OiB0cnVlXG4gIH0pLCB7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBNZW51JDEgPSBNZW51O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbnUgTGlzdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBtZW51TGlzdENTUyA9IGZ1bmN0aW9uIG1lbnVMaXN0Q1NTKF9yZWY0LCB1bnN0eWxlZCkge1xuICB2YXIgbWF4SGVpZ2h0ID0gX3JlZjQubWF4SGVpZ2h0LFxuICAgIGJhc2VVbml0ID0gX3JlZjQudGhlbWUuc3BhY2luZy5iYXNlVW5pdDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIG1heEhlaWdodDogbWF4SGVpZ2h0LFxuICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIC8vIHJlcXVpcmVkIGZvciBvZmZzZXRbSGVpZ2h0LCBUb3BdID4ga2V5Ym9hcmQgc2Nyb2xsXG4gICAgV2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6ICd0b3VjaCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBwYWRkaW5nQm90dG9tOiBiYXNlVW5pdCxcbiAgICBwYWRkaW5nVG9wOiBiYXNlVW5pdFxuICB9KTtcbn07XG52YXIgTWVudUxpc3QgPSBmdW5jdGlvbiBNZW51TGlzdChwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbWVudUxpc3QnLCB7XG4gICAgJ21lbnUtbGlzdCc6IHRydWUsXG4gICAgJ21lbnUtbGlzdC0taXMtbXVsdGknOiBpc011bHRpXG4gIH0pLCB7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IE5vdGljZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbm90aWNlQ1NTID0gZnVuY3Rpb24gbm90aWNlQ1NTKF9yZWY1LCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjUkdGhlbWUgPSBfcmVmNS50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWY1JHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjUkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgIHBhZGRpbmc6IFwiXCIuY29uY2F0KGJhc2VVbml0ICogMiwgXCJweCBcIikuY29uY2F0KGJhc2VVbml0ICogMywgXCJweFwiKVxuICB9KTtcbn07XG52YXIgbm9PcHRpb25zTWVzc2FnZUNTUyA9IG5vdGljZUNTUztcbnZhciBsb2FkaW5nTWVzc2FnZUNTUyA9IG5vdGljZUNTUztcbnZhciBOb09wdGlvbnNNZXNzYWdlID0gZnVuY3Rpb24gTm9PcHRpb25zTWVzc2FnZShfcmVmNikge1xuICB2YXIgX3JlZjYkY2hpbGRyZW4gPSBfcmVmNi5jaGlsZHJlbixcbiAgICBjaGlsZHJlbiA9IF9yZWY2JGNoaWxkcmVuID09PSB2b2lkIDAgPyAnTm8gb3B0aW9ucycgOiBfcmVmNiRjaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjYuaW5uZXJQcm9wcyxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjYsIF9leGNsdWRlZCQzKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHNcbiAgfSksICdub09wdGlvbnNNZXNzYWdlJywge1xuICAgICdtZW51LW5vdGljZSc6IHRydWUsXG4gICAgJ21lbnUtbm90aWNlLS1uby1vcHRpb25zJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgTG9hZGluZ01lc3NhZ2UgPSBmdW5jdGlvbiBMb2FkaW5nTWVzc2FnZShfcmVmNykge1xuICB2YXIgX3JlZjckY2hpbGRyZW4gPSBfcmVmNy5jaGlsZHJlbixcbiAgICBjaGlsZHJlbiA9IF9yZWY3JGNoaWxkcmVuID09PSB2b2lkIDAgPyAnTG9hZGluZy4uLicgOiBfcmVmNyRjaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjcuaW5uZXJQcm9wcyxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjcsIF9leGNsdWRlZDIkMSk7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0UHJvcHMpLCB7fSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICBpbm5lclByb3BzOiBpbm5lclByb3BzXG4gIH0pLCAnbG9hZGluZ01lc3NhZ2UnLCB7XG4gICAgJ21lbnUtbm90aWNlJzogdHJ1ZSxcbiAgICAnbWVudS1ub3RpY2UtLWxvYWRpbmcnOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IFBvcnRhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBtZW51UG9ydGFsQ1NTID0gZnVuY3Rpb24gbWVudVBvcnRhbENTUyhfcmVmOCkge1xuICB2YXIgcmVjdCA9IF9yZWY4LnJlY3QsXG4gICAgb2Zmc2V0ID0gX3JlZjgub2Zmc2V0LFxuICAgIHBvc2l0aW9uID0gX3JlZjgucG9zaXRpb247XG4gIHJldHVybiB7XG4gICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICB0b3A6IG9mZnNldCxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICB6SW5kZXg6IDFcbiAgfTtcbn07XG52YXIgTWVudVBvcnRhbCA9IGZ1bmN0aW9uIE1lbnVQb3J0YWwocHJvcHMpIHtcbiAgdmFyIGFwcGVuZFRvID0gcHJvcHMuYXBwZW5kVG8sXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb250cm9sRWxlbWVudCA9IHByb3BzLmNvbnRyb2xFbGVtZW50LFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIG1lbnVQbGFjZW1lbnQgPSBwcm9wcy5tZW51UGxhY2VtZW50LFxuICAgIG1lbnVQb3NpdGlvbiA9IHByb3BzLm1lbnVQb3NpdGlvbjtcbiAgdmFyIG1lbnVQb3J0YWxSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHZhciBjbGVhbnVwUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICB2YXIgX3VzZVN0YXRlNSA9IFJlYWN0LnVzZVN0YXRlKGNvZXJjZVBsYWNlbWVudChtZW51UGxhY2VtZW50KSksXG4gICAgX3VzZVN0YXRlNiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTUsIDIpLFxuICAgIHBsYWNlbWVudCA9IF91c2VTdGF0ZTZbMF0sXG4gICAgc2V0UG9ydGFsUGxhY2VtZW50ID0gX3VzZVN0YXRlNlsxXTtcbiAgdmFyIHBvcnRhbFBsYWNlbWVudENvbnRleHQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2V0UG9ydGFsUGxhY2VtZW50OiBzZXRQb3J0YWxQbGFjZW1lbnRcbiAgICB9O1xuICB9LCBbXSk7XG4gIHZhciBfdXNlU3RhdGU3ID0gUmVhY3QudXNlU3RhdGUobnVsbCksXG4gICAgX3VzZVN0YXRlOCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTcsIDIpLFxuICAgIGNvbXB1dGVkUG9zaXRpb24gPSBfdXNlU3RhdGU4WzBdLFxuICAgIHNldENvbXB1dGVkUG9zaXRpb24gPSBfdXNlU3RhdGU4WzFdO1xuICB2YXIgdXBkYXRlQ29tcHV0ZWRQb3NpdGlvbiA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNvbnRyb2xFbGVtZW50KSByZXR1cm47XG4gICAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudE9iaihjb250cm9sRWxlbWVudCk7XG4gICAgdmFyIHNjcm9sbERpc3RhbmNlID0gbWVudVBvc2l0aW9uID09PSAnZml4ZWQnID8gMCA6IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICB2YXIgb2Zmc2V0ID0gcmVjdFtwbGFjZW1lbnRdICsgc2Nyb2xsRGlzdGFuY2U7XG4gICAgaWYgKG9mZnNldCAhPT0gKGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5vZmZzZXQpIHx8IHJlY3QubGVmdCAhPT0gKGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5yZWN0LmxlZnQpIHx8IHJlY3Qud2lkdGggIT09IChjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC53aWR0aCkpIHtcbiAgICAgIHNldENvbXB1dGVkUG9zaXRpb24oe1xuICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgcmVjdDogcmVjdFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY29udHJvbEVsZW1lbnQsIG1lbnVQb3NpdGlvbiwgcGxhY2VtZW50LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ub2Zmc2V0LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC5sZWZ0LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC53aWR0aF0pO1xuICB1c2VMYXlvdXRFZmZlY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdKGZ1bmN0aW9uICgpIHtcbiAgICB1cGRhdGVDb21wdXRlZFBvc2l0aW9uKCk7XG4gIH0sIFt1cGRhdGVDb21wdXRlZFBvc2l0aW9uXSk7XG4gIHZhciBydW5BdXRvVXBkYXRlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgY2xlYW51cFJlZi5jdXJyZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjbGVhbnVwUmVmLmN1cnJlbnQoKTtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICAgIGlmIChjb250cm9sRWxlbWVudCAmJiBtZW51UG9ydGFsUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IGRvbS5hdXRvVXBkYXRlKGNvbnRyb2xFbGVtZW50LCBtZW51UG9ydGFsUmVmLmN1cnJlbnQsIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb24sIHtcbiAgICAgICAgZWxlbWVudFJlc2l6ZTogJ1Jlc2l6ZU9ic2VydmVyJyBpbiB3aW5kb3dcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2NvbnRyb2xFbGVtZW50LCB1cGRhdGVDb21wdXRlZFBvc2l0aW9uXSk7XG4gIHVzZUxheW91dEVmZmVjdF9fZGVmYXVsdFtcImRlZmF1bHRcIl0oZnVuY3Rpb24gKCkge1xuICAgIHJ1bkF1dG9VcGRhdGUoKTtcbiAgfSwgW3J1bkF1dG9VcGRhdGVdKTtcbiAgdmFyIHNldE1lbnVQb3J0YWxFbGVtZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKG1lbnVQb3J0YWxFbGVtZW50KSB7XG4gICAgbWVudVBvcnRhbFJlZi5jdXJyZW50ID0gbWVudVBvcnRhbEVsZW1lbnQ7XG4gICAgcnVuQXV0b1VwZGF0ZSgpO1xuICB9LCBbcnVuQXV0b1VwZGF0ZV0pO1xuXG4gIC8vIGJhaWwgZWFybHkgaWYgcmVxdWlyZWQgZWxlbWVudHMgYXJlbid0IHByZXNlbnRcbiAgaWYgKCFhcHBlbmRUbyAmJiBtZW51UG9zaXRpb24gIT09ICdmaXhlZCcgfHwgIWNvbXB1dGVkUG9zaXRpb24pIHJldHVybiBudWxsO1xuXG4gIC8vIHNhbWUgd3JhcHBlciBlbGVtZW50IHdoZXRoZXIgZml4ZWQgb3IgcG9ydGFsbGVkXG4gIHZhciBtZW51V3JhcHBlciA9IHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiBzZXRNZW51UG9ydGFsRWxlbWVudFxuICB9LCBnZXRTdHlsZVByb3BzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgIG9mZnNldDogY29tcHV0ZWRQb3NpdGlvbi5vZmZzZXQsXG4gICAgcG9zaXRpb246IG1lbnVQb3NpdGlvbixcbiAgICByZWN0OiBjb21wdXRlZFBvc2l0aW9uLnJlY3RcbiAgfSksICdtZW51UG9ydGFsJywge1xuICAgICdtZW51LXBvcnRhbCc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG4gIHJldHVybiByZWFjdC5qc3goUG9ydGFsUGxhY2VtZW50Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBwb3J0YWxQbGFjZW1lbnRDb250ZXh0XG4gIH0sIGFwcGVuZFRvID8gLyojX19QVVJFX18qL3JlYWN0RG9tLmNyZWF0ZVBvcnRhbChtZW51V3JhcHBlciwgYXBwZW5kVG8pIDogbWVudVdyYXBwZXIpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSb290IENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBjb250YWluZXJDU1MgPSBmdW5jdGlvbiBjb250YWluZXJDU1MoX3JlZikge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWYuaXNEaXNhYmxlZCxcbiAgICBpc1J0bCA9IF9yZWYuaXNSdGw7XG4gIHJldHVybiB7XG4gICAgbGFiZWw6ICdjb250YWluZXInLFxuICAgIGRpcmVjdGlvbjogaXNSdGwgPyAncnRsJyA6IHVuZGVmaW5lZCxcbiAgICBwb2ludGVyRXZlbnRzOiBpc0Rpc2FibGVkID8gJ25vbmUnIDogdW5kZWZpbmVkLFxuICAgIC8vIGNhbmNlbCBtb3VzZSBldmVudHMgd2hlbiBkaXNhYmxlZFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gIH07XG59O1xudmFyIFNlbGVjdENvbnRhaW5lciA9IGZ1bmN0aW9uIFNlbGVjdENvbnRhaW5lcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc1J0bCA9IHByb3BzLmlzUnRsO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnY29udGFpbmVyJywge1xuICAgICctLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnLS1pcy1ydGwnOiBpc1J0bFxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVmFsdWUgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIHZhbHVlQ29udGFpbmVyQ1NTID0gZnVuY3Rpb24gdmFsdWVDb250YWluZXJDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBzcGFjaW5nID0gX3JlZjIudGhlbWUuc3BhY2luZyxcbiAgICBpc011bHRpID0gX3JlZjIuaXNNdWx0aSxcbiAgICBoYXNWYWx1ZSA9IF9yZWYyLmhhc1ZhbHVlLFxuICAgIGNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSA9IF9yZWYyLnNlbGVjdFByb3BzLmNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6IGlzTXVsdGkgJiYgaGFzVmFsdWUgJiYgY29udHJvbFNob3VsZFJlbmRlclZhbHVlID8gJ2ZsZXgnIDogJ2dyaWQnLFxuICAgIGZsZXg6IDEsXG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICBXZWJraXRPdmVyZmxvd1Njcm9sbGluZzogJ3RvdWNoJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0IC8gMiwgXCJweCBcIikuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAyLCBcInB4XCIpXG4gIH0pO1xufTtcbnZhciBWYWx1ZUNvbnRhaW5lciA9IGZ1bmN0aW9uIFZhbHVlQ29udGFpbmVyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpLFxuICAgIGhhc1ZhbHVlID0gcHJvcHMuaGFzVmFsdWU7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICd2YWx1ZUNvbnRhaW5lcicsIHtcbiAgICAndmFsdWUtY29udGFpbmVyJzogdHJ1ZSxcbiAgICAndmFsdWUtY29udGFpbmVyLS1pcy1tdWx0aSc6IGlzTXVsdGksXG4gICAgJ3ZhbHVlLWNvbnRhaW5lci0taGFzLXZhbHVlJzogaGFzVmFsdWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEluZGljYXRvciBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgaW5kaWNhdG9yc0NvbnRhaW5lckNTUyA9IGZ1bmN0aW9uIGluZGljYXRvcnNDb250YWluZXJDU1MoKSB7XG4gIHJldHVybiB7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhTaHJpbms6IDBcbiAgfTtcbn07XG52YXIgSW5kaWNhdG9yc0NvbnRhaW5lciA9IGZ1bmN0aW9uIEluZGljYXRvcnNDb250YWluZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JzQ29udGFpbmVyJywge1xuICAgIGluZGljYXRvcnM6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG52YXIgX3RlbXBsYXRlT2JqZWN0O1xudmFyIF9leGNsdWRlZCQyID0gW1wic2l6ZVwiXSxcbiAgX2V4Y2x1ZGVkMiA9IFtcImlubmVyUHJvcHNcIiwgXCJpc1J0bFwiLCBcInNpemVcIl07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG52YXIgX3JlZjIgPSB7XG4gIG5hbWU6IFwiOG1ta2NnXCIsXG4gIHN0eWxlczogXCJkaXNwbGF5OmlubGluZS1ibG9jaztmaWxsOmN1cnJlbnRDb2xvcjtsaW5lLWhlaWdodDoxO3N0cm9rZTpjdXJyZW50Q29sb3I7c3Ryb2tlLXdpZHRoOjBcIlxufSA7XG52YXIgU3ZnID0gZnVuY3Rpb24gU3ZnKF9yZWYpIHtcbiAgdmFyIHNpemUgPSBfcmVmLnNpemUsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkJDIpO1xuICByZXR1cm4gcmVhY3QuanN4KFwic3ZnXCIsIF9leHRlbmRzKHtcbiAgICBoZWlnaHQ6IHNpemUsXG4gICAgd2lkdGg6IHNpemUsXG4gICAgdmlld0JveDogXCIwIDAgMjAgMjBcIixcbiAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLFxuICAgIGZvY3VzYWJsZTogXCJmYWxzZVwiLFxuICAgIGNzczogX3JlZjJcbiAgfSwgcHJvcHMpKTtcbn07XG52YXIgQ3Jvc3NJY29uID0gZnVuY3Rpb24gQ3Jvc3NJY29uKHByb3BzKSB7XG4gIHJldHVybiByZWFjdC5qc3goU3ZnLCBfZXh0ZW5kcyh7XG4gICAgc2l6ZTogMjBcbiAgfSwgcHJvcHMpLCByZWFjdC5qc3goXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xNC4zNDggMTQuODQ5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwbC0yLjY1MS0zLjAzMC0yLjY1MSAzLjAyOWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMC0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOSAwLTEuNjk3bDIuNzU4LTMuMTUtMi43NTktMy4xNTJjLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI4IDAtMS42OTdzMS4yMjgtMC40NjkgMS42OTcgMGwyLjY1MiAzLjAzMSAyLjY1MS0zLjAzMWMwLjQ2OS0wLjQ2OSAxLjIyOC0wLjQ2OSAxLjY5NyAwczAuNDY5IDEuMjI5IDAgMS42OTdsLTIuNzU4IDMuMTUyIDIuNzU4IDMuMTVjMC40NjkgMC40NjkgMC40NjkgMS4yMjkgMCAxLjY5OHpcIlxuICB9KSk7XG59O1xudmFyIERvd25DaGV2cm9uID0gZnVuY3Rpb24gRG93bkNoZXZyb24ocHJvcHMpIHtcbiAgcmV0dXJuIHJlYWN0LmpzeChTdmcsIF9leHRlbmRzKHtcbiAgICBzaXplOiAyMFxuICB9LCBwcm9wcyksIHJlYWN0LmpzeChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTQuNTE2IDcuNTQ4YzAuNDM2LTAuNDQ2IDEuMDQzLTAuNDgxIDEuNTc2IDBsMy45MDggMy43NDcgMy45MDgtMy43NDdjMC41MzMtMC40ODEgMS4xNDEtMC40NDYgMS41NzQgMCAwLjQzNiAwLjQ0NSAwLjQwOCAxLjE5NyAwIDEuNjE1LTAuNDA2IDAuNDE4LTQuNjk1IDQuNTAyLTQuNjk1IDQuNTAyLTAuMjE3IDAuMjIzLTAuNTAyIDAuMzM1LTAuNzg3IDAuMzM1cy0wLjU3LTAuMTEyLTAuNzg5LTAuMzM1YzAgMC00LjI4Ny00LjA4NC00LjY5NS00LjUwMnMtMC40MzYtMS4xNyAwLTEuNjE1elwiXG4gIH0pKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGJhc2VDU1MgPSBmdW5jdGlvbiBiYXNlQ1NTKF9yZWYzLCB1bnN0eWxlZCkge1xuICB2YXIgaXNGb2N1c2VkID0gX3JlZjMuaXNGb2N1c2VkLFxuICAgIF9yZWYzJHRoZW1lID0gX3JlZjMudGhlbWUsXG4gICAgYmFzZVVuaXQgPSBfcmVmMyR0aGVtZS5zcGFjaW5nLmJhc2VVbml0LFxuICAgIGNvbG9ycyA9IF9yZWYzJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgJzpob3Zlcic6IHtcbiAgICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MFxuICAgIH1cbiAgfSk7XG59O1xudmFyIGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbnZhciBEcm9wZG93bkluZGljYXRvciA9IGZ1bmN0aW9uIERyb3Bkb3duSW5kaWNhdG9yKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnZHJvcGRvd25JbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwgcmVhY3QuanN4KERvd25DaGV2cm9uLCBudWxsKSk7XG59O1xudmFyIGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbnZhciBDbGVhckluZGljYXRvciA9IGZ1bmN0aW9uIENsZWFySW5kaWNhdG9yKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnY2xlYXJJbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwgcmVhY3QuanN4KENyb3NzSWNvbiwgbnVsbCkpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gZnVuY3Rpb24gaW5kaWNhdG9yU2VwYXJhdG9yQ1NTKF9yZWY0LCB1bnN0eWxlZCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWY0LmlzRGlzYWJsZWQsXG4gICAgX3JlZjQkdGhlbWUgPSBfcmVmNC50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWY0JHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjQkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICAgIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICAgIHdpZHRoOiAxXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gICAgbWFyZ2luVG9wOiBiYXNlVW5pdCAqIDJcbiAgfSk7XG59O1xudmFyIEluZGljYXRvclNlcGFyYXRvciA9IGZ1bmN0aW9uIEluZGljYXRvclNlcGFyYXRvcihwcm9wcykge1xuICB2YXIgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJzcGFuXCIsIF9leHRlbmRzKHt9LCBpbm5lclByb3BzLCBnZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yU2VwYXJhdG9yJywge1xuICAgICdpbmRpY2F0b3Itc2VwYXJhdG9yJzogdHJ1ZVxuICB9KSkpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGxvYWRpbmdEb3RBbmltYXRpb25zID0gcmVhY3Qua2V5ZnJhbWVzKF90ZW1wbGF0ZU9iamVjdCB8fCAoX3RlbXBsYXRlT2JqZWN0ID0gX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbChbXCJcXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XFxuICA0MCUgeyBvcGFjaXR5OiAxOyB9XFxuXCJdKSkpO1xudmFyIGxvYWRpbmdJbmRpY2F0b3JDU1MgPSBmdW5jdGlvbiBsb2FkaW5nSW5kaWNhdG9yQ1NTKF9yZWY1LCB1bnN0eWxlZCkge1xuICB2YXIgaXNGb2N1c2VkID0gX3JlZjUuaXNGb2N1c2VkLFxuICAgIHNpemUgPSBfcmVmNS5zaXplLFxuICAgIF9yZWY1JHRoZW1lID0gX3JlZjUudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZjUkdGhlbWUuY29sb3JzLFxuICAgIGJhc2VVbml0ID0gX3JlZjUkdGhlbWUuc3BhY2luZy5iYXNlVW5pdDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnbG9hZGluZ0luZGljYXRvcicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gICAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgICBmb250U2l6ZTogc2l6ZSxcbiAgICBsaW5lSGVpZ2h0OiAxLFxuICAgIG1hcmdpblJpZ2h0OiBzaXplLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgdmVydGljYWxBbGlnbjogJ21pZGRsZSdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgcGFkZGluZzogYmFzZVVuaXQgKiAyXG4gIH0pO1xufTtcbnZhciBMb2FkaW5nRG90ID0gZnVuY3Rpb24gTG9hZGluZ0RvdChfcmVmNikge1xuICB2YXIgZGVsYXkgPSBfcmVmNi5kZWxheSxcbiAgICBvZmZzZXQgPSBfcmVmNi5vZmZzZXQ7XG4gIHJldHVybiByZWFjdC5qc3goXCJzcGFuXCIsIHtcbiAgICBjc3M6IC8qI19fUFVSRV9fKi9yZWFjdC5jc3Moe1xuICAgICAgYW5pbWF0aW9uOiBcIlwiLmNvbmNhdChsb2FkaW5nRG90QW5pbWF0aW9ucywgXCIgMXMgZWFzZS1pbi1vdXQgXCIpLmNvbmNhdChkZWxheSwgXCJtcyBpbmZpbml0ZTtcIiksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbSdcbiAgICB9LCBcIlwiICwgXCJcIiApXG4gIH0pO1xufTtcbnZhciBMb2FkaW5nSW5kaWNhdG9yID0gZnVuY3Rpb24gTG9hZGluZ0luZGljYXRvcihfcmVmNykge1xuICB2YXIgaW5uZXJQcm9wcyA9IF9yZWY3LmlubmVyUHJvcHMsXG4gICAgaXNSdGwgPSBfcmVmNy5pc1J0bCxcbiAgICBfcmVmNyRzaXplID0gX3JlZjcuc2l6ZSxcbiAgICBzaXplID0gX3JlZjckc2l6ZSA9PT0gdm9pZCAwID8gNCA6IF9yZWY3JHNpemUsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY3LCBfZXhjbHVkZWQyKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICBpc1J0bDogaXNSdGwsXG4gICAgc2l6ZTogc2l6ZVxuICB9KSwgJ2xvYWRpbmdJbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCByZWFjdC5qc3goTG9hZGluZ0RvdCwge1xuICAgIGRlbGF5OiAwLFxuICAgIG9mZnNldDogaXNSdGxcbiAgfSksIHJlYWN0LmpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDE2MCxcbiAgICBvZmZzZXQ6IHRydWVcbiAgfSksIHJlYWN0LmpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDMyMCxcbiAgICBvZmZzZXQ6ICFpc1J0bFxuICB9KSk7XG59O1xuXG52YXIgY3NzJDEgPSBmdW5jdGlvbiBjc3MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gX3JlZi5pc0ZvY3VzZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnMsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZiR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnY29udHJvbCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtaW5IZWlnaHQ6IHNwYWNpbmcuY29udHJvbEhlaWdodCxcbiAgICBvdXRsaW5lOiAnMCAhaW1wb3J0YW50JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0cmFuc2l0aW9uOiAnYWxsIDEwMG1zJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsNSA6IGNvbG9ycy5uZXV0cmFsMCxcbiAgICBib3JkZXJDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBpc0ZvY3VzZWQgPyBjb2xvcnMucHJpbWFyeSA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgYm94U2hhZG93OiBpc0ZvY3VzZWQgPyBcIjAgMCAwIDFweCBcIi5jb25jYXQoY29sb3JzLnByaW1hcnkpIDogdW5kZWZpbmVkLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgYm9yZGVyQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5wcmltYXJ5IDogY29sb3JzLm5ldXRyYWwzMFxuICAgIH1cbiAgfSk7XG59O1xudmFyIENvbnRyb2wgPSBmdW5jdGlvbiBDb250cm9sKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIG1lbnVJc09wZW4gPSBwcm9wcy5tZW51SXNPcGVuO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICByZWY6IGlubmVyUmVmXG4gIH0sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjb250cm9sJywge1xuICAgIGNvbnRyb2w6IHRydWUsXG4gICAgJ2NvbnRyb2wtLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnY29udHJvbC0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnY29udHJvbC0tbWVudS1pcy1vcGVuJzogbWVudUlzT3BlblxuICB9KSwgaW5uZXJQcm9wcywge1xuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkIHx8IHVuZGVmaW5lZFxuICB9KSwgY2hpbGRyZW4pO1xufTtcbnZhciBDb250cm9sJDEgPSBDb250cm9sO1xuXG52YXIgX2V4Y2x1ZGVkJDEgPSBbXCJkYXRhXCJdO1xudmFyIGdyb3VwQ1NTID0gZnVuY3Rpb24gZ3JvdXBDU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIHNwYWNpbmcgPSBfcmVmLnRoZW1lLnNwYWNpbmc7XG4gIHJldHVybiB1bnN0eWxlZCA/IHt9IDoge1xuICAgIHBhZGRpbmdCb3R0b206IHNwYWNpbmcuYmFzZVVuaXQgKiAyLFxuICAgIHBhZGRpbmdUb3A6IHNwYWNpbmcuYmFzZVVuaXQgKiAyXG4gIH07XG59O1xudmFyIEdyb3VwID0gZnVuY3Rpb24gR3JvdXAocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgY3ggPSBwcm9wcy5jeCxcbiAgICBnZXRTdHlsZXMgPSBwcm9wcy5nZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lcyA9IHByb3BzLmdldENsYXNzTmFtZXMsXG4gICAgSGVhZGluZyA9IHByb3BzLkhlYWRpbmcsXG4gICAgaGVhZGluZ1Byb3BzID0gcHJvcHMuaGVhZGluZ1Byb3BzLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGxhYmVsID0gcHJvcHMubGFiZWwsXG4gICAgdGhlbWUgPSBwcm9wcy50aGVtZSxcbiAgICBzZWxlY3RQcm9wcyA9IHByb3BzLnNlbGVjdFByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnZ3JvdXAnLCB7XG4gICAgZ3JvdXA6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCByZWFjdC5qc3goSGVhZGluZywgX2V4dGVuZHMoe30sIGhlYWRpbmdQcm9wcywge1xuICAgIHNlbGVjdFByb3BzOiBzZWxlY3RQcm9wcyxcbiAgICB0aGVtZTogdGhlbWUsXG4gICAgZ2V0U3R5bGVzOiBnZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICBjeDogY3hcbiAgfSksIGxhYmVsKSwgcmVhY3QuanN4KFwiZGl2XCIsIG51bGwsIGNoaWxkcmVuKSk7XG59O1xudmFyIGdyb3VwSGVhZGluZ0NTUyA9IGZ1bmN0aW9uIGdyb3VwSGVhZGluZ0NTUyhfcmVmMiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWYyJHRoZW1lID0gX3JlZjIudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZjIkdGhlbWUuY29sb3JzLFxuICAgIHNwYWNpbmcgPSBfcmVmMiR0aGVtZS5zcGFjaW5nO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdncm91cCcsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2Jsb2NrJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgIGZvbnRTaXplOiAnNzUlJyxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgbWFyZ2luQm90dG9tOiAnMC4yNWVtJyxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCAqIDMsXG4gICAgcGFkZGluZ1JpZ2h0OiBzcGFjaW5nLmJhc2VVbml0ICogMyxcbiAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJ1xuICB9KTtcbn07XG52YXIgR3JvdXBIZWFkaW5nID0gZnVuY3Rpb24gR3JvdXBIZWFkaW5nKHByb3BzKSB7XG4gIHZhciBfY2xlYW5Db21tb25Qcm9wcyA9IGNsZWFuQ29tbW9uUHJvcHMocHJvcHMpO1xuICAgIF9jbGVhbkNvbW1vblByb3BzLmRhdGE7XG4gICAgdmFyIGlubmVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX2NsZWFuQ29tbW9uUHJvcHMsIF9leGNsdWRlZCQxKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2dyb3VwSGVhZGluZycsIHtcbiAgICAnZ3JvdXAtaGVhZGluZyc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpKTtcbn07XG52YXIgR3JvdXAkMSA9IEdyb3VwO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiaW5uZXJSZWZcIiwgXCJpc0Rpc2FibGVkXCIsIFwiaXNIaWRkZW5cIiwgXCJpbnB1dENsYXNzTmFtZVwiXTtcbnZhciBpbnB1dENTUyA9IGZ1bmN0aW9uIGlucHV0Q1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIHZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICB2aXNpYmlsaXR5OiBpc0Rpc2FibGVkID8gJ2hpZGRlbicgOiAndmlzaWJsZScsXG4gICAgLy8gZm9yY2UgY3NzIHRvIHJlY29tcHV0ZSB3aGVuIHZhbHVlIGNoYW5nZSBkdWUgdG8gQGVtb3Rpb24gYnVnLlxuICAgIC8vIFdlIGNhbiByZW1vdmUgaXQgd2hlbmV2ZXIgdGhlIGJ1ZyBpcyBmaXhlZC5cbiAgICB0cmFuc2Zvcm06IHZhbHVlID8gJ3RyYW5zbGF0ZVooMCknIDogJydcbiAgfSwgY29udGFpbmVyU3R5bGUpLCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIG1hcmdpbjogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ1RvcDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODBcbiAgfSk7XG59O1xudmFyIHNwYWNpbmdTdHlsZSA9IHtcbiAgZ3JpZEFyZWE6ICcxIC8gMicsXG4gIGZvbnQ6ICdpbmhlcml0JyxcbiAgbWluV2lkdGg6ICcycHgnLFxuICBib3JkZXI6IDAsXG4gIG1hcmdpbjogMCxcbiAgb3V0bGluZTogMCxcbiAgcGFkZGluZzogMFxufTtcbnZhciBjb250YWluZXJTdHlsZSA9IHtcbiAgZmxleDogJzEgMSBhdXRvJyxcbiAgZGlzcGxheTogJ2lubGluZS1ncmlkJyxcbiAgZ3JpZEFyZWE6ICcxIC8gMSAvIDIgLyAzJyxcbiAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJzAgbWluLWNvbnRlbnQnLFxuICAnJjphZnRlcic6IF9vYmplY3RTcHJlYWQoe1xuICAgIGNvbnRlbnQ6ICdhdHRyKGRhdGEtdmFsdWUpIFwiIFwiJyxcbiAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICB3aGl0ZVNwYWNlOiAncHJlJ1xuICB9LCBzcGFjaW5nU3R5bGUpXG59O1xudmFyIGlucHV0U3R5bGUgPSBmdW5jdGlvbiBpbnB1dFN0eWxlKGlzSGlkZGVuKSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2lucHV0JyxcbiAgICBjb2xvcjogJ2luaGVyaXQnLFxuICAgIGJhY2tncm91bmQ6IDAsXG4gICAgb3BhY2l0eTogaXNIaWRkZW4gPyAwIDogMSxcbiAgICB3aWR0aDogJzEwMCUnXG4gIH0sIHNwYWNpbmdTdHlsZSk7XG59O1xudmFyIElucHV0ID0gZnVuY3Rpb24gSW5wdXQocHJvcHMpIHtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgdmFsdWUgPSBwcm9wcy52YWx1ZTtcbiAgdmFyIF9jbGVhbkNvbW1vblByb3BzID0gY2xlYW5Db21tb25Qcm9wcyhwcm9wcyksXG4gICAgaW5uZXJSZWYgPSBfY2xlYW5Db21tb25Qcm9wcy5pbm5lclJlZixcbiAgICBpc0Rpc2FibGVkID0gX2NsZWFuQ29tbW9uUHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc0hpZGRlbiA9IF9jbGVhbkNvbW1vblByb3BzLmlzSGlkZGVuLFxuICAgIGlucHV0Q2xhc3NOYW1lID0gX2NsZWFuQ29tbW9uUHJvcHMuaW5wdXRDbGFzc05hbWUsXG4gICAgaW5uZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfY2xlYW5Db21tb25Qcm9wcywgX2V4Y2x1ZGVkKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2lucHV0Jywge1xuICAgICdpbnB1dC1jb250YWluZXInOiB0cnVlXG4gIH0pLCB7XG4gICAgXCJkYXRhLXZhbHVlXCI6IHZhbHVlIHx8ICcnXG4gIH0pLCByZWFjdC5qc3goXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjeCh7XG4gICAgICBpbnB1dDogdHJ1ZVxuICAgIH0sIGlucHV0Q2xhc3NOYW1lKSxcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIHN0eWxlOiBpbnB1dFN0eWxlKGlzSGlkZGVuKSxcbiAgICBkaXNhYmxlZDogaXNEaXNhYmxlZFxuICB9LCBpbm5lclByb3BzKSkpO1xufTtcbnZhciBJbnB1dCQxID0gSW5wdXQ7XG5cbnZhciBtdWx0aVZhbHVlQ1NTID0gZnVuY3Rpb24gbXVsdGlWYWx1ZUNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnbXVsdGlWYWx1ZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIG1pbldpZHRoOiAwXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcnMubmV1dHJhbDEwLFxuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBtYXJnaW46IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBtdWx0aVZhbHVlTGFiZWxDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlTGFiZWxDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmMiR0aGVtZSA9IF9yZWYyLnRoZW1lLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYyJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnMsXG4gICAgY3JvcFdpdGhFbGxpcHNpcyA9IF9yZWYyLmNyb3BXaXRoRWxsaXBzaXM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiBjcm9wV2l0aEVsbGlwc2lzIHx8IGNyb3BXaXRoRWxsaXBzaXMgPT09IHVuZGVmaW5lZCA/ICdlbGxpcHNpcycgOiB1bmRlZmluZWQsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgZm9udFNpemU6ICc4NSUnLFxuICAgIHBhZGRpbmc6IDMsXG4gICAgcGFkZGluZ0xlZnQ6IDZcbiAgfSk7XG59O1xudmFyIG11bHRpVmFsdWVSZW1vdmVDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlUmVtb3ZlQ1NTKF9yZWYzLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjMkdGhlbWUgPSBfcmVmMy50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZjMkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmMyR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgY29sb3JzID0gX3JlZjMkdGhlbWUuY29sb3JzLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYzLmlzRm9jdXNlZDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4J1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5kYW5nZXJMaWdodCA6IHVuZGVmaW5lZCxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCxcbiAgICBwYWRkaW5nUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQsXG4gICAgJzpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLmRhbmdlckxpZ2h0LFxuICAgICAgY29sb3I6IGNvbG9ycy5kYW5nZXJcbiAgICB9XG4gIH0pO1xufTtcbnZhciBNdWx0aVZhbHVlR2VuZXJpYyA9IGZ1bmN0aW9uIE11bHRpVmFsdWVHZW5lcmljKF9yZWY0KSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWY0LmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBfcmVmNC5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIGlubmVyUHJvcHMsIGNoaWxkcmVuKTtcbn07XG52YXIgTXVsdGlWYWx1ZUNvbnRhaW5lciA9IE11bHRpVmFsdWVHZW5lcmljO1xudmFyIE11bHRpVmFsdWVMYWJlbCA9IE11bHRpVmFsdWVHZW5lcmljO1xuZnVuY3Rpb24gTXVsdGlWYWx1ZVJlbW92ZShfcmVmNSkge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmNS5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjUuaW5uZXJQcm9wcztcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcm9sZTogXCJidXR0b25cIlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwgcmVhY3QuanN4KENyb3NzSWNvbiwge1xuICAgIHNpemU6IDE0XG4gIH0pKTtcbn1cbnZhciBNdWx0aVZhbHVlID0gZnVuY3Rpb24gTXVsdGlWYWx1ZShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb21wb25lbnRzID0gcHJvcHMuY29tcG9uZW50cyxcbiAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICByZW1vdmVQcm9wcyA9IHByb3BzLnJlbW92ZVByb3BzLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHM7XG4gIHZhciBDb250YWluZXIgPSBjb21wb25lbnRzLkNvbnRhaW5lcixcbiAgICBMYWJlbCA9IGNvbXBvbmVudHMuTGFiZWwsXG4gICAgUmVtb3ZlID0gY29tcG9uZW50cy5SZW1vdmU7XG4gIHJldHVybiByZWFjdC5qc3goQ29udGFpbmVyLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtdWx0aVZhbHVlJywge1xuICAgICAgJ211bHRpLXZhbHVlJzogdHJ1ZSxcbiAgICAgICdtdWx0aS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gICAgfSkpLCBpbm5lclByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSwgcmVhY3QuanN4KExhYmVsLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZUxhYmVsJywge1xuICAgICAgJ211bHRpLXZhbHVlX19sYWJlbCc6IHRydWVcbiAgICB9KSksXG4gICAgc2VsZWN0UHJvcHM6IHNlbGVjdFByb3BzXG4gIH0sIGNoaWxkcmVuKSwgcmVhY3QuanN4KFJlbW92ZSwge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgaW5uZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZVJlbW92ZScsIHtcbiAgICAgICdtdWx0aS12YWx1ZV9fcmVtb3ZlJzogdHJ1ZVxuICAgIH0pKSwge30sIHtcbiAgICAgICdhcmlhLWxhYmVsJzogXCJSZW1vdmUgXCIuY29uY2F0KGNoaWxkcmVuIHx8ICdvcHRpb24nKVxuICAgIH0sIHJlbW92ZVByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSkpO1xufTtcbnZhciBNdWx0aVZhbHVlJDEgPSBNdWx0aVZhbHVlO1xuXG52YXIgb3B0aW9uQ1NTID0gZnVuY3Rpb24gb3B0aW9uQ1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYuaXNGb2N1c2VkLFxuICAgIGlzU2VsZWN0ZWQgPSBfcmVmLmlzU2VsZWN0ZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnb3B0aW9uJyxcbiAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6ICdyZ2JhKDAsIDAsIDAsIDApJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNTZWxlY3RlZCA/IGNvbG9ycy5wcmltYXJ5IDogaXNGb2N1c2VkID8gY29sb3JzLnByaW1hcnkyNSA6ICd0cmFuc3BhcmVudCcsXG4gICAgY29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDIwIDogaXNTZWxlY3RlZCA/IGNvbG9ycy5uZXV0cmFsMCA6ICdpbmhlcml0JyxcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0ICogMiwgXCJweCBcIikuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAzLCBcInB4XCIpLFxuICAgIC8vIHByb3ZpZGUgc29tZSBhZmZvcmRhbmNlIG9uIHRvdWNoIGRldmljZXNcbiAgICAnOmFjdGl2ZSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogIWlzRGlzYWJsZWQgPyBpc1NlbGVjdGVkID8gY29sb3JzLnByaW1hcnkgOiBjb2xvcnMucHJpbWFyeTUwIDogdW5kZWZpbmVkXG4gICAgfVxuICB9KTtcbn07XG52YXIgT3B0aW9uID0gZnVuY3Rpb24gT3B0aW9uKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpc1NlbGVjdGVkID0gcHJvcHMuaXNTZWxlY3RlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnb3B0aW9uJywge1xuICAgIG9wdGlvbjogdHJ1ZSxcbiAgICAnb3B0aW9uLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWQsXG4gICAgJ29wdGlvbi0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnb3B0aW9uLS1pcy1zZWxlY3RlZCc6IGlzU2VsZWN0ZWRcbiAgfSksIHtcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkXG4gIH0sIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIE9wdGlvbiQxID0gT3B0aW9uO1xuXG52YXIgcGxhY2Vob2xkZXJDU1MgPSBmdW5jdGlvbiBwbGFjZWhvbGRlckNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAncGxhY2Vob2xkZXInLFxuICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMydcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw1MCxcbiAgICBtYXJnaW5MZWZ0OiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBtYXJnaW5SaWdodDogc3BhY2luZy5iYXNlVW5pdCAvIDJcbiAgfSk7XG59O1xudmFyIFBsYWNlaG9sZGVyID0gZnVuY3Rpb24gUGxhY2Vob2xkZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdwbGFjZWhvbGRlcicsIHtcbiAgICBwbGFjZWhvbGRlcjogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgUGxhY2Vob2xkZXIkMSA9IFBsYWNlaG9sZGVyO1xuXG52YXIgY3NzID0gZnVuY3Rpb24gY3NzKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ3NpbmdsZVZhbHVlJyxcbiAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWw0MCA6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgbWFyZ2luTGVmdDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgbWFyZ2luUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSA9IGZ1bmN0aW9uIFNpbmdsZVZhbHVlKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnc2luZ2xlVmFsdWUnLCB7XG4gICAgJ3NpbmdsZS12YWx1ZSc6IHRydWUsXG4gICAgJ3NpbmdsZS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSQxID0gU2luZ2xlVmFsdWU7XG5cbnZhciBjb21wb25lbnRzID0ge1xuICBDbGVhckluZGljYXRvcjogQ2xlYXJJbmRpY2F0b3IsXG4gIENvbnRyb2w6IENvbnRyb2wkMSxcbiAgRHJvcGRvd25JbmRpY2F0b3I6IERyb3Bkb3duSW5kaWNhdG9yLFxuICBEb3duQ2hldnJvbjogRG93bkNoZXZyb24sXG4gIENyb3NzSWNvbjogQ3Jvc3NJY29uLFxuICBHcm91cDogR3JvdXAkMSxcbiAgR3JvdXBIZWFkaW5nOiBHcm91cEhlYWRpbmcsXG4gIEluZGljYXRvcnNDb250YWluZXI6IEluZGljYXRvcnNDb250YWluZXIsXG4gIEluZGljYXRvclNlcGFyYXRvcjogSW5kaWNhdG9yU2VwYXJhdG9yLFxuICBJbnB1dDogSW5wdXQkMSxcbiAgTG9hZGluZ0luZGljYXRvcjogTG9hZGluZ0luZGljYXRvcixcbiAgTWVudTogTWVudSQxLFxuICBNZW51TGlzdDogTWVudUxpc3QsXG4gIE1lbnVQb3J0YWw6IE1lbnVQb3J0YWwsXG4gIExvYWRpbmdNZXNzYWdlOiBMb2FkaW5nTWVzc2FnZSxcbiAgTm9PcHRpb25zTWVzc2FnZTogTm9PcHRpb25zTWVzc2FnZSxcbiAgTXVsdGlWYWx1ZTogTXVsdGlWYWx1ZSQxLFxuICBNdWx0aVZhbHVlQ29udGFpbmVyOiBNdWx0aVZhbHVlQ29udGFpbmVyLFxuICBNdWx0aVZhbHVlTGFiZWw6IE11bHRpVmFsdWVMYWJlbCxcbiAgTXVsdGlWYWx1ZVJlbW92ZTogTXVsdGlWYWx1ZVJlbW92ZSxcbiAgT3B0aW9uOiBPcHRpb24kMSxcbiAgUGxhY2Vob2xkZXI6IFBsYWNlaG9sZGVyJDEsXG4gIFNlbGVjdENvbnRhaW5lcjogU2VsZWN0Q29udGFpbmVyLFxuICBTaW5nbGVWYWx1ZTogU2luZ2xlVmFsdWUkMSxcbiAgVmFsdWVDb250YWluZXI6IFZhbHVlQ29udGFpbmVyXG59O1xudmFyIGRlZmF1bHRDb21wb25lbnRzID0gZnVuY3Rpb24gZGVmYXVsdENvbXBvbmVudHMocHJvcHMpIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29tcG9uZW50cyksIHByb3BzLmNvbXBvbmVudHMpO1xufTtcblxuZXhwb3J0cy5NZW51UGxhY2VyID0gTWVudVBsYWNlcjtcbmV4cG9ydHMuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5leHBvcnRzLmNsZWFuVmFsdWUgPSBjbGVhblZhbHVlO1xuZXhwb3J0cy5jbGVhckluZGljYXRvckNTUyA9IGNsZWFySW5kaWNhdG9yQ1NTO1xuZXhwb3J0cy5jb21wb25lbnRzID0gY29tcG9uZW50cztcbmV4cG9ydHMuY29udGFpbmVyQ1NTID0gY29udGFpbmVyQ1NTO1xuZXhwb3J0cy5jc3MgPSBjc3MkMTtcbmV4cG9ydHMuY3NzJDEgPSBjc3M7XG5leHBvcnRzLmRlZmF1bHRDb21wb25lbnRzID0gZGVmYXVsdENvbXBvbmVudHM7XG5leHBvcnRzLmRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gZHJvcGRvd25JbmRpY2F0b3JDU1M7XG5leHBvcnRzLmdyb3VwQ1NTID0gZ3JvdXBDU1M7XG5leHBvcnRzLmdyb3VwSGVhZGluZ0NTUyA9IGdyb3VwSGVhZGluZ0NTUztcbmV4cG9ydHMuaGFuZGxlSW5wdXRDaGFuZ2UgPSBoYW5kbGVJbnB1dENoYW5nZTtcbmV4cG9ydHMuaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gaW5kaWNhdG9yU2VwYXJhdG9yQ1NTO1xuZXhwb3J0cy5pbmRpY2F0b3JzQ29udGFpbmVyQ1NTID0gaW5kaWNhdG9yc0NvbnRhaW5lckNTUztcbmV4cG9ydHMuaW5wdXRDU1MgPSBpbnB1dENTUztcbmV4cG9ydHMuaXNEb2N1bWVudEVsZW1lbnQgPSBpc0RvY3VtZW50RWxlbWVudDtcbmV4cG9ydHMuaXNNb2JpbGVEZXZpY2UgPSBpc01vYmlsZURldmljZTtcbmV4cG9ydHMuaXNUb3VjaENhcGFibGUgPSBpc1RvdWNoQ2FwYWJsZTtcbmV4cG9ydHMubG9hZGluZ0luZGljYXRvckNTUyA9IGxvYWRpbmdJbmRpY2F0b3JDU1M7XG5leHBvcnRzLmxvYWRpbmdNZXNzYWdlQ1NTID0gbG9hZGluZ01lc3NhZ2VDU1M7XG5leHBvcnRzLm1lbnVDU1MgPSBtZW51Q1NTO1xuZXhwb3J0cy5tZW51TGlzdENTUyA9IG1lbnVMaXN0Q1NTO1xuZXhwb3J0cy5tZW51UG9ydGFsQ1NTID0gbWVudVBvcnRhbENTUztcbmV4cG9ydHMubXVsdGlWYWx1ZUFzVmFsdWUgPSBtdWx0aVZhbHVlQXNWYWx1ZTtcbmV4cG9ydHMubXVsdGlWYWx1ZUNTUyA9IG11bHRpVmFsdWVDU1M7XG5leHBvcnRzLm11bHRpVmFsdWVMYWJlbENTUyA9IG11bHRpVmFsdWVMYWJlbENTUztcbmV4cG9ydHMubXVsdGlWYWx1ZVJlbW92ZUNTUyA9IG11bHRpVmFsdWVSZW1vdmVDU1M7XG5leHBvcnRzLm5vT3B0aW9uc01lc3NhZ2VDU1MgPSBub09wdGlvbnNNZXNzYWdlQ1NTO1xuZXhwb3J0cy5ub29wID0gbm9vcDtcbmV4cG9ydHMubm90TnVsbGlzaCA9IG5vdE51bGxpc2g7XG5leHBvcnRzLm9wdGlvbkNTUyA9IG9wdGlvbkNTUztcbmV4cG9ydHMucGxhY2Vob2xkZXJDU1MgPSBwbGFjZWhvbGRlckNTUztcbmV4cG9ydHMucmVtb3ZlUHJvcHMgPSByZW1vdmVQcm9wcztcbmV4cG9ydHMuc2Nyb2xsSW50b1ZpZXcgPSBzY3JvbGxJbnRvVmlldztcbmV4cG9ydHMuc2luZ2xlVmFsdWVBc1ZhbHVlID0gc2luZ2xlVmFsdWVBc1ZhbHVlO1xuZXhwb3J0cy5zdXBwb3J0c1Bhc3NpdmVFdmVudHMgPSBzdXBwb3J0c1Bhc3NpdmVFdmVudHM7XG5leHBvcnRzLnZhbHVlQ29udGFpbmVyQ1NTID0gdmFsdWVDb250YWluZXJDU1M7XG5leHBvcnRzLnZhbHVlVGVybmFyeSA9IHZhbHVlVGVybmFyeTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIF9leHRlbmRzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJyk7XG52YXIgX29iamVjdFNwcmVhZCA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xudmFyIF9jbGFzc0NhbGxDaGVjayA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcbnZhciBfY3JlYXRlQ2xhc3MgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG52YXIgX2luaGVyaXRzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cycpO1xudmFyIF9jcmVhdGVTdXBlciA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXInKTtcbnZhciBfdG9Db25zdW1hYmxlQXJyYXkgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5Jyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIGluZGV4ID0gcmVxdWlyZSgnLi9pbmRleC02NjVjNGVkOC5janMucHJvZC5qcycpO1xudmFyIHJlYWN0ID0gcmVxdWlyZSgnQGVtb3Rpb24vcmVhY3QnKTtcbnZhciBtZW1vaXplT25lID0gcmVxdWlyZSgnbWVtb2l6ZS1vbmUnKTtcbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wRGVmYXVsdCAoZSkgeyByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogeyAnZGVmYXVsdCc6IGUgfTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcE5hbWVzcGFjZShlKSB7XG4gIGlmIChlICYmIGUuX19lc01vZHVsZSkgcmV0dXJuIGU7XG4gIHZhciBuID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKGUpIHtcbiAgICBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICBpZiAoayAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZVtrXTsgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuW1wiZGVmYXVsdFwiXSA9IGU7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKG4pO1xufVxuXG52YXIgUmVhY3RfX25hbWVzcGFjZSA9IC8qI19fUFVSRV9fKi9faW50ZXJvcE5hbWVzcGFjZShSZWFjdCk7XG52YXIgbWVtb2l6ZU9uZV9fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9faW50ZXJvcERlZmF1bHQobWVtb2l6ZU9uZSk7XG5cbi8vIEFzc2lzdGl2ZSB0ZXh0IHRvIGRlc2NyaWJlIHZpc3VhbCBlbGVtZW50cy4gSGlkZGVuIGZvciBzaWdodGVkIHVzZXJzLlxudmFyIF9yZWYgPSB7XG4gIG5hbWU6IFwiN3BnMGNqLWExMXlUZXh0XCIsXG4gIHN0eWxlczogXCJsYWJlbDphMTF5VGV4dDt6LWluZGV4Ojk5OTk7Ym9yZGVyOjA7Y2xpcDpyZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7aGVpZ2h0OjFweDt3aWR0aDoxcHg7cG9zaXRpb246YWJzb2x1dGU7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDt3aGl0ZS1zcGFjZTpub3dyYXBcIlxufSA7XG52YXIgQTExeVRleHQgPSBmdW5jdGlvbiBBMTF5VGV4dChwcm9wcykge1xuICByZXR1cm4gcmVhY3QuanN4KFwic3BhblwiLCBfZXh0ZW5kcyh7XG4gICAgY3NzOiBfcmVmXG4gIH0sIHByb3BzKSk7XG59O1xudmFyIEExMXlUZXh0JDEgPSBBMTF5VGV4dDtcblxudmFyIGRlZmF1bHRBcmlhTGl2ZU1lc3NhZ2VzID0ge1xuICBndWlkYW5jZTogZnVuY3Rpb24gZ3VpZGFuY2UocHJvcHMpIHtcbiAgICB2YXIgaXNTZWFyY2hhYmxlID0gcHJvcHMuaXNTZWFyY2hhYmxlLFxuICAgICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGksXG4gICAgICB0YWJTZWxlY3RzVmFsdWUgPSBwcm9wcy50YWJTZWxlY3RzVmFsdWUsXG4gICAgICBjb250ZXh0ID0gcHJvcHMuY29udGV4dCxcbiAgICAgIGlzSW5pdGlhbEZvY3VzID0gcHJvcHMuaXNJbml0aWFsRm9jdXM7XG4gICAgc3dpdGNoIChjb250ZXh0KSB7XG4gICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgcmV0dXJuIFwiVXNlIFVwIGFuZCBEb3duIHRvIGNob29zZSBvcHRpb25zLCBwcmVzcyBFbnRlciB0byBzZWxlY3QgdGhlIGN1cnJlbnRseSBmb2N1c2VkIG9wdGlvbiwgcHJlc3MgRXNjYXBlIHRvIGV4aXQgdGhlIG1lbnVcIi5jb25jYXQodGFiU2VsZWN0c1ZhbHVlID8gJywgcHJlc3MgVGFiIHRvIHNlbGVjdCB0aGUgb3B0aW9uIGFuZCBleGl0IHRoZSBtZW51JyA6ICcnLCBcIi5cIik7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIHJldHVybiBpc0luaXRpYWxGb2N1cyA/IFwiXCIuY29uY2F0KHByb3BzWydhcmlhLWxhYmVsJ10gfHwgJ1NlbGVjdCcsIFwiIGlzIGZvY3VzZWQgXCIpLmNvbmNhdChpc1NlYXJjaGFibGUgPyAnLHR5cGUgdG8gcmVmaW5lIGxpc3QnIDogJycsIFwiLCBwcmVzcyBEb3duIHRvIG9wZW4gdGhlIG1lbnUsIFwiKS5jb25jYXQoaXNNdWx0aSA/ICcgcHJlc3MgbGVmdCB0byBmb2N1cyBzZWxlY3RlZCB2YWx1ZXMnIDogJycpIDogJyc7XG4gICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgIHJldHVybiAnVXNlIGxlZnQgYW5kIHJpZ2h0IHRvIHRvZ2dsZSBiZXR3ZWVuIGZvY3VzZWQgdmFsdWVzLCBwcmVzcyBCYWNrc3BhY2UgdG8gcmVtb3ZlIHRoZSBjdXJyZW50bHkgZm9jdXNlZCB2YWx1ZSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9LFxuICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJvcHMpIHtcbiAgICB2YXIgYWN0aW9uID0gcHJvcHMuYWN0aW9uLFxuICAgICAgX3Byb3BzJGxhYmVsID0gcHJvcHMubGFiZWwsXG4gICAgICBsYWJlbCA9IF9wcm9wcyRsYWJlbCA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkbGFiZWwsXG4gICAgICBsYWJlbHMgPSBwcm9wcy5sYWJlbHMsXG4gICAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZDtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnZGVzZWxlY3Qtb3B0aW9uJzpcbiAgICAgIGNhc2UgJ3BvcC12YWx1ZSc6XG4gICAgICBjYXNlICdyZW1vdmUtdmFsdWUnOlxuICAgICAgICByZXR1cm4gXCJvcHRpb24gXCIuY29uY2F0KGxhYmVsLCBcIiwgZGVzZWxlY3RlZC5cIik7XG4gICAgICBjYXNlICdjbGVhcic6XG4gICAgICAgIHJldHVybiAnQWxsIHNlbGVjdGVkIG9wdGlvbnMgaGF2ZSBiZWVuIGNsZWFyZWQuJztcbiAgICAgIGNhc2UgJ2luaXRpYWwtaW5wdXQtZm9jdXMnOlxuICAgICAgICByZXR1cm4gXCJvcHRpb25cIi5jb25jYXQobGFiZWxzLmxlbmd0aCA+IDEgPyAncycgOiAnJywgXCIgXCIpLmNvbmNhdChsYWJlbHMuam9pbignLCcpLCBcIiwgc2VsZWN0ZWQuXCIpO1xuICAgICAgY2FzZSAnc2VsZWN0LW9wdGlvbic6XG4gICAgICAgIHJldHVybiBpc0Rpc2FibGVkID8gXCJvcHRpb24gXCIuY29uY2F0KGxhYmVsLCBcIiBpcyBkaXNhYmxlZC4gU2VsZWN0IGFub3RoZXIgb3B0aW9uLlwiKSA6IFwib3B0aW9uIFwiLmNvbmNhdChsYWJlbCwgXCIsIHNlbGVjdGVkLlwiKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH0sXG4gIG9uRm9jdXM6IGZ1bmN0aW9uIG9uRm9jdXMocHJvcHMpIHtcbiAgICB2YXIgY29udGV4dCA9IHByb3BzLmNvbnRleHQsXG4gICAgICBmb2N1c2VkID0gcHJvcHMuZm9jdXNlZCxcbiAgICAgIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zLFxuICAgICAgX3Byb3BzJGxhYmVsMiA9IHByb3BzLmxhYmVsLFxuICAgICAgbGFiZWwgPSBfcHJvcHMkbGFiZWwyID09PSB2b2lkIDAgPyAnJyA6IF9wcm9wcyRsYWJlbDIsXG4gICAgICBzZWxlY3RWYWx1ZSA9IHByb3BzLnNlbGVjdFZhbHVlLFxuICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICBpc1NlbGVjdGVkID0gcHJvcHMuaXNTZWxlY3RlZCxcbiAgICAgIGlzQXBwbGVEZXZpY2UgPSBwcm9wcy5pc0FwcGxlRGV2aWNlO1xuICAgIHZhciBnZXRBcnJheUluZGV4ID0gZnVuY3Rpb24gZ2V0QXJyYXlJbmRleChhcnIsIGl0ZW0pIHtcbiAgICAgIHJldHVybiBhcnIgJiYgYXJyLmxlbmd0aCA/IFwiXCIuY29uY2F0KGFyci5pbmRleE9mKGl0ZW0pICsgMSwgXCIgb2YgXCIpLmNvbmNhdChhcnIubGVuZ3RoKSA6ICcnO1xuICAgIH07XG4gICAgaWYgKGNvbnRleHQgPT09ICd2YWx1ZScgJiYgc2VsZWN0VmFsdWUpIHtcbiAgICAgIHJldHVybiBcInZhbHVlIFwiLmNvbmNhdChsYWJlbCwgXCIgZm9jdXNlZCwgXCIpLmNvbmNhdChnZXRBcnJheUluZGV4KHNlbGVjdFZhbHVlLCBmb2N1c2VkKSwgXCIuXCIpO1xuICAgIH1cbiAgICBpZiAoY29udGV4dCA9PT0gJ21lbnUnICYmIGlzQXBwbGVEZXZpY2UpIHtcbiAgICAgIHZhciBkaXNhYmxlZCA9IGlzRGlzYWJsZWQgPyAnIGRpc2FibGVkJyA6ICcnO1xuICAgICAgdmFyIHN0YXR1cyA9IFwiXCIuY29uY2F0KGlzU2VsZWN0ZWQgPyAnIHNlbGVjdGVkJyA6ICcnKS5jb25jYXQoZGlzYWJsZWQpO1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KGxhYmVsKS5jb25jYXQoc3RhdHVzLCBcIiwgXCIpLmNvbmNhdChnZXRBcnJheUluZGV4KG9wdGlvbnMsIGZvY3VzZWQpLCBcIi5cIik7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfSxcbiAgb25GaWx0ZXI6IGZ1bmN0aW9uIG9uRmlsdGVyKHByb3BzKSB7XG4gICAgdmFyIGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgICAgcmVzdWx0c01lc3NhZ2UgPSBwcm9wcy5yZXN1bHRzTWVzc2FnZTtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQocmVzdWx0c01lc3NhZ2UpLmNvbmNhdChpbnB1dFZhbHVlID8gJyBmb3Igc2VhcmNoIHRlcm0gJyArIGlucHV0VmFsdWUgOiAnJywgXCIuXCIpO1xuICB9XG59O1xuXG52YXIgTGl2ZVJlZ2lvbiA9IGZ1bmN0aW9uIExpdmVSZWdpb24ocHJvcHMpIHtcbiAgdmFyIGFyaWFTZWxlY3Rpb24gPSBwcm9wcy5hcmlhU2VsZWN0aW9uLFxuICAgIGZvY3VzZWRPcHRpb24gPSBwcm9wcy5mb2N1c2VkT3B0aW9uLFxuICAgIGZvY3VzZWRWYWx1ZSA9IHByb3BzLmZvY3VzZWRWYWx1ZSxcbiAgICBmb2N1c2FibGVPcHRpb25zID0gcHJvcHMuZm9jdXNhYmxlT3B0aW9ucyxcbiAgICBpc0ZvY3VzZWQgPSBwcm9wcy5pc0ZvY3VzZWQsXG4gICAgc2VsZWN0VmFsdWUgPSBwcm9wcy5zZWxlY3RWYWx1ZSxcbiAgICBzZWxlY3RQcm9wcyA9IHByb3BzLnNlbGVjdFByb3BzLFxuICAgIGlkID0gcHJvcHMuaWQsXG4gICAgaXNBcHBsZURldmljZSA9IHByb3BzLmlzQXBwbGVEZXZpY2U7XG4gIHZhciBhcmlhTGl2ZU1lc3NhZ2VzID0gc2VsZWN0UHJvcHMuYXJpYUxpdmVNZXNzYWdlcyxcbiAgICBnZXRPcHRpb25MYWJlbCA9IHNlbGVjdFByb3BzLmdldE9wdGlvbkxhYmVsLFxuICAgIGlucHV0VmFsdWUgPSBzZWxlY3RQcm9wcy5pbnB1dFZhbHVlLFxuICAgIGlzTXVsdGkgPSBzZWxlY3RQcm9wcy5pc011bHRpLFxuICAgIGlzT3B0aW9uRGlzYWJsZWQgPSBzZWxlY3RQcm9wcy5pc09wdGlvbkRpc2FibGVkLFxuICAgIGlzU2VhcmNoYWJsZSA9IHNlbGVjdFByb3BzLmlzU2VhcmNoYWJsZSxcbiAgICBtZW51SXNPcGVuID0gc2VsZWN0UHJvcHMubWVudUlzT3BlbixcbiAgICBvcHRpb25zID0gc2VsZWN0UHJvcHMub3B0aW9ucyxcbiAgICBzY3JlZW5SZWFkZXJTdGF0dXMgPSBzZWxlY3RQcm9wcy5zY3JlZW5SZWFkZXJTdGF0dXMsXG4gICAgdGFiU2VsZWN0c1ZhbHVlID0gc2VsZWN0UHJvcHMudGFiU2VsZWN0c1ZhbHVlLFxuICAgIGlzTG9hZGluZyA9IHNlbGVjdFByb3BzLmlzTG9hZGluZztcbiAgdmFyIGFyaWFMYWJlbCA9IHNlbGVjdFByb3BzWydhcmlhLWxhYmVsJ107XG4gIHZhciBhcmlhTGl2ZSA9IHNlbGVjdFByb3BzWydhcmlhLWxpdmUnXTtcblxuICAvLyBVcGRhdGUgYXJpYSBsaXZlIG1lc3NhZ2UgY29uZmlndXJhdGlvbiB3aGVuIHByb3AgY2hhbmdlc1xuICB2YXIgbWVzc2FnZXMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0QXJpYUxpdmVNZXNzYWdlcyksIGFyaWFMaXZlTWVzc2FnZXMgfHwge30pO1xuICB9LCBbYXJpYUxpdmVNZXNzYWdlc10pO1xuXG4gIC8vIFVwZGF0ZSBhcmlhIGxpdmUgc2VsZWN0ZWQgb3B0aW9uIHdoZW4gcHJvcCBjaGFuZ2VzXG4gIHZhciBhcmlhU2VsZWN0ZWQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICcnO1xuICAgIGlmIChhcmlhU2VsZWN0aW9uICYmIG1lc3NhZ2VzLm9uQ2hhbmdlKSB7XG4gICAgICB2YXIgb3B0aW9uID0gYXJpYVNlbGVjdGlvbi5vcHRpb24sXG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucyA9IGFyaWFTZWxlY3Rpb24ub3B0aW9ucyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlID0gYXJpYVNlbGVjdGlvbi5yZW1vdmVkVmFsdWUsXG4gICAgICAgIHJlbW92ZWRWYWx1ZXMgPSBhcmlhU2VsZWN0aW9uLnJlbW92ZWRWYWx1ZXMsXG4gICAgICAgIHZhbHVlID0gYXJpYVNlbGVjdGlvbi52YWx1ZTtcbiAgICAgIC8vIHNlbGVjdC1vcHRpb24gd2hlbiAhaXNNdWx0aSBkb2VzIG5vdCByZXR1cm4gb3B0aW9uIHNvIHdlIGFzc3VtZSBzZWxlY3RlZCBvcHRpb24gaXMgdmFsdWVcbiAgICAgIHZhciBhc09wdGlvbiA9IGZ1bmN0aW9uIGFzT3B0aW9uKHZhbCkge1xuICAgICAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsKSA/IHZhbCA6IG51bGw7XG4gICAgICB9O1xuXG4gICAgICAvLyBJZiB0aGVyZSBpcyBqdXN0IG9uZSBpdGVtIGZyb20gdGhlIGFjdGlvbiB0aGVuIGdldCBpdHMgbGFiZWxcbiAgICAgIHZhciBzZWxlY3RlZCA9IHJlbW92ZWRWYWx1ZSB8fCBvcHRpb24gfHwgYXNPcHRpb24odmFsdWUpO1xuICAgICAgdmFyIGxhYmVsID0gc2VsZWN0ZWQgPyBnZXRPcHRpb25MYWJlbChzZWxlY3RlZCkgOiAnJztcblxuICAgICAgLy8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGl0ZW1zIGZyb20gdGhlIGFjdGlvbiB0aGVuIHJldHVybiBhbiBhcnJheSBvZiBsYWJlbHNcbiAgICAgIHZhciBtdWx0aVNlbGVjdGVkID0gc2VsZWN0ZWRPcHRpb25zIHx8IHJlbW92ZWRWYWx1ZXMgfHwgdW5kZWZpbmVkO1xuICAgICAgdmFyIGxhYmVscyA9IG11bHRpU2VsZWN0ZWQgPyBtdWx0aVNlbGVjdGVkLm1hcChnZXRPcHRpb25MYWJlbCkgOiBbXTtcbiAgICAgIHZhciBvbkNoYW5nZVByb3BzID0gX29iamVjdFNwcmVhZCh7XG4gICAgICAgIC8vIG11bHRpU2VsZWN0ZWQgaXRlbXMgYXJlIHVzdWFsbHkgaXRlbXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBzZWxlY3RlZFxuICAgICAgICAvLyBvciBzZXQgYnkgdGhlIHVzZXIgYXMgYSBkZWZhdWx0IHZhbHVlIHNvIHdlIGFzc3VtZSB0aGV5IGFyZSBub3QgZGlzYWJsZWRcbiAgICAgICAgaXNEaXNhYmxlZDogc2VsZWN0ZWQgJiYgaXNPcHRpb25EaXNhYmxlZChzZWxlY3RlZCwgc2VsZWN0VmFsdWUpLFxuICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgIGxhYmVsczogbGFiZWxzXG4gICAgICB9LCBhcmlhU2VsZWN0aW9uKTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlcy5vbkNoYW5nZShvbkNoYW5nZVByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sIFthcmlhU2VsZWN0aW9uLCBtZXNzYWdlcywgaXNPcHRpb25EaXNhYmxlZCwgc2VsZWN0VmFsdWUsIGdldE9wdGlvbkxhYmVsXSk7XG4gIHZhciBhcmlhRm9jdXNlZCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBmb2N1c01zZyA9ICcnO1xuICAgIHZhciBmb2N1c2VkID0gZm9jdXNlZE9wdGlvbiB8fCBmb2N1c2VkVmFsdWU7XG4gICAgdmFyIGlzU2VsZWN0ZWQgPSAhIShmb2N1c2VkT3B0aW9uICYmIHNlbGVjdFZhbHVlICYmIHNlbGVjdFZhbHVlLmluY2x1ZGVzKGZvY3VzZWRPcHRpb24pKTtcbiAgICBpZiAoZm9jdXNlZCAmJiBtZXNzYWdlcy5vbkZvY3VzKSB7XG4gICAgICB2YXIgb25Gb2N1c1Byb3BzID0ge1xuICAgICAgICBmb2N1c2VkOiBmb2N1c2VkLFxuICAgICAgICBsYWJlbDogZ2V0T3B0aW9uTGFiZWwoZm9jdXNlZCksXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzT3B0aW9uRGlzYWJsZWQoZm9jdXNlZCwgc2VsZWN0VmFsdWUpLFxuICAgICAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgICAgICBvcHRpb25zOiBmb2N1c2FibGVPcHRpb25zLFxuICAgICAgICBjb250ZXh0OiBmb2N1c2VkID09PSBmb2N1c2VkT3B0aW9uID8gJ21lbnUnIDogJ3ZhbHVlJyxcbiAgICAgICAgc2VsZWN0VmFsdWU6IHNlbGVjdFZhbHVlLFxuICAgICAgICBpc0FwcGxlRGV2aWNlOiBpc0FwcGxlRGV2aWNlXG4gICAgICB9O1xuICAgICAgZm9jdXNNc2cgPSBtZXNzYWdlcy5vbkZvY3VzKG9uRm9jdXNQcm9wcyk7XG4gICAgfVxuICAgIHJldHVybiBmb2N1c01zZztcbiAgfSwgW2ZvY3VzZWRPcHRpb24sIGZvY3VzZWRWYWx1ZSwgZ2V0T3B0aW9uTGFiZWwsIGlzT3B0aW9uRGlzYWJsZWQsIG1lc3NhZ2VzLCBmb2N1c2FibGVPcHRpb25zLCBzZWxlY3RWYWx1ZSwgaXNBcHBsZURldmljZV0pO1xuICB2YXIgYXJpYVJlc3VsdHMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0c01zZyA9ICcnO1xuICAgIGlmIChtZW51SXNPcGVuICYmIG9wdGlvbnMubGVuZ3RoICYmICFpc0xvYWRpbmcgJiYgbWVzc2FnZXMub25GaWx0ZXIpIHtcbiAgICAgIHZhciByZXN1bHRzTWVzc2FnZSA9IHNjcmVlblJlYWRlclN0YXR1cyh7XG4gICAgICAgIGNvdW50OiBmb2N1c2FibGVPcHRpb25zLmxlbmd0aFxuICAgICAgfSk7XG4gICAgICByZXN1bHRzTXNnID0gbWVzc2FnZXMub25GaWx0ZXIoe1xuICAgICAgICBpbnB1dFZhbHVlOiBpbnB1dFZhbHVlLFxuICAgICAgICByZXN1bHRzTWVzc2FnZTogcmVzdWx0c01lc3NhZ2VcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c01zZztcbiAgfSwgW2ZvY3VzYWJsZU9wdGlvbnMsIGlucHV0VmFsdWUsIG1lbnVJc09wZW4sIG1lc3NhZ2VzLCBvcHRpb25zLCBzY3JlZW5SZWFkZXJTdGF0dXMsIGlzTG9hZGluZ10pO1xuICB2YXIgaXNJbml0aWFsRm9jdXMgPSAoYXJpYVNlbGVjdGlvbiA9PT0gbnVsbCB8fCBhcmlhU2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcmlhU2VsZWN0aW9uLmFjdGlvbikgPT09ICdpbml0aWFsLWlucHV0LWZvY3VzJztcbiAgdmFyIGFyaWFHdWlkYW5jZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBndWlkYW5jZU1zZyA9ICcnO1xuICAgIGlmIChtZXNzYWdlcy5ndWlkYW5jZSkge1xuICAgICAgdmFyIGNvbnRleHQgPSBmb2N1c2VkVmFsdWUgPyAndmFsdWUnIDogbWVudUlzT3BlbiA/ICdtZW51JyA6ICdpbnB1dCc7XG4gICAgICBndWlkYW5jZU1zZyA9IG1lc3NhZ2VzLmd1aWRhbmNlKHtcbiAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGZvY3VzZWRPcHRpb24gJiYgaXNPcHRpb25EaXNhYmxlZChmb2N1c2VkT3B0aW9uLCBzZWxlY3RWYWx1ZSksXG4gICAgICAgIGlzTXVsdGk6IGlzTXVsdGksXG4gICAgICAgIGlzU2VhcmNoYWJsZTogaXNTZWFyY2hhYmxlLFxuICAgICAgICB0YWJTZWxlY3RzVmFsdWU6IHRhYlNlbGVjdHNWYWx1ZSxcbiAgICAgICAgaXNJbml0aWFsRm9jdXM6IGlzSW5pdGlhbEZvY3VzXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGd1aWRhbmNlTXNnO1xuICB9LCBbYXJpYUxhYmVsLCBmb2N1c2VkT3B0aW9uLCBmb2N1c2VkVmFsdWUsIGlzTXVsdGksIGlzT3B0aW9uRGlzYWJsZWQsIGlzU2VhcmNoYWJsZSwgbWVudUlzT3BlbiwgbWVzc2FnZXMsIHNlbGVjdFZhbHVlLCB0YWJTZWxlY3RzVmFsdWUsIGlzSW5pdGlhbEZvY3VzXSk7XG4gIHZhciBTY3JlZW5SZWFkZXJUZXh0ID0gcmVhY3QuanN4KFJlYWN0LkZyYWdtZW50LCBudWxsLCByZWFjdC5qc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLXNlbGVjdGlvblwiXG4gIH0sIGFyaWFTZWxlY3RlZCksIHJlYWN0LmpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtZm9jdXNlZFwiXG4gIH0sIGFyaWFGb2N1c2VkKSwgcmVhY3QuanN4KFwic3BhblwiLCB7XG4gICAgaWQ6IFwiYXJpYS1yZXN1bHRzXCJcbiAgfSwgYXJpYVJlc3VsdHMpLCByZWFjdC5qc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLWd1aWRhbmNlXCJcbiAgfSwgYXJpYUd1aWRhbmNlKSk7XG4gIHJldHVybiByZWFjdC5qc3goUmVhY3QuRnJhZ21lbnQsIG51bGwsIHJlYWN0LmpzeChBMTF5VGV4dCQxLCB7XG4gICAgaWQ6IGlkXG4gIH0sIGlzSW5pdGlhbEZvY3VzICYmIFNjcmVlblJlYWRlclRleHQpLCByZWFjdC5qc3goQTExeVRleHQkMSwge1xuICAgIFwiYXJpYS1saXZlXCI6IGFyaWFMaXZlLFxuICAgIFwiYXJpYS1hdG9taWNcIjogXCJmYWxzZVwiLFxuICAgIFwiYXJpYS1yZWxldmFudFwiOiBcImFkZGl0aW9ucyB0ZXh0XCIsXG4gICAgcm9sZTogXCJsb2dcIlxuICB9LCBpc0ZvY3VzZWQgJiYgIWlzSW5pdGlhbEZvY3VzICYmIFNjcmVlblJlYWRlclRleHQpKTtcbn07XG52YXIgTGl2ZVJlZ2lvbiQxID0gTGl2ZVJlZ2lvbjtcblxudmFyIGRpYWNyaXRpY3MgPSBbe1xuICBiYXNlOiAnQScsXG4gIGxldHRlcnM6IFwiQVxcdTI0QjZcXHVGRjIxXFx4QzBcXHhDMVxceEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxceEMzXFx1MDEwMFxcdTAxMDJcXHUxRUIwXFx1MUVBRVxcdTFFQjRcXHUxRUIyXFx1MDIyNlxcdTAxRTBcXHhDNFxcdTAxREVcXHUxRUEyXFx4QzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiXG59LCB7XG4gIGJhc2U6ICdBQScsXG4gIGxldHRlcnM6IFwiXFx1QTczMlwiXG59LCB7XG4gIGJhc2U6ICdBRScsXG4gIGxldHRlcnM6IFwiXFx4QzZcXHUwMUZDXFx1MDFFMlwiXG59LCB7XG4gIGJhc2U6ICdBTycsXG4gIGxldHRlcnM6IFwiXFx1QTczNFwiXG59LCB7XG4gIGJhc2U6ICdBVScsXG4gIGxldHRlcnM6IFwiXFx1QTczNlwiXG59LCB7XG4gIGJhc2U6ICdBVicsXG4gIGxldHRlcnM6IFwiXFx1QTczOFxcdUE3M0FcIlxufSwge1xuICBiYXNlOiAnQVknLFxuICBsZXR0ZXJzOiBcIlxcdUE3M0NcIlxufSwge1xuICBiYXNlOiAnQicsXG4gIGxldHRlcnM6IFwiQlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODJcXHUwMTgxXCJcbn0sIHtcbiAgYmFzZTogJ0MnLFxuICBsZXR0ZXJzOiBcIkNcXHUyNEI4XFx1RkYyM1xcdTAxMDZcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHhDN1xcdTFFMDhcXHUwMTg3XFx1MDIzQlxcdUE3M0VcIlxufSwge1xuICBiYXNlOiAnRCcsXG4gIGxldHRlcnM6IFwiRFxcdTI0QjlcXHVGRjI0XFx1MUUwQVxcdTAxMEVcXHUxRTBDXFx1MUUxMFxcdTFFMTJcXHUxRTBFXFx1MDExMFxcdTAxOEJcXHUwMThBXFx1MDE4OVxcdUE3NzlcIlxufSwge1xuICBiYXNlOiAnRFonLFxuICBsZXR0ZXJzOiBcIlxcdTAxRjFcXHUwMUM0XCJcbn0sIHtcbiAgYmFzZTogJ0R6JyxcbiAgbGV0dGVyczogXCJcXHUwMUYyXFx1MDFDNVwiXG59LCB7XG4gIGJhc2U6ICdFJyxcbiAgbGV0dGVyczogXCJFXFx1MjRCQVxcdUZGMjVcXHhDOFxceEM5XFx4Q0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx4Q0JcXHUxRUJBXFx1MDExQVxcdTAyMDRcXHUwMjA2XFx1MUVCOFxcdTFFQzZcXHUwMjI4XFx1MUUxQ1xcdTAxMThcXHUxRTE4XFx1MUUxQVxcdTAxOTBcXHUwMThFXCJcbn0sIHtcbiAgYmFzZTogJ0YnLFxuICBsZXR0ZXJzOiBcIkZcXHUyNEJCXFx1RkYyNlxcdTFFMUVcXHUwMTkxXFx1QTc3QlwiXG59LCB7XG4gIGJhc2U6ICdHJyxcbiAgbGV0dGVyczogXCJHXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcIlxufSwge1xuICBiYXNlOiAnSCcsXG4gIGxldHRlcnM6IFwiSFxcdTI0QkRcXHVGRjI4XFx1MDEyNFxcdTFFMjJcXHUxRTI2XFx1MDIxRVxcdTFFMjRcXHUxRTI4XFx1MUUyQVxcdTAxMjZcXHUyQzY3XFx1MkM3NVxcdUE3OERcIlxufSwge1xuICBiYXNlOiAnSScsXG4gIGxldHRlcnM6IFwiSVxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCJcbn0sIHtcbiAgYmFzZTogJ0onLFxuICBsZXR0ZXJzOiBcIkpcXHUyNEJGXFx1RkYyQVxcdTAxMzRcXHUwMjQ4XCJcbn0sIHtcbiAgYmFzZTogJ0snLFxuICBsZXR0ZXJzOiBcIktcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCJcbn0sIHtcbiAgYmFzZTogJ0wnLFxuICBsZXR0ZXJzOiBcIkxcXHUyNEMxXFx1RkYyQ1xcdTAxM0ZcXHUwMTM5XFx1MDEzRFxcdTFFMzZcXHUxRTM4XFx1MDEzQlxcdTFFM0NcXHUxRTNBXFx1MDE0MVxcdTAyM0RcXHUyQzYyXFx1MkM2MFxcdUE3NDhcXHVBNzQ2XFx1QTc4MFwiXG59LCB7XG4gIGJhc2U6ICdMSicsXG4gIGxldHRlcnM6IFwiXFx1MDFDN1wiXG59LCB7XG4gIGJhc2U6ICdMaicsXG4gIGxldHRlcnM6IFwiXFx1MDFDOFwiXG59LCB7XG4gIGJhc2U6ICdNJyxcbiAgbGV0dGVyczogXCJNXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1wiXG59LCB7XG4gIGJhc2U6ICdOJyxcbiAgbGV0dGVyczogXCJOXFx1MjRDM1xcdUZGMkVcXHUwMUY4XFx1MDE0M1xceEQxXFx1MUU0NFxcdTAxNDdcXHUxRTQ2XFx1MDE0NVxcdTFFNEFcXHUxRTQ4XFx1MDIyMFxcdTAxOURcXHVBNzkwXFx1QTdBNFwiXG59LCB7XG4gIGJhc2U6ICdOSicsXG4gIGxldHRlcnM6IFwiXFx1MDFDQVwiXG59LCB7XG4gIGJhc2U6ICdOaicsXG4gIGxldHRlcnM6IFwiXFx1MDFDQlwiXG59LCB7XG4gIGJhc2U6ICdPJyxcbiAgbGV0dGVyczogXCJPXFx1MjRDNFxcdUZGMkZcXHhEMlxceEQzXFx4RDRcXHUxRUQyXFx1MUVEMFxcdTFFRDZcXHUxRUQ0XFx4RDVcXHUxRTRDXFx1MDIyQ1xcdTFFNEVcXHUwMTRDXFx1MUU1MFxcdTFFNTJcXHUwMTRFXFx1MDIyRVxcdTAyMzBcXHhENlxcdTAyMkFcXHUxRUNFXFx1MDE1MFxcdTAxRDFcXHUwMjBDXFx1MDIwRVxcdTAxQTBcXHUxRURDXFx1MUVEQVxcdTFFRTBcXHUxRURFXFx1MUVFMlxcdTFFQ0NcXHUxRUQ4XFx1MDFFQVxcdTAxRUNcXHhEOFxcdTAxRkVcXHUwMTg2XFx1MDE5RlxcdUE3NEFcXHVBNzRDXCJcbn0sIHtcbiAgYmFzZTogJ09JJyxcbiAgbGV0dGVyczogXCJcXHUwMUEyXCJcbn0sIHtcbiAgYmFzZTogJ09PJyxcbiAgbGV0dGVyczogXCJcXHVBNzRFXCJcbn0sIHtcbiAgYmFzZTogJ09VJyxcbiAgbGV0dGVyczogXCJcXHUwMjIyXCJcbn0sIHtcbiAgYmFzZTogJ1AnLFxuICBsZXR0ZXJzOiBcIlBcXHUyNEM1XFx1RkYzMFxcdTFFNTRcXHUxRTU2XFx1MDFBNFxcdTJDNjNcXHVBNzUwXFx1QTc1MlxcdUE3NTRcIlxufSwge1xuICBiYXNlOiAnUScsXG4gIGxldHRlcnM6IFwiUVxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCJcbn0sIHtcbiAgYmFzZTogJ1InLFxuICBsZXR0ZXJzOiBcIlJcXHUyNEM3XFx1RkYzMlxcdTAxNTRcXHUxRTU4XFx1MDE1OFxcdTAyMTBcXHUwMjEyXFx1MUU1QVxcdTFFNUNcXHUwMTU2XFx1MUU1RVxcdTAyNENcXHUyQzY0XFx1QTc1QVxcdUE3QTZcXHVBNzgyXCJcbn0sIHtcbiAgYmFzZTogJ1MnLFxuICBsZXR0ZXJzOiBcIlNcXHUyNEM4XFx1RkYzM1xcdTFFOUVcXHUwMTVBXFx1MUU2NFxcdTAxNUNcXHUxRTYwXFx1MDE2MFxcdTFFNjZcXHUxRTYyXFx1MUU2OFxcdTAyMThcXHUwMTVFXFx1MkM3RVxcdUE3QThcXHVBNzg0XCJcbn0sIHtcbiAgYmFzZTogJ1QnLFxuICBsZXR0ZXJzOiBcIlRcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiXG59LCB7XG4gIGJhc2U6ICdUWicsXG4gIGxldHRlcnM6IFwiXFx1QTcyOFwiXG59LCB7XG4gIGJhc2U6ICdVJyxcbiAgbGV0dGVyczogXCJVXFx1MjRDQVxcdUZGMzVcXHhEOVxceERBXFx4REJcXHUwMTY4XFx1MUU3OFxcdTAxNkFcXHUxRTdBXFx1MDE2Q1xceERDXFx1MDFEQlxcdTAxRDdcXHUwMUQ1XFx1MDFEOVxcdTFFRTZcXHUwMTZFXFx1MDE3MFxcdTAxRDNcXHUwMjE0XFx1MDIxNlxcdTAxQUZcXHUxRUVBXFx1MUVFOFxcdTFFRUVcXHUxRUVDXFx1MUVGMFxcdTFFRTRcXHUxRTcyXFx1MDE3MlxcdTFFNzZcXHUxRTc0XFx1MDI0NFwiXG59LCB7XG4gIGJhc2U6ICdWJyxcbiAgbGV0dGVyczogXCJWXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiXG59LCB7XG4gIGJhc2U6ICdWWScsXG4gIGxldHRlcnM6IFwiXFx1QTc2MFwiXG59LCB7XG4gIGJhc2U6ICdXJyxcbiAgbGV0dGVyczogXCJXXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCJcbn0sIHtcbiAgYmFzZTogJ1gnLFxuICBsZXR0ZXJzOiBcIlhcXHUyNENEXFx1RkYzOFxcdTFFOEFcXHUxRThDXCJcbn0sIHtcbiAgYmFzZTogJ1knLFxuICBsZXR0ZXJzOiBcIllcXHUyNENFXFx1RkYzOVxcdTFFRjJcXHhERFxcdTAxNzZcXHUxRUY4XFx1MDIzMlxcdTFFOEVcXHUwMTc4XFx1MUVGNlxcdTFFRjRcXHUwMUIzXFx1MDI0RVxcdTFFRkVcIlxufSwge1xuICBiYXNlOiAnWicsXG4gIGxldHRlcnM6IFwiWlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIlxufSwge1xuICBiYXNlOiAnYScsXG4gIGxldHRlcnM6IFwiYVxcdTI0RDBcXHVGRjQxXFx1MUU5QVxceEUwXFx4RTFcXHhFMlxcdTFFQTdcXHUxRUE1XFx1MUVBQlxcdTFFQTlcXHhFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx4RTRcXHUwMURGXFx1MUVBM1xceEU1XFx1MDFGQlxcdTAxQ0VcXHUwMjAxXFx1MDIwM1xcdTFFQTFcXHUxRUFEXFx1MUVCN1xcdTFFMDFcXHUwMTA1XFx1MkM2NVxcdTAyNTBcIlxufSwge1xuICBiYXNlOiAnYWEnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzNcIlxufSwge1xuICBiYXNlOiAnYWUnLFxuICBsZXR0ZXJzOiBcIlxceEU2XFx1MDFGRFxcdTAxRTNcIlxufSwge1xuICBiYXNlOiAnYW8nLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzVcIlxufSwge1xuICBiYXNlOiAnYXUnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzdcIlxufSwge1xuICBiYXNlOiAnYXYnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzlcXHVBNzNCXCJcbn0sIHtcbiAgYmFzZTogJ2F5JyxcbiAgbGV0dGVyczogXCJcXHVBNzNEXCJcbn0sIHtcbiAgYmFzZTogJ2InLFxuICBsZXR0ZXJzOiBcImJcXHUyNEQxXFx1RkY0MlxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTAxODBcXHUwMTgzXFx1MDI1M1wiXG59LCB7XG4gIGJhc2U6ICdjJyxcbiAgbGV0dGVyczogXCJjXFx1MjREMlxcdUZGNDNcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx4RTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiXG59LCB7XG4gIGJhc2U6ICdkJyxcbiAgbGV0dGVyczogXCJkXFx1MjREM1xcdUZGNDRcXHUxRTBCXFx1MDEwRlxcdTFFMERcXHUxRTExXFx1MUUxM1xcdTFFMEZcXHUwMTExXFx1MDE4Q1xcdTAyNTZcXHUwMjU3XFx1QTc3QVwiXG59LCB7XG4gIGJhc2U6ICdkeicsXG4gIGxldHRlcnM6IFwiXFx1MDFGM1xcdTAxQzZcIlxufSwge1xuICBiYXNlOiAnZScsXG4gIGxldHRlcnM6IFwiZVxcdTI0RDRcXHVGRjQ1XFx4RThcXHhFOVxceEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xceEVCXFx1MUVCQlxcdTAxMUJcXHUwMjA1XFx1MDIwN1xcdTFFQjlcXHUxRUM3XFx1MDIyOVxcdTFFMURcXHUwMTE5XFx1MUUxOVxcdTFFMUJcXHUwMjQ3XFx1MDI1QlxcdTAxRERcIlxufSwge1xuICBiYXNlOiAnZicsXG4gIGxldHRlcnM6IFwiZlxcdTI0RDVcXHVGRjQ2XFx1MUUxRlxcdTAxOTJcXHVBNzdDXCJcbn0sIHtcbiAgYmFzZTogJ2cnLFxuICBsZXR0ZXJzOiBcImdcXHUyNEQ2XFx1RkY0N1xcdTAxRjVcXHUwMTFEXFx1MUUyMVxcdTAxMUZcXHUwMTIxXFx1MDFFN1xcdTAxMjNcXHUwMUU1XFx1MDI2MFxcdUE3QTFcXHUxRDc5XFx1QTc3RlwiXG59LCB7XG4gIGJhc2U6ICdoJyxcbiAgbGV0dGVyczogXCJoXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIlxufSwge1xuICBiYXNlOiAnaHYnLFxuICBsZXR0ZXJzOiBcIlxcdTAxOTVcIlxufSwge1xuICBiYXNlOiAnaScsXG4gIGxldHRlcnM6IFwiaVxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCJcbn0sIHtcbiAgYmFzZTogJ2onLFxuICBsZXR0ZXJzOiBcImpcXHUyNEQ5XFx1RkY0QVxcdTAxMzVcXHUwMUYwXFx1MDI0OVwiXG59LCB7XG4gIGJhc2U6ICdrJyxcbiAgbGV0dGVyczogXCJrXFx1MjREQVxcdUZGNEJcXHUxRTMxXFx1MDFFOVxcdTFFMzNcXHUwMTM3XFx1MUUzNVxcdTAxOTlcXHUyQzZBXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTdBM1wiXG59LCB7XG4gIGJhc2U6ICdsJyxcbiAgbGV0dGVyczogXCJsXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XCJcbn0sIHtcbiAgYmFzZTogJ2xqJyxcbiAgbGV0dGVyczogXCJcXHUwMUM5XCJcbn0sIHtcbiAgYmFzZTogJ20nLFxuICBsZXR0ZXJzOiBcIm1cXHUyNERDXFx1RkY0RFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTAyNzFcXHUwMjZGXCJcbn0sIHtcbiAgYmFzZTogJ24nLFxuICBsZXR0ZXJzOiBcIm5cXHUyNEREXFx1RkY0RVxcdTAxRjlcXHUwMTQ0XFx4RjFcXHUxRTQ1XFx1MDE0OFxcdTFFNDdcXHUwMTQ2XFx1MUU0QlxcdTFFNDlcXHUwMTlFXFx1MDI3MlxcdTAxNDlcXHVBNzkxXFx1QTdBNVwiXG59LCB7XG4gIGJhc2U6ICduaicsXG4gIGxldHRlcnM6IFwiXFx1MDFDQ1wiXG59LCB7XG4gIGJhc2U6ICdvJyxcbiAgbGV0dGVyczogXCJvXFx1MjRERVxcdUZGNEZcXHhGMlxceEYzXFx4RjRcXHUxRUQzXFx1MUVEMVxcdTFFRDdcXHUxRUQ1XFx4RjVcXHUxRTREXFx1MDIyRFxcdTFFNEZcXHUwMTREXFx1MUU1MVxcdTFFNTNcXHUwMTRGXFx1MDIyRlxcdTAyMzFcXHhGNlxcdTAyMkJcXHUxRUNGXFx1MDE1MVxcdTAxRDJcXHUwMjBEXFx1MDIwRlxcdTAxQTFcXHUxRUREXFx1MUVEQlxcdTFFRTFcXHUxRURGXFx1MUVFM1xcdTFFQ0RcXHUxRUQ5XFx1MDFFQlxcdTAxRURcXHhGOFxcdTAxRkZcXHUwMjU0XFx1QTc0QlxcdUE3NERcXHUwMjc1XCJcbn0sIHtcbiAgYmFzZTogJ29pJyxcbiAgbGV0dGVyczogXCJcXHUwMUEzXCJcbn0sIHtcbiAgYmFzZTogJ291JyxcbiAgbGV0dGVyczogXCJcXHUwMjIzXCJcbn0sIHtcbiAgYmFzZTogJ29vJyxcbiAgbGV0dGVyczogXCJcXHVBNzRGXCJcbn0sIHtcbiAgYmFzZTogJ3AnLFxuICBsZXR0ZXJzOiBcInBcXHUyNERGXFx1RkY1MFxcdTFFNTVcXHUxRTU3XFx1MDFBNVxcdTFEN0RcXHVBNzUxXFx1QTc1M1xcdUE3NTVcIlxufSwge1xuICBiYXNlOiAncScsXG4gIGxldHRlcnM6IFwicVxcdTI0RTBcXHVGRjUxXFx1MDI0QlxcdUE3NTdcXHVBNzU5XCJcbn0sIHtcbiAgYmFzZTogJ3InLFxuICBsZXR0ZXJzOiBcInJcXHUyNEUxXFx1RkY1MlxcdTAxNTVcXHUxRTU5XFx1MDE1OVxcdTAyMTFcXHUwMjEzXFx1MUU1QlxcdTFFNURcXHUwMTU3XFx1MUU1RlxcdTAyNERcXHUwMjdEXFx1QTc1QlxcdUE3QTdcXHVBNzgzXCJcbn0sIHtcbiAgYmFzZTogJ3MnLFxuICBsZXR0ZXJzOiBcInNcXHUyNEUyXFx1RkY1M1xceERGXFx1MDE1QlxcdTFFNjVcXHUwMTVEXFx1MUU2MVxcdTAxNjFcXHUxRTY3XFx1MUU2M1xcdTFFNjlcXHUwMjE5XFx1MDE1RlxcdTAyM0ZcXHVBN0E5XFx1QTc4NVxcdTFFOUJcIlxufSwge1xuICBiYXNlOiAndCcsXG4gIGxldHRlcnM6IFwidFxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiXG59LCB7XG4gIGJhc2U6ICd0eicsXG4gIGxldHRlcnM6IFwiXFx1QTcyOVwiXG59LCB7XG4gIGJhc2U6ICd1JyxcbiAgbGV0dGVyczogXCJ1XFx1MjRFNFxcdUZGNTVcXHhGOVxceEZBXFx4RkJcXHUwMTY5XFx1MUU3OVxcdTAxNkJcXHUxRTdCXFx1MDE2RFxceEZDXFx1MDFEQ1xcdTAxRDhcXHUwMUQ2XFx1MDFEQVxcdTFFRTdcXHUwMTZGXFx1MDE3MVxcdTAxRDRcXHUwMjE1XFx1MDIxN1xcdTAxQjBcXHUxRUVCXFx1MUVFOVxcdTFFRUZcXHUxRUVEXFx1MUVGMVxcdTFFRTVcXHUxRTczXFx1MDE3M1xcdTFFNzdcXHUxRTc1XFx1MDI4OVwiXG59LCB7XG4gIGJhc2U6ICd2JyxcbiAgbGV0dGVyczogXCJ2XFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiXG59LCB7XG4gIGJhc2U6ICd2eScsXG4gIGxldHRlcnM6IFwiXFx1QTc2MVwiXG59LCB7XG4gIGJhc2U6ICd3JyxcbiAgbGV0dGVyczogXCJ3XFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiXG59LCB7XG4gIGJhc2U6ICd4JyxcbiAgbGV0dGVyczogXCJ4XFx1MjRFN1xcdUZGNThcXHUxRThCXFx1MUU4RFwiXG59LCB7XG4gIGJhc2U6ICd5JyxcbiAgbGV0dGVyczogXCJ5XFx1MjRFOFxcdUZGNTlcXHUxRUYzXFx4RkRcXHUwMTc3XFx1MUVGOVxcdTAyMzNcXHUxRThGXFx4RkZcXHUxRUY3XFx1MUU5OVxcdTFFRjVcXHUwMUI0XFx1MDI0RlxcdTFFRkZcIlxufSwge1xuICBiYXNlOiAneicsXG4gIGxldHRlcnM6IFwielxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIlxufV07XG52YXIgYW55RGlhY3JpdGljID0gbmV3IFJlZ0V4cCgnWycgKyBkaWFjcml0aWNzLm1hcChmdW5jdGlvbiAoZCkge1xuICByZXR1cm4gZC5sZXR0ZXJzO1xufSkuam9pbignJykgKyAnXScsICdnJyk7XG52YXIgZGlhY3JpdGljVG9CYXNlID0ge307XG5mb3IgKHZhciBpID0gMDsgaSA8IGRpYWNyaXRpY3MubGVuZ3RoOyBpKyspIHtcbiAgdmFyIGRpYWNyaXRpYyA9IGRpYWNyaXRpY3NbaV07XG4gIGZvciAodmFyIGogPSAwOyBqIDwgZGlhY3JpdGljLmxldHRlcnMubGVuZ3RoOyBqKyspIHtcbiAgICBkaWFjcml0aWNUb0Jhc2VbZGlhY3JpdGljLmxldHRlcnNbal1dID0gZGlhY3JpdGljLmJhc2U7XG4gIH1cbn1cbnZhciBzdHJpcERpYWNyaXRpY3MgPSBmdW5jdGlvbiBzdHJpcERpYWNyaXRpY3Moc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShhbnlEaWFjcml0aWMsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBkaWFjcml0aWNUb0Jhc2VbbWF0Y2hdO1xuICB9KTtcbn07XG5cbnZhciBtZW1vaXplZFN0cmlwRGlhY3JpdGljc0ZvcklucHV0ID0gbWVtb2l6ZU9uZV9fZGVmYXVsdFtcImRlZmF1bHRcIl0oc3RyaXBEaWFjcml0aWNzKTtcbnZhciB0cmltU3RyaW5nID0gZnVuY3Rpb24gdHJpbVN0cmluZyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJyk7XG59O1xudmFyIGRlZmF1bHRTdHJpbmdpZnkgPSBmdW5jdGlvbiBkZWZhdWx0U3RyaW5naWZ5KG9wdGlvbikge1xuICByZXR1cm4gXCJcIi5jb25jYXQob3B0aW9uLmxhYmVsLCBcIiBcIikuY29uY2F0KG9wdGlvbi52YWx1ZSk7XG59O1xudmFyIGNyZWF0ZUZpbHRlciA9IGZ1bmN0aW9uIGNyZWF0ZUZpbHRlcihjb25maWcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb24sIHJhd0lucHV0KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgaWYgKG9wdGlvbi5kYXRhLl9faXNOZXdfXykgcmV0dXJuIHRydWU7XG4gICAgdmFyIF9pZ25vcmVDYXNlJGlnbm9yZUFjYyA9IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBpZ25vcmVDYXNlOiB0cnVlLFxuICAgICAgICBpZ25vcmVBY2NlbnRzOiB0cnVlLFxuICAgICAgICBzdHJpbmdpZnk6IGRlZmF1bHRTdHJpbmdpZnksXG4gICAgICAgIHRyaW06IHRydWUsXG4gICAgICAgIG1hdGNoRnJvbTogJ2FueSdcbiAgICAgIH0sIGNvbmZpZyksXG4gICAgICBpZ25vcmVDYXNlID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLmlnbm9yZUNhc2UsXG4gICAgICBpZ25vcmVBY2NlbnRzID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLmlnbm9yZUFjY2VudHMsXG4gICAgICBzdHJpbmdpZnkgPSBfaWdub3JlQ2FzZSRpZ25vcmVBY2Muc3RyaW5naWZ5LFxuICAgICAgdHJpbSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy50cmltLFxuICAgICAgbWF0Y2hGcm9tID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLm1hdGNoRnJvbTtcbiAgICB2YXIgaW5wdXQgPSB0cmltID8gdHJpbVN0cmluZyhyYXdJbnB1dCkgOiByYXdJbnB1dDtcbiAgICB2YXIgY2FuZGlkYXRlID0gdHJpbSA/IHRyaW1TdHJpbmcoc3RyaW5naWZ5KG9wdGlvbikpIDogc3RyaW5naWZ5KG9wdGlvbik7XG4gICAgaWYgKGlnbm9yZUNhc2UpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAoaWdub3JlQWNjZW50cykge1xuICAgICAgaW5wdXQgPSBtZW1vaXplZFN0cmlwRGlhY3JpdGljc0ZvcklucHV0KGlucHV0KTtcbiAgICAgIGNhbmRpZGF0ZSA9IHN0cmlwRGlhY3JpdGljcyhjYW5kaWRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hGcm9tID09PSAnc3RhcnQnID8gY2FuZGlkYXRlLnN1YnN0cigwLCBpbnB1dC5sZW5ndGgpID09PSBpbnB1dCA6IGNhbmRpZGF0ZS5pbmRleE9mKGlucHV0KSA+IC0xO1xuICB9O1xufTtcblxudmFyIF9leGNsdWRlZCA9IFtcImlubmVyUmVmXCJdO1xuZnVuY3Rpb24gRHVtbXlJbnB1dChfcmVmKSB7XG4gIHZhciBpbm5lclJlZiA9IF9yZWYuaW5uZXJSZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgLy8gUmVtb3ZlIGFuaW1hdGlvbiBwcm9wcyBub3QgbWVhbnQgZm9yIEhUTUwgZWxlbWVudHNcbiAgdmFyIGZpbHRlcmVkUHJvcHMgPSBpbmRleC5yZW1vdmVQcm9wcyhwcm9wcywgJ29uRXhpdGVkJywgJ2luJywgJ2VudGVyJywgJ2V4aXQnLCAnYXBwZWFyJyk7XG4gIHJldHVybiByZWFjdC5qc3goXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBmaWx0ZXJlZFByb3BzLCB7XG4gICAgY3NzOiAvKiNfX1BVUkVfXyovcmVhY3QuY3NzKHtcbiAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgYmFja2dyb3VuZDogMCxcbiAgICAgIGJvcmRlcjogMCxcbiAgICAgIC8vIGltcG9ydGFudCEgdGhpcyBoaWRlcyB0aGUgZmxhc2hpbmcgY3Vyc29yXG4gICAgICBjYXJldENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMycsXG4gICAgICBvdXRsaW5lOiAwLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICB3aWR0aDogMSxcbiAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICBsZWZ0OiAtMTAwLFxuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoLjAxKSdcbiAgICB9LCBcIlwiICwgXCJcIiApXG4gIH0pKTtcbn1cblxudmFyIGNhbmNlbFNjcm9sbCA9IGZ1bmN0aW9uIGNhbmNlbFNjcm9sbChldmVudCkge1xuICBpZiAoZXZlbnQuY2FuY2VsYWJsZSkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG59O1xuZnVuY3Rpb24gdXNlU2Nyb2xsQ2FwdHVyZShfcmVmKSB7XG4gIHZhciBpc0VuYWJsZWQgPSBfcmVmLmlzRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSA9IF9yZWYub25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZSA9IF9yZWYub25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZSA9IF9yZWYub25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZSA9IF9yZWYub25Ub3BMZWF2ZTtcbiAgdmFyIGlzQm90dG9tID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgdmFyIGlzVG9wID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgdmFyIHRvdWNoU3RhcnQgPSBSZWFjdC51c2VSZWYoMCk7XG4gIHZhciBzY3JvbGxUYXJnZXQgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHZhciBoYW5kbGVFdmVudERlbHRhID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50LCBkZWx0YSkge1xuICAgIGlmIChzY3JvbGxUYXJnZXQuY3VycmVudCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIHZhciBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQgPSBzY3JvbGxUYXJnZXQuY3VycmVudCxcbiAgICAgIHNjcm9sbFRvcCA9IF9zY3JvbGxUYXJnZXQkY3VycmVudC5zY3JvbGxUb3AsXG4gICAgICBzY3JvbGxIZWlnaHQgPSBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgY2xpZW50SGVpZ2h0ID0gX3Njcm9sbFRhcmdldCRjdXJyZW50LmNsaWVudEhlaWdodDtcbiAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsVGFyZ2V0LmN1cnJlbnQ7XG4gICAgdmFyIGlzRGVsdGFQb3NpdGl2ZSA9IGRlbHRhID4gMDtcbiAgICB2YXIgYXZhaWxhYmxlU2Nyb2xsID0gc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0IC0gc2Nyb2xsVG9wO1xuICAgIHZhciBzaG91bGRDYW5jZWxTY3JvbGwgPSBmYWxzZTtcblxuICAgIC8vIHJlc2V0IGJvdHRvbS90b3AgZmxhZ3NcbiAgICBpZiAoYXZhaWxhYmxlU2Nyb2xsID4gZGVsdGEgJiYgaXNCb3R0b20uY3VycmVudCkge1xuICAgICAgaWYgKG9uQm90dG9tTGVhdmUpIG9uQm90dG9tTGVhdmUoZXZlbnQpO1xuICAgICAgaXNCb3R0b20uY3VycmVudCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXNEZWx0YVBvc2l0aXZlICYmIGlzVG9wLmN1cnJlbnQpIHtcbiAgICAgIGlmIChvblRvcExlYXZlKSBvblRvcExlYXZlKGV2ZW50KTtcbiAgICAgIGlzVG9wLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBib3R0b20gbGltaXRcbiAgICBpZiAoaXNEZWx0YVBvc2l0aXZlICYmIGRlbHRhID4gYXZhaWxhYmxlU2Nyb2xsKSB7XG4gICAgICBpZiAob25Cb3R0b21BcnJpdmUgJiYgIWlzQm90dG9tLmN1cnJlbnQpIHtcbiAgICAgICAgb25Cb3R0b21BcnJpdmUoZXZlbnQpO1xuICAgICAgfVxuICAgICAgdGFyZ2V0LnNjcm9sbFRvcCA9IHNjcm9sbEhlaWdodDtcbiAgICAgIHNob3VsZENhbmNlbFNjcm9sbCA9IHRydWU7XG4gICAgICBpc0JvdHRvbS5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgLy8gdG9wIGxpbWl0XG4gICAgfSBlbHNlIGlmICghaXNEZWx0YVBvc2l0aXZlICYmIC1kZWx0YSA+IHNjcm9sbFRvcCkge1xuICAgICAgaWYgKG9uVG9wQXJyaXZlICYmICFpc1RvcC5jdXJyZW50KSB7XG4gICAgICAgIG9uVG9wQXJyaXZlKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIHRhcmdldC5zY3JvbGxUb3AgPSAwO1xuICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIGlzVG9wLmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIGNhbmNlbCBzY3JvbGxcbiAgICBpZiAoc2hvdWxkQ2FuY2VsU2Nyb2xsKSB7XG4gICAgICBjYW5jZWxTY3JvbGwoZXZlbnQpO1xuICAgIH1cbiAgfSwgW29uQm90dG9tQXJyaXZlLCBvbkJvdHRvbUxlYXZlLCBvblRvcEFycml2ZSwgb25Ub3BMZWF2ZV0pO1xuICB2YXIgb25XaGVlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgIGhhbmRsZUV2ZW50RGVsdGEoZXZlbnQsIGV2ZW50LmRlbHRhWSk7XG4gIH0sIFtoYW5kbGVFdmVudERlbHRhXSk7XG4gIHZhciBvblRvdWNoU3RhcnQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBzZXQgdG91Y2ggc3RhcnQgc28gd2UgY2FuIGNhbGN1bGF0ZSB0b3VjaG1vdmUgZGVsdGFcbiAgICB0b3VjaFN0YXJ0LmN1cnJlbnQgPSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZO1xuICB9LCBbXSk7XG4gIHZhciBvblRvdWNoTW92ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciBkZWx0YVkgPSB0b3VjaFN0YXJ0LmN1cnJlbnQgLSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZO1xuICAgIGhhbmRsZUV2ZW50RGVsdGEoZXZlbnQsIGRlbHRhWSk7XG4gIH0sIFtoYW5kbGVFdmVudERlbHRhXSk7XG4gIHZhciBzdGFydExpc3RlbmluZyA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlbCkge1xuICAgIC8vIGJhaWwgZWFybHkgaWYgbm8gZWxlbWVudCBpcyBhdmFpbGFibGUgdG8gYXR0YWNoIHRvXG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIHZhciBub3RQYXNzaXZlID0gaW5kZXguc3VwcG9ydHNQYXNzaXZlRXZlbnRzID8ge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9IDogZmFsc2U7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvbldoZWVsLCBub3RQYXNzaXZlKTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBub3RQYXNzaXZlKTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgbm90UGFzc2l2ZSk7XG4gIH0sIFtvblRvdWNoTW92ZSwgb25Ub3VjaFN0YXJ0LCBvbldoZWVsXSk7XG4gIHZhciBzdG9wTGlzdGVuaW5nID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGVsKSB7XG4gICAgLy8gYmFpbCBlYXJseSBpZiBubyBlbGVtZW50IGlzIGF2YWlsYWJsZSB0byBkZXRhY2ggZnJvbVxuICAgIGlmICghZWwpIHJldHVybjtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwsIGZhbHNlKTtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBmYWxzZSk7XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUsIGZhbHNlKTtcbiAgfSwgW29uVG91Y2hNb3ZlLCBvblRvdWNoU3RhcnQsIG9uV2hlZWxdKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWlzRW5hYmxlZCkgcmV0dXJuO1xuICAgIHZhciBlbGVtZW50ID0gc2Nyb2xsVGFyZ2V0LmN1cnJlbnQ7XG4gICAgc3RhcnRMaXN0ZW5pbmcoZWxlbWVudCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0b3BMaXN0ZW5pbmcoZWxlbWVudCk7XG4gICAgfTtcbiAgfSwgW2lzRW5hYmxlZCwgc3RhcnRMaXN0ZW5pbmcsIHN0b3BMaXN0ZW5pbmddKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgc2Nyb2xsVGFyZ2V0LmN1cnJlbnQgPSBlbGVtZW50O1xuICB9O1xufVxuXG52YXIgU1RZTEVfS0VZUyA9IFsnYm94U2l6aW5nJywgJ2hlaWdodCcsICdvdmVyZmxvdycsICdwYWRkaW5nUmlnaHQnLCAncG9zaXRpb24nXTtcbnZhciBMT0NLX1NUWUxFUyA9IHtcbiAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gIC8vIGFjY291bnQgZm9yIHBvc3NpYmxlIGRlY2xhcmF0aW9uIGB3aWR0aDogMTAwJTtgIG9uIGJvZHlcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgaGVpZ2h0OiAnMTAwJSdcbn07XG5mdW5jdGlvbiBwcmV2ZW50VG91Y2hNb3ZlKGUpIHtcbiAgaWYgKGUuY2FuY2VsYWJsZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xufVxuZnVuY3Rpb24gYWxsb3dUb3VjaE1vdmUoZSkge1xuICBlLnN0b3BQcm9wYWdhdGlvbigpO1xufVxuZnVuY3Rpb24gcHJldmVudEluZXJ0aWFTY3JvbGwoKSB7XG4gIHZhciB0b3AgPSB0aGlzLnNjcm9sbFRvcDtcbiAgdmFyIHRvdGFsU2Nyb2xsID0gdGhpcy5zY3JvbGxIZWlnaHQ7XG4gIHZhciBjdXJyZW50U2Nyb2xsID0gdG9wICsgdGhpcy5vZmZzZXRIZWlnaHQ7XG4gIGlmICh0b3AgPT09IDApIHtcbiAgICB0aGlzLnNjcm9sbFRvcCA9IDE7XG4gIH0gZWxzZSBpZiAoY3VycmVudFNjcm9sbCA9PT0gdG90YWxTY3JvbGwpIHtcbiAgICB0aGlzLnNjcm9sbFRvcCA9IHRvcCAtIDE7XG4gIH1cbn1cblxuLy8gYG9udG91Y2hzdGFydGAgY2hlY2sgd29ya3Mgb24gbW9zdCBicm93c2Vyc1xuLy8gYG1heFRvdWNoUG9pbnRzYCB3b3JrcyBvbiBJRTEwLzExIGFuZCBTdXJmYWNlXG5mdW5jdGlvbiBpc1RvdWNoRGV2aWNlKCkge1xuICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cztcbn1cbnZhciBjYW5Vc2VET00gPSAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xudmFyIGFjdGl2ZVNjcm9sbExvY2tzID0gMDtcbnZhciBsaXN0ZW5lck9wdGlvbnMgPSB7XG4gIGNhcHR1cmU6IGZhbHNlLFxuICBwYXNzaXZlOiBmYWxzZVxufTtcbmZ1bmN0aW9uIHVzZVNjcm9sbExvY2soX3JlZikge1xuICB2YXIgaXNFbmFibGVkID0gX3JlZi5pc0VuYWJsZWQsXG4gICAgX3JlZiRhY2NvdW50Rm9yU2Nyb2xsID0gX3JlZi5hY2NvdW50Rm9yU2Nyb2xsYmFycyxcbiAgICBhY2NvdW50Rm9yU2Nyb2xsYmFycyA9IF9yZWYkYWNjb3VudEZvclNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkYWNjb3VudEZvclNjcm9sbDtcbiAgdmFyIG9yaWdpbmFsU3R5bGVzID0gUmVhY3QudXNlUmVmKHt9KTtcbiAgdmFyIHNjcm9sbFRhcmdldCA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgdmFyIGFkZFNjcm9sbExvY2sgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAodG91Y2hTY3JvbGxUYXJnZXQpIHtcbiAgICBpZiAoIWNhblVzZURPTSkgcmV0dXJuO1xuICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5ib2R5O1xuICAgIHZhciB0YXJnZXRTdHlsZSA9IHRhcmdldCAmJiB0YXJnZXQuc3R5bGU7XG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzKSB7XG4gICAgICAvLyBzdG9yZSBhbnkgc3R5bGVzIGFscmVhZHkgYXBwbGllZCB0byB0aGUgYm9keVxuICAgICAgU1RZTEVfS0VZUy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IHRhcmdldFN0eWxlICYmIHRhcmdldFN0eWxlW2tleV07XG4gICAgICAgIG9yaWdpbmFsU3R5bGVzLmN1cnJlbnRba2V5XSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGFwcGx5IHRoZSBsb2NrIHN0eWxlcyBhbmQgcGFkZGluZyBpZiB0aGlzIGlzIHRoZSBmaXJzdCBzY3JvbGwgbG9ja1xuICAgIGlmIChhY2NvdW50Rm9yU2Nyb2xsYmFycyAmJiBhY3RpdmVTY3JvbGxMb2NrcyA8IDEpIHtcbiAgICAgIHZhciBjdXJyZW50UGFkZGluZyA9IHBhcnNlSW50KG9yaWdpbmFsU3R5bGVzLmN1cnJlbnQucGFkZGluZ1JpZ2h0LCAxMCkgfHwgMDtcbiAgICAgIHZhciBjbGllbnRXaWR0aCA9IGRvY3VtZW50LmJvZHkgPyBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDogMDtcbiAgICAgIHZhciBhZGp1c3RlZFBhZGRpbmcgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGNsaWVudFdpZHRoICsgY3VycmVudFBhZGRpbmcgfHwgMDtcbiAgICAgIE9iamVjdC5rZXlzKExPQ0tfU1RZTEVTKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IExPQ0tfU1RZTEVTW2tleV07XG4gICAgICAgIGlmICh0YXJnZXRTdHlsZSkge1xuICAgICAgICAgIHRhcmdldFN0eWxlW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgIHRhcmdldFN0eWxlLnBhZGRpbmdSaWdodCA9IFwiXCIuY29uY2F0KGFkanVzdGVkUGFkZGluZywgXCJweFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhY2NvdW50IGZvciB0b3VjaCBkZXZpY2VzXG4gICAgaWYgKHRhcmdldCAmJiBpc1RvdWNoRGV2aWNlKCkpIHtcbiAgICAgIC8vIE1vYmlsZSBTYWZhcmkgaWdub3JlcyB7IG92ZXJmbG93OiBoaWRkZW4gfSBkZWNsYXJhdGlvbiBvbiB0aGUgYm9keS5cbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBwcmV2ZW50VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuXG4gICAgICAvLyBBbGxvdyBzY3JvbGwgb24gcHJvdmlkZWQgdGFyZ2V0XG4gICAgICBpZiAodG91Y2hTY3JvbGxUYXJnZXQpIHtcbiAgICAgICAgdG91Y2hTY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHByZXZlbnRJbmVydGlhU2Nyb2xsLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBhbGxvd1RvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpbmNyZW1lbnQgYWN0aXZlIHNjcm9sbCBsb2Nrc1xuICAgIGFjdGl2ZVNjcm9sbExvY2tzICs9IDE7XG4gIH0sIFthY2NvdW50Rm9yU2Nyb2xsYmFyc10pO1xuICB2YXIgcmVtb3ZlU2Nyb2xsTG9jayA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgIGlmICghY2FuVXNlRE9NKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmJvZHk7XG4gICAgdmFyIHRhcmdldFN0eWxlID0gdGFyZ2V0ICYmIHRhcmdldC5zdHlsZTtcblxuICAgIC8vIHNhZmVseSBkZWNyZW1lbnQgYWN0aXZlIHNjcm9sbCBsb2Nrc1xuICAgIGFjdGl2ZVNjcm9sbExvY2tzID0gTWF0aC5tYXgoYWN0aXZlU2Nyb2xsTG9ja3MgLSAxLCAwKTtcblxuICAgIC8vIHJlYXBwbHkgb3JpZ2luYWwgYm9keSBzdHlsZXMsIGlmIGFueVxuICAgIGlmIChhY2NvdW50Rm9yU2Nyb2xsYmFycyAmJiBhY3RpdmVTY3JvbGxMb2NrcyA8IDEpIHtcbiAgICAgIFNUWUxFX0tFWVMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWwgPSBvcmlnaW5hbFN0eWxlcy5jdXJyZW50W2tleV07XG4gICAgICAgIGlmICh0YXJnZXRTdHlsZSkge1xuICAgICAgICAgIHRhcmdldFN0eWxlW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSB0b3VjaCBsaXN0ZW5lcnNcbiAgICBpZiAodGFyZ2V0ICYmIGlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnRUb3VjaE1vdmUsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICBpZiAodG91Y2hTY3JvbGxUYXJnZXQpIHtcbiAgICAgICAgdG91Y2hTY3JvbGxUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHByZXZlbnRJbmVydGlhU2Nyb2xsLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBhbGxvd1RvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFthY2NvdW50Rm9yU2Nyb2xsYmFyc10pO1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm47XG4gICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICBhZGRTY3JvbGxMb2NrKGVsZW1lbnQpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZW1vdmVTY3JvbGxMb2NrKGVsZW1lbnQpO1xuICAgIH07XG4gIH0sIFtpc0VuYWJsZWQsIGFkZFNjcm9sbExvY2ssIHJlbW92ZVNjcm9sbExvY2tdKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgc2Nyb2xsVGFyZ2V0LmN1cnJlbnQgPSBlbGVtZW50O1xuICB9O1xufVxuXG52YXIgYmx1clNlbGVjdElucHV0ID0gZnVuY3Rpb24gYmx1clNlbGVjdElucHV0KGV2ZW50KSB7XG4gIHZhciBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICByZXR1cm4gZWxlbWVudC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgZWxlbWVudC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xufTtcbnZhciBfcmVmMiQxID0ge1xuICBuYW1lOiBcIjFrZmRiMGVcIixcbiAgc3R5bGVzOiBcInBvc2l0aW9uOmZpeGVkO2xlZnQ6MDtib3R0b206MDtyaWdodDowO3RvcDowXCJcbn0gO1xuZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcihfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgbG9ja0VuYWJsZWQgPSBfcmVmLmxvY2tFbmFibGVkLFxuICAgIF9yZWYkY2FwdHVyZUVuYWJsZWQgPSBfcmVmLmNhcHR1cmVFbmFibGVkLFxuICAgIGNhcHR1cmVFbmFibGVkID0gX3JlZiRjYXB0dXJlRW5hYmxlZCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkY2FwdHVyZUVuYWJsZWQsXG4gICAgb25Cb3R0b21BcnJpdmUgPSBfcmVmLm9uQm90dG9tQXJyaXZlLFxuICAgIG9uQm90dG9tTGVhdmUgPSBfcmVmLm9uQm90dG9tTGVhdmUsXG4gICAgb25Ub3BBcnJpdmUgPSBfcmVmLm9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUgPSBfcmVmLm9uVG9wTGVhdmU7XG4gIHZhciBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZTogb25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZTogb25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZTogb25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZTogb25Ub3BMZWF2ZVxuICB9KTtcbiAgdmFyIHNldFNjcm9sbExvY2tUYXJnZXQgPSB1c2VTY3JvbGxMb2NrKHtcbiAgICBpc0VuYWJsZWQ6IGxvY2tFbmFibGVkXG4gIH0pO1xuICB2YXIgdGFyZ2V0UmVmID0gZnVuY3Rpb24gdGFyZ2V0UmVmKGVsZW1lbnQpIHtcbiAgICBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0KGVsZW1lbnQpO1xuICAgIHNldFNjcm9sbExvY2tUYXJnZXQoZWxlbWVudCk7XG4gIH07XG4gIHJldHVybiByZWFjdC5qc3goUmVhY3QuRnJhZ21lbnQsIG51bGwsIGxvY2tFbmFibGVkICYmIHJlYWN0LmpzeChcImRpdlwiLCB7XG4gICAgb25DbGljazogYmx1clNlbGVjdElucHV0LFxuICAgIGNzczogX3JlZjIkMVxuICB9KSwgY2hpbGRyZW4odGFyZ2V0UmVmKSk7XG59XG5cbnZhciBfcmVmMiA9IHtcbiAgbmFtZTogXCIxYTBybzRuLXJlcXVpcmVkSW5wdXRcIixcbiAgc3R5bGVzOiBcImxhYmVsOnJlcXVpcmVkSW5wdXQ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7d2lkdGg6MTAwJVwiXG59IDtcbnZhciBSZXF1aXJlZElucHV0ID0gZnVuY3Rpb24gUmVxdWlyZWRJbnB1dChfcmVmKSB7XG4gIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgIG9uRm9jdXMgPSBfcmVmLm9uRm9jdXM7XG4gIHJldHVybiByZWFjdC5qc3goXCJpbnB1dFwiLCB7XG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgbmFtZTogbmFtZSxcbiAgICB0YWJJbmRleDogLTEsXG4gICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIixcbiAgICBvbkZvY3VzOiBvbkZvY3VzLFxuICAgIGNzczogX3JlZjJcbiAgICAvLyBQcmV2ZW50IGBTd2l0Y2hpbmcgZnJvbSB1bmNvbnRyb2xsZWQgdG8gY29udHJvbGxlZGAgZXJyb3JcbiAgICAsXG4gICAgdmFsdWU6IFwiXCIsXG4gICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge31cbiAgfSk7XG59O1xudmFyIFJlcXVpcmVkSW5wdXQkMSA9IFJlcXVpcmVkSW5wdXQ7XG5cbi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidXNlci1hZ2VudC1kYXRhLXR5cGVzXCIgLz5cblxuZnVuY3Rpb24gdGVzdFBsYXRmb3JtKHJlKSB7XG4gIHZhciBfd2luZG93JG5hdmlnYXRvciR1c2U7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubmF2aWdhdG9yICE9IG51bGwgPyByZS50ZXN0KCgoX3dpbmRvdyRuYXZpZ2F0b3IkdXNlID0gd2luZG93Lm5hdmlnYXRvclsndXNlckFnZW50RGF0YSddKSA9PT0gbnVsbCB8fCBfd2luZG93JG5hdmlnYXRvciR1c2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF93aW5kb3ckbmF2aWdhdG9yJHVzZS5wbGF0Zm9ybSkgfHwgd2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSkgOiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzSVBob25lKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eaVBob25lL2kpO1xufVxuZnVuY3Rpb24gaXNNYWMoKSB7XG4gIHJldHVybiB0ZXN0UGxhdGZvcm0oL15NYWMvaSk7XG59XG5mdW5jdGlvbiBpc0lQYWQoKSB7XG4gIHJldHVybiB0ZXN0UGxhdGZvcm0oL15pUGFkL2kpIHx8XG4gIC8vIGlQYWRPUyAxMyBsaWVzIGFuZCBzYXlzIGl0J3MgYSBNYWMsIGJ1dCB3ZSBjYW4gZGlzdGluZ3Vpc2ggYnkgZGV0ZWN0aW5nIHRvdWNoIHN1cHBvcnQuXG4gIGlzTWFjKCkgJiYgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMTtcbn1cbmZ1bmN0aW9uIGlzSU9TKCkge1xuICByZXR1cm4gaXNJUGhvbmUoKSB8fCBpc0lQYWQoKTtcbn1cbmZ1bmN0aW9uIGlzQXBwbGVEZXZpY2UoKSB7XG4gIHJldHVybiBpc01hYygpIHx8IGlzSU9TKCk7XG59XG5cbnZhciBmb3JtYXRHcm91cExhYmVsID0gZnVuY3Rpb24gZm9ybWF0R3JvdXBMYWJlbChncm91cCkge1xuICByZXR1cm4gZ3JvdXAubGFiZWw7XG59O1xudmFyIGdldE9wdGlvbkxhYmVsJDEgPSBmdW5jdGlvbiBnZXRPcHRpb25MYWJlbChvcHRpb24pIHtcbiAgcmV0dXJuIG9wdGlvbi5sYWJlbDtcbn07XG52YXIgZ2V0T3B0aW9uVmFsdWUkMSA9IGZ1bmN0aW9uIGdldE9wdGlvblZhbHVlKG9wdGlvbikge1xuICByZXR1cm4gb3B0aW9uLnZhbHVlO1xufTtcbnZhciBpc09wdGlvbkRpc2FibGVkID0gZnVuY3Rpb24gaXNPcHRpb25EaXNhYmxlZChvcHRpb24pIHtcbiAgcmV0dXJuICEhb3B0aW9uLmlzRGlzYWJsZWQ7XG59O1xuXG52YXIgZGVmYXVsdFN0eWxlcyA9IHtcbiAgY2xlYXJJbmRpY2F0b3I6IGluZGV4LmNsZWFySW5kaWNhdG9yQ1NTLFxuICBjb250YWluZXI6IGluZGV4LmNvbnRhaW5lckNTUyxcbiAgY29udHJvbDogaW5kZXguY3NzLFxuICBkcm9wZG93bkluZGljYXRvcjogaW5kZXguZHJvcGRvd25JbmRpY2F0b3JDU1MsXG4gIGdyb3VwOiBpbmRleC5ncm91cENTUyxcbiAgZ3JvdXBIZWFkaW5nOiBpbmRleC5ncm91cEhlYWRpbmdDU1MsXG4gIGluZGljYXRvcnNDb250YWluZXI6IGluZGV4LmluZGljYXRvcnNDb250YWluZXJDU1MsXG4gIGluZGljYXRvclNlcGFyYXRvcjogaW5kZXguaW5kaWNhdG9yU2VwYXJhdG9yQ1NTLFxuICBpbnB1dDogaW5kZXguaW5wdXRDU1MsXG4gIGxvYWRpbmdJbmRpY2F0b3I6IGluZGV4LmxvYWRpbmdJbmRpY2F0b3JDU1MsXG4gIGxvYWRpbmdNZXNzYWdlOiBpbmRleC5sb2FkaW5nTWVzc2FnZUNTUyxcbiAgbWVudTogaW5kZXgubWVudUNTUyxcbiAgbWVudUxpc3Q6IGluZGV4Lm1lbnVMaXN0Q1NTLFxuICBtZW51UG9ydGFsOiBpbmRleC5tZW51UG9ydGFsQ1NTLFxuICBtdWx0aVZhbHVlOiBpbmRleC5tdWx0aVZhbHVlQ1NTLFxuICBtdWx0aVZhbHVlTGFiZWw6IGluZGV4Lm11bHRpVmFsdWVMYWJlbENTUyxcbiAgbXVsdGlWYWx1ZVJlbW92ZTogaW5kZXgubXVsdGlWYWx1ZVJlbW92ZUNTUyxcbiAgbm9PcHRpb25zTWVzc2FnZTogaW5kZXgubm9PcHRpb25zTWVzc2FnZUNTUyxcbiAgb3B0aW9uOiBpbmRleC5vcHRpb25DU1MsXG4gIHBsYWNlaG9sZGVyOiBpbmRleC5wbGFjZWhvbGRlckNTUyxcbiAgc2luZ2xlVmFsdWU6IGluZGV4LmNzcyQxLFxuICB2YWx1ZUNvbnRhaW5lcjogaW5kZXgudmFsdWVDb250YWluZXJDU1Ncbn07XG4vLyBNZXJnZSBVdGlsaXR5XG4vLyBBbGxvd3MgY29uc3VtZXJzIHRvIGV4dGVuZCBhIGJhc2UgU2VsZWN0IHdpdGggYWRkaXRpb25hbCBzdHlsZXNcblxuZnVuY3Rpb24gbWVyZ2VTdHlsZXMoc291cmNlKSB7XG4gIHZhciB0YXJnZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAvLyBpbml0aWFsaXplIHdpdGggc291cmNlIHN0eWxlc1xuICB2YXIgc3R5bGVzID0gX29iamVjdFNwcmVhZCh7fSwgc291cmNlKTtcblxuICAvLyBtYXNzYWdlIGluIHRhcmdldCBzdHlsZXNcbiAgT2JqZWN0LmtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlBc1N0cmluZykge1xuICAgIHZhciBrZXkgPSBrZXlBc1N0cmluZztcbiAgICBpZiAoc291cmNlW2tleV0pIHtcbiAgICAgIHN0eWxlc1trZXldID0gZnVuY3Rpb24gKHJzQ3NzLCBwcm9wcykge1xuICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0oc291cmNlW2tleV0ocnNDc3MsIHByb3BzKSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzW2tleV0gPSB0YXJnZXRba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3R5bGVzO1xufVxuXG52YXIgY29sb3JzID0ge1xuICBwcmltYXJ5OiAnIzI2ODRGRicsXG4gIHByaW1hcnk3NTogJyM0QzlBRkYnLFxuICBwcmltYXJ5NTA6ICcjQjJENEZGJyxcbiAgcHJpbWFyeTI1OiAnI0RFRUJGRicsXG4gIGRhbmdlcjogJyNERTM1MEInLFxuICBkYW5nZXJMaWdodDogJyNGRkJEQUQnLFxuICBuZXV0cmFsMDogJ2hzbCgwLCAwJSwgMTAwJSknLFxuICBuZXV0cmFsNTogJ2hzbCgwLCAwJSwgOTUlKScsXG4gIG5ldXRyYWwxMDogJ2hzbCgwLCAwJSwgOTAlKScsXG4gIG5ldXRyYWwyMDogJ2hzbCgwLCAwJSwgODAlKScsXG4gIG5ldXRyYWwzMDogJ2hzbCgwLCAwJSwgNzAlKScsXG4gIG5ldXRyYWw0MDogJ2hzbCgwLCAwJSwgNjAlKScsXG4gIG5ldXRyYWw1MDogJ2hzbCgwLCAwJSwgNTAlKScsXG4gIG5ldXRyYWw2MDogJ2hzbCgwLCAwJSwgNDAlKScsXG4gIG5ldXRyYWw3MDogJ2hzbCgwLCAwJSwgMzAlKScsXG4gIG5ldXRyYWw4MDogJ2hzbCgwLCAwJSwgMjAlKScsXG4gIG5ldXRyYWw5MDogJ2hzbCgwLCAwJSwgMTAlKSdcbn07XG52YXIgYm9yZGVyUmFkaXVzID0gNDtcbi8vIFVzZWQgdG8gY2FsY3VsYXRlIGNvbnNpc3RlbnQgbWFyZ2luL3BhZGRpbmcgb24gZWxlbWVudHNcbnZhciBiYXNlVW5pdCA9IDQ7XG4vLyBUaGUgbWluaW11bSBoZWlnaHQgb2YgdGhlIGNvbnRyb2xcbnZhciBjb250cm9sSGVpZ2h0ID0gMzg7XG4vLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRyb2wgYW5kIG1lbnUgKi9cbnZhciBtZW51R3V0dGVyID0gYmFzZVVuaXQgKiAyO1xudmFyIHNwYWNpbmcgPSB7XG4gIGJhc2VVbml0OiBiYXNlVW5pdCxcbiAgY29udHJvbEhlaWdodDogY29udHJvbEhlaWdodCxcbiAgbWVudUd1dHRlcjogbWVudUd1dHRlclxufTtcbnZhciBkZWZhdWx0VGhlbWUgPSB7XG4gIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICBjb2xvcnM6IGNvbG9ycyxcbiAgc3BhY2luZzogc3BhY2luZ1xufTtcblxudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgJ2FyaWEtbGl2ZSc6ICdwb2xpdGUnLFxuICBiYWNrc3BhY2VSZW1vdmVzVmFsdWU6IHRydWUsXG4gIGJsdXJJbnB1dE9uU2VsZWN0OiBpbmRleC5pc1RvdWNoQ2FwYWJsZSgpLFxuICBjYXB0dXJlTWVudVNjcm9sbDogIWluZGV4LmlzVG91Y2hDYXBhYmxlKCksXG4gIGNsYXNzTmFtZXM6IHt9LFxuICBjbG9zZU1lbnVPblNlbGVjdDogdHJ1ZSxcbiAgY2xvc2VNZW51T25TY3JvbGw6IGZhbHNlLFxuICBjb21wb25lbnRzOiB7fSxcbiAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlOiB0cnVlLFxuICBlc2NhcGVDbGVhcnNWYWx1ZTogZmFsc2UsXG4gIGZpbHRlck9wdGlvbjogY3JlYXRlRmlsdGVyKCksXG4gIGZvcm1hdEdyb3VwTGFiZWw6IGZvcm1hdEdyb3VwTGFiZWwsXG4gIGdldE9wdGlvbkxhYmVsOiBnZXRPcHRpb25MYWJlbCQxLFxuICBnZXRPcHRpb25WYWx1ZTogZ2V0T3B0aW9uVmFsdWUkMSxcbiAgaXNEaXNhYmxlZDogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIGlzTXVsdGk6IGZhbHNlLFxuICBpc1J0bDogZmFsc2UsXG4gIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgaXNPcHRpb25EaXNhYmxlZDogaXNPcHRpb25EaXNhYmxlZCxcbiAgbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIGxvYWRpbmdNZXNzYWdlKCkge1xuICAgIHJldHVybiAnTG9hZGluZy4uLic7XG4gIH0sXG4gIG1heE1lbnVIZWlnaHQ6IDMwMCxcbiAgbWluTWVudUhlaWdodDogMTQwLFxuICBtZW51SXNPcGVuOiBmYWxzZSxcbiAgbWVudVBsYWNlbWVudDogJ2JvdHRvbScsXG4gIG1lbnVQb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgbWVudVNob3VsZEJsb2NrU2Nyb2xsOiBmYWxzZSxcbiAgbWVudVNob3VsZFNjcm9sbEludG9WaWV3OiAhaW5kZXguaXNNb2JpbGVEZXZpY2UoKSxcbiAgbm9PcHRpb25zTWVzc2FnZTogZnVuY3Rpb24gbm9PcHRpb25zTWVzc2FnZSgpIHtcbiAgICByZXR1cm4gJ05vIG9wdGlvbnMnO1xuICB9LFxuICBvcGVuTWVudU9uRm9jdXM6IGZhbHNlLFxuICBvcGVuTWVudU9uQ2xpY2s6IHRydWUsXG4gIG9wdGlvbnM6IFtdLFxuICBwYWdlU2l6ZTogNSxcbiAgcGxhY2Vob2xkZXI6ICdTZWxlY3QuLi4nLFxuICBzY3JlZW5SZWFkZXJTdGF0dXM6IGZ1bmN0aW9uIHNjcmVlblJlYWRlclN0YXR1cyhfcmVmKSB7XG4gICAgdmFyIGNvdW50ID0gX3JlZi5jb3VudDtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoY291bnQsIFwiIHJlc3VsdFwiKS5jb25jYXQoY291bnQgIT09IDEgPyAncycgOiAnJywgXCIgYXZhaWxhYmxlXCIpO1xuICB9LFxuICBzdHlsZXM6IHt9LFxuICB0YWJJbmRleDogMCxcbiAgdGFiU2VsZWN0c1ZhbHVlOiB0cnVlLFxuICB1bnN0eWxlZDogZmFsc2Vcbn07XG5mdW5jdGlvbiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBpbmRleCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9pc09wdGlvbkRpc2FibGVkKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlKTtcbiAgdmFyIGlzU2VsZWN0ZWQgPSBfaXNPcHRpb25TZWxlY3RlZChwcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIHZhciBsYWJlbCA9IGdldE9wdGlvbkxhYmVsKHByb3BzLCBvcHRpb24pO1xuICB2YXIgdmFsdWUgPSBnZXRPcHRpb25WYWx1ZShwcm9wcywgb3B0aW9uKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnb3B0aW9uJyxcbiAgICBkYXRhOiBvcHRpb24sXG4gICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgIGxhYmVsOiBsYWJlbCxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgaW5kZXg6IGluZGV4XG4gIH07XG59XG5mdW5jdGlvbiBidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChncm91cE9yT3B0aW9uLCBncm91cE9yT3B0aW9uSW5kZXgpIHtcbiAgICBpZiAoJ29wdGlvbnMnIGluIGdyb3VwT3JPcHRpb24pIHtcbiAgICAgIHZhciBjYXRlZ29yaXplZE9wdGlvbnMgPSBncm91cE9yT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIG9wdGlvbkluZGV4KSB7XG4gICAgICAgIHJldHVybiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBvcHRpb25JbmRleCk7XG4gICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBpc0ZvY3VzYWJsZShwcm9wcywgY2F0ZWdvcml6ZWRPcHRpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gY2F0ZWdvcml6ZWRPcHRpb25zLmxlbmd0aCA+IDAgPyB7XG4gICAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICAgIGRhdGE6IGdyb3VwT3JPcHRpb24sXG4gICAgICAgIG9wdGlvbnM6IGNhdGVnb3JpemVkT3B0aW9ucyxcbiAgICAgICAgaW5kZXg6IGdyb3VwT3JPcHRpb25JbmRleFxuICAgICAgfSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIGNhdGVnb3JpemVkT3B0aW9uID0gdG9DYXRlZ29yaXplZE9wdGlvbihwcm9wcywgZ3JvdXBPck9wdGlvbiwgc2VsZWN0VmFsdWUsIGdyb3VwT3JPcHRpb25JbmRleCk7XG4gICAgcmV0dXJuIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikgPyBjYXRlZ29yaXplZE9wdGlvbiA6IHVuZGVmaW5lZDtcbiAgfSkuZmlsdGVyKGluZGV4Lm5vdE51bGxpc2gpO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhjYXRlZ29yaXplZE9wdGlvbnMpIHtcbiAgcmV0dXJuIGNhdGVnb3JpemVkT3B0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKG9wdGlvbnNBY2N1bXVsYXRvciwgY2F0ZWdvcml6ZWRPcHRpb24pIHtcbiAgICBpZiAoY2F0ZWdvcml6ZWRPcHRpb24udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2guYXBwbHkob3B0aW9uc0FjY3VtdWxhdG9yLCBfdG9Db25zdW1hYmxlQXJyYXkoY2F0ZWdvcml6ZWRPcHRpb24ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uLmRhdGE7XG4gICAgICB9KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zQWNjdW11bGF0b3IucHVzaChjYXRlZ29yaXplZE9wdGlvbi5kYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhjYXRlZ29yaXplZE9wdGlvbnMsIG9wdGlvbklkKSB7XG4gIHJldHVybiBjYXRlZ29yaXplZE9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChvcHRpb25zQWNjdW11bGF0b3IsIGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgaWYgKGNhdGVnb3JpemVkT3B0aW9uLnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgIG9wdGlvbnNBY2N1bXVsYXRvci5wdXNoLmFwcGx5KG9wdGlvbnNBY2N1bXVsYXRvciwgX3RvQ29uc3VtYWJsZUFycmF5KGNhdGVnb3JpemVkT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiBvcHRpb24uZGF0YSxcbiAgICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KVxuICAgICAgICB9O1xuICAgICAgfSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2goe1xuICAgICAgICBkYXRhOiBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkge1xuICByZXR1cm4gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikge1xuICB2YXIgX3Byb3BzJGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgIGlucHV0VmFsdWUgPSBfcHJvcHMkaW5wdXRWYWx1ZSA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkaW5wdXRWYWx1ZTtcbiAgdmFyIGRhdGEgPSBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgIGlzU2VsZWN0ZWQgPSBjYXRlZ29yaXplZE9wdGlvbi5pc1NlbGVjdGVkLFxuICAgIGxhYmVsID0gY2F0ZWdvcml6ZWRPcHRpb24ubGFiZWwsXG4gICAgdmFsdWUgPSBjYXRlZ29yaXplZE9wdGlvbi52YWx1ZTtcbiAgcmV0dXJuICghc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykgfHwgIWlzU2VsZWN0ZWQpICYmIF9maWx0ZXJPcHRpb24ocHJvcHMsIHtcbiAgICBsYWJlbDogbGFiZWwsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIGRhdGE6IGRhdGFcbiAgfSwgaW5wdXRWYWx1ZSk7XG59XG5mdW5jdGlvbiBnZXROZXh0Rm9jdXNlZFZhbHVlKHN0YXRlLCBuZXh0U2VsZWN0VmFsdWUpIHtcbiAgdmFyIGZvY3VzZWRWYWx1ZSA9IHN0YXRlLmZvY3VzZWRWYWx1ZSxcbiAgICBsYXN0U2VsZWN0VmFsdWUgPSBzdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgdmFyIGxhc3RGb2N1c2VkSW5kZXggPSBsYXN0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICBpZiAobGFzdEZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgdmFyIG5leHRGb2N1c2VkSW5kZXggPSBuZXh0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICAgIGlmIChuZXh0Rm9jdXNlZEluZGV4ID4gLTEpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkIHZhbHVlIGlzIHN0aWxsIGluIHRoZSBzZWxlY3RWYWx1ZSwgcmV0dXJuIGl0XG4gICAgICByZXR1cm4gZm9jdXNlZFZhbHVlO1xuICAgIH0gZWxzZSBpZiAobGFzdEZvY3VzZWRJbmRleCA8IG5leHRTZWxlY3RWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkVmFsdWUgaXMgbm90IHByZXNlbnQgaW4gdGhlIG5leHQgc2VsZWN0VmFsdWUgYXJyYXkgYnlcbiAgICAgIC8vIHJlZmVyZW5jZSwgc28gcmV0dXJuIHRoZSBuZXcgdmFsdWUgYXQgdGhlIHNhbWUgaW5kZXhcbiAgICAgIHJldHVybiBuZXh0U2VsZWN0VmFsdWVbbGFzdEZvY3VzZWRJbmRleF07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RGb2N1c2VkT3B0aW9uID0gc3RhdGUuZm9jdXNlZE9wdGlvbjtcbiAgcmV0dXJuIGxhc3RGb2N1c2VkT3B0aW9uICYmIG9wdGlvbnMuaW5kZXhPZihsYXN0Rm9jdXNlZE9wdGlvbikgPiAtMSA/IGxhc3RGb2N1c2VkT3B0aW9uIDogb3B0aW9uc1swXTtcbn1cbnZhciBnZXRGb2N1c2VkT3B0aW9uSWQgPSBmdW5jdGlvbiBnZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzZWRPcHRpb24pIHtcbiAgdmFyIF9mb2N1c2FibGVPcHRpb25zV2l0aDtcbiAgdmFyIGZvY3VzZWRPcHRpb25JZCA9IChfZm9jdXNhYmxlT3B0aW9uc1dpdGggPSBmb2N1c2FibGVPcHRpb25zV2l0aElkcy5maW5kKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmRhdGEgPT09IGZvY3VzZWRPcHRpb247XG4gIH0pKSA9PT0gbnVsbCB8fCBfZm9jdXNhYmxlT3B0aW9uc1dpdGggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mb2N1c2FibGVPcHRpb25zV2l0aC5pZDtcbiAgcmV0dXJuIGZvY3VzZWRPcHRpb25JZCB8fCBudWxsO1xufTtcbnZhciBnZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIGdldE9wdGlvbkxhYmVsKHByb3BzLCBkYXRhKSB7XG4gIHJldHVybiBwcm9wcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbn07XG52YXIgZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiBnZXRPcHRpb25WYWx1ZShwcm9wcywgZGF0YSkge1xuICByZXR1cm4gcHJvcHMuZ2V0T3B0aW9uVmFsdWUoZGF0YSk7XG59O1xuZnVuY3Rpb24gX2lzT3B0aW9uRGlzYWJsZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9wcy5pc09wdGlvbkRpc2FibGVkID09PSAnZnVuY3Rpb24nID8gcHJvcHMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24sIHNlbGVjdFZhbHVlKSA6IGZhbHNlO1xufVxuZnVuY3Rpb24gX2lzT3B0aW9uU2VsZWN0ZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgaWYgKHNlbGVjdFZhbHVlLmluZGV4T2Yob3B0aW9uKSA+IC0xKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiBwcm9wcy5pc09wdGlvblNlbGVjdGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb3BzLmlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZSA9IGdldE9wdGlvblZhbHVlKHByb3BzLCBvcHRpb24pO1xuICByZXR1cm4gc2VsZWN0VmFsdWUuc29tZShmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBnZXRPcHRpb25WYWx1ZShwcm9wcywgaSkgPT09IGNhbmRpZGF0ZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBfZmlsdGVyT3B0aW9uKHByb3BzLCBvcHRpb24sIGlucHV0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLmZpbHRlck9wdGlvbiA/IHByb3BzLmZpbHRlck9wdGlvbihvcHRpb24sIGlucHV0VmFsdWUpIDogdHJ1ZTtcbn1cbnZhciBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zID0gZnVuY3Rpb24gc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykge1xuICB2YXIgaGlkZVNlbGVjdGVkT3B0aW9ucyA9IHByb3BzLmhpZGVTZWxlY3RlZE9wdGlvbnMsXG4gICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGk7XG4gIGlmIChoaWRlU2VsZWN0ZWRPcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICByZXR1cm4gaGlkZVNlbGVjdGVkT3B0aW9ucztcbn07XG52YXIgaW5zdGFuY2VJZCA9IDE7XG52YXIgU2VsZWN0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTZWxlY3QsIF9Db21wb25lbnQpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNlbGVjdCk7XG4gIC8vIE1pc2MuIEluc3RhbmNlIFByb3BlcnRpZXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gVE9ET1xuXG4gIC8vIFJlZnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGZ1bmN0aW9uIFNlbGVjdChfcHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNlbGVjdCk7XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBfcHJvcHMpO1xuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgYXJpYVNlbGVjdGlvbjogbnVsbCxcbiAgICAgIGZvY3VzZWRPcHRpb246IG51bGwsXG4gICAgICBmb2N1c2VkT3B0aW9uSWQ6IG51bGwsXG4gICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogW10sXG4gICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICBpbnB1dElzSGlkZGVuOiBmYWxzZSxcbiAgICAgIGlzRm9jdXNlZDogZmFsc2UsXG4gICAgICBzZWxlY3RWYWx1ZTogW10sXG4gICAgICBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZTogZmFsc2UsXG4gICAgICBwcmV2V2FzRm9jdXNlZDogZmFsc2UsXG4gICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZQcm9wczogdW5kZWZpbmVkLFxuICAgICAgaW5zdGFuY2VQcmVmaXg6ICcnXG4gICAgfTtcbiAgICBfdGhpcy5ibG9ja09wdGlvbkhvdmVyID0gZmFsc2U7XG4gICAgX3RoaXMuaXNDb21wb3NpbmcgPSBmYWxzZTtcbiAgICBfdGhpcy5jb21tb25Qcm9wcyA9IHZvaWQgMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hZID0gMDtcbiAgICBfdGhpcy5vcGVuQWZ0ZXJGb2N1cyA9IGZhbHNlO1xuICAgIF90aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSB2b2lkIDA7XG4gICAgX3RoaXMuaXNBcHBsZURldmljZSA9IGlzQXBwbGVEZXZpY2UoKTtcbiAgICBfdGhpcy5jb250cm9sUmVmID0gbnVsbDtcbiAgICBfdGhpcy5nZXRDb250cm9sUmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMuY29udHJvbFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzZWRPcHRpb25SZWYgPSBudWxsO1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25SZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5mb2N1c2VkT3B0aW9uUmVmID0gcmVmO1xuICAgIH07XG4gICAgX3RoaXMubWVudUxpc3RSZWYgPSBudWxsO1xuICAgIF90aGlzLmdldE1lbnVMaXN0UmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMubWVudUxpc3RSZWYgPSByZWY7XG4gICAgfTtcbiAgICBfdGhpcy5pbnB1dFJlZiA9IG51bGw7XG4gICAgX3RoaXMuZ2V0SW5wdXRSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5pbnB1dFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzID0gX3RoaXMuZm9jdXNJbnB1dDtcbiAgICBfdGhpcy5ibHVyID0gX3RoaXMuYmx1cklucHV0O1xuICAgIF90aGlzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgb25DaGFuZ2UgPSBfdGhpcyRwcm9wcy5vbkNoYW5nZSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzLm5hbWU7XG4gICAgICBhY3Rpb25NZXRhLm5hbWUgPSBuYW1lO1xuICAgICAgX3RoaXMuYXJpYU9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9O1xuICAgIF90aGlzLnNldFZhbHVlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb24sIG9wdGlvbikge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICBjbG9zZU1lbnVPblNlbGVjdCA9IF90aGlzJHByb3BzMi5jbG9zZU1lbnVPblNlbGVjdCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMi5pc011bHRpLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHMyLmlucHV0VmFsdWU7XG4gICAgICBfdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ3NldC12YWx1ZScsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIGlmIChjbG9zZU1lbnVPblNlbGVjdCkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIC8vIHdoZW4gdGhlIHNlbGVjdCB2YWx1ZSBzaG91bGQgY2hhbmdlLCB3ZSBzaG91bGQgcmVzZXQgZm9jdXNlZFZhbHVlXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlLCB7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBvcHRpb246IG9wdGlvblxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5zZWxlY3RPcHRpb24gPSBmdW5jdGlvbiAobmV3VmFsdWUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgYmx1cklucHV0T25TZWxlY3QgPSBfdGhpcyRwcm9wczMuYmx1cklucHV0T25TZWxlY3QsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMy5uYW1lO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZGVzZWxlY3RlZCA9IGlzTXVsdGkgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChuZXdWYWx1ZSwgc2VsZWN0VmFsdWUpO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSBfdGhpcy5pc09wdGlvbkRpc2FibGVkKG5ld1ZhbHVlLCBzZWxlY3RWYWx1ZSk7XG4gICAgICBpZiAoZGVzZWxlY3RlZCkge1xuICAgICAgICB2YXIgY2FuZGlkYXRlID0gX3RoaXMuZ2V0T3B0aW9uVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICBfdGhpcy5zZXRWYWx1ZShpbmRleC5tdWx0aVZhbHVlQXNWYWx1ZShzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZ2V0T3B0aW9uVmFsdWUoaSkgIT09IGNhbmRpZGF0ZTtcbiAgICAgICAgfSkpLCAnZGVzZWxlY3Qtb3B0aW9uJywgbmV3VmFsdWUpO1xuICAgICAgfSBlbHNlIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgICAvLyBTZWxlY3Qgb3B0aW9uIGlmIG9wdGlvbiBpcyBub3QgZGlzYWJsZWRcbiAgICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShpbmRleC5tdWx0aVZhbHVlQXNWYWx1ZShbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHNlbGVjdFZhbHVlKSwgW25ld1ZhbHVlXSkpLCAnc2VsZWN0LW9wdGlvbicsIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShpbmRleC5zaW5nbGVWYWx1ZUFzVmFsdWUobmV3VmFsdWUpLCAnc2VsZWN0LW9wdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5hcmlhT25DaGFuZ2UoaW5kZXguc2luZ2xlVmFsdWVBc1ZhbHVlKG5ld1ZhbHVlKSwge1xuICAgICAgICAgIGFjdGlvbjogJ3NlbGVjdC1vcHRpb24nLFxuICAgICAgICAgIG9wdGlvbjogbmV3VmFsdWUsXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGJsdXJJbnB1dE9uU2VsZWN0KSB7XG4gICAgICAgIF90aGlzLmJsdXJJbnB1dCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMucmVtb3ZlVmFsdWUgPSBmdW5jdGlvbiAocmVtb3ZlZFZhbHVlKSB7XG4gICAgICB2YXIgaXNNdWx0aSA9IF90aGlzLnByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBjYW5kaWRhdGUgPSBfdGhpcy5nZXRPcHRpb25WYWx1ZShyZW1vdmVkVmFsdWUpO1xuICAgICAgdmFyIG5ld1ZhbHVlQXJyYXkgPSBzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmdldE9wdGlvblZhbHVlKGkpICE9PSBjYW5kaWRhdGU7XG4gICAgICB9KTtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGluZGV4LnZhbHVlVGVybmFyeShpc011bHRpLCBuZXdWYWx1ZUFycmF5LCBuZXdWYWx1ZUFycmF5WzBdIHx8IG51bGwpO1xuICAgICAgX3RoaXMub25DaGFuZ2UobmV3VmFsdWUsIHtcbiAgICAgICAgYWN0aW9uOiAncmVtb3ZlLXZhbHVlJyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlOiByZW1vdmVkVmFsdWVcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH07XG4gICAgX3RoaXMuY2xlYXJWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgICAgX3RoaXMub25DaGFuZ2UoaW5kZXgudmFsdWVUZXJuYXJ5KF90aGlzLnByb3BzLmlzTXVsdGksIFtdLCBudWxsKSwge1xuICAgICAgICBhY3Rpb246ICdjbGVhcicsXG4gICAgICAgIHJlbW92ZWRWYWx1ZXM6IHNlbGVjdFZhbHVlXG4gICAgICB9KTtcbiAgICB9O1xuICAgIF90aGlzLnBvcFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGlzTXVsdGkgPSBfdGhpcy5wcm9wcy5pc011bHRpO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgbGFzdFNlbGVjdGVkVmFsdWUgPSBzZWxlY3RWYWx1ZVtzZWxlY3RWYWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgIHZhciBuZXdWYWx1ZUFycmF5ID0gc2VsZWN0VmFsdWUuc2xpY2UoMCwgc2VsZWN0VmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICB2YXIgbmV3VmFsdWUgPSBpbmRleC52YWx1ZVRlcm5hcnkoaXNNdWx0aSwgbmV3VmFsdWVBcnJheSwgbmV3VmFsdWVBcnJheVswXSB8fCBudWxsKTtcbiAgICAgIGlmIChsYXN0U2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICBfdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSwge1xuICAgICAgICAgIGFjdGlvbjogJ3BvcC12YWx1ZScsXG4gICAgICAgICAgcmVtb3ZlZFZhbHVlOiBsYXN0U2VsZWN0ZWRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25JZCA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICByZXR1cm4gZ2V0Rm9jdXNlZE9wdGlvbklkKF90aGlzLnN0YXRlLmZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkRm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMoYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlKSwgX3RoaXMuZ2V0RWxlbWVudElkKCdvcHRpb24nKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICB9O1xuICAgIF90aGlzLmN4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5kZXguY2xhc3NOYW1lcy5hcHBseSh2b2lkIDAsIFtfdGhpcy5wcm9wcy5jbGFzc05hbWVQcmVmaXhdLmNvbmNhdChhcmdzKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICByZXR1cm4gZ2V0T3B0aW9uTGFiZWwoX3RoaXMucHJvcHMsIGRhdGEpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgcmV0dXJuIGdldE9wdGlvblZhbHVlKF90aGlzLnByb3BzLCBkYXRhKTtcbiAgICB9O1xuICAgIF90aGlzLmdldFN0eWxlcyA9IGZ1bmN0aW9uIChrZXksIHByb3BzKSB7XG4gICAgICB2YXIgdW5zdHlsZWQgPSBfdGhpcy5wcm9wcy51bnN0eWxlZDtcbiAgICAgIHZhciBiYXNlID0gZGVmYXVsdFN0eWxlc1trZXldKHByb3BzLCB1bnN0eWxlZCk7XG4gICAgICBiYXNlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICAgIHZhciBjdXN0b20gPSBfdGhpcy5wcm9wcy5zdHlsZXNba2V5XTtcbiAgICAgIHJldHVybiBjdXN0b20gPyBjdXN0b20oYmFzZSwgcHJvcHMpIDogYmFzZTtcbiAgICB9O1xuICAgIF90aGlzLmdldENsYXNzTmFtZXMgPSBmdW5jdGlvbiAoa2V5LCBwcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzJGNsYXNzTmFtZSwgX3RoaXMkcHJvcHMkY2xhc3NOYW1lMjtcbiAgICAgIHJldHVybiAoX3RoaXMkcHJvcHMkY2xhc3NOYW1lID0gKF90aGlzJHByb3BzJGNsYXNzTmFtZTIgPSBfdGhpcy5wcm9wcy5jbGFzc05hbWVzKVtrZXldKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGNsYXNzTmFtZS5jYWxsKF90aGlzJHByb3BzJGNsYXNzTmFtZTIsIHByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEVsZW1lbnRJZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQoX3RoaXMuc3RhdGUuaW5zdGFuY2VQcmVmaXgsIFwiLVwiKS5jb25jYXQoZWxlbWVudCk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDb21wb25lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGluZGV4LmRlZmF1bHRDb21wb25lbnRzKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDYXRlZ29yaXplZE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMubWVudUlzT3BlbiA/IF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5tZW51SXNPcGVuID8gX3RoaXMuYnVpbGRGb2N1c2FibGVPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmFyaWFPbkNoYW5nZSA9IGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBhcmlhU2VsZWN0aW9uOiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfSwgYWN0aW9uTWV0YSlcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25NZW51TW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uTWVudU1vdXNlTW92ZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciA9IGZhbHNlO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sTW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAvLyBFdmVudCBjYXB0dXJlZCBieSBkcm9wZG93biBpbmRpY2F0b3JcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcGVuTWVudU9uQ2xpY2sgPSBfdGhpcy5wcm9wcy5vcGVuTWVudU9uQ2xpY2s7XG4gICAgICBpZiAoIV90aGlzLnN0YXRlLmlzRm9jdXNlZCkge1xuICAgICAgICBpZiAob3Blbk1lbnVPbkNsaWNrKSB7XG4gICAgICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH0gZWxzZSBpZiAoIV90aGlzLnByb3BzLm1lbnVJc09wZW4pIHtcbiAgICAgICAgaWYgKG9wZW5NZW51T25DbGljaykge1xuICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF90aGlzLnByb3BzLmlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNC5pc011bHRpLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM0Lm1lbnVJc09wZW47XG4gICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLm9wZW5BZnRlckZvY3VzID0gZmFsc2U7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RvdWNoZW5kJykge1xuICAgICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uU2Nyb2xsID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAodHlwZW9mIF90aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGluZGV4LmlzRG9jdW1lbnRFbGVtZW50KGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICBfdGhpcy5wcm9wcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBfdGhpcy5wcm9wcy5jbG9zZU1lbnVPblNjcm9sbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAoX3RoaXMucHJvcHMuY2xvc2VNZW51T25TY3JvbGwoZXZlbnQpKSB7XG4gICAgICAgICAgX3RoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvblN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuaXNDb21wb3NpbmcgPSB0cnVlO1xuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvbkVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmlzQ29tcG9zaW5nID0gZmFsc2U7XG4gICAgfTtcbiAgICBfdGhpcy5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgIHZhciB0b3VjaGVzID0gX3JlZjIudG91Y2hlcztcbiAgICAgIHZhciB0b3VjaCA9IHRvdWNoZXMgJiYgdG91Y2hlcy5pdGVtKDApO1xuICAgICAgaWYgKCF0b3VjaCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gdG91Y2guY2xpZW50WDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSB0b3VjaC5jbGllbnRZO1xuICAgICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hNb3ZlID0gZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IF9yZWYzLnRvdWNoZXM7XG4gICAgICB2YXIgdG91Y2ggPSB0b3VjaGVzICYmIHRvdWNoZXMuaXRlbSgwKTtcbiAgICAgIGlmICghdG91Y2gpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGRlbHRhWCA9IE1hdGguYWJzKHRvdWNoLmNsaWVudFggLSBfdGhpcy5pbml0aWFsVG91Y2hYKTtcbiAgICAgIHZhciBkZWx0YVkgPSBNYXRoLmFicyh0b3VjaC5jbGllbnRZIC0gX3RoaXMuaW5pdGlhbFRvdWNoWSk7XG4gICAgICB2YXIgbW92ZVRocmVzaG9sZCA9IDU7XG4gICAgICBfdGhpcy51c2VySXNEcmFnZ2luZyA9IGRlbHRhWCA+IG1vdmVUaHJlc2hvbGQgfHwgZGVsdGFZID4gbW92ZVRocmVzaG9sZDtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgICAvLyBjbG9zZSB0aGUgbWVudSBpZiB0aGUgdXNlciB0YXBzIG91dHNpZGVcbiAgICAgIC8vIHdlJ3JlIGNoZWNraW5nIG9uIGV2ZW50LnRhcmdldCBoZXJlIGluc3RlYWQgb2YgZXZlbnQuY3VycmVudFRhcmdldCwgYmVjYXVzZSB3ZSB3YW50IHRvIGFzc2VydCBpbmZvcm1hdGlvblxuICAgICAgLy8gb24gZXZlbnRzIG9uIGNoaWxkIGVsZW1lbnRzLCBub3QgdGhlIGRvY3VtZW50ICh3aGljaCB3ZSd2ZSBhdHRhY2hlZCB0aGlzIGhhbmRsZXIgdG8pLlxuICAgICAgaWYgKF90aGlzLmNvbnRyb2xSZWYgJiYgIV90aGlzLmNvbnRyb2xSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiBfdGhpcy5tZW51TGlzdFJlZiAmJiAhX3RoaXMubWVudUxpc3RSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICBfdGhpcy5ibHVySW5wdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzZXQgbW92ZSB2YXJzXG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSAwO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuICAgICAgX3RoaXMub25Db250cm9sTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkNsZWFySW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLmhhbmRsZUlucHV0Q2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgdmFyIGlucHV0VmFsdWUgPSBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwge1xuICAgICAgICBhY3Rpb246ICdpbnB1dC1jaGFuZ2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogcHJldklucHV0VmFsdWVcbiAgICAgIH0pO1xuICAgICAgaWYgKCFfdGhpcy5wcm9wcy5tZW51SXNPcGVuKSB7XG4gICAgICAgIF90aGlzLm9uTWVudU9wZW4oKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRGb2N1cyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25Gb2N1cyhldmVudCk7XG4gICAgICB9XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBpZiAoX3RoaXMub3BlbkFmdGVyRm9jdXMgfHwgX3RoaXMucHJvcHMub3Blbk1lbnVPbkZvY3VzKSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRCbHVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgaWYgKF90aGlzLm1lbnVMaXN0UmVmICYmIF90aGlzLm1lbnVMaXN0UmVmLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIF90aGlzLmlucHV0UmVmLmZvY3VzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25CbHVyKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgYWN0aW9uOiAnaW5wdXQtYmx1cicsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBwcmV2SW5wdXRWYWx1ZVxuICAgICAgfSk7XG4gICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25PcHRpb25Ib3ZlciA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICBpZiAoX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciB8fCBfdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uID09PSBmb2N1c2VkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcHRpb25zID0gX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb25JbmRleCA9IG9wdGlvbnMuaW5kZXhPZihmb2N1c2VkT3B0aW9uKTtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiBmb2N1c2VkT3B0aW9uSW5kZXggPiAtMSA/IF90aGlzLmdldEZvY3VzZWRPcHRpb25JZChmb2N1c2VkT3B0aW9uKSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMuc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLm9uVmFsdWVJbnB1dEZvY3VzID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBfdGhpcy5mb2N1cygpO1xuICAgIH07XG4gICAgX3RoaXMub25LZXlEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczUuaXNNdWx0aSxcbiAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlID0gX3RoaXMkcHJvcHM1LmJhY2tzcGFjZVJlbW92ZXNWYWx1ZSxcbiAgICAgICAgZXNjYXBlQ2xlYXJzVmFsdWUgPSBfdGhpcyRwcm9wczUuZXNjYXBlQ2xlYXJzVmFsdWUsXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczUuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNDbGVhcmFibGUgPSBfdGhpcyRwcm9wczUuaXNDbGVhcmFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczUuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNS5tZW51SXNPcGVuLFxuICAgICAgICBvbktleURvd24gPSBfdGhpcyRwcm9wczUub25LZXlEb3duLFxuICAgICAgICB0YWJTZWxlY3RzVmFsdWUgPSBfdGhpcyRwcm9wczUudGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgICBvcGVuTWVudU9uRm9jdXMgPSBfdGhpcyRwcm9wczUub3Blbk1lbnVPbkZvY3VzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gX3RoaXMuc3RhdGUsXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZS5mb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZS5mb2N1c2VkVmFsdWUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKHR5cGVvZiBvbktleURvd24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25LZXlEb3duKGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQmxvY2sgb3B0aW9uIGhvdmVyIGV2ZW50cyB3aGVuIHRoZSB1c2VyIGhhcyBqdXN0IHByZXNzZWQgYSBrZXlcbiAgICAgIF90aGlzLmJsb2NrT3B0aW9uSG92ZXIgPSB0cnVlO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICBpZiAoIWlzTXVsdGkgfHwgaW5wdXRWYWx1ZSkgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzVmFsdWUoJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgIGlmICghaXNNdWx0aSB8fCBpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNWYWx1ZSgnbmV4dCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgIGlmIChpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgaWYgKGZvY3VzZWRWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMucmVtb3ZlVmFsdWUoZm9jdXNlZFZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFiYWNrc3BhY2VSZW1vdmVzVmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChpc011bHRpKSB7XG4gICAgICAgICAgICAgIF90aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2xlYXJhYmxlKSB7XG4gICAgICAgICAgICAgIF90aGlzLmNsZWFyVmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgaWYgKF90aGlzLmlzQ29tcG9zaW5nKSByZXR1cm47XG4gICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8ICFtZW51SXNPcGVuIHx8ICF0YWJTZWxlY3RzVmFsdWUgfHwgIWZvY3VzZWRPcHRpb24gfHxcbiAgICAgICAgICAvLyBkb24ndCBjYXB0dXJlIHRoZSBldmVudCBpZiB0aGUgbWVudSBvcGVucyBvbiBmb2N1cyBhbmQgdGhlIGZvY3VzZWRcbiAgICAgICAgICAvLyBvcHRpb24gaXMgYWxyZWFkeSBzZWxlY3RlZDsgaXQgYnJlYWtzIHRoZSBmbG93IG9mIG5hdmlnYXRpb25cbiAgICAgICAgICBvcGVuTWVudU9uRm9jdXMgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChmb2N1c2VkT3B0aW9uLCBzZWxlY3RWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDIyOSkge1xuICAgICAgICAgICAgLy8gaWdub3JlIHRoZSBrZXlkb3duIGV2ZW50IGZyb20gYW4gSW5wdXQgTWV0aG9kIEVkaXRvcihJTUUpXG4gICAgICAgICAgICAvLyByZWYuIGh0dHBzOi8vd3d3LnczLm9yZy9UUi91aWV2ZW50cy8jZGV0ZXJtaW5lLWtleWRvd24ta2V5dXAta2V5Q29kZVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHJldHVybjtcbiAgICAgICAgICAgIGlmIChfdGhpcy5pc0NvbXBvc2luZykgcmV0dXJuO1xuICAgICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgICAgICAgYWN0aW9uOiAnbWVudS1jbG9zZScsXG4gICAgICAgICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uTWVudUNsb3NlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0NsZWFyYWJsZSAmJiBlc2NhcGVDbGVhcnNWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgLy8gc3BhY2VcbiAgICAgICAgICBpZiAoaW5wdXRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZm9jdXNlZE9wdGlvbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLnNlbGVjdE9wdGlvbihmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgaWYgKG1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCd1cCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5vcGVuTWVudSgnbGFzdCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ2Rvd24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdldXAnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdlZG93bicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignZmlyc3QnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignbGFzdCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcbiAgICBfdGhpcy5zdGF0ZS5pbnN0YW5jZVByZWZpeCA9ICdyZWFjdC1zZWxlY3QtJyArIChfdGhpcy5wcm9wcy5pbnN0YW5jZUlkIHx8ICsraW5zdGFuY2VJZCk7XG4gICAgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUgPSBpbmRleC5jbGVhblZhbHVlKF9wcm9wcy52YWx1ZSk7XG4gICAgLy8gU2V0IGZvY3VzZWRPcHRpb24gaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gaW5pdCAoZS5nLiBkZWZhdWx0TWVudUlzT3BlbilcbiAgICBpZiAoX3Byb3BzLm1lbnVJc09wZW4gJiYgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUubGVuZ3RoKSB7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBfdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zV2l0aElkcygpO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSBfdGhpcy5idWlsZEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIHZhciBvcHRpb25JbmRleCA9IGZvY3VzYWJsZU9wdGlvbnMuaW5kZXhPZihfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZVswXSk7XG4gICAgICBfdGhpcy5zdGF0ZS5mb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiA9IGZvY3VzYWJsZU9wdGlvbnNbb3B0aW9uSW5kZXhdO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2FibGVPcHRpb25zW29wdGlvbkluZGV4XSk7XG4gICAgfVxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU2VsZWN0LCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMuc3RhcnRMaXN0ZW5pbmdDb21wb3NpdGlvbigpO1xuICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgLy8gTGlzdGVuIHRvIGFsbCBzY3JvbGwgZXZlbnRzLCBhbmQgZmlsdGVyIHRoZW0gb3V0IGluc2lkZSBvZiAnb25TY3JvbGwnXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTY3JvbGwgZm9jdXNlZE9wdGlvbiBpbnRvIHZpZXcgaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gbW91bnQgKGUuZy4gZGVmYXVsdE1lbnVJc09wZW4pXG4gICAgICBpZiAodGhpcy5wcm9wcy5tZW51SXNPcGVuICYmIHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiAmJiB0aGlzLm1lbnVMaXN0UmVmICYmIHRoaXMuZm9jdXNlZE9wdGlvblJlZikge1xuICAgICAgICBpbmRleC5zY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczYuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNi5tZW51SXNPcGVuO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKFxuICAgICAgLy8gZW5zdXJlIGZvY3VzIGlzIHJlc3RvcmVkIGNvcnJlY3RseSB3aGVuIHRoZSBjb250cm9sIGJlY29tZXMgZW5hYmxlZFxuICAgICAgaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkIHx8XG4gICAgICAvLyBlbnN1cmUgZm9jdXMgaXMgb24gdGhlIElucHV0IHdoZW4gdGhlIG1lbnUgb3BlbnNcbiAgICAgIGlzRm9jdXNlZCAmJiBtZW51SXNPcGVuICYmICFwcmV2UHJvcHMubWVudUlzT3Blbikge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0ZvY3VzZWQgJiYgaXNEaXNhYmxlZCAmJiAhcHJldlByb3BzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGJsdXJyZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbW1hdGljYWxseSBkaXNhYmxlZCB3aGlsZSBmb2N1c2VkXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGZhbHNlXG4gICAgICAgIH0sIHRoaXMub25NZW51Q2xvc2UpO1xuICAgICAgfSBlbHNlIGlmICghaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkICYmIHRoaXMuaW5wdXRSZWYgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGZvY3VzZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbWF0aWNhbGx5IHJlLWVuYWJsZWQgd2hpbGUgZm9jdXNlZCAoRmlyZWZveClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gc2Nyb2xsIHRoZSBmb2N1c2VkIG9wdGlvbiBpbnRvIHZpZXcgaWYgbmVjZXNzYXJ5XG4gICAgICBpZiAodGhpcy5tZW51TGlzdFJlZiAmJiB0aGlzLmZvY3VzZWRPcHRpb25SZWYgJiYgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSkge1xuICAgICAgICBpbmRleC5zY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nQ29tcG9zaXRpb24oKTtcbiAgICAgIHRoaXMuc3RvcExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENvbnN1bWVyIEhhbmRsZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIH0sIHtcbiAgICBrZXk6IFwib25NZW51T3BlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbk1lbnVPcGVuKCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1lbnVPcGVuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uTWVudUNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ21lbnUtY2xvc2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogdGhpcy5wcm9wcy5pbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25JbnB1dENoYW5nZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbklucHV0Q2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB0aGlzLnByb3BzLm9uSW5wdXRDaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE1ldGhvZHNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJmb2N1c0lucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvY3VzSW5wdXQoKSB7XG4gICAgICBpZiAoIXRoaXMuaW5wdXRSZWYpIHJldHVybjtcbiAgICAgIHRoaXMuaW5wdXRSZWYuZm9jdXMoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmx1cklucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJsdXJJbnB1dCgpIHtcbiAgICAgIGlmICghdGhpcy5pbnB1dFJlZikgcmV0dXJuO1xuICAgICAgdGhpcy5pbnB1dFJlZi5ibHVyKCk7XG4gICAgfVxuXG4gICAgLy8gYWxpYXNlZCBmb3IgY29uc3VtZXJzXG4gIH0sIHtcbiAgICBrZXk6IFwib3Blbk1lbnVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb3Blbk1lbnUoZm9jdXNPcHRpb24pIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlMiA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUyLnNlbGVjdFZhbHVlLFxuICAgICAgICBpc0ZvY3VzZWQgPSBfdGhpcyRzdGF0ZTIuaXNGb2N1c2VkO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSB0aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIG9wZW5BdEluZGV4ID0gZm9jdXNPcHRpb24gPT09ICdmaXJzdCcgPyAwIDogZm9jdXNhYmxlT3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSBmb2N1c2FibGVPcHRpb25zLmluZGV4T2Yoc2VsZWN0VmFsdWVbMF0pO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgb3BlbkF0SW5kZXggPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIG9ubHkgc2Nyb2xsIGlmIHRoZSBtZW51IGlzbid0IGFscmVhZHkgb3BlblxuICAgICAgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSA9ICEoaXNGb2N1c2VkICYmIHRoaXMubWVudUxpc3RSZWYpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0sXG4gICAgICAgIGZvY3VzZWRPcHRpb25JZDogdGhpcy5nZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0pXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIub25NZW51T3BlbigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvY3VzVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNWYWx1ZShkaXJlY3Rpb24pIHtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTMgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlMy5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGUzLmZvY3VzZWRWYWx1ZTtcblxuICAgICAgLy8gT25seSBtdWx0aXNlbGVjdHMgc3VwcG9ydCB2YWx1ZSBmb2N1c2luZ1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHJldHVybjtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBudWxsXG4gICAgICB9KTtcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBzZWxlY3RWYWx1ZS5pbmRleE9mKGZvY3VzZWRWYWx1ZSk7XG4gICAgICBpZiAoIWZvY3VzZWRWYWx1ZSkge1xuICAgICAgICBmb2N1c2VkSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBzZWxlY3RWYWx1ZS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG5leHRGb2N1cyA9IC0xO1xuICAgICAgaWYgKCFzZWxlY3RWYWx1ZS5sZW5ndGgpIHJldHVybjtcbiAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAvLyBkb24ndCBjeWNsZSBmcm9tIHRoZSBzdGFydCB0byB0aGUgZW5kXG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9jdXNlZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgLy8gaWYgbm90aGluZyBpcyBmb2N1c2VkLCBmb2N1cyB0aGUgbGFzdCB2YWx1ZSBmaXJzdFxuICAgICAgICAgICAgbmV4dEZvY3VzID0gbGFzdEluZGV4O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbmV4dCc6XG4gICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA+IC0xICYmIGZvY3VzZWRJbmRleCA8IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgbmV4dEZvY3VzID0gZm9jdXNlZEluZGV4ICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbjogbmV4dEZvY3VzICE9PSAtMSxcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBzZWxlY3RWYWx1ZVtuZXh0Rm9jdXNdXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9jdXNPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNPcHRpb24oKSB7XG4gICAgICB2YXIgZGlyZWN0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnZmlyc3QnO1xuICAgICAgdmFyIHBhZ2VTaXplID0gdGhpcy5wcm9wcy5wYWdlU2l6ZTtcbiAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uO1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLmdldEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIGlmICghb3B0aW9ucy5sZW5ndGgpIHJldHVybjtcbiAgICAgIHZhciBuZXh0Rm9jdXMgPSAwOyAvLyBoYW5kbGVzICdmaXJzdCdcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBvcHRpb25zLmluZGV4T2YoZm9jdXNlZE9wdGlvbik7XG4gICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHtcbiAgICAgICAgZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICB9XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCA+IDAgPyBmb2N1c2VkSW5kZXggLSAxIDogb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSAoZm9jdXNlZEluZGV4ICsgMSkgJSBvcHRpb25zLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncGFnZXVwJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA8IDApIG5leHRGb2N1cyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggKyBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA+IG9wdGlvbnMubGVuZ3RoIC0gMSkgbmV4dEZvY3VzID0gb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsYXN0Jykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBvcHRpb25zW25leHRGb2N1c10sXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiB0aGlzLmdldEZvY3VzZWRPcHRpb25JZChvcHRpb25zW25leHRGb2N1c10pXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGhlbWVcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBHZXR0ZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBmdW5jdGlvbiBnZXRUaGVtZSgpIHtcbiAgICAgIC8vIFVzZSB0aGUgZGVmYXVsdCB0aGVtZSBpZiB0aGVyZSBhcmUgbm8gY3VzdG9taXNhdGlvbnMuXG4gICAgICBpZiAoIXRoaXMucHJvcHMudGhlbWUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRUaGVtZTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSB0aGVtZSBwcm9wIGlzIGEgZnVuY3Rpb24sIGFzc3VtZSB0aGUgZnVuY3Rpb25cbiAgICAgIC8vIGtub3dzIGhvdyB0byBtZXJnZSB0aGUgcGFzc2VkLWluIGRlZmF1bHQgdGhlbWUgd2l0aFxuICAgICAgLy8gaXRzIG93biBtb2RpZmljYXRpb25zLlxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnRoZW1lKGRlZmF1bHRUaGVtZSk7XG4gICAgICB9XG4gICAgICAvLyBPdGhlcndpc2UsIGlmIGEgcGxhaW4gdGhlbWUgb2JqZWN0IHdhcyBwYXNzZWQgaW4sXG4gICAgICAvLyBvdmVybGF5IGl0IHdpdGggdGhlIGRlZmF1bHQgdGhlbWUuXG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0VGhlbWUpLCB0aGlzLnByb3BzLnRoZW1lKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tbW9uUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29tbW9uUHJvcHMoKSB7XG4gICAgICB2YXIgY2xlYXJWYWx1ZSA9IHRoaXMuY2xlYXJWYWx1ZSxcbiAgICAgICAgY3ggPSB0aGlzLmN4LFxuICAgICAgICBnZXRTdHlsZXMgPSB0aGlzLmdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lcyA9IHRoaXMuZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWUgPSB0aGlzLmdldFZhbHVlLFxuICAgICAgICBzZWxlY3RPcHRpb24gPSB0aGlzLnNlbGVjdE9wdGlvbixcbiAgICAgICAgc2V0VmFsdWUgPSB0aGlzLnNldFZhbHVlLFxuICAgICAgICBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICB2YXIgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGksXG4gICAgICAgIGlzUnRsID0gcHJvcHMuaXNSdGwsXG4gICAgICAgIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zO1xuICAgICAgdmFyIGhhc1ZhbHVlID0gdGhpcy5oYXNWYWx1ZSgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXJWYWx1ZTogY2xlYXJWYWx1ZSxcbiAgICAgICAgY3g6IGN4LFxuICAgICAgICBnZXRTdHlsZXM6IGdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWU6IGdldFZhbHVlLFxuICAgICAgICBoYXNWYWx1ZTogaGFzVmFsdWUsXG4gICAgICAgIGlzTXVsdGk6IGlzTXVsdGksXG4gICAgICAgIGlzUnRsOiBpc1J0bCxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgc2VsZWN0T3B0aW9uOiBzZWxlY3RPcHRpb24sXG4gICAgICAgIHNlbGVjdFByb3BzOiBwcm9wcyxcbiAgICAgICAgc2V0VmFsdWU6IHNldFZhbHVlLFxuICAgICAgICB0aGVtZTogdGhpcy5nZXRUaGVtZSgpXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNWYWx1ZSgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICByZXR1cm4gc2VsZWN0VmFsdWUubGVuZ3RoID4gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzT3B0aW9uc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNPcHRpb25zKCkge1xuICAgICAgcmV0dXJuICEhdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zKCkubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc0NsZWFyYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0NsZWFyYWJsZSgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0NsZWFyYWJsZSA9IF90aGlzJHByb3BzNy5pc0NsZWFyYWJsZSxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNy5pc011bHRpO1xuXG4gICAgICAvLyBzaW5nbGUgc2VsZWN0LCBieSBkZWZhdWx0LCBJUyBOT1QgY2xlYXJhYmxlXG4gICAgICAvLyBtdWx0aSBzZWxlY3QsIGJ5IGRlZmF1bHQsIElTIGNsZWFyYWJsZVxuICAgICAgaWYgKGlzQ2xlYXJhYmxlID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICAgICAgcmV0dXJuIGlzQ2xlYXJhYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvbkRpc2FibGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvbkRpc2FibGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvblNlbGVjdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvblNlbGVjdGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaWx0ZXJPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlsdGVyT3B0aW9uKG9wdGlvbiwgaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9maWx0ZXJPcHRpb24odGhpcy5wcm9wcywgb3B0aW9uLCBpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0T3B0aW9uTGFiZWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9ybWF0T3B0aW9uTGFiZWwoZGF0YSwgY29udGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBfaW5wdXRWYWx1ZSA9IHRoaXMucHJvcHMuaW5wdXRWYWx1ZTtcbiAgICAgICAgdmFyIF9zZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsKGRhdGEsIHtcbiAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgIGlucHV0VmFsdWU6IF9pbnB1dFZhbHVlLFxuICAgICAgICAgIHNlbGVjdFZhbHVlOiBfc2VsZWN0VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0R3JvdXBMYWJlbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXRHcm91cExhYmVsKGRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdEdyb3VwTGFiZWwoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTW91c2UgSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ29tcG9zaXRpb24gSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nQ29tcG9zaXRpb24oKSB7XG4gICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0JywgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQsIGZhbHNlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdDb21wb3NpdGlvbigpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJywgdGhpcy5vbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVG91Y2ggSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nVG9Ub3VjaCgpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLm9uVG91Y2hTdGFydCwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLm9uVG91Y2hNb3ZlLCBmYWxzZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN0b3BMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdUb1RvdWNoKCkge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0KTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5vblRvdWNoTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySW5wdXRcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBSZW5kZXJlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBmdW5jdGlvbiByZW5kZXJJbnB1dCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczggPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM4LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzU2VhcmNoYWJsZSA9IF90aGlzJHByb3BzOC5pc1NlYXJjaGFibGUsXG4gICAgICAgIGlucHV0SWQgPSBfdGhpcyRwcm9wczguaW5wdXRJZCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOC5pbnB1dFZhbHVlLFxuICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzOC50YWJJbmRleCxcbiAgICAgICAgZm9ybSA9IF90aGlzJHByb3BzOC5mb3JtLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM4Lm1lbnVJc09wZW4sXG4gICAgICAgIHJlcXVpcmVkID0gX3RoaXMkcHJvcHM4LnJlcXVpcmVkO1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgSW5wdXQgPSBfdGhpcyRnZXRDb21wb25lbnRzLklucHV0O1xuICAgICAgdmFyIF90aGlzJHN0YXRlNCA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW4gPSBfdGhpcyRzdGF0ZTQuaW5wdXRJc0hpZGRlbixcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IF90aGlzJHN0YXRlNC5hcmlhU2VsZWN0aW9uO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpZCA9IGlucHV0SWQgfHwgdGhpcy5nZXRFbGVtZW50SWQoJ2lucHV0Jyk7XG5cbiAgICAgIC8vIGFyaWEgYXR0cmlidXRlcyBtYWtlcyB0aGUgSlNYIFwibm9pc3lcIiwgc2VwYXJhdGVkIGZvciBjbGFyaXR5XG4gICAgICB2YXIgYXJpYUF0dHJpYnV0ZXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdsaXN0JyxcbiAgICAgICAgJ2FyaWEtZXhwYW5kZWQnOiBtZW51SXNPcGVuLFxuICAgICAgICAnYXJpYS1oYXNwb3B1cCc6IHRydWUsXG4gICAgICAgICdhcmlhLWVycm9ybWVzc2FnZSc6IHRoaXMucHJvcHNbJ2FyaWEtZXJyb3JtZXNzYWdlJ10sXG4gICAgICAgICdhcmlhLWludmFsaWQnOiB0aGlzLnByb3BzWydhcmlhLWludmFsaWQnXSxcbiAgICAgICAgJ2FyaWEtbGFiZWwnOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsJ10sXG4gICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsbGVkYnknXSxcbiAgICAgICAgJ2FyaWEtcmVxdWlyZWQnOiByZXF1aXJlZCxcbiAgICAgICAgcm9sZTogJ2NvbWJvYm94JyxcbiAgICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IHRoaXMuaXNBcHBsZURldmljZSA/IHVuZGVmaW5lZCA6IHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkIHx8ICcnXG4gICAgICB9LCBtZW51SXNPcGVuICYmIHtcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnOiB0aGlzLmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICB9KSwgIWlzU2VhcmNoYWJsZSAmJiB7XG4gICAgICAgICdhcmlhLXJlYWRvbmx5JzogdHJ1ZVxuICAgICAgfSksIHRoaXMuaGFzVmFsdWUoKSA/IChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnICYmIHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgnbGl2ZS1yZWdpb24nKVxuICAgICAgfSA6IHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgncGxhY2Vob2xkZXInKVxuICAgICAgfSk7XG4gICAgICBpZiAoIWlzU2VhcmNoYWJsZSkge1xuICAgICAgICAvLyB1c2UgYSBkdW1teSBpbnB1dCB0byBtYWludGFpbiBmb2N1cy9ibHVyIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoRHVtbXlJbnB1dCwgX2V4dGVuZHMoe1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRJbnB1dFJlZixcbiAgICAgICAgICBvbkJsdXI6IHRoaXMub25JbnB1dEJsdXIsXG4gICAgICAgICAgb25DaGFuZ2U6IGluZGV4Lm5vb3AsXG4gICAgICAgICAgb25Gb2N1czogdGhpcy5vbklucHV0Rm9jdXMsXG4gICAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4LFxuICAgICAgICAgIGlucHV0TW9kZTogXCJub25lXCIsXG4gICAgICAgICAgZm9ybTogZm9ybSxcbiAgICAgICAgICB2YWx1ZTogXCJcIlxuICAgICAgICB9LCBhcmlhQXR0cmlidXRlcykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoSW5wdXQsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBhdXRvQ2FwaXRhbGl6ZTogXCJub25lXCIsXG4gICAgICAgIGF1dG9Db21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgYXV0b0NvcnJlY3Q6IFwib2ZmXCIsXG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgaW5uZXJSZWY6IHRoaXMuZ2V0SW5wdXRSZWYsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzSGlkZGVuOiBpbnB1dElzSGlkZGVuLFxuICAgICAgICBvbkJsdXI6IHRoaXMub25JbnB1dEJsdXIsXG4gICAgICAgIG9uQ2hhbmdlOiB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlLFxuICAgICAgICBvbkZvY3VzOiB0aGlzLm9uSW5wdXRGb2N1cyxcbiAgICAgICAgc3BlbGxDaGVjazogXCJmYWxzZVwiLFxuICAgICAgICB0YWJJbmRleDogdGFiSW5kZXgsXG4gICAgICAgIGZvcm06IGZvcm0sXG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB2YWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgfSwgYXJpYUF0dHJpYnV0ZXMpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclBsYWNlaG9sZGVyT3JWYWx1ZSgpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMyID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIE11bHRpVmFsdWUgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlLFxuICAgICAgICBNdWx0aVZhbHVlQ29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuTXVsdGlWYWx1ZUNvbnRhaW5lcixcbiAgICAgICAgTXVsdGlWYWx1ZUxhYmVsID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuTXVsdGlWYWx1ZUxhYmVsLFxuICAgICAgICBNdWx0aVZhbHVlUmVtb3ZlID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuTXVsdGlWYWx1ZVJlbW92ZSxcbiAgICAgICAgU2luZ2xlVmFsdWUgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5TaW5nbGVWYWx1ZSxcbiAgICAgICAgUGxhY2Vob2xkZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5QbGFjZWhvbGRlcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM5ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlID0gX3RoaXMkcHJvcHM5LmNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSxcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzOS5pc0Rpc2FibGVkLFxuICAgICAgICBpc011bHRpID0gX3RoaXMkcHJvcHM5LmlzTXVsdGksXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczkuaW5wdXRWYWx1ZSxcbiAgICAgICAgcGxhY2Vob2xkZXIgPSBfdGhpcyRwcm9wczkucGxhY2Vob2xkZXI7XG4gICAgICB2YXIgX3RoaXMkc3RhdGU1ID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTUuc2VsZWN0VmFsdWUsXG4gICAgICAgIGZvY3VzZWRWYWx1ZSA9IF90aGlzJHN0YXRlNS5mb2N1c2VkVmFsdWUsXG4gICAgICAgIGlzRm9jdXNlZCA9IF90aGlzJHN0YXRlNS5pc0ZvY3VzZWQ7XG4gICAgICBpZiAoIXRoaXMuaGFzVmFsdWUoKSB8fCAhY29udHJvbFNob3VsZFJlbmRlclZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpbnB1dFZhbHVlID8gbnVsbCA6IC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoUGxhY2Vob2xkZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgIGtleTogXCJwbGFjZWhvbGRlclwiLFxuICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgICAgaWQ6IHRoaXMuZ2V0RWxlbWVudElkKCdwbGFjZWhvbGRlcicpXG4gICAgICAgICAgfVxuICAgICAgICB9KSwgcGxhY2Vob2xkZXIpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpbmRleCkge1xuICAgICAgICAgIHZhciBpc09wdGlvbkZvY3VzZWQgPSBvcHQgPT09IGZvY3VzZWRWYWx1ZTtcbiAgICAgICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoX3RoaXMzLmdldE9wdGlvbkxhYmVsKG9wdCksIFwiLVwiKS5jb25jYXQoX3RoaXMzLmdldE9wdGlvblZhbHVlKG9wdCkpO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KE11bHRpVmFsdWUsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgICBDb250YWluZXI6IE11bHRpVmFsdWVDb250YWluZXIsXG4gICAgICAgICAgICAgIExhYmVsOiBNdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgICAgICAgIFJlbW92ZTogTXVsdGlWYWx1ZVJlbW92ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRm9jdXNlZDogaXNPcHRpb25Gb2N1c2VkLFxuICAgICAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgcmVtb3ZlUHJvcHM6IHtcbiAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMzLnJlbW92ZVZhbHVlKG9wdCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uVG91Y2hFbmQ6IGZ1bmN0aW9uIG9uVG91Y2hFbmQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5yZW1vdmVWYWx1ZShvcHQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbk1vdXNlRG93bjogZnVuY3Rpb24gb25Nb3VzZURvd24oZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGE6IG9wdFxuICAgICAgICAgIH0pLCBfdGhpczMuZm9ybWF0T3B0aW9uTGFiZWwob3B0LCAndmFsdWUnKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0VmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgc2luZ2xlVmFsdWUgPSBzZWxlY3RWYWx1ZVswXTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFNpbmdsZVZhbHVlLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgZGF0YTogc2luZ2xlVmFsdWUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgICAgIH0pLCB0aGlzLmZvcm1hdE9wdGlvbkxhYmVsKHNpbmdsZVZhbHVlLCAndmFsdWUnKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckNsZWFySW5kaWNhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckNsZWFySW5kaWNhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMzID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIENsZWFySW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czMuQ2xlYXJJbmRpY2F0b3I7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTAgPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHMxMC5pc0Rpc2FibGVkLFxuICAgICAgICBpc0xvYWRpbmcgPSBfdGhpcyRwcm9wczEwLmlzTG9hZGluZztcbiAgICAgIHZhciBpc0ZvY3VzZWQgPSB0aGlzLnN0YXRlLmlzRm9jdXNlZDtcbiAgICAgIGlmICghdGhpcy5pc0NsZWFyYWJsZSgpIHx8ICFDbGVhckluZGljYXRvciB8fCBpc0Rpc2FibGVkIHx8ICF0aGlzLmhhc1ZhbHVlKCkgfHwgaXNMb2FkaW5nKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGlubmVyUHJvcHMgPSB7XG4gICAgICAgIG9uTW91c2VEb3duOiB0aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24sXG4gICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMub25DbGVhckluZGljYXRvclRvdWNoRW5kLFxuICAgICAgICAnYXJpYS1oaWRkZW4nOiAndHJ1ZSdcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChDbGVhckluZGljYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckxvYWRpbmdJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTG9hZGluZ0luZGljYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNCA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBMb2FkaW5nSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czQuTG9hZGluZ0luZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMSA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczExLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTEuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCFMb2FkaW5nSW5kaWNhdG9yIHx8ICFpc0xvYWRpbmcpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGlubmVyUHJvcHMgPSB7XG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KExvYWRpbmdJbmRpY2F0b3IsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclByb3BzOiBpbm5lclByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJJbmRpY2F0b3JTZXBhcmF0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM1ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIERyb3Bkb3duSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czUuRHJvcGRvd25JbmRpY2F0b3IsXG4gICAgICAgIEluZGljYXRvclNlcGFyYXRvciA9IF90aGlzJGdldENvbXBvbmVudHM1LkluZGljYXRvclNlcGFyYXRvcjtcblxuICAgICAgLy8gc2VwYXJhdG9yIGRvZXNuJ3QgbWFrZSBzZW5zZSB3aXRob3V0IHRoZSBkcm9wZG93biBpbmRpY2F0b3JcbiAgICAgIGlmICghRHJvcGRvd25JbmRpY2F0b3IgfHwgIUluZGljYXRvclNlcGFyYXRvcikgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSB0aGlzLnByb3BzLmlzRGlzYWJsZWQ7XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChJbmRpY2F0b3JTZXBhcmF0b3IsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJEcm9wZG93bkluZGljYXRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJEcm9wZG93bkluZGljYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNiA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBEcm9wZG93bkluZGljYXRvciA9IF90aGlzJGdldENvbXBvbmVudHM2LkRyb3Bkb3duSW5kaWNhdG9yO1xuICAgICAgaWYgKCFEcm9wZG93bkluZGljYXRvcikgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSB0aGlzLnByb3BzLmlzRGlzYWJsZWQ7XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25Ecm9wZG93bkluZGljYXRvck1vdXNlRG93bixcbiAgICAgICAgb25Ub3VjaEVuZDogdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yVG91Y2hFbmQsXG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KERyb3Bkb3duSW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTWVudVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJNZW51KCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czcgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgR3JvdXAgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Hcm91cCxcbiAgICAgICAgR3JvdXBIZWFkaW5nID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuR3JvdXBIZWFkaW5nLFxuICAgICAgICBNZW51ID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTWVudSxcbiAgICAgICAgTWVudUxpc3QgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5NZW51TGlzdCxcbiAgICAgICAgTWVudVBvcnRhbCA9IF90aGlzJGdldENvbXBvbmVudHM3Lk1lbnVQb3J0YWwsXG4gICAgICAgIExvYWRpbmdNZXNzYWdlID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTG9hZGluZ01lc3NhZ2UsXG4gICAgICAgIE5vT3B0aW9uc01lc3NhZ2UgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Ob09wdGlvbnNNZXNzYWdlLFxuICAgICAgICBPcHRpb24gPSBfdGhpcyRnZXRDb21wb25lbnRzNy5PcHRpb247XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb24gPSB0aGlzLnN0YXRlLmZvY3VzZWRPcHRpb247XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNhcHR1cmVNZW51U2Nyb2xsID0gX3RoaXMkcHJvcHMxMi5jYXB0dXJlTWVudVNjcm9sbCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzMTIuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNMb2FkaW5nID0gX3RoaXMkcHJvcHMxMi5pc0xvYWRpbmcsXG4gICAgICAgIGxvYWRpbmdNZXNzYWdlID0gX3RoaXMkcHJvcHMxMi5sb2FkaW5nTWVzc2FnZSxcbiAgICAgICAgbWluTWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWluTWVudUhlaWdodCxcbiAgICAgICAgbWF4TWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWF4TWVudUhlaWdodCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzMTIubWVudUlzT3BlbixcbiAgICAgICAgbWVudVBsYWNlbWVudCA9IF90aGlzJHByb3BzMTIubWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uID0gX3RoaXMkcHJvcHMxMi5tZW51UG9zaXRpb24sXG4gICAgICAgIG1lbnVQb3J0YWxUYXJnZXQgPSBfdGhpcyRwcm9wczEyLm1lbnVQb3J0YWxUYXJnZXQsXG4gICAgICAgIG1lbnVTaG91bGRCbG9ja1Njcm9sbCA9IF90aGlzJHByb3BzMTIubWVudVNob3VsZEJsb2NrU2Nyb2xsLFxuICAgICAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBfdGhpcyRwcm9wczEyLm1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyxcbiAgICAgICAgbm9PcHRpb25zTWVzc2FnZSA9IF90aGlzJHByb3BzMTIubm9PcHRpb25zTWVzc2FnZSxcbiAgICAgICAgb25NZW51U2Nyb2xsVG9Ub3AgPSBfdGhpcyRwcm9wczEyLm9uTWVudVNjcm9sbFRvVG9wLFxuICAgICAgICBvbk1lbnVTY3JvbGxUb0JvdHRvbSA9IF90aGlzJHByb3BzMTIub25NZW51U2Nyb2xsVG9Cb3R0b207XG4gICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybiBudWxsO1xuXG4gICAgICAvLyBUT0RPOiBJbnRlcm5hbCBPcHRpb24gVHlwZSBoZXJlXG4gICAgICB2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKHByb3BzLCBpZCkge1xuICAgICAgICB2YXIgdHlwZSA9IHByb3BzLnR5cGUsXG4gICAgICAgICAgZGF0YSA9IHByb3BzLmRhdGEsXG4gICAgICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTZWxlY3RlZCA9IHByb3BzLmlzU2VsZWN0ZWQsXG4gICAgICAgICAgbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlO1xuICAgICAgICB2YXIgaXNGb2N1c2VkID0gZm9jdXNlZE9wdGlvbiA9PT0gZGF0YTtcbiAgICAgICAgdmFyIG9uSG92ZXIgPSBpc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQub25PcHRpb25Ib3ZlcihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9uU2VsZWN0ID0gaXNEaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXM0LnNlbGVjdE9wdGlvbihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9wdGlvbklkID0gXCJcIi5jb25jYXQoX3RoaXM0LmdldEVsZW1lbnRJZCgnb3B0aW9uJyksIFwiLVwiKS5jb25jYXQoaWQpO1xuICAgICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgICBpZDogb3B0aW9uSWQsXG4gICAgICAgICAgb25DbGljazogb25TZWxlY3QsXG4gICAgICAgICAgb25Nb3VzZU1vdmU6IG9uSG92ZXIsXG4gICAgICAgICAgb25Nb3VzZU92ZXI6IG9uSG92ZXIsXG4gICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogX3RoaXM0LmlzQXBwbGVEZXZpY2UgPyB1bmRlZmluZWQgOiBpc1NlbGVjdGVkIC8vIGlzIG5vdCBzdXBwb3J0ZWQgb24gQXBwbGUgZGV2aWNlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KE9wdGlvbiwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgICBrZXk6IG9wdGlvbklkLFxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZCxcbiAgICAgICAgICBpbm5lclJlZjogaXNGb2N1c2VkID8gX3RoaXM0LmdldEZvY3VzZWRPcHRpb25SZWYgOiB1bmRlZmluZWRcbiAgICAgICAgfSksIF90aGlzNC5mb3JtYXRPcHRpb25MYWJlbChwcm9wcy5kYXRhLCAnbWVudScpKTtcbiAgICAgIH07XG4gICAgICB2YXIgbWVudVVJO1xuICAgICAgaWYgKHRoaXMuaGFzT3B0aW9ucygpKSB7XG4gICAgICAgIG1lbnVVSSA9IHRoaXMuZ2V0Q2F0ZWdvcml6ZWRPcHRpb25zKCkubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgICAgdmFyIF9kYXRhID0gaXRlbS5kYXRhLFxuICAgICAgICAgICAgICBvcHRpb25zID0gaXRlbS5vcHRpb25zLFxuICAgICAgICAgICAgICBncm91cEluZGV4ID0gaXRlbS5pbmRleDtcbiAgICAgICAgICAgIHZhciBncm91cElkID0gXCJcIi5jb25jYXQoX3RoaXM0LmdldEVsZW1lbnRJZCgnZ3JvdXAnKSwgXCItXCIpLmNvbmNhdChncm91cEluZGV4KTtcbiAgICAgICAgICAgIHZhciBoZWFkaW5nSWQgPSBcIlwiLmNvbmNhdChncm91cElkLCBcIi1oZWFkaW5nXCIpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoR3JvdXAsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgICAgICBrZXk6IGdyb3VwSWQsXG4gICAgICAgICAgICAgIGRhdGE6IF9kYXRhLFxuICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAgICAgICBIZWFkaW5nOiBHcm91cEhlYWRpbmcsXG4gICAgICAgICAgICAgIGhlYWRpbmdQcm9wczoge1xuICAgICAgICAgICAgICAgIGlkOiBoZWFkaW5nSWQsXG4gICAgICAgICAgICAgICAgZGF0YTogaXRlbS5kYXRhXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBfdGhpczQuZm9ybWF0R3JvdXBMYWJlbChpdGVtLmRhdGEpXG4gICAgICAgICAgICB9KSwgaXRlbS5vcHRpb25zLm1hcChmdW5jdGlvbiAob3B0aW9uKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZW5kZXIob3B0aW9uLCBcIlwiLmNvbmNhdChncm91cEluZGV4LCBcIi1cIikuY29uY2F0KG9wdGlvbi5pbmRleCkpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnb3B0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihpdGVtLCBcIlwiLmNvbmNhdChpdGVtLmluZGV4KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNMb2FkaW5nKSB7XG4gICAgICAgIHZhciBtZXNzYWdlID0gbG9hZGluZ01lc3NhZ2Uoe1xuICAgICAgICAgIGlucHV0VmFsdWU6IGlucHV0VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChtZXNzYWdlID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbWVudVVJID0gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChMb2FkaW5nTWVzc2FnZSwgY29tbW9uUHJvcHMsIG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF9tZXNzYWdlID0gbm9PcHRpb25zTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKF9tZXNzYWdlID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbWVudVVJID0gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChOb09wdGlvbnNNZXNzYWdlLCBjb21tb25Qcm9wcywgX21lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdmFyIG1lbnVQbGFjZW1lbnRQcm9wcyA9IHtcbiAgICAgICAgbWluTWVudUhlaWdodDogbWluTWVudUhlaWdodCxcbiAgICAgICAgbWF4TWVudUhlaWdodDogbWF4TWVudUhlaWdodCxcbiAgICAgICAgbWVudVBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uOiBtZW51UG9zaXRpb24sXG4gICAgICAgIG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldzogbWVudVNob3VsZFNjcm9sbEludG9WaWV3XG4gICAgICB9O1xuICAgICAgdmFyIG1lbnVFbGVtZW50ID0gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChpbmRleC5NZW51UGxhY2VyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIG1lbnVQbGFjZW1lbnRQcm9wcyksIGZ1bmN0aW9uIChfcmVmNCkge1xuICAgICAgICB2YXIgcmVmID0gX3JlZjQucmVmLFxuICAgICAgICAgIF9yZWY0JHBsYWNlclByb3BzID0gX3JlZjQucGxhY2VyUHJvcHMsXG4gICAgICAgICAgcGxhY2VtZW50ID0gX3JlZjQkcGxhY2VyUHJvcHMucGxhY2VtZW50LFxuICAgICAgICAgIG1heEhlaWdodCA9IF9yZWY0JHBsYWNlclByb3BzLm1heEhlaWdodDtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoTWVudSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCBtZW51UGxhY2VtZW50UHJvcHMsIHtcbiAgICAgICAgICBpbm5lclJlZjogcmVmLFxuICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgIG9uTW91c2VEb3duOiBfdGhpczQub25NZW51TW91c2VEb3duLFxuICAgICAgICAgICAgb25Nb3VzZU1vdmU6IF90aGlzNC5vbk1lbnVNb3VzZU1vdmVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFNjcm9sbE1hbmFnZXIsIHtcbiAgICAgICAgICBjYXB0dXJlRW5hYmxlZDogY2FwdHVyZU1lbnVTY3JvbGwsXG4gICAgICAgICAgb25Ub3BBcnJpdmU6IG9uTWVudVNjcm9sbFRvVG9wLFxuICAgICAgICAgIG9uQm90dG9tQXJyaXZlOiBvbk1lbnVTY3JvbGxUb0JvdHRvbSxcbiAgICAgICAgICBsb2NrRW5hYmxlZDogbWVudVNob3VsZEJsb2NrU2Nyb2xsXG4gICAgICAgIH0sIGZ1bmN0aW9uIChzY3JvbGxUYXJnZXRSZWYpIHtcbiAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChNZW51TGlzdCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgICBpbm5lclJlZjogZnVuY3Rpb24gaW5uZXJSZWYoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgX3RoaXM0LmdldE1lbnVMaXN0UmVmKGluc3RhbmNlKTtcbiAgICAgICAgICAgICAgc2Nyb2xsVGFyZ2V0UmVmKGluc3RhbmNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgICAgIHJvbGU6ICdsaXN0Ym94JyxcbiAgICAgICAgICAgICAgJ2FyaWEtbXVsdGlzZWxlY3RhYmxlJzogY29tbW9uUHJvcHMuaXNNdWx0aSxcbiAgICAgICAgICAgICAgaWQ6IF90aGlzNC5nZXRFbGVtZW50SWQoJ2xpc3Rib3gnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHQsXG4gICAgICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2VkT3B0aW9uXG4gICAgICAgICAgfSksIG1lbnVVSSk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBwb3NpdGlvbmluZyBiZWhhdmlvdXIgaXMgYWxtb3N0IGlkZW50aWNhbCBmb3IgcG9ydGFsbGVkIGFuZCBmaXhlZCxcbiAgICAgIC8vIHNvIHdlIHVzZSB0aGUgc2FtZSBjb21wb25lbnQuIHRoZSBhY3R1YWwgcG9ydGFsbGluZyBsb2dpYyBpcyBmb3JrZWRcbiAgICAgIC8vIHdpdGhpbiB0aGUgY29tcG9uZW50IGJhc2VkIG9uIGBtZW51UG9zaXRpb25gXG4gICAgICByZXR1cm4gbWVudVBvcnRhbFRhcmdldCB8fCBtZW51UG9zaXRpb24gPT09ICdmaXhlZCcgPyAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KE1lbnVQb3J0YWwsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBhcHBlbmRUbzogbWVudVBvcnRhbFRhcmdldCxcbiAgICAgICAgY29udHJvbEVsZW1lbnQ6IHRoaXMuY29udHJvbFJlZixcbiAgICAgICAgbWVudVBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uOiBtZW51UG9zaXRpb25cbiAgICAgIH0pLCBtZW51RWxlbWVudCkgOiBtZW51RWxlbWVudDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyRm9ybUZpZWxkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckZvcm1GaWVsZCgpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTMgPSB0aGlzLnByb3BzLFxuICAgICAgICBkZWxpbWl0ZXIgPSBfdGhpcyRwcm9wczEzLmRlbGltaXRlcixcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzMTMuaXNEaXNhYmxlZCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMTMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMTMubmFtZSxcbiAgICAgICAgcmVxdWlyZWQgPSBfdGhpcyRwcm9wczEzLnJlcXVpcmVkO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAhdGhpcy5oYXNWYWx1ZSgpICYmICFpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFJlcXVpcmVkSW5wdXQkMSwge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgb25Gb2N1czogdGhpcy5vblZhbHVlSW5wdXRGb2N1c1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghbmFtZSB8fCBpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICBpZiAoaXNNdWx0aSkge1xuICAgICAgICBpZiAoZGVsaW1pdGVyKSB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gc2VsZWN0VmFsdWUubWFwKGZ1bmN0aW9uIChvcHQpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczUuZ2V0T3B0aW9uVmFsdWUob3B0KTtcbiAgICAgICAgICB9KS5qb2luKGRlbGltaXRlcik7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBpbnB1dCA9IHNlbGVjdFZhbHVlLmxlbmd0aCA+IDAgPyBzZWxlY3RWYWx1ZS5tYXAoZnVuY3Rpb24gKG9wdCwgaSkge1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGtleTogXCJpLVwiLmNvbmNhdChpKSxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgICAgdmFsdWU6IF90aGlzNS5nZXRPcHRpb25WYWx1ZShvcHQpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSA6IC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgIHZhbHVlOiBcIlwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCwgaW5wdXQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX3ZhbHVlID0gc2VsZWN0VmFsdWVbMF0gPyB0aGlzLmdldE9wdGlvblZhbHVlKHNlbGVjdFZhbHVlWzBdKSA6ICcnO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgdmFsdWU6IF92YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTGl2ZVJlZ2lvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJMaXZlUmVnaW9uKCkge1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTYgPSB0aGlzLnN0YXRlLFxuICAgICAgICBhcmlhU2VsZWN0aW9uID0gX3RoaXMkc3RhdGU2LmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZTYuZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU2LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU2LmlzRm9jdXNlZCxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTYuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IHRoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoTGl2ZVJlZ2lvbiQxLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaWQ6IHRoaXMuZ2V0RWxlbWVudElkKCdsaXZlLXJlZ2lvbicpLFxuICAgICAgICBhcmlhU2VsZWN0aW9uOiBhcmlhU2VsZWN0aW9uLFxuICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWU6IGZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgIHNlbGVjdFZhbHVlOiBzZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNhYmxlT3B0aW9uczogZm9jdXNhYmxlT3B0aW9ucyxcbiAgICAgICAgaXNBcHBsZURldmljZTogdGhpcy5pc0FwcGxlRGV2aWNlXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czggPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgQ29udHJvbCA9IF90aGlzJGdldENvbXBvbmVudHM4LkNvbnRyb2wsXG4gICAgICAgIEluZGljYXRvcnNDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5JbmRpY2F0b3JzQ29udGFpbmVyLFxuICAgICAgICBTZWxlY3RDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5TZWxlY3RDb250YWluZXIsXG4gICAgICAgIFZhbHVlQ29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguVmFsdWVDb250YWluZXI7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzMTQuY2xhc3NOYW1lLFxuICAgICAgICBpZCA9IF90aGlzJHByb3BzMTQuaWQsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczE0LmlzRGlzYWJsZWQsXG4gICAgICAgIG1lbnVJc09wZW4gPSBfdGhpcyRwcm9wczE0Lm1lbnVJc09wZW47XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzID0gdGhpcy5nZXRDb21tb25Qcm9wcygpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgb25LZXlEb3duOiB0aGlzLm9uS2V5RG93blxuICAgICAgICB9LFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSksIHRoaXMucmVuZGVyTGl2ZVJlZ2lvbigpLCAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KENvbnRyb2wsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRDb250cm9sUmVmLFxuICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25Db250cm9sTW91c2VEb3duLFxuICAgICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMub25Db250cm9sVG91Y2hFbmRcbiAgICAgICAgfSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW5cbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFZhbHVlQ29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMucmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlKCksIHRoaXMucmVuZGVySW5wdXQoKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoSW5kaWNhdG9yc0NvbnRhaW5lciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgICAgIH0pLCB0aGlzLnJlbmRlckNsZWFySW5kaWNhdG9yKCksIHRoaXMucmVuZGVyTG9hZGluZ0luZGljYXRvcigpLCB0aGlzLnJlbmRlckluZGljYXRvclNlcGFyYXRvcigpLCB0aGlzLnJlbmRlckRyb3Bkb3duSW5kaWNhdG9yKCkpKSwgdGhpcy5yZW5kZXJNZW51KCksIHRoaXMucmVuZGVyRm9ybUZpZWxkKCkpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgICB2YXIgcHJldlByb3BzID0gc3RhdGUucHJldlByb3BzLFxuICAgICAgICBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZSA9IHN0YXRlLmNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlLFxuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUgPSBzdGF0ZS5pbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUsXG4gICAgICAgIGFyaWFTZWxlY3Rpb24gPSBzdGF0ZS5hcmlhU2VsZWN0aW9uLFxuICAgICAgICBpc0ZvY3VzZWQgPSBzdGF0ZS5pc0ZvY3VzZWQsXG4gICAgICAgIHByZXZXYXNGb2N1c2VkID0gc3RhdGUucHJldldhc0ZvY3VzZWQsXG4gICAgICAgIGluc3RhbmNlUHJlZml4ID0gc3RhdGUuaW5zdGFuY2VQcmVmaXg7XG4gICAgICB2YXIgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnMsXG4gICAgICAgIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgICAgIG1lbnVJc09wZW4gPSBwcm9wcy5tZW51SXNPcGVuLFxuICAgICAgICBpbnB1dFZhbHVlID0gcHJvcHMuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBpbmRleC5jbGVhblZhbHVlKHZhbHVlKTtcbiAgICAgIHZhciBuZXdNZW51T3B0aW9uc1N0YXRlID0ge307XG4gICAgICBpZiAocHJldlByb3BzICYmICh2YWx1ZSAhPT0gcHJldlByb3BzLnZhbHVlIHx8IG9wdGlvbnMgIT09IHByZXZQcm9wcy5vcHRpb25zIHx8IG1lbnVJc09wZW4gIT09IHByZXZQcm9wcy5tZW51SXNPcGVuIHx8IGlucHV0VmFsdWUgIT09IHByZXZQcm9wcy5pbnB1dFZhbHVlKSkge1xuICAgICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IG1lbnVJc09wZW4gPyBidWlsZEZvY3VzYWJsZU9wdGlvbnMocHJvcHMsIHNlbGVjdFZhbHVlKSA6IFtdO1xuICAgICAgICB2YXIgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBtZW51SXNPcGVuID8gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpLCBcIlwiLmNvbmNhdChpbnN0YW5jZVByZWZpeCwgXCItb3B0aW9uXCIpKSA6IFtdO1xuICAgICAgICB2YXIgZm9jdXNlZFZhbHVlID0gY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGUgPyBnZXROZXh0Rm9jdXNlZFZhbHVlKHN0YXRlLCBzZWxlY3RWYWx1ZSkgOiBudWxsO1xuICAgICAgICB2YXIgZm9jdXNlZE9wdGlvbiA9IGdldE5leHRGb2N1c2VkT3B0aW9uKHN0YXRlLCBmb2N1c2FibGVPcHRpb25zKTtcbiAgICAgICAgdmFyIGZvY3VzZWRPcHRpb25JZCA9IGdldEZvY3VzZWRPcHRpb25JZChmb2N1c2FibGVPcHRpb25zV2l0aElkcywgZm9jdXNlZE9wdGlvbik7XG4gICAgICAgIG5ld01lbnVPcHRpb25zU3RhdGUgPSB7XG4gICAgICAgICAgc2VsZWN0VmFsdWU6IHNlbGVjdFZhbHVlLFxuICAgICAgICAgIGZvY3VzZWRPcHRpb246IGZvY3VzZWRPcHRpb24sXG4gICAgICAgICAgZm9jdXNlZE9wdGlvbklkOiBmb2N1c2VkT3B0aW9uSWQsXG4gICAgICAgICAgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHM6IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLFxuICAgICAgICAgIGZvY3VzZWRWYWx1ZTogZm9jdXNlZFZhbHVlLFxuICAgICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgLy8gc29tZSB1cGRhdGVzIHNob3VsZCB0b2dnbGUgdGhlIHN0YXRlIG9mIHRoZSBpbnB1dCB2aXNpYmlsaXR5XG4gICAgICB2YXIgbmV3SW5wdXRJc0hpZGRlblN0YXRlID0gaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlICE9IG51bGwgJiYgcHJvcHMgIT09IHByZXZQcm9wcyA/IHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbjogaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlLFxuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IHVuZGVmaW5lZFxuICAgICAgfSA6IHt9O1xuICAgICAgdmFyIG5ld0FyaWFTZWxlY3Rpb24gPSBhcmlhU2VsZWN0aW9uO1xuICAgICAgdmFyIGhhc0tlcHRGb2N1cyA9IGlzRm9jdXNlZCAmJiBwcmV2V2FzRm9jdXNlZDtcbiAgICAgIGlmIChpc0ZvY3VzZWQgJiYgIWhhc0tlcHRGb2N1cykge1xuICAgICAgICAvLyBJZiBgdmFsdWVgIG9yIGBkZWZhdWx0VmFsdWVgIHByb3BzIGFyZSBub3QgZW1wdHkgdGhlbiBhbm5vdW5jZSB0aGVtXG4gICAgICAgIC8vIHdoZW4gdGhlIFNlbGVjdCBpcyBpbml0aWFsbHkgZm9jdXNlZFxuICAgICAgICBuZXdBcmlhU2VsZWN0aW9uID0ge1xuICAgICAgICAgIHZhbHVlOiBpbmRleC52YWx1ZVRlcm5hcnkoaXNNdWx0aSwgc2VsZWN0VmFsdWUsIHNlbGVjdFZhbHVlWzBdIHx8IG51bGwpLFxuICAgICAgICAgIG9wdGlvbnM6IHNlbGVjdFZhbHVlLFxuICAgICAgICAgIGFjdGlvbjogJ2luaXRpYWwtaW5wdXQtZm9jdXMnXG4gICAgICAgIH07XG4gICAgICAgIGhhc0tlcHRGb2N1cyA9ICFwcmV2V2FzRm9jdXNlZDtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlICdpbml0aWFsLWlucHV0LWZvY3VzJyBhY3Rpb24gaGFzIGJlZW4gc2V0IGFscmVhZHlcbiAgICAgIC8vIHRoZW4gcmVzZXQgdGhlIGFyaWFTZWxlY3Rpb24gdG8gbnVsbFxuICAgICAgaWYgKChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnKSB7XG4gICAgICAgIG5ld0FyaWFTZWxlY3Rpb24gPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBuZXdNZW51T3B0aW9uc1N0YXRlKSwgbmV3SW5wdXRJc0hpZGRlblN0YXRlKSwge30sIHtcbiAgICAgICAgcHJldlByb3BzOiBwcm9wcyxcbiAgICAgICAgYXJpYVNlbGVjdGlvbjogbmV3QXJpYVNlbGVjdGlvbixcbiAgICAgICAgcHJldldhc0ZvY3VzZWQ6IGhhc0tlcHRGb2N1c1xuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTZWxlY3Q7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5TZWxlY3QuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG5leHBvcnRzLlNlbGVjdCA9IFNlbGVjdDtcbmV4cG9ydHMuY3JlYXRlRmlsdGVyID0gY3JlYXRlRmlsdGVyO1xuZXhwb3J0cy5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnRzLmRlZmF1bHRUaGVtZSA9IGRlZmF1bHRUaGVtZTtcbmV4cG9ydHMuZ2V0T3B0aW9uTGFiZWwgPSBnZXRPcHRpb25MYWJlbCQxO1xuZXhwb3J0cy5nZXRPcHRpb25WYWx1ZSA9IGdldE9wdGlvblZhbHVlJDE7XG5leHBvcnRzLm1lcmdlU3R5bGVzID0gbWVyZ2VTdHlsZXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciB1c2VTdGF0ZU1hbmFnZXIgPSByZXF1aXJlKCcuL3VzZVN0YXRlTWFuYWdlci1jZTIzMDYxYy5janMucHJvZC5qcycpO1xudmFyIF9leHRlbmRzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIFNlbGVjdCA9IHJlcXVpcmUoJy4vU2VsZWN0LTM2ZDE1ZjkzLmNqcy5wcm9kLmpzJyk7XG52YXIgcmVhY3QgPSByZXF1aXJlKCdAZW1vdGlvbi9yZWFjdCcpO1xudmFyIGNyZWF0ZUNhY2hlID0gcmVxdWlyZSgnQGVtb3Rpb24vY2FjaGUnKTtcbnZhciBpbmRleCA9IHJlcXVpcmUoJy4vaW5kZXgtNjY1YzRlZDguY2pzLnByb2QuanMnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5Jyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZVN1cGVyJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5Jyk7XG5yZXF1aXJlKCdtZW1vaXplLW9uZScpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdGFnZ2VkVGVtcGxhdGVMaXRlcmFsJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5Jyk7XG5yZXF1aXJlKCdyZWFjdC1kb20nKTtcbnJlcXVpcmUoJ0BmbG9hdGluZy11aS9kb20nKTtcbnJlcXVpcmUoJ3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChlKSB7IHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7ICdkZWZhdWx0JzogZSB9OyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wTmFtZXNwYWNlKGUpIHtcbiAgaWYgKGUgJiYgZS5fX2VzTW9kdWxlKSByZXR1cm4gZTtcbiAgdmFyIG4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBpZiAoZSkge1xuICAgIE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgIGlmIChrICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgdmFyIGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIGspO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwgaywgZC5nZXQgPyBkIDoge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBlW2tdOyB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5bXCJkZWZhdWx0XCJdID0gZTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5cbnZhciBSZWFjdF9fbmFtZXNwYWNlID0gLyojX19QVVJFX18qL19pbnRlcm9wTmFtZXNwYWNlKFJlYWN0KTtcbnZhciBjcmVhdGVDYWNoZV9fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9faW50ZXJvcERlZmF1bHQoY3JlYXRlQ2FjaGUpO1xuXG52YXIgU3RhdGVNYW5hZ2VkU2VsZWN0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIGJhc2VTZWxlY3RQcm9wcyA9IHVzZVN0YXRlTWFuYWdlci51c2VTdGF0ZU1hbmFnZXIocHJvcHMpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChTZWxlY3QuU2VsZWN0LCBfZXh0ZW5kcyh7XG4gICAgcmVmOiByZWZcbiAgfSwgYmFzZVNlbGVjdFByb3BzKSk7XG59KTtcbnZhciBTdGF0ZU1hbmFnZWRTZWxlY3QkMSA9IFN0YXRlTWFuYWdlZFNlbGVjdDtcblxudmFyIE5vbmNlUHJvdmlkZXIgPSAoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIG5vbmNlID0gX3JlZi5ub25jZSxcbiAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgY2FjaGVLZXkgPSBfcmVmLmNhY2hlS2V5O1xuICB2YXIgZW1vdGlvbkNhY2hlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNhY2hlX19kZWZhdWx0W1wiZGVmYXVsdFwiXSh7XG4gICAgICBrZXk6IGNhY2hlS2V5LFxuICAgICAgbm9uY2U6IG5vbmNlXG4gICAgfSk7XG4gIH0sIFtjYWNoZUtleSwgbm9uY2VdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQocmVhY3QuQ2FjaGVQcm92aWRlciwge1xuICAgIHZhbHVlOiBlbW90aW9uQ2FjaGVcbiAgfSwgY2hpbGRyZW4pO1xufSk7XG5cbmV4cG9ydHMudXNlU3RhdGVNYW5hZ2VyID0gdXNlU3RhdGVNYW5hZ2VyLnVzZVN0YXRlTWFuYWdlcjtcbmV4cG9ydHMuY3JlYXRlRmlsdGVyID0gU2VsZWN0LmNyZWF0ZUZpbHRlcjtcbmV4cG9ydHMuZGVmYXVsdFRoZW1lID0gU2VsZWN0LmRlZmF1bHRUaGVtZTtcbmV4cG9ydHMubWVyZ2VTdHlsZXMgPSBTZWxlY3QubWVyZ2VTdHlsZXM7XG5leHBvcnRzLmNvbXBvbmVudHMgPSBpbmRleC5jb21wb25lbnRzO1xuZXhwb3J0cy5Ob25jZVByb3ZpZGVyID0gTm9uY2VQcm92aWRlcjtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gU3RhdGVNYW5hZ2VkU2VsZWN0JDE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9yZWFjdC1zZWxlY3QuY2pzLnByb2QuanNcIik7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC5janMuZGV2LmpzXCIpO1xufVxuIiwiZXhwb3J0cy5fZGVmYXVsdCA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC5janMuanNcIikuZGVmYXVsdDtcbiIsImltcG9ydCBzdHlsZWQgZnJvbSBcInN0eWxlZC1jb21wb25lbnRzXCJcbmltcG9ydCB7IGNvbXBvbmVudHMgfSBmcm9tIFwicmVhY3Qtc2VsZWN0XCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGNvbnN0IFNlbGVjdExhYmVsID0gKHByb3BzOiBhbnkpID0+IHtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Y29tcG9uZW50cy5Db250cm9sIHsuLi5wcm9wc30gLz5cbiAgICAgIDxMYWJlbCAkaXNGbG9hdGluZz17cHJvcHMuZ2V0VmFsdWUoKS5sZW5ndGggPT0gMCB8fCBwcm9wcy5nZXRWYWx1ZSgpWzBdLnV1aWQgPT0gXCJcIn0+e3Byb3BzLnNlbGVjdFByb3BzLm5hbWV9PC9MYWJlbD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IExhYmVsID0gc3R5bGVkLmxhYmVsPHsgJGlzRmxvYXRpbmc/OiBib29sZWFuIH0+YFxuICBsZWZ0OiAxMHB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2l0aW9uOiAwLjJzIGVhc2UgYWxsO1xuICAtbW96LXRyYW5zaXRpb246IDAuMnMgZWFzZSBhbGw7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogMC4ycyBlYXNlIGFsbDtcbiAgdG9wOiAkeyhwcm9wcykgPT4gKHByb3BzLiRpc0Zsb2F0aW5nID8gYDIwJWAgOiBgMHB4YCl9O1xuICBmb250LXNpemU6ICR7KHByb3BzKSA9PiAocHJvcHMuJGlzRmxvYXRpbmcgPyBgMXJlbWAgOiBgMC42cmVtYCl9O1xuYDtcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IHsgQ29udGFjdCB9IGZyb20gJy4uLy4uL21vZGVsL2NvbnRhY3QnXG5pbXBvcnQgQ29udGFjdFNlcnZpY2UgZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGFjdCdcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlLW5lbydcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IENvbnRhY3RNb2RhbENvbXBvbmVudCBmcm9tIFwiLi9Db250YWN0TW9kYWxDb21wb25lbnRcIlxuaW1wb3J0IE9yZGVyIGZyb20gJy4uLy4uL21vZGVsL29yZGVyJ1xuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBDb250YWN0U2VsZWN0ID0gKHtvcmRlciwgc2hvcCwgb25DaGFuZ2V9KSA9PiB7XG5cbiAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKTtcblxuICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSk7XG4gIGNvbnN0IGNvbnRhY3RfYXBpID0gbmV3IENvbnRhY3RTZXJ2aWNlKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTaG9wVXVpZChzaG9wLnV1aWQpO1xuICB9LCBbc2hvcF0pO1xuXG4gIGNvbnN0IGxvYWRPcHRpb25zID0gYXN5bmMgKHNlYXJjaFF1ZXJ5LCBsb2FkZWRPcHRpb25zLCB7IHBhZ2UgfSkgPT4ge1xuXG4gICAgbGV0IGNvbnRhY3RzID0gYXdhaXQgY29udGFjdF9hcGkuZ2V0Q29udGFjdHMoc2VhcmNoUXVlcnksIHBhZ2UsIHNob3ApO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBvcHRpb25zOiBjb250YWN0cyxcbiAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgYWRkaXRpb25hbDoge1xuICAgICAgICBwYWdlOiBwYWdlICsgMSxcbiAgICAgIH0sXG4gICAgfTsgXG4gIH07XG5cbiAgY29uc3Qgc2V0Q29udGFjdEluT3JkZXIgPSAob3B0aW9uKSA9PiB7XG4gICAgb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZS5jb250YWN0ID0gb3B0aW9uO1xuICAgIG9yZGVyLmNvbnRhY3QgPSBvcHRpb247XG4gICAgb25DaGFuZ2Uob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBZGQgPSAoY29udGFjdDogQ29udGFjdCkgPT4ge1xuICAgIHNldFNob3BVdWlkKE1hdGgucmFuZG9tKCkpO1xuICAgIHNldENvbnRhY3RJbk9yZGVyKGNvbnRhY3QpO1xuICB9XG5cbiAgY29uc3QgaGFuZGxlRWRpdCA9IChjb250YWN0OiBDb250YWN0KSA9PiB7XG4gICAgc2V0U2hvcFV1aWQoTWF0aC5yYW5kb20oKSk7XG4gICAgc2V0Q29udGFjdEluT3JkZXIoY29udGFjdCk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgPEFzeW5jUGFnaW5hdGVcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake29yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuY29udGFjdC51c2VybmFtZSA9PSBcIlwiID8gXCJib3JkZXIgYm9yZGVyLWRhbmdlclwiIDogXCJcIn1gfVxuICAgICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShzaG9wVXVpZCl9XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9e29yZGVyLmNvbnRhY3R9XG4gICAgICAgICAgICBjb21wb25lbnRzPXt7Q29udHJvbDogU2VsZWN0TGFiZWx9fVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9JydcbiAgICAgICAgICAgIG5hbWU9J0t1bmRlJ1xuICAgICAgICAgICAgdmFsdWU9e29yZGVyLmNvbnRhY3R9XG4gICAgICAgICAgICBsb2FkT3B0aW9ucz17bG9hZE9wdGlvbnN9XG4gICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnV1aWR9XG4gICAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4gb3B0aW9uLnVzZXJuYW1lfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NldENvbnRhY3RJbk9yZGVyfVxuICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXt0cnVlfVxuICAgICAgICAgICAgYWRkaXRpb25hbD17e1xuICAgICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPENvbnRhY3RNb2RhbENvbXBvbmVudCBzaG9wPXtzaG9wfSBjb250YWN0PXtvcmRlci5jb250YWN0fSBoYW5kbGVBZGQ9e2hhbmRsZUFkZH0gaGFuZGxlRWRpdD17aGFuZGxlRWRpdH0vPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Db250YWN0U2VsZWN0LnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKE9yZGVyKSxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbnRhY3RTZWxlY3Q7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTmljZU1vZGFsLCB7IHVzZU1vZGFsLCBib290c3RyYXBEaWFsb2cgfSBmcm9tIFwiQGViYXkvbmljZS1tb2RhbC1yZWFjdFwiXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL2Jhc2UvQnV0dG9uJ1xuaW1wb3J0IHtSSlNGU2NoZW1hfSBmcm9tIFwiQHJqc2YvdXRpbHNcIlxuaW1wb3J0IHZhbGlkYXRvciBmcm9tIFwiQHJqc2YvdmFsaWRhdG9yLWFqdjZcIlxuaW1wb3J0IEZvcm0gZnJvbSBcIkByanNmL2NvcmVcIlxuaW1wb3J0IENvdW50cnlTZXJ2aWNlIGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvdW50cnknXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gXCJmbG93Yml0ZS1yZWFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEFkZHJlc3NkaXYgPSBOaWNlTW9kYWwuY3JlYXRlKFxuICAgICh7IHRpdGxlLCBhY3Rpb24sIGFkZHJlc3MsIHNob3AgfSkgPT4ge1xuXG4gICAgICAgIGNvbnN0IGNvdW50cnlfYXBpID0gbmV3IENvdW50cnlTZXJ2aWNlKClcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IG1vZGFsID0gdXNlTW9kYWwoKVxuICAgICAgICBjb25zdCBbZm9ybURhdGEsIHNldEZvcm1EYXRhXSA9IHVzZVN0YXRlKHt9KVxuICAgICAgICBcbiAgICAgICAgY29uc3QgW3NjaGVtYSwgc2V0U2NoZW1hXSA9IHVzZVN0YXRlPFJKU0ZTY2hlbWE+KHt9KVxuXG4gICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZihhZGRyZXNzKSB7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybURhdGEoe1xuICAgICAgICAgICAgICAgICAgICBlbWFpbDogYWRkcmVzcy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RuYW1lOiBhZGRyZXNzLmZpcnN0bmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbGFzdG5hbWU6IGFkZHJlc3MubGFzdG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhbnk6IGFkZHJlc3MuY29tcGFueSxcbiAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiBhZGRyZXNzLnN0cmVldCxcbiAgICAgICAgICAgICAgICAgICAgaG91c2VOdW1iZXI6IGFkZHJlc3MuaG91c2VOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIHppcDogYWRkcmVzcy56aXAsXG4gICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGFkZHJlc3MucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgdXN0aWQ6IGFkZHJlc3MudXN0aWRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIFthZGRyZXNzXSlcblxuICAgICAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY291bnRyeV9hcGkuZ2V0Q291bnRyeShzaG9wKS50aGVuKCggZGF0YSApID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgY291bnRyeXM6IGFycmF5ID0gW107XG5cbiAgICAgICAgICAgICAgICBkYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeXMucHVzaCh7J3RpdGxlJzogaXRlbS5jb2RlLCAnY29uc3QnOiBpdGVtLmNvZGV9KVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICB2YXIgc2NoZW1hOiBSSlNGU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0FkZHJlc3MnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnZW1haWwnXSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IHsgdHlwZTogJ3N0cmluZycsIGZvcm1hdDogJ2VtYWlsJywgdGl0bGU6ICdFLU1haWwnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0NvbXBhbnknfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0bmFtZTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdGaXJzdG5hbWUnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0xhc3RuYW1lJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnU3RyZWV0J30sXG4gICAgICAgICAgICAgICAgICAgICAgICBob3VzZU51bWJlcjogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdIb3VzZW51bWJlcid9LFxuICAgICAgICAgICAgICAgICAgICAgICAgemlwOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ1ppcCd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdDaXR5J30sXG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdQaG9uZSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdXN0aWQ6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnVXN0SWQnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnQ291bnRyeScsIG9uZU9mOiBjb3VudHJ5c31cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBzZXRTY2hlbWEoc2NoZW1hKVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIFtdKTtcblxuICAgICAgICBjb25zdCB1aVNjaGVtYTogUkpTRlNjaGVtYSA9IHtcbiAgICAgICAgICAgIFwidWk6c3VibWl0QnV0dG9uT3B0aW9uc1wiOiB7XG4gICAgICAgICAgICAgICAgXCJzdWJtaXRUZXh0XCI6IFwiU2F2ZVwiLFxuICAgICAgICAgICAgICAgIFwibm9yZW5kZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBcInByb3BzXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkaXNhYmxlZFwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgXCJjbGFzc05hbWVcIjogXCJidG4gYnRuLWluZm9cIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TW9kYWwgc2hvdz17bW9kYWwudmlzaWJsZX0gb25DbG9zZT17KCkgPT4gbW9kYWwucmVtb3ZlKCl9PlxuICAgICAgICAgICAgICAgIDxNb2RhbC5IZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3RpdGxlfTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvTW9kYWwuSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxNb2RhbC5Cb2R5PlxuICAgICAgICAgICAgICAgICAgICB7YWN0aW9uID09PSBcIlNhdmVcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYT17c2NoZW1hfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhPXtmb3JtRGF0YX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aVNjaGVtYT17dWlTY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yPXt2YWxpZGF0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRGb3JtRGF0YShlLmZvcm1EYXRhKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L01vZGFsLkJvZHk+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17M31cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSBcIlNhdmVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlc29sdmUoZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVzb2x2ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlbW92ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17NH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ3YXJuaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L01vZGFsLkZvb3Rlcj5cbiAgICAgICAgICAgIDwvTW9kYWw+XG4gICAgICAgIClcbiAgICB9XG4pXG5cbmV4cG9ydCBkZWZhdWx0IEFkZHJlc3NkaXZcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi9iYXNlL0J1dHRvblwiXG5pbXBvcnQgQWRkcmVzc01vZGFsIGZyb20gXCIuL0FkZHJlc3NNb2RhbFwiXG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlTW9kYWwgfSBmcm9tICdAZWJheS9uaWNlLW1vZGFsLXJlYWN0J1xuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gXCIuLi8uLi9tb2RlbC9hZGRyZXNzXCJcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vLi4vbW9kZWwvc2hvcFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEFkZHJlc3NNb2RhbENvbXBvbmVudCA9ICh7aGFuZGxlQWRkLCBoYW5kbGVFZGl0LCBhZGRyZXNzLCBzaG9wfSkgPT4ge1xuICAgIGNvbnN0IGFkZHJlc3NNb2RhbCA9IHVzZU1vZGFsKEFkZHJlc3NNb2RhbClcblxuICAgIGNvbnN0IHNob3dBZGRNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgYWRkcmVzc01vZGFsLnNob3coe3RpdGxlOiAnQWRkIEFkZHJlc3MnLCBhY3Rpb246ICdTYXZlJywgc2hvcH0pLnRoZW4oKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBhZGRBZGRyZXNzKGZvcm1EYXRhKVxuICAgICAgICB9KVxuICAgIH0sW2FkZHJlc3NNb2RhbF0pXG5cbiAgICBjb25zdCBzaG93RWRpdE1vZGFsID0gdXNlQ2FsbGJhY2soKGFkZHJlc3MpID0+IHtcbiAgICAgICAgYWRkcmVzc01vZGFsLnNob3coeyB0aXRsZTogJ0VkaXQgQWRkcmVzcycsIGFjdGlvbjogJ1NhdmUnLCBhZGRyZXNzOiBhZGRyZXNzLCBzaG9wIH0pLnRoZW4oKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICB1cGRhdGVBZGRyZXNzKGZvcm1EYXRhKVxuICAgICAgICB9KVxuICAgIH0sW2FkZHJlc3NNb2RhbF0pXG5cbiAgICBjb25zdCB1cGRhdGVBZGRyZXNzID0gKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgIGFkZHJlc3MucGFyc2VGcm9tRm9ybURhdGEoZm9ybURhdGEpXG4gICAgICAgIGhhbmRsZUVkaXQoYWRkcmVzcylcbiAgICB9XG5cbiAgICBjb25zdCBhZGRBZGRyZXNzID0gKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgIGFkZHJlc3MgPSBuZXcgQWRkcmVzcygpXG4gICAgICAgIGFkZHJlc3MucGFyc2VGcm9tRm9ybURhdGEoZm9ybURhdGEpXG4gICAgICAgIGhhbmRsZUFkZChhZGRyZXNzKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleCBnYXAtMSd9PlxuICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPXsxfSB2YXJpYW50PVwic3VjY2Vzc1wiIG9uQ2xpY2s9e3Nob3dBZGRNb2RhbH0gLz5cbiAgICAgICAgICAgIDxCdXR0b24gdHlwZT17Mn0gdmFyaWFudD1cImluZm9cIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2hvd0VkaXRNb2RhbChhZGRyZXNzKVxuICAgICAgICAgICAgfX0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG5BZGRyZXNzTW9kYWxDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIGhhbmRsZUFkZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFuZGxlRWRpdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgYWRkcmVzczogUHJvcFR5cGVzLmluc3RhbmNlT2YoQWRkcmVzcyksXG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQWRkcmVzc01vZGFsQ29tcG9uZW50XG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tICcuLi8uLi9tb2RlbC9hZGRyZXNzJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuY29uc3QgQWRkcmVzc0RldGFpbCA9ICh7YWRkcmVzc30pID0+IHtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxzbWFsbD57YWRkcmVzcy5jb21wYW55fSB7YWRkcmVzcy5maXJzdG5hbWV9IHthZGRyZXNzLmxhc3RuYW1lfSB7YWRkcmVzcy5zdHJlZXR9IHthZGRyZXNzLmhvdXNlTnVtYmVyfSB7YWRkcmVzcy5jb3VudHJ5fSB7YWRkcmVzcy56aXB9IHthZGRyZXNzLmNpdHl9PC9zbWFsbD5cbiAgICApXG59XG5cblxuQWRkcmVzc0RldGFpbC5wcm9wVHlwZXMgPSB7XG4gICAgYWRkcmVzczogUHJvcFR5cGVzLmluc3RhbmNlT2YoQWRkcmVzcylcbn1cbiAgICBcbmV4cG9ydCBkZWZhdWx0IEFkZHJlc3NEZXRhaWxcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IHsgQ29udGFjdCB9IGZyb20gJy4uLy4uL21vZGVsL2NvbnRhY3QnXG5pbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSAnLi4vLi4vbW9kZWwvYWRkcmVzcydcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCB7dXNlRWZmZWN0LHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gXCIuLi8uLi9zdGF0ZS9vcmRlclwiXG5pbXBvcnQgQWRkcmVzc1NlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2FkZHJlc3NcIlxuaW1wb3J0IEFkZHJlc3NNb2RhbENvbXBvbmVudCBmcm9tIFwiLi9BZGRyZXNzTW9kYWxDb21wb25lbnRcIlxuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xuaW1wb3J0IEFkZHJlc3NEZXRhaWwgZnJvbSAnLi9BZGRyZXNzRGV0YWlsJ1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEFkZHJlc3NTZWxlY3QgPSAoe2FkZHJlc3MsIGNvbnRhY3QsIHR5cGUsIGNoYW5nZUFkZHJlc3MsIG5hbWUsIHNob3B9KSA9PiB7XG5cbiAgY29uc3QgW2NvbnRhY3RVdWlkLCBzZXRDb250YWN0VXVpZF0gPSB1c2VTdGF0ZShudWxsKVxuXG4gIGNvbnN0IFtsb2NhbEFkZHJlc3MsIHNldExvY2FsQWRkcmVzc10gPSB1c2VTdGF0ZShudWxsKVxuXG4gIGNvbnN0IGFkZHJlc3Nfc2VydmljZSA9IG5ldyBBZGRyZXNzU2VydmljZSgpXG5cbiAgbGV0IG9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuICBcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZihjb250YWN0LnV1aWQgIT0gXCJcIikge1xuICAgICAgc2V0Q29udGFjdFV1aWQoY29udGFjdC51dWlkKVxuICAgIH1cbiAgfSwgW2NvbnRhY3QudXVpZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRMb2NhbEFkZHJlc3MoYWRkcmVzcylcbiAgfSwgW2FkZHJlc3NdKVxuXG4gIGNvbnN0IG9yZGVyOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcblxuICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSwgbG9hZGVkT3B0aW9ucykgPT4ge1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGFkZHJlc3Nfc2VydmljZS5nZXRDb250YWN0QWRkcmVzcyhjb250YWN0LnV1aWQsIHR5cGUpXG5cbiAgICByZXR1cm4ge1xuICAgICAgb3B0aW9uczogZGF0YSxcbiAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUFkZCA9IChhZGRyZXNzOiBBZGRyZXNzKSA9PiB7XG4gICAgYWRkcmVzcy50eXBlID0gdHlwZVxuICAgIGFkZHJlc3MuY29udGFjdC51dWlkID0gY29udGFjdC51dWlkXG4gICAgYWRkcmVzc19zZXJ2aWNlLmNyZWF0ZShhZGRyZXNzKS50aGVuKCgpID0+IHtcbiAgICAgIHNldExvY2FsQWRkcmVzcyhhZGRyZXNzKVxuICAgICAgY2hhbmdlQWRkcmVzcyhhZGRyZXNzLCB0eXBlKVxuICAgICAgc2V0Q29udGFjdFV1aWQoTWF0aC5yYW5kb20oKSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRWRpdCA9IChhZGRyZXNzOiBBZGRyZXNzKSA9PiB7XG4gICAgYWRkcmVzcy50eXBlID0gdHlwZVxuICAgIGFkZHJlc3MuY29udGFjdC51dWlkID0gY29udGFjdC51dWlkXG4gICAgYWRkcmVzc19zZXJ2aWNlLnVwZGF0ZShhZGRyZXNzKS50aGVuKCgpID0+IHtcbiAgICAgIHNldExvY2FsQWRkcmVzcyhhZGRyZXNzKVxuICAgICAgY2hhbmdlQWRkcmVzcyhhZGRyZXNzLCB0eXBlKVxuICAgICAgc2V0Q29udGFjdFV1aWQoTWF0aC5yYW5kb20oKSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3Qgc2V0QWRkcmVzc0luT3JkZXIgPSAob3B0aW9uKSA9PiB7XG4gICAgc2V0TG9jYWxBZGRyZXNzKG9wdGlvbilcbiAgICBjaGFuZ2VBZGRyZXNzKG9wdGlvbiwgdHlwZSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J2ZsZXggZ2FwLTEnPlxuICAgICAgPGRpdiBjbGFzc05hbWU9J2ZsZXgtMSc+XG4gICAgICAgICAgPEFzeW5jUGFnaW5hdGVcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2FkZHJlc3N9XG4gICAgICAgICAgICBrZXk9e0pTT04uc3RyaW5naWZ5KGNvbnRhY3RVdWlkKX1cbiAgICAgICAgICAgIGxvYWRPcHRpb25zPXtsb2FkT3B0aW9uc31cbiAgICAgICAgICAgIGdldE9wdGlvblZhbHVlPXsob3B0aW9uKSA9PiBvcHRpb24udXVpZH1cbiAgICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24uZmlyc3RuYW1lICsgJyAnICsgb3B0aW9uLmxhc3RuYW1lfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NldEFkZHJlc3NJbk9yZGVyfVxuICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj0nJ1xuICAgICAgICAgICAgY29tcG9uZW50cz17eyBDb250cm9sOiBTZWxlY3RMYWJlbCB9fVxuICAgICAgICAvPlxuICAgICAgICBcbiAgICAgICAgeyBsb2NhbEFkZHJlc3MgJiYgPEFkZHJlc3NEZXRhaWwgYWRkcmVzcz17bG9jYWxBZGRyZXNzfSAvPn1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiA+XG4gICAgICAgIDxBZGRyZXNzTW9kYWxDb21wb25lbnQgYWRkcmVzcz17bG9jYWxBZGRyZXNzfSBoYW5kbGVBZGQ9e2hhbmRsZUFkZH0gaGFuZGxlRWRpdD17aGFuZGxlRWRpdH0gc2hvcD17c2hvcH0vPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgXG4gIClcbn1cblxuQWRkcmVzc1NlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIGFkZHJlc3M6IFByb3BUeXBlcy5pbnN0YW5jZU9mKEFkZHJlc3MpLFxuICBjb250YWN0OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihDb250YWN0KSxcbiAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG4gIHR5cGU6IFByb3BUeXBlcy5udW1iZXIsXG4gIGNoYW5nZUFkZHJlc3M6IFByb3BUeXBlcy5mdW5jLFxuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFkZHJlc3NTZWxlY3RcbiIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEFjY291bnQgfSBmcm9tIFwiLi4vbW9kZWwvYWNjb3VudFwiO1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi9tb2RlbC9zaG9wXCI7XG5cbkBzaW5nbGV0b24oKVxuQGF1dG9JbmplY3RhYmxlKClcbmNsYXNzIEFjY291bnRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2tlbj86IFRva2VuKSB7fVxuXG4gIGFzeW5jIGdldEFjY291bnRzKHNob3A6IFNob3ApOiBQcm9taXNlPEFjY291bnRbXT4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL2FjY291bnQvYWxsYnlzaG9wLycgKyBzaG9wLnV1aWQsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgICAgfVxuICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBhY2NvdW50ID0gbmV3IEFjY291bnQoKTtcbiAgICAgICAgICBhY2NvdW50LnVpZCA9IGl0ZW0udWlkO1xuICAgICAgICAgIGFjY291bnQudGl0bGUgPSBpdGVtLnRpdGxlO1xuICAgICAgICAgIGFjY291bnQuYXBwZW5kaXggPSBpdGVtLmFwcGVuZGl4O1xuICAgICAgICAgIGFjY291bnQudXVpZCA9IGl0ZW0udXVpZDtcbiAgICAgICAgICByZXR1cm4gYWNjb3VudDtcbiAgICAgICAgfSlcbiAgICBcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBY2NvdW50U2VydmljZVxuIiwiaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IEFjY291bnRTZXJ2aWNlIGZyb20gJy4uLy4uL3NlcnZpY2VzL2FjY291bnQnXG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tICd0c3lyaW5nZS1uZW8nXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tICcuLi8uLi9zdGF0ZS9vcmRlcidcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQgeyBTZWxlY3RMYWJlbCB9IGZyb20gXCIuLi9iYXNlL1NlbGVjdExhYmVsXCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmNvbnN0IEFjY291bnRTZWxlY3RDb21wb25lbnQgPSAoe3Nob3AsIG9yZGVyfSkgPT4ge1xuICAgICAgXG4gICAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKVxuXG4gICAgY29uc3QgW2FjY291bnQsIHNldEFjY291bnRdID0gdXNlU3RhdGUoMClcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgc2V0U2hvcFV1aWQoc2hvcC51dWlkKVxuICAgIH0sIFtzaG9wLnV1aWRdKVxuXG4gICAgY29uc3Qgb3JkZXJTdGF0ZTogT3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG5cbiAgICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSwgbG9hZGVkT3B0aW9ucykgPT4ge1xuXG4gICAgICAgIGNvbnN0IGFjY291bnRfc2VydmljZSA9IG5ldyBBY2NvdW50U2VydmljZSgpXG4gICAgXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBhY2NvdW50X3NlcnZpY2UuZ2V0QWNjb3VudHMoc2hvcClcbiAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvcHRpb25zOiBkYXRhLFxuICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICB9IFxuICAgICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0QWNjb3VudChvcmRlci5hY2NvdW50LnV1aWQpXG4gICAgfSwgW29yZGVyLmFjY291bnRdKVxuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgICAgIG9yZGVyLmFjY291bnQgPSBvcHRpb25cbiAgICAgICAgbGV0IG9yZGVyT2JqID0gb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS5nZXRWYWx1ZSgpXG4gICAgICAgIG9yZGVyT2JqLmFjY291bnQgPSBvcHRpb25cbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXG4gICAgICAgIHNldEFjY291bnQob3B0aW9uLnVpZClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuXG4gICAgICAgICAgICAgPEFzeW5jUGFnaW5hdGVcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9uc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YWNjb3VudCA9PSAwID8gXCJib3JkZXIgYm9yZGVyLWRhbmdlclwiIDogXCJcIn1gfVxuICAgICAgICAgICAgICAgIGtleT17SlNPTi5zdHJpbmdpZnkoc2hvcFV1aWQpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17b3JkZXIuYWNjb3VudH1cbiAgICAgICAgICAgICAgICBjb21wb25lbnRzPXt7Q29udHJvbDogU2VsZWN0TGFiZWx9fVxuICAgICAgICAgICAgICAgIG5hbWU9eydGaXJtYSd9XG4gICAgICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPScnXG4gICAgICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi51dWlkfVxuICAgICAgICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24udGl0bGV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZT17dHJ1ZX1cbiAgICAgICAgICAgIC8+XG4gICAgKSAgXG59IFxuXG5BY2NvdW50U2VsZWN0Q29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG4gIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFjY291bnRTZWxlY3RDb21wb25lbnRcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgQ29udGFjdFNlbGVjdCBmcm9tICcuL0NvbnRhY3RTZWxlY3QnXG5pbXBvcnQgQWRkcmVzc1NlbGVjdCBmcm9tICcuL0FkZHJlc3NTZWxlY3QnXG5pbXBvcnQge0NvbnRhY3R9IGZyb20gJy4uLy4uL21vZGVsL2NvbnRhY3QnXG5pbXBvcnQge0FkZHJlc3N9IGZyb20gJy4uLy4uL21vZGVsL2FkZHJlc3MnXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSAnLi4vLi4vc3RhdGUvb3JkZXInXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgQWNjb3VudFNlbGVjdENvbXBvbmVudCBmcm9tICcuLi9hY2NvdW50L0FjY291bnRTZWxlY3RDb21wb25lbnQnXG5pbXBvcnQgT3JkZXIgZnJvbSAnLi4vLi4vbW9kZWwvb3JkZXInXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgQ29udGFjdENvbXBvbmVudCA9ICh7b3JkZXIsIHNob3B9KSA9PiB7XG5cbiAgICBsZXQgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG5cbiAgICBjb25zdCBbY29udGFjdCwgc2V0Q29udGFjdF0gPSB1c2VTdGF0ZTxDb250YWN0PihuZXcgQ29udGFjdCgpKVxuXG4gICAgY29uc3QgY2hhbmdlQWRkcmVzcyA9IChhZGRyZXNzOiBBZGRyZXNzLCB0eXBlOiBOdW1iZXIpID0+IHtcbiAgICAgICAgaWYodHlwZSA9PSAxKSB7XG4gICAgICAgICAgICBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlLmludm9pY2VBZGRyZXNzID0gYWRkcmVzc1xuICAgICAgICAgICAgb3JkZXIuaW52b2ljZUFkZHJlc3MgPSBhZGRyZXNzXG4gICAgICAgIH1cbiAgICAgICAgaWYodHlwZSA9PSAyKSB7XG4gICAgICAgICAgICBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlLmRlbGl2ZXJ5QWRkcmVzcyA9IGFkZHJlc3NcbiAgICAgICAgICAgIG9yZGVyLmRlbGl2ZXJ5QWRkcmVzcyA9IGFkZHJlc3NcbiAgICAgICAgfVxuICAgICAgICBpZih0eXBlID09IDMpIHtcbiAgICAgICAgICAgIG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuc2VuZGVyQWRkcmVzcyA9IGFkZHJlc3NcbiAgICAgICAgICAgIG9yZGVyLnNlbmRlckFkZHJlc3MgPSBhZGRyZXNzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q29udGFjdFNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9wPXtzaG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRDb250YWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QWNjb3VudFNlbGVjdENvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3A9e3Nob3B9IG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICB7IG9yZGVyLmNvbnRhY3QudXVpZCAhPSBcIlwiICYmIDxBZGRyZXNzU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzPXtvcmRlci5pbnZvaWNlQWRkcmVzc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3Q9e29yZGVyLmNvbnRhY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VBZGRyZXNzPXtjaGFuZ2VBZGRyZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nUmVjaG51bmdzYWRyZXNzZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG9wPXtzaG9wfVxuICAgICAgICAgICAgICAgICAgICAvPiB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgeyBvcmRlci5jb250YWN0LnV1aWQgIT0gXCJcIiAmJiA8QWRkcmVzc1NlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcz17b3JkZXIuZGVsaXZlcnlBZGRyZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdD17b3JkZXIuY29udGFjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUFkZHJlc3M9e2NoYW5nZUFkZHJlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSdMaWVmZXJhZHJlc3NlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17Mn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3A9e3Nob3B9XG4gICAgICAgICAgICAgICAgICAgIC8+IH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICB7IG9yZGVyLmNvbnRhY3QudXVpZCAhPSBcIlwiICYmIDxBZGRyZXNzU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzPXtvcmRlci5zZW5kZXJBZGRyZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlQWRkcmVzcz17Y2hhbmdlQWRkcmVzc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3Q9e29yZGVyLmNvbnRhY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSdBYnNlbmRlcmFkcmVzc2UnXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXszfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvcD17c2hvcH1cbiAgICAgICAgICAgICAgICAgICAgLz4gfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPlxuICAgICkgIFxufVxuXG5Db250YWN0Q29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IENvbnRhY3RDb21wb25lbnRcbiIsImltcG9ydCBTZWxlY3QgZnJvbSAncmVhY3Qtc2VsZWN0J1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlLW5lbydcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBUeXBlU2VsZWN0Q29tcG9uZW50ID0gKHtvcmRlcn0pID0+IHtcbiAgICBcbiAgICBjb25zdCBbdHlwZSwgc2V0VHlwZV0gPSB1c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSk7XG5cbiAgICBjb25zdCBvcHRpb25zID0gW1xuICAgICAgICB7IHZhbHVlOiAxLCBsYWJlbDogJ0F1ZnRyYWcnIH0sXG4gICAgICAgIHsgdmFsdWU6IDIsIGxhYmVsOiAnQW5nZWJvdCcgfSxcbiAgICAgICAgeyB2YWx1ZTogMywgbGFiZWw6ICdTdG9ybm8nIH0sXG4gICAgICAgIHsgdmFsdWU6IDQsIGxhYmVsOiAnR3V0c2NocmlmdCcgfSxcbiAgICAgICAgeyB2YWx1ZTogNSwgbGFiZWw6ICdSZWNobnVuZycgfSxcbiAgICAgICAgeyB2YWx1ZTogNiwgbGFiZWw6ICdUZWlscmVjaG51bmcnIH0sXG4gICAgICAgIHsgdmFsdWU6IDcsIGxhYmVsOiAnVGVpbHN0b3JubycgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgICAgIGxldCBvcmRlciA9IG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWU7XG4gICAgICAgIG9yZGVyLnR5cGUgPSBvcHRpb24udmFsdWU7XG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyKTtcbiAgICAgICAgc2V0VHlwZShvcHRpb24pO1xuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRUeXBlKG9yZGVyLnR5cGUpO1xuICAgIH0sIFtvcmRlci50eXBlXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7dHlwZSA9PSAwID8gXCJib3JkZXIgYm9yZGVyLWRhbmdlclwiIDogXCJcIn1gfVxuICAgICAgICAgICAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtvcHRpb25zLmZpbHRlcigoZSkgPT4gZS52YWx1ZSA9PSB0eXBlKS5wb3AoKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9ucy5maWx0ZXIoKGUpID0+IGUudmFsdWUgPT0gdHlwZSkucG9wKCl9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIGNvbXBvbmVudHM9e3sgQ29udHJvbDogU2VsZWN0TGFiZWwgfX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlwiXG4gICAgICAgICAgICAgICAgbmFtZT1cIlR5cFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICApOyAgXG59IFxuXG5leHBvcnQgZGVmYXVsdCBUeXBlU2VsZWN0Q29tcG9uZW50O1xuIiwiaW1wb3J0IHthdXRvSW5qZWN0YWJsZSwgc2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcIi4vdG9rZW5cIlxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJ1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi9tb2RlbC9zaG9wXCJcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgU2hvcFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcih0b2tlbj86IFRva2VuKSB7XG4gICAgY29uc29sZS5sb2codG9rZW4pXG4gIH1cblxuICBhc3luYyBnZXRTaG9wcygpOiBQcm9taXNlPFNob3BbXT4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL3Nob3BzJywge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4uY3VycmVudFRva2VuXG4gICAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBsZXQgc2hvcCA9IG5ldyBTaG9wKClcbiAgICAgICAgICBzaG9wLnBhcnNlRnJvbUpzb24oe3Nob3A6IGl0ZW19KVxuICAgICAgICAgIHJldHVybiBzaG9wXG4gICAgICAgIH0pXG4gICAgXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaG9wU2VydmljZVxuIiwiaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IFNob3BTZXJ2aWNlIGZyb20gJy4uLy4uL3NlcnZpY2VzL3Nob3AnXG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tICd0c3lyaW5nZS1uZW8nXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tICcuLi8uLi9zdGF0ZS9vcmRlcidcbmltcG9ydCB7IFNlbGVjdExhYmVsIH0gZnJvbSAnLi4vYmFzZS9TZWxlY3RMYWJlbCdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgU2hvcFNlbGVjdENvbXBvbmVudCA9IChwcm9wcykgPT4ge1xuICAgIFxuICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuXG4gICAgY29uc3Qgc2hvcF9zZXJ2aWNlID0gY29udGFpbmVyLnJlc29sdmUoU2hvcFNlcnZpY2UpXG4gICAgY29uc3QgdG9rZW5fc2VydmljZSA9IGNvbnRhaW5lci5yZXNvbHZlKFRva2VuKVxuXG4gICAgY29uc3QgbG9hZE9wdGlvbnMgPSBhc3luYyAoc2VhcmNoUXVlcnksIGxvYWRlZE9wdGlvbnMpID0+IHtcblxuICAgICAgICBjb25zb2xlLmxvZyh0b2tlbl9zZXJ2aWNlKVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgc2hvcF9zZXJ2aWNlLmdldFNob3BzKClcbiAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvcHRpb25zOiBkYXRhLFxuICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICB9IFxuICAgICAgfVxuICAgIFxuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgICAgIG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuc2hvcCA9IG9wdGlvblxuICAgICAgICBwcm9wcy5jaGFuZ2Uob3B0aW9uKVxuICAgICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICA8QXN5bmNQYWdpbmF0ZVxuICAgICAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAgICAgICAgdmFsdWU9e3Byb3BzLnNob3B9XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cz17eyBDb250cm9sOiBTZWxlY3RMYWJlbCB9fVxuICAgICAgICAgICAgICAgIGxvYWRPcHRpb25zPXtsb2FkT3B0aW9uc31cbiAgICAgICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLmlkfVxuICAgICAgICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24ubmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3Byb3BzLnNob3AudXVpZCA9PSBcIlwiID8gXCJib3JkZXIgYm9yZGVyLWRhbmdlclwiIDogXCJib3JkZXIgYm9yZGVyLXNsYXRlLTIwMFwifWB9XG4gICAgICAgICAgICAgICAgbmFtZT0nU2hvcCdcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgKSAgXG59IFxuXG5leHBvcnQgZGVmYXVsdCBTaG9wU2VsZWN0Q29tcG9uZW50XG4iLCJpbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSAndHN5cmluZ2UtbmVvJ1xuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbScuLi8uLi9zdGF0ZS9vcmRlcidcbmltcG9ydCB7IFNlbGVjdExhYmVsIH0gZnJvbSAnLi4vYmFzZS9TZWxlY3RMYWJlbCdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgRHJhZnRDb21wb25lbnQgPSAoe29yZGVyfSkgPT4ge1xuICAgIFxuICAgIGNvbnN0IFtkcmFmdCwgc2V0RHJhZnRdID0gdXNlU3RhdGUodHJ1ZSlcbiAgICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcblxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlXG4gICAgICAgIG9yZGVyT2JqLmRyYWZ0ID0gIWRyYWZ0XG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxuICAgICAgICBzZXREcmFmdCghZHJhZnQpXG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0RHJhZnQob3JkZXIuZHJhZnQpXG4gICAgfSwgW29yZGVyLmRyYWZ0XSlcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ2FwLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiMVwiIGNsYXNzTmFtZT1cInNyLW9ubHkgcGVlclwiIGRlZmF1bHRDaGVja2VkPXtkcmFmdH0gb25DaGFuZ2U9eyhlKSA9PiBvbkNoYW5nZShlKX0vPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctMTEgaC02IGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBwZWVyIHBlZXItZm9jdXM6cmluZy00IHBlZXItZm9jdXM6cmluZy1ibHVlLTMwMCBkYXJrOnBlZXItZm9jdXM6cmluZy1ibHVlLTgwMCBkYXJrOmJnLWdyYXktNzAwIHBlZXItY2hlY2tlZDphZnRlcjp0cmFuc2xhdGUteC1mdWxsIHJ0bDpwZWVyLWNoZWNrZWQ6YWZ0ZXI6LXRyYW5zbGF0ZS14LWZ1bGwgcGVlci1jaGVja2VkOmFmdGVyOmJvcmRlci13aGl0ZSBhZnRlcjpjb250ZW50LVsnJ10gYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6dG9wLTAuNSBhZnRlcjpzdGFydC1bMnB4XSBhZnRlcjpiZy13aGl0ZSBhZnRlcjpib3JkZXItZ3JheS0zMDAgYWZ0ZXI6Ym9yZGVyIGFmdGVyOnJvdW5kZWQtZnVsbCBhZnRlcjpoLTUgYWZ0ZXI6dy01IGFmdGVyOnRyYW5zaXRpb24tYWxsIGRhcms6Ym9yZGVyLWdyYXktNjAwIHBlZXItY2hlY2tlZDpiZy1ibHVlLTYwMFwiPjwvZGl2PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtcy0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0zMDBcIj5FbnR3dXJmPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgKSAgXG59IFxuXG5leHBvcnQgZGVmYXVsdCBEcmFmdENvbXBvbmVudFxuIiwiaW1wb3J0IHthdXRvSW5qZWN0YWJsZSwgc2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2UtbmVvXCI7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCI7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi9tb2RlbC9vcmRlclwiO1xuXG5Ac2luZ2xldG9uKClcbkBhdXRvSW5qZWN0YWJsZSgpXG5jbGFzcyBPcmRlclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW4/OiBUb2tlbikge31cblxuICAgIGFzeW5jIGdldE9yZGVyKHV1aWQ6IFN0cmluZyk6IFByb21pc2U8T3JkZXI+IHtcblxuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL29yZGVyL2dldG9uZWJ5dXVpZCcsIHt1dWlkOiB1dWlkfSAse1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcblxuICAgICAgICAgICAgbGV0IG9yZGVyID0gbmV3IE9yZGVyKCk7XG4gICAgICAgICAgICBvcmRlci5wYXJzZUZyb21Kc29uKHJlc3BvbnNlLmRhdGEpO1xuXG4gICAgICAgICAgICByZXR1cm4gb3JkZXI7XG4gICAgICAgIH0pO1xuICAgIH07XG5cblxuICAgIGFzeW5jIHNhdmVPcmRlcihvcmRlcjogT3JkZXIpOiBQcm9taXNlPE9yZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCBheGlvcy5wb3N0KCcvYXBwcy9hcGkvb3JkZXIvY3JlYXRlJywgb3JkZXIgLHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNhbGNPcmRlcihvcmRlcjogT3JkZXIpOiBQcm9taXNlPE9yZGVyPiB7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGF4aW9zLnBvc3QoJy9hcHBzL2FwaS9vcmRlci9jYWxjJywgb3JkZXIgLHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU2VydmljZVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgcHJpY2U6IG51bWJlcjtcbn1cblxuY29uc3QgQ3VycmVuY3k6IFJlYWN0LkZDPElQcm9wcz4gPSAoeyBwcmljZSB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICB7SW50bC5OdW1iZXJGb3JtYXQoJ2RlLURFJywge1xuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsIFxuICAgICAgY3VycmVuY3k6ICdFVVInXG4gICAgICB9KS5mb3JtYXQocHJpY2UvMTAwKX1cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ3VycmVuY3k7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tIFwiLi4vLi4vc3RhdGUvb3JkZXJcIlxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcydcbmltcG9ydCBPcmRlclNlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL29yZGVyXCJcbmltcG9ydCBDdXJyZW5jeSBmcm9tIFwiLi4vYmFzZS9DdXJyZW5jeVwiXG5cbnR5cGUgTXlTdGF0ZSA9IHtcbiAgICBvcmRlcjogT3JkZXIgLy8gbGlrZSB0aGlzXG59XG5cbmNsYXNzIENhbGNDb21wb25lbnQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8eyAgfSxNeVN0YXRlPiB7XG4gICAgb3JkZXJTdGF0ZTogT3JkZXJTdGF0ZVxuICAgIG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlXG5cbiAgICBzdGF0ZTogTXlTdGF0ZSA9IHtcbiAgICAgICAgb3JkZXI6IG5ldyBPcmRlcigpXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpXG4gICAgICAgIHRoaXMub3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG4gICAgICAgIHRoaXMub3JkZXJTZXJ2aWNlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTZXJ2aWNlKVxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLm9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkucGlwZShkZWJvdW5jZVRpbWUoMjAwMCkpLnN1YnNjcmliZSgoZSkgPT4gdGhpcy5jYWxjKGUpKVxuICAgIH1cblxuICAgIGFzeW5jIGNhbGMoZTogT3JkZXIpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMub3JkZXJTZXJ2aWNlLmNhbGNPcmRlcihlKVxuICAgICAgICB0aGlzLnNldFN0YXRlKCgpID0+ICh7XG4gICAgICAgICAgICBvcmRlcjogcmVzdWx0LFxuICAgICAgICB9KSlcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8aDM+XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzTmFtZT1cInRleHQtYm9keS1zZWNvbmRhcnlcIj4gTmV0dG86IDxDdXJyZW5jeSBwcmljZT17dGhpcy5zdGF0ZS5vcmRlci5uZXR9IC8+ICsgTXdTdC46IDxDdXJyZW5jeSBwcmljZT17dGhpcy5zdGF0ZS5vcmRlci52YXR9IC8+ID08L3NtYWxsPiBCcnV0dG86IDxDdXJyZW5jeSBwcmljZT17dGhpcy5zdGF0ZS5vcmRlci5ncm9zc30gLz5cbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgIClcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENhbGNDb21wb25lbnRcbiIsImltcG9ydCBUeXBlU2VsZWN0Q29tcG9uZW50IGZyb20gJy4uL3R5cGUvVHlwZVNlbGVjdENvbXBvbmVudCdcbmltcG9ydCBTaG9wU2VsZWN0Q29tcG9uZW50IGZyb20gJy4uL3Nob3AvU2hvcFNlbGVjdENvbXBvbmVudCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQge1Nob3B9IGZyb20gXCIuLi8uLi9tb2RlbC9zaG9wXCJcbmltcG9ydCBEcmFmdENvbXBvbmVudCBmcm9tIFwiLi4vZHJhZnQvRHJhZnRDb21wb25lbnRcIlxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQgQ2FsY0NvbXBvbmVudCBmcm9tICcuLi9jYWxjL0NhbGNDb21wb25lbnQnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFRvcEJhckNvbXBvbmVudCA9ICh7c2hvcCwgb3JkZXIsIGNoYW5nZX0pID0+IHtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgPERyYWZ0Q29tcG9uZW50IG9yZGVyPXtvcmRlcn0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgIDxUeXBlU2VsZWN0Q29tcG9uZW50IG9yZGVyPXtvcmRlcn0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8U2hvcFNlbGVjdENvbXBvbmVudCBzaG9wPXtzaG9wfSBjaGFuZ2U9e2NoYW5nZX0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8Q2FsY0NvbXBvbmVudCAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApICBcbn1cblxuVG9wQmFyQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxuICAgIGNoYW5nZTogUHJvcFR5cGVzLmZ1bmNcbn1cblxuZXhwb3J0IGRlZmF1bHQgVG9wQmFyQ29tcG9uZW50XG4iLCJleHBvcnQgY2xhc3MgUHJvZHVjdEdyb3VwIHtcbiAgICBpZDogTnVtYmVyID0gMFxuICAgIGxhYmVsOiBTdHJpbmcgPSBcIlwiXG4gICAgdXVpZDogU3RyaW5nID0gXCJcIlxuICAgIC8vb3B0aW9uczogUHJvZHVjdEdyb3VwW10gPSBbXVxufSIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiO1xuaW1wb3J0IHtQcm9kdWN0R3JvdXB9IGZyb20gXCIuLi9tb2RlbC9wcm9kdWN0R3JvdXBcIjtcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgUHJvZHVjdEdyb3VwU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW4/OiBUb2tlbikge31cblxuICBhc3luYyBnZXRQcm9kdWN0R3JvdXBzKHNlYXJjaFF1ZXJ5OiBTdHJpbmcsIHNob3A6IFNob3ApOiBQcm9taXNlPFByb2R1Y3RHcm91cFtdPiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvcHJvZHVjdGdyb3VwL2dldHRyZWUvJyArIHNob3AudXVpZCArICc/dGVybT0nICsgc2VhcmNoUXVlcnksIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuLmN1cnJlbnRUb2tlblxuICAgICAgICB9XG4gICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuXG4gICAgICAgIGxldCB0ZW1wOiBQcm9kdWN0R3JvdXBbXSA9IFtdO1xuXG4gICAgICAgIHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBwZyA9IG5ldyBQcm9kdWN0R3JvdXA7XG4gICAgICAgICAgcGcuaWQgPSBpdGVtLmlkO1xuICAgICAgICAgIHBnLmxhYmVsID0gaXRlbS50aXRsZTtcbiAgICAgICAgICBwZy51dWlkID0gaXRlbS51dWlkO1xuICAgICAgICAgIFxuICAgICAgICAgIHRlbXAucHVzaChwZyk7XG5cbiAgICAgICAgICBpdGVtLmNoaWxkcmVuLm1hcCgoc3ViOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHNwZyA9IG5ldyBQcm9kdWN0R3JvdXA7XG4gICAgICAgICAgICAgIHNwZy5pZCA9IHN1Yi5pZDtcbiAgICAgICAgICAgICAgc3BnLmxhYmVsID0gXCItLSBcIiArIHN1Yi50aXRsZTtcbiAgICAgICAgICAgICAgc3BnLnV1aWQgPSBzdWIudXVpZDtcbiAgICAgICAgICAgICAgdGVtcC5wdXNoKHNwZyk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gcGc7XG4gICAgICAgIH0pXG4gICAgXG4gICAgICAgIHJldHVybiB0ZW1wO1xuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvZHVjdEdyb3VwU2VydmljZVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2RlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eScpO1xudmFyIF9vYmplY3RTcHJlYWQgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDInKTtcbnZhciBfc2xpY2VkVG9BcnJheSA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheScpO1xudmFyIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnKTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgaW5kZXggPSByZXF1aXJlKCcuL2luZGV4LTY2NWM0ZWQ4LmNqcy5wcm9kLmpzJyk7XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJkZWZhdWx0T3B0aW9uc1wiLCBcImNhY2hlT3B0aW9uc1wiLCBcImxvYWRPcHRpb25zXCIsIFwib3B0aW9uc1wiLCBcImlzTG9hZGluZ1wiLCBcIm9uSW5wdXRDaGFuZ2VcIiwgXCJmaWx0ZXJPcHRpb25cIl07XG5mdW5jdGlvbiB1c2VBc3luYyhfcmVmKSB7XG4gIHZhciBfcmVmJGRlZmF1bHRPcHRpb25zID0gX3JlZi5kZWZhdWx0T3B0aW9ucyxcbiAgICBwcm9wc0RlZmF1bHRPcHRpb25zID0gX3JlZiRkZWZhdWx0T3B0aW9ucyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmJGRlZmF1bHRPcHRpb25zLFxuICAgIF9yZWYkY2FjaGVPcHRpb25zID0gX3JlZi5jYWNoZU9wdGlvbnMsXG4gICAgY2FjaGVPcHRpb25zID0gX3JlZiRjYWNoZU9wdGlvbnMgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRjYWNoZU9wdGlvbnMsXG4gICAgcHJvcHNMb2FkT3B0aW9ucyA9IF9yZWYubG9hZE9wdGlvbnM7XG4gICAgX3JlZi5vcHRpb25zO1xuICAgIHZhciBfcmVmJGlzTG9hZGluZyA9IF9yZWYuaXNMb2FkaW5nLFxuICAgIHByb3BzSXNMb2FkaW5nID0gX3JlZiRpc0xvYWRpbmcgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRpc0xvYWRpbmcsXG4gICAgcHJvcHNPbklucHV0Q2hhbmdlID0gX3JlZi5vbklucHV0Q2hhbmdlLFxuICAgIF9yZWYkZmlsdGVyT3B0aW9uID0gX3JlZi5maWx0ZXJPcHRpb24sXG4gICAgZmlsdGVyT3B0aW9uID0gX3JlZiRmaWx0ZXJPcHRpb24gPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmJGZpbHRlck9wdGlvbixcbiAgICByZXN0U2VsZWN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgdmFyIHByb3BzSW5wdXRWYWx1ZSA9IHJlc3RTZWxlY3RQcm9wcy5pbnB1dFZhbHVlO1xuICB2YXIgbGFzdFJlcXVlc3QgPSBSZWFjdC51c2VSZWYodW5kZWZpbmVkKTtcbiAgdmFyIG1vdW50ZWQgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICB2YXIgX3VzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoQXJyYXkuaXNBcnJheShwcm9wc0RlZmF1bHRPcHRpb25zKSA/IHByb3BzRGVmYXVsdE9wdGlvbnMgOiB1bmRlZmluZWQpLFxuICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgIGRlZmF1bHRPcHRpb25zID0gX3VzZVN0YXRlMlswXSxcbiAgICBzZXREZWZhdWx0T3B0aW9ucyA9IF91c2VTdGF0ZTJbMV07XG4gIHZhciBfdXNlU3RhdGUzID0gUmVhY3QudXNlU3RhdGUodHlwZW9mIHByb3BzSW5wdXRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcgPyBwcm9wc0lucHV0VmFsdWUgOiAnJyksXG4gICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgIHN0YXRlSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZTRbMF0sXG4gICAgc2V0U3RhdGVJbnB1dFZhbHVlID0gX3VzZVN0YXRlNFsxXTtcbiAgdmFyIF91c2VTdGF0ZTUgPSBSZWFjdC51c2VTdGF0ZShwcm9wc0RlZmF1bHRPcHRpb25zID09PSB0cnVlKSxcbiAgICBfdXNlU3RhdGU2ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlNSwgMiksXG4gICAgaXNMb2FkaW5nID0gX3VzZVN0YXRlNlswXSxcbiAgICBzZXRJc0xvYWRpbmcgPSBfdXNlU3RhdGU2WzFdO1xuICB2YXIgX3VzZVN0YXRlNyA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksXG4gICAgX3VzZVN0YXRlOCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTcsIDIpLFxuICAgIGxvYWRlZElucHV0VmFsdWUgPSBfdXNlU3RhdGU4WzBdLFxuICAgIHNldExvYWRlZElucHV0VmFsdWUgPSBfdXNlU3RhdGU4WzFdO1xuICB2YXIgX3VzZVN0YXRlOSA9IFJlYWN0LnVzZVN0YXRlKFtdKSxcbiAgICBfdXNlU3RhdGUxMCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTksIDIpLFxuICAgIGxvYWRlZE9wdGlvbnMgPSBfdXNlU3RhdGUxMFswXSxcbiAgICBzZXRMb2FkZWRPcHRpb25zID0gX3VzZVN0YXRlMTBbMV07XG4gIHZhciBfdXNlU3RhdGUxMSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSxcbiAgICBfdXNlU3RhdGUxMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTExLCAyKSxcbiAgICBwYXNzRW1wdHlPcHRpb25zID0gX3VzZVN0YXRlMTJbMF0sXG4gICAgc2V0UGFzc0VtcHR5T3B0aW9ucyA9IF91c2VTdGF0ZTEyWzFdO1xuICB2YXIgX3VzZVN0YXRlMTMgPSBSZWFjdC51c2VTdGF0ZSh7fSksXG4gICAgX3VzZVN0YXRlMTQgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUxMywgMiksXG4gICAgb3B0aW9uc0NhY2hlID0gX3VzZVN0YXRlMTRbMF0sXG4gICAgc2V0T3B0aW9uc0NhY2hlID0gX3VzZVN0YXRlMTRbMV07XG4gIHZhciBfdXNlU3RhdGUxNSA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksXG4gICAgX3VzZVN0YXRlMTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUxNSwgMiksXG4gICAgcHJldkRlZmF1bHRPcHRpb25zID0gX3VzZVN0YXRlMTZbMF0sXG4gICAgc2V0UHJldkRlZmF1bHRPcHRpb25zID0gX3VzZVN0YXRlMTZbMV07XG4gIHZhciBfdXNlU3RhdGUxNyA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksXG4gICAgX3VzZVN0YXRlMTggPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUxNywgMiksXG4gICAgcHJldkNhY2hlT3B0aW9ucyA9IF91c2VTdGF0ZTE4WzBdLFxuICAgIHNldFByZXZDYWNoZU9wdGlvbnMgPSBfdXNlU3RhdGUxOFsxXTtcbiAgaWYgKGNhY2hlT3B0aW9ucyAhPT0gcHJldkNhY2hlT3B0aW9ucykge1xuICAgIHNldE9wdGlvbnNDYWNoZSh7fSk7XG4gICAgc2V0UHJldkNhY2hlT3B0aW9ucyhjYWNoZU9wdGlvbnMpO1xuICB9XG4gIGlmIChwcm9wc0RlZmF1bHRPcHRpb25zICE9PSBwcmV2RGVmYXVsdE9wdGlvbnMpIHtcbiAgICBzZXREZWZhdWx0T3B0aW9ucyhBcnJheS5pc0FycmF5KHByb3BzRGVmYXVsdE9wdGlvbnMpID8gcHJvcHNEZWZhdWx0T3B0aW9ucyA6IHVuZGVmaW5lZCk7XG4gICAgc2V0UHJldkRlZmF1bHRPcHRpb25zKHByb3BzRGVmYXVsdE9wdGlvbnMpO1xuICB9XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgbW91bnRlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgbW91bnRlZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgfTtcbiAgfSwgW10pO1xuICB2YXIgbG9hZE9wdGlvbnMgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoaW5wdXRWYWx1ZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoIXByb3BzTG9hZE9wdGlvbnMpIHJldHVybiBjYWxsYmFjaygpO1xuICAgIHZhciBsb2FkZXIgPSBwcm9wc0xvYWRPcHRpb25zKGlucHV0VmFsdWUsIGNhbGxiYWNrKTtcbiAgICBpZiAobG9hZGVyICYmIHR5cGVvZiBsb2FkZXIudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbG9hZGVyLnRoZW4oY2FsbGJhY2ssIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtwcm9wc0xvYWRPcHRpb25zXSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHByb3BzRGVmYXVsdE9wdGlvbnMgPT09IHRydWUpIHtcbiAgICAgIGxvYWRPcHRpb25zKHN0YXRlSW5wdXRWYWx1ZSwgZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFtb3VudGVkLmN1cnJlbnQpIHJldHVybjtcbiAgICAgICAgc2V0RGVmYXVsdE9wdGlvbnMob3B0aW9ucyB8fCBbXSk7XG4gICAgICAgIHNldElzTG9hZGluZyghIWxhc3RSZXF1ZXN0LmN1cnJlbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIE5PVEU6IHRoaXMgZWZmZWN0IGlzIGRlc2lnbmVkIHRvIG9ubHkgcnVuIHdoZW4gdGhlIGNvbXBvbmVudCBtb3VudHMsXG4gICAgLy8gc28gd2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIGFueSBob29rIGRlcGVuZGVuY2llc1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pO1xuICB2YXIgb25JbnB1dENoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChuZXdWYWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgIHZhciBpbnB1dFZhbHVlID0gaW5kZXguaGFuZGxlSW5wdXRDaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEsIHByb3BzT25JbnB1dENoYW5nZSk7XG4gICAgaWYgKCFpbnB1dFZhbHVlKSB7XG4gICAgICBsYXN0UmVxdWVzdC5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgc2V0U3RhdGVJbnB1dFZhbHVlKCcnKTtcbiAgICAgIHNldExvYWRlZElucHV0VmFsdWUoJycpO1xuICAgICAgc2V0TG9hZGVkT3B0aW9ucyhbXSk7XG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgc2V0UGFzc0VtcHR5T3B0aW9ucyhmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjYWNoZU9wdGlvbnMgJiYgb3B0aW9uc0NhY2hlW2lucHV0VmFsdWVdKSB7XG4gICAgICBzZXRTdGF0ZUlucHV0VmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICBzZXRMb2FkZWRJbnB1dFZhbHVlKGlucHV0VmFsdWUpO1xuICAgICAgc2V0TG9hZGVkT3B0aW9ucyhvcHRpb25zQ2FjaGVbaW5wdXRWYWx1ZV0pO1xuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgIHNldFBhc3NFbXB0eU9wdGlvbnMoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmVxdWVzdCA9IGxhc3RSZXF1ZXN0LmN1cnJlbnQgPSB7fTtcbiAgICAgIHNldFN0YXRlSW5wdXRWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgIHNldFBhc3NFbXB0eU9wdGlvbnMoIWxvYWRlZElucHV0VmFsdWUpO1xuICAgICAgbG9hZE9wdGlvbnMoaW5wdXRWYWx1ZSwgZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFtb3VudGVkKSByZXR1cm47XG4gICAgICAgIGlmIChyZXF1ZXN0ICE9PSBsYXN0UmVxdWVzdC5jdXJyZW50KSByZXR1cm47XG4gICAgICAgIGxhc3RSZXF1ZXN0LmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgIHNldExvYWRlZElucHV0VmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICAgIHNldExvYWRlZE9wdGlvbnMob3B0aW9ucyB8fCBbXSk7XG4gICAgICAgIHNldFBhc3NFbXB0eU9wdGlvbnMoZmFsc2UpO1xuICAgICAgICBzZXRPcHRpb25zQ2FjaGUob3B0aW9ucyA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb3B0aW9uc0NhY2hlKSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgaW5wdXRWYWx1ZSwgb3B0aW9ucykpIDogb3B0aW9uc0NhY2hlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2NhY2hlT3B0aW9ucywgbG9hZE9wdGlvbnMsIGxvYWRlZElucHV0VmFsdWUsIG9wdGlvbnNDYWNoZSwgcHJvcHNPbklucHV0Q2hhbmdlXSk7XG4gIHZhciBvcHRpb25zID0gcGFzc0VtcHR5T3B0aW9ucyA/IFtdIDogc3RhdGVJbnB1dFZhbHVlICYmIGxvYWRlZElucHV0VmFsdWUgPyBsb2FkZWRPcHRpb25zIDogZGVmYXVsdE9wdGlvbnMgfHwgW107XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RTZWxlY3RQcm9wcyksIHt9LCB7XG4gICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICBpc0xvYWRpbmc6IGlzTG9hZGluZyB8fCBwcm9wc0lzTG9hZGluZyxcbiAgICBvbklucHV0Q2hhbmdlOiBvbklucHV0Q2hhbmdlLFxuICAgIGZpbHRlck9wdGlvbjogZmlsdGVyT3B0aW9uXG4gIH0pO1xufVxuXG5leHBvcnRzLnVzZUFzeW5jID0gdXNlQXN5bmM7XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciBfZXh0ZW5kcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcycpO1xudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcbnZhciBTZWxlY3QgPSByZXF1aXJlKCcuLi8uLi9kaXN0L1NlbGVjdC0zNmQxNWY5My5janMucHJvZC5qcycpO1xudmFyIHVzZVN0YXRlTWFuYWdlciA9IHJlcXVpcmUoJy4uLy4uL2Rpc3QvdXNlU3RhdGVNYW5hZ2VyLWNlMjMwNjFjLmNqcy5wcm9kLmpzJyk7XG52YXIgdXNlQXN5bmMgPSByZXF1aXJlKCcuLi8uLi9kaXN0L3VzZUFzeW5jLWJlNjU5YTU3LmNqcy5wcm9kLmpzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDInKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXInKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXknKTtcbnJlcXVpcmUoJy4uLy4uL2Rpc3QvaW5kZXgtNjY1YzRlZDguY2pzLnByb2QuanMnKTtcbnJlcXVpcmUoJ0BlbW90aW9uL3JlYWN0Jyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXknKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCcpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eScpO1xucmVxdWlyZSgncmVhY3QtZG9tJyk7XG5yZXF1aXJlKCdAZmxvYXRpbmctdWkvZG9tJyk7XG5yZXF1aXJlKCd1c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0Jyk7XG5yZXF1aXJlKCdtZW1vaXplLW9uZScpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcE5hbWVzcGFjZShlKSB7XG4gIGlmIChlICYmIGUuX19lc01vZHVsZSkgcmV0dXJuIGU7XG4gIHZhciBuID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKGUpIHtcbiAgICBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICBpZiAoayAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZVtrXTsgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuW1wiZGVmYXVsdFwiXSA9IGU7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKG4pO1xufVxuXG52YXIgUmVhY3RfX25hbWVzcGFjZSA9IC8qI19fUFVSRV9fKi9faW50ZXJvcE5hbWVzcGFjZShSZWFjdCk7XG5cbnZhciBBc3luY1NlbGVjdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBzdGF0ZU1hbmFnZWRQcm9wcyA9IHVzZUFzeW5jLnVzZUFzeW5jKHByb3BzKTtcbiAgdmFyIHNlbGVjdFByb3BzID0gdXNlU3RhdGVNYW5hZ2VyLnVzZVN0YXRlTWFuYWdlcihzdGF0ZU1hbmFnZWRQcm9wcyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFNlbGVjdC5TZWxlY3QsIF9leHRlbmRzKHtcbiAgICByZWY6IHJlZlxuICB9LCBzZWxlY3RQcm9wcykpO1xufSk7XG52YXIgQXN5bmNTZWxlY3QkMSA9IEFzeW5jU2VsZWN0O1xuXG5leHBvcnRzLnVzZUFzeW5jID0gdXNlQXN5bmMudXNlQXN5bmM7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IEFzeW5jU2VsZWN0JDE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9yZWFjdC1zZWxlY3QtYXN5bmMuY2pzLnByb2QuanNcIik7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC1hc3luYy5janMuZGV2LmpzXCIpO1xufVxuIiwiZXhwb3J0cy5fZGVmYXVsdCA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC1hc3luYy5janMuanNcIikuZGVmYXVsdDtcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJztcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlLW5lbyc7XG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tICcuLi8uLi9zdGF0ZS9vcmRlcic7XG5pbXBvcnQge1Byb2R1Y3RHcm91cH0gZnJvbSBcIi4uLy4uL21vZGVsL3Byb2R1Y3RHcm91cFwiO1xuaW1wb3J0IFByb2R1Y3RHcm91cFNlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Byb2R1Y3Rncm91cFwiO1xuaW1wb3J0IEFzeW5jU2VsZWN0ICwgeyB1c2VBc3luYyB9IGZyb20gJ3JlYWN0LXNlbGVjdC9hc3luYyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFByb2R1Y3RHcm91cFNlbGVjdCA9IChwcm9wcykgPT4ge1xuICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSk7XG5cbiAgY29uc3QgbG9hZE9wdGlvbnMgPSBhc3luYyAoc2VhcmNoUXVlcnkpID0+IHtcbiAgICBjb25zdCBwcm9kdWN0Z3JvdXBfYXBpID0gbmV3IFByb2R1Y3RHcm91cFNlcnZpY2UoKTtcblxuICAgIHJldHVybiBhd2FpdCBwcm9kdWN0Z3JvdXBfYXBpLmdldFByb2R1Y3RHcm91cHMoc2VhcmNoUXVlcnksIHByb3BzLnNob3ApO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xuICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcHJvcHMub25DaGFuZ2Uob3B0aW9uKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICAgIDxBc3luY1NlbGVjdFxuICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShwcm9wcy5zaG9wLnV1aWQpfVxuICAgICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZX1cbiAgICAgICAgICBsb2FkT3B0aW9ucz17bG9hZE9wdGlvbnN9XG4gICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi51dWlkfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBpc1NlYXJjaGFibGU9e3RydWV9XG4gICAgICAvPlxuICApO1xufTtcblxuUHJvZHVjdEdyb3VwU2VsZWN0LnByb3BUeXBlcyA9IHtcbiAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG4gIHZhbHVlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihQcm9kdWN0R3JvdXApLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9kdWN0R3JvdXBTZWxlY3Q7XG4iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIjtcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcIi4vdG9rZW5cIjtcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uL21vZGVsL3Nob3BcIjtcbmltcG9ydCB7UHJvZHVjdEdyb3VwfSBmcm9tIFwiLi4vbW9kZWwvcHJvZHVjdEdyb3VwXCI7XG5pbXBvcnQge1Byb2R1Y3R9IGZyb20gXCIuLi9tb2RlbC9wcm9kdWN0XCI7XG5pbXBvcnQge0pTT05TY2hlbWE3fSBmcm9tIFwianNvbi1zY2hlbWFcIjtcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgUHJvZHVjdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuPzogVG9rZW4pIHt9XG5cbiAgICBhc3luYyBnZXRQcm9kdWN0c0J5VGVybSh0ZXJtOiBzdHJpbmcsIHNob3A6IFNob3ApOiBQcm9taXNlPFByb2R1Y3RbXT4ge1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9wcm9kdWN0L2dldGFsbGJ5dGVybS8nICsgc2hvcC51dWlkICsgJy8nICsgdGVybSwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcCA9IG5ldyBQcm9kdWN0KCk7XG4gICAgICAgICAgICAgICAgcC5pZCA9IGl0ZW0uaWQ7XG4gICAgICAgICAgICAgICAgcC50aXRsZSA9IGl0ZW0udGl0bGU7XG4gICAgICAgICAgICAgICAgcC51dWlkID0gaXRlbS51dWlkO1xuICAgICAgICAgICAgICAgIHAuc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnR5cCA9IGl0ZW0udHlwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0UHJvZHVjdHMocHJvZHVjdEdyb3VwOiBQcm9kdWN0R3JvdXApOiBQcm9taXNlPFByb2R1Y3RbXT4ge1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9wcm9kdWN0L2dldGFsbGJ5cHJvZHVjdGdyb3VwLycgKyBwcm9kdWN0R3JvdXAudXVpZCwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHAgPSBuZXcgUHJvZHVjdCgpO1xuICAgICAgICAgICAgICBwLmlkID0gaXRlbS5pZDtcbiAgICAgICAgICAgICAgcC50aXRsZSA9IGl0ZW0udGl0bGU7XG4gICAgICAgICAgICAgIHAudXVpZCA9IGl0ZW0udXVpZDtcbiAgICAgICAgICAgICAgcC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QudHlwID0gaXRlbS50eXA7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QWRkUHJvZHVjdFNjaGVtYShwcm9kdWN0OiBQcm9kdWN0LCBmb3JtRGF0YTogYW55KTogUHJvbWlzZTxKU09OU2NoZW1hNz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL3Byb2R1Y3QvZ2V0L2Zvcm0vanNvbi8nICsgcHJvZHVjdC51dWlkLCBmb3JtRGF0YSwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGFzeW5jIGNhbGNQcm9kdWN0KHByb2R1Y3Q6IFByb2R1Y3QsIGZvcm1EYXRhKTogUHJvbWlzZTxKU09OU2NoZW1hNz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL3Byb2R1Y3QvZ2V0L2Zvcm0vanNvbi8nICsgcHJvZHVjdC51dWlkLCBmb3JtRGF0YSwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvZHVjdFNlcnZpY2VcbiIsImltcG9ydHt1c2VSZWYgYXMgcix1c2VFZmZlY3QgYXMgbix1c2VNZW1vIGFzIHQsdXNlU3RhdGUgYXMgZSx1c2VDYWxsYmFjayBhcyB1fWZyb21cInJlYWN0XCI7ZnVuY3Rpb24gYyhlLHUsYyl7dmFyIGk9dGhpcyxhPXIobnVsbCksbz1yKDApLGY9cihudWxsKSxsPXIoW10pLHY9cigpLG09cigpLGQ9cihlKSxnPXIoITApO2QuY3VycmVudD1lO3ZhciBwPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3csdz0hdSYmMCE9PXUmJnA7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiKTt1PSt1fHwwO3ZhciBzPSEhKGM9Y3x8e30pLmxlYWRpbmcseD0hKFwidHJhaWxpbmdcImluIGMpfHwhIWMudHJhaWxpbmcsaD1cIm1heFdhaXRcImluIGMseT1cImRlYm91bmNlT25TZXJ2ZXJcImluIGMmJiEhYy5kZWJvdW5jZU9uU2VydmVyLEY9aD9NYXRoLm1heCgrYy5tYXhXYWl0fHwwLHUpOm51bGw7bihmdW5jdGlvbigpe3JldHVybiBnLmN1cnJlbnQ9ITAsZnVuY3Rpb24oKXtnLmN1cnJlbnQ9ITF9fSxbXSk7dmFyIEE9dChmdW5jdGlvbigpe3ZhciByPWZ1bmN0aW9uKHIpe3ZhciBuPWwuY3VycmVudCx0PXYuY3VycmVudDtyZXR1cm4gbC5jdXJyZW50PXYuY3VycmVudD1udWxsLG8uY3VycmVudD1yLG0uY3VycmVudD1kLmN1cnJlbnQuYXBwbHkodCxuKX0sbj1mdW5jdGlvbihyLG4pe3cmJmNhbmNlbEFuaW1hdGlvbkZyYW1lKGYuY3VycmVudCksZi5jdXJyZW50PXc/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHIpOnNldFRpbWVvdXQocixuKX0sdD1mdW5jdGlvbihyKXtpZighZy5jdXJyZW50KXJldHVybiExO3ZhciBuPXItYS5jdXJyZW50O3JldHVybiFhLmN1cnJlbnR8fG4+PXV8fG48MHx8aCYmci1vLmN1cnJlbnQ+PUZ9LGU9ZnVuY3Rpb24obil7cmV0dXJuIGYuY3VycmVudD1udWxsLHgmJmwuY3VycmVudD9yKG4pOihsLmN1cnJlbnQ9di5jdXJyZW50PW51bGwsbS5jdXJyZW50KX0sYz1mdW5jdGlvbiByKCl7dmFyIGM9RGF0ZS5ub3coKTtpZih0KGMpKXJldHVybiBlKGMpO2lmKGcuY3VycmVudCl7dmFyIGk9dS0oYy1hLmN1cnJlbnQpLGY9aD9NYXRoLm1pbihpLEYtKGMtby5jdXJyZW50KSk6aTtuKHIsZil9fSxBPWZ1bmN0aW9uKCl7aWYocHx8eSl7dmFyIGU9RGF0ZS5ub3coKSxkPXQoZSk7aWYobC5jdXJyZW50PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx2LmN1cnJlbnQ9aSxhLmN1cnJlbnQ9ZSxkKXtpZighZi5jdXJyZW50JiZnLmN1cnJlbnQpcmV0dXJuIG8uY3VycmVudD1hLmN1cnJlbnQsbihjLHUpLHM/cihhLmN1cnJlbnQpOm0uY3VycmVudDtpZihoKXJldHVybiBuKGMsdSkscihhLmN1cnJlbnQpfXJldHVybiBmLmN1cnJlbnR8fG4oYyx1KSxtLmN1cnJlbnR9fTtyZXR1cm4gQS5jYW5jZWw9ZnVuY3Rpb24oKXtmLmN1cnJlbnQmJih3P2NhbmNlbEFuaW1hdGlvbkZyYW1lKGYuY3VycmVudCk6Y2xlYXJUaW1lb3V0KGYuY3VycmVudCkpLG8uY3VycmVudD0wLGwuY3VycmVudD1hLmN1cnJlbnQ9di5jdXJyZW50PWYuY3VycmVudD1udWxsfSxBLmlzUGVuZGluZz1mdW5jdGlvbigpe3JldHVybiEhZi5jdXJyZW50fSxBLmZsdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIGYuY3VycmVudD9lKERhdGUubm93KCkpOm0uY3VycmVudH0sQX0sW3MsaCx1LEYseCx3LHAseV0pO3JldHVybiBBfWZ1bmN0aW9uIGkocixuKXtyZXR1cm4gcj09PW59ZnVuY3Rpb24gYShuLHQsYSl7dmFyIG89YSYmYS5lcXVhbGl0eUZufHxpLGY9cihuKSxsPWUoe30pWzFdLHY9Yyh1KGZ1bmN0aW9uKHIpe2YuY3VycmVudD1yLGwoe30pfSxbbF0pLHQsYSksbT1yKG4pO3JldHVybiBvKG0uY3VycmVudCxuKXx8KHYobiksbS5jdXJyZW50PW4pLFtmLmN1cnJlbnQsdl19ZnVuY3Rpb24gbyhyLG4sdCl7dmFyIGU9dm9pZCAwPT09dD97fTp0LHU9ZS5sZWFkaW5nLGk9ZS50cmFpbGluZztyZXR1cm4gYyhyLG4se21heFdhaXQ6bixsZWFkaW5nOnZvaWQgMD09PXV8fHUsdHJhaWxpbmc6dm9pZCAwPT09aXx8aX0pfWV4cG9ydHthIGFzIHVzZURlYm91bmNlLGMgYXMgdXNlRGVib3VuY2VkQ2FsbGJhY2ssbyBhcyB1c2VUaHJvdHRsZWRDYWxsYmFja307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCc7XG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tICd0c3lyaW5nZS1uZW8nO1xuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSAnLi4vLi4vc3RhdGUvb3JkZXInO1xuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdFwiO1xuaW1wb3J0IHtQcm9kdWN0R3JvdXB9IGZyb20gXCIuLi8uLi9tb2RlbC9wcm9kdWN0R3JvdXBcIjtcbmltcG9ydCBBc3luY1NlbGVjdCBmcm9tIFwicmVhY3Qtc2VsZWN0L2FzeW5jXCI7XG5pbXBvcnQgUHJvZHVjdFNlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RcIjtcbmltcG9ydCB7dXNlRGVib3VuY2V9IGZyb20gXCJ1c2UtZGVib3VuY2VcIjtcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgUHJvZHVjdFNlbGVjdCA9IChwcm9wcykgPT4ge1xuXG4gIGNvbnN0IG9yZGVyU3RhdGU6IE9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKTtcblxuICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSkgPT4ge1xuICAgIGlmKHNlYXJjaFF1ZXJ5ID09IFwiXCIgJiYgcHJvcHMucHJvZHVjdEdyb3VwLnV1aWQgPT0gXCJcIikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBwcm9kdWN0X2FwaSA9IG5ldyBQcm9kdWN0U2VydmljZSgpO1xuICAgIGlmKHNlYXJjaFF1ZXJ5ICE9IFwiXCIpIHtcbiAgICAgIHJldHVybiBhd2FpdCBwcm9kdWN0X2FwaS5nZXRQcm9kdWN0c0J5VGVybShzZWFyY2hRdWVyeSwgcHJvcHMuc2hvcCk7XG4gICAgfWVsc2V7XG4gICAgICByZXR1cm4gYXdhaXQgcHJvZHVjdF9hcGkuZ2V0UHJvZHVjdHMocHJvcHMucHJvZHVjdEdyb3VwKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGVib3VuY2VkU2VhcmNoVGVybSA9IHVzZURlYm91bmNlKGxvYWRPcHRpb25zLCA1MDApO1xuXG4gIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xuICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcHJvcHMub25DaGFuZ2Uob3B0aW9uKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICAgIDxBc3luY1NlbGVjdFxuICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShwcm9wcy5wcm9kdWN0R3JvdXAudXVpZCl9XG4gICAgICAgICAgdmFsdWU9e3Byb3BzLnZhbHVlfVxuICAgICAgICAgIGxvYWRPcHRpb25zPXtsb2FkT3B0aW9uc31cbiAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnV1aWR9XG4gICAgICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IG9wdGlvbi50aXRsZX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgaXNTZWFyY2hhYmxlPXt0cnVlfVxuICAgICAgLz5cbiAgKTtcbn07XG5cblByb2R1Y3RTZWxlY3QucHJvcFR5cGVzID0ge1xuICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgdmFsdWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFByb2R1Y3QpLFxuICBwcm9kdWN0R3JvdXA6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFByb2R1Y3RHcm91cCksXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb2R1Y3RTZWxlY3Q7XG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdFwiXG5pbXBvcnQgdmFsaWRhdG9yIGZyb20gXCJAcmpzZi92YWxpZGF0b3ItYWp2NlwiXG5pbXBvcnQgeyBKU09OU2NoZW1hNyB9IGZyb20gXCJqc29uLXNjaGVtYVwiXG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tICd0c3lyaW5nZS1uZW8nXG5pbXBvcnQgRm9ybSBmcm9tIFwiQHJqc2YvY29yZVwiXG5pbXBvcnQgUHJvZHVjdFNlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RcIlxuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1ByaWNlfSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJpY2VcIlxuaW1wb3J0IHtQb3N9IGZyb20gXCIuLi8uLi9tb2RlbC9wb3NcIlxuaW1wb3J0IHsgdXNlRGVib3VuY2VkQ2FsbGJhY2sgfSBmcm9tICd1c2UtZGVib3VuY2UnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL2Jhc2UvQnV0dG9uJ1xuaW1wb3J0IEN1cnJlbmN5IGZyb20gJy4uL2Jhc2UvQ3VycmVuY3knXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFByb2R1Y3RGb3JtID0gKHtzaG9wLCBwb3MsIGhhbmRsZUNsb3NlLCBoYW5kbGVDaGFuZ2V9KSA9PiB7XG4gICAgY29uc3QgcHJvZHVjdF9hcGkgPSBuZXcgUHJvZHVjdFNlcnZpY2UoKVxuXG4gICAgY29uc3QgW3NjaGVtYSwgc2V0U2NoZW1hXSA9IHVzZVN0YXRlPEpTT05TY2hlbWE3Pih7fSlcbiAgICBjb25zdCBbdWlTY2hlbWEsIHNldFVpU2NoZW1hXSA9IHVzZVN0YXRlPEpTT05TY2hlbWE3Pih7fSlcblxuICAgIGNvbnN0IFtmb3JtRGF0YSwgc2V0Rm9ybURhdGFdID0gdXNlU3RhdGUoe30pXG4gICAgY29uc3QgW3R5cGUsIHNldFR5cGVdID0gdXNlU3RhdGU8bnVtYmVyPigwKVxuXG4gICAgY29uc3QgW3ByaWNlLCBzZXRQcmljZV0gPSB1c2VTdGF0ZTxQcmljZT4obmV3IFByaWNlKCkpXG5cbiAgICBjb25zdCBsb2FkU2NoZW1hID0gKGxvYWREYXRhOiBhbnkpID0+IHtcbiAgICAgICAgaWYocG9zLnByb2R1Y3QudXVpZCA9PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF0YSA9IHt9XG5cbiAgICAgICAgcHJvZHVjdF9hcGkuZ2V0QWRkUHJvZHVjdFNjaGVtYShwb3MucHJvZHVjdCwgbG9hZERhdGEpLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBmb3IoY29uc3Qgb2JqIGluIHZhbHVlWydqc29uRm9ybSddWydwcm9wZXJ0aWVzJ10pIHsgXG4gICAgICAgICAgICAgICAgZGF0YVtvYmpdID0gdmFsdWVbJ2pzb25Gb3JtJ11bJ3Byb3BlcnRpZXMnXVtvYmpdWydkZWZhdWx0J11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEZvcm1EYXRhKGRhdGEpXG4gICAgICAgICAgICBzZXRTY2hlbWEodmFsdWVbJ2pzb25Gb3JtJ10pXG4gICAgICAgICAgICBzZXRVaVNjaGVtYSh2YWx1ZVsndWlKc29uRm9ybSddKVxuICAgICAgICAgICAgc2V0UHJpY2UodmFsdWVbJ3ByaWNlJ10pXG4gICAgICAgICAgICBzZXRUeXBlKHZhbHVlWyd0eXAnXSlcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2VDYWxjID0gKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgIHNldEZvcm1EYXRhKGZvcm1EYXRhKVxuICAgICAgICBkZWJvdW5jZVJlQ2FsYygpXG4gICAgfVxuXG4gICAgY29uc3QgZGVib3VuY2VSZUNhbGMgPSB1c2VEZWJvdW5jZWRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHZhciBkYXRhID0ge31cblxuICAgICAgICBwcm9kdWN0X2FwaS5jYWxjUHJvZHVjdChwb3MucHJvZHVjdCwgZm9ybURhdGEpLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBmb3IoY29uc3Qgb2JqIGluIHZhbHVlWydqc29uRm9ybSddWydwcm9wZXJ0aWVzJ10pIHsgXG4gICAgICAgICAgICAgICAgZGF0YVtvYmpdID0gdmFsdWVbJ2pzb25Gb3JtJ11bJ3Byb3BlcnRpZXMnXVtvYmpdWydkZWZhdWx0J11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEZvcm1EYXRhKGRhdGEpXG4gICAgICAgICAgICBzZXRTY2hlbWEodmFsdWVbJ2pzb25Gb3JtJ10pXG4gICAgICAgICAgICBzZXRVaVNjaGVtYSh2YWx1ZVsndWlKc29uRm9ybSddKVxuICAgICAgICAgICAgc2V0UHJpY2UodmFsdWVbJ3ByaWNlJ10pXG4gICAgICAgICAgICBzZXRUeXBlKHZhbHVlWyd0eXAnXSlcbiAgICAgICAgfSlcbiAgICB9LCA2MDApXG5cbiAgICBjb25zdCBhZGRQcm9kdWN0ID0gKCkgPT4ge1xuXG4gICAgICAgIHBvcy5wcm9kdWN0LnNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdC5wYXJhbXMgPSBmb3JtRGF0YVxuICAgICAgICBwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QudHlwID0gdHlwZVxuICAgICAgICBpZihmb3JtRGF0YVsnY291bnQnXSkge1xuICAgICAgICAgICAgcG9zLmNvdW50ID0gZm9ybURhdGFbJ2NvdW50J11cbiAgICAgICAgfVxuXG4gICAgICAgIHBvcy5wcmljZSA9IHByaWNlXG4gICAgICAgIGhhbmRsZUNoYW5nZShwb3MpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZihwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QucGFyYW1zKSB7XG4gICAgICAgICAgICBzZXRGb3JtRGF0YShwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QucGFyYW1zKVxuICAgICAgICAgICAgbG9hZFNjaGVtYShwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QucGFyYW1zKVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHNldEZvcm1EYXRhKHt9KVxuICAgICAgICAgICAgbG9hZFNjaGVtYSh7fSlcbiAgICAgICAgfVxuICAgICAgICBcbiAgICB9LCBbcG9zLnByb2R1Y3RdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4Jz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleC0xJz5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm0gc2NoZW1hPXtzY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVpU2NoZW1hPXt1aVNjaGVtYX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGE9e2Zvcm1EYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGNoYW5nZUNhbGMoZS5mb3JtRGF0YSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcj17dmFsaWRhdG9yfS8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9Jyc+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDU+TmV0dG86IDxDdXJyZW5jeSBwcmljZT17IHByaWNlLmFsbE5ldH0gLz48L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1Pk13ZXJ0OiA8Q3VycmVuY3kgcHJpY2U9eyBwcmljZS5hbGxWYXR9IC8+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoND5CcnV0dG86IDxDdXJyZW5jeSBwcmljZT17IHByaWNlLmFsbEdyb3NzfSAvPjwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e2FkZFByb2R1Y3R9IHR5cGU9ezN9IHZhcmlhbnQ9e1wic3VjY2Vzc1wifSAvPlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvPlxuICAgIClcbn1cblxuUHJvZHVjdEZvcm0ucHJvcFR5cGVzID0ge1xuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICAgIHBvczogUHJvcFR5cGVzLmluc3RhbmNlT2YoUG9zKSxcbiAgICBoYW5kbGVDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFuZGxlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuY1xufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9kdWN0Rm9ybVxuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdFwiXG5pbXBvcnQge1Byb2R1Y3RHcm91cH0gZnJvbSBcIi4uLy4uL21vZGVsL3Byb2R1Y3RHcm91cFwiXG5pbXBvcnQgUHJvZHVjdEdyb3VwU2VsZWN0IGZyb20gXCIuLi9wcm9kdWN0L1Byb2R1Y3RHcm91cFNlbGVjdFwiXG5pbXBvcnQgUHJvZHVjdFNlbGVjdCBmcm9tIFwiLi4vcHJvZHVjdC9Qcm9kdWN0U2VsZWN0XCJcbmltcG9ydCBQcm9kdWN0Rm9ybSBmcm9tIFwiLi4vcHJvZHVjdC9Qcm9kdWN0Rm9ybVwiXG5pbXBvcnQgT3JkZXIgZnJvbSBcIi4uLy4uL21vZGVsL29yZGVyXCJcbmltcG9ydCB7IFBvcyB9IGZyb20gJy4uLy4uL21vZGVsL3BvcydcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vYmFzZS9CdXR0b24nXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gXCJmbG93Yml0ZS1yZWFjdFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBBZGRQb3NpdGlvbkNvbXBvbmVudCA9IChwcm9wcykgPT4ge1xuXG4gICAgY29uc3QgW3Nob3AsIHNldFNob3BdID0gdXNlU3RhdGUobnVsbClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldFNob3AocHJvcHMuc2hvcClcbiAgICB9LCBbcHJvcHMuc2hvcF0pXG5cbiAgICBjb25zdCBbc2hvdywgc2V0U2hvd10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICAgIGNvbnN0IHBvcyA9IG5ldyBQb3MoKTtcblxuICAgIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4gc2V0U2hvdyhmYWxzZSlcbiAgICBjb25zdCBoYW5kbGVTaG93ID0gKCkgPT4gc2V0U2hvdyh0cnVlKVxuXG4gICAgY29uc3QgW3Byb2R1Y3QsIHNldFByb2R1Y3RdID0gdXNlU3RhdGU8UHJvZHVjdD4obmV3IFByb2R1Y3QoKSlcbiAgICBjb25zdCBbcHJvZHVjdEdyb3VwLCBzZXRQcm9kdWN0R3JvdXBdID0gdXNlU3RhdGU8UHJvZHVjdEdyb3VwPihuZXcgUHJvZHVjdEdyb3VwKCkpXG5cbiAgICBwb3MucHJvZHVjdCA9IHByb2R1Y3Q7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ndGV4dC1jZW50ZXInPlxuICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPXsxfSBvbkNsaWNrPXtoYW5kbGVTaG93fSB2YXJpYW50PVwic3VjY2Vzc1wiLz5cblxuICAgICAgICAgICAgPE1vZGFsIHNpemU9XCI3eGxcIiBzaG93PXtzaG93fSBvbkNsb3NlPXsoKSA9PiBoYW5kbGVDbG9zZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxNb2RhbC5IZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIGFkZCBwb3NpdGlvblxuICAgICAgICAgICAgICAgIDwvTW9kYWwuSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxNb2RhbC5Cb2R5IGNsYXNzTmFtZT1cIm1pbi1oLTk2XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4Jz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4LTEnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5Qcm9kdWN0R3JvdXA8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9kdWN0R3JvdXBTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Byb2R1Y3RHcm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcD17cHJvcHMuc2hvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NldFByb2R1Y3RHcm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleC0xJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UHJvZHVjdDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2R1Y3RTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Byb2R1Y3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3A9e3Byb3BzLnNob3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RHcm91cD17cHJvZHVjdEdyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2V0UHJvZHVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQcm9kdWN0Rm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zPXtwb3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e3Byb3BzLmFkZFBvc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L01vZGFsLkJvZHk+XG4gICAgICAgICAgICA8L01vZGFsPlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59XG5cbkFkZFBvc2l0aW9uQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgICBhZGRQb3M6IFByb3BUeXBlcy5mdW5jXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgQWRkUG9zaXRpb25Db21wb25lbnRcbiIsImltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXG5pbXBvcnQge1Byb2R1Y3R9IGZyb20gXCIuLi8uLi9tb2RlbC9wcm9kdWN0XCJcbmltcG9ydCB7UHJvZHVjdEdyb3VwfSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdEdyb3VwXCJcbmltcG9ydCBQcm9kdWN0R3JvdXBTZWxlY3QgZnJvbSBcIi4uL3Byb2R1Y3QvUHJvZHVjdEdyb3VwU2VsZWN0XCJcbmltcG9ydCBQcm9kdWN0U2VsZWN0IGZyb20gXCIuLi9wcm9kdWN0L1Byb2R1Y3RTZWxlY3RcIlxuaW1wb3J0IHsgUG9zIH0gZnJvbSAnLi4vLi4vbW9kZWwvcG9zJ1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi9iYXNlL0J1dHRvbidcbmltcG9ydCBQcm9kdWN0Rm9ybSBmcm9tICcuLi9wcm9kdWN0L1Byb2R1Y3RGb3JtJ1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tIFwiZmxvd2JpdGUtcmVhY3RcIjtcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgRWRpdFBvc2l0aW9uQ29tcG9uZW50ID0gKHtwb3NpdGlvbiwgc2hvcCwgY2hhbmdlUG9zfSkgPT4ge1xuXG4gICAgY29uc3QgW3Nob3csIHNldFNob3ddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHNldFNob3coZmFsc2UpXG4gICAgY29uc3QgaGFuZGxlU2hvdyA9ICgpID0+IHNldFNob3codHJ1ZSlcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT17Mn0gdmFyaWFudD1cImdyYXlcIiBvbkNsaWNrPXtoYW5kbGVTaG93fS8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPE1vZGFsIHNpemU9XCI3eGxcIiBzaG93PXtzaG93fSBvbkNsb3NlPXsoKSA9PiBoYW5kbGVDbG9zZSgpfT5cbiAgICAgICAgICAgICAgICA8TW9kYWwuSGVhZGVyICBjbGFzc05hbWU9XCJ0ZXh0LW1hdXZlMTIgbS0wIHRleHQtWzE3cHhdIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgIGVkaXQgcG9zaXRpb25cbiAgICAgICAgICAgICAgICA8L01vZGFsLkhlYWRlcj5cbiAgICAgICAgICAgICAgICA8TW9kYWwuQm9keT5cbiAgICAgICAgICAgICAgICA8UHJvZHVjdEZvcm1cbiAgICAgICAgICAgICAgICAgICAgcG9zPXtwb3NpdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXtjaGFuZ2VQb3N9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAgICAgICAgICAgICAgICAvPjwvTW9kYWwuQm9keT5cbiAgICAgICAgICAgIDwvTW9kYWw+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn1cblxuRWRpdFBvc2l0aW9uQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgICBwb3NpdGlvbjogUHJvcFR5cGVzLmluc3RhbmNlT2YoUG9zKSxcbiAgICBjaGFuZ2VQb3M6IFByb3BUeXBlcy5mdW5jXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgRWRpdFBvc2l0aW9uQ29tcG9uZW50XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXHJcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXHJcbmltcG9ydCB7UG9zfSBmcm9tIFwiLi4vLi4vbW9kZWwvcG9zXCJcclxuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi9iYXNlL0J1dHRvbidcclxuaW1wb3J0IEVkaXRQb3NpdGlvbkNvbXBvbmVudCBmcm9tICcuL0VkaXRQb3NpdGlvbkNvbXBvbmVudCdcclxuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXHJcbmltcG9ydCBDdXJyZW5jeSBmcm9tICcuLi9iYXNlL0N1cnJlbmN5J1xyXG5cclxuXHJcbmNvbnN0IFBvc0NvbXBvbmVudCA9ICh7aW5kZXgsIHBvcywgZGVsUG9zLCBjaGFuZ2VQb3MsIHNob3B9KSA9PiB7XHJcblxyXG4gICAgY29uc3QgZGVsZXRlUG9zID0gKHV1aWQ6IFN0cmluZykgPT4ge1xyXG4gICAgICAgIGRlbFBvcyh1dWlkKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4J30+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9PntpbmRleCArIDF9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9Pntwb3MucHJvZHVjdC50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xJ30+e3Bvcy5jb3VudH08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+PEN1cnJlbmN5IHByaWNlPXsgcG9zLnByaWNlLmFsbE5ldH0gLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+PEN1cnJlbmN5IHByaWNlPXsgcG9zLnByaWNlLmFsbFZhdH0gLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+PEN1cnJlbmN5IHByaWNlPXsgcG9zLnByaWNlLmFsbEdyb3NzfSAvPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxFZGl0UG9zaXRpb25Db21wb25lbnQgc2hvcD17c2hvcH0gcG9zaXRpb249e3Bvc30gY2hhbmdlUG9zPXtjaGFuZ2VQb3N9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT17NX0gdmFyaWFudD17J2ZhaWx1cmUnfSBvbkNsaWNrPXsoKSA9PiBkZWxldGVQb3MocG9zLnV1aWQpfSAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aHIvPlxyXG4gICAgICAgIDwvPlxyXG4gICAgKVxyXG59XHJcblxyXG5Qb3NDb21wb25lbnQucHJvcFR5cGVzID0ge1xyXG4gICAgaW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXHJcbiAgICBwb3M6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFBvcyksXHJcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcclxuICAgIGRlbFBvczogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgICBjaGFuZ2VQb3M6IFByb3BUeXBlcy5mdW5jXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFBvc0NvbXBvbmVudFxyXG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxyXG5pbXBvcnQgUG9zQ29tcG9uZW50IGZyb20gXCIuL1Bvc0NvbXBvbmVudFwiXHJcbmltcG9ydCB7dXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIlxyXG5pbXBvcnQge09yZGVyfSBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxyXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcclxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xyXG5cclxuY29uc3QgSXRlbXNDb21wb25lbnQgPSAoe3Bvc2l0aW9ucywgZGVsUG9zLCBzaG9wLCBjaGFuZ2VQb3N9KSA9PiB7XHJcblxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4J30+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNT5Qb3M8L2g1PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNT5UaXRsZTwvaDU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xJ30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg1PkFuemFobDwvaDU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg1Pk5ldHRvPC9oNT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT5cclxuICAgICAgICAgICAgICAgICAgICA8aDU+VGF4PC9oNT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT5cclxuICAgICAgICAgICAgICAgICAgICA8aDU+R3Jvc3M8L2g1PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSB0ZXh0LWVuZCd9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNT5TdGF0dXM8L2g1PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGhyLz5cclxuICAgICAgICAgICAge3Bvc2l0aW9ucy5tYXAoKG9iamVjdCwgaSkgPT4gPFBvc0NvbXBvbmVudCBwb3M9e29iamVjdH0gc2hvcD17c2hvcH0gZGVsUG9zPXtkZWxQb3N9IGNoYW5nZVBvcz17Y2hhbmdlUG9zfSBrZXk9e2l9IGluZGV4PXtpfSAvPil9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKVxyXG59XHJcblxyXG5JdGVtc0NvbXBvbmVudC5wcm9wVHlwZXMgPSB7XHJcbiAgICBwb3NpdGlvbnM6IFByb3BUeXBlcy5hcnJheSxcclxuICAgIGRlbFBvczogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgICBjaGFuZ2VQb3M6IFByb3BUeXBlcy5mdW5jLFxyXG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcClcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgSXRlbXNDb21wb25lbnRcclxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IEFkZFBvc2l0aW9uQ29tcG9uZW50IGZyb20gXCIuL0FkZFBvc2l0aW9uQ29tcG9uZW50XCJcbmltcG9ydCBJdGVtc0NvbXBvbmVudCBmcm9tIFwiLi9JdGVtc0NvbXBvbmVudFwiXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1Bvc30gZnJvbSBcIi4uLy4uL21vZGVsL3Bvc1wiXG5pbXBvcnQgT3JkZXIgZnJvbSBcIi4uLy4uL21vZGVsL29yZGVyXCJcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gXCIuLi8uLi9zdGF0ZS9vcmRlclwiXG5cbmNvbnN0IFBvc2l0aW9uc0NvbXBvbmVudCA9ICh7b3JkZXIsIHNob3AsIHVwZGF0ZU9yZGVyfSkgPT4ge1xuXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG5cbiAgICBjb25zdCBbcG9zaXRpb25zLCBzZXRQb3NpdGlvbnNdID0gdXNlU3RhdGU8QXJyYXk8UG9zPj4ob3JkZXIucG9zaXRpb25zKVxuXG4gICAgY29uc3QgYWRkUG9zID0gKHBvc09iaikgPT4ge1xuICAgICAgICBzZXRQb3NpdGlvbnMoWy4uLnBvc2l0aW9ucywgcG9zT2JqXSlcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2VQb3MgPSAocG9zT2JqKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRDb3VudGVycyA9IHBvc2l0aW9ucy5tYXAoKGMsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChjLnV1aWQgPT09IHBvc09iai51dWlkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBwb3NPYmpcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBjXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHNldFBvc2l0aW9ucyhuZXh0Q291bnRlcnMpXG4gICAgICAgIFxuICAgIH1cblxuICAgIGNvbnN0IGRlbFBvcyA9ICh1dWlkKSA9PiB7XG4gICAgICAgIGxldCBwb3MgPSBwb3NpdGlvbnMuZmlsdGVyKChvYmopID0+IG9iai51dWlkICE9PSB1dWlkKVxuXG4gICAgICAgIHNldFBvc2l0aW9ucyhwb3MpXG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGV0IG9yZGVyT2JqID0gb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZVxuICAgICAgICBvcmRlck9iai5wb3NpdGlvbnMgPSBwb3NpdGlvbnNcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXG4gICAgfSwgW3Bvc2l0aW9uc10pXG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJwLTJcIn0+XG4gICAgICAgICAgICA8SXRlbXNDb21wb25lbnQgcG9zaXRpb25zPXtwb3NpdGlvbnN9IHNob3A9e3Nob3B9IGRlbFBvcz17ZGVsUG9zfSBjaGFuZ2VQb3M9e2NoYW5nZVBvc30vPlxuICAgICAgICAgICAgPEFkZFBvc2l0aW9uQ29tcG9uZW50IHNob3A9e3Nob3B9IGFkZFBvcz17YWRkUG9zfS8+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn1cblxuUG9zaXRpb25zQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxuICAgIHVwZGF0ZU9yZGVyOiBQcm9wVHlwZXMuZnVuY1xufVxuXG5leHBvcnQgZGVmYXVsdCBQb3NpdGlvbnNDb21wb25lbnRcbiIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXHJcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcIi4vdG9rZW5cIlxyXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXHJcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiXHJcbmltcG9ydCB7UGF5bWVudH0gZnJvbSBcIi4uL21vZGVsL3BheW1lbnRcIlxyXG5cclxuQHNpbmdsZXRvbigpXHJcbkBhdXRvSW5qZWN0YWJsZSgpXHJcbmNsYXNzIFBheW1lbnRTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW4/OiBUb2tlbikge31cclxuXHJcbiAgICBhc3luYyBnZXRQYXltZW50cyhzaG9wOiBTaG9wKTogUHJvbWlzZTxQYXltZW50W10+IHtcclxuXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL3BheW1lbnQvYnkvc2hvcC8nICsgc2hvcC51dWlkLCB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBwYXltZW50ID0gbmV3IFBheW1lbnQoKVxyXG4gICAgICAgICAgICAgICAgcGF5bWVudC51aWQgPSBpdGVtLnVpZFxyXG4gICAgICAgICAgICAgICAgcGF5bWVudC50aXRsZSA9IGl0ZW0udGl0bGVcclxuICAgICAgICAgICAgICAgIHBheW1lbnQudXVpZCA9IGl0ZW0udXVpZFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBheW1lbnRcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUGF5bWVudFNlcnZpY2VcclxuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXHJcbmltcG9ydCB7IEFzeW5jUGFnaW5hdGUgfSBmcm9tIFwicmVhY3Qtc2VsZWN0LWFzeW5jLXBhZ2luYXRlXCJcclxuaW1wb3J0IFBheW1lbnRTZXJ2aWNlIGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9wYXltZW50XCJcclxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcclxuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi8uLi9tb2RlbC9zaG9wXCJcclxuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXHJcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gXCIuLi8uLi9zdGF0ZS9vcmRlclwiXHJcbmltcG9ydCBPcmRlciBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxyXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IFNlbGVjdCBmcm9tICdyZWFjdC1zZWxlY3QnXHJcbmltcG9ydCB7IFNlbGVjdExhYmVsIH0gZnJvbSAnLi4vYmFzZS9TZWxlY3RMYWJlbCdcclxuXHJcbmNvbnN0IFBheW1lbnRDb21wb25lbnQgPSAoeyBzaG9wLCBvcmRlciB9KSA9PiB7XHJcblxyXG4gICAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKVxyXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXHJcbiAgICBjb25zdCBbcGF5bWVudCwgc2V0UGF5bWVudF0gPSB1c2VTdGF0ZSgwKVxyXG4gICAgY29uc3QgcGF5bWVudF9zZXJ2aWNlID0gbmV3IFBheW1lbnRTZXJ2aWNlKClcclxuXHJcbiAgICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSwgbG9hZGVkT3B0aW9ucykgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwYXltZW50X3NlcnZpY2UuZ2V0UGF5bWVudHMoc2hvcClcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgb3B0aW9uczogZGF0YSxcclxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0U2hvcFV1aWQoc2hvcC51dWlkKVxyXG4gICAgICB9LCBbc2hvcC51dWlkXSlcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFBheW1lbnQob3JkZXIucGF5bWVudC51aWQpXHJcbiAgICB9LCBbb3JkZXIucGF5bWVudF0pXHJcblxyXG5cclxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xyXG4gICAgICAgIG9yZGVyLnBheW1lbnQgPSBvcHRpb25cclxuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLmdldFZhbHVlKClcclxuICAgICAgICBvcmRlck9iai5wYXltZW50ID0gb3B0aW9uXHJcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXHJcbiAgICAgICAgc2V0UGF5bWVudChvcHRpb24udWlkKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wicC0yXCJ9PlxyXG4gICAgICAgICAgICA8QXN5bmNQYWdpbmF0ZVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnNcclxuICAgICAgICAgICAgICAgIGtleT17SlNPTi5zdHJpbmdpZnkoc2hvcFV1aWQpfVxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50cz17eyBDb250cm9sOiBTZWxlY3RMYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtvcmRlci5wYXltZW50fVxyXG4gICAgICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9JydcclxuICAgICAgICAgICAgICAgIG5hbWU9J1phaGxhcnQnXHJcbiAgICAgICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnVpZH1cclxuICAgICAgICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24udGl0bGV9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwYXltZW50ID09IDAgPyBcImJvcmRlciBib3JkZXItcmVkLTUwMFwiIDogXCJcIn1gfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKVxyXG59XHJcblxyXG5QYXltZW50Q29tcG9uZW50LnByb3BUeXBlcyA9IHtcclxuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxyXG4gICAgb3JkZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKE9yZGVyKSxcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUGF5bWVudENvbXBvbmVudFxyXG4iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxyXG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCJcclxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJ1xyXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uL21vZGVsL3Nob3BcIlxyXG5pbXBvcnQge1NoaXBwaW5nfSBmcm9tIFwiLi4vbW9kZWwvc2hpcHBpbmdcIlxyXG5cclxuQHNpbmdsZXRvbigpXHJcbkBhdXRvSW5qZWN0YWJsZSgpXHJcbmNsYXNzIFNoaXBwaW5nU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuPzogVG9rZW4pIHt9XHJcblxyXG4gICAgYXN5bmMgZ2V0U2hpcHBpbmcoc2hvcDogU2hvcCk6IFByb21pc2U8U2hpcHBpbmdbXT4ge1xyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvc2hpcHBpbmcvYnkvc2hvcC8nICsgc2hvcC51dWlkLCB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzaGlwbWVudCA9IG5ldyBTaGlwcGluZygpXHJcbiAgICAgICAgICAgICAgICBzaGlwbWVudC51aWQgPSBpdGVtLnVpZFxyXG4gICAgICAgICAgICAgICAgc2hpcG1lbnQudGl0bGUgPSBpdGVtLnRpdGxlXHJcbiAgICAgICAgICAgICAgICBzaGlwbWVudC51dWlkID0gaXRlbS51dWlkXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2hpcG1lbnRcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2hpcHBpbmdTZXJ2aWNlXHJcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xyXG5pbXBvcnQgeyBBc3luY1BhZ2luYXRlIH0gZnJvbSBcInJlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZVwiXHJcbmltcG9ydCBTaGlwcGluZ1NlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NoaXBwaW5nXCJcclxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcclxuaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi4vLi4vbW9kZWwvc2hvcFwiXHJcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcclxuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSBcIi4uLy4uL3N0YXRlL29yZGVyXCJcclxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXHJcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xyXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXHJcblxyXG5jb25zdCBTaGlwcGluZ0NvbXBvbmVudCA9ICh7c2hvcCwgb3JkZXJ9KSA9PiB7XHJcblxyXG4gICAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKVxyXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXHJcbiAgICBjb25zdCBbc2hpcHBpbmcsIHNldFNoaXBwaW5nXSA9IHVzZVN0YXRlKDApXHJcbiAgICBjb25zdCBzaGlwcGluZ19zZXJ2aWNlID0gbmV3IFNoaXBwaW5nU2VydmljZSgpXHJcbiAgICBcclxuICAgIGNvbnN0IGxvYWRPcHRpb25zID0gYXN5bmMgKHNlYXJjaFF1ZXJ5LCBsb2FkZWRPcHRpb25zKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHNoaXBwaW5nX3NlcnZpY2UuZ2V0U2hpcHBpbmcoc2hvcClcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgb3B0aW9uczogZGF0YSxcclxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0U2hvcFV1aWQoc2hvcC51dWlkKVxyXG4gICAgICB9LCBbc2hvcC51dWlkXSlcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFNoaXBwaW5nKG9yZGVyLnNoaXBwaW5nLnVpZClcclxuICAgIH0sIFtvcmRlci5zaGlwcGluZ10pXHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgb3JkZXIuc2hpcHBpbmcgPSBvcHRpb25cclxuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLmdldFZhbHVlKClcclxuICAgICAgICBvcmRlck9iai5zaGlwcGluZyA9IG9wdGlvblxyXG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxyXG4gICAgICAgIHNldFNoaXBwaW5nKG9wdGlvbi51aWQpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJwLTJcIn0+XHJcbiAgICAgICAgICAgIDxBc3luY1BhZ2luYXRlXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9uc1xyXG4gICAgICAgICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShzaG9wVXVpZCl9XHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzPXt7Q29udHJvbDogU2VsZWN0TGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtvcmRlci5zaGlwcGluZ31cclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPScnXHJcbiAgICAgICAgICAgICAgICBuYW1lPSdWZXJzYW5kYXJ0J1xyXG4gICAgICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi51aWR9XHJcbiAgICAgICAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4gb3B0aW9uLnRpdGxlfVxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxyXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c2hpcHBpbmcgPT0gMCA/IFwiYm9yZGVyIGJvcmRlci1yZWQtNTAwXCIgOiBcIlwifWB9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICA8L2Rpdj5cclxuKVxyXG59XHJcblxyXG5TaGlwcGluZ0NvbXBvbmVudC5wcm9wVHlwZXMgPSB7XHJcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcclxuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFNoaXBwaW5nQ29tcG9uZW50XHJcbiIsImltcG9ydCBPcmRlclN0YXRlIGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IHtjb250YWluZXJ9IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuaW1wb3J0IE9yZGVyU2VydmljZSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlcidcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7T3JkZXJ9IGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQgeyBSaVNhdmVGaWxsLCBSaVByaW50ZXJGaWxsIH0gZnJvbSBcIkBwcmVhY3QtaWNvbnMvcmlcIlxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcImZsb3diaXRlLXJlYWN0XCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY2xhc3MgQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50PHtsb2FkT3JkZXJ9LHtkaXNhYmxlZDogYm9vbGVhbn0+IHtcbiAgICBvcmRlclN0YXRlOiBPcmRlclN0YXRlXG4gICAgb3JkZXJTZXJ2aWNlOiBPcmRlclNlcnZpY2VcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcylcbiAgICAgICAgdGhpcy5vcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcbiAgICAgICAgdGhpcy5vcmRlclNlcnZpY2UgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclNlcnZpY2UpXG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtkaXNhYmxlZDogdHJ1ZX1cbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy5vcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnBpcGUoZGVib3VuY2VUaW1lKDIwMDApKS5zdWJzY3JpYmUoKGUpID0+IHRoaXMuc2F2ZUJ1dHRvbihlKSlcbiAgICB9XG5cbiAgICBzYXZlQnV0dG9uKG9yZGVyOiBPcmRlcikge1xuICAgICAgICBpZihvcmRlci5jb250YWN0LnVzZXJuYW1lICE9IFwiXCJcbiAgICAgICAgICAgICYmIG9yZGVyLnBheW1lbnQudGl0bGUgIT0gXCJcIlxuICAgICAgICAgICAgJiYgb3JkZXIuc2hpcHBpbmcudGl0bGUgIT0gXCJcIlxuICAgICAgICAgICAgJiYgb3JkZXIuc2hvcC5uYW1lICE9IFwiXCJcbiAgICAgICAgICAgICYmIG9yZGVyLmFjY291bnQudGl0bGUgIT0gXCJcIlxuICAgICAgICAgICAgJiYgb3JkZXIuaW52b2ljZUFkZHJlc3MudXVpZCAhPSBcIlwiXG4gICAgICAgICAgICAmJiBvcmRlci50eXBlICE9IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtkaXNhYmxlZDogZmFsc2V9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlUHJpbnQoZSkge1xuICAgICAgICBjb25zdCB1dWlkID0gdGhpcy5vcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlLnV1aWQ7XG4gICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLm9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUudHlwZTtcbiAgICAgICAgd2luZG93Lm9wZW4oJy9hcHBzL2JhY2tlbmQvb3JkZXIvZGV0YWlsL3ByaW50LycgKyB0eXBlICsgJy8nICsgdXVpZClcbiAgICB9XG5cbiAgICBhc3luYyBoYW5kbGVTYXZlKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMub3JkZXJTZXJ2aWNlLnNhdmVPcmRlcih0aGlzLm9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUpXG5cbiAgICAgICAgdGhpcy5wcm9wcy5sb2FkT3JkZXIocmVzdWx0Wyd1dWlkJ10pXG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiBzaXplPVwieHNcIiBjb2xvcj1cImluZm9cIiBkaXNhYmxlZD17dGhpcy5zdGF0ZS5kaXNhYmxlZH0gb25DbGljaz17KGU6YW55KSA9PiB0aGlzLmhhbmRsZVNhdmUoZSl9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1yLTIgaC01IHctNVwiLz4gU3BlaWNoZXJuXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiBzaXplPVwieHNcIiBjb2xvcj1cInN1Y2Nlc3NcIiBkaXNhYmxlZD17IXRoaXMub3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZS5zYXZlZH0gb25DbGljaz17KGU6YW55KSA9PiB0aGlzLmhhbmRsZVByaW50KGUpfT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtci0yIGgtNSB3LTVcIi8+IERydWNrZW5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uQ29tcG9uZW50XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbmV4cG9ydHMuc2VyaWFsaXplID0gc2VyaWFsaXplO1xuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggY29va2llLW5hbWUgaW4gUkZDIDYyNjUgc2VjIDQuMS4xXG4gKiBUaGlzIHJlZmVycyBvdXQgdG8gdGhlIG9ic29sZXRlZCBkZWZpbml0aW9uIG9mIHRva2VuIGluIFJGQyAyNjE2IHNlYyAyLjJcbiAqIHdoaWNoIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSB0b2tlbiBkZWZpbml0aW9uIGluIFJGQyA3MjMwIGFwcGVuZGl4IEIuXG4gKlxuICogY29va2llLW5hbWUgICAgICAgPSB0b2tlblxuICogdG9rZW4gICAgICAgICAgICAgPSAxKnRjaGFyXG4gKiB0Y2hhciAgICAgICAgICAgICA9IFwiIVwiIC8gXCIjXCIgLyBcIiRcIiAvIFwiJVwiIC8gXCImXCIgLyBcIidcIiAvXG4gKiAgICAgICAgICAgICAgICAgICAgIFwiKlwiIC8gXCIrXCIgLyBcIi1cIiAvIFwiLlwiIC8gXCJeXCIgLyBcIl9cIiAvXG4gKiAgICAgICAgICAgICAgICAgICAgIFwiYFwiIC8gXCJ8XCIgLyBcIn5cIiAvIERJR0lUIC8gQUxQSEFcbiAqXG4gKiBOb3RlOiBBbGxvd2luZyBtb3JlIGNoYXJhY3RlcnMgLSBodHRwczovL2dpdGh1Yi5jb20vanNodHRwL2Nvb2tpZS9pc3N1ZXMvMTkxXG4gKiBBbGxvdyBzYW1lIHJhbmdlIGFzIGNvb2tpZSB2YWx1ZSwgZXhjZXB0IGA9YCwgd2hpY2ggZGVsaW1pdHMgZW5kIG9mIG5hbWUuXG4gKi9cbmNvbnN0IGNvb2tpZU5hbWVSZWdFeHAgPSAvXltcXHUwMDIxLVxcdTAwM0FcXHUwMDNDXFx1MDAzRS1cXHUwMDdFXSskLztcbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGNvb2tpZS12YWx1ZSBpbiBSRkMgNjI2NSBzZWMgNC4xLjFcbiAqXG4gKiBjb29raWUtdmFsdWUgICAgICA9ICpjb29raWUtb2N0ZXQgLyAoIERRVU9URSAqY29va2llLW9jdGV0IERRVU9URSApXG4gKiBjb29raWUtb2N0ZXQgICAgICA9ICV4MjEgLyAleDIzLTJCIC8gJXgyRC0zQSAvICV4M0MtNUIgLyAleDVELTdFXG4gKiAgICAgICAgICAgICAgICAgICAgIDsgVVMtQVNDSUkgY2hhcmFjdGVycyBleGNsdWRpbmcgQ1RMcyxcbiAqICAgICAgICAgICAgICAgICAgICAgOyB3aGl0ZXNwYWNlIERRVU9URSwgY29tbWEsIHNlbWljb2xvbixcbiAqICAgICAgICAgICAgICAgICAgICAgOyBhbmQgYmFja3NsYXNoXG4gKlxuICogQWxsb3dpbmcgbW9yZSBjaGFyYWN0ZXJzOiBodHRwczovL2dpdGh1Yi5jb20vanNodHRwL2Nvb2tpZS9pc3N1ZXMvMTkxXG4gKiBDb21tYSwgYmFja3NsYXNoLCBhbmQgRFFVT1RFIGFyZSBub3QgcGFydCBvZiB0aGUgcGFyc2luZyBhbGdvcml0aG0uXG4gKi9cbmNvbnN0IGNvb2tpZVZhbHVlUmVnRXhwID0gL15bXFx1MDAyMS1cXHUwMDNBXFx1MDAzQy1cXHUwMDdFXSokLztcbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGRvbWFpbi12YWx1ZSBpbiBSRkMgNjI2NSBzZWMgNC4xLjFcbiAqXG4gKiBkb21haW4tdmFsdWUgICAgICA9IDxzdWJkb21haW4+XG4gKiAgICAgICAgICAgICAgICAgICAgIDsgZGVmaW5lZCBpbiBbUkZDMTAzNF0sIFNlY3Rpb24gMy41LCBhc1xuICogICAgICAgICAgICAgICAgICAgICA7IGVuaGFuY2VkIGJ5IFtSRkMxMTIzXSwgU2VjdGlvbiAyLjFcbiAqIDxzdWJkb21haW4+ICAgICAgID0gPGxhYmVsPiB8IDxzdWJkb21haW4+IFwiLlwiIDxsYWJlbD5cbiAqIDxsYWJlbD4gICAgICAgICAgID0gPGxldC1kaWc+IFsgWyA8bGRoLXN0cj4gXSA8bGV0LWRpZz4gXVxuICogICAgICAgICAgICAgICAgICAgICBMYWJlbHMgbXVzdCBiZSA2MyBjaGFyYWN0ZXJzIG9yIGxlc3MuXG4gKiAgICAgICAgICAgICAgICAgICAgICdsZXQtZGlnJyBub3QgJ2xldHRlcicgaW4gdGhlIGZpcnN0IGNoYXIsIHBlciBSRkMxMTIzXG4gKiA8bGRoLXN0cj4gICAgICAgICA9IDxsZXQtZGlnLWh5cD4gfCA8bGV0LWRpZy1oeXA+IDxsZGgtc3RyPlxuICogPGxldC1kaWctaHlwPiAgICAgPSA8bGV0LWRpZz4gfCBcIi1cIlxuICogPGxldC1kaWc+ICAgICAgICAgPSA8bGV0dGVyPiB8IDxkaWdpdD5cbiAqIDxsZXR0ZXI+ICAgICAgICAgID0gYW55IG9uZSBvZiB0aGUgNTIgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzIEEgdGhyb3VnaCBaIGluXG4gKiAgICAgICAgICAgICAgICAgICAgIHVwcGVyIGNhc2UgYW5kIGEgdGhyb3VnaCB6IGluIGxvd2VyIGNhc2VcbiAqIDxkaWdpdD4gICAgICAgICAgID0gYW55IG9uZSBvZiB0aGUgdGVuIGRpZ2l0cyAwIHRocm91Z2ggOVxuICpcbiAqIEtlZXAgc3VwcG9ydCBmb3IgbGVhZGluZyBkb3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9qc2h0dHAvY29va2llL2lzc3Vlcy8xNzNcbiAqXG4gKiA+IChOb3RlIHRoYXQgYSBsZWFkaW5nICV4MkUgKFwiLlwiKSwgaWYgcHJlc2VudCwgaXMgaWdub3JlZCBldmVuIHRob3VnaCB0aGF0XG4gKiBjaGFyYWN0ZXIgaXMgbm90IHBlcm1pdHRlZCwgYnV0IGEgdHJhaWxpbmcgJXgyRSAoXCIuXCIpLCBpZiBwcmVzZW50LCB3aWxsXG4gKiBjYXVzZSB0aGUgdXNlciBhZ2VudCB0byBpZ25vcmUgdGhlIGF0dHJpYnV0ZS4pXG4gKi9cbmNvbnN0IGRvbWFpblZhbHVlUmVnRXhwID0gL14oWy5dP1thLXowLTldKFthLXowLTktXXswLDYxfVthLXowLTldKT8pKFsuXVthLXowLTldKFthLXowLTktXXswLDYxfVthLXowLTldKT8pKiQvaTtcbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHBhdGgtdmFsdWUgaW4gUkZDIDYyNjUgc2VjIDQuMS4xXG4gKlxuICogcGF0aC12YWx1ZSAgICAgICAgPSA8YW55IENIQVIgZXhjZXB0IENUTHMgb3IgXCI7XCI+XG4gKiBDSEFSICAgICAgICAgICAgICA9ICV4MDEtN0ZcbiAqICAgICAgICAgICAgICAgICAgICAgOyBkZWZpbmVkIGluIFJGQyA1MjM0IGFwcGVuZGl4IEIuMVxuICovXG5jb25zdCBwYXRoVmFsdWVSZWdFeHAgPSAvXltcXHUwMDIwLVxcdTAwM0FcXHUwMDNELVxcdTAwN0VdKiQvO1xuY29uc3QgX190b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5jb25zdCBOdWxsT2JqZWN0ID0gLyogQF9fUFVSRV9fICovICgoKSA9PiB7XG4gICAgY29uc3QgQyA9IGZ1bmN0aW9uICgpIHsgfTtcbiAgICBDLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgcmV0dXJuIEM7XG59KSgpO1xuLyoqXG4gKiBQYXJzZSBhIGNvb2tpZSBoZWFkZXIuXG4gKlxuICogUGFyc2UgdGhlIGdpdmVuIGNvb2tpZSBoZWFkZXIgc3RyaW5nIGludG8gYW4gb2JqZWN0XG4gKiBUaGUgb2JqZWN0IGhhcyB0aGUgdmFyaW91cyBjb29raWVzIGFzIGtleXMobmFtZXMpID0+IHZhbHVlc1xuICovXG5mdW5jdGlvbiBwYXJzZShzdHIsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBvYmogPSBuZXcgTnVsbE9iamVjdCgpO1xuICAgIGNvbnN0IGxlbiA9IHN0ci5sZW5ndGg7XG4gICAgLy8gUkZDIDYyNjUgc2VjIDQuMS4xLCBSRkMgMjYxNiAyLjIgZGVmaW5lcyBhIGNvb2tpZSBuYW1lIGNvbnNpc3RzIG9mIG9uZSBjaGFyIG1pbmltdW0sIHBsdXMgJz0nLlxuICAgIGlmIChsZW4gPCAyKVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgIGNvbnN0IGRlYyA9IG9wdGlvbnM/LmRlY29kZSB8fCBkZWNvZGU7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBkbyB7XG4gICAgICAgIGNvbnN0IGVxSWR4ID0gc3RyLmluZGV4T2YoXCI9XCIsIGluZGV4KTtcbiAgICAgICAgaWYgKGVxSWR4ID09PSAtMSlcbiAgICAgICAgICAgIGJyZWFrOyAvLyBObyBtb3JlIGNvb2tpZSBwYWlycy5cbiAgICAgICAgY29uc3QgY29sb25JZHggPSBzdHIuaW5kZXhPZihcIjtcIiwgaW5kZXgpO1xuICAgICAgICBjb25zdCBlbmRJZHggPSBjb2xvbklkeCA9PT0gLTEgPyBsZW4gOiBjb2xvbklkeDtcbiAgICAgICAgaWYgKGVxSWR4ID4gZW5kSWR4KSB7XG4gICAgICAgICAgICAvLyBiYWNrdHJhY2sgb24gcHJpb3Igc2VtaWNvbG9uXG4gICAgICAgICAgICBpbmRleCA9IHN0ci5sYXN0SW5kZXhPZihcIjtcIiwgZXFJZHggLSAxKSArIDE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlTdGFydElkeCA9IHN0YXJ0SW5kZXgoc3RyLCBpbmRleCwgZXFJZHgpO1xuICAgICAgICBjb25zdCBrZXlFbmRJZHggPSBlbmRJbmRleChzdHIsIGVxSWR4LCBrZXlTdGFydElkeCk7XG4gICAgICAgIGNvbnN0IGtleSA9IHN0ci5zbGljZShrZXlTdGFydElkeCwga2V5RW5kSWR4KTtcbiAgICAgICAgLy8gb25seSBhc3NpZ24gb25jZVxuICAgICAgICBpZiAob2JqW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbGV0IHZhbFN0YXJ0SWR4ID0gc3RhcnRJbmRleChzdHIsIGVxSWR4ICsgMSwgZW5kSWR4KTtcbiAgICAgICAgICAgIGxldCB2YWxFbmRJZHggPSBlbmRJbmRleChzdHIsIGVuZElkeCwgdmFsU3RhcnRJZHgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkZWMoc3RyLnNsaWNlKHZhbFN0YXJ0SWR4LCB2YWxFbmRJZHgpKTtcbiAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSBlbmRJZHggKyAxO1xuICAgIH0gd2hpbGUgKGluZGV4IDwgbGVuKTtcbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gc3RhcnRJbmRleChzdHIsIGluZGV4LCBtYXgpIHtcbiAgICBkbyB7XG4gICAgICAgIGNvbnN0IGNvZGUgPSBzdHIuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgIGlmIChjb2RlICE9PSAweDIwIC8qICAgKi8gJiYgY29kZSAhPT0gMHgwOSAvKiBcXHQgKi8pXG4gICAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfSB3aGlsZSAoKytpbmRleCA8IG1heCk7XG4gICAgcmV0dXJuIG1heDtcbn1cbmZ1bmN0aW9uIGVuZEluZGV4KHN0ciwgaW5kZXgsIG1pbikge1xuICAgIHdoaWxlIChpbmRleCA+IG1pbikge1xuICAgICAgICBjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoLS1pbmRleCk7XG4gICAgICAgIGlmIChjb2RlICE9PSAweDIwIC8qICAgKi8gJiYgY29kZSAhPT0gMHgwOSAvKiBcXHQgKi8pXG4gICAgICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICByZXR1cm4gbWluO1xufVxuLyoqXG4gKiBTZXJpYWxpemUgZGF0YSBpbnRvIGEgY29va2llIGhlYWRlci5cbiAqXG4gKiBTZXJpYWxpemUgYSBuYW1lIHZhbHVlIHBhaXIgaW50byBhIGNvb2tpZSBzdHJpbmcgc3VpdGFibGUgZm9yXG4gKiBodHRwIGhlYWRlcnMuIEFuIG9wdGlvbmFsIG9wdGlvbnMgb2JqZWN0IHNwZWNpZmllcyBjb29raWUgcGFyYW1ldGVycy5cbiAqXG4gKiBzZXJpYWxpemUoJ2ZvbycsICdiYXInLCB7IGh0dHBPbmx5OiB0cnVlIH0pXG4gKiAgID0+IFwiZm9vPWJhcjsgaHR0cE9ubHlcIlxuICovXG5mdW5jdGlvbiBzZXJpYWxpemUobmFtZSwgdmFsLCBvcHRpb25zKSB7XG4gICAgY29uc3QgZW5jID0gb3B0aW9ucz8uZW5jb2RlIHx8IGVuY29kZVVSSUNvbXBvbmVudDtcbiAgICBpZiAoIWNvb2tpZU5hbWVSZWdFeHAudGVzdChuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBhcmd1bWVudCBuYW1lIGlzIGludmFsaWQ6ICR7bmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBlbmModmFsKTtcbiAgICBpZiAoIWNvb2tpZVZhbHVlUmVnRXhwLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGFyZ3VtZW50IHZhbCBpcyBpbnZhbGlkOiAke3ZhbH1gKTtcbiAgICB9XG4gICAgbGV0IHN0ciA9IG5hbWUgKyBcIj1cIiArIHZhbHVlO1xuICAgIGlmICghb3B0aW9ucylcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICBpZiAob3B0aW9ucy5tYXhBZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIob3B0aW9ucy5tYXhBZ2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gbWF4QWdlIGlzIGludmFsaWQ6ICR7b3B0aW9ucy5tYXhBZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyICs9IFwiOyBNYXgtQWdlPVwiICsgb3B0aW9ucy5tYXhBZ2U7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmRvbWFpbikge1xuICAgICAgICBpZiAoIWRvbWFpblZhbHVlUmVnRXhwLnRlc3Qob3B0aW9ucy5kb21haW4pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gZG9tYWluIGlzIGludmFsaWQ6ICR7b3B0aW9ucy5kb21haW59YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyICs9IFwiOyBEb21haW49XCIgKyBvcHRpb25zLmRvbWFpbjtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMucGF0aCkge1xuICAgICAgICBpZiAoIXBhdGhWYWx1ZVJlZ0V4cC50ZXN0KG9wdGlvbnMucGF0aCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG9wdGlvbiBwYXRoIGlzIGludmFsaWQ6ICR7b3B0aW9ucy5wYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIHN0ciArPSBcIjsgUGF0aD1cIiArIG9wdGlvbnMucGF0aDtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZXhwaXJlcykge1xuICAgICAgICBpZiAoIWlzRGF0ZShvcHRpb25zLmV4cGlyZXMpIHx8XG4gICAgICAgICAgICAhTnVtYmVyLmlzRmluaXRlKG9wdGlvbnMuZXhwaXJlcy52YWx1ZU9mKCkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gZXhwaXJlcyBpcyBpbnZhbGlkOiAke29wdGlvbnMuZXhwaXJlc31gKTtcbiAgICAgICAgfVxuICAgICAgICBzdHIgKz0gXCI7IEV4cGlyZXM9XCIgKyBvcHRpb25zLmV4cGlyZXMudG9VVENTdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuaHR0cE9ubHkpIHtcbiAgICAgICAgc3RyICs9IFwiOyBIdHRwT25seVwiO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zZWN1cmUpIHtcbiAgICAgICAgc3RyICs9IFwiOyBTZWN1cmVcIjtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMucGFydGl0aW9uZWQpIHtcbiAgICAgICAgc3RyICs9IFwiOyBQYXJ0aXRpb25lZFwiO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5wcmlvcml0eSkge1xuICAgICAgICBjb25zdCBwcmlvcml0eSA9IHR5cGVvZiBvcHRpb25zLnByaW9yaXR5ID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICA/IG9wdGlvbnMucHJpb3JpdHkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIHN3aXRjaCAocHJpb3JpdHkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJsb3dcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCI7IFByaW9yaXR5PUxvd1wiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm1lZGl1bVwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgUHJpb3JpdHk9TWVkaXVtXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiaGlnaFwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgUHJpb3JpdHk9SGlnaFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gcHJpb3JpdHkgaXMgaW52YWxpZDogJHtvcHRpb25zLnByaW9yaXR5fWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNhbWVTaXRlKSB7XG4gICAgICAgIGNvbnN0IHNhbWVTaXRlID0gdHlwZW9mIG9wdGlvbnMuc2FtZVNpdGUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gb3B0aW9ucy5zYW1lU2l0ZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICA6IG9wdGlvbnMuc2FtZVNpdGU7XG4gICAgICAgIHN3aXRjaCAoc2FtZVNpdGUpIHtcbiAgICAgICAgICAgIGNhc2UgdHJ1ZTpcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpY3RcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCI7IFNhbWVTaXRlPVN0cmljdFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImxheFwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgU2FtZVNpdGU9TGF4XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibm9uZVwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgU2FtZVNpdGU9Tm9uZVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gc2FtZVNpdGUgaXMgaW52YWxpZDogJHtvcHRpb25zLnNhbWVTaXRlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG4vKipcbiAqIFVSTC1kZWNvZGUgc3RyaW5nIHZhbHVlLiBPcHRpbWl6ZWQgdG8gc2tpcCBuYXRpdmUgY2FsbCB3aGVuIG5vICUuXG4gKi9cbmZ1bmN0aW9uIGRlY29kZShzdHIpIHtcbiAgICBpZiAoc3RyLmluZGV4T2YoXCIlXCIpID09PSAtMSlcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHN0cik7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdmFsdWUgaXMgYSBEYXRlLlxuICovXG5mdW5jdGlvbiBpc0RhdGUodmFsKSB7XG4gICAgcmV0dXJuIF9fdG9TdHJpbmcuY2FsbCh2YWwpID09PSBcIltvYmplY3QgRGF0ZV1cIjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8qKlxuICogcmVhY3Qtcm91dGVyIHY3LjEuMFxuICpcbiAqIENvcHlyaWdodCAoYykgUmVtaXggU29mdHdhcmUgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRS5tZCBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqIEBsaWNlbnNlIE1JVFxuICovXG5cbi8vIGxpYi9yb3V0ZXIvaGlzdG9yeS50c1xudmFyIEFjdGlvbiA9IC8qIEBfX1BVUkVfXyAqLyAoKEFjdGlvbjIpID0+IHtcbiAgQWN0aW9uMltcIlBvcFwiXSA9IFwiUE9QXCI7XG4gIEFjdGlvbjJbXCJQdXNoXCJdID0gXCJQVVNIXCI7XG4gIEFjdGlvbjJbXCJSZXBsYWNlXCJdID0gXCJSRVBMQUNFXCI7XG4gIHJldHVybiBBY3Rpb24yO1xufSkoQWN0aW9uIHx8IHt9KTtcbnZhciBQb3BTdGF0ZUV2ZW50VHlwZSA9IFwicG9wc3RhdGVcIjtcbmZ1bmN0aW9uIGNyZWF0ZU1lbW9yeUhpc3Rvcnkob3B0aW9ucyA9IHt9KSB7XG4gIGxldCB7IGluaXRpYWxFbnRyaWVzID0gW1wiL1wiXSwgaW5pdGlhbEluZGV4LCB2NUNvbXBhdCA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICBsZXQgZW50cmllcztcbiAgZW50cmllcyA9IGluaXRpYWxFbnRyaWVzLm1hcChcbiAgICAoZW50cnksIGluZGV4MikgPT4gY3JlYXRlTWVtb3J5TG9jYXRpb24oXG4gICAgICBlbnRyeSxcbiAgICAgIHR5cGVvZiBlbnRyeSA9PT0gXCJzdHJpbmdcIiA/IG51bGwgOiBlbnRyeS5zdGF0ZSxcbiAgICAgIGluZGV4MiA9PT0gMCA/IFwiZGVmYXVsdFwiIDogdm9pZCAwXG4gICAgKVxuICApO1xuICBsZXQgaW5kZXggPSBjbGFtcEluZGV4KFxuICAgIGluaXRpYWxJbmRleCA9PSBudWxsID8gZW50cmllcy5sZW5ndGggLSAxIDogaW5pdGlhbEluZGV4XG4gICk7XG4gIGxldCBhY3Rpb24gPSBcIlBPUFwiIC8qIFBvcCAqLztcbiAgbGV0IGxpc3RlbmVyID0gbnVsbDtcbiAgZnVuY3Rpb24gY2xhbXBJbmRleChuKSB7XG4gICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KG4sIDApLCBlbnRyaWVzLmxlbmd0aCAtIDEpO1xuICB9XG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRMb2NhdGlvbigpIHtcbiAgICByZXR1cm4gZW50cmllc1tpbmRleF07XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlTWVtb3J5TG9jYXRpb24odG8sIHN0YXRlID0gbnVsbCwga2V5KSB7XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oXG4gICAgICBlbnRyaWVzID8gZ2V0Q3VycmVudExvY2F0aW9uKCkucGF0aG5hbWUgOiBcIi9cIixcbiAgICAgIHRvLFxuICAgICAgc3RhdGUsXG4gICAgICBrZXlcbiAgICApO1xuICAgIHdhcm5pbmcoXG4gICAgICBsb2NhdGlvbi5wYXRobmFtZS5jaGFyQXQoMCkgPT09IFwiL1wiLFxuICAgICAgYHJlbGF0aXZlIHBhdGhuYW1lcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBtZW1vcnkgaGlzdG9yeTogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgdG9cbiAgICAgICl9YFxuICAgICk7XG4gICAgcmV0dXJuIGxvY2F0aW9uO1xuICB9XG4gIGZ1bmN0aW9uIGNyZWF0ZUhyZWYyKHRvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHRvIDogY3JlYXRlUGF0aCh0byk7XG4gIH1cbiAgbGV0IGhpc3RvcnkgPSB7XG4gICAgZ2V0IGluZGV4KCkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH0sXG4gICAgZ2V0IGFjdGlvbigpIHtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfSxcbiAgICBnZXQgbG9jYXRpb24oKSB7XG4gICAgICByZXR1cm4gZ2V0Q3VycmVudExvY2F0aW9uKCk7XG4gICAgfSxcbiAgICBjcmVhdGVIcmVmOiBjcmVhdGVIcmVmMixcbiAgICBjcmVhdGVVUkwodG8pIHtcbiAgICAgIHJldHVybiBuZXcgVVJMKGNyZWF0ZUhyZWYyKHRvKSwgXCJodHRwOi8vbG9jYWxob3N0XCIpO1xuICAgIH0sXG4gICAgZW5jb2RlTG9jYXRpb24odG8pIHtcbiAgICAgIGxldCBwYXRoID0gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gcGFyc2VQYXRoKHRvKSA6IHRvO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aG5hbWU6IHBhdGgucGF0aG5hbWUgfHwgXCJcIixcbiAgICAgICAgc2VhcmNoOiBwYXRoLnNlYXJjaCB8fCBcIlwiLFxuICAgICAgICBoYXNoOiBwYXRoLmhhc2ggfHwgXCJcIlxuICAgICAgfTtcbiAgICB9LFxuICAgIHB1c2godG8sIHN0YXRlKSB7XG4gICAgICBhY3Rpb24gPSBcIlBVU0hcIiAvKiBQdXNoICovO1xuICAgICAgbGV0IG5leHRMb2NhdGlvbiA9IGNyZWF0ZU1lbW9yeUxvY2F0aW9uKHRvLCBzdGF0ZSk7XG4gICAgICBpbmRleCArPSAxO1xuICAgICAgZW50cmllcy5zcGxpY2UoaW5kZXgsIGVudHJpZXMubGVuZ3RoLCBuZXh0TG9jYXRpb24pO1xuICAgICAgaWYgKHY1Q29tcGF0ICYmIGxpc3RlbmVyKSB7XG4gICAgICAgIGxpc3RlbmVyKHsgYWN0aW9uLCBsb2NhdGlvbjogbmV4dExvY2F0aW9uLCBkZWx0YTogMSB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2UodG8sIHN0YXRlKSB7XG4gICAgICBhY3Rpb24gPSBcIlJFUExBQ0VcIiAvKiBSZXBsYWNlICovO1xuICAgICAgbGV0IG5leHRMb2NhdGlvbiA9IGNyZWF0ZU1lbW9yeUxvY2F0aW9uKHRvLCBzdGF0ZSk7XG4gICAgICBlbnRyaWVzW2luZGV4XSA9IG5leHRMb2NhdGlvbjtcbiAgICAgIGlmICh2NUNvbXBhdCAmJiBsaXN0ZW5lcikge1xuICAgICAgICBsaXN0ZW5lcih7IGFjdGlvbiwgbG9jYXRpb246IG5leHRMb2NhdGlvbiwgZGVsdGE6IDAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBnbyhkZWx0YSkge1xuICAgICAgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gICAgICBsZXQgbmV4dEluZGV4ID0gY2xhbXBJbmRleChpbmRleCArIGRlbHRhKTtcbiAgICAgIGxldCBuZXh0TG9jYXRpb24gPSBlbnRyaWVzW25leHRJbmRleF07XG4gICAgICBpbmRleCA9IG5leHRJbmRleDtcbiAgICAgIGlmIChsaXN0ZW5lcikge1xuICAgICAgICBsaXN0ZW5lcih7IGFjdGlvbiwgbG9jYXRpb246IG5leHRMb2NhdGlvbiwgZGVsdGEgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBsaXN0ZW4oZm4pIHtcbiAgICAgIGxpc3RlbmVyID0gZm47XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBsaXN0ZW5lciA9IG51bGw7XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGhpc3Rvcnk7XG59XG5mdW5jdGlvbiBjcmVhdGVCcm93c2VySGlzdG9yeShvcHRpb25zID0ge30pIHtcbiAgZnVuY3Rpb24gY3JlYXRlQnJvd3NlckxvY2F0aW9uKHdpbmRvdzIsIGdsb2JhbEhpc3RvcnkpIHtcbiAgICBsZXQgeyBwYXRobmFtZSwgc2VhcmNoLCBoYXNoIH0gPSB3aW5kb3cyLmxvY2F0aW9uO1xuICAgIHJldHVybiBjcmVhdGVMb2NhdGlvbihcbiAgICAgIFwiXCIsXG4gICAgICB7IHBhdGhuYW1lLCBzZWFyY2gsIGhhc2ggfSxcbiAgICAgIC8vIHN0YXRlIGRlZmF1bHRzIHRvIGBudWxsYCBiZWNhdXNlIGB3aW5kb3cuaGlzdG9yeS5zdGF0ZWAgZG9lc1xuICAgICAgZ2xvYmFsSGlzdG9yeS5zdGF0ZSAmJiBnbG9iYWxIaXN0b3J5LnN0YXRlLnVzciB8fCBudWxsLFxuICAgICAgZ2xvYmFsSGlzdG9yeS5zdGF0ZSAmJiBnbG9iYWxIaXN0b3J5LnN0YXRlLmtleSB8fCBcImRlZmF1bHRcIlxuICAgICk7XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlQnJvd3NlckhyZWYod2luZG93MiwgdG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gdG8gOiBjcmVhdGVQYXRoKHRvKTtcbiAgfVxuICByZXR1cm4gZ2V0VXJsQmFzZWRIaXN0b3J5KFxuICAgIGNyZWF0ZUJyb3dzZXJMb2NhdGlvbixcbiAgICBjcmVhdGVCcm93c2VySHJlZixcbiAgICBudWxsLFxuICAgIG9wdGlvbnNcbiAgKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUhhc2hIaXN0b3J5KG9wdGlvbnMgPSB7fSkge1xuICBmdW5jdGlvbiBjcmVhdGVIYXNoTG9jYXRpb24od2luZG93MiwgZ2xvYmFsSGlzdG9yeSkge1xuICAgIGxldCB7XG4gICAgICBwYXRobmFtZSA9IFwiL1wiLFxuICAgICAgc2VhcmNoID0gXCJcIixcbiAgICAgIGhhc2ggPSBcIlwiXG4gICAgfSA9IHBhcnNlUGF0aCh3aW5kb3cyLmxvY2F0aW9uLmhhc2guc3Vic3RyaW5nKDEpKTtcbiAgICBpZiAoIXBhdGhuYW1lLnN0YXJ0c1dpdGgoXCIvXCIpICYmICFwYXRobmFtZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgcGF0aG5hbWUgPSBcIi9cIiArIHBhdGhuYW1lO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlTG9jYXRpb24oXG4gICAgICBcIlwiLFxuICAgICAgeyBwYXRobmFtZSwgc2VhcmNoLCBoYXNoIH0sXG4gICAgICAvLyBzdGF0ZSBkZWZhdWx0cyB0byBgbnVsbGAgYmVjYXVzZSBgd2luZG93Lmhpc3Rvcnkuc3RhdGVgIGRvZXNcbiAgICAgIGdsb2JhbEhpc3Rvcnkuc3RhdGUgJiYgZ2xvYmFsSGlzdG9yeS5zdGF0ZS51c3IgfHwgbnVsbCxcbiAgICAgIGdsb2JhbEhpc3Rvcnkuc3RhdGUgJiYgZ2xvYmFsSGlzdG9yeS5zdGF0ZS5rZXkgfHwgXCJkZWZhdWx0XCJcbiAgICApO1xuICB9XG4gIGZ1bmN0aW9uIGNyZWF0ZUhhc2hIcmVmKHdpbmRvdzIsIHRvKSB7XG4gICAgbGV0IGJhc2UgPSB3aW5kb3cyLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJiYXNlXCIpO1xuICAgIGxldCBocmVmID0gXCJcIjtcbiAgICBpZiAoYmFzZSAmJiBiYXNlLmdldEF0dHJpYnV0ZShcImhyZWZcIikpIHtcbiAgICAgIGxldCB1cmwgPSB3aW5kb3cyLmxvY2F0aW9uLmhyZWY7XG4gICAgICBsZXQgaGFzaEluZGV4ID0gdXJsLmluZGV4T2YoXCIjXCIpO1xuICAgICAgaHJlZiA9IGhhc2hJbmRleCA9PT0gLTEgPyB1cmwgOiB1cmwuc2xpY2UoMCwgaGFzaEluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIGhyZWYgKyBcIiNcIiArICh0eXBlb2YgdG8gPT09IFwic3RyaW5nXCIgPyB0byA6IGNyZWF0ZVBhdGgodG8pKTtcbiAgfVxuICBmdW5jdGlvbiB2YWxpZGF0ZUhhc2hMb2NhdGlvbihsb2NhdGlvbiwgdG8pIHtcbiAgICB3YXJuaW5nKFxuICAgICAgbG9jYXRpb24ucGF0aG5hbWUuY2hhckF0KDApID09PSBcIi9cIixcbiAgICAgIGByZWxhdGl2ZSBwYXRobmFtZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gaGFzaCBoaXN0b3J5LnB1c2goJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgdG9cbiAgICAgICl9KWBcbiAgICApO1xuICB9XG4gIHJldHVybiBnZXRVcmxCYXNlZEhpc3RvcnkoXG4gICAgY3JlYXRlSGFzaExvY2F0aW9uLFxuICAgIGNyZWF0ZUhhc2hIcmVmLFxuICAgIHZhbGlkYXRlSGFzaExvY2F0aW9uLFxuICAgIG9wdGlvbnNcbiAgKTtcbn1cbmZ1bmN0aW9uIGludmFyaWFudCh2YWx1ZSwgbWVzc2FnZSkge1xuICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuZnVuY3Rpb24gd2FybmluZyhjb25kLCBtZXNzYWdlKSB7XG4gIGlmICghY29uZCkge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIikgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIHRyeSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlS2V5KCkge1xuICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDEwKTtcbn1cbmZ1bmN0aW9uIGdldEhpc3RvcnlTdGF0ZShsb2NhdGlvbiwgaW5kZXgpIHtcbiAgcmV0dXJuIHtcbiAgICB1c3I6IGxvY2F0aW9uLnN0YXRlLFxuICAgIGtleTogbG9jYXRpb24ua2V5LFxuICAgIGlkeDogaW5kZXhcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUxvY2F0aW9uKGN1cnJlbnQsIHRvLCBzdGF0ZSA9IG51bGwsIGtleSkge1xuICBsZXQgbG9jYXRpb24gPSB7XG4gICAgcGF0aG5hbWU6IHR5cGVvZiBjdXJyZW50ID09PSBcInN0cmluZ1wiID8gY3VycmVudCA6IGN1cnJlbnQucGF0aG5hbWUsXG4gICAgc2VhcmNoOiBcIlwiLFxuICAgIGhhc2g6IFwiXCIsXG4gICAgLi4udHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gcGFyc2VQYXRoKHRvKSA6IHRvLFxuICAgIHN0YXRlLFxuICAgIC8vIFRPRE86IFRoaXMgY291bGQgYmUgY2xlYW5lZCB1cC4gIHB1c2gvcmVwbGFjZSBzaG91bGQgcHJvYmFibHkganVzdCB0YWtlXG4gICAgLy8gZnVsbCBMb2NhdGlvbnMgbm93IGFuZCBhdm9pZCB0aGUgbmVlZCB0byBydW4gdGhyb3VnaCB0aGlzIGZsb3cgYXQgYWxsXG4gICAgLy8gQnV0IHRoYXQncyBhIHByZXR0eSBiaWcgcmVmYWN0b3IgdG8gdGhlIGN1cnJlbnQgdGVzdCBzdWl0ZSBzbyBnb2luZyB0b1xuICAgIC8vIGtlZXAgYXMgaXMgZm9yIHRoZSB0aW1lIGJlaW5nIGFuZCBqdXN0IGxldCBhbnkgaW5jb21pbmcga2V5cyB0YWtlIHByZWNlZGVuY2VcbiAgICBrZXk6IHRvICYmIHRvLmtleSB8fCBrZXkgfHwgY3JlYXRlS2V5KClcbiAgfTtcbiAgcmV0dXJuIGxvY2F0aW9uO1xufVxuZnVuY3Rpb24gY3JlYXRlUGF0aCh7XG4gIHBhdGhuYW1lID0gXCIvXCIsXG4gIHNlYXJjaCA9IFwiXCIsXG4gIGhhc2ggPSBcIlwiXG59KSB7XG4gIGlmIChzZWFyY2ggJiYgc2VhcmNoICE9PSBcIj9cIilcbiAgICBwYXRobmFtZSArPSBzZWFyY2guY2hhckF0KDApID09PSBcIj9cIiA/IHNlYXJjaCA6IFwiP1wiICsgc2VhcmNoO1xuICBpZiAoaGFzaCAmJiBoYXNoICE9PSBcIiNcIilcbiAgICBwYXRobmFtZSArPSBoYXNoLmNoYXJBdCgwKSA9PT0gXCIjXCIgPyBoYXNoIDogXCIjXCIgKyBoYXNoO1xuICByZXR1cm4gcGF0aG5hbWU7XG59XG5mdW5jdGlvbiBwYXJzZVBhdGgocGF0aCkge1xuICBsZXQgcGFyc2VkUGF0aCA9IHt9O1xuICBpZiAocGF0aCkge1xuICAgIGxldCBoYXNoSW5kZXggPSBwYXRoLmluZGV4T2YoXCIjXCIpO1xuICAgIGlmIChoYXNoSW5kZXggPj0gMCkge1xuICAgICAgcGFyc2VkUGF0aC5oYXNoID0gcGF0aC5zdWJzdHJpbmcoaGFzaEluZGV4KTtcbiAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBoYXNoSW5kZXgpO1xuICAgIH1cbiAgICBsZXQgc2VhcmNoSW5kZXggPSBwYXRoLmluZGV4T2YoXCI/XCIpO1xuICAgIGlmIChzZWFyY2hJbmRleCA+PSAwKSB7XG4gICAgICBwYXJzZWRQYXRoLnNlYXJjaCA9IHBhdGguc3Vic3RyaW5nKHNlYXJjaEluZGV4KTtcbiAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBzZWFyY2hJbmRleCk7XG4gICAgfVxuICAgIGlmIChwYXRoKSB7XG4gICAgICBwYXJzZWRQYXRoLnBhdGhuYW1lID0gcGF0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnNlZFBhdGg7XG59XG5mdW5jdGlvbiBnZXRVcmxCYXNlZEhpc3RvcnkoZ2V0TG9jYXRpb24sIGNyZWF0ZUhyZWYyLCB2YWxpZGF0ZUxvY2F0aW9uLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IHsgd2luZG93OiB3aW5kb3cyID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcsIHY1Q29tcGF0ID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGxldCBnbG9iYWxIaXN0b3J5ID0gd2luZG93Mi5oaXN0b3J5O1xuICBsZXQgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gIGxldCBsaXN0ZW5lciA9IG51bGw7XG4gIGxldCBpbmRleCA9IGdldEluZGV4KCk7XG4gIGlmIChpbmRleCA9PSBudWxsKSB7XG4gICAgaW5kZXggPSAwO1xuICAgIGdsb2JhbEhpc3RvcnkucmVwbGFjZVN0YXRlKHsgLi4uZ2xvYmFsSGlzdG9yeS5zdGF0ZSwgaWR4OiBpbmRleCB9LCBcIlwiKTtcbiAgfVxuICBmdW5jdGlvbiBnZXRJbmRleCgpIHtcbiAgICBsZXQgc3RhdGUgPSBnbG9iYWxIaXN0b3J5LnN0YXRlIHx8IHsgaWR4OiBudWxsIH07XG4gICAgcmV0dXJuIHN0YXRlLmlkeDtcbiAgfVxuICBmdW5jdGlvbiBoYW5kbGVQb3AoKSB7XG4gICAgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gICAgbGV0IG5leHRJbmRleCA9IGdldEluZGV4KCk7XG4gICAgbGV0IGRlbHRhID0gbmV4dEluZGV4ID09IG51bGwgPyBudWxsIDogbmV4dEluZGV4IC0gaW5kZXg7XG4gICAgaW5kZXggPSBuZXh0SW5kZXg7XG4gICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICBsaXN0ZW5lcih7IGFjdGlvbiwgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb24sIGRlbHRhIH0pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBwdXNoKHRvLCBzdGF0ZSkge1xuICAgIGFjdGlvbiA9IFwiUFVTSFwiIC8qIFB1c2ggKi87XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oaGlzdG9yeS5sb2NhdGlvbiwgdG8sIHN0YXRlKTtcbiAgICBpZiAodmFsaWRhdGVMb2NhdGlvbikgdmFsaWRhdGVMb2NhdGlvbihsb2NhdGlvbiwgdG8pO1xuICAgIGluZGV4ID0gZ2V0SW5kZXgoKSArIDE7XG4gICAgbGV0IGhpc3RvcnlTdGF0ZSA9IGdldEhpc3RvcnlTdGF0ZShsb2NhdGlvbiwgaW5kZXgpO1xuICAgIGxldCB1cmwgPSBoaXN0b3J5LmNyZWF0ZUhyZWYobG9jYXRpb24pO1xuICAgIHRyeSB7XG4gICAgICBnbG9iYWxIaXN0b3J5LnB1c2hTdGF0ZShoaXN0b3J5U3RhdGUsIFwiXCIsIHVybCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiAmJiBlcnJvci5uYW1lID09PSBcIkRhdGFDbG9uZUVycm9yXCIpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICB3aW5kb3cyLmxvY2F0aW9uLmFzc2lnbih1cmwpO1xuICAgIH1cbiAgICBpZiAodjVDb21wYXQgJiYgbGlzdGVuZXIpIHtcbiAgICAgIGxpc3RlbmVyKHsgYWN0aW9uLCBsb2NhdGlvbjogaGlzdG9yeS5sb2NhdGlvbiwgZGVsdGE6IDEgfSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlcGxhY2UyKHRvLCBzdGF0ZSkge1xuICAgIGFjdGlvbiA9IFwiUkVQTEFDRVwiIC8qIFJlcGxhY2UgKi87XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oaGlzdG9yeS5sb2NhdGlvbiwgdG8sIHN0YXRlKTtcbiAgICBpZiAodmFsaWRhdGVMb2NhdGlvbikgdmFsaWRhdGVMb2NhdGlvbihsb2NhdGlvbiwgdG8pO1xuICAgIGluZGV4ID0gZ2V0SW5kZXgoKTtcbiAgICBsZXQgaGlzdG9yeVN0YXRlID0gZ2V0SGlzdG9yeVN0YXRlKGxvY2F0aW9uLCBpbmRleCk7XG4gICAgbGV0IHVybCA9IGhpc3RvcnkuY3JlYXRlSHJlZihsb2NhdGlvbik7XG4gICAgZ2xvYmFsSGlzdG9yeS5yZXBsYWNlU3RhdGUoaGlzdG9yeVN0YXRlLCBcIlwiLCB1cmwpO1xuICAgIGlmICh2NUNvbXBhdCAmJiBsaXN0ZW5lcikge1xuICAgICAgbGlzdGVuZXIoeyBhY3Rpb24sIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uLCBkZWx0YTogMCB9KTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlVVJMKHRvKSB7XG4gICAgbGV0IGJhc2UgPSB3aW5kb3cyLmxvY2F0aW9uLm9yaWdpbiAhPT0gXCJudWxsXCIgPyB3aW5kb3cyLmxvY2F0aW9uLm9yaWdpbiA6IHdpbmRvdzIubG9jYXRpb24uaHJlZjtcbiAgICBsZXQgaHJlZiA9IHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHRvIDogY3JlYXRlUGF0aCh0byk7XG4gICAgaHJlZiA9IGhyZWYucmVwbGFjZSgvICQvLCBcIiUyMFwiKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICBiYXNlLFxuICAgICAgYE5vIHdpbmRvdy5sb2NhdGlvbi4ob3JpZ2lufGhyZWYpIGF2YWlsYWJsZSB0byBjcmVhdGUgVVJMIGZvciBocmVmOiAke2hyZWZ9YFxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBVUkwoaHJlZiwgYmFzZSk7XG4gIH1cbiAgbGV0IGhpc3RvcnkgPSB7XG4gICAgZ2V0IGFjdGlvbigpIHtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfSxcbiAgICBnZXQgbG9jYXRpb24oKSB7XG4gICAgICByZXR1cm4gZ2V0TG9jYXRpb24od2luZG93MiwgZ2xvYmFsSGlzdG9yeSk7XG4gICAgfSxcbiAgICBsaXN0ZW4oZm4pIHtcbiAgICAgIGlmIChsaXN0ZW5lcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGhpc3Rvcnkgb25seSBhY2NlcHRzIG9uZSBhY3RpdmUgbGlzdGVuZXJcIik7XG4gICAgICB9XG4gICAgICB3aW5kb3cyLmFkZEV2ZW50TGlzdGVuZXIoUG9wU3RhdGVFdmVudFR5cGUsIGhhbmRsZVBvcCk7XG4gICAgICBsaXN0ZW5lciA9IGZuO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93Mi5yZW1vdmVFdmVudExpc3RlbmVyKFBvcFN0YXRlRXZlbnRUeXBlLCBoYW5kbGVQb3ApO1xuICAgICAgICBsaXN0ZW5lciA9IG51bGw7XG4gICAgICB9O1xuICAgIH0sXG4gICAgY3JlYXRlSHJlZih0bykge1xuICAgICAgcmV0dXJuIGNyZWF0ZUhyZWYyKHdpbmRvdzIsIHRvKTtcbiAgICB9LFxuICAgIGNyZWF0ZVVSTCxcbiAgICBlbmNvZGVMb2NhdGlvbih0bykge1xuICAgICAgbGV0IHVybCA9IGNyZWF0ZVVSTCh0byk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRobmFtZTogdXJsLnBhdGhuYW1lLFxuICAgICAgICBzZWFyY2g6IHVybC5zZWFyY2gsXG4gICAgICAgIGhhc2g6IHVybC5oYXNoXG4gICAgICB9O1xuICAgIH0sXG4gICAgcHVzaCxcbiAgICByZXBsYWNlOiByZXBsYWNlMixcbiAgICBnbyhuKSB7XG4gICAgICByZXR1cm4gZ2xvYmFsSGlzdG9yeS5nbyhuKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBoaXN0b3J5O1xufVxuXG4vLyBsaWIvcm91dGVyL3V0aWxzLnRzXG52YXIgaW1tdXRhYmxlUm91dGVLZXlzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1xuICBcImxhenlcIixcbiAgXCJjYXNlU2Vuc2l0aXZlXCIsXG4gIFwicGF0aFwiLFxuICBcImlkXCIsXG4gIFwiaW5kZXhcIixcbiAgXCJjaGlsZHJlblwiXG5dKTtcbmZ1bmN0aW9uIGlzSW5kZXhSb3V0ZShyb3V0ZSkge1xuICByZXR1cm4gcm91dGUuaW5kZXggPT09IHRydWU7XG59XG5mdW5jdGlvbiBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKHJvdXRlcywgbWFwUm91dGVQcm9wZXJ0aWVzMiwgcGFyZW50UGF0aCA9IFtdLCBtYW5pZmVzdCA9IHt9KSB7XG4gIHJldHVybiByb3V0ZXMubWFwKChyb3V0ZSwgaW5kZXgpID0+IHtcbiAgICBsZXQgdHJlZVBhdGggPSBbLi4ucGFyZW50UGF0aCwgU3RyaW5nKGluZGV4KV07XG4gICAgbGV0IGlkID0gdHlwZW9mIHJvdXRlLmlkID09PSBcInN0cmluZ1wiID8gcm91dGUuaWQgOiB0cmVlUGF0aC5qb2luKFwiLVwiKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICByb3V0ZS5pbmRleCAhPT0gdHJ1ZSB8fCAhcm91dGUuY2hpbGRyZW4sXG4gICAgICBgQ2Fubm90IHNwZWNpZnkgY2hpbGRyZW4gb24gYW4gaW5kZXggcm91dGVgXG4gICAgKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICAhbWFuaWZlc3RbaWRdLFxuICAgICAgYEZvdW5kIGEgcm91dGUgaWQgY29sbGlzaW9uIG9uIGlkIFwiJHtpZH1cIi4gIFJvdXRlIGlkJ3MgbXVzdCBiZSBnbG9iYWxseSB1bmlxdWUgd2l0aGluIERhdGEgUm91dGVyIHVzYWdlc2BcbiAgICApO1xuICAgIGlmIChpc0luZGV4Um91dGUocm91dGUpKSB7XG4gICAgICBsZXQgaW5kZXhSb3V0ZSA9IHtcbiAgICAgICAgLi4ucm91dGUsXG4gICAgICAgIC4uLm1hcFJvdXRlUHJvcGVydGllczIocm91dGUpLFxuICAgICAgICBpZFxuICAgICAgfTtcbiAgICAgIG1hbmlmZXN0W2lkXSA9IGluZGV4Um91dGU7XG4gICAgICByZXR1cm4gaW5kZXhSb3V0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHBhdGhPckxheW91dFJvdXRlID0ge1xuICAgICAgICAuLi5yb3V0ZSxcbiAgICAgICAgLi4ubWFwUm91dGVQcm9wZXJ0aWVzMihyb3V0ZSksXG4gICAgICAgIGlkLFxuICAgICAgICBjaGlsZHJlbjogdm9pZCAwXG4gICAgICB9O1xuICAgICAgbWFuaWZlc3RbaWRdID0gcGF0aE9yTGF5b3V0Um91dGU7XG4gICAgICBpZiAocm91dGUuY2hpbGRyZW4pIHtcbiAgICAgICAgcGF0aE9yTGF5b3V0Um91dGUuY2hpbGRyZW4gPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgICAgICAgIHJvdXRlLmNoaWxkcmVuLFxuICAgICAgICAgIG1hcFJvdXRlUHJvcGVydGllczIsXG4gICAgICAgICAgdHJlZVBhdGgsXG4gICAgICAgICAgbWFuaWZlc3RcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXRoT3JMYXlvdXRSb3V0ZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gbWF0Y2hSb3V0ZXMocm91dGVzLCBsb2NhdGlvbkFyZywgYmFzZW5hbWUgPSBcIi9cIikge1xuICByZXR1cm4gbWF0Y2hSb3V0ZXNJbXBsKHJvdXRlcywgbG9jYXRpb25BcmcsIGJhc2VuYW1lLCBmYWxzZSk7XG59XG5mdW5jdGlvbiBtYXRjaFJvdXRlc0ltcGwocm91dGVzLCBsb2NhdGlvbkFyZywgYmFzZW5hbWUsIGFsbG93UGFydGlhbCkge1xuICBsZXQgbG9jYXRpb24gPSB0eXBlb2YgbG9jYXRpb25BcmcgPT09IFwic3RyaW5nXCIgPyBwYXJzZVBhdGgobG9jYXRpb25BcmcpIDogbG9jYXRpb25Bcmc7XG4gIGxldCBwYXRobmFtZSA9IHN0cmlwQmFzZW5hbWUobG9jYXRpb24ucGF0aG5hbWUgfHwgXCIvXCIsIGJhc2VuYW1lKTtcbiAgaWYgKHBhdGhuYW1lID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBsZXQgYnJhbmNoZXMgPSBmbGF0dGVuUm91dGVzKHJvdXRlcyk7XG4gIHJhbmtSb3V0ZUJyYW5jaGVzKGJyYW5jaGVzKTtcbiAgbGV0IG1hdGNoZXMgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgbWF0Y2hlcyA9PSBudWxsICYmIGkgPCBicmFuY2hlcy5sZW5ndGg7ICsraSkge1xuICAgIGxldCBkZWNvZGVkID0gZGVjb2RlUGF0aChwYXRobmFtZSk7XG4gICAgbWF0Y2hlcyA9IG1hdGNoUm91dGVCcmFuY2goXG4gICAgICBicmFuY2hlc1tpXSxcbiAgICAgIGRlY29kZWQsXG4gICAgICBhbGxvd1BhcnRpYWxcbiAgICApO1xuICB9XG4gIHJldHVybiBtYXRjaGVzO1xufVxuZnVuY3Rpb24gY29udmVydFJvdXRlTWF0Y2hUb1VpTWF0Y2gobWF0Y2gsIGxvYWRlckRhdGEpIHtcbiAgbGV0IHsgcm91dGUsIHBhdGhuYW1lLCBwYXJhbXMgfSA9IG1hdGNoO1xuICByZXR1cm4ge1xuICAgIGlkOiByb3V0ZS5pZCxcbiAgICBwYXRobmFtZSxcbiAgICBwYXJhbXMsXG4gICAgZGF0YTogbG9hZGVyRGF0YVtyb3V0ZS5pZF0sXG4gICAgaGFuZGxlOiByb3V0ZS5oYW5kbGVcbiAgfTtcbn1cbmZ1bmN0aW9uIGZsYXR0ZW5Sb3V0ZXMocm91dGVzLCBicmFuY2hlcyA9IFtdLCBwYXJlbnRzTWV0YSA9IFtdLCBwYXJlbnRQYXRoID0gXCJcIikge1xuICBsZXQgZmxhdHRlblJvdXRlID0gKHJvdXRlLCBpbmRleCwgcmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgbGV0IG1ldGEgPSB7XG4gICAgICByZWxhdGl2ZVBhdGg6IHJlbGF0aXZlUGF0aCA9PT0gdm9pZCAwID8gcm91dGUucGF0aCB8fCBcIlwiIDogcmVsYXRpdmVQYXRoLFxuICAgICAgY2FzZVNlbnNpdGl2ZTogcm91dGUuY2FzZVNlbnNpdGl2ZSA9PT0gdHJ1ZSxcbiAgICAgIGNoaWxkcmVuSW5kZXg6IGluZGV4LFxuICAgICAgcm91dGVcbiAgICB9O1xuICAgIGlmIChtZXRhLnJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgaW52YXJpYW50KFxuICAgICAgICBtZXRhLnJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKHBhcmVudFBhdGgpLFxuICAgICAgICBgQWJzb2x1dGUgcm91dGUgcGF0aCBcIiR7bWV0YS5yZWxhdGl2ZVBhdGh9XCIgbmVzdGVkIHVuZGVyIHBhdGggXCIke3BhcmVudFBhdGh9XCIgaXMgbm90IHZhbGlkLiBBbiBhYnNvbHV0ZSBjaGlsZCByb3V0ZSBwYXRoIG11c3Qgc3RhcnQgd2l0aCB0aGUgY29tYmluZWQgcGF0aCBvZiBhbGwgaXRzIHBhcmVudCByb3V0ZXMuYFxuICAgICAgKTtcbiAgICAgIG1ldGEucmVsYXRpdmVQYXRoID0gbWV0YS5yZWxhdGl2ZVBhdGguc2xpY2UocGFyZW50UGF0aC5sZW5ndGgpO1xuICAgIH1cbiAgICBsZXQgcGF0aCA9IGpvaW5QYXRocyhbcGFyZW50UGF0aCwgbWV0YS5yZWxhdGl2ZVBhdGhdKTtcbiAgICBsZXQgcm91dGVzTWV0YSA9IHBhcmVudHNNZXRhLmNvbmNhdChtZXRhKTtcbiAgICBpZiAocm91dGUuY2hpbGRyZW4gJiYgcm91dGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgaW52YXJpYW50KFxuICAgICAgICAvLyBPdXIgdHlwZXMga25vdyBiZXR0ZXIsIGJ1dCBydW50aW1lIEpTIG1heSBub3QhXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgcm91dGUuaW5kZXggIT09IHRydWUsXG4gICAgICAgIGBJbmRleCByb3V0ZXMgbXVzdCBub3QgaGF2ZSBjaGlsZCByb3V0ZXMuIFBsZWFzZSByZW1vdmUgYWxsIGNoaWxkIHJvdXRlcyBmcm9tIHJvdXRlIHBhdGggXCIke3BhdGh9XCIuYFxuICAgICAgKTtcbiAgICAgIGZsYXR0ZW5Sb3V0ZXMocm91dGUuY2hpbGRyZW4sIGJyYW5jaGVzLCByb3V0ZXNNZXRhLCBwYXRoKTtcbiAgICB9XG4gICAgaWYgKHJvdXRlLnBhdGggPT0gbnVsbCAmJiAhcm91dGUuaW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYnJhbmNoZXMucHVzaCh7XG4gICAgICBwYXRoLFxuICAgICAgc2NvcmU6IGNvbXB1dGVTY29yZShwYXRoLCByb3V0ZS5pbmRleCksXG4gICAgICByb3V0ZXNNZXRhXG4gICAgfSk7XG4gIH07XG4gIHJvdXRlcy5mb3JFYWNoKChyb3V0ZSwgaW5kZXgpID0+IHtcbiAgICBpZiAocm91dGUucGF0aCA9PT0gXCJcIiB8fCAhcm91dGUucGF0aD8uaW5jbHVkZXMoXCI/XCIpKSB7XG4gICAgICBmbGF0dGVuUm91dGUocm91dGUsIGluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgZXhwbG9kZWQgb2YgZXhwbG9kZU9wdGlvbmFsU2VnbWVudHMocm91dGUucGF0aCkpIHtcbiAgICAgICAgZmxhdHRlblJvdXRlKHJvdXRlLCBpbmRleCwgZXhwbG9kZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBicmFuY2hlcztcbn1cbmZ1bmN0aW9uIGV4cGxvZGVPcHRpb25hbFNlZ21lbnRzKHBhdGgpIHtcbiAgbGV0IHNlZ21lbnRzID0gcGF0aC5zcGxpdChcIi9cIik7XG4gIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgbGV0IFtmaXJzdCwgLi4ucmVzdF0gPSBzZWdtZW50cztcbiAgbGV0IGlzT3B0aW9uYWwgPSBmaXJzdC5lbmRzV2l0aChcIj9cIik7XG4gIGxldCByZXF1aXJlZCA9IGZpcnN0LnJlcGxhY2UoL1xcPyQvLCBcIlwiKTtcbiAgaWYgKHJlc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGlzT3B0aW9uYWwgPyBbcmVxdWlyZWQsIFwiXCJdIDogW3JlcXVpcmVkXTtcbiAgfVxuICBsZXQgcmVzdEV4cGxvZGVkID0gZXhwbG9kZU9wdGlvbmFsU2VnbWVudHMocmVzdC5qb2luKFwiL1wiKSk7XG4gIGxldCByZXN1bHQgPSBbXTtcbiAgcmVzdWx0LnB1c2goXG4gICAgLi4ucmVzdEV4cGxvZGVkLm1hcChcbiAgICAgIChzdWJwYXRoKSA9PiBzdWJwYXRoID09PSBcIlwiID8gcmVxdWlyZWQgOiBbcmVxdWlyZWQsIHN1YnBhdGhdLmpvaW4oXCIvXCIpXG4gICAgKVxuICApO1xuICBpZiAoaXNPcHRpb25hbCkge1xuICAgIHJlc3VsdC5wdXNoKC4uLnJlc3RFeHBsb2RlZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5tYXAoXG4gICAgKGV4cGxvZGVkKSA9PiBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpICYmIGV4cGxvZGVkID09PSBcIlwiID8gXCIvXCIgOiBleHBsb2RlZFxuICApO1xufVxuZnVuY3Rpb24gcmFua1JvdXRlQnJhbmNoZXMoYnJhbmNoZXMpIHtcbiAgYnJhbmNoZXMuc29ydChcbiAgICAoYSwgYikgPT4gYS5zY29yZSAhPT0gYi5zY29yZSA/IGIuc2NvcmUgLSBhLnNjb3JlIDogY29tcGFyZUluZGV4ZXMoXG4gICAgICBhLnJvdXRlc01ldGEubWFwKChtZXRhKSA9PiBtZXRhLmNoaWxkcmVuSW5kZXgpLFxuICAgICAgYi5yb3V0ZXNNZXRhLm1hcCgobWV0YSkgPT4gbWV0YS5jaGlsZHJlbkluZGV4KVxuICAgIClcbiAgKTtcbn1cbnZhciBwYXJhbVJlID0gL146W1xcdy1dKyQvO1xudmFyIGR5bmFtaWNTZWdtZW50VmFsdWUgPSAzO1xudmFyIGluZGV4Um91dGVWYWx1ZSA9IDI7XG52YXIgZW1wdHlTZWdtZW50VmFsdWUgPSAxO1xudmFyIHN0YXRpY1NlZ21lbnRWYWx1ZSA9IDEwO1xudmFyIHNwbGF0UGVuYWx0eSA9IC0yO1xudmFyIGlzU3BsYXQgPSAocykgPT4gcyA9PT0gXCIqXCI7XG5mdW5jdGlvbiBjb21wdXRlU2NvcmUocGF0aCwgaW5kZXgpIHtcbiAgbGV0IHNlZ21lbnRzID0gcGF0aC5zcGxpdChcIi9cIik7XG4gIGxldCBpbml0aWFsU2NvcmUgPSBzZWdtZW50cy5sZW5ndGg7XG4gIGlmIChzZWdtZW50cy5zb21lKGlzU3BsYXQpKSB7XG4gICAgaW5pdGlhbFNjb3JlICs9IHNwbGF0UGVuYWx0eTtcbiAgfVxuICBpZiAoaW5kZXgpIHtcbiAgICBpbml0aWFsU2NvcmUgKz0gaW5kZXhSb3V0ZVZhbHVlO1xuICB9XG4gIHJldHVybiBzZWdtZW50cy5maWx0ZXIoKHMpID0+ICFpc1NwbGF0KHMpKS5yZWR1Y2UoXG4gICAgKHNjb3JlLCBzZWdtZW50KSA9PiBzY29yZSArIChwYXJhbVJlLnRlc3Qoc2VnbWVudCkgPyBkeW5hbWljU2VnbWVudFZhbHVlIDogc2VnbWVudCA9PT0gXCJcIiA/IGVtcHR5U2VnbWVudFZhbHVlIDogc3RhdGljU2VnbWVudFZhbHVlKSxcbiAgICBpbml0aWFsU2NvcmVcbiAgKTtcbn1cbmZ1bmN0aW9uIGNvbXBhcmVJbmRleGVzKGEsIGIpIHtcbiAgbGV0IHNpYmxpbmdzID0gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuc2xpY2UoMCwgLTEpLmV2ZXJ5KChuLCBpKSA9PiBuID09PSBiW2ldKTtcbiAgcmV0dXJuIHNpYmxpbmdzID8gKFxuICAgIC8vIElmIHR3byByb3V0ZXMgYXJlIHNpYmxpbmdzLCB3ZSBzaG91bGQgdHJ5IHRvIG1hdGNoIHRoZSBlYXJsaWVyIHNpYmxpbmdcbiAgICAvLyBmaXJzdC4gVGhpcyBhbGxvd3MgcGVvcGxlIHRvIGhhdmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgbWF0Y2hpbmdcbiAgICAvLyBiZWhhdmlvciBieSBzaW1wbHkgcHV0dGluZyByb3V0ZXMgd2l0aCBpZGVudGljYWwgcGF0aHMgaW4gdGhlIG9yZGVyIHRoZXlcbiAgICAvLyB3YW50IHRoZW0gdHJpZWQuXG4gICAgYVthLmxlbmd0aCAtIDFdIC0gYltiLmxlbmd0aCAtIDFdXG4gICkgOiAoXG4gICAgLy8gT3RoZXJ3aXNlLCBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHJhbmsgbm9uLXNpYmxpbmdzIGJ5IGluZGV4LFxuICAgIC8vIHNvIHRoZXkgc29ydCBlcXVhbGx5LlxuICAgIDBcbiAgKTtcbn1cbmZ1bmN0aW9uIG1hdGNoUm91dGVCcmFuY2goYnJhbmNoLCBwYXRobmFtZSwgYWxsb3dQYXJ0aWFsID0gZmFsc2UpIHtcbiAgbGV0IHsgcm91dGVzTWV0YSB9ID0gYnJhbmNoO1xuICBsZXQgbWF0Y2hlZFBhcmFtcyA9IHt9O1xuICBsZXQgbWF0Y2hlZFBhdGhuYW1lID0gXCIvXCI7XG4gIGxldCBtYXRjaGVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm91dGVzTWV0YS5sZW5ndGg7ICsraSkge1xuICAgIGxldCBtZXRhID0gcm91dGVzTWV0YVtpXTtcbiAgICBsZXQgZW5kID0gaSA9PT0gcm91dGVzTWV0YS5sZW5ndGggLSAxO1xuICAgIGxldCByZW1haW5pbmdQYXRobmFtZSA9IG1hdGNoZWRQYXRobmFtZSA9PT0gXCIvXCIgPyBwYXRobmFtZSA6IHBhdGhuYW1lLnNsaWNlKG1hdGNoZWRQYXRobmFtZS5sZW5ndGgpIHx8IFwiL1wiO1xuICAgIGxldCBtYXRjaCA9IG1hdGNoUGF0aChcbiAgICAgIHsgcGF0aDogbWV0YS5yZWxhdGl2ZVBhdGgsIGNhc2VTZW5zaXRpdmU6IG1ldGEuY2FzZVNlbnNpdGl2ZSwgZW5kIH0sXG4gICAgICByZW1haW5pbmdQYXRobmFtZVxuICAgICk7XG4gICAgbGV0IHJvdXRlID0gbWV0YS5yb3V0ZTtcbiAgICBpZiAoIW1hdGNoICYmIGVuZCAmJiBhbGxvd1BhcnRpYWwgJiYgIXJvdXRlc01ldGFbcm91dGVzTWV0YS5sZW5ndGggLSAxXS5yb3V0ZS5pbmRleCkge1xuICAgICAgbWF0Y2ggPSBtYXRjaFBhdGgoXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiBtZXRhLnJlbGF0aXZlUGF0aCxcbiAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBtZXRhLmNhc2VTZW5zaXRpdmUsXG4gICAgICAgICAgZW5kOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICByZW1haW5pbmdQYXRobmFtZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24obWF0Y2hlZFBhcmFtcywgbWF0Y2gucGFyYW1zKTtcbiAgICBtYXRjaGVzLnB1c2goe1xuICAgICAgLy8gVE9ETzogQ2FuIHRoaXMgYXMgYmUgYXZvaWRlZD9cbiAgICAgIHBhcmFtczogbWF0Y2hlZFBhcmFtcyxcbiAgICAgIHBhdGhuYW1lOiBqb2luUGF0aHMoW21hdGNoZWRQYXRobmFtZSwgbWF0Y2gucGF0aG5hbWVdKSxcbiAgICAgIHBhdGhuYW1lQmFzZTogbm9ybWFsaXplUGF0aG5hbWUoXG4gICAgICAgIGpvaW5QYXRocyhbbWF0Y2hlZFBhdGhuYW1lLCBtYXRjaC5wYXRobmFtZUJhc2VdKVxuICAgICAgKSxcbiAgICAgIHJvdXRlXG4gICAgfSk7XG4gICAgaWYgKG1hdGNoLnBhdGhuYW1lQmFzZSAhPT0gXCIvXCIpIHtcbiAgICAgIG1hdGNoZWRQYXRobmFtZSA9IGpvaW5QYXRocyhbbWF0Y2hlZFBhdGhuYW1lLCBtYXRjaC5wYXRobmFtZUJhc2VdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXM7XG59XG5mdW5jdGlvbiBnZW5lcmF0ZVBhdGgob3JpZ2luYWxQYXRoLCBwYXJhbXMgPSB7fSkge1xuICBsZXQgcGF0aCA9IG9yaWdpbmFsUGF0aDtcbiAgaWYgKHBhdGguZW5kc1dpdGgoXCIqXCIpICYmIHBhdGggIT09IFwiKlwiICYmICFwYXRoLmVuZHNXaXRoKFwiLypcIikpIHtcbiAgICB3YXJuaW5nKFxuICAgICAgZmFsc2UsXG4gICAgICBgUm91dGUgcGF0aCBcIiR7cGF0aH1cIiB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBcIiR7cGF0aC5yZXBsYWNlKC9cXCokLywgXCIvKlwiKX1cIiBiZWNhdXNlIHRoZSBcXGAqXFxgIGNoYXJhY3RlciBtdXN0IGFsd2F5cyBmb2xsb3cgYSBcXGAvXFxgIGluIHRoZSBwYXR0ZXJuLiBUbyBnZXQgcmlkIG9mIHRoaXMgd2FybmluZywgcGxlYXNlIGNoYW5nZSB0aGUgcm91dGUgcGF0aCB0byBcIiR7cGF0aC5yZXBsYWNlKC9cXCokLywgXCIvKlwiKX1cIi5gXG4gICAgKTtcbiAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC9cXCokLywgXCIvKlwiKTtcbiAgfVxuICBjb25zdCBwcmVmaXggPSBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gXCIvXCIgOiBcIlwiO1xuICBjb25zdCBzdHJpbmdpZnkgPSAocCkgPT4gcCA9PSBudWxsID8gXCJcIiA6IHR5cGVvZiBwID09PSBcInN0cmluZ1wiID8gcCA6IFN0cmluZyhwKTtcbiAgY29uc3Qgc2VnbWVudHMgPSBwYXRoLnNwbGl0KC9cXC8rLykubWFwKChzZWdtZW50LCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICBjb25zdCBpc0xhc3RTZWdtZW50ID0gaW5kZXggPT09IGFycmF5Lmxlbmd0aCAtIDE7XG4gICAgaWYgKGlzTGFzdFNlZ21lbnQgJiYgc2VnbWVudCA9PT0gXCIqXCIpIHtcbiAgICAgIGNvbnN0IHN0YXIgPSBcIipcIjtcbiAgICAgIHJldHVybiBzdHJpbmdpZnkocGFyYW1zW3N0YXJdKTtcbiAgICB9XG4gICAgY29uc3Qga2V5TWF0Y2ggPSBzZWdtZW50Lm1hdGNoKC9eOihbXFx3LV0rKShcXD8/KSQvKTtcbiAgICBpZiAoa2V5TWF0Y2gpIHtcbiAgICAgIGNvbnN0IFssIGtleSwgb3B0aW9uYWxdID0ga2V5TWF0Y2g7XG4gICAgICBsZXQgcGFyYW0gPSBwYXJhbXNba2V5XTtcbiAgICAgIGludmFyaWFudChvcHRpb25hbCA9PT0gXCI/XCIgfHwgcGFyYW0gIT0gbnVsbCwgYE1pc3NpbmcgXCI6JHtrZXl9XCIgcGFyYW1gKTtcbiAgICAgIHJldHVybiBzdHJpbmdpZnkocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gc2VnbWVudC5yZXBsYWNlKC9cXD8kL2csIFwiXCIpO1xuICB9KS5maWx0ZXIoKHNlZ21lbnQpID0+ICEhc2VnbWVudCk7XG4gIHJldHVybiBwcmVmaXggKyBzZWdtZW50cy5qb2luKFwiL1wiKTtcbn1cbmZ1bmN0aW9uIG1hdGNoUGF0aChwYXR0ZXJuLCBwYXRobmFtZSkge1xuICBpZiAodHlwZW9mIHBhdHRlcm4gPT09IFwic3RyaW5nXCIpIHtcbiAgICBwYXR0ZXJuID0geyBwYXRoOiBwYXR0ZXJuLCBjYXNlU2Vuc2l0aXZlOiBmYWxzZSwgZW5kOiB0cnVlIH07XG4gIH1cbiAgbGV0IFttYXRjaGVyLCBjb21waWxlZFBhcmFtc10gPSBjb21waWxlUGF0aChcbiAgICBwYXR0ZXJuLnBhdGgsXG4gICAgcGF0dGVybi5jYXNlU2Vuc2l0aXZlLFxuICAgIHBhdHRlcm4uZW5kXG4gICk7XG4gIGxldCBtYXRjaCA9IHBhdGhuYW1lLm1hdGNoKG1hdGNoZXIpO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbDtcbiAgbGV0IG1hdGNoZWRQYXRobmFtZSA9IG1hdGNoWzBdO1xuICBsZXQgcGF0aG5hbWVCYXNlID0gbWF0Y2hlZFBhdGhuYW1lLnJlcGxhY2UoLyguKVxcLyskLywgXCIkMVwiKTtcbiAgbGV0IGNhcHR1cmVHcm91cHMgPSBtYXRjaC5zbGljZSgxKTtcbiAgbGV0IHBhcmFtcyA9IGNvbXBpbGVkUGFyYW1zLnJlZHVjZShcbiAgICAobWVtbzIsIHsgcGFyYW1OYW1lLCBpc09wdGlvbmFsIH0sIGluZGV4KSA9PiB7XG4gICAgICBpZiAocGFyYW1OYW1lID09PSBcIipcIikge1xuICAgICAgICBsZXQgc3BsYXRWYWx1ZSA9IGNhcHR1cmVHcm91cHNbaW5kZXhdIHx8IFwiXCI7XG4gICAgICAgIHBhdGhuYW1lQmFzZSA9IG1hdGNoZWRQYXRobmFtZS5zbGljZSgwLCBtYXRjaGVkUGF0aG5hbWUubGVuZ3RoIC0gc3BsYXRWYWx1ZS5sZW5ndGgpLnJlcGxhY2UoLyguKVxcLyskLywgXCIkMVwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbHVlID0gY2FwdHVyZUdyb3Vwc1tpbmRleF07XG4gICAgICBpZiAoaXNPcHRpb25hbCAmJiAhdmFsdWUpIHtcbiAgICAgICAgbWVtbzJbcGFyYW1OYW1lXSA9IHZvaWQgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lbW8yW3BhcmFtTmFtZV0gPSAodmFsdWUgfHwgXCJcIikucmVwbGFjZSgvJTJGL2csIFwiL1wiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZW1vMjtcbiAgICB9LFxuICAgIHt9XG4gICk7XG4gIHJldHVybiB7XG4gICAgcGFyYW1zLFxuICAgIHBhdGhuYW1lOiBtYXRjaGVkUGF0aG5hbWUsXG4gICAgcGF0aG5hbWVCYXNlLFxuICAgIHBhdHRlcm5cbiAgfTtcbn1cbmZ1bmN0aW9uIGNvbXBpbGVQYXRoKHBhdGgsIGNhc2VTZW5zaXRpdmUgPSBmYWxzZSwgZW5kID0gdHJ1ZSkge1xuICB3YXJuaW5nKFxuICAgIHBhdGggPT09IFwiKlwiIHx8ICFwYXRoLmVuZHNXaXRoKFwiKlwiKSB8fCBwYXRoLmVuZHNXaXRoKFwiLypcIiksXG4gICAgYFJvdXRlIHBhdGggXCIke3BhdGh9XCIgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIGl0IHdlcmUgXCIke3BhdGgucmVwbGFjZSgvXFwqJC8sIFwiLypcIil9XCIgYmVjYXVzZSB0aGUgXFxgKlxcYCBjaGFyYWN0ZXIgbXVzdCBhbHdheXMgZm9sbG93IGEgXFxgL1xcYCBpbiB0aGUgcGF0dGVybi4gVG8gZ2V0IHJpZCBvZiB0aGlzIHdhcm5pbmcsIHBsZWFzZSBjaGFuZ2UgdGhlIHJvdXRlIHBhdGggdG8gXCIke3BhdGgucmVwbGFjZSgvXFwqJC8sIFwiLypcIil9XCIuYFxuICApO1xuICBsZXQgcGFyYW1zID0gW107XG4gIGxldCByZWdleHBTb3VyY2UgPSBcIl5cIiArIHBhdGgucmVwbGFjZSgvXFwvKlxcKj8kLywgXCJcIikucmVwbGFjZSgvXlxcLyovLCBcIi9cIikucmVwbGFjZSgvW1xcXFwuKiteJHt9fCgpW1xcXV0vZywgXCJcXFxcJCZcIikucmVwbGFjZShcbiAgICAvXFwvOihbXFx3LV0rKShcXD8pPy9nLFxuICAgIChfLCBwYXJhbU5hbWUsIGlzT3B0aW9uYWwpID0+IHtcbiAgICAgIHBhcmFtcy5wdXNoKHsgcGFyYW1OYW1lLCBpc09wdGlvbmFsOiBpc09wdGlvbmFsICE9IG51bGwgfSk7XG4gICAgICByZXR1cm4gaXNPcHRpb25hbCA/IFwiLz8oW15cXFxcL10rKT9cIiA6IFwiLyhbXlxcXFwvXSspXCI7XG4gICAgfVxuICApO1xuICBpZiAocGF0aC5lbmRzV2l0aChcIipcIikpIHtcbiAgICBwYXJhbXMucHVzaCh7IHBhcmFtTmFtZTogXCIqXCIgfSk7XG4gICAgcmVnZXhwU291cmNlICs9IHBhdGggPT09IFwiKlwiIHx8IHBhdGggPT09IFwiLypcIiA/IFwiKC4qKSRcIiA6IFwiKD86XFxcXC8oLispfFxcXFwvKikkXCI7XG4gIH0gZWxzZSBpZiAoZW5kKSB7XG4gICAgcmVnZXhwU291cmNlICs9IFwiXFxcXC8qJFwiO1xuICB9IGVsc2UgaWYgKHBhdGggIT09IFwiXCIgJiYgcGF0aCAhPT0gXCIvXCIpIHtcbiAgICByZWdleHBTb3VyY2UgKz0gXCIoPzooPz1cXFxcL3wkKSlcIjtcbiAgfSBlbHNlIHtcbiAgfVxuICBsZXQgbWF0Y2hlciA9IG5ldyBSZWdFeHAocmVnZXhwU291cmNlLCBjYXNlU2Vuc2l0aXZlID8gdm9pZCAwIDogXCJpXCIpO1xuICByZXR1cm4gW21hdGNoZXIsIHBhcmFtc107XG59XG5mdW5jdGlvbiBkZWNvZGVQYXRoKHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHZhbHVlLnNwbGl0KFwiL1wiKS5tYXAoKHYpID0+IGRlY29kZVVSSUNvbXBvbmVudCh2KS5yZXBsYWNlKC9cXC8vZywgXCIlMkZcIikpLmpvaW4oXCIvXCIpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHdhcm5pbmcoXG4gICAgICBmYWxzZSxcbiAgICAgIGBUaGUgVVJMIHBhdGggXCIke3ZhbHVlfVwiIGNvdWxkIG5vdCBiZSBkZWNvZGVkIGJlY2F1c2UgaXQgaXMgaXMgYSBtYWxmb3JtZWQgVVJMIHNlZ21lbnQuIFRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIGEgYmFkIHBlcmNlbnQgZW5jb2RpbmcgKCR7ZXJyb3J9KS5gXG4gICAgKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbmZ1bmN0aW9uIHN0cmlwQmFzZW5hbWUocGF0aG5hbWUsIGJhc2VuYW1lKSB7XG4gIGlmIChiYXNlbmFtZSA9PT0gXCIvXCIpIHJldHVybiBwYXRobmFtZTtcbiAgaWYgKCFwYXRobmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoYmFzZW5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBsZXQgc3RhcnRJbmRleCA9IGJhc2VuYW1lLmVuZHNXaXRoKFwiL1wiKSA/IGJhc2VuYW1lLmxlbmd0aCAtIDEgOiBiYXNlbmFtZS5sZW5ndGg7XG4gIGxldCBuZXh0Q2hhciA9IHBhdGhuYW1lLmNoYXJBdChzdGFydEluZGV4KTtcbiAgaWYgKG5leHRDaGFyICYmIG5leHRDaGFyICE9PSBcIi9cIikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBwYXRobmFtZS5zbGljZShzdGFydEluZGV4KSB8fCBcIi9cIjtcbn1cbmZ1bmN0aW9uIHJlc29sdmVQYXRoKHRvLCBmcm9tUGF0aG5hbWUgPSBcIi9cIikge1xuICBsZXQge1xuICAgIHBhdGhuYW1lOiB0b1BhdGhuYW1lLFxuICAgIHNlYXJjaCA9IFwiXCIsXG4gICAgaGFzaCA9IFwiXCJcbiAgfSA9IHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aCh0bykgOiB0bztcbiAgbGV0IHBhdGhuYW1lID0gdG9QYXRobmFtZSA/IHRvUGF0aG5hbWUuc3RhcnRzV2l0aChcIi9cIikgPyB0b1BhdGhuYW1lIDogcmVzb2x2ZVBhdGhuYW1lKHRvUGF0aG5hbWUsIGZyb21QYXRobmFtZSkgOiBmcm9tUGF0aG5hbWU7XG4gIHJldHVybiB7XG4gICAgcGF0aG5hbWUsXG4gICAgc2VhcmNoOiBub3JtYWxpemVTZWFyY2goc2VhcmNoKSxcbiAgICBoYXNoOiBub3JtYWxpemVIYXNoKGhhc2gpXG4gIH07XG59XG5mdW5jdGlvbiByZXNvbHZlUGF0aG5hbWUocmVsYXRpdmVQYXRoLCBmcm9tUGF0aG5hbWUpIHtcbiAgbGV0IHNlZ21lbnRzID0gZnJvbVBhdGhuYW1lLnJlcGxhY2UoL1xcLyskLywgXCJcIikuc3BsaXQoXCIvXCIpO1xuICBsZXQgcmVsYXRpdmVTZWdtZW50cyA9IHJlbGF0aXZlUGF0aC5zcGxpdChcIi9cIik7XG4gIHJlbGF0aXZlU2VnbWVudHMuZm9yRWFjaCgoc2VnbWVudCkgPT4ge1xuICAgIGlmIChzZWdtZW50ID09PSBcIi4uXCIpIHtcbiAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPiAxKSBzZWdtZW50cy5wb3AoKTtcbiAgICB9IGVsc2UgaWYgKHNlZ21lbnQgIT09IFwiLlwiKSB7XG4gICAgICBzZWdtZW50cy5wdXNoKHNlZ21lbnQpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzZWdtZW50cy5sZW5ndGggPiAxID8gc2VnbWVudHMuam9pbihcIi9cIikgOiBcIi9cIjtcbn1cbmZ1bmN0aW9uIGdldEludmFsaWRQYXRoRXJyb3IoY2hhciwgZmllbGQsIGRlc3QsIHBhdGgpIHtcbiAgcmV0dXJuIGBDYW5ub3QgaW5jbHVkZSBhICcke2NoYXJ9JyBjaGFyYWN0ZXIgaW4gYSBtYW51YWxseSBzcGVjaWZpZWQgXFxgdG8uJHtmaWVsZH1cXGAgZmllbGQgWyR7SlNPTi5zdHJpbmdpZnkoXG4gICAgcGF0aFxuICApfV0uICBQbGVhc2Ugc2VwYXJhdGUgaXQgb3V0IHRvIHRoZSBcXGB0by4ke2Rlc3R9XFxgIGZpZWxkLiBBbHRlcm5hdGl2ZWx5IHlvdSBtYXkgcHJvdmlkZSB0aGUgZnVsbCBwYXRoIGFzIGEgc3RyaW5nIGluIDxMaW5rIHRvPVwiLi4uXCI+IGFuZCB0aGUgcm91dGVyIHdpbGwgcGFyc2UgaXQgZm9yIHlvdS5gO1xufVxuZnVuY3Rpb24gZ2V0UGF0aENvbnRyaWJ1dGluZ01hdGNoZXMobWF0Y2hlcykge1xuICByZXR1cm4gbWF0Y2hlcy5maWx0ZXIoXG4gICAgKG1hdGNoLCBpbmRleCkgPT4gaW5kZXggPT09IDAgfHwgbWF0Y2gucm91dGUucGF0aCAmJiBtYXRjaC5yb3V0ZS5wYXRoLmxlbmd0aCA+IDBcbiAgKTtcbn1cbmZ1bmN0aW9uIGdldFJlc29sdmVUb01hdGNoZXMobWF0Y2hlcykge1xuICBsZXQgcGF0aE1hdGNoZXMgPSBnZXRQYXRoQ29udHJpYnV0aW5nTWF0Y2hlcyhtYXRjaGVzKTtcbiAgcmV0dXJuIHBhdGhNYXRjaGVzLm1hcChcbiAgICAobWF0Y2gsIGlkeCkgPT4gaWR4ID09PSBwYXRoTWF0Y2hlcy5sZW5ndGggLSAxID8gbWF0Y2gucGF0aG5hbWUgOiBtYXRjaC5wYXRobmFtZUJhc2VcbiAgKTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVUbyh0b0FyZywgcm91dGVQYXRobmFtZXMsIGxvY2F0aW9uUGF0aG5hbWUsIGlzUGF0aFJlbGF0aXZlID0gZmFsc2UpIHtcbiAgbGV0IHRvO1xuICBpZiAodHlwZW9mIHRvQXJnID09PSBcInN0cmluZ1wiKSB7XG4gICAgdG8gPSBwYXJzZVBhdGgodG9BcmcpO1xuICB9IGVsc2Uge1xuICAgIHRvID0geyAuLi50b0FyZyB9O1xuICAgIGludmFyaWFudChcbiAgICAgICF0by5wYXRobmFtZSB8fCAhdG8ucGF0aG5hbWUuaW5jbHVkZXMoXCI/XCIpLFxuICAgICAgZ2V0SW52YWxpZFBhdGhFcnJvcihcIj9cIiwgXCJwYXRobmFtZVwiLCBcInNlYXJjaFwiLCB0bylcbiAgICApO1xuICAgIGludmFyaWFudChcbiAgICAgICF0by5wYXRobmFtZSB8fCAhdG8ucGF0aG5hbWUuaW5jbHVkZXMoXCIjXCIpLFxuICAgICAgZ2V0SW52YWxpZFBhdGhFcnJvcihcIiNcIiwgXCJwYXRobmFtZVwiLCBcImhhc2hcIiwgdG8pXG4gICAgKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICAhdG8uc2VhcmNoIHx8ICF0by5zZWFyY2guaW5jbHVkZXMoXCIjXCIpLFxuICAgICAgZ2V0SW52YWxpZFBhdGhFcnJvcihcIiNcIiwgXCJzZWFyY2hcIiwgXCJoYXNoXCIsIHRvKVxuICAgICk7XG4gIH1cbiAgbGV0IGlzRW1wdHlQYXRoID0gdG9BcmcgPT09IFwiXCIgfHwgdG8ucGF0aG5hbWUgPT09IFwiXCI7XG4gIGxldCB0b1BhdGhuYW1lID0gaXNFbXB0eVBhdGggPyBcIi9cIiA6IHRvLnBhdGhuYW1lO1xuICBsZXQgZnJvbTtcbiAgaWYgKHRvUGF0aG5hbWUgPT0gbnVsbCkge1xuICAgIGZyb20gPSBsb2NhdGlvblBhdGhuYW1lO1xuICB9IGVsc2Uge1xuICAgIGxldCByb3V0ZVBhdGhuYW1lSW5kZXggPSByb3V0ZVBhdGhuYW1lcy5sZW5ndGggLSAxO1xuICAgIGlmICghaXNQYXRoUmVsYXRpdmUgJiYgdG9QYXRobmFtZS5zdGFydHNXaXRoKFwiLi5cIikpIHtcbiAgICAgIGxldCB0b1NlZ21lbnRzID0gdG9QYXRobmFtZS5zcGxpdChcIi9cIik7XG4gICAgICB3aGlsZSAodG9TZWdtZW50c1swXSA9PT0gXCIuLlwiKSB7XG4gICAgICAgIHRvU2VnbWVudHMuc2hpZnQoKTtcbiAgICAgICAgcm91dGVQYXRobmFtZUluZGV4IC09IDE7XG4gICAgICB9XG4gICAgICB0by5wYXRobmFtZSA9IHRvU2VnbWVudHMuam9pbihcIi9cIik7XG4gICAgfVxuICAgIGZyb20gPSByb3V0ZVBhdGhuYW1lSW5kZXggPj0gMCA/IHJvdXRlUGF0aG5hbWVzW3JvdXRlUGF0aG5hbWVJbmRleF0gOiBcIi9cIjtcbiAgfVxuICBsZXQgcGF0aCA9IHJlc29sdmVQYXRoKHRvLCBmcm9tKTtcbiAgbGV0IGhhc0V4cGxpY2l0VHJhaWxpbmdTbGFzaCA9IHRvUGF0aG5hbWUgJiYgdG9QYXRobmFtZSAhPT0gXCIvXCIgJiYgdG9QYXRobmFtZS5lbmRzV2l0aChcIi9cIik7XG4gIGxldCBoYXNDdXJyZW50VHJhaWxpbmdTbGFzaCA9IChpc0VtcHR5UGF0aCB8fCB0b1BhdGhuYW1lID09PSBcIi5cIikgJiYgbG9jYXRpb25QYXRobmFtZS5lbmRzV2l0aChcIi9cIik7XG4gIGlmICghcGF0aC5wYXRobmFtZS5lbmRzV2l0aChcIi9cIikgJiYgKGhhc0V4cGxpY2l0VHJhaWxpbmdTbGFzaCB8fCBoYXNDdXJyZW50VHJhaWxpbmdTbGFzaCkpIHtcbiAgICBwYXRoLnBhdGhuYW1lICs9IFwiL1wiO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxudmFyIGpvaW5QYXRocyA9IChwYXRocykgPT4gcGF0aHMuam9pbihcIi9cIikucmVwbGFjZSgvXFwvXFwvKy9nLCBcIi9cIik7XG52YXIgbm9ybWFsaXplUGF0aG5hbWUgPSAocGF0aG5hbWUpID0+IHBhdGhuYW1lLnJlcGxhY2UoL1xcLyskLywgXCJcIikucmVwbGFjZSgvXlxcLyovLCBcIi9cIik7XG52YXIgbm9ybWFsaXplU2VhcmNoID0gKHNlYXJjaCkgPT4gIXNlYXJjaCB8fCBzZWFyY2ggPT09IFwiP1wiID8gXCJcIiA6IHNlYXJjaC5zdGFydHNXaXRoKFwiP1wiKSA/IHNlYXJjaCA6IFwiP1wiICsgc2VhcmNoO1xudmFyIG5vcm1hbGl6ZUhhc2ggPSAoaGFzaCkgPT4gIWhhc2ggfHwgaGFzaCA9PT0gXCIjXCIgPyBcIlwiIDogaGFzaC5zdGFydHNXaXRoKFwiI1wiKSA/IGhhc2ggOiBcIiNcIiArIGhhc2g7XG52YXIgRGF0YVdpdGhSZXNwb25zZUluaXQgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGRhdGEyLCBpbml0KSB7XG4gICAgdGhpcy50eXBlID0gXCJEYXRhV2l0aFJlc3BvbnNlSW5pdFwiO1xuICAgIHRoaXMuZGF0YSA9IGRhdGEyO1xuICAgIHRoaXMuaW5pdCA9IGluaXQgfHwgbnVsbDtcbiAgfVxufTtcbmZ1bmN0aW9uIGRhdGEoZGF0YTIsIGluaXQpIHtcbiAgcmV0dXJuIG5ldyBEYXRhV2l0aFJlc3BvbnNlSW5pdChcbiAgICBkYXRhMixcbiAgICB0eXBlb2YgaW5pdCA9PT0gXCJudW1iZXJcIiA/IHsgc3RhdHVzOiBpbml0IH0gOiBpbml0XG4gICk7XG59XG52YXIgcmVkaXJlY3QgPSAodXJsLCBpbml0ID0gMzAyKSA9PiB7XG4gIGxldCByZXNwb25zZUluaXQgPSBpbml0O1xuICBpZiAodHlwZW9mIHJlc3BvbnNlSW5pdCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJlc3BvbnNlSW5pdCA9IHsgc3RhdHVzOiByZXNwb25zZUluaXQgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcmVzcG9uc2VJbml0LnN0YXR1cyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJlc3BvbnNlSW5pdC5zdGF0dXMgPSAzMDI7XG4gIH1cbiAgbGV0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXNwb25zZUluaXQuaGVhZGVycyk7XG4gIGhlYWRlcnMuc2V0KFwiTG9jYXRpb25cIiwgdXJsKTtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7XG4gICAgLi4ucmVzcG9uc2VJbml0LFxuICAgIGhlYWRlcnNcbiAgfSk7XG59O1xudmFyIHJlZGlyZWN0RG9jdW1lbnQgPSAodXJsLCBpbml0KSA9PiB7XG4gIGxldCByZXNwb25zZSA9IHJlZGlyZWN0KHVybCwgaW5pdCk7XG4gIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiWC1SZW1peC1SZWxvYWQtRG9jdW1lbnRcIiwgXCJ0cnVlXCIpO1xuICByZXR1cm4gcmVzcG9uc2U7XG59O1xudmFyIHJlcGxhY2UgPSAodXJsLCBpbml0KSA9PiB7XG4gIGxldCByZXNwb25zZSA9IHJlZGlyZWN0KHVybCwgaW5pdCk7XG4gIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiWC1SZW1peC1SZXBsYWNlXCIsIFwidHJ1ZVwiKTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcbnZhciBFcnJvclJlc3BvbnNlSW1wbCA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3Ioc3RhdHVzLCBzdGF0dXNUZXh0LCBkYXRhMiwgaW50ZXJuYWwgPSBmYWxzZSkge1xuICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzO1xuICAgIHRoaXMuc3RhdHVzVGV4dCA9IHN0YXR1c1RleHQgfHwgXCJcIjtcbiAgICB0aGlzLmludGVybmFsID0gaW50ZXJuYWw7XG4gICAgaWYgKGRhdGEyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGEyLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLmVycm9yID0gZGF0YTI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGEyO1xuICAgIH1cbiAgfVxufTtcbmZ1bmN0aW9uIGlzUm91dGVFcnJvclJlc3BvbnNlKGVycm9yKSB7XG4gIHJldHVybiBlcnJvciAhPSBudWxsICYmIHR5cGVvZiBlcnJvci5zdGF0dXMgPT09IFwibnVtYmVyXCIgJiYgdHlwZW9mIGVycm9yLnN0YXR1c1RleHQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGVycm9yLmludGVybmFsID09PSBcImJvb2xlYW5cIiAmJiBcImRhdGFcIiBpbiBlcnJvcjtcbn1cblxuLy8gbGliL3JvdXRlci9yb3V0ZXIudHNcbnZhciB2YWxpZE11dGF0aW9uTWV0aG9kc0FyciA9IFtcbiAgXCJQT1NUXCIsXG4gIFwiUFVUXCIsXG4gIFwiUEFUQ0hcIixcbiAgXCJERUxFVEVcIlxuXTtcbnZhciB2YWxpZE11dGF0aW9uTWV0aG9kcyA9IG5ldyBTZXQoXG4gIHZhbGlkTXV0YXRpb25NZXRob2RzQXJyXG4pO1xudmFyIHZhbGlkUmVxdWVzdE1ldGhvZHNBcnIgPSBbXG4gIFwiR0VUXCIsXG4gIC4uLnZhbGlkTXV0YXRpb25NZXRob2RzQXJyXG5dO1xudmFyIHZhbGlkUmVxdWVzdE1ldGhvZHMgPSBuZXcgU2V0KHZhbGlkUmVxdWVzdE1ldGhvZHNBcnIpO1xudmFyIHJlZGlyZWN0U3RhdHVzQ29kZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdKTtcbnZhciByZWRpcmVjdFByZXNlcnZlTWV0aG9kU3RhdHVzQ29kZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbMzA3LCAzMDhdKTtcbnZhciBJRExFX05BVklHQVRJT04gPSB7XG4gIHN0YXRlOiBcImlkbGVcIixcbiAgbG9jYXRpb246IHZvaWQgMCxcbiAgZm9ybU1ldGhvZDogdm9pZCAwLFxuICBmb3JtQWN0aW9uOiB2b2lkIDAsXG4gIGZvcm1FbmNUeXBlOiB2b2lkIDAsXG4gIGZvcm1EYXRhOiB2b2lkIDAsXG4gIGpzb246IHZvaWQgMCxcbiAgdGV4dDogdm9pZCAwXG59O1xudmFyIElETEVfRkVUQ0hFUiA9IHtcbiAgc3RhdGU6IFwiaWRsZVwiLFxuICBkYXRhOiB2b2lkIDAsXG4gIGZvcm1NZXRob2Q6IHZvaWQgMCxcbiAgZm9ybUFjdGlvbjogdm9pZCAwLFxuICBmb3JtRW5jVHlwZTogdm9pZCAwLFxuICBmb3JtRGF0YTogdm9pZCAwLFxuICBqc29uOiB2b2lkIDAsXG4gIHRleHQ6IHZvaWQgMFxufTtcbnZhciBJRExFX0JMT0NLRVIgPSB7XG4gIHN0YXRlOiBcInVuYmxvY2tlZFwiLFxuICBwcm9jZWVkOiB2b2lkIDAsXG4gIHJlc2V0OiB2b2lkIDAsXG4gIGxvY2F0aW9uOiB2b2lkIDBcbn07XG52YXIgQUJTT0xVVEVfVVJMX1JFR0VYID0gL14oPzpbYS16XVthLXowLTkrLi1dKjp8XFwvXFwvKS9pO1xudmFyIGRlZmF1bHRNYXBSb3V0ZVByb3BlcnRpZXMgPSAocm91dGUpID0+ICh7XG4gIGhhc0Vycm9yQm91bmRhcnk6IEJvb2xlYW4ocm91dGUuaGFzRXJyb3JCb3VuZGFyeSlcbn0pO1xudmFyIFRSQU5TSVRJT05TX1NUT1JBR0VfS0VZID0gXCJyZW1peC1yb3V0ZXItdHJhbnNpdGlvbnNcIjtcbnZhciBSZXNldExvYWRlckRhdGFTeW1ib2wgPSBTeW1ib2woXCJSZXNldExvYWRlckRhdGFcIik7XG5mdW5jdGlvbiBjcmVhdGVSb3V0ZXIoaW5pdCkge1xuICBjb25zdCByb3V0ZXJXaW5kb3cgPSBpbml0LndpbmRvdyA/IGluaXQud2luZG93IDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHZvaWQgMDtcbiAgY29uc3QgaXNCcm93c2VyMiA9IHR5cGVvZiByb3V0ZXJXaW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIHJvdXRlcldpbmRvdy5kb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygcm91dGVyV2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgIT09IFwidW5kZWZpbmVkXCI7XG4gIGludmFyaWFudChcbiAgICBpbml0LnJvdXRlcy5sZW5ndGggPiAwLFxuICAgIFwiWW91IG11c3QgcHJvdmlkZSBhIG5vbi1lbXB0eSByb3V0ZXMgYXJyYXkgdG8gY3JlYXRlUm91dGVyXCJcbiAgKTtcbiAgbGV0IG1hcFJvdXRlUHJvcGVydGllczIgPSBpbml0Lm1hcFJvdXRlUHJvcGVydGllcyB8fCBkZWZhdWx0TWFwUm91dGVQcm9wZXJ0aWVzO1xuICBsZXQgbWFuaWZlc3QgPSB7fTtcbiAgbGV0IGRhdGFSb3V0ZXMgPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgIGluaXQucm91dGVzLFxuICAgIG1hcFJvdXRlUHJvcGVydGllczIsXG4gICAgdm9pZCAwLFxuICAgIG1hbmlmZXN0XG4gICk7XG4gIGxldCBpbkZsaWdodERhdGFSb3V0ZXM7XG4gIGxldCBiYXNlbmFtZSA9IGluaXQuYmFzZW5hbWUgfHwgXCIvXCI7XG4gIGxldCBkYXRhU3RyYXRlZ3lJbXBsID0gaW5pdC5kYXRhU3RyYXRlZ3kgfHwgZGVmYXVsdERhdGFTdHJhdGVneTtcbiAgbGV0IHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uSW1wbCA9IGluaXQucGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb247XG4gIGxldCBmdXR1cmUgPSB7XG4gICAgLi4uaW5pdC5mdXR1cmVcbiAgfTtcbiAgbGV0IHVubGlzdGVuSGlzdG9yeSA9IG51bGw7XG4gIGxldCBzdWJzY3JpYmVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBzYXZlZFNjcm9sbFBvc2l0aW9uczIgPSBudWxsO1xuICBsZXQgZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkyID0gbnVsbDtcbiAgbGV0IGdldFNjcm9sbFBvc2l0aW9uID0gbnVsbDtcbiAgbGV0IGluaXRpYWxTY3JvbGxSZXN0b3JlZCA9IGluaXQuaHlkcmF0aW9uRGF0YSAhPSBudWxsO1xuICBsZXQgaW5pdGlhbE1hdGNoZXMgPSBtYXRjaFJvdXRlcyhkYXRhUm91dGVzLCBpbml0Lmhpc3RvcnkubG9jYXRpb24sIGJhc2VuYW1lKTtcbiAgbGV0IGluaXRpYWxFcnJvcnMgPSBudWxsO1xuICBpZiAoaW5pdGlhbE1hdGNoZXMgPT0gbnVsbCAmJiAhcGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb25JbXBsKSB7XG4gICAgbGV0IGVycm9yID0gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHtcbiAgICAgIHBhdGhuYW1lOiBpbml0Lmhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWVcbiAgICB9KTtcbiAgICBsZXQgeyBtYXRjaGVzLCByb3V0ZSB9ID0gZ2V0U2hvcnRDaXJjdWl0TWF0Y2hlcyhkYXRhUm91dGVzKTtcbiAgICBpbml0aWFsTWF0Y2hlcyA9IG1hdGNoZXM7XG4gICAgaW5pdGlhbEVycm9ycyA9IHsgW3JvdXRlLmlkXTogZXJyb3IgfTtcbiAgfVxuICBpZiAoaW5pdGlhbE1hdGNoZXMgJiYgIWluaXQuaHlkcmF0aW9uRGF0YSkge1xuICAgIGxldCBmb2dPZldhciA9IGNoZWNrRm9nT2ZXYXIoXG4gICAgICBpbml0aWFsTWF0Y2hlcyxcbiAgICAgIGRhdGFSb3V0ZXMsXG4gICAgICBpbml0Lmhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWVcbiAgICApO1xuICAgIGlmIChmb2dPZldhci5hY3RpdmUpIHtcbiAgICAgIGluaXRpYWxNYXRjaGVzID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgbGV0IGluaXRpYWxpemVkO1xuICBpZiAoIWluaXRpYWxNYXRjaGVzKSB7XG4gICAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBpbml0aWFsTWF0Y2hlcyA9IFtdO1xuICAgIGxldCBmb2dPZldhciA9IGNoZWNrRm9nT2ZXYXIoXG4gICAgICBudWxsLFxuICAgICAgZGF0YVJvdXRlcyxcbiAgICAgIGluaXQuaGlzdG9yeS5sb2NhdGlvbi5wYXRobmFtZVxuICAgICk7XG4gICAgaWYgKGZvZ09mV2FyLmFjdGl2ZSAmJiBmb2dPZldhci5tYXRjaGVzKSB7XG4gICAgICBpbml0aWFsTWF0Y2hlcyA9IGZvZ09mV2FyLm1hdGNoZXM7XG4gICAgfVxuICB9IGVsc2UgaWYgKGluaXRpYWxNYXRjaGVzLnNvbWUoKG0pID0+IG0ucm91dGUubGF6eSkpIHtcbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuICB9IGVsc2UgaWYgKCFpbml0aWFsTWF0Y2hlcy5zb21lKChtKSA9PiBtLnJvdXRlLmxvYWRlcikpIHtcbiAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGxvYWRlckRhdGEgPSBpbml0Lmh5ZHJhdGlvbkRhdGEgPyBpbml0Lmh5ZHJhdGlvbkRhdGEubG9hZGVyRGF0YSA6IG51bGw7XG4gICAgbGV0IGVycm9ycyA9IGluaXQuaHlkcmF0aW9uRGF0YSA/IGluaXQuaHlkcmF0aW9uRGF0YS5lcnJvcnMgOiBudWxsO1xuICAgIGlmIChlcnJvcnMpIHtcbiAgICAgIGxldCBpZHggPSBpbml0aWFsTWF0Y2hlcy5maW5kSW5kZXgoXG4gICAgICAgIChtKSA9PiBlcnJvcnNbbS5yb3V0ZS5pZF0gIT09IHZvaWQgMFxuICAgICAgKTtcbiAgICAgIGluaXRpYWxpemVkID0gaW5pdGlhbE1hdGNoZXMuc2xpY2UoMCwgaWR4ICsgMSkuZXZlcnkoKG0pID0+ICFzaG91bGRMb2FkUm91dGVPbkh5ZHJhdGlvbihtLnJvdXRlLCBsb2FkZXJEYXRhLCBlcnJvcnMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdGlhbGl6ZWQgPSBpbml0aWFsTWF0Y2hlcy5ldmVyeShcbiAgICAgICAgKG0pID0+ICFzaG91bGRMb2FkUm91dGVPbkh5ZHJhdGlvbihtLnJvdXRlLCBsb2FkZXJEYXRhLCBlcnJvcnMpXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBsZXQgcm91dGVyO1xuICBsZXQgc3RhdGUgPSB7XG4gICAgaGlzdG9yeUFjdGlvbjogaW5pdC5oaXN0b3J5LmFjdGlvbixcbiAgICBsb2NhdGlvbjogaW5pdC5oaXN0b3J5LmxvY2F0aW9uLFxuICAgIG1hdGNoZXM6IGluaXRpYWxNYXRjaGVzLFxuICAgIGluaXRpYWxpemVkLFxuICAgIG5hdmlnYXRpb246IElETEVfTkFWSUdBVElPTixcbiAgICAvLyBEb24ndCByZXN0b3JlIG9uIGluaXRpYWwgdXBkYXRlU3RhdGUoKSBpZiB3ZSB3ZXJlIFNTUidkXG4gICAgcmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBpbml0Lmh5ZHJhdGlvbkRhdGEgIT0gbnVsbCA/IGZhbHNlIDogbnVsbCxcbiAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IGZhbHNlLFxuICAgIHJldmFsaWRhdGlvbjogXCJpZGxlXCIsXG4gICAgbG9hZGVyRGF0YTogaW5pdC5oeWRyYXRpb25EYXRhICYmIGluaXQuaHlkcmF0aW9uRGF0YS5sb2FkZXJEYXRhIHx8IHt9LFxuICAgIGFjdGlvbkRhdGE6IGluaXQuaHlkcmF0aW9uRGF0YSAmJiBpbml0Lmh5ZHJhdGlvbkRhdGEuYWN0aW9uRGF0YSB8fCBudWxsLFxuICAgIGVycm9yczogaW5pdC5oeWRyYXRpb25EYXRhICYmIGluaXQuaHlkcmF0aW9uRGF0YS5lcnJvcnMgfHwgaW5pdGlhbEVycm9ycyxcbiAgICBmZXRjaGVyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSxcbiAgICBibG9ja2VyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKVxuICB9O1xuICBsZXQgcGVuZGluZ0FjdGlvbiA9IFwiUE9QXCIgLyogUG9wICovO1xuICBsZXQgcGVuZGluZ1ByZXZlbnRTY3JvbGxSZXNldCA9IGZhbHNlO1xuICBsZXQgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyO1xuICBsZXQgcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICBsZXQgYXBwbGllZFZpZXdUcmFuc2l0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCByZW1vdmVQYWdlSGlkZUV2ZW50TGlzdGVuZXIgPSBudWxsO1xuICBsZXQgaXNVbmludGVycnVwdGVkUmV2YWxpZGF0aW9uID0gZmFsc2U7XG4gIGxldCBpc1JldmFsaWRhdGlvblJlcXVpcmVkID0gZmFsc2U7XG4gIGxldCBjYW5jZWxsZWRGZXRjaGVyTG9hZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgZmV0Y2hDb250cm9sbGVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCBpbmNyZW1lbnRpbmdMb2FkSWQgPSAwO1xuICBsZXQgcGVuZGluZ05hdmlnYXRpb25Mb2FkSWQgPSAtMTtcbiAgbGV0IGZldGNoUmVsb2FkSWRzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgbGV0IGZldGNoUmVkaXJlY3RJZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgZmV0Y2hMb2FkTWF0Y2hlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCBhY3RpdmVGZXRjaGVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgbGV0IGJsb2NrZXJGdW5jdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBsZXQgdW5ibG9ja0Jsb2NrZXJIaXN0b3J5VXBkYXRlID0gdm9pZCAwO1xuICBsZXQgcGVuZGluZ1JldmFsaWRhdGlvbkRmZCA9IG51bGw7XG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgdW5saXN0ZW5IaXN0b3J5ID0gaW5pdC5oaXN0b3J5Lmxpc3RlbihcbiAgICAgICh7IGFjdGlvbjogaGlzdG9yeUFjdGlvbiwgbG9jYXRpb24sIGRlbHRhIH0pID0+IHtcbiAgICAgICAgaWYgKHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSkge1xuICAgICAgICAgIHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSgpO1xuICAgICAgICAgIHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICBibG9ja2VyRnVuY3Rpb25zLnNpemUgPT09IDAgfHwgZGVsdGEgIT0gbnVsbCxcbiAgICAgICAgICBcIllvdSBhcmUgdHJ5aW5nIHRvIHVzZSBhIGJsb2NrZXIgb24gYSBQT1AgbmF2aWdhdGlvbiB0byBhIGxvY2F0aW9uIHRoYXQgd2FzIG5vdCBjcmVhdGVkIGJ5IEByZW1peC1ydW4vcm91dGVyLiBUaGlzIHdpbGwgZmFpbCBzaWxlbnRseSBpbiBwcm9kdWN0aW9uLiBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IGFyZSBuYXZpZ2F0aW5nIG91dHNpZGUgdGhlIHJvdXRlciB2aWEgYHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZWAvYHdpbmRvdy5sb2NhdGlvbi5oYXNoYCBpbnN0ZWFkIG9mIHVzaW5nIHJvdXRlciBuYXZpZ2F0aW9uIEFQSXMuICBUaGlzIGNhbiBhbHNvIGhhcHBlbiBpZiB5b3UgYXJlIHVzaW5nIGNyZWF0ZUhhc2hSb3V0ZXIgYW5kIHRoZSB1c2VyIG1hbnVhbGx5IGNoYW5nZXMgdGhlIFVSTC5cIlxuICAgICAgICApO1xuICAgICAgICBsZXQgYmxvY2tlcktleSA9IHNob3VsZEJsb2NrTmF2aWdhdGlvbih7XG4gICAgICAgICAgY3VycmVudExvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgICAgICBuZXh0TG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgIGhpc3RvcnlBY3Rpb25cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChibG9ja2VyS2V5ICYmIGRlbHRhICE9IG51bGwpIHtcbiAgICAgICAgICBsZXQgbmV4dEhpc3RvcnlVcGRhdGVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSA9IHJlc29sdmU7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaW5pdC5oaXN0b3J5LmdvKGRlbHRhICogLTEpO1xuICAgICAgICAgIHVwZGF0ZUJsb2NrZXIoYmxvY2tlcktleSwge1xuICAgICAgICAgICAgc3RhdGU6IFwiYmxvY2tlZFwiLFxuICAgICAgICAgICAgbG9jYXRpb24sXG4gICAgICAgICAgICBwcm9jZWVkKCkge1xuICAgICAgICAgICAgICB1cGRhdGVCbG9ja2VyKGJsb2NrZXJLZXksIHtcbiAgICAgICAgICAgICAgICBzdGF0ZTogXCJwcm9jZWVkaW5nXCIsXG4gICAgICAgICAgICAgICAgcHJvY2VlZDogdm9pZCAwLFxuICAgICAgICAgICAgICAgIHJlc2V0OiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgbG9jYXRpb25cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIG5leHRIaXN0b3J5VXBkYXRlUHJvbWlzZS50aGVuKCgpID0+IGluaXQuaGlzdG9yeS5nbyhkZWx0YSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICBsZXQgYmxvY2tlcnMgPSBuZXcgTWFwKHN0YXRlLmJsb2NrZXJzKTtcbiAgICAgICAgICAgICAgYmxvY2tlcnMuc2V0KGJsb2NrZXJLZXksIElETEVfQkxPQ0tFUik7XG4gICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKHsgYmxvY2tlcnMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGFydE5hdmlnYXRpb24oaGlzdG9yeUFjdGlvbiwgbG9jYXRpb24pO1xuICAgICAgfVxuICAgICk7XG4gICAgaWYgKGlzQnJvd3NlcjIpIHtcbiAgICAgIHJlc3RvcmVBcHBsaWVkVHJhbnNpdGlvbnMocm91dGVyV2luZG93LCBhcHBsaWVkVmlld1RyYW5zaXRpb25zKTtcbiAgICAgIGxldCBfc2F2ZUFwcGxpZWRUcmFuc2l0aW9ucyA9ICgpID0+IHBlcnNpc3RBcHBsaWVkVHJhbnNpdGlvbnMocm91dGVyV2luZG93LCBhcHBsaWVkVmlld1RyYW5zaXRpb25zKTtcbiAgICAgIHJvdXRlcldpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgX3NhdmVBcHBsaWVkVHJhbnNpdGlvbnMpO1xuICAgICAgcmVtb3ZlUGFnZUhpZGVFdmVudExpc3RlbmVyID0gKCkgPT4gcm91dGVyV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwYWdlaGlkZVwiLCBfc2F2ZUFwcGxpZWRUcmFuc2l0aW9ucyk7XG4gICAgfVxuICAgIGlmICghc3RhdGUuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHN0YXJ0TmF2aWdhdGlvbihcIlBPUFwiIC8qIFBvcCAqLywgc3RhdGUubG9jYXRpb24sIHtcbiAgICAgICAgaW5pdGlhbEh5ZHJhdGlvbjogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByb3V0ZXI7XG4gIH1cbiAgZnVuY3Rpb24gZGlzcG9zZSgpIHtcbiAgICBpZiAodW5saXN0ZW5IaXN0b3J5KSB7XG4gICAgICB1bmxpc3Rlbkhpc3RvcnkoKTtcbiAgICB9XG4gICAgaWYgKHJlbW92ZVBhZ2VIaWRlRXZlbnRMaXN0ZW5lcikge1xuICAgICAgcmVtb3ZlUGFnZUhpZGVFdmVudExpc3RlbmVyKCk7XG4gICAgfVxuICAgIHN1YnNjcmliZXJzLmNsZWFyKCk7XG4gICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyICYmIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlci5hYm9ydCgpO1xuICAgIHN0YXRlLmZldGNoZXJzLmZvckVhY2goKF8sIGtleSkgPT4gZGVsZXRlRmV0Y2hlcihrZXkpKTtcbiAgICBzdGF0ZS5ibG9ja2Vycy5mb3JFYWNoKChfLCBrZXkpID0+IGRlbGV0ZUJsb2NrZXIoa2V5KSk7XG4gIH1cbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGZuKSB7XG4gICAgc3Vic2NyaWJlcnMuYWRkKGZuKTtcbiAgICByZXR1cm4gKCkgPT4gc3Vic2NyaWJlcnMuZGVsZXRlKGZuKTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVTdGF0ZShuZXdTdGF0ZSwgb3B0cyA9IHt9KSB7XG4gICAgc3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlXG4gICAgfTtcbiAgICBsZXQgdW5tb3VudGVkRmV0Y2hlcnMgPSBbXTtcbiAgICBsZXQgbW91bnRlZEZldGNoZXJzID0gW107XG4gICAgc3RhdGUuZmV0Y2hlcnMuZm9yRWFjaCgoZmV0Y2hlciwga2V5KSA9PiB7XG4gICAgICBpZiAoZmV0Y2hlci5zdGF0ZSA9PT0gXCJpZGxlXCIpIHtcbiAgICAgICAgaWYgKGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uaGFzKGtleSkpIHtcbiAgICAgICAgICB1bm1vdW50ZWRGZXRjaGVycy5wdXNoKGtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW91bnRlZEZldGNoZXJzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIFsuLi5zdWJzY3JpYmVyc10uZm9yRWFjaChcbiAgICAgIChzdWJzY3JpYmVyKSA9PiBzdWJzY3JpYmVyKHN0YXRlLCB7XG4gICAgICAgIGRlbGV0ZWRGZXRjaGVyczogdW5tb3VudGVkRmV0Y2hlcnMsXG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0czogb3B0cy52aWV3VHJhbnNpdGlvbk9wdHMsXG4gICAgICAgIGZsdXNoU3luYzogb3B0cy5mbHVzaFN5bmMgPT09IHRydWVcbiAgICAgIH0pXG4gICAgKTtcbiAgICB1bm1vdW50ZWRGZXRjaGVycy5mb3JFYWNoKChrZXkpID0+IGRlbGV0ZUZldGNoZXIoa2V5KSk7XG4gICAgbW91bnRlZEZldGNoZXJzLmZvckVhY2goKGtleSkgPT4gc3RhdGUuZmV0Y2hlcnMuZGVsZXRlKGtleSkpO1xuICB9XG4gIGZ1bmN0aW9uIGNvbXBsZXRlTmF2aWdhdGlvbihsb2NhdGlvbiwgbmV3U3RhdGUsIHsgZmx1c2hTeW5jIH0gPSB7fSkge1xuICAgIGxldCBpc0FjdGlvblJlbG9hZCA9IHN0YXRlLmFjdGlvbkRhdGEgIT0gbnVsbCAmJiBzdGF0ZS5uYXZpZ2F0aW9uLmZvcm1NZXRob2QgIT0gbnVsbCAmJiBpc011dGF0aW9uTWV0aG9kKHN0YXRlLm5hdmlnYXRpb24uZm9ybU1ldGhvZCkgJiYgc3RhdGUubmF2aWdhdGlvbi5zdGF0ZSA9PT0gXCJsb2FkaW5nXCIgJiYgbG9jYXRpb24uc3RhdGU/Ll9pc1JlZGlyZWN0ICE9PSB0cnVlO1xuICAgIGxldCBhY3Rpb25EYXRhO1xuICAgIGlmIChuZXdTdGF0ZS5hY3Rpb25EYXRhKSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXMobmV3U3RhdGUuYWN0aW9uRGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICBhY3Rpb25EYXRhID0gbmV3U3RhdGUuYWN0aW9uRGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGlvbkRhdGEgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNBY3Rpb25SZWxvYWQpIHtcbiAgICAgIGFjdGlvbkRhdGEgPSBzdGF0ZS5hY3Rpb25EYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rpb25EYXRhID0gbnVsbDtcbiAgICB9XG4gICAgbGV0IGxvYWRlckRhdGEgPSBuZXdTdGF0ZS5sb2FkZXJEYXRhID8gbWVyZ2VMb2FkZXJEYXRhKFxuICAgICAgc3RhdGUubG9hZGVyRGF0YSxcbiAgICAgIG5ld1N0YXRlLmxvYWRlckRhdGEsXG4gICAgICBuZXdTdGF0ZS5tYXRjaGVzIHx8IFtdLFxuICAgICAgbmV3U3RhdGUuZXJyb3JzXG4gICAgKSA6IHN0YXRlLmxvYWRlckRhdGE7XG4gICAgbGV0IGJsb2NrZXJzID0gc3RhdGUuYmxvY2tlcnM7XG4gICAgaWYgKGJsb2NrZXJzLnNpemUgPiAwKSB7XG4gICAgICBibG9ja2VycyA9IG5ldyBNYXAoYmxvY2tlcnMpO1xuICAgICAgYmxvY2tlcnMuZm9yRWFjaCgoXywgaykgPT4gYmxvY2tlcnMuc2V0KGssIElETEVfQkxPQ0tFUikpO1xuICAgIH1cbiAgICBsZXQgcHJldmVudFNjcm9sbFJlc2V0ID0gcGVuZGluZ1ByZXZlbnRTY3JvbGxSZXNldCA9PT0gdHJ1ZSB8fCBzdGF0ZS5uYXZpZ2F0aW9uLmZvcm1NZXRob2QgIT0gbnVsbCAmJiBpc011dGF0aW9uTWV0aG9kKHN0YXRlLm5hdmlnYXRpb24uZm9ybU1ldGhvZCkgJiYgbG9jYXRpb24uc3RhdGU/Ll9pc1JlZGlyZWN0ICE9PSB0cnVlO1xuICAgIGlmIChpbkZsaWdodERhdGFSb3V0ZXMpIHtcbiAgICAgIGRhdGFSb3V0ZXMgPSBpbkZsaWdodERhdGFSb3V0ZXM7XG4gICAgICBpbkZsaWdodERhdGFSb3V0ZXMgPSB2b2lkIDA7XG4gICAgfVxuICAgIGlmIChpc1VuaW50ZXJydXB0ZWRSZXZhbGlkYXRpb24pIHtcbiAgICB9IGVsc2UgaWYgKHBlbmRpbmdBY3Rpb24gPT09IFwiUE9QXCIgLyogUG9wICovKSB7XG4gICAgfSBlbHNlIGlmIChwZW5kaW5nQWN0aW9uID09PSBcIlBVU0hcIiAvKiBQdXNoICovKSB7XG4gICAgICBpbml0Lmhpc3RvcnkucHVzaChsb2NhdGlvbiwgbG9jYXRpb24uc3RhdGUpO1xuICAgIH0gZWxzZSBpZiAocGVuZGluZ0FjdGlvbiA9PT0gXCJSRVBMQUNFXCIgLyogUmVwbGFjZSAqLykge1xuICAgICAgaW5pdC5oaXN0b3J5LnJlcGxhY2UobG9jYXRpb24sIGxvY2F0aW9uLnN0YXRlKTtcbiAgICB9XG4gICAgbGV0IHZpZXdUcmFuc2l0aW9uT3B0cztcbiAgICBpZiAocGVuZGluZ0FjdGlvbiA9PT0gXCJQT1BcIiAvKiBQb3AgKi8pIHtcbiAgICAgIGxldCBwcmlvclBhdGhzID0gYXBwbGllZFZpZXdUcmFuc2l0aW9ucy5nZXQoc3RhdGUubG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgaWYgKHByaW9yUGF0aHMgJiYgcHJpb3JQYXRocy5oYXMobG9jYXRpb24ucGF0aG5hbWUpKSB7XG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0cyA9IHtcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgICAgIG5leHRMb2NhdGlvbjogbG9jYXRpb25cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoYXBwbGllZFZpZXdUcmFuc2l0aW9ucy5oYXMobG9jYXRpb24ucGF0aG5hbWUpKSB7XG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0cyA9IHtcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgIG5leHRMb2NhdGlvbjogc3RhdGUubG9jYXRpb25cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBlbmRpbmdWaWV3VHJhbnNpdGlvbkVuYWJsZWQpIHtcbiAgICAgIGxldCB0b1BhdGhzID0gYXBwbGllZFZpZXdUcmFuc2l0aW9ucy5nZXQoc3RhdGUubG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgaWYgKHRvUGF0aHMpIHtcbiAgICAgICAgdG9QYXRocy5hZGQobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9QYXRocyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtsb2NhdGlvbi5wYXRobmFtZV0pO1xuICAgICAgICBhcHBsaWVkVmlld1RyYW5zaXRpb25zLnNldChzdGF0ZS5sb2NhdGlvbi5wYXRobmFtZSwgdG9QYXRocyk7XG4gICAgICB9XG4gICAgICB2aWV3VHJhbnNpdGlvbk9wdHMgPSB7XG4gICAgICAgIGN1cnJlbnRMb2NhdGlvbjogc3RhdGUubG9jYXRpb24sXG4gICAgICAgIG5leHRMb2NhdGlvbjogbG9jYXRpb25cbiAgICAgIH07XG4gICAgfVxuICAgIHVwZGF0ZVN0YXRlKFxuICAgICAge1xuICAgICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgICAgLy8gbWF0Y2hlcywgZXJyb3JzLCBmZXRjaGVycyBnbyB0aHJvdWdoIGFzLWlzXG4gICAgICAgIGFjdGlvbkRhdGEsXG4gICAgICAgIGxvYWRlckRhdGEsXG4gICAgICAgIGhpc3RvcnlBY3Rpb246IHBlbmRpbmdBY3Rpb24sXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBpbml0aWFsaXplZDogdHJ1ZSxcbiAgICAgICAgbmF2aWdhdGlvbjogSURMRV9OQVZJR0FUSU9OLFxuICAgICAgICByZXZhbGlkYXRpb246IFwiaWRsZVwiLFxuICAgICAgICByZXN0b3JlU2Nyb2xsUG9zaXRpb246IGdldFNhdmVkU2Nyb2xsUG9zaXRpb24oXG4gICAgICAgICAgbG9jYXRpb24sXG4gICAgICAgICAgbmV3U3RhdGUubWF0Y2hlcyB8fCBzdGF0ZS5tYXRjaGVzXG4gICAgICAgICksXG4gICAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgICAgYmxvY2tlcnNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0cyxcbiAgICAgICAgZmx1c2hTeW5jOiBmbHVzaFN5bmMgPT09IHRydWVcbiAgICAgIH1cbiAgICApO1xuICAgIHBlbmRpbmdBY3Rpb24gPSBcIlBPUFwiIC8qIFBvcCAqLztcbiAgICBwZW5kaW5nUHJldmVudFNjcm9sbFJlc2V0ID0gZmFsc2U7XG4gICAgcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICAgIGlzVW5pbnRlcnJ1cHRlZFJldmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgICBwZW5kaW5nUmV2YWxpZGF0aW9uRGZkPy5yZXNvbHZlKCk7XG4gICAgcGVuZGluZ1JldmFsaWRhdGlvbkRmZCA9IG51bGw7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGUodG8sIG9wdHMpIHtcbiAgICBpZiAodHlwZW9mIHRvID09PSBcIm51bWJlclwiKSB7XG4gICAgICBpbml0Lmhpc3RvcnkuZ28odG8pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVUbyhcbiAgICAgIHN0YXRlLmxvY2F0aW9uLFxuICAgICAgc3RhdGUubWF0Y2hlcyxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgdG8sXG4gICAgICBvcHRzPy5mcm9tUm91dGVJZCxcbiAgICAgIG9wdHM/LnJlbGF0aXZlXG4gICAgKTtcbiAgICBsZXQgeyBwYXRoLCBzdWJtaXNzaW9uLCBlcnJvciB9ID0gbm9ybWFsaXplTmF2aWdhdGVPcHRpb25zKFxuICAgICAgZmFsc2UsXG4gICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgIG9wdHNcbiAgICApO1xuICAgIGxldCBjdXJyZW50TG9jYXRpb24gPSBzdGF0ZS5sb2NhdGlvbjtcbiAgICBsZXQgbmV4dExvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oc3RhdGUubG9jYXRpb24sIHBhdGgsIG9wdHMgJiYgb3B0cy5zdGF0ZSk7XG4gICAgbmV4dExvY2F0aW9uID0ge1xuICAgICAgLi4ubmV4dExvY2F0aW9uLFxuICAgICAgLi4uaW5pdC5oaXN0b3J5LmVuY29kZUxvY2F0aW9uKG5leHRMb2NhdGlvbilcbiAgICB9O1xuICAgIGxldCB1c2VyUmVwbGFjZSA9IG9wdHMgJiYgb3B0cy5yZXBsYWNlICE9IG51bGwgPyBvcHRzLnJlcGxhY2UgOiB2b2lkIDA7XG4gICAgbGV0IGhpc3RvcnlBY3Rpb24gPSBcIlBVU0hcIiAvKiBQdXNoICovO1xuICAgIGlmICh1c2VyUmVwbGFjZSA9PT0gdHJ1ZSkge1xuICAgICAgaGlzdG9yeUFjdGlvbiA9IFwiUkVQTEFDRVwiIC8qIFJlcGxhY2UgKi87XG4gICAgfSBlbHNlIGlmICh1c2VyUmVwbGFjZSA9PT0gZmFsc2UpIHtcbiAgICB9IGVsc2UgaWYgKHN1Ym1pc3Npb24gIT0gbnVsbCAmJiBpc011dGF0aW9uTWV0aG9kKHN1Ym1pc3Npb24uZm9ybU1ldGhvZCkgJiYgc3VibWlzc2lvbi5mb3JtQWN0aW9uID09PSBzdGF0ZS5sb2NhdGlvbi5wYXRobmFtZSArIHN0YXRlLmxvY2F0aW9uLnNlYXJjaCkge1xuICAgICAgaGlzdG9yeUFjdGlvbiA9IFwiUkVQTEFDRVwiIC8qIFJlcGxhY2UgKi87XG4gICAgfVxuICAgIGxldCBwcmV2ZW50U2Nyb2xsUmVzZXQgPSBvcHRzICYmIFwicHJldmVudFNjcm9sbFJlc2V0XCIgaW4gb3B0cyA/IG9wdHMucHJldmVudFNjcm9sbFJlc2V0ID09PSB0cnVlIDogdm9pZCAwO1xuICAgIGxldCBmbHVzaFN5bmMgPSAob3B0cyAmJiBvcHRzLmZsdXNoU3luYykgPT09IHRydWU7XG4gICAgbGV0IGJsb2NrZXJLZXkgPSBzaG91bGRCbG9ja05hdmlnYXRpb24oe1xuICAgICAgY3VycmVudExvY2F0aW9uLFxuICAgICAgbmV4dExvY2F0aW9uLFxuICAgICAgaGlzdG9yeUFjdGlvblxuICAgIH0pO1xuICAgIGlmIChibG9ja2VyS2V5KSB7XG4gICAgICB1cGRhdGVCbG9ja2VyKGJsb2NrZXJLZXksIHtcbiAgICAgICAgc3RhdGU6IFwiYmxvY2tlZFwiLFxuICAgICAgICBsb2NhdGlvbjogbmV4dExvY2F0aW9uLFxuICAgICAgICBwcm9jZWVkKCkge1xuICAgICAgICAgIHVwZGF0ZUJsb2NrZXIoYmxvY2tlcktleSwge1xuICAgICAgICAgICAgc3RhdGU6IFwicHJvY2VlZGluZ1wiLFxuICAgICAgICAgICAgcHJvY2VlZDogdm9pZCAwLFxuICAgICAgICAgICAgcmVzZXQ6IHZvaWQgMCxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBuZXh0TG9jYXRpb25cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBuYXZpZ2F0ZSh0bywgb3B0cyk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgIGxldCBibG9ja2VycyA9IG5ldyBNYXAoc3RhdGUuYmxvY2tlcnMpO1xuICAgICAgICAgIGJsb2NrZXJzLnNldChibG9ja2VyS2V5LCBJRExFX0JMT0NLRVIpO1xuICAgICAgICAgIHVwZGF0ZVN0YXRlKHsgYmxvY2tlcnMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCBzdGFydE5hdmlnYXRpb24oaGlzdG9yeUFjdGlvbiwgbmV4dExvY2F0aW9uLCB7XG4gICAgICBzdWJtaXNzaW9uLFxuICAgICAgLy8gU2VuZCB0aHJvdWdoIHRoZSBmb3JtRGF0YSBzZXJpYWxpemF0aW9uIGVycm9yIGlmIHdlIGhhdmUgb25lIHNvIHdlIGNhblxuICAgICAgLy8gcmVuZGVyIGF0IHRoZSByaWdodCBlcnJvciBib3VuZGFyeSBhZnRlciB3ZSBtYXRjaCByb3V0ZXNcbiAgICAgIHBlbmRpbmdFcnJvcjogZXJyb3IsXG4gICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICByZXBsYWNlOiBvcHRzICYmIG9wdHMucmVwbGFjZSxcbiAgICAgIGVuYWJsZVZpZXdUcmFuc2l0aW9uOiBvcHRzICYmIG9wdHMudmlld1RyYW5zaXRpb24sXG4gICAgICBmbHVzaFN5bmNcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiByZXZhbGlkYXRlKCkge1xuICAgIGlmICghcGVuZGluZ1JldmFsaWRhdGlvbkRmZCkge1xuICAgICAgcGVuZGluZ1JldmFsaWRhdGlvbkRmZCA9IGNyZWF0ZURlZmVycmVkKCk7XG4gICAgfVxuICAgIGludGVycnVwdEFjdGl2ZUxvYWRzKCk7XG4gICAgdXBkYXRlU3RhdGUoeyByZXZhbGlkYXRpb246IFwibG9hZGluZ1wiIH0pO1xuICAgIGxldCBwcm9taXNlID0gcGVuZGluZ1JldmFsaWRhdGlvbkRmZC5wcm9taXNlO1xuICAgIGlmIChzdGF0ZS5uYXZpZ2F0aW9uLnN0YXRlID09PSBcInN1Ym1pdHRpbmdcIikge1xuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5uYXZpZ2F0aW9uLnN0YXRlID09PSBcImlkbGVcIikge1xuICAgICAgc3RhcnROYXZpZ2F0aW9uKHN0YXRlLmhpc3RvcnlBY3Rpb24sIHN0YXRlLmxvY2F0aW9uLCB7XG4gICAgICAgIHN0YXJ0VW5pbnRlcnJ1cHRlZFJldmFsaWRhdGlvbjogdHJ1ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gICAgc3RhcnROYXZpZ2F0aW9uKFxuICAgICAgcGVuZGluZ0FjdGlvbiB8fCBzdGF0ZS5oaXN0b3J5QWN0aW9uLFxuICAgICAgc3RhdGUubmF2aWdhdGlvbi5sb2NhdGlvbixcbiAgICAgIHtcbiAgICAgICAgb3ZlcnJpZGVOYXZpZ2F0aW9uOiBzdGF0ZS5uYXZpZ2F0aW9uLFxuICAgICAgICAvLyBQcm94eSB0aHJvdWdoIGFueSByZW5kaW5nIHZpZXcgdHJhbnNpdGlvblxuICAgICAgICBlbmFibGVWaWV3VHJhbnNpdGlvbjogcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA9PT0gdHJ1ZVxuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gc3RhcnROYXZpZ2F0aW9uKGhpc3RvcnlBY3Rpb24sIGxvY2F0aW9uLCBvcHRzKSB7XG4gICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyICYmIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlci5hYm9ydCgpO1xuICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG51bGw7XG4gICAgcGVuZGluZ0FjdGlvbiA9IGhpc3RvcnlBY3Rpb247XG4gICAgaXNVbmludGVycnVwdGVkUmV2YWxpZGF0aW9uID0gKG9wdHMgJiYgb3B0cy5zdGFydFVuaW50ZXJydXB0ZWRSZXZhbGlkYXRpb24pID09PSB0cnVlO1xuICAgIHNhdmVTY3JvbGxQb3NpdGlvbihzdGF0ZS5sb2NhdGlvbiwgc3RhdGUubWF0Y2hlcyk7XG4gICAgcGVuZGluZ1ByZXZlbnRTY3JvbGxSZXNldCA9IChvcHRzICYmIG9wdHMucHJldmVudFNjcm9sbFJlc2V0KSA9PT0gdHJ1ZTtcbiAgICBwZW5kaW5nVmlld1RyYW5zaXRpb25FbmFibGVkID0gKG9wdHMgJiYgb3B0cy5lbmFibGVWaWV3VHJhbnNpdGlvbikgPT09IHRydWU7XG4gICAgbGV0IHJvdXRlc1RvVXNlID0gaW5GbGlnaHREYXRhUm91dGVzIHx8IGRhdGFSb3V0ZXM7XG4gICAgbGV0IGxvYWRpbmdOYXZpZ2F0aW9uID0gb3B0cyAmJiBvcHRzLm92ZXJyaWRlTmF2aWdhdGlvbjtcbiAgICBsZXQgbWF0Y2hlcyA9IG1hdGNoUm91dGVzKHJvdXRlc1RvVXNlLCBsb2NhdGlvbiwgYmFzZW5hbWUpO1xuICAgIGxldCBmbHVzaFN5bmMgPSAob3B0cyAmJiBvcHRzLmZsdXNoU3luYykgPT09IHRydWU7XG4gICAgbGV0IGZvZ09mV2FyID0gY2hlY2tGb2dPZldhcihtYXRjaGVzLCByb3V0ZXNUb1VzZSwgbG9jYXRpb24ucGF0aG5hbWUpO1xuICAgIGlmIChmb2dPZldhci5hY3RpdmUgJiYgZm9nT2ZXYXIubWF0Y2hlcykge1xuICAgICAgbWF0Y2hlcyA9IGZvZ09mV2FyLm1hdGNoZXM7XG4gICAgfVxuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgbGV0IHsgZXJyb3IsIG5vdEZvdW5kTWF0Y2hlcywgcm91dGUgfSA9IGhhbmRsZU5hdmlnYXRpb25hbDQwNChcbiAgICAgICAgbG9jYXRpb24ucGF0aG5hbWVcbiAgICAgICk7XG4gICAgICBjb21wbGV0ZU5hdmlnYXRpb24oXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgbWF0Y2hlczogbm90Rm91bmRNYXRjaGVzLFxuICAgICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICAgIGVycm9yczoge1xuICAgICAgICAgICAgW3JvdXRlLmlkXTogZXJyb3JcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChzdGF0ZS5pbml0aWFsaXplZCAmJiAhaXNSZXZhbGlkYXRpb25SZXF1aXJlZCAmJiBpc0hhc2hDaGFuZ2VPbmx5KHN0YXRlLmxvY2F0aW9uLCBsb2NhdGlvbikgJiYgIShvcHRzICYmIG9wdHMuc3VibWlzc2lvbiAmJiBpc011dGF0aW9uTWV0aG9kKG9wdHMuc3VibWlzc2lvbi5mb3JtTWV0aG9kKSkpIHtcbiAgICAgIGNvbXBsZXRlTmF2aWdhdGlvbihsb2NhdGlvbiwgeyBtYXRjaGVzIH0sIHsgZmx1c2hTeW5jIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgbGV0IHJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyLnNpZ25hbCxcbiAgICAgIG9wdHMgJiYgb3B0cy5zdWJtaXNzaW9uXG4gICAgKTtcbiAgICBsZXQgcGVuZGluZ0FjdGlvblJlc3VsdDtcbiAgICBpZiAob3B0cyAmJiBvcHRzLnBlbmRpbmdFcnJvcikge1xuICAgICAgcGVuZGluZ0FjdGlvblJlc3VsdCA9IFtcbiAgICAgICAgZmluZE5lYXJlc3RCb3VuZGFyeShtYXRjaGVzKS5yb3V0ZS5pZCxcbiAgICAgICAgeyB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sIGVycm9yOiBvcHRzLnBlbmRpbmdFcnJvciB9XG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAob3B0cyAmJiBvcHRzLnN1Ym1pc3Npb24gJiYgaXNNdXRhdGlvbk1ldGhvZChvcHRzLnN1Ym1pc3Npb24uZm9ybU1ldGhvZCkpIHtcbiAgICAgIGxldCBhY3Rpb25SZXN1bHQgPSBhd2FpdCBoYW5kbGVBY3Rpb24oXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBvcHRzLnN1Ym1pc3Npb24sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGZvZ09mV2FyLmFjdGl2ZSxcbiAgICAgICAgeyByZXBsYWNlOiBvcHRzLnJlcGxhY2UsIGZsdXNoU3luYyB9XG4gICAgICApO1xuICAgICAgaWYgKGFjdGlvblJlc3VsdC5zaG9ydENpcmN1aXRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uUmVzdWx0LnBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgICAgICAgbGV0IFtyb3V0ZUlkLCByZXN1bHRdID0gYWN0aW9uUmVzdWx0LnBlbmRpbmdBY3Rpb25SZXN1bHQ7XG4gICAgICAgIGlmIChpc0Vycm9yUmVzdWx0KHJlc3VsdCkgJiYgaXNSb3V0ZUVycm9yUmVzcG9uc2UocmVzdWx0LmVycm9yKSAmJiByZXN1bHQuZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBudWxsO1xuICAgICAgICAgIGNvbXBsZXRlTmF2aWdhdGlvbihsb2NhdGlvbiwge1xuICAgICAgICAgICAgbWF0Y2hlczogYWN0aW9uUmVzdWx0Lm1hdGNoZXMsXG4gICAgICAgICAgICBsb2FkZXJEYXRhOiB7fSxcbiAgICAgICAgICAgIGVycm9yczoge1xuICAgICAgICAgICAgICBbcm91dGVJZF06IHJlc3VsdC5lcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbWF0Y2hlcyA9IGFjdGlvblJlc3VsdC5tYXRjaGVzIHx8IG1hdGNoZXM7XG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0ID0gYWN0aW9uUmVzdWx0LnBlbmRpbmdBY3Rpb25SZXN1bHQ7XG4gICAgICBsb2FkaW5nTmF2aWdhdGlvbiA9IGdldExvYWRpbmdOYXZpZ2F0aW9uKGxvY2F0aW9uLCBvcHRzLnN1Ym1pc3Npb24pO1xuICAgICAgZmx1c2hTeW5jID0gZmFsc2U7XG4gICAgICBmb2dPZldhci5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgICAgaW5pdC5oaXN0b3J5LFxuICAgICAgICByZXF1ZXN0LnVybCxcbiAgICAgICAgcmVxdWVzdC5zaWduYWxcbiAgICAgICk7XG4gICAgfVxuICAgIGxldCB7XG4gICAgICBzaG9ydENpcmN1aXRlZCxcbiAgICAgIG1hdGNoZXM6IHVwZGF0ZWRNYXRjaGVzLFxuICAgICAgbG9hZGVyRGF0YSxcbiAgICAgIGVycm9yc1xuICAgIH0gPSBhd2FpdCBoYW5kbGVMb2FkZXJzKFxuICAgICAgcmVxdWVzdCxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGZvZ09mV2FyLmFjdGl2ZSxcbiAgICAgIGxvYWRpbmdOYXZpZ2F0aW9uLFxuICAgICAgb3B0cyAmJiBvcHRzLnN1Ym1pc3Npb24sXG4gICAgICBvcHRzICYmIG9wdHMuZmV0Y2hlclN1Ym1pc3Npb24sXG4gICAgICBvcHRzICYmIG9wdHMucmVwbGFjZSxcbiAgICAgIG9wdHMgJiYgb3B0cy5pbml0aWFsSHlkcmF0aW9uID09PSB0cnVlLFxuICAgICAgZmx1c2hTeW5jLFxuICAgICAgcGVuZGluZ0FjdGlvblJlc3VsdFxuICAgICk7XG4gICAgaWYgKHNob3J0Q2lyY3VpdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG51bGw7XG4gICAgY29tcGxldGVOYXZpZ2F0aW9uKGxvY2F0aW9uLCB7XG4gICAgICBtYXRjaGVzOiB1cGRhdGVkTWF0Y2hlcyB8fCBtYXRjaGVzLFxuICAgICAgLi4uZ2V0QWN0aW9uRGF0YUZvckNvbW1pdChwZW5kaW5nQWN0aW9uUmVzdWx0KSxcbiAgICAgIGxvYWRlckRhdGEsXG4gICAgICBlcnJvcnNcbiAgICB9KTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVBY3Rpb24ocmVxdWVzdCwgbG9jYXRpb24sIHN1Ym1pc3Npb24sIG1hdGNoZXMsIGlzRm9nT2ZXYXIsIG9wdHMgPSB7fSkge1xuICAgIGludGVycnVwdEFjdGl2ZUxvYWRzKCk7XG4gICAgbGV0IG5hdmlnYXRpb24gPSBnZXRTdWJtaXR0aW5nTmF2aWdhdGlvbihsb2NhdGlvbiwgc3VibWlzc2lvbik7XG4gICAgdXBkYXRlU3RhdGUoeyBuYXZpZ2F0aW9uIH0sIHsgZmx1c2hTeW5jOiBvcHRzLmZsdXNoU3luYyA9PT0gdHJ1ZSB9KTtcbiAgICBpZiAoaXNGb2dPZldhcikge1xuICAgICAgbGV0IGRpc2NvdmVyUmVzdWx0ID0gYXdhaXQgZGlzY292ZXJSb3V0ZXMoXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICByZXF1ZXN0LnNpZ25hbFxuICAgICAgKTtcbiAgICAgIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgICAgfSBlbHNlIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgbGV0IGJvdW5kYXJ5SWQgPSBmaW5kTmVhcmVzdEJvdW5kYXJ5KGRpc2NvdmVyUmVzdWx0LnBhcnRpYWxNYXRjaGVzKS5yb3V0ZS5pZDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXRjaGVzOiBkaXNjb3ZlclJlc3VsdC5wYXJ0aWFsTWF0Y2hlcyxcbiAgICAgICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbXG4gICAgICAgICAgICBib3VuZGFyeUlkLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgICAgICAgIGVycm9yOiBkaXNjb3ZlclJlc3VsdC5lcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoIWRpc2NvdmVyUmVzdWx0Lm1hdGNoZXMpIHtcbiAgICAgICAgbGV0IHsgbm90Rm91bmRNYXRjaGVzLCBlcnJvciwgcm91dGUgfSA9IGhhbmRsZU5hdmlnYXRpb25hbDQwNChcbiAgICAgICAgICBsb2NhdGlvbi5wYXRobmFtZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hdGNoZXM6IG5vdEZvdW5kTWF0Y2hlcyxcbiAgICAgICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbXG4gICAgICAgICAgICByb3V0ZS5pZCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLFxuICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcmVzdWx0O1xuICAgIGxldCBhY3Rpb25NYXRjaCA9IGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIGxvY2F0aW9uKTtcbiAgICBpZiAoIWFjdGlvbk1hdGNoLnJvdXRlLmFjdGlvbiAmJiAhYWN0aW9uTWF0Y2gucm91dGUubGF6eSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgIGVycm9yOiBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNSwge1xuICAgICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgICAgcGF0aG5hbWU6IGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICAgIHJvdXRlSWQ6IGFjdGlvbk1hdGNoLnJvdXRlLmlkXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGNhbGxEYXRhU3RyYXRlZ3koXG4gICAgICAgIFwiYWN0aW9uXCIsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBbYWN0aW9uTWF0Y2hdLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBudWxsXG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0c1thY3Rpb25NYXRjaC5yb3V0ZS5pZF07XG4gICAgICBpZiAocmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBsZXQgcmVwbGFjZTI7XG4gICAgICBpZiAob3B0cyAmJiBvcHRzLnJlcGxhY2UgIT0gbnVsbCkge1xuICAgICAgICByZXBsYWNlMiA9IG9wdHMucmVwbGFjZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBsb2NhdGlvbjIgPSBub3JtYWxpemVSZWRpcmVjdExvY2F0aW9uKFxuICAgICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmdldChcIkxvY2F0aW9uXCIpLFxuICAgICAgICAgIG5ldyBVUkwocmVxdWVzdC51cmwpLFxuICAgICAgICAgIGJhc2VuYW1lXG4gICAgICAgICk7XG4gICAgICAgIHJlcGxhY2UyID0gbG9jYXRpb24yID09PSBzdGF0ZS5sb2NhdGlvbi5wYXRobmFtZSArIHN0YXRlLmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKHJlcXVlc3QsIHJlc3VsdCwgdHJ1ZSwge1xuICAgICAgICBzdWJtaXNzaW9uLFxuICAgICAgICByZXBsYWNlOiByZXBsYWNlMlxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBpZiAoaXNFcnJvclJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBsZXQgYm91bmRhcnlNYXRjaCA9IGZpbmROZWFyZXN0Qm91bmRhcnkobWF0Y2hlcywgYWN0aW9uTWF0Y2gucm91dGUuaWQpO1xuICAgICAgaWYgKChvcHRzICYmIG9wdHMucmVwbGFjZSkgIT09IHRydWUpIHtcbiAgICAgICAgcGVuZGluZ0FjdGlvbiA9IFwiUFVTSFwiIC8qIFB1c2ggKi87XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbYm91bmRhcnlNYXRjaC5yb3V0ZS5pZCwgcmVzdWx0XVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoZXMsXG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbYWN0aW9uTWF0Y2gucm91dGUuaWQsIHJlc3VsdF1cbiAgICB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUxvYWRlcnMocmVxdWVzdCwgbG9jYXRpb24sIG1hdGNoZXMsIGlzRm9nT2ZXYXIsIG92ZXJyaWRlTmF2aWdhdGlvbiwgc3VibWlzc2lvbiwgZmV0Y2hlclN1Ym1pc3Npb24sIHJlcGxhY2UyLCBpbml0aWFsSHlkcmF0aW9uLCBmbHVzaFN5bmMsIHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgICBsZXQgbG9hZGluZ05hdmlnYXRpb24gPSBvdmVycmlkZU5hdmlnYXRpb24gfHwgZ2V0TG9hZGluZ05hdmlnYXRpb24obG9jYXRpb24sIHN1Ym1pc3Npb24pO1xuICAgIGxldCBhY3RpdmVTdWJtaXNzaW9uID0gc3VibWlzc2lvbiB8fCBmZXRjaGVyU3VibWlzc2lvbiB8fCBnZXRTdWJtaXNzaW9uRnJvbU5hdmlnYXRpb24obG9hZGluZ05hdmlnYXRpb24pO1xuICAgIGxldCBzaG91bGRVcGRhdGVOYXZpZ2F0aW9uU3RhdGUgPSAhaXNVbmludGVycnVwdGVkUmV2YWxpZGF0aW9uICYmICFpbml0aWFsSHlkcmF0aW9uO1xuICAgIGlmIChpc0ZvZ09mV2FyKSB7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlTmF2aWdhdGlvblN0YXRlKSB7XG4gICAgICAgIGxldCBhY3Rpb25EYXRhID0gZ2V0VXBkYXRlZEFjdGlvbkRhdGEocGVuZGluZ0FjdGlvblJlc3VsdCk7XG4gICAgICAgIHVwZGF0ZVN0YXRlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hdmlnYXRpb246IGxvYWRpbmdOYXZpZ2F0aW9uLFxuICAgICAgICAgICAgLi4uYWN0aW9uRGF0YSAhPT0gdm9pZCAwID8geyBhY3Rpb25EYXRhIH0gOiB7fVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmx1c2hTeW5jXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgbGV0IGRpc2NvdmVyUmVzdWx0ID0gYXdhaXQgZGlzY292ZXJSb3V0ZXMoXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICByZXF1ZXN0LnNpZ25hbFxuICAgICAgKTtcbiAgICAgIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgICAgfSBlbHNlIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgbGV0IGJvdW5kYXJ5SWQgPSBmaW5kTmVhcmVzdEJvdW5kYXJ5KGRpc2NvdmVyUmVzdWx0LnBhcnRpYWxNYXRjaGVzKS5yb3V0ZS5pZDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXRjaGVzOiBkaXNjb3ZlclJlc3VsdC5wYXJ0aWFsTWF0Y2hlcyxcbiAgICAgICAgICBsb2FkZXJEYXRhOiB7fSxcbiAgICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICAgIFtib3VuZGFyeUlkXTogZGlzY292ZXJSZXN1bHQuZXJyb3JcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKCFkaXNjb3ZlclJlc3VsdC5tYXRjaGVzKSB7XG4gICAgICAgIGxldCB7IGVycm9yLCBub3RGb3VuZE1hdGNoZXMsIHJvdXRlIH0gPSBoYW5kbGVOYXZpZ2F0aW9uYWw0MDQoXG4gICAgICAgICAgbG9jYXRpb24ucGF0aG5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXRjaGVzOiBub3RGb3VuZE1hdGNoZXMsXG4gICAgICAgICAgbG9hZGVyRGF0YToge30sXG4gICAgICAgICAgZXJyb3JzOiB7XG4gICAgICAgICAgICBbcm91dGUuaWRdOiBlcnJvclxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICBsZXQgW21hdGNoZXNUb0xvYWQsIHJldmFsaWRhdGluZ0ZldGNoZXJzXSA9IGdldE1hdGNoZXNUb0xvYWQoXG4gICAgICBpbml0Lmhpc3RvcnksXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBhY3RpdmVTdWJtaXNzaW9uLFxuICAgICAgbG9jYXRpb24sXG4gICAgICBpbml0aWFsSHlkcmF0aW9uID09PSB0cnVlLFxuICAgICAgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCxcbiAgICAgIGNhbmNlbGxlZEZldGNoZXJMb2FkcyxcbiAgICAgIGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24sXG4gICAgICBmZXRjaExvYWRNYXRjaGVzLFxuICAgICAgZmV0Y2hSZWRpcmVjdElkcyxcbiAgICAgIHJvdXRlc1RvVXNlLFxuICAgICAgYmFzZW5hbWUsXG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0XG4gICAgKTtcbiAgICBwZW5kaW5nTmF2aWdhdGlvbkxvYWRJZCA9ICsraW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGlmIChtYXRjaGVzVG9Mb2FkLmxlbmd0aCA9PT0gMCAmJiByZXZhbGlkYXRpbmdGZXRjaGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxldCB1cGRhdGVkRmV0Y2hlcnMyID0gbWFya0ZldGNoUmVkaXJlY3RzRG9uZSgpO1xuICAgICAgY29tcGxldGVOYXZpZ2F0aW9uKFxuICAgICAgICBsb2NhdGlvbixcbiAgICAgICAge1xuICAgICAgICAgIG1hdGNoZXMsXG4gICAgICAgICAgbG9hZGVyRGF0YToge30sXG4gICAgICAgICAgLy8gQ29tbWl0IHBlbmRpbmcgZXJyb3IgaWYgd2UncmUgc2hvcnQgY2lyY3VpdGluZ1xuICAgICAgICAgIGVycm9yczogcGVuZGluZ0FjdGlvblJlc3VsdCAmJiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8geyBbcGVuZGluZ0FjdGlvblJlc3VsdFswXV06IHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0uZXJyb3IgfSA6IG51bGwsXG4gICAgICAgICAgLi4uZ2V0QWN0aW9uRGF0YUZvckNvbW1pdChwZW5kaW5nQWN0aW9uUmVzdWx0KSxcbiAgICAgICAgICAuLi51cGRhdGVkRmV0Y2hlcnMyID8geyBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycykgfSA6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICAgICk7XG4gICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBpZiAoc2hvdWxkVXBkYXRlTmF2aWdhdGlvblN0YXRlKSB7XG4gICAgICBsZXQgdXBkYXRlcyA9IHt9O1xuICAgICAgaWYgKCFpc0ZvZ09mV2FyKSB7XG4gICAgICAgIHVwZGF0ZXMubmF2aWdhdGlvbiA9IGxvYWRpbmdOYXZpZ2F0aW9uO1xuICAgICAgICBsZXQgYWN0aW9uRGF0YSA9IGdldFVwZGF0ZWRBY3Rpb25EYXRhKHBlbmRpbmdBY3Rpb25SZXN1bHQpO1xuICAgICAgICBpZiAoYWN0aW9uRGF0YSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgdXBkYXRlcy5hY3Rpb25EYXRhID0gYWN0aW9uRGF0YTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJldmFsaWRhdGluZ0ZldGNoZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdXBkYXRlcy5mZXRjaGVycyA9IGdldFVwZGF0ZWRSZXZhbGlkYXRpbmdGZXRjaGVycyhyZXZhbGlkYXRpbmdGZXRjaGVycyk7XG4gICAgICB9XG4gICAgICB1cGRhdGVTdGF0ZSh1cGRhdGVzLCB7IGZsdXNoU3luYyB9KTtcbiAgICB9XG4gICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZm9yRWFjaCgocmYpID0+IHtcbiAgICAgIGFib3J0RmV0Y2hlcihyZi5rZXkpO1xuICAgICAgaWYgKHJmLmNvbnRyb2xsZXIpIHtcbiAgICAgICAgZmV0Y2hDb250cm9sbGVycy5zZXQocmYua2V5LCByZi5jb250cm9sbGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgYWJvcnRQZW5kaW5nRmV0Y2hSZXZhbGlkYXRpb25zID0gKCkgPT4gcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZm9yRWFjaCgoZikgPT4gYWJvcnRGZXRjaGVyKGYua2V5KSk7XG4gICAgaWYgKHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlcikge1xuICAgICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBcImFib3J0XCIsXG4gICAgICAgIGFib3J0UGVuZGluZ0ZldGNoUmV2YWxpZGF0aW9uc1xuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IHsgbG9hZGVyUmVzdWx0cywgZmV0Y2hlclJlc3VsdHMgfSA9IGF3YWl0IGNhbGxMb2FkZXJzQW5kTWF5YmVSZXNvbHZlRGF0YShcbiAgICAgIHN0YXRlLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIG1hdGNoZXNUb0xvYWQsXG4gICAgICByZXZhbGlkYXRpbmdGZXRjaGVycyxcbiAgICAgIHJlcXVlc3RcbiAgICApO1xuICAgIGlmIChyZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBpZiAocGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyKSB7XG4gICAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgIFwiYWJvcnRcIixcbiAgICAgICAgYWJvcnRQZW5kaW5nRmV0Y2hSZXZhbGlkYXRpb25zXG4gICAgICApO1xuICAgIH1cbiAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyZikgPT4gZmV0Y2hDb250cm9sbGVycy5kZWxldGUocmYua2V5KSk7XG4gICAgbGV0IHJlZGlyZWN0MiA9IGZpbmRSZWRpcmVjdChsb2FkZXJSZXN1bHRzKTtcbiAgICBpZiAocmVkaXJlY3QyKSB7XG4gICAgICBhd2FpdCBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihyZXF1ZXN0LCByZWRpcmVjdDIucmVzdWx0LCB0cnVlLCB7XG4gICAgICAgIHJlcGxhY2U6IHJlcGxhY2UyXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgfVxuICAgIHJlZGlyZWN0MiA9IGZpbmRSZWRpcmVjdChmZXRjaGVyUmVzdWx0cyk7XG4gICAgaWYgKHJlZGlyZWN0Mikge1xuICAgICAgZmV0Y2hSZWRpcmVjdElkcy5hZGQocmVkaXJlY3QyLmtleSk7XG4gICAgICBhd2FpdCBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihyZXF1ZXN0LCByZWRpcmVjdDIucmVzdWx0LCB0cnVlLCB7XG4gICAgICAgIHJlcGxhY2U6IHJlcGxhY2UyXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgfVxuICAgIGxldCB7IGxvYWRlckRhdGEsIGVycm9ycyB9ID0gcHJvY2Vzc0xvYWRlckRhdGEoXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBsb2FkZXJSZXN1bHRzLFxuICAgICAgcGVuZGluZ0FjdGlvblJlc3VsdCxcbiAgICAgIHJldmFsaWRhdGluZ0ZldGNoZXJzLFxuICAgICAgZmV0Y2hlclJlc3VsdHNcbiAgICApO1xuICAgIGlmIChpbml0aWFsSHlkcmF0aW9uICYmIHN0YXRlLmVycm9ycykge1xuICAgICAgZXJyb3JzID0geyAuLi5zdGF0ZS5lcnJvcnMsIC4uLmVycm9ycyB9O1xuICAgIH1cbiAgICBsZXQgdXBkYXRlZEZldGNoZXJzID0gbWFya0ZldGNoUmVkaXJlY3RzRG9uZSgpO1xuICAgIGxldCBkaWRBYm9ydEZldGNoTG9hZHMgPSBhYm9ydFN0YWxlRmV0Y2hMb2FkcyhwZW5kaW5nTmF2aWdhdGlvbkxvYWRJZCk7XG4gICAgbGV0IHNob3VsZFVwZGF0ZUZldGNoZXJzID0gdXBkYXRlZEZldGNoZXJzIHx8IGRpZEFib3J0RmV0Y2hMb2FkcyB8fCByZXZhbGlkYXRpbmdGZXRjaGVycy5sZW5ndGggPiAwO1xuICAgIHJldHVybiB7XG4gICAgICBtYXRjaGVzLFxuICAgICAgbG9hZGVyRGF0YSxcbiAgICAgIGVycm9ycyxcbiAgICAgIC4uLnNob3VsZFVwZGF0ZUZldGNoZXJzID8geyBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycykgfSA6IHt9XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBnZXRVcGRhdGVkQWN0aW9uRGF0YShwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgaWYgKHBlbmRpbmdBY3Rpb25SZXN1bHQgJiYgIWlzRXJyb3JSZXN1bHQocGVuZGluZ0FjdGlvblJlc3VsdFsxXSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtwZW5kaW5nQWN0aW9uUmVzdWx0WzBdXTogcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5kYXRhXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoc3RhdGUuYWN0aW9uRGF0YSkge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHN0YXRlLmFjdGlvbkRhdGEpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5hY3Rpb25EYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBnZXRVcGRhdGVkUmV2YWxpZGF0aW5nRmV0Y2hlcnMocmV2YWxpZGF0aW5nRmV0Y2hlcnMpIHtcbiAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyZikgPT4ge1xuICAgICAgbGV0IGZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQocmYua2V5KTtcbiAgICAgIGxldCByZXZhbGlkYXRpbmdGZXRjaGVyID0gZ2V0TG9hZGluZ0ZldGNoZXIoXG4gICAgICAgIHZvaWQgMCxcbiAgICAgICAgZmV0Y2hlciA/IGZldGNoZXIuZGF0YSA6IHZvaWQgMFxuICAgICAgKTtcbiAgICAgIHN0YXRlLmZldGNoZXJzLnNldChyZi5rZXksIHJldmFsaWRhdGluZ0ZldGNoZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBmZXRjaDIoa2V5LCByb3V0ZUlkLCBocmVmLCBvcHRzKSB7XG4gICAgYWJvcnRGZXRjaGVyKGtleSk7XG4gICAgbGV0IGZsdXNoU3luYyA9IChvcHRzICYmIG9wdHMuZmx1c2hTeW5jKSA9PT0gdHJ1ZTtcbiAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICBsZXQgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVUbyhcbiAgICAgIHN0YXRlLmxvY2F0aW9uLFxuICAgICAgc3RhdGUubWF0Y2hlcyxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgaHJlZixcbiAgICAgIHJvdXRlSWQsXG4gICAgICBvcHRzPy5yZWxhdGl2ZVxuICAgICk7XG4gICAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhyb3V0ZXNUb1VzZSwgbm9ybWFsaXplZFBhdGgsIGJhc2VuYW1lKTtcbiAgICBsZXQgZm9nT2ZXYXIgPSBjaGVja0ZvZ09mV2FyKG1hdGNoZXMsIHJvdXRlc1RvVXNlLCBub3JtYWxpemVkUGF0aCk7XG4gICAgaWYgKGZvZ09mV2FyLmFjdGl2ZSAmJiBmb2dPZldhci5tYXRjaGVzKSB7XG4gICAgICBtYXRjaGVzID0gZm9nT2ZXYXIubWF0Y2hlcztcbiAgICB9XG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICBzZXRGZXRjaGVyRXJyb3IoXG4gICAgICAgIGtleSxcbiAgICAgICAgcm91dGVJZCxcbiAgICAgICAgZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHsgcGF0aG5hbWU6IG5vcm1hbGl6ZWRQYXRoIH0pLFxuICAgICAgICB7IGZsdXNoU3luYyB9XG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgeyBwYXRoLCBzdWJtaXNzaW9uLCBlcnJvciB9ID0gbm9ybWFsaXplTmF2aWdhdGVPcHRpb25zKFxuICAgICAgdHJ1ZSxcbiAgICAgIG5vcm1hbGl6ZWRQYXRoLFxuICAgICAgb3B0c1xuICAgICk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBlcnJvciwgeyBmbHVzaFN5bmMgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBtYXRjaCA9IGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIHBhdGgpO1xuICAgIGxldCBwcmV2ZW50U2Nyb2xsUmVzZXQgPSAob3B0cyAmJiBvcHRzLnByZXZlbnRTY3JvbGxSZXNldCkgPT09IHRydWU7XG4gICAgaWYgKHN1Ym1pc3Npb24gJiYgaXNNdXRhdGlvbk1ldGhvZChzdWJtaXNzaW9uLmZvcm1NZXRob2QpKSB7XG4gICAgICBhd2FpdCBoYW5kbGVGZXRjaGVyQWN0aW9uKFxuICAgICAgICBrZXksXG4gICAgICAgIHJvdXRlSWQsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG1hdGNoLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBmb2dPZldhci5hY3RpdmUsXG4gICAgICAgIGZsdXNoU3luYyxcbiAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgICBzdWJtaXNzaW9uXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmZXRjaExvYWRNYXRjaGVzLnNldChrZXksIHsgcm91dGVJZCwgcGF0aCB9KTtcbiAgICBhd2FpdCBoYW5kbGVGZXRjaGVyTG9hZGVyKFxuICAgICAga2V5LFxuICAgICAgcm91dGVJZCxcbiAgICAgIHBhdGgsXG4gICAgICBtYXRjaCxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBmb2dPZldhci5hY3RpdmUsXG4gICAgICBmbHVzaFN5bmMsXG4gICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICBzdWJtaXNzaW9uXG4gICAgKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVGZXRjaGVyQWN0aW9uKGtleSwgcm91dGVJZCwgcGF0aCwgbWF0Y2gsIHJlcXVlc3RNYXRjaGVzLCBpc0ZvZ09mV2FyLCBmbHVzaFN5bmMsIHByZXZlbnRTY3JvbGxSZXNldCwgc3VibWlzc2lvbikge1xuICAgIGludGVycnVwdEFjdGl2ZUxvYWRzKCk7XG4gICAgZmV0Y2hMb2FkTWF0Y2hlcy5kZWxldGUoa2V5KTtcbiAgICBmdW5jdGlvbiBkZXRlY3RBbmRIYW5kbGU0MDVFcnJvcihtKSB7XG4gICAgICBpZiAoIW0ucm91dGUuYWN0aW9uICYmICFtLnJvdXRlLmxhenkpIHtcbiAgICAgICAgbGV0IGVycm9yID0gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDUsIHtcbiAgICAgICAgICBtZXRob2Q6IHN1Ym1pc3Npb24uZm9ybU1ldGhvZCxcbiAgICAgICAgICBwYXRobmFtZTogcGF0aCxcbiAgICAgICAgICByb3V0ZUlkXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBlcnJvciwgeyBmbHVzaFN5bmMgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWlzRm9nT2ZXYXIgJiYgZGV0ZWN0QW5kSGFuZGxlNDA1RXJyb3IobWF0Y2gpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBleGlzdGluZ0ZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICB1cGRhdGVGZXRjaGVyU3RhdGUoa2V5LCBnZXRTdWJtaXR0aW5nRmV0Y2hlcihzdWJtaXNzaW9uLCBleGlzdGluZ0ZldGNoZXIpLCB7XG4gICAgICBmbHVzaFN5bmNcbiAgICB9KTtcbiAgICBsZXQgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGxldCBmZXRjaFJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIHBhdGgsXG4gICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgc3VibWlzc2lvblxuICAgICk7XG4gICAgaWYgKGlzRm9nT2ZXYXIpIHtcbiAgICAgIGxldCBkaXNjb3ZlclJlc3VsdCA9IGF3YWl0IGRpc2NvdmVyUm91dGVzKFxuICAgICAgICByZXF1ZXN0TWF0Y2hlcyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZmV0Y2hSZXF1ZXN0LnNpZ25hbFxuICAgICAgKTtcbiAgICAgIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGRpc2NvdmVyUmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBkaXNjb3ZlclJlc3VsdC5lcnJvciwgeyBmbHVzaFN5bmMgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoIWRpc2NvdmVyUmVzdWx0Lm1hdGNoZXMpIHtcbiAgICAgICAgc2V0RmV0Y2hlckVycm9yKFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICByb3V0ZUlkLFxuICAgICAgICAgIGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7IHBhdGhuYW1lOiBwYXRoIH0pLFxuICAgICAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxdWVzdE1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgICBtYXRjaCA9IGdldFRhcmdldE1hdGNoKHJlcXVlc3RNYXRjaGVzLCBwYXRoKTtcbiAgICAgICAgaWYgKGRldGVjdEFuZEhhbmRsZTQwNUVycm9yKG1hdGNoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmZXRjaENvbnRyb2xsZXJzLnNldChrZXksIGFib3J0Q29udHJvbGxlcik7XG4gICAgbGV0IG9yaWdpbmF0aW5nTG9hZElkID0gaW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGxldCBhY3Rpb25SZXN1bHRzID0gYXdhaXQgY2FsbERhdGFTdHJhdGVneShcbiAgICAgIFwiYWN0aW9uXCIsXG4gICAgICBzdGF0ZSxcbiAgICAgIGZldGNoUmVxdWVzdCxcbiAgICAgIFttYXRjaF0sXG4gICAgICByZXF1ZXN0TWF0Y2hlcyxcbiAgICAgIGtleVxuICAgICk7XG4gICAgbGV0IGFjdGlvblJlc3VsdCA9IGFjdGlvblJlc3VsdHNbbWF0Y2gucm91dGUuaWRdO1xuICAgIGlmIChmZXRjaFJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIGlmIChmZXRjaENvbnRyb2xsZXJzLmdldChrZXkpID09PSBhYm9ydENvbnRyb2xsZXIpIHtcbiAgICAgICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uaGFzKGtleSkpIHtcbiAgICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KGFjdGlvblJlc3VsdCkgfHwgaXNFcnJvclJlc3VsdChhY3Rpb25SZXN1bHQpKSB7XG4gICAgICAgIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGdldERvbmVGZXRjaGVyKHZvaWQgMCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KGFjdGlvblJlc3VsdCkpIHtcbiAgICAgICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICAgICAgaWYgKHBlbmRpbmdOYXZpZ2F0aW9uTG9hZElkID4gb3JpZ2luYXRpbmdMb2FkSWQpIHtcbiAgICAgICAgICB1cGRhdGVGZXRjaGVyU3RhdGUoa2V5LCBnZXREb25lRmV0Y2hlcih2b2lkIDApKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmV0Y2hSZWRpcmVjdElkcy5hZGQoa2V5KTtcbiAgICAgICAgICB1cGRhdGVGZXRjaGVyU3RhdGUoa2V5LCBnZXRMb2FkaW5nRmV0Y2hlcihzdWJtaXNzaW9uKSk7XG4gICAgICAgICAgcmV0dXJuIHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKGZldGNoUmVxdWVzdCwgYWN0aW9uUmVzdWx0LCBmYWxzZSwge1xuICAgICAgICAgICAgZmV0Y2hlclN1Ym1pc3Npb246IHN1Ym1pc3Npb24sXG4gICAgICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzRXJyb3JSZXN1bHQoYWN0aW9uUmVzdWx0KSkge1xuICAgICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBhY3Rpb25SZXN1bHQuZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBuZXh0TG9jYXRpb24gPSBzdGF0ZS5uYXZpZ2F0aW9uLmxvY2F0aW9uIHx8IHN0YXRlLmxvY2F0aW9uO1xuICAgIGxldCByZXZhbGlkYXRpb25SZXF1ZXN0ID0gY3JlYXRlQ2xpZW50U2lkZVJlcXVlc3QoXG4gICAgICBpbml0Lmhpc3RvcnksXG4gICAgICBuZXh0TG9jYXRpb24sXG4gICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsXG4gICAgKTtcbiAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICBsZXQgbWF0Y2hlcyA9IHN0YXRlLm5hdmlnYXRpb24uc3RhdGUgIT09IFwiaWRsZVwiID8gbWF0Y2hSb3V0ZXMocm91dGVzVG9Vc2UsIHN0YXRlLm5hdmlnYXRpb24ubG9jYXRpb24sIGJhc2VuYW1lKSA6IHN0YXRlLm1hdGNoZXM7XG4gICAgaW52YXJpYW50KG1hdGNoZXMsIFwiRGlkbid0IGZpbmQgYW55IG1hdGNoZXMgYWZ0ZXIgZmV0Y2hlciBhY3Rpb25cIik7XG4gICAgbGV0IGxvYWRJZCA9ICsraW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGZldGNoUmVsb2FkSWRzLnNldChrZXksIGxvYWRJZCk7XG4gICAgbGV0IGxvYWRGZXRjaGVyID0gZ2V0TG9hZGluZ0ZldGNoZXIoc3VibWlzc2lvbiwgYWN0aW9uUmVzdWx0LmRhdGEpO1xuICAgIHN0YXRlLmZldGNoZXJzLnNldChrZXksIGxvYWRGZXRjaGVyKTtcbiAgICBsZXQgW21hdGNoZXNUb0xvYWQsIHJldmFsaWRhdGluZ0ZldGNoZXJzXSA9IGdldE1hdGNoZXNUb0xvYWQoXG4gICAgICBpbml0Lmhpc3RvcnksXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBzdWJtaXNzaW9uLFxuICAgICAgbmV4dExvY2F0aW9uLFxuICAgICAgZmFsc2UsXG4gICAgICBpc1JldmFsaWRhdGlvblJlcXVpcmVkLFxuICAgICAgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLFxuICAgICAgZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbixcbiAgICAgIGZldGNoTG9hZE1hdGNoZXMsXG4gICAgICBmZXRjaFJlZGlyZWN0SWRzLFxuICAgICAgcm91dGVzVG9Vc2UsXG4gICAgICBiYXNlbmFtZSxcbiAgICAgIFttYXRjaC5yb3V0ZS5pZCwgYWN0aW9uUmVzdWx0XVxuICAgICk7XG4gICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZmlsdGVyKChyZikgPT4gcmYua2V5ICE9PSBrZXkpLmZvckVhY2goKHJmKSA9PiB7XG4gICAgICBsZXQgc3RhbGVLZXkgPSByZi5rZXk7XG4gICAgICBsZXQgZXhpc3RpbmdGZXRjaGVyMiA9IHN0YXRlLmZldGNoZXJzLmdldChzdGFsZUtleSk7XG4gICAgICBsZXQgcmV2YWxpZGF0aW5nRmV0Y2hlciA9IGdldExvYWRpbmdGZXRjaGVyKFxuICAgICAgICB2b2lkIDAsXG4gICAgICAgIGV4aXN0aW5nRmV0Y2hlcjIgPyBleGlzdGluZ0ZldGNoZXIyLmRhdGEgOiB2b2lkIDBcbiAgICAgICk7XG4gICAgICBzdGF0ZS5mZXRjaGVycy5zZXQoc3RhbGVLZXksIHJldmFsaWRhdGluZ0ZldGNoZXIpO1xuICAgICAgYWJvcnRGZXRjaGVyKHN0YWxlS2V5KTtcbiAgICAgIGlmIChyZi5jb250cm9sbGVyKSB7XG4gICAgICAgIGZldGNoQ29udHJvbGxlcnMuc2V0KHN0YWxlS2V5LCByZi5jb250cm9sbGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB1cGRhdGVTdGF0ZSh7IGZldGNoZXJzOiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKSB9KTtcbiAgICBsZXQgYWJvcnRQZW5kaW5nRmV0Y2hSZXZhbGlkYXRpb25zID0gKCkgPT4gcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZm9yRWFjaCgocmYpID0+IGFib3J0RmV0Y2hlcihyZi5rZXkpKTtcbiAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImFib3J0XCIsXG4gICAgICBhYm9ydFBlbmRpbmdGZXRjaFJldmFsaWRhdGlvbnNcbiAgICApO1xuICAgIGxldCB7IGxvYWRlclJlc3VsdHMsIGZldGNoZXJSZXN1bHRzIH0gPSBhd2FpdCBjYWxsTG9hZGVyc0FuZE1heWJlUmVzb2x2ZURhdGEoXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBtYXRjaGVzVG9Mb2FkLFxuICAgICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMsXG4gICAgICByZXZhbGlkYXRpb25SZXF1ZXN0XG4gICAgKTtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFib3J0Q29udHJvbGxlci5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgIFwiYWJvcnRcIixcbiAgICAgIGFib3J0UGVuZGluZ0ZldGNoUmV2YWxpZGF0aW9uc1xuICAgICk7XG4gICAgZmV0Y2hSZWxvYWRJZHMuZGVsZXRlKGtleSk7XG4gICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyKSA9PiBmZXRjaENvbnRyb2xsZXJzLmRlbGV0ZShyLmtleSkpO1xuICAgIGxldCByZWRpcmVjdDIgPSBmaW5kUmVkaXJlY3QobG9hZGVyUmVzdWx0cyk7XG4gICAgaWYgKHJlZGlyZWN0Mikge1xuICAgICAgcmV0dXJuIHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKFxuICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LFxuICAgICAgICByZWRpcmVjdDIucmVzdWx0LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgeyBwcmV2ZW50U2Nyb2xsUmVzZXQgfVxuICAgICAgKTtcbiAgICB9XG4gICAgcmVkaXJlY3QyID0gZmluZFJlZGlyZWN0KGZldGNoZXJSZXN1bHRzKTtcbiAgICBpZiAocmVkaXJlY3QyKSB7XG4gICAgICBmZXRjaFJlZGlyZWN0SWRzLmFkZChyZWRpcmVjdDIua2V5KTtcbiAgICAgIHJldHVybiBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihcbiAgICAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdCxcbiAgICAgICAgcmVkaXJlY3QyLnJlc3VsdCxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHsgcHJldmVudFNjcm9sbFJlc2V0IH1cbiAgICAgICk7XG4gICAgfVxuICAgIGxldCB7IGxvYWRlckRhdGEsIGVycm9ycyB9ID0gcHJvY2Vzc0xvYWRlckRhdGEoXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBsb2FkZXJSZXN1bHRzLFxuICAgICAgdm9pZCAwLFxuICAgICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMsXG4gICAgICBmZXRjaGVyUmVzdWx0c1xuICAgICk7XG4gICAgaWYgKHN0YXRlLmZldGNoZXJzLmhhcyhrZXkpKSB7XG4gICAgICBsZXQgZG9uZUZldGNoZXIgPSBnZXREb25lRmV0Y2hlcihhY3Rpb25SZXN1bHQuZGF0YSk7XG4gICAgICBzdGF0ZS5mZXRjaGVycy5zZXQoa2V5LCBkb25lRmV0Y2hlcik7XG4gICAgfVxuICAgIGFib3J0U3RhbGVGZXRjaExvYWRzKGxvYWRJZCk7XG4gICAgaWYgKHN0YXRlLm5hdmlnYXRpb24uc3RhdGUgPT09IFwibG9hZGluZ1wiICYmIGxvYWRJZCA+IHBlbmRpbmdOYXZpZ2F0aW9uTG9hZElkKSB7XG4gICAgICBpbnZhcmlhbnQocGVuZGluZ0FjdGlvbiwgXCJFeHBlY3RlZCBwZW5kaW5nIGFjdGlvblwiKTtcbiAgICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciAmJiBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgIGNvbXBsZXRlTmF2aWdhdGlvbihzdGF0ZS5uYXZpZ2F0aW9uLmxvY2F0aW9uLCB7XG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGxvYWRlckRhdGEsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZmV0Y2hlcnM6IG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdXBkYXRlU3RhdGUoe1xuICAgICAgICBlcnJvcnMsXG4gICAgICAgIGxvYWRlckRhdGE6IG1lcmdlTG9hZGVyRGF0YShcbiAgICAgICAgICBzdGF0ZS5sb2FkZXJEYXRhLFxuICAgICAgICAgIGxvYWRlckRhdGEsXG4gICAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgICBlcnJvcnNcbiAgICAgICAgKSxcbiAgICAgICAgZmV0Y2hlcnM6IG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpXG4gICAgICB9KTtcbiAgICAgIGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gaGFuZGxlRmV0Y2hlckxvYWRlcihrZXksIHJvdXRlSWQsIHBhdGgsIG1hdGNoLCBtYXRjaGVzLCBpc0ZvZ09mV2FyLCBmbHVzaFN5bmMsIHByZXZlbnRTY3JvbGxSZXNldCwgc3VibWlzc2lvbikge1xuICAgIGxldCBleGlzdGluZ0ZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICB1cGRhdGVGZXRjaGVyU3RhdGUoXG4gICAgICBrZXksXG4gICAgICBnZXRMb2FkaW5nRmV0Y2hlcihcbiAgICAgICAgc3VibWlzc2lvbixcbiAgICAgICAgZXhpc3RpbmdGZXRjaGVyID8gZXhpc3RpbmdGZXRjaGVyLmRhdGEgOiB2b2lkIDBcbiAgICAgICksXG4gICAgICB7IGZsdXNoU3luYyB9XG4gICAgKTtcbiAgICBsZXQgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGxldCBmZXRjaFJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIHBhdGgsXG4gICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsXG4gICAgKTtcbiAgICBpZiAoaXNGb2dPZldhcikge1xuICAgICAgbGV0IGRpc2NvdmVyUmVzdWx0ID0gYXdhaXQgZGlzY292ZXJSb3V0ZXMoXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGZldGNoUmVxdWVzdC5zaWduYWxcbiAgICAgICk7XG4gICAgICBpZiAoZGlzY292ZXJSZXN1bHQudHlwZSA9PT0gXCJhYm9ydGVkXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgc2V0RmV0Y2hlckVycm9yKGtleSwgcm91dGVJZCwgZGlzY292ZXJSZXN1bHQuZXJyb3IsIHsgZmx1c2hTeW5jIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKCFkaXNjb3ZlclJlc3VsdC5tYXRjaGVzKSB7XG4gICAgICAgIHNldEZldGNoZXJFcnJvcihcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcm91dGVJZCxcbiAgICAgICAgICBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwgeyBwYXRobmFtZTogcGF0aCB9KSxcbiAgICAgICAgICB7IGZsdXNoU3luYyB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgICBtYXRjaCA9IGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIHBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmZXRjaENvbnRyb2xsZXJzLnNldChrZXksIGFib3J0Q29udHJvbGxlcik7XG4gICAgbGV0IG9yaWdpbmF0aW5nTG9hZElkID0gaW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGxldCByZXN1bHRzID0gYXdhaXQgY2FsbERhdGFTdHJhdGVneShcbiAgICAgIFwibG9hZGVyXCIsXG4gICAgICBzdGF0ZSxcbiAgICAgIGZldGNoUmVxdWVzdCxcbiAgICAgIFttYXRjaF0sXG4gICAgICBtYXRjaGVzLFxuICAgICAga2V5XG4gICAgKTtcbiAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgaWYgKGZldGNoQ29udHJvbGxlcnMuZ2V0KGtleSkgPT09IGFib3J0Q29udHJvbGxlcikge1xuICAgICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgaWYgKGZldGNoUmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbi5oYXMoa2V5KSkge1xuICAgICAgdXBkYXRlRmV0Y2hlclN0YXRlKGtleSwgZ2V0RG9uZUZldGNoZXIodm9pZCAwKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIGlmIChwZW5kaW5nTmF2aWdhdGlvbkxvYWRJZCA+IG9yaWdpbmF0aW5nTG9hZElkKSB7XG4gICAgICAgIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGdldERvbmVGZXRjaGVyKHZvaWQgMCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZXRjaFJlZGlyZWN0SWRzLmFkZChrZXkpO1xuICAgICAgICBhd2FpdCBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihmZXRjaFJlcXVlc3QsIHJlc3VsdCwgZmFsc2UsIHtcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRXJyb3JSZXN1bHQocmVzdWx0KSkge1xuICAgICAgc2V0RmV0Y2hlckVycm9yKGtleSwgcm91dGVJZCwgcmVzdWx0LmVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdXBkYXRlRmV0Y2hlclN0YXRlKGtleSwgZ2V0RG9uZUZldGNoZXIocmVzdWx0LmRhdGEpKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihyZXF1ZXN0LCByZWRpcmVjdDIsIGlzTmF2aWdhdGlvbiwge1xuICAgIHN1Ym1pc3Npb24sXG4gICAgZmV0Y2hlclN1Ym1pc3Npb24sXG4gICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgIHJlcGxhY2U6IHJlcGxhY2UyXG4gIH0gPSB7fSkge1xuICAgIGlmIChyZWRpcmVjdDIucmVzcG9uc2UuaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJldmFsaWRhdGVcIikpIHtcbiAgICAgIGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQgPSB0cnVlO1xuICAgIH1cbiAgICBsZXQgbG9jYXRpb24gPSByZWRpcmVjdDIucmVzcG9uc2UuaGVhZGVycy5nZXQoXCJMb2NhdGlvblwiKTtcbiAgICBpbnZhcmlhbnQobG9jYXRpb24sIFwiRXhwZWN0ZWQgYSBMb2NhdGlvbiBoZWFkZXIgb24gdGhlIHJlZGlyZWN0IFJlc3BvbnNlXCIpO1xuICAgIGxvY2F0aW9uID0gbm9ybWFsaXplUmVkaXJlY3RMb2NhdGlvbihcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbmV3IFVSTChyZXF1ZXN0LnVybCksXG4gICAgICBiYXNlbmFtZVxuICAgICk7XG4gICAgbGV0IHJlZGlyZWN0TG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihzdGF0ZS5sb2NhdGlvbiwgbG9jYXRpb24sIHtcbiAgICAgIF9pc1JlZGlyZWN0OiB0cnVlXG4gICAgfSk7XG4gICAgaWYgKGlzQnJvd3NlcjIpIHtcbiAgICAgIGxldCBpc0RvY3VtZW50UmVsb2FkID0gZmFsc2U7XG4gICAgICBpZiAocmVkaXJlY3QyLnJlc3BvbnNlLmhlYWRlcnMuaGFzKFwiWC1SZW1peC1SZWxvYWQtRG9jdW1lbnRcIikpIHtcbiAgICAgICAgaXNEb2N1bWVudFJlbG9hZCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKEFCU09MVVRFX1VSTF9SRUdFWC50ZXN0KGxvY2F0aW9uKSkge1xuICAgICAgICBjb25zdCB1cmwgPSBpbml0Lmhpc3RvcnkuY3JlYXRlVVJMKGxvY2F0aW9uKTtcbiAgICAgICAgaXNEb2N1bWVudFJlbG9hZCA9IC8vIEhhcmQgcmVsb2FkIGlmIGl0J3MgYW4gYWJzb2x1dGUgVVJMIHRvIGEgbmV3IG9yaWdpblxuICAgICAgICB1cmwub3JpZ2luICE9PSByb3V0ZXJXaW5kb3cubG9jYXRpb24ub3JpZ2luIHx8IC8vIEhhcmQgcmVsb2FkIGlmIGl0J3MgYW4gYWJzb2x1dGUgVVJMIHRoYXQgZG9lcyBub3QgbWF0Y2ggb3VyIGJhc2VuYW1lXG4gICAgICAgIHN0cmlwQmFzZW5hbWUodXJsLnBhdGhuYW1lLCBiYXNlbmFtZSkgPT0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChpc0RvY3VtZW50UmVsb2FkKSB7XG4gICAgICAgIGlmIChyZXBsYWNlMikge1xuICAgICAgICAgIHJvdXRlcldpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGxvY2F0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByb3V0ZXJXaW5kb3cubG9jYXRpb24uYXNzaWduKGxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG51bGw7XG4gICAgbGV0IHJlZGlyZWN0TmF2aWdhdGlvblR5cGUgPSByZXBsYWNlMiA9PT0gdHJ1ZSB8fCByZWRpcmVjdDIucmVzcG9uc2UuaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJlcGxhY2VcIikgPyBcIlJFUExBQ0VcIiAvKiBSZXBsYWNlICovIDogXCJQVVNIXCIgLyogUHVzaCAqLztcbiAgICBsZXQgeyBmb3JtTWV0aG9kLCBmb3JtQWN0aW9uLCBmb3JtRW5jVHlwZSB9ID0gc3RhdGUubmF2aWdhdGlvbjtcbiAgICBpZiAoIXN1Ym1pc3Npb24gJiYgIWZldGNoZXJTdWJtaXNzaW9uICYmIGZvcm1NZXRob2QgJiYgZm9ybUFjdGlvbiAmJiBmb3JtRW5jVHlwZSkge1xuICAgICAgc3VibWlzc2lvbiA9IGdldFN1Ym1pc3Npb25Gcm9tTmF2aWdhdGlvbihzdGF0ZS5uYXZpZ2F0aW9uKTtcbiAgICB9XG4gICAgbGV0IGFjdGl2ZVN1Ym1pc3Npb24gPSBzdWJtaXNzaW9uIHx8IGZldGNoZXJTdWJtaXNzaW9uO1xuICAgIGlmIChyZWRpcmVjdFByZXNlcnZlTWV0aG9kU3RhdHVzQ29kZXMuaGFzKHJlZGlyZWN0Mi5yZXNwb25zZS5zdGF0dXMpICYmIGFjdGl2ZVN1Ym1pc3Npb24gJiYgaXNNdXRhdGlvbk1ldGhvZChhY3RpdmVTdWJtaXNzaW9uLmZvcm1NZXRob2QpKSB7XG4gICAgICBhd2FpdCBzdGFydE5hdmlnYXRpb24ocmVkaXJlY3ROYXZpZ2F0aW9uVHlwZSwgcmVkaXJlY3RMb2NhdGlvbiwge1xuICAgICAgICBzdWJtaXNzaW9uOiB7XG4gICAgICAgICAgLi4uYWN0aXZlU3VibWlzc2lvbixcbiAgICAgICAgICBmb3JtQWN0aW9uOiBsb2NhdGlvblxuICAgICAgICB9LFxuICAgICAgICAvLyBQcmVzZXJ2ZSB0aGVzZSBmbGFncyBhY3Jvc3MgcmVkaXJlY3RzXG4gICAgICAgIHByZXZlbnRTY3JvbGxSZXNldDogcHJldmVudFNjcm9sbFJlc2V0IHx8IHBlbmRpbmdQcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgIGVuYWJsZVZpZXdUcmFuc2l0aW9uOiBpc05hdmlnYXRpb24gPyBwZW5kaW5nVmlld1RyYW5zaXRpb25FbmFibGVkIDogdm9pZCAwXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG92ZXJyaWRlTmF2aWdhdGlvbiA9IGdldExvYWRpbmdOYXZpZ2F0aW9uKFxuICAgICAgICByZWRpcmVjdExvY2F0aW9uLFxuICAgICAgICBzdWJtaXNzaW9uXG4gICAgICApO1xuICAgICAgYXdhaXQgc3RhcnROYXZpZ2F0aW9uKHJlZGlyZWN0TmF2aWdhdGlvblR5cGUsIHJlZGlyZWN0TG9jYXRpb24sIHtcbiAgICAgICAgb3ZlcnJpZGVOYXZpZ2F0aW9uLFxuICAgICAgICAvLyBTZW5kIGZldGNoZXIgc3VibWlzc2lvbnMgdGhyb3VnaCBmb3Igc2hvdWxkUmV2YWxpZGF0ZVxuICAgICAgICBmZXRjaGVyU3VibWlzc2lvbixcbiAgICAgICAgLy8gUHJlc2VydmUgdGhlc2UgZmxhZ3MgYWNyb3NzIHJlZGlyZWN0c1xuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IHByZXZlbnRTY3JvbGxSZXNldCB8fCBwZW5kaW5nUHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgICBlbmFibGVWaWV3VHJhbnNpdGlvbjogaXNOYXZpZ2F0aW9uID8gcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA6IHZvaWQgMFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGNhbGxEYXRhU3RyYXRlZ3kodHlwZSwgc3RhdGUyLCByZXF1ZXN0LCBtYXRjaGVzVG9Mb2FkLCBtYXRjaGVzLCBmZXRjaGVyS2V5KSB7XG4gICAgbGV0IHJlc3VsdHM7XG4gICAgbGV0IGRhdGFSZXN1bHRzID0ge307XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5SW1wbChcbiAgICAgICAgZGF0YVN0cmF0ZWd5SW1wbCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgc3RhdGUyLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtYXRjaGVzVG9Mb2FkLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBmZXRjaGVyS2V5LFxuICAgICAgICBtYW5pZmVzdCxcbiAgICAgICAgbWFwUm91dGVQcm9wZXJ0aWVzMlxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBtYXRjaGVzVG9Mb2FkLmZvckVhY2goKG0pID0+IHtcbiAgICAgICAgZGF0YVJlc3VsdHNbbS5yb3V0ZS5pZF0gPSB7XG4gICAgICAgICAgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLFxuICAgICAgICAgIGVycm9yOiBlXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkYXRhUmVzdWx0cztcbiAgICB9XG4gICAgZm9yIChsZXQgW3JvdXRlSWQsIHJlc3VsdF0gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0cykpIHtcbiAgICAgIGlmIChpc1JlZGlyZWN0RGF0YVN0cmF0ZWd5UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzdWx0LnJlc3VsdDtcbiAgICAgICAgZGF0YVJlc3VsdHNbcm91dGVJZF0gPSB7XG4gICAgICAgICAgdHlwZTogXCJyZWRpcmVjdFwiIC8qIHJlZGlyZWN0ICovLFxuICAgICAgICAgIHJlc3BvbnNlOiBub3JtYWxpemVSZWxhdGl2ZVJvdXRpbmdSZWRpcmVjdFJlc3BvbnNlKFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgcm91dGVJZCxcbiAgICAgICAgICAgIG1hdGNoZXMsXG4gICAgICAgICAgICBiYXNlbmFtZVxuICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFSZXN1bHRzW3JvdXRlSWRdID0gYXdhaXQgY29udmVydERhdGFTdHJhdGVneVJlc3VsdFRvRGF0YVJlc3VsdChcbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFSZXN1bHRzO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGNhbGxMb2FkZXJzQW5kTWF5YmVSZXNvbHZlRGF0YShzdGF0ZTIsIG1hdGNoZXMsIG1hdGNoZXNUb0xvYWQsIGZldGNoZXJzVG9Mb2FkLCByZXF1ZXN0KSB7XG4gICAgbGV0IGxvYWRlclJlc3VsdHNQcm9taXNlID0gY2FsbERhdGFTdHJhdGVneShcbiAgICAgIFwibG9hZGVyXCIsXG4gICAgICBzdGF0ZTIsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWF0Y2hlc1RvTG9hZCxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBudWxsXG4gICAgKTtcbiAgICBsZXQgZmV0Y2hlclJlc3VsdHNQcm9taXNlID0gUHJvbWlzZS5hbGwoXG4gICAgICBmZXRjaGVyc1RvTG9hZC5tYXAoYXN5bmMgKGYpID0+IHtcbiAgICAgICAgaWYgKGYubWF0Y2hlcyAmJiBmLm1hdGNoICYmIGYuY29udHJvbGxlcikge1xuICAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgY2FsbERhdGFTdHJhdGVneShcbiAgICAgICAgICAgIFwibG9hZGVyXCIsXG4gICAgICAgICAgICBzdGF0ZTIsXG4gICAgICAgICAgICBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChpbml0Lmhpc3RvcnksIGYucGF0aCwgZi5jb250cm9sbGVyLnNpZ25hbCksXG4gICAgICAgICAgICBbZi5tYXRjaF0sXG4gICAgICAgICAgICBmLm1hdGNoZXMsXG4gICAgICAgICAgICBmLmtleVxuICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3VsdHNbZi5tYXRjaC5yb3V0ZS5pZF07XG4gICAgICAgICAgcmV0dXJuIHsgW2Yua2V5XTogcmVzdWx0IH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICBbZi5rZXldOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgICAgICAgICAgZXJyb3I6IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWU6IGYucGF0aFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgbGV0IGxvYWRlclJlc3VsdHMgPSBhd2FpdCBsb2FkZXJSZXN1bHRzUHJvbWlzZTtcbiAgICBsZXQgZmV0Y2hlclJlc3VsdHMgPSAoYXdhaXQgZmV0Y2hlclJlc3VsdHNQcm9taXNlKS5yZWR1Y2UoXG4gICAgICAoYWNjLCByKSA9PiBPYmplY3QuYXNzaWduKGFjYywgciksXG4gICAgICB7fVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvYWRlclJlc3VsdHMsXG4gICAgICBmZXRjaGVyUmVzdWx0c1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gaW50ZXJydXB0QWN0aXZlTG9hZHMoKSB7XG4gICAgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCA9IHRydWU7XG4gICAgZmV0Y2hMb2FkTWF0Y2hlcy5mb3JFYWNoKChfLCBrZXkpID0+IHtcbiAgICAgIGlmIChmZXRjaENvbnRyb2xsZXJzLmhhcyhrZXkpKSB7XG4gICAgICAgIGNhbmNlbGxlZEZldGNoZXJMb2Fkcy5hZGQoa2V5KTtcbiAgICAgIH1cbiAgICAgIGFib3J0RmV0Y2hlcihrZXkpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGZldGNoZXIsIG9wdHMgPSB7fSkge1xuICAgIHN0YXRlLmZldGNoZXJzLnNldChrZXksIGZldGNoZXIpO1xuICAgIHVwZGF0ZVN0YXRlKFxuICAgICAgeyBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycykgfSxcbiAgICAgIHsgZmx1c2hTeW5jOiAob3B0cyAmJiBvcHRzLmZsdXNoU3luYykgPT09IHRydWUgfVxuICAgICk7XG4gIH1cbiAgZnVuY3Rpb24gc2V0RmV0Y2hlckVycm9yKGtleSwgcm91dGVJZCwgZXJyb3IsIG9wdHMgPSB7fSkge1xuICAgIGxldCBib3VuZGFyeU1hdGNoID0gZmluZE5lYXJlc3RCb3VuZGFyeShzdGF0ZS5tYXRjaGVzLCByb3V0ZUlkKTtcbiAgICBkZWxldGVGZXRjaGVyKGtleSk7XG4gICAgdXBkYXRlU3RhdGUoXG4gICAgICB7XG4gICAgICAgIGVycm9yczoge1xuICAgICAgICAgIFtib3VuZGFyeU1hdGNoLnJvdXRlLmlkXTogZXJyb3JcbiAgICAgICAgfSxcbiAgICAgICAgZmV0Y2hlcnM6IG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpXG4gICAgICB9LFxuICAgICAgeyBmbHVzaFN5bmM6IChvcHRzICYmIG9wdHMuZmx1c2hTeW5jKSA9PT0gdHJ1ZSB9XG4gICAgKTtcbiAgfVxuICBmdW5jdGlvbiBnZXRGZXRjaGVyKGtleSkge1xuICAgIGFjdGl2ZUZldGNoZXJzLnNldChrZXksIChhY3RpdmVGZXRjaGVycy5nZXQoa2V5KSB8fCAwKSArIDEpO1xuICAgIGlmIChmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLmhhcyhrZXkpKSB7XG4gICAgICBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGUuZmV0Y2hlcnMuZ2V0KGtleSkgfHwgSURMRV9GRVRDSEVSO1xuICB9XG4gIGZ1bmN0aW9uIGRlbGV0ZUZldGNoZXIoa2V5KSB7XG4gICAgbGV0IGZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICBpZiAoZmV0Y2hDb250cm9sbGVycy5oYXMoa2V5KSAmJiAhKGZldGNoZXIgJiYgZmV0Y2hlci5zdGF0ZSA9PT0gXCJsb2FkaW5nXCIgJiYgZmV0Y2hSZWxvYWRJZHMuaGFzKGtleSkpKSB7XG4gICAgICBhYm9ydEZldGNoZXIoa2V5KTtcbiAgICB9XG4gICAgZmV0Y2hMb2FkTWF0Y2hlcy5kZWxldGUoa2V5KTtcbiAgICBmZXRjaFJlbG9hZElkcy5kZWxldGUoa2V5KTtcbiAgICBmZXRjaFJlZGlyZWN0SWRzLmRlbGV0ZShrZXkpO1xuICAgIGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uZGVsZXRlKGtleSk7XG4gICAgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLmRlbGV0ZShrZXkpO1xuICAgIHN0YXRlLmZldGNoZXJzLmRlbGV0ZShrZXkpO1xuICB9XG4gIGZ1bmN0aW9uIHF1ZXVlRmV0Y2hlckZvckRlbGV0aW9uKGtleSkge1xuICAgIGxldCBjb3VudCA9IChhY3RpdmVGZXRjaGVycy5nZXQoa2V5KSB8fCAwKSAtIDE7XG4gICAgaWYgKGNvdW50IDw9IDApIHtcbiAgICAgIGFjdGl2ZUZldGNoZXJzLmRlbGV0ZShrZXkpO1xuICAgICAgZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbi5hZGQoa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0aXZlRmV0Y2hlcnMuc2V0KGtleSwgY291bnQpO1xuICAgIH1cbiAgICB1cGRhdGVTdGF0ZSh7IGZldGNoZXJzOiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKSB9KTtcbiAgfVxuICBmdW5jdGlvbiBhYm9ydEZldGNoZXIoa2V5KSB7XG4gICAgbGV0IGNvbnRyb2xsZXIgPSBmZXRjaENvbnRyb2xsZXJzLmdldChrZXkpO1xuICAgIGlmIChjb250cm9sbGVyKSB7XG4gICAgICBjb250cm9sbGVyLmFib3J0KCk7XG4gICAgICBmZXRjaENvbnRyb2xsZXJzLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtYXJrRmV0Y2hlcnNEb25lKGtleXMpIHtcbiAgICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgICAgbGV0IGZldGNoZXIgPSBnZXRGZXRjaGVyKGtleSk7XG4gICAgICBsZXQgZG9uZUZldGNoZXIgPSBnZXREb25lRmV0Y2hlcihmZXRjaGVyLmRhdGEpO1xuICAgICAgc3RhdGUuZmV0Y2hlcnMuc2V0KGtleSwgZG9uZUZldGNoZXIpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtYXJrRmV0Y2hSZWRpcmVjdHNEb25lKCkge1xuICAgIGxldCBkb25lS2V5cyA9IFtdO1xuICAgIGxldCB1cGRhdGVkRmV0Y2hlcnMgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBrZXkgb2YgZmV0Y2hSZWRpcmVjdElkcykge1xuICAgICAgbGV0IGZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICAgIGludmFyaWFudChmZXRjaGVyLCBgRXhwZWN0ZWQgZmV0Y2hlcjogJHtrZXl9YCk7XG4gICAgICBpZiAoZmV0Y2hlci5zdGF0ZSA9PT0gXCJsb2FkaW5nXCIpIHtcbiAgICAgICAgZmV0Y2hSZWRpcmVjdElkcy5kZWxldGUoa2V5KTtcbiAgICAgICAgZG9uZUtleXMucHVzaChrZXkpO1xuICAgICAgICB1cGRhdGVkRmV0Y2hlcnMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBtYXJrRmV0Y2hlcnNEb25lKGRvbmVLZXlzKTtcbiAgICByZXR1cm4gdXBkYXRlZEZldGNoZXJzO1xuICB9XG4gIGZ1bmN0aW9uIGFib3J0U3RhbGVGZXRjaExvYWRzKGxhbmRlZElkKSB7XG4gICAgbGV0IHllZXRlZEtleXMgPSBbXTtcbiAgICBmb3IgKGxldCBba2V5LCBpZF0gb2YgZmV0Y2hSZWxvYWRJZHMpIHtcbiAgICAgIGlmIChpZCA8IGxhbmRlZElkKSB7XG4gICAgICAgIGxldCBmZXRjaGVyID0gc3RhdGUuZmV0Y2hlcnMuZ2V0KGtleSk7XG4gICAgICAgIGludmFyaWFudChmZXRjaGVyLCBgRXhwZWN0ZWQgZmV0Y2hlcjogJHtrZXl9YCk7XG4gICAgICAgIGlmIChmZXRjaGVyLnN0YXRlID09PSBcImxvYWRpbmdcIikge1xuICAgICAgICAgIGFib3J0RmV0Y2hlcihrZXkpO1xuICAgICAgICAgIGZldGNoUmVsb2FkSWRzLmRlbGV0ZShrZXkpO1xuICAgICAgICAgIHllZXRlZEtleXMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIG1hcmtGZXRjaGVyc0RvbmUoeWVldGVkS2V5cyk7XG4gICAgcmV0dXJuIHllZXRlZEtleXMubGVuZ3RoID4gMDtcbiAgfVxuICBmdW5jdGlvbiBnZXRCbG9ja2VyKGtleSwgZm4pIHtcbiAgICBsZXQgYmxvY2tlciA9IHN0YXRlLmJsb2NrZXJzLmdldChrZXkpIHx8IElETEVfQkxPQ0tFUjtcbiAgICBpZiAoYmxvY2tlckZ1bmN0aW9ucy5nZXQoa2V5KSAhPT0gZm4pIHtcbiAgICAgIGJsb2NrZXJGdW5jdGlvbnMuc2V0KGtleSwgZm4pO1xuICAgIH1cbiAgICByZXR1cm4gYmxvY2tlcjtcbiAgfVxuICBmdW5jdGlvbiBkZWxldGVCbG9ja2VyKGtleSkge1xuICAgIHN0YXRlLmJsb2NrZXJzLmRlbGV0ZShrZXkpO1xuICAgIGJsb2NrZXJGdW5jdGlvbnMuZGVsZXRlKGtleSk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlQmxvY2tlcihrZXksIG5ld0Jsb2NrZXIpIHtcbiAgICBsZXQgYmxvY2tlciA9IHN0YXRlLmJsb2NrZXJzLmdldChrZXkpIHx8IElETEVfQkxPQ0tFUjtcbiAgICBpbnZhcmlhbnQoXG4gICAgICBibG9ja2VyLnN0YXRlID09PSBcInVuYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiIHx8IGJsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiIHx8IGJsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwicHJvY2VlZGluZ1wiIHx8IGJsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwidW5ibG9ja2VkXCIgfHwgYmxvY2tlci5zdGF0ZSA9PT0gXCJwcm9jZWVkaW5nXCIgJiYgbmV3QmxvY2tlci5zdGF0ZSA9PT0gXCJ1bmJsb2NrZWRcIixcbiAgICAgIGBJbnZhbGlkIGJsb2NrZXIgc3RhdGUgdHJhbnNpdGlvbjogJHtibG9ja2VyLnN0YXRlfSAtPiAke25ld0Jsb2NrZXIuc3RhdGV9YFxuICAgICk7XG4gICAgbGV0IGJsb2NrZXJzID0gbmV3IE1hcChzdGF0ZS5ibG9ja2Vycyk7XG4gICAgYmxvY2tlcnMuc2V0KGtleSwgbmV3QmxvY2tlcik7XG4gICAgdXBkYXRlU3RhdGUoeyBibG9ja2VycyB9KTtcbiAgfVxuICBmdW5jdGlvbiBzaG91bGRCbG9ja05hdmlnYXRpb24oe1xuICAgIGN1cnJlbnRMb2NhdGlvbixcbiAgICBuZXh0TG9jYXRpb24sXG4gICAgaGlzdG9yeUFjdGlvblxuICB9KSB7XG4gICAgaWYgKGJsb2NrZXJGdW5jdGlvbnMuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYmxvY2tlckZ1bmN0aW9ucy5zaXplID4gMSkge1xuICAgICAgd2FybmluZyhmYWxzZSwgXCJBIHJvdXRlciBvbmx5IHN1cHBvcnRzIG9uZSBibG9ja2VyIGF0IGEgdGltZVwiKTtcbiAgICB9XG4gICAgbGV0IGVudHJpZXMgPSBBcnJheS5mcm9tKGJsb2NrZXJGdW5jdGlvbnMuZW50cmllcygpKTtcbiAgICBsZXQgW2Jsb2NrZXJLZXksIGJsb2NrZXJGdW5jdGlvbl0gPSBlbnRyaWVzW2VudHJpZXMubGVuZ3RoIC0gMV07XG4gICAgbGV0IGJsb2NrZXIgPSBzdGF0ZS5ibG9ja2Vycy5nZXQoYmxvY2tlcktleSk7XG4gICAgaWYgKGJsb2NrZXIgJiYgYmxvY2tlci5zdGF0ZSA9PT0gXCJwcm9jZWVkaW5nXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGJsb2NrZXJGdW5jdGlvbih7IGN1cnJlbnRMb2NhdGlvbiwgbmV4dExvY2F0aW9uLCBoaXN0b3J5QWN0aW9uIH0pKSB7XG4gICAgICByZXR1cm4gYmxvY2tlcktleTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGlvbmFsNDA0KHBhdGhuYW1lKSB7XG4gICAgbGV0IGVycm9yID0gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHsgcGF0aG5hbWUgfSk7XG4gICAgbGV0IHJvdXRlc1RvVXNlID0gaW5GbGlnaHREYXRhUm91dGVzIHx8IGRhdGFSb3V0ZXM7XG4gICAgbGV0IHsgbWF0Y2hlcywgcm91dGUgfSA9IGdldFNob3J0Q2lyY3VpdE1hdGNoZXMocm91dGVzVG9Vc2UpO1xuICAgIHJldHVybiB7IG5vdEZvdW5kTWF0Y2hlczogbWF0Y2hlcywgcm91dGUsIGVycm9yIH07XG4gIH1cbiAgZnVuY3Rpb24gZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24ocG9zaXRpb25zLCBnZXRQb3NpdGlvbiwgZ2V0S2V5KSB7XG4gICAgc2F2ZWRTY3JvbGxQb3NpdGlvbnMyID0gcG9zaXRpb25zO1xuICAgIGdldFNjcm9sbFBvc2l0aW9uID0gZ2V0UG9zaXRpb247XG4gICAgZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkyID0gZ2V0S2V5IHx8IG51bGw7XG4gICAgaWYgKCFpbml0aWFsU2Nyb2xsUmVzdG9yZWQgJiYgc3RhdGUubmF2aWdhdGlvbiA9PT0gSURMRV9OQVZJR0FUSU9OKSB7XG4gICAgICBpbml0aWFsU2Nyb2xsUmVzdG9yZWQgPSB0cnVlO1xuICAgICAgbGV0IHkgPSBnZXRTYXZlZFNjcm9sbFBvc2l0aW9uKHN0YXRlLmxvY2F0aW9uLCBzdGF0ZS5tYXRjaGVzKTtcbiAgICAgIGlmICh5ICE9IG51bGwpIHtcbiAgICAgICAgdXBkYXRlU3RhdGUoeyByZXN0b3JlU2Nyb2xsUG9zaXRpb246IHkgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzYXZlZFNjcm9sbFBvc2l0aW9uczIgPSBudWxsO1xuICAgICAgZ2V0U2Nyb2xsUG9zaXRpb24gPSBudWxsO1xuICAgICAgZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkyID0gbnVsbDtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGdldFNjcm9sbEtleShsb2NhdGlvbiwgbWF0Y2hlcykge1xuICAgIGlmIChnZXRTY3JvbGxSZXN0b3JhdGlvbktleTIpIHtcbiAgICAgIGxldCBrZXkgPSBnZXRTY3JvbGxSZXN0b3JhdGlvbktleTIoXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzLm1hcCgobSkgPT4gY29udmVydFJvdXRlTWF0Y2hUb1VpTWF0Y2gobSwgc3RhdGUubG9hZGVyRGF0YSkpXG4gICAgICApO1xuICAgICAgcmV0dXJuIGtleSB8fCBsb2NhdGlvbi5rZXk7XG4gICAgfVxuICAgIHJldHVybiBsb2NhdGlvbi5rZXk7XG4gIH1cbiAgZnVuY3Rpb24gc2F2ZVNjcm9sbFBvc2l0aW9uKGxvY2F0aW9uLCBtYXRjaGVzKSB7XG4gICAgaWYgKHNhdmVkU2Nyb2xsUG9zaXRpb25zMiAmJiBnZXRTY3JvbGxQb3NpdGlvbikge1xuICAgICAgbGV0IGtleSA9IGdldFNjcm9sbEtleShsb2NhdGlvbiwgbWF0Y2hlcyk7XG4gICAgICBzYXZlZFNjcm9sbFBvc2l0aW9uczJba2V5XSA9IGdldFNjcm9sbFBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGdldFNhdmVkU2Nyb2xsUG9zaXRpb24obG9jYXRpb24sIG1hdGNoZXMpIHtcbiAgICBpZiAoc2F2ZWRTY3JvbGxQb3NpdGlvbnMyKSB7XG4gICAgICBsZXQga2V5ID0gZ2V0U2Nyb2xsS2V5KGxvY2F0aW9uLCBtYXRjaGVzKTtcbiAgICAgIGxldCB5ID0gc2F2ZWRTY3JvbGxQb3NpdGlvbnMyW2tleV07XG4gICAgICBpZiAodHlwZW9mIHkgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgcmV0dXJuIHk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIGNoZWNrRm9nT2ZXYXIobWF0Y2hlcywgcm91dGVzVG9Vc2UsIHBhdGhuYW1lKSB7XG4gICAgaWYgKHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uSW1wbCkge1xuICAgICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICAgIGxldCBmb2dNYXRjaGVzID0gbWF0Y2hSb3V0ZXNJbXBsKFxuICAgICAgICAgIHJvdXRlc1RvVXNlLFxuICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgIGJhc2VuYW1lLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgYWN0aXZlOiB0cnVlLCBtYXRjaGVzOiBmb2dNYXRjaGVzIHx8IFtdIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMobWF0Y2hlc1swXS5wYXJhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBsZXQgcGFydGlhbE1hdGNoZXMgPSBtYXRjaFJvdXRlc0ltcGwoXG4gICAgICAgICAgICByb3V0ZXNUb1VzZSxcbiAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgYmFzZW5hbWUsXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4geyBhY3RpdmU6IHRydWUsIG1hdGNoZXM6IHBhcnRpYWxNYXRjaGVzIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgbWF0Y2hlczogbnVsbCB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGRpc2NvdmVyUm91dGVzKG1hdGNoZXMsIHBhdGhuYW1lLCBzaWduYWwpIHtcbiAgICBpZiAoIXBhdGNoUm91dGVzT25OYXZpZ2F0aW9uSW1wbCkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJzdWNjZXNzXCIsIG1hdGNoZXMgfTtcbiAgICB9XG4gICAgbGV0IHBhcnRpYWxNYXRjaGVzID0gbWF0Y2hlcztcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgbGV0IGlzTm9uSE1SID0gaW5GbGlnaHREYXRhUm91dGVzID09IG51bGw7XG4gICAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICAgIGxldCBsb2NhbE1hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBwYXRjaFJvdXRlc09uTmF2aWdhdGlvbkltcGwoe1xuICAgICAgICAgIHBhdGg6IHBhdGhuYW1lLFxuICAgICAgICAgIG1hdGNoZXM6IHBhcnRpYWxNYXRjaGVzLFxuICAgICAgICAgIHBhdGNoOiAocm91dGVJZCwgY2hpbGRyZW4pID0+IHtcbiAgICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkgcmV0dXJuO1xuICAgICAgICAgICAgcGF0Y2hSb3V0ZXNJbXBsKFxuICAgICAgICAgICAgICByb3V0ZUlkLFxuICAgICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgICAgcm91dGVzVG9Vc2UsXG4gICAgICAgICAgICAgIGxvY2FsTWFuaWZlc3QsXG4gICAgICAgICAgICAgIG1hcFJvdXRlUHJvcGVydGllczJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJlcnJvclwiLCBlcnJvcjogZSwgcGFydGlhbE1hdGNoZXMgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChpc05vbkhNUiAmJiAhc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICBkYXRhUm91dGVzID0gWy4uLmRhdGFSb3V0ZXNdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJhYm9ydGVkXCIgfTtcbiAgICAgIH1cbiAgICAgIGxldCBuZXdNYXRjaGVzID0gbWF0Y2hSb3V0ZXMocm91dGVzVG9Vc2UsIHBhdGhuYW1lLCBiYXNlbmFtZSk7XG4gICAgICBpZiAobmV3TWF0Y2hlcykge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcInN1Y2Nlc3NcIiwgbWF0Y2hlczogbmV3TWF0Y2hlcyB9O1xuICAgICAgfVxuICAgICAgbGV0IG5ld1BhcnRpYWxNYXRjaGVzID0gbWF0Y2hSb3V0ZXNJbXBsKFxuICAgICAgICByb3V0ZXNUb1VzZSxcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgIGJhc2VuYW1lLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgaWYgKCFuZXdQYXJ0aWFsTWF0Y2hlcyB8fCBwYXJ0aWFsTWF0Y2hlcy5sZW5ndGggPT09IG5ld1BhcnRpYWxNYXRjaGVzLmxlbmd0aCAmJiBwYXJ0aWFsTWF0Y2hlcy5ldmVyeShcbiAgICAgICAgKG0sIGkpID0+IG0ucm91dGUuaWQgPT09IG5ld1BhcnRpYWxNYXRjaGVzW2ldLnJvdXRlLmlkXG4gICAgICApKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwic3VjY2Vzc1wiLCBtYXRjaGVzOiBudWxsIH07XG4gICAgICB9XG4gICAgICBwYXJ0aWFsTWF0Y2hlcyA9IG5ld1BhcnRpYWxNYXRjaGVzO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBfaW50ZXJuYWxTZXRSb3V0ZXMobmV3Um91dGVzKSB7XG4gICAgbWFuaWZlc3QgPSB7fTtcbiAgICBpbkZsaWdodERhdGFSb3V0ZXMgPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgICAgbmV3Um91dGVzLFxuICAgICAgbWFwUm91dGVQcm9wZXJ0aWVzMixcbiAgICAgIHZvaWQgMCxcbiAgICAgIG1hbmlmZXN0XG4gICAgKTtcbiAgfVxuICBmdW5jdGlvbiBwYXRjaFJvdXRlcyhyb3V0ZUlkLCBjaGlsZHJlbikge1xuICAgIGxldCBpc05vbkhNUiA9IGluRmxpZ2h0RGF0YVJvdXRlcyA9PSBudWxsO1xuICAgIGxldCByb3V0ZXNUb1VzZSA9IGluRmxpZ2h0RGF0YVJvdXRlcyB8fCBkYXRhUm91dGVzO1xuICAgIHBhdGNoUm91dGVzSW1wbChcbiAgICAgIHJvdXRlSWQsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIHJvdXRlc1RvVXNlLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBtYXBSb3V0ZVByb3BlcnRpZXMyXG4gICAgKTtcbiAgICBpZiAoaXNOb25ITVIpIHtcbiAgICAgIGRhdGFSb3V0ZXMgPSBbLi4uZGF0YVJvdXRlc107XG4gICAgICB1cGRhdGVTdGF0ZSh7fSk7XG4gICAgfVxuICB9XG4gIHJvdXRlciA9IHtcbiAgICBnZXQgYmFzZW5hbWUoKSB7XG4gICAgICByZXR1cm4gYmFzZW5hbWU7XG4gICAgfSxcbiAgICBnZXQgZnV0dXJlKCkge1xuICAgICAgcmV0dXJuIGZ1dHVyZTtcbiAgICB9LFxuICAgIGdldCBzdGF0ZSgpIHtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9LFxuICAgIGdldCByb3V0ZXMoKSB7XG4gICAgICByZXR1cm4gZGF0YVJvdXRlcztcbiAgICB9LFxuICAgIGdldCB3aW5kb3coKSB7XG4gICAgICByZXR1cm4gcm91dGVyV2luZG93O1xuICAgIH0sXG4gICAgaW5pdGlhbGl6ZSxcbiAgICBzdWJzY3JpYmUsXG4gICAgZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24sXG4gICAgbmF2aWdhdGUsXG4gICAgZmV0Y2g6IGZldGNoMixcbiAgICByZXZhbGlkYXRlLFxuICAgIC8vIFBhc3N0aHJvdWdoIHRvIGhpc3RvcnktYXdhcmUgY3JlYXRlSHJlZiB1c2VkIGJ5IHVzZUhyZWYgc28gd2UgZ2V0IHByb3BlclxuICAgIC8vIGhhc2gtYXdhcmUgVVJMcyBpbiBET00gcGF0aHNcbiAgICBjcmVhdGVIcmVmOiAodG8pID0+IGluaXQuaGlzdG9yeS5jcmVhdGVIcmVmKHRvKSxcbiAgICBlbmNvZGVMb2NhdGlvbjogKHRvKSA9PiBpbml0Lmhpc3RvcnkuZW5jb2RlTG9jYXRpb24odG8pLFxuICAgIGdldEZldGNoZXIsXG4gICAgZGVsZXRlRmV0Y2hlcjogcXVldWVGZXRjaGVyRm9yRGVsZXRpb24sXG4gICAgZGlzcG9zZSxcbiAgICBnZXRCbG9ja2VyLFxuICAgIGRlbGV0ZUJsb2NrZXIsXG4gICAgcGF0Y2hSb3V0ZXMsXG4gICAgX2ludGVybmFsRmV0Y2hDb250cm9sbGVyczogZmV0Y2hDb250cm9sbGVycyxcbiAgICAvLyBUT0RPOiBSZW1vdmUgc2V0Um91dGVzLCBpdCdzIHRlbXBvcmFyeSB0byBhdm9pZCBkZWFsaW5nIHdpdGhcbiAgICAvLyB1cGRhdGluZyB0aGUgdHJlZSB3aGlsZSB2YWxpZGF0aW5nIHRoZSB1cGRhdGUgYWxnb3JpdGhtLlxuICAgIF9pbnRlcm5hbFNldFJvdXRlc1xuICB9O1xuICByZXR1cm4gcm91dGVyO1xufVxuZnVuY3Rpb24gY3JlYXRlU3RhdGljSGFuZGxlcihyb3V0ZXMsIG9wdHMpIHtcbiAgaW52YXJpYW50KFxuICAgIHJvdXRlcy5sZW5ndGggPiAwLFxuICAgIFwiWW91IG11c3QgcHJvdmlkZSBhIG5vbi1lbXB0eSByb3V0ZXMgYXJyYXkgdG8gY3JlYXRlU3RhdGljSGFuZGxlclwiXG4gICk7XG4gIGxldCBtYW5pZmVzdCA9IHt9O1xuICBsZXQgYmFzZW5hbWUgPSAob3B0cyA/IG9wdHMuYmFzZW5hbWUgOiBudWxsKSB8fCBcIi9cIjtcbiAgbGV0IG1hcFJvdXRlUHJvcGVydGllczIgPSBvcHRzPy5tYXBSb3V0ZVByb3BlcnRpZXMgfHwgZGVmYXVsdE1hcFJvdXRlUHJvcGVydGllcztcbiAgbGV0IGRhdGFSb3V0ZXMgPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgIHJvdXRlcyxcbiAgICBtYXBSb3V0ZVByb3BlcnRpZXMyLFxuICAgIHZvaWQgMCxcbiAgICBtYW5pZmVzdFxuICApO1xuICBhc3luYyBmdW5jdGlvbiBxdWVyeShyZXF1ZXN0LCB7XG4gICAgcmVxdWVzdENvbnRleHQsXG4gICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcsXG4gICAgZGF0YVN0cmF0ZWd5XG4gIH0gPSB7fSkge1xuICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICBsZXQgbWV0aG9kID0gcmVxdWVzdC5tZXRob2Q7XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oXCJcIiwgY3JlYXRlUGF0aCh1cmwpLCBudWxsLCBcImRlZmF1bHRcIik7XG4gICAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhkYXRhUm91dGVzLCBsb2NhdGlvbiwgYmFzZW5hbWUpO1xuICAgIGlmICghaXNWYWxpZE1ldGhvZChtZXRob2QpICYmIG1ldGhvZCAhPT0gXCJIRUFEXCIpIHtcbiAgICAgIGxldCBlcnJvciA9IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA1LCB7IG1ldGhvZCB9KTtcbiAgICAgIGxldCB7IG1hdGNoZXM6IG1ldGhvZE5vdEFsbG93ZWRNYXRjaGVzLCByb3V0ZSB9ID0gZ2V0U2hvcnRDaXJjdWl0TWF0Y2hlcyhkYXRhUm91dGVzKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhc2VuYW1lLFxuICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgbWF0Y2hlczogbWV0aG9kTm90QWxsb3dlZE1hdGNoZXMsXG4gICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICBhY3Rpb25EYXRhOiBudWxsLFxuICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICBbcm91dGUuaWRdOiBlcnJvclxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXNDb2RlOiBlcnJvci5zdGF0dXMsXG4gICAgICAgIGxvYWRlckhlYWRlcnM6IHt9LFxuICAgICAgICBhY3Rpb25IZWFkZXJzOiB7fVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKCFtYXRjaGVzKSB7XG4gICAgICBsZXQgZXJyb3IgPSBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwgeyBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUgfSk7XG4gICAgICBsZXQgeyBtYXRjaGVzOiBub3RGb3VuZE1hdGNoZXMsIHJvdXRlIH0gPSBnZXRTaG9ydENpcmN1aXRNYXRjaGVzKGRhdGFSb3V0ZXMpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFzZW5hbWUsXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzOiBub3RGb3VuZE1hdGNoZXMsXG4gICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICBhY3Rpb25EYXRhOiBudWxsLFxuICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICBbcm91dGUuaWRdOiBlcnJvclxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXNDb2RlOiBlcnJvci5zdGF0dXMsXG4gICAgICAgIGxvYWRlckhlYWRlcnM6IHt9LFxuICAgICAgICBhY3Rpb25IZWFkZXJzOiB7fVxuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5SW1wbChcbiAgICAgIHJlcXVlc3QsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIG1hdGNoZXMsXG4gICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgIGRhdGFTdHJhdGVneSB8fCBudWxsLFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcgPT09IHRydWUsXG4gICAgICBudWxsXG4gICAgKTtcbiAgICBpZiAoaXNSZXNwb25zZShyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4geyBsb2NhdGlvbiwgYmFzZW5hbWUsIC4uLnJlc3VsdCB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5Um91dGUocmVxdWVzdCwge1xuICAgIHJvdXRlSWQsXG4gICAgcmVxdWVzdENvbnRleHQsXG4gICAgZGF0YVN0cmF0ZWd5XG4gIH0gPSB7fSkge1xuICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICBsZXQgbWV0aG9kID0gcmVxdWVzdC5tZXRob2Q7XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oXCJcIiwgY3JlYXRlUGF0aCh1cmwpLCBudWxsLCBcImRlZmF1bHRcIik7XG4gICAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhkYXRhUm91dGVzLCBsb2NhdGlvbiwgYmFzZW5hbWUpO1xuICAgIGlmICghaXNWYWxpZE1ldGhvZChtZXRob2QpICYmIG1ldGhvZCAhPT0gXCJIRUFEXCIgJiYgbWV0aG9kICE9PSBcIk9QVElPTlNcIikge1xuICAgICAgdGhyb3cgZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDUsIHsgbWV0aG9kIH0pO1xuICAgIH0gZWxzZSBpZiAoIW1hdGNoZXMpIHtcbiAgICAgIHRocm93IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7IHBhdGhuYW1lOiBsb2NhdGlvbi5wYXRobmFtZSB9KTtcbiAgICB9XG4gICAgbGV0IG1hdGNoID0gcm91dGVJZCA/IG1hdGNoZXMuZmluZCgobSkgPT4gbS5yb3V0ZS5pZCA9PT0gcm91dGVJZCkgOiBnZXRUYXJnZXRNYXRjaChtYXRjaGVzLCBsb2NhdGlvbik7XG4gICAgaWYgKHJvdXRlSWQgJiYgIW1hdGNoKSB7XG4gICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwMywge1xuICAgICAgICBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgIHJvdXRlSWRcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwgeyBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUgfSk7XG4gICAgfVxuICAgIGxldCByZXN1bHQgPSBhd2FpdCBxdWVyeUltcGwoXG4gICAgICByZXF1ZXN0LFxuICAgICAgbG9jYXRpb24sXG4gICAgICBtYXRjaGVzLFxuICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICBkYXRhU3RyYXRlZ3kgfHwgbnVsbCxcbiAgICAgIGZhbHNlLFxuICAgICAgbWF0Y2hcbiAgICApO1xuICAgIGlmIChpc1Jlc3BvbnNlKHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGxldCBlcnJvciA9IHJlc3VsdC5lcnJvcnMgPyBPYmplY3QudmFsdWVzKHJlc3VsdC5lcnJvcnMpWzBdIDogdm9pZCAwO1xuICAgIGlmIChlcnJvciAhPT0gdm9pZCAwKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5hY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQuYWN0aW9uRGF0YSlbMF07XG4gICAgfVxuICAgIGlmIChyZXN1bHQubG9hZGVyRGF0YSkge1xuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVzdWx0LmxvYWRlckRhdGEpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5SW1wbChyZXF1ZXN0LCBsb2NhdGlvbiwgbWF0Y2hlcywgcmVxdWVzdENvbnRleHQsIGRhdGFTdHJhdGVneSwgc2tpcExvYWRlckVycm9yQnViYmxpbmcsIHJvdXRlTWF0Y2gpIHtcbiAgICBpbnZhcmlhbnQoXG4gICAgICByZXF1ZXN0LnNpZ25hbCxcbiAgICAgIFwicXVlcnkoKS9xdWVyeVJvdXRlKCkgcmVxdWVzdHMgbXVzdCBjb250YWluIGFuIEFib3J0Q29udHJvbGxlciBzaWduYWxcIlxuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpc011dGF0aW9uTWV0aG9kKHJlcXVlc3QubWV0aG9kKSkge1xuICAgICAgICBsZXQgcmVzdWx0MiA9IGF3YWl0IHN1Ym1pdChcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgIG1hdGNoZXMsXG4gICAgICAgICAgcm91dGVNYXRjaCB8fCBnZXRUYXJnZXRNYXRjaChtYXRjaGVzLCBsb2NhdGlvbiksXG4gICAgICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICAgICAgZGF0YVN0cmF0ZWd5LFxuICAgICAgICAgIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nLFxuICAgICAgICAgIHJvdXRlTWF0Y2ggIT0gbnVsbFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gcmVzdWx0MjtcbiAgICAgIH1cbiAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBsb2FkUm91dGVEYXRhKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgICAgZGF0YVN0cmF0ZWd5LFxuICAgICAgICBza2lwTG9hZGVyRXJyb3JCdWJibGluZyxcbiAgICAgICAgcm91dGVNYXRjaFxuICAgICAgKTtcbiAgICAgIHJldHVybiBpc1Jlc3BvbnNlKHJlc3VsdCkgPyByZXN1bHQgOiB7XG4gICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgYWN0aW9uRGF0YTogbnVsbCxcbiAgICAgICAgYWN0aW9uSGVhZGVyczoge31cbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGlzRGF0YVN0cmF0ZWd5UmVzdWx0KGUpICYmIGlzUmVzcG9uc2UoZS5yZXN1bHQpKSB7XG4gICAgICAgIGlmIChlLnR5cGUgPT09IFwiZXJyb3JcIiAvKiBlcnJvciAqLykge1xuICAgICAgICAgIHRocm93IGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlLnJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGlmIChpc1JlZGlyZWN0UmVzcG9uc2UoZSkpIHtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuICBhc3luYyBmdW5jdGlvbiBzdWJtaXQocmVxdWVzdCwgbWF0Y2hlcywgYWN0aW9uTWF0Y2gsIHJlcXVlc3RDb250ZXh0LCBkYXRhU3RyYXRlZ3ksIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nLCBpc1JvdXRlUmVxdWVzdCkge1xuICAgIGxldCByZXN1bHQ7XG4gICAgaWYgKCFhY3Rpb25NYXRjaC5yb3V0ZS5hY3Rpb24gJiYgIWFjdGlvbk1hdGNoLnJvdXRlLmxhenkpIHtcbiAgICAgIGxldCBlcnJvciA9IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA1LCB7XG4gICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgIHBhdGhuYW1lOiBuZXcgVVJMKHJlcXVlc3QudXJsKS5wYXRobmFtZSxcbiAgICAgICAgcm91dGVJZDogYWN0aW9uTWF0Y2gucm91dGUuaWRcbiAgICAgIH0pO1xuICAgICAgaWYgKGlzUm91dGVSZXF1ZXN0KSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgIGVycm9yXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGNhbGxEYXRhU3RyYXRlZ3koXG4gICAgICAgIFwiYWN0aW9uXCIsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIFthY3Rpb25NYXRjaF0sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGlzUm91dGVSZXF1ZXN0LFxuICAgICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgICAgZGF0YVN0cmF0ZWd5XG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0c1thY3Rpb25NYXRjaC5yb3V0ZS5pZF07XG4gICAgICBpZiAocmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICB0aHJvd1N0YXRpY0hhbmRsZXJBYm9ydGVkRXJyb3IocmVxdWVzdCwgaXNSb3V0ZVJlcXVlc3QpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICB0aHJvdyBuZXcgUmVzcG9uc2UobnVsbCwge1xuICAgICAgICBzdGF0dXM6IHJlc3VsdC5yZXNwb25zZS5zdGF0dXMsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBMb2NhdGlvbjogcmVzdWx0LnJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiTG9jYXRpb25cIilcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChpc1JvdXRlUmVxdWVzdCkge1xuICAgICAgaWYgKGlzRXJyb3JSZXN1bHQocmVzdWx0KSkge1xuICAgICAgICB0aHJvdyByZXN1bHQuZXJyb3I7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaGVzOiBbYWN0aW9uTWF0Y2hdLFxuICAgICAgICBsb2FkZXJEYXRhOiB7fSxcbiAgICAgICAgYWN0aW9uRGF0YTogeyBbYWN0aW9uTWF0Y2gucm91dGUuaWRdOiByZXN1bHQuZGF0YSB9LFxuICAgICAgICBlcnJvcnM6IG51bGwsXG4gICAgICAgIC8vIE5vdGU6IHN0YXR1c0NvZGUgKyBoZWFkZXJzIGFyZSB1bnVzZWQgaGVyZSBzaW5jZSBxdWVyeVJvdXRlIHdpbGxcbiAgICAgICAgLy8gcmV0dXJuIHRoZSByYXcgUmVzcG9uc2Ugb3IgdmFsdWVcbiAgICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgICBsb2FkZXJIZWFkZXJzOiB7fSxcbiAgICAgICAgYWN0aW9uSGVhZGVyczoge31cbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBsb2FkZXJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QocmVxdWVzdC51cmwsIHtcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICAgIHJlZGlyZWN0OiByZXF1ZXN0LnJlZGlyZWN0LFxuICAgICAgc2lnbmFsOiByZXF1ZXN0LnNpZ25hbFxuICAgIH0pO1xuICAgIGlmIChpc0Vycm9yUmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIGxldCBib3VuZGFyeU1hdGNoID0gc2tpcExvYWRlckVycm9yQnViYmxpbmcgPyBhY3Rpb25NYXRjaCA6IGZpbmROZWFyZXN0Qm91bmRhcnkobWF0Y2hlcywgYWN0aW9uTWF0Y2gucm91dGUuaWQpO1xuICAgICAgbGV0IGNvbnRleHQyID0gYXdhaXQgbG9hZFJvdXRlRGF0YShcbiAgICAgICAgbG9hZGVyUmVxdWVzdCxcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICAgIGRhdGFTdHJhdGVneSxcbiAgICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcsXG4gICAgICAgIG51bGwsXG4gICAgICAgIFtib3VuZGFyeU1hdGNoLnJvdXRlLmlkLCByZXN1bHRdXG4gICAgICApO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY29udGV4dDIsXG4gICAgICAgIHN0YXR1c0NvZGU6IGlzUm91dGVFcnJvclJlc3BvbnNlKHJlc3VsdC5lcnJvcikgPyByZXN1bHQuZXJyb3Iuc3RhdHVzIDogcmVzdWx0LnN0YXR1c0NvZGUgIT0gbnVsbCA/IHJlc3VsdC5zdGF0dXNDb2RlIDogNTAwLFxuICAgICAgICBhY3Rpb25EYXRhOiBudWxsLFxuICAgICAgICBhY3Rpb25IZWFkZXJzOiB7XG4gICAgICAgICAgLi4ucmVzdWx0LmhlYWRlcnMgPyB7IFthY3Rpb25NYXRjaC5yb3V0ZS5pZF06IHJlc3VsdC5oZWFkZXJzIH0gOiB7fVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgY29udGV4dCA9IGF3YWl0IGxvYWRSb3V0ZURhdGEoXG4gICAgICBsb2FkZXJSZXF1ZXN0LFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIHJlcXVlc3RDb250ZXh0LFxuICAgICAgZGF0YVN0cmF0ZWd5LFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcsXG4gICAgICBudWxsXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIGFjdGlvbkRhdGE6IHtcbiAgICAgICAgW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTogcmVzdWx0LmRhdGFcbiAgICAgIH0sXG4gICAgICAvLyBhY3Rpb24gc3RhdHVzIGNvZGVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIGxvYWRlciBzdGF0dXMgY29kZXNcbiAgICAgIC4uLnJlc3VsdC5zdGF0dXNDb2RlID8geyBzdGF0dXNDb2RlOiByZXN1bHQuc3RhdHVzQ29kZSB9IDoge30sXG4gICAgICBhY3Rpb25IZWFkZXJzOiByZXN1bHQuaGVhZGVycyA/IHsgW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTogcmVzdWx0LmhlYWRlcnMgfSA6IHt9XG4gICAgfTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBsb2FkUm91dGVEYXRhKHJlcXVlc3QsIG1hdGNoZXMsIHJlcXVlc3RDb250ZXh0LCBkYXRhU3RyYXRlZ3ksIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nLCByb3V0ZU1hdGNoLCBwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgbGV0IGlzUm91dGVSZXF1ZXN0ID0gcm91dGVNYXRjaCAhPSBudWxsO1xuICAgIGlmIChpc1JvdXRlUmVxdWVzdCAmJiAhcm91dGVNYXRjaD8ucm91dGUubG9hZGVyICYmICFyb3V0ZU1hdGNoPy5yb3V0ZS5sYXp5KSB7XG4gICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwMCwge1xuICAgICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICBwYXRobmFtZTogbmV3IFVSTChyZXF1ZXN0LnVybCkucGF0aG5hbWUsXG4gICAgICAgIHJvdXRlSWQ6IHJvdXRlTWF0Y2g/LnJvdXRlLmlkXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IHJlcXVlc3RNYXRjaGVzID0gcm91dGVNYXRjaCA/IFtyb3V0ZU1hdGNoXSA6IHBlbmRpbmdBY3Rpb25SZXN1bHQgJiYgaXNFcnJvclJlc3VsdChwZW5kaW5nQWN0aW9uUmVzdWx0WzFdKSA/IGdldExvYWRlck1hdGNoZXNVbnRpbEJvdW5kYXJ5KG1hdGNoZXMsIHBlbmRpbmdBY3Rpb25SZXN1bHRbMF0pIDogbWF0Y2hlcztcbiAgICBsZXQgbWF0Y2hlc1RvTG9hZCA9IHJlcXVlc3RNYXRjaGVzLmZpbHRlcihcbiAgICAgIChtKSA9PiBtLnJvdXRlLmxvYWRlciB8fCBtLnJvdXRlLmxhenlcbiAgICApO1xuICAgIGlmIChtYXRjaGVzVG9Mb2FkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgLy8gQWRkIGEgbnVsbCBmb3IgYWxsIG1hdGNoZWQgcm91dGVzIGZvciBwcm9wZXIgcmV2YWxpZGF0aW9uIG9uIHRoZSBjbGllbnRcbiAgICAgICAgbG9hZGVyRGF0YTogbWF0Y2hlcy5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgbSkgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW20ucm91dGUuaWRdOiBudWxsIH0pLFxuICAgICAgICAgIHt9XG4gICAgICAgICksXG4gICAgICAgIGVycm9yczogcGVuZGluZ0FjdGlvblJlc3VsdCAmJiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8ge1xuICAgICAgICAgIFtwZW5kaW5nQWN0aW9uUmVzdWx0WzBdXTogcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5lcnJvclxuICAgICAgICB9IDogbnVsbCxcbiAgICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgICBsb2FkZXJIZWFkZXJzOiB7fVxuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5KFxuICAgICAgXCJsb2FkZXJcIixcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtYXRjaGVzVG9Mb2FkLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGlzUm91dGVSZXF1ZXN0LFxuICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICBkYXRhU3RyYXRlZ3lcbiAgICApO1xuICAgIGlmIChyZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICB0aHJvd1N0YXRpY0hhbmRsZXJBYm9ydGVkRXJyb3IocmVxdWVzdCwgaXNSb3V0ZVJlcXVlc3QpO1xuICAgIH1cbiAgICBsZXQgY29udGV4dCA9IHByb2Nlc3NSb3V0ZUxvYWRlckRhdGEoXG4gICAgICBtYXRjaGVzLFxuICAgICAgcmVzdWx0cyxcbiAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHQsXG4gICAgICB0cnVlLFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmdcbiAgICApO1xuICAgIGxldCBleGVjdXRlZExvYWRlcnMgPSBuZXcgU2V0KFxuICAgICAgbWF0Y2hlc1RvTG9hZC5tYXAoKG1hdGNoKSA9PiBtYXRjaC5yb3V0ZS5pZClcbiAgICApO1xuICAgIG1hdGNoZXMuZm9yRWFjaCgobWF0Y2gpID0+IHtcbiAgICAgIGlmICghZXhlY3V0ZWRMb2FkZXJzLmhhcyhtYXRjaC5yb3V0ZS5pZCkpIHtcbiAgICAgICAgY29udGV4dC5sb2FkZXJEYXRhW21hdGNoLnJvdXRlLmlkXSA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbnRleHQsXG4gICAgICBtYXRjaGVzXG4gICAgfTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBjYWxsRGF0YVN0cmF0ZWd5KHR5cGUsIHJlcXVlc3QsIG1hdGNoZXNUb0xvYWQsIG1hdGNoZXMsIGlzUm91dGVSZXF1ZXN0LCByZXF1ZXN0Q29udGV4dCwgZGF0YVN0cmF0ZWd5KSB7XG4gICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5SW1wbChcbiAgICAgIGRhdGFTdHJhdGVneSB8fCBkZWZhdWx0RGF0YVN0cmF0ZWd5LFxuICAgICAgdHlwZSxcbiAgICAgIG51bGwsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWF0Y2hlc1RvTG9hZCxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBudWxsLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBtYXBSb3V0ZVByb3BlcnRpZXMyLFxuICAgICAgcmVxdWVzdENvbnRleHRcbiAgICApO1xuICAgIGxldCBkYXRhUmVzdWx0cyA9IHt9O1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgbWF0Y2hlcy5tYXAoYXN5bmMgKG1hdGNoKSA9PiB7XG4gICAgICAgIGlmICghKG1hdGNoLnJvdXRlLmlkIGluIHJlc3VsdHMpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHQgPSByZXN1bHRzW21hdGNoLnJvdXRlLmlkXTtcbiAgICAgICAgaWYgKGlzUmVkaXJlY3REYXRhU3RyYXRlZ3lSZXN1bHQocmVzdWx0KSkge1xuICAgICAgICAgIGxldCByZXNwb25zZSA9IHJlc3VsdC5yZXN1bHQ7XG4gICAgICAgICAgdGhyb3cgbm9ybWFsaXplUmVsYXRpdmVSb3V0aW5nUmVkaXJlY3RSZXNwb25zZShcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgIG1hdGNoLnJvdXRlLmlkLFxuICAgICAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgICAgIGJhc2VuYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSZXNwb25zZShyZXN1bHQucmVzdWx0KSAmJiBpc1JvdXRlUmVxdWVzdCkge1xuICAgICAgICAgIHRocm93IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBkYXRhUmVzdWx0c1ttYXRjaC5yb3V0ZS5pZF0gPSBhd2FpdCBjb252ZXJ0RGF0YVN0cmF0ZWd5UmVzdWx0VG9EYXRhUmVzdWx0KHJlc3VsdCk7XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIGRhdGFSZXN1bHRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgZGF0YVJvdXRlcyxcbiAgICBxdWVyeSxcbiAgICBxdWVyeVJvdXRlXG4gIH07XG59XG5mdW5jdGlvbiBnZXRTdGF0aWNDb250ZXh0RnJvbUVycm9yKHJvdXRlcywgY29udGV4dCwgZXJyb3IpIHtcbiAgbGV0IG5ld0NvbnRleHQgPSB7XG4gICAgLi4uY29udGV4dCxcbiAgICBzdGF0dXNDb2RlOiBpc1JvdXRlRXJyb3JSZXNwb25zZShlcnJvcikgPyBlcnJvci5zdGF0dXMgOiA1MDAsXG4gICAgZXJyb3JzOiB7XG4gICAgICBbY29udGV4dC5fZGVlcGVzdFJlbmRlcmVkQm91bmRhcnlJZCB8fCByb3V0ZXNbMF0uaWRdOiBlcnJvclxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIG5ld0NvbnRleHQ7XG59XG5mdW5jdGlvbiB0aHJvd1N0YXRpY0hhbmRsZXJBYm9ydGVkRXJyb3IocmVxdWVzdCwgaXNSb3V0ZVJlcXVlc3QpIHtcbiAgaWYgKHJlcXVlc3Quc2lnbmFsLnJlYXNvbiAhPT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgcmVxdWVzdC5zaWduYWwucmVhc29uO1xuICB9XG4gIGxldCBtZXRob2QgPSBpc1JvdXRlUmVxdWVzdCA/IFwicXVlcnlSb3V0ZVwiIDogXCJxdWVyeVwiO1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYCR7bWV0aG9kfSgpIGNhbGwgYWJvcnRlZCB3aXRob3V0IGFuIFxcYEFib3J0U2lnbmFsLnJlYXNvblxcYDogJHtyZXF1ZXN0Lm1ldGhvZH0gJHtyZXF1ZXN0LnVybH1gXG4gICk7XG59XG5mdW5jdGlvbiBpc1N1Ym1pc3Npb25OYXZpZ2F0aW9uKG9wdHMpIHtcbiAgcmV0dXJuIG9wdHMgIT0gbnVsbCAmJiAoXCJmb3JtRGF0YVwiIGluIG9wdHMgJiYgb3B0cy5mb3JtRGF0YSAhPSBudWxsIHx8IFwiYm9keVwiIGluIG9wdHMgJiYgb3B0cy5ib2R5ICE9PSB2b2lkIDApO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplVG8obG9jYXRpb24sIG1hdGNoZXMsIGJhc2VuYW1lLCB0bywgZnJvbVJvdXRlSWQsIHJlbGF0aXZlKSB7XG4gIGxldCBjb250ZXh0dWFsTWF0Y2hlcztcbiAgbGV0IGFjdGl2ZVJvdXRlTWF0Y2g7XG4gIGlmIChmcm9tUm91dGVJZCkge1xuICAgIGNvbnRleHR1YWxNYXRjaGVzID0gW107XG4gICAgZm9yIChsZXQgbWF0Y2ggb2YgbWF0Y2hlcykge1xuICAgICAgY29udGV4dHVhbE1hdGNoZXMucHVzaChtYXRjaCk7XG4gICAgICBpZiAobWF0Y2gucm91dGUuaWQgPT09IGZyb21Sb3V0ZUlkKSB7XG4gICAgICAgIGFjdGl2ZVJvdXRlTWF0Y2ggPSBtYXRjaDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnRleHR1YWxNYXRjaGVzID0gbWF0Y2hlcztcbiAgICBhY3RpdmVSb3V0ZU1hdGNoID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdO1xuICB9XG4gIGxldCBwYXRoID0gcmVzb2x2ZVRvKFxuICAgIHRvID8gdG8gOiBcIi5cIixcbiAgICBnZXRSZXNvbHZlVG9NYXRjaGVzKGNvbnRleHR1YWxNYXRjaGVzKSxcbiAgICBzdHJpcEJhc2VuYW1lKGxvY2F0aW9uLnBhdGhuYW1lLCBiYXNlbmFtZSkgfHwgbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgcmVsYXRpdmUgPT09IFwicGF0aFwiXG4gICk7XG4gIGlmICh0byA9PSBudWxsKSB7XG4gICAgcGF0aC5zZWFyY2ggPSBsb2NhdGlvbi5zZWFyY2g7XG4gICAgcGF0aC5oYXNoID0gbG9jYXRpb24uaGFzaDtcbiAgfVxuICBpZiAoKHRvID09IG51bGwgfHwgdG8gPT09IFwiXCIgfHwgdG8gPT09IFwiLlwiKSAmJiBhY3RpdmVSb3V0ZU1hdGNoKSB7XG4gICAgbGV0IG5ha2VkSW5kZXggPSBoYXNOYWtlZEluZGV4UXVlcnkocGF0aC5zZWFyY2gpO1xuICAgIGlmIChhY3RpdmVSb3V0ZU1hdGNoLnJvdXRlLmluZGV4ICYmICFuYWtlZEluZGV4KSB7XG4gICAgICBwYXRoLnNlYXJjaCA9IHBhdGguc2VhcmNoID8gcGF0aC5zZWFyY2gucmVwbGFjZSgvXlxcPy8sIFwiP2luZGV4JlwiKSA6IFwiP2luZGV4XCI7XG4gICAgfSBlbHNlIGlmICghYWN0aXZlUm91dGVNYXRjaC5yb3V0ZS5pbmRleCAmJiBuYWtlZEluZGV4KSB7XG4gICAgICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXRoLnNlYXJjaCk7XG4gICAgICBsZXQgaW5kZXhWYWx1ZXMgPSBwYXJhbXMuZ2V0QWxsKFwiaW5kZXhcIik7XG4gICAgICBwYXJhbXMuZGVsZXRlKFwiaW5kZXhcIik7XG4gICAgICBpbmRleFZhbHVlcy5maWx0ZXIoKHYpID0+IHYpLmZvckVhY2goKHYpID0+IHBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB2KSk7XG4gICAgICBsZXQgcXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgIHBhdGguc2VhcmNoID0gcXMgPyBgPyR7cXN9YCA6IFwiXCI7XG4gICAgfVxuICB9XG4gIGlmIChiYXNlbmFtZSAhPT0gXCIvXCIpIHtcbiAgICBwYXRoLnBhdGhuYW1lID0gcGF0aC5wYXRobmFtZSA9PT0gXCIvXCIgPyBiYXNlbmFtZSA6IGpvaW5QYXRocyhbYmFzZW5hbWUsIHBhdGgucGF0aG5hbWVdKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlUGF0aChwYXRoKTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hdmlnYXRlT3B0aW9ucyhpc0ZldGNoZXIsIHBhdGgsIG9wdHMpIHtcbiAgaWYgKCFvcHRzIHx8ICFpc1N1Ym1pc3Npb25OYXZpZ2F0aW9uKG9wdHMpKSB7XG4gICAgcmV0dXJuIHsgcGF0aCB9O1xuICB9XG4gIGlmIChvcHRzLmZvcm1NZXRob2QgJiYgIWlzVmFsaWRNZXRob2Qob3B0cy5mb3JtTWV0aG9kKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXRoLFxuICAgICAgZXJyb3I6IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA1LCB7IG1ldGhvZDogb3B0cy5mb3JtTWV0aG9kIH0pXG4gICAgfTtcbiAgfVxuICBsZXQgZ2V0SW52YWxpZEJvZHlFcnJvciA9ICgpID0+ICh7XG4gICAgcGF0aCxcbiAgICBlcnJvcjogZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDAsIHsgdHlwZTogXCJpbnZhbGlkLWJvZHlcIiB9KVxuICB9KTtcbiAgbGV0IHJhd0Zvcm1NZXRob2QgPSBvcHRzLmZvcm1NZXRob2QgfHwgXCJnZXRcIjtcbiAgbGV0IGZvcm1NZXRob2QgPSByYXdGb3JtTWV0aG9kLnRvVXBwZXJDYXNlKCk7XG4gIGxldCBmb3JtQWN0aW9uID0gc3RyaXBIYXNoRnJvbVBhdGgocGF0aCk7XG4gIGlmIChvcHRzLmJvZHkgIT09IHZvaWQgMCkge1xuICAgIGlmIChvcHRzLmZvcm1FbmNUeXBlID09PSBcInRleHQvcGxhaW5cIikge1xuICAgICAgaWYgKCFpc011dGF0aW9uTWV0aG9kKGZvcm1NZXRob2QpKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgICB9XG4gICAgICBsZXQgdGV4dCA9IHR5cGVvZiBvcHRzLmJvZHkgPT09IFwic3RyaW5nXCIgPyBvcHRzLmJvZHkgOiBvcHRzLmJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSB8fCBvcHRzLmJvZHkgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMgPyAoXG4gICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm0tY29udHJvbC1pbmZyYXN0cnVjdHVyZS5odG1sI3BsYWluLXRleHQtZm9ybS1kYXRhXG4gICAgICAgIEFycmF5LmZyb20ob3B0cy5ib2R5LmVudHJpZXMoKSkucmVkdWNlKFxuICAgICAgICAgIChhY2MsIFtuYW1lLCB2YWx1ZV0pID0+IGAke2FjY30ke25hbWV9PSR7dmFsdWV9XG5gLFxuICAgICAgICAgIFwiXCJcbiAgICAgICAgKVxuICAgICAgKSA6IFN0cmluZyhvcHRzLmJvZHkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgc3VibWlzc2lvbjoge1xuICAgICAgICAgIGZvcm1NZXRob2QsXG4gICAgICAgICAgZm9ybUFjdGlvbixcbiAgICAgICAgICBmb3JtRW5jVHlwZTogb3B0cy5mb3JtRW5jVHlwZSxcbiAgICAgICAgICBmb3JtRGF0YTogdm9pZCAwLFxuICAgICAgICAgIGpzb246IHZvaWQgMCxcbiAgICAgICAgICB0ZXh0XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChvcHRzLmZvcm1FbmNUeXBlID09PSBcImFwcGxpY2F0aW9uL2pzb25cIikge1xuICAgICAgaWYgKCFpc011dGF0aW9uTWV0aG9kKGZvcm1NZXRob2QpKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBsZXQganNvbiA9IHR5cGVvZiBvcHRzLmJvZHkgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKG9wdHMuYm9keSkgOiBvcHRzLmJvZHk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdWJtaXNzaW9uOiB7XG4gICAgICAgICAgICBmb3JtTWV0aG9kLFxuICAgICAgICAgICAgZm9ybUFjdGlvbixcbiAgICAgICAgICAgIGZvcm1FbmNUeXBlOiBvcHRzLmZvcm1FbmNUeXBlLFxuICAgICAgICAgICAgZm9ybURhdGE6IHZvaWQgMCxcbiAgICAgICAgICAgIGpzb24sXG4gICAgICAgICAgICB0ZXh0OiB2b2lkIDBcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGludmFyaWFudChcbiAgICB0eXBlb2YgRm9ybURhdGEgPT09IFwiZnVuY3Rpb25cIixcbiAgICBcIkZvcm1EYXRhIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudFwiXG4gICk7XG4gIGxldCBzZWFyY2hQYXJhbXM7XG4gIGxldCBmb3JtRGF0YTtcbiAgaWYgKG9wdHMuZm9ybURhdGEpIHtcbiAgICBzZWFyY2hQYXJhbXMgPSBjb252ZXJ0Rm9ybURhdGFUb1NlYXJjaFBhcmFtcyhvcHRzLmZvcm1EYXRhKTtcbiAgICBmb3JtRGF0YSA9IG9wdHMuZm9ybURhdGE7XG4gIH0gZWxzZSBpZiAob3B0cy5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICBzZWFyY2hQYXJhbXMgPSBjb252ZXJ0Rm9ybURhdGFUb1NlYXJjaFBhcmFtcyhvcHRzLmJvZHkpO1xuICAgIGZvcm1EYXRhID0gb3B0cy5ib2R5O1xuICB9IGVsc2UgaWYgKG9wdHMuYm9keSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcykge1xuICAgIHNlYXJjaFBhcmFtcyA9IG9wdHMuYm9keTtcbiAgICBmb3JtRGF0YSA9IGNvbnZlcnRTZWFyY2hQYXJhbXNUb0Zvcm1EYXRhKHNlYXJjaFBhcmFtcyk7XG4gIH0gZWxzZSBpZiAob3B0cy5ib2R5ID09IG51bGwpIHtcbiAgICBzZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhvcHRzLmJvZHkpO1xuICAgICAgZm9ybURhdGEgPSBjb252ZXJ0U2VhcmNoUGFyYW1zVG9Gb3JtRGF0YShzZWFyY2hQYXJhbXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgfVxuICB9XG4gIGxldCBzdWJtaXNzaW9uID0ge1xuICAgIGZvcm1NZXRob2QsXG4gICAgZm9ybUFjdGlvbixcbiAgICBmb3JtRW5jVHlwZTogb3B0cyAmJiBvcHRzLmZvcm1FbmNUeXBlIHx8IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIsXG4gICAgZm9ybURhdGEsXG4gICAganNvbjogdm9pZCAwLFxuICAgIHRleHQ6IHZvaWQgMFxuICB9O1xuICBpZiAoaXNNdXRhdGlvbk1ldGhvZChzdWJtaXNzaW9uLmZvcm1NZXRob2QpKSB7XG4gICAgcmV0dXJuIHsgcGF0aCwgc3VibWlzc2lvbiB9O1xuICB9XG4gIGxldCBwYXJzZWRQYXRoID0gcGFyc2VQYXRoKHBhdGgpO1xuICBpZiAoaXNGZXRjaGVyICYmIHBhcnNlZFBhdGguc2VhcmNoICYmIGhhc05ha2VkSW5kZXhRdWVyeShwYXJzZWRQYXRoLnNlYXJjaCkpIHtcbiAgICBzZWFyY2hQYXJhbXMuYXBwZW5kKFwiaW5kZXhcIiwgXCJcIik7XG4gIH1cbiAgcGFyc2VkUGF0aC5zZWFyY2ggPSBgPyR7c2VhcmNoUGFyYW1zfWA7XG4gIHJldHVybiB7IHBhdGg6IGNyZWF0ZVBhdGgocGFyc2VkUGF0aCksIHN1Ym1pc3Npb24gfTtcbn1cbmZ1bmN0aW9uIGdldExvYWRlck1hdGNoZXNVbnRpbEJvdW5kYXJ5KG1hdGNoZXMsIGJvdW5kYXJ5SWQsIGluY2x1ZGVCb3VuZGFyeSA9IGZhbHNlKSB7XG4gIGxldCBpbmRleCA9IG1hdGNoZXMuZmluZEluZGV4KChtKSA9PiBtLnJvdXRlLmlkID09PSBib3VuZGFyeUlkKTtcbiAgaWYgKGluZGV4ID49IDApIHtcbiAgICByZXR1cm4gbWF0Y2hlcy5zbGljZSgwLCBpbmNsdWRlQm91bmRhcnkgPyBpbmRleCArIDEgOiBpbmRleCk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXM7XG59XG5mdW5jdGlvbiBnZXRNYXRjaGVzVG9Mb2FkKGhpc3RvcnksIHN0YXRlLCBtYXRjaGVzLCBzdWJtaXNzaW9uLCBsb2NhdGlvbiwgaW5pdGlhbEh5ZHJhdGlvbiwgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCwgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLCBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLCBmZXRjaExvYWRNYXRjaGVzLCBmZXRjaFJlZGlyZWN0SWRzLCByb3V0ZXNUb1VzZSwgYmFzZW5hbWUsIHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgbGV0IGFjdGlvblJlc3VsdCA9IHBlbmRpbmdBY3Rpb25SZXN1bHQgPyBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8gcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5lcnJvciA6IHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0uZGF0YSA6IHZvaWQgMDtcbiAgbGV0IGN1cnJlbnRVcmwgPSBoaXN0b3J5LmNyZWF0ZVVSTChzdGF0ZS5sb2NhdGlvbik7XG4gIGxldCBuZXh0VXJsID0gaGlzdG9yeS5jcmVhdGVVUkwobG9jYXRpb24pO1xuICBsZXQgYm91bmRhcnlNYXRjaGVzID0gbWF0Y2hlcztcbiAgaWYgKGluaXRpYWxIeWRyYXRpb24gJiYgc3RhdGUuZXJyb3JzKSB7XG4gICAgYm91bmRhcnlNYXRjaGVzID0gZ2V0TG9hZGVyTWF0Y2hlc1VudGlsQm91bmRhcnkoXG4gICAgICBtYXRjaGVzLFxuICAgICAgT2JqZWN0LmtleXMoc3RhdGUuZXJyb3JzKVswXSxcbiAgICAgIHRydWVcbiAgICApO1xuICB9IGVsc2UgaWYgKHBlbmRpbmdBY3Rpb25SZXN1bHQgJiYgaXNFcnJvclJlc3VsdChwZW5kaW5nQWN0aW9uUmVzdWx0WzFdKSkge1xuICAgIGJvdW5kYXJ5TWF0Y2hlcyA9IGdldExvYWRlck1hdGNoZXNVbnRpbEJvdW5kYXJ5KFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHRbMF1cbiAgICApO1xuICB9XG4gIGxldCBhY3Rpb25TdGF0dXMgPSBwZW5kaW5nQWN0aW9uUmVzdWx0ID8gcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5zdGF0dXNDb2RlIDogdm9pZCAwO1xuICBsZXQgc2hvdWxkU2tpcFJldmFsaWRhdGlvbiA9IGFjdGlvblN0YXR1cyAmJiBhY3Rpb25TdGF0dXMgPj0gNDAwO1xuICBsZXQgbmF2aWdhdGlvbk1hdGNoZXMgPSBib3VuZGFyeU1hdGNoZXMuZmlsdGVyKChtYXRjaCwgaW5kZXgpID0+IHtcbiAgICBsZXQgeyByb3V0ZSB9ID0gbWF0Y2g7XG4gICAgaWYgKHJvdXRlLmxhenkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAocm91dGUubG9hZGVyID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGluaXRpYWxIeWRyYXRpb24pIHtcbiAgICAgIHJldHVybiBzaG91bGRMb2FkUm91dGVPbkh5ZHJhdGlvbihyb3V0ZSwgc3RhdGUubG9hZGVyRGF0YSwgc3RhdGUuZXJyb3JzKTtcbiAgICB9XG4gICAgaWYgKGlzTmV3TG9hZGVyKHN0YXRlLmxvYWRlckRhdGEsIHN0YXRlLm1hdGNoZXNbaW5kZXhdLCBtYXRjaCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgY3VycmVudFJvdXRlTWF0Y2ggPSBzdGF0ZS5tYXRjaGVzW2luZGV4XTtcbiAgICBsZXQgbmV4dFJvdXRlTWF0Y2ggPSBtYXRjaDtcbiAgICByZXR1cm4gc2hvdWxkUmV2YWxpZGF0ZUxvYWRlcihtYXRjaCwge1xuICAgICAgY3VycmVudFVybCxcbiAgICAgIGN1cnJlbnRQYXJhbXM6IGN1cnJlbnRSb3V0ZU1hdGNoLnBhcmFtcyxcbiAgICAgIG5leHRVcmwsXG4gICAgICBuZXh0UGFyYW1zOiBuZXh0Um91dGVNYXRjaC5wYXJhbXMsXG4gICAgICAuLi5zdWJtaXNzaW9uLFxuICAgICAgYWN0aW9uUmVzdWx0LFxuICAgICAgYWN0aW9uU3RhdHVzLFxuICAgICAgZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6IHNob3VsZFNraXBSZXZhbGlkYXRpb24gPyBmYWxzZSA6IChcbiAgICAgICAgLy8gRm9yY2VkIHJldmFsaWRhdGlvbiBkdWUgdG8gc3VibWlzc2lvbiwgdXNlUmV2YWxpZGF0b3IsIG9yIFgtUmVtaXgtUmV2YWxpZGF0ZVxuICAgICAgICBpc1JldmFsaWRhdGlvblJlcXVpcmVkIHx8IGN1cnJlbnRVcmwucGF0aG5hbWUgKyBjdXJyZW50VXJsLnNlYXJjaCA9PT0gbmV4dFVybC5wYXRobmFtZSArIG5leHRVcmwuc2VhcmNoIHx8IC8vIFNlYXJjaCBwYXJhbXMgYWZmZWN0IGFsbCBsb2FkZXJzXG4gICAgICAgIGN1cnJlbnRVcmwuc2VhcmNoICE9PSBuZXh0VXJsLnNlYXJjaCB8fCBpc05ld1JvdXRlSW5zdGFuY2UoY3VycmVudFJvdXRlTWF0Y2gsIG5leHRSb3V0ZU1hdGNoKVxuICAgICAgKVxuICAgIH0pO1xuICB9KTtcbiAgbGV0IHJldmFsaWRhdGluZ0ZldGNoZXJzID0gW107XG4gIGZldGNoTG9hZE1hdGNoZXMuZm9yRWFjaCgoZiwga2V5KSA9PiB7XG4gICAgaWYgKGluaXRpYWxIeWRyYXRpb24gfHwgIW1hdGNoZXMuc29tZSgobSkgPT4gbS5yb3V0ZS5pZCA9PT0gZi5yb3V0ZUlkKSB8fCBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBmZXRjaGVyTWF0Y2hlcyA9IG1hdGNoUm91dGVzKHJvdXRlc1RvVXNlLCBmLnBhdGgsIGJhc2VuYW1lKTtcbiAgICBpZiAoIWZldGNoZXJNYXRjaGVzKSB7XG4gICAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5wdXNoKHtcbiAgICAgICAga2V5LFxuICAgICAgICByb3V0ZUlkOiBmLnJvdXRlSWQsXG4gICAgICAgIHBhdGg6IGYucGF0aCxcbiAgICAgICAgbWF0Y2hlczogbnVsbCxcbiAgICAgICAgbWF0Y2g6IG51bGwsXG4gICAgICAgIGNvbnRyb2xsZXI6IG51bGxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmV0Y2hlciA9IHN0YXRlLmZldGNoZXJzLmdldChrZXkpO1xuICAgIGxldCBmZXRjaGVyTWF0Y2ggPSBnZXRUYXJnZXRNYXRjaChmZXRjaGVyTWF0Y2hlcywgZi5wYXRoKTtcbiAgICBsZXQgc2hvdWxkUmV2YWxpZGF0ZSA9IGZhbHNlO1xuICAgIGlmIChmZXRjaFJlZGlyZWN0SWRzLmhhcyhrZXkpKSB7XG4gICAgICBzaG91bGRSZXZhbGlkYXRlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChjYW5jZWxsZWRGZXRjaGVyTG9hZHMuaGFzKGtleSkpIHtcbiAgICAgIGNhbmNlbGxlZEZldGNoZXJMb2Fkcy5kZWxldGUoa2V5KTtcbiAgICAgIHNob3VsZFJldmFsaWRhdGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZmV0Y2hlciAmJiBmZXRjaGVyLnN0YXRlICE9PSBcImlkbGVcIiAmJiBmZXRjaGVyLmRhdGEgPT09IHZvaWQgMCkge1xuICAgICAgc2hvdWxkUmV2YWxpZGF0ZSA9IGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNob3VsZFJldmFsaWRhdGUgPSBzaG91bGRSZXZhbGlkYXRlTG9hZGVyKGZldGNoZXJNYXRjaCwge1xuICAgICAgICBjdXJyZW50VXJsLFxuICAgICAgICBjdXJyZW50UGFyYW1zOiBzdGF0ZS5tYXRjaGVzW3N0YXRlLm1hdGNoZXMubGVuZ3RoIC0gMV0ucGFyYW1zLFxuICAgICAgICBuZXh0VXJsLFxuICAgICAgICBuZXh0UGFyYW1zOiBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0ucGFyYW1zLFxuICAgICAgICAuLi5zdWJtaXNzaW9uLFxuICAgICAgICBhY3Rpb25SZXN1bHQsXG4gICAgICAgIGFjdGlvblN0YXR1cyxcbiAgICAgICAgZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6IHNob3VsZFNraXBSZXZhbGlkYXRpb24gPyBmYWxzZSA6IGlzUmV2YWxpZGF0aW9uUmVxdWlyZWRcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoc2hvdWxkUmV2YWxpZGF0ZSkge1xuICAgICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMucHVzaCh7XG4gICAgICAgIGtleSxcbiAgICAgICAgcm91dGVJZDogZi5yb3V0ZUlkLFxuICAgICAgICBwYXRoOiBmLnBhdGgsXG4gICAgICAgIG1hdGNoZXM6IGZldGNoZXJNYXRjaGVzLFxuICAgICAgICBtYXRjaDogZmV0Y2hlck1hdGNoLFxuICAgICAgICBjb250cm9sbGVyOiBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBbbmF2aWdhdGlvbk1hdGNoZXMsIHJldmFsaWRhdGluZ0ZldGNoZXJzXTtcbn1cbmZ1bmN0aW9uIHNob3VsZExvYWRSb3V0ZU9uSHlkcmF0aW9uKHJvdXRlLCBsb2FkZXJEYXRhLCBlcnJvcnMpIHtcbiAgaWYgKHJvdXRlLmxhenkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoIXJvdXRlLmxvYWRlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBsZXQgaGFzRGF0YSA9IGxvYWRlckRhdGEgIT0gbnVsbCAmJiBsb2FkZXJEYXRhW3JvdXRlLmlkXSAhPT0gdm9pZCAwO1xuICBsZXQgaGFzRXJyb3IgPSBlcnJvcnMgIT0gbnVsbCAmJiBlcnJvcnNbcm91dGUuaWRdICE9PSB2b2lkIDA7XG4gIGlmICghaGFzRGF0YSAmJiBoYXNFcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIHJvdXRlLmxvYWRlciA9PT0gXCJmdW5jdGlvblwiICYmIHJvdXRlLmxvYWRlci5oeWRyYXRlID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuICFoYXNEYXRhICYmICFoYXNFcnJvcjtcbn1cbmZ1bmN0aW9uIGlzTmV3TG9hZGVyKGN1cnJlbnRMb2FkZXJEYXRhLCBjdXJyZW50TWF0Y2gsIG1hdGNoKSB7XG4gIGxldCBpc05ldyA9IChcbiAgICAvLyBbYV0gLT4gW2EsIGJdXG4gICAgIWN1cnJlbnRNYXRjaCB8fCAvLyBbYSwgYl0gLT4gW2EsIGNdXG4gICAgbWF0Y2gucm91dGUuaWQgIT09IGN1cnJlbnRNYXRjaC5yb3V0ZS5pZFxuICApO1xuICBsZXQgaXNNaXNzaW5nRGF0YSA9ICFjdXJyZW50TG9hZGVyRGF0YS5oYXNPd25Qcm9wZXJ0eShtYXRjaC5yb3V0ZS5pZCk7XG4gIHJldHVybiBpc05ldyB8fCBpc01pc3NpbmdEYXRhO1xufVxuZnVuY3Rpb24gaXNOZXdSb3V0ZUluc3RhbmNlKGN1cnJlbnRNYXRjaCwgbWF0Y2gpIHtcbiAgbGV0IGN1cnJlbnRQYXRoID0gY3VycmVudE1hdGNoLnJvdXRlLnBhdGg7XG4gIHJldHVybiAoXG4gICAgLy8gcGFyYW0gY2hhbmdlIGZvciB0aGlzIG1hdGNoLCAvdXNlcnMvMTIzIC0+IC91c2Vycy80NTZcbiAgICBjdXJyZW50TWF0Y2gucGF0aG5hbWUgIT09IG1hdGNoLnBhdGhuYW1lIHx8IC8vIHNwbGF0IHBhcmFtIGNoYW5nZWQsIHdoaWNoIGlzIG5vdCBwcmVzZW50IGluIG1hdGNoLnBhdGhcbiAgICAvLyBlLmcuIC9maWxlcy9pbWFnZXMvYXZhdGFyLmpwZyAtPiBmaWxlcy9maW5hbmNlcy54bHNcbiAgICBjdXJyZW50UGF0aCAhPSBudWxsICYmIGN1cnJlbnRQYXRoLmVuZHNXaXRoKFwiKlwiKSAmJiBjdXJyZW50TWF0Y2gucGFyYW1zW1wiKlwiXSAhPT0gbWF0Y2gucGFyYW1zW1wiKlwiXVxuICApO1xufVxuZnVuY3Rpb24gc2hvdWxkUmV2YWxpZGF0ZUxvYWRlcihsb2FkZXJNYXRjaCwgYXJnKSB7XG4gIGlmIChsb2FkZXJNYXRjaC5yb3V0ZS5zaG91bGRSZXZhbGlkYXRlKSB7XG4gICAgbGV0IHJvdXRlQ2hvaWNlID0gbG9hZGVyTWF0Y2gucm91dGUuc2hvdWxkUmV2YWxpZGF0ZShhcmcpO1xuICAgIGlmICh0eXBlb2Ygcm91dGVDaG9pY2UgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gcm91dGVDaG9pY2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcmcuZGVmYXVsdFNob3VsZFJldmFsaWRhdGU7XG59XG5mdW5jdGlvbiBwYXRjaFJvdXRlc0ltcGwocm91dGVJZCwgY2hpbGRyZW4sIHJvdXRlc1RvVXNlLCBtYW5pZmVzdCwgbWFwUm91dGVQcm9wZXJ0aWVzMikge1xuICBsZXQgY2hpbGRyZW5Ub1BhdGNoO1xuICBpZiAocm91dGVJZCkge1xuICAgIGxldCByb3V0ZSA9IG1hbmlmZXN0W3JvdXRlSWRdO1xuICAgIGludmFyaWFudChcbiAgICAgIHJvdXRlLFxuICAgICAgYE5vIHJvdXRlIGZvdW5kIHRvIHBhdGNoIGNoaWxkcmVuIGludG86IHJvdXRlSWQgPSAke3JvdXRlSWR9YFxuICAgICk7XG4gICAgaWYgKCFyb3V0ZS5jaGlsZHJlbikge1xuICAgICAgcm91dGUuY2hpbGRyZW4gPSBbXTtcbiAgICB9XG4gICAgY2hpbGRyZW5Ub1BhdGNoID0gcm91dGUuY2hpbGRyZW47XG4gIH0gZWxzZSB7XG4gICAgY2hpbGRyZW5Ub1BhdGNoID0gcm91dGVzVG9Vc2U7XG4gIH1cbiAgbGV0IHVuaXF1ZUNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKFxuICAgIChuZXdSb3V0ZSkgPT4gIWNoaWxkcmVuVG9QYXRjaC5zb21lKFxuICAgICAgKGV4aXN0aW5nUm91dGUpID0+IGlzU2FtZVJvdXRlKG5ld1JvdXRlLCBleGlzdGluZ1JvdXRlKVxuICAgIClcbiAgKTtcbiAgbGV0IG5ld1JvdXRlcyA9IGNvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXMoXG4gICAgdW5pcXVlQ2hpbGRyZW4sXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzMixcbiAgICBbcm91dGVJZCB8fCBcIl9cIiwgXCJwYXRjaFwiLCBTdHJpbmcoY2hpbGRyZW5Ub1BhdGNoPy5sZW5ndGggfHwgXCIwXCIpXSxcbiAgICBtYW5pZmVzdFxuICApO1xuICBjaGlsZHJlblRvUGF0Y2gucHVzaCguLi5uZXdSb3V0ZXMpO1xufVxuZnVuY3Rpb24gaXNTYW1lUm91dGUobmV3Um91dGUsIGV4aXN0aW5nUm91dGUpIHtcbiAgaWYgKFwiaWRcIiBpbiBuZXdSb3V0ZSAmJiBcImlkXCIgaW4gZXhpc3RpbmdSb3V0ZSAmJiBuZXdSb3V0ZS5pZCA9PT0gZXhpc3RpbmdSb3V0ZS5pZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICghKG5ld1JvdXRlLmluZGV4ID09PSBleGlzdGluZ1JvdXRlLmluZGV4ICYmIG5ld1JvdXRlLnBhdGggPT09IGV4aXN0aW5nUm91dGUucGF0aCAmJiBuZXdSb3V0ZS5jYXNlU2Vuc2l0aXZlID09PSBleGlzdGluZ1JvdXRlLmNhc2VTZW5zaXRpdmUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICgoIW5ld1JvdXRlLmNoaWxkcmVuIHx8IG5ld1JvdXRlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkgJiYgKCFleGlzdGluZ1JvdXRlLmNoaWxkcmVuIHx8IGV4aXN0aW5nUm91dGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBuZXdSb3V0ZS5jaGlsZHJlbi5ldmVyeShcbiAgICAoYUNoaWxkLCBpKSA9PiBleGlzdGluZ1JvdXRlLmNoaWxkcmVuPy5zb21lKChiQ2hpbGQpID0+IGlzU2FtZVJvdXRlKGFDaGlsZCwgYkNoaWxkKSlcbiAgKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGxvYWRMYXp5Um91dGVNb2R1bGUocm91dGUsIG1hcFJvdXRlUHJvcGVydGllczIsIG1hbmlmZXN0KSB7XG4gIGlmICghcm91dGUubGF6eSkge1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgbGF6eVJvdXRlID0gYXdhaXQgcm91dGUubGF6eSgpO1xuICBpZiAoIXJvdXRlLmxhenkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHJvdXRlVG9VcGRhdGUgPSBtYW5pZmVzdFtyb3V0ZS5pZF07XG4gIGludmFyaWFudChyb3V0ZVRvVXBkYXRlLCBcIk5vIHJvdXRlIGZvdW5kIGluIG1hbmlmZXN0XCIpO1xuICBsZXQgcm91dGVVcGRhdGVzID0ge307XG4gIGZvciAobGV0IGxhenlSb3V0ZVByb3BlcnR5IGluIGxhenlSb3V0ZSkge1xuICAgIGxldCBzdGF0aWNSb3V0ZVZhbHVlID0gcm91dGVUb1VwZGF0ZVtsYXp5Um91dGVQcm9wZXJ0eV07XG4gICAgbGV0IGlzUHJvcGVydHlTdGF0aWNhbGx5RGVmaW5lZCA9IHN0YXRpY1JvdXRlVmFsdWUgIT09IHZvaWQgMCAmJiAvLyBUaGlzIHByb3BlcnR5IGlzbid0IHN0YXRpYyBzaW5jZSBpdCBzaG91bGQgYWx3YXlzIGJlIHVwZGF0ZWQgYmFzZWRcbiAgICAvLyBvbiB0aGUgcm91dGUgdXBkYXRlc1xuICAgIGxhenlSb3V0ZVByb3BlcnR5ICE9PSBcImhhc0Vycm9yQm91bmRhcnlcIjtcbiAgICB3YXJuaW5nKFxuICAgICAgIWlzUHJvcGVydHlTdGF0aWNhbGx5RGVmaW5lZCxcbiAgICAgIGBSb3V0ZSBcIiR7cm91dGVUb1VwZGF0ZS5pZH1cIiBoYXMgYSBzdGF0aWMgcHJvcGVydHkgXCIke2xhenlSb3V0ZVByb3BlcnR5fVwiIGRlZmluZWQgYnV0IGl0cyBsYXp5IGZ1bmN0aW9uIGlzIGFsc28gcmV0dXJuaW5nIGEgdmFsdWUgZm9yIHRoaXMgcHJvcGVydHkuIFRoZSBsYXp5IHJvdXRlIHByb3BlcnR5IFwiJHtsYXp5Um91dGVQcm9wZXJ0eX1cIiB3aWxsIGJlIGlnbm9yZWQuYFxuICAgICk7XG4gICAgaWYgKCFpc1Byb3BlcnR5U3RhdGljYWxseURlZmluZWQgJiYgIWltbXV0YWJsZVJvdXRlS2V5cy5oYXMobGF6eVJvdXRlUHJvcGVydHkpKSB7XG4gICAgICByb3V0ZVVwZGF0ZXNbbGF6eVJvdXRlUHJvcGVydHldID0gbGF6eVJvdXRlW2xhenlSb3V0ZVByb3BlcnR5XTtcbiAgICB9XG4gIH1cbiAgT2JqZWN0LmFzc2lnbihyb3V0ZVRvVXBkYXRlLCByb3V0ZVVwZGF0ZXMpO1xuICBPYmplY3QuYXNzaWduKHJvdXRlVG9VcGRhdGUsIHtcbiAgICAvLyBUbyBrZWVwIHRoaW5ncyBmcmFtZXdvcmsgYWdub3N0aWMsIHdlIHVzZSB0aGUgcHJvdmlkZWQgYG1hcFJvdXRlUHJvcGVydGllc2BcbiAgICAvLyBmdW5jdGlvbiB0byBzZXQgdGhlIGZyYW1ld29yay1hd2FyZSBwcm9wZXJ0aWVzIChgZWxlbWVudGAvYGhhc0Vycm9yQm91bmRhcnlgKVxuICAgIC8vIHNpbmNlIHRoZSBsb2dpYyB3aWxsIGRpZmZlciBiZXR3ZWVuIGZyYW1ld29ya3MuXG4gICAgLi4ubWFwUm91dGVQcm9wZXJ0aWVzMihyb3V0ZVRvVXBkYXRlKSxcbiAgICBsYXp5OiB2b2lkIDBcbiAgfSk7XG59XG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0RGF0YVN0cmF0ZWd5KHtcbiAgbWF0Y2hlc1xufSkge1xuICBsZXQgbWF0Y2hlc1RvTG9hZCA9IG1hdGNoZXMuZmlsdGVyKChtKSA9PiBtLnNob3VsZExvYWQpO1xuICBsZXQgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKG1hdGNoZXNUb0xvYWQubWFwKChtKSA9PiBtLnJlc29sdmUoKSkpO1xuICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoXG4gICAgKGFjYywgcmVzdWx0LCBpKSA9PiBPYmplY3QuYXNzaWduKGFjYywgeyBbbWF0Y2hlc1RvTG9hZFtpXS5yb3V0ZS5pZF06IHJlc3VsdCB9KSxcbiAgICB7fVxuICApO1xufVxuYXN5bmMgZnVuY3Rpb24gY2FsbERhdGFTdHJhdGVneUltcGwoZGF0YVN0cmF0ZWd5SW1wbCwgdHlwZSwgc3RhdGUsIHJlcXVlc3QsIG1hdGNoZXNUb0xvYWQsIG1hdGNoZXMsIGZldGNoZXJLZXksIG1hbmlmZXN0LCBtYXBSb3V0ZVByb3BlcnRpZXMyLCByZXF1ZXN0Q29udGV4dCkge1xuICBsZXQgbG9hZFJvdXRlRGVmaW5pdGlvbnNQcm9taXNlcyA9IG1hdGNoZXMubWFwKFxuICAgIChtKSA9PiBtLnJvdXRlLmxhenkgPyBsb2FkTGF6eVJvdXRlTW9kdWxlKG0ucm91dGUsIG1hcFJvdXRlUHJvcGVydGllczIsIG1hbmlmZXN0KSA6IHZvaWQgMFxuICApO1xuICBsZXQgZHNNYXRjaGVzID0gbWF0Y2hlcy5tYXAoKG1hdGNoLCBpKSA9PiB7XG4gICAgbGV0IGxvYWRSb3V0ZVByb21pc2UgPSBsb2FkUm91dGVEZWZpbml0aW9uc1Byb21pc2VzW2ldO1xuICAgIGxldCBzaG91bGRMb2FkID0gbWF0Y2hlc1RvTG9hZC5zb21lKChtKSA9PiBtLnJvdXRlLmlkID09PSBtYXRjaC5yb3V0ZS5pZCk7XG4gICAgbGV0IHJlc29sdmUgPSBhc3luYyAoaGFuZGxlck92ZXJyaWRlKSA9PiB7XG4gICAgICBpZiAoaGFuZGxlck92ZXJyaWRlICYmIHJlcXVlc3QubWV0aG9kID09PSBcIkdFVFwiICYmIChtYXRjaC5yb3V0ZS5sYXp5IHx8IG1hdGNoLnJvdXRlLmxvYWRlcikpIHtcbiAgICAgICAgc2hvdWxkTG9hZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2hvdWxkTG9hZCA/IGNhbGxMb2FkZXJPckFjdGlvbihcbiAgICAgICAgdHlwZSxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIGxvYWRSb3V0ZVByb21pc2UsXG4gICAgICAgIGhhbmRsZXJPdmVycmlkZSxcbiAgICAgICAgcmVxdWVzdENvbnRleHRcbiAgICAgICkgOiBQcm9taXNlLnJlc29sdmUoeyB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLCByZXN1bHQ6IHZvaWQgMCB9KTtcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICAuLi5tYXRjaCxcbiAgICAgIHNob3VsZExvYWQsXG4gICAgICByZXNvbHZlXG4gICAgfTtcbiAgfSk7XG4gIGxldCByZXN1bHRzID0gYXdhaXQgZGF0YVN0cmF0ZWd5SW1wbCh7XG4gICAgbWF0Y2hlczogZHNNYXRjaGVzLFxuICAgIHJlcXVlc3QsXG4gICAgcGFyYW1zOiBtYXRjaGVzWzBdLnBhcmFtcyxcbiAgICBmZXRjaGVyS2V5LFxuICAgIGNvbnRleHQ6IHJlcXVlc3RDb250ZXh0XG4gIH0pO1xuICB0cnkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGxvYWRSb3V0ZURlZmluaXRpb25zUHJvbWlzZXMpO1xuICB9IGNhdGNoIChlKSB7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5hc3luYyBmdW5jdGlvbiBjYWxsTG9hZGVyT3JBY3Rpb24odHlwZSwgcmVxdWVzdCwgbWF0Y2gsIGxvYWRSb3V0ZVByb21pc2UsIGhhbmRsZXJPdmVycmlkZSwgc3RhdGljQ29udGV4dCkge1xuICBsZXQgcmVzdWx0O1xuICBsZXQgb25SZWplY3Q7XG4gIGxldCBydW5IYW5kbGVyID0gKGhhbmRsZXIpID0+IHtcbiAgICBsZXQgcmVqZWN0O1xuICAgIGxldCBhYm9ydFByb21pc2UgPSBuZXcgUHJvbWlzZSgoXywgcikgPT4gcmVqZWN0ID0gcik7XG4gICAgb25SZWplY3QgPSAoKSA9PiByZWplY3QoKTtcbiAgICByZXF1ZXN0LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25SZWplY3QpO1xuICAgIGxldCBhY3R1YWxIYW5kbGVyID0gKGN0eCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBZb3UgY2Fubm90IGNhbGwgdGhlIGhhbmRsZXIgZm9yIGEgcm91dGUgd2hpY2ggZGVmaW5lcyBhIGJvb2xlYW4gXCIke3R5cGV9XCIgW3JvdXRlSWQ6ICR7bWF0Y2gucm91dGUuaWR9XWBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFuZGxlcihcbiAgICAgICAge1xuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgcGFyYW1zOiBtYXRjaC5wYXJhbXMsXG4gICAgICAgICAgY29udGV4dDogc3RhdGljQ29udGV4dFxuICAgICAgICB9LFxuICAgICAgICAuLi5jdHggIT09IHZvaWQgMCA/IFtjdHhdIDogW11cbiAgICAgICk7XG4gICAgfTtcbiAgICBsZXQgaGFuZGxlclByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IHZhbCA9IGF3YWl0IChoYW5kbGVyT3ZlcnJpZGUgPyBoYW5kbGVyT3ZlcnJpZGUoKGN0eCkgPT4gYWN0dWFsSGFuZGxlcihjdHgpKSA6IGFjdHVhbEhhbmRsZXIoKSk7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiZGF0YVwiLCByZXN1bHQ6IHZhbCB9O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImVycm9yXCIsIHJlc3VsdDogZSB9O1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgcmV0dXJuIFByb21pc2UucmFjZShbaGFuZGxlclByb21pc2UsIGFib3J0UHJvbWlzZV0pO1xuICB9O1xuICB0cnkge1xuICAgIGxldCBoYW5kbGVyID0gbWF0Y2gucm91dGVbdHlwZV07XG4gICAgaWYgKGxvYWRSb3V0ZVByb21pc2UpIHtcbiAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgIGxldCBoYW5kbGVyRXJyb3I7XG4gICAgICAgIGxldCBbdmFsdWVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgIC8vIElmIHRoZSBoYW5kbGVyIHRocm93cywgZG9uJ3QgbGV0IGl0IGltbWVkaWF0ZWx5IGJ1YmJsZSBvdXQsXG4gICAgICAgICAgLy8gc2luY2Ugd2UgbmVlZCB0byBsZXQgdGhlIGxhenkoKSBleGVjdXRpb24gZmluaXNoIHNvIHdlIGtub3cgaWYgdGhpc1xuICAgICAgICAgIC8vIHJvdXRlIGhhcyBhIGJvdW5kYXJ5IHRoYXQgY2FuIGhhbmRsZSB0aGUgZXJyb3JcbiAgICAgICAgICBydW5IYW5kbGVyKGhhbmRsZXIpLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVyRXJyb3IgPSBlO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGxvYWRSb3V0ZVByb21pc2VcbiAgICAgICAgXSk7XG4gICAgICAgIGlmIChoYW5kbGVyRXJyb3IgIT09IHZvaWQgMCkge1xuICAgICAgICAgIHRocm93IGhhbmRsZXJFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGxvYWRSb3V0ZVByb21pc2U7XG4gICAgICAgIGhhbmRsZXIgPSBtYXRjaC5yb3V0ZVt0eXBlXTtcbiAgICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgICByZXN1bHQgPSBhd2FpdCBydW5IYW5kbGVyKGhhbmRsZXIpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYWN0aW9uXCIpIHtcbiAgICAgICAgICBsZXQgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCk7XG4gICAgICAgICAgbGV0IHBhdGhuYW1lID0gdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaDtcbiAgICAgICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNSwge1xuICAgICAgICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgcm91dGVJZDogbWF0Y2gucm91dGUuaWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4geyB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLCByZXN1bHQ6IHZvaWQgMCB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaGFuZGxlcikge1xuICAgICAgbGV0IHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICAgICAgbGV0IHBhdGhuYW1lID0gdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaDtcbiAgICAgIHRocm93IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7XG4gICAgICAgIHBhdGhuYW1lXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgcnVuSGFuZGxlcihoYW5kbGVyKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sIHJlc3VsdDogZSB9O1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChvblJlamVjdCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uUmVqZWN0KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnREYXRhU3RyYXRlZ3lSZXN1bHRUb0RhdGFSZXN1bHQoZGF0YVN0cmF0ZWd5UmVzdWx0KSB7XG4gIGxldCB7IHJlc3VsdCwgdHlwZSB9ID0gZGF0YVN0cmF0ZWd5UmVzdWx0O1xuICBpZiAoaXNSZXNwb25zZShyZXN1bHQpKSB7XG4gICAgbGV0IGRhdGEyO1xuICAgIHRyeSB7XG4gICAgICBsZXQgY29udGVudFR5cGUgPSByZXN1bHQuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIik7XG4gICAgICBpZiAoY29udGVudFR5cGUgJiYgL1xcYmFwcGxpY2F0aW9uXFwvanNvblxcYi8udGVzdChjb250ZW50VHlwZSkpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5ib2R5ID09IG51bGwpIHtcbiAgICAgICAgICBkYXRhMiA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0YTIgPSBhd2FpdCByZXN1bHQuanNvbigpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhMiA9IGF3YWl0IHJlc3VsdC50ZXh0KCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLCBlcnJvcjogZSB9O1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gXCJlcnJvclwiIC8qIGVycm9yICovKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgIGVycm9yOiBuZXcgRXJyb3JSZXNwb25zZUltcGwocmVzdWx0LnN0YXR1cywgcmVzdWx0LnN0YXR1c1RleHQsIGRhdGEyKSxcbiAgICAgICAgc3RhdHVzQ29kZTogcmVzdWx0LnN0YXR1cyxcbiAgICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnNcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLFxuICAgICAgZGF0YTogZGF0YTIsXG4gICAgICBzdGF0dXNDb2RlOiByZXN1bHQuc3RhdHVzLFxuICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnNcbiAgICB9O1xuICB9XG4gIGlmICh0eXBlID09PSBcImVycm9yXCIgLyogZXJyb3IgKi8pIHtcbiAgICBpZiAoaXNEYXRhV2l0aFJlc3BvbnNlSW5pdChyZXN1bHQpKSB7XG4gICAgICBpZiAocmVzdWx0LmRhdGEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgICAgICBlcnJvcjogcmVzdWx0LmRhdGEsXG4gICAgICAgICAgc3RhdHVzQ29kZTogcmVzdWx0LmluaXQ/LnN0YXR1c1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gbmV3IEVycm9yUmVzcG9uc2VJbXBsKFxuICAgICAgICByZXN1bHQuaW5pdD8uc3RhdHVzIHx8IDUwMCxcbiAgICAgICAgdm9pZCAwLFxuICAgICAgICByZXN1bHQuZGF0YVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgIGVycm9yOiByZXN1bHQsXG4gICAgICBzdGF0dXNDb2RlOiBpc1JvdXRlRXJyb3JSZXNwb25zZShyZXN1bHQpID8gcmVzdWx0LnN0YXR1cyA6IHZvaWQgMFxuICAgIH07XG4gIH1cbiAgaWYgKGlzRGF0YVdpdGhSZXNwb25zZUluaXQocmVzdWx0KSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLFxuICAgICAgZGF0YTogcmVzdWx0LmRhdGEsXG4gICAgICBzdGF0dXNDb2RlOiByZXN1bHQuaW5pdD8uc3RhdHVzLFxuICAgICAgaGVhZGVyczogcmVzdWx0LmluaXQ/LmhlYWRlcnMgPyBuZXcgSGVhZGVycyhyZXN1bHQuaW5pdC5oZWFkZXJzKSA6IHZvaWQgMFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgdHlwZTogXCJkYXRhXCIgLyogZGF0YSAqLywgZGF0YTogcmVzdWx0IH07XG59XG5mdW5jdGlvbiBub3JtYWxpemVSZWxhdGl2ZVJvdXRpbmdSZWRpcmVjdFJlc3BvbnNlKHJlc3BvbnNlLCByZXF1ZXN0LCByb3V0ZUlkLCBtYXRjaGVzLCBiYXNlbmFtZSkge1xuICBsZXQgbG9jYXRpb24gPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkxvY2F0aW9uXCIpO1xuICBpbnZhcmlhbnQoXG4gICAgbG9jYXRpb24sXG4gICAgXCJSZWRpcmVjdHMgcmV0dXJuZWQvdGhyb3duIGZyb20gbG9hZGVycy9hY3Rpb25zIG11c3QgaGF2ZSBhIExvY2F0aW9uIGhlYWRlclwiXG4gICk7XG4gIGlmICghQUJTT0xVVEVfVVJMX1JFR0VYLnRlc3QobG9jYXRpb24pKSB7XG4gICAgbGV0IHRyaW1tZWRNYXRjaGVzID0gbWF0Y2hlcy5zbGljZShcbiAgICAgIDAsXG4gICAgICBtYXRjaGVzLmZpbmRJbmRleCgobSkgPT4gbS5yb3V0ZS5pZCA9PT0gcm91dGVJZCkgKyAxXG4gICAgKTtcbiAgICBsb2NhdGlvbiA9IG5vcm1hbGl6ZVRvKFxuICAgICAgbmV3IFVSTChyZXF1ZXN0LnVybCksXG4gICAgICB0cmltbWVkTWF0Y2hlcyxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgbG9jYXRpb25cbiAgICApO1xuICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiTG9jYXRpb25cIiwgbG9jYXRpb24pO1xuICB9XG4gIHJldHVybiByZXNwb25zZTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlZGlyZWN0TG9jYXRpb24obG9jYXRpb24sIGN1cnJlbnRVcmwsIGJhc2VuYW1lKSB7XG4gIGlmIChBQlNPTFVURV9VUkxfUkVHRVgudGVzdChsb2NhdGlvbikpIHtcbiAgICBsZXQgbm9ybWFsaXplZExvY2F0aW9uID0gbG9jYXRpb247XG4gICAgbGV0IHVybCA9IG5vcm1hbGl6ZWRMb2NhdGlvbi5zdGFydHNXaXRoKFwiLy9cIikgPyBuZXcgVVJMKGN1cnJlbnRVcmwucHJvdG9jb2wgKyBub3JtYWxpemVkTG9jYXRpb24pIDogbmV3IFVSTChub3JtYWxpemVkTG9jYXRpb24pO1xuICAgIGxldCBpc1NhbWVCYXNlbmFtZSA9IHN0cmlwQmFzZW5hbWUodXJsLnBhdGhuYW1lLCBiYXNlbmFtZSkgIT0gbnVsbDtcbiAgICBpZiAodXJsLm9yaWdpbiA9PT0gY3VycmVudFVybC5vcmlnaW4gJiYgaXNTYW1lQmFzZW5hbWUpIHtcbiAgICAgIHJldHVybiB1cmwucGF0aG5hbWUgKyB1cmwuc2VhcmNoICsgdXJsLmhhc2g7XG4gICAgfVxuICB9XG4gIHJldHVybiBsb2NhdGlvbjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNsaWVudFNpZGVSZXF1ZXN0KGhpc3RvcnksIGxvY2F0aW9uLCBzaWduYWwsIHN1Ym1pc3Npb24pIHtcbiAgbGV0IHVybCA9IGhpc3RvcnkuY3JlYXRlVVJMKHN0cmlwSGFzaEZyb21QYXRoKGxvY2F0aW9uKSkudG9TdHJpbmcoKTtcbiAgbGV0IGluaXQgPSB7IHNpZ25hbCB9O1xuICBpZiAoc3VibWlzc2lvbiAmJiBpc011dGF0aW9uTWV0aG9kKHN1Ym1pc3Npb24uZm9ybU1ldGhvZCkpIHtcbiAgICBsZXQgeyBmb3JtTWV0aG9kLCBmb3JtRW5jVHlwZSB9ID0gc3VibWlzc2lvbjtcbiAgICBpbml0Lm1ldGhvZCA9IGZvcm1NZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICBpZiAoZm9ybUVuY1R5cGUgPT09IFwiYXBwbGljYXRpb24vanNvblwiKSB7XG4gICAgICBpbml0LmhlYWRlcnMgPSBuZXcgSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IGZvcm1FbmNUeXBlIH0pO1xuICAgICAgaW5pdC5ib2R5ID0gSlNPTi5zdHJpbmdpZnkoc3VibWlzc2lvbi5qc29uKTtcbiAgICB9IGVsc2UgaWYgKGZvcm1FbmNUeXBlID09PSBcInRleHQvcGxhaW5cIikge1xuICAgICAgaW5pdC5ib2R5ID0gc3VibWlzc2lvbi50ZXh0O1xuICAgIH0gZWxzZSBpZiAoZm9ybUVuY1R5cGUgPT09IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgJiYgc3VibWlzc2lvbi5mb3JtRGF0YSkge1xuICAgICAgaW5pdC5ib2R5ID0gY29udmVydEZvcm1EYXRhVG9TZWFyY2hQYXJhbXMoc3VibWlzc2lvbi5mb3JtRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQuYm9keSA9IHN1Ym1pc3Npb24uZm9ybURhdGE7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdCh1cmwsIGluaXQpO1xufVxuZnVuY3Rpb24gY29udmVydEZvcm1EYXRhVG9TZWFyY2hQYXJhbXMoZm9ybURhdGEpIHtcbiAgbGV0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGZvcm1EYXRhLmVudHJpZXMoKSkge1xuICAgIHNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IHZhbHVlLm5hbWUpO1xuICB9XG4gIHJldHVybiBzZWFyY2hQYXJhbXM7XG59XG5mdW5jdGlvbiBjb252ZXJ0U2VhcmNoUGFyYW1zVG9Gb3JtRGF0YShzZWFyY2hQYXJhbXMpIHtcbiAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBzZWFyY2hQYXJhbXMuZW50cmllcygpKSB7XG4gICAgZm9ybURhdGEuYXBwZW5kKGtleSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmb3JtRGF0YTtcbn1cbmZ1bmN0aW9uIHByb2Nlc3NSb3V0ZUxvYWRlckRhdGEobWF0Y2hlcywgcmVzdWx0cywgcGVuZGluZ0FjdGlvblJlc3VsdCwgaXNTdGF0aWNIYW5kbGVyID0gZmFsc2UsIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nID0gZmFsc2UpIHtcbiAgbGV0IGxvYWRlckRhdGEgPSB7fTtcbiAgbGV0IGVycm9ycyA9IG51bGw7XG4gIGxldCBzdGF0dXNDb2RlO1xuICBsZXQgZm91bmRFcnJvciA9IGZhbHNlO1xuICBsZXQgbG9hZGVySGVhZGVycyA9IHt9O1xuICBsZXQgcGVuZGluZ0Vycm9yID0gcGVuZGluZ0FjdGlvblJlc3VsdCAmJiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8gcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5lcnJvciA6IHZvaWQgMDtcbiAgbWF0Y2hlcy5mb3JFYWNoKChtYXRjaCkgPT4ge1xuICAgIGlmICghKG1hdGNoLnJvdXRlLmlkIGluIHJlc3VsdHMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBpZCA9IG1hdGNoLnJvdXRlLmlkO1xuICAgIGxldCByZXN1bHQgPSByZXN1bHRzW2lkXTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICAhaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpLFxuICAgICAgXCJDYW5ub3QgaGFuZGxlIHJlZGlyZWN0IHJlc3VsdHMgaW4gcHJvY2Vzc0xvYWRlckRhdGFcIlxuICAgICk7XG4gICAgaWYgKGlzRXJyb3JSZXN1bHQocmVzdWx0KSkge1xuICAgICAgbGV0IGVycm9yID0gcmVzdWx0LmVycm9yO1xuICAgICAgaWYgKHBlbmRpbmdFcnJvciAhPT0gdm9pZCAwKSB7XG4gICAgICAgIGVycm9yID0gcGVuZGluZ0Vycm9yO1xuICAgICAgICBwZW5kaW5nRXJyb3IgPSB2b2lkIDA7XG4gICAgICB9XG4gICAgICBlcnJvcnMgPSBlcnJvcnMgfHwge307XG4gICAgICBpZiAoc2tpcExvYWRlckVycm9yQnViYmxpbmcpIHtcbiAgICAgICAgZXJyb3JzW2lkXSA9IGVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGJvdW5kYXJ5TWF0Y2ggPSBmaW5kTmVhcmVzdEJvdW5kYXJ5KG1hdGNoZXMsIGlkKTtcbiAgICAgICAgaWYgKGVycm9yc1tib3VuZGFyeU1hdGNoLnJvdXRlLmlkXSA9PSBudWxsKSB7XG4gICAgICAgICAgZXJyb3JzW2JvdW5kYXJ5TWF0Y2gucm91dGUuaWRdID0gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaXNTdGF0aWNIYW5kbGVyKSB7XG4gICAgICAgIGxvYWRlckRhdGFbaWRdID0gUmVzZXRMb2FkZXJEYXRhU3ltYm9sO1xuICAgICAgfVxuICAgICAgaWYgKCFmb3VuZEVycm9yKSB7XG4gICAgICAgIGZvdW5kRXJyb3IgPSB0cnVlO1xuICAgICAgICBzdGF0dXNDb2RlID0gaXNSb3V0ZUVycm9yUmVzcG9uc2UocmVzdWx0LmVycm9yKSA/IHJlc3VsdC5lcnJvci5zdGF0dXMgOiA1MDA7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0LmhlYWRlcnMpIHtcbiAgICAgICAgbG9hZGVySGVhZGVyc1tpZF0gPSByZXN1bHQuaGVhZGVycztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZGVyRGF0YVtpZF0gPSByZXN1bHQuZGF0YTtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzQ29kZSAmJiByZXN1bHQuc3RhdHVzQ29kZSAhPT0gMjAwICYmICFmb3VuZEVycm9yKSB7XG4gICAgICAgIHN0YXR1c0NvZGUgPSByZXN1bHQuc3RhdHVzQ29kZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQuaGVhZGVycykge1xuICAgICAgICBsb2FkZXJIZWFkZXJzW2lkXSA9IHJlc3VsdC5oZWFkZXJzO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGlmIChwZW5kaW5nRXJyb3IgIT09IHZvaWQgMCAmJiBwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgZXJyb3JzID0geyBbcGVuZGluZ0FjdGlvblJlc3VsdFswXV06IHBlbmRpbmdFcnJvciB9O1xuICAgIGxvYWRlckRhdGFbcGVuZGluZ0FjdGlvblJlc3VsdFswXV0gPSB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBsb2FkZXJEYXRhLFxuICAgIGVycm9ycyxcbiAgICBzdGF0dXNDb2RlOiBzdGF0dXNDb2RlIHx8IDIwMCxcbiAgICBsb2FkZXJIZWFkZXJzXG4gIH07XG59XG5mdW5jdGlvbiBwcm9jZXNzTG9hZGVyRGF0YShzdGF0ZSwgbWF0Y2hlcywgcmVzdWx0cywgcGVuZGluZ0FjdGlvblJlc3VsdCwgcmV2YWxpZGF0aW5nRmV0Y2hlcnMsIGZldGNoZXJSZXN1bHRzKSB7XG4gIGxldCB7IGxvYWRlckRhdGEsIGVycm9ycyB9ID0gcHJvY2Vzc1JvdXRlTG9hZGVyRGF0YShcbiAgICBtYXRjaGVzLFxuICAgIHJlc3VsdHMsXG4gICAgcGVuZGluZ0FjdGlvblJlc3VsdFxuICApO1xuICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyZikgPT4ge1xuICAgIGxldCB7IGtleSwgbWF0Y2gsIGNvbnRyb2xsZXIgfSA9IHJmO1xuICAgIGxldCByZXN1bHQgPSBmZXRjaGVyUmVzdWx0c1trZXldO1xuICAgIGludmFyaWFudChyZXN1bHQsIFwiRGlkIG5vdCBmaW5kIGNvcnJlc3BvbmRpbmcgZmV0Y2hlciByZXN1bHRcIik7XG4gICAgaWYgKGNvbnRyb2xsZXIgJiYgY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoaXNFcnJvclJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBsZXQgYm91bmRhcnlNYXRjaCA9IGZpbmROZWFyZXN0Qm91bmRhcnkoc3RhdGUubWF0Y2hlcywgbWF0Y2g/LnJvdXRlLmlkKTtcbiAgICAgIGlmICghKGVycm9ycyAmJiBlcnJvcnNbYm91bmRhcnlNYXRjaC5yb3V0ZS5pZF0pKSB7XG4gICAgICAgIGVycm9ycyA9IHtcbiAgICAgICAgICAuLi5lcnJvcnMsXG4gICAgICAgICAgW2JvdW5kYXJ5TWF0Y2gucm91dGUuaWRdOiByZXN1bHQuZXJyb3JcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmZldGNoZXJzLmRlbGV0ZShrZXkpO1xuICAgIH0gZWxzZSBpZiAoaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBpbnZhcmlhbnQoZmFsc2UsIFwiVW5oYW5kbGVkIGZldGNoZXIgcmV2YWxpZGF0aW9uIHJlZGlyZWN0XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZG9uZUZldGNoZXIgPSBnZXREb25lRmV0Y2hlcihyZXN1bHQuZGF0YSk7XG4gICAgICBzdGF0ZS5mZXRjaGVycy5zZXQoa2V5LCBkb25lRmV0Y2hlcik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHsgbG9hZGVyRGF0YSwgZXJyb3JzIH07XG59XG5mdW5jdGlvbiBtZXJnZUxvYWRlckRhdGEobG9hZGVyRGF0YSwgbmV3TG9hZGVyRGF0YSwgbWF0Y2hlcywgZXJyb3JzKSB7XG4gIGxldCBtZXJnZWRMb2FkZXJEYXRhID0gT2JqZWN0LmVudHJpZXMobmV3TG9hZGVyRGF0YSkuZmlsdGVyKChbLCB2XSkgPT4gdiAhPT0gUmVzZXRMb2FkZXJEYXRhU3ltYm9sKS5yZWR1Y2UoKG1lcmdlZCwgW2ssIHZdKSA9PiB7XG4gICAgbWVyZ2VkW2tdID0gdjtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7XG4gIGZvciAobGV0IG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBsZXQgaWQgPSBtYXRjaC5yb3V0ZS5pZDtcbiAgICBpZiAoIW5ld0xvYWRlckRhdGEuaGFzT3duUHJvcGVydHkoaWQpICYmIGxvYWRlckRhdGEuaGFzT3duUHJvcGVydHkoaWQpICYmIG1hdGNoLnJvdXRlLmxvYWRlcikge1xuICAgICAgbWVyZ2VkTG9hZGVyRGF0YVtpZF0gPSBsb2FkZXJEYXRhW2lkXTtcbiAgICB9XG4gICAgaWYgKGVycm9ycyAmJiBlcnJvcnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1lcmdlZExvYWRlckRhdGE7XG59XG5mdW5jdGlvbiBnZXRBY3Rpb25EYXRhRm9yQ29tbWl0KHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgaWYgKCFwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHJldHVybiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8ge1xuICAgIC8vIENsZWFyIG91dCBwcmlvciBhY3Rpb25EYXRhIG9uIGVycm9yc1xuICAgIGFjdGlvbkRhdGE6IHt9XG4gIH0gOiB7XG4gICAgYWN0aW9uRGF0YToge1xuICAgICAgW3BlbmRpbmdBY3Rpb25SZXN1bHRbMF1dOiBwZW5kaW5nQWN0aW9uUmVzdWx0WzFdLmRhdGFcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBmaW5kTmVhcmVzdEJvdW5kYXJ5KG1hdGNoZXMsIHJvdXRlSWQpIHtcbiAgbGV0IGVsaWdpYmxlTWF0Y2hlcyA9IHJvdXRlSWQgPyBtYXRjaGVzLnNsaWNlKDAsIG1hdGNoZXMuZmluZEluZGV4KChtKSA9PiBtLnJvdXRlLmlkID09PSByb3V0ZUlkKSArIDEpIDogWy4uLm1hdGNoZXNdO1xuICByZXR1cm4gZWxpZ2libGVNYXRjaGVzLnJldmVyc2UoKS5maW5kKChtKSA9PiBtLnJvdXRlLmhhc0Vycm9yQm91bmRhcnkgPT09IHRydWUpIHx8IG1hdGNoZXNbMF07XG59XG5mdW5jdGlvbiBnZXRTaG9ydENpcmN1aXRNYXRjaGVzKHJvdXRlcykge1xuICBsZXQgcm91dGUgPSByb3V0ZXMubGVuZ3RoID09PSAxID8gcm91dGVzWzBdIDogcm91dGVzLmZpbmQoKHIpID0+IHIuaW5kZXggfHwgIXIucGF0aCB8fCByLnBhdGggPT09IFwiL1wiKSB8fCB7XG4gICAgaWQ6IGBfX3NoaW0tZXJyb3Itcm91dGVfX2BcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBtYXRjaGVzOiBbXG4gICAgICB7XG4gICAgICAgIHBhcmFtczoge30sXG4gICAgICAgIHBhdGhuYW1lOiBcIlwiLFxuICAgICAgICBwYXRobmFtZUJhc2U6IFwiXCIsXG4gICAgICAgIHJvdXRlXG4gICAgICB9XG4gICAgXSxcbiAgICByb3V0ZVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcihzdGF0dXMsIHtcbiAgcGF0aG5hbWUsXG4gIHJvdXRlSWQsXG4gIG1ldGhvZCxcbiAgdHlwZSxcbiAgbWVzc2FnZVxufSA9IHt9KSB7XG4gIGxldCBzdGF0dXNUZXh0ID0gXCJVbmtub3duIFNlcnZlciBFcnJvclwiO1xuICBsZXQgZXJyb3JNZXNzYWdlID0gXCJVbmtub3duIEByZW1peC1ydW4vcm91dGVyIGVycm9yXCI7XG4gIGlmIChzdGF0dXMgPT09IDQwMCkge1xuICAgIHN0YXR1c1RleHQgPSBcIkJhZCBSZXF1ZXN0XCI7XG4gICAgaWYgKG1ldGhvZCAmJiBwYXRobmFtZSAmJiByb3V0ZUlkKSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSBgWW91IG1hZGUgYSAke21ldGhvZH0gcmVxdWVzdCB0byBcIiR7cGF0aG5hbWV9XCIgYnV0IGRpZCBub3QgcHJvdmlkZSBhIFxcYGxvYWRlclxcYCBmb3Igcm91dGUgXCIke3JvdXRlSWR9XCIsIHNvIHRoZXJlIGlzIG5vIHdheSB0byBoYW5kbGUgdGhlIHJlcXVlc3QuYDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiaW52YWxpZC1ib2R5XCIpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IFwiVW5hYmxlIHRvIGVuY29kZSBzdWJtaXNzaW9uIGJvZHlcIjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoc3RhdHVzID09PSA0MDMpIHtcbiAgICBzdGF0dXNUZXh0ID0gXCJGb3JiaWRkZW5cIjtcbiAgICBlcnJvck1lc3NhZ2UgPSBgUm91dGUgXCIke3JvdXRlSWR9XCIgZG9lcyBub3QgbWF0Y2ggVVJMIFwiJHtwYXRobmFtZX1cImA7XG4gIH0gZWxzZSBpZiAoc3RhdHVzID09PSA0MDQpIHtcbiAgICBzdGF0dXNUZXh0ID0gXCJOb3QgRm91bmRcIjtcbiAgICBlcnJvck1lc3NhZ2UgPSBgTm8gcm91dGUgbWF0Y2hlcyBVUkwgXCIke3BhdGhuYW1lfVwiYDtcbiAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQwNSkge1xuICAgIHN0YXR1c1RleHQgPSBcIk1ldGhvZCBOb3QgQWxsb3dlZFwiO1xuICAgIGlmIChtZXRob2QgJiYgcGF0aG5hbWUgJiYgcm91dGVJZCkge1xuICAgICAgZXJyb3JNZXNzYWdlID0gYFlvdSBtYWRlIGEgJHttZXRob2QudG9VcHBlckNhc2UoKX0gcmVxdWVzdCB0byBcIiR7cGF0aG5hbWV9XCIgYnV0IGRpZCBub3QgcHJvdmlkZSBhbiBcXGBhY3Rpb25cXGAgZm9yIHJvdXRlIFwiJHtyb3V0ZUlkfVwiLCBzbyB0aGVyZSBpcyBubyB3YXkgdG8gaGFuZGxlIHRoZSByZXF1ZXN0LmA7XG4gICAgfSBlbHNlIGlmIChtZXRob2QpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBJbnZhbGlkIHJlcXVlc3QgbWV0aG9kIFwiJHttZXRob2QudG9VcHBlckNhc2UoKX1cImA7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgRXJyb3JSZXNwb25zZUltcGwoXG4gICAgc3RhdHVzIHx8IDUwMCxcbiAgICBzdGF0dXNUZXh0LFxuICAgIG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpLFxuICAgIHRydWVcbiAgKTtcbn1cbmZ1bmN0aW9uIGZpbmRSZWRpcmVjdChyZXN1bHRzKSB7XG4gIGxldCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocmVzdWx0cyk7XG4gIGZvciAobGV0IGkgPSBlbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgbGV0IFtrZXksIHJlc3VsdF0gPSBlbnRyaWVzW2ldO1xuICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiB7IGtleSwgcmVzdWx0IH07XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBzdHJpcEhhc2hGcm9tUGF0aChwYXRoKSB7XG4gIGxldCBwYXJzZWRQYXRoID0gdHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIgPyBwYXJzZVBhdGgocGF0aCkgOiBwYXRoO1xuICByZXR1cm4gY3JlYXRlUGF0aCh7IC4uLnBhcnNlZFBhdGgsIGhhc2g6IFwiXCIgfSk7XG59XG5mdW5jdGlvbiBpc0hhc2hDaGFuZ2VPbmx5KGEsIGIpIHtcbiAgaWYgKGEucGF0aG5hbWUgIT09IGIucGF0aG5hbWUgfHwgYS5zZWFyY2ggIT09IGIuc2VhcmNoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChhLmhhc2ggPT09IFwiXCIpIHtcbiAgICByZXR1cm4gYi5oYXNoICE9PSBcIlwiO1xuICB9IGVsc2UgaWYgKGEuaGFzaCA9PT0gYi5oYXNoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoYi5oYXNoICE9PSBcIlwiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaXNEYXRhU3RyYXRlZ3lSZXN1bHQocmVzdWx0KSB7XG4gIHJldHVybiByZXN1bHQgIT0gbnVsbCAmJiB0eXBlb2YgcmVzdWx0ID09PSBcIm9iamVjdFwiICYmIFwidHlwZVwiIGluIHJlc3VsdCAmJiBcInJlc3VsdFwiIGluIHJlc3VsdCAmJiAocmVzdWx0LnR5cGUgPT09IFwiZGF0YVwiIC8qIGRhdGEgKi8gfHwgcmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIiAvKiBlcnJvciAqLyk7XG59XG5mdW5jdGlvbiBpc1JlZGlyZWN0RGF0YVN0cmF0ZWd5UmVzdWx0KHJlc3VsdCkge1xuICByZXR1cm4gaXNSZXNwb25zZShyZXN1bHQucmVzdWx0KSAmJiByZWRpcmVjdFN0YXR1c0NvZGVzLmhhcyhyZXN1bHQucmVzdWx0LnN0YXR1cyk7XG59XG5mdW5jdGlvbiBpc0Vycm9yUmVzdWx0KHJlc3VsdCkge1xuICByZXR1cm4gcmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIiAvKiBlcnJvciAqLztcbn1cbmZ1bmN0aW9uIGlzUmVkaXJlY3RSZXN1bHQocmVzdWx0KSB7XG4gIHJldHVybiAocmVzdWx0ICYmIHJlc3VsdC50eXBlKSA9PT0gXCJyZWRpcmVjdFwiIC8qIHJlZGlyZWN0ICovO1xufVxuZnVuY3Rpb24gaXNEYXRhV2l0aFJlc3BvbnNlSW5pdCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9IG51bGwgJiYgXCJ0eXBlXCIgaW4gdmFsdWUgJiYgXCJkYXRhXCIgaW4gdmFsdWUgJiYgXCJpbml0XCIgaW4gdmFsdWUgJiYgdmFsdWUudHlwZSA9PT0gXCJEYXRhV2l0aFJlc3BvbnNlSW5pdFwiO1xufVxuZnVuY3Rpb24gaXNSZXNwb25zZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUuc3RhdHVzID09PSBcIm51bWJlclwiICYmIHR5cGVvZiB2YWx1ZS5zdGF0dXNUZXh0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWx1ZS5oZWFkZXJzID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZS5ib2R5ICE9PSBcInVuZGVmaW5lZFwiO1xufVxuZnVuY3Rpb24gaXNSZWRpcmVjdFN0YXR1c0NvZGUoc3RhdHVzQ29kZSkge1xuICByZXR1cm4gcmVkaXJlY3RTdGF0dXNDb2Rlcy5oYXMoc3RhdHVzQ29kZSk7XG59XG5mdW5jdGlvbiBpc1JlZGlyZWN0UmVzcG9uc2UocmVzdWx0KSB7XG4gIHJldHVybiBpc1Jlc3BvbnNlKHJlc3VsdCkgJiYgaXNSZWRpcmVjdFN0YXR1c0NvZGUocmVzdWx0LnN0YXR1cykgJiYgcmVzdWx0LmhlYWRlcnMuaGFzKFwiTG9jYXRpb25cIik7XG59XG5mdW5jdGlvbiBpc1ZhbGlkTWV0aG9kKG1ldGhvZCkge1xuICByZXR1cm4gdmFsaWRSZXF1ZXN0TWV0aG9kcy5oYXMobWV0aG9kLnRvVXBwZXJDYXNlKCkpO1xufVxuZnVuY3Rpb24gaXNNdXRhdGlvbk1ldGhvZChtZXRob2QpIHtcbiAgcmV0dXJuIHZhbGlkTXV0YXRpb25NZXRob2RzLmhhcyhtZXRob2QudG9VcHBlckNhc2UoKSk7XG59XG5mdW5jdGlvbiBoYXNOYWtlZEluZGV4UXVlcnkoc2VhcmNoKSB7XG4gIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHNlYXJjaCkuZ2V0QWxsKFwiaW5kZXhcIikuc29tZSgodikgPT4gdiA9PT0gXCJcIik7XG59XG5mdW5jdGlvbiBnZXRUYXJnZXRNYXRjaChtYXRjaGVzLCBsb2NhdGlvbikge1xuICBsZXQgc2VhcmNoID0gdHlwZW9mIGxvY2F0aW9uID09PSBcInN0cmluZ1wiID8gcGFyc2VQYXRoKGxvY2F0aW9uKS5zZWFyY2ggOiBsb2NhdGlvbi5zZWFyY2g7XG4gIGlmIChtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0ucm91dGUuaW5kZXggJiYgaGFzTmFrZWRJbmRleFF1ZXJ5KHNlYXJjaCB8fCBcIlwiKSkge1xuICAgIHJldHVybiBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV07XG4gIH1cbiAgbGV0IHBhdGhNYXRjaGVzID0gZ2V0UGF0aENvbnRyaWJ1dGluZ01hdGNoZXMobWF0Y2hlcyk7XG4gIHJldHVybiBwYXRoTWF0Y2hlc1twYXRoTWF0Y2hlcy5sZW5ndGggLSAxXTtcbn1cbmZ1bmN0aW9uIGdldFN1Ym1pc3Npb25Gcm9tTmF2aWdhdGlvbihuYXZpZ2F0aW9uKSB7XG4gIGxldCB7IGZvcm1NZXRob2QsIGZvcm1BY3Rpb24sIGZvcm1FbmNUeXBlLCB0ZXh0LCBmb3JtRGF0YSwganNvbiB9ID0gbmF2aWdhdGlvbjtcbiAgaWYgKCFmb3JtTWV0aG9kIHx8ICFmb3JtQWN0aW9uIHx8ICFmb3JtRW5jVHlwZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodGV4dCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvcm1NZXRob2QsXG4gICAgICBmb3JtQWN0aW9uLFxuICAgICAgZm9ybUVuY1R5cGUsXG4gICAgICBmb3JtRGF0YTogdm9pZCAwLFxuICAgICAganNvbjogdm9pZCAwLFxuICAgICAgdGV4dFxuICAgIH07XG4gIH0gZWxzZSBpZiAoZm9ybURhdGEgIT0gbnVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JtTWV0aG9kLFxuICAgICAgZm9ybUFjdGlvbixcbiAgICAgIGZvcm1FbmNUeXBlLFxuICAgICAgZm9ybURhdGEsXG4gICAgICBqc29uOiB2b2lkIDAsXG4gICAgICB0ZXh0OiB2b2lkIDBcbiAgICB9O1xuICB9IGVsc2UgaWYgKGpzb24gIT09IHZvaWQgMCkge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JtTWV0aG9kLFxuICAgICAgZm9ybUFjdGlvbixcbiAgICAgIGZvcm1FbmNUeXBlLFxuICAgICAgZm9ybURhdGE6IHZvaWQgMCxcbiAgICAgIGpzb24sXG4gICAgICB0ZXh0OiB2b2lkIDBcbiAgICB9O1xuICB9XG59XG5mdW5jdGlvbiBnZXRMb2FkaW5nTmF2aWdhdGlvbihsb2NhdGlvbiwgc3VibWlzc2lvbikge1xuICBpZiAoc3VibWlzc2lvbikge1xuICAgIGxldCBuYXZpZ2F0aW9uID0ge1xuICAgICAgc3RhdGU6IFwibG9hZGluZ1wiLFxuICAgICAgbG9jYXRpb24sXG4gICAgICBmb3JtTWV0aG9kOiBzdWJtaXNzaW9uLmZvcm1NZXRob2QsXG4gICAgICBmb3JtQWN0aW9uOiBzdWJtaXNzaW9uLmZvcm1BY3Rpb24sXG4gICAgICBmb3JtRW5jVHlwZTogc3VibWlzc2lvbi5mb3JtRW5jVHlwZSxcbiAgICAgIGZvcm1EYXRhOiBzdWJtaXNzaW9uLmZvcm1EYXRhLFxuICAgICAganNvbjogc3VibWlzc2lvbi5qc29uLFxuICAgICAgdGV4dDogc3VibWlzc2lvbi50ZXh0XG4gICAgfTtcbiAgICByZXR1cm4gbmF2aWdhdGlvbjtcbiAgfSBlbHNlIHtcbiAgICBsZXQgbmF2aWdhdGlvbiA9IHtcbiAgICAgIHN0YXRlOiBcImxvYWRpbmdcIixcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgZm9ybU1ldGhvZDogdm9pZCAwLFxuICAgICAgZm9ybUFjdGlvbjogdm9pZCAwLFxuICAgICAgZm9ybUVuY1R5cGU6IHZvaWQgMCxcbiAgICAgIGZvcm1EYXRhOiB2b2lkIDAsXG4gICAgICBqc29uOiB2b2lkIDAsXG4gICAgICB0ZXh0OiB2b2lkIDBcbiAgICB9O1xuICAgIHJldHVybiBuYXZpZ2F0aW9uO1xuICB9XG59XG5mdW5jdGlvbiBnZXRTdWJtaXR0aW5nTmF2aWdhdGlvbihsb2NhdGlvbiwgc3VibWlzc2lvbikge1xuICBsZXQgbmF2aWdhdGlvbiA9IHtcbiAgICBzdGF0ZTogXCJzdWJtaXR0aW5nXCIsXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybU1ldGhvZDogc3VibWlzc2lvbi5mb3JtTWV0aG9kLFxuICAgIGZvcm1BY3Rpb246IHN1Ym1pc3Npb24uZm9ybUFjdGlvbixcbiAgICBmb3JtRW5jVHlwZTogc3VibWlzc2lvbi5mb3JtRW5jVHlwZSxcbiAgICBmb3JtRGF0YTogc3VibWlzc2lvbi5mb3JtRGF0YSxcbiAgICBqc29uOiBzdWJtaXNzaW9uLmpzb24sXG4gICAgdGV4dDogc3VibWlzc2lvbi50ZXh0XG4gIH07XG4gIHJldHVybiBuYXZpZ2F0aW9uO1xufVxuZnVuY3Rpb24gZ2V0TG9hZGluZ0ZldGNoZXIoc3VibWlzc2lvbiwgZGF0YTIpIHtcbiAgaWYgKHN1Ym1pc3Npb24pIHtcbiAgICBsZXQgZmV0Y2hlciA9IHtcbiAgICAgIHN0YXRlOiBcImxvYWRpbmdcIixcbiAgICAgIGZvcm1NZXRob2Q6IHN1Ym1pc3Npb24uZm9ybU1ldGhvZCxcbiAgICAgIGZvcm1BY3Rpb246IHN1Ym1pc3Npb24uZm9ybUFjdGlvbixcbiAgICAgIGZvcm1FbmNUeXBlOiBzdWJtaXNzaW9uLmZvcm1FbmNUeXBlLFxuICAgICAgZm9ybURhdGE6IHN1Ym1pc3Npb24uZm9ybURhdGEsXG4gICAgICBqc29uOiBzdWJtaXNzaW9uLmpzb24sXG4gICAgICB0ZXh0OiBzdWJtaXNzaW9uLnRleHQsXG4gICAgICBkYXRhOiBkYXRhMlxuICAgIH07XG4gICAgcmV0dXJuIGZldGNoZXI7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGZldGNoZXIgPSB7XG4gICAgICBzdGF0ZTogXCJsb2FkaW5nXCIsXG4gICAgICBmb3JtTWV0aG9kOiB2b2lkIDAsXG4gICAgICBmb3JtQWN0aW9uOiB2b2lkIDAsXG4gICAgICBmb3JtRW5jVHlwZTogdm9pZCAwLFxuICAgICAgZm9ybURhdGE6IHZvaWQgMCxcbiAgICAgIGpzb246IHZvaWQgMCxcbiAgICAgIHRleHQ6IHZvaWQgMCxcbiAgICAgIGRhdGE6IGRhdGEyXG4gICAgfTtcbiAgICByZXR1cm4gZmV0Y2hlcjtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0U3VibWl0dGluZ0ZldGNoZXIoc3VibWlzc2lvbiwgZXhpc3RpbmdGZXRjaGVyKSB7XG4gIGxldCBmZXRjaGVyID0ge1xuICAgIHN0YXRlOiBcInN1Ym1pdHRpbmdcIixcbiAgICBmb3JtTWV0aG9kOiBzdWJtaXNzaW9uLmZvcm1NZXRob2QsXG4gICAgZm9ybUFjdGlvbjogc3VibWlzc2lvbi5mb3JtQWN0aW9uLFxuICAgIGZvcm1FbmNUeXBlOiBzdWJtaXNzaW9uLmZvcm1FbmNUeXBlLFxuICAgIGZvcm1EYXRhOiBzdWJtaXNzaW9uLmZvcm1EYXRhLFxuICAgIGpzb246IHN1Ym1pc3Npb24uanNvbixcbiAgICB0ZXh0OiBzdWJtaXNzaW9uLnRleHQsXG4gICAgZGF0YTogZXhpc3RpbmdGZXRjaGVyID8gZXhpc3RpbmdGZXRjaGVyLmRhdGEgOiB2b2lkIDBcbiAgfTtcbiAgcmV0dXJuIGZldGNoZXI7XG59XG5mdW5jdGlvbiBnZXREb25lRmV0Y2hlcihkYXRhMikge1xuICBsZXQgZmV0Y2hlciA9IHtcbiAgICBzdGF0ZTogXCJpZGxlXCIsXG4gICAgZm9ybU1ldGhvZDogdm9pZCAwLFxuICAgIGZvcm1BY3Rpb246IHZvaWQgMCxcbiAgICBmb3JtRW5jVHlwZTogdm9pZCAwLFxuICAgIGZvcm1EYXRhOiB2b2lkIDAsXG4gICAganNvbjogdm9pZCAwLFxuICAgIHRleHQ6IHZvaWQgMCxcbiAgICBkYXRhOiBkYXRhMlxuICB9O1xuICByZXR1cm4gZmV0Y2hlcjtcbn1cbmZ1bmN0aW9uIHJlc3RvcmVBcHBsaWVkVHJhbnNpdGlvbnMoX3dpbmRvdywgdHJhbnNpdGlvbnMpIHtcbiAgdHJ5IHtcbiAgICBsZXQgc2Vzc2lvblBvc2l0aW9ucyA9IF93aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgIFRSQU5TSVRJT05TX1NUT1JBR0VfS0VZXG4gICAgKTtcbiAgICBpZiAoc2Vzc2lvblBvc2l0aW9ucykge1xuICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKHNlc3Npb25Qb3NpdGlvbnMpO1xuICAgICAgZm9yIChsZXQgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGpzb24gfHwge30pKSB7XG4gICAgICAgIGlmICh2ICYmIEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgICB0cmFuc2l0aW9ucy5zZXQoaywgbmV3IFNldCh2IHx8IFtdKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxufVxuZnVuY3Rpb24gcGVyc2lzdEFwcGxpZWRUcmFuc2l0aW9ucyhfd2luZG93LCB0cmFuc2l0aW9ucykge1xuICBpZiAodHJhbnNpdGlvbnMuc2l6ZSA+IDApIHtcbiAgICBsZXQganNvbiA9IHt9O1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiB0cmFuc2l0aW9ucykge1xuICAgICAganNvbltrXSA9IFsuLi52XTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIF93aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgVFJBTlNJVElPTlNfU1RPUkFHRV9LRVksXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGpzb24pXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYEZhaWxlZCB0byBzYXZlIGFwcGxpZWQgdmlldyB0cmFuc2l0aW9ucyBpbiBzZXNzaW9uU3RvcmFnZSAoJHtlcnJvcn0pLmBcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVEZWZlcnJlZCgpIHtcbiAgbGV0IHJlc29sdmU7XG4gIGxldCByZWplY3Q7XG4gIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgcmVzb2x2ZSA9IGFzeW5jICh2YWwpID0+IHtcbiAgICAgIHJlcyh2YWwpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcHJvbWlzZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJlamVjdCA9IGFzeW5jIChlcnJvcikgPT4ge1xuICAgICAgcmVqKGVycm9yKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcHJvbWlzZSxcbiAgICAvL0B0cy1pZ25vcmVcbiAgICByZXNvbHZlLFxuICAgIC8vQHRzLWlnbm9yZVxuICAgIHJlamVjdFxuICB9O1xufVxuXG4vLyBsaWIvY29tcG9uZW50cy50c3hcbmltcG9ydCAqIGFzIFJlYWN0MyBmcm9tIFwicmVhY3RcIjtcblxuLy8gbGliL2NvbnRleHQudHNcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xudmFyIERhdGFSb3V0ZXJDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbkRhdGFSb3V0ZXJDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJEYXRhUm91dGVyXCI7XG52YXIgRGF0YVJvdXRlclN0YXRlQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5EYXRhUm91dGVyU3RhdGVDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJEYXRhUm91dGVyU3RhdGVcIjtcbnZhciBWaWV3VHJhbnNpdGlvbkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZVxufSk7XG5WaWV3VHJhbnNpdGlvbkNvbnRleHQuZGlzcGxheU5hbWUgPSBcIlZpZXdUcmFuc2l0aW9uXCI7XG52YXIgRmV0Y2hlcnNDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChcbiAgLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKVxuKTtcbkZldGNoZXJzQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiRmV0Y2hlcnNcIjtcbnZhciBBd2FpdENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuQXdhaXRDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJBd2FpdFwiO1xudmFyIE5hdmlnYXRpb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChcbiAgbnVsbFxuKTtcbk5hdmlnYXRpb25Db250ZXh0LmRpc3BsYXlOYW1lID0gXCJOYXZpZ2F0aW9uXCI7XG52YXIgTG9jYXRpb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChcbiAgbnVsbFxuKTtcbkxvY2F0aW9uQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiTG9jYXRpb25cIjtcbnZhciBSb3V0ZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgb3V0bGV0OiBudWxsLFxuICBtYXRjaGVzOiBbXSxcbiAgaXNEYXRhUm91dGU6IGZhbHNlXG59KTtcblJvdXRlQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiUm91dGVcIjtcbnZhciBSb3V0ZUVycm9yQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5Sb3V0ZUVycm9yQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiUm91dGVFcnJvclwiO1xuXG4vLyBsaWIvaG9va3MudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDIgZnJvbSBcInJlYWN0XCI7XG52YXIgRU5BQkxFX0RFVl9XQVJOSU5HUyA9IHRydWU7XG5mdW5jdGlvbiB1c2VIcmVmKHRvLCB7IHJlbGF0aXZlIH0gPSB7fSkge1xuICBpbnZhcmlhbnQoXG4gICAgdXNlSW5Sb3V0ZXJDb250ZXh0KCksXG4gICAgLy8gVE9ETzogVGhpcyBlcnJvciBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZXkgc29tZWhvdyBoYXZlIDIgdmVyc2lvbnMgb2YgdGhlXG4gICAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICAgIGB1c2VIcmVmKCkgbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC5gXG4gICk7XG4gIGxldCB7IGJhc2VuYW1lLCBuYXZpZ2F0b3I6IG5hdmlnYXRvcjIgfSA9IFJlYWN0Mi51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IHsgaGFzaCwgcGF0aG5hbWUsIHNlYXJjaCB9ID0gdXNlUmVzb2x2ZWRQYXRoKHRvLCB7IHJlbGF0aXZlIH0pO1xuICBsZXQgam9pbmVkUGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgaWYgKGJhc2VuYW1lICE9PSBcIi9cIikge1xuICAgIGpvaW5lZFBhdGhuYW1lID0gcGF0aG5hbWUgPT09IFwiL1wiID8gYmFzZW5hbWUgOiBqb2luUGF0aHMoW2Jhc2VuYW1lLCBwYXRobmFtZV0pO1xuICB9XG4gIHJldHVybiBuYXZpZ2F0b3IyLmNyZWF0ZUhyZWYoeyBwYXRobmFtZTogam9pbmVkUGF0aG5hbWUsIHNlYXJjaCwgaGFzaCB9KTtcbn1cbmZ1bmN0aW9uIHVzZUluUm91dGVyQ29udGV4dCgpIHtcbiAgcmV0dXJuIFJlYWN0Mi51c2VDb250ZXh0KExvY2F0aW9uQ29udGV4dCkgIT0gbnVsbDtcbn1cbmZ1bmN0aW9uIHVzZUxvY2F0aW9uKCkge1xuICBpbnZhcmlhbnQoXG4gICAgdXNlSW5Sb3V0ZXJDb250ZXh0KCksXG4gICAgLy8gVE9ETzogVGhpcyBlcnJvciBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZXkgc29tZWhvdyBoYXZlIDIgdmVyc2lvbnMgb2YgdGhlXG4gICAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICAgIGB1c2VMb2NhdGlvbigpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuYFxuICApO1xuICByZXR1cm4gUmVhY3QyLnVzZUNvbnRleHQoTG9jYXRpb25Db250ZXh0KS5sb2NhdGlvbjtcbn1cbmZ1bmN0aW9uIHVzZU5hdmlnYXRpb25UeXBlKCkge1xuICByZXR1cm4gUmVhY3QyLnVzZUNvbnRleHQoTG9jYXRpb25Db250ZXh0KS5uYXZpZ2F0aW9uVHlwZTtcbn1cbmZ1bmN0aW9uIHVzZU1hdGNoKHBhdHRlcm4pIHtcbiAgaW52YXJpYW50KFxuICAgIHVzZUluUm91dGVyQ29udGV4dCgpLFxuICAgIC8vIFRPRE86IFRoaXMgZXJyb3IgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHNvbWVob3cgaGF2ZSAyIHZlcnNpb25zIG9mIHRoZVxuICAgIC8vIHJvdXRlciBsb2FkZWQuIFdlIGNhbiBoZWxwIHRoZW0gdW5kZXJzdGFuZCBob3cgdG8gYXZvaWQgdGhhdC5cbiAgICBgdXNlTWF0Y2goKSBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LmBcbiAgKTtcbiAgbGV0IHsgcGF0aG5hbWUgfSA9IHVzZUxvY2F0aW9uKCk7XG4gIHJldHVybiBSZWFjdDIudXNlTWVtbyhcbiAgICAoKSA9PiBtYXRjaFBhdGgocGF0dGVybiwgZGVjb2RlUGF0aChwYXRobmFtZSkpLFxuICAgIFtwYXRobmFtZSwgcGF0dGVybl1cbiAgKTtcbn1cbnZhciBuYXZpZ2F0ZUVmZmVjdFdhcm5pbmcgPSBgWW91IHNob3VsZCBjYWxsIG5hdmlnYXRlKCkgaW4gYSBSZWFjdC51c2VFZmZlY3QoKSwgbm90IHdoZW4geW91ciBjb21wb25lbnQgaXMgZmlyc3QgcmVuZGVyZWQuYDtcbmZ1bmN0aW9uIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoY2IpIHtcbiAgbGV0IGlzU3RhdGljID0gUmVhY3QyLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpLnN0YXRpYztcbiAgaWYgKCFpc1N0YXRpYykge1xuICAgIFJlYWN0Mi51c2VMYXlvdXRFZmZlY3QoY2IpO1xuICB9XG59XG5mdW5jdGlvbiB1c2VOYXZpZ2F0ZSgpIHtcbiAgbGV0IHsgaXNEYXRhUm91dGUgfSA9IFJlYWN0Mi51c2VDb250ZXh0KFJvdXRlQ29udGV4dCk7XG4gIHJldHVybiBpc0RhdGFSb3V0ZSA/IHVzZU5hdmlnYXRlU3RhYmxlKCkgOiB1c2VOYXZpZ2F0ZVVuc3RhYmxlKCk7XG59XG5mdW5jdGlvbiB1c2VOYXZpZ2F0ZVVuc3RhYmxlKCkge1xuICBpbnZhcmlhbnQoXG4gICAgdXNlSW5Sb3V0ZXJDb250ZXh0KCksXG4gICAgLy8gVE9ETzogVGhpcyBlcnJvciBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZXkgc29tZWhvdyBoYXZlIDIgdmVyc2lvbnMgb2YgdGhlXG4gICAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICAgIGB1c2VOYXZpZ2F0ZSgpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuYFxuICApO1xuICBsZXQgZGF0YVJvdXRlckNvbnRleHQgPSBSZWFjdDIudXNlQ29udGV4dChEYXRhUm91dGVyQ29udGV4dCk7XG4gIGxldCB7IGJhc2VuYW1lLCBuYXZpZ2F0b3I6IG5hdmlnYXRvcjIgfSA9IFJlYWN0Mi51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IHsgbWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHsgcGF0aG5hbWU6IGxvY2F0aW9uUGF0aG5hbWUgfSA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCByb3V0ZVBhdGhuYW1lc0pzb24gPSBKU09OLnN0cmluZ2lmeShnZXRSZXNvbHZlVG9NYXRjaGVzKG1hdGNoZXMpKTtcbiAgbGV0IGFjdGl2ZVJlZiA9IFJlYWN0Mi51c2VSZWYoZmFsc2UpO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBhY3RpdmVSZWYuY3VycmVudCA9IHRydWU7XG4gIH0pO1xuICBsZXQgbmF2aWdhdGUgPSBSZWFjdDIudXNlQ2FsbGJhY2soXG4gICAgKHRvLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIHdhcm5pbmcoYWN0aXZlUmVmLmN1cnJlbnQsIG5hdmlnYXRlRWZmZWN0V2FybmluZyk7XG4gICAgICBpZiAoIWFjdGl2ZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICBpZiAodHlwZW9mIHRvID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIG5hdmlnYXRvcjIuZ28odG8pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgcGF0aCA9IHJlc29sdmVUbyhcbiAgICAgICAgdG8sXG4gICAgICAgIEpTT04ucGFyc2Uocm91dGVQYXRobmFtZXNKc29uKSxcbiAgICAgICAgbG9jYXRpb25QYXRobmFtZSxcbiAgICAgICAgb3B0aW9ucy5yZWxhdGl2ZSA9PT0gXCJwYXRoXCJcbiAgICAgICk7XG4gICAgICBpZiAoZGF0YVJvdXRlckNvbnRleHQgPT0gbnVsbCAmJiBiYXNlbmFtZSAhPT0gXCIvXCIpIHtcbiAgICAgICAgcGF0aC5wYXRobmFtZSA9IHBhdGgucGF0aG5hbWUgPT09IFwiL1wiID8gYmFzZW5hbWUgOiBqb2luUGF0aHMoW2Jhc2VuYW1lLCBwYXRoLnBhdGhuYW1lXSk7XG4gICAgICB9XG4gICAgICAoISFvcHRpb25zLnJlcGxhY2UgPyBuYXZpZ2F0b3IyLnJlcGxhY2UgOiBuYXZpZ2F0b3IyLnB1c2gpKFxuICAgICAgICBwYXRoLFxuICAgICAgICBvcHRpb25zLnN0YXRlLFxuICAgICAgICBvcHRpb25zXG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgYmFzZW5hbWUsXG4gICAgICBuYXZpZ2F0b3IyLFxuICAgICAgcm91dGVQYXRobmFtZXNKc29uLFxuICAgICAgbG9jYXRpb25QYXRobmFtZSxcbiAgICAgIGRhdGFSb3V0ZXJDb250ZXh0XG4gICAgXVxuICApO1xuICByZXR1cm4gbmF2aWdhdGU7XG59XG52YXIgT3V0bGV0Q29udGV4dCA9IFJlYWN0Mi5jcmVhdGVDb250ZXh0KG51bGwpO1xuZnVuY3Rpb24gdXNlT3V0bGV0Q29udGV4dCgpIHtcbiAgcmV0dXJuIFJlYWN0Mi51c2VDb250ZXh0KE91dGxldENvbnRleHQpO1xufVxuZnVuY3Rpb24gdXNlT3V0bGV0KGNvbnRleHQpIHtcbiAgbGV0IG91dGxldCA9IFJlYWN0Mi51c2VDb250ZXh0KFJvdXRlQ29udGV4dCkub3V0bGV0O1xuICBpZiAob3V0bGV0KSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChPdXRsZXRDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0IH0sIG91dGxldCk7XG4gIH1cbiAgcmV0dXJuIG91dGxldDtcbn1cbmZ1bmN0aW9uIHVzZVBhcmFtcygpIHtcbiAgbGV0IHsgbWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHJvdXRlTWF0Y2ggPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV07XG4gIHJldHVybiByb3V0ZU1hdGNoID8gcm91dGVNYXRjaC5wYXJhbXMgOiB7fTtcbn1cbmZ1bmN0aW9uIHVzZVJlc29sdmVkUGF0aCh0bywgeyByZWxhdGl2ZSB9ID0ge30pIHtcbiAgbGV0IHsgbWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHsgcGF0aG5hbWU6IGxvY2F0aW9uUGF0aG5hbWUgfSA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCByb3V0ZVBhdGhuYW1lc0pzb24gPSBKU09OLnN0cmluZ2lmeShnZXRSZXNvbHZlVG9NYXRjaGVzKG1hdGNoZXMpKTtcbiAgcmV0dXJuIFJlYWN0Mi51c2VNZW1vKFxuICAgICgpID0+IHJlc29sdmVUbyhcbiAgICAgIHRvLFxuICAgICAgSlNPTi5wYXJzZShyb3V0ZVBhdGhuYW1lc0pzb24pLFxuICAgICAgbG9jYXRpb25QYXRobmFtZSxcbiAgICAgIHJlbGF0aXZlID09PSBcInBhdGhcIlxuICAgICksXG4gICAgW3RvLCByb3V0ZVBhdGhuYW1lc0pzb24sIGxvY2F0aW9uUGF0aG5hbWUsIHJlbGF0aXZlXVxuICApO1xufVxuZnVuY3Rpb24gdXNlUm91dGVzKHJvdXRlcywgbG9jYXRpb25BcmcpIHtcbiAgcmV0dXJuIHVzZVJvdXRlc0ltcGwocm91dGVzLCBsb2NhdGlvbkFyZyk7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZXNJbXBsKHJvdXRlcywgbG9jYXRpb25BcmcsIGRhdGFSb3V0ZXJTdGF0ZSwgZnV0dXJlKSB7XG4gIGludmFyaWFudChcbiAgICB1c2VJblJvdXRlckNvbnRleHQoKSxcbiAgICAvLyBUT0RPOiBUaGlzIGVycm9yIGlzIHByb2JhYmx5IGJlY2F1c2UgdGhleSBzb21laG93IGhhdmUgMiB2ZXJzaW9ucyBvZiB0aGVcbiAgICAvLyByb3V0ZXIgbG9hZGVkLiBXZSBjYW4gaGVscCB0aGVtIHVuZGVyc3RhbmQgaG93IHRvIGF2b2lkIHRoYXQuXG4gICAgYHVzZVJvdXRlcygpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuYFxuICApO1xuICBsZXQgeyBuYXZpZ2F0b3I6IG5hdmlnYXRvcjIgfSA9IFJlYWN0Mi51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IHsgbWF0Y2hlczogcGFyZW50TWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHJvdXRlTWF0Y2ggPSBwYXJlbnRNYXRjaGVzW3BhcmVudE1hdGNoZXMubGVuZ3RoIC0gMV07XG4gIGxldCBwYXJlbnRQYXJhbXMgPSByb3V0ZU1hdGNoID8gcm91dGVNYXRjaC5wYXJhbXMgOiB7fTtcbiAgbGV0IHBhcmVudFBhdGhuYW1lID0gcm91dGVNYXRjaCA/IHJvdXRlTWF0Y2gucGF0aG5hbWUgOiBcIi9cIjtcbiAgbGV0IHBhcmVudFBhdGhuYW1lQmFzZSA9IHJvdXRlTWF0Y2ggPyByb3V0ZU1hdGNoLnBhdGhuYW1lQmFzZSA6IFwiL1wiO1xuICBsZXQgcGFyZW50Um91dGUgPSByb3V0ZU1hdGNoICYmIHJvdXRlTWF0Y2gucm91dGU7XG4gIGlmIChFTkFCTEVfREVWX1dBUk5JTkdTKSB7XG4gICAgbGV0IHBhcmVudFBhdGggPSBwYXJlbnRSb3V0ZSAmJiBwYXJlbnRSb3V0ZS5wYXRoIHx8IFwiXCI7XG4gICAgd2FybmluZ09uY2UoXG4gICAgICBwYXJlbnRQYXRobmFtZSxcbiAgICAgICFwYXJlbnRSb3V0ZSB8fCBwYXJlbnRQYXRoLmVuZHNXaXRoKFwiKlwiKSB8fCBwYXJlbnRQYXRoLmVuZHNXaXRoKFwiKj9cIiksXG4gICAgICBgWW91IHJlbmRlcmVkIGRlc2NlbmRhbnQgPFJvdXRlcz4gKG9yIGNhbGxlZCBcXGB1c2VSb3V0ZXMoKVxcYCkgYXQgXCIke3BhcmVudFBhdGhuYW1lfVwiICh1bmRlciA8Um91dGUgcGF0aD1cIiR7cGFyZW50UGF0aH1cIj4pIGJ1dCB0aGUgcGFyZW50IHJvdXRlIHBhdGggaGFzIG5vIHRyYWlsaW5nIFwiKlwiLiBUaGlzIG1lYW5zIGlmIHlvdSBuYXZpZ2F0ZSBkZWVwZXIsIHRoZSBwYXJlbnQgd29uJ3QgbWF0Y2ggYW55bW9yZSBhbmQgdGhlcmVmb3JlIHRoZSBjaGlsZCByb3V0ZXMgd2lsbCBuZXZlciByZW5kZXIuXG5cblBsZWFzZSBjaGFuZ2UgdGhlIHBhcmVudCA8Um91dGUgcGF0aD1cIiR7cGFyZW50UGF0aH1cIj4gdG8gPFJvdXRlIHBhdGg9XCIke3BhcmVudFBhdGggPT09IFwiL1wiID8gXCIqXCIgOiBgJHtwYXJlbnRQYXRofS8qYH1cIj4uYFxuICAgICk7XG4gIH1cbiAgbGV0IGxvY2F0aW9uRnJvbUNvbnRleHQgPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgbG9jYXRpb247XG4gIGlmIChsb2NhdGlvbkFyZykge1xuICAgIGxldCBwYXJzZWRMb2NhdGlvbkFyZyA9IHR5cGVvZiBsb2NhdGlvbkFyZyA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aChsb2NhdGlvbkFyZykgOiBsb2NhdGlvbkFyZztcbiAgICBpbnZhcmlhbnQoXG4gICAgICBwYXJlbnRQYXRobmFtZUJhc2UgPT09IFwiL1wiIHx8IHBhcnNlZExvY2F0aW9uQXJnLnBhdGhuYW1lPy5zdGFydHNXaXRoKHBhcmVudFBhdGhuYW1lQmFzZSksXG4gICAgICBgV2hlbiBvdmVycmlkaW5nIHRoZSBsb2NhdGlvbiB1c2luZyBcXGA8Um91dGVzIGxvY2F0aW9uPlxcYCBvciBcXGB1c2VSb3V0ZXMocm91dGVzLCBsb2NhdGlvbilcXGAsIHRoZSBsb2NhdGlvbiBwYXRobmFtZSBtdXN0IGJlZ2luIHdpdGggdGhlIHBvcnRpb24gb2YgdGhlIFVSTCBwYXRobmFtZSB0aGF0IHdhcyBtYXRjaGVkIGJ5IGFsbCBwYXJlbnQgcm91dGVzLiBUaGUgY3VycmVudCBwYXRobmFtZSBiYXNlIGlzIFwiJHtwYXJlbnRQYXRobmFtZUJhc2V9XCIgYnV0IHBhdGhuYW1lIFwiJHtwYXJzZWRMb2NhdGlvbkFyZy5wYXRobmFtZX1cIiB3YXMgZ2l2ZW4gaW4gdGhlIFxcYGxvY2F0aW9uXFxgIHByb3AuYFxuICAgICk7XG4gICAgbG9jYXRpb24gPSBwYXJzZWRMb2NhdGlvbkFyZztcbiAgfSBlbHNlIHtcbiAgICBsb2NhdGlvbiA9IGxvY2F0aW9uRnJvbUNvbnRleHQ7XG4gIH1cbiAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWUgfHwgXCIvXCI7XG4gIGxldCByZW1haW5pbmdQYXRobmFtZSA9IHBhdGhuYW1lO1xuICBpZiAocGFyZW50UGF0aG5hbWVCYXNlICE9PSBcIi9cIikge1xuICAgIGxldCBwYXJlbnRTZWdtZW50cyA9IHBhcmVudFBhdGhuYW1lQmFzZS5yZXBsYWNlKC9eXFwvLywgXCJcIikuc3BsaXQoXCIvXCIpO1xuICAgIGxldCBzZWdtZW50cyA9IHBhdGhuYW1lLnJlcGxhY2UoL15cXC8vLCBcIlwiKS5zcGxpdChcIi9cIik7XG4gICAgcmVtYWluaW5nUGF0aG5hbWUgPSBcIi9cIiArIHNlZ21lbnRzLnNsaWNlKHBhcmVudFNlZ21lbnRzLmxlbmd0aCkuam9pbihcIi9cIik7XG4gIH1cbiAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhyb3V0ZXMsIHsgcGF0aG5hbWU6IHJlbWFpbmluZ1BhdGhuYW1lIH0pO1xuICBpZiAoRU5BQkxFX0RFVl9XQVJOSU5HUykge1xuICAgIHdhcm5pbmcoXG4gICAgICBwYXJlbnRSb3V0ZSB8fCBtYXRjaGVzICE9IG51bGwsXG4gICAgICBgTm8gcm91dGVzIG1hdGNoZWQgbG9jYXRpb24gXCIke2xvY2F0aW9uLnBhdGhuYW1lfSR7bG9jYXRpb24uc2VhcmNofSR7bG9jYXRpb24uaGFzaH1cIiBgXG4gICAgKTtcbiAgICB3YXJuaW5nKFxuICAgICAgbWF0Y2hlcyA9PSBudWxsIHx8IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5lbGVtZW50ICE9PSB2b2lkIDAgfHwgbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdLnJvdXRlLkNvbXBvbmVudCAhPT0gdm9pZCAwIHx8IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5sYXp5ICE9PSB2b2lkIDAsXG4gICAgICBgTWF0Y2hlZCBsZWFmIHJvdXRlIGF0IGxvY2F0aW9uIFwiJHtsb2NhdGlvbi5wYXRobmFtZX0ke2xvY2F0aW9uLnNlYXJjaH0ke2xvY2F0aW9uLmhhc2h9XCIgZG9lcyBub3QgaGF2ZSBhbiBlbGVtZW50IG9yIENvbXBvbmVudC4gVGhpcyBtZWFucyBpdCB3aWxsIHJlbmRlciBhbiA8T3V0bGV0IC8+IHdpdGggYSBudWxsIHZhbHVlIGJ5IGRlZmF1bHQgcmVzdWx0aW5nIGluIGFuIFwiZW1wdHlcIiBwYWdlLmBcbiAgICApO1xuICB9XG4gIGxldCByZW5kZXJlZE1hdGNoZXMgPSBfcmVuZGVyTWF0Y2hlcyhcbiAgICBtYXRjaGVzICYmIG1hdGNoZXMubWFwKFxuICAgICAgKG1hdGNoKSA9PiBPYmplY3QuYXNzaWduKHt9LCBtYXRjaCwge1xuICAgICAgICBwYXJhbXM6IE9iamVjdC5hc3NpZ24oe30sIHBhcmVudFBhcmFtcywgbWF0Y2gucGFyYW1zKSxcbiAgICAgICAgcGF0aG5hbWU6IGpvaW5QYXRocyhbXG4gICAgICAgICAgcGFyZW50UGF0aG5hbWVCYXNlLFxuICAgICAgICAgIC8vIFJlLWVuY29kZSBwYXRobmFtZXMgdGhhdCB3ZXJlIGRlY29kZWQgaW5zaWRlIG1hdGNoUm91dGVzXG4gICAgICAgICAgbmF2aWdhdG9yMi5lbmNvZGVMb2NhdGlvbiA/IG5hdmlnYXRvcjIuZW5jb2RlTG9jYXRpb24obWF0Y2gucGF0aG5hbWUpLnBhdGhuYW1lIDogbWF0Y2gucGF0aG5hbWVcbiAgICAgICAgXSksXG4gICAgICAgIHBhdGhuYW1lQmFzZTogbWF0Y2gucGF0aG5hbWVCYXNlID09PSBcIi9cIiA/IHBhcmVudFBhdGhuYW1lQmFzZSA6IGpvaW5QYXRocyhbXG4gICAgICAgICAgcGFyZW50UGF0aG5hbWVCYXNlLFxuICAgICAgICAgIC8vIFJlLWVuY29kZSBwYXRobmFtZXMgdGhhdCB3ZXJlIGRlY29kZWQgaW5zaWRlIG1hdGNoUm91dGVzXG4gICAgICAgICAgbmF2aWdhdG9yMi5lbmNvZGVMb2NhdGlvbiA/IG5hdmlnYXRvcjIuZW5jb2RlTG9jYXRpb24obWF0Y2gucGF0aG5hbWVCYXNlKS5wYXRobmFtZSA6IG1hdGNoLnBhdGhuYW1lQmFzZVxuICAgICAgICBdKVxuICAgICAgfSlcbiAgICApLFxuICAgIHBhcmVudE1hdGNoZXMsXG4gICAgZGF0YVJvdXRlclN0YXRlLFxuICAgIGZ1dHVyZVxuICApO1xuICBpZiAobG9jYXRpb25BcmcgJiYgcmVuZGVyZWRNYXRjaGVzKSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcbiAgICAgIExvY2F0aW9uQ29udGV4dC5Qcm92aWRlcixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgICAgcGF0aG5hbWU6IFwiL1wiLFxuICAgICAgICAgICAgc2VhcmNoOiBcIlwiLFxuICAgICAgICAgICAgaGFzaDogXCJcIixcbiAgICAgICAgICAgIHN0YXRlOiBudWxsLFxuICAgICAgICAgICAga2V5OiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIC4uLmxvY2F0aW9uXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYXZpZ2F0aW9uVHlwZTogXCJQT1BcIiAvKiBQb3AgKi9cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlbmRlcmVkTWF0Y2hlc1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlbmRlcmVkTWF0Y2hlcztcbn1cbmZ1bmN0aW9uIERlZmF1bHRFcnJvckNvbXBvbmVudCgpIHtcbiAgbGV0IGVycm9yID0gdXNlUm91dGVFcnJvcigpO1xuICBsZXQgbWVzc2FnZSA9IGlzUm91dGVFcnJvclJlc3BvbnNlKGVycm9yKSA/IGAke2Vycm9yLnN0YXR1c30gJHtlcnJvci5zdGF0dXNUZXh0fWAgOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgbGV0IHN0YWNrID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLnN0YWNrIDogbnVsbDtcbiAgbGV0IGxpZ2h0Z3JleSA9IFwicmdiYSgyMDAsMjAwLDIwMCwgMC41KVwiO1xuICBsZXQgcHJlU3R5bGVzID0geyBwYWRkaW5nOiBcIjAuNXJlbVwiLCBiYWNrZ3JvdW5kQ29sb3I6IGxpZ2h0Z3JleSB9O1xuICBsZXQgY29kZVN0eWxlcyA9IHsgcGFkZGluZzogXCIycHggNHB4XCIsIGJhY2tncm91bmRDb2xvcjogbGlnaHRncmV5IH07XG4gIGxldCBkZXZJbmZvID0gbnVsbDtcbiAgaWYgKEVOQUJMRV9ERVZfV0FSTklOR1MpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJFcnJvciBoYW5kbGVkIGJ5IFJlYWN0IFJvdXRlciBkZWZhdWx0IEVycm9yQm91bmRhcnk6XCIsXG4gICAgICBlcnJvclxuICAgICk7XG4gICAgZGV2SW5mbyA9IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChSZWFjdDIuRnJhZ21lbnQsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcInBcIiwgbnVsbCwgXCJcXHV7MUY0QkZ9IEhleSBkZXZlbG9wZXIgXFx1ezFGNDRCfVwiKSwgLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFwicFwiLCBudWxsLCBcIllvdSBjYW4gcHJvdmlkZSBhIHdheSBiZXR0ZXIgVVggdGhhbiB0aGlzIHdoZW4geW91ciBhcHAgdGhyb3dzIGVycm9ycyBieSBwcm92aWRpbmcgeW91ciBvd24gXCIsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcImNvZGVcIiwgeyBzdHlsZTogY29kZVN0eWxlcyB9LCBcIkVycm9yQm91bmRhcnlcIiksIFwiIG9yXCIsIFwiIFwiLCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXCJjb2RlXCIsIHsgc3R5bGU6IGNvZGVTdHlsZXMgfSwgXCJlcnJvckVsZW1lbnRcIiksIFwiIHByb3Agb24geW91ciByb3V0ZS5cIikpO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoUmVhY3QyLkZyYWdtZW50LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXCJoMlwiLCBudWxsLCBcIlVuZXhwZWN0ZWQgQXBwbGljYXRpb24gRXJyb3IhXCIpLCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXCJoM1wiLCB7IHN0eWxlOiB7IGZvbnRTdHlsZTogXCJpdGFsaWNcIiB9IH0sIG1lc3NhZ2UpLCBzdGFjayA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcInByZVwiLCB7IHN0eWxlOiBwcmVTdHlsZXMgfSwgc3RhY2spIDogbnVsbCwgZGV2SW5mbyk7XG59XG52YXIgZGVmYXVsdEVycm9yRWxlbWVudCA9IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChEZWZhdWx0RXJyb3JDb21wb25lbnQsIG51bGwpO1xudmFyIFJlbmRlckVycm9yQm91bmRhcnkgPSBjbGFzcyBleHRlbmRzIFJlYWN0Mi5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uLFxuICAgICAgcmV2YWxpZGF0aW9uOiBwcm9wcy5yZXZhbGlkYXRpb24sXG4gICAgICBlcnJvcjogcHJvcHMuZXJyb3JcbiAgICB9O1xuICB9XG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3IpIHtcbiAgICByZXR1cm4geyBlcnJvciB9O1xuICB9XG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgaWYgKHN0YXRlLmxvY2F0aW9uICE9PSBwcm9wcy5sb2NhdGlvbiB8fCBzdGF0ZS5yZXZhbGlkYXRpb24gIT09IFwiaWRsZVwiICYmIHByb3BzLnJldmFsaWRhdGlvbiA9PT0gXCJpZGxlXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yOiBwcm9wcy5lcnJvcixcbiAgICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uLFxuICAgICAgICByZXZhbGlkYXRpb246IHByb3BzLnJldmFsaWRhdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiBwcm9wcy5lcnJvciAhPT0gdm9pZCAwID8gcHJvcHMuZXJyb3IgOiBzdGF0ZS5lcnJvcixcbiAgICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgIHJldmFsaWRhdGlvbjogcHJvcHMucmV2YWxpZGF0aW9uIHx8IHN0YXRlLnJldmFsaWRhdGlvblxuICAgIH07XG4gIH1cbiAgY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGVycm9ySW5mbykge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlJlYWN0IFJvdXRlciBjYXVnaHQgdGhlIGZvbGxvd2luZyBlcnJvciBkdXJpbmcgcmVuZGVyXCIsXG4gICAgICBlcnJvcixcbiAgICAgIGVycm9ySW5mb1xuICAgICk7XG4gIH1cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmVycm9yICE9PSB2b2lkIDAgPyAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoUm91dGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB0aGlzLnByb3BzLnJvdXRlQ29udGV4dCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBSb3V0ZUVycm9yQ29udGV4dC5Qcm92aWRlcixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHRoaXMuc3RhdGUuZXJyb3IsXG4gICAgICAgIGNoaWxkcmVuOiB0aGlzLnByb3BzLmNvbXBvbmVudFxuICAgICAgfVxuICAgICkpIDogdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgfVxufTtcbmZ1bmN0aW9uIFJlbmRlcmVkUm91dGUoeyByb3V0ZUNvbnRleHQsIG1hdGNoLCBjaGlsZHJlbiB9KSB7XG4gIGxldCBkYXRhUm91dGVyQ29udGV4dCA9IFJlYWN0Mi51c2VDb250ZXh0KERhdGFSb3V0ZXJDb250ZXh0KTtcbiAgaWYgKGRhdGFSb3V0ZXJDb250ZXh0ICYmIGRhdGFSb3V0ZXJDb250ZXh0LnN0YXRpYyAmJiBkYXRhUm91dGVyQ29udGV4dC5zdGF0aWNDb250ZXh0ICYmIChtYXRjaC5yb3V0ZS5lcnJvckVsZW1lbnQgfHwgbWF0Y2gucm91dGUuRXJyb3JCb3VuZGFyeSkpIHtcbiAgICBkYXRhUm91dGVyQ29udGV4dC5zdGF0aWNDb250ZXh0Ll9kZWVwZXN0UmVuZGVyZWRCb3VuZGFyeUlkID0gbWF0Y2gucm91dGUuaWQ7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChSb3V0ZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHJvdXRlQ29udGV4dCB9LCBjaGlsZHJlbik7XG59XG5mdW5jdGlvbiBfcmVuZGVyTWF0Y2hlcyhtYXRjaGVzLCBwYXJlbnRNYXRjaGVzID0gW10sIGRhdGFSb3V0ZXJTdGF0ZSA9IG51bGwsIGZ1dHVyZSA9IG51bGwpIHtcbiAgaWYgKG1hdGNoZXMgPT0gbnVsbCkge1xuICAgIGlmICghZGF0YVJvdXRlclN0YXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGRhdGFSb3V0ZXJTdGF0ZS5lcnJvcnMpIHtcbiAgICAgIG1hdGNoZXMgPSBkYXRhUm91dGVyU3RhdGUubWF0Y2hlcztcbiAgICB9IGVsc2UgaWYgKHBhcmVudE1hdGNoZXMubGVuZ3RoID09PSAwICYmICFkYXRhUm91dGVyU3RhdGUuaW5pdGlhbGl6ZWQgJiYgZGF0YVJvdXRlclN0YXRlLm1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgbWF0Y2hlcyA9IGRhdGFSb3V0ZXJTdGF0ZS5tYXRjaGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgbGV0IHJlbmRlcmVkTWF0Y2hlcyA9IG1hdGNoZXM7XG4gIGxldCBlcnJvcnMgPSBkYXRhUm91dGVyU3RhdGU/LmVycm9ycztcbiAgaWYgKGVycm9ycyAhPSBudWxsKSB7XG4gICAgbGV0IGVycm9ySW5kZXggPSByZW5kZXJlZE1hdGNoZXMuZmluZEluZGV4KFxuICAgICAgKG0pID0+IG0ucm91dGUuaWQgJiYgZXJyb3JzPy5bbS5yb3V0ZS5pZF0gIT09IHZvaWQgMFxuICAgICk7XG4gICAgaW52YXJpYW50KFxuICAgICAgZXJyb3JJbmRleCA+PSAwLFxuICAgICAgYENvdWxkIG5vdCBmaW5kIGEgbWF0Y2hpbmcgcm91dGUgZm9yIGVycm9ycyBvbiByb3V0ZSBJRHM6ICR7T2JqZWN0LmtleXMoXG4gICAgICAgIGVycm9yc1xuICAgICAgKS5qb2luKFwiLFwiKX1gXG4gICAgKTtcbiAgICByZW5kZXJlZE1hdGNoZXMgPSByZW5kZXJlZE1hdGNoZXMuc2xpY2UoXG4gICAgICAwLFxuICAgICAgTWF0aC5taW4ocmVuZGVyZWRNYXRjaGVzLmxlbmd0aCwgZXJyb3JJbmRleCArIDEpXG4gICAgKTtcbiAgfVxuICBsZXQgcmVuZGVyRmFsbGJhY2sgPSBmYWxzZTtcbiAgbGV0IGZhbGxiYWNrSW5kZXggPSAtMTtcbiAgaWYgKGRhdGFSb3V0ZXJTdGF0ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVuZGVyZWRNYXRjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbWF0Y2ggPSByZW5kZXJlZE1hdGNoZXNbaV07XG4gICAgICBpZiAobWF0Y2gucm91dGUuSHlkcmF0ZUZhbGxiYWNrIHx8IG1hdGNoLnJvdXRlLmh5ZHJhdGVGYWxsYmFja0VsZW1lbnQpIHtcbiAgICAgICAgZmFsbGJhY2tJbmRleCA9IGk7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2gucm91dGUuaWQpIHtcbiAgICAgICAgbGV0IHsgbG9hZGVyRGF0YSwgZXJyb3JzOiBlcnJvcnMyIH0gPSBkYXRhUm91dGVyU3RhdGU7XG4gICAgICAgIGxldCBuZWVkc1RvUnVuTG9hZGVyID0gbWF0Y2gucm91dGUubG9hZGVyICYmICFsb2FkZXJEYXRhLmhhc093blByb3BlcnR5KG1hdGNoLnJvdXRlLmlkKSAmJiAoIWVycm9yczIgfHwgZXJyb3JzMlttYXRjaC5yb3V0ZS5pZF0gPT09IHZvaWQgMCk7XG4gICAgICAgIGlmIChtYXRjaC5yb3V0ZS5sYXp5IHx8IG5lZWRzVG9SdW5Mb2FkZXIpIHtcbiAgICAgICAgICByZW5kZXJGYWxsYmFjayA9IHRydWU7XG4gICAgICAgICAgaWYgKGZhbGxiYWNrSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgcmVuZGVyZWRNYXRjaGVzID0gcmVuZGVyZWRNYXRjaGVzLnNsaWNlKDAsIGZhbGxiYWNrSW5kZXggKyAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVuZGVyZWRNYXRjaGVzID0gW3JlbmRlcmVkTWF0Y2hlc1swXV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZW5kZXJlZE1hdGNoZXMucmVkdWNlUmlnaHQoKG91dGxldCwgbWF0Y2gsIGluZGV4KSA9PiB7XG4gICAgbGV0IGVycm9yO1xuICAgIGxldCBzaG91bGRSZW5kZXJIeWRyYXRlRmFsbGJhY2sgPSBmYWxzZTtcbiAgICBsZXQgZXJyb3JFbGVtZW50ID0gbnVsbDtcbiAgICBsZXQgaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCA9IG51bGw7XG4gICAgaWYgKGRhdGFSb3V0ZXJTdGF0ZSkge1xuICAgICAgZXJyb3IgPSBlcnJvcnMgJiYgbWF0Y2gucm91dGUuaWQgPyBlcnJvcnNbbWF0Y2gucm91dGUuaWRdIDogdm9pZCAwO1xuICAgICAgZXJyb3JFbGVtZW50ID0gbWF0Y2gucm91dGUuZXJyb3JFbGVtZW50IHx8IGRlZmF1bHRFcnJvckVsZW1lbnQ7XG4gICAgICBpZiAocmVuZGVyRmFsbGJhY2spIHtcbiAgICAgICAgaWYgKGZhbGxiYWNrSW5kZXggPCAwICYmIGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgd2FybmluZ09uY2UoXG4gICAgICAgICAgICBcInJvdXRlLWZhbGxiYWNrXCIsXG4gICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgIFwiTm8gYEh5ZHJhdGVGYWxsYmFja2AgZWxlbWVudCBwcm92aWRlZCB0byByZW5kZXIgZHVyaW5nIGluaXRpYWwgaHlkcmF0aW9uXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIHNob3VsZFJlbmRlckh5ZHJhdGVGYWxsYmFjayA9IHRydWU7XG4gICAgICAgICAgaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCA9IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoZmFsbGJhY2tJbmRleCA9PT0gaW5kZXgpIHtcbiAgICAgICAgICBzaG91bGRSZW5kZXJIeWRyYXRlRmFsbGJhY2sgPSB0cnVlO1xuICAgICAgICAgIGh5ZHJhdGVGYWxsYmFja0VsZW1lbnQgPSBtYXRjaC5yb3V0ZS5oeWRyYXRlRmFsbGJhY2tFbGVtZW50IHx8IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IG1hdGNoZXMyID0gcGFyZW50TWF0Y2hlcy5jb25jYXQocmVuZGVyZWRNYXRjaGVzLnNsaWNlKDAsIGluZGV4ICsgMSkpO1xuICAgIGxldCBnZXRDaGlsZHJlbiA9ICgpID0+IHtcbiAgICAgIGxldCBjaGlsZHJlbjtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBjaGlsZHJlbiA9IGVycm9yRWxlbWVudDtcbiAgICAgIH0gZWxzZSBpZiAoc2hvdWxkUmVuZGVySHlkcmF0ZUZhbGxiYWNrKSB7XG4gICAgICAgIGNoaWxkcmVuID0gaHlkcmF0ZUZhbGxiYWNrRWxlbWVudDtcbiAgICAgIH0gZWxzZSBpZiAobWF0Y2gucm91dGUuQ29tcG9uZW50KSB7XG4gICAgICAgIGNoaWxkcmVuID0gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KG1hdGNoLnJvdXRlLkNvbXBvbmVudCwgbnVsbCk7XG4gICAgICB9IGVsc2UgaWYgKG1hdGNoLnJvdXRlLmVsZW1lbnQpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBtYXRjaC5yb3V0ZS5lbGVtZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGRyZW4gPSBvdXRsZXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFxuICAgICAgICBSZW5kZXJlZFJvdXRlLFxuICAgICAgICB7XG4gICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgcm91dGVDb250ZXh0OiB7XG4gICAgICAgICAgICBvdXRsZXQsXG4gICAgICAgICAgICBtYXRjaGVzOiBtYXRjaGVzMixcbiAgICAgICAgICAgIGlzRGF0YVJvdXRlOiBkYXRhUm91dGVyU3RhdGUgIT0gbnVsbFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9O1xuICAgIHJldHVybiBkYXRhUm91dGVyU3RhdGUgJiYgKG1hdGNoLnJvdXRlLkVycm9yQm91bmRhcnkgfHwgbWF0Y2gucm91dGUuZXJyb3JFbGVtZW50IHx8IGluZGV4ID09PSAwKSA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcbiAgICAgIFJlbmRlckVycm9yQm91bmRhcnksXG4gICAgICB7XG4gICAgICAgIGxvY2F0aW9uOiBkYXRhUm91dGVyU3RhdGUubG9jYXRpb24sXG4gICAgICAgIHJldmFsaWRhdGlvbjogZGF0YVJvdXRlclN0YXRlLnJldmFsaWRhdGlvbixcbiAgICAgICAgY29tcG9uZW50OiBlcnJvckVsZW1lbnQsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBjaGlsZHJlbjogZ2V0Q2hpbGRyZW4oKSxcbiAgICAgICAgcm91dGVDb250ZXh0OiB7IG91dGxldDogbnVsbCwgbWF0Y2hlczogbWF0Y2hlczIsIGlzRGF0YVJvdXRlOiB0cnVlIH1cbiAgICAgIH1cbiAgICApIDogZ2V0Q2hpbGRyZW4oKTtcbiAgfSwgbnVsbCk7XG59XG5mdW5jdGlvbiBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yKGhvb2tOYW1lKSB7XG4gIHJldHVybiBgJHtob29rTmFtZX0gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGRhdGEgcm91dGVyLiAgU2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2VuL21haW4vcm91dGVycy9waWNraW5nLWEtcm91dGVyLmA7XG59XG5mdW5jdGlvbiB1c2VEYXRhUm91dGVyQ29udGV4dChob29rTmFtZSkge1xuICBsZXQgY3R4ID0gUmVhY3QyLnVzZUNvbnRleHQoRGF0YVJvdXRlckNvbnRleHQpO1xuICBpbnZhcmlhbnQoY3R4LCBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yKGhvb2tOYW1lKSk7XG4gIHJldHVybiBjdHg7XG59XG5mdW5jdGlvbiB1c2VEYXRhUm91dGVyU3RhdGUoaG9va05hbWUpIHtcbiAgbGV0IHN0YXRlID0gUmVhY3QyLnVzZUNvbnRleHQoRGF0YVJvdXRlclN0YXRlQ29udGV4dCk7XG4gIGludmFyaWFudChzdGF0ZSwgZ2V0RGF0YVJvdXRlckNvbnNvbGVFcnJvcihob29rTmFtZSkpO1xuICByZXR1cm4gc3RhdGU7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZUNvbnRleHQoaG9va05hbWUpIHtcbiAgbGV0IHJvdXRlID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgaW52YXJpYW50KHJvdXRlLCBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yKGhvb2tOYW1lKSk7XG4gIHJldHVybiByb3V0ZTtcbn1cbmZ1bmN0aW9uIHVzZUN1cnJlbnRSb3V0ZUlkKGhvb2tOYW1lKSB7XG4gIGxldCByb3V0ZSA9IHVzZVJvdXRlQ29udGV4dChob29rTmFtZSk7XG4gIGxldCB0aGlzUm91dGUgPSByb3V0ZS5tYXRjaGVzW3JvdXRlLm1hdGNoZXMubGVuZ3RoIC0gMV07XG4gIGludmFyaWFudChcbiAgICB0aGlzUm91dGUucm91dGUuaWQsXG4gICAgYCR7aG9va05hbWV9IGNhbiBvbmx5IGJlIHVzZWQgb24gcm91dGVzIHRoYXQgY29udGFpbiBhIHVuaXF1ZSBcImlkXCJgXG4gICk7XG4gIHJldHVybiB0aGlzUm91dGUucm91dGUuaWQ7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZUlkKCkge1xuICByZXR1cm4gdXNlQ3VycmVudFJvdXRlSWQoXCJ1c2VSb3V0ZUlkXCIgLyogVXNlUm91dGVJZCAqLyk7XG59XG5mdW5jdGlvbiB1c2VOYXZpZ2F0aW9uKCkge1xuICBsZXQgc3RhdGUgPSB1c2VEYXRhUm91dGVyU3RhdGUoXCJ1c2VOYXZpZ2F0aW9uXCIgLyogVXNlTmF2aWdhdGlvbiAqLyk7XG4gIHJldHVybiBzdGF0ZS5uYXZpZ2F0aW9uO1xufVxuZnVuY3Rpb24gdXNlUmV2YWxpZGF0b3IoKSB7XG4gIGxldCBkYXRhUm91dGVyQ29udGV4dCA9IHVzZURhdGFSb3V0ZXJDb250ZXh0KFwidXNlUmV2YWxpZGF0b3JcIiAvKiBVc2VSZXZhbGlkYXRvciAqLyk7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcInVzZVJldmFsaWRhdG9yXCIgLyogVXNlUmV2YWxpZGF0b3IgKi8pO1xuICByZXR1cm4gUmVhY3QyLnVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGFzeW5jIHJldmFsaWRhdGUoKSB7XG4gICAgICAgIGF3YWl0IGRhdGFSb3V0ZXJDb250ZXh0LnJvdXRlci5yZXZhbGlkYXRlKCk7XG4gICAgICB9LFxuICAgICAgc3RhdGU6IHN0YXRlLnJldmFsaWRhdGlvblxuICAgIH0pLFxuICAgIFtkYXRhUm91dGVyQ29udGV4dC5yb3V0ZXIsIHN0YXRlLnJldmFsaWRhdGlvbl1cbiAgKTtcbn1cbmZ1bmN0aW9uIHVzZU1hdGNoZXMoKSB7XG4gIGxldCB7IG1hdGNoZXMsIGxvYWRlckRhdGEgfSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcbiAgICBcInVzZU1hdGNoZXNcIiAvKiBVc2VNYXRjaGVzICovXG4gICk7XG4gIHJldHVybiBSZWFjdDIudXNlTWVtbyhcbiAgICAoKSA9PiBtYXRjaGVzLm1hcCgobSkgPT4gY29udmVydFJvdXRlTWF0Y2hUb1VpTWF0Y2gobSwgbG9hZGVyRGF0YSkpLFxuICAgIFttYXRjaGVzLCBsb2FkZXJEYXRhXVxuICApO1xufVxuZnVuY3Rpb24gdXNlTG9hZGVyRGF0YSgpIHtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlKFwidXNlTG9hZGVyRGF0YVwiIC8qIFVzZUxvYWRlckRhdGEgKi8pO1xuICBsZXQgcm91dGVJZCA9IHVzZUN1cnJlbnRSb3V0ZUlkKFwidXNlTG9hZGVyRGF0YVwiIC8qIFVzZUxvYWRlckRhdGEgKi8pO1xuICByZXR1cm4gc3RhdGUubG9hZGVyRGF0YVtyb3V0ZUlkXTtcbn1cbmZ1bmN0aW9uIHVzZVJvdXRlTG9hZGVyRGF0YShyb3V0ZUlkKSB7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcInVzZVJvdXRlTG9hZGVyRGF0YVwiIC8qIFVzZVJvdXRlTG9hZGVyRGF0YSAqLyk7XG4gIHJldHVybiBzdGF0ZS5sb2FkZXJEYXRhW3JvdXRlSWRdO1xufVxuZnVuY3Rpb24gdXNlQWN0aW9uRGF0YSgpIHtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlKFwidXNlQWN0aW9uRGF0YVwiIC8qIFVzZUFjdGlvbkRhdGEgKi8pO1xuICBsZXQgcm91dGVJZCA9IHVzZUN1cnJlbnRSb3V0ZUlkKFwidXNlTG9hZGVyRGF0YVwiIC8qIFVzZUxvYWRlckRhdGEgKi8pO1xuICByZXR1cm4gc3RhdGUuYWN0aW9uRGF0YSA/IHN0YXRlLmFjdGlvbkRhdGFbcm91dGVJZF0gOiB2b2lkIDA7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZUVycm9yKCkge1xuICBsZXQgZXJyb3IgPSBSZWFjdDIudXNlQ29udGV4dChSb3V0ZUVycm9yQ29udGV4dCk7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcInVzZVJvdXRlRXJyb3JcIiAvKiBVc2VSb3V0ZUVycm9yICovKTtcbiAgbGV0IHJvdXRlSWQgPSB1c2VDdXJyZW50Um91dGVJZChcInVzZVJvdXRlRXJyb3JcIiAvKiBVc2VSb3V0ZUVycm9yICovKTtcbiAgaWYgKGVycm9yICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLmVycm9ycz8uW3JvdXRlSWRdO1xufVxuZnVuY3Rpb24gdXNlQXN5bmNWYWx1ZSgpIHtcbiAgbGV0IHZhbHVlID0gUmVhY3QyLnVzZUNvbnRleHQoQXdhaXRDb250ZXh0KTtcbiAgcmV0dXJuIHZhbHVlPy5fZGF0YTtcbn1cbmZ1bmN0aW9uIHVzZUFzeW5jRXJyb3IoKSB7XG4gIGxldCB2YWx1ZSA9IFJlYWN0Mi51c2VDb250ZXh0KEF3YWl0Q29udGV4dCk7XG4gIHJldHVybiB2YWx1ZT8uX2Vycm9yO1xufVxudmFyIGJsb2NrZXJJZCA9IDA7XG5mdW5jdGlvbiB1c2VCbG9ja2VyKHNob3VsZEJsb2NrKSB7XG4gIGxldCB7IHJvdXRlciwgYmFzZW5hbWUgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0KFwidXNlQmxvY2tlclwiIC8qIFVzZUJsb2NrZXIgKi8pO1xuICBsZXQgc3RhdGUgPSB1c2VEYXRhUm91dGVyU3RhdGUoXCJ1c2VCbG9ja2VyXCIgLyogVXNlQmxvY2tlciAqLyk7XG4gIGxldCBbYmxvY2tlcktleSwgc2V0QmxvY2tlcktleV0gPSBSZWFjdDIudXNlU3RhdGUoXCJcIik7XG4gIGxldCBibG9ja2VyRnVuY3Rpb24gPSBSZWFjdDIudXNlQ2FsbGJhY2soXG4gICAgKGFyZykgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBzaG91bGRCbG9jayAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiAhIXNob3VsZEJsb2NrO1xuICAgICAgfVxuICAgICAgaWYgKGJhc2VuYW1lID09PSBcIi9cIikge1xuICAgICAgICByZXR1cm4gc2hvdWxkQmxvY2soYXJnKTtcbiAgICAgIH1cbiAgICAgIGxldCB7IGN1cnJlbnRMb2NhdGlvbiwgbmV4dExvY2F0aW9uLCBoaXN0b3J5QWN0aW9uIH0gPSBhcmc7XG4gICAgICByZXR1cm4gc2hvdWxkQmxvY2soe1xuICAgICAgICBjdXJyZW50TG9jYXRpb246IHtcbiAgICAgICAgICAuLi5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgICAgcGF0aG5hbWU6IHN0cmlwQmFzZW5hbWUoY3VycmVudExvY2F0aW9uLnBhdGhuYW1lLCBiYXNlbmFtZSkgfHwgY3VycmVudExvY2F0aW9uLnBhdGhuYW1lXG4gICAgICAgIH0sXG4gICAgICAgIG5leHRMb2NhdGlvbjoge1xuICAgICAgICAgIC4uLm5leHRMb2NhdGlvbixcbiAgICAgICAgICBwYXRobmFtZTogc3RyaXBCYXNlbmFtZShuZXh0TG9jYXRpb24ucGF0aG5hbWUsIGJhc2VuYW1lKSB8fCBuZXh0TG9jYXRpb24ucGF0aG5hbWVcbiAgICAgICAgfSxcbiAgICAgICAgaGlzdG9yeUFjdGlvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbYmFzZW5hbWUsIHNob3VsZEJsb2NrXVxuICApO1xuICBSZWFjdDIudXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQga2V5ID0gU3RyaW5nKCsrYmxvY2tlcklkKTtcbiAgICBzZXRCbG9ja2VyS2V5KGtleSk7XG4gICAgcmV0dXJuICgpID0+IHJvdXRlci5kZWxldGVCbG9ja2VyKGtleSk7XG4gIH0sIFtyb3V0ZXJdKTtcbiAgUmVhY3QyLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGJsb2NrZXJLZXkgIT09IFwiXCIpIHtcbiAgICAgIHJvdXRlci5nZXRCbG9ja2VyKGJsb2NrZXJLZXksIGJsb2NrZXJGdW5jdGlvbik7XG4gICAgfVxuICB9LCBbcm91dGVyLCBibG9ja2VyS2V5LCBibG9ja2VyRnVuY3Rpb25dKTtcbiAgcmV0dXJuIGJsb2NrZXJLZXkgJiYgc3RhdGUuYmxvY2tlcnMuaGFzKGJsb2NrZXJLZXkpID8gc3RhdGUuYmxvY2tlcnMuZ2V0KGJsb2NrZXJLZXkpIDogSURMRV9CTE9DS0VSO1xufVxuZnVuY3Rpb24gdXNlTmF2aWdhdGVTdGFibGUoKSB7XG4gIGxldCB7IHJvdXRlciB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQoXCJ1c2VOYXZpZ2F0ZVwiIC8qIFVzZU5hdmlnYXRlU3RhYmxlICovKTtcbiAgbGV0IGlkID0gdXNlQ3VycmVudFJvdXRlSWQoXCJ1c2VOYXZpZ2F0ZVwiIC8qIFVzZU5hdmlnYXRlU3RhYmxlICovKTtcbiAgbGV0IGFjdGl2ZVJlZiA9IFJlYWN0Mi51c2VSZWYoZmFsc2UpO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBhY3RpdmVSZWYuY3VycmVudCA9IHRydWU7XG4gIH0pO1xuICBsZXQgbmF2aWdhdGUgPSBSZWFjdDIudXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHRvLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIHdhcm5pbmcoYWN0aXZlUmVmLmN1cnJlbnQsIG5hdmlnYXRlRWZmZWN0V2FybmluZyk7XG4gICAgICBpZiAoIWFjdGl2ZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICBpZiAodHlwZW9mIHRvID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJvdXRlci5uYXZpZ2F0ZSh0byk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCByb3V0ZXIubmF2aWdhdGUodG8sIHsgZnJvbVJvdXRlSWQ6IGlkLCAuLi5vcHRpb25zIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3JvdXRlciwgaWRdXG4gICk7XG4gIHJldHVybiBuYXZpZ2F0ZTtcbn1cbnZhciBhbHJlYWR5V2FybmVkID0ge307XG5mdW5jdGlvbiB3YXJuaW5nT25jZShrZXksIGNvbmQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kICYmICFhbHJlYWR5V2FybmVkW2tleV0pIHtcbiAgICBhbHJlYWR5V2FybmVkW2tleV0gPSB0cnVlO1xuICAgIHdhcm5pbmcoZmFsc2UsIG1lc3NhZ2UpO1xuICB9XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS93YXJuaW5ncy50c1xudmFyIGFscmVhZHlXYXJuZWQyID0ge307XG5mdW5jdGlvbiB3YXJuT25jZShjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kaXRpb24gJiYgIWFscmVhZHlXYXJuZWQyW21lc3NhZ2VdKSB7XG4gICAgYWxyZWFkeVdhcm5lZDJbbWVzc2FnZV0gPSB0cnVlO1xuICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgfVxufVxuXG4vLyBsaWIvY29tcG9uZW50cy50c3hcbnZhciBFTkFCTEVfREVWX1dBUk5JTkdTMiA9IHRydWU7XG5mdW5jdGlvbiBtYXBSb3V0ZVByb3BlcnRpZXMocm91dGUpIHtcbiAgbGV0IHVwZGF0ZXMgPSB7XG4gICAgLy8gTm90ZTogdGhpcyBjaGVjayBhbHNvIG9jY3VycyBpbiBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4gc28gdXBkYXRlXG4gICAgLy8gdGhlcmUgaWYgeW91IGNoYW5nZSB0aGlzIC0tIHBsZWFzZSBhbmQgdGhhbmsgeW91IVxuICAgIGhhc0Vycm9yQm91bmRhcnk6IHJvdXRlLmhhc0Vycm9yQm91bmRhcnkgfHwgcm91dGUuRXJyb3JCb3VuZGFyeSAhPSBudWxsIHx8IHJvdXRlLmVycm9yRWxlbWVudCAhPSBudWxsXG4gIH07XG4gIGlmIChyb3V0ZS5Db21wb25lbnQpIHtcbiAgICBpZiAoRU5BQkxFX0RFVl9XQVJOSU5HUzIpIHtcbiAgICAgIGlmIChyb3V0ZS5lbGVtZW50KSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgXCJZb3Ugc2hvdWxkIG5vdCBpbmNsdWRlIGJvdGggYENvbXBvbmVudGAgYW5kIGBlbGVtZW50YCBvbiB5b3VyIHJvdXRlIC0gYENvbXBvbmVudGAgd2lsbCBiZSB1c2VkLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24odXBkYXRlcywge1xuICAgICAgZWxlbWVudDogUmVhY3QzLmNyZWF0ZUVsZW1lbnQocm91dGUuQ29tcG9uZW50KSxcbiAgICAgIENvbXBvbmVudDogdm9pZCAwXG4gICAgfSk7XG4gIH1cbiAgaWYgKHJvdXRlLkh5ZHJhdGVGYWxsYmFjaykge1xuICAgIGlmIChFTkFCTEVfREVWX1dBUk5JTkdTMikge1xuICAgICAgaWYgKHJvdXRlLmh5ZHJhdGVGYWxsYmFja0VsZW1lbnQpIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBcIllvdSBzaG91bGQgbm90IGluY2x1ZGUgYm90aCBgSHlkcmF0ZUZhbGxiYWNrYCBhbmQgYGh5ZHJhdGVGYWxsYmFja0VsZW1lbnRgIG9uIHlvdXIgcm91dGUgLSBgSHlkcmF0ZUZhbGxiYWNrYCB3aWxsIGJlIHVzZWQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbih1cGRhdGVzLCB7XG4gICAgICBoeWRyYXRlRmFsbGJhY2tFbGVtZW50OiBSZWFjdDMuY3JlYXRlRWxlbWVudChyb3V0ZS5IeWRyYXRlRmFsbGJhY2spLFxuICAgICAgSHlkcmF0ZUZhbGxiYWNrOiB2b2lkIDBcbiAgICB9KTtcbiAgfVxuICBpZiAocm91dGUuRXJyb3JCb3VuZGFyeSkge1xuICAgIGlmIChFTkFCTEVfREVWX1dBUk5JTkdTMikge1xuICAgICAgaWYgKHJvdXRlLmVycm9yRWxlbWVudCkge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIFwiWW91IHNob3VsZCBub3QgaW5jbHVkZSBib3RoIGBFcnJvckJvdW5kYXJ5YCBhbmQgYGVycm9yRWxlbWVudGAgb24geW91ciByb3V0ZSAtIGBFcnJvckJvdW5kYXJ5YCB3aWxsIGJlIHVzZWQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbih1cGRhdGVzLCB7XG4gICAgICBlcnJvckVsZW1lbnQ6IFJlYWN0My5jcmVhdGVFbGVtZW50KHJvdXRlLkVycm9yQm91bmRhcnkpLFxuICAgICAgRXJyb3JCb3VuZGFyeTogdm9pZCAwXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHVwZGF0ZXM7XG59XG5mdW5jdGlvbiBjcmVhdGVNZW1vcnlSb3V0ZXIocm91dGVzLCBvcHRzKSB7XG4gIHJldHVybiBjcmVhdGVSb3V0ZXIoe1xuICAgIGJhc2VuYW1lOiBvcHRzPy5iYXNlbmFtZSxcbiAgICBmdXR1cmU6IG9wdHM/LmZ1dHVyZSxcbiAgICBoaXN0b3J5OiBjcmVhdGVNZW1vcnlIaXN0b3J5KHtcbiAgICAgIGluaXRpYWxFbnRyaWVzOiBvcHRzPy5pbml0aWFsRW50cmllcyxcbiAgICAgIGluaXRpYWxJbmRleDogb3B0cz8uaW5pdGlhbEluZGV4XG4gICAgfSksXG4gICAgaHlkcmF0aW9uRGF0YTogb3B0cz8uaHlkcmF0aW9uRGF0YSxcbiAgICByb3V0ZXMsXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzLFxuICAgIGRhdGFTdHJhdGVneTogb3B0cz8uZGF0YVN0cmF0ZWd5LFxuICAgIHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uOiBvcHRzPy5wYXRjaFJvdXRlc09uTmF2aWdhdGlvblxuICB9KS5pbml0aWFsaXplKCk7XG59XG52YXIgRGVmZXJyZWQgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc3RhdHVzID0gXCJwZW5kaW5nXCI7XG4gICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gXCJwZW5kaW5nXCIpIHtcbiAgICAgICAgICB0aGlzLnN0YXR1cyA9IFwicmVzb2x2ZWRcIjtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucmVqZWN0ID0gKHJlYXNvbikgPT4ge1xuICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IFwicGVuZGluZ1wiKSB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBcInJlamVjdGVkXCI7XG4gICAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn07XG5mdW5jdGlvbiBSb3V0ZXJQcm92aWRlcih7XG4gIHJvdXRlcixcbiAgZmx1c2hTeW5jOiByZWFjdERvbUZsdXNoU3luY0ltcGxcbn0pIHtcbiAgbGV0IFtzdGF0ZSwgc2V0U3RhdGVJbXBsXSA9IFJlYWN0My51c2VTdGF0ZShyb3V0ZXIuc3RhdGUpO1xuICBsZXQgW3BlbmRpbmdTdGF0ZSwgc2V0UGVuZGluZ1N0YXRlXSA9IFJlYWN0My51c2VTdGF0ZSgpO1xuICBsZXQgW3Z0Q29udGV4dCwgc2V0VnRDb250ZXh0XSA9IFJlYWN0My51c2VTdGF0ZSh7XG4gICAgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZVxuICB9KTtcbiAgbGV0IFtyZW5kZXJEZmQsIHNldFJlbmRlckRmZF0gPSBSZWFjdDMudXNlU3RhdGUoKTtcbiAgbGV0IFt0cmFuc2l0aW9uLCBzZXRUcmFuc2l0aW9uXSA9IFJlYWN0My51c2VTdGF0ZSgpO1xuICBsZXQgW2ludGVycnVwdGlvbiwgc2V0SW50ZXJydXB0aW9uXSA9IFJlYWN0My51c2VTdGF0ZSgpO1xuICBsZXQgZmV0Y2hlckRhdGEgPSBSZWFjdDMudXNlUmVmKC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCkpO1xuICBsZXQgc2V0U3RhdGUgPSBSZWFjdDMudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlLCB7IGRlbGV0ZWRGZXRjaGVycywgZmx1c2hTeW5jLCB2aWV3VHJhbnNpdGlvbk9wdHMgfSkgPT4ge1xuICAgICAgZGVsZXRlZEZldGNoZXJzLmZvckVhY2goKGtleSkgPT4gZmV0Y2hlckRhdGEuY3VycmVudC5kZWxldGUoa2V5KSk7XG4gICAgICBuZXdTdGF0ZS5mZXRjaGVycy5mb3JFYWNoKChmZXRjaGVyLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGZldGNoZXIuZGF0YSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgZmV0Y2hlckRhdGEuY3VycmVudC5zZXQoa2V5LCBmZXRjaGVyLmRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHdhcm5PbmNlKFxuICAgICAgICBmbHVzaFN5bmMgPT09IGZhbHNlIHx8IHJlYWN0RG9tRmx1c2hTeW5jSW1wbCAhPSBudWxsLFxuICAgICAgICAnWW91IHByb3ZpZGVkIHRoZSBgZmx1c2hTeW5jYCBvcHRpb24gdG8gYSByb3V0ZXIgdXBkYXRlLCBidXQgeW91IGFyZSBub3QgdXNpbmcgdGhlIGA8Um91dGVyUHJvdmlkZXI+YCBmcm9tIGByZWFjdC1yb3V0ZXIvZG9tYCBzbyBgUmVhY3RET00uZmx1c2hTeW5jKClgIGlzIHVuYXZhaWxhYmxlLiAgUGxlYXNlIHVwZGF0ZSB5b3VyIGFwcCB0byBgaW1wb3J0IHsgUm91dGVyUHJvdmlkZXIgfSBmcm9tIFwicmVhY3Qtcm91dGVyL2RvbVwiYCBhbmQgZW5zdXJlIHlvdSBoYXZlIGByZWFjdC1kb21gIGluc3RhbGxlZCBhcyBhIGRlcGVuZGVuY3kgdG8gdXNlIHRoZSBgZmx1c2hTeW5jYCBvcHRpb24uJ1xuICAgICAgKTtcbiAgICAgIGxldCBpc1ZpZXdUcmFuc2l0aW9uQXZhaWxhYmxlID0gcm91dGVyLndpbmRvdyAhPSBudWxsICYmIHJvdXRlci53aW5kb3cuZG9jdW1lbnQgIT0gbnVsbCAmJiB0eXBlb2Ygcm91dGVyLndpbmRvdy5kb2N1bWVudC5zdGFydFZpZXdUcmFuc2l0aW9uID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICB3YXJuT25jZShcbiAgICAgICAgdmlld1RyYW5zaXRpb25PcHRzID09IG51bGwgfHwgaXNWaWV3VHJhbnNpdGlvbkF2YWlsYWJsZSxcbiAgICAgICAgXCJZb3UgcHJvdmlkZWQgdGhlIGB2aWV3VHJhbnNpdGlvbmAgb3B0aW9uIHRvIGEgcm91dGVyIHVwZGF0ZSwgYnV0IHlvdSBkbyBub3QgYXBwZWFyIHRvIGJlIHJ1bm5pbmcgaW4gYSBET00gZW52aXJvbm1lbnQgYXMgYHdpbmRvdy5zdGFydFZpZXdUcmFuc2l0aW9uYCBpcyBub3QgYXZhaWxhYmxlLlwiXG4gICAgICApO1xuICAgICAgaWYgKCF2aWV3VHJhbnNpdGlvbk9wdHMgfHwgIWlzVmlld1RyYW5zaXRpb25BdmFpbGFibGUpIHtcbiAgICAgICAgaWYgKHJlYWN0RG9tRmx1c2hTeW5jSW1wbCAmJiBmbHVzaFN5bmMpIHtcbiAgICAgICAgICByZWFjdERvbUZsdXNoU3luY0ltcGwoKCkgPT4gc2V0U3RhdGVJbXBsKG5ld1N0YXRlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgUmVhY3QzLnN0YXJ0VHJhbnNpdGlvbigoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAocmVhY3REb21GbHVzaFN5bmNJbXBsICYmIGZsdXNoU3luYykge1xuICAgICAgICByZWFjdERvbUZsdXNoU3luY0ltcGwoKCkgPT4ge1xuICAgICAgICAgIGlmICh0cmFuc2l0aW9uKSB7XG4gICAgICAgICAgICByZW5kZXJEZmQgJiYgcmVuZGVyRGZkLnJlc29sdmUoKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb24uc2tpcFRyYW5zaXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0VnRDb250ZXh0KHtcbiAgICAgICAgICAgIGlzVHJhbnNpdGlvbmluZzogdHJ1ZSxcbiAgICAgICAgICAgIGZsdXNoU3luYzogdHJ1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbjogdmlld1RyYW5zaXRpb25PcHRzLmN1cnJlbnRMb2NhdGlvbixcbiAgICAgICAgICAgIG5leHRMb2NhdGlvbjogdmlld1RyYW5zaXRpb25PcHRzLm5leHRMb2NhdGlvblxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IHQgPSByb3V0ZXIud2luZG93LmRvY3VtZW50LnN0YXJ0Vmlld1RyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgIHJlYWN0RG9tRmx1c2hTeW5jSW1wbCgoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHQuZmluaXNoZWQuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgcmVhY3REb21GbHVzaFN5bmNJbXBsKCgpID0+IHtcbiAgICAgICAgICAgIHNldFJlbmRlckRmZCh2b2lkIDApO1xuICAgICAgICAgICAgc2V0VHJhbnNpdGlvbih2b2lkIDApO1xuICAgICAgICAgICAgc2V0UGVuZGluZ1N0YXRlKHZvaWQgMCk7XG4gICAgICAgICAgICBzZXRWdENvbnRleHQoeyBpc1RyYW5zaXRpb25pbmc6IGZhbHNlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVhY3REb21GbHVzaFN5bmNJbXBsKCgpID0+IHNldFRyYW5zaXRpb24odCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodHJhbnNpdGlvbikge1xuICAgICAgICByZW5kZXJEZmQgJiYgcmVuZGVyRGZkLnJlc29sdmUoKTtcbiAgICAgICAgdHJhbnNpdGlvbi5za2lwVHJhbnNpdGlvbigpO1xuICAgICAgICBzZXRJbnRlcnJ1cHRpb24oe1xuICAgICAgICAgIHN0YXRlOiBuZXdTdGF0ZSxcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IHZpZXdUcmFuc2l0aW9uT3B0cy5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgICAgbmV4dExvY2F0aW9uOiB2aWV3VHJhbnNpdGlvbk9wdHMubmV4dExvY2F0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0UGVuZGluZ1N0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgc2V0VnRDb250ZXh0KHtcbiAgICAgICAgICBpc1RyYW5zaXRpb25pbmc6IHRydWUsXG4gICAgICAgICAgZmx1c2hTeW5jOiBmYWxzZSxcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IHZpZXdUcmFuc2l0aW9uT3B0cy5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgICAgbmV4dExvY2F0aW9uOiB2aWV3VHJhbnNpdGlvbk9wdHMubmV4dExvY2F0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3JvdXRlci53aW5kb3csIHJlYWN0RG9tRmx1c2hTeW5jSW1wbCwgdHJhbnNpdGlvbiwgcmVuZGVyRGZkXVxuICApO1xuICBSZWFjdDMudXNlTGF5b3V0RWZmZWN0KCgpID0+IHJvdXRlci5zdWJzY3JpYmUoc2V0U3RhdGUpLCBbcm91dGVyLCBzZXRTdGF0ZV0pO1xuICBSZWFjdDMudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodnRDb250ZXh0LmlzVHJhbnNpdGlvbmluZyAmJiAhdnRDb250ZXh0LmZsdXNoU3luYykge1xuICAgICAgc2V0UmVuZGVyRGZkKG5ldyBEZWZlcnJlZCgpKTtcbiAgICB9XG4gIH0sIFt2dENvbnRleHRdKTtcbiAgUmVhY3QzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlbmRlckRmZCAmJiBwZW5kaW5nU3RhdGUgJiYgcm91dGVyLndpbmRvdykge1xuICAgICAgbGV0IG5ld1N0YXRlID0gcGVuZGluZ1N0YXRlO1xuICAgICAgbGV0IHJlbmRlclByb21pc2UgPSByZW5kZXJEZmQucHJvbWlzZTtcbiAgICAgIGxldCB0cmFuc2l0aW9uMiA9IHJvdXRlci53aW5kb3cuZG9jdW1lbnQuc3RhcnRWaWV3VHJhbnNpdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgIFJlYWN0My5zdGFydFRyYW5zaXRpb24oKCkgPT4gc2V0U3RhdGVJbXBsKG5ld1N0YXRlKSk7XG4gICAgICAgIGF3YWl0IHJlbmRlclByb21pc2U7XG4gICAgICB9KTtcbiAgICAgIHRyYW5zaXRpb24yLmZpbmlzaGVkLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBzZXRSZW5kZXJEZmQodm9pZCAwKTtcbiAgICAgICAgc2V0VHJhbnNpdGlvbih2b2lkIDApO1xuICAgICAgICBzZXRQZW5kaW5nU3RhdGUodm9pZCAwKTtcbiAgICAgICAgc2V0VnRDb250ZXh0KHsgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgICAgc2V0VHJhbnNpdGlvbih0cmFuc2l0aW9uMik7XG4gICAgfVxuICB9LCBbcGVuZGluZ1N0YXRlLCByZW5kZXJEZmQsIHJvdXRlci53aW5kb3ddKTtcbiAgUmVhY3QzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlbmRlckRmZCAmJiBwZW5kaW5nU3RhdGUgJiYgc3RhdGUubG9jYXRpb24ua2V5ID09PSBwZW5kaW5nU3RhdGUubG9jYXRpb24ua2V5KSB7XG4gICAgICByZW5kZXJEZmQucmVzb2x2ZSgpO1xuICAgIH1cbiAgfSwgW3JlbmRlckRmZCwgdHJhbnNpdGlvbiwgc3RhdGUubG9jYXRpb24sIHBlbmRpbmdTdGF0ZV0pO1xuICBSZWFjdDMudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZ0Q29udGV4dC5pc1RyYW5zaXRpb25pbmcgJiYgaW50ZXJydXB0aW9uKSB7XG4gICAgICBzZXRQZW5kaW5nU3RhdGUoaW50ZXJydXB0aW9uLnN0YXRlKTtcbiAgICAgIHNldFZ0Q29udGV4dCh7XG4gICAgICAgIGlzVHJhbnNpdGlvbmluZzogdHJ1ZSxcbiAgICAgICAgZmx1c2hTeW5jOiBmYWxzZSxcbiAgICAgICAgY3VycmVudExvY2F0aW9uOiBpbnRlcnJ1cHRpb24uY3VycmVudExvY2F0aW9uLFxuICAgICAgICBuZXh0TG9jYXRpb246IGludGVycnVwdGlvbi5uZXh0TG9jYXRpb25cbiAgICAgIH0pO1xuICAgICAgc2V0SW50ZXJydXB0aW9uKHZvaWQgMCk7XG4gICAgfVxuICB9LCBbdnRDb250ZXh0LmlzVHJhbnNpdGlvbmluZywgaW50ZXJydXB0aW9uXSk7XG4gIGxldCBuYXZpZ2F0b3IyID0gUmVhY3QzLnVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBjcmVhdGVIcmVmOiByb3V0ZXIuY3JlYXRlSHJlZixcbiAgICAgIGVuY29kZUxvY2F0aW9uOiByb3V0ZXIuZW5jb2RlTG9jYXRpb24sXG4gICAgICBnbzogKG4pID0+IHJvdXRlci5uYXZpZ2F0ZShuKSxcbiAgICAgIHB1c2g6ICh0bywgc3RhdGUyLCBvcHRzKSA9PiByb3V0ZXIubmF2aWdhdGUodG8sIHtcbiAgICAgICAgc3RhdGU6IHN0YXRlMixcbiAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0OiBvcHRzPy5wcmV2ZW50U2Nyb2xsUmVzZXRcbiAgICAgIH0pLFxuICAgICAgcmVwbGFjZTogKHRvLCBzdGF0ZTIsIG9wdHMpID0+IHJvdXRlci5uYXZpZ2F0ZSh0bywge1xuICAgICAgICByZXBsYWNlOiB0cnVlLFxuICAgICAgICBzdGF0ZTogc3RhdGUyLFxuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IG9wdHM/LnByZXZlbnRTY3JvbGxSZXNldFxuICAgICAgfSlcbiAgICB9O1xuICB9LCBbcm91dGVyXSk7XG4gIGxldCBiYXNlbmFtZSA9IHJvdXRlci5iYXNlbmFtZSB8fCBcIi9cIjtcbiAgbGV0IGRhdGFSb3V0ZXJDb250ZXh0ID0gUmVhY3QzLnVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHJvdXRlcixcbiAgICAgIG5hdmlnYXRvcjogbmF2aWdhdG9yMixcbiAgICAgIHN0YXRpYzogZmFsc2UsXG4gICAgICBiYXNlbmFtZVxuICAgIH0pLFxuICAgIFtyb3V0ZXIsIG5hdmlnYXRvcjIsIGJhc2VuYW1lXVxuICApO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KFJlYWN0My5GcmFnbWVudCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KERhdGFSb3V0ZXJDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBkYXRhUm91dGVyQ29udGV4dCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoRGF0YVJvdXRlclN0YXRlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogc3RhdGUgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KEZldGNoZXJzQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZmV0Y2hlckRhdGEuY3VycmVudCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoVmlld1RyYW5zaXRpb25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB2dENvbnRleHQgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgIG5hdmlnYXRpb25UeXBlOiBzdGF0ZS5oaXN0b3J5QWN0aW9uLFxuICAgICAgbmF2aWdhdG9yOiBuYXZpZ2F0b3IyXG4gICAgfSxcbiAgICAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBNZW1vaXplZERhdGFSb3V0ZXMsXG4gICAgICB7XG4gICAgICAgIHJvdXRlczogcm91dGVyLnJvdXRlcyxcbiAgICAgICAgZnV0dXJlOiByb3V0ZXIuZnV0dXJlLFxuICAgICAgICBzdGF0ZVxuICAgICAgfVxuICAgIClcbiAgKSkpKSksIG51bGwpO1xufVxudmFyIE1lbW9pemVkRGF0YVJvdXRlcyA9IFJlYWN0My5tZW1vKERhdGFSb3V0ZXMpO1xuZnVuY3Rpb24gRGF0YVJvdXRlcyh7XG4gIHJvdXRlcyxcbiAgZnV0dXJlLFxuICBzdGF0ZVxufSkge1xuICByZXR1cm4gdXNlUm91dGVzSW1wbChyb3V0ZXMsIHZvaWQgMCwgc3RhdGUsIGZ1dHVyZSk7XG59XG5mdW5jdGlvbiBNZW1vcnlSb3V0ZXIoe1xuICBiYXNlbmFtZSxcbiAgY2hpbGRyZW4sXG4gIGluaXRpYWxFbnRyaWVzLFxuICBpbml0aWFsSW5kZXhcbn0pIHtcbiAgbGV0IGhpc3RvcnlSZWYgPSBSZWFjdDMudXNlUmVmKCk7XG4gIGlmIChoaXN0b3J5UmVmLmN1cnJlbnQgPT0gbnVsbCkge1xuICAgIGhpc3RvcnlSZWYuY3VycmVudCA9IGNyZWF0ZU1lbW9yeUhpc3Rvcnkoe1xuICAgICAgaW5pdGlhbEVudHJpZXMsXG4gICAgICBpbml0aWFsSW5kZXgsXG4gICAgICB2NUNvbXBhdDogdHJ1ZVxuICAgIH0pO1xuICB9XG4gIGxldCBoaXN0b3J5ID0gaGlzdG9yeVJlZi5jdXJyZW50O1xuICBsZXQgW3N0YXRlLCBzZXRTdGF0ZUltcGxdID0gUmVhY3QzLnVzZVN0YXRlKHtcbiAgICBhY3Rpb246IGhpc3RvcnkuYWN0aW9uLFxuICAgIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uXG4gIH0pO1xuICBsZXQgc2V0U3RhdGUgPSBSZWFjdDMudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBSZWFjdDMuc3RhcnRUcmFuc2l0aW9uKCgpID0+IHNldFN0YXRlSW1wbChuZXdTdGF0ZSkpO1xuICAgIH0sXG4gICAgW3NldFN0YXRlSW1wbF1cbiAgKTtcbiAgUmVhY3QzLnVzZUxheW91dEVmZmVjdCgoKSA9PiBoaXN0b3J5Lmxpc3RlbihzZXRTdGF0ZSksIFtoaXN0b3J5LCBzZXRTdGF0ZV0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IHN0YXRlLmFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICAgIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIE5hdmlnYXRlKHtcbiAgdG8sXG4gIHJlcGxhY2U6IHJlcGxhY2UyLFxuICBzdGF0ZSxcbiAgcmVsYXRpdmVcbn0pIHtcbiAgaW52YXJpYW50KFxuICAgIHVzZUluUm91dGVyQ29udGV4dCgpLFxuICAgIC8vIFRPRE86IFRoaXMgZXJyb3IgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHNvbWVob3cgaGF2ZSAyIHZlcnNpb25zIG9mXG4gICAgLy8gdGhlIHJvdXRlciBsb2FkZWQuIFdlIGNhbiBoZWxwIHRoZW0gdW5kZXJzdGFuZCBob3cgdG8gYXZvaWQgdGhhdC5cbiAgICBgPE5hdmlnYXRlPiBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LmBcbiAgKTtcbiAgbGV0IHsgc3RhdGljOiBpc1N0YXRpYyB9ID0gUmVhY3QzLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICB3YXJuaW5nKFxuICAgICFpc1N0YXRpYyxcbiAgICBgPE5hdmlnYXRlPiBtdXN0IG5vdCBiZSB1c2VkIG9uIHRoZSBpbml0aWFsIHJlbmRlciBpbiBhIDxTdGF0aWNSb3V0ZXI+LiBUaGlzIGlzIGEgbm8tb3AsIGJ1dCB5b3Ugc2hvdWxkIG1vZGlmeSB5b3VyIGNvZGUgc28gdGhlIDxOYXZpZ2F0ZT4gaXMgb25seSBldmVyIHJlbmRlcmVkIGluIHJlc3BvbnNlIHRvIHNvbWUgdXNlciBpbnRlcmFjdGlvbiBvciBzdGF0ZSBjaGFuZ2UuYFxuICApO1xuICBsZXQgeyBtYXRjaGVzIH0gPSBSZWFjdDMudXNlQ29udGV4dChSb3V0ZUNvbnRleHQpO1xuICBsZXQgeyBwYXRobmFtZTogbG9jYXRpb25QYXRobmFtZSB9ID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcbiAgbGV0IHBhdGggPSByZXNvbHZlVG8oXG4gICAgdG8sXG4gICAgZ2V0UmVzb2x2ZVRvTWF0Y2hlcyhtYXRjaGVzKSxcbiAgICBsb2NhdGlvblBhdGhuYW1lLFxuICAgIHJlbGF0aXZlID09PSBcInBhdGhcIlxuICApO1xuICBsZXQganNvblBhdGggPSBKU09OLnN0cmluZ2lmeShwYXRoKTtcbiAgUmVhY3QzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbmF2aWdhdGUoSlNPTi5wYXJzZShqc29uUGF0aCksIHsgcmVwbGFjZTogcmVwbGFjZTIsIHN0YXRlLCByZWxhdGl2ZSB9KTtcbiAgfSwgW25hdmlnYXRlLCBqc29uUGF0aCwgcmVsYXRpdmUsIHJlcGxhY2UyLCBzdGF0ZV0pO1xuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIE91dGxldChwcm9wcykge1xuICByZXR1cm4gdXNlT3V0bGV0KHByb3BzLmNvbnRleHQpO1xufVxuZnVuY3Rpb24gUm91dGUoX3Byb3BzKSB7XG4gIGludmFyaWFudChcbiAgICBmYWxzZSxcbiAgICBgQSA8Um91dGU+IGlzIG9ubHkgZXZlciB0byBiZSB1c2VkIGFzIHRoZSBjaGlsZCBvZiA8Um91dGVzPiBlbGVtZW50LCBuZXZlciByZW5kZXJlZCBkaXJlY3RseS4gUGxlYXNlIHdyYXAgeW91ciA8Um91dGU+IGluIGEgPFJvdXRlcz4uYFxuICApO1xufVxuZnVuY3Rpb24gUm91dGVyKHtcbiAgYmFzZW5hbWU6IGJhc2VuYW1lUHJvcCA9IFwiL1wiLFxuICBjaGlsZHJlbiA9IG51bGwsXG4gIGxvY2F0aW9uOiBsb2NhdGlvblByb3AsXG4gIG5hdmlnYXRpb25UeXBlID0gXCJQT1BcIiAvKiBQb3AgKi8sXG4gIG5hdmlnYXRvcjogbmF2aWdhdG9yMixcbiAgc3RhdGljOiBzdGF0aWNQcm9wID0gZmFsc2Vcbn0pIHtcbiAgaW52YXJpYW50KFxuICAgICF1c2VJblJvdXRlckNvbnRleHQoKSxcbiAgICBgWW91IGNhbm5vdCByZW5kZXIgYSA8Um91dGVyPiBpbnNpZGUgYW5vdGhlciA8Um91dGVyPi4gWW91IHNob3VsZCBuZXZlciBoYXZlIG1vcmUgdGhhbiBvbmUgaW4geW91ciBhcHAuYFxuICApO1xuICBsZXQgYmFzZW5hbWUgPSBiYXNlbmFtZVByb3AucmVwbGFjZSgvXlxcLyovLCBcIi9cIik7XG4gIGxldCBuYXZpZ2F0aW9uQ29udGV4dCA9IFJlYWN0My51c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIG5hdmlnYXRvcjogbmF2aWdhdG9yMixcbiAgICAgIHN0YXRpYzogc3RhdGljUHJvcCxcbiAgICAgIGZ1dHVyZToge31cbiAgICB9KSxcbiAgICBbYmFzZW5hbWUsIG5hdmlnYXRvcjIsIHN0YXRpY1Byb3BdXG4gICk7XG4gIGlmICh0eXBlb2YgbG9jYXRpb25Qcm9wID09PSBcInN0cmluZ1wiKSB7XG4gICAgbG9jYXRpb25Qcm9wID0gcGFyc2VQYXRoKGxvY2F0aW9uUHJvcCk7XG4gIH1cbiAgbGV0IHtcbiAgICBwYXRobmFtZSA9IFwiL1wiLFxuICAgIHNlYXJjaCA9IFwiXCIsXG4gICAgaGFzaCA9IFwiXCIsXG4gICAgc3RhdGUgPSBudWxsLFxuICAgIGtleSA9IFwiZGVmYXVsdFwiXG4gIH0gPSBsb2NhdGlvblByb3A7XG4gIGxldCBsb2NhdGlvbkNvbnRleHQgPSBSZWFjdDMudXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IHRyYWlsaW5nUGF0aG5hbWUgPSBzdHJpcEJhc2VuYW1lKHBhdGhuYW1lLCBiYXNlbmFtZSk7XG4gICAgaWYgKHRyYWlsaW5nUGF0aG5hbWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBwYXRobmFtZTogdHJhaWxpbmdQYXRobmFtZSxcbiAgICAgICAgc2VhcmNoLFxuICAgICAgICBoYXNoLFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAga2V5XG4gICAgICB9LFxuICAgICAgbmF2aWdhdGlvblR5cGVcbiAgICB9O1xuICB9LCBbYmFzZW5hbWUsIHBhdGhuYW1lLCBzZWFyY2gsIGhhc2gsIHN0YXRlLCBrZXksIG5hdmlnYXRpb25UeXBlXSk7XG4gIHdhcm5pbmcoXG4gICAgbG9jYXRpb25Db250ZXh0ICE9IG51bGwsXG4gICAgYDxSb3V0ZXIgYmFzZW5hbWU9XCIke2Jhc2VuYW1lfVwiPiBpcyBub3QgYWJsZSB0byBtYXRjaCB0aGUgVVJMIFwiJHtwYXRobmFtZX0ke3NlYXJjaH0ke2hhc2h9XCIgYmVjYXVzZSBpdCBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBiYXNlbmFtZSwgc28gdGhlIDxSb3V0ZXI+IHdvbid0IHJlbmRlciBhbnl0aGluZy5gXG4gICk7XG4gIGlmIChsb2NhdGlvbkNvbnRleHQgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoTmF2aWdhdGlvbkNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IG5hdmlnYXRpb25Db250ZXh0IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDMuY3JlYXRlRWxlbWVudChMb2NhdGlvbkNvbnRleHQuUHJvdmlkZXIsIHsgY2hpbGRyZW4sIHZhbHVlOiBsb2NhdGlvbkNvbnRleHQgfSkpO1xufVxuZnVuY3Rpb24gUm91dGVzKHtcbiAgY2hpbGRyZW4sXG4gIGxvY2F0aW9uXG59KSB7XG4gIHJldHVybiB1c2VSb3V0ZXMoY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuKGNoaWxkcmVuKSwgbG9jYXRpb24pO1xufVxuZnVuY3Rpb24gQXdhaXQoe1xuICBjaGlsZHJlbixcbiAgZXJyb3JFbGVtZW50LFxuICByZXNvbHZlXG59KSB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoQXdhaXRFcnJvckJvdW5kYXJ5LCB7IHJlc29sdmUsIGVycm9yRWxlbWVudCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoUmVzb2x2ZUF3YWl0LCBudWxsLCBjaGlsZHJlbikpO1xufVxudmFyIEF3YWl0RXJyb3JCb3VuZGFyeSA9IGNsYXNzIGV4dGVuZHMgUmVhY3QzLkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7IGVycm9yOiBudWxsIH07XG4gIH1cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIHJldHVybiB7IGVycm9yIH07XG4gIH1cbiAgY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGVycm9ySW5mbykge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIjxBd2FpdD4gY2F1Z2h0IHRoZSBmb2xsb3dpbmcgZXJyb3IgZHVyaW5nIHJlbmRlclwiLFxuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckluZm9cbiAgICApO1xuICB9XG4gIHJlbmRlcigpIHtcbiAgICBsZXQgeyBjaGlsZHJlbiwgZXJyb3JFbGVtZW50LCByZXNvbHZlIH0gPSB0aGlzLnByb3BzO1xuICAgIGxldCBwcm9taXNlID0gbnVsbDtcbiAgICBsZXQgc3RhdHVzID0gMCAvKiBwZW5kaW5nICovO1xuICAgIGlmICghKHJlc29sdmUgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgc3RhdHVzID0gMSAvKiBzdWNjZXNzICovO1xuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb21pc2UsIFwiX3RyYWNrZWRcIiwgeyBnZXQ6ICgpID0+IHRydWUgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvbWlzZSwgXCJfZGF0YVwiLCB7IGdldDogKCkgPT4gcmVzb2x2ZSB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuZXJyb3IpIHtcbiAgICAgIHN0YXR1cyA9IDIgLyogZXJyb3IgKi87XG4gICAgICBsZXQgcmVuZGVyRXJyb3IgPSB0aGlzLnN0YXRlLmVycm9yO1xuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVqZWN0KCkuY2F0Y2goKCkgPT4ge1xuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvbWlzZSwgXCJfdHJhY2tlZFwiLCB7IGdldDogKCkgPT4gdHJ1ZSB9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9taXNlLCBcIl9lcnJvclwiLCB7IGdldDogKCkgPT4gcmVuZGVyRXJyb3IgfSk7XG4gICAgfSBlbHNlIGlmIChyZXNvbHZlLl90cmFja2VkKSB7XG4gICAgICBwcm9taXNlID0gcmVzb2x2ZTtcbiAgICAgIHN0YXR1cyA9IFwiX2Vycm9yXCIgaW4gcHJvbWlzZSA/IDIgLyogZXJyb3IgKi8gOiBcIl9kYXRhXCIgaW4gcHJvbWlzZSA/IDEgLyogc3VjY2VzcyAqLyA6IDAgLyogcGVuZGluZyAqLztcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdHVzID0gMCAvKiBwZW5kaW5nICovO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc29sdmUsIFwiX3RyYWNrZWRcIiwgeyBnZXQ6ICgpID0+IHRydWUgfSk7XG4gICAgICBwcm9taXNlID0gcmVzb2x2ZS50aGVuKFxuICAgICAgICAoZGF0YTIpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXNvbHZlLCBcIl9kYXRhXCIsIHsgZ2V0OiAoKSA9PiBkYXRhMiB9KSxcbiAgICAgICAgKGVycm9yKSA9PiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzb2x2ZSwgXCJfZXJyb3JcIiwgeyBnZXQ6ICgpID0+IGVycm9yIH0pXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoc3RhdHVzID09PSAyIC8qIGVycm9yICovICYmICFlcnJvckVsZW1lbnQpIHtcbiAgICAgIHRocm93IHByb21pc2UuX2Vycm9yO1xuICAgIH1cbiAgICBpZiAoc3RhdHVzID09PSAyIC8qIGVycm9yICovKSB7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KEF3YWl0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogcHJvbWlzZSwgY2hpbGRyZW46IGVycm9yRWxlbWVudCB9KTtcbiAgICB9XG4gICAgaWYgKHN0YXR1cyA9PT0gMSAvKiBzdWNjZXNzICovKSB7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KEF3YWl0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogcHJvbWlzZSwgY2hpbGRyZW4gfSk7XG4gICAgfVxuICAgIHRocm93IHByb21pc2U7XG4gIH1cbn07XG5mdW5jdGlvbiBSZXNvbHZlQXdhaXQoe1xuICBjaGlsZHJlblxufSkge1xuICBsZXQgZGF0YTIgPSB1c2VBc3luY1ZhbHVlKCk7XG4gIGxldCB0b1JlbmRlciA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gXCJmdW5jdGlvblwiID8gY2hpbGRyZW4oZGF0YTIpIDogY2hpbGRyZW47XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoUmVhY3QzLkZyYWdtZW50LCBudWxsLCB0b1JlbmRlcik7XG59XG5mdW5jdGlvbiBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4oY2hpbGRyZW4sIHBhcmVudFBhdGggPSBbXSkge1xuICBsZXQgcm91dGVzID0gW107XG4gIFJlYWN0My5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBpZiAoIVJlYWN0My5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgdHJlZVBhdGggPSBbLi4ucGFyZW50UGF0aCwgaW5kZXhdO1xuICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFJlYWN0My5GcmFnbWVudCkge1xuICAgICAgcm91dGVzLnB1c2guYXBwbHkoXG4gICAgICAgIHJvdXRlcyxcbiAgICAgICAgY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuKGVsZW1lbnQucHJvcHMuY2hpbGRyZW4sIHRyZWVQYXRoKVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaW52YXJpYW50KFxuICAgICAgZWxlbWVudC50eXBlID09PSBSb3V0ZSxcbiAgICAgIGBbJHt0eXBlb2YgZWxlbWVudC50eXBlID09PSBcInN0cmluZ1wiID8gZWxlbWVudC50eXBlIDogZWxlbWVudC50eXBlLm5hbWV9XSBpcyBub3QgYSA8Um91dGU+IGNvbXBvbmVudC4gQWxsIGNvbXBvbmVudCBjaGlsZHJlbiBvZiA8Um91dGVzPiBtdXN0IGJlIGEgPFJvdXRlPiBvciA8UmVhY3QuRnJhZ21lbnQ+YFxuICAgICk7XG4gICAgaW52YXJpYW50KFxuICAgICAgIWVsZW1lbnQucHJvcHMuaW5kZXggfHwgIWVsZW1lbnQucHJvcHMuY2hpbGRyZW4sXG4gICAgICBcIkFuIGluZGV4IHJvdXRlIGNhbm5vdCBoYXZlIGNoaWxkIHJvdXRlcy5cIlxuICAgICk7XG4gICAgbGV0IHJvdXRlID0ge1xuICAgICAgaWQ6IGVsZW1lbnQucHJvcHMuaWQgfHwgdHJlZVBhdGguam9pbihcIi1cIiksXG4gICAgICBjYXNlU2Vuc2l0aXZlOiBlbGVtZW50LnByb3BzLmNhc2VTZW5zaXRpdmUsXG4gICAgICBlbGVtZW50OiBlbGVtZW50LnByb3BzLmVsZW1lbnQsXG4gICAgICBDb21wb25lbnQ6IGVsZW1lbnQucHJvcHMuQ29tcG9uZW50LFxuICAgICAgaW5kZXg6IGVsZW1lbnQucHJvcHMuaW5kZXgsXG4gICAgICBwYXRoOiBlbGVtZW50LnByb3BzLnBhdGgsXG4gICAgICBsb2FkZXI6IGVsZW1lbnQucHJvcHMubG9hZGVyLFxuICAgICAgYWN0aW9uOiBlbGVtZW50LnByb3BzLmFjdGlvbixcbiAgICAgIGh5ZHJhdGVGYWxsYmFja0VsZW1lbnQ6IGVsZW1lbnQucHJvcHMuaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCxcbiAgICAgIEh5ZHJhdGVGYWxsYmFjazogZWxlbWVudC5wcm9wcy5IeWRyYXRlRmFsbGJhY2ssXG4gICAgICBlcnJvckVsZW1lbnQ6IGVsZW1lbnQucHJvcHMuZXJyb3JFbGVtZW50LFxuICAgICAgRXJyb3JCb3VuZGFyeTogZWxlbWVudC5wcm9wcy5FcnJvckJvdW5kYXJ5LFxuICAgICAgaGFzRXJyb3JCb3VuZGFyeTogZWxlbWVudC5wcm9wcy5oYXNFcnJvckJvdW5kYXJ5ID09PSB0cnVlIHx8IGVsZW1lbnQucHJvcHMuRXJyb3JCb3VuZGFyeSAhPSBudWxsIHx8IGVsZW1lbnQucHJvcHMuZXJyb3JFbGVtZW50ICE9IG51bGwsXG4gICAgICBzaG91bGRSZXZhbGlkYXRlOiBlbGVtZW50LnByb3BzLnNob3VsZFJldmFsaWRhdGUsXG4gICAgICBoYW5kbGU6IGVsZW1lbnQucHJvcHMuaGFuZGxlLFxuICAgICAgbGF6eTogZWxlbWVudC5wcm9wcy5sYXp5XG4gICAgfTtcbiAgICBpZiAoZWxlbWVudC5wcm9wcy5jaGlsZHJlbikge1xuICAgICAgcm91dGUuY2hpbGRyZW4gPSBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4oXG4gICAgICAgIGVsZW1lbnQucHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIHRyZWVQYXRoXG4gICAgICApO1xuICAgIH1cbiAgICByb3V0ZXMucHVzaChyb3V0ZSk7XG4gIH0pO1xuICByZXR1cm4gcm91dGVzO1xufVxudmFyIGNyZWF0ZVJvdXRlc0Zyb21FbGVtZW50cyA9IGNyZWF0ZVJvdXRlc0Zyb21DaGlsZHJlbjtcbmZ1bmN0aW9uIHJlbmRlck1hdGNoZXMobWF0Y2hlcykge1xuICByZXR1cm4gX3JlbmRlck1hdGNoZXMobWF0Y2hlcyk7XG59XG5cbi8vIGxpYi9kb20vbGliLnRzeFxuaW1wb3J0ICogYXMgUmVhY3QxMCBmcm9tIFwicmVhY3RcIjtcblxuLy8gbGliL2RvbS9kb20udHNcbnZhciBkZWZhdWx0TWV0aG9kID0gXCJnZXRcIjtcbnZhciBkZWZhdWx0RW5jVHlwZSA9IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCI7XG5mdW5jdGlvbiBpc0h0bWxFbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgdHlwZW9mIG9iamVjdC50YWdOYW1lID09PSBcInN0cmluZ1wiO1xufVxuZnVuY3Rpb24gaXNCdXR0b25FbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gaXNIdG1sRWxlbWVudChvYmplY3QpICYmIG9iamVjdC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiYnV0dG9uXCI7XG59XG5mdW5jdGlvbiBpc0Zvcm1FbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gaXNIdG1sRWxlbWVudChvYmplY3QpICYmIG9iamVjdC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiZm9ybVwiO1xufVxuZnVuY3Rpb24gaXNJbnB1dEVsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiBpc0h0bWxFbGVtZW50KG9iamVjdCkgJiYgb2JqZWN0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiO1xufVxuZnVuY3Rpb24gaXNNb2RpZmllZEV2ZW50KGV2ZW50KSB7XG4gIHJldHVybiAhIShldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5KTtcbn1cbmZ1bmN0aW9uIHNob3VsZFByb2Nlc3NMaW5rQ2xpY2soZXZlbnQsIHRhcmdldCkge1xuICByZXR1cm4gZXZlbnQuYnV0dG9uID09PSAwICYmIC8vIElnbm9yZSBldmVyeXRoaW5nIGJ1dCBsZWZ0IGNsaWNrc1xuICAoIXRhcmdldCB8fCB0YXJnZXQgPT09IFwiX3NlbGZcIikgJiYgLy8gTGV0IGJyb3dzZXIgaGFuZGxlIFwidGFyZ2V0PV9ibGFua1wiIGV0Yy5cbiAgIWlzTW9kaWZpZWRFdmVudChldmVudCk7XG59XG5mdW5jdGlvbiBjcmVhdGVTZWFyY2hQYXJhbXMoaW5pdCA9IFwiXCIpIHtcbiAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMoXG4gICAgdHlwZW9mIGluaXQgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheShpbml0KSB8fCBpbml0IGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zID8gaW5pdCA6IE9iamVjdC5rZXlzKGluaXQpLnJlZHVjZSgobWVtbzIsIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gaW5pdFtrZXldO1xuICAgICAgcmV0dXJuIG1lbW8yLmNvbmNhdChcbiAgICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5tYXAoKHYpID0+IFtrZXksIHZdKSA6IFtba2V5LCB2YWx1ZV1dXG4gICAgICApO1xuICAgIH0sIFtdKVxuICApO1xufVxuZnVuY3Rpb24gZ2V0U2VhcmNoUGFyYW1zRm9yTG9jYXRpb24obG9jYXRpb25TZWFyY2gsIGRlZmF1bHRTZWFyY2hQYXJhbXMpIHtcbiAgbGV0IHNlYXJjaFBhcmFtcyA9IGNyZWF0ZVNlYXJjaFBhcmFtcyhsb2NhdGlvblNlYXJjaCk7XG4gIGlmIChkZWZhdWx0U2VhcmNoUGFyYW1zKSB7XG4gICAgZGVmYXVsdFNlYXJjaFBhcmFtcy5mb3JFYWNoKChfLCBrZXkpID0+IHtcbiAgICAgIGlmICghc2VhcmNoUGFyYW1zLmhhcyhrZXkpKSB7XG4gICAgICAgIGRlZmF1bHRTZWFyY2hQYXJhbXMuZ2V0QWxsKGtleSkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICBzZWFyY2hQYXJhbXMuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gc2VhcmNoUGFyYW1zO1xufVxudmFyIF9mb3JtRGF0YVN1cHBvcnRzU3VibWl0dGVyID0gbnVsbDtcbmZ1bmN0aW9uIGlzRm9ybURhdGFTdWJtaXR0ZXJTdXBwb3J0ZWQoKSB7XG4gIGlmIChfZm9ybURhdGFTdXBwb3J0c1N1Ym1pdHRlciA9PT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBuZXcgRm9ybURhdGEoXG4gICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmb3JtXCIpLFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGlmIEZvcm1EYXRhIHN1cHBvcnRzIHRoZSBzdWJtaXR0ZXIgcGFyYW1ldGVyLCB0aGlzIHdpbGwgdGhyb3dcbiAgICAgICAgMFxuICAgICAgKTtcbiAgICAgIF9mb3JtRGF0YVN1cHBvcnRzU3VibWl0dGVyID0gZmFsc2U7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgX2Zvcm1EYXRhU3VwcG9ydHNTdWJtaXR0ZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gX2Zvcm1EYXRhU3VwcG9ydHNTdWJtaXR0ZXI7XG59XG52YXIgc3VwcG9ydGVkRm9ybUVuY1R5cGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1xuICBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLFxuICBcIm11bHRpcGFydC9mb3JtLWRhdGFcIixcbiAgXCJ0ZXh0L3BsYWluXCJcbl0pO1xuZnVuY3Rpb24gZ2V0Rm9ybUVuY1R5cGUoZW5jVHlwZSkge1xuICBpZiAoZW5jVHlwZSAhPSBudWxsICYmICFzdXBwb3J0ZWRGb3JtRW5jVHlwZXMuaGFzKGVuY1R5cGUpKSB7XG4gICAgd2FybmluZyhcbiAgICAgIGZhbHNlLFxuICAgICAgYFwiJHtlbmNUeXBlfVwiIGlzIG5vdCBhIHZhbGlkIFxcYGVuY1R5cGVcXGAgZm9yIFxcYDxGb3JtPlxcYC9cXGA8ZmV0Y2hlci5Gb3JtPlxcYCBhbmQgd2lsbCBkZWZhdWx0IHRvIFwiJHtkZWZhdWx0RW5jVHlwZX1cImBcbiAgICApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBlbmNUeXBlO1xufVxuZnVuY3Rpb24gZ2V0Rm9ybVN1Ym1pc3Npb25JbmZvKHRhcmdldCwgYmFzZW5hbWUpIHtcbiAgbGV0IG1ldGhvZDtcbiAgbGV0IGFjdGlvbjtcbiAgbGV0IGVuY1R5cGU7XG4gIGxldCBmb3JtRGF0YTtcbiAgbGV0IGJvZHk7XG4gIGlmIChpc0Zvcm1FbGVtZW50KHRhcmdldCkpIHtcbiAgICBsZXQgYXR0ciA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJhY3Rpb25cIik7XG4gICAgYWN0aW9uID0gYXR0ciA/IHN0cmlwQmFzZW5hbWUoYXR0ciwgYmFzZW5hbWUpIDogbnVsbDtcbiAgICBtZXRob2QgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKFwibWV0aG9kXCIpIHx8IGRlZmF1bHRNZXRob2Q7XG4gICAgZW5jVHlwZSA9IGdldEZvcm1FbmNUeXBlKHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJlbmN0eXBlXCIpKSB8fCBkZWZhdWx0RW5jVHlwZTtcbiAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSh0YXJnZXQpO1xuICB9IGVsc2UgaWYgKGlzQnV0dG9uRWxlbWVudCh0YXJnZXQpIHx8IGlzSW5wdXRFbGVtZW50KHRhcmdldCkgJiYgKHRhcmdldC50eXBlID09PSBcInN1Ym1pdFwiIHx8IHRhcmdldC50eXBlID09PSBcImltYWdlXCIpKSB7XG4gICAgbGV0IGZvcm0gPSB0YXJnZXQuZm9ybTtcbiAgICBpZiAoZm9ybSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW5ub3Qgc3VibWl0IGEgPGJ1dHRvbj4gb3IgPGlucHV0IHR5cGU9XCJzdWJtaXRcIj4gd2l0aG91dCBhIDxmb3JtPmBcbiAgICAgICk7XG4gICAgfVxuICAgIGxldCBhdHRyID0gdGFyZ2V0LmdldEF0dHJpYnV0ZShcImZvcm1hY3Rpb25cIikgfHwgZm9ybS5nZXRBdHRyaWJ1dGUoXCJhY3Rpb25cIik7XG4gICAgYWN0aW9uID0gYXR0ciA/IHN0cmlwQmFzZW5hbWUoYXR0ciwgYmFzZW5hbWUpIDogbnVsbDtcbiAgICBtZXRob2QgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKFwiZm9ybW1ldGhvZFwiKSB8fCBmb3JtLmdldEF0dHJpYnV0ZShcIm1ldGhvZFwiKSB8fCBkZWZhdWx0TWV0aG9kO1xuICAgIGVuY1R5cGUgPSBnZXRGb3JtRW5jVHlwZSh0YXJnZXQuZ2V0QXR0cmlidXRlKFwiZm9ybWVuY3R5cGVcIikpIHx8IGdldEZvcm1FbmNUeXBlKGZvcm0uZ2V0QXR0cmlidXRlKFwiZW5jdHlwZVwiKSkgfHwgZGVmYXVsdEVuY1R5cGU7XG4gICAgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoZm9ybSwgdGFyZ2V0KTtcbiAgICBpZiAoIWlzRm9ybURhdGFTdWJtaXR0ZXJTdXBwb3J0ZWQoKSkge1xuICAgICAgbGV0IHsgbmFtZSwgdHlwZSwgdmFsdWUgfSA9IHRhcmdldDtcbiAgICAgIGlmICh0eXBlID09PSBcImltYWdlXCIpIHtcbiAgICAgICAgbGV0IHByZWZpeCA9IG5hbWUgPyBgJHtuYW1lfS5gIDogXCJcIjtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGAke3ByZWZpeH14YCwgXCIwXCIpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYCR7cHJlZml4fXlgLCBcIjBcIik7XG4gICAgICB9IGVsc2UgaWYgKG5hbWUpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNIdG1sRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENhbm5vdCBzdWJtaXQgZWxlbWVudCB0aGF0IGlzIG5vdCA8Zm9ybT4sIDxidXR0b24+LCBvciA8aW5wdXQgdHlwZT1cInN1Ym1pdHxpbWFnZVwiPmBcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIG1ldGhvZCA9IGRlZmF1bHRNZXRob2Q7XG4gICAgYWN0aW9uID0gbnVsbDtcbiAgICBlbmNUeXBlID0gZGVmYXVsdEVuY1R5cGU7XG4gICAgYm9keSA9IHRhcmdldDtcbiAgfVxuICBpZiAoZm9ybURhdGEgJiYgZW5jVHlwZSA9PT0gXCJ0ZXh0L3BsYWluXCIpIHtcbiAgICBib2R5ID0gZm9ybURhdGE7XG4gICAgZm9ybURhdGEgPSB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIHsgYWN0aW9uLCBtZXRob2Q6IG1ldGhvZC50b0xvd2VyQ2FzZSgpLCBlbmNUeXBlLCBmb3JtRGF0YSwgYm9keSB9O1xufVxuXG4vLyBsaWIvZG9tL3Nzci9jb21wb25lbnRzLnRzeFxuaW1wb3J0ICogYXMgUmVhY3Q5IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBsaWIvZG9tL3Nzci9pbnZhcmlhbnQudHNcbmZ1bmN0aW9uIGludmFyaWFudDIodmFsdWUsIG1lc3NhZ2UpIHtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cblxuLy8gbGliL2RvbS9zc3Ivcm91dGVNb2R1bGVzLnRzXG5hc3luYyBmdW5jdGlvbiBsb2FkUm91dGVNb2R1bGUocm91dGUsIHJvdXRlTW9kdWxlc0NhY2hlKSB7XG4gIGlmIChyb3V0ZS5pZCBpbiByb3V0ZU1vZHVsZXNDYWNoZSkge1xuICAgIHJldHVybiByb3V0ZU1vZHVsZXNDYWNoZVtyb3V0ZS5pZF07XG4gIH1cbiAgdHJ5IHtcbiAgICBsZXQgcm91dGVNb2R1bGUgPSBhd2FpdCBpbXBvcnQoXG4gICAgICAvKiBAdml0ZS1pZ25vcmUgKi9cbiAgICAgIC8qIHdlYnBhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIHJvdXRlLm1vZHVsZVxuICAgICk7XG4gICAgcm91dGVNb2R1bGVzQ2FjaGVbcm91dGUuaWRdID0gcm91dGVNb2R1bGU7XG4gICAgcmV0dXJuIHJvdXRlTW9kdWxlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBgRXJyb3IgbG9hZGluZyByb3V0ZSBtb2R1bGUgXFxgJHtyb3V0ZS5tb2R1bGV9XFxgLCByZWxvYWRpbmcgcGFnZS4uLmBcbiAgICApO1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIGlmICh3aW5kb3cuX19yZWFjdFJvdXRlckNvbnRleHQgJiYgd2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LmlzU3BhTW9kZSAmJiAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgaW1wb3J0Lm1ldGEuaG90KSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7XG4gICAgfSk7XG4gIH1cbn1cblxuLy8gbGliL2RvbS9zc3IvbGlua3MudHNcbmZ1bmN0aW9uIGdldEtleWVkTGlua3NGb3JNYXRjaGVzKG1hdGNoZXMsIHJvdXRlTW9kdWxlcywgbWFuaWZlc3QpIHtcbiAgbGV0IGRlc2NyaXB0b3JzID0gbWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiB7XG4gICAgbGV0IG1vZHVsZSA9IHJvdXRlTW9kdWxlc1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgbGV0IHJvdXRlID0gbWFuaWZlc3Qucm91dGVzW21hdGNoLnJvdXRlLmlkXTtcbiAgICByZXR1cm4gW1xuICAgICAgcm91dGUgJiYgcm91dGUuY3NzID8gcm91dGUuY3NzLm1hcCgoaHJlZikgPT4gKHsgcmVsOiBcInN0eWxlc2hlZXRcIiwgaHJlZiB9KSkgOiBbXSxcbiAgICAgIG1vZHVsZT8ubGlua3M/LigpIHx8IFtdXG4gICAgXTtcbiAgfSkuZmxhdCgyKTtcbiAgbGV0IHByZWxvYWRzID0gZ2V0Q3VycmVudFBhZ2VNb2R1bGVQcmVsb2FkSHJlZnMobWF0Y2hlcywgbWFuaWZlc3QpO1xuICByZXR1cm4gZGVkdXBlTGlua0Rlc2NyaXB0b3JzKGRlc2NyaXB0b3JzLCBwcmVsb2Fkcyk7XG59XG5hc3luYyBmdW5jdGlvbiBwcmVmZXRjaFN0eWxlTGlua3Mocm91dGUsIHJvdXRlTW9kdWxlKSB7XG4gIGlmICghcm91dGUuY3NzICYmICFyb3V0ZU1vZHVsZS5saW5rcyB8fCAhaXNQcmVsb2FkU3VwcG9ydGVkKCkpIHJldHVybjtcbiAgbGV0IGRlc2NyaXB0b3JzID0gW107XG4gIGlmIChyb3V0ZS5jc3MpIHtcbiAgICBkZXNjcmlwdG9ycy5wdXNoKC4uLnJvdXRlLmNzcy5tYXAoKGhyZWYpID0+ICh7IHJlbDogXCJzdHlsZXNoZWV0XCIsIGhyZWYgfSkpKTtcbiAgfVxuICBpZiAocm91dGVNb2R1bGUubGlua3MpIHtcbiAgICBkZXNjcmlwdG9ycy5wdXNoKC4uLnJvdXRlTW9kdWxlLmxpbmtzKCkpO1xuICB9XG4gIGlmIChkZXNjcmlwdG9ycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgbGV0IHN0eWxlTGlua3MgPSBbXTtcbiAgZm9yIChsZXQgZGVzY3JpcHRvciBvZiBkZXNjcmlwdG9ycykge1xuICAgIGlmICghaXNQYWdlTGlua0Rlc2NyaXB0b3IoZGVzY3JpcHRvcikgJiYgZGVzY3JpcHRvci5yZWwgPT09IFwic3R5bGVzaGVldFwiKSB7XG4gICAgICBzdHlsZUxpbmtzLnB1c2goe1xuICAgICAgICAuLi5kZXNjcmlwdG9yLFxuICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICBhczogXCJzdHlsZVwiXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbGV0IG1hdGNoaW5nTGlua3MgPSBzdHlsZUxpbmtzLmZpbHRlcihcbiAgICAobGluaykgPT4gKCFsaW5rLm1lZGlhIHx8IHdpbmRvdy5tYXRjaE1lZGlhKGxpbmsubWVkaWEpLm1hdGNoZXMpICYmICFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBsaW5rW3JlbD1cInN0eWxlc2hlZXRcIl1baHJlZj1cIiR7bGluay5ocmVmfVwiXWApXG4gICk7XG4gIGF3YWl0IFByb21pc2UuYWxsKG1hdGNoaW5nTGlua3MubWFwKHByZWZldGNoU3R5bGVMaW5rKSk7XG59XG5hc3luYyBmdW5jdGlvbiBwcmVmZXRjaFN0eWxlTGluayhkZXNjcmlwdG9yKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gICAgT2JqZWN0LmFzc2lnbihsaW5rLCBkZXNjcmlwdG9yKTtcbiAgICBmdW5jdGlvbiByZW1vdmVMaW5rKCkge1xuICAgICAgaWYgKGRvY3VtZW50LmhlYWQuY29udGFpbnMobGluaykpIHtcbiAgICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGluay5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICByZW1vdmVMaW5rKCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfTtcbiAgICBsaW5rLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICByZW1vdmVMaW5rKCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfTtcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGlzUGFnZUxpbmtEZXNjcmlwdG9yKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgdHlwZW9mIG9iamVjdC5wYWdlID09PSBcInN0cmluZ1wiO1xufVxuZnVuY3Rpb24gaXNIdG1sTGlua0Rlc2NyaXB0b3Iob2JqZWN0KSB7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAob2JqZWN0LmhyZWYgPT0gbnVsbCkge1xuICAgIHJldHVybiBvYmplY3QucmVsID09PSBcInByZWxvYWRcIiAmJiB0eXBlb2Ygb2JqZWN0LmltYWdlU3JjU2V0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBvYmplY3QuaW1hZ2VTaXplcyA9PT0gXCJzdHJpbmdcIjtcbiAgfVxuICByZXR1cm4gdHlwZW9mIG9iamVjdC5yZWwgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIG9iamVjdC5ocmVmID09PSBcInN0cmluZ1wiO1xufVxuYXN5bmMgZnVuY3Rpb24gZ2V0S2V5ZWRQcmVmZXRjaExpbmtzKG1hdGNoZXMsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMpIHtcbiAgbGV0IGxpbmtzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgbWF0Y2hlcy5tYXAoYXN5bmMgKG1hdGNoKSA9PiB7XG4gICAgICBsZXQgcm91dGUgPSBtYW5pZmVzdC5yb3V0ZXNbbWF0Y2gucm91dGUuaWRdO1xuICAgICAgaWYgKHJvdXRlKSB7XG4gICAgICAgIGxldCBtb2QgPSBhd2FpdCBsb2FkUm91dGVNb2R1bGUocm91dGUsIHJvdXRlTW9kdWxlcyk7XG4gICAgICAgIHJldHVybiBtb2QubGlua3MgPyBtb2QubGlua3MoKSA6IFtdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pXG4gICk7XG4gIHJldHVybiBkZWR1cGVMaW5rRGVzY3JpcHRvcnMoXG4gICAgbGlua3MuZmxhdCgxKS5maWx0ZXIoaXNIdG1sTGlua0Rlc2NyaXB0b3IpLmZpbHRlcigobGluaykgPT4gbGluay5yZWwgPT09IFwic3R5bGVzaGVldFwiIHx8IGxpbmsucmVsID09PSBcInByZWxvYWRcIikubWFwKFxuICAgICAgKGxpbmspID0+IGxpbmsucmVsID09PSBcInN0eWxlc2hlZXRcIiA/IHsgLi4ubGluaywgcmVsOiBcInByZWZldGNoXCIsIGFzOiBcInN0eWxlXCIgfSA6IHsgLi4ubGluaywgcmVsOiBcInByZWZldGNoXCIgfVxuICAgIClcbiAgKTtcbn1cbmZ1bmN0aW9uIGdldE5ld01hdGNoZXNGb3JMaW5rcyhwYWdlLCBuZXh0TWF0Y2hlcywgY3VycmVudE1hdGNoZXMsIG1hbmlmZXN0LCBsb2NhdGlvbiwgbW9kZSkge1xuICBsZXQgaXNOZXcgPSAobWF0Y2gsIGluZGV4KSA9PiB7XG4gICAgaWYgKCFjdXJyZW50TWF0Y2hlc1tpbmRleF0pIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBtYXRjaC5yb3V0ZS5pZCAhPT0gY3VycmVudE1hdGNoZXNbaW5kZXhdLnJvdXRlLmlkO1xuICB9O1xuICBsZXQgbWF0Y2hQYXRoQ2hhbmdlZCA9IChtYXRjaCwgaW5kZXgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgLy8gcGFyYW0gY2hhbmdlLCAvdXNlcnMvMTIzIC0+IC91c2Vycy80NTZcbiAgICAgIGN1cnJlbnRNYXRjaGVzW2luZGV4XS5wYXRobmFtZSAhPT0gbWF0Y2gucGF0aG5hbWUgfHwgLy8gc3BsYXQgcGFyYW0gY2hhbmdlZCwgd2hpY2ggaXMgbm90IHByZXNlbnQgaW4gbWF0Y2gucGF0aFxuICAgICAgLy8gZS5nLiAvZmlsZXMvaW1hZ2VzL2F2YXRhci5qcGcgLT4gZmlsZXMvZmluYW5jZXMueGxzXG4gICAgICBjdXJyZW50TWF0Y2hlc1tpbmRleF0ucm91dGUucGF0aD8uZW5kc1dpdGgoXCIqXCIpICYmIGN1cnJlbnRNYXRjaGVzW2luZGV4XS5wYXJhbXNbXCIqXCJdICE9PSBtYXRjaC5wYXJhbXNbXCIqXCJdXG4gICAgKTtcbiAgfTtcbiAgaWYgKG1vZGUgPT09IFwiYXNzZXRzXCIpIHtcbiAgICByZXR1cm4gbmV4dE1hdGNoZXMuZmlsdGVyKFxuICAgICAgKG1hdGNoLCBpbmRleCkgPT4gaXNOZXcobWF0Y2gsIGluZGV4KSB8fCBtYXRjaFBhdGhDaGFuZ2VkKG1hdGNoLCBpbmRleClcbiAgICApO1xuICB9XG4gIGlmIChtb2RlID09PSBcImRhdGFcIikge1xuICAgIHJldHVybiBuZXh0TWF0Y2hlcy5maWx0ZXIoKG1hdGNoLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IG1hbmlmZXN0Um91dGUgPSBtYW5pZmVzdC5yb3V0ZXNbbWF0Y2gucm91dGUuaWRdO1xuICAgICAgaWYgKCFtYW5pZmVzdFJvdXRlIHx8ICFtYW5pZmVzdFJvdXRlLmhhc0xvYWRlcikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNOZXcobWF0Y2gsIGluZGV4KSB8fCBtYXRjaFBhdGhDaGFuZ2VkKG1hdGNoLCBpbmRleCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2gucm91dGUuc2hvdWxkUmV2YWxpZGF0ZSkge1xuICAgICAgICBsZXQgcm91dGVDaG9pY2UgPSBtYXRjaC5yb3V0ZS5zaG91bGRSZXZhbGlkYXRlKHtcbiAgICAgICAgICBjdXJyZW50VXJsOiBuZXcgVVJMKFxuICAgICAgICAgICAgbG9jYXRpb24ucGF0aG5hbWUgKyBsb2NhdGlvbi5zZWFyY2ggKyBsb2NhdGlvbi5oYXNoLFxuICAgICAgICAgICAgd2luZG93Lm9yaWdpblxuICAgICAgICAgICksXG4gICAgICAgICAgY3VycmVudFBhcmFtczogY3VycmVudE1hdGNoZXNbMF0/LnBhcmFtcyB8fCB7fSxcbiAgICAgICAgICBuZXh0VXJsOiBuZXcgVVJMKHBhZ2UsIHdpbmRvdy5vcmlnaW4pLFxuICAgICAgICAgIG5leHRQYXJhbXM6IG1hdGNoLnBhcmFtcyxcbiAgICAgICAgICBkZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHR5cGVvZiByb3V0ZUNob2ljZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICByZXR1cm4gcm91dGVDaG9pY2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBbXTtcbn1cbmZ1bmN0aW9uIGdldE1vZHVsZUxpbmtIcmVmcyhtYXRjaGVzLCBtYW5pZmVzdFBhdGNoKSB7XG4gIHJldHVybiBkZWR1cGVIcmVmcyhcbiAgICBtYXRjaGVzLm1hcCgobWF0Y2gpID0+IHtcbiAgICAgIGxldCByb3V0ZSA9IG1hbmlmZXN0UGF0Y2gucm91dGVzW21hdGNoLnJvdXRlLmlkXTtcbiAgICAgIGlmICghcm91dGUpIHJldHVybiBbXTtcbiAgICAgIGxldCBocmVmcyA9IFtyb3V0ZS5tb2R1bGVdO1xuICAgICAgaWYgKHJvdXRlLmltcG9ydHMpIHtcbiAgICAgICAgaHJlZnMgPSBocmVmcy5jb25jYXQocm91dGUuaW1wb3J0cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaHJlZnM7XG4gICAgfSkuZmxhdCgxKVxuICApO1xufVxuZnVuY3Rpb24gZ2V0Q3VycmVudFBhZ2VNb2R1bGVQcmVsb2FkSHJlZnMobWF0Y2hlcywgbWFuaWZlc3QpIHtcbiAgcmV0dXJuIGRlZHVwZUhyZWZzKFxuICAgIG1hdGNoZXMubWFwKChtYXRjaCkgPT4ge1xuICAgICAgbGV0IHJvdXRlID0gbWFuaWZlc3Qucm91dGVzW21hdGNoLnJvdXRlLmlkXTtcbiAgICAgIGlmICghcm91dGUpIHJldHVybiBbXTtcbiAgICAgIGxldCBocmVmcyA9IFtyb3V0ZS5tb2R1bGVdO1xuICAgICAgaWYgKHJvdXRlLmltcG9ydHMpIHtcbiAgICAgICAgaHJlZnMgPSBocmVmcy5jb25jYXQocm91dGUuaW1wb3J0cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaHJlZnM7XG4gICAgfSkuZmxhdCgxKVxuICApO1xufVxuZnVuY3Rpb24gZGVkdXBlSHJlZnMoaHJlZnMpIHtcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KGhyZWZzKV07XG59XG5mdW5jdGlvbiBzb3J0S2V5cyhvYmopIHtcbiAgbGV0IHNvcnRlZCA9IHt9O1xuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9iaikuc29ydCgpO1xuICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgIHNvcnRlZFtrZXldID0gb2JqW2tleV07XG4gIH1cbiAgcmV0dXJuIHNvcnRlZDtcbn1cbmZ1bmN0aW9uIGRlZHVwZUxpbmtEZXNjcmlwdG9ycyhkZXNjcmlwdG9ycywgcHJlbG9hZHMpIHtcbiAgbGV0IHNldCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBwcmVsb2Fkc1NldCA9IG5ldyBTZXQocHJlbG9hZHMpO1xuICByZXR1cm4gZGVzY3JpcHRvcnMucmVkdWNlKChkZWR1cGVkLCBkZXNjcmlwdG9yKSA9PiB7XG4gICAgbGV0IGFscmVhZHlNb2R1bGVQcmVsb2FkID0gcHJlbG9hZHMgJiYgIWlzUGFnZUxpbmtEZXNjcmlwdG9yKGRlc2NyaXB0b3IpICYmIGRlc2NyaXB0b3IuYXMgPT09IFwic2NyaXB0XCIgJiYgZGVzY3JpcHRvci5ocmVmICYmIHByZWxvYWRzU2V0LmhhcyhkZXNjcmlwdG9yLmhyZWYpO1xuICAgIGlmIChhbHJlYWR5TW9kdWxlUHJlbG9hZCkge1xuICAgICAgcmV0dXJuIGRlZHVwZWQ7XG4gICAgfVxuICAgIGxldCBrZXkgPSBKU09OLnN0cmluZ2lmeShzb3J0S2V5cyhkZXNjcmlwdG9yKSk7XG4gICAgaWYgKCFzZXQuaGFzKGtleSkpIHtcbiAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgIGRlZHVwZWQucHVzaCh7IGtleSwgbGluazogZGVzY3JpcHRvciB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZHVwZWQ7XG4gIH0sIFtdKTtcbn1cbnZhciBfaXNQcmVsb2FkU3VwcG9ydGVkO1xuZnVuY3Rpb24gaXNQcmVsb2FkU3VwcG9ydGVkKCkge1xuICBpZiAoX2lzUHJlbG9hZFN1cHBvcnRlZCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIF9pc1ByZWxvYWRTdXBwb3J0ZWQ7XG4gIH1cbiAgbGV0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gIF9pc1ByZWxvYWRTdXBwb3J0ZWQgPSBlbC5yZWxMaXN0LnN1cHBvcnRzKFwicHJlbG9hZFwiKTtcbiAgZWwgPSBudWxsO1xuICByZXR1cm4gX2lzUHJlbG9hZFN1cHBvcnRlZDtcbn1cblxuLy8gbGliL2RvbS9zc3IvbWFya3VwLnRzXG52YXIgRVNDQVBFX0xPT0tVUCA9IHtcbiAgXCImXCI6IFwiXFxcXHUwMDI2XCIsXG4gIFwiPlwiOiBcIlxcXFx1MDAzZVwiLFxuICBcIjxcIjogXCJcXFxcdTAwM2NcIixcbiAgXCJcXHUyMDI4XCI6IFwiXFxcXHUyMDI4XCIsXG4gIFwiXFx1MjAyOVwiOiBcIlxcXFx1MjAyOVwiXG59O1xudmFyIEVTQ0FQRV9SRUdFWCA9IC9bJj48XFx1MjAyOFxcdTIwMjldL2c7XG5mdW5jdGlvbiBlc2NhcGVIdG1sKGh0bWwpIHtcbiAgcmV0dXJuIGh0bWwucmVwbGFjZShFU0NBUEVfUkVHRVgsIChtYXRjaCkgPT4gRVNDQVBFX0xPT0tVUFttYXRjaF0pO1xufVxuZnVuY3Rpb24gY3JlYXRlSHRtbChodG1sKSB7XG4gIHJldHVybiB7IF9faHRtbDogaHRtbCB9O1xufVxuXG4vLyBsaWIvZG9tL3Nzci9zaW5nbGUtZmV0Y2gudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDQgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tIFwidHVyYm8tc3RyZWFtXCI7XG5cbi8vIGxpYi9kb20vc3NyL2RhdGEudHNcbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RJbml0KHJlcXVlc3QpIHtcbiAgbGV0IGluaXQgPSB7IHNpZ25hbDogcmVxdWVzdC5zaWduYWwgfTtcbiAgaWYgKHJlcXVlc3QubWV0aG9kICE9PSBcIkdFVFwiKSB7XG4gICAgaW5pdC5tZXRob2QgPSByZXF1ZXN0Lm1ldGhvZDtcbiAgICBsZXQgY29udGVudFR5cGUgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KFwiQ29udGVudC1UeXBlXCIpO1xuICAgIGlmIChjb250ZW50VHlwZSAmJiAvXFxiYXBwbGljYXRpb25cXC9qc29uXFxiLy50ZXN0KGNvbnRlbnRUeXBlKSkge1xuICAgICAgaW5pdC5oZWFkZXJzID0geyBcIkNvbnRlbnQtVHlwZVwiOiBjb250ZW50VHlwZSB9O1xuICAgICAgaW5pdC5ib2R5ID0gSlNPTi5zdHJpbmdpZnkoYXdhaXQgcmVxdWVzdC5qc29uKCkpO1xuICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgJiYgL1xcYnRleHRcXC9wbGFpblxcYi8udGVzdChjb250ZW50VHlwZSkpIHtcbiAgICAgIGluaXQuaGVhZGVycyA9IHsgXCJDb250ZW50LVR5cGVcIjogY29udGVudFR5cGUgfTtcbiAgICAgIGluaXQuYm9keSA9IGF3YWl0IHJlcXVlc3QudGV4dCgpO1xuICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgJiYgL1xcYmFwcGxpY2F0aW9uXFwveC13d3ctZm9ybS11cmxlbmNvZGVkXFxiLy50ZXN0KGNvbnRlbnRUeXBlKSkge1xuICAgICAgaW5pdC5ib2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhhd2FpdCByZXF1ZXN0LnRleHQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQuYm9keSA9IGF3YWl0IHJlcXVlc3QuZm9ybURhdGEoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluaXQ7XG59XG5cbi8vIGxpYi9kb20vc3NyL3NpbmdsZS1mZXRjaC50c3hcbnZhciBTaW5nbGVGZXRjaFJlZGlyZWN0U3ltYm9sID0gU3ltYm9sKFwiU2luZ2xlRmV0Y2hSZWRpcmVjdFwiKTtcbmZ1bmN0aW9uIFN0cmVhbVRyYW5zZmVyKHtcbiAgY29udGV4dCxcbiAgaWRlbnRpZmllcixcbiAgcmVhZGVyLFxuICB0ZXh0RGVjb2RlcixcbiAgbm9uY2Vcbn0pIHtcbiAgaWYgKCFjb250ZXh0LnJlbmRlck1ldGEgfHwgIWNvbnRleHQucmVuZGVyTWV0YS5kaWRSZW5kZXJTY3JpcHRzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCFjb250ZXh0LnJlbmRlck1ldGEuc3RyZWFtQ2FjaGUpIHtcbiAgICBjb250ZXh0LnJlbmRlck1ldGEuc3RyZWFtQ2FjaGUgPSB7fTtcbiAgfVxuICBsZXQgeyBzdHJlYW1DYWNoZSB9ID0gY29udGV4dC5yZW5kZXJNZXRhO1xuICBsZXQgcHJvbWlzZSA9IHN0cmVhbUNhY2hlW2lkZW50aWZpZXJdO1xuICBpZiAoIXByb21pc2UpIHtcbiAgICBwcm9taXNlID0gc3RyZWFtQ2FjaGVbaWRlbnRpZmllcl0gPSByZWFkZXIucmVhZCgpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgc3RyZWFtQ2FjaGVbaWRlbnRpZmllcl0ucmVzdWx0ID0ge1xuICAgICAgICBkb25lOiByZXN1bHQuZG9uZSxcbiAgICAgICAgdmFsdWU6IHRleHREZWNvZGVyLmRlY29kZShyZXN1bHQudmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgICB9O1xuICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICBzdHJlYW1DYWNoZVtpZGVudGlmaWVyXS5lcnJvciA9IGU7XG4gICAgfSk7XG4gIH1cbiAgaWYgKHByb21pc2UuZXJyb3IpIHtcbiAgICB0aHJvdyBwcm9taXNlLmVycm9yO1xuICB9XG4gIGlmIChwcm9taXNlLnJlc3VsdCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgcHJvbWlzZTtcbiAgfVxuICBsZXQgeyBkb25lLCB2YWx1ZSB9ID0gcHJvbWlzZS5yZXN1bHQ7XG4gIGxldCBzY3JpcHRUYWcgPSB2YWx1ZSA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDQuY3JlYXRlRWxlbWVudChcbiAgICBcInNjcmlwdFwiLFxuICAgIHtcbiAgICAgIG5vbmNlLFxuICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgX19odG1sOiBgd2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LnN0cmVhbUNvbnRyb2xsZXIuZW5xdWV1ZSgke2VzY2FwZUh0bWwoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gICAgICAgICl9KTtgXG4gICAgICB9XG4gICAgfVxuICApIDogbnVsbDtcbiAgaWYgKGRvbmUpIHtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0NC5jcmVhdGVFbGVtZW50KFJlYWN0NC5GcmFnbWVudCwgbnVsbCwgc2NyaXB0VGFnLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcInNjcmlwdFwiLFxuICAgICAge1xuICAgICAgICBub25jZSxcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICBfX2h0bWw6IGB3aW5kb3cuX19yZWFjdFJvdXRlckNvbnRleHQuc3RyZWFtQ29udHJvbGxlci5jbG9zZSgpO2BcbiAgICAgICAgfVxuICAgICAgfVxuICAgICkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q0LmNyZWF0ZUVsZW1lbnQoUmVhY3Q0LkZyYWdtZW50LCBudWxsLCBzY3JpcHRUYWcsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDQuY3JlYXRlRWxlbWVudChSZWFjdDQuU3VzcGVuc2UsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDQuY3JlYXRlRWxlbWVudChcbiAgICAgIFN0cmVhbVRyYW5zZmVyLFxuICAgICAge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyICsgMSxcbiAgICAgICAgcmVhZGVyLFxuICAgICAgICB0ZXh0RGVjb2RlcixcbiAgICAgICAgbm9uY2VcbiAgICAgIH1cbiAgICApKSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFNpbmdsZUZldGNoRGF0YVN0cmF0ZWd5KG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIGdldFJvdXRlcikge1xuICByZXR1cm4gYXN5bmMgKHsgcmVxdWVzdCwgbWF0Y2hlcywgZmV0Y2hlcktleSB9KSA9PiB7XG4gICAgaWYgKHJlcXVlc3QubWV0aG9kICE9PSBcIkdFVFwiKSB7XG4gICAgICByZXR1cm4gc2luZ2xlRmV0Y2hBY3Rpb25TdHJhdGVneShyZXF1ZXN0LCBtYXRjaGVzKTtcbiAgICB9XG4gICAgaWYgKGZldGNoZXJLZXkpIHtcbiAgICAgIHJldHVybiBzaW5nbGVGZXRjaExvYWRlckZldGNoZXJTdHJhdGVneShyZXF1ZXN0LCBtYXRjaGVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbmdsZUZldGNoTG9hZGVyTmF2aWdhdGlvblN0cmF0ZWd5KFxuICAgICAgbWFuaWZlc3QsXG4gICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICBnZXRSb3V0ZXIoKSxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtYXRjaGVzXG4gICAgKTtcbiAgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHNpbmdsZUZldGNoQWN0aW9uU3RyYXRlZ3kocmVxdWVzdCwgbWF0Y2hlcykge1xuICBsZXQgYWN0aW9uTWF0Y2ggPSBtYXRjaGVzLmZpbmQoKG0pID0+IG0uc2hvdWxkTG9hZCk7XG4gIGludmFyaWFudDIoYWN0aW9uTWF0Y2gsIFwiTm8gYWN0aW9uIG1hdGNoIGZvdW5kXCIpO1xuICBsZXQgYWN0aW9uU3RhdHVzID0gdm9pZCAwO1xuICBsZXQgcmVzdWx0ID0gYXdhaXQgYWN0aW9uTWF0Y2gucmVzb2x2ZShhc3luYyAoaGFuZGxlcikgPT4ge1xuICAgIGxldCByZXN1bHQyID0gYXdhaXQgaGFuZGxlcihhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgdXJsID0gc2luZ2xlRmV0Y2hVcmwocmVxdWVzdC51cmwpO1xuICAgICAgbGV0IGluaXQgPSBhd2FpdCBjcmVhdGVSZXF1ZXN0SW5pdChyZXF1ZXN0KTtcbiAgICAgIGxldCB7IGRhdGE6IGRhdGEyLCBzdGF0dXMgfSA9IGF3YWl0IGZldGNoQW5kRGVjb2RlKHVybCwgaW5pdCk7XG4gICAgICBhY3Rpb25TdGF0dXMgPSBzdGF0dXM7XG4gICAgICByZXR1cm4gdW53cmFwU2luZ2xlRmV0Y2hSZXN1bHQoXG4gICAgICAgIGRhdGEyLFxuICAgICAgICBhY3Rpb25NYXRjaC5yb3V0ZS5pZFxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0MjtcbiAgfSk7XG4gIGlmIChpc1Jlc3BvbnNlKHJlc3VsdC5yZXN1bHQpIHx8IGlzUm91dGVFcnJvclJlc3BvbnNlKHJlc3VsdC5yZXN1bHQpKSB7XG4gICAgcmV0dXJuIHsgW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTogcmVzdWx0IH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBbYWN0aW9uTWF0Y2gucm91dGUuaWRdOiB7XG4gICAgICB0eXBlOiByZXN1bHQudHlwZSxcbiAgICAgIHJlc3VsdDogZGF0YShyZXN1bHQucmVzdWx0LCBhY3Rpb25TdGF0dXMpXG4gICAgfVxuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gc2luZ2xlRmV0Y2hMb2FkZXJOYXZpZ2F0aW9uU3RyYXRlZ3kobWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgcm91dGVyLCByZXF1ZXN0LCBtYXRjaGVzKSB7XG4gIGxldCByb3V0ZXNQYXJhbXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgZm91bmRPcHRPdXRSb3V0ZSA9IGZhbHNlO1xuICBsZXQgcm91dGVEZmRzID0gbWF0Y2hlcy5tYXAoKCkgPT4gY3JlYXRlRGVmZXJyZWQyKCkpO1xuICBsZXQgcm91dGVzTG9hZGVkUHJvbWlzZSA9IFByb21pc2UuYWxsKHJvdXRlRGZkcy5tYXAoKGQpID0+IGQucHJvbWlzZSkpO1xuICBsZXQgc2luZ2xlRmV0Y2hEZmQgPSBjcmVhdGVEZWZlcnJlZDIoKTtcbiAgbGV0IHVybCA9IHN0cmlwSW5kZXhQYXJhbShzaW5nbGVGZXRjaFVybChyZXF1ZXN0LnVybCkpO1xuICBsZXQgaW5pdCA9IGF3YWl0IGNyZWF0ZVJlcXVlc3RJbml0KHJlcXVlc3QpO1xuICBsZXQgcmVzdWx0cyA9IHt9O1xuICBsZXQgcmVzb2x2ZVByb21pc2UgPSBQcm9taXNlLmFsbChcbiAgICBtYXRjaGVzLm1hcChcbiAgICAgIGFzeW5jIChtLCBpKSA9PiBtLnJlc29sdmUoYXN5bmMgKGhhbmRsZXIpID0+IHtcbiAgICAgICAgcm91dGVEZmRzW2ldLnJlc29sdmUoKTtcbiAgICAgICAgbGV0IG1hbmlmZXN0Um91dGUgPSBtYW5pZmVzdC5yb3V0ZXNbbS5yb3V0ZS5pZF07XG4gICAgICAgIGlmICghbS5zaG91bGRMb2FkKSB7XG4gICAgICAgICAgaWYgKCFyb3V0ZXIuc3RhdGUuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG0ucm91dGUuaWQgaW4gcm91dGVyLnN0YXRlLmxvYWRlckRhdGEgJiYgbWFuaWZlc3RSb3V0ZSAmJiBtYW5pZmVzdFJvdXRlLmhhc0xvYWRlciAmJiByb3V0ZU1vZHVsZXNbbS5yb3V0ZS5pZF0/LnNob3VsZFJldmFsaWRhdGUpIHtcbiAgICAgICAgICAgIGZvdW5kT3B0T3V0Um91dGUgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWFuaWZlc3RSb3V0ZSAmJiBtYW5pZmVzdFJvdXRlLmhhc0NsaWVudExvYWRlcikge1xuICAgICAgICAgIGlmIChtYW5pZmVzdFJvdXRlLmhhc0xvYWRlcikge1xuICAgICAgICAgICAgZm91bmRPcHRPdXRSb3V0ZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgZmV0Y2hTaW5nbGVMb2FkZXIoXG4gICAgICAgICAgICAgIGhhbmRsZXIsXG4gICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgaW5pdCxcbiAgICAgICAgICAgICAgbS5yb3V0ZS5pZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJlc3VsdHNbbS5yb3V0ZS5pZF0gPSB7IHR5cGU6IFwiZGF0YVwiLCByZXN1bHQgfTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXN1bHRzW20ucm91dGUuaWRdID0geyB0eXBlOiBcImVycm9yXCIsIHJlc3VsdDogZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hbmlmZXN0Um91dGUgJiYgbWFuaWZlc3RSb3V0ZS5oYXNMb2FkZXIpIHtcbiAgICAgICAgICByb3V0ZXNQYXJhbXMuYWRkKG0ucm91dGUuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGEyID0gYXdhaXQgc2luZ2xlRmV0Y2hEZmQucHJvbWlzZTtcbiAgICAgICAgICAgIHJldHVybiB1bndyYXBTaW5nbGVGZXRjaFJlc3VsdHMoZGF0YTIsIG0ucm91dGUuaWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlc3VsdHNbbS5yb3V0ZS5pZF0gPSB7XG4gICAgICAgICAgICB0eXBlOiBcImRhdGFcIixcbiAgICAgICAgICAgIHJlc3VsdFxuICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXN1bHRzW20ucm91dGUuaWRdID0ge1xuICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgICAgICAgcmVzdWx0OiBlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG4gIGF3YWl0IHJvdXRlc0xvYWRlZFByb21pc2U7XG4gIGlmICgoIXJvdXRlci5zdGF0ZS5pbml0aWFsaXplZCB8fCByb3V0ZXNQYXJhbXMuc2l6ZSA9PT0gMCkgJiYgIXdpbmRvdy5fX3JlYWN0Um91dGVySGRyQWN0aXZlKSB7XG4gICAgc2luZ2xlRmV0Y2hEZmQucmVzb2x2ZSh7fSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChmb3VuZE9wdE91dFJvdXRlICYmIHJvdXRlc1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChcbiAgICAgICAgICBcIl9yb3V0ZXNcIixcbiAgICAgICAgICBtYXRjaGVzLmZpbHRlcigobSkgPT4gcm91dGVzUGFyYW1zLmhhcyhtLnJvdXRlLmlkKSkubWFwKChtKSA9PiBtLnJvdXRlLmlkKS5qb2luKFwiLFwiKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgbGV0IGRhdGEyID0gYXdhaXQgZmV0Y2hBbmREZWNvZGUodXJsLCBpbml0KTtcbiAgICAgIHNpbmdsZUZldGNoRGZkLnJlc29sdmUoZGF0YTIuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc2luZ2xlRmV0Y2hEZmQucmVqZWN0KGUpO1xuICAgIH1cbiAgfVxuICBhd2FpdCByZXNvbHZlUHJvbWlzZTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5hc3luYyBmdW5jdGlvbiBzaW5nbGVGZXRjaExvYWRlckZldGNoZXJTdHJhdGVneShyZXF1ZXN0LCBtYXRjaGVzKSB7XG4gIGxldCBmZXRjaGVyTWF0Y2ggPSBtYXRjaGVzLmZpbmQoKG0pID0+IG0uc2hvdWxkTG9hZCk7XG4gIGludmFyaWFudDIoZmV0Y2hlck1hdGNoLCBcIk5vIGZldGNoZXIgbWF0Y2ggZm91bmRcIik7XG4gIGxldCByZXN1bHQgPSBhd2FpdCBmZXRjaGVyTWF0Y2gucmVzb2x2ZShhc3luYyAoaGFuZGxlcikgPT4ge1xuICAgIGxldCB1cmwgPSBzdHJpcEluZGV4UGFyYW0oc2luZ2xlRmV0Y2hVcmwocmVxdWVzdC51cmwpKTtcbiAgICBsZXQgaW5pdCA9IGF3YWl0IGNyZWF0ZVJlcXVlc3RJbml0KHJlcXVlc3QpO1xuICAgIHJldHVybiBmZXRjaFNpbmdsZUxvYWRlcihoYW5kbGVyLCB1cmwsIGluaXQsIGZldGNoZXJNYXRjaC5yb3V0ZS5pZCk7XG4gIH0pO1xuICByZXR1cm4geyBbZmV0Y2hlck1hdGNoLnJvdXRlLmlkXTogcmVzdWx0IH07XG59XG5mdW5jdGlvbiBmZXRjaFNpbmdsZUxvYWRlcihoYW5kbGVyLCB1cmwsIGluaXQsIHJvdXRlSWQpIHtcbiAgcmV0dXJuIGhhbmRsZXIoYXN5bmMgKCkgPT4ge1xuICAgIGxldCBzaW5nbGVMb2FkZXJVcmwgPSBuZXcgVVJMKHVybCk7XG4gICAgc2luZ2xlTG9hZGVyVXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJfcm91dGVzXCIsIHJvdXRlSWQpO1xuICAgIGxldCB7IGRhdGE6IGRhdGEyIH0gPSBhd2FpdCBmZXRjaEFuZERlY29kZShzaW5nbGVMb2FkZXJVcmwsIGluaXQpO1xuICAgIHJldHVybiB1bndyYXBTaW5nbGVGZXRjaFJlc3VsdHMoZGF0YTIsIHJvdXRlSWQpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHN0cmlwSW5kZXhQYXJhbSh1cmwpIHtcbiAgbGV0IGluZGV4VmFsdWVzID0gdXJsLnNlYXJjaFBhcmFtcy5nZXRBbGwoXCJpbmRleFwiKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoXCJpbmRleFwiKTtcbiAgbGV0IGluZGV4VmFsdWVzVG9LZWVwID0gW107XG4gIGZvciAobGV0IGluZGV4VmFsdWUgb2YgaW5kZXhWYWx1ZXMpIHtcbiAgICBpZiAoaW5kZXhWYWx1ZSkge1xuICAgICAgaW5kZXhWYWx1ZXNUb0tlZXAucHVzaChpbmRleFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgZm9yIChsZXQgdG9LZWVwIG9mIGluZGV4VmFsdWVzVG9LZWVwKSB7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB0b0tlZXApO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5mdW5jdGlvbiBzaW5nbGVGZXRjaFVybChyZXFVcmwpIHtcbiAgbGV0IHVybCA9IHR5cGVvZiByZXFVcmwgPT09IFwic3RyaW5nXCIgPyBuZXcgVVJMKFxuICAgIHJlcVVybCxcbiAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgZHVyaW5nIHRoZSBTU1IgZmxvdyB2aWEgUHJlZmV0Y2hQYWdlTGlua3NJbXBsIHNvXG4gICAgLy8gZG9uJ3QgYXNzdW1lIHdpbmRvdyBpcyBhdmFpbGFibGVcbiAgICB0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiID8gXCJzZXJ2ZXI6Ly9zaW5nbGVmZXRjaC9cIiA6IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5cbiAgKSA6IHJlcVVybDtcbiAgaWYgKHVybC5wYXRobmFtZSA9PT0gXCIvXCIpIHtcbiAgICB1cmwucGF0aG5hbWUgPSBcIl9yb290LmRhdGFcIjtcbiAgfSBlbHNlIHtcbiAgICB1cmwucGF0aG5hbWUgPSBgJHt1cmwucGF0aG5hbWUucmVwbGFjZSgvXFwvJC8sIFwiXCIpfS5kYXRhYDtcbiAgfVxuICByZXR1cm4gdXJsO1xufVxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBbmREZWNvZGUodXJsLCBpbml0KSB7XG4gIGxldCByZXMgPSBhd2FpdCBmZXRjaCh1cmwsIGluaXQpO1xuICBpZiAocmVzLnN0YXR1cyA9PT0gNDA0ICYmICFyZXMuaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJlc3BvbnNlXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yUmVzcG9uc2VJbXBsKDQwNCwgXCJOb3QgRm91bmRcIiwgdHJ1ZSk7XG4gIH1cbiAgaW52YXJpYW50MihyZXMuYm9keSwgXCJObyByZXNwb25zZSBib2R5IHRvIGRlY29kZVwiKTtcbiAgdHJ5IHtcbiAgICBsZXQgZGVjb2RlZCA9IGF3YWl0IGRlY29kZVZpYVR1cmJvU3RyZWFtKHJlcy5ib2R5LCB3aW5kb3cpO1xuICAgIHJldHVybiB7IHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogZGVjb2RlZC52YWx1ZSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGRlY29kZSB0dXJiby1zdHJlYW0gcmVzcG9uc2VcIik7XG4gIH1cbn1cbmZ1bmN0aW9uIGRlY29kZVZpYVR1cmJvU3RyZWFtKGJvZHksIGdsb2JhbDIpIHtcbiAgcmV0dXJuIGRlY29kZShib2R5LCB7XG4gICAgcGx1Z2luczogW1xuICAgICAgKHR5cGUsIC4uLnJlc3QpID0+IHtcbiAgICAgICAgaWYgKHR5cGUgPT09IFwiU2FuaXRpemVkRXJyb3JcIikge1xuICAgICAgICAgIGxldCBbbmFtZSwgbWVzc2FnZSwgc3RhY2tdID0gcmVzdDtcbiAgICAgICAgICBsZXQgQ29uc3RydWN0b3IgPSBFcnJvcjtcbiAgICAgICAgICBpZiAobmFtZSAmJiBuYW1lIGluIGdsb2JhbDIgJiYgdHlwZW9mIGdsb2JhbDJbbmFtZV0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgQ29uc3RydWN0b3IgPSBnbG9iYWwyW25hbWVdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZXJyb3IgPSBuZXcgQ29uc3RydWN0b3IobWVzc2FnZSk7XG4gICAgICAgICAgZXJyb3Iuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogZXJyb3IgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gXCJFcnJvclJlc3BvbnNlXCIpIHtcbiAgICAgICAgICBsZXQgW2RhdGEyLCBzdGF0dXMsIHN0YXR1c1RleHRdID0gcmVzdDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IG5ldyBFcnJvclJlc3BvbnNlSW1wbChzdGF0dXMsIHN0YXR1c1RleHQsIGRhdGEyKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09IFwiU2luZ2xlRmV0Y2hSZWRpcmVjdFwiKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHsgW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdOiByZXN0WzBdIH0gfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gXCJTaW5nbGVGZXRjaENsYXNzSW5zdGFuY2VcIikge1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiByZXN0WzBdIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09IFwiU2luZ2xlRmV0Y2hGYWxsYmFja1wiKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHZvaWQgMCB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9KTtcbn1cbmZ1bmN0aW9uIHVud3JhcFNpbmdsZUZldGNoUmVzdWx0cyhyZXN1bHRzLCByb3V0ZUlkKSB7XG4gIGxldCByZWRpcmVjdDIgPSByZXN1bHRzW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdO1xuICBpZiAocmVkaXJlY3QyKSB7XG4gICAgcmV0dXJuIHVud3JhcFNpbmdsZUZldGNoUmVzdWx0KHJlZGlyZWN0Miwgcm91dGVJZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHNbcm91dGVJZF0gIT09IHZvaWQgMCA/IHVud3JhcFNpbmdsZUZldGNoUmVzdWx0KHJlc3VsdHNbcm91dGVJZF0sIHJvdXRlSWQpIDogbnVsbDtcbn1cbmZ1bmN0aW9uIHVud3JhcFNpbmdsZUZldGNoUmVzdWx0KHJlc3VsdCwgcm91dGVJZCkge1xuICBpZiAoXCJlcnJvclwiIGluIHJlc3VsdCkge1xuICAgIHRocm93IHJlc3VsdC5lcnJvcjtcbiAgfSBlbHNlIGlmIChcInJlZGlyZWN0XCIgaW4gcmVzdWx0KSB7XG4gICAgbGV0IGhlYWRlcnMgPSB7fTtcbiAgICBpZiAocmVzdWx0LnJldmFsaWRhdGUpIHtcbiAgICAgIGhlYWRlcnNbXCJYLVJlbWl4LVJldmFsaWRhdGVcIl0gPSBcInllc1wiO1xuICAgIH1cbiAgICBpZiAocmVzdWx0LnJlbG9hZCkge1xuICAgICAgaGVhZGVyc1tcIlgtUmVtaXgtUmVsb2FkLURvY3VtZW50XCJdID0gXCJ5ZXNcIjtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5yZXBsYWNlKSB7XG4gICAgICBoZWFkZXJzW1wiWC1SZW1peC1SZXBsYWNlXCJdID0gXCJ5ZXNcIjtcbiAgICB9XG4gICAgdGhyb3cgcmVkaXJlY3QocmVzdWx0LnJlZGlyZWN0LCB7IHN0YXR1czogcmVzdWx0LnN0YXR1cywgaGVhZGVycyB9KTtcbiAgfSBlbHNlIGlmIChcImRhdGFcIiBpbiByZXN1bHQpIHtcbiAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyByZXNwb25zZSBmb3VuZCBmb3Igcm91dGVJZCBcIiR7cm91dGVJZH1cImApO1xuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVEZWZlcnJlZDIoKSB7XG4gIGxldCByZXNvbHZlO1xuICBsZXQgcmVqZWN0O1xuICBsZXQgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgIHJlc29sdmUgPSBhc3luYyAodmFsKSA9PiB7XG4gICAgICByZXModmFsKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfTtcbiAgICByZWplY3QgPSBhc3luYyAoZXJyb3IpID0+IHtcbiAgICAgIHJlaihlcnJvcik7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBwcm9taXNlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHByb21pc2UsXG4gICAgLy9AdHMtaWdub3JlXG4gICAgcmVzb2x2ZSxcbiAgICAvL0B0cy1pZ25vcmVcbiAgICByZWplY3RcbiAgfTtcbn1cblxuLy8gbGliL2RvbS9zc3IvZm9nLW9mLXdhci50c1xuaW1wb3J0ICogYXMgUmVhY3Q4IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBsaWIvZG9tL3Nzci9yb3V0ZXMudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDcgZnJvbSBcInJlYWN0XCI7XG5cbi8vIGxpYi9kb20vc3NyL2Vycm9yQm91bmRhcmllcy50c3hcbmltcG9ydCAqIGFzIFJlYWN0NSBmcm9tIFwicmVhY3RcIjtcbnZhciBSZW1peEVycm9yQm91bmRhcnkgPSBjbGFzcyBleHRlbmRzIFJlYWN0NS5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0geyBlcnJvcjogcHJvcHMuZXJyb3IgfHwgbnVsbCwgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uIH07XG4gIH1cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIHJldHVybiB7IGVycm9yIH07XG4gIH1cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICBpZiAoc3RhdGUubG9jYXRpb24gIT09IHByb3BzLmxvY2F0aW9uKSB7XG4gICAgICByZXR1cm4geyBlcnJvcjogcHJvcHMuZXJyb3IgfHwgbnVsbCwgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uIH07XG4gICAgfVxuICAgIHJldHVybiB7IGVycm9yOiBwcm9wcy5lcnJvciB8fCBzdGF0ZS5lcnJvciwgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uIH07XG4gIH1cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmVycm9yKSB7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFxuICAgICAgICBSZW1peFJvb3REZWZhdWx0RXJyb3JCb3VuZGFyeSxcbiAgICAgICAge1xuICAgICAgICAgIGVycm9yOiB0aGlzLnN0YXRlLmVycm9yLFxuICAgICAgICAgIGlzT3V0c2lkZVJlbWl4QXBwOiB0cnVlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgIH1cbiAgfVxufTtcbmZ1bmN0aW9uIFJlbWl4Um9vdERlZmF1bHRFcnJvckJvdW5kYXJ5KHtcbiAgZXJyb3IsXG4gIGlzT3V0c2lkZVJlbWl4QXBwXG59KSB7XG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICBsZXQgaGV5RGV2ZWxvcGVyID0gLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFxuICAgIFwic2NyaXB0XCIsXG4gICAge1xuICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgX19odG1sOiBgXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIFwiXFx1ezFGNEJGfSBIZXkgZGV2ZWxvcGVyIFxcdXsxRjQ0Qn0uIFlvdSBjYW4gcHJvdmlkZSBhIHdheSBiZXR0ZXIgVVggdGhhbiB0aGlzIHdoZW4geW91ciBhcHAgdGhyb3dzIGVycm9ycy4gQ2hlY2sgb3V0IGh0dHBzOi8vcmVtaXgucnVuL2d1aWRlcy9lcnJvcnMgZm9yIG1vcmUgaW5mb3JtYXRpb24uXCJcbiAgICAgICAgKTtcbiAgICAgIGBcbiAgICAgIH1cbiAgICB9XG4gICk7XG4gIGlmIChpc1JvdXRlRXJyb3JSZXNwb25zZShlcnJvcikpIHtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KEJvdW5kYXJ5U2hlbGwsIHsgdGl0bGU6IFwiVW5oYW5kbGVkIFRocm93biBSZXNwb25zZSFcIiB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXCJoMVwiLCB7IHN0eWxlOiB7IGZvbnRTaXplOiBcIjI0cHhcIiB9IH0sIGVycm9yLnN0YXR1cywgXCIgXCIsIGVycm9yLnN0YXR1c1RleHQpLCBoZXlEZXZlbG9wZXIpO1xuICB9XG4gIGxldCBlcnJvckluc3RhbmNlO1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIGVycm9ySW5zdGFuY2UgPSBlcnJvcjtcbiAgfSBlbHNlIHtcbiAgICBsZXQgZXJyb3JTdHJpbmcgPSBlcnJvciA9PSBudWxsID8gXCJVbmtub3duIEVycm9yXCIgOiB0eXBlb2YgZXJyb3IgPT09IFwib2JqZWN0XCIgJiYgXCJ0b1N0cmluZ1wiIGluIGVycm9yID8gZXJyb3IudG9TdHJpbmcoKSA6IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgICBlcnJvckluc3RhbmNlID0gbmV3IEVycm9yKGVycm9yU3RyaW5nKTtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFxuICAgIEJvdW5kYXJ5U2hlbGwsXG4gICAge1xuICAgICAgdGl0bGU6IFwiQXBwbGljYXRpb24gRXJyb3IhXCIsXG4gICAgICBpc091dHNpZGVSZW1peEFwcFxuICAgIH0sXG4gICAgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwiaDFcIiwgeyBzdHlsZTogeyBmb250U2l6ZTogXCIyNHB4XCIgfSB9LCBcIkFwcGxpY2F0aW9uIEVycm9yXCIpLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcbiAgICAgIFwicHJlXCIsXG4gICAgICB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgcGFkZGluZzogXCIycmVtXCIsXG4gICAgICAgICAgYmFja2dyb3VuZDogXCJoc2xhKDEwLCA1MCUsIDUwJSwgMC4xKVwiLFxuICAgICAgICAgIGNvbG9yOiBcInJlZFwiLFxuICAgICAgICAgIG92ZXJmbG93OiBcImF1dG9cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3JJbnN0YW5jZS5zdGFja1xuICAgICksXG4gICAgaGV5RGV2ZWxvcGVyXG4gICk7XG59XG5mdW5jdGlvbiBCb3VuZGFyeVNoZWxsKHtcbiAgdGl0bGUsXG4gIHJlbmRlclNjcmlwdHMsXG4gIGlzT3V0c2lkZVJlbWl4QXBwLFxuICBjaGlsZHJlblxufSkge1xuICBsZXQgeyByb3V0ZU1vZHVsZXMgfSA9IHVzZUZyYW1ld29ya0NvbnRleHQoKTtcbiAgaWYgKHJvdXRlTW9kdWxlcy5yb290Py5MYXlvdXQgJiYgIWlzT3V0c2lkZVJlbWl4QXBwKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIsIHsgbGFuZzogXCJlblwiIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcImhlYWRcIiwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwibWV0YVwiLCB7IGNoYXJTZXQ6IFwidXRmLThcIiB9KSwgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFxuICAgIFwibWV0YVwiLFxuICAgIHtcbiAgICAgIG5hbWU6IFwidmlld3BvcnRcIixcbiAgICAgIGNvbnRlbnQ6IFwid2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSx2aWV3cG9ydC1maXQ9Y292ZXJcIlxuICAgIH1cbiAgKSwgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwidGl0bGVcIiwgbnVsbCwgdGl0bGUpKSwgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwiYm9keVwiLCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXCJtYWluXCIsIHsgc3R5bGU6IHsgZm9udEZhbWlseTogXCJzeXN0ZW0tdWksIHNhbnMtc2VyaWZcIiwgcGFkZGluZzogXCIycmVtXCIgfSB9LCBjaGlsZHJlbiwgcmVuZGVyU2NyaXB0cyA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChTY3JpcHRzLCBudWxsKSA6IG51bGwpKSk7XG59XG5cbi8vIGxpYi9kb20vc3NyL2ZhbGxiYWNrLnRzeFxuaW1wb3J0ICogYXMgUmVhY3Q2IGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gUmVtaXhSb290RGVmYXVsdEh5ZHJhdGVGYWxsYmFjaygpIHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDYuY3JlYXRlRWxlbWVudChCb3VuZGFyeVNoZWxsLCB7IHRpdGxlOiBcIkxvYWRpbmcuLi5cIiwgcmVuZGVyU2NyaXB0czogdHJ1ZSB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3Q2LmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJzY3JpcHRcIixcbiAgICB7XG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICBfX2h0bWw6IGBcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgXCJcXHV7MUY0QkZ9IEhleSBkZXZlbG9wZXIgXFx1ezFGNDRCfS4gWW91IGNhbiBwcm92aWRlIGEgd2F5IGJldHRlciBVWCB0aGFuIHRoaXMgXCIgK1xuICAgICAgICAgICAgICAgIFwid2hlbiB5b3VyIGFwcCBpcyBsb2FkaW5nIEpTIG1vZHVsZXMgYW5kL29yIHJ1bm5pbmcgXFxgY2xpZW50TG9hZGVyXFxgIFwiICtcbiAgICAgICAgICAgICAgICBcImZ1bmN0aW9ucy4gQ2hlY2sgb3V0IGh0dHBzOi8vcmVtaXgucnVuL3JvdXRlL2h5ZHJhdGUtZmFsbGJhY2sgXCIgK1xuICAgICAgICAgICAgICAgIFwiZm9yIG1vcmUgaW5mb3JtYXRpb24uXCJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGBcbiAgICAgIH1cbiAgICB9XG4gICkpO1xufVxuXG4vLyBsaWIvZG9tL3Nzci9yb3V0ZXMudHN4XG5mdW5jdGlvbiBncm91cFJvdXRlc0J5UGFyZW50SWQobWFuaWZlc3QpIHtcbiAgbGV0IHJvdXRlcyA9IHt9O1xuICBPYmplY3QudmFsdWVzKG1hbmlmZXN0KS5mb3JFYWNoKChyb3V0ZSkgPT4ge1xuICAgIGlmIChyb3V0ZSkge1xuICAgICAgbGV0IHBhcmVudElkID0gcm91dGUucGFyZW50SWQgfHwgXCJcIjtcbiAgICAgIGlmICghcm91dGVzW3BhcmVudElkXSkge1xuICAgICAgICByb3V0ZXNbcGFyZW50SWRdID0gW107XG4gICAgICB9XG4gICAgICByb3V0ZXNbcGFyZW50SWRdLnB1c2gocm91dGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByb3V0ZXM7XG59XG5mdW5jdGlvbiBnZXRSb3V0ZUNvbXBvbmVudHMocm91dGUsIHJvdXRlTW9kdWxlLCBpc1NwYU1vZGUpIHtcbiAgbGV0IENvbXBvbmVudDQgPSBnZXRSb3V0ZU1vZHVsZUNvbXBvbmVudChyb3V0ZU1vZHVsZSk7XG4gIGxldCBIeWRyYXRlRmFsbGJhY2sgPSByb3V0ZU1vZHVsZS5IeWRyYXRlRmFsbGJhY2sgJiYgKCFpc1NwYU1vZGUgfHwgcm91dGUuaWQgPT09IFwicm9vdFwiKSA/IHJvdXRlTW9kdWxlLkh5ZHJhdGVGYWxsYmFjayA6IHJvdXRlLmlkID09PSBcInJvb3RcIiA/IFJlbWl4Um9vdERlZmF1bHRIeWRyYXRlRmFsbGJhY2sgOiB2b2lkIDA7XG4gIGxldCBFcnJvckJvdW5kYXJ5ID0gcm91dGVNb2R1bGUuRXJyb3JCb3VuZGFyeSA/IHJvdXRlTW9kdWxlLkVycm9yQm91bmRhcnkgOiByb3V0ZS5pZCA9PT0gXCJyb290XCIgPyAoKSA9PiAvKiBAX19QVVJFX18gKi8gUmVhY3Q3LmNyZWF0ZUVsZW1lbnQoUmVtaXhSb290RGVmYXVsdEVycm9yQm91bmRhcnksIHsgZXJyb3I6IHVzZVJvdXRlRXJyb3IoKSB9KSA6IHZvaWQgMDtcbiAgaWYgKHJvdXRlLmlkID09PSBcInJvb3RcIiAmJiByb3V0ZU1vZHVsZS5MYXlvdXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uQ29tcG9uZW50NCA/IHtcbiAgICAgICAgZWxlbWVudDogLyogQF9fUFVSRV9fICovIFJlYWN0Ny5jcmVhdGVFbGVtZW50KHJvdXRlTW9kdWxlLkxheW91dCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0Ny5jcmVhdGVFbGVtZW50KENvbXBvbmVudDQsIG51bGwpKVxuICAgICAgfSA6IHsgQ29tcG9uZW50OiBDb21wb25lbnQ0IH0sXG4gICAgICAuLi5FcnJvckJvdW5kYXJ5ID8ge1xuICAgICAgICBlcnJvckVsZW1lbnQ6IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDcuY3JlYXRlRWxlbWVudChyb3V0ZU1vZHVsZS5MYXlvdXQsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDcuY3JlYXRlRWxlbWVudChFcnJvckJvdW5kYXJ5LCBudWxsKSlcbiAgICAgIH0gOiB7IEVycm9yQm91bmRhcnkgfSxcbiAgICAgIC4uLkh5ZHJhdGVGYWxsYmFjayA/IHtcbiAgICAgICAgaHlkcmF0ZUZhbGxiYWNrRWxlbWVudDogLyogQF9fUFVSRV9fICovIFJlYWN0Ny5jcmVhdGVFbGVtZW50KHJvdXRlTW9kdWxlLkxheW91dCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0Ny5jcmVhdGVFbGVtZW50KEh5ZHJhdGVGYWxsYmFjaywgbnVsbCkpXG4gICAgICB9IDogeyBIeWRyYXRlRmFsbGJhY2sgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgQ29tcG9uZW50OiBDb21wb25lbnQ0LCBFcnJvckJvdW5kYXJ5LCBIeWRyYXRlRmFsbGJhY2sgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlclJvdXRlcyhtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCBmdXR1cmUsIGlzU3BhTW9kZSwgcGFyZW50SWQgPSBcIlwiLCByb3V0ZXNCeVBhcmVudElkID0gZ3JvdXBSb3V0ZXNCeVBhcmVudElkKG1hbmlmZXN0KSwgc3BhTW9kZUxhenlQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHsgQ29tcG9uZW50OiAoKSA9PiBudWxsIH0pKSB7XG4gIHJldHVybiAocm91dGVzQnlQYXJlbnRJZFtwYXJlbnRJZF0gfHwgW10pLm1hcCgocm91dGUpID0+IHtcbiAgICBsZXQgcm91dGVNb2R1bGUgPSByb3V0ZU1vZHVsZXNbcm91dGUuaWRdO1xuICAgIGludmFyaWFudDIoXG4gICAgICByb3V0ZU1vZHVsZSxcbiAgICAgIFwiTm8gYHJvdXRlTW9kdWxlYCBhdmFpbGFibGUgdG8gY3JlYXRlIHNlcnZlciByb3V0ZXNcIlxuICAgICk7XG4gICAgbGV0IGRhdGFSb3V0ZSA9IHtcbiAgICAgIC4uLmdldFJvdXRlQ29tcG9uZW50cyhyb3V0ZSwgcm91dGVNb2R1bGUsIGlzU3BhTW9kZSksXG4gICAgICBjYXNlU2Vuc2l0aXZlOiByb3V0ZS5jYXNlU2Vuc2l0aXZlLFxuICAgICAgaWQ6IHJvdXRlLmlkLFxuICAgICAgaW5kZXg6IHJvdXRlLmluZGV4LFxuICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgIGhhbmRsZTogcm91dGVNb2R1bGUuaGFuZGxlLFxuICAgICAgLy8gRm9yIFNQQSBNb2RlLCBhbGwgcm91dGVzIGFyZSBsYXp5IGV4Y2VwdCByb290LiAgSG93ZXZlciB3ZSB0ZWxsIHRoZVxuICAgICAgLy8gcm91dGVyIHJvb3QgaXMgYWxzbyBsYXp5IGhlcmUgdG9vIHNpbmNlIHdlIGRvbid0IG5lZWQgYSBmdWxsXG4gICAgICAvLyBpbXBsZW1lbnRhdGlvbiAtIHdlIGp1c3QgbmVlZCBhIGBsYXp5YCBwcm9wIHRvIHRlbGwgdGhlIFJSIHJlbmRlcmluZ1xuICAgICAgLy8gd2hlcmUgdG8gc3RvcCB3aGljaCBpcyBhbHdheXMgYXQgdGhlIHJvb3Qgcm91dGUgaW4gU1BBIG1vZGVcbiAgICAgIGxhenk6IGlzU3BhTW9kZSA/ICgpID0+IHNwYU1vZGVMYXp5UHJvbWlzZSA6IHZvaWQgMCxcbiAgICAgIC8vIEZvciBwYXJ0aWFsIGh5ZHJhdGlvbiByZW5kZXJpbmcsIHdlIG5lZWQgdG8gaW5kaWNhdGUgd2hlbiB0aGUgcm91dGVcbiAgICAgIC8vIGhhcyBhIGxvYWRlci9jbGllbnRMb2FkZXIsIGJ1dCBpdCB3b24ndCBldmVyIGJlIGNhbGxlZCBkdXJpbmcgdGhlIHN0YXRpY1xuICAgICAgLy8gcmVuZGVyLCBzbyBqdXN0IGdpdmUgaXQgYSBuby1vcCBmdW5jdGlvbiBzbyB3ZSBjYW4gcmVuZGVyIGRvd24gdG8gdGhlXG4gICAgICAvLyBwcm9wZXIgZmFsbGJhY2tcbiAgICAgIGxvYWRlcjogcm91dGUuaGFzTG9hZGVyIHx8IHJvdXRlLmhhc0NsaWVudExvYWRlciA/ICgpID0+IG51bGwgOiB2b2lkIDBcbiAgICAgIC8vIFdlIGRvbid0IG5lZWQgYWN0aW9uL3Nob3VsZFJldmFsaWRhdGUgb24gdGhlc2Ugcm91dGVzIHNpbmNlIHRoZXkncmVcbiAgICAgIC8vIGZvciBhIHN0YXRpYyByZW5kZXJcbiAgICB9O1xuICAgIGxldCBjaGlsZHJlbiA9IGNyZWF0ZVNlcnZlclJvdXRlcyhcbiAgICAgIG1hbmlmZXN0LFxuICAgICAgcm91dGVNb2R1bGVzLFxuICAgICAgZnV0dXJlLFxuICAgICAgaXNTcGFNb2RlLFxuICAgICAgcm91dGUuaWQsXG4gICAgICByb3V0ZXNCeVBhcmVudElkLFxuICAgICAgc3BhTW9kZUxhenlQcm9taXNlXG4gICAgKTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMCkgZGF0YVJvdXRlLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgcmV0dXJuIGRhdGFSb3V0ZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVDbGllbnRSb3V0ZXNXaXRoSE1SUmV2YWxpZGF0aW9uT3B0T3V0KG5lZWRzUmV2YWxpZGF0aW9uLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzQ2FjaGUsIGluaXRpYWxTdGF0ZSwgZnV0dXJlLCBpc1NwYU1vZGUpIHtcbiAgcmV0dXJuIGNyZWF0ZUNsaWVudFJvdXRlcyhcbiAgICBtYW5pZmVzdCxcbiAgICByb3V0ZU1vZHVsZXNDYWNoZSxcbiAgICBpbml0aWFsU3RhdGUsXG4gICAgaXNTcGFNb2RlLFxuICAgIFwiXCIsXG4gICAgZ3JvdXBSb3V0ZXNCeVBhcmVudElkKG1hbmlmZXN0KSxcbiAgICBuZWVkc1JldmFsaWRhdGlvblxuICApO1xufVxuZnVuY3Rpb24gcHJldmVudEludmFsaWRTZXJ2ZXJIYW5kbGVyQ2FsbCh0eXBlLCByb3V0ZSwgaXNTcGFNb2RlKSB7XG4gIGlmIChpc1NwYU1vZGUpIHtcbiAgICBsZXQgZm4yID0gdHlwZSA9PT0gXCJhY3Rpb25cIiA/IFwic2VydmVyQWN0aW9uKClcIiA6IFwic2VydmVyTG9hZGVyKClcIjtcbiAgICBsZXQgbXNnMiA9IGBZb3UgY2Fubm90IGNhbGwgJHtmbjJ9IGluIFNQQSBNb2RlIChyb3V0ZUlkOiBcIiR7cm91dGUuaWR9XCIpYDtcbiAgICBjb25zb2xlLmVycm9yKG1zZzIpO1xuICAgIHRocm93IG5ldyBFcnJvclJlc3BvbnNlSW1wbCg0MDAsIFwiQmFkIFJlcXVlc3RcIiwgbmV3IEVycm9yKG1zZzIpLCB0cnVlKTtcbiAgfVxuICBsZXQgZm4gPSB0eXBlID09PSBcImFjdGlvblwiID8gXCJzZXJ2ZXJBY3Rpb24oKVwiIDogXCJzZXJ2ZXJMb2FkZXIoKVwiO1xuICBsZXQgbXNnID0gYFlvdSBhcmUgdHJ5aW5nIHRvIGNhbGwgJHtmbn0gb24gYSByb3V0ZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBzZXJ2ZXIgJHt0eXBlfSAocm91dGVJZDogXCIke3JvdXRlLmlkfVwiKWA7XG4gIGlmICh0eXBlID09PSBcImxvYWRlclwiICYmICFyb3V0ZS5oYXNMb2FkZXIgfHwgdHlwZSA9PT0gXCJhY3Rpb25cIiAmJiAhcm91dGUuaGFzQWN0aW9uKSB7XG4gICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgIHRocm93IG5ldyBFcnJvclJlc3BvbnNlSW1wbCg0MDAsIFwiQmFkIFJlcXVlc3RcIiwgbmV3IEVycm9yKG1zZyksIHRydWUpO1xuICB9XG59XG5mdW5jdGlvbiBub0FjdGlvbkRlZmluZWRFcnJvcih0eXBlLCByb3V0ZUlkKSB7XG4gIGxldCBhcnRpY2xlID0gdHlwZSA9PT0gXCJjbGllbnRBY3Rpb25cIiA/IFwiYVwiIDogXCJhblwiO1xuICBsZXQgbXNnID0gYFJvdXRlIFwiJHtyb3V0ZUlkfVwiIGRvZXMgbm90IGhhdmUgJHthcnRpY2xlfSAke3R5cGV9LCBidXQgeW91IGFyZSB0cnlpbmcgdG8gc3VibWl0IHRvIGl0LiBUbyBmaXggdGhpcywgcGxlYXNlIGFkZCAke2FydGljbGV9IFxcYCR7dHlwZX1cXGAgZnVuY3Rpb24gdG8gdGhlIHJvdXRlYDtcbiAgY29uc29sZS5lcnJvcihtc2cpO1xuICB0aHJvdyBuZXcgRXJyb3JSZXNwb25zZUltcGwoNDA1LCBcIk1ldGhvZCBOb3QgQWxsb3dlZFwiLCBuZXcgRXJyb3IobXNnKSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBjcmVhdGVDbGllbnRSb3V0ZXMobWFuaWZlc3QsIHJvdXRlTW9kdWxlc0NhY2hlLCBpbml0aWFsU3RhdGUsIGlzU3BhTW9kZSwgcGFyZW50SWQgPSBcIlwiLCByb3V0ZXNCeVBhcmVudElkID0gZ3JvdXBSb3V0ZXNCeVBhcmVudElkKG1hbmlmZXN0KSwgbmVlZHNSZXZhbGlkYXRpb24pIHtcbiAgcmV0dXJuIChyb3V0ZXNCeVBhcmVudElkW3BhcmVudElkXSB8fCBbXSkubWFwKChyb3V0ZSkgPT4ge1xuICAgIGxldCByb3V0ZU1vZHVsZSA9IHJvdXRlTW9kdWxlc0NhY2hlW3JvdXRlLmlkXTtcbiAgICBmdW5jdGlvbiBmZXRjaFNlcnZlckhhbmRsZXIoc2luZ2xlRmV0Y2gpIHtcbiAgICAgIGludmFyaWFudDIoXG4gICAgICAgIHR5cGVvZiBzaW5nbGVGZXRjaCA9PT0gXCJmdW5jdGlvblwiLFxuICAgICAgICBcIk5vIHNpbmdsZSBmZXRjaCBmdW5jdGlvbiBhdmFpbGFibGUgZm9yIHJvdXRlIGhhbmRsZXJcIlxuICAgICAgKTtcbiAgICAgIHJldHVybiBzaW5nbGVGZXRjaCgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmZXRjaFNlcnZlckxvYWRlcihzaW5nbGVGZXRjaCkge1xuICAgICAgaWYgKCFyb3V0ZS5oYXNMb2FkZXIpIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJIYW5kbGVyKHNpbmdsZUZldGNoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmV0Y2hTZXJ2ZXJBY3Rpb24oc2luZ2xlRmV0Y2gpIHtcbiAgICAgIGlmICghcm91dGUuaGFzQWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5vQWN0aW9uRGVmaW5lZEVycm9yKFwiYWN0aW9uXCIsIHJvdXRlLmlkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmZXRjaFNlcnZlckhhbmRsZXIoc2luZ2xlRmV0Y2gpO1xuICAgIH1cbiAgICBhc3luYyBmdW5jdGlvbiBwcmVmZXRjaFN0eWxlc0FuZENhbGxIYW5kbGVyKGhhbmRsZXIpIHtcbiAgICAgIGxldCBjYWNoZWRNb2R1bGUgPSByb3V0ZU1vZHVsZXNDYWNoZVtyb3V0ZS5pZF07XG4gICAgICBsZXQgbGlua1ByZWZldGNoUHJvbWlzZSA9IGNhY2hlZE1vZHVsZSA/IHByZWZldGNoU3R5bGVMaW5rcyhyb3V0ZSwgY2FjaGVkTW9kdWxlKSA6IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZXIoKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IGxpbmtQcmVmZXRjaFByb21pc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBkYXRhUm91dGUgPSB7XG4gICAgICBpZDogcm91dGUuaWQsXG4gICAgICBpbmRleDogcm91dGUuaW5kZXgsXG4gICAgICBwYXRoOiByb3V0ZS5wYXRoXG4gICAgfTtcbiAgICBpZiAocm91dGVNb2R1bGUpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oZGF0YVJvdXRlLCB7XG4gICAgICAgIC4uLmRhdGFSb3V0ZSxcbiAgICAgICAgLi4uZ2V0Um91dGVDb21wb25lbnRzKHJvdXRlLCByb3V0ZU1vZHVsZSwgaXNTcGFNb2RlKSxcbiAgICAgICAgaGFuZGxlOiByb3V0ZU1vZHVsZS5oYW5kbGUsXG4gICAgICAgIHNob3VsZFJldmFsaWRhdGU6IGdldFNob3VsZFJldmFsaWRhdGVGdW5jdGlvbihcbiAgICAgICAgICByb3V0ZU1vZHVsZSxcbiAgICAgICAgICByb3V0ZS5pZCxcbiAgICAgICAgICBuZWVkc1JldmFsaWRhdGlvblxuICAgICAgICApXG4gICAgICB9KTtcbiAgICAgIGxldCBoYXNJbml0aWFsRGF0YSA9IGluaXRpYWxTdGF0ZSAmJiBpbml0aWFsU3RhdGUubG9hZGVyRGF0YSAmJiByb3V0ZS5pZCBpbiBpbml0aWFsU3RhdGUubG9hZGVyRGF0YTtcbiAgICAgIGxldCBpbml0aWFsRGF0YSA9IGhhc0luaXRpYWxEYXRhID8gaW5pdGlhbFN0YXRlPy5sb2FkZXJEYXRhPy5bcm91dGUuaWRdIDogdm9pZCAwO1xuICAgICAgbGV0IGhhc0luaXRpYWxFcnJvciA9IGluaXRpYWxTdGF0ZSAmJiBpbml0aWFsU3RhdGUuZXJyb3JzICYmIHJvdXRlLmlkIGluIGluaXRpYWxTdGF0ZS5lcnJvcnM7XG4gICAgICBsZXQgaW5pdGlhbEVycm9yID0gaGFzSW5pdGlhbEVycm9yID8gaW5pdGlhbFN0YXRlPy5lcnJvcnM/Lltyb3V0ZS5pZF0gOiB2b2lkIDA7XG4gICAgICBsZXQgaXNIeWRyYXRpb25SZXF1ZXN0ID0gbmVlZHNSZXZhbGlkYXRpb24gPT0gbnVsbCAmJiAocm91dGVNb2R1bGUuY2xpZW50TG9hZGVyPy5oeWRyYXRlID09PSB0cnVlIHx8ICFyb3V0ZS5oYXNMb2FkZXIpO1xuICAgICAgZGF0YVJvdXRlLmxvYWRlciA9IGFzeW5jICh7IHJlcXVlc3QsIHBhcmFtcyB9LCBzaW5nbGVGZXRjaCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBwcmVmZXRjaFN0eWxlc0FuZENhbGxIYW5kbGVyKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGludmFyaWFudDIoXG4gICAgICAgICAgICAgIHJvdXRlTW9kdWxlLFxuICAgICAgICAgICAgICBcIk5vIGByb3V0ZU1vZHVsZWAgYXZhaWxhYmxlIGZvciBjcml0aWNhbC1yb3V0ZSBsb2FkZXJcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghcm91dGVNb2R1bGUuY2xpZW50TG9hZGVyKSB7XG4gICAgICAgICAgICAgIGlmIChpc1NwYU1vZGUpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJMb2FkZXIoc2luZ2xlRmV0Y2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJvdXRlTW9kdWxlLmNsaWVudExvYWRlcih7XG4gICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgYXN5bmMgc2VydmVyTG9hZGVyKCkge1xuICAgICAgICAgICAgICAgIHByZXZlbnRJbnZhbGlkU2VydmVySGFuZGxlckNhbGwoXCJsb2FkZXJcIiwgcm91dGUsIGlzU3BhTW9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzSHlkcmF0aW9uUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgICAgaWYgKGhhc0luaXRpYWxEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbml0aWFsRGF0YTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChoYXNJbml0aWFsRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgaW5pdGlhbEVycm9yO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJMb2FkZXIoc2luZ2xlRmV0Y2gpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlzSHlkcmF0aW9uUmVxdWVzdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgZGF0YVJvdXRlLmxvYWRlci5oeWRyYXRlID0gc2hvdWxkSHlkcmF0ZVJvdXRlTG9hZGVyKFxuICAgICAgICByb3V0ZSxcbiAgICAgICAgcm91dGVNb2R1bGUsXG4gICAgICAgIGlzU3BhTW9kZVxuICAgICAgKTtcbiAgICAgIGRhdGFSb3V0ZS5hY3Rpb24gPSAoeyByZXF1ZXN0LCBwYXJhbXMgfSwgc2luZ2xlRmV0Y2gpID0+IHtcbiAgICAgICAgcmV0dXJuIHByZWZldGNoU3R5bGVzQW5kQ2FsbEhhbmRsZXIoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGludmFyaWFudDIoXG4gICAgICAgICAgICByb3V0ZU1vZHVsZSxcbiAgICAgICAgICAgIFwiTm8gYHJvdXRlTW9kdWxlYCBhdmFpbGFibGUgZm9yIGNyaXRpY2FsLXJvdXRlIGFjdGlvblwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIXJvdXRlTW9kdWxlLmNsaWVudEFjdGlvbikge1xuICAgICAgICAgICAgaWYgKGlzU3BhTW9kZSkge1xuICAgICAgICAgICAgICB0aHJvdyBub0FjdGlvbkRlZmluZWRFcnJvcihcImNsaWVudEFjdGlvblwiLCByb3V0ZS5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJBY3Rpb24oc2luZ2xlRmV0Y2gpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcm91dGVNb2R1bGUuY2xpZW50QWN0aW9uKHtcbiAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICBhc3luYyBzZXJ2ZXJBY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHByZXZlbnRJbnZhbGlkU2VydmVySGFuZGxlckNhbGwoXCJhY3Rpb25cIiwgcm91dGUsIGlzU3BhTW9kZSk7XG4gICAgICAgICAgICAgIHJldHVybiBmZXRjaFNlcnZlckFjdGlvbihzaW5nbGVGZXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFyb3V0ZS5oYXNDbGllbnRMb2FkZXIpIHtcbiAgICAgICAgZGF0YVJvdXRlLmxvYWRlciA9ICh7IHJlcXVlc3QgfSwgc2luZ2xlRmV0Y2gpID0+IHByZWZldGNoU3R5bGVzQW5kQ2FsbEhhbmRsZXIoKCkgPT4ge1xuICAgICAgICAgIGlmIChpc1NwYU1vZGUpIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgICAgICAgcmV0dXJuIGZldGNoU2VydmVyTG9hZGVyKHNpbmdsZUZldGNoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIXJvdXRlLmhhc0NsaWVudEFjdGlvbikge1xuICAgICAgICBkYXRhUm91dGUuYWN0aW9uID0gKHsgcmVxdWVzdCB9LCBzaW5nbGVGZXRjaCkgPT4gcHJlZmV0Y2hTdHlsZXNBbmRDYWxsSGFuZGxlcigoKSA9PiB7XG4gICAgICAgICAgaWYgKGlzU3BhTW9kZSkge1xuICAgICAgICAgICAgdGhyb3cgbm9BY3Rpb25EZWZpbmVkRXJyb3IoXCJjbGllbnRBY3Rpb25cIiwgcm91dGUuaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJBY3Rpb24oc2luZ2xlRmV0Y2gpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGRhdGFSb3V0ZS5sYXp5ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgbW9kID0gYXdhaXQgbG9hZFJvdXRlTW9kdWxlV2l0aEJsb2NraW5nTGlua3MoXG4gICAgICAgICAgcm91dGUsXG4gICAgICAgICAgcm91dGVNb2R1bGVzQ2FjaGVcbiAgICAgICAgKTtcbiAgICAgICAgbGV0IGxhenlSb3V0ZSA9IHsgLi4ubW9kIH07XG4gICAgICAgIGlmIChtb2QuY2xpZW50TG9hZGVyKSB7XG4gICAgICAgICAgbGV0IGNsaWVudExvYWRlciA9IG1vZC5jbGllbnRMb2FkZXI7XG4gICAgICAgICAgbGF6eVJvdXRlLmxvYWRlciA9IChhcmdzLCBzaW5nbGVGZXRjaCkgPT4gY2xpZW50TG9hZGVyKHtcbiAgICAgICAgICAgIC4uLmFyZ3MsXG4gICAgICAgICAgICBhc3luYyBzZXJ2ZXJMb2FkZXIoKSB7XG4gICAgICAgICAgICAgIHByZXZlbnRJbnZhbGlkU2VydmVySGFuZGxlckNhbGwoXCJsb2FkZXJcIiwgcm91dGUsIGlzU3BhTW9kZSk7XG4gICAgICAgICAgICAgIHJldHVybiBmZXRjaFNlcnZlckxvYWRlcihzaW5nbGVGZXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vZC5jbGllbnRBY3Rpb24pIHtcbiAgICAgICAgICBsZXQgY2xpZW50QWN0aW9uID0gbW9kLmNsaWVudEFjdGlvbjtcbiAgICAgICAgICBsYXp5Um91dGUuYWN0aW9uID0gKGFyZ3MsIHNpbmdsZUZldGNoKSA9PiBjbGllbnRBY3Rpb24oe1xuICAgICAgICAgICAgLi4uYXJncyxcbiAgICAgICAgICAgIGFzeW5jIHNlcnZlckFjdGlvbigpIHtcbiAgICAgICAgICAgICAgcHJldmVudEludmFsaWRTZXJ2ZXJIYW5kbGVyQ2FsbChcImFjdGlvblwiLCByb3V0ZSwgaXNTcGFNb2RlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGZldGNoU2VydmVyQWN0aW9uKHNpbmdsZUZldGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmxhenlSb3V0ZS5sb2FkZXIgPyB7IGxvYWRlcjogbGF6eVJvdXRlLmxvYWRlciB9IDoge30sXG4gICAgICAgICAgLi4ubGF6eVJvdXRlLmFjdGlvbiA/IHsgYWN0aW9uOiBsYXp5Um91dGUuYWN0aW9uIH0gOiB7fSxcbiAgICAgICAgICBoYXNFcnJvckJvdW5kYXJ5OiBsYXp5Um91dGUuaGFzRXJyb3JCb3VuZGFyeSxcbiAgICAgICAgICBzaG91bGRSZXZhbGlkYXRlOiBnZXRTaG91bGRSZXZhbGlkYXRlRnVuY3Rpb24oXG4gICAgICAgICAgICBsYXp5Um91dGUsXG4gICAgICAgICAgICByb3V0ZS5pZCxcbiAgICAgICAgICAgIG5lZWRzUmV2YWxpZGF0aW9uXG4gICAgICAgICAgKSxcbiAgICAgICAgICBoYW5kbGU6IGxhenlSb3V0ZS5oYW5kbGUsXG4gICAgICAgICAgLy8gTm8gbmVlZCB0byB3cmFwIHRoZXNlIGluIGxheW91dCBzaW5jZSB0aGUgcm9vdCByb3V0ZSBpcyBuZXZlclxuICAgICAgICAgIC8vIGxvYWRlZCB2aWEgcm91dGUubGF6eSgpXG4gICAgICAgICAgQ29tcG9uZW50OiBsYXp5Um91dGUuQ29tcG9uZW50LFxuICAgICAgICAgIEVycm9yQm91bmRhcnk6IGxhenlSb3V0ZS5FcnJvckJvdW5kYXJ5XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgY2hpbGRyZW4gPSBjcmVhdGVDbGllbnRSb3V0ZXMoXG4gICAgICBtYW5pZmVzdCxcbiAgICAgIHJvdXRlTW9kdWxlc0NhY2hlLFxuICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgaXNTcGFNb2RlLFxuICAgICAgcm91dGUuaWQsXG4gICAgICByb3V0ZXNCeVBhcmVudElkLFxuICAgICAgbmVlZHNSZXZhbGlkYXRpb25cbiAgICApO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSBkYXRhUm91dGUuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICByZXR1cm4gZGF0YVJvdXRlO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldFNob3VsZFJldmFsaWRhdGVGdW5jdGlvbihyb3V0ZSwgcm91dGVJZCwgbmVlZHNSZXZhbGlkYXRpb24pIHtcbiAgaWYgKG5lZWRzUmV2YWxpZGF0aW9uKSB7XG4gICAgcmV0dXJuIHdyYXBTaG91bGRSZXZhbGlkYXRlRm9ySGRyKFxuICAgICAgcm91dGVJZCxcbiAgICAgIHJvdXRlLnNob3VsZFJldmFsaWRhdGUsXG4gICAgICBuZWVkc1JldmFsaWRhdGlvblxuICAgICk7XG4gIH1cbiAgaWYgKHJvdXRlLnNob3VsZFJldmFsaWRhdGUpIHtcbiAgICBsZXQgZm4gPSByb3V0ZS5zaG91bGRSZXZhbGlkYXRlO1xuICAgIHJldHVybiAob3B0cykgPT4gZm4oeyAuLi5vcHRzLCBkZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gcm91dGUuc2hvdWxkUmV2YWxpZGF0ZTtcbn1cbmZ1bmN0aW9uIHdyYXBTaG91bGRSZXZhbGlkYXRlRm9ySGRyKHJvdXRlSWQsIHJvdXRlU2hvdWxkUmV2YWxpZGF0ZSwgbmVlZHNSZXZhbGlkYXRpb24pIHtcbiAgbGV0IGhhbmRsZWRSZXZhbGlkYXRpb24gPSBmYWxzZTtcbiAgcmV0dXJuIChhcmcpID0+IHtcbiAgICBpZiAoIWhhbmRsZWRSZXZhbGlkYXRpb24pIHtcbiAgICAgIGhhbmRsZWRSZXZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgcmV0dXJuIG5lZWRzUmV2YWxpZGF0aW9uLmhhcyhyb3V0ZUlkKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvdXRlU2hvdWxkUmV2YWxpZGF0ZSA/IHJvdXRlU2hvdWxkUmV2YWxpZGF0ZShhcmcpIDogYXJnLmRlZmF1bHRTaG91bGRSZXZhbGlkYXRlO1xuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gbG9hZFJvdXRlTW9kdWxlV2l0aEJsb2NraW5nTGlua3Mocm91dGUsIHJvdXRlTW9kdWxlcykge1xuICBsZXQgcm91dGVNb2R1bGUgPSBhd2FpdCBsb2FkUm91dGVNb2R1bGUocm91dGUsIHJvdXRlTW9kdWxlcyk7XG4gIGF3YWl0IHByZWZldGNoU3R5bGVMaW5rcyhyb3V0ZSwgcm91dGVNb2R1bGUpO1xuICByZXR1cm4ge1xuICAgIENvbXBvbmVudDogZ2V0Um91dGVNb2R1bGVDb21wb25lbnQocm91dGVNb2R1bGUpLFxuICAgIEVycm9yQm91bmRhcnk6IHJvdXRlTW9kdWxlLkVycm9yQm91bmRhcnksXG4gICAgY2xpZW50QWN0aW9uOiByb3V0ZU1vZHVsZS5jbGllbnRBY3Rpb24sXG4gICAgY2xpZW50TG9hZGVyOiByb3V0ZU1vZHVsZS5jbGllbnRMb2FkZXIsXG4gICAgaGFuZGxlOiByb3V0ZU1vZHVsZS5oYW5kbGUsXG4gICAgbGlua3M6IHJvdXRlTW9kdWxlLmxpbmtzLFxuICAgIG1ldGE6IHJvdXRlTW9kdWxlLm1ldGEsXG4gICAgc2hvdWxkUmV2YWxpZGF0ZTogcm91dGVNb2R1bGUuc2hvdWxkUmV2YWxpZGF0ZVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Um91dGVNb2R1bGVDb21wb25lbnQocm91dGVNb2R1bGUpIHtcbiAgaWYgKHJvdXRlTW9kdWxlLmRlZmF1bHQgPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDtcbiAgbGV0IGlzRW1wdHlPYmplY3QgPSB0eXBlb2Ygcm91dGVNb2R1bGUuZGVmYXVsdCA9PT0gXCJvYmplY3RcIiAmJiBPYmplY3Qua2V5cyhyb3V0ZU1vZHVsZS5kZWZhdWx0KS5sZW5ndGggPT09IDA7XG4gIGlmICghaXNFbXB0eU9iamVjdCkge1xuICAgIHJldHVybiByb3V0ZU1vZHVsZS5kZWZhdWx0O1xuICB9XG59XG5mdW5jdGlvbiBzaG91bGRIeWRyYXRlUm91dGVMb2FkZXIocm91dGUsIHJvdXRlTW9kdWxlLCBpc1NwYU1vZGUpIHtcbiAgcmV0dXJuIGlzU3BhTW9kZSAmJiByb3V0ZS5pZCAhPT0gXCJyb290XCIgfHwgcm91dGVNb2R1bGUuY2xpZW50TG9hZGVyICE9IG51bGwgJiYgKHJvdXRlTW9kdWxlLmNsaWVudExvYWRlci5oeWRyYXRlID09PSB0cnVlIHx8IHJvdXRlLmhhc0xvYWRlciAhPT0gdHJ1ZSk7XG59XG5cbi8vIGxpYi9kb20vc3NyL2ZvZy1vZi13YXIudHNcbnZhciBuZXh0UGF0aHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xudmFyIGRpc2NvdmVyZWRQYXRoc01heFNpemUgPSAxZTM7XG52YXIgZGlzY292ZXJlZFBhdGhzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbnZhciBVUkxfTElNSVQgPSA3NjgwO1xuZnVuY3Rpb24gaXNGb2dPZldhckVuYWJsZWQoaXNTcGFNb2RlKSB7XG4gIHJldHVybiAhaXNTcGFNb2RlO1xufVxuZnVuY3Rpb24gZ2V0UGFydGlhbE1hbmlmZXN0KG1hbmlmZXN0LCByb3V0ZXIpIHtcbiAgbGV0IHJvdXRlSWRzID0gbmV3IFNldChyb3V0ZXIuc3RhdGUubWF0Y2hlcy5tYXAoKG0pID0+IG0ucm91dGUuaWQpKTtcbiAgbGV0IHNlZ21lbnRzID0gcm91dGVyLnN0YXRlLmxvY2F0aW9uLnBhdGhuYW1lLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbik7XG4gIGxldCBwYXRocyA9IFtcIi9cIl07XG4gIHNlZ21lbnRzLnBvcCgpO1xuICB3aGlsZSAoc2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgIHBhdGhzLnB1c2goYC8ke3NlZ21lbnRzLmpvaW4oXCIvXCIpfWApO1xuICAgIHNlZ21lbnRzLnBvcCgpO1xuICB9XG4gIHBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICBsZXQgbWF0Y2hlcyA9IG1hdGNoUm91dGVzKHJvdXRlci5yb3V0ZXMsIHBhdGgsIHJvdXRlci5iYXNlbmFtZSk7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIG1hdGNoZXMuZm9yRWFjaCgobSkgPT4gcm91dGVJZHMuYWRkKG0ucm91dGUuaWQpKTtcbiAgICB9XG4gIH0pO1xuICBsZXQgaW5pdGlhbFJvdXRlcyA9IFsuLi5yb3V0ZUlkc10ucmVkdWNlKFxuICAgIChhY2MsIGlkKSA9PiBPYmplY3QuYXNzaWduKGFjYywgeyBbaWRdOiBtYW5pZmVzdC5yb3V0ZXNbaWRdIH0pLFxuICAgIHt9XG4gICk7XG4gIHJldHVybiB7XG4gICAgLi4ubWFuaWZlc3QsXG4gICAgcm91dGVzOiBpbml0aWFsUm91dGVzXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXRjaFJvdXRlc09uTmF2aWdhdGlvbkZ1bmN0aW9uKG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIGlzU3BhTW9kZSwgYmFzZW5hbWUpIHtcbiAgaWYgKCFpc0ZvZ09mV2FyRW5hYmxlZChpc1NwYU1vZGUpKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICByZXR1cm4gYXN5bmMgKHsgcGF0aCwgcGF0Y2ggfSkgPT4ge1xuICAgIGlmIChkaXNjb3ZlcmVkUGF0aHMuaGFzKHBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IGZldGNoQW5kQXBwbHlNYW5pZmVzdFBhdGNoZXMoXG4gICAgICBbcGF0aF0sXG4gICAgICBtYW5pZmVzdCxcbiAgICAgIHJvdXRlTW9kdWxlcyxcbiAgICAgIGlzU3BhTW9kZSxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgcGF0Y2hcbiAgICApO1xuICB9O1xufVxuZnVuY3Rpb24gdXNlRm9nT0ZXYXJEaXNjb3Zlcnkocm91dGVyLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCBpc1NwYU1vZGUpIHtcbiAgUmVhY3Q4LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0ZvZ09mV2FyRW5hYmxlZChpc1NwYU1vZGUpIHx8IG5hdmlnYXRvci5jb25uZWN0aW9uPy5zYXZlRGF0YSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWdpc3RlckVsZW1lbnQoZWwpIHtcbiAgICAgIGxldCBwYXRoID0gZWwudGFnTmFtZSA9PT0gXCJGT1JNXCIgPyBlbC5nZXRBdHRyaWJ1dGUoXCJhY3Rpb25cIikgOiBlbC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpO1xuICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCB1cmwgPSBuZXcgVVJMKHBhdGgsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pO1xuICAgICAgaWYgKCFkaXNjb3ZlcmVkUGF0aHMuaGFzKHVybC5wYXRobmFtZSkpIHtcbiAgICAgICAgbmV4dFBhdGhzLmFkZCh1cmwucGF0aG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBmdW5jdGlvbiBmZXRjaFBhdGNoZXMoKSB7XG4gICAgICBsZXQgbGF6eVBhdGhzID0gQXJyYXkuZnJvbShuZXh0UGF0aHMua2V5cygpKS5maWx0ZXIoKHBhdGgpID0+IHtcbiAgICAgICAgaWYgKGRpc2NvdmVyZWRQYXRocy5oYXMocGF0aCkpIHtcbiAgICAgICAgICBuZXh0UGF0aHMuZGVsZXRlKHBhdGgpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGxhenlQYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZmV0Y2hBbmRBcHBseU1hbmlmZXN0UGF0Y2hlcyhcbiAgICAgICAgICBsYXp5UGF0aHMsXG4gICAgICAgICAgbWFuaWZlc3QsXG4gICAgICAgICAgcm91dGVNb2R1bGVzLFxuICAgICAgICAgIGlzU3BhTW9kZSxcbiAgICAgICAgICByb3V0ZXIuYmFzZW5hbWUsXG4gICAgICAgICAgcm91dGVyLnBhdGNoUm91dGVzXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggbWFuaWZlc3QgcGF0Y2hlc1wiLCBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKFwiYVtkYXRhLWRpc2NvdmVyXSwgZm9ybVtkYXRhLWRpc2NvdmVyXVwiKS5mb3JFYWNoKChlbCkgPT4gcmVnaXN0ZXJFbGVtZW50KGVsKSk7XG4gICAgZmV0Y2hQYXRjaGVzKCk7XG4gICAgbGV0IGRlYm91bmNlZEZldGNoUGF0Y2hlcyA9IGRlYm91bmNlKGZldGNoUGF0Y2hlcywgMTAwKTtcbiAgICBmdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFO1xuICAgIH1cbiAgICBsZXQgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigocmVjb3JkcykgPT4ge1xuICAgICAgbGV0IGVsZW1lbnRzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICAgIHJlY29yZHMuZm9yRWFjaCgocikgPT4ge1xuICAgICAgICBbci50YXJnZXQsIC4uLnIuYWRkZWROb2Rlc10uZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgIGlmICghaXNFbGVtZW50KG5vZGUpKSByZXR1cm47XG4gICAgICAgICAgaWYgKG5vZGUudGFnTmFtZSA9PT0gXCJBXCIgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWRpc2NvdmVyXCIpKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5hZGQobm9kZSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChub2RlLnRhZ05hbWUgPT09IFwiRk9STVwiICYmIG5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YS1kaXNjb3ZlclwiKSkge1xuICAgICAgICAgICAgZWxlbWVudHMuYWRkKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZS50YWdOYW1lICE9PSBcIkFcIikge1xuICAgICAgICAgICAgbm9kZS5xdWVyeVNlbGVjdG9yQWxsKFwiYVtkYXRhLWRpc2NvdmVyXSwgZm9ybVtkYXRhLWRpc2NvdmVyXVwiKS5mb3JFYWNoKChlbCkgPT4gZWxlbWVudHMuYWRkKGVsKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWwpID0+IHJlZ2lzdGVyRWxlbWVudChlbCkpO1xuICAgICAgZGVib3VuY2VkRmV0Y2hQYXRjaGVzKCk7XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbXCJkYXRhLWRpc2NvdmVyXCIsIFwiaHJlZlwiLCBcImFjdGlvblwiXVxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0sIFtpc1NwYU1vZGUsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIHJvdXRlcl0pO1xufVxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBbmRBcHBseU1hbmlmZXN0UGF0Y2hlcyhwYXRocywgbWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgaXNTcGFNb2RlLCBiYXNlbmFtZSwgcGF0Y2hSb3V0ZXMpIHtcbiAgbGV0IG1hbmlmZXN0UGF0aCA9IGAke2Jhc2VuYW1lICE9IG51bGwgPyBiYXNlbmFtZSA6IFwiL1wifS9fX21hbmlmZXN0YC5yZXBsYWNlKFxuICAgIC9cXC8rL2csXG4gICAgXCIvXCJcbiAgKTtcbiAgbGV0IHVybCA9IG5ldyBVUkwobWFuaWZlc3RQYXRoLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgcGF0aHMuc29ydCgpLmZvckVhY2goKHBhdGgpID0+IHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwicFwiLCBwYXRoKSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwidmVyc2lvblwiLCBtYW5pZmVzdC52ZXJzaW9uKTtcbiAgaWYgKHVybC50b1N0cmluZygpLmxlbmd0aCA+IFVSTF9MSU1JVCkge1xuICAgIG5leHRQYXRocy5jbGVhcigpO1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgcmVzID0gYXdhaXQgZmV0Y2godXJsKTtcbiAgaWYgKCFyZXMub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gKTtcbiAgfSBlbHNlIGlmIChyZXMuc3RhdHVzID49IDQwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihhd2FpdCByZXMudGV4dCgpKTtcbiAgfVxuICBsZXQgc2VydmVyUGF0Y2hlcyA9IGF3YWl0IHJlcy5qc29uKCk7XG4gIGxldCBrbm93blJvdXRlcyA9IG5ldyBTZXQoT2JqZWN0LmtleXMobWFuaWZlc3Qucm91dGVzKSk7XG4gIGxldCBwYXRjaGVzID0gT2JqZWN0LnZhbHVlcyhzZXJ2ZXJQYXRjaGVzKS5yZWR1Y2UoKGFjYywgcm91dGUpID0+IHtcbiAgICBpZiAocm91dGUgJiYgIWtub3duUm91dGVzLmhhcyhyb3V0ZS5pZCkpIHtcbiAgICAgIGFjY1tyb3V0ZS5pZF0gPSByb3V0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICBPYmplY3QuYXNzaWduKG1hbmlmZXN0LnJvdXRlcywgcGF0Y2hlcyk7XG4gIHBhdGhzLmZvckVhY2goKHApID0+IGFkZFRvRmlmb1F1ZXVlKHAsIGRpc2NvdmVyZWRQYXRocykpO1xuICBsZXQgcGFyZW50SWRzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgT2JqZWN0LnZhbHVlcyhwYXRjaGVzKS5mb3JFYWNoKChwYXRjaCkgPT4ge1xuICAgIGlmIChwYXRjaCAmJiAoIXBhdGNoLnBhcmVudElkIHx8ICFwYXRjaGVzW3BhdGNoLnBhcmVudElkXSkpIHtcbiAgICAgIHBhcmVudElkcy5hZGQocGF0Y2gucGFyZW50SWQpO1xuICAgIH1cbiAgfSk7XG4gIHBhcmVudElkcy5mb3JFYWNoKFxuICAgIChwYXJlbnRJZCkgPT4gcGF0Y2hSb3V0ZXMoXG4gICAgICBwYXJlbnRJZCB8fCBudWxsLFxuICAgICAgY3JlYXRlQ2xpZW50Um91dGVzKHBhdGNoZXMsIHJvdXRlTW9kdWxlcywgbnVsbCwgaXNTcGFNb2RlLCBwYXJlbnRJZClcbiAgICApXG4gICk7XG59XG5mdW5jdGlvbiBhZGRUb0ZpZm9RdWV1ZShwYXRoLCBxdWV1ZSkge1xuICBpZiAocXVldWUuc2l6ZSA+PSBkaXNjb3ZlcmVkUGF0aHNNYXhTaXplKSB7XG4gICAgbGV0IGZpcnN0ID0gcXVldWUudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgIHF1ZXVlLmRlbGV0ZShmaXJzdCk7XG4gIH1cbiAgcXVldWUuYWRkKHBhdGgpO1xufVxuZnVuY3Rpb24gZGVib3VuY2UoY2FsbGJhY2ssIHdhaXQpIHtcbiAgbGV0IHRpbWVvdXRJZDtcbiAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgIHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IGNhbGxiYWNrKC4uLmFyZ3MpLCB3YWl0KTtcbiAgfTtcbn1cblxuLy8gbGliL2RvbS9zc3IvY29tcG9uZW50cy50c3hcbmZ1bmN0aW9uIHVzZURhdGFSb3V0ZXJDb250ZXh0MigpIHtcbiAgbGV0IGNvbnRleHQgPSBSZWFjdDkudXNlQ29udGV4dChEYXRhUm91dGVyQ29udGV4dCk7XG4gIGludmFyaWFudDIoXG4gICAgY29udGV4dCxcbiAgICBcIllvdSBtdXN0IHJlbmRlciB0aGlzIGVsZW1lbnQgaW5zaWRlIGEgPERhdGFSb3V0ZXJDb250ZXh0LlByb3ZpZGVyPiBlbGVtZW50XCJcbiAgKTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiB1c2VEYXRhUm91dGVyU3RhdGVDb250ZXh0KCkge1xuICBsZXQgY29udGV4dCA9IFJlYWN0OS51c2VDb250ZXh0KERhdGFSb3V0ZXJTdGF0ZUNvbnRleHQpO1xuICBpbnZhcmlhbnQyKFxuICAgIGNvbnRleHQsXG4gICAgXCJZb3UgbXVzdCByZW5kZXIgdGhpcyBlbGVtZW50IGluc2lkZSBhIDxEYXRhUm91dGVyU3RhdGVDb250ZXh0LlByb3ZpZGVyPiBlbGVtZW50XCJcbiAgKTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgRnJhbWV3b3JrQ29udGV4dCA9IFJlYWN0OS5jcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5GcmFtZXdvcmtDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJGcmFtZXdvcmtDb250ZXh0XCI7XG5mdW5jdGlvbiB1c2VGcmFtZXdvcmtDb250ZXh0KCkge1xuICBsZXQgY29udGV4dCA9IFJlYWN0OS51c2VDb250ZXh0KEZyYW1ld29ya0NvbnRleHQpO1xuICBpbnZhcmlhbnQyKFxuICAgIGNvbnRleHQsXG4gICAgXCJZb3UgbXVzdCByZW5kZXIgdGhpcyBlbGVtZW50IGluc2lkZSBhIDxIeWRyYXRlZFJvdXRlcj4gZWxlbWVudFwiXG4gICk7XG4gIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gdXNlUHJlZmV0Y2hCZWhhdmlvcihwcmVmZXRjaCwgdGhlaXJFbGVtZW50UHJvcHMpIHtcbiAgbGV0IGZyYW1ld29ya0NvbnRleHQgPSBSZWFjdDkudXNlQ29udGV4dChGcmFtZXdvcmtDb250ZXh0KTtcbiAgbGV0IFttYXliZVByZWZldGNoLCBzZXRNYXliZVByZWZldGNoXSA9IFJlYWN0OS51c2VTdGF0ZShmYWxzZSk7XG4gIGxldCBbc2hvdWxkUHJlZmV0Y2gsIHNldFNob3VsZFByZWZldGNoXSA9IFJlYWN0OS51c2VTdGF0ZShmYWxzZSk7XG4gIGxldCB7IG9uRm9jdXMsIG9uQmx1ciwgb25Nb3VzZUVudGVyLCBvbk1vdXNlTGVhdmUsIG9uVG91Y2hTdGFydCB9ID0gdGhlaXJFbGVtZW50UHJvcHM7XG4gIGxldCByZWYgPSBSZWFjdDkudXNlUmVmKG51bGwpO1xuICBSZWFjdDkudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJlZmV0Y2ggPT09IFwicmVuZGVyXCIpIHtcbiAgICAgIHNldFNob3VsZFByZWZldGNoKHRydWUpO1xuICAgIH1cbiAgICBpZiAocHJlZmV0Y2ggPT09IFwidmlld3BvcnRcIikge1xuICAgICAgbGV0IGNhbGxiYWNrID0gKGVudHJpZXMpID0+IHtcbiAgICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICAgIHNldFNob3VsZFByZWZldGNoKGVudHJ5LmlzSW50ZXJzZWN0aW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgbGV0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCB7IHRocmVzaG9sZDogMC41IH0pO1xuICAgICAgaWYgKHJlZi5jdXJyZW50KSBvYnNlcnZlci5vYnNlcnZlKHJlZi5jdXJyZW50KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbcHJlZmV0Y2hdKTtcbiAgUmVhY3Q5LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1heWJlUHJlZmV0Y2gpIHtcbiAgICAgIGxldCBpZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTaG91bGRQcmVmZXRjaCh0cnVlKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQoaWQpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFttYXliZVByZWZldGNoXSk7XG4gIGxldCBzZXRJbnRlbnQgPSAoKSA9PiB7XG4gICAgc2V0TWF5YmVQcmVmZXRjaCh0cnVlKTtcbiAgfTtcbiAgbGV0IGNhbmNlbEludGVudCA9ICgpID0+IHtcbiAgICBzZXRNYXliZVByZWZldGNoKGZhbHNlKTtcbiAgICBzZXRTaG91bGRQcmVmZXRjaChmYWxzZSk7XG4gIH07XG4gIGlmICghZnJhbWV3b3JrQ29udGV4dCkge1xuICAgIHJldHVybiBbZmFsc2UsIHJlZiwge31dO1xuICB9XG4gIGlmIChwcmVmZXRjaCAhPT0gXCJpbnRlbnRcIikge1xuICAgIHJldHVybiBbc2hvdWxkUHJlZmV0Y2gsIHJlZiwge31dO1xuICB9XG4gIHJldHVybiBbXG4gICAgc2hvdWxkUHJlZmV0Y2gsXG4gICAgcmVmLFxuICAgIHtcbiAgICAgIG9uRm9jdXM6IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uRm9jdXMsIHNldEludGVudCksXG4gICAgICBvbkJsdXI6IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uQmx1ciwgY2FuY2VsSW50ZW50KSxcbiAgICAgIG9uTW91c2VFbnRlcjogY29tcG9zZUV2ZW50SGFuZGxlcnMob25Nb3VzZUVudGVyLCBzZXRJbnRlbnQpLFxuICAgICAgb25Nb3VzZUxlYXZlOiBjb21wb3NlRXZlbnRIYW5kbGVycyhvbk1vdXNlTGVhdmUsIGNhbmNlbEludGVudCksXG4gICAgICBvblRvdWNoU3RhcnQ6IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uVG91Y2hTdGFydCwgc2V0SW50ZW50KVxuICAgIH1cbiAgXTtcbn1cbmZ1bmN0aW9uIGNvbXBvc2VFdmVudEhhbmRsZXJzKHRoZWlySGFuZGxlciwgb3VySGFuZGxlcikge1xuICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgdGhlaXJIYW5kbGVyICYmIHRoZWlySGFuZGxlcihldmVudCk7XG4gICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICBvdXJIYW5kbGVyKGV2ZW50KTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVNYXRjaGVzKG1hdGNoZXMsIGVycm9ycywgaXNTcGFNb2RlKSB7XG4gIGlmIChpc1NwYU1vZGUgJiYgIWlzSHlkcmF0ZWQpIHtcbiAgICByZXR1cm4gW21hdGNoZXNbMF1dO1xuICB9XG4gIGlmIChlcnJvcnMpIHtcbiAgICBsZXQgZXJyb3JJZHggPSBtYXRjaGVzLmZpbmRJbmRleCgobSkgPT4gZXJyb3JzW20ucm91dGUuaWRdICE9PSB2b2lkIDApO1xuICAgIHJldHVybiBtYXRjaGVzLnNsaWNlKDAsIGVycm9ySWR4ICsgMSk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXM7XG59XG5mdW5jdGlvbiBMaW5rcygpIHtcbiAgbGV0IHsgaXNTcGFNb2RlLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCBjcml0aWNhbENzcyB9ID0gdXNlRnJhbWV3b3JrQ29udGV4dCgpO1xuICBsZXQgeyBlcnJvcnMsIG1hdGNoZXM6IHJvdXRlck1hdGNoZXMgfSA9IHVzZURhdGFSb3V0ZXJTdGF0ZUNvbnRleHQoKTtcbiAgbGV0IG1hdGNoZXMgPSBnZXRBY3RpdmVNYXRjaGVzKHJvdXRlck1hdGNoZXMsIGVycm9ycywgaXNTcGFNb2RlKTtcbiAgbGV0IGtleWVkTGlua3MgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBnZXRLZXllZExpbmtzRm9yTWF0Y2hlcyhtYXRjaGVzLCByb3V0ZU1vZHVsZXMsIG1hbmlmZXN0KSxcbiAgICBbbWF0Y2hlcywgcm91dGVNb2R1bGVzLCBtYW5pZmVzdF1cbiAgKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChSZWFjdDkuRnJhZ21lbnQsIG51bGwsIGNyaXRpY2FsQ3NzID8gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgeyBkYW5nZXJvdXNseVNldElubmVySFRNTDogeyBfX2h0bWw6IGNyaXRpY2FsQ3NzIH0gfSkgOiBudWxsLCBrZXllZExpbmtzLm1hcChcbiAgICAoeyBrZXksIGxpbmsgfSkgPT4gaXNQYWdlTGlua0Rlc2NyaXB0b3IobGluaykgPyAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoUHJlZmV0Y2hQYWdlTGlua3MsIHsga2V5LCAuLi5saW5rIH0pIDogLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7IGtleSwgLi4ubGluayB9KVxuICApKTtcbn1cbmZ1bmN0aW9uIFByZWZldGNoUGFnZUxpbmtzKHtcbiAgcGFnZSxcbiAgLi4uZGF0YUxpbmtQcm9wc1xufSkge1xuICBsZXQgeyByb3V0ZXIgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0MigpO1xuICBsZXQgbWF0Y2hlcyA9IFJlYWN0OS51c2VNZW1vKFxuICAgICgpID0+IG1hdGNoUm91dGVzKHJvdXRlci5yb3V0ZXMsIHBhZ2UsIHJvdXRlci5iYXNlbmFtZSksXG4gICAgW3JvdXRlci5yb3V0ZXMsIHBhZ2UsIHJvdXRlci5iYXNlbmFtZV1cbiAgKTtcbiAgaWYgKCFtYXRjaGVzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChQcmVmZXRjaFBhZ2VMaW5rc0ltcGwsIHsgcGFnZSwgbWF0Y2hlcywgLi4uZGF0YUxpbmtQcm9wcyB9KTtcbn1cbmZ1bmN0aW9uIHVzZUtleWVkUHJlZmV0Y2hMaW5rcyhtYXRjaGVzKSB7XG4gIGxldCB7IG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMgfSA9IHVzZUZyYW1ld29ya0NvbnRleHQoKTtcbiAgbGV0IFtrZXllZFByZWZldGNoTGlua3MsIHNldEtleWVkUHJlZmV0Y2hMaW5rc10gPSBSZWFjdDkudXNlU3RhdGUoW10pO1xuICBSZWFjdDkudXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaW50ZXJydXB0ZWQgPSBmYWxzZTtcbiAgICB2b2lkIGdldEtleWVkUHJlZmV0Y2hMaW5rcyhtYXRjaGVzLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzKS50aGVuKFxuICAgICAgKGxpbmtzKSA9PiB7XG4gICAgICAgIGlmICghaW50ZXJydXB0ZWQpIHtcbiAgICAgICAgICBzZXRLZXllZFByZWZldGNoTGlua3MobGlua3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaW50ZXJydXB0ZWQgPSB0cnVlO1xuICAgIH07XG4gIH0sIFttYXRjaGVzLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzXSk7XG4gIHJldHVybiBrZXllZFByZWZldGNoTGlua3M7XG59XG5mdW5jdGlvbiBQcmVmZXRjaFBhZ2VMaW5rc0ltcGwoe1xuICBwYWdlLFxuICBtYXRjaGVzOiBuZXh0TWF0Y2hlcyxcbiAgLi4ubGlua1Byb3BzXG59KSB7XG4gIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCB7IG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMgfSA9IHVzZUZyYW1ld29ya0NvbnRleHQoKTtcbiAgbGV0IHsgbG9hZGVyRGF0YSwgbWF0Y2hlcyB9ID0gdXNlRGF0YVJvdXRlclN0YXRlQ29udGV4dCgpO1xuICBsZXQgbmV3TWF0Y2hlc0ZvckRhdGEgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBnZXROZXdNYXRjaGVzRm9yTGlua3MoXG4gICAgICBwYWdlLFxuICAgICAgbmV4dE1hdGNoZXMsXG4gICAgICBtYXRjaGVzLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIFwiZGF0YVwiXG4gICAgKSxcbiAgICBbcGFnZSwgbmV4dE1hdGNoZXMsIG1hdGNoZXMsIG1hbmlmZXN0LCBsb2NhdGlvbl1cbiAgKTtcbiAgbGV0IG5ld01hdGNoZXNGb3JBc3NldHMgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBnZXROZXdNYXRjaGVzRm9yTGlua3MoXG4gICAgICBwYWdlLFxuICAgICAgbmV4dE1hdGNoZXMsXG4gICAgICBtYXRjaGVzLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIFwiYXNzZXRzXCJcbiAgICApLFxuICAgIFtwYWdlLCBuZXh0TWF0Y2hlcywgbWF0Y2hlcywgbWFuaWZlc3QsIGxvY2F0aW9uXVxuICApO1xuICBsZXQgZGF0YUhyZWZzID0gUmVhY3Q5LnVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChwYWdlID09PSBsb2NhdGlvbi5wYXRobmFtZSArIGxvY2F0aW9uLnNlYXJjaCArIGxvY2F0aW9uLmhhc2gpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbGV0IHJvdXRlc1BhcmFtcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgbGV0IGZvdW5kT3B0T3V0Um91dGUgPSBmYWxzZTtcbiAgICBuZXh0TWF0Y2hlcy5mb3JFYWNoKChtKSA9PiB7XG4gICAgICBsZXQgbWFuaWZlc3RSb3V0ZSA9IG1hbmlmZXN0LnJvdXRlc1ttLnJvdXRlLmlkXTtcbiAgICAgIGlmICghbWFuaWZlc3RSb3V0ZSB8fCAhbWFuaWZlc3RSb3V0ZS5oYXNMb2FkZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFuZXdNYXRjaGVzRm9yRGF0YS5zb21lKChtMikgPT4gbTIucm91dGUuaWQgPT09IG0ucm91dGUuaWQpICYmIG0ucm91dGUuaWQgaW4gbG9hZGVyRGF0YSAmJiByb3V0ZU1vZHVsZXNbbS5yb3V0ZS5pZF0/LnNob3VsZFJldmFsaWRhdGUpIHtcbiAgICAgICAgZm91bmRPcHRPdXRSb3V0ZSA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKG1hbmlmZXN0Um91dGUuaGFzQ2xpZW50TG9hZGVyKSB7XG4gICAgICAgIGZvdW5kT3B0T3V0Um91dGUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm91dGVzUGFyYW1zLmFkZChtLnJvdXRlLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocm91dGVzUGFyYW1zLnNpemUgPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbGV0IHVybCA9IHNpbmdsZUZldGNoVXJsKHBhZ2UpO1xuICAgIGlmIChmb3VuZE9wdE91dFJvdXRlICYmIHJvdXRlc1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXG4gICAgICAgIFwiX3JvdXRlc1wiLFxuICAgICAgICBuZXh0TWF0Y2hlcy5maWx0ZXIoKG0pID0+IHJvdXRlc1BhcmFtcy5oYXMobS5yb3V0ZS5pZCkpLm1hcCgobSkgPT4gbS5yb3V0ZS5pZCkuam9pbihcIixcIilcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBbdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaF07XG4gIH0sIFtcbiAgICBsb2FkZXJEYXRhLFxuICAgIGxvY2F0aW9uLFxuICAgIG1hbmlmZXN0LFxuICAgIG5ld01hdGNoZXNGb3JEYXRhLFxuICAgIG5leHRNYXRjaGVzLFxuICAgIHBhZ2UsXG4gICAgcm91dGVNb2R1bGVzXG4gIF0pO1xuICBsZXQgbW9kdWxlSHJlZnMgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBnZXRNb2R1bGVMaW5rSHJlZnMobmV3TWF0Y2hlc0ZvckFzc2V0cywgbWFuaWZlc3QpLFxuICAgIFtuZXdNYXRjaGVzRm9yQXNzZXRzLCBtYW5pZmVzdF1cbiAgKTtcbiAgbGV0IGtleWVkUHJlZmV0Y2hMaW5rcyA9IHVzZUtleWVkUHJlZmV0Y2hMaW5rcyhuZXdNYXRjaGVzRm9yQXNzZXRzKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChSZWFjdDkuRnJhZ21lbnQsIG51bGwsIGRhdGFIcmVmcy5tYXAoKGhyZWYpID0+IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcImxpbmtcIiwgeyBrZXk6IGhyZWYsIHJlbDogXCJwcmVmZXRjaFwiLCBhczogXCJmZXRjaFwiLCBocmVmLCAuLi5saW5rUHJvcHMgfSkpLCBtb2R1bGVIcmVmcy5tYXAoKGhyZWYpID0+IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcImxpbmtcIiwgeyBrZXk6IGhyZWYsIHJlbDogXCJtb2R1bGVwcmVsb2FkXCIsIGhyZWYsIC4uLmxpbmtQcm9wcyB9KSksIGtleWVkUHJlZmV0Y2hMaW5rcy5tYXAoKHsga2V5LCBsaW5rIH0pID0+IChcbiAgICAvLyB0aGVzZSBkb24ndCBzcHJlYWQgYGxpbmtQcm9wc2AgYmVjYXVzZSB0aGV5IGFyZSBmdWxsIGxpbmsgZGVzY3JpcHRvcnNcbiAgICAvLyBhbHJlYWR5IHdpdGggdGhlaXIgb3duIHByb3BzXG4gICAgLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7IGtleSwgLi4ubGluayB9KVxuICApKSk7XG59XG5mdW5jdGlvbiBNZXRhKCkge1xuICBsZXQgeyBpc1NwYU1vZGUsIHJvdXRlTW9kdWxlcyB9ID0gdXNlRnJhbWV3b3JrQ29udGV4dCgpO1xuICBsZXQge1xuICAgIGVycm9ycyxcbiAgICBtYXRjaGVzOiByb3V0ZXJNYXRjaGVzLFxuICAgIGxvYWRlckRhdGFcbiAgfSA9IHVzZURhdGFSb3V0ZXJTdGF0ZUNvbnRleHQoKTtcbiAgbGV0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IF9tYXRjaGVzID0gZ2V0QWN0aXZlTWF0Y2hlcyhyb3V0ZXJNYXRjaGVzLCBlcnJvcnMsIGlzU3BhTW9kZSk7XG4gIGxldCBlcnJvciA9IG51bGw7XG4gIGlmIChlcnJvcnMpIHtcbiAgICBlcnJvciA9IGVycm9yc1tfbWF0Y2hlc1tfbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5pZF07XG4gIH1cbiAgbGV0IG1ldGEgPSBbXTtcbiAgbGV0IGxlYWZNZXRhID0gbnVsbDtcbiAgbGV0IG1hdGNoZXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBfbWF0Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBfbWF0Y2ggPSBfbWF0Y2hlc1tpXTtcbiAgICBsZXQgcm91dGVJZCA9IF9tYXRjaC5yb3V0ZS5pZDtcbiAgICBsZXQgZGF0YTIgPSBsb2FkZXJEYXRhW3JvdXRlSWRdO1xuICAgIGxldCBwYXJhbXMgPSBfbWF0Y2gucGFyYW1zO1xuICAgIGxldCByb3V0ZU1vZHVsZSA9IHJvdXRlTW9kdWxlc1tyb3V0ZUlkXTtcbiAgICBsZXQgcm91dGVNZXRhID0gW107XG4gICAgbGV0IG1hdGNoID0ge1xuICAgICAgaWQ6IHJvdXRlSWQsXG4gICAgICBkYXRhOiBkYXRhMixcbiAgICAgIG1ldGE6IFtdLFxuICAgICAgcGFyYW1zOiBfbWF0Y2gucGFyYW1zLFxuICAgICAgcGF0aG5hbWU6IF9tYXRjaC5wYXRobmFtZSxcbiAgICAgIGhhbmRsZTogX21hdGNoLnJvdXRlLmhhbmRsZSxcbiAgICAgIGVycm9yXG4gICAgfTtcbiAgICBtYXRjaGVzW2ldID0gbWF0Y2g7XG4gICAgaWYgKHJvdXRlTW9kdWxlPy5tZXRhKSB7XG4gICAgICByb3V0ZU1ldGEgPSB0eXBlb2Ygcm91dGVNb2R1bGUubWV0YSA9PT0gXCJmdW5jdGlvblwiID8gcm91dGVNb2R1bGUubWV0YSh7XG4gICAgICAgIGRhdGE6IGRhdGEyLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBlcnJvclxuICAgICAgfSkgOiBBcnJheS5pc0FycmF5KHJvdXRlTW9kdWxlLm1ldGEpID8gWy4uLnJvdXRlTW9kdWxlLm1ldGFdIDogcm91dGVNb2R1bGUubWV0YTtcbiAgICB9IGVsc2UgaWYgKGxlYWZNZXRhKSB7XG4gICAgICByb3V0ZU1ldGEgPSBbLi4ubGVhZk1ldGFdO1xuICAgIH1cbiAgICByb3V0ZU1ldGEgPSByb3V0ZU1ldGEgfHwgW107XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJvdXRlTWV0YSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUaGUgcm91dGUgYXQgXCIgKyBfbWF0Y2gucm91dGUucGF0aCArIFwiIHJldHVybnMgYW4gaW52YWxpZCB2YWx1ZS4gQWxsIHJvdXRlIG1ldGEgZnVuY3Rpb25zIG11c3QgcmV0dXJuIGFuIGFycmF5IG9mIG1ldGEgb2JqZWN0cy5cXG5cXG5UbyByZWZlcmVuY2UgdGhlIG1ldGEgZnVuY3Rpb24gQVBJLCBzZWUgaHR0cHM6Ly9yZW1peC5ydW4vcm91dGUvbWV0YVwiXG4gICAgICApO1xuICAgIH1cbiAgICBtYXRjaC5tZXRhID0gcm91dGVNZXRhO1xuICAgIG1hdGNoZXNbaV0gPSBtYXRjaDtcbiAgICBtZXRhID0gWy4uLnJvdXRlTWV0YV07XG4gICAgbGVhZk1ldGEgPSBtZXRhO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoUmVhY3Q5LkZyYWdtZW50LCBudWxsLCBtZXRhLmZsYXQoKS5tYXAoKG1ldGFQcm9wcykgPT4ge1xuICAgIGlmICghbWV0YVByb3BzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKFwidGFnTmFtZVwiIGluIG1ldGFQcm9wcykge1xuICAgICAgbGV0IHsgdGFnTmFtZSwgLi4ucmVzdCB9ID0gbWV0YVByb3BzO1xuICAgICAgaWYgKCFpc1ZhbGlkTWV0YVRhZyh0YWdOYW1lKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYEEgbWV0YSBvYmplY3QgdXNlcyBhbiBpbnZhbGlkIHRhZ05hbWU6ICR7dGFnTmFtZX0uIEV4cGVjdGVkIGVpdGhlciAnbGluaycgb3IgJ21ldGEnYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGxldCBDb21wID0gdGFnTmFtZTtcbiAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoQ29tcCwgeyBrZXk6IEpTT04uc3RyaW5naWZ5KHJlc3QpLCAuLi5yZXN0IH0pO1xuICAgIH1cbiAgICBpZiAoXCJ0aXRsZVwiIGluIG1ldGFQcm9wcykge1xuICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcInRpdGxlXCIsIHsga2V5OiBcInRpdGxlXCIgfSwgU3RyaW5nKG1ldGFQcm9wcy50aXRsZSkpO1xuICAgIH1cbiAgICBpZiAoXCJjaGFyc2V0XCIgaW4gbWV0YVByb3BzKSB7XG4gICAgICBtZXRhUHJvcHMuY2hhclNldCA/PyAobWV0YVByb3BzLmNoYXJTZXQgPSBtZXRhUHJvcHMuY2hhcnNldCk7XG4gICAgICBkZWxldGUgbWV0YVByb3BzLmNoYXJzZXQ7XG4gICAgfVxuICAgIGlmIChcImNoYXJTZXRcIiBpbiBtZXRhUHJvcHMgJiYgbWV0YVByb3BzLmNoYXJTZXQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBtZXRhUHJvcHMuY2hhclNldCA9PT0gXCJzdHJpbmdcIiA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcIm1ldGFcIiwgeyBrZXk6IFwiY2hhclNldFwiLCBjaGFyU2V0OiBtZXRhUHJvcHMuY2hhclNldCB9KSA6IG51bGw7XG4gICAgfVxuICAgIGlmIChcInNjcmlwdDpsZCtqc29uXCIgaW4gbWV0YVByb3BzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQganNvbiA9IEpTT04uc3RyaW5naWZ5KG1ldGFQcm9wc1tcInNjcmlwdDpsZCtqc29uXCJdKTtcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICBcInNjcmlwdFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogYHNjcmlwdDpsZCtqc29uOiR7anNvbn1gLFxuICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9sZCtqc29uXCIsXG4gICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogeyBfX2h0bWw6IGpzb24gfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcIm1ldGFcIiwgeyBrZXk6IEpTT04uc3RyaW5naWZ5KG1ldGFQcm9wcyksIC4uLm1ldGFQcm9wcyB9KTtcbiAgfSkpO1xufVxuZnVuY3Rpb24gaXNWYWxpZE1ldGFUYWcodGFnTmFtZSkge1xuICByZXR1cm4gdHlwZW9mIHRhZ05hbWUgPT09IFwic3RyaW5nXCIgJiYgL14obWV0YXxsaW5rKSQvLnRlc3QodGFnTmFtZSk7XG59XG52YXIgaXNIeWRyYXRlZCA9IGZhbHNlO1xuZnVuY3Rpb24gU2NyaXB0cyhwcm9wcykge1xuICBsZXQgeyBtYW5pZmVzdCwgc2VydmVySGFuZG9mZlN0cmluZywgaXNTcGFNb2RlLCByZW5kZXJNZXRhIH0gPSB1c2VGcmFtZXdvcmtDb250ZXh0KCk7XG4gIGxldCB7IHJvdXRlciwgc3RhdGljOiBpc1N0YXRpYywgc3RhdGljQ29udGV4dCB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQyKCk7XG4gIGxldCB7IG1hdGNoZXM6IHJvdXRlck1hdGNoZXMgfSA9IHVzZURhdGFSb3V0ZXJTdGF0ZUNvbnRleHQoKTtcbiAgbGV0IGVuYWJsZUZvZ09mV2FyID0gaXNGb2dPZldhckVuYWJsZWQoaXNTcGFNb2RlKTtcbiAgaWYgKHJlbmRlck1ldGEpIHtcbiAgICByZW5kZXJNZXRhLmRpZFJlbmRlclNjcmlwdHMgPSB0cnVlO1xuICB9XG4gIGxldCBtYXRjaGVzID0gZ2V0QWN0aXZlTWF0Y2hlcyhyb3V0ZXJNYXRjaGVzLCBudWxsLCBpc1NwYU1vZGUpO1xuICBSZWFjdDkudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc0h5ZHJhdGVkID0gdHJ1ZTtcbiAgfSwgW10pO1xuICBsZXQgaW5pdGlhbFNjcmlwdHMgPSBSZWFjdDkudXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IHN0cmVhbVNjcmlwdCA9IFwid2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LnN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQoY29udHJvbGxlcil7d2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LnN0cmVhbUNvbnRyb2xsZXIgPSBjb250cm9sbGVyO319KS5waXBlVGhyb3VnaChuZXcgVGV4dEVuY29kZXJTdHJlYW0oKSk7XCI7XG4gICAgbGV0IGNvbnRleHRTY3JpcHQgPSBzdGF0aWNDb250ZXh0ID8gYHdpbmRvdy5fX3JlYWN0Um91dGVyQ29udGV4dCA9ICR7c2VydmVySGFuZG9mZlN0cmluZ307JHtzdHJlYW1TY3JpcHR9YCA6IFwiIFwiO1xuICAgIGxldCByb3V0ZU1vZHVsZXNTY3JpcHQgPSAhaXNTdGF0aWMgPyBcIiBcIiA6IGAke21hbmlmZXN0Lmhtcj8ucnVudGltZSA/IGBpbXBvcnQgJHtKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5obXIucnVudGltZSl9O2AgOiBcIlwifSR7IWVuYWJsZUZvZ09mV2FyID8gYGltcG9ydCAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LnVybCl9YCA6IFwiXCJ9O1xuJHttYXRjaGVzLm1hcChcbiAgICAgIChtYXRjaCwgaW5kZXgpID0+IGBpbXBvcnQgKiBhcyByb3V0ZSR7aW5kZXh9IGZyb20gJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgbWFuaWZlc3Qucm91dGVzW21hdGNoLnJvdXRlLmlkXS5tb2R1bGVcbiAgICAgICl9O2BcbiAgICApLmpvaW4oXCJcXG5cIil9XG4gICR7ZW5hYmxlRm9nT2ZXYXIgPyAoXG4gICAgICAvLyBJbmxpbmUgYSBtaW5pbWFsIG1hbmlmZXN0IHdpdGggdGhlIFNTUiBtYXRjaGVzXG4gICAgICBgd2luZG93Ll9fcmVhY3RSb3V0ZXJNYW5pZmVzdCA9ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGdldFBhcnRpYWxNYW5pZmVzdChtYW5pZmVzdCwgcm91dGVyKSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMlxuICAgICAgKX07YFxuICAgICkgOiBcIlwifVxuICB3aW5kb3cuX19yZWFjdFJvdXRlclJvdXRlTW9kdWxlcyA9IHske21hdGNoZXMubWFwKChtYXRjaCwgaW5kZXgpID0+IGAke0pTT04uc3RyaW5naWZ5KG1hdGNoLnJvdXRlLmlkKX06cm91dGUke2luZGV4fWApLmpvaW4oXCIsXCIpfX07XG5cbmltcG9ydCgke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmVudHJ5Lm1vZHVsZSl9KTtgO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoUmVhY3Q5LkZyYWdtZW50LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcInNjcmlwdFwiLFxuICAgICAge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nOiB0cnVlLFxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogY3JlYXRlSHRtbChjb250ZXh0U2NyaXB0KSxcbiAgICAgICAgdHlwZTogdm9pZCAwXG4gICAgICB9XG4gICAgKSwgLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJzY3JpcHRcIixcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZzogdHJ1ZSxcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IGNyZWF0ZUh0bWwocm91dGVNb2R1bGVzU2NyaXB0KSxcbiAgICAgICAgdHlwZTogXCJtb2R1bGVcIixcbiAgICAgICAgYXN5bmM6IHRydWVcbiAgICAgIH1cbiAgICApKTtcbiAgfSwgW10pO1xuICBsZXQgcm91dGVQcmVsb2FkcyA9IG1hdGNoZXMubWFwKChtYXRjaCkgPT4ge1xuICAgIGxldCByb3V0ZSA9IG1hbmlmZXN0LnJvdXRlc1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgcmV0dXJuIHJvdXRlID8gKHJvdXRlLmltcG9ydHMgfHwgW10pLmNvbmNhdChbcm91dGUubW9kdWxlXSkgOiBbXTtcbiAgfSkuZmxhdCgxKTtcbiAgbGV0IHByZWxvYWRzID0gaXNIeWRyYXRlZCA/IFtdIDogbWFuaWZlc3QuZW50cnkuaW1wb3J0cy5jb25jYXQocm91dGVQcmVsb2Fkcyk7XG4gIHJldHVybiBpc0h5ZHJhdGVkID8gbnVsbCA6IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChSZWFjdDkuRnJhZ21lbnQsIG51bGwsICFlbmFibGVGb2dPZldhciA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcbiAgICBcImxpbmtcIixcbiAgICB7XG4gICAgICByZWw6IFwibW9kdWxlcHJlbG9hZFwiLFxuICAgICAgaHJlZjogbWFuaWZlc3QudXJsLFxuICAgICAgY3Jvc3NPcmlnaW46IHByb3BzLmNyb3NzT3JpZ2luXG4gICAgfVxuICApIDogbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFxuICAgIFwibGlua1wiLFxuICAgIHtcbiAgICAgIHJlbDogXCJtb2R1bGVwcmVsb2FkXCIsXG4gICAgICBocmVmOiBtYW5pZmVzdC5lbnRyeS5tb2R1bGUsXG4gICAgICBjcm9zc09yaWdpbjogcHJvcHMuY3Jvc3NPcmlnaW5cbiAgICB9XG4gICksIGRlZHVwZShwcmVsb2FkcykubWFwKChwYXRoKSA9PiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJsaW5rXCIsXG4gICAge1xuICAgICAga2V5OiBwYXRoLFxuICAgICAgcmVsOiBcIm1vZHVsZXByZWxvYWRcIixcbiAgICAgIGhyZWY6IHBhdGgsXG4gICAgICBjcm9zc09yaWdpbjogcHJvcHMuY3Jvc3NPcmlnaW5cbiAgICB9XG4gICkpLCBpbml0aWFsU2NyaXB0cyk7XG59XG5mdW5jdGlvbiBkZWR1cGUoYXJyYXkpIHtcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KGFycmF5KV07XG59XG5mdW5jdGlvbiBtZXJnZVJlZnMoLi4ucmVmcykge1xuICByZXR1cm4gKHZhbHVlKSA9PiB7XG4gICAgcmVmcy5mb3JFYWNoKChyZWYpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmVmKHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAocmVmICE9IG51bGwpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn1cblxuLy8gbGliL2RvbS9saWIudHN4XG52YXIgaXNCcm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygd2luZG93LmRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAhPT0gXCJ1bmRlZmluZWRcIjtcbnRyeSB7XG4gIGlmIChpc0Jyb3dzZXIpIHtcbiAgICB3aW5kb3cuX19yZWFjdFJvdXRlclZlcnNpb24gPSBcIjcuMS4wXCI7XG4gIH1cbn0gY2F0Y2ggKGUpIHtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUJyb3dzZXJSb3V0ZXIocm91dGVzLCBvcHRzKSB7XG4gIHJldHVybiBjcmVhdGVSb3V0ZXIoe1xuICAgIGJhc2VuYW1lOiBvcHRzPy5iYXNlbmFtZSxcbiAgICBmdXR1cmU6IG9wdHM/LmZ1dHVyZSxcbiAgICBoaXN0b3J5OiBjcmVhdGVCcm93c2VySGlzdG9yeSh7IHdpbmRvdzogb3B0cz8ud2luZG93IH0pLFxuICAgIGh5ZHJhdGlvbkRhdGE6IG9wdHM/Lmh5ZHJhdGlvbkRhdGEgfHwgcGFyc2VIeWRyYXRpb25EYXRhKCksXG4gICAgcm91dGVzLFxuICAgIG1hcFJvdXRlUHJvcGVydGllcyxcbiAgICBkYXRhU3RyYXRlZ3k6IG9wdHM/LmRhdGFTdHJhdGVneSxcbiAgICBwYXRjaFJvdXRlc09uTmF2aWdhdGlvbjogb3B0cz8ucGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb24sXG4gICAgd2luZG93OiBvcHRzPy53aW5kb3dcbiAgfSkuaW5pdGlhbGl6ZSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlSGFzaFJvdXRlcihyb3V0ZXMsIG9wdHMpIHtcbiAgcmV0dXJuIGNyZWF0ZVJvdXRlcih7XG4gICAgYmFzZW5hbWU6IG9wdHM/LmJhc2VuYW1lLFxuICAgIGZ1dHVyZTogb3B0cz8uZnV0dXJlLFxuICAgIGhpc3Rvcnk6IGNyZWF0ZUhhc2hIaXN0b3J5KHsgd2luZG93OiBvcHRzPy53aW5kb3cgfSksXG4gICAgaHlkcmF0aW9uRGF0YTogb3B0cz8uaHlkcmF0aW9uRGF0YSB8fCBwYXJzZUh5ZHJhdGlvbkRhdGEoKSxcbiAgICByb3V0ZXMsXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzLFxuICAgIGRhdGFTdHJhdGVneTogb3B0cz8uZGF0YVN0cmF0ZWd5LFxuICAgIHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uOiBvcHRzPy5wYXRjaFJvdXRlc09uTmF2aWdhdGlvbixcbiAgICB3aW5kb3c6IG9wdHM/LndpbmRvd1xuICB9KS5pbml0aWFsaXplKCk7XG59XG5mdW5jdGlvbiBwYXJzZUh5ZHJhdGlvbkRhdGEoKSB7XG4gIGxldCBzdGF0ZSA9IHdpbmRvdz8uX19zdGF0aWNSb3V0ZXJIeWRyYXRpb25EYXRhO1xuICBpZiAoc3RhdGUgJiYgc3RhdGUuZXJyb3JzKSB7XG4gICAgc3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGVycm9yczogZGVzZXJpYWxpemVFcnJvcnMoc3RhdGUuZXJyb3JzKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuZnVuY3Rpb24gZGVzZXJpYWxpemVFcnJvcnMoZXJyb3JzKSB7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gbnVsbDtcbiAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhlcnJvcnMpO1xuICBsZXQgc2VyaWFsaXplZCA9IHt9O1xuICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIGVudHJpZXMpIHtcbiAgICBpZiAodmFsICYmIHZhbC5fX3R5cGUgPT09IFwiUm91dGVFcnJvclJlc3BvbnNlXCIpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IG5ldyBFcnJvclJlc3BvbnNlSW1wbChcbiAgICAgICAgdmFsLnN0YXR1cyxcbiAgICAgICAgdmFsLnN0YXR1c1RleHQsXG4gICAgICAgIHZhbC5kYXRhLFxuICAgICAgICB2YWwuaW50ZXJuYWwgPT09IHRydWVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh2YWwgJiYgdmFsLl9fdHlwZSA9PT0gXCJFcnJvclwiKSB7XG4gICAgICBpZiAodmFsLl9fc3ViVHlwZSkge1xuICAgICAgICBsZXQgRXJyb3JDb25zdHJ1Y3RvciA9IHdpbmRvd1t2YWwuX19zdWJUeXBlXTtcbiAgICAgICAgaWYgKHR5cGVvZiBFcnJvckNvbnN0cnVjdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yQ29uc3RydWN0b3IodmFsLm1lc3NhZ2UpO1xuICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSBcIlwiO1xuICAgICAgICAgICAgc2VyaWFsaXplZFtrZXldID0gZXJyb3I7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlcmlhbGl6ZWRba2V5XSA9PSBudWxsKSB7XG4gICAgICAgIGxldCBlcnJvciA9IG5ldyBFcnJvcih2YWwubWVzc2FnZSk7XG4gICAgICAgIGVycm9yLnN0YWNrID0gXCJcIjtcbiAgICAgICAgc2VyaWFsaXplZFtrZXldID0gZXJyb3I7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNlcmlhbGl6ZWQ7XG59XG5mdW5jdGlvbiBCcm93c2VyUm91dGVyKHtcbiAgYmFzZW5hbWUsXG4gIGNoaWxkcmVuLFxuICB3aW5kb3c6IHdpbmRvdzJcbn0pIHtcbiAgbGV0IGhpc3RvcnlSZWYgPSBSZWFjdDEwLnVzZVJlZigpO1xuICBpZiAoaGlzdG9yeVJlZi5jdXJyZW50ID09IG51bGwpIHtcbiAgICBoaXN0b3J5UmVmLmN1cnJlbnQgPSBjcmVhdGVCcm93c2VySGlzdG9yeSh7IHdpbmRvdzogd2luZG93MiwgdjVDb21wYXQ6IHRydWUgfSk7XG4gIH1cbiAgbGV0IGhpc3RvcnkgPSBoaXN0b3J5UmVmLmN1cnJlbnQ7XG4gIGxldCBbc3RhdGUsIHNldFN0YXRlSW1wbF0gPSBSZWFjdDEwLnVzZVN0YXRlKHtcbiAgICBhY3Rpb246IGhpc3RvcnkuYWN0aW9uLFxuICAgIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uXG4gIH0pO1xuICBsZXQgc2V0U3RhdGUgPSBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIChuZXdTdGF0ZSkgPT4ge1xuICAgICAgUmVhY3QxMC5zdGFydFRyYW5zaXRpb24oKCkgPT4gc2V0U3RhdGVJbXBsKG5ld1N0YXRlKSk7XG4gICAgfSxcbiAgICBbc2V0U3RhdGVJbXBsXVxuICApO1xuICBSZWFjdDEwLnVzZUxheW91dEVmZmVjdCgoKSA9PiBoaXN0b3J5Lmxpc3RlbihzZXRTdGF0ZSksIFtoaXN0b3J5LCBzZXRTdGF0ZV0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChcbiAgICBSb3V0ZXIsXG4gICAge1xuICAgICAgYmFzZW5hbWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgIG5hdmlnYXRpb25UeXBlOiBzdGF0ZS5hY3Rpb24sXG4gICAgICBuYXZpZ2F0b3I6IGhpc3RvcnlcbiAgICB9XG4gICk7XG59XG5mdW5jdGlvbiBIYXNoUm91dGVyKHsgYmFzZW5hbWUsIGNoaWxkcmVuLCB3aW5kb3c6IHdpbmRvdzIgfSkge1xuICBsZXQgaGlzdG9yeVJlZiA9IFJlYWN0MTAudXNlUmVmKCk7XG4gIGlmIChoaXN0b3J5UmVmLmN1cnJlbnQgPT0gbnVsbCkge1xuICAgIGhpc3RvcnlSZWYuY3VycmVudCA9IGNyZWF0ZUhhc2hIaXN0b3J5KHsgd2luZG93OiB3aW5kb3cyLCB2NUNvbXBhdDogdHJ1ZSB9KTtcbiAgfVxuICBsZXQgaGlzdG9yeSA9IGhpc3RvcnlSZWYuY3VycmVudDtcbiAgbGV0IFtzdGF0ZSwgc2V0U3RhdGVJbXBsXSA9IFJlYWN0MTAudXNlU3RhdGUoe1xuICAgIGFjdGlvbjogaGlzdG9yeS5hY3Rpb24sXG4gICAgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb25cbiAgfSk7XG4gIGxldCBzZXRTdGF0ZSA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBSZWFjdDEwLnN0YXJ0VHJhbnNpdGlvbigoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICB9LFxuICAgIFtzZXRTdGF0ZUltcGxdXG4gICk7XG4gIFJlYWN0MTAudXNlTGF5b3V0RWZmZWN0KCgpID0+IGhpc3RvcnkubGlzdGVuKHNldFN0YXRlKSwgW2hpc3RvcnksIHNldFN0YXRlXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IHN0YXRlLmFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICAgIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIEhpc3RvcnlSb3V0ZXIoe1xuICBiYXNlbmFtZSxcbiAgY2hpbGRyZW4sXG4gIGhpc3Rvcnlcbn0pIHtcbiAgbGV0IFtzdGF0ZSwgc2V0U3RhdGVJbXBsXSA9IFJlYWN0MTAudXNlU3RhdGUoe1xuICAgIGFjdGlvbjogaGlzdG9yeS5hY3Rpb24sXG4gICAgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb25cbiAgfSk7XG4gIGxldCBzZXRTdGF0ZSA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBSZWFjdDEwLnN0YXJ0VHJhbnNpdGlvbigoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICB9LFxuICAgIFtzZXRTdGF0ZUltcGxdXG4gICk7XG4gIFJlYWN0MTAudXNlTGF5b3V0RWZmZWN0KCgpID0+IGhpc3RvcnkubGlzdGVuKHNldFN0YXRlKSwgW2hpc3RvcnksIHNldFN0YXRlXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IHN0YXRlLmFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICAgIH1cbiAgKTtcbn1cbkhpc3RvcnlSb3V0ZXIuZGlzcGxheU5hbWUgPSBcInVuc3RhYmxlX0hpc3RvcnlSb3V0ZXJcIjtcbnZhciBBQlNPTFVURV9VUkxfUkVHRVgyID0gL14oPzpbYS16XVthLXowLTkrLi1dKjp8XFwvXFwvKS9pO1xudmFyIExpbmsgPSBSZWFjdDEwLmZvcndhcmRSZWYoXG4gIGZ1bmN0aW9uIExpbmtXaXRoUmVmKHtcbiAgICBvbkNsaWNrLFxuICAgIGRpc2NvdmVyID0gXCJyZW5kZXJcIixcbiAgICBwcmVmZXRjaCA9IFwibm9uZVwiLFxuICAgIHJlbGF0aXZlLFxuICAgIHJlbG9hZERvY3VtZW50LFxuICAgIHJlcGxhY2U6IHJlcGxhY2UyLFxuICAgIHN0YXRlLFxuICAgIHRhcmdldCxcbiAgICB0byxcbiAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgdmlld1RyYW5zaXRpb24sXG4gICAgLi4ucmVzdFxuICB9LCBmb3J3YXJkZWRSZWYpIHtcbiAgICBsZXQgeyBiYXNlbmFtZSB9ID0gUmVhY3QxMC51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgICBsZXQgaXNBYnNvbHV0ZSA9IHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiAmJiBBQlNPTFVURV9VUkxfUkVHRVgyLnRlc3QodG8pO1xuICAgIGxldCBhYnNvbHV0ZUhyZWY7XG4gICAgbGV0IGlzRXh0ZXJuYWwgPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIHRvID09PSBcInN0cmluZ1wiICYmIGlzQWJzb2x1dGUpIHtcbiAgICAgIGFic29sdXRlSHJlZiA9IHRvO1xuICAgICAgaWYgKGlzQnJvd3Nlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxldCBjdXJyZW50VXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgICAgbGV0IHRhcmdldFVybCA9IHRvLnN0YXJ0c1dpdGgoXCIvL1wiKSA/IG5ldyBVUkwoY3VycmVudFVybC5wcm90b2NvbCArIHRvKSA6IG5ldyBVUkwodG8pO1xuICAgICAgICAgIGxldCBwYXRoID0gc3RyaXBCYXNlbmFtZSh0YXJnZXRVcmwucGF0aG5hbWUsIGJhc2VuYW1lKTtcbiAgICAgICAgICBpZiAodGFyZ2V0VXJsLm9yaWdpbiA9PT0gY3VycmVudFVybC5vcmlnaW4gJiYgcGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0byA9IHBhdGggKyB0YXJnZXRVcmwuc2VhcmNoICsgdGFyZ2V0VXJsLmhhc2g7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlzRXh0ZXJuYWwgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgIGA8TGluayB0bz1cIiR7dG99XCI+IGNvbnRhaW5zIGFuIGludmFsaWQgVVJMIHdoaWNoIHdpbGwgcHJvYmFibHkgYnJlYWsgd2hlbiBjbGlja2VkIC0gcGxlYXNlIHVwZGF0ZSB0byBhIHZhbGlkIFVSTCBwYXRoLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBocmVmID0gdXNlSHJlZih0bywgeyByZWxhdGl2ZSB9KTtcbiAgICBsZXQgW3Nob3VsZFByZWZldGNoLCBwcmVmZXRjaFJlZiwgcHJlZmV0Y2hIYW5kbGVyc10gPSB1c2VQcmVmZXRjaEJlaGF2aW9yKFxuICAgICAgcHJlZmV0Y2gsXG4gICAgICByZXN0XG4gICAgKTtcbiAgICBsZXQgaW50ZXJuYWxPbkNsaWNrID0gdXNlTGlua0NsaWNrSGFuZGxlcih0bywge1xuICAgICAgcmVwbGFjZTogcmVwbGFjZTIsXG4gICAgICBzdGF0ZSxcbiAgICAgIHRhcmdldCxcbiAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgIHJlbGF0aXZlLFxuICAgICAgdmlld1RyYW5zaXRpb25cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKG9uQ2xpY2spIG9uQ2xpY2soZXZlbnQpO1xuICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIGludGVybmFsT25DbGljayhldmVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBsaW5rID0gKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1oYXMtY29udGVudFxuICAgICAgLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChcbiAgICAgICAgXCJhXCIsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5yZXN0LFxuICAgICAgICAgIC4uLnByZWZldGNoSGFuZGxlcnMsXG4gICAgICAgICAgaHJlZjogYWJzb2x1dGVIcmVmIHx8IGhyZWYsXG4gICAgICAgICAgb25DbGljazogaXNFeHRlcm5hbCB8fCByZWxvYWREb2N1bWVudCA/IG9uQ2xpY2sgOiBoYW5kbGVDbGljayxcbiAgICAgICAgICByZWY6IG1lcmdlUmVmcyhmb3J3YXJkZWRSZWYsIHByZWZldGNoUmVmKSxcbiAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgXCJkYXRhLWRpc2NvdmVyXCI6ICFpc0Fic29sdXRlICYmIGRpc2NvdmVyID09PSBcInJlbmRlclwiID8gXCJ0cnVlXCIgOiB2b2lkIDBcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gICAgcmV0dXJuIHNob3VsZFByZWZldGNoICYmICFpc0Fic29sdXRlID8gLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChSZWFjdDEwLkZyYWdtZW50LCBudWxsLCBsaW5rLCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFByZWZldGNoUGFnZUxpbmtzLCB7IHBhZ2U6IGhyZWYgfSkpIDogbGluaztcbiAgfVxuKTtcbkxpbmsuZGlzcGxheU5hbWUgPSBcIkxpbmtcIjtcbnZhciBOYXZMaW5rID0gUmVhY3QxMC5mb3J3YXJkUmVmKFxuICBmdW5jdGlvbiBOYXZMaW5rV2l0aFJlZih7XG4gICAgXCJhcmlhLWN1cnJlbnRcIjogYXJpYUN1cnJlbnRQcm9wID0gXCJwYWdlXCIsXG4gICAgY2FzZVNlbnNpdGl2ZSA9IGZhbHNlLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lUHJvcCA9IFwiXCIsXG4gICAgZW5kID0gZmFsc2UsXG4gICAgc3R5bGU6IHN0eWxlUHJvcCxcbiAgICB0byxcbiAgICB2aWV3VHJhbnNpdGlvbixcbiAgICBjaGlsZHJlbixcbiAgICAuLi5yZXN0XG4gIH0sIHJlZikge1xuICAgIGxldCBwYXRoID0gdXNlUmVzb2x2ZWRQYXRoKHRvLCB7IHJlbGF0aXZlOiByZXN0LnJlbGF0aXZlIH0pO1xuICAgIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gICAgbGV0IHJvdXRlclN0YXRlID0gUmVhY3QxMC51c2VDb250ZXh0KERhdGFSb3V0ZXJTdGF0ZUNvbnRleHQpO1xuICAgIGxldCB7IG5hdmlnYXRvcjogbmF2aWdhdG9yMiwgYmFzZW5hbWUgfSA9IFJlYWN0MTAudXNlQ29udGV4dChOYXZpZ2F0aW9uQ29udGV4dCk7XG4gICAgbGV0IGlzVHJhbnNpdGlvbmluZyA9IHJvdXRlclN0YXRlICE9IG51bGwgJiYgLy8gQ29uZGl0aW9uYWwgdXNhZ2UgaXMgT0sgaGVyZSBiZWNhdXNlIHRoZSB1c2FnZSBvZiBhIGRhdGEgcm91dGVyIGlzIHN0YXRpY1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIHVzZVZpZXdUcmFuc2l0aW9uU3RhdGUocGF0aCkgJiYgdmlld1RyYW5zaXRpb24gPT09IHRydWU7XG4gICAgbGV0IHRvUGF0aG5hbWUgPSBuYXZpZ2F0b3IyLmVuY29kZUxvY2F0aW9uID8gbmF2aWdhdG9yMi5lbmNvZGVMb2NhdGlvbihwYXRoKS5wYXRobmFtZSA6IHBhdGgucGF0aG5hbWU7XG4gICAgbGV0IGxvY2F0aW9uUGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZTtcbiAgICBsZXQgbmV4dExvY2F0aW9uUGF0aG5hbWUgPSByb3V0ZXJTdGF0ZSAmJiByb3V0ZXJTdGF0ZS5uYXZpZ2F0aW9uICYmIHJvdXRlclN0YXRlLm5hdmlnYXRpb24ubG9jYXRpb24gPyByb3V0ZXJTdGF0ZS5uYXZpZ2F0aW9uLmxvY2F0aW9uLnBhdGhuYW1lIDogbnVsbDtcbiAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcbiAgICAgIGxvY2F0aW9uUGF0aG5hbWUgPSBsb2NhdGlvblBhdGhuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBuZXh0TG9jYXRpb25QYXRobmFtZSA9IG5leHRMb2NhdGlvblBhdGhuYW1lID8gbmV4dExvY2F0aW9uUGF0aG5hbWUudG9Mb3dlckNhc2UoKSA6IG51bGw7XG4gICAgICB0b1BhdGhuYW1lID0gdG9QYXRobmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAobmV4dExvY2F0aW9uUGF0aG5hbWUgJiYgYmFzZW5hbWUpIHtcbiAgICAgIG5leHRMb2NhdGlvblBhdGhuYW1lID0gc3RyaXBCYXNlbmFtZShuZXh0TG9jYXRpb25QYXRobmFtZSwgYmFzZW5hbWUpIHx8IG5leHRMb2NhdGlvblBhdGhuYW1lO1xuICAgIH1cbiAgICBjb25zdCBlbmRTbGFzaFBvc2l0aW9uID0gdG9QYXRobmFtZSAhPT0gXCIvXCIgJiYgdG9QYXRobmFtZS5lbmRzV2l0aChcIi9cIikgPyB0b1BhdGhuYW1lLmxlbmd0aCAtIDEgOiB0b1BhdGhuYW1lLmxlbmd0aDtcbiAgICBsZXQgaXNBY3RpdmUgPSBsb2NhdGlvblBhdGhuYW1lID09PSB0b1BhdGhuYW1lIHx8ICFlbmQgJiYgbG9jYXRpb25QYXRobmFtZS5zdGFydHNXaXRoKHRvUGF0aG5hbWUpICYmIGxvY2F0aW9uUGF0aG5hbWUuY2hhckF0KGVuZFNsYXNoUG9zaXRpb24pID09PSBcIi9cIjtcbiAgICBsZXQgaXNQZW5kaW5nID0gbmV4dExvY2F0aW9uUGF0aG5hbWUgIT0gbnVsbCAmJiAobmV4dExvY2F0aW9uUGF0aG5hbWUgPT09IHRvUGF0aG5hbWUgfHwgIWVuZCAmJiBuZXh0TG9jYXRpb25QYXRobmFtZS5zdGFydHNXaXRoKHRvUGF0aG5hbWUpICYmIG5leHRMb2NhdGlvblBhdGhuYW1lLmNoYXJBdCh0b1BhdGhuYW1lLmxlbmd0aCkgPT09IFwiL1wiKTtcbiAgICBsZXQgcmVuZGVyUHJvcHMgPSB7XG4gICAgICBpc0FjdGl2ZSxcbiAgICAgIGlzUGVuZGluZyxcbiAgICAgIGlzVHJhbnNpdGlvbmluZ1xuICAgIH07XG4gICAgbGV0IGFyaWFDdXJyZW50ID0gaXNBY3RpdmUgPyBhcmlhQ3VycmVudFByb3AgOiB2b2lkIDA7XG4gICAgbGV0IGNsYXNzTmFtZTtcbiAgICBpZiAodHlwZW9mIGNsYXNzTmFtZVByb3AgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lUHJvcChyZW5kZXJQcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzTmFtZSA9IFtcbiAgICAgICAgY2xhc3NOYW1lUHJvcCxcbiAgICAgICAgaXNBY3RpdmUgPyBcImFjdGl2ZVwiIDogbnVsbCxcbiAgICAgICAgaXNQZW5kaW5nID8gXCJwZW5kaW5nXCIgOiBudWxsLFxuICAgICAgICBpc1RyYW5zaXRpb25pbmcgPyBcInRyYW5zaXRpb25pbmdcIiA6IG51bGxcbiAgICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpO1xuICAgIH1cbiAgICBsZXQgc3R5bGUgPSB0eXBlb2Ygc3R5bGVQcm9wID09PSBcImZ1bmN0aW9uXCIgPyBzdHlsZVByb3AocmVuZGVyUHJvcHMpIDogc3R5bGVQcm9wO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgICAgTGluayxcbiAgICAgIHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgXCJhcmlhLWN1cnJlbnRcIjogYXJpYUN1cnJlbnQsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgcmVmLFxuICAgICAgICBzdHlsZSxcbiAgICAgICAgdG8sXG4gICAgICAgIHZpZXdUcmFuc2l0aW9uXG4gICAgICB9LFxuICAgICAgdHlwZW9mIGNoaWxkcmVuID09PSBcImZ1bmN0aW9uXCIgPyBjaGlsZHJlbihyZW5kZXJQcm9wcykgOiBjaGlsZHJlblxuICAgICk7XG4gIH1cbik7XG5OYXZMaW5rLmRpc3BsYXlOYW1lID0gXCJOYXZMaW5rXCI7XG52YXIgRm9ybSA9IFJlYWN0MTAuZm9yd2FyZFJlZihcbiAgKHtcbiAgICBkaXNjb3ZlciA9IFwicmVuZGVyXCIsXG4gICAgZmV0Y2hlcktleSxcbiAgICBuYXZpZ2F0ZSxcbiAgICByZWxvYWREb2N1bWVudCxcbiAgICByZXBsYWNlOiByZXBsYWNlMixcbiAgICBzdGF0ZSxcbiAgICBtZXRob2QgPSBkZWZhdWx0TWV0aG9kLFxuICAgIGFjdGlvbixcbiAgICBvblN1Ym1pdCxcbiAgICByZWxhdGl2ZSxcbiAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgdmlld1RyYW5zaXRpb24sXG4gICAgLi4ucHJvcHNcbiAgfSwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgbGV0IHN1Ym1pdCA9IHVzZVN1Ym1pdCgpO1xuICAgIGxldCBmb3JtQWN0aW9uID0gdXNlRm9ybUFjdGlvbihhY3Rpb24sIHsgcmVsYXRpdmUgfSk7XG4gICAgbGV0IGZvcm1NZXRob2QgPSBtZXRob2QudG9Mb3dlckNhc2UoKSA9PT0gXCJnZXRcIiA/IFwiZ2V0XCIgOiBcInBvc3RcIjtcbiAgICBsZXQgaXNBYnNvbHV0ZSA9IHR5cGVvZiBhY3Rpb24gPT09IFwic3RyaW5nXCIgJiYgQUJTT0xVVEVfVVJMX1JFR0VYMi50ZXN0KGFjdGlvbik7XG4gICAgbGV0IHN1Ym1pdEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgIG9uU3VibWl0ICYmIG9uU3VibWl0KGV2ZW50KTtcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgbGV0IHN1Ym1pdHRlciA9IGV2ZW50Lm5hdGl2ZUV2ZW50LnN1Ym1pdHRlcjtcbiAgICAgIGxldCBzdWJtaXRNZXRob2QgPSBzdWJtaXR0ZXI/LmdldEF0dHJpYnV0ZShcImZvcm1tZXRob2RcIikgfHwgbWV0aG9kO1xuICAgICAgc3VibWl0KHN1Ym1pdHRlciB8fCBldmVudC5jdXJyZW50VGFyZ2V0LCB7XG4gICAgICAgIGZldGNoZXJLZXksXG4gICAgICAgIG1ldGhvZDogc3VibWl0TWV0aG9kLFxuICAgICAgICBuYXZpZ2F0ZSxcbiAgICAgICAgcmVwbGFjZTogcmVwbGFjZTIsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICByZWxhdGl2ZSxcbiAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgICB2aWV3VHJhbnNpdGlvblxuICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChcbiAgICAgIFwiZm9ybVwiLFxuICAgICAge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgbWV0aG9kOiBmb3JtTWV0aG9kLFxuICAgICAgICBhY3Rpb246IGZvcm1BY3Rpb24sXG4gICAgICAgIG9uU3VibWl0OiByZWxvYWREb2N1bWVudCA/IG9uU3VibWl0IDogc3VibWl0SGFuZGxlcixcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIFwiZGF0YS1kaXNjb3ZlclwiOiAhaXNBYnNvbHV0ZSAmJiBkaXNjb3ZlciA9PT0gXCJyZW5kZXJcIiA/IFwidHJ1ZVwiIDogdm9pZCAwXG4gICAgICB9XG4gICAgKTtcbiAgfVxuKTtcbkZvcm0uZGlzcGxheU5hbWUgPSBcIkZvcm1cIjtcbmZ1bmN0aW9uIFNjcm9sbFJlc3RvcmF0aW9uKHtcbiAgZ2V0S2V5LFxuICBzdG9yYWdlS2V5LFxuICAuLi5wcm9wc1xufSkge1xuICBsZXQgcmVtaXhDb250ZXh0ID0gUmVhY3QxMC51c2VDb250ZXh0KEZyYW1ld29ya0NvbnRleHQpO1xuICBsZXQgeyBiYXNlbmFtZSB9ID0gUmVhY3QxMC51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IG1hdGNoZXMgPSB1c2VNYXRjaGVzKCk7XG4gIHVzZVNjcm9sbFJlc3RvcmF0aW9uKHsgZ2V0S2V5LCBzdG9yYWdlS2V5IH0pO1xuICBsZXQgc3NyS2V5ID0gUmVhY3QxMC51c2VNZW1vKFxuICAgICgpID0+IHtcbiAgICAgIGlmICghcmVtaXhDb250ZXh0IHx8ICFnZXRLZXkpIHJldHVybiBudWxsO1xuICAgICAgbGV0IHVzZXJLZXkgPSBnZXRTY3JvbGxSZXN0b3JhdGlvbktleShcbiAgICAgICAgbG9jYXRpb24sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGJhc2VuYW1lLFxuICAgICAgICBnZXRLZXlcbiAgICAgICk7XG4gICAgICByZXR1cm4gdXNlcktleSAhPT0gbG9jYXRpb24ua2V5ID8gdXNlcktleSA6IG51bGw7XG4gICAgfSxcbiAgICAvLyBOYWgsIHdlIG9ubHkgbmVlZCB0aGlzIHRoZSBmaXJzdCB0aW1lIGZvciB0aGUgU1NSIHJlbmRlclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICBbXVxuICApO1xuICBpZiAoIXJlbWl4Q29udGV4dCB8fCByZW1peENvbnRleHQuaXNTcGFNb2RlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgbGV0IHJlc3RvcmVTY3JvbGwgPSAoKHN0b3JhZ2VLZXkyLCByZXN0b3JlS2V5KSA9PiB7XG4gICAgaWYgKCF3aW5kb3cuaGlzdG9yeS5zdGF0ZSB8fCAhd2luZG93Lmhpc3Rvcnkuc3RhdGUua2V5KSB7XG4gICAgICBsZXQga2V5ID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzMikuc2xpY2UoMik7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoeyBrZXkgfSwgXCJcIik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsZXQgcG9zaXRpb25zID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHN0b3JhZ2VLZXkyKSB8fCBcInt9XCIpO1xuICAgICAgbGV0IHN0b3JlZFkgPSBwb3NpdGlvbnNbcmVzdG9yZUtleSB8fCB3aW5kb3cuaGlzdG9yeS5zdGF0ZS5rZXldO1xuICAgICAgaWYgKHR5cGVvZiBzdG9yZWRZID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBzdG9yZWRZKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHN0b3JhZ2VLZXkyKTtcbiAgICB9XG4gIH0pLnRvU3RyaW5nKCk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgIFwic2NyaXB0XCIsXG4gICAge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6IHRydWUsXG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICBfX2h0bWw6IGAoJHtyZXN0b3JlU2Nyb2xsfSkoJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBzdG9yYWdlS2V5IHx8IFNDUk9MTF9SRVNUT1JBVElPTl9TVE9SQUdFX0tFWVxuICAgICAgICApfSwgJHtKU09OLnN0cmluZ2lmeShzc3JLZXkpfSlgXG4gICAgICB9XG4gICAgfVxuICApO1xufVxuU2Nyb2xsUmVzdG9yYXRpb24uZGlzcGxheU5hbWUgPSBcIlNjcm9sbFJlc3RvcmF0aW9uXCI7XG5mdW5jdGlvbiBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yMihob29rTmFtZSkge1xuICByZXR1cm4gYCR7aG9va05hbWV9IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBkYXRhIHJvdXRlci4gIFNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9lbi9tYWluL3JvdXRlcnMvcGlja2luZy1hLXJvdXRlci5gO1xufVxuZnVuY3Rpb24gdXNlRGF0YVJvdXRlckNvbnRleHQzKGhvb2tOYW1lKSB7XG4gIGxldCBjdHggPSBSZWFjdDEwLnVzZUNvbnRleHQoRGF0YVJvdXRlckNvbnRleHQpO1xuICBpbnZhcmlhbnQoY3R4LCBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yMihob29rTmFtZSkpO1xuICByZXR1cm4gY3R4O1xufVxuZnVuY3Rpb24gdXNlRGF0YVJvdXRlclN0YXRlMihob29rTmFtZSkge1xuICBsZXQgc3RhdGUgPSBSZWFjdDEwLnVzZUNvbnRleHQoRGF0YVJvdXRlclN0YXRlQ29udGV4dCk7XG4gIGludmFyaWFudChzdGF0ZSwgZ2V0RGF0YVJvdXRlckNvbnNvbGVFcnJvcjIoaG9va05hbWUpKTtcbiAgcmV0dXJuIHN0YXRlO1xufVxuZnVuY3Rpb24gdXNlTGlua0NsaWNrSGFuZGxlcih0bywge1xuICB0YXJnZXQsXG4gIHJlcGxhY2U6IHJlcGxhY2VQcm9wLFxuICBzdGF0ZSxcbiAgcHJldmVudFNjcm9sbFJlc2V0LFxuICByZWxhdGl2ZSxcbiAgdmlld1RyYW5zaXRpb25cbn0gPSB7fSkge1xuICBsZXQgbmF2aWdhdGUgPSB1c2VOYXZpZ2F0ZSgpO1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgcGF0aCA9IHVzZVJlc29sdmVkUGF0aCh0bywgeyByZWxhdGl2ZSB9KTtcbiAgcmV0dXJuIFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoc2hvdWxkUHJvY2Vzc0xpbmtDbGljayhldmVudCwgdGFyZ2V0KSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBsZXQgcmVwbGFjZTIgPSByZXBsYWNlUHJvcCAhPT0gdm9pZCAwID8gcmVwbGFjZVByb3AgOiBjcmVhdGVQYXRoKGxvY2F0aW9uKSA9PT0gY3JlYXRlUGF0aChwYXRoKTtcbiAgICAgICAgbmF2aWdhdGUodG8sIHtcbiAgICAgICAgICByZXBsYWNlOiByZXBsYWNlMixcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgICAgcmVsYXRpdmUsXG4gICAgICAgICAgdmlld1RyYW5zaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBsb2NhdGlvbixcbiAgICAgIG5hdmlnYXRlLFxuICAgICAgcGF0aCxcbiAgICAgIHJlcGxhY2VQcm9wLFxuICAgICAgc3RhdGUsXG4gICAgICB0YXJnZXQsXG4gICAgICB0byxcbiAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgIHJlbGF0aXZlLFxuICAgICAgdmlld1RyYW5zaXRpb25cbiAgICBdXG4gICk7XG59XG5mdW5jdGlvbiB1c2VTZWFyY2hQYXJhbXMoZGVmYXVsdEluaXQpIHtcbiAgd2FybmluZyhcbiAgICB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zICE9PSBcInVuZGVmaW5lZFwiLFxuICAgIGBZb3UgY2Fubm90IHVzZSB0aGUgXFxgdXNlU2VhcmNoUGFyYW1zXFxgIGhvb2sgaW4gYSBicm93c2VyIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgVVJMU2VhcmNoUGFyYW1zIEFQSS4gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBJbnRlcm5ldCBFeHBsb3JlciAxMSwgd2UgcmVjb21tZW5kIHlvdSBsb2FkIGEgcG9seWZpbGwgc3VjaCBhcyBodHRwczovL2dpdGh1Yi5jb20vdW5nYXAvdXJsLXNlYXJjaC1wYXJhbXMuYFxuICApO1xuICBsZXQgZGVmYXVsdFNlYXJjaFBhcmFtc1JlZiA9IFJlYWN0MTAudXNlUmVmKGNyZWF0ZVNlYXJjaFBhcmFtcyhkZWZhdWx0SW5pdCkpO1xuICBsZXQgaGFzU2V0U2VhcmNoUGFyYW1zUmVmID0gUmVhY3QxMC51c2VSZWYoZmFsc2UpO1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgc2VhcmNoUGFyYW1zID0gUmVhY3QxMC51c2VNZW1vKFxuICAgICgpID0+IChcbiAgICAgIC8vIE9ubHkgbWVyZ2UgaW4gdGhlIGRlZmF1bHRzIGlmIHdlIGhhdmVuJ3QgeWV0IGNhbGxlZCBzZXRTZWFyY2hQYXJhbXMuXG4gICAgICAvLyBPbmNlIHdlIGNhbGwgdGhhdCB3ZSB3YW50IHRob3NlIHRvIHRha2UgcHJlY2VkZW5jZSwgb3RoZXJ3aXNlIHlvdSBjYW4ndFxuICAgICAgLy8gcmVtb3ZlIGEgcGFyYW0gd2l0aCBzZXRTZWFyY2hQYXJhbXMoe30pIGlmIGl0IGhhcyBhbiBpbml0aWFsIHZhbHVlXG4gICAgICBnZXRTZWFyY2hQYXJhbXNGb3JMb2NhdGlvbihcbiAgICAgICAgbG9jYXRpb24uc2VhcmNoLFxuICAgICAgICBoYXNTZXRTZWFyY2hQYXJhbXNSZWYuY3VycmVudCA/IG51bGwgOiBkZWZhdWx0U2VhcmNoUGFyYW1zUmVmLmN1cnJlbnRcbiAgICAgIClcbiAgICApLFxuICAgIFtsb2NhdGlvbi5zZWFyY2hdXG4gICk7XG4gIGxldCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XG4gIGxldCBzZXRTZWFyY2hQYXJhbXMgPSBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIChuZXh0SW5pdCwgbmF2aWdhdGVPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBuZXdTZWFyY2hQYXJhbXMgPSBjcmVhdGVTZWFyY2hQYXJhbXMoXG4gICAgICAgIHR5cGVvZiBuZXh0SW5pdCA9PT0gXCJmdW5jdGlvblwiID8gbmV4dEluaXQoc2VhcmNoUGFyYW1zKSA6IG5leHRJbml0XG4gICAgICApO1xuICAgICAgaGFzU2V0U2VhcmNoUGFyYW1zUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgbmF2aWdhdGUoXCI/XCIgKyBuZXdTZWFyY2hQYXJhbXMsIG5hdmlnYXRlT3B0aW9ucyk7XG4gICAgfSxcbiAgICBbbmF2aWdhdGUsIHNlYXJjaFBhcmFtc11cbiAgKTtcbiAgcmV0dXJuIFtzZWFyY2hQYXJhbXMsIHNldFNlYXJjaFBhcmFtc107XG59XG52YXIgZmV0Y2hlcklkID0gMDtcbnZhciBnZXRVbmlxdWVGZXRjaGVySWQgPSAoKSA9PiBgX18ke1N0cmluZygrK2ZldGNoZXJJZCl9X19gO1xuZnVuY3Rpb24gdXNlU3VibWl0KCkge1xuICBsZXQgeyByb3V0ZXIgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0MyhcInVzZVN1Ym1pdFwiIC8qIFVzZVN1Ym1pdCAqLyk7XG4gIGxldCB7IGJhc2VuYW1lIH0gPSBSZWFjdDEwLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICBsZXQgY3VycmVudFJvdXRlSWQgPSB1c2VSb3V0ZUlkKCk7XG4gIHJldHVybiBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh0YXJnZXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgbGV0IHsgYWN0aW9uLCBtZXRob2QsIGVuY1R5cGUsIGZvcm1EYXRhLCBib2R5IH0gPSBnZXRGb3JtU3VibWlzc2lvbkluZm8oXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgYmFzZW5hbWVcbiAgICAgICk7XG4gICAgICBpZiAob3B0aW9ucy5uYXZpZ2F0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgbGV0IGtleSA9IG9wdGlvbnMuZmV0Y2hlcktleSB8fCBnZXRVbmlxdWVGZXRjaGVySWQoKTtcbiAgICAgICAgYXdhaXQgcm91dGVyLmZldGNoKGtleSwgY3VycmVudFJvdXRlSWQsIG9wdGlvbnMuYWN0aW9uIHx8IGFjdGlvbiwge1xuICAgICAgICAgIHByZXZlbnRTY3JvbGxSZXNldDogb3B0aW9ucy5wcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgYm9keSxcbiAgICAgICAgICBmb3JtTWV0aG9kOiBvcHRpb25zLm1ldGhvZCB8fCBtZXRob2QsXG4gICAgICAgICAgZm9ybUVuY1R5cGU6IG9wdGlvbnMuZW5jVHlwZSB8fCBlbmNUeXBlLFxuICAgICAgICAgIGZsdXNoU3luYzogb3B0aW9ucy5mbHVzaFN5bmNcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCByb3V0ZXIubmF2aWdhdGUob3B0aW9ucy5hY3Rpb24gfHwgYWN0aW9uLCB7XG4gICAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0OiBvcHRpb25zLnByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGZvcm1NZXRob2Q6IG9wdGlvbnMubWV0aG9kIHx8IG1ldGhvZCxcbiAgICAgICAgICBmb3JtRW5jVHlwZTogb3B0aW9ucy5lbmNUeXBlIHx8IGVuY1R5cGUsXG4gICAgICAgICAgcmVwbGFjZTogb3B0aW9ucy5yZXBsYWNlLFxuICAgICAgICAgIHN0YXRlOiBvcHRpb25zLnN0YXRlLFxuICAgICAgICAgIGZyb21Sb3V0ZUlkOiBjdXJyZW50Um91dGVJZCxcbiAgICAgICAgICBmbHVzaFN5bmM6IG9wdGlvbnMuZmx1c2hTeW5jLFxuICAgICAgICAgIHZpZXdUcmFuc2l0aW9uOiBvcHRpb25zLnZpZXdUcmFuc2l0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3JvdXRlciwgYmFzZW5hbWUsIGN1cnJlbnRSb3V0ZUlkXVxuICApO1xufVxuZnVuY3Rpb24gdXNlRm9ybUFjdGlvbihhY3Rpb24sIHsgcmVsYXRpdmUgfSA9IHt9KSB7XG4gIGxldCB7IGJhc2VuYW1lIH0gPSBSZWFjdDEwLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICBsZXQgcm91dGVDb250ZXh0ID0gUmVhY3QxMC51c2VDb250ZXh0KFJvdXRlQ29udGV4dCk7XG4gIGludmFyaWFudChyb3V0ZUNvbnRleHQsIFwidXNlRm9ybUFjdGlvbiBtdXN0IGJlIHVzZWQgaW5zaWRlIGEgUm91dGVDb250ZXh0XCIpO1xuICBsZXQgW21hdGNoXSA9IHJvdXRlQ29udGV4dC5tYXRjaGVzLnNsaWNlKC0xKTtcbiAgbGV0IHBhdGggPSB7IC4uLnVzZVJlc29sdmVkUGF0aChhY3Rpb24gPyBhY3Rpb24gOiBcIi5cIiwgeyByZWxhdGl2ZSB9KSB9O1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBpZiAoYWN0aW9uID09IG51bGwpIHtcbiAgICBwYXRoLnNlYXJjaCA9IGxvY2F0aW9uLnNlYXJjaDtcbiAgICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXRoLnNlYXJjaCk7XG4gICAgbGV0IGluZGV4VmFsdWVzID0gcGFyYW1zLmdldEFsbChcImluZGV4XCIpO1xuICAgIGxldCBoYXNOYWtlZEluZGV4UGFyYW0gPSBpbmRleFZhbHVlcy5zb21lKCh2KSA9PiB2ID09PSBcIlwiKTtcbiAgICBpZiAoaGFzTmFrZWRJbmRleFBhcmFtKSB7XG4gICAgICBwYXJhbXMuZGVsZXRlKFwiaW5kZXhcIik7XG4gICAgICBpbmRleFZhbHVlcy5maWx0ZXIoKHYpID0+IHYpLmZvckVhY2goKHYpID0+IHBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB2KSk7XG4gICAgICBsZXQgcXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgIHBhdGguc2VhcmNoID0gcXMgPyBgPyR7cXN9YCA6IFwiXCI7XG4gICAgfVxuICB9XG4gIGlmICgoIWFjdGlvbiB8fCBhY3Rpb24gPT09IFwiLlwiKSAmJiBtYXRjaC5yb3V0ZS5pbmRleCkge1xuICAgIHBhdGguc2VhcmNoID0gcGF0aC5zZWFyY2ggPyBwYXRoLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgXCI/aW5kZXgmXCIpIDogXCI/aW5kZXhcIjtcbiAgfVxuICBpZiAoYmFzZW5hbWUgIT09IFwiL1wiKSB7XG4gICAgcGF0aC5wYXRobmFtZSA9IHBhdGgucGF0aG5hbWUgPT09IFwiL1wiID8gYmFzZW5hbWUgOiBqb2luUGF0aHMoW2Jhc2VuYW1lLCBwYXRoLnBhdGhuYW1lXSk7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVBhdGgocGF0aCk7XG59XG5mdW5jdGlvbiB1c2VGZXRjaGVyKHtcbiAga2V5XG59ID0ge30pIHtcbiAgbGV0IHsgcm91dGVyIH0gPSB1c2VEYXRhUm91dGVyQ29udGV4dDMoXCJ1c2VGZXRjaGVyXCIgLyogVXNlRmV0Y2hlciAqLyk7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZTIoXCJ1c2VGZXRjaGVyXCIgLyogVXNlRmV0Y2hlciAqLyk7XG4gIGxldCBmZXRjaGVyRGF0YSA9IFJlYWN0MTAudXNlQ29udGV4dChGZXRjaGVyc0NvbnRleHQpO1xuICBsZXQgcm91dGUgPSBSZWFjdDEwLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHJvdXRlSWQgPSByb3V0ZS5tYXRjaGVzW3JvdXRlLm1hdGNoZXMubGVuZ3RoIC0gMV0/LnJvdXRlLmlkO1xuICBpbnZhcmlhbnQoZmV0Y2hlckRhdGEsIGB1c2VGZXRjaGVyIG11c3QgYmUgdXNlZCBpbnNpZGUgYSBGZXRjaGVyc0NvbnRleHRgKTtcbiAgaW52YXJpYW50KHJvdXRlLCBgdXNlRmV0Y2hlciBtdXN0IGJlIHVzZWQgaW5zaWRlIGEgUm91dGVDb250ZXh0YCk7XG4gIGludmFyaWFudChcbiAgICByb3V0ZUlkICE9IG51bGwsXG4gICAgYHVzZUZldGNoZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiByb3V0ZXMgdGhhdCBjb250YWluIGEgdW5pcXVlIFwiaWRcImBcbiAgKTtcbiAgbGV0IGRlZmF1bHRLZXkgPSBSZWFjdDEwLnVzZUlkKCk7XG4gIGxldCBbZmV0Y2hlcktleSwgc2V0RmV0Y2hlcktleV0gPSBSZWFjdDEwLnVzZVN0YXRlKGtleSB8fCBkZWZhdWx0S2V5KTtcbiAgaWYgKGtleSAmJiBrZXkgIT09IGZldGNoZXJLZXkpIHtcbiAgICBzZXRGZXRjaGVyS2V5KGtleSk7XG4gIH1cbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJvdXRlci5nZXRGZXRjaGVyKGZldGNoZXJLZXkpO1xuICAgIHJldHVybiAoKSA9PiByb3V0ZXIuZGVsZXRlRmV0Y2hlcihmZXRjaGVyS2V5KTtcbiAgfSwgW3JvdXRlciwgZmV0Y2hlcktleV0pO1xuICBsZXQgbG9hZCA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGhyZWYsIG9wdHMpID0+IHtcbiAgICAgIGludmFyaWFudChyb3V0ZUlkLCBcIk5vIHJvdXRlSWQgYXZhaWxhYmxlIGZvciBmZXRjaGVyLmxvYWQoKVwiKTtcbiAgICAgIGF3YWl0IHJvdXRlci5mZXRjaChmZXRjaGVyS2V5LCByb3V0ZUlkLCBocmVmLCBvcHRzKTtcbiAgICB9LFxuICAgIFtmZXRjaGVyS2V5LCByb3V0ZUlkLCByb3V0ZXJdXG4gICk7XG4gIGxldCBzdWJtaXRJbXBsID0gdXNlU3VibWl0KCk7XG4gIGxldCBzdWJtaXQgPSBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh0YXJnZXQsIG9wdHMpID0+IHtcbiAgICAgIGF3YWl0IHN1Ym1pdEltcGwodGFyZ2V0LCB7XG4gICAgICAgIC4uLm9wdHMsXG4gICAgICAgIG5hdmlnYXRlOiBmYWxzZSxcbiAgICAgICAgZmV0Y2hlcktleVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbZmV0Y2hlcktleSwgc3VibWl0SW1wbF1cbiAgKTtcbiAgbGV0IEZldGNoZXJGb3JtID0gUmVhY3QxMC51c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgRmV0Y2hlckZvcm0yID0gUmVhY3QxMC5mb3J3YXJkUmVmKFxuICAgICAgKHByb3BzLCByZWYpID0+IHtcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEwLmNyZWF0ZUVsZW1lbnQoRm9ybSwgeyAuLi5wcm9wcywgbmF2aWdhdGU6IGZhbHNlLCBmZXRjaGVyS2V5LCByZWYgfSk7XG4gICAgICB9XG4gICAgKTtcbiAgICBGZXRjaGVyRm9ybTIuZGlzcGxheU5hbWUgPSBcImZldGNoZXIuRm9ybVwiO1xuICAgIHJldHVybiBGZXRjaGVyRm9ybTI7XG4gIH0sIFtmZXRjaGVyS2V5XSk7XG4gIGxldCBmZXRjaGVyID0gc3RhdGUuZmV0Y2hlcnMuZ2V0KGZldGNoZXJLZXkpIHx8IElETEVfRkVUQ0hFUjtcbiAgbGV0IGRhdGEyID0gZmV0Y2hlckRhdGEuZ2V0KGZldGNoZXJLZXkpO1xuICBsZXQgZmV0Y2hlcldpdGhDb21wb25lbnRzID0gUmVhY3QxMC51c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBGb3JtOiBGZXRjaGVyRm9ybSxcbiAgICAgIHN1Ym1pdCxcbiAgICAgIGxvYWQsXG4gICAgICAuLi5mZXRjaGVyLFxuICAgICAgZGF0YTogZGF0YTJcbiAgICB9KSxcbiAgICBbRmV0Y2hlckZvcm0sIHN1Ym1pdCwgbG9hZCwgZmV0Y2hlciwgZGF0YTJdXG4gICk7XG4gIHJldHVybiBmZXRjaGVyV2l0aENvbXBvbmVudHM7XG59XG5mdW5jdGlvbiB1c2VGZXRjaGVycygpIHtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlMihcInVzZUZldGNoZXJzXCIgLyogVXNlRmV0Y2hlcnMgKi8pO1xuICByZXR1cm4gQXJyYXkuZnJvbShzdGF0ZS5mZXRjaGVycy5lbnRyaWVzKCkpLm1hcCgoW2tleSwgZmV0Y2hlcl0pID0+ICh7XG4gICAgLi4uZmV0Y2hlcixcbiAgICBrZXlcbiAgfSkpO1xufVxudmFyIFNDUk9MTF9SRVNUT1JBVElPTl9TVE9SQUdFX0tFWSA9IFwicmVhY3Qtcm91dGVyLXNjcm9sbC1wb3NpdGlvbnNcIjtcbnZhciBzYXZlZFNjcm9sbFBvc2l0aW9ucyA9IHt9O1xuZnVuY3Rpb24gZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkobG9jYXRpb24sIG1hdGNoZXMsIGJhc2VuYW1lLCBnZXRLZXkpIHtcbiAgbGV0IGtleSA9IG51bGw7XG4gIGlmIChnZXRLZXkpIHtcbiAgICBpZiAoYmFzZW5hbWUgIT09IFwiL1wiKSB7XG4gICAgICBrZXkgPSBnZXRLZXkoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5sb2NhdGlvbixcbiAgICAgICAgICBwYXRobmFtZTogc3RyaXBCYXNlbmFtZShsb2NhdGlvbi5wYXRobmFtZSwgYmFzZW5hbWUpIHx8IGxvY2F0aW9uLnBhdGhuYW1lXG4gICAgICAgIH0sXG4gICAgICAgIG1hdGNoZXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleSA9IGdldEtleShsb2NhdGlvbiwgbWF0Y2hlcyk7XG4gICAgfVxuICB9XG4gIGlmIChrZXkgPT0gbnVsbCkge1xuICAgIGtleSA9IGxvY2F0aW9uLmtleTtcbiAgfVxuICByZXR1cm4ga2V5O1xufVxuZnVuY3Rpb24gdXNlU2Nyb2xsUmVzdG9yYXRpb24oe1xuICBnZXRLZXksXG4gIHN0b3JhZ2VLZXlcbn0gPSB7fSkge1xuICBsZXQgeyByb3V0ZXIgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0MyhcInVzZVNjcm9sbFJlc3RvcmF0aW9uXCIgLyogVXNlU2Nyb2xsUmVzdG9yYXRpb24gKi8pO1xuICBsZXQgeyByZXN0b3JlU2Nyb2xsUG9zaXRpb24sIHByZXZlbnRTY3JvbGxSZXNldCB9ID0gdXNlRGF0YVJvdXRlclN0YXRlMihcbiAgICBcInVzZVNjcm9sbFJlc3RvcmF0aW9uXCIgLyogVXNlU2Nyb2xsUmVzdG9yYXRpb24gKi9cbiAgKTtcbiAgbGV0IHsgYmFzZW5hbWUgfSA9IFJlYWN0MTAudXNlQ29udGV4dChOYXZpZ2F0aW9uQ29udGV4dCk7XG4gIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCBtYXRjaGVzID0gdXNlTWF0Y2hlcygpO1xuICBsZXQgbmF2aWdhdGlvbiA9IHVzZU5hdmlnYXRpb24oKTtcbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5oaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uID0gXCJtYW51YWxcIjtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb24gPSBcImF1dG9cIjtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHVzZVBhZ2VIaWRlKFxuICAgIFJlYWN0MTAudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKG5hdmlnYXRpb24uc3RhdGUgPT09IFwiaWRsZVwiKSB7XG4gICAgICAgIGxldCBrZXkgPSBnZXRTY3JvbGxSZXN0b3JhdGlvbktleShsb2NhdGlvbiwgbWF0Y2hlcywgYmFzZW5hbWUsIGdldEtleSk7XG4gICAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb25zW2tleV0gPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgc3RvcmFnZUtleSB8fCBTQ1JPTExfUkVTVE9SQVRJT05fU1RPUkFHRV9LRVksXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc2F2ZWRTY3JvbGxQb3NpdGlvbnMpXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIGBGYWlsZWQgdG8gc2F2ZSBzY3JvbGwgcG9zaXRpb25zIGluIHNlc3Npb25TdG9yYWdlLCA8U2Nyb2xsUmVzdG9yYXRpb24gLz4gd2lsbCBub3Qgd29yayBwcm9wZXJseSAoJHtlcnJvcn0pLmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5oaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uID0gXCJhdXRvXCI7XG4gICAgfSwgW25hdmlnYXRpb24uc3RhdGUsIGdldEtleSwgYmFzZW5hbWUsIGxvY2F0aW9uLCBtYXRjaGVzLCBzdG9yYWdlS2V5XSlcbiAgKTtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIFJlYWN0MTAudXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBzZXNzaW9uUG9zaXRpb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgICAgICBzdG9yYWdlS2V5IHx8IFNDUk9MTF9SRVNUT1JBVElPTl9TVE9SQUdFX0tFWVxuICAgICAgICApO1xuICAgICAgICBpZiAoc2Vzc2lvblBvc2l0aW9ucykge1xuICAgICAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb25zID0gSlNPTi5wYXJzZShzZXNzaW9uUG9zaXRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgIH0sIFtzdG9yYWdlS2V5XSk7XG4gICAgUmVhY3QxMC51c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgbGV0IGRpc2FibGVTY3JvbGxSZXN0b3JhdGlvbiA9IHJvdXRlcj8uZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24oXG4gICAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb25zLFxuICAgICAgICAoKSA9PiB3aW5kb3cuc2Nyb2xsWSxcbiAgICAgICAgZ2V0S2V5ID8gKGxvY2F0aW9uMiwgbWF0Y2hlczIpID0+IGdldFNjcm9sbFJlc3RvcmF0aW9uS2V5KGxvY2F0aW9uMiwgbWF0Y2hlczIsIGJhc2VuYW1lLCBnZXRLZXkpIDogdm9pZCAwXG4gICAgICApO1xuICAgICAgcmV0dXJuICgpID0+IGRpc2FibGVTY3JvbGxSZXN0b3JhdGlvbiAmJiBkaXNhYmxlU2Nyb2xsUmVzdG9yYXRpb24oKTtcbiAgICB9LCBbcm91dGVyLCBiYXNlbmFtZSwgZ2V0S2V5XSk7XG4gICAgUmVhY3QxMC51c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHJlc3RvcmVTY3JvbGxQb3NpdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiByZXN0b3JlU2Nyb2xsUG9zaXRpb24gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHJlc3RvcmVTY3JvbGxQb3NpdGlvbik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChsb2NhdGlvbi5oYXNoKSB7XG4gICAgICAgIGxldCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgIGRlY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5oYXNoLnNsaWNlKDEpKVxuICAgICAgICApO1xuICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICBlbC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByZXZlbnRTY3JvbGxSZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgfSwgW2xvY2F0aW9uLCByZXN0b3JlU2Nyb2xsUG9zaXRpb24sIHByZXZlbnRTY3JvbGxSZXNldF0pO1xuICB9XG59XG5mdW5jdGlvbiB1c2VCZWZvcmVVbmxvYWQoY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgbGV0IHsgY2FwdHVyZSB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBvcHRzID0gY2FwdHVyZSAhPSBudWxsID8geyBjYXB0dXJlIH0gOiB2b2lkIDA7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwgY2FsbGJhY2ssIG9wdHMpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCBjYWxsYmFjaywgb3B0cyk7XG4gICAgfTtcbiAgfSwgW2NhbGxiYWNrLCBjYXB0dXJlXSk7XG59XG5mdW5jdGlvbiB1c2VQYWdlSGlkZShjYWxsYmFjaywgb3B0aW9ucykge1xuICBsZXQgeyBjYXB0dXJlIH0gPSBvcHRpb25zIHx8IHt9O1xuICBSZWFjdDEwLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IG9wdHMgPSBjYXB0dXJlICE9IG51bGwgPyB7IGNhcHR1cmUgfSA6IHZvaWQgMDtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBhZ2VoaWRlXCIsIGNhbGxiYWNrLCBvcHRzKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwYWdlaGlkZVwiLCBjYWxsYmFjaywgb3B0cyk7XG4gICAgfTtcbiAgfSwgW2NhbGxiYWNrLCBjYXB0dXJlXSk7XG59XG5mdW5jdGlvbiB1c2VQcm9tcHQoe1xuICB3aGVuLFxuICBtZXNzYWdlXG59KSB7XG4gIGxldCBibG9ja2VyID0gdXNlQmxvY2tlcih3aGVuKTtcbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChibG9ja2VyLnN0YXRlID09PSBcImJsb2NrZWRcIikge1xuICAgICAgbGV0IHByb2NlZWQgPSB3aW5kb3cuY29uZmlybShtZXNzYWdlKTtcbiAgICAgIGlmIChwcm9jZWVkKSB7XG4gICAgICAgIHNldFRpbWVvdXQoYmxvY2tlci5wcm9jZWVkLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJsb2NrZXIucmVzZXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtibG9ja2VyLCBtZXNzYWdlXSk7XG4gIFJlYWN0MTAudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYmxvY2tlci5zdGF0ZSA9PT0gXCJibG9ja2VkXCIgJiYgIXdoZW4pIHtcbiAgICAgIGJsb2NrZXIucmVzZXQoKTtcbiAgICB9XG4gIH0sIFtibG9ja2VyLCB3aGVuXSk7XG59XG5mdW5jdGlvbiB1c2VWaWV3VHJhbnNpdGlvblN0YXRlKHRvLCBvcHRzID0ge30pIHtcbiAgbGV0IHZ0Q29udGV4dCA9IFJlYWN0MTAudXNlQ29udGV4dChWaWV3VHJhbnNpdGlvbkNvbnRleHQpO1xuICBpbnZhcmlhbnQoXG4gICAgdnRDb250ZXh0ICE9IG51bGwsXG4gICAgXCJgdXNlVmlld1RyYW5zaXRpb25TdGF0ZWAgbXVzdCBiZSB1c2VkIHdpdGhpbiBgcmVhY3Qtcm91dGVyLWRvbWAncyBgUm91dGVyUHJvdmlkZXJgLiAgRGlkIHlvdSBhY2NpZGVudGFsbHkgaW1wb3J0IGBSb3V0ZXJQcm92aWRlcmAgZnJvbSBgcmVhY3Qtcm91dGVyYD9cIlxuICApO1xuICBsZXQgeyBiYXNlbmFtZSB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQzKFxuICAgIFwidXNlVmlld1RyYW5zaXRpb25TdGF0ZVwiIC8qIHVzZVZpZXdUcmFuc2l0aW9uU3RhdGUgKi9cbiAgKTtcbiAgbGV0IHBhdGggPSB1c2VSZXNvbHZlZFBhdGgodG8sIHsgcmVsYXRpdmU6IG9wdHMucmVsYXRpdmUgfSk7XG4gIGlmICghdnRDb250ZXh0LmlzVHJhbnNpdGlvbmluZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBsZXQgY3VycmVudFBhdGggPSBzdHJpcEJhc2VuYW1lKHZ0Q29udGV4dC5jdXJyZW50TG9jYXRpb24ucGF0aG5hbWUsIGJhc2VuYW1lKSB8fCB2dENvbnRleHQuY3VycmVudExvY2F0aW9uLnBhdGhuYW1lO1xuICBsZXQgbmV4dFBhdGggPSBzdHJpcEJhc2VuYW1lKHZ0Q29udGV4dC5uZXh0TG9jYXRpb24ucGF0aG5hbWUsIGJhc2VuYW1lKSB8fCB2dENvbnRleHQubmV4dExvY2F0aW9uLnBhdGhuYW1lO1xuICByZXR1cm4gbWF0Y2hQYXRoKHBhdGgucGF0aG5hbWUsIG5leHRQYXRoKSAhPSBudWxsIHx8IG1hdGNoUGF0aChwYXRoLnBhdGhuYW1lLCBjdXJyZW50UGF0aCkgIT0gbnVsbDtcbn1cblxuLy8gbGliL2RvbS9zZXJ2ZXIudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDExIGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gU3RhdGljUm91dGVyKHtcbiAgYmFzZW5hbWUsXG4gIGNoaWxkcmVuLFxuICBsb2NhdGlvbjogbG9jYXRpb25Qcm9wID0gXCIvXCJcbn0pIHtcbiAgaWYgKHR5cGVvZiBsb2NhdGlvblByb3AgPT09IFwic3RyaW5nXCIpIHtcbiAgICBsb2NhdGlvblByb3AgPSBwYXJzZVBhdGgobG9jYXRpb25Qcm9wKTtcbiAgfVxuICBsZXQgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gIGxldCBsb2NhdGlvbiA9IHtcbiAgICBwYXRobmFtZTogbG9jYXRpb25Qcm9wLnBhdGhuYW1lIHx8IFwiL1wiLFxuICAgIHNlYXJjaDogbG9jYXRpb25Qcm9wLnNlYXJjaCB8fCBcIlwiLFxuICAgIGhhc2g6IGxvY2F0aW9uUHJvcC5oYXNoIHx8IFwiXCIsXG4gICAgc3RhdGU6IGxvY2F0aW9uUHJvcC5zdGF0ZSAhPSBudWxsID8gbG9jYXRpb25Qcm9wLnN0YXRlIDogbnVsbCxcbiAgICBrZXk6IGxvY2F0aW9uUHJvcC5rZXkgfHwgXCJkZWZhdWx0XCJcbiAgfTtcbiAgbGV0IHN0YXRpY05hdmlnYXRvciA9IGdldFN0YXRlbGVzc05hdmlnYXRvcigpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChcbiAgICBSb3V0ZXIsXG4gICAge1xuICAgICAgYmFzZW5hbWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IGFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogc3RhdGljTmF2aWdhdG9yLFxuICAgICAgc3RhdGljOiB0cnVlXG4gICAgfVxuICApO1xufVxuZnVuY3Rpb24gU3RhdGljUm91dGVyUHJvdmlkZXIoe1xuICBjb250ZXh0LFxuICByb3V0ZXIsXG4gIGh5ZHJhdGUgPSB0cnVlLFxuICBub25jZVxufSkge1xuICBpbnZhcmlhbnQoXG4gICAgcm91dGVyICYmIGNvbnRleHQsXG4gICAgXCJZb3UgbXVzdCBwcm92aWRlIGByb3V0ZXJgIGFuZCBgY29udGV4dGAgdG8gPFN0YXRpY1JvdXRlclByb3ZpZGVyPlwiXG4gICk7XG4gIGxldCBkYXRhUm91dGVyQ29udGV4dCA9IHtcbiAgICByb3V0ZXIsXG4gICAgbmF2aWdhdG9yOiBnZXRTdGF0ZWxlc3NOYXZpZ2F0b3IoKSxcbiAgICBzdGF0aWM6IHRydWUsXG4gICAgc3RhdGljQ29udGV4dDogY29udGV4dCxcbiAgICBiYXNlbmFtZTogY29udGV4dC5iYXNlbmFtZSB8fCBcIi9cIlxuICB9O1xuICBsZXQgZmV0Y2hlcnNDb250ZXh0ID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgbGV0IGh5ZHJhdGVTY3JpcHQgPSBcIlwiO1xuICBpZiAoaHlkcmF0ZSAhPT0gZmFsc2UpIHtcbiAgICBsZXQgZGF0YTIgPSB7XG4gICAgICBsb2FkZXJEYXRhOiBjb250ZXh0LmxvYWRlckRhdGEsXG4gICAgICBhY3Rpb25EYXRhOiBjb250ZXh0LmFjdGlvbkRhdGEsXG4gICAgICBlcnJvcnM6IHNlcmlhbGl6ZUVycm9ycyhjb250ZXh0LmVycm9ycylcbiAgICB9O1xuICAgIGxldCBqc29uID0gaHRtbEVzY2FwZShKU09OLnN0cmluZ2lmeShKU09OLnN0cmluZ2lmeShkYXRhMikpKTtcbiAgICBoeWRyYXRlU2NyaXB0ID0gYHdpbmRvdy5fX3N0YXRpY1JvdXRlckh5ZHJhdGlvbkRhdGEgPSBKU09OLnBhcnNlKCR7anNvbn0pO2A7XG4gIH1cbiAgbGV0IHsgc3RhdGUgfSA9IGRhdGFSb3V0ZXJDb250ZXh0LnJvdXRlcjtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoUmVhY3QxMS5GcmFnbWVudCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChEYXRhUm91dGVyQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZGF0YVJvdXRlckNvbnRleHQgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChEYXRhUm91dGVyU3RhdGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBzdGF0ZSB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMS5jcmVhdGVFbGVtZW50KEZldGNoZXJzQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZmV0Y2hlcnNDb250ZXh0IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoVmlld1RyYW5zaXRpb25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IGlzVHJhbnNpdGlvbmluZzogZmFsc2UgfSB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMS5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZTogZGF0YVJvdXRlckNvbnRleHQuYmFzZW5hbWUsXG4gICAgICBsb2NhdGlvbjogc3RhdGUubG9jYXRpb24sXG4gICAgICBuYXZpZ2F0aW9uVHlwZTogc3RhdGUuaGlzdG9yeUFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogZGF0YVJvdXRlckNvbnRleHQubmF2aWdhdG9yLFxuICAgICAgc3RhdGljOiBkYXRhUm91dGVyQ29udGV4dC5zdGF0aWNcbiAgICB9LFxuICAgIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBEYXRhUm91dGVzMixcbiAgICAgIHtcbiAgICAgICAgcm91dGVzOiByb3V0ZXIucm91dGVzLFxuICAgICAgICBmdXR1cmU6IHJvdXRlci5mdXR1cmUsXG4gICAgICAgIHN0YXRlXG4gICAgICB9XG4gICAgKVxuICApKSkpKSwgaHlkcmF0ZVNjcmlwdCA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJzY3JpcHRcIixcbiAgICB7XG4gICAgICBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6IHRydWUsXG4gICAgICBub25jZSxcbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7IF9faHRtbDogaHlkcmF0ZVNjcmlwdCB9XG4gICAgfVxuICApIDogbnVsbCk7XG59XG5mdW5jdGlvbiBEYXRhUm91dGVzMih7XG4gIHJvdXRlcyxcbiAgZnV0dXJlLFxuICBzdGF0ZVxufSkge1xuICByZXR1cm4gdXNlUm91dGVzSW1wbChyb3V0ZXMsIHZvaWQgMCwgc3RhdGUsIGZ1dHVyZSk7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVFcnJvcnMoZXJyb3JzKSB7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gbnVsbDtcbiAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhlcnJvcnMpO1xuICBsZXQgc2VyaWFsaXplZCA9IHt9O1xuICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIGVudHJpZXMpIHtcbiAgICBpZiAoaXNSb3V0ZUVycm9yUmVzcG9uc2UodmFsKSkge1xuICAgICAgc2VyaWFsaXplZFtrZXldID0geyAuLi52YWwsIF9fdHlwZTogXCJSb3V0ZUVycm9yUmVzcG9uc2VcIiB9O1xuICAgIH0gZWxzZSBpZiAodmFsIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IHtcbiAgICAgICAgbWVzc2FnZTogdmFsLm1lc3NhZ2UsXG4gICAgICAgIF9fdHlwZTogXCJFcnJvclwiLFxuICAgICAgICAvLyBJZiB0aGlzIGlzIGEgc3ViY2xhc3MgKGkuZS4sIFJlZmVyZW5jZUVycm9yKSwgc2VuZCB1cCB0aGUgdHlwZSBzbyB3ZVxuICAgICAgICAvLyBjYW4gcmUtY3JlYXRlIHRoZSBzYW1lIHR5cGUgZHVyaW5nIGh5ZHJhdGlvbi5cbiAgICAgICAgLi4udmFsLm5hbWUgIT09IFwiRXJyb3JcIiA/IHtcbiAgICAgICAgICBfX3N1YlR5cGU6IHZhbC5uYW1lXG4gICAgICAgIH0gOiB7fVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VyaWFsaXplZFtrZXldID0gdmFsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2VyaWFsaXplZDtcbn1cbmZ1bmN0aW9uIGdldFN0YXRlbGVzc05hdmlnYXRvcigpIHtcbiAgcmV0dXJuIHtcbiAgICBjcmVhdGVIcmVmLFxuICAgIGVuY29kZUxvY2F0aW9uLFxuICAgIHB1c2godG8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBjYW5ub3QgdXNlIG5hdmlnYXRvci5wdXNoKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LiBUaGlzIGVycm9yIHdhcyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB5b3UgZGlkIGEgXFxgbmF2aWdhdGUoJHtKU09OLnN0cmluZ2lmeSh0byl9KVxcYCBzb21ld2hlcmUgaW4geW91ciBhcHAuYFxuICAgICAgKTtcbiAgICB9LFxuICAgIHJlcGxhY2UodG8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBjYW5ub3QgdXNlIG5hdmlnYXRvci5yZXBsYWNlKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LiBUaGlzIGVycm9yIHdhcyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB5b3UgZGlkIGEgXFxgbmF2aWdhdGUoJHtKU09OLnN0cmluZ2lmeSh0byl9LCB7IHJlcGxhY2U6IHRydWUgfSlcXGAgc29tZXdoZXJlIGluIHlvdXIgYXBwLmBcbiAgICAgICk7XG4gICAgfSxcbiAgICBnbyhkZWx0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbm5vdCB1c2UgbmF2aWdhdG9yLmdvKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LiBUaGlzIGVycm9yIHdhcyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB5b3UgZGlkIGEgXFxgbmF2aWdhdGUoJHtkZWx0YX0pXFxgIHNvbWV3aGVyZSBpbiB5b3VyIGFwcC5gXG4gICAgICApO1xuICAgIH0sXG4gICAgYmFjaygpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBjYW5ub3QgdXNlIG5hdmlnYXRvci5iYWNrKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LmBcbiAgICAgICk7XG4gICAgfSxcbiAgICBmb3J3YXJkKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbm5vdCB1c2UgbmF2aWdhdG9yLmZvcndhcmQoKSBvbiB0aGUgc2VydmVyIGJlY2F1c2UgaXQgaXMgYSBzdGF0ZWxlc3MgZW52aXJvbm1lbnQuYFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNIYW5kbGVyMihyb3V0ZXMsIG9wdHMpIHtcbiAgcmV0dXJuIGNyZWF0ZVN0YXRpY0hhbmRsZXIocm91dGVzLCB7XG4gICAgLi4ub3B0cyxcbiAgICBtYXBSb3V0ZVByb3BlcnRpZXNcbiAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNSb3V0ZXIocm91dGVzLCBjb250ZXh0LCBvcHRzID0ge30pIHtcbiAgbGV0IG1hbmlmZXN0ID0ge307XG4gIGxldCBkYXRhUm91dGVzID0gY29udmVydFJvdXRlc1RvRGF0YVJvdXRlcyhcbiAgICByb3V0ZXMsXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzLFxuICAgIHZvaWQgMCxcbiAgICBtYW5pZmVzdFxuICApO1xuICBsZXQgbWF0Y2hlcyA9IGNvbnRleHQubWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiB7XG4gICAgbGV0IHJvdXRlID0gbWFuaWZlc3RbbWF0Y2gucm91dGUuaWRdIHx8IG1hdGNoLnJvdXRlO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5tYXRjaCxcbiAgICAgIHJvdXRlXG4gICAgfTtcbiAgfSk7XG4gIGxldCBtc2cgPSAobWV0aG9kKSA9PiBgWW91IGNhbm5vdCB1c2Ugcm91dGVyLiR7bWV0aG9kfSgpIG9uIHRoZSBzZXJ2ZXIgYmVjYXVzZSBpdCBpcyBhIHN0YXRlbGVzcyBlbnZpcm9ubWVudGA7XG4gIHJldHVybiB7XG4gICAgZ2V0IGJhc2VuYW1lKCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuYmFzZW5hbWU7XG4gICAgfSxcbiAgICBnZXQgZnV0dXJlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3B0cz8uZnV0dXJlXG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0IHN0YXRlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGlzdG9yeUFjdGlvbjogXCJQT1BcIiAvKiBQb3AgKi8sXG4gICAgICAgIGxvY2F0aW9uOiBjb250ZXh0LmxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBsb2FkZXJEYXRhOiBjb250ZXh0LmxvYWRlckRhdGEsXG4gICAgICAgIGFjdGlvbkRhdGE6IGNvbnRleHQuYWN0aW9uRGF0YSxcbiAgICAgICAgZXJyb3JzOiBjb250ZXh0LmVycm9ycyxcbiAgICAgICAgaW5pdGlhbGl6ZWQ6IHRydWUsXG4gICAgICAgIG5hdmlnYXRpb246IElETEVfTkFWSUdBVElPTixcbiAgICAgICAgcmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBudWxsLFxuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IGZhbHNlLFxuICAgICAgICByZXZhbGlkYXRpb246IFwiaWRsZVwiLFxuICAgICAgICBmZXRjaGVyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSxcbiAgICAgICAgYmxvY2tlcnM6IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKClcbiAgICAgIH07XG4gICAgfSxcbiAgICBnZXQgcm91dGVzKCkge1xuICAgICAgcmV0dXJuIGRhdGFSb3V0ZXM7XG4gICAgfSxcbiAgICBnZXQgd2luZG93KCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9LFxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICB0aHJvdyBtc2coXCJpbml0aWFsaXplXCIpO1xuICAgIH0sXG4gICAgc3Vic2NyaWJlKCkge1xuICAgICAgdGhyb3cgbXNnKFwic3Vic2NyaWJlXCIpO1xuICAgIH0sXG4gICAgZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24oKSB7XG4gICAgICB0aHJvdyBtc2coXCJlbmFibGVTY3JvbGxSZXN0b3JhdGlvblwiKTtcbiAgICB9LFxuICAgIG5hdmlnYXRlKCkge1xuICAgICAgdGhyb3cgbXNnKFwibmF2aWdhdGVcIik7XG4gICAgfSxcbiAgICBmZXRjaCgpIHtcbiAgICAgIHRocm93IG1zZyhcImZldGNoXCIpO1xuICAgIH0sXG4gICAgcmV2YWxpZGF0ZSgpIHtcbiAgICAgIHRocm93IG1zZyhcInJldmFsaWRhdGVcIik7XG4gICAgfSxcbiAgICBjcmVhdGVIcmVmLFxuICAgIGVuY29kZUxvY2F0aW9uLFxuICAgIGdldEZldGNoZXIoKSB7XG4gICAgICByZXR1cm4gSURMRV9GRVRDSEVSO1xuICAgIH0sXG4gICAgZGVsZXRlRmV0Y2hlcigpIHtcbiAgICAgIHRocm93IG1zZyhcImRlbGV0ZUZldGNoZXJcIik7XG4gICAgfSxcbiAgICBkaXNwb3NlKCkge1xuICAgICAgdGhyb3cgbXNnKFwiZGlzcG9zZVwiKTtcbiAgICB9LFxuICAgIGdldEJsb2NrZXIoKSB7XG4gICAgICByZXR1cm4gSURMRV9CTE9DS0VSO1xuICAgIH0sXG4gICAgZGVsZXRlQmxvY2tlcigpIHtcbiAgICAgIHRocm93IG1zZyhcImRlbGV0ZUJsb2NrZXJcIik7XG4gICAgfSxcbiAgICBwYXRjaFJvdXRlcygpIHtcbiAgICAgIHRocm93IG1zZyhcInBhdGNoUm91dGVzXCIpO1xuICAgIH0sXG4gICAgX2ludGVybmFsRmV0Y2hDb250cm9sbGVyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSxcbiAgICBfaW50ZXJuYWxTZXRSb3V0ZXMoKSB7XG4gICAgICB0aHJvdyBtc2coXCJfaW50ZXJuYWxTZXRSb3V0ZXNcIik7XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlSHJlZih0bykge1xuICByZXR1cm4gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gdG8gOiBjcmVhdGVQYXRoKHRvKTtcbn1cbmZ1bmN0aW9uIGVuY29kZUxvY2F0aW9uKHRvKSB7XG4gIGxldCBocmVmID0gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gdG8gOiBjcmVhdGVQYXRoKHRvKTtcbiAgaHJlZiA9IGhyZWYucmVwbGFjZSgvICQvLCBcIiUyMFwiKTtcbiAgbGV0IGVuY29kZWQgPSBBQlNPTFVURV9VUkxfUkVHRVgzLnRlc3QoaHJlZikgPyBuZXcgVVJMKGhyZWYpIDogbmV3IFVSTChocmVmLCBcImh0dHA6Ly9sb2NhbGhvc3RcIik7XG4gIHJldHVybiB7XG4gICAgcGF0aG5hbWU6IGVuY29kZWQucGF0aG5hbWUsXG4gICAgc2VhcmNoOiBlbmNvZGVkLnNlYXJjaCxcbiAgICBoYXNoOiBlbmNvZGVkLmhhc2hcbiAgfTtcbn1cbnZhciBBQlNPTFVURV9VUkxfUkVHRVgzID0gL14oPzpbYS16XVthLXowLTkrLi1dKjp8XFwvXFwvKS9pO1xudmFyIEVTQ0FQRV9MT09LVVAyID0ge1xuICBcIiZcIjogXCJcXFxcdTAwMjZcIixcbiAgXCI+XCI6IFwiXFxcXHUwMDNlXCIsXG4gIFwiPFwiOiBcIlxcXFx1MDAzY1wiLFxuICBcIlxcdTIwMjhcIjogXCJcXFxcdTIwMjhcIixcbiAgXCJcXHUyMDI5XCI6IFwiXFxcXHUyMDI5XCJcbn07XG52YXIgRVNDQVBFX1JFR0VYMiA9IC9bJj48XFx1MjAyOFxcdTIwMjldL2c7XG5mdW5jdGlvbiBodG1sRXNjYXBlKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoRVNDQVBFX1JFR0VYMiwgKG1hdGNoKSA9PiBFU0NBUEVfTE9PS1VQMlttYXRjaF0pO1xufVxuXG4vLyBsaWIvZG9tL3Nzci9zZXJ2ZXIudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDEyIGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gU2VydmVyUm91dGVyKHtcbiAgY29udGV4dCxcbiAgdXJsLFxuICBub25jZVxufSkge1xuICBpZiAodHlwZW9mIHVybCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHVybCA9IG5ldyBVUkwodXJsKTtcbiAgfVxuICBsZXQgeyBtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCBjcml0aWNhbENzcywgc2VydmVySGFuZG9mZlN0cmluZyB9ID0gY29udGV4dDtcbiAgbGV0IHJvdXRlcyA9IGNyZWF0ZVNlcnZlclJvdXRlcyhcbiAgICBtYW5pZmVzdC5yb3V0ZXMsXG4gICAgcm91dGVNb2R1bGVzLFxuICAgIGNvbnRleHQuZnV0dXJlLFxuICAgIGNvbnRleHQuaXNTcGFNb2RlXG4gICk7XG4gIGNvbnRleHQuc3RhdGljSGFuZGxlckNvbnRleHQubG9hZGVyRGF0YSA9IHtcbiAgICAuLi5jb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0LmxvYWRlckRhdGFcbiAgfTtcbiAgZm9yIChsZXQgbWF0Y2ggb2YgY29udGV4dC5zdGF0aWNIYW5kbGVyQ29udGV4dC5tYXRjaGVzKSB7XG4gICAgbGV0IHJvdXRlSWQgPSBtYXRjaC5yb3V0ZS5pZDtcbiAgICBsZXQgcm91dGUgPSByb3V0ZU1vZHVsZXNbcm91dGVJZF07XG4gICAgbGV0IG1hbmlmZXN0Um91dGUgPSBjb250ZXh0Lm1hbmlmZXN0LnJvdXRlc1tyb3V0ZUlkXTtcbiAgICBpZiAocm91dGUgJiYgbWFuaWZlc3RSb3V0ZSAmJiBzaG91bGRIeWRyYXRlUm91dGVMb2FkZXIobWFuaWZlc3RSb3V0ZSwgcm91dGUsIGNvbnRleHQuaXNTcGFNb2RlKSAmJiAocm91dGUuSHlkcmF0ZUZhbGxiYWNrIHx8ICFtYW5pZmVzdFJvdXRlLmhhc0xvYWRlcikpIHtcbiAgICAgIGRlbGV0ZSBjb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0LmxvYWRlckRhdGFbcm91dGVJZF07XG4gICAgfVxuICB9XG4gIGxldCByb3V0ZXIgPSBjcmVhdGVTdGF0aWNSb3V0ZXIocm91dGVzLCBjb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0KTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEyLmNyZWF0ZUVsZW1lbnQoUmVhY3QxMi5GcmFnbWVudCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0MTIuY3JlYXRlRWxlbWVudChcbiAgICBGcmFtZXdvcmtDb250ZXh0LlByb3ZpZGVyLFxuICAgIHtcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIG1hbmlmZXN0LFxuICAgICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICAgIGNyaXRpY2FsQ3NzLFxuICAgICAgICBzZXJ2ZXJIYW5kb2ZmU3RyaW5nLFxuICAgICAgICBmdXR1cmU6IGNvbnRleHQuZnV0dXJlLFxuICAgICAgICBpc1NwYU1vZGU6IGNvbnRleHQuaXNTcGFNb2RlLFxuICAgICAgICBzZXJpYWxpemVFcnJvcjogY29udGV4dC5zZXJpYWxpemVFcnJvcixcbiAgICAgICAgcmVuZGVyTWV0YTogY29udGV4dC5yZW5kZXJNZXRhXG4gICAgICB9XG4gICAgfSxcbiAgICAvKiBAX19QVVJFX18gKi8gUmVhY3QxMi5jcmVhdGVFbGVtZW50KFJlbWl4RXJyb3JCb3VuZGFyeSwgeyBsb2NhdGlvbjogcm91dGVyLnN0YXRlLmxvY2F0aW9uIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBTdGF0aWNSb3V0ZXJQcm92aWRlcixcbiAgICAgIHtcbiAgICAgICAgcm91dGVyLFxuICAgICAgICBjb250ZXh0OiBjb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0LFxuICAgICAgICBoeWRyYXRlOiBmYWxzZVxuICAgICAgfVxuICAgICkpXG4gICksIGNvbnRleHQuc2VydmVySGFuZG9mZlN0cmVhbSA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEyLmNyZWF0ZUVsZW1lbnQoUmVhY3QxMi5TdXNwZW5zZSwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0MTIuY3JlYXRlRWxlbWVudChcbiAgICBTdHJlYW1UcmFuc2ZlcixcbiAgICB7XG4gICAgICBjb250ZXh0LFxuICAgICAgaWRlbnRpZmllcjogMCxcbiAgICAgIHJlYWRlcjogY29udGV4dC5zZXJ2ZXJIYW5kb2ZmU3RyZWFtLmdldFJlYWRlcigpLFxuICAgICAgdGV4dERlY29kZXI6IG5ldyBUZXh0RGVjb2RlcigpLFxuICAgICAgbm9uY2VcbiAgICB9XG4gICkpIDogbnVsbCk7XG59XG5cbi8vIGxpYi9kb20vc3NyL3JvdXRlcy10ZXN0LXN0dWIudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDEzIGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gY3JlYXRlUm91dGVzU3R1Yihyb3V0ZXMsIGNvbnRleHQgPSB7fSkge1xuICByZXR1cm4gZnVuY3Rpb24gUm91dGVzVGVzdFN0dWIoe1xuICAgIGluaXRpYWxFbnRyaWVzLFxuICAgIGluaXRpYWxJbmRleCxcbiAgICBoeWRyYXRpb25EYXRhLFxuICAgIGZ1dHVyZVxuICB9KSB7XG4gICAgbGV0IHJvdXRlclJlZiA9IFJlYWN0MTMudXNlUmVmKCk7XG4gICAgbGV0IHJlbWl4Q29udGV4dFJlZiA9IFJlYWN0MTMudXNlUmVmKCk7XG4gICAgaWYgKHJvdXRlclJlZi5jdXJyZW50ID09IG51bGwpIHtcbiAgICAgIHJlbWl4Q29udGV4dFJlZi5jdXJyZW50ID0ge1xuICAgICAgICBmdXR1cmU6IHt9LFxuICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgIHJvdXRlczoge30sXG4gICAgICAgICAgZW50cnk6IHsgaW1wb3J0czogW10sIG1vZHVsZTogXCJcIiB9LFxuICAgICAgICAgIHVybDogXCJcIixcbiAgICAgICAgICB2ZXJzaW9uOiBcIlwiXG4gICAgICAgIH0sXG4gICAgICAgIHJvdXRlTW9kdWxlczoge30sXG4gICAgICAgIGlzU3BhTW9kZTogZmFsc2VcbiAgICAgIH07XG4gICAgICBsZXQgcGF0Y2hlZCA9IHByb2Nlc3NSb3V0ZXMoXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbG9hZGVyL2FjdGlvbiBjb250ZXh0IHR5cGVzIGRvbid0IG1hdGNoIDovXG4gICAgICAgIGNvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXMocm91dGVzLCAocikgPT4gciksXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHJlbWl4Q29udGV4dFJlZi5jdXJyZW50Lm1hbmlmZXN0LFxuICAgICAgICByZW1peENvbnRleHRSZWYuY3VycmVudC5yb3V0ZU1vZHVsZXNcbiAgICAgICk7XG4gICAgICByb3V0ZXJSZWYuY3VycmVudCA9IGNyZWF0ZU1lbW9yeVJvdXRlcihwYXRjaGVkLCB7XG4gICAgICAgIGluaXRpYWxFbnRyaWVzLFxuICAgICAgICBpbml0aWFsSW5kZXgsXG4gICAgICAgIGh5ZHJhdGlvbkRhdGFcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTMuY3JlYXRlRWxlbWVudChGcmFtZXdvcmtDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiByZW1peENvbnRleHRSZWYuY3VycmVudCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMy5jcmVhdGVFbGVtZW50KFJvdXRlclByb3ZpZGVyLCB7IHJvdXRlcjogcm91dGVyUmVmLmN1cnJlbnQgfSkpO1xuICB9O1xufVxuZnVuY3Rpb24gcHJvY2Vzc1JvdXRlcyhyb3V0ZXMsIGNvbnRleHQsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIHBhcmVudElkKSB7XG4gIHJldHVybiByb3V0ZXMubWFwKChyb3V0ZSkgPT4ge1xuICAgIGlmICghcm91dGUuaWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJFeHBlY3RlZCBhIHJvdXRlLmlkIGluIEByZW1peC1ydW4vdGVzdGluZyBwcm9jZXNzUm91dGVzKCkgZnVuY3Rpb25cIlxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IHsgbG9hZGVyLCBhY3Rpb24gfSA9IHJvdXRlO1xuICAgIGxldCBuZXdSb3V0ZSA9IHtcbiAgICAgIGlkOiByb3V0ZS5pZCxcbiAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICBpbmRleDogcm91dGUuaW5kZXgsXG4gICAgICBDb21wb25lbnQ6IHJvdXRlLkNvbXBvbmVudCxcbiAgICAgIEh5ZHJhdGVGYWxsYmFjazogcm91dGUuSHlkcmF0ZUZhbGxiYWNrLFxuICAgICAgRXJyb3JCb3VuZGFyeTogcm91dGUuRXJyb3JCb3VuZGFyeSxcbiAgICAgIGFjdGlvbjogYWN0aW9uID8gKGFyZ3MpID0+IGFjdGlvbih7IC4uLmFyZ3MsIGNvbnRleHQgfSkgOiB2b2lkIDAsXG4gICAgICBsb2FkZXI6IGxvYWRlciA/IChhcmdzKSA9PiBsb2FkZXIoeyAuLi5hcmdzLCBjb250ZXh0IH0pIDogdm9pZCAwLFxuICAgICAgaGFuZGxlOiByb3V0ZS5oYW5kbGUsXG4gICAgICBzaG91bGRSZXZhbGlkYXRlOiByb3V0ZS5zaG91bGRSZXZhbGlkYXRlXG4gICAgfTtcbiAgICBsZXQgZW50cnlSb3V0ZSA9IHtcbiAgICAgIGlkOiByb3V0ZS5pZCxcbiAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICBpbmRleDogcm91dGUuaW5kZXgsXG4gICAgICBwYXJlbnRJZCxcbiAgICAgIGhhc0FjdGlvbjogcm91dGUuYWN0aW9uICE9IG51bGwsXG4gICAgICBoYXNMb2FkZXI6IHJvdXRlLmxvYWRlciAhPSBudWxsLFxuICAgICAgLy8gV2hlbiB0ZXN0aW5nIHJvdXRlcywgeW91IHNob3VsZCBqdXN0IGJlIHN0dWJiaW5nIGxvYWRlci9hY3Rpb24sIG5vdFxuICAgICAgLy8gdHJ5aW5nIHRvIHJlLWltcGxlbWVudCB0aGUgZnVsbCBsb2FkZXIvY2xpZW50TG9hZGVyL1NTUi9oeWRyYXRpb24gZmxvdy5cbiAgICAgIC8vIFRoYXQgaXMgYmV0dGVyIHRlc3RlZCB2aWEgRTJFIHRlc3RzLlxuICAgICAgaGFzQ2xpZW50QWN0aW9uOiBmYWxzZSxcbiAgICAgIGhhc0NsaWVudExvYWRlcjogZmFsc2UsXG4gICAgICBoYXNFcnJvckJvdW5kYXJ5OiByb3V0ZS5FcnJvckJvdW5kYXJ5ICE9IG51bGwsXG4gICAgICBtb2R1bGU6IFwiYnVpbGQvc3R1Yi1wYXRoLXRvLW1vZHVsZS5qc1wiXG4gICAgICAvLyBhbnkgbmVlZCBmb3IgdGhpcz9cbiAgICB9O1xuICAgIG1hbmlmZXN0LnJvdXRlc1tuZXdSb3V0ZS5pZF0gPSBlbnRyeVJvdXRlO1xuICAgIHJvdXRlTW9kdWxlc1tyb3V0ZS5pZF0gPSB7XG4gICAgICBkZWZhdWx0OiByb3V0ZS5Db21wb25lbnQgfHwgT3V0bGV0LFxuICAgICAgRXJyb3JCb3VuZGFyeTogcm91dGUuRXJyb3JCb3VuZGFyeSB8fCB2b2lkIDAsXG4gICAgICBoYW5kbGU6IHJvdXRlLmhhbmRsZSxcbiAgICAgIGxpbmtzOiByb3V0ZS5saW5rcyxcbiAgICAgIG1ldGE6IHJvdXRlLm1ldGEsXG4gICAgICBzaG91bGRSZXZhbGlkYXRlOiByb3V0ZS5zaG91bGRSZXZhbGlkYXRlXG4gICAgfTtcbiAgICBpZiAocm91dGUuY2hpbGRyZW4pIHtcbiAgICAgIG5ld1JvdXRlLmNoaWxkcmVuID0gcHJvY2Vzc1JvdXRlcyhcbiAgICAgICAgcm91dGUuY2hpbGRyZW4sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIG1hbmlmZXN0LFxuICAgICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICAgIG5ld1JvdXRlLmlkXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3Um91dGU7XG4gIH0pO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvY29va2llcy50c1xuaW1wb3J0IHsgcGFyc2UsIHNlcmlhbGl6ZSB9IGZyb20gXCJjb29raWVcIjtcblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2NyeXB0by50c1xudmFyIGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbnZhciBzaWduID0gYXN5bmMgKHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgbGV0IGRhdGEyID0gZW5jb2Rlci5lbmNvZGUodmFsdWUpO1xuICBsZXQga2V5ID0gYXdhaXQgY3JlYXRlS2V5MihzZWNyZXQsIFtcInNpZ25cIl0pO1xuICBsZXQgc2lnbmF0dXJlID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5zaWduKFwiSE1BQ1wiLCBrZXksIGRhdGEyKTtcbiAgbGV0IGhhc2ggPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4ubmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKSkpLnJlcGxhY2UoXG4gICAgLz0rJC8sXG4gICAgXCJcIlxuICApO1xuICByZXR1cm4gdmFsdWUgKyBcIi5cIiArIGhhc2g7XG59O1xudmFyIHVuc2lnbiA9IGFzeW5jIChjb29raWUsIHNlY3JldCkgPT4ge1xuICBsZXQgaW5kZXggPSBjb29raWUubGFzdEluZGV4T2YoXCIuXCIpO1xuICBsZXQgdmFsdWUgPSBjb29raWUuc2xpY2UoMCwgaW5kZXgpO1xuICBsZXQgaGFzaCA9IGNvb2tpZS5zbGljZShpbmRleCArIDEpO1xuICBsZXQgZGF0YTIgPSBlbmNvZGVyLmVuY29kZSh2YWx1ZSk7XG4gIGxldCBrZXkgPSBhd2FpdCBjcmVhdGVLZXkyKHNlY3JldCwgW1widmVyaWZ5XCJdKTtcbiAgbGV0IHNpZ25hdHVyZSA9IGJ5dGVTdHJpbmdUb1VpbnQ4QXJyYXkoYXRvYihoYXNoKSk7XG4gIGxldCB2YWxpZCA9IGF3YWl0IGNyeXB0by5zdWJ0bGUudmVyaWZ5KFwiSE1BQ1wiLCBrZXksIHNpZ25hdHVyZSwgZGF0YTIpO1xuICByZXR1cm4gdmFsaWQgPyB2YWx1ZSA6IGZhbHNlO1xufTtcbnZhciBjcmVhdGVLZXkyID0gYXN5bmMgKHNlY3JldCwgdXNhZ2VzKSA9PiBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcbiAgXCJyYXdcIixcbiAgZW5jb2Rlci5lbmNvZGUoc2VjcmV0KSxcbiAgeyBuYW1lOiBcIkhNQUNcIiwgaGFzaDogXCJTSEEtMjU2XCIgfSxcbiAgZmFsc2UsXG4gIHVzYWdlc1xuKTtcbmZ1bmN0aW9uIGJ5dGVTdHJpbmdUb1VpbnQ4QXJyYXkoYnl0ZVN0cmluZykge1xuICBsZXQgYXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlU3RyaW5nLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZVN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgIGFycmF5W2ldID0gYnl0ZVN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2Nvb2tpZXMudHNcbnZhciBjcmVhdGVDb29raWUgPSAobmFtZSwgY29va2llT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGxldCB7IHNlY3JldHMgPSBbXSwgLi4ub3B0aW9ucyB9ID0ge1xuICAgIHBhdGg6IFwiL1wiLFxuICAgIHNhbWVTaXRlOiBcImxheFwiLFxuICAgIC4uLmNvb2tpZU9wdGlvbnNcbiAgfTtcbiAgd2Fybk9uY2VBYm91dEV4cGlyZXNDb29raWUobmFtZSwgb3B0aW9ucy5leHBpcmVzKTtcbiAgcmV0dXJuIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH0sXG4gICAgZ2V0IGlzU2lnbmVkKCkge1xuICAgICAgcmV0dXJuIHNlY3JldHMubGVuZ3RoID4gMDtcbiAgICB9LFxuICAgIGdldCBleHBpcmVzKCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvcHRpb25zLm1heEFnZSAhPT0gXCJ1bmRlZmluZWRcIiA/IG5ldyBEYXRlKERhdGUubm93KCkgKyBvcHRpb25zLm1heEFnZSAqIDFlMykgOiBvcHRpb25zLmV4cGlyZXM7XG4gICAgfSxcbiAgICBhc3luYyBwYXJzZShjb29raWVIZWFkZXIsIHBhcnNlT3B0aW9ucykge1xuICAgICAgaWYgKCFjb29raWVIZWFkZXIpIHJldHVybiBudWxsO1xuICAgICAgbGV0IGNvb2tpZXMgPSBwYXJzZShjb29raWVIZWFkZXIsIHsgLi4ub3B0aW9ucywgLi4ucGFyc2VPcHRpb25zIH0pO1xuICAgICAgaWYgKG5hbWUgaW4gY29va2llcykge1xuICAgICAgICBsZXQgdmFsdWUgPSBjb29raWVzW25hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlICE9PSBcIlwiKSB7XG4gICAgICAgICAgbGV0IGRlY29kZWQgPSBhd2FpdCBkZWNvZGVDb29raWVWYWx1ZSh2YWx1ZSwgc2VjcmV0cyk7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgc2VyaWFsaXplKHZhbHVlLCBzZXJpYWxpemVPcHRpb25zKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplKFxuICAgICAgICBuYW1lLFxuICAgICAgICB2YWx1ZSA9PT0gXCJcIiA/IFwiXCIgOiBhd2FpdCBlbmNvZGVDb29raWVWYWx1ZSh2YWx1ZSwgc2VjcmV0cyksXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIC4uLnNlcmlhbGl6ZU9wdGlvbnNcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH07XG59O1xudmFyIGlzQ29va2llID0gKG9iamVjdCkgPT4ge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgdHlwZW9mIG9iamVjdC5uYW1lID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBvYmplY3QuaXNTaWduZWQgPT09IFwiYm9vbGVhblwiICYmIHR5cGVvZiBvYmplY3QucGFyc2UgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqZWN0LnNlcmlhbGl6ZSA9PT0gXCJmdW5jdGlvblwiO1xufTtcbmFzeW5jIGZ1bmN0aW9uIGVuY29kZUNvb2tpZVZhbHVlKHZhbHVlLCBzZWNyZXRzKSB7XG4gIGxldCBlbmNvZGVkID0gZW5jb2RlRGF0YSh2YWx1ZSk7XG4gIGlmIChzZWNyZXRzLmxlbmd0aCA+IDApIHtcbiAgICBlbmNvZGVkID0gYXdhaXQgc2lnbihlbmNvZGVkLCBzZWNyZXRzWzBdKTtcbiAgfVxuICByZXR1cm4gZW5jb2RlZDtcbn1cbmFzeW5jIGZ1bmN0aW9uIGRlY29kZUNvb2tpZVZhbHVlKHZhbHVlLCBzZWNyZXRzKSB7XG4gIGlmIChzZWNyZXRzLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKGxldCBzZWNyZXQgb2Ygc2VjcmV0cykge1xuICAgICAgbGV0IHVuc2lnbmVkVmFsdWUgPSBhd2FpdCB1bnNpZ24odmFsdWUsIHNlY3JldCk7XG4gICAgICBpZiAodW5zaWduZWRWYWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGRlY29kZURhdGEodW5zaWduZWRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBkZWNvZGVEYXRhKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGVuY29kZURhdGEodmFsdWUpIHtcbiAgcmV0dXJuIGJ0b2EobXlVbmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkodmFsdWUpKSkpO1xufVxuZnVuY3Rpb24gZGVjb2RlRGF0YSh2YWx1ZSkge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChteUVzY2FwZShhdG9iKHZhbHVlKSkpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cbmZ1bmN0aW9uIG15RXNjYXBlKHZhbHVlKSB7XG4gIGxldCBzdHIgPSB2YWx1ZS50b1N0cmluZygpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgbGV0IGluZGV4ID0gMDtcbiAgbGV0IGNociwgY29kZTtcbiAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgIGNociA9IHN0ci5jaGFyQXQoaW5kZXgrKyk7XG4gICAgaWYgKC9bXFx3KitcXC0uL0BdLy5leGVjKGNocikpIHtcbiAgICAgIHJlc3VsdCArPSBjaHI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZGUgPSBjaHIuY2hhckNvZGVBdCgwKTtcbiAgICAgIGlmIChjb2RlIDwgMjU2KSB7XG4gICAgICAgIHJlc3VsdCArPSBcIiVcIiArIGhleChjb2RlLCAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBcIiV1XCIgKyBoZXgoY29kZSwgNCkudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGhleChjb2RlLCBsZW5ndGgpIHtcbiAgbGV0IHJlc3VsdCA9IGNvZGUudG9TdHJpbmcoMTYpO1xuICB3aGlsZSAocmVzdWx0Lmxlbmd0aCA8IGxlbmd0aCkgcmVzdWx0ID0gXCIwXCIgKyByZXN1bHQ7XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBteVVuZXNjYXBlKHZhbHVlKSB7XG4gIGxldCBzdHIgPSB2YWx1ZS50b1N0cmluZygpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgbGV0IGluZGV4ID0gMDtcbiAgbGV0IGNociwgcGFydDtcbiAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgIGNociA9IHN0ci5jaGFyQXQoaW5kZXgrKyk7XG4gICAgaWYgKGNociA9PT0gXCIlXCIpIHtcbiAgICAgIGlmIChzdHIuY2hhckF0KGluZGV4KSA9PT0gXCJ1XCIpIHtcbiAgICAgICAgcGFydCA9IHN0ci5zbGljZShpbmRleCArIDEsIGluZGV4ICsgNSk7XG4gICAgICAgIGlmICgvXltcXGRhLWZdezR9JC9pLmV4ZWMocGFydCkpIHtcbiAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChwYXJ0LCAxNikpO1xuICAgICAgICAgIGluZGV4ICs9IDU7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnQgPSBzdHIuc2xpY2UoaW5kZXgsIGluZGV4ICsgMik7XG4gICAgICAgIGlmICgvXltcXGRhLWZdezJ9JC9pLmV4ZWMocGFydCkpIHtcbiAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChwYXJ0LCAxNikpO1xuICAgICAgICAgIGluZGV4ICs9IDI7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0ICs9IGNocjtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gd2Fybk9uY2VBYm91dEV4cGlyZXNDb29raWUobmFtZSwgZXhwaXJlcykge1xuICB3YXJuT25jZShcbiAgICAhZXhwaXJlcyxcbiAgICBgVGhlIFwiJHtuYW1lfVwiIGNvb2tpZSBoYXMgYW4gXCJleHBpcmVzXCIgcHJvcGVydHkgc2V0LiBUaGlzIHdpbGwgY2F1c2UgdGhlIGV4cGlyZXMgdmFsdWUgdG8gbm90IGJlIHVwZGF0ZWQgd2hlbiB0aGUgc2Vzc2lvbiBpcyBjb21taXR0ZWQuIEluc3RlYWQsIHlvdSBzaG91bGQgc2V0IHRoZSBleHBpcmVzIHZhbHVlIHdoZW4gc2VyaWFsaXppbmcgdGhlIGNvb2tpZS4gWW91IGNhbiB1c2UgXFxgY29tbWl0U2Vzc2lvbihzZXNzaW9uLCB7IGV4cGlyZXMgfSlcXGAgaWYgdXNpbmcgYSBzZXNzaW9uIHN0b3JhZ2Ugb2JqZWN0LCBvciBcXGBjb29raWUuc2VyaWFsaXplKFwidmFsdWVcIiwgeyBleHBpcmVzIH0pXFxgIGlmIHlvdSdyZSB1c2luZyB0aGUgY29va2llIGRpcmVjdGx5LmBcbiAgKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2VudHJ5LnRzXG5mdW5jdGlvbiBjcmVhdGVFbnRyeVJvdXRlTW9kdWxlcyhtYW5pZmVzdCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMobWFuaWZlc3QpLnJlZHVjZSgobWVtbzIsIHJvdXRlSWQpID0+IHtcbiAgICBsZXQgcm91dGUgPSBtYW5pZmVzdFtyb3V0ZUlkXTtcbiAgICBpZiAocm91dGUpIHtcbiAgICAgIG1lbW8yW3JvdXRlSWRdID0gcm91dGUubW9kdWxlO1xuICAgIH1cbiAgICByZXR1cm4gbWVtbzI7XG4gIH0sIHt9KTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL21vZGUudHNcbnZhciBTZXJ2ZXJNb2RlID0gLyogQF9fUFVSRV9fICovICgoU2VydmVyTW9kZTIpID0+IHtcbiAgU2VydmVyTW9kZTJbXCJEZXZlbG9wbWVudFwiXSA9IFwiZGV2ZWxvcG1lbnRcIjtcbiAgU2VydmVyTW9kZTJbXCJQcm9kdWN0aW9uXCJdID0gXCJwcm9kdWN0aW9uXCI7XG4gIFNlcnZlck1vZGUyW1wiVGVzdFwiXSA9IFwidGVzdFwiO1xuICByZXR1cm4gU2VydmVyTW9kZTI7XG59KShTZXJ2ZXJNb2RlIHx8IHt9KTtcbmZ1bmN0aW9uIGlzU2VydmVyTW9kZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IFwiZGV2ZWxvcG1lbnRcIiAvKiBEZXZlbG9wbWVudCAqLyB8fCB2YWx1ZSA9PT0gXCJwcm9kdWN0aW9uXCIgLyogUHJvZHVjdGlvbiAqLyB8fCB2YWx1ZSA9PT0gXCJ0ZXN0XCIgLyogVGVzdCAqLztcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2Vycm9ycy50c1xuZnVuY3Rpb24gc2FuaXRpemVFcnJvcihlcnJvciwgc2VydmVyTW9kZSkge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiBzZXJ2ZXJNb2RlICE9PSBcImRldmVsb3BtZW50XCIgLyogRGV2ZWxvcG1lbnQgKi8pIHtcbiAgICBsZXQgc2FuaXRpemVkID0gbmV3IEVycm9yKFwiVW5leHBlY3RlZCBTZXJ2ZXIgRXJyb3JcIik7XG4gICAgc2FuaXRpemVkLnN0YWNrID0gdm9pZCAwO1xuICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gIH1cbiAgcmV0dXJuIGVycm9yO1xufVxuZnVuY3Rpb24gc2FuaXRpemVFcnJvcnMoZXJyb3JzLCBzZXJ2ZXJNb2RlKSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhlcnJvcnMpLnJlZHVjZSgoYWNjLCBbcm91dGVJZCwgZXJyb3JdKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtyb3V0ZUlkXTogc2FuaXRpemVFcnJvcihlcnJvciwgc2VydmVyTW9kZSkgfSk7XG4gIH0sIHt9KTtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZUVycm9yKGVycm9yLCBzZXJ2ZXJNb2RlKSB7XG4gIGxldCBzYW5pdGl6ZWQgPSBzYW5pdGl6ZUVycm9yKGVycm9yLCBzZXJ2ZXJNb2RlKTtcbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiBzYW5pdGl6ZWQubWVzc2FnZSxcbiAgICBzdGFjazogc2FuaXRpemVkLnN0YWNrXG4gIH07XG59XG5mdW5jdGlvbiBzZXJpYWxpemVFcnJvcnMyKGVycm9ycywgc2VydmVyTW9kZSkge1xuICBpZiAoIWVycm9ycykgcmV0dXJuIG51bGw7XG4gIGxldCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZXJyb3JzKTtcbiAgbGV0IHNlcmlhbGl6ZWQgPSB7fTtcbiAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiBlbnRyaWVzKSB7XG4gICAgaWYgKGlzUm91dGVFcnJvclJlc3BvbnNlKHZhbCkpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IHsgLi4udmFsLCBfX3R5cGU6IFwiUm91dGVFcnJvclJlc3BvbnNlXCIgfTtcbiAgICB9IGVsc2UgaWYgKHZhbCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBsZXQgc2FuaXRpemVkID0gc2FuaXRpemVFcnJvcih2YWwsIHNlcnZlck1vZGUpO1xuICAgICAgc2VyaWFsaXplZFtrZXldID0ge1xuICAgICAgICBtZXNzYWdlOiBzYW5pdGl6ZWQubWVzc2FnZSxcbiAgICAgICAgc3RhY2s6IHNhbml0aXplZC5zdGFjayxcbiAgICAgICAgX190eXBlOiBcIkVycm9yXCIsXG4gICAgICAgIC8vIElmIHRoaXMgaXMgYSBzdWJjbGFzcyAoaS5lLiwgUmVmZXJlbmNlRXJyb3IpLCBzZW5kIHVwIHRoZSB0eXBlIHNvIHdlXG4gICAgICAgIC8vIGNhbiByZS1jcmVhdGUgdGhlIHNhbWUgdHlwZSBkdXJpbmcgaHlkcmF0aW9uLiAgVGhpcyB3aWxsIG9ubHkgYXBwbHlcbiAgICAgICAgLy8gaW4gZGV2IG1vZGUgc2luY2UgYWxsIHByb2R1Y3Rpb24gZXJyb3JzIGFyZSBzYW5pdGl6ZWQgdG8gbm9ybWFsXG4gICAgICAgIC8vIEVycm9yIGluc3RhbmNlc1xuICAgICAgICAuLi5zYW5pdGl6ZWQubmFtZSAhPT0gXCJFcnJvclwiID8ge1xuICAgICAgICAgIF9fc3ViVHlwZTogc2FuaXRpemVkLm5hbWVcbiAgICAgICAgfSA6IHt9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXJpYWxpemVkW2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvcm91dGVNYXRjaGluZy50c1xuZnVuY3Rpb24gbWF0Y2hTZXJ2ZXJSb3V0ZXMocm91dGVzLCBwYXRobmFtZSwgYmFzZW5hbWUpIHtcbiAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhcbiAgICByb3V0ZXMsXG4gICAgcGF0aG5hbWUsXG4gICAgYmFzZW5hbWVcbiAgKTtcbiAgaWYgKCFtYXRjaGVzKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIG1hdGNoZXMubWFwKChtYXRjaCkgPT4gKHtcbiAgICBwYXJhbXM6IG1hdGNoLnBhcmFtcyxcbiAgICBwYXRobmFtZTogbWF0Y2gucGF0aG5hbWUsXG4gICAgcm91dGU6IG1hdGNoLnJvdXRlXG4gIH0pKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2RhdGEudHNcbmFzeW5jIGZ1bmN0aW9uIGNhbGxSb3V0ZUhhbmRsZXIoaGFuZGxlciwgYXJncykge1xuICBsZXQgcmVzdWx0ID0gYXdhaXQgaGFuZGxlcih7XG4gICAgcmVxdWVzdDogc3RyaXBSb3V0ZXNQYXJhbShzdHJpcEluZGV4UGFyYW0yKGFyZ3MucmVxdWVzdCkpLFxuICAgIHBhcmFtczogYXJncy5wYXJhbXMsXG4gICAgY29udGV4dDogYXJncy5jb250ZXh0XG4gIH0pO1xuICBpZiAoaXNEYXRhV2l0aFJlc3BvbnNlSW5pdChyZXN1bHQpICYmIHJlc3VsdC5pbml0ICYmIHJlc3VsdC5pbml0LnN0YXR1cyAmJiBpc1JlZGlyZWN0U3RhdHVzQ29kZShyZXN1bHQuaW5pdC5zdGF0dXMpKSB7XG4gICAgdGhyb3cgbmV3IFJlc3BvbnNlKG51bGwsIHJlc3VsdC5pbml0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gc3RyaXBJbmRleFBhcmFtMihyZXF1ZXN0KSB7XG4gIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgbGV0IGluZGV4VmFsdWVzID0gdXJsLnNlYXJjaFBhcmFtcy5nZXRBbGwoXCJpbmRleFwiKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoXCJpbmRleFwiKTtcbiAgbGV0IGluZGV4VmFsdWVzVG9LZWVwID0gW107XG4gIGZvciAobGV0IGluZGV4VmFsdWUgb2YgaW5kZXhWYWx1ZXMpIHtcbiAgICBpZiAoaW5kZXhWYWx1ZSkge1xuICAgICAgaW5kZXhWYWx1ZXNUb0tlZXAucHVzaChpbmRleFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgZm9yIChsZXQgdG9LZWVwIG9mIGluZGV4VmFsdWVzVG9LZWVwKSB7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB0b0tlZXApO1xuICB9XG4gIGxldCBpbml0ID0ge1xuICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgYm9keTogcmVxdWVzdC5ib2R5LFxuICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICBzaWduYWw6IHJlcXVlc3Quc2lnbmFsXG4gIH07XG4gIGlmIChpbml0LmJvZHkpIHtcbiAgICBpbml0LmR1cGxleCA9IFwiaGFsZlwiO1xuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdCh1cmwuaHJlZiwgaW5pdCk7XG59XG5mdW5jdGlvbiBzdHJpcFJvdXRlc1BhcmFtKHJlcXVlc3QpIHtcbiAgbGV0IHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZShcIl9yb3V0ZXNcIik7XG4gIGxldCBpbml0ID0ge1xuICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgYm9keTogcmVxdWVzdC5ib2R5LFxuICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICBzaWduYWw6IHJlcXVlc3Quc2lnbmFsXG4gIH07XG4gIGlmIChpbml0LmJvZHkpIHtcbiAgICBpbml0LmR1cGxleCA9IFwiaGFsZlwiO1xuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdCh1cmwuaHJlZiwgaW5pdCk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9pbnZhcmlhbnQudHNcbmZ1bmN0aW9uIGludmFyaWFudDModmFsdWUsIG1lc3NhZ2UpIHtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJUaGUgZm9sbG93aW5nIGVycm9yIGlzIGEgYnVnIGluIFJlYWN0IFJvdXRlcjsgcGxlYXNlIG9wZW4gYW4gaXNzdWUhIGh0dHBzOi8vZ2l0aHViLmNvbS9yZW1peC1ydW4vcmVhY3Qtcm91dGVyL2lzc3Vlcy9uZXcvY2hvb3NlXCJcbiAgICApO1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvcm91dGVzLnRzXG5mdW5jdGlvbiBncm91cFJvdXRlc0J5UGFyZW50SWQyKG1hbmlmZXN0KSB7XG4gIGxldCByb3V0ZXMgPSB7fTtcbiAgT2JqZWN0LnZhbHVlcyhtYW5pZmVzdCkuZm9yRWFjaCgocm91dGUpID0+IHtcbiAgICBpZiAocm91dGUpIHtcbiAgICAgIGxldCBwYXJlbnRJZCA9IHJvdXRlLnBhcmVudElkIHx8IFwiXCI7XG4gICAgICBpZiAoIXJvdXRlc1twYXJlbnRJZF0pIHtcbiAgICAgICAgcm91dGVzW3BhcmVudElkXSA9IFtdO1xuICAgICAgfVxuICAgICAgcm91dGVzW3BhcmVudElkXS5wdXNoKHJvdXRlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm91dGVzO1xufVxuZnVuY3Rpb24gY3JlYXRlUm91dGVzKG1hbmlmZXN0LCBwYXJlbnRJZCA9IFwiXCIsIHJvdXRlc0J5UGFyZW50SWQgPSBncm91cFJvdXRlc0J5UGFyZW50SWQyKG1hbmlmZXN0KSkge1xuICByZXR1cm4gKHJvdXRlc0J5UGFyZW50SWRbcGFyZW50SWRdIHx8IFtdKS5tYXAoKHJvdXRlKSA9PiAoe1xuICAgIC4uLnJvdXRlLFxuICAgIGNoaWxkcmVuOiBjcmVhdGVSb3V0ZXMobWFuaWZlc3QsIHJvdXRlLmlkLCByb3V0ZXNCeVBhcmVudElkKVxuICB9KSk7XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNIYW5kbGVyRGF0YVJvdXRlcyhtYW5pZmVzdCwgZnV0dXJlLCBwYXJlbnRJZCA9IFwiXCIsIHJvdXRlc0J5UGFyZW50SWQgPSBncm91cFJvdXRlc0J5UGFyZW50SWQyKG1hbmlmZXN0KSkge1xuICByZXR1cm4gKHJvdXRlc0J5UGFyZW50SWRbcGFyZW50SWRdIHx8IFtdKS5tYXAoKHJvdXRlKSA9PiB7XG4gICAgbGV0IGNvbW1vblJvdXRlID0ge1xuICAgICAgLy8gQWx3YXlzIGluY2x1ZGUgcm9vdCBkdWUgdG8gZGVmYXVsdCBib3VuZGFyaWVzXG4gICAgICBoYXNFcnJvckJvdW5kYXJ5OiByb3V0ZS5pZCA9PT0gXCJyb290XCIgfHwgcm91dGUubW9kdWxlLkVycm9yQm91bmRhcnkgIT0gbnVsbCxcbiAgICAgIGlkOiByb3V0ZS5pZCxcbiAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICAvLyBOZWVkIHRvIHVzZSBSUidzIHZlcnNpb24gaW4gdGhlIHBhcmFtIHR5cGVkIGhlcmUgdG8gcGVybWl0IHRoZSBvcHRpb25hbFxuICAgICAgLy8gY29udGV4dCBldmVuIHRob3VnaCB3ZSBrbm93IGl0J2xsIGFsd2F5cyBiZSBwcm92aWRlZCBpbiByZW1peFxuICAgICAgbG9hZGVyOiByb3V0ZS5tb2R1bGUubG9hZGVyID8gYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGFyZ3MucmVxdWVzdC5oZWFkZXJzLmhhcyhcIlgtUmVhY3QtUm91dGVyLVByZXJlbmRlci1EYXRhXCIpKSB7XG4gICAgICAgICAgY29uc3QgcHJlUmVuZGVyZWREYXRhID0gYXJncy5yZXF1ZXN0LmhlYWRlcnMuZ2V0KFxuICAgICAgICAgICAgXCJYLVJlYWN0LVJvdXRlci1QcmVyZW5kZXItRGF0YVwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgZW5jb2RlZCA9IHByZVJlbmRlcmVkRGF0YSA/IGRlY29kZVVSSShwcmVSZW5kZXJlZERhdGEpIDogcHJlUmVuZGVyZWREYXRhO1xuICAgICAgICAgIGludmFyaWFudDMoZW5jb2RlZCwgXCJNaXNzaW5nIHByZXJlbmRlcmVkIGRhdGEgZm9yIHJvdXRlXCIpO1xuICAgICAgICAgIGxldCB1aW50OGFycmF5ID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGVuY29kZWQpO1xuICAgICAgICAgIGxldCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICAgICAgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodWludDhhcnJheSk7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsZXQgZGVjb2RlZCA9IGF3YWl0IGRlY29kZVZpYVR1cmJvU3RyZWFtKHN0cmVhbSwgZ2xvYmFsKTtcbiAgICAgICAgICBsZXQgZGF0YTIgPSBkZWNvZGVkLnZhbHVlO1xuICAgICAgICAgIGludmFyaWFudDMoXG4gICAgICAgICAgICBkYXRhMiAmJiByb3V0ZS5pZCBpbiBkYXRhMixcbiAgICAgICAgICAgIFwiVW5hYmxlIHRvIGRlY29kZSBwcmVyZW5kZXJlZCBkYXRhXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCByZXN1bHQgPSBkYXRhMltyb3V0ZS5pZF07XG4gICAgICAgICAgaW52YXJpYW50MyhcImRhdGFcIiBpbiByZXN1bHQsIFwiVW5hYmxlIHRvIHByb2Nlc3MgcHJlcmVuZGVyZWQgZGF0YVwiKTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbCA9IGF3YWl0IGNhbGxSb3V0ZUhhbmRsZXIocm91dGUubW9kdWxlLmxvYWRlciwgYXJncyk7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9IDogdm9pZCAwLFxuICAgICAgYWN0aW9uOiByb3V0ZS5tb2R1bGUuYWN0aW9uID8gKGFyZ3MpID0+IGNhbGxSb3V0ZUhhbmRsZXIocm91dGUubW9kdWxlLmFjdGlvbiwgYXJncykgOiB2b2lkIDAsXG4gICAgICBoYW5kbGU6IHJvdXRlLm1vZHVsZS5oYW5kbGVcbiAgICB9O1xuICAgIHJldHVybiByb3V0ZS5pbmRleCA/IHtcbiAgICAgIGluZGV4OiB0cnVlLFxuICAgICAgLi4uY29tbW9uUm91dGVcbiAgICB9IDoge1xuICAgICAgY2FzZVNlbnNpdGl2ZTogcm91dGUuY2FzZVNlbnNpdGl2ZSxcbiAgICAgIGNoaWxkcmVuOiBjcmVhdGVTdGF0aWNIYW5kbGVyRGF0YVJvdXRlcyhcbiAgICAgICAgbWFuaWZlc3QsXG4gICAgICAgIGZ1dHVyZSxcbiAgICAgICAgcm91dGUuaWQsXG4gICAgICAgIHJvdXRlc0J5UGFyZW50SWRcbiAgICAgICksXG4gICAgICAuLi5jb21tb25Sb3V0ZVxuICAgIH07XG4gIH0pO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvbWFya3VwLnRzXG52YXIgRVNDQVBFX0xPT0tVUDMgPSB7XG4gIFwiJlwiOiBcIlxcXFx1MDAyNlwiLFxuICBcIj5cIjogXCJcXFxcdTAwM2VcIixcbiAgXCI8XCI6IFwiXFxcXHUwMDNjXCIsXG4gIFwiXFx1MjAyOFwiOiBcIlxcXFx1MjAyOFwiLFxuICBcIlxcdTIwMjlcIjogXCJcXFxcdTIwMjlcIlxufTtcbnZhciBFU0NBUEVfUkVHRVgzID0gL1smPjxcXHUyMDI4XFx1MjAyOV0vZztcbmZ1bmN0aW9uIGVzY2FwZUh0bWwyKGh0bWwpIHtcbiAgcmV0dXJuIGh0bWwucmVwbGFjZShFU0NBUEVfUkVHRVgzLCAobWF0Y2gpID0+IEVTQ0FQRV9MT09LVVAzW21hdGNoXSk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9zZXJ2ZXJIYW5kb2ZmLnRzXG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJIYW5kb2ZmU3RyaW5nKHNlcnZlckhhbmRvZmYpIHtcbiAgcmV0dXJuIGVzY2FwZUh0bWwyKEpTT04uc3RyaW5naWZ5KHNlcnZlckhhbmRvZmYpKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2Rldi50c1xudmFyIGdsb2JhbERldlNlcnZlckhvb2tzS2V5ID0gXCJfX3JlYWN0Um91dGVyRGV2U2VydmVySG9va3NcIjtcbmZ1bmN0aW9uIHNldERldlNlcnZlckhvb2tzKGRldlNlcnZlckhvb2tzKSB7XG4gIGdsb2JhbFRoaXNbZ2xvYmFsRGV2U2VydmVySG9va3NLZXldID0gZGV2U2VydmVySG9va3M7XG59XG5mdW5jdGlvbiBnZXREZXZTZXJ2ZXJIb29rcygpIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXNbZ2xvYmFsRGV2U2VydmVySG9va3NLZXldO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvc2luZ2xlLWZldGNoLnRzXG5pbXBvcnQgeyBlbmNvZGUgfSBmcm9tIFwidHVyYm8tc3RyZWFtXCI7XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9oZWFkZXJzLnRzXG5pbXBvcnQgeyBzcGxpdENvb2tpZXNTdHJpbmcgfSBmcm9tIFwic2V0LWNvb2tpZS1wYXJzZXJcIjtcbmZ1bmN0aW9uIGdldERvY3VtZW50SGVhZGVycyhidWlsZCwgY29udGV4dCkge1xuICBsZXQgYm91bmRhcnlJZHggPSBjb250ZXh0LmVycm9ycyA/IGNvbnRleHQubWF0Y2hlcy5maW5kSW5kZXgoKG0pID0+IGNvbnRleHQuZXJyb3JzW20ucm91dGUuaWRdKSA6IC0xO1xuICBsZXQgbWF0Y2hlcyA9IGJvdW5kYXJ5SWR4ID49IDAgPyBjb250ZXh0Lm1hdGNoZXMuc2xpY2UoMCwgYm91bmRhcnlJZHggKyAxKSA6IGNvbnRleHQubWF0Y2hlcztcbiAgbGV0IGVycm9ySGVhZGVycztcbiAgaWYgKGJvdW5kYXJ5SWR4ID49IDApIHtcbiAgICBsZXQgeyBhY3Rpb25IZWFkZXJzLCBhY3Rpb25EYXRhLCBsb2FkZXJIZWFkZXJzLCBsb2FkZXJEYXRhIH0gPSBjb250ZXh0O1xuICAgIGNvbnRleHQubWF0Y2hlcy5zbGljZShib3VuZGFyeUlkeCkuc29tZSgobWF0Y2gpID0+IHtcbiAgICAgIGxldCBpZCA9IG1hdGNoLnJvdXRlLmlkO1xuICAgICAgaWYgKGFjdGlvbkhlYWRlcnNbaWRdICYmICghYWN0aW9uRGF0YSB8fCAhYWN0aW9uRGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkpKSB7XG4gICAgICAgIGVycm9ySGVhZGVycyA9IGFjdGlvbkhlYWRlcnNbaWRdO1xuICAgICAgfSBlbHNlIGlmIChsb2FkZXJIZWFkZXJzW2lkXSAmJiAhbG9hZGVyRGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICAgICAgZXJyb3JIZWFkZXJzID0gbG9hZGVySGVhZGVyc1tpZF07XG4gICAgICB9XG4gICAgICByZXR1cm4gZXJyb3JIZWFkZXJzICE9IG51bGw7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXMucmVkdWNlKChwYXJlbnRIZWFkZXJzLCBtYXRjaCwgaWR4KSA9PiB7XG4gICAgbGV0IHsgaWQgfSA9IG1hdGNoLnJvdXRlO1xuICAgIGxldCByb3V0ZSA9IGJ1aWxkLnJvdXRlc1tpZF07XG4gICAgaW52YXJpYW50Myhyb3V0ZSwgYFJvdXRlIHdpdGggaWQgXCIke2lkfVwiIG5vdCBmb3VuZCBpbiBidWlsZGApO1xuICAgIGxldCByb3V0ZU1vZHVsZSA9IHJvdXRlLm1vZHVsZTtcbiAgICBsZXQgbG9hZGVySGVhZGVycyA9IGNvbnRleHQubG9hZGVySGVhZGVyc1tpZF0gfHwgbmV3IEhlYWRlcnMoKTtcbiAgICBsZXQgYWN0aW9uSGVhZGVycyA9IGNvbnRleHQuYWN0aW9uSGVhZGVyc1tpZF0gfHwgbmV3IEhlYWRlcnMoKTtcbiAgICBsZXQgaW5jbHVkZUVycm9ySGVhZGVycyA9IGVycm9ySGVhZGVycyAhPSBudWxsICYmIGlkeCA9PT0gbWF0Y2hlcy5sZW5ndGggLSAxO1xuICAgIGxldCBpbmNsdWRlRXJyb3JDb29raWVzID0gaW5jbHVkZUVycm9ySGVhZGVycyAmJiBlcnJvckhlYWRlcnMgIT09IGxvYWRlckhlYWRlcnMgJiYgZXJyb3JIZWFkZXJzICE9PSBhY3Rpb25IZWFkZXJzO1xuICAgIGlmIChyb3V0ZU1vZHVsZS5oZWFkZXJzID09IG51bGwpIHtcbiAgICAgIGxldCBoZWFkZXJzMiA9IG5ldyBIZWFkZXJzKHBhcmVudEhlYWRlcnMpO1xuICAgICAgaWYgKGluY2x1ZGVFcnJvckNvb2tpZXMpIHtcbiAgICAgICAgcHJlcGVuZENvb2tpZXMoZXJyb3JIZWFkZXJzLCBoZWFkZXJzMik7XG4gICAgICB9XG4gICAgICBwcmVwZW5kQ29va2llcyhhY3Rpb25IZWFkZXJzLCBoZWFkZXJzMik7XG4gICAgICBwcmVwZW5kQ29va2llcyhsb2FkZXJIZWFkZXJzLCBoZWFkZXJzMik7XG4gICAgICByZXR1cm4gaGVhZGVyczI7XG4gICAgfVxuICAgIGxldCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoXG4gICAgICByb3V0ZU1vZHVsZS5oZWFkZXJzID8gdHlwZW9mIHJvdXRlTW9kdWxlLmhlYWRlcnMgPT09IFwiZnVuY3Rpb25cIiA/IHJvdXRlTW9kdWxlLmhlYWRlcnMoe1xuICAgICAgICBsb2FkZXJIZWFkZXJzLFxuICAgICAgICBwYXJlbnRIZWFkZXJzLFxuICAgICAgICBhY3Rpb25IZWFkZXJzLFxuICAgICAgICBlcnJvckhlYWRlcnM6IGluY2x1ZGVFcnJvckhlYWRlcnMgPyBlcnJvckhlYWRlcnMgOiB2b2lkIDBcbiAgICAgIH0pIDogcm91dGVNb2R1bGUuaGVhZGVycyA6IHZvaWQgMFxuICAgICk7XG4gICAgaWYgKGluY2x1ZGVFcnJvckNvb2tpZXMpIHtcbiAgICAgIHByZXBlbmRDb29raWVzKGVycm9ySGVhZGVycywgaGVhZGVycyk7XG4gICAgfVxuICAgIHByZXBlbmRDb29raWVzKGFjdGlvbkhlYWRlcnMsIGhlYWRlcnMpO1xuICAgIHByZXBlbmRDb29raWVzKGxvYWRlckhlYWRlcnMsIGhlYWRlcnMpO1xuICAgIHByZXBlbmRDb29raWVzKHBhcmVudEhlYWRlcnMsIGhlYWRlcnMpO1xuICAgIHJldHVybiBoZWFkZXJzO1xuICB9LCBuZXcgSGVhZGVycygpKTtcbn1cbmZ1bmN0aW9uIHByZXBlbmRDb29raWVzKHBhcmVudEhlYWRlcnMsIGNoaWxkSGVhZGVycykge1xuICBsZXQgcGFyZW50U2V0Q29va2llU3RyaW5nID0gcGFyZW50SGVhZGVycy5nZXQoXCJTZXQtQ29va2llXCIpO1xuICBpZiAocGFyZW50U2V0Q29va2llU3RyaW5nKSB7XG4gICAgbGV0IGNvb2tpZXMgPSBzcGxpdENvb2tpZXNTdHJpbmcocGFyZW50U2V0Q29va2llU3RyaW5nKTtcbiAgICBjb29raWVzLmZvckVhY2goKGNvb2tpZSkgPT4ge1xuICAgICAgY2hpbGRIZWFkZXJzLmFwcGVuZChcIlNldC1Db29raWVcIiwgY29va2llKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvc2luZ2xlLWZldGNoLnRzXG52YXIgU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVUyA9IDIwMjtcbmZ1bmN0aW9uIGdldFNpbmdsZUZldGNoRGF0YVN0cmF0ZWd5Mih7XG4gIGlzQWN0aW9uRGF0YVJlcXVlc3QsXG4gIGxvYWRSb3V0ZUlkc1xufSA9IHt9KSB7XG4gIHJldHVybiBhc3luYyAoeyByZXF1ZXN0LCBtYXRjaGVzIH0pID0+IHtcbiAgICBpZiAoaXNBY3Rpb25EYXRhUmVxdWVzdCAmJiByZXF1ZXN0Lm1ldGhvZCA9PT0gXCJHRVRcIikge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBsZXQgbWF0Y2hlc1RvTG9hZCA9IGxvYWRSb3V0ZUlkcyA/IG1hdGNoZXMuZmlsdGVyKChtKSA9PiBsb2FkUm91dGVJZHMuaW5jbHVkZXMobS5yb3V0ZS5pZCkpIDogbWF0Y2hlcztcbiAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgbWF0Y2hlc1RvTG9hZC5tYXAoKG1hdGNoKSA9PiBtYXRjaC5yZXNvbHZlKCkpXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAoYWNjLCByZXN1bHQsIGkpID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFttYXRjaGVzVG9Mb2FkW2ldLnJvdXRlLmlkXTogcmVzdWx0IH0pLFxuICAgICAge31cbiAgICApO1xuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gc2luZ2xlRmV0Y2hBY3Rpb24oYnVpbGQsIHNlcnZlck1vZGUsIHN0YXRpY0hhbmRsZXIsIHJlcXVlc3QsIGhhbmRsZXJVcmwsIGxvYWRDb250ZXh0LCBoYW5kbGVFcnJvcikge1xuICB0cnkge1xuICAgIGxldCBoYW5kbGVyUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGhhbmRsZXJVcmwsIHtcbiAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICBib2R5OiByZXF1ZXN0LmJvZHksXG4gICAgICBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMsXG4gICAgICBzaWduYWw6IHJlcXVlc3Quc2lnbmFsLFxuICAgICAgLi4ucmVxdWVzdC5ib2R5ID8geyBkdXBsZXg6IFwiaGFsZlwiIH0gOiB2b2lkIDBcbiAgICB9KTtcbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgc3RhdGljSGFuZGxlci5xdWVyeShoYW5kbGVyUmVxdWVzdCwge1xuICAgICAgcmVxdWVzdENvbnRleHQ6IGxvYWRDb250ZXh0LFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmc6IHRydWUsXG4gICAgICBkYXRhU3RyYXRlZ3k6IGdldFNpbmdsZUZldGNoRGF0YVN0cmF0ZWd5Mih7XG4gICAgICAgIGlzQWN0aW9uRGF0YVJlcXVlc3Q6IHRydWVcbiAgICAgIH0pXG4gICAgfSk7XG4gICAgaWYgKGlzUmVzcG9uc2UocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0OiBnZXRTaW5nbGVGZXRjaFJlZGlyZWN0KFxuICAgICAgICAgIHJlc3VsdC5zdGF0dXMsXG4gICAgICAgICAgcmVzdWx0LmhlYWRlcnMsXG4gICAgICAgICAgYnVpbGQuYmFzZW5hbWVcbiAgICAgICAgKSxcbiAgICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnMsXG4gICAgICAgIHN0YXR1czogU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVU1xuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGNvbnRleHQgPSByZXN1bHQ7XG4gICAgbGV0IGhlYWRlcnMgPSBnZXREb2N1bWVudEhlYWRlcnMoYnVpbGQsIGNvbnRleHQpO1xuICAgIGlmIChpc1JlZGlyZWN0U3RhdHVzQ29kZShjb250ZXh0LnN0YXR1c0NvZGUpICYmIGhlYWRlcnMuaGFzKFwiTG9jYXRpb25cIikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlc3VsdDogZ2V0U2luZ2xlRmV0Y2hSZWRpcmVjdChcbiAgICAgICAgICBjb250ZXh0LnN0YXR1c0NvZGUsXG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICBidWlsZC5iYXNlbmFtZVxuICAgICAgICApLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICBzdGF0dXM6IFNJTkdMRV9GRVRDSF9SRURJUkVDVF9TVEFUVVNcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChjb250ZXh0LmVycm9ycykge1xuICAgICAgT2JqZWN0LnZhbHVlcyhjb250ZXh0LmVycm9ycykuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICAgIGlmICghaXNSb3V0ZUVycm9yUmVzcG9uc2UoZXJyKSB8fCBlcnIuZXJyb3IpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnRleHQuZXJyb3JzID0gc2FuaXRpemVFcnJvcnMoY29udGV4dC5lcnJvcnMsIHNlcnZlck1vZGUpO1xuICAgIH1cbiAgICBsZXQgc2luZ2xlRmV0Y2hSZXN1bHQ7XG4gICAgaWYgKGNvbnRleHQuZXJyb3JzKSB7XG4gICAgICBzaW5nbGVGZXRjaFJlc3VsdCA9IHsgZXJyb3I6IE9iamVjdC52YWx1ZXMoY29udGV4dC5lcnJvcnMpWzBdIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNpbmdsZUZldGNoUmVzdWx0ID0geyBkYXRhOiBPYmplY3QudmFsdWVzKGNvbnRleHQuYWN0aW9uRGF0YSB8fCB7fSlbMF0gfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3VsdDogc2luZ2xlRmV0Y2hSZXN1bHQsXG4gICAgICBoZWFkZXJzLFxuICAgICAgc3RhdHVzOiBjb250ZXh0LnN0YXR1c0NvZGVcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzdWx0OiB7IGVycm9yIH0sXG4gICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycygpLFxuICAgICAgc3RhdHVzOiA1MDBcbiAgICB9O1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiBzaW5nbGVGZXRjaExvYWRlcnMoYnVpbGQsIHNlcnZlck1vZGUsIHN0YXRpY0hhbmRsZXIsIHJlcXVlc3QsIGhhbmRsZXJVcmwsIGxvYWRDb250ZXh0LCBoYW5kbGVFcnJvcikge1xuICB0cnkge1xuICAgIGxldCBoYW5kbGVyUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGhhbmRsZXJVcmwsIHtcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICAgIHNpZ25hbDogcmVxdWVzdC5zaWduYWxcbiAgICB9KTtcbiAgICBsZXQgbG9hZFJvdXRlSWRzID0gbmV3IFVSTChyZXF1ZXN0LnVybCkuc2VhcmNoUGFyYW1zLmdldChcIl9yb3V0ZXNcIik/LnNwbGl0KFwiLFwiKSB8fCB2b2lkIDA7XG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHN0YXRpY0hhbmRsZXIucXVlcnkoaGFuZGxlclJlcXVlc3QsIHtcbiAgICAgIHJlcXVlc3RDb250ZXh0OiBsb2FkQ29udGV4dCxcbiAgICAgIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nOiB0cnVlLFxuICAgICAgZGF0YVN0cmF0ZWd5OiBnZXRTaW5nbGVGZXRjaERhdGFTdHJhdGVneTIoe1xuICAgICAgICBsb2FkUm91dGVJZHNcbiAgICAgIH0pXG4gICAgfSk7XG4gICAgaWYgKGlzUmVzcG9uc2UocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdOiBnZXRTaW5nbGVGZXRjaFJlZGlyZWN0KFxuICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyxcbiAgICAgICAgICAgIHJlc3VsdC5oZWFkZXJzLFxuICAgICAgICAgICAgYnVpbGQuYmFzZW5hbWVcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcnM6IHJlc3VsdC5oZWFkZXJzLFxuICAgICAgICBzdGF0dXM6IFNJTkdMRV9GRVRDSF9SRURJUkVDVF9TVEFUVVNcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBjb250ZXh0ID0gcmVzdWx0O1xuICAgIGxldCBoZWFkZXJzID0gZ2V0RG9jdW1lbnRIZWFkZXJzKGJ1aWxkLCBjb250ZXh0KTtcbiAgICBpZiAoaXNSZWRpcmVjdFN0YXR1c0NvZGUoY29udGV4dC5zdGF0dXNDb2RlKSAmJiBoZWFkZXJzLmhhcyhcIkxvY2F0aW9uXCIpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICBbU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbF06IGdldFNpbmdsZUZldGNoUmVkaXJlY3QoXG4gICAgICAgICAgICBjb250ZXh0LnN0YXR1c0NvZGUsXG4gICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgYnVpbGQuYmFzZW5hbWVcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHN0YXR1czogU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVU1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQuZXJyb3JzKSB7XG4gICAgICBPYmplY3QudmFsdWVzKGNvbnRleHQuZXJyb3JzKS5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgICAgaWYgKCFpc1JvdXRlRXJyb3JSZXNwb25zZShlcnIpIHx8IGVyci5lcnJvcikge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29udGV4dC5lcnJvcnMgPSBzYW5pdGl6ZUVycm9ycyhjb250ZXh0LmVycm9ycywgc2VydmVyTW9kZSk7XG4gICAgfVxuICAgIGxldCByZXN1bHRzID0ge307XG4gICAgbGV0IGxvYWRlZE1hdGNoZXMgPSBsb2FkUm91dGVJZHMgPyBjb250ZXh0Lm1hdGNoZXMuZmlsdGVyKFxuICAgICAgKG0pID0+IG0ucm91dGUubG9hZGVyICYmIGxvYWRSb3V0ZUlkcy5pbmNsdWRlcyhtLnJvdXRlLmlkKVxuICAgICkgOiBjb250ZXh0Lm1hdGNoZXM7XG4gICAgbG9hZGVkTWF0Y2hlcy5mb3JFYWNoKChtKSA9PiB7XG4gICAgICBsZXQgeyBpZCB9ID0gbS5yb3V0ZTtcbiAgICAgIGlmIChjb250ZXh0LmVycm9ycyAmJiBjb250ZXh0LmVycm9ycy5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICAgICAgcmVzdWx0c1tpZF0gPSB7IGVycm9yOiBjb250ZXh0LmVycm9yc1tpZF0gfTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5sb2FkZXJEYXRhLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgICByZXN1bHRzW2lkXSA9IHsgZGF0YTogY29udGV4dC5sb2FkZXJEYXRhW2lkXSB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICByZXN1bHQ6IHJlc3VsdHMsXG4gICAgICBoZWFkZXJzLFxuICAgICAgc3RhdHVzOiBjb250ZXh0LnN0YXR1c0NvZGVcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzdWx0OiB7IHJvb3Q6IHsgZXJyb3IgfSB9LFxuICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnMoKSxcbiAgICAgIHN0YXR1czogNTAwXG4gICAgfTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0U2luZ2xlRmV0Y2hSZWRpcmVjdChzdGF0dXMsIGhlYWRlcnMsIGJhc2VuYW1lKSB7XG4gIGxldCByZWRpcmVjdDIgPSBoZWFkZXJzLmdldChcIkxvY2F0aW9uXCIpO1xuICBpZiAoYmFzZW5hbWUpIHtcbiAgICByZWRpcmVjdDIgPSBzdHJpcEJhc2VuYW1lKHJlZGlyZWN0MiwgYmFzZW5hbWUpIHx8IHJlZGlyZWN0MjtcbiAgfVxuICByZXR1cm4ge1xuICAgIHJlZGlyZWN0OiByZWRpcmVjdDIsXG4gICAgc3RhdHVzLFxuICAgIHJldmFsaWRhdGU6IChcbiAgICAgIC8vIFRlY2huaWNhbGx5IFgtUmVtaXgtUmV2YWxpZGF0ZSBpc24ndCBuZWVkZWQgaGVyZSAtIHRoYXQgd2FzIGFuIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBkZXRhaWwgb2YgP19kYXRhIHJlcXVlc3RzIGFzIG91ciB3YXkgdG8gdGVsbCB0aGUgZnJvbnQgZW5kIHRvIHJldmFsaWRhdGUgd2hlblxuICAgICAgLy8gd2UgZGlkbid0IGhhdmUgYSByZXNwb25zZSBib2R5IHRvIGluY2x1ZGUgdGhhdCBpbmZvcm1hdGlvbiBpbi5cbiAgICAgIC8vIFdpdGggc2luZ2xlIGZldGNoLCB3ZSB0ZWxsIHRoZSBmcm9udCBlbmQgdmlhIHRoaXMgcmV2YWxpZGF0ZSBib29sZWFuIGZpZWxkLlxuICAgICAgLy8gSG93ZXZlciwgd2UncmUgcmVzcGVjdGluZyBpdCBmb3Igbm93IGJlY2F1c2UgaXQgbWF5IGJlIHNvbWV0aGluZyBmb2xrcyBoYXZlXG4gICAgICAvLyB1c2VkIGluIHRoZWlyIG93biByZXNwb25zZXNcbiAgICAgIC8vIFRPRE8odjMpOiBDb25zaWRlciByZW1vdmluZyBvciBtYWtpbmcgdGhpcyBvZmZpY2lhbCBwdWJsaWMgQVBJXG4gICAgICBoZWFkZXJzLmhhcyhcIlgtUmVtaXgtUmV2YWxpZGF0ZVwiKSB8fCBoZWFkZXJzLmhhcyhcIlNldC1Db29raWVcIilcbiAgICApLFxuICAgIHJlbG9hZDogaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJlbG9hZC1Eb2N1bWVudFwiKSxcbiAgICByZXBsYWNlOiBoZWFkZXJzLmhhcyhcIlgtUmVtaXgtUmVwbGFjZVwiKVxuICB9O1xufVxuZnVuY3Rpb24gZW5jb2RlVmlhVHVyYm9TdHJlYW0oZGF0YTIsIHJlcXVlc3RTaWduYWwsIHN0cmVhbVRpbWVvdXQsIHNlcnZlck1vZGUpIHtcbiAgbGV0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGxldCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICgpID0+IGNvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKFwiU2VydmVyIFRpbWVvdXRcIikpLFxuICAgIHR5cGVvZiBzdHJlYW1UaW1lb3V0ID09PSBcIm51bWJlclwiID8gc3RyZWFtVGltZW91dCA6IDQ5NTBcbiAgKTtcbiAgcmVxdWVzdFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpO1xuICByZXR1cm4gZW5jb2RlKGRhdGEyLCB7XG4gICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICBwbHVnaW5zOiBbXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBsZXQgeyBuYW1lLCBtZXNzYWdlLCBzdGFjayB9ID0gc2VydmVyTW9kZSA9PT0gXCJwcm9kdWN0aW9uXCIgLyogUHJvZHVjdGlvbiAqLyA/IHNhbml0aXplRXJyb3IodmFsdWUsIHNlcnZlck1vZGUpIDogdmFsdWU7XG4gICAgICAgICAgcmV0dXJuIFtcIlNhbml0aXplZEVycm9yXCIsIG5hbWUsIG1lc3NhZ2UsIHN0YWNrXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlSW1wbCkge1xuICAgICAgICAgIGxldCB7IGRhdGE6IGRhdGEzLCBzdGF0dXMsIHN0YXR1c1RleHQgfSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiBbXCJFcnJvclJlc3BvbnNlXCIsIGRhdGEzLCBzdGF0dXMsIHN0YXR1c1RleHRdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbCBpbiB2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBbXCJTaW5nbGVGZXRjaFJlZGlyZWN0XCIsIHZhbHVlW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0sXG4gICAgcG9zdFBsdWdpbnM6IFtcbiAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHJldHVybjtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBcIlNpbmdsZUZldGNoQ2xhc3NJbnN0YW5jZVwiLFxuICAgICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh2YWx1ZSkpXG4gICAgICAgIF07XG4gICAgICB9LFxuICAgICAgKCkgPT4gW1wiU2luZ2xlRmV0Y2hGYWxsYmFja1wiXVxuICAgIF1cbiAgfSk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9zZXJ2ZXIudHNcbmZ1bmN0aW9uIGRlcml2ZShidWlsZCwgbW9kZSkge1xuICBsZXQgcm91dGVzID0gY3JlYXRlUm91dGVzKGJ1aWxkLnJvdXRlcyk7XG4gIGxldCBkYXRhUm91dGVzID0gY3JlYXRlU3RhdGljSGFuZGxlckRhdGFSb3V0ZXMoYnVpbGQucm91dGVzLCBidWlsZC5mdXR1cmUpO1xuICBsZXQgc2VydmVyTW9kZSA9IGlzU2VydmVyTW9kZShtb2RlKSA/IG1vZGUgOiBcInByb2R1Y3Rpb25cIiAvKiBQcm9kdWN0aW9uICovO1xuICBsZXQgc3RhdGljSGFuZGxlciA9IGNyZWF0ZVN0YXRpY0hhbmRsZXIoZGF0YVJvdXRlcywge1xuICAgIGJhc2VuYW1lOiBidWlsZC5iYXNlbmFtZVxuICB9KTtcbiAgbGV0IGVycm9ySGFuZGxlciA9IGJ1aWxkLmVudHJ5Lm1vZHVsZS5oYW5kbGVFcnJvciB8fCAoKGVycm9yLCB7IHJlcXVlc3QgfSkgPT4ge1xuICAgIGlmIChzZXJ2ZXJNb2RlICE9PSBcInRlc3RcIiAvKiBUZXN0ICovICYmICFyZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRoaXMgaXMgXCJwcml2YXRlXCIgZnJvbSB1c2VycyBidXQgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZVxuICAgICAgICBpc1JvdXRlRXJyb3JSZXNwb25zZShlcnJvcikgJiYgZXJyb3IuZXJyb3IgPyBlcnJvci5lcnJvciA6IGVycm9yXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcm91dGVzLFxuICAgIGRhdGFSb3V0ZXMsXG4gICAgc2VydmVyTW9kZSxcbiAgICBzdGF0aWNIYW5kbGVyLFxuICAgIGVycm9ySGFuZGxlclxuICB9O1xufVxudmFyIGNyZWF0ZVJlcXVlc3RIYW5kbGVyID0gKGJ1aWxkLCBtb2RlKSA9PiB7XG4gIGxldCBfYnVpbGQ7XG4gIGxldCByb3V0ZXM7XG4gIGxldCBzZXJ2ZXJNb2RlO1xuICBsZXQgc3RhdGljSGFuZGxlcjtcbiAgbGV0IGVycm9ySGFuZGxlcjtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3RIYW5kbGVyKHJlcXVlc3QsIGxvYWRDb250ZXh0ID0ge30pIHtcbiAgICBfYnVpbGQgPSB0eXBlb2YgYnVpbGQgPT09IFwiZnVuY3Rpb25cIiA/IGF3YWl0IGJ1aWxkKCkgOiBidWlsZDtcbiAgICBpZiAodHlwZW9mIGJ1aWxkID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGxldCBkZXJpdmVkID0gZGVyaXZlKF9idWlsZCwgbW9kZSk7XG4gICAgICByb3V0ZXMgPSBkZXJpdmVkLnJvdXRlcztcbiAgICAgIHNlcnZlck1vZGUgPSBkZXJpdmVkLnNlcnZlck1vZGU7XG4gICAgICBzdGF0aWNIYW5kbGVyID0gZGVyaXZlZC5zdGF0aWNIYW5kbGVyO1xuICAgICAgZXJyb3JIYW5kbGVyID0gZGVyaXZlZC5lcnJvckhhbmRsZXI7XG4gICAgfSBlbHNlIGlmICghcm91dGVzIHx8ICFzZXJ2ZXJNb2RlIHx8ICFzdGF0aWNIYW5kbGVyIHx8ICFlcnJvckhhbmRsZXIpIHtcbiAgICAgIGxldCBkZXJpdmVkID0gZGVyaXZlKF9idWlsZCwgbW9kZSk7XG4gICAgICByb3V0ZXMgPSBkZXJpdmVkLnJvdXRlcztcbiAgICAgIHNlcnZlck1vZGUgPSBkZXJpdmVkLnNlcnZlck1vZGU7XG4gICAgICBzdGF0aWNIYW5kbGVyID0gZGVyaXZlZC5zdGF0aWNIYW5kbGVyO1xuICAgICAgZXJyb3JIYW5kbGVyID0gZGVyaXZlZC5lcnJvckhhbmRsZXI7XG4gICAgfVxuICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICBsZXQgcGFyYW1zID0ge307XG4gICAgbGV0IGhhbmRsZUVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBpZiAobW9kZSA9PT0gXCJkZXZlbG9wbWVudFwiIC8qIERldmVsb3BtZW50ICovKSB7XG4gICAgICAgIGdldERldlNlcnZlckhvb2tzKCk/LnByb2Nlc3NSZXF1ZXN0RXJyb3I/LihlcnJvcik7XG4gICAgICB9XG4gICAgICBlcnJvckhhbmRsZXIoZXJyb3IsIHtcbiAgICAgICAgY29udGV4dDogbG9hZENvbnRleHQsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgcmVxdWVzdFxuICAgICAgfSk7XG4gICAgfTtcbiAgICBsZXQgbWFuaWZlc3RVcmwgPSBgJHtfYnVpbGQuYmFzZW5hbWUgPz8gXCIvXCJ9L19fbWFuaWZlc3RgLnJlcGxhY2UoXG4gICAgICAvXFwvKy9nLFxuICAgICAgXCIvXCJcbiAgICApO1xuICAgIGlmICh1cmwucGF0aG5hbWUgPT09IG1hbmlmZXN0VXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQgcmVzID0gYXdhaXQgaGFuZGxlTWFuaWZlc3RSZXF1ZXN0KF9idWlsZCwgcm91dGVzLCB1cmwpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVFcnJvcihlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIlVua25vd24gU2VydmVyIEVycm9yXCIsIHsgc3RhdHVzOiA1MDAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBtYXRjaGVzID0gbWF0Y2hTZXJ2ZXJSb3V0ZXMocm91dGVzLCB1cmwucGF0aG5hbWUsIF9idWlsZC5iYXNlbmFtZSk7XG4gICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgbWF0Y2hlc1swXS5wYXJhbXMpO1xuICAgIH1cbiAgICBsZXQgcmVzcG9uc2U7XG4gICAgaWYgKHVybC5wYXRobmFtZS5lbmRzV2l0aChcIi5kYXRhXCIpKSB7XG4gICAgICBsZXQgaGFuZGxlclVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICAgICAgaGFuZGxlclVybC5wYXRobmFtZSA9IGhhbmRsZXJVcmwucGF0aG5hbWUucmVwbGFjZSgvXFwuZGF0YSQvLCBcIlwiKS5yZXBsYWNlKC9eXFwvX3Jvb3QkLywgXCIvXCIpO1xuICAgICAgbGV0IHNpbmdsZUZldGNoTWF0Y2hlcyA9IG1hdGNoU2VydmVyUm91dGVzKFxuICAgICAgICByb3V0ZXMsXG4gICAgICAgIGhhbmRsZXJVcmwucGF0aG5hbWUsXG4gICAgICAgIF9idWlsZC5iYXNlbmFtZVxuICAgICAgKTtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgaGFuZGxlU2luZ2xlRmV0Y2hSZXF1ZXN0KFxuICAgICAgICBzZXJ2ZXJNb2RlLFxuICAgICAgICBfYnVpbGQsXG4gICAgICAgIHN0YXRpY0hhbmRsZXIsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGhhbmRsZXJVcmwsXG4gICAgICAgIGxvYWRDb250ZXh0LFxuICAgICAgICBoYW5kbGVFcnJvclxuICAgICAgKTtcbiAgICAgIGlmIChfYnVpbGQuZW50cnkubW9kdWxlLmhhbmRsZURhdGFSZXF1ZXN0KSB7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgX2J1aWxkLmVudHJ5Lm1vZHVsZS5oYW5kbGVEYXRhUmVxdWVzdChyZXNwb25zZSwge1xuICAgICAgICAgIGNvbnRleHQ6IGxvYWRDb250ZXh0LFxuICAgICAgICAgIHBhcmFtczogc2luZ2xlRmV0Y2hNYXRjaGVzID8gc2luZ2xlRmV0Y2hNYXRjaGVzWzBdLnBhcmFtcyA6IHt9LFxuICAgICAgICAgIHJlcXVlc3RcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc1JlZGlyZWN0UmVzcG9uc2UocmVzcG9uc2UpKSB7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGdldFNpbmdsZUZldGNoUmVkaXJlY3QoXG4gICAgICAgICAgICByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgICAgX2J1aWxkLmJhc2VuYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAocmVxdWVzdC5tZXRob2QgPT09IFwiR0VUXCIpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdOiByZXN1bHRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICAgICAgaGVhZGVycy5zZXQoXCJDb250ZW50LVR5cGVcIiwgXCJ0ZXh0L3gtc2NyaXB0XCIpO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICAgICAgICBlbmNvZGVWaWFUdXJib1N0cmVhbShcbiAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICByZXF1ZXN0LnNpZ25hbCxcbiAgICAgICAgICAgICAgX2J1aWxkLmVudHJ5Lm1vZHVsZS5zdHJlYW1UaW1lb3V0LFxuICAgICAgICAgICAgICBzZXJ2ZXJNb2RlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0dXM6IFNJTkdMRV9GRVRDSF9SRURJUkVDVF9TVEFUVVMsXG4gICAgICAgICAgICAgIGhlYWRlcnNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtYXRjaGVzICYmIG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5tb2R1bGUuZGVmYXVsdCA9PSBudWxsICYmIG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5tb2R1bGUuRXJyb3JCb3VuZGFyeSA9PSBudWxsKSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGhhbmRsZVJlc291cmNlUmVxdWVzdChcbiAgICAgICAgc2VydmVyTW9kZSxcbiAgICAgICAgc3RhdGljSGFuZGxlcixcbiAgICAgICAgbWF0Y2hlcy5zbGljZSgtMSlbMF0ucm91dGUuaWQsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGxvYWRDb250ZXh0LFxuICAgICAgICBoYW5kbGVFcnJvclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNyaXRpY2FsQ3NzID0gbW9kZSA9PT0gXCJkZXZlbG9wbWVudFwiIC8qIERldmVsb3BtZW50ICovID8gYXdhaXQgZ2V0RGV2U2VydmVySG9va3MoKT8uZ2V0Q3JpdGljYWxDc3M/LihfYnVpbGQsIHVybC5wYXRobmFtZSkgOiB2b2lkIDA7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGhhbmRsZURvY3VtZW50UmVxdWVzdChcbiAgICAgICAgc2VydmVyTW9kZSxcbiAgICAgICAgX2J1aWxkLFxuICAgICAgICBzdGF0aWNIYW5kbGVyLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBsb2FkQ29udGV4dCxcbiAgICAgICAgaGFuZGxlRXJyb3IsXG4gICAgICAgIGNyaXRpY2FsQ3NzXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAocmVxdWVzdC5tZXRob2QgPT09IFwiSEVBRFwiKSB7XG4gICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtcbiAgICAgICAgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHRcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH07XG59O1xuYXN5bmMgZnVuY3Rpb24gaGFuZGxlTWFuaWZlc3RSZXF1ZXN0KGJ1aWxkLCByb3V0ZXMsIHVybCkge1xuICBsZXQgcGF0Y2hlcyA9IHt9O1xuICBpZiAodXJsLnNlYXJjaFBhcmFtcy5oYXMoXCJwXCIpKSB7XG4gICAgZm9yIChsZXQgcGF0aCBvZiB1cmwuc2VhcmNoUGFyYW1zLmdldEFsbChcInBcIikpIHtcbiAgICAgIGxldCBtYXRjaGVzID0gbWF0Y2hTZXJ2ZXJSb3V0ZXMocm91dGVzLCBwYXRoLCBidWlsZC5iYXNlbmFtZSk7XG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgICAgICAgbGV0IHJvdXRlSWQgPSBtYXRjaC5yb3V0ZS5pZDtcbiAgICAgICAgICBsZXQgcm91dGUgPSBidWlsZC5hc3NldHMucm91dGVzW3JvdXRlSWRdO1xuICAgICAgICAgIGlmIChyb3V0ZSkge1xuICAgICAgICAgICAgcGF0Y2hlc1tyb3V0ZUlkXSA9IHJvdXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gUmVzcG9uc2UuanNvbihwYXRjaGVzLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCwgaW1tdXRhYmxlXCJcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiSW52YWxpZCBSZXF1ZXN0XCIsIHsgc3RhdHVzOiA0MDAgfSk7XG59XG5hc3luYyBmdW5jdGlvbiBoYW5kbGVTaW5nbGVGZXRjaFJlcXVlc3Qoc2VydmVyTW9kZSwgYnVpbGQsIHN0YXRpY0hhbmRsZXIsIHJlcXVlc3QsIGhhbmRsZXJVcmwsIGxvYWRDb250ZXh0LCBoYW5kbGVFcnJvcikge1xuICBsZXQgeyByZXN1bHQsIGhlYWRlcnMsIHN0YXR1cyB9ID0gcmVxdWVzdC5tZXRob2QgIT09IFwiR0VUXCIgPyBhd2FpdCBzaW5nbGVGZXRjaEFjdGlvbihcbiAgICBidWlsZCxcbiAgICBzZXJ2ZXJNb2RlLFxuICAgIHN0YXRpY0hhbmRsZXIsXG4gICAgcmVxdWVzdCxcbiAgICBoYW5kbGVyVXJsLFxuICAgIGxvYWRDb250ZXh0LFxuICAgIGhhbmRsZUVycm9yXG4gICkgOiBhd2FpdCBzaW5nbGVGZXRjaExvYWRlcnMoXG4gICAgYnVpbGQsXG4gICAgc2VydmVyTW9kZSxcbiAgICBzdGF0aWNIYW5kbGVyLFxuICAgIHJlcXVlc3QsXG4gICAgaGFuZGxlclVybCxcbiAgICBsb2FkQ29udGV4dCxcbiAgICBoYW5kbGVFcnJvclxuICApO1xuICBsZXQgcmVzdWx0SGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlcnMpO1xuICByZXN1bHRIZWFkZXJzLnNldChcIlgtUmVtaXgtUmVzcG9uc2VcIiwgXCJ5ZXNcIik7XG4gIGlmIChzdGF0dXMgPT09IDMwNCkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwgeyBzdGF0dXM6IDMwNCwgaGVhZGVyczogcmVzdWx0SGVhZGVycyB9KTtcbiAgfVxuICByZXN1bHRIZWFkZXJzLnNldChcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQveC1zY3JpcHRcIik7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgZW5jb2RlVmlhVHVyYm9TdHJlYW0oXG4gICAgICByZXN1bHQsXG4gICAgICByZXF1ZXN0LnNpZ25hbCxcbiAgICAgIGJ1aWxkLmVudHJ5Lm1vZHVsZS5zdHJlYW1UaW1lb3V0LFxuICAgICAgc2VydmVyTW9kZVxuICAgICksXG4gICAge1xuICAgICAgc3RhdHVzOiBzdGF0dXMgfHwgMjAwLFxuICAgICAgaGVhZGVyczogcmVzdWx0SGVhZGVyc1xuICAgIH1cbiAgKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZURvY3VtZW50UmVxdWVzdChzZXJ2ZXJNb2RlLCBidWlsZCwgc3RhdGljSGFuZGxlciwgcmVxdWVzdCwgbG9hZENvbnRleHQsIGhhbmRsZUVycm9yLCBjcml0aWNhbENzcykge1xuICBsZXQgY29udGV4dDtcbiAgdHJ5IHtcbiAgICBjb250ZXh0ID0gYXdhaXQgc3RhdGljSGFuZGxlci5xdWVyeShyZXF1ZXN0LCB7XG4gICAgICByZXF1ZXN0Q29udGV4dDogbG9hZENvbnRleHRcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7IHN0YXR1czogNTAwIH0pO1xuICB9XG4gIGlmIChpc1Jlc3BvbnNlKGNvbnRleHQpKSB7XG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH1cbiAgbGV0IGhlYWRlcnMgPSBnZXREb2N1bWVudEhlYWRlcnMoYnVpbGQsIGNvbnRleHQpO1xuICBpZiAoY29udGV4dC5zdGF0dXNDb2RlID09PSAzMDQpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHsgc3RhdHVzOiAzMDQsIGhlYWRlcnMgfSk7XG4gIH1cbiAgaWYgKGNvbnRleHQuZXJyb3JzKSB7XG4gICAgT2JqZWN0LnZhbHVlcyhjb250ZXh0LmVycm9ycykuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICBpZiAoIWlzUm91dGVFcnJvclJlc3BvbnNlKGVycikgfHwgZXJyLmVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29udGV4dC5lcnJvcnMgPSBzYW5pdGl6ZUVycm9ycyhjb250ZXh0LmVycm9ycywgc2VydmVyTW9kZSk7XG4gIH1cbiAgbGV0IHN0YXRlID0ge1xuICAgIGxvYWRlckRhdGE6IGNvbnRleHQubG9hZGVyRGF0YSxcbiAgICBhY3Rpb25EYXRhOiBjb250ZXh0LmFjdGlvbkRhdGEsXG4gICAgZXJyb3JzOiBzZXJpYWxpemVFcnJvcnMyKGNvbnRleHQuZXJyb3JzLCBzZXJ2ZXJNb2RlKVxuICB9O1xuICBsZXQgZW50cnlDb250ZXh0ID0ge1xuICAgIG1hbmlmZXN0OiBidWlsZC5hc3NldHMsXG4gICAgcm91dGVNb2R1bGVzOiBjcmVhdGVFbnRyeVJvdXRlTW9kdWxlcyhidWlsZC5yb3V0ZXMpLFxuICAgIHN0YXRpY0hhbmRsZXJDb250ZXh0OiBjb250ZXh0LFxuICAgIGNyaXRpY2FsQ3NzLFxuICAgIHNlcnZlckhhbmRvZmZTdHJpbmc6IGNyZWF0ZVNlcnZlckhhbmRvZmZTdHJpbmcoe1xuICAgICAgYmFzZW5hbWU6IGJ1aWxkLmJhc2VuYW1lLFxuICAgICAgY3JpdGljYWxDc3MsXG4gICAgICBmdXR1cmU6IGJ1aWxkLmZ1dHVyZSxcbiAgICAgIGlzU3BhTW9kZTogYnVpbGQuaXNTcGFNb2RlXG4gICAgfSksXG4gICAgc2VydmVySGFuZG9mZlN0cmVhbTogZW5jb2RlVmlhVHVyYm9TdHJlYW0oXG4gICAgICBzdGF0ZSxcbiAgICAgIHJlcXVlc3Quc2lnbmFsLFxuICAgICAgYnVpbGQuZW50cnkubW9kdWxlLnN0cmVhbVRpbWVvdXQsXG4gICAgICBzZXJ2ZXJNb2RlXG4gICAgKSxcbiAgICByZW5kZXJNZXRhOiB7fSxcbiAgICBmdXR1cmU6IGJ1aWxkLmZ1dHVyZSxcbiAgICBpc1NwYU1vZGU6IGJ1aWxkLmlzU3BhTW9kZSxcbiAgICBzZXJpYWxpemVFcnJvcjogKGVycikgPT4gc2VyaWFsaXplRXJyb3IoZXJyLCBzZXJ2ZXJNb2RlKVxuICB9O1xuICBsZXQgaGFuZGxlRG9jdW1lbnRSZXF1ZXN0RnVuY3Rpb24gPSBidWlsZC5lbnRyeS5tb2R1bGUuZGVmYXVsdDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgaGFuZGxlRG9jdW1lbnRSZXF1ZXN0RnVuY3Rpb24oXG4gICAgICByZXF1ZXN0LFxuICAgICAgY29udGV4dC5zdGF0dXNDb2RlLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGVudHJ5Q29udGV4dCxcbiAgICAgIGxvYWRDb250ZXh0XG4gICAgKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgbGV0IGVycm9yRm9yU2Vjb25kUmVuZGVyID0gZXJyb3I7XG4gICAgaWYgKGlzUmVzcG9uc2UoZXJyb3IpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQgZGF0YTIgPSBhd2FpdCB1bndyYXBSZXNwb25zZShlcnJvcik7XG4gICAgICAgIGVycm9yRm9yU2Vjb25kUmVuZGVyID0gbmV3IEVycm9yUmVzcG9uc2VJbXBsKFxuICAgICAgICAgIGVycm9yLnN0YXR1cyxcbiAgICAgICAgICBlcnJvci5zdGF0dXNUZXh0LFxuICAgICAgICAgIGRhdGEyXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnRleHQgPSBnZXRTdGF0aWNDb250ZXh0RnJvbUVycm9yKFxuICAgICAgc3RhdGljSGFuZGxlci5kYXRhUm91dGVzLFxuICAgICAgY29udGV4dCxcbiAgICAgIGVycm9yRm9yU2Vjb25kUmVuZGVyXG4gICAgKTtcbiAgICBpZiAoY29udGV4dC5lcnJvcnMpIHtcbiAgICAgIGNvbnRleHQuZXJyb3JzID0gc2FuaXRpemVFcnJvcnMoY29udGV4dC5lcnJvcnMsIHNlcnZlck1vZGUpO1xuICAgIH1cbiAgICBsZXQgc3RhdGUyID0ge1xuICAgICAgbG9hZGVyRGF0YTogY29udGV4dC5sb2FkZXJEYXRhLFxuICAgICAgYWN0aW9uRGF0YTogY29udGV4dC5hY3Rpb25EYXRhLFxuICAgICAgZXJyb3JzOiBzZXJpYWxpemVFcnJvcnMyKGNvbnRleHQuZXJyb3JzLCBzZXJ2ZXJNb2RlKVxuICAgIH07XG4gICAgZW50cnlDb250ZXh0ID0ge1xuICAgICAgLi4uZW50cnlDb250ZXh0LFxuICAgICAgc3RhdGljSGFuZGxlckNvbnRleHQ6IGNvbnRleHQsXG4gICAgICBzZXJ2ZXJIYW5kb2ZmU3RyaW5nOiBjcmVhdGVTZXJ2ZXJIYW5kb2ZmU3RyaW5nKHtcbiAgICAgICAgYmFzZW5hbWU6IGJ1aWxkLmJhc2VuYW1lLFxuICAgICAgICBmdXR1cmU6IGJ1aWxkLmZ1dHVyZSxcbiAgICAgICAgaXNTcGFNb2RlOiBidWlsZC5pc1NwYU1vZGVcbiAgICAgIH0pLFxuICAgICAgc2VydmVySGFuZG9mZlN0cmVhbTogZW5jb2RlVmlhVHVyYm9TdHJlYW0oXG4gICAgICAgIHN0YXRlMixcbiAgICAgICAgcmVxdWVzdC5zaWduYWwsXG4gICAgICAgIGJ1aWxkLmVudHJ5Lm1vZHVsZS5zdHJlYW1UaW1lb3V0LFxuICAgICAgICBzZXJ2ZXJNb2RlXG4gICAgICApLFxuICAgICAgcmVuZGVyTWV0YToge31cbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgaGFuZGxlRG9jdW1lbnRSZXF1ZXN0RnVuY3Rpb24oXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGNvbnRleHQuc3RhdHVzQ29kZSxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgZW50cnlDb250ZXh0LFxuICAgICAgICBsb2FkQ29udGV4dFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcjIpIHtcbiAgICAgIGhhbmRsZUVycm9yKGVycm9yMik7XG4gICAgICByZXR1cm4gcmV0dXJuTGFzdFJlc29ydEVycm9yUmVzcG9uc2UoZXJyb3IyLCBzZXJ2ZXJNb2RlKTtcbiAgICB9XG4gIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZVJlc291cmNlUmVxdWVzdChzZXJ2ZXJNb2RlLCBzdGF0aWNIYW5kbGVyLCByb3V0ZUlkLCByZXF1ZXN0LCBsb2FkQ29udGV4dCwgaGFuZGxlRXJyb3IpIHtcbiAgdHJ5IHtcbiAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBzdGF0aWNIYW5kbGVyLnF1ZXJ5Um91dGUocmVxdWVzdCwge1xuICAgICAgcm91dGVJZCxcbiAgICAgIHJlcXVlc3RDb250ZXh0OiBsb2FkQ29udGV4dFxuICAgIH0pO1xuICAgIGludmFyaWFudDMoXG4gICAgICBpc1Jlc3BvbnNlKHJlc3BvbnNlKSxcbiAgICAgIFwiRXhwZWN0ZWQgYSBSZXNwb25zZSB0byBiZSByZXR1cm5lZCBmcm9tIHJlc291cmNlIHJvdXRlIGhhbmRsZXJcIlxuICAgICk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChpc1Jlc3BvbnNlKGVycm9yKSkge1xuICAgICAgZXJyb3IuaGVhZGVycy5zZXQoXCJYLVJlbWl4LUNhdGNoXCIsIFwieWVzXCIpO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cbiAgICBpZiAoaXNSb3V0ZUVycm9yUmVzcG9uc2UoZXJyb3IpKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVycm9yUmVzcG9uc2VUb0pzb24oZXJyb3IsIHNlcnZlck1vZGUpO1xuICAgIH1cbiAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIHJldHVybkxhc3RSZXNvcnRFcnJvclJlc3BvbnNlKGVycm9yLCBzZXJ2ZXJNb2RlKTtcbiAgfVxufVxuZnVuY3Rpb24gZXJyb3JSZXNwb25zZVRvSnNvbihlcnJvclJlc3BvbnNlLCBzZXJ2ZXJNb2RlKSB7XG4gIHJldHVybiBSZXNwb25zZS5qc29uKFxuICAgIHNlcmlhbGl6ZUVycm9yKFxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUaGlzIGlzIFwicHJpdmF0ZVwiIGZyb20gdXNlcnMgYnV0IGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2VcbiAgICAgIGVycm9yUmVzcG9uc2UuZXJyb3IgfHwgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBTZXJ2ZXIgRXJyb3JcIiksXG4gICAgICBzZXJ2ZXJNb2RlXG4gICAgKSxcbiAgICB7XG4gICAgICBzdGF0dXM6IGVycm9yUmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogZXJyb3JSZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIlgtUmVtaXgtRXJyb3JcIjogXCJ5ZXNcIlxuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIHJldHVybkxhc3RSZXNvcnRFcnJvclJlc3BvbnNlKGVycm9yLCBzZXJ2ZXJNb2RlKSB7XG4gIGxldCBtZXNzYWdlID0gXCJVbmV4cGVjdGVkIFNlcnZlciBFcnJvclwiO1xuICBpZiAoc2VydmVyTW9kZSAhPT0gXCJwcm9kdWN0aW9uXCIgLyogUHJvZHVjdGlvbiAqLykge1xuICAgIG1lc3NhZ2UgKz0gYFxuXG4ke1N0cmluZyhlcnJvcil9YDtcbiAgfVxuICByZXR1cm4gbmV3IFJlc3BvbnNlKG1lc3NhZ2UsIHtcbiAgICBzdGF0dXM6IDUwMCxcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcInRleHQvcGxhaW5cIlxuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiB1bndyYXBSZXNwb25zZShyZXNwb25zZSkge1xuICBsZXQgY29udGVudFR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKTtcbiAgcmV0dXJuIGNvbnRlbnRUeXBlICYmIC9cXGJhcHBsaWNhdGlvblxcL2pzb25cXGIvLnRlc3QoY29udGVudFR5cGUpID8gcmVzcG9uc2UuYm9keSA9PSBudWxsID8gbnVsbCA6IHJlc3BvbnNlLmpzb24oKSA6IHJlc3BvbnNlLnRleHQoKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL3Nlc3Npb25zLnRzXG5mdW5jdGlvbiBmbGFzaChuYW1lKSB7XG4gIHJldHVybiBgX19mbGFzaF8ke25hbWV9X19gO1xufVxudmFyIGNyZWF0ZVNlc3Npb24gPSAoaW5pdGlhbERhdGEgPSB7fSwgaWQgPSBcIlwiKSA9PiB7XG4gIGxldCBtYXAgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKGluaXRpYWxEYXRhKSk7XG4gIHJldHVybiB7XG4gICAgZ2V0IGlkKCkge1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH0sXG4gICAgZ2V0IGRhdGEoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKG1hcCk7XG4gICAgfSxcbiAgICBoYXMobmFtZSkge1xuICAgICAgcmV0dXJuIG1hcC5oYXMobmFtZSkgfHwgbWFwLmhhcyhmbGFzaChuYW1lKSk7XG4gICAgfSxcbiAgICBnZXQobmFtZSkge1xuICAgICAgaWYgKG1hcC5oYXMobmFtZSkpIHJldHVybiBtYXAuZ2V0KG5hbWUpO1xuICAgICAgbGV0IGZsYXNoTmFtZSA9IGZsYXNoKG5hbWUpO1xuICAgICAgaWYgKG1hcC5oYXMoZmxhc2hOYW1lKSkge1xuICAgICAgICBsZXQgdmFsdWUgPSBtYXAuZ2V0KGZsYXNoTmFtZSk7XG4gICAgICAgIG1hcC5kZWxldGUoZmxhc2hOYW1lKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9LFxuICAgIHNldChuYW1lLCB2YWx1ZSkge1xuICAgICAgbWFwLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgfSxcbiAgICBmbGFzaChuYW1lLCB2YWx1ZSkge1xuICAgICAgbWFwLnNldChmbGFzaChuYW1lKSwgdmFsdWUpO1xuICAgIH0sXG4gICAgdW5zZXQobmFtZSkge1xuICAgICAgbWFwLmRlbGV0ZShuYW1lKTtcbiAgICB9XG4gIH07XG59O1xudmFyIGlzU2Vzc2lvbiA9IChvYmplY3QpID0+IHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIHR5cGVvZiBvYmplY3QuaWQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIG9iamVjdC5kYXRhICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBvYmplY3QuaGFzID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIG9iamVjdC5nZXQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqZWN0LnNldCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBvYmplY3QuZmxhc2ggPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqZWN0LnVuc2V0ID09PSBcImZ1bmN0aW9uXCI7XG59O1xuZnVuY3Rpb24gY3JlYXRlU2Vzc2lvblN0b3JhZ2Uoe1xuICBjb29raWU6IGNvb2tpZUFyZyxcbiAgY3JlYXRlRGF0YSxcbiAgcmVhZERhdGEsXG4gIHVwZGF0ZURhdGEsXG4gIGRlbGV0ZURhdGFcbn0pIHtcbiAgbGV0IGNvb2tpZSA9IGlzQ29va2llKGNvb2tpZUFyZykgPyBjb29raWVBcmcgOiBjcmVhdGVDb29raWUoY29va2llQXJnPy5uYW1lIHx8IFwiX19zZXNzaW9uXCIsIGNvb2tpZUFyZyk7XG4gIHdhcm5PbmNlQWJvdXRTaWduaW5nU2Vzc2lvbkNvb2tpZShjb29raWUpO1xuICByZXR1cm4ge1xuICAgIGFzeW5jIGdldFNlc3Npb24oY29va2llSGVhZGVyLCBvcHRpb25zKSB7XG4gICAgICBsZXQgaWQgPSBjb29raWVIZWFkZXIgJiYgYXdhaXQgY29va2llLnBhcnNlKGNvb2tpZUhlYWRlciwgb3B0aW9ucyk7XG4gICAgICBsZXQgZGF0YTIgPSBpZCAmJiBhd2FpdCByZWFkRGF0YShpZCk7XG4gICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvbihkYXRhMiB8fCB7fSwgaWQgfHwgXCJcIik7XG4gICAgfSxcbiAgICBhc3luYyBjb21taXRTZXNzaW9uKHNlc3Npb24sIG9wdGlvbnMpIHtcbiAgICAgIGxldCB7IGlkLCBkYXRhOiBkYXRhMiB9ID0gc2Vzc2lvbjtcbiAgICAgIGxldCBleHBpcmVzID0gb3B0aW9ucz8ubWF4QWdlICE9IG51bGwgPyBuZXcgRGF0ZShEYXRlLm5vdygpICsgb3B0aW9ucy5tYXhBZ2UgKiAxZTMpIDogb3B0aW9ucz8uZXhwaXJlcyAhPSBudWxsID8gb3B0aW9ucy5leHBpcmVzIDogY29va2llLmV4cGlyZXM7XG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgYXdhaXQgdXBkYXRlRGF0YShpZCwgZGF0YTIsIGV4cGlyZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWQgPSBhd2FpdCBjcmVhdGVEYXRhKGRhdGEyLCBleHBpcmVzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb29raWUuc2VyaWFsaXplKGlkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGFzeW5jIGRlc3Ryb3lTZXNzaW9uKHNlc3Npb24sIG9wdGlvbnMpIHtcbiAgICAgIGF3YWl0IGRlbGV0ZURhdGEoc2Vzc2lvbi5pZCk7XG4gICAgICByZXR1cm4gY29va2llLnNlcmlhbGl6ZShcIlwiLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG1heEFnZTogdm9pZCAwLFxuICAgICAgICBleHBpcmVzOiAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoMClcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIHdhcm5PbmNlQWJvdXRTaWduaW5nU2Vzc2lvbkNvb2tpZShjb29raWUpIHtcbiAgd2Fybk9uY2UoXG4gICAgY29va2llLmlzU2lnbmVkLFxuICAgIGBUaGUgXCIke2Nvb2tpZS5uYW1lfVwiIGNvb2tpZSBpcyBub3Qgc2lnbmVkLCBidXQgc2Vzc2lvbiBjb29raWVzIHNob3VsZCBiZSBzaWduZWQgdG8gcHJldmVudCB0YW1wZXJpbmcgb24gdGhlIGNsaWVudCBiZWZvcmUgdGhleSBhcmUgc2VudCBiYWNrIHRvIHRoZSBzZXJ2ZXIuIFNlZSBodHRwczovL3JlbWl4LnJ1bi91dGlscy9jb29raWVzI3NpZ25pbmctY29va2llcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5gXG4gICk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9zZXNzaW9ucy9jb29raWVTdG9yYWdlLnRzXG5mdW5jdGlvbiBjcmVhdGVDb29raWVTZXNzaW9uU3RvcmFnZSh7IGNvb2tpZTogY29va2llQXJnIH0gPSB7fSkge1xuICBsZXQgY29va2llID0gaXNDb29raWUoY29va2llQXJnKSA/IGNvb2tpZUFyZyA6IGNyZWF0ZUNvb2tpZShjb29raWVBcmc/Lm5hbWUgfHwgXCJfX3Nlc3Npb25cIiwgY29va2llQXJnKTtcbiAgd2Fybk9uY2VBYm91dFNpZ25pbmdTZXNzaW9uQ29va2llKGNvb2tpZSk7XG4gIHJldHVybiB7XG4gICAgYXN5bmMgZ2V0U2Vzc2lvbihjb29raWVIZWFkZXIsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBjcmVhdGVTZXNzaW9uKFxuICAgICAgICBjb29raWVIZWFkZXIgJiYgYXdhaXQgY29va2llLnBhcnNlKGNvb2tpZUhlYWRlciwgb3B0aW9ucykgfHwge31cbiAgICAgICk7XG4gICAgfSxcbiAgICBhc3luYyBjb21taXRTZXNzaW9uKHNlc3Npb24sIG9wdGlvbnMpIHtcbiAgICAgIGxldCBzZXJpYWxpemVkQ29va2llID0gYXdhaXQgY29va2llLnNlcmlhbGl6ZShzZXNzaW9uLmRhdGEsIG9wdGlvbnMpO1xuICAgICAgaWYgKHNlcmlhbGl6ZWRDb29raWUubGVuZ3RoID4gNDA5Nikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJDb29raWUgbGVuZ3RoIHdpbGwgZXhjZWVkIGJyb3dzZXIgbWF4aW11bS4gTGVuZ3RoOiBcIiArIHNlcmlhbGl6ZWRDb29raWUubGVuZ3RoXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VyaWFsaXplZENvb2tpZTtcbiAgICB9LFxuICAgIGFzeW5jIGRlc3Ryb3lTZXNzaW9uKF9zZXNzaW9uLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gY29va2llLnNlcmlhbGl6ZShcIlwiLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG1heEFnZTogdm9pZCAwLFxuICAgICAgICBleHBpcmVzOiAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoMClcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL3Nlc3Npb25zL21lbW9yeVN0b3JhZ2UudHNcbmZ1bmN0aW9uIGNyZWF0ZU1lbW9yeVNlc3Npb25TdG9yYWdlKHsgY29va2llIH0gPSB7fSkge1xuICBsZXQgbWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgcmV0dXJuIGNyZWF0ZVNlc3Npb25TdG9yYWdlKHtcbiAgICBjb29raWUsXG4gICAgYXN5bmMgY3JlYXRlRGF0YShkYXRhMiwgZXhwaXJlcykge1xuICAgICAgbGV0IGlkID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDEwKTtcbiAgICAgIG1hcC5zZXQoaWQsIHsgZGF0YTogZGF0YTIsIGV4cGlyZXMgfSk7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSxcbiAgICBhc3luYyByZWFkRGF0YShpZCkge1xuICAgICAgaWYgKG1hcC5oYXMoaWQpKSB7XG4gICAgICAgIGxldCB7IGRhdGE6IGRhdGEyLCBleHBpcmVzIH0gPSBtYXAuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFleHBpcmVzIHx8IGV4cGlyZXMgPiAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkge1xuICAgICAgICAgIHJldHVybiBkYXRhMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXhwaXJlcykgbWFwLmRlbGV0ZShpZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIGFzeW5jIHVwZGF0ZURhdGEoaWQsIGRhdGEyLCBleHBpcmVzKSB7XG4gICAgICBtYXAuc2V0KGlkLCB7IGRhdGE6IGRhdGEyLCBleHBpcmVzIH0pO1xuICAgIH0sXG4gICAgYXN5bmMgZGVsZXRlRGF0YShpZCkge1xuICAgICAgbWFwLmRlbGV0ZShpZCk7XG4gICAgfVxuICB9KTtcbn1cblxuLy8gbGliL2RvbS9zc3IvZXJyb3JzLnRzXG5mdW5jdGlvbiBkZXNlcmlhbGl6ZUVycm9yczIoZXJyb3JzKSB7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gbnVsbDtcbiAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhlcnJvcnMpO1xuICBsZXQgc2VyaWFsaXplZCA9IHt9O1xuICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIGVudHJpZXMpIHtcbiAgICBpZiAodmFsICYmIHZhbC5fX3R5cGUgPT09IFwiUm91dGVFcnJvclJlc3BvbnNlXCIpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IG5ldyBFcnJvclJlc3BvbnNlSW1wbChcbiAgICAgICAgdmFsLnN0YXR1cyxcbiAgICAgICAgdmFsLnN0YXR1c1RleHQsXG4gICAgICAgIHZhbC5kYXRhLFxuICAgICAgICB2YWwuaW50ZXJuYWwgPT09IHRydWVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh2YWwgJiYgdmFsLl9fdHlwZSA9PT0gXCJFcnJvclwiKSB7XG4gICAgICBpZiAodmFsLl9fc3ViVHlwZSkge1xuICAgICAgICBsZXQgRXJyb3JDb25zdHJ1Y3RvciA9IHdpbmRvd1t2YWwuX19zdWJUeXBlXTtcbiAgICAgICAgaWYgKHR5cGVvZiBFcnJvckNvbnN0cnVjdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yQ29uc3RydWN0b3IodmFsLm1lc3NhZ2UpO1xuICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSB2YWwuc3RhY2s7XG4gICAgICAgICAgICBzZXJpYWxpemVkW2tleV0gPSBlcnJvcjtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc2VyaWFsaXplZFtrZXldID09IG51bGwpIHtcbiAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yKHZhbC5tZXNzYWdlKTtcbiAgICAgICAgZXJyb3Iuc3RhY2sgPSB2YWwuc3RhY2s7XG4gICAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IGVycm9yO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXJpYWxpemVkW2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuXG5leHBvcnQge1xuICBBY3Rpb24sXG4gIGNyZWF0ZUJyb3dzZXJIaXN0b3J5LFxuICBpbnZhcmlhbnQsXG4gIGNyZWF0ZVBhdGgsXG4gIHBhcnNlUGF0aCxcbiAgbWF0Y2hSb3V0ZXMsXG4gIGdlbmVyYXRlUGF0aCxcbiAgbWF0Y2hQYXRoLFxuICByZXNvbHZlUGF0aCxcbiAgZGF0YSxcbiAgcmVkaXJlY3QsXG4gIHJlZGlyZWN0RG9jdW1lbnQsXG4gIHJlcGxhY2UsXG4gIEVycm9yUmVzcG9uc2VJbXBsLFxuICBpc1JvdXRlRXJyb3JSZXNwb25zZSxcbiAgSURMRV9OQVZJR0FUSU9OLFxuICBJRExFX0ZFVENIRVIsXG4gIElETEVfQkxPQ0tFUixcbiAgY3JlYXRlUm91dGVyLFxuICBEYXRhUm91dGVyQ29udGV4dCxcbiAgRGF0YVJvdXRlclN0YXRlQ29udGV4dCxcbiAgVmlld1RyYW5zaXRpb25Db250ZXh0LFxuICBGZXRjaGVyc0NvbnRleHQsXG4gIE5hdmlnYXRpb25Db250ZXh0LFxuICBMb2NhdGlvbkNvbnRleHQsXG4gIFJvdXRlQ29udGV4dCxcbiAgdXNlSHJlZixcbiAgdXNlSW5Sb3V0ZXJDb250ZXh0LFxuICB1c2VMb2NhdGlvbixcbiAgdXNlTmF2aWdhdGlvblR5cGUsXG4gIHVzZU1hdGNoLFxuICB1c2VOYXZpZ2F0ZSxcbiAgdXNlT3V0bGV0Q29udGV4dCxcbiAgdXNlT3V0bGV0LFxuICB1c2VQYXJhbXMsXG4gIHVzZVJlc29sdmVkUGF0aCxcbiAgdXNlUm91dGVzLFxuICB1c2VOYXZpZ2F0aW9uLFxuICB1c2VSZXZhbGlkYXRvcixcbiAgdXNlTWF0Y2hlcyxcbiAgdXNlTG9hZGVyRGF0YSxcbiAgdXNlUm91dGVMb2FkZXJEYXRhLFxuICB1c2VBY3Rpb25EYXRhLFxuICB1c2VSb3V0ZUVycm9yLFxuICB1c2VBc3luY1ZhbHVlLFxuICB1c2VBc3luY0Vycm9yLFxuICB1c2VCbG9ja2VyLFxuICBtYXBSb3V0ZVByb3BlcnRpZXMsXG4gIGNyZWF0ZU1lbW9yeVJvdXRlcixcbiAgUm91dGVyUHJvdmlkZXIsXG4gIE1lbW9yeVJvdXRlcixcbiAgTmF2aWdhdGUsXG4gIE91dGxldCxcbiAgUm91dGUsXG4gIFJvdXRlcixcbiAgUm91dGVzLFxuICBBd2FpdCxcbiAgY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuLFxuICBjcmVhdGVSb3V0ZXNGcm9tRWxlbWVudHMsXG4gIHJlbmRlck1hdGNoZXMsXG4gIGNyZWF0ZVNlYXJjaFBhcmFtcyxcbiAgU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbCxcbiAgZ2V0U2luZ2xlRmV0Y2hEYXRhU3RyYXRlZ3ksXG4gIGRlY29kZVZpYVR1cmJvU3RyZWFtLFxuICBSZW1peEVycm9yQm91bmRhcnksXG4gIGNyZWF0ZUNsaWVudFJvdXRlc1dpdGhITVJSZXZhbGlkYXRpb25PcHRPdXQsXG4gIGNyZWF0ZUNsaWVudFJvdXRlcyxcbiAgc2hvdWxkSHlkcmF0ZVJvdXRlTG9hZGVyLFxuICBnZXRQYXRjaFJvdXRlc09uTmF2aWdhdGlvbkZ1bmN0aW9uLFxuICB1c2VGb2dPRldhckRpc2NvdmVyeSxcbiAgRnJhbWV3b3JrQ29udGV4dCxcbiAgTGlua3MsXG4gIFByZWZldGNoUGFnZUxpbmtzLFxuICBNZXRhLFxuICBTY3JpcHRzLFxuICBjcmVhdGVCcm93c2VyUm91dGVyLFxuICBjcmVhdGVIYXNoUm91dGVyLFxuICBCcm93c2VyUm91dGVyLFxuICBIYXNoUm91dGVyLFxuICBIaXN0b3J5Um91dGVyLFxuICBMaW5rLFxuICBOYXZMaW5rLFxuICBGb3JtLFxuICBTY3JvbGxSZXN0b3JhdGlvbixcbiAgdXNlTGlua0NsaWNrSGFuZGxlcixcbiAgdXNlU2VhcmNoUGFyYW1zLFxuICB1c2VTdWJtaXQsXG4gIHVzZUZvcm1BY3Rpb24sXG4gIHVzZUZldGNoZXIsXG4gIHVzZUZldGNoZXJzLFxuICB1c2VTY3JvbGxSZXN0b3JhdGlvbixcbiAgdXNlQmVmb3JlVW5sb2FkLFxuICB1c2VQcm9tcHQsXG4gIHVzZVZpZXdUcmFuc2l0aW9uU3RhdGUsXG4gIFN0YXRpY1JvdXRlcixcbiAgU3RhdGljUm91dGVyUHJvdmlkZXIsXG4gIGNyZWF0ZVN0YXRpY0hhbmRsZXIyIGFzIGNyZWF0ZVN0YXRpY0hhbmRsZXIsXG4gIGNyZWF0ZVN0YXRpY1JvdXRlcixcbiAgU2VydmVyUm91dGVyLFxuICBjcmVhdGVSb3V0ZXNTdHViLFxuICBjcmVhdGVDb29raWUsXG4gIGlzQ29va2llLFxuICBTZXJ2ZXJNb2RlLFxuICBzZXREZXZTZXJ2ZXJIb29rcyxcbiAgY3JlYXRlUmVxdWVzdEhhbmRsZXIsXG4gIGNyZWF0ZVNlc3Npb24sXG4gIGlzU2Vzc2lvbixcbiAgY3JlYXRlU2Vzc2lvblN0b3JhZ2UsXG4gIGNyZWF0ZUNvb2tpZVNlc3Npb25TdG9yYWdlLFxuICBjcmVhdGVNZW1vcnlTZXNzaW9uU3RvcmFnZSxcbiAgZGVzZXJpYWxpemVFcnJvcnMyIGFzIGRlc2VyaWFsaXplRXJyb3JzXG59O1xuIiwiaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IFNoaXBwaW5nU2VydmljZSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2hpcHBpbmdcIlxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7U2hvcH0gZnJvbSBcIi4uLy4uL21vZGVsL3Nob3BcIlxuaW1wb3J0IHtjb250YWluZXJ9IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSBcIi4uLy4uL3N0YXRlL29yZGVyXCJcbmltcG9ydCBPcmRlciBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBJbmZvRmllbGRDb21wb25lbnQgPSAoe3Nob3AsIG9yZGVyfSkgPT4ge1xuXG4gICAgY29uc3QgW2Jhc2tldEZpZWxkMSwgc2V0QmFza2V0RmllbGQxXSA9IHVzZVN0YXRlPHN0cmluZz4oXCJcIik7XG4gICAgY29uc3QgW2Jhc2tldEZpZWxkMiwgc2V0QmFza2V0RmllbGQyXSA9IHVzZVN0YXRlPHN0cmluZz4oXCJcIik7XG5cbiAgICBjb25zdCBvcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRCYXNrZXRGaWVsZDEob3JkZXIuYmFza2V0RmllbGQxKVxuICAgICAgICBzZXRCYXNrZXRGaWVsZDIob3JkZXIuYmFza2V0RmllbGQxKVxuICAgIH0sIFtvcmRlci5iYXNrZXRGaWVsZDEsIG9yZGVyLmJhc2tldEZpZWxkMl0pXG5cbiAgICBjb25zdCBjaGFuZ2VCYXNrZXRGaWVsZDEgPSAodmFsdWUpID0+IHtcbiAgICAgICAgbGV0IG9yZGVyT2JqID0gb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS5nZXRWYWx1ZSgpXG4gICAgICAgIG9yZGVyT2JqLmJhc2tldEZpZWxkMSA9IHZhbHVlXG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxuICAgICAgICBzZXRCYXNrZXRGaWVsZDEodmFsdWUpXG4gICAgfVxuXG4gICAgY29uc3QgY2hhbmdlQmFza2V0RmllbGQyID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGxldCBvcmRlck9iaiA9IG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkuZ2V0VmFsdWUoKVxuICAgICAgICBvcmRlck9iai5iYXNrZXRGaWVsZDIgPSB2YWx1ZVxuICAgICAgICBvcmRlclN0YXRlLnNldEN1cnJlbnRPcmRlcihvcmRlck9iailcbiAgICAgICAgc2V0QmFza2V0RmllbGQyKHZhbHVlKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJmbGV4XCJ9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImZsZXgtMVwifT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2ZsZXggZ2FwLTEnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImJhc2tldEZpZWxkMVwiIHZhbHVlPXtiYXNrZXRGaWVsZDF9IG9uQ2hhbmdlPXsgZSA9PiBjaGFuZ2VCYXNrZXRGaWVsZDEoZS50YXJnZXQudmFsdWUpfSBjbGFzc05hbWU9e1wiYmctZ3JheS01MCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHRleHQtZ3JheS05MDAgdGV4dC1zbSByb3VuZGVkLWxnIGZvY3VzOnJpbmctYmx1ZS01MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNTAwIGJsb2NrIHctZnVsbCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwifSBwbGFjZWhvbGRlcj17XCJJbmZvIDFcIn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57c2hvcC5iYXNrZXRGaWVsZDF9PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wiZmxleC0xXCJ9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleCBnYXAtMSc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiYmFza2V0RmllbGQyXCIgdmFsdWU9e2Jhc2tldEZpZWxkMn0gb25DaGFuZ2U9e2UgPT4gY2hhbmdlQmFza2V0RmllbGQyKGUudGFyZ2V0LnZhbHVlKX0gIGNsYXNzTmFtZT17XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCJ9IHBsYWNlaG9sZGVyPXtcIkluZm8gMlwifSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPntzaG9wLmJhc2tldEZpZWxkMn08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuKTtcbn1cblxuSW5mb0ZpZWxkQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5mb0ZpZWxkQ29tcG9uZW50O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiO1xyXG5cclxuY29uc3QgT3JkZXJBbGlhc0NvbXBvbmVudCA9ICh7b3JkZXJ9KSA9PiB7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJtLTEgcC0yXCJ9PlxyXG4gICAgICAgICAgICA8aDQ+TlI6IHtvcmRlci5hbGlhc308L2g0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTsgIFxyXG59XHJcblxyXG5PcmRlckFsaWFzQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcclxuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBPcmRlckFsaWFzQ29tcG9uZW50O1xyXG4iLCJpbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcbmltcG9ydCBDb250YWN0Q29tcG9uZW50IGZyb20gJy4uL2NvbnRhY3QvQ29udGFjdENvbXBvbmVudCdcbmltcG9ydCBUb3BCYXJDb21wb25lbnQgZnJvbSAnLi4vdG9wYmFyL1RvcEJhckNvbXBvbmVudCdcbmltcG9ydCBQb3NpdGlvbnNDb21wb25lbnQgZnJvbSAnLi4vcG9zaXRpb25zL1Bvc2l0aW9uc0NvbXBvbmVudCdcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgT3JkZXIgZnJvbSBcIi4uLy4uL21vZGVsL29yZGVyXCJcbmltcG9ydCBQYXltZW50Q29tcG9uZW50IGZyb20gXCIuLi9wYXltZW50L1BheW1lbnRDb21wb25lbnRcIlxuaW1wb3J0IFNoaXBwaW5nQ29tcG9uZW50IGZyb20gXCIuLi9zaGlwcGluZy9TaGlwcGluZ0NvbXBvbmVudFwiXG5pbXBvcnQgQnV0dG9uQ29tcG9uZW50IGZyb20gXCIuLi9idXR0b24vQnV0dG9uQ29tcG9uZW50XCJcbmltcG9ydCB7dXNlUGFyYW1zfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tIFwiLi4vLi4vc3RhdGUvb3JkZXJcIlxuaW1wb3J0IE9yZGVyU2VydmljZSBmcm9tIFwiLi4vLi4vc2VydmljZXMvb3JkZXJcIlxuaW1wb3J0IEluZm9GaWVsZENvbXBvbmVudCBmcm9tIFwiLi4vaW5mby9JbmZvRmllbGRDb21wb25lbnRcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IE9yZGVyQWxpYXNDb21wb25lbnQgZnJvbSAnLi4vb3JkZXIvT3JkZXJBbGlhc0NvbXBvbmVudCdcblxuY29uc3QgQmFzZUNvbXBvbmVudCA9IChwcm9wcykgPT4ge1xuXG4gICAgY29uc3QgW3Nob3AsIHNldFNob3BdID0gdXNlU3RhdGU8U2hvcD4obmV3IFNob3AoKSlcbiAgICBjb25zdCBbb3JkZXIsIHNldE9yZGVyXSA9IHVzZVN0YXRlPE9yZGVyPihuZXcgT3JkZXIoKSlcblxuICAgIGNvbnN0IG9yZGVyX3N0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcbiAgICBjb25zdCBvcmRlclNlcnZpY2UgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclNlcnZpY2UpXG4gICAgY29uc3QgbG9hZE9yZGVyID0gYXN5bmMgKHV1aWQ6IFN0cmluZykgPT4ge1xuICAgICAgICBvcmRlclNlcnZpY2UuZ2V0T3JkZXIodXVpZCkudGhlbigob3JkZXJPYmopID0+IHtcbiAgICAgICAgICAgIG9yZGVyX3N0YXRlLnNldEN1cnJlbnRPcmRlcihvcmRlck9iailcbiAgICAgICAgICAgIHNldFNob3Aob3JkZXJPYmouc2hvcClcbiAgICAgICAgICAgIHNldE9yZGVyKG9yZGVyT2JqKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGxldCBwYXJhbXMgPSB1c2VQYXJhbXMoKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYocGFyYW1zLnV1aWQpIHtcbiAgICAgICAgICAgIGxvYWRPcmRlcihwYXJhbXMudXVpZClcbiAgICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFJlYWN0LlN0cmljdE1vZGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWwtMSBtdC0xIG1yLTEnPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMSBtdC0xIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxPcmRlckFsaWFzQ29tcG9uZW50IG9yZGVyPXtvcmRlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uQ29tcG9uZW50IGxvYWRPcmRlcj17bG9hZE9yZGVyfS8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPFRvcEJhckNvbXBvbmVudCBzaG9wPXtzaG9wfSBvcmRlcj17b3JkZXJ9IGNoYW5nZT17c2V0U2hvcH0gLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgbWItMVwiPnsgc2hvcC5pZCAhPSAwICYmIDxDb250YWN0Q29tcG9uZW50IHNob3A9e3Nob3B9IG9yZGVyPXtvcmRlcn0gLz4gfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+eyBzaG9wLmlkICE9IDAgJiYgPFBvc2l0aW9uc0NvbXBvbmVudCBzaG9wPXtzaG9wfSBvcmRlcj17b3JkZXJ9IC8+IH08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgbWItMSBmbGV4IGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+eyBzaG9wLmlkICE9IDAgJiYgPFBheW1lbnRDb21wb25lbnQgc2hvcD17c2hvcH0gb3JkZXI9e29yZGVyfSAvPiB9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+eyBzaG9wLmlkICE9IDAgJiYgPFNoaXBwaW5nQ29tcG9uZW50IHNob3A9e3Nob3B9IG9yZGVyPXtvcmRlcn0gLz4gfTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHsgc2hvcC5pZCAhPSAwICYmIDxJbmZvRmllbGRDb21wb25lbnQgc2hvcD17c2hvcH0gb3JkZXI9e29yZGVyfSAvPiB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9SZWFjdC5TdHJpY3RNb2RlPlxuICAgIClcbiAgICBcbn0gXG5cbmV4cG9ydCBkZWZhdWx0IEJhc2VDb21wb25lbnRcbiIsImltcG9ydCAqIGFzIEV0YSBmcm9tICdldGEnXG5pbXBvcnQgVG9rZW4gZnJvbSAnLi4vc2VydmljZXMvdG9rZW4nXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tL2NsaWVudCdcbmltcG9ydCBOaWNlTW9kYWwgZnJvbSBcIkBlYmF5L25pY2UtbW9kYWwtcmVhY3RcIlxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi4vbW9kdWxlcy9iYXNlL0Jhc2VDb21wb25lbnQnXG5pbXBvcnQge1JvdXRlLCBIYXNoUm91dGVyIGFzIFJvdXRlciwgUm91dGVzLCB1c2VTZWFyY2hQYXJhbXN9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCJcblxuZXhwb3J0IGNsYXNzIEFwcCB7XG4gICAgcHJpdmF0ZSBzZWFyY2hQYXJhbXM6IGFueVxuICAgIHByaXZhdGUgc2V0U2VhcmNoUGFyYW1zOiBhbnlcblxuXG4gICAgY29uc3RydWN0b3Ioand0OiBTdHJpbmcpIHtcbiAgICAgICAgbGV0IHRva2VuID0gY29udGFpbmVyLnJlc29sdmUoVG9rZW4pXG4gICAgICAgIGNvbnNvbGUubG9nKGp3dClcbiAgICAgICAgdG9rZW4uY3VycmVudFRva2VuID0gand0XG4gICAgICAgIHRva2VuLmluaXQoKVxuICAgIH1cblxuICAgIGluaXQoKTogdm9pZCB7XG5cbiAgICAgICAgdGhpcy5idWlsZFVpKClcbiAgICB9XG5cbiAgICBidWlsZFVpKCkge1xuICAgICAgICBjb25zdCByb290ID0gUmVhY3RET00uY3JlYXRlUm9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpKVxuXG4gICAgICAgIHJvb3QucmVuZGVyKFxuICAgICAgICAgICAgPE5pY2VNb2RhbC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8Um91dGVyPlxuICAgICAgICAgICAgICAgICAgICA8Um91dGVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvXCIgZWxlbWVudD17PEJhc2VDb21wb25lbnQgLz59IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi86dXVpZFwiIGVsZW1lbnQ9ezxCYXNlQ29tcG9uZW50IC8+fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L1JvdXRlcz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlcj5cbiAgICAgICAgICAgIDwvTmljZU1vZGFsLlByb3ZpZGVyPlxuICAgICAgICApXG5cbiAgICB9XG5cbiAgICBydW4oKTogdm9pZCB7XG4gICAgICAgIFxuICAgIFxuICAgIH1cbn1cbiIsImltcG9ydCBcIi4vYXNzZXRzL2luZGV4LmNzc1wiXG5pbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5pbXBvcnQgKiBhcyAkIGZyb20gXCJqcXVlcnlcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuL2FwcC9hcHBcIjtcblxuZGVjbGFyZSB2YXIgand0X3Rva2VuOiBTdHJpbmc7XG5sZXQgYXBwID0gbmV3IEFwcChqd3RfdG9rZW4pO1xuYXBwLmluaXQoKTtcbmFwcC5ydW4oKTtcbiJdLCJuYW1lcyI6WyJSZWZsZWN0IiwiZ2xvYmFsIiwiXyIsImhhc093biIsIl9NYXAiLCJfU2V0IiwiX1dlYWtNYXAiLCJpIiwiTyIsIlAiLCJvd25LZXlzIiwic2V0IiwiX2EiLCJ4IiwidG9TdHJpbmdfMSIsInkiLCJWIiwiZiIsInByb3RvdHlwZSIsIm5leHQiLCJtZXRhZGF0YVJlZ2lzdHJ5IiwibWV0YWRhdGEiLCJPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhIiwiT3JkaW5hcnlIYXNPd25NZXRhZGF0YSIsIk9yZGluYXJ5R2V0T3duTWV0YWRhdGEiLCJPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyIsImsiLCJlIiwiZGVmaW5lTWV0YWRhdGEiLCJoYXNPd25NZXRhZGF0YSIsImdldE93bk1ldGFkYXRhIiwiZ2V0T3duTWV0YWRhdGFLZXlzIiwiZGVsZXRlTWV0YWRhdGEiLCJNYXBJdGVyYXRvciIsImluZGV4IiwiTWFwIiwic2l6ZSIsImdldFZhbHVlIiwiU2V0IiwiV2Vha01hcCIsImNyZWF0ZSIsImRhdGEiLCJvZmZzZXQiLCJsIiwibiIsInAiLCJxIiwiciIsInQiLCJ1IiwidiIsInciLCJ6IiwiQSIsImEiLCJCIiwiQyIsIkQiLCJFIiwiYiIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiZCIsImMiLCJoIiwiZyIsIm0iLCJOIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJXIiwiWCIsInJlYWN0TW9kdWxlIiwicmVxdWlyZSQkMCIsImpzeFJ1bnRpbWVNb2R1bGUiLCJiaW5kIiwiZ2V0UHJvdG90eXBlT2YiLCJjYWNoZSIsInR5cGUiLCJpc0FycmF5IiwiaXNCdWZmZXIiLCJpc0Z1bmN0aW9uIiwiaXNTdHJpbmciLCJpc051bWJlciIsImlzT2JqZWN0IiwiaXNQbGFpbk9iamVjdCIsInRyaW0iLCJtZXJnZSIsImluaGVyaXRzIiwiZGVzY3JpcHRvcnMiLCJmaWx0ZXIiLCJwb3NpdGlvbiIsIm1hdGNoZXMiLCJoYXNPd25Qcm9wZXJ0eSIsInJlZHVjZXIiLCJkZWxpbWl0ZXIiLCJub29wIiwibGVuZ3RoIiwidG9rZW4iLCJjb25maWciLCJ1dGlscyIsIm9wdGlvbnMiLCJlbmNvZGUiLCJtYXRjaCIsInRvU3RyaW5nIiwiVVJMU2VhcmNoUGFyYW1zIiwiRm9ybURhdGEiLCJCbG9iIiwicGxhdGZvcm0iLCJpc0Zvcm1EYXRhIiwiaXNGaWxlTGlzdCIsInRyYW5zaXRpb25hbCIsImxpbmUiLCJjaGFyIiwic2VsZiIsImZvcm1hdCIsInRyYW5zZm9ybSIsInZhbGlkYXRlU3RhdHVzIiwibWluIiwib3JpZ2luIiwic2lnbmFsIiwiZG9uZSIsInJlcyIsImFkYXB0ZXJzIiwicyIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0b3IiLCJpbnN0YW5jZSIsImZyb20iLCJzY2hlZHVsZXJNb2R1bGUiLCJyZXF1aXJlJCQxIiwiYWUiLCJiZSIsImNlIiwiZGUiLCJlZSIsImZlIiwiZ2UiLCJoZSIsImllIiwiamUiLCJrZSIsImxlIiwibWUiLCJuZSIsIm9lIiwicGUiLCJxZSIsInJlIiwic2UiLCJ0ZSIsInVlIiwidmUiLCJ3ZSIsInhlIiwieWUiLCJ6ZSIsIkFlIiwiQmUiLCJDZSIsIkRlIiwiRWUiLCJGZSIsIkdlIiwiSGUiLCJJZSIsIkplIiwiS2UiLCJMZSIsIk1lIiwiTmUiLCJPZSIsIlBlIiwiUWUiLCJSZSIsIlNlIiwiVGUiLCJVZSIsIlZlIiwiV2UiLCJYZSIsIlplIiwiJGUiLCJZIiwiWiIsIk9rIiwicmVhY3REb21Nb2R1bGUiLCJfX2Fzc2lnbiIsIlJlYWN0IiwiX2UiLCJoaWRlIiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZUNhbGxiYWNrIiwiYXJncyIsInVzZU1lbW8iLCJzaG93IiwidXNlUmVkdWNlciIsInByb3BUeXBlc01vZHVsZSIsIl90eXBlb2YiLCJvIiwidG9QcmltaXRpdmUiLCJ0b1Byb3BlcnR5S2V5IiwiX2RlZmluZVByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJhcnJheUxpa2VUb0FycmF5IiwiYXJyYXlXaXRoSG9sZXMiLCJpdGVyYWJsZVRvQXJyYXlMaW1pdCIsInVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5Iiwibm9uSXRlcmFibGVSZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiX2V4Y2x1ZGVkIiwiX3JlZiIsInVzZVN0YXRlIiwib25DaGFuZ2UiLCJ2YWx1ZSIsIl9vYmplY3RTcHJlYWQiLCJfZXh0ZW5kcyIsInNldFByb3RvdHlwZU9mIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsImFzc2VydFRoaXNJbml0aWFsaXplZCIsImlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsInBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJhcnJheVdpdGhvdXRIb2xlcyIsIml0ZXJhYmxlVG9BcnJheSIsIm5vbkl0ZXJhYmxlU3ByZWFkIiwiaXNEZXZlbG9wbWVudCIsIlN0eWxlU2hlZXQiLCJNUyIsIk1PWiIsIldFQktJVCIsIkNPTU1FTlQiLCJSVUxFU0VUIiwiREVDTEFSQVRJT04iLCJJTVBPUlQiLCJLRVlGUkFNRVMiLCJMQVlFUiIsImFicyIsImFzc2lnbiIsImhhc2giLCJjaGFyYXQiLCJwYXR0ZXJuIiwicmVwbGFjZSIsImluZGV4b2YiLCJzdWJzdHIiLCJzdHJsZW4iLCJzaXplb2YiLCJhcHBlbmQiLCJjb21iaW5lIiwiY29sdW1uIiwiY2hhcmFjdGVyIiwiY2hhcmFjdGVycyIsIm5vZGUiLCJjb3B5IiwicHJldiIsInBlZWsiLCJjYXJldCIsInNsaWNlIiwiYWxsb2MiLCJkZWFsbG9jIiwiZGVsaW1pdCIsIndoaXRlc3BhY2UiLCJlc2NhcGluZyIsImNvdW50IiwiY29tbWVudGVyIiwiaWRlbnRpZmllciIsImNvbXBpbGUiLCJwYXJzZSIsInJ1bGVzIiwiY29tbWVudCIsImRlY2xhcmF0aW9uIiwicnVsZXNldCIsImoiLCJzZXJpYWxpemUiLCJzdHJpbmdpZnkiLCJtaWRkbGV3YXJlIiwicnVsZXNoZWV0Iiwid2Vha01lbW9pemUiLCJpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmciLCJ0b1J1bGVzIiwiZ2V0UnVsZXMiLCJjb21wYXQiLCJyZW1vdmVMYWJlbCIsInByZWZpeCIsInByZWZpeGVyIiwiY3JlYXRlQ2FjaGUiLCJjb250YWluZXIiLCJzdHlsaXMiLCJyZWFjdElzX3Byb2R1Y3Rpb25fbWluIiwicmVhY3RJc01vZHVsZSIsInJlYWN0SXMiLCJob2lzdE5vblJlYWN0U3RhdGljcyIsImlzQnJvd3NlciIsImNsYXNzTmFtZXMiLCJyZWdpc3RlclN0eWxlcyIsImluc2VydFN0eWxlcyIsInVuaXRsZXNzS2V5cyIsImlzQ3VzdG9tUHJvcGVydHkiLCJpc1Byb2Nlc3NhYmxlVmFsdWUiLCJwcm9jZXNzU3R5bGVWYWx1ZSIsInVuaXRsZXNzIiwia2V5ZnJhbWVzIiwiaGFzaFN0cmluZyIsInN5bmNGYWxsYmFjayIsInVzZUluc2VydGlvbkVmZmVjdCIsIlJlYWN0LnVzZUxheW91dEVmZmVjdCIsIlJlYWN0LmNyZWF0ZUNvbnRleHQiLCJ3aXRoRW1vdGlvbkNhY2hlIiwiZm9yd2FyZFJlZiIsInJlZiIsInVzZVRoZW1lIiwiUmVhY3QudXNlQ29udGV4dCIsImdldFRoZW1lIiwidGhlbWUiLCJUaGVtZVByb3ZpZGVyIiwiUmVhY3QuY3JlYXRlRWxlbWVudCIsIlJlYWN0LmZvcndhcmRSZWYiLCJjcmVhdGVFbW90aW9uUHJvcHMiLCJJbnNlcnRpb24iLCJSZWFjdC5GcmFnbWVudCIsImpzeCIsIkVtb3Rpb24iLCJSZWFjdC51c2VSZWYiLCJjbGFzc25hbWVzIiwiY3NzIiwiY3giLCJub29wJDEiLCJpbml0aWFsU3RhdGUiLCJjb21wdXRlUG9zaXRpb24iLCJkZXRlY3RPdmVyZmxvdyIsImFycm93IiwibWF4IiwiYXV0b1BsYWNlbWVudCIsImFsaWdubWVudCIsImZsaXAiLCJwbGFjZW1lbnRzIiwic2lkZXMiLCJzaWRlIiwicGxhY2VtZW50Iiwib3ZlcmZsb3ciLCJpbmxpbmUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ3aWR0aCIsImhlaWdodCIsInNoaWZ0IiwibGltaXRTaGlmdCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRDc3NEaW1lbnNpb25zIiwidW53cmFwRWxlbWVudCIsImdldFNjYWxlIiwiJCIsIm5vT2Zmc2V0cyIsImdldFZpc3VhbE9mZnNldHMiLCJzaG91bGRBZGRWaXN1YWxPZmZzZXRzIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImdldEhUTUxPZmZzZXQiLCJjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0Vmlld3BvcnRSZWN0IiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMiLCJnZXRDbGlwcGluZ1JlY3QiLCJnZXREaW1lbnNpb25zIiwiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCJpc1N0YXRpY1Bvc2l0aW9uZWQiLCJnZXRUcnVlT2Zmc2V0UGFyZW50IiwicG9seWZpbGwiLCJnZXRPZmZzZXRQYXJlbnQiLCJnZXRFbGVtZW50UmVjdHMiLCJpc1JUTCIsIm9ic2VydmVNb3ZlIiwidGltZW91dElkIiwiYXV0b1VwZGF0ZSIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsImZsaXAkMSIsImFycm93JDEiLCJjb21wdXRlUG9zaXRpb24kMSIsInVzZUxheW91dEVmZmVjdCIsImNsZWFuVmFsdWUiLCJjbGVhbkNvbW1vblByb3BzIiwiZ2V0U3R5bGVQcm9wcyIsInJlbW92ZVByb3BzIiwicHJvcGVydGllcyIsIl9yZWYyIiwiY29udHJvbEhlaWdodCIsImNvZXJjZVBsYWNlbWVudCIsIm1lbnVDU1MiLCJfb2JqZWN0U3ByZWFkMiIsImJvcmRlclJhZGl1cyIsInNwYWNpbmciLCJjb2xvcnMiLCJNZW51UGxhY2VyIiwidXNlUmVmIiwiTWVudSIsIm1lbnVMaXN0Q1NTIiwiYmFzZVVuaXQiLCJNZW51TGlzdCIsIm5vdGljZUNTUyIsIk5vT3B0aW9uc01lc3NhZ2UiLCJMb2FkaW5nTWVzc2FnZSIsIm1lbnVQb3J0YWxDU1MiLCJNZW51UG9ydGFsIiwiY3JlYXRlUG9ydGFsIiwiY29udGFpbmVyQ1NTIiwiaXNEaXNhYmxlZCIsIlNlbGVjdENvbnRhaW5lciIsInZhbHVlQ29udGFpbmVyQ1NTIiwiVmFsdWVDb250YWluZXIiLCJpbmRpY2F0b3JzQ29udGFpbmVyQ1NTIiwiSW5kaWNhdG9yc0NvbnRhaW5lciIsIlN2ZyIsIkNyb3NzSWNvbiIsIkRvd25DaGV2cm9uIiwiYmFzZUNTUyIsIkRyb3Bkb3duSW5kaWNhdG9yIiwiQ2xlYXJJbmRpY2F0b3IiLCJpbmRpY2F0b3JTZXBhcmF0b3JDU1MiLCJJbmRpY2F0b3JTZXBhcmF0b3IiLCJsb2FkaW5nSW5kaWNhdG9yQ1NTIiwiTG9hZGluZ0RvdCIsImNzcyQyIiwiTG9hZGluZ0luZGljYXRvciIsIkNvbnRyb2wiLCJfZXhjbHVkZWQkMSIsImdyb3VwQ1NTIiwiR3JvdXAiLCJncm91cEhlYWRpbmdDU1MiLCJHcm91cEhlYWRpbmciLCJpbnB1dENTUyIsImlucHV0U3R5bGUiLCJpc0hpZGRlbiIsIklucHV0IiwibXVsdGlWYWx1ZUNTUyIsIm11bHRpVmFsdWVMYWJlbENTUyIsIm11bHRpVmFsdWVSZW1vdmVDU1MiLCJNdWx0aVZhbHVlR2VuZXJpYyIsIk11bHRpVmFsdWUiLCJjb21wb25lbnRzIiwiTGFiZWwiLCJvcHRpb25DU1MiLCJPcHRpb24iLCJwbGFjZWhvbGRlckNTUyIsIlBsYWNlaG9sZGVyIiwiU2luZ2xlVmFsdWUiLCJkZWZhdWx0Q29tcG9uZW50cyIsImlzRXF1YWwiLCJBMTF5VGV4dCIsImlzQXBwbGVEZXZpY2UiLCJnZXRBcnJheUluZGV4IiwiTGl2ZVJlZ2lvbiIsImdldE9wdGlvbkxhYmVsIiwiaXNPcHRpb25EaXNhYmxlZCIsInNjcmVlblJlYWRlclN0YXR1cyIsImFzT3B0aW9uIiwiRnJhZ21lbnQiLCJzdHJpcERpYWNyaXRpY3MiLCJ0cmltU3RyaW5nIiwiZGVmYXVsdFN0cmluZ2lmeSIsImNyZWF0ZUZpbHRlciIsImNhbmNlbFNjcm9sbCIsImJsdXJTZWxlY3RJbnB1dCIsInRhcmdldFJlZiIsIlJlcXVpcmVkSW5wdXQiLCJvbkZvY3VzIiwiaXNNYWMiLCJmb3JtYXRHcm91cExhYmVsIiwiZ2V0T3B0aW9uVmFsdWUiLCJjYXRlZ29yaXplZE9wdGlvbiIsIm9wdGlvbklkIiwiZ2V0Rm9jdXNlZE9wdGlvbklkIiwic2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyIsIlNlbGVjdCIsImN1c3RvbSIsImlzQ2xlYXJhYmxlIiwicmVxdWlyZWQiLCJNdWx0aVZhbHVlQ29udGFpbmVyIiwiTXVsdGlWYWx1ZUxhYmVsIiwiTXVsdGlWYWx1ZVJlbW92ZSIsImxvYWRpbmdNZXNzYWdlIiwibm9PcHRpb25zTWVzc2FnZSIsInJlbmRlciIsIkNvbXBvbmVudCIsInVzZUxhdGVzdCIsInVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QiLCJjb21wb3NlUmVmc18xIiwiY29tcG9zZVJlZnMiLCJzbGVlcCIsInVzZVN0YXRlMiIsInVzZUNhbGxiYWNrMiIsIk1lbnVMaXN0MiIsInVzZVJlZjIiLCJ1c2VDYWxsYmFjazMiLCJ1c2VFZmZlY3QyIiwidXNlTWVtbzIiLCJkZWZhdWx0Q29tcG9uZW50czIiLCJqc3gyIiwiX2luaXQiLCJ1dWlkdjQiLCJfX3NwcmVhZEFycmF5IiwiU3Vic2NyaXB0aW9uIiwiU3Vic2NyaWJlciIsIkNvbnN1bWVyT2JzZXJ2ZXIiLCJTYWZlU3Vic2NyaWJlciIsIk9ic2VydmFibGUiLCJvYnNlcnZhYmxlIiwiU3ltYm9sX29ic2VydmFibGUiLCJPcGVyYXRvclN1YnNjcmliZXIiLCJlcnIiLCJTdWJqZWN0IiwiQW5vbnltb3VzU3ViamVjdCIsIkJlaGF2aW9yU3ViamVjdCIsIkFjdGlvbiIsInNjaGVkdWxlciIsIkFzeW5jQWN0aW9uIiwiU2NoZWR1bGVyIiwiQXN5bmNTY2hlZHVsZXIiLCJhdHRyIiwidGl0bGUiLCJjbGFzc0dyb3VwIiwiY2xvbmVEZWVwIiwiY3JlYXRlQ29udGV4dCIsImpzeHMiLCJDaGlsZHJlbiIsImNsb25lRWxlbWVudCIsIkJhc2VDb21wb25lbnQiLCJjcmVhdGVFbGVtZW50IiwiaXNWYWxpZEVsZW1lbnQiLCJCdXR0b24iLCJpdGVtcyIsIkJ1dHRvbkNvbXBvbmVudCIsImJ1dHRvblRoZW1lIiwiZGVib3VuY2UiLCJkZWJvdW5jZU1vZHVsZSIsIl9fZGVmUHJvcCIsIl9fZGVmTm9ybWFsUHJvcCIsIl9fcHVibGljRmllbGQiLCJQdXJlQ29tcG9uZW50IiwiYWN0aXZlRWxlbWVudCIsImNvbnRhaW5zIiwiaXNJbmVydCIsImlzQ29udGVudEVkaXRhYmxlIiwiZ2V0Q2FuZGlkYXRlcyIsImdldENhbmRpZGF0ZXNJdGVyYXRpdmVseSIsImhhc1RhYkluZGV4IiwiZ2V0VGFiSW5kZXgiLCJnZXRTb3J0T3JkZXJUYWJJbmRleCIsInNvcnRPcmRlcmVkVGFiYmFibGVzIiwiaXNJbnB1dCIsImlzSGlkZGVuSW5wdXQiLCJpc0RldGFpbHNXaXRoU3VtbWFyeSIsImdldENoZWNrZWRSYWRpbyIsImlzVGFiYmFibGVSYWRpbyIsInF1ZXJ5UmFkaW9zIiwiaXNSYWRpbyIsImlzTm9uVGFiYmFibGVSYWRpbyIsImlzTm9kZUF0dGFjaGVkIiwiaXNaZXJvQXJlYSIsImlzRGlzYWJsZWRGcm9tRmllbGRzZXQiLCJpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlIiwiaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlIiwiaXNWYWxpZFNoYWRvd1Jvb3RUYWJiYWJsZSIsInNvcnRCeU9yZGVyIiwidGFiYmFibGUiLCJpc1RhYmJhYmxlIiwidXNlTGF0ZXN0UmVmIiwidXNlRmxvYXRpbmciLCJSZWFjdC51c2VTdGF0ZSIsIlJlYWN0LnVzZUNhbGxiYWNrIiwiUmVhY3RET00uZmx1c2hTeW5jIiwiUmVhY3QudXNlTWVtbyIsImFycm93JDIiLCJyZWdpc3RlciIsInVucmVnaXN0ZXIiLCJtYXAiLCJpbmRleCQxIiwiUmVhY3QudXNlRWZmZWN0Iiwib25PcGVuQ2hhbmdlIiwib3BlbiIsIkZvY3VzR3VhcmQiLCJSZWFjdERPTS5jcmVhdGVQb3J0YWwiLCJWaXN1YWxseUhpZGRlbkRpc21pc3MiLCJkb21SZWZlcmVuY2UiLCJGbG9hdGluZ092ZXJsYXkiLCJpc0lPUyIsImxpc3RSZWYiLCJpbmRleFJlZiIsIml0ZW0iLCJwcm9wcyIsImlzSW5zaWRlIiwiX3JlZjMiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlSWQiLCJzcmMiLCJMaXN0SXRlbSIsIkJhc2VCdXR0b24iLCJTeW1ib2wiLCJyZXF1aXJlJCQyIiwicmVxdWlyZSQkMyIsInJlcXVpcmUkJDQiLCJyZXF1aXJlJCQ1Iiwib3RoVmFsdWUiLCJVaW50OEFycmF5IiwiQnVmZmVyIiwiaXNMZW5ndGgiLCJpc1R5cGVkQXJyYXkiLCJQcm9taXNlIiwicmVxdWlyZSQkNiIsInJlcXVpcmUkJDciLCJpc0VxdWFsV2l0aCIsIm1lbW9pemUiLCJqc29ucG9pbnRlciIsInJlcXVpcmUkJDgiLCJyZXF1aXJlJCQ5IiwicmVxdWlyZSQkMTAiLCJyZXF1aXJlJCQxMSIsInJlcXVpcmUkJDEyIiwicmVxdWlyZSQkMTMiLCJyZXF1aXJlJCQxNCIsInJlcXVpcmUkJDE1IiwicmVxdWlyZSQkMTYiLCJyZXF1aXJlJCQxNyIsInJlcXVpcmUkJDE4IiwicmVxdWlyZSQkMTkiLCJyZXF1aXJlJCQyMCIsInJlcXVpcmUkJDIxIiwia2V5IiwiaWRlbnRpdHkiLCJvbWl0IiwiaGFzIiwiY29sbGVjdGlvbiIsInJlZHVjZSIsInRpbWVzIiwiZ2V0Iiwib2JqZWN0IiwiZmxhdHRlbkRlZXAiLCJ1bmlxIiwiZGVmYXVsdHMiLCJpc0Jvb2xlYW4iLCJjb21wYXJlIiwibGliIiwiaXNJbnRlZ2VyIiwiZm9yRWFjaCIsIm1lcmdlU2NoZW1hcyIsImFsbCIsInVuaXF1ZUl0ZW1zIiwiYWxsT2YiLCJzY2hlbWFzIiwiY29tbW9uIiwibWVyZ2VkIiwia2V5cyIsIm1lcmdlciIsInVuaW9uIiwiYWNjIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJvbmVPZiIsImFueU9mIiwiZGVwZW5kZW5jaWVzIiwiYWx0U2NoZW1hcyIsIkFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nIiwiaXNFbXB0eSIsIiRpZCIsImlzTmlsIiwic2V0V2l0aCIsInRlbXBsYXRlcyIsIl9qc3giLCJ0b1BhdGgiLCJUcmFuc2xhdGFibGVTdHJpbmciLCJ0aGlzIiwiZXhwb3J0cyIsInRvQXJyYXkiLCJIRVhESUckJCIsIlBDVF9FTkNPREVEJCIsIlVOUkVTRVJWRUQkJCIsInNsaWNlZFRvQXJyYXkiLCJ0b0NvbnN1bWFibGVBcnJheSIsImZsb29yIiwidWNzMmVuY29kZSIsImJhc2ljVG9EaWdpdCIsImRpZ2l0VG9CYXNpYyIsImFkYXB0IiwiZGVjb2RlIiwidG9Vbmljb2RlIiwidG9BU0NJSSIsImMyIiwiZGVjb2RlVW5yZXNlcnZlZCIsImZpZWxkcyIsImJhc2UiLCJ1Y3MybGVuZ3RoIiwiam9pblBhdGhzIiwidXRpbCIsImpzb25TY2hlbWFUcmF2ZXJzZU1vZHVsZSIsInJlc29sdmVTY2hlbWEiLCJpdCIsIiRzY2hlbWEiLCIkcnVsZXNHcm91cCIsIiRydWxlIiwidmFsaWRhdGUiLCJfcm9vdCIsImxvY2FsUmVmcyIsImJhc2VJZCIsInJlZlZhbCIsInNjaGVtYSIsImtleXdvcmQiLCJjYWNoZU1vZHVsZSIsIkNhY2hlIiwiVVJMIiwiJHNjaCIsInJlcXVpcmUkJDIyIiwicmVxdWlyZSQkMjMiLCJkYXRhVHlwZSIsImRlZmluaXRpb24iLCJBanYiLCJhanYiLCJrZXllZEZvcm1EYXRhIiwiZm9ybURhdGEiLCJ3aWRnZXRzIiwiU2NoZW1hRmllbGQiLCJyZXRyaWV2ZWRPcHRpb25zIiwic2NoZW1hVXRpbHMiLCJfanN4cyIsIlN0cmluZ0ZpZWxkIiwiZS5jcmVhdGVFbGVtZW50IiwiZS5jbG9uZUVsZW1lbnQiLCJ1bnNldCIsImRlc2NyaXB0aW9uIiwibmFtZSIsIkZpZWxkVGVtcGxhdGUiLCJGaWVsZEhlbHBUZW1wbGF0ZSIsIkZpZWxkRXJyb3JUZW1wbGF0ZSIsImlkIiwiX0ZyYWdtZW50IiwiX3NjaGVtYSIsIk11bHRpU2NoZW1hRmllbGQiLCJDb3B5QnV0dG9uIiwiTW92ZURvd25CdXR0b24iLCJNb3ZlVXBCdXR0b24iLCJSZW1vdmVCdXR0b24iLCJBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZSIsIkFycmF5RmllbGRJdGVtVGVtcGxhdGUiLCJBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZSIsIkFkZEJ1dHRvbiIsIlJFUVVJUkVEX0ZJRUxEX1NZTUJPTCIsIldyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZSIsIkJ1dHRvblRlbXBsYXRlcyIsInJhbmdlIiwiU2VsZWN0V2lkZ2V0Iiwic3RhdGUiLCJBbHREYXRlV2lkZ2V0IiwiQmFzZUlucHV0VGVtcGxhdGUiLCJkaXNhYmxlZCIsImNyZWF0ZVJlZiIsIlN1Ym1pdEJ1dHRvbiIsIkZvcm0iLCJjb250YWN0IiwiUHJvcFR5cGVzLmluc3RhbmNlT2YiLCJQcm9wVHlwZXMuZnVuYyIsImQuUlVMRVNFVCIsImQucHJlZml4ZXIiLCJkLnN0cmluZ2lmeSIsImQuY29tcGlsZSIsImQuc2VyaWFsaXplIiwiZC5taWRkbGV3YXJlIiwiZC5ydWxlc2hlZXQiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfc2xpY2VkVG9BcnJheSIsInVzZVN0YXRlTWFuYWdlciIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX2NyZWF0ZUNsYXNzIiwiX3NldFByb3RvdHlwZU9mIiwiX2luaGVyaXRzIiwiX2dldFByb3RvdHlwZU9mIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2NyZWF0ZVN1cGVyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIl90b0NvbnN1bWFibGVBcnJheSIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwiLCJyZWFjdCIsInJlYWN0RG9tIiwiX2V4Y2x1ZGVkJDQiLCJhcHBseVByZWZpeFRvTmFtZSIsImlzRG9jdW1lbnRFbGVtZW50Iiwibm9ybWFsaXplZEhlaWdodCIsImdldFNjcm9sbFRvcCIsInNjcm9sbFRvIiwiZ2V0U2Nyb2xsUGFyZW50IiwiZWFzZU91dEN1YmljIiwiYW5pbWF0ZWRTY3JvbGxUbyIsInNjcm9sbEludG9WaWV3IiwiZ2V0Qm91bmRpbmdDbGllbnRPYmoiLCJpc1RvdWNoQ2FwYWJsZSIsImlzTW9iaWxlRGV2aWNlIiwicGFzc2l2ZU9wdGlvbkFjY2Vzc2VkIiwic3VwcG9ydHNQYXNzaXZlRXZlbnRzIiwibm90TnVsbGlzaCIsInZhbHVlVGVybmFyeSIsInNpbmdsZVZhbHVlQXNWYWx1ZSIsIm11bHRpVmFsdWVBc1ZhbHVlIiwiX2V4Y2x1ZGVkJDMiLCJfZXhjbHVkZWQyJDEiLCJnZXRNZW51UGxhY2VtZW50IiwiYWxpZ25Ub0NvbnRyb2wiLCJQb3J0YWxQbGFjZW1lbnRDb250ZXh0IiwiTWVudSQxIiwibm9PcHRpb25zTWVzc2FnZUNTUyIsImxvYWRpbmdNZXNzYWdlQ1NTIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2V4Y2x1ZGVkJDIiLCJfZXhjbHVkZWQyIiwiZHJvcGRvd25JbmRpY2F0b3JDU1MiLCJjbGVhckluZGljYXRvckNTUyIsImxvYWRpbmdEb3RBbmltYXRpb25zIiwiY3NzJDEiLCJDb250cm9sJDEiLCJHcm91cCQxIiwiY29udGFpbmVyU3R5bGUiLCJzcGFjaW5nU3R5bGUiLCJJbnB1dCQxIiwiTXVsdGlWYWx1ZSQxIiwiT3B0aW9uJDEiLCJQbGFjZWhvbGRlciQxIiwiU2luZ2xlVmFsdWUkMSIsIm1lbW9pemVPbmUiLCJBMTF5VGV4dCQxIiwiZGVmYXVsdEFyaWFMaXZlTWVzc2FnZXMiLCJndWlkYW5jZSIsIm9uRmlsdGVyIiwiTGl2ZVJlZ2lvbiQxIiwiZGlhY3JpdGljcyIsImFueURpYWNyaXRpYyIsImRpYWNyaXRpY1RvQmFzZSIsIm1lbW9pemVkU3RyaXBEaWFjcml0aWNzRm9ySW5wdXQiLCJEdW1teUlucHV0IiwidXNlU2Nyb2xsQ2FwdHVyZSIsIlNUWUxFX0tFWVMiLCJMT0NLX1NUWUxFUyIsInByZXZlbnRUb3VjaE1vdmUiLCJhbGxvd1RvdWNoTW92ZSIsInByZXZlbnRJbmVydGlhU2Nyb2xsIiwiaXNUb3VjaERldmljZSIsImNhblVzZURPTSIsImFjdGl2ZVNjcm9sbExvY2tzIiwibGlzdGVuZXJPcHRpb25zIiwidXNlU2Nyb2xsTG9jayIsIl9yZWYyJDEiLCJTY3JvbGxNYW5hZ2VyIiwiUmVxdWlyZWRJbnB1dCQxIiwidGVzdFBsYXRmb3JtIiwiaXNJUGhvbmUiLCJpc0lQYWQiLCJnZXRPcHRpb25MYWJlbCQxIiwiZ2V0T3B0aW9uVmFsdWUkMSIsImRlZmF1bHRTdHlsZXMiLCJtZW51R3V0dGVyIiwiZGVmYXVsdFRoZW1lIiwiZGVmYXVsdFByb3BzIiwidG9DYXRlZ29yaXplZE9wdGlvbiIsIl9pc09wdGlvbkRpc2FibGVkIiwiX2lzT3B0aW9uU2VsZWN0ZWQiLCJidWlsZENhdGVnb3JpemVkT3B0aW9ucyIsImlzRm9jdXNhYmxlIiwiYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyIsImJ1aWxkRm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMiLCJidWlsZEZvY3VzYWJsZU9wdGlvbnMiLCJfZmlsdGVyT3B0aW9uIiwiZ2V0TmV4dEZvY3VzZWRWYWx1ZSIsImdldE5leHRGb2N1c2VkT3B0aW9uIiwiaW5zdGFuY2VJZCIsIlN0YXRlTWFuYWdlZFNlbGVjdCIsIlN0YXRlTWFuYWdlZFNlbGVjdCQxIiwicmVhY3RTZWxlY3RfY2pzTW9kdWxlIiwic3R5bGVkIiwiQWRkcmVzc01vZGFsIiwiYWRkcmVzcyIsIlByb3BUeXBlcy5udW1iZXIiLCJQcm9wVHlwZXMuc3RyaW5nIiwib3JkZXIiLCJyZWFjdFNlbGVjdEFzeW5jX2Nqc01vZHVsZSIsIkFzeW5jU2VsZWN0IiwidXNlRGVib3VuY2UiLCJ1c2VEZWJvdW5jZWRDYWxsYmFjayIsIlByb3BUeXBlcy5hcnJheSIsImlzRGF0ZSIsIlJlYWN0Mi51c2VDb250ZXh0IiwiUmVhY3QyLnVzZUxheW91dEVmZmVjdCIsIlJlYWN0Mi51c2VSZWYiLCJSZWFjdDIudXNlQ2FsbGJhY2siLCJSZWFjdDIuY3JlYXRlQ29udGV4dCIsIlJlYWN0Mi51c2VNZW1vIiwiUmVhY3QyLmNyZWF0ZUVsZW1lbnQiLCJSZWFjdDIuRnJhZ21lbnQiLCJSZWFjdDIuQ29tcG9uZW50IiwibWF0Y2hlczIiLCJnZXRDaGlsZHJlbiIsIlJlYWN0My5tZW1vIiwiUmVhY3QzLnVzZU1lbW8iLCJSZWFjdDMuY3JlYXRlRWxlbWVudCIsIlJlYWN0My5DaGlsZHJlbiIsIlJlYWN0My5pc1ZhbGlkRWxlbWVudCIsIlJlYWN0My5GcmFnbWVudCIsIlJlYWN0OS51c2VDb250ZXh0IiwiUmVhY3Q5LmNyZWF0ZUNvbnRleHQiLCJSZWFjdDkudXNlU3RhdGUiLCJSZWFjdDkudXNlUmVmIiwiUmVhY3Q5LnVzZUVmZmVjdCIsIlJlYWN0OS51c2VNZW1vIiwiUmVhY3Q5LmNyZWF0ZUVsZW1lbnQiLCJtMiIsIlJlYWN0OS5GcmFnbWVudCIsIlJlYWN0MTAudXNlUmVmIiwiUmVhY3QxMC51c2VTdGF0ZSIsIlJlYWN0MTAudXNlQ2FsbGJhY2siLCJSZWFjdDEwLnN0YXJ0VHJhbnNpdGlvbiIsIlJlYWN0MTAudXNlTGF5b3V0RWZmZWN0IiwiUmVhY3QxMC5jcmVhdGVFbGVtZW50IiwiUmVhY3QxMC5mb3J3YXJkUmVmIiwiUmVhY3QxMC51c2VDb250ZXh0IiwiUmVhY3QxMC5GcmFnbWVudCIsIlRva2VuIiwiUm91dGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLE1BQUlBO0FBQ0osR0FBQyxTQUFVQSxVQUFTO0FBR2hCLEtBQUMsU0FBVSxTQUFTO0FBQ2hCLFVBQUksT0FBTyxPQUFPLGVBQWUsV0FBVyxhQUN4QyxPQUFPQyxtQkFBVyxXQUFXQSxpQkFDekIsT0FBTyxTQUFTLFdBQVcsT0FDdkIsT0FBTyxTQUFTLFdBQVcsT0FDdkIsZUFBZ0I7QUFDaEMsVUFBSSxXQUFXLGFBQWFELFFBQU87QUFDbkMsVUFBSSxPQUFPLEtBQUssWUFBWSxhQUFhO0FBQ3JDLG1CQUFXLGFBQWEsS0FBSyxTQUFTLFFBQVE7QUFBQSxNQUMxRDtBQUNRLGNBQVEsVUFBVSxJQUFJO0FBQ3RCLFVBQUksT0FBTyxLQUFLLFlBQVksYUFBYTtBQUNyQyxhQUFLLFVBQVVBO0FBQUEsTUFDM0I7QUFDUSxlQUFTLGFBQWEsUUFBUSxVQUFVO0FBQ3BDLGVBQU8sU0FBVSxLQUFLLE9BQU87QUFDekIs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QSxJQUFHO0FBQUEsTUFBQSxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBYyxLQUFLO0FBQUEsTUFBTyxLQUFLO0FBQUEsTUFBTSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBWSxLQUFLO0FBQUEsTUFBTyxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBWSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBTyxLQUFLO0FBQUEsTUFBZ0IsS0FBSztBQUFBLE1BQWMsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQWEsS0FBSztBQUFBLE1BQVEsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQWMsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQWEsS0FBSztBQUFBLE1BQWUsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQWtCLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFtQixLQUFLO0FBQUEsTUFBaUIsS0FBSztBQUFBLE1BQW9CLEtBQUs7QUFBQSxNQUFhLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFjLEtBQUs7QUFBQSxNQUFPLEtBQUs7QUFBQSxNQUFtQixLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBYSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQWMsZUFBTztBQUFBLE1BQUUsS0FBSztBQUFBLE1BQU8sS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1B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LEdBQUUsV0FBVztBQUFFLGNBQUlELEtBQUU7QUFBRyxVQUFBVCxNQUFHLEdBQUdMLElBQUVLLEVBQUMsSUFBRSxHQUFHUyxJQUFFQyxFQUFDLEtBQUdmLEdBQUUsUUFBTUEsR0FBRSxRQUFNLFFBQU0sR0FBRVMsS0FBRSxPQUFHLEtBQUdUO0FBQUEsUUFBRTtBQUFBLE1BQUMsT0FBSztBQUFDLFlBQUcsR0FBR0EsRUFBQyxFQUFFLE9BQU0sTUFBTVQsR0FBRSxHQUFHLENBQUM7QUFBRSxRQUFBUyxHQUFFLFFBQU1BLEdBQUUsUUFBTSxRQUFNO0FBQUUsUUFBQVMsS0FBRTtBQUFHLGFBQUdUO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFO0FBQUMsU0FBSUEsS0FBRUEsR0FBRSxRQUFPLFNBQU9BLE1BQUcsTUFBSUEsR0FBRSxPQUFLLE1BQUlBLEdBQUUsT0FBSyxPQUFLQSxHQUFFLE1BQUssQ0FBQUEsS0FBRUEsR0FBRTtBQUFPLFNBQUdBO0FBQUEsRUFBQztBQUNoYSxXQUFTLEdBQUdBLElBQUU7QUFBQyxRQUFHQSxPQUFJLEdBQUcsUUFBTTtBQUFHLFFBQUcsQ0FBQ1MsR0FBRSxRQUFPLEdBQUdULEVBQUMsR0FBRVMsS0FBRSxNQUFHO0FBQUcsUUFBSUo7QUFBRSxLQUFDQSxLQUFFLE1BQUlMLEdBQUUsUUFBTSxFQUFFSyxLQUFFLE1BQUlMLEdBQUUsU0FBT0ssS0FBRUwsR0FBRSxNQUFLSyxLQUFFLFdBQVNBLE1BQUcsV0FBU0EsTUFBRyxDQUFDLEdBQUdMLEdBQUUsTUFBS0EsR0FBRSxhQUFhO0FBQUcsUUFBR0ssT0FBSUEsS0FBRSxLQUFJO0FBQUMsVUFBRyxHQUFHTCxFQUFDLEVBQUUsT0FBTSxHQUFFLEdBQUcsTUFBTVQsR0FBRSxHQUFHLENBQUM7QUFBRSxhQUFLYyxLQUFHLElBQUdMLElBQUVLLEVBQUMsR0FBRUEsS0FBRSxHQUFHQSxHQUFFLFdBQVc7QUFBQSxJQUFDO0FBQUMsT0FBR0wsRUFBQztBQUFFLFFBQUcsT0FBS0EsR0FBRSxLQUFJ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QUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxH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dkUsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxjQUFjLENBQUM7QUFBQSxRQUNiLGNBQWMsQ0FBQyxRQUFRLFNBQVMsT0FBTyxVQUFVLFNBQVM7QUFBQSxNQUNsRSxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTUQsR0FBRyxDQUFDO0FBQUEsUUFDRixHQUFHLENBQUMsT0FBTztBQUFBLE1BQ25CLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsR0FBRyxDQUFDO0FBQUEsUUFDRixHQUFHLENB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QUFBLE1BQzNDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsWUFBWSxDQUFDO0FBQUEsUUFDWCxZQUFZLHdCQUF1QjtBQUFBLE1BQzNDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1B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Q1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsQ0FBQztBQUNELE1BQUlDLGdCQUFlLElBQUksT0FBTyxNQUFNRCxZQUFXLElBQUksU0FBVW54QixJQUFHO0FBQzlELFdBQU9BLEdBQUU7QUFBQSxFQUNWLENBQUEsRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLEdBQUc7QUFDdEIsTUFBSXF4QixtQkFBa0IsQ0FBRTtBQUN4QixXQUFTbDFCLEtBQUksR0FBR0EsS0FBSWcxQixZQUFXLFFBQVFoMUIsTUFBSztBQUMxQyxRQUFJLFlBQVlnMUIsWUFBV2gxQixFQUFDO0FBQzVCLGFBQVNvUixLQUFJLEdBQUdBLEtBQUksVUFBVSxRQUFRLFFBQVFBLE1BQUs7QUFDakQsTUFBQThqQixpQkFBZ0IsVUFBVSxRQUFROWpCLEVBQUMsQ0FBQyxJQUFJLFVBQVU7QUFBQSxJQUN0RDtBQUFBLEVBQ0E7QUFDQSxNQUFJZ00sbUJBQWtCLFNBQVNBLGlCQUFnQixLQUFLO0FBQ2xELFdBQU8sSUFBSSxRQUFRNlgsZUFBYyxTQUFVeHVCLFFBQU87QUFDaEQsYUFBT3l1QixpQkFBZ0J6dUIsTUFBSztBQUFBLElBQ2hDLENBQUc7QUFBQSxFQUNGO0FBRUQsTUFBSTB1QixtQ0FBa0Msb0JBQW9CLFNBQVMsRUFBRS9YLGdCQUFlO0FBQ3BGLE1BQUlDLGNBQWEsU0FBU0EsWUFBVyxLQUFLO0FBQ3hDLFdBQU8sSUFBSSxRQUFRLGNBQWMsRUFBRTtBQUFBLEVBQ3BDO0FBQ0QsTUFBSUMsb0JBQW1CLFNBQVNBLGtCQUFpQixRQUFRO0FBQ3ZELFdBQU8sR0FBRyxPQUFPLE9BQU8sT0FBTyxHQUFHLEVBQUUsT0FBTyxPQUFPLEtBQUs7QUFBQSxFQUN4RDtBQUNELE1BQUlDLGdCQUFlLFNBQVNBLGNBQWFsWCxTQUFRO0FBQy9DLFdBQU8sU0FBVSxRQUFRLFVBQVU7QUFFakMsVUFBSSxPQUFPLEtBQUssVUFBVyxRQUFPO0FBQ2xDLFVBQUksd0JBQXdCdUgsZUFBYztBQUFBLFFBQ3RDLFlBQVk7QUFBQSxRQUNaLGVBQWU7QUFBQSxRQUNmLFdBQVcwUDtBQUFBLFFBQ1gsTUFBTTtBQUFBLFFBQ04sV0FBVztBQUFBLE1BQ1osR0FBRWpYLE9BQU0sR0FDVCxhQUFhLHNCQUFzQixZQUNuQyxnQkFBZ0Isc0JBQXNCLGVBQ3RDaUwsYUFBWSxzQkFBc0IsV0FDbEM5TCxRQUFPLHNCQUFzQixNQUM3QixZQUFZLHNCQUFzQjtBQUNwQyxVQUFJLFFBQVFBLFFBQU82WCxZQUFXLFFBQVEsSUFBSTtBQUMxQyxVQUFJLFlBQVk3WCxRQUFPNlgsWUFBVy9MLFdBQVUsTUFBTSxDQUFDLElBQUlBLFdBQVUsTUFBTTtBQUN2RSxVQUFJLFlBQVk7QUFDZCxnQkFBUSxNQUFNLFlBQWE7QUFDM0Isb0JBQVksVUFBVSxZQUFhO0FBQUEsTUFDekM7QUFDSSxVQUFJLGVBQWU7QUFDakIsZ0JBQVE2akIsaUNBQWdDLEtBQUs7QUFDN0Msb0JBQVkvWCxpQkFBZ0IsU0FBUztBQUFBLE1BQzNDO0FBQ0ksYUFBTyxjQUFjLFVBQVUsVUFBVSxPQUFPLEdBQUcsTUFBTSxNQUFNLE1BQU0sUUFBUSxVQUFVLFFBQVEsS0FBSyxJQUFJO0FBQUEsSUFDekc7QUFBQSxFQUNGO0FBRUQsTUFBSTdQLGFBQVksQ0FBQyxVQUFVO0FBQzNCLFdBQVM2bkIsWUFBVzVuQixPQUFNO0FBQ3hCLFFBQUksV0FBV0EsTUFBSyxVQUNsQixRQUFRSCwwQkFBeUJHLE9BQU1ELFVBQVM7QUFFbEQsUUFBSSxnQkFBZ0I1TCxPQUFNLFlBQVksT0FBTyxZQUFZLE1BQU0sU0FBUyxRQUFRLFFBQVE7QUFDeEYsV0FBT2t3QixPQUFNLElBQUksU0FBU2hrQixVQUFTO0FBQUEsTUFDakMsS0FBSztBQUFBLElBQ04sR0FBRSxlQUFlO0FBQUEsTUFDaEIsS0FBa0IsZ0JBQUFna0IsT0FBTSxJQUFJO0FBQUEsUUFDMUIsT0FBTztBQUFBO0FBQUEsUUFFUCxZQUFZO0FBQUEsUUFDWixRQUFRO0FBQUE7QUFBQSxRQUVSLFlBQVk7QUFBQSxRQUNaLFVBQVU7QUFBQSxRQUNWLFVBQVU7QUFBQSxRQUNWLFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQTtBQUFBLFFBRVQsT0FBTztBQUFBO0FBQUEsUUFFUCxPQUFPO0FBQUE7QUFBQSxRQUVQLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNULFVBQVU7QUFBQSxRQUNWLFdBQVc7QUFBQSxNQUNaLEdBQUUsSUFBSyxFQUFFO0FBQUEsSUFDZCxDQUFHLENBQUM7QUFBQSxFQUNKO0FBRUEsTUFBSXJVLGdCQUFlLFNBQVNBLGNBQWEsT0FBTztBQUM5QyxRQUFJLE1BQU0sV0FBWSxPQUFNLGVBQWdCO0FBQzVDLFVBQU0sZ0JBQWlCO0FBQUEsRUFDeEI7QUFDRCxXQUFTNlgsa0JBQWlCN25CLE9BQU07QUFDOUIsUUFBSSxZQUFZQSxNQUFLLFdBQ25CLGlCQUFpQkEsTUFBSyxnQkFDdEIsZ0JBQWdCQSxNQUFLLGVBQ3JCLGNBQWNBLE1BQUssYUFDbkIsYUFBYUEsTUFBSztBQUNwQixRQUFJLFdBQVcxQixPQUFNLE9BQU8sS0FBSztBQUNqQyxRQUFJLFFBQVFBLE9BQU0sT0FBTyxLQUFLO0FBQzlCLFFBQUksYUFBYUEsT0FBTSxPQUFPLENBQUM7QUFDL0IsUUFBSSxlQUFlQSxPQUFNLE9BQU8sSUFBSTtBQUNwQyxRQUFJLG1CQUFtQkEsT0FBTSxZQUFZLFNBQVUsT0FBTyxPQUFPO0FBQy9ELFVBQUksYUFBYSxZQUFZLEtBQU07QUFDbkMsVUFBSSx3QkFBd0IsYUFBYSxTQUN2QyxZQUFZLHNCQUFzQixXQUNsQyxlQUFlLHNCQUFzQixjQUNyQyxlQUFlLHNCQUFzQjtBQUN2QyxVQUFJLFNBQVMsYUFBYTtBQUMxQixVQUFJLGtCQUFrQixRQUFRO0FBQzlCLFVBQUksa0JBQWtCLGVBQWUsZUFBZTtBQUNwRCxVQUFJLHFCQUFxQjtBQUd6QixVQUFJLGtCQUFrQixTQUFTLFNBQVMsU0FBUztBQUMvQyxZQUFJLGNBQWUsZUFBYyxLQUFLO0FBQ3RDLGlCQUFTLFVBQVU7QUFBQSxNQUN6QjtBQUNJLFVBQUksbUJBQW1CLE1BQU0sU0FBUztBQUNwQyxZQUFJLFdBQVksWUFBVyxLQUFLO0FBQ2hDLGNBQU0sVUFBVTtBQUFBLE1BQ3RCO0FBR0ksVUFBSSxtQkFBbUIsUUFBUSxpQkFBaUI7QUFDOUMsWUFBSSxrQkFBa0IsQ0FBQyxTQUFTLFNBQVM7QUFDdkMseUJBQWUsS0FBSztBQUFBLFFBQzVCO0FBQ00sZUFBTyxZQUFZO0FBQ25CLDZCQUFxQjtBQUNyQixpQkFBUyxVQUFVO0FBQUEsTUFHcEIsV0FBVSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsV0FBVztBQUNqRCxZQUFJLGVBQWUsQ0FBQyxNQUFNLFNBQVM7QUFDakMsc0JBQVksS0FBSztBQUFBLFFBQ3pCO0FBQ00sZUFBTyxZQUFZO0FBQ25CLDZCQUFxQjtBQUNyQixjQUFNLFVBQVU7QUFBQSxNQUN0QjtBQUdJLFVBQUksb0JBQW9CO0FBQ3RCLFFBQUEwUixjQUFhLEtBQUs7QUFBQSxNQUN4QjtBQUFBLElBQ0csR0FBRSxDQUFDLGdCQUFnQixlQUFlLGFBQWEsVUFBVSxDQUFDO0FBQzNELFFBQUksVUFBVTFSLE9BQU0sWUFBWSxTQUFVLE9BQU87QUFDL0MsdUJBQWlCLE9BQU8sTUFBTSxNQUFNO0FBQUEsSUFDeEMsR0FBSyxDQUFDLGdCQUFnQixDQUFDO0FBQ3JCLFFBQUksZUFBZUEsT0FBTSxZQUFZLFNBQVUsT0FBTztBQUVwRCxpQkFBVyxVQUFVLE1BQU0sZUFBZSxDQUFDLEVBQUU7QUFBQSxJQUM5QyxHQUFFLEVBQUU7QUFDTCxRQUFJLGNBQWNBLE9BQU0sWUFBWSxTQUFVLE9BQU87QUFDbkQsVUFBSSxTQUFTLFdBQVcsVUFBVSxNQUFNLGVBQWUsQ0FBQyxFQUFFO0FBQzFELHVCQUFpQixPQUFPLE1BQU07QUFBQSxJQUNsQyxHQUFLLENBQUMsZ0JBQWdCLENBQUM7QUFDckIsUUFBSSxpQkFBaUJBLE9BQU0sWUFBWSxTQUFVLElBQUk7QUFFbkQsVUFBSSxDQUFDLEdBQUk7QUFDVCxVQUFJLGFBQWFuSyxPQUFNLHdCQUF3QjtBQUFBLFFBQzdDLFNBQVM7QUFBQSxNQUNmLElBQVE7QUFDSixTQUFHLGlCQUFpQixTQUFTLFNBQVMsVUFBVTtBQUNoRCxTQUFHLGlCQUFpQixjQUFjLGNBQWMsVUFBVTtBQUMxRCxTQUFHLGlCQUFpQixhQUFhLGFBQWEsVUFBVTtBQUFBLElBQ3pELEdBQUUsQ0FBQyxhQUFhLGNBQWMsT0FBTyxDQUFDO0FBQ3ZDLFFBQUksZ0JBQWdCbUssT0FBTSxZQUFZLFNBQVUsSUFBSTtBQUVsRCxVQUFJLENBQUMsR0FBSTtBQUNULFNBQUcsb0JBQW9CLFNBQVMsU0FBUyxLQUFLO0FBQzlDLFNBQUcsb0JBQW9CLGNBQWMsY0FBYyxLQUFLO0FBQ3hELFNBQUcsb0JBQW9CLGFBQWEsYUFBYSxLQUFLO0FBQUEsSUFDdkQsR0FBRSxDQUFDLGFBQWEsY0FBYyxPQUFPLENBQUM7QUFDdkMsSUFBQUEsT0FBTSxVQUFVLFdBQVk7QUFDMUIsVUFBSSxDQUFDLFVBQVc7QUFDaEIsVUFBSSxVQUFVLGFBQWE7QUFDM0IscUJBQWUsT0FBTztBQUN0QixhQUFPLFdBQVk7QUFDakIsc0JBQWMsT0FBTztBQUFBLE1BQ3RCO0FBQUEsSUFDRixHQUFFLENBQUMsV0FBVyxnQkFBZ0IsYUFBYSxDQUFDO0FBQzdDLFdBQU8sU0FBVSxTQUFTO0FBQ3hCLG1CQUFhLFVBQVU7QUFBQSxJQUN4QjtBQUFBLEVBQ0g7QUFFQSxNQUFJd3BCLGNBQWEsQ0FBQyxhQUFhLFVBQVUsWUFBWSxnQkFBZ0IsVUFBVTtBQUMvRSxNQUFJQyxlQUFjO0FBQUEsSUFDaEIsV0FBVztBQUFBO0FBQUEsSUFFWCxVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixRQUFRO0FBQUEsRUFDVDtBQUNELFdBQVNDLGtCQUFpQnAwQixJQUFHO0FBQzNCLFFBQUlBLEdBQUUsV0FBWSxDQUFBQSxHQUFFLGVBQWdCO0FBQUEsRUFDdEM7QUFDQSxXQUFTcTBCLGdCQUFlcjBCLElBQUc7QUFDekIsSUFBQUEsR0FBRSxnQkFBaUI7QUFBQSxFQUNyQjtBQUNBLFdBQVNzMEIsd0JBQXVCO0FBQzlCLFFBQUksTUFBTSxLQUFLO0FBQ2YsUUFBSSxjQUFjLEtBQUs7QUFDdkIsUUFBSSxnQkFBZ0IsTUFBTSxLQUFLO0FBQy9CLFFBQUksUUFBUSxHQUFHO0FBQ2IsV0FBSyxZQUFZO0FBQUEsSUFDckIsV0FBYSxrQkFBa0IsYUFBYTtBQUN4QyxXQUFLLFlBQVksTUFBTTtBQUFBLElBQzNCO0FBQUEsRUFDQTtBQUlBLFdBQVNDLGlCQUFnQjtBQUN2QixXQUFPLGtCQUFrQixVQUFVLFVBQVU7QUFBQSxFQUMvQztBQUNBLE1BQUlDLGFBQVksQ0FBQyxFQUFFLE9BQU8sV0FBVyxlQUFlLE9BQU8sWUFBWSxPQUFPLFNBQVM7QUFDdkYsTUFBSUMscUJBQW9CO0FBQ3hCLE1BQUlDLG1CQUFrQjtBQUFBLElBQ3BCLFNBQVM7QUFBQSxJQUNULFNBQVM7QUFBQSxFQUNWO0FBQ0QsV0FBU0MsZUFBY3ZvQixPQUFNO0FBQzNCLFFBQUksWUFBWUEsTUFBSyxXQUNuQix3QkFBd0JBLE1BQUssc0JBQzdCLHVCQUF1QiwwQkFBMEIsU0FBUyxPQUFPO0FBQ25FLFFBQUksaUJBQWlCMUIsT0FBTSxPQUFPLEVBQUU7QUFDcEMsUUFBSSxlQUFlQSxPQUFNLE9BQU8sSUFBSTtBQUNwQyxRQUFJLGdCQUFnQkEsT0FBTSxZQUFZLFNBQVUsbUJBQW1CO0FBQ2pFLFVBQUksQ0FBQzhwQixXQUFXO0FBQ2hCLFVBQUksU0FBUyxTQUFTO0FBQ3RCLFVBQUksY0FBYyxVQUFVLE9BQU87QUFDbkMsVUFBSSxzQkFBc0I7QUFFeEIsUUFBQU4sWUFBVyxRQUFRLFNBQVUsS0FBSztBQUNoQyxjQUFJLE1BQU0sZUFBZSxZQUFZLEdBQUc7QUFDeEMseUJBQWUsUUFBUSxHQUFHLElBQUk7QUFBQSxRQUN0QyxDQUFPO0FBQUEsTUFDUDtBQUdJLFVBQUksd0JBQXdCTyxxQkFBb0IsR0FBRztBQUNqRCxZQUFJLGlCQUFpQixTQUFTLGVBQWUsUUFBUSxjQUFjLEVBQUUsS0FBSztBQUMxRSxZQUFJLGNBQWMsU0FBUyxPQUFPLFNBQVMsS0FBSyxjQUFjO0FBQzlELFlBQUksa0JBQWtCLE9BQU8sYUFBYSxjQUFjLGtCQUFrQjtBQUMxRSxlQUFPLEtBQUtOLFlBQVcsRUFBRSxRQUFRLFNBQVUsS0FBSztBQUM5QyxjQUFJLE1BQU1BLGFBQVksR0FBRztBQUN6QixjQUFJLGFBQWE7QUFDZix3QkFBWSxHQUFHLElBQUk7QUFBQSxVQUM3QjtBQUFBLFFBQ0EsQ0FBTztBQUNELFlBQUksYUFBYTtBQUNmLHNCQUFZLGVBQWUsR0FBRyxPQUFPLGlCQUFpQixJQUFJO0FBQUEsUUFDbEU7QUFBQSxNQUNBO0FBR0ksVUFBSSxVQUFVSSxrQkFBaUI7QUFFN0IsZUFBTyxpQkFBaUIsYUFBYUgsbUJBQWtCTSxnQkFBZTtBQUd0RSxZQUFJLG1CQUFtQjtBQUNyQiw0QkFBa0IsaUJBQWlCLGNBQWNKLHVCQUFzQkksZ0JBQWU7QUFDdEYsNEJBQWtCLGlCQUFpQixhQUFhTCxpQkFBZ0JLLGdCQUFlO0FBQUEsUUFDdkY7QUFBQSxNQUNBO0FBR0ksTUFBQUQsc0JBQXFCO0FBQUEsSUFDekIsR0FBSyxDQUFDLG9CQUFvQixDQUFDO0FBQ3pCLFFBQUksbUJBQW1CL3BCLE9BQU0sWUFBWSxTQUFVLG1CQUFtQjtBQUNwRSxVQUFJLENBQUM4cEIsV0FBVztBQUNoQixVQUFJLFNBQVMsU0FBUztBQUN0QixVQUFJLGNBQWMsVUFBVSxPQUFPO0FBR25DLE1BQUFDLHFCQUFvQixLQUFLLElBQUlBLHFCQUFvQixHQUFHLENBQUM7QUFHckQsVUFBSSx3QkFBd0JBLHFCQUFvQixHQUFHO0FBQ2pELFFBQUFQLFlBQVcsUUFBUSxTQUFVLEtBQUs7QUFDaEMsY0FBSSxNQUFNLGVBQWUsUUFBUSxHQUFHO0FBQ3BDLGNBQUksYUFBYTtBQUNmLHdCQUFZLEdBQUcsSUFBSTtBQUFBLFVBQzdCO0FBQUEsUUFDQSxDQUFPO0FBQUEsTUFDUDtBQUdJLFVBQUksVUFBVUssa0JBQWlCO0FBQzdCLGVBQU8sb0JBQW9CLGFBQWFILG1CQUFrQk0sZ0JBQWU7QUFDekUsWUFBSSxtQkFBbUI7QUFDckIsNEJBQWtCLG9CQUFvQixjQUFjSix1QkFBc0JJLGdCQUFlO0FBQ3pGLDRCQUFrQixvQkFBb0IsYUFBYUwsaUJBQWdCSyxnQkFBZTtBQUFBLFFBQzFGO0FBQUEsTUFDQTtBQUFBLElBQ0EsR0FBSyxDQUFDLG9CQUFvQixDQUFDO0FBQ3pCLElBQUFocUIsT0FBTSxVQUFVLFdBQVk7QUFDMUIsVUFBSSxDQUFDLFVBQVc7QUFDaEIsVUFBSSxVQUFVLGFBQWE7QUFDM0Isb0JBQWMsT0FBTztBQUNyQixhQUFPLFdBQVk7QUFDakIseUJBQWlCLE9BQU87QUFBQSxNQUN6QjtBQUFBLElBQ0YsR0FBRSxDQUFDLFdBQVcsZUFBZSxnQkFBZ0IsQ0FBQztBQUMvQyxXQUFPLFNBQVUsU0FBUztBQUN4QixtQkFBYSxVQUFVO0FBQUEsSUFDeEI7QUFBQSxFQUNIO0FBRUEsTUFBSTJSLG1CQUFrQixTQUFTQSxpQkFBZ0IsT0FBTztBQUNwRCxRQUFJLFVBQVUsTUFBTTtBQUNwQixXQUFPLFFBQVEsY0FBYyxpQkFBaUIsUUFBUSxjQUFjLGNBQWMsS0FBTTtBQUFBLEVBQ3pGO0FBQ0QsTUFBSXVZLFdBQVU7QUFBQSxJQUNaLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxFQUNUO0FBQ0QsV0FBU0MsZUFBY3pvQixPQUFNO0FBQzNCLFFBQUksV0FBV0EsTUFBSyxVQUNsQixjQUFjQSxNQUFLLGFBQ25CLHNCQUFzQkEsTUFBSyxnQkFDM0IsaUJBQWlCLHdCQUF3QixTQUFTLE9BQU8scUJBQ3pELGlCQUFpQkEsTUFBSyxnQkFDdEIsZ0JBQWdCQSxNQUFLLGVBQ3JCLGNBQWNBLE1BQUssYUFDbkIsYUFBYUEsTUFBSztBQUNwQixRQUFJLHlCQUF5QjZuQixrQkFBaUI7QUFBQSxNQUM1QyxXQUFXO0FBQUEsTUFDWDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0osQ0FBRztBQUNELFFBQUksc0JBQXNCVSxlQUFjO0FBQUEsTUFDdEMsV0FBVztBQUFBLElBQ2YsQ0FBRztBQUNELFFBQUksWUFBWSxTQUFTclksV0FBVSxTQUFTO0FBQzFDLDZCQUF1QixPQUFPO0FBQzlCLDBCQUFvQixPQUFPO0FBQUEsSUFDNUI7QUFDRCxXQUFPbVUsT0FBTSxJQUFJL2xCLE9BQU0sVUFBVSxNQUFNLGVBQWUrbEIsT0FBTSxJQUFJLE9BQU87QUFBQSxNQUNyRSxTQUFTcFU7QUFBQSxNQUNULEtBQUt1WTtBQUFBLElBQ1QsQ0FBRyxHQUFHLFNBQVMsU0FBUyxDQUFDO0FBQUEsRUFDekI7QUFFQSxNQUFJcGQsU0FBUTtBQUFBLElBQ1YsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLEVBQ1Q7QUFDRCxNQUFJK0UsaUJBQWdCLFNBQVNBLGVBQWNuUSxPQUFNO0FBQy9DLFFBQUksT0FBT0EsTUFBSyxNQUNkb1EsV0FBVXBRLE1BQUs7QUFDakIsV0FBT3FrQixPQUFNLElBQUksU0FBUztBQUFBLE1BQ3hCLFVBQVU7QUFBQSxNQUNWO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixlQUFlO0FBQUEsTUFDZixTQUFTalU7QUFBQSxNQUNULEtBQUtoRjtBQUFBLE1BR0wsT0FBTztBQUFBLE1BQ1AsVUFBVSxTQUFTbEwsWUFBVztBQUFBLE1BQUE7QUFBQSxJQUNsQyxDQUFHO0FBQUEsRUFDRjtBQUNELE1BQUl3b0IsbUJBQWtCdlk7QUFJdEIsV0FBU3dZLGNBQWE3c0IsS0FBSTtBQUN4QixRQUFJO0FBQ0osV0FBTyxPQUFPLFdBQVcsZUFBZSxPQUFPLGFBQWEsT0FBT0EsSUFBRyxPQUFPLHdCQUF3QixPQUFPLFVBQVUsZUFBZSxPQUFPLFFBQVEsMEJBQTBCLFNBQVMsU0FBUyxzQkFBc0IsYUFBYSxPQUFPLFVBQVUsUUFBUSxJQUFJO0FBQUEsRUFDbFE7QUFDQSxXQUFTOHNCLFlBQVc7QUFDbEIsV0FBT0QsY0FBYSxVQUFVO0FBQUEsRUFDaEM7QUFDQSxXQUFTdFksU0FBUTtBQUNmLFdBQU9zWSxjQUFhLE9BQU87QUFBQSxFQUM3QjtBQUNBLFdBQVNFLFVBQVM7QUFDaEIsV0FBT0YsY0FBYSxRQUFRO0FBQUEsSUFFNUJ0WSxPQUFPLEtBQUksVUFBVSxpQkFBaUI7QUFBQSxFQUN4QztBQUNBLFdBQVN1SCxTQUFRO0FBQ2YsV0FBT2dSLFVBQVUsS0FBSUMsUUFBUTtBQUFBLEVBQy9CO0FBQ0EsV0FBU3paLGlCQUFnQjtBQUN2QixXQUFPaUIsT0FBTyxLQUFJdUgsT0FBTztBQUFBLEVBQzNCO0FBRUEsTUFBSXRILG9CQUFtQixTQUFTQSxrQkFBaUIsT0FBTztBQUN0RCxXQUFPLE1BQU07QUFBQSxFQUNkO0FBQ0QsTUFBSXdZLG9CQUFtQixTQUFTdlosZ0JBQWUsUUFBUTtBQUNyRCxXQUFPLE9BQU87QUFBQSxFQUNmO0FBQ0QsTUFBSXdaLG9CQUFtQixTQUFTeFksZ0JBQWUsUUFBUTtBQUNyRCxXQUFPLE9BQU87QUFBQSxFQUNmO0FBQ0QsTUFBSWYsb0JBQW1CLFNBQVNBLGtCQUFpQixRQUFRO0FBQ3ZELFdBQU8sQ0FBQyxDQUFDLE9BQU87QUFBQSxFQUNqQjtBQUVELE1BQUl3WixpQkFBZ0I7QUFBQSxJQUNsQixnQkFBZ0I3MEIsT0FBTTtBQUFBLElBQ3RCLFdBQVdBLE9BQU07QUFBQSxJQUNqQixTQUFTQSxPQUFNO0FBQUEsSUFDZixtQkFBbUJBLE9BQU07QUFBQSxJQUN6QixPQUFPQSxPQUFNO0FBQUEsSUFDYixjQUFjQSxPQUFNO0FBQUEsSUFDcEIscUJBQXFCQSxPQUFNO0FBQUEsSUFDM0Isb0JBQW9CQSxPQUFNO0FBQUEsSUFDMUIsT0FBT0EsT0FBTTtBQUFBLElBQ2Isa0JBQWtCQSxPQUFNO0FBQUEsSUFDeEIsZ0JBQWdCQSxPQUFNO0FBQUEsSUFDdEIsTUFBTUEsT0FBTTtBQUFBLElBQ1osVUFBVUEsT0FBTTtBQUFBLElBQ2hCLFlBQVlBLE9BQU07QUFBQSxJQUNsQixZQUFZQSxPQUFNO0FBQUEsSUFDbEIsaUJBQWlCQSxPQUFNO0FBQUEsSUFDdkIsa0JBQWtCQSxPQUFNO0FBQUEsSUFDeEIsa0JBQWtCQSxPQUFNO0FBQUEsSUFDeEIsUUFBUUEsT0FBTTtBQUFBLElBQ2QsYUFBYUEsT0FBTTtBQUFBLElBQ25CLGFBQWFBLE9BQU07QUFBQSxJQUNuQixnQkFBZ0JBLE9BQU07QUFBQSxFQUN2QjtBQUlELFdBQVMsWUFBWSxRQUFRO0FBQzNCLFFBQUksU0FBUyxVQUFVLFNBQVMsS0FBSyxVQUFVLENBQUMsTUFBTSxTQUFZLFVBQVUsQ0FBQyxJQUFJLENBQUU7QUFFbkYsUUFBSSxTQUFTaU0sZUFBYyxDQUFFLEdBQUUsTUFBTTtBQUdyQyxXQUFPLEtBQUssTUFBTSxFQUFFLFFBQVEsU0FBVSxhQUFhO0FBQ2pELFVBQUksTUFBTTtBQUNWLFVBQUksT0FBTyxHQUFHLEdBQUc7QUFDZixlQUFPLEdBQUcsSUFBSSxTQUFVLE9BQU8sT0FBTztBQUNwQyxpQkFBTyxPQUFPLEdBQUcsRUFBRSxPQUFPLEdBQUcsRUFBRSxPQUFPLEtBQUssR0FBRyxLQUFLO0FBQUEsUUFDcEQ7QUFBQSxNQUNQLE9BQVc7QUFDTCxlQUFPLEdBQUcsSUFBSSxPQUFPLEdBQUc7QUFBQSxNQUM5QjtBQUFBLElBQ0EsQ0FBRztBQUNELFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSXVMLFVBQVM7QUFBQSxJQUNYLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFFBQVE7QUFBQSxJQUNSLGFBQWE7QUFBQSxJQUNiLFVBQVU7QUFBQSxJQUNWLFVBQVU7QUFBQSxJQUNWLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxFQUNaO0FBQ0QsTUFBSUYsZ0JBQWU7QUFFbkIsTUFBSU8sWUFBVztBQUVmLE1BQUlYLGlCQUFnQjtBQUVwQixNQUFJNGQsY0FBYWpkLFlBQVc7QUFDNUIsTUFBSU4sV0FBVTtBQUFBLElBQ1osVUFBVU07QUFBQSxJQUNWLGVBQWVYO0FBQUEsSUFDZixZQUFZNGQ7QUFBQSxFQUNiO0FBQ0QsTUFBSUMsZ0JBQWU7QUFBQSxJQUNqQixjQUFjemQ7QUFBQSxJQUNkLFFBQVFFO0FBQUEsSUFDUixTQUFTRDtBQUFBLEVBQ1Y7QUFFRCxNQUFJeWQsZ0JBQWU7QUFBQSxJQUNqQixhQUFhO0FBQUEsSUFDYix1QkFBdUI7QUFBQSxJQUN2QixtQkFBbUJoMUIsT0FBTSxlQUFnQjtBQUFBLElBQ3pDLG1CQUFtQixDQUFDQSxPQUFNLGVBQWdCO0FBQUEsSUFDMUMsWUFBWSxDQUFFO0FBQUEsSUFDZCxtQkFBbUI7QUFBQSxJQUNuQixtQkFBbUI7QUFBQSxJQUNuQixZQUFZLENBQUU7QUFBQSxJQUNkLDBCQUEwQjtBQUFBLElBQzFCLG1CQUFtQjtBQUFBLElBQ25CLGNBQWM0YixjQUFjO0FBQUEsSUFDNUIsa0JBQWtCTztBQUFBLElBQ2xCLGdCQUFnQndZO0FBQUEsSUFDaEIsZ0JBQWdCQztBQUFBLElBQ2hCLFlBQVk7QUFBQSxJQUNaLFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLGNBQWM7QUFBQSxJQUNkLGtCQUFrQnZaO0FBQUEsSUFDbEIsZ0JBQWdCLFNBQVMyQixrQkFBaUI7QUFDeEMsYUFBTztBQUFBLElBQ1I7QUFBQSxJQUNELGVBQWU7QUFBQSxJQUNmLGVBQWU7QUFBQSxJQUNmLFlBQVk7QUFBQSxJQUNaLGVBQWU7QUFBQSxJQUNmLGNBQWM7QUFBQSxJQUNkLHVCQUF1QjtBQUFBLElBQ3ZCLDBCQUEwQixDQUFDaGQsT0FBTSxlQUFnQjtBQUFBLElBQ2pELGtCQUFrQixTQUFTaWQsb0JBQW1CO0FBQzVDLGFBQU87QUFBQSxJQUNSO0FBQUEsSUFDRCxpQkFBaUI7QUFBQSxJQUNqQixpQkFBaUI7QUFBQSxJQUNqQixTQUFTLENBQUU7QUFBQSxJQUNYLFVBQVU7QUFBQSxJQUNWLGFBQWE7QUFBQSxJQUNiLG9CQUFvQixTQUFTM0Isb0JBQW1CelAsT0FBTTtBQUNwRCxVQUFJbUQsU0FBUW5ELE1BQUs7QUFDakIsYUFBTyxHQUFHLE9BQU9tRCxRQUFPLFNBQVMsRUFBRSxPQUFPQSxXQUFVLElBQUksTUFBTSxJQUFJLFlBQVk7QUFBQSxJQUMvRTtBQUFBLElBQ0QsUUFBUSxDQUFFO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixpQkFBaUI7QUFBQSxJQUNqQixVQUFVO0FBQUEsRUFDWDtBQUNELFdBQVNpbUIscUJBQW9CLE9BQU8sUUFBUSxhQUFhajFCLFFBQU87QUFDOUQsUUFBSXNZLGNBQWE0YyxtQkFBa0IsT0FBTyxRQUFRLFdBQVc7QUFDN0QsUUFBSSxhQUFhQyxtQkFBa0IsT0FBTyxRQUFRLFdBQVc7QUFDN0QsUUFBSSxRQUFRL1osZ0JBQWUsT0FBTyxNQUFNO0FBQ3hDLFFBQUksUUFBUWdCLGdCQUFlLE9BQU8sTUFBTTtBQUN4QyxXQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixZQUFZOUQ7QUFBQSxNQUNaO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBLE9BQU90WTtBQUFBLElBQ1I7QUFBQSxFQUNIO0FBQ0EsV0FBU28xQix5QkFBd0IsT0FBTyxhQUFhO0FBQ25ELFdBQU8sTUFBTSxRQUFRLElBQUksU0FBVSxlQUFlLG9CQUFvQjtBQUNwRSxVQUFJLGFBQWEsZUFBZTtBQUM5QixZQUFJLHFCQUFxQixjQUFjLFFBQVEsSUFBSSxTQUFVLFFBQVEsYUFBYTtBQUNoRixpQkFBT0gscUJBQW9CLE9BQU8sUUFBUSxhQUFhLFdBQVc7QUFBQSxRQUMxRSxDQUFPLEVBQUUsT0FBTyxTQUFVNVksb0JBQW1CO0FBQ3JDLGlCQUFPZ1osYUFBWSxPQUFPaFosa0JBQWlCO0FBQUEsUUFDbkQsQ0FBTztBQUNELGVBQU8sbUJBQW1CLFNBQVMsSUFBSTtBQUFBLFVBQ3JDLE1BQU07QUFBQSxVQUNOLE1BQU07QUFBQSxVQUNOLFNBQVM7QUFBQSxVQUNULE9BQU87QUFBQSxRQUNmLElBQVU7QUFBQSxNQUNWO0FBQ0ksVUFBSSxvQkFBb0I0WSxxQkFBb0IsT0FBTyxlQUFlLGFBQWEsa0JBQWtCO0FBQ2pHLGFBQU9JLGFBQVksT0FBTyxpQkFBaUIsSUFBSSxvQkFBb0I7QUFBQSxJQUN2RSxDQUFHLEVBQUUsT0FBT3IxQixPQUFNLFVBQVU7QUFBQSxFQUM1QjtBQUNBLFdBQVNzMUIsNkNBQTRDLG9CQUFvQjtBQUN2RSxXQUFPLG1CQUFtQixPQUFPLFNBQVUsb0JBQW9CLG1CQUFtQjtBQUNoRixVQUFJLGtCQUFrQixTQUFTLFNBQVM7QUFDdEMsMkJBQW1CLEtBQUssTUFBTSxvQkFBb0J0RixvQkFBbUIsa0JBQWtCLFFBQVEsSUFBSSxTQUFVLFFBQVE7QUFDbkgsaUJBQU8sT0FBTztBQUFBLFFBQ2YsQ0FBQSxDQUFDLENBQUM7QUFBQSxNQUNULE9BQVc7QUFDTCwyQkFBbUIsS0FBSyxrQkFBa0IsSUFBSTtBQUFBLE1BQ3BEO0FBQ0ksYUFBTztBQUFBLElBQ1IsR0FBRSxFQUFFO0FBQUEsRUFDUDtBQUNBLFdBQVN1Riw4QkFBNkIsb0JBQW9CalosV0FBVTtBQUNsRSxXQUFPLG1CQUFtQixPQUFPLFNBQVUsb0JBQW9CLG1CQUFtQjtBQUNoRixVQUFJLGtCQUFrQixTQUFTLFNBQVM7QUFDdEMsMkJBQW1CLEtBQUssTUFBTSxvQkFBb0IwVCxvQkFBbUIsa0JBQWtCLFFBQVEsSUFBSSxTQUFVLFFBQVE7QUFDbkgsaUJBQU87QUFBQSxZQUNMLE1BQU0sT0FBTztBQUFBLFlBQ2IsSUFBSSxHQUFHLE9BQU8xVCxXQUFVLEdBQUcsRUFBRSxPQUFPLGtCQUFrQixPQUFPLEdBQUcsRUFBRSxPQUFPLE9BQU8sS0FBSztBQUFBLFVBQ3RGO0FBQUEsUUFDRixDQUFBLENBQUMsQ0FBQztBQUFBLE1BQ1QsT0FBVztBQUNMLDJCQUFtQixLQUFLO0FBQUEsVUFDdEIsTUFBTSxrQkFBa0I7QUFBQSxVQUN4QixJQUFJLEdBQUcsT0FBT0EsV0FBVSxHQUFHLEVBQUUsT0FBTyxrQkFBa0IsS0FBSztBQUFBLFFBQ25FLENBQU87QUFBQSxNQUNQO0FBQ0ksYUFBTztBQUFBLElBQ1IsR0FBRSxFQUFFO0FBQUEsRUFDUDtBQUNBLFdBQVNrWix1QkFBc0IsT0FBTyxhQUFhO0FBQ2pELFdBQU9GLDZDQUE0Q0YseUJBQXdCLE9BQU8sV0FBVyxDQUFDO0FBQUEsRUFDaEc7QUFDQSxXQUFTQyxhQUFZLE9BQU8sbUJBQW1CO0FBQzdDLFFBQUksb0JBQW9CLE1BQU0sWUFDNUIsYUFBYSxzQkFBc0IsU0FBUyxLQUFLO0FBQ25ELFFBQUk5MEIsUUFBTyxrQkFBa0IsTUFDM0IsYUFBYSxrQkFBa0IsWUFDL0IsUUFBUSxrQkFBa0IsT0FDMUIsUUFBUSxrQkFBa0I7QUFDNUIsWUFBUSxDQUFDaWMsMkJBQTBCLEtBQUssS0FBSyxDQUFDLGVBQWVpWixlQUFjLE9BQU87QUFBQSxNQUNoRjtBQUFBLE1BQ0E7QUFBQSxNQUNBLE1BQU1sMUI7QUFBQSxJQUNQLEdBQUUsVUFBVTtBQUFBLEVBQ2Y7QUFDQSxXQUFTbTFCLHFCQUFvQixPQUFPLGlCQUFpQjtBQUNuRCxRQUFJLGVBQWUsTUFBTSxjQUN2QixrQkFBa0IsTUFBTTtBQUMxQixRQUFJLG1CQUFtQixnQkFBZ0IsUUFBUSxZQUFZO0FBQzNELFFBQUksbUJBQW1CLElBQUk7QUFDekIsVUFBSSxtQkFBbUIsZ0JBQWdCLFFBQVEsWUFBWTtBQUMzRCxVQUFJLG1CQUFtQixJQUFJO0FBRXpCLGVBQU87QUFBQSxNQUNiLFdBQWUsbUJBQW1CLGdCQUFnQixRQUFRO0FBR3BELGVBQU8sZ0JBQWdCLGdCQUFnQjtBQUFBLE1BQzdDO0FBQUEsSUFDQTtBQUNFLFdBQU87QUFBQSxFQUNUO0FBQ0EsV0FBU0Msc0JBQXFCLE9BQU8vd0IsVUFBUztBQUM1QyxRQUFJLG9CQUFvQixNQUFNO0FBQzlCLFdBQU8scUJBQXFCQSxTQUFRLFFBQVEsaUJBQWlCLElBQUksS0FBSyxvQkFBb0JBLFNBQVEsQ0FBQztBQUFBLEVBQ3JHO0FBQ0EsTUFBSTJYLHNCQUFxQixTQUFTQSxvQkFBbUIseUJBQXlCLGVBQWU7QUFDM0YsUUFBSTtBQUNKLFFBQUksbUJBQW1CLHdCQUF3Qix3QkFBd0IsS0FBSyxTQUFVLFFBQVE7QUFDNUYsYUFBTyxPQUFPLFNBQVM7QUFBQSxJQUMzQixDQUFHLE9BQU8sUUFBUSwwQkFBMEIsU0FBUyxTQUFTLHNCQUFzQjtBQUNsRixXQUFPLG1CQUFtQjtBQUFBLEVBQzNCO0FBQ0QsTUFBSW5CLGtCQUFpQixTQUFTQSxnQkFBZSxPQUFPN2EsT0FBTTtBQUN4RCxXQUFPLE1BQU0sZUFBZUEsS0FBSTtBQUFBLEVBQ2pDO0FBQ0QsTUFBSTZiLGtCQUFpQixTQUFTQSxnQkFBZSxPQUFPN2IsT0FBTTtBQUN4RCxXQUFPLE1BQU0sZUFBZUEsS0FBSTtBQUFBLEVBQ2pDO0FBQ0QsV0FBUzIwQixtQkFBa0IsT0FBTyxRQUFRLGFBQWE7QUFDckQsV0FBTyxPQUFPLE1BQU0scUJBQXFCLGFBQWEsTUFBTSxpQkFBaUIsUUFBUSxXQUFXLElBQUk7QUFBQSxFQUN0RztBQUNBLFdBQVNDLG1CQUFrQixPQUFPLFFBQVEsYUFBYTtBQUNyRCxRQUFJLFlBQVksUUFBUSxNQUFNLElBQUksR0FBSSxRQUFPO0FBQzdDLFFBQUksT0FBTyxNQUFNLHFCQUFxQixZQUFZO0FBQ2hELGFBQU8sTUFBTSxpQkFBaUIsUUFBUSxXQUFXO0FBQUEsSUFDckQ7QUFDRSxRQUFJLFlBQVkvWSxnQkFBZSxPQUFPLE1BQU07QUFDNUMsV0FBTyxZQUFZLEtBQUssU0FBVS9kLElBQUc7QUFDbkMsYUFBTytkLGdCQUFlLE9BQU8vZCxFQUFDLE1BQU07QUFBQSxJQUN4QyxDQUFHO0FBQUEsRUFDSDtBQUNBLFdBQVNvM0IsZUFBYyxPQUFPLFFBQVEsWUFBWTtBQUNoRCxXQUFPLE1BQU0sZUFBZSxNQUFNLGFBQWEsUUFBUSxVQUFVLElBQUk7QUFBQSxFQUN2RTtBQUNBLE1BQUlqWiw2QkFBNEIsU0FBU0EsMkJBQTBCLE9BQU87QUFDeEUsUUFBSSxzQkFBc0IsTUFBTSxxQkFDOUIsVUFBVSxNQUFNO0FBQ2xCLFFBQUksd0JBQXdCLE9BQVcsUUFBTztBQUM5QyxXQUFPO0FBQUEsRUFDUjtBQUNELE1BQUlvWixjQUFhO0FBQ2pCLE1BQUluWixVQUFzQix5QkFBVSxZQUFZO0FBQzlDLElBQUErUyxXQUFVL1MsU0FBUSxVQUFVO0FBQzVCLFFBQUksU0FBU21ULGNBQWFuVCxPQUFNO0FBWWhDLGFBQVNBLFFBQU8sUUFBUTtBQUN0QixVQUFJO0FBQ0osTUFBQTJTLGlCQUFnQixNQUFNM1MsT0FBTTtBQUM1QixjQUFRLE9BQU8sS0FBSyxNQUFNLE1BQU07QUFDaEMsWUFBTSxRQUFRO0FBQUEsUUFDWixlQUFlO0FBQUEsUUFDZixlQUFlO0FBQUEsUUFDZixpQkFBaUI7QUFBQSxRQUNqQix5QkFBeUIsQ0FBRTtBQUFBLFFBQzNCLGNBQWM7QUFBQSxRQUNkLGVBQWU7QUFBQSxRQUNmLFdBQVc7QUFBQSxRQUNYLGFBQWEsQ0FBRTtBQUFBLFFBQ2YseUJBQXlCO0FBQUEsUUFDekIsZ0JBQWdCO0FBQUEsUUFDaEIsMEJBQTBCO0FBQUEsUUFDMUIsV0FBVztBQUFBLFFBQ1gsZ0JBQWdCO0FBQUEsTUFDakI7QUFDRCxZQUFNLG1CQUFtQjtBQUN6QixZQUFNLGNBQWM7QUFDcEIsWUFBTSxjQUFjO0FBQ3BCLFlBQU0sZ0JBQWdCO0FBQ3RCLFlBQU0sZ0JBQWdCO0FBQ3RCLFlBQU0saUJBQWlCO0FBQ3ZCLFlBQU0sZ0NBQWdDO0FBQ3RDLFlBQU0saUJBQWlCO0FBQ3ZCLFlBQU0sZ0JBQWdCeEIsZUFBZTtBQUNyQyxZQUFNLGFBQWE7QUFDbkIsWUFBTSxnQkFBZ0IsU0FBVW5KLE1BQUs7QUFDbkMsY0FBTSxhQUFhQTtBQUFBLE1BQ3BCO0FBQ0QsWUFBTSxtQkFBbUI7QUFDekIsWUFBTSxzQkFBc0IsU0FBVUEsTUFBSztBQUN6QyxjQUFNLG1CQUFtQkE7QUFBQSxNQUMxQjtBQUNELFlBQU0sY0FBYztBQUNwQixZQUFNLGlCQUFpQixTQUFVQSxNQUFLO0FBQ3BDLGNBQU0sY0FBY0E7QUFBQSxNQUNyQjtBQUNELFlBQU0sV0FBVztBQUNqQixZQUFNLGNBQWMsU0FBVUEsTUFBSztBQUNqQyxjQUFNLFdBQVdBO0FBQUEsTUFDbEI7QUFDRCxZQUFNLFFBQVEsTUFBTTtBQUNwQixZQUFNLE9BQU8sTUFBTTtBQUNuQixZQUFNLFdBQVcsU0FBVSxVQUFVLFlBQVk7QUFDL0MsWUFBSSxjQUFjLE1BQU0sT0FDdEIvRixZQUFXLFlBQVksVUFDdkIsT0FBTyxZQUFZO0FBQ3JCLG1CQUFXLE9BQU87QUFDbEIsY0FBTSxhQUFhLFVBQVUsVUFBVTtBQUN2QyxRQUFBQSxVQUFTLFVBQVUsVUFBVTtBQUFBLE1BQzlCO0FBQ0QsWUFBTSxXQUFXLFNBQVUsVUFBVSxRQUFRLFFBQVE7QUFDbkQsWUFBSSxlQUFlLE1BQU0sT0FDdkIsb0JBQW9CLGFBQWEsbUJBQ2pDLFVBQVUsYUFBYSxTQUN2QixhQUFhLGFBQWE7QUFDNUIsY0FBTSxjQUFjLElBQUk7QUFBQSxVQUN0QixRQUFRO0FBQUEsVUFDUixnQkFBZ0I7QUFBQSxRQUN4QixDQUFPO0FBQ0QsWUFBSSxtQkFBbUI7QUFDckIsZ0JBQU0sU0FBUztBQUFBLFlBQ2IsMEJBQTBCLENBQUM7QUFBQSxVQUNyQyxDQUFTO0FBQ0QsZ0JBQU0sWUFBYTtBQUFBLFFBQzNCO0FBRU0sY0FBTSxTQUFTO0FBQUEsVUFDYix5QkFBeUI7QUFBQSxRQUNqQyxDQUFPO0FBQ0QsY0FBTSxTQUFTLFVBQVU7QUFBQSxVQUN2QjtBQUFBLFVBQ0E7QUFBQSxRQUNSLENBQU87QUFBQSxNQUNGO0FBQ0QsWUFBTSxlQUFlLFNBQVUsVUFBVTtBQUN2QyxZQUFJLGVBQWUsTUFBTSxPQUN2QixvQkFBb0IsYUFBYSxtQkFDakMsVUFBVSxhQUFhLFNBQ3ZCLE9BQU8sYUFBYTtBQUN0QixZQUFJLGNBQWMsTUFBTSxNQUFNO0FBQzlCLFlBQUksYUFBYSxXQUFXLE1BQU0saUJBQWlCLFVBQVUsV0FBVztBQUN4RSxZQUFJdU0sY0FBYSxNQUFNLGlCQUFpQixVQUFVLFdBQVc7QUFDN0QsWUFBSSxZQUFZO0FBQ2QsY0FBSSxZQUFZLE1BQU0sZUFBZSxRQUFRO0FBQzdDLGdCQUFNLFNBQVN0WSxPQUFNLGtCQUFrQixZQUFZLE9BQU8sU0FBVTNCLElBQUc7QUFDckUsbUJBQU8sTUFBTSxlQUFlQSxFQUFDLE1BQU07QUFBQSxVQUM3QyxDQUFTLENBQUMsR0FBRyxtQkFBbUIsUUFBUTtBQUFBLFFBQ3hDLFdBQWlCLENBQUNpYSxhQUFZO0FBRXRCLGNBQUksU0FBUztBQUNYLGtCQUFNLFNBQVN0WSxPQUFNLGtCQUFrQixDQUFBLEVBQUcsT0FBT2d3QixvQkFBbUIsV0FBVyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxpQkFBaUIsUUFBUTtBQUFBLFVBQ25JLE9BQWU7QUFDTCxrQkFBTSxTQUFTaHdCLE9BQU0sbUJBQW1CLFFBQVEsR0FBRyxlQUFlO0FBQUEsVUFDNUU7QUFBQSxRQUNBLE9BQWE7QUFDTCxnQkFBTSxhQUFhQSxPQUFNLG1CQUFtQixRQUFRLEdBQUc7QUFBQSxZQUNyRCxRQUFRO0FBQUEsWUFDUixRQUFRO0FBQUEsWUFDUjtBQUFBLFVBQ1YsQ0FBUztBQUNEO0FBQUEsUUFDUjtBQUNNLFlBQUksbUJBQW1CO0FBQ3JCLGdCQUFNLFVBQVc7QUFBQSxRQUN6QjtBQUFBLE1BQ0s7QUFDRCxZQUFNLGNBQWMsU0FBVSxjQUFjO0FBQzFDLFlBQUksVUFBVSxNQUFNLE1BQU07QUFDMUIsWUFBSSxjQUFjLE1BQU0sTUFBTTtBQUM5QixZQUFJLFlBQVksTUFBTSxlQUFlLFlBQVk7QUFDakQsWUFBSSxnQkFBZ0IsWUFBWSxPQUFPLFNBQVUzQixJQUFHO0FBQ2xELGlCQUFPLE1BQU0sZUFBZUEsRUFBQyxNQUFNO0FBQUEsUUFDM0MsQ0FBTztBQUNELFlBQUksV0FBVzJCLE9BQU0sYUFBYSxTQUFTLGVBQWUsY0FBYyxDQUFDLEtBQUssSUFBSTtBQUNsRixjQUFNLFNBQVMsVUFBVTtBQUFBLFVBQ3ZCLFFBQVE7QUFBQSxVQUNSO0FBQUEsUUFDUixDQUFPO0FBQ0QsY0FBTSxXQUFZO0FBQUEsTUFDbkI7QUFDRCxZQUFNLGFBQWEsV0FBWTtBQUM3QixZQUFJLGNBQWMsTUFBTSxNQUFNO0FBQzlCLGNBQU0sU0FBU0EsT0FBTSxhQUFhLE1BQU0sTUFBTSxTQUFTLElBQUksSUFBSSxHQUFHO0FBQUEsVUFDaEUsUUFBUTtBQUFBLFVBQ1IsZUFBZTtBQUFBLFFBQ3ZCLENBQU87QUFBQSxNQUNGO0FBQ0QsWUFBTSxXQUFXLFdBQVk7QUFDM0IsWUFBSSxVQUFVLE1BQU0sTUFBTTtBQUMxQixZQUFJLGNBQWMsTUFBTSxNQUFNO0FBQzlCLFlBQUksb0JBQW9CLFlBQVksWUFBWSxTQUFTLENBQUM7QUFDMUQsWUFBSSxnQkFBZ0IsWUFBWSxNQUFNLEdBQUcsWUFBWSxTQUFTLENBQUM7QUFDL0QsWUFBSSxXQUFXQSxPQUFNLGFBQWEsU0FBUyxlQUFlLGNBQWMsQ0FBQyxLQUFLLElBQUk7QUFDbEYsWUFBSSxtQkFBbUI7QUFDckIsZ0JBQU0sU0FBUyxVQUFVO0FBQUEsWUFDdkIsUUFBUTtBQUFBLFlBQ1IsY0FBYztBQUFBLFVBQ3hCLENBQVM7QUFBQSxRQUNUO0FBQUEsTUFDSztBQUNELFlBQU0scUJBQXFCLFNBQVUsZUFBZTtBQUNsRCxlQUFPdWMsb0JBQW1CLE1BQU0sTUFBTSx5QkFBeUIsYUFBYTtBQUFBLE1BQzdFO0FBQ0QsWUFBTSw2QkFBNkIsV0FBWTtBQUM3QyxlQUFPZ1osOEJBQTZCSCx5QkFBd0IsTUFBTSxPQUFPLE1BQU0sTUFBTSxXQUFXLEdBQUcsTUFBTSxhQUFhLFFBQVEsQ0FBQztBQUFBLE1BQ2hJO0FBQ0QsWUFBTSxXQUFXLFdBQVk7QUFDM0IsZUFBTyxNQUFNLE1BQU07QUFBQSxNQUNwQjtBQUNELFlBQU0sS0FBSyxXQUFZO0FBQ3JCLGlCQUFTLE9BQU8sVUFBVSxRQUFRLE9BQU8sSUFBSSxNQUFNLElBQUksR0FBRyxPQUFPLEdBQUcsT0FBTyxNQUFNLFFBQVE7QUFDdkYsZUFBSyxJQUFJLElBQUksVUFBVSxJQUFJO0FBQUEsUUFDbkM7QUFDTSxlQUFPcDFCLE9BQU0sV0FBVyxNQUFNLFFBQVEsQ0FBQyxNQUFNLE1BQU0sZUFBZSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQUEsTUFDakY7QUFDRCxZQUFNLGlCQUFpQixTQUFVTyxPQUFNO0FBQ3JDLGVBQU82YSxnQkFBZSxNQUFNLE9BQU83YSxLQUFJO0FBQUEsTUFDeEM7QUFDRCxZQUFNLGlCQUFpQixTQUFVQSxPQUFNO0FBQ3JDLGVBQU82YixnQkFBZSxNQUFNLE9BQU83YixLQUFJO0FBQUEsTUFDeEM7QUFDRCxZQUFNLFlBQVksU0FBVSxLQUFLLE9BQU87QUFDdEMsWUFBSSxXQUFXLE1BQU0sTUFBTTtBQUMzQixZQUFJLE9BQU9zMEIsZUFBYyxHQUFHLEVBQUUsT0FBTyxRQUFRO0FBQzdDLGFBQUssWUFBWTtBQUNqQixZQUFJblksVUFBUyxNQUFNLE1BQU0sT0FBTyxHQUFHO0FBQ25DLGVBQU9BLFVBQVNBLFFBQU8sTUFBTSxLQUFLLElBQUk7QUFBQSxNQUN2QztBQUNELFlBQU0sZ0JBQWdCLFNBQVUsS0FBSyxPQUFPO0FBQzFDLFlBQUksdUJBQXVCO0FBQzNCLGdCQUFRLHlCQUF5Qix5QkFBeUIsTUFBTSxNQUFNLFlBQVksR0FBRyxPQUFPLFFBQVEsMEJBQTBCLFNBQVMsU0FBUyxzQkFBc0IsS0FBSyx3QkFBd0IsS0FBSztBQUFBLE1BQ3pNO0FBQ0QsWUFBTSxlQUFlLFNBQVUsU0FBUztBQUN0QyxlQUFPLEdBQUcsT0FBTyxNQUFNLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxPQUFPLE9BQU87QUFBQSxNQUNqRTtBQUNELFlBQU0sZ0JBQWdCLFdBQVk7QUFDaEMsZUFBTzFjLE9BQU0sa0JBQWtCLE1BQU0sS0FBSztBQUFBLE1BQzNDO0FBQ0QsWUFBTSwwQkFBMEIsV0FBWTtBQUMxQyxlQUFPbzFCLHlCQUF3QixNQUFNLE9BQU8sTUFBTSxNQUFNLFdBQVc7QUFBQSxNQUNwRTtBQUNELFlBQU0sd0JBQXdCLFdBQVk7QUFDeEMsZUFBTyxNQUFNLE1BQU0sYUFBYSxNQUFNLHdCQUF5QixJQUFHLENBQUU7QUFBQSxNQUNyRTtBQUNELFlBQU0sd0JBQXdCLFdBQVk7QUFDeEMsZUFBT0UsNkNBQTRDLE1BQU0seUJBQXlCO0FBQUEsTUFDbkY7QUFDRCxZQUFNLHNCQUFzQixXQUFZO0FBQ3RDLGVBQU8sTUFBTSxNQUFNLGFBQWEsTUFBTSxzQkFBdUIsSUFBRyxDQUFFO0FBQUEsTUFDbkU7QUFDRCxZQUFNLGVBQWUsU0FBVSxPQUFPLFlBQVk7QUFDaEQsY0FBTSxTQUFTO0FBQUEsVUFDYixlQUFlcnBCLGVBQWM7QUFBQSxZQUMzQjtBQUFBLFVBQ1YsR0FBVyxVQUFVO0FBQUEsUUFDckIsQ0FBTztBQUFBLE1BQ0Y7QUFDRCxZQUFNLGtCQUFrQixTQUFVLE9BQU87QUFDdkMsWUFBSSxNQUFNLFdBQVcsR0FBRztBQUN0QjtBQUFBLFFBQ1I7QUFDTSxjQUFNLGdCQUFpQjtBQUN2QixjQUFNLGVBQWdCO0FBQ3RCLGNBQU0sV0FBWTtBQUFBLE1BQ25CO0FBQ0QsWUFBTSxrQkFBa0IsU0FBVSxPQUFPO0FBQ3ZDLGNBQU0sbUJBQW1CO0FBQUEsTUFDMUI7QUFDRCxZQUFNLHFCQUFxQixTQUFVLE9BQU87QUFFMUMsWUFBSSxNQUFNLGtCQUFrQjtBQUMxQjtBQUFBLFFBQ1I7QUFDTSxZQUFJLGtCQUFrQixNQUFNLE1BQU07QUFDbEMsWUFBSSxDQUFDLE1BQU0sTUFBTSxXQUFXO0FBQzFCLGNBQUksaUJBQWlCO0FBQ25CLGtCQUFNLGlCQUFpQjtBQUFBLFVBQ2pDO0FBQ1EsZ0JBQU0sV0FBWTtBQUFBLFFBQ25CLFdBQVUsQ0FBQyxNQUFNLE1BQU0sWUFBWTtBQUNsQyxjQUFJLGlCQUFpQjtBQUNuQixrQkFBTSxTQUFTLE9BQU87QUFBQSxVQUNoQztBQUFBLFFBQ0EsT0FBYTtBQUNMLGNBQUksTUFBTSxPQUFPLFlBQVksV0FBVyxNQUFNLE9BQU8sWUFBWSxZQUFZO0FBQzNFLGtCQUFNLFlBQWE7QUFBQSxVQUM3QjtBQUFBLFFBQ0E7QUFDTSxZQUFJLE1BQU0sT0FBTyxZQUFZLFdBQVcsTUFBTSxPQUFPLFlBQVksWUFBWTtBQUMzRSxnQkFBTSxlQUFnQjtBQUFBLFFBQzlCO0FBQUEsTUFDSztBQUNELFlBQU0sK0JBQStCLFNBQVUsT0FBTztBQUVwRCxZQUFJLFNBQVMsTUFBTSxTQUFTLGVBQWUsTUFBTSxXQUFXLEdBQUc7QUFDN0Q7QUFBQSxRQUNSO0FBQ00sWUFBSSxNQUFNLE1BQU0sV0FBWTtBQUM1QixZQUFJLGVBQWUsTUFBTSxPQUN2QixVQUFVLGFBQWEsU0FDdkIsYUFBYSxhQUFhO0FBQzVCLGNBQU0sV0FBWTtBQUNsQixZQUFJLFlBQVk7QUFDZCxnQkFBTSxTQUFTO0FBQUEsWUFDYiwwQkFBMEIsQ0FBQztBQUFBLFVBQ3JDLENBQVM7QUFDRCxnQkFBTSxZQUFhO0FBQUEsUUFDM0IsT0FBYTtBQUNMLGdCQUFNLFNBQVMsT0FBTztBQUFBLFFBQzlCO0FBQ00sY0FBTSxlQUFnQjtBQUFBLE1BQ3ZCO0FBQ0QsWUFBTSw0QkFBNEIsU0FBVSxPQUFPO0FBRWpELFlBQUksU0FBUyxNQUFNLFNBQVMsZUFBZSxNQUFNLFdBQVcsR0FBRztBQUM3RDtBQUFBLFFBQ1I7QUFDTSxjQUFNLFdBQVk7QUFDbEIsY0FBTSxlQUFnQjtBQUN0QixjQUFNLGlCQUFpQjtBQUN2QixZQUFJLE1BQU0sU0FBUyxZQUFZO0FBQzdCLGdCQUFNLFdBQVk7QUFBQSxRQUMxQixPQUFhO0FBQ0wscUJBQVcsV0FBWTtBQUNyQixtQkFBTyxNQUFNLFdBQVk7QUFBQSxVQUNuQyxDQUFTO0FBQUEsUUFDVDtBQUFBLE1BQ0s7QUFDRCxZQUFNLFdBQVcsU0FBVSxPQUFPO0FBQ2hDLFlBQUksT0FBTyxNQUFNLE1BQU0sc0JBQXNCLFdBQVc7QUFDdEQsY0FBSSxNQUFNLGtCQUFrQixlQUFlak0sT0FBTSxrQkFBa0IsTUFBTSxNQUFNLEdBQUc7QUFDaEYsa0JBQU0sTUFBTSxZQUFhO0FBQUEsVUFDbkM7QUFBQSxRQUNPLFdBQVUsT0FBTyxNQUFNLE1BQU0sc0JBQXNCLFlBQVk7QUFDOUQsY0FBSSxNQUFNLE1BQU0sa0JBQWtCLEtBQUssR0FBRztBQUN4QyxrQkFBTSxNQUFNLFlBQWE7QUFBQSxVQUNuQztBQUFBLFFBQ0E7QUFBQSxNQUNLO0FBQ0QsWUFBTSxxQkFBcUIsV0FBWTtBQUNyQyxjQUFNLGNBQWM7QUFBQSxNQUNyQjtBQUNELFlBQU0sbUJBQW1CLFdBQVk7QUFDbkMsY0FBTSxjQUFjO0FBQUEsTUFDckI7QUFDRCxZQUFNLGVBQWUsU0FBVWlYLFFBQU87QUFDcEMsWUFBSSxVQUFVQSxPQUFNO0FBQ3BCLFlBQUksUUFBUSxXQUFXLFFBQVEsS0FBSyxDQUFDO0FBQ3JDLFlBQUksQ0FBQyxPQUFPO0FBQ1Y7QUFBQSxRQUNSO0FBQ00sY0FBTSxnQkFBZ0IsTUFBTTtBQUM1QixjQUFNLGdCQUFnQixNQUFNO0FBQzVCLGNBQU0saUJBQWlCO0FBQUEsTUFDeEI7QUFDRCxZQUFNLGNBQWMsU0FBVThNLFFBQU87QUFDbkMsWUFBSSxVQUFVQSxPQUFNO0FBQ3BCLFlBQUksUUFBUSxXQUFXLFFBQVEsS0FBSyxDQUFDO0FBQ3JDLFlBQUksQ0FBQyxPQUFPO0FBQ1Y7QUFBQSxRQUNSO0FBQ00sWUFBSSxTQUFTLEtBQUssSUFBSSxNQUFNLFVBQVUsTUFBTSxhQUFhO0FBQ3pELFlBQUksU0FBUyxLQUFLLElBQUksTUFBTSxVQUFVLE1BQU0sYUFBYTtBQUN6RCxZQUFJLGdCQUFnQjtBQUNwQixjQUFNLGlCQUFpQixTQUFTLGlCQUFpQixTQUFTO0FBQUEsTUFDM0Q7QUFDRCxZQUFNLGFBQWEsU0FBVSxPQUFPO0FBQ2xDLFlBQUksTUFBTSxlQUFnQjtBQUsxQixZQUFJLE1BQU0sY0FBYyxDQUFDLE1BQU0sV0FBVyxTQUFTLE1BQU0sTUFBTSxLQUFLLE1BQU0sZUFBZSxDQUFDLE1BQU0sWUFBWSxTQUFTLE1BQU0sTUFBTSxHQUFHO0FBQ2xJLGdCQUFNLFVBQVc7QUFBQSxRQUN6QjtBQUdNLGNBQU0sZ0JBQWdCO0FBQ3RCLGNBQU0sZ0JBQWdCO0FBQUEsTUFDdkI7QUFDRCxZQUFNLG9CQUFvQixTQUFVLE9BQU87QUFDekMsWUFBSSxNQUFNLGVBQWdCO0FBQzFCLGNBQU0sbUJBQW1CLEtBQUs7QUFBQSxNQUMvQjtBQUNELFlBQU0sMkJBQTJCLFNBQVUsT0FBTztBQUNoRCxZQUFJLE1BQU0sZUFBZ0I7QUFDMUIsY0FBTSwwQkFBMEIsS0FBSztBQUFBLE1BQ3RDO0FBQ0QsWUFBTSw4QkFBOEIsU0FBVSxPQUFPO0FBQ25ELFlBQUksTUFBTSxlQUFnQjtBQUMxQixjQUFNLDZCQUE2QixLQUFLO0FBQUEsTUFDekM7QUFDRCxZQUFNLG9CQUFvQixTQUFVLE9BQU87QUFDekMsWUFBSSxpQkFBaUIsTUFBTSxNQUFNO0FBQ2pDLFlBQUksYUFBYSxNQUFNLGNBQWM7QUFDckMsY0FBTSxTQUFTO0FBQUEsVUFDYiwwQkFBMEI7QUFBQSxRQUNsQyxDQUFPO0FBQ0QsY0FBTSxjQUFjLFlBQVk7QUFBQSxVQUM5QixRQUFRO0FBQUEsVUFDUjtBQUFBLFFBQ1IsQ0FBTztBQUNELFlBQUksQ0FBQyxNQUFNLE1BQU0sWUFBWTtBQUMzQixnQkFBTSxXQUFZO0FBQUEsUUFDMUI7QUFBQSxNQUNLO0FBQ0QsWUFBTSxlQUFlLFNBQVUsT0FBTztBQUNwQyxZQUFJLE1BQU0sTUFBTSxTQUFTO0FBQ3ZCLGdCQUFNLE1BQU0sUUFBUSxLQUFLO0FBQUEsUUFDakM7QUFDTSxjQUFNLFNBQVM7QUFBQSxVQUNiLDBCQUEwQjtBQUFBLFVBQzFCLFdBQVc7QUFBQSxRQUNuQixDQUFPO0FBQ0QsWUFBSSxNQUFNLGtCQUFrQixNQUFNLE1BQU0saUJBQWlCO0FBQ3ZELGdCQUFNLFNBQVMsT0FBTztBQUFBLFFBQzlCO0FBQ00sY0FBTSxpQkFBaUI7QUFBQSxNQUN4QjtBQUNELFlBQU0sY0FBYyxTQUFVLE9BQU87QUFDbkMsWUFBSSxpQkFBaUIsTUFBTSxNQUFNO0FBQ2pDLFlBQUksTUFBTSxlQUFlLE1BQU0sWUFBWSxTQUFTLFNBQVMsYUFBYSxHQUFHO0FBQzNFLGdCQUFNLFNBQVMsTUFBTztBQUN0QjtBQUFBLFFBQ1I7QUFDTSxZQUFJLE1BQU0sTUFBTSxRQUFRO0FBQ3RCLGdCQUFNLE1BQU0sT0FBTyxLQUFLO0FBQUEsUUFDaEM7QUFDTSxjQUFNLGNBQWMsSUFBSTtBQUFBLFVBQ3RCLFFBQVE7QUFBQSxVQUNSO0FBQUEsUUFDUixDQUFPO0FBQ0QsY0FBTSxZQUFhO0FBQ25CLGNBQU0sU0FBUztBQUFBLFVBQ2IsY0FBYztBQUFBLFVBQ2QsV0FBVztBQUFBLFFBQ25CLENBQU87QUFBQSxNQUNGO0FBQ0QsWUFBTSxnQkFBZ0IsU0FBVSxlQUFlO0FBQzdDLFlBQUksTUFBTSxvQkFBb0IsTUFBTSxNQUFNLGtCQUFrQixlQUFlO0FBQ3pFO0FBQUEsUUFDUjtBQUNNLFlBQUluZixXQUFVLE1BQU0sb0JBQXFCO0FBQ3pDLFlBQUkscUJBQXFCQSxTQUFRLFFBQVEsYUFBYTtBQUN0RCxjQUFNLFNBQVM7QUFBQSxVQUNiO0FBQUEsVUFDQSxpQkFBaUIscUJBQXFCLEtBQUssTUFBTSxtQkFBbUIsYUFBYSxJQUFJO0FBQUEsUUFDN0YsQ0FBTztBQUFBLE1BQ0Y7QUFDRCxZQUFNLDRCQUE0QixXQUFZO0FBQzVDLGVBQU80WCwyQkFBMEIsTUFBTSxLQUFLO0FBQUEsTUFDN0M7QUFDRCxZQUFNLG9CQUFvQixTQUFVL2MsSUFBRztBQUNyQyxRQUFBQSxHQUFFLGVBQWdCO0FBQ2xCLFFBQUFBLEdBQUUsZ0JBQWlCO0FBQ25CLGNBQU0sTUFBTztBQUFBLE1BQ2Q7QUFDRCxZQUFNLFlBQVksU0FBVSxPQUFPO0FBQ2pDLFlBQUksZUFBZSxNQUFNLE9BQ3ZCLFVBQVUsYUFBYSxTQUN2Qix3QkFBd0IsYUFBYSx1QkFDckMsb0JBQW9CLGFBQWEsbUJBQ2pDLGFBQWEsYUFBYSxZQUMxQixjQUFjLGFBQWEsYUFDM0I2WSxjQUFhLGFBQWEsWUFDMUIsYUFBYSxhQUFhLFlBQzFCLFlBQVksYUFBYSxXQUN6QixrQkFBa0IsYUFBYSxpQkFDL0Isa0JBQWtCLGFBQWE7QUFDakMsWUFBSSxjQUFjLE1BQU0sT0FDdEIsZ0JBQWdCLFlBQVksZUFDNUIsZUFBZSxZQUFZLGNBQzNCLGNBQWMsWUFBWTtBQUM1QixZQUFJQSxZQUFZO0FBQ2hCLFlBQUksT0FBTyxjQUFjLFlBQVk7QUFDbkMsb0JBQVUsS0FBSztBQUNmLGNBQUksTUFBTSxrQkFBa0I7QUFDMUI7QUFBQSxVQUNWO0FBQUEsUUFDQTtBQUdNLGNBQU0sbUJBQW1CO0FBQ3pCLGdCQUFRLE1BQU0sS0FBRztBQUFBLFVBQ2YsS0FBSztBQUNILGdCQUFJLENBQUMsV0FBVyxXQUFZO0FBQzVCLGtCQUFNLFdBQVcsVUFBVTtBQUMzQjtBQUFBLFVBQ0YsS0FBSztBQUNILGdCQUFJLENBQUMsV0FBVyxXQUFZO0FBQzVCLGtCQUFNLFdBQVcsTUFBTTtBQUN2QjtBQUFBLFVBQ0YsS0FBSztBQUFBLFVBQ0wsS0FBSztBQUNILGdCQUFJLFdBQVk7QUFDaEIsZ0JBQUksY0FBYztBQUNoQixvQkFBTSxZQUFZLFlBQVk7QUFBQSxZQUMxQyxPQUFpQjtBQUNMLGtCQUFJLENBQUMsc0JBQXVCO0FBQzVCLGtCQUFJLFNBQVM7QUFDWCxzQkFBTSxTQUFVO0FBQUEsY0FDakIsV0FBVSxhQUFhO0FBQ3RCLHNCQUFNLFdBQVk7QUFBQSxjQUNoQztBQUFBLFlBQ0E7QUFDVTtBQUFBLFVBQ0YsS0FBSztBQUNILGdCQUFJLE1BQU0sWUFBYTtBQUN2QixnQkFBSSxNQUFNLFlBQVksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUM7QUFBQTtBQUFBLFlBRzFELG1CQUFtQixNQUFNLGlCQUFpQixlQUFlLFdBQVcsR0FBRztBQUNyRTtBQUFBLFlBQ1o7QUFDVSxrQkFBTSxhQUFhLGFBQWE7QUFDaEM7QUFBQSxVQUNGLEtBQUs7QUFDSCxnQkFBSSxNQUFNLFlBQVksS0FBSztBQUd6QjtBQUFBLFlBQ1o7QUFDVSxnQkFBSSxZQUFZO0FBQ2Qsa0JBQUksQ0FBQyxjQUFlO0FBQ3BCLGtCQUFJLE1BQU0sWUFBYTtBQUN2QixvQkFBTSxhQUFhLGFBQWE7QUFDaEM7QUFBQSxZQUNaO0FBQ1U7QUFBQSxVQUNGLEtBQUs7QUFDSCxnQkFBSSxZQUFZO0FBQ2Qsb0JBQU0sU0FBUztBQUFBLGdCQUNiLDBCQUEwQjtBQUFBLGNBQ3hDLENBQWE7QUFDRCxvQkFBTSxjQUFjLElBQUk7QUFBQSxnQkFDdEIsUUFBUTtBQUFBLGdCQUNSLGdCQUFnQjtBQUFBLGNBQzlCLENBQWE7QUFDRCxvQkFBTSxZQUFhO0FBQUEsWUFDL0IsV0FBcUIsZUFBZSxtQkFBbUI7QUFDM0Msb0JBQU0sV0FBWTtBQUFBLFlBQzlCO0FBQ1U7QUFBQSxVQUNGLEtBQUs7QUFFSCxnQkFBSSxZQUFZO0FBQ2Q7QUFBQSxZQUNaO0FBQ1UsZ0JBQUksQ0FBQyxZQUFZO0FBQ2Ysb0JBQU0sU0FBUyxPQUFPO0FBQ3RCO0FBQUEsWUFDWjtBQUNVLGdCQUFJLENBQUMsY0FBZTtBQUNwQixrQkFBTSxhQUFhLGFBQWE7QUFDaEM7QUFBQSxVQUNGLEtBQUs7QUFDSCxnQkFBSSxZQUFZO0FBQ2Qsb0JBQU0sWUFBWSxJQUFJO0FBQUEsWUFDbEMsT0FBaUI7QUFDTCxvQkFBTSxTQUFTLE1BQU07QUFBQSxZQUNqQztBQUNVO0FBQUEsVUFDRixLQUFLO0FBQ0gsZ0JBQUksWUFBWTtBQUNkLG9CQUFNLFlBQVksTUFBTTtBQUFBLFlBQ3BDLE9BQWlCO0FBQ0wsb0JBQU0sU0FBUyxPQUFPO0FBQUEsWUFDbEM7QUFDVTtBQUFBLFVBQ0YsS0FBSztBQUNILGdCQUFJLENBQUMsV0FBWTtBQUNqQixrQkFBTSxZQUFZLFFBQVE7QUFDMUI7QUFBQSxVQUNGLEtBQUs7QUFDSCxnQkFBSSxDQUFDLFdBQVk7QUFDakIsa0JBQU0sWUFBWSxVQUFVO0FBQzVCO0FBQUEsVUFDRixLQUFLO0FBQ0gsZ0JBQUksQ0FBQyxXQUFZO0FBQ2pCLGtCQUFNLFlBQVksT0FBTztBQUN6QjtBQUFBLFVBQ0YsS0FBSztBQUNILGdCQUFJLENBQUMsV0FBWTtBQUNqQixrQkFBTSxZQUFZLE1BQU07QUFDeEI7QUFBQSxVQUNGO0FBQ0U7QUFBQSxRQUNWO0FBQ00sY0FBTSxlQUFnQjtBQUFBLE1BQ3ZCO0FBQ0QsWUFBTSxNQUFNLGlCQUFpQixtQkFBbUIsTUFBTSxNQUFNLGNBQWMsRUFBRXNkO0FBQzVFLFlBQU0sTUFBTSxjQUFjNTFCLE9BQU0sV0FBVyxPQUFPLEtBQUs7QUFFdkQsVUFBSSxPQUFPLGNBQWMsTUFBTSxNQUFNLFlBQVksUUFBUTtBQUN2RCxZQUFJLDBCQUEwQixNQUFNLDJCQUE0QjtBQUNoRSxZQUFJLG1CQUFtQixNQUFNLHNCQUF1QjtBQUNwRCxZQUFJLGNBQWMsaUJBQWlCLFFBQVEsTUFBTSxNQUFNLFlBQVksQ0FBQyxDQUFDO0FBQ3JFLGNBQU0sTUFBTSwwQkFBMEI7QUFDdEMsY0FBTSxNQUFNLGdCQUFnQixpQkFBaUIsV0FBVztBQUN4RCxjQUFNLE1BQU0sa0JBQWtCdWMsb0JBQW1CLHlCQUF5QixpQkFBaUIsV0FBVyxDQUFDO0FBQUEsTUFDN0c7QUFDSSxhQUFPO0FBQUEsSUFDWDtBQUNFLElBQUErUyxjQUFhN1MsU0FBUSxDQUFDO0FBQUEsTUFDcEIsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLG9CQUFvQjtBQUNsQyxhQUFLLDBCQUEyQjtBQUNoQyxhQUFLLHNCQUF1QjtBQUM1QixZQUFJLEtBQUssTUFBTSxxQkFBcUIsWUFBWSxTQUFTLGtCQUFrQjtBQUV6RSxtQkFBUyxpQkFBaUIsVUFBVSxLQUFLLFVBQVUsSUFBSTtBQUFBLFFBQy9EO0FBQ00sWUFBSSxLQUFLLE1BQU0sV0FBVztBQUN4QixlQUFLLFdBQVk7QUFBQSxRQUN6QjtBQUdNLFlBQUksS0FBSyxNQUFNLGNBQWMsS0FBSyxNQUFNLGlCQUFpQixLQUFLLGVBQWUsS0FBSyxrQkFBa0I7QUFDbEcsVUFBQXpjLE9BQU0sZUFBZSxLQUFLLGFBQWEsS0FBSyxnQkFBZ0I7QUFBQSxRQUNwRTtBQUFBLE1BQ0E7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyxtQkFBbUIsV0FBVztBQUM1QyxZQUFJLGVBQWUsS0FBSyxPQUN0QnNZLGNBQWEsYUFBYSxZQUMxQixhQUFhLGFBQWE7QUFDNUIsWUFBSSxZQUFZLEtBQUssTUFBTTtBQUMzQjtBQUFBO0FBQUEsVUFFQSxhQUFhLENBQUNBLGVBQWMsVUFBVTtBQUFBLFVBRXRDLGFBQWEsY0FBYyxDQUFDLFVBQVU7QUFBQSxVQUFZO0FBQ2hELGVBQUssV0FBWTtBQUFBLFFBQ3pCO0FBQ00sWUFBSSxhQUFhQSxlQUFjLENBQUMsVUFBVSxZQUFZO0FBR3BELGVBQUssU0FBUztBQUFBLFlBQ1osV0FBVztBQUFBLFVBQ3JCLEdBQVcsS0FBSyxXQUFXO0FBQUEsUUFDM0IsV0FBaUIsQ0FBQyxhQUFhLENBQUNBLGVBQWMsVUFBVSxjQUFjLEtBQUssYUFBYSxTQUFTLGVBQWU7QUFHeEcsZUFBSyxTQUFTO0FBQUEsWUFDWixXQUFXO0FBQUEsVUFDckIsQ0FBUztBQUFBLFFBQ1Q7QUFHTSxZQUFJLEtBQUssZUFBZSxLQUFLLG9CQUFvQixLQUFLLCtCQUErQjtBQUNuRixVQUFBdFksT0FBTSxlQUFlLEtBQUssYUFBYSxLQUFLLGdCQUFnQjtBQUM1RCxlQUFLLGdDQUFnQztBQUFBLFFBQzdDO0FBQUEsTUFDQTtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLHVCQUF1QjtBQUNyQyxhQUFLLHlCQUEwQjtBQUMvQixhQUFLLHFCQUFzQjtBQUMzQixpQkFBUyxvQkFBb0IsVUFBVSxLQUFLLFVBQVUsSUFBSTtBQUFBLE1BQ2hFO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFLQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsYUFBYTtBQUMzQixhQUFLLE1BQU0sV0FBWTtBQUFBLE1BQzdCO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsY0FBYztBQUM1QixhQUFLLGNBQWMsSUFBSTtBQUFBLFVBQ3JCLFFBQVE7QUFBQSxVQUNSLGdCQUFnQixLQUFLLE1BQU07QUFBQSxRQUNuQyxDQUFPO0FBQ0QsYUFBSyxNQUFNLFlBQWE7QUFBQSxNQUM5QjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLGNBQWMsVUFBVSxZQUFZO0FBQ2xELGFBQUssTUFBTSxjQUFjLFVBQVUsVUFBVTtBQUFBLE1BQ25EO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFLQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsYUFBYTtBQUMzQixZQUFJLENBQUMsS0FBSyxTQUFVO0FBQ3BCLGFBQUssU0FBUyxNQUFPO0FBQUEsTUFDM0I7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyxZQUFZO0FBQzFCLFlBQUksQ0FBQyxLQUFLLFNBQVU7QUFDcEIsYUFBSyxTQUFTLEtBQU07QUFBQSxNQUMxQjtBQUFBO0FBQUEsSUFHQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsU0FBUyxhQUFhO0FBQ3BDLFlBQUksU0FBUztBQUNiLFlBQUksZUFBZSxLQUFLLE9BQ3RCLGNBQWMsYUFBYSxhQUMzQixZQUFZLGFBQWE7QUFDM0IsWUFBSSxtQkFBbUIsS0FBSyxzQkFBdUI7QUFDbkQsWUFBSSxjQUFjLGdCQUFnQixVQUFVLElBQUksaUJBQWlCLFNBQVM7QUFDMUUsWUFBSSxDQUFDLEtBQUssTUFBTSxTQUFTO0FBQ3ZCLGNBQUksZ0JBQWdCLGlCQUFpQixRQUFRLFlBQVksQ0FBQyxDQUFDO0FBQzNELGNBQUksZ0JBQWdCLElBQUk7QUFDdEIsMEJBQWM7QUFBQSxVQUN4QjtBQUFBLFFBQ0E7QUFHTSxhQUFLLGdDQUFnQyxFQUFFLGFBQWEsS0FBSztBQUN6RCxhQUFLLFNBQVM7QUFBQSxVQUNaLDBCQUEwQjtBQUFBLFVBQzFCLGNBQWM7QUFBQSxVQUNkLGVBQWUsaUJBQWlCLFdBQVc7QUFBQSxVQUMzQyxpQkFBaUIsS0FBSyxtQkFBbUIsaUJBQWlCLFdBQVcsQ0FBQztBQUFBLFFBQzlFLEdBQVMsV0FBWTtBQUNiLGlCQUFPLE9BQU8sV0FBWTtBQUFBLFFBQ2xDLENBQU87QUFBQSxNQUNQO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsV0FBVyxXQUFXO0FBQ3BDLFlBQUksZUFBZSxLQUFLLE9BQ3RCLGNBQWMsYUFBYSxhQUMzQixlQUFlLGFBQWE7QUFHOUIsWUFBSSxDQUFDLEtBQUssTUFBTSxRQUFTO0FBQ3pCLGFBQUssU0FBUztBQUFBLFVBQ1osZUFBZTtBQUFBLFFBQ3ZCLENBQU87QUFDRCxZQUFJLGVBQWUsWUFBWSxRQUFRLFlBQVk7QUFDbkQsWUFBSSxDQUFDLGNBQWM7QUFDakIseUJBQWU7QUFBQSxRQUN2QjtBQUNNLFlBQUksWUFBWSxZQUFZLFNBQVM7QUFDckMsWUFBSSxZQUFZO0FBQ2hCLFlBQUksQ0FBQyxZQUFZLE9BQVE7QUFDekIsZ0JBQVEsV0FBUztBQUFBLFVBQ2YsS0FBSztBQUNILGdCQUFJLGlCQUFpQixHQUFHO0FBRXRCLDBCQUFZO0FBQUEsWUFDeEIsV0FBcUIsaUJBQWlCLElBQUk7QUFFOUIsMEJBQVk7QUFBQSxZQUN4QixPQUFpQjtBQUNMLDBCQUFZLGVBQWU7QUFBQSxZQUN2QztBQUNVO0FBQUEsVUFDRixLQUFLO0FBQ0gsZ0JBQUksZUFBZSxNQUFNLGVBQWUsV0FBVztBQUNqRCwwQkFBWSxlQUFlO0FBQUEsWUFDdkM7QUFDVTtBQUFBLFFBQ1Y7QUFDTSxhQUFLLFNBQVM7QUFBQSxVQUNaLGVBQWUsY0FBYztBQUFBLFVBQzdCLGNBQWMsWUFBWSxTQUFTO0FBQUEsUUFDM0MsQ0FBTztBQUFBLE1BQ1A7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyxjQUFjO0FBQzVCLFlBQUksWUFBWSxVQUFVLFNBQVMsS0FBSyxVQUFVLENBQUMsTUFBTSxTQUFZLFVBQVUsQ0FBQyxJQUFJO0FBQ3BGLFlBQUksV0FBVyxLQUFLLE1BQU07QUFDMUIsWUFBSSxnQkFBZ0IsS0FBSyxNQUFNO0FBQy9CLFlBQUk0RSxXQUFVLEtBQUssb0JBQXFCO0FBQ3hDLFlBQUksQ0FBQ0EsU0FBUSxPQUFRO0FBQ3JCLFlBQUksWUFBWTtBQUNoQixZQUFJLGVBQWVBLFNBQVEsUUFBUSxhQUFhO0FBQ2hELFlBQUksQ0FBQyxlQUFlO0FBQ2xCLHlCQUFlO0FBQUEsUUFDdkI7QUFDTSxZQUFJLGNBQWMsTUFBTTtBQUN0QixzQkFBWSxlQUFlLElBQUksZUFBZSxJQUFJQSxTQUFRLFNBQVM7QUFBQSxRQUMzRSxXQUFpQixjQUFjLFFBQVE7QUFDL0IsdUJBQWEsZUFBZSxLQUFLQSxTQUFRO0FBQUEsUUFDakQsV0FBaUIsY0FBYyxVQUFVO0FBQ2pDLHNCQUFZLGVBQWU7QUFDM0IsY0FBSSxZQUFZLEVBQUcsYUFBWTtBQUFBLFFBQ3ZDLFdBQWlCLGNBQWMsWUFBWTtBQUNuQyxzQkFBWSxlQUFlO0FBQzNCLGNBQUksWUFBWUEsU0FBUSxTQUFTLEVBQUcsYUFBWUEsU0FBUSxTQUFTO0FBQUEsUUFDekUsV0FBaUIsY0FBYyxRQUFRO0FBQy9CLHNCQUFZQSxTQUFRLFNBQVM7QUFBQSxRQUNyQztBQUNNLGFBQUssZ0NBQWdDO0FBQ3JDLGFBQUssU0FBUztBQUFBLFVBQ1osZUFBZUEsU0FBUSxTQUFTO0FBQUEsVUFDaEMsY0FBYztBQUFBLFVBQ2QsaUJBQWlCLEtBQUssbUJBQW1CQSxTQUFRLFNBQVMsQ0FBQztBQUFBLFFBQ25FLENBQU87QUFBQSxNQUNQO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTDtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBS0EsU0FBU3FOLFlBQVc7QUFFbEIsY0FBSSxDQUFDLEtBQUssTUFBTSxPQUFPO0FBQ3JCLG1CQUFPOGlCO0FBQUEsVUFDZjtBQUlNLGNBQUksT0FBTyxLQUFLLE1BQU0sVUFBVSxZQUFZO0FBQzFDLG1CQUFPLEtBQUssTUFBTSxNQUFNQSxhQUFZO0FBQUEsVUFDNUM7QUFHTSxpQkFBTzlvQixlQUFjQSxlQUFjLENBQUUsR0FBRThvQixhQUFZLEdBQUcsS0FBSyxNQUFNLEtBQUs7QUFBQSxRQUM1RTtBQUFBO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsaUJBQWlCO0FBQy9CLFlBQUksYUFBYSxLQUFLLFlBQ3BCLEtBQUssS0FBSyxJQUNWLFlBQVksS0FBSyxXQUNqQixnQkFBZ0IsS0FBSyxlQUNyQjUwQixZQUFXLEtBQUssVUFDaEIsZUFBZSxLQUFLLGNBQ3BCLFdBQVcsS0FBSyxVQUNoQixRQUFRLEtBQUs7QUFDZixZQUFJLFVBQVUsTUFBTSxTQUNsQixRQUFRLE1BQU0sT0FDZHlFLFdBQVUsTUFBTTtBQUNsQixZQUFJLFdBQVcsS0FBSyxTQUFVO0FBQzlCLGVBQU87QUFBQSxVQUNMO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQSxVQUFVekU7QUFBQSxVQUNWO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBLFNBQVN5RTtBQUFBLFVBQ1Q7QUFBQSxVQUNBLGFBQWE7QUFBQSxVQUNiO0FBQUEsVUFDQSxPQUFPLEtBQUssU0FBUTtBQUFBLFFBQ3JCO0FBQUEsTUFDUDtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLFdBQVc7QUFDekIsWUFBSSxjQUFjLEtBQUssTUFBTTtBQUM3QixlQUFPLFlBQVksU0FBUztBQUFBLE1BQ2xDO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsYUFBYTtBQUMzQixlQUFPLENBQUMsQ0FBQyxLQUFLLG9CQUFtQixFQUFHO0FBQUEsTUFDMUM7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyxjQUFjO0FBQzVCLFlBQUksZUFBZSxLQUFLLE9BQ3RCK1gsZUFBYyxhQUFhLGFBQzNCLFVBQVUsYUFBYTtBQUl6QixZQUFJQSxpQkFBZ0IsT0FBVyxRQUFPO0FBQ3RDLGVBQU9BO0FBQUEsTUFDYjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTdEIsa0JBQWlCLFFBQVEsYUFBYTtBQUNwRCxlQUFPNlosbUJBQWtCLEtBQUssT0FBTyxRQUFRLFdBQVc7QUFBQSxNQUM5RDtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLGlCQUFpQixRQUFRLGFBQWE7QUFDcEQsZUFBT0MsbUJBQWtCLEtBQUssT0FBTyxRQUFRLFdBQVc7QUFBQSxNQUM5RDtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLGFBQWEsUUFBUSxZQUFZO0FBQy9DLGVBQU9NLGVBQWMsS0FBSyxPQUFPLFFBQVEsVUFBVTtBQUFBLE1BQ3pEO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsa0JBQWtCbDFCLE9BQU0sU0FBUztBQUMvQyxZQUFJLE9BQU8sS0FBSyxNQUFNLHNCQUFzQixZQUFZO0FBQ3RELGNBQUksY0FBYyxLQUFLLE1BQU07QUFDN0IsY0FBSSxlQUFlLEtBQUssTUFBTTtBQUM5QixpQkFBTyxLQUFLLE1BQU0sa0JBQWtCQSxPQUFNO0FBQUEsWUFDeEM7QUFBQSxZQUNBLFlBQVk7QUFBQSxZQUNaLGFBQWE7QUFBQSxVQUN2QixDQUFTO0FBQUEsUUFDVCxPQUFhO0FBQ0wsaUJBQU8sS0FBSyxlQUFlQSxLQUFJO0FBQUEsUUFDdkM7QUFBQSxNQUNBO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVM0YixrQkFBaUI1YixPQUFNO0FBQ3JDLGVBQU8sS0FBSyxNQUFNLGlCQUFpQkEsS0FBSTtBQUFBLE1BQzdDO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFLQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTDtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBS0EsU0FBUyw0QkFBNEI7QUFDbkMsY0FBSSxZQUFZLFNBQVMsa0JBQWtCO0FBQ3pDLHFCQUFTLGlCQUFpQixvQkFBb0IsS0FBSyxvQkFBb0IsS0FBSztBQUM1RSxxQkFBUyxpQkFBaUIsa0JBQWtCLEtBQUssa0JBQWtCLEtBQUs7QUFBQSxVQUNoRjtBQUFBLFFBQ0E7QUFBQTtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLDJCQUEyQjtBQUN6QyxZQUFJLFlBQVksU0FBUyxxQkFBcUI7QUFDNUMsbUJBQVMsb0JBQW9CLG9CQUFvQixLQUFLLGtCQUFrQjtBQUN4RSxtQkFBUyxvQkFBb0Isa0JBQWtCLEtBQUssZ0JBQWdCO0FBQUEsUUFDNUU7QUFBQSxNQUNBO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTDtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBS0EsU0FBUyx3QkFBd0I7QUFDL0IsY0FBSSxZQUFZLFNBQVMsa0JBQWtCO0FBQ3pDLHFCQUFTLGlCQUFpQixjQUFjLEtBQUssY0FBYyxLQUFLO0FBQ2hFLHFCQUFTLGlCQUFpQixhQUFhLEtBQUssYUFBYSxLQUFLO0FBQzlELHFCQUFTLGlCQUFpQixZQUFZLEtBQUssWUFBWSxLQUFLO0FBQUEsVUFDcEU7QUFBQSxRQUNBO0FBQUE7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyx1QkFBdUI7QUFDckMsWUFBSSxZQUFZLFNBQVMscUJBQXFCO0FBQzVDLG1CQUFTLG9CQUFvQixjQUFjLEtBQUssWUFBWTtBQUM1RCxtQkFBUyxvQkFBb0IsYUFBYSxLQUFLLFdBQVc7QUFDMUQsbUJBQVMsb0JBQW9CLFlBQVksS0FBSyxVQUFVO0FBQUEsUUFDaEU7QUFBQSxNQUNBO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTDtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBSUEsU0FBUyxjQUFjO0FBQ3JCLGNBQUksZUFBZSxLQUFLLE9BQ3RCK1gsY0FBYSxhQUFhLFlBQzFCLGVBQWUsYUFBYSxjQUM1QixVQUFVLGFBQWEsU0FDdkIsYUFBYSxhQUFhLFlBQzFCLFdBQVcsYUFBYSxVQUN4QixPQUFPLGFBQWEsTUFDcEIsYUFBYSxhQUFhLFlBQzFCc0UsWUFBVyxhQUFhO0FBQzFCLGNBQUksc0JBQXNCLEtBQUssY0FBZSxHQUM1QzNDLFNBQVEsb0JBQW9CO0FBQzlCLGNBQUksZUFBZSxLQUFLLE9BQ3RCLGdCQUFnQixhQUFhLGVBQzdCLGdCQUFnQixhQUFhO0FBQy9CLGNBQUksY0FBYyxLQUFLO0FBQ3ZCLGNBQUksS0FBSyxXQUFXLEtBQUssYUFBYSxPQUFPO0FBRzdDLGNBQUksaUJBQWlCaE8sZUFBY0EsZUFBY0EsZUFBYztBQUFBLFlBQzdELHFCQUFxQjtBQUFBLFlBQ3JCLGlCQUFpQjtBQUFBLFlBQ2pCLGlCQUFpQjtBQUFBLFlBQ2pCLHFCQUFxQixLQUFLLE1BQU0sbUJBQW1CO0FBQUEsWUFDbkQsZ0JBQWdCLEtBQUssTUFBTSxjQUFjO0FBQUEsWUFDekMsY0FBYyxLQUFLLE1BQU0sWUFBWTtBQUFBLFlBQ3JDLG1CQUFtQixLQUFLLE1BQU0saUJBQWlCO0FBQUEsWUFDL0MsaUJBQWlCMlE7QUFBQSxZQUNqQixNQUFNO0FBQUEsWUFDTix5QkFBeUIsS0FBSyxnQkFBZ0IsU0FBWSxLQUFLLE1BQU0sbUJBQW1CO0FBQUEsVUFDekYsR0FBRSxjQUFjO0FBQUEsWUFDZixpQkFBaUIsS0FBSyxhQUFhLFNBQVM7QUFBQSxVQUNwRCxDQUFPLEdBQUcsQ0FBQyxnQkFBZ0I7QUFBQSxZQUNuQixpQkFBaUI7QUFBQSxVQUNsQixDQUFBLEdBQUcsS0FBSyxjQUFjLGtCQUFrQixRQUFRLGtCQUFrQixTQUFTLFNBQVMsY0FBYyxZQUFZLHlCQUF5QjtBQUFBLFlBQ3RJLG9CQUFvQixLQUFLLGFBQWEsYUFBYTtBQUFBLFVBQzNELElBQVU7QUFBQSxZQUNGLG9CQUFvQixLQUFLLGFBQWEsYUFBYTtBQUFBLFVBQzNELENBQU87QUFDRCxjQUFJLENBQUMsY0FBYztBQUVqQixtQkFBb0IsaUNBQWlCLGNBQWM2VyxhQUFZdm5CLFVBQVM7QUFBQSxjQUN0RTtBQUFBLGNBQ0EsVUFBVSxLQUFLO0FBQUEsY0FDZixRQUFRLEtBQUs7QUFBQSxjQUNiLFVBQVVsTSxPQUFNO0FBQUEsY0FDaEIsU0FBUyxLQUFLO0FBQUEsY0FDZCxVQUFVc1k7QUFBQSxjQUNWO0FBQUEsY0FDQSxXQUFXO0FBQUEsY0FDWDtBQUFBLGNBQ0EsT0FBTztBQUFBLFlBQ1IsR0FBRSxjQUFjLENBQUM7QUFBQSxVQUMxQjtBQUNNLGlCQUFvQixpQ0FBaUIsY0FBYzJCLFFBQU8vTixVQUFTLENBQUEsR0FBSSxhQUFhO0FBQUEsWUFDbEYsZ0JBQWdCO0FBQUEsWUFDaEIsY0FBYztBQUFBLFlBQ2QsYUFBYTtBQUFBLFlBQ2I7QUFBQSxZQUNBLFVBQVUsS0FBSztBQUFBLFlBQ2YsWUFBWW9NO0FBQUEsWUFDWixVQUFVO0FBQUEsWUFDVixRQUFRLEtBQUs7QUFBQSxZQUNiLFVBQVUsS0FBSztBQUFBLFlBQ2YsU0FBUyxLQUFLO0FBQUEsWUFDZCxZQUFZO0FBQUEsWUFDWjtBQUFBLFlBQ0E7QUFBQSxZQUNBLE1BQU07QUFBQSxZQUNOLE9BQU87QUFBQSxVQUNSLEdBQUUsY0FBYyxDQUFDO0FBQUEsUUFDeEI7QUFBQTtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLDJCQUEyQjtBQUN6QyxZQUFJLFNBQVM7QUFDYixZQUFJLHVCQUF1QixLQUFLLGNBQWUsR0FDN0NnQyxjQUFhLHFCQUFxQixZQUNsQ3VDLHVCQUFzQixxQkFBcUIscUJBQzNDQyxtQkFBa0IscUJBQXFCLGlCQUN2Q0Msb0JBQW1CLHFCQUFxQixrQkFDeENsQyxlQUFjLHFCQUFxQixhQUNuQ0QsZUFBYyxxQkFBcUI7QUFDckMsWUFBSSxjQUFjLEtBQUs7QUFDdkIsWUFBSSxlQUFlLEtBQUssT0FDdEIsMkJBQTJCLGFBQWEsMEJBQ3hDdEMsY0FBYSxhQUFhLFlBQzFCLFVBQVUsYUFBYSxTQUN2QixhQUFhLGFBQWEsWUFDMUIsY0FBYyxhQUFhO0FBQzdCLFlBQUksZUFBZSxLQUFLLE9BQ3RCLGNBQWMsYUFBYSxhQUMzQixlQUFlLGFBQWEsY0FDNUIsWUFBWSxhQUFhO0FBQzNCLFlBQUksQ0FBQyxLQUFLLFNBQVUsS0FBSSxDQUFDLDBCQUEwQjtBQUNqRCxpQkFBTyxhQUFhLE9BQW9CLGlDQUFpQixjQUFjc0MsY0FBYTFPLFVBQVMsQ0FBRSxHQUFFLGFBQWE7QUFBQSxZQUM1RyxLQUFLO0FBQUEsWUFDTCxZQUFZb007QUFBQSxZQUNaO0FBQUEsWUFDQSxZQUFZO0FBQUEsY0FDVixJQUFJLEtBQUssYUFBYSxhQUFhO0FBQUEsWUFDL0M7QUFBQSxVQUNTLENBQUEsR0FBRyxXQUFXO0FBQUEsUUFDdkI7QUFDTSxZQUFJLFNBQVM7QUFDWCxpQkFBTyxZQUFZLElBQUksU0FBVSxLQUFLdFksUUFBTztBQUMzQyxnQkFBSSxrQkFBa0IsUUFBUTtBQUM5QixnQkFBSSxNQUFNLEdBQUcsT0FBTyxPQUFPLGVBQWUsR0FBRyxHQUFHLEdBQUcsRUFBRSxPQUFPLE9BQU8sZUFBZSxHQUFHLENBQUM7QUFDdEYsbUJBQW9CLGlDQUFpQixjQUFjc2EsYUFBWXBPLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxjQUN2RixZQUFZO0FBQUEsZ0JBQ1YsV0FBVzJRO0FBQUEsZ0JBQ1gsT0FBT0M7QUFBQSxnQkFDUCxRQUFRQztBQUFBLGNBQ1Q7QUFBQSxjQUNELFdBQVc7QUFBQSxjQUNYLFlBQVl6RTtBQUFBLGNBQ1o7QUFBQSxjQUNBLE9BQU90WTtBQUFBLGNBQ1AsYUFBYTtBQUFBLGdCQUNYLFNBQVMsU0FBUyxVQUFVO0FBQzFCLHlCQUFPLE9BQU8sWUFBWSxHQUFHO0FBQUEsZ0JBQzlCO0FBQUEsZ0JBQ0QsWUFBWSxTQUFTLGFBQWE7QUFDaEMseUJBQU8sT0FBTyxZQUFZLEdBQUc7QUFBQSxnQkFDOUI7QUFBQSxnQkFDRCxhQUFhLFNBQVMsWUFBWVAsSUFBRztBQUNuQyxrQkFBQUEsR0FBRSxlQUFnQjtBQUFBLGdCQUNsQztBQUFBLGNBQ2E7QUFBQSxjQUNELE1BQU07QUFBQSxZQUNQLENBQUEsR0FBRyxPQUFPLGtCQUFrQixLQUFLLE9BQU8sQ0FBQztBQUFBLFVBQ3BELENBQVM7QUFBQSxRQUNUO0FBQ00sWUFBSSxZQUFZO0FBQ2QsaUJBQU87QUFBQSxRQUNmO0FBQ00sWUFBSSxjQUFjLFlBQVksQ0FBQztBQUMvQixlQUFvQixpQ0FBaUIsY0FBY29iLGNBQWEzTyxVQUFTLENBQUEsR0FBSSxhQUFhO0FBQUEsVUFDeEYsTUFBTTtBQUFBLFVBQ04sWUFBWW9NO0FBQUEsUUFDYixDQUFBLEdBQUcsS0FBSyxrQkFBa0IsYUFBYSxPQUFPLENBQUM7QUFBQSxNQUN0RDtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLHVCQUF1QjtBQUNyQyxZQUFJLHVCQUF1QixLQUFLLGNBQWUsR0FDN0NXLGtCQUFpQixxQkFBcUI7QUFDeEMsWUFBSSxjQUFjLEtBQUs7QUFDdkIsWUFBSSxnQkFBZ0IsS0FBSyxPQUN2QlgsY0FBYSxjQUFjLFlBQzNCLFlBQVksY0FBYztBQUM1QixZQUFJLFlBQVksS0FBSyxNQUFNO0FBQzNCLFlBQUksQ0FBQyxLQUFLLFlBQVcsS0FBTSxDQUFDVyxtQkFBa0JYLGVBQWMsQ0FBQyxLQUFLLFNBQVUsS0FBSSxXQUFXO0FBQ3pGLGlCQUFPO0FBQUEsUUFDZjtBQUNNLFlBQUksYUFBYTtBQUFBLFVBQ2YsYUFBYSxLQUFLO0FBQUEsVUFDbEIsWUFBWSxLQUFLO0FBQUEsVUFDakIsZUFBZTtBQUFBLFFBQ2hCO0FBQ0QsZUFBb0IsaUNBQWlCLGNBQWNXLGlCQUFnQi9NLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxVQUMzRjtBQUFBLFVBQ0E7QUFBQSxRQUNSLENBQU8sQ0FBQztBQUFBLE1BQ1I7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyx5QkFBeUI7QUFDdkMsWUFBSSx1QkFBdUIsS0FBSyxjQUFlLEdBQzdDcU4sb0JBQW1CLHFCQUFxQjtBQUMxQyxZQUFJLGNBQWMsS0FBSztBQUN2QixZQUFJLGdCQUFnQixLQUFLLE9BQ3ZCakIsY0FBYSxjQUFjLFlBQzNCLFlBQVksY0FBYztBQUM1QixZQUFJLFlBQVksS0FBSyxNQUFNO0FBQzNCLFlBQUksQ0FBQ2lCLHFCQUFvQixDQUFDLFVBQVcsUUFBTztBQUM1QyxZQUFJLGFBQWE7QUFBQSxVQUNmLGVBQWU7QUFBQSxRQUNoQjtBQUNELGVBQW9CLGlDQUFpQixjQUFjQSxtQkFBa0JyTixVQUFTLENBQUEsR0FBSSxhQUFhO0FBQUEsVUFDN0Y7QUFBQSxVQUNBLFlBQVlvTTtBQUFBLFVBQ1o7QUFBQSxRQUNSLENBQU8sQ0FBQztBQUFBLE1BQ1I7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUywyQkFBMkI7QUFDekMsWUFBSSx1QkFBdUIsS0FBSyxjQUFlLEdBQzdDVSxxQkFBb0IscUJBQXFCLG1CQUN6Q0csc0JBQXFCLHFCQUFxQjtBQUc1QyxZQUFJLENBQUNILHNCQUFxQixDQUFDRyxvQkFBb0IsUUFBTztBQUN0RCxZQUFJLGNBQWMsS0FBSztBQUN2QixZQUFJYixjQUFhLEtBQUssTUFBTTtBQUM1QixZQUFJLFlBQVksS0FBSyxNQUFNO0FBQzNCLGVBQW9CLGlDQUFpQixjQUFjYSxxQkFBb0JqTixVQUFTLENBQUEsR0FBSSxhQUFhO0FBQUEsVUFDL0YsWUFBWW9NO0FBQUEsVUFDWjtBQUFBLFFBQ1IsQ0FBTyxDQUFDO0FBQUEsTUFDUjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLDBCQUEwQjtBQUN4QyxZQUFJLHVCQUF1QixLQUFLLGNBQWUsR0FDN0NVLHFCQUFvQixxQkFBcUI7QUFDM0MsWUFBSSxDQUFDQSxtQkFBbUIsUUFBTztBQUMvQixZQUFJLGNBQWMsS0FBSztBQUN2QixZQUFJVixjQUFhLEtBQUssTUFBTTtBQUM1QixZQUFJLFlBQVksS0FBSyxNQUFNO0FBQzNCLFlBQUksYUFBYTtBQUFBLFVBQ2YsYUFBYSxLQUFLO0FBQUEsVUFDbEIsWUFBWSxLQUFLO0FBQUEsVUFDakIsZUFBZTtBQUFBLFFBQ2hCO0FBQ0QsZUFBb0IsaUNBQWlCLGNBQWNVLG9CQUFtQjlNLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxVQUM5RjtBQUFBLFVBQ0EsWUFBWW9NO0FBQUEsVUFDWjtBQUFBLFFBQ1IsQ0FBTyxDQUFDO0FBQUEsTUFDUjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLGFBQWE7QUFDM0IsWUFBSSxTQUFTO0FBQ2IsWUFBSSx1QkFBdUIsS0FBSyxjQUFlLEdBQzdDcUIsU0FBUSxxQkFBcUIsT0FDN0JFLGdCQUFlLHFCQUFxQixjQUNwQ2xDLFFBQU8scUJBQXFCLE1BQzVCRyxZQUFXLHFCQUFxQixVQUNoQ0ssY0FBYSxxQkFBcUIsWUFDbENGLGtCQUFpQixxQkFBcUIsZ0JBQ3RDRCxvQkFBbUIscUJBQXFCLGtCQUN4QzBDLFVBQVMscUJBQXFCO0FBQ2hDLFlBQUksY0FBYyxLQUFLO0FBQ3ZCLFlBQUksZ0JBQWdCLEtBQUssTUFBTTtBQUMvQixZQUFJLGdCQUFnQixLQUFLLE9BQ3ZCLG9CQUFvQixjQUFjLG1CQUNsQyxhQUFhLGNBQWMsWUFDM0IsWUFBWSxjQUFjLFdBQzFCc0Msa0JBQWlCLGNBQWMsZ0JBQy9CLGdCQUFnQixjQUFjLGVBQzlCLGdCQUFnQixjQUFjLGVBQzlCLGFBQWEsY0FBYyxZQUMzQixnQkFBZ0IsY0FBYyxlQUM5QixlQUFlLGNBQWMsY0FDN0IsbUJBQW1CLGNBQWMsa0JBQ2pDLHdCQUF3QixjQUFjLHVCQUN0QywyQkFBMkIsY0FBYywwQkFDekNDLG9CQUFtQixjQUFjLGtCQUNqQyxvQkFBb0IsY0FBYyxtQkFDbEMsdUJBQXVCLGNBQWM7QUFDdkMsWUFBSSxDQUFDLFdBQVksUUFBTztBQUd4QixZQUFJLFNBQVMsU0FBU0MsUUFBTyxPQUFPLElBQUk7QUFDdEMsY0FBSTdaLFFBQU8sTUFBTSxNQUNmOUMsUUFBTyxNQUFNLE1BQ2IrWCxjQUFhLE1BQU0sWUFDbkIsYUFBYSxNQUFNLFlBQ25CLFFBQVEsTUFBTSxPQUNkLFFBQVEsTUFBTTtBQUNoQixjQUFJLFlBQVksa0JBQWtCL1g7QUFDbEMsY0FBSSxVQUFVK1gsY0FBYSxTQUFZLFdBQVk7QUFDakQsbUJBQU8sT0FBTyxjQUFjL1gsS0FBSTtBQUFBLFVBQ2pDO0FBQ0QsY0FBSSxXQUFXK1gsY0FBYSxTQUFZLFdBQVk7QUFDbEQsbUJBQU8sT0FBTyxhQUFhL1gsS0FBSTtBQUFBLFVBQ2hDO0FBQ0QsY0FBSStiLFlBQVcsR0FBRyxPQUFPLE9BQU8sYUFBYSxRQUFRLEdBQUcsR0FBRyxFQUFFLE9BQU8sRUFBRTtBQUN0RSxjQUFJLGFBQWE7QUFBQSxZQUNmLElBQUlBO0FBQUEsWUFDSixTQUFTO0FBQUEsWUFDVCxhQUFhO0FBQUEsWUFDYixhQUFhO0FBQUEsWUFDYixVQUFVO0FBQUEsWUFDVixNQUFNO0FBQUEsWUFDTixpQkFBaUIsT0FBTyxnQkFBZ0IsU0FBWTtBQUFBO0FBQUEsVUFDckQ7QUFFRCxpQkFBb0IsaUNBQWlCLGNBQWM1QixTQUFReE8sVUFBUyxDQUFBLEdBQUksYUFBYTtBQUFBLFlBQ25GO0FBQUEsWUFDQSxNQUFNM0w7QUFBQSxZQUNOLFlBQVkrWDtBQUFBLFlBQ1o7QUFBQSxZQUNBLEtBQUtnRTtBQUFBLFlBQ0w7QUFBQSxZQUNBLE1BQU1qWjtBQUFBLFlBQ047QUFBQSxZQUNBO0FBQUEsWUFDQSxVQUFVLFlBQVksT0FBTyxzQkFBc0I7QUFBQSxVQUM3RCxDQUFTLEdBQUcsT0FBTyxrQkFBa0IsTUFBTSxNQUFNLE1BQU0sQ0FBQztBQUFBLFFBQ2pEO0FBQ0QsWUFBSTtBQUNKLFlBQUksS0FBSyxjQUFjO0FBQ3JCLG1CQUFTLEtBQUssc0JBQXVCLEVBQUMsSUFBSSxTQUFVLE1BQU07QUFDeEQsZ0JBQUksS0FBSyxTQUFTLFNBQVM7QUFDekIsa0JBQUksUUFBUSxLQUFLLE1BQ2Z1QixXQUFVLEtBQUssU0FDZixhQUFhLEtBQUs7QUFDcEIsa0JBQUksVUFBVSxHQUFHLE9BQU8sT0FBTyxhQUFhLE9BQU8sR0FBRyxHQUFHLEVBQUUsT0FBTyxVQUFVO0FBQzVFLGtCQUFJLFlBQVksR0FBRyxPQUFPLFNBQVMsVUFBVTtBQUM3QyxxQkFBb0IsaUNBQWlCLGNBQWMrVSxRQUFPek4sVUFBUyxDQUFBLEdBQUksYUFBYTtBQUFBLGdCQUNsRixLQUFLO0FBQUEsZ0JBQ0wsTUFBTTtBQUFBLGdCQUNOLFNBQVN0SDtBQUFBLGdCQUNULFNBQVNpVjtBQUFBLGdCQUNULGNBQWM7QUFBQSxrQkFDWixJQUFJO0FBQUEsa0JBQ0osTUFBTSxLQUFLO0FBQUEsZ0JBQ1o7QUFBQSxnQkFDRCxPQUFPLE9BQU8saUJBQWlCLEtBQUssSUFBSTtBQUFBLGNBQ3pDLENBQUEsR0FBRyxLQUFLLFFBQVEsSUFBSSxTQUFVLFFBQVE7QUFDckMsdUJBQU8sT0FBTyxRQUFRLEdBQUcsT0FBTyxZQUFZLEdBQUcsRUFBRSxPQUFPLE9BQU8sS0FBSyxDQUFDO0FBQUEsY0FDbkYsQ0FBYSxDQUFDO0FBQUEsWUFDZCxXQUFxQixLQUFLLFNBQVMsVUFBVTtBQUNqQyxxQkFBTyxPQUFPLE1BQU0sR0FBRyxPQUFPLEtBQUssS0FBSyxDQUFDO0FBQUEsWUFDckQ7QUFBQSxVQUNBLENBQVM7QUFBQSxRQUNGLFdBQVUsV0FBVztBQUNwQixjQUFJLFVBQVVtRCxnQkFBZTtBQUFBLFlBQzNCO0FBQUEsVUFDVixDQUFTO0FBQ0QsY0FBSSxZQUFZLEtBQU0sUUFBTztBQUM3QixtQkFBc0IsaUNBQWlCLGNBQWMvRSxpQkFBZ0IsYUFBYSxPQUFPO0FBQUEsUUFDakcsT0FBYTtBQUNMLGNBQUksV0FBV2dGLGtCQUFpQjtBQUFBLFlBQzlCO0FBQUEsVUFDVixDQUFTO0FBQ0QsY0FBSSxhQUFhLEtBQU0sUUFBTztBQUM5QixtQkFBc0IsaUNBQWlCLGNBQWNqRixtQkFBa0IsYUFBYSxRQUFRO0FBQUEsUUFDcEc7QUFDTSxZQUFJLHFCQUFxQjtBQUFBLFVBQ3ZCO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFFBQ0Q7QUFDRCxZQUFJLGNBQTJCLGlDQUFpQixjQUFjaFksT0FBTSxZQUFZa00sVUFBUyxDQUFBLEdBQUksYUFBYSxrQkFBa0IsR0FBRyxTQUFVLE9BQU87QUFDOUksY0FBSTRGLE9BQU0sTUFBTSxLQUNkLG9CQUFvQixNQUFNLGFBQzFCLFlBQVksa0JBQWtCLFdBQzlCLFlBQVksa0JBQWtCO0FBQ2hDLGlCQUFvQixpQ0FBaUIsY0FBYzZGLE9BQU16TCxVQUFTLENBQUUsR0FBRSxhQUFhLG9CQUFvQjtBQUFBLFlBQ3JHLFVBQVU0RjtBQUFBLFlBQ1YsWUFBWTtBQUFBLGNBQ1YsYUFBYSxPQUFPO0FBQUEsY0FDcEIsYUFBYSxPQUFPO0FBQUEsWUFDckI7QUFBQSxZQUNEO0FBQUEsWUFDQTtBQUFBLFdBQ0QsR0FBZ0IsaUNBQWlCLGNBQWN3aUIsZ0JBQWU7QUFBQSxZQUM3RCxnQkFBZ0I7QUFBQSxZQUNoQixhQUFhO0FBQUEsWUFDYixnQkFBZ0I7QUFBQSxZQUNoQixhQUFhO0FBQUEsVUFDZCxHQUFFLFNBQVUsaUJBQWlCO0FBQzVCLG1CQUFvQixpQ0FBaUIsY0FBY3hjLFdBQVU1TCxVQUFTLENBQUEsR0FBSSxhQUFhO0FBQUEsY0FDckYsVUFBVSxTQUFTLFNBQVM1RixXQUFVO0FBQ3BDLHVCQUFPLGVBQWVBLFNBQVE7QUFDOUIsZ0NBQWdCQSxTQUFRO0FBQUEsY0FDekI7QUFBQSxjQUNELFlBQVk7QUFBQSxnQkFDVixNQUFNO0FBQUEsZ0JBQ04sd0JBQXdCLFlBQVk7QUFBQSxnQkFDcEMsSUFBSSxPQUFPLGFBQWEsU0FBUztBQUFBLGNBQ2xDO0FBQUEsY0FDRDtBQUFBLGNBQ0E7QUFBQSxjQUNBO0FBQUEsWUFDRCxDQUFBLEdBQUcsTUFBTTtBQUFBLFVBQ3BCLENBQVMsQ0FBQztBQUFBLFFBQ1YsQ0FBTztBQUtELGVBQU8sb0JBQW9CLGlCQUFpQixVQUF1QixpQ0FBaUIsY0FBYzZSLGFBQVlqTSxVQUFTLENBQUUsR0FBRSxhQUFhO0FBQUEsVUFDdEksVUFBVTtBQUFBLFVBQ1YsZ0JBQWdCLEtBQUs7QUFBQSxVQUNyQjtBQUFBLFVBQ0E7QUFBQSxRQUNSLENBQU8sR0FBRyxXQUFXLElBQUk7QUFBQSxNQUN6QjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLGtCQUFrQjtBQUNoQyxZQUFJLFNBQVM7QUFDYixZQUFJLGdCQUFnQixLQUFLLE9BQ3ZCNUgsYUFBWSxjQUFjLFdBQzFCZ1UsY0FBYSxjQUFjLFlBQzNCLFVBQVUsY0FBYyxTQUN4QixPQUFPLGNBQWMsTUFDckJzRSxZQUFXLGNBQWM7QUFDM0IsWUFBSSxjQUFjLEtBQUssTUFBTTtBQUM3QixZQUFJQSxhQUFZLENBQUMsS0FBSyxTQUFVLEtBQUksQ0FBQ3RFLGFBQVk7QUFDL0MsaUJBQW9CLGlDQUFpQixjQUFjaWMsa0JBQWlCO0FBQUEsWUFDbEU7QUFBQSxZQUNBLFNBQVMsS0FBSztBQUFBLFVBQ3hCLENBQVM7QUFBQSxRQUNUO0FBQ00sWUFBSSxDQUFDLFFBQVFqYyxZQUFZO0FBQ3pCLFlBQUksU0FBUztBQUNYLGNBQUloVSxZQUFXO0FBQ2IsZ0JBQUksUUFBUSxZQUFZLElBQUksU0FBVSxLQUFLO0FBQ3pDLHFCQUFPLE9BQU8sZUFBZSxHQUFHO0FBQUEsWUFDNUMsQ0FBVyxFQUFFLEtBQUtBLFVBQVM7QUFDakIsbUJBQW9CLGlDQUFpQixjQUFjLFNBQVM7QUFBQSxjQUMxRDtBQUFBLGNBQ0EsTUFBTTtBQUFBLGNBQ047QUFBQSxZQUNaLENBQVc7QUFBQSxVQUNYLE9BQWU7QUFDTCxnQkFBSSxRQUFRLFlBQVksU0FBUyxJQUFJLFlBQVksSUFBSSxTQUFVLEtBQUtqRyxJQUFHO0FBQ3JFLHFCQUFvQixpQ0FBaUIsY0FBYyxTQUFTO0FBQUEsZ0JBQzFELEtBQUssS0FBSyxPQUFPQSxFQUFDO0FBQUEsZ0JBQ2xCO0FBQUEsZ0JBQ0EsTUFBTTtBQUFBLGdCQUNOLE9BQU8sT0FBTyxlQUFlLEdBQUc7QUFBQSxjQUM5QyxDQUFhO0FBQUEsYUFDRixJQUFpQixpQ0FBaUIsY0FBYyxTQUFTO0FBQUEsY0FDeEQ7QUFBQSxjQUNBLE1BQU07QUFBQSxjQUNOLE9BQU87QUFBQSxZQUNuQixDQUFXO0FBQ0QsbUJBQW9CLGlDQUFpQixjQUFjLE9BQU8sTUFBTSxLQUFLO0FBQUEsVUFDL0U7QUFBQSxRQUNBLE9BQWE7QUFDTCxjQUFJLFNBQVMsWUFBWSxDQUFDLElBQUksS0FBSyxlQUFlLFlBQVksQ0FBQyxDQUFDLElBQUk7QUFDcEUsaUJBQW9CLGlDQUFpQixjQUFjLFNBQVM7QUFBQSxZQUMxRDtBQUFBLFlBQ0EsTUFBTTtBQUFBLFlBQ04sT0FBTztBQUFBLFVBQ2pCLENBQVM7QUFBQSxRQUNUO0FBQUEsTUFDQTtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLG1CQUFtQjtBQUNqQyxZQUFJLGNBQWMsS0FBSztBQUN2QixZQUFJLGVBQWUsS0FBSyxPQUN0QixnQkFBZ0IsYUFBYSxlQUM3QixnQkFBZ0IsYUFBYSxlQUM3QixlQUFlLGFBQWEsY0FDNUIsWUFBWSxhQUFhLFdBQ3pCLGNBQWMsYUFBYTtBQUM3QixZQUFJLG1CQUFtQixLQUFLLG9CQUFxQjtBQUNqRCxlQUFvQixpQ0FBaUIsY0FBYyswQixlQUFjbG5CLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxVQUN6RixJQUFJLEtBQUssYUFBYSxhQUFhO0FBQUEsVUFDbkM7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0EsZUFBZSxLQUFLO0FBQUEsUUFDNUIsQ0FBTyxDQUFDO0FBQUEsTUFDUjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLFNBQVM7QUFDdkIsWUFBSSx1QkFBdUIsS0FBSyxjQUFlLEdBQzdDc04sV0FBVSxxQkFBcUIsU0FDL0JiLHVCQUFzQixxQkFBcUIscUJBQzNDSixtQkFBa0IscUJBQXFCLGlCQUN2Q0Usa0JBQWlCLHFCQUFxQjtBQUN4QyxZQUFJLGdCQUFnQixLQUFLLE9BQ3ZCLFlBQVksY0FBYyxXQUMxQixLQUFLLGNBQWMsSUFDbkJILGNBQWEsY0FBYyxZQUMzQixhQUFhLGNBQWM7QUFDN0IsWUFBSSxZQUFZLEtBQUssTUFBTTtBQUMzQixZQUFJLGNBQWMsS0FBSyxjQUFjLEtBQUssZUFBZ0I7QUFDMUQsZUFBb0IsaUNBQWlCLGNBQWNDLGtCQUFpQnJNLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxVQUM1RjtBQUFBLFVBQ0EsWUFBWTtBQUFBLFlBQ1Y7QUFBQSxZQUNBLFdBQVcsS0FBSztBQUFBLFVBQ2pCO0FBQUEsVUFDRCxZQUFZb007QUFBQSxVQUNaO0FBQUEsUUFDUixDQUFPLEdBQUcsS0FBSyxpQkFBZ0IsR0FBaUIsaUNBQWlCLGNBQWNrQixVQUFTdE4sVUFBUyxDQUFFLEdBQUUsYUFBYTtBQUFBLFVBQzFHLFVBQVUsS0FBSztBQUFBLFVBQ2YsWUFBWTtBQUFBLFlBQ1YsYUFBYSxLQUFLO0FBQUEsWUFDbEIsWUFBWSxLQUFLO0FBQUEsVUFDbEI7QUFBQSxVQUNELFlBQVlvTTtBQUFBLFVBQ1o7QUFBQSxVQUNBO0FBQUEsUUFDUixDQUFPLEdBQWdCLGlDQUFpQixjQUFjRyxpQkFBZ0J2TSxVQUFTLENBQUUsR0FBRSxhQUFhO0FBQUEsVUFDeEYsWUFBWW9NO0FBQUEsUUFDYixDQUFBLEdBQUcsS0FBSyw0QkFBNEIsS0FBSyxZQUFhLENBQUEsR0FBZ0IsaUNBQWlCLGNBQWNLLHNCQUFxQnpNLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxVQUNuSixZQUFZb007QUFBQSxRQUNwQixDQUFPLEdBQUcsS0FBSyxxQkFBc0IsR0FBRSxLQUFLLHVCQUFzQixHQUFJLEtBQUsseUJBQXdCLEdBQUksS0FBSyx3QkFBeUIsQ0FBQSxDQUFDLEdBQUcsS0FBSyxjQUFjLEtBQUssaUJBQWlCO0FBQUEsTUFDbEw7QUFBQSxJQUNHLENBQUEsR0FBRyxDQUFDO0FBQUEsTUFDSCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMseUJBQXlCLE9BQU8sT0FBTztBQUNyRCxZQUFJLFlBQVksTUFBTSxXQUNwQiwwQkFBMEIsTUFBTSx5QkFDaEMsMkJBQTJCLE1BQU0sMEJBQ2pDLGdCQUFnQixNQUFNLGVBQ3RCLFlBQVksTUFBTSxXQUNsQixpQkFBaUIsTUFBTSxnQkFDdkIsaUJBQWlCLE1BQU07QUFDekIsWUFBSTFULFdBQVUsTUFBTSxTQUNsQixRQUFRLE1BQU0sT0FDZCxhQUFhLE1BQU0sWUFDbkIsYUFBYSxNQUFNLFlBQ25CLFVBQVUsTUFBTTtBQUNsQixZQUFJLGNBQWM1RSxPQUFNLFdBQVcsS0FBSztBQUN4QyxZQUFJLHNCQUFzQixDQUFFO0FBQzVCLFlBQUksY0FBYyxVQUFVLFVBQVUsU0FBUzRFLGFBQVksVUFBVSxXQUFXLGVBQWUsVUFBVSxjQUFjLGVBQWUsVUFBVSxhQUFhO0FBQzNKLGNBQUksbUJBQW1CLGFBQWE0d0IsdUJBQXNCLE9BQU8sV0FBVyxJQUFJLENBQUU7QUFDbEYsY0FBSSwwQkFBMEIsYUFBYUQsOEJBQTZCSCx5QkFBd0IsT0FBTyxXQUFXLEdBQUcsR0FBRyxPQUFPLGdCQUFnQixTQUFTLENBQUMsSUFBSSxDQUFFO0FBQy9KLGNBQUksZUFBZSwwQkFBMEJNLHFCQUFvQixPQUFPLFdBQVcsSUFBSTtBQUN2RixjQUFJLGdCQUFnQkMsc0JBQXFCLE9BQU8sZ0JBQWdCO0FBQ2hFLGNBQUksa0JBQWtCcFosb0JBQW1CLHlCQUF5QixhQUFhO0FBQy9FLGdDQUFzQjtBQUFBLFlBQ3BCO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLFlBQ0EseUJBQXlCO0FBQUEsVUFDMUI7QUFBQSxRQUNUO0FBRU0sWUFBSSx3QkFBd0IsNEJBQTRCLFFBQVEsVUFBVSxZQUFZO0FBQUEsVUFDcEYsZUFBZTtBQUFBLFVBQ2YsMEJBQTBCO0FBQUEsUUFDbEMsSUFBVSxDQUFFO0FBQ04sWUFBSSxtQkFBbUI7QUFDdkIsWUFBSSxlQUFlLGFBQWE7QUFDaEMsWUFBSSxhQUFhLENBQUMsY0FBYztBQUc5Qiw2QkFBbUI7QUFBQSxZQUNqQixPQUFPdmMsT0FBTSxhQUFhLFNBQVMsYUFBYSxZQUFZLENBQUMsS0FBSyxJQUFJO0FBQUEsWUFDdEUsU0FBUztBQUFBLFlBQ1QsUUFBUTtBQUFBLFVBQ1Q7QUFDRCx5QkFBZSxDQUFDO0FBQUEsUUFDeEI7QUFJTSxhQUFLLGtCQUFrQixRQUFRLGtCQUFrQixTQUFTLFNBQVMsY0FBYyxZQUFZLHVCQUF1QjtBQUNsSCw2QkFBbUI7QUFBQSxRQUMzQjtBQUNNLGVBQU9pTSxlQUFjQSxlQUFjQSxlQUFjLENBQUEsR0FBSSxtQkFBbUIsR0FBRyxxQkFBcUIsR0FBRyxJQUFJO0FBQUEsVUFDckcsV0FBVztBQUFBLFVBQ1gsZUFBZTtBQUFBLFVBQ2YsZ0JBQWdCO0FBQUEsUUFDeEIsQ0FBTztBQUFBLE1BQ1A7QUFBQSxJQUNBLENBQUcsQ0FBQztBQUNGLFdBQU93UTtBQUFBLEVBQ1QsRUFBRXRTLE9BQU0sU0FBUztBQUNqQixFQUFBc1MsUUFBTyxlQUFldVk7QUFFdEIsMEJBQUEsU0FBaUJ2WTtBQUNqQiwwQkFBQSxlQUF1QmI7QUFDdkIsMEJBQUEsZUFBdUJvWjtBQUN2QiwwQkFBQSxlQUF1QkQ7QUFDdkIsMEJBQUEsaUJBQXlCSjtBQUN6QiwwQkFBQSxpQkFBeUJDO0FBQ3pCLDBCQUFBLGNBQXNCOzs7Ozs7Ozs7QUNqbkZ0QixXQUFPLGVBQWMsU0FBVSxjQUFjLEVBQUUsT0FBTyxNQUFNO0FBRTVELFFBQUl6RixtQkFBbUVuc0Isd0RBQUE7QUFDdkUsUUFBSWtKLFlBQVd6RixnQkFBeUM7QUFDeEQsUUFBSTBELFNBQVFtYSxlQUFnQjtBQUM1QixRQUFJN0gsVUFBaUQ4SCwrQ0FBQTtBQUNyRCxRQUFJMkwsU0FBUTtBQUNaLFFBQUk1ZixlQUFjO0FBQ2xCLFFBQUl0USxTQUErQ2dsQiw4Q0FBQTtBQUNKQyx5QkFBQTtBQUNBSSx5QkFBQTtBQUNVQyxtQ0FBQTtBQUNUQywwQkFBQTtBQUNIQyx1QkFBQTtBQUNIQyxvQkFBQTtBQUNHQyx1QkFBQTtBQUNNQyw2QkFBQTtBQUVYRSxtQkFBQTtBQUNlQyxpQ0FBQTtBQUNQQywwQkFBQTtBQUM1QkMsb0JBQUE7QUFJcEIsYUFBUyxnQkFBaUJ2bUIsSUFBRztBQUFFLGFBQU9BLE1BQUtBLEdBQUUsYUFBYUEsS0FBSSxFQUFFLFdBQVdBO0lBQUk7QUFFL0UsYUFBUyxrQkFBa0JBLElBQUc7QUFDNUIsVUFBSUEsTUFBS0EsR0FBRSxXQUFZLFFBQU9BO0FBQzlCLFVBQUlpQixLQUFJLHVCQUFPLE9BQU8sSUFBSTtBQUMxQixVQUFJakIsSUFBRztBQUNMLGVBQU8sS0FBS0EsRUFBQyxFQUFFLFFBQVEsU0FBVUQsSUFBRztBQUNsQyxjQUFJQSxPQUFNLFdBQVc7QUFDbkIsZ0JBQUkwQyxLQUFJLE9BQU8seUJBQXlCekMsSUFBR0QsRUFBQztBQUM1QyxtQkFBTyxlQUFla0IsSUFBR2xCLElBQUcwQyxHQUFFLE1BQU1BLEtBQUk7QUFBQSxjQUN0QyxZQUFZO0FBQUEsY0FDWixLQUFLLFdBQVk7QUFBRSx1QkFBT3pDLEdBQUVELEVBQUM7QUFBQSxjQUFFO0FBQUEsWUFDekMsQ0FBUztBQUFBLFVBQ1Q7QUFBQSxRQUNBLENBQUs7QUFBQSxNQUNMO0FBQ0UsTUFBQWtCLEdBQUUsU0FBUyxJQUFJakI7QUFDZixhQUFPLE9BQU8sT0FBT2lCLEVBQUM7QUFBQSxJQUN4QjtBQUVBLFFBQUksbUJBQWdDLGtDQUFrQnlKLE1BQUs7QUFDM0QsUUFBSSx1QkFBb0MsZ0NBQWdCbUcsWUFBVztBQUVuRSxRQUFJdWxCLHNCQUFrQyxnQkFBQTFyQixPQUFNLFdBQVcsU0FBVSxPQUFPMkgsTUFBSztBQUMzRSxVQUFJLGtCQUFrQnFkLGlCQUFnQixnQkFBZ0IsS0FBSztBQUMzRCxhQUFvQixpQ0FBaUIsY0FBYzFTLFFBQU8sUUFBUXZRLFVBQVM7QUFBQSxRQUN6RSxLQUFLNEY7QUFBQSxNQUNOLEdBQUUsZUFBZSxDQUFDO0FBQUEsSUFDckIsQ0FBQztBQUNELFFBQUlna0Isd0JBQXVCRDtBQUUzQixRQUFJLGdCQUFpQixTQUFVaHFCLE9BQU07QUFDbkMsVUFBSSxRQUFRQSxNQUFLLE9BQ2YsV0FBV0EsTUFBSyxVQUNoQixXQUFXQSxNQUFLO0FBQ2xCLFVBQUksZUFBZTFCLE9BQU0sUUFBUSxXQUFZO0FBQzNDLGVBQU8scUJBQXFCLFNBQVMsRUFBRTtBQUFBLFVBQ3JDLEtBQUs7QUFBQSxVQUNMO0FBQUEsUUFDTixDQUFLO0FBQUEsTUFDTCxHQUFLLENBQUMsVUFBVSxLQUFLLENBQUM7QUFDcEIsYUFBb0IsaUNBQWlCLGNBQWMrbEIsT0FBTSxlQUFlO0FBQUEsUUFDdEUsT0FBTztBQUFBLE1BQ1IsR0FBRSxRQUFRO0FBQUEsSUFDYjtBQUVBLFlBQTBCLGtCQUFBZixpQkFBZ0I7QUFDMUMsWUFBdUIsZUFBQTFTLFFBQU87QUFDOUIsWUFBdUIsZUFBQUEsUUFBTztBQUM5QixZQUFzQixjQUFBQSxRQUFPO0FBQzdCLFlBQXFCLGFBQUF6YyxPQUFNO0FBQzNCLFlBQUEsZ0JBQXdCO0FBQ3hCLFlBQVEsU0FBUyxJQUFJODFCO0FBQUE7Ozs7Ozs7QUM3RXNCO0FBQ2xDQyxvQkFBQSxVQUE4Qy95Qiw0Q0FBQTtBQUFBOzs7Ozs7Ozs7QUNIdkMsMEJBQUEsV0FBR0EsdUJBQWdDLEVBQUM7Ozs7QUNJdkMsTUFBQSxjQUFjLENBQUMsVUFBZTtBQUV6QyxTQUVJMmMsa0NBQUEsS0FBQW5FLDRCQUFBLEVBQUEsVUFBQTtBQUFBLElBQUEvSSxrQ0FBQUEsSUFBQzhILHVCQUFBQSxXQUFXLFNBQVgsRUFBb0IsR0FBRyxNQUFPLENBQUE7QUFBQSwwQ0FDOUIsT0FBTSxFQUFBLGFBQWEsTUFBTSxXQUFXLFVBQVUsS0FBSyxNQUFNLFdBQVcsQ0FBQyxFQUFFLFFBQVEsSUFBSyxVQUFBLE1BQU0sWUFBWSxLQUFLLENBQUE7QUFBQSxFQUFBLEdBQzlHO0FBRUo7QUFFQSxNQUFNLFFBQVF5YixHQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FPWixDQUFDLFVBQVcsTUFBTSxjQUFjLFFBQVEsS0FBTTtBQUFBLGVBQ3hDLENBQUMsVUFBVyxNQUFNLGNBQWMsU0FBUyxRQUFTO0FBQUE7QUNUakUsTUFBTSxnQkFBZ0IsQ0FBQyxFQUFDLE9BQU8sTUFBTSxVQUFBanFCLGdCQUFjO0FBRWpELFFBQU0sQ0FBQyxVQUFVLFdBQVcsSUFBSUQsYUFBQUEsU0FBUyxJQUFJO0FBRXZDLFFBQUEsYUFBeUJ5RSxTQUFVLFFBQVEsVUFBVTtBQUNyRCxRQUFBLGNBQWMsSUFBSSxlQUFlO0FBRXZDaEcsZUFBQUEsVUFBVSxNQUFNO0FBQ2QsZ0JBQVksS0FBSyxJQUFJO0FBQUEsRUFBQSxHQUNwQixDQUFDLElBQUksQ0FBQztBQUVULFFBQU0sY0FBYyxPQUFPLGFBQWEsZUFBZSxFQUFFLFdBQVc7QUFFbEUsUUFBSSxXQUFXLE1BQU0sWUFBWSxZQUFZLGFBQWEsTUFBTSxJQUFJO0FBRTdELFdBQUE7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxNQUNULFlBQVk7QUFBQSxRQUNWLE1BQU0sT0FBTztBQUFBLE1BQUE7QUFBQSxJQUVqQjtBQUFBLEVBQ0Y7QUFFTSxRQUFBLG9CQUFvQixDQUFDLFdBQVc7QUFDekIsZUFBQSxnQkFBQSxFQUFrQixNQUFNLFVBQVU7QUFDN0MsVUFBTSxVQUFVO0FBQ2hCLElBQUF3QixVQUFTLE1BQU07QUFBQSxFQUNqQjtBQUVNLFFBQUEsWUFBWSxDQUFDLFlBQXFCO0FBQzFCLGdCQUFBLEtBQUssUUFBUTtBQUN6QixzQkFBa0IsT0FBTztBQUFBLEVBQzNCO0FBRU0sUUFBQSxhQUFhLENBQUMsWUFBcUI7QUFDM0IsZ0JBQUEsS0FBSyxRQUFRO0FBQ3pCLHNCQUFrQixPQUFPO0FBQUEsRUFDM0I7QUFHRSxTQUFBNFQsa0NBQUEsS0FBQyxPQUFJLEVBQUEsV0FBVSxjQUNiLFVBQUE7QUFBQSxJQUFDbE4sa0NBQUFBLElBQUEsT0FBQSxFQUFJLFdBQVUsVUFDYixVQUFBQSxrQ0FBQTtBQUFBLE1BQUM7QUFBQSxNQUFBO0FBQUEsUUFDRyxnQkFBYztBQUFBLFFBQ2QsV0FBVyxHQUFHLFdBQVcsa0JBQWtCLE1BQU0sUUFBUSxZQUFZLEtBQUsseUJBQXlCLEVBQUU7QUFBQSxRQUVyRyxjQUFjLE1BQU07QUFBQSxRQUNwQixZQUFZLEVBQUMsU0FBUyxZQUFXO0FBQUEsUUFDakMsYUFBWTtBQUFBLFFBQ1osTUFBSztBQUFBLFFBQ0wsT0FBTyxNQUFNO0FBQUEsUUFDYjtBQUFBLFFBQ0EsZ0JBQWdCLENBQUMsV0FBVyxPQUFPO0FBQUEsUUFDbkMsZ0JBQWdCLENBQUMsV0FBVyxPQUFPO0FBQUEsUUFDbkMsVUFBVTtBQUFBLFFBQ1YsY0FBYztBQUFBLFFBQ2QsWUFBWTtBQUFBLFVBQ1YsTUFBTTtBQUFBLFFBQUE7QUFBQSxNQUNSO0FBQUEsTUFiSyxLQUFLLFVBQVUsUUFBUTtBQUFBLElBQUEsR0FlbEM7QUFBQSxJQUNBQSxrQ0FBQUEsSUFBQyxPQUNDLEVBQUEsVUFBQUEsa0NBQUFBLElBQUMsdUJBQXNCLEVBQUEsTUFBWSxTQUFTLE1BQU0sU0FBUyxXQUFzQixXQUF1QixDQUFBLEVBQzFHLENBQUE7QUFBQSxFQUFBLEdBQ0Y7QUFFSjtBQUVBLGNBQWMsWUFBWTtBQUFBLEVBQ3hCLE9BQU8yYixpQkFBVSxXQUFXLEtBQUs7QUFBQSxFQUNqQyxVQUFVQyxpQkFBVTtBQUFBLEVBQ3BCLE1BQU1ELGlCQUFVLFdBQVcsSUFBSTtBQUNqQztBQzVFQSxNQUFNLGFBQWEsVUFBVTtBQUFBLEVBQ3pCLENBQUMsRUFBRSxPQUFBN08sUUFBTyxRQUFRLFNBQVMsV0FBVztBQUU1QixVQUFBLGNBQWMsSUFBSSxlQUFlO0FBRXZDLFVBQU0sUUFBUSxTQUFTO0FBQ3ZCLFVBQU0sQ0FBQyxVQUFVLFdBQVcsSUFBSXpULGFBQUFBLFNBQVMsQ0FBQSxDQUFFO0FBRTNDLFVBQU0sQ0FBQyxRQUFRLFNBQVMsSUFBSUEsYUFBQUEsU0FBcUIsQ0FBQSxDQUFFO0FBRW5EdkIsaUJBQUFBLFVBQVUsTUFBTTtBQUNaLFVBQUcsU0FBUztBQUNJLG9CQUFBO0FBQUEsVUFDUixPQUFPLFFBQVE7QUFBQSxVQUNmLFdBQVcsUUFBUTtBQUFBLFVBQ25CLFVBQVUsUUFBUTtBQUFBLFVBQ2xCLFNBQVMsUUFBUTtBQUFBLFVBQ2pCLFFBQVEsUUFBUTtBQUFBLFVBQ2hCLGFBQWEsUUFBUTtBQUFBLFVBQ3JCLEtBQUssUUFBUTtBQUFBLFVBQ2IsTUFBTSxRQUFRO0FBQUEsVUFDZCxPQUFPLFFBQVE7QUFBQSxVQUNmLFNBQVMsUUFBUTtBQUFBLFVBQ2pCLE9BQU8sUUFBUTtBQUFBLFFBQUEsQ0FDbEI7QUFBQSxNQUFBO0FBQUEsSUFDTCxHQUNDLENBQUMsT0FBTyxDQUFDO0FBRWRBLGlCQUFBQSxVQUFVLE1BQU07QUFDWixrQkFBWSxXQUFXLElBQUksRUFBRSxLQUFLLENBQUVoSyxVQUFVO0FBQzFDLFlBQUksV0FBa0IsQ0FBQztBQUVsQixRQUFBQSxNQUFBLFFBQVEsQ0FBQyxTQUFTO0FBQ1YsbUJBQUEsS0FBSyxFQUFDLFNBQVMsS0FBSyxNQUFNLFNBQVMsS0FBSyxNQUFLO0FBQUEsUUFBQSxDQUN6RDtBQUVELFlBQUl3cUIsVUFBcUI7QUFBQSxVQUNyQixPQUFPO0FBQUEsVUFDUCxNQUFNO0FBQUEsVUFDTixVQUFVLENBQUMsT0FBTztBQUFBLFVBQ2xCLFlBQVk7QUFBQSxZQUNSLE9BQU8sRUFBRSxNQUFNLFVBQVUsUUFBUSxTQUFTLE9BQU8sU0FBUztBQUFBLFlBQzFELFNBQVMsRUFBRSxNQUFNLFVBQVUsT0FBTyxVQUFTO0FBQUEsWUFDM0MsV0FBVyxFQUFFLE1BQU0sVUFBVSxPQUFPLFlBQVc7QUFBQSxZQUMvQyxVQUFVLEVBQUUsTUFBTSxVQUFVLE9BQU8sV0FBVTtBQUFBLFlBQzdDLFFBQVEsRUFBRSxNQUFNLFVBQVUsT0FBTyxTQUFRO0FBQUEsWUFDekMsYUFBYSxFQUFFLE1BQU0sVUFBVSxPQUFPLGNBQWE7QUFBQSxZQUNuRCxLQUFLLEVBQUUsTUFBTSxVQUFVLE9BQU8sTUFBSztBQUFBLFlBQ25DLE1BQU0sRUFBRSxNQUFNLFVBQVUsT0FBTyxPQUFNO0FBQUEsWUFDckMsT0FBTyxFQUFFLE1BQU0sVUFBVSxPQUFPLFFBQU87QUFBQSxZQUN2QyxPQUFPLEVBQUUsTUFBTSxVQUFVLE9BQU8sUUFBTztBQUFBLFlBQ3ZDLFNBQVMsRUFBRSxNQUFNLFVBQVUsT0FBTyxXQUFXLE9BQU8sU0FBUTtBQUFBLFVBQUE7QUFBQSxRQUVwRTtBQUVBLGtCQUFVQSxPQUFNO0FBQUEsTUFBQSxDQUVuQjtBQUFBLElBQ0wsR0FBRyxFQUFFO0FBRUwsVUFBTSxXQUF1QjtBQUFBLE1BQ3pCLDBCQUEwQjtBQUFBLFFBQ3RCLGNBQWM7QUFBQSxRQUNkLFlBQVk7QUFBQSxRQUNaLFNBQVM7QUFBQSxVQUNMLFlBQVk7QUFBQSxVQUNaLGFBQWE7QUFBQSxRQUFBO0FBQUEsTUFDakI7QUFBQSxJQUVSO0FBSUksV0FBQXBMLHVDQUFDLFNBQU0sTUFBTSxNQUFNLFNBQVMsU0FBUyxNQUFNLE1BQU0sT0FBQSxHQUM3QyxVQUFBO0FBQUEsTUFBQWxOLGtDQUFBQSxJQUFDLE1BQU0sUUFBTixFQUNHLFVBQUNBLGtDQUFBQSxJQUFBLE9BQUEsRUFBSyxpQkFBTSxDQUFBLEdBQ2hCO0FBQUEsTUFDQ0Esa0NBQUEsSUFBQSxNQUFNLE1BQU4sRUFDSSxxQkFBVyxVQUNSQSxrQ0FBQTtBQUFBLFFBQUN5YjtBQUFBQSxRQUFBO0FBQUEsVUFDRztBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0EsVUFBVSxDQUFDenVCLE9BQU0sWUFBWUEsR0FBRSxRQUFRO0FBQUEsUUFBQTtBQUFBLE1BQUEsR0FJbkQ7QUFBQSxNQUNBa2dCLGtDQUFBQSxLQUFDLE1BQU0sUUFBTixFQUNHLFVBQUE7QUFBQSxRQUFBbE4sa0NBQUE7QUFBQSxVQUFDO0FBQUEsVUFBQTtBQUFBLFlBQ0csTUFBTTtBQUFBLFlBQ04sU0FBUTtBQUFBLFlBQ1IsU0FBUyxNQUFNO0FBQ1gsa0JBQUksV0FBVyxRQUFRO0FBQ25CLG9CQUFJLFVBQVU7QUFDVix3QkFBTSxRQUFRLFFBQVE7QUFDdEIsd0JBQU0sT0FBTztBQUFBLGdCQUFBO0FBQUEsY0FDakIsT0FDRztBQUNILHNCQUFNLFFBQVE7QUFDZCxzQkFBTSxPQUFPO0FBQUEsY0FBQTtBQUFBLFlBQ2pCO0FBQUEsVUFDSjtBQUFBLFFBQ0o7QUFBQSxRQUNBQSxrQ0FBQTtBQUFBLFVBQUM7QUFBQSxVQUFBO0FBQUEsWUFDRyxNQUFNO0FBQUEsWUFDTixTQUFRO0FBQUEsWUFDUixTQUFTLE1BQU07QUFDWCxvQkFBTSxPQUFPO0FBQUEsWUFBQTtBQUFBLFVBQ2pCO0FBQUEsUUFBQTtBQUFBLE1BQ0osRUFDSixDQUFBO0FBQUEsSUFBQSxHQUNKO0FBQUEsRUFBQTtBQUdaO0FDckhBLE1BQU0sd0JBQXdCLENBQUMsRUFBQyxXQUFXLFlBQVksU0FBUyxXQUFVO0FBQ2hFLFFBQUEsZUFBZSxTQUFTd2pCLFVBQVk7QUFFcEMsUUFBQSxlQUFlenJCLGFBQUFBLFlBQVksTUFBTTtBQUN0QixpQkFBQSxLQUFLLEVBQUMsT0FBTyxlQUFlLFFBQVEsUUFBUSxLQUFLLENBQUEsRUFBRSxLQUFLLENBQUMsYUFBYTtBQUMvRSxpQkFBVyxRQUFRO0FBQUEsSUFBQSxDQUN0QjtBQUFBLEVBQUEsR0FDSCxDQUFDLFlBQVksQ0FBQztBQUVWLFFBQUEsZ0JBQWdCQSx5QkFBWSxDQUFDMHJCLGFBQVk7QUFDM0MsaUJBQWEsS0FBSyxFQUFFLE9BQU8sZ0JBQWdCLFFBQVEsUUFBUSxTQUFTQSxVQUFTLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxhQUFhO0FBQ3BHLG9CQUFjLFFBQVE7QUFBQSxJQUFBLENBQ3pCO0FBQUEsRUFBQSxHQUNILENBQUMsWUFBWSxDQUFDO0FBRVYsUUFBQSxnQkFBZ0IsQ0FBQyxhQUFhO0FBQ2hDLFlBQVEsa0JBQWtCLFFBQVE7QUFDbEMsZUFBVyxPQUFPO0FBQUEsRUFDdEI7QUFFTSxRQUFBLGFBQWEsQ0FBQyxhQUFhO0FBQzdCLGNBQVUsSUFBSSxRQUFRO0FBQ3RCLFlBQVEsa0JBQWtCLFFBQVE7QUFDbEMsY0FBVSxPQUFPO0FBQUEsRUFDckI7QUFHSSxTQUFBdlcsa0NBQUEsS0FBQyxPQUFJLEVBQUEsV0FBVyxjQUNaLFVBQUE7QUFBQSxJQUFBbE4sc0NBQUMsVUFBTyxNQUFNLEdBQUcsU0FBUSxXQUFVLFNBQVMsY0FBYztBQUFBLDBDQUN6RCxRQUFPLEVBQUEsTUFBTSxHQUFHLFNBQVEsUUFBTyxTQUFTLE1BQU07QUFDM0Msb0JBQWMsT0FBTztBQUFBLElBQUEsRUFDdEIsQ0FBQTtBQUFBLEVBQUEsR0FDUDtBQUVSO0FBRUEsc0JBQXNCLFlBQVk7QUFBQSxFQUM5QixXQUFXNGIsaUJBQVU7QUFBQSxFQUNyQixZQUFZQSxpQkFBVTtBQUFBLEVBQ3RCLFNBQVNELGlCQUFVLFdBQVcsT0FBTztBQUFBLEVBQ3JDLE1BQU1BLGlCQUFVLFdBQVcsSUFBSTtBQUNuQztBQy9DQSxNQUFNLGdCQUFnQixDQUFDLEVBQUMsY0FBYTtBQUVqQyxnREFDSyxTQUFPLEVBQUEsVUFBQTtBQUFBLElBQVEsUUFBQTtBQUFBLElBQVE7QUFBQSxJQUFFLFFBQVE7QUFBQSxJQUFVO0FBQUEsSUFBRSxRQUFRO0FBQUEsSUFBUztBQUFBLElBQUUsUUFBUTtBQUFBLElBQU87QUFBQSxJQUFFLFFBQVE7QUFBQSxJQUFZO0FBQUEsSUFBRSxRQUFRO0FBQUEsSUFBUTtBQUFBLElBQUUsUUFBUTtBQUFBLElBQUk7QUFBQSxJQUFFLFFBQVE7QUFBQSxFQUFBLEdBQUs7QUFFN0o7QUFHQSxjQUFjLFlBQVk7QUFBQSxFQUN0QixTQUFTQSxpQkFBVSxXQUFXLE9BQU87QUFDekM7QUNDQSxNQUFNLGdCQUFnQixDQUFDLEVBQUMsU0FBUyxTQUFTLE1BQUEvcUIsT0FBTSxlQUFlLE1BQU0sV0FBVTtBQUU3RSxRQUFNLENBQUMsYUFBYSxjQUFjLElBQUl5SSxhQUFBQSxTQUFTLElBQUk7QUFFbkQsUUFBTSxDQUFDLGNBQWMsZUFBZSxJQUFJQSxhQUFBQSxTQUFTLElBQUk7QUFFL0MsUUFBQSxrQkFBa0IsSUFBSSxlQUFlO0FBRTFCeUUsV0FBVSxRQUFRLFVBQVU7QUFFN0NoRyxlQUFBQSxVQUFVLE1BQU07QUFDWCxRQUFBLFFBQVEsUUFBUSxJQUFJO0FBQ3JCLHFCQUFlLFFBQVEsSUFBSTtBQUFBLElBQUE7QUFBQSxFQUM3QixHQUNDLENBQUMsUUFBUSxJQUFJLENBQUM7QUFFakJBLGVBQUFBLFVBQVUsTUFBTTtBQUNkLG9CQUFnQixPQUFPO0FBQUEsRUFBQSxHQUN0QixDQUFDLE9BQU8sQ0FBQztBQUVjZ0csV0FBVSxRQUFRLFVBQVU7QUFFaEQsUUFBQSxjQUFjLE9BQU8sYUFBYSxrQkFBa0I7QUFFeEQsVUFBTWhRLFFBQU8sTUFBTSxnQkFBZ0Isa0JBQWtCLFFBQVEsTUFBTThDLEtBQUk7QUFFaEUsV0FBQTtBQUFBLE1BQ0wsU0FBUzlDO0FBQUEsTUFDVCxTQUFTO0FBQUEsSUFDWDtBQUFBLEVBQ0Y7QUFFTSxRQUFBLFlBQVksQ0FBQzIxQixhQUFxQjtBQUN0Q0EsYUFBUSxPQUFPN3lCO0FBQ2Y2eUIsYUFBUSxRQUFRLE9BQU8sUUFBUTtBQUMvQixvQkFBZ0IsT0FBT0EsUUFBTyxFQUFFLEtBQUssTUFBTTtBQUN6QyxzQkFBZ0JBLFFBQU87QUFDdkIsb0JBQWNBLFVBQVM3eUIsS0FBSTtBQUNaLHFCQUFBLEtBQUssUUFBUTtBQUFBLElBQUEsQ0FDN0I7QUFBQSxFQUNIO0FBRU0sUUFBQSxhQUFhLENBQUM2eUIsYUFBcUI7QUFDdkNBLGFBQVEsT0FBTzd5QjtBQUNmNnlCLGFBQVEsUUFBUSxPQUFPLFFBQVE7QUFDL0Isb0JBQWdCLE9BQU9BLFFBQU8sRUFBRSxLQUFLLE1BQU07QUFDekMsc0JBQWdCQSxRQUFPO0FBQ3ZCLG9CQUFjQSxVQUFTN3lCLEtBQUk7QUFDWixxQkFBQSxLQUFLLFFBQVE7QUFBQSxJQUFBLENBQzdCO0FBQUEsRUFDSDtBQUVNLFFBQUEsb0JBQW9CLENBQUMsV0FBVztBQUNwQyxvQkFBZ0IsTUFBTTtBQUN0QixrQkFBYyxRQUFRQSxLQUFJO0FBQUEsRUFDNUI7QUFHRSxTQUFBc2Msa0NBQUEsS0FBQyxPQUFJLEVBQUEsV0FBVSxjQUNiLFVBQUE7QUFBQSxJQUFDQSxrQ0FBQUEsS0FBQSxPQUFBLEVBQUksV0FBVSxVQUNYLFVBQUE7QUFBQSxNQUFBbE4sa0NBQUE7QUFBQSxRQUFDO0FBQUEsUUFBQTtBQUFBLFVBQ0MsZ0JBQWM7QUFBQSxVQUNkLGNBQWM7QUFBQSxVQUVkO0FBQUEsVUFDQSxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU87QUFBQSxVQUNuQyxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU8sWUFBWSxNQUFNLE9BQU87QUFBQSxVQUM1RCxVQUFVO0FBQUEsVUFDVixjQUFjO0FBQUEsVUFDZDtBQUFBLFVBQ0EsYUFBWTtBQUFBLFVBQ1osWUFBWSxFQUFFLFNBQVMsWUFBWTtBQUFBLFFBQUE7QUFBQSxRQVI5QixLQUFLLFVBQVUsV0FBVztBQUFBLE1BU25DO0FBQUEsTUFFRSxnQkFBZ0JBLGtDQUFBQSxJQUFDLGVBQWMsRUFBQSxTQUFTLGFBQWMsQ0FBQTtBQUFBLElBQUEsR0FDMUQ7QUFBQSxJQUNBQSxrQ0FBQUEsSUFBQyxTQUNDLFVBQUNBLGtDQUFBLElBQUEsdUJBQUEsRUFBc0IsU0FBUyxjQUFjLFdBQXNCLFlBQXdCLEtBQVcsQ0FBQSxFQUN6RyxDQUFBO0FBQUEsRUFBQSxHQUNGO0FBR0o7QUFFQSxjQUFjLFlBQVk7QUFBQSxFQUN4QixTQUFTMmIsaUJBQVUsV0FBVyxPQUFPO0FBQUEsRUFDckMsU0FBU0EsaUJBQVUsV0FBVyxPQUFPO0FBQUEsRUFDckMsTUFBTUEsaUJBQVUsV0FBVyxJQUFJO0FBQUEsRUFDL0IsTUFBTStILGlCQUFVO0FBQUEsRUFDaEIsZUFBZTlILGlCQUFVO0FBQUEsRUFDekIsTUFBTStILGlCQUFBQTtBQUNSO0FDbkdBLDhCQUFDLFVBQVUsR0FDVixlQUFlO0FBQ2hCLE1BQU0sZUFBZTtBQUFBLEVBQ25CLFlBQW9CM3hCLFFBQWU7QUFBZixTQUFBLFFBQUFBO0FBQUEsRUFBQTtBQUFBLEVBRXBCLE1BQU0sWUFBWSxNQUFnQzs7QUFFaEQsV0FBTyxNQUFNLE1BQU0sSUFBSSxpQ0FBaUMsS0FBSyxNQUFNO0FBQUEsTUFDL0QsU0FBUztBQUFBLFFBQ0wsaUJBQWlCLGNBQVkvRixNQUFBLEtBQUssVUFBTCxnQkFBQUEsSUFBWTtBQUFBLE1BQUE7QUFBQSxJQUM3QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBYztBQUN2QyxZQUFBLFVBQVUsSUFBSSxRQUFRO0FBQzFCLGdCQUFRLE1BQU0sS0FBSztBQUNuQixnQkFBUSxRQUFRLEtBQUs7QUFDckIsZ0JBQVEsV0FBVyxLQUFLO0FBQ3hCLGdCQUFRLE9BQU8sS0FBSztBQUNiLGVBQUE7QUFBQSxNQUFBLENBQ1I7QUFBQSxJQUFBLENBRUo7QUFBQSxFQUFBO0FBRUw7QUFyQkF3ZixTQUFBO0FBQU0saUJBQU4sa0JBQUFBLFFBQUEscUJBRkEsNEJBRU07QUFBTixrQkFBQUEsUUFBQSxHQUFNO0FDRU4sTUFBTSx5QkFBeUIsQ0FBQyxFQUFDLE1BQU0sWUFBVztBQUU5QyxRQUFNLENBQUMsVUFBVSxXQUFXLElBQUlwUyxhQUFBQSxTQUFTLElBQUk7QUFFN0MsUUFBTSxDQUFDLFNBQVMsVUFBVSxJQUFJQSxhQUFBQSxTQUFTLENBQUM7QUFDeEN2QixlQUFBQSxVQUFVLE1BQU07QUFDZCxnQkFBWSxLQUFLLElBQUk7QUFBQSxFQUFBLEdBQ3BCLENBQUMsS0FBSyxJQUFJLENBQUM7QUFFUixRQUFBLGFBQXlCZ0csU0FBVSxRQUFRLFVBQVU7QUFFckQsUUFBQSxjQUFjLE9BQU8sYUFBYSxrQkFBa0I7QUFFaEQsVUFBQSxrQkFBa0IsSUFBSSxlQUFlO0FBRTNDLFVBQU1oUSxRQUFPLE1BQU0sZ0JBQWdCLFlBQVksSUFBSTtBQUU1QyxXQUFBO0FBQUEsTUFDTCxTQUFTQTtBQUFBLE1BQ1QsU0FBUztBQUFBLElBQ1g7QUFBQSxFQUNGO0FBRUZnSyxlQUFBQSxVQUFVLE1BQU07QUFDRCxlQUFBLE1BQU0sUUFBUSxJQUFJO0FBQUEsRUFBQSxHQUM5QixDQUFDLE1BQU0sT0FBTyxDQUFDO0FBRVosUUFBQXdCLFlBQVcsQ0FBQyxXQUFXO0FBQ3pCLFVBQU0sVUFBVTtBQUNoQixRQUFJLFdBQVcsV0FBVyxnQkFBZ0IsRUFBRSxTQUFTO0FBQ3JELGFBQVMsVUFBVTtBQUNuQixlQUFXLGdCQUFnQixRQUFRO0FBQ25DLGVBQVcsT0FBTyxHQUFHO0FBQUEsRUFDekI7QUFJUyxTQUFBMEcsa0NBQUE7QUFBQSxJQUFDO0FBQUEsSUFBQTtBQUFBLE1BQ0UsZ0JBQWM7QUFBQSxNQUNkLFdBQVcsR0FBRyxXQUFXLElBQUkseUJBQXlCLEVBQUU7QUFBQSxNQUV4RCxjQUFjLE1BQU07QUFBQSxNQUNwQixZQUFZLEVBQUMsU0FBUyxZQUFXO0FBQUEsTUFDakMsTUFBTTtBQUFBLE1BQ047QUFBQSxNQUNBLGFBQVk7QUFBQSxNQUNaLGdCQUFnQixDQUFDLFdBQVcsT0FBTztBQUFBLE1BQ25DLGdCQUFnQixDQUFDLFdBQVcsT0FBTztBQUFBLE1BQ25DLFVBQUExRztBQUFBLE1BQ0EsY0FBYztBQUFBLElBQUE7QUFBQSxJQVRULEtBQUssVUFBVSxRQUFRO0FBQUEsRUFVaEM7QUFFWjtBQUVBLHVCQUF1QixZQUFZO0FBQUEsRUFDakMsTUFBTXFpQixpQkFBVSxXQUFXLElBQUk7QUFBQSxFQUMvQixPQUFPQSxpQkFBVSxXQUFXLEtBQUs7QUFDbkM7QUNyREEsTUFBTSxtQkFBbUIsQ0FBQyxFQUFDLE9BQU8sV0FBVTtBQUVwQyxNQUFBLGFBQWE3ZCxTQUFVLFFBQVEsVUFBVTtBQUU3QyxRQUFNLENBQUMsU0FBUyxVQUFVLElBQUl6RSxhQUFBQSxTQUFrQixJQUFJLFNBQVM7QUFFdkQsUUFBQSxnQkFBZ0IsQ0FBQyxTQUFrQnpJLFVBQWlCO0FBQ3RELFFBQUdBLFNBQVEsR0FBRztBQUNDLGlCQUFBLGdCQUFBLEVBQWtCLE1BQU0saUJBQWlCO0FBQ3BELFlBQU0saUJBQWlCO0FBQUEsSUFBQTtBQUUzQixRQUFHQSxTQUFRLEdBQUc7QUFDQyxpQkFBQSxnQkFBQSxFQUFrQixNQUFNLGtCQUFrQjtBQUNyRCxZQUFNLGtCQUFrQjtBQUFBLElBQUE7QUFFNUIsUUFBR0EsU0FBUSxHQUFHO0FBQ0MsaUJBQUEsZ0JBQUEsRUFBa0IsTUFBTSxnQkFBZ0I7QUFDbkQsWUFBTSxnQkFBZ0I7QUFBQSxJQUFBO0FBQUEsRUFFOUI7QUFFQSxTQUVRc2Msa0NBQUEsS0FBQW5FLDRCQUFBLEVBQUEsVUFBQTtBQUFBLElBQUNtRSxrQ0FBQUEsS0FBQSxPQUFBLEVBQUksV0FBVSxRQUNQLFVBQUE7QUFBQSxNQUFDbE4sa0NBQUFBLElBQUEsT0FBQSxFQUFJLFdBQVUsVUFDWCxVQUFBQSxrQ0FBQTtBQUFBLFFBQUM7QUFBQSxRQUFBO0FBQUEsVUFDRztBQUFBLFVBQ0E7QUFBQSxVQUNBLFVBQVU7QUFBQSxRQUFBO0FBQUEsTUFBQSxHQUVsQjtBQUFBLE1BQ0FBLGtDQUFBQSxJQUFDLE9BQUksRUFBQSxXQUFVLFVBQ1gsVUFBQUEsa0NBQUE7QUFBQSxRQUFDO0FBQUEsUUFBQTtBQUFBLFVBQ0c7QUFBQSxVQUFZO0FBQUEsUUFBQTtBQUFBLE1BQUEsRUFFcEIsQ0FBQTtBQUFBLElBQUEsR0FDUjtBQUFBLElBQ0FrTixrQ0FBQUEsS0FBQyxPQUFJLEVBQUEsV0FBVSxjQUNYLFVBQUE7QUFBQSxNQUFBbE4sc0NBQUMsU0FBSSxXQUFVLFVBQ1QsVUFBTSxNQUFBLFFBQVEsUUFBUSxNQUFNQSxrQ0FBQTtBQUFBLFFBQUM7QUFBQSxRQUFBO0FBQUEsVUFDM0IsU0FBUyxNQUFNO0FBQUEsVUFDZixTQUFTLE1BQU07QUFBQSxVQUNmO0FBQUEsVUFDQSxNQUFLO0FBQUEsVUFDTCxNQUFNO0FBQUEsVUFDTjtBQUFBLFFBQUE7QUFBQSxNQUFBLEdBRVI7QUFBQSw0Q0FDQyxPQUFJLEVBQUEsV0FBVSxVQUNULFVBQU0sTUFBQSxRQUFRLFFBQVEsTUFBTUEsa0NBQUE7QUFBQSxRQUFDO0FBQUEsUUFBQTtBQUFBLFVBQzNCLFNBQVMsTUFBTTtBQUFBLFVBQ2YsU0FBUyxNQUFNO0FBQUEsVUFDZjtBQUFBLFVBQ0EsTUFBSztBQUFBLFVBQ0wsTUFBTTtBQUFBLFVBQ047QUFBQSxRQUFBO0FBQUEsTUFBQSxHQUVSO0FBQUEsNENBQ0MsT0FBSSxFQUFBLFdBQVUsVUFDVCxVQUFNLE1BQUEsUUFBUSxRQUFRLE1BQU1BLGtDQUFBO0FBQUEsUUFBQztBQUFBLFFBQUE7QUFBQSxVQUMzQixTQUFTLE1BQU07QUFBQSxVQUNmO0FBQUEsVUFDQSxTQUFTLE1BQU07QUFBQSxVQUNmLE1BQUs7QUFBQSxVQUNMLE1BQU07QUFBQSxVQUNOO0FBQUEsUUFBQTtBQUFBLE1BQUEsRUFFUixDQUFBO0FBQUEsSUFBQSxFQUNKLENBQUE7QUFBQSxFQUFBLEdBQ0o7QUFFUjtBQUVBLGlCQUFpQixZQUFZO0FBQUEsRUFDekIsT0FBTzJiLGlCQUFVLFdBQVcsS0FBSztBQUFBLEVBQ2pDLE1BQU1BLGlCQUFVLFdBQVcsSUFBSTtBQUNuQztBQ25GQSxNQUFNLHNCQUFzQixDQUFDLEVBQUMsWUFBVztBQUVyQyxRQUFNLENBQUMvcUIsT0FBTSxPQUFPLElBQUl5SSxhQUFBQSxTQUFTLENBQUM7QUFDNUIsUUFBQSxhQUF5QnlFLFNBQVUsUUFBUSxVQUFVO0FBRTNELFFBQU0zTCxXQUFVO0FBQUEsSUFDWixFQUFFLE9BQU8sR0FBRyxPQUFPLFVBQVU7QUFBQSxJQUM3QixFQUFFLE9BQU8sR0FBRyxPQUFPLFVBQVU7QUFBQSxJQUM3QixFQUFFLE9BQU8sR0FBRyxPQUFPLFNBQVM7QUFBQSxJQUM1QixFQUFFLE9BQU8sR0FBRyxPQUFPLGFBQWE7QUFBQSxJQUNoQyxFQUFFLE9BQU8sR0FBRyxPQUFPLFdBQVc7QUFBQSxJQUM5QixFQUFFLE9BQU8sR0FBRyxPQUFPLGVBQWU7QUFBQSxJQUNsQyxFQUFFLE9BQU8sR0FBRyxPQUFPLGFBQWE7QUFBQSxFQUNwQztBQUVNLFFBQUFtSCxZQUFXLENBQUMsV0FBVztBQUNyQnNxQixRQUFBQSxTQUFRLFdBQVcsZ0JBQUEsRUFBa0I7QUFDekNBLFdBQU0sT0FBTyxPQUFPO0FBQ3BCLGVBQVcsZ0JBQWdCQSxNQUFLO0FBQ2hDLFlBQVEsTUFBTTtBQUFBLEVBQ2xCO0FBRUE5ckIsZUFBQUEsVUFBVSxNQUFNO0FBQ1osWUFBUSxNQUFNLElBQUk7QUFBQSxFQUFBLEdBQ25CLENBQUMsTUFBTSxJQUFJLENBQUM7QUFFZiwrQ0FDSyxPQUNHLEVBQUEsVUFBQWtJLGtDQUFBO0FBQUEsSUFBQ2dLLCtCQUFBO0FBQUEsSUFBQTtBQUFBLE1BRUcsV0FBVyxHQUFHcFosU0FBUSxJQUFJLHlCQUF5QixFQUFFO0FBQUEsTUFDckQsU0FBQXVCO0FBQUEsTUFDQSxjQUFjQSxTQUFRLE9BQU8sQ0FBQ25GLE9BQU1BLEdBQUUsU0FBUzRELEtBQUksRUFBRSxJQUFJO0FBQUEsTUFDekQsT0FBT3VCLFNBQVEsT0FBTyxDQUFDbkYsT0FBTUEsR0FBRSxTQUFTNEQsS0FBSSxFQUFFLElBQUk7QUFBQSxNQUNsRCxVQUFBMEk7QUFBQSxNQUNBLFlBQVksRUFBRSxTQUFTLFlBQVk7QUFBQSxNQUNuQyxhQUFZO0FBQUEsTUFDWixNQUFLO0FBQUEsSUFBQTtBQUFBLEVBQUEsR0FFYjtBQUVSO0FDM0NBLDJCQUFDLFVBQVUsR0FDVixlQUFlO0FBQ2hCLE1BQU0sWUFBWTtBQUFBLEVBQ2hCLFlBQVl0SCxRQUFlO0FBQ3pCLFlBQVEsSUFBSUEsTUFBSztBQUFBLEVBQUE7QUFBQSxFQUduQixNQUFNLFdBQTRCO0FBRXpCLFdBQUEsTUFBTSxNQUFNLElBQUksbUJBQW1CO0FBQUEsTUFDdEMsU0FBUztBQUFBLFFBQ0wsaUJBQWlCLFlBQVksS0FBSyxNQUFNO0FBQUEsTUFBQTtBQUFBLElBQzVDLENBQ0gsRUFBRSxLQUFLLENBQUUsYUFBYztBQUNwQixhQUFPLFNBQVMsS0FBSyxLQUFLLElBQUksQ0FBQyxTQUFjO0FBQ3ZDLFlBQUEsT0FBTyxJQUFJLEtBQUs7QUFDcEIsYUFBSyxjQUFjLEVBQUMsTUFBTSxLQUFBLENBQUs7QUFDeEIsZUFBQTtBQUFBLE1BQUEsQ0FDUjtBQUFBLElBQUEsQ0FFSjtBQUFBLEVBQUE7QUFFTDtBQXBCQXlaLFNBQUE7QUFBTSxjQUFOLGtCQUFBQSxRQUFBLGtCQUZBLHlCQUVNO0FBQU4sa0JBQUFBLFFBQUEsR0FBTTtBQ0FOLE1BQU0sc0JBQXNCLENBQUMsVUFBVTtBQUU3QixRQUFBLGFBQWEzTixTQUFVLFFBQVEsVUFBVTtBQUV6QyxRQUFBLGVBQWVBLFNBQVUsUUFBUSxXQUFXO0FBQzVDLFFBQUEsZ0JBQWdCQSxTQUFVLFFBQVEsS0FBSztBQUV2QyxRQUFBLGNBQWMsT0FBTyxhQUFhLGtCQUFrQjtBQUV0RCxZQUFRLElBQUksYUFBYTtBQUNuQixVQUFBaFEsUUFBTyxNQUFNLGFBQWEsU0FBUztBQUVsQyxXQUFBO0FBQUEsTUFDTCxTQUFTQTtBQUFBLE1BQ1QsU0FBUztBQUFBLElBQ1g7QUFBQSxFQUNGO0FBR0ksUUFBQXdMLFlBQVcsQ0FBQyxXQUFXO0FBQ2QsZUFBQSxnQkFBQSxFQUFrQixNQUFNLE9BQU87QUFDMUMsVUFBTSxPQUFPLE1BQU07QUFBQSxFQUNyQjtBQUVGLCtDQUNLLE9BQ0ksRUFBQSxVQUFBMEcsa0NBQUE7QUFBQSxJQUFDO0FBQUEsSUFBQTtBQUFBLE1BQ0UsZ0JBQWM7QUFBQSxNQUNkLE9BQU8sTUFBTTtBQUFBLE1BQ2IsWUFBWSxFQUFFLFNBQVMsWUFBWTtBQUFBLE1BQ25DO0FBQUEsTUFDQSxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU87QUFBQSxNQUNuQyxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU87QUFBQSxNQUNuQyxVQUFBMUc7QUFBQSxNQUNBLGNBQWM7QUFBQSxNQUNkLFdBQVcsR0FBRyxNQUFNLEtBQUssUUFBUSxLQUFLLHlCQUF5Qix5QkFBeUI7QUFBQSxNQUN4RixNQUFLO0FBQUEsSUFBQTtBQUFBLEVBQUEsR0FHYjtBQUVSO0FDMUNBLE1BQU0saUJBQWlCLENBQUMsRUFBQyxZQUFXO0FBRWhDLFFBQU0sQ0FBQyxPQUFPLFFBQVEsSUFBSUQsYUFBQUEsU0FBUyxJQUFJO0FBQ2pDLFFBQUEsYUFBeUJ5RSxTQUFVLFFBQVEsVUFBVTtBQUVyRCxRQUFBeEUsWUFBVyxDQUFDLFdBQVc7QUFDckIsUUFBQSxXQUFXLFdBQVcsZ0JBQUEsRUFBa0I7QUFDNUMsYUFBUyxRQUFRLENBQUM7QUFDbEIsZUFBVyxnQkFBZ0IsUUFBUTtBQUNuQyxhQUFTLENBQUMsS0FBSztBQUFBLEVBQ25CO0FBRUF4QixlQUFBQSxVQUFVLE1BQU07QUFDWixhQUFTLE1BQU0sS0FBSztBQUFBLEVBQUEsR0FDckIsQ0FBQyxNQUFNLEtBQUssQ0FBQztBQUVoQiwrQ0FDSyxPQUFJLEVBQUEsV0FBVSxTQUNYLFVBQUNvVixrQ0FBQSxLQUFBLFNBQUEsRUFBTSxXQUFVLDJDQUNmLFVBQUE7QUFBQSxJQUFBbE4sa0NBQUEsSUFBQyxTQUFNLEVBQUEsTUFBSyxZQUFXLE9BQU0sS0FBSSxXQUFVLGdCQUFlLGdCQUFnQixPQUFPLFVBQVUsQ0FBQ2hULE9BQU1zTSxVQUFVLEdBQUU7QUFBQSxJQUM5RzBHLGtDQUFBQSxJQUFDLE9BQUksRUFBQSxXQUFVLHVkQUF1ZCxDQUFBO0FBQUEsSUFDcmVBLGtDQUFBLElBQUEsUUFBQSxFQUFLLFdBQVUsNkRBQTRELFVBQU8sVUFBQSxDQUFBO0FBQUEsRUFBQSxFQUFBLENBQ3JGLEVBQ0osQ0FBQTtBQUVSO0FDMUJBLDRCQUFDLFVBQVUsR0FDVixlQUFlO0FBQ2hCLE1BQU0sYUFBYTtBQUFBLEVBRWpCLFlBQW9CaE8sUUFBZTtBQUFmLFNBQUEsUUFBQUE7QUFBQSxFQUFBO0FBQUEsRUFFbEIsTUFBTSxTQUFTLE1BQThCOztBQUV6QyxXQUFPLE1BQU0sTUFBTSxLQUFLLGdDQUFnQyxFQUFDLFFBQWE7QUFBQSxNQUNsRSxTQUFTO0FBQUEsUUFDTCxpQkFBaUIsY0FBWS9GLE1BQUEsS0FBSyxVQUFMLGdCQUFBQSxJQUFZO0FBQUEsTUFBQTtBQUFBLElBQzdDLENBQ0gsRUFBRSxLQUFLLENBQUUsYUFBYztBQUVoQixVQUFBLFFBQVEsSUFBSSxNQUFNO0FBQ2hCLFlBQUEsY0FBYyxTQUFTLElBQUk7QUFFMUIsYUFBQTtBQUFBLElBQUEsQ0FDVjtBQUFBLEVBQUE7QUFBQSxFQUlMLE1BQU0sVUFBVSxPQUE4Qjs7QUFDMUMsV0FBTyxNQUFNLE1BQU0sS0FBSywwQkFBMEIsT0FBTztBQUFBLE1BQ3JELFNBQVM7QUFBQSxRQUNMLGlCQUFpQixjQUFZQSxNQUFBLEtBQUssVUFBTCxnQkFBQUEsSUFBWTtBQUFBLE1BQUE7QUFBQSxJQUM3QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTO0FBQUEsSUFBQSxDQUNuQjtBQUFBLEVBQUE7QUFBQSxFQUdMLE1BQWEsVUFBVSxPQUE4Qjs7QUFFakQsV0FBTyxNQUFNLE1BQU0sS0FBSyx3QkFBd0IsT0FBTztBQUFBLE1BQ25ELFNBQVM7QUFBQSxRQUNMLGlCQUFpQixjQUFZQSxNQUFBLEtBQUssVUFBTCxnQkFBQUEsSUFBWTtBQUFBLE1BQUE7QUFBQSxJQUM3QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTO0FBQUEsSUFBQSxDQUNuQjtBQUFBLEVBQUE7QUFHVDtBQXpDQXdmLFNBQUE7QUFBTSxlQUFOLGtCQUFBQSxRQUFBLG1CQUZBLDBCQUVNO0FBQU4sa0JBQUFBLFFBQUEsR0FBTTtBQ0ROLE1BQU0sV0FBNkIsQ0FBQyxFQUFFLFlBQVk7QUFFOUMsU0FBQXpMLGtDQUFBQSxJQUFBK0ksa0JBQUFBLFVBQUEsRUFDQyxVQUFLLEtBQUEsYUFBYSxTQUFTO0FBQUEsSUFDMUIsT0FBTztBQUFBLElBQ1AsVUFBVTtBQUFBLEVBQ1QsQ0FBQSxFQUFFLE9BQU8sUUFBTSxHQUFHLEVBQ3JCLENBQUE7QUFFSjtBQ0ZBLE1BQU0sc0JBQXNCclIsUUFBTSxVQUF3QjtBQUFBLEVBUXRELFlBQVksT0FBTztBQUNmLFVBQU0sS0FBSztBQVJmO0FBQ0E7QUFFQSxpQ0FBaUI7QUFBQSxNQUNiLE9BQU8sSUFBSSxNQUFNO0FBQUEsSUFDckI7QUFJUyxTQUFBLGFBQWFvRyxTQUFVLFFBQVEsVUFBVTtBQUN6QyxTQUFBLGVBQWVBLFNBQVUsUUFBUSxZQUFZO0FBQUEsRUFBQTtBQUFBLEVBR3RELG9CQUFvQjtBQUNoQixTQUFLLFdBQVcsZ0JBQWtCLEVBQUEsS0FBSyxhQUFhLEdBQUksQ0FBQyxFQUFFLFVBQVUsQ0FBQzlRLE9BQU0sS0FBSyxLQUFLQSxFQUFDLENBQUM7QUFBQSxFQUFBO0FBQUEsRUFHNUYsTUFBTSxLQUFLQSxJQUFVO0FBQ2pCLFFBQUksU0FBUyxNQUFNLEtBQUssYUFBYSxVQUFVQSxFQUFDO0FBQ2hELFNBQUssU0FBUyxPQUFPO0FBQUEsTUFDakIsT0FBTztBQUFBLElBQUEsRUFDVDtBQUFBLEVBQUE7QUFBQSxFQUdOLFNBQVM7QUFDTCxrREFDSyxNQUNHLEVBQUEsVUFBQTtBQUFBLE1BQUNrZ0Isa0NBQUFBLEtBQUEsU0FBQSxFQUFNLFdBQVUsdUJBQXNCLFVBQUE7QUFBQSxRQUFBO0FBQUEsOENBQVMsVUFBUyxFQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sS0FBSztBQUFBLFFBQUU7QUFBQSw4Q0FBVyxVQUFTLEVBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxLQUFLO0FBQUEsUUFBRTtBQUFBLE1BQUEsR0FBRTtBQUFBLE1BQVE7QUFBQSw0Q0FBVSxVQUFTLEVBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxNQUFPLENBQUE7QUFBQSxJQUFBLEdBQzNNO0FBQUEsRUFBQTtBQUdaO0FDcENBLE1BQU0sa0JBQWtCLENBQUMsRUFBQyxNQUFNLE9BQU8sYUFBWTtBQUczQyxTQUFBQSxrQ0FBQSxLQUFDLE9BQUksRUFBQSxXQUFVLGNBQ1AsVUFBQTtBQUFBLElBQUFsTixzQ0FBQyxPQUNFLEVBQUEsVUFBQUEsa0NBQUFBLElBQUMsZ0JBQWUsRUFBQSxNQUFjLENBQUEsR0FDakM7QUFBQSwwQ0FDQyxPQUFJLEVBQUEsV0FBVSxhQUNaLFVBQUNBLGtDQUFBLElBQUEscUJBQUEsRUFBb0IsTUFBYyxDQUFBLEdBQ3RDO0FBQUEsSUFDQUEsa0NBQUFBLElBQUMsU0FBSSxXQUFVLGFBQ1gsZ0RBQUMscUJBQW9CLEVBQUEsTUFBWSxRQUFnQixFQUNyRCxDQUFBO0FBQUEsSUFDQ0Esa0NBQUEsSUFBQSxPQUFBLEVBQ0csVUFBQ0Esa0NBQUFBLElBQUEsZUFBQSxDQUFBLENBQWMsRUFDbkIsQ0FBQTtBQUFBLEVBQUEsR0FDUjtBQUVSO0FBRUEsZ0JBQWdCLFlBQVk7QUFBQSxFQUN4QixNQUFNMmIsaUJBQVUsV0FBVyxJQUFJO0FBQUEsRUFDL0IsT0FBT0EsaUJBQVUsV0FBVyxLQUFLO0FBQUEsRUFDakMsUUFBUUMsaUJBQUFBO0FBQ1o7QUNqQ08sTUFBTSxhQUFhO0FBQUEsRUFBbkI7QUFDSCw4QkFBYTtBQUNiLGlDQUFnQjtBQUNoQixnQ0FBZTtBQUFBO0FBQUE7QUFFbkI7QUNDQSxtQ0FBQyxVQUFVLEdBQ1YsZUFBZTtBQUNoQixNQUFNLG9CQUFvQjtBQUFBLEVBQ3hCLFlBQW9CNXBCLFFBQWU7QUFBZixTQUFBLFFBQUFBO0FBQUEsRUFBQTtBQUFBLEVBRXBCLE1BQU0saUJBQWlCLGFBQXFCLE1BQXFDO0FBRS9FLFdBQU8sTUFBTSxNQUFNLElBQUksb0NBQW9DLEtBQUssT0FBTyxXQUFXLGFBQWE7QUFBQSxNQUMzRixTQUFTO0FBQUEsUUFDTCxpQkFBaUIsWUFBWSxLQUFLLE1BQU07QUFBQSxNQUFBO0FBQUEsSUFDNUMsQ0FDSCxFQUFFLEtBQUssQ0FBRSxhQUFjO0FBRXBCLFVBQUksT0FBdUIsQ0FBQztBQUU1QixlQUFTLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBYztBQUNwQyxZQUFJLEtBQUssSUFBSSxhQUFBO0FBQ2IsV0FBRyxLQUFLLEtBQUs7QUFDYixXQUFHLFFBQVEsS0FBSztBQUNoQixXQUFHLE9BQU8sS0FBSztBQUVmLGFBQUssS0FBSyxFQUFFO0FBRVAsYUFBQSxTQUFTLElBQUksQ0FBQyxRQUFhO0FBQzVCLGNBQUksTUFBTSxJQUFJLGFBQUE7QUFDZCxjQUFJLEtBQUssSUFBSTtBQUNULGNBQUEsUUFBUSxRQUFRLElBQUk7QUFDeEIsY0FBSSxPQUFPLElBQUk7QUFDZixlQUFLLEtBQUssR0FBRztBQUFBLFFBQUEsQ0FDaEI7QUFFTSxlQUFBO0FBQUEsTUFBQSxDQUNSO0FBRU0sYUFBQTtBQUFBLElBQUEsQ0FDVjtBQUFBLEVBQUE7QUFFTDtBQW5DQXlaLFNBQUE7QUFBTSxzQkFBTixrQkFBQUEsUUFBQSwwQkFGQSxpQ0FFTTtBQUFOLGtCQUFBQSxRQUFBLEdBQU07Ozs7Ozs7O0FDTk4sTUFBSWhULG1CQUFrQmxJLHNCQUFnRDtBQUN0RSxNQUFJaUosaUJBQWdCeEYscUJBQStDO0FBQ25FLE1BQUl5b0Isa0JBQWlCNUsscUJBQStDO0FBQ3BFLE1BQUk1WSw0QkFBMkI2WSwrQkFBeUQ7QUFDeEYsTUFBSXBhLFNBQVFxYSxlQUFnQjtBQUM1QixNQUFJeGtCLFNBQStDeWtCLDhDQUFBO0FBRW5ELE1BQUk3WSxhQUFZLENBQUMsa0JBQWtCLGdCQUFnQixlQUFlLFdBQVcsYUFBYSxpQkFBaUIsY0FBYztBQUN6SCxXQUFTLFNBQVNDLE9BQU07QUFDdEIsUUFBSSxzQkFBc0JBLE1BQUssZ0JBQzdCLHNCQUFzQix3QkFBd0IsU0FBUyxRQUFRLHFCQUMvRCxvQkFBb0JBLE1BQUssY0FDekIsZUFBZSxzQkFBc0IsU0FBUyxRQUFRLG1CQUN0RCxtQkFBbUJBLE1BQUs7QUFDeEIsSUFBQUEsTUFBSztBQUNMLFFBQUksaUJBQWlCQSxNQUFLLFdBQzFCLGlCQUFpQixtQkFBbUIsU0FBUyxRQUFRLGdCQUNyRCxxQkFBcUJBLE1BQUssZUFDMUIsb0JBQW9CQSxNQUFLLGNBQ3pCLGVBQWUsc0JBQXNCLFNBQVMsT0FBTyxtQkFDckQsa0JBQWtCSCwwQkFBeUJHLE9BQU1ELFVBQVM7QUFDNUQsUUFBSSxrQkFBa0IsZ0JBQWdCO0FBQ3RDLFFBQUksY0FBY3pCLE9BQU0sT0FBTyxNQUFTO0FBQ3hDLFFBQUksVUFBVUEsT0FBTSxPQUFPLEtBQUs7QUFDaEMsUUFBSSxZQUFZQSxPQUFNLFNBQVMsTUFBTSxRQUFRLG1CQUFtQixJQUFJLHNCQUFzQixNQUFTLEdBQ2pHLGFBQWEra0IsZ0JBQWUsV0FBVyxDQUFDLEdBQ3hDLGlCQUFpQixXQUFXLENBQUMsR0FDN0Isb0JBQW9CLFdBQVcsQ0FBQztBQUNsQyxRQUFJLGFBQWEva0IsT0FBTSxTQUFTLE9BQU8sb0JBQW9CLGNBQWMsa0JBQWtCLEVBQUUsR0FDM0YsYUFBYStrQixnQkFBZSxZQUFZLENBQUMsR0FDekMsa0JBQWtCLFdBQVcsQ0FBQyxHQUM5QixxQkFBcUIsV0FBVyxDQUFDO0FBQ25DLFFBQUksYUFBYS9rQixPQUFNLFNBQVMsd0JBQXdCLElBQUksR0FDMUQsYUFBYStrQixnQkFBZSxZQUFZLENBQUMsR0FDekMsWUFBWSxXQUFXLENBQUMsR0FDeEIsZUFBZSxXQUFXLENBQUM7QUFDN0IsUUFBSSxhQUFhL2tCLE9BQU0sU0FBUyxNQUFTLEdBQ3ZDLGFBQWEra0IsZ0JBQWUsWUFBWSxDQUFDLEdBQ3pDLG1CQUFtQixXQUFXLENBQUMsR0FDL0Isc0JBQXNCLFdBQVcsQ0FBQztBQUNwQyxRQUFJLGFBQWEva0IsT0FBTSxTQUFTLEVBQUUsR0FDaEMsY0FBYytrQixnQkFBZSxZQUFZLENBQUMsR0FDMUMsZ0JBQWdCLFlBQVksQ0FBQyxHQUM3QixtQkFBbUIsWUFBWSxDQUFDO0FBQ2xDLFFBQUksY0FBYy9rQixPQUFNLFNBQVMsS0FBSyxHQUNwQyxjQUFjK2tCLGdCQUFlLGFBQWEsQ0FBQyxHQUMzQyxtQkFBbUIsWUFBWSxDQUFDLEdBQ2hDLHNCQUFzQixZQUFZLENBQUM7QUFDckMsUUFBSSxjQUFjL2tCLE9BQU0sU0FBUyxFQUFFLEdBQ2pDLGNBQWMra0IsZ0JBQWUsYUFBYSxDQUFDLEdBQzNDLGVBQWUsWUFBWSxDQUFDLEdBQzVCLGtCQUFrQixZQUFZLENBQUM7QUFDakMsUUFBSSxjQUFjL2tCLE9BQU0sU0FBUyxNQUFTLEdBQ3hDLGNBQWMra0IsZ0JBQWUsYUFBYSxDQUFDLEdBQzNDLHFCQUFxQixZQUFZLENBQUMsR0FDbEMsd0JBQXdCLFlBQVksQ0FBQztBQUN2QyxRQUFJLGNBQWMva0IsT0FBTSxTQUFTLE1BQVMsR0FDeEMsY0FBYytrQixnQkFBZSxhQUFhLENBQUMsR0FDM0MsbUJBQW1CLFlBQVksQ0FBQyxHQUNoQyxzQkFBc0IsWUFBWSxDQUFDO0FBQ3JDLFFBQUksaUJBQWlCLGtCQUFrQjtBQUNyQyxzQkFBZ0IsQ0FBQSxDQUFFO0FBQ2xCLDBCQUFvQixZQUFZO0FBQUEsSUFDcEM7QUFDRSxRQUFJLHdCQUF3QixvQkFBb0I7QUFDOUMsd0JBQWtCLE1BQU0sUUFBUSxtQkFBbUIsSUFBSSxzQkFBc0IsTUFBUztBQUN0Riw0QkFBc0IsbUJBQW1CO0FBQUEsSUFDN0M7QUFDRSxJQUFBL2tCLE9BQU0sVUFBVSxXQUFZO0FBQzFCLGNBQVEsVUFBVTtBQUNsQixhQUFPLFdBQVk7QUFDakIsZ0JBQVEsVUFBVTtBQUFBLE1BQ25CO0FBQUEsSUFDRixHQUFFLEVBQUU7QUFDTCxRQUFJLGNBQWNBLE9BQU0sWUFBWSxTQUFVLFlBQVksVUFBVTtBQUNsRSxVQUFJLENBQUMsaUJBQWtCLFFBQU8sU0FBVTtBQUN4QyxVQUFJLFNBQVMsaUJBQWlCLFlBQVksUUFBUTtBQUNsRCxVQUFJLFVBQVUsT0FBTyxPQUFPLFNBQVMsWUFBWTtBQUMvQyxlQUFPLEtBQUssVUFBVSxXQUFZO0FBQ2hDLGlCQUFPLFNBQVU7QUFBQSxRQUN6QixDQUFPO0FBQUEsTUFDUDtBQUFBLElBQ0EsR0FBSyxDQUFDLGdCQUFnQixDQUFDO0FBQ3JCLElBQUFBLE9BQU0sVUFBVSxXQUFZO0FBQzFCLFVBQUksd0JBQXdCLE1BQU07QUFDaEMsb0JBQVksaUJBQWlCLFNBQVV2RixVQUFTO0FBQzlDLGNBQUksQ0FBQyxRQUFRLFFBQVM7QUFDdEIsNEJBQWtCQSxZQUFXLEVBQUU7QUFDL0IsdUJBQWEsQ0FBQyxDQUFDLFlBQVksT0FBTztBQUFBLFFBQzFDLENBQU87QUFBQSxNQUNQO0FBQUEsSUFJRyxHQUFFLEVBQUU7QUFDTCxRQUFJLGdCQUFnQnVGLE9BQU0sWUFBWSxTQUFVLFVBQVUsWUFBWTtBQUNwRSxVQUFJLGFBQWFuSyxPQUFNLGtCQUFrQixVQUFVLFlBQVksa0JBQWtCO0FBQ2pGLFVBQUksQ0FBQyxZQUFZO0FBQ2Ysb0JBQVksVUFBVTtBQUN0QiwyQkFBbUIsRUFBRTtBQUNyQiw0QkFBb0IsRUFBRTtBQUN0Qix5QkFBaUIsQ0FBQSxDQUFFO0FBQ25CLHFCQUFhLEtBQUs7QUFDbEIsNEJBQW9CLEtBQUs7QUFDekI7QUFBQSxNQUNOO0FBQ0ksVUFBSSxnQkFBZ0IsYUFBYSxVQUFVLEdBQUc7QUFDNUMsMkJBQW1CLFVBQVU7QUFDN0IsNEJBQW9CLFVBQVU7QUFDOUIseUJBQWlCLGFBQWEsVUFBVSxDQUFDO0FBQ3pDLHFCQUFhLEtBQUs7QUFDbEIsNEJBQW9CLEtBQUs7QUFBQSxNQUMvQixPQUFXO0FBQ0wsWUFBSSxVQUFVLFlBQVksVUFBVSxDQUFFO0FBQ3RDLDJCQUFtQixVQUFVO0FBQzdCLHFCQUFhLElBQUk7QUFDakIsNEJBQW9CLENBQUMsZ0JBQWdCO0FBQ3JDLG9CQUFZLFlBQVksU0FBVTRFLFVBQVM7QUFDekMsY0FBSSxDQUFDLFFBQVM7QUFDZCxjQUFJLFlBQVksWUFBWSxRQUFTO0FBQ3JDLHNCQUFZLFVBQVU7QUFDdEIsdUJBQWEsS0FBSztBQUNsQiw4QkFBb0IsVUFBVTtBQUM5QiwyQkFBaUJBLFlBQVcsRUFBRTtBQUM5Qiw4QkFBb0IsS0FBSztBQUN6QiwwQkFBZ0JBLFdBQVVxSCxlQUFjQSxlQUFjLENBQUEsR0FBSSxZQUFZLEdBQUcsSUFBSWYsaUJBQWdCLENBQUEsR0FBSSxZQUFZdEcsUUFBTyxDQUFDLElBQUksWUFBWTtBQUFBLFFBQzdJLENBQU87QUFBQSxNQUNQO0FBQUEsSUFDQSxHQUFLLENBQUMsY0FBYyxhQUFhLGtCQUFrQixjQUFjLGtCQUFrQixDQUFDO0FBQ2xGLFFBQUlBLFdBQVUsbUJBQW1CLENBQUUsSUFBRyxtQkFBbUIsbUJBQW1CLGdCQUFnQixrQkFBa0IsQ0FBRTtBQUNoSCxXQUFPcUgsZUFBY0EsZUFBYyxDQUFFLEdBQUUsZUFBZSxHQUFHLENBQUEsR0FBSTtBQUFBLE1BQzNELFNBQVNySDtBQUFBLE1BQ1QsV0FBVyxhQUFhO0FBQUEsTUFDeEI7QUFBQSxNQUNBO0FBQUEsSUFDSixDQUFHO0FBQUEsRUFDSDtBQUVBLDRCQUFBLFdBQW1COzs7Ozs7OztBQzFJbkIsV0FBTyxlQUFjLFNBQVUsY0FBYyxFQUFFLE9BQU8sTUFBTTtBQUU1RCxRQUFJc0gsWUFBV2xKLGdCQUF5QztBQUN4RCxRQUFJbUgsU0FBUTFELGVBQWdCO0FBQzVCLFFBQUlnVyxVQUEwRDZILCtDQUFBO0FBQzlELFFBQUk2SyxtQkFBNEU1Syx3REFBQTtBQUNoRixRQUFJLFdBQThEQyxpREFBQTtBQUNuQkMseUJBQUE7QUFDQ08sMEJBQUE7QUFDSEMsdUJBQUE7QUFDSEksb0JBQUE7QUFDR0MsdUJBQUE7QUFDTUMsNkJBQUE7QUFHSkcseUJBQUE7QUFDVUMsbUNBQUE7QUFDakJDLG1CQUFBO0FBQ2VDLGlDQUFBO0FBQ1BDLDBCQUFBO0FBQzVCQyxvQkFBQTtBQUtwQixhQUFTLGtCQUFrQnRtQixJQUFHO0FBQzVCLFVBQUlBLE1BQUtBLEdBQUUsV0FBWSxRQUFPQTtBQUM5QixVQUFJaUIsS0FBSSx1QkFBTyxPQUFPLElBQUk7QUFDMUIsVUFBSWpCLElBQUc7QUFDTCxlQUFPLEtBQUtBLEVBQUMsRUFBRSxRQUFRLFNBQVVELElBQUc7QUFDbEMsY0FBSUEsT0FBTSxXQUFXO0FBQ25CLGdCQUFJMEMsS0FBSSxPQUFPLHlCQUF5QnpDLElBQUdELEVBQUM7QUFDNUMsbUJBQU8sZUFBZWtCLElBQUdsQixJQUFHMEMsR0FBRSxNQUFNQSxLQUFJO0FBQUEsY0FDdEMsWUFBWTtBQUFBLGNBQ1osS0FBSyxXQUFZO0FBQUUsdUJBQU96QyxHQUFFRCxFQUFDO0FBQUEsY0FBRTtBQUFBLFlBQ3pDLENBQVM7QUFBQSxVQUNUO0FBQUEsUUFDQSxDQUFLO0FBQUEsTUFDTDtBQUNFLE1BQUFrQixHQUFFLFNBQVMsSUFBSWpCO0FBQ2YsYUFBTyxPQUFPLE9BQU9pQixFQUFDO0FBQUEsSUFDeEI7QUFFQSxRQUFJLG1CQUFnQyxrQ0FBa0J5SixNQUFLO0FBRTNELFFBQUksY0FBMkIsZ0JBQUFBLE9BQU0sV0FBVyxTQUFVLE9BQU8ySCxNQUFLO0FBQ3BFLFVBQUksb0JBQW9CLFNBQVMsU0FBUyxLQUFLO0FBQy9DLFVBQUksY0FBY3FkLGlCQUFnQixnQkFBZ0IsaUJBQWlCO0FBQ25FLGFBQW9CLGlDQUFpQixjQUFjMVMsUUFBTyxRQUFRdlEsVUFBUztBQUFBLFFBQ3pFLEtBQUs0RjtBQUFBLE1BQ04sR0FBRSxXQUFXLENBQUM7QUFBQSxJQUNqQixDQUFDO0FBQ0QsUUFBSSxnQkFBZ0I7QUFFcEIsWUFBbUIsV0FBQSxTQUFTO0FBQzVCLFlBQVEsU0FBUyxJQUFJO0FBQUE7Ozs7Ozs7QUN2RHNCO0FBQ2xDd2tCLHlCQUFBLFVBQVV0ekIsaUNBQTBDO0FBQUE7Ozs7Ozs7OztBQ0g3QywrQkFBQSxXQUFHQSw0QkFBc0MsRUFBQzs7OztBQ1MxRCxNQUFNLHFCQUFxQixDQUFDLFVBQVU7QUFDTHVOLFdBQVUsUUFBUSxVQUFVO0FBRXJELFFBQUEsY0FBYyxPQUFPLGdCQUFnQjtBQUNuQyxVQUFBLG1CQUFtQixJQUFJLG9CQUFvQjtBQUVqRCxXQUFPLE1BQU0saUJBQWlCLGlCQUFpQixhQUFhLE1BQU0sSUFBSTtBQUFBLEVBQ3hFO0FBRU0sUUFBQXhFLFlBQVcsQ0FBQyxXQUFXO0FBQ3ZCLFFBQUEsT0FBTyxNQUFNLGFBQWEsWUFBWTtBQUN4QyxZQUFNLFNBQVMsTUFBTTtBQUFBLElBQUE7QUFBQSxFQUV6QjtBQUdJLFNBQUEwRyxrQ0FBQTtBQUFBLElBQUM4akIsb0NBQUE7QUFBQSxJQUFBO0FBQUEsTUFDRyxnQkFBYztBQUFBLE1BRWQsT0FBTyxNQUFNO0FBQUEsTUFDYjtBQUFBLE1BQ0EsZ0JBQWdCLENBQUMsV0FBVyxPQUFPO0FBQUEsTUFDbkMsVUFBQXhxQjtBQUFBLE1BQ0EsY0FBYztBQUFBLElBQUE7QUFBQSxJQUxULEtBQUssVUFBVSxNQUFNLEtBQUssSUFBSTtBQUFBLEVBTXZDO0FBRU47QUFFQSxtQkFBbUIsWUFBWTtBQUFBLEVBQzdCLE1BQU1xaUIsaUJBQVUsV0FBVyxJQUFJO0FBQUEsRUFDL0IsT0FBT0EsaUJBQVUsV0FBVyxZQUFZO0FBQUEsRUFDeEMsVUFBVUMsaUJBQUFBO0FBQ1o7QUNqQ0EsOEJBQUMsVUFBVSxHQUNWLGVBQWU7QUFDaEIsTUFBTSxlQUFlO0FBQUEsRUFDbkIsWUFBb0I1cEIsUUFBZTtBQUFmLFNBQUEsUUFBQUE7QUFBQSxFQUFBO0FBQUEsRUFFbEIsTUFBTSxrQkFBa0IsTUFBYyxNQUFnQzs7QUFFbEUsV0FBTyxNQUFNLE1BQU0sSUFBSSxvQ0FBb0MsS0FBSyxPQUFPLE1BQU0sTUFBTTtBQUFBLE1BQy9FLFNBQVM7QUFBQSxRQUNMLGlCQUFpQixjQUFZL0YsTUFBQSxLQUFLLFVBQUwsZ0JBQUFBLElBQVk7QUFBQSxNQUFBO0FBQUEsSUFDN0MsQ0FDSCxFQUFFLEtBQUssQ0FBRSxhQUFjO0FBQ3BCLGFBQU8sU0FBUyxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQWM7QUFDckMsWUFBQWlDLEtBQUksSUFBSSxRQUFRO0FBQ3BCLFFBQUFBLEdBQUUsS0FBSyxLQUFLO0FBQ1osUUFBQUEsR0FBRSxRQUFRLEtBQUs7QUFDZixRQUFBQSxHQUFFLE9BQU8sS0FBSztBQUNaLFFBQUFBLEdBQUEseUJBQXlCLE1BQU0sS0FBSztBQUUvQixlQUFBQTtBQUFBLE1BQUEsQ0FDVjtBQUFBLElBQUEsQ0FFSjtBQUFBLEVBQUE7QUFBQSxFQUdMLE1BQU0sWUFBWSxjQUFnRDs7QUFFOUQsV0FBTyxNQUFNLE1BQU0sSUFBSSw0Q0FBNEMsYUFBYSxNQUFNO0FBQUEsTUFDbEYsU0FBUztBQUFBLFFBQ0wsaUJBQWlCLGNBQVlqQyxNQUFBLEtBQUssVUFBTCxnQkFBQUEsSUFBWTtBQUFBLE1BQUE7QUFBQSxJQUM3QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBYztBQUN2QyxZQUFBaUMsS0FBSSxJQUFJLFFBQVE7QUFDcEIsUUFBQUEsR0FBRSxLQUFLLEtBQUs7QUFDWixRQUFBQSxHQUFFLFFBQVEsS0FBSztBQUNmLFFBQUFBLEdBQUUsT0FBTyxLQUFLO0FBQ1osUUFBQUEsR0FBQSx5QkFBeUIsTUFBTSxLQUFLO0FBRS9CLGVBQUFBO0FBQUEsTUFBQSxDQUNSO0FBQUEsSUFBQSxDQUVKO0FBQUEsRUFBQTtBQUFBLEVBR0wsTUFBTSxvQkFBb0IsU0FBa0IsVUFBcUM7O0FBQzdFLFdBQU8sTUFBTSxNQUFNLEtBQUsscUNBQXFDLFFBQVEsTUFBTSxVQUFVO0FBQUEsTUFDakYsU0FBUztBQUFBLFFBQ0wsaUJBQWlCLGNBQVlqQyxNQUFBLEtBQUssVUFBTCxnQkFBQUEsSUFBWTtBQUFBLE1BQUE7QUFBQSxJQUM3QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTO0FBQUEsSUFBQSxDQUNuQjtBQUFBLEVBQUE7QUFBQSxFQUdMLE1BQU0sWUFBWSxTQUFrQixVQUFnQzs7QUFDaEUsV0FBTyxNQUFNLE1BQU0sS0FBSyxxQ0FBcUMsUUFBUSxNQUFNLFVBQVU7QUFBQSxNQUNqRixTQUFTO0FBQUEsUUFDTCxpQkFBaUIsY0FBWUEsTUFBQSxLQUFLLFVBQUwsZ0JBQUFBLElBQVk7QUFBQSxNQUFBO0FBQUEsSUFDN0MsQ0FDSCxFQUFFLEtBQUssQ0FBRSxhQUFjO0FBQ3BCLGFBQU8sU0FBUztBQUFBLElBQUEsQ0FDbkI7QUFBQSxFQUFBO0FBRVQ7QUE5REF3ZixVQUFBO0FBQU0saUJBQU4sa0JBQUFBLFNBQUEscUJBRkEsNEJBRU07QUFBTixrQkFBQUEsU0FBQSxHQUFNO0FDVm9GLFNBQVMsRUFBRXplLElBQUVzQixJQUFFb0IsSUFBRTtBQUFDLE1BQUk5RCxLQUFFLE1BQUsrQyxLQUFFUCxvQkFBRSxJQUFJLEdBQUVrSyxLQUFFbEssb0JBQUUsQ0FBQyxHQUFFOUIsS0FBRThCLGFBQUMsT0FBQyxJQUFJLEdBQUVKLEtBQUVJLGFBQUMsT0FBQyxFQUFFLEdBQUVHLEtBQUVILGFBQUFBLE9BQUcsR0FBQ3lCLEtBQUV6QixvQkFBRyxHQUFDcUIsS0FBRXJCLGFBQUFBLE9BQUVwQixFQUFDLEdBQUU0QyxLQUFFeEIsYUFBQUEsT0FBRSxJQUFFO0FBQUUsRUFBQXFCLEdBQUUsVUFBUXpDO0FBQUUsTUFBSWtCLEtBQUUsZUFBYSxPQUFPLFFBQU9NLEtBQUUsQ0FBQ0YsTUFBRyxNQUFJQSxNQUFHSjtBQUFFLE1BQUcsY0FBWSxPQUFPbEIsR0FBRSxPQUFNLElBQUksVUFBVSxxQkFBcUI7QUFBRSxFQUFBc0IsS0FBRSxDQUFDQSxNQUFHO0FBQUUsTUFBSW9GLEtBQUUsQ0FBQyxFQUFFaEUsS0FBRUEsTUFBRyxDQUFFLEdBQUUsU0FBUXhELEtBQUUsRUFBRSxjQUFhd0QsT0FBSSxDQUFDLENBQUNBLEdBQUUsVUFBU0MsS0FBRSxhQUFZRCxJQUFFdEQsS0FBRSxzQkFBcUJzRCxNQUFHLENBQUMsQ0FBQ0EsR0FBRSxrQkFBaUJULEtBQUVVLEtBQUUsS0FBSyxJQUFJLENBQUNELEdBQUUsV0FBUyxHQUFFcEIsRUFBQyxJQUFFO0FBQUtMLHlCQUFFLFdBQVU7QUFBQyxXQUFPMkIsR0FBRSxVQUFRLE1BQUcsV0FBVTtBQUFDLE1BQUFBLEdBQUUsVUFBUTtBQUFBLElBQUU7QUFBQSxFQUFDLEdBQUUsQ0FBQSxDQUFFO0FBQUUsTUFBSWxCLEtBQUVMLHFCQUFFLFdBQVU7QUFBQyxRQUFJRCxLQUFFLFNBQVNBLElBQUU7QUFBQyxVQUFJSCxLQUFFRCxHQUFFLFNBQVFLLEtBQUVFLEdBQUU7QUFBUSxhQUFPUCxHQUFFLFVBQVFPLEdBQUUsVUFBUSxNQUFLK0osR0FBRSxVQUFRbEssSUFBRXlCLEdBQUUsVUFBUUosR0FBRSxRQUFRLE1BQU1wQixJQUFFSixFQUFDO0FBQUEsSUFBQyxHQUFFQSxLQUFFLFNBQVNHLElBQUVILElBQUU7QUFBQyxNQUFBTyxNQUFHLHFCQUFxQmxDLEdBQUUsT0FBTyxHQUFFQSxHQUFFLFVBQVFrQyxLQUFFLHNCQUFzQkosRUFBQyxJQUFFLFdBQVdBLElBQUVILEVBQUM7QUFBQSxJQUFDLEdBQUVJLEtBQUUsU0FBU0QsSUFBRTtBQUFDLFVBQUcsQ0FBQ3dCLEdBQUUsUUFBUSxRQUFNO0FBQUcsVUFBSTNCLEtBQUVHLEtBQUVPLEdBQUU7QUFBUSxhQUFNLENBQUNBLEdBQUUsV0FBU1YsTUFBR0ssTUFBR0wsS0FBRSxLQUFHMEIsTUFBR3ZCLEtBQUVrSyxHQUFFLFdBQVNySjtBQUFBLElBQUMsR0FBRWpDLEtBQUUsU0FBU2lCLElBQUU7QUFBQyxhQUFPM0IsR0FBRSxVQUFRLE1BQUtKLE1BQUc4QixHQUFFLFVBQVFJLEdBQUVILEVBQUMsS0FBR0QsR0FBRSxVQUFRTyxHQUFFLFVBQVEsTUFBS3NCLEdBQUU7QUFBQSxJQUFRLEdBQUVILEtBQUUsU0FBU3RCLEtBQUc7QUFBQyxVQUFJc0IsS0FBRSxLQUFLLElBQUs7QUFBQyxVQUFHckIsR0FBRXFCLEVBQUMsRUFBRSxRQUFPMUMsR0FBRTBDLEVBQUM7QUFBRSxVQUFHRSxHQUFFLFNBQVE7QUFBQyxZQUFJaEUsS0FBRTBDLE1BQUdvQixLQUFFZixHQUFFLFVBQVNyQyxLQUFFcUQsS0FBRSxLQUFLLElBQUkvRCxJQUFFcUQsTUFBR1MsS0FBRTRJLEdBQUUsUUFBUSxJQUFFMU07QUFBRSxRQUFBcUMsR0FBRUcsSUFBRTlCLEVBQUM7QUFBQSxNQUFDO0FBQUEsSUFBQyxHQUFFb0MsS0FBRSxXQUFVO0FBQUMsVUFBR1IsTUFBRzlCLElBQUU7QUFBQyxZQUFJWSxLQUFFLEtBQUssT0FBTXlDLEtBQUVwQixHQUFFckIsRUFBQztBQUFFLFlBQUdnQixHQUFFLFVBQVEsQ0FBRSxFQUFDLE1BQU0sS0FBSyxTQUFTLEdBQUVPLEdBQUUsVUFBUTNDLElBQUUrQyxHQUFFLFVBQVEzQixJQUFFeUMsSUFBRTtBQUFDLGNBQUcsQ0FBQ25ELEdBQUUsV0FBU3NELEdBQUUsUUFBUSxRQUFPMEksR0FBRSxVQUFRM0osR0FBRSxTQUFRVixHQUFFeUIsSUFBRXBCLEVBQUMsR0FBRW9GLEtBQUV0RixHQUFFTyxHQUFFLE9BQU8sSUFBRWtCLEdBQUU7QUFBUSxjQUFHRixHQUFFLFFBQU8xQixHQUFFeUIsSUFBRXBCLEVBQUMsR0FBRUYsR0FBRU8sR0FBRSxPQUFPO0FBQUEsUUFBQztBQUFDLGVBQU9yQyxHQUFFLFdBQVMyQixHQUFFeUIsSUFBRXBCLEVBQUMsR0FBRXVCLEdBQUU7QUFBQSxNQUFPO0FBQUEsSUFBQztBQUFFLFdBQU9uQixHQUFFLFNBQU8sV0FBVTtBQUFDLE1BQUFwQyxHQUFFLFlBQVVrQyxLQUFFLHFCQUFxQmxDLEdBQUUsT0FBTyxJQUFFLGFBQWFBLEdBQUUsT0FBTyxJQUFHZ00sR0FBRSxVQUFRLEdBQUV0SyxHQUFFLFVBQVFXLEdBQUUsVUFBUUosR0FBRSxVQUFRakMsR0FBRSxVQUFRO0FBQUEsSUFBSSxHQUFFb0MsR0FBRSxZQUFVLFdBQVU7QUFBQyxhQUFNLENBQUMsQ0FBQ3BDLEdBQUU7QUFBQSxJQUFPLEdBQUVvQyxHQUFFLFFBQU0sV0FBVTtBQUFDLGFBQU9wQyxHQUFFLFVBQVFVLEdBQUUsS0FBSyxJQUFLLENBQUEsSUFBRTZDLEdBQUU7QUFBQSxJQUFPLEdBQUVuQjtBQUFBLEVBQUMsR0FBRSxDQUFDZ0YsSUFBRS9ELElBQUVyQixJQUFFVyxJQUFFL0MsSUFBRXNDLElBQUVOLElBQUU5QixFQUFDLENBQUM7QUFBRSxTQUFPc0M7QUFBQztBQUFDLFNBQVMsRUFBRU4sSUFBRUgsSUFBRTtBQUFDLFNBQU9HLE9BQUlIO0FBQUM7QUFBQyxTQUFTLEVBQUVBLElBQUVJLElBQUVNLElBQUU7QUFBQyxNQUFJMkosS0FBbUIsR0FBRWhNLEtBQUU4QixhQUFDLE9BQUNILEVBQUMsR0FBRUQsS0FBRWhCLGFBQUMsU0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFFdUIsS0FBRSxFQUFFRCx5QkFBRSxTQUFTRixJQUFFO0FBQUMsSUFBQTlCLEdBQUUsVUFBUThCLElBQUVKLEdBQUUsQ0FBRSxDQUFBO0FBQUEsRUFBQyxHQUFFLENBQUNBLEVBQUMsQ0FBQyxHQUFFSyxJQUFFTSxFQUFDLEdBQUVrQixLQUFFekIsYUFBQyxPQUFDSCxFQUFDO0FBQUUsU0FBT3FLLEdBQUV6SSxHQUFFLFNBQVE1QixFQUFDLE1BQUlNLEdBQUVOLEVBQUMsR0FBRTRCLEdBQUUsVUFBUTVCLEtBQUcsQ0FBQzNCLEdBQUUsU0FBUWlDLEVBQUM7QUFBQztBQ1d0MEQsTUFBTSxnQkFBZ0IsQ0FBQyxVQUFVO0FBRUF1UCxXQUFVLFFBQVEsVUFBVTtBQUVyRCxRQUFBLGNBQWMsT0FBTyxnQkFBZ0I7QUFDekMsUUFBRyxlQUFlLE1BQU0sTUFBTSxhQUFhLFFBQVEsSUFBSTtBQUNyRCxhQUFPLENBQUM7QUFBQSxJQUFBO0FBRUosVUFBQSxjQUFjLElBQUksZUFBZTtBQUN2QyxRQUFHLGVBQWUsSUFBSTtBQUNwQixhQUFPLE1BQU0sWUFBWSxrQkFBa0IsYUFBYSxNQUFNLElBQUk7QUFBQSxJQUFBLE9BQy9EO0FBQ0gsYUFBTyxNQUFNLFlBQVksWUFBWSxNQUFNLFlBQVk7QUFBQSxJQUFBO0FBQUEsRUFFM0Q7QUFFNEJpbUIsSUFBWSxhQUFhLEdBQUc7QUFFbEQsUUFBQXpxQixZQUFXLENBQUMsV0FBVztBQUN2QixRQUFBLE9BQU8sTUFBTSxhQUFhLFlBQVk7QUFDeEMsWUFBTSxTQUFTLE1BQU07QUFBQSxJQUFBO0FBQUEsRUFFekI7QUFHSSxTQUFBMEcsa0NBQUE7QUFBQSxJQUFDOGpCLG9DQUFBO0FBQUEsSUFBQTtBQUFBLE1BQ0csZ0JBQWM7QUFBQSxNQUVkLE9BQU8sTUFBTTtBQUFBLE1BQ2I7QUFBQSxNQUNBLGdCQUFnQixDQUFDLFdBQVcsT0FBTztBQUFBLE1BQ25DLGdCQUFnQixDQUFDLFdBQVcsT0FBTztBQUFBLE1BQ25DLFVBQUF4cUI7QUFBQSxNQUNBLGNBQWM7QUFBQSxJQUFBO0FBQUEsSUFOVCxLQUFLLFVBQVUsTUFBTSxhQUFhLElBQUk7QUFBQSxFQU8vQztBQUVOO0FBRUEsY0FBYyxZQUFZO0FBQUEsRUFDeEIsTUFBTXFpQixpQkFBVSxXQUFXLElBQUk7QUFBQSxFQUMvQixPQUFPQSxpQkFBVSxXQUFXLE9BQU87QUFBQSxFQUNuQyxjQUFjQSxpQkFBVSxXQUFXLFlBQVk7QUFBQSxFQUMvQyxVQUFVQyxpQkFBQUE7QUFDWjtBQ3RDQSxNQUFNLGNBQWMsQ0FBQyxFQUFDLE1BQU0sS0FBSyxhQUFhLG1CQUFrQjtBQUN0RCxRQUFBLGNBQWMsSUFBSSxlQUFlO0FBRXZDLFFBQU0sQ0FBQyxRQUFRLFNBQVMsSUFBSXZpQixhQUFBQSxTQUFzQixDQUFBLENBQUU7QUFDcEQsUUFBTSxDQUFDLFVBQVUsV0FBVyxJQUFJQSxhQUFBQSxTQUFzQixDQUFBLENBQUU7QUFFeEQsUUFBTSxDQUFDLFVBQVUsV0FBVyxJQUFJQSxhQUFBQSxTQUFTLENBQUEsQ0FBRTtBQUMzQyxRQUFNLENBQUN6SSxPQUFNLE9BQU8sSUFBSXlJLGFBQUFBLFNBQWlCLENBQUM7QUFFMUMsUUFBTSxDQUFDLE9BQU8sUUFBUSxJQUFJQSxhQUFBQSxTQUFnQixJQUFJLE9BQU87QUFFL0MsUUFBQSxhQUFhLENBQUMsYUFBa0I7QUFDL0IsUUFBQSxJQUFJLFFBQVEsUUFBUSxJQUFJO0FBQ3ZCLGFBQU8sQ0FBQztBQUFBLElBQUE7QUFFWixRQUFJdkwsUUFBTyxDQUFDO0FBRVosZ0JBQVksb0JBQW9CLElBQUksU0FBUyxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVU7QUFDbkUsaUJBQVUsT0FBTyxNQUFNLFVBQVUsRUFBRSxZQUFZLEdBQUc7QUFDekMsUUFBQUEsTUFBQSxHQUFHLElBQUksTUFBTSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTO0FBQUEsTUFBQTtBQUU5RCxrQkFBWUEsS0FBSTtBQUNOLGdCQUFBLE1BQU0sVUFBVSxDQUFDO0FBQ2Ysa0JBQUEsTUFBTSxZQUFZLENBQUM7QUFDdEIsZUFBQSxNQUFNLE9BQU8sQ0FBQztBQUNmLGNBQUEsTUFBTSxLQUFLLENBQUM7QUFBQSxJQUFBLENBQ3ZCO0FBQUEsRUFDTDtBQUVNLFFBQUEsYUFBYSxDQUFDcXJCLGNBQWE7QUFDN0IsZ0JBQVlBLFNBQVE7QUFDTCxtQkFBQTtBQUFBLEVBQ25CO0FBRU0sUUFBQSxpQkFBaUI2SyxFQUFxQixNQUFNO0FBQzlDLFFBQUlsMkIsUUFBTyxDQUFDO0FBRVosZ0JBQVksWUFBWSxJQUFJLFNBQVMsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVO0FBQzNELGlCQUFVLE9BQU8sTUFBTSxVQUFVLEVBQUUsWUFBWSxHQUFHO0FBQ3pDLFFBQUFBLE1BQUEsR0FBRyxJQUFJLE1BQU0sVUFBVSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUztBQUFBLE1BQUE7QUFFOUQsa0JBQVlBLEtBQUk7QUFDTixnQkFBQSxNQUFNLFVBQVUsQ0FBQztBQUNmLGtCQUFBLE1BQU0sWUFBWSxDQUFDO0FBQ3RCLGVBQUEsTUFBTSxPQUFPLENBQUM7QUFDZixjQUFBLE1BQU0sS0FBSyxDQUFDO0FBQUEsSUFBQSxDQUN2QjtBQUFBLEtBQ0YsR0FBRztBQUVOLFFBQU0sYUFBYSxNQUFNO0FBRWpCLFFBQUEsUUFBUSx5QkFBeUIsU0FBUztBQUMxQyxRQUFBLFFBQVEseUJBQXlCLE1BQU04QztBQUN4QyxRQUFBLFNBQVMsT0FBTyxHQUFHO0FBQ2QsVUFBQSxRQUFRLFNBQVMsT0FBTztBQUFBLElBQUE7QUFHaEMsUUFBSSxRQUFRO0FBQ1osaUJBQWEsR0FBRztBQUNKLGdCQUFBO0FBQUEsRUFDaEI7QUFFQWtILGVBQUFBLFVBQVUsTUFBTTtBQUNULFFBQUEsSUFBSSxRQUFRLHlCQUF5QixRQUFRO0FBQ2hDLGtCQUFBLElBQUksUUFBUSx5QkFBeUIsTUFBTTtBQUM1QyxpQkFBQSxJQUFJLFFBQVEseUJBQXlCLE1BQU07QUFBQSxJQUFBLE9BQ3JEO0FBQ0Qsa0JBQVksQ0FBQSxDQUFFO0FBQ2QsaUJBQVcsQ0FBQSxDQUFFO0FBQUEsSUFBQTtBQUFBLEVBQ2pCLEdBRUQsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUVoQixTQUVRa0ksa0NBQUEsSUFBQStJLDRCQUFBLEVBQUEsVUFBQW1FLGtDQUFBQSxLQUFDLE9BQUksRUFBQSxXQUFVLFFBQ1gsVUFBQTtBQUFBLElBQUNsTixrQ0FBQUEsSUFBQSxPQUFBLEVBQUksV0FBVSxVQUNYLFVBQUFBLGtDQUFBO0FBQUEsTUFBQ3liO0FBQUFBLE1BQUE7QUFBQSxRQUFLO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBLFVBQVUsQ0FBQ3p1QixPQUFNLFdBQVdBLEdBQUUsUUFBUTtBQUFBLFFBQ3RDO0FBQUEsTUFBQTtBQUFBLElBQUEsR0FDVjtBQUFBLElBQ0NnVCxzQ0FBQSxPQUFBLEVBQUksV0FBVSxJQUNYLFVBQ0lrTixrQ0FBQSxLQUFBbkUsNEJBQUEsRUFBQSxVQUFBO0FBQUEsTUFBQW1FLHVDQUFDLE1BQUcsRUFBQSxVQUFBO0FBQUEsUUFBQTtBQUFBLFFBQVFsTixrQ0FBQUEsSUFBQSxVQUFBLEVBQVMsT0FBUSxNQUFNLE9BQVEsQ0FBQTtBQUFBLE1BQUEsR0FBRTtBQUFBLDZDQUM1QyxNQUFHLEVBQUEsVUFBQTtBQUFBLFFBQUE7QUFBQSxRQUFRQSxrQ0FBQUEsSUFBQSxVQUFBLEVBQVMsT0FBUSxNQUFNLE9BQVEsQ0FBQTtBQUFBLE1BQUEsR0FBRTtBQUFBLDZDQUM1QyxNQUFHLEVBQUEsVUFBQTtBQUFBLFFBQUE7QUFBQSxRQUFTQSxrQ0FBQUEsSUFBQSxVQUFBLEVBQVMsT0FBUSxNQUFNLFNBQVUsQ0FBQTtBQUFBLE1BQUEsR0FBRTtBQUFBLDRDQUMvQyxRQUFPLEVBQUEsU0FBUyxZQUFZLE1BQU0sR0FBRyxTQUFTLFVBQVcsQ0FBQTtBQUFBLElBQUEsRUFBQSxDQUM5RCxFQUNKLENBQUE7QUFBQSxFQUFBLEVBQUEsQ0FDSixFQUVKLENBQUE7QUFFUjtBQUVBLFlBQVksWUFBWTtBQUFBLEVBQ3BCLE1BQU0yYixpQkFBVSxXQUFXLElBQUk7QUFBQSxFQUMvQixLQUFLQSxpQkFBVSxXQUFXLEdBQUc7QUFBQSxFQUM3QixhQUFhQyxpQkFBVTtBQUFBLEVBQ3ZCLGNBQWNBLGlCQUFBQTtBQUNsQjtBQ3ZHQSxNQUFNLHVCQUF1QixDQUFDLFVBQVU7QUFFcEMsUUFBTSxDQUFDLE1BQU0sT0FBTyxJQUFJdmlCLGFBQUFBLFNBQVMsSUFBSTtBQUVyQ3ZCLGVBQUFBLFVBQVUsTUFBTTtBQUNaLFlBQVEsTUFBTSxJQUFJO0FBQUEsRUFBQSxHQUNuQixDQUFDLE1BQU0sSUFBSSxDQUFDO0FBRWYsUUFBTSxDQUFDSSxPQUFNLE9BQU8sSUFBSW1CLGFBQUFBLFNBQVMsS0FBSztBQUVoQyxRQUFBLE1BQU0sSUFBSSxJQUFJO0FBRWQsUUFBQSxjQUFjLE1BQU0sUUFBUSxLQUFLO0FBQ2pDLFFBQUEsYUFBYSxNQUFNLFFBQVEsSUFBSTtBQUVyQyxRQUFNLENBQUMsU0FBUyxVQUFVLElBQUlBLGFBQUFBLFNBQWtCLElBQUksU0FBUztBQUM3RCxRQUFNLENBQUMsY0FBYyxlQUFlLElBQUlBLGFBQUFBLFNBQXVCLElBQUksY0FBYztBQUVqRixNQUFJLFVBQVU7QUFHVixTQUFBNlQsa0NBQUEsS0FBQyxPQUFJLEVBQUEsV0FBVSxlQUNYLFVBQUE7QUFBQSxJQUFBbE4sc0NBQUMsVUFBTyxNQUFNLEdBQUcsU0FBUyxZQUFZLFNBQVEsV0FBUztBQUFBLElBRXZEa04sa0NBQUE7QUFBQSxNQUFDO0FBQUEsTUFBQTtBQUFBLFFBQU0sTUFBSztBQUFBLFFBQU0sTUFBQWhWO0FBQUEsUUFBWSxTQUFTLE1BQU0sWUFBWTtBQUFBLFFBRXJELFVBQUE7QUFBQSxVQUFDOEgsa0NBQUFBLElBQUEsTUFBTSxRQUFOLEVBQWEsVUFFZCxlQUFBLENBQUE7QUFBQSxVQUNDa04sa0NBQUEsS0FBQSxNQUFNLE1BQU4sRUFBVyxXQUFVLFlBQ2xCLFVBQUE7QUFBQSxZQUFDQSxrQ0FBQUEsS0FBQSxPQUFBLEVBQUksV0FBVSxRQUNYLFVBQUE7QUFBQSxjQUFDQSxrQ0FBQUEsS0FBQSxPQUFBLEVBQUksV0FBVSxVQUNYLFVBQUE7QUFBQSxnQkFBQWxOLGtDQUFBQSxJQUFDLFFBQUcsVUFBWSxlQUFBLENBQUE7QUFBQSxnQkFDaEJBLGtDQUFBO0FBQUEsa0JBQUM7QUFBQSxrQkFBQTtBQUFBLG9CQUNHLE9BQU87QUFBQSxvQkFDUCxNQUFNLE1BQU07QUFBQSxvQkFDWixVQUFVO0FBQUEsa0JBQUE7QUFBQSxnQkFBQTtBQUFBLGNBQ2QsR0FDSjtBQUFBLGNBQ0FrTixrQ0FBQUEsS0FBQyxPQUFJLEVBQUEsV0FBVSxVQUNYLFVBQUE7QUFBQSxnQkFBQWxOLGtDQUFBQSxJQUFDLFFBQUcsVUFBTyxVQUFBLENBQUE7QUFBQSxnQkFDWEEsa0NBQUE7QUFBQSxrQkFBQztBQUFBLGtCQUFBO0FBQUEsb0JBQ0csT0FBTztBQUFBLG9CQUNQLE1BQU0sTUFBTTtBQUFBLG9CQUNaO0FBQUEsb0JBQ0EsVUFBVTtBQUFBLGtCQUFBO0FBQUEsZ0JBQUE7QUFBQSxjQUNkLEVBQ0osQ0FBQTtBQUFBLFlBQUEsR0FDSjtBQUFBLFlBRUFBLGtDQUFBO0FBQUEsY0FBQztBQUFBLGNBQUE7QUFBQSxnQkFDRztBQUFBLGdCQUNBLGNBQWMsTUFBTTtBQUFBLGdCQUNwQjtBQUFBLGNBQUE7QUFBQSxZQUFBO0FBQUEsVUFDSixFQUNKLENBQUE7QUFBQSxRQUFBO0FBQUEsTUFBQTtBQUFBLElBQUE7QUFBQSxFQUNKLEdBQ0o7QUFFUjtBQUVBLHFCQUFxQixZQUFZO0FBQUEsRUFDN0IsTUFBTTJiLGlCQUFVLFdBQVcsSUFBSTtBQUFBLEVBQy9CLFFBQVFDLGlCQUFBQTtBQUNaO0FDbEVBLE1BQU0sd0JBQXdCLENBQUMsRUFBQyxVQUFBbnFCLFdBQVUsTUFBTSxnQkFBZTtBQUUzRCxRQUFNLENBQUN5RyxPQUFNLE9BQU8sSUFBSW1CLGFBQUFBLFNBQVMsS0FBSztBQUVoQyxRQUFBLGNBQWMsTUFBTSxRQUFRLEtBQUs7QUFDakMsUUFBQSxhQUFhLE1BQU0sUUFBUSxJQUFJO0FBRXJDLGdEQUNLLE9BQ0csRUFBQSxVQUFBO0FBQUEsSUFBQzJHLGtDQUFBQSxJQUFBLE9BQUEsRUFDRyxnREFBQyxRQUFPLEVBQUEsTUFBTSxHQUFHLFNBQVEsUUFBTyxTQUFTLFdBQUEsQ0FBVyxFQUN4RCxDQUFBO0FBQUEsSUFFQWtOLHVDQUFDLFNBQU0sTUFBSyxPQUFNLE1BQUFoVixPQUFZLFNBQVMsTUFBTSxZQUN6QyxHQUFBLFVBQUE7QUFBQSxNQUFBOEgsa0NBQUEsSUFBQyxNQUFNLFFBQU4sRUFBYyxXQUFVLDRDQUEyQyxVQUVwRSxpQkFBQTtBQUFBLE1BQ0FBLGtDQUFBQSxJQUFDLE1BQU0sTUFBTixFQUNELFVBQUFBLGtDQUFBO0FBQUEsUUFBQztBQUFBLFFBQUE7QUFBQSxVQUNHLEtBQUt2TztBQUFBLFVBQ0wsY0FBYztBQUFBLFVBQ2Q7QUFBQSxRQUFBO0FBQUEsTUFBQSxFQUNGLENBQUE7QUFBQSxJQUFBLEVBQ04sQ0FBQTtBQUFBLEVBQUEsR0FDSjtBQUVSO0FBRUEsc0JBQXNCLFlBQVk7QUFBQSxFQUM5QixNQUFNa3FCLGlCQUFVLFdBQVcsSUFBSTtBQUFBLEVBQy9CLFVBQVVBLGlCQUFVLFdBQVcsR0FBRztBQUFBLEVBQ2xDLFdBQVdDLGlCQUFBQTtBQUNmO0FDcENBLE1BQU0sZUFBZSxDQUFDLEVBQUMsT0FBQXJ1QixRQUFPLEtBQUssUUFBUSxXQUFXLFdBQVU7QUFFdEQsUUFBQSxZQUFZLENBQUMsU0FBaUI7QUFDaEMsV0FBTyxJQUFJO0FBQUEsRUFDZjtBQUVBLFNBRVEyZixrQ0FBQSxLQUFBbkUsNEJBQUEsRUFBQSxVQUFBO0FBQUEsSUFBQ21FLGtDQUFBQSxLQUFBLE9BQUEsRUFBSSxXQUFXLFFBQ1osVUFBQTtBQUFBLE1BQUFsTixrQ0FBQSxJQUFDLE9BQUksRUFBQSxXQUFXLFVBQVcsVUFBQXpTLFNBQVEsR0FBRTtBQUFBLDRDQUNwQyxPQUFJLEVBQUEsV0FBVyxVQUFXLFVBQUEsSUFBSSxRQUFRLE9BQU07QUFBQSxNQUM1Q3lTLGtDQUFBLElBQUEsT0FBQSxFQUFJLFdBQVcsVUFBVyxjQUFJLE9BQU07QUFBQSxNQUNyQ0Esa0NBQUFBLElBQUMsT0FBSSxFQUFBLFdBQVcsbUJBQW1CLFVBQUFBLGtDQUFBLElBQUMsWUFBUyxPQUFRLElBQUksTUFBTSxPQUFBLENBQVEsRUFBRSxDQUFBO0FBQUEsTUFDekVBLGtDQUFBQSxJQUFDLE9BQUksRUFBQSxXQUFXLG1CQUFtQixVQUFBQSxrQ0FBQSxJQUFDLFlBQVMsT0FBUSxJQUFJLE1BQU0sT0FBQSxDQUFRLEVBQUUsQ0FBQTtBQUFBLE1BQ3pFQSxrQ0FBQUEsSUFBQyxPQUFJLEVBQUEsV0FBVyxtQkFBbUIsVUFBQUEsa0NBQUEsSUFBQyxZQUFTLE9BQVEsSUFBSSxNQUFNLFNBQUEsQ0FBVSxFQUFFLENBQUE7QUFBQSxNQUMzRUEsa0NBQUFBLElBQUMsT0FBSSxFQUFBLFdBQVcsa0JBQW1CLENBQUE7QUFBQSw0Q0FDbEMsT0FBSSxFQUFBLFdBQVcsbUJBQ1osVUFBQ2tOLGtDQUFBLEtBQUEsT0FBQSxFQUFJLFdBQVUsY0FDWCxVQUFBO0FBQUEsUUFBQWxOLGtDQUFBLElBQUMsdUJBQXNCLEVBQUEsTUFBWSxVQUFVLEtBQUssV0FBc0I7QUFBQSxRQUN4RUEsa0NBQUFBLElBQUMsUUFBTyxFQUFBLE1BQU0sR0FBRyxTQUFTLFdBQVcsU0FBUyxNQUFNLFVBQVUsSUFBSSxJQUFJLEVBQUcsQ0FBQTtBQUFBLE1BQUEsRUFBQSxDQUM3RSxFQUNKLENBQUE7QUFBQSxJQUFBLEdBQ0o7QUFBQSwwQ0FDQyxNQUFFLENBQUEsQ0FBQTtBQUFBLEVBQUEsR0FDUDtBQUVSO0FBRUEsYUFBYSxZQUFZO0FBQUEsRUFDckIsT0FBTzBqQixpQkFBVTtBQUFBLEVBQ2pCLEtBQUsvSCxpQkFBVSxXQUFXLEdBQUc7QUFBQSxFQUM3QixNQUFNQSxpQkFBVSxXQUFXLElBQUk7QUFBQSxFQUMvQixRQUFRQyxpQkFBVTtBQUFBLEVBQ2xCLFdBQVdBLGlCQUFBQTtBQUNmO0FDcENBLE1BQU0saUJBQWlCLENBQUMsRUFBQyxXQUFXLFFBQVEsTUFBTSxnQkFBZTtBQUc3RCxnREFDSyxPQUNHLEVBQUEsVUFBQTtBQUFBLElBQUMxTyxrQ0FBQUEsS0FBQSxPQUFBLEVBQUksV0FBVyxRQUNaLFVBQUE7QUFBQSxNQUFBbE4sa0NBQUFBLElBQUMsU0FBSSxXQUFXLFVBQ1osVUFBQ0Esc0NBQUEsTUFBQSxFQUFHLGlCQUFHLEVBQ1gsQ0FBQTtBQUFBLDRDQUNDLE9BQUksRUFBQSxXQUFXLFVBQ1osVUFBQ0Esc0NBQUEsTUFBQSxFQUFHLG1CQUFLLEVBQ2IsQ0FBQTtBQUFBLDRDQUNDLE9BQUksRUFBQSxXQUFXLFVBQ1osVUFBQ0Esc0NBQUEsTUFBQSxFQUFHLG9CQUFNLEVBQ2QsQ0FBQTtBQUFBLDRDQUNDLE9BQUksRUFBQSxXQUFXLG1CQUNaLFVBQUNBLHNDQUFBLE1BQUEsRUFBRyxtQkFBSyxFQUNiLENBQUE7QUFBQSw0Q0FDQyxPQUFJLEVBQUEsV0FBVyxtQkFDWixVQUFDQSxzQ0FBQSxNQUFBLEVBQUcsaUJBQUcsRUFDWCxDQUFBO0FBQUEsNENBQ0MsT0FBSSxFQUFBLFdBQVcsbUJBQ1osVUFBQ0Esc0NBQUEsTUFBQSxFQUFHLG1CQUFLLEVBQ2IsQ0FBQTtBQUFBLDRDQUNDLE9BQUksRUFBQSxXQUFXLG1CQUNaLFVBQUNBLHNDQUFBLE1BQUEsRUFBRyxvQkFBTSxFQUNkLENBQUE7QUFBQSxNQUNBQSxrQ0FBQUEsSUFBQyxPQUFJLEVBQUEsV0FBVyxTQUVoQixDQUFBO0FBQUEsSUFBQSxHQUNKO0FBQUEsMENBQ0MsTUFBRSxFQUFBO0FBQUEsSUFDRixVQUFVLElBQUksQ0FBQyxRQUFRcFUsT0FBT29VLGtDQUFBQSxJQUFBLGNBQUEsRUFBYSxLQUFLLFFBQVEsTUFBWSxRQUFnQixXQUE4QixPQUFPcFUsR0FBQSxHQUFWQSxFQUFhLENBQUU7QUFBQSxFQUFBLEdBRW5JO0FBRVI7QUFFQSxlQUFlLFlBQVk7QUFBQSxFQUN2QixXQUFXcTRCLGlCQUFVO0FBQUEsRUFDckIsUUFBUXJJLGlCQUFVO0FBQUEsRUFDbEIsV0FBV0EsaUJBQVU7QUFBQSxFQUNyQixNQUFNRCxpQkFBVSxXQUFXLElBQUk7QUFDbkM7QUN4Q0EsTUFBTSxxQkFBcUIsQ0FBQyxFQUFDLE9BQU8sTUFBTSxrQkFBaUI7QUFFakQsUUFBQSxhQUFhLFVBQVUsUUFBUSxVQUFVO0FBRS9DLFFBQU0sQ0FBQyxXQUFXLFlBQVksSUFBSXRpQixhQUFBQSxTQUFxQixNQUFNLFNBQVM7QUFFaEUsUUFBQSxTQUFTLENBQUMsV0FBVztBQUN2QixpQkFBYSxDQUFDLEdBQUcsV0FBVyxNQUFNLENBQUM7QUFBQSxFQUN2QztBQUVNLFFBQUEsWUFBWSxDQUFDLFdBQVc7QUFDMUIsVUFBTSxlQUFlLFVBQVUsSUFBSSxDQUFDM0osSUFBRzlELE9BQU07QUFDckMsVUFBQThELEdBQUUsU0FBUyxPQUFPLE1BQU07QUFDbkIsZUFBQTtBQUFBLE1BQUEsT0FDRjtBQUNFLGVBQUFBO0FBQUEsTUFBQTtBQUFBLElBQ1QsQ0FDSDtBQUNELGlCQUFhLFlBQVk7QUFBQSxFQUU3QjtBQUVNLFFBQUEsU0FBUyxDQUFDLFNBQVM7QUFDckIsUUFBSSxNQUFNLFVBQVUsT0FBTyxDQUFDLFFBQVEsSUFBSSxTQUFTLElBQUk7QUFFckQsaUJBQWEsR0FBRztBQUFBLEVBQ3BCO0FBRUFvSSxlQUFBQSxVQUFVLE1BQU07QUFDUixRQUFBLFdBQVcsV0FBVyxnQkFBQSxFQUFrQjtBQUM1QyxhQUFTLFlBQVk7QUFDckIsZUFBVyxnQkFBZ0IsUUFBUTtBQUFBLEVBQUEsR0FDcEMsQ0FBQyxTQUFTLENBQUM7QUFHVixTQUFBb1Ysa0NBQUEsS0FBQyxPQUFJLEVBQUEsV0FBVyxPQUNaLFVBQUE7QUFBQSxJQUFBbE4sa0NBQUEsSUFBQyxnQkFBZSxFQUFBLFdBQXNCLE1BQVksUUFBZ0IsV0FBcUI7QUFBQSxJQUN2RkEsa0NBQUFBLElBQUMsc0JBQXFCLEVBQUEsTUFBWSxPQUFlLENBQUE7QUFBQSxFQUFBLEdBQ3JEO0FBRVI7QUFFQSxtQkFBbUIsWUFBWTtBQUFBLEVBQzNCLE1BQU0yYixpQkFBVSxXQUFXLElBQUk7QUFBQSxFQUMvQixPQUFPQSxpQkFBVSxXQUFXLEtBQUs7QUFBQSxFQUNqQyxhQUFhQyxpQkFBQUE7QUFDakI7QUNsREEsOEJBQUMsVUFBVSxHQUNWLGVBQWU7QUFDaEIsTUFBTSxlQUFlO0FBQUEsRUFDakIsWUFBb0I1cEIsUUFBZTtBQUFmLFNBQUEsUUFBQUE7QUFBQSxFQUFBO0FBQUEsRUFFcEIsTUFBTSxZQUFZLE1BQWdDOztBQUU5QyxXQUFPLE1BQU0sTUFBTSxJQUFJLCtCQUErQixLQUFLLE1BQU07QUFBQSxNQUM3RCxTQUFTO0FBQUEsUUFDTCxpQkFBaUIsY0FBWS9GLE1BQUEsS0FBSyxVQUFMLGdCQUFBQSxJQUFZO0FBQUEsTUFBQTtBQUFBLElBQzdDLENBQ0gsRUFBRSxLQUFLLENBQUUsYUFBYztBQUNwQixhQUFPLFNBQVMsS0FBSyxLQUFLLElBQUksQ0FBQyxTQUFjO0FBQ3JDLFlBQUEsVUFBVSxJQUFJLFFBQVE7QUFDMUIsZ0JBQVEsTUFBTSxLQUFLO0FBQ25CLGdCQUFRLFFBQVEsS0FBSztBQUNyQixnQkFBUSxPQUFPLEtBQUs7QUFDYixlQUFBO0FBQUEsTUFBQSxDQUNWO0FBQUEsSUFBQSxDQUVKO0FBQUEsRUFBQTtBQUVUO0FBcEJBd2YsVUFBQTtBQUFNLGlCQUFOLGtCQUFBQSxTQUFBLHFCQUZBLDRCQUVNO0FBQU4sa0JBQUFBLFNBQUEsR0FBTTtBQ0lOLE1BQU0sbUJBQW1CLENBQUMsRUFBRSxNQUFNLFlBQVk7QUFFMUMsUUFBTSxDQUFDLFVBQVUsV0FBVyxJQUFJcFMsYUFBQUEsU0FBUyxJQUFJO0FBQ3ZDLFFBQUEsYUFBYXlFLFNBQVUsUUFBUSxVQUFVO0FBQy9DLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSXpFLGFBQUFBLFNBQVMsQ0FBQztBQUNsQyxRQUFBLGtCQUFrQixJQUFJLGVBQWU7QUFFckMsUUFBQSxjQUFjLE9BQU8sYUFBYSxrQkFBa0I7QUFDdEQsVUFBTXZMLFFBQU8sTUFBTSxnQkFBZ0IsWUFBWSxJQUFJO0FBRTVDLFdBQUE7QUFBQSxNQUNILFNBQVNBO0FBQUEsTUFDVCxTQUFTO0FBQUEsSUFDYjtBQUFBLEVBQ0o7QUFFQWdLLGVBQUFBLFVBQVUsTUFBTTtBQUNaLGdCQUFZLEtBQUssSUFBSTtBQUFBLEVBQUEsR0FDcEIsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUVoQkEsZUFBQUEsVUFBVSxNQUFNO0FBQ0QsZUFBQSxNQUFNLFFBQVEsR0FBRztBQUFBLEVBQUEsR0FDN0IsQ0FBQyxNQUFNLE9BQU8sQ0FBQztBQUdaLFFBQUF3QixZQUFXLENBQUMsV0FBVztBQUN6QixVQUFNLFVBQVU7QUFDaEIsUUFBSSxXQUFXLFdBQVcsZ0JBQWdCLEVBQUUsU0FBUztBQUNyRCxhQUFTLFVBQVU7QUFDbkIsZUFBVyxnQkFBZ0IsUUFBUTtBQUNuQyxlQUFXLE9BQU8sR0FBRztBQUFBLEVBQ3pCO0FBR0ksU0FBQTBHLGtDQUFBQSxJQUFDLE9BQUksRUFBQSxXQUFXLE9BQ1osVUFBQUEsa0NBQUE7QUFBQSxJQUFDO0FBQUEsSUFBQTtBQUFBLE1BQ0csZ0JBQWM7QUFBQSxNQUVkLFlBQVksRUFBRSxTQUFTLFlBQVk7QUFBQSxNQUNuQyxjQUFjLE1BQU07QUFBQSxNQUNwQjtBQUFBLE1BQ0EsYUFBWTtBQUFBLE1BQ1osTUFBSztBQUFBLE1BQ0wsZ0JBQWdCLENBQUMsV0FBVyxPQUFPO0FBQUEsTUFDbkMsZ0JBQWdCLENBQUMsV0FBVyxPQUFPO0FBQUEsTUFDbkMsVUFBQTFHO0FBQUEsTUFDQSxjQUFjO0FBQUEsTUFDZCxXQUFXLEdBQUcsV0FBVyxJQUFJLDBCQUEwQixFQUFFO0FBQUEsSUFBQTtBQUFBLElBVnBELEtBQUssVUFBVSxRQUFRO0FBQUEsRUFBQSxHQVlwQztBQUVSO0FBRUEsaUJBQWlCLFlBQVk7QUFBQSxFQUN6QixNQUFNcWlCLGlCQUFVLFdBQVcsSUFBSTtBQUFBLEVBQy9CLE9BQU9BLGlCQUFVLFdBQVcsS0FBSztBQUNyQztBQzlEQSwrQkFBQyxVQUFVLEdBQ1YsZUFBZTtBQUNoQixNQUFNLGdCQUFnQjtBQUFBLEVBQ2xCLFlBQW9CM3BCLFFBQWU7QUFBZixTQUFBLFFBQUFBO0FBQUEsRUFBQTtBQUFBLEVBRXBCLE1BQU0sWUFBWSxNQUFpQzs7QUFFL0MsV0FBTyxNQUFNLE1BQU0sSUFBSSxnQ0FBZ0MsS0FBSyxNQUFNO0FBQUEsTUFDOUQsU0FBUztBQUFBLFFBQ0wsaUJBQWlCLGNBQVkvRixNQUFBLEtBQUssVUFBTCxnQkFBQUEsSUFBWTtBQUFBLE1BQUE7QUFBQSxJQUM3QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBYztBQUNyQyxZQUFBLFdBQVcsSUFBSSxTQUFTO0FBQzVCLGlCQUFTLE1BQU0sS0FBSztBQUNwQixpQkFBUyxRQUFRLEtBQUs7QUFDdEIsaUJBQVMsT0FBTyxLQUFLO0FBQ2QsZUFBQTtBQUFBLE1BQUEsQ0FDVjtBQUFBLElBQUEsQ0FFSjtBQUFBLEVBQUE7QUFFVDtBQXBCQXdmLFVBQUE7QUFBTSxrQkFBTixrQkFBQUEsU0FBQSxzQkFGQSw2QkFFTTtBQUFOLGtCQUFBQSxTQUFBLEdBQU07QUNJTixNQUFNLG9CQUFvQixDQUFDLEVBQUMsTUFBTSxZQUFXO0FBRXpDLFFBQU0sQ0FBQyxVQUFVLFdBQVcsSUFBSXBTLGFBQUFBLFNBQVMsSUFBSTtBQUN2QyxRQUFBLGFBQWF5RSxTQUFVLFFBQVEsVUFBVTtBQUMvQyxRQUFNLENBQUMsVUFBVSxXQUFXLElBQUl6RSxhQUFBQSxTQUFTLENBQUM7QUFDcEMsUUFBQSxtQkFBbUIsSUFBSSxnQkFBZ0I7QUFFdkMsUUFBQSxjQUFjLE9BQU8sYUFBYSxrQkFBa0I7QUFDdEQsVUFBTXZMLFFBQU8sTUFBTSxpQkFBaUIsWUFBWSxJQUFJO0FBRTdDLFdBQUE7QUFBQSxNQUNILFNBQVNBO0FBQUEsTUFDVCxTQUFTO0FBQUEsSUFDYjtBQUFBLEVBQ0o7QUFFQWdLLGVBQUFBLFVBQVUsTUFBTTtBQUNaLGdCQUFZLEtBQUssSUFBSTtBQUFBLEVBQUEsR0FDcEIsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUVoQkEsZUFBQUEsVUFBVSxNQUFNO0FBQ0EsZ0JBQUEsTUFBTSxTQUFTLEdBQUc7QUFBQSxFQUFBLEdBQy9CLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFYixRQUFBd0IsWUFBVyxDQUFDLFdBQVc7QUFDekIsVUFBTSxXQUFXO0FBQ2pCLFFBQUksV0FBVyxXQUFXLGdCQUFnQixFQUFFLFNBQVM7QUFDckQsYUFBUyxXQUFXO0FBQ3BCLGVBQVcsZ0JBQWdCLFFBQVE7QUFDbkMsZ0JBQVksT0FBTyxHQUFHO0FBQUEsRUFDMUI7QUFHSSxTQUFBMEcsa0NBQUFBLElBQUMsT0FBSSxFQUFBLFdBQVcsT0FDWixVQUFBQSxrQ0FBQTtBQUFBLElBQUM7QUFBQSxJQUFBO0FBQUEsTUFDRyxnQkFBYztBQUFBLE1BRWQsWUFBWSxFQUFDLFNBQVMsWUFBVztBQUFBLE1BQ2pDLGNBQWMsTUFBTTtBQUFBLE1BQ3BCLGFBQVk7QUFBQSxNQUNaLE1BQUs7QUFBQSxNQUNMO0FBQUEsTUFDQSxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU87QUFBQSxNQUNuQyxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU87QUFBQSxNQUNuQyxVQUFBMUc7QUFBQSxNQUNBLGNBQWM7QUFBQSxNQUNkLFdBQVcsR0FBRyxZQUFZLElBQUksMEJBQTBCLEVBQUU7QUFBQSxJQUFBO0FBQUEsSUFWckQsS0FBSyxVQUFVLFFBQVE7QUFBQSxFQUFBLEdBWXhDO0FBRUo7QUFFQSxrQkFBa0IsWUFBWTtBQUFBLEVBQzFCLE1BQU1xaUIsaUJBQVUsV0FBVyxJQUFJO0FBQUEsRUFDL0IsT0FBT0EsaUJBQVUsV0FBVyxLQUFLO0FBQ3JDO0FDekRBLE1BQU0sd0JBQXdCalIsYUFBQUEsVUFBMkM7QUFBQSxFQUdyRSxZQUFZLE9BQU87QUFDZixVQUFNLEtBQUs7QUFIZjtBQUNBO0FBR1MsU0FBQSxhQUFhNU0sU0FBVSxRQUFRLFVBQVU7QUFDekMsU0FBQSxlQUFlQSxTQUFVLFFBQVEsWUFBWTtBQUU3QyxTQUFBLFFBQVEsRUFBQyxVQUFVLEtBQUk7QUFBQSxFQUFBO0FBQUEsRUFHaEMsb0JBQW9CO0FBQ2hCLFNBQUssV0FBVyxnQkFBa0IsRUFBQSxLQUFLLGFBQWEsR0FBSSxDQUFDLEVBQUUsVUFBVSxDQUFDOVEsT0FBTSxLQUFLLFdBQVdBLEVBQUMsQ0FBQztBQUFBLEVBQUE7QUFBQSxFQUdsRyxXQUFXLE9BQWM7QUFDbEIsUUFBQSxNQUFNLFFBQVEsWUFBWSxNQUN0QixNQUFNLFFBQVEsU0FBUyxNQUN2QixNQUFNLFNBQVMsU0FBUyxNQUN4QixNQUFNLEtBQUssUUFBUSxNQUNuQixNQUFNLFFBQVEsU0FBUyxNQUN2QixNQUFNLGVBQWUsUUFBUSxNQUM3QixNQUFNLFFBQVEsR0FDbkI7QUFDRSxXQUFLLFNBQVMsRUFBQyxVQUFVLE1BQUEsQ0FBTTtBQUFBLElBQUE7QUFBQSxFQUNuQztBQUFBLEVBR0osTUFBTSxZQUFZQSxJQUFHO0FBQ2pCLFVBQU0sT0FBTyxLQUFLLFdBQVcsa0JBQWtCLE1BQU07QUFDckQsVUFBTTRELFFBQU8sS0FBSyxXQUFXLGtCQUFrQixNQUFNO0FBQ3JELFdBQU8sS0FBSyxzQ0FBc0NBLFFBQU8sTUFBTSxJQUFJO0FBQUEsRUFBQTtBQUFBLEVBR3ZFLE1BQU0sV0FBVzVELElBQUc7QUFDaEIsSUFBQUEsR0FBRSxlQUFlO0FBRWIsUUFBQSxTQUFTLE1BQU0sS0FBSyxhQUFhLFVBQVUsS0FBSyxXQUFXLGdCQUFnQixFQUFFLEtBQUs7QUFFdEYsU0FBSyxNQUFNLFVBQVUsT0FBTyxNQUFNLENBQUM7QUFBQSxFQUFBO0FBQUEsRUFHdkMsU0FBUztBQUVELFdBQUFrZ0Isa0NBQUEsS0FBQyxPQUFJLEVBQUEsV0FBVSxjQUNYLFVBQUE7QUFBQSxNQUFBQSxrQ0FBQSxLQUFDTSxVQUFPLEVBQUEsTUFBSyxNQUFLLE9BQU0sUUFBTyxVQUFVLEtBQUssTUFBTSxVQUFVLFNBQVMsQ0FBQ3hnQixPQUFVLEtBQUssV0FBV0EsRUFBQyxHQUMvRixVQUFBO0FBQUEsUUFBQ2dULGtDQUFBQSxJQUFBLE9BQUEsRUFBSSxXQUFVLGVBQWMsQ0FBQTtBQUFBLFFBQUU7QUFBQSxNQUFBLEdBQ25DO0FBQUEsTUFDQWtOLHVDQUFDTSxZQUFPLE1BQUssTUFBSyxPQUFNLFdBQVUsVUFBVSxDQUFDLEtBQUssV0FBVyxrQkFBa0IsTUFBTSxPQUFPLFNBQVMsQ0FBQ3hnQixPQUFVLEtBQUssWUFBWUEsRUFBQyxHQUM5SCxVQUFBO0FBQUEsUUFBQ2dULGtDQUFBQSxJQUFBLE9BQUEsRUFBSSxXQUFVLGVBQWMsQ0FBQTtBQUFBLFFBQUU7QUFBQSxNQUFBLEVBQ25DLENBQUE7QUFBQSxJQUFBLEdBQ0o7QUFBQSxFQUFBO0FBR1o7Ozs7OztBQy9EQSxTQUFPLGVBQWUsTUFBUyxjQUFjLEVBQUUsT0FBTyxNQUFNO0FBQzVELE9BQUEsUUFBZ0JyRDtBQUNoQixPQUFBLFlBQW9CTTtBQWVwQixRQUFNLG1CQUFtQjtBQWF6QixRQUFNLG9CQUFvQjtBQXdCMUIsUUFBTSxvQkFBb0I7QUFRMUIsUUFBTSxrQkFBa0I7QUFDeEIsUUFBTSxhQUFhLE9BQU8sVUFBVTtBQUNwQyxRQUFNLGFBQThCLHVCQUFNO0FBQ3RDLFVBQU1wTyxLQUFJLFdBQVk7QUFBQSxJQUFHO0FBQ3pCLElBQUFBLEdBQUUsWUFBWSx1QkFBTyxPQUFPLElBQUk7QUFDaEMsV0FBT0E7QUFBQSxFQUNYLEdBQUk7QUFPSixXQUFTOE4sT0FBTSxLQUFLeEssVUFBUztBQUN6QixVQUFNLE1BQU0sSUFBSSxXQUFZO0FBQzVCLFVBQU0sTUFBTSxJQUFJO0FBRWhCLFFBQUksTUFBTTtBQUNOLGFBQU87QUFDWCxVQUFNLE9BQU1BLFlBQUEsZ0JBQUFBLFNBQVMsV0FBVTtBQUMvQixRQUFJNUUsU0FBUTtBQUNaLE9BQUc7QUFDQyxZQUFNLFFBQVEsSUFBSSxRQUFRLEtBQUtBLE1BQUs7QUFDcEMsVUFBSSxVQUFVO0FBQ1Y7QUFDSixZQUFNLFdBQVcsSUFBSSxRQUFRLEtBQUtBLE1BQUs7QUFDdkMsWUFBTSxTQUFTLGFBQWEsS0FBSyxNQUFNO0FBQ3ZDLFVBQUksUUFBUSxRQUFRO0FBRWhCLFFBQUFBLFNBQVEsSUFBSSxZQUFZLEtBQUssUUFBUSxDQUFDLElBQUk7QUFDMUM7QUFBQSxNQUNaO0FBQ1EsWUFBTSxjQUFjLFdBQVcsS0FBS0EsUUFBTyxLQUFLO0FBQ2hELFlBQU0sWUFBWSxTQUFTLEtBQUssT0FBTyxXQUFXO0FBQ2xELFlBQU0sTUFBTSxJQUFJLE1BQU0sYUFBYSxTQUFTO0FBRTVDLFVBQUksSUFBSSxHQUFHLE1BQU0sUUFBVztBQUN4QixZQUFJLGNBQWMsV0FBVyxLQUFLLFFBQVEsR0FBRyxNQUFNO0FBQ25ELFlBQUksWUFBWSxTQUFTLEtBQUssUUFBUSxXQUFXO0FBQ2pELGNBQU0sUUFBUSxJQUFJLElBQUksTUFBTSxhQUFhLFNBQVMsQ0FBQztBQUNuRCxZQUFJLEdBQUcsSUFBSTtBQUFBLE1BQ3ZCO0FBQ1EsTUFBQUEsU0FBUSxTQUFTO0FBQUEsSUFDcEIsU0FBUUEsU0FBUTtBQUNqQixXQUFPO0FBQUEsRUFDWDtBQUNBLFdBQVMsV0FBVyxLQUFLQSxRQUFPb1QsTUFBSztBQUNqQyxPQUFHO0FBQ0MsWUFBTSxPQUFPLElBQUksV0FBV3BULE1BQUs7QUFDakMsVUFBSSxTQUFTLE1BQWdCLFNBQVM7QUFDbEMsZUFBT0E7QUFBQSxJQUNuQixTQUFhLEVBQUVBLFNBQVFvVDtBQUNuQixXQUFPQTtBQUFBLEVBQ1g7QUFDQSxXQUFTLFNBQVMsS0FBS3BULFFBQU82RixNQUFLO0FBQy9CLFdBQU83RixTQUFRNkYsTUFBSztBQUNoQixZQUFNLE9BQU8sSUFBSSxXQUFXLEVBQUU3RixNQUFLO0FBQ25DLFVBQUksU0FBUyxNQUFnQixTQUFTO0FBQ2xDLGVBQU9BLFNBQVE7QUFBQSxJQUMzQjtBQUNJLFdBQU82RjtBQUFBLEVBQ1g7QUFVQSxXQUFTNkosV0FBVSxNQUFNLEtBQUs5SyxVQUFTO0FBQ25DLFVBQU0sT0FBTUEsWUFBQSxnQkFBQUEsU0FBUyxXQUFVO0FBQy9CLFFBQUksQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEdBQUc7QUFDOUIsWUFBTSxJQUFJLFVBQVUsNkJBQTZCLElBQUksRUFBRTtBQUFBLElBQy9EO0FBQ0ksVUFBTSxRQUFRLElBQUksR0FBRztBQUNyQixRQUFJLENBQUMsa0JBQWtCLEtBQUssS0FBSyxHQUFHO0FBQ2hDLFlBQU0sSUFBSSxVQUFVLDRCQUE0QixHQUFHLEVBQUU7QUFBQSxJQUM3RDtBQUNJLFFBQUksTUFBTSxPQUFPLE1BQU07QUFDdkIsUUFBSSxDQUFDQTtBQUNELGFBQU87QUFDWCxRQUFJQSxTQUFRLFdBQVcsUUFBVztBQUM5QixVQUFJLENBQUMsT0FBTyxVQUFVQSxTQUFRLE1BQU0sR0FBRztBQUNuQyxjQUFNLElBQUksVUFBVSw2QkFBNkJBLFNBQVEsTUFBTSxFQUFFO0FBQUEsTUFDN0U7QUFDUSxhQUFPLGVBQWVBLFNBQVE7QUFBQSxJQUN0QztBQUNJLFFBQUlBLFNBQVEsUUFBUTtBQUNoQixVQUFJLENBQUMsa0JBQWtCLEtBQUtBLFNBQVEsTUFBTSxHQUFHO0FBQ3pDLGNBQU0sSUFBSSxVQUFVLDZCQUE2QkEsU0FBUSxNQUFNLEVBQUU7QUFBQSxNQUM3RTtBQUNRLGFBQU8sY0FBY0EsU0FBUTtBQUFBLElBQ3JDO0FBQ0ksUUFBSUEsU0FBUSxNQUFNO0FBQ2QsVUFBSSxDQUFDLGdCQUFnQixLQUFLQSxTQUFRLElBQUksR0FBRztBQUNyQyxjQUFNLElBQUksVUFBVSwyQkFBMkJBLFNBQVEsSUFBSSxFQUFFO0FBQUEsTUFDekU7QUFDUSxhQUFPLFlBQVlBLFNBQVE7QUFBQSxJQUNuQztBQUNJLFFBQUlBLFNBQVEsU0FBUztBQUNqQixVQUFJLENBQUMreEIsUUFBTy94QixTQUFRLE9BQU8sS0FDdkIsQ0FBQyxPQUFPLFNBQVNBLFNBQVEsUUFBUSxRQUFTLENBQUEsR0FBRztBQUM3QyxjQUFNLElBQUksVUFBVSw4QkFBOEJBLFNBQVEsT0FBTyxFQUFFO0FBQUEsTUFDL0U7QUFDUSxhQUFPLGVBQWVBLFNBQVEsUUFBUSxZQUFhO0FBQUEsSUFDM0Q7QUFDSSxRQUFJQSxTQUFRLFVBQVU7QUFDbEIsYUFBTztBQUFBLElBQ2Y7QUFDSSxRQUFJQSxTQUFRLFFBQVE7QUFDaEIsYUFBTztBQUFBLElBQ2Y7QUFDSSxRQUFJQSxTQUFRLGFBQWE7QUFDckIsYUFBTztBQUFBLElBQ2Y7QUFDSSxRQUFJQSxTQUFRLFVBQVU7QUFDbEIsWUFBTSxXQUFXLE9BQU9BLFNBQVEsYUFBYSxXQUN2Q0EsU0FBUSxTQUFTLFlBQVcsSUFDNUI7QUFDTixjQUFRLFVBQVE7QUFBQSxRQUNaLEtBQUs7QUFDRCxpQkFBTztBQUNQO0FBQUEsUUFDSixLQUFLO0FBQ0QsaUJBQU87QUFDUDtBQUFBLFFBQ0osS0FBSztBQUNELGlCQUFPO0FBQ1A7QUFBQSxRQUNKO0FBQ0ksZ0JBQU0sSUFBSSxVQUFVLCtCQUErQkEsU0FBUSxRQUFRLEVBQUU7QUFBQSxNQUNyRjtBQUFBLElBQ0E7QUFDSSxRQUFJQSxTQUFRLFVBQVU7QUFDbEIsWUFBTSxXQUFXLE9BQU9BLFNBQVEsYUFBYSxXQUN2Q0EsU0FBUSxTQUFTLFlBQVcsSUFDNUJBLFNBQVE7QUFDZCxjQUFRLFVBQVE7QUFBQSxRQUNaLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDRCxpQkFBTztBQUNQO0FBQUEsUUFDSixLQUFLO0FBQ0QsaUJBQU87QUFDUDtBQUFBLFFBQ0osS0FBSztBQUNELGlCQUFPO0FBQ1A7QUFBQSxRQUNKO0FBQ0ksZ0JBQU0sSUFBSSxVQUFVLCtCQUErQkEsU0FBUSxRQUFRLEVBQUU7QUFBQSxNQUNyRjtBQUFBLElBQ0E7QUFDSSxXQUFPO0FBQUEsRUFDWDtBQUlBLFdBQVMsT0FBTyxLQUFLO0FBQ2pCLFFBQUksSUFBSSxRQUFRLEdBQUcsTUFBTTtBQUNyQixhQUFPO0FBQ1gsUUFBSTtBQUNBLGFBQU8sbUJBQW1CLEdBQUc7QUFBQSxJQUNyQyxTQUNXbkYsSUFBRztBQUNOLGFBQU87QUFBQSxJQUNmO0FBQUEsRUFDQTtBQUlBLFdBQVNrM0IsUUFBTyxLQUFLO0FBQ2pCLFdBQU8sV0FBVyxLQUFLLEdBQUcsTUFBTTtBQUFBLEVBQ3BDOzs7O0FDN09BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0JBLElBQUksb0JBQW9CO0FBc0h4QixTQUFTLGtCQUFrQi94QixXQUFVLElBQUk7QUFDOUIsV0FBQSxtQkFBbUIsU0FBUyxlQUFlO0FBQzlDLFFBQUE7QUFBQSxNQUNGLFdBQVc7QUFBQSxNQUNYLFNBQVM7QUFBQSxNQUNULE1BQUE0SSxRQUFPO0FBQUEsSUFBQSxJQUNMLFVBQVUsUUFBUSxTQUFTLEtBQUssVUFBVSxDQUFDLENBQUM7QUFDNUMsUUFBQSxDQUFDLFNBQVMsV0FBVyxHQUFHLEtBQUssQ0FBQyxTQUFTLFdBQVcsR0FBRyxHQUFHO0FBQzFELGlCQUFXLE1BQU07QUFBQSxJQUFBO0FBRVosV0FBQTtBQUFBLE1BQ0w7QUFBQSxNQUNBLEVBQUUsVUFBVSxRQUFRLE1BQUFBLE1BQUs7QUFBQTtBQUFBLE1BRXpCLGNBQWMsU0FBUyxjQUFjLE1BQU0sT0FBTztBQUFBLE1BQ2xELGNBQWMsU0FBUyxjQUFjLE1BQU0sT0FBTztBQUFBLElBQ3BEO0FBQUEsRUFBQTtBQUVPLFdBQUEsZUFBZSxTQUFTLElBQUk7QUFDbkMsUUFBSSxPQUFPLFFBQVEsU0FBUyxjQUFjLE1BQU07QUFDaEQsUUFBSSxPQUFPO0FBQ1gsUUFBSSxRQUFRLEtBQUssYUFBYSxNQUFNLEdBQUc7QUFDakMsVUFBQSxNQUFNLFFBQVEsU0FBUztBQUN2QixVQUFBLFlBQVksSUFBSSxRQUFRLEdBQUc7QUFDL0IsYUFBTyxjQUFjLEtBQUssTUFBTSxJQUFJLE1BQU0sR0FBRyxTQUFTO0FBQUEsSUFBQTtBQUV4RCxXQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sV0FBVyxLQUFLLFdBQVcsRUFBRTtBQUFBLEVBQUE7QUFFekQsV0FBQSxxQkFBcUIsVUFBVSxJQUFJO0FBQzFDO0FBQUEsTUFDRSxTQUFTLFNBQVMsT0FBTyxDQUFDLE1BQU07QUFBQSxNQUNoQyw2REFBNkQsS0FBSztBQUFBLFFBQ2hFO0FBQUEsTUFBQSxDQUNEO0FBQUEsSUFDSDtBQUFBLEVBQUE7QUFFSyxTQUFBO0FBQUEsSUFDTDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTVJO0FBQUEsRUFDRjtBQUNGO0FBQ0EsU0FBUyxVQUFVLE9BQU8sU0FBUztBQUNqQyxNQUFJLFVBQVUsU0FBUyxVQUFVLFFBQVEsT0FBTyxVQUFVLGFBQWE7QUFDL0QsVUFBQSxJQUFJLE1BQU0sT0FBTztBQUFBLEVBQUE7QUFFM0I7QUFDQSxTQUFTLFFBQVEsTUFBTSxTQUFTO0FBQzlCLE1BQUksQ0FBQyxNQUFNO0FBQ1QsUUFBSSxPQUFPLFlBQVksWUFBYSxTQUFRLEtBQUssT0FBTztBQUNwRCxRQUFBO0FBQ0ksWUFBQSxJQUFJLE1BQU0sT0FBTztBQUFBLGFBQ2hCbkYsSUFBRztBQUFBLElBQUE7QUFBQSxFQUNaO0FBRUo7QUFDQSxTQUFTLFlBQVk7QUFDWixTQUFBLEtBQUssU0FBUyxTQUFTLEVBQUUsRUFBRSxVQUFVLEdBQUcsRUFBRTtBQUNuRDtBQUNBLFNBQVMsZ0JBQWdCLFVBQVVPLFFBQU87QUFDakMsU0FBQTtBQUFBLElBQ0wsS0FBSyxTQUFTO0FBQUEsSUFDZCxLQUFLLFNBQVM7QUFBQSxJQUNkLEtBQUtBO0FBQUEsRUFDUDtBQUNGO0FBQ0EsU0FBUyxlQUFlLFNBQVMsSUFBSSxRQUFRLE1BQU0sS0FBSztBQUN0RCxNQUFJLFdBQVc7QUFBQSxJQUNiLFVBQVUsT0FBTyxZQUFZLFdBQVcsVUFBVSxRQUFRO0FBQUEsSUFDMUQsUUFBUTtBQUFBLElBQ1IsTUFBTTtBQUFBLElBQ04sR0FBRyxPQUFPLE9BQU8sV0FBVyxVQUFVLEVBQUUsSUFBSTtBQUFBLElBQzVDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUtBLEtBQUssTUFBTSxHQUFHLE9BQU8sT0FBTyxVQUFVO0FBQUEsRUFDeEM7QUFDTyxTQUFBO0FBQ1Q7QUFDQSxTQUFTLFdBQVc7QUFBQSxFQUNsQixXQUFXO0FBQUEsRUFDWCxTQUFTO0FBQUEsRUFDVCxNQUFBd04sUUFBTztBQUNULEdBQUc7QUFDRCxNQUFJLFVBQVUsV0FBVztBQUN2QixnQkFBWSxPQUFPLE9BQU8sQ0FBQyxNQUFNLE1BQU0sU0FBUyxNQUFNO0FBQ3hELE1BQUlBLFNBQVFBLFVBQVM7QUFDbkIsZ0JBQVlBLE1BQUssT0FBTyxDQUFDLE1BQU0sTUFBTUEsUUFBTyxNQUFNQTtBQUM3QyxTQUFBO0FBQ1Q7QUFDQSxTQUFTLFVBQVUsTUFBTTtBQUN2QixNQUFJLGFBQWEsQ0FBQztBQUNsQixNQUFJLE1BQU07QUFDSixRQUFBLFlBQVksS0FBSyxRQUFRLEdBQUc7QUFDaEMsUUFBSSxhQUFhLEdBQUc7QUFDUCxpQkFBQSxPQUFPLEtBQUssVUFBVSxTQUFTO0FBQ25DLGFBQUEsS0FBSyxVQUFVLEdBQUcsU0FBUztBQUFBLElBQUE7QUFFaEMsUUFBQSxjQUFjLEtBQUssUUFBUSxHQUFHO0FBQ2xDLFFBQUksZUFBZSxHQUFHO0FBQ1QsaUJBQUEsU0FBUyxLQUFLLFVBQVUsV0FBVztBQUN2QyxhQUFBLEtBQUssVUFBVSxHQUFHLFdBQVc7QUFBQSxJQUFBO0FBRXRDLFFBQUksTUFBTTtBQUNSLGlCQUFXLFdBQVc7QUFBQSxJQUFBO0FBQUEsRUFDeEI7QUFFSyxTQUFBO0FBQ1Q7QUFDQSxTQUFTLG1CQUFtQixhQUFhLGFBQWEsa0JBQWtCNUksV0FBVSxDQUFBLEdBQUk7QUFDcEYsTUFBSSxFQUFFLFFBQVEsVUFBVSxTQUFTLGFBQWEsV0FBVyxVQUFVQTtBQUNuRSxNQUFJLGdCQUFnQixRQUFRO0FBQzVCLE1BQUksU0FBUztBQUNiLE1BQUksV0FBVztBQUNmLE1BQUk1RSxTQUFRLFNBQVM7QUFDckIsTUFBSUEsVUFBUyxNQUFNO0FBQ1QsSUFBQUEsU0FBQTtBQUNNLGtCQUFBLGFBQWEsRUFBRSxHQUFHLGNBQWMsT0FBTyxLQUFLQSxVQUFTLEVBQUU7QUFBQSxFQUFBO0FBRXZFLFdBQVMsV0FBVztBQUNsQixRQUFJLFFBQVEsY0FBYyxTQUFTLEVBQUUsS0FBSyxLQUFLO0FBQy9DLFdBQU8sTUFBTTtBQUFBLEVBQUE7QUFFZixXQUFTLFlBQVk7QUFDVixhQUFBO0FBQ1QsUUFBSSxZQUFZLFNBQVM7QUFDekIsUUFBSSxRQUFRLGFBQWEsT0FBTyxPQUFPLFlBQVlBO0FBQzNDLElBQUFBLFNBQUE7QUFDUixRQUFJLFVBQVU7QUFDWixlQUFTLEVBQUUsUUFBUSxVQUFVLFFBQVEsVUFBVSxPQUFPO0FBQUEsSUFBQTtBQUFBLEVBQ3hEO0FBRU8sV0FBQSxLQUFLLElBQUksT0FBTztBQUNkLGFBQUE7QUFDVCxRQUFJLFdBQVcsZUFBZSxRQUFRLFVBQVUsSUFBSSxLQUFLO0FBQ3JELFFBQUEsaUJBQW1DLGtCQUFBLFVBQVUsRUFBRTtBQUNuRCxJQUFBQSxTQUFRLGFBQWE7QUFDakIsUUFBQSxlQUFlLGdCQUFnQixVQUFVQSxNQUFLO0FBQzlDLFFBQUEsTUFBTSxRQUFRLFdBQVcsUUFBUTtBQUNqQyxRQUFBO0FBQ1ksb0JBQUEsVUFBVSxjQUFjLElBQUksR0FBRztBQUFBLGFBQ3RDLE9BQU87QUFDZCxVQUFJLGlCQUFpQixnQkFBZ0IsTUFBTSxTQUFTLGtCQUFrQjtBQUM5RCxjQUFBO0FBQUEsTUFBQTtBQUVBLGNBQUEsU0FBUyxPQUFPLEdBQUc7QUFBQSxJQUFBO0FBRTdCLFFBQUksWUFBWSxVQUFVO0FBQ3hCLGVBQVMsRUFBRSxRQUFRLFVBQVUsUUFBUSxVQUFVLE9BQU8sR0FBRztBQUFBLElBQUE7QUFBQSxFQUMzRDtBQUVPLFdBQUEsU0FBUyxJQUFJLE9BQU87QUFDbEIsYUFBQTtBQUNULFFBQUksV0FBVyxlQUFlLFFBQVEsVUFBVSxJQUFJLEtBQUs7QUFDckQsUUFBQSxpQkFBbUMsa0JBQUEsVUFBVSxFQUFFO0FBQ25ELElBQUFBLFNBQVEsU0FBUztBQUNiLFFBQUEsZUFBZSxnQkFBZ0IsVUFBVUEsTUFBSztBQUM5QyxRQUFBLE1BQU0sUUFBUSxXQUFXLFFBQVE7QUFDdkIsa0JBQUEsYUFBYSxjQUFjLElBQUksR0FBRztBQUNoRCxRQUFJLFlBQVksVUFBVTtBQUN4QixlQUFTLEVBQUUsUUFBUSxVQUFVLFFBQVEsVUFBVSxPQUFPLEdBQUc7QUFBQSxJQUFBO0FBQUEsRUFDM0Q7QUFFRixXQUFTLFVBQVUsSUFBSTtBQUNqQixRQUFBLE9BQU8sUUFBUSxTQUFTLFdBQVcsU0FBUyxRQUFRLFNBQVMsU0FBUyxRQUFRLFNBQVM7QUFDM0YsUUFBSSxPQUFPLE9BQU8sT0FBTyxXQUFXLEtBQUssV0FBVyxFQUFFO0FBQy9DLFdBQUEsS0FBSyxRQUFRLE1BQU0sS0FBSztBQUMvQjtBQUFBLE1BQ0U7QUFBQSxNQUNBLHNFQUFzRSxJQUFJO0FBQUEsSUFDNUU7QUFDTyxXQUFBLElBQUksSUFBSSxNQUFNLElBQUk7QUFBQSxFQUFBO0FBRTNCLE1BQUksVUFBVTtBQUFBLElBQ1osSUFBSSxTQUFTO0FBQ0osYUFBQTtBQUFBLElBQ1Q7QUFBQSxJQUNBLElBQUksV0FBVztBQUNOLGFBQUEsWUFBWSxTQUFTLGFBQWE7QUFBQSxJQUMzQztBQUFBLElBQ0EsT0FBTyxJQUFJO0FBQ1QsVUFBSSxVQUFVO0FBQ04sY0FBQSxJQUFJLE1BQU0sNENBQTRDO0FBQUEsTUFBQTtBQUV0RCxjQUFBLGlCQUFpQixtQkFBbUIsU0FBUztBQUMxQyxpQkFBQTtBQUNYLGFBQU8sTUFBTTtBQUNILGdCQUFBLG9CQUFvQixtQkFBbUIsU0FBUztBQUM3QyxtQkFBQTtBQUFBLE1BQ2I7QUFBQSxJQUNGO0FBQUEsSUFDQSxXQUFXLElBQUk7QUFDTixhQUFBLFlBQVksU0FBUyxFQUFFO0FBQUEsSUFDaEM7QUFBQSxJQUNBO0FBQUEsSUFDQSxlQUFlLElBQUk7QUFDYixVQUFBLE1BQU0sVUFBVSxFQUFFO0FBQ2YsYUFBQTtBQUFBLFFBQ0wsVUFBVSxJQUFJO0FBQUEsUUFDZCxRQUFRLElBQUk7QUFBQSxRQUNaLE1BQU0sSUFBSTtBQUFBLE1BQ1o7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsR0FBR1UsSUFBRztBQUNHLGFBQUEsY0FBYyxHQUFHQSxFQUFDO0FBQUEsSUFBQTtBQUFBLEVBRTdCO0FBQ08sU0FBQTtBQUNUO0FBc0RBLFNBQVMsWUFBWSxRQUFRLGFBQWEsV0FBVyxLQUFLO0FBQ3hELFNBQU8sZ0JBQWdCLFFBQVEsYUFBYSxVQUFVLEtBQUs7QUFDN0Q7QUFDQSxTQUFTLGdCQUFnQixRQUFRLGFBQWEsVUFBVSxjQUFjO0FBQ3BFLE1BQUksV0FBVyxPQUFPLGdCQUFnQixXQUFXLFVBQVUsV0FBVyxJQUFJO0FBQzFFLE1BQUksV0FBVyxjQUFjLFNBQVMsWUFBWSxLQUFLLFFBQVE7QUFDL0QsTUFBSSxZQUFZLE1BQU07QUFDYixXQUFBO0FBQUEsRUFBQTtBQUVMLE1BQUEsV0FBVyxjQUFjLE1BQU07QUFDbkMsb0JBQWtCLFFBQVE7QUFDMUIsTUFBSXlELFdBQVU7QUFDTCxXQUFBOUYsS0FBSSxHQUFHOEYsWUFBVyxRQUFROUYsS0FBSSxTQUFTLFFBQVEsRUFBRUEsSUFBRztBQUN2RCxRQUFBLFVBQVUsV0FBVyxRQUFRO0FBQ3ZCLElBQUE4RixXQUFBO0FBQUEsTUFDUixTQUFTOUYsRUFBQztBQUFBLE1BQ1Y7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBLEVBQUE7QUFFSyxTQUFBOEY7QUFDVDtBQVdBLFNBQVMsY0FBYyxRQUFRLFdBQVcsQ0FBQSxHQUFJLGNBQWMsQ0FBSSxHQUFBLGFBQWEsSUFBSTtBQUMvRSxNQUFJLGVBQWUsQ0FBQyxPQUFPbkUsUUFBTyxpQkFBaUI7QUFDakQsUUFBSSxPQUFPO0FBQUEsTUFDVCxjQUFjLGlCQUFpQixTQUFTLE1BQU0sUUFBUSxLQUFLO0FBQUEsTUFDM0QsZUFBZSxNQUFNLGtCQUFrQjtBQUFBLE1BQ3ZDLGVBQWVBO0FBQUEsTUFDZjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEtBQUssYUFBYSxXQUFXLEdBQUcsR0FBRztBQUNyQztBQUFBLFFBQ0UsS0FBSyxhQUFhLFdBQVcsVUFBVTtBQUFBLFFBQ3ZDLHdCQUF3QixLQUFLLFlBQVksd0JBQXdCLFVBQVU7QUFBQSxNQUM3RTtBQUNBLFdBQUssZUFBZSxLQUFLLGFBQWEsTUFBTSxXQUFXLE1BQU07QUFBQSxJQUFBO0FBRS9ELFFBQUksT0FBTyxVQUFVLENBQUMsWUFBWSxLQUFLLFlBQVksQ0FBQztBQUNoRCxRQUFBLGFBQWEsWUFBWSxPQUFPLElBQUk7QUFDeEMsUUFBSSxNQUFNLFlBQVksTUFBTSxTQUFTLFNBQVMsR0FBRztBQUMvQztBQUFBO0FBQUE7QUFBQSxRQUdFLE1BQU0sVUFBVTtBQUFBLFFBQ2hCLDRGQUE0RixJQUFJO0FBQUEsTUFDbEc7QUFDQSxvQkFBYyxNQUFNLFVBQVUsVUFBVSxZQUFZLElBQUk7QUFBQSxJQUFBO0FBRTFELFFBQUksTUFBTSxRQUFRLFFBQVEsQ0FBQyxNQUFNLE9BQU87QUFDdEM7QUFBQSxJQUFBO0FBRUYsYUFBUyxLQUFLO0FBQUEsTUFDWjtBQUFBLE1BQ0EsT0FBTyxhQUFhLE1BQU0sTUFBTSxLQUFLO0FBQUEsTUFDckM7QUFBQSxJQUFBLENBQ0Q7QUFBQSxFQUNIO0FBQ08sU0FBQSxRQUFRLENBQUMsT0FBT0EsV0FBVTs7QUFDM0IsUUFBQSxNQUFNLFNBQVMsTUFBTSxHQUFDdEIsTUFBQSxNQUFNLFNBQU4sZ0JBQUFBLElBQVksU0FBUyxPQUFNO0FBQ25ELG1CQUFhLE9BQU9zQixNQUFLO0FBQUEsSUFBQSxPQUNwQjtBQUNMLGVBQVMsWUFBWSx3QkFBd0IsTUFBTSxJQUFJLEdBQUc7QUFDM0MscUJBQUEsT0FBT0EsUUFBTyxRQUFRO0FBQUEsTUFBQTtBQUFBLElBQ3JDO0FBQUEsRUFDRixDQUNEO0FBQ00sU0FBQTtBQUNUO0FBQ0EsU0FBUyx3QkFBd0IsTUFBTTtBQUNqQyxNQUFBLFdBQVcsS0FBSyxNQUFNLEdBQUc7QUFDN0IsTUFBSSxTQUFTLFdBQVcsRUFBRyxRQUFPLENBQUM7QUFDbkMsTUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUk7QUFDbkIsTUFBQSxhQUFhLE1BQU0sU0FBUyxHQUFHO0FBQ25DLE1BQUk0YyxZQUFXLE1BQU0sUUFBUSxPQUFPLEVBQUU7QUFDbEMsTUFBQSxLQUFLLFdBQVcsR0FBRztBQUNyQixXQUFPLGFBQWEsQ0FBQ0EsV0FBVSxFQUFFLElBQUksQ0FBQ0EsU0FBUTtBQUFBLEVBQUE7QUFFaEQsTUFBSSxlQUFlLHdCQUF3QixLQUFLLEtBQUssR0FBRyxDQUFDO0FBQ3pELE1BQUksU0FBUyxDQUFDO0FBQ1AsU0FBQTtBQUFBLElBQ0wsR0FBRyxhQUFhO0FBQUEsTUFDZCxDQUFDLFlBQVksWUFBWSxLQUFLQSxZQUFXLENBQUNBLFdBQVUsT0FBTyxFQUFFLEtBQUssR0FBRztBQUFBLElBQUE7QUFBQSxFQUV6RTtBQUNBLE1BQUksWUFBWTtBQUNQLFdBQUEsS0FBSyxHQUFHLFlBQVk7QUFBQSxFQUFBO0FBRTdCLFNBQU8sT0FBTztBQUFBLElBQ1osQ0FBQyxhQUFhLEtBQUssV0FBVyxHQUFHLEtBQUssYUFBYSxLQUFLLE1BQU07QUFBQSxFQUNoRTtBQUNGO0FBQ0EsU0FBUyxrQkFBa0IsVUFBVTtBQUMxQixXQUFBO0FBQUEsSUFDUCxDQUFDeGIsSUFBR0ssT0FBTUwsR0FBRSxVQUFVSyxHQUFFLFFBQVFBLEdBQUUsUUFBUUwsR0FBRSxRQUFRO0FBQUEsTUFDbERBLEdBQUUsV0FBVyxJQUFJLENBQUMsU0FBUyxLQUFLLGFBQWE7QUFBQSxNQUM3Q0ssR0FBRSxXQUFXLElBQUksQ0FBQyxTQUFTLEtBQUssYUFBYTtBQUFBLElBQUE7QUFBQSxFQUVqRDtBQUNGO0FBQ0EsSUFBSSxVQUFVO0FBQ2QsSUFBSSxzQkFBc0I7QUFDMUIsSUFBSSxrQkFBa0I7QUFDdEIsSUFBSSxvQkFBb0I7QUFDeEIsSUFBSSxxQkFBcUI7QUFDekIsSUFBSSxlQUFlO0FBQ25CLElBQUksVUFBVSxDQUFDMEUsT0FBTUEsT0FBTTtBQUMzQixTQUFTLGFBQWEsTUFBTW5HLFFBQU87QUFDN0IsTUFBQSxXQUFXLEtBQUssTUFBTSxHQUFHO0FBQzdCLE1BQUksZUFBZSxTQUFTO0FBQ3hCLE1BQUEsU0FBUyxLQUFLLE9BQU8sR0FBRztBQUNWLG9CQUFBO0FBQUEsRUFBQTtBQUVsQixNQUFJQSxRQUFPO0FBQ08sb0JBQUE7QUFBQSxFQUFBO0FBRVgsU0FBQSxTQUFTLE9BQU8sQ0FBQ21HLE9BQU0sQ0FBQyxRQUFRQSxFQUFDLENBQUMsRUFBRTtBQUFBLElBQ3pDLENBQUMsT0FBTyxZQUFZLFNBQVMsUUFBUSxLQUFLLE9BQU8sSUFBSSxzQkFBc0IsWUFBWSxLQUFLLG9CQUFvQjtBQUFBLElBQ2hIO0FBQUEsRUFDRjtBQUNGO0FBQ0EsU0FBUyxlQUFlL0UsSUFBR0ssSUFBRztBQUM1QixNQUFJLFdBQVdMLEdBQUUsV0FBV0ssR0FBRSxVQUFVTCxHQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsTUFBTSxDQUFDVixJQUFHckMsT0FBTXFDLE9BQU1lLEdBQUVwRCxFQUFDLENBQUM7QUFDMUUsU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFLTCtDLEdBQUVBLEdBQUUsU0FBUyxDQUFDLElBQUlLLEdBQUVBLEdBQUUsU0FBUyxDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFJaEM7QUFBQTtBQUVKO0FBQ0EsU0FBUyxpQkFBaUIsUUFBUSxVQUFVLGVBQWUsT0FBTztBQUM1RCxNQUFBLEVBQUUsZUFBZTtBQUNyQixNQUFJLGdCQUFnQixDQUFDO0FBQ3JCLE1BQUksa0JBQWtCO0FBQ3RCLE1BQUkwQyxXQUFVLENBQUM7QUFDZixXQUFTOUYsS0FBSSxHQUFHQSxLQUFJLFdBQVcsUUFBUSxFQUFFQSxJQUFHO0FBQ3RDLFFBQUEsT0FBTyxXQUFXQSxFQUFDO0FBQ25CLFFBQUEsTUFBTUEsT0FBTSxXQUFXLFNBQVM7QUFDaEMsUUFBQSxvQkFBb0Isb0JBQW9CLE1BQU0sV0FBVyxTQUFTLE1BQU0sZ0JBQWdCLE1BQU0sS0FBSztBQUN2RyxRQUFJeUcsU0FBUTtBQUFBLE1BQ1YsRUFBRSxNQUFNLEtBQUssY0FBYyxlQUFlLEtBQUssZUFBZSxJQUFJO0FBQUEsTUFDbEU7QUFBQSxJQUNGO0FBQ0EsUUFBSSxRQUFRLEtBQUs7QUFDYixRQUFBLENBQUNBLFVBQVMsT0FBTyxnQkFBZ0IsQ0FBQyxXQUFXLFdBQVcsU0FBUyxDQUFDLEVBQUUsTUFBTSxPQUFPO0FBQzNFLE1BQUFBLFNBQUE7QUFBQSxRQUNOO0FBQUEsVUFDRSxNQUFNLEtBQUs7QUFBQSxVQUNYLGVBQWUsS0FBSztBQUFBLFVBQ3BCLEtBQUs7QUFBQSxRQUNQO0FBQUEsUUFDQTtBQUFBLE1BQ0Y7QUFBQSxJQUFBO0FBRUYsUUFBSSxDQUFDQSxRQUFPO0FBQ0gsYUFBQTtBQUFBLElBQUE7QUFFRixXQUFBLE9BQU8sZUFBZUEsT0FBTSxNQUFNO0FBQ3pDLElBQUFYLFNBQVEsS0FBSztBQUFBO0FBQUEsTUFFWCxRQUFRO0FBQUEsTUFDUixVQUFVLFVBQVUsQ0FBQyxpQkFBaUJXLE9BQU0sUUFBUSxDQUFDO0FBQUEsTUFDckQsY0FBYztBQUFBLFFBQ1osVUFBVSxDQUFDLGlCQUFpQkEsT0FBTSxZQUFZLENBQUM7QUFBQSxNQUNqRDtBQUFBLE1BQ0E7QUFBQSxJQUFBLENBQ0Q7QUFDRyxRQUFBQSxPQUFNLGlCQUFpQixLQUFLO0FBQzlCLHdCQUFrQixVQUFVLENBQUMsaUJBQWlCQSxPQUFNLFlBQVksQ0FBQztBQUFBLElBQUE7QUFBQSxFQUNuRTtBQUVLLFNBQUFYO0FBQ1Q7QUE2QkEsU0FBUyxVQUFVdUosVUFBUyxVQUFVO0FBQ2hDLE1BQUEsT0FBT0EsYUFBWSxVQUFVO0FBQy9CLElBQUFBLFdBQVUsRUFBRSxNQUFNQSxVQUFTLGVBQWUsT0FBTyxLQUFLLEtBQUs7QUFBQSxFQUFBO0FBRXpELE1BQUEsQ0FBQyxTQUFTLGNBQWMsSUFBSTtBQUFBLElBQzlCQSxTQUFRO0FBQUEsSUFDUkEsU0FBUTtBQUFBLElBQ1JBLFNBQVE7QUFBQSxFQUNWO0FBQ0ksTUFBQTVJLFNBQVEsU0FBUyxNQUFNLE9BQU87QUFDOUIsTUFBQSxDQUFDQSxPQUFjLFFBQUE7QUFDZixNQUFBLGtCQUFrQkEsT0FBTSxDQUFDO0FBQzdCLE1BQUksZUFBZSxnQkFBZ0IsUUFBUSxXQUFXLElBQUk7QUFDdEQsTUFBQSxnQkFBZ0JBLE9BQU0sTUFBTSxDQUFDO0FBQ2pDLE1BQUksU0FBUyxlQUFlO0FBQUEsSUFDMUIsQ0FBQyxPQUFPLEVBQUUsV0FBVyxXQUFBLEdBQWM5RSxXQUFVO0FBQzNDLFVBQUksY0FBYyxLQUFLO0FBQ2pCLFlBQUEsYUFBYSxjQUFjQSxNQUFLLEtBQUs7QUFDMUIsdUJBQUEsZ0JBQWdCLE1BQU0sR0FBRyxnQkFBZ0IsU0FBUyxXQUFXLE1BQU0sRUFBRSxRQUFRLFdBQVcsSUFBSTtBQUFBLE1BQUE7QUFFdkcsWUFBQSxRQUFRLGNBQWNBLE1BQUs7QUFDN0IsVUFBQSxjQUFjLENBQUMsT0FBTztBQUN4QixjQUFNLFNBQVMsSUFBSTtBQUFBLE1BQUEsT0FDZDtBQUNMLGNBQU0sU0FBUyxLQUFLLFNBQVMsSUFBSSxRQUFRLFFBQVEsR0FBRztBQUFBLE1BQUE7QUFFL0MsYUFBQTtBQUFBLElBQ1Q7QUFBQSxJQUNBLENBQUE7QUFBQSxFQUNGO0FBQ08sU0FBQTtBQUFBLElBQ0w7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWO0FBQUEsSUFDQSxTQUFBME47QUFBQSxFQUNGO0FBQ0Y7QUFDQSxTQUFTLFlBQVksTUFBTSxnQkFBZ0IsT0FBTyxNQUFNLE1BQU07QUFDNUQ7QUFBQSxJQUNFLFNBQVMsT0FBTyxDQUFDLEtBQUssU0FBUyxHQUFHLEtBQUssS0FBSyxTQUFTLElBQUk7QUFBQSxJQUN6RCxlQUFlLElBQUksb0NBQW9DLEtBQUssUUFBUSxPQUFPLElBQUksQ0FBQyx5SUFBeUksS0FBSyxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQUEsRUFDcFA7QUFDQSxNQUFJLFNBQVMsQ0FBQztBQUNkLE1BQUksZUFBZSxNQUFNLEtBQUssUUFBUSxXQUFXLEVBQUUsRUFBRSxRQUFRLFFBQVEsR0FBRyxFQUFFLFFBQVEsc0JBQXNCLE1BQU0sRUFBRTtBQUFBLElBQzlHO0FBQUEsSUFDQSxDQUFDMVAsSUFBRyxXQUFXLGVBQWU7QUFDNUIsYUFBTyxLQUFLLEVBQUUsV0FBVyxZQUFZLGNBQWMsTUFBTTtBQUN6RCxhQUFPLGFBQWEsaUJBQWlCO0FBQUEsSUFBQTtBQUFBLEVBRXpDO0FBQ0ksTUFBQSxLQUFLLFNBQVMsR0FBRyxHQUFHO0FBQ3RCLFdBQU8sS0FBSyxFQUFFLFdBQVcsSUFBQSxDQUFLO0FBQzlCLG9CQUFnQixTQUFTLE9BQU8sU0FBUyxPQUFPLFVBQVU7QUFBQSxhQUNqRCxLQUFLO0FBQ0Usb0JBQUE7QUFBQSxFQUNQLFdBQUEsU0FBUyxNQUFNLFNBQVMsS0FBSztBQUN0QixvQkFBQTtBQUFBLEVBQUEsTUFDWDtBQUVQLE1BQUksVUFBVSxJQUFJLE9BQU8sY0FBYyxnQkFBZ0IsU0FBUyxHQUFHO0FBQzVELFNBQUEsQ0FBQyxTQUFTLE1BQU07QUFDekI7QUFDQSxTQUFTLFdBQVcsT0FBTztBQUNyQixNQUFBO0FBQ0YsV0FBTyxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQ2dELE9BQU0sbUJBQW1CQSxFQUFDLEVBQUUsUUFBUSxPQUFPLEtBQUssQ0FBQyxFQUFFLEtBQUssR0FBRztBQUFBLFdBQ2pGLE9BQU87QUFDZDtBQUFBLE1BQ0U7QUFBQSxNQUNBLGlCQUFpQixLQUFLLG9IQUFvSCxLQUFLO0FBQUEsSUFDako7QUFDTyxXQUFBO0FBQUEsRUFBQTtBQUVYO0FBQ0EsU0FBUyxjQUFjLFVBQVUsVUFBVTtBQUNyQyxNQUFBLGFBQWEsSUFBWSxRQUFBO0FBQ3pCLE1BQUEsQ0FBQyxTQUFTLFlBQVksRUFBRSxXQUFXLFNBQVMsWUFBQSxDQUFhLEdBQUc7QUFDdkQsV0FBQTtBQUFBLEVBQUE7QUFFTCxNQUFBLGFBQWEsU0FBUyxTQUFTLEdBQUcsSUFBSSxTQUFTLFNBQVMsSUFBSSxTQUFTO0FBQ3JFLE1BQUEsV0FBVyxTQUFTLE9BQU8sVUFBVTtBQUNyQyxNQUFBLFlBQVksYUFBYSxLQUFLO0FBQ3pCLFdBQUE7QUFBQSxFQUFBO0FBRUYsU0FBQSxTQUFTLE1BQU0sVUFBVSxLQUFLO0FBQ3ZDO0FBQ0EsU0FBUyxZQUFZLElBQUksZUFBZSxLQUFLO0FBQ3ZDLE1BQUE7QUFBQSxJQUNGLFVBQVU7QUFBQSxJQUNWLFNBQVM7QUFBQSxJQUNULE1BQUF3TSxRQUFPO0FBQUEsTUFDTCxPQUFPLE9BQU8sV0FBVyxVQUFVLEVBQUUsSUFBSTtBQUN6QyxNQUFBLFdBQVcsYUFBYSxXQUFXLFdBQVcsR0FBRyxJQUFJLGFBQWEsZ0JBQWdCLFlBQVksWUFBWSxJQUFJO0FBQzNHLFNBQUE7QUFBQSxJQUNMO0FBQUEsSUFDQSxRQUFRLGdCQUFnQixNQUFNO0FBQUEsSUFDOUIsTUFBTSxjQUFjQSxLQUFJO0FBQUEsRUFDMUI7QUFDRjtBQUNBLFNBQVMsZ0JBQWdCLGNBQWMsY0FBYztBQUNuRCxNQUFJLFdBQVcsYUFBYSxRQUFRLFFBQVEsRUFBRSxFQUFFLE1BQU0sR0FBRztBQUNyRCxNQUFBLG1CQUFtQixhQUFhLE1BQU0sR0FBRztBQUM1QixtQkFBQSxRQUFRLENBQUMsWUFBWTtBQUNwQyxRQUFJLFlBQVksTUFBTTtBQUNwQixVQUFJLFNBQVMsU0FBUyxFQUFHLFVBQVMsSUFBSTtBQUFBLElBQUEsV0FDN0IsWUFBWSxLQUFLO0FBQzFCLGVBQVMsS0FBSyxPQUFPO0FBQUEsSUFBQTtBQUFBLEVBQ3ZCLENBQ0Q7QUFDRCxTQUFPLFNBQVMsU0FBUyxJQUFJLFNBQVMsS0FBSyxHQUFHLElBQUk7QUFDcEQ7QUFDQSxTQUFTLG9CQUFvQmhJLE9BQU0sT0FBTyxNQUFNLE1BQU07QUFDcEQsU0FBTyxxQkFBcUJBLEtBQUksNENBQTRDLEtBQUssYUFBYSxLQUFLO0FBQUEsSUFDakc7QUFBQSxFQUFBLENBQ0QsMENBQTBDLElBQUk7QUFDakQ7QUFDQSxTQUFTLDJCQUEyQnJCLFVBQVM7QUFDM0MsU0FBT0EsU0FBUTtBQUFBLElBQ2IsQ0FBQ1csUUFBTzlFLFdBQVVBLFdBQVUsS0FBSzhFLE9BQU0sTUFBTSxRQUFRQSxPQUFNLE1BQU0sS0FBSyxTQUFTO0FBQUEsRUFDakY7QUFDRjtBQUNBLFNBQVMsb0JBQW9CWCxVQUFTO0FBQ2hDLE1BQUEsY0FBYywyQkFBMkJBLFFBQU87QUFDcEQsU0FBTyxZQUFZO0FBQUEsSUFDakIsQ0FBQ1csUUFBTyxRQUFRLFFBQVEsWUFBWSxTQUFTLElBQUlBLE9BQU0sV0FBV0EsT0FBTTtBQUFBLEVBQzFFO0FBQ0Y7QUFDQSxTQUFTLFVBQVUsT0FBTyxnQkFBZ0Isa0JBQWtCLGlCQUFpQixPQUFPO0FBQzlFLE1BQUE7QUFDQSxNQUFBLE9BQU8sVUFBVSxVQUFVO0FBQzdCLFNBQUssVUFBVSxLQUFLO0FBQUEsRUFBQSxPQUNmO0FBQ0EsU0FBQSxFQUFFLEdBQUcsTUFBTTtBQUNoQjtBQUFBLE1BQ0UsQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLFNBQVMsU0FBUyxHQUFHO0FBQUEsTUFDekMsb0JBQW9CLEtBQUssWUFBWSxVQUFVLEVBQUU7QUFBQSxJQUNuRDtBQUNBO0FBQUEsTUFDRSxDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQUcsU0FBUyxTQUFTLEdBQUc7QUFBQSxNQUN6QyxvQkFBb0IsS0FBSyxZQUFZLFFBQVEsRUFBRTtBQUFBLElBQ2pEO0FBQ0E7QUFBQSxNQUNFLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxPQUFPLFNBQVMsR0FBRztBQUFBLE1BQ3JDLG9CQUFvQixLQUFLLFVBQVUsUUFBUSxFQUFFO0FBQUEsSUFDL0M7QUFBQSxFQUFBO0FBRUYsTUFBSSxjQUFjLFVBQVUsTUFBTSxHQUFHLGFBQWE7QUFDOUMsTUFBQSxhQUFhLGNBQWMsTUFBTSxHQUFHO0FBQ3BDLE1BQUF5QjtBQUNKLE1BQUksY0FBYyxNQUFNO0FBQ2YsSUFBQUEsUUFBQTtBQUFBLEVBQUEsT0FDRjtBQUNELFFBQUEscUJBQXFCLGVBQWUsU0FBUztBQUNqRCxRQUFJLENBQUMsa0JBQWtCLFdBQVcsV0FBVyxJQUFJLEdBQUc7QUFDOUMsVUFBQSxhQUFhLFdBQVcsTUFBTSxHQUFHO0FBQzlCLGFBQUEsV0FBVyxDQUFDLE1BQU0sTUFBTTtBQUM3QixtQkFBVyxNQUFNO0FBQ0ssOEJBQUE7QUFBQSxNQUFBO0FBRXJCLFNBQUEsV0FBVyxXQUFXLEtBQUssR0FBRztBQUFBLElBQUE7QUFFbkMsSUFBQUEsUUFBTyxzQkFBc0IsSUFBSSxlQUFlLGtCQUFrQixJQUFJO0FBQUEsRUFBQTtBQUVwRSxNQUFBLE9BQU8sWUFBWSxJQUFJQSxLQUFJO0FBQy9CLE1BQUksMkJBQTJCLGNBQWMsZUFBZSxPQUFPLFdBQVcsU0FBUyxHQUFHO0FBQzFGLE1BQUksMkJBQTJCLGVBQWUsZUFBZSxRQUFRLGlCQUFpQixTQUFTLEdBQUc7QUFDbEcsTUFBSSxDQUFDLEtBQUssU0FBUyxTQUFTLEdBQUcsTUFBTSw0QkFBNEIsMEJBQTBCO0FBQ3pGLFNBQUssWUFBWTtBQUFBLEVBQUE7QUFFWixTQUFBO0FBQ1Q7QUFDQSxJQUFJLFlBQVksQ0FBQyxVQUFVLE1BQU0sS0FBSyxHQUFHLEVBQUUsUUFBUSxVQUFVLEdBQUc7QUFDaEUsSUFBSSxvQkFBb0IsQ0FBQyxhQUFhLFNBQVMsUUFBUSxRQUFRLEVBQUUsRUFBRSxRQUFRLFFBQVEsR0FBRztBQUN0RixJQUFJLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxVQUFVLFdBQVcsTUFBTSxLQUFLLE9BQU8sV0FBVyxHQUFHLElBQUksU0FBUyxNQUFNO0FBQzNHLElBQUksZ0JBQWdCLENBQUNpSCxVQUFTLENBQUNBLFNBQVFBLFVBQVMsTUFBTSxLQUFLQSxNQUFLLFdBQVcsR0FBRyxJQUFJQSxRQUFPLE1BQU1BO0FBbUQvRixTQUFTLHFCQUFxQixPQUFPO0FBQ25DLFNBQU8sU0FBUyxRQUFRLE9BQU8sTUFBTSxXQUFXLFlBQVksT0FBTyxNQUFNLGVBQWUsWUFBWSxPQUFPLE1BQU0sYUFBYSxhQUFhLFVBQVU7QUFDdko7QUFHQSxJQUFJLDBCQUEwQjtBQUFBLEVBQzVCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0Y7QUFDMkIsSUFBSTtBQUFBLEVBQzdCO0FBQ0Y7QUFDQSxJQUFJLHlCQUF5QjtBQUFBLEVBQzNCO0FBQUEsRUFDQSxHQUFHO0FBQ0w7QUFDMEIsSUFBSSxJQUFJLHNCQUFzQjtBQWdtR3hELElBQUksb0JBQW9CbUUsYUFBTSxjQUFjLElBQUk7QUFDaEQsa0JBQWtCLGNBQWM7QUFDaEMsSUFBSSx5QkFBeUJBLGFBQU0sY0FBYyxJQUFJO0FBQ3JELHVCQUF1QixjQUFjO0FBQ3JDLElBQUksd0JBQXdCQSxhQUFBQSxjQUFvQjtBQUFBLEVBQzlDLGlCQUFpQjtBQUNuQixDQUFDO0FBQ0Qsc0JBQXNCLGNBQWM7QUFDcEMsSUFBSSxrQkFBa0JBLGFBQU07QUFBQSxzQkFDTixJQUFJO0FBQzFCO0FBQ0EsZ0JBQWdCLGNBQWM7QUFDOUIsSUFBSSxlQUFlQSxhQUFNLGNBQWMsSUFBSTtBQUMzQyxhQUFhLGNBQWM7QUFDM0IsSUFBSSxvQkFBb0JBLGFBQU07QUFBQSxFQUM1QjtBQUNGO0FBQ0Esa0JBQWtCLGNBQWM7QUFDaEMsSUFBSSxrQkFBa0JBLGFBQU07QUFBQSxFQUMxQjtBQUNGO0FBQ0EsZ0JBQWdCLGNBQWM7QUFDOUIsSUFBSSxlQUFlQSxhQUFBQSxjQUFvQjtBQUFBLEVBQ3JDLFFBQVE7QUFBQSxFQUNSLFNBQVMsQ0FBQztBQUFBLEVBQ1YsYUFBYTtBQUNmLENBQUM7QUFDRCxhQUFhLGNBQWM7QUFDM0IsSUFBSSxvQkFBb0JBLGFBQU0sY0FBYyxJQUFJO0FBQ2hELGtCQUFrQixjQUFjO0FBS2hDLFNBQVMsUUFBUSxJQUFJLEVBQUUsU0FBUyxJQUFJLENBQUEsR0FBSTtBQUN0QztBQUFBLElBQ0UsbUJBQW1CO0FBQUE7QUFBQTtBQUFBLElBR25CO0FBQUEsRUFDRjtBQUNBLE1BQUksRUFBRSxVQUFVLFdBQVcsZUFBZWlsQixhQUFBQSxXQUFrQixpQkFBaUI7QUFDekUsTUFBQSxFQUFFLE1BQUFwcEIsT0FBTSxVQUFVLE9BQUEsSUFBVyxnQkFBZ0IsSUFBSSxFQUFFLFVBQVU7QUFDakUsTUFBSSxpQkFBaUI7QUFDckIsTUFBSSxhQUFhLEtBQUs7QUFDcEIscUJBQWlCLGFBQWEsTUFBTSxXQUFXLFVBQVUsQ0FBQyxVQUFVLFFBQVEsQ0FBQztBQUFBLEVBQUE7QUFFL0UsU0FBTyxXQUFXLFdBQVcsRUFBRSxVQUFVLGdCQUFnQixRQUFRLE1BQUFBLE9BQU07QUFDekU7QUFDQSxTQUFTLHFCQUFxQjtBQUNyQixTQUFBb3BCLGFBQWtCLFdBQUEsZUFBZSxLQUFLO0FBQy9DO0FBQ0EsU0FBUyxjQUFjO0FBQ3JCO0FBQUEsSUFDRSxtQkFBbUI7QUFBQTtBQUFBO0FBQUEsSUFHbkI7QUFBQSxFQUNGO0FBQ08sU0FBQUEsYUFBa0IsV0FBQSxlQUFlLEVBQUU7QUFDNUM7QUFpQkEsSUFBSSx3QkFBd0I7QUFDNUIsU0FBUywwQkFBMEIsSUFBSTtBQUNyQyxNQUFJLFdBQVdBLGFBQUFBLFdBQWtCLGlCQUFpQixFQUFFO0FBQ3BELE1BQUksQ0FBQyxVQUFVO0FBQ2JDLGlCQUFBQSxnQkFBdUIsRUFBRTtBQUFBLEVBQUE7QUFFN0I7QUFDQSxTQUFTLGNBQWM7QUFDckIsTUFBSSxFQUFFLFlBQUEsSUFBZ0JELHdCQUFrQixZQUFZO0FBQzdDLFNBQUEsY0FBYyxrQkFBa0IsSUFBSSxvQkFBb0I7QUFDakU7QUFDQSxTQUFTLHNCQUFzQjtBQUM3QjtBQUFBLElBQ0UsbUJBQW1CO0FBQUE7QUFBQTtBQUFBLElBR25CO0FBQUEsRUFDRjtBQUNJLE1BQUEsb0JBQW9CQSxhQUFPLFdBQVcsaUJBQWlCO0FBQzNELE1BQUksRUFBRSxVQUFVLFdBQVcsZUFBZUEsYUFBQUEsV0FBa0IsaUJBQWlCO0FBQzdFLE1BQUksRUFBRSxTQUFBenlCLFNBQUEsSUFBWXl5Qix3QkFBa0IsWUFBWTtBQUNoRCxNQUFJLEVBQUUsVUFBVSxpQkFBaUIsSUFBSSxZQUFZO0FBQ2pELE1BQUkscUJBQXFCLEtBQUssVUFBVSxvQkFBb0J6eUIsUUFBTyxDQUFDO0FBQ2hFLE1BQUEsWUFBWTJ5QixhQUFPLE9BQU8sS0FBSztBQUNuQyw0QkFBMEIsTUFBTTtBQUM5QixjQUFVLFVBQVU7QUFBQSxFQUFBLENBQ3JCO0FBQ0QsTUFBSSxXQUFXQyxhQUFPO0FBQUEsSUFDcEIsQ0FBQyxJQUFJbnlCLFdBQVUsT0FBTztBQUNaLGNBQUEsVUFBVSxTQUFTLHFCQUFxQjtBQUM1QyxVQUFBLENBQUMsVUFBVSxRQUFTO0FBQ3BCLFVBQUEsT0FBTyxPQUFPLFVBQVU7QUFDMUIsbUJBQVcsR0FBRyxFQUFFO0FBQ2hCO0FBQUEsTUFBQTtBQUVGLFVBQUksT0FBTztBQUFBLFFBQ1Q7QUFBQSxRQUNBLEtBQUssTUFBTSxrQkFBa0I7QUFBQSxRQUM3QjtBQUFBLFFBQ0FBLFNBQVEsYUFBYTtBQUFBLE1BQ3ZCO0FBQ0ksVUFBQSxxQkFBcUIsUUFBUSxhQUFhLEtBQUs7QUFDNUMsYUFBQSxXQUFXLEtBQUssYUFBYSxNQUFNLFdBQVcsVUFBVSxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUM7QUFBQSxNQUFBO0FBRXhGLE9BQUMsQ0FBQyxDQUFDQSxTQUFRLFVBQVUsV0FBVyxVQUFVLFdBQVc7QUFBQSxRQUNuRDtBQUFBLFFBQ0FBLFNBQVE7QUFBQSxRQUNSQTtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBLE1BQ0U7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFBQTtBQUFBLEVBRUo7QUFDTyxTQUFBO0FBQ1Q7QUFDb0JveUIsYUFBQUEsY0FBcUIsSUFBSTtBQVc3QyxTQUFTLFlBQVk7QUFDbkIsTUFBSSxFQUFFLFNBQUE3eUIsU0FBQSxJQUFZeXlCLHdCQUFrQixZQUFZO0FBQ2hELE1BQUksYUFBYXp5QixTQUFRQSxTQUFRLFNBQVMsQ0FBQztBQUNwQyxTQUFBLGFBQWEsV0FBVyxTQUFTLENBQUM7QUFDM0M7QUFDQSxTQUFTLGdCQUFnQixJQUFJLEVBQUUsU0FBUyxJQUFJLENBQUEsR0FBSTtBQUM5QyxNQUFJLEVBQUUsU0FBQUEsU0FBQSxJQUFZeXlCLHdCQUFrQixZQUFZO0FBQ2hELE1BQUksRUFBRSxVQUFVLGlCQUFpQixJQUFJLFlBQVk7QUFDakQsTUFBSSxxQkFBcUIsS0FBSyxVQUFVLG9CQUFvQnp5QixRQUFPLENBQUM7QUFDcEUsU0FBTzh5QixhQUFPO0FBQUEsSUFDWixNQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0EsS0FBSyxNQUFNLGtCQUFrQjtBQUFBLE1BQzdCO0FBQUEsTUFDQSxhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsQ0FBQyxJQUFJLG9CQUFvQixrQkFBa0IsUUFBUTtBQUFBLEVBQ3JEO0FBQ0Y7QUFDQSxTQUFTLFVBQVUsUUFBUSxhQUFhO0FBQy9CLFNBQUEsY0FBYyxRQUFRLFdBQVc7QUFDMUM7QUFDQSxTQUFTLGNBQWMsUUFBUSxhQUFhLGlCQUFpQixRQUFROztBQUNuRTtBQUFBLElBQ0UsbUJBQW1CO0FBQUE7QUFBQTtBQUFBLElBR25CO0FBQUEsRUFDRjtBQUNBLE1BQUksRUFBRSxXQUFXLGVBQWVMLGFBQUFBLFdBQWtCLGlCQUFpQjtBQUNuRSxNQUFJLEVBQUUsU0FBUyxrQkFBa0JBLGFBQUFBLFdBQWtCLFlBQVk7QUFDL0QsTUFBSSxhQUFhLGNBQWMsY0FBYyxTQUFTLENBQUM7QUFDdkQsTUFBSSxlQUFlLGFBQWEsV0FBVyxTQUFTLENBQUM7QUFDakQsTUFBQSxpQkFBaUIsYUFBYSxXQUFXLFdBQVc7QUFDcEQsTUFBQSxxQkFBcUIsYUFBYSxXQUFXLGVBQWU7QUFDNUQsTUFBQSxjQUFjLGNBQWMsV0FBVztBQUNsQjtBQUNuQixRQUFBLGFBQWEsZUFBZSxZQUFZLFFBQVE7QUFDcEQ7QUFBQSxNQUNFO0FBQUEsTUFDQSxDQUFDLGVBQWUsV0FBVyxTQUFTLEdBQUcsS0FBSyxXQUFXLFNBQVMsSUFBSTtBQUFBLE1BQ3BFLG9FQUFvRSxjQUFjLHlCQUF5QixVQUFVO0FBQUE7QUFBQSx3Q0FFbkYsVUFBVSxzQkFBc0IsZUFBZSxNQUFNLE1BQU0sR0FBRyxVQUFVLElBQUk7QUFBQSxJQUNoSDtBQUFBLEVBQUE7QUFFRixNQUFJLHNCQUFzQixZQUFZO0FBQ2xDLE1BQUE7QUFDSixNQUFJLGFBQWE7QUFDZixRQUFJLG9CQUFvQixPQUFPLGdCQUFnQixXQUFXLFVBQVUsV0FBVyxJQUFJO0FBQ25GO0FBQUEsTUFDRSx1QkFBdUIsU0FBT2w0QixNQUFBLGtCQUFrQixhQUFsQixnQkFBQUEsSUFBNEIsV0FBVztBQUFBLE1BQ3JFLDJPQUEyTyxrQkFBa0IsbUJBQW1CLGtCQUFrQixRQUFRO0FBQUEsSUFDNVM7QUFDVyxlQUFBO0FBQUEsRUFBQSxPQUNOO0FBQ00sZUFBQTtBQUFBLEVBQUE7QUFFVCxNQUFBLFdBQVcsU0FBUyxZQUFZO0FBQ3BDLE1BQUksb0JBQW9CO0FBQ3hCLE1BQUksdUJBQXVCLEtBQUs7QUFDOUIsUUFBSSxpQkFBaUIsbUJBQW1CLFFBQVEsT0FBTyxFQUFFLEVBQUUsTUFBTSxHQUFHO0FBQ3BFLFFBQUksV0FBVyxTQUFTLFFBQVEsT0FBTyxFQUFFLEVBQUUsTUFBTSxHQUFHO0FBQ3BELHdCQUFvQixNQUFNLFNBQVMsTUFBTSxlQUFlLE1BQU0sRUFBRSxLQUFLLEdBQUc7QUFBQSxFQUFBO0FBRTFFLE1BQUl5RixXQUFVLFlBQVksUUFBUSxFQUFFLFVBQVUsbUJBQW1CO0FBQ3hDO0FBQ3ZCO0FBQUEsTUFDRSxlQUFlQSxZQUFXO0FBQUEsTUFDMUIsK0JBQStCLFNBQVMsUUFBUSxHQUFHLFNBQVMsTUFBTSxHQUFHLFNBQVMsSUFBSTtBQUFBLElBQ3BGO0FBQ0E7QUFBQSxNQUNFQSxZQUFXLFFBQVFBLFNBQVFBLFNBQVEsU0FBUyxDQUFDLEVBQUUsTUFBTSxZQUFZLFVBQVVBLFNBQVFBLFNBQVEsU0FBUyxDQUFDLEVBQUUsTUFBTSxjQUFjLFVBQVVBLFNBQVFBLFNBQVEsU0FBUyxDQUFDLEVBQUUsTUFBTSxTQUFTO0FBQUEsTUFDaEwsbUNBQW1DLFNBQVMsUUFBUSxHQUFHLFNBQVMsTUFBTSxHQUFHLFNBQVMsSUFBSTtBQUFBLElBQ3hGO0FBQUEsRUFBQTtBQUVGLE1BQUksa0JBQWtCO0FBQUEsSUFDcEJBLFlBQVdBLFNBQVE7QUFBQSxNQUNqQixDQUFDVyxXQUFVLE9BQU8sT0FBTyxDQUFBLEdBQUlBLFFBQU87QUFBQSxRQUNsQyxRQUFRLE9BQU8sT0FBTyxDQUFJLEdBQUEsY0FBY0EsT0FBTSxNQUFNO0FBQUEsUUFDcEQsVUFBVSxVQUFVO0FBQUEsVUFDbEI7QUFBQTtBQUFBLFVBRUEsV0FBVyxpQkFBaUIsV0FBVyxlQUFlQSxPQUFNLFFBQVEsRUFBRSxXQUFXQSxPQUFNO0FBQUEsUUFBQSxDQUN4RjtBQUFBLFFBQ0QsY0FBY0EsT0FBTSxpQkFBaUIsTUFBTSxxQkFBcUIsVUFBVTtBQUFBLFVBQ3hFO0FBQUE7QUFBQSxVQUVBLFdBQVcsaUJBQWlCLFdBQVcsZUFBZUEsT0FBTSxZQUFZLEVBQUUsV0FBV0EsT0FBTTtBQUFBLFFBQzVGLENBQUE7QUFBQSxNQUNGLENBQUE7QUFBQSxJQUNIO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUNBLE1BQUksZUFBZSxpQkFBaUI7QUFDbEMsV0FBOEJveUIsNkJBQUE7QUFBQSxNQUM1QixnQkFBZ0I7QUFBQSxNQUNoQjtBQUFBLFFBQ0UsT0FBTztBQUFBLFVBQ0wsVUFBVTtBQUFBLFlBQ1IsVUFBVTtBQUFBLFlBQ1YsUUFBUTtBQUFBLFlBQ1IsTUFBTTtBQUFBLFlBQ04sT0FBTztBQUFBLFlBQ1AsS0FBSztBQUFBLFlBQ0wsR0FBRztBQUFBLFVBQ0w7QUFBQSxVQUNBLGdCQUFnQjtBQUFBO0FBQUEsUUFBQTtBQUFBLE1BRXBCO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxFQUFBO0FBRUssU0FBQTtBQUNUO0FBQ0EsU0FBUyx3QkFBd0I7QUFDL0IsTUFBSSxRQUFRLGNBQWM7QUFDMUIsTUFBSSxVQUFVLHFCQUFxQixLQUFLLElBQUksR0FBRyxNQUFNLE1BQU0sSUFBSSxNQUFNLFVBQVUsS0FBSyxpQkFBaUIsUUFBUSxNQUFNLFVBQVUsS0FBSyxVQUFVLEtBQUs7QUFDakosTUFBSSxRQUFRLGlCQUFpQixRQUFRLE1BQU0sUUFBUTtBQUNuRCxNQUFJLFlBQVk7QUFDaEIsTUFBSSxZQUFZLEVBQUUsU0FBUyxVQUFVLGlCQUFpQixVQUFVO0FBQ2hFLE1BQUksYUFBYSxFQUFFLFNBQVMsV0FBVyxpQkFBaUIsVUFBVTtBQUNsRSxNQUFJLFVBQVU7QUFDVztBQUNmLFlBQUE7QUFBQSxNQUNOO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFDQSx5REFBK0NDLGFBQUFBLFVBQWlCLGlEQUEyQyxLQUFLLE1BQU0scUJBQW1DLEdBQTBCRCw2QkFBQUEsY0FBYyxLQUFLLE1BQU0sZ0dBQXVIQSw2QkFBQUEsY0FBYyxRQUFRLEVBQUUsT0FBTyxXQUFXLEdBQUcsZUFBZSxHQUFHLE9BQU8sS0FBcUJBLDZCQUFBQSxjQUFxQixRQUFRLEVBQUUsT0FBTyxXQUFBLEdBQWMsY0FBYyxHQUFHLHNCQUFzQixDQUFDO0FBQUEsRUFBQTtBQUU1ZixTQUE4QkEsMkNBQWNDLGFBQUFBLFVBQWlCLE1BQTZCRCw2QkFBQSxjQUFjLE1BQU0sTUFBTSwrQkFBK0IsR0FBbUJBLDZCQUFxQixjQUFBLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxTQUFBLEVBQVcsR0FBRyxPQUFPLEdBQUcsUUFBK0JBLDZCQUFBLGNBQWMsT0FBTyxFQUFFLE9BQU8sVUFBVSxHQUFHLEtBQUssSUFBSSxNQUFNLE9BQU87QUFDalY7QUFDQSxJQUFJLHNCQUFzQ0EsNkJBQUFBLGNBQXFCLHVCQUF1QixJQUFJO0FBQzFGLElBQUksc0JBQXNCLGNBQWNFLGFBQUFBLFVBQWlCO0FBQUEsRUFDdkQsWUFBWSxPQUFPO0FBQ2pCLFVBQU0sS0FBSztBQUNYLFNBQUssUUFBUTtBQUFBLE1BQ1gsVUFBVSxNQUFNO0FBQUEsTUFDaEIsY0FBYyxNQUFNO0FBQUEsTUFDcEIsT0FBTyxNQUFNO0FBQUEsSUFDZjtBQUFBLEVBQUE7QUFBQSxFQUVGLE9BQU8seUJBQXlCLE9BQU87QUFDckMsV0FBTyxFQUFFLE1BQU07QUFBQSxFQUFBO0FBQUEsRUFFakIsT0FBTyx5QkFBeUIsT0FBTyxPQUFPO0FBQ3hDLFFBQUEsTUFBTSxhQUFhLE1BQU0sWUFBWSxNQUFNLGlCQUFpQixVQUFVLE1BQU0saUJBQWlCLFFBQVE7QUFDaEcsYUFBQTtBQUFBLFFBQ0wsT0FBTyxNQUFNO0FBQUEsUUFDYixVQUFVLE1BQU07QUFBQSxRQUNoQixjQUFjLE1BQU07QUFBQSxNQUN0QjtBQUFBLElBQUE7QUFFSyxXQUFBO0FBQUEsTUFDTCxPQUFPLE1BQU0sVUFBVSxTQUFTLE1BQU0sUUFBUSxNQUFNO0FBQUEsTUFDcEQsVUFBVSxNQUFNO0FBQUEsTUFDaEIsY0FBYyxNQUFNLGdCQUFnQixNQUFNO0FBQUEsSUFDNUM7QUFBQSxFQUFBO0FBQUEsRUFFRixrQkFBa0IsT0FBTyxXQUFXO0FBQzFCLFlBQUE7QUFBQSxNQUNOO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsRUFBQTtBQUFBLEVBRUYsU0FBUztBQUNQLFdBQU8sS0FBSyxNQUFNLFVBQVUsb0RBQThDLGFBQWEsVUFBVSxFQUFFLE9BQU8sS0FBSyxNQUFNLGdCQUF1Q0YsNkJBQUE7QUFBQSxNQUMxSixrQkFBa0I7QUFBQSxNQUNsQjtBQUFBLFFBQ0UsT0FBTyxLQUFLLE1BQU07QUFBQSxRQUNsQixVQUFVLEtBQUssTUFBTTtBQUFBLE1BQUE7QUFBQSxJQUN2QixDQUNELElBQUksS0FBSyxNQUFNO0FBQUEsRUFBQTtBQUVwQjtBQUNBLFNBQVMsY0FBYyxFQUFFLGNBQWMsT0FBQXB5QixRQUFPLFlBQVk7QUFDcEQsTUFBQSxvQkFBb0I4eEIsYUFBTyxXQUFXLGlCQUFpQjtBQUN2RCxNQUFBLHFCQUFxQixrQkFBa0IsVUFBVSxrQkFBa0Isa0JBQWtCOXhCLE9BQU0sTUFBTSxnQkFBZ0JBLE9BQU0sTUFBTSxnQkFBZ0I7QUFDN0gsc0JBQUEsY0FBYyw2QkFBNkJBLE9BQU0sTUFBTTtBQUFBLEVBQUE7QUFFcEQsU0FBQW95Qiw2QkFBQUEsY0FBcUIsYUFBYSxVQUFVLEVBQUUsT0FBTyxnQkFBZ0IsUUFBUTtBQUN0RztBQUNBLFNBQVMsZUFBZS95QixVQUFTLGdCQUFnQixDQUFBLEdBQUksa0JBQWtCLE1BQU0sU0FBUyxNQUFNO0FBQzFGLE1BQUlBLFlBQVcsTUFBTTtBQUNuQixRQUFJLENBQUMsaUJBQWlCO0FBQ2IsYUFBQTtBQUFBLElBQUE7QUFFVCxRQUFJLGdCQUFnQixRQUFRO0FBQzFCLE1BQUFBLFdBQVUsZ0JBQWdCO0FBQUEsSUFDNUIsV0FBVyxjQUFjLFdBQVcsS0FBSyxDQUFDLGdCQUFnQixlQUFlLGdCQUFnQixRQUFRLFNBQVMsR0FBRztBQUMzRyxNQUFBQSxXQUFVLGdCQUFnQjtBQUFBLElBQUEsT0FDckI7QUFDRSxhQUFBO0FBQUEsSUFBQTtBQUFBLEVBQ1Q7QUFFRixNQUFJLGtCQUFrQkE7QUFDdEIsTUFBSSxTQUFTLG1EQUFpQjtBQUM5QixNQUFJLFVBQVUsTUFBTTtBQUNsQixRQUFJLGFBQWEsZ0JBQWdCO0FBQUEsTUFDL0IsQ0FBQzdCLE9BQU1BLEdBQUUsTUFBTSxPQUFNLGlDQUFTQSxHQUFFLE1BQU0sU0FBUTtBQUFBLElBQ2hEO0FBQ0E7QUFBQSxNQUNFLGNBQWM7QUFBQSxNQUNkLDREQUE0RCxPQUFPO0FBQUEsUUFDakU7QUFBQSxNQUFBLEVBQ0EsS0FBSyxHQUFHLENBQUM7QUFBQSxJQUNiO0FBQ0Esc0JBQWtCLGdCQUFnQjtBQUFBLE1BQ2hDO0FBQUEsTUFDQSxLQUFLLElBQUksZ0JBQWdCLFFBQVEsYUFBYSxDQUFDO0FBQUEsSUFDakQ7QUFBQSxFQUFBO0FBRUYsTUFBSSxpQkFBaUI7QUFDckIsTUFBSSxnQkFBZ0I7QUFDcEIsTUFBSSxpQkFBaUI7QUFDbkIsYUFBU2pFLEtBQUksR0FBR0EsS0FBSSxnQkFBZ0IsUUFBUUEsTUFBSztBQUMzQyxVQUFBeUcsU0FBUSxnQkFBZ0J6RyxFQUFDO0FBQzdCLFVBQUl5RyxPQUFNLE1BQU0sbUJBQW1CQSxPQUFNLE1BQU0sd0JBQXdCO0FBQ3JELHdCQUFBekc7QUFBQSxNQUFBO0FBRWQsVUFBQXlHLE9BQU0sTUFBTSxJQUFJO0FBQ2xCLFlBQUksRUFBRSxZQUFZLFFBQVEsUUFBWSxJQUFBO0FBQ3RDLFlBQUksbUJBQW1CQSxPQUFNLE1BQU0sVUFBVSxDQUFDLFdBQVcsZUFBZUEsT0FBTSxNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVcsUUFBUUEsT0FBTSxNQUFNLEVBQUUsTUFBTTtBQUNoSSxZQUFBQSxPQUFNLE1BQU0sUUFBUSxrQkFBa0I7QUFDdkIsMkJBQUE7QUFDakIsY0FBSSxpQkFBaUIsR0FBRztBQUN0Qiw4QkFBa0IsZ0JBQWdCLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztBQUFBLFVBQUEsT0FDdkQ7QUFDYSw4QkFBQSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFBQSxVQUFBO0FBRXZDO0FBQUEsUUFBQTtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVGLFNBQU8sZ0JBQWdCLFlBQVksQ0FBQyxRQUFRQSxRQUFPOUUsV0FBVTtBQUN2RCxRQUFBO0FBQ0osUUFBSSw4QkFBOEI7QUFDbEMsUUFBSSxlQUFlO0FBQ25CLFFBQUkseUJBQXlCO0FBQzdCLFFBQUksaUJBQWlCO0FBQ1gsY0FBQSxVQUFVOEUsT0FBTSxNQUFNLEtBQUssT0FBT0EsT0FBTSxNQUFNLEVBQUUsSUFBSTtBQUM3QyxxQkFBQUEsT0FBTSxNQUFNLGdCQUFnQjtBQUMzQyxVQUFJLGdCQUFnQjtBQUNkLFlBQUEsZ0JBQWdCLEtBQUs5RSxXQUFVLEdBQUc7QUFDcEM7QUFBQSxZQUNFO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxVQUNGO0FBQzhCLHdDQUFBO0FBQ0wsbUNBQUE7QUFBQSxRQUFBLFdBQ2hCLGtCQUFrQkEsUUFBTztBQUNKLHdDQUFBO0FBQ0wsbUNBQUE4RSxPQUFNLE1BQU0sMEJBQTBCO0FBQUEsUUFBQTtBQUFBLE1BQ2pFO0FBQUEsSUFDRjtBQUVFLFFBQUF1eUIsWUFBVyxjQUFjLE9BQU8sZ0JBQWdCLE1BQU0sR0FBR3IzQixTQUFRLENBQUMsQ0FBQztBQUN2RSxRQUFJczNCLGVBQWMsTUFBTTtBQUNsQixVQUFBO0FBQ0osVUFBSSxPQUFPO0FBQ0UsbUJBQUE7QUFBQSxpQkFDRiw2QkFBNkI7QUFDM0IsbUJBQUE7QUFBQSxNQUFBLFdBQ0Z4eUIsT0FBTSxNQUFNLFdBQVc7QUFDaEMsbUJBQWtDb3lCLDZCQUFBQSxjQUFjcHlCLE9BQU0sTUFBTSxXQUFXLElBQUk7QUFBQSxNQUFBLFdBQ2xFQSxPQUFNLE1BQU0sU0FBUztBQUM5QixtQkFBV0EsT0FBTSxNQUFNO0FBQUEsTUFBQSxPQUNsQjtBQUNNLG1CQUFBO0FBQUEsTUFBQTtBQUViLGFBQThCb3lCLDZCQUFBO0FBQUEsUUFDNUI7QUFBQSxRQUNBO0FBQUEsVUFDRSxPQUFBcHlCO0FBQUEsVUFDQSxjQUFjO0FBQUEsWUFDWjtBQUFBLFlBQ0EsU0FBU3V5QjtBQUFBLFlBQ1QsYUFBYSxtQkFBbUI7QUFBQSxVQUNsQztBQUFBLFVBQ0E7QUFBQSxRQUFBO0FBQUEsTUFFSjtBQUFBLElBQ0Y7QUFDTyxXQUFBLG9CQUFvQnZ5QixPQUFNLE1BQU0saUJBQWlCQSxPQUFNLE1BQU0sZ0JBQWdCOUUsV0FBVSxLQUE0QmszQiw2QkFBQTtBQUFBLE1BQ3hIO0FBQUEsTUFDQTtBQUFBLFFBQ0UsVUFBVSxnQkFBZ0I7QUFBQSxRQUMxQixjQUFjLGdCQUFnQjtBQUFBLFFBQzlCLFdBQVc7QUFBQSxRQUNYO0FBQUEsUUFDQSxVQUFVSSxhQUFZO0FBQUEsUUFDdEIsY0FBYyxFQUFFLFFBQVEsTUFBTSxTQUFTRCxXQUFVLGFBQWEsS0FBSztBQUFBLE1BQUE7QUFBQSxRQUVuRUMsYUFBWTtBQUFBLEtBQ2YsSUFBSTtBQUNUO0FBQ0EsU0FBUywwQkFBMEIsVUFBVTtBQUMzQyxTQUFPLEdBQUcsUUFBUTtBQUNwQjtBQUNBLFNBQVMscUJBQXFCLFVBQVU7QUFDbEMsTUFBQSxNQUFNVixhQUFPLFdBQVcsaUJBQWlCO0FBQ25DLFlBQUEsS0FBSywwQkFBMEIsUUFBUSxDQUFDO0FBQzNDLFNBQUE7QUFDVDtBQUNBLFNBQVMsbUJBQW1CLFVBQVU7QUFDaEMsTUFBQSxRQUFRQSxhQUFPLFdBQVcsc0JBQXNCO0FBQzFDLFlBQUEsT0FBTywwQkFBMEIsUUFBUSxDQUFDO0FBQzdDLFNBQUE7QUFDVDtBQUNBLFNBQVMsZ0JBQWdCLFVBQVU7QUFDN0IsTUFBQSxRQUFRQSxhQUFPLFdBQVcsWUFBWTtBQUNoQyxZQUFBLE9BQU8sMEJBQTBCLFFBQVEsQ0FBQztBQUM3QyxTQUFBO0FBQ1Q7QUFDQSxTQUFTLGtCQUFrQixVQUFVO0FBQy9CLE1BQUEsUUFBUSxnQkFBZ0IsUUFBUTtBQUNwQyxNQUFJLFlBQVksTUFBTSxRQUFRLE1BQU0sUUFBUSxTQUFTLENBQUM7QUFDdEQ7QUFBQSxJQUNFLFVBQVUsTUFBTTtBQUFBLElBQ2hCLEdBQUcsUUFBUTtBQUFBLEVBQ2I7QUFDQSxTQUFPLFVBQVUsTUFBTTtBQUN6QjtBQUNBLFNBQVMsYUFBYTtBQUNiLFNBQUE7QUFBQSxJQUFrQjtBQUFBO0FBQUEsRUFBNkI7QUFDeEQ7QUF5Q0EsU0FBUyxnQkFBZ0I7O0FBQ25CLE1BQUEsUUFBUUEsYUFBTyxXQUFXLGlCQUFpQjtBQUMvQyxNQUFJLFFBQVE7QUFBQSxJQUFtQjtBQUFBO0FBQUEsRUFBbUM7QUFDbEUsTUFBSSxVQUFVO0FBQUEsSUFBa0I7QUFBQTtBQUFBLEVBQW1DO0FBQ25FLE1BQUksVUFBVSxRQUFRO0FBQ2IsV0FBQTtBQUFBLEVBQUE7QUFFRixVQUFBbDRCLE1BQUEsTUFBTSxXQUFOLGdCQUFBQSxJQUFlO0FBQ3hCO0FBaURBLFNBQVMsb0JBQW9CO0FBQ3ZCLE1BQUEsRUFBRSxXQUFXO0FBQUEsSUFBcUI7QUFBQTtBQUFBLEVBQXFDO0FBQzNFLE1BQUksS0FBSztBQUFBLElBQWtCO0FBQUE7QUFBQSxFQUFxQztBQUM1RCxNQUFBLFlBQVlvNEIsYUFBTyxPQUFPLEtBQUs7QUFDbkMsNEJBQTBCLE1BQU07QUFDOUIsY0FBVSxVQUFVO0FBQUEsRUFBQSxDQUNyQjtBQUNELE1BQUksV0FBV0MsYUFBTztBQUFBLElBQ3BCLE9BQU8sSUFBSW55QixXQUFVLE9BQU87QUFDbEIsY0FBQSxVQUFVLFNBQVMscUJBQXFCO0FBQzVDLFVBQUEsQ0FBQyxVQUFVLFFBQVM7QUFDcEIsVUFBQSxPQUFPLE9BQU8sVUFBVTtBQUMxQixlQUFPLFNBQVMsRUFBRTtBQUFBLE1BQUEsT0FDYjtBQUNDLGNBQUEsT0FBTyxTQUFTLElBQUksRUFBRSxhQUFhLElBQUksR0FBR0EsVUFBUztBQUFBLE1BQUE7QUFBQSxJQUU3RDtBQUFBLElBQ0EsQ0FBQyxRQUFRLEVBQUU7QUFBQSxFQUNiO0FBQ08sU0FBQTtBQUNUO0FBQ0EsSUFBSSxnQkFBZ0IsQ0FBQztBQUNyQixTQUFTLFlBQVksS0FBSyxNQUFNLFNBQVM7QUFDdkMsTUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEdBQUcsR0FBRztBQUNoQyxrQkFBYyxHQUFHLElBQUk7QUFDckIsWUFBUSxPQUFPLE9BQU87QUFBQSxFQUFBO0FBRTFCO0FBMFF5QjJ5QixhQUFBQSxLQUFZLFVBQVU7QUFDL0MsU0FBUyxXQUFXO0FBQUEsRUFDbEI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLEdBQUc7QUFDRCxTQUFPLGNBQWMsUUFBUSxRQUFRLE9BQU8sTUFBTTtBQUNwRDtBQXlFQSxTQUFTLE1BQU0sUUFBUTtBQUNyQjtBQUFBLElBQ0U7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUNGO0FBQ0EsU0FBUyxPQUFPO0FBQUEsRUFDZCxVQUFVLGVBQWU7QUFBQSxFQUN6QixXQUFXO0FBQUEsRUFDWCxVQUFVO0FBQUEsRUFDVixpQkFBaUI7QUFBQSxFQUNqQixXQUFXO0FBQUEsRUFDWCxRQUFRLGFBQWE7QUFDdkIsR0FBRztBQUNEO0FBQUEsSUFDRSxDQUFDLG1CQUFtQjtBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUNBLE1BQUksV0FBVyxhQUFhLFFBQVEsUUFBUSxHQUFHO0FBQy9DLE1BQUksb0JBQW9CQyxhQUFPO0FBQUEsSUFDN0IsT0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLFFBQVE7QUFBQSxNQUNSLFFBQVEsQ0FBQTtBQUFBLElBQUM7QUFBQSxJQUVYLENBQUMsVUFBVSxZQUFZLFVBQVU7QUFBQSxFQUNuQztBQUNJLE1BQUEsT0FBTyxpQkFBaUIsVUFBVTtBQUNwQyxtQkFBZSxVQUFVLFlBQVk7QUFBQSxFQUFBO0FBRW5DLE1BQUE7QUFBQSxJQUNGLFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxJQUNULE1BQUFocUIsUUFBTztBQUFBLElBQ1AsUUFBUTtBQUFBLElBQ1IsTUFBTTtBQUFBLEVBQUEsSUFDSjtBQUNBLE1BQUEsa0JBQWtCZ3FCLGFBQUFBLFFBQWUsTUFBTTtBQUNyQyxRQUFBLG1CQUFtQixjQUFjLFVBQVUsUUFBUTtBQUN2RCxRQUFJLG9CQUFvQixNQUFNO0FBQ3JCLGFBQUE7QUFBQSxJQUFBO0FBRUYsV0FBQTtBQUFBLE1BQ0wsVUFBVTtBQUFBLFFBQ1IsVUFBVTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLE1BQUFocUI7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0Y7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBLEVBQUEsR0FDQyxDQUFDLFVBQVUsVUFBVSxRQUFRQSxPQUFNLE9BQU8sS0FBSyxjQUFjLENBQUM7QUFDakU7QUFBQSxJQUNFLG1CQUFtQjtBQUFBLElBQ25CLHFCQUFxQixRQUFRLG9DQUFvQyxRQUFRLEdBQUcsTUFBTSxHQUFHQSxLQUFJO0FBQUEsRUFDM0Y7QUFDQSxNQUFJLG1CQUFtQixNQUFNO0FBQ3BCLFdBQUE7QUFBQSxFQUFBO0FBRVQsc0NBQTRDLGNBQUEsa0JBQWtCLFVBQVUsRUFBRSxPQUFPLGtCQUFrQixHQUEwQmlxQiw2QkFBQSxjQUFjLGdCQUFnQixVQUFVLEVBQUUsVUFBVSxPQUFPLGdCQUFpQixDQUFBLENBQUM7QUFDNU07QUFDQSxTQUFTLE9BQU87QUFBQSxFQUNkO0FBQUEsRUFDQTtBQUNGLEdBQUc7QUFDRCxTQUFPLFVBQVUseUJBQXlCLFFBQVEsR0FBRyxRQUFRO0FBQy9EO0FBcUVBLFNBQVMseUJBQXlCLFVBQVUsYUFBYSxJQUFJO0FBQzNELE1BQUksU0FBUyxDQUFDO0FBQ2RDLGVBQUFBLFNBQWdCLFFBQVEsVUFBVSxDQUFDLFNBQVMxM0IsV0FBVTtBQUNwRCxRQUFJLENBQUMyM0IsYUFBQUEsZUFBc0IsT0FBTyxHQUFHO0FBQ25DO0FBQUEsSUFBQTtBQUVGLFFBQUksV0FBVyxDQUFDLEdBQUcsWUFBWTMzQixNQUFLO0FBQ2hDLFFBQUEsUUFBUSxTQUFTNDNCLHVCQUFpQjtBQUNwQyxhQUFPLEtBQUs7QUFBQSxRQUNWO0FBQUEsUUFDQSx5QkFBeUIsUUFBUSxNQUFNLFVBQVUsUUFBUTtBQUFBLE1BQzNEO0FBQ0E7QUFBQSxJQUFBO0FBRUY7QUFBQSxNQUNFLFFBQVEsU0FBUztBQUFBLE1BQ2pCLElBQUksT0FBTyxRQUFRLFNBQVMsV0FBVyxRQUFRLE9BQU8sUUFBUSxLQUFLLElBQUk7QUFBQSxJQUN6RTtBQUNBO0FBQUEsTUFDRSxDQUFDLFFBQVEsTUFBTSxTQUFTLENBQUMsUUFBUSxNQUFNO0FBQUEsTUFDdkM7QUFBQSxJQUNGO0FBQ0EsUUFBSSxRQUFRO0FBQUEsTUFDVixJQUFJLFFBQVEsTUFBTSxNQUFNLFNBQVMsS0FBSyxHQUFHO0FBQUEsTUFDekMsZUFBZSxRQUFRLE1BQU07QUFBQSxNQUM3QixTQUFTLFFBQVEsTUFBTTtBQUFBLE1BQ3ZCLFdBQVcsUUFBUSxNQUFNO0FBQUEsTUFDekIsT0FBTyxRQUFRLE1BQU07QUFBQSxNQUNyQixNQUFNLFFBQVEsTUFBTTtBQUFBLE1BQ3BCLFFBQVEsUUFBUSxNQUFNO0FBQUEsTUFDdEIsUUFBUSxRQUFRLE1BQU07QUFBQSxNQUN0Qix3QkFBd0IsUUFBUSxNQUFNO0FBQUEsTUFDdEMsaUJBQWlCLFFBQVEsTUFBTTtBQUFBLE1BQy9CLGNBQWMsUUFBUSxNQUFNO0FBQUEsTUFDNUIsZUFBZSxRQUFRLE1BQU07QUFBQSxNQUM3QixrQkFBa0IsUUFBUSxNQUFNLHFCQUFxQixRQUFRLFFBQVEsTUFBTSxpQkFBaUIsUUFBUSxRQUFRLE1BQU0sZ0JBQWdCO0FBQUEsTUFDbEksa0JBQWtCLFFBQVEsTUFBTTtBQUFBLE1BQ2hDLFFBQVEsUUFBUSxNQUFNO0FBQUEsTUFDdEIsTUFBTSxRQUFRLE1BQU07QUFBQSxJQUN0QjtBQUNJLFFBQUEsUUFBUSxNQUFNLFVBQVU7QUFDMUIsWUFBTSxXQUFXO0FBQUEsUUFDZixRQUFRLE1BQU07QUFBQSxRQUNkO0FBQUEsTUFDRjtBQUFBLElBQUE7QUFFRixXQUFPLEtBQUssS0FBSztBQUFBLEVBQUEsQ0FDbEI7QUFDTSxTQUFBO0FBQ1Q7QUFVQSxJQUFJLGdCQUFnQjtBQUNwQixJQUFJLGlCQUFpQjtBQUNyQixTQUFTLGNBQWMsUUFBUTtBQUM3QixTQUFPLFVBQVUsUUFBUSxPQUFPLE9BQU8sWUFBWTtBQUNyRDtBQUNBLFNBQVMsZ0JBQWdCLFFBQVE7QUFDL0IsU0FBTyxjQUFjLE1BQU0sS0FBSyxPQUFPLFFBQVEsa0JBQWtCO0FBQ25FO0FBQ0EsU0FBUyxjQUFjLFFBQVE7QUFDN0IsU0FBTyxjQUFjLE1BQU0sS0FBSyxPQUFPLFFBQVEsa0JBQWtCO0FBQ25FO0FBQ0EsU0FBUyxlQUFlLFFBQVE7QUFDOUIsU0FBTyxjQUFjLE1BQU0sS0FBSyxPQUFPLFFBQVEsa0JBQWtCO0FBQ25FO0FBQ0EsU0FBUyxnQkFBZ0IsT0FBTztBQUN2QixTQUFBLENBQUMsRUFBRSxNQUFNLFdBQVcsTUFBTSxVQUFVLE1BQU0sV0FBVyxNQUFNO0FBQ3BFO0FBQ0EsU0FBUyx1QkFBdUIsT0FBTyxRQUFRO0FBQzdDLFNBQU8sTUFBTSxXQUFXO0FBQUEsR0FDdkIsQ0FBQyxVQUFVLFdBQVc7QUFBQSxFQUN2QixDQUFDLGdCQUFnQixLQUFLO0FBQ3hCO0FBd0JBLElBQUksNkJBQTZCO0FBQ2pDLFNBQVMsK0JBQStCO0FBQ3RDLE1BQUksK0JBQStCLE1BQU07QUFDbkMsUUFBQTtBQUNFLFVBQUE7QUFBQSxRQUNGLFNBQVMsY0FBYyxNQUFNO0FBQUE7QUFBQSxRQUU3QjtBQUFBLE1BQ0Y7QUFDNkIsbUNBQUE7QUFBQSxhQUN0Qm40QixJQUFHO0FBQ21CLG1DQUFBO0FBQUEsSUFBQTtBQUFBLEVBQy9CO0FBRUssU0FBQTtBQUNUO0FBQ0EsSUFBSSw0Q0FBNEMsSUFBSTtBQUFBLEVBQ2xEO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRixDQUFDO0FBQ0QsU0FBUyxlQUFlLFNBQVM7QUFDL0IsTUFBSSxXQUFXLFFBQVEsQ0FBQyxzQkFBc0IsSUFBSSxPQUFPLEdBQUc7QUFDMUQ7QUFBQSxNQUNFO0FBQUEsTUFDQSxJQUFJLE9BQU8sdUZBQXVGLGNBQWM7QUFBQSxJQUNsSDtBQUNPLFdBQUE7QUFBQSxFQUFBO0FBRUYsU0FBQTtBQUNUO0FBQ0EsU0FBUyxzQkFBc0IsUUFBUSxVQUFVO0FBQzNDLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQSxjQUFjLE1BQU0sR0FBRztBQUNyQixRQUFBNmYsUUFBTyxPQUFPLGFBQWEsUUFBUTtBQUN2QyxhQUFTQSxRQUFPLGNBQWNBLE9BQU0sUUFBUSxJQUFJO0FBQ3ZDLGFBQUEsT0FBTyxhQUFhLFFBQVEsS0FBSztBQUMxQyxjQUFVLGVBQWUsT0FBTyxhQUFhLFNBQVMsQ0FBQyxLQUFLO0FBQ2pELGVBQUEsSUFBSSxTQUFTLE1BQU07QUFBQSxFQUNyQixXQUFBLGdCQUFnQixNQUFNLEtBQUssZUFBZSxNQUFNLE1BQU0sT0FBTyxTQUFTLFlBQVksT0FBTyxTQUFTLFVBQVU7QUFDckgsUUFBSSxPQUFPLE9BQU87QUFDbEIsUUFBSSxRQUFRLE1BQU07QUFDaEIsWUFBTSxJQUFJO0FBQUEsUUFDUjtBQUFBLE1BQ0Y7QUFBQSxJQUFBO0FBRUYsUUFBSUEsUUFBTyxPQUFPLGFBQWEsWUFBWSxLQUFLLEtBQUssYUFBYSxRQUFRO0FBQzFFLGFBQVNBLFFBQU8sY0FBY0EsT0FBTSxRQUFRLElBQUk7QUFDaEQsYUFBUyxPQUFPLGFBQWEsWUFBWSxLQUFLLEtBQUssYUFBYSxRQUFRLEtBQUs7QUFDbkUsY0FBQSxlQUFlLE9BQU8sYUFBYSxhQUFhLENBQUMsS0FBSyxlQUFlLEtBQUssYUFBYSxTQUFTLENBQUMsS0FBSztBQUNyRyxlQUFBLElBQUksU0FBUyxNQUFNLE1BQU07QUFDaEMsUUFBQSxDQUFDLGdDQUFnQztBQUNuQyxVQUFJLEVBQUUsTUFBTSxNQUFBamMsT0FBTSxNQUFVLElBQUE7QUFDNUIsVUFBSUEsVUFBUyxTQUFTO0FBQ3BCLFlBQUkrTSxVQUFTLE9BQU8sR0FBRyxJQUFJLE1BQU07QUFDakMsaUJBQVMsT0FBTyxHQUFHQSxPQUFNLEtBQUssR0FBRztBQUNqQyxpQkFBUyxPQUFPLEdBQUdBLE9BQU0sS0FBSyxHQUFHO0FBQUEsaUJBQ3hCLE1BQU07QUFDTixpQkFBQSxPQUFPLE1BQU0sS0FBSztBQUFBLE1BQUE7QUFBQSxJQUM3QjtBQUFBLEVBQ0YsV0FDUyxjQUFjLE1BQU0sR0FBRztBQUNoQyxVQUFNLElBQUk7QUFBQSxNQUNSO0FBQUEsSUFDRjtBQUFBLEVBQUEsT0FDSztBQUNJLGFBQUE7QUFDQSxhQUFBO0FBQ0MsY0FBQTtBQUNILFdBQUE7QUFBQSxFQUFBO0FBRUwsTUFBQSxZQUFZLFlBQVksY0FBYztBQUNqQyxXQUFBO0FBQ0ksZUFBQTtBQUFBLEVBQUE7QUFFTixTQUFBLEVBQUUsUUFBUSxRQUFRLE9BQU8sZUFBZSxTQUFTLFVBQVUsS0FBSztBQUN6RTtBQU1BLFNBQVMsV0FBVyxPQUFPLFNBQVM7QUFDbEMsTUFBSSxVQUFVLFNBQVMsVUFBVSxRQUFRLE9BQU8sVUFBVSxhQUFhO0FBQy9ELFVBQUEsSUFBSSxNQUFNLE9BQU87QUFBQSxFQUFBO0FBRTNCO0FBR0EsZUFBZSxnQkFBZ0IsT0FBTyxtQkFBbUI7QUFDbkQsTUFBQSxNQUFNLE1BQU0sbUJBQW1CO0FBQzFCLFdBQUEsa0JBQWtCLE1BQU0sRUFBRTtBQUFBLEVBQUE7QUFFL0IsTUFBQTtBQUNGLFFBQUksY0FBYyxNQUFNO0FBQUE7QUFBQTtBQUFBLE1BR3RCLE1BQU07QUFBQTtBQUVVLHNCQUFBLE1BQU0sRUFBRSxJQUFJO0FBQ3ZCLFdBQUE7QUFBQSxXQUNBLE9BQU87QUFDTixZQUFBO0FBQUEsTUFDTixnQ0FBZ0MsTUFBTSxNQUFNO0FBQUEsSUFDOUM7QUFDQSxZQUFRLE1BQU0sS0FBSztBQUNmLFFBQUEsT0FBTyx3QkFBd0IsT0FBTyxxQkFBcUI7QUFBQSxJQUMvRCxRQUFpQjtBQUNULFlBQUE7QUFBQSxJQUFBO0FBRVIsV0FBTyxTQUFTLE9BQU87QUFDaEIsV0FBQSxJQUFJLFFBQVEsTUFBTTtBQUFBLElBQUEsQ0FDeEI7QUFBQSxFQUFBO0FBRUw7QUErREEsU0FBUyxxQkFBcUIsUUFBUTtBQUNwQyxNQUFJLFVBQVUsTUFBTTtBQUNYLFdBQUE7QUFBQSxFQUFBO0FBRUwsTUFBQSxPQUFPLFFBQVEsTUFBTTtBQUNoQixXQUFBLE9BQU8sUUFBUSxhQUFhLE9BQU8sT0FBTyxnQkFBZ0IsWUFBWSxPQUFPLE9BQU8sZUFBZTtBQUFBLEVBQUE7QUFFNUcsU0FBTyxPQUFPLE9BQU8sUUFBUSxZQUFZLE9BQU8sT0FBTyxTQUFTO0FBQ2xFO0FBQ0EsZUFBZSxzQkFBc0JqTSxVQUFTLFVBQVUsY0FBYztBQUNoRSxNQUFBLFFBQVEsTUFBTSxRQUFRO0FBQUEsSUFDeEJBLFNBQVEsSUFBSSxPQUFPVyxXQUFVO0FBQzNCLFVBQUksUUFBUSxTQUFTLE9BQU9BLE9BQU0sTUFBTSxFQUFFO0FBQzFDLFVBQUksT0FBTztBQUNULFlBQUksTUFBTSxNQUFNLGdCQUFnQixPQUFPLFlBQVk7QUFDbkQsZUFBTyxJQUFJLFFBQVEsSUFBSSxVQUFVLENBQUM7QUFBQSxNQUFBO0FBRXBDLGFBQU8sQ0FBQztBQUFBLElBQ1QsQ0FBQTtBQUFBLEVBQ0g7QUFDTyxTQUFBO0FBQUEsSUFDTCxNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU8sb0JBQW9CLEVBQUUsT0FBTyxDQUFDLFNBQVMsS0FBSyxRQUFRLGdCQUFnQixLQUFLLFFBQVEsU0FBUyxFQUFFO0FBQUEsTUFDL0csQ0FBQyxTQUFTLEtBQUssUUFBUSxlQUFlLEVBQUUsR0FBRyxNQUFNLEtBQUssWUFBWSxJQUFJLFFBQVEsSUFBSSxFQUFFLEdBQUcsTUFBTSxLQUFLLFdBQVc7QUFBQSxJQUFBO0FBQUEsRUFFakg7QUFDRjtBQUNBLFNBQVMsc0JBQXNCLE1BQU0sYUFBYSxnQkFBZ0IsVUFBVSxVQUFVLE1BQU07QUFDdEYsTUFBQSxRQUFRLENBQUNBLFFBQU85RSxXQUFVO0FBQzVCLFFBQUksQ0FBQyxlQUFlQSxNQUFLLEVBQVUsUUFBQTtBQUNuQyxXQUFPOEUsT0FBTSxNQUFNLE9BQU8sZUFBZTlFLE1BQUssRUFBRSxNQUFNO0FBQUEsRUFDeEQ7QUFDSSxNQUFBLG1CQUFtQixDQUFDOEUsUUFBTzlFLFdBQVU7O0FBQ3ZDO0FBQUE7QUFBQSxNQUVFLGVBQWVBLE1BQUssRUFBRSxhQUFhOEUsT0FBTTtBQUFBO0FBQUEsUUFFekNwRyxNQUFBLGVBQWVzQixNQUFLLEVBQUUsTUFBTSxTQUE1QixnQkFBQXRCLElBQWtDLFNBQVMsU0FBUSxlQUFlc0IsTUFBSyxFQUFFLE9BQU8sR0FBRyxNQUFNOEUsT0FBTSxPQUFPLEdBQUc7QUFBQTtBQUFBLEVBRTdHO0FBQ0EsTUFBSSxTQUFTLFVBQVU7QUFDckIsV0FBTyxZQUFZO0FBQUEsTUFDakIsQ0FBQ0EsUUFBTzlFLFdBQVUsTUFBTThFLFFBQU85RSxNQUFLLEtBQUssaUJBQWlCOEUsUUFBTzlFLE1BQUs7QUFBQSxJQUN4RTtBQUFBLEVBQUE7QUFFRixNQUFJLFNBQVMsUUFBUTtBQUNuQixXQUFPLFlBQVksT0FBTyxDQUFDOEUsUUFBTzlFLFdBQVU7O0FBQzFDLFVBQUksZ0JBQWdCLFNBQVMsT0FBTzhFLE9BQU0sTUFBTSxFQUFFO0FBQ2xELFVBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLFdBQVc7QUFDdkMsZUFBQTtBQUFBLE1BQUE7QUFFVCxVQUFJLE1BQU1BLFFBQU85RSxNQUFLLEtBQUssaUJBQWlCOEUsUUFBTzlFLE1BQUssR0FBRztBQUNsRCxlQUFBO0FBQUEsTUFBQTtBQUVMLFVBQUE4RSxPQUFNLE1BQU0sa0JBQWtCO0FBQzVCLFlBQUEsY0FBY0EsT0FBTSxNQUFNLGlCQUFpQjtBQUFBLFVBQzdDLFlBQVksSUFBSTtBQUFBLFlBQ2QsU0FBUyxXQUFXLFNBQVMsU0FBUyxTQUFTO0FBQUEsWUFDL0MsT0FBTztBQUFBLFVBQ1Q7QUFBQSxVQUNBLGlCQUFlcEcsTUFBQSxlQUFlLENBQUMsTUFBaEIsZ0JBQUFBLElBQW1CLFdBQVUsQ0FBQztBQUFBLFVBQzdDLFNBQVMsSUFBSSxJQUFJLE1BQU0sT0FBTyxNQUFNO0FBQUEsVUFDcEMsWUFBWW9HLE9BQU07QUFBQSxVQUNsQix5QkFBeUI7QUFBQSxRQUFBLENBQzFCO0FBQ0csWUFBQSxPQUFPLGdCQUFnQixXQUFXO0FBQzdCLGlCQUFBO0FBQUEsUUFBQTtBQUFBLE1BQ1Q7QUFFSyxhQUFBO0FBQUEsSUFBQSxDQUNSO0FBQUEsRUFBQTtBQUVILFNBQU8sQ0FBQztBQUNWO0FBQ0EsU0FBUyxtQkFBbUJYLFVBQVMsZUFBZTtBQUMzQyxTQUFBO0FBQUEsSUFDTEEsU0FBUSxJQUFJLENBQUNXLFdBQVU7QUFDckIsVUFBSSxRQUFRLGNBQWMsT0FBT0EsT0FBTSxNQUFNLEVBQUU7QUFDM0MsVUFBQSxDQUFDLE1BQU8sUUFBTyxDQUFDO0FBQ2hCLFVBQUEsUUFBUSxDQUFDLE1BQU0sTUFBTTtBQUN6QixVQUFJLE1BQU0sU0FBUztBQUNULGdCQUFBLE1BQU0sT0FBTyxNQUFNLE9BQU87QUFBQSxNQUFBO0FBRTdCLGFBQUE7QUFBQSxJQUFBLENBQ1IsRUFBRSxLQUFLLENBQUM7QUFBQSxFQUNYO0FBQ0Y7QUFjQSxTQUFTLFlBQVksT0FBTztBQUMxQixTQUFPLENBQUMsR0FBRyxJQUFJLElBQUksS0FBSyxDQUFDO0FBQzNCO0FBQ0EsU0FBUyxTQUFTLEtBQUs7QUFDckIsTUFBSSxTQUFTLENBQUM7QUFDZCxNQUFJLE9BQU8sT0FBTyxLQUFLLEdBQUcsRUFBRSxLQUFLO0FBQ2pDLFdBQVMsT0FBTyxNQUFNO0FBQ2IsV0FBQSxHQUFHLElBQUksSUFBSSxHQUFHO0FBQUEsRUFBQTtBQUVoQixTQUFBO0FBQ1Q7QUFDQSxTQUFTLHNCQUFzQmQsY0FBYSxVQUFVO0FBQ2hELE1BQUF2RiwyQkFBMEIsSUFBSTtBQUNoQixNQUFJLElBQUksUUFBUTtBQUNsQyxTQUFPdUYsYUFBWSxPQUFPLENBQUMsU0FBUyxlQUFlO0FBS2pELFFBQUksTUFBTSxLQUFLLFVBQVUsU0FBUyxVQUFVLENBQUM7QUFDN0MsUUFBSSxDQUFDdkYsS0FBSSxJQUFJLEdBQUcsR0FBRztBQUNqQixNQUFBQSxLQUFJLElBQUksR0FBRztBQUNYLGNBQVEsS0FBSyxFQUFFLEtBQUssTUFBTSxZQUFZO0FBQUEsSUFBQTtBQUVqQyxXQUFBO0FBQUEsRUFDVCxHQUFHLEVBQUU7QUFDUDtBQXNSQSxTQUFTLGVBQWUsUUFBUTtBQUM5QixNQUFJLE1BQU0sT0FBTyxXQUFXLFdBQVcsSUFBSTtBQUFBLElBQ3pDO0FBQUE7QUFBQTtBQUFBLElBR0EsT0FBTyxXQUFXLGNBQWMsMEJBQTBCLE9BQU8sU0FBUztBQUFBLEVBQUEsSUFDeEU7QUFDQSxNQUFBLElBQUksYUFBYSxLQUFLO0FBQ3hCLFFBQUksV0FBVztBQUFBLEVBQUEsT0FDVjtBQUNMLFFBQUksV0FBVyxHQUFHLElBQUksU0FBUyxRQUFRLE9BQU8sRUFBRSxDQUFDO0FBQUEsRUFBQTtBQUU1QyxTQUFBO0FBQ1Q7QUFvdUJBLFNBQVMsd0JBQXdCO0FBQzNCLE1BQUEsVUFBVW81QixhQUFPLFdBQVcsaUJBQWlCO0FBQ2pEO0FBQUEsSUFDRTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ08sU0FBQTtBQUNUO0FBQ0EsU0FBUyw0QkFBNEI7QUFDL0IsTUFBQSxVQUFVQSxhQUFPLFdBQVcsc0JBQXNCO0FBQ3REO0FBQUEsSUFDRTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ08sU0FBQTtBQUNUO0FBQ0EsSUFBSSxtQkFBbUJDLGFBQUFBLGNBQXFCLE1BQU07QUFDbEQsaUJBQWlCLGNBQWM7QUFDL0IsU0FBUyxzQkFBc0I7QUFDekIsTUFBQSxVQUFVRCxhQUFPLFdBQVcsZ0JBQWdCO0FBQ2hEO0FBQUEsSUFDRTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ08sU0FBQTtBQUNUO0FBQ0EsU0FBUyxvQkFBb0IsVUFBVSxtQkFBbUI7QUFDcEQsTUFBQSxtQkFBbUJBLGFBQU8sV0FBVyxnQkFBZ0I7QUFDekQsTUFBSSxDQUFDLGVBQWUsZ0JBQWdCLElBQUlFLGFBQUFBLFNBQWdCLEtBQUs7QUFDN0QsTUFBSSxDQUFDLGdCQUFnQixpQkFBaUIsSUFBSUEsYUFBQUEsU0FBZ0IsS0FBSztBQUMvRCxNQUFJLEVBQUUsU0FBQTliLFVBQVMsUUFBUSxjQUFjLGNBQWMsaUJBQWlCO0FBQ2hFLE1BQUFuSyxPQUFNa21CLGFBQU8sT0FBTyxJQUFJO0FBQzVCQyxlQUFBQSxVQUFpQixNQUFNO0FBQ3JCLFFBQUksYUFBYSxVQUFVO0FBQ3pCLHdCQUFrQixJQUFJO0FBQUEsSUFBQTtBQUV4QixRQUFJLGFBQWEsWUFBWTtBQUN2QixVQUFBLFdBQVcsQ0FBQyxZQUFZO0FBQ2xCLGdCQUFBLFFBQVEsQ0FBQyxVQUFVO0FBQ3pCLDRCQUFrQixNQUFNLGNBQWM7QUFBQSxRQUFBLENBQ3ZDO0FBQUEsTUFDSDtBQUNBLFVBQUksV0FBVyxJQUFJLHFCQUFxQixVQUFVLEVBQUUsV0FBVyxLQUFLO0FBQ3BFLFVBQUlubUIsS0FBSSxRQUFrQixVQUFBLFFBQVFBLEtBQUksT0FBTztBQUM3QyxhQUFPLE1BQU07QUFDWCxpQkFBUyxXQUFXO0FBQUEsTUFDdEI7QUFBQSxJQUFBO0FBQUEsRUFDRixHQUNDLENBQUMsUUFBUSxDQUFDO0FBQ2JtbUIsZUFBQUEsVUFBaUIsTUFBTTtBQUNyQixRQUFJLGVBQWU7QUFDYixVQUFBLEtBQUssV0FBVyxNQUFNO0FBQ3hCLDBCQUFrQixJQUFJO0FBQUEsU0FDckIsR0FBRztBQUNOLGFBQU8sTUFBTTtBQUNYLHFCQUFhLEVBQUU7QUFBQSxNQUNqQjtBQUFBLElBQUE7QUFBQSxFQUNGLEdBQ0MsQ0FBQyxhQUFhLENBQUM7QUFDbEIsTUFBSSxZQUFZLE1BQU07QUFDcEIscUJBQWlCLElBQUk7QUFBQSxFQUN2QjtBQUNBLE1BQUksZUFBZSxNQUFNO0FBQ3ZCLHFCQUFpQixLQUFLO0FBQ3RCLHNCQUFrQixLQUFLO0FBQUEsRUFDekI7QUFDQSxNQUFJLENBQUMsa0JBQWtCO0FBQ3JCLFdBQU8sQ0FBQyxPQUFPbm1CLE1BQUssRUFBRTtBQUFBLEVBQUE7QUFFeEIsTUFBSSxhQUFhLFVBQVU7QUFDekIsV0FBTyxDQUFDLGdCQUFnQkEsTUFBSyxFQUFFO0FBQUEsRUFBQTtBQUUxQixTQUFBO0FBQUEsSUFDTDtBQUFBLElBQ0FBO0FBQUEsSUFDQTtBQUFBLE1BQ0UsU0FBUyxxQkFBcUJtSyxVQUFTLFNBQVM7QUFBQSxNQUNoRCxRQUFRLHFCQUFxQixRQUFRLFlBQVk7QUFBQSxNQUNqRCxjQUFjLHFCQUFxQixjQUFjLFNBQVM7QUFBQSxNQUMxRCxjQUFjLHFCQUFxQixjQUFjLFlBQVk7QUFBQSxNQUM3RCxjQUFjLHFCQUFxQixjQUFjLFNBQVM7QUFBQSxJQUFBO0FBQUEsRUFFOUQ7QUFDRjtBQUNBLFNBQVMscUJBQXFCLGNBQWMsWUFBWTtBQUN0RCxTQUFPLENBQUMsVUFBVTtBQUNoQixvQkFBZ0IsYUFBYSxLQUFLO0FBQzlCLFFBQUEsQ0FBQyxNQUFNLGtCQUFrQjtBQUMzQixpQkFBVyxLQUFLO0FBQUEsSUFBQTtBQUFBLEVBRXBCO0FBQ0Y7QUF1QkEsU0FBUyxrQkFBa0I7QUFBQSxFQUN6QjtBQUFBLEVBQ0EsR0FBRztBQUNMLEdBQUc7QUFDRyxNQUFBLEVBQUUsT0FBTyxJQUFJLHNCQUFzQjtBQUN2QyxNQUFJOVgsV0FBVSt6QixhQUFPO0FBQUEsSUFDbkIsTUFBTSxZQUFZLE9BQU8sUUFBUSxNQUFNLE9BQU8sUUFBUTtBQUFBLElBQ3RELENBQUMsT0FBTyxRQUFRLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFDdkM7QUFDQSxNQUFJLENBQUMvekIsVUFBUztBQUNMLFdBQUE7QUFBQSxFQUFBO0FBRWMsU0FBQWcwQiw2QkFBQUEsY0FBcUIsdUJBQXVCLEVBQUUsTUFBTSxTQUFBaDBCLFVBQVMsR0FBRyxlQUFlO0FBQ3hHO0FBQ0EsU0FBUyxzQkFBc0JBLFVBQVM7QUFDdEMsTUFBSSxFQUFFLFVBQVUsYUFBYSxJQUFJLG9CQUFvQjtBQUNyRCxNQUFJLENBQUMsb0JBQW9CLHFCQUFxQixJQUFJNHpCLGFBQUFBLFNBQWdCLENBQUEsQ0FBRTtBQUNwRUUsZUFBQUEsVUFBaUIsTUFBTTtBQUNyQixRQUFJLGNBQWM7QUFDbEIsU0FBSyxzQkFBc0I5ekIsVUFBUyxVQUFVLFlBQVksRUFBRTtBQUFBLE1BQzFELENBQUMsVUFBVTtBQUNULFlBQUksQ0FBQyxhQUFhO0FBQ2hCLGdDQUFzQixLQUFLO0FBQUEsUUFBQTtBQUFBLE1BQzdCO0FBQUEsSUFFSjtBQUNBLFdBQU8sTUFBTTtBQUNHLG9CQUFBO0FBQUEsSUFDaEI7QUFBQSxFQUNDLEdBQUEsQ0FBQ0EsVUFBUyxVQUFVLFlBQVksQ0FBQztBQUM3QixTQUFBO0FBQ1Q7QUFDQSxTQUFTLHNCQUFzQjtBQUFBLEVBQzdCO0FBQUEsRUFDQSxTQUFTO0FBQUEsRUFDVCxHQUFHO0FBQ0wsR0FBRztBQUNELE1BQUksV0FBVyxZQUFZO0FBQzNCLE1BQUksRUFBRSxVQUFVLGFBQWEsSUFBSSxvQkFBb0I7QUFDckQsTUFBSSxFQUFFLFlBQVksU0FBQUEsU0FBUSxJQUFJLDBCQUEwQjtBQUN4RCxNQUFJLG9CQUFvQit6QixhQUFPO0FBQUEsSUFDN0IsTUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsTUFDQS96QjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxJQUNBLENBQUMsTUFBTSxhQUFhQSxVQUFTLFVBQVUsUUFBUTtBQUFBLEVBQ2pEO0FBQ0EsTUFBSSxzQkFBc0IrekIsYUFBTztBQUFBLElBQy9CLE1BQU07QUFBQSxNQUNKO0FBQUEsTUFDQTtBQUFBLE1BQ0EvekI7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsSUFDQSxDQUFDLE1BQU0sYUFBYUEsVUFBUyxVQUFVLFFBQVE7QUFBQSxFQUNqRDtBQUNJLE1BQUEsWUFBWSt6QixhQUFBQSxRQUFlLE1BQU07QUFDbkMsUUFBSSxTQUFTLFNBQVMsV0FBVyxTQUFTLFNBQVMsU0FBUyxNQUFNO0FBQ2hFLGFBQU8sQ0FBQztBQUFBLElBQUE7QUFFTixRQUFBLG1DQUFtQyxJQUFJO0FBQzNDLFFBQUksbUJBQW1CO0FBQ1gsZ0JBQUEsUUFBUSxDQUFDNTFCLE9BQU07O0FBQ3pCLFVBQUksZ0JBQWdCLFNBQVMsT0FBT0EsR0FBRSxNQUFNLEVBQUU7QUFDOUMsVUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsV0FBVztBQUM5QztBQUFBLE1BQUE7QUFFRSxVQUFBLENBQUMsa0JBQWtCLEtBQUssQ0FBQzgxQixRQUFPQSxJQUFHLE1BQU0sT0FBTzkxQixHQUFFLE1BQU0sRUFBRSxLQUFLQSxHQUFFLE1BQU0sTUFBTSxnQkFBYzVELE1BQUEsYUFBYTRELEdBQUUsTUFBTSxFQUFFLE1BQXZCLGdCQUFBNUQsSUFBMEIsbUJBQWtCO0FBQ3RILDJCQUFBO0FBQUEsTUFBQSxXQUNWLGNBQWMsaUJBQWlCO0FBQ3JCLDJCQUFBO0FBQUEsTUFBQSxPQUNkO0FBQ1EscUJBQUEsSUFBSTRELEdBQUUsTUFBTSxFQUFFO0FBQUEsTUFBQTtBQUFBLElBQzdCLENBQ0Q7QUFDRyxRQUFBLGFBQWEsU0FBUyxHQUFHO0FBQzNCLGFBQU8sQ0FBQztBQUFBLElBQUE7QUFFTixRQUFBLE1BQU0sZUFBZSxJQUFJO0FBQ3pCLFFBQUEsb0JBQW9CLGFBQWEsT0FBTyxHQUFHO0FBQzdDLFVBQUksYUFBYTtBQUFBLFFBQ2Y7QUFBQSxRQUNBLFlBQVksT0FBTyxDQUFDQSxPQUFNLGFBQWEsSUFBSUEsR0FBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQ0EsT0FBTUEsR0FBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEdBQUc7QUFBQSxNQUN6RjtBQUFBLElBQUE7QUFFRixXQUFPLENBQUMsSUFBSSxXQUFXLElBQUksTUFBTTtBQUFBLEVBQUEsR0FDaEM7QUFBQSxJQUNEO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFBQSxDQUNEO0FBQ0QsTUFBSSxjQUFjNDFCLGFBQU87QUFBQSxJQUN2QixNQUFNLG1CQUFtQixxQkFBcUIsUUFBUTtBQUFBLElBQ3RELENBQUMscUJBQXFCLFFBQVE7QUFBQSxFQUNoQztBQUNJLE1BQUEscUJBQXFCLHNCQUFzQixtQkFBbUI7QUFDM0MsU0FBQUMsMkNBQXFCRSxhQUFPLFVBQVUsTUFBTSxVQUFVLElBQUksQ0FBQyxTQUFnQ0YsNkJBQUFBLGNBQWMsUUFBUSxFQUFFLEtBQUssTUFBTSxLQUFLLFlBQVksSUFBSSxTQUFTLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxZQUFZLElBQUksQ0FBQyxTQUF5QkEsMkNBQXFCLFFBQVEsRUFBRSxLQUFLLE1BQU0sS0FBSyxpQkFBaUIsTUFBTSxHQUFHLFVBQVcsQ0FBQSxDQUFDLEdBQUcsbUJBQW1CLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSztBQUFBO0FBQUE7QUFBQSwrQ0FHMVUsUUFBUSxFQUFFLEtBQUssR0FBRyxLQUFNLENBQUE7QUFBQSxHQUM5RCxDQUFDO0FBQ0o7QUEwTEEsU0FBUyxhQUFhLE1BQU07QUFDMUIsU0FBTyxDQUFDLFVBQVU7QUFDWCxTQUFBLFFBQVEsQ0FBQ3JtQixTQUFRO0FBQ2hCLFVBQUEsT0FBT0EsU0FBUSxZQUFZO0FBQzdCLFFBQUFBLEtBQUksS0FBSztBQUFBLE1BQUEsV0FDQUEsUUFBTyxNQUFNO0FBQ3RCLFFBQUFBLEtBQUksVUFBVTtBQUFBLE1BQUE7QUFBQSxJQUNoQixDQUNEO0FBQUEsRUFDSDtBQUNGO0FBR0EsSUFBSSxZQUFZLE9BQU8sV0FBVyxlQUFlLE9BQU8sT0FBTyxhQUFhLGVBQWUsT0FBTyxPQUFPLFNBQVMsa0JBQWtCO0FBQ3BJLElBQUk7QUFDRixNQUFJLFdBQVc7QUFDYixXQUFPLHVCQUF1QjtBQUFBLEVBQUE7QUFFbEMsU0FBU3JTLElBQUc7QUFDWjtBQXdHQSxTQUFTLFdBQVcsRUFBRSxVQUFVLFVBQVUsUUFBUSxXQUFXO0FBQ3ZELE1BQUEsYUFBYTY0QixhQUFBQSxPQUFlO0FBQzVCLE1BQUEsV0FBVyxXQUFXLE1BQU07QUFDOUIsZUFBVyxVQUFVLGtCQUFrQixFQUFFLFFBQVEsU0FBUyxVQUFVLE1BQU07QUFBQSxFQUFBO0FBRTVFLE1BQUksVUFBVSxXQUFXO0FBQ3pCLE1BQUksQ0FBQyxPQUFPLFlBQVksSUFBSUMsc0JBQWlCO0FBQUEsSUFDM0MsUUFBUSxRQUFRO0FBQUEsSUFDaEIsVUFBVSxRQUFRO0FBQUEsRUFBQSxDQUNuQjtBQUNELE1BQUksV0FBV0MsYUFBUTtBQUFBLElBQ3JCLENBQUMsYUFBYTtBQUNaQyxtQ0FBd0IsTUFBTSxhQUFhLFFBQVEsQ0FBQztBQUFBLElBQ3REO0FBQUEsSUFDQSxDQUFDLFlBQVk7QUFBQSxFQUNmO0FBQ1FDLGVBQUEsZ0JBQWdCLE1BQU0sUUFBUSxPQUFPLFFBQVEsR0FBRyxDQUFDLFNBQVMsUUFBUSxDQUFDO0FBQzNFLFNBQStCQyw2QkFBQTtBQUFBLElBQzdCO0FBQUEsSUFDQTtBQUFBLE1BQ0U7QUFBQSxNQUNBO0FBQUEsTUFDQSxVQUFVLE1BQU07QUFBQSxNQUNoQixnQkFBZ0IsTUFBTTtBQUFBLE1BQ3RCLFdBQVc7QUFBQSxJQUFBO0FBQUEsRUFFZjtBQUNGO0FBNkJBLElBQUksc0JBQXNCO0FBQzFCLElBQUksT0FBT0MsYUFBUTtBQUFBLEVBQ2pCLFNBQVMsWUFBWTtBQUFBLElBQ25CO0FBQUEsSUFDQSxXQUFXO0FBQUEsSUFDWCxXQUFXO0FBQUEsSUFDWDtBQUFBLElBQ0E7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNUO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBRztBQUFBLEtBQ0YsY0FBYztBQUNmLFFBQUksRUFBRSxTQUFBLElBQWFDLHdCQUFtQixpQkFBaUI7QUFDdkQsUUFBSSxhQUFhLE9BQU8sT0FBTyxZQUFZLG9CQUFvQixLQUFLLEVBQUU7QUFDbEUsUUFBQTtBQUNKLFFBQUksYUFBYTtBQUNiLFFBQUEsT0FBTyxPQUFPLFlBQVksWUFBWTtBQUN6QixxQkFBQTtBQUNmLFVBQUksV0FBVztBQUNULFlBQUE7QUFDRixjQUFJLGFBQWEsSUFBSSxJQUFJLE9BQU8sU0FBUyxJQUFJO0FBQzdDLGNBQUksWUFBWSxHQUFHLFdBQVcsSUFBSSxJQUFJLElBQUksSUFBSSxXQUFXLFdBQVcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFO0FBQ3BGLGNBQUksT0FBTyxjQUFjLFVBQVUsVUFBVSxRQUFRO0FBQ3JELGNBQUksVUFBVSxXQUFXLFdBQVcsVUFBVSxRQUFRLE1BQU07QUFDckQsaUJBQUEsT0FBTyxVQUFVLFNBQVMsVUFBVTtBQUFBLFVBQUEsT0FDcEM7QUFDUSx5QkFBQTtBQUFBLFVBQUE7QUFBQSxpQkFFUnA1QixJQUFHO0FBQ1Y7QUFBQSxZQUNFO0FBQUEsWUFDQSxhQUFhLEVBQUU7QUFBQSxVQUNqQjtBQUFBLFFBQUE7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVGLFFBQUksT0FBTyxRQUFRLElBQUksRUFBRSxVQUFVO0FBQ25DLFFBQUksQ0FBQyxnQkFBZ0IsYUFBYSxnQkFBZ0IsSUFBSTtBQUFBLE1BQ3BEO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFDSSxRQUFBLGtCQUFrQixvQkFBb0IsSUFBSTtBQUFBLE1BQzVDLFNBQVM7QUFBQSxNQUNUO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQUEsQ0FDRDtBQUNELGFBQVMsWUFBWSxPQUFPO0FBQ3RCLFVBQUEsaUJBQWlCLEtBQUs7QUFDdEIsVUFBQSxDQUFDLE1BQU0sa0JBQWtCO0FBQzNCLHdCQUFnQixLQUFLO0FBQUEsTUFBQTtBQUFBLElBQ3ZCO0FBRUUsUUFBQTtBQUFBO0FBQUEsTUFFc0JrNUIsNkJBQUE7QUFBQSxRQUN0QjtBQUFBLFFBQ0E7QUFBQSxVQUNFLEdBQUc7QUFBQSxVQUNILEdBQUc7QUFBQSxVQUNILE1BQU0sZ0JBQWdCO0FBQUEsVUFDdEIsU0FBUyxjQUFjLGlCQUFpQixVQUFVO0FBQUEsVUFDbEQsS0FBSyxVQUFVLGNBQWMsV0FBVztBQUFBLFVBQ3hDO0FBQUEsVUFDQSxpQkFBaUIsQ0FBQyxjQUFjLGFBQWEsV0FBVyxTQUFTO0FBQUEsUUFBQTtBQUFBLE1BQ25FO0FBQUE7QUFHSixXQUFPLGtCQUFrQixDQUFDLGFBQXFDQSw2QkFBQUEsY0FBY0csYUFBQUEsVUFBa0IsTUFBTSxNQUFzQkgsMkNBQXNCLG1CQUFtQixFQUFFLE1BQU0sS0FBTSxDQUFBLENBQUMsSUFBSTtBQUFBLEVBQUE7QUFFM0w7QUFDQSxLQUFLLGNBQWM7QUFDbkIsSUFBSSxVQUFVQyxhQUFRO0FBQUEsRUFDcEIsU0FBUyxlQUFlO0FBQUEsSUFDdEIsZ0JBQWdCLGtCQUFrQjtBQUFBLElBQ2xDLGdCQUFnQjtBQUFBLElBQ2hCLFdBQVcsZ0JBQWdCO0FBQUEsSUFDM0IsTUFBTTtBQUFBLElBQ04sT0FBTztBQUFBLElBQ1A7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBRztBQUFBLEtBQ0Y5bUIsTUFBSztBQUNOLFFBQUksT0FBTyxnQkFBZ0IsSUFBSSxFQUFFLFVBQVUsS0FBSyxVQUFVO0FBQzFELFFBQUksV0FBVyxZQUFZO0FBQ3ZCLFFBQUEsY0FBYyttQixhQUFRLFdBQVcsc0JBQXNCO0FBQzNELFFBQUksRUFBRSxXQUFXLFlBQVksYUFBYUEsYUFBQUEsV0FBbUIsaUJBQWlCO0FBQzlFLFFBQUksa0JBQWtCLGVBQWU7QUFBQTtBQUFBLElBRXJDLHVCQUF1QixJQUFJLEtBQUssbUJBQW1CO0FBQy9DLFFBQUEsYUFBYSxXQUFXLGlCQUFpQixXQUFXLGVBQWUsSUFBSSxFQUFFLFdBQVcsS0FBSztBQUM3RixRQUFJLG1CQUFtQixTQUFTO0FBQzVCLFFBQUEsdUJBQXVCLGVBQWUsWUFBWSxjQUFjLFlBQVksV0FBVyxXQUFXLFlBQVksV0FBVyxTQUFTLFdBQVc7QUFDakosUUFBSSxDQUFDLGVBQWU7QUFDbEIseUJBQW1CLGlCQUFpQixZQUFZO0FBQ3pCLDZCQUFBLHVCQUF1QixxQkFBcUIsWUFBZ0IsSUFBQTtBQUNuRixtQkFBYSxXQUFXLFlBQVk7QUFBQSxJQUFBO0FBRXRDLFFBQUksd0JBQXdCLFVBQVU7QUFDYiw2QkFBQSxjQUFjLHNCQUFzQixRQUFRLEtBQUs7QUFBQSxJQUFBO0FBRXBFLFVBQUEsbUJBQW1CLGVBQWUsT0FBTyxXQUFXLFNBQVMsR0FBRyxJQUFJLFdBQVcsU0FBUyxJQUFJLFdBQVc7QUFDN0csUUFBSSxXQUFXLHFCQUFxQixjQUFjLENBQUMsT0FBTyxpQkFBaUIsV0FBVyxVQUFVLEtBQUssaUJBQWlCLE9BQU8sZ0JBQWdCLE1BQU07QUFDbkosUUFBSSxZQUFZLHdCQUF3QixTQUFTLHlCQUF5QixjQUFjLENBQUMsT0FBTyxxQkFBcUIsV0FBVyxVQUFVLEtBQUsscUJBQXFCLE9BQU8sV0FBVyxNQUFNLE1BQU07QUFDbE0sUUFBSSxjQUFjO0FBQUEsTUFDaEI7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFDSSxRQUFBLGNBQWMsV0FBVyxrQkFBa0I7QUFDM0MsUUFBQTtBQUNBLFFBQUEsT0FBTyxrQkFBa0IsWUFBWTtBQUN2QyxrQkFBWSxjQUFjLFdBQVc7QUFBQSxJQUFBLE9BQ2hDO0FBQ08sa0JBQUE7QUFBQSxRQUNWO0FBQUEsUUFDQSxXQUFXLFdBQVc7QUFBQSxRQUN0QixZQUFZLFlBQVk7QUFBQSxRQUN4QixrQkFBa0Isa0JBQWtCO0FBQUEsTUFDcEMsRUFBQSxPQUFPLE9BQU8sRUFBRSxLQUFLLEdBQUc7QUFBQSxJQUFBO0FBRTVCLFFBQUksUUFBUSxPQUFPLGNBQWMsYUFBYSxVQUFVLFdBQVcsSUFBSTtBQUN2RSxXQUErQkYsNkJBQUE7QUFBQSxNQUM3QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLEdBQUc7QUFBQSxRQUNILGdCQUFnQjtBQUFBLFFBQ2hCO0FBQUEsUUFDQSxLQUFBN21CO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRjtBQUFBLE1BQ0EsT0FBTyxhQUFhLGFBQWEsU0FBUyxXQUFXLElBQUk7QUFBQSxJQUMzRDtBQUFBLEVBQUE7QUFFSjtBQUNBLFFBQVEsY0FBYztBQUN0QixJQUFJb2MsUUFBTzBLLGFBQVE7QUFBQSxFQUNqQixDQUFDO0FBQUEsSUFDQyxXQUFXO0FBQUEsSUFDWDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVDtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1Q7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFHO0FBQUEsS0FDRixpQkFBaUI7QUFDbEIsUUFBSSxTQUFTLFVBQVU7QUFDdkIsUUFBSSxhQUFhLGNBQWMsUUFBUSxFQUFFLFVBQVU7QUFDbkQsUUFBSSxhQUFhLE9BQU8sWUFBWSxNQUFNLFFBQVEsUUFBUTtBQUMxRCxRQUFJLGFBQWEsT0FBTyxXQUFXLFlBQVksb0JBQW9CLEtBQUssTUFBTTtBQUMxRSxRQUFBLGdCQUFnQixDQUFDLFVBQVU7QUFDN0Isa0JBQVksU0FBUyxLQUFLO0FBQzFCLFVBQUksTUFBTSxpQkFBa0I7QUFDNUIsWUFBTSxlQUFlO0FBQ2pCLFVBQUEsWUFBWSxNQUFNLFlBQVk7QUFDbEMsVUFBSSxnQkFBZSx1Q0FBVyxhQUFhLGtCQUFpQjtBQUNyRCxhQUFBLGFBQWEsTUFBTSxlQUFlO0FBQUEsUUFDdkM7QUFBQSxRQUNBLFFBQVE7QUFBQSxRQUNSO0FBQUEsUUFDQSxTQUFTO0FBQUEsUUFDVDtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQUEsQ0FDRDtBQUFBLElBQ0g7QUFDQSxXQUErQkQsNkJBQUE7QUFBQSxNQUM3QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLEtBQUs7QUFBQSxRQUNMLFFBQVE7QUFBQSxRQUNSLFFBQVE7QUFBQSxRQUNSLFVBQVUsaUJBQWlCLFdBQVc7QUFBQSxRQUN0QyxHQUFHO0FBQUEsUUFDSCxpQkFBaUIsQ0FBQyxjQUFjLGFBQWEsV0FBVyxTQUFTO0FBQUEsTUFBQTtBQUFBLElBRXJFO0FBQUEsRUFBQTtBQUVKO0FBQ0F6SyxNQUFLLGNBQWM7QUEyRG5CLFNBQVMsMkJBQTJCLFVBQVU7QUFDNUMsU0FBTyxHQUFHLFFBQVE7QUFDcEI7QUFDQSxTQUFTLHNCQUFzQixVQUFVO0FBQ25DLE1BQUEsTUFBTTJLLGFBQVEsV0FBVyxpQkFBaUI7QUFDcEMsWUFBQSxLQUFLLDJCQUEyQixRQUFRLENBQUM7QUFDNUMsU0FBQTtBQUNUO0FBTUEsU0FBUyxvQkFBb0IsSUFBSTtBQUFBLEVBQy9CO0FBQUEsRUFDQSxTQUFTO0FBQUEsRUFDVDtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLElBQUksSUFBSTtBQUNOLE1BQUksV0FBVyxZQUFZO0FBQzNCLE1BQUksV0FBVyxZQUFZO0FBQzNCLE1BQUksT0FBTyxnQkFBZ0IsSUFBSSxFQUFFLFVBQVU7QUFDM0MsU0FBT0wsYUFBUTtBQUFBLElBQ2IsQ0FBQyxVQUFVO0FBQ0wsVUFBQSx1QkFBdUIsT0FBTyxNQUFNLEdBQUc7QUFDekMsY0FBTSxlQUFlO0FBQ2pCLFlBQUEsV0FBVyxnQkFBZ0IsU0FBUyxjQUFjLFdBQVcsUUFBUSxNQUFNLFdBQVcsSUFBSTtBQUM5RixpQkFBUyxJQUFJO0FBQUEsVUFDWCxTQUFTO0FBQUEsVUFDVDtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFFBQUEsQ0FDRDtBQUFBLE1BQUE7QUFBQSxJQUVMO0FBQUEsSUFDQTtBQUFBLE1BQ0U7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUFBO0FBQUEsRUFFSjtBQUNGO0FBa0NBLElBQUksWUFBWTtBQUNoQixJQUFJLHFCQUFxQixNQUFNLEtBQUssT0FBTyxFQUFFLFNBQVMsQ0FBQztBQUN2RCxTQUFTLFlBQVk7QUFDZixNQUFBLEVBQUUsV0FBVztBQUFBLElBQXNCO0FBQUE7QUFBQSxFQUEyQjtBQUNsRSxNQUFJLEVBQUUsU0FBQSxJQUFhSyx3QkFBbUIsaUJBQWlCO0FBQ3ZELE1BQUksaUJBQWlCLFdBQVc7QUFDaEMsU0FBT0wsYUFBUTtBQUFBLElBQ2IsT0FBTyxRQUFRNXpCLFdBQVUsT0FBTztBQUM5QixVQUFJLEVBQUUsUUFBUSxRQUFRLFNBQVMsVUFBVSxTQUFTO0FBQUEsUUFDaEQ7QUFBQSxRQUNBO0FBQUEsTUFDRjtBQUNJLFVBQUFBLFNBQVEsYUFBYSxPQUFPO0FBQzFCLFlBQUEsTUFBTUEsU0FBUSxjQUFjLG1CQUFtQjtBQUNuRCxjQUFNLE9BQU8sTUFBTSxLQUFLLGdCQUFnQkEsU0FBUSxVQUFVLFFBQVE7QUFBQSxVQUNoRSxvQkFBb0JBLFNBQVE7QUFBQSxVQUM1QjtBQUFBLFVBQ0E7QUFBQSxVQUNBLFlBQVlBLFNBQVEsVUFBVTtBQUFBLFVBQzlCLGFBQWFBLFNBQVEsV0FBVztBQUFBLFVBQ2hDLFdBQVdBLFNBQVE7QUFBQSxRQUFBLENBQ3BCO0FBQUEsTUFBQSxPQUNJO0FBQ0wsY0FBTSxPQUFPLFNBQVNBLFNBQVEsVUFBVSxRQUFRO0FBQUEsVUFDOUMsb0JBQW9CQSxTQUFRO0FBQUEsVUFDNUI7QUFBQSxVQUNBO0FBQUEsVUFDQSxZQUFZQSxTQUFRLFVBQVU7QUFBQSxVQUM5QixhQUFhQSxTQUFRLFdBQVc7QUFBQSxVQUNoQyxTQUFTQSxTQUFRO0FBQUEsVUFDakIsT0FBT0EsU0FBUTtBQUFBLFVBQ2YsYUFBYTtBQUFBLFVBQ2IsV0FBV0EsU0FBUTtBQUFBLFVBQ25CLGdCQUFnQkEsU0FBUTtBQUFBLFFBQUEsQ0FDekI7QUFBQSxNQUFBO0FBQUEsSUFFTDtBQUFBLElBQ0EsQ0FBQyxRQUFRLFVBQVUsY0FBYztBQUFBLEVBQ25DO0FBQ0Y7QUFDQSxTQUFTLGNBQWMsUUFBUSxFQUFFLFNBQVMsSUFBSSxDQUFBLEdBQUk7QUFDaEQsTUFBSSxFQUFFLFNBQUEsSUFBYWkwQix3QkFBbUIsaUJBQWlCO0FBQ25ELE1BQUEsZUFBZUEsYUFBUSxXQUFXLFlBQVk7QUFDbEQsWUFBVSxjQUFjLGtEQUFrRDtBQUMxRSxNQUFJLENBQUMvekIsTUFBSyxJQUFJLGFBQWEsUUFBUSxNQUFNLEVBQUU7QUFDdkMsTUFBQSxPQUFPLEVBQUUsR0FBRyxnQkFBZ0IsU0FBUyxTQUFTLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRTtBQUNyRSxNQUFJLFdBQVcsWUFBWTtBQUMzQixNQUFJLFVBQVUsTUFBTTtBQUNsQixTQUFLLFNBQVMsU0FBUztBQUN2QixRQUFJLFNBQVMsSUFBSSxnQkFBZ0IsS0FBSyxNQUFNO0FBQ3hDLFFBQUEsY0FBYyxPQUFPLE9BQU8sT0FBTztBQUN2QyxRQUFJLHFCQUFxQixZQUFZLEtBQUssQ0FBQzlELE9BQU1BLE9BQU0sRUFBRTtBQUN6RCxRQUFJLG9CQUFvQjtBQUN0QixhQUFPLE9BQU8sT0FBTztBQUNyQixrQkFBWSxPQUFPLENBQUNBLE9BQU1BLEVBQUMsRUFBRSxRQUFRLENBQUNBLE9BQU0sT0FBTyxPQUFPLFNBQVNBLEVBQUMsQ0FBQztBQUNqRSxVQUFBLEtBQUssT0FBTyxTQUFTO0FBQ3pCLFdBQUssU0FBUyxLQUFLLElBQUksRUFBRSxLQUFLO0FBQUEsSUFBQTtBQUFBLEVBQ2hDO0FBRUYsT0FBSyxDQUFDLFVBQVUsV0FBVyxRQUFROEQsT0FBTSxNQUFNLE9BQU87QUFDL0MsU0FBQSxTQUFTLEtBQUssU0FBUyxLQUFLLE9BQU8sUUFBUSxPQUFPLFNBQVMsSUFBSTtBQUFBLEVBQUE7QUFFdEUsTUFBSSxhQUFhLEtBQUs7QUFDZixTQUFBLFdBQVcsS0FBSyxhQUFhLE1BQU0sV0FBVyxVQUFVLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQztBQUFBLEVBQUE7QUFFeEYsU0FBTyxXQUFXLElBQUk7QUFDeEI7QUF5TkEsU0FBUyx1QkFBdUIsSUFBSSxPQUFPLElBQUk7QUFDekMsTUFBQSxZQUFZK3pCLGFBQVEsV0FBVyxxQkFBcUI7QUFDeEQ7QUFBQSxJQUNFLGFBQWE7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQUNJLE1BQUEsRUFBRSxhQUFhO0FBQUEsSUFDakI7QUFBQTtBQUFBLEVBQ0Y7QUFDQSxNQUFJLE9BQU8sZ0JBQWdCLElBQUksRUFBRSxVQUFVLEtBQUssVUFBVTtBQUN0RCxNQUFBLENBQUMsVUFBVSxpQkFBaUI7QUFDdkIsV0FBQTtBQUFBLEVBQUE7QUFFTCxNQUFBLGNBQWMsY0FBYyxVQUFVLGdCQUFnQixVQUFVLFFBQVEsS0FBSyxVQUFVLGdCQUFnQjtBQUN2RyxNQUFBLFdBQVcsY0FBYyxVQUFVLGFBQWEsVUFBVSxRQUFRLEtBQUssVUFBVSxhQUFhO0FBQzNGLFNBQUEsVUFBVSxLQUFLLFVBQVUsUUFBUSxLQUFLLFFBQVEsVUFBVSxLQUFLLFVBQVUsV0FBVyxLQUFLO0FBQ2hHO0FBcWJjLElBQUksWUFBWTtBQ2xoUTlCLE1BQU0scUJBQXFCLENBQUMsRUFBQyxNQUFNLFlBQVc7QUFFMUMsUUFBTSxDQUFDLGNBQWMsZUFBZSxJQUFJL3NCLGFBQUFBLFNBQWlCLEVBQUU7QUFDM0QsUUFBTSxDQUFDLGNBQWMsZUFBZSxJQUFJQSxhQUFBQSxTQUFpQixFQUFFO0FBRXJELFFBQUEsYUFBYXlFLFNBQVUsUUFBUSxVQUFVO0FBRS9DaEcsZUFBQUEsVUFBVSxNQUFNO0FBQ1osb0JBQWdCLE1BQU0sWUFBWTtBQUNsQyxvQkFBZ0IsTUFBTSxZQUFZO0FBQUEsS0FDbkMsQ0FBQyxNQUFNLGNBQWMsTUFBTSxZQUFZLENBQUM7QUFFckMsUUFBQSxxQkFBcUIsQ0FBQyxVQUFVO0FBQ2xDLFFBQUksV0FBVyxXQUFXLGdCQUFnQixFQUFFLFNBQVM7QUFDckQsYUFBUyxlQUFlO0FBQ3hCLGVBQVcsZ0JBQWdCLFFBQVE7QUFDbkMsb0JBQWdCLEtBQUs7QUFBQSxFQUN6QjtBQUVNLFFBQUEscUJBQXFCLENBQUMsVUFBVTtBQUNsQyxRQUFJLFdBQVcsV0FBVyxnQkFBZ0IsRUFBRSxTQUFTO0FBQ3JELGFBQVMsZUFBZTtBQUN4QixlQUFXLGdCQUFnQixRQUFRO0FBQ25DLG9CQUFnQixLQUFLO0FBQUEsRUFDekI7QUFFQSwrQ0FDSyxPQUFJLEVBQUEsV0FBVSxJQUNYLFVBQUNvVixrQ0FBQSxLQUFBLE9BQUEsRUFBSSxXQUFXLFFBQ1osVUFBQTtBQUFBLElBQUFsTixrQ0FBQUEsSUFBQyxTQUFJLFdBQVcsVUFDWixVQUFDa04sa0NBQUEsS0FBQSxPQUFBLEVBQUksV0FBVSxjQUNYLFVBQUE7QUFBQSxNQUFBbE4sc0NBQUMsV0FBTSxNQUFLLFFBQU8sTUFBSyxnQkFBZSxPQUFPLGNBQWMsVUFBVyxDQUFLaFQsT0FBQSxtQkFBbUJBLEdBQUUsT0FBTyxLQUFLLEdBQUcsV0FBVyx1UUFBdVEsYUFBYSxVQUFVO0FBQUEsTUFDelpnVCxrQ0FBQUEsSUFBQyxTQUFPLEVBQUEsVUFBQSxLQUFLLGFBQWEsQ0FBQTtBQUFBLElBQUEsRUFBQSxDQUM5QixFQUNKLENBQUE7QUFBQSwwQ0FDQyxPQUFJLEVBQUEsV0FBVyxVQUNaLFVBQUNrTixrQ0FBQSxLQUFBLE9BQUEsRUFBSSxXQUFVLGNBQ1gsVUFBQTtBQUFBLE1BQUFsTixzQ0FBQyxXQUFNLE1BQUssUUFBTyxNQUFLLGdCQUFlLE9BQU8sY0FBYyxVQUFVLENBQUtoVCxPQUFBLG1CQUFtQkEsR0FBRSxPQUFPLEtBQUssR0FBSSxXQUFXLHVRQUF1USxhQUFhLFVBQVU7QUFBQSxNQUN6WmdULGtDQUFBQSxJQUFDLFNBQU8sRUFBQSxVQUFBLEtBQUssYUFBYSxDQUFBO0FBQUEsSUFBQSxFQUFBLENBQzlCLEVBQ0osQ0FBQTtBQUFBLEVBQUEsRUFBQSxDQUNKLEVBQ1IsQ0FBQTtBQUVKO0FBRUEsbUJBQW1CLFlBQVk7QUFBQSxFQUMzQixPQUFPMmIsaUJBQVUsV0FBVyxLQUFLO0FBQUEsRUFDakMsTUFBTUEsaUJBQVUsV0FBVyxJQUFJO0FBQ25DO0FDdkRBLE1BQU0sc0JBQXNCLENBQUMsRUFBQyxZQUFXO0FBRXJDLFNBQ0szYixrQ0FBQSxJQUFBLE9BQUEsRUFBSSxXQUFXLFdBQ1osaURBQUMsTUFBRyxFQUFBLFVBQUE7QUFBQSxJQUFBO0FBQUEsSUFBSyxNQUFNO0FBQUEsRUFBQSxFQUFBLENBQU0sRUFDekIsQ0FBQTtBQUVSO0FBRUEsb0JBQW9CLFlBQVk7QUFBQSxFQUM1QixPQUFPMmIsaUJBQVUsV0FBVyxLQUFLO0FBQ3JDO0FDRUEsTUFBTSxnQkFBZ0IsQ0FBQyxVQUFVO0FBRTdCLFFBQU0sQ0FBQyxNQUFNLE9BQU8sSUFBSXRpQixhQUFBQSxTQUFlLElBQUksTUFBTTtBQUNqRCxRQUFNLENBQUMsT0FBTyxRQUFRLElBQUlBLGFBQUFBLFNBQWdCLElBQUksT0FBTztBQUUvQyxRQUFBLGNBQWN5RSxTQUFVLFFBQVEsVUFBVTtBQUMxQyxRQUFBLGVBQWVBLFNBQVUsUUFBUSxZQUFZO0FBQzdDLFFBQUEsWUFBWSxPQUFPLFNBQWlCO0FBQ3RDLGlCQUFhLFNBQVMsSUFBSSxFQUFFLEtBQUssQ0FBQyxhQUFhO0FBQzNDLGtCQUFZLGdCQUFnQixRQUFRO0FBQ3BDLGNBQVEsU0FBUyxJQUFJO0FBQ3JCLGVBQVMsUUFBUTtBQUFBLElBQUEsQ0FDcEI7QUFBQSxFQUNMO0FBRUEsTUFBSSxTQUFTLFVBQVU7QUFFdkJoRyxlQUFBQSxVQUFVLE1BQU07QUFDWixRQUFHLE9BQU8sTUFBTTtBQUNaLGdCQUFVLE9BQU8sSUFBSTtBQUFBLElBQUE7QUFBQSxFQUU3QixHQUFHLEVBQUU7QUFFTCwrQ0FDS0osUUFBTSxZQUFOLEVBQ0csVUFBQ3dWLHVDQUFBLE9BQUEsRUFBSSxXQUFVLGtCQUNYLFVBQUE7QUFBQSxJQUFDQSxrQ0FBQUEsS0FBQSxPQUFBLEVBQUksV0FBVSx3QkFDWCxVQUFBO0FBQUEsTUFBQWxOLGtDQUFBQSxJQUFDLFNBQUksV0FBVSxVQUNYLFVBQUNBLGtDQUFBLElBQUEscUJBQUEsRUFBb0IsTUFBYyxDQUFBLEdBQ3ZDO0FBQUEsNENBQ0MsT0FBSSxFQUFBLFdBQVUsSUFDWCxVQUFDQSxrQ0FBQUEsSUFBQSxpQkFBQSxFQUFnQixXQUFxQixFQUMxQyxDQUFBO0FBQUEsSUFBQSxHQUNKO0FBQUEsSUFFQ0Esa0NBQUEsSUFBQSxpQkFBQSxFQUFnQixNQUFZLE9BQWMsUUFBUSxTQUFTO0FBQUEsSUFDNURBLGtDQUFBLElBQUMsT0FBSSxFQUFBLFdBQVUsYUFBYyxVQUFBLEtBQUssTUFBTSxLQUFNQSxrQ0FBQUEsSUFBQSxrQkFBQSxFQUFpQixNQUFZLE1BQUEsQ0FBYyxFQUFJLENBQUE7QUFBQSxJQUM3RkEsa0NBQUFBLElBQUMsU0FBTSxVQUFLLEtBQUEsTUFBTSxLQUFNQSxrQ0FBQSxJQUFBLG9CQUFBLEVBQW1CLE1BQVksTUFBQSxDQUFjLEVBQUksQ0FBQTtBQUFBLElBQ3pFa04sa0NBQUFBLEtBQUMsT0FBSSxFQUFBLFdBQVUsd0JBQ1gsVUFBQTtBQUFBLE1BQUNsTixrQ0FBQSxJQUFBLE9BQUEsRUFBSSxXQUFVLFVBQVcsVUFBSyxLQUFBLE1BQU0sS0FBTUEsa0NBQUFBLElBQUEsa0JBQUEsRUFBaUIsTUFBWSxNQUFBLENBQWMsRUFBSSxDQUFBO0FBQUEsTUFDMUZBLGtDQUFBQSxJQUFDLE9BQUksRUFBQSxXQUFVLFVBQVcsVUFBQSxLQUFLLE1BQU0sS0FBTUEsa0NBQUEsSUFBQSxtQkFBQSxFQUFrQixNQUFZLE1BQWMsQ0FBQSxFQUFJLENBQUE7QUFBQSxJQUFBLEdBQy9GO0FBQUEsSUFDRSxLQUFLLE1BQU0sS0FBTUEsa0NBQUFBLElBQUEsb0JBQUEsRUFBbUIsTUFBWSxNQUFjLENBQUE7QUFBQSxFQUFBLEVBQUEsQ0FDcEUsRUFDSixDQUFBO0FBR1I7QUN2RE8sTUFBTSxJQUFJO0FBQUEsRUFLYixZQUFZLEtBQWE7QUFKakI7QUFDQTtBQUlBLFFBQUFoTyxTQUFROEwsU0FBVSxRQUFRd29CLE9BQUs7QUFDbkMsWUFBUSxJQUFJLEdBQUc7QUFDZixJQUFBdDBCLE9BQU0sZUFBZTtBQUNyQixJQUFBQSxPQUFNLEtBQUs7QUFBQSxFQUFBO0FBQUEsRUFHZixPQUFhO0FBRVQsU0FBSyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBR2pCLFVBQVU7QUFDTixVQUFNLE9BQU8sU0FBUyxXQUFXLFNBQVMsZUFBZSxNQUFNLENBQUM7QUFFM0QsU0FBQTtBQUFBLDRDQUNBLFVBQVUsVUFBVixFQUNHLFVBQUNnTyxrQ0FBQSxJQUFBdW1CLFlBQUEsRUFDRyxpREFBQyxRQUNHLEVBQUEsVUFBQTtBQUFBLFFBQUF2bUIsc0NBQUMsU0FBTSxNQUFLLEtBQUksU0FBU0Esc0NBQUMsZ0JBQWMsQ0FBQSxHQUFJO0FBQUEsOENBQzNDLE9BQU0sRUFBQSxNQUFLLFVBQVMsU0FBU0Esa0NBQUEsSUFBQyxpQkFBYyxFQUFJLENBQUE7QUFBQSxNQUFBLEVBQ3JELENBQUEsRUFDSixDQUFBLEVBQ0osQ0FBQTtBQUFBLElBQ0o7QUFBQSxFQUFBO0FBQUEsRUFJSixNQUFZO0FBQUEsRUFBQTtBQUloQjtBQ3hDQSxJQUFJLE1BQU0sSUFBSSxJQUFJLFNBQVM7QUFDM0IsSUFBSSxLQUFLO0FBQ1QsSUFBSSxJQUFJOyIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU2LDU3LDU4LDU5LDYwLDYxLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyNywxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzOCwxMzksMTQwLDE0MSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsMzg0LDM4NSwzODYsMzg3LDM4OCwzODksMzkwLDM5MSwzOTIsMzkzLDM5NCwzOTUsMzk2LDM5NywzOTgsMzk5LDQwMCw0MDEsNDAyLDQwMyw0MDQsNDA1LDQwNiw0MDcsNDA4LDQwOSw0MTAsNDExLDQxMiw0MTMsNDE0LDQxNSw0MTYsNDE3LDQxOCw0MTksNDIwLDQyMSw0MjIsNDIzLDQyNCw0MjUsNDI2LDQyNyw0MjgsNDI5LDQzMCw0MzEsNDMyLDQzMyw0MzQsNDM1LDQzNiw0MzcsNDM4LDQzOSw0NDAsNDQxLDQ0Miw0NDMsNDQ0LDQ0NSw0NDYsNDQ3LDQ0OCw0NDksNDUwLDQ1MSw0NTIsNDUzLDQ1NCw0NTUsNDU2LDQ1Nyw0NTgsNDU5LDQ2MCw0NjEsNDYyLDQ2Myw0NjQsNDY1LDQ2Niw0NjcsNDY4LDQ2OSw0NzAsNDcxLDQ3Miw0NzMsNDc0LDQ3NSw0NzYsNDc3LDQ3OCw0NzksNDgwLDQ4MSw0ODIsNDgzLDQ4NCw0ODUsNDg2LDQ4Nyw0ODgsNDg5LDQ5MCw0OTEsNDkyLDQ5Myw0OTQsNDk1LDQ5Niw0OTcsNDk4LDQ5OSw1MDAsNTAxLDUwMiw1MDMsNTA0LDUwNSw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MTIsNTEzLDUxNCw1MTUsNTE2LDUxNyw1MTgsNTE5LDUyMCw1MjEsNTIyLDUyMyw1MjQsNTI1LDUyNiw1MjcsNTI4LDUyOSw1MzAsNTMxLDUzMiw1MzMsNTM0LDUzNSw1MzYsNTM3LDUzOCw1MzksNTQwLDU0MSw1NDIsNTQzLDU0NCw1NDUsNTQ2LDU0Nyw1NDgsNTQ5LDU1MCw1NTEsNTUyLDU1Myw1NTQsNTU1LDU1Niw1NTcsNTU4LDU1OSw1NjAsNTYxLDU2Miw1NjMsNTY0LDU2NSw1NjYsNTY3LDU2OCw1NjksNTcwLDU3MSw1NzIsNTczLDU3NCw1NzUsNTc2LDU3Nyw1NzgsNTc5LDU4MCw1ODEsNTgyLDU4Myw1ODQsNTg1LDU4Niw1ODcsNTg4LDU4OSw1OTAsNTkxLDU5Miw1OTMsNTk0LDU5NSw1OTYsNTk3LDU5OCw1OTksNjAwLDYwMSw2MDIsNjAzLDYwNCw2MDUsNjA2LDYwNyw2MDgsNjA5LDYxMCw2MTEsNjEyLDYxMyw2MTQsNjE1LDYxNiw2MTcsNjE4LDYxOSw2MjAsNjIxLDYyMiw2MjMsNjI0LDYyNSw2MjYsNjI3LDYyOCw2MjksNjMwLDYzMSw2MzIsNjMzLDYzNCw2MzUsNjM2LDYzNyw2MzgsNjM5LDY0MCw2NDEsNjQyLDY0Myw2NDQsNjQ1LDY0Niw2NDcsNjQ4LDY0OSw2NTAsNjUxLDY1Miw2NTMsNjU0LDY1NSw2NTYsNjU3LDY1OCw2NTksNjYwLDY2MSw2NjIsNjYzLDY2NCw2NjUsNjY2LDY2Nyw2NjgsNjY5LDY3MCw2NzEsNjcyLDY3Myw2NzQsNjc1LDY3Niw2NzcsNjc4LDY3OSw2ODAsNjgxLDY4Miw2ODMsNjg0LDY4NSw2ODYsNjg3LDY4OCw2ODksNjkwLDY5MSw2OTIsNjkzLDY5NCw2OTUsNjk2LDY5Nyw2OTgsNjk5LDcwMCw3MDEsNzAyLDcwMyw3MDQsNzA1LDcwNiw3MDcsNzA4LDcwOSw3MTAsNzExLDcxMiw3MTMsNzE0LDcxNSw3MTYsNzE3LDcxOCw3MTksNzIwLDcyMSw3MjIsNzIzLDcyNCw3MjUsNzI2LDcyNyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw3MzQsNzM1LDczNiw3MzcsNzM4LDczOSw3NDAsNzQxLDc0Miw3NDMsNzQ0LDc0NSw3NDYsNzQ3LDc0OCw3NDksNzUwLDc1MSw3NTIsNzUzLDc1NCw3NTUsNzU2LDc1Nyw3NTgsNzU5LDc2MCw3NjEsNzYyLDc2Myw3NjQsNzY1LDc2Niw3NjcsNzY4LDc2OSw3NzAsNzcxLDc3Miw3NzMsNzc0LDc3NSw3NzYsNzc3LDc3OCw3NzksNzgwLDc4MSw3ODIsNzgzLDc4NCw3ODUsNzg2LDc4Nyw3ODgsNzg5LDc5MCw3OTYsNzk3LDc5OCw3OTksODAwLDgwMSw4MDIsODAzLDgwNCw4MDUsODA2LDgwNyw4MDgsODA5LDgxMCw4MTEsODEyLDgxMyw4MTQsODE1LDgxNiw4MTcsODE4LDgxOSw4MjAsODIxLDgyMiw4MjMsODI0LDgyNSw4MjYsODI3LDgyOCw4MjksODMwLDgzMSw4MzIsODMzLDgzNCw4MzUsODM2LDgzNyw4MzgsODM5LDg0MCw4NjAsODYxLDg2Miw4NjMsODY2LDg3OSw4ODBdfQ== diff --git a/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/index.html b/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/index.html index 77bb1cd34..7bd095083 100644 --- a/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/index.html +++ b/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/index.html @@ -6,6 +6,7 @@ Vite + React + TS +
diff --git a/src/new/var/plugins/System/PSC/Invoice/Resources/views/backend/index/index.html.twig b/src/new/var/plugins/System/PSC/Invoice/Resources/views/backend/index/index.html.twig index 0e6a93134..55d88a1e6 100755 --- a/src/new/var/plugins/System/PSC/Invoice/Resources/views/backend/index/index.html.twig +++ b/src/new/var/plugins/System/PSC/Invoice/Resources/views/backend/index/index.html.twig @@ -7,7 +7,7 @@ - + {% block stylesheets %} {% endblock %}